[
  {
    "path": ".defconfig",
    "content": "#\n# Automatically generated make config: don't edit\n# Mon Feb 18 09:11:56 2008\n#\nBR2_HAVE_DOT_CONFIG=y\n# BR2_alpha is not set\n# BR2_arm is not set\n# BR2_armeb is not set\n# BR2_cris is not set\n# BR2_ia64 is not set\nBR2_i386=y\n# BR2_m68k is not set\n# BR2_mips is not set\n# BR2_mipsel is not set\n# BR2_nios2 is not set\n# BR2_powerpc is not set\n# BR2_sh is not set\n# BR2_sparc is not set\n# BR2_sparc64 is not set\n# BR2_x86_64 is not set\n# BR2_x86_i486 is not set\n# BR2_x86_i586 is not set\nBR2_x86_i686=y\n# BR2_x86_pentiumpro is not set\n# BR2_x86_pentium_mmx is not set\n# BR2_x86_pentium_m is not set\n# BR2_x86_pentium2 is not set\n# BR2_x86_pentium3 is not set\n# BR2_x86_pentium4 is not set\n# BR2_x86_prescott is not set\n# BR2_x86_nocona is not set\n# BR2_x86_core2 is not set\n# BR2_x86_k6 is not set\n# BR2_x86_k6_2 is not set\n# BR2_x86_athlon is not set\n# BR2_x86_athlon_4 is not set\n# BR2_x86_opteron is not set\n# BR2_x86_opteron_sse3 is not set\n# BR2_x86_barcelona is not set\n# BR2_x86_geode is not set\n# BR2_x86_c3 is not set\n# BR2_x86_winchip_c6 is not set\n# BR2_x86_winchip2 is not set\nBR2_ARCH=\"i686\"\nBR2_ENDIAN=\"LITTLE\"\nBR2_GCC_TARGET_TUNE=\"i686\"\nBR2_GCC_TARGET_ARCH=\"i686\"\n\n#\n# Target options\n#\n"
  },
  {
    "path": ".flake8",
    "content": "[flake8]\nexclude=\n    # copied from the kernel sources\n    utils/diffconfig\nmax-line-length=132\n"
  },
  {
    "path": ".gitignore",
    "content": "/output\n/dl\n/.auto.deps\n/.config.cmd\n/.config.old\n/..config.tmp\n/.config\n*.depend\n*.o\n/*.patch\n/*.diff\n*.orig\n*.rej\n*~\n*.pyc\n/.buildroot-ccache-*\n*.img.gz\n*.img.xz\n*.img.zip\n"
  },
  {
    "path": "CHANGES",
    "content": "2021.11, released December 5th, 2021\n\n\tVarious fixes.\n\n\tDefconfigs: Grinn chiliboard/liteboard, PC x86-64 bios: Fix\n\tbuild\n\n\tUpdated/fixed packages: apr, coreutils, diffutils, e2fsprogs,\n\texfat, freeswitch, gnupg, grub2, gstreamer1, guile, heimdal,\n\thiawatha, hplip, icu, janus-gateway,\n\tkodi-screensaver-asterwave, kodi-screensaver-cpblobs,\n\tkodi-screensaver-matrixtrails, libatomic_ops, libbson, libffi,\n\tlibgdiplus, libgee, libhtp, libite, libnspr, libnss,\n\tlibunwind, lynx, mender-grubenv, mkpasswd, motion, mxml,\n\tnetdata, qemu, samba4, speex, stress-ng, tinydtls, unixodbc,\n\tunrar, util-linux, util-linux-libs, watchdogd, wireshark\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#14351: needs to mount sysfs before mount -a\n\t#14411: 2021.11-rc2: Samba doesn't compile\n\n2021.11-rc3, released November 30th, 2021\n\n\tFixes all over the tree.\n\n\tDefconfigs: Nitrogen8mp: Fix Linux build, Zynqmp-zxu106: Fix\n\tATF build\n\n\tUpdated/fixed packages: asterisk, automake, gdb, glorytun,\n\tgmp, hackrf, libgee, libglib2, libmodsecurity, libosmium,\n\tlibressl, lighttpd, linux, micropython, mosquitto, mtd,\n\tnfs-utils, nss-myhostname, pcre, php, poco, pure-ftpd,\n\tpython-cycler, qemu, qdecoder, smack, smcroute, spidev_test,\n\tstrace, syslinux, toolchain, uboot, uhd, vim, websocketpp,\n\twireshark, xcursor-transparent-theme, xscreensaver,\n\txtables-addons\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#14346: BR2_PACKAGE_NFS_UTILS_RPC_NFSD does not patch CONFIG_NFSD..\n\n2021.11-rc2, released November 19th, 2021\n\n\tFixes all over the tree.\n\n\tCoding style fixes for a large number of board genimage\n\tconfiguration files for clarity and consistency.\n\n\tDefconfigs: Acmesystems Aria/Arietta g25, Armadeus\n\tapf28/apf51, beagleboneai, Olimx a64, rock64, sheevaplug: Fix\n\tbuild with hostcc >= 10, Nezha: Correct U-Boot dependencies\n\n\tUpdated/fixed packages: alsa-lib, apparmor, binutils,\n\tbluez5_utils, botan, diffutils, firmware-utils, gdb, glmark2,\n\tglog, gpu-amd-bin-mx51, gst1-interpipe, imx-vpuwrap, iperf,\n\tisl, janet, libdnet, libglib2, libhtp, liburcu, log4cxx,\n\tluajit, luvi, meson, mksh, mongodb, mosquitto, mpd, mupdf,\n\topencv4, oracle-mysql, pipewire, postgresql, python-aiohttp,\n\tpython-pudb, python-ujson, qhull, samba4, seatd, sg3_utils,\n\tsuricata, tpm2-tss, uboot, vim, xserver_xorg-server\n\n\tNew packages: pipewire-media-session\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t14311: Cannot compile dahdi (part of Asterisk) for x86 (P1mmx)\n\n2021.11-rc1, released November 8th, 2021\n\n\tNumerous package updates. Notable updates including numerous\n\tPython modules, Kodi add-ons, nodejs, OpenJDK.\n\n\tToolchain:\n\t- glibc update to 2.34\n\t- support for gdb 11.x added, gdb 10.x now the default\n\t- external toolchains provided by ARM updated\n\t- remove support for internal toolchain on the CSKY\n          architecture, as it was broken and unmaintained\n\n\tMany packages updated to enable the appropriate SELinux\n\trefpolicy module when SELinux support is enabled.\n\n\tSupport was added in the test-pkg package testing utility for\n\tusing Gitlab CI to run the builds.\n\n\tNew libgbm virtual package to better support OpenGL\n\timplementations that provide a libgbm library.\n\n\tBootloaders/firmware: grub2 extended to be able to support\n\tmultiple platforms in the same build.\n\n\tFilesystems:\n\t- new OCI filesystem type, to build container images\n\t  compatible with the Open Container Initiative standard\n\t- support for hybrid ISO9660 images added, which work on\n          legacy and EFI BIOS machines\n\n\tNew defconfigs: Allwinner nezha, stm32mp157c_odyssey\n\n\tRemoved defconfigs: qemu_csky\n\n\tNew packages: dtbocfg, firmware-utils, gstd, libdbi,\n\tlibdbi-drivers, libteam, lua-augeas, mstpd, php-pecl-dbus,\n\tpython-aioprocessing, python-bidict,\n\tpython-charset-normalizer, python-flask-expects-json,\n\tpython-git, python-pyndiff, python-rsa,\n\tpython-unitest-xml-reporting, python-xmljson,\n\tpython3-cryptography, python3-pip, qt5opcua, rwmem,\n\tsloci-image, softhsm2, sun20i-d1-spl, uqmi, vuejs-router,\n\twatchdogd, wireplumber\n\n\tRemoved packages: canfestival, python-meld3\n\n\tWork toward the removal of python 2 has progressed: many\n\tpython modules and packages have been updated to a version\n\tsupporting python 3.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#14271: compilation error with rsync command for  permission\n\t#14276: Unable to get login prompt\n\t#14196: when using raspberrypicm4io_64_defconfig, make fails\n\t        with mkfs.ext4: No such file or directory while trying\n\t        to determine filesystem size\n\n2021.08.2, released November 10th, 2021\n\n\tImportant / security related fixes.\n\n\tUpdated/fixed packages: asterisk, audit, bind, bitcoin,\n\tcontainerd, cryptsetup, dahdi-linux, dbus-python, dfu-util,\n\tdocker-cli, docker-engine, earlyoom, edk2-platforms, exiv2,\n\tffmpeg, freerdp, gdb, gensio, gnupg2, go, gpsd,\n\tgst1-plugins-bad, gst1-plugins-ugly, gst1-vaapi, gtest,\n\thiredis, lftp, libps1, libva, libva-utils, lightning,\n\tlog4cplus, lrzip, netdata, nodejs, olsr, openjdk, openjdk-bin,\n\tpango, php, python3-cffi, qemu, refpolicy, rng-tools, samba4,\n\tsnort, strongswan, sunxi-mali-mainline-driver, suricata,\n\tsystemd, tor, vim, weston, wf111, wireguard-linux-compat,\n\txerces\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#14311: Cannot compile dahdi (part of Asterisk) for x86 (P1mmx)\n\n2021.08.1, released October 11, 2021\n\n\tImportant / security related fixes.\n\n\tgdbinit: Mark the sysroot as a \"safe path\" before configuring\n\tit, so pretty printers work correctly without having to pass\n\t-ix to gdb\n\n\tUpdated/fixed packages: alsa-lib, apache,\n\tarm-trusted-firmware, atftp, bind, botan, cog, containerd,\n\tcryptopp, docker-cli, dash, dc3dd, docker-engine, dovecot,\n\tenvironment-setup, erlang, fetchmail, ffmpeg, fio, gcc, gd,\n\tgdb, ghostscript, gnuradio, gnutils, go,\n\tgobject-introspection, google-breakpad, gst-omx,\n\tgst1-devtools, gst1-interpipe, gst1-libav, gst1-plugins-bad,\n\tgst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly,\n\tgst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1,\n\tgstreamer1-editing-services, gupnp, haproxy, imlib2, kodi,\n\tkodi-pvr-octonet, kodi-visualisation-fishbmc, libcurl,\n\tlibexif, libgcrypt, libglib2, libkrb5, libressl, librsvg,\n\tlibsndfile, libssh, libvirt, libxcrypt, libyang, links, lvm2,\n\tlynx, lxc, mc, mesa3d, micropython, minicom, mono, mosquitto,\n\tmtr, mupdf, mv-ddr-marvell, net-tools, nginx-dav-ext, nmap,\n\tnodejs, ntfs-3g, openjdk, openjdk-bin, openldap, openssh,\n\tpcre2, php, php-gnupg, pipewire, postgis, python-aioconsole,\n\tpython-cbor2, python-cffi, python-cython, python-dateutil,\n\tpython-django, python-pillow, python-pip, python-texttable,\n\tpython-urllib3, python-webob, qemu, qt5location, redis,\n\trefpolicy, ripgrep, ruby, runc, sispmctl, sox, squid,\n\tstrongswan, supervisor, swupdate, syslinux, systemd, tinycbor,\n\ttrace-cmd, uboot-tools, uclibc, udisks, uhd, vim, vsftpd,\n\twavemon, webkitgtk, wget, wireless-regdb, wpewebkit,\n\txapp_xrdb, xapp_xwd, xen, xlib_libXfont2, xlib_libXft,\n\txserver_xorg-server, zip\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#14206: Kodi: even when not enabled, forcefully selects libevdev..\n\t#14211: libffi-3.3.tar.gz repacked\n\t#14221: mv-ddr-marvell fails license validation\n\n2021.08, released September 4th, 2021\n\n\tVarious fixes.\n\n\tUpdated/fixed packages: gstreamer1-mm, netsniff-ng, nginx,\n\topenmpi, python-pyudev, python3, qt5base, wlroots, xvisor\n\n2021.08-rc3, released August 31st, 2021\n\n\tFixes all over the tree.\n\n\tToolchain: Disable fortify support for Microblaze as it is not\n\tcurrently working.\n\n\tDefconfigs: Acmesystems aria/ariette g25: Fix build issue\n\tafter at91bootstrap bump, BeagleV: Correct kernel headers\n\tversion, PC x86-64: Bump kernel to 4.19.204 to fix build issue\n\twith GCC 10.x.\n\n\tUpdated/fixed packages: alsa-utils, at91bootstrap3, belle-sip,\n\tbullet, c-ares, cjson, coreutils, cpio, eigen, fetchmail, gdb,\n\thaproxy, heirloom-mailx, ipmiutil, kvm-unit-tests, libarchive,\n\tlibffi, libmodsecurity, libopenssl, libressl, libshout,\n\tlibvirt, linux-pam, lmbench, localedef, lua-lunix, mesa3d,\n\tmpv, mtd, nodejs, nvidia-driver, openvmtools, php, polkit,\n\tpython-requests, python3-requests, rust-bin, rustc, samba4,\n\tsdl2, snort3, ushare, xen\n\n\tRemoved packages: libmcrypt, mcrypt, sentry-cli\n\n2021.08-rc2, released August 18th, 2021\n\n\tFixes all over the tree.\n\n\tDefconfigs: Acmesystems acqua a5: Bump at91bootstrap version\n\tto fix build issue with binutils >= 2.35, Microchip sam9x60ek\n\tmmc_dev: Add missing toolchain/system options, sama5d2-icp\n\tmmc: Correct at91bootstrap options\n\n\tUpdated/fixed packages: arm-trusted-firmware, at91bootstrap3,\n\tazure-iot-sdk-c, bluez5_utils, bullet, busybox, cegui, efl,\n\terlang, ffmpeg, flatbuffers, fontconfig, gcc, gd, glibc, go,\n\tgobject-introspection, gpsd, guile, harfbuzz, iozone, iputils,\n\tjszip, libargtable2, libbpf, libebml, libepoxy, libesmtp,\n\tlibfuse3, libgeos, libnss, libodb-boost, libodb-mysql,\n\tlibodb-pgsql, libqmi, libqrtr-glib, libuhttpd, libuwsc,\n\tlibvirt, ltp-testsuite, luaossl, mongodb, mpd, mupdf, mutt,\n\tnetwork-manager, nginx-naxsi, nodejs, ogre, openzwave,\n\toptee-os, osm2pgsql, pdbg, perl-net-ssh2, php, pipewire,\n\tpistache, pixman, poke, polkit, poppler, postgresql, postkit,\n\tprelink-cross, prosody, protobuf, pulseview,\n\tpython-cryptography, python-keyring, python-matplotlib,\n\tpython-pymupdf, python-pyopenssl, python-secretstorage,\n\tpython-treq, python-txtorcon, python3, qemu, qpdf, qt5base,\n\trefpolicy, ruby, rust-bin, s390-tools, sconeserver, seatd,\n\tshairport-sync, sox, sqlite, sylpheed, sysdig, syslog-ng,\n\tsystem-config-printer, tar, terminology, tor, tpm2-tools, uhd,\n\tunbound, usbguard, wireshark, xen, xenomai, xlib_libxshmfence,\n\tzstd\n\n\tNew packages: desktop-file-utils\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13586: grub failure with BR2_OPTIMIZE_3\n\t#13671: openSSH server closes connection before authentication..\n\n2021.08-rc1, released August 3rd, 2021\n\n\tNumerous package updates.\n\n\tToolchain:\n\n        - add support for gcc 11.x, gcc 10.x is now the default, gcc\n\t  9.x updated to 9.4.0, removed gcc 8.x support except for\n\t  PowerPC SPE\n\n\t- add support for binutils 2.37, binutils 2.36.x is now the\n          default, binutils 2.34 removed.\n\n\t- glibc updated to 2.33\n\n        - gdb enabled on NIOS II, gdbserver enabled on RISC-V.\n\n\tBootloaders/firmware: support for building the EDK II UEFI\n\tfirmware, support for building AT91Bootstrap 4.x.\n\n\tNew BR2_ENABLE_RUNTIME_DEBUG option, that controls whether\n\tpackages should be compiled with runtime debugging\n\tinformation (which is different than debugging symbols).\n\n\tMany features of the bluez5_utils package have been made\n\toptional, and default to disabled. Users of bluez5_utils are\n\tencouraged to review their configuration.\n\n\tMany packages (over 70) updated to enable the appropriate\n\tSELinux refpolicy module when SELinux support is enabled.\n\n\tMany packages updated to select the appropriate OpenSSL\n\tfeatures after many OpenSSL ciphers/features have been made\n\toptional.\n\n\tNew defconfigs: kontron_pitx_imx8m, microchip_sama5d2_icp,\n\tqemu_aarch64_sbsa, raspberrypicm4io, raspberrypicm4io_64,\n\tterasic_de10nano_cyclone5, uevm5432.\n\n\tNew packages: alsa-plugins, apg, bmap-tools, daq3, edk2,\n\tedk2-platforms, gumbo-parser, libbpf, libosmium, libpsl,\n\tlibqb, libtalloc, libvirt, lua-linux, lua-zlib, mupdf,\n\topencv4, osm2pgsql, poke, python-augeas, python-dbus-next,\n\tpython-pymupdf, rtl_433, rtl8812au-aircrack-ng, seatd, snort3,\n\tsystem-config-printer, usbguard, xml-security-c, xmrig.\n\n\tRemoved packages: clapack, libsoil.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13326: regarding dtc error in buildroot source code\n\t#13661: host-python2 build fails on aarch64\n\t#13836: package build failure when target install set to no on\n\t        pkg-generic pkg types\n\t#13846: BR2_PACKAGE_LVM2_STANDARD_INSTALL should be default to\n\t        y as before\n\n2021.05.3, released October 11, 2021\n\n\tImportant / security related fixes.\n\n\tgdbinit: Mark the sysroot as a \"safe path\" before configuring\n\tit, so pretty printers work correctly without having to pass\n\t-ix to gdb\n\n\tUpdated/fixed packages: alsa-lib, apache,\n\tarm-trusted-firmware, atftp, bind, botan, containerd,\n\tcryptopp, dash, dc3dd, docker-cli, docker-engine, dovecot,\n\terlang, fetchmail, ffmpeg, gdb, ghostscript, go, gst-omx,\n\tgst1-devtools, gst1-interpipe, gst1-libav, gst1-plugins-bad,\n\tgst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly,\n\tgst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1,\n\tgstreamer1-editing-services, kodi, kodi-pvr-octonet,\n\tkodi-visualisation-fishbmc, libcurl, libkrb5, libressl,\n\tlibsndfile, libxcrypt, libyang, lxc, lynx, mesa3d,\n\tmicropython, minicom, mono, mtr, mv-ddr-marvell, net-tools,\n\tnmap, nodejs, ntfs-3g, openjdk, openjdk-bin, openldap,\n\topenssh, pcre2, php, python-aioconsole, python-cffi,\n\tpython-dateutil, python-django, python-pip, python-texttable,\n\tpython-urllib, python-webob, qt5location, redis, refpolicy,\n\tripgrep, runc, sispmctl, squid, strongswan, supervisor,\n\tsyslinux, tinycbor, trace-cmd, uboot-tools, uclibc, wavemon,\n\twget, wireless-regdb, xen, xserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#14206: Kodi: even when not enabled, forcefully selects libevdev..\n\t#14211: libffi-3.3.tar.gz repacked\n\t#14221: mv-ddr-marvell fails license validation\n\n2021.05.2, released September 15th, 2021\n\n\tImportant / security related fixes.\n\n\tToolchain: Disable fortify support for Microblaze as it is not\n\tcurrently working.\n\n\tUpdated/fixed packages: alsa-utils, arm-trusted-firmware,\n\tbayer2rgb-neon, belle-sip, bullet, busybox, c-ares, cjson,\n\tcoreutils, cpio, eigen, environment-setup, fetchmail, ffmpeg,\n\tfontconfig, gd, gdb, gnuradio, gnutls, go, haproxy, ipmiutil,\n\tiputils, jszip, kvm-unit-tests, libarchive, libargtable2,\n\tlibexif, libgcrypt, libmodsecurity, libopenssl, librsvg,\n\tlibshout, libssh, libxcrypt, linux, linux-pam, localedef, mc,\n\tmesa3d, mosquitto, netsniff-ng, nginx, nodejs, ogre, openjdk,\n\topenmpi, openvmtools, perl-net-ssh2, php, pipewire,\n\tpostgresql, prelink-cross, prosody, protobuf, python-keyring,\n\tpython-matplotlib, python-pillow, python-pyudev,\n\tpython-secretstorage, python3, qt5base, samba4, sdl2, sox,\n\tswupdate, sylpheed, tar, terminology, tor, uboot-tools, uhd,\n\tunbound, ushare, vim, wlroots, xapp_xrdb, xapp_xwd, xen,\n\txenomai, xlib_libXfont2, xlib_libXft, zip\n\n2021.05.1, released August 10, 2021\n\n\tImportant / security related fixes.\n\n\tToolchain: Disable PIC/PIE for Microblaze (like for NIOS II)\n\tas it is not currently working.\n\n\tbinutils: fix linker assert failure on OpenRisc, or1k build\n\tissue with gcc < 5\n\n\tgdb: Enable on NIOS II\n\n\tutils/scanpypi: Various improvements\n\n\tDefconfigs: stm32f469_disco: Fix kernel boot issue, Microchip\n\tsam9x60ek mmc_dev: Add missing toolchain/system options\n\n\tUpdated/fixed packages: arm-trusted-firmware, apache, audit,\n\tavahi, bind, binutils, bird, bluez5_utils, boinc, busybox,\n\tchrony, clamav, connman, cryptsetup, dnsmasq, docker-cli,\n\tdocker-engine, dovecot, dovecot-pigeonhole, e2fsprogs, exiv2,\n\tfail2ban, fb-test-app, feh, fetchmail, ffmpeg, flac, fluxbox,\n\tgawk, gcc, gcr, gdb, gdk-pixbuf, gesftpserver, glibc, go,\n\tgptfdisk, gqrx, granite, grub2, guile, hdparm, heirloom-mailx,\n\thtop, ibrcommon, ibrdtn, ibrdtn-tools, ibrdtnd,\n\tintel-microcode, iodine, irqbalance, keepalived, kexec-tools,\n\tlibass, libconfig, libcurl, libfreeimage, libfuse3, libgcrypt,\n\tlibgudev, libhtp, libinput, libjson, libgtk3, libkrb5,\n\tlibloki, libmodsecurity, libndp, libnetfilter-log,\n\tlibnfnetlink, libnice, libodb, libodb-boost, libodb-mysql,\n\tlibodb-pgsql, libpcap, libqmi, libqrtr-glib, libressl,\n\tlibrsvg, libtasn1, libtirpc, libuci, libxmlrpc,\n\tlinux-firmware, linuxptp, lrzsz, lvm2, mariadb, mesa3d,\n\tmbedtls, monit, mono, mosquitto, mpd, mpg123, mpv, nbd,\n\tnetsnmp, nettle, nmap, nodejs, ntp, openntpd, openpgm,\n\topenswan, pango, pcre2, perl-crypt-openssl-rsa, php, pixman,\n\tpostgresql, proxychains-ng, putty, python,\n\tpython-dataproperty, python-django, python-pysftp,\n\tpython-urllib3, python3, qpdf, redis, ripgrep, rsync, ruby,\n\tsamba4, sane-backends, slirp, spice, squid, suricata, tcpdump,\n\ttftpd, thrift, tor, tpm2-tools, trinity, uboot, uboot-tools,\n\tuclibc, vlc, wireless-regdb, wireshark, wolfssl,\n\txapp_fonttosfnt, xlib_libX11, xlib_libxshmfence,\n\txserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13586: grub failure with BR2_OPTIMIZE_3\n\t#13661: host-python2 build fails on aarch64\n\t#13836: package build failure when target install set to no..\n\t#13846: BR2_PACKAGE_LVM2_STANDARD_INSTALL should be default to..\n\n2021.05, released June 6th, 2021\n\n\tVarious fixes.\n\n\tDisable PIC/PIE support for Nios2 because of glibc issues\n\n\tDefconfigs: Minnowboard max: Fix X11 and mesa3d configuration\n\n\tUpdated/fixed packages: apache, beaglev-ddrinit,\n\tbeaglev-secondboot, capnproto, dc3dd, directfb, efibootmgr,\n\tffmpeg, gptfdisk, go, gupnp, hostapd, iftop,\n\tintel-mediadriver, libcamera, libcutl, libesmtp, libkcapi,\n\tlibraw, lttng-tools, lvm2, mimic, mono-gtksharp3, mpv,\n\tnetperf, odb, qt5base, uclibc, uftrace, unscd, vlc,\n\txdriver_xf86-video-fbturbo\n\n\tNew packages: python3-cffi, python3-cryptography, python3-pip,\n\tpython3-pycparser, python3-six\n\n2021.05-rc3, released May 31th, 2021\n\n\tFixes all over the tree.\n\n\tmeson: Explicitly disable PIE support (b_pie) as it is handled\n\tby the toolchain wrapper.\n\n\tUpdated/fixed packages: boost, dhcp, expat, gdb, hwloc, imagemagick,\n\tlibcurl, libopenh264, llvm, lz4, mpv, nginx, paho-mqtt-c, pifmrds,\n\tpipewire, python-bluezero, python-pillow, qemu, strace, uhd, vlc,\n\twebkitgtk\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13821: Wrong url for libnfsidmap package\n\n2021.05-rc2, released May 22th, 2021\n\n\tFixes all over the tree.\n\n\tsupport/scripts/gen-missing-cpe: A script to query the list of\n\tCPE IDs for the packages enabled in the current configuration and:\n\n\t- for CPE IDs that do not have any matching entry in the CPE\n\t  database, it emits a warning\n\n\t- for CPE IDs that do have a matching entry, but not with the same\n\t  version, it generates a snippet of XML that can be used to propose\n\t  an updated version to NIST.\n\n\tCPE meta data has been added for a large number of packages\n\n\tUpdated/fixed packages: assimp, binutils, bitcoin, bullet,\n\tcutelyst, dhcp, dmalloc, docker-engine, ebtables,\n\tenvironment-setup, flatcc, gcc, gd, gerbera, hostapd,\n\timx-gpu-viv, intel-microcode, jquery-validation, libdrm,\n\tlibgeos, libraw, libtirpc, libxml2, libxslt, live555, lmbench,\n\tlocaledef, lvm2, mender, mender-grubenv, modem-manager, mutt,\n\topensbi, openssh, opentyrian, pipewire, postgis, postgresql,\n\tprosody, python-bluezero, python-falcon, redis, rocksdb,\n\trt-tests, runc, vlc, waylandpp, webkitgtk, wireshark,\n\twpa_supplicant, wpewebkit, xlib_libX11, xterm\n\n\tNew packages: jh71xx-tools\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13781: isc dhcp-server package don't create file /usr/bin/dhcpd\n\t#13801: toolchainfile.cmake CMAKE_BUILD_TYPE\n\t#13806: Building host-localedef fails on fedora 34/gcc 11\n\n2021.05-rc1, released May 12th, 2021\n\n\tFixes all over the tree and new features.\n\n\tFORTIFY_SOURCE, PIC/PIE, RELRO and SSP security hardening\n\toptions are now enabled by default.\n\n\tDependencies: Explicitly detect and bail out if PATH contains\n\tspaces or tabs. A number of packages fail to build in such\n\tsetups, so explicitly inform about this.\n\n\tInfrastructure: Expose CONFIG_DIR to post-build/post-image\n\tscripts, so they can call the Buildroot Makefile in the\n\tcorrect directory for both in-tree / out-of-tree builds.\n\n\tCMake infrastructure: Use CMAKE_EXE_LINKER_FLAGS rather than\n\tCMAKE_CXX_FLAGS to link with libatomic to fix an compatibility\n\tissue with poppler. Bump minimal host cmake version to 3.16\n\t(from 3.15) to fix a compatibility issue with domoticz.\n\n\tMeson: Use correct C++ host compiler (rather than C compiler)\n\n\tutils/scanpypi: Explicitly use python3 for compatibility with\n\tpackages using python3 syntax in setup.py\n\n\tsupport/download: Fix tarball generation (from git/svn repos)\n\tincluding symlinks pointing to ./<something>. Fix svn download\n\tfor <1.9 clients or repos using CVS-style keywords.\n\n\tsupport/scripts/cve.py: Use the (significantly) faster yajl2\n\tijson backend for older (< 2.5) ijson versions rather than the\n\tslow python default, speeding up pkg-stats by ~2x.\n\n\tToolchain: Add logic to work around binutils bug 21464\n\t(affecting OpenRISC), bug 27597 (affecting Nios II) and drop\n\tthe now longer applicable bug 19615 / 20006 handling.\n\n\tPython{,3}: Fix byte compiling python files with short (single\n\tcharacter before .py) file names.\n\n\tCPE meta data has been added for a large number of packages\n\n\tNew defconfigs: Acme Systems Acqua A5 (256/512MB), Beagleboard\n\tBeagleV, Boundary devices Nitrogen8M Plus SOM, NXP i.MX 8M\n\tPlus EVK, QEMU PPC e500mc\n\n\tNew packages: beaglev-ddrinit, beaglev-secondboot, janet,\n\tkodi-inputstream-ffmpegdirect, kodi-vfs-libarchive,\n\tkodi-visualisation-matrix, libxcrypt, libqrtr-glib, log4qt,\n\tmawk, perl-parse-yapp, postgis, protozero, python-flask-wtf,\n\tpython-iwlib, python-semantic-version, python-setuptools-rust,\n\tpython-toml, riscv64-elf-toolchain, siproxyd, uftrace, zfs\n\n\tRemoved packages: iostat, kodi-platform,\n\tkodi-screensaver-crystalmorph, monkey\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13271: systemd-resolved: /etc/resolv.conf link broken on per-pa..\n\t#13516: utils/scanpypi: Failure when parsing diffoscope\n\t#13551: 2021.02.rc2: Unicode not work on qt 5.15.2\n\t#13576: Issues compiling buildroot for 5x86\n\t#13601: Gen image :Iappropriate ioctl error\n\t#13616: tar file from git repository generation issue\n\t#13631: Commit 54d3d94b6e breaks packages with git download method\n\t#13641: glibc on raspberrypi\n\t#13646: Gen image version 14 error : no sub -section title/..\n\t#13651: pkg-golang cannot build when main.go is in the root\n\t#13661: host-python2 build fails on aarch64\n\t#13671: openSSH server closes connection before authentication..\n\t#13721: c-stack.c:55:26: error: missing binary operator before ..\n\t#13731: Readline Patch is missing Author Information\n\t#13741: genext2fs does not allow to set perms of root node\n\t#13751: libopenssl (static): huge drop in performance in newer ..\n\t#13771: package htop has undeclared dependency on host python\n\n2021.02.7, released November 10th, 2021\n\n\tImportant / security related fixes.\n\n\tOpenJDK 16.x moved to 17.x as 16.x is EOL.\n\n\tUpdated/fixed packages: asterisk, audit, bind, bitcoin,\n\tcryptsetup, dahdi-linux, dbus-python, dfu-util, docker-cli,\n\tdocker-containerd, docker-engine, earlyoom, exiv2, ffmpeg,\n\tfreerdp, gdb, gensio, gnupg2, go, gpsd, gst1-plugins-bad,\n\tgst1-plugins-ugly, gst1-vaapi, hiredis, lftp, lightning,\n\tlrzip, netdata, nodejs, olsr, openjdk, openjdk-bin, pango,\n\tqemu, samba4, snort, strongswan, suricata, systemd, vim,\n\twf111, wireguard-linux-compat, xerces\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#14311: Cannot compile dahdi (part of Asterisk) for x86 (P1mmx)\n\n2021.02.6, released October 11, 2021\n\n\tImportant / security related fixes.\n\n\tgdbinit: Mark the sysroot as a \"safe path\" before configuring\n\tit, so pretty printers work correctly without having to pass\n\t-ix to gdb\n\n\tUpdated/fixed packages: alsa-lib, apache,\n\tarm-trusted-firmware, atftp, bind, botan, cryptopp, dash,\n\tdc3dd, docker-cli, docker-containerd, docker-engine, dovecot,\n\terlang, fetchmail, gdb, ghostscript, go, gst-omx,\n\tgst1-devtools, gst1-interpipe, gst1-libav, gst1-plugins-bad,\n\tgst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly,\n\tgst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1,\n\tgstreamer1-editing-services, kodi-pvr-octonet, libcurl,\n\tlibkrb5, libressl, libsndfile, libyang, lxc, lynx, mesa3d,\n\tmicropython, minicom, mono, mtr, mv-ddr-marvell, net-tools,\n\tnmap, nodejs, ntfs-3g, openjdk, openjdk-bin, openldap,\n\topenssh, php, python-aioconsole, python-cffi, python-dateutil,\n\tpython-django, python-pip, python-texttable, python-urllib3,\n\tpython-webob, qt5location, redis, refpolicy, ripgrep, runc,\n\tsispmctl, squid, strongswan, supervisor, syslinux, tinycbor,\n\ttrace-cmd, uboot-tools, uclibc, wavemon, wireless-regdb, xen,\n\txserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#14206: Kodi: even when not enabled, forcefully selects libevdev..\n\t#14211: libffi-3.3.tar.gz repacked\n\t#14221: mv-ddr-marvell fails license validation\n\n2021.02.5, released September 15th, 2021\n\n\tImportant / security related fixes.\n\n\tToolchain: Disable fortify support for Microblaze as it is not\n\tcurrently working.\n\n\tUpdated/fixed packages: alsa-utils, arm-trusted-firmware,\n\tbayer2rgb-neon, belle-sip, busybox, c-ares, cjson, coreutils,\n\tcpio, eigen, environt-setup, fetchmail, fluidsynth,\n\tfontconfig, gd, gdb, gnuradio, gnutls, go, haproxy, ipmiutil,\n\tiputils, jszip, kvm-unit-tests, libarchive, libexif,\n\tlibgcrypt, libmodsecurity, libopenssl, librsvg, libshout,\n\tlibssh, linux, localedef, mc, mesa3d, mosquitto, netsniff-ng,\n\tnginx, nodejs, ogre, openmpi, openvmtools, php, postgresql,\n\tprelink-cross, prosody, protobuf, python-keyring,\n\tpython-matplotlib, python-pillow, python-pyudev,\n\tpython-secretstorage, python3, qt5base, samba4, sdl2, sox,\n\tswupdate, sylpheed, tor, uboot-tools, uhd, unbound, vim,\n\twlroots, xapp_xrdb, xapp_xwd, xen, xenomai, xlib_libXfont2,\n\txlib_libXft, zip\n\n2021.02.4, released August 10th, 2021\n\n\tImportant / security related fixes.\n\n\tToolchain: Disable PIC/PIE for Microblaze (like for NIOS II)\n\tas it is not currently working.\n\n\tbinutils: fix linker assert failure on OpenRisc, or1k build\n\tissue with gcc < 5\n\n\tgdb: Enable on NIOS II\n\n\tutils/scanpypi: Various improvements\n\n\tDefconfigs: stm32f469_disco: Fix kernel boot issue, Microchip\n\tsam9x60ek mmc_dev: Add missing toolchain/system options\n\n\tUpdated/fixed packages: apache, arm-trusted-firmware, audit,\n\tavahi, bind, binutils, bird, bluez5_utils, boinc, busybox,\n\tchrony, clamav, cryptsetup, cwiid, dnsmasq, docker-cli,\n\tdocker-engine, dovecot, dovecot-pigeonhole, e2fsprogs, exiv2,\n\tfail2ban, fb-test-app, feh, fetchmail, flac, fluxbox, gawk,\n\tgcc, gcr, gdb, gdk-pixbuf, gesftpserver, glibc, go, gptfdisk,\n\tgranite, grub2, gqrx, guile, hdparm, heirloom-mailx,\n\tibrcommon, ibrdtn, ibrdtn-tools, ibrdtnd, intel-microcode,\n\tiodine, irqbalance, keepalived, libass, libconfig, libcurl,\n\tlibfreeimage, libfuse3, libgcrypt, libgtk3, libgudev, libhtp,\n\tlibjson, libkrb5, libloki, libmodsecurity, libndp,\n\tlibnetfilter-log, libnfnetlink, libnice, libodb, libodb-boost,\n\tlibodb-mysql, libodb-pgsql, libpcap, libqmi, libressl,\n\tlibrsvg, libtasn1, libtirpc, libuci, libxmlrpc,\n\tlinux-firmware, linuxptp, lrzsz, ltp-testsuite, lvm2, mariadb,\n\tmbedtls, monit, mono, mosquitto, mpd, mpg123, mpv, nbd, neard,\n\tnetsnmp, nettle, nginx-modsecurity, nmap, nodejs, ntp,\n\topenntpd, openpgm, openswan, pango, pcre2,\n\tperl-crypt-openssl-rsa, php, pixman, polkit, postgresql,\n\tproxychains-ng, putty, python, python-django,\n\tpython-dataproperty, python-pysftp, python-urllib3, python3,\n\tqpdf, redis, ripgrep, ruby, samba4, spice, slirp, suricata,\n\tsysdig, tcpdump, tftpd, thrift, tor, tpm2-tools, trinity,\n\tuboot, uboot-tools, uclibc, util-linux, vlc, wireless-regdb,\n\twireshark, wolfssl, xapp_fonttosfnt, xlib_libX11,\n\txlib_libxshmfence, xserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13586: grub failure with BR2_OPTIMIZE_3\n\t#13661: host-python2 build fails on aarch64\n\t#13836: package build failure when target install set to no..\n\t#13846: BR2_PACKAGE_LVM2_STANDARD_INSTALL should be default to..\n\n2021.02.3, released June 12th, 2021\n\n\tImportant / security related fixes.\n\n\tCPE meta data has been added for a large number of packages\n\n\tUpdated/fixed packages: acpid, apache, apcupsd, assimp, bird,\n\tbitcoin, blktrace, boost, capnproto, chrony, dc3dd, dhcp,\n\tdirectfb, dmalloc, docker-engine, ebtables, efibootmgr,\n\tenlightenment, enscript, environment-setup, exempi, expat,\n\tfindutils, flatcc, fluidsynth, frr, gdb, go, gptfdisk, grpc,\n\tgst1-plugins-bad, gst1-rtsp-server, gstreamer1, gupnp,\n\thostapd, hwloc, i2c-tools, iftop, imagemagick, imx-gpu-viv,\n\tintel-mediadriver, intel-microcode, jquery-validation,\n\tkeepalived, kodi, less, libcamera, libcurl, libcutl, libesmtp,\n\tlibeXosip2, libffi, libfuse, libfuse3, libgeos, libgtk2,\n\tlibgtk3, libical, libidn, libidn2, libkcapi, libldns, libmms,\n\tlibmodbus, libmspack, libnids, libopenh264, liboping, libraw,\n\tlibrelp, libsamplerate, libtirpc, libusb, libuv, libxcb,\n\tlibxml2, libxslt, live555, llvm, lmbench, localedef,\n\tlttng-tools, lvm2, lz4, mesa3d, mimic, mini-snmpd, minidlna,\n\tminissdpd, minizip, mono-gtksharp3, mpg123, mpv, msmtp, musl,\n\tmutt, nasm, nbd, netperf, netsurf, nginx, odb, opencv3,\n\topenssh, opentyrian, oprofile, p7zip, paho-mqtt-c, perl,\n\tphp-imagick, pifmrds, picocom, pigz, pngquant, poco,\n\tpostgresql, prosody, proxychains-ng, pulseaudio, putty, pwgen,\n\tpython-autobahn, python-bluezero, python-engineio,\n\tpython-keyring, python-pillow, python-requests, python-tqdm,\n\tqemu, qpdf, qt5base, redis, refpolicy, rt-tests, runc,\n\tshellinabox, squid, strace, supervisor, synergy, taglib,\n\ttclap, terminology, thermald, tini, tinyproxy, tinyxml2,\n\ttpm2-tss, uclibc, udisks, uhd, unscd, vlc, waylandpp,\n\twebkitgtk, weston, wireshark, wpa_supplicant, wpewebkit,\n\txlib_libdmx, xlib_libFS, xlib_libICE, xlib_libX11,\n\txlib_libXcursor, xlib_libXdmcp, xlib_libXext, xlib_libXfixes,\n\txlib_libXfont2, xlib_libXinerama, xlib_libXpm, xlib_libXres,\n\txlib_libXt, xlib_libXtst, xlib_libXxf86dga, xlib_libXxf86vm,\n\txterm\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13781: isc dhcp-server package don't create file /usr/bin/dhcpd\n\t#13801: toolchainfile.cmake CMAKE_BUILD_TYPE\n\t#13806: Building host-localedef fails on fedora 34/gcc 11\n\n2021.02.2, released May 12th, 2021\n\n\tImportant / security related fixes.\n\n\tToolchain: Add logic to mark toolchains affected by binutils\n\tbug 27597 (Nios II).\n\n\tsupport/scripts/cve.py: Use the (significantly) faster yajl2\n\tijson backend for older (< 2.5) ijson versions rather than the\n\tslow python default, speeding up pkg-stats by ~2x.\n\n\tCMake infrastructure: Use CMAKE_EXE_LINKER_FLAGS rather than\n\tCMAKE_CXX_FLAGS to link with libatomic to fix an compatibility\n\tissue with poppler.\n\n\tInfrastructure: Expose CONFIG_DIR to post-build/post-image\n\tscripts, so they can call the Buildroot Makefile in the\n\tcorrect directory for both in-tree / out-of-tree builds.\n\n\tUpdated/fixed packages: at91bootstrap, avahi, bash, bind,\n\tbridge-utils, boost, cegui, cifs-utils, clamav, cmake,\n\tcoremark-pro, coreutils, cryptsetup, dmalloc, dnsmasq,\n\tdocker-cli, docker-engine, domoticz, efl, exim, ffmpeg, flex,\n\tgcc, genext2fs, go, gst1-interpipe, haproxy, hostapd,\n\ti2c-tools, imx-vpu, kexec, kf5-kcoreaddons, kismet, libcamera,\n\tlibcurl, libdrm, libfreefare, libfuse3, libgeos, libgpiod,\n\tlibnpupnp, libopenssl, libp11, librsync, libtomcrypt, libupnp,\n\tlocaledef, lvm2, lxc, m4, makedevs, mender, mesa3d,\n\tmesa3d-headers, mkpasswd, mkpimage, modem-manager, monkey,\n\tmpd, ncurses, nettle, network-manager, nginx, numactl,\n\topenjdk, openjdk-bin, openldap, openvpn, php, pipewire,\n\tpython-aioconsole, python-asgiref, python-botocore,\n\tpython-django, python-dnspython, python-flup, python-httplib2,\n\tpython-markdown2, python-mbrstrdecoder, python3, quickjs,\n\treadline, rsyslog, ruby, rust, samba4, sconeserver, snort,\n\tsox, systemd, tar, timescaledb, tio, tor, usb_modeswitch,\n\twpa_supplicant, xdriver_xf86-video-ati, xen, xlib_libXaw,\n\txserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13271: systemd-resolved: /etc/resolv.conf link broken on per-pa..\n\t#13551: 2021.02.rc2: Unicode not work on qt 5.15.2\n\t#13651: pkg-golang cannot build when main.go is in the root\n\t#13661: host-python2 build fails on aarch64\n\t#13721: c-stack.c:55:26: error: missing binary operator before ..\n\t#13731: Readline Patch is missing Author Information\n\t#13741: genext2fs does not allow to set perms of root node\n\t#13751: libopenssl (static): huge drop in performance in newer ..\n\t#13771: package htop has undeclared dependency on host python\n\n2021.02.1, released April 7, 2021\n\n\tImportant / security related fixes.\n\n\tDependencies: Explicitly detect and bail out if PATH contains\n\tspaces or tabs. A number of packages fail to build in such\n\tsetups, so explicitly inform about this.\n\n\tutils/scanpypi: Explicitly use python3 for compatibility with\n\tpackages using python3 syntax in setup.py\n\n\tsupport/download: Fix tarball generation (from git/svn repos)\n\tincluding symlinks pointing to ./<something>. Fix svn download\n\tfor <1.9 clients or repos using CVS-style keywords.\n\n\tMeson: Use correct C++ host compiler (rather than C compiler)\n\n\tToolchain: Add logic to work around binutils bug 21464,\n\taffecting OpenRISC, and drop the now longer applicable bug\n\t19615 / 20006 handling.\n\n\tPython{,3}: Fix byte compiling python files with short (single\n\tcharacter before .py) file names.\n\n\tCPE meta data has been added for a large number of packages\n\n\tDefconfigs: Correct Beaglebone QT file system overlay\n\n\tUpdated/fixed packages: alsa-utils, at91bootstrap3,\n\tbatman-adv, binutils, botan, bridge-utils, busybox,\n\tca-certificates, cog, coreutils, diffutils, dmidecode,\n\tdocker-cli, docker-containerd, docker-engine, efivar,\n\tfetchmail, frr, genimage, git, gnutls, go, grub2, gst-omx,\n\tgst1-devtools, gst1-libav, gst1-plugins-bad,\n\tgst1-plugins-base, gst1-plugins-good, gst1-plugins-ugly,\n\tgst1-python, gst1-rtsp-server, gst1-vaapi, gstreamer1,\n\tgstreamer1-editing-services, haproxy, haserl, hwloc,\n\tirqbalance, jasper, kexec, kexec-lite, kismet, kodi, libcurl,\n\tlibfreeglut, libgcrypt, libgeos, libglib2, libopenssl, libqmi,\n\tlibressl, libupnp, libvips, libvpx, libwebsockets, linux,\n\tlldpd, logrotate, lttng-libust, lttng-tools, mariadb, mbedtls,\n\tmcelog, mender, micropython, mongoose, mosquitto, mpd,\n\tnetsnmp, nodejs, openmpi, openssh, openvpn, opkg-utils,\n\toptee-client, optee-test, perl, php, proftpd, protobuf,\n\tpython-django, python-jinja2, python-lxml, python-paramiko,\n\tpython-py, python-pygments, python-rpi-ws281x, python-urllib3,\n\tpython3, qt5webkit, qwt, rpm, samba4, sconeserver, sdl2, shim,\n\tsqlcipher, squid, sysklogd, syslinux, sysvinit, tor,\n\ttransmission, tzdata, uboot, uclibc, upx, webkitgtk,\n\twireshark, wpebackend-fdo, wpewebkit, xen, zstd\n\n\tNew packages: perl-parse-yapp\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13516: utils/scanpypi: Failure when parsing diffoscope\n\t#13576: Issues compiling buildroot for 5x86\n\t#13601: Gen image :Iappropriate ioctl error\n\t#13616: tar file from git repository generation issue\n\t#13641: glibc on raspberrypi\n\t#13646: Gen image version 14 error : no sub -section title/..\n\t#13671: openSSH server closes connection before authentication..\n\n2021.02, released March 6th, 2021\n\n\tVarious fixes.\n\n\tToolchain: Correct Bootlin xtensa-lx60 dependencies\n\n\tUpdated/fixed packages: asterisk, belle-sip, bustle, dhcpcd,\n\tdovecot, dovecot-pigeonhole, gnuchess, gnuradio,\n\tgst1-plugins-bad, haproxy, jasper, kismet, libebml,\n\tlibeXosip2, libgeos, libhtp, libjpeg, libopenssl, libshout,\n\tlibstrophe, mosquitto, openblas, openssh, perl, privoxy,\n\tprosody, python-pyyaml, python3-pyyaml, quagga, redis,\n\trust-bin, sox, suricata, tpm2-pkcs11, uclibc-ng-test, ushare,\n\tutil-linux, wolfssl, wpa_supplicant\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13501: 2021.02.rc2: Unicode not work on qt 5.15.2\n\t#13581: jpegsrc.v9d.tar.gz has changed hash\n\n2021.02-rc3, released February 27th, 2021\n\n\tFixes all over the tree.\n\n\tutils/scanpypi: Explicitly use python3 to ensure compatiblity\n\twith packages having python3-only code in setup.py\n\n\tsupport/download: Ensure sub-second timestamp precision is\n\tdropped when creating a tarball from a (subversion) repo, as\n\tthat is not representable in the PAX tar format\n\n\tUpdated/fixed packages: babeltrace2, bind, botan, brltty,\n\tcegui, elfutils, fakeroot, imagemagick, intel-mediasdk,\n\tirqbalance, libglib2, libselinux, libusb, libuwsc, nodejs,\n\topen62541, openldap, ply, python-aiohttp, python-django,\n\tpython3, qemu, readline, rust, screen, taglib, unbound, xterm\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13516: utils/scanpypi: Failure when parsing diffoscope\n\t#13541: 2021.02.rc2: irqbalance: Daemon couldn't be bound to...\n\t#13561: Create a new user defining users-table.txt not working..\n\n2021.02-rc2, released February 16th, 2021\n\n\tFixes all over the tree.\n\n\tVulnerability scanning: cpedb.py: Drop CPE XML database\n\tcaching, as it did not speed up processing much and uses a lot\n\tof additional memory.\n\tpkg-stats: include information about ignored CVEs in JSON\n\toutput\n\n\tFakeroot: Fix compatibility issue with glibc 2.33\n\n\tUpdated/fixed packages: can-utils, collectd, dnsmaqs,\n\tdocker-cli, docker-engine, ebtables, fakeroot, flashrom,\n\tgdk-pixbuf, go, gst1-python, jasper, kodi,\n\tkodi-inputstream-adaptive, lcms2, libgeos, libgpg-error,\n\tlibopenssl, mongoose, mpd, ne10, netopeer2, openblas, orc,\n\tperl-gd, ply, postgresql, protobuf, subversion, tcpdump,\n\ttzdate, uboot-tools, wireshark, webkitgtk, wpewebkit, xterm\n\n\tNew packages: perl-extutils-pkgconfig\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11706: binman (U-boot tool) cannot find libfdt \"binman: No mod..\n\n2021.02-rc1, released February 9th, 2021\n\n\tFixes all over the tree and new features.\n\n\tToolchain: Default to binutils 2.35.2, add 2.36.1, drop\n\t2.33.x. Fix GCC 10.x ARC adc/sbc pattern handling, Update ARM\n\ttoolchains to 10.2-2020.11 release.\n\n\tArchitectures: ARC: add support for generic HS48 processor,\n\tPPC: drop PPC601 support, which was removed from Linux 5.10.\n\n\tVulnerability scanning: The CVE checking logic has been\n\textended to match packages based on CPE (Common Platform\n\tEnumeration) IDs for more accurate matching, and CPE\n\tidentifiers have been added for a large amount of packages.\n\n\tDownload: Rework the tarball creation logic (E.G. when a\n\tpackage is fetched from a git/svn repo) to no longer require a\n\thost-tar <= 1.29. To differ between the old and the new\n\tformat, the new tarballs have gained a -br1 suffix\n\t(<pkg>-<version>-br1.tar.gz).\n\n\tSELinux support: A significant number of packages now pull in\n\tthe relevant refpolicy modules when enabled.\n\n\tNew defconfigs: arrow avenger96, bananapi M1+, microchip\n\tsam9x60ek, pine64 rock64\n\n\tRemoved defconfigs: QEMU ppc virtex-ml507\n\n\tNew packages: balena-engine, casync, coremark, coremark-pro,\n\tdatatables, datatables-buttons, datatables-fixedcolumns,\n\tdatatables-responsive, delve, frotz, gkrellm, inih, jszip,\n\tlibgeos, libiec61850, libmdbx, lualdap, neofetch,\n\tnvidia-modprobe, open62541, perl-devel-cycle, perl-devel-size,\n\tperl-math-int64, ply, popperjs, python-bleak,\n\tpython-defusedxml, python-pycups, python-pytest-asyncio,\n\tpython-typing-extensions, qcom-db410c-firmware, qt5coap,\n\tqt5knx, qt5mqtt, quickjs, rcw-smarc-sal28, screenfetch,\n\tssdp-responder, tpm2-pkcs11, wqy-zenhei, xorcurses\n\n\tRemoved packages: audiofile, boa, ipsec-tools, libupnp18,\n\tti-sgx-libgdbm\n\n\tRenamed rcw package to qoriq-rcw\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13316: beaglebone_qt5_defconfig: PowerVR fails to start\n\t#13416: dhcpcd start warning message: no such user dhcpcd\n\t#13456: ccache prevents build\n\t#13471: package/mpd/mpd.conf make use of path not created\n\t#13506: BR2_PACKAGE_DHCPCD missing directory creation\n\n2020.11.4, released April 5th, 2021\n\n\tImportant / security related fixes.\n\n\tDependencies: Explicitly detect and bail out if PATH contains\n\tspaces or tabs. A number of packages fail to build in such\n\tsetups, so explicitly inform about this.\n\n\tutils/scanpypi: Explicitly use python3 for compatibility with\n\tpackages using python3 syntax in setup.py\n\n\tsupport/download: Fix tarball generation (from git/svn repos)\n\tincluding symlinks pointing to ./<something>\n\n\tMeson: Use correct C++ host compiler (rather than C compiler)\n\n\tUpdated/fixed packages: asterisk, at91bootstrap3, babeltrace2,\n\tbatman-adv, bind, ca-certificates, cegui, cog, diffutils,\n\tdocker-containerd, dovecot, dovecot-pigeonhole, efivar,\n\telfutils, fakeroot, git, gnuchess, gnuradio, gnutls, go,\n\tgrub2, haserl, i7z, imagemagick, intel-mediasdk, irqbalance,\n\tjasper, kodi, libcurl, libebml, libeXosip2, libglib2, libhtp,\n\tlibjpeg, libopenssl, libqmi, libressl, libupnp, libuwsc,\n\tlibvips, lldpd, mariadb, mbedtls, mender, micropython,\n\tmosquitto, netsnmp, nodejs, openblas, openldap, openmpi,\n\topenssh, opkg-utils, optee-client, optee-test, perl, php,\n\tprivoxy, proftpd, prosody, protobuf, python-aiohttp,\n\tpython-django, python-lxml, python-pyyaml, python-rpi-ws281x,\n\tpython-typing-extensions, python3, quagga, qwt, redis, rpm,\n\tsconeserver, screen, sox, sqlcipher, squid, suricata,\n\tsyslinux, sysvinit, tor, transmission, tzdata, uboot, unbound,\n\tupx, util-linux, webkitgtk, wireshark, wolfssl,\n\twpebackend-fdo, wpewebkit, wpa_supplicant, zstd\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13516: utils/scanpypi: Failure when parsing diffoscope\n\t#13541: 2021.02.rc2: irqbalance: Daemon couldn't be bound to..\n\t#13576: Issues compiling buildroot for 5x86\n\t#13581: jpegsrc.v9d.tar.gz has changed hash\n\t#13616: tar file from git repository generation issue\n\n2020.11.3, released February 17th, 2021\n\n\tmeson: Fix ccache detection handling when per-package builds\n\tare used.\n\n\tFakeroot: Fix compatibility issue with glibc 2.33\n\n\tUpdated/fixed packages: atftp, binutils, busybox, cereal,\n\tchartjs, connman, dhcpcd, dnsmasq, docker-cli, docker-engine,\n\tebtables, fakeroot, flashrom, go, gst1-python, guile,\n\tintel-mediadriver, intel-microcode, jasper,\n\tkodi-inputstream-adaptive, lcms2, libbsd, libopenssl,\n\tmakedumpfile, memtester, mosquitto, ne10, openblas, orc, php,\n\tpostgresql, privoxy, pugixml, python-bottle, python-django,\n\tpython3, rauc, sox, stress-ng, subversion, tzdata,\n\tuboot-tools, uclibc, webkitgtk, wireguard-linux-compat,\n\twireshark, wpa_supplicant, wpewebkit, xenomai,\n\txserver_xorg-server, xterm\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11706: binman (U-boot tool) cannot find libfdt \"binman: No mod..\n\t#13506: BR2_PACKAGE_DHCPCD missing directory creation\n\n2020.11.2, released January 31st, 2021\n\n\tImportant / security related fixes.\n\n\tDownload: Ensure git submodules are correctly fetched if\n\tenabled for a package with <pkg>_GIT_SUBMODULES = YES and the\n\thost variant is downloaded first.\n\n\tToolchain: Mark CodeSourcery Aarch64 2014.11 toolchain as not\n\thaving libatomic. Bootlin PowerPC-440 FP toolchain updated for\n\tSecurePLT fix.\n\n\tpkg-stats: Fix python 3.8+ deprecation warning.\n\n\tmeson: Ensure ccache is not detected and used, as it may\n\tconflict with the ccache handling in Buildroot.\n\n\tUpdated/fixed packages: barebox, boost, brltty, dbus,\n\tdocker-containerd, dovecot, dovecot-pigeonhole,\n\tenvironment-setup, firmware-imx, gcc, gerbera, glibc,\n\tgmrender-resurrect, igd2-for-linux, kodi-pvr-zattoo, libclc,\n\tlibfuse3, libllcp, libodb-mysql, libtorrent-rasterbar,\n\tlibupnp, lpc32xxcdl, luarocks, mpd, multipath-tools, mutt,\n\tnfs-utils, nodejs, openjpeg, openldap, opentracing-cpp,\n\topenvpn, p11-kit, paho-mqtt-c, php, poppler, postgresql,\n\tpython3, redis, resiprocate, rpm, runc, socat, sslh, sudo,\n\tsunxi-mali-mainline-driver, syslog-ng, systemd, tini,\n\ttpm2-tss, trace-cmd, tzdata, uboot-tools, uhd, ushare,\n\tutil-linux, vlc, wavpack, wireguard-linux-compat, wolfssl,\n\txapp_xload, xorriso, zic\n\n\tRemoved packages: libupnp18\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13471: package/mpd/mpd.conf make use of path not created\n\n2020.11.1, released December 27th, 2020\n\n\tImportant / security related fixes.\n\n\tInfrastructure:\n\t- cmake: fix host ccache handling for CMake 3.19\n\t- meson: Forcibly disable binary stripping for\n\t  target builds, enable for host builds\n\t- golang: Fix HOST / TARGET directories for per-package builds\n\n\tDefconfigs: Beaglebone Qt5: Fix ti-sgx related issues\n\n\tUpdated/fixed packages: apitrace, arm-trusted-firmware,\n\tca-certificates, cryptopp, dhcpcd, dtv-scan-tables,\n\tflare-engine, ghostscript, go, haproxy, imagemagick,\n\timx-gpu-viv, jasper, kismet, libcurl, libglib2, libhtp,\n\tlibopenssl, libressl, libuv, libuvw, lua, mbedtls, mongodb,\n\tmutt, ncurses, netsnmp, nodejs, opencv3, openldap, opkg-utils,\n\tpaho-mqtt-c, python-crc16, python-lxml, python-pyparsing,\n\tpython-pyqt5, qt5base, rauc, shadowsocks-libev, sqlcipher,\n\tsuricata, ti-sgx-demos, tinycbor, uclibc-ng-test, unbound,\n\twebkitgtk, wpewebkit, wireshark, x11vnc, xen,\n\txserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13316: beaglebone_qt5_defconfig: PowerVR fails to start\n\t#13416: dhcpcd start warning message: no such user dhcpcd\n\n2020.11, released December 2nd, 2020\n\n\tVarious fixes.\n\n\tUpdated/fixed packages: bustle, docker-containerd, gnuplot,\n\tgst1-plugins-good, jemalloc, kmsxx, libcap, libplist,\n\tlibuhttpd, libxkbcommon, lynx, mariadb, netsurf, privoxy,\n\ts390-tools, setserial, xserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13276: libcap builds libcap.pc incorrectly\n\n2020.11-rc3, released November 28th, 2020\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: c-ares, cage, cdrkit,\n\tdovecot-pigeonhole, efl, gvfs, harfbuzz, jpeg-turbo,\n\tlibcamera, libkrb5, libpam-tacplus, libxkbcommon, minidlna,\n\tmodem-manager, monkey, musl, ncurses, numactl, openntpd,\n\topenrc, postgresql, proftpd, python-flask-cors, python-pip,\n\tqemu, raptor, redis, slirp, spandsp, thermald, uhd, vsftpd,\n\twebkitgtk, wireless-regdb, wlroots, wpewebkit, xen, xinetd,\n\txorriso\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13296: host-libcap failed to build\n\t#13331: openrc-0.42.1 compilation failure on gcc-10\n\t#13336: thermald-1.9.1 compilation failure with musl 1.2.1\n\t#13341: Mistake in /etc/init.d/S70vsftpd\n\n2020.11-rc2, released November 14th, 2020\n\n\tFixes all over the tree.\n\n\tcve-checker script dropped. Instead the pkg-stats logic has\n\tbeen extended to be able to only generate stats for the\n\tconfigured packages using 'make pkg-stats'\n\n\tRemoved defconfigs: rock64\n\n\tUpdated/fixed packages: apparmor, asterisk, bitcoin, busybox,\n\tcups-filters, cryptsetup, davfs2, domoticz, elf2flt, freetype,\n\tghostscript, glmark2, go, gst1-plugins-bad, guile, jsoncpp,\n\tlibcap, libexif, libnetfilter_conntrack, libpam-tacplus,\n\tlibsigrokdecode, linux-backports, linux-firmware, mesa3d,\n\tmodem-manager, mp4v2, oniguruma, openntpd, python3,\n\tpython-lmdb, python-m2crypto, rauc, s390-tools, slirp,\n\tstress-ng, suricata, systemd, tcpdump, tmux, tor, webkitgtk,\n\twireguard-linux-compat, wpewebkit, xen\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13281: Raspberry Pi 2: overlays folder missing in genimage-ra..\n\t#13291: BR2_DL_DIR is ignored when creating defconfig\n\t#13306: wpewebkit build problem in 2020-11-rc1\n\n2020.11-rc1, released November 4th, 2020\n\n\tFixes all over the tree and new features.\n\n\tArchitectures: Support for IBM s390x\n\n\tToolchain: use Secure-PLT rather than BSS-PLT for PowerPC\n\t32. Binutils 2.35.1 added, now defaulting to 2.34. ARC\n\t2020.09-release toolchain. GCC 7.x dropped. RISC-V support for\n\tuclibc-ng. Support for Bootlin external toolchains.\n\n\tSELinux support improvements: File security contexts are now\n\tset when the file systems are created, so there is no need to\n\trun restorecon on first boot / read only rootfs is supported.\n\tAn optimized / stripped refpolicy SELinux policy is now\n\tused. Packages can enable additional refpolicy modules using\n\t<pkg>_SELINUX_MODULES.\n\n\tsupport/scripts/cve-checker: Utility script to check for known\n\tCVEs in just the packages enabled in a Buildroot configuration\n\trather than all packages, by passing the output of 'make\n\tshow-info' to it.\n\n\tGo: Modules handling. The module name must be specified using\n\t<pkg>_GOMOD.\n\n\tBR2_EXTERNAL: Support for defining skeleton and init system\n\tpackages in external trees.\n\n\tmeson: Correct SDK cross-compilation.conf file when\n\tper-package builds were used to build SDK.\n\n\tsystemd: Use /run rather than /var/run for PID files in units.\n\n\tFakeroot scripts (BR2_ROOTFS_POST_FAKEROOT_SCRIPT) are now run\n\tafter all finalization hooks (including pre-rootfs) to ensure\n\tthey can override any late configuration done by packages.\n\n\tsupport/script/pycompile: Rework logic to ensure .pyc files\n\tcontain absolute target paths, fixing code inspection at\n\truntime when executed with cwd != '/'.\n\n\tsupport/scripts/setlocalversion: Correct Mercurial output to\n\tmatch behaviour with Git.\n\n\tsupport/scripts/apply-patches.sh: Use patch\n\t--no-backup-if-mismatch, so we no longer blindly have to\n\tremove *.orig files after patching, fixing issues with\n\tpackages containing such files.\n\n\tNew defconfigs: Acer chromebook elm, Friendlyarm nanopc-t4 and\n\tnanopi-m4, Hardkernel odroid-c2, Kontron SMARC-sAL28, NXP\n\timx8mqevk, Orangepi RK3399 and zero+, PCengines APU2, Pine64\n\trockpro64, QEMU s390x, Raxda rockpi-n8,\n\n\tNew packages: altera-stapl, asn1c, babeltrace2, cukinia,\n\teasyframes, environment-setup, frr, graphicsmagick, htpdate,\n\tipcalc, libbacktrace, libblockdev, libbytesize, librelp,\n\tlibuev, makedumpfile, meson-tools, mg, mrp, multipath-tools,\n\tnetcalc, odroidc2-firmware, php-xdebug, python-aiofiles,\n\tpython-ansicolors, python-boto3, python-botocore,\n\tpython-bsdiff4, python-crayons, python-iniconfig,\n\tpython-intelhex, python-ipdb, python-jmespath,\n\tpython-m2crypto, python-opcua-asyncio, python-packaging,\n\tpython-piexif, python-pluggy, python-pytest,\n\tpython-s3transfer, python-xmodem, qprint, qt5lottie,\n\tqt5remoteobjects, re2, redir, s390-tools, sentry-cli,\n\tsentry-native, timescaledb, tinyhttpd, uhd, uredir, watchdog,\n\twayland-utils, weston-imx\n\n\tRemoved packages: amd-catalyst, bellagio, gqview, libcroco,\n\tnvidia-tegra23, opencv\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11811: lsblk (util-linux) should depend on libudev if available\n\t#11931: Bugs in support/scripts/apply-patches.sh\n\t#12301: systemd-journal-gatewayd: config options broken\n\t#12911: usb_modeswitch installation race condition\n\t#13236: Can't compile linux 5.4.8 (with gcc 10 on host)\n\t#13286: The system hangs in vmware workstation on the line..\n\n2020.08.3, released December 27th, 2020\n\n\tImportant / security related fixes.\n\n\tInfrastructure:\n\t- cmake: fix host ccache handling for CMake 3.19\n\t- meson: Forcibly disable binary stripping for\n\t  target builds, enable for host builds\n\t- golang: Fix HOST / TARGET directories for per-package builds\n\n\tDefconfigs: Beaglebone Qt5: Fix ti-sgx related issues\n\n\tUpdated/fixed packages: apitrace, arm-trusted-firmware,\n\tbustle, c-ares, ca-certificates, cage, cdrkit, cryptopp,\n\tdhcpcd, docker-containerd, dtv-scan-tables, flare-engine,\n\tghostscript, gvfs, haproxy, imagemagick, imx-gpu-viv, jasper,\n\tjemalloc, jpeg-turbo, libcamera, libcap, libcurl, libglib2,\n\tlibgpiod, libkrb5, libopenssl, libplist, libressl, libuv,\n\tlibuvw, lynx, mariadb, mbedtls, minidlna, mongodb, monkey,\n\tmusl, mutt, ncurses, netsnmp, netsurf, nodejs, opencv3,\n\topenldap, openrc, opkg-utils, paho-mqtt-c, php, privoxy,\n\tproftpd, python-crc16, python-flask-cors, python-lxml,\n\tpython-pip, python-pyparsing, python-pyqt5, qemu, qt5base,\n\traptor, rauc, ruby, setserial, shadowsocks-libev, slirp,\n\tsqlcipher, thermald, ti-sgx-demos, tinycbor, unbound, vsftpd,\n\twireless-regdb, wireshark, wlroots, x11vnc, xen, xinetd,\n\txserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13276: libcap builds libcap.pc incorrectly\n\t#13316: beaglebone_qt5_defconfig: PowerVR fails to start\n\t#13336: thermald-1.9.1 compilation failure with musl 1.2.1\n\t#13341: Mistake in /etc/init.d/S70vsftpd\n\t#13416: dhcpcd start warning message: no such user dhcpcd\n\n2020.08.2, released November 16th, 2020\n\n\tImportant / security related fixes.\n\n\tToolchain-wrapper: Pass -fno-tree-loop-distribute-patterns to\n\tfix kernel build on microblaze with gcc 10.x when\n\toptimizations are enabled.\n\n\tUpdated/fixed packages: apparmor, argp-standalone, asterisk,\n\tbandwidthd, binutils, bitcoin, busybox, collectd, cryptsetup,\n\tcups-filters, darkhttpd, davfs2, docker-cli,\n\tdocker-containerd, docker-engine, dovecot-pigeonhole,\n\tdvb-apps, elf2flt, fastd, fbset, fbtft, freetype, gcc,\n\tghostscript, grpc, gst1-plugins-bad, jsoncpp,\n\tkernel-module-imx-gpu-viv, keepalived, kmscube, libass,\n\tlibexif, libiqrf, libnetfilter_conntrack, libpam-tacplus,\n\tlibraw, linux-backports, linux-firmware, lzlib, mp4v2,\n\tnetsnmp, nginx, numactl, oniguruma, opencv3, openntpd,\n\tpatchelf, php, pistache, postgresql, python-pyqt5, qemu,\n\tqt5base, rauc, redis, samba4, slirp, systemd, tcpdump,\n\ttinyproxy, tmux, tor, waf, webkitgtk, wine,\n\twireguard-linux-compat, wireshark, wpewebkit, xen, xorriso,\n\txvisor, zeromq, zxing-cpp\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11931: Bugs in support/scripts/apply-patches.sh\n\n2020.08.1, released October 12th, 2020\n\n\tImportant / security related fixes.\n\n\tFixes for various compilation issues with GCC 10.x.\n\n\tmeson: Correct SDK cross-compilation.conf file when\n\tper-package builds were used to build SDK.\n\n\tsystemd: Use /run rather than /var/run for PID files in units.\n\n\tToolchain: use Secure-PLT rather than BSS-PLT for PowerPC 32.\n\n\tFakeroot scripts (BR2_ROOTFS_POST_FAKEROOT_SCRIPT) are now run\n\tafter all finalization hooks (including pre-rootfs) to ensure\n\tthey can override any late configuration done by packages.\n\n\tsupport/script/pycompile: Rework logic to ensure .pyc files\n\tcontain absolute target paths, fixing code inspection at\n\truntime when executed with cwd != '/'.\n\n\tsupport/scripts/setlocalversion: Correct Mercurial output to\n\tmatch behaviour with Git.\n\n\tsupport/scripts/apply-patches.sh: Use patch\n\t--no-backup-if-mismatch, so we no longer blindly have to\n\tremove *.orig files after patching, fixing issues with\n\tpackages containing such files.\n\n\tfs/jffs2: Now correctly handles xattrs\n\n\tUpdated/fixed packages: acpica, afboot-stm32, alsa-utils,\n\tapparmor, bandwidthd, barebox, bash, bison, brotli,\n\tcifs-utils, cups, dhcpcd, dhcpdump, docker-cli, docker-engine,\n\tecryptfs-utils, efl, fail2ban, fbterm, ffmpeg, fontconfig,\n\tfreetype, gcc, gdb, ghostscript, gnupg2, gnutls, go, gqview,\n\tgst1-plugins-base, gst1-plugins-ugly, ipmitool, jbig2dec,\n\tkexec, lcdproc, libcamera, libhtp, libnetconf2, libraw,\n\tlibssh, libxml2, libxml-parser-perl, libzip, linux-headers,\n\tlive555, localedef, ltp-testsuite, lua, matchbox, memcached,\n\tmemtester, mesa3d, meson, minidlna, mongodb, mongrel2, motion,\n\tmraa, mtd, musepack, neardal, netatalk, netperf, netsniff-ng,\n\tnginx, nodejs, nss-pam-ldapd, open-plc-utils, openswan,\n\topentyrian, openvmtools, php, postgresql, python,\n\tpython-aenum, python-cycler, python-engineio, python-fire,\n\tpython-pymodbus, python-scapy, python-semver,\n\tpython-sentry-sdk, python-socketio, python-texttable,\n\tpython-tinyrpc, python-txtorcon, python3, qt5base, quagga,\n\tread-edid, redis, rsh-redone, runc, samba4, socketcand,\n\tstrace, supertux, suricata, systemd, ti-utils, trinity,\n\tuclibc, usb_modeswitch, vlc, vsftpd, wampcc,\n\twayland-protocols, wireguard-linux-compat, wireshark, wlroots,\n\twolfssl, w_scan, xerces, xfsprogs, xdriver-xf86-video-ati,\n\txserver_xorg-server, ympd, zeromq, zlib-ng, zstd\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12911: usb_modeswitch installation race condition\n\t#13236: Can't compile linux 5.4.8 (with gcc 10 on host)\n\n2020.08, released September 1st, 2020\n\n\tVarious fixes.\n\n\tUpdated/fixed packages: am33x-cm3, avahi, bluez-tools,\n\tbusybox, chocolate-doom, collectd, dhcp, docker-cli, domoticz,\n\tgobject-introspection, graphite2, haproxy, ibm-sw-tpm2,\n\timagemagick, libeXosip2, libressl, lxc, mbedtls, menu-cache,\n\tmongodb, mosquitto, nvidia-driver, paho-mqtt-c, pixz,\n\tpostgresql, python-django, rtty, squid, stress-ng, systemd,\n\ttrousers, uclibc, wireshark, wolfssl, zbar\n\n2020.08-rc3, released August 28th, 2020\n\n\tFixes all over the tree.\n\n\tInfrastructure: Ensure RPATH entries that may be needed for\n\tdlopen() are not dropped by patchelf.\n\n\tToolchain: Drop old GCC 6 based external Sourcery AMD64\n\ttoolchain.\n\n\tUpdated/fixed packages: assimp, davfs2, dillo, glibc,\n\tgnuradio, hostapd, ibm-sw-tpm2, ipmitool, json-c, libroxml,\n\tlinux, mender, netopeer2, openal, openjpeg, python-matplotlib,\n\tripgrep, shadowsocks-libev, trousers, xlib_libX11,\n\txserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13141: Target-finalize fail with \"depmod: ERROR: Bad version passed\"\n\n2020.08-rc2, released August 24th, 2020\n\n\tFixes all over the tree, including a number of fixes for\n\tcompilation with GCC-10.\n\n\tToolchain: Disallow building uClibc-ng for RISC-V 64-bit,\n\tbecause of issues with a missing __riscv_flush_icache()\n\timplementation.\n\n\tDefconfigs: CI20: Use mainline Linux and U-boot. Update\n\tMicrochip sama5d27_wlsom1_ek_mmc_dev to use bluez5-utils\n\tinstead of (the removed) legacy bluez-utils\n\n\tUpdated/fixed packages: 18xx-ti-utils, aircrack-ng, apache,\n\tatest, bandwidthd, bellagio, bind, bird, bluez-alsa, boost,\n\tc-periphery, capnproto, chrony, collectd, cpio, cvs,\n\tdieharder, domoticz, dovecot, dovecot-pigeonhole, drbd-utils,\n\tdump1090, efl, elixir, f2fs-tools, feh, fluidsynth, fping,\n\tgdbm, gdk-pixbuf, ghostscript, gst1-plugins-bad,\n\tgstreamer1-editing-services, htop, ibm-sw-tpm2, ifplugd,\n\tiftop, igd2-for-linux, ima-evm-utils, iprutils, iputils,\n\tkeepalived, kmsxx, libabseil-cpp, libcamera, libcurl,\n\tlibfuse3, libnss, librtlsdr, libubox, libunwind, live555,\n\tlttng-tools, luabitop, mender-artifact, minizip,\n\tmjpg-streamer, mpd, mpv, mtd, ncftp, open-lldp, openal,\n\topencv, opencv3, openfpgaloader, optee-os, owfs, php,\n\tpistache, prosody, pulseview, python-decorator,\n\tpython-gunicorn, python-rpi-gpio, python-spidev,\n\tpython3-decorator, python3-mako, python3-pyselftools, qt5,\n\tqt5webengine, rauc, redis, ripgrep, rtl8188eu, rtl8821au,\n\tsetools, smstools3, supertux, tftpd, tpm2-abrmd,\n\twpa_supplicant, xen, xlib_libX11, xserver_xorg-server\n\n\tNew packages: python3-cython, python3-pycryptodomex\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12876: nodejs fails to build when host-icu has been built before\n\t#13111: python-gunicorn: missing dependency on python-setuptools\n\t#13121: wpa_supplicant fails to build without libopenssl enabled\n\t#13146: raspberrypi3_defconfig: \"Inappropriate ioctl for device\"..\n\t#13156: package live555 new license\n\t#13166: python-rpi-gpio: does not work against aarch64, unint..\n\n2020.08-rc1, released August 6th, 2020\n\n\tToolchain:\n\n\t- GCC 10.x added, GCC 9.x is the default\n\t- binutils 2.34 added, binutils 2.33 is the default, binutils\n          2.31 removed\n\t- glibc updated to 2.31\n\t- ARC toolchain components updated to 2020.03-release.\n\t- Enable uClibc-ng usage for RISC-V 64-bit\n\n\tInfrastructure:\n\n\t- qmake-package was fixed to be compatible with\n          BR2_PER_PACKAGE_DIRECTORIES\n\t- complete rewrite of the Gitlab CI Yaml configuration file,\n          now generated directly by the Gitlab CI pipeline itselfs\n\n\tMisc:\n\n\t- cargo and cargo-bin packages removed, as cargo is now part\n          of Rust itself\n\n\tFilesystem: ubinize configuration files can now use\n\tBINARIES_DIR to refer to the $(O)/images directory.\n\n\tNew packages: bitwise, earlyoom, fuse-overlayfs, gloox,\n\tkodi-pvr-octonet, kodi-pvr-zattoo, libabseil-cpp, libcutl,\n\tlibnids, libnpupnp, libodb, libodb-boost, libodb-mysql,\n\tlibodb-pgsql, mbpfan, netopeer2, odb, parprouted,\n\tpython-colorzero, python-gpiozero, python-pybind, python-yatl,\n\tpython3-decorator, qt5quicktimeline, resiprocate, ttyd,\n\tunclutter-xfixes, urandom-scripts,\n\n\tNew defconfigs: bananapi_m2_zero, freescale_imx8mnevk,\n\tglobalscale_espressobin, imx6ullevk,\n\tmicrochip_sama5d27_wlsom1_ek, rock_pi_4, rock_pi_n10\n\n\tRemoved packages: cargo, cargo-bin,\n\tkodi-peripheral-steamcontroller\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12941: Python GObject fails to build when using  BR2_PER_PACKAGE_DIRECTORIES\n\t#12946: Grub: Decompressor is too big.\n\t#12986: Mtools: Error converting to codepage 850\n\t#13001: openjdk-bin replaces libfreetype.so from  host-freetype\n\t#13011: Incorrect selection of gcc version\n\t#13021: Minor code error when building granite-0.4.1\n\t#13026: rpi-firmware: must not rename start files\n\t#13046: Optimize for fast -Ofast is not compliant\n\t#13081: host-e2fsprogs attempts to create udev  rules.d on build host if not exists\n\t#13101: BR audit2allow support\n\n2020.05.3, released October 12th, 2020\n\n\tImportant / security related fixes.\n\n\tmeson: Correct SDK cross-compilation.conf file when\n\tper-package builds were used to build SDK.\n\n\tsystemd: Use /run rather than /var/run for PID files in units.\n\n\tToolchain: use Secure-PLT rather than BSS-PLT for PowerPC 32.\n\n\tFakeroot scripts (BR2_ROOTFS_POST_FAKEROOT_SCRIPT) are now run\n\tafter all finalization hooks (including pre-rootfs) to ensure\n\tthey can override any late configuration done by packages.\n\n\tsupport/script/pycompile: Rework logic to ensure .pyc files\n\tcontain absolute target paths, fixing code inspection at\n\truntime when executed with cwd != '/'.\n\n\tsupport/scripts/setlocalversion: Correct Mercurial output to\n\tmatch behaviour with Git.\n\n\tsupport/scripts/apply-patches.sh: Use patch\n\t--no-backup-if-mismatch, so we no longer blindly have to\n\tremove *.orig files after patching, fixing issues with\n\tpackages containing such files.\n\n\tUpdated/fixed packages: alsa-utils, apparmor, avahi,\n\tbandwidthd, barebox, bash, bison, brotli, busybox, cifs-utils,\n\tcryptsetup, cups, dhcpcd, dhcpdump, docker-cli, docker-engine,\n\tecryptfs-utils, efl, fail2ban, freetype, gcc, gdb,\n\tghostscript, gnutls, go, graphite2, gst1-plugins-base,\n\tgst1-plugins-ugly, imagemagick, ipmitool, jbig2dec, libhtp,\n\tlibraw, libssh, libxml2, libxml-parser-perl, linux-headers,\n\tlocaledef, lua, mbedtls, memcached, mesa3d, meson, minidlna,\n\tmongodb, nginx, nodejs, nss-pam-ldapd, openvmtools,\n\tpaho-mqtt-c, php, postgresql, python, python-aenum,\n\tpython-django, python-engineio, python-fire, python-pymodbus,\n\tpython-scapy, python-semver, python-sentry-sdk,\n\tpython-socketio, python-texttable, python-tinyrpc,\n\tpython-txtorcon, python3, qt5base, rsh-redone, runc, samba4,\n\tstrace, supertux, suricata, systemd, uclibc, usb_modeswitch,\n\tvlc, vsftpd, wayland-protocols, wireguard-linux-compat,\n\twireshark, wlroots, wolfssl, xserver_xorg-server, ympd,\n\tzeromq, zstd\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12911: usb_modeswitch installation race condition\n\t#13251: cryptsetup does not work on branch 2020.02 following..\n\n2020.05.2, released August 29th, 2020\n\n\tImportant / security related fixes.\n\n\tInfrastructure: Ensure RPATH entries that may be needed for\n\tdlopen() are not dropped by patchelf.\n\n\tBR_VERSION_FULL/setlocalversion (used by make print-version\n\tand /etc/os-release): Properly handle local git tags\n\n\tUpdated/fixed packages: apache, assimp, at91bootstrap3, bind,\n\tboost, busybox, capnproto, cegui, chrony, collectd, cpio,\n\tcryptsetup, cups, cvs, dbus, docker-engine, domoticz, dovecot,\n\tdovecot-pigeonhole, dropbear, efl, elixir, f2fs-tools, ffmpeg,\n\tgd, gdk-pixbuf, ghostscript, glibc, gnuradio, grub2,\n\tgst1-plugins-bad, gstreamer1-editing-services, hostapd,\n\tibm-sw-tpm2, iputils, jasper, json-c, libcurl, libressl,\n\tlibwebsockets, linux, live555, mesa3d, mongodb, mosquitto,\n\tmpv, nodejs, opencv, opencv3, openfpgaloader, openjpeg,\n\tpatchelf, perl, php, postgresql, prosody, python-django,\n\tpython-gunicorn, python-matplotlib, ripgrep, rtl8188eu,\n\trtl8821au, ruby, shadowsocks-libev, squid, systemd,\n\ttpm2-abrmd, tpm2-tools, trousers, uboot, webkitgtk, wireshark,\n\twolfssl, wpa_supplicant, wpewebkit, xen, xlib_libX11,\n\txserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12876: nodejs fails to build when host-icu has been built before\n\t#13111: python-gunicorn: missing dependency on python-setuptools\n\t#13121: wpa_supplicant fails to build without libopenssl enabled\n\t#13141: Target-finalize fail with \"depmod: ERROR: Bad version passed\"\n\t#13156: package live555 new license\n\n2020.05.1, released July 25th, 2020\n\n\tImportant / security related fixes.\n\n\tToolchain:\n\t- Make external toolchain version check also work for\n\t  toolchains configured with --with-gcc-major-version-only\n\n\t- Do not handle SOURCE_DATE_EPOCH in toolchain wrapper if the\n\t  compiler supports it, fixing an issue with precompiled\n\t  headers\n\n\t- Ensure debug libs from external toolchains are not installed\n          into target if debugging is disabled\n\n\tDownload:\n\t- Correct reproducibility issue in handling of git submodules\n\t  for older git versions.\n\n\t- Fix file locking over NFS\n\n\tfs: Ensure cpio archive element order is reproducible\n\n\tBr2-external: Fix error reporting for invalid br2-external trees\n\n\tPer-package:\n\t- Fix an issue with python3 sysconfig data not getting\n\tcorrectly expanded\n\n\t- Fix per-package building for packages using the qmake\n          infrastructure\n\n\tUpdated/fixed packages: a10disp, asterisk, bind, brltty,\n\tcdrkit, clamav, cryptodev-linux, dbus, docker-cli,\n\tdocker-engine, dvb-apps, e2fsprogs, exim, exiv2, freerdp, gdb,\n\tgdk-pixbuf, gerbera, gnutls, go, granite, grub2, gssdp,\n\tgst1-plugins-good, gst1-plugins-ugly, gupnp, intel-microcode,\n\tiproute2, irrlicht, iwd, jq, kodi, libcamera, libcec,\n\tlibconfuse, libcurl, libevdev, libhttpserver, libmicrohttpd,\n\tlibnss, libressl, libvncserver, libxml2, libxmlrpc, lxc,\n\tmbedtls, mediastreamer, mesa3d, meson, minizip, mongodb,\n\tmtools, mutt, nano, network-manager, nghttp2, ngircd, nodejs,\n\tntp, open-plc-utils, open2300, openjdk-bin, openssh,\n\toracle-mysql, paho-mqtt-c, pango, php, poco, prosody, putty,\n\tpython-greenlet, python-urllib3, python-validators, python3,\n\treadline, redis, rpi-firmware, rtl8821au, samba4, sdl2,\n\tsqlite, squid, strace, sunxi-mali-mainline-driver, syslog-ng,\n\tsystemd, tcpreplay, tinydtls, upmpdcli, upx, vlc, webkitgtk,\n\twireguard-linux-compat, wireshark, wpebackend-fdo, wpewebkit,\n\tx11vnc, znc, zstd\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12941: Python GObject fails to build when using BR2_PER_PACKAGE_..\n\t#12946: Grub: Decompressor is too big.\n\t#12986: Mtools: Error converting to codepage 850\n\t#13001: openjdk-bin replaces libfreetype.so from host-freetype\n\t#13011: Incorrect selection of gcc version\n\t#13021: Minor code error when building granite-0.4.1\n\t#13026: rpi-firmware: must not rename start files\n\t#13031: nodejs: RangeError at new ArrayBuffer()\n\t#13046: Optimize for fast -Ofast is not compliant\n\n2020.05, released June 1st, 2020\n\n\tVarious fixes.\n\n\tUpdated/fixed packages: arm-trusted-firmware, gcc, mp4v2, fmc,\n\tfmlib, glib-networking, libusb-compat, linux, qt5webengine,\n\tsysrepo, wampcc, xen\n\n2020.05-rc3, released May 29th, 2020\n\n\tFixes all over the tree.\n\n\tInfrastructure: Support checking download hashes for packages\n\tcoming from Subversion.\n\n\tDefconfigs: Increase boot partition size to 64MB for Freescale\n\tboards to allow space for bigger kernels.\n\n\tUpdated/fixed packages: audit, bind, dovecot, efl, erlang,\n\tffmpeg, fio, gerbera, gnupg, leveldb, lrzip, ltrace, matio,\n\tmesa3d, mp4v2, prosody, qemu, qt5declarative, speexdsp,\n\tsystemd, tremor, uboot-tools, unbound, wireshark\n\n\tRemoved packages: wiringpi\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12361: Init system (systemd) kills login on Raspberry Pi Zero\n\t#12686: recipe for target 'install_dev' failed (libcrypto.so..)\n\n2020.05-rc2, released May 22nd 2020\n\n\tFixes all over the tree.\n\n\tU-Boot: Support building with Python 3.x instead of Python\n\t2.x. Since U-Boot 2020.01, various U-Boot build scripts use\n\tPython 3.x instead of Python 2.x, so add an option to pull in\n\thost-python3 rather than host-python. Also fix a number of\n\tdefconfigs to use this new option.\n\n\tUpdated/fixed packages: apparmor, binutils, bison, brltty,\n\tc-icap, cegui, checkpolicy, clamav, crda, cvs, docker-cli,\n\tdocker-engine, domoticz, elf2flt, exfatprogs, fakeroot,\n\tffmpeg, freerdp, gcc, glibc, gnuconfig, irrlicht, kmod,\n\tlibexif, libpam-tacplus, libssh2, libv4l, libvncserver,\n\tlocaledef, lrzip, mariadb, matchbox, mbuffer, mesa3d,\n\tmesa3d-headers, meson, netsniff-ng, openldap, openocd,\n\toptee-os, p7zip, paho-mqtt-c, php, piglit, pigz,\n\tpython-argon2-cffi, python-attrs, python-future,\n\tpython-markdown, python-pycryptodomex, python-pyqt5, qt5base,\n\trpi-firmware, rustc, squashfs, squid, stella, suricata,\n\tsystemd, uacme, uclibc, util-linux, vboot-utils\n\n\tNew packages: python3-pyelftools\n\n\tRemoved packages: ezxml, mtdev2tuio, python-pycrypto\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10551: PowerPC SPE and Musl\n\t#12256: package tar is outdated (1.29 is 3 years old)\n\t#12271: python-iptables runtime dependencies\n\t#12321: host-generic-package: PKG_DL_OPTS not used for host package\n\t#12391: CMake-based host package fails to include output/host/include\n\t#12431: ethernet no detected on nanopi neo 2\n\t#12521: RISCV RV32IA selected, RV64GC output\n\t#12586: avahi failure\n\t#12596: host-e2fsprogs: tune2fs incompatibility on older glibc..\n\t#12611: ntp hash is not matching with upstream 4.2.8p13\n\t#12626: PHP missing header files within 2020.02\n\t#12631: glibc support Power-PC SPE\n\t#12656: bison fails to relocate with relocate-sdk.sh\n\t#12661: cups problems in buildroot\n\t#12686: recipe for target 'install_dev' failed (libcrypto.so:..\n\t#12691: host-rust build fails\n\t#12761: Buildroot fails when building GCNano binaries for the STM..\n\t#12786: Systemd spawns two getty processes when the getty port..\n\t#12806: There are multiple issues in buildroot that faults cups..\n\t#12826: nodejs-12.16.1: error: 'uv_sleep' was not declared in..\n\t#12831: RPI-firmware package: DTB-overlay dependency\n\t#12836: libunwind: package does not show up in menuconfig for..\n\t#12841: util-linux/sfdisk 2.35.1 fails on sector-size header\n\t#12866: should we be disabling bash executable path caching?\n\t#12886: GMP built in wrong order (?)\n\t#12891: QEMU, libvirt-bin, qemu-kvm Package Support required\n\t#12901: GStreamer doesn't build on 2020-05 rc1 with GObject..\n\t#12906: qt PrefixPath is wrong on 2020.05-rc1\n\t#12921: nodejs-12.16.1: error: overriding 'virtual icu_65::..\n\n2020.05-rc1, released May 7th 2020\n\n\tAddition of support for gobject-introspection: both the\n\tgobject-introspection package itself, but also introspection\n\tsupport was enabled in a number of other packages.\n\n\tSupport for Qt 5.6 was dropped as its support was dropped\n\tupstream, only one version of Qt is supported at the moment:\n\tQt 5.14.2.\n\n\tAddition of support for the apparmor Linux security module, by\n\tadding the necessary user-space packages.\n\n\tAddition of a qmake package infrastructure, now used by most\n\tQt-related packages.\n\n\tThe Luarocks package infrastructure has been extended to\n\tsupport build host packages.\n\n\tThe package infrastructure was improved to allow each package\n\tto indicate the Linux kernel configuration options it needs.\n\n\tAddition of support for generating filesystem images using the\n\tEROFS filesystem.\n\n\tThe logic that calculates the list of files installed by each\n\tpackage was reworked to be compatible with the top-level\n\tparallel build functionality.\n\n\tAddition of a package for a pre-compiled ARM32 bare-metal\n\ttoolchain, which can be used to build ARM32 code in ARM64\n\tconfigurations, such as firmware/bootloader code.\n\n\tThe Qemu defconfigs are now boot-tested in Qemu as part of the\n\tGitlab continuous integration.\n\n\tToolchain: gcc 9.x bumped to 9.3.0, gcc 8.x bumped to 8.4.0,\n\tgdb bumped to 8.3.1.\n\n\tNew packages: apcupsd, apparmor, arm-gnu-a-toolchain, bearssl,\n\tbelle-sip, belr, cage, chartjs, erofs-utils, exfatprogs,\n\tgobject-introspection, ibm-sw-tpm2, imx-seco, jbig2dec,\n\tlibapparmor, libiberty, libfuse3, libtextstyle, libudfread,\n\tlibuhttpd, libuwsc, lua-lyaml, matio, mbuffer, netdata,\n\topenfpgaloader, perl-i18n, perl-locale-maketext-lexicon,\n\tperl-lwp-protocol-https,\n\tperl-mojolicious-plugin-authorization,\n\tperl-mojolicious-plugin-cspheader,\n\tperl-mojolicious-plugin-i18n,\n\tperl-mojolicious-plugin-securityheader, perl-mozilla-ca,\n\tperl-path-class, pistache, pkcs11-helper, prelink-cross,\n\tpython-argon2-cffi, python-canopen, python-cbor2,\n\tpython-filelock, python-flatbuffers, python-greenlet,\n\tpython-modbus-tk, python-pyalsa, python-pysftp, python-regex,\n\tpython-snappy, rtty, tinyproxy, udev-gentoo-scripts, unbound,\n\tvuejs, wlroots.\n\n\tNew defconfigs: freescale_imx6ullevk, freescale_imx8qmmek,\n\tnanopi_neo4, nanopi_r1, nitrogen8mm, nitrogen8mn, olpc_xo1,\n\tolpc_xo175, roc_rk3399_pc, stm32mp157a_dk1, zynq_qmtech\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10386: Add an option to put all compiled executables that\n\t\tshow up on target/ in staging/ as well\n\t#11866: iniramfs file system fails to boot using  Grub on EFI x86_64\n\t#12666: Doesn't pick up a custom bash profile\n\t#12696: Uboot 2020.01 Problem loading Linux kernel  on Nano PI NEO\n\t#12701: [patch] wpa_supplicant must depend on  openssl\n\t#12711: host-localedef 2.30-20 fails to compile on  fedora 32 (gcc 10.0.1)\n\t#12716: bio.h not found\n\t#12726: systemctl preset-all failed for\t ctrl-alt-del.target\n\t#12731: rtl8188eu not buildung for banana pi M1\t (glib, systemd, 4.18.12)\n\t#12746: \"sysdig\" package description points to\n\t\thttp://sysdig.org, which bounces to malware site\n\t#12751: OpenJdk package installation issues on\ttarget\n\t#12796: Update OpenSSL to Version 1.1.1g to patch  CVE-2020-1967\n\t#12811: bootstrap stuck and no login prompt\n\n2020.02.12, released April 5, 2021\n\n\tImportant / security related fixes.\n\n\tDependencies: Explicitly detect and bail out if PATH contains\n\tspaces or tabs. A number of packages fail to build in such\n\tsetups, so explicitly inform about this.\n\n\tutils/scanpypi: Explicitly use python3 for compatibility with\n\tpackages using python3 syntax in setup.py\n\n\tsupport/download: Fix tarball generation (from git/svn repos)\n\tincluding symlinks pointing to ./<something>\n\n\tMeson: Use correct C++ host compiler (rather than C compiler)\n\n\tUpdated/fixed packages: asterisk, batman-adv, bind,\n\tca-certificates, docker-containerd, dovecot,\n\tdovecot-pigeonhole, diffutils, efivar, git, gnuchess, gnutls,\n\tgrub2, fakeroot, haserl, imagemagick, irqbalance, jasper,\n\tkodi, libcurl, libebml, libglib2, libjpeg, libopenssl,\n\tlibupnp, libvips, lldpd, mariadb, mbedtls, mosquitto, nodejs,\n\tnetsnmp, nettle, openldap, openmpi, openssh, opkg-utils, perl,\n\tphp, privoxy, prosody, protobuf, python-aiohttp,\n\tpython-django, python-lxml, python-pyyaml, python-rpi-ws281x,\n\tpython3, redis, rpm, sconeserver, screen, sox, sqlcipher,\n\tsquid, sysvinit, tor, transmission, tzdata, uboot, upx,\n\tutil-linux, wireshark, wolfssl, wpa_supplicant, zstd\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13516: utils/scanpypi: Failure when parsing diffoscope\n\t#13541: 2021.02.rc2: irqbalance: Daemon couldn't be bound to..\n\t#13576: Issues compiling buildroot for 5x86\n\t#13581: jpegsrc.v9d.tar.gz has changed hash\n\t#13616: tar file from git repository generation issue\n\n2020.02.11, released February 17, 2021\n\n\tImportant / security related fixes.\n\n\tmeson: Fix ccache detection handling when per-package builds\n\tare used.\n\n\tFakeroot: Fix compatibility issue with glibc 2.33\n\n\tUpdated/fixed packages: atftp, busybox, cereal, connman,\n\tdhcpcd, dnsmasq, docker-cli, docker-engine, fakeroot,\n\tintel-mediadriver, intel-microcode, jasper,\n\tkodi-inputstream-adaptive, libbsd, libopenssl, linux-headers,\n\tmosquitto, orc, php, postgresql, privoxy, pugixml,\n\tpython-bottle, python-django, python3, rauc, sox, subversion,\n\ttzdata, wireguard-linux-compat, wpa_supplicant, xenomai, xterm\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13506: BR2_PACKAGE_DHCPCD missing directory creation\n\n2020.02.10, released January 31st, 2021\n\n\tImportant / security related fixes.\n\n\tDownload: Ensure git submodules are correctly fetched if\n\tenabled for a package with <pkg>_GIT_SUBMODULES = YES and the\n\thost variant is downloaded first.\n\n\tToolchain: Mark CodeSourcery Aarch64 2014.11 toolchain as not\n\thaving libatomic.\n\n\tpkg-stats: Fix python 3.8+ deprecation warning.\n\n\tmeson: Ensure ccache is not detected and used, as it may\n\tconflict with the ccache handling in Buildroot.\n\n\tNew packages: libnpupnp\n\n\tUpdated/fixed packages: bctoolbox, brltty, dbus, dovecot,\n\tdovecot-pigeonhole, gcc, gerbera, gmrender-resurrect, gst-omx,\n\tgst1-plugins-bad, gst1-plugins-base, gst1-plugins-good,\n\tgst1-plugins-ugly, gst1-rtsp-server, gst1-vaapi,\n\tgst1-validate, gstreamer1, gstreamer1-editing-services,\n\tigd2-for-linux, libclc, libllcp, libtorrent-rasterbar,\n\tlibupnp, libupnpp, lpc32xxcdl, luarocks, mpd, nfs-utils,\n\tnodejs, openjpeg, openldap, opentracing-cpp, openvpn, p11-kit,\n\tpaho-mqtt-c, php, poppler, postgresql, python3, runc, sudo,\n\tsyslog-ng, systemd, tini, trace-cmd, tzdata, ushare, vlc,\n\twavpack, wireguard-linux-compat, wolfssl, xapp_xload, xorriso,\n\tzic\n\n\tRemoved packages: libupnp18\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13471: package/mpd/mpd.conf make use of path not created\n\n2020.02.9, released December 27th, 2020\n\n\tImportant / security related fixes.\n\n\tInfrastructure:\n\t- cmake: fix host ccache handling for CMake 3.19\n\t- meson: Forcibly disable binary stripping for\n\t  target builds, enable for host builds\n\t- golang: Fix HOST / TARGET directories for per-package builds\n\n\tDefconfigs: Beaglebone Qt5: Fix ti-sgx related issues\n\n\tUpdated/fixed packages: apitrace, arm-trusted-firmware,\n\tbustle, c-ares, ca-certificates, cdrkit, cryptopp, dhcpcd,\n\tdocker-containerd, dtv-scan-tables, flare-engine, ghostscript,\n\thaproxy, imagemagick, imx-gpu-viv, jasper, jemalloc,\n\tjpeg-turbo, libcap, libcurl, libglib2, libgpiod, libkrb5,\n\tlibopenssl, libplist, libressl, libuv, libuvw, lynx, mariadb,\n\tmbedtls, minidlna, monkey, musl, mutt, ncurses, netsnmp,\n\tnodejs, opencv3, openldap, openrc, opkg-utils, paho-mqtt-c,\n\tphp, privoxy, proftpd, python-crc16, python-flask-cors,\n\tpython-lxml, python-pip, python-pyparsing, python-pyqt5, qemu,\n\tqt5base, raptor, rauc, ruby, setserial, shadowsocks-libev,\n\tslirp, sqlcipher, ti-sgx-demos, tinycbor, vsftpd,\n\twireless-regdb, wireshark, x11vnc, xen, xinetd,\n\txserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#13276: libcap builds libcap.pc incorrectly\n\t#13316: beaglebone_qt5_defconfig: PowerVR fails to start\n\t#13341: Mistake in /etc/init.d/S70vsftpd\n\n2020.02.8, released November 16th, 2020\n\n\tImportant / security related fixes.\n\n\tUpdated/fixed packages: angularjs, argp-standalone, asterisk,\n\tbandwidthd, bitcoin, busybox, cryptsetup, darkhttpd, davfs2,\n\tdocker-cli, docker-containerd, docker-engine,\n\tdovecot-pigeonhole, fastd, fbset, fbtft, freetype, gcc,\n\tghostscript, gnuradio, grpc, gst1-plugins-bad, jsoncpp,\n\tkeepalived, libass, libexif, libiqrf, libpam-tacplus, libraw,\n\tlinux-backports, linux-firmware, lzlib, netsnmp, nginx,\n\toniguruma, opencv3, openntpd, patchelf, php, postgresql,\n\tpython-pyqt5, qt5base, rauc, redis, samba4, slirp, systemd,\n\ttcpdump, tmux, tor, webkitgtk, wireguard-linux-compat,\n\twireshark, wpewebkit, xen, xorriso, zeromq, zxing-cpp\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11931: Bugs in support/scripts/apply-patches.sh\n\n2020.02.7, released October 12th, 2020\n\n\tImportant / security related fixes.\n\n\tmeson: Correct SDK cross-compilation.conf file when\n\tper-package builds were used to build SDK.\n\n\tsystemd: Use /run rather than /var/run for PID files in units.\n\n\tToolchain: use Secure-PLT rather than BSS-PLT for PowerPC 32.\n\n\tsupport/script/pycompile: Rework logic to ensure .pyc files\n\tcontain absolute target paths, fixing code inspection at\n\truntime when executed with cwd != '/'.\n\n\tsupport/scripts/setlocalversion: Correct Mercurial output to\n\tmatch behaviour with Git.\n\n\tsupport/scripts/apply-patches.sh: Use patch\n\t--no-backup-if-mismatch, so we no longer blindly have to\n\tremove *.orig files after patching, fixing issues with\n\tpackages containing such files.\n\n\tUpdated/fixed packages: bandwidthd, barebox, bash, bison,\n\tbrotli, cifs-utils, cryptsetup, dhcpcd, dhcpdump, docker-cli,\n\tdocker-engine, ecryptfs-utils, efl, fail2ban, freetype, gcc,\n\tgdb, ghostscript, gnutls, go, gst1-plugins-base,\n\tgst1-plugins-ugly, ipmitool, libhtp, libraw, libssh, libxml2,\n\tlibxml-parser-perl, localedef, lua, memcached, mesa3d, meson,\n\tminidlna, nginx, nodejs, nss-pam-ldapd, openvmtools, php,\n\tpostgresql, python, python-aenum, python-autobahn,\n\tpython-engineio, python-fire, python-pymodbus, python-scapy,\n\tpython-semver, python-sentry-sdk, python-socketio,\n\tpython-texttable, python-tinyrpc, python-txtorcon, python3,\n\tqt5base, runc, samba4, strace, supertux, suricata, systemd,\n\tvlc, wayland-protocols, wireguard-linux-compat, wireshark,\n\txserver_xorg-server, zeromq, zstd\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12911: usb_modeswitch installation race condition\n\t#13251: cryptsetup does not work on branch 2020.02 following..\n\n2020.02.6, released September 5th, 2020\n\n\tImportant / security related fixes.\n\n\tFix a 2020.02.5 build regression in busybox when systemd (and\n\tnot less) are enabled because of missing infrastructure.\n\n\tUpdated/fixed packages: alsa-utils, avahi, busybox, cups,\n\tdocker-cli, graphite2, imagemagick, libeXosip2, mbedtls,\n\tnvidia-driver, paho-mqtt-c, python-django, systemd, uclibc,\n\tusb_modeswitch, wolfssl\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12911: usb_modeswitch installation race condition\n\n2020.02.5, released August 29th, 2020\n\n\tImportant / security related fixes.\n\n\tInfrastructure: Ensure RPATH entries that may be needed for\n\tdlopen() are not dropped by patchelf.\n\n\tBR_VERSION_FULL/setlocalversion (used by make print-version\n\tand /etc/os-release): Properly handle local git tags\n\n\tUpdated/fixed packages: apache, at91bootstrap3, bind, boost,\n\tbusybox, capnproto, chrony, collectd, cpio, cryptsetup, cups,\n\tcvs, dbus, docker-engine, domoticz, dovecot,\n\tdovecot-pigeonhole, dropbear, efl, elixir, f2fs-tools, ffmpeg,\n\tgd, gdk-pixbuf, ghostscript, glibc, grub2, gst1-plugins-bad,\n\thostapd, iputils, jasper, json-c, libcurl, libwebsockets,\n\tlinux, live555, mesa3d, mosquitto, mpv, nodejs, opencv,\n\topencv3, openjpeg, patchelf, perl, php, postgresql,\n\tpython-django, python-gunicorn, python-matplotlib, ripgrep,\n\trtl8188eu, rtl8821au, ruby, shadowsocks-libev, squid,\n\ttpm2-abrmd, tpm2-tools, trousers, uacme, webkitgtk, wireshark,\n\twolfssl, wpa_supplicant, wpewebkit, xen, xlib_libX11,\n\txserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12876: nodejs fails to build when host-icu has been built before\n\t#13111: python-gunicorn: missing dependency on python-setuptools\n\t#13121: wpa_supplicant fails to build without libopenssl enabled\n\t#13141: Target-finalize fail with \"depmod: ERROR: Bad version passed\"\n\t#13156: package live555 new license\n\n2020.02.4, released July 26th, 2020\n\n\tImportant / security related fixes.\n\n\tToolchain:\n\t- Make external toolchain version check also work for\n\t  toolchains configured with --with-gcc-major-version-only\n\n\t- Do not handle SOURCE_DATE_EPOCH in toolchain wrapper if the\n\t  compiler supports it, fixing an issue with precompiled\n\t  headers\n\n\t- Ensure debug libs from external toolchains are not installed\n          into target if debugging is disabled\n\n\tDownload:\n\t- Correct reproducibility issue in handling of git submodules\n\t  for older git versions.\n\n\t- Fix file locking over NFS\n\n\tfs: Ensure cpio archive element order is reproducible\n\n\tBr2-external: Fix error reporting for invalid br2-external trees\n\n\tPer-package:\n\t- Fix an issue with python3 sysconfig data not getting\n\tcorrectly expanded\n\n\t- Fix per-package building for packages using the qmake\n          infrastructure\n\n\tUpdated/fixed packages: a10disp, asterisk, bind, cdrkit,\n\tcheckpolicy, clamav, dbus, docker-cli, docker-engine,\n\tdvb-apps, e2fsprogs, exim, exiv2, freerdp, gnutls, go, grub2,\n\tgssdp, gst1-plugins-good, gst1-plugins-ugly, gupnp,\n\tintel-microcode, iproute2, irrlicht, iwd, jq, kodi, libcamera,\n\tlibconfuse, libcurl, libglib2, libhttpserver, libmicrohttpd,\n\tlibopenssl, libvncserver, libxml2, libxmlrpc, lxc, mbedtls,\n\tmesa3d, meson, mongodb, mtools, mutt, nghttp2, ngircd, nodejs,\n\tntp, open-plc-utils, open2300, openjdk-bin, openssh,\n\toracle-mysql, paho-mqtt-c, pcre, php, poco, prosody, putty,\n\tpython-twisted, python-urllib3, python-validators, python3,\n\tqt5xmlpatterns, redis, rpi-firmware, rtl8821au, samba4, sdl2,\n\tsqlite, squid, syslog-ng, systemd, tcpreplay, tinydtls,\n\tupmpdcli, upx, vlc, webkitgtk, wireguard-linux-compat,\n\twireshark, wpebackend-fdo, wpewebkit, zstd\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12941: Python GObject fails to build when using BR2_PER_PACKAGE_..\n\t#12946: Grub: Decompressor is too big.\n\t#12986: Mtools: Error converting to codepage 850\n\t#13001: openjdk-bin replaces libfreetype.so from host-freetype\n\t#13011: Incorrect selection of gcc version\n\t#13026: rpi-firmware: must not rename start files\n\t#13031: nodejs: RangeError at new ArrayBuffer()\n\t#13046: Optimize for fast -Ofast is not compliant\n\n2020.02.3, released June 3rd, 2020\n\n\tImportant / security related fixes.\n\n\tFix various build issues of host packages on hosts using GCC\n\t10.\n\n\tUpdated/fixed packages: arm-trusted-firmware, audit, bind,\n\tbinutils, bison, clamav, crda, dovecot, dtc, efl, elf2flt,\n\terlang, fakeroot, ffmpeg, fmc, fmlib, freerdp, gcc, git,\n\tglib-networking, gnupg, leveldb, libexif, libssh2,\n\tlibusb-compat, linux-headers, lrzip, ltrace, mariadb, mesa3d,\n\tmp4v2, openldap, openocd, perl, php, prosody,\n\tpython-pycryptodomex, python-pyqt5, qemu, rpi-firmware, rustc,\n\tspeexdsp, sysrepo, systemd, tremor, vboot-utils, wireshark,\n\txen\n\n\tRemoved packages: python-pycrypto\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12361: Init system (systemd) kills login on Raspberry Pi Zero\n\t#12656: bison fails to relocate with relocate-sdk.sh\n\t#12671: leveldb won't detect that snappy is present (static..\n\t#12691: host-rust build fails\n\t#12831: RPI-firmware package: DTB-overlay dependency\n\n2020.02.2, released May 12th, 2020\n\n\tImportant / security related fixes.\n\n\tMusl: Disallow on PPC64 cores without AltiVec support\n\t(E.G. e5500).\n\n\tfs/cpio: Correctly handle booting with 'console='\n\n\trelease: Ensure temporary .br2-external.* files are not\n\tincluded in the release tarball\n\n\tDefconfigs: Fix various mistyped config options, or config\n\toptions where the dependencies were no longer met.\n\n\tUpdated/fixed packages: apache, azure-iot-sdk-c, binutils,\n\tboinc, c-ares, cvs, docker-cli, docker-containerd,\n\tdocker-engine, domoticz, e2fsprogs, efl, evtest, exim, ffmpeg,\n\tfreerdp, gcc, gflags, glibc, gnuconfig, haproxy, imx-gpu-2d,\n\tirrlicht, jpeg kodi-pvr-vuplus, libarchive, libcoap,\n\tlibfpm-extra, libglib2, libhtp, libid3tag, libinput, libmad,\n\tlibopenssl, libsepol, libssh, libv4l, libvncserver, libwpe,\n\tlocaledef, mariadb, matchbox, mbedtls, mc, mesa3d-headers,\n\tmeson, midori, msgpack, netsnmp, nginx, ogre, openjdk,\n\topenldap, openvpn, p7zip, paho-mqtt-c, php, polkit, python,\n\tpython-attrs, python-crossbar, python-dpkt, python-flask,\n\tpython-future, python-iptables, python-jedi, python-markdown2,\n\tpython3, qemu, qpdf, qt5, samba4, squashfs, squid, strongswan,\n\tsuricata, tzdata, util-linux, vlc, wget, webkitgtk,\n\twireguard-linux-compat, wireshark, wpebackend-fdo, wpewebkit,\n\tzic\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11866: initramfs file system fails to boot using Grub on EFI x86_64\n\t#12271: python-iptables runtime dependencies\n\t#12726: systemctl preset-all failed for ctrl-alt-del.target\n\t#12751: OpenJdk package installation issues on target\n\t#12796: Update OpenSSL to Version 1.1.1g to patch CVE-2020-1967\n\t#12811: bootstrap stuck and no login prompt\n\t#12841: util-linux/sfdisk 2.35.1 fails on sector-size header\n\n2020.02.1, released April 10th, 2020\n\n\tImportant / security related fixes.\n\n\tcore: Also fixup /lib references in libtool .la files, similar\n\tto how it is done for /usr/*.\n\n\tVarious fixes for builds with per-package target/host\n\tdirectories.\n\n\ttoolchain: Fix kernel headers validation check for external\n\ttoolchains. Fix make 4.3+ compatibility in external toolchain\n\tlogic.\n\n\tfs/initramfs: fix show-info so it also shows the usual\n\trootfs-related variables.\n\n\tUpdated/fixed packages: arm-trusted-firmware, barebox-aux,\n\tbluez5_utils, bubblewrap, busybox, civetweb, cog, collectd,\n\tffmpeg, gcc, gnutls, gssdp, gvfs, haproxy, hiredis, hostapd,\n\tkmscube, kodi-screensaver-rsxs, libical, libinput, libexif,\n\tlibopenssl, libsndfile, linux, linux-tools, llvm, localedef,\n\tmcrypt, mesa3d, meson, monit, nftables, ntp, opencv3,\n\toprofile, php, pinentry, polkit, pure-ftpd, python-pyyaml,\n\tqt5, quagga, radvd, rcw, redis, rocksdb, samba4, screen,\n\tsdbusplus, swupdate, sysdig, sysklogd, syslinux, syslog-ng,\n\ttor, tslib, uacme, util-linux, vala, vlc,\n\twireguard-linux-compat, wireguard-tools, wireshark,\n\twpa_supplicant, xserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12711: host-localedef 2.30-20 fails to compile on fedora 32\n\t#12746: \"sysdig\" package description points to http://sysdig.org, ..\n\n2020.02, released March 8th, 2020\n\n\tVarious fixes.\n\n\tbr2-external: Fix compatibility with make 4.3+\n\n\tUpdated/fixed packages: bash, bcm2835, binutils, cups,\n\terlang-p1-acme, fbgrab, gr-osmosdr, gst1-plugins-base,\n\tgst1-validate, gstreamer1, guile, jhead, libdrm, libevdev,\n\tlibinput, libnss, libsndfile, libvncserver, linux-firmware,\n\tmesa3d, nodejs, openjdk-bin, openvmtools, optee-test, patch,\n\tphp, piglit, pppd, python-django, qemu, qt5base, ruby,\n\tser2net, swupdate, thrift, zziplib\n\n\tRemoved packages: classpath, jamvm\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12606: fbgrab location has changed\n\n2020.02-rc3, released March 2nd, 2020\n\n\tFixes all over the tree.\n\n\tInfrastructure: Rework file list handling to fix race\n\tconditions when building with per-package target and host\n\tdirectories and top-level parallel builds.\n\n\tUpdated/fixed packages: aufs, binutils, blktrace, brltty,\n\tcairo, dnsmasq, docker-compose, elf2flt, exim, exiv2, git,\n\tkodi-inputstream-adaptive, libarchive, libcgroup, libgdiplus,\n\tlibssh2, libvncserver, libvorbis, linknx, linux-firmware, lxc,\n\tlz4, mosquitto, openjpeg, openrc, poco, proftpd, pure-ftpd,\n\tpython3, python-multidict, python-setuptools-scm-git-archive,\n\tqpdf, qt5tools, rdesktop, rocksdb, shellinabox, squid,\n\tsuricata, swig, systemd, taglib, util-linux, wireshark, zsh\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12571: ltp-testsuite : Build failure\n\t#12576: 2020.02-RC1: error while loading shared libraries: ...\n\t#12581: 2020.02-rc1 glibc failing to build on fedora 31\n\n2020.02-rc2, released February 26th, 2020\n\n\tFixes all over the tree.\n\n\tToolchain: Ensure strong SSP can only be enabled if the\n\t(external) toolchain supports it.\n\n\tFix a race condition related to creating the output/staging\n\tsymlink on systems with coreutils < 8.27.\n\n\tDrop support for the (end of life) Qt 5.6 variant.\n\n\tUpdated/fixed packages: at, armadillo, audiofile, bash,\n\tbusybox, erlang, fail2ban, fluidsynth, ipsec-tools, jpeg-turbo,\n\tkvm-unit-tests, libftdi1, libinput, libsvgtiny, libtomcrypt,\n\tlibupnpp, libxml2, linux-tools, luv, mbedtls, mesa3d, minicom,\n\topenvmtools, php, qt5, qt5webengine, qwt, radvd, rcw,\n\tsdbusplus, systemd, tpm2-tss, vorbis-tools\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12581: 2020.02-rc1 glibc failing to build on fedora 31\n\n2020.02-rc1, released February 18th, 2020\n\n\tFixes all over the tree and new features.\n\n\tAdd experimental support for building with a per-package\n\ttarget and host directory. This still has some rough edges,\n\tbut brings a number of advantages:\n\n\t- Packages will only be able to access the explicitly listed\n          dependencies and not any other packages that happen to be\n          built before, ensuring correct dependency information in\n          Buildroot.\n\n\t- Possibility for top-level parallel builds, speeding up\n          builds on multicore machines.\n\n\tCore: Ensure package-file-lists data is correct after\n\tincremental builds as well.\n\n\tArchitecture: Add support for ARC-HS38 with 64bit multiplier\n\tvariant, allow building glibc for big endian ARC, handle 16KB\n\tMMU page size for ARC in toolchain wrapper.\n\n\tToolchain: Add binutils 2.33.1, GCC 7.5.0, Arm 9.2-2019.12\n\ttoolchains, ARC 2019.09 toolchain. Allow using custom kernel\n\theaders newer than what is known by Buildroot.\n\n\tpkg-stats: Support for CVE vulnerability reporting by\n\tcomparing to NVD database.\n\n\tReproducible builds: The go -trimpath option is now used to\n\tget rid of absolute build paths, __FILE__ and __BASE_FILE__\n\tdefines are now handled in the toolchain wrapper.\n\n\tSystemd: Build host variant and use systemctl to automatically\n\tenable unit files rather than manually managing symlinks.\n\n\tUtil-linux: Ensure that hwclock is built without GPLv3\n\tcode. Notice that builds with hwclock has contained\n\tGPLv3-licensed code since util-linux 2.30 (Buildroot 2017.08+)\n\n\tNew defconfigs: Beelink GS1, Raspberrypi4 64bit\n\n\tNew packages: alura, avro-c, bubblewrap, cctz, cereal,\n\tcpuburn-arm, elixir, erlang-base64url, erlang-idna,\n\terlang-jose, erlang-p1-acme, erlang-p1-mqtree,\n\terlang-p1-yconf, fluid-soundfont, fluidsynth, gcnano-binaries,\n\tgensio, glslsandbox-player, libargon2, libmodsecurity,\n\tlibpam-nfc, libtelnet, lua-codegen, lua-livr, lua-livr-extra,\n\tlua-rotas, lua-silva, mfoc, network-manager-openvpn,\n\tnginx-modsecurity, perl-crypt-openssl-aes,\n\tperl-math-prime-util, pipewire, ptm2human, python-aenum,\n\tpython-aiohttp-debugtoolbar, python-aiohttp-mako,\n\tpython-aiologstash, python-aiosignal, python-aiozipkin,\n\tpython-async-lru, python-avro, python-bunch, python-crontab,\n\tpython-dnspython, python-entrypoints, python-esptool,\n\tpython-frozenlist, python-future, python-gitdb, python-janus,\n\tpython-lockfile, python-logstash, python-nested-dict,\n\tpython-pbr, python-pyaes, python-pydantic, python-smmap2,\n\tpython-sockjs, python-zc-lockfile, raspi-gpio, rocksdb,\n\tsdbusplus, spidermonkey, thermald, ti-sgx-libgbm, tinyssh,\n\ttio, umtprd, weston-imx, wireguard-linux-compat,\n\twireguard-tools, xdg-dbus-proxy\n\n\tRemoved packages: bluez_utils, celt051, erlang-p1-iconv, fis,\n\tgadgetfs-test, libplayer, gstreamer, gst-ffmpeg,\n\tgst-fsl-plugins, gst-omapfb, gst-plugins-bad,\n\tgst-plugins-base, gst-plugins-good, gst-plugins-ugly,\n\tperl-digest-md5, perl-mime-base64, perl-net-ping,\n\tpython-scapy3k, wireguard\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11906: the new version of mesa3d cannot support etnaviv when..\n\t#11996: opencv3 SIGILL on Cortex-A5 with VFPv4-D16\n\t#12121: PyQt5.QtSerialPort and other modules not being built\n\t#12256: package tar is outdated (1.29 is 3 years old\n\t#12286: Can't import gobject in python 3.8\n\t#12376: python-scapy3k is deprecated\n\t#12386: carriage return issue when \"make menuconfig\"\n\t#12441: qt5webengine build error: asm/errno.h: No such file or..\n\t#12446: Buildroot fails to finish installing packages\n\t#12456: qtvirtualkeyboard: No such file or directory\n\t#12461: libglib2 build files with deep directory structure\n\t#12481: minicom fails when output directory path contains \"m4\"\n\t#12501: libnss-3.49.1: ld error: multiple definition of `gcm_..\n\t#12526: host-nodejs 12.14.1: configure fail: AttributeError: ..\n\t#12536: Linux-Headers extracting failure\n\t#12546: Ninja 1.10 build Error\n\n2019.11.3, released April 10th, 2020\n\n\tImportant / security related fixes.\n\n\tcore: Fix compatibility with make 4.3+. Also fixup /lib\n\treferences in libtool .la files, similar to how it is done for\n\t/usr/*.\n\n\ttoolchain: Fix kernel headers validation check for external\n\ttoolchains.\n\n\tfs/initramfs: fix show-info so it also shows the usual\n\trootfs-related variables.\n\n\tUpdated/fixed packages: barebox-aux, bluez5_utils, busybox,\n\tcivetweb, cog, collectd, ffmpeg, gcc, gnutls, gssdp, gvfs, haproxy,\n\thiredis, hostapd, kmscube, libical, libopenssl, libsndfile,\n\tlinux-tools, llvm, monit, ntp, php, pure-ftpd, radvd, redis,\n\tsamba4, screen, sysdig, syslinux, syslog-ng, tor, uacme,\n\tutil-linux, vala, vlc, wpa_supplicant, xserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12746: \"sysdig\" package description points to http://sysdig.org, ..\n\n2019.11.2, released March 16th, 2020\n\n\tImportant / security related fixes.\n\n\tCore: Ensure package-file-lists data is correct after\n\tincremental builds as well.\n\n\tFix a race condition related to creating the output/staging\n\tsymlink on systems with coreutils < 8.27.\n\n\tToolchain: ARC tools bumped to arc-2019.09.\n\n\tBr2-external: Fix patch handling when external linux-extension\n\tpackages are used. Fix compatibility with make 4.3+\n\n\tUtil-linux: Ensure that hwclock is built without GPLv3\n\tcode. Notice that builds with hwclock has contained\n\tGPLv3-licensed code since util-linux 2.30 (Buildroot 2017.08+)\n\n\tUpdated/fixed packages: armadillo, at, bcm2835, binutils,\n\tblktrace, bluez-alsa, bootstrap, brltty, busybox, cairo,\n\tclamav, cog, cups, czmq, dnsmasq, docker-containerd, dovecot,\n\tdovecot-pigeonhole, e2fsprogs, elf2flt, eudev, exim, exiv2,\n\tfbgrab, gettext-tiny, glibc, go, grep, gst1-validate, guile,\n\timagemagick, jhead, jpeg-turbo, kvm-unit-tests, lapack,\n\tlibarchive, libcgroup, libdrm, libevent, libexif, libftdi1,\n\tlibgdiplus, libjpeg, libsigrok, libsndfile, libssh2,\n\tlibsvgtiny, libvncserver, libvorbis, libxml2, libxslt, linknx,\n\tlxc, lz4, mariadb, mbedtls, meson, mongoose, mosquitto, musl,\n\tncurses, nodejs, ntfs-3g, ogre, opencv3, openjdk, openjpeg,\n\topenrc, openswan, openvmtools, optee-test, patch, php, piglet,\n\tpostgresql, pppd, proftpd, pure-ftpd, python-django,\n\tpython-pyqt5, python-setuptools-scm-git-archive, python3,\n\tqemu, qt5base, qt5tools, qt5virtualkeyboard, qt5webengine,\n\tqwt, rdesktop, ruby, runc, samba4, shellinabox,\n\tskeleton-init-openrc, smartmontools, spdlog, sqlcipher, squid,\n\tsuricata, swig, swupdate, sysklogd, taglib, thrift,\n\tti-cgt-pru, uclibc, util-linux, vorbis-tools, webkitgtk,\n\twireshark, wpebackend-fdo, wpewebkit, xen,\n\txserver_xorg-server, zeromq, zsh, zziplib\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11996: opencv3 SIGILL on Cortex-A5 with VFPv4-D16\n\t#12331: meson issue\n\t#12456: qtvirtualkeyboard: No such file or directory\n\t#12461: libglib2 build files with deep directory structure\n\t#12481: minicom fails when output directory path contains \"m4\"\n\t#12606: fbgrab location has changed\n\n2019.11.1, released January 12th, 2020\n\n\tImportant / security related fixes.\n\n\tInfrastructure: kconfig: Fix reconfigure logic, python: Ensure\n\tcorrect compiler and linker flags are used for compiled code\n\n\tutils/scanpypi: Remind users to update DEVELOPERS\n\n\tDefconfigs: imx6-sabresd: Fix the Qt5 display names,\n\timx8: Drop extra copy of U-Boot DTB\n\n\tUpdated/fixed packages: acsccid, bitcoin, boost, busybox,\n\tcc-tool, cmocka, cpio, cups, dante, dialog, dillo, docker-cli,\n\tdocker-containerd, docker-engine, easy-rsa, ebtables,\n\tecryptfs-utils, efl, ffmpeg, gdb, git, glibc, gnupg2, go,\n\tgpsd, grpc, gst1-plugins-bad, iputils, jasper,\n\tkf5-kcoreaddons, leveldb, libarchive, libfribi, libgit2,\n\tlibkrb5, libp11, librsvg, libssh, libtomcrypt, libuio, libv4l,\n\tlirc-tools, log4cplus, lrzip, lvm2, mali-t76x,\n\tmatchbox-desktop, mender-grubenv, mmc-utils, mosquitto,\n\tnodejs, ntp, openipmi, opencv3, openpowerlink, openrc, pango,\n\tperl-sys-cpu, pimd, postgresql, pulseaudio, python-brotli,\n\tpython-coherence, python-crc16, python-django, python-dpkt,\n\tpython-gobject, python-pyasn-modules, python-pypcap,\n\tpython-pyqt5, python-subprocess32, python3, qpdf,\n\tqt-webkit-kiosk, qt5virtualkeyboard, qt5webengine, quota,\n\trabbitmq-c, rauc, rpcbind, rtl8821au, runc, rygel, samba4,\n\tsdl2, setserial, snort, spidev_test,\n\tsunxi-mali-mainline-driver, syslog-ng, sysrepo, tcllib, tftpd,\n\tusbmount, w_scan, wavpack, wsapi, wsapi-fcgi, wsapi-xavante,\n\tx265, xserver_xorg-server, ytree, zip\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12121: PyQt5.QtSerialPort and other modules not being built\n\t#12286: Can't import gobject in python 3.8\n\n2019.11, released December 1st, 2019\n\n\tVarious fixes.\n\n\tInfrastructure: Make HOST_<pkg>_DL_OPTS inherit from\n\t<pkg>_DL_OPTS by default, just like it is done for a number of\n\tother package variables.\n\n\tAdd <pkg>_KEEP_PY_FILES to exclude specific python .py files\n\tfrom the removal done by BR2_PACKAGE_PYTHON{,3}_PYC_ONLY for\n\tthe (rare) case where the .py files are needed at runtime\n\trather than .pyc.\n\n\tUpdated/fixed packages: am33x-cm3, bind, collectd, go, gob2,\n\tgst1-plugins-bad, haproxy, jasper, jpeg-turbo, libdrm,\n\tlibftdi, libftdi1, libnss, libselinux, libstrophe, lzma,\n\tminicom, network-manager, nodejs, oniguruma, opencv3,\n\topenvmtools, perl-gdgraph, perl-gdtextutil, prosody,\n\tpython-cchardet, systemd, tiff, wolfssl,\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11416: check-uniq-files staging issue\n\t#12146: Oprofile runtime issue\n\t#12166: Compiling nodejs for SAMA5D3 always crash with illegal inst..\n\t#12171: Python-opencv needs config.py and config-3.7.py to run..\n\t#12196: duma package\n\t#12211: host-nodejs 10.15.3 package fail to build\n\t#12316: tzdata fails to install with empty \"default local time\"\n\t#12326: network-manager build fails with missing glib error\n\t#12366: Gstreamer1 gst1-plugins-bad do not compile with RPI-Userland\n\n2019.11-rc3, released November 24th, 2019\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: asterisk, clamav, domoticz, faifa,\n\tgerbera, kmod, kvm-unit-tests, libupnp18, linux-serial-test,\n\tlsof, ltp-testsuite, lxc, mesa3d, mesa3d-headers, perl, php,\n\tpostgresql, qemu, rauc, redis, rpcbind, spice, spice-protocol,\n\tsystemd, tftpd, waylandpp, webkitgtk, zip\n\n2019.11-rc2, released November 16th, 2019\n\n\tFixes all over the tree.\n\n\tToolchain: ARC tools bumped to arc-2019.09-rc1, ensure\n\texternal toolchain kernel headers version check correctly stop\n\tthe build on mismatch\n\n\tMeson: Fix generation of global cross-compilation.conf\n\n\tDownload: Also use the package download method for extra\n\tdownloads from the same site, so it does not get confused by\n\tURLs containing '+'\n\n\tDefconfigs: Fix boot issue for beaglebone\n\n\tUpdated/fixed packages: bird, chrony, connman, dhcp, domoticz,\n\tdropwatch, dtc, elf2flt, gettext-tiny, glog, intel-microcode,\n\tipsec-tools, jailhouse, kodi, libfribi, libmbim, libressl,\n\tlibsigrokdecode, libsvgtiny, linux-serial-test, ltp-testsuite,\n\tlvm2, lxc, mariadb, mesa3d, minizip, ndisc6, neardal, ninja,\n\tofono, openvmtools, oracle-mysql, qt5wayland, safeclib, socat,\n\tsudo, systemd, wpewebkit, xserver_xorg-server\n\n2019.11-rc1, released November 5th, 2019\n\n\tFixes all over the tree and new features.\n\n\tDependencies: Gcc/g++ 4.8 or newer is now required on the\n\tbuild host.\n\tEnsure host has JSON::PP perl module installed if\n\twebkitgtk/wpewebkit packages are enabled as it is needed\n\tduring their build process.\n\n\tToolchain: Add support for the D programming language (GCC\n\t9.x, Glibc).\n\tGCC 9.x updated to 9.2.0, Glibc updated to 2.30, Musl updated\n\tto 1.1.24, uClibc-ng updated to 1.0.32, ARC toolchain updated\n\tto arc-2019.09-eng002.\n\tMusl: Add a patch to add support for\n\tsched_{get,set}scheduler() and sched_{get,set}param() for\n\tcompatibility.\n\tGenerate check-headers program under BUILD_DIR rather than\n\t/tmp to fix issues with distributions mounting /tmp noexec.\n\tAlso copy libssp.so for external toolchains if SSP\n\tto handle toolchains providing SSP support in libssp rather\n\tthan in the C library\n\n\tNew defconfigs: Beaglebone AI, FriendlyARM Nanopi NEO Plus2,\n\tLibre Computer \"La Frite\", QEMU Armv7-A with trustzone/OP-TEE,\n\tSTM32MP157 Discovery Kit\n\n\tArch: RISC-V: Default to a sensible floating point ABI based\n\ton the selected ISA extensions rather than always defaulting\n\tto ILP32/64\n\n\tGraph-size: Package sizes are now shown in human readable form\n\t(Kib/Mib/Gib) rather than always in Kib. Binary (KB/MB/GB)\n\tformat can be selected using the --binary option. The cut-off\n\tlimit for classifying packages as \"other\" is now configurable\n\tusing the --size-limit option.\n\n\tBr2-external: Linux kernel extensions can now also be provided\n\tin an external tree by adding packages under\n\tlinux/linux-ext-*.mk. See the manual for details.\n\n\tFakeroot now works correctly under Microsoft Windows 10\n\tServices for Linux, which does not provide SYSV IPC support\n\n\tThe check-uniq-files logic which would complain if multiple\n\tpackages would touch the same files has been removed as it\n\tcauses issues in certain situations (when packages are\n\trebuilt) and the issue is no longer considered a problem for\n\ttoplevel parallel builds as those will use a per-package\n\tstaging/target directory.\n\tWith this removed, Python is no longer required for a basic\n\tbuild (only for optional scripts).\n\n\tsupport/scripts/genimage.sh will no longer make a copy of\n\tTARGET_DIR, speeding up post-build/image scripts.\n\n\tThe runtime test logic now uses Python 3.x.\n\n\tA 'v' prefix has been dropped from the <pkg>_SOURCE variable\n\tfor a number of packages to match the version numbers used by\n\thttps://release-monitoring.org\n\n\tNew packages: caps, collectl, dav1d, fstrcmp, ima-evm-utils,\n\tjitterentropy-library, kodi-vfs-rar, kodi-vfs-sftp, libavl,\n\tlibhttpserver, libmspack, libnetconf2, libolm, libyang,\n\tlinux-serial-test, lrzip, mdevd, minimodem, musl-fts, netifrc,\n\togre, openlayers, python-aioredis, python-asgiref,\n\tpython-backports-functools-lru-cache, python-bluezero,\n\tpython-brotli, python-channels, python-channels-redis,\n\tpython-colorlog, python-daphne, python-django-enumfields,\n\tpython-jaraco-functools, python-kiwisolver, python-msgfy,\n\tpython-rpi-ws281x, python-setuptools-scm-git-archive,\n\tpython-simplelogging, python-soupsieve, python-sqliteschema,\n\tpython-sqlparse, python-tqdm, python-webencodings, qt5webview,\n\trestclient-cpp, ripgrep, snmpclitools, sunwait, sysrepo,\n\tuacme, utf8proc, uvw, ytree\n\n\tRemoved packages: alljoyn, alljoyn-base, alljoyn-tcl-base,\n\tdevmem2, eventlog, kodi-audiodecoder-opus,\n\tkodi-screensaver-planestate, kodi-visualisation-waveforhue,\n\tpython-pysnmp-apps, riscv-pk, ustr\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#9881:  systemd-resolved not setting resolv.conf link\n\t#10171: devmem2 w (word) is 8 bytes in x86 64 systems\n\t#10586: musl gcc has ifunc enabled when musl doesn't support it\n\t#10806: Allow nfs-utils to use ipv6\n\t#11366: [2018.08] SysV IPC not available for fakeroot on WSL\n\t#11411: check-uniq-files target issue\n\t#11766: Console (getty) issues with systemd\n\t#11781: mariadb build error\n\t#12031: Build of cups-filters fails while linking, apparently due..\n\t#12116: console prompt does not appear after login\n\t#12141: eudev package is missing \"render\" and \"kvm\" groups\n\t#12181: dropbear: norootlogin (-w) no longer works when PAM is enabled\n\t#12186: Raspberry Pi Zero-W build fails on newer kernel versions\n\t#12191: cmake BUILDDIR\n\t#12241: Permission denied while running \"make\"\n\t#12261: sudo versions prior to 1.8.28 are affected.\n\t#12276: make clean/distclean does not remove BR2_DL_DIR and BR2_HOST_DIR\n\t#12281: Custom configuration fails to build (based on raspberrypi3_..\n\n2019.08.3, released December 7th, 2019\n\n\tImportant / security related fixes.\n\n\tInfrastructure: Make HOST_<pkg>_DL_OPTS inherit from\n\t<pkg>_DL_OPTS by default, just like it is done for a number of\n\tother package variables\n\n\tAdd <pkg>_KEEP_PY_FILES to exclude specific python .py files\n\tfrom the removal done by BR2_PACKAGE_PYTHON{,3}_PYC_ONLY for\n\tthe (rare) case where the .py files are needed at runtime\n\trather than .pyc.\n\n\tFix <pkg>-reconfigure handling for packages using the kconfig\n\tinfrastructure.\n\n\tToolchain: ensure external toolchain kernel headers version\n\tcheck correctly stop the build on mismatch\n\n\tDeconfigs: beaglebone: fix boot issue\n\n\tUpdated/fixed packages: am33x-cm3, asterisk, bind, chrony,\n\tclamav, cmocka, collectd, connman, dhcp, dropwatch, faifa,\n\tgettext-tiny, gob2, haproxy, intel-microcode, ipsec-tools,\n\tjailhouse, jasper, jpeg-turbo, kodi, kvm-unit-tests, libftdi,\n\tlibftdi1, libnss, libressl, libstrophe, libsvgtiny, lvm2,\n\tlzma, mariadb, minicom, mosquitto, neardal, ninja, nodejs,\n\toniguruma, openvmtools, oracle-mysql, perl-gdgraph,\n\tperl-gdtextutil, php, postgresql, prosody, python-cchardet,\n\tpython-django, qt5wayland, rabbitmq, rauc, redis, rpcbind,\n\tsocat, spice, spice-protocol, tftpd, tiff, webkitgtk\n\n\tNew packages: libmspack\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12166: Compiling nodejs for SAMA5D3 always crash with illegal inst..\n\t#12171: Python-opencv needs config.py and config-3.7.py to run..\n\t#12211: host-nodejs 10.15.3 package fail to build\n\t#12316: tzdata fails to install with empty \"default local time\"\n\n2019.08.2, released November 9th, 2019\n\n\tImportant / security related fixes.\n\n\tToolchain: Also copy libssp.so for external toolchains if SSP\n\tto handle toolchains providing SSP support in libssp rather\n\tthan in the C library\n\n\tDownload: Also use the package download method for extra\n\tdownloads from the same site, so it does not get confused by\n\tURLs containing '+'\n\n\tFakeroot now works correctly under Microsoft Windows 10\n\tServices for Linux, which does not provide SYSV IPC support\n\n\tutils/test-pkg: ensure to exit with an error upon failure\n\n\tUpdated/fixed packages: asterisk, azmq, binutils,\n\tcups-filters, domoticz, dtc, duma, elf2flt, eudev, exfat,\n\texfat-utils, fakeroot, fdk-aac, file, freerdp, gcc, gd,\n\tghostscript, go, gpsd, grpc, gst1-plugins-base, gvfs, icu,\n\tintel-microcode, kvm-unit-tests, libfribidi, libnspr, libnss,\n\tlibopenssl, libpcap, libpciaccess, librsvg, libseccomp,\n\tlibsigrok, libtorrent, libunwind, libva, linux-tools,\n\tlua-sdl2, lxc, minizip, mjpegtools, mongoose, mono, nbd,\n\tnfs-utils, php, piglit, python, python-autobahn,\n\tpython-pysnmp-apps, python-tornado, python3, qemu, qt5base,\n\truby, safeclib, samba4, sdl_mixer, sox, sudo, suricata,\n\tsystemd, tcpdump, unscd, util-linux, vdr-plugin-vnsiserver,\n\tvtun, wireshark, xvisor, yaffs2utils\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11366: [2018.08] SysV IPC not available for fakeroot on WSL\n\t#12261: sudo versions prior to 1.8.28 are affected\n\n2019.08.1, released October 3rd, 2019\n\n\tImportant / security related fixes.\n\n\tDefconfigs: AArch64-efi: Fix grub configuration, Beaglebone:\n\tUse default console settings\n\n\tDependencies: Ensure host has JSON::PP perl module installed\n\tif webkitgtk/wpewebkit packages are enabled as it is needed\n\tduring their build process.\n\n\tToolchain: Generate check-headers program under BUILD_DIR\n\trather than /tmp to fix issues with distributions mounting\n\t/tmp noexec.\n\n\tUpdated/fixed packages: asterisk, augeas, axel, bind, bwm-ng,\n\tcups, cups-filters, docker-cli, docker-engine, docker-proxy,\n\te2fsprogs, eudev, exim, expat, gcc, go, haveged, ifplugd, joe,\n\tkf5-extra-cmake-modules, kf5-modemmanager-qt,\n\tkf5-networkmanager-qt, libcamera, libcurl, libgcrypt,\n\tlibglib2, libgpg-error, libnspr, libnss, libopenssl,\n\tlogrotate, luksmeta, mariadb, mbedtls, mongodb, mosquitto,\n\tncurses, nfs-utils, nghttp2, nodejs, openvmtools, php,\n\tprotobuf, putty, qemu, samba4, snort, swupdate,\n\tsystemd-bootchart, thttpd, uclibc, unzip, util-linux,\n\twireshark\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10806: Allow nfs-utils to use ipv6\n\t#11781: mariadb build error\n\t#12031: Build of cups-filters fails while linking, apparently due..\n\t#12141: eudev package is missing \"render\" and \"kvm\" groups\n\t#12241: Permission denied while running \"make\"\n\n2019.08, released September 1st, 2019\n\n\tVarious fixes.\n\n\tDefconfigs: Removed nanopc t4, nanopi m4 and neo4, pine64\n\trockpro64 and raxda rock pi4 as they rely on a ARM32 toolchain\n\ton the build host to build ATF. These defconfigs will be added\n\tback once a package providing such toolchain is\n\tavailable. Also dropped ts4800 defconfig as it does not build\n\twith GCC >= 8.x.\n\n\tUpdated/fixed packages: libxcb, php, python-numpy, webkitgtk,\n\twpewebkit, xfont_font-util\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12156:\tbuildroot-2019.08-rc3 does not build for Pi Zero W\n\n2019.08-rc3, released August 28th, 2019\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: clamav, dovecot, dovecot-pigeonhole,\n\tgcc, intel-microcode, libmicrohttpd, libmodplug, mpg123,\n\tnginx, openldap, python, qemu, samba4, squid, strace, vlc\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11686: fbdev_drv.so: undefined symbol: shadowUpdatePackedWeak,..\n\n2019.08-rc2, released August 20th, 2019\n\n\tFixes all over the tree.\n\n\tCompile fixes for a number of defconfigs.\n\n\tUpdated/fixed packages: apache, autofs, batctl, batman-adv,\n\tbind, collectd, cwiid, dahdi-linux, dahdi-tools, daq,\n\tdehydrated, dhcp, dtc, efl, enlightenment, evtest, giflib,\n\tgnutls, go, gst-plugins-bad, gst-plugins-base,\n\tgst1-plugins-bad, gst1-plugins-base, gst1-rtsp-server, gtkmm3,\n\tgupnp, harfbuzz, imagemagick, lftp, libbsd, libcpprestsdk,\n\tlibdnet, libfm, libgit2, libgtk2, libgtk3, libpri, librsvg,\n\tlibss7, libssh2, libwpe, lua-cqueues, metacity, micropython,\n\tmpd, mpg123, musl, mpv, openblas, openbox, opencv, pango,\n\tpcmanfm, piglit, pigpio, pinentry, postgresql, qemu, qt5base,\n\tqt5enginio, qt5multimedia, qt5serialbus, quagga, quazip,\n\trrdtool, rygel, samba4, stellarium, tcpreplay, ti-gfx, vte,\n\twampcc, wilink-bt-firmware, wireless-regdb, wpebackend-fdo,\n\txscreensaver\n\n\tRemoved packages: libamcodec, odroid-mali, odroid-scripts\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#9481:  NetworkManager/Ping unable to resolve domains\n\t#10566: php.mk is missing option --with-pgsql\n\t#10861: Package batman_adv Makefile is missing include header direct..\n\t#11641: linux kernel .config timestamp always out of date fixed with..\n\t#11671: russian locale ru_RU:145: LC_TIME: syntax error\n\t#11701: recuuring of usr and in bin shortcuts are created\n\t#11741: pigpio does not build host-pigpio\n\t#11876: automount using host mount/umount\n\t#11881: Build breaks with lftp package enabled and libexpat1-dev inst..\n\t#11921: dahdi fails to build\n\t#11936: libcpprestsdk should install to staging\n\t#11946: wilink-bt-firmware: moved from github to http://git.ti.com/ti-bt\n\t#11961: libpri build failure\n\t#12086: dhcp shared libraries not installed to target\n\t#12096: tcpreplay: build fails if libdumbnet-dev is installed in the..\n\t#12106: daq: build fails if libdumbnet-dev is installed in the host\n\t#12126: vc4 has neon as hard dependency\n\n2019.08-rc1, released August 9th, 2019\n\n\tFixes all over the tree and new features.\n\n\ttoolchain: ARC toolchain updated to 2019.03 (binutils 2.32.51\n\t/ GCC 8.3.1 / glibc 2.29), ARM AAarch64/ARM toolchains updated\n\tto 2019.03. Add GCC 9.1.0, remove GCC 4.9 and 6.5, add GDB\n\t8.3, remove GDB 7.12 and 8.0.1, default to GDB 8.2, GCC\n\t8.3.0. Musl updated to 1.1.23, bringing support for RISC-V 64.\n\n\tArchitectures: Internal toolchain support for C-SKY, support\n\tfor ARC HS48 v3.1 and HS38 with Quad MAC & FPU, support for\n\tARM A76,  A76/A55 big.LITTLE, emag, neoverse-N1, phecda and\n\ttsv110.\n\n\tFilesystems: Pass extra pax options to tar for binary\n\treproducibility. Build host-cpio for the --reproducible option\n\tsupport when BR2_REPRODUCIBLE is enabled. Genimage updated to\n\tversion 11, bringing GPT support.\n\n\tBr2-external: Add support for injecting additional options to\n\tthe list of preconfigured external toolchains and libjpeg and\n\topenssl providers using files under provides/. See the manual\n\tfor details.\n\n\tEnsure custom <pkg>_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS are\n\tpassed before the standard exclusions so they are not ignored\n\tby rsync when using override-srcdir.\n\n\tGnuconfig updated to 2019-05-28, adding C-SKY support.\n\n\ttest-pkg: Correct long option handling and clean output dir\n\tafter a successful build to save disk space.\n\n\tsupport/testing: Emulate a machine with 256MB RAM to fix\n\tissues with certain tests running out of memory, use\n\tvirtio-rng to provide needed entrophy.\n\n\tpkg-stats: support outputting in JSON format with --json for\n\teasier post processing. The classic HTML output is still\n\tavailable with --html. Parallelize access to\n\trelease-monitoring.org to speed up runtime.\n\n\tDrop non-conventional version prefix/suffix/separators for\n\tpackages for better compatibility with release-monitoring.org\n\n\tPackages:\n\tInit systems: Add basic openrc support and\n\t<pkg>_INSTALL_INIT_OPENRC variable in the infrastructure to\n\tinstall openrc service scripts if enabled.\n\n\tbusybox: Build each applet as a separate binary when SELinux\n\tis enabled for more finegrained policy control. Use daemon\n\tmode for mdev rather than legacy hotplug.\n\n\tlinux: Workaround -Werror related build failure on powerpc,\n\tby forcing CONFIG_PPC_DISABLE_WERROR on.\n\n\tDefconfigs: QEMU: use 'rootwait' kernel option to ensure root\n\tpartition is available before mounting.\n\n\tNew defconfigs: HiFive Unleashed, I.MX8MM EVK and Pico, Nanopi\n\tm4 and neo4, Nanopc t4, Olimex A33 olinuxino, Pine64\n\tRockpro64, PowerPC mac99, QEMU C-SKY 610/807/810/860 virt,\n\tRaspberry Pi 4, Raxda rock pi4, Solidrun Clearfog GT-8K\n\n\tRemoved defconfigs: Odroid C2\n\n\tNew packages: bitcoin, c-capnproto, fatcat, ifmetric, jack1,\n\tjailhouse, libubootenv, luasyslog, mender-grubenv,\n\tmurata-cyw-fw, openrc, piglit, python-colorama, python-cycler,\n\tpython-hiredis, python-ifaddr, python-inflection,\n\tpython-iptables, python-matplotlib, python-periphery,\n\tpython-pycairo, python-redis, python-termcolor,\n\tpython-tinyrpc, python-txdbus, skeleton-init-openrc, spdlog,\n\tsshguard, stellarium, zziplib\n\n\tRemoved packages: xapp_mkfontdir\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11096: Upgrade from glibc 2.26 to 2.27 broke some locales...\n\t#11271: utils/check-package fails with exception depending on..\n\t#11991: [numpy] segfault when compiling for RPi3 64bits\n\t#12016: Grub fails to boot bzImage after upgrade to 2019.05\n\t#12046: Can’t login as root user after upgrading to buildroot..\n\t#12051: package/dhcp installs libtool wrapper scripts on tar...\n\t#12076: Patchelf can link against an incompatible libc++ ver...\n\n2019.05.3, Released October 3rd, 2019\n\n\tImportant / security related fixes.\n\n\tDefconfigs: AArch64-efi: Fix grub configuration, Beaglebone:\n\tUse default console settings\n\n\tDependencies: Ensure host has JSON::PP perl module installed\n\tif webkitgtk/wpewebkit packages are enabled as it is needed\n\tduring their build process.\n\n\tToolchain: Generate check-headers program under BUILD_DIR\n\trather than /tmp to fix issues with distributions mounting\n\t/tmp noexec.\n\n\tUpdated/fixed packages: asterisk, augeas, bind, bwm-ng, cups,\n\tcups-filters, docker-cli, docker-engine, docker-proxy,\n\te2fsprogs, eudev, exim, expat, gcc, go, haveged, ifplugd,\n\tiptables, joe, kf5-extra-cmake-modules, kf5-modemmanager-qt,\n\tkf5-networkmanager-qtlibcamera, libcurl, libgcrypt,\n\tlibgpg-error, libnftl, libnspr, libnss, libopenssl,\n\tlibtorrent-rasterbar, luksmeta, mariadb, mbedtls, mongodb,\n\tmosquitto, ncurses, nfs-utils, nghttp2, nodejs, openvmtools,\n\tphp, protobuf, putty, qemu, samba4, swupdate,\n\tsystemd-bootchart, thttpd, uclibc, unzip, util-linux,\n\twireshark\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10806: Allow nfs-utils to use ipv6\n\t#11781: mariadb build error\n\t#12031: Build of cups-filters fails while linking, apparently due..\n\t#12141: eudev package is missing \"render\" and \"kvm\" groups\n\t#12241: Permission denied while running \"make\"\n\n2019.05.2, Released September 3rd, 2019\n\n\tImportant / security related fixes.\n\n\tFilesystems: Pass extra pax options to tar for binary\n\treproducibility.\n\n\tUpdated/fixed packages: apache, arm-trusted-firmware,\n\tasterisk, atk, autofs, batctl, batman-adv, berkeleydb,\n\tbusybox, bzip2, clamav, cloop, cmake, collectd, connman-gtk,\n\tdahdi-linux, dahdi-tools, daq, dehydrated, dhcp, dovecot,\n\tdovecot-pigeonhole,, elfutils, evtest, exim, expect, giflib,\n\tgit, glib-networking, glibc, gnupg2, gnutls, go,\n\tgst1-rtsp-server, gtkperf, gupnp-tools, gvfs, imagemagick,\n\timx-uuc, intel-microcode, json-glib, lftp, libbsd, libcurl,\n\tlibgit2, libgtk2, libgtk3, libmodplug, libnss, libpri,\n\tlibshout, libss7, libssh2, libvips, libxcb, linux-headers,\n\tmdadm, mesa3d, metacity, mpg123, mosquitto, musl, nginx,\n\toniguruma, openblas, opencv3, openjdk, openjdk-bin, openldap,\n\topenvmtools, pcmanfm, php, pigpio, postgresql, prboom,\n\tproftpd, proj, python, python-django, python-idna,\n\tpython-numpy, python-urllib3, python3, qemu, qt5, qt5base,\n\tqt5enginio, quagga, rygel, squid, subversion, tcpreplay,\n\tunzip, vlc, vte, webkitgtk, wireless-regdb, xen,\n\txfont_font-util, xlib_libICE, xlib_libXfont, xlib_libXfont2,\n\tyad, zeromq\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11741: pigpio does not build host-pigpio\n\t#11876: automount using host mount/umount\n\t#11881: Build breaks with lftp package enabled and libexpat1-dev inst..\n\t#11921: dahdi fails to build\n\t#11961: libpri build failure\n\t#12086: (dhcpd-missing-libs) - dhcp shared libraries not installed to..\n\t#12096: tcpreplay: build fails if libdumbnet-dev is installed in the..\n\t#12106: daq: build fails if libdumbnet-dev is installed in the host\n\t#12126: vc4 has neon as hard dependency\n\n2019.05.1, Released July 7th, 2019\n\n\tImportant / security related fixes.\n\n\tarch: x86: Fix typo breaking 'core-avx2' variant\n\n\tlinux: Workaround -Werror related build failure on powerpc,\n\tby forcing CONFIG_PPC_DISABLE_WERROR on.\n\n\tsupport/testing: Emulate a machine with 256MB RAM to fix\n\tissues with certain tests running out of memory.\n\n\ttest-pkg: Correct long option handling and clean output dir\n\tafter a successful build to save disk space.\n\n\tDefconfigs: QEMU: use 'rootwait' kernel option to ensure root\n\tpartition is available before mounting.\n\n\tUpdated/fixed packages: barebox, busybox, bzip2, davfs2,\n\tdialog, docker-cli, docker-engine, exim, expat, faad2,\n\thaveged, irssi, libcamera, libcdaudio, libcurl, libglib2,\n\tlibressl, libsecret, lmbench, meson, monit, php, postgresql,\n\tpsplash, python-django, qt5base, tvheadend, webkitgtk,\n\txserver_xorg-server, znc\n\n2019.05, released June 2nd, 2019\n\n\tVarious fixes.\n\n\tToolchain: Ensure pre-built Andes toolchains can only be\n\tselected when x86 32bit support is available on the host.\n\tDisallow PowerPC SPE ABI for GCC >= 8.x, as it is no longer\n\tsupported.\n\n\tInfra: pkg-config: Use a dedicated timestamp file rather than\n\t.config as that gets touched by linux-4.19+, causing repeated\n\tbuilds.\n\n\tAdd C-SKY support to our config.sub (gnuconfig)\n\n\tUpdated/fixed packages: dosfstools, botan, brotli, dropbear,\n\tflare-engine, gst1-plugins-bad, libhtp, libnss, libopenssl,\n\tlinuxptp, matchbox-panel, mender, mutt, netsurf,\n\tnetwork-manager, opencv3, openjdk, openmpi, php,\n\tpython-cython, qt5multimedia, qtwayland, qt5webkit-examples,\n\tsupertux, suricata, tpm2-totp, v4l2loopback, wireshark,\n\twpewebkit\n\n2019.05-rc3, released May 25th, 2019\n\n\tFixes all over the tree.\n\n\tcheck-bin-arch: Ignore /usr/lib/grub, similar to how /lib/grub\n\tis ignored.\n\n\tcheck-package: Warn about utf-8 characters in .mk files\n\n\tLinux: Default to 5.1.x series\n\n\tUpdated/fixed packages: assimp, atop, chocolate-doom, cjson,\n\tddrescue, dhcp, ffmpeg, gerbera, glibmm, gpsd, gst-ffmpeg,\n\tintel-microcode, jasper, keepalived, kismet, libcpprestsdk,\n\tlibcurl, libssh2, libupnp18, luarocks, mono-gtksharp3, opus,\n\tpostgresql, pcsc-lite, python, tslib, webkitgtk,\n\twpebackend-fdo, wpewebkit\n\n2019.05-rc2, released May 15th, 2019\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: bind, bullet, ca-certificates,\n\tcollectd, cracklib, dhcp, gdb, libinput, libtorrent-rasterbar,\n\tlinknx, lynx, mono, netsurf, optee-os, postgresql, qt5enginio,\n\tqt5multimedia, rpm, samba4, sqlite, strace, uclibc, woff2\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11841: grub-efi.cfg not used when building EFI disk image\n\n2019.05-rc1, Released May 8th, 2019\n\n\tFixes all over the tree and new features.\n\n\tArchitecture: Andes 32-bit (nds32) support added.\n\n\tOnly build host-lzip / host-xz when really needed by packages,\n\tnot just when not available on the build host.\n\n\tToolchain: Glibc bumped to 2.29, musl bumped to 1.1.22,\n\tbinutils 2.32 added, 2.28/2.29 removed, default changed to\n\t2.31.1.\n\n\tfs: Set FAKEROOTDONTTRYCHOWN environment variable to not\n\tforward {f,l,}chown calls to libc when running under fakeroot\n\tto fix issues when building in restricted environments\n\t(E.G. user namespace with bubblewrap).\n\n\tLinux: Also build default make target to ensure extra files\n\tlike the gdb scripts enabled by CONFIG_GDB_SCRIPTS are also\n\tbuilt. Notice: This may mean that extra host utilities like\n\tuboot-mkimage are needed.\n\n\tInfrastructure: show-info and <pkg>-show-info make targets\n\tadded to output package metadata in JSON format for external\n\tuse.\n\n\tpkg-generic: Only tweak .la files needing it to ensure they\n\tare not included in subsequent package file lists.\n\n\ttest-pkg: Generate a basic package config if none is\n\tspecified.\n\n\tGettext-tiny package added as an lightweight replacement for\n\tGNU gettext for situations where NLS support is not needed.\n\n\tNew defconfigs: Andes AE3XX, Freescale imx8mpico / imx8qxpmek\n\t/ T2080 QDS RDB, Licheepi zero, Orangepi R1\n\n\tRemoved defconfigs: Olimx A20 Olinuxino Lime legacy\n\n\tNew packages: bats-core, bayer2rgb-neon, brickd, cog, dacapo,\n\tenet, gettext-tiny, gli, gst1-plugins-bayer2rgb-neon,\n\timx-sc-firmware, intel-mediadriver, intel-mediasdk, libcamera,\n\tlibhtp, libp11, libwpe, lua-binaryheap, lua-gd, lua-lunitx,\n\tmender-artifact, most, oniguruma, openjdk, openjdk-bin,\n\topensbi, optee-benchmark, optee-client, optee-examples,\n\toptee-os, optee-test, paho-mqtt-cpp, python-aioblescan,\n\tpython-aioconsole, python-aiohttp-cors, python-aiomonitor,\n\tpython-backcall, python-jedi, python-parso, python-pyjwt,\n\tpython-terminaltables, suricata, tpm2-totp, uftp,\n\twpebackend-fdo, wpewebkit\n\n\tRemoved packages: libump, lunit, sunxi-mali\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11716: Typo on website, saying latest release is 2018.2.11\n\t#11756: package/syslinux: MBR's don't fit because of binutils..\n\t#11761: Building custom kernel 5.1-rc3 or later breaks on objtool\n\t#11816: Only selected coreutils binaries are installed\n\n2019.02.11, released April 9th, 2020\n\n\tImportant / security related fixes.\n\n\tcore: Fix compatibility with make 4.3+. Also fixup /lib\n\treferences in libtool .la files, similar to how it is done for\n\t/usr/*.\n\n\ttoolchain: Fix kernel headers validation check for external\n\ttoolchains.\n\n\tUpdated/fixed packages: barebox-aux, bluez5_utils, busybox,\n\tcivetweb, collectd, ffmpeg, gcc, gnutls, gvfs, haproxy,\n\thiredis, kmscube, libical, libopenssl, libsndfile,\n\tlinux-tools, ntp, php, pure-ftpd, screen, sysdig, tor,\n\tutil-linux, vala, vlc, xserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12746: \"sysdig\" package description points to http://sysdig.org, ..\n\n2019.02.10, released March 16th, 2020\n\n\tImportant / security related fixes.\n\n\tCore: Ensure package-file-lists data is correct after\n\tincremental builds as well.\n\n\tFix a race condition related to creating the output/staging\n\tsymlink on systems with coreutils < 8.27.\n\n\tBr2-external: Fix compatibility with make 4.3+\n\n\tUtil-linux: Ensure that hwclock is built without GPLv3\n\tcode. Notice that builds with hwclock has contained\n\tGPLv3-licensed code since util-linux 2.30 (Buildroot 2017.08+)\n\n\tUpdated/fixed packages: armadillo, at, binutils, blktrace,\n\tbootstrap, busybox, cairo, cups, czmq, dnsmasq,\n\tdocker-containerd, dovecot, dovecot-pigeonhole, e2fsprogs,\n\teudev, exim, exiv2, fbgrab, grep, gst1-validate, guile,\n\timagemagick, jhead, kvm-unit-tests, lapack, libcgroup,\n\tlibftdi1, libjpeg, libsigrok, libsndfile, libssh2, libsvgtiny,\n\tlibvncserver, libvorbis, libxml2, libxslt, linux, lz4,\n\tmariadb, mbedtls, meson, mfgtools, mongoose, ncurses, ntfs-3g,\n\topencv3, openjpeg, openswan, openvmtools, patch, php,\n\tpostgresql, pppd, proftpd, pure-ftpd, python-django,\n\tpython-pyqt5, python3, qemu, qt5base, qt5webengine, qwt,\n\trdesktop, ruby, runc, samba4, shellinabox, smartmontools,\n\tsqlcipher, squid, swupdate, sysklogd, taglib, thrift,\n\tti-cgt-pru, uboot, util-linux, vorbis-tools, webkitgtk,\n\twireshark, xen, xserver_xorg-server, zeromq, zsh\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11996: opencv3 SIGILL on Cortex-A5 with VFPv4-D16\n\t#12331: meson issue\n\t#12461: libglib2 build files with deep directory structure\n\t#12606: fbgrab location has changed\n\n2019.02.9, released January 12th, 2020\n\n\tImportant / security related fixes.\n\n\tpkg-python infrastructure: Ensure correct compiler and linker\n\tflags are used for compiled code\n\n\tutils/scanpypi: Remind users to update DEVELOPERS\n\n\tUpdated/fixed packages: busybox, cc-tool, cpio, cups, dante,\n\tdillo, docker-cli, docker-containerd, docker-engine, easy-rsa,\n\tecryptfs-utils, efl, git, glibc, gnupg2, gst1-plugins-bad,\n\tkf5-kcoreaddons, libarchive, libgit2, libkrb5, librsvg,\n\tlibssh, libtomcrypt, libuio, lirc-tools, lvm2,\n\tmatchbox-desktop, nodejs, ntp, opencv3, openpowerlink,\n\tpython-django, python-ecdsa, python-pyasn-modules,\n\tpython-pyqt5, python-subprocess32, python3, qpdf, runc, rygel,\n\tsamba4, sdl2, wavpack, xserver_xorg-server, zip\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12121: PyQt5.QtSerialPort and other modules not being built\n\n2019.02.8, released December 7th, 2019\n\n\tImportant / security related fixes.\n\n\tInfrastructure: Make HOST_<pkg>_DL_OPTS inherit from\n\t<pkg>_DL_OPTS by default, just like it is done for a number of\n\tother package variables\n\n\tAdd <pkg>_KEEP_PY_FILES to exclude specific python .py files\n\tfrom the removal done by BR2_PACKAGE_PYTHON{,3}_PYC_ONLY for\n\tthe (rare) case where the .py files are needed at runtime\n\trather than .pyc.\n\n\tFix <pkg>-reconfigure handling for packages using the kconfig\n\tinfrastructure.\n\n\tToolchain: ensure external toolchain kernel headers version\n\tcheck correctly stop the build on mismatch\n\n\tDeconfigs: beaglebone: fix boot issue\n\n\tUpdated/fixed packages: am33x-cm3, asterisk, bind, chrony,\n\tclamav, collectd, connman, faifa, gob2, haproxy,\n\tintel-microcode, ipsec-tools, jasper, jpeg-turbo, kodi,\n\tkvm-unit-tests, libftdi, libftdi1, libnss, libstrophe,\n\tlibsvgtiny, lvm2, lzma, mariadb, minicom, neardal, nodejs,\n\topencv3, openvmtools, oracle-mysql, perl-gdgraph,\n\tperl-gdtextutil, php, postgresql, prosody, python-django,\n\trabbitmq-c, rauc, redis, rpcbind, socat, spice,\n\tspice-protocol, tftpd, tiff, webkitgtk\n\n\tNew packages: libmspack\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#12166: Compiling nodejs for SAMA5D3 always crash with illegal inst..\n\t#12171: Python-opencv needs config.py and config-3.7.py to run..\n\t#12211: host-nodejs 10.15.3 package fail to build\n\t#12316: tzdata fails to install with empty \"default local time\"\n\n2019.02.7, Released November 10th, 2019\n\n\tImportant / security related fixes.\n\n\tsupport/testing: use a kernel with HW_RANDOM_VIRTIO to work\n\taround issues with lack of entrophy\n\n\tToolchain: Also copy libssp.so for external toolchains if SSP\n\tis enabled to handle toolchains providing SSP support in\n\tlibssp rather than in the C library\n\n\tDownload: Also use the package download method for extra\n\tdownloads from the same site, so it does not get confused by\n\tURLs containing '+'\n\n\tFakeroot now works correctly under Microsoft Windows 10\n\tServices for Linux, which does not provide SYSV IPC support\n\n\tutils/test-pkg: ensure to exit with an error upon failure\n\n\tUpdated/fixed packages: asterisk, azmq, cups-filters,\n\tdomoticz, duma, elf2flt, eudev, exfat, exfat-utils, fakeroot,\n\tfile, freerdp, gd, ghostscript, go, gvfs, intel-microcode,\n\tkvm-unit-tests, libarchive, libnspr, libnss, libopenssl,\n\tlibpcap, libpciaccess, librsvg, libseccomp, libsigrok,\n\tlibtorrent, libunwind, linux-tools, lua-sdl2, lxc, minizip,\n\tmjpegtools, mongoose, php, python, python-pysnmp-apps,\n\tpython3, qemu, qt5base, ruby, safeclib, samba4, sdl_mixer,\n\tsox, sudo, systemd, tcpdump, unscd, util-lkinux, vtun, xvisor,\n\tyaffs2utils\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11366: [2018.08] SysV IPC not available for fakeroot on WSL\n\t#12261: sudo versions prior to 1.8.28 are affected\n\n2019.02.6, Released October 3rd, 2019\n\n\tImportant / security related fixes.\n\n\tDefconfigs: AArch64-efi: Fix grub configuration, Beaglebone:\n\tUse default console settings\n\n\tDependencies: Ensure host has JSON::PP perl module installed\n\tif webkitgtk/wpewebkit packages are enabled as it is needed\n\tduring their build process.\n\n\tToolchain: Generate check-headers program under BUILD_DIR\n\trather than /tmp to fix issues with distributions mounting\n\t/tmp noexec.\n\n\tUpdated/fixed packages: asterisk, augeas, bind, bwm-ng, cups,\n\tcups-filters, docker-cli, docker-engine, docker-proxy,\n\tdropbear, e2fsprogs, eudev, exim, expat, gcc, go, ifplugd,\n\thaveged, iptables, joe, kf5-extra-cmake-modules,\n\tkf5-modemmanager-qt, kf5-networkmanager-qt, libcurl,\n\tlibgcrypt, libgpg-error, libnftl, libnspr, libnss, libopenssl,\n\tluksmeta, mariadb, mbedtls, mongodb, mosquitto, ncurses,\n\tnfs-utils, nghttp2, nodejs, openvmtools, php, protobuf, putty,\n\tqemu, qt5base, samba4, swupdate, systemd-bootchart, thttpd,\n\tuclibc, unzip, util-linux, wireshark\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10806: Allow nfs-utils to use ipv6\n\t#11781: mariadb build error\n\t#12031: Build of cups-filters fails while linking, apparently due..\n\t#12141: eudev package is missing \"render\" and \"kvm\" groups\n\t#12181: dropbear: norootlogin (-w) no longer works when PAM is enabled\n\t#12241: Permission denied while running \"make\"\n\n2019.02.5, Released September 2nd, 2019\n\n\tImportant / security related fixes.\n\n\tFilesystems: Pass extra pax options to tar for binary\n\treproducibility.\n\n\tUpdated/fixed packages: apache, arm-trusted-firmware,\n\tasterisk, atk, autofs, batctl, batman-adv, berkeleydb, brotli,\n\tbusybox, bzip2, clamav, cloop, cmake, collectd, connman-gtk,\n\tcryptopp, dahdi-linux, dahdi-tools, daq, dehydrated, dovecot,\n\tdovecot-pigeonhole,, elfutils, evtest, exim, expect, giflib,\n\tgit, glib-networking, glibc, gnupg2, gnutls, go,\n\tgst1-rtsp-server, gtkperf, gupnp-tools, gvfs, imagemagick,\n\timx-uuc, intel-microcode, json-glib, lftp, libbsd, libcurl,\n\tlibgit2, libgtk3, libmodplug, libnss, libpri, libshout,\n\tlibss7, libssh2, libvips, libxcb, linux-headers, mdadm,\n\tmesa3d, metacity, mpg123, mosquitto, musl, nginx, openblas,\n\topencv3, openldap, openvmtools, pcmanfm, php, pigpio,\n\tpostgresql, prboom, proftpd, proj, python, python-django,\n\tpython-idna, python-numpy, python-urllib3, python3, qemu, qt5,\n\tqt5base, qt5enginio, quagga, rygel, squid, subversion,\n\ttcpreplay, unzip, vlc, vte, webkitgtk, weston, wireless-regdb,\n\txen, xfont_font-util, xlib_libICE, xlib_libXfont,\n\txlib_libXfont2, yad, zeromq\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11741: pigpio does not build host-pigpio\n\t#11876: automount using host mount/umount\n\t#11881: Build breaks with lftp package enabled and libexpat1-dev inst..\n\t#11921: dahdi fails to build\n\t#11961: libpri build failure\n\t#12096: tcpreplay: build fails if libdumbnet-dev is installed in the..\n\t#12106: daq: build fails if libdumbnet-dev is installed in the host\n\t#12126: vc4 has neon as hard dependency\n\n2019.02.4, Released July 10th, 2019\n\n\tImportant / security related fixes.\n\n\tarch: x86: Fix typo breaking 'core-avx2' variant, add Westmere\n\tvariant.\n\n\tlinux: Workaround -Werror related build failure on powerpc,\n\tby forcing CONFIG_PPC_DISABLE_WERROR on.\n\n\tsupport/testing: Emulate a machine with 256MB RAM to fix\n\tissues with certain tests running out of memory.\n\n\ttest-pkg: Correct long option handling and clean output dir\n\tafter a successful build to save disk space.\n\n\tEnsure custom <pkg>_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS are\n\tpassed before the standard exclusions so they are not ignored\n\tby rsync when using override-srcdir.\n\n\tDefconfigs: QEMU: use 'rootwait' kernel option to ensure root\n\tpartition is available before mounting.\n\n\tUpdated/fixed packages: barebox, bzip2, davfs2, dbus, dialog,\n\tdocker-cli, docker-engine, expat, faad2, ffmpeg, freeswitch,\n\tgerbera, haveged, irssi, libcdadio, libgit2, libglib2,\n\tlibsecret, libvncserver, lmbench, logrotate, mariadb, meson,\n\tmongoose, monit, mpd, openblas, php, postgresql, psplash,\n\tpython, python-django, python3, qt5base, samba4, taglib,\n\ttvheadend, vlc, webkitgtk, xserver_xorg-server, znc\n\n2019.02.3, Released June 7th, 2019\n\n\tImportant / security related fixes.\n\n\tInfra: pkg-config: Use a dedicated timestamp file rather than\n\t.config as that gets touched by linux-4.19+, causing repeated\n\tbuilds.\n\n\tcheck-bin-arch: Also ignore /usr/lib/grub to support merged\n\t/usr setups, similar to how /lib/grub is ignored.\n\n\tgnuconfig/config.sub: Add C-SKY architecture support.\n\n\tUpdated/fixed packages: assimp, atftp, atop, botan, busybox,\n\tca-certificates, chocolate-doom, cjson, coreutils, cracklib,\n\tddrescue, dhcp, docker-cli, docker-containerd, docker-engine,\n\tdosfstools, dovecot, dovecot-pigeonhole, dropbear, exim,\n\tffmpeg, flare-engine, gcc, gdb, gerbera, glibmm, go, gpsd,\n\tgst-ffmpeg, gst1-plugins-bad, gst1-plugins-base, imagemagick,\n\tintel-microcode, jasper, kf5-kcoreaddons, kismet, libcurl,\n\tlibglib2, libnss, libopenssl, libsigrok, libssh2, libupnp18,\n\tlinuxptp, luajit, lynx, matchbox-panel, mender,\n\tnetcat-openbsd, netsurf, nfs-utils, opus, orc, owfs,\n\tpcsc-lite, php, popt, postgresql, python, python-cython,\n\tpython-django, python-ply, qt5enginio, rpm, runc, samba4,\n\tsqlite, subversion, supertux, systemd, tslib, uclibc,\n\tv4l2loopback, webkitgtk, woff2\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11816: Only selected coreutils binaries are installed\n\t#11841: grub-efi.cfg not used when building EFI disk image\n\t#11911: systemd v240 memory leak in systemd-journald\n\n2019.02.2, Released April 29th, 2019\n\n\tImportant / security related fixes.\n\n\tOnly build host-lzip / host-xz when really needed by packages,\n\tnot just when not available on the build host.\n\n\tfs: Set FAKEROOTDONTTRYCHOWN environment variable to not\n\tforward {f,l,}chown calls to libc when running under fakeroot\n\tto fix issues when building in restricted environments\n\t(E.G. user namespace with bubblewrap).\n\n\tLinux: Also build default make target to ensure extra files\n\tlike the gdb scripts enabled by CONFIG_GDB_SCRIPTS are also\n\tbuilt. Notice: This may mean that extra host utilities like\n\tuboot-mkimage are needed.\n\n\tDefconfigs: ASUS tinker and Amarula vyasa rk3822: Support\n\tlarger kernel images, Atmel SAM5D27, SAM5D2,3,4 xplained:\n\tIncrease rootfs size to fit utilities, Raspberry Pi 64bit:\n\tInclude overlays in sdcard image\n\n\tUpdated/fixed packages: android-tools, apache, bind, binutils,\n\tbusybox, civetweb, cjson, copas, davfs2, docker-cli,\n\tdocker-containerd, docker-engine, dovecot, dovecot-pigeonhole,\n\tfreerdp, gerbera, ghostscript, git, gnutls, go, gst-omx,\n\tgst1-plugins-base, gst1-plugins-ugly, haproxy, hostapd,\n\tipsec-tools, libfreefare, libfuse, libkrb5, libpng, libxml2,\n\tlibxslt, linknx, linux, linux-firmware, linux-tools, live555,\n\tlldp, lrzsz, lynx, madplay, make, minicom, mongodb, msmtp,\n\tmusl, mutt, neon, netsnmp, numactl, opus, perl, php,\n\tpostgresql, pure-ftpd, python-urllib3, python3, qt5base,\n\trapidxml, rpm, rsyslog, ruby, runc, samba4, sane-backends,\n\tsoftether, stunnel, sysklogd, syslinux, syslog-ng,\n\tsystemd-bootchart, thttpd, thrift, tiff, tor, tpm2-tools,\n\ttpm2-tss, webkitgtk, yaffs2utils, wget, wpa_supplicant, wsapi,\n\txapp_xfd, xapp_xload, xlib_libXpm, xserver_xorg-server, xz,\n\tznc\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11756: package/syslinux: MBR's don't fit because of binutils..\n\t#11761: Building custom kernel 5.1-rc3 or later breaks on objtool\n\n2019.02.1, Released March 29th, 2019\n\n\tImportant / security related fixes.\n\n\tpkg-generic: Only tweak .la files needing it to ensure they\n\tare not included in subsequent package file lists.\n\n\ttest-pkg: Generate a basic package config if none is\n\tspecified.\n\n\tUpdated/fixed packages: asterisk, avahi, bash, beecrypt,\n\tbinutils, busybox, clamav, cups, efl, eigen, fetchmail, file,\n\tflashrom, fltk, gerbera, git, glibc, gnuradio, go,\n\tgst-plugins-bad, intel-gmmlib, jq, kexec, kf5-modemmanager-qt,\n\tleveldb, libcurl, libdrm, libftdi1, libglib2, libiio, libpcap,\n\tlibseccomp, libssh2, log4cplus, lvm2, mariadb, mender,\n\tmongodb, mosquitto, musl, nodejs, ntp, openjpeg, owfs, php,\n\tpure-ftpd, putty, python-aiojobs, qt5webkit, rdesktop, samba4,\n\tsunxi-tools, supertux, swupdate, tpm2-abrmd, tpm2-tss,\n\twavemon, wireshark, vsftpd, xapp_xdm, xen,\n\txdriver_xf86-video-fbdev, xlib_libXdmcp\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11716: Typo on website, saying latest release is 2018.2.11\n\n2019.02, released March 4th, 2019\n\n\tMinor fixes.\n\n\tLibressl support added for Qt 5.6 as a replacement for\n\topenssl, as 5.6 is not compatible with openssl 1.1.x.\n\n\tUpdated/fixed packages: cutelyst, devmem2, gqrx,\n\tgst-plugins-bad, libraw, libsoxr, qt5base, runc, systemd, tor\n\n2019.02-rc3, released March 1st, 2019\n\n\tFixes all over the tree.\n\n\tOpenssl support dropped from Qt 5.6, as it isn't compatible\n\twith openssl 1.1.x.\n\n\tToolchain: GCC 8.x updated to 8.3.0, fixing a number of\n\tissues.\n\n\tDependencies: Require CMake 3.8 or newer to fix compilation\n\tissue with certain packages. If not available, host-cmake will\n\tinstead be built.\n\n\tPrintvars: Fix performance regression since 2018.02\n\n\tScanypi: Correctly handle underscores in python package names.\n\n\tUpdated/fixed packages: botan, clamav, cryptopp, i2pd,\n\tibrcommon, iproute2, libcpprestsdk, libssh, lua-curl,\n\tluaexpat, qt5base, runc, stress-ng, syslinux, systemd,\n\tupmpdcli, zbar\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#9966: util-linux-2.30/.stamp_built' failed\n\t#11696: possible typo in board/pc/post-build.sh\n\n2019.02-rc2, released February 23th, 2019\n\n\tFixes all over the tree.\n\n\tRemoved zynq_zybo defconfig, as it hasn't seen any update\n\tsince it was added in 2016, and uses a U-Boot version not\n\tcompatible with openssl-1.1.x.\n\n\tLinux: Ignore user supplied downloadable hashes, as no hash\n\tchecksums are available for those.\n\n\tUpdated/fixed packages: bind, cryptopp, docker-containerd,\n\tdtc, efivar, gdb, imagemagick, ipmiutil, libcpprestsdk,\n\tlibcurl, libgpiod, libid3tag, libv4l, log4cplus, luvi,\n\tmadplay, mender, mosquitto, poco, postgresql, proftpd,\n\tpulseaudio, python-django, qemu, qt5base, qwt, rabbitmq-c,\n\treaver, safeclip, stress-ng, swupdate, syslog-ng, systemd,\n\ttor, unzip, xenomai\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11501: compile sdl2 with enable wayland\n\t#11681: .. unable to initialize decompress status for section..\n\n2019.02-rc1, released February 13th, 2019\n\n\tFixes all over the tree and new features.\n\n\n\tDependencies:\n\n\tRequire Python >= 2.7 as it is needed for E.G. building\n\tlibglib2.\n\n\tEnsure GNU gzip is used for reproducible tarballs (instead of\n\tpigz)\n\n\n\tInfrastucture:\n\n\tEnsure the PLATFORM and OS environment variables are not set,\n\tas they cause build issues for some packages.\n\n\tThe package list infrastructure now correctly handles packages\n\tinstalling files with old mtime.\n\n\tAdd a config option to force all optional host utilities to be\n\tbuilt, even if suitable versions are available on the build\n\tmachine.\n\n\tgraph-build-time: Also show time spent downloading\n\n\tDownload: fixes for SSH/SCP support\n\n\tEnsure user provided permissions override permissions from\n\tpackages.\n\n\tSDK: Fix handling of relative symlinks (targets starting with\n\t'.' or '..')\n\n\tBR2_SYSTEM_DEFAULT_PATH setting to customize the default path\n\tfor processes.\n\n\tThe custom skeleton logic will now populate the needed /bin,\n\t/lib, /sbin directories/symlinks if not present. Merged /usr\n\tcan now be used with a custom skeleton.\n\n\tRootfs overlays can now override symbolic links from\n\tpackages. This was disabled to ensure the correct symbolic\n\tlinks are present when merged /usr is used. Instead validate\n\tthat the rootfs overlays do not include invalid /bin, /sbin\n\tand /lib entries.\n\n\tThe waf infrastructure now support the <pkg>_SUBDIR variable,\n\tsimilar to the other package types.\n\n\tcmake: Also set CMAKE_SYSTEM_VERSION in toolchainfile.cmake\n\n\tVarious improvements to the meson infrastructure.\n\n\tLuarocks: A Buildroot addon has been added to automate\n\tcreating a Buildroot package from luarocks, similar to\n\tscancpan and scanpypi.\n\n\tscanpypi: protect against zip-slip vulnerability in zip/tar\n\thandling\n\n\tcheck-package: fix Python 3 support\n\n\tget-developers: Fix behaviour when called from elsewhere than\n\tthe toplevel directory.\n\n\tpkg-stats: Show latest upstream version of each package, based\n\ton data from release-monitoring.org\n\n\tkconfig: Fix for make linux-menuconfig / uboot-menuconfig from\n\ta clean tree when ccache is enabled.\n\n\tDefault to sha256 password encoding, drop md5 support.\n\n\n\tArchitecture:\n\n\tSupport for RISC-V 32bit architecture, ARM A55, 75 and Saphira\n\tvariants, MIPS support for mips32r3, mips64r3 and Marvell\n\tOcteon II/III variants.\n\n\n\tToolchain:\n\n\tARC toolchain 2018.09, ARM 8.2-2018.11, Codescape IMG/MTI MIPS\n\t2018.09-02, MUSL 1.1.21, GCC 6.5.0 / 7.4.0, GDB 8.2.1\n\n\n\tPackages:\n\n\topenssl: Bump to 1.1.1x series, bringing TLSv1.3 support and\n\tlong term support.\n\n\tfftw: Split into fftw-{single,double,long-double,quad}\n\tpackages for the different data precision options.\n\n\tlibcurl: Now has explicit TLS backend selection options.\n\n\tlinux: Support building device tree blobs with the -@ option\n\tfor device tree overlays.\n\n\tweston: The weston-imx i.MX variant is now used when\n\timx-gpu-viv is enabled\n\n\tpkgconf: Update to 1.5.3, which brings support for\n\t--define-prefix (used by GStreamer)\n\n\tAdd host-python3-setuptools package to handle host python\n\tpackages needing python3 with setuptools support.\n\n\n\tNew defconfigs: Aarch64 EFI, Orangepi one plus, Orangepi lite\n\t2, QEMU RISC-V 32bit virt, Rock64\n\n\n\tNew packages: brcm-patchram-plus, clinfo, cunit, docker-cli,\n\terlang-p1-eimp, exempi, fail2ban, fftw-double,\n\tfftw-double-long, fftw-quad, fftw-single, gerbera, grpc,\n\tgst1-shark, intel-gmmlib, iwd, kf5-kcoreaddons, libeastl,\n\tlibpackagekite, libtorrent-rasterbar, lua-std-debug,\n\tlua-std-normalize, mini-snmpd, netsurf, pamtester, pcm-tools,\n\tpython-aiodns, python-aiohttp, python-aiohttp-jinja2,\n\tpython-aiohttp-remotes, python-aiohttp-security,\n\tpython-aiohttp-session, python-aiohttpd-sse, python-aiojobs,\n\tpython-cchardet, python-pycares, python-sentry-sdk,\n\tpython-wtforms, python3-setuptools, rcw, rtc-tools, shim,\n\tutp_com, vmtouch, websocketpp\n\n\tRemoved packages: fftw, lua 5.2.x, luacrypto, perl-time-hires,\n\tpython-pyqt, qt, qtuio, tn5250\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10851: Patch to handle numpad Enter key properly\n\t#11066: x11r7 X11 S40xorg leads to a black screen on QEMU x86..\n\t#11126: Bash Shell Programming using Buildroot\n\t#11426: pps-tools bash dependency\n\t#11476: stdio2.h error invalid use of __builtin_va_arg_pack\n\t#11536: dt-utils building fails with glibc 2.28\n\t#11546: open-vm-tools with glibc 2.28\n\t#11566: Fix init script\n\t#11576: Unable to start apache with event MPM on raspberry pi 3\n\t#11591: [pkgconf 1.5.3] xserver OpenGL support is missing\n\t#11606: libjpeg has no Config.in\n\t#11616: 2018.02.09 fails to build libzlib with full RELRO..\n\t#11656: Custom device tree and u-boot boot.scr not integrated..\n\t#11666: Touchscreen with (Py)Qt5 should use tslib instead of evdev\n\n2018.11.4, Released March 28th, 2019\n\n\tImportant / security related fixes.\n\n\tUpdated/fixed packages: avahi, beecrypt, binutils, botan,\n\tbusybox, clamav, cups, devmem2, efl, fetchmail, file, fltk,\n\tgcc, gdb, git, go, gst-plugins-bad, iproute2, jq,\n\tkf5-modemmanager-qt, leveldb, libopenssl, libraw, libseccomp,\n\tlibsoxr, libssh2, mariadb, mosquitto, nodejs, ntp, openjpeg,\n\tperl, php, putty, qt5webkit, rdesktop, runc, samba4, swupdate,\n\tsystemd, tor, vsftpd, wireshark, xapp_xdm, xen, xlib_libXdmcp\n\n2018.11.3, Released February 23th, 2019\n\n\tImportant / security related fixes.\n\n\tEnsure the PLATFORM and OS environment variables are not set,\n\tas they cause build issues for some packages.\n\n\tThe package list infrastructure now correctly handles packages\n\tinstalling files with old mtime.\n\n\tLinux: Skip hash checks for user supplied downloadable\n\tpatches, as no hash checksums are available for those.\n\n\tscanpypi: protect against zip-slip vulnerability in zip/tar\n\thandling\n\n\tDownload: fixes for SSH/SCP support\n\n\tSDK: Fix handling of relative symlinks (targets starting with\n\t'.' or '..')\n\n\tUpdated/fixed packages: bind, dhcpcd, docker-compose,\n\tdocker-containerd, docker-engine, dovecot, dovecot-pigeonhole,\n\tdtc, efivar, ghostscript, gnuradio, imagemagick, jpeg-turbo,\n\tlibarchive, libb64, libcurl, libgeotiff, libgpiod, libid3tag,\n\tlibupnp18, log4cplus, madplay, meson, mosquitto, openssh, php,\n\tpoco, postgresql, proftpd, pulseaudio, python, python-django,\n\tpython3, qt5base, reaver, runc, sg3_utils, sqlcipher,\n\tswupdate, systemd, unzip, webkitgtk, xenomai\n\n2018.11.2, Released January 30th, 2019\n\n\tImportant / security related fixes.\n\n\tDefconfigs: Fixes for imx6slevk, imx7dsabresd, imx8mqevk, Lego\n\tEV3, QEMU AArch64-virt\n\n\tDownload: Fix scp download handling\n\n\tcheck-package: fix Python 3 support\n\n\tget-developers: Fix behaviour when called from elsewhere than\n\tthe toplevel directory.\n\n\tkconfig: Fix for make linux-menuconfig / uboot-menuconfig from\n\ta clean tree when ccache is enabled.\n\n\tcmake: Also set CMAKE_SYSTEM_VERSION in toolchainfile.cmake\n\n\tUpdated/fixed packages: acpica, apache, apr, avrdude, cargo,\n\tcc-tool, dash, dhcpdump, dmalloc, docker-containerd, efivar,\n\tfwts, glibc, gnuchess, gnupg2, go, leveldb, libarchive,\n\tlibassuan, libftdi1, libgpg-error, libhttpparser, libkcapi,\n\tlibmad, libsndfile, libsquish, liburiparser, libwebsock,\n\tlibxml2, lighttpd, llvm, lm-sensors, lua-msgpack-native, lxc,\n\tmariadb, mbedtls, meson, mosquitto, netatalk, nodejs, odhcp6c,\n\topenresolv, openssh, pango, patchelf, php, python-django,\n\tpython-numpy, python-pyyaml, rauc, rp-pppoe, s6-networking,\n\tsamba4, sdl_sound, shairport-sync, sqlite, subversion,\n\tsunxi-cedarx, swupdate, systemd, tcpreplay, tekui, tmp2-abrmd,\n\ttpm2-tools, tpm2-tss, udisks, unixodbc, usb_modeswitch,\n\twebkitgtk, wireshark, wolfssl, xapp_rgb, xenomai, xerces\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11576: Unable to start apache with event MPM on raspberry pi 3\n\n2018.11.1, Released December 20th, 2018\n\n\tImportant / security related fixes.\n\n\tdefconfigs: Fixes for bananapi m2 ultra, ci20\n\n\tDownload wrapper: Fix for urlencode handling\n\n\tUpdated/fixed packages: asterisk, docker-compose,\n\tdocker-engine, dt-utils, gnutls, go, grub, libbsd, libcurl,\n\tlibpgpme, libiscsi, liblo, libmpd, libopenssl, liboping,\n\tlibpam-tacplus, libpjsip, linux-firmware, liquid-dsp,\n\tlua-cqueue, luvi, lxc, lynx, nginx, nodejs, openzwave, php,\n\tpps-tools, proftpd, prosody, sdl2_net, squashfs, swupdate,\n\tuclibc, vtu, webkitgtk, wine, xen\n\n\tNew packages: docker-cli\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11426: pps-tools bash dependency\n\t#11536: dt-utils building fails with glibc 2.28\n\n2018.11, Released December 1st, 2018\n\n\tMinor fixes.\n\n\tUpdated/fixed packages: c-ares, quagga, squid\n\n2018.11-rc3, released November 30th, 2018\n\n\tFixes all over the tree.\n\n\tDefconfigs: Fixes for Armadeus APF27, imx6sabre, Olimex A20\n\tolinuxino lime legacy, Orangepi zero plus 2, PC, Riotboard.\n\n\tgraph-depends: Fix for package names starting with a non-alpha\n\tcharacter.\n\n\tUpdated/fixed packages: alsa-utils, botan, dante, domoticz,\n\tdtc, freetype, gauche, gcc, gdb, ghostscript, glibc,\n\timx-usb-loader, libbsd, libid3tag, libkrb5, libmicrohttpd,\n\tlibopenssl, libsoxr, linux, motion, msgpack, mtd,\n\tperl-net-ssleay, php, popt, python-numpy, qt5declarative,\n\tsamba4, shadowsocks-libev, stress-ng, systemd, usb_modeswitch,\n\twebkitgtk, valgrind, weston, xfsprogs\n\n2018.11-rc2, released November 21th, 2018\n\n\tFixes all over the tree.\n\n\tfs: Drop intermediate tarball from the filesystem handling to\n\tfix an issue with xattrs handling related to fakeroot. Ensure\n\ttarball target includes xattrs.\n\n\tdownload: Fix confusion in git submodule handling if dl/ is a\n\tsymlink.\n\n\tgenrandconfig: Fix missing newline in BR2_WGET handling,\n\tcausing the following line to be ignored. This would affect\n\tBR2_ENABLE_DEBUG, BR2_INIT_BUSYBOX, BR2_INIT_SYSTEMD,\n\tBR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV, BR2_STATIC_LIBS or\n\tBR2_PACKAGE_PYTHON_PY_ONLY depending on the randomization.\n\n\tshow-build-order: Also include the dependencies of\n\trootfs-common.\n\n\tFix a number of build issues in packages for the recently\n\tmerged RISC-V architecture support.\n\n\tUpdated/fixed packages: dt-utils, easydbus, elfutils,\n\tflare-engine, flatcc, glibc, gstreamer, gstreamer1, imx-uuc,\n\tlibassuan, libcorrect, libiscsi, libkrb5, libmicrohttpd,\n\tlibnftnl, libnspr, libnss, libsemanage, libsigsegv, libv4l,\n\tltp-testsuite, luv, luvi, make, ncmpc, netplug, openocd,\n\tprosody, qemu, rpm, sconeserver, shadowsocks-libev,\n\tsupertuxcart, syslinux, systemd, trace-cmd, uclibc,\n\tuclibc-ng-test, vtun, webkitgtk, weston, wireshark, xen,\n\txlib_libfontenc\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11086: download/git submodule breaks on symlinked dl folder\n\t#11216: Capabilities not applied to filesystem\n\n2018.11-rc1, released November 9th, 2018\n\n\tFixes all over the tree and new features.\n\n\tArchitecture: RISC-V support (64bit) added.\n\n\tToolchain: Glibc bumped to 2.28. Fortran support for external\n\ttoolchains. ARM (Linaro) toolchains updated to 8.2-2018.08.\n\n\tHardening flags (RELRO) are now handled by the toolchain\n\twrapper instead of explicitly through CFLAGS/LDFLAGS, fixing a\n\tnumber of issues.\n\n\tFilesystems: Support for creating btrfs and f2fs filesystems\n\tadded.\n\n\tAdd a number of patches to fix build errors for host utilities\n\ton modern distributions using glibc-2.28.\n\n\tmkusers: Ensure existing group members are preserved when a\n\tgroup is reprocessed.\n\n\tprintvars: Fix issue with exceeding shell command line length\n\tlimits for certain setups.\n\n\tWorkaround added for incompatibility issues between host-dtc\n\tand older U-Boot and Linux kernel versions.\n\n\tDetect and reject build paths containing '@', as this confuses\n\ta number of packages, including GCC.\n\n\tutils/diffconfig: Make it work for (non-Buildroot) config\n\tfiles not using the BR2_ prefix.\n\n\tNew defconfigs: Amarula a64-relic, Bananapi m2 ultra, Embest\n\triotboard, Hardkernel Odroid XU-4, QEMU riscv64-virt.\n\tolimex_a20_olinuxion_lime_mali is renamed to _legacy.\n\n\tOpenCL infrastructure support added, similar to how OpenGL is\n\thandled.\n\n\tLinux-headers: Support for kernel headers from a custom\n\ttarball / git repo added.\n\n\tNew packages: bird, bluez5_utils-headers, btrfs-progs,\n\tchecksec, davici, duktape, ell, haproxy, libclc, libcorrect,\n\tlibopencl, libopenresolv, nss-myhostname,\n\tperl-apache-logformat-compiler, perl-appconfig,\n\tperl-astro-suntime, perl-class-inspector, perl-class-load,\n\tperl-class-method-modifiers, perl-class-std,\n\tperl-class-std-fast, perl-cookie-baker, perl-data-dump,\n\tperl-data-optlist, perl-data-uuid, perl-data-manip,\n\tperl-dbd-mysql, perl-dbi, perl-devel-globaldestruction,\n\tperl-devel-stacktrace, perl-devel-stacktrace-ashtml,\n\tperl-device-serialport, perl-dist-checkconflicts,\n\tperl-exporter-tiny, perl-file-sharedir, perl-file-slurp,\n\tperl-filesys-notify-simple, perl-hash-multivalue,\n\tperl-http-entity-parser, perl-http-headers-fast,\n\tperl-http-multipartparser, perl-io-interface,\n\tperl-io-socket-multicast, perl-json-maybexs, perl-mime-tools,\n\tperl-module-implementation, perl-module-runtime, perl-moo,\n\tperl-number-bytes-human, perl-package-stash, perl-params-util,\n\tperl-plack, perl-posix-strftime-compiler, perl-role-tiny,\n\tperl-streams-buffered, perl-sub-exporter-progressive,\n\tperl-sub-install, perl-sub-quote, perl-sys-cpu,\n\tperl-sys-meminfo, perl-sys-mmap, perl-time-parsedate,\n\tperl-type-tiny, perl-www-form-urlencoded, perl-x10, pigpio,\n\tpython-async-timeout, python-falcon, python-fire,\n\tpython-mimeparse, python-multidict, python-passlib,\n\tpython-pigpio, python-pip, python-ply, python-py,\n\tpython-pyasn1, python-pyasn1-modules, python-pycryptodomex,\n\tpython-pyhamcrest, python-pysmi, python-scapy, python-semver,\n\tpython-serial-asyncio, python-typing, python-uvloop,\n\tpythonwrapt, python-yarl, python-zeroconf, riscv-pk, sedutil,\n\tspandsp, tini, waffle, xapian\n\n\tRemoved packages: bootutils, dsp-tools, expedite, gst-dsp,\n\txloader\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11116: Buildroot should set PYTHON_EGG_CACHE instead of writing ..\n\t#11156: In python3 module 'socket' has no attribute 'AF_BLUETOOTH'\n\t#11166: Erlang bad argument on valid uint64 when crosscompiled on..\n\t#11206: zlib: fails to build with Linaro toolchain, BR2_RELRO_FULL..\n\t#11241: ACPID shouldn't depend on BR2_x86_64 || BR2_i386\n\t#11251: Util scanpypi failes when package change - to _ in tar file\n\t#11266: qt5base-5.11.1 does not compile with musl, complains about..\n\t#11286: python-rpi-gpio only should depend on BR2_arm || BR2_aarch64\n\t#11321: Latest master fails to build readline with RELRO FULL\n\t#11326: sysvinit fails to build in latest GIT master\n\t#11331: Internal application no longer builds with latest GIT master\n\t#11336: nfs-utils fails to build in latest GIT master\n\t#11351: build root-2018-08, linaro aarch64 compile error\n\t#11376: mdmon binary missing\n\t#11391: Valgind availability on ARM\n\t#11396: uboot environment image checksum invalid if target is big endian\n\t#11421: GCC error message for ARM Cortex-A9/ARM.V7\n\t#11451: Can't find libmpfr.so.4 when using external toolchain on ubuntu..\n\t#11481: Docs: Is external.desc required?\n\n2018.08.4, Released December 20th, 2018\n\n\tImportant / security related fixes.\n\n\tDefconfigs: Fixes for ci20, orangepi zero plus 2\n\n\tDownload wrapper: Fix for urlencode handling\n\n\tUpdated/fixed packages: c-ares, dante, docker-compose,\n\tdomoticz, freetype, ghostscript, gnutls, libcurl, libgpgme,\n\tlibid3tag, libiscsi, libmpd, libopenssl, liboping, libpjsip,\n\tlinux-firmware, liquid-dsp, luvi, lynx, msgpack, nginx,\n\tnodejs, php, popt, pps-tools, prosody, python-numpy,\n\tpython-requests, samba4, sdl2_net, squashfs, swupdate,\n\tsystemd, uclibc, vte, webkitgtk, wine, xfsprogs\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11426: pps-tools bash dependency\n\n2018.08.3, Released November 26th, 2018\n\n\tImportant / security related fixes.\n\n\tfs: Drop intermediate tarball from the filesystem handling to\n\tfix an issue with xattrs handling related to fakeroot. Ensure\n\ttarball target includes xattrs.\n\n\tdownload: Fix confusion in git submodule handling if dl/ is a\n\tsymlink.\n\n\ttoolchain: Only allow enabling stack protection on\n\tarchitectures with control flow integrity (CFI) support. Only\n\tallow FORTIFY_SOURCE support on gcc >= 6.\n\n\tgenrandconfig: Fix missing newline in BR2_WGET handling,\n\tcausing the following line to be ignored. This would affect\n\tBR2_ENABLE_DEBUG, BR2_INIT_BUSYBOX, BR2_INIT_SYSTEMD,\n\tBR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV, BR2_STATIC_LIBS or\n\tBR2_PACKAGE_PYTHON_PY_ONLY depending on the randomization.\n\n\tshow-build-order: Also include the dependencies of\n\trootfs-common.\n\n\tDefconfigs: Fixes for Armadeus APF27, imx6sabre, Olimex A20\n\tolinuxino lime legacy, Orangepi zero plus 2.\n\n\tgraph-depends: Fix for package names starting with a non-alpha\n\tcharacter.\n\n\tUpdated/fixed packages: attr, audit, bind, brotli, busybox,\n\tdtc, easydbus, elfutils, flare-engine, flatcc, gauche, gcc,\n\tgiflib, gpsd, lcdproc, libcurl, libiscsi, libkcapi, libnfs,\n\tlibnspr, libnss, libsemanage, liburiparser, lighttpd,\n\tlua-curl, mariadb, mmc, mosquitto, mysql, ncmpc, neardal,\n\tnetplug, network-manager, nfs-utils, nginx, openocd, openswan,\n\tp11-kit, postgresql, prosody, qemu, qt, rpm, ruby, samba4,\n\tsquid, supertuxkart, systemd, tar, trace-cmd, traceroute,\n\ttwolame, uclibc, usb_modeswitch, vtun, webkitgtk, weston,\n\txdriver_xf86-video-geode, xlib_libfontenc, xserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11086: download/git submodule breaks on symlinked dl folder\n\t#11481: Docs: Is external.desc required?\n\n2018.08.2, Released October 25th, 2018\n\n\tImportant / security related fixes.\n\n\tWorkaround added for incompatibility issues between host-dtc\n\tand older U-Boot and Linux kernel versions.\n\n\tDetect and reject build paths containing '@', as this confuses\n\ta number of packages, including GCC.\n\n\tutils/get-developers: Add -e option for use with git\n\tsend-email.\n\n\tutils/diffconfig: Make it work for (non-Buildroot) config\n\tfiles not using the BR2_ prefix.\n\n\tu-boot: Fix for environment image handling on big endian\n\tsystems.\n\n\tUpdated/fixed packages: binutils, ca-certificates,\n\tcups-filters, dtc, erlang, file, freetype, gcc, git, gvfs,\n\tjasper, leveldb, libarchive, libssh, live555, ljlinenoise,\n\tmariadb, mongoose, netsnmp, nmap, nodejs, ntp, open-plc-utils,\n\tpoco, psmisc, ptpd2, python-enum34, qemu, qt, qt5base,\n\tsetools, spice, spice-protocol, tinc, ustr, wireshark,\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11396: uboot environment image checksum invalid if target is big endian\n\n2018.08.1, Released October 7th, 2018\n\n\tImportant / security related fixes.\n\n\tAdd a number of patches to fix build errors for host utilities\n\ton modern distributions using glibc-2.28.\n\n\tmkusers: Ensure existing group members are preserved when a\n\tgroup is reprocessed.\n\n\tprintvars: Fix issue with exceeding shell command line length\n\tlimits for certain setups.\n\n\tUpdated/fixed packages: acpid, android-tools, apache,\n\tarp-scan, bandwidthd, bind, brltty, clamav, connman, cppcms,\n\tdomoticz, dtc, fio, gcc, gdb, ghostscript, gnupg, httpping,\n\tigmpproxy, imlib2, ipsec-tools, libesmtp, libnfs, libxslt,\n\tlinks, lua, mosquitto, nilfs-utils, ocrad, parted, php,\n\tpython-django, screen, shairport-sync, strongswan,\n\tvboot-utils, webkitgtk, wireguard, x265 xen, xlib_libXdmcp,\n\txlib_libXfont, xlib_libXft, xlib_libxshmfence,\n\txutil_makedepend, zeromq\n\n2018.08, Released September 6th, 2018\n\n\tMinor fixes.\n\n\tKnown issues:\n\n\t- Glibc 2.28 on the build host breaks compilation of a number\n\t  of host packages. 2018.08 contains fixes for some of these\n\t  packages, but not all. Consider building on hosts (or in\n\t  containers) using older Glibc versions.\n\n\t- host-dtc 1.4.7 breaks compilation of older U-Boot and Linux\n          kernel configurations using FDT/DTC. Consider updating the\n          Linux kernel to >= 4.17 and U-Boot to >= 2018.07 or\n          backporting commit 9130ba8846 (scripts/dtc: Update to\n          upstream version v1.4.6-9-gaadd0b65c987) for the Linux\n          kernel / commit db405d1980 for U-Boot.\n\t  Alternatively revert commit 7b929ddcf0 (dtc: bump version to\n          1.4.7) and ensure your build host does not have the libfdt\n          development headers installed.\n\n\tUpdated/fixed packages: busybox, chipmunk, cutelyst,\n\tdomoticz, gcc, imagemagick, lcms2, libcurl, mediastreamer,\n\tmoarvm, php, qt, qt5virtualkeyboard, qt5webengine, screen,\n\tsdl2, squashfs, uboot, xen\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11261: ccache using wrong cached objects\n\t#11276: Understanding the patch for kernel-4.9 and other..\n\n2018.08-rc3, Released August 31th, 2018\n\n\tFixes all over the tree.\n\n\tlinux: additional improvements to the flex / bison dependency\n\thandling, use system provided variant if available. Ensure\n\ttoolchain is available when configuring for 4.18+ support.\n\n\tDownload: Fix handling of primary sites using file://\n\n\tToolchain: Correct external toolchain musl detection for\n\tstatic toolchains.\n\n\tUpdated/fixed packages: aircrack-ng, bison, brltty, busybox,\n\tcutelyst, dropbear, gr-osmosdr, i2c-tools, json-c, libconfuse,\n\tlibkcapi, libsoup, libssh, liburiparser, mbedtls, mender,\n\tmesa3d, minicom, mjpegtools, mutt, openpowerlink, openssh,\n\toracle-mysql, php, postgresql, pv, qt5base, qt5quickcontrols,\n\trauc, shairport-sync, systemd, xlib_libX11, zeromq,\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11091: BR2_PRIMARY_SITE doesn't work (wget is selected...\n\t#11141: WF111 package no longer available\n\t#11211: Internal compiler error: Killed (program cc1plus)..\n\t#11236: util-linux fails to build on Travis CI when python..\n\t#11246: Glibc 2.28 - fails to build host-bison and host-m4\n\t#11256: Add python-falcon and python-mimeparse packages\n\n2018.08-rc2, Released August 20th, 2018\n\n\tFixes all over the tree.\n\n\tpkg-kconfig: Support dependencies needed to run the\n\tconfigurator, E.G. recent Linux kernel versions needing flex\n\tand bison.\n\n\tDefconfigs: ARM Juno: Bump ATF to fix a build\n\tissue. Raspberrypi2: Bump rootfs size. Snps_archs38_vdk:\n\tCorrect /etc/inittab. Technologic ts7680: Correct genimage\n\tconfiguration. Orange PI PC / Zero, Sheevaplug: Bump U-boot to\n\t2018.07 to fix build issue. Ensure host-openssl is pulled in\n\tfor kernel builds where needed.\n\n\tUpdated/fixed packages: aircrack-ng, bind, boost,\n\tboot-wrapper-aarch64, bzip2, busybox, chrony, cryptsetup,\n\tdahdi-tools, dbus, domoticz, eigen, ipsec-tools, libarchive,\n\tlibfuse, libgit2, libopenssl, libselinux, lighttpd, lvm2, m4,\n\tmakedevs, mariadb, mesa3d-headers, mono, ncmpc, ncurses,\n\tnodejs, php, python-django, python-pyqt5, qt5base,\n\tqt5serialbus, ruby, samba4, uboot-tools, uclibc, vlc,\n\twaylandpp, wireless_tools, wireshark, wpa_supplicant, mtd,\n\txdriver_xf86-video-ati, xserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10781: cryptsetup luksOpen container_file container causes..\n\t#10996: bogus musl ARM toolchain\n\t#11191: xattr and check-package issue\n\n2018.08-rc1, Released August 5th, 2018\n\n\tToolchain:\n\n\t- add support for gcc 8.x, switch to gcc 7.x as the default\n\t  version\n\t- add support for gdb 8.1, switch to gdb 8.0 as the default\n\t  and remove gdb 7.10/7.11\n\t- add support for binutils 2.31\n\t- NIOSII CodeSourcery toolchain updated\n\t- Linaro AArch64 BE toolchain added, and other Linaro\n\t  toolchains updated\n\t- Synopsys ARC pre-built toolchain updated\n\n\tArchitecture: add support for ARM Cortex-M7\n\n\tMajor updates:\n\n\t- systemd bumped to 239\n\t- Qt5 bumped to 5.11.1\n\t- Rust bumped to 1.27\n\t- GStreamer stack bumped to 1.14.2\n\t- X.org server bumped to 1.20, and all X.org proto packages\n\t  replaced by the single xorgproto package\n\t- i.MX6 support packages bumped to 6.2.4\n\t- i.MX Vivante graphics version bumped to 6.2.4.p1.2,\n\t  adding support for Wayland and i.MX8MQ platforms\n\n\tLinux: bumped to 4.17 by default.\n\n\tInfrastructure: new package infrastructure added for packages\n\tusing the Meson build system\n\n\tNew packages: at-spi2-atk, at-spi2-core, capnproto, cmocka,\n\tcorkscrew, cutelyst, davfs2, flatcc, libidn2, libgit2,\n\tlibopusenc, mender, nghttp2, perl-convert-asn1, perl-crypt-blowfish,\n\tperl-crypt-cbc, perl-digest-md5, perl-mime-base64-urlsafe,\n\tperl-mojolicious-plugin-authentication, perl-net-ping,\n\tperl-net-snmp, perl-net-ssh2, perl-net-telnet, pigz,\n\tpython-reentry, python-request-id, python-validators,\n\tpython-webob, shadowsocks-libev, speexdsp, xorgproto, wampcc\n\n\tNew defconfigs: NXP i.MX7D SDB, Boundary Devices Nitrogen 8M,\n\tOlimex A10 OLinuxino, ZynqMP ZCU106\n\n\tRemoved packages: all xproto_* have been removed and replaced\n\tby xorgproto\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#9411:\tMUSL build with RT Error relocating /lib/libgcc_s.so.1:\n\t\t__cpu_indicator_init: symbol not found\n\t#9921: lockfile module within python-daemon not\t available\n\t#10341: gdb install of py files when using buildroot toolchain\n\t\tincludes build path\n\t#10661: /etc/init.d/S29netplug starts multiple\tinstances of netplugd\n\t#10751: Missing dependency in pulseaudio package\n\t#10811: kodi-17.6-Krypton does not compile for\tfreescale_* devices\n\t#10856: openblas on qemu_x86_64_defconfig fails with\n\t\t\"sgemm_kernel.o: No such file or directory\"\n\t#11056: Compiling a file that uses libdrm headers fails with:\n\t\tfatal error: drm.h: No such file or directory\n\t#11061: support/download: git version=master broken\n\t#11071: Building postgresql package on Debian 9.4  x64 for armel target fails\n\t#11076: Docker containerd installed to incorrect  path\n\t#11101: host-patchelf Endian Issue with relative  RPATH\n\t#11111: raspberry pi 3 b+: missing BSP for 64-bit  kernel\n\t#11121: statfs call corrupts memory struct statfs  too small\n\t#11181: Switching toolchain does not work\n\n2018.05.3, Released October 6th, 2018\n\n\tImportant / security related fixes.\n\n\tAdd a number of patches to fix build errors for host utilities\n\ton modern distributions using glibc-2.28.\n\n\tmkusers: Ensure existing group members are preserved when a\n\tgroup is reprocessed.\n\n\tprintvars: Fix issue with exceeding shell command line length\n\tlimits for certain setups.\n\n\tUpdated/fixed packages: acpid, android-tools, apache,\n\tarp-scan, bandwidthd, bind, bison, brltty, chipmunk, connman,\n\tcppcms, fio, gcc, ghostscript, gnupg, httping, igmpproxy,\n\timagemagick, imlib2, ipsec-tools, lcm2, libcurl, libesmtp,\n\tlibnfs, libssh, libxslt, links, mediastreamer, minicom,\n\tmoarvm, nilfs-utils, ocrad, parted, php, postgresql, pv,\n\tpython-django, qt, qt5quickcontrols, qt5webengine, screen,\n\tsdl2, shairport-sync, squashfs, strongswan, vboot-utils,\n\twebkitgtk, wireguard, x265, xen, xlib_libXfont, xlib_libXft,\n\txlib_libxshmfence, zeromq\n\n2018.05.2, Released August 28th, 2018\n\n\tImportant / security related fixes.\n\n\tDefconfigs: Raspberrypi2: Bump rootfs size, T7680: Fix\n\tgenimage.cfg issue, ARM Juno: Bump ATF to v1.3 to fix build\n\tissue.\n\n\tUpdated/fixed packages: acl, attr, apache, bind,\n\tboot-wrapper-aarch64, brltty, bzip2, chrony, crda, cryptsetup,\n\tdahdi-tools, dmidecode, dropbear, eigen, ffmpeg, gawk, gcc,\n\tghostscript, gnutls, imx-gpu-viv, ipsec-tools, libarchive,\n\tlibfuse, libglib2, libopenssl, libselinux, libsoup, lighttpd,\n\tlinuxptp, lttng-modules, lttng-tools, lua-flu, lvm2, m4,\n\tmakedevs, mariadb, mbedtls, mesa3d-heders, mtd, ncurses,\n\tnodejs, openssh, php, python-django, rauc, ruby, samba4,\n\tstress-ng, ti-utils, uboot-tools, uclibc, vim, waylandpp,\n\twireless_tools, wireless-regdb, wireshark, wpa_supplicant,\n\txorriso, znc\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10781: cryptsetup luksOpen container_file container causes..\n\t#10986: Installing package attr when already supplied by..\n\t#11191: xattr and check-package issue\n\n2018.05.1, Released July 20th, 2018\n\n\tImportant / security related fixes.\n\n\tU-Boot: Ensure host version of ncurses is picked up and not\n\thost-ncurses built by buildroot, as that otherwise causes\n\twidechar/non-widechar conflicts and corrupted menuconfig\n\tmenus.\n\n\tLinux: Enable CONFIG_PERF_EVENTS when perf is enabled.\n\n\tToolchain: ARC tools updated to arc-2018.03.\n\n\tpkg-stats: Fix python 3.x compatibility.\n\n\tdl-wrapper: Fix support for URIs containing '+', fix\n\tno-check-hash for inferred site method.\n\n\tDefconfigs: Raspberrypi3: Bump rootfs size, Minnowboard-max:\n\tSupport ethernet on Turbot variant.\n\n\tUpdated/fixed packages: audit, bind, btrfs-progs, cifs-utils,\n\tclamav, collectd, coreutils, docker-containerd, dos2unix,\n\tedid-decode, file, gcc, gdb, gnupg, gnupg2, heimdal, hidapi,\n\timagemagick, libcurl, libgcrypt, libglib2, liblogging,\n\tlibostree, libressl, libsoup, libv4l, libvncserver, libvorbis,\n\tlibwebsockets, libxslt, lm-sensors, mariadb, mpg123, ncurses,\n\tnetwork-manager, nodejs, patchelf, perl, php-amqp, pinentry,\n\tpixiewps, qpdf, qt53d, qt5base, qt5charts, qt5script, redis,\n\tsystemd, triggerhappy, uboot, wireguard, wireless-regdb,\n\twireshark\n\n2018.05, Released June 1st, 2018\n\n\tMinor fixes.\n\n\tDownload: Work around for hanging connections for packages\n\tfrom CVS, by adding a 10 minute max timeout.\n\n\tUpdated/fixed packages: binutils, clang, dash, expect, git,\n\tglibc, jpeg-turbo, libjpeg, log4cplus, openvmtools, xen,\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11051: runtime issue on STM32 with usage of binutils 2.29.x\n\n2018.05-rc3, Released May 28th, 2018\n\n\tFixes all over the tree.\n\n\tToolchain: ARC tools updated to arc-2018.03-rc2.\n\n\tFs: Ensure hard links in TARGET_DIR are correctly copied for\n\tfilesystem input. With the recent changes to the file system\n\tgeneration logic, hard links were \"expanded\" in file system\n\timages leading to bloated rootfs images for setups with hard\n\tlinks.\n\n\tInfrastructure: Error out for packages using the 'local'\n\tmethod but forgetting to specify <pkg>_SITE.\n\n\tBuild rpcgen for the host when needed to support distributions\n\tno longer shipping rpcgen with glibc (E.G. recent Fedora).\n\n\tUpdated/fixed packages: autofs, bash-completion, binutils,\n\tbusybox, cjson, elf2flt, libcoap, libcurl, libtirpc, lrzsz,\n\tpoppler, procps-ng, qt-webkit-kiosk, quota, samba4, xfsprogs\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11031: ld-elf2flt: host/bin/ld.real': execvp: No such file..\n\t#11036: C compiler cannot create executables\n\t#11046: Git package binaries are ~180MB (compared to ~20MB in..\n\n2018.05-rc2, Released May 22nd, 2018\n\n\tFixes all over the tree.\n\n\tDependencies: Check that the current working directory (.)\n\tisn't listed in PATH as that causes various build issues.\n\n\tManual: Clarify that git branch names may not be used as\n\tversion identifiers. This has never been supported, but was\n\tkind of working (with some limitations) before the git\n\tdownload rework - Now it does not work at all.\n\n\tLinux: Ensure host version of ncurses is picked up and not\n\thost-ncurses built by buildroot, as that otherwise causes\n\twidechar/non-widechar conflicts and corrupted menuconfig\n\tmenus.\n\n\tPackages: Renamed a number of package options not prefixed\n\twith BR2_PACKAGE_<pkg> for consstency.\n\n\tDownload infrastructure: Fix file:// protocol handling after\n\tdownload rework.\n\n\tUpdated/fixed packages: acl, apr-util, asterisk, attr,\n\tbluez5_utils, cifs-utils, clamav, clang, cups-filters,\n\tdahdi-linux, exim, faketime, gdb, go, gst1-plugins-bad,\n\timx-mkimage, ipsec-tools, jamvm, janus-gateway,\n\tjquery-ui-themes, libcap, libcurl, libftdi, libkcapi, libkrb5,\n\tlibmediaart, libmodbus, libmodplug, libmpd,\n\tlibnetfilter_cthelper, libnetfilter_cttimeout, libnfc,\n\tlibnfnetlink, libnss, liboauth, libogg, libosip2,\n\tlibpam-radius-auth, libpcap, libpciaccess, llvm, log4cplus,\n\tltrace, lynx, mbedtls, modem-manager, nfs-utils,\n\tpython-cython, python-websockets, qt5cinex, qt5wayland, rauc,\n\tsnort, strace, ti-sgx-km, transmission, wavpack, wget, woff2,\n\txen, zmqpp, znc, zstd\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10986: Installing package attr when already supplied by...\n\t#11011: BUildroot for Raspberry Pi 2\n\t#11016: Wrong compiler used for external user host packages\n\n2018.05-rc1, Released May 9th, 2018\n\n\tToolchain: glibc bumped to 2.27, musl bumped to 1.1.19,\n\tuClibc-ng 1.0.30, Linux kernel headers bumped to 4.16.x.\n\n\tArchitecture: support for the Blackfin architecture has been\n\tremoved, as it was removed from Linux upstream, poorly\n\tmaintained in binutils/gdb, and abandoned by Analog Devices.\n\n\tNumerous packages updated to have hashes for their license\n\tfiles.\n\n\tSystemd can now be built with uClibc toolchains.\n\n\tLinux: addition of BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF and\n\tBR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL to support building Linux\n\tkernel configurations that need libelf on the host or openssl\n\ton the host.\n\n\tCoding style:\n\t- all Python scripts are now verified with flake8\n\t- check-package extended to check all Config.in and .mk files\n\t  in tree, not only the ones in package/\n\n\tInfrastructure:\n\n\t- The download infrastructure has seen a major overhaul, with\n\t  the main visible new feature being Git caching: a package\n\t  fetched from Git no longer needs to be re-cloned entirely\n\t  everytime its version is changed. Anoter visible change is\n\t  that the download folder now has subfolders per package. See\n\t  http://lists.busybox.net/pipermail/buildroot/2018-April/217923.html\n\t  for more details about those changes.\n\n\t- The logic that generates the root filesystem images has been\n\t  reworked, with the main goal of allowing several filesystem\n\t  images to be produced in parallel, also a requirement for\n\t  top-level parallel build. Now, a .tar filesystem image is\n\t  always created, and re-extracted in a private directory to\n\t  create each format-specific filesystem image.\n\n\t- A new package infrastructure was introduced for Go-based\n\t  packages: golang-package.\n\n\t- Dependencies on extraction tools are now handled as proper\n\t  per-package dependencies, using\n\t  <pkg>_EXTRACT_DEPENDENCIES. Beyond a cleanup, this is also a\n\t  preparation step for top-level parallel build support.\n\n\t- When a file being downloaded is part of a package with a\n\t  .hash file, but there is no hash listed for this file, the\n\t  file is now preserved in the download directory rather than\n\t  removed. This helps when updating a package, as it gives the\n\t  ability to easily calculate the hash of the file.\n\n\t- Addition of '<pkg>-show-recursive-depends' and\n\t  '<pkg>-show-recursive-rdepends' make targets, to\n\t  respectively display the recursive list of dependencies and\n\t  the recursive list of reverse dependencies of a given\n\t  package.\n\n\t- The /etc/shells file is now automatically generated with the\n\t  list of shell programs installed on the system.\n\n\t- Addition of -Ofast optimization level as an available\n\t  option.\n\n\tMajor updates: Go updated to 1.10, Erlang bumped to 20.3, Qt5\n\tbumped to 5.10.1.\n\n\tNew packages: 18xx-ti-utils, abootimg, bluez-alsa, brotli,\n\tchipmunk, clang, docker-compose, docker-proxy, flare-engine,\n\tflare-game, gst1-interpipe, gstreamer1-editing-services,\n\thackrf, i2pd, imx-alsa-plugins, imx-mkimage, libcdio-paranoia,\n\tlibkrb5, llvm, pixiewps, python-backports-ssl-match-hostname,\n\tpython-cached-property, python-cython, python-docker,\n\tpython-dockerpty, python-docker-pycreds,\n\tpython-flask-sqlalchemy, python-functools32, python-influxdb,\n\tpython-json-models, python-libusb1, python-networkx,\n\tpython-psycopg2, python-pymodbus, python-sqlalchemy,\n\tpython-subprocess32, python-texttable,\n\tpython-websocket-client, python-yieldfrom, quotatool, reaver,\n\tsnort, sunxi-mali-mainline, sunxi-mali-mainline-driver, tk,\n\ttpm2-abrmd, tpm2-tools, tpm2-tss, udftools, vte, woff2.\n\n\tNew defconfigs: ARC HS Development Kit, Arcturus ucls1012a,\n\tFreescale i.MX6UL EVK (with vendor kernel), Freescale i.MX6\n\tSoloLite EVK (with vendor kernel), Freescale i.MX31 3Stack,\n\tFreescale i.MX8Q EVK Freescale p1025twr, Freescale t1040d4rdb,\n\tQemu PPC64 E5500, SolidRun ClearFog Base, Tinker RK3288, Vyasa\n\tRK3288,\n\n\tRemoved packages: iqvlinux, kodi-adsp-*, mplayer\n\n\tRemoved defconfigs: ci40, firefly_rk3288,\n\tfreescale_p1010rdb_pa, freescale_mpc8315erdb, riotboard,\n\tteliv_evk_pro3\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10151: toolchain eclipse register : fails with a custom\n\t\tBR2_HOST_DIR\n\t#10511: Packages get downloaded uncompressed with wget\n\t#10531: QtWebengine doesn't build if the host hasn't a 32 bits\n\t\tC++ compiler working\n\t#10846: error in compiling gnutls\n\t#10886: openssl-1.0.2n fails to build\n\t#10896: /bin/sh not in /etc/shells\n\t#10961: Grub2 fails to build for x86_64 when BR2_SSP_ALL is\n\t\tenabled\n\n2018.02.12, Released March 29th, 2019\n\n\tImportant / security related fixes.\n\n\tUpdated/fixed packages: avahi, beecrypt, busybox, clamav,\n\tcups, devmem2, fetchmail, file, fltk, gcc, gdb, git, jq,\n\tleveldb, libopenssl, libraw, libseccomp, libssh2,\n\tlibunistring, mariadb, mosquitto, nodejs, ntp, openjpeg, perl,\n\tphp, putty, qt5webkit, rdesktop, systemd, wireshark, vsftpd,\n\txapp_xdm, xlib_libXdmcp\n\n2018.02.11, Released February 23th, 2019\n\n\tImportant / security related fixes.\n\n\tEnsure the PLATFORM and OS environment variables are not set,\n\tas they cause build issues for some packages.\n\n\tThe package list infrastructure now correctly handles packages\n\tinstalling files with old mtime.\n\n\tLinux: Skip hash checks for user supplied downloadable\n\tpatches, as no hash checksums are available for those.\n\n\tscanpypi: protect against zip-slip vulnerability in zip/tar\n\thandling\n\n\tUpdated/fixed packages: bind, dhcpcd, dovecot, ghostscript,\n\tgnuradio, imagemagick, jpeg-turbo, libarchive, libb64,\n\tlibcurl, libid3tag, madplay, mosquitto, openssh, php,\n\tpostgresql, proftpd, python, python-django, python3, qt5base,\n\tsqlcipher, swupdate, systemd, unzip, webkitgtk\n\n2018.02.10, Released January 31th, 2019\n\n\tImportant / security related fixes.\n\n\tDefconfigs: Fixes for Lego EV3, QEMU AArch64-virt\n\n\tcheck-package: fix Python 3 support\n\n\tget-developers: Fix behaviour when called from elsewhere than\n\tthe toplevel directory.\n\n\tcmake: Also set CMAKE_SYSTEM_VERSION in toolchainfile.cmake\n\n\tUpdated/fixed packages: acpica, apache, apr, asterisk,\n\tavrdude, cargo, cc-tool, dash, dhcpdump, dmalloc, gnuchess,\n\tgnupg2, leveldb, libarchive, libassuan, libftdi1,\n\tlibgpg-error, libhttpparser, libmad, libsndfile, libsquish,\n\tliburiparser, libwebsock, libxml2, lighttpd, lm-sensors,\n\tlua-msgpack-native, mbedtls, mosquitto, netatalk, nodejs,\n\topenssh, pango, patchelf, php, python-django, python-pyyaml,\n\trauc, rp-pppoe, s6-networking, samba4, sdl_sound,\n\tshairport-sync, sqlite, subversion, sunxi-cedarx, tcpreplay,\n\ttekui, usb_modeswitch, webkitgtk, wireshark, wolfssl,\n\txapp_rgb, xenomai, xerces\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11576: Unable to start apache with event MPM on raspberry pi 3\n\n2018.02.9, Released December 20th, 2018\n\n\tImportant / security related fixes.\n\n\tdefconfigs: Fixes for ci20\n\n\tUpdated/fixed packages: c-ares, dante, freetype, ghostscript,\n\tglibc, gnutls, go, libcurl, libgpgme, libid3tag, libiscsi,\n\tlibmpd, libopenssl, libpjsip, linux, liquid-dsp, luvi, lynx,\n\tmsgpack, nginx, nodejs, php, popt, pps-tools, python-numpy,\n\tpython-requests, samba4, sdl2_net, squashfs, swupdate, uclibc,\n\twine, webkitgtk, xfsprogs\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11426: pps-tools bash dependency\n\n2018.02.8, Released November 26th, 2018\n\n\tImportant / security related fixes.\n\n\tfs: Drop intermediate tarball from the filesystem handling to\n\tfix an issue with xattrs handling related to fakeroot. Ensure\n\ttarball target includes xattrs.\n\n\tdownload: Fix confusion in git submodule handling if dl/ is a\n\tsymlink.\n\n\ttoolchain: Only allow enabling stack protection on\n\tarchitectures with control flow integrity (CFI) support. Only\n\tallow FORTIFY_SOURCE support on gcc >= 6.\n\n\tgenrandconfig: Fix missing newline in BR2_WGET handling,\n\tcausing the following line to be ignored. This would affect\n\tBR2_ENABLE_DEBUG, BR2_INIT_BUSYBOX, BR2_INIT_SYSTEMD,\n\tBR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV, BR2_STATIC_LIBS or\n\tBR2_PACKAGE_PYTHON_PY_ONLY depending on the randomization.\n\n\tshow-build-order: Also include the dependencies of\n\trootfs-common.\n\n\tDefconfigs: Fixes for Armadeus APF27, imx6sabre.\n\n\tgraph-depends: Fix for package names starting with a non-alpha\n\tcharacter.\n\n\tUpdated/fixed packages: attr, audit, bind, brotli, easydbus,\n\telfutils, gauche, gcc, giflib, gpsd, lcdproc, libcurl,\n\tlibiscsi, libnfs, libnspr, libnss, libkcapi, libsemanage,\n\tliburiparser, lighttpd, linux, lua-curl, mariadb, mmc-utils,\n\tmosquitto, mysql, neardal, netplug, network-manager,\n\tnfs-utils, nginx, openocd, openswan, p11-kit, postgresql,\n\tprosody, qemu, qt, rpm, ruby, samba4, squid, supertuxkart,\n\tsystemd, tar, trace-cmd, traceroute, twolame, uclibc,\n\tusb_modeswitch, vtun, webkitgtk, xdriver_xf86-video-geode,\n\txlib_libfontenc, xproto_inputproto, xserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11086: download/git submodule breaks on symlinked dl folder\n\t#11251: Util scanpypi failes when package change - to _ in..\n\t#11476: stdio2.h error invalid use of __builtin_va_arg_pack\n\t#11481: Docs: Is external.desc required?\n\n2018.02.7, Released October 25th, 2018\n\n\tImportant / security related fixes.\n\n\tDetect and reject build paths containing '@', as this confuses\n\ta number of packages, including GCC.\n\n\tutils/get-developers: Add -e option for use with git\n\tsend-email.\n\n\tutils/diffconfig: Make it work for (non-Buildroot) config\n\tfiles not using the BR2_ prefix.\n\n\tu-boot: Fix for environment image handling on big endian\n\tsystems.\n\n\tUpdated/fixed packages: binutils, ca-certificates,\n\tcups-filters, erlang, file, freetype, gcc, git, gvfs, leveldb,\n\tlibarchive, libcurl, libssh, live555, ljlinenoise, mariadb,\n\tmongoose, netsnmp, nmap, nodejs, ntp, open-plc-utils, poco,\n\tpsmisc, ptpd2, python-enum34, qemu, qt, qt5base, setools,\n\tspice, spice-protocol, tinc, ustr, wireshark\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11396: uboot environment image checksum invalid if target is big endian\n\n2018.02.6, Released October 7th, 2018\n\n\tImportant / security related fixes.\n\n\tAdd a number of patches to fix build errors for host utilities\n\ton modern distributions using glibc-2.28.\n\n\tmkusers: Ensure existing group members are preserved when a\n\tgroup is reprocessed.\n\n\tprintvars: Fix issue with exceeding shell command line length\n\tlimits for certain setups.\n\n\tUpdated/fixes packages: acpid, android-tools, apache,\n\tarp-scan, bandwidthd, bind, bison, clamav, connman, cppcms,\n\tcramfs, fio, gcc, ghostscript, glibc, gnupg, httping,\n\tigmpproxy, imagemagick, imlib2, ipsec-tools, lcms2, libcurl,\n\tlibesmtp, libnfs, libssh, libxslt, links, linuxptp,\n\tmediastreamer, minicom, moarvm, nilfs-utils, ocrad, parted,\n\tphp, pv, python-django, qt, qt5quickcontrols, qt5webengine,\n\tscreen, sdl2, shairport-sync, squashfs, strongswan,\n\tvboot-utils, webkitgtk, wireguard, x265, xen, xlib_libXfont,\n\txlib_libXft\n\n\tNew packages: brotli, woff2\n\n2018.02.5, Released August 29th, 2018\n\n\tImportant / security related fixes.\n\n\tDefconfigs: Raspberrypi2: Bump rootfs size, T7680: Fix\n\tgenimage.cfg issue, ARM Juno: Bump ATF to v1.3 to fix build\n\tissue.\n\n\tUpdated/fixed packages: acl, apache, attr, bind,\n\tboot-wrapper-aarch64, brltty, bzip2, chrony, crda, cryptsetup,\n\tdahdi-tools, dmidecode, dropbear, eigen, erlang, ffmpeg, gawk,\n\tgcc, ghostscript, gnutls, ipsec-tools, libarchive, libfuse,\n\tlibopenssl, libselinux, libsoup, lighttpd, linuxptp,\n\tlttng-modules, lttng-tools, lua-flu, lvm2, m4, makedevs,\n\tmariadb, mbedtls, mesa3d-headers, mtd, ncurses, nodejs,\n\topenssh, php, postgresql, python-django, qt5xmlpatterns, ruby,\n\tsamba4, shairport-sync, stress-ng, ti-utils, uboot-tools, vim,\n\twaylandpp, wireless_tools, wireshark, wpa_supplicant, xorriso,\n\tznc\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10781: cryptsetup luksOpen container_file container causes..\n\t#10986: Installing package attr when already supplied by..\n\t#11191: xattr and check-package issue\n\n2018.02.4, Released July 21th, 2018\n\n\tImportant / security related fixes.\n\n\tU-Boot: Ensure host version of ncurses is picked up and not\n\thost-ncurses built by buildroot, as that otherwise causes\n\twidechar/non-widechar conflicts and corrupted menuconfig\n\tmenus.\n\n\tLinux: Enable CONFIG_PERF_EVENTS when perf is enabled.\n\n\tDefconfigs: Raspberrypi3: Bump rootfs size, Minnowboard-max:\n\tSupport ethernet on Turbot variant.\n\n\tUpdated/fixed packages: bind, clamav, collectd, dos2unix,\n\tedid-decode, gcc, gdb, heimdal, hidapi, imx-gpu-viv, libcurl,\n\tlibglib2, liblogging, libostree, libsoup, libv4l, lm-sensors,\n\tncurses, network-manager, patchelf, pinentry, procps-ng, qpdf,\n\tqt5, qt53d, qt5base, qt5charts, qt5script, qt5serialport,\n\tsystemd, wireguard, wireless-regdb\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#11101: host-patchelf Endian Issue with relative RPATH\n\n2018.02.3, Released June 18th, 2018\n\n\tImportant / security related fixes.\n\n\tVarious fixes for building on modern distributions (GCC 8.x,\n\tno rpcgen utility).\n\n\tARM: Default to binutils 2.28 and warn about newer binutils\n\tversions, which are known to cause boot failures for Linux\n\tkernels built in thumb mode.\n\n\tBusybox/mdev: Fix module autoloading.\n\n\tBusybox/sysvinit: inittab: Add /dev/{stdin,stdout,stderr}\n\tsymlinks, call swapon -a to activate any configured swap\n\tdevices.\n\n\tDependencies: Check that PATH does not contain current working\n\tdirectory, which triggers a number of build failures.\n\n\tInfrastructure: Error out for packages erroneously using the\n\t'local' site method but not defining a _SITE.\n\n\tLinux: Fix cuImage.<dtb> / simpleImage.<dtb> handling.  Ensure\n\tkconfig uses ncurses from the host to fix a ncurses/ncursesw\n\tmixup, causing menuconfig display corruption.\n\n\tToolchain: Workarounds for fix-rpath issues with binutils and\n\telf2flt.\n\n\tUtil-linux: Fix blocking on getrandom() issue with recent\n\tkernels.\n\n\tRemove broken freescale_imx31_3stack,\n\tfreescale_imx6sololiteevk and freescale_imx6ulevk defconfigs.\n\n\tUpdated/fixed packages: apr-util, asterisk, attr, audit,\n\tautofs, binutils, busybox, cifs-utils, cups-filters, dash,\n\tebtables, exim, expect, f2fs-tools, faketime, file, gdb, git,\n\tglibc, gnupg, gnupg2, gst1-plugins-bad, imagemagick, jamvm,\n\tjpeg-turbo, libcap, libcoap, libcurl, libgcrypt, libjpeg,\n\tlibnss, libressl, libtirpc, libvncserver, libvorbis, libxslt,\n\tlog4cplus, lrzsz, ltrace, lynx, mariadb, mbedtls, mpg123,\n\tnasm, netplug, network-manager, nfs-utils, nodejs,\n\topenvmtools, patch, perl, php-amqp, poppler, procps-ng,\n\tpython, python-websockets, quota, redis, samba4, sysvinit,\n\ttransmission, triggerhappy, util-linux, wavpack, wget,\n\twireshark, xen, zmqpp\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10986: Installing package attr when already supplied by busybox..\n\t#11031: ld-elf2flt: host/bin/ld.real': execvp: No such file or..\n\n2018.02.2, Released May 4th, 2018\n\n\tImportant / security related fixes.\n\n\tTweak package size/file instrumentation to better handle\n\tpackage rebuilds.\n\n\tRevert /etc/shells creation when bash is enabled.\n\n\tExclude /lib/firmware from the rpath fixup logic, as it may\n\tcontain non-native ELF files.\n\n\tScanpypi: Support the new PyPi infrastructure.\n\n\tHandle GCC 8.x on the host.\n\n\tEnsure timestamp of /usr is updated to support the systemd\n\tConditionNeedsUpdate option.\n\n\tUpdated/fixed packages: bluez5_utils, flann, gdb, gnupg2,\n\tgrub2, libcec, libcgi, libglib2, libgpg-error, libgpgme,\n\tlibtomcrypt, mbedtls, mkpasswd, php, python, python-requests,\n\tpython-watchdog, qt53d, qt5websockets, sdl2, sdl2_image,\n\tsyslog-ng, systemd, tcl, tcllib, uclibc, usb_modeswitch,\n\twireguard, wmctrl\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10896: /bin/sh not in /etc/shells\n\t#10961: Grub2 fails to build for x86_64 when BR2_SSP_ALL is enabled\n\n2018.02.1, Released April 9th, 2018\n\n\tImportant / security related fixes.\n\n\tRemoved unmaintained defconfigs: Creator Ci40, Firefly rk3288,\n\tFreescale mpc8315erdb / p1010rdb_pa, Riotboard, Teliv EVK\n\tPro3.\n\n\tInfrastructure: Speed up instrumentation for package size by\n\tcomparing timestamps instead of md5 checksums, as doing\n\tchecksums could lead to up to 25% longer build time for big\n\tconfigurations.\n\n\tRename the internal <pkg>_BASE_NAME variable to <pkg>_NASENAME\n\tto avoid name clashes with packages ending on '-base'.\n\n\tAdd a better fix for build issues for autotools based packages\n\tchecking for C++ support on toolchains without C++ support.\n\n\tBuild host-tar if tar is older than 1.27 on the build machine\n\tto work around reproducibility issues with git archives\n\tcontaining long paths.\n\n\tcheck-unique-files: Fix for filenames not representable in the\n\tusers' locale.\n\n\tCheck-bin-arch: Add support for per-package ignore paths\n\t(<pkg>_BIN_ARCH_EXCLUDE).\n\n\tToolchain: Fix SSP support detection for external toolchains.\n\n\tlinux: Add _NEEDS_HOST_OPENSSL / LIBELF options to ensure\n\tthese dependencies are available for Linux configurations\n\tneeded these dependencies, similar to how it is done for\n\tU-Boot.\n\n\tSupport custom (not in tree) device tree files in addition to\n\tin-tree ones.\n\n\tU-Boot / uboot-tools: Fix header conflict with libfdt-devel\n\tinstalled on host.\n\n\tUpdated/fixed packages: apache, busybox, c-ares, cmake,\n\tdocker-engine, enlightenment, eudev, fbgrab, freescale-imx,\n\tgtest, imagemagick, intel-microcode, irssi, jimtcl, kmod,\n\tkodi, ktap, libcoap, libcurl, libfcgi, libhttpparser,\n\tlibminiupnpc, libopenssl, libpjsip, libss7, libssh2, libupnp\n\tlibupnpp, libuv, libvorbis, memcached, motion, musl, nodejs,\n\tntp, openblas, opencv3, openocd, opus-tools, patch, php,\n\tpkgconf, postgresql, powerpc-utils, python-jsonschema,\n\tpython-webpy, qemu, qt5bsae, qt5script, qt5webkit, rapidjson,\n\trauc, sam-ba, samba4, sngrep, systemd, tremor, uboot-tools,\n\tuclibc-ng-test, upmpdcli, wireshark, xerces, xterm, zstd\n\n\tNew packages: docker-proxy, python-functools32\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10766: upmpdcli: Segmentation fault\n\t#10776: ktap fails to build\n\t#10846: error in compiling gnutls\n\t#10856: openblas on qemu_x86_64_defconfig fails with \"sgemm_..\n\n2018.02, Released March 4th, 2018\n\n\tFixes all over the tree.\n\n\tIssues with systemd with a readonly rootfs and DBus fixed.\n\n\tInstructure:\n\t- check-uniq-files: fix Python 2.6 compatibility.\n\t- dependencies.sh: check for external argparse module for\n\t  Python 2.6.\n\t- Add infrastructure to detect and use a UTF-8 locale on the\n\t  host, needed by systemd.\n\n\tUpdate/fixed packages: clamav, dash, dhcp, dovecot, efl,\n\tffmpeg, libv4l, mono, mosquitto, php, postgresql, qt,\n\tscanpypi, sdl2, systemd, tor, tvheadend, uboot, wavpack\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10831: qemu_x86_64_defconfig build fails on linux-headers..\n\n2018.02-rc3, Released February 27th, 2018\n\n\tFixes all over the tree.\n\n\tcheck-bin-arch: skip /lib/modules to allow 32-bit userland\n\twith 64bit kernel.\n\n\tdependencies: Blacklist tar 1.30+ and build our own host-tar\n\tif needed as tar 1.30+ changed the --numeric-owner output for\n\tlong path names. Build host-tar before other host-dependencies\n\tas they need it to extract their source tarballs.\n\n\tUpdate/fixed packages: asterisk, azmq, bluez5_utils, domoticz,\n\te2fsprogs, erlang, exim, glibc, gpsd, jq, libglib2, libvorbis,\n\tmariadb, mbedtls, mesa3d, mesa3d-headers, mpv, patch, pcre2,\n\tphp, qt5, qt5multimedia, qt5wayland, qt5webengine, qt5webkit,\n\tsystemd, quagga, rustc, uboot, wireguard, zic, zlib-ng\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10726: Current libglib2.mk creates broken libglib2 binary...\n\t#10786: Linux fails to build unless make linux-menuconfig...\n\t#10796: Cannot generate cpio image without selecting CON...\n\n2018.02-rc2, Released February 15th, 2018\n\n\tFixes all over the tree.\n\n\tDependencies: Ensure C++ support is available like for C\n\tsupport for packages needing 32bit host support.\n\n\tutils/genrandconfig: Check host dependencies for config.\n\n\tUpdated/fixed packages: busybox, dnsmasq, dropbear, ffmpeg,\n\tglibc, keepalived, libcpprestsdk, libgpiod, libmaxminddb,\n\tlibrsvg, libtasn1, libv4l, libxml2, lightning, ltp-testsuite,\n\tmesa3d, mesa3d-demos, mesa3d-headers, nftables, open-lldp,\n\tphp, postgresql, python-crossbar, qt5, qt53d, qt5enginio,\n\tqt5tools, qt5webengine, qt5webkit, rsync, rust-bin, rustc,\n\tsystemd\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#9781: ti-sgx-km build on kernel >4.1\n\t#10141: Squashfs extended attribute failures\n\n2018.02-rc1, Released February 5th, 2018\n\n\tThe global source-check and per-package <pkg>-source-check\n\ttargets have been removed.\n\n\tArchitecture: Add x86 Silvermont variant. Add several new ARM\n\tvariants, rework MIPS NaN logic. Support mainline binutils/gcc\n\tfor ARC.\n\n\tToolchains: Linaro toolchains upgraded to 2017.11 release, ARC\n\texternal toolchains upgraded to arc-2017.09. Libatomic is now\n\talso copied for external musl based toolchains.\n\tAdd binutils 2.30.x and switch to binutils 2.29.x by default.\n\n\tAdded hardening options to build with RELRO and FORTITY.\n\n\tNew defconfigs: Bananapi M64, FriendlyARM Nanopi A64 & NEO2,\n\timx6slevk, imx6sx-sdb, imx6ulevk, Olimex A64-OLinuXino,\n\tOrangepi lite / pc plus / pc / prime / win / win plus / zero\n\tplus2, Pine64, Solidrun MacchiatoBin. Sopine.\n\n\tAdd utils/diffconfig, a simple utility for comparing\n\tconfiguration files - Adapted from the version in the\n\tLinux kernel.\n\n\tInfrastructure: Check that the same file is not touched by\n\tmultiple packages, as a preparation for toplevel parallel\n\tbuilds.\n\n\tHashes for the license files for a large number of packages\n\thave been added, ensuring that license changes will not be\n\tmissed when packages are bumped.\n\n\tFix build issue for autotools based packages checking for C++\n\tsupport on toolchains without C++ support and on a distro\n\tlacking /lib/cpp (E.G. Arch Linux).\n\n\tSupport for the meson build system.\n\n\tPie charts generated by 'graph-build' or 'graph-size' are now\n\tsorted according to the size of each piece.\n\n\tSystem: Only show getty options when busybox init or sysvinit\n\tare used.\n\n\tARM-trusted-firmware: Support ATF bundled in U-Boot as\n\twell as U-Boot bundled in ATF.\n\n\tZlib is now a virtual package, provided by either libzlib or\n\tzlib-ng, similar to openssl.\n\n\tSupport for the Rust programming language.\n\n\tNew packages: aoetools, armbian-firmware, binaries-marvell,\n\tbrltty, cargo, cargo-bin, cups-filters, curlpp, daq,\n\tflatbuffers, gconf, glorytun, gstreamer1-mm, imx-m4fwloader,\n\timx-gpu-g2d, json-for-modern-cpp, libcpprestsdk, libgta,\n\tlibostree, libupnp18, luadbi, luadbi-sqlite3, lua-utf8, lynx,\n\tmeson, mv-ddr-marvell, nilfs-utils, opentracing-cpp,\n\topen-lldp, pimd, proj, python-flask-cors,\n\tpython-jaraco-classes, python-more-itertools, python-oauthlib,\n\tpython-raven, python-remi, python-requests-oauthlib,\n\tpython-schedule, python-secretstorage, python-see,\n\tpython-tabledata, python-txtorcon, python-xlib, qt5charts,\n\trtl8189fs, rtl8723bu, rust, rustc, rust-bin, rygel, safeclib,\n\tsolatus, tcf-agent, traceroute, waylandpp, wolfssl,\n\tzisofs-tools, zlib-ng\n\n\tRemoved packages: eeprog\n\n2017.11.2, Released January 21st, 2018\n\n\tImportant / security related fixes.\n\n\tExternal toolchain: libatomic is now also copied for musl\n\tbased toolchains.\n\n\tnconfig: Fix for ncurses/ncursesw linking issue causing crashes.\n\n\tSystem: Only show getty options when busybox init or sysvinit\n\tare used.\n\n\tInfrastructure: Fix build issue for autotools based packages\n\tchecking for C++ support on toolchains without C++ support and\n\ton a distro lacking /lib/cpp (E.G. Arch Linux).\n\n\tPie charts generated by 'graph-build' or 'graph-size' are now\n\tsorted according to the size of each piece.\n\n\tUpdated/fixed packages: asterisk, avahi, bind, busybox,\n\tcoreutils, eeprog, intel-microcode, iputils, irssi, kmsxx,\n\tlibiio, linux-firmware, lz4, mariadb, matchbox-lib, mcookie,\n\tntp, php, pound, rpcbind, tar, ti-cgt-pru, webkitgtk, xen,\n\txlib_libXpm\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9996: lz4 package does not install lz4 binaries in target\n\t#10176: Rsyslog's S01logging is deleted by Busybox.mk from...\n\t#10216: package/x11r7/mcookie/mcookie.c:207: bad size ?\n\t#10301: systemd/getty unused options\n\t#10331: kmsxx, host installation fails with BR2_SHARED_...\n\t#10556: Building ntp package with SSL library libressl...\n\t#10641: avahi-autoipd not starting when using systemd-tmpfiles\n\n2017.11.1, Released December 31th, 2017\n\n\tImportant / security related fixes.\n\n\tUpdated/fixed packages: asterisk, checkpolicy, dhcp, flann,\n\tgdb, glibc, heimdal, kodi-pvr-mediaportal-tvserver,\n\tkodi-pvr-stalker, libcue, libopenssl, libpqxx, libsoxr,\n\tlinknx, linux-tools, lldpd, ltp-testsuite, mariadb, mfgtools,\n\tnodejs, nut, pulseaudio, python-cffi, qemu, rsync, tor, uboot,\n\tuboot-tools, vlc, webkitgtk, weston, wireguard, wireshark,\n\txenomai, xfsprogs\n\n2017.11, Released November 30, 2017\n\n\tFixes all over the tree.\n\n\tToolchain: Use github mirror for Glibc.\n\n\tDefconfigs: Correct boot.cmd for bananapi-m1.\n\n\tMakefiles: Workaround include order issues for certain make\n\tversions by explicitly sorting the result of wildcard where it\n\tmatters.\n\n\tDownload: Ensure subversion runs in non-interactive mode.\n\n\tUpdated/fixed packages: asterisk, boost, chrony, dovecot,\n\tdvb-apps, exim, feh, freerdp, fwup, google-breakpad, jose,\n\tkvm-unit-test, lftp, libcurl, libevent, libfastjson, libpjsip,\n\tlibupnp, linphone, localedef, lttng-tools, mp4v2, mtools,\n\tndisc6, oracle-mysql, parted, pdbg, qt, qt5connectivity,\n\tqt5declarative, qt5webkit, rauc, runc, samba4, shairport-sync,\n\tsystemd-bootchart, webkitgtk, wireguard, xlib_libXcursor,\n\txlib_libXfont, xlib_libXfont2,\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t10501: host-localedef fails to compile on Ubuntu 17.10\n\t10506: Changed kernel image type (e.g. zImage to uImage)...\n\n2017.11-rc2, Released November 13th, 2017\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: collectd, ffmpeg, freerdp,\n\tgo-bootstrap, imagemagick, jimtcl, libpjsip, libplist, libuv,\n\tmesa3d, nodejs, ntp, openjpeg, postgresql, python-numpy, ruby,\n\tsnmp++, usb_modeswitch, util-linux, vboot-utils, webkitgtk,\n\twireshark, wpa_supplicant, xapp_xdriinfo\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#10326: mesa3d package fails to build when BR2_SHARED_STATIC_LIBS=y\n\t#10491: Cannot output security warning when compiled with buildroot..\n\n2017.11-rc1, Released November 6th, 2017\n\n\tFixes all over the tree and new features.\n\n\tOpenssl is now a virtual package, which may be provided by\n\tOpenSSL (now renamed to libopenssl) or LibreSSL.\n\n\tlibssh2: there is now an explicit choice of the backend to use\n\t(mbedtls, gnutls or openssl). Previously, the choice was implicit\n\tbased on the TLS library that was selected. Now, it is possible to\n\tchoose the backend, which is important if several TLS libraries are\n\tselected.\n\n\tnetsnmp: all MIB files are now installed, making the target filesystem a\n\tbit bigger than before. To remove unneeded MIBS, you should use a\n\tpost-build script.\n\n\tToolchain: Linaro toolchains updated to 2017.08, ARC toolchain\n\tupdated to 2017.09, Glibc updated to 2.26, Glibc support for\n\tARCv2. The toolchain wrapper now handles SOURCE_DATE_EPOCH for\n\tolder (pre-gcc7.x) toolchains for BR2_REPRODUCIBLE.\n\n\tNew defconfigs: Atmel SAM45D27, Bananapi M1 and M2 Plus,\n\tEngicam i.CoreM6 Qt5 configuration, i.MX6 sabreauto (mainline\n\tkernel/u-boot), i.MX6Q sabresd Qt5 configuration, i.MX7d-pico,\n\tQEMU ppc64le, Raspberry pi3 Qt5 webengine configuration,\n\tTechnologic TS-7680.\n\n\tNew packages: asterisk, azmq, bcg729, boinc, dahdi-linux,\n\tdahdi-tools, freeswitch-mod-bcg729, fscryptctl, libb64,\n\tlibpri, libss7, lua-basexx, lua-compat53, lua-cqueues,\n\tlua-curl, lua-datafile, lua-fifo, lua-httpd,\n\tlua-lpeg-patterns, lua-markdown, lua-sailor, lua-value,\n\tluksmeta, minetest, minetest-game, pdmenu, prosody,\n\tpython-aiocoap, python-automat, python-ibmiotf,\n\tpython-iso8601, python-m2r, python-simplesqlite,\n\tpython-websockets, python-xmltodict, qt5wayland, qt5webengine,\n\trestorecond, selinux-python, semodule-utils, uhubctl,\n\twireguard, wsapi-fcgi, wsapi-xavante\n\n\tRemoved packages: aiccu, rfkill, sepolgen\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#10281: lsblk does not compile for util-linux\n\t#10336: lttng compilation fails : linking error\n\t#10351: glibc missing in rootfs\n\t#10356: nfs-utils missing header\n\t#10361: python3 python-config script generates invalid includes\n\t#10366: dropbear download url has changed\n\t#10391: WiringPi retrieves wrong (old) version\n\t#10406: Beaglebone black: Buggy SGX driver version, swapped...\n\t#10426: uboot-tools' fw_setenv does not update the redundant...\n\t#10451: libpcap 1.8.x and 1.7x does not compile on PPC\n\n2017.08.2, Released November 28th, 2017\n\n\tImportant / security related fixes.\n\n\tQt: 5.6 version updated to 5.6.3.\n\n\tReproducible: Do not override SOURCE_DATE_EPOCH if already set\n\tin the environment.\n\n\tMakefiles: Workaround include order issues for certain make\n\tversions by explicitly sorting the result of wildcard where it\n\tmatters.\n\n\tUpdated/fixed packages: apr, apr-util, arqp-standalone,\n\tazure-iot-sdk-c, collectd, dvb-apps, ffmpeg, go-bootstrap,\n\tgoogle-breakpad, gstreamer, imagemagick, irssi, jimtcl,\n\tkvm-unit-test, libcurl, libfastjson, libglib2, libidn,\n\tlibpjsip, libplist, localedef, lttng-tools, luajit, mesa3d,\n\tmoarvm, mp4v2, openssh, openssl, oracle-mysql, postgresql,\n\tpython3, python-pyqt5, qt, qt5base, qt5canvas3d,\n\tqt5connectivity, qt5declarative, qt5engineio,\n\tqt5graphicaleffects, qt5imageformats, qt5location,\n\tqt5multimedia, qt5quickcontrols, qt5quickcontrols2, qt5script,\n\tqt5sensors, qt5serialbus, qt5serialport, qt5svg, qt5tools,\n\tqt5webchannel, qt5webkit, qt5websockets, qt5x11extras,\n\tqt5xmlpatterns, quagga, redis, ruby, samba4, sdl2, snmppp,\n\tswupdate, ti-gfx, uboot-tools, usb_modeswitch, vboot-utils,\n\twebkitgtk, wget, wireshark, xapp_xdriinfo.\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t10326: mesa3d package fails to build when BR2_SHARED_STATIC_LIBS=y\n\t10361: python3 python-config script generates invalid includes\n\t10501: host-localedef fails to compile on Ubuntu 17.10\n\n2017.08.1, Released October 23rd, 2017\n\n\tImportant / security related fixes.\n\n\tWebkitgtk bumped to the 2.18.x series, fixing a large number\n\tof security issues.\n\n\tDefconfigs: galileo: fix ext4 related kernel config, bump\n\tkernel for gcc 6.x compatibility, enable wchar support for\n\tgrub2. wandboard: correct rootfs offset\n\n\tsupport: Ensure gzip compression level 6 is used for git\n\ttarballs. check-bin-arch: Correctly handle (ignore) symbolic\n\tlinks. check-rpath: Also handle PIE binaries\n\n\tExternal toolchain: Correctly handle glibc Buildroot\n\ttoolchains built with merged /usr\n\n\tmusl: fix ARMv4 build with binutils 2.27.51+, fix for\n\tCVE-2017-15650\n\n\tUpdated/fixed packages: apache, augeas, bind, bluez5_utils,\n\tbusybox, bzip2, cmake, dnsmasq, ejabberd, gcc, git, go, ffmpeg, file,\n\tflashrom, gd, gdk-pixbug, gnupg2, hostapd, ifupdown-scripts,\n\timagemagick, iucode-tool, kernel-module-imx-gpu-viv, lame,\n\tlibarchive, libcurl, libffi, libidn, libmbim, libnspr, libnss,\n\tlibressl, librsync, libsoup, libxml2, libzip, mbedtls, musl,\n\tnetplug, nginx, openvpn, pkgconf, poppler, proxychains-ng,\n\tqemu, qt, rpi-userland, syslog, ruby, samba4, softether,\n\tsqlite, strongswan, subversion, supertuxkart, supervisor, tcpdump,\n\ttor, unrar, urq, vboot-utils, webkitgtk, wpa_supplicant, xen,\n\txmlstarlet, xlib_libXfont, xlib_libXfont2,\n\txserver_xorg-server, zsh\n\n2017.08, Released September 1st, 2017\n\n\tMinor fixes.\n\n\tToolchain: Don't allow internal toolchain builds for MIPS\n\tM6201/P6600, as support for these are not yet in mainline GCC.\n\n\tUpdated/fixed packages: bcusdk, connman, dialog, dnsmasq,\n\tgnupg, grub2, iostat, iucode-tool, libgcrypt, libkcapi,\n\tlibphidget, libv4l, linux-tools, mediastreamer, minidlna,\n\tnss-pam-ldapd, nvidia-driver, qt-webkit-kiosk, rpcbind, squid,\n\ttransmission, vde2, vim\n\n\tUpdated/fixed defconfigs:\n\n\tRemoved packages: simicfs.\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#10261: Grub2 fails to build for x86_64\n\n2017.08-rc3, Released August 23rd, 2017\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: alsa-lib, alsa-utils, cc-tool,\n\tdbus-cpp, e2fsprogs, elf2flt, faad2, fakeroot, gcc, git, gpsd,\n\tgst1-validate, kvmtool, libconfuse, libepoxy, librsync,\n\tlibspatialindex, libunwind, linux, linux-headers, lua,\n\tmariadb, mesa3d, mtd, openocd, python3, syslinux, sysvinit,\n\twhois, xen, zmqpp.\n\n\tUpdated/fixed defconfigs: ci20, socrates_cyclone5,\n\ttoradex_apalis_imx6.\n\n\tRemoved defconfig: Armadeus APF9328.\n\n\tskeleton-* packages introduced in -rc1 have been renamed to\n\tskeleton-init-* instead.\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#10141: Squashfs extended attribute failures\n\n2017.08-rc2, Released August 11th, 2017\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: bind, dbus, erlang-p1-xml, faad2,\n\tficl, gcc, gdb, glibc, jack2, libcurl, linux, linux-headers,\n\tlua, mutt, nvme, qt5base, skeleton-common, snappy, stella,\n\tswupdate, uclibc, valgrind, webkitgtk.\n\n\tUpdated/fixed defconfigs: beaglebone_qt5, minnowboard_max,\n\tnanopi_m1{, _plus}, olimex_a20_olinuxino_lime, qemu_sparc,\n\tqemu_sparc64.\n\n\tThe cmake-package infrastructure for host packages has been\n\tfixed to not incorrectly detect target packages through\n\tpkg-config.\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9926:  systemd-resolved.service: Failed at step NAMESPACE (systemd 233)\n\t#10021: libqeglfs-viv-integration.so file is missing for qt5 on armv7\n\t#10026: lua-5.3.4: fix lua linker error in swupdate\n\t#10146: package/skeleton-common fix recursive variable\n\t#10156: glibc compilation fails for X86 32bits (i386)\n\t#10201: toolchain-wrapper.c:192: (error) Memory leak:\n\t#10221: Buildroot Support\n\n2017.08-rc1, Released August 2nd, 2017\n\n\tInfrastructure:\n\n\t- The skeleton package has been split into multiple packages:\n\t  skeleton-sysv (when Busybox or SysV init are used),\n\t  skeleton-systemd (when systemd is used), skeleton-none (when\n\t  no init system is used) and skeleton-custom (when a custom\n\t  skeleton is used). Those packages, except skeleton-custom,\n\t  share common logic and data in a new package called\n\t  skeleton-common. The skeleton package becomes a virtual\n\t  package. This change allows to generate a filesystem that is\n\t  compliant with systemd expectations.\n\n\t- Support for using a read-only filesystem with systemd has\n\t  been fixed.\n\n\t- Major revamp of the gettext handling, with user-visible\n\t  effect:\n\n\t  - prior to this revamp, when BR2_ENABLE_LOCALE=y, each\n\t    package could decide to enable or not NLS support. When\n\t    BR2_ENABLE_LOCALE was disabled, NLS support was forced off\n\t    by passing --disable-nls to packages.\n\n\t  - after this revamp, a new BR2_SYSTEM_ENABLE_NLS option\n\t    controls whether NLS support should be enabled or not in\n\t    packages. This option defaults to disabled, which means\n\t    that now, NLS support is by default disabled in all\n\t    packages.\n\n\t  Therefore, if you need NLS support in packages, you must now\n\t  explicitly enable the BR2_SYSTEM_ENABLE_NLS option.\n\n\t- The host directory no longer has a usr/ component. This\n\t  makes it much more natural to use that directory as an\n\t  externally used toolchain. For compatibility with existing\n\t  scripts, a usr -> . link is still added.\n\n\t- Hashes are now checked on tarballs by Buildroot when a\n\t  package is sourced from a Git repository.\n\n\t- Patches are no longer being downloaded from Github, since\n\t  auto-generated patches could change over time, and break\n\t  hashes. All patches that were downloaded from Github are now\n\t  stored in their respective package directories.\n\n\t- Hash files in packages can now contain hashes for the\n\t  license files contained in the package source code. This\n\t  allows to detect changes in such license files.\n\n\t- Binaries in $(TARGET_DIR) are now cleaned up from invalid\n\t  RPATHs at the end of the build.\n\n\t- A new \"make sdk\" target prepares $(HOST_DIR) to be\n\t  relocatable: turns RPATHs in host binaries into relocatable\n\t  ones, removes bogus RPATHs from staging binaries/libraries,\n\t  and provides a relocate-sdk script that can be executed to\n\t  relocate the SDK after installation.\n\n\t- Addition of utils/genrandconfig which generates a random\n\t  configuration based on a set of pre-defined toolchain\n\t  configurations (support/config-fragments/autobuild/) and a\n\t  random selection of packages. It is now used by the\n\t  autobuilders to generate the random configurations.\n\n\tFilesystems:\n\n\t- ext2/3/4 filesystems are now generated using mkfs.ext from\n\t  e2fsprogs instead of using genext2fs.\n\n\tArchitecture:\n\n\t- Addition of support for ARM big.LITTLE variants\n\t- Improved MIPS support, with options to select NaN encoding\n\t  and FP32 mode.\n\n\tToolchain:\n\n\t- Switch to gcc 6.x as the default gcc version, add support\n\t  for gcc 7.x, remove support for gcc 4.8\n\t- Switch to binutils 2.28 as the default binutils version, add\n\t  support for binutils 2.29, remove support for binutils 2.26\n\t- Support added for gdb 8.0\n\t- uClibc-ng bumped to 1.0.26\n\t- CodeSourcery toolchains for x86 and SuperH have been\n\t  removed, they were using a too old glibc version\n\t  (2.17). External toolchains with glibc 2.17 or earlier are\n\t  no longer supported.\n\t- The version selection in the glibc package has been\n\t  removed. Like musl and uClibc-ng, we now use the latest\n\t  glibc version.\n\t- Improved support for Xtensa toolchain overlays, which can\n\t  now be downloaded.\n\n\tTools:\n\n\t- Numerous improvements to the runtime test infrastructure\n\t- Tests are now executed by Gitlab CI on a regular basis\n\t- Tools that are directly useful to the user have been moved\n\t  from support/scripts/ to utils/: brmake, check-package,\n\t  get-developers, scancpan, scanpipy, size-stats-compare,\n\t  test-pkg.\n\n\tNew defconfigs: A13 Olinuxino, Engicam platforms (i.CoreM6\n\tSolo/Dual/DualLite/Quad, RQS SOM, GEAM6UL SOM, Is.IoT MX6UL\n\tSOM), Nano Pi M1 (Plus), OrangePi Zero and Plus.\n\n\tNew packages: azure-iot-sdk-c, cracklib, dt-utils, easy-rsa,\n\terlang-jiffy, erlang-p1-oauth2, erlang-p1-xmpp,\n\tifupdown-scripts, irrlicht, kodi-inputstream-adaptive,\n\tkodi-inputstream-rtmp, kvazaar, let-me-create, libloki,\n\tlibpwquality, libressl, libspatialindex, libva-utils,\n\tlinuxconsoletools, linuxptp, luaossl, lua-sdl2, lua-stdlib,\n\tlsscsi, paxtest, pcre2, pixz, python-asn1crypto,\n\tpython-backports-shutil-get-terminal-size, python-bcrypt,\n\tpython-cheroot, python-h2, python-hpack, python-hyperframe,\n\tpython-hyperlink, python-ipython-genutils, python-pathlib2,\n\tpython-pickleshare, python-priority, python-portend,\n\tpython-scandir, python-systemd, python-tempora,\n\tpython-traitlets, python-typepy, qt5virtualkeyboard,\n\tratpoison, rauc, refpolicy, rhash, sdl2_mixer, sdl2_net,\n\txr819-xradio, zstd\n\n\tRemoved packages: cloog, input-tools, mke2img\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#7892: systemd-journald is broken\n\t#9341: avahi-utils does not compile with uClibc +  libglib2\n\t#9441: Link BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY to\n\t       BR2_ENABLE_DEBUG\n\t#9746: ext4 image generated by Buildroot is not working\n\t       properly with U-Boot\n\t#9886: Build fails with \"unexpected EOF while looking for\n\t       matching `\"'\" if PATH contains a newline\n\t#9891: parted 3.1 => 3.2?\n\t#9911: qt5 does not build on sparc\n\t#9916: qt5 does not build on\n\t       arm-buildroot-linux-uclibcgnueabihf for ARMv8 cores\n\t#9936: Host QEMU does not build with SDL support because of\n\t       pkg-config\n\t#9941: nodejs option disappears for arm\n\t#9951: SCANCPAN failure\n\t#9966: util-linux-2.30/.stamp_built' failed\n\t#9976: License file for package 'rtl8821au' incorrect\n\t#9991: SGX Error implicit declaration of function\n\t       ‘dmac_map_area’\n\t#10011: wget does not work from Buildroot\n\t#10036: Buildroot builds Raspbian Jessie headless image\n\t\tpresenting incorrect prompt\n\t#10051: make: *** No rule to make target\n\t\t'raspberrpi3_defconfig'. Stop reported with Buildroot\n\t\tv2017.05.1\n\t#10056: No .config file was produced in /buildroot folder\n\t#10061: gcc5.4 buildroot toolchain for powerpc libsanitizer\n\t\tfailure\n\t#10071: fakeroot: replace hard-coded paths in post install\n\t#10076: Makefile:4113: recipe for target 'all-gcc'  failed\n\t#10091: gcc7.1 does not build with graphite support due to old\n\t\tisl\n\t#10121: webkit without the multimedia option causes build\n\t\terror\n\n2017.05.2, Released July 27th, 2017\n\n\tImportant / security related fixes.\n\n\tWebkitgtk bumped to the 2.16.x series, fixing a large number\n\tof security issues.\n\n\thost-aespipe compile fix for Debian/Gentoo/Ubuntu toolchains\n\twhich default to PIE mode.\n\n\tUpdated/fixed packages: aespipe, apache, bind, binutils,\n\tbusybox, ccache, collectd, dieharder, efibootmgr, efivar,\n\texpat, ffmpeg, gcc, heimdal, iproute2, irssi, libglib2,\n\tlibmemcached, libosip2, libtirpc, libxml-parser-perl,\n\tlinux-fusion, linux-zigbee, mpg123, orc, pcre, php, protobuf,\n\tpulseaudio, python-setproctitle, qt5base, rpi-firmware,\n\tsamba4, syslinux, systemd, spice, tcpdump, tiff, uboot-tools,\n\twebkitgtk, x265, xserver_xorg-server, xvisor\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#10061: gcc5.4 buildroot toolchain for powerpc libsanitizer...\n\n2017.05.1, Released July 4th, 2017\n\n\tImportant / security related fixes.\n\n\tUpdate support/scripts/scancpan to use METACPAN v1 API as v0\n\thas been shutdown.\n\n\tUpdate support/scripts/mkusers to handle setups where\n\t/etc/shadow is a symlink.\n\n\tExternal toolchain: Don't create musl dynamic loader symlink\n\tfor static builds.\n\n\tSetlocalversion: Correct detection of mercurial revisions for\n\tnon-tagged versions.\n\n\tDefconfigs: at91sam9x5ek_mmc: workaround boot rom issue.\n\n\tUpdated/fixed packages: apache, automake, bind, botan, c-ares,\n\tdhcp, expat, fcgiwrap, gcc, gdb, gesftpserver, glibc, glmark2,\n\tgnutls, gst1-plugins-bad, imagemagick, imx-uuc, intltool,\n\tiperf, ipsec-tools, irssi, kmod, libcurl, libgcrypt, libmad,\n\tlibnl, lugaro, mosquitto, mpg123, ncurses, nodejs, ntp,\n\topenssh, openvpn, pngquant, python-simplegeneric, qt5base,\n\tqt5multimedia, rtl8821au, socat, spice, systemd, tor, trinity,\n\ttslib, vlc, x264, xen, xlib_libxshmfenc, xserver_xorg-server\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9976: License file for package 'rtl8821au' incorrect\n\n2017.05, Released May 31st, 2017\n\n\tMinor fixes.\n\n\tExternal toolchain: musl dynamic linker symlink for mips-sf\n\tcorrected.\n\n\tUpdated/fixed packages: agentpp, bash, exim, hans, madplay,\n\tqpid-proton, rtl8188eu, snmppp, stm32flash, strongswan, sudo,\n\txen\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9906: genimage: Disk full\n\n2017.05-rc3, Released May 30th, 2017\n\n\tFixes all over the tree.\n\n\tARC toolchain bumped to 2017.03\n\n\tRuntime testing improvements and cleanups.\n\n\tUpdated/fixed packages: acpica, armadillo, audiofile, c-icap,\n\tcppcms, dhcp, docker-engine, dropbear, elfutils, erlang,\n\tfbgrab, ffmpeg, flashrom, ftop, gnutls, google-breakpad,\n\tkeepalived, kodi, libcdio, libepoxy, libev, libminiupnpc,\n\tlibqmi, libtasn1, libv4l, mariadb, mono, mosh, mosquitto,\n\tmxml, ntp, opencv, openpowerlink, oracle-mysql, popt,\n\tpulseview, python-enum34, rabbitmq-c, redis, samba4, stella,\n\txen\n\n\tRemoved packages: firejail, ola\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9871: fbgrab 1.3 won't build with BR2_REPRODUCIBLE set\n\t#9876: aarch64 support with gcc 4.8 toolchain\n\t#9896: host-gcc-initial error downloading because incorrect URL\n\n2017.05-rc2, Released May 17th, 2017\n\n\tFixes all over the tree.\n\n\tARC toolchain bumped to 2017.03-rc2\n\n\tUpdated/fixed packages: bluez_utils, boost, clamav, daemon,\n\tefibootmgr, efl, espeak, expedite, faketime, ffmpeg, fxload,\n\tgit, gpsd, kvm-unit-tests, libcdio, libv4l, lua, mke2img,\n\tmpir, mpv, odroid-scripts, openblas, opencv3, openvpn, php,\n\tpostgresql, protobuf, qt5declarative, qwt, radvd, rpcbind,\n\trtmpdump, strongswan, sudo, ltp-testsuite, uclibc-ng-test,\n\tvlc, x11vnc, xfsprogs\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9796: source-check broken for Git downloads\n\t#9866: BASE_DIR usage\n\n2017.05-rc1, Released May 8th, 2017\n\n\tFixes all over the tree and new features.\n\n\tInfrastructure:\n\n\t- Installed binaries are now checked for correct architecture\n\t  to catch natively built binaries or binaries built for other\n\t  architecture variants.\n\n\t- Luarocks infrastructure improvements to extraction handling,\n\t  support for upstream name != Buildroot package name.\n\n\t- 'make printvars' output format has changed to make it easier\n\t  to use in scripts. It now has options to quote the variables\n\t  and to show the expanded/unexpanded values.\n\n\t- Automatic ext2 rootfs size calculation has been removed. The\n\t  logic was not working working reliable in all setups as it\n\t  depends on the host filesystem behaviour, so instead now the\n\t  size has to be specified explicitly (defaults to 60MB).\n\n\t- The git download infrastructure now ensures that GNU format\n\t  tar files are created.\n\n\t- Fixed a variable clashing issue in the mkusers script with\n\t  internal bash variables.\n\n\t- Fakeroot now links against libacl to fix issues on\n\t  distributions using acls.\n\n\t- Correct permissions for /dev/pts/ptmx when systemd is used\n\t  with recent glibc versions.\n\n\t- br2-external: Improve error reporting.\n\n\t- A wrapper script for genimage has been added in\n\t  support/scripts/genimage.sh for easy use of genimage from\n\t  post-image scripts.\n\n\t- A script to check for common style issues in new packages\n\t  before submitting has been added in support/scripts/check-package\n\n\t- Defconfigs are now tested by gitlab-CI instead of Travis:\n\t  https://gitlab.com/buildroot.org/buildroot\n\n\t- Infrastructure for runtime testing has been added to\n          support/testing\n\n\tToolchain:\n\n\t- External linaro toolchains updated to 2017.02, ARC toolchain\n          updated to 2017.03-rc1, NIOSII CodeSourcery to 2017.05\n\n\t- A number of fixes and improvements to the external toolchain\n\t  handling, including C library detection, multilib and ld.so\n\t  handling\n\n\t- Glibc 2.25 and uClibc-ng 1.0.24 added, wordexp support enabled\n          for uClibc-ng\n\n\t- Binutils 2.28 added and default changed to 2.27\n\n\n\tArchitectures:\n\n\t- Support for the C-SKY architecture has been added.\n\n\n\tLicense handling:\n\n\t- The package license markings for legal info now uses the\n\t  SPDX short identifiers for the license string where possible.\n\n\t- License info has been improved / added for a number of packages.\n\n\n\tMisc:\n\n\t- Cmake 3.7.x installed on the host is no longer ignored as a\n          workaround for the RPATH issues has been implemented.\n\n\t- Docker-engine can now be built statically on an otherwise\n\t  dynamic linked build for docker-in-docker setups.\n\n\t- U-Boot now supports out-of-tree device trees, similar to\n          Linux\n\n\t- Nodejs 0.10.x support (and with it, support for <ARMv6) has\n          been removed as this is now EOL upstream.\n\n\tNew defconfigs: AT91sam9x5ek dev/mmc/mmc-dev, banana pro,\n\tNationalchip gx6605s, MIPS creator ci40, nexbox a95x, 64bit\n\tdefconfig for raspberry pi 3, stm32f429-disc1.\n\n\tThe raspberry pi zero-w and rpi3 compute module are now also\n\tsupported by the rpi0 / rpi3 defconfigs, beaglebone green is\n\tsupported by the beaglebone defconfig.\n\n\tRemoved defconfig: minnowboard, via imx6 vab820, altera\n\tsocdk/sockit\n\n\tNew packages: arp-scan, atest, augeas, bluez-tools, daemon,\n\tdc3dd, dieharder, execline, fmt, ghostscript, gqrx,\n\tgst1-vaapi, jo, keepalived, kmscube, kodi-jsonschemabuilder,\n\tkodi-skin-confluence, kodi-texturepacker, lensfun, leptonica,\n\tlibbson, libcsv, libgphoto2, libkcapi, libmaxminddb,\n\tlibmediaart, libnpth, libscrypt, lua-bit32, lua-resty-http,\n\tlugaru, memtool, mpir, nanomsg, physfs, phytool, pngquant,\n\tpython-decorator, python-simplegeneric,\n\tpython-sortedcontainers, rpi-bt-firmware, rpi-wifi-firmware,\n\ts6, s6-dns, s6-linux-init, s6-linux-utils, s6-networking,\n\ts6-portable-utils, s6-rc, supertux, tesseract-ocr,\n\tuccp420wlan, wilink-bt-firmware\n\n\tBroken packages: ola\n\n\tRemoved packages: cosmo, kodi-visualisation-fountain,\n\tpolarssl, portmap, xdriver_xf86-video-glide,\n\txdriver_xf86-video-v4l, xdriver_xf86-video-wsfb\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#8831: image generation fails on host ZFS due to \"no free space\"\n\t#9436: e2fsprogs remove busybox applets even of unselected e2fs..\n\t#9456: mkusers script bash errors\n\t#9496: mke2img fails during build on ntfs-3g host partition\n\t#9531: NPM fails to build embedded modules\n\t#9596: KODI: --enable-lirc needs \"HAVE_LIRC\" compiler definition..\n\t#9691: Wrong cryptsetup package include files location\n\t#9696: Wrong cryptsetup package include files location\n\t#9706: Can't download newer revisions of package from PyPI\n\t#9711: Recent libCEC version bump seems to break kodi package\n\t#9716: exit, shutdown, reboot from kodi\n\t#9721: version 2017.02: no acceptable m4 could be found in $PATH\n\t#9726: Raspberry Pi version B - Problems with UART speed in..\n\t#9751: expat legal info - manifest.csv: GPLv2 Source site: MIT..\n\t#9756: glibc fails to build on buildroot-sh4*-buildroot-linux-gnu\n\t#9766: support/scripts/pkgutil.py conflicts with the pkgutil.py..\n\t#9776: libubox build failed\n\t#9791: Python searches for packages in the user site directory\n\t#9806: libseccomp is not available when BR2_arm=y\n\t#9826: post-build scritp - symlinks created in post-build script..\n\t#9836: triggerhappy: systemd unit broken\n\t#9846: musl libc not installed correctly in target folder\n\t#9856: build libubox failed on ubuntu 17.04 64bit\n\n2017.02.11, Released April 11th, 2018\n\n\tImportant / security related fixes.\n\n\tdependencies: Blacklist tar 1.30+ and build our own host-tar\n\tif needed as tar 1.30+ changed the --numeric-owner output for\n\tlong path names. Build host-tar before other host-dependencies\n\tas they need it to extract their source tarballs.\n\n\tUpdated/fixed packages: apache, busybox, clamav, dhcp,\n\tdnsmasq, dovecot, exim, imagemagick, irssi, jq, libcurl,\n\tlibpjsip, librsvg, libtasn1, libvorbis, libxml2, lz4, mariadb,\n\tmbedtls, mosquitto, ntp, openblas, opencv3, openssl, patch,\n\tpostgresql, python-webpy, qt53d, qt5tools, quagga, rsync,\n\tsamba4, sngrep, tremor, wavpack, wireshark, xerces, xterm\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#10856: openblas on qemu_x86_64_defconfig fails with \"sgemm_..\n\n2017.02.10, Released January 31st, 2018\n\n\tImportant / security related fixes.\n\n\tnconfig: Fix for ncurses/ncursesw linking issue causing crashes.\n\n\tSystem: Only show getty options when busybox init or sysvinit\n\tare used.\n\n\tInfrastructure: Fix build issue for autotools based packages\n\tchecking for C++ support on toolchains without C++ support and\n\ton a distro lacking /lib/cpp (E.G. Arch Linux).\n\n\tUpdated/fixed packages: avahi, berkeleydb, bind, busybox,\n\tccache, clamav, coreutils, dovecot, eeprog, eudev, fis,\n\tintel-microcode, iputils, irssi, kmsxx, libcurl, liberation,\n\tlibiio, lz4, mariadb, matchbox-lib, mcookie, openocd, php,\n\tpound, rpcbind, squid, tar, ti-cgt-pru, transmission,\n\tutil-linux, webkitgtk, wireshark, xen\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9996: lz4 package does not install lz4 binaries in target\n\t#10176: Rsyslog's S01logging is deleted by Busybox.mk from...\n\t#10216: package/x11r7/mcookie/mcookie.c:207: bad size ?\n\t#10301: systemd/getty unused options\n\t#10331: kmsxx, host installation fails with BR2_SHARED_...\n\t#10536: Finding non-relative paths in the ccache\n\t#10641: avahi-autoipd not starting when using systemd-tmpfiles\n\n2017.02.9, Released January 1st, 2018\n\n\tImportant / security related fixes.\n\n\tFix divide by zero issue in size-stats script.\n\n\tFix makefile include ordering issue with certain make versions\n\tin the external toolchain handling.\n\n\tUpdated/fixed packages: dhcp, exim, flann, gdb, heimdal,\n\tlibcue, libcurl, libevent, libpqxx, libsoxr, linphone, lldpd,\n\tmariadb, mfgtools, mtools, nodejs, nut, openssl, rsync,\n\tsamba4, tor, vlc, webkitgtk, wireshark, xfsprogs,\n\txlib_libXcursor, xlib_libXfont, xlib_libXfont2\n\n2017.02.8, Released November 27th, 2017\n\n\tImportant / security related fixes.\n\n\tQt: 5.6 version updated to 5.6.3.\n\n\tReproducible: Do not override SOURCE_DATE_EPOCH if already set\n\tin the environment.\n\n\tUpdated/fixed packages: apr, apr-util, arqp-standalone,\n\tcollectd, dvb-apps, ffmpeg, google-breakpad, gstreamer,\n\timagemagick, libfastjson, libglib2, libpjsip, libplist,\n\tlocaledef, luajit, mesa3d, openssh, openssl, postgresql,\n\tpython3, python-pyqt5, qt5base, qt5canvas3d, qt5connectivity,\n\tqt5declarative, qt5engineio, qt5graphicaleffects,\n\tqt5imageformats, qt5location, qt5multimedia, qt5quickcontrols,\n\tqt5quickcontrols2, qt5script, qt5sensors, qt5serialbus,\n\tqt5serialport, qt5svg, qt5tools, qt5webchannel, qt5webkit,\n\tqt5websockets, qt5x11extras, qt5xmlpatterns, quagga, ruby,\n\tsamba4, snmppp, ti-gfx, vboot-utils, webkitgtk, wireshark,\n\txapp_xdriinfo.\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t10326: mesa3d package fails to build when BR2_SHARED_STATIC_LIBS=y\n\t10361: python3 python-config script generates invalid includes\n\t10501: host-localedef fails to compile on Ubuntu 17.10\n\n2017.02.7, Released October 28th, 2017\n\n\tImportant / security related fixes.\n\n\tWebkitgtk bumped to the 2.18.x series, fixing a large number\n\tof security issues.\n\n\tDefconfigs: wandboard: Correct rootfs offset\n\n\tToolchain: Linaro toolchains updated to 2017.08 release,\n\tfixing a number of issues. Musl: fix for CVE-2017-15650.\n\n\tUpdated/fixed packages: busybox, bzip2, dnsmasq, git, go,\n\thostapd, irssi, iucode-tool, lame, libcurl, libffi, libnspr,\n\tlibnss, nodejs, openssh, openvpn, qemu, qt, redis, sdl2,\n\twebkitgtk, wget, wpa_supplicant, xen, xlib_libXfont,\n\txlib_libXfont2, xserver_xorg-server\n\n2017.02.6, Released September 24th, 2017\n\n\tImportant / security related fixes.\n\n\tCmake: Ensure correct pkg-config is used when building host\n\tpackages\n\n\tfs/iso9660: Ensure files from earlier builds are not included.\n\n\tUpdated/fixed packages: apache, bcusdk, bind, binutils,\n\tbluez5_utils, botan, cmake, connman, dbus, dialog, e2fsprogs,\n\tfaad2, fakeroot, ffmpeg, file, flashrom, gcc, gd, gdb,\n\tgdk-pixbuf, git, gnupg, gpsd, grub2, gst1-plugins-bad,\n\timagemagick, iostat, iucode-tool, jack2, libarchive, libcurl,\n\tlibgcrypt, libidn, libphidget, librsync, librsvg, libsoup,\n\tlibxml2, linux-tools, lua, mariadb, mbedtls, mediastreamer,\n\tminidlna, netplug, nss-pam-ldapd, nvidia-driver, openjpeg,\n\tpostgresql, proxychains-ng, python-libconfig,\n\tpython-service-identity, qt, rpcbind, ruby, samba4, squashfs,\n\tsquid, strongswan, subversion, supervisor, sysvinit, tcpdump,\n\ttor, transmission, unrar, valgrind, vim, webkitgtk, whois,\n\txen, zmqpp\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#10141: Squashfs extended attribute failures\n\t#10261: Grub2 fails to build for x86_64\n\t#10276: BR2_PACKAGE_LINUX_TOOLS_GPIO fails for MIPS with...\n\n2017.02.5, Released July 27th, 2017\n\n\tImportant / security related fixes.\n\n\tWebkitgtk bumped to the 2.16.x series, fixing a large number\n\tof security issues.\n\n\thost-aespipe compile fix for Debian/Gentoo/Ubuntu toolchains\n\twhich default to PIE mode.\n\n\tUpdated/fixed packages: aespipe, apache, bind, binutils,\n\tbusybox, ccache, collectd, efibootmgr, efivar, expat, ffmpeg,\n\tgcc, heimdal, iproute2, irssi, libglib2, libmemcached,\n\tlibosip2, libtirpc, libxml-parser-perl, linux-fusion,\n\tlinux-zigbee, mpg123, nodejs, orc, pcre, php, pulseaudio,\n\tpython-setproctitle, qt5base, rpi-firmware, samba4, syslinux,\n\tsystemd, spice, tcpdump, tiff, webkitgtk, x265, xen,\n\txserver_xorg-server, xvisor\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#10061: gcc5.4 buildroot toolchain for powerpc libsanitizer...\n\n2017.02.4, Released July 4th, 2017\n\n\tImportant / security related fixes.\n\n\tUpdate support/scripts/scancpan to use METACPAN v1 API as v0\n\thas been shutdown.\n\n\tUpdate support/scripts/mkusers to handle setups where\n\t/etc/shadow is a symlink.\n\n\tExternal toolchain: Don't create musl dynamic loader symlink\n\tfor static builds.\n\n\tSetlocalversion: Correct detection of mercurial revisions for\n\tnon-tagged versions.\n\n\tUpdated/fixed packages: apache, automake, bind, botan, c-ares,\n\tdhcp, expat, fcgiwrap, gcc, gdb, gesftpserver, glibc, gnutls,\n\tgst1-plugins-bad, imagemagick, imx-uuc, intltool, iperf,\n\tipsec-tools, irssi, libgcrypt, libmad, libnl, mosquitto,\n\tmpg123, ncurses, nodejs, ntp, openssh, openvpn, qt5base,\n\tqt5multimedia, rtl8821au, socat, spice, systemd, tor, tslib,\n\tvlc, x264, xserver_xorg-server\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9976: License file for package 'rtl8821au' incorrect\n\n2017.02.3, Released June 2nd, 2017\n\n\tImportant / security related fixes.\n\n\tDownload: <pkg>-source-check fixed for packages from git.\n\n\tExternal toolchain: musl dynamic linker symlink for mips-sf\n\tcorrected.\n\n\tUpdated/fixed packages: armadillo, audiofile, bash,\n\tbluez_utils, cppcms, dbus, dhcp, dropbear, efibootmgr, efl,\n\telfutils, faketime, fbgrab, flashrom, ftop, gdb, git,\n\tgoogle-breakpad, gpsd, hans, kvm-unit-tests, kyua, libev,\n\tlibmicrohttpd, libminiupnpc, libtasn1, libubox, ltp-testsuite,\n\tlua, madplay, mariadb, mono, mosquitto, mxml, ntp,\n\tnvidia-driver, openblas, openvpn, oracle-mysql, picocom, popt,\n\tpostgresql, pulseview, qt5base, qwt, rabbitmq-c, redis,\n\trpcbind, rtmpdump, samba4, strongswan, sudo, vlc\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9796: source-check broken for Git downloads\n\t#9871: fbgrab 1.3 won't build with BR2_REPRODUCIBLE set\n\n2017.02.2, Released May 1st, 2017\n\n\tImportant / security related fixes.\n\n\tUse HTTPS for the Codesourcery external toolchains as the HTTP\n\tURLs no longer work.\n\n\tUpdated/fixed packages: bind, busybox, dovecot, freetype,\n\tghostscript, glibc, granite, hiredis, icu, imagemagick,\n\tgst-plugins-base, gst1-plugins-base, libcroco, libcurl, libnl,\n\tlibnspr, libnss, libsamplerate, libsndfile, libunwind,\n\tminicom, mplayer, mpv, nodejs, python-django, python-pyyaml,\n\tpython-web2py, samba4, syslinux, systemd, tiff, trinity,\n\tuboot, wireshark, xen\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9791: Python searches for packages in the user site directory\n\n2017.02.1, Released April 4th, 2017\n\n\tImportant / security related fixes.\n\n\tFix a variable clashing issue in the mkusers script with\n\tinternal bash variables.\n\n\tImprove external toolchain version detection.\n\n\tCorrect permissions for /dev/pts/ptmx when systemd is used\n\twith recent glibc versions.\n\n\tFix python module name clash for graph-depends.\n\n\tFakeroot now links against libacl to fix issues on\n\tdistributions using acls.\n\n\tEnsure that the git download infrastructure creates GNU format\n\ttar files.\n\n\tbr2-external: Improve error reporting.\n\n\tUpdated/fixed packages: acl, apr, audiofile, busybox, cairo,\n\tdbus-cpp, dbus-glib, dbus-triggerd, domoticz, elfutils,\n\tfakeroot, filemq, fmc, gdb, git, gnutls, gst-ffmpeg,\n\tgst1-plygins-bad, harfbuzz, htop, imagemagick, jasper, libcec,\n\tlibiio, libplatform, librsvg, libselinux, libsidplay2, libsoc,\n\tlibwebsockets, libxkbcommon, linux-firmware, logrotate,\n\tlpt-testsuite, lttng-libust, mariadb, mbedtls, memcached,\n\tmesa3d, mpd, mplayer, nbd, ncftp, ntp, openssh, opentyrian,\n\tpcre, perl-gd, python, qt5base, rpi-userland, rpm, samba4,\n\tskalibs, slang, sngrep, squashfs, syslog-ng, taglib,\n\ttcpreplay, tor, upmpdcli, wget, wireshark,\n\txdriver_xf86-video-vmware, xlib_libXv, zmqpp\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9456: mkusers script bash errors\n\n2017.02, Released February 28th, 2017\n\n\tMinor fixes, mainly fixing autobuilder issues.\n\n\tDon't use cmake 3.7.x from the build host as it is also\n\taffected by the RPATH handling issues, and instead build our\n\town if needed.\n\n\tUpdated/fixed packages: assimp, classpath, genimage, mplayer,\n\tmpv, openocd, python-libconfig, qt5base, qt5quickcontrols,\n\tvlc, xterm\n\n2017.02-rc3, Released February 26th, 2017\n\n\tFixes all over the tree.\n\n\tCmake reverted to version 3.6.3 to workaround regressions\n\trelated to RPATH handling.\n\n\tUpdated/fixed packages: bctoolbox, berkeleydb, binutils,\n\tbtrfs-progs, classpath, directfb, glibc, gstreamer1,\n\tgst1-plugins-{base,good,bad,ugly}, gst1-libav,\n\tgst1-rtsp-server, gst1-validate, gst-omx, htop, libcurl,\n\tlibepoxy, libimxvpuapi, libpcap, libuv, ncurses, openssh,\n\toracle-mysql, poco, python, qt5base, qt5webkit, sslh, synergy,\n\ttrousers, uclibc-ng-test, util-linux, vlc, xfsprogs\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9251: Shared C++ libraries for Microblaze results in Segmentation...\n\t#9456: mkusers script bash errors\n\t#9506: Collectd 5.7.0 fails to build with libcrypt\n\t#9581: VagrantFile provisioning step fails due to issue with grub-pc\n\t#9586: usbmount: usbmount slows down the system... to a state of...\n\t#9616: CMake host packages cannot provide CONF_ENV\n\t#9641: Need raptor package installed in staging\n\t#9671: stunnel build error\n\n2017.02-rc2, Released February 20th, 2017\n\n\tFixes all over the tree.\n\n\tSupport for SOURCE_DATE_EPOCH in the toolchain wrapper for\n\tolder gcc versions for reproducible builds has been\n\t(temporarily) reverted because of licensing compatiblity\n\tconcerns.\n\n\tDefconfigs: SD card generation fix for the Udoo Neo board\n\n\tInfrastructure to handle .lz compressed tarballs added, and\n\taffected packages updated to use it.\n\n\tUpdated/fixed packages: bctoolbox, bind, canelloni,\n\tcbootimage, ccache, classpath, cups, dbus, ddrescue, directfb,\n\ted, erlang, gcc, gdb, glmark2, gstreamer, gstreamer1, hiredis,\n\tkmod, kmsxx, lcdapi, libasplib, libgpiod, libnss, libraw,\n\tlibv4l, mesa3d-headers, mosquitto, mpd, mpv, musl, ntfs-3g,\n\tocrad, openswan, postgresql, qt5base, qt5quickcontrols, redis,\n\triemann-c-client, samba4, sunxi-mali, tcping, trousers,\n\tuclibc, util-linux, vim, wavpack, wget, wiringpi, xfsprogs,\n\txserver_xorg-server\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#8941: Valgrind fails to build with stack protection turned on\n\t#9291: perl: SysV message queues not configured, even if available\n\t#9651: libxcb-1.12 built Error\n\t#9656: util-linux: schedutils doesn't build on target w/o enabl...\n\t#9666: qt5quickcontrols install fails\n\n2017.02-rc1, Released February 11th, 2017\n\n\tFixes all over the tree and new features.\n\n\tInfrastructure:\n\n\t  - numerous improvements to support reproducible builds\n\n\t  - new waf-package package infrastructure to support packages\n\t    that use the Waf build system. 6 packages converted to\n\t    this infrastructure.\n\n\t  - add option <pkg>_PREFER_INSTALLER to the perl package\n\t    infrastructure\n\n\tArchitecture:\n\n\t  - add support for the OpenRISC CPU architecture\n\n\t  - merge description of the ARM and ARM64 options, and add\n\t    support for selecting a specific ARM64 core\n\n\tToolchain:\n\n\t  - major rework of the external toolchain support. It is now\n\t    split into several packages, one per external toolchain,\n\t    and a common infrastructure.\n\n\t  - important fix for musl to prevent a conflict between musl\n\t    and kernel headers (fixes the build of numerous packages\n\t    with musl)\n\n\t  - uClibc-ng bumped to 1.0.22, and therefore enable uClibc\n\t    for ARM64, mips32r6 and mips64r6\n\n\t  - add gdb 7.12.1, and switch to gdb 7.11 as the default\n\n\t  - Linaro toolchains updated to 2016.11, ARC toolchain\n\t    components updated to arc-2016.09, MIPS Codescape\n\t    toolchains bumped to 2016.05-06, CodeSourcery AMD64 and\n\t    NIOS2 toolchains bumped\n\n\t  - remove Analog Devices toolchain for the Blackfin\n\t    architecture, remove pre-built musl toolchains from\n\t    musl.codu.org\n\n\tNew defconfigs: Freescale i.MX23EVK, Qemu OpenRISC emulation,\n\tQemu NIOS2 emulation, Grinn chiliBoard, Freescale i.MX6Q\n\tSabreSD, BeagleBoard X15, OrangePi One, ARC HS38 HAPS\n\n\tNew packages: angular-websocket, aubio, bctoolbox, darkhttpd,\n\tddrescue, easydbus, fakedate, git-crypt, hiredis, ifenslave,\n\tjsmn, libgpiod, libgsm, linux-syscall-support, mariadb, mimic,\n\tnginx-dav-ext, nmon, opkg-utils, policycoreutils,\n\tpru-software-support, python-arrow, python-attrs,\n\tpython-babel, python-bitstring, python-chardet,\n\tpython-constantly, python-flask-babel, python-gunicorn,\n\tpython-incremental, python-jsonschema, python-logbook,\n\tpython-markdown2, python-mbstrdecoder, python-mutagen,\n\tpython-pathpy, python-pudb, python-pyqrcode,\n\tpython-pytablereader, python-setuptools-scm, python-sh,\n\tpython-toml, python-vcversioner, python-whoosh,\n\traspberrypi-usbboot, riemann-c-client, rtl8723bs, skalibs,\n\tsslh, sngrep, ti-cgt-pru, uclibc-ng-test, udpxy, uhttpd,\n\tupower, ustream-ssl, waf, xlib_libXfont2\n\n\tRemoved packages: perl-db-file, snowball-hdmiservice,\n\tsnowball-init\n\n\tTooling: addition of a test-pkg script to help contributors\n\tbuild test their package.\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#8946: Valgrind fails to build with stack protection turned on\n\t#9461: odroidc2 - toolchain Linaro AArch64 2016.11 compile error\n\t#9466: VIM_REMOVE_DOCS removes rgb.txt\n\t#9486: xorg-server 1.19 fails to compile for glibc with systemd init (x86_64)\n\t#9501: eudev fails to build with older kernel headers\n\t#9526: Embedded NPM fails to start with \"no such file or directory\" error\n\t#9541: Platform drivers autoloading from info in device tree does not work\n\t#9546: seems BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS do nothing\n\t#9551: Coreutils fails to build target src/src_libsinglebin_pinky_a-pinky.o\n\t#9566: [kmod] Compilation fails with uclibc\n\t#9571: buildroot fails while building opencv for arm64 platform\n\t#9576: External tree with BR 2016.11 does not work anymore\n\t#9606: xorg-server cannot build for ARM target\n\n2016.11.3, Released March 9th, 2017\n\n\tImportant / security related fixes.\n\n\tUpdated/fixed packages: bind, dbus, gnutls, imagemagick,\n\tlcms2, libcurl, ntfs-3g, ntp, openssl, php, quagga, redis,\n\tsquid, stunnel, tcpdump, vim, wavpack, wireshark, xlib_libXpm\n\n2016.11.2, Released January 25th, 2017\n\n\tImportant / security related fixes.\n\n\tA fix for BR2_EXTERNAL trees referenced using relative paths,\n\twhich broke in 2016.11.\n\n\tUpdated/fixed packages: bind, docker-engine, gd, gnutls, go,\n\timagemagick, irssi, libpng, libvncserver, musl, opus, php,\n\tphp-imagick, rabbitmq-server, runc, wireshark,\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9576: External tree with BR 2016.11 does not work anymore\n\n2016.11.1, Released December 29th, 2016\n\n\tImportant / security related fixes.\n\n\tUpdated/fixed packages: apache, cryptopp, docker-engine,\n\tdovecot, exim, gdk-pixbuf, libcurl, libupnp, links, monit,\n\tnodejs, openssh, php, python, python-bottle, samba4, squid,\n\tuboot, vim, wireshark, xorg-server uboot\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9466: VIM_REMOVE_DOCS removes rgb.txt\n\n2016.11, Released November 30th, 2016\n\n\tMinor fixes.\n\n\tUpdated/fixed packages: bzip2, gcc, jasper, sane-backends,\n\tuboot, uclibc\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9451: packages/postgresql/postgresql.mk contains wrong POST...\n\n2016.11-rc3, Released November 28th, 2016\n\n\tFixes all over the tree, including a number of security fixes.\n\n\tThe move from fakeroot to pseudo unfortunately brought a\n\tnumber of issues.  The SELinux issue described in #9386 which\n\ttriggered the move to pseudo has been investigated further and\n\ta workaround implemented and the pseudo changes reverted.\n\n\tLinux kernel: update default to 4.8.11.\n\n\tDefconfigs: Updates/fixes for imx28ek, mx6udoo, imx6ulpico,\n\tolimex a20 olinuxino lime mali, roseapplepi, synopsis aarch64\n\tvdk, axs101, axs103 and hs38 smd vdk.\n\n\tUpdated/fixed packages: autossh, chrony, dosfstools,\n\tdtv-scan-tables, e2fsprogs, gcc, gdb, gnuchess, gnuradio,\n\tgpsd, gst1-plugins-bad, gst1-plugins-good, imagemagick,\n\tkvm-unit-tests, libfribi, libuv, mesa3d, mpfr, mplayer, mpv,\n\tntp, ola, olsr, openblas, openjpeg, openssh, postgresql,\n\tptpd2python3, qemu, qextserialport, qt5base, quagga, xqwt,\n\ttaskd, tiff, tremor, trousers, udisks, uclibc, wireshark,\n\txapp_xload, xenomai, xmlstarlet\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9386: ubinize fails with or without custom config\n\t#9431: A misspelling\n\t#9446: make raspberrypi3_defconfig compilation failure\n\n2016.11-rc2, Released November 13th, 2016\n\n\tFixes all over the tree.\n\n\tArchitecture: add support for MIPS XBurst cores; remove MIPS\n\tsupport for M5100 cores.\n\n\tUpdated/fixed packages: mesa3d, lttng-babeltrace, tinyalsa, pseudo,\n\tczmq, libxml2, makedevs, binutils, kvm-unit-tests, libnss, privoxy,\n\tqemu, ser2net, net-tools, ffmpeg, assimp, libmpeg2, ccache, mpv,\n\tlibxslt, python, python3, php, valgrind, guile, domoticz, efl,\n\tjasper, kvmtool, go, wget, sane-backends, weston, tinymembench,\n\tstrace, openjpeg, lcms2, quota.\n\n\tLinux kernel: update default to 4.8.7.\n\n\tCMake support: fix cmake wrapper to properly pass NDEBUG flag.\n\n\tFilesystems: use a wrapper to pseudo, to better mimick the behaviour\n\tof fakeroot; makedevs no longer breaks of the destination already\n\texists and is of the correct type/major/minor.\n\n\tDefconfigs: a few legacy and broken defconfigs have been removed\n\tbecause they now fail to build: kb9202_defconfig, mini2440_defconfig,\n\tfreescale_p2020ds, qmx6, calao*, atmel_sama5d4ek. Other defconfigs\n\thave been updated: nanopi-neo, olimex_a20_olinuxino_lime_mali,\n\tarmadeus_apf51, armadeus_apf28, freescale_imx31_3stack, ci20,\n\tolimex_a20_olinuxino_lime2, atmel_at91sam9260eknf,\n\tatmel_at91sam9rlek, atmel_at91sam9g20dfc, atmel_at91sam9g45m10ek,\n\tatmel_sama5d3xek.\n\n2016.11-rc1, Released November 3rd, 2016\n\n\tFixes all over the tree and new features.\n\n\tIt is now possible to specify multiple BR2_EXTERNAL\n\tdirectories. The required files in a BR2_EXTERNAL directory\n\thave changed to accomodate this feature. Refer to the\n\tdocumentation for details of how to update them. External\n\ttrees now have a name and a description. Also, it is possible\n\tto override a defconfig in the external tree.\n\n\tThe default skeleton now uses UID 65534 for the \"nobody\"\n\tuser instead of UID 99, like most distros do. See\n\thttps://lwn.net/Articles/695478/ for a complete discussion.\n\tPrograms and configuration files that explicitly refer to UID\n\t99 will have to be updated.\n\n\tWhen the build environment already has a suitable cmake version\n\t(3.1 or later), that one will be used instead of building\n\thost-cmake. This can speed up the build significantly.\n\n\tThe ExtUtils::MakeMaker perl module is now required in the\n\tbuild environment.\n\n\tAn additional check is done during the build that files are\n\tnot installed in the output directory within the output\n\tdirectory. This happens e.g. when the target directory is\n\tcontained both in --prefix and in DESTDIR. The build will\n\tterminate with an error message that specifies which package\n\tand which file caused the failure.\n\n\tThe concept of \"deprecated packages\" and the BR2_DEPRECATED\n\toption have been removed. Instead, packages are removed\n\timmediately. Packages are only removed when they don't work\n\tfor some reason. If you still need a removed package and\n\tyou have a solution for the problem(s) that caused the\n\tremoval, please contribute it.\n\n\tArchitecture: support for sh64 removed, improved support for\n\tMIPS core selection.\n\n\tToolchain: support for musl powerpc64le, mips64 and mipsr6\n\ttoolchains, ARC toolchain components updates, gcc 6.x series\n\tbumped to 6.2.0, default binutils version switched to 2.26,\n\tdefault gcc version switched to gcc 5.x, Linaro toolchains\n\tupdated, uclibc-ng bumped to 1.0.19. GCC is now always built\n\twith TLS support. Checking of unsafe compiler options (that\n\tpoint to host directories) has been extended with -isystem,\n\t-idirafter and -iquote.\n\n\tPackage infrastructure: new variable $(PKG)_DL_OPTS, addition\n\tof <pkg>-show-rdepends to list reverse dependencies, and\n\t<pkg>-graph-rdepends to graph reverse dependencies. Linux tools\n\tare now in a separate linux-tools package instead of in the\n\tkernel build. Fakeroot has been replaced by pseudo.\n\n\tCMake support: the toolchainfile.cmake file now provides a\n\tdefinition of the CMAKE_BUILD_TYPE variable. The\n\ttoolchainfile.cmake also no longer forces the compiler/linker\n\tflags defined by Buildroot.\n\n\tNew defconfigs: WaRP7, Solidrun's MX6 Cubox/Hummingboard,\n\tTS-4900, Grinn's liteBoard, Udoo MX6Q/DL, Qemu ARM noMMU,\n\tBeagleBone Qt5 demo, Digilent Zybo, FriendlyARM Nanopi NEO.\n\n\tNew packages: arm-trusted-firmware, amd-catalyst, atop, aufs,\n\taufs-util, fwts, gst1-rtsp-server, libglob, libite, mfgtools,\n\tmksh, motion, paho-mqtt-c, php-amqp, pseudo, python-couchdb,\n\tpython-crcmod, python-cssutils, python-docutils,\n\tpython-futures, python-mwclient, python-mwscrape,\n\tpython-mwscrape2slob, python-pyelftools, python-pyicu,\n\tpython-pylru, python-pyqt5, python-requests-toolbelt,\n\tpython-simpleaudio, python-slob, rabbitmq-server, shapelib,\n\tvdr, vdr-plugin-vnsiserver, vexpress-firmware, xvisor, iio and\n\tgpio linux tools.\n\n\tRemoved packages: binutils 2.24, fakeroot, gcc 4.7, ipkg,\n\tkodi-addon-xvdr, libgail, sstrip, torsmo, webkit, webkitgtk24,\n\twvdial, wvstreams.\n\n\tDocumentation: the list of packages that was present in the\n\tBuildroot manual has been removed.\n\n\tLegal info: the \"licenses.txt\" file that concatenates all\n\tlicense texts is no longer generated - it was not considered\n\tuseful. The manifest.csv contains an empty cell instead of\n\t\"not saved\" when no license file is available.\n\n\tOther: addition of a DEVELOPERS file listing developers taking\n\tcare of packages or architectures.\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#7802: host-python build hangs compiling getbuildinfo.o\n\t#8206: mplayer uses host xorg development files\n\t#8516: mkcubiecard.sh uses outdated sfdisk switch -D\n\t#8536: Building sudo with PAM results in unusable sudo\n\t#8646: check-host-rpath script returns false positives when rpath\n\t       contains symlink\n\t#8696: xdriver_xf86-input-mouse install header files in target\n\t       directory\n\t#8811: rp-pppoe - generated scripts commands use HOST pathnames,\n\t       not necessarily TARGET\n\t#8846: Orphaned/missing toolchain borks eclipse plugin\n\t#8856: python tornado runtime wasn't met on buildroot 2016.02\n\t#8901: gcc failes to build if fortran is enabled\n\t#8916: LDFLAGS pass to openssh\n\t#8941: \"ls\" of an NFSv4 share only works when pumped through strace\n\t#8946: Valgrind fails to build with stack protection turned on\n\t#9021: Kodi - Broken: Illegal instruction (core dumped)\n\t#9096: rootfs.ubi not created\n\t#9111: glibc 2.23: libmvec.so not copied\n\t#9176: minnowboard : USB not mounted\n\t#9196: raspberry pi 3 default build seem broken\n\t#9201: Permission denied make: *** [core-dependencies] Error 126 in\n\t       Buildroot-2015.08.1\n\t#9216: log4cpp package build fails to build within install\n\t#9221: Kodi needs \"Python .py and .pyc support\" otherwise it crashes when\n\t       pressing buttons.\n\t#9229: Firefly boot fails with: \"failed to find part:boot\"\n\t#9256: [Config file] New device: Odroid-U2/U3\n\t#9296: Buildroot Fails on applying patches\n\t#9301: U-boot fails to build with default zynq_zed_defconfig configuration\n\t#9316: U-boot fails to build if libssl-dev is not installed\n\t#9321: Vanilla libcrypt++ v5.6.3 doesn't allow to work Nvidia Tegra's\n\t       flash utility (tegrarcm)\n\t#9326: Odroid-C2 build results in non-bootable image\n\t#9336: Improve iconv support for external toolchain based builds\n\t#9356: gdb package\n\t#9366: no link rootfs.ext4 -> rootfs.ext2\n\t#9371: openssl: download failes with \"Only allow downloads from primary\n\t       download site\" + local server\n\t#9381: check-host-rpath issues\n\t#9386: ubinize fails with or without custom config\n\n2016.08, Released September 1st, 2016\n\n\tMinor fixes.\n\n\tToolchain: ARC tools updated to arc-2016.09-eng010.\n\n\tUpdated/fixed packages: libshout, luajit, mpd, mplayer\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#7520: CodeSourcery toolchain ARM: C++11 std::exception_ptr..\n\t#8341: Getting EGL Error: Could not create the egl surface:..\n\t#9121: gst1-imx for i.MX6 compile failed, cannot find PXP, ..\n\n2016.08-rc3, Released August 29th, 2016\n\n\tFixes all over the tree.\n\n\tToolchain: C++ support for the internal blackfin toolchain\n\tre-enabled.\n\n\tArchitecture: Default to bf532 CPU variant for blackfin,\n\tFix flat one memory region support for m68k and disable flat\n\tseperate data support because of compatibility issues.\n\n\tDefconfigs: Minnowboard and Raspberrypi: Fix errors with\n\tpost-build scripts when systemd is used.\n\tZynq microzed/zc706/zed: Fix u-booot configuration.\n\n\tnetbsd-queue package extended and renamed to\n\tmusl-compat-headers. With this, a number of musl compatibility\n\tpatches are no longer needed.\n\n\tUpdated/fixed packages: aircrack-ng, android-tools, babeld,\n\tbcusdk, binutils, boa, busybox, connman, cpupower,\n\tdocker-engine, domoticz, elf2flt, ffmpeg, fwup, gcc,\n\tglib-networking, gnupg, hplip, igd2-for-linux, imagemagick,\n\timx-uuc, iputils, jack2, kismet, kmsxx, libaio, libamcodec,\n\tlibconfuse, libffi, libfreeimage, libgcrypt, libgpg-error,\n\tlibiio, libraw, libsepol, libserialport, libxmlrpc, linknx,\n\tlinux-pam, lirc-tools, lldpd, logrotate, lshw, musl, ncurses,\n\tneon, nettle, norm, ntfs-3g, openblas, openmpi, openswan,\n\tpinentry, pixman, protobuf, python-meld3, qlibc, qt, qt5base,\n\tquagga, rpcbind, rt-tests, runc, sane-backends, sconeserver,\n\tsqueezelite, stella, tftpd, tinycbor, tinydtls, trace-cmd,\n\ttrousers, tstools, uboot-tools, uclibc, ulogd, ustr, vlc,\n\twebkitgtk, wireshark, xdriver_xf86-video-intel\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9101: Error on support/download/git with system git older than 1.8.4\n\t#9181: Compiling linux kernel fails if BR2_LINUX_KERNEL_TOOL_CPU..\n\n2016.08-rc2, Released August 17th, 2016\n\n\tFixes all over the tree.\n\n\tToolchain: disable broken C++ support for internal blackfin\n\ttoolchains, ARC toolchain bumped to arc-2016.09-eng008 (GCC 6)\n\tto fix various issues.\n\n\tSystem: Zoneinfo is available for the musl C library as well.\n\n\tUpdated/fixed packages: am33x-cm3, axel, barebox, bdwgc,\n\tblktrace, cairo, dante, enlightenment, fbterm, ffmpeg, flex,\n\tfontconfig, gcc, gmp, gnuplot, gnuradio, gst1-imx, hidapi,\n\tinotify_tools, iproute2, kmsxx, lftp, libaio, libcofi,\n\tlibical, libpjsip, libsidplay2, libunwindow, libxml2,\n\tlinux-zigbee, lttng-libust, mpv, mtd, ncdu, netplug, ntp,\n\topenblas, openipmi, owfs, php, poco, procps, qt, quota,\n\tsg3_utils, spidev_test, systemd-bootchart, thrift,\n\tuboot-tools, uclibc, webrtc-audio-processing, wayland, weston,\n\txdriver_xf86-video-savage, xserver_xorg-server, xen\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#9136: make graph-size fails with \"ValueError: too many values to..\n\t#9151: qt: fix build with ALSA >= 1.1.x\n\t#9156: qt: Fix missing runtime Qt3Support dependency\n\t#9161: modsetting patch not applied to xserver 1.18.4\n\t#9166: Missing overlays directory in VFAT image for raspberry pi 3\n\n2016.08-rc1, Released August 6th, 2016\n\n\tFixes all over the tree and new features.\n\n\tToolchain: Fortran support added. eglibc support removed, musl\n\tsupport no longer experimental. Blackfin and Microblaze\n\tsupport for internal uClibc-ng toolchain, m68k/coldfire\n\timprovements. The check for unsafe (build host) directories\n\taccess (/usr/include and /usr/lib) is now enabled by default.\n\tUnused locales are now purged by default to save space (and\n\tthe default list of locales shrunk). The option to control\n\tthis has now moved from the toolchain menu to system\n\tconfiguration.\n\n\tLegal info improvements: sources are now hardlinked instead of\n\tcopied if possible to save space. Patches and extra downloads\n\tare also saved.\n\n\tAn experimental configuration knob (BR2_REPRODUCIBLE) has been\n\tadded to make the builds more reproducible (E.G. less\n\tdifferences in the binary output between builds of the same\n\tconfiguration). This is still work in progress.\n\n\tAn option to execute a custom script inside the fakeroot\n\tenvironment used to the generate the filesystem (E.G. to tweak\n\tpermissions or similar) has been added.\n\n\tGit support now supports git submodules if\n\t<pkg>_GIT_SUBMODULES is enabled.\n\n\tHash files for integritry validation have been added for all\n\tpackages.\n\n\tScanpypi utility to help creating packages from the Python\n\tpackage index (pypi) has been added.\n\n\tThe makedevs utility now has support for adding file\n\tcapabilities using extended attributes.\n\n\tNew defconfigs: Arcturus uCP1020, Atmel sama5d{2,3,4} xplained\n\tdevelopment configs, Blackfin GDB simulator, Linksprite\n\tpcDuino, Minnow Board Max graphical demo, NXP i.MX25 PDK,\n\ti.MX51 EVK, i.MX6UL Pico, i.MX7 sabresd, QEMU MIPS32r6{,el} and\n\tMIPS64r6{,el} malta, Roseapple Pi, Samsung Snow chromebook,\n\tToradex Apalis i.MX6 COM, TS-4800, x86-64 PC BIOS and EFI\n\tdemos. A number of defconfigs have been updated and extended\n\tto generate SD card images. Synopsys HS38 VDK defconfig removed.\n\n\tNew packages: 4th, acpica, acpitool, alljoyn, alljoyn-base,\n\talljoyn-tcl, alljoyn-tcl-base, argparse, babeld, batman-adv,\n\tcircus, dante, docker-containerd, docker-engine, domoticz,\n\tefibootmgr, efivar, ficl, fwup, gsettings-desktop-schemas,\n\tgtksourceview, gupnp-dlna, gupnp-tools, igd2-for-linux,\n\tjemalloc, kmsxx, lapack, lft, libaacs, libamcodec, libbdplus,\n\tlibcoap, libdvdcss, libebur128, libfastjson, libminiupnpc,\n\tlibnatpmp, libpqxx, libuio, libvdpau, log4cpp, minissdpd,\n\tmxsldr, nginx-nasxi, nginx-upload, ninja, nodm, odroid-mali,\n\todroid-scripts, omxplayer, openblas, openmpi, openzwave,\n\tp7zip, pdbg, python-argh, python-dataproperty,\n\tpython-dateutil, python-dialog3, python-dicttoxml,\n\tpython-dominate, python-engineio, python-flask-jsonrpc,\n\tpython-flask-login, python-humanize, python-pathtools,\n\tpython-pathvalidate, python-pillow, python-prompt-toolkit,\n\tpython-pytablewriter, python-pytz, python-scapy3k,\n\tpython-sdnotify, python-socketio, python-tomako,\n\tpython-ubjson, python-u-msgpack, python-watchdog,\n\tpython-wcwidth, python-xlrd, python-xlsxwriter,\n\tpython-xlutils, python-xlwt, rs485conf, runc, sdl2_gfx,\n\tsdl2_image, sdl2_ttf, shellinabox, sphinxbase, stella,\n\tsupertuxkart, systemd-bootchart, tekui, terminology, tinycbor,\n\ttinydtls, ti-sgx-demos, ti-sgx-km, ti-sgx-um, tunctl, wavemon,\n\twiringpi, xen\n\n\tDeprecated packages: ipkg, sstrip\n\n\tRemoved packages: sunxi-mali-prop\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#8931: segment fault when compile argp-help.c using aarch64-bu...\n\t#8966: eglfs error. buildroot don't compile the library libeglfs.so\n\t#8971: build for beaglebone fails\n\t#8986: qt5imageformats fails to build on AArch64\n\t#8991: grub2 fails to compile\n\t#9001: Nodejs option not available\n\t#9006: gcc with c++ support v4 and v5 fail to compile on fedora 24\n\t#9016: arceb-buildroot-linux-uclibc ld uses incorrect default format\n\t#9066: 8139TOO - faulty behaviour\n\t#9086: Syntax Error (missing \")\" in boot/uboot/uboot.mk on line 203)\n\t#9091: U-Boot fails to boot with large ramdisk\n\n2016.05, Released May 31st, 2016\n\n\tMinor fixes.\n\n\tExternal toolchain: Fix for symlink handling when copying\n\tlinks to target.\n\n\tUpdated/fixed packages: gcc, grantlee, gst-ffmpeg,\n\tipsec-tools, iptraf-ng, libcurl, libdrm, libsigsegv, ltris,\n\tlttng-babeltrace, mbedtls, mesa3d, moarvm, mplayer, mtools,\n\tnet-tools, openpowerlink, pulseview, rpm, tinyalsa,\n\txdriver_xf86-video-fbturbo, xserver_xorg-server\n\n2016.05-rc3, Released May 26th, 2016\n\n\tFixes all over the tree.\n\n\tTweaks for SSP handling for external toolchains.\n\n\tUpdated/fixed packages: aircrack-ng, bluez5_utils, connman,\n\tcups, erlang-p1-stringprep, expat, ffmpeg, flann, flannel, go,\n\tgst1-libav, hidapi, hplip, iptraf-ng, jamvm, kodi,\n\tkodi-screensaver-matrixtrails, libcurl, libepoxy, libgpgme,\n\tlibsemanage, libxslt, liquid-dsp, ltris, lxc, mesa3d, midori,\n\tmpg123, mtr, openpgm, openpowerlink, oprofile, php,\n\tpostgresql, putty, python-service-identity, python-treq,\n\tqlibc, qt5serialbus, ruby, stress-ng, strongswan, time, tinc,\n\tustr, valgrind, webkitgtk, libxml2, xorriso,\n\txserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#8936: Aircrack-ng - Alot of missing dependencies\n\n2016.05-rc2, Released May 17th, 2016\n\n\tFixes all over the tree.\n\n\tRootfs overlay handling now refuses to overwrite\n\t/{usr,bin,sbin,lib} symlinks from BR2_ROOTFS_MERGED_USR option\n\teven if these directories are present in the overlay.\n\n\tExternal toolchain: Unbreak user provided libraries deployment\n\t(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS) handling after refactoring.\n\n\tQEMU coldfire: Fix for signal handling kernel issue, enable\n\tnetworking support.\n\n\tUpdated/fixed packages: android-tools, assimp, boost, gcc,\n\tglibc, glmark2, gmrender-resurrect, go, go-bootstrap, iputils,\n\tjack2, kodi-screensaver-asterwave, kodi-screensaver-rsxs,\n\tkodi-visualisation-shadertoy, libarchive, libinput, libpjsip,\n\tmali-t76x, mtr, nginx, opencv, openvpn, python-coherence,\n\tqt5multimeda, quagga, samba4, sg3-utils, stress-ng, turbolua\n\n2016.05-rc1, Released May 10th, 2016\n\n\tFixes all over the tree and new features.\n\n\tArchitectures: new ARM variants: Cortex A17 and M4, improved\n\tnonmmu (cortex-M) support, m68k has been re-enabled with\n\tsupport for ColdFire. For x86, support for the i386 variant\n\thas been dropped.\n\n\tToolchain: Add GCC 6 support, remove GCC 4.5, mark GCC 4.7 as\n\tdeprecated. Go programming language support, Add Binutils 2.26\n\tsupport. Old Sourcery PowerPC external toolchains removed,\n\tSourcery MIPS 2016.06-8, AMD64 2015.11-139, NiosII 2015.11-130\n\tadded, Linaro ARM/ARMeb/Aarch64 toolchains updated.\n\n\tNew defconfigs: Firefly RK3288, Boundary Devices i.MX7 Nitrogen7,\n\tSTM32F429 and STM32F469 Discovery boards, Hardkernel ODROID-C2,\n\tRaspberry Pi Zero and Raspberry Pi 3. Some Qemu defconfigs were\n\tadded for m68k, eXtensa-nommu and ColdFire.\n\n\tLinux: use zImage by default on ARM, subversion repository\n\tsupport (for u-boot as well).\n\n\tNew packages: aer-inject, android-tools, cannelloni,\n\tcbootimage, cgroupfs-mount, connman-gtk, crudini, dt,\n\tgmrender-resurrect, flannel, font-awesome, freeswitch, go,\n\tgo-bootstrap, gr-osmosdr, granite, i7z, imx-uuc,\n\tkodi-adsp-basic, kodi-adsp-freesurround,\n\tkodi-audiodecoder-opus, kodi-pvr-hdhomerun,\n\tkodi-screensaver-asterwave, kodi-screensaver-cpblobs,\n\tkodi-screensaver-matrixtrails, kodi-screensaver-planestate,\n\tkodi-screensaver-rsxs, kodi-visualisation-fishbmc,\n\tkodi-visualisation-fountain, kodi-visualisation-goom, libgee,\n\tlibimxvpuapi, libpjsip, libtomcrypt, libtommath, libusbgx,\n\tlksctp-tools, mali-t76x, mkpimage, mpv, msr-tools, nload,\n\tnorm, nvme, owfs, pound, privoxy, procrank_linux, putty,\n\tpython-autobahn, python-characteristic, python-crossbar,\n\tpython-cryptography, python-iniparse, python-iowait,\n\tpython-lmdb, python-pexpect, python-ptyprocess,\n\tpython-pyasn-modules, python-pygments, python-pymysql,\n\tpython-pynacl, python-pyopenssl, python-pysocks,\n\tpython-pytrie, python-rpi-gpio, python-service-identity,\n\tpython-setproctitle, python-shutilwhich, python-treq,\n\tpython-txaio, python-ujson, python-wsaccel, qt5canvas3d,\n\tqt5location, qt5quickcontrols2, qt5serialbus, qt5tools,\n\traptor, scrub, taskd, tegrarcm, turbolua, valijson,\n\twayland-protocols, webkitgtk, wilc1000-firmware, wpan-tools,\n\txdriver_xf86-video-amdgpu\n\n\tRemoved packages: foomatic-filters, python-m2crypto,\n\tqt5quick1, qt5webkit-examples, samba, xdriver_xf86-input-void\n\n\tIssues resolved (http://bugs.buildroot.org):\n\n\t#6830: Qt5: no fonts are installed\n\t#7562: musl buildroot-toolchain and BR2_MIPS_SOFT_FLOAT break\n\t#7580: Invalid filesystem in Pandaboard defconfig\n\t#8346: wf111 package removes all kernel module dependencies\n\t#8436: xserver_xorg-server Segmentation fault\n\t#8736: IPV6 forced on in busybox\n\t#8746: At startup system stops with 'cannot set terminal proces..\n\t#8751: make fail [fio does not build on sh]\n\t#8766: Compiling host-gcc-final-4.9.3 broken on i386\n\t#8771: make savedefconfig modifies sources\n\t#8781: Unable to build uboot for imx28evk\n\t#8786: gdb fails to build with xz and expat support at the same\n\t#8801: Compilation of Buildroot 2016.2 for Raspberry Pi with...\n\t#8806: Buildroot 2016.2 for Raspberry Pi requires that ext4...\n\t#8836: Can't select Vim in menuconfig\n\t#8851: Make sure fio can compile with libaio support if it...\n\t#8861: With buildroot 2016.02 trying to build for corei7-avx\n\t       fails while trying to build host-binutils\n\t#8866: Making an USB flash bootable with extlinux build with\n\t        buildroot does not work\n\n2016.02, Released March 1st, 2016\n\n\tMinor fixes, mostly security related.\n\n\tCircular dependency issue with same-as-kernel linux-headers\n\toption fixed.\n\n\tUpdated/fixed packages: bluez5_utils, heirloom-mailx,\n\timx-gpu-viv, kodi-pvr-argustv, kodi-pvr-mediaportal-tvserver,\n\tkodi-pvr-nextpvr, libfcgi, openssl, pifmrds, powerpc-utils,\n\tpython-m2crypto, slang, sox, squid, tn5250, xerces, zsh\n\n2016.02-rc3, Released February 27th, 2016\n\n\tFixes all over the tree.\n\n\tDefconfigs: Ensure EABIhf is correctly enabled for ARM cores\n\twhere VFP is optional (but present on the specific hw). Fix\n\tARM variant selection for freescale_imx31_3stack_defconfig.\n\n\tEnsure tarballs of downloaded git trees do not contain a\n\ttimestamp.\n\n\tClarify license of patches in COPYING.\n\n\tUpdated/fixed package: avahi, binutils, cairo, can-festival,\n\tchrony, cifs-utils, dnsmasq, dvdauthor, e2fsprogs, efl,\n\terlang-rebar, eudev, fbterm, gawk, gnupg2, gnuradio, gpm,\n\tgst1-plugins-good, hostapd, imagemagick, iproute2, iputils,\n\tjack2, kexec, kismet, lftp, libarchive, libeXosip2, libfm,\n\tlibglib2, libsoil, libssh, libssh2, libuci, links, lshw, lxc,\n\tmediastreamer, mono, mraa, mutt, nfs-utils, numactl, ofono,\n\tomniorb, openipmi, openobex, patch, pax-utils, perf,\n\tpulseaudio, pure-ftp, qhull, qt, quagga, quota, sdl_sound,\n\tshairport-sync, spice, sysklogd, syslog-ng, trace-cmd,\n\ttrousers, tvheadend, util-linux, vim, webkitgtk24, wireshark,\n\twpa_supplicant, xerces, zsh\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#8651: libMonoPosixHelper.so wrong link reference in buildroot..\n\n2016.02-rc2, Released February 18th, 2016\n\n\tFixes all over the tree.\n\n\tToolchain: PR19405 backport to binutils 2.25.1 to fix NIOS ld\n\tcrash, backport of Xtensa .init/.fini literals handling.\n\tglibc security patches for CVE-2014-8121, CVE-2015-1781\n\tand CVE-2015-7547.\n\n\tDefconfigs for Acmesystems Arietta g25 added.\n\n\tUpdated/fixed packages: binutils, boost, chrony, dovecot,\n\te2fsprogs, fio, gdb, glibc, graphite2, icu, kbd, libbsd,\n\tlibcue, libgcrypt, libraw, links, mc, mosquitto, nodejs,\n\tpostgresql, pptp-linux, pulseaudio, samba4, spice, squid,\n\tsysklogd, systemd, tiff, uclibc, ulogd, util-linux, valgrind.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#8576: Building embedded Linux for Atmel SAMA5D4_Xplained...\n\t#8606: Problem compiling on Arch Linux\n\t#8681: kbd 2.0.3 does not build on rpi\n\n2016.02-rc1, Released February 10th, 2016\n\n\tFixes all over the tree and new features.\n\n\tToolchain: Support for GCC 5.3.x. ARC toolchain updated to\n\tarc-2015.12. Support for legacy uClibc dropped, default to\n\tuClibc-ng instead. Added sys/queue.h implementation for MUSL\n\tfor compatibility. Updated versions of Code sourcery and\n\tLinaro toolchains. MIPS Codescape toolchains added. Version\n\tselection for preconfigured external toolchains removed.\n\n\tNew Defconfigs: ARM Juno r0/r1 development boards, Freescale\n\ti.MX6UL Evaluation Kit, Intel Galileo Gen 2, Orange Pi PC.\n\tA number of defconfigs have been extended to generate complete\n\tsystem images using genimage.\n\n\tLinux: Automatically patch timeconst.pl for <3.9 kernels,\n\twhich isn't compatible with modern perl versions, breaking the\n\tbuild when building on recent (Fedora 23, Debian\n\tTesting/Unstable, ..) distributions.\n\n\tMakedevs utility now accepts textual (non-numerical) user and\n\tgroup names.\n\n\tVagrant file to easily setup a working development environment\n\tin a VM has been added.\n\n\tSize-stats-compare script to compare rootfs sizes between\n\tbuilds has been added.\n\n\tInfozip package renamed to zip. EFL packages restructured.\n\n\tUpdated/fixed packages: aespipe, aiccu, alsa-lib, alsa-utils,\n\tangularjs, apache, apr, argp-standalone, armadillo, arptables,\n\tat, atk, audiofile, aumix, autoconf-archive, avahi, bash, bc,\n\tbcache-tools, bdwgc, beecrypt, bind, binutils, bluez5_utils,\n\tbluez_utils, bonnie, boost, busybox, cairo, cdrkit, chrony,\n\tclamav, cmake, collectd, connman, coreutils, cppcms, crda,\n\tcryptodev-linux, cryptsetup, cups, cwiid, cxxtest, dbus,\n\tdbus-cpp, dbus-glib, debianutils, dhcp, dhcpcd, dhrystone,\n\tdillo, directfb, directfb-examples, dmraid, dnsmasq, doom-wad,\n\tdovecot, dovecot-pigeonhole, dropbear, dtv-scan-tables,\n\tdvb-apps, dvbsnoop, ecryptfs-utils, eigen, ejabberd,\n\telementary, elfutils, enlightenment, erlang, espeak, eudev,\n\teventlog, exfat, exfat-utils, exiv2, expedite, faifa,\n\tfakeroot, fastd, fbgrab, fetchmail, ffmpeg, findutils, fio,\n\tfirmware-imx, flann, flashrom, flite, flot, fmlib, freerdp,\n\tfreescale-imx, freetype, gauche, gawk, gcc, gcc-final, gcr,\n\tgdb, gdk-pixbuf, geoip, gesftpserver, gettext, giflib, git,\n\tglibc, glibmm, glog, gmp, gnupg, gnupg2, gnutls, gob2, gpsd,\n\tgptfdisk, grep, gst1-libav, gst1-plugins-{bad,base,good,ugly},\n\tgst-ffmpeg, gst-plugins-{bad,base,good,ugly}, gstreamer,\n\tgstreamer1, guile, gvfs, gzip, harfbuzz, haserl, hiawatha,\n\thostapd, hplip, icu, ifupdown, imagemagick, imx-gpu-viv,\n\timx-kobs, imx-lib, input-tools, intel-microcode, iperf3,\n\tipmitool, iproute2, iprutils, ipsec-tools, ipset, iptables,\n\tiputils, irda-utils, irssi, iucode-tool, jack2, janus-gateway,\n\tjpeg-turbo, jquery-datetimepicker, jquery-keyboard,\n\tjquery-sparkline, jquery-ui, jquery-ui-themes,\n\tjquery-validation, json-c, kbd, kernel-module-imx-gpu-viv,\n\tkeyutils, kmod, knock, kodi, lcdproc, lcms2, leafnode2,\n\tleafpad, libass, libatomic_ops, libbroadvoice, libbsd,\n\tlibcap-ng, libcdaudio, libcue, libcurl, libdrm, libecore,\n\tlibedbus, libedit, libedje, libeet, libefreet, libeina,\n\tlibeio, libelementary, libembryo, libepoxy, libethumb, libev,\n\tlibevas, libevas-generic-loaders, libevdev, libevent, libffi,\n\tlibfm, libfribidi, libfslcodec, libfslparser, libfslvpuwrap,\n\tlibftdi, libfuse, libgail, libglew, libglib2, libgtk2,\n\tlibgtk3, libgudev, libhttpparser, libidn, libinput, libiscsi,\n\tlibjpeg, liblinear, libmbim, libmicrohttpd, libndp, libnspr,\n\tlibnss, liboauth, liboping, libpciaccess, libplist, libpng,\n\tlibraw, libraw1394, librsvg, libseccomp, libsecret,\n\tlibserialport, libsigc, libsigrok, libsigrokdecode,\n\tlibsndfile, libsoc, libsodium, libsoup, libssh2, libsvg,\n\tlibsvg-cairo, libtasn1, libtirpc, libtorrent, libungif,\n\tlibunwind, libupnpp, liburcu, libuv, libv4l, libva,\n\tlibva-intel-driver, libvips, libvncserver, libxml2, libxmlpp,\n\tlightning, lighttpd, linknx, linux-firmware, linux-fusion,\n\tlinux-headers, liquid-dsp, lirc-tools, live555, lm-sensors,\n\tlockdev, lshw, ltp-testsuite, ltrace, lttng-babeltrace,\n\tlttng-libust, lttng-modules, lttng-tools, lua, luabitop,\n\tluarocks, luv, lvm2, lxc, makedevs, mc, memcached, memtest86,\n\tmesa3d, mesa3d-demos, mesa3d-headers, micropython,\n\tmicropython-lib, minicom, minidlna, mjpg-streamer, mke2img,\n\tmoarvm, modem-manager, mongoose, mongrel2, monkey, mono,\n\tmonolite, mosh, mosquitto, mpd, mplayer, msgpack, mtdev2tuio,\n\tmusepack, musl, mysql, nano, nasm, nbd, neard, netatalk,\n\tnetsnmp, nettle, net-tools, network-manager, nfs-utils, nginx,\n\tnmap, nodejs, ntfs-3g, ntp, numactl, nut, nvidia-driver,\n\todhcp6c, ofono, ola, olsr, omniorb, opencv, opencv3, openipmi,\n\topenldap, openntpd, openobex, openocd, openpgm,\n\topen-plc-utils, openpowerlink, openssh, openssl, openswan,\n\topenvpn, opkg, oprofile, opus, opusfile, p11-kit, package,\n\tpango, pax-utils, pciutils, pcmanfm, perl, perl-db-file,\n\tperl-io-socket-ssl, perl-libwww-perl, perl-net-dns, perl-uri,\n\tperl-xml-libxml, php, php-ssh2, picocom, pinentry, pixman,\n\tpolarssl, popt, portaudio, pppd, procps-ng, proftpd, protobuf,\n\tpsmisc, ptpd2, pulseaudio, pulseview, pv, python, python3,\n\tpython-alsaaudio, python-can, python-cffi, python-cherrypy,\n\tpython-httplib2, python-jinja2, python-lxml, python-m2crypto,\n\tpython-mako, python-msgpack, python-psutil, python-pyasn,\n\tpython-pycparser, python-pydal, python-pyftpdlib,\n\tpython-pyroute2, python-pyxml, python-pyzmq, python-requests,\n\tpython-serial, python-setuptools, python-six, python-spidev,\n\tpython-tornado, python-twisted, python-web2py, python-webpy,\n\tpython-werkzeug, python-zope-interface, qemu, qhull, qpdf, qt,\n\tqt5, qt5base, qt5connectivity, qt5declarative, qt5enginio,\n\tqt5graphicaleffects, qt5imageformats, qt5multimedia,\n\tqt5quick1, qt5quickcontrols, qt5script, qt5sensors,\n\tqt5serialport, qt5svg, qt5webchannel, qt5webkit,\n\tqt5webkit-examples, qt5websockets, qt5x11extras,\n\tqt5xmlpatterns, qt-webkit-kiosk, racehound, radvd, read-edid,\n\treadline, redis, rpcbind, rpi-firmware, rpi-userland, rrdtool,\n\trsync, rsyslog, rtai, rtorrent, rt-tests, rubix, ruby, samba4,\n\tsconeserver, setools, shairport-sync, sigrok-cli, skeleton,\n\tsmack, snowball-init, socat, sp-oops-extract, sqlite,\n\tsquashfs, squeezelite, squid, sredird, sshfs,\n\tstart-stop-daemon, strace, strongswan, stunnel, subversion,\n\tsunxi-tools, swig, sysdig, syslog-ng, sysstat, systemd,\n\tsysvinit, taglib, tcl, tcpreplay, thrift, ti-gfx, tinyalsa,\n\ttor, torsmo, trace-cmd, transmission, tremor, triggerhappy,\n\ttrinity, tvheadend, tzdata, uboot-tools, uclibc, udisks,\n\tudpcast, unionfs, upmpdcli, usb_modeswitch,\n\tusb_modeswitch_data, ustr, util-linux, vala, valgrind,\n\tvboot-utils, vde2, vlc, vnstat, webkit, webkitgtk24, weston,\n\twget, whetstone, whois, wine, wipe, wireless-regdb, wireshark,\n\twpa_supplicant, w_scan, x11r7, xapp_xbacklight, xapp_xcompmgr,\n\txapp_xinput, xapp_xkbcomp, xdriver_xf86-input-evdev,\n\txdriver_xf86-input-libinput, xdriver_xf86-input-synaptics,\n\txdriver_xf86-video-ati, xdriver_xf86-video-fbturbo,\n\txdriver_xf86-video-imx-viv, xdriver_xf86-video-intel,\n\txfont_encodings, xfont_font-adobe-100dpi,\n\txfont_font-adobe-75dpi, xfont_font-adobe-utopia-100dpi,\n\txfont_font-adobe-utopia-75dpi, xfont_font-adobe-utopia-type1,\n\txfont_font-alias, xfont_font-arabic-misc,\n\txfont_font-bh-100dpi, xfont_font-bh-75dpi,\n\txfont_font-bh-lucidatypewriter-100dpi,\n\txfont_font-bh-lucidatypewriter-75dpi, xfont_font-bh-ttf,\n\txfont_font-bh-type1, xfont_font-bitstream-100dpi,\n\txfont_font-bitstream-75dpi, xfont_font-bitstream-type1,\n\txfont_font-cronyx-cyrillic, xfont_font-cursor-misc,\n\txfont_font-daewoo-misc, xfont_font-dec-misc,\n\txfont_font-ibm-type1, xfont_font-isas-misc,\n\txfont_font-jis-misc, xfont_font-micro-misc,\n\txfont_font-misc-cyrillic, xfont_font-misc-ethiopic,\n\txfont_font-misc-meltho, xfont_font-misc-misc,\n\txfont_font-mutt-misc, xfont_font-schumacher-misc,\n\txfont_font-screen-cyrillic, xfont_font-sony-misc,\n\txfont_font-sun-misc, xfont_font-winitzki-cyrillic,\n\txfont_font-xfree86-type1, xfsprogs, xkeyboard-config, xl2tp,\n\txlib_libfontenc, xlib_libXi, xmlstarlet, xscreensaver,\n\txserver_xorg-server, xtables-addons, xvkbd, xz, yad, yasm,\n\tympd, zeromq, zic, znc, zsh,\n\n\tNew packages: acsccid, assimp, atkmm, autofs, bcm2835,\n\tcairomm, cantarell, chocolate-doom, comix-cursors, cxxtest,\n\tedid-decode, emlog, gcr, gtkmm3, hidapi, jquery-sidebar,\n\tkernel-module-imx-gpu-viv, libasplib, libcroco, libdvbpsi,\n\tlibfreeglut, libgdiplus, libglfw, libhdhomerun, libnet,\n\tlibsoil, lldpd, luvi, mbedtls, minizip, miraclecast, mongodb,\n\tmraa, netbsd-queue, netsniff-ng, nss-pam-ldapd,\n\tobsidian-cursors, openal, openbox, pangomm,\n\tpython-backports-abc, python-beautifulsoup4, python-cbor,\n\tpython-click, python-cssselect, python-ecdsa, python-html5lib,\n\tpython-idna, python-ipaddress, python-mistune, python-netaddr,\n\tpython-paho-mqtt, python-paramiko, python-pyparted,\n\tpython-pysmb, python-pyudev, python-singledispatch,\n\tpython-smbus-cffi, python-urllib3, qt53d, rabbitmq-c, rfkill,\n\tsbc, spi-tools, tpm-tools, trousers, ubus, unrar, unscd,\n\tunzip, v4l2grab, xdriver_xf86-video-nouveau, xdotool, zbar\n\n\tRemoved packages: libungif, python-pyxml,\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#7886: gettext: link failure with locally-installed libxml2\n\t#7892: systemd-journald is broken\n\t#8066: nodejs crashes when built with gcc 4.9\n\t#8296: nodejs 0.12.7 - npm crashes (seg core dump)\n\t#8501: gunzip fails to uncompress files\n\t#8541: fail to build host-fakeroot-1.20.2\n\t#8546: build instructions for raspberry pi don't work\n\t#8571: strace for ARC compile error\n\t#8581: pciutils.mk PCIUTILS_MAKE_OPTS typo\n\t#8616: Fail to build for raspberrypi_defconfig with big endian\n\t#8621: sqlite package, properly enable readline\n\n2015.11, Released November 30th, 2015\n\n\tMinor fixes.\n\n\tMerged/seperate /usr handling is now also performed for\n\tstaging so cross-gdb / gdbserver can find the libraries.\n\n\tUpdated/fixed packages: autossh, conntrack-tools, dcron,\n\tespeak, gcc, glmark2, gpsd, gstreamer1, libglib2, libsigsegv,\n\tlibsoc, libv4l, minidlna, mongrel2, opencv, polarssl,\n\trpi-userland, rubix, skeleton, tovid, uemacs, valgrind, yad,\n\tzmqpp\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#8441: Invalid directory for X11 fonts in target (RPi2)\n\t#8491: libglib2 2.46.1 not Building for armv5 on 2015.11-rc3\n\n2015.11-rc3, Released November 26th, 2015\n\n\tFixes all over the tree.\n\n\tWe have a new modern website!\n\n\tUpdated/fixed packages: apitrace, audiofile, autossh, bullet,\n\tc-ares, collectd, conntrack-tools, cryptodev-linux, dropbear,\n\tfastd, gmp, gpsd, gst-plugins-bad, gst-plugins-base,\n\tgst-plugins-good, gst-plugins-ugly, gstreamer, gstreamer1,\n\tguile, iodine, iproute2, jimtcl, kompexsqlite, libethumb,\n\tlibfreeimage, libgsasl, libgtk3, libxml2, localedef,\n\tlttng-tools, macchanger, mongrel2, mpd, openntpd, openssl,\n\toprofile, pcre, qt5base, quagga, rpi-userland, sconeserver,\n\tsdl, spidev_test, sqlite, strongswan, ustr, xapp_sessreg,\n\tyajl, zmqpp\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#6872: gpsd: disabled on microblaze\n\t#8321: invalid opcode error with minidlna and ffmpeg\n\t#8336: Default systemd configuration fails to boot correctly in 2015-08\n\t#8446: rpi-userland failed to build with glibc 2.22\n\n2015.11-rc2, Released November 19th, 2015\n\n\tFixes all over the tree.\n\n\tLD_LIBRARY_PATH is no longer used to ensure host binaries find\n\ttheir libraries, fixing issues on recent Fedora.\n\n\tToolchain fixes for powerpc e5500 / e6500. Fix for an issue\n\twith ${TARGET}-cc after the move to use a toolchain wrapper\n\tfor the internal toolchain.\n\n\tAppy-patches.sh now correctly applies all files listed in\n\tseries files.\n\n\tFixes for merged /usr handling when a custom skeleton is used.\n\n\tUpdated/fixed packages: axfsutils, boost, busybox, dhcp,\n\tdirectfb, dropbear, ebtables, fastd, ffmpeg, gauche, gcc,\n\tgettext, gst1-plugins-bad, hostapd, ibrdtnd, libcurl,\n\tlibecore, libgudev, libnss, libpng, libserial, libssh2,\n\tlibuecc, libxml2, linux-headers, liquid-dsp, ltris,\n\tlua-periphery, minidlna, mongrel2, mpd, mpg123, mplayer,\n\tmysql, opencv, opencv3, package, perl-file-util, php-ssh2,\n\tpolarssl, pulseaudio, python-protobuf, qemu, qt5base, ranger,\n\truby, skeleton, slang, squeezelite, strongswan, tovid, uclibc,\n\tushare, wine, wpa_supplicant, x265,\n\txdriver_xf86-video-siliconmotion, zxing-cpp\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#4790: Running udhcpc on a system with NFS root kills NFS\n\t#8456: Building host-pkgconf on Fedora 23 fails due to..\n\n2015.11-rc1, Released November, 7th 2015\n\n\tFixes all over the tree and new features.\n\n\tArchitectures:\n\n\t- Support for sparc64 added (internal toolchain with glibc\n\t  only).\n\n\t- Support for mips32r6 and mips64r6 added.\n\n\t- Support for Intel Quark X1000 CPU.\n\n\t- Switch to EABIhf by default on ARM when a VFP is available.\n\n\tToolchains:\n\n\t- glibc 2.22, gdb 7.10, use gdb 7.9 by default, musl 1.1.12,\n\t  uclibc-ng 1.0.8, host-gdb enabled on AArch64.\n\n\t- The toolchain wrapper which was used only for external\n\t  toolchains is now also used for Buildroot internal\n\t  toolchains. This allowed to fix the ccache support, prepare\n\t  the way for top-level parallel build support and remove gcc\n\t  patches used to detect header/library path poisoning.\n\n\t- Remove Analog Devices Blackfin toolchain 2012R2.\n\n\t- Fix several Xtensa build failures by switching from\n\t  text-section-literals to auto-litpools.\n\n\t- Enable MIPS64 support in uClibc-ng, use uClibc on ARC\n\t  rather than a specific fork.\n\n\t- Linaro toolchains for ARM, ARMeb and AArch64 updated to\n\t  2015.08. 2014.09 version is kept since 2015.08 only runs on\n\t  x86_64 hosts.\n\n\tBootloaders:\n\n\t- Fix ARM64 support in U-Boot.\n\n\tDefconfigs:\n\n\t- Added: ARC HS38 VDK virtual boards, Avnet Microzed, Boundary\n\t  Devices Nitrogen SoloX, Freescale i.MX6 SoloX Sabre SD,\n\t  OLinuxino A20 Lime2, Qemu Sparc64, Qemu SuperH 4 big endian,\n\t  Synopsys AArch64 VDK virtual platform.\n\n\t- Updated: calao_qil_a9260, calao_usb_a9g20_lpw, ci20,\n\t  cubieboad, freescale_imx6_*, imx53loco, imx6_vab820,\n\t  mpc8315erdb, qmx6, p1010rdb, qemu, raspberrypi,\n\t  raspberrypi2, riotboard, snps_axs10*, wandboard.\n\n\t- Removed: at91rm9200df, at91sam9260dfc, at91sam9263ek,\n\t  calao_snowball_defconfig, gnublin, integrator926_defconfig.\n\n\tInfrastructure:\n\n\t- Support for fetching from Mercurial tags fixed.\n\n\t- Introduce LINUX_NEEDS_MODULES, which allows to enforce\n\t  module support to be enabled in the kernel when a package\n\t  builds out-of-tree kernel modules (through the\n\t  pkg-kernel-module infrastructure or on its own).\n\n\t- Improve the perl package infrastructure to automatically add\n\t  the dependency to the perl interpreter to target perl module\n\t  packages.\n\n\t- Remove trailing slashes in <pkg>_SITE and addition of a\n\t  check to ensure such trailing slashes are no longer added.\n\n\t- Extend the legal infrastructure to allow packages to declare\n\t  their actual source code. This is useful for packages for\n\t  which <pkg>_SOURCE points to pre-built binaries (as is the\n\t  case for external toolchains). The new <pkg>_ACTUAL_SOURCE\n\t  variable allows to point to the source code in such cases.\n\n\t- Improved ccache support, thanks to the usage of a toolchain\n\t  wrapper for internal toolchain. Now a single cache directory\n\t  can be shared between different Buildroot builds.\n\n\t- Addition of a 'graph-size' make targets, which generates a\n\t  PDF graph of per-package size of the root filesystem.\n\n\t- Addition of <pkg>_EXCLUDES so that packages can request\n\t  certain parts of the source code tarball to not be\n\t  extracted. This feature is currently used by gcc and\n\t  toolchain-external.\n\n\t- Packages can now use the <pkg>_PKGDIR variable, provided by\n\t  the package infrastructure, to reference their package\n\t  directory, instead of explicitly using package/<pkg>/.\n\n\tFilesystems:\n\n\t- Add high lz4 compression to squashfs.\n\n\t- Simplification of shell profile files in the default\n\t  skeleton.\n\n\t- Remove ftp user and /home/ftp from the skeleton, and let ftp\n\t  server packages create these when needed.\n\n\t- Add support for /bin, /sbin and /lib to be symlinks to their\n\t  corresponding directories in /usr. This is enforced for\n\t  systemd configurations, and optional for other\n\t  configurations.\n\n\t- Support for AXFS filesystem image generation added.\n\n\t- New options to add extra space/inodes to ext2/3/4 images.\n\n\tUpdated/fixed packages:\n\n\tadwaita-icon-theme, apache, apitrace, atk, audit, avahi,\n\tbarebox, bash, batctl, bind, binutils, bluez_utils, boost,\n\tbridge-utils, cairo, ccache, chrony, clapack, cloog, cmake,\n\tcollectd, connman, conntrack-tools, coreutils, cpio,\n\tcryptsetup, dbus, dbus-cpp, devmem2, dhcp, dhcpcd, dhcpdump,\n\tdhrystone, dillo, directfb, directfb-examples, dmraid,\n\tdos2unix, dovecot, dovecot-pigeonhole, drbd-utils, dropbear,\n\tdropwatch, dtc, e2fsprogs, ebtables, efl, eigen, ejabberd,\n\telf2flt, elfutils, erlang, ethtool, eudev, evemu, exfat,\n\texfat-utils, expat, faifa, fbterm, fdk-aac, feh, ffmpeg, file,\n\tflashrom, fping, freerdp, freescale-imx, freetype, gdk-pixbuf,\n\tgenimage, gettext, git, glib-networking, glmark2, gnupg2,\n\tgnuradio, gnutls, gpsd, grep, grub2, gst1-imx, gst1-libav,\n\tgst1-plugins-bad, gst1-plugins-base, gst1-plugins-good,\n\tgst1-plugins-ugly, gst1-validate, gst-fsl-plugins,\n\tgst-plugins-bad, gstreamer1, guile, gvfs, harfbuzz, haveged,\n\thostapd, icu, imagemagick, impiutil, imx-gpu-viv, imx-vpu,\n\tinadyn, intltool, iostat, iperf3, ipmiutil, iproute2,\n\tiptables, iw, jpeg-turbo, jq, jsoncpp, kexec-lite, kmod, kodi,\n\tkodi-audioencoder-flac, kodi-pvr-argustv, kodi-pvr-filmon,\n\tkodi-pvr-hts, kodi-pvr-mythtv, kodi-pvr-pctv,\n\tkodi-pvr-stalker, kodi-pvr-vbox,\n\tkodi-visualisation-waveforhue, less, lftp, libbluray,\n\tlibcgroup, libconfuse, libcurl, libdcadec, libdrm, libevdev,\n\tlibffi, libfribidi, libfslcodec, libfslparser, libfslvpuwrap,\n\tlibgcrypt, libglew, libglib2, libgtk3, libidn, liblinear,\n\tliblockfile, libmicrohttpd, libnetfilter_conntrack, libnfs,\n\tlibnftnl, libnl, libnspr, libnss, libpcap, libpfm4, libpng,\n\tlibselinux, libserial, libsoup, libsoxr, libstrophe, libtasn1,\n\tlibtirpc, libtorrent, libupnpp, liburcu, libusb-compat, libuv,\n\tlibv4l, libva, libva-intel-driver, libxcb, lighttpd, links,\n\tlinux, linux-firmware, linux-fusion, linux-headers,\n\tlirc-tools, localedef, lpeg, lsof, ltp-testsuite,\n\tlttng-libust, lttng-tools, lua-periphery, luaposix, lvm2, lxc,\n\tlz4, mdadm, mesa3d, mesa3d-headers, minicom, minidlna, moarvm,\n\tmodem-manager, mosquitto, mpd, mpdecimal, mpg123, mplayer,\n\tmrouted, msmtp, mtd, mutt, nettle, network-manager, nfs-utils,\n\tnftables, nginx, nodejs, noip, ntp, ofono, opencv3, openpgm,\n\topenssl, openswan, openvpn, pango, parted, perl, perl-cross,\n\tperl-crypt-openssl-random, perl-http-message,\n\tperl-io-socket-ssl, perl-module-build, perl-mojolicious,\n\tperl-netaddr-ip, perl-net-dns, perl-net-http, perl-net-ssleay,\n\tperl-uri, perl-xml-libxml, php, picocom, pixman, pkgconf,\n\tpoco, polarssl, portaudio, portmap, postgresql, proftpd,\n\tprotobuf, protobuf-c, pulseaudio, python-configshell-fb,\n\tpython-networkmanager, python-numpy, python-pyparsing,\n\tpython-pypcap, python-rtslib-fb, python-spidev, python-urwid,\n\tpython-web2py, qemu, qt5base, redis, rngtools, rng-tools,\n\trpi-firmware, rpi-userland, rtmpdump, rtorrent, ruby, samba,\n\tsamba4, sane-backends, sconeserver, sdl, sed, setools,\n\tshairport-sync, shared-mime-info, sland, smartmontools,\n\tsoftether, spice-protocol, sqlcipher, sqlite, squid,\n\tstrongswan, stunnel, subversion, sudo, sunxi-tools,\n\tsupervisor, systemd, tar, targetcli-fb, tcpdump, tiff, tor,\n\ttvheadend, tzdata, uboot-tools, udisks, unionfs, upmpdcli,\n\tutil-linux, vala, valgrind, vim, vlc, vorbis-tools, vsftpd,\n\tvtun, wavpack, webkitgtk24, weston, whois, wireless-regdb,\n\twireshark, wpa_supplicant, xdriver_xf86-input-vmmouse,\n\txdriver_xf86-video-imx-viv, xdriver_xf86-video-intel,\n\txdriver_xf86-video-sis, xlib_libXi, xorg-server,\n\txtables-addons, xterm, xz, zic, znc, zsh\n\n\tNew packages:\n\n\taxfsutils, bitstream, check, dvblast, eventlog, fastd, gauche,\n\tgmock, graphite2, gssdp, gupnp, gupnp-av, ibrcommon, ibrdtn,\n\tibrdtnd, ibrdtn-tools, imx-kobs, iqvlinux, irssi,\n\tkompexsqlite, libbroadvoice, libcddb, libcodec2, libcrossguid,\n\tlibg7221, libhttpparser, libilbc, libldns, libmng,\n\tlibopenh264, libpam-radius-auth, libpam-tacplus, libsilk,\n\tlibsoundtouch, libssh, libuecc, libyuv, liquid-dsp, luv,\n\tmicropython, micropython-libs, python-pyratemp,\n\tpython-pyroute2, python-ranger, rapidxml, scrypt, sdl2,\n\tsp-oops-extract, squeezelite, stress-ng, swupdate, syslog-ng,\n\tx265, xdriver_xf86-video-fbturbo, xxhash, yad, zxing-cpp\n\n\tRemoved packages:\n\n\tblackbox (was deprecated), divine (merged in directfb),\n\tkobs-ng (replaced by imx-kobs), mediactl (merged in libv4l),\n\tsawman (merged in directfb), schifra (marked broken since a\n\tlong time), texinfo (host variant only, no longer used), zxing\n\t(replaced by zxing-cpp),\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#4099: cut utility from GNU coreutils works incorrect\n\t#7772: libxml-parser-perl build failure: missing dependency\n\t       ExtUtils/MakeMaker\n\t#7931: Default configuration for Cubieboard v1 is outdated\n\t#8116: 2015.05-rc2 raspberrypi2_defconfig network interface\n\t       not coming up\n\t#8246: X.org DRI2 build issue\n\t#8256: pointing to /usr/bin/objcopy old version (x86) instead\n\t       of the generated one\n\t#8266: mplayer build issue\n\t#8281: pyrexc fails to run when path is too long\n\t#8316: lttng-tools and lttng-babeltrace executables contain\n\t       bad RPATH pointing to host machine\n\t#8331: kexec wants shutdown in /sbin, but systemd installs it\n\t       in /usr/sbin\n\t#8361: Buildroot 2015.08.1 skeleton inittab overwritten by\n\t       busybox's version\n\t#8366: libevent does not build\n\t#8386: build failed with external toolchain\n\t#8391: Node.js 0.12.7 fails to build on raspberry_pi defconfig\n\t#8396: CCACHE initialization\n\t#8401: gpsd 3.15 NMEA support\n\t#8416: cups depends on BR2_DEPRECATED_SINCE_2015_05\n\t#8421: util-linux installs systemd files in output/target/home/\n\n2015.08, Released August 31st, 2015\n\n\tMinor fixes.\n\n\tOpenCV 3.x package renamed to opencv3. OpenCV 2.4.x\n\treintroduced as opencv.\n\n\tUpdated/fixed packages: bootutils, canfestival, cppcms,\n\tcurlftpfs, dhcpdump, dropbear, erlang-p1-tls, exfat, gnuradio,\n\tipkg, libgudev, libmbim, libwebsock, linux-pam, lm-sensors,\n\tltrace, midori, network-manager, openssh, perl-file-listing,\n\tperl-http-cookies, perl-http-daemon, perl-http-negotiate,\n\tperl-www-robotrules, python-can, qt5base, qt5multimedia,\n\tsetools, sysvinit, tinyalsa, tn5250, tvheadend, uboot, vlc,\n\tx264, xserver_xorg-server, zyre\n\n2015.08-rc2, Released August, 24th 2015\n\n\tFixes all over the tree.\n\n\tToolchain: fix gcc build on NIOS-II.\n\n\tInfrastructure: add <fs>_POST_GEN_HOOKS mechanism to fix\n\thybrid ISO image generation.\n\n\tArchitectures: add arm1136j-s variant.\n\n\tUpdated/fixed packages: apitrace, audit, bcusdk, bdwgc,\n\tbeecrypt, boost, bwm-ng, cdrkit, c-icap, cifs-utils, clapack,\n\tc-periphery, cpio, cramfs, czmq, dawgdic, dnsmasq, dosfstools,\n\tdropbear, elfutils, empty, eudev, fan-ctrl, filemq, gnutls,\n\tguile, haveged, imlib2, libcec, libepoxy, libev, libgpgme,\n\tlibiio, libnetfilter_queue, libnfnetlink, libpfm4, libpthsem,\n\tlibrtas, libselinux, libsigsegv, libsodium, libv4l, lightning,\n\tlinux, lirc-tools, lrzsz, mono, mosh, mpd, msmtp, nbd,\n\tnetatalk, nodejs, ola, opencv, oprofile, php, poco,\n\tpostgresql, powertop, protobuf, protobuf-c, qt5base,\n\tqt5quickcontrols, rapidjson, rng-tools, squid, sysdig,\n\tsysstat, tftpd, tinc, tz, util-linux, webkitgtk24, weston,\n\twireshark, wvstreams, xdriver_xf86-input-synaptics, zyre.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#8276: package/dropbear: symlink resolution incorrect\n\t#8286: Error with buildroot\n\t#8301: ldconfig parameter in Makefile\n\n2015.08-rc1, Released August, 5th 2015\n\n\tFixes all over the tree and new features.\n\n\tArchitectures:\n\n\t - Refactor how the availability of an MMU is described.\n\t - Minimal support for Cortex-M3\n\t - Minimal support for AArch64 big-endian\n\n\tToolchains:\n\n\t - Add CodeSourcery MIPS 2015.05, remove MIPS 2013.11\n\t - Use uClibc-ng as the default uClibc version, instead of the\n\t   official uClibc, which hasn't done any release since 3+\n\t   years\n\t - eglibc is now marked as deprecated\n\t - GCC: gcc 4.9.x is now the default and was updated to 4.9.3,\n\t   support for gcc 5.x added.\n\t - Binutils: use Binutils 2.24 as the default, 2.25.x series\n\t   bumped to 2.25.1, remove old Binutils 2.22.\n\t - Update ARC toolchain components to 2015.06\n\t - Add support for Fortran when building gcc\n\n\tBootloaders:\n\n\t - Support for using the kconfig configuration system in\n\t   U-Boot\n\n\tNew Defconfigs:\n\n\t - VIA VAB-820/AMOS-820\n\t - OLimex OLinuxino A20 Lime\n\t - Many new defconfigs for Atmel evaluation boards:\n\t   at91sam9rlek, at91sam9x5ek, sama5d3xek, sama5d4ek, sama5d4\n\t   Xplained Ultra, sama5d3 Xplained.\n\t - ACME Systems Aria G25\n\t - WarPboard\n\t - Altera Cyclone 5 Development Board\n\t - Xilinx zc706\n\t - ARC AXS101 and AXS103 Software Development Platforms\n\t - Significant updates to Raspberry Pi / Raspberry Pi 2\n\n\tInfrastructure:\n\n\t - Buildroot takes better care now of generating predictable\n\t   permissions in the target filesystem. However, existing\n\t   permissions on a custom skeleton or rootfs overlay will no\n\t   longer be preserved. Therefore, it is necessary to add a\n\t   permission table (BR2_ROOTFS_DEVICE_TABLE) to set the\n\t   required permissions.\n\t - Add support for kconfig fragments.\n\t - No longer pass --{enable,disable}-debug to autotools\n\t   packages depending on the value of\n\t   BR2_ENABLE_DEBUG. BR2_ENABLE_DEBUG now only controls\n\t   whether we build with -g or not.\n\t - Support for extracting archives in .lzma in the generic\n\t   package infrastructure.\n\t - Remove random-seed file from the default skeleton, since\n\t   seeding the entropy pool with a known seed makes more harm\n\t   than good.\n\t - In the CVS download helper, add support to use a date as\n\t   the version.\n\t - Add support for a per-package <pkg>_STRIP_COMPONENTS\n\t   variable, which packages can use to specify how many path\n\t   components should be stripped when extracting the tarball.\n\t - Addition of a 'kernel-module' package infrastructure, which\n\t   simplifies the packaging of external kernel modules. Many\n\t   existing packages are converted to use it.\n\t - Allow bootloaders to be implemented in $(BR2_EXTERNAL)\n\t - Remove /etc/securetty from the default skeleton.\n\t - Migration of sysV initscripts from the default skeleton to\n\t   a package called 'initscripts', installed only when Busbox\n\t   init or sysvinit are used.\n\t - Migration of the skeleton logic to a proper 'skeleton'\n\t   package.\n\t - Addition of a 'linux-tools' infrastructure in the 'linux'\n\t   package, to support building user-space tools bundled\n\t   within the Linux kernel sources, such as perf and cpupower.\n\t - Usage of backticks instead of make $(shell ...) to execute\n\t   shell commands. This allows to delay the evaluation of such\n\t   commands when actually needed, and not when expanding the\n\t   variables. It is useful to make 'make printvars' less\n\t   noisy, and as a preparation to support top-level parallel\n\t   build.\n\t - Libtool .la files are not mungled for all package types,\n\t   instead of being handled only for packages using the\n\t   autotools-package infrastructure.\n\t - Add mechanism to allow packages to express a dependency on\n\t   gcc versions. This is needed for packages that use C++11 or\n\t   C11 support for example.\n\n\tImportant package updates:\n\n\t - Complete rework of the matchbox packaging\n\t - Lots of fixes in packages for compatibility with musl and\n\t   gcc 5.\n\t - Hash files added to a large number of packages.\n\t - Update a significant number of packages to use a new\n\t   hosting, after the announcement of Google Code and\n\t   Gitorious closing.\n\t - Major packages needed for SELinux support have been merged,\n\t   but the support is not complete yet.\n\t - Significant update of OpenCV to version 3.0, and addition\n\t   of lots of eatures.\n\t - Significant update of all packages supporting the GPU and\n\t   VPU of i.MX ARM processors.\n\t - Addition of systemd support in a significant number of\n\t   packages.\n\t - Qt5 updated to 5.5.0\n\t - Use modular X.org server by default instead of KDrive\n\n\tFilesystems:\n\n\t - Complete overhaul of the iso9660 support. Now allows to use\n\t   directly IS9660 as the root filesystem format and not only\n\t   an initrd, and supports Grub 2 and isolinux in addition to\n\t   Grub.\n\n\tUpdated packages: a10disp, agentpp, apache, at91bootstrap3,\n\taudit, barebox, bc, bind, bmon, boost, btrfs-progs,\n\tca-certificates, can-utils, ccache, cloog, collectd, connman,\n\tcoreutils, c-periphery, cryptsetup, dado, dbus, dejavu,\n\tdhcpcd, dnsmasq, dosfstools, dovecot, dovecot-pigeonhole,\n\te2fsprogs, ejabberd, erlang-p1-cache-tab, erlang-p1-sip,\n\terlang-p1-stringprep, erlang-p1-stun, erlang-p1-tls,\n\terlang-p1-utils, erlang-p1-xml, erlang-p1-yaml, ethtool,\n\teudev, evtest, exim, expect, explorercanvas, feh, ffmpeg,\n\tfile, flashrom, freescale-imx, freetype, gawk, gcc, gdb,\n\tgettext, git, glib-networking, gnupg2, gnutls, gpsd, gptfdisk,\n\tgpu-viv-bin-mx6q, gst-fsl-plugins, harfbuzz, hdparm, heimdal,\n\ti2c-tools, imagemagick, imx-vpu, iproute2, ipset, isl, iw,\n\tkodi, kodi-addon-xvdr, kodi-audioencoder-flac,\n\tkodi-audioencoder-lame, kodi-audioencoder-vorbis,\n\tkodi-audioencoder-wav, lftp, libass, libassuan, libcec,\n\tlibconfi, libcurl, libdrm, libevdev, libfreefare, libfslcodec,\n\tlibfslparser, libfslvpuwrap, libfuse, libglib2, libgpgme,\n\tlibgtk2, libgtk3, libical, libidn, libiio, libinput, libiscsi,\n\tlibllcp, libmicrohttpd, libnfc, libnss, libpcap, libpciaccess,\n\tlibpng, libserialport, libsigrok, libsoc, libtirpc, libubox,\n\tlibunistring, libupnp, libuv, libv4l, libva,\n\tlibva-intel-driver, libXrandr, lighttpd, linenoise, linux,\n\tlinux-firmware, linux-headers, live555, ltrace, lua,\n\tlua-csnappy, lua-ev, luajit, lua-messagepack, luaperiphery,\n\tlvm2, lxc, lzo, mesa3d, mesa3d-headers, midori, mmc-utils,\n\tmodem-manager, mono, mosquitto, mpd, mpd-mpc, mpfr, mpg123,\n\tmtd, musl, nano, netperf, network-manager, nfs-utils, nginx,\n\tnodejs, ntp, ola, opencv, openldap, openssh, openssl,\n\topenswan, openvmtools, openvpn, opkg, orbit, orc, pcmanfm,\n\tperl-cross, perl-encode-locale, perl-io-socket-ssl,\n\tperl-mojolicious, perl-net-ssleay, perl-path-tiny, perl-uri,\n\tperl-xml-libxml, php, pinentry, polarssl, postgresql,\n\tpulseview, pure-ftpd, python, python-dpkt, python-lxml,\n\tpython-networkmanager, python-pyinotify, python-pypcap,\n\tpython-tornado, qextserialport, qt, qt5, rapidjson, redis,\n\trpcbind, rpi-firmware, rpi-userland, samba4, shairport-sync,\n\tsnmpp, sqlite, squid, strongswan, stunnel, sudo, sunxi-boards,\n\tsunxi-mali, sysdig, sysstat, systemd, tcpdump, tiff, tmux,\n\ttor, txheadend, tzdata, uboot, uclibc, ulogd, upmpdcli,\n\tusb_modeswitch, usb_modeswitch_data, vala, vsftpd, wayland,\n\tweston, whois, wireless-regdb, wireshark, x264, xapp_xvinfo,\n\txdriver_xf86-input-libinput, xdriver_xf86-input-vmmouse,\n\txdriver_xf86-video-cirrus, xdriver_xf86-video-geode,\n\txdriver_xf86-video-imx-viv, xdriver_xf86-video-mach64,\n\txdriver_xf86-video-neomagic, xdriver_xf86-video-r128,\n\txdriver_xf86-video-savage, xdriver_xf86-video-siliconmotion,\n\txdriver_xf86-video-vesa, xkeyboard-config, xlib_libfontenc,\n\txlib_libFS, xlib_libXaw, xlib_libxkbfile, xlib_libXrender,\n\txlib_libXt, xproto_kbproto, xproto_xproto, xproto_xrandrproto,\n\txscreensaver, xserver_xorg-server, xtables-addons, yaml-cpp,\n\tzic.\n\n\tNew packages: angularjs, atf, audit, c-icap, c-icap-modules,\n\tcpio, dawgdic, faketime, fcgiwrap, gflags, glog, initscripts,\n\tjquery-datetimepicker, kodi-audioencoder-modplug,\n\tkodi-audioencoder-nosefar, kodi-audioencoder-sidplay,\n\tkodi-audioencoder-snesapu, kodi-audioencoder-stsound,\n\tkodi-audioencoder-timidity, kodi-audioencoder-vgmstream,\n\tkodi-platform, kodi-pvr-argustv, kodi-pvr-dvblink,\n\tkodi-pvr-dvbviewer, kodi-pvr-filmon, kodi-pvr-hts,\n\tkodi-pvr-iptvsimple, kodi-pvr-mediaportal-tvserver,\n\tkodi-pvr-mythtv, kodi-pvr-nextpvr, kodi-pvr-njoy,\n\tkodi-pvr-pctv, kodi-pvr-stalker, kodi-pvr-vbox,\n\tkodi-pvr-vdr-vnsi, kodi-pvr-vuplus, kodi-pvr-wmc,\n\tkodi-screensaver-asteroids, kodi-screensaver-biogenesis,\n\tkodi-screensaver-crystalmorph, kodi-screensaver-greynetic,\n\tkodi-screensaver-pingpong, kodi-screensaver-pyro,\n\tkodi-screensaver-stars, kodi-visualisation-shadertoy,\n\tkodi-visualisation-spectrum, kodi-visualisation-waveforhue,\n\tkodi-visualisation-waveform, kvmtool, kyua, libfm,\n\tlibfm-extra, libplatform, librtas, libsodium, libsquish,\n\tlibucl, libump, linux-backports, lua-iconv, lutok, menu-cache,\n\tmoarvm, monkey, mono-gtksharp3, mosh, openipmi, python-can,\n\tpython-pycli, python-pydal, python-pyyaml, python-web2py,\n\tqpid-proton, qt5webchannel, quazip, racehound, rtl8188eu,\n\trtl8821au, sepolgen, setools, skeleton, stm32flash,\n\twebkitgtk24, xdriver_xf86-video-qxl, zynq-boot-bin.\n\n\tDeprecated packages: webkitgtk, libgail, eglibc support in\n\tglibc package.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#4291: Segmentation fault with all binaries that use threads\n               when compiled with gcc 4.6\n\t#6944: building toolchain for sh4 fails\n\t#7592: Buildroot GCC: -lto requires plugin support in ranlib\n\t#7628: Python SSL does not get built for Raspberry Pi\n\t#7682: Missing dependencies for NFS\n\t#7742: dhcp lacks important features when BR2_ENABLE_DEBUG\n\t#7754: make: *** [/..../buildroot-2014.11/output/build/host-gcc-initial-4.8.3/.stamp_built] Error 2\n\t#7946: libglib2-2.42.2 fails to build for sparc-buildroot-linux-gnu\n\t#7956: glibc 2.20 and 2.21 fail to build for sh64-buildroot-linux-gnu\n\t#7971: python-flask, python-werkzeug. No module named zlib\n\t#7981: Target file system skeleton permissions hazard\n\t#8006: rpcdebug in nfs-utils built for the host\n\t#8036: alsa-lib headers problem that prevents to compile alsa\n               dependent projects\n\t#8081: systemd init system: /tmp is not mode 1777\n\t#8121: php opcache extension doesn't get installed\n\t#8151: x86-64 make fails with ncurses 5.9\n\t#8156: pkg-kconfig infra broken for *-update-{config, defconfig}\n\t#8161: default /bin/sh symlink to busybox is full path and not relative\n\t#8171: glamor missing\n\t#8191: Request update support for the cubieboard series\n\t#8201: Important security upgrades for node.js\n\n2015.05, Released May 31st, 2015\n\n\tMinor fixes.\n\n\tUpdated/fixed packages: conntrack-tools, directfb, fio, flite,\n\tgptfdisk, ipmiutil, iproute2, janus-gateway, keyutils, knock,\n\tlibelementary, libgcrypt, libgsasl, libjpeg, libstrophe,\n\tlttng-libust, nbd, ncurses, nmap, php, postgresql, python,\n\tpython3, sconeserver, udpcast, upmpdcli\n\n2015.05-rc3, Released May 22nd, 2015\n\n\tSeveral fixes, mainly related to static linking.\n\n\tUpdated/fixed packages: acl, alsa-utils, apr, armadillo, attr,\n\tautoconf-archive, binutils, boost, czmq, dhcpcd, duma,\n\tenlightenment, exim, fbterm, freerdp, gcc, gdk-pixbuf,\n\tgoogle-breakpad, gpsd, heirloom-mailx, hwloc, ipmiutil,\n\tiproute2, jack2, jasper, kmod, lcdproc, leafnode2, libcap-ng,\n\tlibftdi1, libmatroska, libmemcached, libmodbus, libnftnl,\n\tlibsigrok, libupnpp, libuv, libxml-parser-perl, linux,\n\tlinux-headers, lirc-tools, lua-periphery, lxc, mongoose, mono,\n\tmpg123, mosquitto, neardal, newt, ntp, ola, openldap, opencv,\n\tphp, postgresql, protobuf, pulseaudio, python-pyqt, qemu, qt,\n\tqt5base, rpi-userland, rsyslog, snmppp, sqlite, tiff,\n\ttinyxml2, uboot-tools, unionfs, ux5000-firmware, usbredir,\n\tushare, vpnc, vsftpd, wavpack, wireless_tools, wsapi,\n\twvstreams, xmlstarlet, zeromq, zmqpp\n\n\tNew packages: c-periphery\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#8106: mkfs.jffs2 uses the --pagesize parameter incorrectly\n\t#8111: 2015.05.rc2 LIBFOO_CONF_OPTS not working\n\t#8126: exim lacks plaintext and cram-md5 auth\n\n2015.05-rc2, Released May 11th, 2015\n\n\tMinor fixes.\n\n\tToolchain: PR56780 backport to GCC 4.8.4 to fix GDB linking\n\tissues. Context functions enabled for uClibc snapshot /\n\tuClibc-NG.\n\n\tArchitectures: Endian handling symbol for Xtensa, binutils\n\tfixes.\n\n\tInfrastructure: Fix for kernel module stripping when\n\tlocalversion contains spaces.\n\n\tUpdated/fixed packages: at, autoconf-archive, binutils,\n\tcc-tool, cryptsetup, dstat, expedite, freerdp, giflib,\n\tgnuchess, guile, ipmiutil, iproute2, mono, monolite, neard,\n\tola, poppler, postgresql, python-qt, qt, sqlite, valgrind,\n\txlib_libXfont\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#8086: Cannot select systemd as init with Linaro 2014.09...\n\n2015.05-rc1, Released May 4th, 2015\n\n\tFixes all over the tree and new features.\n\n\tArchitectures: Removed AVR32 support, deprecate SH64, added\n\tsupport for steamroller, corei7-avx and core-avx2 x86\n\tvariants.\n\n\tToolchains: IPv6 and Largefile support now enforced for\n\tuClibc. Corresponding Kconfig symbols removed.\n\n\tExternal CodeSourcery AMD64 2014.05, MUSL-cross 1.1.6 added,\n\tCS sh2, Xilinx microblaze v2/14.3 removed. Distro-class\n\texternal toolchains are now detected and blacklisted.\n\n\tInternal toolchain support for Nios2 added, Blackfin\n\tremoved. Aarch64 and sh musl support. uClibc-ng support added.\n\n\tLibatomic is now handled for internal and external\n\ttoolchains. Link time optimization (LTO) support.\n\n\tNew Defconfigs: Freescale i.MX28 EVK, i.MX31 PDK and SABRE\n\tAuto, Raspberry Pi 2, RIoTboard,\n\n\tInfrastructure: Hashes for a large number of packages have\n\tbeen added. Missing hashes now stop the build unless\n\texplicitly disabled.\n\n\tSpaces and colons (:) are now supported in package\n\tversions. Dependencies can now be listed for the patch step\n\t(<PKG>_PATCH_DEPENDENCIES). Kconfig and Linux kernel\n\textensions infrastructure has been added.\n\n\tMakedevs now has a recursive (r) option.\n\n\tThe variable containing the list of packages to build has been\n\trenamed from TARGETS to PACKAGES.\n\n\tMake external-deps / legal-info / source / source-check have\n\tbeen reimplemented using the package infrastructure, so their\n\toutput/behaviour may differ from earlier (some packages were\n\tnot included in the past).\n\n\tThe old insecure DES password encoding is no longer supported.\n\n\tU-Boot patch option now support direct references to patch\n\tfiles and URLs in addition to directories of patches. The\n\ti.MX28 SD format (u-boot.sd) is now supported.\n\n\tUpdated/fixed packages: agentpp, aircrack-ng, alsa-lib,\n\talsa-utils, apr-util, apr, atk, autossh, avahi, avrdude,\n\tbcusdk, bdwgc, bind, binutils, bmon, boost, botan,\n\tbtrfs-progs, busybox, ca-certificates, cairo, can-utils,\n\tcanfestival, ccache, chrony, civetweb, clamav, cmake,\n\tcollectd, connman, copas, crda, cryptodev-linux, cryptsetup,\n\tcups, czmq, dbus-cpp, dbus-glib, dbus-python, dbus, dfu-util,\n\tdhcp, dhcpcd, dialog, dillo, dmraid, dnsmasq, dos2unix,\n\tdosfstools, dovecot-pigeonhole, dovecot, dropbear, dropwatch,\n\tdtv-scan-tables, dvdauthor, e2fsprogs, ecryptfs-utils,\n\tlibevas, elfutils, enscript, erlang, espeak, eudev, evemu,\n\texfat-utils, exim, f2fs-tools, feh, ffmpeg, fftw, flickcurl,\n\tfltk, fluxbox, fmlib, fmtools, freeradius-client, freerdp,\n\tgamin, gawk, gcc-final, gcc, gd, gdb, gengetopt, geoip, git,\n\tglib-networking, gnu-efi, gnuchess, gnutls, gpsd, gptfdisk,\n\tgpu-viv-bin-mx6q, gst-plugin-bad, gstreamer, gstreamer1,\n\tgtest, gvfs, harfbuzz, haserl, haveged, hiawatha,\n\thicolor-icon-theme, hostapd, hplip, httping, i2c-tools, icu,\n\tifplugd, imagemagick, imlib2, iozone, iproute2, iptables,\n\tiputils, irqbalance, iw, jack2, jhead, jimtcl, json-c, kexec,\n\tkismet, kmod, kodi-audioencoder-flac,\n\tkodi-audioencoder-vorbis, kodi-pvr-addons, kodi, ktap, lcms2,\n\tlibass, libatomic_ops, libbluray, libcap, libcgroup, libcurl,\n\tlibdrm, libdvbsi, libebml, libecore, libedit, liberation,\n\tlibev, libevas, libevdev, libftdi, libgcrypt, libglib2,\n\tlibgpgme, libgtk2, libgtk3, libiconv, libidn, libiio,\n\tlibinput, libiscsi, libksba, liblinear, libmatroska,\n\tlibmicrohttpd, libmodbus, libmpdclient, libnice, libnl,\n\tlibnspr, libnss, libpcap, libpciaccess, libphidget, libplayer,\n\tlibpthsem, libqmi, librsvg, libseccomp, libsigrok, libsoup,\n\tlibsrtp, libssh2, libtasn1, libtool, libunistring, liburcu,\n\tlibusb, libuv, libva-intel-driver, libva, libvncserver,\n\tlibvorbis, libvpx, libwebsockets, libxml2, libzip, lightning,\n\tlighttpd, linknx, linphone, linux-firmware, linux-headers,\n\tlinux-pam, live555, ljsyscall, lmbench, lockdev, logrotate,\n\tlpc3250loader, lpeg, lsof, lttng-libust, lttng-modules,\n\tlttng-tools, lua, luacrypto, luafilesystem, luajit, luaposix,\n\tluarocks, lvm2, lxc, make,\n\tmatchbox-{common,desktop,fakekey,keyboard,lib,startup-monitor,vm},\n\tmatchbox, mcelog, memcached, memstat, memtest86, mesa3d,\n\tminidlna, mjpegtools, mjpg-streamer, modem-manager, mongoose,\n\tmonit, mono, monolite, mp4v2, mpc, mpd, mpdecimal, mpg123,\n\tmplayer, musl, nano, nbd, ncftp, ncmpc, ncurses, ne10, neard,\n\tneardal, net-tools, netatalk, netsnmp, network-manager, nginx,\n\tnodejs, ntfs-3g, ntp, numactl, odhcp6c, ofono, open2300,\n\topencv, openldap, openntpd, openocd, openssh, openssl,\n\topenswan, opentyrian, openvmtools, openvpn, oprofile, p11-kit,\n\tpango, patch, patchelf, pciutils, pcre, perf, perl-gdgraph,\n\tperl-io-socket-ssl, perl-json-tiny, perl-module-build,\n\tperl-mojolicious, perl-net-ssleay, perl-path-tiny,\n\tperl-xml-libxml, perl, phidgetwebservice, php-gnupg, php,\n\tpkgconf, polarssl, poppler, popt, postgresql, powerpc-utils,\n\tpppd, prboom, procps-ng, proftpd, psplash, ptpd2,\n\tpython-{cheetah,coherence,django,markdown,netifaces,pam,six},\n\tpython-tornado, python-twisted, python-zope-interface, python,\n\tpython3, qemu, qt, qt5, qt5base, qt5multimedia,\n\tqt5xmlpatterns, qt5cinex, quagga, qwt, radvd, readline,\n\trng-tools, rpcbind, rpi-firmware, rpi-userland, rsync,\n\trsyslog, rtai, rtmpdump, ruby, sam-ba, samba, samba4,\n\tsane-backends, sconeserver, shairport-sync, sigrok-cli, slang,\n\tsmcroute, snmppp, socat, socketcand, sofia-sip, sox,\n\tspawn-fcgi, speex, sqlcipher, sqlite, squid, strace,\n\tstrongswan, stunnel, sudo, sunxi-boards, swig, sysstat,\n\tsystemd, tcpdump, tftpd, thrift, thttpd, ti-gfx, ti-utils,\n\ttiff, tinyalsa, tn5250, transmission, trinity, tslib,\n\ttvheadend, tzdata, uboot-tools, uclibc, ulogd, usb_modeswitch,\n\tusbutils, ustr, util-linux, vala, valgrind, vlc, wayland,\n\twebp, weston, wget, which, whois, wireless-regdb,\n\twireless_tools, wireshark, wpa_supplicant, wvstreams,\n\txapp_{bdftopcf,bitmap,fonttosfnt,fslsfonts},\n\txapp_{fstobdf,iceauth,mkfontscale,oclock,rgb,sessreg,setxkbmap},\n\txapp_{showfont,smproxy,twm,x11perf,xcalc,xclipboard,xcmsdb},\n\txapp_{xdbedizzy,xditview,xdpyinfo,xdriinfo,xedit,xev,xeyes},\n\txapp_{xf86dga,xfsinfo,xgamma,xgc,xhost,xinit,xinput,xkbcomp},\n\txapp_{xkbevd,xkbprint,xlsatoms,xlsfonts,xmag,xman,xmh,xmodmap},\n\txapp_xmore, xcb-util-image, xcb-util-keysyms,\n\txdata_xcursor-themes,\n\txdriver_xf86-input-{evdev,keyboard,synaptics,void},\n\txdriver_xf86-video-{ati,cirrus,geode,mach64,mga,neomagic},\n\txdriver_xf86-video-{r128,savage,siliconmotion,sis,tdfx},\n\txdriver_xf86-video-{trident,vmware,voodoo}, xenomai,\n\txfont_font-util, xkeyboard-config,\n\txlib_lib{ICE,X11,Xdmcp,Xfont,Xpm,XvMC},\n\txlib_lib{Xxf86vm,xshmfence,xtrans}, xproto_randrproto,\n\txproto_xproto, xserver_xorg-server, x11vnc, x264, xerces,\n\txorriso, xterm, xz, yaml-cpp, zeromq, zic, zmqpp\n\n\tNew packages: apache, autoconf-archive, batctl,\n\tbitstream-vera, bullet, cc-tool, doxygen, drbd-utils,\n\tdvdrw-tools, gnuradio, gst1-imx, hans, hwloc, ijs,\n\timx-usb-loader, inconsolata, iodine, iotop, ipmiutil, jsoncpp,\n\tleveldb, libdcadec, libdri2, libfreeimage, libftdi1,\n\tlibsidplay2, lirc-tools, lua-periphery, mc, mesa3d-headers,\n\tmosquitto, nvidia-driver, nvidia-tegra23{,-binaries,-codecs},\n\topenjpeg, opusfile, perl-crypt-openssl-{random,rsa},\n\tperl-db-file, perl-digest-{hmac,sha1},\n\tperl-encode-{detect,locale}, perl-file-{listing,util},\n\tperl-html-{parser,tagset}, perl-http-cookies,\n\tperl-http-{daemon,date,message,negotiate}, perl-io-html,\n\tperl-libwww-perl, perl-lwp-mediatypes, perl-mail-dkim,\n\tperl-mailtools, perl-mime-base64, perl-net-{dns,http},\n\tperl-netaddr-ip, perl-time-hires, perl-timedate, perl-uri,\n\tperl-www-robotrules, powertop, pulseview,\n\tpython-{cherrypy,lxml,mako,pyqt,pyxml,sip,spidev,ws4py}, qpdf,\n\tqt-webkit-kiosk, sl, softether, sysdig, tinyxml2, tor, tovid,\n\tunixodbc, wf111, wine, libepoxy, xapp_xcompmgr,\n\txapp_xfindproxy, xcb-util-cursor, xcb-util-renderutil,\n\txdriver_xf86-input-libinput, xdriver_xf86-video-imx{,-viv},\n\txproto_xproxymanagementprotocol\n\n\tRemoved packages: gtk2-theme-hicolor\n\n\tDeprecated packages: samba\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#7478: Multiple chosen python modules are not built due to...\n\t#7508: Use of BR2_EXTERNAL and dependencies to existing packages\n\t#7676: Package procps-ng installs binaries to nonsensical folder\n\t#7724: Startx is not installed in the target\n\t#7760: botan: wrong prefix in botan-1.10.pc\n\t#7826: Building of cdparanoia\n\t#7844: Lua with hard-float on MIPS by buildroot doesn't work\n\t#7874: X.org configure error\n\t#7941: glibc-2.20 fails to build for sparc-buildroot-linux-gnu\n\t#7951: gcc 4.9.2 fails to build for sparc-buildroot-linux-gnu\n\t#7961: Qt5 fails to build for xtensa-buildroot-linux-uclibc\n\t#7976: mkuser script fails with: user already exists with...\n\t#8011: When building only busybox and strace, strace fails...\n\t#8016: collectd fails to build, network.c:171:19: error:...\n\t#8041: error on building libcurl7.42.0\n\n2015.02, Released March 1st, 2015\n\n\tMinor fixes.\n\n\tUpdated/fixed packages: civetweb, ding-libs,\n\tdirectfb-examples, glibc, gnupg, gnupg2, gpm,\n\tgst-plugins-good, gst1-plugins-good, freetype, libao, libevas,\n\tlibevent, libfribidi, libgcrypt, libgtk2, libshout, libsrtp,\n\tlibtheora, libupnpp, libxmlrpc, linux, make, opus, pinentry,\n\trpi-firmware, shared-mime-info, vlc, vorbis-tools,\n\txcb-util-keysyms\n\n\tRemoved packages: libgc\n\n2015.02-rc3, Released February 24th, 2015\n\n\tMinor fixes.\n\n\tCmake and rebar (erlang) infrastructure fixes.\n\n\tUpdated/fixed packages: bind, btrfs-progs, busybox, e2fsprogs,\n\tevtest, ffmpeg, fltk, gnutls, i2c-tools, imagemagick, libxcb,\n\tmake, mjpg-streamer, netsnmp, opentyrian, php, polarssl,\n\tqt5base, samba, samba4, sudo, util-linux, xserver_xorg-server\n\n2015.02-rc2, Released February 15th, 2015\n\n\tMinor fixes.\n\n\traspberrypi: fix kernel sha1 for DT variant.\n\n\tUpdated/fixed packages: dbus, dvdauthor, git, libsemanage,\n\tlibsepol, libssh2, mplayer, ntp, openvmtools, python3,\n\tqt5base, qt5connectivity, xserver_xorg-server\n\n2015.02-rc1, Released February 8th, 2015\n\n\tFixes all over the tree and new features.\n\n\tStatic/shared library handling reworked. This is now a\n\ttristate (shared only / shared and static / static\n\tonly). Default is now shared only to speed up the\n\tbuild. BR2_PREFER_STATIC_LIB is now called BR2_STATIC_LIBS.\n\n\tThe toolchain (internal and external) will now warn when an\n\tunsafe library or header path is used (such as /usr/include or\n\t/usr/lib). If BR2_COMPILER_PARANOID_UNSAFE_PATH is enabled\n\tunder build options this instead becomes an error.\n\n\tA installation path issue with the internal musl toolchain\n\tsupport has been fixed so it is now possible to reuse it as an\n\texternal toolchain.\n\n\tArchitectures: Freescale E5500 and E6500 PowerPC support\n\tadded, deprecated MIPS 1/2/3/4 support removed.\n\n\tNew defconfigs: Freescale p2020ds, MIPS creator CI20,\n\tRaspberrypi with DT, UDOO Quad.\n\n\t'make <foo>_defconfig' now saves the path to the defconfig in\n\tthe .config, so a 'make savedefconfig' automatically updates\n\tit.\n\n\tInfrastructure for packages using the Erland rebar tool has\n\tbeen added.\n\n\tHashes for a large number of packages have been added. Hashes\n\tare now checked for both target and host packages.\n\n\tThe system menu now has an option to automatically configure a\n\tnetwork interface through DHCP at bootup.\n\n\tThe default filesystem skeleton now uses a separate tmpfs for\n\t/run instead of a symlink to /tmp/ for security reasons / to\n\tprotect against conflicts with user generated temporary files.\n\n\tBR2_EXTERNAL is now exported to post-build and post-image\n\tscripts.\n\n\tNew packages: bdwgc, benejson, blktrace, bootstrap, cgic,\n\tding-libs, dvdauthor, ejabberd, erlang-goldrush, erlang-lager,\n\terlang-p1-cache-tab, erlang-p1-iconv, erlang-p1-sip,\n\terlang-p1-stringprep, erlang-p1-stun, erlang-p1-tls,\n\terlang-p1-utils, erlang-p1-xml, erlang-p1-yaml,\n\terlang-p1-zlib, exiv2, freeradius-client, gengetopt, glmark2,\n\tgpu-amd-bin-mx51, guile, host-qemu, ifupdown, iperf3,\n\tjanus-gateway, kodi, kodi-audioencoder-flac,\n\tkodi-audioencoder-lame, kodi-audioencoder-vorbis,\n\tkodi-audioencoder-wav, libcli, libiio, liblinear, libnice,\n\tlibselinux, libsemanage, libserialport, libsigro,\n\tlibsigrokdecode, libsrtp, liburiparser, libvips, libwebsock,\n\tlibz160, libzip, lightning, mcelog, memtest86, mjpegtools,\n\tmjpg-streamer, mke2img, mpd-mpc, netsurf-buildsystem, odhcp6c,\n\topenldap, python-alsaaudio, python-certifi, python-cheetah,\n\tpython-coherence, python-django, python-docopt, python-enum,\n\tpython-enum34, python-flask, python-gobject, python-httplib2,\n\tpython-ipaddr, python-itsdangerous, python-jinja,\n\tpython-markdown, python-markupsafe, python-networkmanager,\n\tpython-pam, python-psutil, python-pyftpdlib, python-pyinotify,\n\tpython-pysendfile, python-pyxb, python-requests, python-six,\n\tpython-twisted, python-webpy, python-werkzeug,\n\tpython-zope-interface, qt5cinex, sigrok-cli, sofia-sip,\n\tstart-stop-daemon, szip, triggerhappy, ustr, vnstat, xorriso,\n\txtables-addons\n\n\tRemoved packages (target): bison, distcc, gob2, m4\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#7556: make interactive CLI optional for nftables\n\t#7730: Error while connecting Qt Cretaor to device\n\t#7766: logrotate default gzip path is usually wrong\n\t#7790: Invalid ext4 image generated by Buildroot\n\n2014.11, Released December 1st, 2014\n\n\tMinor fixes.\n\n\tInfrastructure: LD_LIBRARY_PATH handling tweak to ensure\n\tcurrent working directory isn't searched.\n\n\tUpdated/fixed packages: gd, gdb, libwebsockets, luajit, mono,\n\tparted, shairport-sync, util-linux, xapp_bdftopcf,\n\txserver_xorg-server\n\n2014.11-rc3, Released November 28th, 2014\n\n\tFixes all over the tree.\n\n\tSystem: File permissions of /etc/random-seed made more\n\trestrictive.\n\n\tToolchain: Various fixes related to locale handling, a fix for\n\tbuilding the toolchain wrapper on MIPS.\n\n\tUpdated/fixed packages: bind, binutils. botan, btrfsprogs,\n\tclamav, czmq, dhcp, dillo, dovecot, erlang, flac, gd, glibc,\n\tgptfdisk, gst1-validate, heirloom-mailx, lame, libksba,\n\tlibllcp, libnspr, libpng, libshairplay, libtirpc, linux,\n\tlinux-headers, mpdecimal, mpg123, network-manager, nfstables,\n\tnfs-utils, openssl, pcituils, qt, radvd, rtai, sqlcipher,\n\tsstrip, tcpdump, uclibc, uemacs, ushare, wayland, weston,\n\txl2tp, xserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#7670: Fails to build mpc-1.0.2 on latest Cygwin\n\n2014.11-rc2, Released November 21st, 2014\n\n\tFixes all over the tree.\n\n\tInittab tweaks for shutdown handling (busybox and sysvinit).\n\n\tUpdated/fixed packages: aircrack-ng, botan, canfestival,\n\tclamav, coreutils, czmq, dbus, dovecot, duma, e2fsprogs,\n\terlang, gcc, iputils, libcap, libgcrypt, libmemcached,\n\tlibssh2, libunwind, libv4l, linux-headers, mesa3d-demos, mutt,\n\tmysql, ndisc6, nodejs, omniorb, perl-cross, php,\n\tpython-tornado, python3, qemu, qt5base, qt5webkit, rpm,\n\trt-tests, ruby, schifra, sdl_sound, shairport-sync, sysvinit,\n\ttstools, tzdata, wireshark, x264\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#7646: strftime on datetime not works on python3\n\n2014.11-rc1, Released November 12th, 2014\n\n\tFixes all over the tree and new features.\n\n\tToolchains: Use -mcpu / -march instead of -mtune. Support\n\tadditional ARC and sparc variants. Updated Code sourcery\n\tand Linaro external toolchains.\n\n\tDefconfigs: Freescale iMX6DL SabreSD, Minnowboard MAX, QEMU\n\tpowerpc64 pseries added and a number of updates to the\n\texisting configurations.\n\n\tInfrastructure: Buildroot is now less noisy when built with\n\tthe silent option (make -s).\n\tA number of package infrastructure variables have been renamed\n\tfrom *_OPT to *_OPTS for constency. Buildroot will complain if\n\tthe old names are used to assist in updating out of tree\n\tpackages.\n\tFixes for host systems where bash isn't located in /bin, and\n\tolder systems not supporting mktemp --tmpdir.\n\tVarious cleanups of users/groups in the default skeleton.\n\tThere is now an option to choose what shell /bin/sh points to.\n\n\tDocumentation: Various updates to the user manual. The\n\tasciidoc documentation handling has now been extended so it\n\tcan be used by (BR2_EXTERNAL) packages.\n\n\tUpdated/fixed packages: acl, acpid, agentpp, aircrack-ng,\n\talsa-lib, alsamixergui, alsa-utils, apitrace, apr, apr-util,\n\targus, arptables, at, atftp, atk, attr, audiofile, aumix,\n\tautomake, autossh, avahi, avrdude, axel, bandwidthd, bash,\n\tbcusdk, beecrypt, bind, binutils, blackbox, bluez5_utils,\n\tbluez_utils, bmon, boost, bootutils, bridge-utils,\n\tbtrfs-progs, busybox, bwm-ng, bzip2, ca-certificates, cairo,\n\tccache, ccid, ccrypt, cdrkit, cegui06, celt051, chrony,\n\tcifs-utils, civetweb, cjson, clapack, classpath, cloog, cmake,\n\tcollectd, connman, copas, coreutils, coxpcall, cppcms, cppdb,\n\tcppzmq, cramfs, crda, cryptsetup, ctorrent, cups, cvs, cwiid,\n\tczmq, dash, dbus, dbus-cpp, dbus-glib, dbus-python, dejavu,\n\tdhcp, dhcpcd, dhcpdump, dialog, dillo, directfb, distcc,\n\tdmalloc, dmidecode, dmraid, dnsmasq, doc-asciidoc.mk,\n\tdosfstools, dropbear, dropwatch, dstat, dtach, dtc, dvbsnoop,\n\te2fsprogs, ecryptfs-utils, ed, efl, eigen, elf2flt, elfutils,\n\tenlightenment, enscript, erlang, espeak, ethtool, eudev,\n\tevemu, evtest, exfat, exfat-utils, exim, expat, expect,\n\texplorercanvas, faifa, fakeroot, fan-ctrl, fbdump,\n\tfb-test-app, fetchmail, ffmpeg, file, filemq, findutils, flac,\n\tflann, flickcurl, flite, fltk, fluxbox, fmc, fmlib,\n\tfontconfig, foomatic-filters, freerdp, freescale-imx,\n\tfreetype, ftop, fxload, gamin, gcc, gd, gdb, gdk-pixbuf,\n\tgenimage, genpart, genromfs, geoip, gettext, giblib, git,\n\tglibc, glib-networking, gmp, gmpc, gnu-efi, gnupg, gnupg2,\n\tgnuplot, gnutls, google-breakpad, gpm, gpsd, gptfdisk,\n\tgpu-viv-bin-mx6q, grantlee, grep, gsl, gst1-libav,\n\tgst1-plugins-{bad,base,good,ugly}, gst-ffmpeg,\n\tgst-fsl-plugins, gst-omx, gst-plugins-{bad,base,good,ugly},\n\tgst-plugin-x170, gstreamer, gstreamer1, gtest, gtk2-engines,\n\tgutenprint, gvfs, harfbuzz, haserl, haveged, hdparm, heimdal,\n\theirloom-mailx, hiawatha, hostapd, hplip, htop, httping,\n\thwdata, i2c-tools, icu, ifplugd, igh-ethercat, imagemagick,\n\timlib2, imx-lib, imx-vpu, inadyn, inotify-tools, input-tools,\n\tintltool, iperf, iproute2, iprutils, ipsec-tools, ipset,\n\tiptables, iputils, iw, jamvm, jansson, jasper, jimtcl, joe,\n\tjpeg-turbo, jq, jquery-keyboard, jquery-mobile, jquery-ui,\n\tjquery-ui-themes, jquery-validation, jsmin, json-c,\n\tjson-javascript, kbd, kexec, kexec-lite, keyutils, kismet,\n\tkmod, knock, ktap, lame, lbase64, lbreakout2, lcdproc, lcms2,\n\tlesstif, lftp, libaio, libao, libarchive, libargtable2,\n\tlibass, libassuan, libatasmart, libbluray, libbsd, libcap,\n\tlibcap-ng, libcdio, libcec, libcgicc, libcgroup, libcofi,\n\tlibconfig, libconfuse, libcurl, libdaemon, libdnet, libdrm,\n\tlibdvdnav, libecore, libedbus, libedit, libedje, libeet,\n\tlibelementary, libelf, libenca, libethumb, libevas,\n\tlibevas-generic-loaders, libevent, libexif, libeXosip2,\n\tlibffi, libftdi, libfuse, libgail, libgcrypt, libgeotiff,\n\tlibglade, libglib2, libgpgme, libgtk2, libhid, libidn,\n\tlibinput, libiscsi, libjson, libksba, liblockfile,\n\tliblog4c-localtime, liblogging, libmad, libmatroska, libmbim,\n\tlibmemcached, libmicrohttpd, libmpdclient, libmpeg2, libndp,\n\tlibnfc, libnfs, libnftnl, libnl, libnspr, libnss, liboauth,\n\tlibogg, liboping, libosip2, libpcap, libpciaccess, libpfm4,\n\tlibplayer, libplist, libpng, libpthsem, libqmi, libqrencode,\n\tlibraw, libreplaygain, libroxml, librsvg, librtlsdr,\n\tlibsamplerate, libseccomp, libsecret, libshairplay, libsoc,\n\tlibsoup, libsoxr, libssh2, libstrophe, libsvg, libsvg-cairo,\n\tlibtasn1, libtheora, libtirpc, libtorrent, libubox, libuci,\n\tlibungif, liburcu, libusb, libuv, libv4l, libva,\n\tlibva-intel-driver, libvncserver, libvorbis, libvpx,\n\tlibwebsockets, libxcb, libxml2, libxml-parser-perl, libxmlrpc,\n\tlibxslt, lighttpd, linenoise, linknx, links, linphone,\n\tlinux-firmware, linux-fusion, linux-headers, linux-pam,\n\tlinux-zigbee, lite, live555, ljlinenoise, lmbench, lm-sensors,\n\tlocaledef, lockdev, lockfile-progs, log4cxx, lpty, lrandom,\n\tlrzsz, lshw, lsof, lsqlite3, ltp-testsuite, ltrace, ltris,\n\tlttng-babeltrace, lttng-libust, lttng-modules, lttng-tools,\n\tlua, luabitop, lua-coat, lua-coatpersistent, lua-csnappy,\n\tlua-ev, luajit, luajson, lualogging, lua-messagepack,\n\tlua-msgpack-native, luaposix, luarocks, luasec, luasocket,\n\tluasql-sqlite3, lua-testmore, lunit, lvm2, lxc, lz4, lzlib,\n\tlzma, m4, madplay, make, makedevs, Makefile.in,\n\tmatchbox-common, matchbox-desktop, matchbox-fakekey,\n\tmatchbox-keyboard, matchbox-lib, matchbox-panel,\n\tmatchbox-startup-monitor, matchbox-wm, mcrypt, mdadm,\n\tmedia-ctl, mediastreamer, memcached, memstat, memtester,\n\tmesa3d, metacity, midori, mii-diag, minidlna, mmc-utils,\n\tmodem-manager, mongoose, mongrel2, monit, mpc, mpd, mpdecimal,\n\tmpfr, mpg123, mplayer, mrouted, msmtp, mtd, mtools, mtr,\n\tmusepack, musl, mutt, mxml, mysql, nano, nanocom, nbd, ncftp,\n\tncurses, ndisc6, ne10, neard, neon, netatalk, netperf,\n\tnetsnmp, nettle, net-tools, network-manager, newt, nfs-utils,\n\tngrep, nmap, nodejs, nss-mdns, ntfs-3g, ntp, numactl, nut,\n\tnuttcp, ofono, ola, omap-u-boot-utils, omniorb,\n\ton2-8170-modules, opencore-amr, opencv, openntpd, openobex,\n\topenocd, openpowerlink, openssh, openssl, openswan,\n\topentyrian, opentyrian-data, openvpn, opkg, oprofile, opus,\n\topus-tools, orbit, orc, ortp, p11-kit, pango, parted,\n\tpciutils, pcmanfm, pcre, pcsc-lite, perf, perl, perl-gd,\n\tperl-gdgraph, perl-io-socket-ssl, perl-json-tiny,\n\tperl-module-build, perl-mojolicious, perl-net-ssleay,\n\tperl-path-tiny, perl-xml-libxml, perl-xml-parser, php,\n\tphp-geoip, php-gnupg, php-imagick, php-memcached, php-ssh2,\n\tphp-yaml, php-zmq, picocom, pifmrds, pinentry, pixman,\n\tpkg-autotools.mk, pkg-cmake.mk, pkg-download.mk,\n\tpkg-generic.mk, pkg-kconfig.mk, pkg-luarocks.mk, pkg-perl.mk,\n\tpkg-python.mk, pkg-utils.mk, poco, polarssl, polkit, poppler,\n\tpopt, portaudio, portmap, postgresql, powerpc-utils, pppd,\n\tpptp-linux, prboom, procps-ng, proftpd, protobuf, protobuf-c,\n\tpsmisc, ptpd2, pulseaudio, pv, pwgen, python, python3,\n\tpython-dialog, python-ipy, python-keyring, python-mad,\n\tpython-netifaces, python-numpy, python-protobuf, python-pyasn,\n\tpython-pyparsing, python-pyro, python-pyusb, python-serial,\n\tpython-setuptools, qdecoder, qemu, qextserialport, qjson, qt,\n\tqt5, qt5base, qt5connectivity, qt5declarative, qt5enginio,\n\tqt5graphicaleffects, qt5imageformats, qt5multimedia,\n\tqt5quick1, qt5quickcontrols, qt5script, qt5sensors,\n\tqt5serialport, qt5svg, qt5webkit, qt5webkit-examples,\n\tqt5websockets, qt5x11extras, qt5xmlpatterns, qtuio, quagga,\n\tquota, qwt, radvd, rapidjson, rdesktop, redis, rings, rpcbind,\n\trpi-firmware, rpi-userland, rpm, rp-pppoe, rrdtool,\n\trsh-redone, rsync, rsyslog, rtai, rtmpdump, rt-tests, rubix,\n\truby, samba, sam-ba, samba4, sane-backends, schifra,\n\tsconeserver, scons, screen, sdl, sdl_gfx, sdl_image,\n\tsdl_mixer, sdl_net, sdl_sound, sdl_ttf, sed, ser2net,\n\tsetserial, sg3_utils, shared-mime-info, simicsfs, sispmctl,\n\tslang, slirp, smcroute, smstools3, snmppp,\n\tsnowball-hdmiservice, socat, socketcand, sox, spawn-fcgi,\n\tspeex, spice, spice-protocol, sqlcipher, sqlite, squashfs,\n\tsquid, sredird, startup-notification, strace, stress,\n\tstrongswan, stunnel, subversion, sudo, sunxi-boards,\n\tsunxi-cedarx, swig, sylpheed, synergy, sysklogd, sysstat,\n\tsystemd, sysvinit, taglib, tar, tcl, tcllib, tcpdump,\n\ttcpreplay, texinfo, tftpd, thrift, thttpd, tiff, ti-utils,\n\ttn5250, torsmo, trace-cmd, transmission, tslib, tstools,\n\ttvheadend, twolame, tz, uboot-tools, uclibc, udisks, ulogd,\n\tupmpdcli, upx, urg, usb_modeswitch, usbmount, usbredir,\n\tusbutils, util-linux, valgrind, vde2, vim, vlc, vo-aacenc,\n\tvorbis-tools, vpnc, vsftpd, vtun, wayland, webkit, webp,\n\twebrtc-audio-processing, weston, wget, whois, wireless-regdb,\n\twireshark, wpa_supplicant, wvstreams, x11r7, x11vnc,\n\txapp_xcalc, xapp_xdm, xapp_xdpyinfo, xapp_xf86dga, xapp_xfs,\n\txapp_xinit, xapp_xkbevd, xapp_xmh, xapp_xrandr, xapp_xsm,\n\txbmc, xbmc-pvr-addons, xcb-proto, xcursor-transparent-theme,\n\txdriver_xf86-input-mouse, xdriver_xf86-video-{ast,intel},\n\txdriver_xf86-video-vmware, xenomai, xerces,\n\txfont_font-adobe-{100,75}dpi,\n\txfont_font-adobe-utopia-{100dpi,75dpi,type1},\n\txfont_font-alias, xfont_font-arabic-misc,\n\txfont_font-bh-100dpi, xfont_font-bh-75dpi,\n\txfont_font-bh-lucidatypewriter-100dpi,\n\txfont_font-bh-lucidatypewriter-75dpi, xfont_font-bh-ttf,\n\txfont_font-bh-type1, xfont_font-bitstream-100dpi,\n\txfont_font-bitstream-75dpi, xfont_font-bitstream-type1,\n\txfont_font-cronyx-cyrillic, xfont_font-cursor-misc,\n\txfont_font-daewoo-misc, xfont_font-dec-misc,\n\txfont_font-ibm-type1, xfont_font-isas-misc,\n\txfont_font-jis-misc, xfont_font-micro-misc,\n\txfont_font-misc-cyrillic, xfont_font-misc-ethiopic,\n\txfont_font-misc-meltho, xfont_font-misc-misc,\n\txfont_font-mutt-misc, xfont_font-schumacher-misc,\n\txfont_font-screen-cyrillic, xfont_font-sony-misc,\n\txfont_font-sun-misc, xfont_font-winitzki-cyrillic,\n\txfont_font-xfree86-type1, xfsprogs, xinetd, xkeyboard-config,\n\txlib_libdmx, xlib_libFS, xlib_libpciaccess, xlib_libSM,\n\txlib_libX11, xlib_libXaw, xlib_libXext, xlib_libXfont,\n\txlib_libXi, xlib_libXinerama, xlib_libXrandr, xlib_libXrender,\n\txlib_libXres, xlib_libXScrnSaver, xlib_libXt, xlib_libXv,\n\txlib_libXvMC, xlib_libXxf86dga, xlib_libXxf86vm, xmlstarlet,\n\txproto_xcmiscproto, xproto_xextproto, xscreensaver,\n\txserver_xorg-server, xterm, xz, zeromq, zlib, zlog, zmqpp,\n\tznc, zsh, zxing\n\n\tNew packages: adwaita-icon-theme, am335x-pru-package,\n\tbcache-tools, biosdevname, botan, canfestival, clamav,\n\tcppunit, dos2unix, dovecot, dovecot-pigeonhole, getent, glm,\n\tgst1-validate, hicolor-icon-theme, ipmitool, leafnode2,\n\tlibdvbcsa, libgtk3, libphidget, libshout, libunistring,\n\tlibupnpp, mesa3d-demos, modplugtools, mono, monolite, mp4v2,\n\tnetcat-openbsd, nginx, odhcploc, openvmtools,\n\tphidgetwebservice, pps-tools, pure-ftpd,\n\tpython-configshell-fb, python-rtslib-fb, python-urwid, qlibc,\n\tqt5location, shairport-sync, spidev_test, targetcli-fb,\n\ttinyalsa, trinity, x264, yaml-cpp, ympd\n\n\tRemoved packages: libelf\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#261: New package: wxWidgets\n\t#325: New package: ratpoison\n\t#405: New package: OpenVZ tools\n\t#1309: New package: rdiff-backup\n\t#3427: New package: nginx\n\t#3655: New package: libav\n\t#3991: New Package: open-vm-tools (Vmware Tools)\n\t#6878: dmraid: disabled on ARC\n\t#6950: Full unicode support in ncurses\n\t#7010: jamvm builds and runs fine under mips (be)\n\t#7088: elfutils on Blackfin doesn't build\n\t#7142: ecryptfs needs getent to run\n\t#7280: CMake toolchain file uses the FORCE attribute on CMAKE_CXX_FLAGS\n\t#7346: [2014.08rc3] vim-8ae50e3ef8bf.tar.gz can not be downloaded, ...\n\t#7352: [2014.08-rc3] diffutils-3.3 failed on building\n\t#7358: rpi-userland: linking with bcm_host doesn't give vc_dispmanx_*\n\t#7364: monit builds a static application, even though BR2_PREFER_...\n\t#7370: ngrep - requires --with-pcap-includes fully defined to find...\n\t#7442: rootfs remount does not work as expected with sysvinit\n\t#7448: Having export MACHINE=\"something\" breaks glibc build on IMX6...\n\t#7568: musl buildroot-toolchain does not put libgcc_s.so.1 into place\n\t#7574: quota-4.01 fails to build statically\n\n2014.08, Released September 1st, 2014\n\n\tMinor manual fixes/additions.\n\n\tUpdated/fixed packages: btrfs-progs, cmake, cppcms, exim,\n\tlftp, libdaemon, libev, libgpgme, libiqrf, libnl, libplist,\n\tlibroxml, libwebsockets, mesa3d, mpd, mtdev2tuio, musepack,\n\tperl-gd, php-geoip, php-gnupg, php-imagick, php-memcached,\n\tphp-ssh2, php-yaml, php-zmq, polarssl, ruby, systemd, taglib,\n\tuboot-tools, upmpdcli, webkit, xapp_xfs, xapp_luit,\n\txscreensaver, yajl\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#7346: vim-8ae50e3ef8bf.tar.gz can not be downloaded, 404 not found\n\n2014.08-rc3, Released August 26th, 2014\n\n\tMinor fixes.\n\n\tUser manual update / restructuring.\n\n\tUpdated/fixed packages: cairo, ecryptfs-utils, gettext,\n\tgstreamer, gstreamer1, gutenprint, icu, imagemagick, jack2,\n\tlbreakout2, libevas-generic-loaders, libftdi, libinput,\n\tlibtorrent, ltris, msgpack, ntp, php, procps-ng, pulseaudio,\n\tthrift, tvheadend, usb_modeswitch, xmlstarlet,\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#7136: ecryptfs-utils needs gettext to run when glibc/eglibc...\n\t#7322: libgomp dependency issue with imagemagick\n\t#7328: Git dl of versions in x/y broken\n\n2014.08-rc2, Released August 18th, 2014\n\n\tFixes all over the tree.\n\n\tUser manual restructured / reworked.\n\n\tToolchain: Fix for C++ exceptions / pthread_exit() on\n\tuClibc/glibc, C++-11 features with uClibc.\n\n\tUpdated/fixed packages: bandwidthd, bluez5_utils, empty,\n\tespeak, fbv, ffmpeg, gd, gnupg2, gst1-plugin-good, iftop,\n\tinfozip, libcuefile, libeml, libnftl, localedef, ltrace,\n\tmatchbox, mpd, network-manager, nftables, ngrep, nut, openssl,\n\toprofile, perl, perl-net-ssleay, postgresql, pppd, procps-ng,\n\tqt, subversion, synergy, systemd, tar, tftpd, webkit,\n\txapp_rstart, xbmc, xbmc-pvr-addons\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#7124: Use BR toolchain externally results a non-bootable...\n\t#7208: Glibc C++ aplications crash if they use exceptions\n\t#7250: Cannot build with -std=c++11\n\t#7262: Generating locale en_US.UTF-8 fails on 64bit fedora..\n\t#7286: systemd 215 doesn't build\n\n2014.08-rc1, Released August 8th, 2014\n\n\tFixes all over the tree and new features.\n\n\tArchitecture: Powerpc64 BE/LE added, AVR32 deprecated.\n\tImproved altivec / SPE /atomic instructions\n\thandling. Additional PowerPC CPU variants added.\n\n\tDefconfigs: Atmel SAMA5D3, Congatec QMX6, Lego ev3, TS-5x00,\n\tqemu-system-xtensa, qemu-aarch64-virt added. A number of\n\ttweaks to existing ones. lpc32xx defconfigs removed.\n\n\tToolchain: Microblaze support for internal musl toolchain.\n\tDefault to GCC 4.8 for internal toolchain, remove deprecated\n\t4.3 and 4.6 versions.\n\tExternal CodeSourcery / Linaro toolchain updates, option to\n\tcopy gconv libraries for external toolchains.\n\n\tInfrastructure: graph-depends: misc fixes, transitive\n\tdependencies are not drawn by default. Download handling is\n\tnow done using helper scripts. Integrity of downloads can now\n\tbe verified using sha* hashes. Subversion download now uses\n\tpeg revisions for robustness.\n\tLegal-info: License info of local or overridden packages are\n\tsaved as well. Toolchain packages are also taken into account.\n\tautotools: Static linking with libtool / v1.5 improvements.\n\tGettextize support, similar to autoreconf.\n\tkconfig package infrastructure added.\n\n\tMisc: Version selection for busybox dropped.\n\n\tUpdated/fixed packages: aespipe, aiccu, alsa-lib, alsa-utils,\n\talsamixergui, argus, armadillo, at, atftp, atk, avahi,\n\tavrdude, axel, b43-firmware, b43-fwcutter, bandwidthd, bc,\n\tbcusdk, beecrypt, bind, binutils, blackbox, bluez5_utils,\n\tbmon, boa, bonnie, bootutils, bsdiff, btrfs-progs, bustle,\n\tbusybox, bwm-ng, bzip2, ca-certificates, cairo, can-utils,\n\tccache, ccrypt, chrony, cifs-utils, classpath, cloog, cmake,\n\tcollectd, connman, coreutils, cosmo, cppcms, cramfs, crda,\n\tcryptodev-linux, cryptodev, ctorrent, cvs, dbus-cpp,\n\tdbus-glib, dbus-python, dbus, dcron, dejavu, devmem2,\n\tdfu-util, dhcp, dhcpcd, dhcpdump, dhrystone, dialog, dillo,\n\tdistcc, dmidecode, dmraid, dnsmasq, doom-wad, dropbear,\n\tdropwatch, dsp-tools, dtv-scan-tables, dvb-apps, e2fsprogs,\n\te2tools, eeprog, eigen, elf2flt, elftosb, enlightenment,\n\tenscript, espeak, ethtool, eudev, evemu, exim, expedite,\n\texplorercanvas, ezxml, faifa, fan-ctrl, fconfig, feh,\n\tfetchmail, ffmpeg, fftw, file, fio, fis, flann, flashrom,\n\tflex, flot, fltk, fontconfig, freerdp, freescale-imx,\n\tfreetype, ftop, gcc, gd, gdb, genimage, genromfs, gettext,\n\tgiblib, glib-networking, glibc, gmp, gnupg, gnutls, gpm, gpsd,\n\tgptfdisk, gpu-viv-bin-imx6q, gqview, grantlee, gst-ffmpeg,\n\tgst-fsl-plugins, gst1-libav, gst1-plugins-bad,\n\tgst1-plugins-ugly, gtk2-engines, gtk2-theme-hicolor, gtkperf,\n\tgvfs, haserl, hdparm, hostapd, httping, i2c-tools, icu,\n\timagemagick, imx-lib, inadyn, inotify-tools, input-tools,\n\tipkg, iproute2, iputils, irda-utils, iw, jack2, jpeg, jquery,\n\tjquery-keyboard, jquery-mobile, jquery-validation, jsmin, kbd,\n\tkexec, kmod, knock, latencytop, lcdapi, leafpad, lesstif,\n\tlftp, libaio, libarchive, libargtable2, libart, libatasmart,\n\tlibatomic_ops, libbsd, libcap-ng, libcec, libcgicc, libcgroup,\n\tlibconfuse, libcurl, libdrm, libdvdnav, libdvdread,\n\tlibeXosip2, libedit, liberation, libesmtp, libev, libevas,\n\tlibevdev, libevent, libfcgi, libffi, libfreefare, libfslcodec,\n\tlibfslparser, libfslvpuwrap, libgail, libgcrypt, libglade,\n\tlibglib2, libgpgme, libgtk2, libhid, libical, libiconv,\n\tlibiqrf, libjpeg, liblog4c-localtime, libmbus, libmicrohttpd,\n\tlibmms, libndp, libnftnl, libnl, libnspr, libnss, liboauth,\n\tlibpcap, libpng, libpthsem, libqmi, libraw, libraw1394,\n\tlibrsvg, libsoc, libsoup, libsvgtiny, libsysfs, libtasn1,\n\tlibtirpc, libtorrent, libusb, libv4l, libwebsockets, libxcb,\n\tlibxml2, libyaml, links, linux-firmware, linux-fusion,\n\tlinux-headers, linux-pam, lite, live555, lm-sensors,\n\tlockfile-progs, lpc3250loader, lshw, lsof, lsuio, ltrace,\n\tltris, lua-messagepack, luainterpreter, luajit, luaposix,\n\tluarocks, lvm2, lxc, lz4, lzo, make, makedevs, mdadm,\n\tmediastreamer, mesa3d, metacity, minidlna, mkpasswd,\n\tmodem-manager, mongoose, mpd, mpg123, msgpack, mtd, mtools,\n\tmtr, musepack, musl, mysql, nano, nasm, nbd, ncurses, ndisc6,\n\tnetatalk, netplug, network-manager, nftables, ngircd, nodejs,\n\tnss-mdns, ntp, nut, olsr, open2300, opencv, openntpd, openocd,\n\topenpgm, openpowerlink, openssh, openssl, openswan, openvpn,\n\topkg, oprofile, opus-tools, orc, p910nd, pango, parted,\n\tpax-utils, pcmanfm, perf, perl, perl-module-build, php,\n\tpixman, pkgconf, poco, polarssl, popt, portmap, postgresql,\n\tprboom, protobuf-c, proxychains-ng, psmisc, psplash, ptpd2,\n\tpython,\n\tpython-{bottle,dpkt,id3,mad,msgpack,nfc,pygame,pyzmq,simplejson},\n\tpython3, qhull, qt, qt5base, qt5connectivity, qt5declarative,\n\tqt5graphicaleffects, qt5multimedia, qt5quickcontrols,\n\tqt5sensors, qt5svg, qt5webkit, quagga, quota, radvd, rdesktop,\n\tread-edid, rpcbind, rpi-firmware, rpi-userland, rpm,\n\trsh-redone, rsync, rt-tests, rtmpdump, rtorrent, rubix, ruby,\n\tsamba, samba4, sane-backends, sawman, sconeserver, setserial,\n\tsg3_utils, shared-mime-info, smartmontools, smcroute, snappy,\n\tsocketcand, spawn-fcgi, sqlite, squashfs, squid, sredird,\n\tstartup-notification, statserial, strongswan, stunnel,\n\tsunxi-mali, supervisor, synergy, sysklogd, sysprof, sysstat,\n\tsystemd, tcpdump, tcpreplay, texinfo, thrift, thttpd, ti-gfx,\n\tti-utils, tinyhttpd, torsmo, trace-cmd, transmission, tslib,\n\ttstools, tvheadend, tzdata, uboot-tools, uclibc, udev,\n\tudpcast, usb_modeswitch, usbmount, util-linux, valgrind, vim,\n\tvlc, w_scan, wayland, webrtc-audio-processing, weston, wget,\n\twireless-regdb, wireless_tools, wireshark, wpa_supplicant,\n\txapp_{twm,xconsole,xcursorgen,xedit,xfs,xinit,xrandr},\n\txdriver_xf86-video-intel, xlib_lib{FS,ICE,Xext,Xfont,Xft,Xi},\n\txproto_fontsproto, xproto_inputproto, xserver_xorg-server,\n\tx11vnc, xbmc, xbmc-addon-xvdr, xbmc-pvr-addons, xterm, xvkbd,\n\txz\n\n\tNew packages: flickcurl, fmc, fmlib, geoip, gnupg2,\n\tgoogle-breakpad, imx-vpu, isl, kexec-lite, libglew, libglu,\n\tlibinput, libksba, libmemcached, libmpdclient, librtlsdr,\n\tlibuv, libva, libva-intel-driver, linux-zigbee, memcached,\n\tmpdecimal, ncmpc, opencore-amr, patchelf, perl-datetime-tiny,\n\tperl-gd, perl-gdgraph, perl-gdtextutil, perl-io-socket-ssl,\n\tperl-json-tiny, perl-mojolicious, perl-net-ssleay,\n\tperl-path-tiny, perl-try-tiny, perl-xml-libxml,\n\tperl-xml-namespacesupport, perl-xml-sax, perl-xml-sax-base,\n\tphp-geoip, php-memcached, pifmrds, pinentry, powerpc-utils,\n\tprocps-ng, pwgen, python-cffi, python-daemon, python-flup,\n\tpython-ipython, python-numpy, qt5enginio, qt5webkit-examples,\n\tqt5websockets, simicsfs, sispmctl, sox, sshpass, tclap,\n\ttwolame, upmpdcli, whois, xlib_libxshmfence, xproto_dri3proto\n\n\tRemoved packages: procps\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#5750: Doing a Buildroot build from /usr doesn't work\n\t#5900: config flags to the Xenomai build system\n\t#6230: Cannot compile gcc without threads (uClibc-based)\n\t#6626: procps Unknown HZ value! (XX) Assume 100\n\t#7118: Package \"thrift\" requires atomic operations\n\t#7154: Local uClibc config file gets overwritten using ...\n\t#7160: host-xz not built\n\t#7166: hostapd: segfault when using RT5370\n\t#7172: Name collision of rpath token expansion and internal..\n\t#7178: NTPd package cannot sync time without a proper ntp.conf\n\t#7184: supervisord depends on libxml2 implicitly\n\t#7196: Unable to build on UBUNTU13.10\n\t#7268: python 2.7 compilation issue on a Debian/Ubuntu ...\n\n2014.05, Released May 31st, 2014\n\n\tMinor fixes.\n\n\tMinor manual fixes. U-Boot now defaults to spl/u-boot-spl.bin\n\tfor the spl file.\n\n\tUpdated/fixed packages: exim, glibc, gnutls, libfribidi,\n\tqt5base, qt5webkit, sysklogd, thrift, u-boot\n\n2014.05-rc3, Released May 28th, 2014\n\n\tMinor fixes.\n\n\tUpdated/fixed packages: acl, attr, connman, dosfstools,\n\tdropbear, dvb-apps, exim, flite, gdb, httping, hwdata,\n\tlesstif, libnss, libv4l, lttng-babeltrace, midori, monit,\n\tmplayer, php, python2, rdesktop, rpi-userland, ruby, samba,\n\tsamba4, slang, xbmc\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#7100: license info for package 'acl' missing\n\t#7106: license info for package 'attr' missing\n\t#7112: license info for package 'hwdata'\n\n2014.05-rc2, Released May 21st, 2014\n\n\tFixes all over the tree.\n\n\tStripping using sstrip has been deprecated.\n\n\tBR2_EXTERNAL can now also be used to implement custom\n\tfilesystem types.\n\n\tThe newly added BR2_GRAPH_DEPTH variable to limit the depth of\n\tthe generated dependency graph has been renamed to\n\tBR2_GRAPH_DEPS_OPTS, so additional options can be supported in\n\tthe future.\n\n\tThe virtual package infrastructure will now error out early\n\tif multiple packages providing the same virtual package has\n\tbeen enabled (E.G. opengl). This change requires that the\n\tpackages explicitly declare what virtual package(s) they\n\tprovide.\n\n\tUpdated/fixed packages: acpid, armadillo, avahi, bellagio,\n\tbtrfs-progs, cairo, clapack, directfb, duma, ecryptfs-utils,\n\telfutils, eudev, fbgrab, fio, flann, fluxbox, gdb, gpm,\n\tgpu-viv-bin-mx6q, gst1-plugins-good, gst-plugins-good,\n\timagemagick, iprutils, ipsec-tools, jack2, libdvdnav,\n\tlibdvdread, libnss, libunwind, linux-headers, lsof, lua,\n\tluajit, matchbox-keyboard, mesa3d, mpd, mplayer, mtr, mysql,\n\tnetsnmp, nodejs, openpowerlink, openvpn, pciutils,\n\tphp-imagick, postgresql, pulseaudio, qt5quick1, rpi-userland,\n\trsyslog, samba, samba4, sane-backends, sunxi-mali, systemd,\n\tti-gfx, tstools, udev, webkit, wpa_supplicant, xbmc,\n\txlib_libXpm, xserver_xorg-server, zyre\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#5396: Boot hangs when starting samba if BR2_ENABLE_LOCALE...\n\t#7016: Git issues in resulting buildroot tar\n\t#7094: pciutils doesn't build on Blackfin\n\n2014.05-rc1, Released May 13th, 2014\n\n\tFixes all over the tree and new features.\n\n\tArchitectures: Support for MIPS o32 ABI on MIPS-64 targets has\n\tbeen removed. Building o32 ELF files for MIPS64 is an exotic\n\tconfiguration that nobody should be using. If o32 is required,\n\tthen is better if it's built for MIPS 32-bit cores so only\n\t32-bit instructions will be used leading to a more efficient\n\to32 usage.\n\tSupport for the ARM A12 variant and Intel corei7.\n\n\tConfigs: Minnowboard and Altera SoCkit added, QEMU updates.\n\n\tBootloaders: Grub2 and gummiboot support, syslinux support\n\textended.\n\n\tToolchains: GCC 4.9. Glibc 2.19. Support for the musl C\n\tlibrary for internal and external toolchains. 4.8-R3 support\n\tfor ARC, Internal toolchain support for Aarch64 and\n\tMicroblaze. Environment variable to control debug output of\n\ttoolchain wrapper renamed to BR2_DEBUG_WRAPPER to match the\n\tother variables. Toolchain tuple vendor name can now be\n\tcustomized. Updated external Linaro ARM/Aarch64\n\ttoolchains. Added external Linaro ARMEB toolchain.\n\tA GDB gdbinit file is now generated for external toolchains to\n\tautomatically set the correct sysroot.\n\n\tKconfig handling for minimum kernel headers version required\n\tfor packages. Now packages needing specific kernel header\n\tfeatures can specify these requirements in Kconfig.\n\n\tInfrastructure: Support for (but disabled as it leads to\n\tunreproducible builds) toplevel parallel builds. See the\n\tcomment at the top of Makefile for details about how to enable\n\tit and what the problems are if you want to test it.\n\tPython package infrastructure extended to support Python 3.x\n\tPerl and virtual package infrastructure support added.\n\tPRE_*_HOOKS support for all build steps.\n\n\tUpdated/fixed packages: acpid, agentpp, aiccu, apr, avahi,\n\tbarebox, bash, beecrypt, bellagio, binutils, boost,\n\tboot-wrapper-aarch64, bustle, busybox, ca-certificates, cairo,\n\tccache, ccid, cgilua, chrony, cifs-utils, civetweb, cmake,\n\tcollectd, connman, coreutils, coxpcall, cppcms, cppzmq, crda,\n\tcryptodev, cryptsetup, cups, czmq, dbus, dhcpdump, directfb,\n\tdmalloc, dmraid, dnsmasq, dosfstools, dsp-tools, dtc,\n\tdvb-apps, ebtables, ecryptfs-utils, eigen, erlang, ethtool,\n\tevemu, evtest, f2fs-tools, fdk-aac, feh, ffmpeg, file, filemq,\n\tflac, flot, fmtools, fping, freetype, fswebcam, gcc, gd, gdb,\n\tgettext, giblib, git, glibc, glibmm, glib-networking, gmp,\n\tgnutls, gpm, gpsd, gpu-viv-bin-mx6q, grep, gst1-libav,\n\tgst1-plugins-bad, gst1-plugins-base, gst1-plugins-good,\n\tgst1-plugins-ugly, gst-ffmpeg, gst-fsl-plugins, gst-omx,\n\tgst-plugins-good, gstreamer1, gvfs, harfbuzz, haveged,\n\thostapd, htop, httping, ifplugd, iftop, igmpproxy,\n\timagemagick, imlib2, imx-lib, infozip, intltool, iproute2,\n\tipsec-tools, ipset, jansson, jpeg, jpeg-turbo, jquery,\n\tjquery-keyboard, jquery-ui, jquery-ui-themes, json-glib,\n\tjson-javascript, kexec, kmod, lame, lbase64, lbreakout2,\n\tlcdproc, lftp, libao, libatasmart, libatomic_ops, libcap,\n\tlibcdio, libcec, libcgicc, libcgroup, libcurl, libdrm,\n\tlibdvdnav, libdvdread, libegl, libeio, libenca, libesmtp,\n\tlibevas, libevdev, libfribidi, libfslcodec, libfslparser,\n\tlibfslvpuwrap, libgail, libgles, libglib2, libgtk2, libhid,\n\tlibjpeg, libmbim, libmicrohttpd, libmodplug, libnftnl,\n\tlibnspr, libogg, libopenmax, libopenvg, libpcap, libplayer,\n\tlibpng, libpthread-stubs, librsvg, libsigsegv, libsocketcan,\n\tlibsoup, libtasn1, libtool, libtpl, libunwind, liburcu,\n\tlibusb, libwebsockets, libxcb, libxml2, libxmlpp, libyaml,\n\tlighttpd, linphone, linux-firmware, linux-headers, ljsyscall,\n\tlmbench, lsof, ltp-testsuite, ltris, lttng-babeltrace,\n\tlttng-libust, lttng-modules, lttng-tools, lua, lua-cjson,\n\tluacrypto, lua-ev, luaexpat, luaexpatutils, luafilesystem,\n\tluainterpreter, luajit, lua-msgpack-native, luaposix,\n\tluarocks, luasec, luasocket, luasql-sqlite3, lvm2, macchanger,\n\tmemstat, mesa3d, metacity, minidlna, mmc-utils,\n\tmobile-broadband-provider-info, modem-manager, mongrel2,\n\tmonit, mpd, mplayer, msmtp, mtd, mtools, mutt, mysql, nasm,\n\tncurses, ne10, netatalk, netsnmp, nettle, network-manager,\n\tnewt, nfs-utils, nmap, nodejs, ntfs-3g, ntp, nut, ofono, ola,\n\tolsr, omniorb, opencv, opengl, openpgm, openssh, openssl,\n\topenswan, openvpn, orbit, orc, p11-kit, pango, parted,\n\tpciutils, pcre, pcsc-lite, perf, perl, perl-xml-parser, php,\n\tpicocom, pixman, pkgconf, poppler, popt, portmap, powervr,\n\tpppd, pptp-linux, proftpd, protobuf, protobuf-c, ptpd2,\n\tpulseaudio, python, python3, python-bottle, python-m2crypto,\n\tpython-netifaces, python-pyasn, python-pycrypto,\n\tpython-pygame, python-pysnmp, python-pysnmp-apps,\n\tpython-pysnmp-mibs, python-serial, python-setuptools,\n\tqextserialport, qt, qt5, qt5base, qt5connectivity,\n\tqt5declarative, qt5graphicaleffects, qt5imageformats,\n\tqt5multimedia, qt5quick1, qt5quickcontrols, qt5script,\n\tqt5sensors, qt5serialport, qt5svg, qt5webkit, qt5x11extras,\n\tqt5xmlpatterns, qtuio, qwt, radvd, readline, rings,\n\trpi-firmware, rpi-userland, rsh-redone, rsync, rsyslog, rtai,\n\trtmpdump, rt-tests, ruby, samba, sconeserver, scons, sdl,\n\tsdl_image, sdl_mixer, sg3_utils, slang, smstools3, snmppp,\n\tsocat, speex, sqlcipher, sqlite, squashfs, squid, strongswan,\n\tstunnel, sunxi-boards, sunxi-mali, sunxi-tools, sylpheed,\n\tsyslinux, sysstat, systemd, taglib, tcl, tcllib, tcpreplay,\n\ttidsp-binaries, ti-gfx, tmux, tvheadend, tzdata, uboot,\n\tuboot-tools, uclibc, udev, udisks, ulogd, usb_modeswitch,\n\tusb_modeswitch_data, usbmount, util-linux, valgrind, vlc,\n\twebkit, weston, wget, wireshark, wpa_supplicant, wsapi,\n\tw_scan, xapp_appres, xapp_bdftopcf, xapp_beforelight,\n\txapp_bitmap, xapp_editres, xapp_fslsfonts, xapp_fstobdf,\n\txapp_iceauth, xapp_ico, xapp_mkfontscale, xapp_rgb,\n\txapp_rstart, xapp_sessreg, xapp_showfont, xapp_twm,\n\txapp_viewres, xapp_xauth, xapp_xbacklight, xapp_xcalc,\n\txapp_xclock, xapp_xditview, xapp_xdpyinfo, xapp_xdriinfo,\n\txapp_xev, xapp_xfd, xapp_xfontsel, xapp_xfs, xapp_xfsinfo,\n\txapp_xgc, xapp_xhost, xapp_xinit, xapp_xkbutils, xapp_xkill,\n\txapp_xload, xapp_xlsclients, xapp_xlsfonts, xapp_xmag,\n\txapp_xman, xapp_xmessage, xapp_xmodmap, xapp_xprop,\n\txapp_xrandr, xapp_xrdb, xapp_xrefresh, xapp_xset,\n\txapp_xsetroot, xapp_xsm, xapp_xstdcmap, xapp_xvidtune,\n\txapp_xvinfo, xapp_xwd, xapp_xwininfo, xcb-util-wm,\n\txdriver_xf86-input-evdev, xdriver_xf86-input-joystick,\n\txdriver_xf86-input-keyboard, xdriver_xf86-input-mouse,\n\txdriver_xf86-input-synaptics, xdriver_xf86-input-vmmouse,\n\txdriver_xf86-video-ark, xdriver_xf86-video-ast,\n\txdriver_xf86-video-ati, xdriver_xf86-video-cirrus,\n\txdriver_xf86-video-dummy, xdriver_xf86-video-fbdev,\n\txdriver_xf86-video-geode, xdriver_xf86-video-glide,\n\txdriver_xf86-video-glint, xdriver_xf86-video-i128,\n\txdriver_xf86-video-intel, xdriver_xf86-video-mach64,\n\txdriver_xf86-video-mga, xdriver_xf86-video-neomagic,\n\txdriver_xf86-video-newport, xdriver_xf86-video-nv,\n\txdriver_xf86-video-openchrome, xdriver_xf86-video-r128,\n\txdriver_xf86-video-savage, xdriver_xf86-video-siliconmotion,\n\txdriver_xf86-video-sis, xdriver_xf86-video-tdfx,\n\txdriver_xf86-video-tga, xdriver_xf86-video-trident,\n\txdriver_xf86-video-vesa, xdriver_xf86-video-vmware,\n\txdriver_xf86-video-voodoo, xenomai, xerces, xl2tp, xlib_libFS,\n\txlib_xtrans, xproto_xproto, xserver_xorg-server,\n\txutil_util-macros, zeromq, zic, zmqpp, zyre\n\n\tNew packages: armadillo, btrfs-progs, clapack, cosmo, dado,\n\tdbus-triggerd, dtv-scan-tables, e2tools, eudev, exim, expect,\n\tfetchmail, flann, flite, gnu-efi, grub2, gummiboot, heimdal,\n\tiprutils, iptraf-ng, jack2, jquery-mobile, libee, libestr,\n\tlibgc, libgl, liblogging, libndp, libsoxr, libstrophe,\n\tlibubox, libuci, libxmlrpc, ljlinenoise, lpeg, lpty, lrandom,\n\tlsqlite3, lua-coat, lua-coatpersistent, lua-csnappy, luajson,\n\tlualogging, lua-messagepack, lua-testmore, lunit, lzip, lzlib,\n\tmusl, nftables, opentyrian, opentyrian-data,\n\tperl-module-build, php-gnupg, php-imagick, php-ssh2, php-yaml,\n\tphp-zmq, postgresql, python-libconfig, python-pypcap,\n\tpython-pyrex, qdecoder, qhull, samba4, smack, tz, tzdump, ucl,\n\tupx, vo-aacenc, xbmc, xbmc-addon-xvdr, xbmc-pvr-addons,\n\tyaffs2utils, zlog, znc\n\n\tRemoved packages: crosstool-ng, python-distutilscross, vala\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#6842: Checking external toolchain for eabihf\n\t#6956: Packaging libsoxr\n\t#6986: Make legal-info fails on uboot versions before 2014.01\n\t#6992: Incorrect installation rights on external kernel module..\n\n2014.02, Released February 27th, 2014\n\n\tMinor fixes.\n\n\tUpdated/fixed packages: cegui06, cppdb, e2fsprogs, gcc, gdb,\n\tgst1-plugins-bad, gstreamer, gstreamer1, haserl, imagemagick,\n\tlibpng, libxml2, lua, luajit, luarock, ncftp, openswan,\n\tpcsc-lite, qt5connectivity, ramsmp, strongswan, vlc\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#6938: mkuser script generates wrong password for new user in..\n\n2014.02-rc3, Released February 25th, 2014\n\n\tMinor fixes.\n\n\tUpdated/fixed packages: aiccu, ala-lib, alsa-utils, binutils,\n\tcairo, coreutils, dhcpcd, distcc, efl, evas, iputils, gdb,\n\tgpsd, gst-fsl-plugins, icu, libcec, libcgi, libplayer,\n\tlibsecret, libsepol, libsigsegv, libtool, libv4l,\n\tlinux-headers, matchbox-lib, mpg123, ncftp, opencv, pcmanfm,\n\tpixman, pv, qt, rt-tests, sawman, sconeserver, sdl, thrift,\n\ttvheadend, util-linux, webkit, xscreensaver\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#4706: Removing .stamp_target_installed does not trigger...\n\t#5030: busybox built fails if we use an override src dir...\n\t#5420: Dbus and /var/run management\n\t#5768: Not able to build ALSA-Lib for static build\n\t#5774: Not able to build ALSA-Utils for static build\n\t#6542: external python modules fail to compile to pyc if...\n\t#6764: Support for kernel signed modules\n\t#6794: Busybox compiled from buildroot hangs on pass from...\n\n2014.02-rc2, Released February 20th, 2014\n\n\tFixes all over the tree. Static linking / nommu fixes and\n\tannotations for several packages.\n\n\tUpdated/fixed packages: boost, busybox, collectd, coreutils,\n\tdropbear, elfutils, feh, gcc, gst1-libav, imagemagick, iozone,\n\tjimtcl, kexec, libvncserver, lvm2, lxc, mplayer, netsnmp, nut,\n\topencv, python, python3, qtuio, systemd, thrift, transmission,\n\tuclibc, vlc, webkit\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#5450: AT91SAM9260 Bootstrap compilation problem\n\t#5582: libiconv 1.14 failed to build\n\t#5624: When building directfb, BR2_TARGET_LDFLAGS not used by..\n\t#5852: [2012.11] usb_modeswitch should depends of \"BR2_PACK..\n\t#6218: binutils-2.23.2/gas fails with undefined reference to..\n\t#6236: binutils-2.23.2/bfd fails with undefined reference to..\n\t#6470: If the build directory is a child of /usr, the build..\n\t#6776: systemd error: static declaration of 'execvpe' follows..\n\t#6818: toolchainfile.cmake has absolut path references\n\n2014.02-rc1, Released February 11th, 2014\n\n\tFixes all over the tree and new features.\n\n\tSupport for external packages/defconfigs (BR2_EXTERNAL). See\n\tuser manual for details.\n\n\tCleanup of environment variable names for consistency. The\n\tdownload directory location override (BUILDROOT_DL_DIR) is now\n\tcalled BR2_DL_DIR. Likewise the name of the current .config is\n\trenamed from BUILDROOT_CONFIG to BR2_CONFIG. Please update\n\tyour post build scripts if you use this! BUILD_DIR is now also\n\texported to the post build/image scripts.\n\n\tToolchain: GCC 4.8 fix for ARM stack corruption, reverted\n\tuClibc pread/pwrite backport as they cause issues on certain\n\tarchitectures, new Linaro and Sourcery Codebench toolchains.\n\tx86: Support for AMD Jaguar cores, SSE4.x, SH: SH2/SH3/SH3EB\n\tvariants removed, Microblaze: Internal toolchain support\n\n\tLegal infrastructure: Info is now split between host and\n\ttarget packages, large number of license annotations.\n\n\tLua: selection between lua 5.1 / 5.2, luarocks support\n\n\tPython: package infrastructure, many new packages.\n\n\tDefconfigs: Armadeus APF51 + Zedboard added, apf27, apf28,\n\tbeaglebone, microblaze, pandaboard, qemu, raspberry pi\n\tupdated.\n\n\tUpdated/fixed packages: aiccu, alsa-lib, alsa-utils,\n\tam33x-cm3, aumix, autoconf, automake, barebox, bellagio,\n\tberkeleydb, binutils, bison, blackbox, bluez_utils, boost,\n\tbustle, busybox, cairo, can-utils, ccache, ccid, cgilua,\n\tcifs-utils, civetweb, cmake, collectd, connman, copas,\n\tcoreutils, coxpcall, cppzmq, cramfs, crda, cryptodev-linux,\n\tcryptsetup, cups, czmq, dhcpcd, dhcpdump, dhrystone, dialog,\n\tdmraid, dnsmasq, dosfstools, dropbear, dropwatch, dtc, duma,\n\tdvb-apps, e2fsprogs, eglibc, eigen, elf2flt, erlang, ethtool,\n\tf2fs-tools, ffmpeg, file, filemq, fio, flashrom, flex,\n\tfluxbox, fontconfig freerdp, freetype, gadgetfs-test, gawk,\n\tgcc, gdb, gdbm, gettext, git, glibc, gnupg, gnutls, gob2,\n\tgpsd, grep, grub, gst-ffmpeg, gst-plugins-good,\n\tgst1-plugins-bad, gst1-plugins-base, gst1-plugins-good,\n\tgst1-plugins-ugly, gstreamer, gstreamer1, gtest, icu, iftop,\n\timagemagick, inadyn, infozip, iozone, iproute2, iptables, iw,\n\tjpeg, jpeg-turbo, jq, kexec, kmod, knock, lbase64, lcdapi,\n\tlftp, libcdaudio, libcgi, libcgicc, libcuefile, libcurl,\n\tlibdmtx, libdrm, libdvdnav, libdvdread, libegl, libevent,\n\tlibexif, libfcgi, libfreefare, libgles, libglib2, libllcp,\n\tlibmicrohttpd, libmpd, libnfc, libnl, libnss, libopenmax,\n\tlibopenvg, libpcap, libpfm4, libplayer, libpng, libqmi,\n\tlibreplaygain, libroxml, libsamplerate, libsexy, libsigsegv,\n\tlibsndfile, libsoc, libtasn1, libtorrent, libtpl, libupnp,\n\tlibusb, libusb-compat, libvorbis, libxcb, libxml2, libxmlpp,\n\tlibyaml, lighttpd, linknx, linux-firmware, linux-pam, live555,\n\tlm_sensors, lmbench, lockdev, logrotate, lrzsz, ltrace, lua,\n\tlua-ev, lua-msgpack-native, luabitop, luaexpat, luaexpatutils,\n\tluafilesystem, luajit, luaposix, luasec, luasocket,\n\tluasql-sqlite3, m4, matchbox, mdadm, minicom, mongrel2, mpc,\n\tmpd, mpg123, mplayer, mtd, mysql, lvm2, mxml, ncurses, ne10,\n\tneard, neardal, netsnmp, netstat-nat, network-manager, nodejs,\n\tnumactl, ofone, ola, olsr, omniorb, open2300, opencv,\n\topenpowerlink, openssh, openssl, openvpn, oprofile, opus,\n\topus-tools, orbit, p11-kit, parted, pcre, pcsc-lite, perl,\n\tphp, poco, poppler, powervr, protobuf-c, psplash, python,\n\tpython-bottle,\n\tpython-{crc16,distutilscross,dpkt,id3,ipy,m2crypto,mad,meld},\n\tpython-{netifaces,nfc,protobuf,pygame,pyparsing,pyro,pyzmq},\n\tpython-{serial,setuptools}, qt, qt5base, qt5connectivity,\n\tqt5declarative, qt5graphicaleffects, qt5jsbackend,\n\tqt5multimedia, qt5quick1, qt5quickcontrols, qt5script,\n\tqt5webkit, radvd, redis, rings, rng-tools, rpcbind,\n\trpi-firmware, rpi-userland, rt-tests, sam-ba, samba, sawman,\n\tsconeserver, scons, sdl, sg3_utils, snappy, snmppp,\n\tsocketcand, spice, spice-protocol, sqlcipher, sqlite, squid,\n\tsshfs, strace, subversion, sunxi-mali, supervisor, sysklogd,\n\tsysprof, sysstat, systemd, sysvinit, taglib, tar, tcpdump,\n\tti-gfx, ti-utils, tinymembench, tn5250, trace-cmd,\n\ttransmission, tvheadend, tzdata, zxing, uboot, uboot-tools,\n\tuclibc, udev, udpcast, ulogd, urg, usb_modeswitch_data,\n\tutil-linux, vala, valgrind, vorbis-tools, wavpack, wayland,\n\tweston, wget, wireless-regdb, wireshark, wpa_supplicant,\n\twsapi, xavante, xapp_xdpyinfo, xapp_xrandr, xcb-proto,\n\txdriver_xf86-video-intel, xenomai, xkeyboard-config, xl2tp,\n\txlib_lib{FS,SM,X11},\n\txlib_libX{au,aw,composite,cursor,damage,ext,fixes,font,i},\n\txlib_libX{inerama,mu,pm,randr,render,res,t,tst,v,xf86dga},\n\txlib_libXxf86vm, xlib_libdmx, xlib_libfontenc,\n\txlib_libpciaccess, xlib_xtrans, xproto_dri2proto,\n\txproto_{glproto,inputproto,presentproto,randrproto,videoproto},\n\txproto_xextproto, xproto_xproto, xutil_util-macros,\n\txutil_makedepend, zic, zmqpp, zxing, zsh, zyre\n\n\tNew packages: apitrace, avrdude, c-ares, ca-certificates,\n\tcwiid, dbus-cpp, evemu, fping, fswebcam, gpm, gst1-libav,\n\thaveged, intel-microcode, iucode-tools, jasper, joe, ktap,\n\tlbreakout2, libass, libbluray, libcdio, libenca, libevdev,\n\tlibmbim, libmodplug, libnfs, libnftnl, libplist, libshairplay,\n\tlibsocketcan, ljsyscall, log4cplus, ltris, luainterpreter,\n\tluarocks, minidlna, mmc-utils, modemmanager, mtr, net-tools,\n\tpython-configobj, python-dialog, python-json-schema-validator,\n\tpython-keyring, python-msgpack, python-posix-ipc,\n\tpython-pyasn, python-pycrypto, python-pysnmp,\n\tpython-pysnmp-apps, python-pysnmp-mibs, python-pyusb,\n\tpython-simplejson, python-tornado, python-versiontools,\n\trtmpdump, rtptools, smcroute, smstools3, tcpreplay, thrift,\n\tti-uim, tinyxml, tmux, vlc, wmctrl, xconsole\n\n\tRemoved packages: autoconf, automake, ccache, cpanminus, lzma,\n\tnetkitbase, netkittelnet, pkg-config, squashfs3, ttcp, xstroke\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#65:   new package: dbus c++ language bindings\n\t#769:  Update configuration menu for MIPS target\n\t#2419: Add a bundle of Lua modules\n\t#2629: Segmentation faults and division by zero in Grub on ext2\n\t#3811: Added auto-mount for USB and SD Card (mdev) (for 2011.05)\n\t#4339: Allow override of DL_DIR in extract step\n\t#4363: Make sure that copied linux and busybox defconfig are...\n\t#4454: There should be simple way to update image, when chang...\n\t#5024: grub fails to build for x86_64 target architecture\n\t#5066: New-Package: net-tools\n\t#5072: ncurses: add ncurses-progs to target\n\t#5294: uclibc build ignores target CFLAGS and LDFLAGS\n\t#5366: Login doesn't work with util-linux versions of login/agetty\n\t#5378: dropbear Makefile broken\n\t#5390: System banner - change to empty doesn't remove /etc/issue\n\t#5780: spurious build failure because it cannot remove ubinize.cfg\n\t#5798: ncurses-5.9 fails to compile statically\n\t#5810: Buildroot 2012.11: Additional GCC option \"-msoft-float\" ...\n\t#6080: Git fetch caching\n\t#6092: Bootable ISO image creation seems to have stopped working..\n\t#6272: coreutils build fails\n\t#6434: apply-patches.sh does not work recursively\n\t#6446: eglibc doesn't install ldconfig to target\n\t#6484: Add c-ares\n\t#6596: Slow bootup if mdev is chosen\n\t#6656: Build Qt5 with ccache\n\t#6662: internal compiler error: Segmentation fault during making..\n\t#6722: Usage of $($(PKG)_DIR_PREFIX) is an issue with linux package\n\t#6752: genext2fs: e2fsck must run before tunefs -U random\n\t#6770: openssl 1.0.1f fails with ccache\n\t#6830: Qt5: no fonts are installed\n\t#6848: Qt5: no text shown in simple QWidget / frame-buffer setup\n\t#6854: Update to Qt 5.2.1\n\n2013.11, Released November 30th, 2013:\n\n\tMinor fixes.\n\n\tUpdated/fixed packages: apr, binutils, dbus-python, dropwatch,\n\tecryptfs-utils, eglibc, gdb, gpsd, grantlee, hostapd,\n\tiptables, qlibiscsi, libnspr, libnss, libpfm4, libtool,\n\tlua-ev, lvm2, mplayer, qt, qt5, quagga, ruby, tinymembench,\n\ttvheadend, util-linux, wpa_supplicant\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#1279: Buildroot compiled Busybox and Coreutils LFS issues\n\t#2995: -fstack-protector-all causes ssh to SIGSEGV\n\t#5570: Cannot compile software on the target machine\n\t#6428: util-linux libmount segfaults with patch from buildroot\n\t#6500: php fails to build for armel\n\t#6554: gdb needs to dependents on host texinfo\n\t#6692: GNU nano fails to compile for x86_64\n\t#6704: wpa_supplicant: fix wrong path to executable file in D-Bus\n\n2013.11-rc3, Released November 26th, 2013\n\n\tFixes all over the tree.\n\n\tArchitecture: Mark MIPS I, II, III and IV as deprecated.\n\n\tUpdated/fixed packages: beecrypt, dbus, e2fsprogs, libcap-ng,\n\tlibglib2, libroxml, libsigsegv, libvncserver, lxc, mdadm,\n\tmongoose, nut, ola, omniorb, openssl, pcre, php, poco,\n\tprotobuf-c, pv, qt5base, ruby, schifra, squid, sunxi-mail,\n\tswig, ti-gfx, tinymembench, uclibc, udisks, vim\n\n2013.11-rc2, Released November 18th, 2013\n\n\tFixes all over the tree.\n\n\tDefconfigs: qemu_arm_versatile, qemu_arm_nuri, sheevaplug:\n\tAdjust kernel versions.\n\n\tToolchain: avr32: fix for modern kernel headers\n\n\tBootloader: Barebox updated to 2013.10.1\n\n\tUpdated/fixed packages: dhcp, e2fsprogs, gst1-plugins-bad,\n\tlibcurl, libvncserver, nano, pc, qt5base, squashfs, ttcp,\n\twayland, wvstreams\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#3601: DHCPD S80dhcp-server startup script issues\n\t#6320: Fix kernel compile issue if BR2_LINUX_KERNEL_CUSTOM_GIT_VERS..\n\t#6416: Xenomai package, patch alternative\n\t#6590: directfb-examples build failed whit linaro toolchain\n\n2013.11-rc1, Released November 12th, 2013\n\n\tArchitectures: Nios-II support, MIPS arch handling fixes\n\n\tDefconfigs: cubieboard2, freescale i.MX 6sololite evk,\n\tsabre-sd, wandboard added, rpi renamed to raspberrypi_defconfig\n\n\tToolchain: glibc support, upstream uClibc fixes, uClibc 0.9.31\n\tfor avr32, crosstool-ng backend removed, external musl\n\ttoolchain support, gcc 4.8.2, updated Linaro external\n\ttoolchains. Fortran and objective-C support deprecated,\n\tmudflap support\n\n\tBootloaders: U-Boot: u-boot.imx support, version bumps\n\n\tLinux: use kmod instead of module-init-tools\n\n\tSystem: default to devtmpfs for /dev\n\n\tInfrastructure: Make 3.82 fixes, locales generation fixes, CVS\n\tdownload support, post-rsync hooks\n\n\tFs: u-boot image support for cpio\n\n\tUpdated/fixed packages: aircrack-ng, alsamixergui, apr,\n\tapr-util, atk, automake, bellagio, berkeleydb, bind, binutils,\n\tbison, boost, busybox, can-utils, ccache, ccid, cgilua,\n\tchrony, cifs-utils, cjson, collectd, connman, conntrack-tools,\n\tcopas, cppcms, cppzmq, czmq, dash, dbus, dhcpcd, diffutils,\n\tdirectfb, dmidecode, dnsmaqs, docker, dosfstools, dropbear,\n\tdropwatch, ebtables, eglibc, elf2flt, empty, enchant, erlang,\n\tethtool, fbgrab, fbv, fdk-aac, feh, ffmpeg, file, findutils,\n\tfltk, fmtools, freetype, gdk-pixbuf, gettext, git,\n\tglib-networking, gmp, gnupg, gnutls, gpu-viv-bin-mx6q, gsl,\n\tgstreamer, gstreamer1, gst1-plugins-{bad,base,good,ugly},\n\tgtest, gutenprint, hplip, i2c-tools, icu, ifplugd,\n\timagemagick, iozone, iproute2, ipset, iptables, iw, jamvm,\n\tjansson, jpeg-turbo, kismet, kmod, lcms2, libassuan, libcap,\n\tlibcap-ng, libcdaudio, libcec, libcue, libcurl, libdrm,\n\tlibedit, libevas, libevent, libfreefare, libfuse,\n\tlibgpg-error, libiconv, liblog4c-localtime, libmicrohttpd,\n\tlibmnl, libmodbus,\n\tlibnetfilter_{acct,conntrack,cthelper,cttimeout,log,queue},\n\tlibnfnetlink, libnl, libpng, libqmi, libqrencode, libroxml,\n\tlibsecret, libsigsegv, libsoup, libtirpc, libunwind, libusb,\n\tlibvpx, lighttpd, linphone, linux-pam, lmbench,\n\tlockfile-progs, log4cxx, logrotate, logsurfer, ltp-testsuite,\n\tltrace, luacrypto, luaposix, lvm2, m4, matchbox-lib,\n\tmedia-ctl, mediastreamer, minicom, minidlna, mongoose, monit,\n\tmpc, mpd, mpg123, mplayer, mrouted, mtdev, mutt, mysql_client,\n\tnano, ncftp, ndisc6, neard, neardal, neon, net-snmp, netatalk,\n\tnetcat, netkitbase, netperf, netplug, nettle, nfacct,\n\tnfs-utils, ngircd, ngrep, noip, nuttcp, olsr, openssh, opkg,\n\toprofile, opus-tools, orc, ortp, pciutils, pcre, pcsc-lite,\n\tperf, perl, perl-cross, php, picocom, pkgconf, polarssl,\n\tpoppler, pppd, proftpd, protobuf, proxychains-ng, pulseaudio,\n\tpv, qemu, qt, qt5base, qt5webkit, quagga, radvd, redis,\n\trpi-{firmware,userland}, rrdtool, rsync, rtorrent, ruby,\n\tsamba, scons, screen, sdl_sound, ser2net, setserial,\n\tsmartmontools, socat, socketcand, sqlcipher, sqlite, squid,\n\tstress, strongswan, stunnel, sudo, syslinux, systemd,\n\tsysvinit, tcl, ti-gfx, time, transmission, tremor, tslib,\n\ttstools, tvheadend, tzdata, uboot-tools, uclibc, udpcast,\n\tuemacs, ulogd, usb_modeswitch{,_data}, util-linux, vala,\n\tvalgrind, vde2, vorbus-tools, vpnc, vsftpd, vtun, wayland,\n\twebkit, webp, webrtc-audio-processing, weston, wget,\n\twireshark, wsapi, xavante, xdriver_xf86-video-geode, xenomai,\n\txinetd, xlib_libpthread-stubs, xl2tp, xmlstarlet,\n\txserver_xorg-server, xz, zeromq, zic, zmqpp\n\n\tNew packages: aiccu, autossh, bc, civetweb, cppdb, cryptsetup,\n\tduma, eigen, harfbuzz, igmpproxy, iputils, jq, knock, kobs-ng,\n\tlesstif, libcgroup, libsepol, libsoc, libssh2, luasec, luasql,\n\tlxc, nut, ola, omniorb, openpowerlink, orbit, p910nd, psplash,\n\tpython-crc16, python-ipy, python-pyzmq, qt5sensors,\n\tqt5serialport, qt5x11extras, snmppp, subversion, tcping,\n\ttrace-cmd, xscreensaver, zsh\n\n\tRemoved packages: module-init-tools\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#1138: Buildroot fails to build packages if BR2_GCC_SHARED_LIBGCC=y\n\t#5408: qt build failure with Sourcery CodeBench ARM 2010.09\n\t#5630: makefile error with toolchain helpers.mk\n\t#5672: htop: remove X11 stuff\n\t#5678: linux.mk: linux-menuconfig fails\n\t#5696: python3 installation is too large, patches from python2 needed\n\t#5978: Erlang does not build for arm in 2013.02-rc3\n\t#6392: Extended ARM uImage kernel options\n\t#6404: Buildroot's coreutils 'uname -p' reports 'Unknown' on recent..\n\t#6428: util-linux libmount segfaults with patch from buildroot\n\t#6452: eglibc from Linaro 2013.07 not copied to target correctly\n\t#6566: PHP segfault when crosscompiled to mips64 - patch included\n\t#6572: [PowerPC] Buildroot uses wrong external toolchain libraries..\n\t#6578: udisks package broken\n\t#6602: ebtables 64 bit kernel + 32 bit userland alignment error..\n\t#6608: ebtables missing ethertypes - fix included\n\t#6620: Sysvinit package missing killall5 and symlinks - patch included\n\t#6632: CMake use host pkg-config\n\t#6638: pkgconf doesn't download\n\t#6644: \"all\" target doesn't work in out-of-tree builds\n\t#6650: Segmentation fault when trying to build latest buildroot\n\t#6668: iptables limit module alignment problem on mips64\n\n2013.08, Released August 31th, 2013:\n\n\tMinor fixes.\n\n\tDocumentation build fixed.\n\n\tUpdated/fixed packages: ltrace, strongswan\n\n2013.08-rc3, Released August 29th, 2013:\n\n\tFixes all over the tree.\n\n\tExternal toolchain lib32/lib64 handling, ABI name for EABIhf,\n\tmisc fixes for generatelocales, apply-patches and module\n\tstripping.\n\n\tTop level menu names reordered and renamed for clarity.\n\n\tUpdated/fixed packages: acl, attr, bash, dbus, directfb,\n\tdvb-apps, kexec, kmod, libbsd, linux-fusion, mesa3d, minidlna,\n\topenssh, openssl, pulseaudio, python-setuptools, qt5,\n\tqt5webkit, redis, strongswan, sunxi-mali\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#6464: dbus-daemon-launch-helper needs setuid\n\n2013.08-rc2, Released August 16th 2013:\n\n\tDocumentation improvements.\n\n\tExternal toolchains fixes.\n\n\tUpdated/fixed packages: aircrack-ng, bash, boost, cairo,\n\tcppcms, eglibc, ffmpeg, gcc, git, gnupg, imagemagick, libcec,\n\tlibffi, libgcrypt, linux, linux-headers, ltrace, netatalk,\n\topencv, opengl, readline, samba, strongswan, sunxi-cedarx,\n\tuclibc, udev, wayland, webkit, zeromq.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#6440: typo in ffmpeg makefile\n\n2013.08-rc1, Released August 5th, 2013:\n\n\tArchitectures:\n\t - improved support for floating point on ARM and Thumb/Thumb2\n\t - support for ARM OABI removed\n\n\tToolchains:\n         - support added for Sourcery CodeBench ARM and MIPS 2013.05\n         - Linaro ARM and Aarch64 toolchains updated\n\t - support added for the Arago ARMv5 and ARMv7 toolchains\n\t - gcc 4.8.x version bumped\n\t - support for installing both FDPIC and FLAT libraries on\n\t   Blackfin\n\t - support for uClibc 0.9.31 removed,\n\t - convert the internal toolchain backend to use the package\n\t   infrastructure\n\t - support added for eglibc in the internal toolchain backend\n\t - toolchain components for the ARC architecture updated and\n           gdb for ARC added.\n\t - support for Blackfin in the internal toolchain fixed\n\n\tDefconfigs: beaglebone_defconfig updated, new defconfig for\n\tCubieBoard, for Olimex mx233 Olinuxino, for Calao Systems\n\tTNY-A9G20-LPW.\n\n\tA number of packages have been fixed to use the\n\t<pkg>_CONFIG_SCRIPTS mechanism to get their <pkg>-config shell\n\tscript installed and modified properly. Licensing informations\n\thas been added to a number of packages.\n\n\tUse XZ tarballs for a number of packages.\n\n\tNoticeable package changes/additions:\n         - The glib2/libgtk2/webkit stack has been updated to recent\n           versions.\n\t - Support for Gstreamer 1.x has been added.\n\t - OpenGL support for TI OMAP platforms has been added.\n\t - OpenGL support for Allwinner platforms has been added.\n\t - OpenMAX support for RasberryPi has been added.\n\n\tUpdated/fixed packages: acl, attr, autoconf, avahi, barebox,\n\tbind, binutils, busybox, bwm-ng, bzip2, cifs-utils, colletctd,\n\tcpanminus, cups, curl, dash, dbus, dhcp, directfb,\n\tdirectfb-examples, dnsmasq, dosfstools, dropbear, dtc,\n\te2fsprogs, ed, efl, enlightenment, erlang, ethtool, fbgrab,\n\tfftw, firmware-imx, flot, fltk, freetype, gawk, gdk-pixbuf,\n\tgettext, gmp, gnutls, gsl, gutenprint, gvfs, gzip, haserl,\n\thiawatha, httping, icu, imagemagick, imlib2, imx-lib,\n\tintltool, iozone, ipset, iptables, jquery, jquery-keyboard,\n\tjquery-sparkline, kmod, less, libart, libcdaudio, libcgicc,\n\tlibesmtp, libftdi, libfuse, libglib2, libgtk, libgtk2, libidn,\n\tlibiqrf, liblog4c-localtime, libnspr, libnss, libpcap,\n\tlibroxml, libserial, libsigsev, libsoup, libtool, libtpl,\n\tlibvncserver, libxml2, linphone, lm_sensors, logrotate,\n\tltrace, lttng, luafilesystem, luajit, minicom, monit, mpg123,\n\tmtd, mutt, mxml, neard, netatask, netsnmp, nettle,\n\tnetwork-manager, nodejs, nss-mdns, openssh, openswan, openvpn,\n\topkg, opus, pcre, perl-cross, php, pixman, poco, polarssl,\n\tpulseaudio, pv, python, python3, qt, qt5, qt5declarative,\n\tqt5jsbackend, qt5quick1, readline, rpi-firmware, ruby, samba,\n\tsane-backends, sconeserver, sdl_image, sdparm, ser2net,\n\tsocketcand, sqlite, squid, strace, tcl, tcpdump, tinyhttpd,\n\ttvheadend, tzdata, uboot, udpcast, usb_modeswitch,\n\tusb_modeswitch_data, usbutils, webkit, wireshark, wvstreams,\n\txapp_luit, xapp_xmodmap, xenomai, xfsprogs, xlib_libX11, zic,\n\tzlib.\n\n\tNew packages: a10disp, aespipe, am33x-cm3, cppcms, dhcpcd,\n\tdropwatch, dtc, ecryptfs-utils, eglibc, elf2flt, fdk-aac,\n\tgcc-final, gcc-initial, gcc-intermediate, git,\n\tgpu-viv-bin-mx6q, gst1-plugins-bad, gst1-plugins-base,\n\tgst1-plugins-good, gst1-plugins-ugly, gst-omx,\n\tgst-plugin-x170, gstreamer1, jimtcl, lbase64, libassuan,\n\tlibbsd, libcec, libdvbsi, libedit, libgpgme, libqmi,\n\tlibqrencode, libsvg, libsvg-cairo, libunwind, libvpx,\n\tlinux-headers, lockdev, luabitop, luacrypto, lua-ev,\n\tluaexpatutils, msgpack, ocrad, on2-8170-libs,\n\ton2-8170-modules, p11-kit, pax-utils, ptpd, ptpd2,\n\tpython-pyro, ramspeed/smp, snappy, strongswan, sunxi-boards,\n\tsunxi-cedarx, sunxi-mali, sunxi-tools, ti-gfx, tinymembench,\n\ttree, tstools, uclibc, w_scan.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#4718: python (built for powerpc) distutils has paths to host\n               compiler toolchain\n\t#5516: appended device tree blobs on uImage fails\n\t#6302: Versions of packages retrieved from github.com are wrong\n\t#6308: dosfstools download link is wrong\n\t#6326: Dropbear: Add options to allow better config for\n               different target devices (e.g. routers)\n\t#6338: Wrong download link for minicom package\n\t#6344: Wrong handling of license text files with same name and\n               different directory\n\t#6374: gnutls package broken if linux cryptodev module\n               selected\n\t#6410: omap3_beagle has uimage error load address error\n\n2013.05, Released May 31th, 2013:\n\n\tMinor fixes.\n\n\tExternal toolchain wrapper fix for if host/usr/bin is placed\n\tin the patch.\n\n\tUpdated/fixed packages: acpid, at91bootstrap, czmq, elf2flt,\n\tflex, jamvm, kmod, libplayer, libtirpc, libv4,\n\tlttng-babeltrace, opengl, qt5jsbackend, udpcast, wvstreams\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#4868: Buildroot compile failure for toolchain/gdb-7.4/intl/reloc...\n\t#4988: flex and m4 problems\n\t#5912: obsolete CVS files\n\n2013.05-rc3, Released May 25th, 2013:\n\n\tMinor fixes.\n\n\tUpdated/fixed packages: aircrack-ng, bellagio, boost, crda,\n\tdvb-apps, flot, libatomic_ops, libeXosip2, libosip2, libxml2,\n\tmongrel2, poco, portaudio, pptp-linux, tvheadend, urg, weston,\n\twireshark\n\n2013.05-rc2, Released May 15th, 2013:\n\n\tFixes all over the tree.\n\n\tDefault number of parallel jobs is now number of CPUs + 1.\n\n\tDefconfigs: Add Telit EVK-PRO3, AT91SAM9260-EK Nand flash.\n\n\tUpdated/fixed packages: aircrack-ng, busybox, cairo,\n\tclasspath, curlftpfs, czmq, dbus, f2fs-tools, fan-ctrl,\n\tfilemq, gst-plugin-bad, gutenprint, hplip, json-c,\n\tlibatomic_ops, libcurl, libdrm, libglib2, libnspr, libnss,\n\tlibsha1, libsigsegv, libxcb, linknx, linux-pam, lttng-modules,\n\tlttng-tools, matchbox-lib, mcookie, mesa3d, neon, pixman,\n\tpulseaudio, python-nfc, qt5imageformats, quota, openssl,\n\tsconeserver, strace, sylpheed, wvstreams,\n\txapp_{appres,bdftopcf,beforelight,bitmap,edires,fonttosfnt},\n\txapp_{fslsfonts,fstobdf,iceauth,ico,listres,luit,mkfontdir},\n\txapp_{mkfontscale,oclock,rgb,rstart,scripts,sessreg,setxkbmap},\n\txapp_{showfont,smproxy,twm,viewres,x11perf,xauth,xbacklight},\n\txapp_x{biff,calc,clipboard,clock,cmsdb,cursorgen,dbedizzy,ditview},\n\txapp_x{dm,dpyinfo,driinfo,edit,ev,eyes,f86dga,fd,fontsel,fs,fsinfo},\n\txapp_x{gamma,gc,host,input-calibrator,input,kbcomp,kbevd,kbprint},\n\txapp_x{kbutils,kill,load,logo,lsatoms,lsclients,lsfonts,mag,man},\n\txapp_x{message,mh,modmap,more,pr,prop,randr,rdb,refresh,set,setmode},\n\txapp_x{setpointer,setroot,sm,stdcmap,vidtune,vinfo,wd,wininfo,wud},\n\txcb-util, xcursor-transparent-theme, xdata_xbitmaps,\n\txdata_xcursor-themes,\n\txdriver_xf86-input-{evdev,joystick,keyboard,mouse,synaptics},\n\txdriver_xf86-input-{tslib,vmmouse,void},\n\txdriver_xf86-video-{ark,ast,ati,cirrus,dummy,fbdev,geode,glide},\n\txdriver_xf86-video-{glint,i128,intel,mach64,mga,neomagic,newport},\n\txdriver_xf86-video-{nv,openchrome,r128,savage,siliconmotion,sis},\n\txdriver_xf86-video-{tdfx,tga,trident,v4l,vesa,vmware,voodoo,wsfb},\n\txfont_encodings, xfont_font-adobe-{100,75}dpi,\n\txfont_font-utopia-{100dpi,75dpi,type1},\n\txfont_font-{alias,arabic-misc,bh-100dpi,bh-75dpi},\n\txfont_font-bh-lucidatypewriter-{100,75}dpi, xfont_font-bh-{ttf,type1},\n\txfont_font-bitstream-{100dpi,75dpi,type1}, xfont_font-cronyx-cyrillic,\n\txfont_font-{cursor,daewoo,dec,isas,jis,micro}-misc,\n\txfont_font-ibm-type1, xfont_font-misc-{cyrillic,ethiopic,meltho,misc},\n\txfont_font-{mutt,schumacher}-misc,\n\txfont_font-{screen-cyrillic,sony-misc,sun-misc,util},\n\txfont_font-winitzki-cyrillic, xfont_font-xfree86-type1,\n\txlib_lib{FS,ICE,SM,X11,XScrnSaver,Xau,Xaw,Xcomposite,Xcursor},\n\txlib_libX{damage,dmcp,ext,fixes,font,ft,i,inerama,mu,pm,randr},\n\txlib_libX{render,res,t,tst,v,vMC,xf86dga,xf86vm},\n\txlib_lib{dmx,fontenc,pciaccess,pthread-stubs,xkbfile}, xlib_xtrans,\n\txproto_{applewm,bigreqs,composite,damage,dmx,dri2,fixes}proto,\n\txproto_{fontcache,font,gl,input,kb,randr,record,render}proto,\n\txproto_{resource,scrnsaver,video,windowswm,xcmisc,xext}proto,\n\txproto_{xf86bigfont,xf86dga,xf86dri,xf86vidmode,xinerama,x}proto,\n\txserver_xorg-server, xutil_{makedepend,util-macros}\n\n\tReadded Packages: xapp_xinit\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#5054: amd64: cannot find init - due to missing /lib64 folder\n\n2013.05-rc1, Released May 8th, 2013:\n\n\tArchitectures: ARC support, Blackfin support, FLAT binary\n\tformat, ARM: Drop old CPU variants, add fa526/626, Marvell PJ4\n\n\tToolchains: Add new Microblaze external toolchains, Linaro\n\tARM/Aarch64 updates, GCC 4.6.4 / 4.7.3 / 4.8.0 added to\n\tinternal toolchain, default to GCC 4.7.x. Internal\n\tCrosstool-ng backend deprecated.\n\n\tDefconfigs: Add Atmel at91sam9g45m10ek, freescale mpc8315erdb\n\t& p1010rdb, Armadeus apf27 / apf28, Openblocks A6, Raspberry\n\tpi, gnublin board.\n\n\tFS: LZO and XZ compression methods, extra ubifs options,\n\text2 rev 0/1 and ext3/4 support.\n\n\tPatch handling: apply-patches now has .patch.xz support,\n\tPatch logic reworked as discussed during Febrary dev days:\n\thttp://elinux.org/Buildroot:DeveloperDaysFOSDEM2013\n\n\t<pkg>-rsync now excludes version control files.\n\n\tlinux: uImage load address for ARM multiplatform kernels\n\n\tInfrastructure for multiple OpenGL / ES / EGL / OpenVG\n\tproviders, similar to how libjpeg / libjpeg-turbo is handled.\n\n\tInfrastructure for packages to add system users.\n\n\tkconfig: updated to 3.9-rc2, support make olddefconfig\n\n\tUpdated/fixed packages: alsa-lib, alsa-utils, apr, apr-util,\n\targp-standalone, at, at91bootstrap, audiofile, aumix, avahi,\n\tbash, blackbox, bind, binutils, bison, boost, bridge-utils,\n\tbusybox, ccache, cifs-utils, cmake, collectd, connman,\n\tconntrack-tools, cpanminus, crosstool-ng, diffutils, directfb,\n\tdirectfb-examples, divine, dmalloc, dnsmasq, dosfstools,\n\tdropbear, e2fsprogs, ebtables, eeprog, erlang, ethtool,\n\tfb-test-app, fbset, feh, ffmpeg, file, flex, flot, foomatic,\n\tfxload, gd, gdb, gdisk, genimage, gettext, gmp, gnuchess,\n\tgnutls, gob2, gperf, gpsd, gstreamer, haserl, hiawatha, htop,\n\thttping, icu, inotify-tools, intltool, iproute2, ipset,\n\tiptables, iw, jpeg, jquery, jquery-{sparkline,validation},\n\tjson-c, kbd, kexec, kismet, kmod, lcdproc, libarchive,\n\tlibatasmart, libcap, libconfig, libconfuse, libcurl, libdrm,\n\tlibeet, libev, libevas, libeXosip2, libffi, libfribi, libfuse,\n\tlibgcrypt, libglib2, libgtk2, libid3tag, libmicrohttpd,\n\tlibnetfilter_acct, libnetfilter_conntrack, libnl, libpcap,\n\tlibplayer, libsigc, libv4l, libxcb, linenoise, linux-pam,\n\tlm_sensors, ltp-testsuite, luajit, lzop, madplay, make, mdadm,\n\tmediastreamer, memtester, mesa3d,\n\tmobile-broadband-provider-info, monit, mpd, mpfr, mpg123,\n\tmrouted, msmtp, nbd, ncurses, ndisc6, neard, neardal, neon,\n\tnetperf, netsnmp, nettle, nfacct, ntfs-3g, ofono, olsr,\n\tomap-u-boot-utils, openssh, openssl, openswan, openvpn,\n\toprofile, orc, patch, pciutils, pcre, perl, php, poco,\n\tpolarssl, proftpd, psmisc, pulseaudio, python,\n\tpython-{bottle,netifaces,serial,setuptools}, qt, quagga,\n\tquota, radvd, rpi-firmware, rpi-userland, rt-tests, sam-ba,\n\tsamba, sawman, sdl, ser2net, smartmontools, socat, socketcand,\n\tspeex, squid, stress, stunnel, sudo, syslinux, sysstat,\n\tsysvinit, tcl, tcprelay, tinyhttpd, tslib, tvheadend,\n\tuboot-tools, udev, ulogd, util-linux, vala, vtun, webkit,\n\txapp_{iceauth,luit,makefontscale,sessreg,setxkbmap,smproxy},\n\txapp_{xauth,xcmsdb,xdpyinfo,xev,xgamma,xhost,xinput,xkbcomp},\n\txapp_{xkbevd,xlsatoms,xlsclients,xmodmap,xpr,xprop,xrandr,xrdb},\n\txapp_{xset,xwd,xwininfo}, xcb-{proto,util},\n\txdriver_xf86-input-{evdev,joystick,keyboard,mouse,synptics},\n\txdriver_xf86-input-{tslib,vmmouse,void},\n\txdriver_xf86-video-{ark,ast,ati,cirrus,dummy,geode,glide,glint},\n\txdriver_xf86-video-{i128,intel,mach64,mga,neomagic,newport},\n\txdriver_xf86-video-{openchrome,r128,savage,siliconmotion,sis},\n\txdriver_xf86-video-{tdfx,trident,vesa,vmware,wsfb}, xenomai,\n\txfont, xinetd, xkeyboard-config, xlib_lib{FS,ICE,SM,X11},\n\txlib_libX{scrnSaver,au,aw,cursor,dmcp,ext,fixes,font,ft,i},\n\txlib_libX{inerama,mu,pm,randr,res,tst,v,vMC,xf86dga,xf86vm},\n\txlib_lib{dmx,fontenc,pciaccess,xkbfile}, xlib_xtrans,\n\txproto_{applevm,bigreqs,dri2,fonts,gl,input,kbd,record}proto,\n\txproto_{resource,scrnsaver,xcmisc,xext,x}proto,\n\txserver_xorg-server, xutil_makedepend, xz, zeromq\n\n\tNew packages: aircrack-ng, bcusdk, chrony, crda,\n\tcryptodev-linux, cppzmq, czmq, dtach, enscript, exfat,\n\texfat-utils, f2fs-tools, fan-ctrl, filemq, foomatic-filters,\n\tgenimage, genpart, glibmm, gnuplot, gtest, gutenprint, hplip,\n\tiozone, jansson, jhead, jquery-keyboard, jquery-ui,\n\tjquery-ui-themes, json-glib, json-javascript, lcms2, libpfm4,\n\tlibpthsem, libserial, libsigsegv, libtasn1, libwebsockets,\n\tlibxkbcommon, libxml++, linknx, log4cxx, mongoose, mongrel2,\n\tmtools, ne10, nmap, nodejs, openobex, openpgm, poppler,\n\tprotobuf-c, python-m2crypto, python-thrift, qjson, qt5base,\n\tqt5declarative, qt5graphicaleffects, qt5imageformats,\n\tqt5jsbackend, qt5multimedia, qt5quick1, qt5script, qt5svg,\n\tqt5webkit qt5xmlpatterns, rapidjson, redis, swig, texinfo,\n\ttzdata, urg, ussp-push, wayland, webp, weston, wireless-regdb,\n\twireshark, wvdial, wvstreams, xcb-util-image, xcb-util-wm,\n\txcursor-transparent-theme, zic, zmqpp, zyre\n\n\tRemoved packages: microperl, ocf-linux, xapp_xinit,\n\txapp_xplsprinters, xapp_xprehashprinterlist,\n\txfont_font-bitstream-speedo,\n\txlib_lib{Xfontcache,XprintAppUtil,XprintUtil,Xp,oldX,xkbui},\n\txproto_{print,xf86rush}proto\n\n\tDeprecated packages: vala\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#1291: Add support for Faraday 526 arm processor (fa526)\n\t#2683: cups does not install correctly to target\n\t#3313: mesa3d fails to build\n\t#5186: initramfs/cpio should support lzo compression\n\t#5636: agetty - cannot get controlling tty error - need updated...\n\t#5906: collectd client headers not exported\n\t#5966: bison unnecessarily required as build dependency\n\t#6140: --enable-fileinfo not applied for php package\n\t#6164: openvpn usage of ip tool from Busybox\n\n2013.02, Released February 28th, 2013:\n\n\tMisc manual updates.\n\n\tUpdated/fixed packages: busybox, collectd, flashbench,\n\tlibgtk2, libupnp, mii-diag, quota\n\n2013.02-rc3, Released February 26th, 2013\n\n\tMinor fixes.\n\n\tUpdated/fixed packages: conntrack-tools, dialog,\n\tenlightenment, haserl, keyutils, libfif, libmad,\n\tlinux-firmware, linux-fusion, matchbox-desktop, matchbox-wm,\n\truby, spawn-fcgi, vtun\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#5960: fusion.ko driver does not install to target rootfs\n\n2013.02-rc2, Released February 19th, 2013\n\n\tFixes all over the tree.\n\n\tVarious manual updates and fixes.\n\n\tUpdated/fixed packages: busybox, collectd, gesftpserver,\n\tglib-networking, gnutls, inotify-tools, libcurl, libffi,\n\tlibglib2, libtorrent, libvorbis, neard, network-manager,\n\tntfs-3g, openssl, qt, rpi-userland, rtorrent, thttpd, vim.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#5906: collectd client headers not exported\n\n2013.02-rc1, Released February 10th, 2013\n\n\tToolchain: Crosstool-ng 1.17.0, default to GCC 4.6.3, target\n\tlibraries install fixed. Add Linaro ARM\n\t2012.11/2012.12/2013.01, AArch64 12.11/12.12/13.01. Sourcery\n\tCodeBench MIPS 2012.03/09. Infrastructure to warn about\n\tmissing 32bit support for binary toolchains. Toolchain wrapper\n\tis now relocatable. Add GDB 7.5.1 / Remove 6.8 / 7.0 /\n\t7.1. Deprecate uClibc 0.9.31.\n\n\tArchitecture: Xtensa fixes, add missing powerpc variants, arm\n\t1136jf-s rev1, add A5/A15, neon support toggle, OABI\n\tdeprecated. Sparc: drop old unused variants\n\n\tBootloaders: At91bootstap: fix upstream URL, Barebox: add\n\t2012.12/2013.01/2013.02, remove 2012.08/09/10, lzop fixes,\n\tenvironment image support, U-Boot: add 2013.01.01\n\n\tLinux: fix appended dtb handling for v3.8+ kernels, support\n\tmultiple device trees\n\n\tDefconfigs: calao USB-A9260, snowball, QEMU PPC440 on ML507\n\tboard, QEMU ARM Exynos4210, Kernel version in QEMU defconfigs\n\tupdated, at91rm9200df: misc fixes. Lock kernel headers to\n\tmatch kernel.\n\n\tInfrastructure: Git download fixes. Toolchain make target\n\trenamed from 'cross' to 'toolchain'. Eclipse integration\n\tsupport. Option to set root password, post image scripts,\n\tconfig scripts handling.\n\n\tUpdated/fixed packages: alsa-lib, argp-standalone, argus,\n\tarptables, atk, audiofile, axel, beecrypt, bind, bison,\n\tbluez_utils, boost, cairo, can-utils, bmon, boa, busybox,\n\tcairo, ccache, cdrkit, cifs-utils, cjson, cmake, collectd,\n\tconnman, coreutils, cpanminus, cups, dbus, dhcp, dialog,\n\tdiffutils, directfb, distcc, divine, dnsmasq, docker,\n\tdosfstools, dstat, e2fsprogs, ebtables, ed, empty, ethtool,\n\texpedite, fbset, fbv, ffmpeg, flex, fltk, fluxbox, freetype,\n\tgadget-test, gawk, gdb, genext2fs, gettext, giblib,\n\tglib-networking, gmp, gmpc, gnupg, gnutls, gpsd,\n\tgst-plugins-{bad,base,good}, gstreamer, gzip, haserl, hdparm,\n\theirloom-mailx, hiawanta, hostapd, icu, imagemagick, imlib2,\n\tinadyn, infozip, iproute2, ipset, iptables, iw, jpeg, jquery,\n\tjquery-sparklines, jqeury-validation, kismet, kmod, lame,\n\tlibao, libcap, libcurl, libdvdnav, libdvdread, libecore,\n\tlibedbus, libedje, libeet, libefreet, libeina, libeio,\n\tliberation, libelementary, libembryo, libethumb, libev,\n\tlibevas, libffi, libfribidi, libfuse, libgcrypt, libglib2,\n\tlibgpg-error, libgtk2, libhid, libidn, libmicrohttpd, libmpd,\n\tlibnl, libnspr, libnss, libogg, libpcap, libplayer, libpng,\n\tlibroxml, librsvg, libseccomp, libsigc, libsndfile, libungif,\n\tlibupnp, liburcu, libusb-compat, libvncserver, libvorbis,\n\tlibxml2, libxslt, lighttpd, links, linux-firmware,\n\tlinux-fusion, ltp-testsuite, ltrace,\n\tlttng-{babel,libust,modules,tools}, lvm2, lua, luajit, lzop,\n\tmatchbox-{desktop,lib}, mdadm, metacity, midori, minicom, mpd,\n\tmpfr, mplayer, mtd, mysql_client, ncurses, neon, netatalk,\n\tnetworkmanager, nspr, ntfs-3g, nuttcp, ofone, olsr, openssl,\n\topenvpn, opkg, oprofile, opus, opus-tools, orc, ortp, pango,\n\tpciutils, pcmanfm, pcre, pcsc-lite, perl, php, pixman,\n\tpkgconf, polarssl, pptp-linux, proxychains, pulseaudio,\n\tpython, python3, qemu, qextserialport, qt, quagga, radvd,\n\treadline, rng-tools, rt-tests, rubix, ruby, sam-ba, samba,\n\tsane-backends, sconeserver, scons, screen, sdl, sdl_gfx,\n\tsdl_mixer, sdl_ttf, sdparm, sed, ser2net, smartmontools,\n\tspeex, sqlite, squid, sshfs, strace, sudo, sylpheed, tn5250,\n\ttaglib, tar, torsmo, transmission, tslib, uboot-tools, ulogd,\n\tusb_modeswitch, util-linux, valgrind, vim, vsftpd, wavpack,\n\twebkit, wipe, wireless_tools, wpa_supplicant, xapp_xinit,\n\txapp_xinput-calibrator, xapp_xman, xapp_xmh, xlib_libX11,\n\txlib_libXdmcp, xlib_libXft, xlib_libpthread-stubs,\n\txlib_xtrans, xproto_xcmiscproto, xproto_xextproto,\n\txserver_xorg-server, xstroke, xvkbd, xz\n\n\tNew packages: b43-firmware, b43-fwcutter, bustle,\n\tcache-calibrator, cegui06, celt051, classpath, curlftpfs,\n\tdvb-apps, dvbsnoop, elfutils, enlightenment, firmware-imx,\n\tflashbench, gd, gesftpserver, gst-fsl-plugins, httping, iftop,\n\timx-lib, jamvm, jpeg-turbo, keyutils, libatasmart, libcofi,\n\tlibebml, libevas-generic-loaders, libfslcodec, libfslparser,\n\tlibfslvpuwrap, libgsasl, libiscsi, libmatroska, libmcrypt,\n\tlibmhash, libqwt, libseccomp, libsha1, linenoise, mcrypt,\n\tmedia-ctl, ncdu, neard, neardal, nettle, perf, polkit,\n\tproxychains, python-bottle, python-pyparsing, rpi-firmware,\n\trpi-userland, sg3_utils, slirp, snowball-hdmiservice, spice,\n\tspice-protocol, tcllib, tvheadend, udisks, usbredir\n\tux500-firmware, vde2, xcb-utils-keysyms, yavta,\n\tzd1211-firmware\n\n\tRemoved packages: customize, xdriver_xf86-input-{acecad,aiptek},\n\txdriver_xf86-video-{apm,chips,i740,rendition,s3,s3virge,sisusb},\n\txdriver_xf86-video-sun{cg14,cg3,cg6,ffb,leo,tcx},\n\txdriver_xf86-video-{tsend,xgi,xgixp}\n\n\tDeprecated packages: xstroke\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#4237: building shared openssl w/-Os fails due to gcc bug\n\t#5690: python3 does not obey to BR2_PACKAGE_PYTHON3_PYC_ONLY=y\n\t#5602: python3 should install a \"python\" symbolic link\n\t#5846: Extra slash added to last slash in URL\n\n2012.11.1, Released January 3rd, 2013:\n\n\tToolchain: Fixed non-largefile builds on recent Ubuntu\n\tversions.\n\n\tArch: fix missing x86/generic handling, Build for Xtensa with\n\tlongcalls option.\n\n\tUpdated/fixed packages: dosfstools, qt\n\n2012.11, Released December 2nd, 2012:\n\n\tGit shallow clone fix for older git version.\n\n\tUpdated/fixed packages: ctuio, libtool\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#5726: List all the available hook points\n\n2012.11-rc2, Released November 30th, 2012:\n\n\tMinor fixes around the tree.\n\n\tVarious manual updates and fixes.\n\n\tAdd checks for legacy features.\n\n\tUpdated/fixed packages: acpid, alsa-lib, arptables, binutils,\n\tbusybox, ccache, cjson, cramfs, directfb, flex, fluxbox, gdb,\n\thiawatha, igh-ethercat, imagemagick, imlib2, lcdproc,\n\tlibdaemon, libecore, libhid, libmad, libpcap, libsigc, libusb,\n\tlinux-fusion, matchbox, ocf-linux, owl-linux, python, rrdtool,\n\tscons, strace, sylpheed\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#5732: Error : package/alsa-lib/alsa-lib.mk\n\n2012.11-rc1, Released November 17th, 2012\n\n\tFixes all over the tree and new features.\n\n\tDefconfigs: use u-boot 2012.10 on at91 and beaglebone,\n\tsheevaplug + qemu: bump kernel version, add qemu-mips64-malta\n\t+ nitrogen6x defconfigs.\n\n\tBootloaders: add u-boot 2012.07/10, ais target format, add\n\tbarebox 2012.08/09/10/11, linker overlap issue fix for\n\tat91bootstrap, mxs-bootlets updated for new Barebox versions.\n\n\tToolchains: binutils 2.23.1, gcc 4.7.2, default to gcc 4.6.x,\n\tCodebench arm/sh/x86 2012.03/09, Linaro 2012.08/09/10.\n\tLibtirpc support for modern glibc variants. Toolchain on\n\ttarget has been deprecated.\n\n\tInitial Aarch64 support, Xtensa support re-added.\n\n\tInfrastructure: Use shallow git clone when possible, use\n\ttarballs rather than git URLs for github. Moved to pkgconf\n\trather than pkg-config. System directory added, default\n\tskeleton/device tables moved. More than 1 post-build script\n\tcan now be used. output/target now contains a\n\tTHIS_IS_NOT_YOUR_ROOT_FILESYSTEM warning, to help people\n\tunderstand how to (not) use it.\n\n\tManual has been reworked and extended.\n\n\tLegal-info: Lots of package annotations, CSV file fixes,\n\t_LICENSE / _REDISTRIBUTE splitup, per-package hooks.\n\n\tUpdated/fixed packages: acpid, alsa-lib, alsa-utils,\n\talsamixergui, attr, autoconf, automake, bash, bind, binutils,\n\tbison, blackbox, bluez-utils, busybox, cairo, can-utils,\n\tcifs-utils, cjson, cmake, collectd, connman, conntrack-tools,\n\tcoreutils, cups, cvs, dbus, dhcp, directfb, dmalloc, dnsmasq,\n\tdropbear, e2fsprogs, ethtool, fbdump, feh, fftw, file,\n\tflashrom, fluxbox, gdb, gdisk, gdk-pixbuf, genext2fs, gettext,\n\tgnutls, gpsd, gqview, grep, gsl, gst-plugins-{bad,good},\n\thdparm, hiawatha, hostapd, input-tools, iproute2, ipset,\n\tiptables, iw, json-c, kexec, kmod, lcdproc, leafpad, less,\n\tlibcurl, libdrm, libdvdnav, libdvdread, libffi, libfuse,\n\tlibglib2, libhid, liblockfile, libmad, libmbus, libmnl,\n\tlibnetfilter_{acct,conntrack,cthelper,cttimeout,queue},\n\tlibnfc, libnfc-llcp, libnfnetlink, libnl, libnspr, libnss,\n\tlibpcap, libplayer, libtool, libtorrent, liburcu, libv4l,\n\tlibxcb, libxml2, libxslt, links, linux-firmware, lm-sensors,\n\tlmbench, lockfile-progs, logrotate, lshw, lsof,\n\tlttng-babeltrace, lttng-tools, lua, luajit, mesa3d, microperl,\n\tmii-diag, module-init-tools, mpc, mpd, mpg123, mplayer,\n\tmtd-utils, mysql_client, nbd, ncurses, netatalk, netkitbase,\n\tnetkittelnet, netsnmp, newt, nfs-utils, openntpd, openssh,\n\topenssl, opkg, patch, pciutils, pcre, php, poco, polarssl,\n\tpopt, portmap, pppd, procps, pulseaudio, python, python-nfc,\n\tpython-protobuf, qt, quota, rp-pppoe, rtorrent, sam-ba, samba,\n\tscons, sdl_gfx, smartmontools, sqlite, squid, strace, sudo,\n\tsylpheed, tcpdump, tremor, ttcp, tiff, unionfs,\n\tusb_modeswitch, usbutils, util-linux, vala, valgrind, vpnc,\n\tvsftpd, webkit, wget, which, wpa_supplicant, x11vnc, xapp_*,\n\txdriver_*, xenomai, xfont_*, xinetd, xl2tp, xlib_*, xlsclient,\n\txproto_*, xserver_xorg-server, xutil_util-macros, xz, zeromq\n\n\tNew packages: arptables, at91bootstrap3, boot-wrapper-aarch64,\n\tccid, cpanminus, cpuload, erlang, evtest, fb-test-apps,\n\tfxload, gdbm, gnupg, googlefontdirectory, grantlee, gsl,\n\tlcdapi, liblo, liblog4c-localtime, libtirpc, linux-pam,\n\tlua-msgpack-native, macchanger, mtdev, mtdev2tuio, nfacct,\n\topus, opus-tools, pcsc-lite, perl, pkgconf, python-meld3,\n\tpython3, qemu, qextserialport, qtuio, rpcbind, schifra,\n\tsconeserver, supervisor, time, ulogd, usb_modeswitch_data,\n\tyasm\n\n\tDeprecated packages: netkitbase, netkittelnet\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#807:  [PATCH] samba - make iconv and smbd optional\n\t#3049: binutils have a sysroot bug in ld\n\t#5330: update vsftpd to 3.0.0\n\t#5486: libglib2 build fails on: libs/libglib-2.0.so: undefined...\n\t#5666: Fails to build python 2.7.2 for 2440 arm\n\n2012.08, Release August 31th, 2012\n\n\tUpdated/fixed packages: microperl, cups, luajit, rrdtool,\n\tprboom, oprofile.\n\n\tAdded license information for: sqlite.\n\n\tChanged the source URLs of all packages located on Sourceforge\n\tin order to use the automatic mirror selection URL\n\tdownloads.sourceforge.net, and get rid of the\n\tBR2_SOURCEFORGE_MIRROR option.\n\n2012.08-rc3, Released August 25th, 2012\n\n\tUpdated/fixed packages: libglib2, netsnmp, freetype, libfuse,\n\tlibpng, x11vnc, zlib, gpsd, ifplugd, bash, distcc.\n\n\tAdded license informations for: barebox, grub, syslinux,\n\tuboot, xloader, yajl, zlib, zxing, alsa-lib, alsa-utils,\n\tfaad2, nano, fbdump, rsync, librsync, fontconfig,\n\tinotify-tools,\n\n2012.08-rc2, Released August 15th, 2012\n\n\tUpdated/fixed packages: imagemagick, sudo, crosstool-ng.\n\n\tAdded license informations for: mxml, nanocom, empty, expat,\n\tlua, lucjson, xinetd, cjson, luaexpat, lmbench, bwm-ng,\n\tinput-event-daemon, luajit, cgilua, copas, coxpcall,\n\tluafilesystem, luasocket, rings, wsapi, xavante, libtpl,\n\tavahi, busybox, libfcgi, ifplugd, libcgicc, libcurl,\n\tlibdaemon, libdnet, libgpg-error, libpcap, libpng, lighttpd,\n\tmtd, openssl, psmisc, socat, spawn-fcgi.\n\n\tFixes to Microblaze external toolchains\n\tconfiguration. Improvements of the pkg-stats\n\tscript. Out-of-tree fix for the graph-depends script.\n\n\tKernel headers version bump.\n\n2012.08-rc1, Released August 1st, 2012\n\n\tFixes all over the tree and new features.\n\n\tIntegration of a legal information reporting infrastructure,\n\twhich allows to generate detailed informations about the\n\tlicenses and source code of all components of a system\n\tgenerated by Buildroot. License information will progressively\n\tbe added on packages.\n\n\tDefault configuration files added for Calao-systems USB-A9263\n\tand Calao-systems USB-A9G20-LPW.\n\n\tExternal toolchains update: allow download of a custom\n\ttoolchain, add Linaro 2012.05 and 2012.06 for ARM, add\n\tBlackfin toolchain 2012R1-BETA1, add Sourcery CodeBench MIPS\n\t2011.09.\n\n\tAllow the restriction of downloads to the primary site only.\n        This is useful for project developers who want to ensure that\n        the project can be built even if the upstream tarball\n        locations disappear.\n\n\tAdd a 'System configuration' choice to select between 3\n\tdifferent init systems: Busybox init, SysV init and Systemd\n\tinit.\n\n\tCleanups to the package infrastructure. The visible change to\n\tdevelopers is that $(eval $(call AUTOTARGETS)) is now $(eval\n\t$(autotools-package)), and similarly for other package\n\tinfrastructures and host packages. Refer to the documentation\n\tfor details.\n\n\tBy default, automatic detection of the number of compilation\n\tjobs to use, depending on the number of CPUs available.\n\n\tImprovements to generate systems with static libraries only\n\t(infrastructure and package fixes).\n\n\tAdd proper support in the Linux kernel package to generate\n\tDevice Tree Blobs or combined Device Tree / Kernel\n\timages. This will be useful on Microblaze, PowerPC and ARM,\n\twhich are architectures making extensive use of the Device\n\tTree.\n\n\tUpdated/fixed packages: audiofile, autoconf, automake, axel,\n\tbarebox, bash, beecrypt, berkeleydb, bind, bison, bluez_utils,\n\tbonnie, boost, busybox, bsdiff, bwm-ng, bzip2, cifs-utils,\n\tcgilua, cmake, connman, conntrack-tools, crosstool-ng, cups,\n\tdbus, dhcp, dnsmasq, e2fsprogs, eeprog, ethtool, faad2, fbv,\n\tffmpeg, freetype, gmp, gnutls, gob2, gpsd, grep,\n\tgst-plugins-base, gst-plugins-good, gzip, hiawatha, hostapd,\n\thtop, icu, igh-ethercat, imagemagick, input-tools, iostat,\n\tiproute2, ipset, iptables, iw, kmod, less, libcap, libgci,\n\tlibconfig, libcurl, libelf, libevas, libeXosip2, libexif,\n\tlibfuse, libidn, libmad, libmbus, libmnl,\n\tlibnetfilter-conntrack, libnl, libnspr, libnss, libogg,\n\tlibosip2, libpcap, libpng, libroxml, liburcu, libusb, libxml2,\n\tlibxslt, lighttpd, linux, ltrace, lttng-libust, lttng-modules,\n\tlttng-tools, lua, m4, memtester, midori, mii-diag,\n\tmodule-init-tools, mpfr, mpg123, mrouted, msmtp, mtd, mxml,\n\tmysql_client, nasm, nbd, ncurses, nfs-utils, opencv, openocd,\n\topenssl, pciutils, php, polarssl, portaudio, pppd,\n\tpthread-stubs, pulseaudio, qt, quagga, quota, radvd, rpm,\n\trrdtool, samba, sam-ba, scons, sdl_gfx, sdl_sound, speex,\n\tsqlite, squashfs, squid, sudo, synergy, syslinux, systemd,\n\ttar, tcpdump, tcpreplay, udev, usbutils, valgrind, wget,\n\twpa_supplicant, wsapi, xavante, xserver_xorg-server, zlib\n\n\tNew packages: cjson, collectd, dfu-util, dmidecode, elftosb,\n\tfbterm, flashrom, freerdp, inadyn, libfreefare,\n\tlibnetfilter_cttimeout, libnfc, libnfc-llcp, liboping,\n\tlibtorrent, linphone, logsurfer, lshw, luacjson, luaexpat,\n\tluajit, mediastreamer, mobile-broadband-provider-info, monit,\n\tmxs-bootlets, nanocom, nss-mdns, ofone, omap-u-boot-utils,\n\topkg, ortp, owl-linux, python-id3, python-nfc, quota,\n\tramspeed, rtorrent, sound-theme-borealis,\n\tsound-theme-freedesktop, sysprof, webrtc-audio-processing,\n\txinetd, zxing\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#1315: Allow use of older external toolchains without sysroot\n               support [won't fix]\n\t#5276: Hiawatha needs to manage IPV6 if so [fixed]\n\t#5360: buildroot fails when building \"host-libglib2 2.30.2\n               Building\" [won't fix, upstream problem]\n\t#5384: Can't build packages relying on gets on newer glibc\n               [fixed]\n\n2012.05, Released May 30th, 2012:\n\n\tUpdated/fixed packages: busybox, netsnmp, pptp-linux\n\n2012.05-rc3, Released May 25th, 2012:\n\n\tMinor fixes around the tree.\n\n\tInfra: Fix for DOWNLOAD macro when using primary mirrors with\n\tscp targets.\n\n\tToolchain: Kernel headers 3.2.18 / 3.3.7.\n\n\tUpdated/fixed packages: binutils, bison, busybox, cifs-utils,\n\tgnuchess, gpsd, iperf, libmpeg2, mtd, ntfs-3g, oprofile,\n\txserver-xorg\n\n2012.05-rc2, Released May 18th, 2012:\n\n\tFixes all over the tree.\n\n\tToolchain: uClibc: Use 0.9.33.2, Crosstool-ng: fix gperf\n\tdependency, disable decimal floats support, Linux 3.2.17 /\n\t3.3.6 kernel headers. Fix sysroot copy handling for toolchains\n\twithout C++ support.\n\n\tUpdated/fixed packages: apr, apr-util, ccache, dnsmasq,\n\theirloom-mailx, gdb, ndisc6, opencv, openssl, socat, vala\n\n2012.05-rc1, Released May 10th, 2012:\n\n\tFixes all over the tree and new features.\n\n\tUse /etc/os-release for version info rather than\n\t/etc/br-version.\n\n\tCMake toolchain file moved to $HOST_DIR/usr/share/buildroot.\n\n\tApply-patches.sh: cleanups, archived patches handling fixes,\n\tsupport series files.\n\n\tDefconfigs: beaglebone, mx53qsb, pandaboard, qemu configs for\n\tarm-vexpress/microblaze/ppc-mpc88544ds, use 3.2.x for\n\tatngw100, use 3.3.x for qemu configs.\n\n\tMenu structure: Libraries moved out of multimedia section\n\n\tAtom processor support. Prescott fix, blackfin ABI fix,\n\tMicroblaze architecture support (using ext toolchain). Cleanup\n\tarchitecture names, deprecate Xtensa support.\n\n\tToolchain: Add GCC 4.4.7, 4.6.3, 4.7.0. uClibc 0.9.33.1,\n\tdefault to uClibc 0.9.33.x, enable\n\tUCLIBC_SUPPORT_AI_ADDRCONFIG by default, static and 64bit\n\tfixes for external toolchains, linaro ext toolchains, new\n\tsourcery codebench ext toolchains, GDB 7.4.1, crosstool-ng\n\t1.15.2.\n\n\tBootloaders: U-Boot: add 2012.04.01, SPL and u-boot.img\n\tsupport. Barebox: add 2012.04, remove 2011.12.\n\n\tUpdated/fixed packages: alsa-lib, alsa-utils, at, atk, avahi,\n\tbarebox, berkeleydb, bind, bluez_utils, boost, busybox,\n\tcan-utils, ccache, cifs-utils, coreutils, cups, dbus, dhcp,\n\tdirectfb, dnsmasq, doom-wad, dosfstools, e2fsprogs, expat,\n\tfakeroot, feh, ffmpeg, file, fis, freetype, gamin, gawk,\n\tgdk-pixbuf, gettext, giblib, glib-networking, gmp, gnutls,\n\tgpsd, grep, gstreamer, gst-plugins-{bad,base,good,ugly},\n\thaserl, hdparm, imagemagick, iproute2, iptable, iw, kexec,\n\tkmod, lame, libaio, libarchive, libatomic_ops, libconfig,\n\tlibcurl, libdvdnav, libdvdread, libedbus, libethumb, libffi,\n\tlibfuse, libglib2, libgtk2, libhid, libmad, libmbus, libmpeg2,\n\tlibnl, libplayer, libpng, libsigc, libsoup, libupnp, liburcu,\n\tlibusb, libusb-compat, libxml2, libxml-parser-perl, libxslt,\n\tlighttpd, linux-firmware, linux-fusion, lite, lsof, ltrace,\n\tlttng-libust, lua, m4, makedevs, microperl, mpd, mpfr, mpg123,\n\tmrouted, mtd, mysql_client, nbd, ncftp, ncurses, neon,\n\tnetsnmp, network-manager, nfs-utils, ngrep, ntfs-3g, openntpd,\n\topenssh, openssl, parted, pango, pcre, php, pixman, poco,\n\tpsmisc, pulseaudio, python, qt, quagga, radvd, rpm, rsync,\n\truby, samba, sam-ba, sane-backends, sawman, screen, sdl_net,\n\tsmartmontools, speex, sqlite, squashfs3, squid, sshfs, sudo,\n\tsyslinux, sysstat, taglib, tcpdump, tftp-hpa, transmission,\n\ttiff, tinyhttpd, uboot-tools, udev, uemacs, unionfs, usbutils,\n\tutil-linux, vala, valgrind, vim, vsftpd, wget, wipe,\n\twpa_supplicant, xdriver_xf86-{input-vmmouse,video-fbdev},\n\txfsprogs, zlib\n\n\tNew packages: apr, apr-util, audiofile, bellagio,\n\tconntrack-tools, empty, fmtools, glib-networking,\n\theirloom-mailx, hiawatha, latencytop, lcdproc, libcap-ng,\n\tlibdmtx, libfcgi, libnetfilter_conntrack, libnfnetlink,\n\tlibtpl, localedef, minicom, msmtp, ndisc6, netatalk,\n\tocf-linux, openswan, parted, polarssl, protobuf, read-edid,\n\tsocketcand, stress, systemd, ushare, zeromq\n\n\tDeprecated packages: ttcp\n\n\tRemoved packages: ntfsprogs\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#2353: [lua] fix build with 2010.08-rc1\n\t#2503: Microperl fails build on MIPSel or with Fedora13.x86_64\n\t#2557: [PATCH] mkfs.xfs complains about missing libxfs.so.0\n\t#2881: Can't build project statically with external toolchain\n\t#3751: MIPS: fix BR2_GCC_TARGET_ABI for MIPS n64\n\t#4808: ccache may build against wrong zlib\n\t#4880: New package lcdproc\n\t#4886: New package protobuf\n\t#4892: build fails on ltp-testsuite-20101031/testcases/kernel/fs/...\n\t#4898: * make: [target-finalize] Error 1 (ignored)*\n\t#4985: Qt 4.7.4 build crashes with Linux 2.6.29\n\t#4970: udev 181 fails to build if kernel version 3.3 is selected\n\t#5018: dialog broken: exits with assert in uClibc\n\t#5102: qt package moc, uic, rcc read from wrong place\n\t#5144: Patch to fix ixon bug in uemacs\n\t#5198: Line graphics output is broken in GNU Screen\n\t#5204: Missing terminfo file(s) for GNU screen terminal type\n\n2012.02, Released February 29th, 2012:\n\n\tUpdated/fixed packages: libecore\n\n2012.02-rc3, Released February 27th, 2012:\n\n\tFixes all over the tree.\n\n\tAutomatic host dependencies handling for cmake packages\n\tfixed. Customize package deprecated as using a post-build\n\tscript is nowadays the preferred way of adding extra stuff to\n\tthe rootfs.\n\n\tLinux-headers 3.0.x / 3.2.x stable version bumped.\n\n\tQEMU defconfigs updated to 3.2.x kernels and readme fixed.\n\n\tUpdated/fixed packages: dropbear, ffmpeg, libpng\n\n2012.02-rc2, Released February 19th, 2012:\n\n\tFixes all over the tree.\n\n\tToolchain: uClibc: Added upstream post-0.9.33 fixes, Bump\n\tlinux-headers 3.0.x / 3.2.x stable versions.\n\n\tDocumentation: Added makedev / <pkg>_DEVICES /\n\t<pkg>_PERMISSIONS documentation.\n\n\tUpdated/fixed packages: busybox, ffmpeg, gst-dsp, libecore,\n\tlibvncserver, mxml, python.\n\n2012.02-rc1, Released February 12th, 2012:\n\n\tFixes all over the tree and new features.\n\n\tToolchain: Default to GCC 4.5.x, add binutils 2.22. Java\n\tsupport removed, Powerpc SPE ABI support. GDB ELF support fix,\n\tGDB 7.4, crosstool-NG 1.13.4.\n\n\tGentargets: scp and mercurial support.\n\tAutotools: derive host dependencies from target by default.\n\tPackages can now declare device table snippets.\n\n\tHost utilities menu with commonly used host tools.\n\n\tdefconfigs: qemu configs for x86-64, mips and sparc, at91\n\tdefconfigs now use modern U-Boot / mainline Linux, added\n\tlpc3250 defconfigs.\n\n\tuClibc: remove 0.9.30, backport unshare() support, add\n\t0.9.32.1 / 0.9.33, use same config for ctng.\n\n\tBootloaders: U-Boot: add 2011.12, remove 2010.xx versions,\n\tBarebox: add 2012.01/02, remove 2011.10/11, LPC32xx\n\tbootloaders added.\n\n\tVarious manual updates. Release tarballs now contain generated\n\tmanual in text/html/pdf formats.\n\n\tBuildroot now calls the stop function of scripts in\n\t/etc/init.d at shutdown.\n\n\tUpdated/fixed packages: atk, avahi, barebox, bash, beecrypt,\n\tbind, binutils, bison, bluez_utils, bzip2, busybox, cairo,\n\tccache, cdrkit, coreutils, cramfs, dbus, dbus-glib, dialog,\n\tdiffutils, dmalloc, dropbear, e2fsprogs, ebtables, ed,\n\tethtool, expat, ffmpeg, file, fis, flex, fluxbox, fontconfig,\n\tfreetype, gawk, grep, gst-dsp, gst-ffmpeg, gst-plugins-base,\n\thdparm, hostapd, htop, i2c-tools, icu, iproute2, ipsec-tools,\n\tipset, iptables, iw, jpeg, kismet, lame, libcap, libcgi,\n\tlibev, libeXosip2, libffi, libftdi, libgpg-error, libgtk2,\n\tlibidn, libmms, libmnl, libmodbus, libnl, libogg, libosip,\n\tlibpcap, libpng, libraw1394, libroxml, libusb, libusb-compat,\n\tlibv4l, libvorbis, libxcb, libxml-parser-perl, libxslt,\n\tlighttpd, links, lm-sensors, lua, m4, module-init-tools, mpc,\n\tmesa3d, mpd, mpfr, mplayer, mtd-utils, nano, nbd, ncurses,\n\tnetperf, netsnmp, ntp, opencv, openocd, openssl, openvpn, orc,\n\tpciutils, pcre, pixman, pkg-config, poco, popt, proftpd,\n\tpython, python-serial, qt, ruby, samba, sdl, sdparm,\n\tsquashfs3, sshfs, sqlite, squid, sudo, syslinux, tcl, tcpdump,\n\tti-utils, tiff, tremor, uboot, uboot-tools, udev, usbmount,\n\tutil-linux, vala, valgrind, vsftpd, wpa_supplicant,\n\txapp_{bdftopcf,mkfontdir,mkfontscale,xkbcomp,xcursorgen,xinit},\n\txapp_xinput, xapp_xman, xcb-util, xdm, xenomai,\n\txf86-video-sis, xfont_{encodings,font-util},\n\txlib_lib{fontenc,X11,Xau,Xcursor,Xdmcp,Xfixes,Xfont,Xrender},\n\txlib_libxkbfile, xterm, xutil_makedepend, yajl\n\n\tNew packages: boost, connman, dstat, expedite, explorercanvas,\n\tfeh, flot, giblib, igh-ethercat, imlib2, jquery,\n\tjquery-sparklines, jquery-validation, jsmin, kmod, libecore,\n\tlibedbus, libedje, libeet, libeina, libelementary, libesmtp,\n\tlibethumb, libevas, libical, libmbus, liboauth, liburcu,\n\tlibvncserver, linux-firmware,\n\tlttng-{babeltrace,libust,modules,tools}, NetworkManager,\n\topen2300, python-distutilscross, python-dpkt,\n\tpython-netifaces, python-pygame, python-setuptools, rt-tests,\n\tsam-ba, sane-backends, sqlcipher, transmission, unionfs,\n\txf86-input-tslib, xinput-calibrator\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#743:  Add Transmission bit torrent option to buildroot\n\t#755:  Add Boost libraries as a package\n\t#2299: Add crypto support to libsoup\n\t#2617: Pixman 0.19.2 & Cairo 1.10.0\n\t#3403: libgpg-error: bump to version 1.10\n\t#3409: libgpg-error: download from gnupg.org\n\t#3421: nano: make tiny flag optional\n\t#3691: New EFL packages\n\t#4664: Cannot patch AT91Bootstrap\n\t#4700: setlocalversion not working for combination svn/ubuntu 11.10...\n\t#4760: Qt: add host-pkg-config to dependency-list\n\n2011.11, Released November 30th, 2011:\n\n\tFixes all over the tree.\n\n\tBump kernel headers / default Linux version to 3.1.4.\n\n\tUpdated/fixed packages: ruby\n\n2011.11-rc3, Released November 26th, 2011:\n\n\tFixes all over the tree.\n\n\tToolchain: Fix gdb dependencies for external toolchains,\n\tadjust uClibc patches so they don't confuse modern versions of\n\tpatch, bump crosstool-ng, kernel headers and linux versions.\n\n\tUpdated/fixed packages: busybox, freetype, mplayer, opencv,\n\tphp, rsyslog, ruby, thttpd, xapp_xf86dga\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#4357: Prevent patch commands from accessing source control\n\t#4369: Fix permissions on untared lsof archive\n\n2011.11-rc2, Released November 18th, 2011:\n\n\tFixes all over the tree and new features.\n\n\tUpdated asciidoc documentation\n\n\tToolchain: Bumped 3.x stable kernel headers, use wget in\n\tcrosstool-ng as well, bump crosstool-ng version, gdb fixes,\n\tuClibc sparc fix.\n\n\tUpdated/fixed packages: distcc, file, gst-plugins-bad, libxcb,\n\tmplayer, newt, qt, rpm, rrdtool, tar, tftpd\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#3355: mplayer fails to build\n\t#4021: uClibc: undefined reference to `__GI___errno_location'\n\t#4297: Qt's qmake uses wrong pkg-config\n\n2011.11-rc1, Released November 11th, 2011:\n\n\tFixes all over the tree and new features.\n\n\tMoved misc scripts and support stuff to support/. Renamed\n\tpatch-kernel.sh to support/scripts/apply-patches.sh.\n\n\tDocumentation: Moved to asciidoc format, make targets to\n\tgenerate text/html/pdf/epub output added.\n\n\tDefconfigs: Qemu configs updated to 3.1 kernel and readmes\n\tadded.\n\n\tBootloaders: Add support for custom git tree / tarballs for\n\tbarebox, similar to how it's handled for u-boot. Clean up\n\tmenuconfig options.\n\n\tToolchain: Update external codesourcery toolchain download\n\tURLs after Codesourcery got bought by Mentor, add x86\n\ttoolchain, update toolchain versions and optimize toolchain\n\tsysroot copying. Fix uClibc 0.9.32 builds for e500 PPC,\n\tupdated GDB versions / download URLs. Binutils\n\tlibbfd/libopcodes static/dynamic linking fix. GCC 4.6.2 added,\n\tuse ctng-1.13.0.\n\n\tPackage infrastructure: Support for local packages /\n\toverrides, package dir / name arguments dropped from\n\t{GEN,AUTO,CMAKE}TARGETS.\n\n\tLinux: Kernel extensions infrastructure support, Xenomai +\n\tRTAI support.\n\n\tUpdated/fixed packages: acpid, bind, busybox, dash, dbus,\n\tdbus-glib, directfb, dnsmasq, drystone, e2fsprogs, ethtool,\n\tfakeroot, fbdump, file, freetype, fuse, gamin, gmp, gmpc,\n\tgnutls, gob2, gst-plugins-{base,bad,good,ugly}, gstreamer,\n\thostapd, ifplugd, imagemagick, intltool, ipsec-tools, ipset,\n\tiptables, iw, jpeg, kexec, leafpad, less, libargtable2, libao,\n\tlibconfuse, libcuefile, libcurl, libdaemon, libevent,\n\tlibglib2, libiconv, libmpd, libreplaygain, libroxml,\n\tlibsamplerate, libsndfile, libsoup, libsvgtiny, libtool,\n\tlibxcb, lighttpd, links, linux-fusion, lite, lrzsz, lsof, lzo,\n\tlzop, makedevs, mcookie, mpg123, mpd, mpfr, mtd, musepack,\n\tmutt, mysql_client, ncftp, ncurses, neon, netcat, netsnmp,\n\tntfs-3g, ntfsprogs, ntp, openntpd, openssh, openssl, oprofile,\n\torc, pciutils, psmisc, python, qt, quagga, radvd, rpm, rsync,\n\tsamba, sawman, sdl_sound, smartmontools, sqlite, squid,\n\tstunnel, sudo, sylpheed, sysstat, taglib, tar, tcpreplay,\n\ttslib, usbutils, util-linux, valgrind, wget, whetstone, which,\n\twpa-supplicant, xdata_xcursor-themes, xmlstarlet, xterm\n\n\tNew packages: bluez-utils, cifs-utils, fftw, fluxbox, json-c,\n\tlibev, libftdi, libgeotiff, libmodbus, libplayer, live555,\n\tngrep, noip, opencv, openocd, picocom, poco, portaudio,\n\tpulseaudio, pv, rtai, vala, xenomai.\n\n\tRemoved packages: liboil, sfdisk, swfdec, webif\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#505:  live555: new package\n\t#507:  Enable live and tv options in MPlayer-1.0rc2\n\t#531:  let e2fsprogs package to export headers to staging dir if needed\n\t#1171: Linuxthreads new cannot find sysdep.h\n\t#1357: Add bluez to buildroot system\n\t#2107: New package: input-event-daemon\n\t#2599: New package: orc (Oil Runtime Compiler)\n\t#2605: gstreamer: Update to 0.10.30\n\t#2677: introducing util-linux-ng as replacement for util-linux\n\t#2917: Qt: Add declarative module\n\t#3145: jffs2 image generation fails\n\t#3271: netperf-2.4.5 fails to compile\n\t#3331: xdata_xcursor-themes depends on xcursorgen\n\t#3343: Add file:// download SITE_METHOD\n\t#3391: Add support for specifying an external kernel tree\n\t#3631: Error while compiling with Xorg\n\t#3709: oprofile doesn't build for mipsel\n\t#3925: midori not getting compile\n\t#4045: Add support for downloading i386 toolchains from codesourcery\n\t#4165: lrzsz-fix-symlink-at-rebuild.patch\n\t#4171: makedevs-unused-but-set-variable.patch\n\t#4183: Codesourcery toolchain download site has changed\n\t#4231: libneon.so: undefined reference to `SSL_SESSION_cmp'\n\t#4381: Add option to lighttpd to enable Lua support\n\t#4387: Make sure that dest dir exists before installing mtd files\n\n2011.08, Released August 31th, 2011:\n\n\tFixes all over the tree.\n\n\tToolchain: Fix codesourcery 2009q3 ARM download, Linux 3.0.4\n\tkernel headers.\n\n\tUpdated/fixed packages: ipset, python\n\n2011.08-rc2, Released August 29th, 2011:\n\n\tFixes all over the tree.\n\n\tToolchain: crosstool-NG 1.12.1, use binutils 2.21 on\n\tmips/sh/older uClibc, disallow uClibc 0.9.32 on avr32/sh\n\t(broken).\n\n\tDefconfigs: kernel updates, fix mini2440 serial port config,\n\tremove old arm toolchain configs.\n\n\tBootloaders: Fix grub patching, add barebox-{n,x,menuconfig}\n\ttargets similar to linux/busybox.\n\n\tUpdated/fixed packages: barebox, directfb, libsoup,\n\tlibxml-parser-perl, mtd, ncurses, python, ti-utils, udev,\n\tusbmount, util-linux, xfont_font-misc-misc\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#3685: ncurses installation hangs due to old version of tic\n\t#4093: Grub fails to install bz2 patch after conversion to...\n\n2011.08-rc1, Released August 4th, 2011:\n\n\tFixes all over the tree and new features.\n\n\tToolchain: uClibc 0.9.32 / NPTL support, 0.9.29 removed,\n\text-toolchain-wrapper improvements, improved non-MMU\n\tsupport. GCC 4.3.6 / 4.6.1.\n\n\tGENTARGETS infrastructure extended to cover bootloaders and\n\tLinux kernel as well. Options to retrive Linux/U-Boot from a\n\tcustom git repo instead of upstream tarballs.\n\tSupport for Linux 3.x and release candidate tarballs.\n\tX-Loader bootloader for omap added.\n\n\tMake source/external-deps now also works for external\n\ttoolchains / crosstool-ng backend.\n\n\tUpdated/fixed packages: autoconf, berkeleydb, bind, binutils,\n\tbmon, bridge-utils, busybox, cmake, dbus, dbus-glib,\n\te2fsprogs, ethtool, ffmpeg, gst-plugins-{bad,base,good,ugly},\n\tgvfs, hostapd, iproute2, iptables, iw, jpeg, lame, libarchive,\n\tlibdnet, libdrm, libgcrypt, libgtk2, libmpeg2, libpng,\n\tlibsoup, lighttpd, linux-fusion, lzo, midori, mtd-utils,\n\tnfs-utils, openvpn, oprofile, orc, pkg-config, proftpd, qt,\n\truby, samba, sdl, shared-mime-info, sudo, sqlite, squid,\n\tsynergy, udev, usbmount, usbutils, util-linux, valgrind,\n\twebkit, xorg-xserver, xz, zlib\n\n\tNew packages: acl, attr, ebtables, gnutls, inotify-tools,\n\tipset, libargtable2, libiqrf, libmnl, libnspr, libnss,\n\tlibroxml, libyaml, live555, mxml, orc, rsyslog, sredird,\n\tstatserial, stunnel, ti-utils, uboot-tools, yajl\n\n\tDeprecated packages: liboil, swfdec\n\n\tRemoved packages: hal\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#3559: libnspr: Add new package\n\t#3595: patch to add libroxml\n\t#3565: libnss: Add new package\n\t#3583: xfonts_font-adobe-100dpi fails due to missing map file\n\t#3649: [PATCH] Add mapdir to existing pkg-config patch\n\t#3907: 2011.05 - Qt 4.7.3 not building on ARM\n\t#3961: Nfs-utils: Remove SUSv3-function index\n\t#3985: \"help\" target's defconfig list needs sort\n\t#3997: bump libroxml to v2.1.0\n\n2011.05, Released May 27th, 2011:\n\n\tUpdated/fixed packages: makedevs\n\n2011.05-rc2, Released May 24th, 2011:\n\n\tFixes all over the tree.\n\n\tToolchain: Code sourcery ARM 2009q1 download URL fixed /\n\t2009q3 external toolchains added. Crosstool-NG bumped to\n\t1.11.3, eglic/glibc configuration fixes. Linux kernel 2.6.38.x\n\tbumped to 2.6.38.7.\n\n\tUpdated/fixed packages: bind, fakeroot, kbd, psmisc, qt\n\n2011.05-rc1, Released May 18th, 2011:\n\n\tFixes all over the tree and new features.\n\n\tExternal toolchain improvements: We now build a binary\n\ttoolchain wrapper and install it into HOST_DIR/usr/bin, which\n\tenforces the correct compiler arguments, making an external\n\ttoolchain as easy to use outside of Buildroot as the internal\n\tones are. This also brought a cleanup of CFLAGS, making the\n\tBuildroot build output easier to read.\n\n\tRootfs device handling improvements: Choice between static\n\t/dev, devtmpfs and devtmpfs with either mdev or udev.\n\n\tToolchain: More preconfigured codesourcery external\n\ttoolchains, improved Crosstool-NG support, fix for GCC\n\tsnapshot versions, GCC 4.4.6 / 4.5.3, experimental GCC 4.6.0\n\tsupport, target-GCC fixes, uClibc fixes, 0.9.32-rc3 support.\n\n\tBootloaders: U-boot 2011.03, Barebox 2011.05.0\n\n\tLinux: support for custom kernel image targets, E.G. for\n\tpowerpc builds with embedded device trees.\n\n\tMisc fixes for qemu defconfigs, ensuring correct serial\n\tterminal setup out of the box.\n\n\tMisc gentarget / autotools handling fixes.\n\n\tUpdated/fixed packages: alsa-lib, alsa-utils, alsamixergui,\n\tatk, avahi, bind, bison, busybox, copas, dbus-glib, dhcp,\n\tdhcpdump, dnsmasq, dropbear, ethtool, fakeroot, ffmpeg, file,\n\tgamin, gnuconfig, gst-ffmpeg, gst-plugins-good, gtk2-engines,\n\thaserl, hostapd, icu, imagemagick, iproute2, iw, kismet, less,\n\tlibcap, libdnet, libglade, libglib2, libgtk2, libnl, libpng,\n\tlibxml2, libxml2, libxslt, lighttpd, lockfile-progs, makedevs,\n\tmidori, mpg123, mpc, mpd, mpfr, mplayer, mtd-utils, ncurses,\n\tnetsnmp, openssh, openssl, openvpn, pango, pkg-config, popt,\n\tprocps, proftpd, qt, quagga, readline, rsync, samba, sdl,\n\tsocat, squashfs, squid, sudo, tslib, udev, usbutils, webkit,\n\twpa_supplicant, xerces, xfont_font-misc-misc, xlib_libX11,\n\txlib_libXfont, xlib_xtrans, xorg-server, xterm, xz\n\n\tNew packages: bonnie++, can-utils, gdisk, htop,\n\tinput-event-daemon, libexif, libraw, libv4l, ngircd\n\n\tRemoved packages: festival\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#2131: Add OpenMP support to the toolchain\n\t#3379: New Package: bonnie++\n\t#3445: Not working openssl-10.0.0d on 386sx\n\t#3451: fakeroot package: wrong FAKEROOT_SITE variable\n\t#3457: alsamixergui: broken URL\n\t#3475: Calling sync on large filesystems when not always necessary\n\t#3511: make busybox-menuconfig does not download busybox package\n\t#3541: Quotes in the top Makefile:217 break buildroot/kernel config...\n\t#3571: u-boot: fw_printenv does not build\n\t#3643: popt source url is not responding\n\t#3733: dropbear: make zlib optional\n\t#3757: Buildroot can't build mplayer with libmad\n\n2011.02, Released February 28th, 2011:\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: alsamixergui, avahi, ffmpeg, icu, mpd,\n\tnuttcp, qt, slang, squashfs, sylpheed, synergy, xerces\n\n\tDeprecated packages: devmem2, webif\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#2911: Qt: Disable qt3support-option, if gui-module isn't selected\n\t#3259: Unable to build webkit (on arm)\n\t#3295: slang fails to build on mipsel\n\t#3325: ffmpeg fails to build\n\n2011.02-rc2, Released February 24th, 2011:\n\n\tFixes all over the tree.\n\n\tFestival packages marked as broken. Unless someone steps up\n\tto support them, they will be removed during the 2011.05\n\tdevelopment cycle.\n\n\tUpdated/fixed packages: atk, avahi, bind, cairo, dbus,\n\tenchant, fakeroot, gmpc, gpsd, gvfs, iperf, jpeg, libarchive,\n\tlibcgicc, libdaemon, libdrm, libevent, libgail, libglib2,\n\tlibgpg-error, libmicrohttpd, librsvg, libsoup, libxcp,\n\tmakedevs, matchbox-fakekey, matchbox-startup-monitor, mdadm,\n\tmetacity, mpd, nasm, nfs-utils, olsr, openssl, popt,\n\tpthread-stubs, quagga, rpm, samba, sdl, sdl_gfx, sdl_image,\n\tsdl_mixer, sdl_sound, sdl_ttf, squashfs, synergy, taglib,\n\ttcpreplay, tiff, wpa_supplicant, xcb-util,\n\txdriver_xf86-input-{acepad,aiptek,evdev,joystick,keyboard},\n\txdriver_xf86-input-{mouse,synaptics,void},\n\txdriver_xf86-video-{chips,dummy,geode,glide,intel,nv,wsfb},\n\txlib_lib{ICE,SM,XScrnSaver,Xau,Xcursor,Xdmcp,Xi,Xinerama},\n\txlib_lib{Xrandr,Xt,Xtst,Xxf86dga,Xxf86vm,dmx,fontenc,pciaccess},\n\txserver_xorg-server, xz\n\n\tRemoved packages: ace_of_penguins, vlc\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#3205: Failing chmod when running \"make\" in buildroot (openssl)...\n\t#3277: quagga fails to build with SNMP support\n\t#3283: See why nfs-utils needs fakeroot, and convert to autotools\n\t#3307: synergy fails to build due to missing XTest library\n\n2011.02-rc1, Released February 14th, 2011:\n\n\tFixes all over the tree and new features.\n\n\tExternal toolchain improvements: clarification of the options,\n\tand introduction of the toolchain profile concept, for\n\twell-known toolchains. Buildroot is now capable of\n\tautomatically downloading and extracting well-known toolchains\n\t(for the moment, CodeSourcery ARM, PowerPC, MIPS and SuperH\n\ttoolchains are supported). Crosstool-NG backend updated and\n\timproved.\n\n\tComplete rework of how hardware boards are supported.\n\tEach board now only has a single defconfig file, and all\n\tboard-specific options have been removed. See\n\tdocs/buildroot.html#board_support for details.\n\n\tAdded support for the following boards: Mini2440, Qemu ARM\n\tVersatile, Qemu MIPSel Malta, Qemu PowerPC G3beige, Qemu SH4\n\tr2d and Qemu x86. The Qemu boards support allows to easily\n\tbuild systems that are known to work under Qemu.\n\n\tInitial support for Blackfin processors.\n\n\tStaging directory moved into $(O)/host/usr/<tuple>/sysroot, in\n\tpreparation for support of SDK. For the same reason, the\n\ttoolchain binaries (cross-compiler and other related tools)\n\tare now installed in $(O)/host/usr/bin/. The cross pkg-config\n\tnow also automatically returns correct values for cross\n\tcompilation, without needing any environment variables to be\n\tset.\n\n\tCcache support reworked. Now used for both host and target\n\tcompilation, and cache is stored in ~/.buildroot-ccache.\n\n\tToolchain: uClibc 0.9.32-rc2, several components moved to\n\tnormal AUTOTARGET packages.\n\n\tGeneric cmake infrastructure, similar to the existing\n\tGENTARGETS/AUTOTARGETS.\n\n\tSupport for bzr downloads, next to the existing git/svn support.\n\n\tKconfig infrastructure rebased against 2.6.38-rc3, bringing\n\tmisc fixes. 'xconfig' now uses Qt4 rather than Qt3.\n\n\tEXT2 file system size handling improved, UBI image support, fs\n\tconfiguration options cleanup, U-Boot/Barebox version bumps.\n\n\tUpdated/fixed packages: alsa-utils, at, autoconf, automake,\n\tbash, binutils, bison, busybox, bzip2, cdrkit, cloop, cmake,\n\tcoreutils, cups, dbus, dbus-python, dhcp, directfb,\n\tdirecfb-examples, dmalloc, dnsmasq, dosfstools, e2fsprogs, ed,\n\tfbset, ffmpeg, findutils, flac, freetype, gdk-pixbuf, gmp,\n\tgrep, gperf, gst-ffmpeg, gst-plugins-bad, gst-plugins-base,\n\tgst-plugins-good, gst-plugins-ugly, gstreamer, gvfs, hdparm,\n\thostapd, i2c-tools, icu, imagemagick, input-tools, iproute2,\n\tiptables, iw, jpeg, kexec, libaio, libart, libcap, libconfig,\n\tlibfuse, libglib2, libidn, libmad, libogg, libpcap, libpng,\n\tlibsndfile, libtheora, libtool, libusb-compat, libvorbis,\n\tlibxcb, libxml2, libxslt, links, linux-fusion, lm-sensors,\n\tlsof, ltp-testsuite, ltrace, lvm2, lzo, m4, makedevs,\n\tmemtester, mesa3d, mii-diag, mpc, mpfr, mpg123, mplayer,\n\tmrouted, mtd-utils, nano, netperf, netplug, ntfs-3g, ntp,\n\topenssh, openssl, openvpn, oprofile, pango, patch, pciutils,\n\tphp, pkgconfig, portmap, psmisc, python, qt, rsync, ruby,\n\tsawman, screen, sdl_gfx, sdl_sound, smartmontools, socat,\n\tsqlite, squid, sshfs, sstrip, sysklogd, sysstat, sysvinit,\n\ttar, tcpdump, tslib, udev, usbutils, vim, vtun, webkit, wipe,\n\tx11vnc, xapp_xlogo, xcb-proto, xfont_font-util,\n\txkeyboard-config, xlib_libX11, xz, zlib\n\n\tNew packages: dhrystone, dsp-tools, faad2, fbgrab, gst-dsp,\n\tgst-omapfb, irda-utils, lame, libao, libcue, libcuefile,\n\tlibffi, libhid, libreplaygain, libsamplerate, libsigc++,\n\tlsuio, mpd, musepack, python-mad, python-serial, rsh-redone,\n\tsdparm, tidsp-binaries, vorbis-tools, wavpack, whetstone,\n\txl2tp, xmlstarlet\n\n\tRemoved packages: hotplug, l2tp, libfloat, microcom,\n\tng-spice-rework\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#267:  The make target: cross fails because toolchain_build_...\n\t#415:  Berkeley DB: mut_pthread.o: relocation R_X86_64_32 against...\n\t#561:  ltp-testsuite failed to install\n\t#1447: Installing gfortran on PowerPC\n\t#1651: Build fail caused by ccache in module-init-tools\n\t#1681: Cross-compiled binaries shouldn't be installed into staging\n\t#1723: [PATCH] axel: convert to generic package infrastructure and...\n\t#1735: [PATCH] mplayer: convert to autotools infrastructure\n\t#2551: [PATCH] native toolchain in the target filesystem fails\n\t#2623: buildroot-snapshot-20100922 fails when compiling development...\n\t#2647: makedevs package lacks support for 16-bit major/minor numbers\n\t#2371: QT MYSQL Module does not build when MySQL installed on the host\n\t#2839: compile fails in various packages with a odd message \"error:...\n\t#2887: tar \"buffer overflow detected\" error\n\t#2893: Broken \"make source\" with external toolchain\n\t#2905: Qt: Speed up compilation, if gui-module isn't selected\n\t#2929: genext2fs: couldn't allocate a block (no free space)\n\t#2935: Ntpdate isn't installed\n\t#2965: Broken linkage to xkbcomp (blocking X server startup)\n\t#2983: xlib_libX11 build failed\n\t#3007: kexec doesn't build: Missing regdef.h file\n\t#3085: Init scripts are not compatible with sysVinit (when busybox...\n\t#3103: make external-deps wants to download gcc-.tar.bz2 when...\n\t#3109: abnormal `make busybox-menuconfig`\n\t#3115: How about board specific makefiles?\n\t#3169: python patch has typo, aborts build in scenario\n\t#3181: dhcp.mk copies S80dhcp-server to etc/init.d, not etc/init.d/\n\n2010.11, Released November 30th, 2010:\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: libgcrypt, qt, squid, sysstat, tcpdump,\n\txserver-xorg\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#2773: squid with openssl support needs openssl on the host\n\t#2857: OBJDUMP definition is missing from TARGET_CONFIGURE_OPTS\n\n2010.11-rc2, Released November 25th, 2010:\n\n\tFixes all over the tree.\n\n\tAdd support for LEON Sparc architecture variants. Fix make\n\tsource/external-deps for host packages.\n\n\tUpdated/fixed packages: bash, bind, busybox, dialog, gpsd,\n\tlibglib2, libcurl, libmad, lrzsz, midori, module-init-tools,\n\tmtd-utils, openssh, openssl, pciutils, php, qt, sqlite,\n\tsysstat, webkit, zlib\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#759:  Sysstat build broken without libintl\n\t#2479: host-module-init-tools 3.11 fails to build\n\t#2725: Buildroot overrides kernel config\n\t#2785: mtd-utils build fails due to missing libmtd\n\t#2791: Added PHP-Process Control to the PHP-Package\n\t#2797: pciutils dependencies on zlib not taken into account\n\t#2809: failed to compile libglib2\n\t#2821: [PATCH] Patch for JavaScriptCore in QtWebKit module\n\t#2827: qt-4.7.0-pthread_getattr_np.patch invalid for qt 4.6...\n\t#2833: Failed to compile webkit without X11\n\n2010.11-rc1, Released November 8th, 2010:\n\n\tFixes all over the tree and new features.\n\n\tKconfig infrastructure rebased against 2.6.36-rc1, bringing\n\tmisc fixes + nconfig and savedefconfig targets.\n\n\tToolchain: ARM cortex A9 support, experimental crosstool-ng\n\tbackend, GCC 4.5.x.\n\n\tFs: Squashfs 4.1 with lzo support\n\n\tOld-style package hooks (*_HOOK_POST_*) removed. Use the more\n\tgeneric new-style ones instead.\n\n\tDownload handling reworked and support for git/svn downloads\n\tadded.\n\n\tRemoved experimental shared config.cache support, as it is\n\ttoo unreliable.\n\n\tA convenience Makefile wrapper is created when using\n\tout-of-tree building, similar to how it is done for the kernel.\n\n\tAlpha, Cris, IA64 and Sparc64 architecture support removed.\n\n\tNew packages: argp-standalone, gdk-pixbuf, gpsd, gst-ffmpeg,\n\tlibmpeg2, kbd, librsvg, nuttcp, rng-tools, rrdtool, xz\n\n\tUpdated/fixed packages: acpid, alsa-lib, argus, at, autoconf,\n\tautomake, avahi, axel, beecrypt, berkeleydb, bind, bmon, boa,\n\tbootutils, bridge-utils, bsdiff, busybox, cvs, dbus, directfb,\n\tdmraid, docker, dosfstools, dropbear, e2fsprogs, ethtool,\n\texpat, ezxml, fbset, fconfig, ffmpeg, freetype, gadgetfs-test,\n\tgamin, gawk, genext2fs, gperf, gst-plugins-base,\n\tgst-plugins-ugly, gtk2-themes, gtkperf, gvfs, haserl, hdparm,\n\thostapd, hwdata, ifplugd, imagemagick, iperf, ipsec-tools,\n\tiproute2, iptables, iw, jpeg, kexec, kismet, less, libcgi,\n\tlibcurl, libdaemon, libdnet, liberation, libevent, libeXosip2,\n\tlibglade, libgtk2, libiconv, libidn, libintl, libmms, libmpd,\n\tlibnl, liboil, libosip2, libpcap, libpng, libtool, libungif,\n\tlibxml2, libxslt, lighttpd, lite, lm-sensors, lockfile-progs,\n\tlogrotate, m4, matchbox, mdadm, mesa3d, metacity, mplayer,\n\tmtd-utils, mysql_client, nano, nbd, ncftp, neon, netperf,\n\tnetsnmp, ng-spice-rework, ntfsprogs, ntp, openntpd, openssh,\n\topenssl, openvpn, oprofile, pango, patch, pcre, php,\n\tpkg-config, portmap, pppd, pptp-linux, prboom, proftpd, radvd,\n\trdesktop, readline, rp-pppoe, ruby, qt, quagga, samba, sawman,\n\tsdl_mixer, sdl_sound, sed, setserial, shared-mime-info, slang,\n\tspeex, sqlite, squashfs, startup-notification, strace,\n\tsylpheed, sysstat, taglib, tcpdump, thttpd, tiff, tn5250,\n\ttorsmo, tslib, udev, udpcast, usbmount, usbutils, vsftpd,\n\tvtun, which, wireless-tools, wpa_supplicant, xapp_twm,\n\txapp_xbacklight, xapp_xcursorgen, xapp_xinit, xapp_xinput,\n\txapp_xmore,\n\txdriver_xf86-input-{acecad,aiptek,evdev,joystick,keyboard},\n\txdriver-xf86-input-{mouse,synaptics,vmmouse,void},\n\txdriver-xf86-video-{apm,ark,ast,ati,chips,cirrus,dummy,fbdev},\n\txdriver-xf86-video-{geode,glide,glint,i128,i740,intel,mach64},\n\txdriver-xf86-video-{mga,neomagic,newport,nv,openchrome,r128},\n\txdriver-xf86-video-{rendition,s3,s3virge,savage,siliconmotion},\n\txdriver-xf86-video-{sis,sisusb,suncg3,suncg6,suncg14,sunffb},\n\txdriver-xf86-video-{sunleo,suntcx,tdfx,tga,trident,v4l,vesa},\n\txdriver-xf86-video-{vmware,voodeo,wsfb,xgi,xgixp},\n\txkeyboard-config, xlib_libX11, xserver_xorg-server, xstroke,\n\txterm, xvkbd, zlib\n\n\tDeprecated packages: hotplug, lzma, ng-spice-rework, sfdisk\n\n\tRemoved packages: dillo, libglib12, libgtk12, microwin,\n\tpcmcia\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#901:  new package: gpsd\n\t#2389: Generate a Makefile wrapper in $(O)\n\t#2461: wireless_tools: install shared library if needed\n\t#2521: Can't compile sdl_mixer, mikmod.h can't be found\n\t#2533: xserver_xorg-server: Enable glx, if mesa3d is built\n\t#2563: [PATCH] cairo: Expose the configure option to disable some...\n\t#2581: libmms: Update to 0.6, and patch to work on architectures...\n\t#2707: Can't compile linux kernel using buildroot + crosstool-ng\n\t#2731: Build order\n\t#2737: buildroot configuration tool crashing when the path exceeds...\n\t#2767: Build for lsof broken in buildroot-2010.08\n\n2010.08: Released August 31th, 2010:\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: atk, xstroke\n\n\tRemoved packages: lxdoom\n\n2010.08-rc2, Released August 30th, 2010:\n\n\tFixes all over the tree.\n\n\tMark the combination of uClibc 0.9.31, gcc 4.2.x, C++ and\n\tlocale support as broken. Remove deprecated GCC 4.2.[1-3]\n\tversions.\n\n\tMark CRIS architecture as deprecated, as it is discontinued\n\tupstream.\n\n\tMarked shared config.cache as experimental and disabled by\n\tdefault as it is known to break with certain package\n\tcombinations.\n\n\tToolchain: fixed gcc 4.2.x build after uClibc NPTL support got\n\tadded.\n\n\tfs: old-style squashfs for big endian archs fixed.\n\n\tUpdated/fixed packages: busybox, gst-plugins-base,\n\timagemagick, kismet, libgail, libglib2, libgtk2, lua,\n\tluafilesystem, lzo, ncurses, netcat, pango, php, pppd,\n\tproftpd, qt, samba, startup-notification, swfdec, sysvinit,\n\tutil-linux\n\n\tRemoved packages: stunnel\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#635:  util-linux fails to build in 2009.08\n\t#2239: netcat package installs its binary to target as avr32-linux...\n\t#2395: libglib2-2.24.1 and libxml2-2.7.7 fails build on MIPS because...\n\t#2443: Initramfs: Don't overwrite $(TARGET_DIR)/init if it exists\n\t#2449: Minor fixes for squashfs makefile and correct PowerPC e500 ...\n\n2010.08-rc1, Released July 30th, 2010:\n\n\tFixes all over the tree and new features.\n\n\tToolchain: GCC 4.3.5, older 4.3.x versions removed. GCC 4.1.2\n\tand non-sysroot support removed. Added support for (snapshot)\n\tNPTL in uClibc, 0.9.28.3 removed,\n\n\tBootloaders: Various cleanups, moved to boot/, added Barebox,\n\tremoved yaboot. Support building u-boot from custom tarball,\n\tu-boot 2010.06.\n\n\tNew GTK-based configurator, usable using 'make gconfig'.\n\n\tJava packages marked as broken. Unless someone steps up to\n\tsupport this, they will be removed during the 2010.11\n\tdevelopment cycle.\n\n\tAlpha, IA64 and Sparc64 architectures marked as deprecated.\n\tGTK+ on DirectFB has also been marked as deprecated, as it is\n\tnot supported in recent GTK+ versions, and more and more\n\tpackages depends on the new versions.\n\tUnless someone steps up to support them, they will be removed\n\tduring the 2010.11 development cycle.\n\n\tNew packages: cgilua, copas, coxpcall, ffmpeg, libsvgtiny,\n\tlibgail, luafilesystem, luasocket, rings, wsapi, xavante, xterm\n\n\tUpdated/fixed packages: alsa-lib, alsamixergui, at, atk,\n\tavahi, berkeleydb, bash, blackbox, busybox, bzip2, cairo,\n\tcdrkit, cmake, dash, dhcp, dialog, diffutils, distcc, dmalloc,\n\tdnsmasq, dropbear, e2fsprogs, fbv, file, flex, fontconfig,\n\tgawk, gmpc, gnuchess, gst-plugins-base, gst-plugins-good,\n\tgstreamer, gzip, icu, intltool, iostat, ipsec-tools, iptables,\n\tiw, libart, libcgi, libcurl, libdrm, libeXosip, libfuse,\n\tlibglib2, libgpg-error, libiconv, libidn, liblockfile, libpng,\n\tlibsoup, lighttpd, links, linux-fusion, lmbench, lrzsz,\n\tltrace, make, midori, module-init-tools, mplayer,\n\tmysql_client, nbd, ncurses, neon, netcat, netperf, netsnmp,\n\tntfsprogs, openssl, oprofile, pango, php, qt, quagga, samba,\n\tsetserial, sdl, sdl_mixer, sdl_sound, sdl_ttf, speech-tools,\n\tsqlite, squashfs, swfdec, tftpd, thttpd, tn5250, tremor,\n\tusbutils, webif, webkit, wireless_tools, xerces,\n\txkeyboard-config, xserver_xorg-server, xvkbd, zlib\n\n\tRemoved packages: modutils, portage, rxvt\n\n\tDeprecated packages: dillo, libglib12, libgtk12, microwin, pcmcia\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#321:  alsa-lib uses host include files for python which breaks ...\n\t#361:  linux kernel configuration choice works incorrectly\n\t#387:  Tremor not installed to toolchain\n\t#401:  new package: ffmpeg\n\t#475:  uImage target for U-boot failed generating\n\t#543:  ATK requires X11 on DirectFB target\n\t#575:  webkit: Buildroot Libtool Patch Fails\n\t#583:  build fails with external x86_64 toolchain\n\t#729:  sstrip creates corrupted headers\n\t#829:  Webkit r44552 needs libXt\n\t#835:  Package Dataflashboot-1.05 does not compile with buildroot...\n\t#847:  Compiling target-gcc v4.4 fails with \"libc.so.0: cannot open...\n\t#859:  Add (head of) nptl branch to list of uClibc versions\n\t#949:  compile with debug info\n\t#955:  Grub fails to build with External Toolchain\n\t#1051: Webkit doesn't compile (Linuxthreads new, x86)\n\t#1213: Move .config into output directory\n\t#1225: Buildroot fails to account for \"nof\" subdirectory (no float...\n\t#1231: (sparc) Linux kernel fails to build\n\t#1261: The getline() in output/build/linux-2.6.28/scripts/unifdef.c...\n\t#1339: Busybox needs -fno-strict-aliasing to compile cleanly\n\t#1393: neon config fails libxml/parser.h: libxml2 requires, but not ...\n\t#1405: WebKit fails to build because pthread_getattr_np is not impl...\n\t#1675: GMP Error during buildroot make process\n\t#1741: external toolchain linking error\n\t#1753: lmbench: convert to generic package infrastructure\n\t#1771: Fakeroot and the target/generic/device_table.txt create bad...\n\t#1807: LZMA 4.32.7, Required header file(s) are missing\n\t#1813: xkeyboard-config fails to build because of intltool problem\n\t#1879: Bump iptables to 1.4.8\n\t#1885: Add a bunch of lua modules\n\t#1897: Bump libusb to 1.0.7\n\t#1903: Bump tn5250 to 0.17.4 and migrate to autotargets\n\t#1909: netperf-2.4.5 fails to build because of undeclared SOCK_DCCP\n\t#1927: Bump file to 5.03 and migrate to autotargets\n\t#1933: Bump gawk to 3.1.8 and migrate to autotargets\n\t#1945: PHP: add sqlite3 dependency when using external lib\n\t#1951: Bump openssl to 0.9.8o\n\t#1957: Bump sqlite to 3.6.23.1\n\t#1975: Package removal/deprecation\n\t#1981: zlib: bump to 1.2.5\n\t#1987: intltool: Fix spelling mistake\n\t#1993: Bump bash to 4.1.7(1) and migrate to autotargets\n\t#1999: Typo in path checking\n\t#2005: Bump dnsmasq to 2.55 and migrate to gentargets\n\t#2035: ipsec-tools-0.7.2 fails to build with gcc-4.4.x\n\t#2038: Bump ncurses to 5.7\n\t#2095: make gconfig: undefined reference to symbol 'dlsym@@GLIBC_2.2.5'\n\t#2101: blackbox depends on locale support\n\t#2119: Tries to build kernel, although disabled in config\n\t#2125: libXfont build fail\n\t#2143: buildroot compiler generates segfaulting statically linked exe..\n\t#2149: xterm build failure\n\t#2155: Compression lzo don't set for ubifs\n\t#2161: [SECURITY] Update libpng to 1.2.44\n\t#2167: Bump busybox to 1.17.0, convert to gentargets, drop 1.12, ...\n\t#2181: pixman can't apply pixman-0.10.0-no-tests.patch\n\t#2191: linux-fusion build fail\n\t#2221: Qt does not compile (dependencies not taken into account?)\n\t#2233: Atmel atstk target skeletons have /etc/mtab as a file, not ...\n\t#2245: Netcat does not work due to incorrect assumptions about signed..\n\t#2251: directory output/build after make *_defconfig not found\n\t#2257: Convert netsnmp package to autotargets\n\t#2263: Bump samba to 3.3.13\n\t#2269: setserial causes make error\n\n2010.05, Released May 30th, 2010:\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: coreutils, hal, libcap,\n\tlockfile-progs, ncftp, xserver_xorg-server\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#1789: binutils fails to build for i386\n\t#1843: Fix libcap build failure\n\t#1855: XORG Keyboard driver fails to compile\n\n2010.05-rc3, Released May 27th, 2010:\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: aumix, atk, avahi, bmon, busybox, cairo,\n\tcdrkit, dbus-glib, dbus-python, docker, enchant, fltk, gamin,\n\tgettext, gmpc, gob2, grep, gstreamer, gst-plugins-bad,\n\tgst-plugins-base, gvfs, hal, iconv, icu, iperf, libcgicc,\n\tlibdvdnav, libdvdread, libglade, libglib2, libgtk2, libidn,\n\tlibmms, libmpd, libpcap, libsoup, lmbench, lsof, ltrace, lvm2,\n\tmake, metacity, microperl, mtd-utils, mutt, nbd, netsnmp,\n\tntfsprogs, ntp, olsr, pango, pciutils, pcmanfm, php,\n\tpkg-config, psmisc, qt, samba, shared-mime-info, squashfs,\n\tsquashfs3, sshfs, startup-notification, swfdec, sylpheed,\n\tuemacs, util-linux, valgrind, vpnc, vsftpd, webkit, xstroke\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#75: arm buildroot \"unrecognized option\" error\n\t#699: Buildroot fails to copy libstdc++ to target when using external...\n\t#1693: NTP trys IPV6 even if not configured error: 'IPV6_MULTICAST...\n\t#1729: alsamixergui fails to build\n\t#1801: Avahi-autoipd doesn't create TARGET_DIR/var/lib\n\t#1819: pciutils small bugs\n\t#2065: Internal toolchain: bump gcc 4.3.x series to 4.3.5\n\n2010.05-rc2, Released May 11th, 2010:\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: busybox, customize, gawk, gnuchess,\n\thal, hostapd, less, libgcrypt, libnl, libxcb, linux-fusion,\n\tltp-testsuite, mplayer, netplug, pciutils, php, sed,\n\tshared-mime-info usb_modeswitch, usbutils, vlc wpa_supplicant,\n\txapp_bdftopcf, xapp_mkfontdir, xdriver_xf86-video-openchrome,\n\txfont_encodings, xlib_libX11, xlib_libXfont, xlib_xtrans,\n\txproto_fontcacheproto, xproto_fontsproto, xvkbd\n\n\tRemoved packages: vice\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#849: \"customize\" package copies files to wrong place in target tree\n\t#985: Bump usb_modeswitch package to 1.1.0\n\t#1135: Package customize. Wrong copying\n\t#1525: Package hal deletes a whole <target>/etc/rc.d directory\n\t#1531: libxcb 1.5 build fails, due to missing xcbgen Python module\n\t#1669: Busybox failed to compile when using an external toolchain\n\t#1699: Fix usbutils dependencies and bump\n\t#1705: Fix pciutils broken cross compiling\n\t#1717: External toolchain fixes for hostapd & wpa_supplicant\n\n2010.05-rc1, Released May 3rd, 2010:\n\n\tCleaned up / restructured package menu.\n\n\tToolchain: uClibc 0.9.30.3 / 0.9.31, older 0.9.30.x removed.\n\t2.6.33 kernel headers, binutils 2.20.1, GCC 4.4.4,\n\tremoved broken nios2 support, ppc e300cX/e500mc support,\n\timproved external toolchain support, GDB 7.x support.\n\n\tX.org updated to 7.5.\n\n\tNew packages: cdrkit, cramfs, genext2fs, genromfs,\n\tlibatomic_ops, librsync, libusb-compat, lmbench, netperf,\n\tsquashfs, squashfs3, squid\n\n\tUpdated/fixed packages: alsa-utils, argus, autoconf, bison,\n\tbusybox, bzip2, directfb, dnsmasq, dosfstools, e2fsprogs,\n\teeprog, fakeroot, fbv, findutils, freetype, haserl, hostapd,\n\tiperf, iptables, iw, less, libaio, libcgi, libcgicc, libdrm,\n\tlibgcrypt, libglib2, libid3tag, libmad, liboil, libosip2,\n\tlibpng, libraw1394, libsysfs, libxml2, libxslt, linux-fusion,\n\tltrace, lua, lzma, madplay, makedevs, matchbox, mdadm,\n\tmemstat, mesa3d, mtd-utils, nano, ncurses, openssl, patch,\n\tpciutils, php, pixman, portage, pppd, pthread-stubs, python,\n\tqt, radvd, samba, setserial, smartmontools, tar, tslib,\n\tudpcast, usb_modeswith, vtun, wget, xdata_xcursor-themes,\n\txdriver_xf86-video-intel, xkeyboard-config, xlib_libX11,\n\txlib_libXaw, xlib_libXfont, xlib_libXfontcache,\n\txlib_libXxf86misc, xlib_libXtst, xlib_libpciaccess,\n\txproto_dri2proto, xproto_eviext, xproto_fontcacheproto,\n\txproto_xf86miscproto, xserver_xorg-server\n\n\tRemoved packages: xapp_xtrap, xlib_libXTrap, xlib_libXevie,\n\txlib_libXxf86misc, xxproto_evieext, proto_trapproto,\n\txproto_xf86miscproto\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#513: Add new squid package\n\t#661: lmbench: new package\n\t#719: Add lua option to haserl\n\t#800: [PATCH] iperf update to 2.0.4\n\t#803: [PATCH] lua - add shared library patch and config option for...\n\t#805: [PATCH] mdadm - version update\n\t#817: integrator926_defconfig uses unsupported uboot board name\n\t#851: Add option to specify --sysroot value for external toolchain\n\t#1093: Upgrade libusb to v1.0.3 and add new libusb-compat\n               package for compatibility with old packages that expect\n               the pre-1.0 API.\n\t#1105: Add new netperf package\n\t#1111: Bump wget to 1.12 and migrate to Makefile.autotools.in\n\t#1117: Bump nano to 2.2.3 and migrate to Makefile.autotools.in\n\t#1123: Bump less to 436 and migrate to Makefile.autotools.in\n\t#1129: Bump memstat to 0.8 and migrate to Makefile.package.in\n\t#1189: Wrong u-boot configuration name for integrator926 target\n\t#1219: kernel headers not correctly installed into toolchain/staging\n\t#1267: Wrong BR2_EXTRA_VERSION\n\t#1273: BR2_INET_IPV6 does not enable IPv6 in pppd\n\t#1303: Add librsync package\n\t#1321: Busybox link fails due to lack of --sysroot option\n\t#1327: mtd-utils compile failure due to lack of --sysroot in CFLAGS\n\t#1345: Bump pppd to 2.4.5 and convert to Makefile.autotools.in\n\t#1369: cannot build radvd (flex problem)\n\t#1387: xlib_libX11-1.3.2 can't find libjpeg\n\t#1411: [SECURITY] Update openssl package to 0.9.8n\n\t#1417: Bump iptables to 1.4.7\n\t#1423: Bump e2fsprogs to 1.41.11\n\t#1429: [SECURITY] Update php to 5.2.13\n\t#1441: Add binutils 2.20.1\n\t#1447: Package installation on target with debug symbols is broken\n\t#1459: Misc QA fixes\n\t#1489: radvd update to 1.6\n\t#1513: Enable powerpc e300c2, e300c3 and e500mc optimization\n\t#1537: dev entries not created anymore\n\t#1555: Fix default uclibc-0.9.31 configuration\n\t#1561: [SECURITY] Update samba to 3.3.12\n\t#1567: openssl0.9.8n fails to compile\n\t#1573: Alsa-utils alsactl/init/* not installed to target\n\t#1591: portmap fails to compile\n\t#1615: Convert eeprog package to gentargets\n\t#1645: Bump hostapd package to 0.7.2\n\n2010.02, Release February 26th, 2010:\n\n\tFixes all over the tree.\n\n\tUpdated/fixed packages: avahi, busybox, cramfs, ipsec-tools, libcgicc,\n\tlibgtk2, libraw1394, madplay, netsnmp, pango, squashfs, sylpheed, qt,\n\txfont_font-util\n\n\tRemoved packages: hostap, openmotif, xpdf\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#165: openmotif does not build\n\t#1147: Remove obsolete hostap package\n\t#1183: make source fails to download gmp, mpfr and patches\n\n2010.02-rc2, Released February 23th, 2010:\n\n\tFixes all over the tree and new features.\n\n\tNew packages: intltool\n\n\tUpdated/fixed packages: ace_of_penguins, alsa-lib, alsa-utils, argus,\n\tat, automake, ccache, dosfstools, e2fsprogs, flex, gob2, gmpc,\n\tgst-plugins-good, imagemagick, iw, kexec, libeXosip, libgtk2,\n\tlibpcap, libpng, libsoup, libxcb, libxml-parser-perl, libxml2,\n\tlibxslt, lvm2, matchbox, mplayer, rsync, rubix, shared-mime-info,\n\ttcl, webkit, xapp_mkfontscale, xfont_encodings, xfont_font-util,\n\txlib_libfontenc, xproto_trapproto, zlib\n\n\tRemoved package: xboard\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#335: atk looks for the path to the gnome library on the host\n\t#355: Please update WebKit - it doesn't compile!\n\t#453: libglib2 autoreconf\n\t#457: e2fsprogs link problem\n\t#459: libgtk2 autoreconf\n\t#469: build of libgtk2 for host incorrectly assumes that X.org ...\n\t#671: Bash fails to build when building buildront on Ubuntu 9.04\n\t#711: WebKit host dependencies problems\n\t#821: cp: illegal operation\n\t#1039: Not compiled on ubuntu karmic\n\t#1069: [PATCH] The AT91BOOTSTRAP makefile contains a typo\n\n2010.02-rc1, Released February 9th, 2010:\n\n\tFixes all over the tree and new features.\n\n\tGeneralized autotools infrastructure to be usable for\n\tnon-autotools packages, see package/Makefile.package.in for\n\tdetails.\n\n\tCleaned up avr32 toolchain config, external source-based\n\ttoolchain support is gone.\n\n\tDependency checks: Also check for makeinfo, only print output\n\ton errors.\n\n\tToolchain: uClibc 0.9.30.2, gcc 4.4.3\n\n\tNew packages: libcdaudio, libdvdnav, libdvdread, hostapd, ser2net,\n\ttcpreplay\n\n\tUpdated/fixed packages: alsa-lib, alsa-utils, at, autoconf, bash,\n\tbind, binutils, bootutils, busybox, dbus, directfb, dnsmasq,\n\te2fsprogs, gstreamer, gperf, gst-plugins-bad, gvfs, fbdump, flex,\n\thal, iptables, iw, jpeg, kismet, libfuse, libglib2, liboil, libpcap,\n\tlibungif, libxml2, libxslt, lighttpd, mesa, mpg123, mtd-utils, nbd,\n\tneon, netstat-nat, newt, openvpn, pcre, php, qt, rdesktop, readline,\n\trpm, sawman, sdl, sdl_ttf, sqlite, sshfs, tremor, u-boot,\n\tusb_modeswitch, usbutils, webkit, wpa_supplicant, xfsprogs, zlib\n\n\tRemoved package: asterisk, openswan\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#515: tcpreplay: new package\n\t#553: Wrong DirectFB ps2mouse limitation\n\t#559: mesa3d build fails\n\t#679: Autoconf cannot find M4\n\t#739: New/updated hostapd package\n\t#749: Bump usbutils package to version 0.86\n\t#751: Kernel 2.6 snapshot fetch fail\n\t#753: Bump lighttpd package to 1.4.25\n\t#757: U-Boot: mkimage cannot be installed using external toolchain\n\t#761: Add binutils 2.20 to toolchain options\n\t#763: [SECURITY] Update pcre to 7.9\n\t#765: Add buildroot branding to gcc\n\t#767: Bump iw package to 0.9.18\n\t#773: [SECURITY] Update bind to 9.5.2-P1\n\t#795: Minor edits to fix typos, grammar, spelling, usage in documen...\n\t#813: Drop not very useful generic package selection options ...\n\t#823: Editor backup files (~) is copied from the target_skeleton\n\t#827: Bump mtd-utils package to version 1.2.0\n\t#841: Build error\n\t#913: Bump iptables to 1.4.6\n\t#919: Bump usb_modeswitch package to 1.0.7\n\t#925: Bump wpa_supplicant package to 0.6.10\n\t#931: Bump kismet package to 2010-01-R1\n\t#937: Bump openvpn package to 2.1.1\n\t#943: Bump sqlite package to 3.6.22\n\t#961: Bump dnsmasq to 2.52\n\t#967: Bump netstat-nat to 1.4.10\n\t#973: Bump iw to 0.9.19\n\t#1003: DHCP options disabled with busybox-1.16.0\n\t#1009: [SECURITY] Bump php to 5.2.12\n\t#1015: [SECURITY] Bump bind to 9.5.1-P2\n\t#1027: Busybox flash commands conflict with those from mtd-utils\n\t#1063: [SECURITY] Update lighttpd to 1.4.26\n\n2009.11, Released December 1st, 2009:\n\n\tAdditional fixes and cleanups.\n\n\tUpdated/fixed packages: alsamixergui, autoconf, coreutils, fltk,\n\tmicroperl, ncurses, vim\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#707: Cant configure fltk-1.1.7. configure: error: Configure could ...\n\n2009.11-rc2, Released November 29th, 2009:\n\n\tAdditional fixes and cleanups.\n\n\tUpdated/fixed packages: busybox, dbus, fltk, gvfs, ltrace\n\n2009.11-rc1, Released November 23rd, 2009:\n\n\tFixes all over the tree and new features.\n\n\tCleaned up / Simplified build directory layout. Refer to\n\tdocs/buildroot.html#using for details.\n\n\tTarget defconfig files moved to configs/ and listed in 'make help'\n\toutput.\n\n\tFixed *clean targets. Now clean removes everything generated,\n\tso you can do a fresh rebuild. Distclean furthermore removes\n\tkbuild tools and .config, bringing the source tree back in a\n\tpristine state.\n\n\tToolchain: ARM cortex A8 support, GCC 4.4.2, sensible default\n\tsoft / hardfloat setting for architecture, ensure target-ldd\n\tgets installed.\n\n\tNew packages: divine, gvfs, libarchive, libmicrohttpd,\n\tsdl_sound, swfdec, sysstat\n\n\tUpdated/fixed packages: alsa-lib, alsamixergui, autoconf, bootutils,\n\tbusybox, gcc, directfb, dnsmasq, e2fsprogs, festival, gamin, gperf,\n\tgqview, gstreamer, gst-plugins-bad, gst-plugins-base, gst-plugins-good,\n\timagemagick, ipkg, iptables, iw, kernel-headers, kismet, leafpad,\n\tlibelf, libevent, libglib2, libidn, liblockfile, libmad, libpcap,\n\tlibupnp, libuuid, libxml2, lighttpd, ltrace, lua, lzma, magiccube4d,\n\tmatchbox, mdadm, nbd, ncftp, ncurses, netkittelnet, netsnmp,\n\tng-spice-rework, ntfs-3g, openntp, openssl, pcmanfm, php, psmisc,\n\tpython, quagga, radvd, rpm, rsync, rubix, samba, sawman, sdl, sdl_image,\n\tshared-mime-info, sfdisk, spawn-fcgi, speech-tools, sqlite, squashfs,\n\tsynergy, syslinux, sysklogd, target-binutils, tcpdump, torsmo, u-boot,\n\tudpcast, util-linux, valgrind, vsftpd, wipe, wpa-supplicant, x11vnc,\n\txdata_xcursor-themes, xboard, xfsprogs, xstroke, zlib[5~\n\n\tRemoved package: mdnsresponder, mpatrol, gcc 3.4.6 + 4.0.4, vice\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#301: allow to install libsmbclient\n\t#303: add gvfs package\n\t#477: Add sdl_sound package\n\t#487: Make kismet package sexier\n\t#511: New package usb_modeswitch\n\t#527: misc fixes for dnsmasq package\n\t#565: libevent: Bump version and clean up makefile\n\t#587: Use iptables multipurpose binaries and bump to 1.4.4\n\t#593: Missing early check for patch(1)\n\t#597: (REOP)  Selecting busybox in buildroot's config clobbers ar ...\n\t#609: libmicrohttpd: New package\n\t#615: python: Don't delete .py files unless asked\n\t#617: netkit/inetd requires RPC and fails to build if RPC is disabled\n\t#619: netkittelnet requires netkitbase to install, but there's no ...\n\t#645: allow to build nbd-server with NBD package\n\t#653: [SECURITY] Update php package to version 5.2.11\n\t#655: Update sqlite package to version 3.6.18\n\t#657: Bug in imagemagick-clean target\n\t#663: Add option for NAND flash with 512B Page and 16 kB erasesize ...\n\t#665: [PATCH] Samba package\n\t#667: [PATCH] e2fsprogs\n\t#683: SDL-dfb does not select directfb\n\t#701: make install problem with unstripped binaries\n\t#703: [SECURITY] Update openssl package to 0.9.8l\n\t#705: Bump spawn-fcgi package to 1.6.3\n\t#709: Bump lighttpd package to 1.4.24\n\t#713: Migrate openntpd package to Makefile.autotools.in\n\t#715: Bump libidn package to 1.15 and other fixes\n\t#717: Bump dnsmasq to 2.51 and introduce new IDN option\n\t#731: Bump iw package to 0.9.17\n\n2009.08, Released August 31th, 2009:\n\n\tAdditional fixes and cleanups.\n\n\tUpdated/fixed packages: ctorrent, saveconfig/getconfig,\n\tsdl_net, util-linux.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#529: util-linux doesn't find headers and include libs correctly\n\t#557: Build ctorrent with SSL support if available\n\n2009.08-rc3, Released August 26th, 2009:\n\n\tAdditional fixes and cleanups.\n\n\tUpdated/fixed packages: alsa-utils, berkeleydb, busybox, dbus,\n\tdirectfb, enchant, kernel headers.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#471: Allow directfb compilation with debug\n\t#541: Removal of CVS directories in target filesystem broken\n\t#547: berkeleydb: Update config.{sub, guess}\n\t#549: enchant: Fix dependencies.\n\t#569: Fix alsa-utils build for x86 on x86-64\n\n2009.08-rc2, Released August 6th, 2009:\n\n\tAdditional fixes and new features.\n\n\tNew packages: libuuid, gcc 4.3.4.\n\n\tUpdated/fixed packages: busybox, classpath, gzip, ipsec-tools,\n\tjamvm, libusb, microperl, neon, popt, sed, webkit.\n\n\tFixed issue with 'make oldconfig'\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#525: sed broken with external toolchain\n\t#537: Fix gzip build with recent glibc\n\n2009.08-rc1, Released August 2nd, 2009:\n\n\tFixes all over the tree and new features.\n\n\tImprovement of external toolchain support:\n\t  - Support for glibc toolchains.\n\t  - The toolchain configuration announced to Buildroot is\n\t    verified against the real toolchain configuration.\n\t  - Fixes, documentation.\n\n\tCleanup X.org support: clarified configuration options, and\n\tremoved mandatory dependency on useless libraries such as\n\tlibXt or libXaw.\n\n\tNew QT-based configurator, usable using 'make xconfig'.\n\n\tSupport for the Xtensa architecture.\n\n\tToolchain: GCC 4.4.1, 2.6.30 kernel headers, removed < 2.6.26\n\theaders.\n\n\tNew packages: bmon, ctorrent, dosfstools, enchant,\n\tgst-plugins-bad, iw, libmms, libnl, netstat-nat, ntfsprogs,\n\tsdl_gfx, spawn-fcgi.\n\n\tUpdated packages: bind, busybox, coreutils, sqlite, directfb,\n\texpat, gamin, gnuconfig, haserl, ipsec-tools, classpath,\n\tlibcurl, libglib2, liblockfile, libpng, libsoup, libxml2,\n\tlighttpd, ltp-testsuite, lvm2, matchbox, memstat,\n\tgst-plugins-good, gstreamer, libogg, libvorbis, mplayer,\n\tneon, openssl, pciutils, php, qt, ruby, sawman, webkit,\n\twpa-supplicant, xdriver_xf86-input-synaptics,\n\txdriver_xf86-video-intel, xlib_libXfont, xlib_libXft,\n\txlib_libXt, xproto_xproto, xserver-xorg, xutil_makedepend,\n\txutil_util-macros.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#83: liblockfile fails to compile due to eaccess redefinition\n\t#163: Xtensa architecture port\n\t#171: xorg-server / kernel headers 2.6.26 - vm86.c compilation issue\n\t#241: device mapper + lvm2: build together\n\t#243: ctorrent: new package\n\t#247: ntfsprogs: new package\n\t#271: Library 'libgcc_s.so.1' not installed in search path\n\t#287: New package libnl\n\t#289: New package iw\n\t#331: Update MPlayer to version 1.0rc2\n\t#333: Bump sqlite package to 3.6.15\n\t#349: update libsoup to version 2.26.2\n\t#357: New package netstat-nat\n\t#359,#413: Upgrade openvpn to Makefile.autotools.in\n\t#367: linux kernel compile error for arm926t\n\t#369: Add SDL_gfx package\n\t#373: Support for building gstreamer without libxml\n\t#379: update DirectFB to version 1.4.0\n\t#383: gst-plugins-good: Allow soup plugin to be configured\n\t#385: neon: Fix pkgconfig dependency\n\t#387: Tremor not installed to toolchain\n\t#389: New package bmon\n\t#391: gstreamer: Bump version to 0.10.23\n\t#393: gst-plugins-base: Bump version to 0.10.23\n\t#395: gst-plugins-bad: New package\n\t#403: Error while building iso9660 image\n\t#409: Bump php package to 5.2.10\n\t#411: ipsec-tools: Bump version to 0.7.2\n\t#417: New package spawn-fcgi\n\t#419: Bump lighttpd package to 1.4.23\n\t#421: toolchain: Clean up toolchain locale support menu\n\t#427: webkit: Update to WebKit svn r44552\n\t#437: ltp-testsuite: Bump version to 20090630\n\t#451: Upgrade from unmaintained dosfstools-2.11 to dosfstools-3.0.3\n\t#467: DirectFB 1.4.1\n\t#473: memstat_0.5.tar.gz has install with -D and that fails \"make\"\n\t#491: libxml2: Bump version to 0.7.3\n\t#495: Bump bind package to 9.5.1-P3 (security)\n\t#497: OpenSSL RSA key generation hangs on x86_64\n\t#509: Bump sqlite package to 3.6.16\n\t#523: pciutils broken with external toolchain\n\t#533: Update gamin to 0.1.10 to fix compilation\n\n2009.05, Released June 1st, 2009:\n\n\tFixes for dropbear & diffutils, bump linux-advanced 2.6.29.x\n\tversion and marked ubifsroot as broken.\n\n2009.05-rc3, Released May 27th, 2009:\n\n\tFixes for toolchain (gcc arm pr37436), stable kernel versions,\n\tbusybox, curl, libusb, readline, python and strace.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#345: libcurl package needs a urandom fix\n\n2009.05-rc2, Released May 19th, 2009:\n\n\tFixes for toolchain (gcc w/softfloat on ppc, 3.4.6 buildfix\n\tfor newer hosts), stable kernel versions, busybox, cups,\n\tdmraid, docker, mesa3d, rsync and updated defconfigs.\n\n\txserver marked as broken on AVR32 and atngw100-expanded\n\tconfig removed.\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#167: metacity does not build\n\t#295: gamin installs python support even if python is disabled\n\t#323: gen_matypes fails to execute during build of Mesa when us...\n\n2009.05-rc1, Released May 5th, 2009:\n\n\tFixes all over the tree, further conversion of packages to\n\tMakefile.autotools.in and we now build host versions of\n\tpackages where needed for build time dependencies instead of\n\trelying on the correct versions being available on the build\n\thost. Ancient toolchain / busybox versions have furthermore\n\tbeen removed as announced in the 2009.02 release notes.\n\n\tNew packages: flac, gob2, lzop, taglib, wpa_supplicant\n\n\tUpdated packages: avahi, bind, binutils, busybox, dbus, dbus-glib,\n\tdirectfb, dnsmasq, freetype, gcc, gmp, gstreamer, iptables, kernel\n\theaders, kexec, libglib2, libpng, libsndfile, lua, mpfr, ntfs-3g,\n\topenssl, php, qtopia4, rsync, samba, sqlite, tar, uboot, uclibc,\n\tutil-linux, xorg7, xerces\n\n\tIssues resolved (http://bugs.uclibc.org):\n\n\t#5,#77,#141,#143: Convert php package to Makefile.autotools.in\n         and a ton of other improvements\n\t#19: page.h missing by util-linux\n\t#37: update libglib2 to version 2.18.4\n\t#61: tslib puts staging_dir into pkgconfig file\n\t#69: tar refuses to build\n\t#71,#175: ./wchar.h:41:12: error: empty filename in #include\n\t#73: Bump openssl package to the latest version\n\t#81: New package wpa_supplicant\n\t#99: new package: flac\n\t#101: update gstreamer packages\n\t#105,#313: menuconfig segfaults on tinyx if wchar is not\n         selected\n\t#107: convert libvorbis to Makefile.autotools.in\n\t#109: Make pppd package avoid bsd err\n\t#111: binutils 2.17 fails to build when texinfo >= 4.10\n\t#133: Modify ncurses5-config to get correct include path\n\t#137: Bump php to version 5.2.9\n\t#139: Bump sqlite to 3.6.11 and convert to\n         Makefile.autotools.in\n\t#145: Bump bind package to 9.5.1-P1 (security)\n\t#147: buildroot toolchain fails to build w/binutils-2.19.1\n\t#151: openssl package trivial fixes\n\t#161: vim fails on patching with errors in configure.patch\n\t#169: blackbox-0.70.1 does not build\n\t#177: xdriver_xf86-input-keyboard does not build\n\t#179: Upgrade dropbear to Makefile.autotools.in\n\t#181: Update to Xorg 7.4\n\t#187: ntfs-3g: could not build cross\n\t#191: alsa-lib ARM binaries always built with EABI\n\t#213: Bump wpa_supplicant package to version 0.6.9\n\t#217: Bump openssl package to 0.9.8k (security)\n\t#219: Toolchain build fails on m4\n\t#225: m4 macros are out of place\n\t#233: make ipv6 optional in iptables\n\t#237: ncftp: convert to Makefile.autotools.in\n\t#239: ntfs-3g: convert to Makefile.autotools.in\n\t#245: lzop: new package\n\t#271: Bump bind package to 9.5.1-P2 (security)\n\t#277: Bump sqlite package to 3.6.16\n\t#279: update libglib2 to version 2.20.1\n\t#281: update DirectFB to version 1.2.8\n\t#283: add taglib\n\t#285: compilation of samba fails if IPV6 support is missing\n\t#293: update samba to version 3.3.3\n\t#299: add shared-mime-info package\n\t#307: make openssl package respect build flags\n"
  },
  {
    "path": "COPYING",
    "content": "With the exceptions below, Buildroot is distributed under the terms of\nthe GNU General Public License, reproduced below; either version 2 of\nthe License, or (at your option) any later version.\n\nSome files in Buildroot contain a different license statement. Those\nfiles are licensed under the license contained in the file itself.\n\nBuildroot also bundles patch files, which are applied to the sources\nof the various packages. Those patches are not covered by the license\nof Buildroot. Instead, they are covered by the license of the software\nto which the patches are applied. When said software is available\nunder multiple licenses, the Buildroot patches are only provided under\nthe publicly accessible licenses.\n\n-----------------------------------------------------------------\n\n\t\t    GNU GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n\t\t\t    Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n\t\t    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n\t\t\t    NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n\t\t     END OF TERMS AND CONDITIONS\n\n\t    How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License along\n    with this program; if not, write to the Free Software Foundation, Inc.,\n    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n"
  },
  {
    "path": "Config.in",
    "content": "#\n\nmainmenu \"Buildroot $BR2_VERSION Configuration\"\n\nconfig BR2_HAVE_DOT_CONFIG\n\tbool\n\tdefault y\n\nconfig BR2_VERSION\n\tstring\n\toption env=\"BR2_VERSION_FULL\"\n\nconfig BR2_HOSTARCH\n\tstring\n\toption env=\"HOSTARCH\"\n\nconfig BR2_BASE_DIR\n\tstring\n\toption env=\"BASE_DIR\"\n\n# br2-external paths definitions\nsource \"$BR2_BASE_DIR/.br2-external.in.paths\"\n\n# Hidden config symbols for packages to check system gcc version\nconfig BR2_HOST_GCC_VERSION\n\tstring\n\toption env=\"HOST_GCC_VERSION\"\n\nconfig BR2_HOST_GCC_AT_LEAST_4_9\n\tbool\n\tdefault y if BR2_HOST_GCC_VERSION = \"4 9\"\n\nconfig BR2_HOST_GCC_AT_LEAST_5\n\tbool\n\tdefault y if BR2_HOST_GCC_VERSION = \"5\"\n\tselect BR2_HOST_GCC_AT_LEAST_4_9\n\nconfig BR2_HOST_GCC_AT_LEAST_6\n\tbool\n\tdefault y if BR2_HOST_GCC_VERSION = \"6\"\n\tselect BR2_HOST_GCC_AT_LEAST_5\n\nconfig BR2_HOST_GCC_AT_LEAST_7\n\tbool\n\tdefault y if BR2_HOST_GCC_VERSION = \"7\"\n\tselect BR2_HOST_GCC_AT_LEAST_6\n\nconfig BR2_HOST_GCC_AT_LEAST_8\n\tbool\n\tdefault y if BR2_HOST_GCC_VERSION = \"8\"\n\tselect BR2_HOST_GCC_AT_LEAST_7\n\nconfig BR2_HOST_GCC_AT_LEAST_9\n\tbool\n\tdefault y if BR2_HOST_GCC_VERSION = \"9\"\n\tselect BR2_HOST_GCC_AT_LEAST_8\n\n# When adding new entries above, be sure to update\n# the HOSTCC_MAX_VERSION variable in the Makefile.\n\n# Hidden boolean selected by packages in need of Java in order to build\n# (example: kodi)\nconfig BR2_NEEDS_HOST_JAVA\n\tbool\n\n# Hidden boolean selected by pre-built packages for x86, when they\n# need to run on x86-64 machines (example: pre-built external\n# toolchains, binary tools like SAM-BA, etc.).\nconfig BR2_HOSTARCH_NEEDS_IA32_LIBS\n\tbool\n\n# Hidden boolean selected by packages that need to build 32 bits\n# binaries with the host compiler, even on 64 bits build machines (e.g\n# bootloaders).\nconfig BR2_HOSTARCH_NEEDS_IA32_COMPILER\n\tbool\n\n# Hidden boolean selected by packages that need the host to have an\n# UTF8 locale.\nconfig BR2_NEEDS_HOST_UTF8_LOCALE\n\tbool\n\n# Hidden boolean selected by packages that need the host to have\n# support for building gcc plugins\nconfig BR2_NEEDS_HOST_GCC_PLUGIN_SUPPORT\n\tbool\n\nsource \"arch/Config.in\"\n\nmenu \"Build options\"\n\nmenu \"Commands\"\n\nconfig BR2_WGET\n\tstring \"Wget command\"\n\tdefault \"wget --passive-ftp -nd -t 3\"\n\nconfig BR2_SVN\n\tstring \"Subversion (svn) command\"\n\tdefault \"svn --non-interactive\"\n\nconfig BR2_BZR\n\tstring \"Bazaar (bzr) command\"\n\tdefault \"bzr\"\n\nconfig BR2_GIT\n\tstring \"Git command\"\n\tdefault \"git\"\n\nconfig BR2_CVS\n\tstring \"CVS command\"\n\tdefault \"cvs\"\n\nconfig BR2_LOCALFILES\n\tstring \"Local files retrieval command\"\n\tdefault \"cp\"\n\nconfig BR2_SCP\n\tstring \"Secure copy (scp) command\"\n\tdefault \"scp\"\n\nconfig BR2_HG\n\tstring \"Mercurial (hg) command\"\n\tdefault \"hg\"\n\nconfig BR2_ZCAT\n\tstring \"zcat command\"\n\tdefault \"gzip -d -c\"\n\thelp\n\t  Command to be used to extract a gzip'ed file to stdout. zcat\n\t  is identical to gunzip -c except that the former may not be\n\t  available on your system.\n\t  Default is \"gzip -d -c\"\n\t  Other possible values include \"gunzip -c\" or \"zcat\".\n\nconfig BR2_BZCAT\n\tstring \"bzcat command\"\n\tdefault \"bzcat\"\n\thelp\n\t  Command to be used to extract a bzip2'ed file to stdout.\n\t  bzcat is identical to bunzip2 -c except that the former may\n\t  not be available on your system.\n\t  Default is \"bzcat\"\n\t  Other possible values include \"bunzip2 -c\" or \"bzip2 -d -c\".\n\nconfig BR2_XZCAT\n\tstring \"xzcat command\"\n\tdefault \"xzcat\"\n\thelp\n\t  Command to be used to extract a xz'ed file to stdout.\n\t  Default is \"xzcat\"\n\nconfig BR2_LZCAT\n\tstring \"lzcat command\"\n\tdefault \"lzip -d -c\"\n\thelp\n\t  Command to be used to extract a lzip'ed file to stdout.\n\t  Default is \"lzip -d -c\"\n\nconfig BR2_TAR_OPTIONS\n\tstring \"Tar options\"\n\tdefault \"\"\n\thelp\n\t  Options to pass to tar when extracting the sources.\n\t  E.g. \" -v --exclude='*.svn*'\" to exclude all .svn internal\n\t  files and to be verbose.\n\nendmenu\n\nconfig BR2_DEFCONFIG_FROM_ENV\n\tstring\n\toption env=\"BR2_DEFCONFIG\"\n\nconfig BR2_DEFCONFIG\n\tstring \"Location to save buildroot config\"\n\tdefault BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != \"\"\n\tdefault \"$(CONFIG_DIR)/defconfig\"\n\thelp\n\t  When running 'make savedefconfig', the defconfig file will be\n\t  saved in this location.\n\nconfig BR2_DL_DIR\n\tstring \"Download dir\"\n\tdefault \"$(TOPDIR)/dl\"\n\thelp\n\t  Directory to store all the source files that we need to fetch.\n\t  If the Linux shell environment has defined the BR2_DL_DIR\n\t  environment variable, then this overrides this configuration\n\t  item.\n\t  The directory is organized with a subdirectory for each\n\t  package. Each package has its own $(LIBFOO_DL_DIR) variable\n\t  that can be used to find the correct path.\n\n\t  The default is $(TOPDIR)/dl\n\nconfig BR2_HOST_DIR\n\tstring \"Host dir\"\n\tdefault \"$(BASE_DIR)/host\"\n\thelp\n\t  Directory to store all the binary files that are built for the\n\t  host. This includes the cross compilation toolchain when\n\t  building the internal buildroot toolchain.\n\n\t  The default is $(BASE_DIR)/host\n\nmenu \"Mirrors and Download locations\"\n\nconfig BR2_PRIMARY_SITE\n\tstring \"Primary download site\"\n\tdefault \"\"\n\thelp\n\t  Primary site to download from. If this option is set then\n\t  buildroot will try to download package source first from this\n\t  site and try the default if the file is not found.\n\t  Valid URIs are:\n\t    - URIs recognized by $(WGET)\n\t    - local URIs of the form file://absolutepath\n\t    - scp URIs of the form scp://[user@]host:path.\n\nconfig BR2_PRIMARY_SITE_ONLY\n\tbool \"Only allow downloads from primary download site\"\n\tdepends on BR2_PRIMARY_SITE != \"\"\n\thelp\n\t  If this option is enabled, downloads will only be attempted\n\t  from the primary download site. Other locations, like the\n\t  package's official download location or the backup download\n\t  site, will not be considered. Therefore, if the package is not\n\t  present on the primary site, the download fails.\n\n\t  This is useful for project developers who want to ensure that\n\t  the project can be built even if the upstream tarball\n\t  locations disappear.\n\nif !BR2_PRIMARY_SITE_ONLY\n\nconfig BR2_BACKUP_SITE\n\tstring \"Backup download site\"\n\tdefault \"http://sources.buildroot.net\"\n\thelp\n\t  Backup site to download from. If this option is set then\n\t  buildroot will fall back to download package sources from here\n\t  if the normal location fails.\n\nconfig BR2_KERNEL_MIRROR\n\tstring \"Kernel.org mirror\"\n\tdefault \"https://cdn.kernel.org/pub\"\n\thelp\n\t  kernel.org is mirrored on a number of servers around the\n\t  world. The following allows you to select your preferred\n\t  mirror. By default, a CDN is used, which automatically\n\t  redirects to a mirror geographically close to you.\n\n\t  Have a look on the kernel.org site for a list of mirrors, then\n\t  enter the URL to the base directory. Examples:\n\n\t     http://www.XX.kernel.org/pub (XX = country code)\n\t     http://mirror.aarnet.edu.au/pub/ftp.kernel.org\n\nconfig BR2_GNU_MIRROR\n\tstring \"GNU Software mirror\"\n\tdefault \"http://ftpmirror.gnu.org\"\n\thelp\n\t  GNU has multiple software mirrors scattered around the\n\t  world. The following allows you to select your preferred\n\t  mirror. By default, a generic address is used, which\n\t  automatically selects an up-to-date and local mirror.\n\n\t  Have a look on the gnu.org site for a list of mirrors, then\n\t  enter the URL to the base directory. Examples:\n\n\t     http://ftp.gnu.org/pub/gnu\n\t     http://mirror.aarnet.edu.au/pub/gnu\n\nconfig BR2_LUAROCKS_MIRROR\n\tstring \"LuaRocks mirror\"\n\tdefault \"http://rocks.moonscript.org\"\n\thelp\n\t  LuaRocks repository.\n\n\t  See http://luarocks.org\n\nconfig BR2_CPAN_MIRROR\n\tstring \"CPAN mirror (Perl packages)\"\n\tdefault \"http://cpan.metacpan.org\"\n\thelp\n\t  CPAN (Comprehensive Perl Archive Network) is a repository of\n\t  Perl packages. It has multiple software mirrors scattered\n\t  around the world. This option allows you to select a mirror.\n\n\t  The list of mirrors is available at:\n\t  http://search.cpan.org/mirror\n\nendif\n\nendmenu\n\nconfig BR2_JLEVEL\n\tint \"Number of jobs to run simultaneously (0 for auto)\"\n\tdefault \"0\"\n\thelp\n\t  Number of jobs to run simultaneously. If 0, determine\n\t  automatically according to number of CPUs on the host system.\n\nconfig BR2_CCACHE\n\tbool \"Enable compiler cache\"\n\thelp\n\t  This option will enable the use of ccache, a compiler cache.\n\t  It will cache the result of previous builds to speed up future\n\t  builds. By default, the cache is stored in\n\t  $HOME/.buildroot-ccache.\n\n\t  Note that Buildroot does not try to invalidate the cache\n\t  contents when the compiler changes in an incompatible way.\n\t  Therefore, if you make a change to the compiler version and/or\n\t  configuration, you are responsible for purging the ccache\n\t  cache by removing the $HOME/.buildroot-ccache directory.\n\nif BR2_CCACHE\n\nconfig BR2_CCACHE_DIR\n\tstring \"Compiler cache location\"\n\tdefault \"$(HOME)/.buildroot-ccache\"\n\thelp\n\t  Where ccache should store cached files.\n\t  If the Linux shell environment has defined the BR2_CCACHE_DIR\n\t  environment variable, then this overrides this configuration\n\t  item.\n\nconfig BR2_CCACHE_INITIAL_SETUP\n\tstring \"Compiler cache initial setup\"\n\thelp\n\t  Initial ccache settings to apply, such as --max-files or\n\t  --max-size.\n\n\t  For example, if your project is known to require more space\n\t  than the default max cache size, then you might want to\n\t  increase the cache size to a suitable amount using the -M\n\t  (--max-size) option.\n\n\t  The string you specify here is passed verbatim to ccache.\n\t  Refer to ccache documentation for more details.\n\n\t  These initial settings are applied after ccache has been\n\t  compiled.\n\nconfig BR2_CCACHE_USE_BASEDIR\n\tbool \"Use relative paths\"\n\tdefault y\n\thelp\n\t  Allow ccache to convert absolute paths within the output\n\t  directory into relative paths.\n\n\t  During the build, many -I include directives are given with an\n\t  absolute path. These absolute paths end up in the hashes that\n\t  are computed by ccache. Therefore, when you build from a\n\t  different directory, the hash will be different and the cached\n\t  object will not be used.\n\n\t  To improve cache performance, set this option to y. This\n\t  allows ccache to rewrite absolute paths within the output\n\t  directory into relative paths. Note that only paths within the\n\t  output directory will be rewritten; therefore, if you change\n\t  BR2_HOST_DIR to point outside the output directory and\n\t  subsequently move it to a different location, this will lead\n\t  to cache misses.\n\n\t  This option has as a result that the debug information in the\n\t  object files also has only relative paths. Therefore, make\n\t  sure you cd to the build directory before starting gdb. See\n\t  the section \"COMPILING IN DIFFERENT DIRECTORIES\" in the ccache\n\t  manual for more information.\n\nendif\n\nconfig BR2_ENABLE_DEBUG\n\tbool \"build packages with debugging symbols\"\n\thelp\n\t  Build packages with debugging symbols enabled. All libraries\n\t  and binaries in the 'staging' directory will have debugging\n\t  symbols, which allows remote debugging even if libraries and\n\t  binaries are stripped on the target. Whether libraries and\n\t  binaries are stripped on the target is controlled by the\n\t  BR2_STRIP_* options below.\n\nif BR2_ENABLE_DEBUG\nchoice\n\tprompt \"gcc debug level\"\n\tdefault BR2_DEBUG_2\n\thelp\n\t  Set the debug level for gcc\n\nconfig BR2_DEBUG_1\n\tbool \"debug level 1\"\n\thelp\n\t  Debug level 1 produces minimal information, enough for making\n\t  backtraces in parts of the program that you don't plan to\n\t  debug. This includes descriptions of functions and external\n\t  variables, but no information about local variables and no\n\t  line numbers.\n\nconfig BR2_DEBUG_2\n\tbool \"debug level 2\"\n\thelp\n\t  The default gcc debug level is 2\n\nconfig BR2_DEBUG_3\n\tbool \"debug level 3\"\n\thelp\n\t  Level 3 includes extra information, such as all the macro\n\t  definitions present in the program. Some debuggers support\n\t  macro expansion when you use -g3.\nendchoice\nendif\n\nconfig BR2_ENABLE_RUNTIME_DEBUG\n\tbool \"build packages with runtime debugging info\"\n\thelp\n\t  Some packages may have runtime assertions, extra traces, and\n\t  similar runtime elements that can help debugging. However,\n\t  these elements may negatively influence performance so should\n\t  normally not be enabled on production systems.\n\n\t  Enable this option to enable such runtime debugging.\n\n\t  Note: disabling this option is not a guarantee that all\n\t  packages effectively removed these runtime debugging elements.\n\nconfig BR2_STRIP_strip\n\tbool \"strip target binaries\"\n\tdefault y\n\tdepends on !BR2_PACKAGE_HOST_ELF2FLT\n\thelp\n\t  Binaries and libraries in the target filesystem will be\n\t  stripped using the normal 'strip' command. This allows to save\n\t  space, mainly by removing debugging symbols. Debugging symbols\n\t  on the target are needed for native debugging, but not when\n\t  remote debugging is used.\n\nconfig BR2_STRIP_EXCLUDE_FILES\n\tstring \"executables that should not be stripped\"\n\tdefault \"\"\n\tdepends on BR2_STRIP_strip\n\thelp\n\t  You may specify a space-separated list of binaries and\n\t  libraries here that should not be stripped on the target.\n\nconfig BR2_STRIP_EXCLUDE_DIRS\n\tstring \"directories that should be skipped when stripping\"\n\tdefault \"\"\n\tdepends on BR2_STRIP_strip\n\thelp\n\t  You may specify a space-separated list of directories that\n\t  should be skipped when stripping. Binaries and libraries in\n\t  these directories will not be touched. The directories should\n\t  be specified relative to the target directory, without leading\n\t  slash.\n\nchoice\n\tprompt \"gcc optimization level\"\n\tdefault BR2_OPTIMIZE_S\n\thelp\n\t  Set the optimization level for gcc\n\nconfig BR2_OPTIMIZE_0\n\tbool \"optimization level 0\"\n\thelp\n\t  Do not optimize.\n\nconfig BR2_OPTIMIZE_1\n\tbool \"optimization level 1\"\n\thelp\n\t  Optimize. Optimizing compilation takes somewhat more time, and\n\t  a lot more memory for a large function. With -O, the compiler\n\t  tries to reduce code size and execution time, without\n\t  performing any optimizations that take a great deal of\n\t  compilation time. -O turns on the following optimization\n\t  flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability\n\t  -fcprop-registers -floop-optimize -fif-conversion\n\t  -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts\n\t  -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename\n\t  -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants. -O\n\t  also turns on -fomit-frame-pointer on machines where doing so\n\t  does not interfere with debugging.\n\nconfig BR2_OPTIMIZE_2\n\tbool \"optimization level 2\"\n\thelp\n\t  Optimize even more. GCC performs nearly all supported\n\t  optimizations that do not involve a space-speed tradeoff. The\n\t  compiler does not perform loop unrolling or function inlining\n\t  when you specify -O2. As compared to -O, this option increases\n\t  both compilation time and the performance of the generated\n\t  code. -O2 turns on all optimization flags specified by -O. It\n\t  also turns on the following optimization flags:\n\t  -fthread-jumps -fcrossjumping -foptimize-sibling-calls\n\t  -fcse-follow-jumps -fcse-skip-blocks -fgcse  -fgcse-lm\n\t  -fexpensive-optimizations -fstrength-reduce\n\t  -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves\n\t  -fpeephole2 -fschedule-insns -fschedule-insns2\n\t  -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing\n\t  -fdelete-null-pointer-checks -freorder-blocks\n\t  -freorder-functions -falign-functions -falign-jumps\n\t  -falign-loops -falign-labels -ftree-vrp -ftree-pre. Please\n\t  note the warning under -fgcse about invoking -O2 on programs\n\t  that use computed gotos.\n\nconfig BR2_OPTIMIZE_3\n\tbool \"optimization level 3\"\n\thelp\n\t  Optimize yet more. -O3 turns on all optimizations specified by\n\t  -O2 and also turns on the -finline-functions, -funswitch-loops\n\t  and -fgcse-after-reload options.\n\nconfig BR2_OPTIMIZE_G\n\tbool \"optimize for debugging\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\thelp\n\t  Optimize for debugging. This enables optimizations that do not\n\t  interfere with debugging. It should be the optimization level\n\t  of choice for the standard edit-compile-debug cycle, offering\n\t  a reasonable level of optimization while maintaining fast\n\t  compilation and a good debugging experience.\n\nconfig BR2_OPTIMIZE_S\n\tbool \"optimize for size\"\n\thelp\n\t  Optimize for size. -Os enables all -O2 optimizations that do\n\t  not typically increase code size. It also performs further\n\t  optimizations designed to reduce code size. -Os disables the\n\t  following optimization flags: -falign-functions -falign-jumps\n\t  -falign-loops -falign-labels -freorder-blocks\n\t  -freorder-blocks-and-partition -fprefetch-loop-arrays\n\t  -ftree-vect-loop-version\n\t  This is the default.\n\nconfig BR2_OPTIMIZE_FAST\n\tbool \"optimize for fast (may break packages!)\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6\n\thelp\n\t  Optimize for fast. Disregard strict standards\n\t  compliance. -Ofast enables all -O3 optimizations. It also\n\t  enables optimizations that are not valid for all\n\t  standard-compliant programs, so be careful, as it may break\n\t  some packages. It turns on -ffast-math and the\n\t  Fortran-specific -fstack-arrays, unless -fmax-stack-var-size\n\t  is specified, and -fno-protect-parens.\n\nendchoice\n\nconfig BR2_GOOGLE_BREAKPAD_ENABLE\n\tbool \"Enable google-breakpad support\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC)\n\tdepends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_GOOGLE_BREAKPAD\n\thelp\n\t  This option will enable the use of google breakpad, a library\n\t  and tool suite that allows you to distribute an application to\n\t  users with compiler-provided debugging information removed,\n\t  record crashes in compact \"minidump\" files, send them back to\n\t  your server and produce C and C++ stack traces from these\n\t  minidumps. Breakpad can also write minidumps on request for\n\t  programs that have not crashed.\n\nif BR2_GOOGLE_BREAKPAD_ENABLE\n\nconfig BR2_GOOGLE_BREAKPAD_INCLUDE_FILES\n\tstring \"List of executables and libraries to extract symbols from\"\n\tdefault \"\"\n\thelp\n\t  You may specify a space-separated list of binaries and\n\t  libraries with full paths relative to $(TARGET_DIR) of which\n\t  debug symbols will be dumped for further use with google\n\t  breakpad.\n\n\t  A directory structure that can be used by minidump-stackwalk\n\t  will be created at:\n\n\t  $(STAGING_DIR)/usr/share/google-breakpad-symbols\n\nendif\n\nchoice\n\tbool \"libraries\"\n\tdefault BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED\n\tdefault BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED\n\thelp\n\t  Select the type of libraries you want to use on the target.\n\n\t  The default is to build dynamic libraries and use those on the\n\t  target filesystem, except when the architecture and/or the\n\t  selected binary format does not support shared libraries.\n\nconfig BR2_STATIC_LIBS\n\tbool \"static only\"\n\thelp\n\t  Build and use only static libraries. No shared libraries will\n\t  be installed on the target. This potentially increases your\n\t  code size and should only be used if you know what you are\n\t  doing. Note that some packages may not be available when this\n\t  option is enabled, due to their need for dynamic library\n\t  support.\n\nconfig BR2_SHARED_LIBS\n\tbool \"shared only\"\n\tdepends on BR2_BINFMT_SUPPORTS_SHARED\n\thelp\n\t  Build and use only shared libraries. This is the recommended\n\t  solution as it saves space and build time.\n\nconfig BR2_SHARED_STATIC_LIBS\n\tbool \"both static and shared\"\n\tdepends on BR2_BINFMT_SUPPORTS_SHARED\n\thelp\n\t  Build both shared and static libraries, but link executables\n\t  dynamically. While building both shared and static libraries\n\t  take more time and more disk space, having static libraries\n\t  may be useful to link some of the applications statically.\n\nendchoice\n\nconfig BR2_PACKAGE_OVERRIDE_FILE\n\tstring \"location of a package override file\"\n\tdefault \"$(CONFIG_DIR)/local.mk\"\n\thelp\n\t  A package override file is a short makefile that contains\n\t  variable definitions of the form <pkg>_OVERRIDE_SRCDIR, which\n\t  allows to tell Buildroot to use an existing directory as the\n\t  source directory for a particular package. See the Buildroot\n\t  documentation for more details on this feature.\n\nconfig BR2_GLOBAL_PATCH_DIR\n\tstring \"global patch directories\"\n\thelp\n\t  You may specify a space separated list of one or more\n\t  directories containing global package patches. For a specific\n\t  version <packageversion> of a specific package <packagename>,\n\t  patches are applied as follows:\n\n\t  First, the default Buildroot patch set for the package is\n\t  applied from the package's directory in Buildroot.\n\n\t  Then for every directory - <global-patch-dir> - that exists in\n\t  BR2_GLOBAL_PATCH_DIR, if the directory\n\t  <global-patch-dir>/<packagename>/<packageversion>/ exists,\n\t  then all *.patch files in this directory will be applied.\n\n\t  Otherwise, if the directory <global-patch-dir>/<packagename>\n\t  exists, then all *.patch files in the directory will be\n\t  applied.\n\nmenu \"Advanced\"\n\nconfig BR2_COMPILER_PARANOID_UNSAFE_PATH\n\tbool \"paranoid check of library/header paths\"\n\tdefault y\n\thelp\n\t  By default, when this option is disabled, when the Buildroot\n\t  cross-compiler will encounter an unsafe library or header path\n\t  (such as /usr/include, or /usr/lib), the compiler will display\n\t  a warning.\n\n\t  By enabling this option, this warning is turned into an error,\n\t  which will completely abort the build when such unsafe paths\n\t  are encountered.\n\n\t  Note that this mechanism is available for both the internal\n\t  toolchain (through the toolchain wrapper and binutils patches)\n\t  and external toolchain backends (through the toolchain\n\t  wrapper).\n\nconfig BR2_FORCE_HOST_BUILD\n\tbool \"Force the building of host dependencies\"\n\thelp\n\t  Build all available host dependencies, even if they are\n\t  already installed on the system.\n\n\t  This option can be used to ensure that the download cache of\n\t  source archives for packages remain consistent between\n\t  different build hosts.\n\n\t  This option will increase build time.\n\nconfig BR2_REPRODUCIBLE\n\tbool \"Make the build reproducible (experimental)\"\n\t# SOURCE_DATE_EPOCH support in toolchain-wrapper requires GCC 4.4\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4\n\thelp\n\t  This option will remove all sources of non-reproducibility\n\t  from the build process. For a given Buildroot configuration,\n\t  this allows to generate exactly identical binaries from one\n\t  build to the other, including on different machines.\n\n\t  The current implementation is restricted to builds with the\n\t  same output directory. Many (absolute) paths are recorded in\n\t  intermediary files, and it is very likely that some of these\n\t  paths leak into the target rootfs. If you build with the\n\t  same O=... path, however, the result is identical.\n\n\t  This is labeled as an experimental feature, as not all\n\t  packages behave properly to ensure reproducibility.\n\nconfig BR2_PER_PACKAGE_DIRECTORIES\n\tbool \"Use per-package directories (experimental)\"\n\thelp\n\t  This option will change the build process of Buildroot\n\t  package to use per-package target and host directories.\n\n\t  This is useful for two related purposes:\n\n\t    - Cleanly isolate the build of each package, so that a\n\t      given package only \"sees\" the dependencies it has\n\t      explicitly expressed, and not other packages that may\n\t      have by chance been built before.\n\n\t    - Enable top-level parallel build.\n\n\t  This is labeled as an experimental feature, as not all\n\t  packages behave properly with per-package directories.\n\nendmenu\n\ncomment \"Security Hardening Options\"\n\nconfig BR2_PIC_PIE_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\t# Microblaze glibc toolchains don't work with PIC/PIE enabled\n\tdepends on !BR2_microblaze\n\t# Nios2 toolchains produce non working binaries with -fPIC\n\tdepends on !BR2_nios2\n\nconfig BR2_PIC_PIE\n\tbool \"Build code with PIC/PIE\"\n\tdefault y\n\tdepends on BR2_PIC_PIE_ARCH_SUPPORTS\n\tdepends on BR2_SHARED_LIBS\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_PIE\n\thelp\n\t  Generate Position-Independent Code (PIC) and link\n\t  Position-Independent Executables (PIE).\n\ncomment \"PIC/PIE needs a toolchain w/ PIE\"\n\tdepends on BR2_PIC_PIE_ARCH_SUPPORTS\n\tdepends on BR2_SHARED_LIBS\n\tdepends on !BR2_TOOLCHAIN_SUPPORTS_PIE\n\nchoice\n\tbool \"Stack Smashing Protection\"\n\tdefault BR2_SSP_ALL if BR2_ENABLE_SSP # legacy\n\tdefault BR2_SSP_STRONG if BR2_TOOLCHAIN_HAS_SSP_STRONG\n\tdefault BR2_SSP_REGULAR\n\tdepends on BR2_TOOLCHAIN_HAS_SSP\n\thelp\n\t  Enable stack smashing protection support using GCC's\n\t  -fstack-protector option family.\n\n\t  See\n\t  http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt\n\t  for details.\n\n\t  Note that this requires the toolchain to have SSP support.\n\t  This is always the case for glibc and eglibc toolchain, but is\n\t  optional in uClibc toolchains.\n\nconfig BR2_SSP_NONE\n\tbool \"None\"\n\thelp\n\t  Disable stack-smashing protection.\n\nconfig BR2_SSP_REGULAR\n\tbool \"-fstack-protector\"\n\thelp\n\t  Emit extra code to check for buffer overflows, such as stack\n\t  smashing attacks. This is done by adding a guard variable to\n\t  functions with vulnerable objects. This includes functions\n\t  that call alloca, and functions with buffers larger than 8\n\t  bytes. The guards are initialized when a function is entered\n\t  and then checked when the function exits. If a guard check\n\t  fails, an error message is printed and the program exits.\n\nconfig BR2_SSP_STRONG\n\tbool \"-fstack-protector-strong\"\n\tdepends on BR2_TOOLCHAIN_HAS_SSP_STRONG\n\thelp\n\t  Like -fstack-protector but includes additional functions to be\n\t  protected - those that have local array definitions, or have\n\t  references to local frame addresses.\n\n\t  -fstack-protector-strong officially appeared in gcc 4.9, but\n\t  some vendors have backported -fstack-protector-strong to older\n\t  versions of gcc.\n\nconfig BR2_SSP_ALL\n\tbool \"-fstack-protector-all\"\n\thelp\n\t  Like -fstack-protector except that all functions are\n\t  protected. This option might have a significant performance\n\t  impact on the compiled binaries.\n\nendchoice\n\nconfig BR2_SSP_OPTION\n\tstring\n\tdefault \"-fstack-protector\"        if BR2_SSP_REGULAR\n\tdefault \"-fstack-protector-strong\" if BR2_SSP_STRONG\n\tdefault \"-fstack-protector-all\"    if BR2_SSP_ALL\n\ncomment \"Stack Smashing Protection needs a toolchain w/ SSP\"\n\tdepends on !BR2_TOOLCHAIN_HAS_SSP\n\nchoice\n\tbool \"RELRO Protection\"\n\tdefault BR2_RELRO_FULL if BR2_TOOLCHAIN_SUPPORTS_PIE\n\tdefault BR2_RELRO_PARTIAL\n\tdepends on BR2_SHARED_LIBS\n\thelp\n\t  Enable a link-time protection know as RELRO (RELocation Read\n\t  Only) which helps to protect from certain type of exploitation\n\t  techniques altering the content of some ELF sections.\n\nconfig BR2_RELRO_NONE\n\tbool \"None\"\n\thelp\n\t  Disables Relocation link-time protections.\n\nconfig BR2_RELRO_PARTIAL\n\tbool \"Partial\"\n\thelp\n\t  This option makes the dynamic section not writeable after\n\t  initialization (with almost no performance penalty).\n\nconfig BR2_RELRO_FULL\n\tbool \"Full\"\n\tdepends on BR2_PIC_PIE_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_PIE\n\tselect BR2_PIC_PIE\n\thelp\n\t  This option includes the partial configuration, but also marks\n\t  the GOT as read-only at the cost of initialization time during\n\t  program loading, i.e every time an executable is started.\n\ncomment \"RELRO Full needs a toolchain w/ PIE\"\n\tdepends on BR2_PIC_PIE_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_SUPPORTS_PIE\n\nendchoice\n\ncomment \"RELocation Read Only (RELRO) needs shared libraries\"\n\tdepends on !BR2_SHARED_LIBS\n\nconfig BR2_FORTIFY_SOURCE_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\t# Microblaze glibc toolchains don't work with Fortify Source enabled\n\tdepends on !BR2_microblaze\n\nchoice\n\tbool \"Buffer-overflow Detection (FORTIFY_SOURCE)\"\n\tdefault BR2_FORTIFY_SOURCE_1\n\tdepends on BR2_FORTIFY_SOURCE_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on !BR2_OPTIMIZE_0\n\thelp\n\t  Enable the _FORTIFY_SOURCE macro which introduces additional\n\t  checks to detect buffer-overflows in the following standard\n\t  library functions: memcpy, mempcpy, memmove, memset, strcpy,\n\t  stpcpy, strncpy, strcat, strncat, sprintf, vsprintf, snprintf,\n\t  vsnprintf, gets.\n\n\t  NOTE: This feature requires an optimization level of s/1/2/3/g\n\n\t  Support for this feature has been present since GCC 4.x.\n\nconfig BR2_FORTIFY_SOURCE_NONE\n\tbool \"None\"\n\thelp\n\t  Disables additional checks to detect buffer-overflows.\n\nconfig BR2_FORTIFY_SOURCE_1\n\tbool \"Conservative\"\n\t# gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164\n\tdepends on !BR2_TOOLCHAIN_BUILDROOT || BR2_TOOLCHAIN_GCC_AT_LEAST_6\n\thelp\n\t  This option sets _FORTIFY_SOURCE to 1 and only introduces\n\t  checks that shouldn't change the behavior of conforming\n\t  programs.  Adds checks at compile-time only.\n\nconfig BR2_FORTIFY_SOURCE_2\n\tbool \"Aggressive\"\n\t# gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164\n\tdepends on !BR2_TOOLCHAIN_BUILDROOT || BR2_TOOLCHAIN_GCC_AT_LEAST_6\n\thelp\n\t  This option sets _FORTIFY_SOURCES to 2 and some more\n\t  checking is added, but some conforming programs might fail.\n\t  Also adds checks at run-time (detected buffer overflow\n\t  terminates the program)\n\nendchoice\n\ncomment \"Fortify Source needs a glibc toolchain and optimization\"\n\tdepends on BR2_FORTIFY_SOURCE_ARCH_SUPPORTS\n\tdepends on (!BR2_TOOLCHAIN_USES_GLIBC || BR2_OPTIMIZE_0)\nendmenu\n\nsource \"toolchain/Config.in\"\n\nsource \"system/Config.in\"\n\nsource \"linux/Config.in\"\n\nsource \"package/Config.in\"\n\nsource \"fs/Config.in\"\n\nsource \"boot/Config.in\"\n\nsource \"package/Config.in.host\"\n\nsource \"Config.in.legacy\"\n\n# br2-external menus definitions\nsource \"$BR2_BASE_DIR/.br2-external.in.menus\"\n"
  },
  {
    "path": "Config.in.legacy",
    "content": "#\n# Config.in.legacy - support for backward compatibility\n#\n# When an existing Config.in symbol is removed, it should be added again in\n# this file, and take appropriate action to approximate backward compatibility.\n# This will make the transition for the user more convenient.\n#\n# When adding legacy symbols to this file, add them to the front. The oldest\n# symbols will be removed again after about two years.\n#\n# The symbol should be copied as-is from the place where it was previously\n# defined, but the help text should be removed or replaced with something that\n# explains how to fix it.\n#\n# For bool options, the old symbol should select BR2_LEGACY, so that the user\n# is informed at build-time about selected legacy options.\n# If there is an equivalent (set of) new symbols, these should be select'ed by\n# the old symbol for backwards compatibility.\n# It is not possible to select an option that is part of a choice. In that\n# case, the new option should use the old symbol as default. This requires a\n# change outside of Config.in.legacy, and this should be clearly marked as such\n# in a comment, so that removal of legacy options also include the removal of\n# these external references.\n#\n# [Example: renaming a bool option that is part of a choice from FOO to BAR]\n# original choice:\n# \tchoice\n# \t\tprompt \"Choose foobar\"\n# \tconfig BR2_FOO_1\n#\t\tbool \"foobar 1\"\n# \tconfig BR2_FOO_2\n# \t\tbool \"foobar 2\"\n# \tendchoice\n#\n# becomes:\n#   choice\n#   \tprompt \"Choose foobar\"\n#   \tdefault BR2_BAR_1 if BR2_FOO_1 # legacy\n#   \tdefault BR2_BAR_2 if BR2_FOO_2 # legacy\n#   config BR2_BAR_1\n#\t\tbool \"foobar 1\"\n#   config BR2_BAR_2\n#   \tbool \"foobar 2\"\n#   endchoice\n#\n# and in Config.in.legacy:\n#   config BR2_FOO_1\n#   \tbool \"foobar 1 has been renamed\"\n#   \thelp\n#   \t  <suitable help text>\n#   # Note: BR2_FOO_1 is still referenced from package/foo/Config.in\n#   config BR2_FOO_2\n#   \tbool \"foobar 2 has been renamed\"\n#   \thelp\n#   \t  <suitable help text>\n#   # Note: BR2_FOO_2 is still referenced from package/foo/Config.in\n#\n# [End of example]\n#\n# For string options, it is not possible to directly select another symbol. In\n# this case, a hidden wrap bool option has to be added, that defaults to y if\n# the old string is not set at its default value. The wrap symbol should select\n# BR2_LEGACY.\n# If the original symbol has been renamed, the new symbol should use the value\n# of the old symbol as default. Like for choice options, a comment should be\n# added to flag that the symbol is still used in another file.\n#\n# [Example: renaming a string option from FOO to BAR]\n# original symbol:\n#   config BR2_FOO_STRING\n#   \tstring \"Some foo string\"\n#\n# becomes:\n#   config BR2_BAR_STRING\n#   \tstring \"Some bar string\"\n#   \tdefault BR2_FOO_STRING if BR2_FOO_STRING != \"\"  # legacy\n#\n# and in Config.in.legacy:\n#   config BR2_FOO_STRING\n#   \tstring \"The foo string has been renamed\"\n#   \thelp\n#   \t  <suitable help text>\n#\n#   config BR2_FOO_STRING_WRAP\n#   \tbool\n#   \tdefault y if BR2_FOO_STRING != \"\"\n#   \tselect BR2_LEGACY\n#\n#   # Note: BR2_FOO_STRING is still referenced from package/foo/Config.in\n#\n# [End of example]\n\nconfig BR2_SKIP_LEGACY\n\tbool\n\toption env=\"SKIP_LEGACY\"\n\nif !BR2_SKIP_LEGACY\n\nconfig BR2_LEGACY\n\tbool\n\thelp\n\t  This option is selected automatically when your old .config\n\t  uses an option that no longer exists in current buildroot. In\n\t  that case, the build will fail. Look for config options which\n\t  are selected in the menu below: they no longer exist and\n\t  should be replaced by something else.\n\n# This comment fits exactly in a 80-column display\ncomment \"Legacy detected: check the content of the menu below\"\n\tdepends on BR2_LEGACY\n\nmenu \"Legacy config options\"\n\nif BR2_LEGACY\ncomment \"----------------------------------------------------\"\ncomment \"Your old configuration uses legacy options that no  \"\ncomment \"longer exist in buildroot, as indicated in the menu \"\ncomment \"below. As long as these options stay selected, or in\"\ncomment \"case of string options are non-empty, the build     \"\ncomment \"will fail.                                          \"\ncomment \"*                                                   \"\ncomment \"Where possible, an automatic conversion from old to \"\ncomment \"new symbols has been performed. Before making any   \"\ncomment \"change in this legacy menu, make sure to exit the   \"\ncomment \"configuration editor a first time and save the      \"\ncomment \"configuration. Otherwise, the automatic conversion  \"\ncomment \"of symbols will be lost.                            \"\ncomment \"*                                                   \"\ncomment \"After this initial save, reopen the configuration   \"\ncomment \"editor, inspect the options selected below, read    \"\ncomment \"their help texts, and verify/update the new         \"\ncomment \"configuration in the corresponding configuration    \"\ncomment \"menus. When everything is ok, you can disable the   \"\ncomment \"legacy options in the menu below. Once you have     \"\ncomment \"disabled all legacy options, this text will         \"\ncomment \"disappear and you will be able to start the build.  \"\ncomment \"*                                                   \"\ncomment \"Note: legacy options older than 5 years have been   \"\ncomment \"removed, and configuration files that still have    \"\ncomment \"those options set, will fail to build, or run in    \"\ncomment \"unpredictable ways.                                 \"\ncomment \"----------------------------------------------------\"\nendif\n\n###############################################################################\n\ncomment \"Legacy options removed in 2021.11\"\n\nconfig BR2_OPENJDK_VERSION_LTS\n\tbool \"OpenJDK LTS version was renamed to OpenJDK 11\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_OPENJDK_VERSION_11\n\thelp\n\t  The LTS version option was renamed to OpenJDK 11 to make it\n\t  clear what LTS version is.\n\nconfig BR2_OPENJDK_VERSION_LATEST\n\tbool \"OpenJDK latest version (16.x) was removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_OPENJDK_VERSION_17\n\thelp\n\t  OpenJDK 16.x is no longer mainted, so the option has been\n\t  removed. Use OpenJDK 17.x instead.\n\nconfig BR2_PACKAGE_MPD_TIDAL\n\tbool \"mpd tidal option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  tidal has been removed from mpd since version 0.22.10.\n\nconfig BR2_PACKAGE_MROUTED_RSRR\n\tbool \"RSRR for RSVP removed in mrouted v4.4\"\n\tselect BR2_LEGACY\n\thelp\n\t  The RSRR configure option and feature was dropped in upstream\n\t  mrouted as of v4.4.  This feature was marked as experimental\n\t  since its inception well before v4.0 and was never deployed\n\t  in the field outside of academia.\n\nconfig BR2_BINUTILS_VERSION_CSKY\n\tbool \"binutils csky version removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for binutils csky version has been removed.\n\nconfig BR2_GCC_VERSION_CSKY\n\tbool \"gcc csky version removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for gcc csky version has been removed.\n\nconfig BR2_PACKAGE_CANFESTIVAL\n\tbool \"canfestival package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed as it is unmaintained since\n\t  November 2017.\n\nconfig BR2_PACKAGE_NMAP_NDIFF\n\tbool \"The ndiff utility has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_PYTHON_PYNDIFF\n\thelp\n\t  The ndiff utility provided by nmap requires python2 which is\n\t  deprecated. The same functionality is provided by the python\n\t  package pyndiff.\n\nconfig BR2_GDB_VERSION_8_3\n\tbool \"gdb version 8.3.x removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  gdb 8.3.x has been removed, use a newer version instead.\n\nconfig BR2_PACKAGE_PYTHON_MELD3\n\tbool \"python-meld3 package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed as it is unmaintained since\n\t  April 2020.\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP\n\tbool \"strongswan EAP plugins now individually selectable\"\n\tselect BR2_LEGACY\n\thelp\n\t  The various EAP plugins are now individually selectable.\n\nconfig BR2_PACKAGE_GNURADIO_PAGER\n\tbool \"gnuradio gr-flex support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  gr-flex has been removed from gnuradio since version 3.8.0.0.\n\nconfig BR2_KERNEL_HEADERS_5_11\n\tbool \"kernel headers version 5.11.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 5.11.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_5_12\n\tbool \"kernel headers version 5.12.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 5.12.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_5_13\n\tbool \"kernel headers version 5.13.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 5.13.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\ncomment \"Legacy options removed in 2021.08\"\n\nconfig BR2_TARGET_GRUB2_BUILTIN_MODULES\n\tstring \"the grub2 builtin modules has been renamed\"\n\thelp\n\t  This option has been split to separate the builtin modules\n\t  between BR2_TARGET_GRUB2_BUILTIN_MODULES_PC and\n\t  BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI.\n\nconfig BR2_TARGET_GRUB2_BUILTIN_MODULES_WRAP\n\tbool\n\tdefault y if BR2_TARGET_GRUB2_BUILTIN_MODULES != \"\"\n\tselect BR2_LEGACY\n\nconfig BR2_TARGET_GRUB2_BUILTIN_CONFIG\n\tstring \"the grub2 builtin configuration has been renamed\"\n\thelp\n\t  This option has been split to separate the builtin\n\t  configuration between BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC and\n\t  BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI.\n\nconfig BR2_TARGET_GRUB2_BUILTIN_CONFIG_WRAP\n\tbool\n\tdefault y if BR2_TARGET_GRUB2_BUILTIN_CONFIG != \"\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_LIBMCRYPT\n\tbool \"libmcrypt package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed as \"the last update to libmcrypt\n\t  was in 2007, despite years of unmerged patches. These facts\n\t  have led security experts to declare mcrypt abandonware and\n\t  discourage its use in new development\" (extract from\n\t  https://en.wikipedia.org/wiki/Mcrypt).\n\nconfig BR2_PACKAGE_MCRYPT\n\tbool \"mcrypt package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed as \"the last update to libmcrypt\n\t  was in 2007, despite years of unmerged patches. These facts\n\t  have led security experts to declare mcrypt abandonware and\n\t  discourage its use in new development\" (extract from\n\t  https://en.wikipedia.org/wiki/Mcrypt).\n\nconfig BR2_PACKAGE_PHP_EXT_MCRYPT\n\tbool \"PHP mcrypt extension removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  mcrypt has been removed from php since version 7.2.0.\n\nconfig BR2_BINUTILS_VERSION_2_34_X\n\tbool \"binutils 2.34 has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  binutils 2.34 has been removed, use a newer version.\n\nconfig BR2_PACKAGE_LIBSOIL\n\tbool \"libsoil package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The libsoil package was removed. All packages needing\n\t  libsoil removed the dependency.\n\nconfig BR2_PACKAGE_CLAPACK\n\tbool \"cblas/clapack package removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LAPACK if BR2_PACKAGE_LAPACK_ARCH_SUPPORTS && BR2_TOOLCHAIN_HAS_FORTRAN\n\thelp\n\t  The clapack package was removed. LAPACK no longer generates a\n\t  C version. Use lapack instead. This does require a Fortran\n\t  compiler however.\n\nconfig BR2_PACKAGE_SPIDERMONKEY\n\tbool \"spidermonkey package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The spidermonkey package was removed. The only package that\n\t  depended on spidermonkey was polkit. The spidermonkey\n\t  dependency is replaced with duktape.\n\nconfig BR2_PACKAGE_KODI_LIBVA\n\tbool \"kodi option to add libva support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Kodi still has support for libva if the package is enabled but\n\t  the kodi-specific dependencies limiting libva support to non-\n\t  OPENGLES platforms were removed including this option.\n\nconfig BR2_PACKAGE_PYTHON_COHERENCE\n\tbool \"python-coherence package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed as it can't be built anymore due\n\t  to python-twisted being now incompatible with python 2.\n\nconfig BR2_PACKAGE_PHP_EXT_XMLRPC\n\tbool \"PHP XMLRPC extension removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The XMLRPC php extension was removed.\n\t  See: https://wiki.php.net/rfc/unbundle_xmlprc\n\nconfig BR2_GCC_VERSION_8_X\n\tbool \"gcc 8.x support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for gcc version 8.x has been removed. The current\n\t  default version (10.x or later) has been selected instead.\n\ncomment \"Legacy options removed in 2021.05\"\n\nconfig BR2_PACKAGE_UDISKS_LVM2\n\tbool \"udisks lvm2 support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The lvm2 support was removed because udisks < 2.7.0 still\n\t  depends on lvm2 application library, which was removed\n\t  in lvm2.\n\nconfig BR2_PACKAGE_LVM2_APP_LIBRARY\n\tbool \"lvm2 application library removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The lvm2 application library was removed upstream.\n\nconfig BR2_PACKAGE_LVM2_LVMETAD\n\tbool \"lvm2 lvmetad removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The lvm2 lvmetad was removed upstream.\n\nconfig BR2_PACKAGE_MONKEY\n\tbool \"monkey package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed as it has not seen any release\n\t  since 2016 and because TLS is broken on master.\n\nconfig BR2_PACKAGE_DOCKER_CONTAINERD\n\tbool \"docker-containerd package was renamed to containerd\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_CONTAINERD\n\thelp\n\t  The containerd project is now independent from Docker.\n\t  The package was renamed to containerd accordingly.\n\nconfig BR2_PACKAGE_IOSTAT\n\tbool \"iostat package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed, use sysstat instead.\n\nconfig BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE_IMAGE\n\tbool \"sconeserver http::sconesite::image removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Sconeserver cannot be built with ImageMagick - it uses the\n\t  \"transofrm\" function which is removed from public API.\n\nconfig BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_EVDEV\n\tbool \"KDrive/TinyX evdev input driver removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The evdev input driver in KDrive was removed.\n\nconfig BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_KBD\n\tbool \"KDrive/TinyX kbd input driver removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The kbd input driver in KDrive was removed.\n\nconfig BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_MOUSE\n\tbool \"KDrive/TinyX mouse input driver removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The mouse input driver in KDrive was removed.\n\nconfig BR2_PACKAGE_MESA3D_OSMESA_CLASSIC\n\tbool \"mesa OSMesa (classic) option removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_MESA3D_OSMESA_GALLIUM\n\thelp\n\t  The OSMesa \"classic\" library option was removed upstream.\n\t  Only the Gallium-based implementation remains.\n\nconfig BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST\n\tbool \"mesa DRI swrast driver removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST\n\thelp\n\t  The DRI swrast driver was removed upstream.\n\t  Only the Gallium-based implementation remains.\n\nconfig BR2_PACKAGE_KODI_SCREENSAVER_CRYSTALMORPH\n\tbool \"kodi-screensaver-crystalmorph removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The package received its last updates in 2017, is not part\n\t  of the official Kodi github repo and its build is broken\n\t  with Kodi 19.x, so it was removed.\n\ncomment \"Legacy options removed in 2021.02\"\n\nconfig BR2_PACKAGE_MPD_AUDIOFILE\n\tbool \"mpd audiofile support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The audiofile support was removed from mpd as audiofile is\n\t  affected by multiple CVEs and is not maintained anymore (no\n\t  release since 2013).\n\nconfig BR2_PACKAGE_AUDIOFILE\n\tbool \"audiofile package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The audiofile package was removed as it is affected by\n\t  multiple CVEs and is not maintained anymore (no release since\n\t  2013).\n\nconfig BR2_BINUTILS_VERSION_2_33_X\n\tbool \"binutils 2.33.x has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  binutils 2.33.x has been removed, use a newer version.\n\nconfig BR2_PACKAGE_LIBUPNP18\n\tbool \"libupnp18 package removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LIBUPNP\n\thelp\n\t  Version 1.8.x of libupnp (i.e. libupnp18) has been removed\n\t  because it will never be fixed against CallStranger a.k.a.\n\t  CVE-2020-12695. The libupnp package (which has been updated to\n\t  version 1.14.x) has been selected instead.\n\nconfig BR2_PACKAGE_BOA\n\tbool \"boa package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The boa package was removed as it is affected by multiple\n\t  CVEs and is not maintained anymore (no release since 2005).\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IMX_SDMA\n\tbool \"imx sdma firmware is provided by firmware-imx\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_FREESCALE_IMX\n\tselect BR2_PACKAGE_FIRMWARE_IMX\n\thelp\n\t  linux-firmware provide the same firmware as firmware-imx.\n\t  We prefer using firmware-imx as the only provider.\n\nconfig BR2_GDB_VERSION_8_2\n\tbool \"gdb 8.2.x has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  gdb 8.2 support has been removed, you can use a newer\n\t  version such as 8.3 or more recent.\n\nconfig BR2_PACKAGE_HOST_RCW\n\tbool \"rcw package was renamed to qoriq-rcw\"\n\tselect BR2_PACKAGE_HOST_QORIQ_RCW\n\tselect BR2_LEGACY\n\thelp\n\t  The rcw package was specific to the QorIQ platform, so it has\n\t  been renamed to qoriq-rcw, to leave room for other *-rcw\n\t  packages for other platforms.\n\nconfig BR2_KERNEL_HEADERS_5_9\n\tbool \"kernel headers version 5.9.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 5.9.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_5_8\n\tbool \"kernel headers version 5.8.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 5.8.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_powerpc_601\n\tbool \"PowerPC 601 support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The support for the PowerPC 601 processors has been removed.\n\nconfig BR2_PACKAGE_TI_SGX_LIBGBM\n\tbool \"ti-sgx-libgbm support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  TI has merged the ti-sgx-libgbm package with the ti-sgx-um\n\t  package\n\nconfig BR2_PACKAGE_IPSEC_TOOLS\n\tbool \"ipsec-tools package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed as it has security issues and\n\t  has been abandoned since 2014.\n\ncomment \"Legacy options removed in 2020.11\"\n\nconfig BR2_PACKAGE_GPSD_FIXED_PORT_SPEED\n\tbool \"compile with fixed serial port speed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Since gpsd 3.20, GPSD_FIXED_PORT_SPEED is replaced\n\t  by runtime option --speed.\n\nconfig BR2_PACKAGE_GPSD_RECONFIGURE\n\tbool \"allow gpsd to change device settings\"\n\tselect BR2_LEGACY\n\thelp\n\t  Since gpsd 3.21, GPSD_RECONFIGURE is replaced\n\t  by runtime option --passive.\n\nconfig BR2_PACKAGE_GPSD_CONTROLSEND\n\tbool \"allow gpsctl/gpsmon to change device settings\"\n\tselect BR2_LEGACY\n\thelp\n\t  Option removed in gpsd 3.21\n\nconfig BR2_PACKAGE_OPENCV\n\tbool \"opencv package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed, use opencv3 instead.\n\nconfig BR2_PACKAGE_LIBCROCO\n\tbool \"libcroco package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed as it is affected by several\n\t  security issues such as CVE-2020-12825 which will never be\n\t  fixed as libcroco has been archived.\n\nconfig BR2_PACKAGE_BELLAGIO\n\tbool \"bellagio package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed as it is not maintained anymore\n\t  (no release since 2011).\n\nconfig BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY\n\tbool \"systemd-journal-gatewayd now in systemd-journal-remote\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE\n\thelp\n\t  All system journal remote programs are now enabled using\n\t  BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE.\n\nconfig BR2_TARGET_UBOOT_BOOT_SCRIPT\n\tbool \"u-boot script generation was moved\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT\n\thelp\n\t  Migrated U-Boot script generation to uboot-tools\n\n# Note: BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE is still referenced from\n# package/uboot-tools/Config.in\nconfig BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE\n\tstring \"The uboot script source string has been renamed\"\n\tdepends on BR2_TARGET_UBOOT_BOOT_SCRIPT\n\thelp\n\t  Migrated U-Boot script generation to uboot-tools.\n\t  New option is named\n\t  BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE\n\nconfig BR2_TARGET_UBOOT_ENVIMAGE\n\tbool \"u-boot env generation was moved\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE\n\thelp\n\t  Migrated U-Boot env generation to uboot-tools\n\n# Note: BR2_TARGET_UBOOT_ENVIMAGE_SOURCE is still referenced from\n# package/uboot-tools/Config.in\nconfig BR2_TARGET_UBOOT_ENVIMAGE_SOURCE\n\tstring \"The uboot env image source string has been renamed\"\n\tdepends on BR2_TARGET_UBOOT_ENVIMAGE\n\thelp\n\t  Migrated U-Boot env generation to uboot-tools.\n\t  New option is named\n\t  BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE\n\n# Note: BR2_TARGET_UBOOT_ENVIMAGE_SIZE is still referenced from\n# package/uboot-tools/Config.in\nconfig BR2_TARGET_UBOOT_ENVIMAGE_SIZE\n\tstring \"The uboot env image size string has been renamed\"\n\tdepends on BR2_TARGET_UBOOT_ENVIMAGE\n\thelp\n\t  Migrated U-Boot env generation to uboot-tools.\n\t  New option is named BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE\n\nconfig BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT\n\tbool \"u-boot env generation was moved\"\n\tdepends on BR2_TARGET_UBOOT_ENVIMAGE\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_REDUNDANT\n\thelp\n\t  Migrated U-Boot env generation to uboot-tools\n\nconfig BR2_PACKAGE_KISMET_CLIENT\n\tbool \"kismet client support was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Kismet client support was removed since version 2019-04-R1.\n\nconfig BR2_PACKAGE_KISMET_DRONE\n\tbool \"kismet drone support was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Kismet drone support was removed since version 2019-04-R1.\n\nconfig BR2_GCC_VERSION_7_X\n\tbool \"gcc 7.x support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for gcc version 7.x has been removed. The current\n\t  default version (9.x or later) has been selected instead.\n\nconfig BR2_PACKAGE_GST1_VALIDATE\n\tbool \"gst1-validate was moved to gst1-devtools\"\n\tselect BR2_PACKAGE_GST1_DEVTOOLS\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed, use gst1-devtools instead.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_YADIF\n\tbool \"gst1-plugins-bad yadif plugin was removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEINTERLACE\n\thelp\n\t  This plugin was removed with gst1-plugins-bad-1.18.0, the\n\t  same functionality has moved to gst1-plugins-good\n\t  deinterlace plugin (method=yadif).\n\nconfig BR2_PACKAGE_GQVIEW\n\tbool \"gqview package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed as it is not maintained anymore\n\t  (no release since 2006).\n\nconfig BR2_PACKAGE_WESTON_IMX\n\tbool \"weston-imx package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed, use weston instead.\n\nconfig BR2_KERNEL_HEADERS_5_7\n\tbool \"kernel headers version 5.7.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 5.7.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_PACKAGE_TINYHTTPD\n\tbool \"tinyhttpd package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The tinyhttpd package was removed as it is affected by\n\t  CVE-2002-1819 and is not maintained anymore (no release since\n\t  2001).\n\nconfig BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX\n\tbool \"X.org Enable AIGLX Extension\"\n\tselect BR2_LEGACY\n\thelp\n\t  AIGLX Extension was removed in X.org X server version 1.19.0\n\nconfig BR2_PACKAGE_AMD_CATALYST\n\tbool \"amd-catalyst\"\n\tselect BR2_LEGACY\n\thelp\n\t  Current X.org server is incompatible with this driver.\n\nconfig BR2_PACKAGE_NVIDIA_TEGRA23\n\tbool \"nvidia-tegra23 package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Current X.org server is incompatible with this driver.\n\nconfig BR2_GDB_VERSION_8_1\n\tbool \"gdb 8.1.x has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The 8.1.x version of gdb has been removed. Use a newer\n\t  version instead.\n\ncomment \"Legacy options removed in 2020.08\"\n\nconfig BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64\n\tbool \"toolchain-external-codesourcery-amd64 removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The CodeSourcery toolchain for AMD64, in version 2016.11 was\n\t  dropped, due to it using a too old gcc 6.2.0 compiler which\n\t  caused issues compiling a number of recent packages\n\t  (e.g. Boost). CodeSourcery has stopped making newer versions\n\t  of this toolchain publicly available, so it was not possible\n\t  to update it.\n\nconfig BR2_KERNEL_HEADERS_5_6\n\tbool \"kernel headers version 5.6.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 5.6.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_5_5\n\tbool \"kernel headers version 5.5.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 5.5.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_BINUTILS_VERSION_2_31_X\n\tbool \"binutils version 2.31.1 support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for binutils version 2.31.1 has been removed. The\n\t  current default version (2.33.1 or later) has been selected\n\t  instead.\n\nconfig BR2_PACKAGE_KODI_PERIPHERAL_STEAMCONTROLLER\n\tbool \"kodi-peripheral-steamcontroller package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package is broken.\n\ncomment \"Legacy options removed in 2020.05\"\n\nconfig BR2_PACKAGE_WIRINGPI\n\tbool \"wiringpi package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The author of wiringpi has deprecated the package, and\n\t  completely removed the git tree that was serving the\n\t  sources, with this message:\n\t  Please look for alternatives for wiringPi\n\nconfig BR2_PACKAGE_PYTHON_PYCRYPTO\n\tbool \"python-pycrypto package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package has been removed, use python-pycryptodomex\n\t  instead.\n\nconfig BR2_PACKAGE_MTDEV2TUIO\n\tbool \"mtdev2tuio package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The mtdev2tuio package was removed as it breaks the builds\n\t  every now and then and is not maintained upstream.\n\nconfig BR2_PACKAGE_EZXML\n\tbool \"ezxml package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The ezXML package was removed as it is affected by several\n\t  CVEs and is not maintained anymore (no release since 2006).\n\nconfig BR2_PACKAGE_COLLECTD_LVM\n\tbool \"lvm support in collectd was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  collectd removed LVM plugin, liblvm2app has been deprecated\n\nconfig BR2_PACKAGE_PYTHON_PYASN\n\tbool \"duplicate python-pyasn1 package removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_PYTHON_PYASN1\n\thelp\n\t  This package was a duplicate of python-pyasn1.\n\nconfig BR2_PACKAGE_PYTHON_PYASN_MODULES\n\tbool \"duplicate python-pyasn1-modules package removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_PYTHON_PYASN1_MODULES\n\thelp\n\t  This package was a duplicate of python-pyasn1-modules.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA6174\n\tbool \"duplicate QCA6174 firmware symbol removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174\n\thelp\n\t  This config symbol duplicates existing symbol for QCA6174\n\t  firmware.\n\nconfig BR2_PACKAGE_QT5CANVAS3D\n\tbool \"qt5canvas3d was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This Qt5 module was removed by the upstream Qt project since\n\t  Qt 5.13, so the corresponding Buildroot package was removed\n\t  as well.\n\nconfig BR2_PACKAGE_KODI_LIBTHEORA\n\tbool \"libtheora support in Kodi was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Kodi does not need libtheora\n\nconfig BR2_PACKAGE_CEGUI06\n\tbool \"BR2_PACKAGE_CEGUI06 was renamed\"\n\tselect BR2_PACKAGE_CEGUI\n\tselect BR2_LEGACY\n\thelp\n\t  The BR2_PACKAGE_CEGUI06 config symbol was renamed to\n\t  BR2_PACKAGE_CEGUI.\n\nconfig BR2_GCC_VERSION_5_X\n\tbool \"gcc 5.x support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for gcc version 5.x has been removed. The current\n\t  default version (8.x or later) has been selected instead.\n\ncomment \"Legacy options removed in 2020.02\"\n\nconfig BR2_PACKAGE_JAMVM\n\tbool \"jamvm removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  JamVM has not had a release since 2014 and is unmaintained.\n\nconfig BR2_PACKAGE_CLASSPATH\n\tbool \"classpath removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  GNU Classpath package was removed. The last upstream\n\t  release was in 2012 and there hasn't been a commit\n\t  since 2016.\n\nconfig BR2_PACKAGE_QT5_VERSION_5_6\n\tbool \"qt 5.6 support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for Qt 5.6 is EOL and has been removed. The current\n\t  version (5.12 or later) has been selected instead.\n\nconfig BR2_PACKAGE_CURL\n\tbool \"BR2_PACKAGE_CURL was renamed\"\n\tselect BR2_PACKAGE_LIBCURL_CURL\n\tselect BR2_LEGACY\n\thelp\n\t  The BR2_PACKAGE_CURL config symbol was renamed to\n\t  BR2_PACKAGE_LIBCURL_CURL.\n\nconfig BR2_PACKAGE_GSTREAMER\n\tbool \"gstreamer-0.10 removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Gstreamer-0.10 package was removed. It has been deprecated\n\t  upstream since 2012, and is missing a lot of features and\n\t  fixes compared to gstreamer-1.x.\n\nconfig BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS\n\tbool \"nvidia-tegra23 binaries gstreamer 0.10.x support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Gstreamer 0.10.x is no longer available in Buildroot, so\n\t  neither is the support in nvidia-tegra23 binaries.\n\nconfig BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_NV_SAMPLE_APPS\n\tbool \"nvidia-tegra23 binaries sample apps removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Gstreamer 0.10.x is no longer available in Buildroot, so\n\t  neither is the support in nvidia-tegra23 binaries.\n\nconfig BR2_PACKAGE_FREERDP_GSTREAMER\n\tbool \"freerdp gstreamer 0.10.x support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Gstreamer 0.10.x is no longer available in Buildroot, so\n\t  neither is the support in freerdp.\n\nconfig BR2_PACKAGE_OPENCV3_WITH_GSTREAMER\n\tbool \"opencv3 gstreamer 0.10.x support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Gstreamer 0.10.x is no longer available in Buildroot, so\n\t  neither is the support in opencv3.\n\nconfig BR2_PACKAGE_OPENCV_WITH_GSTREAMER\n\tbool \"opencv gstreamer 0.10.x support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Gstreamer 0.10.x is no longer available in Buildroot, so\n\t  neither is the support in opencv.\n\nconfig BR2_PACKAGE_LIBPLAYER\n\tbool \"libplayer package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The libplayer package was removed. The latest release is\n\t  from 2010 and none of the backends are available in\n\t  Buildroot any more.\n\nconfig BR2_GCC_VERSION_OR1K\n\tbool \"gcc 5.x fork for or1k has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for gcc 5.x for or1k has been removed. The current\n\t  default version (9.x or later) has been selected instead.\n\nconfig BR2_PACKAGE_BLUEZ_UTILS\n\tbool \"bluez-utils was removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_BLUEZ5_UTILS if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 \\\n\t\t&& BR2_TOOLCHAIN_HAS_SYNC_4\n\thelp\n\t  The bluez-utils (BlueZ 4.x) package was removed as it is\n\t  deprecated since a long time. As an alternative, the\n\t  bluez5-utils (BlueZ 5.x) has been automatically selected in\n\t  your configuration.\n\nconfig BR2_PACKAGE_GADGETFS_TEST\n\tbool \"gadgetfs-test was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The gadgetfs-test package was removed. Gadgetfs has been\n\t  deprecated in favour of functionfs. Consider using\n\t  gadget-tool (gt) instead.\n\nconfig BR2_PACKAGE_FIS\n\tbool \"fis was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The fis package was removed.\n\nconfig BR2_PACKAGE_REFPOLICY_POLICY_VERSION\n\tstring \"refpolicy policy version\"\n\thelp\n\t  The refpolicy policy version option has been moved to the\n\t  libsepol package.\n\nconfig BR2_PACKAGE_REFPOLICY_POLICY_VERSION_WRAP\n\tbool\n\tdefault y if BR2_PACKAGE_REFPOLICY_POLICY_VERSION != \"\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_CELT051\n\tbool \"celt051 package was removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_OPUS\n\thelp\n\t  The celt051 package was removed as it is now obsolete since\n\t  the CELT codec has been merged into the IETF Opus codec. As\n\t  a result, the opus package has been automatically selected\n\t  in your configuration.\n\nconfig BR2_PACKAGE_WIREGUARD\n\tbool \"wireguard package renamed\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_WIREGUARD_LINUX_COMPAT if BR2_LINUX_KERNEL\n\tselect BR2_PACKAGE_WIREGUARD_TOOLS\n\thelp\n\t  The wireguard package has been renamed to wireguard-tools\n\t  for the userspace tooling and wireguard-linux-compat for the\n\t  kernel side for legacy (<5.6) kernels to match upstream.\n\nconfig BR2_PACKAGE_PERL_NET_PING\n\tbool \"perl-net-ping was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Net::Ping is a Perl core module (ie. bundled with perl).\n\nconfig BR2_PACKAGE_PERL_MIME_BASE64\n\tbool \"perl-mime-base64 was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  MIME::Base64 is a Perl core module (ie. bundled with perl).\n\nconfig BR2_PACKAGE_PERL_DIGEST_MD5\n\tbool \"perl-digest-md5 was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Digest::MD5 is a Perl core module (ie. bundled with perl).\n\nconfig BR2_PACKAGE_ERLANG_P1_ICONV\n\tbool \"erlang-p1-iconv has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The erlang-p1-iconv package was no longer used by ejabberd,\n\t  and was no longer maintained upstream, so it was removed.\n\nconfig BR2_KERNEL_HEADERS_5_3\n\tbool \"kernel headers version 5.3.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 5.3.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_PACKAGE_PYTHON_SCAPY3K\n\tbool \"python-scapy3k is replaced by python-scapy\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_PYTHON_SCAPY\n\thelp\n\t  python-scapy3k has been deprecated, since python-scapy has\n\t  gained Python 3 support. Use BR2_PACKAGE_PYTHON_SCAPY\n\t  instead.\n\nconfig BR2_BINUTILS_VERSION_2_30_X\n\tbool \"binutils version 2.30 support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for binutils version 2.30 has been removed. The\n\t  current default version (2.31 or later) has been selected\n\t  instead.\n\nconfig BR2_PACKAGE_RPI_USERLAND_START_VCFILED\n\tbool \"rpi-userland start vcfiled was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The vcfiled support was removed upstream.\n\ncomment \"Legacy options removed in 2019.11\"\n\nconfig BR2_PACKAGE_OPENVMTOOLS_PROCPS\n\tbool \"openvmtools' procps support was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Upstream stopped supporting this option a while ago.\n\nconfig BR2_PACKAGE_ALLJOYN\n\tbool \"alljoyn was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The alljoyn framework is dead\n\nconfig BR2_PACKAGE_ALLJOYN_BASE\n\tbool \"alljoyn-base was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The alljoyn framework is dead\n\nconfig BR2_PACKAGE_ALLJOYN_BASE_CONTROLPANEL\n\tbool \"alljoyn-base control panel was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The alljoyn framework is dead\n\nconfig BR2_PACKAGE_ALLJOYN_BASE_NOTIFICATION\n\tbool \"alljoyn-base notification was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The alljoyn framework is dead\n\nconfig BR2_PACKAGE_ALLJOYN_BASE_ONBOARDING\n\tbool \"alljoyn-base onboarding was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The alljoyn framework is dead\n\nconfig BR2_PACKAGE_ALLJOYN_TCL_BASE\n\tbool \"alljoyn-tcl-base was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The alljoyn framework is dead\n\nconfig BR2_PACKAGE_ALLJOYN_TCL\n\tbool \"alljoyn-tcl was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The alljoyn framework is dead\n\nconfig BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS\n\tstring \"toolchain-external extra libs option has been renamed\"\n\thelp\n\t  The option BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS has\n\t  been renamed to BR2_TOOLCHAIN_EXTRA_LIBS.\n\nconfig BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS_WRAP\n\tbool\n\tdefault y if BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS != \"\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_PYTHON_PYSNMP_APPS\n\tbool \"python-pysnmp-apps was removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_SNMPCLITOOLS\n\thelp\n\t  Following upstream changes, the python-pysnmp-apps package\n\t  has been removed, and snmpclitools should be used as a\n\t  replacement.\n\nconfig BR2_KERNEL_HEADERS_5_2\n\tbool \"kernel headers version 5.2.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 5.2.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_TARGET_RISCV_PK\n\tbool \"riscv-pk was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The RISC-V Proxy Kernel (pk) and Berkley Boot Loader (BBL)\n\t  have been replaced with OpenSBI.\n\nconfig BR2_PACKAGE_SQLITE_STAT3\n\tbool \"sqlite stat3 support was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Upstream removed the support for stat3.\n\nconfig BR2_KERNEL_HEADERS_5_1\n\tbool \"kernel headers version 5.1.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 5.1.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_PACKAGE_DEVMEM2\n\tbool \"devmem2 package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Use the the Busybox devmem utility, instead, which provides\n\t  the same functionality.\n\nconfig BR2_PACKAGE_USTR\n\tbool \"ustr package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The 'ustr' package was only used by SELinux libsemanage, but\n\t  since SELinux 2.7, ustr is no longer used. Therefore, we\n\t  removed this package from Buildroot.\n\nconfig BR2_PACKAGE_KODI_SCREENSAVER_PLANESTATE\n\tbool \"kodi-screensaver-planestate package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package is incompatible with Kodi 18.x.\n\nconfig BR2_PACKAGE_KODI_VISUALISATION_WAVEFORHUE\n\tbool \"kodi-visualisation-waveforhue package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package is incompatible with Kodi 18.x.\n\nconfig BR2_PACKAGE_KODI_AUDIODECODER_OPUS\n\tbool \"kodi-audiodecoder-opus package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package is incompatible with Kodi 18.x.\n\nconfig BR2_PACKAGE_MESA3D_OSMESA\n\tbool \"mesa OSMesa option renamed\"\n\tselect BR2_PACKAGE_MESA3D_OSMESA_CLASSIC if BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST\n\tselect BR2_LEGACY\n\thelp\n\t  The option was renamed in order to match the naming used\n\t  by the meson buildsystem.\n\nconfig BR2_PACKAGE_HOSTAPD_DRIVER_RTW\n\tbool \"hostapd rtl871xdrv driver removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Since the update of hostapd to 2.9, the patch provided for\n\t  the rtl871xdrv no longer works, although it\n\t  applies. Moreover, AP support for Realtek chips is broken\n\t  anyway in kernels > 4.9. Therefore, this option has been\n\t  removed.\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW\n\tbool \"new dbus support option in wpa_supplicant was renamed\"\n\tselect BR2_PACKAGE_WPA_SUPPLICANT_DBUS if BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_LEGACY\n\thelp\n\t  The new dbus support option was renamed.\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD\n\tbool \"old dbus support in wpa_supplicant was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The old dbus support was removed.\n\ncomment \"Legacy options removed in 2019.08\"\n\nconfig BR2_TARGET_TS4800_MBRBOOT\n\tbool \"ts4800-mbrboot package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The defconfig for the TS4800 platform has been removed, so\n\t  the ts4800-mbrboot package, containing the boot code for\n\t  this specific platform has been removed as welL.\n\nconfig BR2_PACKAGE_LIBAMCODEC\n\tbool \"liamcodec package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for odroidc2 based systems was removed, making the\n\t  libamcodec package useless.\n\nconfig BR2_PACKAGE_ODROID_SCRIPTS\n\tbool \"odroid-scripts package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for odroidc2 based systems was removed, making the\n\t  odroid-scripts package useless.\n\nconfig BR2_PACKAGE_ODROID_MALI\n\tbool \"odroid-mali package was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for odroidc2 based systems was removed, making the\n\t  odroid-mali package useless.\n\nconfig BR2_PACKAGE_KODI_PLATFORM_AML\n\tbool \"Kodi AMLogic support was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for AMLogic was removed due to the removal of the\n\t  odroidc2 defconfig.\n\nconfig BR2_GCC_VERSION_6_X\n\tbool \"gcc 6.x support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for gcc version 6.x has been removed. The current\n\t  default version (8.x or later) has been selected instead.\n\nconfig BR2_GCC_VERSION_4_9_X\n\tbool \"gcc 4.9.x support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for gcc version 4.9.x has been removed. The current\n\t  default version (8.x or later) has been selected instead.\n\nconfig BR2_GDB_VERSION_7_12\n\tbool \"gdb 7.12.x has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The 7.12.x version of gdb has been removed. Use a newer\n\t  version instead.\n\nconfig BR2_PACKAGE_XAPP_MKFONTDIR\n\tbool \"mkfontdir is now included in xapp_mkfontscale\"\n\tselect BR2_PACKAGE_XAPP_MKFONTSCALE\n\tselect BR2_LEGACY\n\thelp\n\t  xapp_mkfontscale now includes the mkfontdir script previously\n\t  distributed separately for compatibility with older X11\n\t  versions.\n\nconfig BR2_GDB_VERSION_8_0\n\tbool \"gdb 8.0.x has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The 8.0.x version of gdb has been removed. Use a newer\n\t  version instead.\n\nconfig BR2_KERNEL_HEADERS_4_20\n\tbool \"kernel headers version 4.20.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.20.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_5_0\n\tbool \"kernel headers version 5.0.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 5.0.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\ncomment \"Legacy options removed in 2019.05\"\n\nconfig BR2_CSKY_DSP\n\tbool \"C-SKY DSP support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  C-SKY DSP instruction support for ck810 / ck807 was removed,\n\t  as it was no longer supported in C-SKY gcc. Perhaps the VDSP\n\t  instructions should be used instead, using the BR2_CSKY_VDSP\n\t  option.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COMPOSITOR\n\tbool \"compositor moved to gst1-plugins-base\"\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_COMPOSITOR\n\tselect BR2_LEGACY\n\thelp\n\t  The gst1-plugins-bad compositor plugin has moved\n\t  to gst1-plugins-base.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA\n\tbool \"gst-plugins-bad IQA option was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The gst1-plugins-bad IQA option was removed.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENCV\n\tbool \"gst-plugins-bad opencv option was removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The gst1-plugins-bad opencv option was removed because\n\t  buildroot does not have the opencv_contrib package which\n\t  is required for the bgsegm module which gst1-plugins-bad\n\t  now requires along with opencv3.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_STEREO\n\tbool \"stereo was merged into audiofx in gst1-plugins-good\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX\n\thelp\n\t  The gst1-plugins-bad stereo plugin has merged with the\n\t  gst1-plugins-base audiofx plugin.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VCD\n\tbool \"gst-plugins-bad vcd plugin was removed.\"\n\tselect BR2_LEGACY\n\thelp\n\t  The gst1-plugins-bad vcd plugin was removed.\n\nconfig BR2_PACKAGE_LUNIT\n\tbool \"lunit package removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LUA_LUNITX\n\thelp\n\t  The lunit package was removed in favor of its fork lunitx,\n\t  which supports all versions of Lua.\n\nconfig BR2_PACKAGE_FFMPEG_FFSERVER\n\tbool \"ffmpeg ffserver removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  On July 10th, 2016, ffserver program has been dropped.\n\nconfig BR2_PACKAGE_LIBUMP\n\tbool \"libump package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The libump package was removed, it was only used as a\n\t  dependency of sunxi-mali, which itself was removed.\n\nconfig BR2_PACKAGE_SUNXI_MALI\n\tbool \"sunxi-mali package removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_SUNXI_MALI_MAINLINE\n\thelp\n\t  The sunxi-mali package was removed, as the\n\t  sunxi-mali-mainline package replaces it for mainline\n\t  kernels on Allwinner platforms.\n\nconfig BR2_BINUTILS_VERSION_2_29_X\n\tbool \"binutils version 2.29 support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for binutils version 2.29 has been removed. The\n\t  current default version (2.31 or later) has been selected\n\t  instead.\n\nconfig BR2_BINUTILS_VERSION_2_28_X\n\tbool \"binutils version 2.28 support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for binutils version 2.28 has been removed. The\n\t  current default version (2.31 or later) has been selected\n\t  instead.\n\nconfig BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_APEXSINK\n\tbool \"gst-plugins-bad apexsink option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The gst-plugins-bad apexsink option was removed.\n\ncomment \"Legacy options removed in 2019.02\"\n\nconfig BR2_PACKAGE_QT\n\tbool \"qt package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The qt package was removed.\n\nconfig BR2_PACKAGE_QTUIO\n\tbool \"qtuio package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The qtuio package was removed.\n\nconfig BR2_PACKAGE_PINENTRY_QT4\n\tbool \"pinentry-qt4 option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The pinentry-qt4 option was removed.\n\nconfig BR2_PACKAGE_POPPLER_QT\n\tbool \"poppler qt option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The poppler qt option was removed.\n\nconfig BR2_PACKAGE_OPENCV3_WITH_QT\n\tbool \"opencv3 qt backend option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The opencv3 qt backend option was removed.\n\nconfig BR2_PACKAGE_OPENCV_WITH_QT\n\tbool \"opencv qt backend option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The opencv qt backend option was removed.\n\nconfig BR2_PACKAGE_AMD_CATALYST_CCCLE\n\tbool \"catalyst control center option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The AMD Catalyst Control Center option was removed.\n\nconfig BR2_PACKAGE_SDL_QTOPIA\n\tbool \"sdl qtopia video driver option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The SDL QTopia video driver option was removed.\n\nconfig BR2_PACKAGE_PYTHON_PYQT\n\tbool \"python-pyqt package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The python-pyqt package was removed. Consider python-pyqt5\n\t  instead.\n\nconfig BR2_PACKAGE_LUACRYPTO\n\tbool \"luacrypto package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The luacrypto package was removed. Consider luaossl instead.\n\nconfig BR2_PACKAGE_TN5250\n\tbool \"tn5250 package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The tn5250 package was removed.\n\nconfig BR2_PACKAGE_BOOST_SIGNALS\n\tbool \"Boost signals removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Its removal was announced in boost 1.68 and its deprecation\n\t  was announced in 1.54. Users are encouraged to use Signals2\n\t  instead.\n\nconfig BR2_PACKAGE_FFTW_PRECISION_SINGLE\n\tbool \"single\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_FFTW_SINGLE\n\thelp\n\t  This option has been removed in favor of\n\t  BR2_PACKAGE_FFTW_SINGLE.\n\nconfig BR2_PACKAGE_FFTW_PRECISION_DOUBLE\n\tbool \"double\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_FFTW_DOUBLE\n\thelp\n\t  This option has been removed in favor of\n\t  BR2_PACKAGE_FFTW_DOUBLE.\n\nconfig BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE\n\tbool \"long double\"\n\tdepends on !(BR2_TOOLCHAIN_BUILDROOT_UCLIBC && \\\n\t\t(BR2_arm || BR2_mips || BR2_mipsel))\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_FFTW_LONG_DOUBLE\n\thelp\n\t  This option has been removed in favor of\n\t  BR2_PACKAGE_FFTW_LONG_DOUBLE.\n\nconfig BR2_PACKAGE_FFTW_PRECISION_QUAD\n\tbool \"quad\"\n\tdepends on (BR2_i386 || BR2_x86_64) && BR2_USE_WCHAR\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_FFTW_QUAD\n\thelp\n\t  This option has been removed in favor of\n\t  BR2_PACKAGE_FFTW_QUAD.\n\nconfig BR2_PACKAGE_LUA_5_2\n\tbool \"Lua 5.2.x version removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LUA_5_3\n\thelp\n\t  The Lua 5.2.x version was removed.\n\nconfig BR2_TARGET_GENERIC_PASSWD_MD5\n\tbool \"target passwd md5 format support has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The default has been moved to SHA256 and all C libraries\n\t  now support that method by default\n\ncomment \"Legacy options removed in 2018.11\"\n\nconfig BR2_TARGET_XLOADER\n\tbool \"xloader has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The package has been removed as u-boot SPL provides\n\t  similar functionality\n\nconfig BR2_PACKAGE_TIDSP_BINARIES\n\tbool \"tidsp-binaries package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The tidsp-binaries package was removed.\n\nconfig BR2_PACKAGE_DSP_TOOLS\n\tbool \"dsp-tools package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The dsp-tools package was removed.\n\nconfig BR2_PACKAGE_GST_DSP\n\tbool \"gst-dsp package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The gst-dsp package was removed.\n\nconfig BR2_PACKAGE_BOOTUTILS\n\tbool \"bootutils package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The bootutils package was removed.\n\nconfig BR2_PACKAGE_EXPEDITE\n\tbool \"expedite package has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  expedite is not actively maintained anymore.\n\t  https://sourceforge.net/p/enlightenment/mailman/message/36428571\n\nconfig BR2_PACKAGE_MESA3D_OPENGL_TEXTURE_FLOAT\n\tbool \"mesa3d opengl texture float option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  mesa3d now unconditionally enables floating-point textures,\n\t  as the corresponding patent has expired.\n\nconfig BR2_KERNEL_HEADERS_4_10\n\tbool \"kernel headers version 4.10.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.10.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_4_11\n\tbool \"kernel headers version 4.11.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.11.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_4_12\n\tbool \"kernel headers version 4.12.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.12.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_4_13\n\tbool \"kernel headers version 4.13.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.13.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_4_15\n\tbool \"kernel headers version 4.15.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.15.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_4_17\n\tbool \"kernel headers version 4.17.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.17.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_PACKAGE_LIBNFTNL_XML\n\tbool \"libnftl no longer supports XML output\"\n\tselect BR2_LEGACY\n\thelp\n\t  libnftnl removed integration with libmxml.\n\nconfig BR2_KERNEL_HEADERS_3_2\n\tbool \"kernel headers version 3.2.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 3.2.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_4_1\n\tbool \"kernel headers version 4.1.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.1.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_4_16\n\tbool \"kernel headers version 4.16.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.16.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_4_18\n\tbool \"kernel headers version 4.18.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.18.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\n###############################################################################\ncomment \"Legacy options removed in 2018.08\"\n\nconfig BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT\n\tbool \"docker-engine static client option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DOCKER_CLI_STATIC\n\thelp\n\t  BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT has been renamed to\n\t  BR2_PACKAGE_DOCKER_CLI_STATIC, following the package split of\n\t  docker-engine and docker-cli.\n\nconfig BR2_PACKAGE_XPROTO_APPLEWMPROTO\n\tbool \"xproto-applewmproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-applewmproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_BIGREQSPROTO\n\tbool \"xproto-bigreqsproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-bigreqsproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_COMPOSITEPROTO\n\tbool \"xproto-compositeproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-compositeproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_DAMAGEPROTO\n\tbool \"xproto-dameproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-dameproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_DMXPROTO\n\tbool \"xproto-dmxproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-dmxproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_DRI2PROTO\n\tbool \"xproto-dri2proto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-dri2proto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_DRI3PROTO\n\tbool \"xproto-dri3proto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-dri3proto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_FIXESPROTO\n\tbool \"xproto-fixesproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-fixesproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_FONTCACHEPROTO\n\tbool \"xproto-fontcacheproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-fontcacheproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_FONTSPROTO\n\tbool \"xproto-fontsproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-fontsproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_GLPROTO\n\tbool \"xproto-glproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-glproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_INPUTPROTO\n\tbool \"xproto-inputproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-inputproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_KBPROTO\n\tbool \"xproto-kbproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-kbproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_PRESENTPROTO\n\tbool \"xproto-presentproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-presentproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_RANDRPROTO\n\tbool \"xproto-randrproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-randrproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_RECORDPROTO\n\tbool \"xproto-recordproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-recordproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_RENDERPROTO\n\tbool \"xproto-renderproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-renderproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_RESOURCEPROTO\n\tbool \"xproto-resourceproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-resourceproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_SCRNSAVERPROTO\n\tbool \"xproto-scrnsaverprot package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-scrnsaverprot package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_VIDEOPROTO\n\tbool \"xproto-videoproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-videoproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_WINDOWSWMPROTO\n\tbool \"xproto-windowswmproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-windowswmproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_XCMISCPROTO\n\tbool \"xproto-xcmiscproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-xcmiscproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_XEXTPROTO\n\tbool \"xproto-xextproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-xextproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_XF86BIGFONTPROTO\n\tbool \"xproto-xf86bigfontproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-xf86bigfontproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_XF86DGAPROTO\n\tbool \"xproto-xf86dgaproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-xf86dgaproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_XF86DRIPROTO\n\tbool \"xproto-xf86driproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-xf86driproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_XF86VIDMODEPROTO\n\tbool \"xproto-xf86vidmodeproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-xf86vidmodeproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_XINERAMAPROTO\n\tbool \"xproto-xineramaproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-xineramaproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_XPROTO\n\tbool \"xproto-xproto package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-xproto package has been replaced by the\n\t  xorgproto package, which combines all xproto_* packages.\n\nconfig BR2_PACKAGE_XPROTO_XPROXYMANAGEMENTPROTOCOL\n\tbool \"xproto-xproxymanagementprotocol package replaced by xorgproto\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  The xproto-xproxymanagementprotocol package has been\n\t  replaced by the xorgproto package, which combines all\n\t  xproto_* packages.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_OPENGL\n\tbool \"gst1-plugins-bad opengl option moved to gst1-plugins-base\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL\n\thelp\n\t  The opengl option has been moved from gst1-plugins-bad to\n\t  gst1-plugins-base.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLES2\n\tbool \"gst1-plugins-bad gles2 option moved to gst1-plugins-base\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLES2\n\thelp\n\t  The gles2 option has been moved from gst1-plugins-bad to\n\t  gst1-plugins-base.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLX\n\tbool \"gst1-plugins-bad glx option moved to gst1-plugins-base\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLX\n\thelp\n\t  The glx option has been moved from gst1-plugins-bad to\n\t  gst1-plugins-base.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_EGL\n\tbool \"gst1-plugins-bad egl option moved to gst1-plugins-base\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL\n\thelp\n\t  The egl option has been moved from gst1-plugins-bad to\n\t  gst1-plugins-base.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_X11\n\tbool \"gst1-plugins-bad x11 option moved to gst1-plugins-base\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_X11\n\thelp\n\t  The x11 option has been moved from gst1-plugins-bad to\n\t  gst1-plugins-base.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_WAYLAND\n\tbool \"gst1-plugins-bad wayland option moved to gst1-plugins-base\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_WAYLAND\n\thelp\n\t  The wayland option has been moved from gst1-plugins-bad to\n\t  gst1-plugins-base.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_DISPMANX\n\tbool \"gst1-plugins-bad dispmanx option moved to gst1-plugins-base\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_DISPMANX\n\thelp\n\t  The dispmanx option has been moved from gst1-plugins-mad to\n\t  gst1-plugins-base.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER\n\tbool \"gst1-plugins-bad audiomixer option moved to gst1-plugins-base\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOMIXER\n\thelp\n\t  The audiomixer option has been moved from gst1-plugins-bad to\n\t  gst1-plugins-base.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_LAME\n\tbool \"gst1-plugins-ugly lame option moved to gst1-plugins-good\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAME\n\thelp\n\t  The lame option has been moved from gst1-plugins-ugly to\n\t  gst1-plugins-good.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPG123\n\tbool \"gst1-plugins-ugly mpg123 option moved to gst1-plugins-good\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MPG123\n\thelp\n\t  The mpg123 option has been moved from gst1-plugins-ugly to\n\t  gst1-plugins-good.\n\nconfig BR2_GDB_VERSION_7_11\n\tbool \"gdb 7.11 has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The 7.11 version of gdb has been removed. Use a newer version\n\t  instead.\n\nconfig BR2_GDB_VERSION_7_10\n\tbool \"gdb 7.10 has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The 7.10 version of gdb has been removed. Use a newer version\n\t  instead.\n\n###############################################################################\ncomment \"Legacy options removed in 2018.05\"\n\nconfig BR2_PACKAGE_MEDIAART_BACKEND_NONE\n\tbool \"libmediaart none backend option renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_MEDIAART_BACKEND_NONE has been renamed to\n\t  BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE\n\nconfig BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF\n\tbool \"libmediaart gdk-pixbuf backend option renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF has been renamed to\n\t  BR2_PACKAGE_LIBMEDIAART_BACKEND_GDK_PIXBUF\n\nconfig BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF\n\tbool \"libmediaart qt backend option renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_MEDIAART_BACKEND_QT has been renamed to\n\t  BR2_PACKAGE_LIBMEDIAART_BACKEND_QT\n\n# Note: BR2_PACKAGE_TI_SGX_AM335X is still referenced from\n# package/ti-sgx-km/Config.in\nconfig BR2_PACKAGE_TI_SGX_AM335X\n\tbool \"ti-sgx-km AM335X option renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_TI_SGX_AM335X has been renamed to\n\t  BR2_PACKAGE_TI_SGX_KM_AM335X.\n\n# Note: BR2_PACKAGE_TI_SGX_AM437X is still referenced from\n# package/ti-sgx-km/Config.in\nconfig BR2_PACKAGE_TI_SGX_AM437X\n\tbool \"ti-sgx-km AM437X option renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_TI_SGX_AM437X has been renamed to\n\t  BR2_PACKAGE_TI_SGX_KM_AM437X.\n\n# Note: BR2_PACKAGE_TI_SGX_AM4430 is still referenced from\n# package/ti-sgx-km/Config.in\nconfig BR2_PACKAGE_TI_SGX_AM4430\n\tbool \"ti-sgx-km AM4430 option renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_TI_SGX_AM4430 has been renamed to\n\t  BR2_PACKAGE_TI_SGX_KM_AM4430.\n\n# Note: BR2_PACKAGE_TI_SGX_AM5430 is still referenced from\n# package/ti-sgx-km/Config.in\nconfig BR2_PACKAGE_TI_SGX_AM5430\n\tbool \"ti-sgx-km AM5430 option renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_TI_SGX_AM5430 has been renamed to\n\t  BR2_PACKAGE_TI_SGX_KM_AM5430.\n\nconfig BR2_PACKAGE_JANUS_AUDIO_BRIDGE\n\tbool \"janus-gateway audio-bridge option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_AUDIO_BRIDGE has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE.\n\nconfig BR2_PACKAGE_JANUS_ECHO_TEST\n\tbool \"janus-gateway echo-test option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_ECHO_TEST has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST.\n\nconfig BR2_PACKAGE_JANUS_RECORDPLAY\n\tbool \"janus-gateway recordplay option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_RECORDPLAY has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY.\n\nconfig BR2_PACKAGE_JANUS_SIP_GATEWAY\n\tbool \"janus-gateway sip-gateway option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_SIP_GATEWAY has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY.\n\nconfig BR2_PACKAGE_JANUS_STREAMING\n\tbool \"janus-gateway streaming option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_STREAMING\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_STREAMING has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_STREAMING.\n\nconfig BR2_PACKAGE_JANUS_TEXT_ROOM\n\tbool \"janus-gateway text-room option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_TEXT_ROOM has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM.\n\nconfig BR2_PACKAGE_JANUS_VIDEO_CALL\n\tbool \"janus-gateway video-call option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_VIDEO_CALL has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL.\n\nconfig BR2_PACKAGE_JANUS_VIDEO_ROOM\n\tbool \"janus-gateway video-room option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_VIDEO_ROOM has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM.\n\nconfig BR2_PACKAGE_JANUS_MQTT\n\tbool \"janus-gateway mqtt option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_MQTT\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_MQTT has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_MQTT.\n\nconfig BR2_PACKAGE_JANUS_RABBITMQ\n\tbool \"janus-gateway rabbitmq option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_RABBITMQ has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ.\n\nconfig BR2_PACKAGE_JANUS_REST\n\tbool \"janus-gateway rest option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_REST\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_REST has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_REST.\n\nconfig BR2_PACKAGE_JANUS_UNIX_SOCKETS\n\tbool \"janus-gateway unix-sockets option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_UNIX_SOCKETS has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS.\n\nconfig BR2_PACKAGE_JANUS_WEBSOCKETS\n\tbool \"janus-gateway websockets option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS\n\thelp\n\t  For consistency reasons, the janus-gateway option\n\t  BR2_PACKAGE_JANUS_WEBSOCKETS has been renamed to\n\t  BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS.\n\nconfig BR2_PACKAGE_IPSEC_SECCTX_DISABLE\n\tbool \"ipsec-tools security context disable option renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_IPSEC_SECCTX_DISABLE was renamed to\n\t  BR2_PACKAGE_IPSEC_TOOLS_SECCTX_DISABLE.\n\nconfig BR2_PACKAGE_IPSEC_SECCTX_ENABLE\n\tbool \"ipsec-tools SELinux security context enable option renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_IPSEC_SECCTX_ENABLE was renamed to\n\t  BR2_PACKAGE_IPSEC_TOOLS_SECCTX_ENABLE.\n\nconfig BR2_PACKAGE_IPSEC_SECCTX_KERNEL\n\tbool \"ipsec-tools kernel security context enable option renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_IPSEC_SECCTX_KERNEL was renamed to\n\t  BR2_PACKAGE_IPSEC_TOOLS_SECCTX_KERNEL.\n\nconfig BR2_PACKAGE_LIBTFDI_CPP\n\tbool \"libftdi C++ bindings option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LIBFTDI_CPP\n\thelp\n\t  The option BR2_PACKAGE_LIBTFDI_CPP was renamed to\n\t  BR2_PACKAGE_LIBFTDI_CPP in order to fix a typo in the option\n\t  name.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE\n\tbool \"jquery-ui-themes option black-tie renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  black-tie theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_BLACK_TIE.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_BLITZER\n\tbool \"jquery-ui-themes option blitzer renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  blitzer theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_BLITZER to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_BLITZER.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO\n\tbool \"jquery-ui-themes option cupertino renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  cupertino theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_CUPERTINO.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE\n\tbool \"jquery-ui-themes option dark-hive renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  dark-hive theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_DARK_HIVE.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV\n\tbool \"jquery-ui-themes option dot-luv renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  dot-luv theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_DOT_LUV.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT\n\tbool \"jquery-ui-themes option eggplant renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  eggplant theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_EGGPLANT.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE\n\tbool \"jquery-ui-themes option excite-bike renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  excite-bike theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_EXCITE_BIKE.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_FLICK\n\tbool \"jquery-ui-themes option flick renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  flick theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_FLICK to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_FLICK.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS\n\tbool \"jquery-ui-themes option hot-sneaks renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  hot-sneaks theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_HOT_SNEAKS.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY\n\tbool \"jquery-ui-themes option humanity renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  humanity theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_HUMANITY.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG\n\tbool \"jquery-ui-themes option le-frog renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  le-frog theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_LE_FROG.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC\n\tbool \"jquery-ui-themes option mint-choc renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  mint-choc theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_MINT_CHOC.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST\n\tbool \"jquery-ui-themes option overcast renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  overcast theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_OVERCAST.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER\n\tbool \"jquery-ui-themes option pepper-grinder renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  pepper-grinder theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_PEPPER_GRINDER.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_REDMOND\n\tbool \"jquery-ui-themes option redmond renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  redmond theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_REDMOND to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_REDMOND.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS\n\tbool \"jquery-ui-themes option smoothness renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  smoothness theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_SMOOTHNESS.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET\n\tbool \"jquery-ui-themes option south-street renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  south-street theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_SOUTH_STREET.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_START\n\tbool \"jquery-ui-themes option start renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  start theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_START to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_START.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_SUNNY\n\tbool \"jquery-ui-themes option sunny renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  sunny theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_SUNNY to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_SUNNY.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE\n\tbool \"jquery-ui-themes option swanky-purse renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  swanky-purse theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_SWANKY_PURSE.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC\n\tbool \"jquery-ui-themes option trontastic renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  trontastic theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_TRONTASTIC.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS\n\tbool \"jquery-ui-themes option ui-darkness renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  ui-darkness theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_UI_DARKNESS.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS\n\tbool \"jquery-ui-themes option ui-lightness renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  ui-lightness theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_UI_LIGHTNESS.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEME_VADER\n\tbool \"jquery-ui-themes option vader renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  For consistency reasons, the jquery-ui-themes option for the\n\t  vader theme has been renamed from\n\t  BR2_PACKAGE_JQUERY_UI_THEME_VADER to\n\t  BR2_PACKAGE_JQUERY_UI_THEMES_VADER.\n\nconfig BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH\n\tbool \"bluez5-utils health plugin option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH has been renamed to\n\t  BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH.\n\nconfig BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI\n\tbool \"bluez5-utils midi plugin option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI has been renamed to\n\t  BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI.\n\nconfig BR2_PACKAGE_BLUEZ5_PLUGINS_NFC\n\tbool \"bluez5-utils nfc plugin option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_BLUEZ5_PLUGINS_NFC has been renamed to\n\t  BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC.\n\nconfig BR2_PACKAGE_BLUEZ5_PLUGINS_SAP\n\tbool \"bluez5-utils sap plugin option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_BLUEZ5_PLUGINS_SAP has been renamed to\n\t  BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP.\n\nconfig BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS\n\tbool \"bluez5-utils sixaxis plugin option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS\n\thelp\n\t  For consistency reasons, the option\n\t  BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS has been renamed to\n\t  BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS.\n\nconfig BR2_PACKAGE_TRANSMISSION_REMOTE\n\tbool \"transmission remote tool option removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_TRANSMISSION_DAEMON\n\thelp\n\t  Upstream does not provide a separate configure option for\n\t  the tool transmission-remote, it is built when the\n\t  transmission daemon has been enabled. Therefore, Buildroot\n\t  has automatically enabled BR2_PACKAGE_TRANSMISSION_DAEMON\n\t  for you.\n\nconfig BR2_PACKAGE_LIBKCAPI_APPS\n\tbool \"libkcapi test applications removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LIBKCAPI_HASHER if !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBKCAPI_RNGAPP\n\tselect BR2_PACKAGE_LIBKCAPI_SPEED\n\tselect BR2_PACKAGE_LIBKCAPI_TEST\n\thelp\n\t  Test applications (hasher, rng read, speed-test, test) now\n\t  have their own configuration options in the libkcapi menu.\n\nconfig BR2_PACKAGE_MPLAYER\n\tbool \"mplayer package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The mplayer package was removed.\n\nconfig BR2_PACKAGE_MPLAYER_MPLAYER\n\tbool \"mplayer package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The mplayer package was removed.\n\nconfig BR2_PACKAGE_MPLAYER_MENCODER\n\tbool \"mplayer package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The mplayer package was removed.\n\nconfig BR2_PACKAGE_LIBPLAYER_MPLAYER\n\tbool \"mplayer support in libplayer removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The mplayer package was removed.\n\nconfig BR2_PACKAGE_IQVLINUX\n\tbool \"iqvlinux package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This package contained a kernel module from Intel, which\n\t  could only be used together with Intel userspace tools\n\t  provided under NDA, which also come with the same kernel\n\t  module. The copy of the kernel module available on\n\t  SourceForge is provided only to comply with the GPLv2\n\t  requirement. Intel engineers were even surprised it even\n\t  built and were not willing to make any effort to fix their\n\t  tarball naming to contain a version number. Therefore, it\n\t  does not make sense for Buildroot to provide such a package.\n\n\t  See https://sourceforge.net/p/e1000/bugs/589/ for the\n\t  discussion.\n\nconfig BR2_BINFMT_FLAT_SEP_DATA\n\tbool \"binfmt FLAT with separate code and data removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This FLAT binary format was only used on Blackfin, which has\n\t  been removed.\n\nconfig BR2_bfin\n\tbool \"Blackfin architecture support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Following the removal of Blackfin support for the upstream\n\t  Linux kernel, Buildroot has removed support for this CPU\n\t  architecture.\n\nconfig BR2_PACKAGE_KODI_ADSP_BASIC\n\tbool \"kodi-adsp-basic package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  kodi-adsp-basic is unmaintained\n\nconfig BR2_PACKAGE_KODI_ADSP_FREESURROUND\n\tbool \"kodi-adsp-freesurround package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  kodi-adsp-freesurround is unmaintained\n\n###############################################################################\ncomment \"Legacy options removed in 2018.02\"\n\nconfig BR2_KERNEL_HEADERS_3_4\n\tbool \"kernel headers version 3.4.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 3.4.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_3_10\n\tbool \"kernel headers version 3.10.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 3.10.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_3_12\n\tbool \"kernel headers version 3.12.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 3.12.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_BINUTILS_VERSION_2_27_X\n\tbool \"binutils version 2.27 support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for binutils version 2.27 has been removed. The\n\t  current default version (2.29 or later) has been selected\n\t  instead.\n\nconfig BR2_PACKAGE_EEPROG\n\tbool \"eeprog package removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_I2C_TOOLS\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  The eeprog program is now provided by the i2c-tools package.\n\nconfig BR2_PACKAGE_GNUPG2_GPGV2\n\tbool \"gnupg2 gpgv2 option removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GNUPG2_GPGV\n\thelp\n\t  The gpgv2 executable is now named gpgv. The config option\n\t  has been renamed accordingly.\n\nconfig BR2_PACKAGE_IMX_GPU_VIV_APITRACE\n\tbool \"Vivante apitrace tool option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The apitrace tool for Vivante is not provided by the\n\t  imx-gpu-viv package any longer.\n\nconfig BR2_PACKAGE_IMX_GPU_VIV_G2D\n\tbool \"Vivante G2D libraries from imx-gpu-viv removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_IMX_GPU_G2D\n\thelp\n\t  The G2D libraries are now provided by the imx-gpu-g2d package.\n\n###############################################################################\ncomment \"Legacy options removed in 2017.11\"\n\nconfig BR2_PACKAGE_RFKILL\n\tbool \"rfkill package removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_RFKILL\n\thelp\n\t  The rfkill program is now provided by the util-linux package.\n\nconfig BR2_PACKAGE_UTIL_LINUX_RESET\n\tbool \"util-linux reset option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The util-linux package no longer offers a \"reset\" command. Use\n\t  either the reset command provided by BusyBox or select ncurses\n\t  programs, which will install a symlink from \"tset\" to reset.\n\nconfig BR2_PACKAGE_POLICYCOREUTILS_AUDIT2ALLOW\n\tbool \"policycoreutils audit2allow option removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_SELINUX_PYTHON\n\tselect BR2_PACKAGE_SELINUX_PYTHON_AUDIT2ALLOW\n\thelp\n\t  The policycoreutils package no longer offers audit2allow\n\t  as a option. This package has been moved into the\n\t  selinux-python package by the SELinux maintainers.\n\nconfig BR2_PACKAGE_POLICYCOREUTILS_RESTORECOND\n\tbool \"policycoreutils restorecond option removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_RESTORECOND\n\thelp\n\t  The policycoreutils package no longer offers restorecond\n\t  as a option.  This package has been moved into a seperate\n\t  package maintained by the SELinux maintainers.\n\nconfig BR2_PACKAGE_SEPOLGEN\n\tbool \"sepolgen package has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_SELINUX_PYTHON\n\tselect BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN\n\thelp\n\t  Sepolgen is no longer a individual package, but instead has\n\t  been moved into the selinux-python package by the SELinux\n\t  maintainers.\n\nconfig BR2_PACKAGE_OPENOBEX_BLUEZ\n\tbool \"openobex bluez option removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_BLUEZ_UTILS\n\thelp\n\t  The OpenOBEX package no longer offers an option to enable or\n\t  disable BlueZ support. Instead, BlueZ support is always\n\t  included when the bluez5_utils or bluez_utils package is\n\t  selected.\n\nconfig BR2_PACKAGE_OPENOBEX_LIBUSB\n\tbool \"openobex libusb option removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  The OpenOBEX package no longer offers an option to enable or\n\t  disable libusb support. Instead, USB support is always\n\t  included when the libusb package is selected.\n\nconfig BR2_PACKAGE_OPENOBEX_APPS\n\tbool \"openobex apps option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The OpenOBEX package no longer offers an option to enable or\n\t  disable apps support.\n\nconfig BR2_PACKAGE_OPENOBEX_SYSLOG\n\tbool \"openobex syslog option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The OpenOBEX package no longer offers an option to enable or\n\t  disable syslog support.\n\nconfig BR2_PACKAGE_OPENOBEX_DUMP\n\tbool \"openobex dump option removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The OpenOBEX package no longer offers an option to enable or\n\t  disable dump support.\n\nconfig BR2_PACKAGE_AICCU\n\tbool \"aiccu utility removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  As the SixXS project has ceased its operation on 2017-06-06,\n\t  the AICCU utility has no use anymore and has been removed.\n\n\t  https://www.sixxs.net/sunset/\n\nconfig BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS\n\tbool \"util-linux login utilities option removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_UTIL_LINUX_LAST\n\tselect BR2_PACKAGE_UTIL_LINUX_LOGIN\n\tselect BR2_PACKAGE_UTIL_LINUX_RUNUSER\n\tselect BR2_PACKAGE_UTIL_LINUX_SU\n\tselect BR2_PACKAGE_UTIL_LINUX_SULOGIN\n\thelp\n\t  Login utilities (last, login, runuser, su, sulogin) now have\n\t  their own configuration options in the util-linux menu.\n\n###############################################################################\ncomment \"Legacy options removed in 2017.08\"\n\nconfig BR2_TARGET_GRUB\n\tbool \"grub (aka grub-legacy) has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  grub-legacy is no longer maintained, and no longer builds with\n\t  recent binutils versions.\n\n\t  Use grub2 or syslinux instead.\n\nconfig BR2_PACKAGE_SIMICSFS\n\tbool \"simicsfs support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for simicsfs kernel driver that provides access to a\n\t  host computer's local filesystem when the target is\n\t  executing within a SIMICS simulation has been removed.\n\n\t  Simics is now moving away from the simicsfs kernel module,\n\t  as the kernel module has required too much maintenance\n\t  work. Users should move to the user mode Simics agent\n\t  instead.\n\nconfig BR2_BINUTILS_VERSION_2_26_X\n\tbool \"binutils version 2.26 support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for binutils version 2.26 has been removed. The\n\t  current default version (2.28 or later) has been selected\n\t  instead.\n\nconfig BR2_XTENSA_OVERLAY_DIR\n\tstring \"The BR2_XTENSA_OVERLAY_DIR option has been removed\"\n\thelp\n\t  The BR2_XTENSA_OVERLAY_DIR has been removed in favour of\n\t  BR2_XTENSA_OVERLAY_FILE. You must now pass the complete\n\t  path to the overlay file, not to the directory containing\n\t  it.\n\nconfig BR2_XTENSA_OVERLAY_DIR_WRAP\n\tbool\n\tdefault y if BR2_XTENSA_OVERLAY_DIR != \"\"\n\tselect BR2_LEGACY\n\nconfig BR2_XTENSA_CUSTOM_NAME\n\tstring \"The BR2_XTENSA_CUSTOM_NAME option has been removed\"\n\thelp\n\t  The BR2_XTENSA_CUSTOM_NAME option has been removed.\n\nconfig BR2_XTENSA_CUSTOM_NAME_WRAP\n\tbool\n\tdefault y if BR2_XTENSA_CUSTOM_NAME != \"\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_HOST_MKE2IMG\n\tbool \"host mke2img has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  We now call mkfs directly to generate ext2/3/4 filesystem\n\t  image, so mke2img is no longer necessary.\n\nconfig BR2_TARGET_ROOTFS_EXT2_BLOCKS\n\tint \"exact size in blocks has been removed\"\n\tdefault 0\n\thelp\n\t  This option has been removed in favor of\n\t  BR2_TARGET_ROOTFS_EXT2_SIZE. It has been set automatically\n\t  to the value you had before. Set to 0 here to remove the\n\t  warning.\n\nconfig BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP\n\tbool\n\tdefault y if BR2_TARGET_ROOTFS_EXT2_BLOCKS != 0 && \\\n\t\tBR2_TARGET_ROOTFS_EXT2_BLOCKS != 61440 # deprecated default value\n\tselect BR2_LEGACY\n\n# Note: BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP still referenced in fs/ext2/Config.in\n\nconfig BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES\n\tint \"ext2 extra inodes has been removed\" if BR2_TARGET_ROOTFS_EXT2_INODES = 0\n\tdefault 0\n\thelp\n\t  Buildroot now uses mkfs.ext2/3/4 to generate ext2/3/4\n\t  images. It now automatically selects the number of inodes\n\t  based on the image size. The extra number of inodes can no\n\t  longer be provided; instead, provide the total number of\n\t  inodes needed in BR2_TARGET_ROOTFS_EXT2_INODES.\n\nconfig BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES_WRAP\n\tbool\n\tdefault y if BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES != 0\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CDXAPARSE\n\tbool \"cdxaparse removed\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DATAURISRC\n\tbool \"dataurisrc moved to gstreamer1\"\n\tselect BR2_LEGACY\n\thelp\n\t  Dataurisrc has moved to gstreamer core and is always built.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DCCP\n\tbool \"dccp removed\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HDVPARSE\n\tbool \"hdvparse removed\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MVE\n\tbool \"mve removed\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NUVDEMUX\n\tbool \"nuvdemux removed\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PATCHDETECT\n\tbool \"patchdetect removed\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDI\n\tbool \"sdi removed\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA\n\tbool \"tta removed\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOMEASURE\n\tbool \"videomeasure removed\"\n\tselect BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA\n\tselect BR2_LEGACY\n\thelp\n\t  videomeasure plugin has been removed and has been replaced by\n\t  iqa, which has automatically been enabled.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_APEXSINK\n\tbool \"apexsink removed\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDL\n\tbool \"sdl removed\"\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MAD\n\tbool \"mad (*.mp3 audio) removed\"\n\tselect BR2_LEGACY\n\nconfig BR2_STRIP_none\n\tbool \"Strip command 'none' has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The strip command choice has been changed into a single\n\t  boolean option. Please check that the new setting is\n\t  correct (in the \"Build options\" sub-menu)\n\nconfig BR2_PACKAGE_BEECRYPT_CPP\n\tbool \"C++ support removed in beecrypt\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for C++ depends on icu. The beecrypt package is\n\t  incompatible with icu 59+.\n\nconfig BR2_PACKAGE_SPICE_CLIENT\n\tbool \"spice client support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Spice client support has been removed upstream. The\n\t  functionality now lives in the spice-gtk widget and\n\t  virt-viewer.\n\nconfig BR2_PACKAGE_SPICE_GUI\n\tbool \"spice gui support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Spice gui support has been removed upstream. The\n\t  functionality now lives in the spice-gtk widget and\n\t  virt-viewer.\n\nconfig BR2_PACKAGE_SPICE_TUNNEL\n\tbool \"spice network redirection removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Spice network redirection, aka tunnelling has been removed\n\t  upstream.\n\nconfig BR2_PACKAGE_INPUT_TOOLS\n\tbool \"input-tools removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LINUXCONSOLETOOLS\n\thelp\n\t  input-tools has been removed, it is replaced by\n\t  linuxconsoletools, which has automatically been enabled.\n\nconfig BR2_PACKAGE_INPUT_TOOLS_INPUTATTACH\n\tbool \"inputattach moved to linuxconsoletools\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LINUXCONSOLETOOLS\n\tselect BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH\n\thelp\n\t  input-tools has been removed, inputattach is now part\n\t  of linuxconsoletools, which has automatically been\n\t  enabled.\n\nconfig BR2_PACKAGE_INPUT_TOOLS_JSCAL\n\tbool \"jscal moved to linuxconsoletools\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LINUXCONSOLETOOLS\n\tselect BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK\n\thelp\n\t  input-tools has been removed, jscal is now part\n\t  of linuxconsoletools, which has automatically been\n\t  enabled.\n\nconfig BR2_PACKAGE_INPUT_TOOLS_JSTEST\n\tbool \"jstest moved to linuxconsoletools\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LINUXCONSOLETOOLS\n\tselect BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK\n\thelp\n\t  input-tools has been removed, jstest is now part\n\t  of linuxconsoletools, which has automatically been\n\t  enabled.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH\n\tbool \"SH Sourcery toolchain has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The Sourcery CodeBench toolchain for the sh architecture has\n\t  been removed, since it uses glibc older than 2.17 that\n\t  requires -lrt to link executables using clock_* system calls.\n\t  This makes this toolchain difficult to maintain over time.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86\n\tbool \"x86 Sourcery toolchain has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The Sourcery CodeBench toolchain for the x86 architecture has\n\t  been removed, since it uses glibc older than 2.17 that\n\t  requires -lrt to link executables using clock_* system calls.\n\t  This makes this toolchain difficult to maintain over time.\n\nconfig BR2_GCC_VERSION_4_8_X\n\tbool \"gcc 4.8.x support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for gcc version 4.8.x has been removed. The current\n\t  default version (5.x or later) has been selected instead.\n\n###############################################################################\ncomment \"Legacy options removed in 2017.05\"\n\nconfig BR2_PACKAGE_SUNXI_MALI_R2P4\n\tbool \"sunxi-mali r2p4 removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  sunxi-mali libMali for r2p4 Mali kernel module has been\n\t  removed since the libump package only provides libUMP.so.3.\n\t  libMali for r2p4 Mali kernel module requires libUMP.so.2.\n\nconfig BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT\n\tbool \"CoffeeScript option has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The option to enable NodeJS CoffeeScript has been removed.\n\t  To continue using it, add \"coffee-script\" to\n\t  BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL.\n\nconfig BR2_PACKAGE_NODEJS_MODULES_EXPRESS\n\tbool \"Express web application framework option has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The option to enable the NodeJS Express web application\n\t  framework has been removed. To continue using it, add\n\t  \"express\" to BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL\n\tbool \"bluez5_utils gatttool install option removed\"\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED\n\thelp\n\t  The option to install gatttool specifically has been removed.\n\t  Since version 5.44 gatttool is in the list of deprecated\n\t  tools. The option to build and install deprecated tools has\n\t  been automatically enabled.\n\nconfig BR2_PACKAGE_OPENOCD_FT2XXX\n\tbool \"openocd ft2232 support has been removed\"\n\tselect BR2_PACKAGE_OPENOCD_FTDI\n\tselect BR2_LEGACY\n\thelp\n\t  FT2232 support in OpenOCD has been removed, it's replaced by\n\t  FDTI support, which has automatically been enabled.\n\nconfig BR2_PACKAGE_KODI_RTMPDUMP\n\tbool \"kodi rtmp has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_KODI_INPUTSTREAM_RTMP\n\thelp\n\t  Internal rtmp support was removed from Kodi.\n\nconfig BR2_PACKAGE_KODI_VISUALISATION_FOUNTAIN\n\tbool \"kodi-visualisation-fountain has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  According to upstream 'the visualization is not currently\n\t  in a working shape.'\n\nconfig BR2_PACKAGE_PORTMAP\n\tbool \"portmap has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_RPCBIND\n\thelp\n\t  The portmap upstream tarball is removed, no releases since\n\t  ten years and latest change in upstream git in 2014.\n\t  You should better use rpcbind as a RPC portmapper.\n\nconfig BR2_BINUTILS_VERSION_2_25_X\n\tbool \"binutils version 2.25 support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for binutils version 2.25 has been removed. The\n\t  current default version (2.27 or later) has been selected\n\t  instead.\n\nconfig BR2_TOOLCHAIN_BUILDROOT_INET_RPC\n\tbool \"uclibc RPC support has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  uClibc-ng removed internal RPC implementation in 1.0.23. You\n\t  should use libtirpc instead.\n\nconfig BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS\n\tint \"extra size in blocks has been removed\"\n\tdefault 0\n\thelp\n\t  Since the support for auto calculation of the filesystem size\n\t  has been removed, this option is now useless and must be 0.\n\t  You may want to check that BR2_TARGET_ROOTFS_EXT2_BLOCKS\n\t  matchs your needs.\n\nconfig BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS_WRAP\n\tbool\n\tdefault y if BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS != 0\n\tselect BR2_LEGACY\n\nconfig BR2_PACKAGE_SYSTEMD_KDBUS\n\tbool \"systemd-kdbus has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  --enable/disable-kdbus configure option has been removed since\n\t  systemd-231.\n\nconfig BR2_PACKAGE_POLARSSL\n\tbool \"polarssl has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The polarssl crypto library has been removed since the 1.2.x\n\t  release branch is no longer maintained. Newer upstream\n\t  branches/releases (mbedtls) have API changes so they're not\n\t  drop-in replacements.\n\nconfig BR2_NBD_CLIENT\n\tbool \"nbd client option was renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_NBD_CLIENT\n\thelp\n\t  The nbd client option has been renamed to\n\t  BR2_PACKAGE_NBD_CLIENT.\n\nconfig BR2_NBD_SERVER\n\tbool \"nbd server option was renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_NBD_SERVER\n\thelp\n\t  The nbd server option has been renamed to\n\t  BR2_PACKAGE_NBD_SERVER.\n\nconfig BR2_PACKAGE_GMOCK\n\tbool \"gmock merged into gtest package\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GTEST\n\tselect BR2_PACKAGE_GTEST_GMOCK\n\thelp\n\t  GMock is now a suboption of the GTest package.\n\nconfig BR2_KERNEL_HEADERS_4_8\n\tbool \"kernel headers version 4.8.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.8.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_3_18\n\tbool \"kernel headers version 3.18.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 3.18.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_GLIBC_VERSION_2_22\n\tbool \"glibc 2.22 removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for glibc version 2.22 has been removed. The current\n\t  default version has been selected instead.\n\n###############################################################################\ncomment \"Legacy options removed in 2017.02\"\n\nconfig BR2_PACKAGE_PERL_DB_FILE\n\tbool \"perl-db-file removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_BERKELEYDB\n\tselect BR2_PACKAGE_PERL\n\thelp\n\t  DB_File can be built as a core Perl module, so the separate\n\t  perl-db-file package has been removed.\n\nconfig BR2_KERNEL_HEADERS_4_7\n\tbool \"kernel headers version 4.7.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.7.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_4_6\n\tbool \"kernel headers version 4.6.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.6.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_4_5\n\tbool \"kernel headers version 4.5.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.5.x of the Linux kernel headers are no longer\n\t   maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_3_14\n\tbool \"kernel headers version 3.14.x are no longer supported\"\n\tselect BR2_LEGACY\n\t  help\n\t  Version 3.14.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS\n\tbool \"musl-cross 1.1.12 toolchain removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The support for the prebuilt toolchain based on the Musl C\n\t  library provided by the musl-cross project has been removed.\n\t  Upstream doesn't provide any prebuilt toolchain anymore, use\n\t  the Buildroot toolchain instead.\n\nconfig BR2_UCLIBC_INSTALL_TEST_SUITE\n\tbool \"uClibc tests now in uclibc-ng-test\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_UCLIBC_NG_TEST\n\thelp\n\t  The test suite of the uClibc C library has been moved into a\n\t  separate package, uclibc-ng-test.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX\n\tbool \"Blackfin.uclinux.org 2014R1 toolchain removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The ADI Blackfin toolchain has many bugs which are fixed in\n\t  more recent gcc and uClibc-ng releases. Use the Buildroot\n\t  toolchain instead.\n\nconfig BR2_PACKAGE_MAKEDEVS\n\tbool \"makedevs removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The makedevs tool is part of busybox. The Buildroot fork\n\t  should not be used outside of the Buildroot infrastructure.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A\n\tbool \"Arago ARMv7 2011.09 removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The Arago toolchains are every old and not updated anymore.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE\n\tbool \"Arago ARMv5 2011.09 removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The Arago toolchains are every old and not updated anymore.\n\nconfig BR2_PACKAGE_SNOWBALL_HDMISERVICE\n\tbool \"snowball-hdmiservice removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  We no longer have support for the Snowball platform in\n\t  Buildroot, so this package was no longer useful.\n\nconfig BR2_PACKAGE_SNOWBALL_INIT\n\tbool \"snowball-init removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  We no longer have support for the Snowball platform in\n\t  Buildroot, so this package was no longer useful.\n\nconfig BR2_GDB_VERSION_7_9\n\tbool \"gdb 7.9 has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The 7.9 version of gdb has been removed. Use a newer version\n\t  instead.\n\n###############################################################################\ncomment \"Legacy options removed in 2016.11\"\n\nconfig BR2_PACKAGE_PHP_SAPI_CLI_CGI\n\tbool \"PHP CGI and CLI options are now seperate\"\n\tselect BR2_PACKAGE_PHP_SAPI_CLI\n\tselect BR2_PACKAGE_PHP_SAPI_CGI\n\tselect BR2_LEGACY\n\thelp\n\t  The PHP Interface options have been split up into a\n\t  separate option for each interface.\n\nconfig BR2_PACKAGE_PHP_SAPI_CLI_FPM\n\tbool \"PHP CLI and FPM options are now separate\"\n\tselect BR2_PACKAGE_PHP_SAPI_CLI\n\tselect BR2_PACKAGE_PHP_SAPI_FPM\n\tselect BR2_LEGACY\n\thelp\n\t  The PHP Interface options have been split up into a\n\t  separate option for each interface.\n\nconfig BR2_PACKAGE_WVSTREAMS\n\tbool \"wvstreams removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  wvstreams is not maintained anymore since about 2009. It also\n\t  doesn't build anymore with recent compilers (GCC 5+).\n\nconfig BR2_PACKAGE_WVDIAL\n\tbool \"wvdial removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  wvdial is not maintained anymore since about 2009. It also\n\t  doesn't build anymore with recent compilers (GCC 5+).\n\nconfig BR2_PACKAGE_WEBKITGTK24\n\tbool \"webkitgtk 2.4.x removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This legacy package only existed because some other packages\n\t  depended on that specific version of webkitgtk. However, the\n\t  other packages have been fixed. webkitgtk 2.4 is full of\n\t  security issues so it needs to be removed.\n\nconfig BR2_PACKAGE_TORSMO\n\tbool \"torsmo removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  torsmo has been unmaintained for a long time, and nobody\n\t  seems to be interested in it.\n\nconfig BR2_PACKAGE_SSTRIP\n\tbool \"sstrip removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  sstrip is unmaintained and potentially harmful. It doesn't\n\t  save so much compared to normal binutils strip, and there is\n\t  a big risk of binaries that don't work. Use normal strip\n\t  instead.\n\nconfig BR2_KERNEL_HEADERS_4_3\n\tbool \"kernel headers version 4.3.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.3.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_KERNEL_HEADERS_4_2\n\tbool \"kernel headers version 4.2.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.2.x of the Linux kernel headers are no longer\n\t  maintained upstream and are now removed.\n\nconfig BR2_PACKAGE_KODI_ADDON_XVDR\n\tbool \"kodi-addon-xvdr removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  According to the github project page:\n\t  https://github.com/pipelka/xbmc-addon-xvdr\n\t  this package is discontinued.\n\nconfig BR2_PACKAGE_IPKG\n\tbool \"ipkg removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  ipkg dates back to the early 2000s when Compaq started the\n\t  handhelds.org project and it hasn't seen development since\n\t  2006. Use opkg as a replacement.\n\nconfig BR2_GCC_VERSION_4_7_X\n\tbool \"gcc 4.7.x support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for gcc version 4.7.x has been removed. The current\n\t  default version (4.9.x or later) has been selected instead.\n\nconfig BR2_BINUTILS_VERSION_2_24_X\n\tbool \"binutils version 2.24 support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Support for binutils version 2.24 has been removed. The\n\t  current default version (2.26 or later) has been selected\n\t  instead.\n\nconfig BR2_PACKAGE_WESTON_RPI\n\tbool \"Weston propietary RPI support is gone\"\n\tselect BR2_LEGACY\n\thelp\n\t  Upstream decided the propietary (rpi-userland) weston composer\n\t  support wasn't worth the effort so it was removed. Switch to\n\t  the open VC4 support.\n\nconfig BR2_LINUX_KERNEL_TOOL_CPUPOWER\n\tbool \"linux-tool cpupower\"\n\tdepends on BR2_LINUX_KERNEL\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LINUX_TOOLS_CPUPOWER\n\thelp\n\t  Linux tool cpupower option was renamed.\n\nconfig BR2_LINUX_KERNEL_TOOL_PERF\n\tbool \"linux-tool perf\"\n\tdepends on BR2_LINUX_KERNEL\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LINUX_TOOLS_PERF\n\thelp\n\t  Linux tool perf option was renamed.\n\nconfig BR2_LINUX_KERNEL_TOOL_SELFTESTS\n\tbool \"linux-tool selftests\"\n\tdepends on BR2_LINUX_KERNEL\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LINUX_TOOLS_SELFTESTS\n\thelp\n\t  Linux tool selftests option was renamed.\n\nconfig BR2_GCC_VERSION_4_8_ARC\n\tbool \"gcc arc option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_GCC_VERSION_ARC\n\thelp\n\t  The option that selects the gcc version for the ARC\n\t  architecture has been renamed to BR2_GCC_VERSION_ARC.\n\nconfig BR2_KERNEL_HEADERS_4_0\n\tbool \"kernel headers version 4.0.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 4.0.x of the Linux kernel headers have been deprecated\n\t  for more than four buildroot releases and are now removed.\n\nconfig BR2_KERNEL_HEADERS_3_19\n\tbool \"kernel headers version 3.19.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 3.19.x of the Linux kernel headers have been\n\t  deprecated for more than four buildroot releases and are now\n\t  removed.\n\nconfig BR2_PACKAGE_LIBEVAS_GENERIC_LOADERS\n\tbool \"libevas-generic-loaders package removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_EFL\n\thelp\n\t  With EFL 1.18, libevas-generic-loaders is now provided by the\n\t  efl package.\n\nconfig BR2_PACKAGE_ELEMENTARY\n\tbool \"elementary package removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_EFL\n\thelp\n\t  With EFL 1.18, elementary is now provided by the efl package.\n\nconfig BR2_LINUX_KERNEL_CUSTOM_LOCAL\n\tbool \"Linux kernel local directory option removed\"\n\thelp\n\t  The option to select a local directory as the source of the\n\t  Linux kernel has been removed. It hurts reproducibility of\n\t  builds.\n\n\t  In case you were using this option during development of your\n\t  Linux kernel, use the override mechanism instead.\n\n###############################################################################\ncomment \"Legacy options removed in 2016.08\"\n\nconfig BR2_PACKAGE_EFL_JP2K\n\tbool \"libevas jp2k loader has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  JP2K support in EFL requires openjpeg 1.x (libopenjpeg1.pc)\n\t  while Buildroot only packages openjpeg 2.x. Therefore, the\n\t  JP2K loader has been removed from EFL.\n\nconfig BR2_PACKAGE_SYSTEMD_COMPAT\n\tbool \"systemd compatibility libraries have been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The systemd option to enable the compatibility libraries has\n\t  been removed. Theses libraries have been useless since a few\n\t  version, and have been fully dropped from the source since\n\t  v230.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIVEADDER\n\tbool \"gst1-plugins-bad liveadder plugin removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER\n\thelp\n\t  The functionality of the liveadder plugin of the\n\t  gst1-plugins-bad package has been merged into audiomixer.\n\nconfig BR2_PACKAGE_LIBFSLVPUWRAP\n\tbool \"libfslvpuwrap has been renamed to imx-vpuwrap\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_IMX_VPUWRAP\n\thelp\n\t  The libfslvpuwrap has been renamed to match the renamed\n\t  package.\n\nconfig BR2_PACKAGE_LIBFSLPARSER\n\tbool \"libfslparser has been renamed to imx-parser\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_IMX_PARSER\n\thelp\n\t  The libfslparser has been renamed to match the renamed\n\t  package.\n\nconfig BR2_PACKAGE_LIBFSLCODEC\n\tbool \"libfslcodec has been renamed to imx-codec\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_IMX_CODEC\n\thelp\n\t  The libfslcodec has been renamed to match the renamed package.\n\nconfig BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT\n\tbool \"FIT support in uboot-tools has been refactored\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DTC\n\tselect BR2_PACKAGE_DTC_PROGRAMS\n\tselect BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT\n\tselect BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT\n\tselect BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE\n\thelp\n\t  This option has been removed in favor of a more fine-grained\n\t  configuration, which is recommended. Selecting this option\n\t  enables FIT and FIT signature support for the target packages.\n\t  It will also select the dtc and openssl packages.\n\nconfig BR2_PTHREADS_OLD\n\tbool \"linuxthreads (stable/old)\"\n\tselect BR2_LEGACY\n\thelp\n\t  Linuxthreads have been reworked, BR2_PTHREADS_OLD is now\n\t  BR2_PTHREADS and the old BR2_PTHREADS - LT.new got removed.\n\nconfig BR2_BINUTILS_VERSION_2_23_X\n\tbool \"binutils 2.23 removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Binutils 2.23 has been removed, using a newer version is\n\t  recommended.\n\nconfig BR2_TOOLCHAIN_BUILDROOT_EGLIBC\n\tbool \"eglibc support has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The eglibc project no longer exists, as it has been merged\n\t  back into the glibc project. Therefore, support for eglibc\n\t  has been removed, and glibc should be used instead.\n\nconfig BR2_GDB_VERSION_7_8\n\tbool \"gdb 7.8 has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The 7.8 version of gdb has been removed. Use a newer version\n\t  instead.\n\n###############################################################################\ncomment \"Legacy options removed in 2016.05\"\n\nconfig BR2_PACKAGE_OPENVPN_CRYPTO_POLARSSL\n\tbool \"openvpn polarssl crypto backend removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The OpenVPN polarssl crypto backend option has been removed.\n\t  Version from 2.3.10 onwards need polarssl >= 1.3.8 but aren't\n\t  compatible with mbedtls (polarssl) series 2.x which is the\n\t  version provided in buildroot. And both can't coexist.\n\t  It now uses OpenSSL as the only option.\n\nconfig BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE\n\tbool \"nginx http spdy module removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_NGINX_HTTP_V2_MODULE\n\thelp\n\t  The ngx_http_spdy_module has been superseded by the\n\t  ngx_http_v2_module since nginx v1.9.5.  The\n\t  ngx_http_v2_module modules has been automatically selected\n\t  in your configuration.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP\n\tbool \"gst1-plugins-bad rtp plugin moved to good\"\n\tselect BR2_LEGACY\n\thelp\n\t  The rtp plugin has been moved from gst1-plugins-base to\n\t  gst1-plugins-good.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPG123\n\tbool \"gst1-plugins-bad mpg123 plugin moved to ugly\"\n\tselect BR2_LEGACY\n\thelp\n\t  The mpg123 plugin has been moved from gst1-plugins-bad to\n\t  gst1-plugins-ugly.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC\n\tbool \"PowerPC Sourcery toolchain has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The Sourcery CodeBench toolchain for the PowerPC\n\t  architecture has been removed, as it was very old, not\n\t  maintained, and causing numerous build failures with modern\n\t  userspace packages.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC_E500V2\n\tbool \"PowerPC Sourcery E500v2 toolchain has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The Sourcery CodeBench toolchain for the PowerPC E500v2\n\t  architecture has been removed, as it was very old, not\n\t  maintained, and causing numerous build failures with modern\n\t  userspace packages.\n\nconfig BR2_x86_i386\n\tbool \"x86 i386 support removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The support for the i386 processors of the x86 architecture\n\t  has been removed.\n\nconfig BR2_PACKAGE_QT5QUICK1\n\tbool \"qt5quick1 package removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The qt5quick1 package has been removed, since it was removed\n\t  from upstream starting from Qt 5.6.\n\nconfig BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR\n\tstring \"uboot custom patch dir has been removed\"\n\thelp\n\t  The uboot custom patch directory option has been removed. Use\n\t  the improved BR2_TARGET_UBOOT_PATCH option instead.\n\nconfig BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR_WRAP\n\tbool\n\tdefault y if BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR != \"\"\n\tselect BR2_LEGACY\n\n# Note: BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR is still referenced from\n# boot/uboot/Config.in\n\nconfig BR2_PACKAGE_XDRIVER_XF86_INPUT_VOID\n\tbool \"xf86-input-void removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The xf86-input-void package has been removed, there's no need\n\t  for it in any modern (post-2007) xorg server.\n\nconfig BR2_KERNEL_HEADERS_3_17\n\tbool \"kernel headers version 3.17.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 3.17.x of the Linux kernel headers have been\n\t  deprecated for more than four buildroot releases and are now\n\t  removed.\n\nconfig BR2_GDB_VERSION_7_7\n\tbool \"gdb 7.7 has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The 7.7 version of gdb has been removed. Use a newer version\n\t  instead.\n\nconfig BR2_PACKAGE_FOOMATIC_FILTERS\n\tbool \"foomatic-filters\"\n\tselect BR2_LEGACY\n\thelp\n\t  The foomatic-filters package was removed.\n\nconfig BR2_PACKAGE_SAMBA\n\tbool \"samba\"\n\tselect BR2_LEGACY\n\thelp\n\t  The samba package was removed in favour of samba4 since the\n\t  3.x series isn't supported by upstream any longer.\n\nconfig BR2_PACKAGE_KODI_WAVPACK\n\tbool \"wavpack\"\n\tselect BR2_LEGACY\n\thelp\n\t  wavpack support was removed in favour of ffmpeg:\n\t  https://github.com/xbmc/xbmc/commit/7916902c9e6f7a523265594f3ad7f921f93f1cd4\n\nconfig BR2_PACKAGE_KODI_RSXS\n\tbool \"rsxs support in Kodi was moved to an addon\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_KODI_SCREENSAVER_RSXS\n\thelp\n\t  rsxs support in Kodi was moved to an addon\n\nconfig BR2_PACKAGE_KODI_GOOM\n\tbool \"Goom support in Kodi was moved to an addon\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_KODI_VISUALISATION_GOOM\n\thelp\n\t  Goom support in Kodi was moved to an addon\n\nconfig BR2_PACKAGE_SYSTEMD_ALL_EXTRAS\n\tbool \"systemd all extras option has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_XZ\n\tselect BR2_PACKAGE_LIBGCRYPT\n\thelp\n\t  The systemd option to enable \"all extras\" has been\n\t  removed. To get the same features, the libgcrypt and xz\n\t  package should now be enabled.\n\nconfig BR2_GCC_VERSION_4_5_X\n\tbool \"gcc 4.5.x has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The 4.5.x version of gcc has been removed. Use a newer\n\t  version instead.\n\nconfig BR2_PACKAGE_SQLITE_READLINE\n\tbool \"sqlite command-line editing support was updated\"\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_READLINE\n\tselect BR2_LEGACY\n\thelp\n\t  This option was removed in favour of the sqlite package\n\t  deciding itself depending on the enabled packages whether\n\t  command-line editing should be enabled, it also also takes\n\t  libedit into account.\n\n###############################################################################\ncomment \"Legacy options removed in 2016.02\"\n\nconfig BR2_PACKAGE_DOVECOT_BZIP2\n\tbool \"bzip2 support option has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_BZIP2\n\thelp\n\t  Bzip2 support is built if the bzip2 package is selected.\n\nconfig BR2_PACKAGE_DOVECOT_ZLIB\n\tbool \"zlib support option has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Zlib support is built if the zlib package is selected.\n\nconfig BR2_PACKAGE_E2FSPROGS_FINDFS\n\tbool \"e2fsprogs findfs option has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This option attempted to enable findfs capabilities from\n\t  e2fsprogs but has not worked since July 2015 (due to\n\t  packaging changes). One can use BusyBox's findfs support or\n\t  enable the BR2_PACKAGE_UTIL_LINUX_BINARIES option.\n\nconfig BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL\n\tbool \"openpowerlink debug option has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  This option depends on BR2_ENABLE_DEBUG which should not be\n\t  used by packages anymore.\n\nconfig BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE\n\tbool \"openpowerlink package has been updated\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB\n\thelp\n\t  openpowerlink kernel modules are built if the\n\t  kernel stack library is selected.\n\nconfig BR2_PACKAGE_OPENPOWERLINK_LIBPCAP\n\tbool \"openpowerlink package has been updated\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB\n\thelp\n\t  The user space support has been split in two part:\n\t  - a monolitic user space library\n\t  - a user spae deamon driver\n\nconfig BR2_LINUX_KERNEL_SAME_AS_HEADERS\n\tbool \"using the linux headers version for the kernel has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The option to use the version of the kernel headers for the\n\t  kernel to build has been removed.\n\n\t  There is now the converse, better-suited and more versatile\n\t  option to use the kernel version for the linux headers.\n\nconfig BR2_PACKAGE_CUPS_PDFTOPS\n\tbool \"Pdftops support has been removed from Cups\"\n\tselect BR2_PACKAGE_CUPS_FILTERS\n\tselect BR2_LEGACY\n\thelp\n\t  Pdftops support has been removed from the cups package\n\t  It is now part of the cups-filters package.\n\nconfig BR2_KERNEL_HEADERS_3_16\n\tbool \"kernel headers version 3.16.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 3.16.x of the Linux kernel headers have been\n\t  deprecated for more than four buildroot releases and are now\n\t  removed.\n\nconfig BR2_PACKAGE_PYTHON_PYXML\n\tbool \"python-pyxml package has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  PyXML is obsolete and its functionality is covered either via\n\t  native Python XML support or python-lxml package.\n\n# BR2_ENABLE_SSP is still referenced in Config.in (default in choice)\nconfig BR2_ENABLE_SSP\n\tbool \"Stack Smashing protection now has different levels\"\n\thelp\n\t  The protection offered by SSP can now be selected from\n\t  different protection levels. Be sure to review the SSP level\n\t  in the build options menu.\n\nconfig BR2_PACKAGE_DIRECTFB_CLE266\n\tbool \"cle266 driver for directfb removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The cle266 directfb driver support has been removed.\n\t  It doesn't build in the latest version and it's unlikely\n\t  anyone has any use for it.\n\nconfig BR2_PACKAGE_DIRECTFB_UNICHROME\n\tbool \"unichrome driver for directfb removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The unichrome directfb driver support has been removed.\n\t  It doesn't build in the latest version and it's unlikely\n\t  anyone has any use for it.\n\nconfig BR2_PACKAGE_LIBELEMENTARY\n\tbool \"libelementary has been renamed to elementary\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_ELEMENTARY\n\thelp\n\t  The libelementary package has been renamed to match the\n\t  upstream name.\n\nconfig BR2_PACKAGE_LIBEINA\n\tbool \"libeina package has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_EFL\n\thelp\n\t  With EFL 1.15, libeina is now provided by the efl package.\n\nconfig BR2_PACKAGE_LIBEET\n\tbool \"libeet package has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_EFL\n\thelp\n\t  With EFL 1.15, libeet is now provided by the efl package.\n\nconfig BR2_PACKAGE_LIBEVAS\n\tbool \"libevas package has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_EFL\n\thelp\n\t  With EFL 1.15, libevas is now provided by the efl package.\n\nconfig BR2_PACKAGE_LIBECORE\n\tbool \"libecore package has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_EFL\n\thelp\n\t  With EFL 1.15, libecore is now provided by the efl package.\n\nconfig BR2_PACKAGE_LIBEDBUS\n\tbool \"libedbus package has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_EFL\n\thelp\n\t  With EFL 1.15, libedbus is now provided by the efl package.\n\nconfig BR2_PACKAGE_LIBEFREET\n\tbool \"libefreet package has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_EFL\n\thelp\n\t  With EFL 1.15, libefreet is now provided by the efl package.\n\nconfig BR2_PACKAGE_LIBEIO\n\tbool \"libeio package has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_EFL\n\thelp\n\t  With EFL 1.15, libeio is now provided by the efl package.\n\nconfig BR2_PACKAGE_LIBEMBRYO\n\tbool \"libembryo package has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_EFL\n\thelp\n\t  With EFL 1.15, libembryo is now provided by the efl package.\n\nconfig BR2_PACKAGE_LIBEDJE\n\tbool \"libedje package has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_EFL\n\thelp\n\t  With EFL 1.15, libedje is now provided by the efl package.\n\nconfig BR2_PACKAGE_LIBETHUMB\n\tbool \"libethumb package has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_EFL\n\thelp\n\t  With EFL 1.15, libethumb is now provided by the efl package.\n\nconfig BR2_PACKAGE_INFOZIP\n\tbool \"infozip option has been renamed to zip\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_ZIP\n\thelp\n\t  Info-Zip's Zip package has been renamed from infozip to zip,\n\t  to avoid ambiguities with Info-Zip's UnZip which has been\n\t  added in the unzip package.\n\nconfig BR2_BR2_PACKAGE_NODEJS_0_10_X\n\tbool \"nodejs 0.10.x option removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_NODEJS\n\thelp\n\t  nodejs 0.10.x option has been removed.  0.10.x is now\n\t  automatically chosen for ARMv5 architectures only and the\n\t  latest nodejs for all other supported architectures. The\n\t  correct nodejs version has been automatically selected in your\n\t  configuration.\n\nconfig BR2_BR2_PACKAGE_NODEJS_0_12_X\n\tbool \"nodejs version 0.12.x has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_NODEJS\n\thelp\n\t  nodejs version 0.12.x has been removed.  As an alternative,\n\t  the latest nodejs version has been automatically selected in\n\t  your configuration.\n\nconfig BR2_BR2_PACKAGE_NODEJS_4_X\n\tbool \"nodejs version 4.x has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_NODEJS\n\thelp\n\t  nodejs version 4.x has been removed.  As an alternative,\n\t  the latest nodejs version has been automatically selected in\n\t  your configuration.\n\n###############################################################################\ncomment \"Legacy options removed in 2015.11\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REAL\n\tbool \"gst1-plugins-bad real plugin has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  The real plugin from GStreamer 1 bad plugins has been\n\t  removed.\n\nconfig BR2_PACKAGE_MEDIA_CTL\n\tbool \"media-ctl package has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_LIBV4L\n\tselect BR2_PACKAGE_LIBV4L_UTILS\n\thelp\n\t  media-ctl source and developement have been moved to v4l-utils\n\t  since June 2014. For an up-to-date media-ctl version select\n\t  BR2_PACKAGE_LIBV4L and BR2_PACKAGE_LIBV4L_UTILS.\n\nconfig BR2_PACKAGE_SCHIFRA\n\tbool \"schifra package has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Schifra package has been maked broken since 2014.11 release\n\t  and haven't been fixed since then.\n\nconfig BR2_PACKAGE_ZXING\n\tbool \"zxing option has been renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_ZXING_CPP\n\thelp\n\t  ZXing no longer provides the cpp bindings, it has been renamed\n\t  to BR2_PACKAGE_ZXING_CPP which uses a new upstream.\n\n# Since FreeRDP has new dependencies, protect this legacy to avoid the\n# infamous \"unmet direct dependencies\" kconfig error.\nconfig BR2_PACKAGE_FREERDP_CLIENT\n\tbool \"freerdp client option renamed\"\n\tdepends on BR2_PACKAGE_FREERDP\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_FREERDP_CLIENT_X11\n\nconfig BR2_PACKAGE_BLACKBOX\n\tbool \"blackbox package has been removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Upstream is dead and the package has been deprecated for\n\t  some time. There are other alternative maintained WMs.\n\nconfig BR2_KERNEL_HEADERS_3_0\n\tbool \"kernel headers version 3.0.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 3.0.x of the Linux kernel headers have been deprecated\n\t  for more than four buildroot releases and are now removed.\n\nconfig BR2_KERNEL_HEADERS_3_11\n\tbool \"kernel headers version 3.11.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 3.11.x of the Linux kernel headers have been\n\t  deprecated for more than four buildroot releases and are now\n\t  removed.\n\nconfig BR2_KERNEL_HEADERS_3_13\n\tbool \"kernel headers version 3.13.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 3.13.x of the Linux kernel headers have been\n\t  deprecated for more than four buildroot releases and are now\n\t  removed.\n\nconfig BR2_KERNEL_HEADERS_3_15\n\tbool \"kernel headers version 3.15.x are no longer supported\"\n\tselect BR2_LEGACY\n\thelp\n\t  Version 3.15.x of the Linux kernel headers have been\n\t  deprecated for more than four buildroot releases and are now\n\t  removed.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_ANDI\n\tbool \"DirectFB example df_andi has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_BLTLOAD\n\tbool \"DirectFB example df_bltload has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_CPULOAD\n\tbool \"DirectFB example df_cpuload has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_DATABUFFER\n\tbool \"DirectFB example df_databuffer has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_DIOLOAD\n\tbool \"DirectFB example df_dioload has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_DOK\n\tbool \"DirectFB example df_dok has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_DRIVERTEST\n\tbool \"DirectFB example df_drivertest has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_FIRE\n\tbool \"DirectFB example df_fire has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_FLIP\n\tbool \"DirectFB example df_flip has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_FONTS\n\tbool \"DirectFB example df_fonts has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_INPUT\n\tbool \"DirectFB example df_input has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_JOYSTICK\n\tbool \"DirectFB example df_joystick has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_KNUCKLES\n\tbool \"DirectFB example df_knuckles has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_LAYER\n\tbool \"DirectFB example df_layer has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX\n\tbool \"DirectFB example df_matrix has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX_WATER\n\tbool \"DirectFB example df_matrix_water has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_NEO\n\tbool \"DirectFB example df_neo has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_NETLOAD\n\tbool \"DirectFB example df_netload has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_PALETTE\n\tbool \"DirectFB example df_palette has been removed\"\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_PARTICLE\n\tbool \"DirectFB example df_particle has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_PORTER\n\tbool \"DirectFB example df_porter has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_STRESS\n\tbool \"DirectFB example df_stress has been removed\"\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_TEXTURE\n\tbool \"DirectFB example df_texture has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO\n\tbool \"DirectFB example df_video has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO_PARTICLE\n\tbool \"DirectFB example df_video_particle has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_DIRECTFB_EXAMPLES_WINDOW\n\tbool \"DirectFB example df_window has been removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_EXAMPLES\n\thelp\n\t  The per-DirectFB example options have been removed. The\n\t  BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all\n\t  examples.\n\nconfig BR2_PACKAGE_KOBS_NG\n\tbool \"kobs-ng was replaced by imx-kobs\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_IMX_KOBS\n\thelp\n\t  The outdated kobs-ng has been replaced by the Freescale-\n\t  maintained imx-kobs package.\n\nconfig BR2_PACKAGE_SAWMAN\n\tbool \"sawman package removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_SAWMAN\n\thelp\n\t  This option has been removed because the sawman package no\n\t  longer exists: it was merged inside DirectFB itself. This\n\t  feature can now be enabled using the\n\t  BR2_PACKAGE_DIRECTFB_SAWMAN option.\n\nconfig BR2_PACKAGE_DIVINE\n\tbool \"divine package removed\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_DIRECTFB_DIVINE\n\thelp\n\t  This option has been removed because the divine package no\n\t  longer exists: it was merged inside DirectFB itself. This\n\t  feature can now be enabled using the\n\t  BR2_PACKAGE_DIRECTFB_DIVINE option.\n\n###############################################################################\ncomment \"Legacy options removed in 2015.08\"\n\nconfig BR2_PACKAGE_KODI_PVR_ADDONS\n\tbool \"Kodi PVR addon was split\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_KODI_PVR_ARGUSTV\n\tselect BR2_PACKAGE_KODI_PVR_DVBLINK\n\tselect BR2_PACKAGE_KODI_PVR_DVBVIEWER\n\tselect BR2_PACKAGE_KODI_PVR_FILMON\n\tselect BR2_PACKAGE_KODI_PVR_HTS\n\tselect BR2_PACKAGE_KODI_PVR_IPTVSIMPLE\n\tselect BR2_PACKAGE_KODI_PVR_MEDIAPORTAL_TVSERVER\n\tselect BR2_PACKAGE_KODI_PVR_MYTHTV\n\tselect BR2_PACKAGE_KODI_PVR_NEXTPVR\n\tselect BR2_PACKAGE_KODI_PVR_NJOY\n\tselect BR2_PACKAGE_KODI_PVR_PCTV\n\tselect BR2_PACKAGE_KODI_PVR_STALKER\n\tselect BR2_PACKAGE_KODI_PVR_VBOX\n\tselect BR2_PACKAGE_KODI_PVR_VDR_VNSI\n\tselect BR2_PACKAGE_KODI_PVR_VUPLUS\n\tselect BR2_PACKAGE_KODI_PVR_WMC\n\thelp\n\t  Kodi PVR addon was split into seperate modules\n\nconfig BR2_BINUTILS_VERSION_2_23_2\n\tbool \"binutils 2.23 option renamed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Binutils 2.23.2 has been removed, using a newer version is\n\t  recommended.\n\nconfig BR2_BINUTILS_VERSION_2_24\n\tbool \"binutils 2.24 option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_BINUTILS_VERSION_2_24_X\n\thelp\n\t  The binutils version option has been renamed to match the\n\t  same patchlevel logic used by gcc. The new option is now\n\t  BR2_BINUTILS_VERSION_2_24_X.\n\nconfig BR2_BINUTILS_VERSION_2_25\n\tbool \"binutils 2.25 option renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_BINUTILS_VERSION_2_25_X\n\thelp\n\t  The binutils version option has been renamed to match the\n\t  same patchlevel logic used by gcc. The new option is now\n\t  BR2_BINUTILS_VERSION_2_25_X.\n\nconfig BR2_PACKAGE_PERF\n\tbool \"perf option has been renamed\"\n\tselect BR2_LEGACY\n\tselect BR2_LINUX_KERNEL_TOOL_PERF\n\thelp\n\t  The perf package has been moved as a Linux tools package,\n\t  and the option to enable it is now\n\t  BR2_LINUX_KERNEL_TOOL_PERF.\n\nconfig BR2_BINUTILS_VERSION_2_22\n\tbool \"binutils 2.22 removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  Binutils 2.22 has been removed, using a newer version is\n\t  recommended.\n\nconfig BR2_PACKAGE_GPU_VIV_BIN_MX6Q\n\tbool \"gpu-viv-bin-mx6q\"\n\tselect BR2_LEGACY\n\tselect BR2_PACKAGE_IMX_GPU_VIV\n\thelp\n\t  Vivante graphics libraries have been renamed to\n\t  BR2_PACKAGE_IMX_GPU_VIV to be aligned with upstream package\n\t  name.\n\nconfig BR2_PACKAGE_LIBSEMANAGE_PYTHON_BINDINGS\n\tbool \"libsemanage python bindings removed\"\n\tdepends on BR2_PACKAGE_PYTHON\n\tselect BR2_LEGACY\n\thelp\n\t  This option has been removed, since the libsemanage Python\n\t  bindings on the target were not useful.\n\nconfig BR2_TARGET_UBOOT_NETWORK\n\tbool \"U-Boot custom network settings removed\"\n\tselect BR2_LEGACY\n\thelp\n\t  U-Boot's custom network settings options have been removed.\n\nendmenu\n\nendif # !SKIP_LEGACY\n"
  },
  {
    "path": "DEVELOPERS",
    "content": "# Syntax:\n#\n# N:\tFirstname Lastname <email>\n# F:\tfile pattern or directory\n# F:\tfile pattern or directory\n#\n# The \"F\" entries can be:\n#\n# - A directory, in which case all patches touching any file in this\n#   directory or its subdirectories will be CC'ed to the developer.\n# - A pattern, in which case the pattern will be expanded, and then\n#   all files/directories (and their subdirectories) will be\n#   considered when matching against a patch\n#\n# Notes:\n#\n# - When a developer adds an \"arch/Config.in.<arch>\" file to its list\n#   of files, he is considered a developer of this architecture. He\n#   will receive e-mail notifications about build failures occuring on\n#   this architecture. Not more than one e-mail per day is sent.\n# - When a developer adds a directory that contains one or several\n#   packages, this developer will be notified when build failures\n#   occur. Not more than one e-mail per day is sent.\n# - When a developer adds an \"package/pkg-<infra>.mk\" file to its list\n#   of files, he is considered interested by this package\n#   infrastructure, and will be CC'ed on all patches that add or\n#   modify packages that use this infrastructure.\n\nN:\tAdam Heinrich <adam@adamh.cz>\nF:\tpackage/jack1/\n\nN:\tAdrian Perez de Castro <aperez@igalia.com>\nF:\tpackage/brotli/\nF:\tpackage/bubblewrap/\nF:\tpackage/cage/\nF:\tpackage/cog/\nF:\tpackage/libepoxy/\nF:\tpackage/libmanette/\nF:\tpackage/libpsl/\nF:\tpackage/libwpe/\nF:\tpackage/webkitgtk/\nF:\tpackage/wlroots/\nF:\tpackage/woff2/\nF:\tpackage/wpebackend-fdo/\nF:\tpackage/wpewebkit/\nF:\tpackage/xdg-dbus-proxy/\n\nN:\tAdrien Gallouët <adrien@gallouet.fr>\nF:\tpackage/bird/\nF:\tpackage/glorytun/\n\nN:\tAlejandro González <alejandro.gonzalez.correo@gmail.com>\nF:\tpackage/qprint/\nF:\tpackage/watchdog/\n\nN:\tAleksander Morgado <aleksander@aleksander.es>\nF:\tpackage/libmbim/\nF:\tpackage/libqmi/\nF:\tpackage/modem-manager/\n\nN:\tAlex Michel <alex.michel@wiedemann-group.com>\nF:\tpackage/network-manager-openvpn/\n\nN:\tAlex Suykov <alex.suykov@gmail.com>\nF:\tboard/chromebook/snow/\nF:\tconfigs/chromebook_snow_defconfig\nF:\tpackage/vboot-utils/\n\nN:\tAlexander Clouter <alex+buildroot@digriz.org.uk>\nF:\tpackage/odhcp6c/\n\nN:\tAlexander Dahl <post@lespocky.de>\nF:\tpackage/fastd/\nF:\tpackage/libuecc/\nF:\tpackage/siproxd/\nF:\tpackage/putty/\n\nN:\tAlexander Egorenkov <egorenar-dev@posteo.net>\nF:\tpackage/makedumpfile/\nF:\tpackage/multipath-tools/\n\nN:\tAlexander Egorenkov <egorenar@linux.ibm.com>\nF:\tarch/Config.in.s390x\nF:\tboard/qemu/s390x/\nF:\tconfigs/qemu_s390x_defconfig\nF:\tpackage/s390-tools/\n\nN:\tAlexander Kurz <akurz@blala.de>\nF:\tpackage/minimodem/\n\nN:\tAlexander Lukichev <alexander.lukichev@gmail.com>\nF:\tpackage/openpgm/\n\nN:\tAleksandr Makarov <aleksandr.o.makarov@gmail.com>\nF:\tpackage/libest/\n\nN:\tAlexander Mukhin <alexander.i.mukhin@gmail.com>\nF:\tpackage/tinyproxy/\n\nN:\tAlexander Sverdlin <alexander.sverdlin@gmail.com>\nF:\tpackage/mini-snmpd/\n\nN:\tAlexander Varnin <fenixk19@mail.ru>\nF:\tpackage/liblog4c-localtime/\n\nN:\tAlexandre Belloni <alexandre.belloni@bootlin.com>\nF:\tpackage/tz/\n\nN:\tAlexandre Esse <alexandre.esse.dev@gmail.com>\nF:\tpackage/kvazaar/\nF:\tpackage/v4l2loopback/\n\nN:\tAlexey Brodkin <alexey.brodkin@synopsys.com>\nF:\tboard/cubietech/cubieboard2/\nF:\tconfigs/cubieboard2_defconfig\n\nN:\tAlexey Lukyanchuk <skif@skif-web.ru>\nF:\tpackage/zabbix/\n\nN:\tAlistair Francis <alistair@alistair23.me>\nF:\tboard/sifive/\nF:\tboot/opensbi/\nF:\tconfigs/hifive_unleashed_defconfig\nF:\tpackage/xen/\n\nN:\tAlvaro G. M <alvaro.gamez@hazent.com>\nF:\tpackage/dcron/\nF:\tpackage/libxmlrpc/\nF:\tpackage/python-docopt/\n\nN:\tAnand Gadiyar <gadiyar@ti.com>\nF:\tboot/ti-k3-r5-loader/\n\nN:\tAndré Zwing <nerv@dawncrow.de>\nF:\tpackage/libkrb5/\nF:\tpackage/p7zip/\nF:\tpackage/wine/\n\nN:\tAndreas Klinger <ak@it-klinger.de>\nF:\tpackage/ply/\n\nN:\tAndreas Ziegler <br015@umbiko.net>\nF:\tpackage/mpd/\n\nN:\tAndrey Smirnov <andrew.smirnov@gmail.com>\nF:\tpackage/python-decorator/\nF:\tpackage/python-ipython-genutils/\nF:\tpackage/python-pickleshare/\nF:\tpackage/python-scandir/\nF:\tpackage/python-simplegeneric/\nF:\tpackage/python-systemd/\nF:\tpackage/python-traitlets/\nF:\tpackage/zstd/\n\nN:\tAndrey Yurovsky <yurovsky@gmail.com>\nF:\tpackage/rauc/\n\nN:\tAngelo Compagnucci <angelo.compagnucci@gmail.com>\nF:\tboard/sipeed/lichee_rv/\nF:\tboard/sipeed/lichee_rv_dock/\nF:\tconfigs/sipeed_lichee_rv*\nF:\tpackage/apparmor/\nF:\tpackage/corkscrew/\nF:\tpackage/cups/\nF:\tpackage/cups-filters/\nF:\tpackage/fail2ban/\nF:\tpackage/grep/\nF:\tpackage/htpdate/\nF:\tpackage/i2c-tools/\nF:\tpackage/jq/\nF:\tpackage/libapparmor/\nF:\tpackage/libb64/\nF:\tpackage/libdill/\nF:\tpackage/mender/\nF:\tpackage/mender-artifact/\nF:\tpackage/mono/\nF:\tpackage/mono-gtksharp3/\nF:\tpackage/monolite/\nF:\tpackage/openjpeg/\nF:\tpackage/python-can/\nF:\tpackage/python-minimalmodbus/\nF:\tpackage/python-pillow/\nF:\tpackage/python-pydal/\nF:\tpackage/python-spidev/\nF:\tpackage/python-web2py/\nF:\tpackage/qt5/qt5coap/\nF:\tpackage/qt5/qt5knx/\nF:\tpackage/qt5/qt5mqtt/\nF:\tpackage/rtl8723ds/\nF:\tpackage/rtl8723ds-bt/\nF:\tpackage/sam-ba/\nF:\tpackage/sshguard/\nF:\tpackage/sunwait/\nF:\tpackage/sysdig/\n\nN:\tAndy Shevchenko <andy.shevchenko@gmail.com>\nF:\tpackage/fb-test-app/\n\nN:\tAnisse Astier <anisse@astier.eu>\nF:\tpackage/go/\nF:\tpackage/nghttp2/\nF:\tpackage/pkg-golang.mk\n\nN:\tAnthony Viallard <viallard@syscom-instruments.com>\nF:\tpackage/gnuplot/\n\nN:\tAntoine Tenart <atenart@kernel.org>\nF:\tpackage/libselinux/\nF:\tpackage/refpolicy/\nF:\tsupport/testing/tests/core/test_selinux/\nF:\tsupport/testing/tests/core/test_selinux.py\nF:\tsupport/testing/tests/init/test_systemd_selinux/\nF:\tsupport/testing/tests/init/test_systemd_selinux.py\n\nN:\tAntony Pavlov <antonynpavlov@gmail.com>\nF:\tpackage/lsscsi/\n\nN:\tARC Maintainers <arc-buildroot@synopsys.com>\nF:\tarch/Config.in.arc\nF:\tboard/synopsys/\nF:\tconfigs/snps_arc700_axs101_defconfig\nF:\tconfigs/snps_archs38_axs103_defconfig\nF:\tconfigs/snps_archs38_haps_defconfig\nF:\tconfigs/snps_archs38_hsdk_defconfig\nF:\tconfigs/snps_archs38_vdk_defconfig\n\nN:\tAriel D'Alessandro <ariel@vanguardiasur.com.ar>\nF:\tpackage/axfsutils/\nF:\tpackage/mali-t76x/\n\nN:\tArnaud Aujon <arnaud@intelibre.fr>\nF:\tpackage/espeak/\n\nN:\tArnout Vandecappelle <arnout@mind.be>\nF:\tpackage/arp-scan/\nF:\tpackage/dehydrated/\nF:\tpackage/freescale-imx/firmware-imx/\nF:\tpackage/freescale-imx/imx-lib/\nF:\tpackage/libpagekite/\nF:\tpackage/lua-bit32/\nF:\tpackage/owfs/\nF:\tpackage/python-bottle/\nF:\tpackage/sqlcipher/\nF:\tpackage/stress/\n\nN:\tAsaf Kahlon <asafka7@gmail.com>\nF:\tpackage/collectd/\nF:\tpackage/libfuse3/\nF:\tpackage/libuv/\nF:\tpackage/python*\nF:\tpackage/snmpclitools/\nF:\tpackage/spdlog/\nF:\tpackage/uftp/\nF:\tpackage/uftrace/\nF:\tpackage/uvw/\nF:\tpackage/zeromq/\n\nN:\tAsh Charles <ashcharles@gmail.com>\nF:\tpackage/pru-software-support/\nF:\tpackage/ti-cgt-pru/\n\nN:\tAssaf Inbal <shmuelzon@gmail.com>\nF:\tpackage/lbase64/\nF:\tpackage/luabitop/\nF:\tpackage/luaexpatutils/\nF:\tpackage/luaposix/\nF:\tpackage/luasec/\nF:\tpackage/lua-ev/\nF:\tpackage/orbit/\n\nN:\tAttila Wagner <attila.wagner@onyxinsight.com>\nF:\tpackage/python-canopen/\n\nN:\tBartosz Bilas <b.bilas@grinn-global.com>\nF:\tboard/stmicroelectronics/stm32mp157a-dk1/\nF:\tconfigs/stm32mp157a_dk1_defconfig\nF:\tpackage/cegui/\nF:\tpackage/log4qt/\nF:\tpackage/python-esptool/\nF:\tpackage/python-pyaes/\nF:\tpackage/ttyd/\nF:\tpackage/qt5/qt5scxml/\nF:\tpackage/qt5/qt5webview/\n\nN:\tBartosz Golaszewski <brgl@bgdev.pl>\nF:\tpackage/autoconf-archive/\nF:\tpackage/doxygen/\nF:\tpackage/libgpiod/\nF:\tpackage/libserialport/\nF:\tpackage/libsigrok/\nF:\tpackage/libsigrokdecode/\nF:\tpackage/libzip/\nF:\tpackage/pulseview/\nF:\tpackage/sigrok-cli/\n\nN:\tBaruch Siach <baruch@tkos.co.il>\nF:\tboard/solidrun/clearfog_gt_8k/\nF:\tconfigs/solidrun_clearfog_gt_8k_defconfig\nF:\tpackage/18xx-ti-utils/\nF:\tpackage/cpuburn-arm/\nF:\tpackage/daemon/\nF:\tpackage/dropbear/\nF:\tpackage/ebtables/\nF:\tpackage/i2c-tools/\nF:\tpackage/libcurl/\nF:\tpackage/libpcap/\nF:\tpackage/socat/\nF:\tpackage/strace/\nF:\tpackage/tcpdump/\nF:\tpackage/ti-uim/\nF:\tpackage/uhubctl/\n\nN:\tBen Boeckel <mathstuf@gmail.com>\nF:\tpackage/taskd/\n\nN:\tBenjamin Kamath <kamath.ben@gmail.com>\nF:\tpackage/lapack/\n\nN:\tBernd Kuhls <bernd.kuhls@t-online.de>\nF:\tpackage/alsa-lib/\nF:\tpackage/alsa-utils/\nF:\tpackage/apache/\nF:\tpackage/apg/\nF:\tpackage/apr/\nF:\tpackage/apr-util/\nF:\tpackage/bcg729/\nF:\tpackage/bitcoin/\nF:\tpackage/bluez-tools/\nF:\tpackage/boinc/\nF:\tpackage/clamav/\nF:\tpackage/dav1d/\nF:\tpackage/dovecot/\nF:\tpackage/dovecot-pigeonhole/\nF:\tpackage/dtv-scan-tables/\nF:\tpackage/eudev/\nF:\tpackage/exim/\nF:\tpackage/fetchmail/\nF:\tpackage/ffmpeg/\nF:\tpackage/flac/\nF:\tpackage/freeswitch/\nF:\tpackage/freeswitch-mod-bcg729/\nF:\tpackage/freetype/\nF:\tpackage/fstrcmp/\nF:\tpackage/ghostscript/\nF:\tpackage/giflib/\nF:\tpackage/gkrellm/\nF:\tpackage/gli/\nF:\tpackage/glmark2/\nF:\tpackage/gpsd/\nF:\tpackage/gptfdisk/\nF:\tpackage/hdparm/\nF:\tpackage/inih/\nF:\tpackage/intel-gmmlib/\nF:\tpackage/intel-mediadriver/\nF:\tpackage/intel-mediasdk/\nF:\tpackage/jsoncpp/\nF:\tpackage/kodi*\nF:\tpackage/lame/\nF:\tpackage/leafnode2/\nF:\tpackage/libaacs/\nF:\tpackage/libasplib/\nF:\tpackage/libass/\nF:\tpackage/libbdplus/\nF:\tpackage/libbluray/\nF:\tpackage/libbroadvoice/\nF:\tpackage/libcdio/\nF:\tpackage/libcec/\nF:\tpackage/libcodec2/\nF:\tpackage/libcrossguid/\nF:\tpackage/libdcadec/\nF:\tpackage/libdrm/\nF:\tpackage/libdvbcsa/\nF:\tpackage/libdvdcss/\nF:\tpackage/libdvdnav/\nF:\tpackage/libdvdread/\nF:\tpackage/libebur128/\nF:\tpackage/libfreeglut/\nF:\tpackage/libg7221/\nF:\tpackage/libglew/\nF:\tpackage/libglfw/\nF:\tpackage/libglu/\nF:\tpackage/libhdhomerun/\nF:\tpackage/libilbc/\nF:\tpackage/libldns/\nF:\tpackage/libmicrohttpd/\nF:\tpackage/libminiupnpc/\nF:\tpackage/libmspack/\nF:\tpackage/libnatpmp/\nF:\tpackage/libnpth/\nF:\tpackage/libogg/\nF:\tpackage/libopenh264/\nF:\tpackage/libpciaccess/\nF:\tpackage/libplatform/\nF:\tpackage/libpng/\nF:\tpackage/libsidplay2/\nF:\tpackage/libsilk/\nF:\tpackage/libsndfile/\nF:\tpackage/libsoundtouch/\nF:\tpackage/libsquish/\nF:\tpackage/libudfread/\nF:\tpackage/liburiparser/\nF:\tpackage/libva/\nF:\tpackage/libva-intel-driver/\nF:\tpackage/libva-utils/\nF:\tpackage/libvorbis/\nF:\tpackage/libvpx/\nF:\tpackage/libyuv/\nF:\tpackage/mesa3d/\nF:\tpackage/minidlna/\nF:\tpackage/mjpg-streamer/\nF:\tpackage/perl-crypt-openssl-guess/\nF:\tpackage/perl-crypt-openssl-random/\nF:\tpackage/perl-crypt-openssl-rsa/\nF:\tpackage/perl-digest-sha1/\nF:\tpackage/perl-encode-detect/\nF:\tpackage/perl-encode-locale/\nF:\tpackage/perl-file-listing/\nF:\tpackage/perl-html-parser/\nF:\tpackage/perl-html-tagset/\nF:\tpackage/perl-http-cookies/\nF:\tpackage/perl-http-daemon/\nF:\tpackage/perl-http-date/\nF:\tpackage/perl-http-message/\nF:\tpackage/perl-http-negotiate/\nF:\tpackage/perl-io-html/\nF:\tpackage/perl-lwp-mediatypes/\nF:\tpackage/perl-mail-dkim/\nF:\tpackage/perl-mailtools/\nF:\tpackage/perl-net-dns/\nF:\tpackage/perl-net-http/\nF:\tpackage/perl-netaddr-ip/\nF:\tpackage/perl-timedate/\nF:\tpackage/perl-uri/\nF:\tpackage/perl-www-robotrules/\nF:\tpackage/php/\nF:\tpackage/pixman/\nF:\tpackage/pngquant/\nF:\tpackage/pound/\nF:\tpackage/pulseaudio/\nF:\tpackage/pure-ftpd/\nF:\tpackage/python-couchdb/\nF:\tpackage/python-cssutils/\nF:\tpackage/python-futures/\nF:\tpackage/python-mwclient/\nF:\tpackage/python-mwscrape/\nF:\tpackage/python-mwscrape2slob/\nF:\tpackage/python-mako/\nF:\tpackage/python-oauthlib/\nF:\tpackage/python-pyicu/\nF:\tpackage/python-pylru/\nF:\tpackage/python-requests-oauthlib/\nF:\tpackage/python-slob/\nF:\tpackage/rtmpdump/\nF:\tpackage/samba4/\nF:\tpackage/softether/\nF:\tpackage/spandsp/\nF:\tpackage/sqlite/\nF:\tpackage/stellarium/\nF:\tpackage/taglib/\nF:\tpackage/tinyxml2/\nF:\tpackage/tor/\nF:\tpackage/transmission/\nF:\tpackage/tvheadend/\nF:\tpackage/unixodbc/\nF:\tpackage/utf8proc/\nF:\tpackage/vdr/\nF:\tpackage/vdr-plugin-vnsiserver/\nF:\tpackage/vlc/\nF:\tpackage/vnstat/\nF:\tpackage/waylandpp/\nF:\tpackage/x11r7/\nF:\tpackage/x264/\nF:\tpackage/x265/\nF:\tpackage/xmrig/\nF:\tpackage/ytree/\nF:\tpackage/znc/\nF:\tsupport/testing/tests/package/test_perl_html_parser.py\n\nN:\tBiagio Montaruli <biagio.hkr@gmail.com>\nF:\tboard/acmesystems/\nF:\tconfigs/acmesystems_*\n\nN:\tBilal Wasim <bilalwasim676@gmail.com>\nF:\tboard/chromebook/elm/\nF:\tconfigs/chromebook_elm_defconfig\n\nN:\tBogdan Radulescu <bogdan@nimblex.net>\nF:\tpackage/iftop/\nF:\tpackage/ncdu/\n\nN:\tBrandon Maier <brandon.maier@collins.com>\nF:\tpackage/vmtouch/\n\nN:\tBrock Williams <brock@cottonwoodcomputer.com>\nF:\tpackage/pdmenu/\n\nN:\tCarlo Caione <carlo.caione@gmail.com>\nF:\tpackage/jailhouse/\nF:\tpackage/sunxi-boards/\n\nN:\tCarsten Schoenert <c.schoenert@gmail.com>\nF:\tpackage/dvbsnoop/\nF:\tpackage/libdvbsi/\nF:\tpackage/libsvg/\nF:\tpackage/libsvg-cairo/\n\nN:\tCédric Chépied <cedric.chepied@gmail.com>\nF:\tpackage/znc/\n\nN:\tCharles Hardin <ckhardin@gmail.com>\nF:\tpackage/alsa-plugins/\n\nN:\tChris Packham <judge.packham@gmail.com>\nF:\tpackage/coremark/\nF:\tpackage/coremark-pro/\nF:\tpackage/gstreamer1/gst1-shark/\nF:\tpackage/micropython/\nF:\tpackage/micropython-lib/\nF:\tpackage/syslog-ng/\n\nN:\tChristian Kellermann <christian.kellermann@solectrix.de>\nF:\tpackage/python-pylibftdi/\n\nN:\tChristian Stewart <christian@paral.in>\nF:\tpackage/batman-adv/\nF:\tpackage/containerd/\nF:\tpackage/delve/\nF:\tpackage/docker-cli/\nF:\tpackage/docker-compose/\nF:\tpackage/docker-engine/\nF:\tpackage/docker-proxy/\nF:\tpackage/fuse-overlayfs/\nF:\tpackage/go/\nF:\tpackage/go-bootstrap-stage1/\nF:\tpackage/go-bootstrap-stage2/\nF:\tpackage/gocryptfs/\nF:\tpackage/mbpfan/\nF:\tpackage/mosh/\nF:\tpackage/pkg-golang.mk\nF:\tpackage/rtl8821au/\nF:\tpackage/runc/\nF:\tpackage/tini/\n\nN:\tChristophe Priouzeau <christophe.priouzeau@foss.st.com>\nF:\tboard/stmicroelectronics/stm32f429-disco/\nF:\tboard/stmicroelectronics/stm32f469-disco/\nF:\tconfigs/stm32f429_disco_defconfig\nF:\tconfigs/stm32f469_disco_defconfig\n\nN:\tChristophe Vu-Brugier <cvubrugier@fastmail.fm>\nF:\tpackage/drbd-utils/\nF:\tpackage/iotop/\nF:\tpackage/python-configshell-fb/\nF:\tpackage/python-rtslib-fb/\nF:\tpackage/python-urwid/\nF:\tpackage/targetcli-fb/\n\nN:\tChristopher McCrory <chrismcc@gmail.com>\nF:\tpackage/perl-appconfig/\nF:\tpackage/perl-astro-suntime/\nF:\tpackage/perl-class-load/\nF:\tpackage/perl-class-std/\nF:\tpackage/perl-class-std-fast/\nF:\tpackage/perl-data-dump/\nF:\tpackage/perl-data-optlist/\nF:\tpackage/perl-data-uuid/\nF:\tpackage/perl-date-manip/\nF:\tpackage/perl-dbd-mysql/\nF:\tpackage/perl-dbi/\nF:\tpackage/perl-device-serialport/\nF:\tpackage/perl-dist-checkconflicts/\nF:\tpackage/perl-file-slurp/\nF:\tpackage/perl-io-interface/\nF:\tpackage/perl-io-socket-multicast/\nF:\tpackage/perl-json-maybexs/\nF:\tpackage/perl-mime-tools/\nF:\tpackage/perl-module-implementation/\nF:\tpackage/perl-module-runtime/\nF:\tpackage/perl-number-bytes-human/\nF:\tpackage/perl-package-stash/\nF:\tpackage/perl-params-util/\nF:\tpackage/perl-sub-install/\nF:\tpackage/perl-sys-cpu/\nF:\tpackage/perl-sys-meminfo/\nF:\tpackage/perl-sys-mmap/\nF:\tpackage/perl-time-parsedate/\nF:\tpackage/perl-x10/\n\nN:\tClayton Shotwell <clayton.shotwell@collins.com>\nF:\tpackage/audit/\nF:\tpackage/checkpolicy/\nF:\tpackage/cpio/\nF:\tpackage/libcgroup/\nF:\tpackage/libee/\nF:\tpackage/libestr/\nF:\tpackage/liblogging/\nF:\tpackage/libselinux/\nF:\tpackage/libsemanage/\nF:\tpackage/libsepol/\nF:\tpackage/policycoreutils/\n\nN:\tClément Péron <peron.clem@gmail.com>\nF:\tboard/beelink/gs1/\nF:\tconfigs/beelink_gs1_defconfig\n\nN:\tCorentin Guillevic <corentin.guillevic@smile.fr>\nF:\tpackage/libloki/\n\nN:\tCyril Bur <cyrilbur@gmail.com>\nF:\tarch/Config.in.powerpc\nF:\tpackage/kvm-unit-tests\n\nN:\tDagg Stompler <daggs@gmx.com>\nF:\tboard/hardkernel/odroidc2/\nF:\tconfigs/odroidc2_defconfig\nF:\tpackage/meson-tools/\nF:\tpackage/odroidc2-firmware/\n\nN:\tDaniel J. Leach <dleach@belcan.com>\nF:\tpackage/dacapo/\n\nN:\tDaniel Lang <d.lang@abatec.at>\nF:\tpackage/paho-mqtt-cpp/\n\nN:\tDamien Lanson <damien@kal-host.com>\nF:\tpackage/libvdpau/\nF:\tpackage/log4cpp/\n\nN:\tDaniel Nicoletti <dantti12@gmail.com>\nF:\tpackage/cutelyst/\n\nN:\tDaniel Price <daniel.price@gmail.com>\nF:\tpackage/nodejs/\nF:\tpackage/redis/\n\nN:\tDaniel Sangue <daniel.sangue@sangue.ch>\nF:\tpackage/libftdi1/\n\nN:\tDanilo Bargen <mail@dbrgn.ch>\nF:\tboard/pcengines/apu2/\nF:\tconfigs/pcengines_apu2_defconfig\n\nN:\tDanomi Manchego <danomimanchego123@gmail.com>\nF:\tpackage/cjson/\nF:\tpackage/jq/\nF:\tpackage/libwebsockets/\nF:\tpackage/ljsyscall/\nF:\tpackage/lua-cjson/\nF:\tpackage/luaexpat/\nF:\tpackage/xinetd/\n\nN:\tDavid Bachelart <david.bachelart@bbright.com>\nF:\tpackage/ccrypt/\nF:\tpackage/dos2unix/\nF:\tpackage/ipmiutil/\nF:\tpackage/jsmn/\nF:\tpackage/python-daemon/\nF:\tpackage/sslh/\nF:\tpackage/udpxy/\n\nN:\tDavid Bender <codehero@gmail.com>\nF:\tpackage/benejson/\nF:\tpackage/cgic/\nF:\tpackage/freeradius-client/\nF:\tpackage/openldap/\n\nN:\tDavid du Colombier <0intro@gmail.com>\nF:\tpackage/x264/\n\nN:\tDavid GOUARIN <dgouarin@gmail.com>\nF:\tpackage/librelp/\nF:\tpackage/libtalloc/\n\nN:\tDavid Lechner <david@lechnology.com>\nF:\tboard/lego/ev3/\nF:\tconfigs/lego_ev3_defconfig\nF:\tlinux/linux-ext-ev3dev-linux-drivers.mk\nF:\tpackage/brickd/\nF:\tpackage/ev3dev-linux-drivers/\n\nN:\tDavide Viti <zinosat@gmail.com>\nF:\tboard/friendlyarm/nanopi-r1/\nF:\tconfigs/friendlyarm_nanopi_r1_defconfig\nF:\tpackage/flann/\nF:\tpackage/python-paho-mqtt/\nF:\tpackage/qhull/\nF:\tpackage/tcllib/\n\nN:\tDenis Bodor <lefinnois@lefinnois.net>\nF:\tpackage/libstrophe/\n\nN:\tDerrick Lyndon Pallas <derrick@meter.com>\nF:\tpackage/ipcalc/\n\nN:\tDick Olsson <hi@senzilla.io>\nF:\tboard/aarch64-efi/\nF:\tboard/pc/\nF:\tboard/qemu/aarch64-sbsa/\nF:\tboot/arm-trusted-firmware/\nF:\tboot/edk2/\nF:\tconfigs/qemu_aarch64_sbsa_defconfig\nF:\tpackage/bearssl/\nF:\tpackage/bitcoin/\nF:\tpackage/edk2-platforms/\nF:\tpackage/execline/\nF:\tpackage/mdevd/\nF:\tpackage/s6-dns/\nF:\tpackage/s6-linux-init/\nF:\tpackage/s6-linux-utils/\nF:\tpackage/s6-networking/\nF:\tpackage/s6-portable-utils/\nF:\tpackage/s6-rc/\nF:\tpackage/s6/\nF:\tpackage/skalibs/\nF:\tsupport/testing/tests/boot/test_edk2.py\n\nN:\tDimitrios Siganos <dimitris@siganos.org>\nF:\tpackage/wireless-regdb/\n\nN:\tDominik Faessler <faessler@was.ch>\nF:\tpackage/logsurfer/\nF:\tpackage/python-id3/\n\nN:\tDoug Kehn <rdkehn@gmail.com>\nF:\tpackage/nss-pam-ldapd/\nF:\tpackage/sp-oops-extract/\nF:\tpackage/unscd/\n\nN:\tDushara Jayasinghe <nidujay@gmail.com>\nF:\tpackage/prosody/\n\nN:\tEdgar Bonet <bonet@grenoble.cnrs.fr>\nF:\tboard/acmesystems/acqua-a5/\nF:\tconfigs/acmesystems_acqua_a5_256mb_defconfig\nF:\tconfigs/acmesystems_acqua_a5_512mb_defconfig\n\nN:\tEloi Bail <eloi.bail@savoirfairelinux.com>\nF:\tpackage/bayer2rgb-neon/\nF:\tpackage/gstreamer1/gst1-plugins-bayer2rgb-neon/\n\nN:\tEric Le Bihan <eric.le.bihan.dev@free.fr>\nF:\tdocs/manual/adding-packages-meson.txt\nF:\tpackage/adwaita-icon-theme/\nF:\tpackage/darkhttpd/\nF:\tpackage/eudev/\nF:\tpackage/execline/\nF:\tpackage/hicolor-icon-theme/\nF:\tpackage/jemalloc/\nF:\tpackage/mdevd/\nF:\tpackage/meson/\nF:\tpackage/ninja/\nF:\tpackage/pkg-meson.mk\nF:\tpackage/rust-bin/\nF:\tpackage/rust/\nF:\tpackage/s6/\nF:\tpackage/s6-dns/\nF:\tpackage/s6-linux-init/\nF:\tpackage/s6-linux-utils/\nF:\tpackage/s6-networking/\nF:\tpackage/s6-portable-utils/\nF:\tpackage/s6-rc/\nF:\tpackage/skalibs/\nF:\tpackage/smack/\nF:\tpackage/xvisor/\n\nN:\tEric Limpens <limpens@gmail.com>\nF:\tpackage/pifmrds/\nF:\tpackage/ympd/\n\nN:\tErico Nunes <nunes.erico@gmail.com>\nF:\tboard/aarch64-efi/\nF:\tconfigs/aarch64_efi_defconfig\nF:\tpackage/acpica/\nF:\tpackage/acpitool/\nF:\tpackage/efibootmgr/\nF:\tpackage/efivar/\nF:\tpackage/fwts/\nF:\tpackage/spi-tools/\nF:\tpackage/xdotool/\nF:\tconfigs/pc_x86_64_*\n\nN:\tErik Larsson <karl.erik.larsson@gmail.com>\nF:\tpackage/imx-mkimage/\n\nN:\tErik Stromdahl <erik.stromdahl@gmail.com>\nF:\tpackage/mxsldr/\n\nN:\tErnesto L. Williams Jr <realcontrols@gmail.com>\nF:\tpackage/szip/\n\nN:\tEsben Haabendal <esben@haabendal.dk>\nF:\tboot/gummiboot/\nF:\tpackage/python-kiwisolver/\n\nN:\tEtienne Carriere <etienne.carriere@linaro.org>\nF:\tboot/optee-os/\nF:\tpackage/optee-benchmark/\nF:\tpackage/optee-client/\nF:\tpackage/optee-examples/\nF:\tpackage/optee-test/\n\nN:\tEugene Tarassov <eugene@largest.net>\nF:\tpackage/tcf-agent/\n\nN:\tEvan Zelkowitz <evan.zelkowitz@gmail.com>\nF:\tpackage/sdl_gfx/\n\nN:\tEzequiel Garcia <ezequiel@vanguardiasur.com.ar>\nF:\tboard/ci20/\nF:\tconfigs/ci20_defconfig\nF:\tarch/Config.in.nios2\nF:\tpackage/fio/\nF:\tpackage/iptraf-ng/\nF:\tpackage/jimtcl/\nF:\tpackage/mimic/\nF:\tpackage/nodm/\nF:\tpackage/openbox/\nF:\tpackage/rtl8723bs/\nF:\tpackage/supertuxkart/\n\nN:\tFabio Estevam <festevam@gmail.com>\nF:\tboard/freescale/warpboard/\nF:\tboard/warp7/\nF:\tconfigs/freescale_imx*\nF:\tconfigs/imx23evk_defconfig\nF:\tconfigs/imx6-sabre*\nF:\tconfigs/imx6slevk_defconfig\nF:\tconfigs/imx6sx-sdb_defconfig\nF:\tconfigs/imx6ulevk_defconfig\nF:\tconfigs/imx6ullevk_defconfig\nF:\tconfigs/imx6ulpico_defconfig\nF:\tconfigs/imx7d-sdb_defconfig\nF:\tconfigs/imx7dpico_defconfig\nF:\tconfigs/imx8mqevk_defconfig\nF:\tconfigs/mx25pdk_defconfig\nF:\tconfigs/mx51evk_defconfig\nF:\tconfigs/mx53loco_defconfig\nF:\tconfigs/mx6cubox_defconfig\nF:\tconfigs/mx6sx_udoo_neo_defconfig\nF:\tconfigs/mx6udoo_defconfig\nF:\tconfigs/wandboard_defconfig\nF:\tconfigs/warp7_defconfig\nF:\tconfigs/warpboard_defconfig\nF:\tpackage/atest/\nF:\tpackage/kmscube/\n\nN:\tFabio Porcedda <fabio.porcedda@gmail.com>\nF:\tpackage/netsurf-buildsystem/\n\nN:\tFabio Urquiza <fabiorush@gmail.com>\nF:\tpackage/bitcoin/\n\nN:\tFabrice Fontaine <fabrice.fontaine@orange.com>\nF:\tpackage/domoticz/\nF:\tpackage/libmediaart/\nF:\tpackage/libmaxminddb/\nF:\tpackage/openzwave/\n\nN:\tFabrice Fontaine <fontaine.fabrice@gmail.com>\nF:\tpackage/bearssl/\nF:\tpackage/belle-sip/\nF:\tpackage/belr/\nF:\tpackage/boinc/\nF:\tpackage/cairo/\nF:\tpackage/daq3/\nF:\tpackage/duktape/\nF:\tpackage/expat/\nF:\tpackage/flatbuffers/\nF:\tpackage/gerbera/\nF:\tpackage/gtksourceview/\nF:\tpackage/gssdp/\nF:\tpackage/gupnp/\nF:\tpackage/gupnp-dlna/\nF:\tpackage/gupnp-tools/\nF:\tpackage/haproxy/\nF:\tpackage/hiredis/\nF:\tpackage/i2pd/\nF:\tpackage/igd2-for-linux/\nF:\tpackage/json-c/\nF:\tpackage/lcms2/\nF:\tpackage/lftp/\nF:\tpackage/libcap-ng/\nF:\tpackage/libcdio-paranoia/\nF:\tpackage/libcgicc/\nF:\tpackage/libconfig/\nF:\tpackage/libcue/\nF:\tpackage/libebml/\nF:\tpackage/libgee/\nF:\tpackage/libglib2/\nF:\tpackage/libgtk2/\nF:\tpackage/libgtk3/\nF:\tpackage/libhtp/\nF:\tpackage/libidn/\nF:\tpackage/libidn2/\nF:\tpackage/libjpeg/\nF:\tpackage/liblockfile/\nF:\tpackage/libmatroska/\nF:\tpackage/libmpdclient/\nF:\tpackage/libnetfilter_conntrack/\nF:\tpackage/libnetfilter_queue/\nF:\tpackage/libnpupnp/\nF:\tpackage/liboping/\nF:\tpackage/libpfm4/\nF:\tpackage/libraw/\nF:\tpackage/libraw1394/\nF:\tpackage/libroxml/\nF:\tpackage/librsvg/\nF:\tpackage/librsync/\nF:\tpackage/libsoup/\nF:\tpackage/libsoxr/\nF:\tpackage/libupnp/\nF:\tpackage/libv4l/\nF:\tpackage/libxslt/\nF:\tpackage/mbedtls/\nF:\tpackage/minissdpd/\nF:\tpackage/minizip/\nF:\tpackage/mongodb/\nF:\tpackage/motion/\nF:\tpackage/mutt/\nF:\tpackage/ncmpc/\nF:\tpackage/oniguruma/\nF:\tpackage/opencv4/\nF:\tpackage/oprofile/\nF:\tpackage/pcmanfm/\nF:\tpackage/perl-extutils-pkgconfig/\nF:\tpackage/python-backcall/\nF:\tpackage/python-jedi/\nF:\tpackage/python-parso/\nF:\tpackage/python-yatl/\nF:\tpackage/rocksdb/\nF:\tpackage/rtl_433/\nF:\tpackage/rygel/\nF:\tpackage/safeclib/\nF:\tpackage/snort3/\nF:\tpackage/suricata/\nF:\tpackage/tinycbor/\nF:\tpackage/tinydtls/\nF:\tpackage/tinymembench/\nF:\tpackage/whois/\n\nN:\tFabrice Goucem <fabrice.goucem@oss.nxp.com>\nF:\tboard/freescale/imx6ullevk/\nF:\tconfigs/freescale_imx6ullevk_defconfig\n\nN:\tFalco Hyfing <hyfinglists@gmail.com>\nF:\tpackage/python-pymodbus/\n\nN:\tFilip Skoneczny <fskoneczny@gmail.com>\nF:\tboard/sinovoip/m1-plus\nF:\tconfigs/bananapi_m1_plus_defconfig\n\nN:\tFloris Bos <bos@je-eigen-domein.nl>\nF:\tpackage/ipmitool/\nF:\tpackage/odhcploc/\n\nN:\tFrancisco Gonzalez <gzmorell@gmail.com>\nF:\tpackage/ser2net/\n\nN:\tFrancois Perrad <francois.perrad@gadz.org>\nF:\tboard/olimex/a20_olinuxino\nF:\tboard/olimex/imx233_olinuxino/\nF:\tconfigs/olimex_a20_olinuxino_*\nF:\tconfigs/olimex_imx233_olinuxino_defconfig\nF:\tpackage/4th/\nF:\tpackage/cgilua/\nF:\tpackage/chipmunk/\nF:\tpackage/cog/\nF:\tpackage/collectl/\nF:\tpackage/copas/\nF:\tpackage/coxpcall/\nF:\tpackage/dado/\nF:\tpackage/ficl/\nF:\tpackage/janet/\nF:\tpackage/libtomcrypt/\nF:\tpackage/libtommath/\nF:\tpackage/libwpe/\nF:\tpackage/linenoise/\nF:\tpackage/ljlinenoise/\nF:\tpackage/lpeg/\nF:\tpackage/lpty/\nF:\tpackage/lrandom/\nF:\tpackage/lsqlite3/\nF:\tpackage/lua*\nF:\tpackage/lzlib/\nF:\tpackage/moarvm/\nF:\tpackage/mstpd/\nF:\tpackage/netsurf/\nF:\tpackage/perl*\nF:\tpackage/pkg-perl.mk\nF:\tpackage/pkg-luarocks.mk\nF:\tpackage/quickjs/\nF:\tpackage/rings/\nF:\tpackage/tekui/\nF:\tpackage/wpebackend-fdo/\nF:\tpackage/wpewebkit/\nF:\tpackage/wsapi/\nF:\tpackage/wsapi-fcgi/\nF:\tpackage/wsapi-xavante/\nF:\tpackage/xavante/\nF:\tsupport/testing/tests/package/test_lua*\nF:\tutils/scancpan\n\nN:\tFrank Hunleth <fhunleth@troodon-software.com>\nF:\tpackage/am335x-pru-package/\nF:\tpackage/libconfuse/\nF:\tpackage/libdmtx/\nF:\tpackage/libsodium/\nF:\tpackage/php-amqp/\nF:\tpackage/python-cherrypy/\nF:\tpackage/rabbitmq-server/\nF:\tpackage/sane-backends/\nF:\tpackage/ucl/\nF:\tpackage/upx/\nF:\tpackage/zxing-cpp/\n\nN:\tFrank Vanbever <frank.vanbever@essensium.com>\nF: \tpackage/elixir/\nF:\tpackage/libmodsecurity/\nF:\tpackage/nginx-modsecurity/\n\nN:\tGaël Portay <gael.portay@collabora.com>\nF:\tpackage/qt5/qt5virtualkeyboard/\nF:\tpackage/qt5/qt5webengine/\nF:\tpackage/qt5/qt5webkit/\nF:\tpackage/qt5/qt5webkit-examples/\n\nN:\tGao Xiang <hsiangkao@aol.com>\nF:\tpackage/erofs-utils/\n\nN:\tGary Bisson <bisson.gary@gmail.com>\nF:\tboard/boundarydevices/\nF:\tconfigs/nitrogen*\nF:\tpackage/freescale-imx/\nF:\tpackage/gstreamer1/gst1-imx/\nF:\tpackage/libimxvpuapi/\nF:\tpackage/mfgtools/\nF:\tpackage/sshpass/\nF:\tpackage/x11r7/xdriver_xf86-video-imx-viv/\n\nN:\tGeoff Levand <geoff@infradead.org>\nF:\tpackage/flannel/\n\nN:\tGeoffrey Ragot <geoffreyragot@gmail.com>\nF:\tpackage/python-pycli/\nF:\tpackage/python-pyyaml/\n\nN:\tGerome Burlats <gerome.burlats@smile.fr>\nF:\tboard/qemu/\nF:\tconfigs/qemu_*\n\nN:\tGilles Talis <gilles.talis@gmail.com>\nF:\tboard/freescale/imx8mmevk/\nF:\tconfigs/freescale_imx8mmevk_defconfig\nF:\tpackage/cctz/\nF:\tpackage/faad2/\nF:\tpackage/fdk-aac/\nF:\tpackage/httping/\nF:\tpackage/iozone/\nF:\tpackage/leptonica/\nF:\tpackage/libeXosip2/\nF:\tpackage/libolm/\nF:\tpackage/libosip2/\nF:\tpackage/ocrad/\nF:\tpackage/opusfile/\nF:\tpackage/restclient-cpp/\nF:\tpackage/tesseract-ocr/\nF:\tpackage/webp/\nF:\tpackage/xapian/\n\nN:\tGiulio Benetti <giulio.benetti@benettiengineering.com>\nF:\tboard/olimex/a*\nF:\tconfigs/amarula_vyasa_rk3288_defconfig\nF:\tconfigs/asus_tinker_rk3288_defconfig\nF:\tconfigs/olimex_a*\nF:\tpackage/at/\nF:\tpackage/binutils/\nF:\tpackage/erlang-jiffy/\nF:\tpackage/gcc/\nF:\tpackage/harfbuzz/\nF:\tpackage/libfuse3/\nF:\tpackage/libnspr/\nF:\tpackage/libnss/\nF:\tpackage/minicom/\nF:\tpackage/nfs-utils/\nF:\tpackage/python-uvloop/\nF:\tpackage/sunxi-mali-mainline/\nF:\tpackage/sunxi-mali-mainline-driver/\nF:\tpackage/trace-cmd/\nF:\tpackage/udisks/\nF:\ttoolchain/\n\nN:\tGregory Dymarek <gregd72002@gmail.com>\nF:\tpackage/ding-libs/\nF:\tpackage/gengetopt/\nF:\tpackage/janus-gateway/\nF:\tpackage/libnice/\nF:\tpackage/libsrtp/\nF:\tpackage/libwebsock/\nF:\tpackage/sofia-sip/\n\nN:\tGrzegorz Blach <grzegorz@blach.pl>\nF:\tfs/f2fs/\nF:\tpackage/bluez5_utils-headers/\nF:\tpackage/f2fs-tools/\nF:\tpackage/graphicsmagick/\nF:\tpackage/pigpio/\nF:\tpackage/python-aioblescan/\nF:\tpackage/python-bluezero/\nF:\tpackage/python-crontab/\nF:\tpackage/python-falcon/\nF:\tpackage/python-ifaddr/\nF:\tpackage/python-hiredis/\nF:\tpackage/python-mimeparse/\nF:\tpackage/python-pigpio/\nF:\tpackage/python-pyjwt/\nF:\tpackage/python-redis/\nF:\tpackage/python-rpi-ws281x/\nF:\tpackage/python-wtforms/\n\nN:\tGuillaume William Brs <guillaume.bressaix@gmail.com>\nF:\tpackage/libnids/\nF:\tpackage/libxcrypt/\nF:\tpackage/liquid-dsp/\nF:\tpackage/pixiewps/\nF:\tpackage/python-pybind/\nF:\tpackage/reaver/\n\nN:\tGuo Ren <ren_guo@c-sky.com>\nF:\tarch/Config.in.csky\nF:\tboard/csky/\nF:\tconfigs/csky_*\n\nN:\tGustavo Heinz <gustavo@gsthnz.com>\nF:\tpackage/python-m2crypto/\n\nN:\tGustavo Pimentel <gustavo.pimentel@synopsys.com>\nF:\tconfigs/arm_juno_defconfig\nF:\tboard/arm/juno/\n\nN:\tGwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\nF:\tboard/terasic/de10nano_cyclone5/\nF:\tconfigs/terasic_de10nano_cyclone5_defconfig\nF:\tpackage/gnuradio/\nF:\tpackage/gqrx/\nF:\tpackage/gr-osmosdr/\nF:\tpackage/librtlsdr/\nF:\tpackage/libusbgx/\nF:\tpackage/matio/\nF:\tpackage/python-cheetah/\nF:\tpackage/python-markdown/\nF:\tpackage/python-remi/\nF:\tpackage/python-sip/\nF:\tpackage/uhd/\n\nN:\tHeiko Thiery <heiko.thiery@gmail.com>\nF:\tboard/kontron/pitx-imx8m/\nF:\tconfigs/kontron_pitx_imx8m_defconfig\nF:\tpackage/altera-stapl/\nF:\tpackage/ipmitool/\nF:\tpackage/libnetconf2/\nF:\tpackage/libyang/\nF:\tpackage/linuxptp/\nF:\tpackage/netopeer2/\nF:\tpackage/sysrepo/\n\nN:\tHenrique Camargo <henrique@henriquecamargo.com>\nF:\tpackage/json-glib/\n\nN:\tHervé Codina <herve.codina@bootlin.com>\nF:\tpackage/dtbocfg/\nF:\tpackage/libdbi/\nF:\tpackage/libdbi-drivers/\nF:\tpackage/lua-augeas/\nF:\tsupport/testing/tests/package/test_dtbocfg.py\nF:\tsupport/testing/tests/package/test_lua_augeas.py\n\nN:\tHervé Codina <herve.codina@bootlin.com>\nF:\tpackage/php-pecl-dbus/\nF:\tsupport/testing/tests/package/test_php_pecl_dbus.py\n\nN:\tHiroshi Kawashima <kei-k@ca2.so-net.ne.jp>\nF:\tpackage/gauche/\nF:\tpackage/gmrender-resurrect/\nF:\tpackage/squeezelite/\n\nN:\tHoratiu Vultur <horatiu.vultur@microchip.com>\nF:\tpackage/easyframes/\nF:\tpackage/mrp/\n\nN:\tIan Haylock <haylocki@yahoo.co.uk>\nF:\tpackage/python-rpi-gpio/\n\nN:\tIgnacy Gawędzki <ignacy.gawedzki@green-communications.fr>\nF:\tpackage/angularjs/\n\nN:\tIlias Apalodimas <apalos@gmail.com>\nF:\tpackage/keepalived/\n\nN:\tIlya Averyanov <averyanovin@gmail.com>\nF:\tpackage/exempi/\n\nN:\tIsmael Luceno <ismael@iodev.co.uk>\nF:\tpackage/axel/\nF:\tpackage/mawk/\n\nN:\tJagan Teki <jagan@amarulasolutions.com>\nF:\tboard/amarula/\nF:\tboard/asus/\nF:\tboard/bananapi/\nF:\tboard/engicam/\nF:\tboard/friendlyarm/nanopi-a64/\nF:\tboard/friendlyarm/nanopi-neo2/\nF:\tboard/olimex/a33_olinuxino/\nF:\tboard/olimex/a64-olinuxino/\nF:\tboard/orangepi/orangepi-lite2/\nF:\tboard/orangepi/orangepi-one-plus\nF:\tboard/orangepi/orangepi-pc2/\nF:\tboard/orangepi/orangepi-prime/\nF:\tboard/orangepi/orangepi-win/\nF:\tboard/orangepi/orangepi-zero-plus2/\nF:\tboard/pine64/\nF:\tconfigs/amarula_a64_relic_defconfig\nF:\tconfigs/amarula_vyasa_rk3288_defconfig\nF:\tconfigs/asus_tinker_rk3288_defconfig\nF:\tconfigs/bananapi_m1_defconfig\nF:\tconfigs/bananapi_m64_defconfig\nF:\tconfigs/engicam_imx6qdl_icore_defconfig\nF:\tconfigs/engicam_imx6qdl_icore_qt5_defconfig\nF:\tconfigs/engicam_imx6qdl_icore_rqs_defconfig\nF:\tconfigs/engicam_imx6ul_geam_defconfig\nF:\tconfigs/engicam_imx6ul_isiot_defconfig\nF:\tconfigs/friendlyarm_nanopi_a64_defconfig\nF:\tconfigs/friendlyarm_nanopi_neo2_defconfig\nF:\tconfigs/olimex_a33_olinuxino_defconfig\nF:\tconfigs/olimex_a64_olinuxino_defconfig\nF:\tconfigs/orangepi_lite2_defconfig\nF:\tconfigs/orangepi_one_plus_defconfig\nF:\tconfigs/orangepi_pc2_defconfig\nF:\tconfigs/orangepi_prime_defconfig\nF:\tconfigs/orangepi_win_defconfig\nF:\tconfigs/orangepi_zero_plus2_defconfig\nF:\tconfigs/pine64_defconfig\nF:\tconfigs/pine64_sopine_defconfig\n\nN:\tJames Hilliard <james.hilliard1@gmail.com>\nF:\tpackage/apcupsd/\nF:\tpackage/exfatprogs/\nF:\tpackage/gensio/\nF:\tpackage/lua-std-debug/\nF:\tpackage/lua-std-normalize/\nF:\tpackage/pipewire/\nF:\tpackage/python-aioconsole/\nF:\tpackage/python-aiodns/\nF:\tpackage/python-aiohttp/\nF:\tpackage/python-aiohttp-cors/\nF:\tpackage/python-aiohttp-debugtoolbar/\nF:\tpackage/python-aiohttp-jinja2/\nF:\tpackage/python-aiohttp-mako/\nF:\tpackage/python-aiohttp-remotes/\nF:\tpackage/python-aiohttp-security/\nF:\tpackage/python-aiohttp-session/\nF:\tpackage/python-aiohttp-sse/\nF:\tpackage/python-aiologstash/\nF:\tpackage/python-aiomonitor/\nF:\tpackage/python-aiojobs/\nF:\tpackage/python-aioprocessing/\nF:\tpackage/python-aiorwlock/\nF:\tpackage/python-aiosignal/\nF:\tpackage/python-aiozipkin/\nF:\tpackage/python-argon2-cffi/\nF:\tpackage/python-async-lru/\nF:\tpackage/python-async-timeout/\nF:\tpackage/python-bidict/\nF:\tpackage/python-brotli/\nF:\tpackage/python-cbor2/\nF:\tpackage/python-cchardet/\nF:\tpackage/python-charset-normalizer/\nF:\tpackage/python-flatbuffers/\nF:\tpackage/python-frozenlist/\nF:\tpackage/python-greenlet/\nF:\tpackage/python-janus/\nF:\tpackage/python-logstash/\nF:\tpackage/python-multidict/\nF:\tpackage/python-pycares/\nF:\tpackage/python-snappy/\nF:\tpackage/python-sockjs/\nF:\tpackage/python-terminaltables/\nF:\tpackage/python-yarl/\n\nN:\tJames Knight <james.knight@collins.com>\nF:\tpackage/atkmm/\nF:\tpackage/cairomm/\nF:\tpackage/google-material-design-icons/\nF:\tpackage/glibmm/\nF:\tpackage/gtkmm3/\nF:\tpackage/libpqxx/\nF:\tpackage/pangomm/\nF:\tpackage/rpm/\nF:\tpackage/yad/\n\nN:\tJan Heylen <jan.heylen@nokia.com>\nF:\tpackage/opentracing-cpp/\n\nN:\tJan Kraval <jan.kraval@gmail.com>\nF:\tboard/orangepi/orangepi-lite\nF:\tconfigs/orangepi_lite_defconfig\n\nN:\tJan Kundrát <jan.kundrat@cesnet.cz>\nF:\tconfigs/solidrun_clearfog_defconfig\nF:\tboard/solidrun/clearfog/\nF:\tpackage/libnetconf2/\nF:\tpackage/libyang/\nF:\tpackage/sysrepo/\n\nN:\tJan Pedersen <jp@jp-embedded.com>\nF:\tpackage/zip/\n\nN:\tJared Bents <jared.bents@rockwellcollins.com>\nF:\tpackage/libvirt/\n\nN:\tJarkko Sakkinen <jarkko.sakkinen@intel.com>\nF:\tpackage/quota/\n\nN:\tJason Pruitt <jrspruitt@gmail.com>\nF:\tpackage/librtlsdr/\n\nN:\tJean Burgat <jeanburgat33@gmail.com>\nF:\tpackage/openfpgaloader/\n\nN:\tJens Kleintje <scooby22@web.de>\nF:\tpackage/gcnano-binaries/\n\nN:\tJens Rosenboom <j.rosenboom@x-ion.de>\nF:\tpackage/sl/\n\nN:\tJens Zettelmeyer <zettelmeyerj@gmail.com>\nF:\tpackage/batctl/\n\nN:\tJeremy Rosen <jeremy.rosen@openwide.fr>\nF:\tpackage/fxload/\n\nN:\tJérôme Oufella <jerome.oufella@savoirfairelinux.com>\nF:\tpackage/libdri2/\nF:\tpackage/qt-webkit-kiosk/\n\nN:\tJérôme Pouiller <jezz@sysmic.org>\nF:\tpackage/apitrace/\nF:\tpackage/freescale-imx/gpu-amd-bin-mx51/\nF:\tpackage/freescale-imx/libz160/\nF:\tpackage/lxc/\nF:\tpackage/strongswan/\nF:\tpackage/wmctrl/\nF:\tpackage/x11r7/xdriver_xf86-video-imx/\nF:\tpackage/x11r7/xdriver_xf86-video-imx-viv/\n\nN:\tJianhui Zhao <zhaojh329@gmail.com>\nF:\tpackage/libuhttpd/\nF:\tpackage/libuwsc/\nF:\tpackage/rtty/\n\nN:\tJoachim Wiberg <troglobit@gmail.com>\nF:\tconfigs/globalscale_espressobin_defconfig\nF:\tboard/globalscale/espressobin/\nF:\tpackage/inadyn/\nF:\tpackage/libite/\nF:\tpackage/libteam/\nF:\tpackage/libuev/\nF:\tpackage/mg/\nF:\tpackage/mrouted/\nF:\tpackage/netcalc/\nF:\tpackage/smcroute/\nF:\tpackage/ssdp-responder/\nF:\tpackage/sysklogd/\nF:\tpackage/watchdogd/\n\nN:\tJoao Pinto <jpinto@synopsys.com>\nF:\tboard/synopsys/vdk/\nF:\tconfigs/snps_aarch64_vdk_defconfig\n\nN:\tJochen Baltes <jochen.baltes@gmail.com>\nF:\tpackage/altera-stapl\n\nN:\tJoel Carlson <JoelsonCarl@gmail.com>\nF:\tpackage/c-capnproto/\nF:\tpackage/capnproto/\nF:\tpackage/cmocka/\nF:\tpackage/flatcc/\nF:\tpackage/libcorrect/\n\nN:\tJoel Stanley <joel@jms.id.au>\nF:\tpackage/pdbg/\nF:\tboard/qemu/ppc64le-pseries/\nF:\tconfigs/qemu_ppc64le_pseries_defconfig\nF:\tboard/qemu/ppc-mac99/\nF:\tconfigs/qemu_ppc_mac99_defconfig\n\nN:\tJohan Derycke <johanderycke@gmail.com>\nF:\tpackage/python-libconfig/\n\nN:\tJohan Oudinet <johan.oudinet@gmail.com>\nF:\tpackage/ejabberd/\nF:\tpackage/erlang-base64url/\nF:\tpackage/erlang-eimp/\nF:\tpackage/erlang-goldrush/\nF:\tpackage/erlang-idna/\nF:\tpackage/erlang-jiffy/\nF:\tpackage/erlang-jose/\nF:\tpackage/erlang-lager/\nF:\tpackage/erlang-p1-acme/\nF:\tpackage/erlang-p1-cache-tab/\nF:\tpackage/erlang-p1-mqtree/\nF:\tpackage/erlang-p1-oauth2/\nF:\tpackage/erlang-p1-pkix/\nF:\tpackage/erlang-p1-sip/\nF:\tpackage/erlang-p1-stringprep/\nF:\tpackage/erlang-p1-stun/\nF:\tpackage/erlang-p1-tls/\nF:\tpackage/erlang-p1-utils/\nF:\tpackage/erlang-p1-xml/\nF:\tpackage/erlang-p1-xmpp/\nF:\tpackage/erlang-p1-yaml/\nF:\tpackage/erlang-p1-yconf/\nF:\tpackage/erlang-p1-zlib/\nF:\tpackage/nginx-dav-ext/\nF:\tpackage/vuejs/\n\nN:\tJohn Stile <johns@msli.com>\nF:\tpackage/dhcpcd/\n\nN:\tJohn Faith <jfaith@impinj.com>\nF:\tpackage/python-inflection/\nF:\tpackage/sdbusplus/\n\nN:\tJonathan Ben Avraham <yba@tkos.co.il>\nF:\tarch/Config.in.xtensa\nF:\tpackage/autofs/\nF:\tpackage/dawgdic/\nF:\tpackage/libphidget/\nF:\tpackage/phidgetwebservice/\nF:\tpackage/rapidxml/\nF:\tpackage/sphinxbase/\n\nN:\tJoris Offouga <offougajoris@gmail.com>\nF:\tpackage/python-colorlog/\nF:\tpackage/python-simplelogging/\n\nN:\tJörg Krause <joerg.krause@embedded.rocks>\nF:\tboard/lemaker/bananapro/\nF:\tconfigs/bananapro_defconfig\nF:\tpackage/augeas/\nF:\tpackage/bluez-alsa/\nF:\tpackage/caps/\nF:\tpackage/freescale-imx/imx-alsa-plugins/\nF:\tpackage/libopusenc/\nF:\tpackage/libupnpp/\nF:\tpackage/luv/\nF:\tpackage/luvi/\nF:\tpackage/mpd/\nF:\tpackage/shairport-sync/\nF:\tpackage/swupdate/\nF:\tpackage/upmpdcli/\nF:\tpackage/wavemon/\n\nN:\tJoris Lijssens <joris.lijssens@gmail.com>\nF:\tpackage/emlog/\nF:\tpackage/libcoap/\nF:\tpackage/libnet/\nF:\tpackage/libuio/\nF:\tpackage/netsniff-ng/\nF:\tpackage/rabbitmq-c/\n\nN:\tJosé Luis Salvador Rufo <salvador.joseluis@gmail.com>\nF:\tpackage/zfs/\nF:\tsupport/testing/tests/package/test_zfs.py\n\nN:\tJosé Pekkarinen <jose.pekkarinen@unikie.com>\nF:\tpackage/softhsm2/\n\nN:\tJoseph Kogut <joseph.kogut@gmail.com>\nF:\tpackage/at-spi2-atk/\nF:\tpackage/at-spi2-core/\nF:\tpackage/clang/\nF:\tpackage/earlyoom/\nF:\tpackage/gconf/\nF:\tpackage/libnss/\nF:\tpackage/lld/\nF:\tpackage/llvm/\nF:\tpackage/python-cython/\nF:\tpackage/python-pycups/\nF:\tpackage/python-raven/\nF:\tpackage/python-schedule/\nF:\tpackage/python-sentry-sdk/\nF:\tpackage/python-websockets/\nF:\tpackage/python-xlib/\nF:\tpackage/sentry-native/\nF:\tpackage/unclutter-xfixes/\n\nN:\tJoshua Henderson <joshua.henderson@microchip.com>\nF:\tpackage/qt5/qt5wayland/\n\nN:\tJugurtha BELKALEM <jugurtha.belkalem@smile.fr>\nF:\tpackage/python-aiofiles/\nF:\tpackage/python-crayons/\nF:\tpackage/python-cycler/\nF:\tpackage/python-matplotlib/\nF:\tpackage/python-opcua-asyncio/\nF:\tpackage/python-piexif/\n\nN:\tJuha Rantanen <juha@codercoded.com>\nF:\tpackage/acsccid/\n\nN:\tJulian Scheel <julian@jusst.de>\nF:\tpackage/bitstream/\nF:\tpackage/cbootimage/\nF:\tpackage/cryptopp/\nF:\tpackage/dvblast/\nF:\tpackage/tegrarcm/\n\nN:\tJulien Boibessot <julien.boibessot@armadeus.com>\nF:\tboard/armadeus/\nF:\tconfigs/armadeus*\nF:\tpackage/abootimg/\nF:\tpackage/gpm/\nF:\tpackage/lbreakout2/\nF:\tpackage/libcddb/\nF:\tpackage/libmodbus/\nF:\tpackage/ltris/\nF:\tpackage/opentyrian/\nF:\tpackage/python-pygame/\n\nN:\tJulien Corjon <corjon.j@ecagroup.com>\nF:\tpackage/qt5/\n\nN:\tJulien Grossholtz <julien.grossholtz@openest.io>\nF:\tboard/technologic/ts7680/\nF:\tconfigs/ts7680_defconfig\nF:\tpackage/paho-mqtt-c\n\nN:\tJulien Olivain <ju.o@free.fr>\nF:\tboard/qmtech/zynq/\nF:\tboard/technexion/imx8mmpico/\nF:\tboard/technexion/imx8mpico/\nF:\tconfigs/imx8mmpico_defconfig\nF:\tconfigs/imx8mpico_defconfig\nF:\tconfigs/zynq_qmtech_defconfig\nF:\tpackage/fluid-soundfont/\nF:\tpackage/fluidsynth/\nF:\tpackage/glslsandbox-player/\nF:\tpackage/ptm2human/\nF:\tpackage/python-pyalsa/\n\nN:\tJulien Viard de Galbert <julien@vdg.name>\nF:\tpackage/dieharder/\nF:\tpackage/easy-rsa/\n\nN:\tJustin Maggard <jmaggard@netgear.com>\nF:\tpackage/dtach/\n\nN:\tKamel Bouhara <kamel.bouhara@gmail.com>\nF:\tpackage/libodb-boost/\nF:\tpackage/libodb-mysql/\nF:\tpackage/libqb/\nF:\tpackage/usbguard/\n\nN:\tKaroly Kasza <kaszak@gmail.com>\nF:\tpackage/irqbalance/\nF:\tpackage/openvmtools/\n\nN:\tKelvin Cheung <keguang.zhang@gmail.com>\nF:\tpackage/cpuload/\nF:\tpackage/bwm-ng/\nF:\tpackage/ramsmp/\n\nN:\tKieran Bingham <kieran.bingham@ideasonboard.com>\nF:\tpackage/libcamera/\n\nN:\tKlaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>\nF:\tpackage/wqy-zenhei/\n\nN:\tKoen Martens <gmc@sonologic.nl>\nF:\tpackage/capnproto/\nF:\tpackage/linuxconsoletools/\n\nN:\tKurt Van Dijck <dev.kurt@vandijck-laurijssen.be>\nF:\tpackage/bcusdk/\nF:\tpackage/libpthsem/\nF:\tpackage/nilfs-utils/\n\nN:\tLaurent Cans <laurent.cans@gmail.com>\nF:\tpackage/aircrack-ng/\n\nN:\tLaurent Charpentier <laurent_pubs@yahoo.com>\nF:\tpackage/open-lldp/\n\nN:\tLee Jones <lee.jones@linaro.org>\nF:\tboot/afboot-stm32/\n\nN:\tLeon Anavi <leon.anavi@konsulko.com>\nF:\tboard/olimex/a10_olinuxino\nF:\tconfigs/olimex_a10_olinuxino_lime_defconfig\n\nN:\tLeonid Yuriev <leo@yuriev.ru>\nF:\tpackage/libmdbx/\n\nN:\tLionel Flandrin <lionel@svkt.org>\nF:\tpackage/python-babel/\nF:\tpackage/python-daemonize/\nF:\tpackage/python-flask/\nF:\tpackage/python-flask-babel/\nF:\tpackage/python-gunicorn/\nF:\tsupport/testing/tests/package/sample_python_flask.py\nF:\tsupport/testing/tests/package/test_python_flask.py\n\nN:\tLionel Orry <lionel.orry@gmail.com>\nF:\tpackage/mongrel2/\n\nN:\tLothar Felten <lothar.felten@gmail.com>\nF:\tboard/bananapi/bananapi-m2-ultra/\nF:\tboard/beaglebone/\nF:\tconfigs/bananapi_m2_ultra_defconfig\nF:\tconfigs/beaglebone_defconfig\nF:\tconfigs/beaglebone_qt5_defconfig\nF:\tpackage/ti-sgx-demos/\nF:\tpackage/ti-sgx-km/\nF:\tpackage/ti-sgx-um/\n\nN:\tLouis Aussedat <aussedat.louis@gmail.com>\nF:\tboard/friendlyarm/nanopi-neo-plus2/\nF:\tconfigs/friendlyarm_nanopi_neo_plus2_defconfig\nF:\tpackage/mfoc\nF:\tpackage/libpam-nfc\nF:\tpackage/python-dnspython/\nF:\tpackage/python-future/\nF:\tpackage/python-huepy/\nF:\tpackage/python-tqdm/\n\nN:\tLouis-Paul Cordier <lpdev@cordier.org>\nF:\tpackage/intel-gmmlib/\nF:\tpackage/intel-mediadriver/\nF:\tpackage/intel-mediasdk/\n\nN:\tLuca Ceresoli <luca@lucaceresoli.net>\nF:\tboard/olimex/a20_olinuxino/\nF:\tboard/zynq/\nF:\tboard/zynqmp/\nF:\tconfigs/olimex_a20_olinuxino_*\nF:\tconfigs/zynq_microzed_defconfig\nF:\tconfigs/zynq_zed_defconfig\nF:\tconfigs/zynq_zc706_defconfig\nF:\tconfigs/zynqmp_zcu106_defconfig\nF:\tpackage/agentpp/\nF:\tpackage/exim/\nF:\tpackage/libpjsip/\nF:\tpackage/qpid-proton/\nF:\tpackage/rtl8188eu/\nF:\tpackage/snmppp/\nF:\tpackage/stm32flash/\nF:\tpackage/unzip/\nF:\tsupport/legal-info/\n\nN:\tLucas De Marchi <lucas.de.marchi@gmail.com>\nF:\tpackage/fswebcam/\n\nN:\tLubomir Rintel <lkundrak@v3.sk>\nF:\tboard/olpc/\nF:\tconfigs/olpc_xo1_defconfig\nF:\tconfigs/olpc_xo175_defconfig\n\nN:\tLudovic Desroches <ludovic.desroches@microchip.com>\nF:\tboard/atmel/\nF:\tboard/microchip/\nF:\tconfigs/at91*\nF:\tconfigs/atmel_*\nF:\tconfigs/microchip_*\nF:\tpackage/fb-test-app/\nF:\tpackage/python-json-schema-validator/\nF:\tpackage/python-keyring/\nF:\tpackage/python-simplejson/\nF:\tpackage/python-versiontools/\nF:\tpackage/wilc1000-firmware/\n\nN:\tMaeva Manuel <maeva.manuel@oss.nxp.com>\nF:\tboard/freescale/imx8qmmek/\nF:\tconfigs/freescale_imx8qmmek_defconfig\nF:\tpackage/freescale-imx/imx-seco/\n\nN:\tMahyar Koshkouei <mahyar.koshkouei@gmail.com>\nF:\tpackage/ffmpeg/\nF:\tpackage/mpv/\nF:\tpackage/rpi-firmware/\nF:\tpackage/rpi-userland/\n\nN:\tManuel Vögele <develop@manuel-voegele.de>\nF:\tpackage/python-pyqt5/\nF:\tpackage/python-requests-toolbelt/\n\nN:\tMarcin Bis <marcin@bis.org.pl>\nF:\tpackage/bluez5_utils/\nF:\tpackage/cc-tool/\nF:\tpackage/ecryptfs-utils/\n\nN:\tMarcin Niestroj <m.niestroj@grinn-global.com>\nF:\tboard/grinn/\nF:\tboard/orangepi/orangepi-zero-plus/\nF:\tconfigs/grinn_*\nF:\tconfigs/orangepi_zero_plus_defconfig\nF:\tpackage/argparse/\nF:\tpackage/dt-utils/\nF:\tpackage/easydbus/\nF:\tpackage/lua-flu/\nF:\tpackage/lua-stdlib/\nF:\tpackage/luaossl/\nF:\tpackage/murata-cyw-fw/\nF:\tpackage/netdata/\nF:\tpackage/python-ansicolors/\nF:\tpackage/python-bleak/\nF:\tpackage/python-dbus-fast/\nF:\tpackage/python-dbus-next/\nF:\tpackage/python-iniconfig/\nF:\tpackage/python-intelhex/\nF:\tpackage/python-packaging/\nF:\tpackage/python-pluggy/\nF:\tpackage/python-pytest/\nF:\tpackage/python-pytest-asyncio/\nF:\tpackage/python-typing-extensions/\nF:\tpackage/python-xmodem/\nF:\tpackage/rs485conf/\nF:\tpackage/turbolua/\nF:\tsupport/testing/tests/package/sample_python_dbus_fast.py\nF:\tsupport/testing/tests/package/sample_python_dbus_next.py\nF:\tsupport/testing/tests/package/sample_python_pytest.py\nF:\tsupport/testing/tests/package/sample_python_pytest_asyncio.py\nF:\tsupport/testing/tests/package/test_netdata.py\nF:\tsupport/testing/tests/package/test_python_dbus_next.py\nF:\tsupport/testing/tests/package/test_python_pytest.py\nF:\tsupport/testing/tests/package/test_python_pytest_asyncio.py\n\nN:\tMarcus Folkesson <marcus.folkesson@gmail.com>\nF:\tpackage/libostree/\nF:\tpackage/libselinux/\nF:\tpackage/libsemanage/\nF:\tpackage/libsepol/\nF:\tpackage/selinux-python/\nF:\tutils/config\nF:\tutils/diffconfig\n\nN:\tMarek Belisko <marek.belisko@open-nandra.com>\nF:\tboard/friendlyarm/nanopi-neo4/\nF:\tconfigs/friendlyarm_nanopi_neo4_defconfig\nF:\tpackage/libatasmart/\nF:\tpackage/polkit/\nF:\tpackage/sg3_utils/\nF:\tpackage/udisks/\n\nN:\tMario Lang <mlang@blind.guru>\nF:\tpackage/brltty/\nF:\tpackage/lynx/\n\nN:\tMario Rugiero <mrugiero@gmail.com>\nF:\tpackage/ratpoison/\n\nN:\tMark Corbin <mark@dibsco.co.uk>\nF:\tarch/arch.mk.riscv\nF:\tarch/Config.in.riscv\nF:\tboard/qemu/riscv32-virt/\nF:\tboard/qemu/riscv64-virt/\nF:\tconfigs/qemu_riscv32_virt_defconfig\nF:\tconfigs/qemu_riscv64_virt_defconfig\n\nN:\tMartin Bark <martin@barkynet.com>\nF:\tboard/raspberrypi/\nF:\tconfigs/raspberrypi3_defconfig\nF:\tpackage/ca-certificates/\nF:\tpackage/connman/\nF:\tpackage/nodejs/\nF:\tpackage/rpi-bt-firmware/\nF:\tpackage/rpi-firmware/\nF:\tpackage/rpi-wifi-firmware/\nF:\tpackage/tzdata/\nF:\tpackage/zic/\n\nN:\tMartin Hicks <mort@bork.org>\nF:\tpackage/cryptsetup/\n\nN:\tMartin Kepplinger <martink@posteo.de>\nF:\tpackage/tslib/\nF:\tpackage/x11r7/xdriver_xf86-input-tslib/\nF:\tpackage/x11vnc/\n\nN:\tMasahiro Yamada <yamada.masahiro@socionext.com>\nF:\tboard/arm/foundation-v8/\nF:\tconfigs/arm_foundationv8_defconfig\n\nN:\tMathieu Audat <mathieuaudat@gmail.com>\nF:\tboard/technologic/ts4900/\nF:\tconfigs/ts4900_defconfig\nF:\tpackage/ts4900-fpga/\n\nN:\tMatt Weber <matthew.weber@collins.com>\nF:\tboard/freescale/p*\nF:\tboard/freescale/t*\nF:\tboard/qemu/ppc64-e5500/\nF:\tconfigs/freescale_p*\nF:\tconfigs/freescale_t*\nF:\tconfigs/qemu_ppc64_e5500_defconfig\nF:\tpackage/argp-standalone/\nF:\tpackage/aufs/\nF:\tpackage/aufs-util/\nF:\tpackage/bc/\nF:\tpackage/bridge-utils/\nF:\tpackage/checkpolicy/\nF:\tpackage/checksec/\nF:\tpackage/cgroupfs-mount/\nF:\tpackage/crda/\nF:\tpackage/cunit/\nF:\tpackage/dacapo/\nF:\tpackage/davici/\nF:\tpackage/dnsmasq/\nF:\tpackage/dosfstools/\nF:\tpackage/eigen/\nF:\tpackage/ethtool/\nF:\tpackage/flashbench/\nF:\tpackage/fmc/\nF:\tpackage/fmlib/\nF:\tpackage/git/\nF:\tpackage/gnutls/\nF:\tpackage/hostapd/\nF:\tpackage/i2c-tools/\nF:\tpackage/ifplugd/\nF:\tpackage/igmpproxy/\nF:\tpackage/iperf/\nF:\tpackage/iperf3/\nF:\tpackage/iputils/\nF:\tpackage/iw/\nF:\tpackage/jitterentropy-library/\nF:\tpackage/kvm-unit-tests/\nF:\tpackage/kvmtool/\nF:\tpackage/libcsv/\nF:\tpackage/libcurl/\nF:\tpackage/libeastl/\nF:\tpackage/libfcgi/\nF:\tpackage/libopenssl/\nF:\tpackage/libselinux/\nF:\tpackage/libsemanage/\nF:\tpackage/libsepol/\nF:\tpackage/libssh2/\nF:\tpackage/libtalloc/\nF:\tpackage/libqmi/\nF:\tpackage/lighttpd/\nF:\tpackage/logrotate/\nF:\tpackage/makedevs/\nF:\tpackage/memtester/\nF:\tpackage/mii-diag/\nF:\tpackage/mrouted/\nF:\tpackage/mtd/\nF:\tpackage/mtools/\nF:\tpackage/nginx-upload/\nF:\tpackage/omniorb/\nF:\tpackage/openresolv/\nF:\tpackage/paxtest/\nF:\tpackage/picocom/\nF:\tpackage/policycoreutils/\nF:\tpackage/proftpd/\nF:\tpackage/protobuf-c/\nF:\tpackage/protobuf/\nF:\tpackage/python-bunch/\nF:\tpackage/python-colorama/\nF:\tpackage/python-filelock/\nF:\tpackage/python-flask-cors/\nF:\tpackage/python-iptables/\nF:\tpackage/python-ipy/\nF:\tpackage/python-iwlib/\nF:\tpackage/python-posix-ipc/\nF:\tpackage/python-pycairo/\nF:\tpackage/python-pypcap/\nF:\tpackage/python-pyrex/\nF:\tpackage/python-pysftp/\nF:\tpackage/python-tinyrpc/\nF:\tpackage/python-txdbus/\nF:\tpackage/qoriq-rcw/\nF:\tpackage/raptor/\nF:\tpackage/rng-tools/\nF:\tpackage/rsyslog/\nF:\tpackage/setools/\nF:\tpackage/sloci-image/\nF:\tpackage/smcroute/\nF:\tpackage/tclap/\nF:\tpackage/tini/\nF:\tpackage/uboot-tools/\nF:\tpackage/unionfs/\nF:\tpackage/valijson/\nF:\tpackage/wpa_supplicant/\nF:\tpackage/wireless_tools/\nF:\tpackage/xen/\nF:\tpackage/xml-security-c/\nF:\tsupport/testing/tests/fs/test_oci.py\nF:\tsupport/testing/tests/package/br2-external/openjdk/\nF:\tsupport/testing/tests/package/test_openjdk.py\nF:\tsupport/testing/tests/package/test_opkg/\nF:\tsupport/testing/tests/package/test_opkg.py\n\nN:\tMauro Condarelli <mc5686@mclink.it>\nF:\tpackage/mc/\nF:\tpackage/python-autobahn/\nF:\tpackage/python-cbor/\nF:\tpackage/python-characteristic/\nF:\tpackage/python-click/\nF:\tpackage/python-crossbar/\nF:\tpackage/python-lmdb/\nF:\tpackage/python-mistune/\nF:\tpackage/python-netaddr/\nF:\tpackage/python-pygments/\nF:\tpackage/python-pynacl/\nF:\tpackage/python-pytrie/\nF:\tpackage/python-service-identity/\nF:\tpackage/python-setproctitle/\nF:\tpackage/python-shutilwhich/\nF:\tpackage/python-treq/\nF:\tpackage/python-txaio/\nF:\tpackage/python-ujson/\nF:\tpackage/python-wsaccel/\n\nN:\tMax Filippov <jcmvbkbc@gmail.com>\nF:\tarch/Config.in.xtensa\n\nN:\tMaxim Kochetkov <fido_max@inbox.ru>\nF:\tpackage/libgeos/\nF:\tpackage/libosmium/\nF:\tpackage/osm2pgsql/\nF:\tpackage/postgis/\nF:\tpackage/protozero/\nF:\tpackage/timescaledb/\n\nN:\tMichael Durrant <mdurrant@arcturusnetworks.com>\nF:\tboard/arcturus/\nF:\tconfigs/arcturus_ucp1020_defconfig\nF:\tconfigs/arcturus_ucls1012a_defconfig\n\nN:\tMichael Fischer <mf@go-sys.de>\nF:\tpackage/gnuplot/\nF:\tpackage/sdl2/\n\nN:\tMichael Nosthoff <buildroot@heine.tech>\nF:\tpackage/grpc/\nF:\tpackage/gtest/\nF:\tpackage/libabseil-cpp/\nF:\tpackage/protobuf/\nF:\tpackage/re2/\n\nN:\tMichael Rommel <rommel@layer-7.net>\nF:\tpackage/knock/\nF:\tpackage/python-crc16/\nF:\tpackage/python-pyzmq/\n\nN:\tMichael Trimarchi <michael@amarulasolutions.com>\nF:\tpackage/python-spidev/\n\nN:\tMichael Vetter <jubalh@iodoru.org>\nF:\tpackage/jasper/\nF:\tpackage/libstrophe/\n\nN:\tMichael Walle <michael@walle.cc>\nF:\tboard/kontron/smarc-sal28/\nF:\tconfigs/kontron_smarc_sal28_defconfig\nF:\tpackage/libavl/\nF:\tpackage/rcw-smarc-sal28/\n\nN:\tMichał Łyszczek <michal.lyszczek@bofc.pl>\nF:\tboard/altera/socrates_cyclone5/\nF:\tboard/pine64/rock64\nF:\tconfigs/rock64_defconfig\nF:\tconfigs/socrates_cyclone5_defconfig\nF:\tpackage/netifrc/\nF:\tpackage/openrc/\nF:\tpackage/skeleton-init-openrc/\n\nN:\tMichel Stempin <michel.stempin@wanadoo.fr>\nF:\tboard/licheepi/\nF:\tconfigs/licheepi_zero_defconfig\n\nN:\tMike Frampton <mikeframpo@gmail.com>\nF:\tpackage/qcom-db410c-firmware/\n\nN:\tMike Harmony <mike.harmony@snapav.com>\nF:\tboard/sinovoip/m2-plus/\nF:\tconfigs/bananapi_m2_plus_defconfig\n\nN:\tMikhail Boiko <mikhailboiko85@gmail.com>\nF:\tpackage/libfribidi/\n\nN:\tMin Xu <xuminready@gmail.com>\nF:\tpackage/shadowsocks-libev/\n\nN:\tMircea Gliga <gliga.mircea@gmail.com>\nF:\tpackage/mbuffer/\n\nN:\tMurat Demirten <mdemirten@yh.com.tr>\nF:\tpackage/jpeg-turbo/\nF:\tpackage/libgeotiff/\n\nN:\tMylène Josserand <mylene.josserand@collabora.com>\nF:\tpackage/rtl8723bu/\n\nN:\tNathaniel Roach <nroach44@gmail.com>\nF:\tpackage/bandwidthd/\nF:\tpackage/libgudev/\n\nN:\tNaumann Andreas <ANaumann@ultratronik.de>\nF:\tpackage/evemu/\nF:\tpackage/libevdev/\nF:\tpackage/pkg-qmake.mk\nF:\tpackage/qt5/qt5opcua/\n\nN:\tNicola Di Lieto <nicola.dilieto@gmail.com>\nF:\tpackage/uacme/\n\nN:\tNicholas Sielicki <sielicki@yandex.com>\nF:\tboard/intel/galileo/\nF:\tconfigs/galileo_defconfig\n\nN:\tNicolas Carrier <nicolas.carrier@orolia.com>\nF:\tpackage/bmap-tools/\nF:\tpackage/libdbi/\nF:\tpackage/libdbi-drivers/\nF:\tpackage/lua-augeas/\nF:\tpackage/php-pecl-dbus/\nF:\tpackage/php-xdebug/\nF:\tpackage/python-augeas/\nF:\tpackage/python-flask-expects-json/\nF:\tpackage/python-git/\nF:\tpackage/python-unittest-xml-reporting/\nF:\tsupport/testing/tests/package/test_lua_augeas.py\nF:\tsupport/testing/tests/package/sample_bmap_tools.sh\nF:\tsupport/testing/tests/package/sample_python_augeas.py\nF:\tsupport/testing/tests/package/sample_python_flask_expects_json.py\nF:\tsupport/testing/tests/package/sample_python_git.py\nF:\tsupport/testing/tests/package/sample_python_unittest_xml_reporting.py\nF:\tsupport/testing/tests/package/test_bmap_tools.py\nF:\tsupport/testing/tests/package/test_php_pecl_dbus.py\nF:\tsupport/testing/tests/package/test_python_augeas.py\nF:\tsupport/testing/tests/package/test_python_flask_expects_json.py\nF:\tsupport/testing/tests/package/test_python_git.py\nF:\tsupport/testing/tests/package/test_python_unittest_xml_reporting.py\n\nN:\tNicolas Cavallari <nicolas.cavallari@green-communications.fr>\nF:\tpackage/libgit2/\n\nN:\tNicolas Serafini <nicolas.serafini@ik.me>\nF:\tpackage/exiv2/\nF:\tpackage/ofono/\n\nN:\tNikolay Dimitrov <nikolay.dimitrov@retrohub.org>\nF:\tboard/embest/riotboard/\nF:\tconfigs/riotboard_defconfig\n\nN:\tNimai Mahajan <nimaim@gmail.com>\nF:\tpackage/libucl/\n\nN:\tNoé Rubinstein <noe.rubinstein@gmail.com>\nF:\tpackage/tpm-tools/\nF:\tpackage/trousers/\n\nN:\tNorbert Lange <nolange79@gmail.com>\nF:\tpackage/systemd/\nF:\tpackage/tcf-agent/\n\nN:\tNylon Chen <nylon7@andestech.com>\nF:\tarch/Config.in.nds32\nF:\tboard/andes\nF:\tconfigs/andes_ae3xx_defconfig\nF:\ttoolchain/toolchain-external/toolchain-external-andes-nds32/\n\nN:\tOlaf Rempel <razzor@kopf-tisch.de>\nF:\tpackage/ctorrent/\n\nN:\tOleksandr Zhadan <oleks@arcturusnetworks.com>\nF:\tboard/arcturus/\nF:\tconfigs/arcturus_ucp1020_defconfig\nF:\tconfigs/arcturus_ucls1012a_defconfig\n\nN:\tOli Vogt <oli.vogt.pub01@gmail.com>\nF:\tpackage/python-django/\nF:\tpackage/python-flup/\n\nN:\tOlivier Matz <olivier.matz@6wind.com>\nF:\tpackage/python-pyelftools/\n\nN:\tOlivier Schonken <olivier.schonken@gmail.com>\nF:\tpackage/cups/\nF:\tpackage/cups-filters/\nF:\tpackage/ijs/\nF:\tpackage/poppler/\nF:\tpackage/qpdf/\nF:\tpackage/openjpeg/\n\nN:\tOlivier Singla <olivier.singla@gmail.com>\nF:\tpackage/shellinabox/\n\nN:\tParnell Springmeyer <parnell@digitalmentat.com>\nF:\tpackage/scrypt/\n\nN:\tPascal de Bruijn <p.debruijn@unilogic.nl>\nF:\tpackage/libargon2/\nF:\tpackage/linux-tools/S10hyperv\nF:\tpackage/linux-tools/hyperv*.service\nF:\tpackage/linux-tools/linux-tool-hv.mk.in\n\nN:\tPascal Huerst <pascal.huerst@gmail.com>\nF:\tpackage/google-breakpad/\n\nN:\tPatrick Gerber <kpa_info@yahoo.fr>\nF:\tpackage/yavta/\n\nN:\tPatrick Havelange <patrick.havelange@essensium.com>\nF:\tsupport/testing/tests/package/test_lxc.py\nF:\tsupport/testing/tests/package/test_lxc/\n\nN:\tPaul Cercueil <paul@crapouillou.net>\nF:\tpackage/libiio/\nF:\tpackage/lightning/\nF:\tpackage/umtprd/\n\nN:\tPedro Aguilar <paguilar@paguilar.org>\nF:\tpackage/libunistring/\n\nN:\tPeter Korsgaard <peter@korsgaard.com>\nF:\tboard/arrow/avenger96/\nF:\tboard/beagleboneai/\nF:\tboard/minnowboard/\nF:\tboard/nezha/\nF:\tboard/librecomputer/lafrite/\nF:\tboard/nexbox/a95x/\nF:\tboard/openblocks/a6/\nF:\tboard/orangepi/\nF:\tboard/pandaboard/\nF:\tboard/roseapplepi/\nF:\tboot/shim/\nF:\tboot/sun20i-d1-spl/\nF:\tconfigs/avenger96_defconfig\nF:\tconfigs/beagleboneai_defconfig\nF:\tconfigs/lafrite_defconfig\nF:\tconfigs/minnowboard_max-graphical_defconfig\nF:\tconfigs/minnowboard_max_defconfig\nF:\tconfigs/nexbox_a95x_defconfig\nF:\tconfigs/nezha_defconfig\nF:\tconfigs/openblocks_a6_defconfig\nF:\tconfigs/orangepi_pc_defconfig\nF:\tconfigs/orangepi_r1_defconfig\nF:\tconfigs/pandaboard_defconfig\nF:\tconfigs/roseapplepi_defconfig\nF:\tconfigs/sheevaplug_defconfig\nF:\tpackage/bats-core/\nF:\tpackage/docker-compose/\nF:\tpackage/dump1090/\nF:\tpackage/fatcat/\nF:\tpackage/flickcurl/\nF:\tpackage/fscryptctl/\nF:\tpackage/ifmetric/\nF:\tpackage/jo/\nF:\tpackage/jose/\nF:\tpackage/libfastjson/\nF:\tpackage/luksmeta/\nF:\tpackage/lzop/\nF:\tpackage/memtool/\nF:\tpackage/mosquitto/\nF:\tpackage/python-alsaaudio/\nF:\tpackage/python-backports-ssl-match-hostname/\nF:\tpackage/python-cached-property/\nF:\tpackage/python-docker/\nF:\tpackage/python-dockerpty/\nF:\tpackage/python-docker-pycreds/\nF:\tpackage/python-enum/\nF:\tpackage/python-enum34/\nF:\tpackage/python-functools32/\nF:\tpackage/python-ipaddr/\nF:\tpackage/python-pam/\nF:\tpackage/python-psutil/\nF:\tpackage/python-request-id/\nF:\tpackage/python-semver/\nF:\tpackage/python-texttable/\nF:\tpackage/python-validators/\nF:\tpackage/python-webob/\nF:\tpackage/python-websocket-client/\nF:\tpackage/sedutil/\nF:\tpackage/tpm2-totp/\nF:\tpackage/triggerhappy/\nF:\tpackage/wireguard-linux-compat/\nF:\tpackage/wireguard-tools/\nF:\tsupport/testing/tests/package/test_docker_compose.py\n\nN:\tPeter Seiderer <ps.report@gmx.net>\nF:\tboard/raspberrypi/\nF:\tconfigs/raspberrypi*_defconfig\nF:\tpackage/assimp/\nF:\tpackage/bcm2835/\nF:\tpackage/ddrescue/\nF:\tpackage/dejavu/\nF:\tpackage/dillo/\nF:\tpackage/edid-decode/\nF:\tpackage/ell/\nF:\tpackage/ghostscript-fonts/\nF:\tpackage/gstreamer1/gst1-devtools/\nF:\tpackage/gstreamer1/gst1-interpipe/\nF:\tpackage/gstreamer1/gstreamer1-editing-services/\nF:\tpackage/iwd/\nF:\tpackage/libevdev/\nF:\tpackage/libuev/\nF:\tpackage/log4cplus/\nF:\tpackage/postgresql/\nF:\tpackage/python-colorzero/\nF:\tpackage/python-flask-wtf/\nF:\tpackage/python-gpiozero/\nF:\tpackage/qt5/\nF:\tpackage/quotatool/\nF:\tpackage/racehound/\nF:\tpackage/redir/\nF:\tpackage/rtl8812au-aircrack-ng/\nF:\tpackage/uredir/\nF:\tpackage/uqmi/\nF:\tpackage/wayland-utils/\n\nN:\tPeter Thompson <peter.macleod.thompson@gmail.com>\nF:\tpackage/sdl2_gfx/\nF:\tpackage/sdl2_image/\nF:\tpackage/sdl2_ttf/\n\nN:\tPetr Kulhavy <brain@jikos.cz>\nF:\tpackage/linuxptp/\n\nN:\tPetr Vorel <petr.vorel@gmail.com>\nF:\tpackage/ima-evm-utils/\nF:\tpackage/iproute2/\nF:\tpackage/iputils/\nF:\tpackage/libqrtr-glib/\nF:\tpackage/libtirpc/\nF:\tpackage/linux-backports/\nF:\tpackage/ltp-testsuite/\nF:\tpackage/nfs-utils/\nF:\tpackage/rpcbind/\nF:\tsupport/kconfig/\n\nN:\tPhil Eichinger <phil.eichinger@gmail.com>\nF:\tpackage/libqrencode/\nF:\tpackage/psplash/\nF:\tpackage/sispmctl/\nF:\tpackage/zsh/\n\nN:\tPhilipp Richter <richterphilipp.pops@gmail.com>\nF:\tpackage/libtorrent-rasterbar/\n\nN:\tPhilippe Proulx <eeppeliteloop@gmail.com>\nF:\tpackage/babeltrace2/\nF:\tpackage/lttng-babeltrace/\nF:\tpackage/lttng-libust/\nF:\tpackage/lttng-modules/\nF:\tpackage/lttng-tools/\nF:\tpackage/python-ipython/\nF:\tpackage/liburcu/\n\nN:\tPhilippe Reynes <philippe.reynes@softathome.com>\nF:\tpackage/ibm-sw-tpm2/\n\nN:\tPierre Crokaert <pct@crookies.net>\nF:\tboard/hardkernel/odroidxu4/\nF:\tconfigs/odroidxu4_defconfig\n\nN:\tPierre Ducroquet <pinaraf@pinaraf.info>\nF:\tpackage/kf5/\n\nN:\tPierre Floury <pierre.floury@gmail.com>\nF:\tpackage/trace-cmd/\n\nN:\tPierre-Jean Texier <texier.pj2@gmail.com>\nF:\tpackage/fping/\nF:\tpackage/genimage/\nF:\tpackage/haveged/\nF:\tpackage/ipset/\nF:\tpackage/libarchive/\nF:\tpackage/libevent/\nF:\tpackage/libubootenv/\nF:\tpackage/libxml2/\nF:\tpackage/mongoose/\nF:\tpackage/mxml/\nF:\tpackage/numactl/\nF:\tpackage/python-modbus-tk/\nF:\tpackage/python-periphery/\nF:\tpackage/raspi-gpio/\nF:\tpackage/sbc/\nF:\tpackage/stunnel/\nF:\tpackage/tree/\n\nN:\tPieter De Gendt <pieter.degendt@gmail.com>\nF:\tpackage/libvips/\n\nN:\tPieterjan Camerlynck <pieterjan.camerlynck@gmail.com>\nF:\tpackage/libdvbpsi/\nF:\tpackage/mraa/\nF:\tpackage/synergy/\n\nN:\tRafal Susz <rafal.susz@gmail.com>\nF:\tboard/avnet/s6lx9_microboard/\nF:\tconfigs/s6lx9_microboard_defconfig\n\nN:\tRafał Miłecki <rafal@milecki.pl>\nF:\tpackage/firmware-utils/\n\nN:\tRahul Bedarkar <rahulbedarkar89@gmail.com>\nF:\tpackage/cxxtest/\nF:\tpackage/gflags/\nF:\tpackage/glog/\nF:\tpackage/gssdp/\nF:\tpackage/gupnp/\nF:\tpackage/gupnp-av/\nF:\tpackage/let-me-create/\nF:\tpackage/nanomsg/\n\nN:\tRamon Fried <rfried.dev@gmail.com>\nF:\tpackage/bitwise/\n\nN:\tRaphaël Mélotte <raphael.melotte@mind.be>\nF:\tpackage/gumbo-parser/\nF:\tpackage/jbig2dec/\nF:\tpackage/mupdf/\nF:\tpackage/python-boto3/\nF:\tpackage/python-botocore/\nF:\tpackage/python-jmespath/\nF:\tpackage/python-pymupdf/\nF:\tpackage/python-rsa/\nF:\tpackage/python-s3transfer/\nF:\tsupport/testing/tests/package/sample_python_rsa.py\nF:\tsupport/testing/tests/package/test_python_rsa.py\n\nN:\tRefik Tuzakli <tuzakli.refik@gmail.com>\nF:\tpackage/freescale-imx/\nF:\tpackage/paho-mqtt-cpp/\n\nN:\tRémi Rérolle <remi.rerolle@gmail.com>\nF:\tpackage/libfreeimage/\n\nN:\tRenaud Aubin <root@renaud.io>\nF:\tpackage/libhttpparser/\n\nN:\tRicardo Martincoski <ricardo.martincoski@datacom.com.br>\nF:\tpackage/atop/\nF:\tpackage/thermald/\n\nN:\tRicardo Martincoski <ricardo.martincoski@gmail.com>\nF:\tsupport/testing/infra/\nF:\tsupport/testing/run-tests\nF:\tsupport/testing/tests/core/test_file_capabilities.py\nF:\tsupport/testing/tests/download/\nF:\tsupport/testing/tests/package/*_python*.py\nF:\tsupport/testing/tests/package/test_atop.py\nF:\tsupport/testing/tests/package/test_syslog_ng.py\nF:\tsupport/testing/tests/package/test_tmux.py\nF:\tsupport/testing/tests/utils/test_check_package.py\nF:\tutils/check-package\nF:\tutils/checkpackagelib/\n\nN:\tRichard Braun <rbraun@sceen.net>\nF:\tpackage/curlftpfs/\nF:\tpackage/tzdata/\n\nN:\tRJ Ascani <rj.ascani@gmail.com>\nF:\tpackage/azmq/\n\nN:\tRobert Rose <robertroyrose@gmail.com>\nF:\tpackage/grpc/\n\nN:\tRodrigo Rebello <rprebello@gmail.com>\nF:\tpackage/chocolate-doom/\nF:\tpackage/irssi/\nF:\tpackage/vnstat/\n\nN:\tRomain Naour <romain.naour@gmail.com>\nF:\tboard/qemu/\nF:\tconfigs/qemu_*\nF:\tpackage/alure/\nF:\tpackage/aubio/\nF:\tpackage/binutils/\nF:\tpackage/bullet/\nF:\tpackage/clang/\nF:\tpackage/clinfo/\nF:\tpackage/efl/\nF:\tpackage/enet/\nF:\tpackage/enlightenment/\nF:\tpackage/flare-engine/\nF:\tpackage/flare-game/\nF:\tpackage/gcc/\nF:\tpackage/glibc/\nF:\tpackage/irrlicht/\nF:\tpackage/liblinear/\nF:\tpackage/lensfun/\nF:\tpackage/libbpf/\nF:\tpackage/libclc/\nF:\tpackage/libgta/\nF:\tpackage/libiec61850/\nF:\tpackage/libspatialindex/\nF:\tpackage/linux-syscall-support/\nF:\tpackage/llvm/\nF:\tpackage/lugaru/\nF:\tpackage/mcelog/\nF:\tpackage/mesa3d/\nF:\tpackage/minetest/\nF:\tpackage/minetest-game/\nF:\tpackage/ogre/\nF:\tpackage/openpowerlink/\nF:\tpackage/physfs/\nF:\tpackage/piglit/\nF:\tpackage/qemu/\nF:\tpackage/solarus/\nF:\tpackage/stress-ng/\nF:\tpackage/supertux/\nF:\tpackage/supertuxkart/\nF:\tpackage/terminology/\nF:\tpackage/tk/\nF:\tpackage/upower/\nF:\tpackage/waffle/\nF:\tpackage/xenomai/\nF:\tpackage/zziplib/\nF:\tsupport/testing/tests/package/test_glxinfo.py\nF:\tsupport/testing/tests/package/test_openssh.py\nF:\ttoolchain/\n\nN:\tRoman Gorbenkov <roman.gorbenkov@ens2m.org>\nF:\tpackage/davfs2/\n\nN:\tRyan Barnett <ryan.barnett@collins.com>\nF:\tpackage/atftp/\nF:\tpackage/c-periphery/\nF:\tpackage/miraclecast/\nF:\tpackage/opkg/\nF:\tpackage/opkg-utils/\nF:\tpackage/python-pysnmp/\nF:\tpackage/python-pysnmp-mibs/\nF:\tpackage/python-tornado/\nF:\tpackage/resiprocate/\nF:\tpackage/websocketpp/\n\nN:\tRyan Wilkins <ryan@deadfrog.net>\nF:\tpackage/biosdevname/\n\nN:\tSam Lancia <sam@gpsm.co.uk>\nF:\tpackage/lrzip/\n\nN:\tSamuel Martin <s.martin49@gmail.com>\nF:\tpackage/armadillo/\nF:\tpackage/cwiid/\nF:\tpackage/flite/\nF:\tpackage/nginx/\nF:\tpackage/opencv3/\nF:\tpackage/openobex/\nF:\tpackage/pkg-cmake.mk\nF:\tpackage/python-numpy/\nF:\tpackage/scrub/\nF:\tpackage/urg/\nF:\tpackage/ussp-push/\nF:\tsupport/misc/toolchainfile.cmake.in\n\nN:\tSam Voss <sam.voss@gmail.com>\nF:\tpackage/ripgrep/\n\nN:\tSantosh Multhalli <santosh.multhalli@collins.com>\nF:\tpackage/valijson/\n\nN:\tSébastien Szymanski <sebastien.szymanski@armadeus.com>\nF:\tpackage/mmc-utils/\nF:\tpackage/python-flask-jsonrpc/\nF:\tpackage/python-flask-login/\nF:\tpackage/qt5/qt5charts/\n\nN:\tSemyon Kolganov <semenak94@mail.ru>\nF:\tpackage/fmt/\nF:\tpackage/libbson/\nF:\tpackage/lua-resty-http/\nF:\tpackage/mpir/\n\nN:\tSergey Matyukevich <geomatsi@gmail.com>\nF:\tboot/arm-trusted-firmware/\nF:\tboard/linksprite/pcduino\nF:\tboard/orangepi/orangepi-zero\nF:\tboard/orangepi/orangepi-one\nF:\tboard/orangepi/orangepi-pc-plus/\nF:\tconfigs/linksprite_pcduino_defconfig\nF:\tconfigs/orangepi_one_defconfig\nF:\tconfigs/orangepi_pc_plus_defconfig\nF:\tconfigs/orangepi_zero_defconfig\nF:\tpackage/armbian-firmware/\nF:\tpackage/hostapd/\nF:\tpackage/rtl8189fs/\nF:\tpackage/wpa_supplicant/\nF:\tpackage/xr819-xradio/\n\nN:\tSergio Prado <sergio.prado@e-labworks.com>\nF:\tboard/toradex/apalis-imx6/\nF:\tconfigs/toradex_apalis_imx6_defconfig\nF:\tpackage/aoetools/\nF:\tpackage/asn1c/\nF:\tpackage/azure-iot-sdk-c/\nF:\tpackage/curlpp/\nF:\tpackage/daq/\nF:\tpackage/libgdiplus/\nF:\tpackage/pimd/\nF:\tpackage/sloci-image/\nF:\tpackage/snort/\nF:\tpackage/stella/\nF:\tpackage/tio/\nF:\tpackage/traceroute/\nF:\tpackage/tunctl/\nF:\tpackage/ubus/\nF:\tpackage/wolfssl/\n\nN:\tShyam Saini <shyam.saini@savoirfairelinux.com>\nF:\tpackage/cukinia/\n\nN:\tSimon Dawson <spdawson@gmail.com>\nF:\tboot/at91bootstrap3/\nF:\tpackage/cppzmq/\nF:\tpackage/czmq/\nF:\tpackage/filemq/\nF:\tpackage/googlefontdirectory/\nF:\tpackage/jansson/\nF:\tpackage/jquery-ui/\nF:\tpackage/jquery-ui-themes/\nF:\tpackage/json-javascript/\nF:\tpackage/lcdapi/\nF:\tpackage/libfreefare/\nF:\tpackage/libjson/\nF:\tpackage/libnfc/\nF:\tpackage/libnfc/\nF:\tpackage/libserial/\nF:\tpackage/libsigsegv/\nF:\tpackage/macchanger/\nF:\tpackage/minicom/\nF:\tpackage/minidlna/\nF:\tpackage/msgpack/\nF:\tpackage/nanocom/\nF:\tpackage/neard/\nF:\tpackage/neardal/\nF:\tpackage/owl-linux/\nF:\tpackage/python-nfc/\nF:\tpackage/rapidjson/\nF:\tpackage/sconeserver/\nF:\tpackage/sound-theme-borealis/\nF:\tpackage/sound-theme-freedesktop/\nF:\tpackage/vlc/\nF:\tpackage/xscreensaver/\nF:\tpackage/zmqpp/\nF:\tpackage/zyre/\n\nN:\tSimon Doppler <dopsi@dopsi.ch>\nF:\tboard/seeed/\nF:\tconfigs/stm32mp157c_odyssey_defconfig\n\nN:\tSpenser Gilliland <spenser@gillilanding.com>\nF:\tarch/Config.in.microblaze\nF:\tpackage/a10disp/\nF:\tpackage/glmark2/\nF:\tpackage/libvpx/\nF:\tpackage/mesa3d-demos/\nF:\tpackage/ti-gfx/\n\nN:\tStefan Ott <stefan@ott.net>\nF:\tpackage/unbound/\n\nN:\tStefan Sørensen <stefan.sorensen@spectralink.com>\nF:\tpackage/cracklib/\nF:\tpackage/libpwquality/\nF:\tpackage/libscrypt/\n\nN:\tStephan Hoffmann <sho@relinux.de>\nF:\tpackage/cache-calibrator/\nF:\tpackage/gtest/\nF:\tpackage/libhttpserver/\nF:\tpackage/mtdev/\n\nN:\tStephane Viau <stephane.viau@oss.nxp.com>\nF:\tboard/freescale/imx8mnevk/\nF:\tboard/freescale/imx8mpevk/\nF:\tconfigs/freescale_imx8mnevk_defconfig\nF:\tconfigs/freescale_imx8mpevk_defconfig\n\nN:\tSteve Calfee <stevecalfee@gmail.com>\nF:\tpackage/python-pymysql/\nF:\tpackage/python-pyratemp/\n\nN:\tSteve James <ste@junkomatic.net>\nF:\tpackage/leveldb/\nF:\tpackage/libcli/\n\nN:\tSteve Kenton <skenton@ou.edu>\nF:\tpackage/dvdauthor/\nF:\tpackage/dvdrw-tools/\nF:\tpackage/memtest86/\nF:\tpackage/mjpegtools/\nF:\tpackage/tovid/\nF:\tpackage/udftools/\nF:\tpackage/xorriso/\n\nN:\tSteven Noonan <steven@uplinklabs.net>\nF:\tpackage/hwloc/\nF:\tpackage/powertop/\n\nN:\tSuniel Mahesh <sunil@amarulasolutions.com>\nF:\tboard/firefly/\nF:\tboard/friendlyarm/nanopc-t4\nF:\tboard/friendlyarm/nanopi-m4\nF:\tboard/orangepi/orangepi-rk3399\nF:\tboard/pine64/rockpro64\nF:\tboard/radxa/rockpi-4\nF:\tboard/radxa/rockpi-n8\nF:\tboard/radxa/rockpi-n10\nF: \tconfigs/friendlyarm_nanopc_t4_defconfig\nF: \tconfigs/friendlyarm_nanopi_m4_defconfig\nF:\tconfigs/orangepi_rk3399_defconfig\nF:\tconfigs/roc_pc_rk3399_defconfig\nF:\tconfigs/rock_pi_4_defconfig\nF:\tconfigs/rock_pi_n8_defconfig\nF:\tconfigs/rock_pi_n10_defconfig\nF:\tconfigs/rockpro64_defconfig\nF:\tpackage/arm-gnu-a-toolchain/\n\nN:\tSven Haardiek <sven.haardiek@iotec-gmbh.de>\nF:\tpackage/lcdproc/\nF:\tpackage/python-influxdb/\n\nN:\tSven Oliver Moll <svolli@svolli.de>\nF:\tpackage/most/\n\nN:\tTheo Debrouwere <t.debrouwere@televic.com>\nF:\tboard/beagleboardx15/\nF:\tconfigs/beagleboardx15_defconfig\nF:\tpackage/pugixml/\n\nN:\tThierry Bultel <tbultel@free.fr>\nF:\tpackage/mpd-mpc/\n\nN:\tThijs Vermeir <thijsvermeir@gmail.com>\nF:\tpackage/ranger/\nF:\tpackage/x265/\n\nN:\tThomas Claveirole <thomas.claveirole@green-communications.fr>\nF:\tpackage/fcgiwrap/\nF:\tpackage/openlayers/\nF:\tpackage/vuejs-router/\n\nN:\tThomas De Schampheleire <thomas.de_schampheleire@nokia.com>\nF:\tdocs/manual/\nF:\tpackage/cereal/\nF:\tpackage/chartjs/\nF:\tpackage/datatables/\nF:\tpackage/datatables-buttons/\nF:\tpackage/datatables-fixedcolumns/\nF:\tpackage/datatables-responsive/\nF:\tpackage/jszip/\nF:\tpackage/libtelnet/\nF:\tpackage/opkg-utils/\nF:\tpackage/perl-convert-asn1/\nF:\tpackage/perl-crypt-blowfish/\nF:\tpackage/perl-crypt-cbc/\nF:\tpackage/perl-crypt-openssl-aes/\nF:\tpackage/perl-devel-cycle/\nF:\tpackage/perl-devel-size/\nF:\tpackage/perl-i18n/\nF:\tpackage/perl-locale-maketext-lexicon/\nF:\tpackage/perl-lwp-protocol-https/\nF:\tpackage/perl-math-int64/\nF:\tpackage/perl-math-prime-util/\nF:\tpackage/perl-mime-base64-urlsafe/\nF:\tpackage/perl-mojolicious-plugin-authentication/\nF:\tpackage/perl-mojolicious-plugin-authorization/\nF:\tpackage/perl-mojolicious-plugin-cspheader/\nF:\tpackage/perl-mojolicious-plugin-i18n/\nF:\tpackage/perl-mojolicious-plugin-securityheader/\nF:\tpackage/perl-mozilla-ca/\nF:\tpackage/perl-net-snmp/\nF:\tpackage/perl-net-ssh2/\nF:\tpackage/perl-net-telnet/\nF:\tpackage/perl-path-class/\nF:\tpackage/pigz/\nF:\tpackage/popperjs/\nF:\tpackage/xenomai/\nF:\tsupport/scripts/size-stats\nF:\tsupport/testing/tests/package/test_perl_lwp_protocol_https.py\nF:\tutils/size-stats-compare\nF:\ttoolchain/\n\nN:\tThomas Huth <huth@tuxfamily.org>\nF:\tpackage/ascii-invaders/\nF:\tpackage/frotz/\nF:\tpackage/xorcurses/\n\nN:\tThomas Petazzoni <thomas.petazzoni@bootlin.com>\nF:\tarch/Config.in.arm\nF:\tboard/beaglev/\nF:\tboard/stmicroelectronics/stm32mp157c-dk2/\nF:\tboot/beaglev-ddrinit/\nF:\tboot/beaglev-secondboot/\nF:\tboot/boot-wrapper-aarch64/\nF:\tboot/grub2/\nF:\tboot/gummiboot/\nF:\tconfigs/beaglev_defconfig\nF:\tconfigs/stm32mp157c_dk2_defconfig\nF:\tpackage/android-tools/\nF:\tpackage/b43-firmware/\nF:\tpackage/b43-fwcutter/\nF:\tpackage/bmap-tools/\nF:\tpackage/c-periphery/\nF:\tpackage/cdrkit/\nF:\tpackage/cifs-utils/\nF:\tpackage/cloop/\nF:\tpackage/cmake/\nF:\tpackage/cramfs/\nF:\tpackage/dmidecode/\nF:\tpackage/flashrom/\nF:\tpackage/gcc/\nF:\tpackage/genext2fs/\nF:\tpackage/genromfs/\nF:\tpackage/getent/\nF:\tpackage/gnu-efi/\nF:\tpackage/heirloom-mailx/\nF:\tpackage/hiawatha/\nF:\tpackage/igh-ethercat/\nF:\tpackage/intltool/\nF:\tpackage/jh71xx-tools/\nF:\tpackage/libcap/\nF:\tpackage/libffi/\nF:\tpackage/libsha1/\nF:\tpackage/libtirpc/\nF:\tpackage/libxkbcommon/\nF:\tpackage/libxml-parser-perl/\nF:\tpackage/localedef/\nF:\tpackage/log4cxx/\nF:\tpackage/monit/\nF:\tpackage/mpdecimal/\nF:\tpackage/msmtp/\nF:\tpackage/musl/\nF:\tpackage/musl-fts/\nF:\tpackage/ne10/\nF:\tpackage/pkg-python.mk\nF:\tpackage/pkg-autotools.mk\nF:\tpackage/pkg-generic.mk\nF:\tpackage/python/\nF:\tpackage/python3/\nF:\tpackage/python-augeas/\nF:\tpackage/python-flask-expects-json/\nF:\tpackage/python-git/\nF:\tpackage/python-mad/\nF:\tpackage/python-serial/\nF:\tpackage/python-unittest-xml-reporting/\nF:\tpackage/qextserialport/\nF:\tpackage/riscv64-elf-toolchain/\nF:\tpackage/rpcbind/\nF:\tpackage/rt-tests/\nF:\tpackage/rtc-tools/\nF:\tpackage/sam-ba/\nF:\tpackage/scons/\nF:\tpackage/squashfs/\nF:\tpackage/wayland/\nF:\tpackage/weston/\nF:\tsupport/testing/tests/boot/test_syslinux.py\nF:\tsupport/testing/tests/package/sample_python_augeas.py\nF:\tsupport/testing/tests/package/sample_python_flask.py\nF:\tsupport/testing/tests/package/sample_python_flask_expects_json.py\nF:\tsupport/testing/tests/package/sample_python_git.py\nF:\tsupport/testing/tests/package/sample_python_unittest_xml_reporting.py\nF:\tsupport/testing/tests/package/test_python_augeas.py\nF:\tsupport/testing/tests/package/test_python_flask.py\nF:\tsupport/testing/tests/package/test_python_flask_expects_json.py\nF:\tsupport/testing/tests/package/test_python_git.py\nF:\tsupport/testing/tests/package/test_python_unittest_xml_reporting.py\nF:\ttoolchain/\n\nN:\tTimo Ketola <timo.ketola@exertus.fi>\nF:\tpackage/fbgrab/\n\nN:\tTitouan Christophe <titouanchristophe@gmail.com>\nF:\tpackage/avro-c/\nF:\tpackage/mosquitto/\nF:\tpackage/python-avro/\nF:\tpackage/redis/\nF:\tpackage/waf/\nF:\tsupport/testing/tests/package/test_crudini.py\nF:\tsupport/testing/tests/package/test_redis.py\n\nN:\tTudor Holton <buildroot@tudorholton.com>\nF:\tpackage/openjdk/\n\nN:\tTzu-Jung Lee <roylee17@gmail.com>\nF:\tpackage/dropwatch/\nF:\tpackage/tstools/\n\nN:\tVadim Kochan <vadim4j@gmail.com>\nF:\tpackage/brcm-patchram-plus/\nF:\tpackage/frr/\nF:\tpackage/gettext-tiny/\nF:\tpackage/tinyssh/\n\nN:\tValentin Korenblit <valentinkorenblit@gmail.com>\nF:\tpackage/clang/\nF:\tpackage/clinfo/\nF:\tpackage/libclc/\nF:\tpackage/llvm/\n\nN:\tVanya Sergeev <vsergeev@gmail.com>\nF:\tpackage/lua-periphery/\n\nN:\tVictor Huesca <victor.huesca@bootlin.com>\nF:\tsupport/testing/tests/core/test_root_password.py\n\nN:\tVincent Prince <vincent.prince.fr@gmail.com>\nF:\tpackage/nss-myhostname/\nF:\tpackage/utp_com/\n\nN:\tVincent Stehlé <vincent.stehle@laposte.net>\nF:\tboard/bananapi/bananapi-m2-zero/\nF:\tconfigs/bananapi_m2_zero_defconfig\nF:\tconfigs/uevm5432_defconfig\nF:\tpackage/i7z/\nF:\tpackage/msr-tools/\nF:\tpackage/pixz/\n\nN:\tVinicius Tinti <viniciustinti@gmail.com>\nF:\tpackage/python-thrift/\n\nN:\tVivien Didelot <vivien.didelot@gmail.com>\nF:\tboard/technologic/ts5500/\nF:\tconfigs/ts5500_defconfig\n\nN:\tVolkov Viacheslav <sv99@inbox.ru>\nF:\tpackage/v4l2grab/\nF:\tpackage/zbar/\n\nN:\tWade Berrier <wberrier@gmail.com>\nF:\tpackage/ngrep/\n\nN:\tWaldemar Brodkorb <wbx@openadk.org>\nF:\tpackage/mksh/\nF:\tpackage/ruby/\nF:\tpackage/uclibc/\nF:\tpackage/uclibc-ng-test/\n\nN:\tWill Newton <will.newton@gmail.com>\nF:\tpackage/enchant/\nF:\tpackage/erlang/\nF:\tpackage/libmicrohttpd/\nF:\tpackage/sysprof/\nF:\tpackage/time/\n\nN:\tWill Wagner <will_wagner@carallon.com>\nF:\tpackage/yaffs2utils/\n\nN:\tWojciech M. Zabolotny <wzab01@gmail.com>\nF:\tpackage/avrdude/\nF:\tpackage/jack2/\nF:\tpackage/python-msgpack/\nF:\tpackage/python-pyusb/\n\nN:\tWojciech Niziński <niziak@spox.org>\nF:\tpackage/fwup/\n\nN:\tYair Ben Avraham <yairba@protonmail.com>\nF:\tpackage/casync/\nF:\tpackage/gloox/\nF:\tpackage/tpm2-pkcs11/\n\nN:\tYann E. MORIN <yann.morin.1998@free.fr>\nF:\tboard/friendlyarm/nanopi-neo/\nF:\tconfigs/friendlyarm_nanopi_neo_defconfig\nF:\tfs/squashfs/\nF:\tpackage/asterisk/\nF:\tpackage/cegui/\nF:\tpackage/dahdi-linux/\nF:\tpackage/dahdi-tools/\nF:\tpackage/dtc/\nF:\tpackage/dtv-scan-tables/\nF:\tpackage/dvb-apps/\nF:\tpackage/freerdp/\nF:\tpackage/keyutils/\nF:\tpackage/libbsd/\nF:\tpackage/libedit/\nF:\tpackage/libgsm/\nF:\tpackage/libiberty/\nF:\tpackage/libinput/\nF:\tpackage/libiscsi/\nF:\tpackage/libpri/\nF:\tpackage/libseccomp/\nF:\tpackage/libss7/\nF:\tpackage/linux-firmware/\nF:\tpackage/linux-tools/\nF:\tpackage/matchbox*\nF:\tpackage/mesa3d-headers/\nF:\tpackage/nbd/\nF:\tpackage/nut/\nF:\tpackage/nvidia-driver/\nF:\tpackage/omxplayer/\nF:\tpackage/python-pyparsing/\nF:\tpackage/pkg-download.mk\nF:\tpackage/pkg-waf.mk\nF:\tpackage/slirp/\nF:\tpackage/snappy/\nF:\tpackage/spice/\nF:\tpackage/spice-protocol/\nF:\tpackage/systemd/\nF:\tpackage/systemd-bootchart/\nF:\tpackage/tmux/\nF:\tpackage/tvheadend/\nF:\tpackage/usbredir/\nF:\tpackage/vde2/\nF:\tpackage/w_scan/\nF:\tpackage/wayland/\nF:\tpackage/weston/\nF:\tpackage/zisofs-tools/\nF:\tsupport/download/\n\nN:\tYegor Yefremov <yegorslists@googlemail.com>\nF:\tconfigs/beaglebone_defconfig\nF:\tconfigs/beaglebone_qt5_defconfig\nF:\tpackage/acl/\nF:\tpackage/attr/\nF:\tpackage/boost/\nF:\tpackage/bootstrap/\nF:\tpackage/cannelloni/\nF:\tpackage/can-utils/\nF:\tpackage/circus/\nF:\tpackage/dhcpcd/\nF:\tpackage/feh/\nF:\tpackage/giblib/\nF:\tpackage/imlib2/\nF:\tpackage/jquery-datetimepicker/\nF:\tpackage/jquery-sidebar/\nF:\tpackage/kmod/\nF:\tpackage/libftdi1/\nF:\tpackage/libical/\nF:\tpackage/libmbim/\nF:\tpackage/libndp/\nF:\tpackage/libnftnl/\nF:\tpackage/libsoc/\nF:\tpackage/libsocketcan/\nF:\tpackage/libubox/\nF:\tpackage/libuci/\nF:\tpackage/linux-firmware/\nF:\tpackage/linux-serial-test/\nF:\tpackage/modem-manager/\nF:\tpackage/nftables/\nF:\tpackage/nuttcp/\nF:\tpackage/parted/\nF:\tpackage/phytool/\nF:\tpackage/poco/\nF:\tpackage/python*\nF:\tpackage/ser2net/\nF:\tpackage/socketcand/\nF:\tpackage/swig/\nF:\tpackage/qt5/qt5serialbus/\nF:\tpackage/sdparm/\nF:\tpackage/ti-utils/\nF:\tpackage/x11r7/xapp_xconsole/\nF:\tpackage/x11r7/xapp_xinput-calibrator/\nF:\tpackage/zlog/\nF:\tsupport/testing/tests/package/test_libftdi1.py\nF:\tsupport/testing/tests/package/test_python_can.py\nF:\tutils/scanpypi\n\nN:\tZoltan Gyarmati <zgyarmati@zgyarmati.de>\nF:\tpackage/crudini/\nF:\tpackage/grantlee/\nF:\tpackage/libusb/\nF:\tpackage/libusb-compat/\nF:\tpackage/proj/\nF:\tpackage/python-configobj/\nF:\tpackage/python-iniparse/\nF:\tpackage/qjson/\nF:\tpackage/quazip/\nF:\tpackage/shapelib/\nF:\tpackage/tinc/\n"
  },
  {
    "path": "Makefile",
    "content": "# Makefile for buildroot\n#\n# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>\n# Copyright (C) 2006-2014 by the Buildroot developers <buildroot@uclibc.org>\n# Copyright (C) 2014-2020 by the Buildroot developers <buildroot@buildroot.org>\n#\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 2 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n# General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n#\n\n#--------------------------------------------------------------\n# Just run 'make menuconfig', configure stuff, then run 'make'.\n# You shouldn't need to mess with anything beyond this point...\n#--------------------------------------------------------------\n\n# Delete default rules. We don't use them. This saves a bit of time.\n.SUFFIXES:\n\n# we want bash as shell\nSHELL := $(shell if [ -x \"$$BASH\" ]; then echo $$BASH; \\\n\t else if [ -x /bin/bash ]; then echo /bin/bash; \\\n\t else echo sh; fi; fi)\n\n# Set O variable if not already done on the command line;\n# or avoid confusing packages that can use the O=<dir> syntax for out-of-tree\n# build by preventing it from being forwarded to sub-make calls.\nifneq (\"$(origin O)\", \"command line\")\nO := $(CURDIR)/output\nendif\n\n# Check if the current Buildroot execution meets all the pre-requisites.\n# If they are not met, Buildroot will actually do its job in a sub-make meeting\n# its pre-requisites, which are:\n#  1- Permissive enough umask:\n#       Wrong or too restrictive umask will prevent Buildroot and packages from\n#       creating files and directories.\n#  2- Absolute canonical CWD (i.e. $(CURDIR)):\n#       Otherwise, some packages will use CWD as-is, others will compute its\n#       absolute canonical path. This makes harder tracking and fixing host\n#       machine path leaks.\n#  3- Absolute canonical output location (i.e. $(O)):\n#       For the same reason as the one for CWD.\n\n# Remove the trailing '/.' from $(O) as it can be added by the makefile wrapper\n# installed in the $(O) directory.\n# Also remove the trailing '/' the user can set when on the command line.\noverride O := $(patsubst %/,%,$(patsubst %.,%,$(O)))\n# Make sure $(O) actually exists before calling realpath on it; this is to\n# avoid empty CANONICAL_O in case on non-existing entry.\nCANONICAL_O := $(shell mkdir -p $(O) >/dev/null 2>&1)$(realpath $(O))\n\n# gcc fails to build when the srcdir contains a '@'\nifneq ($(findstring @,$(CANONICAL_O)),)\n$(error The build directory can not contain a '@')\nendif\n\nCANONICAL_CURDIR = $(realpath $(CURDIR))\n\nREQ_UMASK = 0022\n\n# Make sure O= is passed (with its absolute canonical path) everywhere the\n# toplevel makefile is called back.\nEXTRAMAKEARGS := O=$(CANONICAL_O)\n\n# Check Buildroot execution pre-requisites here.\nifneq ($(shell umask):$(CURDIR):$(O),$(REQ_UMASK):$(CANONICAL_CURDIR):$(CANONICAL_O))\n.PHONY: _all $(MAKECMDGOALS)\n\n$(MAKECMDGOALS): _all\n\t@:\n\n_all:\n\t@umask $(REQ_UMASK) && \\\n\t\t$(MAKE) -C $(CANONICAL_CURDIR) --no-print-directory \\\n\t\t\t$(MAKECMDGOALS) $(EXTRAMAKEARGS)\n\nelse # umask / $(CURDIR) / $(O)\n\n# This is our default rule, so must come first\nall:\n.PHONY: all\n\n# Set and export the version string\nexport BR2_VERSION := 2021.11\n# Actual time the release is cut (for reproducible builds)\nBR2_VERSION_EPOCH = 1638734000\n\n# Save running make version since it's clobbered by the make package\nRUNNING_MAKE_VERSION := $(MAKE_VERSION)\n\n# Check for minimal make version (note: this check will break at make 10.x)\nMIN_MAKE_VERSION = 3.81\nifneq ($(firstword $(sort $(RUNNING_MAKE_VERSION) $(MIN_MAKE_VERSION))),$(MIN_MAKE_VERSION))\n$(error You have make '$(RUNNING_MAKE_VERSION)' installed. GNU make >= $(MIN_MAKE_VERSION) is required)\nendif\n\n# absolute path\nTOPDIR := $(CURDIR)\nCONFIG_CONFIG_IN = Config.in\nCONFIG = support/kconfig\nDATE := $(shell date +%Y%m%d)\n\n# Compute the full local version string so packages can use it as-is\n# Need to export it, so it can be got from environment in children (eg. mconf)\n\nBR2_LOCALVERSION := $(shell $(TOPDIR)/support/scripts/setlocalversion)\nifeq ($(BR2_LOCALVERSION),)\nexport BR2_VERSION_FULL := $(BR2_VERSION)\nelse\nexport BR2_VERSION_FULL := $(BR2_LOCALVERSION)\nendif\n\n# List of targets and target patterns for which .config doesn't need to be read in\nnoconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconfig \\\n\tdefconfig %_defconfig allyesconfig allnoconfig alldefconfig syncconfig release \\\n\trandpackageconfig allyespackageconfig allnopackageconfig \\\n\tprint-version olddefconfig distclean manual manual-% check-package check-flake8\n\n# Some global targets do not trigger a build, but are used to collect\n# metadata, or do various checks. When such targets are triggered,\n# some packages should not do their configuration sanity\n# checks. Provide them a BR_BUILDING variable set to 'y' when we're\n# actually building and they should do their sanity checks.\n#\n# We're building in two situations: when MAKECMDGOALS is empty\n# (default target is to build), or when MAKECMDGOALS contains\n# something else than one of the nobuild_targets.\nnobuild_targets := source %-source \\\n\tlegal-info %-legal-info external-deps _external-deps \\\n\tclean distclean help show-targets graph-depends \\\n\t%-graph-depends %-show-depends %-show-version \\\n\tgraph-build graph-size list-defconfigs \\\n\tsavedefconfig update-defconfig printvars\nifeq ($(MAKECMDGOALS),)\nBR_BUILDING = y\nelse ifneq ($(filter-out $(nobuild_targets),$(MAKECMDGOALS)),)\nBR_BUILDING = y\nendif\n\n# We call make recursively to build packages. The command-line overrides that\n# are passed to Buildroot don't apply to those package build systems. In\n# particular, we don't want to pass down the O=<dir> option for out-of-tree\n# builds, because the value specified on the command line will not be correct\n# for packages.\nMAKEOVERRIDES :=\n\n# Include some helper macros and variables\ninclude support/misc/utils.mk\n\n# Set variables related to in-tree or out-of-tree build.\n# Here, both $(O) and $(CURDIR) are absolute canonical paths.\nifeq ($(O),$(CURDIR)/output)\nCONFIG_DIR := $(CURDIR)\nNEED_WRAPPER =\nelse\nCONFIG_DIR := $(O)\nNEED_WRAPPER = y\nendif\n\n# bash prints the name of the directory on 'cd <dir>' if CDPATH is\n# set, so unset it here to not cause problems. Notice that the export\n# line doesn't affect the environment of $(shell ..) calls.\nexport CDPATH :=\n\nBASE_DIR := $(CANONICAL_O)\n$(if $(BASE_DIR),, $(error output directory \"$(O)\" does not exist))\n\n\n# Handling of BR2_EXTERNAL.\n#\n# The value of BR2_EXTERNAL is stored in .br-external in the output directory.\n# The location of the external.mk makefile fragments is computed in that file.\n# On subsequent invocations of make, this file is read in. BR2_EXTERNAL can\n# still be overridden on the command line, therefore the file is re-created\n# every time make is run.\n\nBR2_EXTERNAL_FILE = $(BASE_DIR)/.br2-external.mk\n-include $(BR2_EXTERNAL_FILE)\n$(shell support/scripts/br2-external -d '$(BASE_DIR)' $(BR2_EXTERNAL))\nBR2_EXTERNAL_ERROR =\ninclude $(BR2_EXTERNAL_FILE)\nifneq ($(BR2_EXTERNAL_ERROR),)\n$(error $(BR2_EXTERNAL_ERROR))\nendif\n\n# Workaround bug in make-4.3: https://savannah.gnu.org/bugs/?57676\n$(BASE_DIR)/.br2-external.mk:;\n\n# To make sure that the environment variable overrides the .config option,\n# set this before including .config.\nifneq ($(BR2_DL_DIR),)\nDL_DIR := $(BR2_DL_DIR)\nendif\nifneq ($(BR2_CCACHE_DIR),)\nBR_CACHE_DIR := $(BR2_CCACHE_DIR)\nendif\n\n# Need that early, before we scan packages\n# Avoids doing the $(or...) everytime\nBR_GRAPH_OUT := $(or $(BR2_GRAPH_OUT),pdf)\n\nBUILD_DIR := $(BASE_DIR)/build\nBINARIES_DIR := $(BASE_DIR)/images\nBASE_TARGET_DIR := $(BASE_DIR)/target\nPER_PACKAGE_DIR := $(BASE_DIR)/per-package\n# initial definition so that 'make clean' works for most users, even without\n# .config. HOST_DIR will be overwritten later when .config is included.\nHOST_DIR := $(BASE_DIR)/host\nGRAPHS_DIR := $(BASE_DIR)/graphs\n\nLEGAL_INFO_DIR = $(BASE_DIR)/legal-info\nREDIST_SOURCES_DIR_TARGET = $(LEGAL_INFO_DIR)/sources\nREDIST_SOURCES_DIR_HOST = $(LEGAL_INFO_DIR)/host-sources\nLICENSE_FILES_DIR_TARGET = $(LEGAL_INFO_DIR)/licenses\nLICENSE_FILES_DIR_HOST = $(LEGAL_INFO_DIR)/host-licenses\nLEGAL_MANIFEST_CSV_TARGET = $(LEGAL_INFO_DIR)/manifest.csv\nLEGAL_MANIFEST_CSV_HOST = $(LEGAL_INFO_DIR)/host-manifest.csv\nLEGAL_WARNINGS = $(LEGAL_INFO_DIR)/.warnings\nLEGAL_REPORT = $(LEGAL_INFO_DIR)/README\n\nCPE_UPDATES_DIR = $(BASE_DIR)/cpe-updates\n\nBR2_CONFIG = $(CONFIG_DIR)/.config\n\n# Pull in the user's configuration file\nifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)\n-include $(BR2_CONFIG)\nendif\n\nifeq ($(BR2_PER_PACKAGE_DIRECTORIES),)\n# Disable top-level parallel build if per-package directories is not\n# used. Indeed, per-package directories is necessary to guarantee\n# determinism and reproducibility with top-level parallel build.\n.NOTPARALLEL:\nendif\n\n# timezone and locale may affect build output\nifeq ($(BR2_REPRODUCIBLE),y)\nexport TZ = UTC\nexport LANG = C\nexport LC_ALL = C\nendif\n\n# To put more focus on warnings, be less verbose as default\n# Use 'make V=1' to see the full commands\nifeq (\"$(origin V)\", \"command line\")\n  KBUILD_VERBOSE = $(V)\nendif\nifndef KBUILD_VERBOSE\n  KBUILD_VERBOSE = 0\nendif\n\nifeq ($(KBUILD_VERBOSE),1)\n  Q =\nifndef VERBOSE\n  VERBOSE = 1\nendif\nexport VERBOSE\nelse\n  Q = @\nendif\n\n# kconfig uses CONFIG_SHELL\nCONFIG_SHELL := $(SHELL)\n\nexport SHELL CONFIG_SHELL Q KBUILD_VERBOSE\n\nifndef HOSTAR\nHOSTAR := ar\nendif\nifndef HOSTAS\nHOSTAS := as\nendif\nifndef HOSTCC\nHOSTCC := gcc\nHOSTCC := $(shell which $(HOSTCC) || type -p $(HOSTCC) || echo gcc)\nendif\nHOSTCC_NOCCACHE := $(HOSTCC)\nifndef HOSTCXX\nHOSTCXX := g++\nHOSTCXX := $(shell which $(HOSTCXX) || type -p $(HOSTCXX) || echo g++)\nendif\nHOSTCXX_NOCCACHE := $(HOSTCXX)\nifndef HOSTCPP\nHOSTCPP := cpp\nendif\nifndef HOSTLD\nHOSTLD := ld\nendif\nifndef HOSTLN\nHOSTLN := ln\nendif\nifndef HOSTNM\nHOSTNM := nm\nendif\nifndef HOSTOBJCOPY\nHOSTOBJCOPY := objcopy\nendif\nifndef HOSTRANLIB\nHOSTRANLIB := ranlib\nendif\nHOSTAR := $(shell which $(HOSTAR) || type -p $(HOSTAR) || echo ar)\nHOSTAS := $(shell which $(HOSTAS) || type -p $(HOSTAS) || echo as)\nHOSTCPP := $(shell which $(HOSTCPP) || type -p $(HOSTCPP) || echo cpp)\nHOSTLD := $(shell which $(HOSTLD) || type -p $(HOSTLD) || echo ld)\nHOSTLN := $(shell which $(HOSTLN) || type -p $(HOSTLN) || echo ln)\nHOSTNM := $(shell which $(HOSTNM) || type -p $(HOSTNM) || echo nm)\nHOSTOBJCOPY := $(shell which $(HOSTOBJCOPY) || type -p $(HOSTOBJCOPY) || echo objcopy)\nHOSTRANLIB := $(shell which $(HOSTRANLIB) || type -p $(HOSTRANLIB) || echo ranlib)\nSED := $(shell which sed || type -p sed) -i -e\n\nexport HOSTAR HOSTAS HOSTCC HOSTCXX HOSTLD\nexport HOSTCC_NOCCACHE HOSTCXX_NOCCACHE\n\n# Determine the userland we are running on.\n#\n# Note that, despite its name, we are not interested in the actual\n# architecture name. This is mostly used to determine whether some\n# of the binary tools (e.g. pre-built external toolchains) can run\n# on the current host. So we need to know if the userland we're\n# running on can actually run those toolchains.\n#\n# For example, a 64-bit prebuilt toolchain will not run on a 64-bit\n# kernel if the userland is 32-bit (e.g. in a chroot for example).\n#\n# So, we extract the first part of the tuple the host gcc was\n# configured to generate code for; we assume this is our userland.\n#\nexport HOSTARCH := $(shell LC_ALL=C $(HOSTCC_NOCCACHE) -v 2>&1 | \\\n\tsed -e '/^Target: \\([^-]*\\).*/!d' \\\n\t    -e 's//\\1/' \\\n\t    -e 's/i.86/x86/' \\\n\t    -e 's/sun4u/sparc64/' \\\n\t    -e 's/arm.*/arm/' \\\n\t    -e 's/sa110/arm/' \\\n\t    -e 's/ppc64/powerpc64/' \\\n\t    -e 's/ppc/powerpc/' \\\n\t    -e 's/macppc/powerpc/' \\\n\t    -e 's/sh.*/sh/' )\n\n# When adding a new host gcc version in Config.in,\n# update the HOSTCC_MAX_VERSION variable:\nHOSTCC_MAX_VERSION := 9\n\nHOSTCC_VERSION := $(shell V=$$($(HOSTCC_NOCCACHE) --version | \\\n\tsed -n -r 's/^.* ([0-9]*)\\.([0-9]*)\\.([0-9]*)[ ]*.*/\\1 \\2/p'); \\\n\t[ \"$${V%% *}\" -le $(HOSTCC_MAX_VERSION) ] || V=$(HOSTCC_MAX_VERSION); \\\n\tprintf \"%s\" \"$${V}\")\n\n# For gcc >= 5.x, we only need the major version.\nifneq ($(firstword $(HOSTCC_VERSION)),4)\nHOSTCC_VERSION := $(firstword $(HOSTCC_VERSION))\nendif\n\nifeq ($(BR2_NEEDS_HOST_UTF8_LOCALE),y)\n# First, we try to use the user's configured locale (as that's the\n# language they'd expect messages to be displayed), then we favour\n# a non language-specific locale like C.UTF-8 if one is available,\n# so we sort with the C locale to get it at the top.\n# This is guaranteed to not be empty, because of the check in\n# support/dependencies/dependencies.sh\nHOST_UTF8_LOCALE := $(shell \\\n\t\t\t( echo $${LC_ALL:-$${LC_MESSAGES:-$${LANG}}}; \\\n\t\t\t  locale -a 2>/dev/null | LC_ALL=C sort \\\n\t\t\t) \\\n\t\t\t| grep -i -E 'utf-?8$$' \\\n\t\t\t| head -n 1)\nHOST_UTF8_LOCALE_ENV := LC_ALL=$(HOST_UTF8_LOCALE)\nendif\n\n# Make sure pkg-config doesn't look outside the buildroot tree\nHOST_PKG_CONFIG_PATH := $(PKG_CONFIG_PATH)\nunexport PKG_CONFIG_PATH\nunexport PKG_CONFIG_SYSROOT_DIR\nunexport PKG_CONFIG_LIBDIR\n\n# Having DESTDIR set in the environment confuses the installation\n# steps of some packages.\nunexport DESTDIR\n\n# Causes breakage with packages that needs host-ruby\nunexport RUBYOPT\n\ninclude package/pkg-utils.mk\ninclude package/doc-asciidoc.mk\n\nifeq ($(BR2_HAVE_DOT_CONFIG),y)\n\n################################################################################\n#\n# Hide troublesome environment variables from sub processes\n#\n################################################################################\nunexport CROSS_COMPILE\nunexport ARCH\nunexport CC\nunexport LD\nunexport AR\nunexport CXX\nunexport CPP\nunexport RANLIB\nunexport CFLAGS\nunexport CXXFLAGS\nunexport GREP_OPTIONS\nunexport TAR_OPTIONS\nunexport CONFIG_SITE\nunexport QMAKESPEC\nunexport TERMINFO\nunexport MACHINE\nunexport O\nunexport GCC_COLORS\nunexport PLATFORM\nunexport OS\n\nGNU_HOST_NAME := $(shell support/gnuconfig/config.guess)\n\nPACKAGES :=\nPACKAGES_ALL :=\n\n# silent mode requested?\nQUIET := $(if $(findstring s,$(filter-out --%,$(MAKEFLAGS))),-q)\n\n# Strip off the annoying quoting\nARCH := $(call qstrip,$(BR2_ARCH))\n\nKERNEL_ARCH := $(shell echo \"$(ARCH)\" | sed -e \"s/-.*//\" \\\n\t-e s/i.86/i386/ -e s/sun4u/sparc64/ \\\n\t-e s/arcle/arc/ \\\n\t-e s/arceb/arc/ \\\n\t-e s/arm.*/arm/ -e s/sa110/arm/ \\\n\t-e s/aarch64.*/arm64/ \\\n\t-e s/nds32.*/nds32/ \\\n\t-e s/or1k/openrisc/ \\\n\t-e s/parisc64/parisc/ \\\n\t-e s/powerpc64.*/powerpc/ \\\n\t-e s/ppc.*/powerpc/ -e s/mips.*/mips/ \\\n\t-e s/riscv.*/riscv/ \\\n\t-e s/sh.*/sh/ \\\n\t-e s/s390x/s390/ \\\n\t-e s/microblazeel/microblaze/)\n\nZCAT := $(call qstrip,$(BR2_ZCAT))\nBZCAT := $(call qstrip,$(BR2_BZCAT))\nXZCAT := $(call qstrip,$(BR2_XZCAT))\nLZCAT := $(call qstrip,$(BR2_LZCAT))\nTAR_OPTIONS = $(call qstrip,$(BR2_TAR_OPTIONS)) -xf\n\nifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)\nHOST_DIR = $(if $(PKG),$(PER_PACKAGE_DIR)/$($(PKG)_NAME)/host,$(call qstrip,$(BR2_HOST_DIR)))\nTARGET_DIR = $(if $(ROOTFS),$(ROOTFS_$(ROOTFS)_TARGET_DIR),$(if $(PKG),$(PER_PACKAGE_DIR)/$($(PKG)_NAME)/target,$(BASE_TARGET_DIR)))\nelse\nHOST_DIR := $(call qstrip,$(BR2_HOST_DIR))\nTARGET_DIR = $(if $(ROOTFS),$(ROOTFS_$(ROOTFS)_TARGET_DIR),$(BASE_TARGET_DIR))\nendif\n\nifneq ($(HOST_DIR),$(BASE_DIR)/host)\nHOST_DIR_SYMLINK = $(BASE_DIR)/host\n$(HOST_DIR_SYMLINK): | $(BASE_DIR)\n\tln -snf $(HOST_DIR) $(HOST_DIR_SYMLINK)\nendif\n\nSTAGING_DIR_SYMLINK = $(BASE_DIR)/staging\n$(STAGING_DIR_SYMLINK): | $(BASE_DIR)\n\tln -snf $(STAGING_DIR) $(STAGING_DIR_SYMLINK)\n\n# Quotes are needed for spaces and all in the original PATH content.\nBR_PATH = \"$(HOST_DIR)/bin:$(HOST_DIR)/sbin:$(PATH)\"\n\n# Location of a file giving a big fat warning that output/target\n# should not be used as the root filesystem.\nTARGET_DIR_WARNING_FILE = $(TARGET_DIR)/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM\n\nifeq ($(BR2_CCACHE),y)\nCCACHE = $(HOST_DIR)/bin/ccache\nBR_CACHE_DIR ?= $(call qstrip,$(BR2_CCACHE_DIR))\nexport BR_CACHE_DIR\nHOSTCC = $(CCACHE) $(HOSTCC_NOCCACHE)\nHOSTCXX = $(CCACHE) $(HOSTCXX_NOCCACHE)\nelse\nexport BR_NO_CCACHE\nendif\n\n# Scripts in support/ or post-build scripts may need to reference\n# these locations, so export them so it is easier to use\nexport BR2_CONFIG\nexport BR2_REPRODUCIBLE\nexport TARGET_DIR\nexport STAGING_DIR\nexport HOST_DIR\nexport BINARIES_DIR\nexport BASE_DIR\n\n################################################################################\n#\n# You should probably leave this stuff alone unless you know\n# what you are doing.\n#\n################################################################################\n\nall: world\n\n# Include legacy before the other things, because package .mk files\n# may rely on it.\ninclude Makefile.legacy\n\ninclude system/system.mk\ninclude package/Makefile.in\n# arch/arch.mk must be after package/Makefile.in because it may need to\n# complement variables defined therein, like BR_NO_CHECK_HASH_FOR.\ninclude arch/arch.mk\ninclude support/dependencies/dependencies.mk\n\ninclude $(sort $(wildcard toolchain/*.mk))\ninclude $(sort $(wildcard toolchain/*/*.mk))\n\nifeq ($(BR2_REPRODUCIBLE),y)\n# If SOURCE_DATE_EPOCH has not been set then use the commit date, or the last\n# release date if the source tree is not within a Git repository.\n# See: https://reproducible-builds.org/specs/source-date-epoch/\nBR2_VERSION_GIT_EPOCH := $(shell $(GIT) log -1 --format=%at 2> /dev/null)\nexport SOURCE_DATE_EPOCH ?= $(or $(BR2_VERSION_GIT_EPOCH),$(BR2_VERSION_EPOCH))\nendif\n\n# Include the package override file if one has been provided in the\n# configuration.\nPACKAGE_OVERRIDE_FILE = $(call qstrip,$(BR2_PACKAGE_OVERRIDE_FILE))\nifneq ($(PACKAGE_OVERRIDE_FILE),)\n-include $(PACKAGE_OVERRIDE_FILE)\nendif\n\ninclude $(sort $(wildcard package/*/*.mk))\n\ninclude boot/common.mk\ninclude linux/linux.mk\ninclude fs/common.mk\n\n# If using a br2-external tree, the BR2_EXTERNAL_$(NAME)_PATH variables\n# are also present in the .config file. Since .config is included after\n# we defined them in the Makefile, the values for those variables are\n# quoted. We just include the generated Makefile fragment .br2-external.mk\n# a third time, which will set those variables to the un-quoted values.\ninclude $(BR2_EXTERNAL_FILE)\n\n# Nothing to include if no BR2_EXTERNAL tree in use\ninclude $(BR2_EXTERNAL_MKS)\n\n# Now we are sure we have all the packages scanned and defined. We now\n# check for each package in the list of enabled packages, that all its\n# dependencies are indeed enabled.\n#\n# Only trigger the check for default builds. If the user forces building\n# a package, even if not enabled in the configuration, we want to accept\n# it. However; we also want to be able to force checking the dependencies\n# if the user so desires. Forcing a dependency check is useful in the case\n# of test-pkg, as we want to make sure during testing, that a package has\n# all the dependencies selected in the config file.\n#\nifeq ($(MAKECMDGOALS),)\nBR_FORCE_CHECK_DEPENDENCIES = YES\nendif\n\nifeq ($(BR_FORCE_CHECK_DEPENDENCIES),YES)\n\ndefine CHECK_ONE_DEPENDENCY\nifeq ($$($(2)_TYPE),target)\nifeq ($$($(2)_IS_VIRTUAL),)\nifneq ($$($$($(2)_KCONFIG_VAR)),y)\n$$(error $$($(2)_NAME) is in the dependency chain of $$($(1)_NAME) that \\\nhas added it to its _DEPENDENCIES variable without selecting it or \\\ndepending on it from Config.in)\nendif\nendif\nendif\nendef\n\n$(foreach pkg,$(call UPPERCASE,$(PACKAGES)),\\\n\t$(foreach dep,$(call UPPERCASE,$($(pkg)_FINAL_ALL_DEPENDENCIES)),\\\n\t\t$(eval $(call CHECK_ONE_DEPENDENCY,$(pkg),$(dep))$(sep))))\n\nendif\n\n$(BUILD_DIR)/buildroot-config/auto.conf: $(BR2_CONFIG)\n\t$(MAKE1) $(EXTRAMAKEARGS) HOSTCC=\"$(HOSTCC_NOCCACHE)\" HOSTCXX=\"$(HOSTCXX_NOCCACHE)\" syncconfig\n\n.PHONY: prepare\nprepare: $(BUILD_DIR)/buildroot-config/auto.conf\n\n.PHONY: world\nworld: target-post-image\n\n.PHONY: prepare-sdk\nprepare-sdk: world\n\t@$(call MESSAGE,\"Rendering the SDK relocatable\")\n\tPER_PACKAGE_DIR=$(PER_PACKAGE_DIR) $(TOPDIR)/support/scripts/fix-rpath host\n\tPER_PACKAGE_DIR=$(PER_PACKAGE_DIR) $(TOPDIR)/support/scripts/fix-rpath staging\n\t$(INSTALL) -m 755 $(TOPDIR)/support/misc/relocate-sdk.sh $(HOST_DIR)/relocate-sdk.sh\n\tmkdir -p $(HOST_DIR)/share/buildroot\n\techo $(HOST_DIR) > $(HOST_DIR)/share/buildroot/sdk-location\n\nBR2_SDK_PREFIX ?= $(GNU_TARGET_NAME)_sdk-buildroot\n.PHONY: sdk\nsdk: prepare-sdk $(BR2_TAR_HOST_DEPENDENCY)\n\t@$(call MESSAGE,\"Generating SDK tarball\")\n\t$(if $(BR2_SDK_PREFIX),,$(error BR2_SDK_PREFIX can not be empty))\n\t$(Q)mkdir -p $(BINARIES_DIR)\n\t$(TAR) czf \"$(BINARIES_DIR)/$(BR2_SDK_PREFIX).tar.gz\" \\\n\t\t--owner=0 --group=0 --numeric-owner \\\n\t\t--transform='s#^$(patsubst /%,%,$(HOST_DIR))#$(BR2_SDK_PREFIX)#' \\\n\t\t-C / $(patsubst /%,%,$(HOST_DIR))\n\nRSYNC_VCS_EXCLUSIONS = \\\n\t--exclude .svn --exclude .git --exclude .hg --exclude .bzr \\\n\t--exclude CVS\n\n# When stripping, obey to BR2_STRIP_EXCLUDE_DIRS and\n# BR2_STRIP_EXCLUDE_FILES\nSTRIP_FIND_COMMON_CMD = \\\n\tfind $(TARGET_DIR) \\\n\t$(if $(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS)), \\\n\t\t\\( $(call finddirclauses,$(TARGET_DIR),$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS))) \\) \\\n\t\t-prune -o \\\n\t) \\\n\t$(if $(call qstrip,$(BR2_STRIP_EXCLUDE_FILES)), \\\n\t\t-not \\( $(call findfileclauses,$(call qstrip,$(BR2_STRIP_EXCLUDE_FILES))) \\) )\n\n# Regular stripping for everything, except libpthread, ld-*.so and\n# kernel modules:\n# - libpthread.so: a non-stripped libpthread shared library is needed for\n#   proper debugging of pthread programs using gdb.\n# - ld.so: a non-stripped dynamic linker library is needed for valgrind\n# - kernel modules (*.ko): do not function properly when stripped like normal\n#   applications and libraries. Normally kernel modules are already excluded\n#   by the executable permission check, so the explicit exclusion is only\n#   done for kernel modules with incorrect permissions.\nSTRIP_FIND_CMD = \\\n\t$(STRIP_FIND_COMMON_CMD) \\\n\t-type f \\( -perm /111 -o -name '*.so*' \\) \\\n\t-not \\( $(call findfileclauses,libpthread*.so* ld-*.so* *.ko) \\) \\\n\t-print0\n\n# Special stripping (only debugging symbols) for libpthread and ld-*.so.\nSTRIP_FIND_SPECIAL_LIBS_CMD = \\\n\t$(STRIP_FIND_COMMON_CMD) \\\n\t\\( -name 'ld-*.so*' -o -name 'libpthread*.so*' \\) \\\n\t-print0\n\nifeq ($(BR2_ECLIPSE_REGISTER),y)\ndefine TOOLCHAIN_ECLIPSE_REGISTER\n\t./support/scripts/eclipse-register-toolchain `readlink -f $(O)` \\\n\t\t$(notdir $(TARGET_CROSS)) $(BR2_ARCH)\nendef\nTARGET_FINALIZE_HOOKS += TOOLCHAIN_ECLIPSE_REGISTER\nendif\n\n# Generate locale data.\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)\nGLIBC_GENERATE_LOCALES = $(call qstrip,$(BR2_GENERATE_LOCALE))\nifneq ($(GLIBC_GENERATE_LOCALES),)\nPACKAGES += host-localedef\n\ndefine GENERATE_GLIBC_LOCALES\n\t$(MAKE) -f support/misc/gen-glibc-locales.mk \\\n\t\tENDIAN=$(call LOWERCASE,$(BR2_ENDIAN)) \\\n\t\tLOCALES=\"$(GLIBC_GENERATE_LOCALES)\" \\\n\t\tQ=$(Q)\nendef\nTARGET_FINALIZE_HOOKS += GENERATE_GLIBC_LOCALES\nendif\nendif\n\nifeq ($(BR2_ENABLE_LOCALE_PURGE),y)\nLOCALE_WHITELIST = $(BUILD_DIR)/locales.nopurge\nLOCALE_NOPURGE = $(call qstrip,$(BR2_ENABLE_LOCALE_WHITELIST))\n\n# This piece of junk does the following:\n# First collect the whitelist in a file.\n# Then go over all the locale dirs and for each subdir, check if it exists\n# in the whitelist file. If it doesn't, kill it.\n# Finally, specifically for X11, regenerate locale.dir from the whitelist.\ndefine PURGE_LOCALES\n\tprintf '%s\\n' $(LOCALE_NOPURGE) locale-archive > $(LOCALE_WHITELIST)\n\n\tfor dir in $(addprefix $(TARGET_DIR),/usr/share/locale /usr/share/X11/locale /usr/lib/locale); \\\n\tdo \\\n\t\tif [ ! -d $$dir ]; then continue; fi; \\\n\t\tfor langdir in $$dir/*; \\\n\t\tdo \\\n\t\t\tif [ -e \"$${langdir}\" ]; \\\n\t\t\tthen \\\n\t\t\t\tgrep -qx \"$${langdir##*/}\" $(LOCALE_WHITELIST) || rm -rf $$langdir; \\\n\t\t\tfi \\\n\t\tdone; \\\n\tdone\n\tif [ -d $(TARGET_DIR)/usr/share/X11/locale ]; \\\n\tthen \\\n\t\tfor lang in $(LOCALE_NOPURGE); \\\n\t\tdo \\\n\t\t\tif [ -f $(TARGET_DIR)/usr/share/X11/locale/$$lang/XLC_LOCALE ]; \\\n\t\t\tthen \\\n\t\t\t\techo \"$$lang/XLC_LOCALE: $$lang\"; \\\n\t\t\tfi \\\n\t\tdone > $(TARGET_DIR)/usr/share/X11/locale/locale.dir; \\\n\tfi\nendef\nTARGET_FINALIZE_HOOKS += PURGE_LOCALES\nendif\n\n$(TARGETS_ROOTFS): target-finalize\n\n# Avoid the rootfs name leaking down the dependency chain\ntarget-finalize: ROOTFS=\n\nTARGET_DIR_FILES_LISTS = $(sort $(wildcard $(BUILD_DIR)/*/.files-list.txt))\nHOST_DIR_FILES_LISTS = $(sort $(wildcard $(BUILD_DIR)/*/.files-list-host.txt))\nSTAGING_DIR_FILES_LISTS = $(sort $(wildcard $(BUILD_DIR)/*/.files-list-staging.txt))\n\n.PHONY: host-finalize\nhost-finalize: $(PACKAGES) $(HOST_DIR) $(HOST_DIR_SYMLINK)\n\t@$(call MESSAGE,\"Finalizing host directory\")\n\t$(call per-package-rsync,$(sort $(PACKAGES)),host,$(HOST_DIR))\n\n.PHONY: staging-finalize\nstaging-finalize: $(STAGING_DIR_SYMLINK)\n\n.PHONY: target-finalize\ntarget-finalize: $(PACKAGES) $(TARGET_DIR) host-finalize\n\t@$(call MESSAGE,\"Finalizing target directory\")\n\t$(call per-package-rsync,$(sort $(PACKAGES)),target,$(TARGET_DIR))\n\t$(foreach hook,$(TARGET_FINALIZE_HOOKS),$($(hook))$(sep))\n\trm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/share/aclocal \\\n\t\t$(TARGET_DIR)/usr/lib/pkgconfig $(TARGET_DIR)/usr/share/pkgconfig \\\n\t\t$(TARGET_DIR)/usr/lib/cmake $(TARGET_DIR)/usr/share/cmake \\\n\t\t$(TARGET_DIR)/usr/doc\n\tfind $(TARGET_DIR)/usr/{lib,share}/ -name '*.cmake' -print0 | xargs -0 rm -f\n\tfind $(TARGET_DIR)/lib/ $(TARGET_DIR)/usr/lib/ $(TARGET_DIR)/usr/libexec/ \\\n\t\t\\( -name '*.a' -o -name '*.la' -o -name '*.prl' \\) -print0 | xargs -0 rm -f\nifneq ($(BR2_PACKAGE_GDB),y)\n\trm -rf $(TARGET_DIR)/usr/share/gdb\nendif\nifneq ($(BR2_PACKAGE_BASH),y)\n\trm -rf $(TARGET_DIR)/usr/share/bash-completion\n\trm -rf $(TARGET_DIR)/etc/bash_completion.d\nendif\nifneq ($(BR2_PACKAGE_ZSH),y)\n\trm -rf $(TARGET_DIR)/usr/share/zsh\nendif\n\trm -rf $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/man\n\trm -rf $(TARGET_DIR)/usr/info $(TARGET_DIR)/usr/share/info\n\trm -rf $(TARGET_DIR)/usr/doc $(TARGET_DIR)/usr/share/doc\n\trm -rf $(TARGET_DIR)/usr/share/gtk-doc\n\trmdir $(TARGET_DIR)/usr/share 2>/dev/null || true\nifneq ($(BR2_ENABLE_DEBUG):$(BR2_STRIP_strip),y:)\n\trm -rf $(TARGET_DIR)/lib/debug $(TARGET_DIR)/usr/lib/debug\nendif\n\t$(STRIP_FIND_CMD) | xargs -0 $(STRIPCMD) 2>/dev/null || true\n\t$(STRIP_FIND_SPECIAL_LIBS_CMD) | xargs -0 -r $(STRIPCMD) $(STRIP_STRIP_DEBUG) 2>/dev/null || true\n\n\ttest -f $(TARGET_DIR)/etc/ld.so.conf && \\\n\t\t{ echo \"ERROR: we shouldn't have a /etc/ld.so.conf file\"; exit 1; } || true\n\ttest -d $(TARGET_DIR)/etc/ld.so.conf.d && \\\n\t\t{ echo \"ERROR: we shouldn't have a /etc/ld.so.conf.d directory\"; exit 1; } || true\n\tmkdir -p $(TARGET_DIR)/etc\n\t( \\\n\t\techo \"NAME=Buildroot\"; \\\n\t\techo \"VERSION=$(BR2_VERSION_FULL)\"; \\\n\t\techo \"ID=buildroot\"; \\\n\t\techo \"VERSION_ID=$(BR2_VERSION)\"; \\\n\t\techo \"PRETTY_NAME=\\\"Buildroot $(BR2_VERSION)\\\"\" \\\n\t) >  $(TARGET_DIR)/usr/lib/os-release\n\tln -sf ../usr/lib/os-release $(TARGET_DIR)/etc\n\n\t@$(call MESSAGE,\"Sanitizing RPATH in target tree\")\n\tPER_PACKAGE_DIR=$(PER_PACKAGE_DIR) $(TOPDIR)/support/scripts/fix-rpath target\n\n# For a merged /usr, ensure that /lib, /bin and /sbin and their /usr\n# counterparts are appropriately setup as symlinks ones to the others.\nifeq ($(BR2_ROOTFS_MERGED_USR),y)\n\n\t$(foreach d, $(call qstrip,$(BR2_ROOTFS_OVERLAY)), \\\n\t\t@$(call MESSAGE,\"Sanity check in overlay $(d)\")$(sep) \\\n\t\t$(Q)not_merged_dirs=\"$$(support/scripts/check-merged-usr.sh $(d))\"; \\\n\t\ttest -n \"$$not_merged_dirs\" && { \\\n\t\t\techo \"ERROR: The overlay in $(d) is not\" \\\n\t\t\t\t\"using a merged /usr for the following directories:\" \\\n\t\t\t\t$$not_merged_dirs; \\\n\t\t\texit 1; \\\n\t\t} || true$(sep))\n\nendif # merged /usr\n\n\t$(foreach d, $(call qstrip,$(BR2_ROOTFS_OVERLAY)), \\\n\t\t@$(call MESSAGE,\"Copying overlay $(d)\")$(sep) \\\n\t\t$(Q)$(call SYSTEM_RSYNC,$(d),$(TARGET_DIR))$(sep))\n\n\t$(Q)$(if $(TARGET_DIR_FILES_LISTS), \\\n\t\tcat $(TARGET_DIR_FILES_LISTS)) > $(BUILD_DIR)/packages-file-list.txt\n\t$(Q)$(if $(HOST_DIR_FILES_LISTS), \\\n\t\tcat $(HOST_DIR_FILES_LISTS)) > $(BUILD_DIR)/packages-file-list-host.txt\n\t$(Q)$(if $(STAGING_DIR_FILES_LISTS), \\\n\t\tcat $(STAGING_DIR_FILES_LISTS)) > $(BUILD_DIR)/packages-file-list-staging.txt\n\n\t$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT)), \\\n\t\t@$(call MESSAGE,\"Executing post-build script $(s)\")$(sep) \\\n\t\t$(Q)$(EXTRA_ENV) $(s) $(TARGET_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep))\n\n\ttouch $(TARGET_DIR)/usr\n\n.PHONY: target-post-image\ntarget-post-image: $(TARGETS_ROOTFS) target-finalize staging-finalize\n\t@rm -f $(ROOTFS_COMMON_TAR)\n\t$(Q)mkdir -p $(BINARIES_DIR)\n\t@$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \\\n\t\t$(call MESSAGE,\"Executing post-image script $(s)\"); \\\n\t\t$(EXTRA_ENV) $(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep))\n\n.PHONY: source\nsource: $(foreach p,$(PACKAGES),$(p)-all-source)\n\n.PHONY: _external-deps external-deps\n_external-deps: $(foreach p,$(PACKAGES),$(p)-all-external-deps)\nexternal-deps:\n\t@$(MAKE1) -Bs $(EXTRAMAKEARGS) _external-deps | sort -u\n\n.PHONY: legal-info-clean\nlegal-info-clean:\n\t@rm -fr $(LEGAL_INFO_DIR)\n\n.PHONY: legal-info-prepare\nlegal-info-prepare: $(LEGAL_INFO_DIR)\n\t@$(call MESSAGE,\"Buildroot $(BR2_VERSION_FULL) Collecting legal info\")\n\t@$(call legal-license-file,buildroot,buildroot,support/legal-info/buildroot.hash,COPYING,COPYING,HOST)\n\t@$(call legal-manifest,TARGET,PACKAGE,VERSION,LICENSE,LICENSE FILES,SOURCE ARCHIVE,SOURCE SITE,DEPENDENCIES WITH LICENSES)\n\t@$(call legal-manifest,HOST,PACKAGE,VERSION,LICENSE,LICENSE FILES,SOURCE ARCHIVE,SOURCE SITE,DEPENDENCIES WITH LICENSES)\n\t@$(call legal-manifest,HOST,buildroot,$(BR2_VERSION_FULL),GPL-2.0+,COPYING,not saved,not saved)\n\t@$(call legal-warning,the Buildroot source code has not been saved)\n\t@cp $(BR2_CONFIG) $(LEGAL_INFO_DIR)/buildroot.config\n\n.PHONY: legal-info\nlegal-info: legal-info-clean legal-info-prepare $(foreach p,$(PACKAGES),$(p)-all-legal-info) \\\n\t\t$(REDIST_SOURCES_DIR_TARGET) $(REDIST_SOURCES_DIR_HOST)\n\t@cat support/legal-info/README.header >>$(LEGAL_REPORT)\n\t@if [ -r $(LEGAL_WARNINGS) ]; then \\\n\t\tcat support/legal-info/README.warnings-header \\\n\t\t\t$(LEGAL_WARNINGS) >>$(LEGAL_REPORT); \\\n\t\tcat $(LEGAL_WARNINGS); fi\n\t@rm -f $(LEGAL_WARNINGS)\n\t@(cd $(LEGAL_INFO_DIR); \\\n\t\tfind * -type f -exec sha256sum {} + | LC_ALL=C sort -k2 \\\n\t\t\t>.legal-info.sha256; \\\n\t\tmv .legal-info.sha256 legal-info.sha256)\n\t@echo \"Legal info produced in $(LEGAL_INFO_DIR)\"\n\n.PHONY: show-targets\nshow-targets:\n\t@echo $(sort $(PACKAGES)) $(sort $(TARGETS_ROOTFS))\n\n.PHONY: show-build-order\nshow-build-order: $(patsubst %,%-show-build-order,$(PACKAGES))\n\n.PHONY: graph-build\ngraph-build: $(O)/build/build-time.log\n\t@install -d $(GRAPHS_DIR)\n\t$(foreach o,name build duration,./support/scripts/graph-build-time \\\n\t\t\t\t\t--type=histogram --order=$(o) --input=$(<) \\\n\t\t\t\t\t--output=$(GRAPHS_DIR)/build.hist-$(o).$(BR_GRAPH_OUT) \\\n\t\t\t\t\t$(if $(BR2_GRAPH_ALT),--alternate-colors)$(sep))\n\t$(foreach t,packages steps,./support/scripts/graph-build-time \\\n\t\t\t\t   --type=pie-$(t) --input=$(<) \\\n\t\t\t\t   --output=$(GRAPHS_DIR)/build.pie-$(t).$(BR_GRAPH_OUT) \\\n\t\t\t\t   $(if $(BR2_GRAPH_ALT),--alternate-colors)$(sep))\n\n.PHONY: graph-depends-requirements\ngraph-depends-requirements:\n\t@dot -? >/dev/null 2>&1 || \\\n\t\t{ echo \"ERROR: The 'dot' program from Graphviz is needed for graph-depends\" >&2; exit 1; }\n\n.PHONY: graph-depends\ngraph-depends: graph-depends-requirements\n\t@$(INSTALL) -d $(GRAPHS_DIR)\n\t@cd \"$(CONFIG_DIR)\"; \\\n\t$(TOPDIR)/support/scripts/graph-depends $(BR2_GRAPH_DEPS_OPTS) \\\n\t\t--direct -o $(GRAPHS_DIR)/$(@).dot\n\tdot $(BR2_GRAPH_DOT_OPTS) -T$(BR_GRAPH_OUT) \\\n\t\t-o $(GRAPHS_DIR)/$(@).$(BR_GRAPH_OUT) \\\n\t\t$(GRAPHS_DIR)/$(@).dot\n\n.PHONY: graph-size\ngraph-size:\n\t$(Q)mkdir -p $(GRAPHS_DIR)\n\t$(Q)$(TOPDIR)/support/scripts/size-stats --builddir $(BASE_DIR) \\\n\t\t--graph $(GRAPHS_DIR)/graph-size.$(BR_GRAPH_OUT) \\\n\t\t--file-size-csv $(GRAPHS_DIR)/file-size-stats.csv \\\n\t\t--package-size-csv $(GRAPHS_DIR)/package-size-stats.csv \\\n\t\t$(BR2_GRAPH_SIZE_OPTS)\n\n.PHONY: check-dependencies\ncheck-dependencies:\n\t@cd \"$(CONFIG_DIR)\"; \\\n\t$(TOPDIR)/support/scripts/graph-depends -C\n\n.PHONY: show-info\nshow-info:\n\t@:\n\t$(info $(call clean-json, \\\n\t\t\t{ $(foreach p, \\\n\t\t\t\t$(sort $(foreach i,$(PACKAGES) $(TARGETS_ROOTFS), \\\n\t\t\t\t\t\t$(i) \\\n\t\t\t\t\t\t$($(call UPPERCASE,$(i))_FINAL_RECURSIVE_DEPENDENCIES) \\\n\t\t\t\t\t) \\\n\t\t\t\t), \\\n\t\t\t\t$(call json-info,$(call UPPERCASE,$(p)))$(comma) \\\n\t\t\t) } \\\n\t\t) \\\n\t)\n\n.PHONY: pkg-stats\npkg-stats:\n\t@cd \"$(CONFIG_DIR)\" ; \\\n\t$(TOPDIR)/support/scripts/pkg-stats -c \\\n\t\t--json $(O)/pkg-stats.json \\\n\t\t--html $(O)/pkg-stats.html \\\n\t\t--nvd-path $(DL_DIR)/buildroot-nvd\n\n.PHONY: missing-cpe\nmissing-cpe:\n\t$(Q)mkdir -p $(CPE_UPDATES_DIR)\n\t$(Q)cd \"$(CONFIG_DIR)\" ; \\\n\t$(TOPDIR)/support/scripts/gen-missing-cpe \\\n\t\t--nvd-path $(DL_DIR)/buildroot-nvd \\\n\t\t--output $(CPE_UPDATES_DIR)\n\nelse # ifeq ($(BR2_HAVE_DOT_CONFIG),y)\n\n# Some subdirectories are also package names. To avoid that \"make linux\"\n# on an unconfigured tree produces \"Nothing to be done\", add an explicit\n# rule for it.\n# Also for 'all' we error out and ask the user to configure first.\n.PHONY: linux toolchain\nlinux toolchain all: outputmakefile\n\t$(error Please configure Buildroot first (e.g. \"make menuconfig\"))\n\t@exit 1\n\nendif # ifeq ($(BR2_HAVE_DOT_CONFIG),y)\n\n# configuration\n# ---------------------------------------------------------------------------\n\nHOSTCFLAGS = $(CFLAGS_FOR_BUILD)\nexport HOSTCFLAGS\n\n$(BUILD_DIR)/buildroot-config/%onf:\n\tmkdir -p $(@D)/lxdialog\n\tPKG_CONFIG_PATH=\"$(HOST_PKG_CONFIG_PATH)\" $(MAKE) CC=\"$(HOSTCC_NOCCACHE)\" HOSTCC=\"$(HOSTCC_NOCCACHE)\" \\\n\t    obj=$(@D) -C $(CONFIG) -f Makefile.br $(@F)\n\nDEFCONFIG = $(call qstrip,$(BR2_DEFCONFIG))\n\n# We don't want to fully expand BR2_DEFCONFIG here, so Kconfig will\n# recognize that if it's still at its default $(CONFIG_DIR)/defconfig\nCOMMON_CONFIG_ENV = \\\n\tBR2_DEFCONFIG='$(call qstrip,$(value BR2_DEFCONFIG))' \\\n\tKCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \\\n\tKCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \\\n\tKCONFIG_TRISTATE=$(BUILD_DIR)/buildroot-config/tristate.config \\\n\tBR2_CONFIG=$(BR2_CONFIG) \\\n\tHOST_GCC_VERSION=\"$(HOSTCC_VERSION)\" \\\n\tBASE_DIR=$(BASE_DIR) \\\n\tSKIP_LEGACY=\n\nxconfig: $(BUILD_DIR)/buildroot-config/qconf outputmakefile\n\t@$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)\n\ngconfig: $(BUILD_DIR)/buildroot-config/gconf outputmakefile\n\t@$(COMMON_CONFIG_ENV) srctree=$(TOPDIR) $< $(CONFIG_CONFIG_IN)\n\nmenuconfig: $(BUILD_DIR)/buildroot-config/mconf outputmakefile\n\t@$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)\n\nnconfig: $(BUILD_DIR)/buildroot-config/nconf outputmakefile\n\t@$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)\n\nconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile\n\t@$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)\n\n# For the config targets that automatically select options, we pass\n# SKIP_LEGACY=y to disable the legacy options. However, in that case\n# no values are set for the legacy options so a subsequent oldconfig\n# will query them. Therefore, run an additional olddefconfig.\n\nrandconfig allyesconfig alldefconfig allnoconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile\n\t@$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --$@ $(CONFIG_CONFIG_IN)\n\t@$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null\n\nrandpackageconfig allyespackageconfig allnopackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile\n\t@grep -v BR2_PACKAGE_ $(BR2_CONFIG) > $(CONFIG_DIR)/.config.nopkg\n\t@$(COMMON_CONFIG_ENV) SKIP_LEGACY=y \\\n\t\tKCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \\\n\t\t$< --$(subst package,,$@) $(CONFIG_CONFIG_IN)\n\t@rm -f $(CONFIG_DIR)/.config.nopkg\n\t@$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null\n\noldconfig syncconfig olddefconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile\n\t@$(COMMON_CONFIG_ENV) $< --$@ $(CONFIG_CONFIG_IN)\n\ndefconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile\n\t@$(COMMON_CONFIG_ENV) $< --defconfig$(if $(DEFCONFIG),=$(DEFCONFIG)) $(CONFIG_CONFIG_IN)\n\ndefine percent_defconfig\n# Override the BR2_DEFCONFIG from COMMON_CONFIG_ENV with the new defconfig\n%_defconfig: $(BUILD_DIR)/buildroot-config/conf $(1)/configs/%_defconfig outputmakefile\n\t@$$(COMMON_CONFIG_ENV) BR2_DEFCONFIG=$(1)/configs/$$@ \\\n\t\t$$< --defconfig=$(1)/configs/$$@ $$(CONFIG_CONFIG_IN)\nendef\n$(eval $(foreach d,$(call reverse,$(TOPDIR) $(BR2_EXTERNAL_DIRS)),$(call percent_defconfig,$(d))$(sep)))\n\nupdate-defconfig: savedefconfig\n\nsavedefconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile\n\t@$(COMMON_CONFIG_ENV) $< \\\n\t\t--savedefconfig=$(if $(DEFCONFIG),$(DEFCONFIG),$(CONFIG_DIR)/defconfig) \\\n\t\t$(CONFIG_CONFIG_IN)\n\t@$(SED) '/^BR2_DEFCONFIG=/d' $(if $(DEFCONFIG),$(DEFCONFIG),$(CONFIG_DIR)/defconfig)\n\n.PHONY: defconfig savedefconfig update-defconfig\n\n################################################################################\n#\n# Cleanup and misc junk\n#\n################################################################################\n\n# staging and target directories do NOT list these as\n# dependencies anywhere else\n$(BUILD_DIR) $(BASE_TARGET_DIR) $(HOST_DIR) $(BINARIES_DIR) $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR_TARGET) $(REDIST_SOURCES_DIR_HOST) $(PER_PACKAGE_DIR):\n\t@mkdir -p $@\n\n# outputmakefile generates a Makefile in the output directory, if using a\n# separate output directory. This allows convenient use of make in the\n# output directory.\n.PHONY: outputmakefile\noutputmakefile:\nifeq ($(NEED_WRAPPER),y)\n\t$(Q)$(TOPDIR)/support/scripts/mkmakefile $(TOPDIR) $(O)\nendif\n\n# printvars prints all the variables currently defined in our\n# Makefiles. Alternatively, if a non-empty VARS variable is passed,\n# only the variables matching the make pattern passed in VARS are\n# displayed.\n.PHONY: printvars\nprintvars:\n\t@:\n\t$(foreach V, \\\n\t\t$(sort $(filter $(VARS),$(.VARIABLES))), \\\n\t\t$(if $(filter-out environment% default automatic, \\\n\t\t\t\t$(origin $V)), \\\n\t\t$(if $(QUOTED_VARS),\\\n\t\t\t$(info $V='$(subst ','\\'',$(if $(RAW_VARS),$(value $V),$($V)))'), \\\n\t\t\t$(info $V=$(if $(RAW_VARS),$(value $V),$($V))))))\n# ')))) # Syntax colouring...\n\n.PHONY: clean\nclean:\n\trm -rf $(BASE_TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) $(HOST_DIR_SYMLINK) \\\n\t\t$(BUILD_DIR) $(BASE_DIR)/staging \\\n\t\t$(LEGAL_INFO_DIR) $(GRAPHS_DIR) $(PER_PACKAGE_DIR) $(CPE_UPDATES_DIR) \\\n\t\t$(O)/pkg-stats.*\n\n.PHONY: distclean\ndistclean: clean\nifeq ($(O),$(CURDIR)/output)\n\trm -rf $(O)\nendif\n\trm -rf $(TOPDIR)/dl $(BR2_CONFIG) $(CONFIG_DIR)/.config.old $(CONFIG_DIR)/..config.tmp \\\n\t\t$(CONFIG_DIR)/.auto.deps $(BASE_DIR)/.br2-external.*\n\n.PHONY: help\nhelp:\n\t@echo 'Cleaning:'\n\t@echo '  clean                  - delete all files created by build'\n\t@echo '  distclean              - delete all non-source files (including .config)'\n\t@echo\n\t@echo 'Build:'\n\t@echo '  all                    - make world'\n\t@echo '  toolchain              - build toolchain'\n\t@echo '  sdk                    - build relocatable SDK'\n\t@echo\n\t@echo 'Configuration:'\n\t@echo '  menuconfig             - interactive curses-based configurator'\n\t@echo '  nconfig                - interactive ncurses-based configurator'\n\t@echo '  xconfig                - interactive Qt-based configurator'\n\t@echo '  gconfig                - interactive GTK-based configurator'\n\t@echo '  oldconfig              - resolve any unresolved symbols in .config'\n\t@echo '  syncconfig             - Same as oldconfig, but quietly, additionally update deps'\n\t@echo '  olddefconfig           - Same as syncconfig but sets new symbols to their default value'\n\t@echo '  randconfig             - New config with random answer to all options'\n\t@echo '  defconfig              - New config with default answer to all options;'\n\t@echo '                             BR2_DEFCONFIG, if set on the command line, is used as input'\n\t@echo '  savedefconfig          - Save current config to BR2_DEFCONFIG (minimal config)'\n\t@echo '  update-defconfig       - Same as savedefconfig'\n\t@echo '  allyesconfig           - New config where all options are accepted with yes'\n\t@echo '  allnoconfig            - New config where all options are answered with no'\n\t@echo '  alldefconfig           - New config where all options are set to default'\n\t@echo '  randpackageconfig      - New config with random answer to package options'\n\t@echo '  allyespackageconfig    - New config where pkg options are accepted with yes'\n\t@echo '  allnopackageconfig     - New config where package options are answered with no'\n\t@echo\n\t@echo 'Package-specific:'\n\t@echo '  <pkg>                  - Build and install <pkg> and all its dependencies'\n\t@echo '  <pkg>-source           - Only download the source files for <pkg>'\n\t@echo '  <pkg>-extract          - Extract <pkg> sources'\n\t@echo '  <pkg>-patch            - Apply patches to <pkg>'\n\t@echo '  <pkg>-depends          - Build <pkg>'\\''s dependencies'\n\t@echo '  <pkg>-configure        - Build <pkg> up to the configure step'\n\t@echo '  <pkg>-build            - Build <pkg> up to the build step'\n\t@echo '  <pkg>-show-info        - generate info about <pkg>, as a JSON blurb'\n\t@echo '  <pkg>-show-depends     - List packages on which <pkg> depends'\n\t@echo '  <pkg>-show-rdepends    - List packages which have <pkg> as a dependency'\n\t@echo '  <pkg>-show-recursive-depends'\n\t@echo '                         - Recursively list packages on which <pkg> depends'\n\t@echo '  <pkg>-show-recursive-rdepends'\n\t@echo '                         - Recursively list packages which have <pkg> as a dependency'\n\t@echo '  <pkg>-graph-depends    - Generate a graph of <pkg>'\\''s dependencies'\n\t@echo '  <pkg>-graph-rdepends   - Generate a graph of <pkg>'\\''s reverse dependencies'\n\t@echo '  <pkg>-dirclean         - Remove <pkg> build directory'\n\t@echo '  <pkg>-reconfigure      - Restart the build from the configure step'\n\t@echo '  <pkg>-rebuild          - Restart the build from the build step'\n\t@echo '  <pkg>-reinstall        - Restart the build from the install step'\n\t$(foreach p,$(HELP_PACKAGES), \\\n\t\t@echo $(sep) \\\n\t\t@echo '$($(p)_NAME):' $(sep) \\\n\t\t$($(p)_HELP_CMDS)$(sep))\n\t@echo\n\t@echo 'Documentation:'\n\t@echo '  manual                 - build manual in all formats'\n\t@echo '  manual-html            - build manual in HTML'\n\t@echo '  manual-split-html      - build manual in split HTML'\n\t@echo '  manual-pdf             - build manual in PDF'\n\t@echo '  manual-text            - build manual in text'\n\t@echo '  manual-epub            - build manual in ePub'\n\t@echo '  graph-build            - generate graphs of the build times'\n\t@echo '  graph-depends          - generate graph of the dependency tree'\n\t@echo '  graph-size             - generate stats of the filesystem size'\n\t@echo '  list-defconfigs        - list all defconfigs (pre-configured minimal systems)'\n\t@echo\n\t@echo 'Miscellaneous:'\n\t@echo '  source                 - download all sources needed for offline-build'\n\t@echo '  external-deps          - list external packages used'\n\t@echo '  legal-info             - generate info about license compliance'\n\t@echo '  show-info              - generate info about packages, as a JSON blurb'\n\t@echo '  pkg-stats              - generate info about packages as JSON and HTML'\n\t@echo '  missing-cpe            - generate XML snippets for missing CPE identifiers'\n\t@echo '  printvars              - dump internal variables selected with VARS=...'\n\t@echo\n\t@echo '  make V=0|1             - 0 => quiet build (default), 1 => verbose build'\n\t@echo '  make O=dir             - Locate all output files in \"dir\", including .config'\n\t@echo\n\t@echo 'For further details, see README, generate the Buildroot manual, or consult'\n\t@echo 'it on-line at http://buildroot.org/docs.html'\n\t@echo\n\n# List the defconfig files\n# $(1): base directory\n# $(2): br2-external name, empty for bundled\ndefine list-defconfigs\n\t@first=true; \\\n\tfor defconfig in $(1)/configs/*_defconfig; do \\\n\t\t[ -f \"$${defconfig}\" ] || continue; \\\n\t\tif $${first}; then \\\n\t\t\tif [ \"$(2)\" ]; then \\\n\t\t\t\tprintf 'External configs in \"$(call qstrip,$(2))\":\\n'; \\\n\t\t\telse \\\n\t\t\t\tprintf \"Built-in configs:\\n\"; \\\n\t\t\tfi; \\\n\t\t\tfirst=false; \\\n\t\tfi; \\\n\t\tdefconfig=\"$${defconfig##*/}\"; \\\n\t\tprintf \"  %-35s - Build for %s\\n\" \"$${defconfig}\" \"$${defconfig%_defconfig}\"; \\\n\tdone; \\\n\t$${first} || printf \"\\n\"\nendef\n\n# We iterate over BR2_EXTERNAL_NAMES rather than BR2_EXTERNAL_DIRS,\n# because we want to display the name of the br2-external tree.\n.PHONY: list-defconfigs\nlist-defconfigs:\n\t$(call list-defconfigs,$(TOPDIR))\n\t$(foreach name,$(BR2_EXTERNAL_NAMES),\\\n\t\t$(call list-defconfigs,$(BR2_EXTERNAL_$(name)_PATH),\\\n\t\t\t$(BR2_EXTERNAL_$(name)_DESC))$(sep))\n\nrelease: OUT = buildroot-$(BR2_VERSION)\n\n# Create release tarballs. We need to fiddle a bit to add the generated\n# documentation to the git output\nrelease:\n\tgit archive --format=tar --prefix=$(OUT)/ HEAD > $(OUT).tar\n\t$(MAKE) O=$(OUT) manual-html manual-text manual-pdf\n\t$(MAKE) O=$(OUT) distclean\n\ttar rf $(OUT).tar $(OUT)\n\tgzip -9 -c < $(OUT).tar > $(OUT).tar.gz\n\txz -9 -c < $(OUT).tar > $(OUT).tar.xz\n\trm -rf $(OUT) $(OUT).tar\n\nprint-version:\n\t@echo $(BR2_VERSION_FULL)\n\ncheck-flake8:\n\t$(Q)git ls-tree -r --name-only HEAD \\\n\t| xargs file \\\n\t| grep 'Python script' \\\n\t| cut -d':' -f1 \\\n\t| xargs -- python3 -m flake8 --statistics\n\ncheck-package:\n\tfind $(TOPDIR) -type f \\( -name '*.mk' -o -name '*.hash' -o -name 'Config.*' \\) \\\n\t\t-exec ./utils/check-package {} +\n\ninclude docs/manual/manual.mk\n-include $(foreach dir,$(BR2_EXTERNAL_DIRS),$(sort $(wildcard $(dir)/docs/*/*.mk)))\n\n.PHONY: $(noconfig_targets)\n\nendif #umask / $(CURDIR) / $(O)\n"
  },
  {
    "path": "Makefile.legacy",
    "content": "#\n# Makefile.legacy - support for backward compatibility\n#\n# This file contains placeholders to detect backward-compatibility problems.\n# When a buildroot \"API\" feature is being deprecated, a rule should be added\n# here that issues an error when the old feature is used.\n\nifeq ($(BR2_LEGACY),y)\n$(error \"You have legacy configuration in your .config! Please check your configuration.\")\nendif\n\n#\n# Legacy options from 2014.02\n#\n\n# The BUILDROOT_DL_DIR environment variable was renamed by BR2_DL_DIR. We\n# want to detect someone using the old variable, _except_ if also the new\n# variable was set. By the time we get here, however, we no longer have\n# access to the BR2_DL_DIR environment variable (because it has been overridden\n# by the .config inclusion). However, the environment variable (if defined) was\n# saved in DL_DIR, so we can use that.\nifneq ($(BUILDROOT_DL_DIR),)\nifneq ($(BUILDROOT_DL_DIR),$(DL_DIR))\n$(error \"The BUILDROOT_DL_DIR environment variable was renamed to BR2_DL_DIR.\")\nendif\nendif\n\n# If a script is using the deprecated BUILDROOT_CONFIG, make sure it fails.\n# Add some directories in front just in case someone used dirname on it.\nBUILDROOT_CONFIG_FAKE = /tmp/deprecated/The-BUILDROOT_CONFIG-environment-variable-was-renamed-to-BR2_CONFIG\n\n# Similar to above for BUILDROOT_CONFIG, but here we have no .config equivalent.\nifneq ($(BUILDROOT_CONFIG),)\nifneq ($(BUILDROOT_CONFIG),$(BR2_CONFIG))\nifneq ($(BUILDROOT_CONFIG),$(BUILDROOT_CONFIG_FAKE))\n$(error \"The BUILDROOT_CONFIG environment variable was renamed to BR2_CONFIG.\")\nendif\nendif\nendif\n\nBUILDROOT_CONFIG = $(BUILDROOT_CONFIG_FAKE)\nexport BUILDROOT_CONFIG\n\n#\n# Legacy options from 2012.08\n#\n\nhost-pkg-config:\n\t@$(call MESSAGE,host-pkg-config is replaced by host-pkgconf)\n\t@$(call MESSAGE,please update your .mk files)\n\t@false\n.PHONY: host-pkg-config\n\n#\n# Legacy options from 2012.05\n#\nGENTARGETS = $$(error The GENTARGETS macro no longer exists; use $$$$(eval $$$$(generic-package)) or $$$$(eval $$$$(host-generic-package)))\nAUTOTARGETS = $$(error The AUTOTARGETS macro no longer exists; use $$$$(eval $$$$(autotools-package)) or $$$$(eval $$$$(host-autotools-package)))\nCMAKETARGETS = $$(error The CMAKETARGETS macro no longer exists; use $$$$(eval $$$$(cmake-package)) or $$$$(eval $$$$(host-cmake-package)))\n"
  },
  {
    "path": "README.md",
    "content": "# What's thingOS?\n\n**thingOS** is a highly customized [BuildRoot](https://buildroot.uclibc.org) that serves as a base for IoT dedicated operating systems. If you want to turn your Raspberry PI board into something that controls your lights, doors, sprinklers or other devices, by designing your own \"firmware\", thingOS may be a good choice.\n\n# Philosophy\n\n**thingOS** aims to make the development of small dedicated Linux-based OSes an easy task. Deployment, over-the-air updates and backups shouldn't be a pain in the ass. Developers should concentrate on their main goal rather than removing unused packages and services from existing OSes to lighten them up, taking care of network connection reliability or enabling the watchdog.\n\n**thingOS** tries to boot as fast as possible. Whenever something goes wrong, we prefer to reboot the system instead of trying to run complex recovery procedures.\n\n**thingOS** doesn't reinvent the wheel. It uses the amazing infrastructure provided by BuildRoot but comes with customized configurations and init scripts for the supported hardware platforms.\n\n# Features\n\n * support for popular single-board computers (see [Supported Single-board Computers](https://github.com/ccrisan/thingos/wiki/Supported-Single-board-Computers))\n * quick boots (see [Boot Process](https://github.com/ccrisan/thingos/wiki/Boot-Process))\n * read-only partitions to minimize corruption risks (see [Partitions](https://github.com/ccrisan/thingos/wiki/Partitions))\n * simple configuration via text files (see [OS Configuration](https://github.com/ccrisan/thingos/wiki/OS-Configuration))\n * over-the-air \"firmware\" updates (see [Firmware Updates](https://github.com/ccrisan/thingos/wiki/Firmware-Updates))\n * out-of-the box backup and restore mechanism (see [Backup/Restore](https://github.com/ccrisan/thingos/wiki/Backup-Restore))\n * high reliability (see [Reliability](https://github.com/ccrisan/thingos/wiki/Reliability))\n * everything that [BuildRoot](https://buildroot.uclibc.org) has to offer\n\n# Getting Started\n\nJust follow the [Getting Started](https://github.com/ccrisan/thingos/wiki/Getting-Started) guide.\n\n# Supported Boards\n\nHere's a list of [Supported Single-board Computers](https://github.com/ccrisan/thingos/wiki/Supported-Single-board-Computers).\n\n# Documentation\n\nFeel free to browse the [wiki articles](https://github.com/ccrisan/thingos/wiki).\n"
  },
  {
    "path": "arch/Config.in",
    "content": "menu \"Target options\"\n\nconfig BR2_ARCH_IS_64\n\tbool\n\nconfig BR2_KERNEL_64_USERLAND_32\n\tbool\n\nconfig BR2_SOFT_FLOAT\n\tbool\n\nconfig BR2_ARCH_HAS_MMU_MANDATORY\n\tbool\n\nconfig BR2_ARCH_HAS_MMU_OPTIONAL\n\tbool\n\nchoice\n\tprompt \"Target Architecture\"\n\tdefault BR2_i386\n\thelp\n\t  Select the target architecture family to build for.\n\nconfig BR2_arcle\n\tbool \"ARC (little endian)\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  Synopsys' DesignWare ARC Processor Cores are a family of\n\t  32-bit CPUs that can be used from deeply embedded to high\n\t  performance host applications. Little endian.\n\nconfig BR2_arceb\n\tbool \"ARC (big endian)\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  Synopsys' DesignWare ARC Processor Cores are a family of\n\t  32-bit CPUs that can be used from deeply embedded to high\n\t  performance host applications. Big endian.\n\nconfig BR2_arm\n\tbool \"ARM (little endian)\"\n\t# MMU support is set by the subarchitecture file, arch/Config.in.arm\n\thelp\n\t  ARM is a 32-bit reduced instruction set computer (RISC)\n\t  instruction set architecture (ISA) developed by ARM Holdings.\n\t  Little endian.\n\t  http://www.arm.com/\n\t  http://en.wikipedia.org/wiki/ARM\n\nconfig BR2_armeb\n\tbool \"ARM (big endian)\"\n\t# MMU support is set by the subarchitecture file, arch/Config.in.arm\n\thelp\n\t  ARM is a 32-bit reduced instruction set computer (RISC)\n\t  instruction set architecture (ISA) developed by ARM Holdings.\n\t  Big endian.\n\t  http://www.arm.com/\n\t  http://en.wikipedia.org/wiki/ARM\n\nconfig BR2_aarch64\n\tbool \"AArch64 (little endian)\"\n\tselect BR2_ARCH_IS_64\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  Aarch64 is a 64-bit architecture developed by ARM Holdings.\n\t  http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php\n\t  http://en.wikipedia.org/wiki/ARM\n\nconfig BR2_aarch64_be\n\tbool \"AArch64 (big endian)\"\n\tselect BR2_ARCH_IS_64\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  Aarch64 is a 64-bit architecture developed by ARM Holdings.\n\t  http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php\n\t  http://en.wikipedia.org/wiki/ARM\n\nconfig BR2_csky\n\tbool \"csky\"\n\tselect BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_9\n\thelp\n\t  csky is processor IP from china.\n\t  http://www.c-sky.com/\n\t  http://www.github.com/c-sky\n\nconfig BR2_i386\n\tbool \"i386\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  Intel i386 architecture compatible microprocessor\n\t  http://en.wikipedia.org/wiki/I386\n\nconfig BR2_m68k\n\tbool \"m68k\"\n\t# MMU support is set by the subarchitecture file, arch/Config.in.m68k\n\thelp\n\t  Motorola 68000 family microprocessor\n\t  http://en.wikipedia.org/wiki/M68k\n\nconfig BR2_microblazeel\n\tbool \"Microblaze AXI (little endian)\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  Soft processor core designed for Xilinx FPGAs from Xilinx. AXI\n\t  bus based architecture (little endian)\n\t  http://www.xilinx.com\n\t  http://en.wikipedia.org/wiki/Microblaze\n\nconfig BR2_microblazebe\n\tbool \"Microblaze non-AXI (big endian)\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  Soft processor core designed for Xilinx FPGAs from Xilinx. PLB\n\t  bus based architecture (non-AXI, big endian)\n\t  http://www.xilinx.com\n\t  http://en.wikipedia.org/wiki/Microblaze\n\nconfig BR2_mips\n\tbool \"MIPS (big endian)\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  MIPS is a RISC microprocessor from MIPS Technologies. Big\n\t  endian.\n\t  http://www.mips.com/\n\t  http://en.wikipedia.org/wiki/MIPS_Technologies\n\nconfig BR2_mipsel\n\tbool \"MIPS (little endian)\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  MIPS is a RISC microprocessor from MIPS Technologies. Little\n\t  endian.\n\t  http://www.mips.com/\n\t  http://en.wikipedia.org/wiki/MIPS_Technologies\n\nconfig BR2_mips64\n\tbool \"MIPS64 (big endian)\"\n\tselect BR2_ARCH_IS_64\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  MIPS is a RISC microprocessor from MIPS Technologies. Big\n\t  endian.\n\t  http://www.mips.com/\n\t  http://en.wikipedia.org/wiki/MIPS_Technologies\n\nconfig BR2_mips64el\n\tbool \"MIPS64 (little endian)\"\n\tselect BR2_ARCH_IS_64\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  MIPS is a RISC microprocessor from MIPS Technologies. Little\n\t  endian.\n\t  http://www.mips.com/\n\t  http://en.wikipedia.org/wiki/MIPS_Technologies\n\nconfig BR2_nds32\n\tbool \"nds32\"\n\tselect BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  nds32 is a 32-bit architecture developed by Andes Technology.\n\t  https://en.wikipedia.org/wiki/Andes_Technology\n\nconfig BR2_nios2\n\tbool \"Nios II\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  Nios II is a soft core processor from Altera Corporation.\n\t  http://www.altera.com/\n\t  http://en.wikipedia.org/wiki/Nios_II\n\nconfig BR2_or1k\n\tbool \"OpenRISC\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  OpenRISC is a free and open processor for embedded system.\n\t  http://openrisc.io\n\nconfig BR2_powerpc\n\tbool \"PowerPC\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  PowerPC is a RISC architecture created by Apple-IBM-Motorola\n\t  alliance. Big endian.\n\t  http://www.power.org/\n\t  http://en.wikipedia.org/wiki/Powerpc\n\nconfig BR2_powerpc64\n\tbool \"PowerPC64 (big endian)\"\n\tselect BR2_ARCH_IS_64\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  PowerPC is a RISC architecture created by Apple-IBM-Motorola\n\t  alliance. Big endian.\n\t  http://www.power.org/\n\t  http://en.wikipedia.org/wiki/Powerpc\n\nconfig BR2_powerpc64le\n\tbool \"PowerPC64 (little endian)\"\n\tselect BR2_ARCH_IS_64\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  PowerPC is a RISC architecture created by Apple-IBM-Motorola\n\t  alliance. Little endian.\n\t  http://www.power.org/\n\t  http://en.wikipedia.org/wiki/Powerpc\n\nconfig BR2_riscv\n\tbool \"RISCV\"\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\n\thelp\n\t  RISC-V is an open, free Instruction Set Architecture created\n\t  by the UC Berkeley Architecture Research group and supported\n\t  and promoted by RISC-V Foundation.\n\t  https://riscv.org/\n\t  https://en.wikipedia.org/wiki/RISC-V\n\nconfig BR2_s390x\n\tbool \"s390x\"\n\tselect BR2_ARCH_IS_64\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  s390x is a big-endian architecture made by IBM.\n\t  http://www.ibm.com/\n\t  http://en.wikipedia.org/wiki/IBM_System/390\n\nconfig BR2_sh\n\tbool \"SuperH\"\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\thelp\n\t  SuperH (or SH) is a 32-bit reduced instruction set computer\n\t  (RISC) instruction set architecture (ISA) developed by\n\t  Hitachi.\n\t  http://www.hitachi.com/\n\t  http://en.wikipedia.org/wiki/SuperH\n\nconfig BR2_sparc\n\tbool \"SPARC\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  SPARC (from Scalable Processor Architecture) is a RISC\n\t  instruction set architecture (ISA) developed by Sun\n\t  Microsystems.\n\t  http://www.oracle.com/sun\n\t  http://en.wikipedia.org/wiki/Sparc\n\nconfig BR2_sparc64\n\tbool \"SPARC64\"\n\tselect BR2_ARCH_IS_64\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  SPARC (from Scalable Processor Architecture) is a RISC\n\t  instruction set architecture (ISA) developed by Sun\n\t  Microsystems.\n\t  http://www.oracle.com/sun\n\t  http://en.wikipedia.org/wiki/Sparc\n\nconfig BR2_x86_64\n\tbool \"x86_64\"\n\tselect BR2_ARCH_IS_64\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  x86-64 is an extension of the x86 instruction set (Intel i386\n\t  architecture compatible microprocessor).\n\t  http://en.wikipedia.org/wiki/X86_64\n\nconfig BR2_xtensa\n\tbool \"Xtensa\"\n\t# MMU support is set by the subarchitecture file, arch/Config.in.xtensa\n\thelp\n\t  Xtensa is a Tensilica processor IP architecture.\n\t  http://en.wikipedia.org/wiki/Xtensa\n\t  http://www.tensilica.com/\n\nendchoice\n\n# For some architectures or specific cores, our internal toolchain\n# backend is not suitable (like, missing support in upstream gcc, or\n# no ChipCo fork exists...)\nconfig BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT\n\tbool\n\nconfig BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT\n\tbool\n\tdefault y if !BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT\n\n# The following symbols are selected by the individual\n# Config.in.$ARCH files\nconfig BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8\n\tbool\n\nconfig BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9\n\tbool\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8\n\nconfig BR2_ARCH_NEEDS_GCC_AT_LEAST_5\n\tbool\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9\n\nconfig BR2_ARCH_NEEDS_GCC_AT_LEAST_6\n\tbool\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\n\nconfig BR2_ARCH_NEEDS_GCC_AT_LEAST_7\n\tbool\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_6\n\nconfig BR2_ARCH_NEEDS_GCC_AT_LEAST_8\n\tbool\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\n\nconfig BR2_ARCH_NEEDS_GCC_AT_LEAST_9\n\tbool\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_8\n\nconfig BR2_ARCH_NEEDS_GCC_AT_LEAST_10\n\tbool\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_9\n\nconfig BR2_ARCH_NEEDS_GCC_AT_LEAST_11\n\tbool\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_10\n\n# The following string values are defined by the individual\n# Config.in.$ARCH files\nconfig BR2_ARCH\n\tstring\n\nconfig BR2_ENDIAN\n\tstring\n\nconfig BR2_GCC_TARGET_ARCH\n\tstring\n\nconfig BR2_GCC_TARGET_ABI\n\tstring\n\nconfig BR2_GCC_TARGET_NAN\n\tstring\n\nconfig BR2_GCC_TARGET_FP32_MODE\n\tstring\n\nconfig BR2_GCC_TARGET_CPU\n\tstring\n\n# The value of this option will be passed as --with-fpu=<value> when\n# building gcc (internal backend) or -mfpu=<value> in the toolchain\n# wrapper (external toolchain)\nconfig BR2_GCC_TARGET_FPU\n\tstring\n\n# The value of this option will be passed as --with-float=<value> when\n# building gcc (internal backend) or -mfloat-abi=<value> in the toolchain\n# wrapper (external toolchain)\nconfig BR2_GCC_TARGET_FLOAT_ABI\n\tstring\n\n# The value of this option will be passed as --with-mode=<value> when\n# building gcc (internal backend) or -m<value> in the toolchain\n# wrapper (external toolchain)\nconfig BR2_GCC_TARGET_MODE\n\tstring\n\n# Must be selected by binary formats that support shared libraries.\nconfig BR2_BINFMT_SUPPORTS_SHARED\n\tbool\n\n# Must match the name of the architecture from readelf point of view,\n# i.e the \"Machine:\" field of readelf output. See get_machine_name()\n# in binutils/readelf.c for the list of possible values.\nconfig BR2_READELF_ARCH_NAME\n\tstring\n\n# Set up target binary format\nchoice\n\tprompt \"Target Binary Format\"\n\tdefault BR2_BINFMT_ELF if BR2_USE_MMU\n\tdefault BR2_BINFMT_FLAT\n\nconfig BR2_BINFMT_ELF\n\tbool \"ELF\"\n\tdepends on BR2_USE_MMU\n\tselect BR2_BINFMT_SUPPORTS_SHARED\n\thelp\n\t  ELF (Executable and Linkable Format) is a format for libraries\n\t  and executables used across different architectures and\n\t  operating systems.\n\nconfig BR2_BINFMT_FLAT\n\tbool \"FLAT\"\n\tdepends on !BR2_USE_MMU\n\thelp\n\t  FLAT binary is a relatively simple and lightweight executable\n\t  format based on the original a.out format. It is widely used\n\t  in environment where no MMU is available.\n\nendchoice\n\n# Set up flat binary type\nchoice\n\tprompt \"FLAT Binary type\"\n\tdefault BR2_BINFMT_FLAT_ONE\n\tdepends on BR2_BINFMT_FLAT\n\nconfig BR2_BINFMT_FLAT_ONE\n\tbool \"One memory region\"\n\thelp\n\t  All segments are linked into one memory region.\n\nconfig BR2_BINFMT_FLAT_SHARED\n\tbool \"Shared binary\"\n\tdepends on BR2_m68k\n\t# Even though this really generates shared binaries, there is no libdl\n\t# and dlopen() cannot be used. So packages that require shared\n\t# libraries cannot be built. Therefore, we don't select\n\t# BR2_BINFMT_SUPPORTS_SHARED and therefore force BR2_STATIC_LIBS.\n\t# Although this adds -static to the compilation, that's not a problem\n\t# because the -mid-shared-library option overrides it.\n\thelp\n\t  Allow to load and link indiviual FLAT binaries at run time.\n\nendchoice\n\nif BR2_arcle || BR2_arceb\nsource \"arch/Config.in.arc\"\nendif\n\nif BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be\nsource \"arch/Config.in.arm\"\nendif\n\nif BR2_csky\nsource \"arch/Config.in.csky\"\nendif\n\nif BR2_m68k\nsource \"arch/Config.in.m68k\"\nendif\n\nif BR2_microblazeel || BR2_microblazebe\nsource \"arch/Config.in.microblaze\"\nendif\n\nif BR2_mips || BR2_mips64 || BR2_mipsel || BR2_mips64el\nsource \"arch/Config.in.mips\"\nendif\n\nif BR2_nds32\nsource \"arch/Config.in.nds32\"\nendif\n\nif BR2_nios2\nsource \"arch/Config.in.nios2\"\nendif\n\nif BR2_or1k\nsource \"arch/Config.in.or1k\"\nendif\n\nif BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\nsource \"arch/Config.in.powerpc\"\nendif\n\nif BR2_riscv\nsource \"arch/Config.in.riscv\"\nendif\n\nif BR2_s390x\nsource \"arch/Config.in.s390x\"\nendif\n\nif BR2_sh\nsource \"arch/Config.in.sh\"\nendif\n\nif BR2_sparc || BR2_sparc64\nsource \"arch/Config.in.sparc\"\nendif\n\nif BR2_i386 || BR2_x86_64\nsource \"arch/Config.in.x86\"\nendif\n\nif BR2_xtensa\nsource \"arch/Config.in.xtensa\"\nendif\n\nendmenu # Target options\n"
  },
  {
    "path": "arch/Config.in.arc",
    "content": "choice\n\tprompt \"Target CPU\"\n\tdefault BR2_arc770d\n\tdepends on BR2_arc\n\thelp\n\t    Specific CPU to use\n\nconfig BR2_arc750d\n\tbool \"ARC 750D\"\n\nconfig BR2_arc770d\n\tbool \"ARC 770D\"\n\nconfig BR2_archs38\n\tbool \"ARC HS38\"\n\thelp\n\t  Generic ARC HS capable of running Linux, i.e. with MMU,\n\t  caches and 32-bit multiplier. Also it corresponds to the\n\t  default configuration in older GNU toolchain versions.\n\nconfig BR2_archs38_64mpy\n\tbool \"ARC HS38 with 64-bit mpy\"\n\thelp\n\t  Fully featured ARC HS capable of running Linux, i.e. with\n\t  MMU, caches and 64-bit multiplier.\n\n\t  If you're not sure which version of ARC HS core you build\n\t  for use this one.\n\nconfig BR2_archs38_full\n\tbool \"ARC HS38 with Quad MAC & FPU\"\n\thelp\n\t  Fully featured ARC HS with additional support for\n\t   - Dual- and quad multiply and MC oprations\n\t   - Double-precision FPU\n\n\t  It corresponds to \"hs38_slc_full\" ARC HS template in\n\t  ARChitect.\n\nconfig BR2_archs4x_rel31\n\tbool \"ARC HS48 rel 31\"\n\thelp\n\t   Build for HS48 release 3.1\n\nconfig BR2_archs4x\n\tbool \"ARC HS48\"\n\thelp\n\t   Latest release of HS48 processor\n\t   - Dual and Quad multiply and MAC operations\n\t   - Double-precision FPU\n\nendchoice\n\n# Choice of atomic instructions presence\nconfig BR2_ARC_ATOMIC_EXT\n\tbool \"Atomic extension (LLOCK/SCOND instructions)\"\n\tdefault y if BR2_arc770d\n\tdefault y if BR2_archs38 || BR2_archs38_64mpy || BR2_archs38_full\n\tdefault y if BR2_archs4x_rel31 || BR2_archs4x\n\nconfig BR2_ARCH\n\tdefault \"arc\"\tif BR2_arcle\n\tdefault \"arceb\"\tif BR2_arceb\n\nconfig BR2_arc\n\tbool\n\tdefault y if BR2_arcle || BR2_arceb\n\nconfig BR2_ENDIAN\n\tdefault \"LITTLE\" if BR2_arcle\n\tdefault \"BIG\"\t if BR2_arceb\n\nconfig BR2_GCC_TARGET_CPU\n\tdefault \"arc700\" if BR2_arc750d\n\tdefault \"arc700\" if BR2_arc770d\n\tdefault \"archs\"\t if BR2_archs38\n\tdefault \"hs38\"\t if BR2_archs38_64mpy\n\tdefault \"hs38_linux\"\t if BR2_archs38_full\n\tdefault \"hs4x_rel31\"\t if BR2_archs4x_rel31\n\tdefault \"hs4x\"\t if BR2_archs4x\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"ARCompact\"\tif BR2_arc750d || BR2_arc770d\n\tdefault \"ARCv2\"\t\tif BR2_archs38 || BR2_archs38_64mpy || BR2_archs38_full\n\tdefault \"ARCv2\"\t\tif BR2_archs4x_rel31 || BR2_archs4x\n\nchoice\n\tprompt \"MMU Page Size\"\n\tdefault BR2_ARC_PAGE_SIZE_8K\n\thelp\n\t  MMU starting from version 3 (found in ARC 770) and now\n\t  version 4 (found in ARC HS38) allows the selection of the\n\t  page size during ASIC design creation.\n\n\t  The following options are available for MMU v3 and v4: 4kB,\n\t  8kB and 16 kB.\n\n\t  The default is 8 kB (that really matches the only page size\n\t  in MMU v2).  It is important to build a toolchain with page\n\t  size matching the hardware configuration. Otherwise\n\t  user-space applications will fail at runtime.\n\nconfig BR2_ARC_PAGE_SIZE_4K\n\tbool \"4KB\"\n\tdepends on !BR2_arc750d\n\nconfig BR2_ARC_PAGE_SIZE_8K\n\tbool \"8KB\"\n\thelp\n\t  This is the one and only option available for MMUv2 and\n\t  default value for MMU v3 and v4.\n\nconfig BR2_ARC_PAGE_SIZE_16K\n\tbool \"16KB\"\n\tdepends on !BR2_arc750d\n\nendchoice\n\nconfig BR2_ARC_PAGE_SIZE\n\tstring\n\tdefault \"4K\" if BR2_ARC_PAGE_SIZE_4K\n\tdefault \"8K\" if BR2_ARC_PAGE_SIZE_8K\n\tdefault \"16K\" if BR2_ARC_PAGE_SIZE_16K\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.arm",
    "content": "# arm cpu features\nconfig BR2_ARM_CPU_HAS_NEON\n\tbool\n\n# for some cores, NEON support is optional\nconfig BR2_ARM_CPU_MAYBE_HAS_NEON\n\tbool\n\n# For some cores, the FPU is optional\nconfig BR2_ARM_CPU_MAYBE_HAS_FPU\n\tbool\n\nconfig BR2_ARM_CPU_HAS_FPU\n\tbool\n\n# for some cores, VFPv2 is optional\nconfig BR2_ARM_CPU_MAYBE_HAS_VFPV2\n\tbool\n\tselect BR2_ARM_CPU_MAYBE_HAS_FPU\n\nconfig BR2_ARM_CPU_HAS_VFPV2\n\tbool\n\tselect BR2_ARM_CPU_HAS_FPU\n\n# for some cores, VFPv3 is optional\nconfig BR2_ARM_CPU_MAYBE_HAS_VFPV3\n\tbool\n\tselect BR2_ARM_CPU_MAYBE_HAS_VFPV2\n\nconfig BR2_ARM_CPU_HAS_VFPV3\n\tbool\n\tselect BR2_ARM_CPU_HAS_VFPV2\n\n# for some cores, VFPv4 is optional\nconfig BR2_ARM_CPU_MAYBE_HAS_VFPV4\n\tbool\n\tselect BR2_ARM_CPU_MAYBE_HAS_VFPV3\n\nconfig BR2_ARM_CPU_HAS_VFPV4\n\tbool\n\tselect BR2_ARM_CPU_HAS_VFPV3\n\n# FPv4 is always optional\nconfig BR2_ARM_CPU_MAYBE_HAS_FPV4\n\tbool\n\tselect BR2_ARM_CPU_MAYBE_HAS_FPU\n\nconfig BR2_ARM_CPU_HAS_FPV4\n\tbool\n\tselect BR2_ARM_CPU_HAS_FPU\n\n# FPv5 is always optional\nconfig BR2_ARM_CPU_MAYBE_HAS_FPV5\n\tbool\n\tselect BR2_ARM_CPU_MAYBE_HAS_FPV4\n\nconfig BR2_ARM_CPU_HAS_FPV5\n\tbool\n\tselect BR2_ARM_CPU_HAS_FPV4\n\nconfig BR2_ARM_CPU_HAS_FP_ARMV8\n\tbool\n\tselect BR2_ARM_CPU_HAS_VFPV4\n\nconfig BR2_ARM_CPU_HAS_ARM\n\tbool\n\nconfig BR2_ARM_CPU_HAS_THUMB\n\tbool\n\nconfig BR2_ARM_CPU_HAS_THUMB2\n\tbool\n\nconfig BR2_ARM_CPU_ARMV4\n\tbool\n\nconfig BR2_ARM_CPU_ARMV5\n\tbool\n\nconfig BR2_ARM_CPU_ARMV6\n\tbool\n\nconfig BR2_ARM_CPU_ARMV7A\n\tbool\n\nconfig BR2_ARM_CPU_ARMV7M\n\tbool\n\nconfig BR2_ARM_CPU_ARMV8A\n\tbool\n\nchoice\n\tprompt \"Target Architecture Variant\"\n\tdefault BR2_cortex_a53 if BR2_ARCH_IS_64\n\tdefault BR2_arm926t\n\thelp\n\t  Specific CPU variant to use\n\nif !BR2_ARCH_IS_64\ncomment \"armv4 cores\"\nconfig BR2_arm920t\n\tbool \"arm920t\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_THUMB\n\tselect BR2_ARM_CPU_ARMV4\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_arm922t\n\tbool \"arm922t\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_THUMB\n\tselect BR2_ARM_CPU_ARMV4\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_fa526\n\tbool \"fa526/626\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_ARMV4\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_strongarm\n\tbool \"strongarm sa110/sa1100\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_ARMV4\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\ncomment \"armv5 cores\"\nconfig BR2_arm926t\n\tbool \"arm926t\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_MAYBE_HAS_VFPV2\n\tselect BR2_ARM_CPU_HAS_THUMB\n\tselect BR2_ARM_CPU_ARMV5\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_iwmmxt\n\tbool \"iwmmxt\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_ARMV5\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_xscale\n\tbool \"xscale\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_THUMB\n\tselect BR2_ARM_CPU_ARMV5\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\ncomment \"armv6 cores\"\nconfig BR2_arm1136j_s\n\tbool \"arm1136j-s\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_THUMB\n\tselect BR2_ARM_CPU_ARMV6\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_arm1136jf_s\n\tbool \"arm1136jf-s\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_VFPV2\n\tselect BR2_ARM_CPU_HAS_THUMB\n\tselect BR2_ARM_CPU_ARMV6\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_arm1176jz_s\n\tbool \"arm1176jz-s\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_THUMB\n\tselect BR2_ARM_CPU_ARMV6\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_arm1176jzf_s\n\tbool \"arm1176jzf-s\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_VFPV2\n\tselect BR2_ARM_CPU_HAS_THUMB\n\tselect BR2_ARM_CPU_ARMV6\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_arm11mpcore\n\tbool \"mpcore\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_MAYBE_HAS_VFPV2\n\tselect BR2_ARM_CPU_HAS_THUMB\n\tselect BR2_ARM_CPU_ARMV6\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\ncomment \"armv7a cores\"\nconfig BR2_cortex_a5\n\tbool \"cortex-A5\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_MAYBE_HAS_NEON\n\tselect BR2_ARM_CPU_MAYBE_HAS_VFPV4\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_ARMV7A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_cortex_a7\n\tbool \"cortex-A7\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_NEON\n\tselect BR2_ARM_CPU_HAS_VFPV4\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_ARMV7A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_cortex_a8\n\tbool \"cortex-A8\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_NEON\n\tselect BR2_ARM_CPU_HAS_VFPV3\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_ARMV7A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_cortex_a9\n\tbool \"cortex-A9\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_MAYBE_HAS_NEON\n\tselect BR2_ARM_CPU_MAYBE_HAS_VFPV3\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_ARMV7A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_cortex_a12\n\tbool \"cortex-A12\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_NEON\n\tselect BR2_ARM_CPU_HAS_VFPV4\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_ARMV7A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_cortex_a15\n\tbool \"cortex-A15\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_NEON\n\tselect BR2_ARM_CPU_HAS_VFPV4\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_ARMV7A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_cortex_a15_a7\n\tbool \"cortex-A15/A7 big.LITTLE\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_NEON\n\tselect BR2_ARM_CPU_HAS_VFPV4\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_ARMV7A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9\nconfig BR2_cortex_a17\n\tbool \"cortex-A17\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_NEON\n\tselect BR2_ARM_CPU_HAS_VFPV4\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_ARMV7A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\nconfig BR2_cortex_a17_a7\n\tbool \"cortex-A17/A7 big.LITTLE\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_NEON\n\tselect BR2_ARM_CPU_HAS_VFPV4\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_ARMV7A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\nconfig BR2_pj4\n\tbool \"pj4\"\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_VFPV3\n\tselect BR2_ARM_CPU_ARMV7A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\ncomment \"armv7m cores\"\nconfig BR2_cortex_m3\n\tbool \"cortex-M3\"\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_ARMV7M\nconfig BR2_cortex_m4\n\tbool \"cortex-M4\"\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_MAYBE_HAS_FPV4\n\tselect BR2_ARM_CPU_ARMV7M\nconfig BR2_cortex_m7\n\tbool \"cortex-M7\"\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_MAYBE_HAS_FPV5\n\tselect BR2_ARM_CPU_ARMV7M\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\nendif # !BR2_ARCH_IS_64\n\ncomment \"armv8 cores\"\nconfig BR2_cortex_a32\n\tbool \"cortex-A32\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_ARM\n\tselect BR2_ARM_CPU_HAS_NEON\n\tselect BR2_ARM_CPU_HAS_THUMB2\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_6\nconfig BR2_cortex_a35\n\tbool \"cortex-A35\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_6\nconfig BR2_cortex_a53\n\tbool \"cortex-A53\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_cortex_a57\n\tbool \"cortex-A57\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\nconfig BR2_cortex_a57_a53\n\tbool \"cortex-A57/A53 big.LITTLE\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_6\nconfig BR2_cortex_a72\n\tbool \"cortex-A72\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\nconfig BR2_cortex_a72_a53\n\tbool \"cortex-A72/A53 big.LITTLE\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_6\nconfig BR2_cortex_a73\n\tbool \"cortex-A73\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\nconfig BR2_cortex_a73_a35\n\tbool \"cortex-A73/A35 big.LITTLE\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\nconfig BR2_cortex_a73_a53\n\tbool \"cortex-A73/A53 big.LITTLE\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\nconfig BR2_emag\n\tbool \"emag\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_9\nconfig BR2_exynos_m1\n\tbool \"exynos-m1\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\nconfig BR2_falkor\n\tbool \"falkor\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\nconfig BR2_phecda\n\tbool \"phecda\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_9\nconfig BR2_qdf24xx\n\tbool \"qdf24xx\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_6\nconfig BR2_thunderx\n\tbool \"thunderx (aka octeontx)\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\nconfig BR2_thunderxt81\n\tbool \"thunderxt81 (aka octeontx81)\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\nconfig BR2_thunderxt83\n\tbool \"thunderxt83 (aka octeontx83)\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\nconfig BR2_thunderxt88\n\tbool \"thunderxt88\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\nconfig BR2_thunderxt88p1\n\tbool \"thunderxt88p1\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\nconfig BR2_xgene1\n\tbool \"xgene1\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\n\ncomment \"armv8.1a cores\"\nconfig BR2_thunderx2t99\n\tbool \"thunderx2t99\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\nconfig BR2_thunderx2t99p1\n\tbool \"thunderx2t99p1\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\nconfig BR2_vulcan\n\tbool \"vulcan\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_7\n\ncomment \"armv8.2a cores\"\nconfig BR2_cortex_a55\n\tbool \"cortex-A55\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_8\nconfig BR2_cortex_a75\n\tbool \"cortex-A75\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_8\nconfig BR2_cortex_a75_a55\n\tbool \"cortex-A75/A55 big.LITTLE\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_8\nconfig BR2_cortex_a76\n\tbool \"cortex-A76\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_9\nconfig BR2_cortex_a76_a55\n\tbool \"cortex-A76/A55 big.LITTLE\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_9\nconfig BR2_neoverse_n1\n\tbool \"neoverse-N1 (aka ares)\"\n\tselect BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_9\nconfig BR2_tsv110\n\tbool \"tsv110\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_9\n\ncomment \"armv8.4a cores\"\nconfig BR2_saphira\n\tbool \"saphira\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARM_CPU_HAS_FP_ARMV8\n\tselect BR2_ARM_CPU_ARMV8A\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_8\nendchoice\n\nconfig BR2_ARM_ENABLE_NEON\n\tbool \"Enable NEON SIMD extension support\"\n\tdepends on BR2_ARM_CPU_MAYBE_HAS_NEON\n\tselect BR2_ARM_CPU_HAS_NEON\n\thelp\n\t  For some CPU cores, the NEON SIMD extension is optional.\n\t  Select this option if you are certain your particular\n\t  implementation has NEON support and you want to use it.\n\nconfig BR2_ARM_ENABLE_VFP\n\tbool \"Enable VFP extension support\"\n\tdepends on BR2_ARM_CPU_MAYBE_HAS_FPU\n\tselect BR2_ARM_CPU_HAS_FPV5 if BR2_ARM_CPU_MAYBE_HAS_FPV5\n\tselect BR2_ARM_CPU_HAS_FPV4 if BR2_ARM_CPU_MAYBE_HAS_FPV4\n\tselect BR2_ARM_CPU_HAS_VFPV4 if BR2_ARM_CPU_MAYBE_HAS_VFPV4\n\tselect BR2_ARM_CPU_HAS_VFPV3 if BR2_ARM_CPU_MAYBE_HAS_VFPV3\n\tselect BR2_ARM_CPU_HAS_VFPV2 if BR2_ARM_CPU_MAYBE_HAS_VFPV2\n\thelp\n\t  For some CPU cores, the VFP extension is optional. Select\n\t  this option if you are certain your particular\n\t  implementation has VFP support and you want to use it.\n\nchoice\n\tprompt \"Target ABI\"\n\tdefault BR2_ARM_EABIHF if BR2_ARM_CPU_HAS_FPU\n\tdefault BR2_ARM_EABI\n\tdepends on BR2_arm || BR2_armeb\n\thelp\n\t  Application Binary Interface to use. The Application Binary\n\t  Interface describes the calling conventions (how arguments\n\t  are passed to functions, how the return value is passed, how\n\t  system calls are made, etc.).\n\nconfig BR2_ARM_EABI\n\tbool \"EABI\"\n\thelp\n\t  The EABI is currently the standard ARM ABI, which is used in\n\t  most projects. It supports both the 'soft' floating point\n\t  model (in which floating point instructions are emulated in\n\t  software) and the 'softfp' floating point model (in which\n\t  floating point instructions are executed using an hardware\n\t  floating point unit, but floating point arguments to\n\t  functions are passed in integer registers).\n\n\t  The 'softfp' floating point model is link-compatible with\n\t  the 'soft' floating point model, i.e you can link a library\n\t  built 'soft' with some other code built 'softfp'.\n\n\t  However, passing the floating point arguments in integer\n\t  registers is a bit inefficient, so if your ARM processor has\n\t  a floating point unit, and you don't have pre-compiled\n\t  'soft' or 'softfp' code, using the EABIhf ABI will provide\n\t  better floating point performances.\n\n\t  If your processor does not have a floating point unit, then\n\t  you must use this ABI.\n\nconfig BR2_ARM_EABIHF\n\tbool \"EABIhf\"\n\tdepends on BR2_ARM_CPU_HAS_FPU\n\thelp\n\t  The EABIhf is an extension of EABI which supports the 'hard'\n\t  floating point model. This model uses the floating point\n\t  unit to execute floating point instructions, and passes\n\t  floating point arguments in floating point registers.\n\n\t  It is more efficient than EABI for floating point related\n\t  workload. However, it does not allow to link against code\n\t  that has been pre-built for the 'soft' or 'softfp' floating\n\t  point models.\n\n\t  If your processor has a floating point unit, and you don't\n\t  depend on existing pre-compiled code, this option is most\n\t  likely the best choice.\n\nendchoice\n\nchoice\n\tprompt \"Floating point strategy\"\n\tdefault BR2_ARM_FPU_FP_ARMV8 if BR2_ARM_CPU_HAS_FP_ARMV8\n\tdefault BR2_ARM_FPU_FPV5D16 if BR2_ARM_CPU_HAS_FPV5\n\tdefault BR2_ARM_FPU_FPV4D16 if BR2_ARM_CPU_HAS_FPV4\n\tdefault BR2_ARM_FPU_VFPV4D16 if BR2_ARM_CPU_HAS_VFPV4\n\tdefault BR2_ARM_FPU_VFPV3D16 if BR2_ARM_CPU_HAS_VFPV3\n\tdefault BR2_ARM_FPU_VFPV2 if BR2_ARM_CPU_HAS_VFPV2\n\tdefault BR2_ARM_SOFT_FLOAT if !BR2_ARM_CPU_HAS_FPU\n\nconfig BR2_ARM_SOFT_FLOAT\n\tbool \"Soft float\"\n\tdepends on BR2_ARM_EABI\n\tselect BR2_SOFT_FLOAT\n\thelp\n\t  This option allows to use software emulated floating\n\t  point. It should be used for ARM cores that do not include a\n\t  Vector Floating Point unit, such as ARMv5 cores (ARM926 for\n\t  example) or certain ARMv6 cores.\n\nconfig BR2_ARM_FPU_VFPV2\n\tbool \"VFPv2\"\n\tdepends on BR2_ARM_CPU_HAS_VFPV2\n\thelp\n\t  This option allows to use the VFPv2 floating point unit, as\n\t  available in some ARMv5 processors (ARM926EJ-S) and some\n\t  ARMv6 processors (ARM1136JF-S, ARM1176JZF-S and ARM11\n\t  MPCore).\n\n\t  Note that this option is also safe to use for newer cores\n\t  such as Cortex-A, because the VFPv3 and VFPv4 units are\n\t  backward compatible with VFPv2.\n\nconfig BR2_ARM_FPU_VFPV3\n\tbool \"VFPv3\"\n\tdepends on BR2_ARM_CPU_HAS_VFPV3\n\thelp\n\t  This option allows to use the VFPv3 floating point unit, as\n\t  available in some ARMv7 processors (Cortex-A{8, 9}). This\n\t  option requires a VFPv3 unit that has 32 double-precision\n\t  registers, which is not necessarily the case in all SOCs\n\t  based on Cortex-A{8, 9}. If you're unsure, use VFPv3-D16\n\t  instead, which is guaranteed to work on all Cortex-A{8, 9}.\n\n\t  Note that this option is also safe to use for newer cores\n\t  that have a VFPv4 unit, because VFPv4 is backward compatible\n\t  with VFPv3. They must of course also have 32\n\t  double-precision registers.\n\nconfig BR2_ARM_FPU_VFPV3D16\n\tbool \"VFPv3-D16\"\n\tdepends on BR2_ARM_CPU_HAS_VFPV3\n\thelp\n\t  This option allows to use the VFPv3 floating point unit, as\n\t  available in some ARMv7 processors (Cortex-A{8, 9}). This\n\t  option requires a VFPv3 unit that has 16 double-precision\n\t  registers, which is generally the case in all SOCs based on\n\t  Cortex-A{8, 9}, even though VFPv3 is technically optional on\n\t  Cortex-A9. This is the safest option for those cores.\n\n\t  Note that this option is also safe to use for newer cores\n\t  such that have a VFPv4 unit, because the VFPv4 is backward\n\t  compatible with VFPv3.\n\nconfig BR2_ARM_FPU_VFPV4\n\tbool \"VFPv4\"\n\tdepends on BR2_ARM_CPU_HAS_VFPV4\n\thelp\n\t  This option allows to use the VFPv4 floating point unit, as\n\t  available in some ARMv7 processors (Cortex-A{5, 7, 12,\n\t  15}). This option requires a VFPv4 unit that has 32\n\t  double-precision registers, which is not necessarily the\n\t  case in all SOCs based on Cortex-A{5, 7, 12, 15}. If you're\n\t  unsure, you should probably use VFPv4-D16 instead.\n\n\t  Note that if you want binary code that works on all ARMv7\n\t  cores, including the earlier Cortex-A{8, 9}, you should\n\t  instead select VFPv3.\n\nconfig BR2_ARM_FPU_VFPV4D16\n\tbool \"VFPv4-D16\"\n\tdepends on BR2_ARM_CPU_HAS_VFPV4\n\thelp\n\t  This option allows to use the VFPv4 floating point unit, as\n\t  available in some ARMv7 processors (Cortex-A{5, 7, 12,\n\t  15}). This option requires a VFPv4 unit that has 16\n\t  double-precision registers, which is always available on\n\t  Cortex-A12 and Cortex-A15, but optional on Cortex-A5 and\n\t  Cortex-A7.\n\n\t  Note that if you want binary code that works on all ARMv7\n\t  cores, including the earlier Cortex-A{8, 9}, you should\n\t  instead select VFPv3-D16.\n\nconfig BR2_ARM_FPU_NEON\n\tbool \"NEON\"\n\tdepends on BR2_ARM_CPU_HAS_NEON\n\thelp\n\t  This option allows to use the NEON SIMD unit, as available\n\t  in some ARMv7 processors, as a floating-point unit. It\n\t  should however be noted that using NEON for floating point\n\t  operations doesn't provide a complete compatibility with the\n\t  IEEE 754.\n\nconfig BR2_ARM_FPU_NEON_VFPV4\n\tbool \"NEON/VFPv4\"\n\tdepends on BR2_ARM_CPU_HAS_VFPV4\n\tdepends on BR2_ARM_CPU_HAS_NEON\n\thelp\n\t  This option allows to use both the VFPv4 and the NEON SIMD\n\t  units for floating point operations. Note that some ARMv7\n\t  cores do not necessarily have VFPv4 and/or NEON support, for\n\t  example on Cortex-A5 and Cortex-A7, support for VFPv4 and\n\t  NEON is optional.\n\nconfig BR2_ARM_FPU_FPV4D16\n\tbool \"FPv4-D16\"\n\tdepends on BR2_ARM_CPU_HAS_FPV4\n\thelp\n\t  This option allows to use the FPv4-SP (single precision)\n\t  floating point unit, as available in some ARMv7m processors\n\t  (Cortex-M4).\n\nconfig BR2_ARM_FPU_FPV5D16\n\tbool \"FPv5-D16\"\n\tdepends on BR2_ARM_CPU_HAS_FPV5\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\n\thelp\n\t  This option allows to use the FPv5-SP (single precision)\n\t  floating point unit, as available in some ARMv7m processors\n\t  (Cortex-M7).\n\n\t  Note that if you want binary code that works on the earlier\n\t  Cortex-M4, you should instead select FPv4-D16.\n\nconfig BR2_ARM_FPU_FPV5DPD16\n\tbool \"FPv5-DP-D16\"\n\tdepends on BR2_ARM_CPU_HAS_FPV5\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\n\thelp\n\t  This option allows to use the FPv5-DP (double precision)\n\t  floating point unit, as available in some ARMv7m processors\n\t  (Cortex-M7).\n\n\t  Note that if you want binary code that works on the earlier\n\t  Cortex-M4, you should instead select FPv4-D16.\n\nconfig BR2_ARM_FPU_FP_ARMV8\n\tbool \"FP-ARMv8\"\n\tdepends on BR2_ARM_CPU_HAS_FP_ARMV8\n\thelp\n\t  This option allows to use the ARMv8 floating point unit.\n\nconfig BR2_ARM_FPU_NEON_FP_ARMV8\n\tbool \"NEON/FP-ARMv8\"\n\tdepends on BR2_ARM_CPU_HAS_FP_ARMV8\n\tdepends on BR2_ARM_CPU_HAS_NEON\n\thelp\n\t  This option allows to use both the ARMv8 floating point unit\n\t  and the NEON SIMD unit for floating point operations.\n\nendchoice\n\nchoice\n\tprompt \"ARM instruction set\"\n\tdepends on BR2_arm || BR2_armeb\n\nconfig BR2_ARM_INSTRUCTIONS_ARM\n\tbool \"ARM\"\n\tdepends on BR2_ARM_CPU_HAS_ARM\n\thelp\n\t  This option instructs the compiler to generate regular ARM\n\t  instructions, that are all 32 bits wide.\n\nconfig BR2_ARM_INSTRUCTIONS_THUMB\n\tbool \"Thumb\"\n\tdepends on BR2_ARM_CPU_HAS_THUMB\n\t# Thumb-1 and VFP are not compatible\n\tdepends on BR2_ARM_SOFT_FLOAT\n\thelp\n\t  This option instructions the compiler to generate Thumb\n\t  instructions, which allows to mix 16 bits instructions and\n\t  32 bits instructions. This generally provides a much smaller\n\t  compiled binary size.\n\ncomment \"Thumb1 is not compatible with VFP\"\n\tdepends on BR2_ARM_CPU_HAS_THUMB\n\tdepends on !BR2_ARM_SOFT_FLOAT\n\nconfig BR2_ARM_INSTRUCTIONS_THUMB2\n\tbool \"Thumb2\"\n\tdepends on BR2_ARM_CPU_HAS_THUMB2\n\thelp\n\t  This option instructions the compiler to generate Thumb2\n\t  instructions, which allows to mix 16 bits instructions and\n\t  32 bits instructions. This generally provides a much smaller\n\t  compiled binary size.\n\nendchoice\n\nconfig BR2_ARCH\n\tdefault \"arm\"\t\tif BR2_arm\n\tdefault \"armeb\"\t\tif BR2_armeb\n\tdefault \"aarch64\"\tif BR2_aarch64\n\tdefault \"aarch64_be\"\tif BR2_aarch64_be\n\nconfig BR2_ENDIAN\n\tdefault \"LITTLE\" if (BR2_arm || BR2_aarch64)\n\tdefault \"BIG\"\t if (BR2_armeb || BR2_aarch64_be)\n\nconfig BR2_GCC_TARGET_CPU\n\t# armv4\n\tdefault \"arm920t\"\tif BR2_arm920t\n\tdefault \"arm922t\"\tif BR2_arm922t\n\tdefault \"fa526\"\t\tif BR2_fa526\n\tdefault \"strongarm\"\tif BR2_strongarm\n\t# armv5\n\tdefault \"arm926ej-s\"\tif BR2_arm926t\n\tdefault \"iwmmxt\"\tif BR2_iwmmxt\n\tdefault \"xscale\"\tif BR2_xscale\n\t# armv6\n\tdefault \"arm1136j-s\"\tif BR2_arm1136j_s\n\tdefault \"arm1136jf-s\"\tif BR2_arm1136jf_s\n\tdefault \"arm1176jz-s\"\tif BR2_arm1176jz_s\n\tdefault \"arm1176jzf-s\"\tif BR2_arm1176jzf_s\n\tdefault \"mpcore\"\tif BR2_arm11mpcore && BR2_ARM_CPU_HAS_VFPV2\n\tdefault \"mpcorenovfp\"\tif BR2_arm11mpcore\n\t# armv7a\n\tdefault \"cortex-a5\"\tif BR2_cortex_a5\n\tdefault \"cortex-a7\"\tif BR2_cortex_a7\n\tdefault \"cortex-a8\"\tif BR2_cortex_a8\n\tdefault \"cortex-a9\"\tif BR2_cortex_a9\n\tdefault \"cortex-a12\"\tif BR2_cortex_a12\n\tdefault \"cortex-a15\"\tif BR2_cortex_a15\n\tdefault \"cortex-a15.cortex-a7\"\tif BR2_cortex_a15_a7\n\tdefault \"cortex-a17\"\tif BR2_cortex_a17\n\tdefault \"cortex-a17.cortex-a7\"\tif BR2_cortex_a17_a7\n\tdefault \"marvell-pj4\"\tif BR2_pj4\n\t# armv7m\n\tdefault \"cortex-m3\"\tif BR2_cortex_m3\n\tdefault \"cortex-m4\"\tif BR2_cortex_m4\n\tdefault \"cortex-m7\"\tif BR2_cortex_m7\n\t# armv8a\n\tdefault \"cortex-a32\"\tif BR2_cortex_a32\n\tdefault \"cortex-a35\"\tif BR2_cortex_a35\n\tdefault \"cortex-a53\"\tif BR2_cortex_a53\n\tdefault \"cortex-a57\"\tif BR2_cortex_a57\n\tdefault \"cortex-a57.cortex-a53\"\tif BR2_cortex_a57_a53\n\tdefault \"cortex-a72\"\tif BR2_cortex_a72\n\tdefault \"cortex-a72.cortex-a53\"\tif BR2_cortex_a72_a53\n\tdefault \"cortex-a73\"\tif BR2_cortex_a73\n\tdefault \"cortex-a73.cortex-a35\"\tif BR2_cortex_a73_a35\n\tdefault \"cortex-a73.cortex-a53\"\tif BR2_cortex_a73_a53\n\tdefault \"emag\"\t\tif BR2_emag\n\tdefault \"exynos-m1\"\tif BR2_exynos_m1\n\tdefault \"falkor\"\tif BR2_falkor\n\tdefault \"phecda\"\tif BR2_phecda\n\tdefault \"qdf24xx\"\tif BR2_qdf24xx\n\tdefault \"thunderx\"\tif BR2_thunderx && !BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tdefault \"octeontx\"\tif BR2_thunderx && BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tdefault \"thunderxt81\"\tif BR2_thunderxt81 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tdefault \"octeontx81\"\tif BR2_thunderxt81 && BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tdefault \"thunderxt83\"\tif BR2_thunderxt83 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tdefault \"octeontx83\"\tif BR2_thunderxt83 && BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tdefault \"thunderxt88\"\tif BR2_thunderxt88\n\tdefault \"thunderxt88p1\"\tif BR2_thunderxt88p1\n\tdefault \"xgene1\"\tif BR2_xgene1\n\t# armv8.1a\n\tdefault \"thunderx2t99\"\tif BR2_thunderx2t99\n\tdefault \"thunderx2t99p1\"\tif BR2_thunderx2t99p1\n\tdefault \"vulcan\"\tif BR2_vulcan\n\t# armv8.2a\n\tdefault \"cortex-a55\"\tif BR2_cortex_a55\n\tdefault \"cortex-a75\"\tif BR2_cortex_a75\n\tdefault \"cortex-a75.cortex-a55\"\tif BR2_cortex_a75_a55\n\tdefault \"cortex-a76\"\tif BR2_cortex_a76\n\tdefault \"cortex-a76.cortex-a55\"\tif BR2_cortex_a76_a55\n\tdefault \"neoverse-n1\"\tif BR2_neoverse_n1\n\tdefault \"tsv110\"\tif BR2_tsv110\n\t# armv8.4a\n\tdefault \"saphira\"\tif BR2_saphira\n\nconfig BR2_GCC_TARGET_ABI\n\tdefault \"aapcs-linux\"\tif BR2_arm || BR2_armeb\n\tdefault \"lp64\"\t\tif BR2_aarch64 || BR2_aarch64_be\n\nconfig BR2_GCC_TARGET_FPU\n\tdefault \"vfp\"\t\tif BR2_ARM_FPU_VFPV2\n\tdefault \"vfpv3\"\t\tif BR2_ARM_FPU_VFPV3\n\tdefault \"vfpv3-d16\"\tif BR2_ARM_FPU_VFPV3D16\n\tdefault \"vfpv4\"\t\tif BR2_ARM_FPU_VFPV4\n\tdefault \"vfpv4-d16\"\tif BR2_ARM_FPU_VFPV4D16\n\tdefault \"neon\"\t\tif BR2_ARM_FPU_NEON\n\tdefault \"neon-vfpv4\"\tif BR2_ARM_FPU_NEON_VFPV4\n\tdefault \"fpv4-sp-d16\"   if BR2_ARM_FPU_FPV4D16\n\tdefault \"fpv5-sp-d16\"\tif BR2_ARM_FPU_FPV5D16\n\tdefault \"fpv5-d16\"\tif BR2_ARM_FPU_FPV5DPD16\n\tdefault \"fp-armv8\"\tif BR2_ARM_FPU_FP_ARMV8\n\tdefault \"neon-fp-armv8\"\tif BR2_ARM_FPU_NEON_FP_ARMV8\n\tdepends on BR2_arm || BR2_armeb\n\nconfig BR2_GCC_TARGET_FLOAT_ABI\n\tdefault \"soft\"\t\tif BR2_ARM_SOFT_FLOAT\n\tdefault \"softfp\"\tif !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABI\n\tdefault \"hard\"\t\tif !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABIHF\n\nconfig BR2_GCC_TARGET_MODE\n\tdefault \"arm\"\t\tif BR2_ARM_INSTRUCTIONS_ARM\n\tdefault \"thumb\"\t\tif BR2_ARM_INSTRUCTIONS_THUMB || BR2_ARM_INSTRUCTIONS_THUMB2\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"ARM\"\t\tif BR2_arm || BR2_armeb\n\tdefault \"AArch64\"\tif BR2_aarch64 || BR2_aarch64_be\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.csky",
    "content": "choice\n\tprompt \"Target Architecture Variant\"\n\tdefault BR2_ck610\n\thelp\n\t  Specific CPU variant to use\n\nconfig BR2_ck610\n\t# Not supported by upstream gcc <= 9, and handled as a special\n\t# exception in package/gcc/Config.in.host\n\tbool \"ck610\"\n\nconfig BR2_ck807\n\tbool \"ck807\"\n\nconfig BR2_ck810\n\tbool \"ck810\"\n\nconfig BR2_ck860\n\tbool \"ck860\"\n\nendchoice\n\nconfig BR2_CSKY_FPU\n\tbool \"Enable FPU coprocessor\"\n\tdepends on BR2_ck810 || BR2_ck807 || BR2_ck860\n\thelp\n\t  You can say N here if your C-SKY CPU doesn't have a\n\t  Floating-Point Coprocessor or if you don't need FPU support\n\t  for your user-space programs.\n\nconfig BR2_CSKY_VDSP\n\tbool \"Enable VDSP enhanced instructions Co-processor\"\n\tdepends on BR2_CSKY_FPU\n\nconfig BR2_GCC_TARGET_FLOAT_ABI\n\tdefault \"soft\"\t\tif !BR2_CSKY_FPU\n\tdefault \"hard\"\t\tif BR2_CSKY_FPU\n\nconfig BR2_ARCH\n\tdefault \"csky\"\n\nconfig BR2_ENDIAN\n\tdefault \"LITTLE\"\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"CSKY\"\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.m68k",
    "content": "config BR2_ARCH\n\tdefault \"m68k\"\t\tif BR2_m68k\n\nconfig BR2_ENDIAN\n\tdefault \"BIG\"\n\n# symbols used to distinguish between m68k and coldfire\n# for gcc multilib\nconfig BR2_m68k_m68k\n\tbool\n\nconfig BR2_m68k_cf\n\tbool\n\n# coldfire variants will be added later\nchoice\n\tprompt \"Target CPU\"\n\tdefault BR2_m68k_68040\n\tdepends on BR2_m68k\n\thelp\n\t  Specific CPU variant to use\n\nconfig BR2_m68k_68040\n\tbool \"68040\"\n\tselect BR2_m68k_m68k\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\nconfig BR2_m68k_cf5208\n\tbool \"5208\"\n\tselect BR2_m68k_cf\n\tselect BR2_SOFT_FLOAT\n\nendchoice\n\nconfig BR2_GCC_TARGET_CPU\n\tdefault \"68040\"\t\tif BR2_m68k_68040\n\tdefault \"5208\"\t\tif BR2_m68k_cf5208\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"MC68000\"\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.microblaze",
    "content": "config BR2_ARCH\n\tdefault \"microblazeel\"  if BR2_microblazeel\n\tdefault \"microblaze\"    if BR2_microblazebe\n\nconfig BR2_ENDIAN\n\tdefault \"LITTLE\" if BR2_microblazeel\n\tdefault \"BIG\"\t if BR2_microblazebe\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"Xilinx MicroBlaze\"\n\nconfig BR2_microblaze\n\tbool\n\tdefault y if BR2_microblazeel || BR2_microblazebe\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.mips",
    "content": "# mips default CPU ISAs\nconfig BR2_MIPS_CPU_MIPS32\n\tbool\n\tselect BR2_MIPS_NAN_LEGACY\nconfig BR2_MIPS_CPU_MIPS32R2\n\tbool\n\tselect BR2_MIPS_NAN_LEGACY\nconfig BR2_MIPS_CPU_MIPS32R3\n\tbool\n\tselect BR2_MIPS_NAN_LEGACY\nconfig BR2_MIPS_CPU_MIPS32R5\n\tbool\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\nconfig BR2_MIPS_CPU_MIPS32R6\n\tbool\n\tselect BR2_MIPS_NAN_2008\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\nconfig BR2_MIPS_CPU_MIPS64\n\tbool\n\tselect BR2_MIPS_NAN_LEGACY\nconfig BR2_MIPS_CPU_MIPS64R2\n\tbool\n\tselect BR2_MIPS_NAN_LEGACY\nconfig BR2_MIPS_CPU_MIPS64R3\n\tbool\n\tselect BR2_MIPS_NAN_LEGACY\nconfig BR2_MIPS_CPU_MIPS64R5\n\tbool\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\nconfig BR2_MIPS_CPU_MIPS64R6\n\tbool\n\tselect BR2_MIPS_NAN_2008\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\n\nchoice\n\tprompt \"Target Architecture Variant\"\n\tdefault BR2_mips_32 if BR2_mips || BR2_mipsel\n\tdefault BR2_mips_64 if BR2_mips64 || BR2_mips64el\n\tdepends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\thelp\n\t  Specific CPU variant to use\n\n\t  64bit capable: 64, 64r2, 64r3, 64r5, 64r6\n\t  non-64bit capable: 32, 32r2, 32r3, 32r5, 32r6\n\nconfig BR2_mips_32\n\tbool \"Generic MIPS32\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS32\nconfig BR2_mips_32r2\n\tbool \"Generic MIPS32R2\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS32R2\nconfig BR2_mips_32r3\n\tbool \"Generic MIPS32R3\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS32R3\nconfig BR2_mips_32r5\n\tbool \"Generic MIPS32R5\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS32R5\nconfig BR2_mips_32r6\n\tbool \"Generic MIPS32R6\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS32R6\nconfig BR2_mips_interaptiv\n\tbool \"interAptiv\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS32R2\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_6\nconfig BR2_mips_m5150\n\tbool \"M5150\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS32R5\n\tselect BR2_MIPS_NAN_2008\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_6\nconfig BR2_mips_m6250\n\tbool \"M6250\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT\n\tselect BR2_MIPS_CPU_MIPS32R6\nconfig BR2_mips_p5600\n\tbool \"P5600\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS32R5\n\tselect BR2_MIPS_NAN_2008\nconfig BR2_mips_xburst\n\tbool \"XBurst\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS32R2\n\thelp\n\t  The Ingenic XBurst is a MIPS32R2 microprocessor. It has a\n\t  bug in the FPU that can generate incorrect results in\n\t  certain cases. The problem shows up when you have several\n\t  fused madd instructions in sequence with dependant\n\t  operands. This requires the -mno-fused-madd compiler option\n\t  to be used in order to prevent emitting these instructions.\n\n\t  See http://www.ingenic.com/en/?xburst.html\nconfig BR2_mips_64\n\tbool \"Generic MIPS64\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS64\nconfig BR2_mips_64r2\n\tbool \"Generic MIPS64R2\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS64R2\nconfig BR2_mips_64r3\n\tbool \"Generic MIPS64R3\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS64R3\nconfig BR2_mips_64r5\n\tbool \"Generic MIPS64R5\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS64R5\nconfig BR2_mips_64r6\n\tbool \"Generic MIPS64R6\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS64R6\nconfig BR2_mips_i6400\n\tbool \"I6400\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS64R6\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_6\nconfig BR2_mips_octeon2\n\tbool \"Octeon II\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS64R2\n\thelp\n\t  Marvell (formerly Cavium Networks) Octeon II CN60XX\n\t  processors.\nconfig BR2_mips_octeon3\n\tbool \"Octeon III\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_MIPS_CPU_MIPS64R3\n\thelp\n\t  Marvell (formerly Cavium Networks) Octeon III CN7XXX\n\t  processors.\nconfig BR2_mips_p6600\n\tbool \"P6600\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT\n\tselect BR2_MIPS_CPU_MIPS64R6\nendchoice\n\nchoice\n\tprompt \"Target ABI\"\n\tdefault BR2_MIPS_NABI32\n\tdepends on BR2_mips64 || BR2_mips64el\n\n\thelp\n\t  Application Binary Interface to use\n\nconfig BR2_MIPS_NABI32\n\tbool \"n32\"\n\tdepends on BR2_ARCH_IS_64\n\tselect BR2_KERNEL_64_USERLAND_32\nconfig BR2_MIPS_NABI64\n\tbool \"n64\"\n\tdepends on BR2_ARCH_IS_64\nendchoice\n\nconfig BR2_MIPS_SOFT_FLOAT\n\tbool \"Use soft-float\"\n\tdefault y\n\tdepends on !BR2_mips_octeon3 # hard-float only\n\tselect BR2_SOFT_FLOAT\n\thelp\n\t  If your target CPU does not have a Floating Point Unit (FPU)\n\t  or a kernel FPU emulator, but you still wish to support\n\t  floating point functions, then everything will need to be\n\t  compiled with soft floating point support (-msoft-float).\n\nchoice\n\tprompt \"FP mode\"\n\tdefault BR2_MIPS_FP32_MODE_XX\n\tdepends on !BR2_ARCH_IS_64 && !BR2_MIPS_SOFT_FLOAT\n\thelp\n\t  MIPS32 supports different FP modes (32,xx,64). Information\n\t  about FP modes can be found here:\n\t  https://sourceware.org/binutils/docs/as/MIPS-Options.html\n\t  https://dmz-portal.imgtec.com/wiki/MIPS_O32_ABI_-_FR0_and_FR1_Interlinking#5._Generating_modeless_code\n\nconfig BR2_MIPS_FP32_MODE_32\n\tbool \"32\"\n\tdepends on !BR2_MIPS_CPU_MIPS32R6\n\nconfig BR2_MIPS_FP32_MODE_XX\n\tbool \"xx\"\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_5\n\nconfig BR2_MIPS_FP32_MODE_64\n\tbool \"64\"\n\tdepends on !BR2_MIPS_CPU_MIPS32\nendchoice\n\nconfig BR2_GCC_TARGET_FP32_MODE\n\tdefault \"32\"\tif BR2_MIPS_FP32_MODE_32\n\tdefault \"xx\"\tif BR2_MIPS_FP32_MODE_XX\n\tdefault \"64\"\tif BR2_MIPS_FP32_MODE_64\n\nconfig BR2_MIPS_NAN_LEGACY\n\tbool\n\nconfig BR2_MIPS_NAN_2008\n\tbool\n\tselect BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9\n\nchoice\n\tprompt \"Target NaN\"\n\tdefault BR2_MIPS_ENABLE_NAN_2008\n\tdepends on BR2_mips_32r5 || BR2_mips_64r5\n\thelp\n\t  MIPS supports two different NaN encodings, legacy and 2008.\n\t  Information about MIPS NaN encodings can be found here:\n\t  https://sourceware.org/binutils/docs/as/MIPS-NaN-Encodings.html\n\nconfig BR2_MIPS_ENABLE_NAN_LEGACY\n\tbool \"legacy\"\n\tselect BR2_MIPS_NAN_LEGACY\n\nconfig BR2_MIPS_ENABLE_NAN_2008\n\tbool \"2008\"\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_MIPS_NAN_2008\nendchoice\n\nconfig BR2_GCC_TARGET_NAN\n\tdefault \"legacy\"\tif BR2_MIPS_NAN_LEGACY\n\tdefault \"2008\"\t\tif BR2_MIPS_NAN_2008\n\nconfig BR2_ARCH\n\tdefault \"mips\"\t\tif BR2_mips\n\tdefault \"mipsel\"\tif BR2_mipsel\n\tdefault \"mips64\"\tif BR2_mips64\n\tdefault \"mips64el\"\tif BR2_mips64el\n\nconfig BR2_ENDIAN\n\tdefault \"LITTLE\"\tif BR2_mipsel || BR2_mips64el\n\tdefault \"BIG\"\t\tif BR2_mips || BR2_mips64\n\nconfig BR2_GCC_TARGET_ARCH\n\tdefault \"mips32\"\tif BR2_mips_32\n\tdefault \"mips32r2\"\tif BR2_mips_32r2\n\tdefault \"mips32r3\"\tif BR2_mips_32r3\n\tdefault \"mips32r5\"\tif BR2_mips_32r5\n\tdefault \"mips32r6\"\tif BR2_mips_32r6\n\tdefault \"interaptiv\"\tif BR2_mips_interaptiv\n\tdefault \"m5101\"\t\tif BR2_mips_m5150\n\tdefault \"m6201\"\t\tif BR2_mips_m6250\n\tdefault \"p5600\"\t\tif BR2_mips_p5600\n\tdefault \"mips32r2\"\tif BR2_mips_xburst\n\tdefault \"mips64\"\tif BR2_mips_64\n\tdefault \"mips64r2\"\tif BR2_mips_64r2\n\tdefault \"mips64r3\"\tif BR2_mips_64r3\n\tdefault \"mips64r5\"\tif BR2_mips_64r5\n\tdefault \"mips64r6\"\tif BR2_mips_64r6\n\tdefault \"i6400\"\t\tif BR2_mips_i6400\n\tdefault \"octeon2\"\tif BR2_mips_octeon2\n\tdefault \"octeon3\"\tif BR2_mips_octeon3\n\tdefault \"p6600\"\t\tif BR2_mips_p6600\n\nconfig BR2_MIPS_OABI32\n\tbool\n\tdefault y\t\tif BR2_mips || BR2_mipsel\n\nconfig BR2_GCC_TARGET_ABI\n\tdefault \"32\"\t\tif BR2_MIPS_OABI32\n\tdefault \"n32\"\t\tif BR2_MIPS_NABI32\n\tdefault \"64\"\t\tif BR2_MIPS_NABI64\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"MIPS R3000\"\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.nds32",
    "content": "config BR2_ARCH\n\tdefault \"nds32le\"\n\nconfig BR2_GCC_TARGET_ARCH\n\tdefault \"v3\"\n\nconfig BR2_ENDIAN\n\tdefault \"LITTLE\"\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"Andes Technology compact code size embedded RISC processor family\"\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.nios2",
    "content": "config BR2_ARCH\n\tdefault \"nios2\"\n\nconfig BR2_ENDIAN\n\tdefault \"LITTLE\"\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"Altera Nios II\"\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.or1k",
    "content": "config BR2_ARCH\n\tdefault \"or1k\"\n\nconfig BR2_ENDIAN\n\tdefault \"BIG\"\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"OpenRISC 1000\"\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.powerpc",
    "content": "config BR2_POWERPC_CPU_HAS_ALTIVEC\n\tbool\n\nconfig BR2_POWERPC_CPU_HAS_SPE\n\tbool\n\nchoice\n\tprompt \"Target Architecture Variant\"\n\tdefault BR2_generic_powerpc\n\thelp\n\t  Specific CPU variant to use\nconfig BR2_generic_powerpc\n\tbool \"generic\"\nconfig BR2_powerpc_401\n\tbool \"401\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_403\n\tbool \"403\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_405\n\tbool \"405\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_405fp\n\tbool \"405 with FPU\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_440\n\tbool \"440\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_440fp\n\tbool \"440 with FPU\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_464\n\tbool \"464\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_464fp\n\tbool \"464 with FPU\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_476\n\tbool \"476\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_476fp\n\tbool \"476 with FPU\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_505\n\tbool \"505\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_602\n\tbool \"602\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_603\n\tbool \"603\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_603e\n\tbool \"603e\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_604\n\tbool \"604\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_604e\n\tbool \"604e\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_620\n\tbool \"620\"\nconfig BR2_powerpc_630\n\tbool \"630\"\nconfig BR2_powerpc_740\n\tbool \"740\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_7400\n\tbool \"7400\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_POWERPC_CPU_HAS_ALTIVEC\nconfig BR2_powerpc_7450\n\tbool \"7450\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_POWERPC_CPU_HAS_ALTIVEC\nconfig BR2_powerpc_750\n\tbool \"750\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_821\n\tbool \"821\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_823\n\tbool \"823\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_860\n\tbool \"860\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_970\n\tbool \"970\"\n\tselect BR2_POWERPC_CPU_HAS_ALTIVEC\nconfig BR2_powerpc_8540\n\tbool \"8540 / e500v1\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_POWERPC_CPU_HAS_SPE\nconfig BR2_powerpc_8548\n\tbool \"8548 / e500v2\"\n\tdepends on !BR2_ARCH_IS_64\n\tselect BR2_POWERPC_CPU_HAS_SPE\nconfig BR2_powerpc_e300c2\n\tbool \"e300c2\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_e300c3\n\tbool \"e300c3\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_e500mc\n\tbool \"e500mc\"\n\tdepends on !BR2_ARCH_IS_64\nconfig BR2_powerpc_e5500\n\tbool \"e5500\"\n\tdepends on !BR2_powerpc64le\nconfig BR2_powerpc_e6500\n\tbool \"e6500\"\n\tdepends on !BR2_powerpc64le\n\tselect BR2_POWERPC_CPU_HAS_ALTIVEC\nconfig BR2_powerpc_power4\n\tbool \"power4\"\nconfig BR2_powerpc_power5\n\tbool \"power5\"\nconfig BR2_powerpc_power6\n\tbool \"power6\"\n\tselect BR2_POWERPC_CPU_HAS_ALTIVEC\nconfig BR2_powerpc_power7\n\tbool \"power7\"\n\tselect BR2_POWERPC_CPU_HAS_ALTIVEC\nconfig BR2_powerpc_power8\n\tbool \"power8\"\n\tselect BR2_POWERPC_CPU_HAS_ALTIVEC\nendchoice\n\nchoice\n\tprompt \"Target ABI\"\n\tdefault BR2_powerpc_SPE if BR2_POWERPC_CPU_HAS_SPE\n\tdefault BR2_powerpc_CLASSIC\n\thelp\n\t  Application Binary Interface to use\n\nconfig BR2_powerpc_CLASSIC\n\tbool \"Classic\"\n\tdepends on !BR2_POWERPC_CPU_HAS_SPE\nconfig BR2_powerpc_SPE\n\tbool \"SPE\"\n\tdepends on BR2_POWERPC_CPU_HAS_SPE\nendchoice\n\nconfig BR2_POWERPC_SOFT_FLOAT\n\tbool \"Use soft-float\"\n\tselect BR2_SOFT_FLOAT\n\thelp\n\t  If your target CPU does not have a Floating Point Unit (FPU)\n\t  or a kernel FPU emulator, but you still wish to support\n\t  floating point functions, then everything will need to be\n\t  compiled with soft floating point support (-msoft-float).\n\nconfig BR2_ARCH\n\tdefault \"powerpc\"\tif BR2_powerpc\n\tdefault \"powerpc64\"\tif BR2_powerpc64\n\tdefault \"powerpc64le\"\tif BR2_powerpc64le\n\nconfig BR2_ENDIAN\n\tdefault \"BIG\"    if BR2_powerpc || BR2_powerpc64\n\tdefault \"LITTLE\" if BR2_powerpc64le\n\nconfig BR2_GCC_TARGET_CPU\n\tdefault \"401\"\t\tif BR2_powerpc_401\n\tdefault \"403\"\t\tif BR2_powerpc_403\n\tdefault \"405\"\t\tif BR2_powerpc_405\n\tdefault \"405fp\"\t\tif BR2_powerpc_405fp\n\tdefault \"440\"\t\tif BR2_powerpc_440\n\tdefault \"440fp\"\t\tif BR2_powerpc_440fp\n\tdefault \"464\"\t\tif BR2_powerpc_464\n\tdefault \"464fp\"\t\tif BR2_powerpc_464fp\n\tdefault \"476\"\t\tif BR2_powerpc_476\n\tdefault \"476fp\"\t\tif BR2_powerpc_476fp\n\tdefault \"505\"\t\tif BR2_powerpc_505\n\tdefault \"602\"\t\tif BR2_powerpc_602\n\tdefault \"603\"\t\tif BR2_powerpc_603\n\tdefault \"603e\"\t\tif BR2_powerpc_603e\n\tdefault \"604\"\t\tif BR2_powerpc_604\n\tdefault \"604e\"\t\tif BR2_powerpc_604e\n\tdefault \"620\"\t\tif BR2_powerpc_620\n\tdefault \"630\"\t\tif BR2_powerpc_630\n\tdefault \"740\"\t\tif BR2_powerpc_740\n\tdefault \"7400\"\t\tif BR2_powerpc_7400\n\tdefault \"7450\"\t\tif BR2_powerpc_7450\n\tdefault \"750\"\t\tif BR2_powerpc_750\n\tdefault \"821\"\t\tif BR2_powerpc_821\n\tdefault \"823\"\t\tif BR2_powerpc_823\n\tdefault \"860\"\t\tif BR2_powerpc_860\n\tdefault \"970\"\t\tif BR2_powerpc_970\n\tdefault \"8540\"\t\tif BR2_powerpc_8540\n\tdefault\t\"8548\"\t\tif BR2_powerpc_8548\n\tdefault \"e300c2\"\tif BR2_powerpc_e300c2\n\tdefault \"e300c3\"\tif BR2_powerpc_e300c3\n\tdefault \"e500mc\"\tif BR2_powerpc_e500mc\n\tdefault \"e5500\"\t\tif BR2_powerpc_e5500\n\tdefault \"e6500\"\t\tif BR2_powerpc_e6500\n\tdefault \"power4\"\tif BR2_powerpc_power4\n\tdefault \"power5\"\tif BR2_powerpc_power5\n\tdefault \"power6\"\tif BR2_powerpc_power6\n\tdefault \"power7\"\tif BR2_powerpc_power7\n\tdefault \"power8\"\tif BR2_powerpc_power8\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"PowerPC\"\tif BR2_powerpc\n\tdefault \"PowerPC64\"\tif BR2_powerpc64 || BR2_powerpc64le\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.riscv",
    "content": "# RISC-V CPU ISA extensions.\n\nconfig BR2_RISCV_ISA_RVI\n\tbool\n\nconfig BR2_RISCV_ISA_RVM\n\tbool\n\nconfig BR2_RISCV_ISA_RVA\n\tbool\n\nconfig BR2_RISCV_ISA_RVF\n\tbool\n\nconfig BR2_RISCV_ISA_RVD\n\tbool\n\nconfig BR2_RISCV_ISA_RVC\n\tbool\n\nchoice\n\tprompt \"Target Architecture Variant\"\n\tdefault BR2_riscv_g\n\nconfig BR2_riscv_g\n\tbool \"General purpose (G)\"\n\tselect BR2_RISCV_ISA_RVI\n\tselect BR2_RISCV_ISA_RVM\n\tselect BR2_RISCV_ISA_RVA\n\tselect BR2_RISCV_ISA_RVF\n\tselect BR2_RISCV_ISA_RVD\n\thelp\n\t  General purpose (G) is equivalent to IMAFD.\n\nconfig BR2_riscv_custom\n\tbool \"Custom architecture\"\n\tselect BR2_RISCV_ISA_RVI\n\tselect BR2_RISCV_ISA_CUSTOM_RVA\n\nendchoice\n\nif BR2_riscv_custom\n\ncomment \"Instruction Set Extensions\"\n\nconfig BR2_RISCV_ISA_CUSTOM_RVM\n\tbool \"Integer Multiplication and Division (M)\"\n\tselect BR2_RISCV_ISA_RVM\n\nconfig BR2_RISCV_ISA_CUSTOM_RVA\n\tbool \"Atomic Instructions (A)\"\n\tselect BR2_RISCV_ISA_RVA\n\nconfig BR2_RISCV_ISA_CUSTOM_RVF\n\tbool \"Single-precision Floating-point (F)\"\n\tselect BR2_RISCV_ISA_RVF\n\nconfig BR2_RISCV_ISA_CUSTOM_RVD\n\tbool \"Double-precision Floating-point (D)\"\n\tdepends on BR2_RISCV_ISA_RVF\n\tselect BR2_RISCV_ISA_RVD\n\nconfig BR2_RISCV_ISA_CUSTOM_RVC\n\tbool \"Compressed Instructions (C)\"\n\tselect BR2_RISCV_ISA_RVC\nendif\n\nchoice\n\tprompt \"Target Architecture Size\"\n\tdefault BR2_RISCV_64\n\nconfig BR2_RISCV_32\n\tbool \"32-bit\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\nconfig BR2_RISCV_64\n\tbool \"64-bit\"\n\tselect BR2_ARCH_IS_64\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\nendchoice\n\nchoice\n\tprompt \"Target ABI\"\n\tdefault BR2_RISCV_ABI_ILP32D if !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD\n\tdefault BR2_RISCV_ABI_ILP32F if !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF\n\tdefault BR2_RISCV_ABI_ILP32  if !BR2_ARCH_IS_64\n\tdefault BR2_RISCV_ABI_LP64D  if BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD\n\tdefault BR2_RISCV_ABI_LP64F  if BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF\n\tdefault BR2_RISCV_ABI_LP64   if BR2_ARCH_IS_64\n\nconfig BR2_RISCV_ABI_ILP32\n\tbool \"ilp32\"\n\tdepends on !BR2_ARCH_IS_64\n\nconfig BR2_RISCV_ABI_ILP32F\n\tbool \"ilp32f\"\n\tdepends on !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF\n\nconfig BR2_RISCV_ABI_ILP32D\n\tbool \"ilp32d\"\n\tdepends on !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD\n\nconfig BR2_RISCV_ABI_LP64\n\tbool \"lp64\"\n\tdepends on BR2_ARCH_IS_64\n\nconfig BR2_RISCV_ABI_LP64F\n\tbool \"lp64f\"\n\tdepends on BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF\n\nconfig BR2_RISCV_ABI_LP64D\n\tbool \"lp64d\"\n\tdepends on BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD\nendchoice\n\nconfig BR2_ARCH\n\tdefault \"riscv32\" if !BR2_ARCH_IS_64\n\tdefault \"riscv64\" if BR2_ARCH_IS_64\n\nconfig BR2_ENDIAN\n\tdefault \"LITTLE\"\n\nconfig BR2_GCC_TARGET_ABI\n\tdefault \"ilp32\" if BR2_RISCV_ABI_ILP32\n\tdefault \"ilp32f\" if BR2_RISCV_ABI_ILP32F\n\tdefault \"ilp32d\" if BR2_RISCV_ABI_ILP32D\n\tdefault \"lp64\" if BR2_RISCV_ABI_LP64\n\tdefault \"lp64f\" if BR2_RISCV_ABI_LP64F\n\tdefault \"lp64d\" if BR2_RISCV_ABI_LP64D\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"RISC-V\"\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.s390x",
    "content": "choice\n\tprompt \"Target Architecture Variant\"\n\thelp\n\t  Specific CPU variant to use\n\nconfig BR2_s390x_z13\n\tbool \"z13\"\n\nconfig BR2_s390x_z14\n\tbool \"z14\"\n\nconfig BR2_s390x_z15\n\tbool \"z15\"\n\nendchoice\n\nconfig BR2_ARCH\n\tdefault \"s390x\"\tif BR2_s390x\n\nconfig BR2_ENDIAN\n\tdefault \"BIG\"\n\nconfig BR2_GCC_TARGET_ARCH\n\tdefault \"arch11\" if BR2_s390x_z13\n\tdefault \"arch12\" if BR2_s390x_z14\n\tdefault \"arch13\" if BR2_s390x_z15\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"IBM S/390\"\tif BR2_s390x\n"
  },
  {
    "path": "arch/Config.in.sh",
    "content": "choice\n\tprompt \"Target Architecture Variant\"\n\tdefault BR2_sh4\n\tdepends on BR2_sh\n\thelp\n\t  Specific CPU variant to use\n\nconfig BR2_sh2a\n\tbool \"sh2a (SH2A big endian)\"\nconfig BR2_sh4\n\tbool \"sh4 (SH4 little endian)\"\nconfig BR2_sh4eb\n\tbool \"sh4eb (SH4 big endian)\"\nconfig BR2_sh4a\n\tbool \"sh4a (SH4A little endian)\"\nconfig BR2_sh4aeb\n\tbool \"sh4aeb (SH4A big endian)\"\nendchoice\n\nconfig BR2_ARCH\n\tdefault \"sh2a\"\t\tif BR2_sh2a\n\tdefault \"sh4\"\t\tif BR2_sh4\n\tdefault \"sh4eb\"\t\tif BR2_sh4eb\n\tdefault \"sh4a\"\t\tif BR2_sh4a\n\tdefault \"sh4aeb\"\tif BR2_sh4aeb\n\nconfig BR2_ENDIAN\n\tdefault \"LITTLE\"\tif BR2_sh4 || BR2_sh4a\n\tdefault \"BIG\"\t\tif BR2_sh2a || BR2_sh4eb || BR2_sh4aeb\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"Renesas / SuperH SH\"\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.sparc",
    "content": "choice\n\tprompt \"Target Architecture Variant\"\n\tdefault BR2_sparc_v8 if BR2_sparc\n\tdefault BR2_sparc_v9 if BR2_sparc64\n\tdepends on BR2_sparc || BR2_sparc64\n\thelp\n\t  Specific CPU variant to use\n\nconfig BR2_sparc_v8\n\tbool \"v8\"\n\tdepends on BR2_sparc\nconfig BR2_sparc_leon3\n\tbool \"leon3\"\n\tdepends on BR2_sparc\nconfig BR2_sparc_v9\n\tbool \"v9\"\n\tdepends on BR2_sparc64\nendchoice\n\nconfig BR2_ARCH\n\tdefault \"sparc\"\tif BR2_sparc\n\tdefault \"sparc64\" if BR2_sparc64\n\nconfig BR2_ENDIAN\n\tdefault \"BIG\"\n\nconfig BR2_GCC_TARGET_CPU\n\tdefault \"leon3\"\t\tif BR2_sparc_leon3\n\tdefault \"v8\"\t\tif BR2_sparc_v8\n\tdefault \"ultrasparc\"\tif BR2_sparc_v9\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"Sparc\"\t\tif BR2_sparc\n\tdefault \"Sparc v9\"\tif BR2_sparc64\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.x86",
    "content": "# i386/x86_64 cpu features\nconfig BR2_X86_CPU_HAS_MMX\n\tbool\nconfig BR2_X86_CPU_HAS_3DNOW\n\tbool\nconfig BR2_X86_CPU_HAS_SSE\n\tbool\nconfig BR2_X86_CPU_HAS_SSE2\n\tbool\nconfig BR2_X86_CPU_HAS_SSE3\n\tbool\nconfig BR2_X86_CPU_HAS_SSSE3\n\tbool\nconfig BR2_X86_CPU_HAS_SSE4\n\tbool\nconfig BR2_X86_CPU_HAS_SSE42\n\tbool\nconfig BR2_X86_CPU_HAS_AVX\n\tbool\nconfig BR2_X86_CPU_HAS_AVX2\n\tbool\n\nchoice\n\tprompt \"Target Architecture Variant\"\n\tdefault BR2_x86_i586 if BR2_i386\n\tdepends on BR2_i386 || BR2_x86_64\n\thelp\n\t  Specific CPU variant to use\n\nconfig BR2_x86_i486\n\tbool \"i486\"\n\tdepends on !BR2_x86_64\nconfig BR2_x86_i586\n\tbool \"i586\"\n\tdepends on !BR2_x86_64\nconfig BR2_x86_x1000\n\tbool \"x1000\"\n\tdepends on !BR2_x86_64\n\thelp\n\t  The Intel X1000 is a Pentium class microprocessor in the\n\t  Quark (sub-Atom) Product Line. The X1000 has a bug on the\n\t  lock prefix requiring that prefix must be stripped at build\n\t  time.\n\n\t  See https://en.wikipedia.org/wiki/Intel_Quark\n\nconfig BR2_x86_i686\n\tbool \"i686\"\n\tdepends on !BR2_x86_64\nconfig BR2_x86_pentiumpro\n\tbool \"pentium pro\"\n\tdepends on !BR2_x86_64\nconfig BR2_x86_pentium_mmx\n\tbool \"pentium MMX\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\nconfig BR2_x86_pentium_m\n\tbool \"pentium mobile\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\nconfig BR2_x86_pentium2\n\tbool \"pentium2\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\nconfig BR2_x86_pentium3\n\tbool \"pentium3\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\nconfig BR2_x86_pentium4\n\tbool \"pentium4\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\nconfig BR2_x86_prescott\n\tbool \"prescott\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\nconfig BR2_x86_nocona\n\tbool \"nocona\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\nconfig BR2_x86_core2\n\tbool \"core2\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\n\tselect BR2_X86_CPU_HAS_SSSE3\nconfig BR2_x86_corei7\n\tbool \"corei7\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\n\tselect BR2_X86_CPU_HAS_SSSE3\n\tselect BR2_X86_CPU_HAS_SSE4\n\tselect BR2_X86_CPU_HAS_SSE42\nconfig BR2_x86_westmere\n\tbool \"westmere\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\n\tselect BR2_X86_CPU_HAS_SSSE3\n\tselect BR2_X86_CPU_HAS_SSE4\n\tselect BR2_X86_CPU_HAS_SSE42\nconfig BR2_x86_corei7_avx\n\tbool \"corei7-avx\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\n\tselect BR2_X86_CPU_HAS_SSSE3\n\tselect BR2_X86_CPU_HAS_SSE4\n\tselect BR2_X86_CPU_HAS_SSE42\n\tselect BR2_X86_CPU_HAS_AVX\nconfig BR2_x86_core_avx2\n\tbool \"core-avx2\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\n\tselect BR2_X86_CPU_HAS_SSSE3\n\tselect BR2_X86_CPU_HAS_SSE4\n\tselect BR2_X86_CPU_HAS_SSE42\n\tselect BR2_X86_CPU_HAS_AVX\n\tselect BR2_X86_CPU_HAS_AVX2\nconfig BR2_x86_atom\n\tbool \"atom\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\n\tselect BR2_X86_CPU_HAS_SSSE3\nconfig BR2_x86_silvermont\n\tbool \"silvermont\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\n\tselect BR2_X86_CPU_HAS_SSSE3\n\tselect BR2_X86_CPU_HAS_SSE4\n\tselect BR2_X86_CPU_HAS_SSE42\nconfig BR2_x86_k6\n\tbool \"k6\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\nconfig BR2_x86_k6_2\n\tbool \"k6-2\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_3DNOW\nconfig BR2_x86_athlon\n\tbool \"athlon\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_3DNOW\nconfig BR2_x86_athlon_4\n\tbool \"athlon-4\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_3DNOW\nconfig BR2_x86_opteron\n\tbool \"opteron\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\nconfig BR2_x86_opteron_sse3\n\tbool \"opteron w/ SSE3\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\nconfig BR2_x86_barcelona\n\tbool \"barcelona\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\nconfig BR2_x86_jaguar\n\tbool \"jaguar\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\n\tselect BR2_X86_CPU_HAS_SSSE3\n\tselect BR2_X86_CPU_HAS_SSE4\n\tselect BR2_X86_CPU_HAS_SSE42\nconfig BR2_x86_steamroller\n\tbool \"steamroller\"\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\n\tselect BR2_X86_CPU_HAS_SSE2\n\tselect BR2_X86_CPU_HAS_SSE3\n\tselect BR2_X86_CPU_HAS_SSSE3\n\tselect BR2_X86_CPU_HAS_SSE4\n\tselect BR2_X86_CPU_HAS_SSE42\nconfig BR2_x86_geode\n\tbool \"geode\"\n\t# Don't include MMX support because there several variant of geode\n\t# processor, some with MMX support, some without.\n\t# See: http://en.wikipedia.org/wiki/Geode_%28processor%29\n\tdepends on !BR2_x86_64\nconfig BR2_x86_c3\n\tbool \"Via/Cyrix C3 (Samuel/Ezra cores)\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_3DNOW\nconfig BR2_x86_c32\n\tbool \"Via C3-2 (Nehemiah cores)\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\n\tselect BR2_X86_CPU_HAS_SSE\nconfig BR2_x86_winchip_c6\n\tbool \"IDT Winchip C6\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\nconfig BR2_x86_winchip2\n\tbool \"IDT Winchip 2\"\n\tdepends on !BR2_x86_64\n\tselect BR2_X86_CPU_HAS_MMX\nendchoice\n\nconfig BR2_ARCH\n\tdefault \"i486\"\t\tif BR2_x86_i486\n\tdefault \"i586\"\t\tif BR2_x86_i586\n\tdefault \"i586\"\t\tif BR2_x86_x1000\n\tdefault \"i586\"\t\tif BR2_x86_pentium_mmx\n\tdefault \"i586\"\t\tif BR2_x86_geode\n\tdefault \"i586\"\t\tif BR2_x86_c3\n\tdefault \"i686\"\t\tif BR2_x86_c32\n\tdefault \"i586\"\t\tif BR2_x86_winchip_c6\n\tdefault \"i586\"\t\tif BR2_x86_winchip2\n\tdefault \"i686\"\t\tif BR2_x86_i686\n\tdefault \"i686\"\t\tif BR2_x86_pentium2\n\tdefault \"i686\"\t\tif BR2_x86_pentium3\n\tdefault \"i686\"\t\tif BR2_x86_pentium4\n\tdefault \"i686\"\t\tif BR2_x86_pentium_m\n\tdefault \"i686\"\t\tif BR2_x86_pentiumpro\n\tdefault \"i686\"\t\tif BR2_x86_prescott\n\tdefault \"i686\"\t\tif BR2_x86_nocona && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_core2 && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_corei7 && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_westmere && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_corei7_avx && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_core_avx2 && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_atom && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_silvermont && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_opteron && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_opteron_sse3 && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_barcelona && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_jaguar && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_steamroller && BR2_i386\n\tdefault \"i686\"\t\tif BR2_x86_k6\n\tdefault \"i686\"\t\tif BR2_x86_k6_2\n\tdefault \"i686\"\t\tif BR2_x86_athlon\n\tdefault \"i686\"\t\tif BR2_x86_athlon_4\n\tdefault \"x86_64\"\tif BR2_x86_64\n\nconfig BR2_ENDIAN\n\tdefault \"LITTLE\"\n\nconfig BR2_GCC_TARGET_ARCH\n\tdefault \"i486\"\t\tif BR2_x86_i486\n\tdefault \"i586\"\t\tif BR2_x86_i586\n\tdefault \"i586\"\t\tif BR2_x86_x1000\n\tdefault \"pentium-mmx\"\tif BR2_x86_pentium_mmx\n\tdefault \"i686\"\t\tif BR2_x86_i686\n\tdefault \"pentiumpro\"\tif BR2_x86_pentiumpro\n\tdefault \"pentium-m\"\tif BR2_x86_pentium_m\n\tdefault \"pentium2\"\tif BR2_x86_pentium2\n\tdefault \"pentium3\"\tif BR2_x86_pentium3\n\tdefault \"pentium4\"\tif BR2_x86_pentium4\n\tdefault \"prescott\"\tif BR2_x86_prescott\n\tdefault \"nocona\"\tif BR2_x86_nocona\n\tdefault \"core2\"\t\tif BR2_x86_core2\n\tdefault \"corei7\"\tif BR2_x86_corei7\n\tdefault \"corei7-avx\"\tif BR2_x86_corei7_avx\n\tdefault \"core-avx2\"\tif BR2_x86_core_avx2\n\tdefault \"atom\"\t\tif BR2_x86_atom\n\tdefault \"westmere\"\tif BR2_x86_westmere\n\tdefault \"silvermont\"\tif BR2_x86_silvermont\n\tdefault \"k8\"\t\tif BR2_x86_opteron\n\tdefault \"k8-sse3\"\tif BR2_x86_opteron_sse3\n\tdefault \"barcelona\"\tif BR2_x86_barcelona\n\tdefault \"btver2\"\tif BR2_x86_jaguar\n\tdefault \"bdver3\"\tif BR2_x86_steamroller\n\tdefault \"k6\"\t\tif BR2_x86_k6\n\tdefault \"k6-2\"\t\tif BR2_x86_k6_2\n\tdefault \"athlon\"\tif BR2_x86_athlon\n\tdefault \"athlon-4\"\tif BR2_x86_athlon_4\n\tdefault \"winchip-c6\"\tif BR2_x86_winchip_c6\n\tdefault \"winchip2\"\tif BR2_x86_winchip2\n\tdefault \"c3\"\t\tif BR2_x86_c3\n\tdefault \"c3-2\"\t\tif BR2_x86_c32\n\tdefault \"geode\"\t\tif BR2_x86_geode\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"Intel 80386\"\t\t\tif BR2_i386\n\tdefault \"Advanced Micro Devices X86-64\" if BR2_x86_64\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/Config.in.xtensa",
    "content": "choice\n\tprompt \"Target Architecture Variant\"\n\tdefault BR2_xtensa_fsf\n\tdepends on BR2_xtensa\n\nconfig BR2_XTENSA_CUSTOM\n\tbool \"Custom Xtensa processor configuration\"\n\tselect BR2_ARCH_HAS_MMU_OPTIONAL\n\nconfig BR2_xtensa_fsf\n\tbool \"fsf - Default configuration\"\n\tselect BR2_ARCH_HAS_MMU_MANDATORY\n\nendchoice\n\nconfig BR2_XTENSA_OVERLAY_FILE\n\tstring \"Overlay file for custom configuration\"\n\tdepends on BR2_XTENSA_CUSTOM\n\thelp\n\t  Enter the path to the overlay tarball for a custom processor\n\t  configuration.\n\n\t  These overlay files are tar packages with updated\n\t  configuration files for various toolchain packages and Xtensa\n\t  processor configurations. They are provided by the processor\n\t  vendor or directly from Tensilica.\n\n\t  The path can be either absolute, or relative to the top\n\t  directory of buildroot.\n\nchoice\n\tprompt \"Target Architecture Endianness\"\n\tdefault BR2_XTENSA_LITTLE_ENDIAN\n\tdepends on BR2_XTENSA_CUSTOM\n\nconfig BR2_XTENSA_LITTLE_ENDIAN\n\tbool \"Little endian\"\n\nconfig BR2_XTENSA_BIG_ENDIAN\n\tbool \"Big endian\"\n\nendchoice\n\nconfig BR2_ENDIAN\n\tdefault \"LITTLE\"\tif BR2_XTENSA_LITTLE_ENDIAN\n\tdefault \"BIG\"\t\tif BR2_xtensa_fsf || BR2_XTENSA_BIG_ENDIAN\n\nconfig BR2_ARCH\n\tdefault \"xtensa\"\tif BR2_xtensa\n\nconfig BR2_READELF_ARCH_NAME\n\tdefault \"Tensilica Xtensa Processor\"\n\n# vim: ft=kconfig\n# -*- mode:kconfig; -*-\n"
  },
  {
    "path": "arch/arch.mk",
    "content": "################################################################################\n#\n# Architecture-specific definitions\n#\n################################################################################\n\n# Allow GCC target configuration settings to be optionally\n# overwritten by architecture specific makefiles.\n\n# Makefiles must use the GCC_TARGET_* variables below instead\n# of the BR2_GCC_TARGET_* versions.\nGCC_TARGET_ARCH := $(call qstrip,$(BR2_GCC_TARGET_ARCH))\nGCC_TARGET_ABI := $(call qstrip,$(BR2_GCC_TARGET_ABI))\nGCC_TARGET_NAN := $(call qstrip,$(BR2_GCC_TARGET_NAN))\nGCC_TARGET_FP32_MODE := $(call qstrip,$(BR2_GCC_TARGET_FP32_MODE))\nGCC_TARGET_CPU := $(call qstrip,$(BR2_GCC_TARGET_CPU))\nGCC_TARGET_FPU := $(call qstrip,$(BR2_GCC_TARGET_FPU))\nGCC_TARGET_FLOAT_ABI := $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI))\nGCC_TARGET_MODE := $(call qstrip,$(BR2_GCC_TARGET_MODE))\n\n# Include any architecture specific makefiles.\n-include $(sort $(wildcard arch/arch.mk.*))\n"
  },
  {
    "path": "arch/arch.mk.arc",
    "content": "ifeq ($(BR2_arc),y)\n\n# -matomic is always required when the ARC core has the atomic extensions\nifeq ($(BR2_ARC_ATOMIC_EXT),y)\nARCH_TOOLCHAIN_WRAPPER_OPTS = -matomic\nendif\n\n# Explicitly set LD's \"max-page-size\" instead of relying on some defaults\nifeq ($(BR2_ARC_PAGE_SIZE_4K),y)\nARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=4096\nelse ifeq ($(BR2_ARC_PAGE_SIZE_8K),y)\nARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=8192\nelse ifeq ($(BR2_ARC_PAGE_SIZE_16K),y)\nARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=16384\nendif\n\nendif\n"
  },
  {
    "path": "arch/arch.mk.csky",
    "content": "#\n# Configure the GCC_TARGET_ARCH variable and append the\n# appropriate C-SKY ISA extensions.\n#\n\nifeq ($(BR2_csky),y)\n\nifeq ($(BR2_ck610),y)\nGCC_TARGET_CPU := ck610\nelse ifeq ($(BR2_ck807),y)\nGCC_TARGET_CPU := ck807\nelse ifeq ($(BR2_ck810),y)\nGCC_TARGET_CPU := ck810\nelse ifeq ($(BR2_ck860),y)\nGCC_TARGET_CPU := ck860\nendif\n\nifeq ($(BR2_CSKY_FPU),y)\nGCC_TARGET_CPU := $(GCC_TARGET_CPU)f\nendif\n\nifeq ($(BR2_CSKY_VDSP),y)\nGCC_TARGET_CPU := $(GCC_TARGET_CPU)v\nendif\n\nendif\n"
  },
  {
    "path": "arch/arch.mk.riscv",
    "content": "#\n# Configure the GCC_TARGET_ARCH variable and append the\n# appropriate RISC-V ISA extensions.\n#\n\nifeq ($(BR2_riscv),y)\n\nifeq ($(BR2_RISCV_64),y)\nGCC_TARGET_ARCH := rv64i\nelse\nGCC_TARGET_ARCH := rv32i\nendif\n\nifeq ($(BR2_RISCV_ISA_RVM),y)\nGCC_TARGET_ARCH := $(GCC_TARGET_ARCH)m\nendif\nifeq ($(BR2_RISCV_ISA_RVA),y)\nGCC_TARGET_ARCH := $(GCC_TARGET_ARCH)a\nendif\nifeq ($(BR2_RISCV_ISA_RVF),y)\nGCC_TARGET_ARCH := $(GCC_TARGET_ARCH)f\nendif\nifeq ($(BR2_RISCV_ISA_RVD),y)\nGCC_TARGET_ARCH := $(GCC_TARGET_ARCH)d\nendif\nifeq ($(BR2_RISCV_ISA_RVC),y)\nGCC_TARGET_ARCH := $(GCC_TARGET_ARCH)c\nendif\n\nendif\n"
  },
  {
    "path": "arch/arch.mk.xtensa",
    "content": "################################################################################\n# This variable can be used by packages that need to extract the overlay.\n#\n# ARCH_XTENSA_OVERLAY_FILE is the path to the overlay tarball; empty if not\n#                          using any overlay\n#\n# Example:\n#   ifneq ($(ARCH_XTENSA_OVERLAY_FILE),)\n#       tar xf $(ARCH_XTENSA_OVERLAY_FILE) -C $(@D) --strip-components=1 gcc\n#   endif\n################################################################################\nBR_ARCH_XTENSA_OVERLAY_FILE = $(call qstrip,$(BR2_XTENSA_OVERLAY_FILE))\nifneq ($(filter http://% https://% ftp://% scp://%,$(BR_ARCH_XTENSA_OVERLAY_FILE)),)\nARCH_XTENSA_OVERLAY_URL = $(BR_ARCH_XTENSA_OVERLAY_FILE)\nARCH_XTENSA_OVERLAY_FILE = $($(PKG)_DL_DIR)/$(notdir $(BR_ARCH_XTENSA_OVERLAY_FILE))\n# Do not check that file, we can't know its hash\nBR_NO_CHECK_HASH_FOR += $(notdir $(ARCH_XTENSA_OVERLAY_URL))\nelse\nARCH_XTENSA_OVERLAY_FILE = $(BR_ARCH_XTENSA_OVERLAY_FILE)\nendif\n\n################################################################################\n# arch-xtensa-overlay-extract -- extract an extensa overlay\n#\n# argument 1 is the path in which to extract\n# argument 2 is the component to extract, one of: gcc, binutils, gdb, linux,\n#            u-boot\n#\n# Example:\n#   $(call arch-xtensa-overlay-extract,/path/to/overlay.tar,$(@D),gcc)\n################################################################################\ndefine arch-xtensa-overlay-extract\n\t$(call suitable-extractor,$(ARCH_XTENSA_OVERLAY_FILE)) \\\n\t\t$(ARCH_XTENSA_OVERLAY_FILE) | \\\n\t$(TAR) --strip-components=1 -C $(1) $(TAR_OPTIONS) - $(2)\nendef\n"
  },
  {
    "path": "board/common/busybox.config",
    "content": "#\n# Automatically generated make config: don't edit\n# Busybox version: 1.34.1\n# Sun Mar 26 19:57:50 2023\n#\nCONFIG_HAVE_DOT_CONFIG=y\n\n#\n# Settings\n#\nCONFIG_DESKTOP=y\n# CONFIG_EXTRA_COMPAT is not set\n# CONFIG_FEDORA_COMPAT is not set\nCONFIG_INCLUDE_SUSv2=y\nCONFIG_LONG_OPTS=y\nCONFIG_SHOW_USAGE=y\nCONFIG_FEATURE_VERBOSE_USAGE=y\n# CONFIG_FEATURE_COMPRESS_USAGE is not set\nCONFIG_LFS=y\n# CONFIG_PAM is not set\nCONFIG_FEATURE_DEVPTS=y\nCONFIG_FEATURE_UTMP=y\nCONFIG_FEATURE_WTMP=y\n# CONFIG_FEATURE_PIDFILE is not set\nCONFIG_PID_FILE_PATH=\"\"\nCONFIG_BUSYBOX=y\nCONFIG_FEATURE_SHOW_SCRIPT=y\nCONFIG_FEATURE_INSTALLER=y\n# CONFIG_INSTALL_NO_USR is not set\nCONFIG_FEATURE_SUID=y\n# CONFIG_FEATURE_SUID_CONFIG is not set\n# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set\n# CONFIG_FEATURE_PREFER_APPLETS is not set\nCONFIG_BUSYBOX_EXEC_PATH=\"/proc/self/exe\"\n# CONFIG_SELINUX is not set\n# CONFIG_FEATURE_CLEAN_UP is not set\nCONFIG_FEATURE_SYSLOG_INFO=y\nCONFIG_FEATURE_SYSLOG=y\n\n#\n# Build Options\n#\n# CONFIG_STATIC is not set\n# CONFIG_PIE is not set\n# CONFIG_NOMMU is not set\n# CONFIG_BUILD_LIBBUSYBOX is not set\n# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set\n# CONFIG_FEATURE_INDIVIDUAL is not set\n# CONFIG_FEATURE_SHARED_BUSYBOX is not set\nCONFIG_CROSS_COMPILER_PREFIX=\"\"\nCONFIG_SYSROOT=\"\"\nCONFIG_EXTRA_CFLAGS=\"\"\nCONFIG_EXTRA_LDFLAGS=\"\"\nCONFIG_EXTRA_LDLIBS=\"\"\n# CONFIG_USE_PORTABLE_CODE is not set\nCONFIG_STACK_OPTIMIZATION_386=y\nCONFIG_STATIC_LIBGCC=y\n\n#\n# Installation Options (\"make install\" behavior)\n#\nCONFIG_INSTALL_APPLET_SYMLINKS=y\n# CONFIG_INSTALL_APPLET_HARDLINKS is not set\n# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set\n# CONFIG_INSTALL_APPLET_DONT is not set\n# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set\n# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set\n# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set\nCONFIG_PREFIX=\"./_install\"\n\n#\n# Debugging Options\n#\n# CONFIG_DEBUG is not set\n# CONFIG_DEBUG_PESSIMIZE is not set\n# CONFIG_DEBUG_SANITIZE is not set\n# CONFIG_UNIT_TEST is not set\n# CONFIG_WERROR is not set\n# CONFIG_WARN_SIMPLE_MSG is not set\nCONFIG_NO_DEBUG_LIB=y\n# CONFIG_DMALLOC is not set\n# CONFIG_EFENCE is not set\n\n#\n# Library Tuning\n#\n# CONFIG_FEATURE_USE_BSS_TAIL is not set\nCONFIG_FLOAT_DURATION=y\nCONFIG_FEATURE_RTMINMAX=y\nCONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS=y\nCONFIG_FEATURE_BUFFERS_USE_MALLOC=y\n# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set\n# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set\nCONFIG_PASSWORD_MINLEN=6\nCONFIG_MD5_SMALL=1\nCONFIG_SHA3_SMALL=1\nCONFIG_FEATURE_FAST_TOP=y\n# CONFIG_FEATURE_ETC_NETWORKS is not set\n# CONFIG_FEATURE_ETC_SERVICES is not set\nCONFIG_FEATURE_EDITING=y\nCONFIG_FEATURE_EDITING_MAX_LEN=1024\nCONFIG_FEATURE_EDITING_VI=y\nCONFIG_FEATURE_EDITING_HISTORY=999\nCONFIG_FEATURE_EDITING_SAVEHISTORY=y\n# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set\nCONFIG_FEATURE_REVERSE_SEARCH=y\nCONFIG_FEATURE_TAB_COMPLETION=y\n# CONFIG_FEATURE_USERNAME_COMPLETION is not set\nCONFIG_FEATURE_EDITING_FANCY_PROMPT=y\nCONFIG_FEATURE_EDITING_WINCH=y\n# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set\n# CONFIG_LOCALE_SUPPORT is not set\n# CONFIG_UNICODE_SUPPORT is not set\n# CONFIG_UNICODE_USING_LOCALE is not set\n# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set\nCONFIG_SUBST_WCHAR=0\nCONFIG_LAST_SUPPORTED_WCHAR=0\n# CONFIG_UNICODE_COMBINING_WCHARS is not set\n# CONFIG_UNICODE_WIDE_WCHARS is not set\n# CONFIG_UNICODE_BIDI_SUPPORT is not set\n# CONFIG_UNICODE_NEUTRAL_TABLE is not set\n# CONFIG_UNICODE_PRESERVE_BROKEN is not set\nCONFIG_FEATURE_NON_POSIX_CP=y\n# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set\nCONFIG_FEATURE_USE_SENDFILE=y\nCONFIG_FEATURE_COPYBUF_KB=4\nCONFIG_FEATURE_SKIP_ROOTFS=y\nCONFIG_MONOTONIC_SYSCALL=y\nCONFIG_IOCTL_HEX2STR_ERROR=y\nCONFIG_FEATURE_HWIB=y\n\n#\n# Applets\n#\n\n#\n# Archival Utilities\n#\n# CONFIG_FEATURE_SEAMLESS_XZ is not set\n# CONFIG_FEATURE_SEAMLESS_LZMA is not set\n# CONFIG_FEATURE_SEAMLESS_BZ2 is not set\n# CONFIG_FEATURE_SEAMLESS_GZ is not set\n# CONFIG_FEATURE_SEAMLESS_Z is not set\n# CONFIG_AR is not set\n# CONFIG_FEATURE_AR_LONG_FILENAMES is not set\n# CONFIG_FEATURE_AR_CREATE is not set\n# CONFIG_UNCOMPRESS is not set\nCONFIG_GUNZIP=y\nCONFIG_ZCAT=y\nCONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y\n# CONFIG_BUNZIP2 is not set\nCONFIG_BZCAT=y\n# CONFIG_UNLZMA is not set\nCONFIG_LZCAT=y\n# CONFIG_LZMA is not set\nCONFIG_UNXZ=y\nCONFIG_XZCAT=y\n# CONFIG_XZ is not set\n# CONFIG_BZIP2 is not set\nCONFIG_BZIP2_SMALL=0\nCONFIG_FEATURE_BZIP2_DECOMPRESS=y\n# CONFIG_CPIO is not set\n# CONFIG_FEATURE_CPIO_O is not set\n# CONFIG_FEATURE_CPIO_P is not set\n# CONFIG_DPKG is not set\n# CONFIG_DPKG_DEB is not set\n# CONFIG_GZIP is not set\n# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set\nCONFIG_GZIP_FAST=0\n# CONFIG_FEATURE_GZIP_LEVELS is not set\nCONFIG_FEATURE_GZIP_DECOMPRESS=y\n# CONFIG_LZOP is not set\nCONFIG_UNLZOP=y\nCONFIG_LZOPCAT=y\n# CONFIG_LZOP_COMPR_HIGH is not set\n# CONFIG_RPM is not set\n# CONFIG_RPM2CPIO is not set\n# CONFIG_TAR is not set\n# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set\n# CONFIG_FEATURE_TAR_CREATE is not set\n# CONFIG_FEATURE_TAR_AUTODETECT is not set\n# CONFIG_FEATURE_TAR_FROM is not set\n# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set\n# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set\n# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set\n# CONFIG_FEATURE_TAR_TO_COMMAND is not set\n# CONFIG_FEATURE_TAR_UNAME_GNAME is not set\n# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set\n# CONFIG_FEATURE_TAR_SELINUX is not set\n# CONFIG_UNZIP is not set\n# CONFIG_FEATURE_UNZIP_CDF is not set\n# CONFIG_FEATURE_UNZIP_BZIP2 is not set\n# CONFIG_FEATURE_UNZIP_LZMA is not set\n# CONFIG_FEATURE_UNZIP_XZ is not set\n# CONFIG_FEATURE_LZMA_FAST is not set\n\n#\n# Coreutils\n#\nCONFIG_BASENAME=y\nCONFIG_CAT=y\nCONFIG_FEATURE_CATN=y\nCONFIG_FEATURE_CATV=y\nCONFIG_CHGRP=y\nCONFIG_CHMOD=y\nCONFIG_CHOWN=y\n# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set\nCONFIG_CHROOT=y\nCONFIG_CKSUM=y\nCONFIG_CRC32=y\n# CONFIG_COMM is not set\nCONFIG_CP=y\n# CONFIG_FEATURE_CP_LONG_OPTIONS is not set\n# CONFIG_FEATURE_CP_REFLINK is not set\nCONFIG_CUT=y\nCONFIG_FEATURE_CUT_REGEX=y\nCONFIG_DATE=y\nCONFIG_FEATURE_DATE_ISOFMT=y\nCONFIG_FEATURE_DATE_NANO=y\nCONFIG_FEATURE_DATE_COMPAT=y\nCONFIG_DD=y\nCONFIG_FEATURE_DD_SIGNAL_HANDLING=y\n# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set\nCONFIG_FEATURE_DD_IBS_OBS=y\nCONFIG_FEATURE_DD_STATUS=y\nCONFIG_DF=y\n# CONFIG_FEATURE_DF_FANCY is not set\nCONFIG_DIRNAME=y\nCONFIG_DOS2UNIX=y\nCONFIG_UNIX2DOS=y\nCONFIG_DU=y\nCONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y\nCONFIG_ECHO=y\nCONFIG_FEATURE_FANCY_ECHO=y\nCONFIG_ENV=y\n# CONFIG_EXPAND is not set\n# CONFIG_UNEXPAND is not set\nCONFIG_EXPR=y\nCONFIG_EXPR_MATH_SUPPORT_64=y\nCONFIG_FACTOR=y\nCONFIG_FALSE=y\nCONFIG_FOLD=y\nCONFIG_HEAD=y\nCONFIG_FEATURE_FANCY_HEAD=y\nCONFIG_HOSTID=y\nCONFIG_ID=y\n# CONFIG_GROUPS is not set\nCONFIG_INSTALL=y\nCONFIG_FEATURE_INSTALL_LONG_OPTIONS=y\nCONFIG_LINK=y\nCONFIG_LN=y\nCONFIG_LOGNAME=y\nCONFIG_LS=y\nCONFIG_FEATURE_LS_FILETYPES=y\nCONFIG_FEATURE_LS_FOLLOWLINKS=y\nCONFIG_FEATURE_LS_RECURSIVE=y\nCONFIG_FEATURE_LS_WIDTH=y\nCONFIG_FEATURE_LS_SORTFILES=y\nCONFIG_FEATURE_LS_TIMESTAMPS=y\nCONFIG_FEATURE_LS_USERNAME=y\nCONFIG_FEATURE_LS_COLOR=y\nCONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y\nCONFIG_MD5SUM=y\nCONFIG_SHA1SUM=y\nCONFIG_SHA256SUM=y\nCONFIG_SHA512SUM=y\nCONFIG_SHA3SUM=y\n\n#\n# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum\n#\nCONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y\nCONFIG_MKDIR=y\nCONFIG_MKFIFO=y\nCONFIG_MKNOD=y\nCONFIG_MKTEMP=y\nCONFIG_MV=y\nCONFIG_NICE=y\nCONFIG_NL=y\nCONFIG_NOHUP=y\nCONFIG_NPROC=y\nCONFIG_OD=y\nCONFIG_PASTE=y\nCONFIG_PRINTENV=y\nCONFIG_PRINTF=y\nCONFIG_PWD=y\nCONFIG_READLINK=y\nCONFIG_FEATURE_READLINK_FOLLOW=y\nCONFIG_REALPATH=y\nCONFIG_RM=y\nCONFIG_RMDIR=y\nCONFIG_SEQ=y\nCONFIG_SHRED=y\n# CONFIG_SHUF is not set\nCONFIG_SLEEP=y\n# CONFIG_FEATURE_FANCY_SLEEP is not set\nCONFIG_SORT=y\nCONFIG_FEATURE_SORT_BIG=y\n# CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set\n# CONFIG_SPLIT is not set\n# CONFIG_FEATURE_SPLIT_FANCY is not set\nCONFIG_STAT=y\nCONFIG_FEATURE_STAT_FORMAT=y\nCONFIG_FEATURE_STAT_FILESYSTEM=y\nCONFIG_STTY=y\n# CONFIG_SUM is not set\nCONFIG_SYNC=y\nCONFIG_FEATURE_SYNC_FANCY=y\n# CONFIG_FSYNC is not set\nCONFIG_TAC=y\nCONFIG_TAIL=y\nCONFIG_FEATURE_FANCY_TAIL=y\nCONFIG_TEE=y\nCONFIG_FEATURE_TEE_USE_BLOCK_IO=y\nCONFIG_TEST=y\nCONFIG_TEST1=y\nCONFIG_TEST2=y\nCONFIG_FEATURE_TEST_64=y\nCONFIG_TIMEOUT=y\nCONFIG_TOUCH=y\nCONFIG_FEATURE_TOUCH_SUSV3=y\nCONFIG_TR=y\nCONFIG_FEATURE_TR_CLASSES=y\nCONFIG_FEATURE_TR_EQUIV=y\nCONFIG_TRUE=y\nCONFIG_TRUNCATE=y\nCONFIG_TTY=y\nCONFIG_UNAME=y\nCONFIG_UNAME_OSNAME=\"GNU/Linux\"\nCONFIG_BB_ARCH=y\nCONFIG_UNIQ=y\nCONFIG_UNLINK=y\nCONFIG_USLEEP=y\nCONFIG_UUDECODE=y\nCONFIG_BASE32=y\n# CONFIG_BASE64 is not set\nCONFIG_UUENCODE=y\nCONFIG_WC=y\n# CONFIG_FEATURE_WC_LARGE is not set\nCONFIG_WHO=y\nCONFIG_W=y\n# CONFIG_USERS is not set\nCONFIG_WHOAMI=y\nCONFIG_YES=y\n\n#\n# Common options\n#\nCONFIG_FEATURE_VERBOSE=y\n\n#\n# Common options for cp and mv\n#\nCONFIG_FEATURE_PRESERVE_HARDLINKS=y\n\n#\n# Common options for df, du, ls\n#\nCONFIG_FEATURE_HUMAN_READABLE=y\n\n#\n# Console Utilities\n#\n# CONFIG_CHVT is not set\nCONFIG_CLEAR=y\n# CONFIG_DEALLOCVT is not set\n# CONFIG_DUMPKMAP is not set\n# CONFIG_FGCONSOLE is not set\n# CONFIG_KBD_MODE is not set\n# CONFIG_LOADFONT is not set\n# CONFIG_SETFONT is not set\n# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set\nCONFIG_DEFAULT_SETFONT_DIR=\"\"\n# CONFIG_FEATURE_LOADFONT_PSF2 is not set\n# CONFIG_FEATURE_LOADFONT_RAW is not set\n# CONFIG_LOADKMAP is not set\nCONFIG_OPENVT=y\nCONFIG_RESET=y\n# CONFIG_RESIZE is not set\n# CONFIG_FEATURE_RESIZE_PRINT is not set\n# CONFIG_SETCONSOLE is not set\n# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set\n# CONFIG_SETKEYCODES is not set\n# CONFIG_SETLOGCONS is not set\n# CONFIG_SHOWKEY is not set\n\n#\n# Debian Utilities\n#\n# CONFIG_PIPE_PROGRESS is not set\nCONFIG_RUN_PARTS=y\nCONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y\nCONFIG_FEATURE_RUN_PARTS_FANCY=y\n# CONFIG_START_STOP_DAEMON is not set\n# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set\n# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set\nCONFIG_WHICH=y\n\n#\n# klibc-utils\n#\n# CONFIG_MINIPS is not set\nCONFIG_NUKE=y\nCONFIG_RESUME=y\nCONFIG_RUN_INIT=y\n\n#\n# Editors\n#\nCONFIG_AWK=y\n# CONFIG_FEATURE_AWK_LIBM is not set\nCONFIG_FEATURE_AWK_GNU_EXTENSIONS=y\nCONFIG_CMP=y\nCONFIG_DIFF=y\n# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set\nCONFIG_FEATURE_DIFF_DIR=y\n# CONFIG_ED is not set\nCONFIG_PATCH=y\nCONFIG_SED=y\nCONFIG_VI=y\nCONFIG_FEATURE_VI_MAX_LEN=4096\nCONFIG_FEATURE_VI_8BIT=y\nCONFIG_FEATURE_VI_COLON=y\nCONFIG_FEATURE_VI_COLON_EXPAND=y\nCONFIG_FEATURE_VI_YANKMARK=y\nCONFIG_FEATURE_VI_SEARCH=y\n# CONFIG_FEATURE_VI_REGEX_SEARCH is not set\nCONFIG_FEATURE_VI_USE_SIGNALS=y\nCONFIG_FEATURE_VI_DOT_CMD=y\nCONFIG_FEATURE_VI_READONLY=y\nCONFIG_FEATURE_VI_SETOPTS=y\nCONFIG_FEATURE_VI_SET=y\nCONFIG_FEATURE_VI_WIN_RESIZE=y\nCONFIG_FEATURE_VI_ASK_TERMINAL=y\nCONFIG_FEATURE_VI_UNDO=y\nCONFIG_FEATURE_VI_UNDO_QUEUE=y\nCONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256\nCONFIG_FEATURE_VI_VERBOSE_STATUS=y\nCONFIG_FEATURE_ALLOW_EXEC=y\n\n#\n# Finding Utilities\n#\nCONFIG_FIND=y\nCONFIG_FEATURE_FIND_PRINT0=y\nCONFIG_FEATURE_FIND_MTIME=y\nCONFIG_FEATURE_FIND_MMIN=y\nCONFIG_FEATURE_FIND_PERM=y\nCONFIG_FEATURE_FIND_TYPE=y\nCONFIG_FEATURE_FIND_EXECUTABLE=y\nCONFIG_FEATURE_FIND_XDEV=y\nCONFIG_FEATURE_FIND_MAXDEPTH=y\nCONFIG_FEATURE_FIND_NEWER=y\n# CONFIG_FEATURE_FIND_INUM is not set\nCONFIG_FEATURE_FIND_EXEC=y\nCONFIG_FEATURE_FIND_EXEC_PLUS=y\nCONFIG_FEATURE_FIND_USER=y\nCONFIG_FEATURE_FIND_GROUP=y\nCONFIG_FEATURE_FIND_NOT=y\nCONFIG_FEATURE_FIND_DEPTH=y\nCONFIG_FEATURE_FIND_PAREN=y\nCONFIG_FEATURE_FIND_SIZE=y\nCONFIG_FEATURE_FIND_PRUNE=y\nCONFIG_FEATURE_FIND_QUIT=y\n# CONFIG_FEATURE_FIND_DELETE is not set\nCONFIG_FEATURE_FIND_EMPTY=y\nCONFIG_FEATURE_FIND_PATH=y\nCONFIG_FEATURE_FIND_REGEX=y\n# CONFIG_FEATURE_FIND_CONTEXT is not set\n# CONFIG_FEATURE_FIND_LINKS is not set\nCONFIG_GREP=y\nCONFIG_EGREP=y\nCONFIG_FGREP=y\nCONFIG_FEATURE_GREP_CONTEXT=y\nCONFIG_XARGS=y\n# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set\nCONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y\nCONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y\nCONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y\nCONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y\nCONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y\nCONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y\n\n#\n# Init Utilities\n#\n# CONFIG_BOOTCHARTD is not set\n# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set\n# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set\nCONFIG_HALT=y\nCONFIG_POWEROFF=y\nCONFIG_REBOOT=y\nCONFIG_FEATURE_WAIT_FOR_INIT=y\n# CONFIG_FEATURE_CALL_TELINIT is not set\nCONFIG_TELINIT_PATH=\"\"\nCONFIG_INIT=y\nCONFIG_LINUXRC=y\nCONFIG_FEATURE_USE_INITTAB=y\nCONFIG_FEATURE_KILL_REMOVED=y\nCONFIG_FEATURE_KILL_DELAY=0\nCONFIG_FEATURE_INIT_SCTTY=y\nCONFIG_FEATURE_INIT_SYSLOG=y\nCONFIG_FEATURE_INIT_QUIET=y\n# CONFIG_FEATURE_INIT_COREDUMPS is not set\nCONFIG_INIT_TERMINAL_TYPE=\"linux\"\nCONFIG_FEATURE_INIT_MODIFY_CMDLINE=y\n\n#\n# Login/Password Management Utilities\n#\nCONFIG_FEATURE_SHADOWPASSWDS=y\n# CONFIG_USE_BB_PWD_GRP is not set\n# CONFIG_USE_BB_SHADOW is not set\nCONFIG_USE_BB_CRYPT=y\nCONFIG_USE_BB_CRYPT_SHA=y\n# CONFIG_ADD_SHELL is not set\n# CONFIG_REMOVE_SHELL is not set\n# CONFIG_ADDGROUP is not set\n# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set\n# CONFIG_ADDUSER is not set\n# CONFIG_FEATURE_CHECK_NAMES is not set\nCONFIG_LAST_ID=0\nCONFIG_FIRST_SYSTEM_ID=0\nCONFIG_LAST_SYSTEM_ID=0\n# CONFIG_CHPASSWD is not set\nCONFIG_FEATURE_DEFAULT_PASSWD_ALGO=\"des\"\n# CONFIG_CRYPTPW is not set\nCONFIG_MKPASSWD=y\n# CONFIG_DELUSER is not set\n# CONFIG_DELGROUP is not set\n# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set\nCONFIG_GETTY=y\nCONFIG_LOGIN=y\n# CONFIG_LOGIN_SESSION_AS_CHILD is not set\n# CONFIG_LOGIN_SCRIPTS is not set\nCONFIG_FEATURE_NOLOGIN=y\n# CONFIG_FEATURE_SECURETTY is not set\nCONFIG_PASSWD=y\n# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set\nCONFIG_SU=y\n# CONFIG_FEATURE_SU_SYSLOG is not set\n# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set\n# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set\n# CONFIG_SULOGIN is not set\nCONFIG_VLOCK=y\n\n#\n# Linux Ext2 FS Progs\n#\n# CONFIG_CHATTR is not set\n# CONFIG_FSCK is not set\n# CONFIG_LSATTR is not set\n# CONFIG_TUNE2FS is not set\n\n#\n# Linux Module Utilities\n#\n# CONFIG_MODPROBE_SMALL is not set\n# CONFIG_DEPMOD is not set\nCONFIG_INSMOD=y\nCONFIG_LSMOD=y\nCONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y\n# CONFIG_MODINFO is not set\nCONFIG_MODPROBE=y\nCONFIG_FEATURE_MODPROBE_BLACKLIST=y\nCONFIG_RMMOD=y\n\n#\n# Options common to multiple modutils\n#\nCONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y\n# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set\n# CONFIG_FEATURE_2_4_MODULES is not set\n# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set\n# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set\n# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set\n# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set\n# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set\nCONFIG_FEATURE_CHECK_TAINTED_MODULE=y\n# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set\nCONFIG_FEATURE_MODUTILS_ALIAS=y\nCONFIG_FEATURE_MODUTILS_SYMBOLS=y\nCONFIG_DEFAULT_MODULES_DIR=\"/lib/modules\"\nCONFIG_DEFAULT_DEPMOD_FILE=\"modules.dep\"\n\n#\n# Linux System Utilities\n#\n# CONFIG_ACPID is not set\n# CONFIG_FEATURE_ACPID_COMPAT is not set\nCONFIG_BLKDISCARD=y\n# CONFIG_BLKID is not set\n# CONFIG_FEATURE_BLKID_TYPE is not set\n# CONFIG_BLOCKDEV is not set\n# CONFIG_CAL is not set\n# CONFIG_CHRT is not set\nCONFIG_DMESG=y\nCONFIG_FEATURE_DMESG_PRETTY=y\nCONFIG_EJECT=y\n# CONFIG_FEATURE_EJECT_SCSI is not set\nCONFIG_FALLOCATE=y\nCONFIG_FATATTR=y\n# CONFIG_FBSET is not set\n# CONFIG_FEATURE_FBSET_FANCY is not set\n# CONFIG_FEATURE_FBSET_READMODE is not set\n# CONFIG_FDFORMAT is not set\n# CONFIG_FDISK is not set\n# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set\n# CONFIG_FEATURE_FDISK_WRITABLE is not set\n# CONFIG_FEATURE_AIX_LABEL is not set\n# CONFIG_FEATURE_SGI_LABEL is not set\n# CONFIG_FEATURE_SUN_LABEL is not set\n# CONFIG_FEATURE_OSF_LABEL is not set\n# CONFIG_FEATURE_GPT_LABEL is not set\n# CONFIG_FEATURE_FDISK_ADVANCED is not set\n# CONFIG_FINDFS is not set\n# CONFIG_FLOCK is not set\n# CONFIG_FDFLUSH is not set\n# CONFIG_FREERAMDISK is not set\n# CONFIG_FSCK_MINIX is not set\nCONFIG_FSFREEZE=y\n# CONFIG_FSTRIM is not set\n# CONFIG_GETOPT is not set\n# CONFIG_FEATURE_GETOPT_LONG is not set\nCONFIG_HEXDUMP=y\n# CONFIG_HD is not set\nCONFIG_XXD=y\nCONFIG_HWCLOCK=y\n# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set\n# CONFIG_IONICE is not set\n# CONFIG_IPCRM is not set\n# CONFIG_IPCS is not set\n# CONFIG_LAST is not set\n# CONFIG_FEATURE_LAST_FANCY is not set\n# CONFIG_LOSETUP is not set\n# CONFIG_LSPCI is not set\nCONFIG_LSUSB=y\n# CONFIG_MDEV is not set\n# CONFIG_FEATURE_MDEV_CONF is not set\n# CONFIG_FEATURE_MDEV_RENAME is not set\n# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set\n# CONFIG_FEATURE_MDEV_EXEC is not set\n# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set\n# CONFIG_FEATURE_MDEV_DAEMON is not set\nCONFIG_MESG=y\nCONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y\nCONFIG_MKE2FS=y\n# CONFIG_MKFS_EXT2 is not set\n# CONFIG_MKFS_MINIX is not set\n# CONFIG_FEATURE_MINIX2 is not set\n# CONFIG_MKFS_REISER is not set\nCONFIG_MKDOSFS=y\n# CONFIG_MKFS_VFAT is not set\n# CONFIG_MKSWAP is not set\n# CONFIG_FEATURE_MKSWAP_UUID is not set\n# CONFIG_MORE is not set\nCONFIG_MOUNT=y\n# CONFIG_FEATURE_MOUNT_FAKE is not set\n# CONFIG_FEATURE_MOUNT_VERBOSE is not set\n# CONFIG_FEATURE_MOUNT_HELPERS is not set\n# CONFIG_FEATURE_MOUNT_LABEL is not set\n# CONFIG_FEATURE_MOUNT_NFS is not set\nCONFIG_FEATURE_MOUNT_CIFS=y\nCONFIG_FEATURE_MOUNT_FLAGS=y\nCONFIG_FEATURE_MOUNT_FSTAB=y\nCONFIG_FEATURE_MOUNT_OTHERTAB=y\n# CONFIG_MOUNTPOINT is not set\nCONFIG_NOLOGIN=y\nCONFIG_NOLOGIN_DEPENDENCIES=y\nCONFIG_NSENTER=y\n# CONFIG_PIVOT_ROOT is not set\n# CONFIG_RDATE is not set\n# CONFIG_RDEV is not set\n# CONFIG_READPROFILE is not set\nCONFIG_RENICE=y\nCONFIG_REV=y\n# CONFIG_RTCWAKE is not set\n# CONFIG_SCRIPT is not set\n# CONFIG_SCRIPTREPLAY is not set\n# CONFIG_SETARCH is not set\nCONFIG_LINUX32=y\nCONFIG_LINUX64=y\nCONFIG_SETPRIV=y\nCONFIG_FEATURE_SETPRIV_DUMP=y\nCONFIG_FEATURE_SETPRIV_CAPABILITIES=y\nCONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y\n# CONFIG_SETSID is not set\nCONFIG_SWAPON=y\n# CONFIG_FEATURE_SWAPON_DISCARD is not set\n# CONFIG_FEATURE_SWAPON_PRI is not set\nCONFIG_SWAPOFF=y\nCONFIG_FEATURE_SWAPONOFF_LABEL=y\n# CONFIG_SWITCH_ROOT is not set\n# CONFIG_TASKSET is not set\n# CONFIG_FEATURE_TASKSET_FANCY is not set\n# CONFIG_FEATURE_TASKSET_CPULIST is not set\nCONFIG_UEVENT=y\nCONFIG_UMOUNT=y\nCONFIG_FEATURE_UMOUNT_ALL=y\nCONFIG_UNSHARE=y\n# CONFIG_WALL is not set\n\n#\n# Common options for mount/umount\n#\nCONFIG_FEATURE_MOUNT_LOOP=y\nCONFIG_FEATURE_MOUNT_LOOP_CREATE=y\n# CONFIG_FEATURE_MTAB_SUPPORT is not set\nCONFIG_VOLUMEID=y\n\n#\n# Filesystem/Volume identification\n#\n# CONFIG_FEATURE_VOLUMEID_BCACHE is not set\n# CONFIG_FEATURE_VOLUMEID_BTRFS is not set\n# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set\nCONFIG_FEATURE_VOLUMEID_EROFS=y\n# CONFIG_FEATURE_VOLUMEID_EXFAT is not set\n# CONFIG_FEATURE_VOLUMEID_EXT is not set\n# CONFIG_FEATURE_VOLUMEID_F2FS is not set\n# CONFIG_FEATURE_VOLUMEID_FAT is not set\n# CONFIG_FEATURE_VOLUMEID_HFS is not set\n# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set\n# CONFIG_FEATURE_VOLUMEID_JFS is not set\n# CONFIG_FEATURE_VOLUMEID_LFS is not set\n# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set\n# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set\n# CONFIG_FEATURE_VOLUMEID_LUKS is not set\nCONFIG_FEATURE_VOLUMEID_MINIX=y\n# CONFIG_FEATURE_VOLUMEID_NILFS is not set\n# CONFIG_FEATURE_VOLUMEID_NTFS is not set\n# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set\n# CONFIG_FEATURE_VOLUMEID_REISERFS is not set\n# CONFIG_FEATURE_VOLUMEID_ROMFS is not set\n# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set\n# CONFIG_FEATURE_VOLUMEID_SYSV is not set\n# CONFIG_FEATURE_VOLUMEID_UBIFS is not set\n# CONFIG_FEATURE_VOLUMEID_UDF is not set\n# CONFIG_FEATURE_VOLUMEID_XFS is not set\n\n#\n# Miscellaneous Utilities\n#\n# CONFIG_ADJTIMEX is not set\nCONFIG_ASCII=y\n# CONFIG_BBCONFIG is not set\n# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set\nCONFIG_BC=y\n# CONFIG_DC is not set\nCONFIG_FEATURE_DC_BIG=y\n# CONFIG_FEATURE_DC_LIBM is not set\nCONFIG_FEATURE_BC_INTERACTIVE=y\nCONFIG_FEATURE_BC_LONG_OPTIONS=y\n# CONFIG_BEEP is not set\nCONFIG_FEATURE_BEEP_FREQ=0\nCONFIG_FEATURE_BEEP_LENGTH_MS=0\n# CONFIG_CHAT is not set\n# CONFIG_FEATURE_CHAT_NOFAIL is not set\n# CONFIG_FEATURE_CHAT_TTY_HIFI is not set\n# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set\n# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set\n# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set\n# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set\n# CONFIG_FEATURE_CHAT_CLR_ABORT is not set\n# CONFIG_CONSPY is not set\nCONFIG_CROND=y\nCONFIG_FEATURE_CROND_D=y\n# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set\nCONFIG_FEATURE_CROND_SPECIAL_TIMES=y\nCONFIG_FEATURE_CROND_DIR=\"/data/etc\"\nCONFIG_CRONTAB=y\n# CONFIG_DEVFSD is not set\n# CONFIG_DEVFSD_MODLOAD is not set\n# CONFIG_DEVFSD_FG_NP is not set\n# CONFIG_DEVFSD_VERBOSE is not set\n# CONFIG_FEATURE_DEVFS is not set\nCONFIG_DEVMEM=y\n# CONFIG_FBSPLASH is not set\n# CONFIG_FLASH_ERASEALL is not set\n# CONFIG_FLASH_LOCK is not set\n# CONFIG_FLASH_UNLOCK is not set\n# CONFIG_FLASHCP is not set\n# CONFIG_HDPARM is not set\n# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set\n# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set\n# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set\n# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set\n# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set\n# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set\nCONFIG_HEXEDIT=y\nCONFIG_I2CGET=y\nCONFIG_I2CSET=y\nCONFIG_I2CDUMP=y\nCONFIG_I2CDETECT=y\nCONFIG_I2CTRANSFER=y\n# CONFIG_INOTIFYD is not set\nCONFIG_LESS=y\nCONFIG_FEATURE_LESS_MAXLINES=9999999\nCONFIG_FEATURE_LESS_BRACKETS=y\nCONFIG_FEATURE_LESS_FLAGS=y\nCONFIG_FEATURE_LESS_TRUNCATE=y\n# CONFIG_FEATURE_LESS_MARKS is not set\nCONFIG_FEATURE_LESS_REGEXP=y\n# CONFIG_FEATURE_LESS_WINCH is not set\n# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set\n# CONFIG_FEATURE_LESS_DASHCMD is not set\n# CONFIG_FEATURE_LESS_LINENUMS is not set\n# CONFIG_FEATURE_LESS_RAW is not set\n# CONFIG_FEATURE_LESS_ENV is not set\nCONFIG_LSSCSI=y\nCONFIG_MAKEDEVS=y\n# CONFIG_FEATURE_MAKEDEVS_LEAF is not set\nCONFIG_FEATURE_MAKEDEVS_TABLE=y\n# CONFIG_MAN is not set\n# CONFIG_MICROCOM is not set\nCONFIG_MIM=y\n# CONFIG_MT is not set\n# CONFIG_NANDWRITE is not set\n# CONFIG_NANDDUMP is not set\nCONFIG_PARTPROBE=y\n# CONFIG_RAIDAUTORUN is not set\n# CONFIG_READAHEAD is not set\nCONFIG_RFKILL=y\n# CONFIG_RUNLEVEL is not set\n# CONFIG_RX is not set\nCONFIG_SETFATTR=y\n# CONFIG_SETSERIAL is not set\n# CONFIG_STRINGS is not set\nCONFIG_TIME=y\nCONFIG_TS=y\n# CONFIG_TTYSIZE is not set\n# CONFIG_UBIATTACH is not set\n# CONFIG_UBIDETACH is not set\n# CONFIG_UBIMKVOL is not set\n# CONFIG_UBIRMVOL is not set\n# CONFIG_UBIRSVOL is not set\n# CONFIG_UBIUPDATEVOL is not set\nCONFIG_UBIRENAME=y\n# CONFIG_VOLNAME is not set\nCONFIG_WATCHDOG=y\n# CONFIG_FEATURE_WATCHDOG_OPEN_TWICE is not set\n\n#\n# Networking Utilities\n#\nCONFIG_FEATURE_IPV6=y\n# CONFIG_FEATURE_UNIX_LOCAL is not set\n# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set\n# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set\n# CONFIG_FEATURE_TLS_SHA1 is not set\n# CONFIG_ARP is not set\nCONFIG_ARPING=y\n# CONFIG_BRCTL is not set\n# CONFIG_FEATURE_BRCTL_FANCY is not set\n# CONFIG_FEATURE_BRCTL_SHOW is not set\n# CONFIG_DNSD is not set\n# CONFIG_ETHER_WAKE is not set\n# CONFIG_FTPD is not set\n# CONFIG_FEATURE_FTPD_WRITE is not set\n# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set\n# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set\n# CONFIG_FTPGET is not set\n# CONFIG_FTPPUT is not set\n# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set\nCONFIG_HOSTNAME=y\nCONFIG_DNSDOMAINNAME=y\n# CONFIG_HTTPD is not set\n# CONFIG_FEATURE_HTTPD_RANGES is not set\n# CONFIG_FEATURE_HTTPD_SETUID is not set\n# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set\n# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set\n# CONFIG_FEATURE_HTTPD_CGI is not set\n# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set\n# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set\n# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set\n# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set\n# CONFIG_FEATURE_HTTPD_PROXY is not set\n# CONFIG_FEATURE_HTTPD_GZIP is not set\n# CONFIG_FEATURE_HTTPD_ETAG is not set\n# CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set\n# CONFIG_FEATURE_HTTPD_DATE is not set\n# CONFIG_FEATURE_HTTPD_ACL_IP is not set\n# CONFIG_IFCONFIG is not set\n# CONFIG_FEATURE_IFCONFIG_STATUS is not set\n# CONFIG_FEATURE_IFCONFIG_SLIP is not set\n# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set\n# CONFIG_FEATURE_IFCONFIG_HW is not set\n# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set\n# CONFIG_IFENSLAVE is not set\nCONFIG_IFPLUGD=y\nCONFIG_IFUP=y\nCONFIG_IFDOWN=y\nCONFIG_IFUPDOWN_IFSTATE_PATH=\"/var/run/ifstate\"\nCONFIG_FEATURE_IFUPDOWN_IP=y\nCONFIG_FEATURE_IFUPDOWN_IPV4=y\nCONFIG_FEATURE_IFUPDOWN_IPV6=y\n# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set\nCONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y\n# CONFIG_INETD is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set\n# CONFIG_FEATURE_INETD_RPC is not set\nCONFIG_IP=y\nCONFIG_IPADDR=y\nCONFIG_IPLINK=y\nCONFIG_IPROUTE=y\nCONFIG_IPTUNNEL=y\nCONFIG_IPRULE=y\nCONFIG_IPNEIGH=y\nCONFIG_FEATURE_IP_ADDRESS=y\nCONFIG_FEATURE_IP_LINK=y\nCONFIG_FEATURE_IP_ROUTE=y\nCONFIG_FEATURE_IP_ROUTE_DIR=\"/etc/iproute2\"\nCONFIG_FEATURE_IP_TUNNEL=y\nCONFIG_FEATURE_IP_RULE=y\nCONFIG_FEATURE_IP_NEIGH=y\n# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set\n# CONFIG_IPCALC is not set\n# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set\n# CONFIG_FEATURE_IPCALC_FANCY is not set\n# CONFIG_FAKEIDENTD is not set\nCONFIG_NAMEIF=y\n# CONFIG_FEATURE_NAMEIF_EXTENDED is not set\n# CONFIG_NBDCLIENT is not set\n# CONFIG_NC is not set\n# CONFIG_NETCAT is not set\n# CONFIG_NC_SERVER is not set\n# CONFIG_NC_EXTRA is not set\n# CONFIG_NC_110_COMPAT is not set\nCONFIG_NETSTAT=y\n# CONFIG_FEATURE_NETSTAT_WIDE is not set\n# CONFIG_FEATURE_NETSTAT_PRG is not set\nCONFIG_NSLOOKUP=y\nCONFIG_FEATURE_NSLOOKUP_BIG=y\nCONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS=y\n# CONFIG_NTPD is not set\n# CONFIG_FEATURE_NTPD_SERVER is not set\n# CONFIG_FEATURE_NTPD_CONF is not set\n# CONFIG_FEATURE_NTP_AUTH is not set\nCONFIG_PING=y\n# CONFIG_PING6 is not set\nCONFIG_FEATURE_FANCY_PING=y\n# CONFIG_PSCAN is not set\nCONFIG_ROUTE=y\n# CONFIG_SLATTACH is not set\nCONFIG_SSL_CLIENT=y\nCONFIG_TC=y\nCONFIG_FEATURE_TC_INGRESS=y\n# CONFIG_TCPSVD is not set\n# CONFIG_UDPSVD is not set\n# CONFIG_TELNET is not set\n# CONFIG_FEATURE_TELNET_TTYPE is not set\n# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set\n# CONFIG_FEATURE_TELNET_WIDTH is not set\n# CONFIG_TELNETD is not set\n# CONFIG_FEATURE_TELNETD_STANDALONE is not set\n# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set\n# CONFIG_TFTP is not set\n# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set\n# CONFIG_FEATURE_TFTP_HPA_COMPAT is not set\n# CONFIG_TFTPD is not set\n# CONFIG_FEATURE_TFTP_GET is not set\n# CONFIG_FEATURE_TFTP_PUT is not set\n# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set\n# CONFIG_TFTP_DEBUG is not set\nCONFIG_TLS=y\nCONFIG_TRACEROUTE=y\n# CONFIG_TRACEROUTE6 is not set\n# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set\n# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set\n# CONFIG_TUNCTL is not set\n# CONFIG_FEATURE_TUNCTL_UG is not set\n# CONFIG_VCONFIG is not set\n# CONFIG_WGET is not set\n# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set\n# CONFIG_FEATURE_WGET_STATUSBAR is not set\n# CONFIG_FEATURE_WGET_FTP is not set\n# CONFIG_FEATURE_WGET_AUTHENTICATION is not set\n# CONFIG_FEATURE_WGET_TIMEOUT is not set\n# CONFIG_FEATURE_WGET_HTTPS is not set\n# CONFIG_FEATURE_WGET_OPENSSL is not set\n# CONFIG_WHOIS is not set\n# CONFIG_ZCIP is not set\n# CONFIG_UDHCPD is not set\n# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set\n# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set\nCONFIG_DHCPD_LEASES_FILE=\"\"\n# CONFIG_DUMPLEASES is not set\n# CONFIG_DHCPRELAY is not set\n# CONFIG_UDHCPC is not set\n# CONFIG_FEATURE_UDHCPC_ARPING is not set\n# CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set\nCONFIG_UDHCPC_DEFAULT_SCRIPT=\"\"\n# CONFIG_UDHCPC6 is not set\n# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set\n# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set\n# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set\n# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set\nCONFIG_UDHCPC_DEFAULT_INTERFACE=\"\"\n# CONFIG_FEATURE_UDHCP_PORT is not set\nCONFIG_UDHCP_DEBUG=0\nCONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0\n# CONFIG_FEATURE_UDHCP_RFC3397 is not set\n# CONFIG_FEATURE_UDHCP_8021Q is not set\nCONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=\"\"\n\n#\n# Print Utilities\n#\n# CONFIG_LPD is not set\n# CONFIG_LPR is not set\n# CONFIG_LPQ is not set\n\n#\n# Mail Utilities\n#\n# CONFIG_MAKEMIME is not set\n# CONFIG_POPMAILDIR is not set\n# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set\n# CONFIG_REFORMIME is not set\n# CONFIG_FEATURE_REFORMIME_COMPAT is not set\n# CONFIG_SENDMAIL is not set\nCONFIG_FEATURE_MIME_CHARSET=\"\"\n\n#\n# Process Utilities\n#\nCONFIG_FREE=y\n# CONFIG_FUSER is not set\n# CONFIG_IOSTAT is not set\nCONFIG_KILL=y\nCONFIG_KILLALL=y\nCONFIG_KILLALL5=y\n# CONFIG_LSOF is not set\n# CONFIG_MPSTAT is not set\n# CONFIG_NMETER is not set\n# CONFIG_PGREP is not set\n# CONFIG_PKILL is not set\nCONFIG_PIDOF=y\nCONFIG_FEATURE_PIDOF_SINGLE=y\nCONFIG_FEATURE_PIDOF_OMIT=y\n# CONFIG_PMAP is not set\n# CONFIG_POWERTOP is not set\n# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set\nCONFIG_PS=y\n# CONFIG_FEATURE_PS_WIDE is not set\n# CONFIG_FEATURE_PS_LONG is not set\n# CONFIG_FEATURE_PS_TIME is not set\n# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set\n# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set\n# CONFIG_PSTREE is not set\n# CONFIG_PWDX is not set\n# CONFIG_SMEMCAP is not set\nCONFIG_BB_SYSCTL=y\nCONFIG_TOP=y\nCONFIG_FEATURE_TOP_INTERACTIVE=y\nCONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y\nCONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y\n# CONFIG_FEATURE_TOP_SMP_CPU is not set\n# CONFIG_FEATURE_TOP_DECIMALS is not set\n# CONFIG_FEATURE_TOP_SMP_PROCESS is not set\n# CONFIG_FEATURE_TOPMEM is not set\nCONFIG_UPTIME=y\n# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set\nCONFIG_WATCH=y\n# CONFIG_FEATURE_SHOW_THREADS is not set\n\n#\n# Runit Utilities\n#\n# CONFIG_CHPST is not set\n# CONFIG_SETUIDGID is not set\n# CONFIG_ENVUIDGID is not set\n# CONFIG_ENVDIR is not set\n# CONFIG_SOFTLIMIT is not set\n# CONFIG_RUNSV is not set\n# CONFIG_RUNSVDIR is not set\n# CONFIG_FEATURE_RUNSVDIR_LOG is not set\n# CONFIG_SV is not set\nCONFIG_SV_DEFAULT_SERVICE_DIR=\"\"\nCONFIG_SVC=y\nCONFIG_SVOK=y\n# CONFIG_SVLOGD is not set\n# CONFIG_CHCON is not set\n# CONFIG_GETENFORCE is not set\n# CONFIG_GETSEBOOL is not set\n# CONFIG_LOAD_POLICY is not set\n# CONFIG_MATCHPATHCON is not set\n# CONFIG_RUNCON is not set\n# CONFIG_SELINUXENABLED is not set\n# CONFIG_SESTATUS is not set\n# CONFIG_SETENFORCE is not set\n# CONFIG_SETFILES is not set\n# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set\n# CONFIG_RESTORECON is not set\n# CONFIG_SETSEBOOL is not set\n\n#\n# Shells\n#\nCONFIG_SH_IS_ASH=y\n# CONFIG_SH_IS_HUSH is not set\n# CONFIG_SH_IS_NONE is not set\n# CONFIG_BASH_IS_ASH is not set\n# CONFIG_BASH_IS_HUSH is not set\nCONFIG_BASH_IS_NONE=y\nCONFIG_SHELL_ASH=y\n# CONFIG_ASH is not set\n# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set\nCONFIG_ASH_INTERNAL_GLOB=y\n# CONFIG_ASH_BASH_COMPAT is not set\n# CONFIG_ASH_BASH_SOURCE_CURDIR is not set\n# CONFIG_ASH_BASH_NOT_FOUND_HOOK is not set\n# CONFIG_ASH_JOB_CONTROL is not set\n# CONFIG_ASH_ALIAS is not set\n# CONFIG_ASH_RANDOM_SUPPORT is not set\n# CONFIG_ASH_EXPAND_PRMT is not set\n# CONFIG_ASH_IDLE_TIMEOUT is not set\n# CONFIG_ASH_MAIL is not set\nCONFIG_ASH_ECHO=y\nCONFIG_ASH_PRINTF=y\nCONFIG_ASH_TEST=y\n# CONFIG_ASH_HELP is not set\n# CONFIG_ASH_GETOPTS is not set\n# CONFIG_ASH_CMDCMD is not set\n# CONFIG_CTTYHACK is not set\n# CONFIG_HUSH is not set\n# CONFIG_SHELL_HUSH is not set\n# CONFIG_HUSH_BASH_COMPAT is not set\n# CONFIG_HUSH_BRACE_EXPANSION is not set\n# CONFIG_HUSH_BASH_SOURCE_CURDIR is not set\n# CONFIG_HUSH_LINENO_VAR is not set\n# CONFIG_HUSH_INTERACTIVE is not set\n# CONFIG_HUSH_SAVEHISTORY is not set\n# CONFIG_HUSH_JOB is not set\n# CONFIG_HUSH_TICK is not set\n# CONFIG_HUSH_IF is not set\n# CONFIG_HUSH_LOOPS is not set\n# CONFIG_HUSH_CASE is not set\n# CONFIG_HUSH_FUNCTIONS is not set\n# CONFIG_HUSH_LOCAL is not set\n# CONFIG_HUSH_RANDOM_SUPPORT is not set\n# CONFIG_HUSH_MODE_X is not set\n# CONFIG_HUSH_ECHO is not set\n# CONFIG_HUSH_PRINTF is not set\n# CONFIG_HUSH_TEST is not set\n# CONFIG_HUSH_HELP is not set\n# CONFIG_HUSH_EXPORT is not set\n# CONFIG_HUSH_EXPORT_N is not set\n# CONFIG_HUSH_READONLY is not set\n# CONFIG_HUSH_KILL is not set\n# CONFIG_HUSH_WAIT is not set\n# CONFIG_HUSH_COMMAND is not set\n# CONFIG_HUSH_TRAP is not set\n# CONFIG_HUSH_TYPE is not set\n# CONFIG_HUSH_TIMES is not set\n# CONFIG_HUSH_READ is not set\n# CONFIG_HUSH_SET is not set\n# CONFIG_HUSH_UNSET is not set\n# CONFIG_HUSH_ULIMIT is not set\n# CONFIG_HUSH_UMASK is not set\n# CONFIG_HUSH_GETOPTS is not set\n# CONFIG_HUSH_MEMLEAK is not set\n\n#\n# Options common to all shells\n#\nCONFIG_FEATURE_SH_MATH=y\nCONFIG_FEATURE_SH_MATH_64=y\nCONFIG_FEATURE_SH_MATH_BASE=y\n# CONFIG_FEATURE_SH_EXTRA_QUIET is not set\n# CONFIG_FEATURE_SH_STANDALONE is not set\n# CONFIG_FEATURE_SH_NOFORK is not set\nCONFIG_FEATURE_SH_READ_FRAC=y\n# CONFIG_FEATURE_SH_HISTFILESIZE is not set\nCONFIG_FEATURE_SH_EMBEDDED_SCRIPTS=y\n\n#\n# System Logging Utilities\n#\n# CONFIG_KLOGD is not set\n# CONFIG_FEATURE_KLOGD_KLOGCTL is not set\nCONFIG_LOGGER=y\n# CONFIG_LOGREAD is not set\n# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set\nCONFIG_SYSLOGD=y\n# CONFIG_FEATURE_ROTATE_LOGFILE is not set\n# CONFIG_FEATURE_REMOTE_LOG is not set\n# CONFIG_FEATURE_SYSLOGD_DUP is not set\nCONFIG_FEATURE_SYSLOGD_CFG=y\n# CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set\nCONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256\n# CONFIG_FEATURE_IPC_SYSLOG is not set\nCONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0\nCONFIG_FEATURE_KMSG_SYSLOG=y\n"
  },
  {
    "path": "board/common/busybox_initramfs.config",
    "content": "#\n# Automatically generated make config: don't edit\n# Busybox version: 1.24.2\n# Sat Feb 11 14:55:38 2017\n#\nCONFIG_HAVE_DOT_CONFIG=y\n\n#\n# Busybox Settings\n#\n\n#\n# General Configuration\n#\nCONFIG_DESKTOP=y\n# CONFIG_EXTRA_COMPAT is not set\nCONFIG_INCLUDE_SUSv2=y\n# CONFIG_USE_PORTABLE_CODE is not set\nCONFIG_PLATFORM_LINUX=y\nCONFIG_FEATURE_BUFFERS_USE_MALLOC=y\n# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set\n# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set\nCONFIG_SHOW_USAGE=y\nCONFIG_FEATURE_VERBOSE_USAGE=y\n# CONFIG_FEATURE_COMPRESS_USAGE is not set\nCONFIG_FEATURE_INSTALLER=y\n# CONFIG_INSTALL_NO_USR is not set\n# CONFIG_LOCALE_SUPPORT is not set\n# CONFIG_UNICODE_SUPPORT is not set\n# CONFIG_UNICODE_USING_LOCALE is not set\n# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set\nCONFIG_SUBST_WCHAR=0\nCONFIG_LAST_SUPPORTED_WCHAR=0\n# CONFIG_UNICODE_COMBINING_WCHARS is not set\n# CONFIG_UNICODE_WIDE_WCHARS is not set\n# CONFIG_UNICODE_BIDI_SUPPORT is not set\n# CONFIG_UNICODE_NEUTRAL_TABLE is not set\n# CONFIG_UNICODE_PRESERVE_BROKEN is not set\n# CONFIG_PAM is not set\nCONFIG_FEATURE_USE_SENDFILE=y\nCONFIG_LONG_OPTS=y\nCONFIG_FEATURE_DEVPTS=y\nCONFIG_FEATURE_CLEAN_UP=y\nCONFIG_FEATURE_UTMP=y\nCONFIG_FEATURE_WTMP=y\n# CONFIG_FEATURE_PIDFILE is not set\nCONFIG_PID_FILE_PATH=\"\"\nCONFIG_FEATURE_SUID=y\n# CONFIG_FEATURE_SUID_CONFIG is not set\n# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set\n# CONFIG_SELINUX is not set\n# CONFIG_FEATURE_PREFER_APPLETS is not set\nCONFIG_BUSYBOX_EXEC_PATH=\"/proc/self/exe\"\nCONFIG_FEATURE_SYSLOG=y\n# CONFIG_FEATURE_HAVE_RPC is not set\n\n#\n# Build Options\n#\nCONFIG_STATIC=y\n# CONFIG_PIE is not set\n# CONFIG_NOMMU is not set\n# CONFIG_BUILD_LIBBUSYBOX is not set\n# CONFIG_FEATURE_INDIVIDUAL is not set\n# CONFIG_FEATURE_SHARED_BUSYBOX is not set\nCONFIG_LFS=y\nCONFIG_CROSS_COMPILER_PREFIX=\"\"\nCONFIG_SYSROOT=\"\"\nCONFIG_EXTRA_CFLAGS=\"\"\nCONFIG_EXTRA_LDFLAGS=\"\"\nCONFIG_EXTRA_LDLIBS=\"\"\n\n#\n# Debugging Options\n#\n# CONFIG_DEBUG is not set\n# CONFIG_DEBUG_PESSIMIZE is not set\n# CONFIG_UNIT_TEST is not set\n# CONFIG_WERROR is not set\nCONFIG_NO_DEBUG_LIB=y\n# CONFIG_DMALLOC is not set\n# CONFIG_EFENCE is not set\n\n#\n# Installation Options (\"make install\" behavior)\n#\nCONFIG_INSTALL_APPLET_SYMLINKS=y\n# CONFIG_INSTALL_APPLET_HARDLINKS is not set\n# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set\n# CONFIG_INSTALL_APPLET_DONT is not set\n# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set\n# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set\n# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set\nCONFIG_PREFIX=\"./_install\"\n\n#\n# Busybox Library Tuning\n#\n# CONFIG_FEATURE_SYSTEMD is not set\nCONFIG_FEATURE_RTMINMAX=y\nCONFIG_PASSWORD_MINLEN=6\nCONFIG_MD5_SMALL=1\nCONFIG_SHA3_SMALL=1\n# CONFIG_FEATURE_FAST_TOP is not set\n# CONFIG_FEATURE_ETC_NETWORKS is not set\n# CONFIG_FEATURE_USE_TERMIOS is not set\nCONFIG_FEATURE_EDITING=y\nCONFIG_FEATURE_EDITING_MAX_LEN=1024\nCONFIG_FEATURE_EDITING_VI=y\nCONFIG_FEATURE_EDITING_HISTORY=999\nCONFIG_FEATURE_EDITING_SAVEHISTORY=y\n# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set\nCONFIG_FEATURE_REVERSE_SEARCH=y\nCONFIG_FEATURE_TAB_COMPLETION=y\n# CONFIG_FEATURE_USERNAME_COMPLETION is not set\nCONFIG_FEATURE_EDITING_FANCY_PROMPT=y\n# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set\nCONFIG_FEATURE_NON_POSIX_CP=y\n# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set\nCONFIG_FEATURE_COPYBUF_KB=4\nCONFIG_FEATURE_SKIP_ROOTFS=y\nCONFIG_MONOTONIC_SYSCALL=y\nCONFIG_IOCTL_HEX2STR_ERROR=y\nCONFIG_FEATURE_HWIB=y\n\n#\n# Applets\n#\n\n#\n# Archival Utilities\n#\n# CONFIG_FEATURE_SEAMLESS_XZ is not set\n# CONFIG_FEATURE_SEAMLESS_LZMA is not set\n# CONFIG_FEATURE_SEAMLESS_BZ2 is not set\n# CONFIG_FEATURE_SEAMLESS_GZ is not set\n# CONFIG_FEATURE_SEAMLESS_Z is not set\n# CONFIG_AR is not set\n# CONFIG_FEATURE_AR_LONG_FILENAMES is not set\n# CONFIG_FEATURE_AR_CREATE is not set\n# CONFIG_UNCOMPRESS is not set\n# CONFIG_GUNZIP is not set\n# CONFIG_BUNZIP2 is not set\n# CONFIG_UNLZMA is not set\n# CONFIG_FEATURE_LZMA_FAST is not set\n# CONFIG_LZMA is not set\n# CONFIG_UNXZ is not set\n# CONFIG_XZ is not set\n# CONFIG_BZIP2 is not set\n# CONFIG_CPIO is not set\n# CONFIG_FEATURE_CPIO_O is not set\n# CONFIG_FEATURE_CPIO_P is not set\n# CONFIG_DPKG is not set\n# CONFIG_DPKG_DEB is not set\n# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set\n# CONFIG_GZIP is not set\n# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set\nCONFIG_GZIP_FAST=0\n# CONFIG_FEATURE_GZIP_LEVELS is not set\n# CONFIG_LZOP is not set\n# CONFIG_LZOP_COMPR_HIGH is not set\n# CONFIG_RPM is not set\n# CONFIG_RPM2CPIO is not set\n# CONFIG_TAR is not set\n# CONFIG_FEATURE_TAR_CREATE is not set\n# CONFIG_FEATURE_TAR_AUTODETECT is not set\n# CONFIG_FEATURE_TAR_FROM is not set\n# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set\n# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set\n# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set\n# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set\n# CONFIG_FEATURE_TAR_TO_COMMAND is not set\n# CONFIG_FEATURE_TAR_UNAME_GNAME is not set\n# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set\n# CONFIG_FEATURE_TAR_SELINUX is not set\n# CONFIG_UNZIP is not set\n\n#\n# Coreutils\n#\nCONFIG_BASENAME=y\nCONFIG_CAT=y\nCONFIG_DATE=y\nCONFIG_FEATURE_DATE_ISOFMT=y\nCONFIG_FEATURE_DATE_NANO=y\nCONFIG_FEATURE_DATE_COMPAT=y\nCONFIG_DD=y\nCONFIG_FEATURE_DD_SIGNAL_HANDLING=y\n# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set\nCONFIG_FEATURE_DD_IBS_OBS=y\nCONFIG_FEATURE_DD_STATUS=y\n# CONFIG_HOSTID is not set\nCONFIG_ID=y\n# CONFIG_GROUPS is not set\n# CONFIG_SHUF is not set\nCONFIG_SYNC=y\nCONFIG_FEATURE_SYNC_FANCY=y\nCONFIG_TEST=y\nCONFIG_FEATURE_TEST_64=y\nCONFIG_TOUCH=y\n# CONFIG_FEATURE_TOUCH_NODEREF is not set\nCONFIG_FEATURE_TOUCH_SUSV3=y\nCONFIG_TR=y\nCONFIG_FEATURE_TR_CLASSES=y\nCONFIG_FEATURE_TR_EQUIV=y\nCONFIG_TRUNCATE=y\nCONFIG_UNLINK=y\n# CONFIG_BASE64 is not set\n# CONFIG_WHO is not set\n# CONFIG_USERS is not set\n# CONFIG_CAL is not set\n# CONFIG_CATV is not set\nCONFIG_CHGRP=y\nCONFIG_CHMOD=y\nCONFIG_CHOWN=y\n# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set\nCONFIG_CHROOT=y\n# CONFIG_CKSUM is not set\n# CONFIG_COMM is not set\nCONFIG_CP=y\n# CONFIG_FEATURE_CP_LONG_OPTIONS is not set\nCONFIG_CUT=y\nCONFIG_DF=y\nCONFIG_FEATURE_DF_FANCY=y\nCONFIG_DIRNAME=y\n# CONFIG_DOS2UNIX is not set\n# CONFIG_UNIX2DOS is not set\nCONFIG_DU=y\nCONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y\nCONFIG_ECHO=y\nCONFIG_FEATURE_FANCY_ECHO=y\nCONFIG_ENV=y\n# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set\n# CONFIG_EXPAND is not set\n# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set\n# CONFIG_EXPR is not set\n# CONFIG_EXPR_MATH_SUPPORT_64 is not set\nCONFIG_FALSE=y\nCONFIG_FOLD=y\n# CONFIG_FSYNC is not set\nCONFIG_HEAD=y\nCONFIG_FEATURE_FANCY_HEAD=y\n# CONFIG_INSTALL is not set\n# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set\nCONFIG_LN=y\n# CONFIG_LOGNAME is not set\nCONFIG_LS=y\nCONFIG_FEATURE_LS_FILETYPES=y\nCONFIG_FEATURE_LS_FOLLOWLINKS=y\nCONFIG_FEATURE_LS_RECURSIVE=y\nCONFIG_FEATURE_LS_SORTFILES=y\nCONFIG_FEATURE_LS_TIMESTAMPS=y\nCONFIG_FEATURE_LS_USERNAME=y\nCONFIG_FEATURE_LS_COLOR=y\nCONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y\nCONFIG_MD5SUM=y\nCONFIG_MKDIR=y\nCONFIG_FEATURE_MKDIR_LONG_OPTIONS=y\nCONFIG_MKFIFO=y\nCONFIG_MKNOD=y\nCONFIG_MV=y\nCONFIG_FEATURE_MV_LONG_OPTIONS=y\nCONFIG_NICE=y\nCONFIG_NOHUP=y\n# CONFIG_OD is not set\n# CONFIG_PRINTENV is not set\n# CONFIG_PRINTF is not set\nCONFIG_PWD=y\nCONFIG_READLINK=y\nCONFIG_FEATURE_READLINK_FOLLOW=y\nCONFIG_REALPATH=y\nCONFIG_RM=y\nCONFIG_RMDIR=y\n# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set\n# CONFIG_SEQ is not set\n# CONFIG_SHA1SUM is not set\n# CONFIG_SHA256SUM is not set\n# CONFIG_SHA512SUM is not set\n# CONFIG_SHA3SUM is not set\nCONFIG_SLEEP=y\n# CONFIG_FEATURE_FANCY_SLEEP is not set\n# CONFIG_FEATURE_FLOAT_SLEEP is not set\n# CONFIG_SORT is not set\n# CONFIG_FEATURE_SORT_BIG is not set\n# CONFIG_SPLIT is not set\n# CONFIG_FEATURE_SPLIT_FANCY is not set\n# CONFIG_STAT is not set\n# CONFIG_FEATURE_STAT_FORMAT is not set\n# CONFIG_STTY is not set\n# CONFIG_SUM is not set\n# CONFIG_TAC is not set\nCONFIG_TAIL=y\nCONFIG_FEATURE_FANCY_TAIL=y\n# CONFIG_TEE is not set\n# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set\nCONFIG_TRUE=y\n# CONFIG_TTY is not set\n# CONFIG_UNAME is not set\nCONFIG_UNAME_OSNAME=\"\"\n# CONFIG_UNEXPAND is not set\n# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set\n# CONFIG_UNIQ is not set\n# CONFIG_USLEEP is not set\n# CONFIG_UUDECODE is not set\n# CONFIG_UUENCODE is not set\n# CONFIG_WC is not set\n# CONFIG_FEATURE_WC_LARGE is not set\nCONFIG_WHOAMI=y\n# CONFIG_YES is not set\n\n#\n# Common options\n#\nCONFIG_FEATURE_VERBOSE=y\n\n#\n# Common options for cp and mv\n#\nCONFIG_FEATURE_PRESERVE_HARDLINKS=y\n\n#\n# Common options for ls, more and telnet\n#\nCONFIG_FEATURE_AUTOWIDTH=y\n\n#\n# Common options for df, du, ls\n#\nCONFIG_FEATURE_HUMAN_READABLE=y\n\n#\n# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum\n#\nCONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y\n\n#\n# Console Utilities\n#\n# CONFIG_CHVT is not set\n# CONFIG_FGCONSOLE is not set\n# CONFIG_CLEAR is not set\n# CONFIG_DEALLOCVT is not set\n# CONFIG_DUMPKMAP is not set\n# CONFIG_KBD_MODE is not set\n# CONFIG_LOADFONT is not set\n# CONFIG_LOADKMAP is not set\n# CONFIG_OPENVT is not set\n# CONFIG_RESET is not set\n# CONFIG_RESIZE is not set\n# CONFIG_FEATURE_RESIZE_PRINT is not set\n# CONFIG_SETCONSOLE is not set\n# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set\n# CONFIG_SETFONT is not set\n# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set\nCONFIG_DEFAULT_SETFONT_DIR=\"\"\n# CONFIG_SETKEYCODES is not set\n# CONFIG_SETLOGCONS is not set\n# CONFIG_SHOWKEY is not set\n# CONFIG_FEATURE_LOADFONT_PSF2 is not set\n# CONFIG_FEATURE_LOADFONT_RAW is not set\n\n#\n# Debian Utilities\n#\n# CONFIG_MKTEMP is not set\n# CONFIG_PIPE_PROGRESS is not set\n# CONFIG_RUN_PARTS is not set\n# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set\n# CONFIG_FEATURE_RUN_PARTS_FANCY is not set\n# CONFIG_START_STOP_DAEMON is not set\n# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set\n# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set\nCONFIG_WHICH=y\n\n#\n# Editors\n#\n# CONFIG_AWK is not set\n# CONFIG_FEATURE_AWK_LIBM is not set\n# CONFIG_FEATURE_AWK_GNU_EXTENSIONS is not set\n# CONFIG_CMP is not set\n# CONFIG_DIFF is not set\n# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set\n# CONFIG_FEATURE_DIFF_DIR is not set\n# CONFIG_ED is not set\n# CONFIG_PATCH is not set\nCONFIG_SED=y\n# CONFIG_VI is not set\nCONFIG_FEATURE_VI_MAX_LEN=0\n# CONFIG_FEATURE_VI_8BIT is not set\n# CONFIG_FEATURE_VI_COLON is not set\n# CONFIG_FEATURE_VI_YANKMARK is not set\n# CONFIG_FEATURE_VI_SEARCH is not set\n# CONFIG_FEATURE_VI_REGEX_SEARCH is not set\n# CONFIG_FEATURE_VI_USE_SIGNALS is not set\n# CONFIG_FEATURE_VI_DOT_CMD is not set\n# CONFIG_FEATURE_VI_READONLY is not set\n# CONFIG_FEATURE_VI_SETOPTS is not set\n# CONFIG_FEATURE_VI_SET is not set\n# CONFIG_FEATURE_VI_WIN_RESIZE is not set\n# CONFIG_FEATURE_VI_ASK_TERMINAL is not set\n# CONFIG_FEATURE_VI_UNDO is not set\n# CONFIG_FEATURE_VI_UNDO_QUEUE is not set\nCONFIG_FEATURE_VI_UNDO_QUEUE_MAX=0\n# CONFIG_FEATURE_ALLOW_EXEC is not set\n\n#\n# Finding Utilities\n#\n# CONFIG_FIND is not set\n# CONFIG_FEATURE_FIND_PRINT0 is not set\n# CONFIG_FEATURE_FIND_MTIME is not set\n# CONFIG_FEATURE_FIND_MMIN is not set\n# CONFIG_FEATURE_FIND_PERM is not set\n# CONFIG_FEATURE_FIND_TYPE is not set\n# CONFIG_FEATURE_FIND_XDEV is not set\n# CONFIG_FEATURE_FIND_MAXDEPTH is not set\n# CONFIG_FEATURE_FIND_NEWER is not set\n# CONFIG_FEATURE_FIND_INUM is not set\n# CONFIG_FEATURE_FIND_EXEC is not set\n# CONFIG_FEATURE_FIND_EXEC_PLUS is not set\n# CONFIG_FEATURE_FIND_USER is not set\n# CONFIG_FEATURE_FIND_GROUP is not set\n# CONFIG_FEATURE_FIND_NOT is not set\n# CONFIG_FEATURE_FIND_DEPTH is not set\n# CONFIG_FEATURE_FIND_PAREN is not set\n# CONFIG_FEATURE_FIND_SIZE is not set\n# CONFIG_FEATURE_FIND_PRUNE is not set\n# CONFIG_FEATURE_FIND_DELETE is not set\n# CONFIG_FEATURE_FIND_PATH is not set\n# CONFIG_FEATURE_FIND_REGEX is not set\n# CONFIG_FEATURE_FIND_CONTEXT is not set\n# CONFIG_FEATURE_FIND_LINKS is not set\nCONFIG_GREP=y\nCONFIG_FEATURE_GREP_EGREP_ALIAS=y\nCONFIG_FEATURE_GREP_FGREP_ALIAS=y\nCONFIG_FEATURE_GREP_CONTEXT=y\nCONFIG_XARGS=y\n# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set\nCONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y\nCONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y\nCONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y\nCONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y\n\n#\n# Init Utilities\n#\n# CONFIG_BOOTCHARTD is not set\n# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set\n# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set\nCONFIG_HALT=y\n# CONFIG_FEATURE_CALL_TELINIT is not set\nCONFIG_TELINIT_PATH=\"\"\nCONFIG_INIT=y\n# CONFIG_FEATURE_USE_INITTAB is not set\n# CONFIG_FEATURE_KILL_REMOVED is not set\nCONFIG_FEATURE_KILL_DELAY=0\nCONFIG_FEATURE_INIT_SCTTY=y\nCONFIG_FEATURE_INIT_SYSLOG=y\nCONFIG_FEATURE_EXTRA_QUIET=y\n# CONFIG_FEATURE_INIT_COREDUMPS is not set\nCONFIG_FEATURE_INITRD=y\nCONFIG_INIT_TERMINAL_TYPE=\"linux\"\nCONFIG_MESG=y\nCONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y\n\n#\n# Login/Password Management Utilities\n#\n# CONFIG_ADD_SHELL is not set\n# CONFIG_REMOVE_SHELL is not set\n# CONFIG_FEATURE_SHADOWPASSWDS is not set\n# CONFIG_USE_BB_PWD_GRP is not set\n# CONFIG_USE_BB_SHADOW is not set\nCONFIG_USE_BB_CRYPT=y\n# CONFIG_USE_BB_CRYPT_SHA is not set\n# CONFIG_ADDUSER is not set\n# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set\n# CONFIG_FEATURE_CHECK_NAMES is not set\nCONFIG_LAST_ID=0\nCONFIG_FIRST_SYSTEM_ID=0\nCONFIG_LAST_SYSTEM_ID=0\n# CONFIG_ADDGROUP is not set\n# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set\n# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set\n# CONFIG_DELUSER is not set\n# CONFIG_DELGROUP is not set\n# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set\nCONFIG_GETTY=y\n# CONFIG_LOGIN is not set\n# CONFIG_LOGIN_SESSION_AS_CHILD is not set\n# CONFIG_LOGIN_SCRIPTS is not set\n# CONFIG_FEATURE_NOLOGIN is not set\n# CONFIG_FEATURE_SECURETTY is not set\nCONFIG_PASSWD=y\nCONFIG_FEATURE_PASSWD_WEAK_CHECK=y\n# CONFIG_CRYPTPW is not set\n# CONFIG_CHPASSWD is not set\nCONFIG_FEATURE_DEFAULT_PASSWD_ALGO=\"des\"\n# CONFIG_SU is not set\n# CONFIG_FEATURE_SU_SYSLOG is not set\n# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set\n# CONFIG_SULOGIN is not set\n# CONFIG_VLOCK is not set\n\n#\n# Linux Ext2 FS Progs\n#\n# CONFIG_CHATTR is not set\n# CONFIG_FSCK is not set\n# CONFIG_LSATTR is not set\n# CONFIG_TUNE2FS is not set\n\n#\n# Linux Module Utilities\n#\n# CONFIG_MODINFO is not set\n# CONFIG_MODPROBE_SMALL is not set\n# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set\n# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set\n# CONFIG_INSMOD is not set\n# CONFIG_RMMOD is not set\n# CONFIG_LSMOD is not set\n# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set\n# CONFIG_MODPROBE is not set\n# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set\n# CONFIG_DEPMOD is not set\n\n#\n# Options common to multiple modutils\n#\n# CONFIG_FEATURE_2_4_MODULES is not set\n# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set\n# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set\n# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set\n# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set\n# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set\n# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set\n# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set\n# CONFIG_FEATURE_MODUTILS_ALIAS is not set\n# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set\nCONFIG_DEFAULT_MODULES_DIR=\"\"\nCONFIG_DEFAULT_DEPMOD_FILE=\"\"\n\n#\n# Linux System Utilities\n#\n# CONFIG_BLOCKDEV is not set\n# CONFIG_FATATTR is not set\n# CONFIG_FSTRIM is not set\n# CONFIG_MDEV is not set\n# CONFIG_FEATURE_MDEV_CONF is not set\n# CONFIG_FEATURE_MDEV_RENAME is not set\n# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set\n# CONFIG_FEATURE_MDEV_EXEC is not set\n# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set\nCONFIG_MOUNT=y\n# CONFIG_FEATURE_MOUNT_FAKE is not set\n# CONFIG_FEATURE_MOUNT_VERBOSE is not set\n# CONFIG_FEATURE_MOUNT_HELPERS is not set\n# CONFIG_FEATURE_MOUNT_LABEL is not set\n# CONFIG_FEATURE_MOUNT_NFS is not set\n# CONFIG_FEATURE_MOUNT_CIFS is not set\nCONFIG_FEATURE_MOUNT_FLAGS=y\n# CONFIG_FEATURE_MOUNT_FSTAB is not set\n# CONFIG_FEATURE_MOUNT_OTHERTAB is not set\n# CONFIG_REV is not set\n# CONFIG_UEVENT is not set\n# CONFIG_ACPID is not set\n# CONFIG_FEATURE_ACPID_COMPAT is not set\n# CONFIG_BLKID is not set\n# CONFIG_FEATURE_BLKID_TYPE is not set\nCONFIG_DMESG=y\nCONFIG_FEATURE_DMESG_PRETTY=y\n# CONFIG_FBSET is not set\n# CONFIG_FEATURE_FBSET_FANCY is not set\n# CONFIG_FEATURE_FBSET_READMODE is not set\n# CONFIG_FDFLUSH is not set\n# CONFIG_FDFORMAT is not set\n# CONFIG_FDISK is not set\n# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set\n# CONFIG_FEATURE_FDISK_WRITABLE is not set\n# CONFIG_FEATURE_AIX_LABEL is not set\n# CONFIG_FEATURE_SGI_LABEL is not set\n# CONFIG_FEATURE_SUN_LABEL is not set\n# CONFIG_FEATURE_OSF_LABEL is not set\n# CONFIG_FEATURE_GPT_LABEL is not set\n# CONFIG_FEATURE_FDISK_ADVANCED is not set\n# CONFIG_FINDFS is not set\n# CONFIG_FLOCK is not set\n# CONFIG_FREERAMDISK is not set\n# CONFIG_FSCK_MINIX is not set\n# CONFIG_MKFS_EXT2 is not set\n# CONFIG_MKFS_MINIX is not set\n# CONFIG_FEATURE_MINIX2 is not set\n# CONFIG_MKFS_REISER is not set\n# CONFIG_MKFS_VFAT is not set\n# CONFIG_GETOPT is not set\n# CONFIG_FEATURE_GETOPT_LONG is not set\n# CONFIG_HEXDUMP is not set\n# CONFIG_FEATURE_HEXDUMP_REVERSE is not set\n# CONFIG_HD is not set\n# CONFIG_HWCLOCK is not set\n# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set\n# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set\n# CONFIG_IPCRM is not set\n# CONFIG_IPCS is not set\n# CONFIG_LOSETUP is not set\n# CONFIG_LSPCI is not set\n# CONFIG_LSUSB is not set\n# CONFIG_MKSWAP is not set\n# CONFIG_FEATURE_MKSWAP_UUID is not set\n# CONFIG_MORE is not set\n# CONFIG_PIVOT_ROOT is not set\n# CONFIG_RDATE is not set\n# CONFIG_RDEV is not set\n# CONFIG_READPROFILE is not set\n# CONFIG_RTCWAKE is not set\n# CONFIG_SCRIPT is not set\n# CONFIG_SCRIPTREPLAY is not set\n# CONFIG_SETARCH is not set\n# CONFIG_SWAPONOFF is not set\n# CONFIG_FEATURE_SWAPON_DISCARD is not set\n# CONFIG_FEATURE_SWAPON_PRI is not set\n# CONFIG_SWITCH_ROOT is not set\nCONFIG_UMOUNT=y\nCONFIG_FEATURE_UMOUNT_ALL=y\n\n#\n# Common options for mount/umount\n#\nCONFIG_FEATURE_MOUNT_LOOP=y\nCONFIG_FEATURE_MOUNT_LOOP_CREATE=y\n# CONFIG_FEATURE_MTAB_SUPPORT is not set\n# CONFIG_VOLUMEID is not set\n# CONFIG_FEATURE_VOLUMEID_BTRFS is not set\n# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set\n# CONFIG_FEATURE_VOLUMEID_EXFAT is not set\n# CONFIG_FEATURE_VOLUMEID_EXT is not set\n# CONFIG_FEATURE_VOLUMEID_F2FS is not set\n# CONFIG_FEATURE_VOLUMEID_FAT is not set\n# CONFIG_FEATURE_VOLUMEID_HFS is not set\n# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set\n# CONFIG_FEATURE_VOLUMEID_JFS is not set\n# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set\n# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set\n# CONFIG_FEATURE_VOLUMEID_LUKS is not set\n# CONFIG_FEATURE_VOLUMEID_NILFS is not set\n# CONFIG_FEATURE_VOLUMEID_NTFS is not set\n# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set\n# CONFIG_FEATURE_VOLUMEID_REISERFS is not set\n# CONFIG_FEATURE_VOLUMEID_ROMFS is not set\n# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set\n# CONFIG_FEATURE_VOLUMEID_SYSV is not set\n# CONFIG_FEATURE_VOLUMEID_UDF is not set\n# CONFIG_FEATURE_VOLUMEID_XFS is not set\n\n#\n# Miscellaneous Utilities\n#\n# CONFIG_CONSPY is not set\n# CONFIG_CROND is not set\n# CONFIG_FEATURE_CROND_D is not set\n# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set\nCONFIG_FEATURE_CROND_DIR=\"\"\n# CONFIG_I2CGET is not set\n# CONFIG_I2CSET is not set\n# CONFIG_I2CDUMP is not set\n# CONFIG_I2CDETECT is not set\n# CONFIG_LESS is not set\nCONFIG_FEATURE_LESS_MAXLINES=0\n# CONFIG_FEATURE_LESS_BRACKETS is not set\n# CONFIG_FEATURE_LESS_FLAGS is not set\n# CONFIG_FEATURE_LESS_TRUNCATE is not set\n# CONFIG_FEATURE_LESS_MARKS is not set\n# CONFIG_FEATURE_LESS_REGEXP is not set\n# CONFIG_FEATURE_LESS_WINCH is not set\n# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set\n# CONFIG_FEATURE_LESS_DASHCMD is not set\n# CONFIG_FEATURE_LESS_LINENUMS is not set\n# CONFIG_NANDWRITE is not set\n# CONFIG_NANDDUMP is not set\n# CONFIG_RFKILL is not set\n# CONFIG_SETSERIAL is not set\n# CONFIG_TASKSET is not set\n# CONFIG_FEATURE_TASKSET_FANCY is not set\n# CONFIG_UBIATTACH is not set\n# CONFIG_UBIDETACH is not set\n# CONFIG_UBIMKVOL is not set\n# CONFIG_UBIRMVOL is not set\n# CONFIG_UBIRSVOL is not set\n# CONFIG_UBIUPDATEVOL is not set\n# CONFIG_WALL is not set\n# CONFIG_ADJTIMEX is not set\n# CONFIG_BBCONFIG is not set\n# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set\n# CONFIG_BEEP is not set\nCONFIG_FEATURE_BEEP_FREQ=0\nCONFIG_FEATURE_BEEP_LENGTH_MS=0\n# CONFIG_CHAT is not set\n# CONFIG_FEATURE_CHAT_NOFAIL is not set\n# CONFIG_FEATURE_CHAT_TTY_HIFI is not set\n# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set\n# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set\n# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set\n# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set\n# CONFIG_FEATURE_CHAT_CLR_ABORT is not set\n# CONFIG_CHRT is not set\n# CONFIG_CRONTAB is not set\n# CONFIG_DC is not set\n# CONFIG_FEATURE_DC_LIBM is not set\n# CONFIG_DEVFSD is not set\n# CONFIG_DEVFSD_MODLOAD is not set\n# CONFIG_DEVFSD_FG_NP is not set\n# CONFIG_DEVFSD_VERBOSE is not set\n# CONFIG_FEATURE_DEVFS is not set\n# CONFIG_DEVMEM is not set\n# CONFIG_EJECT is not set\n# CONFIG_FEATURE_EJECT_SCSI is not set\n# CONFIG_FBSPLASH is not set\n# CONFIG_FLASHCP is not set\n# CONFIG_FLASH_LOCK is not set\n# CONFIG_FLASH_UNLOCK is not set\n# CONFIG_FLASH_ERASEALL is not set\n# CONFIG_IONICE is not set\n# CONFIG_INOTIFYD is not set\n# CONFIG_LAST is not set\n# CONFIG_FEATURE_LAST_SMALL is not set\n# CONFIG_FEATURE_LAST_FANCY is not set\n# CONFIG_HDPARM is not set\n# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set\n# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set\n# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set\n# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set\n# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set\n# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set\n# CONFIG_MAKEDEVS is not set\n# CONFIG_FEATURE_MAKEDEVS_LEAF is not set\n# CONFIG_FEATURE_MAKEDEVS_TABLE is not set\n# CONFIG_MAN is not set\n# CONFIG_MICROCOM is not set\n# CONFIG_MOUNTPOINT is not set\n# CONFIG_MT is not set\n# CONFIG_RAIDAUTORUN is not set\n# CONFIG_READAHEAD is not set\n# CONFIG_RUNLEVEL is not set\n# CONFIG_RX is not set\n# CONFIG_SETSID is not set\n# CONFIG_STRINGS is not set\nCONFIG_TIME=y\n# CONFIG_TIMEOUT is not set\n# CONFIG_TTYSIZE is not set\n# CONFIG_VOLNAME is not set\n# CONFIG_WATCHDOG is not set\n\n#\n# Networking Utilities\n#\n# CONFIG_NAMEIF is not set\n# CONFIG_FEATURE_NAMEIF_EXTENDED is not set\n# CONFIG_NBDCLIENT is not set\n# CONFIG_NC is not set\n# CONFIG_NC_SERVER is not set\n# CONFIG_NC_EXTRA is not set\n# CONFIG_NC_110_COMPAT is not set\n# CONFIG_PING is not set\n# CONFIG_PING6 is not set\n# CONFIG_FEATURE_FANCY_PING is not set\n# CONFIG_WGET is not set\n# CONFIG_FEATURE_WGET_STATUSBAR is not set\n# CONFIG_FEATURE_WGET_AUTHENTICATION is not set\n# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set\n# CONFIG_FEATURE_WGET_TIMEOUT is not set\n# CONFIG_FEATURE_WGET_OPENSSL is not set\n# CONFIG_FEATURE_WGET_SSL_HELPER is not set\n# CONFIG_WHOIS is not set\n# CONFIG_FEATURE_IPV6 is not set\n# CONFIG_FEATURE_UNIX_LOCAL is not set\n# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set\n# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set\n# CONFIG_ARP is not set\n# CONFIG_ARPING is not set\n# CONFIG_BRCTL is not set\n# CONFIG_FEATURE_BRCTL_FANCY is not set\n# CONFIG_FEATURE_BRCTL_SHOW is not set\n# CONFIG_DNSD is not set\n# CONFIG_ETHER_WAKE is not set\n# CONFIG_FAKEIDENTD is not set\n# CONFIG_FTPD is not set\n# CONFIG_FEATURE_FTP_WRITE is not set\n# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set\n# CONFIG_FEATURE_FTP_AUTHENTICATION is not set\n# CONFIG_FTPGET is not set\n# CONFIG_FTPPUT is not set\n# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set\n# CONFIG_HOSTNAME is not set\n# CONFIG_HTTPD is not set\n# CONFIG_FEATURE_HTTPD_RANGES is not set\n# CONFIG_FEATURE_HTTPD_SETUID is not set\n# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set\n# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set\n# CONFIG_FEATURE_HTTPD_CGI is not set\n# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set\n# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set\n# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set\n# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set\n# CONFIG_FEATURE_HTTPD_PROXY is not set\n# CONFIG_FEATURE_HTTPD_GZIP is not set\n# CONFIG_IFCONFIG is not set\n# CONFIG_FEATURE_IFCONFIG_STATUS is not set\n# CONFIG_FEATURE_IFCONFIG_SLIP is not set\n# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set\n# CONFIG_FEATURE_IFCONFIG_HW is not set\n# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set\n# CONFIG_IFENSLAVE is not set\n# CONFIG_IFPLUGD is not set\n# CONFIG_IFUPDOWN is not set\nCONFIG_IFUPDOWN_IFSTATE_PATH=\"\"\n# CONFIG_FEATURE_IFUPDOWN_IP is not set\n# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set\n# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set\n# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set\n# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set\n# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set\n# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set\n# CONFIG_INETD is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set\n# CONFIG_FEATURE_INETD_RPC is not set\n# CONFIG_IP is not set\n# CONFIG_FEATURE_IP_ADDRESS is not set\n# CONFIG_FEATURE_IP_LINK is not set\n# CONFIG_FEATURE_IP_ROUTE is not set\nCONFIG_FEATURE_IP_ROUTE_DIR=\"\"\n# CONFIG_FEATURE_IP_TUNNEL is not set\n# CONFIG_FEATURE_IP_RULE is not set\n# CONFIG_FEATURE_IP_SHORT_FORMS is not set\n# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set\n# CONFIG_IPADDR is not set\n# CONFIG_IPLINK is not set\n# CONFIG_IPROUTE is not set\n# CONFIG_IPTUNNEL is not set\n# CONFIG_IPRULE is not set\n# CONFIG_IPCALC is not set\n# CONFIG_FEATURE_IPCALC_FANCY is not set\n# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set\n# CONFIG_NETSTAT is not set\n# CONFIG_FEATURE_NETSTAT_WIDE is not set\n# CONFIG_FEATURE_NETSTAT_PRG is not set\n# CONFIG_NSLOOKUP is not set\n# CONFIG_NTPD is not set\n# CONFIG_FEATURE_NTPD_SERVER is not set\n# CONFIG_FEATURE_NTPD_CONF is not set\n# CONFIG_PSCAN is not set\n# CONFIG_ROUTE is not set\n# CONFIG_SLATTACH is not set\n# CONFIG_TCPSVD is not set\n# CONFIG_TELNET is not set\n# CONFIG_FEATURE_TELNET_TTYPE is not set\n# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set\n# CONFIG_TELNETD is not set\n# CONFIG_FEATURE_TELNETD_STANDALONE is not set\n# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set\n# CONFIG_TFTP is not set\n# CONFIG_TFTPD is not set\n# CONFIG_FEATURE_TFTP_GET is not set\n# CONFIG_FEATURE_TFTP_PUT is not set\n# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set\n# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set\n# CONFIG_TFTP_DEBUG is not set\n# CONFIG_TRACEROUTE is not set\n# CONFIG_TRACEROUTE6 is not set\n# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set\n# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set\n# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set\n# CONFIG_TUNCTL is not set\n# CONFIG_FEATURE_TUNCTL_UG is not set\n# CONFIG_UDHCPC6 is not set\n# CONFIG_UDHCPD is not set\n# CONFIG_DHCPRELAY is not set\n# CONFIG_DUMPLEASES is not set\n# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set\n# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set\nCONFIG_DHCPD_LEASES_FILE=\"\"\n# CONFIG_UDHCPC is not set\n# CONFIG_FEATURE_UDHCPC_ARPING is not set\n# CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set\n# CONFIG_FEATURE_UDHCP_PORT is not set\nCONFIG_UDHCP_DEBUG=0\n# CONFIG_FEATURE_UDHCP_RFC3397 is not set\n# CONFIG_FEATURE_UDHCP_8021Q is not set\nCONFIG_UDHCPC_DEFAULT_SCRIPT=\"\"\nCONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0\nCONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=\"\"\n# CONFIG_UDPSVD is not set\n# CONFIG_VCONFIG is not set\n# CONFIG_ZCIP is not set\n\n#\n# Print Utilities\n#\n# CONFIG_LPD is not set\n# CONFIG_LPR is not set\n# CONFIG_LPQ is not set\n\n#\n# Mail Utilities\n#\n# CONFIG_MAKEMIME is not set\nCONFIG_FEATURE_MIME_CHARSET=\"\"\n# CONFIG_POPMAILDIR is not set\n# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set\n# CONFIG_REFORMIME is not set\n# CONFIG_FEATURE_REFORMIME_COMPAT is not set\n# CONFIG_SENDMAIL is not set\n\n#\n# Process Utilities\n#\n# CONFIG_IOSTAT is not set\n# CONFIG_LSOF is not set\n# CONFIG_MPSTAT is not set\n# CONFIG_NMETER is not set\n# CONFIG_PMAP is not set\n# CONFIG_POWERTOP is not set\n# CONFIG_PSTREE is not set\n# CONFIG_PWDX is not set\n# CONFIG_SMEMCAP is not set\n# CONFIG_TOP is not set\n# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set\n# CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set\n# CONFIG_FEATURE_TOP_SMP_CPU is not set\n# CONFIG_FEATURE_TOP_DECIMALS is not set\n# CONFIG_FEATURE_TOP_SMP_PROCESS is not set\n# CONFIG_FEATURE_TOPMEM is not set\n# CONFIG_UPTIME is not set\n# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set\n# CONFIG_FREE is not set\n# CONFIG_FUSER is not set\nCONFIG_KILL=y\nCONFIG_KILLALL=y\nCONFIG_KILLALL5=y\n# CONFIG_PGREP is not set\nCONFIG_PIDOF=y\nCONFIG_FEATURE_PIDOF_SINGLE=y\nCONFIG_FEATURE_PIDOF_OMIT=y\n# CONFIG_PKILL is not set\n# CONFIG_PS is not set\n# CONFIG_FEATURE_PS_WIDE is not set\n# CONFIG_FEATURE_PS_LONG is not set\n# CONFIG_FEATURE_PS_TIME is not set\n# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set\n# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set\n# CONFIG_RENICE is not set\n# CONFIG_BB_SYSCTL is not set\n# CONFIG_FEATURE_SHOW_THREADS is not set\n# CONFIG_WATCH is not set\n\n#\n# Runit Utilities\n#\n# CONFIG_RUNSV is not set\n# CONFIG_RUNSVDIR is not set\n# CONFIG_FEATURE_RUNSVDIR_LOG is not set\n# CONFIG_SV is not set\nCONFIG_SV_DEFAULT_SERVICE_DIR=\"\"\n# CONFIG_SVLOGD is not set\n# CONFIG_CHPST is not set\n# CONFIG_SETUIDGID is not set\n# CONFIG_ENVUIDGID is not set\n# CONFIG_ENVDIR is not set\n# CONFIG_SOFTLIMIT is not set\n# CONFIG_CHCON is not set\n# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set\n# CONFIG_GETENFORCE is not set\n# CONFIG_GETSEBOOL is not set\n# CONFIG_LOAD_POLICY is not set\n# CONFIG_MATCHPATHCON is not set\n# CONFIG_RESTORECON is not set\n# CONFIG_RUNCON is not set\n# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set\n# CONFIG_SELINUXENABLED is not set\n# CONFIG_SETENFORCE is not set\n# CONFIG_SETFILES is not set\n# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set\n# CONFIG_SETSEBOOL is not set\n# CONFIG_SESTATUS is not set\n\n#\n# Shells\n#\nCONFIG_ASH=y\nCONFIG_ASH_BASH_COMPAT=y\n# CONFIG_ASH_IDLE_TIMEOUT is not set\nCONFIG_ASH_JOB_CONTROL=y\nCONFIG_ASH_ALIAS=y\nCONFIG_ASH_GETOPTS=y\nCONFIG_ASH_BUILTIN_ECHO=y\nCONFIG_ASH_BUILTIN_PRINTF=y\nCONFIG_ASH_BUILTIN_TEST=y\nCONFIG_ASH_HELP=y\nCONFIG_ASH_CMDCMD=y\n# CONFIG_ASH_MAIL is not set\nCONFIG_ASH_OPTIMIZE_FOR_SIZE=y\nCONFIG_ASH_RANDOM_SUPPORT=y\nCONFIG_ASH_EXPAND_PRMT=y\n# CONFIG_CTTYHACK is not set\n# CONFIG_HUSH is not set\n# CONFIG_HUSH_BASH_COMPAT is not set\n# CONFIG_HUSH_BRACE_EXPANSION is not set\n# CONFIG_HUSH_HELP is not set\n# CONFIG_HUSH_INTERACTIVE is not set\n# CONFIG_HUSH_SAVEHISTORY is not set\n# CONFIG_HUSH_JOB is not set\n# CONFIG_HUSH_TICK is not set\n# CONFIG_HUSH_IF is not set\n# CONFIG_HUSH_LOOPS is not set\n# CONFIG_HUSH_CASE is not set\n# CONFIG_HUSH_FUNCTIONS is not set\n# CONFIG_HUSH_LOCAL is not set\n# CONFIG_HUSH_RANDOM_SUPPORT is not set\n# CONFIG_HUSH_EXPORT_N is not set\n# CONFIG_HUSH_MODE_X is not set\n# CONFIG_MSH is not set\nCONFIG_FEATURE_SH_IS_ASH=y\n# CONFIG_FEATURE_SH_IS_HUSH is not set\n# CONFIG_FEATURE_SH_IS_NONE is not set\n# CONFIG_FEATURE_BASH_IS_ASH is not set\n# CONFIG_FEATURE_BASH_IS_HUSH is not set\nCONFIG_FEATURE_BASH_IS_NONE=y\nCONFIG_SH_MATH_SUPPORT=y\nCONFIG_SH_MATH_SUPPORT_64=y\nCONFIG_FEATURE_SH_EXTRA_QUIET=y\n# CONFIG_FEATURE_SH_STANDALONE is not set\n# CONFIG_FEATURE_SH_NOFORK is not set\nCONFIG_FEATURE_SH_HISTFILESIZE=y\n\n#\n# System Logging Utilities\n#\n# CONFIG_SYSLOGD is not set\n# CONFIG_FEATURE_ROTATE_LOGFILE is not set\n# CONFIG_FEATURE_REMOTE_LOG is not set\n# CONFIG_FEATURE_SYSLOGD_DUP is not set\n# CONFIG_FEATURE_SYSLOGD_CFG is not set\nCONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0\n# CONFIG_FEATURE_IPC_SYSLOG is not set\nCONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0\n# CONFIG_LOGREAD is not set\n# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set\n# CONFIG_FEATURE_KMSG_SYSLOG is not set\n# CONFIG_KLOGD is not set\n# CONFIG_FEATURE_KLOGD_KLOGCTL is not set\n# CONFIG_LOGGER is not set\n"
  },
  {
    "path": "board/common/cleanup.sh",
    "content": "#!/bin/bash\n\nTARGET=$1\n\ntest -n \"${TARGET}\" || exit 1\n\nfind ${TARGET} -name '.empty' | xargs -r rm\n\n# /etc stuff\nrm -rf ${TARGET}/etc/network/\nrm -rf ${TARGET}/etc/dhcp/\nrm -rf ${TARGET}/etc/rc_keymaps/\nrm -rf ${TARGET}/etc/default/\nrm -rf ${TARGET}/etc/ctdb/\nrm -rf ${TARGET}/etc/sudoers.d/\nrm -rf ${TARGET}/etc/ssl/man\nrm -rf ${TARGET}/etc/ssl/misc\nrm -rf ${TARGET}/etc/ssl/private\nrm -rf ${TARGET}/etc/logrotate.d\nrm -rf ${TARGET}/etc/fstab\n\nrm -f ${TARGET}/etc/rc_maps.cfg\nrm -f ${TARGET}/etc/udev/hwdb.d/20-pci-vendor-model.hwdb\nrm -f ${TARGET}/etc/os-release\nrm -f ${TARGET}/etc/hostapd.conf\nrm -f ${TARGET}/etc/timezone\n\nrm -f ${TARGET}/etc/cron.d/e2scrub_all\n\n# /usr/share stuff\nrm -rf ${TARGET}/usr/share/bash-completion/\nrm -rf ${TARGET}/usr/share/locale/*\nrm -rf ${TARGET}/usr/share/ffmpeg/\nrm -rf ${TARGET}/usr/share/perl5/\nrm -rf ${TARGET}/usr/share/common-lisp/\n\n# various binaries\nrm -f ${TARGET}/bin/more\nrm -f ${TARGET}/bin/wdctl\nrm -f ${TARGET}/usr/sbin/readprofile\nrm -f ${TARGET}/sbin/nologin\nrm -f ${TARGET}/sbin/ldattach\nrm -f ${TARGET}/usr/sbin/ldattach\nrm -f ${TARGET}/sbin/slattach\nrm -f ${TARGET}/sbin/plipconfig\nrm -f ${TARGET}/sbin/fstrim\nrm -f ${TARGET}/usr/sbin/rtcwake\nrm -f ${TARGET}/bin/lsblk\nrm -f ${TARGET}/usr/bin/col\nrm -f ${TARGET}/sbin/fdformat\nrm -f ${TARGET}/sbin/ctrlaltdel\nrm -f ${TARGET}/bin/findmnt\nrm -f ${TARGET}/usr/bin/colcrt\nrm -f ${TARGET}/sbin/fsfreeze\nrm -f ${TARGET}/usr/bin/colrm\nrm -f ${TARGET}/usr/sbin/addpart\nrm -f ${TARGET}/sbin/blkdiscard\nrm -f ${TARGET}/usr/sbin/delpart\nrm -f ${TARGET}/usr/sbin/resizepart\nrm -f ${TARGET}/usr/bin/hexdump\nrm -f ${TARGET}/usr/bin/rev\nrm -f ${TARGET}/sbin/chcpu\nrm -f ${TARGET}/usr/bin/tailf\nrm -f ${TARGET}/usr/bin/pg\nrm -f ${TARGET}/sbin/blkid\nrm -f ${TARGET}/usr/bin/ul\nrm -f ${TARGET}/sbin/findfs\nrm -f ${TARGET}/sbin/wipefs\nrm -f ${TARGET}/usr/bin/scriptreplay\nrm -f ${TARGET}/usr/bin/scriptlive\nrm -f ${TARGET}/sbin/fsck.minix\nrm -f ${TARGET}/sbin/mkfs.minix\nrm -f ${TARGET}/usr/bin/setterm\nrm -f ${TARGET}/usr/bin/flock\nrm -f ${TARGET}/sbin/mkfs\nrm -f ${TARGET}/usr/bin/ipcmk\nrm -f ${TARGET}/sbin/mkfs.bfs\nrm -f ${TARGET}/usr/bin/ipcrm\nrm -f ${TARGET}/usr/bin/ipcs\nrm -f ${TARGET}/usr/bin/setsid\nrm -f ${TARGET}/sbin/blockdev\nrm -f ${TARGET}/usr/bin/cytune\nrm -f ${TARGET}/usr/bin/setarch\nrm -f ${TARGET}/sbin/sfdisk\nrm -f ${TARGET}/usr/bin/prlimit\nrm -f ${TARGET}/sbin/cfdisk\nrm -f ${TARGET}/usr/bin/lscpu\nrm -f ${TARGET}/usr/bin/unshare\nrm -f ${TARGET}/usr/bin/nsenter\nrm -f ${TARGET}/usr/bin/cal\nrm -f ${TARGET}/usr/bin/look\nrm -f ${TARGET}/usr/bin/mcookie\nrm -f ${TARGET}/usr/bin/namei\nrm -f ${TARGET}/usr/bin/whereis\nrm -f ${TARGET}/usr/bin/lslocks\nrm -f ${TARGET}/usr/bin/uuidgen\nrm -f ${TARGET}/usr/bin/getopt\nrm -f ${TARGET}/bin/isosize\nrm -f ${TARGET}/usr/sbin/fdformat\nrm -f ${TARGET}/usr/bin/linux32\nrm -f ${TARGET}/usr/bin/linux64\nrm -f ${TARGET}/usr/bin/uname26\nrm -f ${TARGET}/bin/zcmp\nrm -f ${TARGET}/bin/zdiff\nrm -f ${TARGET}/bin/zegrep\nrm -f ${TARGET}/bin/zfgrep\nrm -f ${TARGET}/bin/zforce\nrm -f ${TARGET}/bin/zmore\nrm -f ${TARGET}/bin/znew\nrm -f ${TARGET}/bin/gzexe\nrm -f ${TARGET}/bin/uncompress\nrm -f ${TARGET}/usr/bin/slogin\nrm -f ${TARGET}/usr/bin/ssh-keyscan\nrm -f ${TARGET}/usr/bin/ssh-add\nrm -f ${TARGET}/usr/bin/ssh-agent\nrm -f ${TARGET}/usr/bin/xmllint\n\nrm -f ${TARGET}/usr/libexec/ssh-keysign\nrm -f ${TARGET}/usr/libexec/ssh-pkcs11-helper\nrm -f ${TARGET}/usr/libexec/rmt\n\n# samba4 unneeded stuff\nrm -f ${TARGET}/usr/bin/cifsdd\nrm -f ${TARGET}/usr/bin/containers_*\nrm -f ${TARGET}/usr/bin/ctdb*\nrm -f ${TARGET}/usr/bin/dbwrap_tool\nrm -f ${TARGET}/usr/bin/eventlogadm\nrm -f ${TARGET}/usr/bin/event_rpcgen.py\nrm -f ${TARGET}/usr/bin/gentest\nrm -f ${TARGET}/usr/bin/ldb*\nrm -f ${TARGET}/usr/bin/locktest\nrm -f ${TARGET}/usr/bin/ltdbtool\nrm -f ${TARGET}/usr/bin/masktest\nrm -f ${TARGET}/usr/bin/ndrdump\nrm -f ${TARGET}/usr/bin/net\nrm -f ${TARGET}/usr/bin/ntdb*\nrm -f ${TARGET}/usr/bin/ntlm_auth\nrm -f ${TARGET}/usr/bin/oLschema2ldif\nrm -f ${TARGET}/usr/bin/onnode\nrm -f ${TARGET}/usr/bin/pdbedit\nrm -f ${TARGET}/usr/bin/pidl\nrm -f ${TARGET}/usr/bin/ping_pong\nrm -f ${TARGET}/usr/bin/profiles\nrm -f ${TARGET}/usr/bin/reg*\nrm -f ${TARGET}/usr/bin/rpcclient\nrm -f ${TARGET}/usr/bin/samba-regedit\nrm -f ${TARGET}/usr/bin/sharesec\nrm -f ${TARGET}/usr/bin/smbcacls\nrm -f ${TARGET}/usr/bin/smbcontrol\nrm -f ${TARGET}/usr/bin/smbcquotas\nrm -f ${TARGET}/usr/bin/smbget\nrm -f ${TARGET}/usr/bin/smbspool\nrm -f ${TARGET}/usr/bin/smbstatus\nrm -f ${TARGET}/usr/bin/smbta-util\nrm -f ${TARGET}/usr/bin/smbtar\nrm -f ${TARGET}/usr/bin/smbtree\nrm -f ${TARGET}/usr/bin/smnotify\nrm -f ${TARGET}/usr/bin/tdb*\nrm -f ${TARGET}/usr/bin/testparm\nrm -f ${TARGET}/usr/bin/wbinfo\nrm -f ${TARGET}/usr/sbin/winbindd\nrm -rf ${TARGET}/usr/share/ctdb\n\n# unused mongodb binaries\nrm -f ${TARGET}/usr/bin/mongos\nrm -f ${TARGET}/usr/bin/mongoperf\n\n# unused redis binaries\nrm -f $TARGET/usr/bin/redis-check-aof\nrm -f $TARGET/usr/bin/redis-check-rdb\nrm -f $TARGET/usr/bin/redis-benchmark\nrm -f $TARGET/usr/bin/redis-cli\nrm -f $TARGET/usr/bin/redis-sentinel\n\n# v4l-utils\nrm -f ${TARGET}/usr/bin/cec-compliance\nrm -f ${TARGET}/usr/bin/cec-ctl\nrm -f ${TARGET}/usr/bin/cec-follower\nrm -f ${TARGET}/usr/bin/dvb-fe-tool\nrm -f ${TARGET}/usr/bin/dvb-format-convert\nrm -f ${TARGET}/usr/bin/dvbv5-daemon\nrm -f ${TARGET}/usr/bin/dvbv5-scan\nrm -f ${TARGET}/usr/bin/dvbv5-zap\nrm -f ${TARGET}/usr/bin/media-ctl\nrm -f ${TARGET}/usr/bin/rds-ctl\nrm -f ${TARGET}/usr/bin/v4l2-compliance\n\n# unused python folders\nrm -rf ${TARGET}/usr/lib/python*/site-packages/samba/\nrm -rf ${TARGET}/usr/lib/python*/unittest/\n\n# buildroot default startup scripts\nrm -f ${TARGET}/etc/init.d/S01syslogd\nrm -f ${TARGET}/etc/init.d/S02sysctl\nrm -f ${TARGET}/etc/init.d/S10udev\nrm -f ${TARGET}/etc/init.d/S15watchdog\nrm -f ${TARGET}/etc/init.d/S20urandom\nrm -f ${TARGET}/etc/init.d/S21rngd\nrm -f ${TARGET}/etc/init.d/S30cgroupfs\nrm -f ${TARGET}/etc/init.d/S35iptables\nrm -f ${TARGET}/etc/init.d/S40bluetooth\nrm -f ${TARGET}/etc/init.d/S40bluetoothd\nrm -f ${TARGET}/etc/init.d/S45connman\nrm -f ${TARGET}/etc/init.d/S48sntp\nrm -f ${TARGET}/etc/init.d/S49ntp\nrm -f ${TARGET}/etc/init.d/S49chrony\nrm -f ${TARGET}/etc/init.d/S50avahi-daemon\nrm -f ${TARGET}/etc/init.d/S50sshd\nrm -f ${TARGET}/etc/init.d/S50proftpd\nrm -f ${TARGET}/etc/init.d/S50postgresql\nrm -f ${TARGET}/etc/init.d/S50redis\nrm -f ${TARGET}/etc/init.d/S60openvpn\nrm -f ${TARGET}/etc/init.d/S80dhcp-relay\nrm -f ${TARGET}/etc/init.d/S80dhcp-server\nrm -f ${TARGET}/etc/init.d/S80dnsmasq\nrm -f ${TARGET}/etc/init.d/S91smb\n\n# other unwanted stuff\nrm -rf ${TARGET}/etc/redis.conf\nrm -rf ${TARGET}/data/*\nrm -rf ${TARGET}/run\nrm -rf ${TARGET}/etc/profile.d\n"
  },
  {
    "path": "board/common/overlay/boot/.empty",
    "content": ""
  },
  {
    "path": "board/common/overlay/data/.empty",
    "content": ""
  },
  {
    "path": "board/common/overlay/etc/adminpasswd.d/.empty",
    "content": ""
  },
  {
    "path": "board/common/overlay/etc/captive-portal.conf",
    "content": "CAPTIVE_PORTAL_ENABLED=false\nCAPTIVE_PORTAL_TIMEOUT=0\nCAPTIVE_PORTAL_TIMEOUT_REBOOT=false\nCAPTIVE_PORTAL_CONFIGURED_CMD=\nCAPTIVE_PORTAL_START_GPIO=\nCAPTIVE_PORTAL_START_INPUT=\nCAPTIVE_PORTAL_START_LEVEL=1\nCAPTIVE_PORTAL_START_HOLD_SECONDS=5\n\ntest -s /data/etc/captive-portal.conf && source /data/etc/captive-portal.conf\ntest -s /boot/captive-portal.conf && source /boot/captive-portal.conf\n"
  },
  {
    "path": "board/common/overlay/etc/crontabs/root",
    "content": "13 * * * * /usr/sbin/logrotate /etc/logrotate.conf\n0 2 * * 0 /usr/sbin/https-update\n*/15 * * * * /usr/sbin/dyndns-update\n*/15 * * * * date +%s > /var/lib/saved_date\n0 0 * * * /usr/libexec/fwupdate-auto >> /var/log/fwupdate-auto.log\n"
  },
  {
    "path": "board/common/overlay/etc/date.conf",
    "content": "DATE_TIMEOUT=10\nDATE_METHOD=sntp\nDATE_HOST=\"google.com\"\nDATE_INTERVAL=900\nDATE_NTP_SERVER=\"\"\n"
  },
  {
    "path": "board/common/overlay/etc/dbus-1/system.conf",
    "content": "<!DOCTYPE busconfig PUBLIC \"-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN\" \n\"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd\">\n<busconfig>\n  <type>system</type>\n  <policy context=\"default\">\n    <allow send_type=\"*\"></allow>\n    <allow own=\"*\"/>\n  </policy>\n</busconfig>\n"
  },
  {
    "path": "board/common/overlay/etc/dehydrated/config",
    "content": "BASEDIR=\"/var/lib/dehydrated\"\nDOMAINS_TXT=\"/data/etc/ssl/domain\"\nWELLKNOWN=\"/tmp/dehydrated\"\nHOOK=\"/usr/libexec/dehydrated-hook\"\nCONTACT_EMAIL=\"$(</data/etc/ssl/email)\"\nAUTO_CLEANUP=\"yes\"\n"
  },
  {
    "path": "board/common/overlay/etc/docker/daemon.json",
    "content": "{\n    \"log-driver\": \"local\",\n    \"log-opts\": {\n        \"max-file\": \"100\",\n        \"max-size\": \"5m\"\n    }\n}\n"
  },
  {
    "path": "board/common/overlay/etc/fstab.disk",
    "content": "# <file system>      <mount pt>            <type>   <options>         <dump> <pass>\n${boot_dev}          /boot                 vfat     ro,defaults       0      0\n${data_dev}          /data                 ext4     defaults,noatime  0      0\n"
  },
  {
    "path": "board/common/overlay/etc/fstab.extra",
    "content": "# <file system> <mount pt>            <type>   <options>         <dump> <pass>\n\n"
  },
  {
    "path": "board/common/overlay/etc/fstab.overlay",
    "content": "# <file system> <mount pt>            <type>   <options>                                                                <dump> <pass>\noverlay         /usr                  overlay  lowerdir=/usr,upperdir=/data/usr,workdir=/data/.overlay-usr              0 0\noverlay         /var/log              overlay  lowerdir=/var/log,upperdir=/data/log,workdir=/data/.overlay-log          0 0\noverlay         /var/lib              overlay  lowerdir=/var/lib,upperdir=/data/varlib,workdir=/data/.overlay-varlib    0 0\n"
  },
  {
    "path": "board/common/overlay/etc/fstab.sys",
    "content": "# <file system> <mount pt>            <type>   <options>         <dump> <pass>\nproc            /proc                 proc     defaults          0      0\ndevpts          /dev/pts              devpts   gid=5,mode=620    0      0\ntmpfs           /dev/shm              tmpfs    mode=0777         0      0\ntmpfs           /tmp                  tmpfs    mode=1777         0      0\nsysfs           /sys                  sysfs    defaults          0      0\nconfigfs        /sys/kernel/config    configfs defaults          0      0\n"
  },
  {
    "path": "board/common/overlay/etc/group",
    "content": "root:x:0:\ndaemon:x:1:\nbin:x:2:\nsys:x:3:\nadm:x:4:\ntty:x:5:\ndisk:x:6:\nlp:x:7:\nmail:x:8:\nkmem:x:9:\nwheel:x:10:root\ncdrom:x:11:\ndialout:x:18:\nfloppy:x:19:\nvideo:x:28:\naudio:x:29:\ntape:x:32:\nwww-data:x:33:\nutmp:x:43:\nplugdev:x:46:\nstaff:x:50:\nlock:x:54:\nhaldaemon:x:68:\ndbus:x:81:\nnetdev:x:82:\nftp:x:83\nnogroup:x:99:\nusers:x:100:\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S00datapart",
    "content": "#!/bin/bash\n\nDATA_OFFS=\"1024\"  # up to 1024MB reserved for boot + root\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ncase \"$1\" in\n    start)\n        msg_begin \"Detecting disk device\"\n        root_dev=$(cat /proc/cmdline | grep -oE 'root=[/a-z0-9]+' | cut -d '=' -f 2)\n        if [[ \"${root_dev}\" =~ ^([/a-z0-9]+)(p[0-9])$ ]]; then  # e.g. /dev/mmcblk0p2\n            disk_dev=${BASH_REMATCH[1]}\n            disk_dev_prefix=${disk_dev}p\n            root_part_no=$(echo ${root_dev} | grep -oE '[0-9]$')\n            boot_dev=${disk_dev}p$(( root_part_no - 1 ))\n            data_dev=${disk_dev}p$(( root_part_no + 1 ))\n        elif [[ \"${root_dev}\" =~ ^([/a-z0-9]+)([0-9])$ ]]; then  # e.g. /dev/sdc2\n            disk_dev=${BASH_REMATCH[1]}\n            disk_dev_prefix=${disk_dev}\n            root_part_no=$(echo ${root_dev} | grep -oE '[0-9]$')\n            boot_dev=${disk_dev}$(( root_part_no - 1 ))\n            data_dev=${disk_dev}$(( root_part_no + 1 ))\n        else\n            msg_fail \"unknown (${root_dev})\"\n            exit 1\n        fi\n        part_table_type=$(fdisk -l ${disk_dev} | grep Disklabel | tr -d ' ' | cut -d : -f 2)\n\n        for ext in disk extra overlay; do\n            sed \"s,\"'${disk_dev_prefix}'\",${disk_dev_prefix},g\" /etc/fstab.${ext} > /tmp/fstab.${ext}\n            sed -i \"s,\"'${boot_dev}'\",${boot_dev},g\" /tmp/fstab.${ext}\n            sed -i \"s,\"'${root_dev}'\",${root_dev},g\" /tmp/fstab.${ext}\n            sed -i \"s,\"'${data_dev}'\",${data_dev},g\" /tmp/fstab.${ext}\n        done\n\n        # Output disk info to /tmp/disk_info\n        {\n        echo \"DISK_DEV=${disk_dev}\"\n        echo \"DISK_DEV_PREFIX=${disk_dev_prefix}\"\n        echo \"BOOT_DEV=${boot_dev}\"\n        echo \"ROOT_DEV=${root_dev}\"\n        echo \"DATA_DEV=${data_dev}\"\n        echo \"PART_TABLE_TYPE=${part_table_type}\"\n        } > /tmp/disk_info\n\n        msg_done \"${disk_dev}\"\n\n        if [[ -b ${data_dev} ]]; then\n            msg_begin \"Checking data filesystem\"\n            if grep -q 'fsck.mode=force' /proc/cmdline; then\n                /sbin/e2fsck -fy ${data_dev} &> /tmp/fsck.log\n            elif ! grep -q 'fsck.mode=skip' /proc/cmdline; then\n                /sbin/e2fsck -y ${data_dev} &> /tmp/fsck.log\n            fi\n            if [[ $? == 0 ]]; then\n                msg_done\n            else\n                msg_fail\n                cat /tmp/fsck.log\n            fi\n            \n            exit 0\n        fi\n\n        msg_begin \"Creating data partition\"\n        data_start=$((DATA_OFFS * 2048))\n        echo -e \"n\n            p\n            $(( root_part_no + 1 ))\n            ${data_start}\n            \\n\n            w\" | /sbin/fdisk ${disk_dev} &>/dev/null\n        partx -a ${disk_dev} &>/dev/null\n        test -b ${data_dev} && msg_done || msg_fail\n\n        msg_begin \"Formatting data partition\"\n        mkfs.ext4 -q ${data_dev}\n        test $? == 0 && msg_done || msg_fail\n\n        msg_begin \"Mounting data partition\"\n        mount -T /tmp/fstab.disk /data && msg_done || msg_fail\n\n        msg_begin \"Copying data skeleton\"\n        cp -pur /usr/share/dataskel/* /data\n        sync\n        msg_done\n\n        touch /data/.install_factory_defaults\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S01mountall",
    "content": "#!/bin/bash\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nfunction mount_fs() {\n    msg_begin \"Mounting filesystems\"\n    /bin/mount -T /tmp/fstab.disk -a &&\n    /bin/mount -T /tmp/fstab.extra -a &&\n    if [[ -r /data/etc/fstab.user ]]; then /bin/mount -T /data/etc/fstab.user -a; fi\n\n    test $? == 0 && msg_done || msg_fail\n}\n\nfunction mount_overlay() {\n    modprobe overlay &>/dev/null\n    grep -qw overlay /proc/filesystems || return\n\n    msg_begin \"Mounting overlay filesystems\"\n    grep -oE 'lowerdir=[^,]+' /tmp/fstab.overlay | cut -d '=' -f 2 | xargs -r mkdir -p\n    grep -oE 'upperdir=[^,]+' /tmp/fstab.overlay | cut -d '=' -f 2 | xargs -r mkdir -p\n    grep -oE 'workdir=[^ ]+' /tmp/fstab.overlay | cut -d '=' -f 2 | xargs -r mkdir -p\n    cat /tmp/fstab.overlay | grep -vE '^#' | while read line; do\n        parts=(${line})\n        test ${#parts[@]} -ge 4 || continue\n        fs=${parts[0]}\n        mp=${parts[1]}\n        type=${parts[2]}\n        opts=${parts[3]}\n        # Add index/metacopy options are only available after kernel 4.19\n        if echo -e \"$(uname -r)\\n4.19.0\" | semver-sort | head -n 1 | grep -q 4.19.0; then\n            opts+=\",index=off,metacopy=off\"\n        fi\n        /bin/mount -t ${type} -o ${opts} ${fs} ${mp}\n    done\n    test $? == 0 && msg_done || msg_fail\n}\n\nfunction mount_cgroupfs() {\n    kernel_maj_ver=$(uname -r | cut -d . -f 1)\n    if [[ ${kernel_maj_ver} -ge 5 ]]; then\n        /bin/mount -t cgroup2 cgroup2 /sys/fs/cgroup\n    else\n        /usr/bin/cgroupfs-mount\n    fi\n}\n\nfunction install_factory_defaults() {\n    if [[ -s /boot/factory-defaults.tar.xz ]]; then\n        msg_begin \"Installing factory defaults\"\n        xzcat /boot/factory-defaults.tar.xz  | tar --no-same-owner -mx -C /data\n        sync\n        msg_done\n    fi\n}\n\nfunction remount_rw() {\n    msg_begin \"Remounting boot partition read-write\"\n    mount -o remount,rw /boot\n    test $? == 0 && msg_done || msg_fail\n\n    msg_begin \"Remounting root partition read-write\"\n    mount -o remount,rw /\n    test $? == 0 && msg_done || msg_fail\n}\n\nfunction mk_tty_login() {\n    console=$(grep -oE 'console=[a-zA-Z0-9_/-]+' /proc/cmdline | cut -d = -f 2)\n    if [[ -z \"${console}\" ]]; then console=/dev/console; fi\n    if ! [[ ${console} == /* ]]; then console=/dev/${console}; fi\n    ln -sf ${console} /dev/ttylogin\n}\n\ncase \"$1\" in\n    start)\n        mount_fs\n        mount_overlay\n        if [[ -f /data/.install_factory_defaults ]]; then\n            rm /data/.install_factory_defaults\n            install_factory_defaults\n        fi\n        mount_cgroupfs 2>/dev/null\n\n        # we need to source conf again, now that /data is available\n        source /etc/init.d/os_conf\n        test \"${OS_DEBUG}\" == \"true\" && remount_rw\n        mk_tty_login\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S01toemmc",
    "content": "#!/bin/bash\n\nTOEMMC_PROG=\"/sbin/toemmc\"\nTOEMMC_CONF=\"/boot/toemmc.conf\"\n\ntest -s \"${TOEMMC_CONF}\" || exit 0\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\n\ncase \"$1\" in\n    start)\n        source ${TOEMMC_CONF}\n        if [[ -n \"${EMMC_DEV}\" ]]; then\n            msg \"Flashing EMMC\"\n            ${TOEMMC_PROG} ${EMMC_DEV}\n            sync\n            if [[ -n \"${POST_CMD}\" ]]; then\n                bash -c \"${POST_CMD}\"\n            fi\n        fi\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S02defaultdata",
    "content": "#!/bin/bash\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\n\nset_empty_root_passwd() {\n    msg_begin \"Setting empty root password\"\n    PASSWORD=\"\" adminpasswd\n    sync\n    msg_done\n}\n\ncopy_version() {\n    msg_begin \"Copying version file\"\n    cp /etc/version /data/etc/version\n    sync\n    msg_done\n}\n\nset_utc_timezone() {\n    msg_begin \"Setting UTC timezone\"\n    ln -s /usr/share/zoneinfo/UTC /data/etc/localtime\n    touch /data/etc/adjtime\n    sync\n    msg_done\n}\n\ncopy_data_overlay() {\n    msg_begin \"Copying data overlay\"\n    cp -pr /usr/share/dataoverlay/* /data\n    sync\n    msg_done\n}\n\n\ncase \"$1\" in\n    start)\n        test -s /data/etc/shadow || set_empty_root_passwd\n        test -s /data/etc/version || copy_version\n        test -s /data/etc/localtime || set_utc_timezone\n        test -n \"$(ls -A /usr/share/dataoverlay 2>/dev/null)\" && copy_data_overlay\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S02restorebackups",
    "content": "#!/bin/bash\n\nBACKUPS_DIR=\"/boot\"\nBACKUP_PATTERN=\"backup-*.tar.gz\"\nDATA_DIR=\"/data\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\n\ncase \"$1\" in\n    start)\n        if ! ls ${BACKUPS_DIR}/${BACKUP_PATTERN} &>/dev/null; then\n            exit;  # no backups\n        fi\n        \n        mount -o remount,rw /boot\n\n        for file in ${BACKUPS_DIR}/${BACKUP_PATTERN}; do\n            msg_begin \"Restoring backup from $(basename ${file})\"\n            tar -mxf ${file} -C ${DATA_DIR}\n            if [[ $? == 0 ]]; then\n                rm ${file}\n                msg_done\n            else\n                msg_fail\n            fi\n        done\n        \n        # source os_conf again, as it might have changed after restore\n        test -s /etc/init.d/os_conf && source /etc/init.d/os_conf\n        if [[ \"${OS_DEBUG}\" != \"true\" ]]; then\n            mount -o remount,ro /boot\n        fi\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S03modules",
    "content": "#!/bin/bash\n\nSYS_MODULES_FILE=\"/etc/modules\"\nBOOT_MODULES_FILE=\"/boot/modules\"\nMODULES_FILE=\"/data/etc/modules\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ncase \"$1\" in\n    start)\n        msg_begin \"Loading kernel modules\"\n\n        if [[ -r ${SYS_MODULES_FILE} ]]; then\n            cat ${SYS_MODULES_FILE} | while read line; do test -n \"${line}\" && /sbin/modprobe ${line} &>/dev/null; done\n        fi\n\n        if [[ -r ${BOOT_MODULES_FILE} ]]; then\n            cat ${BOOT_MODULES_FILE} | while read line; do test -n \"${line}\" && /sbin/modprobe ${line} &>/dev/null; done\n        fi\n\n        if [[ -r ${MODULES_FILE} ]]; then\n            cat ${MODULES_FILE} | while read line; do test -n \"${line}\" && /sbin/modprobe ${line} &>/dev/null; done\n        fi\n\n        msg_done\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S04hostname",
    "content": "#!/bin/bash\n\nSYS_HOSTNAME_FILE=\"/etc/defhostname\"\nBOOT_HOSTNAME_FILE=\"/boot/hostname\"\nHOSTNAME_FILE=\"/data/etc/hostname\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ncase \"$1\" in\n    start)\n        msg_begin \"Setting hostname\"\n\n        prepare_conf ${HOSTNAME_FILE} ${SYS_HOSTNAME_FILE} ${BOOT_HOSTNAME_FILE}\n\n        if [[ -f ${HOSTNAME_FILE} ]]; then\n            hostname=$(cat ${HOSTNAME_FILE})\n        else\n            hostname=\"${OS_PREFIX}-${BOARD_SN}\"\n        fi\n\n        /bin/hostname ${hostname}\n        echo \"127.0.0.1 localhost ${hostname}\" > /etc/hosts\n\n        msg_done\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S05cpufreq",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/cpufreq.conf\"\nBOOT_CONF=\"/boot/cpufreq.conf\"\nCONF=\"/data/etc/cpufreq.conf\"\n\nCPU_FREQ_GOVERNOR=\"ondemand\"\nCPU_FREQ_MIN=\"\"\nCPU_FREQ_MAX=\"\"\n\nCPU_FREQ_DIR=\"/sys/devices/system/cpu/cpu0/cpufreq\"\nGOVERNOR_DIR1=\"/sys/devices/system/cpu/cpufreq/${CPU_FREQ_GOVERNOR}\"\nGOVERNOR_DIR2=\"/sys/devices/system/cpu/cpu0/cpufreq/${CPU_FREQ_GOVERNOR}\"\n\ntest -d \"${GOVERNOR_DIR1}\" && GOVERNOR_DIR=${GOVERNOR_DIR1} || GOVERNOR_DIR=${GOVERNOR_DIR2}\ntest -d \"${CPU_FREQ_DIR}\" && test -d \"${GOVERNOR_DIR}\" || exit 0  # no CPU freq support\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nconfigure() {\n    test -s \"${SYS_CONF}\" && source \"${SYS_CONF}\"\n    test -s \"${BOOT_CONF}\" && source \"${BOOT_CONF}\"\n    test -s \"${CONF}\" && source \"${CONF}\"\n\n    echo ${CPU_FREQ_GOVERNOR} > ${CPU_FREQ_DIR}/scaling_governor\n    if [[ ${CPU_FREQ_GOVERNOR} == \"ondemand\" ]]; then\n        echo 50 > ${GOVERNOR_DIR}/up_threshold\n        echo 100000 > ${GOVERNOR_DIR}/sampling_rate\n        echo 50 > ${GOVERNOR_DIR}/sampling_down_factor\n    fi\n    if [[ -n \"${CPU_FREQ_MIN}\" ]]; then\n        echo ${CPU_FREQ_MIN} > ${CPU_FREQ_DIR}/scaling_min_freq\n    fi\n    if [[ -n \"${CPU_FREQ_MAX}\" ]]; then\n        echo ${CPU_FREQ_MAX} > ${CPU_FREQ_DIR}/scaling_max_freq\n    fi\n}\n\ncase \"$1\" in\n    start)\n        msg_begin \"Configuring CPU frequency\"\n        configure\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S05syslog",
    "content": "#!/bin/bash\n\nPROG=\"/sbin/syslogd\"\nPROG_D=\"/bin/dmesg\"\n\nDMESG_LOG=\"/var/log/dmesg.log\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\n\ncase \"$1\" in\n    start)\n        msg_begin \"Starting syslogd\"\n        ${PROG}\n        test $? == 0 && msg_done || msg_fail\n        echo \"---- booting ${OS_NAME} ${OS_VERSION} ----\" >> ${DMESG_LOG}\n        ${PROG_D} -w >> ${DMESG_LOG} &\n        ;;\n\n    stop)\n        msg_begin \"Stopping syslogd\"\n        killall -q $(basename ${PROG})\n        test $? == 0 && msg_done || msg_fail\n        killall -q $(basename ${PROG_D})\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S10sysctl",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/sysctl.conf\"\nBOOT_CONF=\"/boot/sysctl.conf\"\nCONF=\"/data/etc/sysctl.conf\"\n\nPROG=\"/sbin/sysctl\"\nFIRST_RUN_FILE=\"/var/run/sysctl_run\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nif [[ ! -f ${CONF} && ! -f ${SYS_CONF} && ! -f ${BOOT_CONF} ]]; then\n    exit 0\nfi\n\n\ncase \"$1\" in\n    start)\n        if [[ -f ${FIRST_RUN_FILE} ]]; then\n            msg_begin \"Applying sysctl parameters (final)\"\n            test -s \"${SYS_CONF}\" && sysctl -q -p ${SYS_CONF}\n            test -s \"${CONF}\" && sysctl -q -p ${CONF}\n            test -s \"${BOOT_CONF}\" && sysctl -q -p ${BOOT_CONF}\n        else\n            msg_begin \"Applying sysctl parameters\"\n            test -s \"${SYS_CONF}\" && sysctl -e -q -p ${SYS_CONF}\n            test -s \"${CONF}\" && sysctl -e -q -p ${CONF}\n            test -s \"${BOOT_CONF}\" && sysctl -e -q -p ${BOOT_CONF}\n            touch ${FIRST_RUN_FILE}\n        fi\n        msg_done\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S12udev",
    "content": "#!/bin/bash\n\nCONF=\"/etc/udev/udev.conf\"\nPROG=\"/sbin/udevd\"\nPROG_UA=\"/sbin/udevadm\"\n\n\ntest -f ${PROG} || exit 0\ntest -s ${CONF} || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nsource \"${CONF}\"\n\n\nstart() {\n    msg_begin \"Starting eudev\"\n    ${PROG} --daemon --resolve-names=never\n    test $? == 0 && msg_done || msg_fail\n\n    ${PROG_UA} trigger --type=subsystems --action=add\n    ${PROG_UA} trigger --type=devices --action=add\n    ${PROG_UA} settle --timeout=30\n\n    return 0\n}\n\nstop() {\n    msg_begin \"Stopping eudev\"\n    ${PROG_UA} control --stop-exec-queue\n    killall -q $(basename ${PROG})\n    msg_done\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n    \n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\n        ;;\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S13btuart",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/bluetooth.conf\"\nBOOT_CONF=\"/boot/bluetooth.conf\"\nCONF=\"/data/etc/bluetooth.conf\"\nPLATFORM_BTUART=\"/usr/libexec/btuart\"\nLOG=\"/var/log/btuart.log\"\n\ntest -f ${CONF} || test -f ${BOOT_CONF} || test -f ${SYS_CONF} || exit 0\n\n# Bluetooth explicitly disabled by empty bluetooth.conf\ntest -f ${CONF} && ! test -s \"${CONF}\" && exit 0\n\ntest -s \"${PLATFORM_BTUART}\" || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nsource \"${PLATFORM_BTUART}\"\n\ncase \"$1\" in\n    start)\n        msg_begin \"Attaching UART bluetooth device\"\n        btuart_start &> ${LOG} &\n        msg_background\n        ;;\n\n    stop)\n        msg_begin \"Detaching UART bluetooth device\"\n        btuart_stop &>/dev/null\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    *)\n        echo $\"Usage: $0 {start|stop}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S13watchdog",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/watchdog.conf\"\nBOOT_CONF=\"/boot/watchdog.conf\"\nUSER_CONF=\"/data/etc/watchdog.conf\"\n\nPROG=\"/sbin/watchdog\"\nDEVICE=\"/dev/watchdog\"\nTIMEOUT=5\n\nTHERMAL_ZONE=\nMAX_TEMP=\nTEMP_INTERVAL=10\n\nSYS_CHECK=\"/usr/libexec/watchdog-check\"\nUSER_CHECK=\"/data/etc/watchdog-check\"\nCHECK_LOG=\"/var/log/watchdog-check.log\"\nCHECK_INTERVAL=10\n\ntest -s \"${SYS_CONF}\" && source \"${SYS_CONF}\"\ntest -s \"${USER_CONF}\" && source \"${USER_CONF}\"\ntest -s \"${BOOT_CONF}\" && source \"${BOOT_CONF}\"\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\n\nfunction start_watchdog() {\n    if ! [[ -x ${PROG} && -e ${DEVICE} ]]; then\n        return\n    fi\n    msg_begin \"Starting watchdog\"\n    ${PROG} -t ${TIMEOUT} ${DEVICE}\n    test $? == 0 && msg_done || msg_fail\n}\n\nfunction start_watch_temp() {\n    if [[ -z \"${THERMAL_ZONE}\" ]] || [[ -z \"${MAX_TEMP}\" ]]; then\n        return\n    fi\n    while true; do\n        sleep ${TEMP_INTERVAL}\n        temp=$(cat /sys/class/thermal/${THERMAL_ZONE}/temp)\n        temp=$((temp / 1000))\n        if [[ \"${temp}\" -gt ${MAX_TEMP} ]]; then\n            panic action watchdog \"temperature too high: ${temp} > ${MAX_TEMP}\"\n        fi\n    done\n}\n\nfunction start_watch_check() {\n    if ! [[ -x \"${SYS_CHECK}\" ]] && ! [[ -x \"${USER_CHECK}\" ]]; then\n        return\n    fi\n    while true; do\n        sleep ${CHECK_INTERVAL}\n        if [[ -x \"${SYS_CHECK}\" ]] && ! \"${SYS_CHECK}\" &>>${CHECK_LOG}; then\n            panic action watchdog \"system check failed\"\n        elif [[ -x \"${USER_CHECK}\" ]] && ! \"${USER_CHECK}\" &>>${CHECK_LOG}; then\n            panic action watchdog \"user check failed\"\n        fi\n    done\n}\n\nfunction stop() {\n    msg_begin \"Stopping watchdog\"\n    killall -q $(basename ${PROG})\n    ps | grep \"service watchdog\" | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n    ps | grep \"S13watchdog\" | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n    msg_done\n}\n\n\ncase \"$1\" in\n    start)\n        start_watchdog\n        start_watch_temp &\n        start_watch_check &\n        ;;\n\n    stop)\n        true\n        ;;\n\n    reallystop)\n        stop\n        ;;\n\n    *)\n        echo $\"Usage: $0 {start|reallystop}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S14postupgrade",
    "content": "#!/bin/bash\n\nSYS_VERSION_FILE=\"/etc/version\"\nVERSION_FILE=\"/data/etc/version\"\nPOST_UPGRADE_DIR=\"/usr/share/post-upgrade\"\nPOST_UPGRADE_NET_SCHEDULED=\"/data/.post-upgrade-net-scheduled\"\nPOST_UPGRADE_APP_SCHEDULED=\"/data/.post-upgrade-app-scheduled\"\nFLASH_REBOOT_STARTED_FILE=\"/data/.fwupdate/flash_reboot_started\"\n\nLOG=\"/var/log/post-upgrade.log\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\n# Ensure the fwupdate reboot flag is cleared\nrm -f ${FLASH_REBOOT_STARTED_FILE}\n\nhash=$(md5sum ${VERSION_FILE} 2>/dev/null | cut -d ' ' -f 1)\nsys_hash=$(md5sum ${SYS_VERSION_FILE} 2>/dev/null | cut -d ' ' -f 1)\n\ntest \"${hash}\" == \"${sys_hash}\" && exit 0\n\ntest -d ${POST_UPGRADE_DIR} || exit 0\n\nfunction version_gt() {\n    # Tells if version in $1 > version in $2.\n\n    v1=$1\n    v2=$2\n\n    # Trim trailing version components so that both versions are of same length.\n    IFS=. v1=(${v1}); unset IFS\n    IFS=. v2=(${v2}); unset IFS\n    while [[ ${#v1[@]} -gt ${#v2[@]} ]]; do\n        unset v1[-1]\n    done\n    while [[ ${#v2[@]} -gt ${#v1[@]} ]]; do\n        unset v2[-1]\n    done\n    v1=$(echo ${v1[@]} | tr ' ' '.')\n    v2=$(echo ${v2[@]} | tr ' ' '.')\n\n    if [[ \"${v1}\" != \"${v2}\" ]] && [[ $(echo -e \"${v1}\\n${v2}\" | semver-sort 2>/dev/null | head -n 1) == \"${v2}\" ]]; then\n        return 0\n    else\n        return 1\n    fi\n}\n\nfunction run_post_upgrade() {\n    version=\"$(source ${VERSION_FILE} 2>/dev/null && echo ${OS_VERSION})\"\n    sys_version=\"$(source ${SYS_VERSION_FILE} 2>/dev/null && echo ${OS_VERSION})\"\n\n    echo \"---- post-upgrade from ${version} to ${sys_version} ----\" >> ${LOG}\n\n    echo -n > ${POST_UPGRADE_NET_SCHEDULED}\n    echo -n > ${POST_UPGRADE_APP_SCHEDULED}\n    \n    versions=$(ls -1 ${POST_UPGRADE_DIR} | rev | cut -d '.' -f 2-100 | rev)\n    for v in ${versions}; do\n        # Skip post-upgrade* scripts as they are treated separately.\n        if [[ ${v} == post-upgrade* ]]; then\n            continue\n        fi\n\n        # Don't run scripts for previous (or current) versions.\n        if [[ -n \"${version}\" ]] && ! version_gt ${v} ${version}; then\n            continue\n        fi\n\n        if [[ ${v} == *-net ]]; then  # scripts that require network\n            echo \"${POST_UPGRADE_DIR}/${v}.sh\" >> ${POST_UPGRADE_NET_SCHEDULED}\n            continue\n        fi\n\n        if [[ ${v} == *-app ]]; then  # scripts that will be executed right before apps start\n            echo \"${POST_UPGRADE_DIR}/${v}.sh\" >> ${POST_UPGRADE_APP_SCHEDULED}\n            continue\n        fi\n    \n        msg_begin \"Running post-upgrade script for version ${v}\"\n        ${POST_UPGRADE_DIR}/${v}.sh >> ${LOG} 2>&1\n        test $? == 0 && msg_done || msg_fail\n    done\n    \n    if [[ -x \"${POST_UPGRADE_DIR}/post-upgrade.sh\" ]]; then\n        msg_begin \"Running common post-upgrade script\"\n        ${POST_UPGRADE_DIR}/post-upgrade.sh >> ${LOG} 2>&1\n        test $? == 0 && msg_done || msg_fail\n    fi\n}\n\ncase \"$1\" in\n    start)\n        run_post_upgrade\n        cp ${SYS_VERSION_FILE} ${VERSION_FILE}\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S15rngd",
    "content": "#!/bin/bash\n\nPROG=\"/usr/sbin/rngd\"\n\n\ntest -f ${PROG} || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\n\nstart() {\n    msg_begin \"Starting rngd\"\n    ${PROG} -q &>/dev/null\n    test $? == 0 && msg_done || msg_fail\n}\n\nstop() {\n    msg_begin \"Stopping rngd\"\n    killall -q $(basename ${PROG})\n    msg_done\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n    \n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\n        ;;\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S30dbus",
    "content": "#!/bin/bash\n\nSYS_BTCONF=\"/etc/bluetooth.conf\"\nBOOT_BTCONF=\"/boot/bluetooth.conf\"\nBTCONF=\"/data/etc/bluetooth.conf\"\nCMCONF=\"/etc/connman/main.conf\"\n\nPROG=\"/usr/bin/dbus-daemon\"\nPROG_UG=\"/usr/bin/dbus-uuidgen\"\nPROG_UA=\"/usr/bin/udevadm\"\n\n\ntest -x ${PROG} || exit 0\n\n# dbus is currently only used by bluez and connman\ntest -s \"${BTCONF}\" || test -s \"${BOOT_BTCONF}\" || test -s \"${SYS_BTCONF}\" || test -s \"${CMCONF}\" || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\n\nstart() {\n    mkdir -p /tmp/dbus\n    mkdir -p /var/lib/dbus\n\n    msg_begin \"Starting dbus\"\n\n    ${PROG_UG} --ensure\n    ${PROG} --system\n    \n    test $? == 0 && msg_done || msg_fail\n}\n\nstop() {\n    msg_begin \"Stopping dbus\"\n    ${PROG_UA} control --stop-exec-queue\n    killall -q $(basename ${PROG})\n    test $? == 0 && msg_done || msg_fail\n\n    rm -f /var/run/messagebus.pid\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n    \n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\n        ;;\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S31ifalias",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/ifalias.conf\"\nBOOT_CONF=\"/boot/ifalias.conf\"\nCONF=\"/data/etc/ifalias.conf\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nstart() {\n    msg_begin \"Renaming network interfaces\"\n    test -s \"${SYS_CONF}\" && source \"${SYS_CONF}\"\n    test -s \"${CONF}\" && source \"${CONF}\"\n    test -s \"${BOOT_CONF}\" && source \"${BOOT_CONF}\"\n    \n    ifaces=$(ls /sys/class/net 2>/dev/null)\n    test -z \"${ifaces}\" && return\n    \n    for iface in /sys/class/net/*; do\n        iface=$(basename ${iface})\n        test -z \"${!iface}\" && continue\n        ip link set ${iface} name ${!iface}\n    done\n    msg_done\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n        \n    stop)\n        ;;\n        \n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S35wifi",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/wpa_supplicant.conf\"\nBOOT_CONF=\"/boot/wpa_supplicant.conf\"\nCONF=\"/data/etc/wpa_supplicant.conf\"\n\nSYS_CONF1=\"/etc/wpa_supplicant1.conf\"\nBOOT_CONF1=\"/boot/wpa_supplicant1.conf\"\nCONF1=\"/data/etc/wpa_supplicant1.conf\"\n\nLOG=\"/var/log/wpa_supplicant.log\"\nLOG1=\"/var/log/wpa_supplicant1.log\"\nPROG=\"/usr/sbin/wpa_supplicant\"\nDRIVER=nl80211,wext\n\nNETWATCH_CONF=\"/etc/netwatch.conf\"\n\nCONNMAN_CONF=\"/etc/connman/main.conf\"\n\n\ntest -x ${PROG} || exit 0\ntest -s \"${CONNMAN_CONF}\" && exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nsource ${NETWATCH_CONF}\n\nprepare_conf ${CONF} ${SYS_CONF} ${BOOT_CONF}\nprepare_conf ${CONF1} ${SYS_CONF1} ${BOOT_CONF1}\ntest -s \"${CONF}\" || test -s \"${CONF1}\" || exit 0\n\ntest -n \"${OS_WLAN}\" && ssid=$(cat ${CONF} 2>/dev/null | grep ssid | grep -v scan_ssid | cut -d '\"' -f 2)\ntest -n \"${OS_WLAN1}\" && ssid1=$(cat ${CONF1} 2>/dev/null | grep ssid | grep -v scan_ssid | cut -d '\"' -f 2)\ntest -n \"${ssid}\" || test -n \"${ssid1}\" || exit 0\n\ntest \"${OS_NETWORKLESS}\" == \"true\" && exit 0\ntest -n \"${OS_WLAN}\" || test -n \"${OS_WLAN1}\" || exit 0\n\n\nconnected() {\n    # $1 - index\n    index=$1\n    test \"${index}\" == 0 && index=\n    iface_var=OS_WLAN${index}\n    ssid_var=ssid${index}\n    if [[ -n \"${!iface_var}\" ]] && [[ -n \"${!ssid_var}\" ]]; then\n        ip link show dev ${!iface_var} 2>&1 | grep LOWER_UP &> /dev/null || return 1\n    fi\n}\n\nwatch() {\n    # $1 - index\n    index=$1\n\n    count=0\n    while true; do\n        sleep 5\n        if connected ${index}; then\n            count=0\n        else\n            if [[ ${count} -lt ${LINK_WATCH_TIMEOUT} ]]; then\n                count=$((${count} + 5))\n                logger -t wifi \"disconnected\"\n            else\n                panic action wifi \"disconnected for ${LINK_WATCH_TIMEOUT} seconds\"\n            fi\n        fi\n    done\n}\n\nstart() {\n    # $1 - index\n    index=$1\n    test \"${index}\" == 0 && index=\n    iface_var=OS_WLAN${index}\n    conf_var=CONF${index}\n    log_var=LOG${index}\n\n    test -n \"${OS_COUNTRY}\" && iw reg set ${OS_COUNTRY}\n\n    msg_begin \"Starting wpa_supplicant on ${!iface_var}\"\n\n    rfkill unblock wlan &>/dev/null\n\n    # wait up to 5 seconds for interface\n    count=0\n    while ! ifconfig ${!iface_var} >/dev/null 2>&1; do\n        sleep 1\n        count=$((${count} + 1))\n        if [[ ${count} -ge 5 ]]; then\n            msg_fail \"no device\"\n            return 1\n        fi\n    done\n    \n    module=$(basename $(readlink /sys/class/net/${!iface_var}/device/driver/module 2>/dev/null) 2>/dev/null)\n\n    iwconfig ${!iface_var} power off &> /dev/null\n    iw ${!iface_var} set power_save off &> /dev/null\n    \n    opts=\"-i${!iface_var} -c${!conf_var} -D${DRIVER} -B\"\n    if [[ ${OS_DEBUG} == \"true\" ]]; then\n        opts+=\" -dd\"\n    fi\n    \n    ${PROG} ${opts} &>> ${!log_var}\n    \n    count=0\n    while true; do\n        sleep 1\n\n        if connected ${index}; then\n            break\n        fi\n\n        if [[ ${count} -gt ${LINK_WATCH_TIMEOUT} ]] || ! pidof $(basename ${PROG}) > /dev/null; then\n            test -n \"${module}\" && msg_fail \"failed (${module})\"|| msg_fail\n            return 1\n        fi\n\n        count=$((${count} + 1))\n    done\n\n    if [[ \"${LINK_WATCH}\" == \"true\" ]]; then\n        watch ${index} &\n    fi\n\n    test -n \"${module}\" && msg_done \"done (${module})\"|| msg_done\n}\n\nstop() {\n    # $1 - index\n    index=$1\n    test \"${index}\" == 0 && index=\n    iface_var=OS_WLAN${index}\n\n    msg_begin \"Stopping wpa_supplicant on ${!iface_var}\"\n    killall -q $(basename ${PROG})\n    ps | grep wifi | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n    msg_done\n}\n\ncase \"$1\" in\n    start)\n        test -n \"${OS_WLAN}\" && test -n \"${ssid}\" && start 0\n        test -n \"${OS_WLAN1}\" && test -n \"${ssid1}\" && start 1\n        ;;\n        \n    stop)\n        test -n \"${OS_WLAN}\" && test -n \"${ssid}\" && stop 0\n        test -n \"${OS_WLAN1}\" && test -n \"${ssid1}\" && stop 1\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop}\"\n        exit 1\nesac\n\n# continue after an unsuccessfull wifi start\n# as we may still have an ethernet connection available\nexit 0\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S36ppp",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/ppp/default\"\nBOOT_CONF=\"/boot/ppp\"\nCONF=\"/data/etc/ppp\"\n\nPROG=\"/usr/sbin/pppd\"\nPROVIDER=\"mobile\"\n\nNETWATCH_CONF=\"/etc/netwatch.conf\"\n\nCONNMAN_CONF=\"/etc/connman/main.conf\"\n\n\ntest -x ${PROG} || exit 0\ntest -s \"${CONNMAN_CONF}\" && exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nprepare_conf ${CONF} ${SYS_CONF} ${BOOT_CONF}\n\ntest -e ${CONF}/modem || exit 0\ntest -e ${CONF}/apn || exit 0\n\nsource ${NETWATCH_CONF}\n\ntest \"${OS_NETWORKLESS}\" == \"true\" && exit 0\n\n\nconnected() {\n    ifconfig | grep ${OS_PPP} &>/dev/null && return 0 || return 1\n}\n\nwatch() {\n    count=0\n    while true; do\n        sleep 5\n        if connected; then\n            count=0\n        else\n            if [[ ${count} -lt ${LINK_WATCH_TIMEOUT} ]]; then\n                count=$((${count} + 5))\n                logger -t ppp \"disconnected\"\n            else\n                panic action ppp \"disconnected for ${LINK_WATCH_TIMEOUT} seconds\"\n            fi\n        fi\n    done\n}\n\nudev_trigger_add() {\n    for ((i = 0; i < $1; i++)); do\n        /sbin/udevadm trigger --type=devices --action=add\n    done\n}\n\nstart() {\n    test -e ${CONF}/auth || touch ${CONF}/auth\n    test -e ${CONF}/extra || touch ${CONF}/extra\n    test -e ${CONF}/pin || touch ${CONF}/pin\n    mknod /dev/ppp c 108 0 &>/dev/null\n\n    msg_begin \"Starting pppd\"\n\n    # wait for modem\n    modem=$(head -n 1 ${CONF}/modem)\n    if ! [[ -e /dev/${modem} ]]; then\n        udev_trigger_add 4 &\n    fi\n\n    count=0\n    while true; do\n        if [[ -e /dev/${modem} ]] || [[ ${count} -gt ${LINK_WATCH_TIMEOUT} ]]; then\n            break\n        fi\n\n        count=$((${count} + 1))\n        sleep 1\n    done\n\n    if ! [[ -e /dev/${modem} ]]; then\n        msg_fail \"modem /dev/${modem} not present\"\n        return\n    fi\n\n    ${PROG} call ${PROVIDER}\n    count=0\n    while true; do\n        sleep 1\n\n        if connected; then\n            break\n        fi\n\n        if [[ ${count} -gt ${LINK_WATCH_TIMEOUT} ]] || ! pidof $(basename ${PROG}) > /dev/null; then\n            msg_fail\n            return\n        fi\n\n        count=$((${count} + 1))\n    done\n\n    if [[ \"${LINK_WATCH}\" == \"true\" ]]; then\n        watch &\n    fi\n\n    msg_done\n}\n\nstop() {\n    msg_begin \"Stopping pppd\"\n    killall -q $(basename ${PROG})\n    ps | grep ppp | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n    msg_done\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n\n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S37bluetooth",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/bluetooth.conf\"\nBOOT_CONF=\"/boot/bluetooth.conf\"\nCONF=\"/data/etc/bluetooth.conf\"\nRUN_CONF=\"/var/lib/bluetooth.conf\"\n\nADAPTER=\"hci0\"\nADAPTER_PATH=\"/sys/class/bluetooth/${ADAPTER}\"\nADAPTER_TIMEOUT=10\nPROG=\"/usr/libexec/bluetooth/bluetoothd\"\nPROG_CTL=\"/usr/bin/bluetoothctl\"\nPROG_BDADDR=\"/usr/libexec/bdaddr\"\nDATA_DIR=\"/var/lib/bluetooth\"\nRUN_DATA_DIR=\"/data/bluetooth\"\nNO_ON_BOARD_BT=\"/tmp/.no_on_board_bt\"  # used by RPi to explicitly indicate that no on-board BT was detected\n\n\ntest -x ${PROG} || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nprepare_conf ${CONF} ${SYS_CONF} ${BOOT_CONF}\ntest -s \"${CONF}\" || exit 0\n\n\nfunction configure() {\n    mkdir -p ${RUN_DATA_DIR}\n    ln -sf ${RUN_DATA_DIR} ${DATA_DIR}\n    cp ${CONF} ${RUN_CONF}\n\n    # if no specific name configured, use hostname\n    if ! grep -E 'Name\\s*=' ${RUN_CONF} &>/dev/null; then   \n        sed -ri \"s/(\\[General\\])/\\1\\nName = $(hostname)/\" ${RUN_CONF}\n    fi\n}\n\nfunction ensure_addr() {\n    # Some adapters may come with configured address AA:AA:AA:AA:AA:AA.\n    # We use the serial number and ETH MAC address to build a BT address.\n    if [[ -x ${PROG_BDADDR} ]] && grep -qiE 'AA:AA:AA:AA:AA:AA' /sys/class/bluetooth/${ADAPTER}/address; then\n        serial_number=$(cat /proc/device-tree/serial-number | cut -c9-)\n        b1=$(echo ${serial_number} | cut -c3-4)\n        b2=$(echo ${serial_number} | cut -c5-6)\n        b3=$(echo ${serial_number} | cut -c7-8)\n        vendor_part=$(cat /sys/class/net/${OS_ETH}/address | cut -c1-8)\n        addr=$(printf \"${vendor_part}:%02x:%02x:%02x\" $((0x${b3} ^ 0xAA)) $((0x${b2} ^ 0xAA)) $((0x${b1} ^ 0xAA)))\n        \n        # Temporarily start `bluetoothd` so we can use `bdaddr`.\n        ${PROG} &>/dev/null &\n        sleep 1       \n        \n        # Actually set address using `bdaddr`.\n        ${PROG_BDADDR} -r -i ${ADAPTER} ${addr} >/dev/null\n        \n        # `bluetoothd` needs to be restarted a couple of times.\n        killall -q $(basename ${PROG})\n        sleep 1\n        ${PROG} &>/dev/null &\n        sleep 1\n        killall -q $(basename ${PROG})\n    fi\n}\n\nfunction watch_adapter() {\n    count=0\n    while true; do\n        sleep 60\n        output=$(timeout 1 bluetoothctl pairable on 2>/dev/null)\n        if [[ -n \"${output}\" ]] && [[ $? == 0 ]]; then\n            count=0\n        else\n            if [[ ${count} -lt 5 ]]; then\n                count=$((count + 1))\n                logger -t bluetooth \"bluetooth adapter not responding\"\n            else\n                panic action bluetooth \"bluetooth adapter not responding\"\n            fi\n        fi\n    done\n}\n\nfunction start() {\n    msg_begin \"Configuring bluetooth\"\n\n    # adapter explicitly marked as unavailable from previous boot steps\n    if [[ -f \"${NO_ON_BOARD_BT}\" ]]; then\n        msg_fail \"no adapter\"\n        return 1\n    fi\n\n    # wait for adapter to be reported by OS\n    count=0\n    while ! test -e ${ADAPTER_PATH}; do\n        sleep 1\n        count=$((count + 1))\n        if [[ ${count} -ge ${ADAPTER_TIMEOUT} ]]; then\n            msg_fail \"no adapter\"\n            return 1\n        fi\n    done\n\n    if configure; then\n        msg_done\n    else\n        msg_fail\n        return 1\n    fi\n    \n    rfkill unblock bluetooth &>/dev/null\n    \n    ensure_addr\n    \n    msg_begin \"Starting bluetoothd\"\n    ${PROG} &>/dev/null &\n\n    # wait for adapter to be reported by bluetoothctl\n    count=0\n    while test -z \"$(${PROG_CTL} list 2>/dev/null)\"; do\n        sleep 1\n        count=$((count + 1))\n        if [[ ${count} -ge ${ADAPTER_TIMEOUT} ]]; then\n            msg_fail \"no adapter\"\n            return 1\n        fi\n    done\n\n    msg_done\n\n    # if DiscoverableTimeout is set to 0, make adapter discoverable from boot time\n    if grep -E '^DiscoverableTimeout\\s*=\\s*0$' ${RUN_CONF} &>/dev/null; then\n        sleep 1\n        ${PROG_CTL} discoverable on >/dev/null\n    fi\n    \n    # some adapters must be explicitly powered on\n    ${PROG_CTL} power on >/dev/null\n\n    watch_adapter &\n}\n\nfunction stop() {\n    msg_begin \"Stopping bluetoothd\"\n    killall -q $(basename ${PROG})\n    ps | grep bluetooth | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n    msg_done\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n        \n    stop)\n        stop\n        ;;\n        \n    restart)\n        stop\n        start\n        ;;\n    \n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S39factoryreset",
    "content": "#!/bin/bash\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\ntest -n \"${OS_FACTORY_RESET_GPIO}\" || test -n \"${OS_FACTORY_RESET_INPUT}\" || exit 0\n\nOS_FACTORY_RESET_HOLD_SECONDS=${OS_FACTORY_RESET_HOLD_SECONDS:-10}\nOS_FACTORY_RESET_LEVEL=${OS_FACTORY_RESET_LEVEL:-1}\n\nINPUT_VALUE_FILE=/tmp/.reset_button_input\n\n\nfunction reset_factory_defaults() {\n    test -x /usr/libexec/before-factory-reset && /usr/libexec/before-factory-reset\n    sync\n    source /tmp/disk_info\n    echo -e \"d\n        3\n        w\" | /sbin/fdisk ${DISK_DEV} &>/dev/null\n    sync\n    test -x /usr/libexec/after-factory-reset && /usr/libexec/after-factory-reset\n    /sbin/reboot\n}\n\nfunction get_button_value() {\n    if [[ -n \"${OS_FACTORY_RESET_GPIO}\" ]]; then\n        gpio.sh ${OS_FACTORY_RESET_GPIO}\n    elif [[ -s \"${INPUT_VALUE_FILE}\" ]]; then\n        cat ${INPUT_VALUE_FILE}\n    else\n        expr ${OS_FACTORY_RESET_LEVEL} - 1\n    fi\n}\n\nfunction read_input() {\n    value=$(od -N 32 -v -t x2 /dev/input/${OS_FACTORY_RESET_INPUT} | grep -E \"^0000000 \" | cut -d ' ' -f 8)\n    printf \"%d\" \"${value:-0}\"\n}\n\nfunction watch_input() {\n    expr ${OS_FACTORY_RESET_LEVEL} - 1 > ${INPUT_VALUE_FILE}\n    while true; do\n        if value=$(read_input); then\n            echo ${value} > ${INPUT_VALUE_FILE}\n        else\n            sleep 1\n        fi\n    done\n}\n\nfunction watch() {\n    count=0\n    while true; do\n        sleep 1\n        if [[ $(get_button_value) == ${OS_FACTORY_RESET_LEVEL} ]]; then\n            count=$((count + 1))\n            logger -t factory-reset \"button pressed (count=${count})\"\n        else\n            if [[ ${count} -gt 0 ]]; then\n                logger -t factory-reset \"button released\"\n            fi\n            count=0\n        fi\n        if [[ ${count} -ge ${OS_FACTORY_RESET_HOLD_SECONDS} ]]; then\n            logger -t factory-reset \"resetting to factory defaults\"\n            reset_factory_defaults\n            break\n        fi\n    done\n}\n\nfunction start() {\n    msg_begin \"Starting factory-reset listener\"\n    watch &\n    test -n \"${OS_FACTORY_RESET_INPUT}\" && watch_input &\n    msg_done\n}\n\nfunction stop() {\n    msg_begin \"Stopping factory-reset listener\"\n    ps | grep factoryreset | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n    msg_done\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n        \n    stop)\n        stop\n        ;;\n        \n    restart)\n        stop\n        start\n        ;;\n    \n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S40network",
    "content": "#!/bin/bash\n\nDH_CONF=\"/var/cache/dhclient.conf\"\nNETWATCH_CONF=\"/etc/netwatch.conf\"\n\nSYS_STATIC_CONF=\"/etc/static_ip.conf\"\nBOOT_STATIC_CONF=\"/boot/static_ip.conf\"\nSTATIC_CONF=\"/data/etc/static_ip.conf\"\n\nSYS_INTERFACES_CONF=\"/etc/network/interfaces\"\nBOOT_INTERFACES_CONF=\"/boot/network/interfaces\"\nINTERFACES_CONF=\"/data/etc/network/interfaces\"\n\nCP_CONF=\"/etc/captive-portal.conf\"\nCONNMAN_CONF=\"/etc/connman/main.conf\"\n\nLINK_NEGO_TIMEOUT=10\n\n\ntest -s \"${CONNMAN_CONF}\" && exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nsource ${NETWATCH_CONF}\nsource ${CP_CONF}\n\nprepare_conf ${STATIC_CONF} ${SYS_STATIC_CONF} ${BOOT_STATIC_CONF}\ntest -r ${STATIC_CONF} && source ${STATIC_CONF}\n\nprepare_conf ${INTERFACES_CONF} ${SYS_INTERFACES_CONF} ${BOOT_INTERFACES_CONF}\n\nmkdir -p /var/lib/dhcp\n\n\nfunction watch_eth() {\n    count=0\n    while true; do\n        sleep 5\n        if mii-tool ${OS_ETH} 2>/dev/null | grep -q \"link ok\"; then\n            count=0\n        else\n            if [[ ${count} -lt ${LINK_WATCH_TIMEOUT} ]]; then\n                count=$((${count} + 5))\n                logger -t network \"ethernet disconnected\"\n            else\n                panic action network \"ethernet disconnected for ${LINK_WATCH_TIMEOUT} seconds\"\n            fi\n        fi\n    done\n}\n\nfunction watch_ip() {\n    iface=$1\n    count=0\n    while true; do\n        sleep 5\n        if ip addr show dev ${iface} | grep inet &>/dev/null; then\n            count=0\n        else\n            if [[ ${count} -lt ${IP_WATCH_TIMEOUT} ]]; then\n                count=$((${count} + 5))\n                logger -t network \"${iface} has no IP address\"\n            else\n                panic action network \"${iface} had no IP address for ${IP_WATCH_TIMEOUT} seconds\"\n            fi\n        fi\n    done\n}\n\nfunction start_lo() {\n    if [[ -r ${INTERFACES_CONF} ]] && grep -q \"^iface lo\" ${INTERFACES_CONF}; then\n        ifup -i ${INTERFACES_CONF} lo 2>&1 | logger -t network\n    else\n        ifconfig lo up\n    fi\n}\n\nfunction start_wlan() {\n    # $1 - index\n    index=$1\n    test \"${index}\" == 0 && index=\n    iface_var=OS_WLAN${index}\n    iface_upper=$(tr a-z A-Z <<< ${!iface_var})\n    static_ip_var=STATIC_IP_${iface_upper}\n\n    msg_begin \"Configuring wireless network on ${!iface_var}\"\n    if ! ifconfig ${!iface_var} &>/dev/null; then\n        msg_fail \"no device\"\n        return 1\n    fi\n\n    if [[ \"$(cat /sys/class/net/${!iface_var}/carrier 2>/dev/null)\" != 1 ]]; then\n        msg_fail \"no link\"\n        return 1\n    fi\n\n    if [[ -r ${INTERFACES_CONF} ]] && grep -q \"^iface ${!iface_var}\" ${INTERFACES_CONF}; then\n        ifup -i ${INTERFACES_CONF} ${!iface_var} 2>&1 | logger -t network\n        test ${PIPESTATUS[0]} == 0 && msg_done || msg_fail\n    else\n        if [[ -n \"${STATIC_IP}\" ]]; then\n            msg_done ${STATIC_IP}\n            ifconfig ${!iface_var} ${STATIC_IP} up\n            STATIC_IP=\"\" # won't be used again\n        elif [[ -n \"${!static_ip_var}\" ]]; then\n            msg_done ${!static_ip_var}\n            ifconfig ${!iface_var} ${!static_ip_var} up\n        else\n            msg_done dhcp\n            cp ${DH_CONF} ${DH_CONF}.${!iface_var}\n            dhclient -cf ${DH_CONF}.${!iface_var} ${!iface_var}\n        fi\n    fi\n\n    if [[ \"${IP_WATCH}\" == \"true\" ]] && ip addr show dev ${!iface_var} | grep inet &>/dev/null; then\n        watch_ip ${!iface_var} &\n    fi\n}\n\nfunction start_eth() {\n    msg_begin \"Configuring wired network\"\n    \n    iface_upper=$(tr a-z A-Z <<< ${OS_ETH})\n    static_ip_var=STATIC_IP_${iface_upper}\n\n    # wait for driver\n    w=3\n    count=0\n    while ! ifconfig ${OS_ETH} up >/dev/null 2>&1; do\n        sleep 1\n        count=$((${count} + 1))\n        if [[ ${count} -ge ${w} ]]; then\n            msg_done \"no device\"\n            return 1\n        fi\n    done\n\n    # wait for link\n    test \"${LINK_WATCH}\" == \"true\" || LINK_NEGO_TIMEOUT=5\n    count=0\n    while ! mii-tool ${OS_ETH} 2>/dev/null | grep -q \"link ok\"; do\n        sleep 1\n        count=$((${count} + 1))\n        if [[ ${count} -ge ${LINK_NEGO_TIMEOUT} ]]; then\n            msg_done \"no link\"\n            return 1\n        fi\n    done\n    \n    if [[ -r ${INTERFACES_CONF} ]] && grep -q \"^iface ${OS_ETH}\" ${INTERFACES_CONF}; then\n        ifup -i ${INTERFACES_CONF} ${OS_ETH} 2>&1 | logger -t network\n        test ${PIPESTATUS[0]} == 0 && msg_done || msg_fail\n    else\n        if [[ -n \"${STATIC_IP}\" ]]; then\n            msg_done ${STATIC_IP}\n            ifconfig ${OS_ETH} ${STATIC_IP} up\n            STATIC_IP=\"\" # won't be used again\n        elif [[ -n \"${!static_ip_var}\" ]]; then\n            msg_done ${!static_ip_var}\n            ifconfig ${OS_ETH} ${!static_ip_var} up\n        else\n            msg_done dhcp\n            cp ${DH_CONF} ${DH_CONF}.${OS_ETH}\n            dhclient -cf ${DH_CONF}.${OS_ETH} ${OS_ETH}\n        fi\n    fi\n\n    if [[ \"${LINK_WATCH}\" == \"true\" ]]; then\n        watch_eth &\n    fi\n\n    if [[ \"${IP_WATCH}\" == \"true\" ]] && ip addr show dev ${OS_ETH} | grep inet &>/dev/null; then\n        watch_ip ${OS_ETH} &\n    fi\n}\n\nfunction dhclient_reduce_request() {\n    # Disables requesting gateway, DNS, etc, strictly configuring the interface.\n    grep -q request ${DH_CONF} || echo \"request subnet-mask, broadcast-address, time-offset, interface-mtu;\" >> ${DH_CONF}\n}\n\nfunction start() {\n    hostname=$(hostname)\n    echo \"send host-name = \\\"${hostname}\\\";\" > ${DH_CONF}\n    \n    # If we've got static settings for gateway and DNS server, ignore corresponding DHCP settings\n    test -n \"${STATIC_GW}\" && test -n \"${STATIC_DNS}\" && dhclient_reduce_request\n\n    start_lo\n\n    test \"${OS_NETWORKLESS}\" == \"true\" && return 0\n\n    ssid=$(cat /data/etc/wpa_supplicant.conf 2>&1 | grep ssid | grep -v scan_ssid | cut -d '\"' -f 2)\n    ssid1=$(cat /data/etc/wpa_supplicant1.conf 2>&1 | grep ssid | grep -v scan_ssid | cut -d '\"' -f 2)\n    test -n \"${OS_WLAN}\" -a -n \"${ssid}\" && start_wlan 0 && wlan_ok=\"ok\" && dhclient_reduce_request\n    test -n \"${OS_WLAN1}\" -a -n \"${ssid1}\" && start_wlan 1 && wlan_ok=\"ok\" && dhclient_reduce_request\n    test -n \"${OS_PPP}\" -a -r /data/etc/ppp/modem && ifconfig | grep ${OS_PPP} &>/dev/null && ppp_ok=\"ok\" && dhclient_reduce_request\n    def_route_ok=$(ip route get 1.1.1.1 &>/dev/null && echo \"ok\")\n    \n    if [[ -n \"${OS_ETH}\" ]]; then\n        # if wifi or ppp link ok, start eth in background\n        if [[ \"${wlan_ok}\" == \"ok\" ]] || [[ \"${ppp_ok}\" == \"ok\" ]] && [[ \"${def_route_ok}\" == \"ok\" ]]; then\n            start_eth &>/dev/null &\n        else\n            start_eth && eth_ok=\"ok\" && dhclient_reduce_request\n        fi\n    fi\n\n    if [[ \"${eth_ok}\" != \"ok\" ]] && [[ \"${wlan_ok}\" != \"ok\" ]] && [[ \"${ppp_ok}\" != \"ok\" ]]; then\n        panic=false\n        if [[ \"${LINK_WATCH}\" == true ]]; then\n            if [[ ${CAPTIVE_PORTAL_ENABLED} == false ]] || \\\n               [[ -z \"${CAPTIVE_PORTAL_CONFIGURED_CMD}\" ]] || \\\n               ${CAPTIVE_PORTAL_CONFIGURED_CMD} &>/dev/null; then\n\n               panic=true\n           fi\n        fi\n        if [[ ${panic} == true ]]; then\n            panic action network \"no network connection available\"\n            return 1\n        else\n            logger -t network \"no network connection available\"\n            return 0\n        fi\n    fi\n\n    if [[ -r ${INTERFACES_CONF} ]]; then\n        # ifup doesn't set the DNS server, so we have to set it manually\n        STATIC_DNS=$(cat ${INTERFACES_CONF} | grep dns-nameserver | tr -s ' ' | cut -d ' ' -f 3 | head -n 11)\n        if [[ -n \"${STATIC_DNS}\" ]]; then\n            msg_begin \"Setting static DNS server to ${STATIC_DNS}\"\n            echo \"nameserver ${STATIC_DNS}\" > /etc/resolv.conf\n            test $? == 0 && msg_done || msg_fail\n        fi\n        \n        # Make sure all auto interfaces are brought up\n        ifup -i ${INTERFACES_CONF} -a >/dev/null\n    else\n        if [[ -n \"${STATIC_GW}\" ]]; then\n            msg_begin \"Setting static gateway to ${STATIC_GW}\"\n            ip route add default via ${STATIC_GW} &>/dev/null || ip route change default via ${STATIC_GW} &>/dev/null\n            test $? == 0 && msg_done || msg_fail\n        fi\n\n        if [[ -n \"${STATIC_DNS}\" ]]; then\n            msg_begin \"Setting static DNS server to ${STATIC_DNS}\"\n            echo \"nameserver ${STATIC_DNS}\" > /etc/resolv.conf\n            test $? == 0 && msg_done || msg_fail\n        fi\n    fi\n\n    # re-evalutate default route, as it might have changed with start_eth or static IP\n    def_route_ok=$(ip route get 1.1.1.1 &>/dev/null && echo \"ok\")\n    if [[ \"${def_route_ok}\" != \"ok\" ]]; then\n        panic=false\n        if [[ \"${IP_WATCH}\" == true ]]; then\n            if [[ ${CAPTIVE_PORTAL_ENABLED} == false ]] || \\\n               [[ -z \"${CAPTIVE_PORTAL_CONFIGURED_CMD}\" ]] || \\\n               ${CAPTIVE_PORTAL_CONFIGURED_CMD} &>/dev/null; then\n\n               panic=true\n           fi\n        fi\n    \n        if [[ ${panic} == true ]]; then\n            panic action network \"no default route\"\n            return 1\n        else\n            logger -t network \"no default route\"\n            return 0\n        fi\n    fi\n}\n\nfunction stop() {\n    msg_begin \"Stopping network\"\n    if [[ -r ${INTERFACES_CONF} ]]; then\n        ifdown -i ${INTERFACES_CONF} -a 2>&1 | logger -t network\n    fi\n    ps | grep S40network | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n    killall dhclient &>/dev/null\n    msg_done\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n\n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S41netwatch",
    "content": "#!/bin/bash\n\nCONF=\"/etc/netwatch.conf\"\nCP_CONF=\"/etc/captive-portal.conf\"\n\ntest -s \"${CONF}\" || exit 0\nsource \"${CONF}\"\nsource \"${CP_CONF}\"\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ntest \"${OS_NETWORKLESS}\" == \"true\" && exit 0\n\n\nfunction gw_ok() {\n    def_route=$(ip route | grep default | head -n 1)\n    test -n \"${def_route}\" || return 1  # no default route\n    \n    grep -q via <<< ${def_route} || return 0  # default route w/o via\n    \n    gw=$(cut -d ' ' -f 3 <<< ${def_route})\n    test -n \"${gw}\" || return 1  # no gateway\n    \n    ping -c 2 -W 2 -w 3 ${gw} &>/dev/null\n}\n\nfunction gw_watch() {\n    count=0\n    GW_WATCH_RETRIES=$((${GW_WATCH_RETRIES} - 1))\n    while true; do\n        sleep ${GW_WATCH_INTERVAL}\n        if gw_ok 2>&1; then\n            count=0\n        else\n            if [[ ${count} -lt ${GW_WATCH_RETRIES} ]]; then\n                logger -t netwatch \"gateway not reachable\"\n                count=$((${count} + 1))\n                continue\n            else\n                panic action netwatch \"gateway not reachable\"\n            fi\n        fi\n    done\n}\n\nfunction net_watch() {\n    sleep ${NET_WATCH_DELAY}\n\n    count=0\n    NET_WATCH_RETRIES=$((${NET_WATCH_RETRIES} - 1))\n    while true; do\n        sleep ${NET_WATCH_INTERVAL}\n        if nc -z -w ${NET_WATCH_TIMEOUT} ${NET_WATCH_HOST} ${NET_WATCH_PORT} </dev/null >/dev/null 2>&1; then\n            count=0\n        else\n            if [[ ${count} -lt ${NET_WATCH_RETRIES} ]]; then\n                logger -t netwatch \"cannot connect to ${NET_WATCH_HOST}:${NET_WATCH_PORT}\"\n                count=$((${count} + 1))\n                continue\n            else\n                panic action netwatch \"cannot connect to ${NET_WATCH_HOST}:${NET_WATCH_PORT}\"\n            fi\n        fi\n    done\n}\n\nfunction start() {\n    if [[ ${CAPTIVE_PORTAL_ENABLED} == true ]] && \\\n       [[ -n \"${CAPTIVE_PORTAL_CONFIGURED_CMD}\" ]] && \\\n       ! eval ${CAPTIVE_PORTAL_CONFIGURED_CMD} &>/dev/null; then\n       \n       exit 0\n    fi\n\n    msg_begin \"Starting netwatch\"\n    if [[ -n \"${NET_WATCH_HOST}\" ]] && [[ -n \"${NET_WATCH_PORT}\" ]]; then\n        net_watch &\n    fi\n    if [[ \"${GW_WATCH}\" == true ]]; then\n        gw_watch &\n    fi\n    msg_done\n}\n\nfunction stop() {\n    msg_begin \"Stopping netwatch\"\n    ps | grep $(basename $0) | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n    msg_done\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n\n    restart)\n        stop\n        start\n        ;;\n        \n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S42connman",
    "content": "#!/bin/bash\n\nCONF=\"/etc/connman/main.conf\"\nPROG=\"/usr/sbin/connmand\"\nPROG_WO=\"/usr/sbin/connmand-wait-online\"\nLOG=\"/var/log/connman.log\"\nLIB_DIR=\"/var/lib/connman\"\nRUN_DIR=\"/var/run/connman\"\nONLINE_TIMEOUT=20\nONLINE_TIMEOUT_INITIAL=20\nONLINE_TIMEOUT_CHECK=5\nONLINE_HANDLER_SCRIPT=\"/usr/libexec/connman-online-handler\"\n\n\ntest -x ${PROG} || exit 0\ntest -s \"${CONF}\" || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nwatch_online() {\n    is_online=false\n    while true; do\n        ${PROG_WO} --timeout=${ONLINE_TIMEOUT_CHECK} &>/dev/null\n        if [[ $? == 0 ]]; then\n            if [[ ${is_online} == false ]]; then\n                ${ONLINE_HANDLER_SCRIPT} true\n                is_online=true\n            fi\n        else\n            if [[ ${is_online} == true ]]; then\n                ${ONLINE_HANDLER_SCRIPT} false\n                is_online=false\n            fi\n        fi\n        sleep 1\n    done\n}\n\nstart() {\n    msg_begin \"Starting connman\"\n\n    mkdir -p ${RUN_DIR}\n    ln -sf ${RUN_DIR}/resolv.conf /tmp/resolv.conf\n    \n    ifconfig lo up\n    ${PROG} -n -r &> ${LOG} &\n    if grep -qE '(Favorite)|(AutoConnect)=true' ${LIB_DIR}/*/settings 2>/dev/null; then\n        timeout=${ONLINE_TIMEOUT}\n    else\n        timeout=${ONLINE_TIMEOUT_INITIAL}\n    fi\n\n    test -x ${ONLINE_HANDLER_SCRIPT} && watch_online &> /var/log/online-handler.log &\n\n    ${PROG_WO} --timeout=${timeout}\n    test $? == 0 && msg_done || msg_fail\n}\n\nstop() {\n    msg_begin \"Stopping connman\"\n    ps | grep connman | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n    msg_done\n}\n\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n\n    restart)\n        stop\n        sleep 2\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S43firewall",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/firewall.sh\"\nUSER_CONF=\"/data/etc/firewall.sh\"\nBOOT_CONF=\"/boot/firewall.sh\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ntest -s \"${SYS_CONF}\" || test -s \"${USER_CONF}\" || test -s \"${BOOT_CONF}\" || exit 0\n\n\nstart() {\n    msg_begin \"Starting firewall\"\n\n    ok=true\n    if [[ -s ${SYS_CONF} ]]; then\n        bash ${SYS_CONF} || ok=false\n    fi\n    if [[ -s ${USER_CONF} ]]; then\n        bash ${USER_CONF} || ok=false\n    fi\n    if [[ -s ${BOOT_CONF} ]]; then\n        bash ${BOOT_CONF} || ok=false\n    fi\n\n    test ${ok} == true && msg_done || msg_fail\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n        \n    stop)\n        ;;\n        \n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S44hostapd",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/hostapd.conf\"\nBOOT_CONF=\"/boot/hostapd.conf\"\nUSER_CONF=\"/data/etc/hostapd.conf\"\n\nCP_CONF=\"/etc/captive-portal.conf\"\n\nLOG=\"/var/log/hostapd.log\"\nPROG=\"/usr/sbin/hostapd\"\nDNSMASQ_LOG=\"/var/log/dnsmasq.log\"\n\nINPUT_VALUE_FILE=/tmp/.captive_portal_button_input\n\nDNSMASQ_CONF=/var/run/dnsmasq.conf\n\ntest -x ${PROG} || exit 0\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\nCONF=$(select_conf ${SYS_CONF} ${BOOT_CONF} ${USER_CONF})\ntest -s \"${CONF}\" || exit 0\n\nsource ${CP_CONF}\n\n\nfunction running() {\n    killall -0 $(basename ${PROG}) &> /dev/null\n}\n\nfunction get_button_value() {\n    if [[ -n \"${CAPTIVE_PORTAL_START_GPIO}\" ]]; then\n        gpio.sh ${CAPTIVE_PORTAL_START_GPIO}\n    elif [[ -s \"${INPUT_VALUE_FILE}\" ]]; then\n        cat ${INPUT_VALUE_FILE}\n    else\n        expr ${CAPTIVE_PORTAL_START_LEVEL} - 1\n    fi\n}\n\nfunction read_input() {\n    value=$(od -N 32 -v -t x2 /dev/input/${CAPTIVE_PORTAL_START_INPUT} | grep -E \"^0000000 \" | cut -d ' ' -f 8)\n    printf \"%d\" \"${value:-0}\"\n}\n\nfunction watch_input() {\n    expr ${CAPTIVE_PORTAL_START_LEVEL} - 1 > ${INPUT_VALUE_FILE}\n    while true; do\n        if value=$(read_input); then\n            echo ${value} > ${INPUT_VALUE_FILE}\n        else\n            sleep 1\n        fi\n    done\n}\n\nfunction watch_button() {\n    count=0\n    while true; do\n        sleep 1\n        if [[ $(get_button_value) == ${CAPTIVE_PORTAL_START_LEVEL} ]]; then\n            count=$((count + 1))\n            logger -t hostapd \"button pressed (count=${count})\"\n        else\n            if [[ ${count} -gt 0 ]]; then\n                logger -t hostapd \"button released\"\n            fi\n            count=0\n        fi\n        if [[ ${count} -ge ${CAPTIVE_PORTAL_START_HOLD_SECONDS} ]]; then\n            count=0\n            if ! running; then\n                logger -t hostapd \"button held, starting captive portal\"\n                start_hostapd\n            elif running; then\n                logger -t hostapd \"button held, stopping captive portal\"\n                stop_hostapd\n            fi\n        fi\n    done\n}\n\nfunction network_ok() {\n    ip route | grep -q default\n}\n\nfunction configure_ifaces() {\n    rfkill unblock wlan &>/dev/null\n\n    # wait up to 5 seconds for interfaces\n    count=0\n    ifaces=${OS_WLAN}\n    test -n \"${OS_WLAN1}\" && ifaces+=\" ${OS_WLAN1}\"\n    while true; do\n        ok=false\n        for iface in ${ifaces}; do\n            ifconfig ${iface} &>/dev/null && ok=true\n        done\n        test ${ok} == true && break\n        sleep 1\n        count=$((${count} + 1))\n        if [[ ${count} -ge 5 ]]; then\n            logger -t hostapd \"no AP interfaces\"\n            return 1\n        fi\n    done\n    \n    wifi_ifaces=$(ip link | grep -oE 'wlan[[:digit:]]')\n    ap_ifaces=\"\"\n    for iface in ${wifi_ifaces}; do\n        ip link set ${iface} up\n        ap_iface=ap${iface: -1}\n        if iw dev ${iface} interface add ${ap_iface} type __ap &>/dev/null; then\n            ap_ifaces+=\"${ap_iface} \"\n        fi\n    done\n    \n    logger -t hostapd \"configured interfaces: ${ap_ifaces[@]}\"\n}\n\nfunction assign_iface_ip() {\n    hostapd_conf=/var/run/hostapd.conf\n    test -s \"${DNSMASQ_CONF}\" || return\n    dnsmasq_ip=$(cat ${DNSMASQ_CONF} | grep range | cut -d '=' -f 2 | cut -d '.' -f 1,2,3).1\n    dnsmasq_iface=$(cat ${DNSMASQ_CONF} | grep interface | cut -d '=' -f 2)\n    hostapd_iface=$(cat ${hostapd_conf} | grep interface | cut -d '=' -f 2)\n    test \"${dnsmasq_iface}\" == \"${hostapd_iface}\" || test -z \"${dnsmasq_iface}\" || return\n    ifconfig ${hostapd_iface} ${dnsmasq_ip}\n}\n\nfunction after_captive_portal_timeout() {\n    if tail -n 9 ${DNSMASQ_LOG} | grep -q DHCPREQUEST; then\n        logger -t hostapd \"client connected within timeout, keeping captive portal on\"\n        return\n    fi\n\n    if [[ ${CAPTIVE_PORTAL_TIMEOUT_REBOOT} == true ]]; then\n        logger -t hostapd \"rebooting on timeout\"\n        reboot\n    else\n        logger -t hostapd \"stopping on timeout\"\n        stop_hostapd\n    fi\n}\n\nfunction start_hostapd() {\n    # Stop wpa_supplicant if running in captive portal mode\n    if [[ ${CAPTIVE_PORTAL_ENABLED} == true ]]; then\n        /etc/init.d/S35wifi stop &>/dev/null\n        panic inhibit\n    fi\n\n    run_conf=/var/run/hostapd.conf\n    \n    # Replace placeholders\n    eval \"echo \\\"$(cat ${CONF})\\\"\" > ${run_conf}\n\n    # Determine Wi-Fi driver\n    iface=$(cat ${run_conf} | grep interface | cut -d '=' -f 2)\n    module=$(basename $(readlink /sys/class/net/${iface}/device/driver/module 2>/dev/null) 2>/dev/null)\n\n    logger -t hostapd \"starting on ${iface} with driver ${module}\"\n\n    iwconfig ${iface} power off &> /dev/null\n    iw ${iface} set power_save off &> /dev/null\n    ${PROG} ${run_conf} &> ${LOG} &\n    \n    ( sleep 1 && assign_iface_ip ) &\n}\n\nfunction stop_hostapd() {\n    killall $(basename ${PROG}) &>/dev/null\n    logger -t hostapd \"stopped\"\n}\n\nfunction start() {\n    configure_ifaces\n\n    if [[ \"${CAPTIVE_PORTAL_ENABLED}\" == true ]]; then\n        msg_begin \"Starting captive-portal\"\n        if [[ -n \"${CAPTIVE_PORTAL_START_INPUT}\" ]]; then\n            watch_input &\n        fi\n        if [[ -n \"${CAPTIVE_PORTAL_START_GPIO}\" ]] || [[ -n \"${CAPTIVE_PORTAL_START_INPUT}\" ]]; then\n            watch_button &\n        fi\n\n        if [[ -n \"${CAPTIVE_PORTAL_CONFIGURED_CMD}\" ]]; then\n            if eval ${CAPTIVE_PORTAL_CONFIGURED_CMD} &>/dev/null; then\n                logger -t hostapd \"unit is configured\"\n                msg_done \"unit is configured\"\n            else\n                logger -t hostapd \"not configured, starting\"\n                start_hostapd\n                if [[ ${CAPTIVE_PORTAL_TIMEOUT} -gt 0 ]]; then\n                    logger -t hostapd \"will stop after ${CAPTIVE_PORTAL_TIMEOUT}s\"\n                    msg_done \"timeout mode\"\n                    sleep ${CAPTIVE_PORTAL_TIMEOUT} && after_captive_portal_timeout &>/dev/null &\n                else\n                    logger -t hostapd \"will run indefinitely\"\n                    msg_done \"always-on mode\"\n                fi\n            fi\n        else\n            msg_done \"button mode\"\n        fi\n    else\n        msg_begin \"Starting hostapd\"\n        start_hostapd\n        msg_done\n    fi\n}\n\nfunction stop() {\n    msg_begin \"Stopping hostapd\"\n    stop_hostapd\n    ps | grep hostapd | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n    msg_done\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n        \n    stop)\n        stop\n        ;;\n        \n    restart)\n        stop\n        start\n        ;;\n    \n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S44shownetinfo",
    "content": "#!/bin/bash\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nmsg_info() {\n    echo \" # $1\"\n}\n\nshow_iface_ip_addr() {\n    addr=$(ip addr show dev $1 2>/dev/null | grep inet | tr -s ' ' | sed -r 's/^\\s+//' | \\\n           cut -d ' ' -f 2 | grep -iv fe80 | sed 'N;s/\\n/, /')\n    test -n \"${addr}\" && msg_info \"Interface $1 has IP address ${addr}\"\n}\n\nshow_gateway() {\n    gateway=$(ip route | grep default | cut -d ' ' -f 3)\n    test -n \"${gateway}\" && msg_info \"Default gateway is ${gateway}\"\n}\n\nshow_dns() {\n    test -r /etc/resolv.conf || return\n    dns=$(cat /etc/resolv.conf | grep nameserver | head -n 1 | cut -d ' ' -f 2)\n    test -n \"${dns}\" && msg_info \"DNS server address is ${dns}\"\n}\n\ncase \"$1\" in\n    start)\n        test -n \"${OS_ETH}\" && show_iface_ip_addr ${OS_ETH}\n        test -n \"${OS_WLAN}\" && show_iface_ip_addr ${OS_WLAN}\n        test -n \"${OS_WLAN1}\" && show_iface_ip_addr ${OS_WLAN1}\n        test -n \"${OS_PPP}\" && show_iface_ip_addr ${OS_PPP}\n        show_gateway\n        show_dns\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S45dnsmasq",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/dnsmasq.conf\"\nBOOT_CONF=\"/boot/dnsmasq.conf\"\nUSER_CONF=\"/data/etc/dnsmasq.conf\"\n\nCP_CONF=\"/etc/captive-portal.conf\"\n\nLOG=\"/var/log/dnsmasq.log\"\nPROG=\"/usr/sbin/dnsmasq\"\n\ntest -x ${PROG} || exit 0\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\nCONF=$(select_conf ${SYS_CONF} ${BOOT_CONF} ${USER_CONF})\ntest -s \"${CONF}\" || exit 0\n\nsource ${CP_CONF}\n\n\nfunction start() {\n    msg_begin \"Starting dnsmasq\"\n    \n    run_conf=/var/run/dnsmasq.conf\n\n    # Replace placeholders\n    eval \"echo \\\"$(cat ${CONF})\\\"\" > ${run_conf}\n\n    ip=$(cat ${run_conf} | grep range | cut -d '=' -f 2 | cut -d '.' -f 1,2,3).1\n    iface=$(cat ${run_conf} | grep interface | cut -d '=' -f 2)\n    \n    if [[ \"${CAPTIVE_PORTAL_ENABLED}\" == true ]]; then\n        echo \"address=/#/${ip}\" >> ${run_conf}\n    fi\n    \n    ifconfig ${iface} ${ip}\n\n    ${PROG} -C ${run_conf} --log-facility=${LOG}\n    test $? == 0 && msg_done || msg_fail\n}\n\nfunction stop() {\n    msg_begin \"Stopping dnsmasq\"\n    killall -q $(basename ${PROG})\n    test $? == 0 && msg_done || msg_fail\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n        \n    stop)\n        stop\n        ;;\n        \n    restart)\n        stop\n        start\n        ;;\n    \n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S50date",
    "content": "#!/bin/bash\n\nPROG_DATE=\"/bin/date\"\nPROG_NTPD=\"/usr/sbin/chronyd\"\nPROG_SNTP=\"/usr/bin/sntp\"\nLOG_SNTP=\"/var/log/sntp.log\"\n\nSYS_CONF=\"/etc/date.conf\"\nBOOT_CONF=\"/boot/date.conf\"\nCONF=\"/data/etc/date.conf\"\n\nSYS_NTP_CONF=\"/etc/ntp.conf\"\nBOOT_NTP_CONF=\"/boot/ntp.conf\"\nNTP_CONF=\"/data/etc/ntp.conf\"\n\nSAVED_DATE_FILE=\"/var/lib/saved_date\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nprepare_conf ${CONF} ${SYS_CONF} ${BOOT_CONF}\nprepare_conf ${NTP_CONF} ${SYS_NTP_CONF} ${BOOT_NTP_CONF}\n\ntest -s \"${CONF}\" || exit 0\n\ntest \"${OS_NETWORKLESS}\" == \"true\" && exit 0\n\nDATE_TIMEOUT=10\nDATE_METHOD=sntp\nDATE_HOST=\"google.com\"\nDATE_INTERVAL=\"900\"\nDATE_NTP_SERVER=\"\"\n\nsource ${CONF}\n\n\nset_current_date_http() {\n    curl_args=\"-v -s -m ${DATE_TIMEOUT} -H \\\"Cache-Control: no-cache\\\" -X GET\"\n    url=\"http://${DATE_HOST}?_=${RANDOM}\"\n    date_str=$(curl ${curl_args} ${url} 2>&1 | grep Date | sed -e 's/< Date: //')\n    if [[ -n \"${date_str}\" ]]; then\n        ${PROG_DATE} -u -D \"%a, %d %b %Y %H:%M:%S\" -s \"${date_str}\" > /dev/null\n        logger -t date \"current system date/time set to $(date) via HTTP\"\n        return 0\n    else\n        logger -t date \"failed to set current system date/time via HTTP\"\n        return 1\n    fi\n}\n\nset_current_date_ntp() {\n    if [[ -n \"${DATE_NTP_SERVER}\" ]]; then\n        sed -i \"s/pool .*/pool ${DATE_NTP_SERVER} iburst/\" ${NTP_CONF}\n    fi\n\n    ${PROG_NTPD} -f ${NTP_CONF} -q -t ${DATE_TIMEOUT} &>/dev/null\n    if [[ $? == 0 ]]; then\n        logger -t date \"current system date/time set to $(date) via NTP\"\n        return 0\n    else\n        logger -t date \"failed to set current system date/time via NTP\"\n        return 1\n    fi\n}\n\nset_current_date_sntp() {\n    sntp_args=\"-t ${DATE_TIMEOUT} -K /dev/null -Ss\"\n    server=$(cat ${NTP_CONF} | grep pool | head -n 1 | cut -d ' ' -f 2)\n    \n    # Retry command 3 times\n    truncate -s0 ${LOG_SNTP}\n    ok=false\n    for (( i = 0; i < 3; i++ )); do\n        ${PROG_SNTP} ${sntp_args} ${server} &>>${LOG_SNTP} && { ok=true; break; }\n        sleep 1\n    done\n    if [[ ${ok} == true ]]; then\n        logger -t date \"current system date/time set to $(date) via SNTP\"\n        return 0\n    else\n        logger -t date \"failed to set current system date/time via SNTP\"\n        return 1\n    fi\n}\n\n\nstart_http() {\n    msg_begin \"Setting current date using HTTP\"\n    if set_current_date_http; then\n        sleep_interval=${DATE_INTERVAL}\n        msg_done \"$(${PROG_DATE})\"\n    else\n        sleep_interval=${DATE_TIMEOUT}\n        msg_fail\n    fi\n    \n    msg_begin \"Starting http date updater\"\n    while true; do\n        sleep ${sleep_interval}\n        if set_current_date_http; then\n            sleep_interval=${DATE_INTERVAL}\n        else\n            sleep_interval=${DATE_TIMEOUT}\n        fi\n    done &\n    msg_done\n}\n\nstart_ntp() {\n    if [[ -n \"${DATE_NTP_SERVER}\" ]]; then\n        sed -i \"s/pool .*/pool ${DATE_NTP_SERVER} iburst/\" ${NTP_CONF}\n    fi\n\n    if [[ \"${DATE_METHOD}\" == \"sntp\" ]]; then\n        msg_begin \"Setting current date using SNTP\"\n        set_current_date_sntp\n        test $? == 0 && msg_done \"$(${PROG_DATE})\" || msg_fail\n    else # assuming ntp\n        msg_begin \"Setting current date using NTP\"\n        set_current_date_ntp\n        test $? == 0 && msg_done \"$(${PROG_DATE})\" || msg_fail\n    fi\n\n    msg_begin \"Starting ntpd\"\n    ${PROG_NTPD} -f ${NTP_CONF}\n    test $? == 0 && msg_done || msg_fail\n}\n\nstop_http() {\n    msg_begin \"Stopping date updater\"\n    ps | grep S50date | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n    test $? == 0 && msg_done || msg_fail\n}\n\nstop_ntp() {\n    msg_begin \"Stopping ntpd\"\n    killall -q $(basename ${PROG_NTPD})\n    test $? == 0 && msg_done || msg_fail\n}\n\nstart() {\n    # Load saved date first\n    test -s \"${SAVED_DATE_FILE}\" && date -s $(cat \"${SAVED_DATE_FILE}\") -D%s >/dev/null\n\n    if [[ \"${DATE_METHOD}\" == \"http\" ]]; then\n        start_http\n    else # ntp or sntp\n        start_ntp\n    fi\n\n    echo \"system date is $(${PROG_DATE} '+%Y-%m-%d %H:%M:%S')\" > /dev/kmsg\n}\n\nstop() {\n    if [[ \"${DATE_METHOD}\" == \"http\" ]]; then\n        stop_http\n    else # ntp or sntp\n        stop_ntp\n    fi\n    \n    # Save current date to disk for next time\n    date +%s > ${SAVED_DATE_FILE}\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n\n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S51crond",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/crontabs\"\nCONF=\"/data/etc/crontabs\"\n\nPROG=\"/usr/sbin/crond\"\n\n\ntest -x ${PROG} || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\n\nstart() {\n    msg_begin \"Starting crond\"\n    \n    if [[ -d ${SYS_CONF} ]];  then\n        ${PROG} -c ${SYS_CONF}\n    fi\n\n    mkdir -p ${CONF}\n    ${PROG} -c ${CONF}\n\n    test $? == 0 && msg_done || msg_fail\n}\n\nstop() {\n    msg_begin \"Stopping crond\"\n    killall -q $(basename ${PROG})\n    test $? == 0 && msg_done || msg_fail\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n    \n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\n        ;;\nesac\n\nexit 0\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S52postupgradenet",
    "content": "#!/bin/bash\n\nPOST_UPGRADE_DIR=\"/usr/share/post-upgrade\"\nPOST_UPGRADE_NET_SCHEDULED=\"/data/.post-upgrade-net-scheduled\"\n\nLOG=\"/var/log/post-upgrade.log\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ntest -f ${POST_UPGRADE_NET_SCHEDULED} || exit 0\n\nfunction run_post_upgrade() {\n    for script in $(cat ${POST_UPGRADE_NET_SCHEDULED}); do\n        msg_begin \"Running post-upgrade script ${script}\"\n        ${script} >> ${LOG} 2>&1\n        test $? == 0 && msg_done || msg_fail\n    done\n\n    if [[ -x \"${POST_UPGRADE_DIR}/post-upgrade-net.sh\" ]]; then\n        msg_begin \"Running common post-upgrade-net script\"\n        ${POST_UPGRADE_DIR}/post-upgrade-net.sh >> ${LOG} 2>&1\n        test $? == 0 && msg_done || msg_fail\n    fi\n}\n\ncase \"$1\" in\n    start)\n        run_post_upgrade\n        rm ${POST_UPGRADE_NET_SCHEDULED}\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S55openvpn",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/openvpn\"\nBOOT_CONF=\"/boot/openvpn\"\nCONF=\"/data/etc/openvpn\"\n\nLOG=\"/var/log/openvpn.log\"\nPROG=\"/usr/sbin/openvpn\"\n\nNETWATCH_CONF=\"/etc/netwatch.conf\"\n\n\ntest -x ${PROG} || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nsource ${NETWATCH_CONF}\n\nCLIENT_CONF=$(select_conf ${CONF}/client.conf ${BOOT_CONF}/client.conf ${SYS_CONF}/client.conf)\n\ntest -n \"${CLIENT_CONF}\" || exit 0\n\nCONF=$(dirname ${CLIENT_CONF})\n\n\nrunning() {\n    (killall -0 openvpn && ip link show tun0) &> /dev/null\n}\n\nwatch() {\n    sleep ${NET_WATCH_DELAY}\n    \n    count=0\n    NET_WATCH_RETRIES=$((${NET_WATCH_RETRIES} - 1))\n    while true; do\n        sleep ${NET_WATCH_INTERVAL}\n        if running; then\n            count=0\n        else\n            if [[ ${count} -lt ${NET_WATCH_RETRIES} ]]; then\n                logger -t openvpn \"dead\"\n                count=$((${count} + 1))\n                continue\n            else\n                panic action openvpn \"service dead\"\n                break\n            fi\n        fi\n    done\n}\n\nstart() {\n    msg_begin \"Starting openvpn\"\n    modprobe tun &>/dev/null\n\n    test -x ${CONF}/prepare-conf.sh && ${CONF}/prepare-conf.sh ${CONF}\n    ${PROG} --config ${CONF}/client.conf --cd ${CONF} &>>/var/log/openvpn.log &\n    test $? == 0 && msg_done || msg_fail\n    \n    if [[ \"${LINK_WATCH}\" == \"true\" ]]; then\n        watch &\n    fi\n}\n\nstop() {\n    msg_begin \"Stopping openvpn\"\n    killall $(basename ${PROG}) &>/dev/null\n    ps | grep $(basename ${PROG}) | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n    msg_done\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n        \n    stop)\n        stop\n        ;;\n        \n    restart)\n        stop\n        start\n        ;;\n    \n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S60dockerd",
    "content": "#!/bin/bash\n\nPROG=/usr/bin/dockerd\nLOG=/var/log/dockerd.log\nCONF=/etc/docker/daemon.json\nRUN_DIR=/run/docker\nVARLIB_DIR=/var/lib/docker\nDATA_DIR=/data/docker\n\ntest -x ${PROG} || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\n\nfunction start() {\n    msg_begin \"Starting docker engine\"\n    mkdir -p ${DATA_DIR}\n    test -L ${VARLIB_DIR} || ln -sf ${DATA_DIR} ${VARLIB_DIR}\n    mkdir -p ${RUN_DIR}\n    modprobe fuse &>/dev/null\n    ${PROG} -H unix:///var/run/docker.sock -G root >> ${LOG} 2>&1 &\n    test $? == 0 && msg_done || msg_fail\n}\n\nfunction stop() {\n    msg_begin \"Stopping docker engine\"\n    killall -q $(basename ${PROG})\n    test $? == 0 && msg_done || msg_fail\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n    \n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\n        ;;\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S60sshd",
    "content": "#!/bin/bash\n\nSYS_DIR=/etc/ssh\nUSER_DIR=/data/etc/ssh\nRUN_DIR=/var/run/ssh\n\nSYS_CONF=\"${SYS_DIR}/sshd_config\"\nUSER_CONF=\"${USER_DIR}/sshd_config\"\nCONF=\"${RUN_DIR}/sshd_config\"\n\nPROG=\"/usr/sbin/sshd\"\nPROG_KG=\"/usr/bin/ssh-keygen\"\n\n\ntest -x ${PROG} || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ntest -s \"${SYS_CONF}\" || exit 0\n\n\nstart() {\n    # merge user and sys conf files; options in first file take precedence\n    mkdir -p $(dirname ${CONF})\n    if [[ -s ${USER_CONF} ]]; then\n        cat ${USER_CONF} ${SYS_CONF} > ${CONF}\n    else\n        cp ${SYS_CONF} ${CONF}\n    fi\n\n    # ensure various dirs existence\n    mkdir -p ${USER_DIR}\n    mkdir -p ${RUN_DIR}\n\n    # create any missing keys\n    if ! [[ -s ${USER_DIR}/ssh_host_rsa_key ]]; then\n        msg_begin \"Generating ssh host keys\"\n        for type in rsa dsa ecdsa ed25519; do\n            ssh-keygen -f ${USER_DIR}/ssh_host_${type}_key -N '' -t ${type} >/dev/null\n        done\n        test $? == 0 && msg_done || msg_fail\n    fi\n    \n    # adjust any existing client keys permissions\n    chmod go-rwx ${USER_DIR}/id_rsa* 2>/dev/null\n\n    # copy system authorized keys, if present\n    if [[ -f /etc/ssh/authorized_keys ]] && ! [[ -e ${USER_DIR}/authorized_keys ]]; then\n        cp /etc/ssh/authorized_keys ${USER_DIR}\n    fi\n\n    msg_begin \"Starting sshd\"\n    \n    umask 077\n    hostname=$(hostname)\n    echo \"Welcome to ${hostname}!\" > ${RUN_DIR}/sshd_banner\n    sync\n\n    ${PROG} -f ${CONF}\n    test $? == 0 && msg_done || msg_fail\n}\n\nstop() {\n    msg_begin \"Stopping sshd\"\n    killall -q $(basename ${PROG}) \n    test $? == 0 && msg_done || msg_fail\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n\n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S61proftpd",
    "content": "#!/bin/bash\n\nCONF=\"/etc/proftpd.conf\"\nPROG=\"/usr/sbin/proftpd\"\n\n\ntest -x ${PROG} || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\ntest -n \"${OS_DEBUG}\" || source /etc/init.d/conf\n\ntest -s \"${CONF}\" || exit 0\n\n\nstart() {\n    msg_begin \"Starting proftpd\"\n    mkdir -p /var/run/proftpd\n    touch /var/log/wtmp\n    ${PROG} &>/dev/null\n    test $? == 0 && msg_done || msg_fail\n}\n\nstop() {\n    msg_begin \"Stopping proftpd\"\n    killall -q $(basename ${PROG})\n    test $? == 0 && msg_done || msg_fail\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n    \n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\n        ;;\nesac\n\nexit 0\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S62smb",
    "content": "#!/bin/bash\n\nCONF=\"/etc/samba/smb.conf\"\n\nPROG=\"/usr/sbin/smbd\"\nPROG_N=\"/usr/sbin/nmbd\"\n\n\ntest -x ${PROG} || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\ntest -n \"${OS_DEBUG}\" || source /etc/init.d/conf\n\ntest -s \"${CONF}\" || exit 0\n\n\nstart() {\n    mkdir -p /var/log/samba\n    mkdir -p /var/lib/samba/private\n\n    msg_begin \"Starting smbd\"\n    ${PROG} -D\n    test $? == 0 && msg_done || msg_fail\n\n    msg_begin \"Starting nmbd\"\n    ${PROG_N} -D\n    test $? == 0 && msg_done || msg_fail\n}\n\nstop() {\n    msg_begin \"Stopping smbd\"\n    killall -q $(basename ${PROG})\n    test $? == 0 && msg_done || msg_fail\n\n    msg_begin \"Stopping nmbd\"\n    killall -q $(basename ${PROG_N})\n    test $? == 0 && msg_done || msg_fail\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n\n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S70mongod",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/mongodb.conf\"\nBOOT_CONF=\"/boot/mongodb.conf\"\nCONF=\"/data/etc/mongodb.conf\"\n\nPROG=\"/usr/bin/mongod\"\n\n\ntest -x ${PROG} || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nprepare_conf ${CONF} ${SYS_CONF} ${BOOT_CONF}\ntest -s \"${CONF}\" || exit 0\n\n\nstart() {\n    msg_begin \"Starting mongod\"\n    db_dir=$(cat ${CONF} | grep dbpath | cut -d '=' -f 2)\n    mkdir -p ${db_dir}\n    ${PROG} -f ${CONF} --fork > /dev/null\n    test $? == 0 && msg_done || msg_fail\n}\n\nstop() {\n    msg_begin \"Stopping mongod\"\n    killall -q $(basename ${PROG})\n    test $? == 0 && msg_done || msg_fail\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n\n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S71redis",
    "content": "#!/bin/bash\n\nSYS_CONF=\"/etc/redis.conf\"\nBOOT_CONF=\"/boot/redis.conf\"\nCONF=\"/data/etc/redis.conf\"\n\nPROG=\"/usr/bin/redis-server\"\n\n\ntest -x ${PROG} || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nprepare_conf ${CONF} ${SYS_CONF} ${BOOT_CONF}\ntest -s \"${CONF}\" || exit 0\n\n\nstart() {\n    msg_begin \"Starting redis\"\n    db_dir=$(cat ${CONF} | grep -E '^dir' | cut -d ' ' -f 2)\n    test -n \"${db_dir}\" && mkdir -p ${db_dir}\n    ${PROG} ${CONF}\n    test $? == 0 && msg_done || msg_fail\n}\n\nstop() {\n    msg_begin \"Stopping redis\"\n    killall -q $(basename ${PROG})\n    test $? == 0 && msg_done || msg_fail\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n\n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S72postgresql",
    "content": "#!/bin/bash\n\nBOOT_CONF=\"/boot/postgresql.conf\"\nSYS_CONF=\"/etc/postgresql.conf\"\nCONF=\"/data/etc/postgresql.conf\"\n\nPROG=\"/usr/bin/pg_ctl\"\n\nDB_DIR=\"/var/lib/postgresql\"\nUSER=\"postgres\"\nLOG=\"/var/log/postgresql.log\"\nDUMP_FILE=\"/var/lib/postgresql-dump.sql.gz\"\n\n\nfunction run_pg_ctl() {\n    su ${USER} -c \"${PROG} $*\"\n}\n\n\ntest -x ${PROG} || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nprepare_conf ${CONF} ${SYS_CONF} ${BOOT_CONF}\n\n\nfunction start() {\n    # Remove postgresql data dir if bin/data version mismatch\n    if [[ -f ${DB_DIR}/PG_VERSION ]]; then\n        data_version=$(cat ${DB_DIR}/PG_VERSION)\n        bin_version=$(${PROG} -V | cut -d ' ' -f 3 | cut -d . -f 1)\n        if [[ \"${data_version}\" != \"${bin_version}\" ]]; then\n            msg_begin \"Backing up old postgresql data directory\"\n            rm -rf ${DB_DIR}.old\n            mv ${DB_DIR} ${DB_DIR}.old\n            msg_done\n        fi\n    fi\n\n    mkdir -p ${DB_DIR}\n    chown -R ${USER} ${DB_DIR}\n    touch ${LOG}\n    chown ${USER} ${LOG}\n    cd ${DB_DIR}\n    \n    # Initialize data dir if not present\n    fresh=\n    if ! [[ -f ${DB_DIR}/PG_VERSION ]]; then\n        msg_begin \"Initializing postgresql data directory\"\n        run_pg_ctl initdb -s -D ${DB_DIR} -o \\'-E UTF-8 --no-locale\\' &>> ${LOG}\n        test $? == 0 && msg_done || msg_fail\n        echo \"include_if_exists = '${CONF}'\" >> ${DB_DIR}/postgresql.conf\n        fresh=true\n    fi\n\n    # Start server\n    msg_begin \"Starting postgresql\"\n    run_pg_ctl start -s -D ${DB_DIR} -l ${LOG}\n    test $? == 0 && msg_done || msg_fail\n\n    # Restore from dump if present\n    if [[ -f ${DUMP_FILE} ]] && [[ -n \"${fresh}\" ]]; then\n        msg_begin \"Restoring postgresql data from dump\"\n        if gzip -t ${DUMP_FILE} &>/dev/null; then\n            # Remove any existing old DB backup directory to make space\n            rm -rf ${DB_DIR}.old\n            if gunzip < ${DUMP_FILE} | psql -U ${USER} &>> ${LOG}; then\n                msg_done\n                rm ${DUMP_FILE}\n            else\n                msg_fail\n            fi\n        else\n            msg_fail \"invalid dump file\"\n        fi\n    fi\n}\n\nfunction stop() {\n    msg_begin \"Stopping postgresql\"\n    run_pg_ctl stop -s -D ${DB_DIR} -m fast &>> ${LOG}\n    test $? == 0 && msg_done || msg_fail\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n\n    restart)\n        stop\n        start\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S79postupgradeapp",
    "content": "#!/bin/bash\n\nPOST_UPGRADE_DIR=\"/usr/share/post-upgrade\"\nPOST_UPGRADE_APP_SCHEDULED=\"/data/.post-upgrade-app-scheduled\"\n\nLOG=\"/var/log/post-upgrade.log\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ntest -f ${POST_UPGRADE_APP_SCHEDULED} || exit 0\n\nfunction run_post_upgrade() {\n    for script in $(cat ${POST_UPGRADE_APP_SCHEDULED}); do\n        msg_begin \"Running post-upgrade script ${script}\"\n        ${script} >> ${LOG} 2>&1\n        test $? == 0 && msg_done || msg_fail\n    done\n\n    if [[ -x \"${POST_UPGRADE_DIR}/post-upgrade-app.sh\" ]]; then\n        msg_begin \"Running common post-upgrade-app script\"\n        ${POST_UPGRADE_DIR}/post-upgrade-app.sh >> ${LOG} 2>&1\n        test $? == 0 && msg_done || msg_fail\n    fi\n}\n\ncase \"$1\" in\n    start)\n        run_post_upgrade\n        rm ${POST_UPGRADE_APP_SCHEDULED}\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S80dockercompose",
    "content": "#!/bin/bash\n\nSYS_CONF=/etc/docker-compose.yml\nBOOT_CONF=/boot/docker-compose.yml\nUSER_CONF=/data/etc/docker-compose.yml\n\nSYS_ENV=/etc/docker-compose.env\nBOOT_ENV=/boot/docker-compose.env\nUSER_ENV=/data/etc/docker-compose.env\n\nSYS_ENV_SH=/etc/docker-compose.env.sh\nBOOT_ENV_SH=/boot/docker-compose.env.sh\nUSER_ENV_SH=/data/etc/docker-compose.env.sh\n\nDOCKER=/usr/bin/docker\nLOG=/var/log/docker-compose.log\n\nPROJ=system\nRUN_DIR=/var/run/docker-compose\nENV_FILE=/tmp/docker-compose.env\n\nexport COMPOSE_HTTP_TIMEOUT=600\n\ntest -x ${DOCKER} || exit 0\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\nCONF=$(append_conf ${SYS_CONF} ${BOOT_CONF} ${USER_CONF})\ntest -n \"${CONF}\" || exit 0\n\nfor env_sh_file in ${SYS_ENV_SH} ${BOOT_ENV_SH} ${USER_ENV_SH}; do\n    test -s ${env_sh_file} && source ${env_sh_file}\ndone\n\nfunction make_env_file() {\n    echo -n > ${ENV_FILE}\n    for env_file in ${SYS_ENV} ${BOOT_ENV} ${USER_ENV}; do\n        test -s ${env_file} && cat ${env_file} >> ${ENV_FILE}\n    done\n}\n\nfunction start() {\n    msg_begin \"Starting docker compose\"\n    \n    # Wait for dockerd to start\n    running=false\n    for ((i=0; i < 30; i++)); do\n        if docker ps &>/dev/null; then\n            running=true\n            break\n        fi\n        sleep 1\n    done\n    \n    if [[ ${running} != true ]]; then\n        msg_fail \"dockerd not running\"\n        return\n    fi\n\n    mkdir -p ${RUN_DIR}\n    \n    make_env_file\n    conf=$(echo ${CONF} | sed 's/ / -f /g')\n    \n    ${DOCKER} compose --env-file ${ENV_FILE} -p ${PROJ} --project-directory ${RUN_DIR} -f ${conf} pull &>${LOG}\n    ${DOCKER} compose --env-file ${ENV_FILE} -p ${PROJ} --project-directory ${RUN_DIR} -f ${conf} up --no-start &>>${LOG}\n    ${DOCKER} compose --env-file ${ENV_FILE} -p ${PROJ} --project-directory ${RUN_DIR} -f ${conf} up -d &>>${LOG}\n    test $? == 0 && msg_done || msg_fail\n}\n\nfunction stop() {\n    msg_begin \"Stopping docker compose\"\n    \n    make_env_file\n    conf=$(echo ${CONF} | sed 's/ / -f /g')\n\n    ${DOCKER} compose --env-file ${ENV_FILE} -p ${PROJ} --project-directory ${RUN_DIR} -f ${conf} stop &>>${LOG}\n    test $? == 0 && msg_done || msg_fail\n}\n\nfunction pull() {\n    msg_begin \"Pulling docker compose images\"\n    \n    make_env_file\n    conf=$(echo ${CONF} | sed 's/ / -f /g')\n\n    ${DOCKER} compose --env-file ${ENV_FILE} -p ${PROJ} --project-directory ${RUN_DIR} -f ${conf} pull &>>${LOG}\n    test $? == 0 && msg_done || { msg_fail; exit 1; }\n}\n\nfunction generic_command() {\n    msg \"Running docker compose $1\"\n\n    make_env_file\n    conf=$(echo ${CONF} | sed 's/ / -f /g')\n\n    ${DOCKER} compose --env-file ${ENV_FILE} -p ${PROJ} --project-directory ${RUN_DIR} -f ${conf} \"${@:1}\"\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n    \n    restart)\n        stop\n        start\n        ;;\n\n    pull)\n        pull\n        ;;\n    \n    *)\n        generic_command \"${@:1}\"\n        ;;\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S97dyndns",
    "content": "#!/bin/bash\n\nPROG=\"/usr/sbin/dyndns-update\"\nSCRIPT=\"/data/etc/dyndns-update.sh\"\n\n\ntest -s \"${SCRIPT}\" || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ncase \"$1\" in\n    start)\n        msg_begin \"Updating dynamic DNS\"\n        ${PROG} &>/dev/null\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/S98userinit",
    "content": "#!/bin/bash\n\nUSERINIT=\"/data/etc/userinit.sh\"\n\n\ntest -s \"${USERINIT}\" || exit 0\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ncase \"$1\" in\n    start)\n        msg_begin \"Executing user init script\"\n        /bin/bash ${USERINIT}\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/base",
    "content": "\nsource /etc/version\nBOARD_SN=$(/etc/init.d/boardsn)\nBOARD_NAME=$(cat /etc/board)\n\ntest -n \"${OS_DEBUG}\" || source /etc/init.d/os_conf\n\nmsg() {\n    echo \" * $1\"\n}\n\nmsg_begin() {\n    echo -n \" * $1: \"\n}\n\nmsg_done() {\n    test -n \"$1\" && echo $1 || echo \"done\"\n}\n\nmsg_fail() {\n    test -n \"$1\" && echo $1 || echo \"failed\"\n}\n\nmsg_background() {\n    test -n \"$1\" && echo $1 || echo \"pending\"\n}\n\nprepare_conf() {\n    # $1 - actual config file\n    # $2 - system-provided config file\n    # $3 - user-provided config file\n    \n    # long story short:\n    #  * user conf file takes precedence, if present\n    #  * system conf file is used by default, if actual file absent\n    \n    actual_conf=\"$1\"\n    system_conf=\"$2\"\n    user_conf=\"$3\"\n    \n    if [[ -n \"${user_conf}\" && -e \"${user_conf}\" ]]; then\n        cp -rf \"${user_conf}\" \"${actual_conf}\"\n        \n        # we want only Unix newlines in conf files\n        if [[ -f \"${actual_conf}\" ]]; then\n            sed -i 's/\\r//g' \"${actual_conf}\"\n        elif [[ -d \"${actual_conf}\" ]]; then\n            find \"${actual_conf}\" -type f | xargs -L1 sed -i 's/\\r//g'\n        fi\n        \n        grep -E \"/boot .*ro[\\s,]\" /proc/mounts &>/dev/null\n        RO=$?\n        test ${RO} == 0 && mount -o remount,rw /boot\n        rm -rf ${user_conf}\n        test ${RO} == 0 && mount -o remount,ro /boot\n    fi\n\n    if [[ ! -e \"${actual_conf}\" && -e \"${system_conf}\" ]]; then\n        mkdir -p $(dirname \"${actual_conf}\")\n        cp -rf \"${system_conf}\" \"${actual_conf}\"\n    fi\n}\n\nselect_conf() {\n    # $1 - system config file\n    # $2 - boot config file\n    # $3 - user config file\n\n    # Selects and returns the first existing (and with size > 0) file, in this order:\n    #  * user config file\n    #  * boot config file\n    #  * system config file\n\n    system_conf=\"$1\"\n    boot_conf=\"$2\"\n    user_conf=\"$3\"\n    \n    test -s \"${user_conf}\" && echo \"${user_conf}\" && return\n    test -s \"${boot_conf}\" && echo \"${boot_conf}\" && return\n    test -s \"${system_conf}\" && echo \"${system_conf}\" && return\n    \n    return 1\n}\n\nappend_conf() {\n    # $1 - system config file\n    # $2 - boot config file\n    # $3 - user config file\n\n    # Returns a list of space-separated existing config files (and with size > 0) file, in this order:\n    #  * user config file\n    #  * boot config file\n    #  * system config file\n\n    system_conf=\"$1\"\n    boot_conf=\"$2\"\n    user_conf=\"$3\"\n    \n    files=$(\n        test -s \"${user_conf}\" && echo \"${user_conf}\"\n        test -s \"${boot_conf}\" && echo \"${boot_conf}\"\n        test -s \"${system_conf}\" && echo \"${system_conf}\"\n    )\n    \n    echo ${files}\n}\n\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/boardsn",
    "content": "#!/bin/bash\n\n__sn=$(cat /proc/cpuinfo | grep Serial | tr -d ' ' | cut -d ':' -f 2)\ntest -n \"${__sn}\" || __sn=$(cat /sys/class/net/eth0/address | tr -d ':')\necho ${__sn: -8}\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/bootdone",
    "content": "#!/bin/bash\n\nsource /sbin/panic\n\nsleep ${PANIC_REBOOT_DELAY_MAX} && reset &\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/mountsys",
    "content": "#!/bin/bash\n\n/bin/mkdir -p /dev/pts\n/bin/mkdir -p /dev/shm\n/bin/mount --make-shared /\n/bin/mount -T /etc/fstab.sys -a\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/os_conf",
    "content": "_SYS_CONF=\"/etc/os.conf\"\n_PLATFORM_CONF=\"/etc/os-platform.conf\"\n_DATA_CONF=\"/data/etc/os.conf\"\n_BOOT_CONF=\"/boot/os.conf\"\n\n\n# source in all conf files in order of precedence\nif [[ -f ${_SYS_CONF} ]]; then\n    source ${_SYS_CONF}\nfi\n\nif [[ -f ${_PLATFORM_CONF} ]]; then\n    source ${_PLATFORM_CONF}\nfi\n\nif [[ -f ${_DATA_CONF} ]]; then\n    source ${_DATA_CONF}\nfi\n\nif [[ -f ${_BOOT_CONF} ]]; then\n    source ${_BOOT_CONF}\nfi\n\nunset _SYS_CONF _PLATFORM_CONF _DATA_CONF _BOOT_CONF\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/rcK",
    "content": "#!/bin/bash\n\nBOOT_LOG=/var/log/boot.log\nPID_FILE=/tmp/rcK.pid\n\nsource /etc/init.d/base\n\nfunction run_shutdown() {\n    echo -e \"\\n---- shutting down ${OS_NAME} ${OS_VERSION} ----\"\n\n    # Stop all init scripts in /etc/init.d, executing them in reverse numerical order.\n    for i in $(ls -r /etc/init.d/S??*); do\n        if ! [[ -x \"${i}\" ]]; then continue; fi\n        if [[ -f /data/etc/no_$(basename ${i}) ]]; then continue; fi\n        ${i} stop\n    done\n}\n\n(run_shutdown & echo $! > ${PID_FILE}) | tee -a ${BOOT_LOG} &\n\npid=$(cat ${PID_FILE})\nwhile kill -0 ${pid} &>/dev/null; do\n    sleep 1\ndone\n\n/bin/umount -a -r\n/sbin/swapoff -a\n"
  },
  {
    "path": "board/common/overlay/etc/init.d/rcS",
    "content": "#!/bin/bash\n\nBOOT_LOG=/var/log/boot.log\nTMP_BOOT_LOG=/tmp/_boot.log\nPID_FILE=/tmp/rcS.pid\n\n/etc/init.d/mountsys\n\nset -a\ntest -s /etc/environment && source /etc/environment\ntest -s /data/etc/environment && source /data/etc/environment\ntest -s /boot/etc/environment && source /boot/etc/environment\nset +a\n\nsource /etc/init.d/base\n\nfunction run_init() {\n    echo \"---- booting ${OS_NAME} ${OS_VERSION} ----\"\n\n    # Start all init scripts in /etc/init.d, executing them in numerical order.\n    for i in /etc/init.d/S??* /etc/init.d/bootdone; do\n        if ! [[ -x \"${i}\" ]]; then continue; fi\n        if [[ -f /data/etc/no_$(basename ${i}) ]]; then continue; fi\n        ${i} start\n    done\n}\n\n(run_init & echo $! > ${PID_FILE}) | tee -a ${TMP_BOOT_LOG} &\n\npid=$(cat ${PID_FILE})\nwhile kill -0 ${pid} &>/dev/null; do\n    sleep 1\ndone\n\n# Check for data partition availability and only then move the boot log\ntest -d $(dirname ${BOOT_LOG}) && cat ${TMP_BOOT_LOG} >> ${BOOT_LOG}\n"
  },
  {
    "path": "board/common/overlay/etc/inittab",
    "content": "# /etc/inittab\n#\n# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>\n#\n# Note: BusyBox init doesn't support runlevels.  The runlevels field is\n# completely ignored by BusyBox init. If you want runlevels, use\n# sysvinit.\n#\n# Format for each entry: <id>:<runlevels>:<action>:<process>\n#\n# id        == tty to run on, or empty for /dev/console\n# runlevels == ignored\n# action    == one of sysinit, respawn, askfirst, wait, and once\n# process   == program to run\n\n# Startup the system\n::sysinit:/etc/init.d/rcS\n\n# Start a getty for local login\nttylogin::respawn:/sbin/getty -L ttylogin 115200 vt100\n\n# Stuff to do for the 3-finger salute\n::ctrlaltdel:/sbin/reboot\n\n# Stuff to do before rebooting\n::shutdown:/etc/init.d/rcK\n"
  },
  {
    "path": "board/common/overlay/etc/inputrc",
    "content": "# /etc/inputrc - global inputrc for libreadline\n# See readline(3readline) and `info readline' for more information.\n\n# Be 8 bit clean.\nset input-meta on\nset output-meta on\nset bell-style visible\n\n# To allow the use of 8bit-characters like the german umlauts, comment out\n# the line below. However this makes the meta key not work as a meta key,\n# which is annoying to those which don't need to type in 8-bit characters.\n\n# set convert-meta off\n\n\"\\e0d\": backward-word\n\"\\e0c\": forward-word\n\"\\e[h\": beginning-of-line\n\"\\e[f\": end-of-line\n\"\\e[1~\": beginning-of-line\n\"\\e[4~\": end-of-line\n#\"\\e[5~\": beginning-of-history\n#\"\\e[6~\": end-of-history\n\"\\e[3~\": delete-char\n\"\\e[2~\": quoted-insert\n\n# Common standard keypad and cursor\n# (codes courtsey Werner Fink, <werner@suse.de>)\n#\"\\e[1~\": history-search-backward\n\"\\e[2~\": yank\n\"\\e[3~\": delete-char\n#\"\\e[4~\": set-mark\n\"\\e[5~\": history-search-backward\n\"\\e[6~\": history-search-forward\n# Normal keypad and cursor of xterm\n\"\\e[F\": end-of-line\n\"\\e[H\": beginning-of-line\n# Application keypad and cursor of xterm\n\"\\eOA\": previous-history\n\"\\eOC\": forward-char\n\"\\eOB\": next-history\n\"\\eOD\": backward-char\n\"\\eOF\": end-of-line\n\"\\eOH\": beginning-of-line\n\n"
  },
  {
    "path": "board/common/overlay/etc/issue",
    "content": "Welcome to \\n!\n"
  },
  {
    "path": "board/common/overlay/etc/logrotate.conf",
    "content": "/var/log/*.log /var/log/messages /var/log/*/*.log {\n    rotate 9\n    compress\n    copytruncate\n    size 10M\n    missingok\n    nomail\n}\n"
  },
  {
    "path": "board/common/overlay/etc/mime.types",
    "content": "application/1d-interleaved-parityfec\napplication/3gpp-ims+xml\napplication/CSTAdata+xml\napplication/EDI-Consent\napplication/EDI-X12\napplication/EDIFACT\napplication/H224\napplication/activemessage\napplication/andrew-inset\t\t\t\t\t\t\t\t\tez\napplication/annodex\t\t\t\t\t\t\t\t\t\t\tanx\napplication/applefile\napplication/applixware\t\t\t\t\t\t\t\t\t\taw\napplication/atom+xml\t\t\t\t\t\t\t\t\t\tatom\napplication/atomcat+xml\t\t\t\t\t\t\t\t\t\tatomcat\napplication/atomdeleted+xml\napplication/atomicmail\napplication/atomserv+xml\t\t\t\t\t\t\t\t\tatomsrv\napplication/atomsvc+xml\t\t\t\t\t\t\t\t\t\tatomsvc\napplication/auth-policy+xml\napplication/batch-SMTP\napplication/batch-smtp\napplication/bbolin\t\t\t\t\t\t\t\t\t\t\tlin\napplication/beep+xml\napplication/calendar+xml\napplication/cals-1840\napplication/ccmp+xml\napplication/ccxml+xml\t\t\t\t\t\t\t\t\t\tccxml\napplication/cdmi-capability\t\t\t\t\t\t\t\t\tcdmia\napplication/cdmi-container\t\t\t\t\t\t\t\t\tcdmic\napplication/cdmi-domain\t\t\t\t\t\t\t\t\t\tcdmid\napplication/cdmi-object\t\t\t\t\t\t\t\t\t\tcdmio\napplication/cdmi-queue\t\t\t\t\t\t\t\t\t\tcdmiq\napplication/cea-2018+xml\napplication/cellml+xml\napplication/cfw\napplication/cnrp+xml\napplication/commonground\napplication/conference-info+xml\napplication/cpl+xml\napplication/csta+xml\napplication/cstadata+xml\napplication/cu-seeme\t\t\t\t\t\t\t\t\t\tcu\napplication/cybercash\napplication/davmount+xml\t\t\t\t\t\t\t\t\tdavmount\napplication/dca-rft\napplication/dec-dx\napplication/dialog-info+xml\napplication/dicom\t\t\t\t\t\t\t\t\t\t\tdcm\napplication/dns\napplication/docbook+xml\t\t\t\t\t\t\t\t\t\tdbk\napplication/dskpp+xml\napplication/dsptype\t\t\t\t\t\t\t\t\t\t\ttsp\napplication/dssc+der\t\t\t\t\t\t\t\t\t\tdssc\napplication/dssc+xml\t\t\t\t\t\t\t\t\t\txdssc\napplication/dvcs\napplication/ecmascript\t\t\t\t\t\t\t\t\t\tecma es\napplication/edi-consent\napplication/edi-x12\napplication/edifact\napplication/emma+xml\t\t\t\t\t\t\t\t\t\temma\napplication/epp+xml\napplication/epub+zip\t\t\t\t\t\t\t\t\t\tepub\napplication/eshop\napplication/example\napplication/exi\t\t\t\t\t\t\t\t\t\t\t\texi\napplication/fastinfoset\napplication/fastsoap\napplication/fdt+xml\napplication/fits\napplication/font-tdpfr\t\t\t\t\t\t\t\t\t\tpfr\napplication/framework-attributes+xml\napplication/futuresplash\t\t\t\t\t\t\t\t\tspl\napplication/ghostview\napplication/gml+xml\t\t\t\t\t\t\t\t\t\t\tgml\napplication/gpx+xml\t\t\t\t\t\t\t\t\t\t\tgpx\napplication/gxf\t\t\t\t\t\t\t\t\t\t\t\tgxf\napplication/gzip\napplication/h224\napplication/held+xml\napplication/hta\t\t\t\t\t\t\t\t\t\t\t\thta\napplication/http\napplication/hyperstudio\t\t\t\t\t\t\t\t\t\tstk\napplication/ibe-key-request+xml\napplication/ibe-pkg-reply+xml\napplication/ibe-pp-data\napplication/iges\napplication/im-iscomposing+xml\napplication/index\napplication/index.cmd\napplication/index.obj\napplication/index.response\napplication/index.vnd\napplication/inkml+xml\t\t\t\t\t\t\t\t\t\tink inkml\napplication/iotp\napplication/ipfix\t\t\t\t\t\t\t\t\t\t\tipfix\napplication/ipp\napplication/isup\napplication/java-archive\t\t\t\t\t\t\t\t\tjar\napplication/java-serialized-object\t\t\t\t\t\t\tser\napplication/java-vm\t\t\t\t\t\t\t\t\t\t\tclass\napplication/javascript\t\t\t\t\t\t\t\t\t\tjs\napplication/json\t\t\t\t\t\t\t\t\t\t\tjson\napplication/jsonml+json\t\t\t\t\t\t\t\t\t\tjsonml\napplication/kpml-request+xml\napplication/kpml-response+xml\napplication/link-format\napplication/lost+xml\t\t\t\t\t\t\t\t\t\tlostxml\napplication/lostsync+xml\napplication/m3g\t\t\t\t\t\t\t\t\t\t\t\tm3g\napplication/mac-binhex40\t\t\t\t\t\t\t\t\thqx\napplication/mac-compactpro\t\t\t\t\t\t\t\t\tcpt\napplication/macwriteii\napplication/mads+xml\t\t\t\t\t\t\t\t\t\tmads\napplication/marc\t\t\t\t\t\t\t\t\t\t\tmrc\napplication/marcxml+xml\t\t\t\t\t\t\t\t\t\tmrcx\napplication/mathematica\t\t\t\t\t\t\t\t\t\tma mb nb nbp\napplication/mathml+xml\t\t\t\t\t\t\t\t\t\tmathml\napplication/mathml-content+xml\napplication/mathml-presentation+xml\napplication/mbms-associated-procedure-description+xml\napplication/mbms-deregister+xml\napplication/mbms-envelope+xml\napplication/mbms-msk+xml\napplication/mbms-msk-response+xml\napplication/mbms-protection-description+xml\napplication/mbms-reception-report+xml\napplication/mbms-register+xml\napplication/mbms-register-response+xml\napplication/mbms-user-service-description+xml\napplication/mbox\t\t\t\t\t\t\t\t\t\t\tmbox\napplication/media-policy-dataset+xml\napplication/media_control+xml\napplication/mediaservercontrol+xml\t\t\t\t\t\t\tmscml\napplication/metalink+xml\t\t\t\t\t\t\t\t\tmetalink\napplication/metalink4+xml\t\t\t\t\t\t\t\t\tmeta4\napplication/mets+xml\t\t\t\t\t\t\t\t\t\tmets\napplication/mikey\napplication/mods+xml\t\t\t\t\t\t\t\t\t\tmods\napplication/moss-keys\napplication/moss-signature\napplication/mosskey-data\napplication/mosskey-request\napplication/mp21\t\t\t\t\t\t\t\t\t\t\tm21 mp21\napplication/mp4\t\t\t\t\t\t\t\t\t\t\t\tmp4s\napplication/mpeg4-generic\napplication/mpeg4-iod\napplication/mpeg4-iod-xmt\napplication/ms-tnef\napplication/msaccess\t\t\t\t\t\t\t\t\t\tmdb\napplication/msc-ivr+xml\napplication/msc-mixer+xml\napplication/msword\t\t\t\t\t\t\t\t\t\t\tdoc dot\napplication/mxf\t\t\t\t\t\t\t\t\t\t\t\tmxf\napplication/nasdata\napplication/news-checkgroups\napplication/news-groupinfo\napplication/news-message-id\napplication/news-transmission\napplication/nlsml+xml\napplication/nss\napplication/ocsp-request\napplication/ocsp-response\napplication/octet-stream\t\t\t\t\t\t\t\t\tbin bpk deploy dist distz dmg dms dump elc iso lha lrf lzh mar pkg so\napplication/oda\t\t\t\t\t\t\t\t\t\t\t\toda\napplication/oebps-package+xml\t\t\t\t\t\t\t\topf\napplication/ogg\t\t\t\t\t\t\t\t\t\t\t\togg ogx\napplication/omdoc+xml\t\t\t\t\t\t\t\t\t\tomdoc\napplication/onenote\t\t\t\t\t\t\t\t\t\t\tone onepkg onetmp onetoc onetoc2\napplication/oxps\t\t\t\t\t\t\t\t\t\t\toxps\napplication/parityfec\napplication/patch-ops-error+xml\t\t\t\t\t\t\t\txer\napplication/pdf\t\t\t\t\t\t\t\t\t\t\t\tpdf\napplication/pgp-encrypted\t\t\t\t\t\t\t\t\tasc pgp\napplication/pgp-keys\t\t\t\t\t\t\t\t\t\tkey\napplication/pgp-signature\t\t\t\t\t\t\t\t\tasc pgp sig\napplication/pics-rules\t\t\t\t\t\t\t\t\t\tprf\napplication/pidf+xml\napplication/pidf-diff+xml\napplication/pkcs10\t\t\t\t\t\t\t\t\t\t\tp10\napplication/pkcs7-mime\t\t\t\t\t\t\t\t\t\tp7c p7m\napplication/pkcs7-signature\t\t\t\t\t\t\t\t\tp7s\napplication/pkcs8\t\t\t\t\t\t\t\t\t\t\tp8\napplication/pkix-attr-cert\t\t\t\t\t\t\t\t\tac\napplication/pkix-cert\t\t\t\t\t\t\t\t\t\tcer\napplication/pkix-crl\t\t\t\t\t\t\t\t\t\tcrl\napplication/pkix-pkipath\t\t\t\t\t\t\t\t\tpkipath\napplication/pkixcmp\t\t\t\t\t\t\t\t\t\t\tpki\napplication/pls+xml\t\t\t\t\t\t\t\t\t\t\tpls\napplication/poc-settings+xml\napplication/postscript\t\t\t\t\t\t\t\t\t\tai eps eps2 eps3 epsf epsi ps\napplication/prs.alvestrand.titrax-sheet\napplication/prs.cww\t\t\t\t\t\t\t\t\t\t\tcww\napplication/prs.nprend\napplication/prs.plucker\napplication/prs.rdf-xml-crypt\napplication/prs.xsf+xml\napplication/pskc+xml\t\t\t\t\t\t\t\t\t\tpskcxml\napplication/qsig\napplication/raptorfec\napplication/rar\t\t\t\t\t\t\t\t\t\t\t\trar\napplication/rdf+xml\t\t\t\t\t\t\t\t\t\t\trdf\napplication/reginfo+xml\t\t\t\t\t\t\t\t\t\trif\napplication/relax-ng-compact-syntax\t\t\t\t\t\t\trnc\napplication/remote-printing\napplication/resource-lists+xml\t\t\t\t\t\t\t\trl\napplication/resource-lists-diff+xml\t\t\t\t\t\t\trld\napplication/riscos\napplication/rlmi+xml\napplication/rls-services+xml\t\t\t\t\t\t\t\trs\napplication/rpki-ghostbusters\t\t\t\t\t\t\t\tgbr\napplication/rpki-manifest\t\t\t\t\t\t\t\t\tmft\napplication/rpki-roa\t\t\t\t\t\t\t\t\t\troa\napplication/rpki-updown\napplication/rsd+xml\t\t\t\t\t\t\t\t\t\t\trsd\napplication/rss+xml\t\t\t\t\t\t\t\t\t\t\trss\napplication/rtf\t\t\t\t\t\t\t\t\t\t\t\trtf\napplication/rtx\napplication/samlassertion+xml\napplication/samlmetadata+xml\napplication/sbml+xml\t\t\t\t\t\t\t\t\t\tsbml\napplication/scvp-cv-request\t\t\t\t\t\t\t\t\tscq\napplication/scvp-cv-response\t\t\t\t\t\t\t\tscs\napplication/scvp-vp-request\t\t\t\t\t\t\t\t\tspq\napplication/scvp-vp-response\t\t\t\t\t\t\t\tspp\napplication/sdp\t\t\t\t\t\t\t\t\t\t\t\tsdp\napplication/sep+xml\napplication/set-payment\napplication/set-payment-initiation\t\t\t\t\t\t\tsetpay\napplication/set-registration\napplication/set-registration-initiation\t\t\t\t\t\tsetreg\napplication/sgml\napplication/sgml-open-catalog\napplication/shf+xml\t\t\t\t\t\t\t\t\t\t\tshf\napplication/sieve\napplication/simple-filter+xml\napplication/simple-message-summary\napplication/simpleSymbolContainer\napplication/simplesymbolcontainer\napplication/sla\t\t\t\t\t\t\t\t\t\t\t\tstl\napplication/slate\napplication/smil\t\t\t\t\t\t\t\t\t\t\tsmi smil\napplication/smil+xml\t\t\t\t\t\t\t\t\t\tsmi smil\napplication/smpte336m\napplication/soap+fastinfoset\napplication/soap+xml\napplication/sparql-query\t\t\t\t\t\t\t\t\trq\napplication/sparql-results+xml\t\t\t\t\t\t\t\tsrx\napplication/spirits-event+xml\napplication/srgs\t\t\t\t\t\t\t\t\t\t\tgram\napplication/srgs+xml\t\t\t\t\t\t\t\t\t\tgrxml\napplication/sru+xml\t\t\t\t\t\t\t\t\t\t\tsru\napplication/ssdl+xml\t\t\t\t\t\t\t\t\t\tssdl\napplication/ssml+xml\t\t\t\t\t\t\t\t\t\tssml\napplication/tamp-apex-update\napplication/tamp-apex-update-confirm\napplication/tamp-community-update\napplication/tamp-community-update-confirm\napplication/tamp-error\napplication/tamp-sequence-adjust\napplication/tamp-sequence-adjust-confirm\napplication/tamp-status-query\napplication/tamp-status-response\napplication/tamp-update\napplication/tamp-update-confirm\napplication/tei+xml\t\t\t\t\t\t\t\t\t\t\ttei teicorpus\napplication/thraud+xml\t\t\t\t\t\t\t\t\t\ttfi\napplication/timestamp-query\napplication/timestamp-reply\napplication/timestamped-data\t\t\t\t\t\t\t\ttsd\napplication/tve-trigger\napplication/ulpfec\napplication/vcard+xml\napplication/vemmi\napplication/vividence.scriptfile\napplication/vnd.3M.Post-it-Notes\napplication/vnd.3gpp.bsf+xml\napplication/vnd.3gpp.pic-bw-large\t\t\t\t\t\t\tplb\napplication/vnd.3gpp.pic-bw-small\t\t\t\t\t\t\tpsb\napplication/vnd.3gpp.pic-bw-var\t\t\t\t\t\t\t\tpvb\napplication/vnd.3gpp.sms\napplication/vnd.3gpp2.bcmcsinfo+xml\napplication/vnd.3gpp2.sms\napplication/vnd.3gpp2.tcap\t\t\t\t\t\t\t\t\ttcap\napplication/vnd.3m.post-it-notes\t\t\t\t\t\t\tpwn\napplication/vnd.FloGraphIt\napplication/vnd.HandHeld-Entertainment+xml\napplication/vnd.Kinar\napplication/vnd.MFER\napplication/vnd.Mobius.DAF\napplication/vnd.Mobius.DIS\napplication/vnd.Mobius.MBK\napplication/vnd.Mobius.MQY\napplication/vnd.Mobius.MSL\napplication/vnd.Mobius.PLC\napplication/vnd.Mobius.TXF\napplication/vnd.Quark.QuarkXPress\napplication/vnd.RenLearn.rlprint\napplication/vnd.SimTech-MindMapper\napplication/vnd.accpac.simply.aso\t\t\t\t\t\t\taso\napplication/vnd.accpac.simply.imp\t\t\t\t\t\t\timp\napplication/vnd.acucobol\t\t\t\t\t\t\t\t\tacu\napplication/vnd.acucorp\t\t\t\t\t\t\t\t\t\tacutc atc\napplication/vnd.adobe.air-application-installer-package+zip\t\t\t\t\t\t\t\t\t\t\tair\napplication/vnd.adobe.formscentral.fcdt\t\t\t\t\t\tfcdt\napplication/vnd.adobe.fxp\t\t\t\t\t\t\t\t\tfxp fxpl\napplication/vnd.adobe.partial-upload\napplication/vnd.adobe.xdp+xml\t\t\t\t\t\t\t\txdp\napplication/vnd.adobe.xfdf\t\t\t\t\t\t\t\t\txfdf\napplication/vnd.aether.imp\napplication/vnd.ah-barcode\napplication/vnd.ahead.space\t\t\t\t\t\t\t\t\tahead\napplication/vnd.airzip.filesecure.azf\t\t\t\t\t\tazf\napplication/vnd.airzip.filesecure.azs\t\t\t\t\t\tazs\napplication/vnd.amazon.ebook\t\t\t\t\t\t\t\tazw\napplication/vnd.americandynamics.acc\t\t\t\t\t\tacc\napplication/vnd.amiga.ami\t\t\t\t\t\t\t\t\tami\napplication/vnd.amundsen.maze+xml\napplication/vnd.android.package-archive\t\t\t\t\t\tapk\napplication/vnd.anser-web-certificate-issue-initiation\t\tcii\napplication/vnd.anser-web-funds-transfer-initiation\t\t\tfti\napplication/vnd.antix.game-component\t\t\t\t\t\tatx\napplication/vnd.apple.installer+xml\t\t\t\t\t\t\tmpkg\napplication/vnd.apple.mpegurl\t\t\t\t\t\t\t\tm3u8\napplication/vnd.arastra.swi\t\t\t\t\t\t\t\t\tswi\napplication/vnd.aristanetworks.swi\t\t\t\t\t\t\tswi\napplication/vnd.astraea-software.iota\t\t\t\t\t\tiota\napplication/vnd.audiograph\t\t\t\t\t\t\t\t\taep\napplication/vnd.autopackage\napplication/vnd.avistar+xml\napplication/vnd.balsamiq.bmml+xml\napplication/vnd.blueice.multipass\t\t\t\t\t\t\tmpm\napplication/vnd.bluetooth.ep.oob\napplication/vnd.bmi\t\t\t\t\t\t\t\t\t\t\tbmi\napplication/vnd.businessobjects\t\t\t\t\t\t\t\trep\napplication/vnd.cab-jscript\napplication/vnd.canon-cpdl\napplication/vnd.canon-lips\napplication/vnd.cendio.thinlinc.clientconf\napplication/vnd.century-systems.tcp_stream\napplication/vnd.chemdraw+xml\t\t\t\t\t\t\t\tcdxml\napplication/vnd.chipnuts.karaoke-mmd\t\t\t\t\t\tmmd\napplication/vnd.cinderella\t\t\t\t\t\t\t\t\tcdy\napplication/vnd.cirpack.isdn-ext\napplication/vnd.claymore\t\t\t\t\t\t\t\t\tcla\napplication/vnd.cloanto.rp9\t\t\t\t\t\t\t\t\trp9\napplication/vnd.clonk.c4group\t\t\t\t\t\t\t\tc4d c4f c4g c4p c4u\napplication/vnd.cluetrust.cartomobile-config\t\t\t\tc11amc\napplication/vnd.cluetrust.cartomobile-config-pkg\t\t\tc11amz\napplication/vnd.collection+json\napplication/vnd.collection.next+json\napplication/vnd.commerce-battelle\napplication/vnd.commonspace\t\t\t\t\t\t\t\t\tcsp\napplication/vnd.comsocaller\napplication/vnd.contact.cmsg\t\t\t\t\t\t\t\tcdbcmsg\napplication/vnd.cosmocaller\t\t\t\t\t\t\t\t\tcmc\napplication/vnd.crick.clicker\t\t\t\t\t\t\t\tclkx\napplication/vnd.crick.clicker.keyboard\t\t\t\t\t\tclkk\napplication/vnd.crick.clicker.palette\t\t\t\t\t\tclkp\napplication/vnd.crick.clicker.template\t\t\t\t\t\tclkt\napplication/vnd.crick.clicker.wordbank\t\t\t\t\t\tclkw\napplication/vnd.criticaltools.wbs+xml\t\t\t\t\t\twbs\napplication/vnd.ctc-posml\t\t\t\t\t\t\t\t\tpml\napplication/vnd.ctct.ws+xml\napplication/vnd.cups-pdf\napplication/vnd.cups-postscript\napplication/vnd.cups-ppd\t\t\t\t\t\t\t\t\tppd\napplication/vnd.cups-raster\napplication/vnd.cups-raw\napplication/vnd.curl\napplication/vnd.curl.car\t\t\t\t\t\t\t\t\tcar\napplication/vnd.curl.pcurl\t\t\t\t\t\t\t\t\tpcurl\napplication/vnd.cyan.dean.root+xml\napplication/vnd.cybank\napplication/vnd.dart\t\t\t\t\t\t\t\t\t\tdart\napplication/vnd.data-vision.rdz\t\t\t\t\t\t\t\trdz\napplication/vnd.dece.data\t\t\t\t\t\t\t\t\tuvd uvf uvvd uvvf\napplication/vnd.dece.ttml+xml\t\t\t\t\t\t\t\tuvt uvvt\napplication/vnd.dece.unspecified\t\t\t\t\t\t\tuvvx uvx\napplication/vnd.dece.zip\t\t\t\t\t\t\t\t\tuvvz uvz\napplication/vnd.denovo.fcselayout-link\t\t\t\t\t\tfe_launch\napplication/vnd.dir-bi.plate-dl-nosuffix\napplication/vnd.dm.delegation+xml\napplication/vnd.dna\t\t\t\t\t\t\t\t\t\t\tdna\napplication/vnd.dolby.mlp\t\t\t\t\t\t\t\t\tmlp\napplication/vnd.dolby.mobile.1\napplication/vnd.dolby.mobile.2\napplication/vnd.dpgraph\t\t\t\t\t\t\t\t\t\tdpg\napplication/vnd.dreamfactory\t\t\t\t\t\t\t\tdfac\napplication/vnd.ds-keypoint\t\t\t\t\t\t\t\t\tkpxx\napplication/vnd.dtg.local\napplication/vnd.dtg.local.flash\napplication/vnd.dtg.local.html\napplication/vnd.dvb.ait\t\t\t\t\t\t\t\t\t\tait\napplication/vnd.dvb.dvbj\napplication/vnd.dvb.esgcontainer\napplication/vnd.dvb.ipdcdftnotifaccess\napplication/vnd.dvb.ipdcesgaccess\napplication/vnd.dvb.ipdcesgaccess2\napplication/vnd.dvb.ipdcesgpdd\napplication/vnd.dvb.ipdcroaming\napplication/vnd.dvb.iptv.alfec-base\napplication/vnd.dvb.iptv.alfec-enhancement\napplication/vnd.dvb.notif-aggregate-root+xml\napplication/vnd.dvb.notif-container+xml\napplication/vnd.dvb.notif-generic+xml\napplication/vnd.dvb.notif-ia-msglist+xml\napplication/vnd.dvb.notif-ia-registration-request+xml\napplication/vnd.dvb.notif-ia-registration-response+xml\napplication/vnd.dvb.notif-init+xml\napplication/vnd.dvb.pfr\napplication/vnd.dvb.service\t\t\t\t\t\t\t\t\tsvc\napplication/vnd.dxr\napplication/vnd.dynageo\t\t\t\t\t\t\t\t\t\tgeo\napplication/vnd.easykaraoke.cdgdownload\napplication/vnd.ecdis-update\napplication/vnd.ecowin.chart\t\t\t\t\t\t\t\tmag\napplication/vnd.ecowin.filerequest\napplication/vnd.ecowin.fileupdate\napplication/vnd.ecowin.series\napplication/vnd.ecowin.seriesrequest\napplication/vnd.ecowin.seriesupdate\napplication/vnd.emclient.accessrequest+xml\napplication/vnd.enliven\t\t\t\t\t\t\t\t\t\tnml\napplication/vnd.eprints.data+xml\napplication/vnd.epson.esf\t\t\t\t\t\t\t\t\tesf\napplication/vnd.epson.msf\t\t\t\t\t\t\t\t\tmsf\napplication/vnd.epson.quickanime\t\t\t\t\t\t\tqam\napplication/vnd.epson.salt\t\t\t\t\t\t\t\t\tslt\napplication/vnd.epson.ssf\t\t\t\t\t\t\t\t\tssf\napplication/vnd.ericsson.quickcall\napplication/vnd.eszigno3+xml\t\t\t\t\t\t\t\tes3 et3\napplication/vnd.etsi.aoc+xml\napplication/vnd.etsi.cug+xml\napplication/vnd.etsi.iptvcommand+xml\napplication/vnd.etsi.iptvdiscovery+xml\napplication/vnd.etsi.iptvprofile+xml\napplication/vnd.etsi.iptvsad-bc+xml\napplication/vnd.etsi.iptvsad-cod+xml\napplication/vnd.etsi.iptvsad-npvr+xml\napplication/vnd.etsi.iptvservice+xml\napplication/vnd.etsi.iptvsync+xml\napplication/vnd.etsi.iptvueprofile+xml\napplication/vnd.etsi.mcid+xml\napplication/vnd.etsi.overload-control-policy-dataset+xml\napplication/vnd.etsi.sci+xml\napplication/vnd.etsi.simservs+xml\napplication/vnd.etsi.tsl+xml\napplication/vnd.etsi.tsl.der\napplication/vnd.eudora.data\napplication/vnd.ezpix-album\t\t\t\t\t\t\t\t\tez2\napplication/vnd.ezpix-package\t\t\t\t\t\t\t\tez3\napplication/vnd.f-secure.mobile\napplication/vnd.fdf\t\t\t\t\t\t\t\t\t\t\tfdf\napplication/vnd.fdsn.mseed\t\t\t\t\t\t\t\t\tmseed\napplication/vnd.fdsn.seed\t\t\t\t\t\t\t\t\tdataless seed\napplication/vnd.ffsns\napplication/vnd.fints\napplication/vnd.flographit\t\t\t\t\t\t\t\t\tgph\napplication/vnd.fluxtime.clip\t\t\t\t\t\t\t\tftc\napplication/vnd.font-fontforge-sfd\napplication/vnd.framemaker\t\t\t\t\t\t\t\t\tbook fm frame maker\napplication/vnd.frogans.fnc\t\t\t\t\t\t\t\t\tfnc\napplication/vnd.frogans.ltf\t\t\t\t\t\t\t\t\tltf\napplication/vnd.fsc.weblaunch\t\t\t\t\t\t\t\tfsc\napplication/vnd.fujitsu.oasys\t\t\t\t\t\t\t\toas\napplication/vnd.fujitsu.oasys2\t\t\t\t\t\t\t\toa2\napplication/vnd.fujitsu.oasys3\t\t\t\t\t\t\t\toa3\napplication/vnd.fujitsu.oasysgp\t\t\t\t\t\t\t\tfg5\napplication/vnd.fujitsu.oasysprs\t\t\t\t\t\t\tbh2\napplication/vnd.fujixerox.ART-EX\napplication/vnd.fujixerox.ART4\napplication/vnd.fujixerox.HBPL\napplication/vnd.fujixerox.art-ex\napplication/vnd.fujixerox.art4\napplication/vnd.fujixerox.ddd\t\t\t\t\t\t\t\tddd\napplication/vnd.fujixerox.docuworks\t\t\t\t\t\t\txdw\napplication/vnd.fujixerox.docuworks.binder\t\t\t\t\txbd\napplication/vnd.fujixerox.hbpl\napplication/vnd.fut-misnet\napplication/vnd.fuzzysheet\t\t\t\t\t\t\t\t\tfzs\napplication/vnd.genomatix.tuxedo\t\t\t\t\t\t\ttxd\napplication/vnd.geocube+xml\napplication/vnd.geogebra.file\t\t\t\t\t\t\t\tggb\napplication/vnd.geogebra.tool\t\t\t\t\t\t\t\tggt\napplication/vnd.geometry-explorer\t\t\t\t\t\t\tgex gre\napplication/vnd.geonext\t\t\t\t\t\t\t\t\t\tgxt\napplication/vnd.geoplan\t\t\t\t\t\t\t\t\t\tg2w\napplication/vnd.geospace\t\t\t\t\t\t\t\t\tg3w\napplication/vnd.globalplatform.card-content-mgt\napplication/vnd.globalplatform.card-content-mgt-response\napplication/vnd.gmx\t\t\t\t\t\t\t\t\t\t\tgmx\napplication/vnd.google-earth.kml+xml\t\t\t\t\t\tkml\napplication/vnd.google-earth.kmz\t\t\t\t\t\t\tkmz\napplication/vnd.grafeq\t\t\t\t\t\t\t\t\t\tgqf gqs\napplication/vnd.gridmp\napplication/vnd.groove-account\t\t\t\t\t\t\t\tgac\napplication/vnd.groove-help\t\t\t\t\t\t\t\t\tghf\napplication/vnd.groove-identity-message\t\t\t\t\t\tgim\napplication/vnd.groove-injector\t\t\t\t\t\t\t\tgrv\napplication/vnd.groove-tool-message\t\t\t\t\t\t\tgtm\napplication/vnd.groove-tool-template\t\t\t\t\t\ttpl\napplication/vnd.groove-vcard\t\t\t\t\t\t\t\tvcg\napplication/vnd.hal+json\napplication/vnd.hal+xml\t\t\t\t\t\t\t\t\t\thal\napplication/vnd.handheld-entertainment+xml\t\t\t\t\tzmm\napplication/vnd.hbci\t\t\t\t\t\t\t\t\t\thbci\napplication/vnd.hcl-bireports\napplication/vnd.hhe.lesson-player\t\t\t\t\t\t\tles\napplication/vnd.hp-HPGL\napplication/vnd.hp-PCL\napplication/vnd.hp-PCLXL\napplication/vnd.hp-hpgl\t\t\t\t\t\t\t\t\t\thpgl\napplication/vnd.hp-hpid\t\t\t\t\t\t\t\t\t\thpid\napplication/vnd.hp-hps\t\t\t\t\t\t\t\t\t\thps\napplication/vnd.hp-jlyt\t\t\t\t\t\t\t\t\t\tjlt\napplication/vnd.hp-pcl\t\t\t\t\t\t\t\t\t\tpcl\napplication/vnd.hp-pclxl\t\t\t\t\t\t\t\t\tpclxl\napplication/vnd.httphone\napplication/vnd.hydrostatix.sof-data\t\t\t\t\t\tsfd-hdstx\napplication/vnd.hzn-3d-crossword\t\t\t\t\t\t\tx3d\napplication/vnd.ibm.MiniPay\napplication/vnd.ibm.afplinedata\napplication/vnd.ibm.electronic-media\napplication/vnd.ibm.minipay\t\t\t\t\t\t\t\t\tmpy\napplication/vnd.ibm.modcap\t\t\t\t\t\t\t\t\tafp list3820 listafp\napplication/vnd.ibm.rights-management\t\t\t\t\t\tirm\napplication/vnd.ibm.secure-container\t\t\t\t\t\tsc\napplication/vnd.iccprofile\t\t\t\t\t\t\t\t\ticc icm\napplication/vnd.ieee.1905\napplication/vnd.igloader\t\t\t\t\t\t\t\t\tigl\napplication/vnd.immervision-ivp\t\t\t\t\t\t\t\tivp\napplication/vnd.immervision-ivu\t\t\t\t\t\t\t\tivu\napplication/vnd.informedcontrol.rms+xml\napplication/vnd.informix-visionary\napplication/vnd.infotech.project\napplication/vnd.infotech.project+xml\napplication/vnd.innopath.wamp.notification\napplication/vnd.insors.igm\t\t\t\t\t\t\t\t\tigm\napplication/vnd.intercon.formnet\t\t\t\t\t\t\txpw xpx\napplication/vnd.intergeo\t\t\t\t\t\t\t\t\ti2g\napplication/vnd.intertrust.digibox\napplication/vnd.intertrust.nncp\napplication/vnd.intu.qbo\t\t\t\t\t\t\t\t\tqbo\napplication/vnd.intu.qfx\t\t\t\t\t\t\t\t\tqfx\napplication/vnd.iptc.g2.conceptitem+xml\napplication/vnd.iptc.g2.knowledgeitem+xml\napplication/vnd.iptc.g2.newsitem+xml\napplication/vnd.iptc.g2.newsmessage+xml\napplication/vnd.iptc.g2.packageitem+xml\napplication/vnd.iptc.g2.planningitem+xml\napplication/vnd.ipunplugged.rcprofile\t\t\t\t\t\trcprofile\napplication/vnd.irepository.package+xml\t\t\t\t\t\tirp\napplication/vnd.is-xpr\t\t\t\t\t\t\t\t\t\txpr\napplication/vnd.isac.fcs\t\t\t\t\t\t\t\t\tfcs\napplication/vnd.jam\t\t\t\t\t\t\t\t\t\t\tjam\napplication/vnd.japannet-directory-service\napplication/vnd.japannet-jpnstore-wakeup\napplication/vnd.japannet-payment-wakeup\napplication/vnd.japannet-registration\napplication/vnd.japannet-registration-wakeup\napplication/vnd.japannet-setstore-wakeup\napplication/vnd.japannet-verification\napplication/vnd.japannet-verification-wakeup\napplication/vnd.jcp.javame.midlet-rms\t\t\t\t\t\trms\napplication/vnd.jisp\t\t\t\t\t\t\t\t\t\tjisp\napplication/vnd.joost.joda-archive\t\t\t\t\t\t\tjoda\napplication/vnd.jsk.isdn-ngn\napplication/vnd.kahootz\t\t\t\t\t\t\t\t\t\tktr ktz\napplication/vnd.kde.karbon\t\t\t\t\t\t\t\t\tkarbon\napplication/vnd.kde.kchart\t\t\t\t\t\t\t\t\tchrt\napplication/vnd.kde.kformula\t\t\t\t\t\t\t\tkfo\napplication/vnd.kde.kivio\t\t\t\t\t\t\t\t\tflw\napplication/vnd.kde.kontour\t\t\t\t\t\t\t\t\tkon\napplication/vnd.kde.kpresenter\t\t\t\t\t\t\t\tkpr kpt\napplication/vnd.kde.kspread\t\t\t\t\t\t\t\t\tksp\napplication/vnd.kde.kword\t\t\t\t\t\t\t\t\tkwd kwt\napplication/vnd.kenameaapp\t\t\t\t\t\t\t\t\thtke\napplication/vnd.kidspiration\t\t\t\t\t\t\t\tkia\napplication/vnd.kinar\t\t\t\t\t\t\t\t\t\tkne knp\napplication/vnd.koan\t\t\t\t\t\t\t\t\t\tskd skm skp skt\napplication/vnd.kodak-descriptor\t\t\t\t\t\t\tsse\napplication/vnd.las.las+xml\t\t\t\t\t\t\t\t\tlasxml\napplication/vnd.liberty-request+xml\napplication/vnd.llamagraphics.life-balance.desktop\t\t\tlbd\napplication/vnd.llamagraphics.life-balance.exchange+xml\t\tlbe\napplication/vnd.lotus-1-2-3\t\t\t\t\t\t\t\t\t123\napplication/vnd.lotus-approach\t\t\t\t\t\t\t\tapr\napplication/vnd.lotus-freelance\t\t\t\t\t\t\t\tpre\napplication/vnd.lotus-notes\t\t\t\t\t\t\t\t\tnsf\napplication/vnd.lotus-organizer\t\t\t\t\t\t\t\torg\napplication/vnd.lotus-screencam\t\t\t\t\t\t\t\tscm\napplication/vnd.lotus-wordpro\t\t\t\t\t\t\t\tlwp\napplication/vnd.macports.portpkg\t\t\t\t\t\t\tportpkg\napplication/vnd.marlin.drm.actiontoken+xml\napplication/vnd.marlin.drm.conftoken+xml\napplication/vnd.marlin.drm.license+xml\napplication/vnd.marlin.drm.mdcf\napplication/vnd.mcd\t\t\t\t\t\t\t\t\t\t\tmcd\napplication/vnd.medcalcdata\t\t\t\t\t\t\t\t\tmc1\napplication/vnd.mediastation.cdkey\t\t\t\t\t\t\tcdkey\napplication/vnd.meridian-slingshot\napplication/vnd.mfer\t\t\t\t\t\t\t\t\t\tmwf\napplication/vnd.mfmp\t\t\t\t\t\t\t\t\t\tmfm\napplication/vnd.micrografx.flo\t\t\t\t\t\t\t\tflo\napplication/vnd.micrografx.igx\t\t\t\t\t\t\t\tigx\napplication/vnd.mif\t\t\t\t\t\t\t\t\t\t\tmif\napplication/vnd.minisoft-hp3000-save\napplication/vnd.mitsubishi.misty-guard.trustweb\napplication/vnd.mobius.daf\t\t\t\t\t\t\t\t\tdaf\napplication/vnd.mobius.dis\t\t\t\t\t\t\t\t\tdis\napplication/vnd.mobius.mbk\t\t\t\t\t\t\t\t\tmbk\napplication/vnd.mobius.mqy\t\t\t\t\t\t\t\t\tmqy\napplication/vnd.mobius.msl\t\t\t\t\t\t\t\t\tmsl\napplication/vnd.mobius.plc\t\t\t\t\t\t\t\t\tplc\napplication/vnd.mobius.txf\t\t\t\t\t\t\t\t\ttxf\napplication/vnd.mophun.application\t\t\t\t\t\t\tmpn\napplication/vnd.mophun.certificate\t\t\t\t\t\t\tmpc\napplication/vnd.motorola.flexsuite\napplication/vnd.motorola.flexsuite.adsi\napplication/vnd.motorola.flexsuite.fis\napplication/vnd.motorola.flexsuite.gotap\napplication/vnd.motorola.flexsuite.kmr\napplication/vnd.motorola.flexsuite.ttc\napplication/vnd.motorola.flexsuite.wem\napplication/vnd.motorola.iprm\napplication/vnd.mozilla.xul+xml\t\t\t\t\t\t\t\txul\napplication/vnd.ms-artgalry\t\t\t\t\t\t\t\t\tcil\napplication/vnd.ms-asf\napplication/vnd.ms-cab-compressed\t\t\t\t\t\t\tcab\napplication/vnd.ms-excel\t\t\t\t\t\t\t\t\txla xlb xlc xlm xls xlt xlw\napplication/vnd.ms-excel.addin.macroEnabled.12\t\t\t\txlam\napplication/vnd.ms-excel.addin.macroenabled.12\t\t\t\txlam\napplication/vnd.ms-excel.sheet.binary.macroEnabled.12\t\txlsb\napplication/vnd.ms-excel.sheet.binary.macroenabled.12\t\txlsb\napplication/vnd.ms-excel.sheet.macroEnabled.12\t\t\t\txlsm\napplication/vnd.ms-excel.sheet.macroenabled.12\t\t\t\txlsm\napplication/vnd.ms-excel.template.macroEnabled.12\t\t\txltm\napplication/vnd.ms-excel.template.macroenabled.12\t\t\txltm\napplication/vnd.ms-fontobject\t\t\t\t\t\t\t\teot\napplication/vnd.ms-htmlhelp\t\t\t\t\t\t\t\t\tchm\napplication/vnd.ms-ims\t\t\t\t\t\t\t\t\t\tims\napplication/vnd.ms-lrm\t\t\t\t\t\t\t\t\t\tlrm\napplication/vnd.ms-office.activeX+xml\napplication/vnd.ms-officetheme\t\t\t\t\t\t\t\tthmx\napplication/vnd.ms-pki.seccat\t\t\t\t\t\t\t\tcat\napplication/vnd.ms-pki.stl\t\t\t\t\t\t\t\t\tstl\napplication/vnd.ms-playready.initiator+xml\napplication/vnd.ms-powerpoint\t\t\t\t\t\t\t\tpot pps ppt\napplication/vnd.ms-powerpoint.addin.macroEnabled.12\t\t\tppam\napplication/vnd.ms-powerpoint.addin.macroenabled.12\t\t\tppam\napplication/vnd.ms-powerpoint.presentation.macroEnabled.12\t\t\t\t\t\t\t\t\t\t\tpptm\napplication/vnd.ms-powerpoint.presentation.macroenabled.12\t\t\t\t\t\t\t\t\t\t\tpptm\napplication/vnd.ms-powerpoint.slide.macroEnabled.12\t\t\tsldm\napplication/vnd.ms-powerpoint.slide.macroenabled.12\t\t\tsldm\napplication/vnd.ms-powerpoint.slideshow.macroEnabled.12\t\tppsm\napplication/vnd.ms-powerpoint.slideshow.macroenabled.12\t\tppsm\napplication/vnd.ms-powerpoint.template.macroEnabled.12\t\tpotm\napplication/vnd.ms-powerpoint.template.macroenabled.12\t\tpotm\napplication/vnd.ms-project\t\t\t\t\t\t\t\t\tmpp mpt\napplication/vnd.ms-tnef\napplication/vnd.ms-wmdrm.lic-chlg-req\napplication/vnd.ms-wmdrm.lic-resp\napplication/vnd.ms-wmdrm.meter-chlg-req\napplication/vnd.ms-wmdrm.meter-resp\napplication/vnd.ms-word.document.macroEnabled.12\t\t\tdocm\napplication/vnd.ms-word.document.macroenabled.12\t\t\tdocm\napplication/vnd.ms-word.template.macroEnabled.12\t\t\tdotm\napplication/vnd.ms-word.template.macroenabled.12\t\t\tdotm\napplication/vnd.ms-works\t\t\t\t\t\t\t\t\twcm wdb wks wps\napplication/vnd.ms-wpl\t\t\t\t\t\t\t\t\t\twpl\napplication/vnd.ms-xpsdocument\t\t\t\t\t\t\t\txps\napplication/vnd.mseq\t\t\t\t\t\t\t\t\t\tmseq\napplication/vnd.msign\napplication/vnd.multiad.creator\napplication/vnd.multiad.creator.cif\napplication/vnd.music-niff\napplication/vnd.musician\t\t\t\t\t\t\t\t\tmus\napplication/vnd.muvee.style\t\t\t\t\t\t\t\t\tmsty\napplication/vnd.mynfc\t\t\t\t\t\t\t\t\t\ttaglet\napplication/vnd.ncd.control\napplication/vnd.ncd.reference\napplication/vnd.nervana\napplication/vnd.netfpx\napplication/vnd.neurolanguage.nlu\t\t\t\t\t\t\tnlu\napplication/vnd.nintendo.nitro.rom\napplication/vnd.nitf\t\t\t\t\t\t\t\t\t\tnitf ntf\napplication/vnd.noblenet-directory\t\t\t\t\t\t\tnnd\napplication/vnd.noblenet-sealer\t\t\t\t\t\t\t\tnns\napplication/vnd.noblenet-web\t\t\t\t\t\t\t\tnnw\napplication/vnd.nokia.catalogs\napplication/vnd.nokia.conml+wbxml\napplication/vnd.nokia.conml+xml\napplication/vnd.nokia.iSDS-radio-presets\napplication/vnd.nokia.iptv.config+xml\napplication/vnd.nokia.isds-radio-presets\napplication/vnd.nokia.landmark+wbxml\napplication/vnd.nokia.landmark+xml\napplication/vnd.nokia.landmarkcollection+xml\napplication/vnd.nokia.n-gage.ac+xml\napplication/vnd.nokia.n-gage.data\t\t\t\t\t\t\tngdat\napplication/vnd.nokia.n-gage.symbian.install\t\t\t\tn-gage\napplication/vnd.nokia.ncd\napplication/vnd.nokia.pcd+wbxml\napplication/vnd.nokia.pcd+xml\napplication/vnd.nokia.radio-preset\t\t\t\t\t\t\trpst\napplication/vnd.nokia.radio-presets\t\t\t\t\t\t\trpss\napplication/vnd.novadigm.EDM\napplication/vnd.novadigm.EDX\napplication/vnd.novadigm.EXT\napplication/vnd.novadigm.edm\t\t\t\t\t\t\t\tedm\napplication/vnd.novadigm.edx\t\t\t\t\t\t\t\tedx\napplication/vnd.novadigm.ext\t\t\t\t\t\t\t\text\napplication/vnd.ntt-local.content-share\napplication/vnd.ntt-local.file-transfer\napplication/vnd.ntt-local.sip-ta_remote\napplication/vnd.ntt-local.sip-ta_tcp_stream\napplication/vnd.oasis.opendocument.chart\t\t\t\t\todc\napplication/vnd.oasis.opendocument.chart-template\t\t\totc\napplication/vnd.oasis.opendocument.database\t\t\t\t\todb\napplication/vnd.oasis.opendocument.formula\t\t\t\t\todf\napplication/vnd.oasis.opendocument.formula-template\t\t\todft\napplication/vnd.oasis.opendocument.graphics\t\t\t\t\todg\napplication/vnd.oasis.opendocument.graphics-template\t\totg\napplication/vnd.oasis.opendocument.image\t\t\t\t\todi\napplication/vnd.oasis.opendocument.image-template\t\t\toti\napplication/vnd.oasis.opendocument.presentation\t\t\t\todp\napplication/vnd.oasis.opendocument.presentation-template\t\t\t\t\t\t\t\t\t\t\totp\napplication/vnd.oasis.opendocument.spreadsheet\t\t\t\tods\napplication/vnd.oasis.opendocument.spreadsheet-template\t\tots\napplication/vnd.oasis.opendocument.text\t\t\t\t\t\todt\napplication/vnd.oasis.opendocument.text-master\t\t\t\todm otm\napplication/vnd.oasis.opendocument.text-template\t\t\tott\napplication/vnd.oasis.opendocument.text-web\t\t\t\t\toth\napplication/vnd.obn\napplication/vnd.oftn.l10n+json\napplication/vnd.oipf.contentaccessdownload+xml\napplication/vnd.oipf.contentaccessstreaming+xml\napplication/vnd.oipf.cspg-hexbinary\napplication/vnd.oipf.dae.svg+xml\napplication/vnd.oipf.dae.xhtml+xml\napplication/vnd.oipf.mippvcontrolmessage+xml\napplication/vnd.oipf.pae.gem\napplication/vnd.oipf.spdiscovery+xml\napplication/vnd.oipf.spdlist+xml\napplication/vnd.oipf.ueprofile+xml\napplication/vnd.oipf.userprofile+xml\napplication/vnd.olpc-sugar\t\t\t\t\t\t\t\t\txo\napplication/vnd.oma-scws-config\napplication/vnd.oma-scws-http-request\napplication/vnd.oma-scws-http-response\napplication/vnd.oma.bcast.associated-procedure-parameter+xml\napplication/vnd.oma.bcast.drm-trigger+xml\napplication/vnd.oma.bcast.imd+xml\napplication/vnd.oma.bcast.ltkm\napplication/vnd.oma.bcast.notification+xml\napplication/vnd.oma.bcast.provisioningtrigger\napplication/vnd.oma.bcast.sgboot\napplication/vnd.oma.bcast.sgdd+xml\napplication/vnd.oma.bcast.sgdu\napplication/vnd.oma.bcast.simple-symbol-container\napplication/vnd.oma.bcast.smartcard-trigger+xml\napplication/vnd.oma.bcast.sprov+xml\napplication/vnd.oma.bcast.stkm\napplication/vnd.oma.cab-address-book+xml\napplication/vnd.oma.cab-pcc+xml\napplication/vnd.oma.cab-subs-invite+xml\napplication/vnd.oma.cab-user-prefs+xml\napplication/vnd.oma.dcd\napplication/vnd.oma.dcdc\napplication/vnd.oma.dd2+xml\t\t\t\t\t\t\t\t\tdd2\napplication/vnd.oma.drm.risd+xml\napplication/vnd.oma.group-usage-list+xml\napplication/vnd.oma.pal+xml\napplication/vnd.oma.poc.detailed-progress-report+xml\napplication/vnd.oma.poc.final-report+xml\napplication/vnd.oma.poc.groups+xml\napplication/vnd.oma.poc.invocation-descriptor+xml\napplication/vnd.oma.poc.optimized-progress-report+xml\napplication/vnd.oma.push\napplication/vnd.oma.scidm.messages+xml\napplication/vnd.oma.xcap-directory+xml\napplication/vnd.omads-email+xml\napplication/vnd.omads-file+xml\napplication/vnd.omads-folder+xml\napplication/vnd.omaloc-supl-init\napplication/vnd.openofficeorg.extension\t\t\t\t\t\toxt\napplication/vnd.openxmlformats-officedocument.custom-properties+xml\napplication/vnd.openxmlformats-officedocument.customXmlProperties+xml\napplication/vnd.openxmlformats-officedocument.drawing+xml\napplication/vnd.openxmlformats-officedocument.drawingml.chart+xml\napplication/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\napplication/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\napplication/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\napplication/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\napplication/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\napplication/vnd.openxmlformats-officedocument.extended-properties+xml\napplication/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml\napplication/vnd.openxmlformats-officedocument.presentationml.comments+xml\napplication/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml\napplication/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml\napplication/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml\napplication/vnd.openxmlformats-officedocument.presentationml.presProps+xml\napplication/vnd.openxmlformats-officedocument.presentationml.presentation\t\t\t\t\t\t\tpptx\napplication/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\napplication/vnd.openxmlformats-officedocument.presentationml.slide\t\t\t\t\t\t\t\t\tsldx\napplication/vnd.openxmlformats-officedocument.presentationml.slide+xml\napplication/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml\napplication/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml\napplication/vnd.openxmlformats-officedocument.presentationml.slideUpdateInfo+xml\napplication/vnd.openxmlformats-officedocument.presentationml.slideshow\t\t\t\t\t\t\t\tppsx\napplication/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\napplication/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml\napplication/vnd.openxmlformats-officedocument.presentationml.tags+xml\napplication/vnd.openxmlformats-officedocument.presentationml.template\t\t\t\t\t\t\t\tpotx\napplication/vnd.openxmlformats-officedocument.presentationml.template.main+xml\napplication/vnd.openxmlformats-officedocument.presentationml.viewProps+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet\t\t\t\t\t\t\t\t\txlsx\napplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.template\t\t\t\t\t\t\t\txltx\napplication/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\napplication/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\napplication/vnd.openxmlformats-officedocument.theme+xml\napplication/vnd.openxmlformats-officedocument.themeOverride+xml\napplication/vnd.openxmlformats-officedocument.vmlDrawing\napplication/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\napplication/vnd.openxmlformats-officedocument.wordprocessingml.document\t\t\t\t\t\t\t\tdocx\napplication/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\napplication/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\napplication/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\napplication/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml\napplication/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\napplication/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\napplication/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\napplication/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\napplication/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\napplication/vnd.openxmlformats-officedocument.wordprocessingml.template\t\t\t\t\t\t\t\tdotx\napplication/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\napplication/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml\napplication/vnd.openxmlformats-package.core-properties+xml\napplication/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\napplication/vnd.openxmlformats-package.relationships+xml\napplication/vnd.orange.indata\napplication/vnd.osa.netdeploy\napplication/vnd.osgeo.mapguide.package\t\t\t\t\t\tmgp\napplication/vnd.osgi.bundle\napplication/vnd.osgi.dp\t\t\t\t\t\t\t\t\t\tdp\napplication/vnd.osgi.subsystem\t\t\t\t\t\t\t\tesa\napplication/vnd.otps.ct-kip+xml\napplication/vnd.palm\t\t\t\t\t\t\t\t\t\toprc pdb pqa\napplication/vnd.paos.xml\napplication/vnd.pawaafile\t\t\t\t\t\t\t\t\tpaw\napplication/vnd.pg.format\t\t\t\t\t\t\t\t\tstr\napplication/vnd.pg.osasli\t\t\t\t\t\t\t\t\tei6\napplication/vnd.piaccess.application-licence\napplication/vnd.picsel\t\t\t\t\t\t\t\t\t\tefif\napplication/vnd.pmi.widget\t\t\t\t\t\t\t\t\twg\napplication/vnd.poc.group-advertisement+xml\napplication/vnd.pocketlearn\t\t\t\t\t\t\t\t\tplf\napplication/vnd.powerbuilder6\t\t\t\t\t\t\t\tpbd\napplication/vnd.powerbuilder6-s\napplication/vnd.powerbuilder7\napplication/vnd.powerbuilder7-s\napplication/vnd.powerbuilder75\napplication/vnd.powerbuilder75-s\napplication/vnd.preminet\napplication/vnd.previewsystems.box\t\t\t\t\t\t\tbox\napplication/vnd.proteus.magazine\t\t\t\t\t\t\tmgz\napplication/vnd.publishare-delta-tree\t\t\t\t\t\tqps\napplication/vnd.pvi.ptid1\t\t\t\t\t\t\t\t\tptid\napplication/vnd.pwg-multiplexed\napplication/vnd.pwg-xhtml-print+xml\napplication/vnd.qualcomm.brew-app-res\napplication/vnd.quark.quarkxpress\t\t\t\t\t\t\tqwd qwt qxb qxd qxl qxt\napplication/vnd.quobject-quoxdocument\napplication/vnd.radisys.moml+xml\napplication/vnd.radisys.msml+xml\napplication/vnd.radisys.msml-audit+xml\napplication/vnd.radisys.msml-audit-conf+xml\napplication/vnd.radisys.msml-audit-conn+xml\napplication/vnd.radisys.msml-audit-dialog+xml\napplication/vnd.radisys.msml-audit-stream+xml\napplication/vnd.radisys.msml-conf+xml\napplication/vnd.radisys.msml-dialog+xml\napplication/vnd.radisys.msml-dialog-base+xml\napplication/vnd.radisys.msml-dialog-fax-detect+xml\napplication/vnd.radisys.msml-dialog-fax-sendrecv+xml\napplication/vnd.radisys.msml-dialog-group+xml\napplication/vnd.radisys.msml-dialog-speech+xml\napplication/vnd.radisys.msml-dialog-transform+xml\napplication/vnd.rainstor.data\napplication/vnd.rapid\napplication/vnd.realvnc.bed\t\t\t\t\t\t\t\t\tbed\napplication/vnd.recordare.musicxml\t\t\t\t\t\t\tmxl\napplication/vnd.recordare.musicxml+xml\t\t\t\t\t\tmusicxml\napplication/vnd.renlearn.rlprint\napplication/vnd.rig.cryptonote\t\t\t\t\t\t\t\tcryptonote\napplication/vnd.rim.cod\t\t\t\t\t\t\t\t\t\tcod\napplication/vnd.rn-realmedia\t\t\t\t\t\t\t\trm\napplication/vnd.rn-realmedia-vbr\t\t\t\t\t\t\trmvb\napplication/vnd.route66.link66+xml\t\t\t\t\t\t\tlink66\napplication/vnd.rs-274x\napplication/vnd.ruckus.download\napplication/vnd.s3sms\napplication/vnd.sailingtracker.track\t\t\t\t\t\tst\napplication/vnd.sbm.cid\napplication/vnd.sbm.mid2\napplication/vnd.scribus\napplication/vnd.sealed.3df\napplication/vnd.sealed.csf\napplication/vnd.sealed.doc\napplication/vnd.sealed.eml\napplication/vnd.sealed.mht\napplication/vnd.sealed.net\napplication/vnd.sealed.ppt\napplication/vnd.sealed.tiff\napplication/vnd.sealed.xls\napplication/vnd.sealedmedia.softseal.html\napplication/vnd.sealedmedia.softseal.pdf\napplication/vnd.seemail\t\t\t\t\t\t\t\t\t\tsee\napplication/vnd.sema\t\t\t\t\t\t\t\t\t\tsema\napplication/vnd.semd\t\t\t\t\t\t\t\t\t\tsemd\napplication/vnd.semf\t\t\t\t\t\t\t\t\t\tsemf\napplication/vnd.shana.informed.formdata\t\t\t\t\t\tifm\napplication/vnd.shana.informed.formtemplate\t\t\t\t\titp\napplication/vnd.shana.informed.interchange\t\t\t\t\tiif\napplication/vnd.shana.informed.package\t\t\t\t\t\tipk\napplication/vnd.simtech-mindmapper\t\t\t\t\t\t\ttwd twds\napplication/vnd.smaf\t\t\t\t\t\t\t\t\t\tmmf\napplication/vnd.smart.notebook\napplication/vnd.smart.teacher\t\t\t\t\t\t\t\tteacher\napplication/vnd.software602.filler.form+xml\napplication/vnd.software602.filler.form-xml-zip\napplication/vnd.solent.sdkm+xml\t\t\t\t\t\t\t\tsdkd sdkm\napplication/vnd.spotfire.dxp\t\t\t\t\t\t\t\tdxp\napplication/vnd.spotfire.sfs\t\t\t\t\t\t\t\tsfs\napplication/vnd.sss-cod\napplication/vnd.sss-dtf\napplication/vnd.sss-ntf\napplication/vnd.stardivision.calc\t\t\t\t\t\t\tsdc\napplication/vnd.stardivision.chart\t\t\t\t\t\t\tsds\napplication/vnd.stardivision.draw\t\t\t\t\t\t\tsda\napplication/vnd.stardivision.impress\t\t\t\t\t\tsdd sdp\napplication/vnd.stardivision.math\t\t\t\t\t\t\tsdf smf\napplication/vnd.stardivision.writer\t\t\t\t\t\t\tsdw vor\napplication/vnd.stardivision.writer-global\t\t\t\t\tsgl\napplication/vnd.stepmania.package\t\t\t\t\t\t\tsmzip\napplication/vnd.stepmania.stepchart\t\t\t\t\t\t\tsm\napplication/vnd.street-stream\napplication/vnd.sun.wadl+xml\napplication/vnd.sun.xml.calc\t\t\t\t\t\t\t\tsxc\napplication/vnd.sun.xml.calc.template\t\t\t\t\t\tstc\napplication/vnd.sun.xml.draw\t\t\t\t\t\t\t\tsxd\napplication/vnd.sun.xml.draw.template\t\t\t\t\t\tstd\napplication/vnd.sun.xml.impress\t\t\t\t\t\t\t\tsxi\napplication/vnd.sun.xml.impress.template\t\t\t\t\tsti\napplication/vnd.sun.xml.math\t\t\t\t\t\t\t\tsxm\napplication/vnd.sun.xml.writer\t\t\t\t\t\t\t\tsxw\napplication/vnd.sun.xml.writer.global\t\t\t\t\t\tsxg\napplication/vnd.sun.xml.writer.template\t\t\t\t\t\tstw\napplication/vnd.sus-calendar\t\t\t\t\t\t\t\tsus susp\napplication/vnd.svd\t\t\t\t\t\t\t\t\t\t\tsvd\napplication/vnd.swiftview-ics\napplication/vnd.symbian.install\t\t\t\t\t\t\t\tsis sisx\napplication/vnd.syncml+xml\t\t\t\t\t\t\t\t\txsm\napplication/vnd.syncml.dm+wbxml\t\t\t\t\t\t\t\tbdm\napplication/vnd.syncml.dm+xml\t\t\t\t\t\t\t\txdm\napplication/vnd.syncml.dm.notification\napplication/vnd.syncml.dmddf+wbxml\napplication/vnd.syncml.dmddf+xml\napplication/vnd.syncml.dmtnds+wbxml\napplication/vnd.syncml.dmtnds+xml\napplication/vnd.syncml.ds.notification\napplication/vnd.tao.intent-module-archive\t\t\t\t\ttao\napplication/vnd.tcpdump.pcap\t\t\t\t\t\t\t\tcap dmp pcap\napplication/vnd.tmobile-livetv\t\t\t\t\t\t\t\ttmo\napplication/vnd.trid.tpt\t\t\t\t\t\t\t\t\ttpt\napplication/vnd.triscape.mxs\t\t\t\t\t\t\t\tmxs\napplication/vnd.trueapp\t\t\t\t\t\t\t\t\t\ttra\napplication/vnd.truedoc\napplication/vnd.tve-trigger\napplication/vnd.ubisoft.webplayer\napplication/vnd.ufdl\t\t\t\t\t\t\t\t\t\tufd ufdl\napplication/vnd.uiq.theme\t\t\t\t\t\t\t\t\tutz\napplication/vnd.umajin\t\t\t\t\t\t\t\t\t\tumj\napplication/vnd.unity\t\t\t\t\t\t\t\t\t\tunityweb\napplication/vnd.uoml+xml\t\t\t\t\t\t\t\t\tuoml\napplication/vnd.uplanet.alert\napplication/vnd.uplanet.alert-wbxml\napplication/vnd.uplanet.bearer-choice\napplication/vnd.uplanet.bearer-choice-wbxml\napplication/vnd.uplanet.cacheop\napplication/vnd.uplanet.cacheop-wbxml\napplication/vnd.uplanet.channel\napplication/vnd.uplanet.channel-wbxml\napplication/vnd.uplanet.list\napplication/vnd.uplanet.list-wbxml\napplication/vnd.uplanet.listcmd\napplication/vnd.uplanet.listcmd-wbxml\napplication/vnd.uplanet.signal\napplication/vnd.vcx\t\t\t\t\t\t\t\t\t\t\tvcx\napplication/vnd.vd-study\napplication/vnd.vectorworks\napplication/vnd.verimatrix.vcas\napplication/vnd.vidsoft.vidconference\napplication/vnd.visio\t\t\t\t\t\t\t\t\t\tvsd vss vst vsw\napplication/vnd.visionary\t\t\t\t\t\t\t\t\tvis\napplication/vnd.vividence.scriptfile\napplication/vnd.vsf\t\t\t\t\t\t\t\t\t\t\tvsf\napplication/vnd.wap.sic\napplication/vnd.wap.slc\napplication/vnd.wap.wbxml\t\t\t\t\t\t\t\t\twbxml\napplication/vnd.wap.wmlc\t\t\t\t\t\t\t\t\twmlc\napplication/vnd.wap.wmlscriptc\t\t\t\t\t\t\t\twmlsc\napplication/vnd.webturbo\t\t\t\t\t\t\t\t\twtb\napplication/vnd.wfa.wsc\napplication/vnd.wmc\napplication/vnd.wmf.bootstrap\napplication/vnd.wolfram.mathematica\napplication/vnd.wolfram.mathematica.package\napplication/vnd.wolfram.player\t\t\t\t\t\t\t\tnbp\napplication/vnd.wordperfect\t\t\t\t\t\t\t\t\twpd\napplication/vnd.wordperfect5.1\t\t\t\t\t\t\t\twp5\napplication/vnd.wqd\t\t\t\t\t\t\t\t\t\t\twqd\napplication/vnd.wrq-hp3000-labelled\napplication/vnd.wt.stf\t\t\t\t\t\t\t\t\t\tstf\napplication/vnd.wv.csp+wbxml\napplication/vnd.wv.csp+xml\napplication/vnd.wv.ssp+xml\napplication/vnd.xara\t\t\t\t\t\t\t\t\t\txar\napplication/vnd.xfdl\t\t\t\t\t\t\t\t\t\txfdl\napplication/vnd.xfdl.webform\napplication/vnd.xmi+xml\napplication/vnd.xmpie.cpkg\napplication/vnd.xmpie.dpkg\napplication/vnd.xmpie.plan\napplication/vnd.xmpie.ppkg\napplication/vnd.xmpie.xlim\napplication/vnd.yamaha.hv-dic\t\t\t\t\t\t\t\thvd\napplication/vnd.yamaha.hv-script\t\t\t\t\t\t\thvs\napplication/vnd.yamaha.hv-voice\t\t\t\t\t\t\t\thvp\napplication/vnd.yamaha.openscoreformat\t\t\t\t\t\tosf\napplication/vnd.yamaha.openscoreformat.osfpvg+xml\t\t\tosfpvg\napplication/vnd.yamaha.remote-setup\napplication/vnd.yamaha.smaf-audio\t\t\t\t\t\t\tsaf\napplication/vnd.yamaha.smaf-phrase\t\t\t\t\t\t\tspf\napplication/vnd.yamaha.through-ngn\napplication/vnd.yamaha.tunnel-udpencap\napplication/vnd.yellowriver-custom-menu\t\t\t\t\t\tcmp\napplication/vnd.zul\t\t\t\t\t\t\t\t\t\t\tzir zirz\napplication/vnd.zzazz.deck+xml\t\t\t\t\t\t\t\tzaz\napplication/voicexml+xml\t\t\t\t\t\t\t\t\tvxml\napplication/vq-rtcpxr\napplication/watcherinfo+xml\napplication/whoispp-query\napplication/whoispp-response\napplication/widget\t\t\t\t\t\t\t\t\t\t\twgt\napplication/winhlp\t\t\t\t\t\t\t\t\t\t\thlp\napplication/wita\napplication/wordperfect\t\t\t\t\t\t\t\t\t\twpd\napplication/wordperfect5.1\t\t\t\t\t\t\t\t\twp5\napplication/wsdl+xml\t\t\t\t\t\t\t\t\t\twsdl\napplication/wspolicy+xml\t\t\t\t\t\t\t\t\twspolicy\napplication/x-123\t\t\t\t\t\t\t\t\t\t\twk\napplication/x-7z-compressed\t\t\t\t\t\t\t\t\t7z\napplication/x-abiword\t\t\t\t\t\t\t\t\t\tabw\napplication/x-ace-compressed\t\t\t\t\t\t\t\tace\napplication/x-apple-diskimage\t\t\t\t\t\t\t\tdmg\napplication/x-authorware-bin\t\t\t\t\t\t\t\taab u32 vox x32\napplication/x-authorware-map\t\t\t\t\t\t\t\taam\napplication/x-authorware-seg\t\t\t\t\t\t\t\taas\napplication/x-bcpio\t\t\t\t\t\t\t\t\t\t\tbcpio\napplication/x-bittorrent\t\t\t\t\t\t\t\t\ttorrent\napplication/x-blorb\t\t\t\t\t\t\t\t\t\t\tblb blorb\napplication/x-bzip\t\t\t\t\t\t\t\t\t\t\tbz\napplication/x-bzip2\t\t\t\t\t\t\t\t\t\t\tboz bz2\napplication/x-cab\t\t\t\t\t\t\t\t\t\t\tcab\napplication/x-cbr\t\t\t\t\t\t\t\t\t\t\tcb7 cba cbr cbt cbz\napplication/x-cbz\t\t\t\t\t\t\t\t\t\t\tcbz\napplication/x-cdf\t\t\t\t\t\t\t\t\t\t\tcda cdf\napplication/x-cdlink\t\t\t\t\t\t\t\t\t\tvcd\napplication/x-cfs-compressed\t\t\t\t\t\t\t\tcfs\napplication/x-chat\t\t\t\t\t\t\t\t\t\t\tchat\napplication/x-chess-pgn\t\t\t\t\t\t\t\t\t\tpgn\napplication/x-compress\napplication/x-comsol\t\t\t\t\t\t\t\t\t\tmph\napplication/x-conference\t\t\t\t\t\t\t\t\tnsc\napplication/x-core\napplication/x-cpio\t\t\t\t\t\t\t\t\t\t\tcpio\napplication/x-csh\t\t\t\t\t\t\t\t\t\t\tcsh\napplication/x-debian-package\t\t\t\t\t\t\t\tdeb udeb\napplication/x-dgc-compressed\t\t\t\t\t\t\t\tdgc\napplication/x-director\t\t\t\t\t\t\t\t\t\tcct cst cxt dcr dir dxr fgd swa w3d\napplication/x-dms\t\t\t\t\t\t\t\t\t\t\tdms\napplication/x-doom\t\t\t\t\t\t\t\t\t\t\twad\napplication/x-dtbncx+xml\t\t\t\t\t\t\t\t\tncx\napplication/x-dtbook+xml\t\t\t\t\t\t\t\t\tdtb\napplication/x-dtbresource+xml\t\t\t\t\t\t\t\tres\napplication/x-dvi\t\t\t\t\t\t\t\t\t\t\tdvi\napplication/x-envoy\t\t\t\t\t\t\t\t\t\t\tevy\napplication/x-eva\t\t\t\t\t\t\t\t\t\t\teva\napplication/x-executable\napplication/x-flac\t\t\t\t\t\t\t\t\t\t\tflac\napplication/x-font\t\t\t\t\t\t\t\t\t\t\tgsf pcf pcf.Z pfa pfb\napplication/x-font-bdf\t\t\t\t\t\t\t\t\t\tbdf\napplication/x-font-dos\napplication/x-font-framemaker\napplication/x-font-ghostscript\t\t\t\t\t\t\t\tgsf\napplication/x-font-libgrx\napplication/x-font-linux-psf\t\t\t\t\t\t\t\tpsf\napplication/x-font-otf\t\t\t\t\t\t\t\t\t\totf\napplication/x-font-pcf\t\t\t\t\t\t\t\t\t\tpcf\napplication/x-font-snf\t\t\t\t\t\t\t\t\t\tsnf\napplication/x-font-speedo\napplication/x-font-sunos-news\napplication/x-font-ttf\t\t\t\t\t\t\t\t\t\tttc ttf\napplication/x-font-type1\t\t\t\t\t\t\t\t\tafm pfa pfb pfm\napplication/x-font-vfont\napplication/x-font-woff\t\t\t\t\t\t\t\t\t\twoff\napplication/x-freearc\t\t\t\t\t\t\t\t\t\tarc\napplication/x-freemind\t\t\t\t\t\t\t\t\t\tmm\napplication/x-futuresplash\t\t\t\t\t\t\t\t\tspl\napplication/x-ganttproject\t\t\t\t\t\t\t\t\tgan\napplication/x-gca-compressed\t\t\t\t\t\t\t\tgca\napplication/x-glulx\t\t\t\t\t\t\t\t\t\t\tulx\napplication/x-gnumeric\t\t\t\t\t\t\t\t\t\tgnumeric\napplication/x-go-sgf\t\t\t\t\t\t\t\t\t\tsgf\napplication/x-gramps-xml\t\t\t\t\t\t\t\t\tgramps\napplication/x-graphing-calculator\t\t\t\t\t\t\tgcf\napplication/x-gtar\t\t\t\t\t\t\t\t\t\t\tgtar taz tgz\napplication/x-gtar-compressed\t\t\t\t\t\t\t\ttaz tgz\napplication/x-gzip\napplication/x-hdf\t\t\t\t\t\t\t\t\t\t\thdf\napplication/x-hwp\t\t\t\t\t\t\t\t\t\t\thwp\napplication/x-ica\t\t\t\t\t\t\t\t\t\t\tica\napplication/x-info\t\t\t\t\t\t\t\t\t\t\tinfo\napplication/x-install-instructions\t\t\t\t\t\t\tinstall\napplication/x-internet-signup\t\t\t\t\t\t\t\tins isp\napplication/x-iphone\t\t\t\t\t\t\t\t\t\tiii\napplication/x-iso9660-image\t\t\t\t\t\t\t\t\tiso\napplication/x-jam\t\t\t\t\t\t\t\t\t\t\tjam\napplication/x-java-applet\napplication/x-java-bean\napplication/x-java-jnlp-file\t\t\t\t\t\t\t\tjnlp\napplication/x-javascript\t\t\t\t\t\t\t\t\tjs\napplication/x-jmol\t\t\t\t\t\t\t\t\t\t\tjmz\napplication/x-kchart\t\t\t\t\t\t\t\t\t\tchrt\napplication/x-kdelnk\napplication/x-killustrator\t\t\t\t\t\t\t\t\tkil\napplication/x-koan\t\t\t\t\t\t\t\t\t\t\tskd skm skp skt\napplication/x-kpresenter\t\t\t\t\t\t\t\t\tkpr kpt\napplication/x-kspread\t\t\t\t\t\t\t\t\t\tksp\napplication/x-kword\t\t\t\t\t\t\t\t\t\t\tkwd kwt\napplication/x-latex\t\t\t\t\t\t\t\t\t\t\tlatex\napplication/x-lha\t\t\t\t\t\t\t\t\t\t\tlha\napplication/x-lyx\t\t\t\t\t\t\t\t\t\t\tlyx\napplication/x-lzh\t\t\t\t\t\t\t\t\t\t\tlzh\napplication/x-lzh-compressed\t\t\t\t\t\t\t\tlha lzh\napplication/x-lzx\t\t\t\t\t\t\t\t\t\t\tlzx\napplication/x-maker\t\t\t\t\t\t\t\t\t\t\tbook fb fbdoc fm frame frm maker\napplication/x-md5\t\t\t\t\t\t\t\t\t\t\tmd5\napplication/x-mie\t\t\t\t\t\t\t\t\t\t\tmie\napplication/x-mif\t\t\t\t\t\t\t\t\t\t\tmif\napplication/x-mobipocket-ebook\t\t\t\t\t\t\t\tmobi prc\napplication/x-mpegURL\t\t\t\t\t\t\t\t\t\tm3u8\napplication/x-ms-application\t\t\t\t\t\t\t\tapplication\napplication/x-ms-shortcut\t\t\t\t\t\t\t\t\tlnk\napplication/x-ms-wmd\t\t\t\t\t\t\t\t\t\twmd\napplication/x-ms-wmz\t\t\t\t\t\t\t\t\t\twmz\napplication/x-ms-xbap\t\t\t\t\t\t\t\t\t\txbap\napplication/x-msaccess\t\t\t\t\t\t\t\t\t\tmdb\napplication/x-msbinder\t\t\t\t\t\t\t\t\t\tobd\napplication/x-mscardfile\t\t\t\t\t\t\t\t\tcrd\napplication/x-msclip\t\t\t\t\t\t\t\t\t\tclp\napplication/x-msdos-program\t\t\t\t\t\t\t\t\tbat com dll exe\napplication/x-msdownload\t\t\t\t\t\t\t\t\tbat com dll exe msi\napplication/x-msi\t\t\t\t\t\t\t\t\t\t\tmsi\napplication/x-msmediaview\t\t\t\t\t\t\t\t\tm13 m14 mvb\napplication/x-msmetafile\t\t\t\t\t\t\t\t\temf emz wmf wmz\napplication/x-msmoney\t\t\t\t\t\t\t\t\t\tmny\napplication/x-mspublisher\t\t\t\t\t\t\t\t\tpub\napplication/x-msschedule\t\t\t\t\t\t\t\t\tscd\napplication/x-msterminal\t\t\t\t\t\t\t\t\ttrm\napplication/x-mswrite\t\t\t\t\t\t\t\t\t\twri\napplication/x-netcdf\t\t\t\t\t\t\t\t\t\tcdf nc\napplication/x-ns-proxy-autoconfig\t\t\t\t\t\t\tdat pac\napplication/x-nwc\t\t\t\t\t\t\t\t\t\t\tnwc\napplication/x-nzb\t\t\t\t\t\t\t\t\t\t\tnzb\napplication/x-object\t\t\t\t\t\t\t\t\t\to\napplication/x-oz-application\t\t\t\t\t\t\t\toza\napplication/x-pkcs12\t\t\t\t\t\t\t\t\t\tp12 pfx\napplication/x-pkcs7-certificates\t\t\t\t\t\t\tp7b spc\napplication/x-pkcs7-certreqresp\t\t\t\t\t\t\t\tp7r\napplication/x-pkcs7-crl\t\t\t\t\t\t\t\t\t\tcrl\napplication/x-python-code\t\t\t\t\t\t\t\t\tpyc pyo\napplication/x-qgis\t\t\t\t\t\t\t\t\t\t\tqgs shp shx\napplication/x-quicktimeplayer\t\t\t\t\t\t\t\tqtl\napplication/x-rar-compressed\t\t\t\t\t\t\t\trar\napplication/x-rdp\t\t\t\t\t\t\t\t\t\t\trdp\napplication/x-redhat-package-manager\t\t\t\t\t\trpm\napplication/x-research-info-systems\t\t\t\t\t\t\tris\napplication/x-rss+xml\t\t\t\t\t\t\t\t\t\trss\napplication/x-ruby\t\t\t\t\t\t\t\t\t\t\trb\napplication/x-rx\napplication/x-scilab\t\t\t\t\t\t\t\t\t\tsce sci\napplication/x-scilab-xcos\t\t\t\t\t\t\t\t\txcos\napplication/x-sh\t\t\t\t\t\t\t\t\t\t\tsh\napplication/x-sha1\t\t\t\t\t\t\t\t\t\t\tsha1\napplication/x-shar\t\t\t\t\t\t\t\t\t\t\tshar\napplication/x-shellscript\napplication/x-shockwave-flash\t\t\t\t\t\t\t\tswf swfl\napplication/x-silverlight\t\t\t\t\t\t\t\t\tscr\napplication/x-silverlight-app\t\t\t\t\t\t\t\txap\napplication/x-sql\t\t\t\t\t\t\t\t\t\t\tsql\napplication/x-stuffit\t\t\t\t\t\t\t\t\t\tsit sitx\napplication/x-stuffitx\t\t\t\t\t\t\t\t\t\tsitx\napplication/x-subrip\t\t\t\t\t\t\t\t\t\tsrt\napplication/x-sv4cpio\t\t\t\t\t\t\t\t\t\tsv4cpio\napplication/x-sv4crc\t\t\t\t\t\t\t\t\t\tsv4crc\napplication/x-t3vm-image\t\t\t\t\t\t\t\t\tt3\napplication/x-tads\t\t\t\t\t\t\t\t\t\t\tgam\napplication/x-tar\t\t\t\t\t\t\t\t\t\t\ttar\napplication/x-tcl\t\t\t\t\t\t\t\t\t\t\ttcl\napplication/x-tex\t\t\t\t\t\t\t\t\t\t\ttex\napplication/x-tex-gf\t\t\t\t\t\t\t\t\t\tgf\napplication/x-tex-pk\t\t\t\t\t\t\t\t\t\tpk\napplication/x-tex-tfm\t\t\t\t\t\t\t\t\t\ttfm\napplication/x-texinfo\t\t\t\t\t\t\t\t\t\ttexi texinfo\napplication/x-tgif\t\t\t\t\t\t\t\t\t\t\tobj\napplication/x-trash\t\t\t\t\t\t\t\t\t\t\t% bak old sik ~\napplication/x-troff\t\t\t\t\t\t\t\t\t\t\troff t tr\napplication/x-troff-man\t\t\t\t\t\t\t\t\t\tman\napplication/x-troff-me\t\t\t\t\t\t\t\t\t\tme\napplication/x-troff-ms\t\t\t\t\t\t\t\t\t\tms\napplication/x-ustar\t\t\t\t\t\t\t\t\t\t\tustar\napplication/x-videolan\napplication/x-wais-source\t\t\t\t\t\t\t\t\tsrc\napplication/x-wingz\t\t\t\t\t\t\t\t\t\t\twz\napplication/x-x509-ca-cert\t\t\t\t\t\t\t\t\tcrt der\napplication/x-xcf\t\t\t\t\t\t\t\t\t\t\txcf\napplication/x-xfig\t\t\t\t\t\t\t\t\t\t\tfig\napplication/x-xliff+xml\t\t\t\t\t\t\t\t\t\txlf\napplication/x-xpinstall\t\t\t\t\t\t\t\t\t\txpi\napplication/x-xz\t\t\t\t\t\t\t\t\t\t\txz\napplication/x-zmachine\t\t\t\t\t\t\t\t\t\tz1 z2 z3 z4 z5 z6 z7 z8\napplication/x400-bp\napplication/xaml+xml\t\t\t\t\t\t\t\t\t\txaml\napplication/xcap-att+xml\napplication/xcap-caps+xml\napplication/xcap-diff+xml\t\t\t\t\t\t\t\t\txdf\napplication/xcap-el+xml\napplication/xcap-error+xml\napplication/xcap-ns+xml\napplication/xcon-conference-info+xml\napplication/xcon-conference-info-diff+xml\napplication/xenc+xml\t\t\t\t\t\t\t\t\t\txenc\napplication/xhtml+xml\t\t\t\t\t\t\t\t\t\txht xhtml\napplication/xhtml-voice+xml\napplication/xml\t\t\t\t\t\t\t\t\t\t\t\txml xsd xsl\napplication/xml-dtd\t\t\t\t\t\t\t\t\t\t\tdtd\napplication/xml-external-parsed-entity\napplication/xmpp+xml\napplication/xop+xml\t\t\t\t\t\t\t\t\t\t\txop\napplication/xproc+xml\t\t\t\t\t\t\t\t\t\txpl\napplication/xslt+xml\t\t\t\t\t\t\t\t\t\txslt\napplication/xspf+xml\t\t\t\t\t\t\t\t\t\txspf\napplication/xv+xml\t\t\t\t\t\t\t\t\t\t\tmxml xhvml xvm xvml\napplication/yang\t\t\t\t\t\t\t\t\t\t\tyang\napplication/yin+xml\t\t\t\t\t\t\t\t\t\t\tyin\napplication/zip\t\t\t\t\t\t\t\t\t\t\t\tzip\napplication/zlib\naudio/1d-interleaved-parityfec\naudio/32kadpcm\naudio/3gpp\naudio/3gpp2\naudio/AMR\naudio/AMR-WB\naudio/ATRAC-ADVANCED-LOSSLESS\naudio/ATRAC-X\naudio/ATRAC3\naudio/BV16\naudio/BV32\naudio/CN\naudio/DAT12\naudio/DV\naudio/DVI4\naudio/EVRC\naudio/EVRC-QCP\naudio/EVRC0\naudio/EVRC1\naudio/EVRCB\naudio/EVRCB0\naudio/EVRCB1\naudio/EVRCWB\naudio/EVRCWB0\naudio/EVRCWB1\naudio/G719\naudio/G722\naudio/G7221\naudio/G723\naudio/G726-16\naudio/G726-24\naudio/G726-32\naudio/G726-40\naudio/G728\naudio/G729\naudio/G7291\naudio/G729D\naudio/G729E\naudio/GSM\naudio/GSM-EFR\naudio/GSM-HR-08\naudio/L16\naudio/L20\naudio/L24\naudio/L8\naudio/LPC\naudio/MP4A-LATM\naudio/MPA\naudio/PCMA\naudio/PCMA-WB\naudio/PCMU\naudio/PCMU-WB\naudio/QCELP\naudio/RED\naudio/SMV\naudio/SMV-QCP\naudio/SMV0\naudio/UEMCLIP\naudio/VDVI\naudio/VMR-WB\naudio/ac3\naudio/adpcm\t\t\t\t\t\t\t\t\t\t\t\t\tadp\naudio/amr\t\t\t\t\t\t\t\t\t\t\t\t\tamr\naudio/amr-wb\t\t\t\t\t\t\t\t\t\t\t\tawb\naudio/amr-wb+\naudio/annodex\t\t\t\t\t\t\t\t\t\t\t\taxa\naudio/asc\naudio/basic\t\t\t\t\t\t\t\t\t\t\t\t\tau snd\naudio/bv16\naudio/bv32\naudio/clearmode\naudio/cn\naudio/csound\t\t\t\t\t\t\t\t\t\t\t\tcsd orc sco\naudio/dat12\naudio/dls\naudio/dsr-es201108\naudio/dsr-es202050\naudio/dsr-es202211\naudio/dsr-es202212\naudio/dvi4\naudio/eac3\naudio/evrc\naudio/evrc-qcp\naudio/evrc0\naudio/evrc1\naudio/evrcb\naudio/evrcb0\naudio/evrcb1\naudio/evrcwb\naudio/evrcwb0\naudio/evrcwb1\naudio/example\naudio/flac\t\t\t\t\t\t\t\t\t\t\t\t\tflac\naudio/fwdred\naudio/g.722.1\naudio/g719\naudio/g722\naudio/g7221\naudio/g723\naudio/g726-16\naudio/g726-24\naudio/g726-32\naudio/g726-40\naudio/g728\naudio/g729\naudio/g7291\naudio/g729d\naudio/g729e\naudio/gsm\naudio/gsm-efr\naudio/iLBC\naudio/ilbc\naudio/ip-mr_v2.5\naudio/l16\naudio/l20\naudio/l24\naudio/l8\naudio/lpc\naudio/midi\t\t\t\t\t\t\t\t\t\t\t\t\tkar mid midi rmi\naudio/mobile-xmf\naudio/mp4\t\t\t\t\t\t\t\t\t\t\t\t\tmp4a\naudio/mp4a-latm\naudio/mpa\naudio/mpa-robust\naudio/mpeg\t\t\t\t\t\t\t\t\t\t\t\t\tm2a m3a m4a mp2 mp2a mp3 mpega mpga\naudio/mpeg4-generic\naudio/mpegurl\t\t\t\t\t\t\t\t\t\t\t\tm3u\naudio/ogg\t\t\t\t\t\t\t\t\t\t\t\t\toga ogg opus spx\naudio/parityfec\naudio/pcma\naudio/pcma-wb\naudio/pcmu\naudio/pcmu-wb\naudio/prs.sid\t\t\t\t\t\t\t\t\t\t\t\tsid\naudio/qcelp\naudio/raptorfec\naudio/red\naudio/rtp-enc-aescm128\naudio/rtp-midi\naudio/rtx\naudio/s3m\t\t\t\t\t\t\t\t\t\t\t\t\ts3m\naudio/silk\t\t\t\t\t\t\t\t\t\t\t\t\tsil\naudio/smv\naudio/smv-qcp\naudio/smv0\naudio/sp-midi\naudio/speex\naudio/t140c\naudio/t38\naudio/telephone-event\naudio/tone\naudio/ulpfec\naudio/vdvi\naudio/vmr-wb\naudio/vnd.3gpp.iufp\naudio/vnd.4SB\naudio/vnd.4sb\naudio/vnd.CELP\naudio/vnd.audiokoz\naudio/vnd.celp\naudio/vnd.cisco.nse\naudio/vnd.cmles.radio-events\naudio/vnd.cns.anp1\naudio/vnd.cns.inf1\naudio/vnd.dece.audio\t\t\t\t\t\t\t\t\t\tuva uvva\naudio/vnd.digital-winds\t\t\t\t\t\t\t\t\t\teol\naudio/vnd.dlna.adts\naudio/vnd.dolby.heaac.1\naudio/vnd.dolby.heaac.2\naudio/vnd.dolby.mlp\naudio/vnd.dolby.mps\naudio/vnd.dolby.pl2\naudio/vnd.dolby.pl2x\naudio/vnd.dolby.pl2z\naudio/vnd.dolby.pulse.1\naudio/vnd.dra\t\t\t\t\t\t\t\t\t\t\t\tdra\naudio/vnd.dts\t\t\t\t\t\t\t\t\t\t\t\tdts\naudio/vnd.dts.hd\t\t\t\t\t\t\t\t\t\t\tdtshd\naudio/vnd.dvb.file\naudio/vnd.everad.plj\naudio/vnd.hns.audio\naudio/vnd.lucent.voice\t\t\t\t\t\t\t\t\t\tlvp\naudio/vnd.ms-playready.media.pya\t\t\t\t\t\t\tpya\naudio/vnd.nokia.mobile-xmf\naudio/vnd.nortel.vbk\naudio/vnd.nuera.ecelp4800\t\t\t\t\t\t\t\t\tecelp4800\naudio/vnd.nuera.ecelp7470\t\t\t\t\t\t\t\t\tecelp7470\naudio/vnd.nuera.ecelp9600\t\t\t\t\t\t\t\t\tecelp9600\naudio/vnd.octel.sbc\naudio/vnd.qcelp\naudio/vnd.rhetorex.32kadpcm\naudio/vnd.rip\t\t\t\t\t\t\t\t\t\t\t\trip\naudio/vnd.sealedmedia.softseal.mpeg\naudio/vnd.vmx.cvsd\naudio/vorbis\naudio/vorbis-config\naudio/webm\t\t\t\t\t\t\t\t\t\t\t\t\tweba\naudio/x-aac\t\t\t\t\t\t\t\t\t\t\t\t\taac\naudio/x-aiff\t\t\t\t\t\t\t\t\t\t\t\taif aifc aiff\naudio/x-caf\t\t\t\t\t\t\t\t\t\t\t\t\tcaf\naudio/x-flac\t\t\t\t\t\t\t\t\t\t\t\tflac\naudio/x-gsm\t\t\t\t\t\t\t\t\t\t\t\t\tgsm\naudio/x-matroska\t\t\t\t\t\t\t\t\t\t\tmka\naudio/x-mpegurl\t\t\t\t\t\t\t\t\t\t\t\tm3u\naudio/x-ms-wax\t\t\t\t\t\t\t\t\t\t\t\twax\naudio/x-ms-wma\t\t\t\t\t\t\t\t\t\t\t\twma\naudio/x-pn-realaudio\t\t\t\t\t\t\t\t\t\tra ram rm\naudio/x-pn-realaudio-plugin\t\t\t\t\t\t\t\t\trmp\naudio/x-realaudio\t\t\t\t\t\t\t\t\t\t\tra\naudio/x-scpls\t\t\t\t\t\t\t\t\t\t\t\tpls\naudio/x-sd2\t\t\t\t\t\t\t\t\t\t\t\t\tsd2\naudio/x-wav\t\t\t\t\t\t\t\t\t\t\t\t\twav\naudio/xm\t\t\t\t\t\t\t\t\t\t\t\t\txm\nchemical/x-alchemy\t\t\t\t\t\t\t\t\t\t\talc\nchemical/x-cache\t\t\t\t\t\t\t\t\t\t\tcac cache\nchemical/x-cache-csf\t\t\t\t\t\t\t\t\t\tcsf\nchemical/x-cactvs-binary\t\t\t\t\t\t\t\t\tcascii cbin ctab\nchemical/x-cdx\t\t\t\t\t\t\t\t\t\t\t\tcdx\nchemical/x-cerius\t\t\t\t\t\t\t\t\t\t\tcer\nchemical/x-chem3d\t\t\t\t\t\t\t\t\t\t\tc3d\nchemical/x-chemdraw\t\t\t\t\t\t\t\t\t\t\tchm\nchemical/x-cif\t\t\t\t\t\t\t\t\t\t\t\tcif\nchemical/x-cmdf\t\t\t\t\t\t\t\t\t\t\t\tcmdf\nchemical/x-cml\t\t\t\t\t\t\t\t\t\t\t\tcml\nchemical/x-compass\t\t\t\t\t\t\t\t\t\t\tcpa\nchemical/x-crossfire\t\t\t\t\t\t\t\t\t\tbsd\nchemical/x-csml\t\t\t\t\t\t\t\t\t\t\t\tcsm csml\nchemical/x-ctx\t\t\t\t\t\t\t\t\t\t\t\tctx\nchemical/x-cxf\t\t\t\t\t\t\t\t\t\t\t\tcef cxf\nchemical/x-embl-dl-nucleotide\t\t\t\t\t\t\t\temb embl\nchemical/x-galactic-spc\t\t\t\t\t\t\t\t\t\tspc\nchemical/x-gamess-input\t\t\t\t\t\t\t\t\t\tgam gamin inp\nchemical/x-gaussian-checkpoint\t\t\t\t\t\t\t\tfch fchk\nchemical/x-gaussian-cube\t\t\t\t\t\t\t\t\tcub\nchemical/x-gaussian-input\t\t\t\t\t\t\t\t\tgau gjc gjf\nchemical/x-gaussian-log\t\t\t\t\t\t\t\t\t\tgal\nchemical/x-gcg8-sequence\t\t\t\t\t\t\t\t\tgcg\nchemical/x-genbank\t\t\t\t\t\t\t\t\t\t\tgen\nchemical/x-hin\t\t\t\t\t\t\t\t\t\t\t\thin\nchemical/x-isostar\t\t\t\t\t\t\t\t\t\t\tist istr\nchemical/x-jcamp-dx\t\t\t\t\t\t\t\t\t\t\tdx jdx\nchemical/x-kinemage\t\t\t\t\t\t\t\t\t\t\tkin\nchemical/x-macmolecule\t\t\t\t\t\t\t\t\t\tmcm\nchemical/x-macromodel-input\t\t\t\t\t\t\t\t\tmmd mmod\nchemical/x-mdl-molfile\t\t\t\t\t\t\t\t\t\tmol\nchemical/x-mdl-rdfile\t\t\t\t\t\t\t\t\t\trd\nchemical/x-mdl-rxnfile\t\t\t\t\t\t\t\t\t\trxn\nchemical/x-mdl-sdfile\t\t\t\t\t\t\t\t\t\tsd sdf\nchemical/x-mdl-tgf\t\t\t\t\t\t\t\t\t\t\ttgf\nchemical/x-mmcif\t\t\t\t\t\t\t\t\t\t\tmcif\nchemical/x-mol2\t\t\t\t\t\t\t\t\t\t\t\tmol2\nchemical/x-molconn-Z\t\t\t\t\t\t\t\t\t\tb\nchemical/x-mopac-graph\t\t\t\t\t\t\t\t\t\tgpt\nchemical/x-mopac-input\t\t\t\t\t\t\t\t\t\tdat mop mopcrt mpc zmt\nchemical/x-mopac-out\t\t\t\t\t\t\t\t\t\tmoo\nchemical/x-mopac-vib\t\t\t\t\t\t\t\t\t\tmvb\nchemical/x-ncbi-asn1\t\t\t\t\t\t\t\t\t\tasn\nchemical/x-ncbi-asn1-ascii\t\t\t\t\t\t\t\t\tent prt\nchemical/x-ncbi-asn1-binary\t\t\t\t\t\t\t\t\taso val\nchemical/x-ncbi-asn1-spec\t\t\t\t\t\t\t\t\tasn\nchemical/x-pdb\t\t\t\t\t\t\t\t\t\t\t\tent pdb\nchemical/x-rosdal\t\t\t\t\t\t\t\t\t\t\tros\nchemical/x-swissprot\t\t\t\t\t\t\t\t\t\tsw\nchemical/x-vamas-iso14976\t\t\t\t\t\t\t\t\tvms\nchemical/x-vmd\t\t\t\t\t\t\t\t\t\t\t\tvmd\nchemical/x-xtel\t\t\t\t\t\t\t\t\t\t\t\txtel\nchemical/x-xyz\t\t\t\t\t\t\t\t\t\t\t\txyz\nimage/bmp\t\t\t\t\t\t\t\t\t\t\t\t\tbmp\nimage/cgm\t\t\t\t\t\t\t\t\t\t\t\t\tcgm\nimage/example\nimage/fits\nimage/g3fax\t\t\t\t\t\t\t\t\t\t\t\t\tg3\nimage/gif\t\t\t\t\t\t\t\t\t\t\t\t\tgif\nimage/ief\t\t\t\t\t\t\t\t\t\t\t\t\tief\nimage/jp2\nimage/jpeg\t\t\t\t\t\t\t\t\t\t\t\t\tjpe jpeg jpg\nimage/jpm\nimage/jpx\nimage/ktx\t\t\t\t\t\t\t\t\t\t\t\t\tktx\nimage/naplps\nimage/pcx\t\t\t\t\t\t\t\t\t\t\t\t\tpcx\nimage/png\t\t\t\t\t\t\t\t\t\t\t\t\tpng\nimage/prs.btif\t\t\t\t\t\t\t\t\t\t\t\tbtif\nimage/prs.pti\nimage/pwg-raster\nimage/sgi\t\t\t\t\t\t\t\t\t\t\t\t\tsgi\nimage/svg+xml\t\t\t\t\t\t\t\t\t\t\t\tsvg svgz\nimage/t38\nimage/tiff\t\t\t\t\t\t\t\t\t\t\t\t\ttif tiff\nimage/tiff-fx\nimage/vnd.adobe.photoshop\t\t\t\t\t\t\t\t\tpsd\nimage/vnd.airzip.accelerator.azv\nimage/vnd.cns.inf2\nimage/vnd.dece.graphic\t\t\t\t\t\t\t\t\t\tuvg uvi uvvg uvvi\nimage/vnd.djvu\t\t\t\t\t\t\t\t\t\t\t\tdjv djvu\nimage/vnd.dvb.subtitle\t\t\t\t\t\t\t\t\t\tsub\nimage/vnd.dwg\t\t\t\t\t\t\t\t\t\t\t\tdwg\nimage/vnd.dxf\t\t\t\t\t\t\t\t\t\t\t\tdxf\nimage/vnd.fastbidsheet\t\t\t\t\t\t\t\t\t\tfbs\nimage/vnd.fpx\t\t\t\t\t\t\t\t\t\t\t\tfpx\nimage/vnd.fst\t\t\t\t\t\t\t\t\t\t\t\tfst\nimage/vnd.fujixerox.edmics-mmr\t\t\t\t\t\t\t\tmmr\nimage/vnd.fujixerox.edmics-rlc\t\t\t\t\t\t\t\trlc\nimage/vnd.globalgraphics.pgb\nimage/vnd.microsoft.icon\t\t\t\t\t\t\t\t\tico\nimage/vnd.mix\nimage/vnd.ms-modi\t\t\t\t\t\t\t\t\t\t\tmdi\nimage/vnd.ms-photo\t\t\t\t\t\t\t\t\t\t\twdp\nimage/vnd.net-fpx\t\t\t\t\t\t\t\t\t\t\tnpx\nimage/vnd.radiance\nimage/vnd.sealed.png\nimage/vnd.sealedmedia.softseal.gif\nimage/vnd.sealedmedia.softseal.jpg\nimage/vnd.svf\nimage/vnd.wap.wbmp\t\t\t\t\t\t\t\t\t\t\twbmp\nimage/vnd.xiff\t\t\t\t\t\t\t\t\t\t\t\txif\nimage/webp\t\t\t\t\t\t\t\t\t\t\t\t\twebp\nimage/x-3ds\t\t\t\t\t\t\t\t\t\t\t\t\t3ds\nimage/x-canon-cr2\t\t\t\t\t\t\t\t\t\t\tcr2\nimage/x-canon-crw\t\t\t\t\t\t\t\t\t\t\tcrw\nimage/x-cmu-raster\t\t\t\t\t\t\t\t\t\t\tras\nimage/x-cmx\t\t\t\t\t\t\t\t\t\t\t\t\tcmx\nimage/x-coreldraw\t\t\t\t\t\t\t\t\t\t\tcdr\nimage/x-coreldrawpattern\t\t\t\t\t\t\t\t\tpat\nimage/x-coreldrawtemplate\t\t\t\t\t\t\t\t\tcdt\nimage/x-corelphotopaint\t\t\t\t\t\t\t\t\t\tcpt\nimage/x-epson-erf\t\t\t\t\t\t\t\t\t\t\terf\nimage/x-freehand\t\t\t\t\t\t\t\t\t\t\tfh fh4 fh5 fh7 fhc\nimage/x-icon\t\t\t\t\t\t\t\t\t\t\t\tico\nimage/x-jg\t\t\t\t\t\t\t\t\t\t\t\t\tart\nimage/x-jng\t\t\t\t\t\t\t\t\t\t\t\t\tjng\nimage/x-mrsid-image\t\t\t\t\t\t\t\t\t\t\tsid\nimage/x-ms-bmp\t\t\t\t\t\t\t\t\t\t\t\tbmp\nimage/x-nikon-nef\t\t\t\t\t\t\t\t\t\t\tnef\nimage/x-olympus-orf\t\t\t\t\t\t\t\t\t\t\torf\nimage/x-pcx\t\t\t\t\t\t\t\t\t\t\t\t\tpcx\nimage/x-photoshop\t\t\t\t\t\t\t\t\t\t\tpsd\nimage/x-pict\t\t\t\t\t\t\t\t\t\t\t\tpct pic\nimage/x-portable-anymap\t\t\t\t\t\t\t\t\t\tpnm\nimage/x-portable-bitmap\t\t\t\t\t\t\t\t\t\tpbm\nimage/x-portable-graymap\t\t\t\t\t\t\t\t\tpgm\nimage/x-portable-pixmap\t\t\t\t\t\t\t\t\t\tppm\nimage/x-rgb\t\t\t\t\t\t\t\t\t\t\t\t\trgb\nimage/x-tga\t\t\t\t\t\t\t\t\t\t\t\t\ttga\nimage/x-xbitmap\t\t\t\t\t\t\t\t\t\t\t\txbm\nimage/x-xpixmap\t\t\t\t\t\t\t\t\t\t\t\txpm\nimage/x-xwindowdump\t\t\t\t\t\t\t\t\t\t\txwd\ninode/blockdevice\ninode/chardevice\ninode/directory\ninode/directory-locked\ninode/fifo\ninode/socket\nmessage/CPIM\nmessage/cpim\nmessage/delivery-status\nmessage/disposition-notification\nmessage/example\nmessage/external-body\nmessage/feedback-report\nmessage/global\nmessage/global-delivery-status\nmessage/global-disposition-notification\nmessage/global-headers\nmessage/http\nmessage/imdn+xml\nmessage/news\nmessage/partial\nmessage/rfc822\t\t\t\t\t\t\t\t\t\t\t\teml mime\nmessage/s-http\nmessage/sip\nmessage/sipfrag\nmessage/tracking-status\nmessage/vnd.si.simp\nmodel/example\nmodel/iges\t\t\t\t\t\t\t\t\t\t\t\t\tiges igs\nmodel/mesh\t\t\t\t\t\t\t\t\t\t\t\t\tmesh msh silo\nmodel/vnd.collada+xml\t\t\t\t\t\t\t\t\t\tdae\nmodel/vnd.dwf\t\t\t\t\t\t\t\t\t\t\t\tdwf\nmodel/vnd.flatland.3dml\nmodel/vnd.gdl\t\t\t\t\t\t\t\t\t\t\t\tgdl\nmodel/vnd.gs-gdl\nmodel/vnd.gs.gdl\nmodel/vnd.gtw\t\t\t\t\t\t\t\t\t\t\t\tgtw\nmodel/vnd.moml+xml\nmodel/vnd.mts\t\t\t\t\t\t\t\t\t\t\t\tmts\nmodel/vnd.parasolid.transmit.binary\nmodel/vnd.parasolid.transmit.text\nmodel/vnd.vtu\t\t\t\t\t\t\t\t\t\t\t\tvtu\nmodel/vrml\t\t\t\t\t\t\t\t\t\t\t\t\tvrml wrl\nmodel/x3d+binary\t\t\t\t\t\t\t\t\t\t\tx3db x3dbz\nmodel/x3d+vrml\t\t\t\t\t\t\t\t\t\t\t\tx3dv x3dvz\nmodel/x3d+xml\t\t\t\t\t\t\t\t\t\t\t\tx3d x3dz\nmultipart/alternative\nmultipart/appledouble\nmultipart/byteranges\nmultipart/digest\nmultipart/encrypted\nmultipart/example\nmultipart/form-data\nmultipart/header-set\nmultipart/mixed\nmultipart/parallel\nmultipart/related\nmultipart/report\nmultipart/signed\nmultipart/voice-message\ntext/cache-manifest\t\t\t\t\t\t\t\t\t\t\tappcache\ntext/calendar\t\t\t\t\t\t\t\t\t\t\t\tics icz ifb\ntext/comma-separated-values\t\t\t\t\t\t\t\t\tcsv\ntext/css\t\t\t\t\t\t\t\t\t\t\t\t\tcss\ntext/csv\t\t\t\t\t\t\t\t\t\t\t\t\tcsv\ntext/directory\ntext/dns\ntext/ecmascript\ntext/english\ntext/enriched\ntext/example\ntext/h323\t\t\t\t\t\t\t\t\t\t\t\t\t323\ntext/html\t\t\t\t\t\t\t\t\t\t\t\t\thtm html shtml\ntext/iuls\t\t\t\t\t\t\t\t\t\t\t\t\tuls\ntext/javascript\ntext/mathml\t\t\t\t\t\t\t\t\t\t\t\t\tmml\ntext/n3\t\t\t\t\t\t\t\t\t\t\t\t\t\tn3\ntext/parityfec\ntext/plain\t\t\t\t\t\t\t\t\t\t\t\t\tasc brf conf def diff in list log pot srt text txt\ntext/prs.fallenstein.rst\ntext/prs.lines.tag\t\t\t\t\t\t\t\t\t\t\tdsc\ntext/red\ntext/rfc822-headers\ntext/richtext\t\t\t\t\t\t\t\t\t\t\t\trtx\ntext/rtf\t\t\t\t\t\t\t\t\t\t\t\t\trtf\ntext/rtp-enc-aescm128\ntext/rtx\ntext/scriptlet\t\t\t\t\t\t\t\t\t\t\t\tsct wsc\ntext/sgml\t\t\t\t\t\t\t\t\t\t\t\t\tsgm sgml\ntext/t140\ntext/tab-separated-values\t\t\t\t\t\t\t\t\ttsv\ntext/texmacs\t\t\t\t\t\t\t\t\t\t\t\ttm ts\ntext/troff\t\t\t\t\t\t\t\t\t\t\t\t\tman me ms roff t tr\ntext/turtle\t\t\t\t\t\t\t\t\t\t\t\t\tttl\ntext/ulpfec\ntext/uri-list\t\t\t\t\t\t\t\t\t\t\t\turi uris urls\ntext/vcard\t\t\t\t\t\t\t\t\t\t\t\t\tvcard\ntext/vnd.DMClientScript\ntext/vnd.IPTC.NITF\ntext/vnd.IPTC.NewsML\ntext/vnd.abc\ntext/vnd.curl\t\t\t\t\t\t\t\t\t\t\t\tcurl\ntext/vnd.curl.dcurl\t\t\t\t\t\t\t\t\t\t\tdcurl\ntext/vnd.curl.mcurl\t\t\t\t\t\t\t\t\t\t\tmcurl\ntext/vnd.curl.scurl\t\t\t\t\t\t\t\t\t\t\tscurl\ntext/vnd.dmclientscript\ntext/vnd.dvb.subtitle\t\t\t\t\t\t\t\t\t\tsub\ntext/vnd.esmertec.theme-descriptor\ntext/vnd.flatland.3dml\ntext/vnd.fly\t\t\t\t\t\t\t\t\t\t\t\tfly\ntext/vnd.fmi.flexstor\t\t\t\t\t\t\t\t\t\tflx\ntext/vnd.graphviz\t\t\t\t\t\t\t\t\t\t\tgv\ntext/vnd.in3d.3dml\t\t\t\t\t\t\t\t\t\t\t3dml\ntext/vnd.in3d.spot\t\t\t\t\t\t\t\t\t\t\tspot\ntext/vnd.iptc.newsml\ntext/vnd.iptc.nitf\ntext/vnd.latex-z\ntext/vnd.motorola.reflex\ntext/vnd.ms-mediapackage\ntext/vnd.net2phone.commcenter.command\ntext/vnd.si.uricatalogue\ntext/vnd.sun.j2me.app-descriptor\t\t\t\t\t\t\tjad\ntext/vnd.trolltech.linguist\ntext/vnd.wap.si\ntext/vnd.wap.sl\ntext/vnd.wap.wml\t\t\t\t\t\t\t\t\t\t\twml\ntext/vnd.wap.wmlscript\t\t\t\t\t\t\t\t\t\twmls\ntext/x-asm\t\t\t\t\t\t\t\t\t\t\t\t\tasm s\ntext/x-bibtex\t\t\t\t\t\t\t\t\t\t\t\tbib\ntext/x-boo\t\t\t\t\t\t\t\t\t\t\t\t\tboo\ntext/x-c\t\t\t\t\t\t\t\t\t\t\t\t\tc cc cpp cxx dic h hh\ntext/x-c++hdr\t\t\t\t\t\t\t\t\t\t\t\th++ hh hpp hxx\ntext/x-c++src\t\t\t\t\t\t\t\t\t\t\t\tc++ cc cpp cxx\ntext/x-chdr\t\t\t\t\t\t\t\t\t\t\t\t\th\ntext/x-component\t\t\t\t\t\t\t\t\t\t\thtc\ntext/x-crontab\ntext/x-csh\t\t\t\t\t\t\t\t\t\t\t\t\tcsh\ntext/x-csrc\t\t\t\t\t\t\t\t\t\t\t\t\tc\ntext/x-diff\t\t\t\t\t\t\t\t\t\t\t\t\tdiff patch\ntext/x-dsrc\t\t\t\t\t\t\t\t\t\t\t\t\td\ntext/x-fortran\t\t\t\t\t\t\t\t\t\t\t\tf f77 f90 for\ntext/x-haskell\t\t\t\t\t\t\t\t\t\t\t\ths\ntext/x-java\t\t\t\t\t\t\t\t\t\t\t\t\tjava\ntext/x-java-source\t\t\t\t\t\t\t\t\t\t\tjava\ntext/x-lilypond\t\t\t\t\t\t\t\t\t\t\t\tly\ntext/x-literate-haskell\t\t\t\t\t\t\t\t\t\tlhs\ntext/x-makefile\ntext/x-moc\t\t\t\t\t\t\t\t\t\t\t\t\tmoc\ntext/x-nfo\t\t\t\t\t\t\t\t\t\t\t\t\tnfo\ntext/x-opml\t\t\t\t\t\t\t\t\t\t\t\t\topml\ntext/x-pascal\t\t\t\t\t\t\t\t\t\t\t\tp pas\ntext/x-pcs-gcd\t\t\t\t\t\t\t\t\t\t\t\tgcd\ntext/x-perl\t\t\t\t\t\t\t\t\t\t\t\t\tpl pm\ntext/x-psp\t\t\t\t\t\t\t\t\t\t\t\t\tpsp\ntext/x-python\t\t\t\t\t\t\t\t\t\t\t\tpy\ntext/x-scala\t\t\t\t\t\t\t\t\t\t\t\tscala\ntext/x-server-parsed-html\ntext/x-setext\t\t\t\t\t\t\t\t\t\t\t\tetx\ntext/x-sfv\t\t\t\t\t\t\t\t\t\t\t\t\tsfv\ntext/x-sh\t\t\t\t\t\t\t\t\t\t\t\t\tsh\ntext/x-tcl\t\t\t\t\t\t\t\t\t\t\t\t\ttcl tk\ntext/x-tex\t\t\t\t\t\t\t\t\t\t\t\t\tcls ltx sty tex\ntext/x-uuencode\t\t\t\t\t\t\t\t\t\t\t\tuu\ntext/x-vcalendar\t\t\t\t\t\t\t\t\t\t\tvcs\ntext/x-vcard\t\t\t\t\t\t\t\t\t\t\t\tvcf\ntext/xml\ntext/xml-external-parsed-entity\nvideo/1d-interleaved-parityfec\nvideo/3gpp\t\t\t\t\t\t\t\t\t\t\t\t\t3gp\nvideo/3gpp-tt\nvideo/3gpp2\t\t\t\t\t\t\t\t\t\t\t\t\t3g2\nvideo/BMPEG\nvideo/BT656\nvideo/CelB\nvideo/DV\nvideo/H261\nvideo/H263\nvideo/H263-1998\nvideo/H263-2000\nvideo/H264\nvideo/H264-RCDO\nvideo/H264-SVC\nvideo/JPEG\nvideo/MJ2\nvideo/MP1S\nvideo/MP2P\nvideo/MP2T\t\t\t\t\t\t\t\t\t\t\t\t\tts\nvideo/MP4V-ES\nvideo/MPV\nvideo/SMPTE292M\nvideo/annodex\t\t\t\t\t\t\t\t\t\t\t\taxv\nvideo/bmpeg\nvideo/bt656\nvideo/celb\nvideo/dl\t\t\t\t\t\t\t\t\t\t\t\t\tdl\nvideo/dv\t\t\t\t\t\t\t\t\t\t\t\t\tdif dv\nvideo/example\nvideo/fli\t\t\t\t\t\t\t\t\t\t\t\t\tfli\nvideo/gl\t\t\t\t\t\t\t\t\t\t\t\t\tgl\nvideo/h261\t\t\t\t\t\t\t\t\t\t\t\t\th261\nvideo/h263\t\t\t\t\t\t\t\t\t\t\t\t\th263\nvideo/h263-1998\nvideo/h263-2000\nvideo/h264\t\t\t\t\t\t\t\t\t\t\t\t\th264\nvideo/jpeg\t\t\t\t\t\t\t\t\t\t\t\t\tjpgv\nvideo/jpeg2000\nvideo/jpm\t\t\t\t\t\t\t\t\t\t\t\t\tjpgm jpm\nvideo/mj2\t\t\t\t\t\t\t\t\t\t\t\t\tmj2 mjp2\nvideo/mp1s\nvideo/mp2p\nvideo/mp2t\nvideo/mp4\t\t\t\t\t\t\t\t\t\t\t\t\tmp4 mp4v mpg4\nvideo/mp4v-es\nvideo/mpeg\t\t\t\t\t\t\t\t\t\t\t\t\tm1v m2v mpe mpeg mpg\nvideo/mpeg4-generic\nvideo/mpv\nvideo/nv\nvideo/ogg\t\t\t\t\t\t\t\t\t\t\t\t\togv\nvideo/parityfec\nvideo/pointer\nvideo/quicktime\t\t\t\t\t\t\t\t\t\t\t\tmov qt\nvideo/raptorfec\nvideo/raw\nvideo/rtp-enc-aescm128\nvideo/rtx\nvideo/smpte292m\nvideo/ulpfec\nvideo/vc1\nvideo/vnd.CCTV\nvideo/vnd.cctv\nvideo/vnd.dece.hd\t\t\t\t\t\t\t\t\t\t\tuvh uvvh\nvideo/vnd.dece.mobile\t\t\t\t\t\t\t\t\t\tuvm uvvm\nvideo/vnd.dece.mp4\nvideo/vnd.dece.pd\t\t\t\t\t\t\t\t\t\t\tuvp uvvp\nvideo/vnd.dece.sd\t\t\t\t\t\t\t\t\t\t\tuvs uvvs\nvideo/vnd.dece.video\t\t\t\t\t\t\t\t\t\tuvv uvvv\nvideo/vnd.directv.mpeg\nvideo/vnd.directv.mpeg-tts\nvideo/vnd.dlna.mpeg-tts\nvideo/vnd.dvb.file\t\t\t\t\t\t\t\t\t\t\tdvb\nvideo/vnd.fvt\t\t\t\t\t\t\t\t\t\t\t\tfvt\nvideo/vnd.hns.video\nvideo/vnd.iptvforum.1dparityfec-1010\nvideo/vnd.iptvforum.1dparityfec-2005\nvideo/vnd.iptvforum.2dparityfec-1010\nvideo/vnd.iptvforum.2dparityfec-2005\nvideo/vnd.iptvforum.ttsavc\nvideo/vnd.iptvforum.ttsmpeg2\nvideo/vnd.motorola.video\nvideo/vnd.motorola.videop\nvideo/vnd.mpegurl\t\t\t\t\t\t\t\t\t\t\tm4u mxu\nvideo/vnd.ms-playready.media.pyv\t\t\t\t\t\t\tpyv\nvideo/vnd.mts\nvideo/vnd.nokia.interleaved-multimedia\nvideo/vnd.nokia.videovoip\nvideo/vnd.objectvideo\nvideo/vnd.sealed.mpeg1\nvideo/vnd.sealed.mpeg4\nvideo/vnd.sealed.swf\nvideo/vnd.sealedmedia.softseal.mov\nvideo/vnd.uvvu.mp4\t\t\t\t\t\t\t\t\t\t\tuvu uvvu\nvideo/vnd.vivo\t\t\t\t\t\t\t\t\t\t\t\tviv\nvideo/webm\t\t\t\t\t\t\t\t\t\t\t\t\twebm\nvideo/x-f4v\t\t\t\t\t\t\t\t\t\t\t\t\tf4v\nvideo/x-fli\t\t\t\t\t\t\t\t\t\t\t\t\tfli\nvideo/x-flv\t\t\t\t\t\t\t\t\t\t\t\t\tflv\nvideo/x-la-asf\t\t\t\t\t\t\t\t\t\t\t\tlsf lsx\nvideo/x-m4v\t\t\t\t\t\t\t\t\t\t\t\t\tm4v\nvideo/x-matroska\t\t\t\t\t\t\t\t\t\t\tmk3d mks mkv mpv\nvideo/x-mng\t\t\t\t\t\t\t\t\t\t\t\t\tmng\nvideo/x-ms-asf\t\t\t\t\t\t\t\t\t\t\t\tasf asx\nvideo/x-ms-vob\t\t\t\t\t\t\t\t\t\t\t\tvob\nvideo/x-ms-wm\t\t\t\t\t\t\t\t\t\t\t\twm\nvideo/x-ms-wmv\t\t\t\t\t\t\t\t\t\t\t\twmv\nvideo/x-ms-wmx\t\t\t\t\t\t\t\t\t\t\t\twmx\nvideo/x-ms-wvx\t\t\t\t\t\t\t\t\t\t\t\twvx\nvideo/x-msvideo\t\t\t\t\t\t\t\t\t\t\t\tavi\nvideo/x-sgi-movie\t\t\t\t\t\t\t\t\t\t\tmovie\nvideo/x-smv\t\t\t\t\t\t\t\t\t\t\t\t\tsmv\nx-conference/x-cooltalk\t\t\t\t\t\t\t\t\t\tice\nx-epoc/x-sisx-app\t\t\t\t\t\t\t\t\t\t\tsisx\nx-world/x-vrml\t\t\t\t\t\t\t\t\t\t\t\tvrm vrml wrl\n"
  },
  {
    "path": "board/common/overlay/etc/modprobe.d/modprobe.conf",
    "content": "# wifi\noptions 8192cu rtw_power_mgnt=0 rtw_enusbss=0\noptions mwifiex disconnect_on_suspend=0\noptions rndis_wlan power_save=0\noptions b43 hwpctl=0\noptions ath6kl_core suspend_mode=1\noptions brcmfmac roamoff=1\n"
  },
  {
    "path": "board/common/overlay/etc/modules",
    "content": ""
  },
  {
    "path": "board/common/overlay/etc/netwatch.conf",
    "content": "LINK_WATCH=true\nLINK_WATCH_TIMEOUT=20\n\nIP_WATCH=true\nIP_WATCH_TIMEOUT=40\n\nGW_WATCH=false\nGW_WATCH_RETRIES=3\nGW_WATCH_INTERVAL=60\n\n#NET_WATCH_HOST=www.google.com\n#NET_WATCH_PORT=80\nNET_WATCH_DELAY=300\nNET_WATCH_RETRIES=3\nNET_WATCH_TIMEOUT=5\nNET_WATCH_INTERVAL=60\n\ntest -s /data/etc/netwatch.conf && source /data/etc/netwatch.conf\ntest -s /boot/netwatch.conf && source /boot/netwatch.conf\n"
  },
  {
    "path": "board/common/overlay/etc/nsswitch.conf",
    "content": "# /etc/nsswitch.conf\n#\n# Example configuration of GNU Name Service Switch functionality.\n# If you have the `glibc-doc-reference' and `info' packages installed, try:\n# `info libc \"Name Service Switch\"' for information about this file.\n\npasswd:         files\ngroup:          files\nshadow:         files\nhosts:          files dns\nnetworks:       files\n\nprotocols:      files\nservices:       files\nethers:         files\nrpc:            files\n\n"
  },
  {
    "path": "board/common/overlay/etc/ntp.conf",
    "content": "pool pool.ntp.org iburst\ndriftfile /var/lib/chrony.drift\nmakestep 1000 10\nrtcsync\nhwclockfile /data/etc/adjtime\nlog tracking\n"
  },
  {
    "path": "board/common/overlay/etc/os.conf",
    "content": "OS_DEBUG=\"false\"\nOS_PRERELEASES=\"false\"\nOS_ETH=\"eth0\"\nOS_WLAN=\"wlan0\"\nOS_WLAN1=\"wlan1\"\nOS_AP=\"ap0\"\nOS_PPP=\"ppp0\"\nOS_NETWORKLESS=\"false\"\nOS_COUNTRY=\"GB\"\nOS_FACTORY_RESET_GPIO=\"\"\nOS_FACTORY_RESET_INPUT=\"\"\nOS_FACTORY_RESET_LEVEL=\"1\"\nOS_FACTORY_RESET_HOLD_SECONDS=\"10\"\nOS_FIRMWARE_LATEST_STABLE=\"\"\nOS_FIRMWARE_LATEST_BETA=\"\"\nOS_FIRMWARE_URL=\"\"\nOS_FIRMWARE_AUTO_UPDATE=\"false\"\nOS_FIRMWARE_VERSIONS_STABLE=\"\"\nOS_FIRMWARE_VERSIONS_BETA=\"\"\n"
  },
  {
    "path": "board/common/overlay/etc/ppp/chatscripts/mobile.chat",
    "content": "ABORT 'BUSY'\nABORT 'NO CARRIER'\nABORT 'VOICE'\nABORT 'NO DIALTONE'\nABORT 'NO DIAL TONE'\nABORT 'NO ANSWER'\nABORT 'DELAYED'\nREPORT CONNECT\nTIMEOUT 6\n'' 'ATQ0'\n'OK-AT-OK' 'ATZ'\nTIMEOUT 3\n'OK' @/data/etc/ppp/pin\n'OK\\d-AT-OK' 'ATI'\n'OK' 'ATZ'\n'OK' 'ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0'\n'OK' @/data/etc/ppp/extra\n'OK-AT-OK' @/data/etc/ppp/apn\n'OK' 'ATDT*99***1#'\nTIMEOUT 30\nCONNECT ''\n"
  },
  {
    "path": "board/common/overlay/etc/ppp/ip-up",
    "content": "#!/bin/sh\n\nresolv_conf=/etc/resolv.conf\n\necho -n > ${resolv_conf}\nif [ -n \"${DNS1}\" ]; then\n    echo \"nameserver ${DNS1}\" >> ${resolv_conf}\nfi\nif [ -n \"${DNS2}\" ]; then\n    echo \"nameserver ${DNS2}\" >> ${resolv_conf}\nfi\n\n"
  },
  {
    "path": "board/common/overlay/etc/ppp/options",
    "content": "lock\ncrtscts\nmodem\npassive\nnovj\ndefaultroute\nnoipdefault\nusepeerdns\nnoauth\nhide-password\npersist\nholdoff 10\nmaxfail 0\n"
  },
  {
    "path": "board/common/overlay/etc/ppp/peers/mobile",
    "content": "file /data/etc/ppp/modem\nfile /etc/ppp/options\nfile /data/etc/ppp/auth\nconnect \"/usr/sbin/chat -v -t15 -f /etc/ppp/chatscripts/mobile.chat\"\n"
  },
  {
    "path": "board/common/overlay/etc/profile",
    "content": "export PATH=/bin:/sbin:/usr/bin:/usr/sbin\n\n# If running interactively, then:\nif [ \"$PS1\" ]; then\n\n    if [ \"$BASH\" ]; then\n\texport PS1=\"[\\u@\\h \\W]\\\\$ \"\n\talias ll='/bin/ls --color=tty -laFh'\n\talias ls='/bin/ls --color=tty -F'\n\texport 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:';\n    else\n      if [ \"`id -u`\" -eq 0 ]; then \n\texport PS1='# '\n      else\n\texport PS1='$ '\n      fi\n    fi\n\n    export USER=`id -un`\n    export LOGNAME=$USER\n    export HOSTNAME=`/bin/hostname`\n    export HISTSIZE=1000\n    export HISTFILESIZE=1000\n    export PAGER=\"/usr/bin/less\"\n    export EDITOR=\"/usr/bin/nano\"\n    export INPUTRC=\"/etc/inputrc\"\n    export TERM=linux\nfi;\n\nexport HISTFILE=/data/.bash_history\n\n# custom local profile\ntest -f /data/etc/profile && source /data/etc/profile\n\n# global environment variables\nset -a\ntest -f /etc/environment && source /etc/environment\ntest -f /data/etc/environment && source /data/etc/environment\ntest -f /boot/etc/environment && source /boot/etc/environment\nset +a\n"
  },
  {
    "path": "board/common/overlay/etc/protocols",
    "content": "# Internet (IP) protocols\n#\n# Updated from http://www.iana.org/assignments/protocol-numbers and other\n# sources.\n\nip\t0\tIP\t\t# internet protocol, pseudo protocol number\nhopopt\t0\tHOPOPT\t\t# IPv6 Hop-by-Hop Option [RFC1883]\nicmp\t1\tICMP\t\t# internet control message protocol\nigmp\t2\tIGMP\t\t# Internet Group Management\nggp\t3\tGGP\t\t# gateway-gateway protocol\nipencap\t4\tIP-ENCAP\t# IP encapsulated in IP (officially ``IP'')\nst\t5\tST\t\t# ST datagram mode\ntcp\t6\tTCP\t\t# transmission control protocol\negp\t8\tEGP\t\t# exterior gateway protocol\nigp\t9\tIGP\t\t# any private interior gateway (Cisco)\npup\t12\tPUP\t\t# PARC universal packet protocol\nudp\t17\tUDP\t\t# user datagram protocol\nhmp\t20\tHMP\t\t# host monitoring protocol\nxns-idp\t22\tXNS-IDP\t\t# Xerox NS IDP\nrdp\t27\tRDP\t\t# \"reliable datagram\" protocol\niso-tp4\t29\tISO-TP4\t\t# ISO Transport Protocol class 4 [RFC905]\ndccp\t33\tDCCP\t\t# Datagram Congestion Control Prot. [RFC4340]\nxtp\t36\tXTP\t\t# Xpress Transfer Protocol\nddp\t37\tDDP\t\t# Datagram Delivery Protocol\nidpr-cmtp 38\tIDPR-CMTP\t# IDPR Control Message Transport\nipv6\t41\tIPv6\t\t# Internet Protocol, version 6\nipv6-route 43\tIPv6-Route\t# Routing Header for IPv6\nipv6-frag 44\tIPv6-Frag\t# Fragment Header for IPv6\nidrp\t45\tIDRP\t\t# Inter-Domain Routing Protocol\nrsvp\t46\tRSVP\t\t# Reservation Protocol\ngre\t47\tGRE\t\t# General Routing Encapsulation\nesp\t50\tIPSEC-ESP\t# Encap Security Payload [RFC2406]\nah\t51\tIPSEC-AH\t# Authentication Header [RFC2402]\nskip\t57\tSKIP\t\t# SKIP\nipv6-icmp 58\tIPv6-ICMP\t# ICMP for IPv6\nipv6-nonxt 59\tIPv6-NoNxt\t# No Next Header for IPv6\nipv6-opts 60\tIPv6-Opts\t# Destination Options for IPv6\nrspf\t73\tRSPF CPHB\t# Radio Shortest Path First (officially CPHB)\nvmtp\t81\tVMTP\t\t# Versatile Message Transport\neigrp\t88\tEIGRP\t\t# Enhanced Interior Routing Protocol (Cisco)\nospf\t89\tOSPFIGP\t\t# Open Shortest Path First IGP\nax.25\t93\tAX.25\t\t# AX.25 frames\nipip\t94\tIPIP\t\t# IP-within-IP Encapsulation Protocol\netherip\t97\tETHERIP\t\t# Ethernet-within-IP Encapsulation [RFC3378]\nencap\t98\tENCAP\t\t# Yet Another IP encapsulation [RFC1241]\n#\t99\t\t\t# any private encryption scheme\npim\t103\tPIM\t\t# Protocol Independent Multicast\nipcomp\t108\tIPCOMP\t\t# IP Payload Compression Protocol\nvrrp\t112\tVRRP\t\t# Virtual Router Redundancy Protocol [RFC5798]\nl2tp\t115\tL2TP\t\t# Layer Two Tunneling Protocol [RFC2661]\nisis\t124\tISIS\t\t# IS-IS over IPv4\nsctp\t132\tSCTP\t\t# Stream Control Transmission Protocol\nfc\t133\tFC\t\t# Fibre Channel\nmobility-header 135 Mobility-Header # Mobility Support for IPv6 [RFC3775]\nudplite\t136\tUDPLite\t\t# UDP-Lite [RFC3828]\nmpls-in-ip 137\tMPLS-in-IP\t# MPLS-in-IP [RFC4023]\nmanet\t138\t\t\t# MANET Protocols [RFC5498]\nhip\t139\tHIP\t\t# Host Identity Protocol\nshim6\t140\tShim6\t\t# Shim6 Protocol [RFC5533]\nwesp\t141\tWESP\t\t# Wrapped Encapsulating Security Payload\nrohc\t142\tROHC\t\t# Robust Header Compression\n"
  },
  {
    "path": "board/common/overlay/etc/securetty",
    "content": "tty1\ntty2\ntty3\ntty4\ntty5\ntty6\ntty7\ntty8\nttyS0\nttyS1\nttyS2\nttyS3\nttyAMA0\nttyAMA1\nttyAMA2\nttyAMA3\nttySAC0\nttySAC1\nttySAC2\nttySAC3\nttyUL0\nttyUL1\nttyUL2\nttyUL3\nttyPS0\nttyPS1\nttyPSC0\nttyPSC1\nttyPSC2\nttyPSC3\nttyCPM0\nttyCPM1\nttyCPM2\nttyCPM3\nttymxc0\nttymxc1\nttymxc2\nttyO0\nttyO1\nttyO2\nttyO3\nttyAM0\nttyAM1\nttyAM2\nttySC0\nttySC1\nttySC2\nttySC3\nttySC4\nttySC5\nttySC6\nttySC7\nttyGS0\nhvc0\nhvc1\nhvc2\nhvc3\n"
  },
  {
    "path": "board/common/overlay/etc/services",
    "content": "# /etc/services:\n# $Id: services,v 1.1 2004/10/09 02:49:18 andersen Exp $\n#\n# Network services, Internet style\n#\n# Note that it is presently the policy of IANA to assign a single well-known\n# port number for both TCP and UDP; hence, most entries here have two entries\n# even if the protocol doesn't support UDP operations.\n# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports\n# are included, only the more common ones.\n\ntcpmux\t\t1/tcp\t\t\t\t# TCP port service multiplexer\necho\t\t7/tcp\necho\t\t7/udp\ndiscard\t\t9/tcp\t\tsink null\ndiscard\t\t9/udp\t\tsink null\nsystat\t\t11/tcp\t\tusers\ndaytime\t\t13/tcp\ndaytime\t\t13/udp\nnetstat\t\t15/tcp\nqotd\t\t17/tcp\t\tquote\nmsp\t\t18/tcp\t\t\t\t# message send protocol\nmsp\t\t18/udp\t\t\t\t# message send protocol\nchargen\t\t19/tcp\t\tttytst source\nchargen\t\t19/udp\t\tttytst source\nftp-data\t20/tcp\nftp\t\t21/tcp\nfsp\t\t21/udp\t\tfspd\nssh\t\t22/tcp\t\t\t\t# SSH Remote Login Protocol\nssh\t\t22/udp\t\t\t\t# SSH Remote Login Protocol\ntelnet\t\t23/tcp\n# 24 - private\nsmtp\t\t25/tcp\t\tmail\n# 26 - unassigned\ntime\t\t37/tcp\t\ttimserver\ntime\t\t37/udp\t\ttimserver\nrlp\t\t39/udp\t\tresource\t# resource location\nnameserver\t42/tcp\t\tname\t\t# IEN 116\nwhois\t\t43/tcp\t\tnicname\nre-mail-ck\t50/tcp\t\t\t\t# Remote Mail Checking Protocol\nre-mail-ck\t50/udp\t\t\t\t# Remote Mail Checking Protocol\ndomain\t\t53/tcp\t\tnameserver\t# name-domain server\ndomain\t\t53/udp\t\tnameserver\nmtp\t\t57/tcp\t\t\t\t# deprecated\nbootps\t\t67/tcp\t\t\t\t# BOOTP server\nbootps\t\t67/udp\nbootpc\t\t68/tcp\t\t\t\t# BOOTP client\nbootpc\t\t68/udp\ntftp\t\t69/udp\ngopher\t\t70/tcp\t\t\t\t# Internet Gopher\ngopher\t\t70/udp\nrje\t\t77/tcp\t\tnetrjs\nfinger\t\t79/tcp\nwww\t\t80/tcp\t\thttp\t\t# WorldWideWeb HTTP\nwww\t\t80/udp\t\t\t\t# HyperText Transfer Protocol\nlink\t\t87/tcp\t\tttylink\nkerberos\t88/tcp\t\tkerberos5 krb5\t# Kerberos v5\nkerberos\t88/udp\t\tkerberos5 krb5\t# Kerberos v5\nsupdup\t\t95/tcp\n# 100 - reserved\nhostnames\t101/tcp\t\thostname\t# usually from sri-nic\niso-tsap\t102/tcp\t\ttsap\t\t# part of ISODE.\ncsnet-ns\t105/tcp\t\tcso-ns\t\t# also used by CSO name server\ncsnet-ns\t105/udp\t\tcso-ns\n# unfortunately the poppassd (Eudora) uses a port which has already\n# been assigned to a different service. We list the poppassd as an\n# alias here. This should work for programs asking for this service.\n# (due to a bug in inetd the 3com-tsmux line is disabled)\n#3com-tsmux\t106/tcp\t\tpoppassd\n#3com-tsmux\t106/udp\t\tpoppassd\nrtelnet\t\t107/tcp\t\t\t\t# Remote Telnet\nrtelnet\t\t107/udp\npop-2\t\t109/tcp\t\tpostoffice\t# POP version 2\npop-2\t\t109/udp\npop-3\t\t110/tcp\t\t\t\t# POP version 3\npop-3\t\t110/udp\nsunrpc\t\t111/tcp\t\tportmapper\t# RPC 4.0 portmapper TCP\nsunrpc\t\t111/udp\t\tportmapper\t# RPC 4.0 portmapper UDP\nauth\t\t113/tcp\t\tauthentication tap ident\nsftp\t\t115/tcp\nuucp-path\t117/tcp\nnntp\t\t119/tcp\t\treadnews untp\t# USENET News Transfer Protocol\nntp\t\t123/tcp\nntp\t\t123/udp\t\t\t\t# Network Time Protocol\nnetbios-ns\t137/tcp\t\t\t\t# NETBIOS Name Service\nnetbios-ns\t137/udp\nnetbios-dgm\t138/tcp\t\t\t\t# NETBIOS Datagram Service\nnetbios-dgm\t138/udp\nnetbios-ssn\t139/tcp\t\t\t\t# NETBIOS session service\nnetbios-ssn\t139/udp\nimap2\t\t143/tcp\t\t\t\t# Interim Mail Access Proto v2\nimap2\t\t143/udp\nsnmp\t\t161/udp\t\t\t\t# Simple Net Mgmt Proto\nsnmp-trap\t162/udp\t\tsnmptrap\t# Traps for SNMP\ncmip-man\t163/tcp\t\t\t\t# ISO mgmt over IP (CMOT)\ncmip-man\t163/udp\ncmip-agent\t164/tcp\ncmip-agent\t164/udp\nxdmcp\t\t177/tcp\t\t\t\t# X Display Mgr. Control Proto\nxdmcp\t\t177/udp\nnextstep\t178/tcp\t\tNeXTStep NextStep\t# NeXTStep window\nnextstep\t178/udp\t\tNeXTStep NextStep\t# server\nbgp\t\t179/tcp\t\t\t\t# Border Gateway Proto.\nbgp\t\t179/udp\nprospero\t191/tcp\t\t\t\t# Cliff Neuman's Prospero\nprospero\t191/udp\nirc\t\t194/tcp\t\t\t\t# Internet Relay Chat\nirc\t\t194/udp\nsmux\t\t199/tcp\t\t\t\t# SNMP Unix Multiplexer\nsmux\t\t199/udp\nat-rtmp\t\t201/tcp\t\t\t\t# AppleTalk routing\nat-rtmp\t\t201/udp\nat-nbp\t\t202/tcp\t\t\t\t# AppleTalk name binding\nat-nbp\t\t202/udp\nat-echo\t\t204/tcp\t\t\t\t# AppleTalk echo\nat-echo\t\t204/udp\nat-zis\t\t206/tcp\t\t\t\t# AppleTalk zone information\nat-zis\t\t206/udp\nqmtp\t\t209/tcp\t\t\t\t# The Quick Mail Transfer Protocol\nqmtp\t\t209/udp\t\t\t\t# The Quick Mail Transfer Protocol\nz3950\t\t210/tcp\t\twais\t\t# NISO Z39.50 database\nz3950\t\t210/udp\t\twais\nipx\t\t213/tcp\t\t\t\t# IPX\nipx\t\t213/udp\nimap3\t\t220/tcp\t\t\t\t# Interactive Mail Access\nimap3\t\t220/udp\t\t\t\t# Protocol v3\nulistserv\t372/tcp\t\t\t\t# UNIX Listserv\nulistserv\t372/udp\nhttps\t\t443/tcp\t\t\t\t# MCom\nhttps\t\t443/udp\t\t\t\t# MCom\nsnpp\t\t444/tcp\t\t\t\t# Simple Network Paging Protocol\nsnpp\t\t444/udp\t\t\t\t# Simple Network Paging Protocol\nsaft\t\t487/tcp\t\t\t\t# Simple Asynchronous File Transfer\nsaft\t\t487/udp\t\t\t\t# Simple Asynchronous File Transfer\nnpmp-local\t610/tcp\t\tdqs313_qmaster\t# npmp-local / DQS\nnpmp-local\t610/udp\t\tdqs313_qmaster\t# npmp-local / DQS\nnpmp-gui\t611/tcp\t\tdqs313_execd\t# npmp-gui / DQS\nnpmp-gui\t611/udp\t\tdqs313_execd\t# npmp-gui / DQS\nhmmp-ind\t612/tcp\t\tdqs313_intercell# HMMP Indication / DQS\nhmmp-ind\t612/udp\t\tdqs313_intercell# HMMP Indication / DQS\n#\n# UNIX specific services\n#\nexec\t\t512/tcp\nbiff\t\t512/udp\t\tcomsat\nlogin\t\t513/tcp\nwho\t\t513/udp\t\twhod\nshell\t\t514/tcp\t\tcmd\t\t# no passwords used\nsyslog\t\t514/udp\nprinter\t\t515/tcp\t\tspooler\t\t# line printer spooler\ntalk\t\t517/udp\nntalk\t\t518/udp\nroute\t\t520/udp\t\trouter routed\t# RIP\ntimed\t\t525/udp\t\ttimeserver\ntempo\t\t526/tcp\t\tnewdate\ncourier\t\t530/tcp\t\trpc\nconference\t531/tcp\t\tchat\nnetnews\t\t532/tcp\t\treadnews\nnetwall\t\t533/udp\t\t\t\t# -for emergency broadcasts\nuucp\t\t540/tcp\t\tuucpd\t\t# uucp daemon\nafpovertcp\t548/tcp\t\t\t\t# AFP over TCP\nafpovertcp\t548/udp\t\t\t\t# AFP over TCP\nremotefs\t556/tcp\t\trfs_server rfs\t# Brunhoff remote filesystem\nklogin\t\t543/tcp\t\t\t\t# Kerberized `rlogin' (v5)\nkshell\t\t544/tcp\t\tkrcmd\t\t# Kerberized `rsh' (v5)\nkerberos-adm\t749/tcp\t\t\t\t# Kerberos `kadmin' (v5)\n#\nwebster\t\t765/tcp\t\t\t\t# Network dictionary\nwebster\t\t765/udp\n#\n# From ``Assigned Numbers'':\n#\n#> The Registered Ports are not controlled by the IANA and on most systems\n#> can be used by ordinary user processes or programs executed by ordinary\n#> users.\n#\n#> Ports are used in the TCP [45,106] to name the ends of logical\n#> connections which carry long term conversations.  For the purpose of\n#> providing services to unknown callers, a service contact port is\n#> defined.  This list specifies the port used by the server process as its\n#> contact port.  While the IANA can not control uses of these ports it\n#> does register or list uses of these ports as a convienence to the\n#> community.\n#\nnfsdstatus\t1110/tcp\nnfsd-keepalive\t1110/udp\n\ningreslock\t1524/tcp\ningreslock\t1524/udp\nprospero-np\t1525/tcp\t\t\t# Prospero non-privileged\nprospero-np\t1525/udp\ndatametrics\t1645/tcp\told-radius\t# datametrics / old radius entry\ndatametrics\t1645/udp\told-radius\t# datametrics / old radius entry\nsa-msg-port\t1646/tcp\told-radacct\t# sa-msg-port / old radacct entry\nsa-msg-port\t1646/udp\told-radacct\t# sa-msg-port / old radacct entry\nradius\t\t1812/tcp\t\t\t# Radius\nradius\t\t1812/udp\t\t\t# Radius\nradacct\t\t1813/tcp\t\t\t# Radius Accounting\nradacct\t\t1813/udp\t\t\t# Radius Accounting\nnfsd\t\t2049/tcp\tnfs\nnfsd\t\t2049/udp\tnfs\ncvspserver\t2401/tcp\t\t\t# CVS client/server operations\ncvspserver\t2401/udp\t\t\t# CVS client/server operations\nmysql\t\t3306/tcp\t\t\t# MySQL\nmysql\t\t3306/udp\t\t\t# MySQL\nrfe\t\t5002/tcp\t\t\t# Radio Free Ethernet\nrfe\t\t5002/udp\t\t\t# Actually uses UDP only\ncfengine\t5308/tcp\t\t\t# CFengine\ncfengine\t5308/udp\t\t\t# CFengine\nbbs\t\t7000/tcp\t\t\t# BBS service\n#\n#\n# Kerberos (Project Athena/MIT) services\n# Note that these are for Kerberos v4, and are unofficial.  Sites running\n# v4 should uncomment these and comment out the v5 entries above.\n#\nkerberos4\t750/udp\t\tkerberos-iv kdc\t# Kerberos (server) udp\nkerberos4\t750/tcp\t\tkerberos-iv kdc\t# Kerberos (server) tcp\nkerberos_master\t751/udp\t\t\t\t# Kerberos authentication\nkerberos_master\t751/tcp\t\t\t\t# Kerberos authentication\npasswd_server\t752/udp\t\t\t\t# Kerberos passwd server\nkrb_prop\t754/tcp\t\t\t\t# Kerberos slave propagation\nkrbupdate\t760/tcp\t\tkreg\t\t# Kerberos registration\nkpasswd\t\t761/tcp\t\tkpwd\t\t# Kerberos \"passwd\"\nkpop\t\t1109/tcp\t\t\t# Pop with Kerberos\nknetd\t\t2053/tcp\t\t\t# Kerberos de-multiplexor\nzephyr-srv\t2102/udp\t\t\t# Zephyr server\nzephyr-clt\t2103/udp\t\t\t# Zephyr serv-hm connection\nzephyr-hm\t2104/udp\t\t\t# Zephyr hostmanager\neklogin\t\t2105/tcp\t\t\t# Kerberos encrypted rlogin\n#\n# Unofficial but necessary (for NetBSD) services\n#\nsupfilesrv\t871/tcp\t\t\t\t# SUP server\nsupfiledbg\t1127/tcp\t\t\t# SUP debugging\n#\n# Datagram Delivery Protocol services\n#\nrtmp\t\t1/ddp\t\t\t\t# Routing Table Maintenance Protocol\nnbp\t\t2/ddp\t\t\t\t# Name Binding Protocol\necho\t\t4/ddp\t\t\t\t# AppleTalk Echo Protocol\nzip\t\t6/ddp\t\t\t\t# Zone Information Protocol\n#\n# Services added for the Debian GNU/Linux distribution\npoppassd\t106/tcp\t\t\t\t# Eudora\npoppassd\t106/udp\t\t\t\t# Eudora\nmailq\t\t174/tcp\t\t\t\t# Mailer transport queue for Zmailer\nmailq\t\t174/tcp\t\t\t\t# Mailer transport queue for Zmailer\nomirr\t\t808/tcp\t\tomirrd\t\t# online mirror\nomirr\t\t808/udp\t\tomirrd\t\t# online mirror\nrmtcfg\t\t1236/tcp\t\t\t# Gracilis Packeten remote config server\nxtel\t\t1313/tcp\t\t\t# french minitel\ncoda_opcons\t1355/udp\t\t\t# Coda opcons            (Coda fs)\ncoda_venus\t1363/udp\t\t\t# Coda venus             (Coda fs)\ncoda_auth\t1357/udp\t\t\t# Coda auth              (Coda fs)\ncoda_udpsrv\t1359/udp\t\t\t# Coda udpsrv            (Coda fs)\ncoda_filesrv\t1361/udp\t\t\t# Coda filesrv           (Coda fs)\ncodacon\t\t1423/tcp\tvenus.cmu\t# Coda Console           (Coda fs)\ncoda_aux1\t1431/tcp\t\t\t# coda auxiliary service (Coda fs)\ncoda_aux1\t1431/udp\t\t\t# coda auxiliary service (Coda fs)\ncoda_aux2\t1433/tcp\t\t\t# coda auxiliary service (Coda fs)\ncoda_aux2\t1433/udp\t\t\t# coda auxiliary service (Coda fs)\ncoda_aux3\t1435/tcp\t\t\t# coda auxiliary service (Coda fs)\ncoda_aux3\t1435/udp\t\t\t# coda auxiliary service (Coda fs)\ncfinger\t\t2003/tcp\t\t\t# GNU Finger\nafbackup\t2988/tcp\t\t\t# Afbackup system\nafbackup\t2988/udp\t\t\t# Afbackup system\nicp\t\t3130/tcp\t\t\t# Internet Cache Protocol (Squid)\nicp\t\t3130/udp\t\t\t# Internet Cache Protocol (Squid)\npostgres\t5432/tcp\t\t\t# POSTGRES\npostgres\t5432/udp\t\t\t# POSTGRES\nfax\t\t4557/tcp\t\t\t# FAX transmission service        (old)\nhylafax\t\t4559/tcp\t\t\t# HylaFAX client-server protocol  (new)\nnoclog\t\t5354/tcp\t\t\t# noclogd with TCP (nocol)\nnoclog\t\t5354/udp\t\t\t# noclogd with UDP (nocol)\nhostmon\t\t5355/tcp\t\t\t# hostmon uses TCP (nocol)\nhostmon\t\t5355/udp\t\t\t# hostmon uses TCP (nocol)\nircd\t\t6667/tcp\t\t\t# Internet Relay Chat\nircd\t\t6667/udp\t\t\t# Internet Relay Chat\nwebcache\t8080/tcp\t\t\t# WWW caching service\nwebcache\t8080/udp\t\t\t# WWW caching service\ntproxy\t\t8081/tcp\t\t\t# Transparent Proxy\ntproxy\t\t8081/udp\t\t\t# Transparent Proxy\nmandelspawn\t9359/udp\tmandelbrot\t# network mandelbrot\namanda\t\t10080/udp\t\t\t# amanda backup services\namandaidx\t10082/tcp\t\t\t# amanda backup services\namidxtape\t10083/tcp\t\t\t# amanda backup services\nisdnlog\t\t20011/tcp\t\t\t# isdn logging system\nisdnlog\t\t20011/udp\t\t\t# isdn logging system\nvboxd\t\t20012/tcp\t\t\t# voice box system\nvboxd\t\t20012/udp\t\t\t# voice box system\nbinkp           24554/tcp\t\t\t# Binkley\nbinkp           24554/udp\t\t\t# Binkley\nasp\t\t27374/tcp\t\t\t# Address Search Protocol\nasp\t\t27374/udp\t\t\t# Address Search Protocol\ntfido           60177/tcp\t\t\t# Ifmail\ntfido           60177/udp\t\t\t# Ifmail\nfido            60179/tcp\t\t\t# Ifmail\nfido            60179/udp\t\t\t# Ifmail\n\n# Local services\n\n"
  },
  {
    "path": "board/common/overlay/etc/ssh/sshd_config",
    "content": "ListenAddress 0.0.0.0\n\nPermitRootLogin yes\nPermitEmptyPasswords yes\nUseDNS no\nBanner /var/run/ssh/sshd_banner\n\nSubsystem sftp /usr/libexec/sftp-server\nIPQoS cs0 cs0\n\nKexAlgorithms sntrup761x25519-sha512@openssh.com,curve25519-sha256\n"
  },
  {
    "path": "board/common/overlay/etc/syslog.conf",
    "content": "syslog.=info /dev/null\n*.*;syslog.!info /var/log/messages\n"
  },
  {
    "path": "board/common/overlay/etc/udev/rules.d/61-usb-storage.rules",
    "content": "SUBSYSTEMS==\"scsi\", ACTION==\"add\", ENV{ID_FS_TYPE}==\"vfat|ext2|ext3|ext4\" RUN+=\"/bin/mkdir -p /data/media/%k\", RUN+=\"/bin/mount /dev/%k /data/media/%k\"\nSUBSYSTEMS==\"scsi\", ACTION==\"remove\", ENV{ID_FS_TYPE}==\"vfat|ext2|ext3|ext4\" RUN+=\"/bin/umount /data/media/%k\" RUN+=\"/bin/rmdir /data/media/%k\"\nSUBSYSTEMS==\"scsi\", ACTION==\"add\", ENV{ID_FS_TYPE}==\"ntfs\" RUN+=\"/bin/mkdir -p /data/media/%k\", RUN+=\"/usr/bin/ntfs-3g /dev/%k /data/media/%k\"\nSUBSYSTEMS==\"scsi\", ACTION==\"remove\", ENV{ID_FS_TYPE}==\"ntfs\" RUN+=\"/bin/umount /data/media/%k\" RUN+=\"/bin/rmdir /data/media/%k\"\n"
  },
  {
    "path": "board/common/overlay/etc/version",
    "content": "OS_NAME=\"thingOS\"\nOS_SHORT_NAME=\"thingos\"\nOS_PREFIX=\"thing\"\nOS_VERSION=\"unknown\"\n"
  },
  {
    "path": "board/common/overlay/etc/wpa_supplicant.conf",
    "content": "update_config=1\nctrl_interface=/var/run/wpa_supplicant\n\nnetwork={\n    scan_ssid=1\n}\n"
  },
  {
    "path": "board/common/overlay/sbin/dhclient-script",
    "content": "#!/bin/bash\n\nmake_resolv_conf() {\n    # ignore DNS if explicitly not requested in conf file\n    grep -q request /var/cache/dhclient.conf.${interface} &>/dev/null && return\n\n    resolv_conf=/etc/resolv.conf\n    echo -n > $resolv_conf\n    # DHCPv4\n    if [ -n \"$new_domain_search\" ] || [ -n \"$new_domain_name\" ] ||\n       [ -n \"$new_domain_name_servers\" ]; then\n        if [ -n \"$new_domain_name\" ]; then\n            echo domain ${new_domain_name%% *} >>$resolv_conf\n        fi\n\n        if [ -n \"$new_domain_search\" ]; then\n            if [ -n \"$new_domain_name\" ]; then\n                domain_in_search_list=\"\"\n                for domain in $new_domain_search; do\n                    if [ \"$domain\" = \"${new_domain_name}\" ] ||\n                       [ \"$domain\" = \"${new_domain_name}.\" ]; then\n                        domain_in_search_list=\"Yes\"\n                    fi\n                done\n                if [ -z \"$domain_in_search_list\" ]; then\n                    new_domain_search=\"$new_domain_name $new_domain_search\"\n                fi\n            fi\n            echo \"search ${new_domain_search}\" >> $resolv_conf\n        elif [ -n \"$new_domain_name\" ]; then\n            echo \"search ${new_domain_name}\" >> $resolv_conf\n        fi\n\n        if [ -n \"$new_domain_name_servers\" ]; then\n            for nameserver in $new_domain_name_servers; do\n                echo nameserver $nameserver >>$resolv_conf\n            done\n        else # keep 'old' nameservers\n            sed -n /^\\w*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p /etc/resolv.conf >>$resolv_conf\n        fi\n    # DHCPv6\n    elif [ -n \"$new_dhcp6_domain_search\" ] || [ -n \"$new_dhcp6_name_servers\" ]; then\n        if [ -n \"$new_dhcp6_domain_search\" ]; then\n            echo \"search ${new_dhcp6_domain_search}\" >> $resolv_conf\n        fi\n\n        if [ -n \"$new_dhcp6_name_servers\" ]; then\n            for nameserver in $new_dhcp6_name_servers; do\n                # append %interface to link-local-address nameservers\n                if [ \"${nameserver##fe80::}\" != \"$nameserver\" ] ||\n                   [ \"${nameserver##FE80::}\" != \"$nameserver\" ]; then\n                    nameserver=\"${nameserver}%${interface}\"\n                fi\n                echo nameserver $nameserver >>$resolv_conf\n            done\n        else # keep 'old' nameservers\n            sed -n /^\\w*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p /etc/resolv.conf >>$resolv_conf\n        fi\n    fi\n}\n\n# set host name\nset_hostname() {\n    local current_hostname\n\n    if [ -n \"$new_host_name\" ]; then\n        current_hostname=$(hostname)\n\n        # current host name is empty, '(none)' or 'localhost' or differs from new one from DHCP\n        if [ -z \"$current_hostname\" ] ||\n           [ \"$current_hostname\" = '(none)' ] ||\n           [ \"$current_hostname\" = 'localhost' ] ||\n           [ \"$current_hostname\" = \"$old_host_name\" ]; then\n           if [ \"$new_host_name\" != \"$old_host_name\" ]; then\n               hostname \"$new_host_name\"\n           fi\n        fi\n    fi\n}\n\n# Must be used on exit. Invokes the local dhcp client exit hooks, if any.\nexit_with_hooks() {\n  exit_status=$1\n  if [ -f /etc/dhclient-exit-hooks ]; then\n    . /etc/dhclient-exit-hooks\n  fi\n  exit $exit_status\n}\n\n# The 576 MTU is only used for X.25 and dialup connections\n# where the admin wants low latency.  Such a low MTU can cause\n# problems with UDP traffic, among other things.  As such,\n# disallow MTUs from 576 and below by default, so that broken\n# MTUs are ignored, but higher stuff is allowed (1492, 1500, etc).\nif [ -z \"$new_interface_mtu\" ] || [ \"$new_interface_mtu\" -le 576 ]; then\n    new_interface_mtu=''\nfi\n\n# The action starts here\n\n# Invoke the local dhcp client enter hooks, if they exist.\nif [ -f /etc/dhclient-enter-hooks ]; then\n  exit_status=0\n  . /etc/dhclient-enter-hooks\n  if [ $exit_status -ne 0 ]; then\n    exit $exit_status\n  fi\nfi\n\n# Execute the operation\ncase \"$reason\" in\n\n    ### DHCPv4 Handlers\n\n    MEDIUM|ARPCHECK|ARPSEND)\n        # Do nothing\n        ;;\n    PREINIT)\n        # The DHCP client is requesting that an interface be\n        # configured as required in order to send packets prior to\n        # receiving an actual address. - dhclient-script(8)\n\n        # ensure interface is up\n        ip link set dev ${interface} up\n\n        if [ -n \"$alias_ip_address\" ]; then\n            # flush alias IP from interface\n            ip -4 addr flush dev ${interface} label ${interface}:0\n        fi\n\n        ;;\n\n    BOUND|RENEW|REBIND|REBOOT)\n        set_hostname\n\n        if [ -n \"$old_ip_address\" ] && [ -n \"$alias_ip_address\" ] &&\n           [ \"$alias_ip_address\" != \"$old_ip_address\" ]; then\n            # alias IP may have changed => flush it\n            ip -4 addr flush dev ${interface} label ${interface}:0\n        fi\n\n        if [ -n \"$old_ip_address\" ] &&\n           [ \"$old_ip_address\" != \"$new_ip_address\" ]; then\n            # leased IP has changed => flush it\n            ip -4 addr flush dev ${interface} label ${interface}\n        fi\n\n        if [ -z \"$old_ip_address\" ] ||\n           [ \"$old_ip_address\" != \"$new_ip_address\" ] ||\n           [ \"$reason\" = \"BOUND\" ] || [ \"$reason\" = \"REBOOT\" ]; then\n            # new IP has been leased or leased IP changed => set it\n            ip -4 addr add ${new_ip_address}${new_subnet_mask:+/$new_subnet_mask} \\\n                ${new_broadcast_address:+broadcast $new_broadcast_address} \\\n                dev ${interface} label ${interface}\n\n            if [ -n \"$new_interface_mtu\" ]; then\n                # set MTU\n                ip link set dev ${interface} mtu ${new_interface_mtu}\n            fi\n\n            # set if_metric if IF_METRIC is set or there's more than one router\n            if_metric=\"$IF_METRIC\"\n            if [ \"${new_routers%% *}\" != \"${new_routers}\" ]; then\n                if_metric=${if_metric:-1}\n            fi\n\n            for router in $new_routers; do\n                # ignore routes if explicitly not requested in conf file\n                grep -q request /var/cache/dhclient.conf.${interface} &>/dev/null && continue\n            \n                if [ \"$new_subnet_mask\" = \"255.255.255.255\" ]; then\n                    # point-to-point connection => set explicit route\n                    ip -4 route add ${router} dev $interface >/dev/null 2>&1\n                fi\n\n                # set default route\n                ip -4 route add default via ${router} dev ${interface} \\\n                    ${if_metric:+metric $if_metric} >/dev/null 2>&1\n\n                if [ -n \"$if_metric\" ]; then\n                    if_metric=$((if_metric+1))\n                fi\n            done\n        fi\n\n        if [ -n \"$alias_ip_address\" ] &&\n           [ \"$new_ip_address\" != \"$alias_ip_address\" ]; then\n            # separate alias IP given, which may have changed\n            # => flush it, set it & add host route to it\n            ip -4 addr flush dev ${interface} label ${interface}:0\n            ip -4 addr add ${alias_ip_address}${alias_subnet_mask:+/$alias_subnet_mask} \\\n                dev ${interface} label ${interface}:0\n            ip -4 route add ${alias_ip_address} dev ${interface} >/dev/null 2>&1\n        fi\n\n        # update /etc/resolv.conf\n        make_resolv_conf\n\n        ;;\n\n    EXPIRE|FAIL|RELEASE|STOP)\n        if [ -n \"$alias_ip_address\" ]; then\n            # flush alias IP\n            ip -4 addr flush dev ${interface} label ${interface}:0\n        fi\n\n        if [ -n \"$old_ip_address\" ]; then\n            # flush leased IP\n            ip -4 addr flush dev ${interface} label ${interface}\n        fi\n\n        if [ -n \"$alias_ip_address\" ]; then\n            # alias IP given => set it & add host route to it\n            ip -4 addr add ${alias_ip_address}${alias_network_arg} \\\n                dev ${interface} label ${interface}:0\n            ip -4 route add ${alias_ip_address} dev ${interface} >/dev/null 2>&1\n        fi\n\n        ;;\n\n    TIMEOUT)\n        if [ -n \"$alias_ip_address\" ]; then\n            # flush alias IP\n            ip -4 addr flush dev ${interface} label ${interface}:0\n        fi\n\n        # set IP from recorded lease\n        ip -4 addr add ${new_ip_address}${new_subnet_mask:+/$new_subnet_mask} \\\n            ${new_broadcast_address:+broadcast $new_broadcast_address} \\\n            dev ${interface} label ${interface}\n\n        if [ -n \"$new_interface_mtu\" ]; then\n            # set MTU\n            ip link set dev ${interface} mtu ${new_interface_mtu}\n        fi\n\n        # if there is no router recorded in the lease or the 1st router answers pings\n        if [ -z \"$new_routers\" ] || ping -q -c 1 \"${new_routers%% *}\"; then\n            if [ -n \"$alias_ip_address\" ] &&\n               [ \"$new_ip_address\" != \"$alias_ip_address\" ]; then\n                # separate alias IP given => set up the alias IP & add host route to it\n                ip -4 addr add ${alias_ip_address}${alias_subnet_mask:+/$alias_subnet_mask} \\\n                    dev ${interface} label ${interface}:0\n                ip -4 route add ${alias_ip_address} dev ${interface} >/dev/null 2>&1\n            fi\n\n            # set if_metric if IF_METRIC is set or there's more than one router\n            if_metric=\"$IF_METRIC\"\n            if [ \"${new_routers%% *}\" != \"${new_routers}\" ]; then\n                if_metric=${if_metric:-1}\n            fi\n\n            # set default route\n            for router in $new_routers; do\n                ip -4 route add default via ${router} dev ${interface} \\\n                    ${if_metric:+metric $if_metric} >/dev/null 2>&1\n\n                if [ -n \"$if_metric\" ]; then\n                    if_metric=$((if_metric+1))\n                fi\n            done\n\n            # update /etc/resolv.conf\n            make_resolv_conf\n        else\n            # flush all IPs from interface\n            ip -4 addr flush dev ${interface}\n            exit_with_hooks 1\n        fi\n\n        ;;\n\n    ### DHCPv6 Handlers\n    # TODO handle prefix change: ?based on ${old_ip6_prefix} and ${new_ip6_prefix}?\n\n    PREINIT6)\n        # ensure interface is up\n        ip link set ${interface} up\n\n        # flush any stale global permanent IPs from interface\n        ip -6 addr flush dev ${interface} scope global permanent\n\n        ;;\n\n    BOUND6|RENEW6|REBIND6)\n        if [ \"${new_ip6_address}\" ] && [ \"${new_ip6_prefixlen}\" ]; then\n            # set leased IP\n            ip -6 addr add ${new_ip6_address}/${new_ip6_prefixlen} \\\n                dev ${interface} scope global\n        fi\n\n        # update /etc/resolv.conf\n        if [ \"${reason}\" = BOUND6 ] ||\n           [ \"${new_dhcp6_name_servers}\" != \"${old_dhcp6_name_servers}\" ] ||\n           [ \"${new_dhcp6_domain_search}\" != \"${old_dhcp6_domain_search}\" ]; then\n            make_resolv_conf\n        fi\n\n        ;;\n\n    DEPREF6)\n        if [ -z \"${cur_ip6_prefixlen}\" ]; then\n            exit_with_hooks 1\n        fi\n\n        # set preferred lifetime of leased IP to 0\n        ip -6 addr change ${cur_ip6_address}/${cur_ip6_prefixlen} \\\n            dev ${interface} scope global preferred_lft 0\n\n        ;;\n\n    EXPIRE6|RELEASE6|STOP6)\n        if [ -z \"${old_ip6_address}\" ] || [ -z \"${old_ip6_prefixlen}\" ]; then\n            exit_with_hooks 1\n        fi\n\n        # delete leased IP\n        ip -6 addr del ${old_ip6_address}/${old_ip6_prefixlen} \\\n            dev ${interface}\n\n        ;;\nesac\n\nexit_with_hooks 0\n\n"
  },
  {
    "path": "board/common/overlay/sbin/fwupdate",
    "content": "#!/bin/bash\n\n\n#### Usage ####\n\nfunction exit_usage() {\n    echo \"Manage the OS firmware on this device.\"\n    echo \"\"\n    echo \"Usage:\"\n    echo \"       fwupdate current\"\n    echo \"           shows the current version\"\n    echo \"       fwupdate latest\"\n    echo \"           shows the latest available version with details\"\n    echo \"       fwupdate list [<stable|beta|all>]\"\n    echo \"           list available firmware versions\"\n    echo \"       fwupdate download <version|latest|url|file>\"\n    echo \"           downloads a specific firmware OS image\"\n    echo \"       fwupdate extract\"\n    echo \"           extracts the downloaded firmware archive\"\n    echo \"       fwupdate flashboot\"\n    echo \"           flashes the boot partition from extracted image\"\n    echo \"       fwupdate flashreboot\"\n    echo \"           prepares for reboot + root partition flashing\"\n    echo \"       fwupdate status\"\n    echo \"           shows the current firmware installing process status; see below\"\n    echo \"       fwupdate install <version|latest|url|file>\"\n    echo \"           performs all the operations necessary for installing a certain firmware version\"\n    echo \"       fwupdate auto [on|off]\"\n    echo \"           controls the automatic firmware update mechanism\"\n    echo \"       fwupdate prereleases [on|off]\"\n    echo \"           enables or disables prereleases (beta) channel\"\n    echo \"\"\n    echo \"Statuses:\"\n    echo \"       idle\"\n    echo \"       downloading [version]\"\n    echo \"       downloaded [version]\"\n    echo \"       extracting [version]\"\n    echo \"       extracted [version]\"\n    echo \"       flashing boot [version]\"\n    echo \"       boot flashed [version]\"\n    echo \"       rebooting [version]\"\n    echo \"\"\n\n    exit 1\n}\n\nif [[ -z \"$1\" ]]; then\n    exit_usage\nfi\n\n#### Configuration ####\n\nset -a\nset -e\n\nLATEST_VERSION_CMD=/usr/libexec/os-latest-version\n\nMIN_FREE_DISK=500  # MB\nDISK_CLEANUP_SCRIPT=/usr/libexec/disk-cleanup\nFW_DIR=/data/.fwupdate\n\nFW_FILE_GZ=${FW_DIR}/firmware.img.gz\nFW_FILE_XZ=${FW_DIR}/firmware.img.xz\nFW_FILE_EXTR=${FW_DIR}/firmware.img\n\nVER_FILE=${FW_DIR}/version\n\nBOOT_INFO_FILE=${FW_DIR}/boot_info\nROOT_INFO_FILE=${FW_DIR}/root_info\n\nDOWNLOAD_STARTED_FILE=${FW_DIR}/download_started\nDOWNLOAD_DONE_FILE=${FW_DIR}/download_done\nEXTRACT_STARTED_FILE=${FW_DIR}/extract_started\nEXTRACT_DONE_FILE=${FW_DIR}/extract_done\nFLASH_BOOT_STARTED_FILE=${FW_DIR}/flash_boot_started\nFLASH_BOOT_DONE_FILE=${FW_DIR}/flash_boot_done\nFLASH_REBOOT_STARTED_FILE=${FW_DIR}/flash_reboot_started\nERROR_FILE=${FW_DIR}/error\n\n\nTMP_BOOT_DIR=/tmp/fwupdate_boot\nTMP_ROOT_DIR=/tmp/fwupdate_root\n\nCURL_LOG_FILE=${FW_DIR}/curl.log\nCURL_PID_FILE=${FW_DIR}/curl.pid\n\nGUNZIP_LOG_FILE=${FW_DIR}/gunzip.log\nGUNZIP_PID_FILE=${FW_DIR}/gunzip.pid\n\nXZCAT_LOG_FILE=${FW_DIR}/xzcat.log\nXZCAT_PID_FILE=${FW_DIR}/xzcat.pid\n\nDD_LOG_FILE=${FW_DIR}/dd.log\nDD_PID_FILE=${FW_DIR}/dd.pid\n\nBOOT_LOOP=\"/dev/loop3\"\nROOT_LOOP=\"/dev/loop4\"\n\nboot_mounted_rw=false\n\nsource /etc/init.d/base\n\n#### Utils ####\n\nfunction expand_placeholders() {\n    # $1 - template with placeholders\n    # $2 - optional version\n    echo \"$1\" | \\\n        sed \"s,\\${platform},${BOARD_NAME},g\" | \\\n        sed \"s,\\${os_prefix},${OS_PREFIX},g\" | \\\n        sed \"s,\\${os_short_name},${OS_SHORT_NAME},g\" | \\\n        sed \"s,\\${version},$2,g\"\n}\n\n\n#### Cleanup on exit ####\n\nfunction cleanup_on_exit() {\n    set +e\n\n    echo \"cleaning up\"\n\n    if [[ -f /sbin/reboot.bak ]]; then\n        rm -f /sbin/reboot\n        mv /sbin/reboot.bak /sbin/reboot\n    fi\n\n    umount ${TMP_BOOT_DIR} 2>/dev/null\n    umount ${TMP_ROOT_DIR} 2>/dev/null\n    losetup -d ${BOOT_LOOP} 2>/dev/null\n    losetup -d ${ROOT_LOOP} 2>/dev/null\n\n    if [[ ${boot_mounted_rw} == true ]]; then\n        mount -T /tmp/fstab.disk /boot 2>/dev/null\n        mount -o remount,ro /boot\n    fi\n    \n    # remove *started files since corresponding processes have normally exited\n    rm -f ${DOWNLOAD_STARTED_FILE}\n    rm -f ${EXTRACT_STARTED_FILE}\n    rm -f ${FLASH_BOOT_STARTED_FILE}\n    rm -f ${FLASH_REBOOT_STARTED_FILE}\n}\n\n\n#### Disk & partition devices ####\n\nsource /tmp/disk_info\n\nfunction reallocate_boot_part() {\n    current_boot_info=$(fdisk --bytes -l -o device,start,end,size ${DISK_DEV} | grep \"${BOOT_DEV}\")\n    current_boot_info=(${current_boot_info})\n\n    current_root_info=$(fdisk --bytes -l -o device,start,end,size ${DISK_DEV} | grep \"${ROOT_DEV}\")\n    current_root_info=(${current_root_info})\n\n    boot_info=($(cat ${BOOT_INFO_FILE}))\n\n    if [[ ${current_boot_info[1]} == ${boot_info[0]} ]] &&\n       [[ ${current_boot_info[3]} -ge $((${boot_info[2]} * 512)) ]]; then\n\n        return  # all good\n    fi\n\n    echo \"reallocating boot partition\"\n\n    # check overlapping with root partition\n    if [[ ${boot_info[1]} -ge ${current_root_info[1]} ]]; then\n        echo \"cannot reallocate boot partition: will overlap with root\"\n        return 1\n    fi\n\n    fdisk -w auto ${DISK_DEV} >/dev/null <<END\nd\n1\nn\np\n1\n${boot_info[0]}\n${boot_info[1]}\nt\n1\nc\nw\nEND\n    sync\n}\n\nfunction reallocate_root_part() {\n    current_root_info=$(fdisk --bytes -l -o device,start,end,size ${DISK_DEV} | grep \"${ROOT_DEV}\")\n    current_root_info=(${current_root_info})\n\n    current_data_info=$(fdisk --bytes -l -o device,start,end,size ${DISK_DEV} | grep \"${DATA_DEV}\")\n    current_data_info=(${current_data_info})\n\n    root_info=($(cat ${ROOT_INFO_FILE}))\n\n    if [[ ${current_root_info[1]} == ${root_info[0]} ]] &&\n       [[ ${current_root_info[3]} -ge $((${root_info[2]} * 512)) ]]; then\n\n        return  # all good\n    fi\n\n    echo \"reallocating root partition\"\n\n    # check overlapping with data partition\n    if [[ ${root_info[1]} -ge ${current_data_info[1]} ]]; then\n        echo \"cannot reallocate root partition: will overlap with data\"\n        return 1\n    fi\n\n    fdisk -w auto ${DISK_DEV} >/dev/null <<END\nd\n2\nn\np\n2\n${root_info[0]}\n${root_info[1]}\nt\n2\n83\nw\nEND\n    sync\n}\n\n\n#### Current version ####\n\nfunction show_current() {\n    echo ${OS_VERSION}\n}\n\n\n#### Latest version ####\n\nfunction show_latest() {\n    if [[ ${OS_PRERELEASES} == true ]]; then\n        os_firmware_latest=${OS_FIRMWARE_LATEST_BETA}\n    else\n        os_firmware_latest=${OS_FIRMWARE_LATEST_STABLE}\n    fi\n\n    if [[ -n \"${os_firmware_latest}\" ]]; then\n        os_firmware_latest=$(expand_placeholders ${os_firmware_latest})\n        latest=$(curl --fail -sSL ${os_firmware_latest})\n        latest=$(jq -r '.url,.path,.version,.date' <<< \"${latest}\")\n        latest=(${latest})\n        url=${latest[0]}\n        path=${latest[1]}\n        version=${latest[2]}\n        date=${latest[3]}\n        if [[ \"${url}\" == null ]]; then\n            url=\"$(cut -d / -f 1,2,3 <<< ${os_firmware_latest})${path}\"\n        fi\n        url=$(expand_placeholders ${url})\n    else\n        # Command specified by ${LATEST_VERSION_CMD} returns two lines:\n        # * the first one is the stable version\n        # * the second one being the \"beta\" version\n        # Each line contains three space-separated fields, representing:\n        #  * the version name\n        #  * download URL\n        #  * release date\n        IFS=$'\\n' version_lines=($(${LATEST_VERSION_CMD})); unset IFS\n        if [[ ${OS_PRERELEASES} == true ]]; then\n            version_line=(${version_lines[1]:-${version_lines[0]}})\n        else\n            version_line=(${version_lines[0]})\n        fi\n\n        version=${version_line[0]}\n        url=${version_line[1]}\n        date=${version_line[2]}\n    fi\n\n    echo \"${version}  ${url}  ${date}\"\n}\n\n\n#### Show all versions ####\n\nfunction list_versions() {\n    check_versions=${1,,}\n    if [[ -z ${check_versions} ]]; then\n        if [[ ${OS_PRERELEASES} == true ]]; then\n            check_versions=\"all\"\n        else\n            check_versions=\"stable\"\n        fi\n    fi\n\n    versions_stable=\"[]\"\n    if [[ ${check_versions} == \"stable\" || ${check_versions} == \"all\" ]]; then\n      # get stable versions\n      url=$(expand_placeholders ${OS_FIRMWARE_VERSIONS_STABLE})\n      versions_stable=$(curl --fail -sSL ${url})\n    fi\n\n    versions_beta=\"[]\"\n    if [[ ${check_versions} == \"beta\" || ${check_versions} == \"all\" ]]; then\n      # get beta versions\n      url=$(expand_placeholders ${OS_FIRMWARE_VERSIONS_BETA})\n      versions_beta=$(curl --fail -sSL ${url})\n    fi\n\n    versions_all=$(echo -e \"${versions_stable}\\n${versions_beta}\" | jq -s 'add')\n\n    jq -r '.[] | [ .version, .date, .url ] | @tsv' <<< ${versions_all} | semver-sort -k 1 -t $'\\t' -r\n}\n\n\n#### Download ####\n\nfunction do_download() {\n    rm -rf ${FW_DIR}/*\n    mkdir -p ${FW_DIR}\n\n    rm -f ${DOWNLOAD_DONE_FILE}\n    rm -f ${EXTRACT_STARTED_FILE}\n    rm -f ${EXTRACT_DONE_FILE}\n    rm -f ${FLASH_BOOT_STARTED_FILE}\n    rm -f ${FLASH_BOOT_DONE_FILE}\n    rm -f ${FLASH_REBOOT_STARTED_FILE}\n    rm -f ${ERROR_FILE}\n\n    trap cleanup_on_exit EXIT\n\n    # Look for local file first\n    if [[ -f \"$1\" ]]; then\n        version=\"custom\"\n        FNAME=`basename $1`\n        FILEEXT=${FNAME##*.}\n        DST_FNAME=\"\"\n        if [[ \"${FILEEXT}\" == \"xz\" ]]; then\n            DST_FNAME=${FW_FILE_XZ}\n        elif [[ \"${FILEEXT}\" == \"gz\" ]]; then\n            DST_FNAME=${FW_FILE_GZ}\n        fi\n        if [[ -n \"${DST_FNAME}\" ]]; then\n            cp -f $1 ${DST_FNAME}\n            echo ${version} > ${VER_FILE}\n            touch ${DOWNLOAD_DONE_FILE}\n            return\n        fi\n    fi\n\n    if [[ \"$1\" == latest ]]; then\n        latest=($(show_latest | tr -s ' '))\n        version=${latest[0]}\n        url=${latest[1]}\n    elif [[ \"$1\" == http* ]]; then  # a URL\n        version=\"custom\"\n        url=$1\n    elif [[ -n \"${OS_FIRMWARE_URL}\" ]]; then\n        version=$1\n        url=$(expand_placeholders ${OS_FIRMWARE_URL} ${version})\n    else\n        echo \"Variable OS_FIRMWARE_URL is not defined\"\n        exit 1\n    fi\n\n    echo \"downloading ${version} from ${url}\"\n    \n    free_disk=$(df /data | tail -n 1 | tr -s ' ' | cut -d ' ' -f 4)\n    if [[ \"${free_disk}\" -lt $((MIN_FREE_DISK * 1024)) ]]; then\n        echo \"not enough disk space\" | tee 1>&2 ${ERROR_FILE}\n        if [[ -x ${DISK_CLEANUP_SCRIPT} ]]; then\n            echo \"running the cleanup script\" | tee 1>&2 ${ERROR_FILE}\n            ${DISK_CLEANUP_SCRIPT}\n        else\n            rm ${DOWNLOAD_STARTED_FILE}\n            exit 1\n        fi\n    fi\n\n    outfile=${FW_FILE_GZ}\n    format=$(echo ${url} | sed -rn 's/.*\\.img\\.([a-z]+)$/\\1/ p')\n    if [[ \"${format}\" == \"xz\" ]]; then\n        outfile=${FW_FILE_XZ}\n    fi\n\n    echo ${version} > ${VER_FILE}\n    touch ${DOWNLOAD_STARTED_FILE}\n\n    curl_opts=\"-S -f -L\"\n    curl ${curl_opts} -o ${outfile} \"${url}\" &> ${CURL_LOG_FILE} &\n    pid=$!\n    echo ${pid} > ${CURL_PID_FILE}\n\n    set +e  # don't exit on error\n    wait ${pid}\n\n    if [[ \"$?\" != 0 ]]; then\n        echo \"download failed\" | tee 1>&2 ${ERROR_FILE}\n        rm ${DOWNLOAD_STARTED_FILE}\n        exit 1\n    fi\n\n    touch ${DOWNLOAD_DONE_FILE}\n    set -e\n}\n\n\n#### Extract ####\n\nfunction run_pre_upgrade() {\n    which losetup &>/dev/null || return 0\n\n    boot_info=($(cat ${BOOT_INFO_FILE}))\n    root_info=($(cat ${ROOT_INFO_FILE}))\n    pre_upgrade=\"${TMP_ROOT_DIR}/usr/share/pre-upgrade\"\n\n    mkdir -p ${TMP_BOOT_DIR}\n    mkdir -p ${TMP_ROOT_DIR}\n    losetup -o $((boot_info[0] * 512)) ${BOOT_LOOP} ${FW_FILE_EXTR}\n    losetup -o $((root_info[0] * 512)) ${ROOT_LOOP} ${FW_FILE_EXTR}\n    mount ${BOOT_LOOP} ${TMP_BOOT_DIR}\n    mount ${ROOT_LOOP} ${TMP_ROOT_DIR}\n    \n    if [[ -f ${TMP_ROOT_DIR}/usr/libexec/fw-restore-boot-cfg ]]; then\n        cp ${TMP_ROOT_DIR}/usr/libexec/fw-restore-boot-cfg /usr/libexec/fw-restore-boot-cfg\n    else\n        rm -f /usr/libexec/fw-restore-boot-cfg\n    fi\n\n    if [[ -d ${pre_upgrade} ]]; then\n        for script in ${pre_upgrade}/*.sh; do\n            echo \"running pre-upgrade script $(basename ${script})\"\n            if [[ -x ${script} ]] && ! ${script}; then\n                # Non-zero exit status of pre-upgrade script indicates that\n                # the upgrade process must not be continued\n\n                echo \"aborted by pre-upgrade script\" | tee 1>&2 ${ERROR_FILE}\n                return 1\n            fi\n        done\n    fi\n\n    umount ${TMP_BOOT_DIR}\n    umount ${TMP_ROOT_DIR}\n    losetup -d ${BOOT_LOOP}\n    losetup -d ${ROOT_LOOP}\n}\n\nfunction do_extract() {\n    if ! [[ -f ${FW_FILE_GZ} || -f ${FW_FILE_XZ} ]] || ! [[ -f ${DOWNLOAD_DONE_FILE} ]]; then\n        echo \"firmware file not downloaded\" | tee 1>&2 ${ERROR_FILE}\n        exit 1\n    fi\n\n    rm -f ${EXTRACT_DONE_FILE}\n    rm -f ${FLASH_BOOT_STARTED_FILE}\n    rm -f ${FLASH_BOOT_DONE_FILE}\n    rm -f ${FLASH_REBOOT_STARTED_FILE}\n    rm -f ${ERROR_FILE}\n    rm -f ${FW_FILE_EXTR}\n    touch ${EXTRACT_STARTED_FILE}\n\n    echo \"extracting\"\n\n    trap cleanup_on_exit EXIT\n\n    format=\"gz\"\n    if [[ -f ${FW_FILE_XZ} ]]; then\n        format=\"xz\"\n    fi\n\n    rm -f ${FW_FILE_EXTR}\n    rm -f ${GUNZIP_PID_FILE} ${XZCAT_PID_FILE}\n\n    if [[ \"${format}\" == \"xz\" ]]; then\n        DECOMPRESS_LOG_FILE=${XZCAT_LOG_FILE}\n        DECOMPRESS_PID_FILE=${XZCAT_PID_FILE}\n        xzcat ${FW_FILE_XZ} > ${FW_FILE_EXTR} 2>${XZCAT_LOG_FILE} &\n    elif [[ \"${format}\" == \"gz\" ]]; then\n        DECOMPRESS_LOG_FILE=${GUNZIP_LOG_FILE}\n        DECOMPRESS_PID_FILE=${GUNZIP_PID_FILE}\n        gunzip -k -c ${FW_FILE_GZ} > ${FW_FILE_EXTR} 2>${GUNZIP_LOG_FILE} &\n    else\n        echo \"firmware compression format ${format} not supported\" 1>&2 | tee 1>&2 ${ERROR_FILE}\n        exit 1\n    fi\n\n    pid=$!\n    echo ${pid} > ${DECOMPRESS_PID_FILE}\n    wait ${pid}\n\n    if [[ \"$?\" != 0 ]]; then\n        cat ${DECOMPRESS_LOG_FILE}\n        exit 1\n    fi\n\n    # TODO verify hash\n\n    root_part_no=$(echo ${ROOT_DEV} | grep -oE '[0-9]$')\n    boot_info=$(fdisk --bytes -l -o device,start,end,size ${FW_FILE_EXTR} | grep \"${FW_FILE_EXTR}$(( root_part_no - 1 ))\")\n    boot_info=(${boot_info})\n    boot_start=${boot_info[1]}\n    boot_end=${boot_info[2]}\n    boot_size=$((boot_info[3] / 512))\n\n    root_info=$(fdisk --bytes -l -o device,start,end,size ${FW_FILE_EXTR} | grep \"${FW_FILE_EXTR}${root_part_no}\")\n    root_info=(${root_info})\n    root_start=${root_info[1]}\n    root_end=${root_info[2]}\n    root_size=$((root_info[3] / 512))\n\n    echo ${boot_start} ${boot_end} ${boot_size} > ${BOOT_INFO_FILE}\n    echo ${root_start} ${root_end} ${root_size} > ${ROOT_INFO_FILE}\n\n    run_pre_upgrade\n\n    touch ${EXTRACT_DONE_FILE}\n}\n\n\n#### Flash boot ####\n\nfunction do_flash_boot() {\n    if ! [[ -f ${FW_FILE_EXTR} ]] || ! [[ -f ${EXTRACT_DONE_FILE} ]]; then\n        echo \"extracted firmware not present\" | tee 1>&2 ${ERROR_FILE}\n        return 1\n    fi\n\n    rm -f ${FLASH_BOOT_DONE_FILE}\n    rm -f ${FLASH_REBOOT_STARTED_FILE}\n    rm -f ${ERROR_FILE}\n    touch ${FLASH_BOOT_STARTED_FILE}\n\n    echo \"flashing boot\"\n\n    trap cleanup_on_exit EXIT\n\n    boot_info=($(cat ${BOOT_INFO_FILE}))\n\n    cp -r /boot ${FW_DIR}/old_boot\n    umount /boot\n    \n    # Prevent unwanted reboots during firmware install\n    panic inhibit\n    mount -o remount,rw /\n    mv /sbin/reboot /sbin/reboot.bak\n    ln -s /bin/true /sbin/reboot\n\n    reallocate_boot_part\n\n    dd if=${FW_FILE_EXTR} \\\n       skip=$((boot_info[0] / 2048)) \\\n       of=${BOOT_DEV} bs=1048576 \\\n       count=$((boot_info[2] / 2048)) &>${DD_LOG_FILE} &\n    pid=$!\n    echo ${pid} > ${DD_PID_FILE}\n    wait ${pid}\n\n    mount -T /tmp/fstab.disk /boot\n    mount -o remount,rw /boot\n    boot_mounted_rw=true\n\n    # The /boot/factory-defaults.tar.xz file is always preserved across updates\n    if [[ -s ${FW_DIR}/old_boot/factory-defaults.tar.xz ]]; then\n        cp ${FW_DIR}/old_boot/factory-defaults.tar.xz /boot\n    fi\n\n    # The /usr/libexec/fw-restore-boot-cfg script, if present, takes the old (backup) boot dir as argument\n    # and should restore any /boot configuration that needs to be preserved across updates\n    # from the old boot dir to the current (new) /boot dir\n    if [[ -x /usr/libexec/fw-restore-boot-cfg ]]; then\n        /usr/libexec/fw-restore-boot-cfg ${FW_DIR}/old_boot 2>/dev/null || true\n    fi\n\n    touch ${FLASH_BOOT_DONE_FILE}\n}\n\n\n#### Flash reboot ####\n\nfunction do_flash_reboot() {\n    if ! [[ -f ${ROOT_INFO_FILE} ]] || ! [[ -f ${FLASH_BOOT_DONE_FILE} ]]; then\n        echo \"root partition info file not present\" | tee 1>&2 ${ERROR_FILE}\n        return 1\n    fi\n\n    rm -f ${ERROR_FILE}\n    touch ${FLASH_REBOOT_STARTED_FILE}\n\n    echo \"preparing for reboot\"\n\n    trap cleanup_on_exit EXIT\n\n    reallocate_root_part\n\n    root_info=($(cat ${ROOT_INFO_FILE}))\n\n    mkdir -p ${TMP_ROOT_DIR}\n    losetup -o $((root_info[0] * 512)) ${ROOT_LOOP} ${FW_FILE_EXTR}\n    mount ${ROOT_LOOP} ${TMP_ROOT_DIR}\n\n    # The /usr/libexec/fw-prepare-boot script should be present and should\n    # make the necessary changes to the current boot configuration so that\n    # the firmware update initramfs will be used by the next boot.\n    #\n    # We prefer to use the script coming with the new firmware.\n\n    mount -o remount,rw /boot\n    boot_mounted_rw=true\n    if [[ -x ${TMP_ROOT_DIR}/usr/libexec/fw-prepare-boot ]]; then\n        ${TMP_ROOT_DIR}/usr/libexec/fw-prepare-boot\n    elif [[ -x /usr/libexec/fw-prepare-boot ]]; then\n        /usr/libexec/fw-prepare-boot\n    fi\n\n    umount ${TMP_ROOT_DIR}\n    losetup -d ${ROOT_LOOP}\n\n    echo \"rebooting\"\n    test -x /sbin/reboot.bak && /sbin/reboot.bak || /sbin/reboot &\n    # Guard forced reboot after 3 minutes\n    sleep 180 && echo b > /proc/sysrq-trigger\n\n    exit 0\n}\n\n\n#### Status ####\n\nfunction show_status() {\n    if [[ -f ${VER_FILE} ]]; then\n        new_version=$(cat ${VER_FILE} 2>&1 || true)\n    fi\n\n    if [[ -f ${ERROR_FILE} ]]; then\n        echo -n \"error: \"\n        cat ${ERROR_FILE}\n    elif [[ -f ${FLASH_REBOOT_STARTED_FILE} ]]; then\n        echo \"rebooting [${new_version}]\"\n    elif [[ -f ${FLASH_BOOT_DONE_FILE} ]]; then\n        echo \"boot flashed [${new_version}]\"\n    elif [[ -f ${FLASH_BOOT_STARTED_FILE} ]]; then\n        echo \"flashing boot [${new_version}]\"\n    elif [[ -f ${EXTRACT_DONE_FILE} ]]; then\n        echo \"extracted [${new_version}]\"\n    elif [[ -f ${EXTRACT_STARTED_FILE} ]]; then\n        echo \"extracting [${new_version}]\"\n    elif [[ -f ${DOWNLOAD_DONE_FILE} ]]; then\n        echo \"downloaded [${new_version}]\"\n    elif [[ -f ${DOWNLOAD_STARTED_FILE} ]]; then\n        echo \"downloading [${new_version}]\"\n    else\n        echo \"idle\"\n    fi\n}\n\n\n#### Install ####\n\nfunction do_install() {\n    latest=($(show_latest))\n    latest_version=${latest[0]}\n    if [[ \"$1\" == latest ]] && [[ \"${OS_VERSION}\" == \"${latest_version}\" ]]; then\n        echo \"already running latest version\"\n        return 2\n    fi\n\n    echo \"installing $1\"\n\n    do_download \"$1\"\n    show_status\n\n    do_extract\n    show_status\n\n    do_flash_boot\n    show_status\n\n    do_flash_reboot\n}\n\n\n#### Automatic firmware update ####\n\nfunction show_auto() {\n    if [[ ${OS_FIRMWARE_AUTO_UPDATE} == true ]]; then\n        echo on\n    else\n        echo off\n    fi\n}\n\nfunction set_auto() {\n    if [[ -s /data/etc/os.conf ]]; then\n        cat /data/etc/os.conf | grep -v OS_FIRMWARE_AUTO_UPDATE > /data/etc/os.conf.new || true\n        mv /data/etc/os.conf.new /data/etc/os.conf\n    fi\n\n    echo \"OS_FIRMWARE_AUTO_UPDATE=$1\" >> /data/etc/os.conf\n}\n\nfunction do_auto() {\n    if [[ -z \"$1\" ]]; then\n        show_auto\n    elif [[ \"$1\" == on ]]; then\n        set_auto true\n        source /etc/init.d/os_conf\n        show_auto\n    elif [[ \"$1\" == off ]]; then\n        set_auto false\n        source /etc/init.d/os_conf\n        show_auto\n    fi\n}\n\n\n#### Prereleases ####\n\nfunction show_prereleases() {\n    if [[ ${OS_PRERELEASES} == true ]]; then\n        echo on\n    else\n        echo off\n    fi\n}\n\nfunction set_prereleases() {\n    if [[ -s /data/etc/os.conf ]]; then\n        cat /data/etc/os.conf | grep -v OS_PRERELEASES > /data/etc/os.conf.new || true\n        mv /data/etc/os.conf.new /data/etc/os.conf\n    fi\n\n    echo \"OS_PRERELEASES=$1\" >> /data/etc/os.conf\n}\n\nfunction do_prereleases() {\n    if [[ -z \"$1\" ]]; then\n        show_prereleases\n    elif [[ \"$1\" == on ]]; then\n        set_prereleases true\n        source /etc/init.d/os_conf\n        show_prereleases\n    elif [[ \"$1\" == off ]]; then\n        set_prereleases false\n        source /etc/init.d/os_conf\n        show_prereleases\n    fi\n}\n\n\n#### Main ####\n\ncase \"$1\" in\n    current)\n        show_current\n        ;;\n\n    latest)\n        show_latest\n        ;;\n\n    list)\n        if [[ -z ${OS_FIRMWARE_VERSIONS_STABLE} || -z {OS_FIRMWARE_VERSIONS_BETA} ]]; then\n            echo \"No firmware version list available\"\n            exit 2\n        fi\n\n        list_versions \"$2\"\n        ;;\n\n    download)\n        if [[ -z \"$2\" ]]; then\n            exit_usage\n        fi\n\n        do_download \"$2\"\n        show_status\n        ;;\n\n    extract)\n        do_extract\n        show_status\n        ;;\n\n    flashboot)\n        do_flash_boot\n        show_status\n        ;;\n\n    flashreboot)\n        do_flash_reboot\n        ;;\n\n    status)\n        show_status\n        ;;\n\n    install)\n        if [[ -z \"$2\" ]]; then\n            exit_usage\n        fi\n\n        do_install \"$2\"\n        ;;\n\n    auto)\n        do_auto ${@:2}\n        ;;\n\n    prereleases)\n        do_prereleases ${@:2}\n        ;;\n\n    *)\n        exit_usage\n        ;;\nesac\n"
  },
  {
    "path": "board/common/overlay/sbin/panic",
    "content": "#!/bin/bash\n\nPANIC_COUNTER_FILE=\"/var/lib/panic_counter\"\nPANIC_REBOOT_DELAY_FACTOR=10\nPANIC_REBOOT_DELAY_MAX=3600  # reboot at least once an hour in case of panic\nPANIC_INHIBIT_FILE=\"/var/run/panic_inhibit\"\nPANIC_INHIBIT_TIMEOUT=3600  # inhibit panic action for at most one hour\nPANIC_DETAILS_FILE=\"/var/lib/last_panic\"\nPANIC_DETAILS_CACHE_FILE=\"/var/run/panic\"\n\ntest -n \"${OS_DEBUG}\" || source /etc/init.d/os_conf\n\nfunction usage() {\n    echo \"$0 <command> [params...]\"\n    echo \"Available commands:\"\n    echo \"    action <service/component> [message]\"\n    echo \"    details\"\n    echo \"    inhibit\"\n    echo \"    reset\"\n}\n\nfunction is_inhibited() {\n    if [[ -s ${PANIC_INHIBIT_FILE} ]]; then\n        uptime=$(cat /proc/uptime | grep -oE '^[[:digit:]]+')\n        inhibit_uptime=$(cat ${PANIC_INHIBIT_FILE})\n        delta_uptime=$(expr \"${uptime}\" - \"${inhibit_uptime}\")\n        if [[ \"${delta_uptime}\" -lt ${PANIC_INHIBIT_TIMEOUT} ]]; then\n            return 0\n        fi\n    fi\n    \n    return 1\n}\n\nfunction action() {\n    # $1 - service/component\n    # $2 - optional error message\n    \n    # read counter from file\n    panic_counter=$(cat ${PANIC_COUNTER_FILE} 2>/dev/null || echo 0)\n    \n    # write increased counter back to file\n    echo $((panic_counter + 1)) > ${PANIC_COUNTER_FILE}\n    \n    delay=$((PANIC_REBOOT_DELAY_FACTOR * panic_counter))\n    if [[ \"${delay}\" -gt \"${PANIC_REBOOT_DELAY_MAX}\" ]]; then\n        delay=${PANIC_REBOOT_DELAY_MAX}\n    fi\n    \n    logger -t $1 -s \"$2\"\n    \n    (\n        echo \"service=\\\"$1\\\"\"\n        echo \"message=\\\"$2\\\"\"\n        echo \"timestamp=\\\"$(date +%s)\\\"\"\n        echo \"uptime=\\\"$(cat /proc/uptime | grep -oE '^[[:digit:]]+')\\\"\"\n    ) > ${PANIC_DETAILS_FILE}\n    cp ${PANIC_DETAILS_FILE} ${PANIC_DETAILS_CACHE_FILE}\n    \n    if is_inhibited; then\n        logger -t panic -s \"action inhibited (caused by $1)\"\n        return 1\n    fi\n    \n    if [[ \"${OS_DEBUG}\" == true ]]; then\n        logger -t panic -s \"action ignored in debug mode (caused by $1)\"\n        return 1\n    fi\n    \n    if [[ \"${delay}\" -gt 0 ]]; then\n        logger -t panic -s \"rebooting in ${delay} seconds (caused by $1)\"\n        sleep ${delay}\n    fi\n\n    if is_inhibited; then\n        logger -t panic -s \"action inhibited (caused by $1)\"\n        return 1\n    fi\n    \n    logger -t panic -s \"rebooting (caused by $1)\"\n    /sbin/reboot\n}\n\nfunction details() {\n    if ! [[ -s ${PANIC_DETAILS_FILE} ]]; then\n        echo \"No recent panic\"\n        exit\n    fi\n\n    source ${PANIC_DETAILS_FILE}\n\n    {\n        echo \"Service:|${service}\"\n        echo \"Message:|${message}\"\n        echo \"Date:|$(date -D%s -d ${timestamp:-0})\"\n        echo \"Uptime:|${uptime:-0} seconds\"\n        echo \"Current:|$(test -s ${PANIC_DETAILS_CACHE_FILE} && echo yes || echo no)\"\n        echo \"Inhibited:|$(is_inhibited && echo yes || echo no)\"\n        echo \"Counter:|$(cat ${PANIC_COUNTER_FILE} 2>/dev/null || echo 0)\"\n    } | column -t -s '|'\n}\n\nfunction inhibit() {\n    cat /proc/uptime | grep -oE '^[[:digit:]]+' > ${PANIC_INHIBIT_FILE}\n}\n\nfunction reset() {\n    # Remove panic details files\n    rm -f ${PANIC_DETAILS_FILE}\n    rm -f ${PANIC_DETAILS_CACHE_FILE}\n\n    # Reset panic counter \n    echo 0 > ${PANIC_COUNTER_FILE}\n}\n\n# Allow this script to be sourced\ntest \"$0\" == /sbin/panic || return 0\n\ntest -n \"$1\" || { usage; exit 1; }\n\ncase $1 in\n    action)\n        test -n \"$2\" || { usage; exit 1; }\n        action \"${@:2}\"\n        ;;\n\n    details)\n        details \"${@:2}\"\n        ;;\n    \n    inhibit)\n        inhibit \"${@:2}\"\n        ;;\n    \n    reset)\n        reset \"${@:2}\"\n        ;;\n    \n    *)\n        usage\n        exit 1\n        ;;\nesac\n"
  },
  {
    "path": "board/common/overlay/sbin/poweroff",
    "content": "#!/bin/bash\n\n# carry on with the script in case of error\nset +e\n\n# kill the startup process if it hasn't completed yet\nkillall rcS &>/dev/null || true\n\n# write buffers to disk\n/bin/sync\n\n# allow the shutdown script 20 seconds to shut down,\n# after which we stop feeding the watchdog\n(sleep 20 && /usr/bin/killall -STOP watchdog) &\n\n# actual poweroff command\n/bin/busybox poweroff\n"
  },
  {
    "path": "board/common/overlay/sbin/reboot",
    "content": "#!/bin/bash\n\n# carry on with the script in case of error\nset +e\n\n# allow the shutdown script 120 seconds to shut down,\n# after which we stop feeding the watchdog\n(sleep 120 && /usr/bin/killall -STOP watchdog) &\n\n# kill the startup process if it hasn't completed yet\nkillall rcS &>/dev/null\n\n# write buffers to disk\n/bin/sync\n\n# actual reboot command\n/bin/busybox reboot\n"
  },
  {
    "path": "board/common/overlay/sbin/service",
    "content": "#!/bin/bash\n\nfunction show_usage() {\n    echo \"Usage: service <service_name> [command]\"\n    echo \"Usual commands include: start, stop, restart\"\n    echo \"Type 'service <service_name>' without command for service-specific usage\"\n}\n\nif [[ -z \"$1\" ]]; then\n    show_usage 1>&2\n    exit 1\nfi\n\nSERVICE=$1\n\nshift  # Remove $1\nSCRIPT=(/etc/init.d/S*${SERVICE})\n\nif ! [[ -x \"${SCRIPT}\" ]]; then\n    echo \"No such service: ${SERVICE}\"\n    exit 1\nfi\n\nsource ${SCRIPT} \"$@\"\n"
  },
  {
    "path": "board/common/overlay/sbin/toemmc",
    "content": "#!/bin/bash\n\nif [[ -z \"$1\" ]] || [[ \"$1\" != /*  ]]; then\n    echo \"Usage: $0 <emmc_dev> [--net-config]\"\n    exit 1\nfi\n\nshopt -s extglob  # For extended globbing of /boot/*.{txt,ini,...}\n\ncmdline_args=\"$*\"\n\nfunction arg_present() {\n    for arg in ${cmdline_args}; do\n        if [ \"${arg}\" == \"$1\" ]; then\n            return 0\n        fi\n    done\n    \n    return 1\n}\n\nfunction msg() {\n    echo \" * $1\"\n}\n\nNET_CONFIG_FILES=(\n    dnsmasq.conf\n    hostapd.conf\n    static_ip.conf\n    wpa_supplicant.conf\n)\n\nemmc_dev=$1\n\nsource /tmp/disk_info\nif [[ \"${DISK_DEV}\" == \"${emmc_dev}\" ]]; then\n    msg \"SD card and eMMC devices are the same\"\n    exit 1\nfi\n\nmsg \"SD card device is ${DISK_DEV}\"\n\nroot_info=$(fdisk -l -o device,start,end,size ${DISK_DEV} | grep \"${ROOT_DEV}\")\nroot_info=(${root_info})\n\nroot_end_sector=${root_info[2]}\ntotal_size=$(((root_end_sector + 1) * 512 / 10485760))  # x 10MB\nroot_part_no=$(echo ${ROOT_DEV} | grep -oE '[0-9]$')\n\nmsg \"Unmounting all eMMC partitions\"\numount ${emmc_dev}* &>/dev/null\npartx -d ${emmc_dev} &>/dev/null\n\nmsg \"Wiping any GPT backup from eMMC\"\nemmc_sectors=$(fdisk -l ${emmc_dev} 2>/dev/null | head -n1 | grep -oE '[[:digit:]]+ sectors' | cut -d ' ' -f 1)\ndd if=/dev/zero of=${emmc_dev} seek=$(( emmc_sectors - 34 )) count=34 status=none\nsync\n\nmsg \"Copying ${total_size}0MB from ${DISK_DEV} to ${emmc_dev}\"\ndd if=${DISK_DEV} of=${emmc_dev} bs=10M count=${total_size} status=none\nsync\npartx -a ${emmc_dev} &>/dev/null\n\nsleep 1\n\nmsg \"Removing data partition from eMMC\"\nif [[ \"${PART_TABLE_TYPE}\" == gpt ]]; then\n    gdisk &>/dev/null ${emmc_dev} <<END\nd\n$(( root_part_no + 1 ))\nw\nY\nEND\nelse\n    fdisk >/dev/null ${emmc_dev} <<END\nd\n$(( root_part_no + 1 ))\nw\nEND\nfi\nsync\n\nemmc_boot_dev=${emmc_dev}p$(( root_part_no - 1 ))\nmsg \"Mounting ${emmc_boot_dev} boot partition\"\nmkdir -p /data/.emmc_boot\nmount ${emmc_boot_dev} /data/.emmc_boot\ncd /data/.emmc_boot\n\nif [[ -f toemmc.conf ]]; then\n    msg \"Removing toemmc.conf\"\n    rm -f toemmc.conf\nfi\n\nif [[ -f /boot/factory-defaults.tar.xz ]]; then\n    msg \"Copying factory defaults\"\n    cp /boot/factory-defaults.tar.xz .\nfi\n\nif arg_present \"--net-config\"; then\n    msg \"Copying network configuration\"\n    for file in ${NET_CONFIG_FILES[*]}; do\n        path=\"/data/etc/${file}\"\n        test -s ${path} || continue\n        cp ${path} .\n        msg \"Copied ${file}\"\n    done\nfi\n\nmsg \"Cleaning up\"\ncd - >/dev/null\numount /data/.emmc_boot\nrmdir /data/.emmc_boot\n\nmsg \"Done!\"\n"
  },
  {
    "path": "board/common/overlay/usr/bin/gpio.sh",
    "content": "#!/bin/bash\n\nGPIO=$1\n\nusage() {\n    echo \"Usage: $0 <gpio> [0|1]\" 1>&2\n    exit 1\n}\n\ntest -z \"${GPIO}\" && usage\ntest -e /sys/class/gpio/gpio${GPIO} || echo ${GPIO} > /sys/class/gpio/export\n\nif [ -n \"$2\" ]; then\n    echo out > /sys/class/gpio/gpio${GPIO}/direction\n    echo $2 > /sys/class/gpio/gpio${GPIO}/value\nelse\n    echo in > /sys/class/gpio/gpio${GPIO}/direction\n    cat /sys/class/gpio/gpio${GPIO}/value\nfi\n\n"
  },
  {
    "path": "board/common/overlay/usr/libexec/dehydrated-dumb-httpd",
    "content": "#!/bin/bash\n\nCHALLENGE=\"$1\"\nPORT=80\nLIFETIME=120\nTMP_RESPONSE=\"/tmp/dehydrated-response\"\nLOG=\"/var/log/dehydrated-dumb-httpd.log\"\n\nif [[ -z \"${CHALLENGE}\" ]]; then\n    echo \"Usage $0 <challenge>\"\n    exit 1\nfi\n\n{\n    echo -en \"HTTP/1.1 200 OK\\r\\n\"\n    echo -en \"Content-Length: ${#CHALLENGE}\\r\\n\"\n    echo -en \"Content-Type: text/plain\\r\\n\"\n    echo -en \"Connection: close\\r\\n\\r\\n${CHALLENGE}\"\n} > \"${TMP_RESPONSE}\"\n\necho \"Dumb httpd started\" > ${LOG}\nsocat -d TCP4-LISTEN:80,reuseaddr,fork EXEC:\"/bin/cat ${TMP_RESPONSE}\" &>>${LOG} &\npid=$!\nsleep ${LIFETIME}\nkill ${pid}\necho \"Dumb httpd exit\" >> ${LOG}\n"
  },
  {
    "path": "board/common/overlay/usr/libexec/dehydrated-hook",
    "content": "#!/bin/bash\n\nSSL_DIR=\"/data/etc/ssl\"\nCERT_FILE=\"${SSL_DIR}/cert.pem\"\nKEY_FILE=\"${SSL_DIR}/privkey.pem\"\n\nif [[ \"$1\" == \"deploy_challenge\" ]]; then\n    /usr/libexec/dehydrated-dumb-httpd \"$4\" &\nelif [[ \"$1\" == \"deploy_cert\" ]]; then\n    logger -t dehydrated \"deploying certificate & rebooting\"\n    mkdir -p \"${SSL_DIR}\"\n    cp \"$3\" \"${KEY_FILE}\"\n    cp \"$4\" \"${CERT_FILE}\"\n    reboot\nfi\n"
  },
  {
    "path": "board/common/overlay/usr/libexec/fwupdate-auto",
    "content": "#!/bin/bash\n\nsleep $((RANDOM % 82800))\nsource /etc/init.d/os_conf\ntest \"${OS_FIRMWARE_AUTO_UPDATE}\" == true || exit 0\ntest \"${OS_DEBUG}\" == true && { echo \"Skipping automatic fwupdate in debug mode\"; exit 0; }\n\nif  [[ -x /usr/libexec/fwupdate-auto-hook ]]; then\n    /usr/libexec/fwupdate-auto-hook && reboot_needed=false || reboot_needed=true\nfi\n/sbin/fwupdate install latest\ntest $? == 2 && test ${reboot_needed} == true && /sbin/reboot\n\n"
  },
  {
    "path": "board/common/overlay/usr/sbin/adminpasswd",
    "content": "#!/bin/bash\n\n# we verify the presence of the PASSWORD variable using env,\n# as it can also have an empty string value\nif ! env | grep PASSWORD &>/dev/null; then\n    echo \"You must set the PASSWORD environment variable.\"\n    exit 1\nfi\n\n# make sure root and admin users exist in shadow file\ntouch /data/etc/shadow\nchmod go-rwx /data/etc/shadow\nif ! grep root /data/etc/shadow &>/dev/null; then\n    echo 'root::::::::' >> /data/etc/shadow\nfi\nif ! grep admin /data/etc/shadow &>/dev/null; then\n    echo 'admin::::::::' >> /data/etc/shadow\nfi\n\n# remove shadow backups\nrm -f /data/etc/shadow+\nrm -f /data/etc/shadow-\n\n# set root and admin passwords (admin is just an alias for root)\n\necho -en \"${PASSWORD}\\n${PASSWORD}\\n\" | passwd -a md5 &>/dev/null # root\necho -en \"${PASSWORD}\\n${PASSWORD}\\n\" | passwd -a md5 admin &>/dev/null # admin\n\nsed -r -i 's/root:([^:]+):[[:digit:]]+:/root:\\1::/' /data/etc/shadow # removes pwd expiration\nsed -r -i 's/admin:([^:]+):[[:digit:]]+:/admin:\\1::/' /data/etc/shadow # removes pwd expiration\n\n# call admin password hooks in /etc/adminpasswd.d\nif [ -d /etc/adminpasswd.d ]; then\n    for script in /etc/adminpasswd.d/*; do\n        test -x ${script} && ${script}\n    done\nfi\n\nsync\n"
  },
  {
    "path": "board/common/overlay/usr/sbin/dehydrated-wrapper",
    "content": "#!/bin/bash\n\nPROG=\"/usr/bin/dehydrated\"\nBASE_DIR=\"/var/lib/dehydrated\"\nTMP_DIR=\"/tmp/dehydrated\"\nSSL_DIR=\"/data/etc/ssl\"\n\nif ! [[ -x \"${PROG}\" && -r \"${SSL_DIR}/domain\" && -r \"${SSL_DIR}/email\" ]]; then\n    exit 0  # not installed or not configured\nfi\n\nmkdir -p \"${BASE_DIR}\"\nmkdir -p \"${TMP_DIR}\"\n\nlogger -t dehydrated \"checking for certificate renewal\"\ndehydrated \"$@\"\n"
  },
  {
    "path": "board/common/overlay/usr/sbin/dyndns-update",
    "content": "#!/bin/bash\n\nSCRIPT=\"/data/etc/dyndns-update.sh\"\n\nif ! [[ -f \"${SCRIPT}\" ]]; then\n    exit 0\nfi\n\nlogger -t dyndns \"updating dynamic DNS\"\nbash \"${SCRIPT}\" 2>&1 | logger -t dyndns\nexit ${PIPESTATUS[0]}\n"
  },
  {
    "path": "board/common/overlay/usr/sbin/https-update",
    "content": "#!/bin/bash\n\nPROG=\"/usr/sbin/dehydrated-wrapper\"\nSSL_DIR=\"/data/etc/ssl\"\n\nif ! [[ -d \"${SSL_DIR}\" ]]; then\n    exit 0\nfi\n\nlogger -t dehydrated \"updating SSL certificates\"\n${PROG} -c 2>&1 | logger -t dehydrated\nexit ${PIPESTATUS[0]}\n"
  },
  {
    "path": "board/common/overlay/usr/share/dataoverlay/.empty",
    "content": ""
  },
  {
    "path": "board/common/overlay/usr/share/dataskel/etc/.empty",
    "content": ""
  },
  {
    "path": "board/common/overlay/usr/share/dataskel/log/.empty",
    "content": ""
  },
  {
    "path": "board/common/overlay/usr/share/dataskel/media/.empty",
    "content": ""
  },
  {
    "path": "board/common/overlay/usr/share/dataskel/usr/.empty",
    "content": ""
  },
  {
    "path": "board/common/overlay/usr/share/dataskel/varlib/.empty",
    "content": ""
  },
  {
    "path": "board/common/overlay/usr/share/post-upgrade/.empty",
    "content": ""
  },
  {
    "path": "board/common/overlay/usr/share/pre-upgrade/postgresql.sh",
    "content": "#!/bin/bash\n\n# Prepare a PostgreSQL dump to help migrating to new version\n\nOLD_PG_CTL=/usr/bin/pg_ctl\nNEW_PG_CTL=${TMP_ROOT_DIR}/usr/bin/pg_ctl\nUSER=postgres\nDB_DIR=/var/lib/postgresql\nDUMP_FILE=/var/lib/postgresql-dump.sql.gz\n\ntest -x ${OLD_PG_CTL} || exit 0\ntest -x ${NEW_PG_CTL} || exit 0\ncd /tmp\nsu ${USER} -c \"pg_ctl status -D ${DB_DIR}\" > /dev/null || exit 0\n\nold_version=$(${OLD_PG_CTL} -V | cut -d ' ' -f 3 | cut -d . -f 1)\n# Treat any errors from new pg_ctl as version mismatch/upgrade\nnew_version=$(${NEW_PG_CTL} -V 2>/dev/null | cut -d ' ' -f 3 | cut -d . -f 1)\ntest \"${old_version}\" != \"${new_version}\" || exit 0\n\necho \"dumping postgresql data\"\npg_dumpall -U ${USER} --quote-all-identifiers | gzip > ${DUMP_FILE}\n"
  },
  {
    "path": "board/common/overlay-initramfs/boot/.empty",
    "content": ""
  },
  {
    "path": "board/common/overlay-initramfs/data/.empty",
    "content": ""
  },
  {
    "path": "board/common/overlay-initramfs/init",
    "content": "#!/bin/sh\n\nPATH=/bin:/sbin:/usr/bin:/usr/sbin\nDISK_TIMEOUT=10\n\nmsg() {\n    echo \" * $1\"\n}\n\nmsg \"Mounting pseudo filesystems\"\nmount -t devtmpfs devtmpfs /dev\nmount -t proc proc /proc\n\nROOT_DEV=$(cat /proc/cmdline | grep -oE 'root=[/a-z0-9]+' | cut -d '=' -f 2)\nif echo ${ROOT_DEV:-2} | grep -E 'p[0-9]' &>/dev/null; then  # e.g. /dev/mmcblk0p2\n    ROOT_PART_NO=$(echo ${ROOT_DEV} | grep -oE '[0-9]$')\n    DISK_DEV=${ROOT_DEV:0:$(( ${#ROOT_DEV} - 2 ))}\n    BOOT_DEV=${DISK_DEV}p$(( ROOT_PART_NO - 1 ))\n    DATA_DEV=${DISK_DEV}p$(( ROOT_PART_NO + 1 ))\nelse  # e.g. /dev/sdc2\n    ROOT_PART_NO=$(echo ${ROOT_DEV} | grep -oE '[0-9]$')\n    DISK_DEV=${ROOT_DEV:0:$(( ${#ROOT_DEV} - 1 ))}\n    BOOT_DEV=${DISK_DEV}$(( ROOT_PART_NO - 1 ))\n    DATA_DEV=${DISK_DEV}$(( ROOT_PART_NO + 1 ))\nfi\n\nmsg \"Waiting for sdcard\"\ncount=0\nwhile true; do\n    if [ ${count} -ge ${DISK_TIMEOUT} ]; then\n        break\n    fi\n    if [[ -b ${ROOT_DEV} ]]; then\n        break\n    fi\n    count=$((count + 1))\n    sleep 1\ndone\n\nmsg \"Disk device is ${DISK_DEV}\"\nmsg \"Boot device is ${BOOT_DEV}\"\nmsg \"Root device is ${ROOT_DEV}\"\nmsg \"Data device is ${DATA_DEV}\"\n\nFW_DIR=/data/.fwupdate\nFW_FILE=${FW_DIR}/firmware.img.gz\nFW_FILE_EXTR=${FW_DIR}/firmware.img\n\nROOT_INFO_FILE=${FW_DIR}/root_info\n\ncleanup_on_exit() {\n    msg \"Switching to normal boot\"\n    /remove_initramfs\n\n    msg \"Unmounting data partition\"\n    umount /data\n    \n    msg \"Unmounting boot partition\"\n    umount /boot\n    \n    msg \"Syncing\"\n    sync\n    \n    msg \"Rebooting\"\n    echo 's' > /proc/sysrq-trigger\n    sleep 1\n    echo 'b' > /proc/sysrq-trigger\n}\n\ntrap cleanup_on_exit EXIT\n\nif [[ -x /prepare_initramfs ]]; then\n    msg \"Preparing initramfs\"\n    /prepare_initramfs\nfi\n\nmsg \"Mounting boot partition\"\nmount ${BOOT_DEV} /boot\n\nmsg \"Mounting data partition\"\nmount ${DATA_DEV} /data\n\nif [[ -x ${FW_DIR}/exec_initramfs ]]; then\n    export FW_DIR DISK_DEV BOOT_DEV ROOT_DEV DATA_DEV\n    msg \"Executing initramfs script\"\n    ${FW_DIR}/exec_initramfs || exit 1\nfi\n\nif ! [[ -r ${FW_FILE_EXTR} ]]; then\n    msg \"No firmware found, aborting\"\n    exit 1\nfi\n\nif ! [[ -r ${ROOT_INFO_FILE} ]]; then\n    msg \"No root partition info, aborting\"\n    exit 1\nfi\n\nmsg \"Copying root image\"\nroot_info=$(cat ${ROOT_INFO_FILE})\ncount=0\n\nfor i in ${root_info}; do count=$((count + 1)); done\n\nif [[ ${count} == 3 ]]; then\n    root_start=$(echo ${root_info} | cut -d ' ' -f 1)\n    root_size=$(echo ${root_info} | cut -d ' ' -f 3)\n    root_start=$((root_start / 2048))\n    root_size=$((root_size / 2048))\n\nelif [[ ${count} == 2 ]]; then\n    # compatibility with old info file format\n    root_start=$(echo ${root_info} | cut -d ' ' -f 1)\n    root_size=$(echo ${root_info} | cut -d ' ' -f 2)\n\nelse\n    msg \"Unrecognized root partition info file format\"\n    exit 1\nfi\n\ndd if=${FW_FILE_EXTR} skip=${root_start} of=${ROOT_DEV} bs=1048576 count=${root_size} || exit 1\n\nmsg \"Cleaning up\"\nrm -rf ${FW_DIR}\n"
  },
  {
    "path": "board/common/postscript.sh",
    "content": "#!/bin/bash\n\nset -e\n\nexport TARGET=\"$1\"\nexport BOARD=$(basename $(dirname ${TARGET}))\nexport COMMON_DIR=$(dirname $0)\nexport BOARD_DIR=${COMMON_DIR}/../${BOARD}\nexport BOOT_DIR=${TARGET}/../images/boot/\n\nmkdir -p ${BOOT_DIR}\n\nif [ -x ${BOARD_DIR}/postscript.sh ]; then\n    ${BOARD_DIR}/postscript.sh\nfi\n\n# transform /var contents as needed\nrm -rf ${TARGET}/var/cache\nrm -rf ${TARGET}/var/lib\nrm -rf ${TARGET}/var/lock\nrm -rf ${TARGET}/var/log\nrm -rf ${TARGET}/var/run\nrm -rf ${TARGET}/var/spool\nrm -rf ${TARGET}/var/tmp\n\nln -s /tmp ${TARGET}/var/cache\nln -s /tmp ${TARGET}/var/lock\nln -s /tmp ${TARGET}/var/run\nln -s /tmp ${TARGET}/var/spool\nln -s /tmp ${TARGET}/var/tmp\nln -s /tmp ${TARGET}/run\nmkdir -p ${TARGET}/var/lib\nmkdir -p ${TARGET}/var/log\n\n# add admin user alias\nif ! grep -qE '^admin:' ${TARGET}/etc/passwd; then\n    echo \"admin:x:0:0:root:/root:/bin/sh\" >> ${TARGET}/etc/passwd\nfi\n\n# adjust root password\nif [[ -n \"${THINGOS_ROOT_PASSWORD_HASH}\" ]] && [[ -f ${TARGET}/etc/shadow ]]; then\n    echo \"Updating root password hash\"\n    sed -ri \"s,root:[^:]+:,root:${THINGOS_ROOT_PASSWORD_HASH}:,\" ${TARGET}/etc/shadow\n    sed -ri \"s,admin:[^:]+:,admin:${THINGOS_ROOT_PASSWORD_HASH}:,\" ${TARGET}/etc/shadow\nfi\n"
  },
  {
    "path": "board/nanopir1/board.conf",
    "content": "BOOT_BIN=(\n    \"${BINARIES_DIR}/u-boot-sunxi-with-spl.bin@16\"\n)\nBOOT_START=10\n"
  },
  {
    "path": "board/nanopir1/boot.cmd",
    "content": "setenv load_addr \"0x44000000\"\nsetenv rootfstype \"ext4\"\nsetenv devtype \"mmc\"\nsetenv devnum 0\n\nif mmc dev 1; then\n    setenv rootdev \"/dev/mmcblk1p2\"\n    echo \"Booting from SD card\"\nelse\n    setenv rootdev \"/dev/mmcblk3p2\"\n    echo \"Booting from eMMC\"\nfi\n\nif test -e ${devtype} ${devnum} uEnv.txt; then\n    load ${devtype} ${devnum} ${load_addr} uEnv.txt\n    env import -t ${load_addr} ${filesize}\nfi\n\nsetenv bootargs \"root=${rootdev} rootfstype=${rootfstype} ${cmdline}\"\nif test -n \"${initrd}\"; then\n    setenv bootargs \"${bootargs} initrd=${initrd}\"\n    load ${devtype} ${devnum} ${ramdisk_addr_r} ${initrd}\n    setenv initrd_size ${filesize}\nfi\n\nload ${devtype} ${devnum} ${kernel_addr_r} ${kernel}\nload ${devtype} ${devnum} ${fdt_addr_r} ${fdt}\nfdt addr ${fdt_addr_r}\nfdt resize 65536\nfor overlay_file in ${overlays}; do\n    if load ${devtype} ${devnum} ${load_addr} overlays/${overlay_file}.dtbo; then\n        echo \"Applying kernel provided DT overlay ${overlay_file}.dtbo\"\n        fdt apply ${load_addr}\n    fi\ndone\n\necho \"Boot args: ${bootargs}\"\nif test -n \"${initrd}\"; then\n    echo \"Initrd size is ${initrd_size}\"\n    bootz ${kernel_addr_r} ${ramdisk_addr_r}:${initrd_size} ${fdt_addr_r}\nelse\n    bootz ${kernel_addr_r} - ${fdt_addr_r}\nfi\n"
  },
  {
    "path": "board/nanopir1/cpinitramfs.sh",
    "content": "cp ${BINARIES_DIR}/rootfs.cpio.gz ${BOARD_DIR}/initrd.gz\n"
  },
  {
    "path": "board/nanopir1/kernel-extra.config",
    "content": "CONFIG_NLS=y\nCONFIG_NLS_CODEPAGE_437=y\nCONFIG_NLS_CODEPAGE_852=y\nCONFIG_NLS_ASCII=y\nCONFIG_NLS_ISO8859_1=y\nCONFIG_NLS_ISO8859_2=y\nCONFIG_NLS_UTF8=y\n"
  },
  {
    "path": "board/nanopir1/overlay/etc/board",
    "content": "nanopir1\n"
  },
  {
    "path": "board/nanopir1/overlay/etc/init.d/S00statusled",
    "content": "#!/bin/bash\n\ncase \"$1\" in\n    start)\n        echo 0 > /sys/class/leds/status_led/brightness\n        echo 1 > /sys/class/leds/status_led/brightness\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/nanopir1/overlay/etc/init.d/S41netled",
    "content": "#!/bin/bash\n\ncase \"$1\" in\n    start)\n        echo 0 > /sys/class/leds/LED2/brightness\n        echo 1 > /sys/class/leds/LED2/brightness\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/nanopir1/overlay/etc/init.d/S99okled",
    "content": "#!/bin/bash\n\ncase \"$1\" in\n    start)\n        echo 0 > /sys/class/leds/LED3/brightness\n        echo 1 > /sys/class/leds/LED3/brightness\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/nanopir1/overlay/etc/os-platform.conf",
    "content": "OS_FACTORY_RESET_INPUT=\"event0\"\n"
  },
  {
    "path": "board/nanopir1/overlay/lib/firmware/ap6212/config.txt",
    "content": "PM=0\nnv_by_chip=2 43430 0 nvram.txt 43430 1 nvram_ap6212.txt \n"
  },
  {
    "path": "board/nanopir1/overlay/lib/firmware/ap6212/nvram.txt",
    "content": "#AP6212_NVRAM_V1.0_20140603\n# 2.4 GHz, 20 MHz BW mode\n\n# The following parameter values are just placeholders, need to be updated.\nmanfid=0x2d0\nprodid=0x0726\nvendid=0x14e4\ndevid=0x43e2\nboardtype=0x0726\nboardrev=0x1101\nboardnum=22\nmacaddr=00:90:4c:c5:12:38\nsromrev=11\nboardflags=0x00404201\nxtalfreq=26000\nnocrc=1\nag0=255\naa2g=1\nccode=ALL\n\npa0itssit=0x20\nextpagain2g=0\n\n#PA parameters for 2.4GHz, measured at CHIP OUTPUT\npa2ga0=-168,7161,-820\nAvVmid_c0=0x0,0xc8\ncckpwroffset0=5\n\n# PPR params\nmaxp2ga0=90\ntxpwrbckof=6\ncckbw202gpo=0x5555\nlegofdmbw202gpo=0x77777777\nmcsbw202gpo=0xaaaaaaaa\n\n# OFDM IIR :\nofdmdigfilttype=7\n# PAPD mode:\npapdmode=2\n\nil0macaddr=00:90:4c:c5:12:38\nwl0id=0x431b\n\n#OOB parameters\nhostwake=0x40\nhostrdy=0x41\nusbrdy=0x03\nusbrdydelay=100\ndeadman_to=0xffffffff\n# muxenab: 0x1 for UART enable, 0x10 for Host awake\nmuxenab=0x10\n# CLDO PWM voltage settings - 0x4 - 1.1 volt\n#cldo_pwm=0x4\n\n"
  },
  {
    "path": "board/nanopir1/overlay/lib/firmware/ap6212/nvram_ap6212.txt",
    "content": "# NVRAM file for BCM943430WLSELG (AW-NB197SM)\n# 2.4 GHz, 20 MHz BW mode\n\n# The following parameter values are just placeholders, need to be updated.\nmanfid=0x2d0\nprodid=0x0726\nvendid=0x14e4\ndevid=0x43e2\nboardtype=0x0726\nboardrev=0x1101\nboardnum=22\nmacaddr=00:11:22:33:44:55\nsromrev=11\nboardflags=0x00404201\nxtalfreq=26000\nnocrc=1\nag0=255\naa2g=1\nccode=ALL\n\npa0itssit=0x20\nextpagain2g=0\n\n#PA parameters for 2.4GHz, measured at CHIP OUTPUT\npa2ga0=0xff65,0x195a,0xfd03\nAvVmid_c0=0x0,0xc8\ncckpwroffset0=5\n\n# PPR params\nmaxp2ga0=74\ntxpwrbckof=6\ncckbw202gpo=0\nlegofdmbw202gpo=0x44444444\nmcsbw202gpo=0x88888888\n\n# OFDM IIR :\nofdmdigfilttype=18\nofdmdigfilttypebe=18\n# PAPD mode:\npapdmode=1\npapdvalidtest=1\n\n# LTECX flags\nltecxmux=1\nltecxpadnum=0x02030401\nltecxfnsel=0x3003\nltecxgcigpio=0x3012\n\nil0macaddr=00:90:4c:c5:12:38\nwl0id=0x431b\n\ndeadman_to=0xffffffff\n# muxenab: 0x1 for UART enable, 0x10 for Host awake\nmuxenab=0x10\n# CLDO PWM voltage settings - 0x4 - 1.1 volt\n#cldo_pwm=0x4\n\n\n"
  },
  {
    "path": "board/nanopir1/overlay/usr/libexec/after-factory-reset",
    "content": "#!/bin/bash\n\nfor led in /sys/class/leds/{LED2,LED3,status_led}/; do\n    echo 0 > ${led}/brightness\ndone\n"
  },
  {
    "path": "board/nanopir1/overlay/usr/libexec/btuart",
    "content": "#!/bin/bash\n\nFIRMWARE_DIR=\"/lib/firmware/ap6212/\"\nBRCM_PATCHRAM=\"/usr/libexec/brcm_patchram_plus\"\nUART_DEV=\"/dev/ttyS3\"\nMAC_ADDRESS=$(cat /sys/class/net/eth0/address)  # copy MAC address from eth0\n\nfunction btuart_start() {\n    # Reset Bluetooth via GPIO\n    echo \"Blocking BT rfkill\"\n    rfkill block bluetooth\n    sleep 1\n    \n    echo \"Unblocking BT rfkill\"\n    rfkill unblock bluetooth\n    sleep 1\n\n    ${BRCM_PATCHRAM} --enable_hci --no2bytes --tosleep 200000 --patchram ${FIRMWARE_DIR} --bd_addr ${MAC_ADDRESS} ${UART_DEV}\n}\n\nfunction btuart_stop() {\n    killall $(basename ${BRCM_PATCHRAM}) &>/dev/null\n}\n"
  },
  {
    "path": "board/nanopir1/overlay/usr/libexec/fw-prepare-boot",
    "content": "#!/bin/bash\n\necho \"initrd=initrd.gz\" >> /boot/uEnv.txt\n"
  },
  {
    "path": "board/nanopir1/overlay-initramfs/remove_initramfs",
    "content": "#!/bin/sh\n\ncat /boot/uEnv.txt | grep -v initrd > /boot/uEnv.txt.new\nmv /boot/uEnv.txt.new /boot/uEnv.txt\n"
  },
  {
    "path": "board/nanopir1/postscript.sh",
    "content": "#!/bin/bash\n\ncp ${BINARIES_DIR}/boot.scr ${BOOT_DIR}\ncp ${BINARIES_DIR}/sun8i-h3-nanopi-r1.dtb ${BOOT_DIR}\n\nmkdir -p ${BOOT_DIR}/overlays\ncp ${BUILD_DIR}/linux-custom/arch/arm/boot/dts/overlays/*.dtbo ${BOOT_DIR}/overlays\ncp ${BINARIES_DIR}/zImage ${BOOT_DIR}\ncp ${BOARD_DIR}/initrd.gz ${BOOT_DIR}\ncp ${BOARD_DIR}/uEnv.txt ${BOOT_DIR}\n"
  },
  {
    "path": "board/nanopir1/uEnv.txt",
    "content": "kernel=zImage\nfdt=sun8i-h3-nanopi-r1.dtb\noverlays=sun8i-h3-uart0\ncmdline=rootwait ro rootflags=noload console=ttyS0,115200 panic=10 hung_task_panic=1 quiet loglevel=1\n"
  },
  {
    "path": "board/radxacm3/board.conf",
    "content": "BOOT_BIN=(\n    \"${BINARIES_DIR}/idbloader.img@64\"\n    \"${BINARIES_DIR}/u-boot.itb@16384\"\n)\nBOOT_START=10\nPART_TABLE_TYPE=gpt\n"
  },
  {
    "path": "board/radxacm3/boot.cmd",
    "content": "setenv load_addr \"0x59000000\"\nsetenv rootdev \"/dev/mmcblk0p2\"\nsetenv rootfstype \"ext4\"\n\necho \"Boot script loaded from ${devtype} ${devnum}\"\n\nif test -e ${devtype} ${devnum} ${prefix}uEnv.txt; then\n    load ${devtype} ${devnum} ${load_addr} ${prefix}uEnv.txt\n    env import -t ${load_addr} ${filesize}\nfi\n\nsetenv bootargs \"root=${rootdev} rootfstype=${rootfstype} ${cmdline}\"\nif test -n \"${initrd}\"; then\n    setenv bootargs \"${bootargs} initrd=${initrd}\"\n    load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}${initrd}\n    setenv initrd_size ${filesize}\nfi\n\nload ${devtype} ${devnum} ${kernel_addr_r} ${prefix}${kernel}\nload ${devtype} ${devnum} ${fdt_addr_r} ${prefix}${fdt}\nfdt addr ${fdt_addr_r}\nfdt resize 65536\nfor overlay_file in ${overlays}; do\n    if load ${devtype} ${devnum} ${load_addr} ${prefix}overlays/${overlay_file}.dtbo; then\n        echo \"Applying kernel provided DT overlay ${overlay_file}.dtbo\"\n        fdt apply ${load_addr}\n    fi\ndone\n\nif test -n \"${initrd}\"; then\n    echo \"Initrd size is ${initrd_size}\"\n    booti ${kernel_addr_r} ${ramdisk_addr_r}:${initrd_size} ${fdt_addr_r}\nelse\n    booti ${kernel_addr_r} - ${fdt_addr_r}\nfi\n"
  },
  {
    "path": "board/radxacm3/cpinitramfs.sh",
    "content": "cp ${BINARIES_DIR}/rootfs.cpio.gz ${BOARD_DIR}/initrd.gz\n"
  },
  {
    "path": "board/radxacm3/overlay/etc/board",
    "content": "radxacm3\n"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt",
    "content": "#AP6212_NVRAM_V1.0_20140603\n# 2.4 GHz, 20 MHz BW mode\n\n# The following parameter values are just placeholders, need to be updated.\nmanfid=0x2d0\nprodid=0x0726\nvendid=0x14e4\ndevid=0x43e2\nboardtype=0x0726\nboardrev=0x1101\nboardnum=22\nmacaddr=00:90:4c:c5:12:38\nsromrev=11\nboardflags=0x00404201\nxtalfreq=26000\nnocrc=1\nag0=255\naa2g=1\nccode=ALL\n\npa0itssit=0x20\nextpagain2g=0\n\n#PA parameters for 2.4GHz, measured at CHIP OUTPUT\npa2ga0=-168,7161,-820\nAvVmid_c0=0x0,0xc8\ncckpwroffset0=5\n\n# PPR params\nmaxp2ga0=90\ntxpwrbckof=6\ncckbw202gpo=0x5555\nlegofdmbw202gpo=0x77777777\nmcsbw202gpo=0xaaaaaaaa\n\n# OFDM IIR :\nofdmdigfilttype=7\n# PAPD mode:\npapdmode=2\n\nil0macaddr=00:90:4c:c5:12:38\nwl0id=0x431b\n\n#OOB parameters\nhostwake=0x40\nhostrdy=0x41\nusbrdy=0x03\nusbrdydelay=100\ndeadman_to=0xffffffff\n# muxenab: 0x1 for UART enable, 0x10 for Host awake\nmuxenab=0x10\n# CLDO PWM voltage settings - 0x4 - 1.1 volt\n#cldo_pwm=0x4\n\n"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/brcm/brcmfmac43455-sdio.radxa,rockpi4b.txt",
    "content": "# Cloned from bcm94345wlpagb_p2xx.txt \nNVRAMRev=$Rev: 498373 $\nsromrev=11\nvendid=0x14e4\ndevid=0x43ab\nmanfid=0x2d0\nprodid=0x06e4\n#macaddr=00:90:4c:c5:12:38\nmacaddr=b8:27:eb:74:f2:6c\nnocrc=1\nboardtype=0x6e4\nboardrev=0x1304\n\n#XTAL 37.4MHz\nxtalfreq=37400\n\nbtc_mode=1\n#------------------------------------------------------\n#boardflags: 5GHz eTR switch by default\n#            2.4GHz eTR switch by default\n#            bit1 for btcoex\nboardflags=0x00480201\nboardflags2=0x40800000\nboardflags3=0x48200100\nphycal_tempdelta=15\nrxchain=1\ntxchain=1\naa2g=1\naa5g=1\ntssipos5g=1\ntssipos2g=1\nfemctrl=0\nAvVmid_c0=1,165,2,100,2,100,2,100,2,100\npa2ga0=-129,6525,-718\npa2ga1=-149,4408,-601\npa5ga0=-185,6836,-815,-186,6838,-815,-184,6859,-815,-184,6882,-818\npa5ga1=-202,4285,-574,-201,4312,-578,-196,4391,-586,-201,4294,-575\nitrsw=1\npdoffsetcckma0=2\npdoffset2gperchan=0,-2,1,0,1,0,1,1,1,0,0,-1,-1,0\npdoffset2g40ma0=16\npdoffset40ma0=0x8888\npdoffset80ma0=0x8888\nextpagain5g=2\nextpagain2g=2\ntworangetssi2g=1\ntworangetssi5g=1\n# LTECX flags\n# WCI2\nltecxmux=0\nltecxpadnum=0x0504\nltecxfnsel=0x22\nltecxgcigpio=0x32\n\nmaxp2ga0=80\nofdmlrbw202gpo=0x0022\ndot11agofdmhrbw202gpo=0x4442\nmcsbw202gpo=0x98444422\nmcsbw402gpo=0x98444422\nmaxp5ga0=82,82,82,82\nmcsbw205glpo=0xb9555000\nmcsbw205gmpo=0xb9555000\nmcsbw205ghpo=0xb9555000\nmcsbw405glpo=0xb9555000\nmcsbw405gmpo=0xb9555000\nmcsbw405ghpo=0xb9555000\nmcsbw805glpo=0xb9555000\nmcsbw805gmpo=0xb9555000\nmcsbw805ghpo=0xb9555000\n\nswctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff\nswctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe\nswctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3\nswctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3\n\nvcodivmode=1\ndeadman_to=481500000\n\ned_thresh2g=-54\ned_thresh5g=-54\neu_edthresh2g=-54\neu_edthresh5g=-54\nldo1=4\nrawtempsense=0x1ff\ncckPwrIdxCorr=3\ncckTssiDelay=150\nofdmTssiDelay=150\ntxpwr2gAdcScale=1\ntxpwr5gAdcScale=1\ndot11b_opts=0x3aa85\ncbfilttype=1\nfdsslevel_ch11=6\n\n# Improved Bluetooth coexistence parameters from Cypress\nbtc_mode=1\nbtc_params8=0x4e20\nbtc_params1=0x7530\n"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/brcm/brcmfmac43455-sdio.txt",
    "content": "# Cloned from bcm94345wlpagb_p2xx.txt \nNVRAMRev=$Rev: 498373 $\nsromrev=11\nvendid=0x14e4\ndevid=0x43ab\nmanfid=0x2d0\nprodid=0x06e4\n#macaddr=00:90:4c:c5:12:38\nmacaddr=b8:27:eb:74:f2:6c\nnocrc=1\nboardtype=0x6e4\nboardrev=0x1304\n\n#XTAL 37.4MHz\nxtalfreq=37400\n\nbtc_mode=1\n#------------------------------------------------------\n#boardflags: 5GHz eTR switch by default\n#            2.4GHz eTR switch by default\n#            bit1 for btcoex\nboardflags=0x00480201\nboardflags2=0x40800000\nboardflags3=0x48200100\nphycal_tempdelta=15\nrxchain=1\ntxchain=1\naa2g=1\naa5g=1\ntssipos5g=1\ntssipos2g=1\nfemctrl=0\nAvVmid_c0=1,165,2,100,2,100,2,100,2,100\npa2ga0=-129,6525,-718\npa2ga1=-149,4408,-601\npa5ga0=-185,6836,-815,-186,6838,-815,-184,6859,-815,-184,6882,-818\npa5ga1=-202,4285,-574,-201,4312,-578,-196,4391,-586,-201,4294,-575\nitrsw=1\npdoffsetcckma0=2\npdoffset2gperchan=0,-2,1,0,1,0,1,1,1,0,0,-1,-1,0\npdoffset2g40ma0=16\npdoffset40ma0=0x8888\npdoffset80ma0=0x8888\nextpagain5g=2\nextpagain2g=2\ntworangetssi2g=1\ntworangetssi5g=1\n# LTECX flags\n# WCI2\nltecxmux=0\nltecxpadnum=0x0504\nltecxfnsel=0x22\nltecxgcigpio=0x32\n\nmaxp2ga0=80\nofdmlrbw202gpo=0x0022\ndot11agofdmhrbw202gpo=0x4442\nmcsbw202gpo=0x98444422\nmcsbw402gpo=0x98444422\nmaxp5ga0=82,82,82,82\nmcsbw205glpo=0xb9555000\nmcsbw205gmpo=0xb9555000\nmcsbw205ghpo=0xb9555000\nmcsbw405glpo=0xb9555000\nmcsbw405gmpo=0xb9555000\nmcsbw405ghpo=0xb9555000\nmcsbw805glpo=0xb9555000\nmcsbw805gmpo=0xb9555000\nmcsbw805ghpo=0xb9555000\n\nswctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff\nswctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe\nswctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3\nswctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3\n\nvcodivmode=1\ndeadman_to=481500000\n\ned_thresh2g=-54\ned_thresh5g=-54\neu_edthresh2g=-54\neu_edthresh5g=-54\nldo1=4\nrawtempsense=0x1ff\ncckPwrIdxCorr=3\ncckTssiDelay=150\nofdmTssiDelay=150\ntxpwr2gAdcScale=1\ntxpwr5gAdcScale=1\ndot11b_opts=0x3aa85\ncbfilttype=1\nfdsslevel_ch11=6\n\n# Improved Bluetooth coexistence parameters from Cypress\nbtc_mode=1\nbtc_params8=0x4e20\nbtc_params1=0x7530\n"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/brcm/brcmfmac43456-sdio.txt",
    "content": "#AP6256_NVRAM_V1.1_08252017\n# Cloned from bcm94345wlpagb_p2xx.txt \nNVRAMRev=$Rev: 498373 $\nsromrev=11\nvendid=0x14e4\ndevid=0x43ab\nmanfid=0x2d0\nprodid=0x06e4\nmacaddr=00:90:4c:c5:12:38\nnocrc=1\nboardtype=0x6e4\nboardrev=0x1304\nxtalfreq=37400\n#boardflags: 5GHz eTR switch by default\n#            2.4GHz eTR switch by default\n#            bit1 for btcoex\nboardflags=0x00480201\nboardflags2=0x40800000\nboardflags3=0x48200100\n#phycal_tempdelta=15\nrxchain=1\ntxchain=1\naa2g=1\naa5g=1\ntssipos5g=1\ntssipos2g=1\nfemctrl=0\nAvVmid_c0=0,157,1,126,1,126,1,126,1,126\npa2ga0=-164,5427,-623\npa2ga1=-165,3699,-515\n#pa5ga0=-146,5304,-612,-140,5341,-613,-166,5326,-633,-154,5272,-621\n#pa5ga0=-134,5385,-609,-132,5359,-605,-154,5360,-621,-140,5288,-604\npa5ga0=-127,5380,-603,-130,5395,-608,-148,5369,-622,-147,5222,-608\npa5ga1=-161,3544,-499,-166,3543,-497,-169,3569,-497,-171,3598,-498\nitrsw=1\npdoffset2g40ma0=10\npdoffset40ma0=0xaaaa\npdoffset80ma0=0xaaaa\nextpagain5g=2\nextpagain2g=2\ntworangetssi2g=0\ntworangetssi5g=0\n# LTECX flags\n# WCI2\nltecxmux=0\nltecxpadnum=0x0504\nltecxfnsel=0x22\nltecxgcigpio=0x32\n\npacalshift5g=0,0,3\n\nmaxp2ga0=70\ncckbw202gpo=0x1000\ncckbw20ul2gpo=0x1000\nofdmlrbw202gpo=0x0033\ndot11agofdmhrbw202gpo=0x2222\nmcsbw202gpo=0x99333322\n\ncckdigfilttype=5\n\n#maxp5ga0=82,82,82,82\n#mcsbw205glpo=0x99555000\n#mcsbw205gmpo=0x99555000\n#mcsbw205ghpo=0x99555000\n#mcsbw405glpo=0x99555000\n#mcsbw405gmpo=0x99555000\n#mcsbw405ghpo=0x99555000\n#mcsbw805glpo=0x99555000\n#mcsbw805gmpo=0x99555000\n#mcsbw805ghpo=0x99555000\n\nmaxp5ga0=73,74,73,73     \nmcsbw205glpo=0x8a875444\nmcsbw205gmpo=0x8a875444\nmcsbw205ghpo=0x8a875444\n\nmcsbw405glpo=0xda844333\nmcsbw405gmpo=0xdb844333\nmcsbw405ghpo=0xda844333\n\nmcsbw805glpo=0xdb555444\nmcsbw805gmpo=0xda555444\nmcsbw805ghpo=0xda555444\n\n\nswctrlmap_2g=0x00040004,0x00020002,0x00040004,0x010a02,0x1ff\nswctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010a02,0x2f4\nswctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3\nswctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3\n\nvcodivmode=1\ndeadman_to=481500000\ned_thresh2g=-54\ned_thresh5g=-54\neu_edthresh2g=-54\neu_edthresh5g=-54\n\n\nmuxenab=0x10\n"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/nvram_ap6212a.txt",
    "content": "#AP6212A_NVRAM_V1.0.1_20160606\n# 2.4 GHz, 20 MHz BW mode\n\n# The following parameter values are just placeholders, need to be updated.\nmanfid=0x2d0\nprodid=0x0726\nvendid=0x14e4\ndevid=0x43e2\nboardtype=0x0726\nboardrev=0x1101\nboardnum=22\nmacaddr=00:90:4c:c5:12:38\nsromrev=11\nboardflags=0x00404201\nxtalfreq=26000\nnocrc=1\nag0=255\naa2g=1\nccode=ALL\n\npa0itssit=0x20\nextpagain2g=0\n\n#PA parameters for 2.4GHz, measured at CHIP OUTPUT\npa2ga0=-215,5267,-656\nAvVmid_c0=0x0,0xc8\ncckpwroffset0=5\n\n# PPR params\nmaxp2ga0=80\ntxpwrbckof=6\ncckbw202gpo=0x6666\nlegofdmbw202gpo=0xaaaaaaaa\nmcsbw202gpo=0xbbbbbbbb\n\n# OFDM IIR :\nofdmdigfilttype=18\nofdmdigfilttypebe=18\n# PAPD mode:\npapdmode=2\n\nil0macaddr=00:90:4c:c5:12:38\nwl0id=0x431b\n\n#OOB parameters\nhostwake=0x40\nhostrdy=0x41\nusbrdy=0x03\nusbrdydelay=100\ndeadman_to=0xffffffff\n# muxenab: 0x1 for UART enable, 0x10 for Host awake\nmuxenab=0x10\n# CLDO PWM voltage settings - 0x4 - 1.1 volt\n#cldo_pwm=0x4\nglitch_based_crsmin=1\n"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/nvram_ap6236.txt",
    "content": "#AP6236_NVRAM_V1.1.1_20180815\n# NVRAM file for BCM943430WLPTH, Bx Chip\n# 2.4 GHz, 20 MHz BW mode\n\n# The following parameter values are just placeholders, need to be updated.\nmanfid=0x2d0\nprodid=0x0727\nvendid=0x14e4\ndevid=0x43e2\nboardtype=0x0727\nboardrev=0x1331\nboardnum=22\nmacaddr=00:90:4c:c5:12:38\nsromrev=11\nboardflags=0x00404201\nboardflags3=0x08000000\nxtalfreq=26000\nnocrc=1\nag0=255\naa2g=1\nccode=ALL\n\npa0itssit=0x20\nextpagain2g=0\n#PA parameters for 2.4GHz, measured at CHIP OUTPUT\npa2ga0=-202,5582,-671\nAvVmid_c0=0x0,0xc8\ncckpwroffset0=5\n\n# PPR params\nmaxp2ga0=74\ntxpwrbckof=6\ncckbw202gpo=0x2222\nlegofdmbw202gpo=0x55555555\nmcsbw202gpo=0x76666666\npropbw202gpo=0xcc\n\n# OFDM IIR :\nofdmdigfilttype=18\nofdmdigfilttypebe=18\n# PAPD mode:\npapdmode=1\npacalidx2g=42\npapdepsoffset=-22\npapdendidx=58\n\n# LTECX flags\nltecxmux=0\nltecxpadnum=0x0102\nltecxfnsel=0x44\nltecxgcigpio=0x01\n\nil0macaddr=00:90:4c:c5:12:38\nwl0id=0x431b\n\ndeadman_to=0xffffffff\n# muxenab: 0x1 for UART enable, 0x2 for GPIOs, 0x8 for JTAG\nmuxenab=0x10\n# CLDO PWM voltage settings - 0x4 - 1.1 volt\n#cldo_pwm=0x4\n\n#VCO freq 326.4MHz\nspurconfig=0x3 \n\nAvVmidIQcal=0x2,0xa8\nglitch_based_crsmin=1"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/nvram_ap6255.txt",
    "content": "#AP6255_NVRAM_V1.1.6_05172017.txt\n# Cloned from bcm94345wlpagb_p2xx.txt \nNVRAMRev=$Rev: 498373 $\nsromrev=11\nvendid=0x14e4\ndevid=0x43ab\nmanfid=0x2d0\nprodid=0x06e4\nmacaddr=00:90:4c:c5:12:38\nnocrc=1\nboardtype=0x6e4\nboardrev=0x1304\n\n#XTAL 37.4MHz\nxtalfreq=37400\nbtc_mode=1\n\n#-----------------------------------------\n#boardflags: 5GHz eTR switch by default\n#            2.4GHz eTR switch by default\n#            bit1 for btcoex\nboardflags=0x00480201\nboardflags2=0x40800000\nboardflags3=0x48200100\nphycal_tempdelta=15\nrxchain=1\ntxchain=1\naa2g=1\naa5g=1\ntssipos5g=1\ntssipos2g=1\nfemctrl=0\nAvVmid_c0=1,165,2,100,2,100,2,100,2,100\npa2ga0=-195,5558,-672\npa2ga1=-118,4850,-635\npa5ga0=-203,5495,-683,-205,5489,-682,-207,5494,-678,-208,5549,-683\npa5ga1=-142,4930,-655,-150,4859,-646,-156,4887,-644,-158,4864,-641\n\n\n\nitrsw=1\npdoffset2g40ma0=10\npdoffset40ma0=0xaaaa\npdoffset80ma0=0xaaaa\nextpagain5g=2\nextpagain2g=2\ntworangetssi2g=0\ntworangetssi5g=0\n# LTECX flags\n# WCI2\nltecxmux=0\nltecxpadnum=0x0504\nltecxfnsel=0x22\nltecxgcigpio=0x32\n\nmaxp2ga0=70\ncckbw202gpo=0x2200\ncckbw20ul2gpo=0x2200\nofdmlrbw202gpo=0x0000\ndot11agofdmhrbw202gpo=0x2222\n\n\n\nmcsbw202gpo=0x98444422\nmcsbw402gpo=0x98777755\nmaxp5ga0=72,72,72,72\n#5GHz_20MHz Offset\nmcsbw205glpo=0xb9855222\nmcsbw205gmpo=0xb9855222\nmcsbw205ghpo=0xb9855222\n#5GHz_40MHz Offset\nmcsbw405glpo=0xb9955333\nmcsbw405gmpo=0xb9955333\nmcsbw405ghpo=0xb9955333\n#5GHz_80MHz Offset\nmcsbw805glpo=0xd9222222\nmcsbw805gmpo=0xd9222222\nmcsbw805ghpo=0xd9222222\n\n\n\n\n\n\n\nswctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff\nswctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe\nswctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3\nswctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3\n\nvcodivmode=1\ndeadman_to=481500000\n#ed_thresh2g=-54\n#ed_thresh5g=-54\n#eu_edthresh2g=-54\n#eu_edthresh5g=-54\ned_thresh2g=-69\ned_thresh5g=-69\neu_edthresh2g=-69\neu_edthresh5g=-69\nldo1=4\nrawtempsense=0x1ff\ncckPwrIdxCorr=3\ncckTssiDelay=150\nofdmTssiDelay=150\ntxpwr2gAdcScale=1\ntxpwr5gAdcScale=1\ndot11b_opts=0x3aa85\ncbfilttype=0\n#fdsslevel_ch1=6\n#fdsslevel_ch11=4\n\nmuxenab=0x10\n"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/nvram_ap6256.txt",
    "content": "#AP6256_NVRAM_V1.1_08252017\n# Cloned from bcm94345wlpagb_p2xx.txt \nNVRAMRev=$Rev: 498373 $\nsromrev=11\nvendid=0x14e4\ndevid=0x43ab\nmanfid=0x2d0\nprodid=0x06e4\nmacaddr=00:90:4c:c5:12:38\nnocrc=1\nboardtype=0x6e4\nboardrev=0x1304\nxtalfreq=37400\n#boardflags: 5GHz eTR switch by default\n#            2.4GHz eTR switch by default\n#            bit1 for btcoex\nboardflags=0x00480201\nboardflags2=0x40800000\nboardflags3=0x48200100\n#phycal_tempdelta=15\nrxchain=1\ntxchain=1\naa2g=1\naa5g=1\ntssipos5g=1\ntssipos2g=1\nfemctrl=0\nAvVmid_c0=0,157,1,126,1,126,1,126,1,126\npa2ga0=-164,5427,-623\npa2ga1=-165,3699,-515\n#pa5ga0=-146,5304,-612,-140,5341,-613,-166,5326,-633,-154,5272,-621\n#pa5ga0=-134,5385,-609,-132,5359,-605,-154,5360,-621,-140,5288,-604\npa5ga0=-127,5380,-603,-130,5395,-608,-148,5369,-622,-147,5222,-608\npa5ga1=-161,3544,-499,-166,3543,-497,-169,3569,-497,-171,3598,-498\nitrsw=1\npdoffset2g40ma0=10\npdoffset40ma0=0xaaaa\npdoffset80ma0=0xaaaa\nextpagain5g=2\nextpagain2g=2\ntworangetssi2g=0\ntworangetssi5g=0\n# LTECX flags\n# WCI2\nltecxmux=0\nltecxpadnum=0x0504\nltecxfnsel=0x22\nltecxgcigpio=0x32\n\npacalshift5g=0,0,3\n\nmaxp2ga0=70\ncckbw202gpo=0x1000\ncckbw20ul2gpo=0x1000\nofdmlrbw202gpo=0x0033\ndot11agofdmhrbw202gpo=0x2222\nmcsbw202gpo=0x99333322\n\ncckdigfilttype=5\n\n#maxp5ga0=82,82,82,82\n#mcsbw205glpo=0x99555000\n#mcsbw205gmpo=0x99555000\n#mcsbw205ghpo=0x99555000\n#mcsbw405glpo=0x99555000\n#mcsbw405gmpo=0x99555000\n#mcsbw405ghpo=0x99555000\n#mcsbw805glpo=0x99555000\n#mcsbw805gmpo=0x99555000\n#mcsbw805ghpo=0x99555000\n\nmaxp5ga0=73,74,73,73     \nmcsbw205glpo=0x8a875444\nmcsbw205gmpo=0x8a875444\nmcsbw205ghpo=0x8a875444\n\nmcsbw405glpo=0xda844333\nmcsbw405gmpo=0xdb844333\nmcsbw405ghpo=0xda844333\n\nmcsbw805glpo=0xdb555444\nmcsbw805gmpo=0xda555444\nmcsbw805ghpo=0xda555444\n\n\nswctrlmap_2g=0x00040004,0x00020002,0x00040004,0x010a02,0x1ff\nswctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010a02,0x2f4\nswctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3\nswctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3\n\nvcodivmode=1\ndeadman_to=481500000\ned_thresh2g=-54\ned_thresh5g=-54\neu_edthresh2g=-54\neu_edthresh5g=-54\n\n\nmuxenab=0x10\n"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/nvram_ap6275s.txt",
    "content": "# AP6275S_NVRAM_V1.4_20201116\n# AP6275S v00 WLBGA reference board, iPA version.\n\n# SSID generated using Alberto's boardssid.py script:\n# ********************SUMMARY********************\n# Board Name: AP6275S_V00\n#SSID: 0x086d\n#macmid: 0x02df\n# Successfully made SSID entry in sromdefs.tcl.\n# Successfully made macmid entry in sromdefs.tcl.\n# Successfully made SSID entry in tblssid.py.\n# *************************************************\n# $ Copyright Broadcom $\n#\n#\n# <<Broadcom-WL-IPTag/Proprietary:>>\nNVRAMRev=$Rev: 844050 $\nsromrev=11\nboardrev=0x1213\nboardtype=0x08ed\nboardflags=0x00400201\nboardflags2=0xc0800000\nboardflags3=0x40002180\n#boardnum=57410\nmacaddr=00:90:4c:12:d0:01\njtag_irw=38\n\n#Regulatory specific\nccode=0\nregrev=0\n\n# Board specific\nvendid=0x14e4\ndevid=0x449d\nmanfid=0x2d0\nantswitch=0\npdgain5g=0\npdgain2g=0\naa2g=3\naa5g=3\nagbg0=2\nagbg1=2\naga0=2\naga1=2\nextpagain2g=2\nextpagain5g=2\nrxgains2gelnagaina0=0\nrxgains2gtrisoa0=0\nrxgains2gtrelnabypa0=0\nrxgains5gelnagaina0=0\nrxgains5gtrisoa0=0\nrxgains5gtrelnabypa0=0\nrxgains5gmelnagaina0=0\nrxgains5gmtrisoa0=0\nrxgains5gmtrelnabypa0=0\nrxgains5ghelnagaina0=0\nrxgains5ghtrisoa0=0\nrxgains5ghtrelnabypa0=0\nrxgains2gelnagaina1=0\nrxgains2gtrisoa1=0\nrxgains2gtrelnabypa1=0\nrxgains5gelnagaina1=0\nrxgains5gtrisoa1=0\nrxgains5gtrelnabypa1=0\nrxgains5gmelnagaina1=0\nrxgains5gmtrisoa1=0\nrxgains5gmtrelnabypa1=0\nrxgains5ghelnagaina1=0\nrxgains5ghtrisoa1=0\nrxgains5ghtrelnabypa1=0\n\n#RSSI related\n# 2G\nrssicorrnorm_c0=4,4\nrssicorrnorm_c1=4,4\n# 5G\nrssicorrnorm5g_c0=5,5,5,5,5,5,5,5,5,5,5,5\nrssicorrnorm5g_c1=4,4,4,4,4,4,4,4,4,4,4,4\n\n\n#Two range TSSI\ntworangetssi2g=0\ntworangetssi5g=0\nlowpowerrange2g=0\nlowpowerrange5g=0\nlow_adc_rate_en=1\n# NOTE :================================================================================\n# To run TPC with Two Range TSSI ,set  tworangetssi2g = 1 and lowpowerrange2g = 0\n# To run TPC with Single Range TSSI, set tworangetssi2g = 0\n# To run TPC please READ instructions near pa2ga0 and pa2ga1 as well\n# To generate PA params for Low Range set  tworangetssi2g = 0 and lowpowerrange2g to 1\n# To generate PA params for High Range set  tworangetssi2g = 1 and lowpowerrange2g to 1\n# ======================================================================================\n\n#Related to FW Download. Host may use this\nnocrc=1\n\notpimagesize=502\n\nxtalfreq=37400\n\ntxchain=3\nrxchain=3\n\ncckdigfilttype=2\n\n#bit mask for slice capability bit 0:2G bit 1:5G\nbandcap=3\n\n#TXBF Related\nrpcal2g=0\nrpcal5gb0=0\nrpcal5gb1=0\nrpcal5gb2=0\nrpcal5gb3=0\n\n\n#FDSS Related\nfdss_level_2g=4,4\nfdss_interp_en=1\nfdss_level_5g=4,4\nfdss_level_11ax_2g=3,3\nfdss_level_11ax_2g_ch1=3,3\nfdss_level_11ax_2g_ch11=3,3\nfdss_level_11ax_5g=3,3\n\n#Tempsense Related\ntempthresh=110\ntempoffset=40\nrawtempsense=0x1ff\nphycal_tempdelta=15\ntemps_period=15\ntemps_hysteresis=15\n\n#------------- TSSI Related -------------\n\ntssipos2g=1\ntssipos5g=1\nAvVmid_c0=2,127,4,92,4,91,4,91,4,94\nAvVmid_c1=2,127,4,93,4,93,4,95,3,110\n# CCK in case of multi mode 2\npa2gccka0=-71,9683,-1064\npa2gccka1=-59,9596,-1046\n# OFDM in case of multi_mode 2\npa2ga0=-131,6980,-771\npa2ga1=-119,7130,-776\npa5ga0=-150,6098,-730,-141,6312,-729,-127,6151,-723,-136,5935,-702\n#pa5ga0=-150,6098,-730,-141,6312,-729,-136,6050,-713,-179,5504,-688\n#pa5ga1=-143,5954,-705,-136,6243,-722,-100,6496,-727,-89,7190,-798\npa5ga1=-148,6016,-719,-136,6243,-722,-123,6019,-711,-89,7190,-798\n\n# Max power and offsets\nmaxp2ga0=86\nmaxp2ga1=91\nmaxp5ga0=75,76,68,68\nmaxp5ga1=73,76,70,76\nsubband5gver=0x4\npaparambwver=3\ncckpwroffset0=-5\ncckpwroffset1=-3\npdoffset40ma0=0x4433\npdoffset80ma0=0x3232\npdoffset40ma1=0x2333\npdoffset80ma1=0x1222\ncckbw202gpo=0x1111\ncckbw20ul2gpo=0x0000\nmcsbw202gpo=0x65544332\nmcsbw402gpo=0xEC444332\ndot11agofdmhrbw202gpo=0x4433\nofdmlrbw202gpo=0x0022\nmcsbw205glpo=0x87544441\nmcsbw405glpo=0xB6443332\nmcsbw805glpo=0xCC553332\nmcsbw1605glpo=0\nmcsbw205gmpo=0x98544440\nmcsbw405gmpo=0xB6443332\nmcsbw805gmpo=0xBB553332\nmcsbw1605gmpo=0\nmcsbw205ghpo=0x98422230\nmcsbw405ghpo=0xB7554442\nmcsbw805ghpo=0xCC442221\npowoffs2gtna0=-3,-2,-2,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,0\npowoffs2gtna1=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0\nmcs1024qam2gpo=0xCCAA\nmcs1024qam5glpo=0xFFFFCB\nmcs1024qam5gmpo=0xFFEECB\nmcs1024qam5ghpo=0xFFFFED\nmcs1024qam5gx1po=0xEECCCC\nmcs1024qam5gx2po=0xEECCCC\nmcs8poexp=0\nmcs9poexp=0\nmcs10poexp=0\n\n# 5G power offset per channel for band edge channel\npowoffs5g20mtna0=0,0,0,0,0,0,0\npowoffs5g20mtna1=0,0,0,0,0,0,0\npowoffs5g40mtna0=0,0,0,0,0\npowoffs5g40mtna1=0,0,0,0,0\npowoffs5g80mtna0=0,0,0,0,0\npowoffs5g80mtna1=0,0,0,0,0\nmcs11poexp=0\n\n#LTE Coex Related\nltecxmux=0\nltecxpadnum=0x0504\nltecxfnsel=0x44\nltecxgcigpio=0x04\n#OOB params\n#device_wake_opt=1\nhost_wake_opt=0\n\n# SWCTRL Related\n\nswctrlmap_2g=0x10101010,0x06030401,0x04011010,0x000000,0x3FF\nswctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x000\nswctrlmap_5g=0x80408040,0x21240120,0x01208040,0x000000,0x3FF\nswctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x000\nclb2gslice0core0=0x01b\nclb2gslice1core0=0x000\nclb5gslice0core0=0x064\nclb5gslice1core0=0x000\nclb2gslice0core1=0x056\nclb2gslice1core1=0x000\nclb5gslice0core1=0x0a1\nclb5gslice1core1=0x000\nbtc_prisel_ant_mask=0x2\nclb_swctrl_smask_ant0=0x27f\nclb_swctrl_smask_ant1=0x2f7\n\n\n#BT Coex 1:TDM\nbtc_mode=1\n\n# --- PAPD Cal related params ----\ntxwbpapden=0 # 0:NBPAPD 1:WBPAPD\n# NB PAPD Cal params\nnb_eps_offset=470,470\nnb_bbmult=66,66\nnb_papdcalidx=6,6\nnb_txattn=2,2\nnb_rxattn=1,1\nnb_eps_stopidx=63\nepsilonoff_5g20_c0=0,1,1,-1\nepsilonoff_5g40_c0=0,1,1,1\nepsilonoff_5g80_c0=1,0,1,1\nepsilonoff_5g20_c1=1,0,0,-1\nepsilonoff_5g40_c1=0,0,0,0\nepsilonoff_5g80_c1=1,0,1,1\nepsilonoff_2g20_c0=0\nepsilonoff_2g20_c1=0\n\n# energy detect threshold\ned_thresh2g=-67\ned_thresh5g=-67\n# energy detect threshold for EU\neu_edthresh2g=-67\neu_edthresh5g=-67\n\n#rpcal coef for imptxbf\nrpcal5gb0=238\nrpcal5gb1=228\nrpcal5gb2=222\nrpcal5gb3=229\nrpcal2g=15\nocl=0\nbt_coex_chdep_div=1\n\n# OLPC Related\ndisable_olpc=0\nolpc_thresh5g=32\nolpc_anchor5g=40\nolpc_thresh2g=32\nolpc_anchor2g=40\n\n#PAPR related\npaprdis=0\npaprrmcsgamma2g=500,550,550,-1,-1,-1,-1,-1,-1,-1,-1,-1\npaprrmcsgain2g=128,128,128,0,0,0,0,0,0,0,0,0\npaprrmcsgamma2g_ch13=500,550,550,-1,-1,-1,-1,-1,-1,-1,-1,-1\npaprrmcsgain2g_ch13=128,128,128,0,0,0,0,0,0,0,0,0\npaprrmcsgamma2g_ch1=500,550,550,-1,-1,-1,-1,-1,-1,-1,-1,-1\npaprrmcsgain2g_ch1=128,128,128,0,0,0,0,0,0,0,0,0\npaprrmcsgamma5g20=500,500,500,-1,-1,-1,-1,-1,-1,-1,-1,-1\npaprrmcsgain5g20=128,128,128,0,0,0,0,0,0,0,0,0\npaprrmcsgamma5g40=600,600,600,-1,-1,-1,-1,-1,-1,-1,-1,-1\npaprrmcsgain5g40=128,128,128,0,0,0,0,0,0,0,0,0\npaprrmcsgamma5g80=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1\npaprrmcsgain5g80=0,0,0,0,0,0,0,0,0,0,0,0\n\n# Enable papd for cck when target pwr ge 16dBm\ncckpapd_pwrthresh=64\n\n## ULOFDMA Board limit PPRs for 2G20 ##\nruppr2g20bpska0=0x8421\nruppr2g20bpska1=0x8421\nruppr2g20qpska0=0x8421\nruppr2g20qpska1=0x8421\nruppr2g20qam16a0=0x10842\nruppr2g20qam16a1=0x10842\nruppr2g20qam64a0=0x18C63\nruppr2g20qam64a1=0x18C63\nruppr2g20qam256a0=0x318C6\nruppr2g20qam256a1=0x318C6\nruppr2g20qam1024a0=0x5AD6B\nruppr2g20qam1024a1=0x5AD6B\n## ULOFDMA Board limit PPRs for 5G20 ##\nruppr5g20bpska0=0x30421\nruppr5g20bpska1=0x30421\nruppr5g20qpska0=0x30421\nruppr5g20qpska1=0x30421\nruppr5g20qam16a0=0x30842\nruppr5g20qam16a1=0x30842\nruppr5g20qam64a0=0x314A5\nruppr5g20qam64a1=0x314A5\nruppr5g20qam256a0=0x4A529\nruppr5g20qam256a1=0x4A529\nruppr5g20qam1024a0=0x7294A\nruppr5g20qam1024a1=0x7294A\n## ULOFDMA Board limit PPRs for 5G40 ##\nruppr5g40bpska0=0x508421\nruppr5g40bpska1=0x508421\nruppr5g40qpska0=0x508421\nruppr5g40qpska1=0x508421\nruppr5g40qam16a0=0x508421\nruppr5g40qam16a1=0x508421\nruppr5g40qam64a0=0x518C63\nruppr5g40qam64a1=0x518C63\nruppr5g40qam256a0=0xA42108\nruppr5g40qam256a1=0xA42108\nruppr5g40qam1024a0=0xE68421\nruppr5g40qam1024a1=0xE68421\n## ULOFDMA Board limit PPRs for 5G80 ##\nruppr5g80bpska0=0xC108421\nruppr5g80bpska1=0xC108421\nruppr5g80qpska0=0xC108421\nruppr5g80qpska1=0xC108421\nruppr5g80qam16a0=0xC108421\nruppr5g80qam16a1=0xC108421\nruppr5g80qam64a0=0x14418C63\nruppr5g80qam64a1=0x14418C63\nruppr5g80qam256a0=0x2C94A529\nruppr5g80qam256a1=0x2C94A529\nruppr5g80qam1024a0=0x3CD60000\nruppr5g80qam1024a1=0x3CD60000\n\nmuxenab=0x10\n\n# ###########  BTC Dynctl profile params  ############\n# flags:bit0 - dynctl enabled, bit1 dynamic desense, bit2 dynamic mode, bit 3 TX power control\n#btcdyn_flags=1\n\n#btcdyn_default_btc_mode=5\n#btcdyn_msw_rows=0\n#btcdyn_dsns_rows=0\n#btc_params1007=100\n#btc_params1017=4"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/nvram_ap6356.txt",
    "content": "#AP6356S_NVRAM_V1.3_20180508\n#Modified from AP6356SDP_V1.0_NVRAM_20150216\nNVRAMRev=$Rev: 373428 $\nsromrev=11\nboardrev=0x1121\nboardtype=0x073e\nboardflags=0x02400201\nboardflags2=0x00802000\nboardflags3=0x0000000a\nmacaddr=00:90:4c:1a:10:01\nccode=0x5855\nregrev=1\nantswitch=0\npdgain5g=4\npdgain2g=4\ntworangetssi2g=0\ntworangetssi5g=0\npaprdis=0\nfemctrl=10\nvendid=0x14e4\ndevid=0x43a3\nmanfid=0x2d0\nnocrc=1\notpimagesize=502\nxtalfreq=37400\nrxgains2gelnagaina0=0\nrxgains2gtrisoa0=7\nrxgains2gtrelnabypa0=0\nrxgains5gelnagaina0=0\nrxgains5gtrisoa0=11\nrxgains5gtrelnabypa0=0\nrxgains5gmelnagaina0=0\nrxgains5gmtrisoa0=13\nrxgains5gmtrelnabypa0=0\nrxgains5ghelnagaina0=0\nrxgains5ghtrisoa0=12\nrxgains5ghtrelnabypa0=0\nrxgains2gelnagaina1=0\nrxgains2gtrisoa1=7\nrxgains2gtrelnabypa1=0\nrxgains5gelnagaina1=0\nrxgains5gtrisoa1=10\nrxgains5gtrelnabypa1=0\nrxgains5gmelnagaina1=0\nrxgains5gmtrisoa1=11\nrxgains5gmtrelnabypa1=0\nrxgains5ghelnagaina1=0\nrxgains5ghtrisoa1=11\nrxgains5ghtrelnabypa1=0\nrxchain=3\ntxchain=3\naa2g=3\naa5g=3\nagbg0=2\nagbg1=2\naga0=2\naga1=2\ntssipos2g=1\nextpagain2g=2\ntssipos5g=1\nextpagain5g=2\ntempthresh=255\ntempoffset=255\nrawtempsense=0x1ff\npa2ga0=-135,5769,-647   \npa2ga1=-143,6023,-677\npa5ga0=-183,5746,-697,-172,5801,-685,-176,5707,-680,-180,5445,-659\npa5ga1=-186,5543,-669,-193,5506,-675,-210,5282,-661,-199,5367,-665\nsubband5gver=0x4\npdoffsetcckma0=0x4\npdoffsetcckma1=0x4\npdoffset40ma0=0x0000\npdoffset80ma0=0x0000\npdoffset40ma1=0x0000\npdoffset80ma1=0x0000\nmaxp2ga0=72\nmaxp5ga0=69,70,69,68\nmaxp2ga1=71\nmaxp5ga1=67,67,67,67\ncckbw202gpo=0x1222\ncckbw20ul2gpo=0x0000\nmcsbw202gpo=0x9E644422\nmcsbw402gpo=0xE9744424\ndot11agofdmhrbw202gpo=0x4444\nofdmlrbw202gpo=0x0022\nmcsbw205glpo=0xEEA86661\nmcsbw405glpo=0xEEB86663\nmcsbw805glpo=0xEEB86663\nmcsbw205gmpo=0xAAA86663\nmcsbw405gmpo=0xECB86663\nmcsbw805gmpo=0xEEA86663\nmcsbw205ghpo=0xCC986663\nmcsbw405ghpo=0xEEA86663\nmcsbw805ghpo=0xEEA86663\nmcslr5glpo=0x0000\nmcslr5gmpo=0x0000\nmcslr5ghpo=0x0000\nsb20in40hrpo=0x0\nsb20in80and160hr5glpo=0x0\nsb40and80hr5glpo=0x0\nsb20in80and160hr5gmpo=0x0\nsb40and80hr5gmpo=0x0\nsb20in80and160hr5ghpo=0x0\nsb40and80hr5ghpo=0x0\nsb20in40lrpo=0x0\nsb20in80and160lr5glpo=0x0\nsb40and80lr5glpo=0x0\nsb20in80and160lr5gmpo=0x0\nsb40and80lr5gmpo=0x0\nsb20in80and160lr5ghpo=0x0\nsb40and80lr5ghpo=0x0\ndot11agduphrpo=0x0\ndot11agduplrpo=0x0\nphycal_tempdelta=255\ntemps_period=15\ntemps_hysteresis=15\nrssicorrnorm_c0=4,4\nrssicorrnorm_c1=4,4\nrssicorrnorm5g_c0=1,2,3,1,2,3,6,6,8,6,6,8\nrssicorrnorm5g_c1=1,2,3,2,2,2,7,7,8,7,7,8\nmuxenab=0x10\n"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/nvram_ap6356s.txt",
    "content": "#AP6356S_NVRAM_V1.3_20180508\n#Modified from AP6356SDP_V1.0_NVRAM_20150216\nNVRAMRev=$Rev: 373428 $\nsromrev=11\nboardrev=0x1121\nboardtype=0x073e\nboardflags=0x02400201\nboardflags2=0x00802000\nboardflags3=0x0000000a\nmacaddr=00:90:4c:1a:10:01\nccode=0x5855\nregrev=1\nantswitch=0\npdgain5g=4\npdgain2g=4\ntworangetssi2g=0\ntworangetssi5g=0\npaprdis=0\nfemctrl=10\nvendid=0x14e4\ndevid=0x43a3\nmanfid=0x2d0\nnocrc=1\notpimagesize=502\nxtalfreq=37400\nrxgains2gelnagaina0=0\nrxgains2gtrisoa0=7\nrxgains2gtrelnabypa0=0\nrxgains5gelnagaina0=0\nrxgains5gtrisoa0=11\nrxgains5gtrelnabypa0=0\nrxgains5gmelnagaina0=0\nrxgains5gmtrisoa0=13\nrxgains5gmtrelnabypa0=0\nrxgains5ghelnagaina0=0\nrxgains5ghtrisoa0=12\nrxgains5ghtrelnabypa0=0\nrxgains2gelnagaina1=0\nrxgains2gtrisoa1=7\nrxgains2gtrelnabypa1=0\nrxgains5gelnagaina1=0\nrxgains5gtrisoa1=10\nrxgains5gtrelnabypa1=0\nrxgains5gmelnagaina1=0\nrxgains5gmtrisoa1=11\nrxgains5gmtrelnabypa1=0\nrxgains5ghelnagaina1=0\nrxgains5ghtrisoa1=11\nrxgains5ghtrelnabypa1=0\nrxchain=3\ntxchain=3\naa2g=3\naa5g=3\nagbg0=2\nagbg1=2\naga0=2\naga1=2\ntssipos2g=1\nextpagain2g=2\ntssipos5g=1\nextpagain5g=2\ntempthresh=255\ntempoffset=255\nrawtempsense=0x1ff\npa2ga0=-135,5769,-647   \npa2ga1=-143,6023,-677\npa5ga0=-183,5746,-697,-172,5801,-685,-176,5707,-680,-180,5445,-659\npa5ga1=-186,5543,-669,-193,5506,-675,-210,5282,-661,-199,5367,-665\nsubband5gver=0x4\npdoffsetcckma0=0x4\npdoffsetcckma1=0x4\npdoffset40ma0=0x0000\npdoffset80ma0=0x0000\npdoffset40ma1=0x0000\npdoffset80ma1=0x0000\nmaxp2ga0=72\nmaxp5ga0=69,70,69,68\nmaxp2ga1=71\nmaxp5ga1=67,67,67,67\ncckbw202gpo=0x1222\ncckbw20ul2gpo=0x0000\nmcsbw202gpo=0x9E644422\nmcsbw402gpo=0xE9744424\ndot11agofdmhrbw202gpo=0x4444\nofdmlrbw202gpo=0x0022\nmcsbw205glpo=0xEEA86661\nmcsbw405glpo=0xEEB86663\nmcsbw805glpo=0xEEB86663\nmcsbw205gmpo=0xAAA86663\nmcsbw405gmpo=0xECB86663\nmcsbw805gmpo=0xEEA86663\nmcsbw205ghpo=0xCC986663\nmcsbw405ghpo=0xEEA86663\nmcsbw805ghpo=0xEEA86663\nmcslr5glpo=0x0000\nmcslr5gmpo=0x0000\nmcslr5ghpo=0x0000\nsb20in40hrpo=0x0\nsb20in80and160hr5glpo=0x0\nsb40and80hr5glpo=0x0\nsb20in80and160hr5gmpo=0x0\nsb40and80hr5gmpo=0x0\nsb20in80and160hr5ghpo=0x0\nsb40and80hr5ghpo=0x0\nsb20in40lrpo=0x0\nsb20in80and160lr5glpo=0x0\nsb40and80lr5glpo=0x0\nsb20in80and160lr5gmpo=0x0\nsb40and80lr5gmpo=0x0\nsb20in80and160lr5ghpo=0x0\nsb40and80lr5ghpo=0x0\ndot11agduphrpo=0x0\ndot11agduplrpo=0x0\nphycal_tempdelta=255\ntemps_period=15\ntemps_hysteresis=15\nrssicorrnorm_c0=4,4\nrssicorrnorm_c1=4,4\nrssicorrnorm5g_c0=1,2,3,1,2,3,6,6,8,6,6,8\nrssicorrnorm5g_c1=1,2,3,2,2,2,7,7,8,7,7,8\nmuxenab=0x10\n"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/nvram_ap6398s.txt",
    "content": "#AP6398S_NVRAM_V1.1_20170926\n# BCM4359 WLBGA iPA, iLNA board for bringup -AP6359SA_V1.0NVRAM\nNVRAMRev=$Rev: 528206 $\ncckdigfilttype=5\n#cckdigfilttype=4 (default)\n#valid ofdm filter types are 0 and 1\nofdmfilttype_2gbe=127\nofdmfilttype_5gbe=127\nsromrev=11\nboardrev=0x1301\nboardtype=0x0812\n# JIRA:SW4349-945 MANDATORY! Update makefile in case you touch bfl\n#boardflags=0x10081201\nboardflags=0x00480201\nboardflags2=0x40801000\nboardflags3=0x48700106\n#boardnum=57410 \nmacaddr=00:90:4c:27:80:01\nccode=0\nregrev=0\nantswitch=0\npdgain5g=0\npdgain2g=0\nlowpowerrange2g=0\nlowpowerrange5g=0\ntworangetssi2g=0\ntworangetssi5g=0\n# Low Power Range start value: 0dBm\nolpc_thresh2g=0\nolpc_thresh5g=0\nAvVmid_c0=2,130,2,130,2,130,2,130,2,130\nAvVmid_c1=2,130,2,130,2,130,2,130,2,130\n# JIRA:SW4349-945 MANDATORY! Update makefile in case you touch femctl\nfemctrl=14\nvendid=0x14e4\ndevid=0x43ef\nmanfid=0x2d0\n#prodid=0x052e\nnocrc=1\nbtc_mode=1\n#btc_params82=0x1a0\notpimagesize=502\nxtalfreq=37400\nrxgains2gelnagaina0=3\nrxgains2gtrisoa0=7\nrxgains2gtrelnabypa0=1\nrxgains5gelnagaina0=3\nrxgains5gtrisoa0=6\nrxgains5gtrelnabypa0=1\nrxgains5gmelnagaina0=3\nrxgains5gmtrisoa0=6\nrxgains5gmtrelnabypa0=1\nrxgains5ghelnagaina0=3\nrxgains5ghtrisoa0=6\nrxgains5ghtrelnabypa0=1\nrxgains2gelnagaina1=3\nrxgains2gtrisoa1=7\nrxgains2gtrelnabypa1=1\nrxgains5gelnagaina1=3\nrxgains5gtrisoa1=6\nrxgains5gtrelnabypa1=1\nrxgains5gmelnagaina1=3\nrxgains5gmtrisoa1=6\nrxgains5gmtrelnabypa1=1\nrxgains5ghelnagaina1=3\nrxgains5ghtrisoa1=6\nrxgains5ghtrelnabypa1=1\nrxchain=3\ntxchain=3\naa2g=3\naa5g=3\nagbg0=2\nagbg1=2\naga0=2\naga1=2\ntssipos2g=1\nextpagain2g=2\ntssipos5g=1\nextpagain5g=2\ntempthresh=255\ntempoffset=255\nrawtempsense=0x1ff\nfdss_interp_en=1\n#fdss_level_2g=3,3\nfdss_level_5g=4,4\n#pa2gccka0=-186,8076,-976\n#pa2gccka1=-217,7061,-881\n#pa2gccka2=-67,9864,-1253\n#pa2gccka3=-115,9164,-1225\n#pa2ga0=-196,6950,-832\n#pa2ga1=-204,6710,-809\n#pa2ga2=-220,4557,-593\n#pa2ga3=-218,4596,-601\npa2ga0=-193,7335,-862\npa2ga1=-202,6968,-828\npa2ga2=-220,4685,-607\npa2ga3=-218,4724,-615\n#pa5ga0=-191,6865,-844,-169,7525,-907,-168,7768,-938,-192,7073,-871\n#pa5ga1=-182,7580,-919,-188,7614,-931,-219,6536,-818,-202,7220,-895\n#pa5ga2=-220,4437,-628,-183,5005,-678,-229,4048,-551,-223,4448,-611\n#pa5ga3=-263,3914,-566,-224,4649,-640,-230,4385,-596,-154,6488,-866\npa5ga0=-205,6664,-820,-201,6801,-835,-199,6767,-831,-178,7266,-873\npa5ga1=-200,7025,-858,-193,7170,-871,-186,7290,-879,-187,7227,-873\npa5ga2=-220,4616,-647,-183,5184,-694,-229,4227,-571,-223,4627,-631\npa5ga3=-263,4170,-599,-224,4905,-668,-230,4641,-625,-154,6744,-885\n#pa5gbw4080a0=-201,6883,-859,-198,7088,-881,-202,6968,-870,-210,6522,-820\n#pa5gbw4080a1=-217,6626,-832,-201,7517,-932,-201,7251,-896,-184,7500,-917\n#pa5gbw4080a2=-272,3585,-525,-193,5404,-740,-229,4201,-572,-230,4036,-550\n#pa5gbw4080a3=-278,3361,-486,-230,4794,-662,-268,3605,-508,-276,3337,-478\nmaxp2ga0=74\nmaxp2ga1=74\nmaxp5ga0=70,70,70,70\nmaxp5ga1=70,70,71,70\nsubband5gver=0x4\npaparambwver=3\npdoffset2g40mvalid=0\ncckpwroffset0=0x3\ncckpwroffset1=0x3\npdoffset2g40ma0=0x2\npdoffset2g40ma1=0x3\npdoffset40ma0=0x0022\npdoffset80ma0=0xceff\npdoffset40ma1=0x0123\npdoffset80ma1=0xdfff\ncckbw202gpo=0\ncckbw20ul2gpo=0\nmcsbw202gpo=0x44444444\nmcsbw402gpo=0x44444444\ndot11agofdmhrbw202gpo=0x2222\nofdmlrbw202gpo=0x0000\nmcsbw205glpo=0x44444444\nmcsbw405glpo=0x44444444\nmcsbw805glpo=0xCCCCCCCC\nmcsbw1605glpo=0\nmcsbw205gmpo=0x44444444\nmcsbw405gmpo=0x44444444\nmcsbw805gmpo=0xCCCCCCCC\nmcsbw1605gmpo=0\nmcsbw205ghpo=0x44444444\nmcsbw405ghpo=0x44444444\nmcsbw805ghpo=0xCCCCCCCC\nmcsbw1605ghpo=0\nmcslr5glpo=0x0000\nmcslr5gmpo=0x0000\nmcslr5ghpo=0x0000\nsb20in40hrpo=0x0\nsb20in80and160hr5glpo=0x0\nsb40and80hr5glpo=0x0\nsb20in80and160hr5gmpo=0x0\nsb40and80hr5gmpo=0x0\nsb20in80and160hr5ghpo=0x0\nsb40and80hr5ghpo=0x0\nsb20in40lrpo=0x0\nsb20in80and160lr5glpo=0x0\nsb40and80lr5glpo=0x0\nsb20in80and160lr5gmpo=0x0\nsb40and80lr5gmpo=0x0\nsb20in80and160lr5ghpo=0x0\nsb40and80lr5ghpo=0x0\ndot11agduphrpo=0x0\ndot11agduplrpo=0x0\nphycal_tempdelta=255\ntemps_period=15\ntemps_hysteresis=15\nltecxmux=0\nltecxpadnum=0x0504\nltecxfnsel=0x44\nltecxgcigpio=0x04\n#OOB params\n#device_wake_opt=1\n#host_wake_opt=0\nswctrlmap_2g=0x00000808,0x00001010,0x00001010,0x021010,0x3ff\nswctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x003\nswctrlmap_5g=0x00004040,0x00000000,0x00000000,0x000000,0x3e5\t\t\t\t\t\t\t\t\nswctrlmapext_5g=0x00000000,0x00000101,0x00000101,0x000000,0x003\nfem_table_init_val=0x00001010,0x00000000\nrssi_delta_5gl_c0=3,3,2,2,5,5\nrssi_delta_5gml_c0=0,2,0,2,3,5\nrssi_delta_5gmu_c0=0,2,0,2,3,5\nrssi_delta_5gh_c0=2,5,2,5,5,8\nrssi_delta_5gl_c1=1,1,2,2,3,3\nrssi_delta_5gml_c1=-1,1,0,2,1,3\nrssi_delta_5gmu_c1=-1,1,0,2,1,3\nrssi_delta_5gh_c1=0,3,2,5,3,6\nrssi_delta_2g_c0=4,5,4,5\nrssi_delta_2g_c1=2,3,2,3\n#muxenab=1\n#avs_enab=1\n\n# ###########  BTC Dynctl profile params  ############\n# flags:bit0 - dynctl enabled, bit1 dynamic desense, bit2 dynamic mode\nbtcdyn_flags=0x0\n#btcdyn_dflt_dsns_level=0\n#btcdyn_low_dsns_level=0\n#btcdyn_mid_dsns_level=7\n#btcdyn_high_dsns_level=2\n#btcdyn_default_btc_mode=5\n#btcdyn_btrssi_hyster=2\n# --- number of rows in the array vars below ---\n#btcdyn_msw_rows=3\n#btcdyn_dsns_rows=2\n# --- mode switch data rows (max is 4) ---\n#btcdyn_msw_row0=1,8,0,-50,-100\n#btcdyn_msw_row1=1,4,0,-55,-100\n#btcdyn_msw_row2=1,0,0,-70,-100\n#btcdyn_msw_row3=1,-4,0,-70,-100\n# --- desense switching data rows (max is 4) ---\n#btcdyn_dsns_row0=5,8,0,-40,-40\n#btcdyn_dsns_row0=5,4,0,-60,-60\n#btcdyn_dsns_row1=5,0,0,0,-75\npowoffs2gtna0=1,3,3,1,0,0,1,2,2,2,1,1,0,0\npowoffs2gtna1=-1,1,1,1,0,0,1,2,3,2,2,0,0,0\n#new Jan 4th\n#eps_shift0=-1,-6,-1,-5\n#eps_shift1=-4,-6,-1,-2\n#eps_shift2=-1,9,-2,-6\nmuxenab=0x10\n\n#bandedge\nfdss_level_2g=4,4\nfdss_level_5g=5,5\nfdss_interp_en=1\n"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/nvram_ap6398sr3.txt",
    "content": "#AP6398SR3_NVRAM_V1.0_20171106.txt\nNVRAMRev=$Rev: 528206 $\ncckdigfilttype=5\n#cckdigfilttype=4 (default)\n#valid ofdm filter types are 0 and 1\nofdmfilttype_2gbe=127\nofdmfilttype_5gbe=127\nsromrev=11\nboardrev=0x1301\nboardtype=0x0812\n# JIRA:SW4349-945 MANDATORY! Update makefile in case you touch bfl\n#boardflags=0x10081201\nboardflags=0x00000001\nboardflags2=0x40000000\nboardflags3=0x48700106\n#boardnum=57410 \nmacaddr=00:90:4c:27:80:01\nccode=0\nregrev=0\nantswitch=0\npdgain5g=0\npdgain2g=0\nlowpowerrange2g=0\nlowpowerrange5g=0\ntworangetssi2g=0\ntworangetssi5g=0\n# Low Power Range start value: 0dBm\nolpc_thresh2g=0\nolpc_thresh5g=0\nAvVmid_c0=2,130,2,130,2,130,2,130,2,130\nAvVmid_c1=2,130,2,130,2,130,2,130,2,130\n# JIRA:SW4349-945 MANDATORY! Update makefile in case you touch femctl\nfemctrl=14\nvendid=0x14e4\ndevid=0x43ef\nmanfid=0x2d0\n#prodid=0x052e\nnocrc=1\nbtc_mode=1\n#btc_params82=0x1a0\notpimagesize=502\nxtalfreq=37400\nrxgains2gelnagaina0=3\nrxgains2gtrisoa0=7\nrxgains2gtrelnabypa0=1\nrxgains5gelnagaina0=3\nrxgains5gtrisoa0=6\nrxgains5gtrelnabypa0=1\nrxgains5gmelnagaina0=3\nrxgains5gmtrisoa0=6\nrxgains5gmtrelnabypa0=1\nrxgains5ghelnagaina0=3\nrxgains5ghtrisoa0=6\nrxgains5ghtrelnabypa0=1\nrxgains2gelnagaina1=3\nrxgains2gtrisoa1=7\nrxgains2gtrelnabypa1=1\nrxgains5gelnagaina1=3\nrxgains5gtrisoa1=6\nrxgains5gtrelnabypa1=1\nrxgains5gmelnagaina1=3\nrxgains5gmtrisoa1=6\nrxgains5gmtrelnabypa1=1\nrxgains5ghelnagaina1=3\nrxgains5ghtrisoa1=6\nrxgains5ghtrelnabypa1=1\nrxchain=3\ntxchain=3\naa2g=3\naa5g=3\nagbg0=2\nagbg1=2\naga0=2\naga1=2\ntssipos2g=1\nextpagain2g=2\ntssipos5g=1\nextpagain5g=2\ntempthresh=255\ntempoffset=255\nrawtempsense=0x1ff\nfdss_interp_en=1\n#fdss_level_2g=3,3\nfdss_level_5g=4,4\n#pa2gccka0=-186,8076,-976\n#pa2gccka1=-217,7061,-881\n#pa2gccka2=-67,9864,-1253\n#pa2gccka3=-115,9164,-1225\n#pa2ga0=-196,6950,-832\n#pa2ga1=-204,6710,-809\n#pa2ga2=-220,4557,-593\n#pa2ga3=-218,4596,-601\npa2ga0=-193,7335,-862\npa2ga1=-202,6968,-828\npa2ga2=-220,4685,-607\npa2ga3=-218,4724,-615\n#pa5ga0=-191,6865,-844,-169,7525,-907,-168,7768,-938,-192,7073,-871\n#pa5ga1=-182,7580,-919,-188,7614,-931,-219,6536,-818,-202,7220,-895\n#pa5ga2=-220,4437,-628,-183,5005,-678,-229,4048,-551,-223,4448,-611\n#pa5ga3=-263,3914,-566,-224,4649,-640,-230,4385,-596,-154,6488,-866\npa5ga0=-201,6882,-843,-191,7173,-871,-193,7048,-861,-181,7214,-866\npa5ga1=-214,6467,-801,-210,6642,-821,-204,6742,-831,-204,6651,-819\npa5ga2=-220,4616,-647,-183,5184,-694,-229,4227,-571,-223,4627,-631\npa5ga3=-263,4170,-599,-224,4905,-668,-230,4641,-625,-154,6744,-885\n#pa5gbw4080a0=-201,6883,-859,-198,7088,-881,-202,6968,-870,-210,6522,-820\n#pa5gbw4080a1=-217,6626,-832,-201,7517,-932,-201,7251,-896,-184,7500,-917\n#pa5gbw4080a2=-272,3585,-525,-193,5404,-740,-229,4201,-572,-230,4036,-550\n#pa5gbw4080a3=-278,3361,-486,-230,4794,-662,-268,3605,-508,-276,3337,-478\nmaxp2ga0=70\nmaxp2ga1=72\nmaxp5ga0=61,61,62,62\nmaxp5ga1=61,61,62,60\nsubband5gver=0x4\npaparambwver=3\npdoffset2g40mvalid=0\ncckpwroffset0=0x3\ncckpwroffset1=0x3\npdoffset2g40ma0=0x2\npdoffset2g40ma1=0x3\npdoffset40ma0=0x0022\npdoffset80ma0=0xceff\npdoffset40ma1=0x0123\npdoffset80ma1=0xdfff\ncckbw202gpo=0\ncckbw20ul2gpo=0\nmcsbw202gpo=0x44444444\nmcsbw402gpo=0x44444444\ndot11agofdmhrbw202gpo=0x2222\nofdmlrbw202gpo=0x0000\nmcsbw205glpo=0x33233333\nmcsbw405glpo=0x33233333\nmcsbw805glpo=0x88888888\nmcsbw1605glpo=0\nmcsbw205gmpo=0x22222223\nmcsbw405gmpo=0x22444444\nmcsbw805gmpo=0x8AAAAAAB\nmcsbw1605gmpo=0\nmcsbw205ghpo=0x44333333\nmcsbw405ghpo=0x44444444\nmcsbw805ghpo=0x98888888\nmcsbw1605ghpo=0\nmcslr5glpo=0x0000\nmcslr5gmpo=0x0000\nmcslr5ghpo=0x0000\nsb20in40hrpo=0x0\nsb20in80and160hr5glpo=0x0\nsb40and80hr5glpo=0x0\nsb20in80and160hr5gmpo=0x0\nsb40and80hr5gmpo=0x0\nsb20in80and160hr5ghpo=0x0\nsb40and80hr5ghpo=0x0\nsb20in40lrpo=0x0\nsb20in80and160lr5glpo=0x0\nsb40and80lr5glpo=0x0\nsb20in80and160lr5gmpo=0x0\nsb40and80lr5gmpo=0x0\nsb20in80and160lr5ghpo=0x0\nsb40and80lr5ghpo=0x0\ndot11agduphrpo=0x0\ndot11agduplrpo=0x0\nphycal_tempdelta=255\ntemps_period=15\ntemps_hysteresis=15\nltecxmux=0\nltecxpadnum=0x0504\nltecxfnsel=0x44\nltecxgcigpio=0x04\n#OOB params\n#device_wake_opt=1\n#host_wake_opt=0\nswctrlmap_2g=0x00000808,0x00001010,0x00001010,0x021010,0x3ff\nswctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x003\nswctrlmap_5g=0x00004040,0x00000000,0x00000000,0x000000,0x3e5\t\t\t\t\t\t\t\t\nswctrlmapext_5g=0x00000000,0x00000101,0x00000101,0x000000,0x003\nfem_table_init_val=0x00001010,0x00000000\nrssi_delta_5gl_c0=3,3,2,2,5,5\nrssi_delta_5gml_c0=0,2,0,2,3,5\nrssi_delta_5gmu_c0=0,2,0,2,3,5\nrssi_delta_5gh_c0=2,5,2,5,5,8\nrssi_delta_5gl_c1=1,1,2,2,3,3\nrssi_delta_5gml_c1=-1,1,0,2,1,3\nrssi_delta_5gmu_c1=-1,1,0,2,1,3\nrssi_delta_5gh_c1=0,3,2,5,3,6\nrssi_delta_2g_c0=4,5,4,5\nrssi_delta_2g_c1=2,3,2,3\n#muxenab=1\n#avs_enab=1\n\n# ###########  BTC Dynctl profile params  ############\n# flags:bit0 - dynctl enabled, bit1 dynamic desense, bit2 dynamic mode\nbtcdyn_flags=0x0\n#btcdyn_dflt_dsns_level=0\n#btcdyn_low_dsns_level=0\n#btcdyn_mid_dsns_level=7\n#btcdyn_high_dsns_level=2\n#btcdyn_default_btc_mode=5\n#btcdyn_btrssi_hyster=2\n# --- number of rows in the array vars below ---\n#btcdyn_msw_rows=3\n#btcdyn_dsns_rows=2\n# --- mode switch data rows (max is 4) ---\n#btcdyn_msw_row0=1,8,0,-50,-100\n#btcdyn_msw_row1=1,4,0,-55,-100\n#btcdyn_msw_row2=1,0,0,-70,-100\n#btcdyn_msw_row3=1,-4,0,-70,-100\n# --- desense switching data rows (max is 4) ---\n#btcdyn_dsns_row0=5,8,0,-40,-40\n#btcdyn_dsns_row0=5,4,0,-60,-60\n#btcdyn_dsns_row1=5,0,0,0,-75\npowoffs2gtna0=1,3,3,1,0,0,1,2,2,2,1,1,0,0\npowoffs2gtna1=-1,1,1,1,0,0,1,2,3,2,2,0,0,0\n#new Jan 4th\n#eps_shift0=-1,-6,-1,-5\n#eps_shift1=-4,-6,-1,-2\n#eps_shift2=-1,9,-2,-6\nmuxenab=0x10\n\n#bandedge\nfdss_level_2g=4,4\nfdss_level_5g=5,5\nfdss_interp_en=1\n"
  },
  {
    "path": "board/radxacm3/overlay/lib/firmware/nvram_azw256.txt",
    "content": "# Cloned from bcm94345wlpagb_p2xx.txt \n\nNVRAMRev=$Rev: 498373 $\nsromrev=11\nvendid=0x14e4\ndevid=0x43ab\nmanfid=0x2d0\nprodid=0x06e4\nmacaddr=00:90:4c:c5:12:38\nnocrc=1\nboardtype=0x6e4\nboardrev=0x1304\n\n#XTAL 37.4MHz\nxtalfreq=37400\n\nbtc_mode=1\n#------------------------------------------------------\n#boardflags: 5GHz eTR switch by default\n#            2.4GHz eTR switch by default\n#            bit1 for btcoex\nboardflags=0x00480201\nboardflags2=0x40800000\nboardflags3=0x48200100\nphycal_tempdelta=15\nrxchain=1\ntxchain=1\naa2g=1\naa5g=1\ntssipos5g=1\ntssipos2g=1\nfemctrl=0\nAvVmid_c0=1,165,2,100,2,100,2,100,2,100\n\n#pa2ga0=-170,6462,-755\n#pa2ga1=-118,4850,-635\npa2ga0=-166,6659,-751\npa2ga1=-118,5285,-661\n\npa5ga0=-157,7297,-846,-157,7368,-849,-156,7436,-853,-152,7382,-847\npa5ga1=-142,4968,-659,-150,4973,-656,-156,4937,-650,-158,4901,-646\n\nitrsw=1\npdoffset2g40ma0=15\npdoffset40ma0=0x8888\npdoffset80ma0=0x8888\nextpagain5g=2\nextpagain2g=2\ntworangetssi2g=1\ntworangetssi5g=1\n# LTECX flags\n# WCI2\nltecxmux=0\nltecxpadnum=0x0504\nltecxfnsel=0x22\nltecxgcigpio=0x32\n\nmaxp2ga0=78\nofdmlrbw202gpo=0x0044\ndot11agofdmhrbw202gpo=0x4444\nmcsbw202gpo=0x66666666\nmcsbw402gpo=0x88888888\nmaxp5ga0=66,66,66,66\nmcsbw205glpo=0x22000000\nmcsbw205gmpo=0x22000000\nmcsbw205ghpo=0x22000000\nmcsbw405glpo=0x44444444\nmcsbw405gmpo=0x44444444\nmcsbw405ghpo=0x44444444\nmcsbw805glpo=0x66666666\nmcsbw805gmpo=0x66666666\nmcsbw805ghpo=0x66666666\n\nswctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff\nswctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe\nswctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3\nswctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3\n\nvcodivmode=1\ndeadman_to=481500000\n\ned_thresh2g=-54\ned_thresh5g=-54\neu_edthresh2g=-54\neu_edthresh5g=-54\nldo1=4\nrawtempsense=0x1ff\ncckPwrIdxCorr=3\ncckTssiDelay=150\nofdmTssiDelay=150\ntxpwr2gAdcScale=1\ntxpwr5gAdcScale=1\nlowpowerrange2g=0\nlowpowerrange5g=0\ndot11b_opts=0x3aa85\ncbfilttype=2\nfdsslevel_ch1=6\nfdsslevel_ch11=4\n\nmuxenab=0x10\n"
  },
  {
    "path": "board/radxacm3/overlay/usr/libexec/btuart",
    "content": "#!/bin/bash\n\nBRCM_PATCHRAM=\"/usr/libexec/brcm_patchram_plus1\"\nUART_DEV=\"/dev/ttyS1\"\nSARADC_IN1=$(cat /sys/bus/iio/devices/iio:device0/in_voltage1_raw)\n\nif [[ \"${SARADC_IN1}\" -ge 634 ]] && [[ \"${SARADC_IN1}\" -le 746 ]]; then\n    FIRMWARE_FILE=\"/lib/firmware/brcm/BCM4345C0.hcd\"\nelse\n    FIRMWARE_FILE=\"/lib/firmware/brcm/BCM4345C5.hcd\"\nfi\n\nfunction btuart_start() {\n    # Reset Bluetooth via GPIO\n    echo \"Blocking BT rfkill\"\n    rfkill block bluetooth\n    sleep 1\n    \n    echo \"Unblocking BT rfkill\"\n    rfkill unblock bluetooth\n    sleep 1\n\n    ${BRCM_PATCHRAM} --enable_hci --no2bytes --use_baudrate_for_download --tosleep 200000 --baudrate 1500000 --patchram ${FIRMWARE_FILE} ${UART_DEV}\n}\n\nfunction btuart_stop() {\n    killall $(basename ${BRCM_PATCHRAM}) &>/dev/null\n}\n"
  },
  {
    "path": "board/radxacm3/overlay/usr/libexec/fw-prepare-boot",
    "content": "#!/bin/bash\n\necho \"initrd=initrd.gz\" >> /boot/uEnv.txt\n"
  },
  {
    "path": "board/radxacm3/overlay-initramfs/remove_initramfs",
    "content": "#!/bin/sh\n\ncat /boot/uEnv.txt | grep -v initrd > /boot/uEnv.txt.new\nmv /boot/uEnv.txt.new /boot/uEnv.txt\n"
  },
  {
    "path": "board/radxacm3/postscript.sh",
    "content": "#!/bin/bash\n\nradxa_mkimage=\"${BUILD_DIR}/uboot-custom/tools/mkimage\"\n${radxa_mkimage} -n rk3568 -T rksd -d ${BOARD_DIR}/rk3566_ddr_1056MHz_v1.10.bin:${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/idbloader.img\n\nmkdir -p ${TARGET_DIR}/vendor/etc\nrm -f ${TARGET_DIR}/vendor/etc/firmware\nln -sf /lib/firmware ${TARGET_DIR}/vendor/etc/firmware\n\nmkdir -p ${BOOT_DIR}/overlays\ncp ${BINARIES_DIR}/rk3566-radxa-cm3-rpi-cm4-io.dtb ${BOOT_DIR}\ncp ${BUILD_DIR}/linux-custom/arch/arm64/boot/dts/rockchip/overlay/*.dtbo ${BOOT_DIR}/overlays\ncp ${BINARIES_DIR}/boot.scr ${BOOT_DIR}\ncp ${BINARIES_DIR}/Image ${BOOT_DIR}\ncp ${BOARD_DIR}/initrd.gz ${BOOT_DIR}\ncp ${BOARD_DIR}/uEnv.txt ${BOOT_DIR}\n"
  },
  {
    "path": "board/radxacm3/uEnv.txt",
    "content": "kernel=Image\nfdt=rk3566-radxa-cm3-rpi-cm4-io.dtb\ncmdline=rootwait ro rootflags=noload panic=10 hung_task_panic=1 quiet loglevel=1\noverlays=rk3568-uart0 rk3568-disable-npu\n"
  },
  {
    "path": "board/radxacm3/writeimage.sh",
    "content": "#!/bin/bash -e\n\n\nfunction usage() {\n    cat <<END_USAGE\nUsage: $0 [options...]\n\nAvailable options:\n    <-i image_file> - indicates the path to the image file (e.g. -i /home/user/Download/file.img.xz)\nEND_USAGE\n    exit 1\n}\n\nfunction msg() {\n    echo \" * $1\"\n}\n\nif [[ -z \"$1\" ]]; then\n    usage 1>&2\nfi\n\nif [[ $(id -u) -ne 0 ]]; then\n    msg \"please run as root\"\n    exit 1\nfi\n\nBOARD_DIR=$(dirname $0)\n\nrkbin=${BOARD_DIR}/../../output/$(basename ${BOARD_DIR})/images/rkbin\nrkdeveloptool=${rkbin}/tools/rkdeveloptool\nflash_boot_loader=${BOARD_DIR}/flash-boot-loader.bin\n\nwhile getopts \"a:d:f:h:i:lm:n:o:p:s:w\" o; do\n    case \"${o}\" in\n        i)\n            DISK_IMG=${OPTARG}\n            ;;\n        *)\n            usage 1>&2\n            ;;\n    esac\ndone\n\nif [[ -z \"${DISK_IMG}\" ]]; then\n    usage 1>&2\nfi\n\nif ! [[ -f \"${DISK_IMG}\" ]]; then\n    echo \"could not find image file $DISK_IMG\"\n    exit 1\nfi\n\ngunzip=$(which unpigz 2> /dev/null || which gunzip 2> /dev/null || true)\nunxz=$(which unxz 2> /dev/null || true)\n\nif [[ ${DISK_IMG} == *.gz ]]; then\n    if [[ -z \"$gunzip\" ]]; then\n        msg \"make sure you have the gzip package installed\"\n        exit 1\n    fi\n    msg \"decompressing the .gz compressed image\"\n    ${gunzip} -c \"${DISK_IMG}\" > \"${DISK_IMG%???}\"\n    DISK_IMG=${DISK_IMG%???}\nelif [[ ${DISK_IMG} == *.xz ]]; then\n    if [[ -z \"${unxz}\" ]]; then\n        msg \"make sure you have the xz package installed\"\n        exit 1\n    fi\n    msg \"decompressing the .xz compressed image\"\n    ${unxz} -T 0 -c \"${DISK_IMG}\" > \"${DISK_IMG%???}\"\n    DISK_IMG=${DISK_IMG%???}\nfi\n\nif ${rkdeveloptool} ld 2>&1 | grep -iq maskrom; then\n    msg \"device in maskrom mode detected\"\n    msg \"downloading flash bootloader\"\n    ${rkdeveloptool} db \"${flash_boot_loader}\"\nelif ${rkdeveloptool} ld 2>&1 | grep -iq loader; then\n    msg \"device in loader mode detected\"\nelse\n    msg \"make sure your device is connected and in maskrom or loader mode\"\n    exit 1\nfi\n\nmsg \"writing OS image to flash\"\n${rkdeveloptool} wl 0 \"${DISK_IMG}\"\n\nmsg \"you can now reset your device!\"\n"
  },
  {
    "path": "board/raspberrypi/cleanups.sh",
    "content": "#!/bin/bash\n\nTARGET=$1\ntest -n \"${TARGET}\" || exit 1\n\nrm -rf ${TARGET}/opt/vc/src\nrm -rf ${TARGET}/opt/vc/include\nrm -rf ${TARGET}/usr/bin/dtoverlay-*\n"
  },
  {
    "path": "board/raspberrypi/cmdline.txt",
    "content": "dwc_otg.fiq_fix_enable=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait ro rootflags=noload panic=10 hung_task_panic=1 quiet loglevel=1\n"
  },
  {
    "path": "board/raspberrypi/config.txt",
    "content": "kernel=zImage\ngpu_mem=32\ndtparam=i2c_arm=on\ndtparam=i2s=on\ndtparam=spi=on\ndtparam=audio=on\nforce_eeprom_read=0\ndisable_poe_fan=1\nboot_delay=2\n"
  },
  {
    "path": "board/raspberrypi/cpinitramfs.sh",
    "content": "#!/bin/bash\n\ncp ${BINARIES_DIR}/rootfs.cpio.gz ${BOARD_DIR}/initrd.gz\n"
  },
  {
    "path": "board/raspberrypi/overlay/etc/board",
    "content": "raspberrypi\n"
  },
  {
    "path": "board/raspberrypi/overlay/etc/init.d/S07dtoverlays",
    "content": "#!/bin/bash\n\nSYS_DTOVERLAYS_FILE=\"/etc/dtoverlays\"\nBOOT_DTOVERLAYS_FILE=\"/boot/dtoverlays\"\nDTOVERLAYS_FILE=\"/data/etc/dtoverlays\"\n\nPROG=\"/usr/bin/dtoverlay\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ncase \"$1\" in\n    start)\n        msg_begin \"Loading device-tree overlays\"\n\n        if [[ -r ${SYS_DTOVERLAYS_FILE} ]]; then\n            cat ${SYS_DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        if [[ -r ${BOOT_DTOVERLAYS_FILE} ]]; then\n            cat ${BOOT_DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        if [[ -r ${DTOVERLAYS_FILE} ]]; then\n            cat ${DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        msg_done\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/raspberrypi/overlay/etc/init.d/S11throttlewatch",
    "content": "#!/bin/bash\n\nCHECK_INTERVAL=60\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nget_throttled_now() {\n    t=$(vcgencmd get_throttled | cut -d '=' -f 2)\n    test $((t & 1)) -ne 0 && echo -n \"under-voltage \"\n    test $((t & 2)) -ne 0 && echo -n \"arm-frequency-capped \"\n    test $((t & 4)) -ne 0 && echo -n \"throttled \"\n}\n\nget_throttled_since_boot() {\n    t=$(vcgencmd get_throttled | cut -d '=' -f 2)\n    test $((t &  65536)) -ne 0 && echo -n \"under-voltage \"\n    test $((t & 131072)) -ne 0 && echo -n \"arm-frequency-capped \"\n    test $((t & 262144)) -ne 0 && echo -n \"throttled \"\n}\n\nget_temp() {\n    t=$(</sys/class/thermal/thermal_zone0/temp)\n    echo \"$((t / 1000))\"\n}\n\nwatch_now() {\n    while true; do\n        th=$(get_throttled_now)\n        te=$(get_temp)\n        logger -t throttlewatch \"currently: ${th:-ok}, temperature: ${te} C\"\n\n        sleep ${CHECK_INTERVAL}\n    done\n}\n\nwatch_since_boot() {\n    while true; do\n        t=$(get_throttled_since_boot)\n        if [[ -n \"${t}\" ]]; then\n            logger -t throttlewatch \"since boot: ${t}\"\n            break\n        fi\n        \n        sleep ${CHECK_INTERVAL}\n    done\n}\n\ncase \"$1\" in\n    start)\n        msg_begin \"Starting throttle watcher\"\n        watch_now &\n        watch_since_boot &\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    stop)\n        msg_begin \"Stopping throttle watcher\"\n        ps | grep throttlewatch | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    *)\n        echo $\"Usage: $0 {start|stop}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/raspberrypi/overlay/etc/ld.so.preload",
    "content": "/usr/lib/libarmmem.so\n"
  },
  {
    "path": "board/raspberrypi/overlay/etc/modprobe.d/blacklist-rtl8192cu.conf",
    "content": "blacklist rtl8192cu\n"
  },
  {
    "path": "board/raspberrypi/overlay/etc/modules",
    "content": "i2c-bcm2708\ni2c-dev\n"
  },
  {
    "path": "board/raspberrypi/overlay/etc/udev/rules.d/99-com.rules",
    "content": "SUBSYSTEM==\"input\", GROUP=\"input\", MODE=\"0660\"\nSUBSYSTEM==\"i2c-dev\", GROUP=\"i2c\", MODE=\"0660\"\nSUBSYSTEM==\"spidev\", GROUP=\"spi\", MODE=\"0660\"\nSUBSYSTEM==\"bcm2835-gpiomem\", GROUP=\"gpio\", MODE=\"0660\"\n\nSUBSYSTEM==\"gpio*\", PROGRAM=\"/bin/sh -c '\\\n\tchown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\\\n\tchown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio;\\\n\tchown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\\\n'\"\n\nKERNEL==\"ttyAMA[01]\", PROGRAM=\"/bin/sh -c '\\\n\tALIASES=/proc/device-tree/aliases; \\\n\tif cmp -s $ALIASES/uart0 $ALIASES/serial0; then \\\n\t\techo 0;\\\n\telif cmp -s $ALIASES/uart0 $ALIASES/serial1; then \\\n\t\techo 1; \\\n\telse \\\n\t\texit 1; \\\n\tfi\\\n'\", SYMLINK+=\"serial%c\"\n\nKERNEL==\"ttyS0\", PROGRAM=\"/bin/sh -c '\\\n\tALIASES=/proc/device-tree/aliases; \\\n\tif cmp -s $ALIASES/uart1 $ALIASES/serial0; then \\\n\t\techo 0; \\\n\telif cmp -s $ALIASES/uart1 $ALIASES/serial1; then \\\n\t\techo 1; \\\n\telse \\\n\t\texit 1; \\\n\tfi \\\n'\", SYMLINK+=\"serial%c\"\n"
  },
  {
    "path": "board/raspberrypi/overlay/usr/libexec/btuart",
    "content": "#!/bin/bash\n\nfunction btuart_start() {\n    if ! [ -d \"/proc/device-tree/soc/gpio@7e200000/uart0_pins\" ]; then\n        touch ${NO_ON_BOARD_BT}\n        exit 0  # no rpi bluetooth detected\n    fi\n\n    if [[ \"$(cat /proc/device-tree/aliases/uart0)\" = \"$(cat /proc/device-tree/aliases/serial1)\" ]] ; then\n        if [[ \"$(wc -c /proc/device-tree/soc/gpio@7e200000/uart0_pins/brcm\\,pins | cut -f 1 -d ' ')\" = \"16\" ]]; then\n            /usr/bin/btattach -B /dev/serial1 -P bcm -S 3000000 &>/dev/null\n        else\n            /usr/bin/btattach -B /dev/serial1 -P bcm -S 921600 -N &>/dev/null\n        fi\n    else\n        /usr/bin/btattach -B /dev/serial1 -P bcm -S 460800 -N &>/dev/null\n    fi\n}\n\nfunction btuart_stop() {\n    if ! [ -d \"/proc/device-tree/soc/gpio@7e200000/uart0_pins\" ]; then\n        exit 0  # no rpi bluetooth detected\n    fi\n\n    killall btattach &>/dev/null\n}\n"
  },
  {
    "path": "board/raspberrypi/overlay/usr/libexec/fw-prepare-boot",
    "content": "#!/bin/bash\n\necho >> /boot/config.txt\necho \"initramfs initrd.gz\" >> /boot/config.txt\n"
  },
  {
    "path": "board/raspberrypi/overlay-initramfs/remove_initramfs",
    "content": "#!/bin/sh\n\nsed -i 's/^initramfs.*//g' /boot/config.txt\nsed -i '/^ *$/d' /boot/config.txt  # Remove blank lines\n"
  },
  {
    "path": "board/raspberrypi/postscript.sh",
    "content": "#!/bin/bash\n\nmkdir -p ${BOOT_DIR}/overlays\n\ncp ${BOARD_DIR}/config.txt ${BOOT_DIR}\ncp ${BOARD_DIR}/cmdline.txt ${BOOT_DIR}\ncp ${BOARD_DIR}/initrd.gz ${BOOT_DIR}\ncp ${BINARIES_DIR}/zImage ${BOOT_DIR}\ncp ${BINARIES_DIR}/*.dtb ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/bootcode.bin ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/start*.elf ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/fixup*.dat ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/overlays/*.dtbo ${BOOT_DIR}/overlays\n"
  },
  {
    "path": "board/raspberrypi/update-firmware-kernel.sh",
    "content": "#!/bin/bash\n\nif [[ -z \"$1\" ]]; then\n    echo \"Updates rpi-firmware package to the indicated commit hash or version.\"\n    echo \"Then updates the Linux kernel version for all Raspberry PI boards accordingly.\"\n    echo \"Usage: $0 <version_or_commit>\"\n    exit 1\nfi\n\n# Supported Raspberry Pi platforms\nBOARDS=\"raspberrypi raspberrypi2 raspberrypi3 raspberrypi4 raspberrypi64\"\n\nversion=$1\nurl=https://github.com/raspberrypi/firmware/archive/${version}.tar.gz\nbase_dir=$(realpath $(dirname $0)/../..)\ndl_dir=${base_dir}/dl\npackage_dir=${base_dir}/package/rpi-firmware\narchive_file=rpi-firmware-${version}.tar.gz\n\necho \"Downloading archive from ${url}\"\ncurl -L \"${url}\" -o \"${dl_dir}/${archive_file}\"\nchecksum=$(sha256sum \"${dl_dir}/${archive_file}\" | cut -d ' ' -f 1)\n\necho \"Updating rpi-firmware package to ${version}\"\nsed -i \"s/RPI_FIRMWARE_VERSION = .*/RPI_FIRMWARE_VERSION = ${version}/\" \"${package_dir}/rpi-firmware.mk\"\nsed -ri \"s/sha256(\\s+)[a-f0-9]+(\\s+)rpi-firmware-.*/sha256\\1${checksum}\\2${archive_file}/\" \"${package_dir}/rpi-firmware.hash\"\n\ntmp_dir=$(mktemp -d)\necho \"Extracting ${archive_file}\"\ntar xf \"${dl_dir}/${archive_file}\" -C \"${tmp_dir}\"\nkernel_version=$(cat \"${tmp_dir}/firmware-${version}/extra/git_hash\")\nrm -rf \"${tmp_dir}\"\n\nconf=BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION\nbase_url=https://github.com/raspberrypi/linux/archive/\next=.tar.gz\nfor board in ${BOARDS}; do\n    echo \"Updating Linux kernel version to ${kernel_version} for ${board}\"\n    sed -ri \"s,${conf}=\\\"${base_url}[a-f0-9]+${ext}\\\",${conf}=\\\"${base_url}${kernel_version}${ext}\\\",\" \\\n        \"${base_dir}/configs/${board}_defconfig\"\ndone\n\necho \"Committing changes\"\ncd ${base_dir}\ngit add package/rpi-firmware\ngit commit -m \"rpi-firmware: Update to ${version}\"\ngit add configs\ngit commit -m \"raspberrypi(all): Update kernel to ${kernel_version}\"\n\necho \"Done!\"\n"
  },
  {
    "path": "board/raspberrypi/update-userland.sh",
    "content": "#!/bin/bash\n\nif [[ -z \"$1\" ]]; then\n    echo \"Updates rpi-userland package version to the indicated commit hash or version.\"\n    echo \"Usage: $0 <version_or_commit>\"\n    exit 1\nfi\n\nversion=$1\nurl=https://github.com/raspberrypi/userland/archive/${version}.tar.gz\nbase_dir=$(realpath $(dirname $0)/../..)\ndl_dir=${base_dir}/dl\npackage_dir=${base_dir}/package/rpi-userland\narchive_file=rpi-userland-${version}.tar.gz\n\necho \"Downloading archive from ${url}\"\ncurl -L \"${url}\" -o \"${dl_dir}/${archive_file}\"\nchecksum=$(sha256sum \"${dl_dir}/${archive_file}\" | cut -d ' ' -f 1)\n\necho \"Updating rpi-userland package to ${version}\"\nsed -i \"s/RPI_USERLAND_VERSION = .*/RPI_USERLAND_VERSION = ${version}/\" \"${package_dir}/rpi-userland.mk\"\nsed -ri \"s/sha256(\\s+)[a-f0-9]+(\\s+)rpi-userland-.*/sha256\\1${checksum}\\2${archive_file}/\" \"${package_dir}/rpi-userland.hash\"\n\necho \"Committing changes\"\ncd ${base_dir}\ngit add package/rpi-userland\ngit commit -m \"rpi-userland: Update to ${version}\"\n\necho \"Done!\"\n"
  },
  {
    "path": "board/raspberrypi2/cmdline.txt",
    "content": "dwc_otg.fiq_fix_enable=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait ro rootflags=noload panic=10 hung_task_panic=1 quiet loglevel=1\n"
  },
  {
    "path": "board/raspberrypi2/config.txt",
    "content": "kernel=zImage\ngpu_mem=32\ndtparam=i2c_arm=on\ndtparam=i2s=on\ndtparam=spi=on\ndtparam=audio=on\nforce_eeprom_read=0\ndisable_poe_fan=1\nboot_delay=2\n"
  },
  {
    "path": "board/raspberrypi2/overlay/etc/board",
    "content": "raspberrypi2\n"
  },
  {
    "path": "board/raspberrypi2/overlay/etc/init.d/S07dtoverlays",
    "content": "#!/bin/bash\n\nSYS_DTOVERLAYS_FILE=\"/etc/dtoverlays\"\nBOOT_DTOVERLAYS_FILE=\"/boot/dtoverlays\"\nDTOVERLAYS_FILE=\"/data/etc/dtoverlays\"\n\nPROG=\"/usr/bin/dtoverlay\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ncase \"$1\" in\n    start)\n        msg_begin \"Loading device-tree overlays\"\n\n        if [[ -r ${SYS_DTOVERLAYS_FILE} ]]; then\n            cat ${SYS_DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        if [[ -r ${BOOT_DTOVERLAYS_FILE} ]]; then\n            cat ${BOOT_DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        if [[ -r ${DTOVERLAYS_FILE} ]]; then\n            cat ${DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        msg_done\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/raspberrypi2/overlay/etc/init.d/S11throttlewatch",
    "content": "#!/bin/bash\n\nCHECK_INTERVAL=60\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nget_throttled_now() {\n    t=$(vcgencmd get_throttled | cut -d '=' -f 2)\n    test $((t & 1)) -ne 0 && echo -n \"under-voltage \"\n    test $((t & 2)) -ne 0 && echo -n \"arm-frequency-capped \"\n    test $((t & 4)) -ne 0 && echo -n \"throttled \"\n}\n\nget_throttled_since_boot() {\n    t=$(vcgencmd get_throttled | cut -d '=' -f 2)\n    test $((t &  65536)) -ne 0 && echo -n \"under-voltage \"\n    test $((t & 131072)) -ne 0 && echo -n \"arm-frequency-capped \"\n    test $((t & 262144)) -ne 0 && echo -n \"throttled \"\n}\n\nget_temp() {\n    t=$(</sys/class/thermal/thermal_zone0/temp)\n    echo \"$((t / 1000))\"\n}\n\nwatch_now() {\n    while true; do\n        th=$(get_throttled_now)\n        te=$(get_temp)\n        logger -t throttlewatch \"currently: ${th:-ok}, temperature: ${te} C\"\n\n        sleep ${CHECK_INTERVAL}\n    done\n}\n\nwatch_since_boot() {\n    while true; do\n        t=$(get_throttled_since_boot)\n        if [[ -n \"${t}\" ]]; then\n            logger -t throttlewatch \"since boot: ${t}\"\n            break\n        fi\n        \n        sleep ${CHECK_INTERVAL}\n    done\n}\n\ncase \"$1\" in\n    start)\n        msg_begin \"Starting throttle watcher\"\n        watch_now &\n        watch_since_boot &\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    stop)\n        msg_begin \"Stopping throttle watcher\"\n        ps | grep throttlewatch | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    *)\n        echo $\"Usage: $0 {start|stop}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/raspberrypi2/overlay/etc/ld.so.preload",
    "content": "/usr/lib/libarmmem.so\n"
  },
  {
    "path": "board/raspberrypi2/overlay/etc/modprobe.d/blacklist-rtl8192cu.conf",
    "content": "blacklist rtl8192cu\n"
  },
  {
    "path": "board/raspberrypi2/overlay/etc/modules",
    "content": "i2c-bcm2708\ni2c-dev\n"
  },
  {
    "path": "board/raspberrypi2/overlay/usr/libexec/fw-prepare-boot",
    "content": "#!/bin/bash\n\necho >> /boot/config.txt\necho \"initramfs initrd.gz\" >> /boot/config.txt\n"
  },
  {
    "path": "board/raspberrypi2/postscript.sh",
    "content": "#!/bin/bash\n\nmkdir -p ${BOOT_DIR}/overlays\n\ncp ${BOARD_DIR}/config.txt ${BOOT_DIR}\ncp ${BOARD_DIR}/cmdline.txt ${BOOT_DIR}\ncp ${BOARD_DIR}/initrd.gz ${BOOT_DIR}\ncp ${BINARIES_DIR}/zImage ${BOOT_DIR}\ncp ${BINARIES_DIR}/*.dtb ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/bootcode.bin ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/start*.elf ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/fixup*.dat ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/overlays/*.dtbo ${BOOT_DIR}/overlays\n"
  },
  {
    "path": "board/raspberrypi3/cmdline.txt",
    "content": "dwc_otg.fiq_fix_enable=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait ro rootflags=noload panic=10 hung_task_panic=1 quiet loglevel=1\n"
  },
  {
    "path": "board/raspberrypi3/config.txt",
    "content": "kernel=zImage\ngpu_mem=32\ndtparam=i2c_arm=on\ndtparam=i2s=on\ndtparam=spi=on\ndtparam=audio=on\nforce_eeprom_read=0\ndisable_poe_fan=1\nboot_delay=2\n"
  },
  {
    "path": "board/raspberrypi3/overlay/etc/board",
    "content": "raspberrypi3\n"
  },
  {
    "path": "board/raspberrypi3/overlay/etc/init.d/S07dtoverlays",
    "content": "#!/bin/bash\n\nSYS_DTOVERLAYS_FILE=\"/etc/dtoverlays\"\nBOOT_DTOVERLAYS_FILE=\"/boot/dtoverlays\"\nDTOVERLAYS_FILE=\"/data/etc/dtoverlays\"\n\nPROG=\"/usr/bin/dtoverlay\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ncase \"$1\" in\n    start)\n        msg_begin \"Loading device-tree overlays\"\n\n        if [[ -r ${SYS_DTOVERLAYS_FILE} ]]; then\n            cat ${SYS_DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        if [[ -r ${BOOT_DTOVERLAYS_FILE} ]]; then\n            cat ${BOOT_DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        if [[ -r ${DTOVERLAYS_FILE} ]]; then\n            cat ${DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        msg_done\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/raspberrypi3/overlay/etc/init.d/S11throttlewatch",
    "content": "#!/bin/bash\n\nCHECK_INTERVAL=60\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nget_throttled_now() {\n    t=$(vcgencmd get_throttled | cut -d '=' -f 2)\n    test $((t & 1)) -ne 0 && echo -n \"under-voltage \"\n    test $((t & 2)) -ne 0 && echo -n \"arm-frequency-capped \"\n    test $((t & 4)) -ne 0 && echo -n \"throttled \"\n}\n\nget_throttled_since_boot() {\n    t=$(vcgencmd get_throttled | cut -d '=' -f 2)\n    test $((t &  65536)) -ne 0 && echo -n \"under-voltage \"\n    test $((t & 131072)) -ne 0 && echo -n \"arm-frequency-capped \"\n    test $((t & 262144)) -ne 0 && echo -n \"throttled \"\n}\n\nget_temp() {\n    t=$(</sys/class/thermal/thermal_zone0/temp)\n    echo \"$((t / 1000))\"\n}\n\nwatch_now() {\n    while true; do\n        th=$(get_throttled_now)\n        te=$(get_temp)\n        logger -t throttlewatch \"currently: ${th:-ok}, temperature: ${te} C\"\n\n        sleep ${CHECK_INTERVAL}\n    done\n}\n\nwatch_since_boot() {\n    while true; do\n        t=$(get_throttled_since_boot)\n        if [[ -n \"${t}\" ]]; then\n            logger -t throttlewatch \"since boot: ${t}\"\n            break\n        fi\n        \n        sleep ${CHECK_INTERVAL}\n    done\n}\n\ncase \"$1\" in\n    start)\n        msg_begin \"Starting throttle watcher\"\n        watch_now &\n        watch_since_boot &\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    stop)\n        msg_begin \"Stopping throttle watcher\"\n        ps | grep throttlewatch | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    *)\n        echo $\"Usage: $0 {start|stop}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/raspberrypi3/overlay/etc/ld.so.preload",
    "content": "/usr/lib/libarmmem.so\n"
  },
  {
    "path": "board/raspberrypi3/overlay/etc/modprobe.d/blacklist-rtl8192cu.conf",
    "content": "blacklist rtl8192cu\n"
  },
  {
    "path": "board/raspberrypi3/overlay/etc/modules",
    "content": "i2c-bcm2708\ni2c-dev\n"
  },
  {
    "path": "board/raspberrypi3/overlay/etc/udev/rules.d/99-com.rules",
    "content": "SUBSYSTEM==\"input\", GROUP=\"input\", MODE=\"0660\"\nSUBSYSTEM==\"i2c-dev\", GROUP=\"i2c\", MODE=\"0660\"\nSUBSYSTEM==\"spidev\", GROUP=\"spi\", MODE=\"0660\"\nSUBSYSTEM==\"bcm2835-gpiomem\", GROUP=\"gpio\", MODE=\"0660\"\n\nSUBSYSTEM==\"gpio*\", PROGRAM=\"/bin/sh -c '\\\n\tchown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\\\n\tchown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio;\\\n\tchown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\\\n'\"\n\nKERNEL==\"ttyAMA[01]\", PROGRAM=\"/bin/sh -c '\\\n\tALIASES=/proc/device-tree/aliases; \\\n\tif cmp -s $ALIASES/uart0 $ALIASES/serial0; then \\\n\t\techo 0;\\\n\telif cmp -s $ALIASES/uart0 $ALIASES/serial1; then \\\n\t\techo 1; \\\n\telse \\\n\t\texit 1; \\\n\tfi\\\n'\", SYMLINK+=\"serial%c\"\n\nKERNEL==\"ttyS0\", PROGRAM=\"/bin/sh -c '\\\n\tALIASES=/proc/device-tree/aliases; \\\n\tif cmp -s $ALIASES/uart1 $ALIASES/serial0; then \\\n\t\techo 0; \\\n\telif cmp -s $ALIASES/uart1 $ALIASES/serial1; then \\\n\t\techo 1; \\\n\telse \\\n\t\texit 1; \\\n\tfi \\\n'\", SYMLINK+=\"serial%c\"\n"
  },
  {
    "path": "board/raspberrypi3/overlay/usr/libexec/btuart",
    "content": "#!/bin/bash\n\nfunction btuart_start() {\n    if ! [ -d \"/proc/device-tree/soc/gpio@7e200000/uart0_pins\" ]; then\n        touch ${NO_ON_BOARD_BT}\n        exit 0  # no rpi bluetooth detected\n    fi\n\n    if [[ \"$(cat /proc/device-tree/aliases/uart0)\" = \"$(cat /proc/device-tree/aliases/serial1)\" ]] ; then\n        if [[ \"$(wc -c /proc/device-tree/soc/gpio@7e200000/uart0_pins/brcm\\,pins | cut -f 1 -d ' ')\" = \"16\" ]]; then\n            /usr/bin/btattach -B /dev/serial1 -P bcm -S 3000000 &>/dev/null\n        else\n            /usr/bin/btattach -B /dev/serial1 -P bcm -S 921600 -N &>/dev/null\n        fi\n    else\n        /usr/bin/btattach -B /dev/serial1 -P bcm -S 460800 -N &>/dev/null\n    fi\n}\n\nfunction btuart_stop() {\n    if ! [ -d \"/proc/device-tree/soc/gpio@7e200000/uart0_pins\" ]; then\n        exit 0  # no rpi bluetooth detected\n    fi\n\n    killall btattach &>/dev/null\n}\n"
  },
  {
    "path": "board/raspberrypi3/overlay/usr/libexec/fw-prepare-boot",
    "content": "#!/bin/bash\n\necho >> /boot/config.txt\necho \"initramfs initrd.gz\" >> /boot/config.txt\n"
  },
  {
    "path": "board/raspberrypi3/postscript.sh",
    "content": "#!/bin/bash\n\nmkdir -p ${BOOT_DIR}/overlays\n\ncp ${BOARD_DIR}/config.txt ${BOOT_DIR}\ncp ${BOARD_DIR}/cmdline.txt ${BOOT_DIR}\ncp ${BOARD_DIR}/initrd.gz ${BOOT_DIR}\ncp ${BINARIES_DIR}/zImage ${BOOT_DIR}\ncp ${BINARIES_DIR}/*.dtb ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/bootcode.bin ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/start*.elf ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/fixup*.dat ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/overlays/*.dtbo ${BOOT_DIR}/overlays\n"
  },
  {
    "path": "board/raspberrypi4/cmdline.txt",
    "content": "dwc_otg.fiq_fix_enable=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait ro rootflags=noload panic=10 hung_task_panic=1 quiet loglevel=1\n"
  },
  {
    "path": "board/raspberrypi4/config.txt",
    "content": "kernel=zImage\ngpu_mem=32\ndtparam=i2c_arm=on\ndtparam=i2s=on\ndtparam=spi=on\ndtparam=audio=on\nforce_eeprom_read=0\ndisable_poe_fan=1\nboot_delay=2\n"
  },
  {
    "path": "board/raspberrypi4/overlay/etc/board",
    "content": "raspberrypi4\n"
  },
  {
    "path": "board/raspberrypi4/overlay/etc/init.d/S07dtoverlays",
    "content": "#!/bin/bash\n\nSYS_DTOVERLAYS_FILE=\"/etc/dtoverlays\"\nBOOT_DTOVERLAYS_FILE=\"/boot/dtoverlays\"\nDTOVERLAYS_FILE=\"/data/etc/dtoverlays\"\n\nPROG=\"/usr/bin/dtoverlay\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ncase \"$1\" in\n    start)\n        msg_begin \"Loading device-tree overlays\"\n\n        if [[ -r ${SYS_DTOVERLAYS_FILE} ]]; then\n            cat ${SYS_DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        if [[ -r ${BOOT_DTOVERLAYS_FILE} ]]; then\n            cat ${BOOT_DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        if [[ -r ${DTOVERLAYS_FILE} ]]; then\n            cat ${DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        msg_done\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/raspberrypi4/overlay/etc/init.d/S11throttlewatch",
    "content": "#!/bin/bash\n\nCHECK_INTERVAL=60\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nget_throttled_now() {\n    t=$(vcgencmd get_throttled | cut -d '=' -f 2)\n    test $((t & 1)) -ne 0 && echo -n \"under-voltage \"\n    test $((t & 2)) -ne 0 && echo -n \"arm-frequency-capped \"\n    test $((t & 4)) -ne 0 && echo -n \"throttled \"\n}\n\nget_throttled_since_boot() {\n    t=$(vcgencmd get_throttled | cut -d '=' -f 2)\n    test $((t &  65536)) -ne 0 && echo -n \"under-voltage \"\n    test $((t & 131072)) -ne 0 && echo -n \"arm-frequency-capped \"\n    test $((t & 262144)) -ne 0 && echo -n \"throttled \"\n}\n\nget_temp() {\n    t=$(</sys/class/thermal/thermal_zone0/temp)\n    echo \"$((t / 1000))\"\n}\n\nwatch_now() {\n    while true; do\n        th=$(get_throttled_now)\n        te=$(get_temp)\n        logger -t throttlewatch \"currently: ${th:-ok}, temperature: ${te} C\"\n\n        sleep ${CHECK_INTERVAL}\n    done\n}\n\nwatch_since_boot() {\n    while true; do\n        t=$(get_throttled_since_boot)\n        if [[ -n \"${t}\" ]]; then\n            logger -t throttlewatch \"since boot: ${t}\"\n            break\n        fi\n        \n        sleep ${CHECK_INTERVAL}\n    done\n}\n\ncase \"$1\" in\n    start)\n        msg_begin \"Starting throttle watcher\"\n        watch_now &\n        watch_since_boot &\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    stop)\n        msg_begin \"Stopping throttle watcher\"\n        ps | grep throttlewatch | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    *)\n        echo $\"Usage: $0 {start|stop}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/raspberrypi4/overlay/etc/ld.so.preload",
    "content": "/usr/lib/libarmmem.so\n"
  },
  {
    "path": "board/raspberrypi4/overlay/etc/modprobe.d/blacklist-rtl8192cu.conf",
    "content": "blacklist rtl8192cu\n"
  },
  {
    "path": "board/raspberrypi4/overlay/etc/modules",
    "content": "i2c-bcm2708\ni2c-dev\n"
  },
  {
    "path": "board/raspberrypi4/overlay/etc/udev/rules.d/99-com.rules",
    "content": "SUBSYSTEM==\"input\", GROUP=\"input\", MODE=\"0660\"\nSUBSYSTEM==\"i2c-dev\", GROUP=\"i2c\", MODE=\"0660\"\nSUBSYSTEM==\"spidev\", GROUP=\"spi\", MODE=\"0660\"\nSUBSYSTEM==\"bcm2835-gpiomem\", GROUP=\"gpio\", MODE=\"0660\"\n\nSUBSYSTEM==\"gpio*\", PROGRAM=\"/bin/sh -c '\\\n\tchown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\\\n\tchown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio;\\\n\tchown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\\\n'\"\n\nKERNEL==\"ttyAMA[01]\", PROGRAM=\"/bin/sh -c '\\\n\tALIASES=/proc/device-tree/aliases; \\\n\tif cmp -s $ALIASES/uart0 $ALIASES/serial0; then \\\n\t\techo 0;\\\n\telif cmp -s $ALIASES/uart0 $ALIASES/serial1; then \\\n\t\techo 1; \\\n\telse \\\n\t\texit 1; \\\n\tfi\\\n'\", SYMLINK+=\"serial%c\"\n\nKERNEL==\"ttyS0\", PROGRAM=\"/bin/sh -c '\\\n\tALIASES=/proc/device-tree/aliases; \\\n\tif cmp -s $ALIASES/uart1 $ALIASES/serial0; then \\\n\t\techo 0; \\\n\telif cmp -s $ALIASES/uart1 $ALIASES/serial1; then \\\n\t\techo 1; \\\n\telse \\\n\t\texit 1; \\\n\tfi \\\n'\", SYMLINK+=\"serial%c\"\n"
  },
  {
    "path": "board/raspberrypi4/overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt",
    "content": "# NVRAM file for BCM943430WLSELG\n# 2.4 GHz, 20 MHz BW mode\n\n# The following parameter values are just placeholders, need to be updated.\nmanfid=0x2d0\nprodid=0x0726\nvendid=0x14e4\ndevid=0x43e2\nboardtype=0x0726\nboardrev=0x1202\nboardnum=22\nmacaddr=00:90:4c:c5:12:38\nsromrev=11\nboardflags=0x00404201\nboardflags3=0x08000000\nxtalfreq=37400\n#xtalfreq=19200\nnocrc=1\nag0=255\naa2g=1\nccode=ALL\n\npa0itssit=0x20\nextpagain2g=0\n\n#PA parameters for 2.4GHz, measured at CHIP OUTPUT\npa2ga0=-168,7161,-820\nAvVmid_c0=0x0,0xc8\ncckpwroffset0=5\n\n# PPR params\nmaxp2ga0=84\ntxpwrbckof=6\ncckbw202gpo=0\nlegofdmbw202gpo=0x66111111\nmcsbw202gpo=0x77711111\npropbw202gpo=0xdd\n\n# OFDM IIR :\nofdmdigfilttype=18\nofdmdigfilttypebe=18\n# PAPD mode:\npapdmode=1\npapdvalidtest=1\npacalidx2g=32\npapdepsoffset=-36\npapdendidx=61\n\nil0macaddr=00:90:4c:c5:12:38\nwl0id=0x431b\n\ndeadman_to=0xffffffff\n# muxenab: 0x1 for UART enable, 0x2 for GPIOs, 0x8 for JTAG\nmuxenab=0x1\n# CLDO PWM voltage settings - 0x4 - 1.1 volt\n#cldo_pwm=0x4\n\n#VCO freq 326.4MHz\nspurconfig=0x3 \n\n# Improved Bluetooth coexistence parameters from Cypress\nbtc_mode=1\nbtc_params8=0x4e20\nbtc_params1=0x7530\n"
  },
  {
    "path": "board/raspberrypi4/overlay/lib/firmware/brcm/brcmfmac43455-sdio.txt",
    "content": "# Cloned from bcm94345wlpagb_p2xx.txt \nNVRAMRev=$Rev: 498373 $\nsromrev=11\nvendid=0x14e4\ndevid=0x43ab\nmanfid=0x2d0\nprodid=0x06e4\n#macaddr=00:90:4c:c5:12:38\nmacaddr=b8:27:eb:74:f2:6c\nnocrc=1\nboardtype=0x6e4\nboardrev=0x1304\n\n#XTAL 37.4MHz\nxtalfreq=37400\n\nbtc_mode=1\n#------------------------------------------------------\n#boardflags: 5GHz eTR switch by default\n#            2.4GHz eTR switch by default\n#            bit1 for btcoex\nboardflags=0x00480201\nboardflags2=0x40800000\nboardflags3=0x44200100\nphycal_tempdelta=15\nrxchain=1\ntxchain=1\naa2g=1\naa5g=1\ntssipos5g=1\ntssipos2g=1\nfemctrl=0\nAvVmid_c0=1,165,2,100,2,100,2,100,2,100\npa2ga0=-129,6525,-718\npa2ga1=-149,4408,-601\npa5ga0=-185,6836,-815,-186,6838,-815,-184,6859,-815,-184,6882,-818\npa5ga1=-202,4285,-574,-201,4312,-578,-196,4391,-586,-201,4294,-575\nitrsw=1\npdoffsetcckma0=2\npdoffset2gperchan=0,-2,1,0,1,0,1,1,1,0,0,-1,-1,0\npdoffset2g40ma0=16\npdoffset40ma0=0x8888\npdoffset80ma0=0x8888\nextpagain5g=2\nextpagain2g=2\ntworangetssi2g=1\ntworangetssi5g=1\n# LTECX flags\n# WCI2\nltecxmux=0\nltecxpadnum=0x0504\nltecxfnsel=0x22\nltecxgcigpio=0x32\n\nmaxp2ga0=80\nofdmlrbw202gpo=0x0022\ndot11agofdmhrbw202gpo=0x4442\nmcsbw202gpo=0x98444422\nmcsbw402gpo=0x98444422\nmaxp5ga0=82,82,82,82\nmcsbw205glpo=0xb9555000\nmcsbw205gmpo=0xb9555000\nmcsbw205ghpo=0xb9555000\nmcsbw405glpo=0xb9555000\nmcsbw405gmpo=0xb9555000\nmcsbw405ghpo=0xb9555000\nmcsbw805glpo=0xb9555000\nmcsbw805gmpo=0xb9555000\nmcsbw805ghpo=0xb9555000\n\nswctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff\nswctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe\nswctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3\nswctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3\n\nvcodivmode=1\ndeadman_to=481500000\n\ned_thresh2g=-54\ned_thresh5g=-54\neu_edthresh2g=-54\neu_edthresh5g=-54\nldo1=4\nrawtempsense=0x1ff\ncckPwrIdxCorr=3\ncckTssiDelay=150\nofdmTssiDelay=150\ntxpwr2gAdcScale=1\ntxpwr5gAdcScale=1\ndot11b_opts=0x3aa85\ncbfilttype=1\nfdsslevel_ch11=6\n\n# Improved Bluetooth coexistence parameters from Cypress\nbtc_mode=1\nbtc_params8=0x4e20\nbtc_params1=0x7530\nbtc_params50=0x972c\n"
  },
  {
    "path": "board/raspberrypi4/overlay/lib/firmware/brcm/brcmfmac43456-sdio.txt",
    "content": "# Cloned from bcm94345wlpagb_p2xx.txt \nNVRAMRev=$Rev: 498373 $\nsromrev=11\nvendid=0x14e4\ndevid=0x43ab\nmanfid=0x2d0\nprodid=0x06e4\n#macaddr=00:90:4c:c5:12:38\nmacaddr=b8:27:eb:74:f2:6c\nnocrc=1\nboardtype=0x6e4\nboardrev=0x1304\n\n#XTAL 37.4MHz\nxtalfreq=37400\n\nbtc_mode=1\n#------------------------------------------------------\n#boardflags: 5GHz eTR switch by default\n#            2.4GHz eTR switch by default\n#            bit1 for btcoex\nboardflags=0x00480201\nboardflags2=0x40800000\nboardflags3=0x44200100\nphycal_tempdelta=15\nrxchain=1\ntxchain=1\naa2g=1\naa5g=1\ntssipos5g=1\ntssipos2g=1\nfemctrl=0\nAvVmid_c0=0,157,1,126,1,126,1,126,1,126\npa2ga0=-170,5896,-680\npa2ga1=-156,4032,-547\npa5ga0=-150,5547,-628,-150,5583,-640,-158,5608,-649,-160,5757,-673\npa5ga1=-109,3831,-519,-88,3821,-512,-125,3731,-528,-103,3829,-516\nitrsw=1\npdoffsetcckma0=2\npdoffset2gperchan=0,-2,1,0,1,0,1,1,1,0,0,-1,-1,0\npdoffset2g40ma0=16\npdoffset40ma0=0x8888\npdoffset80ma0=0x8888\nextpagain5g=2\nextpagain2g=2\ntworangetssi2g=1\ntworangetssi5g=1\n# LTECX flags\n# WCI2\nltecxmux=0\nltecxpadnum=0x0504\nltecxfnsel=0x22\nltecxgcigpio=0x32\n\nmaxp2ga0=80\nofdmlrbw202gpo=0x0022\ndot11agofdmhrbw202gpo=0x4442\nmcsbw202gpo=0x98444422\nmcsbw402gpo=0x98444422\nmaxp5ga0=82,82,82,82\nmcsbw205glpo=0xb9555000\nmcsbw205gmpo=0xb9555000\nmcsbw205ghpo=0xb9555000\nmcsbw405glpo=0xb9555000\nmcsbw405gmpo=0xb9555000\nmcsbw405ghpo=0xb9555000\nmcsbw805glpo=0xb9555000\nmcsbw805gmpo=0xb9555000\nmcsbw805ghpo=0xb9555000\n\nswctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff\nswctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe\nswctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3\nswctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3\n\nvcodivmode=1\ndeadman_to=481500000\n\ned_thresh2g=-54\ned_thresh5g=-54\neu_edthresh2g=-54\neu_edthresh5g=-54\nldo1=4\nrawtempsense=0x1ff\ncckPwrIdxCorr=3\ncckTssiDelay=150\nofdmTssiDelay=150\ntxpwr2gAdcScale=1\ntxpwr5gAdcScale=1\ndot11b_opts=0x3aa85\ncbfilttype=1\nfdsslevel_ch11=6\n\n# Improved Bluetooth coexistence parameters from Cypress\nbtc_mode=1\nbtc_params8=0x4e20\nbtc_params1=0x7530\n"
  },
  {
    "path": "board/raspberrypi4/overlay/usr/libexec/btuart",
    "content": "#!/bin/bash\n\nfunction btuart_start() {\n    if ! [ -d \"/proc/device-tree/soc/gpio@7e200000/uart0_pins\" ]; then\n        touch ${NO_ON_BOARD_BT}\n        exit 0  # no rpi bluetooth detected\n    fi\n\n    if [[ \"$(cat /proc/device-tree/aliases/uart0)\" = \"$(cat /proc/device-tree/aliases/serial1)\" ]] ; then\n        if [[ \"$(wc -c /proc/device-tree/soc/gpio@7e200000/uart0_pins/brcm\\,pins | cut -f 1 -d ' ')\" = \"16\" ]]; then\n            /usr/bin/btattach -B /dev/serial1 -P bcm -S 3000000 &>/dev/null\n        else\n            /usr/bin/btattach -B /dev/serial1 -P bcm -S 921600 -N &>/dev/null\n        fi\n    else\n        /usr/bin/btattach -B /dev/serial1 -P bcm -S 460800 -N &>/dev/null\n    fi\n}\n\nfunction btuart_stop() {\n    if ! [ -d \"/proc/device-tree/soc/gpio@7e200000/uart0_pins\" ]; then\n        exit 0  # no rpi bluetooth detected\n    fi\n\n    killall btattach &>/dev/null\n}\n"
  },
  {
    "path": "board/raspberrypi4/overlay/usr/libexec/fw-prepare-boot",
    "content": "#!/bin/bash\n\necho >> /boot/config.txt\necho \"initramfs initrd.gz\" >> /boot/config.txt\n"
  },
  {
    "path": "board/raspberrypi4/postscript.sh",
    "content": "#!/bin/bash\n\nmkdir -p ${BOOT_DIR}/overlays\n\ncp ${BOARD_DIR}/config.txt ${BOOT_DIR}\ncp ${BOARD_DIR}/cmdline.txt ${BOOT_DIR}\ncp ${BOARD_DIR}/initrd.gz ${BOOT_DIR}\ncp ${BINARIES_DIR}/zImage ${BOOT_DIR}\ncp ${BINARIES_DIR}/*.dtb ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/start*.elf ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/fixup*.dat ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/overlays/*.dtbo ${BOOT_DIR}/overlays\n"
  },
  {
    "path": "board/raspberrypi64/cmdline.txt",
    "content": "dwc_otg.fiq_fix_enable=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait ro rootflags=noload panic=10 hung_task_panic=1 quiet loglevel=1\n"
  },
  {
    "path": "board/raspberrypi64/config.txt",
    "content": "kernel=Image.gz\ngpu_mem=32\ndtparam=i2c_arm=on\ndtparam=i2s=on\ndtparam=spi=on\ndtparam=audio=on\nforce_eeprom_read=0\ndisable_poe_fan=1\nboot_delay=2\narm_64bit=1\n"
  },
  {
    "path": "board/raspberrypi64/overlay/etc/board",
    "content": "raspberrypi64\n"
  },
  {
    "path": "board/raspberrypi64/overlay/etc/init.d/S07dtoverlays",
    "content": "#!/bin/bash\n\nSYS_DTOVERLAYS_FILE=\"/etc/dtoverlays\"\nBOOT_DTOVERLAYS_FILE=\"/boot/dtoverlays\"\nDTOVERLAYS_FILE=\"/data/etc/dtoverlays\"\n\nPROG=\"/usr/bin/dtoverlay\"\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\ncase \"$1\" in\n    start)\n        msg_begin \"Loading device-tree overlays\"\n\n        if [[ -r ${SYS_DTOVERLAYS_FILE} ]]; then\n            cat ${SYS_DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        if [[ -r ${BOOT_DTOVERLAYS_FILE} ]]; then\n            cat ${BOOT_DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        if [[ -r ${DTOVERLAYS_FILE} ]]; then\n            cat ${DTOVERLAYS_FILE} | while read line; do test -n \"${line}\" && ${PROG} ${line}; done\n        fi\n\n        msg_done\n        ;;\n\n    stop)\n        true\n        ;;\n\n    *)\n        echo \"Usage: $0 {start}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "board/raspberrypi64/overlay/etc/init.d/S11throttlewatch",
    "content": "#!/bin/bash\n\nCHECK_INTERVAL=60\n\n\ntest -n \"${OS_VERSION}\" || source /etc/init.d/base\n\nget_throttled_now() {\n    t=$(vcgencmd get_throttled | cut -d '=' -f 2)\n    test $((t & 1)) -ne 0 && echo -n \"under-voltage \"\n    test $((t & 2)) -ne 0 && echo -n \"arm-frequency-capped \"\n    test $((t & 4)) -ne 0 && echo -n \"throttled \"\n}\n\nget_throttled_since_boot() {\n    t=$(vcgencmd get_throttled | cut -d '=' -f 2)\n    test $((t &  65536)) -ne 0 && echo -n \"under-voltage \"\n    test $((t & 131072)) -ne 0 && echo -n \"arm-frequency-capped \"\n    test $((t & 262144)) -ne 0 && echo -n \"throttled \"\n}\n\nget_temp() {\n    t=$(</sys/class/thermal/thermal_zone0/temp)\n    echo \"$((t / 1000))\"\n}\n\nwatch_now() {\n    while true; do\n        th=$(get_throttled_now)\n        te=$(get_temp)\n        logger -t throttlewatch \"currently: ${th:-ok}, temperature: ${te} C\"\n\n        sleep ${CHECK_INTERVAL}\n    done\n}\n\nwatch_since_boot() {\n    while true; do\n        t=$(get_throttled_since_boot)\n        if [[ -n \"${t}\" ]]; then\n            logger -t throttlewatch \"since boot: ${t}\"\n            break\n        fi\n        \n        sleep ${CHECK_INTERVAL}\n    done\n}\n\ncase \"$1\" in\n    start)\n        msg_begin \"Starting throttle watcher\"\n        watch_now &\n        watch_since_boot &\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    stop)\n        msg_begin \"Stopping throttle watcher\"\n        ps | grep throttlewatch | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\\s//' | cut -d ' ' -f 1 | xargs -r kill\n        test $? == 0 && msg_done || msg_fail\n        ;;\n\n    *)\n        echo $\"Usage: $0 {start|stop}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "board/raspberrypi64/overlay/etc/modprobe.d/blacklist-rtl8192cu.conf",
    "content": "blacklist rtl8192cu\n"
  },
  {
    "path": "board/raspberrypi64/overlay/etc/modules",
    "content": "i2c-bcm2708\ni2c-dev\n"
  },
  {
    "path": "board/raspberrypi64/overlay/etc/udev/rules.d/99-com.rules",
    "content": "SUBSYSTEM==\"input\", GROUP=\"input\", MODE=\"0660\"\nSUBSYSTEM==\"i2c-dev\", GROUP=\"i2c\", MODE=\"0660\"\nSUBSYSTEM==\"spidev\", GROUP=\"spi\", MODE=\"0660\"\nSUBSYSTEM==\"bcm2835-gpiomem\", GROUP=\"gpio\", MODE=\"0660\"\n\nSUBSYSTEM==\"gpio*\", PROGRAM=\"/bin/sh -c '\\\n\tchown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\\\n\tchown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio;\\\n\tchown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\\\n'\"\n\nKERNEL==\"ttyAMA[01]\", PROGRAM=\"/bin/sh -c '\\\n\tALIASES=/proc/device-tree/aliases; \\\n\tif cmp -s $ALIASES/uart0 $ALIASES/serial0; then \\\n\t\techo 0;\\\n\telif cmp -s $ALIASES/uart0 $ALIASES/serial1; then \\\n\t\techo 1; \\\n\telse \\\n\t\texit 1; \\\n\tfi\\\n'\", SYMLINK+=\"serial%c\"\n\nKERNEL==\"ttyS0\", PROGRAM=\"/bin/sh -c '\\\n\tALIASES=/proc/device-tree/aliases; \\\n\tif cmp -s $ALIASES/uart1 $ALIASES/serial0; then \\\n\t\techo 0; \\\n\telif cmp -s $ALIASES/uart1 $ALIASES/serial1; then \\\n\t\techo 1; \\\n\telse \\\n\t\texit 1; \\\n\tfi \\\n'\", SYMLINK+=\"serial%c\"\n"
  },
  {
    "path": "board/raspberrypi64/overlay/usr/libexec/btuart",
    "content": "#!/bin/bash\n\nfunction btuart_start() {\n    if ! [ -d \"/proc/device-tree/soc/gpio@7e200000/uart0_pins\" ]; then\n        touch ${NO_ON_BOARD_BT}\n        exit 0  # no rpi bluetooth detected\n    fi\n\n    if [[ \"$(cat /proc/device-tree/aliases/uart0)\" = \"$(cat /proc/device-tree/aliases/serial1)\" ]] ; then\n        if [[ \"$(wc -c /proc/device-tree/soc/gpio@7e200000/uart0_pins/brcm\\,pins | cut -f 1 -d ' ')\" = \"16\" ]]; then\n            /usr/bin/btattach -B /dev/serial1 -P bcm -S 3000000 &>/dev/null\n        else\n            /usr/bin/btattach -B /dev/serial1 -P bcm -S 921600 -N &>/dev/null\n        fi\n    else\n        /usr/bin/btattach -B /dev/serial1 -P bcm -S 460800 -N &>/dev/null\n    fi\n}\n\nfunction btuart_stop() {\n    if ! [ -d \"/proc/device-tree/soc/gpio@7e200000/uart0_pins\" ]; then\n        exit 0  # no rpi bluetooth detected\n    fi\n\n    killall btattach &>/dev/null\n}\n"
  },
  {
    "path": "board/raspberrypi64/overlay/usr/libexec/fw-prepare-boot",
    "content": "#!/bin/bash\n\necho >> /boot/config.txt\necho \"initramfs initrd.gz\" >> /boot/config.txt\n"
  },
  {
    "path": "board/raspberrypi64/postscript.sh",
    "content": "#!/bin/bash\n\nmkdir -p ${BOOT_DIR}/overlays\n\ncp ${BOARD_DIR}/config.txt ${BOOT_DIR}\ncp ${BOARD_DIR}/cmdline.txt ${BOOT_DIR}\ncp ${BOARD_DIR}/initrd.gz ${BOOT_DIR}\ncp ${BINARIES_DIR}/Image.gz ${BOOT_DIR}\ncp ${BINARIES_DIR}/*.dtb ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/bootcode.bin ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/start*.elf ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/fixup*.dat ${BOOT_DIR}\ncp ${BINARIES_DIR}/rpi-firmware/overlays/*.dtbo ${BOOT_DIR}/overlays\n"
  },
  {
    "path": "board/rockpi4b/board.conf",
    "content": "BOOT_BIN=(\n    \"${BINARIES_DIR}/idbloader.img@64\"\n    \"${BINARIES_DIR}/uboot.img@16384\"\n    \"${BINARIES_DIR}/trust.img@24576\"\n)\nBOOT_START=20\nPART_TABLE_TYPE=mbr\n"
  },
  {
    "path": "board/rockpi4b/boot.cmd",
    "content": "setenv load_addr \"0x59000000\"\nsetenv rootfstype \"ext4\"\n\necho \"Boot script loaded from ${devtype} ${devnum}\"\n\nif test ${devnum} = 0; then\n    setenv rootdev \"/dev/mmcblk1p2\"\n    echo \"Booting from eMMC\"\nelse\n    setenv rootdev \"/dev/mmcblk0p2\"\n    echo \"Booting from SD card\"\nfi\n\nif test -e ${devtype} ${devnum} ${prefix}uEnv.txt; then\n    load ${devtype} ${devnum} ${load_addr} ${prefix}uEnv.txt\n    env import -t ${load_addr} ${filesize}\nfi\n\nsetenv bootargs \"root=${rootdev} rootfstype=${rootfstype} ${cmdline}\"\n\necho \"Boot args: ${bootargs}\"\nsysboot ${devtype} ${devnum} fat ${pxefile_addr_r} ${prefix}extlinux.conf\n"
  },
  {
    "path": "board/rockpi4b/cpinitramfs.sh",
    "content": "cp ${BINARIES_DIR}/rootfs.cpio.gz ${BOARD_DIR}/initrd.gz\n"
  },
  {
    "path": "board/rockpi4b/extlinux.conf",
    "content": "timeout 10\nmenu title select kernel\n\nlabel linux\n    kernel /Image\n    devicetree /rk3399-rock-pi-4b.dtb\n    append ${bootargs}\n"
  },
  {
    "path": "board/rockpi4b/hw_intfc.conf",
    "content": "#intfc:pwm0=off\n#intfc:pwm1=off\n#intfc:uart2=off\n#intfc:uart4=off\n#intfc:spi1=on\n#intfc:spi2=on\n#intfc:i2c2=off\n#intfc:i2c6=off\n#intfc:i2c7=off\n#intfc:dtoverlay=at24c02\n#intfc:dtoverlay=two-color-led\nintfc:dtoverlay=console-on-ttyS2\n#intfc:dtoverlay=console-on-ttyS4\n#intfc:dtoverlay=spi1-flash\n#intfc:dtoverlay=devspi1\n#intfc:dtoverlay=devspi2\n"
  },
  {
    "path": "board/rockpi4b/linux.fragment",
    "content": "CONFIG_USB_CONFIGFS=y\nCONFIG_USB_CONFIGFS_SERIA=y\nCONFIG_USB_CONFIGFS_ACM=y\nCONFIG_USB_CONFIGFS_OBEX=y\nCONFIG_USB_CONFIGFS_NCM=y\nCONFIG_USB_CONFIGFS_ECM=y\nCONFIG_USB_CONFIGFS_ECM_SUBSET=y\nCONFIG_USB_CONFIGFS_RNDIS=y\nCONFIG_USB_CONFIGFS_EEM=y\nCONFIG_USB_CONFIGFS_MASS_STORAGE=y\nCONFIG_USB_CONFIGFS_F_LB_SS=y\nCONFIG_USB_CONFIGFS_F_FS=y\nCONFIG_USB_CONFIGFS_F_MTP=y\nCONFIG_USB_CONFIGFS_F_ACC=y\nCONFIG_USB_CONFIGFS_UEVENT=y\nCONFIG_USB_CONFIGFS_F_UAC1=y\nCONFIG_USB_CONFIGFS_F_UAC1_LEGACY=y\nCONFIG_USB_CONFIGFS_F_UAC2=y\nCONFIG_USB_CONFIGFS_F_MIDI=y\nCONFIG_USB_CONFIGFS_F_HID=y\nCONFIG_USB_CONFIGFS_F_UVC=y\nCONFIG_USB_CONFIGFS_F_PRINTER=y\nCONFIG_CONFIGFS_FS=y\nCONFIG_IKCONFIG=y\nCONFIG_IKCONFIG_PROC=y\n"
  },
  {
    "path": "board/rockpi4b/overlay/etc/board",
    "content": "rockpi4b\n"
  },
  {
    "path": "board/rockpi4b/overlay/lib/firmware/nvram_azw372.txt",
    "content": "# NVRAM file for BCM943430WLSELG\n# 2.4 GHz, 20 MHz BW mode\n# Modify by AZ_Joe for DS power table V1.1 1801105\n# The following parameter values are just placeholders, need to be updated.\nmanfid=0x2d0\nprodid=0x0726\nvendid=0x14e4\ndevid=0x43e2\nboardtype=0x0726\nboardrev=0x1101\nboardnum=22\nmacaddr=00:11:22:33:44:55\nsromrev=11\nboardflags=0x00404201\nxtalfreq=26000\nnocrc=1\nag0=255\naa2g=1\nccode=ALL\n\npa0itssit=0x20\nextpagain2g=0\n\n#PA parameters for 2.4GHz, measured at CHIP OUTPUT\npa2ga0=0xff65,0x1a68,0xfd03\nAvVmid_c0=0x0,0xc8\ncckpwroffset0=5\n\n# PPR params\nmaxp2ga0=78\ntxpwrbckof=6\ncckbw202gpo=0\nlegofdmbw202gpo=0x44444444\nmcsbw202gpo=0x66666666\n\n# OFDM IIR :\nofdmdigfilttype=18\nofdmdigfilttypebe=18\n# PAPD mode:\npapdmode=1\npapdvalidtest=1\n\n# LTECX flags\n#ltecxmux=1\n#ltecxpadnum=0x02030401\n#ltecxfnsel=0x3003\n#ltecxgcigpio=0x3012\n\nil0macaddr=00:90:4c:c5:12:38\nwl0id=0x431b\n\ndeadman_to=0xffffffff\n# muxenab: 0x1 for UART enable, 0x10 for Host awake\nmuxenab=0x10\n# CLDO PWM voltage settings - 0x4 - 1.1 volt\n#cldo_pwm=0x4\n\n\n"
  },
  {
    "path": "board/rockpi4b/overlay/usr/libexec/btuart",
    "content": "#!/bin/bash\n\nBRCM_PATCHRAM=\"/usr/libexec/brcm_patchram_plus1\"\nUART_DEV=\"/dev/ttyS0\"\nFIRMWARE_FILE=\"/lib/firmware/BCM4343B0.hcd\"\n\nfunction btuart_start() {\n    # Reset Bluetooth via GPIO\n    echo \"Blocking BT rfkill\"\n    rfkill block bluetooth\n    sleep 1\n    \n    echo \"Unblocking BT rfkill\"\n    rfkill unblock bluetooth\n    sleep 1\n    \n    {\n        # Reset Bluetooth via GPIO again\n        sleep 1\n\n        echo \"Blocking BT rfkill\"\n        rfkill block bluetooth\n        sleep 1\n        \n        echo \"Unblocking BT rfkill\"\n        rfkill unblock bluetooth\n        sleep 1\n    } &\n\n    ${BRCM_PATCHRAM} --enable_hci --no2bytes --use_baudrate_for_download --tosleep 200000 --baudrate 1500000 --patchram ${FIRMWARE_FILE} ${UART_DEV}\n}\n\nfunction btuart_stop() {\n    killall $(basename ${BRCM_PATCHRAM}) &>/dev/null\n}\n"
  },
  {
    "path": "board/rockpi4b/overlay/usr/libexec/fw-prepare-boot",
    "content": "#!/bin/bash\n\necho \"    initrd /initrd.gz\" >> /boot/extlinux.conf\n"
  },
  {
    "path": "board/rockpi4b/overlay-initramfs/remove_initramfs",
    "content": "#!/bin/sh\n\ncat /boot/extlinux.conf | grep -v initrd > /boot/extlinux.conf.new\nmv /boot/extlinux.conf.new /boot/extlinux.conf\n"
  },
  {
    "path": "board/rockpi4b/postscript.sh",
    "content": "#!/bin/bash\n\nRKBIN_DIR=${BINARIES_DIR}/rkbin\n\n# First stage boot loader\nmkimage=\"${BUILD_DIR}/uboot-custom/tools/mkimage\"\n${mkimage} -n rk3399 -T rksd -d ${RKBIN_DIR}/bin/rk33/rk3399_ddr_800MHz_v1.27.bin ${BINARIES_DIR}/idbloader.img\ncat ${RKBIN_DIR}/bin/rk33/rk3399_miniloader_v1.26.bin >> ${BINARIES_DIR}/idbloader.img\n\n# U-boot\n${RKBIN_DIR}/tools/loaderimage --pack --uboot ${BINARIES_DIR}/u-boot-dtb.bin ${BINARIES_DIR}/uboot.img 0x200000 --size 1024 1\n\n# Trust image\ncat >${BINARIES_DIR}/RK3399TRUST.ini <<EOF\n[VERSION]\nMAJOR=1\nMINOR=0\n[BL30_OPTION]\nSEC=0\n[BL31_OPTION]\nSEC=1\nPATH=${RKBIN_DIR}/bin/rk33/rk3399_bl31_v1.35.elf\nADDR=0x00040000\n[BL32_OPTION]\nSEC=0\n[BL33_OPTION]\nSEC=0\n[OUTPUT]\nPATH=${BINARIES_DIR}/trust.img\nEOF\n${RKBIN_DIR}/tools/trust_merger ${BINARIES_DIR}/RK3399TRUST.ini\n\n# Wi-Fi firmware needs to be at `/system/etc/firmware` for some reason\nmkdir -p ${TARGET_DIR}/system/etc\nrm -f ${TARGET_DIR}/system/etc/firmware\nln -sf /lib/firmware ${TARGET_DIR}/system/etc/firmware\n\n# Needed to set Bluetooth address\ncp ${BUILD_DIR}/bluez5_utils-*/tools/bdaddr ${TARGET}/usr/libexec\n\n# Boot partition files\nmkdir -p ${BOOT_DIR}/overlays\ncp ${BINARIES_DIR}/rk3399-rock-pi-4b.dtb ${BOOT_DIR}\ncp ${BUILD_DIR}/linux-custom/arch/arm64/boot/dts/rockchip/overlay/*.dtbo ${BOOT_DIR}/overlays\ncp ${BINARIES_DIR}/boot.scr ${BOOT_DIR}\ncp ${BINARIES_DIR}/Image ${BOOT_DIR}\ncp ${BOARD_DIR}/extlinux.conf ${BOOT_DIR}\ncp ${BOARD_DIR}/hw_intfc.conf ${BOOT_DIR}\ncp ${BOARD_DIR}/initrd.gz ${BOOT_DIR}\ncp ${BOARD_DIR}/uEnv.txt ${BOOT_DIR}\n"
  },
  {
    "path": "board/rockpi4b/uEnv.txt",
    "content": "cmdline=rootwait ro rootflags=noload console=ttyFIQ0,1500000 panic=10 hung_task_panic=1 quiet loglevel=1\n"
  },
  {
    "path": "board/rockpi4b/uboot/0001-fix-compiling-errors.patch",
    "content": "diff -uNr uboot-custom/scripts/dtc/dtc-parser.tab.c_shipped uboot-custom.patched/scripts/dtc/dtc-parser.tab.c_shipped\n--- uboot-custom/scripts/dtc/dtc-parser.tab.c_shipped\t2022-10-19 05:05:11.000000000 +0300\n+++ uboot-custom.patched/scripts/dtc/dtc-parser.tab.c_shipped\t2023-05-08 09:30:30.331204392 +0300\n@@ -1202,7 +1202,7 @@\n /* The semantic value of the lookahead symbol.  */\n YYSTYPE yylval;\n /* Location data for the lookahead symbol.  */\n-YYLTYPE yylloc\n+extern YYLTYPE yylloc\n # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL\n   = { 1, 1, 1, 1 }\n # endif\ndiff -uNr uboot-custom/scripts/Makefile.lib uboot-custom.patched/scripts/Makefile.lib\n--- uboot-custom/scripts/Makefile.lib\t2022-10-19 05:05:11.000000000 +0300\n+++ uboot-custom.patched/scripts/Makefile.lib\t2023-05-08 09:29:56.761646498 +0300\n@@ -308,7 +308,7 @@\n # Modified for U-Boot\n # Bring in any U-Boot-specific include at the end of the file\n cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \\\n-\t(cat $<; $(if $(u_boot_dtsi),echo '\\#include \"$(u_boot_dtsi)\"')) > $(pre-tmp); \\\n+\t(cat $<; $(if $(u_boot_dtsi),echo '#include \"$(u_boot_dtsi)\"')) > $(pre-tmp); \\\n \t$(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $(pre-tmp) ; \\\n \t$(DTC) -O dtb -o $@ -b 0 \\\n \t\t-i $(dir $<) $(DTC_FLAGS) \\\n"
  },
  {
    "path": "board/rockpi4b/writeimage.sh",
    "content": "#!/bin/bash -e\n\n\nfunction usage() {\n    cat <<END_USAGE\nUsage: $0 [options...]\n\nAvailable options:\n    <-i image_file> - indicates the path to the image file (e.g. -i /home/user/Download/file.img.xz)\nEND_USAGE\n    exit 1\n}\n\nfunction msg() {\n    echo \" * $1\"\n}\n\nif [[ -z \"$1\" ]]; then\n    usage 1>&2\nfi\n\nif [[ $(id -u) -ne 0 ]]; then\n    msg \"please run as root\"\n    exit 1\nfi\n\nBOARD_DIR=$(dirname $0)\n\nrkbin=${BOARD_DIR}/../../output/$(basename ${BOARD_DIR})/images/rkbin\nrkdeveloptool=${rkbin}/tools/rkdeveloptool\nflash_boot_loader=${BOARD_DIR}/flash-boot-loader.bin\n\nwhile getopts \"a:d:f:h:i:lm:n:o:p:s:w\" o; do\n    case \"${o}\" in\n        i)\n            DISK_IMG=${OPTARG}\n            ;;\n        *)\n            usage 1>&2\n            ;;\n    esac\ndone\n\nif [[ -z \"${DISK_IMG}\" ]]; then\n    usage 1>&2\nfi\n\nif ! [[ -f \"${DISK_IMG}\" ]]; then\n    echo \"could not find image file $DISK_IMG\"\n    exit 1\nfi\n\ngunzip=$(which unpigz 2> /dev/null || which gunzip 2> /dev/null || true)\nunxz=$(which unxz 2> /dev/null || true)\n\nif [[ ${DISK_IMG} == *.gz ]]; then\n    if [[ -z \"$gunzip\" ]]; then\n        msg \"make sure you have the gzip package installed\"\n        exit 1\n    fi\n    msg \"decompressing the .gz compressed image\"\n    ${gunzip} -c \"${DISK_IMG}\" > \"${DISK_IMG%???}\"\n    DISK_IMG=${DISK_IMG%???}\nelif [[ ${DISK_IMG} == *.xz ]]; then\n    if [[ -z \"${unxz}\" ]]; then\n        msg \"make sure you have the xz package installed\"\n        exit 1\n    fi\n    msg \"decompressing the .xz compressed image\"\n    ${unxz} -T 0 -c \"${DISK_IMG}\" > \"${DISK_IMG%???}\"\n    DISK_IMG=${DISK_IMG%???}\nfi\n\nif ${rkdeveloptool} ld 2>&1 | grep -iq maskrom; then\n    msg \"device in maskrom mode detected\"\n    msg \"downloading flash bootloader\"\n    ${rkdeveloptool} db \"${flash_boot_loader}\"\nelif ${rkdeveloptool} ld 2>&1 | grep -iq loader; then\n    msg \"device in loader mode detected\"\nelse\n    msg \"make sure your device is connected and in maskrom or loader mode\"\n    exit 1\nfi\n\nmsg \"writing OS image to flash\"\n${rkdeveloptool} wl 0 \"${DISK_IMG}\"\n\nmsg \"you can now reset your device!\"\n"
  },
  {
    "path": "boot/Config.in",
    "content": "menu \"Bootloaders\"\n\nsource \"boot/afboot-stm32/Config.in\"\nsource \"boot/at91bootstrap/Config.in\"\nsource \"boot/at91bootstrap3/Config.in\"\nsource \"boot/at91dataflashboot/Config.in\"\nsource \"boot/arm-trusted-firmware/Config.in\"\nsource \"boot/barebox/Config.in\"\nsource \"boot/beaglev-ddrinit/Config.in\"\nsource \"boot/beaglev-secondboot/Config.in\"\nsource \"boot/binaries-marvell/Config.in\"\nsource \"boot/boot-wrapper-aarch64/Config.in\"\nsource \"boot/edk2/Config.in\"\nsource \"boot/grub2/Config.in\"\nsource \"boot/gummiboot/Config.in\"\nsource \"boot/lpc32xxcdl/Config.in\"\nsource \"boot/mv-ddr-marvell/Config.in\"\nsource \"boot/mxs-bootlets/Config.in\"\nsource \"boot/optee-os/Config.in\"\nsource \"boot/opensbi/Config.in\"\nsource \"boot/s500-bootloader/Config.in\"\nsource \"boot/shim/Config.in\"\nsource \"boot/sun20i-d1-spl/Config.in\"\nsource \"boot/syslinux/Config.in\"\nsource \"boot/uboot/Config.in\"\nsource \"boot/vexpress-firmware/Config.in\"\n\nendmenu\n"
  },
  {
    "path": "boot/afboot-stm32/0001-Pass-fno-builtin-to-fix-build-with-gcc-10.patch",
    "content": "From 5448f328ff63a6ca4a64519c2f1dfc63a33df4b7 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Thu, 10 Sep 2020 11:37:33 +0200\nSubject: [PATCH] Pass -fno-builtin to fix build with gcc 10\n\ngcc 10, if it recognizes some hand-written code that looks like\nmemcpy, will generate a call to memcpy().\n\nFor example:\n\n        while (dst < &_end_data) {\n                *dst++ = *src++;\n        }\n\ngets recognized as such. However, in the context of bare-metal code,\nhaving a call to memcpy() in the C library doesn't work. So we fix\nthat by disabling builtins.\n\nFixes:\n\n/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: stm32f429i-disco.o: in function `reset':\nstm32f429i-disco.c:(.text.reset+0x1a): undefined reference to `memcpy'\n/home/thomas/projets/buildroot/output/host/opt/ext-toolchain/bin/../arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: stm32f429i-disco.c:(.text.reset+0x34): undefined reference to `memset'\nmake[1]: *** [Makefile:26: stm32f429i-disco] Error 1\n\nUpstream: https://github.com/mcoquelin-stm32/afboot-stm32/pull/9\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n Makefile | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/Makefile b/Makefile\nindex f699176..1e8557d 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -13,6 +13,7 @@ DTB_ADDR?=0x08004000\n CFLAGS := -mthumb -mcpu=cortex-m4\n CFLAGS += -ffunction-sections -fdata-sections\n CFLAGS += -Os -std=gnu99 -Wall\n+CFLAGS += -fno-builtin\n LINKERFLAGS := -nostartfiles --gc-sections\n \n obj-y += gpio.o mpu.o qspi.o start_kernel.o\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/afboot-stm32/Config.in",
    "content": "config BR2_TARGET_AFBOOT_STM32\n\tbool \"afboot-stm32\"\n\tdepends on BR2_arm\n\thelp\n\t  afboot-stm32 is a very small bootloader for STM32 platforms\n\n\t  https://github.com/mcoquelin-stm32/afboot-stm32\n"
  },
  {
    "path": "boot/afboot-stm32/afboot-stm32.hash",
    "content": "# Locally calculated\nsha256 9b37b661bd3091ceb5d8dc5a56a2dfc02ae9ebc0c63dad3c4289c9d6b3d3ec89  afboot-stm32-0.2.tar.gz\n"
  },
  {
    "path": "boot/afboot-stm32/afboot-stm32.mk",
    "content": "################################################################################\n#\n# afboot-stm32\n#\n################################################################################\n\nAFBOOT_STM32_VERSION = 0.2\nAFBOOT_STM32_SITE = $(call github,mcoquelin-stm32,afboot-stm32,v$(AFBOOT_STM32_VERSION))\nAFBOOT_STM32_INSTALL_IMAGES = YES\nAFBOOT_STM32_INSTALL_TARGET = NO\n\ndefine AFBOOT_STM32_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CROSS_COMPILE=$(TARGET_CROSS) all\nendef\n\ndefine AFBOOT_STM32_INSTALL_IMAGES_CMDS\n\t$(INSTALL) -m 0755 -t $(BINARIES_DIR) -D $(@D)/stm32*.bin\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/arm-trusted-firmware/Config.in",
    "content": "config BR2_TARGET_ARM_TRUSTED_FIRMWARE\n\tbool \"ARM Trusted Firmware (ATF)\"\n\tdepends on (BR2_ARM_CPU_ARMV8A || BR2_ARM_CPU_ARMV7A) && \\\n\t\t   (BR2_TARGET_UBOOT || BR2_TARGET_EDK2)\n\thelp\n\t  Enable this option if you want to build the ATF for your ARM\n\t  based embedded device.\n\n\t  https://github.com/ARM-software/arm-trusted-firmware\n\nif BR2_TARGET_ARM_TRUSTED_FIRMWARE\nchoice\n\tprompt \"ATF Version\"\n\thelp\n\t  Select the specific ATF version you want to use\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION\n\tbool \"v2.5\"\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION\n\tbool \"Custom version\"\n\thelp\n\t  This option allows to use a specific official versions\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL\n\tbool \"Custom tarball\"\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT\n\tbool \"Custom Git repository\"\n\nendchoice\n\nif BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION\n\tstring \"URL of custom ATF tarball\"\n\nendif\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE\n\tstring \"ATF version\"\n\tdepends on BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_VERSION\n\tstring\n\tdefault \"v2.5\"\t\tif BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION\n\tdefault \"custom\"\tif BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL\n\tdefault BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION \\\n\t\t\t\tif BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT\n\tdefault BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE \\\n\t\t\t\tif BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION\n\nif BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL\n\tstring \"URL of custom repository\"\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION\n\tstring \"Custom repository version\"\n\thelp\n\t  Revision to use in the typical format used by Git\n\t  E.G. a sha id, a tag, ..\n\nendif\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM\n\tstring \"ATF platform\"\n\thelp\n\t  Target plaform to build for.\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH\n\tstring \"Device Tree Source file paths\"\n\thelp\n\t  Space-separated list of paths to device tree source files\n\t  that will be copied to fdts/ before starting the build.\n\n\t  To use this device tree source file, the ATF configuration\n\t  file must refer to it.\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP\n\tbool \"Build FIP image\"\n\thelp\n\t  This option enables building the FIP image (Firmware Image\n\t  Package). This is typically the image format used by\n\t  platforms were ATF encapsulates the second stage bootloader\n\t  (such as U-Boot).\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31\n\tbool \"Build BL31 image\"\n\thelp\n\t  This option enables building the BL31 image. This is\n\t  typically used on platforms where another bootloader (e.g\n\t  U-Boot) encapsulates ATF BL31.\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT\n\tbool \"Build BL31 U-Boot image\"\n\tselect BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31\n\thelp\n\t  Generates a U-Boot image named atf-uboot.ub containing\n\t  bl31.bin.  This is used for example by the Xilinx version of\n\t  U-Boot SPL to load ATF on the ZynqMP SoC.\n\nchoice\n\tprompt \"BL32\"\n\tdefault BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_DEFAULT\n\thelp\n\t  Select BL32 stage for the trusted firmware\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_DEFAULT\n\tbool \"Default\"\n\thelp\n\t  With this option selected, ATF will not use any BL32 stage,\n\t  unless if one is explicitly chosen using the SPD (for\n\t  AArch64) or AARCH32_SP (for AArch32) variables, which can be\n\t  passed through\n\t  BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES.\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE\n\tbool \"OP-TEE OS\"\n\tdepends on BR2_TARGET_OPTEE_OS\n\thelp\n\t  This option allows to embed OP-TEE OS as the BL32 part of\n\t  the ARM Trusted Firmware boot sequence.\n\nendchoice\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33\n\tbool \"Use U-Boot as BL33\"\n\tdepends on BR2_TARGET_UBOOT\n\thelp\n\t  This option allows to embed u-boot.bin as the BL33 part of\n\t  the ARM Trusted Firmware. It ensures that the u-boot package\n\t  gets built before ATF, and that the appropriate BL33\n\t  variable pointing to u-boot.bin is passed when building ATF.\n\nif BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_BL33_IMAGE\n\tstring \"U-Boot BL33 image name\"\n\tdefault \"u-boot.bin\"\n\thelp\n\t  Name of the U-Boot BL33 image to include in ATF, it must\n\t  have been installed to BINARIES_DIR by the U-Boot package.\n\nendif\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33\n\tbool \"Use EDK2 as BL33\"\n\tdepends on BR2_TARGET_EDK2\n\thelp\n\t  This option allows to embed EDK2 as the BL33 part of\n\t  the ARM Trusted Firmware. It ensures that the EDK2 package\n\t  gets built before ATF, and that the appropriate BL33\n\t  variable pointing to the EDK2 is passed when building ATF.\n\n\t  Do not choose this option if you intend to build ATF and EDK2\n\t  for the 'qemu_sbsa' platform. In this case, due to the EDK2\n\t  build system, the dependency between ATF and EDK is reversed.\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_TARGETS\n\tstring \"Additional ATF make targets\"\n\thelp\n\t  Additional targets for the ATF build\n\t  E.G. When using the QorIQ custom ATF repository from NXP,\n\t  the target 'pbl' can be used to build the pbl binary.\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES\n\tstring \"Additional ATF build variables\"\n\thelp\n\t  Additional parameters for the ATF build\n\t  E.G. 'DEBUG=1 LOG_LEVEL=20'\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_DEBUG\n\tbool \"Build in debug mode\"\n\thelp\n\t  Enable this option to build ATF with DEBUG=1.\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES\n\tstring \"Binary boot images\"\n\tdefault \"*.bin\"\n\thelp\n\t  Names of generated image files that are installed in the\n\t  output images/ directory.\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC\n\tbool \"Needs dtc\"\n\tselect BR2_PACKAGE_HOST_DTC\n\thelp\n\t  Select this option if your ATF board configuration\n\t  requires the Device Tree compiler to be available.\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN\n\tbool \"Needs arm-none-eabi toolchain\"\n\tdepends on BR2_aarch64\n\tdepends on BR2_HOSTARCH = \"x86_64\"\n\thelp\n\t  Select this option if your ATF board configuration requires\n\t  an ARM32 bare metal toolchain to be available.\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP\n\tbool \"Build with SSP\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_SSP\n\tdepends on !BR2_SSP_NONE\n\thelp\n\t  Say 'y' here if you want to build ATF with SSP.\n\n\t  Your board must have SSP support in ATF: it must have an\n\t  implementation for plat_get_stack_protector_canary().\n\n\t  If you say 'y', the SSP level will be the level selected\n\t  by the global SSP setting.\n\nconfig BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP_LEVEL\n\tstring\n\t# While newer versions of TF-A support \"none\" as\n\t# ENABLE_STACK_PROTECTOR value, older versions (e.g 2.0) only\n\t# supported \"0\" to disable SSP.\n\tdefault \"0\"    \t  if !BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP\n\tdefault \"default\" if BR2_SSP_REGULAR\n\tdefault \"strong\"  if BR2_SSP_STRONG\n\tdefault \"all\"     if BR2_SSP_ALL\n\nendif\n"
  },
  {
    "path": "boot/arm-trusted-firmware/arm-trusted-firmware.hash",
    "content": "# Locally calculated\nsha256  d12a824afcc5cb90d005f9820f3274f1319cef1bb282e40a6a190b75900206d3  arm-trusted-firmware-v2.5.tar.gz\nsha256  0171b0795501ee90634fbc4a7835e2fb215d9423daf1cf5b0d0682adde12c597  docs/license.rst\n"
  },
  {
    "path": "boot/arm-trusted-firmware/arm-trusted-firmware.mk",
    "content": "################################################################################\n#\n# arm-trusted-firmware\n#\n################################################################################\n\nARM_TRUSTED_FIRMWARE_VERSION = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_VERSION))\n\nifeq ($(ARM_TRUSTED_FIRMWARE_VERSION),custom)\n# Handle custom ATF tarballs as specified by the configuration\nARM_TRUSTED_FIRMWARE_TARBALL = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION))\nARM_TRUSTED_FIRMWARE_SITE = $(patsubst %/,%,$(dir $(ARM_TRUSTED_FIRMWARE_TARBALL)))\nARM_TRUSTED_FIRMWARE_SOURCE = $(notdir $(ARM_TRUSTED_FIRMWARE_TARBALL))\nelse ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT),y)\nARM_TRUSTED_FIRMWARE_SITE = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL))\nARM_TRUSTED_FIRMWARE_SITE_METHOD = git\nelse\n# Handle stable official ATF versions\nARM_TRUSTED_FIRMWARE_SITE = $(call github,ARM-software,arm-trusted-firmware,$(ARM_TRUSTED_FIRMWARE_VERSION))\n# The licensing of custom or from-git versions is unknown.\n# This is valid only for the latest (i.e. known) version.\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION),y)\nARM_TRUSTED_FIRMWARE_LICENSE = BSD-3-Clause\nARM_TRUSTED_FIRMWARE_LICENSE_FILES = docs/license.rst\nendif\nendif\n\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE)$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION),y)\nBR_NO_CHECK_HASH_FOR += $(ARM_TRUSTED_FIRMWARE_SOURCE)\nendif\n\nARM_TRUSTED_FIRMWARE_INSTALL_IMAGES = YES\n\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC),y)\nARM_TRUSTED_FIRMWARE_DEPENDENCIES += host-dtc\nendif\n\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN),y)\nARM_TRUSTED_FIRMWARE_DEPENDENCIES += host-arm-gnu-a-toolchain\nendif\n\nARM_TRUSTED_FIRMWARE_PLATFORM = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM))\n\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_DEBUG),y)\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += DEBUG=1\nARM_TRUSTED_FIRMWARE_IMG_DIR = $(@D)/build/$(ARM_TRUSTED_FIRMWARE_PLATFORM)/debug\nelse\nARM_TRUSTED_FIRMWARE_IMG_DIR = $(@D)/build/$(ARM_TRUSTED_FIRMWARE_PLATFORM)/release\nendif\n\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\t$(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES)) \\\n\tPLAT=$(ARM_TRUSTED_FIRMWARE_PLATFORM)\n\nARM_TRUSTED_FIRMWARE_MAKE_ENV += \\\n\t$(TARGET_MAKE_ENV) \\\n\tENABLE_STACK_PROTECTOR=$(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP_LEVEL))\n\nifeq ($(BR2_ARM_CPU_ARMV7A),y)\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += ARM_ARCH_MAJOR=7\nelse ifeq ($(BR2_ARM_CPU_ARMV8A),y)\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += ARM_ARCH_MAJOR=8\nendif\n\nifeq ($(BR2_arm),y)\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += ARCH=aarch32\nelse ifeq ($(BR2_aarch64),y)\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += ARCH=aarch64\nendif\n\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE),y)\nARM_TRUSTED_FIRMWARE_DEPENDENCIES += optee-os\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += \\\n\tBL32=$(BINARIES_DIR)/tee-header_v2.bin \\\n\tBL32_EXTRA1=$(BINARIES_DIR)/tee-pager_v2.bin \\\n\tBL32_EXTRA2=$(BINARIES_DIR)/tee-pageable_v2.bin\nifeq ($(BR2_aarch64),y)\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += SPD=opteed\nendif\nifeq ($(BR2_arm),y)\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += AARCH32_SP=optee\nendif\nendif # BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE\n\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33),y)\nARM_TRUSTED_FIRMWARE_DEPENDENCIES += edk2\n# Since the flash device name vary between platforms, we use the variable\n# provided by the EDK2 package for this. Using this variable here is OK\n# as it will expand after all dependencies are resolved, inside _BUILD_CMDS.\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += \\\n\tBL33=$(BINARIES_DIR)/$(call qstrip,$(BR2_TARGET_EDK2_FD_NAME).fd)\nendif\n\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33),y)\nARM_TRUSTED_FIRMWARE_UBOOT_BIN = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_BL33_IMAGE))\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += BL33=$(BINARIES_DIR)/$(ARM_TRUSTED_FIRMWARE_UBOOT_BIN)\nARM_TRUSTED_FIRMWARE_DEPENDENCIES += uboot\nendif\n\nifeq ($(BR2_TARGET_VEXPRESS_FIRMWARE),y)\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += SCP_BL2=$(BINARIES_DIR)/scp-fw.bin\nARM_TRUSTED_FIRMWARE_DEPENDENCIES += vexpress-firmware\nendif\n\nifeq ($(BR2_TARGET_BINARIES_MARVELL),y)\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += SCP_BL2=$(BINARIES_DIR)/scp-fw.bin\nARM_TRUSTED_FIRMWARE_DEPENDENCIES += binaries-marvell\nendif\n\nifeq ($(BR2_TARGET_MV_DDR_MARVELL),y)\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += MV_DDR_PATH=$(MV_DDR_MARVELL_DIR)\nARM_TRUSTED_FIRMWARE_DEPENDENCIES += mv-ddr-marvell\nendif\n\nARM_TRUSTED_FIRMWARE_MAKE_TARGETS = all\n\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP),y)\nARM_TRUSTED_FIRMWARE_MAKE_TARGETS += fip\nARM_TRUSTED_FIRMWARE_DEPENDENCIES += host-openssl\n# fiptool only exists in newer (>= 1.3) versions of ATF, so we build\n# it conditionally. We need to explicitly build it as it requires\n# OpenSSL, and therefore needs to be passed proper variables to find\n# the host OpenSSL.\ndefine ARM_TRUSTED_FIRMWARE_BUILD_FIPTOOL\n\tif test -d $(@D)/tools/fiptool; then \\\n\t\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/tools/fiptool \\\n\t\t\t$(ARM_TRUSTED_FIRMWARE_MAKE_OPTS) \\\n\t\t\tCPPFLAGS=\"$(HOST_CPPFLAGS)\" \\\n\t\t\tLDLIBS=\"$(HOST_LDFLAGS) -lcrypto\" ; \\\n\tfi\nendef\nendif\n\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31),y)\nARM_TRUSTED_FIRMWARE_MAKE_TARGETS += bl31\nendif\n\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT),y)\ndefine ARM_TRUSTED_FIRMWARE_BL31_UBOOT_BUILD\n# Get the entry point address from the elf.\n\tBASE_ADDR=$$($(TARGET_READELF) -h $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/bl31/bl31.elf | \\\n\t             sed -r '/^  Entry point address:\\s*(.*)/!d; s//\\1/') && \\\n\t$(MKIMAGE) \\\n\t\t-A $(MKIMAGE_ARCH) -O arm-trusted-firmware -C none \\\n\t\t-a $${BASE_ADDR} -e $${BASE_ADDR} \\\n\t\t-d $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/bl31.bin \\\n\t\t$(ARM_TRUSTED_FIRMWARE_IMG_DIR)/atf-uboot.ub\nendef\ndefine ARM_TRUSTED_FIRMWARE_BL31_UBOOT_INSTALL\n\t$(INSTALL) -m 0644 $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/atf-uboot.ub \\\n\t\t$(BINARIES_DIR)/atf-uboot.ub\nendef\nARM_TRUSTED_FIRMWARE_MAKE_OPTS += RESET_TO_BL31=1\nARM_TRUSTED_FIRMWARE_DEPENDENCIES += host-uboot-tools\nendif\n\nifeq ($(BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF),y)\ndefine ARM_TRUSTED_FIRMWARE_BL31_UBOOT_INSTALL_ELF\n\t$(INSTALL) -D -m 0644 $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/bl31/bl31.elf \\\n\t\t$(BINARIES_DIR)/bl31.elf\nendef\nendif\n\nARM_TRUSTED_FIRMWARE_MAKE_TARGETS += \\\n\t$(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_TARGETS))\n\nARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH))\n\ndefine ARM_TRUSTED_FIRMWARE_BUILD_CMDS\n\t$(if $(ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH),\n\t\tcp -f $(ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH) $(@D)/fdts/\n\t)\n\t$(ARM_TRUSTED_FIRMWARE_BUILD_FIPTOOL)\n\t$(ARM_TRUSTED_FIRMWARE_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(ARM_TRUSTED_FIRMWARE_MAKE_OPTS) \\\n\t\t$(ARM_TRUSTED_FIRMWARE_MAKE_TARGETS)\n\t$(ARM_TRUSTED_FIRMWARE_BL31_UBOOT_BUILD)\nendef\n\ndefine ARM_TRUSTED_FIRMWARE_INSTALL_IMAGES_CMDS\n\t$(foreach f,$(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES)), \\\n\t\tcp -dpf $(ARM_TRUSTED_FIRMWARE_IMG_DIR)/$(f) $(BINARIES_DIR)/\n\t)\n\t$(ARM_TRUSTED_FIRMWARE_BL31_UBOOT_INSTALL)\n\t$(ARM_TRUSTED_FIRMWARE_BL31_UBOOT_INSTALL_ELF)\nendef\n\n# Configuration check\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE)$(BR_BUILDING),yy)\n\nifeq ($(ARM_TRUSTED_FIRMWARE_VERSION),custom)\nifeq ($(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION))),)\n$(error No tarball location specified. Please check BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION))\nendif\nendif\n\nifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT),y)\nifeq ($(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL)),)\n$(error No repository specified. Please check BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL)\nendif\nendif\n\nendif\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/at91bootstrap/Config.in",
    "content": "config BR2_TARGET_AT91BOOTSTRAP\n\tbool \"AT91 Bootstrap\"\n\tdepends on BR2_arm926t\n\thelp\n\t  AT91Bootstrap is a first level bootloader for the Atmel AT91\n\t  devices. It integrates algorithms for:\n\t  - Device initialization such as clock configuration, PIO\n\t    settings...\n\t  - Peripheral drivers such as PIO, PMC or SDRAMC...\n\t  - Physical media algorithm such as DataFlash, NandFlash, NOR\n\t    Flash...\n\nif\tBR2_TARGET_AT91BOOTSTRAP\n\nconfig BR2_TARGET_AT91BOOTSTRAP_CUSTOM_PATCH_DIR\n\tstring \"custom patch dir\"\n\thelp\n\t  If your board requires custom patches, add the path to the\n\t  directory containing the patches here. The patches must be\n\t  named at91bootstrap-<version>-<something>.patch.\n\n\t  Most users may leave this empty\n\nconfig BR2_TARGET_AT91BOOTSTRAP_BOARD\n\tstring \"Bootstrap board\"\n\tdefault \"\"\n\thelp\n\t  This is used to do a make <board>_config\n\nchoice\n\tprompt \"Boot Memory\"\n\tdefault BR2_TARGET_AT91BOOTSTRAP_DATAFLASH\n\thelp\n\t  Select Chip for which AT91 bootstrap should be built\n\nconfig BR2_TARGET_AT91BOOTSTRAP_DATAFLASH\n\tbool \"Data Flash\"\n\nconfig BR2_TARGET_AT91BOOTSTRAP_NANDFLASH\n\tbool \"NAND Flash\"\n\nendchoice\n\nconfig BR2_TARGET_AT91BOOTSTRAP_MEMORY\n\tstring\n\tdefault\t\"dataflash\"\tif\tBR2_TARGET_AT91BOOTSTRAP_DATAFLASH\n\tdefault\t\"nandflash\"\tif\tBR2_TARGET_AT91BOOTSTRAP_NANDFLASH\n\nendif\n"
  },
  {
    "path": "boot/at91bootstrap/at91bootstrap-1.16-eabi-fix.patch",
    "content": "When using an EABI toolchain, the default compilation generates\nreferences to __aeabi_unwind_cpp_pr0(). This symbol is defined in\nlibgcc, but we don't want to use it for a bootloader.\n\nTherefore, this patch passes some additional CFLAGS to disable the\ngeneration of such references by avoiding unwind tables, exceptions,\netc.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n board/at91cap9adk/dataflash/Makefile      |    2 +-\n board/at91cap9adk/norflash/Makefile       |    2 +-\n board/at91cap9stk/nandflash/Makefile      |    2 +-\n board/at91sam9260ek/dataflash/Makefile    |    2 +-\n board/at91sam9260ek/nandflash/Makefile    |    2 +-\n board/at91sam9261ek/dataflash/Makefile    |    2 +-\n board/at91sam9261ek/nandflash/Makefile    |    2 +-\n board/at91sam9263ek/dataflash/Makefile    |    2 +-\n board/at91sam9263ek/nandflash/Makefile    |    2 +-\n board/at91sam9g10ek/dataflash/Makefile    |    2 +-\n board/at91sam9g10ek/nandflash/Makefile    |    2 +-\n board/at91sam9g20ek/dataflash/Makefile    |    2 +-\n board/at91sam9g20ek/nandflash/Makefile    |    2 +-\n board/at91sam9g45ekes/nandflash/Makefile  |    2 +-\n board/at91sam9m10ekes/dataflash/Makefile  |    2 +-\n board/at91sam9m10ekes/nandflash/Makefile  |    2 +-\n board/at91sam9m10g45ek/dataflash/Makefile |    2 +-\n board/at91sam9m10g45ek/nandflash/Makefile |    2 +-\n board/at91sam9rlek/dataflash/Makefile     |    2 +-\n board/at91sam9rlek/nandflash/Makefile     |    2 +-\n board/at91sam9xeek/dataflash/Makefile     |    2 +-\n board/at91sam9xeek/nandflash/Makefile     |    2 +-\n lib/Makefile                              |    2 +-\n 23 files changed, 23 insertions(+), 23 deletions(-)\n\nIndex: Bootstrap-v1.16/board/at91cap9adk/dataflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91cap9adk/dataflash/Makefile\n+++ Bootstrap-v1.16/board/at91cap9adk/dataflash/Makefile\n@@ -34,7 +34,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91cap9adk/norflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91cap9adk/norflash/Makefile\n+++ Bootstrap-v1.16/board/at91cap9adk/norflash/Makefile\n@@ -34,7 +34,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91cap9stk/nandflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91cap9stk/nandflash/Makefile\n+++ Bootstrap-v1.16/board/at91cap9stk/nandflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n \nIndex: Bootstrap-v1.16/board/at91sam9260ek/dataflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9260ek/dataflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9260ek/dataflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9260ek/nandflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9260ek/nandflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9260ek/nandflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9261ek/dataflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9261ek/dataflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9261ek/dataflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9261ek/nandflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9261ek/nandflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9261ek/nandflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9263ek/dataflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9263ek/dataflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9263ek/dataflash/Makefile\n@@ -34,7 +34,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9263ek/nandflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9263ek/nandflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9263ek/nandflash/Makefile\n@@ -33,7 +33,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm9 -O0 -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm9 -O0 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9g10ek/dataflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9g10ek/dataflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9g10ek/dataflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9g10ek/nandflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9g10ek/nandflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9g10ek/nandflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9g20ek/dataflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9g20ek/dataflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9g20ek/dataflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9g20ek/nandflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9g20ek/nandflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9g20ek/nandflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9g45ekes/nandflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9g45ekes/nandflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9g45ekes/nandflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9m10ekes/dataflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9m10ekes/dataflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9m10ekes/dataflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9m10ekes/nandflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9m10ekes/nandflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9m10ekes/nandflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9m10g45ek/dataflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9m10g45ek/dataflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9m10g45ek/dataflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9m10g45ek/nandflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9m10g45ek/nandflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9m10g45ek/nandflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9rlek/dataflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9rlek/dataflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9rlek/dataflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9rlek/nandflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9rlek/nandflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9rlek/nandflash/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9xeek/dataflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9xeek/dataflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9xeek/dataflash/Makefile\n@@ -38,7 +38,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/board/at91sam9xeek/nandflash/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/board/at91sam9xeek/nandflash/Makefile\n+++ Bootstrap-v1.16/board/at91sam9xeek/nandflash/Makefile\n@@ -38,7 +38,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\nIndex: Bootstrap-v1.16/lib/Makefile\n===================================================================\n--- Bootstrap-v1.16.orig/lib/Makefile\n+++ Bootstrap-v1.16/lib/Makefile\n@@ -37,7 +37,7 @@\n SIZE=$(CROSS_COMPILE)size\n OBJCOPY=$(CROSS_COMPILE)objcopy\n OBJDUMP=$(CROSS_COMPILE)objdump\n-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)\n+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables\n ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)\n \n # Linker flags.\n"
  },
  {
    "path": "boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch",
    "content": "From b783d1f9bf985c0981e755bd2c13e091e9d6837f Mon Sep 17 00:00:00 2001\nFrom: Gregory Hermant <gregory.hermant@calao-systems.com>\nDate: Tue, 6 Nov 2012 09:38:50 +0100\nSubject: [PATCH] at91bootstrap: fix overlap linker issue\n\nThe linker script of the at91bootstrap package has to be modified when\nbuilt from gcc-4.6.x version. Indeed a section named text.startup is\ncreated and has to be added into the text section.\n\nSigned-off-by: Gregory Hermant <gregory.hermant@calao-systems.com>\n---\n elf32-littlearm.lds |    1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/elf32-littlearm.lds b/elf32-littlearm.lds\nindex a33952f..4f3ba25 100644\n--- a/elf32-littlearm.lds\n+++ b/elf32-littlearm.lds\n@@ -7,6 +7,7 @@ SECTIONS\n \t.text : { \n \t\t_stext = .;\n \t\t*(.text)\n+\t\t*(.text*)\n \t\t*(.rodata)                 /* read-only data (constants) */\n \t\t*(.rodata*)\n \t\t. = ALIGN(4);\n-- \n1.7.9.5\n\n"
  },
  {
    "path": "boot/at91bootstrap/at91bootstrap-1.16-u-boot-relocation-fix.patch",
    "content": "From d4e4a1aad559e35d84b445d1379be94ad036984e Mon Sep 17 00:00:00 2001\nFrom: Alexandre Belloni <alexandre.belloni@piout.net>\nDate: Thu, 25 Oct 2012 22:57:14 +0200\nSubject: [PATCH] u-boot relocation fix\n\nEvery AT91SAM plaforms were broken between 2010.12 and 2011.03 because\nof the relocation changes.\n\nWe have to get JUMP_ADDR consistant with what is used by u-boot\n(CONFIG_SYS_TEXT_BASE).\n\nI didn't know what to do with at91sam9m10g45ek as it doesn't seems to be\nconverted yet. But anyway, that means that it is either not working or\ndoesn't care so changing it here shouldn't harm.\n\nWe also have to increase the IMG_SIZE as u-boot as grown larger than the\ndefault value. As requested on the u-boot ML, we assume that it could\nbe up to 495kB big.\n\nIt means that now, you have to flash your kernel at 0x00084000 instead\nof 0x00042000. And so you also have to load it from that adress from\nu-boot.\n\nThen, remember that you could decrease IMG_SIZE to boot faster.\n\nSigned-off-by: Alexandre Belloni <alexandre.belloni@piout.net>\n---\n board/at91sam9260ek/dataflash/at91sam9260ek.h      |    4 ++--\n board/at91sam9260ek/nandflash/at91sam9260ek.h      |    2 +-\n board/at91sam9261ek/dataflash/at91sam9261ek.h      |    4 ++--\n board/at91sam9261ek/nandflash/at91sam9261ek.h      |    2 +-\n board/at91sam9263ek/dataflash/at91sam9263ek.h      |    4 ++--\n board/at91sam9263ek/nandflash/at91sam9263ek.h      |    2 +-\n board/at91sam9g10ek/dataflash/at91sam9g10ek.h      |    4 ++--\n board/at91sam9g10ek/nandflash/at91sam9g10ek.h      |    2 +-\n board/at91sam9g20ek/dataflash/at91sam9g20ek.h      |    4 ++--\n board/at91sam9g20ek/nandflash/at91sam9g20ek.h      |    2 +-\n board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h  |    2 +-\n .../at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h  |    2 +-\n board/at91sam9rlek/dataflash/at91sam9rlek.h        |    4 ++--\n board/at91sam9rlek/nandflash/at91sam9rlek.h        |    2 +-\n board/at91sam9xeek/dataflash/at91sam9xeek.h        |    4 ++--\n board/at91sam9xeek/nandflash/at91sam9xeek.h        |    2 +-\n 16 files changed, 23 insertions(+), 23 deletions(-)\n\ndiff --git a/board/at91sam9260ek/dataflash/at91sam9260ek.h b/board/at91sam9260ek/dataflash/at91sam9260ek.h\nindex 1834246..91081a1 100644\n--- a/board/at91sam9260ek/dataflash/at91sam9260ek.h\n+++ b/board/at91sam9260ek/dataflash/at91sam9260ek.h\n@@ -74,10 +74,10 @@\n #define AT91C_SPI_PCS_DATAFLASH\t\tAT91C_SPI_PCS1_DATAFLASH\t/* Boot on SPI NCS0 */\n \n #define IMG_ADDRESS \t\t0x8400\t\t\t/* Image Address in DataFlash */\n-#define\tIMG_SIZE\t\t0x33900\t\t\t/* Image Size in DataFlash    */\n+#define\tIMG_SIZE\t\t0x7BC00\t\t\t/* Image Size in DataFlash    */\n \n #define MACH_TYPE       0x44B       /* AT91SAM9260-EK */\n-#define JUMP_ADDR\t\t0x23F00000\t\t/* Final Jump Address \t      */\n+#define JUMP_ADDR\t\t0x21F00000\t\t/* Final Jump Address \t      */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9260ek/nandflash/at91sam9260ek.h b/board/at91sam9260ek/nandflash/at91sam9260ek.h\nindex 2cac601..f8fdff2 100644\n--- a/board/at91sam9260ek/nandflash/at91sam9260ek.h\n+++ b/board/at91sam9260ek/nandflash/at91sam9260ek.h\n@@ -92,7 +92,7 @@\n #define\tIMG_SIZE\t\t0x40000\t\t/* Image Size in NandFlash    */\n \n #define MACH_TYPE       \t0x44B\t\t/* AT91SAM9260-EK */\n-#define JUMP_ADDR\t\t0x23F00000\t/* Final Jump Address \t      */\n+#define JUMP_ADDR\t\t0x21F00000\t/* Final Jump Address \t      */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9261ek/dataflash/at91sam9261ek.h b/board/at91sam9261ek/dataflash/at91sam9261ek.h\nindex 8ce30e9..276ba3d 100644\n--- a/board/at91sam9261ek/dataflash/at91sam9261ek.h\n+++ b/board/at91sam9261ek/dataflash/at91sam9261ek.h\n@@ -97,10 +97,10 @@\n #define AT91C_SPI_PCS_DATAFLASH\t\tAT91C_SPI_PCS0_DATAFLASH\t/* Boot on SPI NCS0 */\n \n #define IMG_ADDRESS \t\t0x8400\t\t\t/* Image Address in DataFlash */\n-#define\tIMG_SIZE\t\t0x33900\t\t\t/* Image Size in DataFlash    */\n+#define\tIMG_SIZE\t\t0x7BC00\t\t\t/* Image Size in DataFlash    */\n \n #define MACH_TYPE       0x350       /* AT91SAM9261-EK */\n-#define JUMP_ADDR\t\t0x23F00000\t\t/* Final Jump Address \t      */\n+#define JUMP_ADDR\t\t0x21F00000\t\t/* Final Jump Address \t      */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9261ek/nandflash/at91sam9261ek.h b/board/at91sam9261ek/nandflash/at91sam9261ek.h\nindex badc3ac..e628c97 100644\n--- a/board/at91sam9261ek/nandflash/at91sam9261ek.h\n+++ b/board/at91sam9261ek/nandflash/at91sam9261ek.h\n@@ -114,7 +114,7 @@\n #define\tIMG_SIZE\t\t0x40000\t\t/* Image Size in NandFlash    */\n \n #define MACH_TYPE       \t0x350\t\t/* AT91SAM9261-EK */\n-#define JUMP_ADDR\t\t0x23F00000\t/* Final Jump Address \t      */\n+#define JUMP_ADDR\t\t0x21F00000\t/* Final Jump Address \t      */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9263ek/dataflash/at91sam9263ek.h b/board/at91sam9263ek/dataflash/at91sam9263ek.h\nindex 5c9da4b..870f9e2 100644\n--- a/board/at91sam9263ek/dataflash/at91sam9263ek.h\n+++ b/board/at91sam9263ek/dataflash/at91sam9263ek.h\n@@ -96,10 +96,10 @@\n #define AT91C_SPI_PCS_DATAFLASH\t\tAT91C_SPI_PCS0_DATAFLASH\t/* Boot on SPI NCS0 */\n \n #define IMG_ADDRESS \t\t\t0x8400\t\t\t/* Image Address in DataFlash */\n-#define\tIMG_SIZE\t\t\t0x33900\t\t\t/* Image Size in DataFlash    */\n+#define\tIMG_SIZE\t\t\t0x7BC00\t\t\t/* Image Size in DataFlash    */\n \n #define MACH_TYPE       \t\t0x4B2       \t\t/* AT91SAM9263-EK */\n-#define JUMP_ADDR\t\t\t0x23F00000\t\t/* Final Jump Address \t      */\n+#define JUMP_ADDR\t\t\t0x21F00000\t\t/* Final Jump Address \t      */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9263ek/nandflash/at91sam9263ek.h b/board/at91sam9263ek/nandflash/at91sam9263ek.h\nindex 505afc7..8ab4f46 100644\n--- a/board/at91sam9263ek/nandflash/at91sam9263ek.h\n+++ b/board/at91sam9263ek/nandflash/at91sam9263ek.h\n@@ -108,7 +108,7 @@\n #define\tIMG_SIZE\t0x40000\t\t/* Image Size in NandFlash    */\n \n #define MACH_TYPE       1202       \t/* AT91SAM9263-EK */\n-#define JUMP_ADDR\t0x23F00000\t/* Final Jump Address \t      */\n+#define JUMP_ADDR\t0x21F00000\t/* Final Jump Address \t      */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9g10ek/dataflash/at91sam9g10ek.h b/board/at91sam9g10ek/dataflash/at91sam9g10ek.h\nindex b2faf44..f4f556b 100644\n--- a/board/at91sam9g10ek/dataflash/at91sam9g10ek.h\n+++ b/board/at91sam9g10ek/dataflash/at91sam9g10ek.h\n@@ -98,10 +98,10 @@\n #define AT91C_SPI_PCS_DATAFLASH\t\tAT91C_SPI_PCS0_DATAFLASH\t/* Boot on SPI NCS0 */\n \n #define IMG_ADDRESS \t\t0x8400\t\t\t/* Image Address in DataFlash */\n-#define\tIMG_SIZE\t\t0x33900\t\t\t/* Image Size in DataFlash    */\n+#define\tIMG_SIZE\t\t0x7BC00\t\t\t/* Image Size in DataFlash    */\n \n #define MACH_TYPE       0x350       /* AT91SAM9261-EK */\n-#define JUMP_ADDR\t\t0x23F00000\t\t/* Final Jump Address \t      */\n+#define JUMP_ADDR\t\t0x21F00000\t\t/* Final Jump Address \t      */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9g10ek/nandflash/at91sam9g10ek.h b/board/at91sam9g10ek/nandflash/at91sam9g10ek.h\nindex 66c40a3..6c3ecda 100644\n--- a/board/at91sam9g10ek/nandflash/at91sam9g10ek.h\n+++ b/board/at91sam9g10ek/nandflash/at91sam9g10ek.h\n@@ -115,7 +115,7 @@\n #define\tIMG_SIZE\t\t0x40000\t\t/* Image Size in NandFlash    */\n \n #define MACH_TYPE       \t0x350\t\t/* AT91SAM9G10-EK */\n-#define JUMP_ADDR\t\t0x23F00000\t/* Final Jump Address \t      */\n+#define JUMP_ADDR\t\t0x21F00000\t/* Final Jump Address \t      */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9g20ek/dataflash/at91sam9g20ek.h b/board/at91sam9g20ek/dataflash/at91sam9g20ek.h\nindex eea0439..7fc70d6 100644\n--- a/board/at91sam9g20ek/dataflash/at91sam9g20ek.h\n+++ b/board/at91sam9g20ek/dataflash/at91sam9g20ek.h\n@@ -75,10 +75,10 @@\n #define AT91C_SPI_PCS_DATAFLASH\t\tAT91C_SPI_PCS1_DATAFLASH\t/* Boot on SPI NCS1 */\n \n #define IMG_ADDRESS \t\t0x8400\t\t\t/* Image Address in DataFlash */\n-#define\tIMG_SIZE\t\t0x33900\t\t\t/* Image Size in DataFlash */\n+#define\tIMG_SIZE\t\t0x7BC00\t\t\t/* Image Size in DataFlash */\n \n #define MACH_TYPE\t\t0x658\t\t\t/* AT91SAM9G20-EK */\n-#define JUMP_ADDR\t\t0x23F00000\t\t/* Final Jump Address */\n+#define JUMP_ADDR\t\t0x21F00000\t\t/* Final Jump Address */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9g20ek/nandflash/at91sam9g20ek.h b/board/at91sam9g20ek/nandflash/at91sam9g20ek.h\nindex 31bd499..e797e4d 100644\n--- a/board/at91sam9g20ek/nandflash/at91sam9g20ek.h\n+++ b/board/at91sam9g20ek/nandflash/at91sam9g20ek.h\n@@ -93,7 +93,7 @@\n #define\tIMG_SIZE\t\t0x40000\t\t\t/* Image Size in NandFlash */\n \n #define MACH_TYPE\t\t0x658\t\t\t/* AT91SAM9G20-EK */\n-#define JUMP_ADDR\t\t0x23F00000\t\t/* Final Jump Address */\n+#define JUMP_ADDR\t\t0x21F00000\t\t/* Final Jump Address */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h b/board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h\nindex a60fd41..5587a00 100644\n--- a/board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h\n+++ b/board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h\n@@ -89,7 +89,7 @@\n #define AT91C_SPI_PCS_DATAFLASH\t\tAT91C_SPI_PCS0_DATAFLASH\t/* Boot on SPI NCS0 */\n \n #define IMG_ADDRESS \t\t0x8400\t\t\t/* Image Address in DataFlash */\n-#define\tIMG_SIZE\t\t0x33900\t\t\t/* Image Size in DataFlash */\n+#define\tIMG_SIZE\t\t0x7BC00\t\t\t/* Image Size in DataFlash */\n \n #define MACH_TYPE\t\t0x9CD\t\t\t/* AT91SAM9M10-EKES */\n #define JUMP_ADDR\t\t0x73F00000\t\t/* Final Jump Address */\ndiff --git a/board/at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h b/board/at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h\nindex 5c726b5..9090097 100644\n--- a/board/at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h\n+++ b/board/at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h\n@@ -85,7 +85,7 @@\n #define AT91C_SPI_PCS_DATAFLASH\t\tAT91C_SPI_PCS0_DATAFLASH\t/* Boot on SPI NCS0 */\n \n #define IMG_ADDRESS \t\t0x8400\t\t\t/* Image Address in DataFlash */\n-#define\tIMG_SIZE\t\t0x33900\t\t\t/* Image Size in DataFlash */\n+#define\tIMG_SIZE\t\t0x7BC00\t\t\t/* Image Size in DataFlash */\n \n #define MACH_TYPE\t\t0x726\t\t\t/* AT91SAM9M10G45-EK */\n #define JUMP_ADDR\t\t0x73F00000\t\t/* Final Jump Address */\ndiff --git a/board/at91sam9rlek/dataflash/at91sam9rlek.h b/board/at91sam9rlek/dataflash/at91sam9rlek.h\nindex 05c42dc..150f17e 100644\n--- a/board/at91sam9rlek/dataflash/at91sam9rlek.h\n+++ b/board/at91sam9rlek/dataflash/at91sam9rlek.h\n@@ -89,10 +89,10 @@\n #define AT91C_SPI_PCS_DATAFLASH\t\tAT91C_SPI_PCS0_DATAFLASH\t/* Boot on SPI NCS0 */\n \n #define IMG_ADDRESS \t0x8400\t\t/* Image Address in DataFlash */\n-#define\tIMG_SIZE\t0x33900\t\t/* Image Size in DataFlash    */\n+#define\tIMG_SIZE\t0x7BC00\t\t/* Image Size in DataFlash    */\n \n #define MACH_TYPE       1326       \t/* AT91SAM9RL-EK */\n-#define JUMP_ADDR\t0x23F00000\t/* Final Jump Address \t      */\n+#define JUMP_ADDR\t0x21F00000\t/* Final Jump Address \t      */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9rlek/nandflash/at91sam9rlek.h b/board/at91sam9rlek/nandflash/at91sam9rlek.h\nindex 656b4ba..594db8f 100644\n--- a/board/at91sam9rlek/nandflash/at91sam9rlek.h\n+++ b/board/at91sam9rlek/nandflash/at91sam9rlek.h\n@@ -112,7 +112,7 @@\n #define\tIMG_SIZE\t\t0x40000\t\t/* Image Size in NandFlash    */\n \n #define MACH_TYPE       1326       \t\t/* AT91SAM9RL-EK */\n-#define JUMP_ADDR\t\t0x23F00000\t/* Final Jump Address \t      */\n+#define JUMP_ADDR\t\t0x21F00000\t/* Final Jump Address \t      */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9xeek/dataflash/at91sam9xeek.h b/board/at91sam9xeek/dataflash/at91sam9xeek.h\nindex 27d1822..08e515d 100644\n--- a/board/at91sam9xeek/dataflash/at91sam9xeek.h\n+++ b/board/at91sam9xeek/dataflash/at91sam9xeek.h\n@@ -74,10 +74,10 @@\n #define AT91C_SPI_PCS_DATAFLASH\t\tAT91C_SPI_PCS1_DATAFLASH\t/* Boot on SPI NCS1 */\n \n #define IMG_ADDRESS \t\t0x8400\t\t\t/* Image Address in DataFlash */\n-#define\tIMG_SIZE\t\t0x33900\t\t\t/* Image Size in DataFlash    */\n+#define\tIMG_SIZE\t\t0x7BC00\t\t\t/* Image Size in DataFlash    */\n \n #define MACH_TYPE\t\t0x44B\t\t\t/* AT91SAM9XE-EK same id as AT91SAM9260-EK*/\n-#define JUMP_ADDR\t\t0x23F00000\t\t/* Final Jump Address \t      */\n+#define JUMP_ADDR\t\t0x21F00000\t\t/* Final Jump Address \t      */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\ndiff --git a/board/at91sam9xeek/nandflash/at91sam9xeek.h b/board/at91sam9xeek/nandflash/at91sam9xeek.h\nindex 5dbc63e..9fac7cb 100644\n--- a/board/at91sam9xeek/nandflash/at91sam9xeek.h\n+++ b/board/at91sam9xeek/nandflash/at91sam9xeek.h\n@@ -94,7 +94,7 @@\n #define\tIMG_SIZE\t\t0x40000\t\t/* Image Size in NandFlash    */\n \n #define MACH_TYPE\t\t0x44B\t\t\t/* AT91SAM9XE-EK same id as AT91SAM9260-EK*/\n-#define JUMP_ADDR\t\t0x23F00000\t\t/* Final Jump Address \t      */\n+#define JUMP_ADDR\t\t0x21F00000\t\t/* Final Jump Address \t      */\n \n /* ******************************************************************* */\n /* Application Settings                                                */\n-- \n1.7.9.5\n\n"
  },
  {
    "path": "boot/at91bootstrap/at91bootstrap.hash",
    "content": "# locally computed\nsha256  d66192a274247f4baa39fa932eadf903d7add55641d89d30402f967c4f2282a5  AT91Bootstrap1.16.zip\nsha256  6a3ac5dfcf19e6bac1b1109d30d72818768a3855e2594b84fe2b012b5fe0e77b  include/sdramc.h\n"
  },
  {
    "path": "boot/at91bootstrap/at91bootstrap.mk",
    "content": "################################################################################\n#\n# at91bootstrap\n#\n################################################################################\n\nAT91BOOTSTRAP_VERSION = 1.16\nAT91BOOTSTRAP_SITE = ftp://www.at91.com/pub/at91bootstrap\nAT91BOOTSTRAP_SOURCE = AT91Bootstrap$(AT91BOOTSTRAP_VERSION).zip\nAT91BOOTSTRAP_LICENSE = BSD-Source-Code\nAT91BOOTSTRAP_LICENSE_FILES = include/sdramc.h\n\nAT91BOOTSTRAP_BOARD = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP_BOARD))\nAT91BOOTSTRAP_MEMORY = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP_MEMORY))\nAT91BOOTSTRAP_MAKE_SUBDIR = board/$(AT91BOOTSTRAP_BOARD)/$(AT91BOOTSTRAP_MEMORY)\nAT91BOOTSTRAP_BINARY = $(AT91BOOTSTRAP_MAKE_SUBDIR)/$(AT91BOOTSTRAP_MEMORY)_$(AT91BOOTSTRAP_BOARD).bin\n\nAT91BOOTSTRAP_INSTALL_IMAGES = YES\nAT91BOOTSTRAP_INSTALL_TARGET = NO\n\ndefine AT91BOOTSTRAP_EXTRACT_CMDS\n\t$(UNZIP) -d $(BUILD_DIR) $(AT91BOOTSTRAP_DL_DIR)/$(AT91BOOTSTRAP_SOURCE)\n\tmv $(BUILD_DIR)/Bootstrap-v$(AT91BOOTSTRAP_VERSION)/* $(@D)\n\trmdir $(BUILD_DIR)/Bootstrap-v$(AT91BOOTSTRAP_VERSION)\nendef\n\nifneq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP_CUSTOM_PATCH_DIR)),)\ndefine AT91BOOTSTRAP_APPLY_CUSTOM_PATCHES\n\t$(APPLY_PATCHES) $(@D) $(BR2_TARGET_AT91BOOTSTRAP_CUSTOM_PATCH_DIR) \\*.patch\nendef\n\nAT91BOOTSTRAP_POST_PATCH_HOOKS += AT91BOOTSTRAP_APPLY_CUSTOM_PATCHES\nendif\n\ndefine AT91BOOTSTRAP_BUILD_CMDS\n\t$(MAKE1) CROSS_COMPILE=$(TARGET_CROSS) -C $(@D)/$(AT91BOOTSTRAP_MAKE_SUBDIR)\nendef\n\ndefine AT91BOOTSTRAP_INSTALL_IMAGES_CMDS\n\tcp $(@D)/$(AT91BOOTSTRAP_BINARY) $(BINARIES_DIR)\nendef\n\n$(eval $(generic-package))\n\nifeq ($(BR2_TARGET_AT91BOOTSTRAP)$(BR_BUILDING),yy)\nifeq ($(AT91BOOTSTRAP_BOARD),)\n$(error No AT91Bootstrap board name set. Check your BR2_TARGET_AT91BOOTSTRAP_BOARD setting)\nendif\nendif\n"
  },
  {
    "path": "boot/at91bootstrap3/Config.in",
    "content": "config BR2_TARGET_AT91BOOTSTRAP3\n\tbool \"AT91 Bootstrap 3+\"\n\tdepends on BR2_arm926t || BR2_cortex_a5 || BR2_cortex_a7\n\thelp\n\t  AT91Bootstrap is a first level bootloader for the Atmel AT91\n\t  devices. It integrates algorithms for:\n\t  - Device initialization such as clock configuration, PIO\n\t    settings...\n\t  - Peripheral drivers such as PIO, PMC or SDRAMC...\n\t  - Physical media algorithm such as DataFlash, NandFlash, NOR\n\t    Flash...\n\n\t  https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap\n\nif BR2_TARGET_AT91BOOTSTRAP3\n\nchoice\n\n\tprompt \"AT91 Bootstrap 3+ version\"\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION\n\tbool \"4.0.0\"\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION_3X\n\tbool \"3.10.3\"\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT\n\tbool \"Custom Git repository\"\n\thelp\n\t  This option allows Buildroot to get the AT91 Bootstrap 3\n\t  source code from a Git repository.\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL\n\tbool \"Custom tarball\"\n\nendchoice\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION\n\tstring \"URL of custom AT91Bootstrap tarball\"\n\tdepends on BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL\n\nif BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL\n\tstring \"URL of custom repository\"\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION\n\tstring \"Custom repository version\"\n\thelp\n\t  Revision to use in the typical format used by Git\n\t  E.G. a sha id, a tag, branch, ..\n\nendif\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_VERSION\n\tstring\n\tdefault \"v4.0.0\" if BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION\n\tdefault \"v3.10.3\" if BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION_3X\n\tdefault BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION \\\n\t\tif BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT\n\tdefault \"custom\"\tif BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_PATCH_DIR\n\tstring \"custom patch dir\"\n\thelp\n\t  If your board requires custom patches, add the path to the\n\t  directory containing the patches here. The patches must be\n\t  named at91bootstrap3-<something>.patch.\n\n\t  Most users may leave this empty\n\n#\n# Configuration selection\n#\n\nchoice\n\tprompt \"AT91 Bootstrap 3 configuration\"\n\tdefault BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG\n\tbool \"Using a defconfig\"\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG\n\tbool \"Using a custom config file\"\n\nendchoice\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG\n\tstring \"Defconfig name\"\n\tdepends on BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG\n\thelp\n\t  Name of the at91bootstrap3 defconfig file to use, without the\n\t  trailing _defconfig.  The defconfig is located at\n\t  board/<processor>/<board>_defconfig in the at91bootstrap3\n\t  tree.\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE\n\tstring \"Configuration file path\"\n\tdepends on BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG\n\thelp\n\t  Path to the at91bootstrap3 configuration file\n\nconfig BR2_TARGET_AT91BOOTSTRAP3_NEEDS_PYTHON3\n\tbool \"needs host-python3\"\n\thelp\n\t  Enable this option if the at91bootstrap build process needs\n\t  Python 3.x to be available on the host. This is needed in\n\t  some at91bootstrap configurations to use NAND/PMECC Python\n\t  scripts.\n\nendif # BR2_TARGET_AT91BOOTSTRAP3\n"
  },
  {
    "path": "boot/at91bootstrap3/at91bootstrap3.hash",
    "content": "# Locally calculated\nsha256  b6ae5bcaacc5a949f400182e036ae053049638444a3ba8b1dd154ec5f7898d8e  at91bootstrap3-v3.10.3.tar.gz\nsha256  08c5b95df28be7f2e0439fb2b77fe27524f97c499850641e4540c07ea0b2c25d  at91bootstrap3-v4.0.0.tar.gz\nsha256  5a3809b1c2ba13b7242572322951311c584419f1f8516f665d6c06f0668d78de  LICENSES/MIT.txt\n"
  },
  {
    "path": "boot/at91bootstrap3/at91bootstrap3.mk",
    "content": "################################################################################\n#\n# at91bootstrap3\n#\n################################################################################\n\nAT91BOOTSTRAP3_VERSION = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_VERSION))\n\nifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL),y)\nAT91BOOTSTRAP3_TARBALL = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION))\nAT91BOOTSTRAP3_SITE = $(patsubst %/,%,$(dir $(AT91BOOTSTRAP3_TARBALL)))\nAT91BOOTSTRAP3_SOURCE = $(notdir $(AT91BOOTSTRAP3_TARBALL))\nBR_NO_CHECK_HASH_FOR += $(AT91BOOTSTRAP3_SOURCE)\nelse ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT),y)\nAT91BOOTSTRAP3_SITE = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL))\nAT91BOOTSTRAP3_SITE_METHOD = git\nBR_NO_CHECK_HASH_FOR += $(AT91BOOTSTRAP3_SOURCE)\nelse\nAT91BOOTSTRAP3_SITE = $(call github,linux4sam,at91bootstrap,$(AT91BOOTSTRAP3_VERSION))\nendif\n\nifeq ($(BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION),y)\nAT91BOOTSTRAP3_LICENSE = MIT\nAT91BOOTSTRAP3_LICENSE_FILES = LICENSES/MIT.txt\nelse ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION_3X),y)\nAT91BOOTSTRAP3_LICENSE = Atmel License\nendif\n\nAT91BOOTSTRAP3_CPE_ID_VENDOR = linux4sam\nAT91BOOTSTRAP3_CPE_ID_PRODUCT = at91bootstrap\n\nAT91BOOTSTRAP3_INSTALL_IMAGES = YES\nAT91BOOTSTRAP3_INSTALL_TARGET = NO\n\nifeq ($(BR2_TARGET_AT91BOOTSTRAP3_NEEDS_PYTHON3),y)\nAT91BOOTSTRAP3_DEPENDENCIES += host-python3\nendif\n\nAT91BOOTSTRAP3_CUSTOM_PATCH_DIR = \\\n\t$(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_PATCH_DIR))\n\nAT91BOOTSTRAP3_MAKE_OPTS = CROSS_COMPILE=$(TARGET_CROSS) DESTDIR=$(BINARIES_DIR)\n\nifneq ($(AT91BOOTSTRAP3_CUSTOM_PATCH_DIR),)\ndefine AT91BOOTSTRAP3_APPLY_CUSTOM_PATCHES\n\t$(APPLY_PATCHES) $(@D) $(AT91BOOTSTRAP3_CUSTOM_PATCH_DIR) \\*.patch\nendef\n\nAT91BOOTSTRAP3_POST_PATCH_HOOKS += AT91BOOTSTRAP3_APPLY_CUSTOM_PATCHES\nendif\n\ndefine AT91BOOTSTRAP3_BUILD_CMDS\n\t$(MAKE) $(AT91BOOTSTRAP3_MAKE_OPTS) -C $(@D)\nendef\n\ndefine AT91BOOTSTRAP3_INSTALL_IMAGES_CMDS\n\tcp $(wildcard $(@D)/build/binaries/*.bin $(@D)/binaries/*.bin) $(BINARIES_DIR)\nendef\n\nifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y)\nAT91BOOTSTRAP3_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG))_defconfig\nelse ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG),y)\nAT91BOOTSTRAP3_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE))\nendif\n\nAT91BOOTSTRAP3_KCONFIG_EDITORS = menuconfig xconfig gconfig\nAT91BOOTSTRAP3_KCONFIG_OPTS = $(AT91BOOTSTRAP3_MAKE_OPTS)\n\n# Checks to give errors that the user can understand\n# Must be before we call to kconfig-package\nifeq ($(BR_BUILDING),y)\n\nifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y)\n# We must use the user-supplied kconfig value, because\n# AT91BOOTSTRAP3_KCONFIG_DEFCONFIG will at least contain\n# the trailing _defconfig\nifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG)),)\n$(error No at91bootstrap3 defconfig name specified, check your BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG setting)\nendif\nendif\n\nifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG),y)\nifeq ($(AT91BOOTSTRAP3_KCONFIG_FILE),)\n$(error No at91bootstrap3 configuration file specified, check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE setting)\nendif\nendif\n\nifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT),y)\nifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL)),)\n$(error No custom at91bootstrap3 repository URL specified. Check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL setting)\nendif\nifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION)),)\n$(error No custom at91bootstrap3 repository version specified. Check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION setting)\nendif\nendif\n\nifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL),y)\nifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION)),)\n$(error No custom AT91Bootstrap3 tarball specified. Check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION setting)\nendif # qstrip BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION\nendif # BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL\n\nendif # BR_BUILDING\n\n$(eval $(kconfig-package))\n"
  },
  {
    "path": "boot/at91dataflashboot/Config.in",
    "content": "config BR2_TARGET_AT91DATAFLASHBOOT\n\tbool \"AT91 DataFlashBoot\"\n\tdepends on BR2_arm926t\n"
  },
  {
    "path": "boot/at91dataflashboot/at91dataflashboot-1.05-do-not-install.patch",
    "content": "Disable the automatic installation of at91dataflashboot since it tries\nto install things to /tftpboot, which is not possible when not\nbuilding as root.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n Makefile |    2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\nIndex: at91dataflashboot-1.05/Makefile\n===================================================================\n--- at91dataflashboot-1.05.orig/Makefile\n+++ at91dataflashboot-1.05/Makefile\n@@ -40,7 +40,7 @@\n \n I=config.h com.h dataflash.h embedded_services.h main.h stdio.h include/AT91RM9200.h include/lib_AT91RM9200.h \n \n-all: \tclean $(BINNAME) $(LSSNAME) install\n+all: \tclean $(BINNAME) $(LSSNAME)\n \t$(SIZE) $(OUTNAME)\n \n # C objects here\n"
  },
  {
    "path": "boot/at91dataflashboot/at91dataflashboot-1.05-eabi-fixes.patch",
    "content": "Get at91dataflashboot to build with EABI toolchains, by providing the\n__aeabi_uidiv and __aeabi_uidivmod symbols. The code is based on\nU-Boot's code.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n _udivsi3.S |   14 ++++++++++++++\n 1 file changed, 14 insertions(+)\n\nIndex: DataflashBoot-1.05/_udivsi3.S\n===================================================================\n--- DataflashBoot-1.05.orig/_udivsi3.S\n+++ DataflashBoot-1.05/_udivsi3.S\n@@ -12,8 +12,11 @@\n \t.text\n \t.globl\t __udivsi3\n \t.type  __udivsi3       ,function\n+        .globl  __aeabi_uidiv\n+        .type   __aeabi_uidiv ,function\n \t.align\t0\n  __udivsi3      :\n+ __aeabi_uidiv:\n \tcmp\tdivisor, #0\n \tbeq\tLdiv0\n \tmov\tcurbit, #1\n@@ -68,6 +71,17 @@\n \tmov\tr0, #0\t\t\t@ about as wrong as it could be\n \tldmia\tsp!, {pc}\n \t.size  __udivsi3       , . -  __udivsi3\n+\n+.globl __aeabi_uidivmod\n+__aeabi_uidivmod:\n+\n+        stmfd   sp!, {r0, r1, ip, lr}\n+        bl      __aeabi_uidiv\n+        ldmfd   sp!, {r1, r2, ip, lr}\n+        mul     r3, r0, r2\n+        sub     r1, r1, r3\n+        mov     pc, lr\n+\n /* # 235 \"libgcc1.S\" */\n /* # 320 \"libgcc1.S\" */\n /* # 421 \"libgcc1.S\" */\n"
  },
  {
    "path": "boot/at91dataflashboot/at91dataflashboot.hash",
    "content": "# locally computed\nsha256  2cfeb6a9236e1a743c8010f05e504dbc92169ef42d9a6cf7948954a577bfc386  DataflashBoot-1.05.tar.bz2\n"
  },
  {
    "path": "boot/at91dataflashboot/at91dataflashboot.mk",
    "content": "################################################################################\n#\n# at91dataflashboot\n#\n################################################################################\n\nAT91DATAFLASHBOOT_VERSION = 1.05\nAT91DATAFLASHBOOT_SOURCE = DataflashBoot-$(AT91DATAFLASHBOOT_VERSION).tar.bz2\nAT91DATAFLASHBOOT_SITE = ftp://www.at91.com/pub/buildroot\n\nAT91DATAFLASHBOOT_INSTALL_TARGET = NO\nAT91DATAFLASHBOOT_INSTALL_IMAGES = YES\n\ndefine AT91DATAFLASHBOOT_BUILD_CMDS\n\tmake -C $(@D) CROSS_COMPILE=$(TARGET_CROSS)\nendef\n\ndefine AT91DATAFLASHBOOT_INSTALL_IMAGES_CMDS\n\tcp $(@D)/DataflashBoot-$(AT91DATAFLASHBOOT_VERSION).bin $(BINARIES_DIR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/barebox/Config.in",
    "content": "config BR2_TARGET_BAREBOX\n\tbool \"Barebox\"\n\thelp\n\t  The Barebox bootloader, formerly known as U-Boot v2.\n\n\t  http://www.barebox.org\n\nif BR2_TARGET_BAREBOX\nchoice\n\tprompt \"version\"\n\thelp\n\t  Select the specific Barebox version you want to use\n\nconfig BR2_TARGET_BAREBOX_LATEST_VERSION\n\tbool \"2021.10.0\"\n\nconfig BR2_TARGET_BAREBOX_CUSTOM_VERSION\n\tbool \"Custom version\"\n\thelp\n\t  This option allows to use a specific official versions\n\nconfig BR2_TARGET_BAREBOX_CUSTOM_TARBALL\n\tbool \"Custom tarball\"\n\nconfig BR2_TARGET_BAREBOX_CUSTOM_GIT\n\tbool \"Custom Git repository\"\n\nendchoice\n\nconfig BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE\n\tstring \"Barebox version\"\n\tdepends on BR2_TARGET_BAREBOX_CUSTOM_VERSION\n\nif BR2_TARGET_BAREBOX_CUSTOM_TARBALL\n\nconfig BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION\n\tstring \"URL of custom Barebox tarball\"\n\nendif\n\nconfig BR2_TARGET_BAREBOX_VERSION\n\tstring\n\tdefault \"2021.10.0\"\tif BR2_TARGET_BAREBOX_LATEST_VERSION\n\tdefault BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE if BR2_TARGET_BAREBOX_CUSTOM_VERSION\n\tdefault \"custom\"\tif BR2_TARGET_BAREBOX_CUSTOM_TARBALL\n\tdefault BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION if BR2_TARGET_BAREBOX_CUSTOM_GIT\n\nconfig BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR\n\tstring \"custom patch dir\"\n\thelp\n\t  If your board requires custom patches, add the path to the\n\t  directory containing the patches here. The patches must be\n\t  named barebox-<version>-<something>.patch.\n\n\t  Most users may leave this empty\n\nif BR2_TARGET_BAREBOX_CUSTOM_GIT\n\nconfig BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL\n\tstring \"URL of custom Git repository\"\n\nconfig BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION\n\tstring \"Custom Git version\"\n\nendif\n\nsource boot/barebox/barebox/Config.in\n\nmenuconfig BR2_TARGET_BAREBOX_AUX\n\tbool \"Build barebox with an auxiliary config\"\n\thelp\n\t  Build barebox with an auxiliary configuration.\n\n\t  Useful for building an SPL (Secondary Program Loader) in\n\t  addition to the traditional TPL (Tertiary Program Loader),\n\t  such as the X-Loader or MLO for Texas Instruments\n\t  processors.\n\nif BR2_TARGET_BAREBOX_AUX\n\nsource boot/barebox/barebox-aux/Config.in\n\nendif\n\nendif\n"
  },
  {
    "path": "boot/barebox/barebox/Config.in",
    "content": "choice\n\tprompt \"Barebox configuration\"\n\tdefault BR2_TARGET_BAREBOX_USE_DEFCONFIG\n\nconfig BR2_TARGET_BAREBOX_USE_DEFCONFIG\n\tbool \"Using a defconfig\"\n\nconfig BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG\n\tbool \"Using a custom config file\"\n\nendchoice\n\nconfig BR2_TARGET_BAREBOX_BOARD_DEFCONFIG\n\tstring \"board defconfig\"\n\tdepends on BR2_TARGET_BAREBOX_USE_DEFCONFIG\n\thelp\n\t  Name of the board for which Barebox should be built, without\n\t  the _defconfig suffix.\n\nconfig BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE\n\tstring \"Configuration file path\"\n\tdepends on BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG\n\thelp\n\t  Path to the barebox configuration file\n\nconfig BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES\n\tstring \"Additional configuration fragment files\"\n\thelp\n\t  A space-separated list of configuration fragment files,\n\t  that will be merged to the main Barebox configuration file.\n\nconfig BR2_TARGET_BAREBOX_IMAGE_FILE\n\tstring \"Image file names\"\n\thelp\n\t  Space-separated list of barebox images which will be copied to\n\t  the images directory.\n\n\t  If left empty, defaults to:\n\t  - barebox.bin for barebox versions older than 2012.10.\n\t  - barebox-flash-image for later versions.\n\nconfig BR2_TARGET_BAREBOX_BAREBOXENV\n\tbool \"bareboxenv tool in target\"\n\thelp\n\t  Install bareboxenv tool in target.\n\nconfig BR2_TARGET_BAREBOX_CUSTOM_ENV\n\tbool \"Generate an environment image\"\n\thelp\n\t  Generate a custom environment image. This environment will\n\t  contain the variables and scripts to be used at boot by\n\t  barebox.\n\nconfig BR2_TARGET_BAREBOX_CUSTOM_ENV_PATH\n\tstring \"Environment path\"\n\tdepends on BR2_TARGET_BAREBOX_CUSTOM_ENV\n\thelp\n\t  Path to the directory containing the custom barebox\n\t  environment. Depending on your setup, it will probably be\n\t  based on either the content of the defaultenv or\n\t  defaultenv-2 directories in the barebox source code, plus\n\t  the additions needed. The output will be an image in the\n\t  barebox devfs format, stored in the images directory, with\n\t  the same name as the directory name given here.\n\nconfig BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH\n\tstring \"Embedded environment path\"\n\thelp\n\t  If this option is not empty, it is the path to a custom\n\t  embedded barebox environment. This image will be used when\n\t  the environment found in the environment sector is\n\t  invalid. This option sets the barebox Kconfig option\n\t  CONFIG_DEFAULT_ENVIRONMENT_PATH to the specified path. This\n\t  way it is possible to use Buildroot variables like\n\t  TOPDIR etc. to refer to the custom environment.\n\n\t  Depending on your setup, the custom embedded environment\n\t  will probably be based on either the content of the\n\t  defaultenv or defaultenv-2 directories in the barebox source\n\t  code.\n"
  },
  {
    "path": "boot/barebox/barebox/barebox.mk",
    "content": "################################################################################\n#\n# barebox\n#\n################################################################################\n\n# Instantiate the barebox package\n$(eval $(barebox-package))\n"
  },
  {
    "path": "boot/barebox/barebox-aux/Config.in",
    "content": "choice\n\tprompt \"Barebox configuration\"\n\tdefault BR2_TARGET_BAREBOX_AUX_USE_DEFCONFIG\n\nconfig BR2_TARGET_BAREBOX_AUX_USE_DEFCONFIG\n\tbool \"Using a defconfig\"\n\nconfig BR2_TARGET_BAREBOX_AUX_USE_CUSTOM_CONFIG\n\tbool \"Using a custom config file\"\n\nendchoice\n\nconfig BR2_TARGET_BAREBOX_AUX_BOARD_DEFCONFIG\n\tstring \"board defconfig\"\n\tdepends on BR2_TARGET_BAREBOX_AUX_USE_DEFCONFIG\n\thelp\n\t  Name of the board for which Barebox should be built, without\n\t  the _defconfig suffix.\n\nconfig BR2_TARGET_BAREBOX_AUX_CUSTOM_CONFIG_FILE\n\tstring \"Configuration file path\"\n\tdepends on BR2_TARGET_BAREBOX_AUX_USE_CUSTOM_CONFIG\n\thelp\n\t  Path to the barebox configuration file\n\nconfig BR2_TARGET_BAREBOX_AUX_CONFIG_FRAGMENT_FILES\n\tstring \"Additional configuration fragment files\"\n\thelp\n\t  A space-separated list of configuration fragment files,\n\t  that will be merged to the main Barebox configuration file.\n\nconfig BR2_TARGET_BAREBOX_AUX_IMAGE_FILE\n\tstring \"Image file names\"\n\thelp\n\t  Space-separated list of barebox images which will be copied to\n\t  the images directory.\n\n\t  If left empty, defaults to:\n\t  - barebox.bin for barebox versions older than 2012.10.\n\t  - barebox-flash-image for later versions.\n\nconfig BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV\n\tbool \"Generate an environment image\"\n\thelp\n\t  Generate a custom environment image. This environment will\n\t  contain the variables and scripts to be used at boot by\n\t  barebox.\n\nconfig BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV_PATH\n\tstring \"Environment path\"\n\tdepends on BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV\n\thelp\n\t  Path to the directory containing the custom barebox\n\t  environment. Depending on your setup, it will probably be\n\t  based on either the content of the defaultenv or\n\t  defaultenv-2 directories in the barebox source code, plus\n\t  the additions needed. The output will be an image in the\n\t  barebox devfs format, stored in the images directory, with\n\t  the same name as the directory name given here.\n\nconfig BR2_TARGET_BAREBOX_AUX_CUSTOM_EMBEDDED_ENV_PATH\n\tstring \"Embedded environment path\"\n\thelp\n\t  If this option is not empty, it is the path to a custom\n\t  embedded barebox environment. This image will be used when\n\t  the environment found in the environment sector is\n\t  invalid. This option sets the barebox Kconfig option\n\t  CONFIG_DEFAULT_ENVIRONMENT_PATH to the specified path. This\n\t  way it is possible to use Buildroot variables like\n\t  TOPDIR etc. to refer to the custom environment.\n\n\t  Depending on your setup, the custom embedded environment\n\t  will probably be based on either the content of the\n\t  defaultenv or defaultenv-2 directories in the barebox source\n\t  code.\n"
  },
  {
    "path": "boot/barebox/barebox-aux/barebox-aux.mk",
    "content": "################################################################################\n#\n# barebox-aux\n#\n################################################################################\n\n# Instantiate the auxiliary barebox package\n$(eval $(barebox-package))\n"
  },
  {
    "path": "boot/barebox/barebox.hash",
    "content": "# From https://www.barebox.org/download/barebox-2021.10.0.tar.bz2.md5\nmd5  7d79102fd8d45bf3756b4f3a569654a8  barebox-2021.10.0.tar.bz2\n\n# Locally calculated\nsha256  4bb077b54d03743b3e8c20751d318dcc3ef03b20abe1a64a79c413ea03de3632  barebox-2021.10.0.tar.bz2\n\n# License files, locally computed\nsha256  ab1122aa9f9073ad1ec824edcd970b16a6a7881a34a18fd56c080debb2dca5d4  COPYING\n"
  },
  {
    "path": "boot/barebox/barebox.mk",
    "content": "################################################################################\n#\n# barebox\n#\n################################################################################\n\n################################################################################\n# inner-barebox-package -- generates the KConfig logic and make targets needed\n# to support a barebox package. All barebox packages are built from the same\n# source (origin, version and patches). The remainder of the package\n# configuration is unique to each barebox package.\n#\n#  argument 1 is the uppercase package name (used for variable name-space)\n################################################################################\n\ndefine inner-barebox-package\n\n$(1)_VERSION = $$(call qstrip,$$(BR2_TARGET_BAREBOX_VERSION))\n\nifeq ($$($(1)_VERSION),custom)\n# Handle custom Barebox tarballs as specified by the configuration\n$(1)_TARBALL = $$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION))\n$(1)_SITE = $$(patsubst %/,%,$$(dir $$($(1)_TARBALL)))\n$(1)_SOURCE = $$(notdir $$($(1)_TARBALL))\nelse ifeq ($$(BR2_TARGET_BAREBOX_CUSTOM_GIT),y)\n$(1)_SITE = $$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL))\n$(1)_SITE_METHOD = git\n# Override the default value of _SOURCE to 'barebox-*' so that it is not\n# downloaded a second time for barebox-aux; also alows avoiding the hash\n# check:\n$(1)_SOURCE = barebox-$$($(1)_VERSION)$$(BR_FMT_VERSION_git).tar.gz\nelse\n# Handle stable official Barebox versions\n$(1)_SOURCE = barebox-$$($(1)_VERSION).tar.bz2\n$(1)_SITE = https://www.barebox.org/download\nendif\n\n$(1)_DL_SUBDIR = barebox\n\n$(1)_DEPENDENCIES = host-lzop\n$(1)_LICENSE = GPL-2.0 with exceptions\nifeq ($(BR2_TARGET_BAREBOX_LATEST_VERSION),y)\n$(1)_LICENSE_FILES = COPYING\nendif\n\n$(1)_CUSTOM_EMBEDDED_ENV_PATH = $$(call qstrip,$$(BR2_TARGET_$(1)_CUSTOM_EMBEDDED_ENV_PATH))\n\nifneq ($$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR)),)\ndefine $(1)_APPLY_CUSTOM_PATCHES\n\t$$(APPLY_PATCHES) $$(@D) \\\n\t\t$$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR) \\*.patch\nendef\n\n$(1)_POST_PATCH_HOOKS += $(1)_APPLY_CUSTOM_PATCHES\nendif\n\n$(1)_INSTALL_IMAGES = YES\nifneq ($$(BR2_TARGET_$(1)_BAREBOXENV),y)\n$(1)_INSTALL_TARGET = NO\nendif\n\nifeq ($$(KERNEL_ARCH),i386)\n$(1)_ARCH = x86\nelse ifeq ($$(KERNEL_ARCH),x86_64)\n$(1)_ARCH = x86\nelse ifeq ($$(KERNEL_ARCH),powerpc)\n$(1)_ARCH = ppc\nelse ifeq ($$(KERNEL_ARCH),arm64)\n$(1)_ARCH = arm\nelse\n$(1)_ARCH = $$(KERNEL_ARCH)\nendif\n\n$(1)_MAKE_FLAGS = ARCH=$$($(1)_ARCH) CROSS_COMPILE=\"$$(TARGET_CROSS)\"\n$(1)_MAKE_ENV = $$(TARGET_MAKE_ENV)\n\nifeq ($$(BR2_TARGET_$(1)_USE_DEFCONFIG),y)\n$(1)_KCONFIG_DEFCONFIG = $$(call qstrip,$$(BR2_TARGET_$(1)_BOARD_DEFCONFIG))_defconfig\nelse ifeq ($$(BR2_TARGET_$(1)_USE_CUSTOM_CONFIG),y)\n$(1)_KCONFIG_FILE = $$(call qstrip,$$(BR2_TARGET_$(1)_CUSTOM_CONFIG_FILE))\nendif\n\n$(1)_KCONFIG_FRAGMENT_FILES = $$(call qstrip,$$(BR2_TARGET_$(1)_CONFIG_FRAGMENT_FILES))\n$(1)_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig\n$(1)_KCONFIG_OPTS = $$($(1)_MAKE_FLAGS)\n\n$(1)_KCONFIG_DEPENDENCIES = \\\n\t$(BR2_BISON_HOST_DEPENDENCY) \\\n\t$(BR2_FLEX_HOST_DEPENDENCY)\n\nifeq ($$(BR2_TARGET_$(1)_CUSTOM_ENV),y)\n$(1)_ENV_NAME = $$(notdir $$(call qstrip,\\\n\t$$(BR2_TARGET_$(1)_CUSTOM_ENV_PATH)))\ndefine $(1)_BUILD_CUSTOM_ENV\n\t$$(@D)/scripts/bareboxenv -s \\\n\t\t$$(call qstrip, $$(BR2_TARGET_$(1)_CUSTOM_ENV_PATH)) \\\n\t\t$$(@D)/$$($(1)_ENV_NAME)\nendef\ndefine $(1)_INSTALL_CUSTOM_ENV\n\tcp $$(@D)/$$($(1)_ENV_NAME) $$(BINARIES_DIR)\nendef\nendif\n\nifneq ($$($(1)_CUSTOM_EMBEDDED_ENV_PATH),)\ndefine $(1)_KCONFIG_FIXUP_CUSTOM_EMBEDDED_ENV_PATH\n\t$$(call KCONFIG_ENABLE_OPT,CONFIG_DEFAULT_ENVIRONMENT)\n\t$$(call KCONFIG_SET_OPT,CONFIG_DEFAULT_ENVIRONMENT_PATH,\"$$($(1)_CUSTOM_EMBEDDED_ENV_PATH)\")\nendef\nendif\n\ndefine $(1)_KCONFIG_FIXUP_BAREBOXENV\n\t$$(if $$(BR2_TARGET_$(1)_BAREBOXENV),\\\n\t\t$$(call KCONFIG_ENABLE_OPT,CONFIG_BAREBOXENV_TARGET),\\\n\t\t$$(call KCONFIG_DISABLE_OPT,CONFIG_BAREBOXENV_TARGET))\nendef\n\ndefine $(1)_KCONFIG_FIXUP_CMDS\n\t$$($(1)_KCONFIG_FIXUP_CUSTOM_EMBEDDED_ENV_PATH)\n\t$$($(1)_KCONFIG_FIXUP_BAREBOXENV)\nendef\n\ndefine $(1)_BUILD_CMDS\n\t$$($(1)_BUILD_BAREBOXENV_CMDS)\n\t$$(TARGET_MAKE_ENV) $$(MAKE) $$($(1)_MAKE_FLAGS) -C $$(@D)\n\t$$($(1)_BUILD_CUSTOM_ENV)\nendef\n\n$(1)_IMAGE_FILES = $$(call qstrip,$$(BR2_TARGET_$(1)_IMAGE_FILE))\n\ndefine $(1)_INSTALL_IMAGES_CMDS\n\tif test -n \"$$($(1)_IMAGE_FILES)\"; then \\\n\t\tcp -L $$(foreach image,$$($(1)_IMAGE_FILES),$$(@D)/$$(image)) $$(BINARIES_DIR) ; \\\n\telif test -h $$(@D)/barebox-flash-image ; then \\\n\t\tcp -L $$(@D)/barebox-flash-image $$(BINARIES_DIR)/barebox.bin ; \\\n\telse \\\n\t\tcp $$(@D)/barebox.bin $$(BINARIES_DIR);\\\n\tfi\n\t$$($(1)_INSTALL_CUSTOM_ENV)\nendef\n\n# Starting with barebox v2020.09.0, the kconfig used calls the\n# cross-compiler to check its capabilities. So we need the\n# toolchain before we can call the configurators.\n$(1)_KCONFIG_DEPENDENCIES += toolchain\n\nifeq ($$(BR2_TARGET_$(1)_BAREBOXENV),y)\ndefine $(1)_INSTALL_TARGET_CMDS\n\tcp $$(@D)/scripts/bareboxenv-target $$(TARGET_DIR)/usr/bin/bareboxenv\nendef\nendif\n\n# Checks to give errors that the user can understand\n# Must be before we call to kconfig-package\nifeq ($$(BR2_TARGET_$(1))$$(BR_BUILDING),yy)\n# We must use the user-supplied kconfig value, because\n# $(1)_KCONFIG_DEFCONFIG will at least contain the\n# trailing _defconfig\nifeq ($$(or $$($(1)_KCONFIG_FILE),$$(call qstrip,$$(BR2_TARGET_$(1)_BOARD_DEFCONFIG))),)\n$$(error No Barebox config. Check your BR2_TARGET_$(1)_BOARD_DEFCONFIG or BR2_TARGET_$(1)_CUSTOM_CONFIG_FILE settings)\nendif\nendif\n\n$$(eval $$(kconfig-package))\n\nendef\n\n################################################################################\n# barebox-package -- the target generator macro for barebox packages\n################################################################################\n\nbarebox-package=$(call inner-barebox-package,$(call UPPERCASE,$(pkgname)))\n\ninclude boot/barebox/barebox/barebox.mk\ninclude boot/barebox/barebox-aux/barebox-aux.mk\n\nifeq ($(BR2_TARGET_BAREBOX)$(BR2_TARGET_BAREBOX_LATEST_VERSION),y)\nBR_NO_CHECK_HASH_FOR += $(BAREBOX_SOURCE)\nendif\n"
  },
  {
    "path": "boot/beaglev-ddrinit/Config.in",
    "content": "config BR2_TARGET_BEAGLEV_DDRINIT\n\tbool \"beaglev-ddrinit\"\n\tdepends on BR2_riscv\n\tdepends on BR2_HOSTARCH = \"x86_64\" # host-riscv64-elf-toolchain\n\thelp\n\t  This package builds the DDRinit firmware used on the BeagleV\n\t  platform.\n\n\t  https://github.com/starfive-tech/beagle_ddrinit\n"
  },
  {
    "path": "boot/beaglev-ddrinit/beaglev-ddrinit.hash",
    "content": "# Locally computed\nsha256  2d491f64bd77de9dfd4b8ae6c00e83670e80c205cc20917fefa6194b1dc1fe4e  beaglev-ddrinit-c0839f25246d9e308c23498d344ca13d8a7ad6ed.tar.gz\nsha256  284d26192537710910ec1f112ec5f4c981601ae23702391986d6ce0b8ba90813  LICENSE\n"
  },
  {
    "path": "boot/beaglev-ddrinit/beaglev-ddrinit.mk",
    "content": "################################################################################\n#\n# beaglev-ddrinit\n#\n################################################################################\n\n# Commit on the 'starfive' branch\nBEAGLEV_DDRINIT_VERSION = c0839f25246d9e308c23498d344ca13d8a7ad6ed\nBEAGLEV_DDRINIT_SITE = $(call github,starfive-tech,beagle_ddrinit,$(BEAGLEV_DDRINIT_VERSION))\nBEAGLEV_DDRINIT_INSTALL_TARGET = NO\nBEAGLEV_DDRINIT_INSTALL_IMAGES = YES\nBEAGLEV_DDRINIT_DEPENDENCIES = host-riscv64-elf-toolchain\nBEAGLEV_DDRINIT_LICENSE = GPL-2.0+\nBEAGLEV_DDRINIT_LICENSE_FILES = LICENSE\n\ndefine BEAGLEV_DDRINIT_BUILD_CMDS\n\t$(MAKE) -C $(@D)/build \\\n\t\tCROSSCOMPILE=$(HOST_DIR)/bin/riscv64-unknown-elf- \\\n\t\tSUFFIX=buildroot \\\n\t\tGIT_VERSION=$(BEAGLEV_DDRINIT_VERSION)\nendef\n\ndefine BEAGLEV_DDRINIT_INSTALL_IMAGES_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/build/ddrinit-2133-buildroot.bin.out \\\n\t\t$(BINARIES_DIR)/ddrinit-2133-buildroot.bin.out\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/beaglev-secondboot/Config.in",
    "content": "config BR2_TARGET_BEAGLEV_SECONDBOOT\n\tbool \"beaglev-secondboot\"\n\tdepends on BR2_riscv\n\tdepends on BR2_HOSTARCH = \"x86_64\" # host-riscv64-elf-toolchain\n\thelp\n\t  This package builds the SecondBoot firmware used on the\n\t  BeagleV platform.\n\n\t  https://github.com/starfive-tech/beagle_secondBoot\n"
  },
  {
    "path": "boot/beaglev-secondboot/beaglev-secondboot.hash",
    "content": "# Locally computed\nsha256  fe4d37f3ff38e7f2da70a08f9cb1668c0b928e85d2e0935bd985f910b3ce30e9  beaglev-secondboot-2d20047960044308126117ad56bc08a1164e82b2.tar.gz\nsha256  284d26192537710910ec1f112ec5f4c981601ae23702391986d6ce0b8ba90813  LICENSE\n"
  },
  {
    "path": "boot/beaglev-secondboot/beaglev-secondboot.mk",
    "content": "################################################################################\n#\n# beaglev-secondboot\n#\n################################################################################\n\n# Commit on the 'starfive' branch\nBEAGLEV_SECONDBOOT_VERSION = 2d20047960044308126117ad56bc08a1164e82b2\nBEAGLEV_SECONDBOOT_SITE = $(call github,starfive-tech,beagle_secondBoot,$(BEAGLEV_SECONDBOOT_VERSION))\nBEAGLEV_SECONDBOOT_INSTALL_TARGET = NO\nBEAGLEV_SECONDBOOT_INSTALL_IMAGES = YES\nBEAGLEV_SECONDBOOT_DEPENDENCIES = host-riscv64-elf-toolchain\nBEAGLEV_SECONDBOOT_LICENSE = GPL-2.0+\nBEAGLEV_SECONDBOOT_LICENSE_FILES = LICENSE\n\ndefine BEAGLEV_SECONDBOOT_BUILD_CMDS\n\t$(MAKE) -C $(@D)/build \\\n\t\tCROSSCOMPILE=$(HOST_DIR)/bin/riscv64-unknown-elf- \\\n\t\tSUFFIX=buildroot \\\n\t\tGIT_VERSION=$(BEAGLEV_SECONDBOOT_VERSION)\nendef\n\ndefine BEAGLEV_SECONDBOOT_INSTALL_IMAGES_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/build/bootloader-BEAGLEV-buildroot.bin.out \\\n\t\t$(BINARIES_DIR)/bootloader-BEAGLEV-buildroot.bin.out\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/binaries-marvell/Config.in",
    "content": "config BR2_TARGET_BINARIES_MARVELL\n\tbool \"binaries-marvell\"\n\tdepends on BR2_aarch64\n\thelp\n\t  Some systems, including Marvell Armada SoC, have a separate\n\t  System Control Processor (SCP) for power management, clocks,\n\t  reset and system control. ATF Boot Loader stage 2 (BL2) loads\n\t  optional SCP_BL2 image into a platform-specific region\n\t  of secure memory. This package downloads and installs such\n\t  firmware, which is needed to build ATF.\n\n\t  https://github.com/MarvellEmbeddedProcessors/binaries-marvell/\n"
  },
  {
    "path": "boot/binaries-marvell/binaries-marvell.hash",
    "content": "# Locally calculated\nsha256 d818c95bcd4d5c026238d6e554151184ed7fea15bce1f861f9068b97b4cd320a binaries-marvell-c5d3ef2b63ba66d8717ecbe679fd2e639cde88ee.tar.gz\nsha256 e6d08ef60068ee72c68835001a24eb832dcba27cac0dde0f179dfb428be050ca README.md\n"
  },
  {
    "path": "boot/binaries-marvell/binaries-marvell.mk",
    "content": "################################################################################\n#\n# binaries-marvell\n#\n################################################################################\n\n# This is version binaries-marvell-armada-18.12\nBINARIES_MARVELL_VERSION = c5d3ef2b63ba66d8717ecbe679fd2e639cde88ee\nBINARIES_MARVELL_SITE = $(call github,MarvellEmbeddedProcessors,binaries-marvell,$(BINARIES_MARVELL_VERSION))\n\nBINARIES_MARVELL_LICENSE = GPL-2.0 with freertos-exception-2.0\nBINARIES_MARVELL_LICENSE_FILES = README.md\n\nBINARIES_MARVELL_INSTALL_IMAGES  = YES\n\ndefine BINARIES_MARVELL_INSTALL_IMAGES_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/mrvl_scp_bl2.img $(BINARIES_DIR)/scp-fw.bin\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/boot-wrapper-aarch64/Config.in",
    "content": "comment \"boot-wrapper-aarch64 needs a Linux kernel to be built\"\n\tdepends on BR2_aarch64\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_TARGET_BOOT_WRAPPER_AARCH64\n\tbool \"boot-wrapper-aarch64\"\n\tdepends on BR2_aarch64\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  The boot-wrapper-aarch64 is a small bootloader that makes it\n\t  possible to start an Aarch64 kernel inside the available\n\t  software simulators for the Aarch64 architecture.\n\n\t  git://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git\n\nif BR2_TARGET_BOOT_WRAPPER_AARCH64\n\nconfig BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS\n\tstring \"Device Tree Source name\"\n\tdefault \"\"\n\thelp\n\t  Name of the Device Tree Source file to use to generate the\n\t  Device Tree Blob that will be embedded in the image\n\t  generated by the boot wrapper. Valid names are the .dts\n\t  files from arch/arm64/boot/dts/ in the kernel source\n\t  tree. The name must be specified without the .dts suffix.\n\nconfig BR2_TARGET_BOOT_WRAPPER_AARCH64_BOOTARGS\n\tstring \"Kernel bootargs\"\n\tdefault \"\"\n\thelp\n\t  Kernel bootargs to embed inside the image generated by the\n\t  boot wrapper.\n\nconfig BR2_TARGET_BOOT_WRAPPER_AARCH64_PSCI\n\tbool \"Boot secondary SMP cores using PSCI\"\n\thelp\n\t  Boot secondary SMP cores using PSCI firmware calls. If\n\t  disabled, the spin-table method is used instead.\n\nconfig BR2_TARGET_BOOT_WRAPPER_AARCH64_GICV3\n\tbool \"Enable GICv3 instead of GICv2\"\n\thelp\n\t  Boot using GICv3 instead of GICv2.\n\nendif\n"
  },
  {
    "path": "boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk",
    "content": "################################################################################\n#\n# boot-wrapper-aarch64\n#\n################################################################################\n\nBOOT_WRAPPER_AARCH64_VERSION = 8d5a765251d9113c3c0f9fa14de42a9e7486fe8a\nBOOT_WRAPPER_AARCH64_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git\nBOOT_WRAPPER_AARCH64_LICENSE = BSD-3-Clause\nBOOT_WRAPPER_AARCH64_LICENSE_FILES = LICENSE.txt\nBOOT_WRAPPER_AARCH64_DEPENDENCIES = linux\nBOOT_WRAPPER_AARCH64_INSTALL_IMAGES = YES\n\n# The Git repository does not have the generated configure script and\n# Makefile.\nBOOT_WRAPPER_AARCH64_AUTORECONF = YES\n\nBOOT_WRAPPER_AARCH64_DTB = $(LINUX_DIR)/arch/arm64/boot/dts/$(basename $(call qstrip,$(BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS))).dtb\n\nBOOT_WRAPPER_AARCH64_CONF_OPTS = \\\n\t--with-kernel-dir=$(LINUX_DIR) \\\n\t--with-dtb=$(BOOT_WRAPPER_AARCH64_DTB) \\\n\t--with-cmdline=$(BR2_TARGET_BOOT_WRAPPER_AARCH64_BOOTARGS)\n\nifeq ($(BR2_TARGET_BOOT_WRAPPER_AARCH64_PSCI),y)\nBOOT_WRAPPER_AARCH64_CONF_OPTS += --enable-psci\nelse\nBOOT_WRAPPER_AARCH64_CONF_OPTS += --disable-psci\nendif\n\nifeq ($(BR2_TARGET_BOOT_WRAPPER_AARCH64_GICV3),y)\nBOOT_WRAPPER_AARCH64_CONF_OPTS += --enable-gicv3\nendif\n\n# We need to convince the configure script that the Linux kernel tree\n# exists, as well as the DTB and the kernel Image. Even though those\n# are available on the build machine, the configure script uses\n# AC_CHECK_FILE tests, which are always disabled in cross-compilation\n# situations.\nBOOT_WRAPPER_AARCH64_CONF_ENV = \\\n\t$(call AUTOCONF_AC_CHECK_FILE_VAL,$(LINUX_DIR))=yes \\\n\t$(call AUTOCONF_AC_CHECK_FILE_VAL,$(LINUX_DIR)$(BOOT_WRAPPER_AARCH64_DTB))=yes \\\n\t$(call AUTOCONF_AC_CHECK_FILE_VAL,$(LINUX_DIR)/arch/arm64/boot/Image)=yes\n\ndefine BOOT_WRAPPER_AARCH64_INSTALL_IMAGES_CMDS\n\tcp $(@D)/linux-system.axf $(BINARIES_DIR)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "boot/common.mk",
    "content": "include $(sort $(wildcard boot/*/*.mk))\n"
  },
  {
    "path": "boot/edk2/Config.in",
    "content": "config BR2_TARGET_EDK2_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_i386\n\tdefault y if BR2_x86_64\n\nconfig BR2_TARGET_EDK2\n\tbool \"EDK2\"\n\tdepends on BR2_TARGET_EDK2_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\tselect BR2_PACKAGE_EDK2_PLATFORMS\n\thelp\n\t  EDK II is a modern, feature-rich, cross-platform firmware\n\t  development environment for the UEFI and PI specifications.\n\n\t  https://github.com/tianocore/tianocore.github.io/wiki/EDK-II\n\nif BR2_TARGET_EDK2\n\nchoice\n\tprompt \"Platform\"\n\tdefault BR2_TARGET_EDK2_PLATFORM_OVMF_I386 if BR2_i386\n\tdefault BR2_TARGET_EDK2_PLATFORM_OVMF_X64 if BR2_x86_64\n\tdefault BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU if BR2_aarch64\n\nconfig BR2_TARGET_EDK2_PLATFORM_OVMF_I386\n\tbool \"i386\"\n\tdepends on BR2_i386 || BR2_x86_64\n\thelp\n\t  Platform configuration for a generic i386 target.\n\t  This platform will boot from flash address 0x0.\n\t  It should therefore be used as the first bootloader.\n\nconfig BR2_TARGET_EDK2_PLATFORM_OVMF_X64\n\tbool \"x86-64\"\n\tdepends on BR2_x86_64\n\thelp\n\t  Platform configuration for a generic x86-64 target.\n\t  This platform will boot from flash address 0x0.\n\t  It should therefore be used as the first bootloader.\n\nconfig BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU\n\tbool \"ARM Virt Qemu (flash)\"\n\tdepends on BR2_aarch64\n\thelp\n\t  Platform configuration for QEMU targeting the Virt machine.\n\t  This platform will only boot from flash address 0x0.\n\t  It should therefore be used as the first bootloader.\n\nconfig BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU_KERNEL\n\tbool \"ARM Virt Qemu (kernel)\"\n\tdepends on BR2_aarch64\n\thelp\n\t  Platform configuration for QEMU targeting the Virt machine.\n\t  This platform can boot from either flash address 0x0 or via\n\t  the Linux boot protocol. It can therefore be loaded by a\n\t  previous bootloader like ARM Trusted Firmware or OP-TEE.\n\nconfig BR2_TARGET_EDK2_PLATFORM_ARM_SGI575\n\tbool \"ARM SGI-575\"\n\tdepends on BR2_aarch64\n\thelp\n\t  Platform configuration for ARM SGI-575 on ARM's\n\t  Fixed Virtual Platform (FVP).\n\nconfig BR2_TARGET_EDK2_PLATFORM_ARM_VEXPRESS_FVP_AARCH64\n\tbool \"ARM VExpress FVP Aarch64\"\n\tdepends on BR2_aarch64\n\thelp\n\t  Platform configuration for ARM Versatile Express targeting\n\t  the Aarch64 Fixed Virtual Platform (FVP).\n\nconfig BR2_TARGET_EDK2_PLATFORM_SOCIONEXT_DEVELOPERBOX\n\tbool \"Socionext DeveloperBox\"\n\tdepends on BR2_aarch64\n\tdepends on BR2_TARGET_ARM_TRUSTED_FIRMWARE\n\tdepends on !BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33\n\tselect BR2_PACKAGE_HOST_DTC\n\tselect BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP\n\thelp\n\t  Platform configuration for Socionext SynQuacer DeveloperBox\n\t  (SC2A11).\n\ncomment \"Socionext DeveloperBox depends on ATF not using EDK2 as BL33\"\n\tdepends on BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33\n\nconfig BR2_TARGET_EDK2_PLATFORM_SOLIDRUN_ARMADA80X0MCBIN\n\tbool \"SolidRun MacchiatoBin\"\n\tdepends on BR2_aarch64\n\tdepends on BR2_TARGET_ARM_TRUSTED_FIRMWARE\n\tselect BR2_PACKAGE_HOST_DTC\n\tselect BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP\n\thelp\n\t  Platform configuration for the SolidRun MacchiatoBin.\n\nconfig BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA\n\tbool \"QEMU SBSA\"\n\tdepends on BR2_aarch64\n\tdepends on BR2_TARGET_ARM_TRUSTED_FIRMWARE\n\tdepends on !BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33\n\thelp\n\t  Platform configuration for QEMU targeting the SBSA reference\n\t  machine.\n\ncomment \"QEMU SBSA depends on ATF not using EDK2 as BL33\"\n\tdepends on BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33\n\nendchoice\n\nconfig BR2_TARGET_EDK2_FD_NAME\n\tstring\n\tdefault \"OVMF\" if BR2_TARGET_EDK2_PLATFORM_OVMF_I386\n\tdefault \"OVMF\" if BR2_TARGET_EDK2_PLATFORM_OVMF_X64\n\tdefault \"QEMU_EFI\" if BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU\n\tdefault \"QEMU_EFI\" if BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU_KERNEL\n\tdefault \"BL33_AP_UEFI\" if BR2_TARGET_EDK2_PLATFORM_ARM_SGI575\n\tdefault \"FVP_AARCH64_EFI\" if BR2_TARGET_EDK2_PLATFORM_ARM_VEXPRESS_FVP_AARCH64\n\tdefault \"FVP_AARCH64_EFI\" if BR2_TARGET_EDK2_PLATFORM_SOCIONEXT_DEVELOPERBOX\n\tdefault \"ARMADA_EFI\" if BR2_TARGET_EDK2_PLATFORM_SOLIDRUN_ARMADA80X0MCBIN\n\nendif\n\ncomment \"EDK2 needs a toolchain w/ gcc >= 5\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5\n"
  },
  {
    "path": "boot/edk2/edk2.hash",
    "content": "# Locally calculated\nsha256  04791c13b414a6d1877182a6d565cb762c30aa63e49bb4d495fca68ef4dd209d  edk2-edk2-stable202102-br1.tar.gz\nsha256  50ce20c9cfdb0e19ee34fe0a51fc0afe961f743697b068359ab2f862b494df80  License.txt\n"
  },
  {
    "path": "boot/edk2/edk2.mk",
    "content": "################################################################################\n#\n# edk2\n#\n################################################################################\n\nEDK2_VERSION = edk2-stable202102\nEDK2_SITE = https://github.com/tianocore/edk2\nEDK2_SITE_METHOD = git\nEDK2_LICENSE = BSD-2-Clause\nEDK2_LICENSE_FILE = License.txt\nEDK2_CPE_ID_VENDOR = tianocore\nEDK2_DEPENDENCIES = edk2-platforms host-python3 host-acpica host-util-linux\nEDK2_INSTALL_TARGET = NO\nEDK2_INSTALL_IMAGES = YES\n\nifeq ($(BR2_ENABLE_DEBUG),y)\nEDK2_BUILD_TYPE = DEBUG\nelse\nEDK2_BUILD_TYPE = RELEASE\nendif\n\n# Build system notes.\n#\n# The EDK2 build system is rather unique, so here are a few useful notes.\n#\n# First, builds rely heavily on Git submodules to fetch various dependencies\n# into specific directory structures. It might be possible to work around this\n# and rely on Buildroot's infrastructure, but using Git submodules greatly\n# simplifies this already complicated build system.\n#\n# Second, the build system is spread across various commands and stages.\n# Therefore, all build variables needs to be exported to be available\n# accordingly. The first stage will build $(@D)/BaseTools which contains\n# various tools and scripts for the host.\n#\n# Third, where applicable, the dependency direction between EDK2 and\n# ARM Trusted Firmware (ATF) will go in different direction for different\n# platforms. Most commonly, ATF will depend on EDK2 via the BL33 payload.\n# But for some platforms (e.g. QEMU SBSA or DeveloperBox) EDK2 will package\n# the ATF images within its own build system. In such cases, intermediary\n# \"EDK2 packages\" will be built in $(EDK2_BUILD_PACKAGES) in order for EDK2\n# to be able to use them in subsequent build stages.\n#\n# For more information about the build setup:\n# https://edk2-docs.gitbook.io/edk-ii-build-specification/4_edk_ii_build_process_overview\n\nEDK2_GIT_SUBMODULES = YES\nEDK2_BUILD_PACKAGES = $(@D)/Build/Buildroot\nEDK2_PACKAGES_PATH = $(@D):$(EDK2_BUILD_PACKAGES):$(STAGING_DIR)/usr/share/edk2-platforms\n\nifeq ($(BR2_TARGET_EDK2_PLATFORM_OVMF_I386),y)\nEDK2_ARCH = IA32\nEDK2_DEPENDENCIES += host-nasm\nEDK2_PACKAGE_NAME = OvmfPkg\nEDK2_PLATFORM_NAME = OvmfPkgIa32\nEDK2_BUILD_DIR = OvmfIa32\n\nelse ifeq ($(BR2_TARGET_EDK2_PLATFORM_OVMF_X64),y)\nEDK2_ARCH = X64\nEDK2_DEPENDENCIES += host-nasm\nEDK2_PACKAGE_NAME = OvmfPkg\nEDK2_PLATFORM_NAME = OvmfPkgX64\nEDK2_BUILD_DIR = OvmfX64\n\nelse ifeq ($(BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU),y)\nEDK2_ARCH = AARCH64\nEDK2_PACKAGE_NAME = ArmVirtPkg\nEDK2_PLATFORM_NAME = ArmVirtQemu\nEDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME)-$(EDK2_ARCH)\n\nelse ifeq ($(BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU_KERNEL),y)\nEDK2_ARCH = AARCH64\nEDK2_PACKAGE_NAME = ArmVirtPkg\nEDK2_PLATFORM_NAME = ArmVirtQemuKernel\nEDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME)-$(EDK2_ARCH)\n\nelse ifeq ($(BR2_TARGET_EDK2_PLATFORM_ARM_VEXPRESS_FVP_AARCH64),y)\nEDK2_ARCH = AARCH64\nEDK2_PACKAGE_NAME = Platform/ARM/VExpressPkg\nEDK2_PLATFORM_NAME = ArmVExpress-FVP-AArch64\nEDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME)\n\nelse ifeq ($(BR2_TARGET_EDK2_PLATFORM_SOCIONEXT_DEVELOPERBOX),y)\nEDK2_ARCH = AARCH64\nEDK2_DEPENDENCIES += host-dtc arm-trusted-firmware\nEDK2_PACKAGE_NAME = Platform/Socionext/DeveloperBox\nEDK2_PLATFORM_NAME = DeveloperBox\nEDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME)\nEDK2_BUILD_ENV += DTC_PREFIX=$(HOST_DIR)/bin/\nEDK2_BUILD_OPTS += -D DO_X86EMU=TRUE\nEDK2_PRE_BUILD_HOOKS += EDK2_PRE_BUILD_SOCIONEXT_DEVELOPERBOX\n\ndefine EDK2_PRE_BUILD_SOCIONEXT_DEVELOPERBOX\n\tmkdir -p $(EDK2_BUILD_PACKAGES)/Platform/Socionext/DeveloperBox\n\t$(ARM_TRUSTED_FIRMWARE_DIR)/tools/fiptool/fiptool create \\\n\t\t--tb-fw $(BINARIES_DIR)/bl31.bin \\\n\t\t--soc-fw $(BINARIES_DIR)/bl31.bin \\\n\t\t--scp-fw $(BINARIES_DIR)/bl31.bin \\\n\t\t$(EDK2_BUILD_PACKAGES)/Platform/Socionext/DeveloperBox/fip_all_arm_tf.bin\nendef\n\nelse ifeq ($(BR2_TARGET_EDK2_PLATFORM_SOLIDRUN_ARMADA80X0MCBIN),y)\nEDK2_ARCH = AARCH64\nEDK2_DEPENDENCIES += host-dtc arm-trusted-firmware\nEDK2_PACKAGE_NAME = Platform/SolidRun/Armada80x0McBin\nEDK2_PLATFORM_NAME = Armada80x0McBin\nEDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME)-$(EDK2_ARCH)\nEDK2_BUILD_ENV += DTC_PREFIX=$(HOST_DIR)/bin/\nEDK2_BUILD_OPTS += -D INCLUDE_TFTP_COMMAND\n\nelse ifeq ($(BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA),y)\nEDK2_ARCH = AARCH64\nEDK2_DEPENDENCIES += arm-trusted-firmware\nEDK2_PACKAGE_NAME = Platform/Qemu/SbsaQemu\nEDK2_PLATFORM_NAME = SbsaQemu\nEDK2_BUILD_DIR = $(EDK2_PLATFORM_NAME)\nEDK2_PRE_BUILD_HOOKS += EDK2_PRE_BUILD_QEMU_SBSA\n\ndefine EDK2_PRE_BUILD_QEMU_SBSA\n\tmkdir -p $(EDK2_BUILD_PACKAGES)/Platform/Qemu/Sbsa\n\tln -srf $(BINARIES_DIR)/{bl1.bin,fip.bin} $(EDK2_BUILD_PACKAGES)/Platform/Qemu/Sbsa/\nendef\n\nendif\n\nEDK2_BASETOOLS_OPTS = \\\n\tEXTRA_LDFLAGS=\"$(HOST_LDFLAGS)\" \\\n\tEXTRA_OPTFLAGS=\"$(HOST_CPPFLAGS)\"\n\nEDK2_BUILD_ENV += \\\n\tWORKSPACE=$(@D) \\\n\tPACKAGES_PATH=$(EDK2_PACKAGES_PATH) \\\n\tPYTHON_COMMAND=$(HOST_DIR)/bin/python3 \\\n\tIASL_PREFIX=$(HOST_DIR)/bin/ \\\n\tNASM_PREFIX=$(HOST_DIR)/bin/ \\\n\tGCC5_$(EDK2_ARCH)_PREFIX=$(TARGET_CROSS)\n\nEDK2_BUILD_OPTS += \\\n\t-t GCC5 \\\n\t-n $(BR2_JLEVEL) \\\n\t-a $(EDK2_ARCH) \\\n\t-b $(EDK2_BUILD_TYPE) \\\n\t-p $(EDK2_PACKAGE_NAME)/$(EDK2_PLATFORM_NAME).dsc\n\ndefine EDK2_BUILD_CMDS\n\tmkdir -p $(EDK2_BUILD_PACKAGES)\n\texport $(EDK2_BUILD_ENV) && \\\n\tunset ARCH && \\\n\tsource $(@D)/edksetup.sh && \\\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/BaseTools $(EDK2_BASETOOLS_OPTS) && \\\n\tbuild $(EDK2_BUILD_OPTS) all\nendef\n\ndefine EDK2_INSTALL_IMAGES_CMDS\n\tcp -f $(@D)/Build/$(EDK2_BUILD_DIR)/$(EDK2_BUILD_TYPE)_GCC5/FV/*.fd $(BINARIES_DIR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/grub2/0001-build-Fix-GRUB-i386-pc-build-with-Ubuntu-gcc.patch",
    "content": "From 6643507ce30f775008e093580f0c9499dfb2c485 Mon Sep 17 00:00:00 2001\nFrom: Simon Hardy <simon.hardy@itdev.co.uk>\nDate: Tue, 24 Mar 2020 13:29:12 +0000\nSubject: build: Fix GRUB i386-pc build with Ubuntu gcc\n\nWith recent versions of gcc on Ubuntu a very large lzma_decompress.img file is\noutput. (e.g. 134479600 bytes instead of 2864.) This causes grub-mkimage to\nfail with: \"error: Decompressor is too big.\"\n\nThis seems to be caused by a section .note.gnu.property that is placed at an\noffset such that objcopy needs to pad the img file with zeros.\n\nThis issue is present on:\nUbuntu 19.10 with gcc (Ubuntu 8.3.0-26ubuntu1~19.10) 8.3.0\nUbuntu 19.10 with gcc (Ubuntu 9.2.1-9ubuntu2) 9.2.1 20191008\n\nThis issue is not present on:\nUbuntu 19.10 with gcc (Ubuntu 7.5.0-3ubuntu1~19.10) 7.5.0\nRHEL 8.0 with gcc 8.3.1 20190507 (Red Hat 8.3.1-4)\n\nThe issue can be fixed by removing the section using objcopy as shown in\nthis patch.\n\nSigned-off-by: Simon Hardy <simon.hardy@itdev.co.uk>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n[Retrieved (and updated to directly patch Makefile.in instead of\ngentpl.py to avoid adding a dependency on python) from:\nhttp://git.savannah.gnu.org/cgit/grub.git/commit/?id=6643507ce30f775008e093580f0c9499dfb2c485]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[yann.morin.1998@free.fr:\n  - keep the part patching gentpl.py\n  - restore it as a git-formatted patch\n  - introduce the hunk about the generated .am file\n]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n gentpl.py             |    2     1     1     0 +-\n grub-core/Makefile.in |   38    19    19     0 +++++++++++++++++++-------------------\n 2 files changed, 20 insertions(+), 20 deletions(-)\n\ndiff --git a/gentpl.py b/gentpl.py\nindex 387588c05..c86550d4f 100644\n--- a/gentpl.py\n+++ b/gentpl.py\n@@ -766,7 +766,7 @@ def image(defn, platform):\n if test x$(TARGET_APPLE_LINKER) = x1; then \\\n   $(MACHO2IMG) $< $@; \\\n else \\\n-  $(TARGET_OBJCOPY) $(\"\"\" + cname(defn) + \"\"\"_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; \\\n+  $(TARGET_OBJCOPY) $(\"\"\" + cname(defn) + \"\"\"_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; \\\n fi\n \"\"\")\n \ndiff --git a/grub-core/Makefile.core.am b/grub-core/Makefile.core.am\nindex 387588c05..c86550d4f 100644\n--- a/grub-core/Makefile.core.am\n+++ 2/grub-core/Makefile.core.am\n@@ -22897,7 +22897,7 @@\n CLEANFILES += boot.img\n \n boot.img: boot.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -22918,7 +22918,7 @@\n CLEANFILES += boot.img\n \n boot.img: boot.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -22939,7 +22939,7 @@\n CLEANFILES += boot.img\n \n boot.img: boot.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -22960,7 +22960,7 @@\n CLEANFILES += boot_hybrid.img\n \n boot_hybrid.img: boot_hybrid.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_hybrid_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_hybrid_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -22981,7 +22981,7 @@\n CLEANFILES += cdboot.img\n \n cdboot.img: cdboot.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(cdboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(cdboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23002,7 +23002,7 @@\n CLEANFILES += cdboot.img\n \n cdboot.img: cdboot.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(cdboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(cdboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23023,7 +23023,7 @@\n CLEANFILES += pxeboot.img\n \n pxeboot.img: pxeboot.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(pxeboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(pxeboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23044,7 +23044,7 @@\n CLEANFILES += diskboot.img\n \n diskboot.img: diskboot.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(diskboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(diskboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23065,7 +23065,7 @@\n CLEANFILES += diskboot.img\n \n diskboot.img: diskboot.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(diskboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(diskboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23086,7 +23086,7 @@\n CLEANFILES += lnxboot.img\n \n lnxboot.img: lnxboot.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(lnxboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(lnxboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23107,7 +23107,7 @@\n CLEANFILES += xz_decompress.img\n \n xz_decompress.img: xz_decompress.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(xz_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(xz_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23128,7 +23128,7 @@\n CLEANFILES += xz_decompress.img\n \n xz_decompress.img: xz_decompress.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(xz_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(xz_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23149,7 +23149,7 @@\n CLEANFILES += xz_decompress.img\n \n xz_decompress.img: xz_decompress.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(xz_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(xz_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23170,7 +23170,7 @@\n CLEANFILES += none_decompress.img\n \n none_decompress.img: none_decompress.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(none_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(none_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23191,7 +23191,7 @@\n CLEANFILES += none_decompress.img\n \n none_decompress.img: none_decompress.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(none_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(none_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23212,7 +23212,7 @@\n CLEANFILES += none_decompress.img\n \n none_decompress.img: none_decompress.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(none_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(none_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23233,7 +23233,7 @@\n CLEANFILES += lzma_decompress.img\n \n lzma_decompress.img: lzma_decompress.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(lzma_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(lzma_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23254,7 +23254,7 @@\n CLEANFILES += fwstart.img\n \n fwstart.img: fwstart.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(fwstart_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(fwstart_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \n@@ -23275,7 +23275,7 @@\n CLEANFILES += fwstart_fuloong2f.img\n \n fwstart_fuloong2f.img: fwstart_fuloong2f.image$(EXEEXT)\n-\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(fwstart_fuloong2f_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(fwstart_fuloong2f_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \t\n endif\n \ndiff --git a/grub-core/Makefile.in b/grub-core/Makefile.in\nindex 387588c05..c86550d4f 100644\n--- a/grub-core/Makefile.in\n+++ b/grub-core/Makefile.in\n@@ -46531,61 +46531,61 @@\n @COND_riscv64_efi_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(TARGET_STRIP) -S -x $(kernel_exec) -o $@.bin $<;   $(TARGET_OBJCONV) -f$(TARGET_MODULE_FORMAT) -nr:_grub_mod_init:grub_mod_init -nr:_grub_mod_fini:grub_mod_fini -ed2022 -ed2016 -wd1106 -nu -nd $@.bin $@;   rm -f $@.bin;    elif test ! -z '$(TARGET_OBJ2ELF)'; then      $(TARGET_STRIP) $(kernel_exec_STRIPFLAGS) -o $@.bin $< &&      $(TARGET_OBJ2ELF) $@.bin $@ || (rm -f $@; rm -f $@.bin; exit 1);      rm -f $@.bin; else $(TARGET_STRIP) $(kernel_exec_STRIPFLAGS) -o $@ $<; fi\n \n @COND_i386_pc_TRUE@boot.img: boot.image$(EXEEXT)\n-@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_i386_qemu_TRUE@boot.img: boot.image$(EXEEXT)\n-@COND_i386_qemu_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_i386_qemu_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_sparc64_ieee1275_TRUE@boot.img: boot.image$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_sparc64_ieee1275_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_i386_pc_TRUE@boot_hybrid.img: boot_hybrid.image$(EXEEXT)\n-@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_hybrid_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(boot_hybrid_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_i386_pc_TRUE@cdboot.img: cdboot.image$(EXEEXT)\n-@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(cdboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(cdboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_sparc64_ieee1275_TRUE@cdboot.img: cdboot.image$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(cdboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_sparc64_ieee1275_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(cdboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_i386_pc_TRUE@pxeboot.img: pxeboot.image$(EXEEXT)\n-@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(pxeboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(pxeboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_i386_pc_TRUE@diskboot.img: diskboot.image$(EXEEXT)\n-@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(diskboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(diskboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_sparc64_ieee1275_TRUE@diskboot.img: diskboot.image$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(diskboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_sparc64_ieee1275_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(diskboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_i386_pc_TRUE@lnxboot.img: lnxboot.image$(EXEEXT)\n-@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(lnxboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(lnxboot_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_mips_loongson_TRUE@xz_decompress.img: xz_decompress.image$(EXEEXT)\n-@COND_mips_loongson_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(xz_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_mips_loongson_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(xz_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_mips_arc_TRUE@xz_decompress.img: xz_decompress.image$(EXEEXT)\n-@COND_mips_arc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(xz_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_mips_arc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(xz_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_mips_qemu_mips_TRUE@xz_decompress.img: xz_decompress.image$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(xz_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_mips_qemu_mips_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(xz_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_mips_loongson_TRUE@none_decompress.img: none_decompress.image$(EXEEXT)\n-@COND_mips_loongson_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(none_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_mips_loongson_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(none_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_mips_arc_TRUE@none_decompress.img: none_decompress.image$(EXEEXT)\n-@COND_mips_arc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(none_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_mips_arc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(none_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_mips_qemu_mips_TRUE@none_decompress.img: none_decompress.image$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(none_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_mips_qemu_mips_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(none_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_i386_pc_TRUE@lzma_decompress.img: lzma_decompress.image$(EXEEXT)\n-@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(lzma_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_i386_pc_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(lzma_decompress_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_mips_loongson_TRUE@fwstart.img: fwstart.image$(EXEEXT)\n-@COND_mips_loongson_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(fwstart_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_mips_loongson_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(fwstart_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_mips_loongson_TRUE@fwstart_fuloong2f.img: fwstart_fuloong2f.image$(EXEEXT)\n-@COND_mips_loongson_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(fwstart_fuloong2f_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .ARM.exidx $< $@; fi\n+@COND_mips_loongson_TRUE@\tif test x$(TARGET_APPLE_LINKER) = x1; then   $(MACHO2IMG) $< $@; else   $(TARGET_OBJCOPY) $(fwstart_fuloong2f_image_OBJCOPYFLAGS) --strip-unneeded -R .note -R .comment -R .note.gnu.build-id -R .MIPS.abiflags -R .reginfo -R .rel.dyn -R .note.gnu.gold-version -R .note.gnu.property -R .ARM.exidx $< $@; fi\n \n @COND_MAN_PAGES_TRUE@@COND_emu_TRUE@grub-emu.1: grub-emu \n @COND_MAN_PAGES_TRUE@@COND_emu_TRUE@\tchmod a+x grub-emu\n"
  },
  {
    "path": "boot/grub2/0002-yylex-Make-lexer-fatal-errors-actually-be-fatal.patch",
    "content": "From a7ab0cc98fa89a3d5098c29cbe44bcd24b0a6454 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Wed, 15 Apr 2020 15:45:02 -0400\nSubject: [PATCH] yylex: Make lexer fatal errors actually be fatal\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nWhen presented with a command that can't be tokenized to anything\nsmaller than YYLMAX characters, the parser calls YY_FATAL_ERROR(errmsg),\nexpecting that will stop further processing, as such:\n\n  #define YY_DO_BEFORE_ACTION \\\n        yyg->yytext_ptr = yy_bp; \\\n        yyleng = (int) (yy_cp - yy_bp); \\\n        yyg->yy_hold_char = *yy_cp; \\\n        *yy_cp = '\\0'; \\\n        if ( yyleng >= YYLMAX ) \\\n                YY_FATAL_ERROR( \"token too large, exceeds YYLMAX\" ); \\\n        yy_flex_strncpy( yytext, yyg->yytext_ptr, yyleng + 1 , yyscanner); \\\n        yyg->yy_c_buf_p = yy_cp;\n\nThe code flex generates expects that YY_FATAL_ERROR() will either return\nfor it or do some form of longjmp(), or handle the error in some way at\nleast, and so the strncpy() call isn't in an \"else\" clause, and thus if\nYY_FATAL_ERROR() is *not* actually fatal, it does the call with the\nquestionable limit, and predictable results ensue.\n\nUnfortunately, our implementation of YY_FATAL_ERROR() is:\n\n   #define YY_FATAL_ERROR(msg)                     \\\n     do {                                          \\\n       grub_printf (_(\"fatal error: %s\\n\"), _(msg));     \\\n     } while (0)\n\nThe same pattern exists in yyless(), and similar problems exist in users\nof YY_INPUT(), several places in the main parsing loop,\nyy_get_next_buffer(), yy_load_buffer_state(), yyensure_buffer_stack,\nyy_scan_buffer(), etc.\n\nAll of these callers expect YY_FATAL_ERROR() to actually be fatal, and\nthe things they do if it returns after calling it are wildly unsafe.\n\nFixes: CVE-2020-10713\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/script/yylex.l | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/script/yylex.l b/grub-core/script/yylex.l\nindex 7b44c37b7..b7203c823 100644\n--- a/grub-core/script/yylex.l\n+++ b/grub-core/script/yylex.l\n@@ -37,11 +37,11 @@\n \n /* \n  * As we don't have access to yyscanner, we cannot do much except to\n- * print the fatal error.\n+ * print the fatal error and exit.\n  */\n #define YY_FATAL_ERROR(msg)                     \\\n   do {                                          \\\n-    grub_printf (_(\"fatal error: %s\\n\"), _(msg));     \\\n+    grub_fatal (_(\"fatal error: %s\\n\"), _(msg));\\\n   } while (0)\n \n #define COPY(str, hint)                         \\\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0003-safemath-Add-some-arithmetic-primitives-that-check-f.patch",
    "content": "From 782a4580a5e347793443aa8e9152db1bf4a0fff8 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Mon, 15 Jun 2020 10:58:42 -0400\nSubject: [PATCH] safemath: Add some arithmetic primitives that check for\n overflow\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis adds a new header, include/grub/safemath.h, that includes easy to\nuse wrappers for __builtin_{add,sub,mul}_overflow() declared like:\n\n  bool OP(a, b, res)\n\nwhere OP is grub_add, grub_sub or grub_mul. OP() returns true in the\ncase where the operation would overflow and res is not modified.\nOtherwise, false is returned and the operation is executed.\n\nThese arithmetic primitives require newer compiler versions. So, bump\nthese requirements in the INSTALL file too.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n INSTALL                 | 22 ++--------------------\n include/grub/compiler.h |  8 ++++++++\n include/grub/safemath.h | 37 +++++++++++++++++++++++++++++++++++++\n 3 files changed, 47 insertions(+), 20 deletions(-)\n create mode 100644 include/grub/safemath.h\n\ndiff --git a/INSTALL b/INSTALL\nindex 8acb40902..dcb9b7d7b 100644\n--- a/INSTALL\n+++ b/INSTALL\n@@ -11,27 +11,9 @@ GRUB depends on some software packages installed into your system. If\n you don't have any of them, please obtain and install them before\n configuring the GRUB.\n \n-* GCC 4.1.3 or later\n-  Note: older versions may work but support is limited\n-\n-  Experimental support for clang 3.3 or later (results in much bigger binaries)\n+* GCC 5.1.0 or later\n+  Experimental support for clang 3.8.0 or later (results in much bigger binaries)\n   for i386, x86_64, arm (including thumb), arm64, mips(el), powerpc, sparc64\n-  Note: clang 3.2 or later works for i386 and x86_64 targets but results in\n-        much bigger binaries.\n-\tearlier versions not tested\n-  Note: clang 3.2 or later works for arm\n-\tearlier versions not tested\n-  Note: clang on arm64 is not supported due to\n-\thttps://llvm.org/bugs/show_bug.cgi?id=26030\n-  Note: clang 3.3 or later works for mips(el)\n-\tearlier versions fail to generate .reginfo and hence gprel relocations\n-\tfail.\n-  Note: clang 3.2 or later works for powerpc\n-\tearlier versions not tested\n-  Note: clang 3.5 or later works for sparc64\n-        earlier versions return \"error: unable to interface with target machine\"\n-  Note: clang has no support for ia64 and hence you can't compile GRUB\n-\tfor ia64 with clang\n * GNU Make\n * GNU Bison 2.3 or later\n * GNU gettext 0.17 or later\ndiff --git a/include/grub/compiler.h b/include/grub/compiler.h\nindex c9e1d7a73..8f3be3ae7 100644\n--- a/include/grub/compiler.h\n+++ b/include/grub/compiler.h\n@@ -48,4 +48,12 @@\n #  define WARN_UNUSED_RESULT\n #endif\n \n+#if defined(__clang__) && defined(__clang_major__) && defined(__clang_minor__)\n+#  define CLANG_PREREQ(maj,min) \\\n+          ((__clang_major__ > (maj)) || \\\n+\t   (__clang_major__ == (maj) && __clang_minor__ >= (min)))\n+#else\n+#  define CLANG_PREREQ(maj,min) 0\n+#endif\n+\n #endif /* ! GRUB_COMPILER_HEADER */\ndiff --git a/include/grub/safemath.h b/include/grub/safemath.h\nnew file mode 100644\nindex 000000000..c17b89bba\n--- /dev/null\n+++ b/include/grub/safemath.h\n@@ -0,0 +1,37 @@\n+/*\n+ *  GRUB  --  GRand Unified Bootloader\n+ *  Copyright (C) 2020  Free Software Foundation, Inc.\n+ *\n+ *  GRUB is free software: you can redistribute it and/or modify\n+ *  it under the terms of the GNU General Public License as published by\n+ *  the Free Software Foundation, either version 3 of the License, or\n+ *  (at your option) any later version.\n+ *\n+ *  GRUB is distributed in the hope that it will be useful,\n+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ *  GNU General Public License for more details.\n+ *\n+ *  You should have received a copy of the GNU General Public License\n+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.\n+ *\n+ *  Arithmetic operations that protect against overflow.\n+ */\n+\n+#ifndef GRUB_SAFEMATH_H\n+#define GRUB_SAFEMATH_H 1\n+\n+#include <grub/compiler.h>\n+\n+/* These appear in gcc 5.1 and clang 3.8. */\n+#if GNUC_PREREQ(5, 1) || CLANG_PREREQ(3, 8)\n+\n+#define grub_add(a, b, res)\t__builtin_add_overflow(a, b, res)\n+#define grub_sub(a, b, res)\t__builtin_sub_overflow(a, b, res)\n+#define grub_mul(a, b, res)\t__builtin_mul_overflow(a, b, res)\n+\n+#else\n+#error gcc 5.1 or newer or clang 3.8 or newer is required\n+#endif\n+\n+#endif /* GRUB_SAFEMATH_H */\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0004-calloc-Make-sure-we-always-have-an-overflow-checking.patch",
    "content": "From 5775eb40862b67468ced816e6d7560dbe22a3670 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Mon, 15 Jun 2020 12:15:29 -0400\nSubject: [PATCH] calloc: Make sure we always have an overflow-checking\n calloc() available\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis tries to make sure that everywhere in this source tree, we always have\nan appropriate version of calloc() (i.e. grub_calloc(), xcalloc(), etc.)\navailable, and that they all safely check for overflow and return NULL when\nit would occur.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/emu/misc.c          | 12 +++++++++\n grub-core/kern/emu/mm.c            | 10 ++++++++\n grub-core/kern/mm.c                | 40 ++++++++++++++++++++++++++++++\n grub-core/lib/libgcrypt_wrap/mem.c | 11 ++++++--\n grub-core/lib/posix_wrap/stdlib.h  |  8 +++++-\n include/grub/emu/misc.h            |  1 +\n include/grub/mm.h                  |  6 +++++\n 7 files changed, 85 insertions(+), 3 deletions(-)\n\ndiff --git a/grub-core/kern/emu/misc.c b/grub-core/kern/emu/misc.c\nindex 65db79baa..dfd8a8ec4 100644\n--- a/grub-core/kern/emu/misc.c\n+++ b/grub-core/kern/emu/misc.c\n@@ -85,6 +85,18 @@ grub_util_error (const char *fmt, ...)\n   exit (1);\n }\n \n+void *\n+xcalloc (grub_size_t nmemb, grub_size_t size)\n+{\n+  void *p;\n+\n+  p = calloc (nmemb, size);\n+  if (!p)\n+    grub_util_error (\"%s\", _(\"out of memory\"));\n+\n+  return p;\n+}\n+\n void *\n xmalloc (grub_size_t size)\n {\ndiff --git a/grub-core/kern/emu/mm.c b/grub-core/kern/emu/mm.c\nindex f262e95e3..145b01d37 100644\n--- a/grub-core/kern/emu/mm.c\n+++ b/grub-core/kern/emu/mm.c\n@@ -25,6 +25,16 @@\n #include <string.h>\n #include <grub/i18n.h>\n \n+void *\n+grub_calloc (grub_size_t nmemb, grub_size_t size)\n+{\n+  void *ret;\n+  ret = calloc (nmemb, size);\n+  if (!ret)\n+    grub_error (GRUB_ERR_OUT_OF_MEMORY, N_(\"out of memory\"));\n+  return ret;\n+}\n+\n void *\n grub_malloc (grub_size_t size)\n {\ndiff --git a/grub-core/kern/mm.c b/grub-core/kern/mm.c\nindex ee88ff611..f2822a836 100644\n--- a/grub-core/kern/mm.c\n+++ b/grub-core/kern/mm.c\n@@ -67,8 +67,10 @@\n #include <grub/dl.h>\n #include <grub/i18n.h>\n #include <grub/mm_private.h>\n+#include <grub/safemath.h>\n \n #ifdef MM_DEBUG\n+# undef grub_calloc\n # undef grub_malloc\n # undef grub_zalloc\n # undef grub_realloc\n@@ -375,6 +377,30 @@ grub_memalign (grub_size_t align, grub_size_t size)\n   return 0;\n }\n \n+/*\n+ * Allocate NMEMB instances of SIZE bytes and return the pointer, or error on\n+ * integer overflow.\n+ */\n+void *\n+grub_calloc (grub_size_t nmemb, grub_size_t size)\n+{\n+  void *ret;\n+  grub_size_t sz = 0;\n+\n+  if (grub_mul (nmemb, size, &sz))\n+    {\n+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n+      return NULL;\n+    }\n+\n+  ret = grub_memalign (0, sz);\n+  if (!ret)\n+    return NULL;\n+\n+  grub_memset (ret, 0, sz);\n+  return ret;\n+}\n+\n /* Allocate SIZE bytes and return the pointer.  */\n void *\n grub_malloc (grub_size_t size)\n@@ -561,6 +587,20 @@ grub_mm_dump (unsigned lineno)\n   grub_printf (\"\\n\");\n }\n \n+void *\n+grub_debug_calloc (const char *file, int line, grub_size_t nmemb, grub_size_t size)\n+{\n+  void *ptr;\n+\n+  if (grub_mm_debug)\n+    grub_printf (\"%s:%d: calloc (0x%\" PRIxGRUB_SIZE \", 0x%\" PRIxGRUB_SIZE \") = \",\n+\t\t file, line, size);\n+  ptr = grub_calloc (nmemb, size);\n+  if (grub_mm_debug)\n+    grub_printf (\"%p\\n\", ptr);\n+  return ptr;\n+}\n+\n void *\n grub_debug_malloc (const char *file, int line, grub_size_t size)\n {\ndiff --git a/grub-core/lib/libgcrypt_wrap/mem.c b/grub-core/lib/libgcrypt_wrap/mem.c\nindex beeb661a3..74c6eafe5 100644\n--- a/grub-core/lib/libgcrypt_wrap/mem.c\n+++ b/grub-core/lib/libgcrypt_wrap/mem.c\n@@ -4,6 +4,7 @@\n #include <grub/crypto.h>\n #include <grub/dl.h>\n #include <grub/env.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -36,7 +37,10 @@ void *\n gcry_xcalloc (size_t n, size_t m)\n {\n   void *ret;\n-  ret = grub_zalloc (n * m);\n+  size_t sz;\n+  if (grub_mul (n, m, &sz))\n+    grub_fatal (\"gcry_xcalloc would overflow\");\n+  ret = grub_zalloc (sz);\n   if (!ret)\n     grub_fatal (\"gcry_xcalloc failed\");\n   return ret;\n@@ -56,7 +60,10 @@ void *\n gcry_xcalloc_secure (size_t n, size_t m)\n {\n   void *ret;\n-  ret = grub_zalloc (n * m);\n+  size_t sz;\n+  if (grub_mul (n, m, &sz))\n+    grub_fatal (\"gcry_xcalloc would overflow\");\n+  ret = grub_zalloc (sz);\n   if (!ret)\n     grub_fatal (\"gcry_xcalloc failed\");\n   return ret;\ndiff --git a/grub-core/lib/posix_wrap/stdlib.h b/grub-core/lib/posix_wrap/stdlib.h\nindex 3b46f47ff..7a8d385e9 100644\n--- a/grub-core/lib/posix_wrap/stdlib.h\n+++ b/grub-core/lib/posix_wrap/stdlib.h\n@@ -21,6 +21,7 @@\n \n #include <grub/mm.h>\n #include <grub/misc.h>\n+#include <grub/safemath.h>\n \n static inline void \n free (void *ptr)\n@@ -37,7 +38,12 @@ malloc (grub_size_t size)\n static inline void *\n calloc (grub_size_t size, grub_size_t nelem)\n {\n-  return grub_zalloc (size * nelem);\n+  grub_size_t sz;\n+\n+  if (grub_mul (size, nelem, &sz))\n+    return NULL;\n+\n+  return grub_zalloc (sz);\n }\n \n static inline void *\ndiff --git a/include/grub/emu/misc.h b/include/grub/emu/misc.h\nindex ce464cfd0..ff9c48a64 100644\n--- a/include/grub/emu/misc.h\n+++ b/include/grub/emu/misc.h\n@@ -47,6 +47,7 @@ grub_util_device_is_mapped (const char *dev);\n #define GRUB_HOST_PRIuLONG_LONG \"llu\"\n #define GRUB_HOST_PRIxLONG_LONG \"llx\"\n \n+void * EXPORT_FUNC(xcalloc) (grub_size_t nmemb, grub_size_t size) WARN_UNUSED_RESULT;\n void * EXPORT_FUNC(xmalloc) (grub_size_t size) WARN_UNUSED_RESULT;\n void * EXPORT_FUNC(xrealloc) (void *ptr, grub_size_t size) WARN_UNUSED_RESULT;\n char * EXPORT_FUNC(xstrdup) (const char *str) WARN_UNUSED_RESULT;\ndiff --git a/include/grub/mm.h b/include/grub/mm.h\nindex 28e2e53eb..9c38dd3ca 100644\n--- a/include/grub/mm.h\n+++ b/include/grub/mm.h\n@@ -29,6 +29,7 @@\n #endif\n \n void grub_mm_init_region (void *addr, grub_size_t size);\n+void *EXPORT_FUNC(grub_calloc) (grub_size_t nmemb, grub_size_t size);\n void *EXPORT_FUNC(grub_malloc) (grub_size_t size);\n void *EXPORT_FUNC(grub_zalloc) (grub_size_t size);\n void EXPORT_FUNC(grub_free) (void *ptr);\n@@ -48,6 +49,9 @@ extern int EXPORT_VAR(grub_mm_debug);\n void grub_mm_dump_free (void);\n void grub_mm_dump (unsigned lineno);\n \n+#define grub_calloc(nmemb, size)\t\\\n+  grub_debug_calloc (GRUB_FILE, __LINE__, nmemb, size)\n+\n #define grub_malloc(size)\t\\\n   grub_debug_malloc (GRUB_FILE, __LINE__, size)\n \n@@ -63,6 +67,8 @@ void grub_mm_dump (unsigned lineno);\n #define grub_free(ptr)\t\\\n   grub_debug_free (GRUB_FILE, __LINE__, ptr)\n \n+void *EXPORT_FUNC(grub_debug_calloc) (const char *file, int line,\n+\t\t\t\t      grub_size_t nmemb, grub_size_t size);\n void *EXPORT_FUNC(grub_debug_malloc) (const char *file, int line,\n \t\t\t\t      grub_size_t size);\n void *EXPORT_FUNC(grub_debug_zalloc) (const char *file, int line,\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0005-calloc-Use-calloc-at-most-places.patch",
    "content": "From 8185711241d73931269f402bb6799f7e2c58f04b Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Mon, 15 Jun 2020 12:26:01 -0400\nSubject: [PATCH] calloc: Use calloc() at most places\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis modifies most of the places we do some form of:\n\n  X = malloc(Y * Z);\n\nto use calloc(Y, Z) instead.\n\nAmong other issues, this fixes:\n  - allocation of integer overflow in grub_png_decode_image_header()\n    reported by Chris Coulson,\n  - allocation of integer overflow in luks_recover_key()\n    reported by Chris Coulson,\n  - allocation of integer overflow in grub_lvm_detect()\n    reported by Chris Coulson.\n\nFixes: CVE-2020-14308\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/bus/usb/usbhub.c                |  8 ++++----\n grub-core/commands/efi/lsefisystab.c      |  3 ++-\n grub-core/commands/legacycfg.c            |  6 +++---\n grub-core/commands/menuentry.c            |  2 +-\n grub-core/commands/nativedisk.c           |  2 +-\n grub-core/commands/parttool.c             | 12 +++++++++---\n grub-core/commands/regexp.c               |  2 +-\n grub-core/commands/search_wrap.c          |  2 +-\n grub-core/disk/diskfilter.c               |  4 ++--\n grub-core/disk/ieee1275/ofdisk.c          |  2 +-\n grub-core/disk/ldm.c                      | 14 +++++++-------\n grub-core/disk/luks.c                     |  2 +-\n grub-core/disk/lvm.c                      |  8 ++++----\n grub-core/disk/xen/xendisk.c              |  2 +-\n grub-core/efiemu/loadcore.c               |  2 +-\n grub-core/efiemu/mm.c                     |  6 +++---\n grub-core/font/font.c                     |  3 +--\n grub-core/fs/affs.c                       |  6 +++---\n grub-core/fs/btrfs.c                      |  6 +++---\n grub-core/fs/hfs.c                        |  2 +-\n grub-core/fs/hfsplus.c                    |  6 +++---\n grub-core/fs/iso9660.c                    |  2 +-\n grub-core/fs/ntfs.c                       |  4 ++--\n grub-core/fs/sfs.c                        |  2 +-\n grub-core/fs/tar.c                        |  2 +-\n grub-core/fs/udf.c                        |  4 ++--\n grub-core/fs/zfs/zfs.c                    |  4 ++--\n grub-core/gfxmenu/gui_string_util.c       |  2 +-\n grub-core/gfxmenu/widget-box.c            |  4 ++--\n grub-core/io/gzio.c                       |  2 +-\n grub-core/kern/efi/efi.c                  |  6 +++---\n grub-core/kern/emu/hostdisk.c             |  2 +-\n grub-core/kern/fs.c                       |  2 +-\n grub-core/kern/misc.c                     |  2 +-\n grub-core/kern/parser.c                   |  2 +-\n grub-core/kern/uboot/uboot.c              |  2 +-\n grub-core/lib/libgcrypt/cipher/ac.c       |  8 ++++----\n grub-core/lib/libgcrypt/cipher/primegen.c |  4 ++--\n grub-core/lib/libgcrypt/cipher/pubkey.c   |  4 ++--\n grub-core/lib/priority_queue.c            |  2 +-\n grub-core/lib/reed_solomon.c              |  7 +++----\n grub-core/lib/relocator.c                 | 10 +++++-----\n grub-core/lib/zstd/fse_decompress.c       |  2 +-\n grub-core/loader/arm/linux.c              |  2 +-\n grub-core/loader/efi/chainloader.c        |  2 +-\n grub-core/loader/i386/bsdXX.c             |  2 +-\n grub-core/loader/i386/xnu.c               |  4 ++--\n grub-core/loader/macho.c                  |  2 +-\n grub-core/loader/multiboot_elfxx.c        |  2 +-\n grub-core/loader/xnu.c                    |  2 +-\n grub-core/mmap/mmap.c                     |  4 ++--\n grub-core/net/bootp.c                     |  2 +-\n grub-core/net/dns.c                       | 10 +++++-----\n grub-core/net/net.c                       |  4 ++--\n grub-core/normal/charset.c                | 10 +++++-----\n grub-core/normal/cmdline.c                | 14 +++++++-------\n grub-core/normal/menu_entry.c             | 14 +++++++-------\n grub-core/normal/menu_text.c              |  4 ++--\n grub-core/normal/term.c                   |  4 ++--\n grub-core/osdep/linux/getroot.c           |  6 +++---\n grub-core/osdep/unix/config.c             |  2 +-\n grub-core/osdep/windows/getroot.c         |  2 +-\n grub-core/osdep/windows/hostdisk.c        |  4 ++--\n grub-core/osdep/windows/init.c            |  2 +-\n grub-core/osdep/windows/platform.c        |  4 ++--\n grub-core/osdep/windows/relpath.c         |  2 +-\n grub-core/partmap/gpt.c                   |  2 +-\n grub-core/partmap/msdos.c                 |  2 +-\n grub-core/script/execute.c                |  2 +-\n grub-core/tests/fake_input.c              |  2 +-\n grub-core/tests/video_checksum.c          |  6 +++---\n grub-core/video/capture.c                 |  2 +-\n grub-core/video/emu/sdl.c                 |  2 +-\n grub-core/video/i386/pc/vga.c             |  2 +-\n grub-core/video/readers/png.c             |  2 +-\n include/grub/unicode.h                    |  4 ++--\n util/getroot.c                            |  2 +-\n util/grub-file.c                          |  2 +-\n util/grub-fstest.c                        |  4 ++--\n util/grub-install-common.c                |  2 +-\n util/grub-install.c                       |  4 ++--\n util/grub-mkimagexx.c                     |  6 ++----\n util/grub-mkrescue.c                      |  4 ++--\n util/grub-mkstandalone.c                  |  2 +-\n util/grub-pe2elf.c                        | 12 +++++-------\n util/grub-probe.c                         |  4 ++--\n 86 files changed, 176 insertions(+), 175 deletions(-)\n\ndiff --git a/grub-core/bus/usb/usbhub.c b/grub-core/bus/usb/usbhub.c\nindex 34a7ff1b5..a06cce302 100644\n--- a/grub-core/bus/usb/usbhub.c\n+++ b/grub-core/bus/usb/usbhub.c\n@@ -149,8 +149,8 @@ grub_usb_add_hub (grub_usb_device_t dev)\n   grub_usb_set_configuration (dev, 1);\n \n   dev->nports = hubdesc.portcnt;\n-  dev->children = grub_zalloc (hubdesc.portcnt * sizeof (dev->children[0]));\n-  dev->ports = grub_zalloc (dev->nports * sizeof (dev->ports[0]));\n+  dev->children = grub_calloc (hubdesc.portcnt, sizeof (dev->children[0]));\n+  dev->ports = grub_calloc (dev->nports, sizeof (dev->ports[0]));\n   if (!dev->children || !dev->ports)\n     {\n       grub_free (dev->children);\n@@ -268,8 +268,8 @@ grub_usb_controller_dev_register_iter (grub_usb_controller_t controller, void *d\n \n   /* Query the number of ports the root Hub has.  */\n   hub->nports = controller->dev->hubports (controller);\n-  hub->devices = grub_zalloc (sizeof (hub->devices[0]) * hub->nports);\n-  hub->ports = grub_zalloc (sizeof (hub->ports[0]) * hub->nports);\n+  hub->devices = grub_calloc (hub->nports, sizeof (hub->devices[0]));\n+  hub->ports = grub_calloc (hub->nports, sizeof (hub->ports[0]));\n   if (!hub->devices || !hub->ports)\n     {\n       grub_free (hub->devices);\ndiff --git a/grub-core/commands/efi/lsefisystab.c b/grub-core/commands/efi/lsefisystab.c\nindex df1030221..cd81507f5 100644\n--- a/grub-core/commands/efi/lsefisystab.c\n+++ b/grub-core/commands/efi/lsefisystab.c\n@@ -71,7 +71,8 @@ grub_cmd_lsefisystab (struct grub_command *cmd __attribute__ ((unused)),\n     grub_printf (\"Vendor: \");\n     \n     for (vendor_utf16 = st->firmware_vendor; *vendor_utf16; vendor_utf16++);\n-    vendor = grub_malloc (4 * (vendor_utf16 - st->firmware_vendor) + 1);\n+    /* Allocate extra 3 bytes to simplify math. */\n+    vendor = grub_calloc (4, vendor_utf16 - st->firmware_vendor + 1);\n     if (!vendor)\n       return grub_errno;\n     *grub_utf16_to_utf8 ((grub_uint8_t *) vendor, st->firmware_vendor,\ndiff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c\nindex db7a8f002..5e3ec0d5e 100644\n--- a/grub-core/commands/legacycfg.c\n+++ b/grub-core/commands/legacycfg.c\n@@ -314,7 +314,7 @@ grub_cmd_legacy_kernel (struct grub_command *mycmd __attribute__ ((unused)),\n   if (argc < 2)\n     return grub_error (GRUB_ERR_BAD_ARGUMENT, N_(\"filename expected\"));\n \n-  cutargs = grub_malloc (sizeof (cutargs[0]) * (argc - 1));\n+  cutargs = grub_calloc (argc - 1, sizeof (cutargs[0]));\n   if (!cutargs)\n     return grub_errno;\n   cutargc = argc - 1;\n@@ -436,7 +436,7 @@ grub_cmd_legacy_kernel (struct grub_command *mycmd __attribute__ ((unused)),\n \t    {\n \t      char rbuf[3] = \"-r\";\n \t      bsdargc = cutargc + 2;\n-\t      bsdargs = grub_malloc (sizeof (bsdargs[0]) * bsdargc);\n+\t      bsdargs = grub_calloc (bsdargc, sizeof (bsdargs[0]));\n \t      if (!bsdargs)\n \t\t{\n \t\t  err = grub_errno;\n@@ -559,7 +559,7 @@ grub_cmd_legacy_initrdnounzip (struct grub_command *mycmd __attribute__ ((unused\n \treturn grub_error (GRUB_ERR_BAD_ARGUMENT, N_(\"can't find command `%s'\"),\n \t\t\t   \"module\");\n \n-      newargs = grub_malloc ((argc + 1) * sizeof (newargs[0]));\n+      newargs = grub_calloc (argc + 1, sizeof (newargs[0]));\n       if (!newargs)\n \treturn grub_errno;\n       grub_memcpy (newargs + 1, args, argc * sizeof (newargs[0]));\ndiff --git a/grub-core/commands/menuentry.c b/grub-core/commands/menuentry.c\nindex 2c5363da7..9164df744 100644\n--- a/grub-core/commands/menuentry.c\n+++ b/grub-core/commands/menuentry.c\n@@ -154,7 +154,7 @@ grub_normal_add_menu_entry (int argc, const char **args,\n     goto fail;\n \n   /* Save argc, args to pass as parameters to block arg later. */\n-  menu_args = grub_malloc (sizeof (char*) * (argc + 1));\n+  menu_args = grub_calloc (argc + 1, sizeof (char *));\n   if (! menu_args)\n     goto fail;\n \ndiff --git a/grub-core/commands/nativedisk.c b/grub-core/commands/nativedisk.c\nindex 699447d11..7c8f97f6a 100644\n--- a/grub-core/commands/nativedisk.c\n+++ b/grub-core/commands/nativedisk.c\n@@ -195,7 +195,7 @@ grub_cmd_nativedisk (grub_command_t cmd __attribute__ ((unused)),\n   else\n     path_prefix = prefix;\n \n-  mods = grub_malloc (argc * sizeof (mods[0]));\n+  mods = grub_calloc (argc, sizeof (mods[0]));\n   if (!mods)\n     return grub_errno;\n \ndiff --git a/grub-core/commands/parttool.c b/grub-core/commands/parttool.c\nindex 22b46b187..051e31320 100644\n--- a/grub-core/commands/parttool.c\n+++ b/grub-core/commands/parttool.c\n@@ -59,7 +59,13 @@ grub_parttool_register(const char *part_name,\n   for (nargs = 0; args[nargs].name != 0; nargs++);\n   cur->nargs = nargs;\n   cur->args = (struct grub_parttool_argdesc *)\n-    grub_malloc ((nargs + 1) * sizeof (struct grub_parttool_argdesc));\n+    grub_calloc (nargs + 1, sizeof (struct grub_parttool_argdesc));\n+  if (!cur->args)\n+    {\n+      grub_free (cur);\n+      curhandle--;\n+      return -1;\n+    }\n   grub_memcpy (cur->args, args,\n \t       (nargs + 1) * sizeof (struct grub_parttool_argdesc));\n \n@@ -257,7 +263,7 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),\n \treturn err;\n       }\n \n-  parsed = (int *) grub_zalloc (argc * sizeof (int));\n+  parsed = (int *) grub_calloc (argc, sizeof (int));\n \n   for (i = 1; i < argc; i++)\n     if (! parsed[i])\n@@ -290,7 +296,7 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),\n \t  }\n \tptool = cur;\n \tpargs = (struct grub_parttool_args *)\n-\t  grub_zalloc (ptool->nargs * sizeof (struct grub_parttool_args));\n+\t  grub_calloc (ptool->nargs, sizeof (struct grub_parttool_args));\n \tfor (j = i; j < argc; j++)\n \t  if (! parsed[j])\n \t    {\ndiff --git a/grub-core/commands/regexp.c b/grub-core/commands/regexp.c\nindex f00b184c8..4019164f3 100644\n--- a/grub-core/commands/regexp.c\n+++ b/grub-core/commands/regexp.c\n@@ -116,7 +116,7 @@ grub_cmd_regexp (grub_extcmd_context_t ctxt, int argc, char **args)\n   if (ret)\n     goto fail;\n \n-  matches = grub_zalloc (sizeof (*matches) * (regex.re_nsub + 1));\n+  matches = grub_calloc (regex.re_nsub + 1, sizeof (*matches));\n   if (! matches)\n     goto fail;\n \ndiff --git a/grub-core/commands/search_wrap.c b/grub-core/commands/search_wrap.c\nindex d7fd26b94..47fc8eb99 100644\n--- a/grub-core/commands/search_wrap.c\n+++ b/grub-core/commands/search_wrap.c\n@@ -122,7 +122,7 @@ grub_cmd_search (grub_extcmd_context_t ctxt, int argc, char **args)\n     for (i = 0; state[SEARCH_HINT_BAREMETAL].args[i]; i++)\n       nhints++;\n \n-  hints = grub_malloc (sizeof (hints[0]) * nhints);\n+  hints = grub_calloc (nhints, sizeof (hints[0]));\n   if (!hints)\n     return grub_errno;\n   j = 0;\ndiff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c\nindex c3b578acf..68ca9e0be 100644\n--- a/grub-core/disk/diskfilter.c\n+++ b/grub-core/disk/diskfilter.c\n@@ -1134,7 +1134,7 @@ grub_diskfilter_make_raid (grub_size_t uuidlen, char *uuid, int nmemb,\n   array->lvs->segments->node_count = nmemb;\n   array->lvs->segments->raid_member_size = disk_size;\n   array->lvs->segments->nodes\n-    = grub_zalloc (nmemb * sizeof (array->lvs->segments->nodes[0]));\n+    = grub_calloc (nmemb, sizeof (array->lvs->segments->nodes[0]));\n   array->lvs->segments->stripe_size = stripe_size;\n   for (i = 0; i < nmemb; i++)\n     {\n@@ -1226,7 +1226,7 @@ insert_array (grub_disk_t disk, const struct grub_diskfilter_pv_id *id,\n \t  grub_partition_t p;\n \t  for (p = disk->partition; p; p = p->parent)\n \t    s++;\n-\t  pv->partmaps = xmalloc (s * sizeof (pv->partmaps[0]));\n+\t  pv->partmaps = xcalloc (s, sizeof (pv->partmaps[0]));\n \t  s = 0;\n \t  for (p = disk->partition; p; p = p->parent)\n \t    pv->partmaps[s++] = xstrdup (p->partmap->name);\ndiff --git a/grub-core/disk/ieee1275/ofdisk.c b/grub-core/disk/ieee1275/ofdisk.c\nindex f73257e66..03674cb47 100644\n--- a/grub-core/disk/ieee1275/ofdisk.c\n+++ b/grub-core/disk/ieee1275/ofdisk.c\n@@ -297,7 +297,7 @@ dev_iterate (const struct grub_ieee1275_devalias *alias)\n       /* Power machines documentation specify 672 as maximum SAS disks in\n          one system. Using a slightly larger value to be safe. */\n       table_size = 768;\n-      table = grub_malloc (table_size * sizeof (grub_uint64_t));\n+      table = grub_calloc (table_size, sizeof (grub_uint64_t));\n \n       if (!table)\n         {\ndiff --git a/grub-core/disk/ldm.c b/grub-core/disk/ldm.c\nindex 2a22d2d6c..e6323701a 100644\n--- a/grub-core/disk/ldm.c\n+++ b/grub-core/disk/ldm.c\n@@ -323,8 +323,8 @@ make_vg (grub_disk_t disk,\n \t  lv->segments->type = GRUB_DISKFILTER_MIRROR;\n \t  lv->segments->node_count = 0;\n \t  lv->segments->node_alloc = 8;\n-\t  lv->segments->nodes = grub_zalloc (sizeof (*lv->segments->nodes)\n-\t\t\t\t\t     * lv->segments->node_alloc);\n+\t  lv->segments->nodes = grub_calloc (lv->segments->node_alloc,\n+\t\t\t\t\t     sizeof (*lv->segments->nodes));\n \t  if (!lv->segments->nodes)\n \t    goto fail2;\n \t  ptr = vblk[i].dynamic;\n@@ -543,8 +543,8 @@ make_vg (grub_disk_t disk,\n \t    {\n \t      comp->segment_alloc = 8;\n \t      comp->segment_count = 0;\n-\t      comp->segments = grub_malloc (sizeof (*comp->segments)\n-\t\t\t\t\t    * comp->segment_alloc);\n+\t      comp->segments = grub_calloc (comp->segment_alloc,\n+\t\t\t\t\t    sizeof (*comp->segments));\n \t      if (!comp->segments)\n \t\tgoto fail2;\n \t    }\n@@ -590,8 +590,8 @@ make_vg (grub_disk_t disk,\n \t\t}\n \t      comp->segments->node_count = read_int (ptr + 1, *ptr);\n \t      comp->segments->node_alloc = comp->segments->node_count;\n-\t      comp->segments->nodes = grub_zalloc (sizeof (*comp->segments->nodes)\n-\t\t\t\t\t\t   * comp->segments->node_alloc);\n+\t      comp->segments->nodes = grub_calloc (comp->segments->node_alloc,\n+\t\t\t\t\t\t   sizeof (*comp->segments->nodes));\n \t      if (!lv->segments->nodes)\n \t\tgoto fail2;\n \t    }\n@@ -1017,7 +1017,7 @@ grub_util_ldm_embed (struct grub_disk *disk, unsigned int *nsectors,\n       *nsectors = lv->size;\n       if (*nsectors > max_nsectors)\n \t*nsectors = max_nsectors;\n-      *sectors = grub_malloc (*nsectors * sizeof (**sectors));\n+      *sectors = grub_calloc (*nsectors, sizeof (**sectors));\n       if (!*sectors)\n \treturn grub_errno;\n       for (i = 0; i < *nsectors; i++)\ndiff --git a/grub-core/disk/luks.c b/grub-core/disk/luks.c\nindex 86c50c612..18b3a8bb1 100644\n--- a/grub-core/disk/luks.c\n+++ b/grub-core/disk/luks.c\n@@ -336,7 +336,7 @@ luks_recover_key (grub_disk_t source,\n \t&& grub_be_to_cpu32 (header.keyblock[i].stripes) > max_stripes)\n       max_stripes = grub_be_to_cpu32 (header.keyblock[i].stripes);\n \n-  split_key = grub_malloc (keysize * max_stripes);\n+  split_key = grub_calloc (keysize, max_stripes);\n   if (!split_key)\n     return grub_errno;\n \ndiff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c\nindex 7b265c780..d1df640b3 100644\n--- a/grub-core/disk/lvm.c\n+++ b/grub-core/disk/lvm.c\n@@ -173,7 +173,7 @@ grub_lvm_detect (grub_disk_t disk,\n      first one.  */\n \n   /* Allocate buffer space for the circular worst-case scenario. */\n-  metadatabuf = grub_malloc (2 * mda_size);\n+  metadatabuf = grub_calloc (2, mda_size);\n   if (! metadatabuf)\n     goto fail;\n \n@@ -426,7 +426,7 @@ grub_lvm_detect (grub_disk_t disk,\n #endif\n \t\t  goto lvs_fail;\n \t\t}\n-\t      lv->segments = grub_zalloc (sizeof (*seg) * lv->segment_count);\n+\t      lv->segments = grub_calloc (lv->segment_count, sizeof (*seg));\n \t      seg = lv->segments;\n \n \t      for (i = 0; i < lv->segment_count; i++)\n@@ -483,8 +483,8 @@ grub_lvm_detect (grub_disk_t disk,\n \t\t      if (seg->node_count != 1)\n \t\t\tseg->stripe_size = grub_lvm_getvalue (&p, \"stripe_size = \");\n \n-\t\t      seg->nodes = grub_zalloc (sizeof (*stripe)\n-\t\t\t\t\t\t* seg->node_count);\n+\t\t      seg->nodes = grub_calloc (seg->node_count,\n+\t\t\t\t\t\tsizeof (*stripe));\n \t\t      stripe = seg->nodes;\n \n \t\t      p = grub_strstr (p, \"stripes = [\");\ndiff --git a/grub-core/disk/xen/xendisk.c b/grub-core/disk/xen/xendisk.c\nindex 48476cbbf..d6612eebd 100644\n--- a/grub-core/disk/xen/xendisk.c\n+++ b/grub-core/disk/xen/xendisk.c\n@@ -426,7 +426,7 @@ grub_xendisk_init (void)\n   if (!ctr)\n     return;\n \n-  virtdisks = grub_malloc (ctr * sizeof (virtdisks[0]));\n+  virtdisks = grub_calloc (ctr, sizeof (virtdisks[0]));\n   if (!virtdisks)\n     return;\n   if (grub_xenstore_dir (\"device/vbd\", fill, &ctr))\ndiff --git a/grub-core/efiemu/loadcore.c b/grub-core/efiemu/loadcore.c\nindex 44085ef81..2b924623f 100644\n--- a/grub-core/efiemu/loadcore.c\n+++ b/grub-core/efiemu/loadcore.c\n@@ -201,7 +201,7 @@ grub_efiemu_count_symbols (const Elf_Ehdr *e)\n \n   grub_efiemu_nelfsyms = (unsigned) s->sh_size / (unsigned) s->sh_entsize;\n   grub_efiemu_elfsyms = (struct grub_efiemu_elf_sym *)\n-    grub_malloc (sizeof (struct grub_efiemu_elf_sym) * grub_efiemu_nelfsyms);\n+    grub_calloc (grub_efiemu_nelfsyms, sizeof (struct grub_efiemu_elf_sym));\n \n   /* Relocators */\n   for (i = 0, s = (Elf_Shdr *) ((char *) e + e->e_shoff);\ndiff --git a/grub-core/efiemu/mm.c b/grub-core/efiemu/mm.c\nindex 52a032f7b..9b8e0d0ad 100644\n--- a/grub-core/efiemu/mm.c\n+++ b/grub-core/efiemu/mm.c\n@@ -554,11 +554,11 @@ grub_efiemu_mmap_sort_and_uniq (void)\n   /* Initialize variables*/\n   grub_memset (present, 0, sizeof (int) * GRUB_EFI_MAX_MEMORY_TYPE);\n   scanline_events = (struct grub_efiemu_mmap_scan *)\n-    grub_malloc (sizeof (struct grub_efiemu_mmap_scan) * 2 * mmap_num);\n+    grub_calloc (mmap_num, sizeof (struct grub_efiemu_mmap_scan) * 2);\n \n   /* Number of chunks can't increase more than by factor of 2 */\n   result = (grub_efi_memory_descriptor_t *)\n-    grub_malloc (sizeof (grub_efi_memory_descriptor_t) * 2 * mmap_num);\n+    grub_calloc (mmap_num, sizeof (grub_efi_memory_descriptor_t) * 2);\n   if (!result || !scanline_events)\n     {\n       grub_free (result);\n@@ -660,7 +660,7 @@ grub_efiemu_mm_do_alloc (void)\n \n   /* Preallocate mmap */\n   efiemu_mmap = (grub_efi_memory_descriptor_t *)\n-    grub_malloc (mmap_reserved_size * sizeof (grub_efi_memory_descriptor_t));\n+    grub_calloc (mmap_reserved_size, sizeof (grub_efi_memory_descriptor_t));\n   if (!efiemu_mmap)\n     {\n       grub_efiemu_unload ();\ndiff --git a/grub-core/font/font.c b/grub-core/font/font.c\nindex 85a292557..8e118b315 100644\n--- a/grub-core/font/font.c\n+++ b/grub-core/font/font.c\n@@ -293,8 +293,7 @@ load_font_index (grub_file_t file, grub_uint32_t sect_length, struct\n   font->num_chars = sect_length / FONT_CHAR_INDEX_ENTRY_SIZE;\n \n   /* Allocate the character index array.  */\n-  font->char_index = grub_malloc (font->num_chars\n-\t\t\t\t  * sizeof (struct char_index_entry));\n+  font->char_index = grub_calloc (font->num_chars, sizeof (struct char_index_entry));\n   if (!font->char_index)\n     return 1;\n   font->bmp_idx = grub_malloc (0x10000 * sizeof (grub_uint16_t));\ndiff --git a/grub-core/fs/affs.c b/grub-core/fs/affs.c\nindex 6b6a2bc91..220b3712f 100644\n--- a/grub-core/fs/affs.c\n+++ b/grub-core/fs/affs.c\n@@ -301,7 +301,7 @@ grub_affs_read_symlink (grub_fshelp_node_t node)\n       return 0;\n     }\n   latin1[symlink_size] = 0;\n-  utf8 = grub_malloc (symlink_size * GRUB_MAX_UTF8_PER_LATIN1 + 1);\n+  utf8 = grub_calloc (GRUB_MAX_UTF8_PER_LATIN1 + 1, symlink_size);\n   if (!utf8)\n     {\n       grub_free (latin1);\n@@ -422,7 +422,7 @@ grub_affs_iterate_dir (grub_fshelp_node_t dir,\n \treturn 1;\n     }\n \n-  hashtable = grub_zalloc (data->htsize * sizeof (*hashtable));\n+  hashtable = grub_calloc (data->htsize, sizeof (*hashtable));\n   if (!hashtable)\n     return 1;\n \n@@ -628,7 +628,7 @@ grub_affs_label (grub_device_t device, char **label)\n       len = file.namelen;\n       if (len > sizeof (file.name))\n \tlen = sizeof (file.name);\n-      *label = grub_malloc (len * GRUB_MAX_UTF8_PER_LATIN1 + 1);\n+      *label = grub_calloc (GRUB_MAX_UTF8_PER_LATIN1 + 1, len);\n       if (*label)\n \t*grub_latin1_to_utf8 ((grub_uint8_t *) *label, file.name, len) = '\\0';\n     }\ndiff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c\nindex 48bd3d04a..11272efc1 100644\n--- a/grub-core/fs/btrfs.c\n+++ b/grub-core/fs/btrfs.c\n@@ -413,7 +413,7 @@ lower_bound (struct grub_btrfs_data *data,\n     {\n       desc->allocated = 16;\n       desc->depth = 0;\n-      desc->data = grub_malloc (sizeof (desc->data[0]) * desc->allocated);\n+      desc->data = grub_calloc (desc->allocated, sizeof (desc->data[0]));\n       if (!desc->data)\n \treturn grub_errno;\n     }\n@@ -752,7 +752,7 @@ raid56_read_retry (struct grub_btrfs_data *data,\n   grub_err_t ret = GRUB_ERR_OUT_OF_MEMORY;\n   grub_uint64_t i, failed_devices;\n \n-  buffers = grub_zalloc (sizeof(*buffers) * nstripes);\n+  buffers = grub_calloc (nstripes, sizeof (*buffers));\n   if (!buffers)\n     goto cleanup;\n \n@@ -2160,7 +2160,7 @@ grub_btrfs_embed (grub_device_t device __attribute__ ((unused)),\n   *nsectors = 64 * 2 - 1;\n   if (*nsectors > max_nsectors)\n     *nsectors = max_nsectors;\n-  *sectors = grub_malloc (*nsectors * sizeof (**sectors));\n+  *sectors = grub_calloc (*nsectors, sizeof (**sectors));\n   if (!*sectors)\n     return grub_errno;\n   for (i = 0; i < *nsectors; i++)\ndiff --git a/grub-core/fs/hfs.c b/grub-core/fs/hfs.c\nindex ac0a40990..3fe842b4d 100644\n--- a/grub-core/fs/hfs.c\n+++ b/grub-core/fs/hfs.c\n@@ -1360,7 +1360,7 @@ grub_hfs_label (grub_device_t device, char **label)\n       grub_size_t len = data->sblock.volname[0];\n       if (len > sizeof (data->sblock.volname) - 1)\n \tlen = sizeof (data->sblock.volname) - 1;\n-      *label = grub_malloc (len * MAX_UTF8_PER_MAC_ROMAN + 1);\n+      *label = grub_calloc (MAX_UTF8_PER_MAC_ROMAN + 1, len);\n       if (*label)\n \tmacroman_to_utf8 (*label, data->sblock.volname + 1,\n \t\t\t  len + 1, 0);\ndiff --git a/grub-core/fs/hfsplus.c b/grub-core/fs/hfsplus.c\nindex 54786bb1c..dae43becc 100644\n--- a/grub-core/fs/hfsplus.c\n+++ b/grub-core/fs/hfsplus.c\n@@ -720,7 +720,7 @@ list_nodes (void *record, void *hook_arg)\n   if (! filename)\n     return 0;\n \n-  keyname = grub_malloc (grub_be_to_cpu16 (catkey->namelen) * sizeof (*keyname));\n+  keyname = grub_calloc (grub_be_to_cpu16 (catkey->namelen), sizeof (*keyname));\n   if (!keyname)\n     {\n       grub_free (filename);\n@@ -1007,7 +1007,7 @@ grub_hfsplus_label (grub_device_t device, char **label)\n     grub_hfsplus_btree_recptr (&data->catalog_tree, node, ptr);\n \n   label_len = grub_be_to_cpu16 (catkey->namelen);\n-  label_name = grub_malloc (label_len * sizeof (*label_name));\n+  label_name = grub_calloc (label_len, sizeof (*label_name));\n   if (!label_name)\n     {\n       grub_free (node);\n@@ -1029,7 +1029,7 @@ grub_hfsplus_label (grub_device_t device, char **label)\n \t}\n     }\n \n-  *label = grub_malloc (label_len * GRUB_MAX_UTF8_PER_UTF16 + 1);\n+  *label = grub_calloc (label_len, GRUB_MAX_UTF8_PER_UTF16 + 1);\n   if (! *label)\n     {\n       grub_free (label_name);\ndiff --git a/grub-core/fs/iso9660.c b/grub-core/fs/iso9660.c\nindex 49c0c632b..4f1b52a55 100644\n--- a/grub-core/fs/iso9660.c\n+++ b/grub-core/fs/iso9660.c\n@@ -331,7 +331,7 @@ grub_iso9660_convert_string (grub_uint8_t *us, int len)\n   int i;\n   grub_uint16_t t[MAX_NAMELEN / 2 + 1];\n \n-  p = grub_malloc (len * GRUB_MAX_UTF8_PER_UTF16 + 1);\n+  p = grub_calloc (len, GRUB_MAX_UTF8_PER_UTF16 + 1);\n   if (! p)\n     return NULL;\n \ndiff --git a/grub-core/fs/ntfs.c b/grub-core/fs/ntfs.c\nindex fc4e1f678..2f34f76da 100644\n--- a/grub-core/fs/ntfs.c\n+++ b/grub-core/fs/ntfs.c\n@@ -556,8 +556,8 @@ get_utf8 (grub_uint8_t *in, grub_size_t len)\n   grub_uint16_t *tmp;\n   grub_size_t i;\n \n-  buf = grub_malloc (len * GRUB_MAX_UTF8_PER_UTF16 + 1);\n-  tmp = grub_malloc (len * sizeof (tmp[0]));\n+  buf = grub_calloc (len, GRUB_MAX_UTF8_PER_UTF16 + 1);\n+  tmp = grub_calloc (len, sizeof (tmp[0]));\n   if (!buf || !tmp)\n     {\n       grub_free (buf);\ndiff --git a/grub-core/fs/sfs.c b/grub-core/fs/sfs.c\nindex 50c1fe72f..90f7fb379 100644\n--- a/grub-core/fs/sfs.c\n+++ b/grub-core/fs/sfs.c\n@@ -266,7 +266,7 @@ grub_sfs_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)\n       node->next_extent = node->block;\n       node->cache_size = 0;\n \n-      node->cache = grub_malloc (sizeof (node->cache[0]) * cache_size);\n+      node->cache = grub_calloc (cache_size, sizeof (node->cache[0]));\n       if (!node->cache)\n \t{\n \t  grub_errno = 0;\ndiff --git a/grub-core/fs/tar.c b/grub-core/fs/tar.c\nindex 7d63e0c99..c551ed6b5 100644\n--- a/grub-core/fs/tar.c\n+++ b/grub-core/fs/tar.c\n@@ -120,7 +120,7 @@ grub_cpio_find_file (struct grub_archelp_data *data, char **name,\n \t  if (data->linkname_alloc < linksize + 1)\n \t    {\n \t      char *n;\n-\t      n = grub_malloc (2 * (linksize + 1));\n+\t      n = grub_calloc (2, linksize + 1);\n \t      if (!n)\n \t\treturn grub_errno;\n \t      grub_free (data->linkname);\ndiff --git a/grub-core/fs/udf.c b/grub-core/fs/udf.c\nindex dc8b6e2d1..a83761674 100644\n--- a/grub-core/fs/udf.c\n+++ b/grub-core/fs/udf.c\n@@ -873,7 +873,7 @@ read_string (const grub_uint8_t *raw, grub_size_t sz, char *outbuf)\n     {\n       unsigned i;\n       utf16len = sz - 1;\n-      utf16 = grub_malloc (utf16len * sizeof (utf16[0]));\n+      utf16 = grub_calloc (utf16len, sizeof (utf16[0]));\n       if (!utf16)\n \treturn NULL;\n       for (i = 0; i < utf16len; i++)\n@@ -883,7 +883,7 @@ read_string (const grub_uint8_t *raw, grub_size_t sz, char *outbuf)\n     {\n       unsigned i;\n       utf16len = (sz - 1) / 2;\n-      utf16 = grub_malloc (utf16len * sizeof (utf16[0]));\n+      utf16 = grub_calloc (utf16len, sizeof (utf16[0]));\n       if (!utf16)\n \treturn NULL;\n       for (i = 0; i < utf16len; i++)\ndiff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c\nindex 2f72e42bf..381dde556 100644\n--- a/grub-core/fs/zfs/zfs.c\n+++ b/grub-core/fs/zfs/zfs.c\n@@ -3325,7 +3325,7 @@ dnode_get_fullpath (const char *fullpath, struct subvolume *subvol,\n \t}\n       subvol->nkeys = 0;\n       zap_iterate (&keychain_dn, 8, count_zap_keys, &ctx, data);\n-      subvol->keyring = grub_zalloc (subvol->nkeys * sizeof (subvol->keyring[0]));\n+      subvol->keyring = grub_calloc (subvol->nkeys, sizeof (subvol->keyring[0]));\n       if (!subvol->keyring)\n \t{\n \t  grub_free (fsname);\n@@ -4336,7 +4336,7 @@ grub_zfs_embed (grub_device_t device __attribute__ ((unused)),\n   *nsectors = (VDEV_BOOT_SIZE >> GRUB_DISK_SECTOR_BITS);\n   if (*nsectors > max_nsectors)\n     *nsectors = max_nsectors;\n-  *sectors = grub_malloc (*nsectors * sizeof (**sectors));\n+  *sectors = grub_calloc (*nsectors, sizeof (**sectors));\n   if (!*sectors)\n     return grub_errno;\n   for (i = 0; i < *nsectors; i++)\ndiff --git a/grub-core/gfxmenu/gui_string_util.c b/grub-core/gfxmenu/gui_string_util.c\nindex a9a415e31..ba1e1eab3 100644\n--- a/grub-core/gfxmenu/gui_string_util.c\n+++ b/grub-core/gfxmenu/gui_string_util.c\n@@ -55,7 +55,7 @@ canonicalize_path (const char *path)\n     if (*p == '/')\n       components++;\n \n-  char **path_array = grub_malloc (components * sizeof (*path_array));\n+  char **path_array = grub_calloc (components, sizeof (*path_array));\n   if (! path_array)\n     return 0;\n \ndiff --git a/grub-core/gfxmenu/widget-box.c b/grub-core/gfxmenu/widget-box.c\nindex b60602889..470597ded 100644\n--- a/grub-core/gfxmenu/widget-box.c\n+++ b/grub-core/gfxmenu/widget-box.c\n@@ -303,10 +303,10 @@ grub_gfxmenu_create_box (const char *pixmaps_prefix,\n   box->content_height = 0;\n   box->raw_pixmaps =\n     (struct grub_video_bitmap **)\n-    grub_malloc (BOX_NUM_PIXMAPS * sizeof (struct grub_video_bitmap *));\n+    grub_calloc (BOX_NUM_PIXMAPS, sizeof (struct grub_video_bitmap *));\n   box->scaled_pixmaps =\n     (struct grub_video_bitmap **)\n-    grub_malloc (BOX_NUM_PIXMAPS * sizeof (struct grub_video_bitmap *));\n+    grub_calloc (BOX_NUM_PIXMAPS, sizeof (struct grub_video_bitmap *));\n \n   /* Initialize all pixmap pointers to NULL so that proper destruction can\n      be performed if an error is encountered partway through construction.  */\ndiff --git a/grub-core/io/gzio.c b/grub-core/io/gzio.c\nindex 6208a9763..43d98a7bd 100644\n--- a/grub-core/io/gzio.c\n+++ b/grub-core/io/gzio.c\n@@ -554,7 +554,7 @@ huft_build (unsigned *b,\t/* code lengths in bits (all assumed <= BMAX) */\n \t      z = 1 << j;\t/* table entries for j-bit table */\n \n \t      /* allocate and link in new table */\n-\t      q = (struct huft *) grub_zalloc ((z + 1) * sizeof (struct huft));\n+\t      q = (struct huft *) grub_calloc (z + 1, sizeof (struct huft));\n \t      if (! q)\n \t\t{\n \t\t  if (h)\ndiff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c\nindex 6e1ceb905..dc31caa21 100644\n--- a/grub-core/kern/efi/efi.c\n+++ b/grub-core/kern/efi/efi.c\n@@ -202,7 +202,7 @@ grub_efi_set_variable(const char *var, const grub_efi_guid_t *guid,\n \n   len = grub_strlen (var);\n   len16 = len * GRUB_MAX_UTF16_PER_UTF8;\n-  var16 = grub_malloc ((len16 + 1) * sizeof (var16[0]));\n+  var16 = grub_calloc (len16 + 1, sizeof (var16[0]));\n   if (!var16)\n     return grub_errno;\n   len16 = grub_utf8_to_utf16 (var16, len16, (grub_uint8_t *) var, len, NULL);\n@@ -237,7 +237,7 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,\n \n   len = grub_strlen (var);\n   len16 = len * GRUB_MAX_UTF16_PER_UTF8;\n-  var16 = grub_malloc ((len16 + 1) * sizeof (var16[0]));\n+  var16 = grub_calloc (len16 + 1, sizeof (var16[0]));\n   if (!var16)\n     return NULL;\n   len16 = grub_utf8_to_utf16 (var16, len16, (grub_uint8_t *) var, len, NULL);\n@@ -383,7 +383,7 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)\n \t  while (len > 0 && fp->path_name[len - 1] == 0)\n \t    len--;\n \n-\t  dup_name = grub_malloc (len * sizeof (*dup_name));\n+\t  dup_name = grub_calloc (len, sizeof (*dup_name));\n \t  if (!dup_name)\n \t    {\n \t      grub_free (name);\ndiff --git a/grub-core/kern/emu/hostdisk.c b/grub-core/kern/emu/hostdisk.c\nindex e9ec680cd..d975265b2 100644\n--- a/grub-core/kern/emu/hostdisk.c\n+++ b/grub-core/kern/emu/hostdisk.c\n@@ -615,7 +615,7 @@ static char *\n grub_util_path_concat_real (size_t n, int ext, va_list ap)\n {\n   size_t totlen = 0;\n-  char **l = xmalloc ((n + ext) * sizeof (l[0]));\n+  char **l = xcalloc (n + ext, sizeof (l[0]));\n   char *r, *p, *pi;\n   size_t i;\n   int first = 1;\ndiff --git a/grub-core/kern/fs.c b/grub-core/kern/fs.c\nindex 2b85f4950..f90be6566 100644\n--- a/grub-core/kern/fs.c\n+++ b/grub-core/kern/fs.c\n@@ -151,7 +151,7 @@ grub_fs_blocklist_open (grub_file_t file, const char *name)\n   while (p);\n \n   /* Allocate a block list.  */\n-  blocks = grub_zalloc (sizeof (struct grub_fs_block) * (num + 1));\n+  blocks = grub_calloc (num + 1, sizeof (struct grub_fs_block));\n   if (! blocks)\n     return 0;\n \ndiff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c\nindex 3b633d51f..a7abd367a 100644\n--- a/grub-core/kern/misc.c\n+++ b/grub-core/kern/misc.c\n@@ -690,7 +690,7 @@ parse_printf_args (const char *fmt0, struct printf_args *args,\n     args->ptr = args->prealloc;\n   else\n     {\n-      args->ptr = grub_malloc (args->count * sizeof (args->ptr[0]));\n+      args->ptr = grub_calloc (args->count, sizeof (args->ptr[0]));\n       if (!args->ptr)\n \t{\n \t  grub_errno = GRUB_ERR_NONE;\ndiff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c\nindex 78175aac2..619db3122 100644\n--- a/grub-core/kern/parser.c\n+++ b/grub-core/kern/parser.c\n@@ -213,7 +213,7 @@ grub_parser_split_cmdline (const char *cmdline,\n     return grub_errno;\n   grub_memcpy (args, buffer, bp - buffer);\n \n-  *argv = grub_malloc (sizeof (char *) * (*argc + 1));\n+  *argv = grub_calloc (*argc + 1, sizeof (char *));\n   if (!*argv)\n     {\n       grub_free (args);\ndiff --git a/grub-core/kern/uboot/uboot.c b/grub-core/kern/uboot/uboot.c\nindex be4816fe6..aac8f9ae1 100644\n--- a/grub-core/kern/uboot/uboot.c\n+++ b/grub-core/kern/uboot/uboot.c\n@@ -133,7 +133,7 @@ grub_uboot_dev_enum (void)\n     return num_devices;\n \n   max_devices = 2;\n-  enum_devices = grub_malloc (sizeof(struct device_info) * max_devices);\n+  enum_devices = grub_calloc (max_devices, sizeof(struct device_info));\n   if (!enum_devices)\n     return 0;\n \ndiff --git a/grub-core/lib/libgcrypt/cipher/ac.c b/grub-core/lib/libgcrypt/cipher/ac.c\nindex f5e946a2d..63f6fcd11 100644\n--- a/grub-core/lib/libgcrypt/cipher/ac.c\n+++ b/grub-core/lib/libgcrypt/cipher/ac.c\n@@ -185,7 +185,7 @@ ac_data_mpi_copy (gcry_ac_mpi_t *data_mpis, unsigned int data_mpis_n,\n   gcry_mpi_t mpi;\n   char *label;\n \n-  data_mpis_new = gcry_malloc (sizeof (*data_mpis_new) * data_mpis_n);\n+  data_mpis_new = gcry_calloc (data_mpis_n, sizeof (*data_mpis_new));\n   if (! data_mpis_new)\n     {\n       err = gcry_error_from_errno (errno);\n@@ -572,7 +572,7 @@ _gcry_ac_data_to_sexp (gcry_ac_data_t data, gcry_sexp_t *sexp,\n     }\n \n   /* Add MPI list.  */\n-  arg_list = gcry_malloc (sizeof (*arg_list) * (data_n + 1));\n+  arg_list = gcry_calloc (data_n + 1, sizeof (*arg_list));\n   if (! arg_list)\n     {\n       err = gcry_error_from_errno (errno);\n@@ -1283,7 +1283,7 @@ ac_data_construct (const char *identifier, int include_flags,\n   /* We build a list of arguments to pass to\n      gcry_sexp_build_array().  */\n   data_length = _gcry_ac_data_length (data);\n-  arg_list = gcry_malloc (sizeof (*arg_list) * (data_length * 2));\n+  arg_list = gcry_calloc (data_length, sizeof (*arg_list) * 2);\n   if (! arg_list)\n     {\n       err = gcry_error_from_errno (errno);\n@@ -1593,7 +1593,7 @@ _gcry_ac_key_pair_generate (gcry_ac_handle_t handle, unsigned int nbits,\n \targ_list_n += 2;\n \n   /* Allocate list.  */\n-  arg_list = gcry_malloc (sizeof (*arg_list) * arg_list_n);\n+  arg_list = gcry_calloc (arg_list_n, sizeof (*arg_list));\n   if (! arg_list)\n     {\n       err = gcry_error_from_errno (errno);\ndiff --git a/grub-core/lib/libgcrypt/cipher/primegen.c b/grub-core/lib/libgcrypt/cipher/primegen.c\nindex 2788e349f..b12e79b19 100644\n--- a/grub-core/lib/libgcrypt/cipher/primegen.c\n+++ b/grub-core/lib/libgcrypt/cipher/primegen.c\n@@ -383,7 +383,7 @@ prime_generate_internal (int need_q_factor,\n     }\n \n   /* Allocate an array to track pool usage. */\n-  pool_in_use = gcry_malloc (n * sizeof *pool_in_use);\n+  pool_in_use = gcry_calloc (n, sizeof *pool_in_use);\n   if (!pool_in_use)\n     {\n       err = gpg_err_code_from_errno (errno);\n@@ -765,7 +765,7 @@ gen_prime (unsigned int nbits, int secret, int randomlevel,\n   if (nbits < 16)\n     log_fatal (\"can't generate a prime with less than %d bits\\n\", 16);\n \n-  mods = gcry_xmalloc( no_of_small_prime_numbers * sizeof *mods );\n+  mods = gcry_xcalloc( no_of_small_prime_numbers, sizeof *mods);\n   /* Make nbits fit into gcry_mpi_t implementation. */\n   val_2  = mpi_alloc_set_ui( 2 );\n   val_3 = mpi_alloc_set_ui( 3);\ndiff --git a/grub-core/lib/libgcrypt/cipher/pubkey.c b/grub-core/lib/libgcrypt/cipher/pubkey.c\nindex 910982141..ca087ad75 100644\n--- a/grub-core/lib/libgcrypt/cipher/pubkey.c\n+++ b/grub-core/lib/libgcrypt/cipher/pubkey.c\n@@ -2941,7 +2941,7 @@ gcry_pk_encrypt (gcry_sexp_t *r_ciph, gcry_sexp_t s_data, gcry_sexp_t s_pkey)\n        * array to a format string, so we have to do it this way :-(.  */\n       /* FIXME: There is now such a format specifier, so we can\n          change the code to be more clear. */\n-      arg_list = malloc (nelem * sizeof *arg_list);\n+      arg_list = calloc (nelem, sizeof *arg_list);\n       if (!arg_list)\n         {\n           rc = gpg_err_code_from_syserror ();\n@@ -3233,7 +3233,7 @@ gcry_pk_sign (gcry_sexp_t *r_sig, gcry_sexp_t s_hash, gcry_sexp_t s_skey)\n         }\n       strcpy (p, \"))\");\n \n-      arg_list = malloc (nelem * sizeof *arg_list);\n+      arg_list = calloc (nelem, sizeof *arg_list);\n       if (!arg_list)\n         {\n           rc = gpg_err_code_from_syserror ();\ndiff --git a/grub-core/lib/priority_queue.c b/grub-core/lib/priority_queue.c\nindex 659be0b7f..7d5e7c05a 100644\n--- a/grub-core/lib/priority_queue.c\n+++ b/grub-core/lib/priority_queue.c\n@@ -92,7 +92,7 @@ grub_priority_queue_new (grub_size_t elsize,\n {\n   struct grub_priority_queue *ret;\n   void *els;\n-  els = grub_malloc (elsize * 8);\n+  els = grub_calloc (8, elsize);\n   if (!els)\n     return 0;\n   ret = (struct grub_priority_queue *) grub_malloc (sizeof (*ret));\ndiff --git a/grub-core/lib/reed_solomon.c b/grub-core/lib/reed_solomon.c\nindex ee9fa7b4f..467305b46 100644\n--- a/grub-core/lib/reed_solomon.c\n+++ b/grub-core/lib/reed_solomon.c\n@@ -20,6 +20,7 @@\n #include <stdio.h>\n #include <string.h>\n #include <stdlib.h>\n+#define xcalloc calloc\n #define xmalloc malloc\n #define grub_memset memset\n #define grub_memcpy memcpy\n@@ -158,11 +159,9 @@ rs_encode (gf_single_t *data, grub_size_t s, grub_size_t rs)\n   gf_single_t *rs_polynomial;\n   int i, j;\n   gf_single_t *m;\n-  m = xmalloc ((s + rs) * sizeof (gf_single_t));\n+  m = xcalloc (s + rs, sizeof (gf_single_t));\n   grub_memcpy (m, data, s * sizeof (gf_single_t));\n-  grub_memset (m + s, 0, rs * sizeof (gf_single_t));\n-  rs_polynomial = xmalloc ((rs + 1) * sizeof (gf_single_t));\n-  grub_memset (rs_polynomial, 0, (rs + 1) * sizeof (gf_single_t));\n+  rs_polynomial = xcalloc (rs + 1, sizeof (gf_single_t));\n   rs_polynomial[rs] = 1;\n   /* Multiply with X - a^r */\n   for (j = 0; j < rs; j++)\ndiff --git a/grub-core/lib/relocator.c b/grub-core/lib/relocator.c\nindex ea3ebc719..5847aac36 100644\n--- a/grub-core/lib/relocator.c\n+++ b/grub-core/lib/relocator.c\n@@ -495,9 +495,9 @@ malloc_in_range (struct grub_relocator *rel,\n   }\n #endif\n \n-  eventt = grub_malloc (maxevents * sizeof (events[0]));\n+  eventt = grub_calloc (maxevents, sizeof (events[0]));\n   counter = grub_malloc ((DIGITSORT_MASK + 2) * sizeof (counter[0]));\n-  events = grub_malloc (maxevents * sizeof (events[0]));\n+  events = grub_calloc (maxevents, sizeof (events[0]));\n   if (!events || !eventt || !counter)\n     {\n       grub_dprintf (\"relocator\", \"events or counter allocation failed %d\\n\",\n@@ -963,7 +963,7 @@ malloc_in_range (struct grub_relocator *rel,\n #endif\n     unsigned cural = 0;\n     int oom = 0;\n-    res->subchunks = grub_malloc (sizeof (res->subchunks[0]) * nallocs);\n+    res->subchunks = grub_calloc (nallocs, sizeof (res->subchunks[0]));\n     if (!res->subchunks)\n       oom = 1;\n     res->nsubchunks = nallocs;\n@@ -1562,8 +1562,8 @@ grub_relocator_prepare_relocs (struct grub_relocator *rel, grub_addr_t addr,\n \t    count[(chunk->src & 0xff) + 1]++;\n \t  }\n     }\n-    from = grub_malloc (nchunks * sizeof (sorted[0]));\n-    to = grub_malloc (nchunks * sizeof (sorted[0]));\n+    from = grub_calloc (nchunks, sizeof (sorted[0]));\n+    to = grub_calloc (nchunks, sizeof (sorted[0]));\n     if (!from || !to)\n       {\n \tgrub_free (from);\ndiff --git a/grub-core/lib/zstd/fse_decompress.c b/grub-core/lib/zstd/fse_decompress.c\nindex 72bbead5b..2227b84bc 100644\n--- a/grub-core/lib/zstd/fse_decompress.c\n+++ b/grub-core/lib/zstd/fse_decompress.c\n@@ -82,7 +82,7 @@\n FSE_DTable* FSE_createDTable (unsigned tableLog)\n {\n     if (tableLog > FSE_TABLELOG_ABSOLUTE_MAX) tableLog = FSE_TABLELOG_ABSOLUTE_MAX;\n-    return (FSE_DTable*)malloc( FSE_DTABLE_SIZE_U32(tableLog) * sizeof (U32) );\n+    return (FSE_DTable*)calloc( FSE_DTABLE_SIZE_U32(tableLog), sizeof (U32) );\n }\n \n void FSE_freeDTable (FSE_DTable* dt)\ndiff --git a/grub-core/loader/arm/linux.c b/grub-core/loader/arm/linux.c\nindex 51684914c..d70c17486 100644\n--- a/grub-core/loader/arm/linux.c\n+++ b/grub-core/loader/arm/linux.c\n@@ -78,7 +78,7 @@ linux_prepare_atag (void *target_atag)\n \n   /* some place for cmdline, initrd and terminator.  */\n   tmp_size = get_atag_size (atag_orig) + 20 + (arg_size) / 4;\n-  tmp_atag = grub_malloc (tmp_size * sizeof (grub_uint32_t));\n+  tmp_atag = grub_calloc (tmp_size, sizeof (grub_uint32_t));\n   if (!tmp_atag)\n     return grub_errno;\n \ndiff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c\nindex cd92ea3f2..daf8c6b54 100644\n--- a/grub-core/loader/efi/chainloader.c\n+++ b/grub-core/loader/efi/chainloader.c\n@@ -116,7 +116,7 @@ copy_file_path (grub_efi_file_path_device_path_t *fp,\n   fp->header.type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE;\n   fp->header.subtype = GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE;\n \n-  path_name = grub_malloc (len * GRUB_MAX_UTF16_PER_UTF8 * sizeof (*path_name));\n+  path_name = grub_calloc (len, GRUB_MAX_UTF16_PER_UTF8 * sizeof (*path_name));\n   if (!path_name)\n     return;\n \ndiff --git a/grub-core/loader/i386/bsdXX.c b/grub-core/loader/i386/bsdXX.c\nindex af6741d15..a8d8bf7da 100644\n--- a/grub-core/loader/i386/bsdXX.c\n+++ b/grub-core/loader/i386/bsdXX.c\n@@ -48,7 +48,7 @@ read_headers (grub_file_t file, const char *filename, Elf_Ehdr *e, char **shdr)\n   if (e->e_ident[EI_CLASS] != SUFFIX (ELFCLASS))\n     return grub_error (GRUB_ERR_BAD_OS, N_(\"invalid arch-dependent ELF magic\"));\n \n-  *shdr = grub_malloc ((grub_uint32_t) e->e_shnum * e->e_shentsize);\n+  *shdr = grub_calloc (e->e_shnum, e->e_shentsize);\n   if (! *shdr)\n     return grub_errno;\n \ndiff --git a/grub-core/loader/i386/xnu.c b/grub-core/loader/i386/xnu.c\nindex e64ed08f5..b7d176b5d 100644\n--- a/grub-core/loader/i386/xnu.c\n+++ b/grub-core/loader/i386/xnu.c\n@@ -295,7 +295,7 @@ grub_xnu_devprop_add_property_utf8 (struct grub_xnu_devprop_device_descriptor *d\n     return grub_errno;\n \n   len = grub_strlen (name);\n-  utf16 = grub_malloc (sizeof (grub_uint16_t) * len);\n+  utf16 = grub_calloc (len, sizeof (grub_uint16_t));\n   if (!utf16)\n     {\n       grub_free (utf8);\n@@ -331,7 +331,7 @@ grub_xnu_devprop_add_property_utf16 (struct grub_xnu_devprop_device_descriptor *\n   grub_uint16_t *utf16;\n   grub_err_t err;\n \n-  utf16 = grub_malloc (sizeof (grub_uint16_t) * namelen);\n+  utf16 = grub_calloc (namelen, sizeof (grub_uint16_t));\n   if (!utf16)\n     return grub_errno;\n   grub_memcpy (utf16, name, sizeof (grub_uint16_t) * namelen);\ndiff --git a/grub-core/loader/macho.c b/grub-core/loader/macho.c\nindex 085f9c689..05710c48e 100644\n--- a/grub-core/loader/macho.c\n+++ b/grub-core/loader/macho.c\n@@ -97,7 +97,7 @@ grub_macho_file (grub_file_t file, const char *filename, int is_64bit)\n       if (grub_file_seek (macho->file, sizeof (struct grub_macho_fat_header))\n \t  == (grub_off_t) -1)\n \tgoto fail;\n-      archs = grub_malloc (sizeof (struct grub_macho_fat_arch) * narchs);\n+      archs = grub_calloc (narchs, sizeof (struct grub_macho_fat_arch));\n       if (!archs)\n \tgoto fail;\n       if (grub_file_read (macho->file, archs,\ndiff --git a/grub-core/loader/multiboot_elfxx.c b/grub-core/loader/multiboot_elfxx.c\nindex 70cd1db51..cc6853692 100644\n--- a/grub-core/loader/multiboot_elfxx.c\n+++ b/grub-core/loader/multiboot_elfxx.c\n@@ -217,7 +217,7 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)\n     {\n       grub_uint8_t *shdr, *shdrptr;\n \n-      shdr = grub_malloc ((grub_uint32_t) ehdr->e_shnum * ehdr->e_shentsize);\n+      shdr = grub_calloc (ehdr->e_shnum, ehdr->e_shentsize);\n       if (!shdr)\n \treturn grub_errno;\n       \ndiff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c\nindex 7f74d1d6f..77d7060e1 100644\n--- a/grub-core/loader/xnu.c\n+++ b/grub-core/loader/xnu.c\n@@ -800,7 +800,7 @@ grub_cmd_xnu_mkext (grub_command_t cmd __attribute__ ((unused)),\n   if (grub_be_to_cpu32 (head.magic) == GRUB_MACHO_FAT_MAGIC)\n     {\n       narchs = grub_be_to_cpu32 (head.nfat_arch);\n-      archs = grub_malloc (sizeof (struct grub_macho_fat_arch) * narchs);\n+      archs = grub_calloc (narchs, sizeof (struct grub_macho_fat_arch));\n       if (! archs)\n \t{\n \t  grub_file_close (file);\ndiff --git a/grub-core/mmap/mmap.c b/grub-core/mmap/mmap.c\nindex 6a31cbae3..57b4e9a72 100644\n--- a/grub-core/mmap/mmap.c\n+++ b/grub-core/mmap/mmap.c\n@@ -143,9 +143,9 @@ grub_mmap_iterate (grub_memory_hook_t hook, void *hook_data)\n \n   /* Initialize variables. */\n   ctx.scanline_events = (struct grub_mmap_scan *)\n-    grub_malloc (sizeof (struct grub_mmap_scan) * 2 * mmap_num);\n+    grub_calloc (mmap_num, sizeof (struct grub_mmap_scan) * 2);\n \n-  present = grub_zalloc (sizeof (present[0]) * current_priority);\n+  present = grub_calloc (current_priority, sizeof (present[0]));\n \n   if (! ctx.scanline_events || !present)\n     {\ndiff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c\nindex 04cfbb045..653957200 100644\n--- a/grub-core/net/bootp.c\n+++ b/grub-core/net/bootp.c\n@@ -766,7 +766,7 @@ grub_cmd_bootp (struct grub_command *cmd __attribute__ ((unused)),\n   if (ncards == 0)\n     return grub_error (GRUB_ERR_NET_NO_CARD, N_(\"no network card found\"));\n \n-  ifaces = grub_zalloc (ncards * sizeof (ifaces[0]));\n+  ifaces = grub_calloc (ncards, sizeof (ifaces[0]));\n   if (!ifaces)\n     return grub_errno;\n \ndiff --git a/grub-core/net/dns.c b/grub-core/net/dns.c\nindex 5d9afe093..e332d5eb4 100644\n--- a/grub-core/net/dns.c\n+++ b/grub-core/net/dns.c\n@@ -285,8 +285,8 @@ recv_hook (grub_net_udp_socket_t sock __attribute__ ((unused)),\n       ptr++;\n       ptr += 4;\n     }\n-  *data->addresses = grub_malloc (sizeof ((*data->addresses)[0])\n-\t\t\t\t * grub_be_to_cpu16 (head->ancount));\n+  *data->addresses = grub_calloc (grub_be_to_cpu16 (head->ancount),\n+\t\t\t\t  sizeof ((*data->addresses)[0]));\n   if (!*data->addresses)\n     {\n       grub_errno = GRUB_ERR_NONE;\n@@ -406,8 +406,8 @@ recv_hook (grub_net_udp_socket_t sock __attribute__ ((unused)),\n       dns_cache[h].addresses = 0;\n       dns_cache[h].name = grub_strdup (data->oname);\n       dns_cache[h].naddresses = *data->naddresses;\n-      dns_cache[h].addresses = grub_malloc (*data->naddresses\n-\t\t\t\t\t    * sizeof (dns_cache[h].addresses[0]));\n+      dns_cache[h].addresses = grub_calloc (*data->naddresses,\n+\t\t\t\t\t    sizeof (dns_cache[h].addresses[0]));\n       dns_cache[h].limit_time = grub_get_time_ms () + 1000 * ttl_all;\n       if (!dns_cache[h].addresses || !dns_cache[h].name)\n \t{\n@@ -479,7 +479,7 @@ grub_net_dns_lookup (const char *name,\n \t}\n     }\n \n-  sockets = grub_malloc (sizeof (sockets[0]) * n_servers);\n+  sockets = grub_calloc (n_servers, sizeof (sockets[0]));\n   if (!sockets)\n     return grub_errno;\n \ndiff --git a/grub-core/net/net.c b/grub-core/net/net.c\nindex d5d726a31..38f19dfc9 100644\n--- a/grub-core/net/net.c\n+++ b/grub-core/net/net.c\n@@ -333,8 +333,8 @@ grub_cmd_ipv6_autoconf (struct grub_command *cmd __attribute__ ((unused)),\n     ncards++;\n   }\n \n-  ifaces = grub_zalloc (ncards * sizeof (ifaces[0]));\n-  slaacs = grub_zalloc (ncards * sizeof (slaacs[0]));\n+  ifaces = grub_calloc (ncards, sizeof (ifaces[0]));\n+  slaacs = grub_calloc (ncards, sizeof (slaacs[0]));\n   if (!ifaces || !slaacs)\n     {\n       grub_free (ifaces);\ndiff --git a/grub-core/normal/charset.c b/grub-core/normal/charset.c\nindex b0ab47d73..d57fb72fa 100644\n--- a/grub-core/normal/charset.c\n+++ b/grub-core/normal/charset.c\n@@ -203,7 +203,7 @@ grub_utf8_to_ucs4_alloc (const char *msg, grub_uint32_t **unicode_msg,\n {\n   grub_size_t msg_len = grub_strlen (msg);\n \n-  *unicode_msg = grub_malloc (msg_len * sizeof (grub_uint32_t));\n+  *unicode_msg = grub_calloc (msg_len, sizeof (grub_uint32_t));\n  \n   if (!*unicode_msg)\n     return -1;\n@@ -488,7 +488,7 @@ grub_unicode_aglomerate_comb (const grub_uint32_t *in, grub_size_t inlen,\n \t    }\n \t  else\n \t    {\n-\t      n = grub_malloc (sizeof (n[0]) * (out->ncomb + 1));\n+\t      n = grub_calloc (out->ncomb + 1, sizeof (n[0]));\n \t      if (!n)\n \t\t{\n \t\t  grub_errno = GRUB_ERR_NONE;\n@@ -842,7 +842,7 @@ grub_bidi_line_logical_to_visual (const grub_uint32_t *logical,\n       }\t\t\t\t\t\t\t\\\n   }\n \n-  visual = grub_malloc (sizeof (visual[0]) * logical_len);\n+  visual = grub_calloc (logical_len, sizeof (visual[0]));\n   if (!visual)\n     return -1;\n \n@@ -1165,8 +1165,8 @@ grub_bidi_logical_to_visual (const grub_uint32_t *logical,\n {\n   const grub_uint32_t *line_start = logical, *ptr;\n   struct grub_unicode_glyph *visual_ptr;\n-  *visual_out = visual_ptr = grub_malloc (3 * sizeof (visual_ptr[0])\n-\t\t\t\t\t  * (logical_len + 2));\n+  *visual_out = visual_ptr = grub_calloc (logical_len + 2,\n+\t\t\t\t\t  3 * sizeof (visual_ptr[0]));\n   if (!visual_ptr)\n     return -1;\n   for (ptr = logical; ptr <= logical + logical_len; ptr++)\ndiff --git a/grub-core/normal/cmdline.c b/grub-core/normal/cmdline.c\nindex c037d5050..c57242e2e 100644\n--- a/grub-core/normal/cmdline.c\n+++ b/grub-core/normal/cmdline.c\n@@ -41,7 +41,7 @@ grub_err_t\n grub_set_history (int newsize)\n {\n   grub_uint32_t **old_hist_lines = hist_lines;\n-  hist_lines = grub_malloc (sizeof (grub_uint32_t *) * newsize);\n+  hist_lines = grub_calloc (newsize, sizeof (grub_uint32_t *));\n \n   /* Copy the old lines into the new buffer.  */\n   if (old_hist_lines)\n@@ -114,7 +114,7 @@ static void\n grub_history_set (int pos, grub_uint32_t *s, grub_size_t len)\n {\n   grub_free (hist_lines[pos]);\n-  hist_lines[pos] = grub_malloc ((len + 1) * sizeof (grub_uint32_t));\n+  hist_lines[pos] = grub_calloc (len + 1, sizeof (grub_uint32_t));\n   if (!hist_lines[pos])\n     {\n       grub_print_error ();\n@@ -349,7 +349,7 @@ grub_cmdline_get (const char *prompt_translated)\n   char *ret;\n   unsigned nterms;\n \n-  buf = grub_malloc (max_len * sizeof (grub_uint32_t));\n+  buf = grub_calloc (max_len, sizeof (grub_uint32_t));\n   if (!buf)\n     return 0;\n \n@@ -377,7 +377,7 @@ grub_cmdline_get (const char *prompt_translated)\n     FOR_ACTIVE_TERM_OUTPUTS(cur)\n       nterms++;\n \n-    cl_terms = grub_malloc (sizeof (cl_terms[0]) * nterms);\n+    cl_terms = grub_calloc (nterms, sizeof (cl_terms[0]));\n     if (!cl_terms)\n       {\n \tgrub_free (buf);\n@@ -385,7 +385,7 @@ grub_cmdline_get (const char *prompt_translated)\n       }\n     cl_term_cur = cl_terms;\n \n-    unicode_msg = grub_malloc (msg_len * sizeof (grub_uint32_t));\n+    unicode_msg = grub_calloc (msg_len, sizeof (grub_uint32_t));\n     if (!unicode_msg)\n       {\n \tgrub_free (buf);\n@@ -495,7 +495,7 @@ grub_cmdline_get (const char *prompt_translated)\n \t\tgrub_uint32_t *insert;\n \n \t\tinsertlen = grub_strlen (insertu8);\n-\t\tinsert = grub_malloc ((insertlen + 1) * sizeof (grub_uint32_t));\n+\t\tinsert = grub_calloc (insertlen + 1, sizeof (grub_uint32_t));\n \t\tif (!insert)\n \t\t  {\n \t\t    grub_free (insertu8);\n@@ -602,7 +602,7 @@ grub_cmdline_get (const char *prompt_translated)\n \n \t      grub_free (kill_buf);\n \n-\t      kill_buf = grub_malloc ((n + 1) * sizeof(grub_uint32_t));\n+\t      kill_buf = grub_calloc (n + 1, sizeof (grub_uint32_t));\n \t      if (grub_errno)\n \t\t{\n \t\t  grub_print_error ();\ndiff --git a/grub-core/normal/menu_entry.c b/grub-core/normal/menu_entry.c\nindex cdf3590a3..1993995be 100644\n--- a/grub-core/normal/menu_entry.c\n+++ b/grub-core/normal/menu_entry.c\n@@ -95,8 +95,8 @@ init_line (struct screen *screen, struct line *linep)\n {\n   linep->len = 0;\n   linep->max_len = 80;\n-  linep->buf = grub_malloc ((linep->max_len + 1) * sizeof (linep->buf[0]));\n-  linep->pos = grub_zalloc (screen->nterms * sizeof (linep->pos[0]));\n+  linep->buf = grub_calloc (linep->max_len + 1, sizeof (linep->buf[0]));\n+  linep->pos = grub_calloc (screen->nterms, sizeof (linep->pos[0]));\n   if (! linep->buf || !linep->pos)\n     {\n       grub_free (linep->buf);\n@@ -287,7 +287,7 @@ update_screen (struct screen *screen, struct per_term_screen *term_screen,\n \t  pos = linep->pos + (term_screen - screen->terms);\n \n \t  if (!*pos)\n-\t    *pos = grub_zalloc ((linep->len + 1) * sizeof (**pos));\n+\t    *pos = grub_calloc (linep->len + 1, sizeof (**pos));\n \n \t  if (i == region_start || linep == screen->lines + screen->line\n \t      || (i > region_start && mode == ALL_LINES))\n@@ -471,7 +471,7 @@ insert_string (struct screen *screen, const char *s, int update)\n \n \t  /* Insert the string.  */\n \t  current_linep = screen->lines + screen->line;\n-\t  unicode_msg = grub_malloc ((p - s) * sizeof (grub_uint32_t));\n+\t  unicode_msg = grub_calloc (p - s, sizeof (grub_uint32_t));\n \n \t  if (!unicode_msg)\n \t    return 0;\n@@ -1023,7 +1023,7 @@ complete (struct screen *screen, int continuous, int update)\n   if (completion_buffer.buf)\n     {\n       buflen = grub_strlen (completion_buffer.buf);\n-      ucs4 = grub_malloc (sizeof (grub_uint32_t) * (buflen + 1));\n+      ucs4 = grub_calloc (buflen + 1, sizeof (grub_uint32_t));\n       \n       if (!ucs4)\n \t{\n@@ -1268,7 +1268,7 @@ grub_menu_entry_run (grub_menu_entry_t entry)\n   for (i = 0; i < (unsigned) screen->num_lines; i++)\n     {\n       grub_free (screen->lines[i].pos);\n-      screen->lines[i].pos = grub_zalloc (screen->nterms * sizeof (screen->lines[i].pos[0]));\n+      screen->lines[i].pos = grub_calloc (screen->nterms, sizeof (screen->lines[i].pos[0]));\n       if (! screen->lines[i].pos)\n \t{\n \t  grub_print_error ();\n@@ -1278,7 +1278,7 @@ grub_menu_entry_run (grub_menu_entry_t entry)\n \t}\n     }\n \n-  screen->terms = grub_zalloc (screen->nterms * sizeof (screen->terms[0]));\n+  screen->terms = grub_calloc (screen->nterms, sizeof (screen->terms[0]));\n   if (!screen->terms)\n     {\n       grub_print_error ();\ndiff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c\nindex e22bb91f6..18240e76c 100644\n--- a/grub-core/normal/menu_text.c\n+++ b/grub-core/normal/menu_text.c\n@@ -78,7 +78,7 @@ grub_print_message_indented_real (const char *msg, int margin_left,\n   grub_size_t msg_len = grub_strlen (msg) + 2;\n   int ret = 0;\n \n-  unicode_msg = grub_malloc (msg_len * sizeof (grub_uint32_t));\n+  unicode_msg = grub_calloc (msg_len, sizeof (grub_uint32_t));\n  \n   if (!unicode_msg)\n     return 0;\n@@ -211,7 +211,7 @@ print_entry (int y, int highlight, grub_menu_entry_t entry,\n \n   title = entry ? entry->title : \"\";\n   title_len = grub_strlen (title);\n-  unicode_title = grub_malloc (title_len * sizeof (*unicode_title));\n+  unicode_title = grub_calloc (title_len, sizeof (*unicode_title));\n   if (! unicode_title)\n     /* XXX How to show this error?  */\n     return;\ndiff --git a/grub-core/normal/term.c b/grub-core/normal/term.c\nindex a1e5c5a0d..cc8c173b6 100644\n--- a/grub-core/normal/term.c\n+++ b/grub-core/normal/term.c\n@@ -264,7 +264,7 @@ grub_term_save_pos (void)\n   FOR_ACTIVE_TERM_OUTPUTS(cur)\n     cnt++;\n \n-  ret = grub_malloc (cnt * sizeof (ret[0]));\n+  ret = grub_calloc (cnt, sizeof (ret[0]));\n   if (!ret)\n     return NULL;\n \n@@ -1013,7 +1013,7 @@ grub_xnputs (const char *str, grub_size_t msg_len)\n \n   grub_error_push ();\n \n-  unicode_str = grub_malloc (msg_len * sizeof (grub_uint32_t));\n+  unicode_str = grub_calloc (msg_len, sizeof (grub_uint32_t));\n  \n   grub_error_pop ();\n \ndiff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c\nindex 90d92d3ad..5b41ad022 100644\n--- a/grub-core/osdep/linux/getroot.c\n+++ b/grub-core/osdep/linux/getroot.c\n@@ -168,7 +168,7 @@ grub_util_raid_getmembers (const char *name, int bootable)\n   if (ret != 0)\n     grub_util_error (_(\"ioctl GET_ARRAY_INFO error: %s\"), strerror (errno));\n \n-  devicelist = xmalloc ((info.nr_disks + 1) * sizeof (char *));\n+  devicelist = xcalloc (info.nr_disks + 1, sizeof (char *));\n \n   for (i = 0, j = 0; j < info.nr_disks; i++)\n     {\n@@ -241,7 +241,7 @@ grub_find_root_devices_from_btrfs (const char *dir)\n       return NULL;\n     }\n \n-  ret = xmalloc ((fsi.num_devices + 1) * sizeof (ret[0]));\n+  ret = xcalloc (fsi.num_devices + 1, sizeof (ret[0]));\n \n   for (i = 1; i <= fsi.max_id && j < fsi.num_devices; i++)\n     {\n@@ -396,7 +396,7 @@ grub_find_root_devices_from_mountinfo (const char *dir, char **relroot)\n   if (relroot)\n     *relroot = NULL;\n \n-  entries = xmalloc (entry_max * sizeof (*entries));\n+  entries = xcalloc (entry_max, sizeof (*entries));\n \n again:\n   fp = grub_util_fopen (\"/proc/self/mountinfo\", \"r\");\ndiff --git a/grub-core/osdep/unix/config.c b/grub-core/osdep/unix/config.c\nindex 65effa9f3..7d6325138 100644\n--- a/grub-core/osdep/unix/config.c\n+++ b/grub-core/osdep/unix/config.c\n@@ -89,7 +89,7 @@ grub_util_load_config (struct grub_util_config *cfg)\n   argv[0] = \"sh\";\n   argv[1] = \"-c\";\n \n-  script = xmalloc (4 * strlen (cfgfile) + 300);\n+  script = xcalloc (4, strlen (cfgfile) + 300);\n \n   ptr = script;\n   memcpy (ptr, \". '\", 3);\ndiff --git a/grub-core/osdep/windows/getroot.c b/grub-core/osdep/windows/getroot.c\nindex 661d95461..eada663b2 100644\n--- a/grub-core/osdep/windows/getroot.c\n+++ b/grub-core/osdep/windows/getroot.c\n@@ -59,7 +59,7 @@ grub_get_mount_point (const TCHAR *path)\n \n   for (ptr = path; *ptr; ptr++);\n   allocsize = (ptr - path + 10) * 2;\n-  out = xmalloc (allocsize * sizeof (out[0]));\n+  out = xcalloc (allocsize, sizeof (out[0]));\n \n   /* When pointing to EFI system partition GetVolumePathName fails\n      for ESP root and returns abberant information for everything\ndiff --git a/grub-core/osdep/windows/hostdisk.c b/grub-core/osdep/windows/hostdisk.c\nindex 355100789..0be327394 100644\n--- a/grub-core/osdep/windows/hostdisk.c\n+++ b/grub-core/osdep/windows/hostdisk.c\n@@ -111,7 +111,7 @@ grub_util_get_windows_path_real (const char *path)\n \n   while (1)\n     {\n-      fpa = xmalloc (alloc * sizeof (fpa[0]));\n+      fpa = xcalloc (alloc, sizeof (fpa[0]));\n \n       len = GetFullPathName (tpath, alloc, fpa, NULL);\n       if (len >= alloc)\n@@ -399,7 +399,7 @@ grub_util_fd_opendir (const char *name)\n   for (l = 0; name_windows[l]; l++);\n   for (l--; l >= 0 && (name_windows[l] == '\\\\' || name_windows[l] == '/'); l--);\n   l++;\n-  pattern = xmalloc ((l + 3) * sizeof (pattern[0]));\n+  pattern = xcalloc (l + 3, sizeof (pattern[0]));\n   memcpy (pattern, name_windows, l * sizeof (pattern[0]));\n   pattern[l] = '\\\\';\n   pattern[l + 1] = '*';\ndiff --git a/grub-core/osdep/windows/init.c b/grub-core/osdep/windows/init.c\nindex e8ffd62c6..6297de632 100644\n--- a/grub-core/osdep/windows/init.c\n+++ b/grub-core/osdep/windows/init.c\n@@ -161,7 +161,7 @@ grub_util_host_init (int *argc __attribute__ ((unused)),\n   LPWSTR *targv;\n \n   targv = CommandLineToArgvW (tcmdline, argc);\n-  *argv = xmalloc ((*argc + 1) * sizeof (argv[0]));\n+  *argv = xcalloc (*argc + 1, sizeof (argv[0]));\n \n   for (i = 0; i < *argc; i++)\n     (*argv)[i] = grub_util_tchar_to_utf8 (targv[i]); \ndiff --git a/grub-core/osdep/windows/platform.c b/grub-core/osdep/windows/platform.c\nindex 7eb53fe01..1ef86bf58 100644\n--- a/grub-core/osdep/windows/platform.c\n+++ b/grub-core/osdep/windows/platform.c\n@@ -225,8 +225,8 @@ grub_install_register_efi (grub_device_t efidir_grub_dev,\n     grub_util_error (\"%s\", _(\"no EFI routines are available when running in BIOS mode\"));\n \n   distrib8_len = grub_strlen (efi_distributor);\n-  distributor16 = xmalloc ((distrib8_len + 1) * GRUB_MAX_UTF16_PER_UTF8\n-\t\t\t   * sizeof (grub_uint16_t));\n+  distributor16 = xcalloc (distrib8_len + 1,\n+\t\t\t   GRUB_MAX_UTF16_PER_UTF8 * sizeof (grub_uint16_t));\n   distrib16_len = grub_utf8_to_utf16 (distributor16, distrib8_len * GRUB_MAX_UTF16_PER_UTF8,\n \t\t\t\t      (const grub_uint8_t *) efi_distributor,\n \t\t\t\t      distrib8_len, 0);\ndiff --git a/grub-core/osdep/windows/relpath.c b/grub-core/osdep/windows/relpath.c\nindex cb0861744..478e8ef14 100644\n--- a/grub-core/osdep/windows/relpath.c\n+++ b/grub-core/osdep/windows/relpath.c\n@@ -72,7 +72,7 @@ grub_make_system_path_relative_to_its_root (const char *path)\n       if (dirwindows[0] && dirwindows[1] == ':')\n \toffset = 2;\n     }\n-  ret = xmalloc (sizeof (ret[0]) * (flen - offset + 2));\n+  ret = xcalloc (flen - offset + 2, sizeof (ret[0]));\n   if (dirwindows[offset] != '\\\\'\n       && dirwindows[offset] != '/'\n       && dirwindows[offset])\ndiff --git a/grub-core/partmap/gpt.c b/grub-core/partmap/gpt.c\nindex 103f6796f..72a2e37cd 100644\n--- a/grub-core/partmap/gpt.c\n+++ b/grub-core/partmap/gpt.c\n@@ -199,7 +199,7 @@ gpt_partition_map_embed (struct grub_disk *disk, unsigned int *nsectors,\n   *nsectors = ctx.len;\n   if (*nsectors > max_nsectors)\n     *nsectors = max_nsectors;\n-  *sectors = grub_malloc (*nsectors * sizeof (**sectors));\n+  *sectors = grub_calloc (*nsectors, sizeof (**sectors));\n   if (!*sectors)\n     return grub_errno;\n   for (i = 0; i < *nsectors; i++)\ndiff --git a/grub-core/partmap/msdos.c b/grub-core/partmap/msdos.c\nindex 7b8e45076..ee3f24982 100644\n--- a/grub-core/partmap/msdos.c\n+++ b/grub-core/partmap/msdos.c\n@@ -337,7 +337,7 @@ pc_partition_map_embed (struct grub_disk *disk, unsigned int *nsectors,\n       avail_nsectors = *nsectors;\n       if (*nsectors > max_nsectors)\n \t*nsectors = max_nsectors;\n-      *sectors = grub_malloc (*nsectors * sizeof (**sectors));\n+      *sectors = grub_calloc (*nsectors, sizeof (**sectors));\n       if (!*sectors)\n \treturn grub_errno;\n       for (i = 0; i < *nsectors; i++)\ndiff --git a/grub-core/script/execute.c b/grub-core/script/execute.c\nindex ee299fd0e..c8d6806fe 100644\n--- a/grub-core/script/execute.c\n+++ b/grub-core/script/execute.c\n@@ -553,7 +553,7 @@ gettext_append (struct grub_script_argv *result, const char *orig_str)\n   for (iptr = orig_str; *iptr; iptr++)\n     if (*iptr == '$')\n       dollar_cnt++;\n-  ctx.allowed_strings = grub_malloc (sizeof (ctx.allowed_strings[0]) * dollar_cnt);\n+  ctx.allowed_strings = grub_calloc (dollar_cnt, sizeof (ctx.allowed_strings[0]));\n \n   if (parse_string (orig_str, gettext_save_allow, &ctx, 0))\n     goto fail;\ndiff --git a/grub-core/tests/fake_input.c b/grub-core/tests/fake_input.c\nindex 2d6085298..b5eb516be 100644\n--- a/grub-core/tests/fake_input.c\n+++ b/grub-core/tests/fake_input.c\n@@ -49,7 +49,7 @@ grub_terminal_input_fake_sequence (int *seq_in, int nseq_in)\n     saved = grub_term_inputs;\n   if (seq)\n     grub_free (seq);\n-  seq = grub_malloc (nseq_in * sizeof (seq[0]));\n+  seq = grub_calloc (nseq_in, sizeof (seq[0]));\n   if (!seq)\n     return;\n \ndiff --git a/grub-core/tests/video_checksum.c b/grub-core/tests/video_checksum.c\nindex 74d5b65e5..44d081069 100644\n--- a/grub-core/tests/video_checksum.c\n+++ b/grub-core/tests/video_checksum.c\n@@ -336,7 +336,7 @@ grub_video_capture_write_bmp (const char *fname,\n     {\n     case 4:\n       {\n-\tgrub_uint8_t *buffer = xmalloc (mode_info->width * 3);\n+\tgrub_uint8_t *buffer = xcalloc (3, mode_info->width);\n \tgrub_uint32_t rmask = ((1 << mode_info->red_mask_size) - 1);\n \tgrub_uint32_t gmask = ((1 << mode_info->green_mask_size) - 1);\n \tgrub_uint32_t bmask = ((1 << mode_info->blue_mask_size) - 1);\n@@ -367,7 +367,7 @@ grub_video_capture_write_bmp (const char *fname,\n       }\n     case 3:\n       {\n-\tgrub_uint8_t *buffer = xmalloc (mode_info->width * 3);\n+\tgrub_uint8_t *buffer = xcalloc (3, mode_info->width);\n \tgrub_uint32_t rmask = ((1 << mode_info->red_mask_size) - 1);\n \tgrub_uint32_t gmask = ((1 << mode_info->green_mask_size) - 1);\n \tgrub_uint32_t bmask = ((1 << mode_info->blue_mask_size) - 1);\n@@ -407,7 +407,7 @@ grub_video_capture_write_bmp (const char *fname,\n       }\n     case 2:\n       {\n-\tgrub_uint8_t *buffer = xmalloc (mode_info->width * 3);\n+\tgrub_uint8_t *buffer = xcalloc (3, mode_info->width);\n \tgrub_uint16_t rmask = ((1 << mode_info->red_mask_size) - 1);\n \tgrub_uint16_t gmask = ((1 << mode_info->green_mask_size) - 1);\n \tgrub_uint16_t bmask = ((1 << mode_info->blue_mask_size) - 1);\ndiff --git a/grub-core/video/capture.c b/grub-core/video/capture.c\nindex 4f83c7441..4d3195e01 100644\n--- a/grub-core/video/capture.c\n+++ b/grub-core/video/capture.c\n@@ -89,7 +89,7 @@ grub_video_capture_start (const struct grub_video_mode_info *mode_info,\n   framebuffer.mode_info = *mode_info;\n   framebuffer.mode_info.blit_format = grub_video_get_blit_format (&framebuffer.mode_info);\n \n-  framebuffer.ptr = grub_malloc (framebuffer.mode_info.height * framebuffer.mode_info.pitch);\n+  framebuffer.ptr = grub_calloc (framebuffer.mode_info.height, framebuffer.mode_info.pitch);\n   if (!framebuffer.ptr)\n     return grub_errno;\n   \ndiff --git a/grub-core/video/emu/sdl.c b/grub-core/video/emu/sdl.c\nindex a2f639f66..0ebab6f57 100644\n--- a/grub-core/video/emu/sdl.c\n+++ b/grub-core/video/emu/sdl.c\n@@ -172,7 +172,7 @@ grub_video_sdl_set_palette (unsigned int start, unsigned int count,\n       if (start + count > mode_info.number_of_colors)\n \tcount = mode_info.number_of_colors - start;\n \n-      tmp = grub_malloc (count * sizeof (tmp[0]));\n+      tmp = grub_calloc (count, sizeof (tmp[0]));\n       for (i = 0; i < count; i++)\n \t{\n \t  tmp[i].r = palette_data[i].r;\ndiff --git a/grub-core/video/i386/pc/vga.c b/grub-core/video/i386/pc/vga.c\nindex 01f47112d..b2f776c99 100644\n--- a/grub-core/video/i386/pc/vga.c\n+++ b/grub-core/video/i386/pc/vga.c\n@@ -127,7 +127,7 @@ grub_video_vga_setup (unsigned int width, unsigned int height,\n \n   vga_height = height ? : 480;\n \n-  framebuffer.temporary_buffer = grub_malloc (vga_height * VGA_WIDTH);\n+  framebuffer.temporary_buffer = grub_calloc (vga_height, VGA_WIDTH);\n   framebuffer.front_page = 0;\n   framebuffer.back_page = 0;\n   if (!framebuffer.temporary_buffer)\ndiff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c\nindex 777e71334..61bd64537 100644\n--- a/grub-core/video/readers/png.c\n+++ b/grub-core/video/readers/png.c\n@@ -309,7 +309,7 @@ grub_png_decode_image_header (struct grub_png_data *data)\n   if (data->is_16bit || data->is_gray || data->is_palette)\n #endif\n     {\n-      data->image_data = grub_malloc (data->image_height * data->row_bytes);\n+      data->image_data = grub_calloc (data->image_height, data->row_bytes);\n       if (grub_errno)\n         return grub_errno;\n \ndiff --git a/include/grub/unicode.h b/include/grub/unicode.h\nindex a0403e91f..4de986a85 100644\n--- a/include/grub/unicode.h\n+++ b/include/grub/unicode.h\n@@ -293,7 +293,7 @@ grub_unicode_glyph_dup (const struct grub_unicode_glyph *in)\n   grub_memcpy (out, in, sizeof (*in));\n   if (in->ncomb > ARRAY_SIZE (out->combining_inline))\n     {\n-      out->combining_ptr = grub_malloc (in->ncomb * sizeof (out->combining_ptr[0]));\n+      out->combining_ptr = grub_calloc (in->ncomb, sizeof (out->combining_ptr[0]));\n       if (!out->combining_ptr)\n \t{\n \t  grub_free (out);\n@@ -315,7 +315,7 @@ grub_unicode_set_glyph (struct grub_unicode_glyph *out,\n   grub_memcpy (out, in, sizeof (*in));\n   if (in->ncomb > ARRAY_SIZE (out->combining_inline))\n     {\n-      out->combining_ptr = grub_malloc (in->ncomb * sizeof (out->combining_ptr[0]));\n+      out->combining_ptr = grub_calloc (in->ncomb, sizeof (out->combining_ptr[0]));\n       if (!out->combining_ptr)\n \treturn;\n       grub_memcpy (out->combining_ptr, in->combining_ptr,\ndiff --git a/util/getroot.c b/util/getroot.c\nindex 847406fba..a5eaa64fd 100644\n--- a/util/getroot.c\n+++ b/util/getroot.c\n@@ -200,7 +200,7 @@ make_device_name (const char *drive)\n   char *ret, *ptr;\n   const char *iptr;\n \n-  ret = xmalloc (strlen (drive) * 2);\n+  ret = xcalloc (2, strlen (drive));\n   ptr = ret;\n   for (iptr = drive; *iptr; iptr++)\n     {\ndiff --git a/util/grub-file.c b/util/grub-file.c\nindex 50c18b683..b2e7dd69f 100644\n--- a/util/grub-file.c\n+++ b/util/grub-file.c\n@@ -54,7 +54,7 @@ main (int argc, char *argv[])\n \n   grub_util_host_init (&argc, &argv);\n \n-  argv2 = xmalloc (argc * sizeof (argv2[0]));\n+  argv2 = xcalloc (argc, sizeof (argv2[0]));\n \n   if (argc == 2 && strcmp (argv[1], \"--version\") == 0)\n     {\ndiff --git a/util/grub-fstest.c b/util/grub-fstest.c\nindex f14e02d97..57246af7c 100644\n--- a/util/grub-fstest.c\n+++ b/util/grub-fstest.c\n@@ -650,7 +650,7 @@ argp_parser (int key, char *arg, struct argp_state *state)\n   if (args_count < num_disks)\n     {\n       if (args_count == 0)\n-\timages = xmalloc (num_disks * sizeof (images[0]));\n+\timages = xcalloc (num_disks, sizeof (images[0]));\n       images[args_count] = grub_canonicalize_file_name (arg);\n       args_count++;\n       return 0;\n@@ -734,7 +734,7 @@ main (int argc, char *argv[])\n \n   grub_util_host_init (&argc, &argv);\n \n-  args = xmalloc (argc * sizeof (args[0]));\n+  args = xcalloc (argc, sizeof (args[0]));\n \n   argp_parse (&argp, argc, argv, 0, 0, 0);\n \ndiff --git a/util/grub-install-common.c b/util/grub-install-common.c\nindex ca0ac612a..0295d40f5 100644\n--- a/util/grub-install-common.c\n+++ b/util/grub-install-common.c\n@@ -286,7 +286,7 @@ handle_install_list (struct install_list *il, const char *val,\n       il->n_entries++;\n     }\n   il->n_alloc = il->n_entries + 1;\n-  il->entries = xmalloc (il->n_alloc * sizeof (il->entries[0]));\n+  il->entries = xcalloc (il->n_alloc, sizeof (il->entries[0]));\n   ptr = val;\n   for (ce = il->entries; ; ce++)\n     {\ndiff --git a/util/grub-install.c b/util/grub-install.c\nindex 8a55ad4b8..a82725f29 100644\n--- a/util/grub-install.c\n+++ b/util/grub-install.c\n@@ -626,7 +626,7 @@ device_map_check_duplicates (const char *dev_map)\n   if (! fp)\n     return;\n \n-  d = xmalloc (alloced * sizeof (d[0]));\n+  d = xcalloc (alloced, sizeof (d[0]));\n \n   while (fgets (buf, sizeof (buf), fp))\n     {\n@@ -1260,7 +1260,7 @@ main (int argc, char *argv[])\n       ndev++;\n     }\n \n-  grub_drives = xmalloc (sizeof (grub_drives[0]) * (ndev + 1)); \n+  grub_drives = xcalloc (ndev + 1, sizeof (grub_drives[0]));\n \n   for (curdev = grub_devices, curdrive = grub_drives; *curdev; curdev++,\n        curdrive++)\ndiff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c\nindex bc087c2b5..d97d0e7be 100644\n--- a/util/grub-mkimagexx.c\n+++ b/util/grub-mkimagexx.c\n@@ -2294,10 +2294,8 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,\n \t\t      + grub_host_to_target16 (e->e_shstrndx) * smd.section_entsize);\n   smd.strtab = (char *) e + grub_host_to_target_addr (s->sh_offset);\n \n-  smd.addrs = xmalloc (sizeof (*smd.addrs) * smd.num_sections);\n-  memset (smd.addrs, 0, sizeof (*smd.addrs) * smd.num_sections);\n-  smd.vaddrs = xmalloc (sizeof (*smd.vaddrs) * smd.num_sections);\n-  memset (smd.vaddrs, 0, sizeof (*smd.vaddrs) * smd.num_sections);\n+  smd.addrs = xcalloc (smd.num_sections, sizeof (*smd.addrs));\n+  smd.vaddrs = xcalloc (smd.num_sections, sizeof (*smd.vaddrs));\n \n   SUFFIX (locate_sections) (e, kernel_path, &smd, layout, image_target);\n \ndiff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c\nindex ce2cbc4f1..51831027f 100644\n--- a/util/grub-mkrescue.c\n+++ b/util/grub-mkrescue.c\n@@ -441,8 +441,8 @@ main (int argc, char *argv[])\n   xorriso = xstrdup (\"xorriso\");\n   label_font = grub_util_path_concat (2, pkgdatadir, \"unicode.pf2\");\n \n-  argp_argv = xmalloc (sizeof (argp_argv[0]) * argc);\n-  xorriso_tail_argv = xmalloc (sizeof (argp_argv[0]) * argc);\n+  argp_argv = xcalloc (argc, sizeof (argp_argv[0]));\n+  xorriso_tail_argv = xcalloc (argc, sizeof (argp_argv[0]));\n \n   xorriso_tail_argc = 0;\n   /* Program name */\ndiff --git a/util/grub-mkstandalone.c b/util/grub-mkstandalone.c\nindex 4907d44c0..edf309717 100644\n--- a/util/grub-mkstandalone.c\n+++ b/util/grub-mkstandalone.c\n@@ -296,7 +296,7 @@ main (int argc, char *argv[])\n   grub_util_host_init (&argc, &argv);\n   grub_util_disable_fd_syncs ();\n \n-  files = xmalloc ((argc + 1) * sizeof (files[0]));\n+  files = xcalloc (argc + 1, sizeof (files[0]));\n \n   argp_parse (&argp, argc, argv, 0, 0, 0);\n \ndiff --git a/util/grub-pe2elf.c b/util/grub-pe2elf.c\nindex 0d4084a10..11331294f 100644\n--- a/util/grub-pe2elf.c\n+++ b/util/grub-pe2elf.c\n@@ -100,9 +100,9 @@ write_section_data (FILE* fp, const char *name, char *image,\n   char *pe_strtab = (image + pe_chdr->symtab_offset\n \t\t     + pe_chdr->num_symbols * sizeof (struct grub_pe32_symbol));\n \n-  section_map = xmalloc ((2 * pe_chdr->num_sections + 5) * sizeof (int));\n+  section_map = xcalloc (2 * pe_chdr->num_sections + 5, sizeof (int));\n   section_map[0] = 0;\n-  shdr = xmalloc ((2 * pe_chdr->num_sections + 5) * sizeof (shdr[0]));\n+  shdr = xcalloc (2 * pe_chdr->num_sections + 5, sizeof (shdr[0]));\n   idx = 1;\n   idx_reloc = pe_chdr->num_sections + 1;\n \n@@ -233,7 +233,7 @@ write_reloc_section (FILE* fp, const char *name, char *image,\n \n       pe_sec = pe_shdr + shdr[i].sh_link;\n       pe_rel = (struct grub_pe32_reloc *) (image + pe_sec->relocations_offset);\n-      rel = (elf_reloc_t *) xmalloc (pe_sec->num_relocations * sizeof (elf_reloc_t));\n+      rel = (elf_reloc_t *) xcalloc (pe_sec->num_relocations, sizeof (elf_reloc_t));\n       num_rels = 0;\n       modified = 0;\n \n@@ -365,12 +365,10 @@ write_symbol_table (FILE* fp, const char *name, char *image,\n   pe_symtab = (struct grub_pe32_symbol *) (image + pe_chdr->symtab_offset);\n   pe_strtab = (char *) (pe_symtab + pe_chdr->num_symbols);\n \n-  symtab = (Elf_Sym *) xmalloc ((pe_chdr->num_symbols + 1) *\n-\t\t\t\tsizeof (Elf_Sym));\n-  memset (symtab, 0, (pe_chdr->num_symbols + 1) * sizeof (Elf_Sym));\n+  symtab = (Elf_Sym *) xcalloc (pe_chdr->num_symbols + 1, sizeof (Elf_Sym));\n   num_syms = 1;\n \n-  symtab_map = (int *) xmalloc (pe_chdr->num_symbols * sizeof (int));\n+  symtab_map = (int *) xcalloc (pe_chdr->num_symbols, sizeof (int));\n \n   for (i = 0; i < (int) pe_chdr->num_symbols;\n        i += pe_symtab->num_aux + 1, pe_symtab += pe_symtab->num_aux + 1)\ndiff --git a/util/grub-probe.c b/util/grub-probe.c\nindex 81d27eead..cbe6ed94c 100644\n--- a/util/grub-probe.c\n+++ b/util/grub-probe.c\n@@ -361,8 +361,8 @@ probe (const char *path, char **device_names, char delim)\n       grub_util_pull_device (*curdev);\n       ndev++;\n     }\n-  \n-  drives_names = xmalloc (sizeof (drives_names[0]) * (ndev + 1)); \n+\n+  drives_names = xcalloc (ndev + 1, sizeof (drives_names[0]));\n \n   for (curdev = device_names, curdrive = drives_names; *curdev; curdev++,\n        curdrive++)\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0006-malloc-Use-overflow-checking-primitives-where-we-do-.patch",
    "content": "From 4ad7e85adc3803788d65707a9db11fd681aebe4a Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Mon, 15 Jun 2020 12:28:27 -0400\nSubject: [PATCH] malloc: Use overflow checking primitives where we do\n complex allocations\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis attempts to fix the places where we do the following where\narithmetic_expr may include unvalidated data:\n\n  X = grub_malloc(arithmetic_expr);\n\nIt accomplishes this by doing the arithmetic ahead of time using grub_add(),\ngrub_sub(), grub_mul() and testing for overflow before proceeding.\n\nAmong other issues, this fixes:\n  - allocation of integer overflow in grub_video_bitmap_create()\n    reported by Chris Coulson,\n  - allocation of integer overflow in grub_png_decode_image_header()\n    reported by Chris Coulson,\n  - allocation of integer overflow in grub_squash_read_symlink()\n    reported by Chris Coulson,\n  - allocation of integer overflow in grub_ext2_read_symlink()\n    reported by Chris Coulson,\n  - allocation of integer overflow in read_section_as_string()\n    reported by Chris Coulson.\n\nFixes: CVE-2020-14309, CVE-2020-14310, CVE-2020-14311\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/commands/legacycfg.c | 29 +++++++++++++++----\n grub-core/commands/wildcard.c  | 36 ++++++++++++++++++++----\n grub-core/disk/ldm.c           | 32 +++++++++++++++------\n grub-core/font/font.c          |  7 ++++-\n grub-core/fs/btrfs.c           | 28 +++++++++++++------\n grub-core/fs/ext2.c            | 10 ++++++-\n grub-core/fs/iso9660.c         | 51 ++++++++++++++++++++++++----------\n grub-core/fs/sfs.c             | 27 ++++++++++++++----\n grub-core/fs/squash4.c         | 45 ++++++++++++++++++++++--------\n grub-core/fs/udf.c             | 41 +++++++++++++++++----------\n grub-core/fs/xfs.c             | 11 +++++---\n grub-core/fs/zfs/zfs.c         | 22 ++++++++++-----\n grub-core/fs/zfs/zfscrypt.c    |  7 ++++-\n grub-core/lib/arg.c            | 20 +++++++++++--\n grub-core/loader/i386/bsd.c    |  8 +++++-\n grub-core/net/dns.c            |  9 +++++-\n grub-core/normal/charset.c     | 10 +++++--\n grub-core/normal/cmdline.c     | 14 ++++++++--\n grub-core/normal/menu_entry.c  | 13 +++++++--\n grub-core/script/argv.c        | 16 +++++++++--\n grub-core/script/lexer.c       | 21 ++++++++++++--\n grub-core/video/bitmap.c       | 25 +++++++++++------\n grub-core/video/readers/png.c  | 13 +++++++--\n 23 files changed, 382 insertions(+), 113 deletions(-)\n\ndiff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c\nindex 5e3ec0d5e..cc5971f4d 100644\n--- a/grub-core/commands/legacycfg.c\n+++ b/grub-core/commands/legacycfg.c\n@@ -32,6 +32,7 @@\n #include <grub/auth.h>\n #include <grub/disk.h>\n #include <grub/partition.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -104,13 +105,22 @@ legacy_file (const char *filename)\n \tif (newsuffix)\n \t  {\n \t    char *t;\n-\t    \n+\t    grub_size_t sz;\n+\n+\t    if (grub_add (grub_strlen (suffix), grub_strlen (newsuffix), &sz) ||\n+\t\tgrub_add (sz, 1, &sz))\n+\t      {\n+\t\tgrub_errno = GRUB_ERR_OUT_OF_RANGE;\n+\t\tgoto fail_0;\n+\t      }\n+\n \t    t = suffix;\n-\t    suffix = grub_realloc (suffix, grub_strlen (suffix)\n-\t\t\t\t   + grub_strlen (newsuffix) + 1);\n+\t    suffix = grub_realloc (suffix, sz);\n \t    if (!suffix)\n \t      {\n \t\tgrub_free (t);\n+\n+ fail_0:\n \t\tgrub_free (entrysrc);\n \t\tgrub_free (parsed);\n \t\tgrub_free (newsuffix);\n@@ -154,13 +164,22 @@ legacy_file (const char *filename)\n \t  else\n \t    {\n \t      char *t;\n+\t      grub_size_t sz;\n+\n+\t      if (grub_add (grub_strlen (entrysrc), grub_strlen (parsed), &sz) ||\n+\t\t  grub_add (sz, 1, &sz))\n+\t\t{\n+\t\t  grub_errno = GRUB_ERR_OUT_OF_RANGE;\n+\t\t  goto fail_1;\n+\t\t}\n \n \t      t = entrysrc;\n-\t      entrysrc = grub_realloc (entrysrc, grub_strlen (entrysrc)\n-\t\t\t\t       + grub_strlen (parsed) + 1);\n+\t      entrysrc = grub_realloc (entrysrc, sz);\n \t      if (!entrysrc)\n \t\t{\n \t\t  grub_free (t);\n+\n+ fail_1:\n \t\t  grub_free (parsed);\n \t\t  grub_free (suffix);\n \t\t  return grub_errno;\ndiff --git a/grub-core/commands/wildcard.c b/grub-core/commands/wildcard.c\nindex 4a106ca04..cc3290311 100644\n--- a/grub-core/commands/wildcard.c\n+++ b/grub-core/commands/wildcard.c\n@@ -23,6 +23,7 @@\n #include <grub/file.h>\n #include <grub/device.h>\n #include <grub/script_sh.h>\n+#include <grub/safemath.h>\n \n #include <regex.h>\n \n@@ -48,6 +49,7 @@ merge (char **dest, char **ps)\n   int i;\n   int j;\n   char **p;\n+  grub_size_t sz;\n \n   if (! dest)\n     return ps;\n@@ -60,7 +62,12 @@ merge (char **dest, char **ps)\n   for (j = 0; ps[j]; j++)\n     ;\n \n-  p = grub_realloc (dest, sizeof (char*) * (i + j + 1));\n+  if (grub_add (i, j, &sz) ||\n+      grub_add (sz, 1, &sz) ||\n+      grub_mul (sz, sizeof (char *), &sz))\n+    return dest;\n+\n+  p = grub_realloc (dest, sz);\n   if (! p)\n     {\n       grub_free (dest);\n@@ -115,8 +122,15 @@ make_regex (const char *start, const char *end, regex_t *regexp)\n   char ch;\n   int i = 0;\n   unsigned len = end - start;\n-  char *buffer = grub_malloc (len * 2 + 2 + 1); /* worst case size. */\n+  char *buffer;\n+  grub_size_t sz;\n \n+  /* Worst case size is (len * 2 + 2 + 1). */\n+  if (grub_mul (len, 2, &sz) ||\n+      grub_add (sz, 3, &sz))\n+    return 1;\n+\n+  buffer = grub_malloc (sz);\n   if (! buffer)\n     return 1;\n \n@@ -226,6 +240,7 @@ match_devices_iter (const char *name, void *data)\n   struct match_devices_ctx *ctx = data;\n   char **t;\n   char *buffer;\n+  grub_size_t sz;\n \n   /* skip partitions if asked to. */\n   if (ctx->noparts && grub_strchr (name, ','))\n@@ -239,11 +254,16 @@ match_devices_iter (const char *name, void *data)\n   if (regexec (ctx->regexp, buffer, 0, 0, 0))\n     {\n       grub_dprintf (\"expand\", \"not matched\\n\");\n+ fail:\n       grub_free (buffer);\n       return 0;\n     }\n \n-  t = grub_realloc (ctx->devs, sizeof (char*) * (ctx->ndev + 2));\n+  if (grub_add (ctx->ndev, 2, &sz) ||\n+      grub_mul (sz, sizeof (char *), &sz))\n+    goto fail;\n+\n+  t = grub_realloc (ctx->devs, sz);\n   if (! t)\n     {\n       grub_free (buffer);\n@@ -300,6 +320,7 @@ match_files_iter (const char *name,\n   struct match_files_ctx *ctx = data;\n   char **t;\n   char *buffer;\n+  grub_size_t sz;\n \n   /* skip . and .. names */\n   if (grub_strcmp(\".\", name) == 0 || grub_strcmp(\"..\", name) == 0)\n@@ -315,9 +336,14 @@ match_files_iter (const char *name,\n   if (! buffer)\n     return 1;\n \n-  t = grub_realloc (ctx->files, sizeof (char*) * (ctx->nfile + 2));\n-  if (! t)\n+  if (grub_add (ctx->nfile, 2, &sz) ||\n+      grub_mul (sz, sizeof (char *), &sz))\n+    goto fail;\n+\n+  t = grub_realloc (ctx->files, sz);\n+  if (!t)\n     {\n+ fail:\n       grub_free (buffer);\n       return 1;\n     }\ndiff --git a/grub-core/disk/ldm.c b/grub-core/disk/ldm.c\nindex e6323701a..58f8a53e1 100644\n--- a/grub-core/disk/ldm.c\n+++ b/grub-core/disk/ldm.c\n@@ -25,6 +25,7 @@\n #include <grub/msdos_partition.h>\n #include <grub/gpt_partition.h>\n #include <grub/i18n.h>\n+#include <grub/safemath.h>\n \n #ifdef GRUB_UTIL\n #include <grub/emu/misc.h>\n@@ -289,6 +290,7 @@ make_vg (grub_disk_t disk,\n       struct grub_ldm_vblk vblk[GRUB_DISK_SECTOR_SIZE\n \t\t\t\t/ sizeof (struct grub_ldm_vblk)];\n       unsigned i;\n+      grub_size_t sz;\n       err = grub_disk_read (disk, cursec, 0,\n \t\t\t    sizeof(vblk), &vblk);\n       if (err)\n@@ -350,7 +352,13 @@ make_vg (grub_disk_t disk,\n \t      grub_free (lv);\n \t      goto fail2;\n \t    }\n-\t  lv->name = grub_malloc (*ptr + 1);\n+\t  if (grub_add (*ptr, 1, &sz))\n+\t    {\n+\t      grub_free (lv->internal_id);\n+\t      grub_free (lv);\n+\t      goto fail2;\n+\t    }\n+\t  lv->name = grub_malloc (sz);\n \t  if (!lv->name)\n \t    {\n \t      grub_free (lv->internal_id);\n@@ -599,10 +607,13 @@ make_vg (grub_disk_t disk,\n \t  if (lv->segments->node_alloc == lv->segments->node_count)\n \t    {\n \t      void *t;\n-\t      lv->segments->node_alloc *= 2; \n-\t      t = grub_realloc (lv->segments->nodes,\n-\t\t\t\tsizeof (*lv->segments->nodes)\n-\t\t\t\t* lv->segments->node_alloc);\n+\t      grub_size_t sz;\n+\n+\t      if (grub_mul (lv->segments->node_alloc, 2, &lv->segments->node_alloc) ||\n+\t\t  grub_mul (lv->segments->node_alloc, sizeof (*lv->segments->nodes), &sz))\n+\t\tgoto fail2;\n+\n+\t      t = grub_realloc (lv->segments->nodes, sz);\n \t      if (!t)\n \t\tgoto fail2;\n \t      lv->segments->nodes = t;\n@@ -723,10 +734,13 @@ make_vg (grub_disk_t disk,\n \t      if (comp->segment_alloc == comp->segment_count)\n \t\t{\n \t\t  void *t;\n-\t\t  comp->segment_alloc *= 2;\n-\t\t  t = grub_realloc (comp->segments,\n-\t\t\t\t    comp->segment_alloc\n-\t\t\t\t    * sizeof (*comp->segments));\n+\t\t  grub_size_t sz;\n+\n+\t\t  if (grub_mul (comp->segment_alloc, 2, &comp->segment_alloc) ||\n+\t\t      grub_mul (comp->segment_alloc, sizeof (*comp->segments), &sz))\n+\t\t    goto fail2;\n+\n+\t\t  t = grub_realloc (comp->segments, sz);\n \t\t  if (!t)\n \t\t    goto fail2;\n \t\t  comp->segments = t;\ndiff --git a/grub-core/font/font.c b/grub-core/font/font.c\nindex 8e118b315..5edb477ac 100644\n--- a/grub-core/font/font.c\n+++ b/grub-core/font/font.c\n@@ -30,6 +30,7 @@\n #include <grub/unicode.h>\n #include <grub/fontformat.h>\n #include <grub/env.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -360,9 +361,13 @@ static char *\n read_section_as_string (struct font_file_section *section)\n {\n   char *str;\n+  grub_size_t sz;\n   grub_ssize_t ret;\n \n-  str = grub_malloc (section->length + 1);\n+  if (grub_add (section->length, 1, &sz))\n+    return NULL;\n+\n+  str = grub_malloc (sz);\n   if (!str)\n     return 0;\n \ndiff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c\nindex 11272efc1..2b65bd56a 100644\n--- a/grub-core/fs/btrfs.c\n+++ b/grub-core/fs/btrfs.c\n@@ -40,6 +40,7 @@\n #include <grub/btrfs.h>\n #include <grub/crypto.h>\n #include <grub/diskfilter.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -329,9 +330,13 @@ save_ref (struct grub_btrfs_leaf_descriptor *desc,\n   if (desc->allocated < desc->depth)\n     {\n       void *newdata;\n-      desc->allocated *= 2;\n-      newdata = grub_realloc (desc->data, sizeof (desc->data[0])\n-\t\t\t      * desc->allocated);\n+      grub_size_t sz;\n+\n+      if (grub_mul (desc->allocated, 2, &desc->allocated) ||\n+\t  grub_mul (desc->allocated, sizeof (desc->data[0]), &sz))\n+\treturn GRUB_ERR_OUT_OF_RANGE;\n+\n+      newdata = grub_realloc (desc->data, sz);\n       if (!newdata)\n \treturn grub_errno;\n       desc->data = newdata;\n@@ -622,16 +627,21 @@ find_device (struct grub_btrfs_data *data, grub_uint64_t id)\n   if (data->n_devices_attached > data->n_devices_allocated)\n     {\n       void *tmp;\n-      data->n_devices_allocated = 2 * data->n_devices_attached + 1;\n-      data->devices_attached\n-\t= grub_realloc (tmp = data->devices_attached,\n-\t\t\tdata->n_devices_allocated\n-\t\t\t* sizeof (data->devices_attached[0]));\n+      grub_size_t sz;\n+\n+      if (grub_mul (data->n_devices_attached, 2, &data->n_devices_allocated) ||\n+\t  grub_add (data->n_devices_allocated, 1, &data->n_devices_allocated) ||\n+\t  grub_mul (data->n_devices_allocated, sizeof (data->devices_attached[0]), &sz))\n+\tgoto fail;\n+\n+      data->devices_attached = grub_realloc (tmp = data->devices_attached, sz);\n       if (!data->devices_attached)\n \t{\n+\t  data->devices_attached = tmp;\n+\n+ fail:\n \t  if (ctx.dev_found)\n \t    grub_device_close (ctx.dev_found);\n-\t  data->devices_attached = tmp;\n \t  return NULL;\n \t}\n     }\ndiff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c\nindex 9b389802a..ac33bcd68 100644\n--- a/grub-core/fs/ext2.c\n+++ b/grub-core/fs/ext2.c\n@@ -46,6 +46,7 @@\n #include <grub/dl.h>\n #include <grub/types.h>\n #include <grub/fshelp.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -703,6 +704,7 @@ grub_ext2_read_symlink (grub_fshelp_node_t node)\n {\n   char *symlink;\n   struct grub_fshelp_node *diro = node;\n+  grub_size_t sz;\n \n   if (! diro->inode_read)\n     {\n@@ -717,7 +719,13 @@ grub_ext2_read_symlink (grub_fshelp_node_t node)\n        }\n     }\n \n-  symlink = grub_malloc (grub_le_to_cpu32 (diro->inode.size) + 1);\n+  if (grub_add (grub_le_to_cpu32 (diro->inode.size), 1, &sz))\n+    {\n+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n+      return NULL;\n+    }\n+\n+  symlink = grub_malloc (sz);\n   if (! symlink)\n     return 0;\n \ndiff --git a/grub-core/fs/iso9660.c b/grub-core/fs/iso9660.c\nindex 4f1b52a55..7ba5b300b 100644\n--- a/grub-core/fs/iso9660.c\n+++ b/grub-core/fs/iso9660.c\n@@ -28,6 +28,7 @@\n #include <grub/fshelp.h>\n #include <grub/charset.h>\n #include <grub/datetime.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -531,8 +532,13 @@ add_part (struct iterate_dir_ctx *ctx,\n \t  int len2)\n {\n   int size = ctx->symlink ? grub_strlen (ctx->symlink) : 0;\n+  grub_size_t sz;\n \n-  ctx->symlink = grub_realloc (ctx->symlink, size + len2 + 1);\n+  if (grub_add (size, len2, &sz) ||\n+      grub_add (sz, 1, &sz))\n+    return;\n+\n+  ctx->symlink = grub_realloc (ctx->symlink, sz);\n   if (! ctx->symlink)\n     return;\n \n@@ -560,17 +566,24 @@ susp_iterate_dir (struct grub_iso9660_susp_entry *entry,\n \t{\n \t  grub_size_t off = 0, csize = 1;\n \t  char *old;\n+\t  grub_size_t sz;\n+\n \t  csize = entry->len - 5;\n \t  old = ctx->filename;\n \t  if (ctx->filename_alloc)\n \t    {\n \t      off = grub_strlen (ctx->filename);\n-\t      ctx->filename = grub_realloc (ctx->filename, csize + off + 1);\n+\t      if (grub_add (csize, off, &sz) ||\n+\t\t  grub_add (sz, 1, &sz))\n+\t\treturn GRUB_ERR_OUT_OF_RANGE;\n+\t      ctx->filename = grub_realloc (ctx->filename, sz);\n \t    }\n \t  else\n \t    {\n \t      off = 0;\n-\t      ctx->filename = grub_zalloc (csize + 1);\n+\t      if (grub_add (csize, 1, &sz))\n+\t\treturn GRUB_ERR_OUT_OF_RANGE;\n+\t      ctx->filename = grub_zalloc (sz);\n \t    }\n \t  if (!ctx->filename)\n \t    {\n@@ -776,14 +789,18 @@ grub_iso9660_iterate_dir (grub_fshelp_node_t dir,\n \t    if (node->have_dirents >= node->alloc_dirents)\n \t      {\n \t\tstruct grub_fshelp_node *new_node;\n-\t\tnode->alloc_dirents *= 2;\n-\t\tnew_node = grub_realloc (node, \n-\t\t\t\t\t sizeof (struct grub_fshelp_node)\n-\t\t\t\t\t + ((node->alloc_dirents\n-\t\t\t\t\t     - ARRAY_SIZE (node->dirents))\n-\t\t\t\t\t    * sizeof (node->dirents[0])));\n+\t\tgrub_size_t sz;\n+\n+\t\tif (grub_mul (node->alloc_dirents, 2, &node->alloc_dirents) ||\n+\t\t    grub_sub (node->alloc_dirents, ARRAY_SIZE (node->dirents), &sz) ||\n+\t\t    grub_mul (sz, sizeof (node->dirents[0]), &sz) ||\n+\t\t    grub_add (sz, sizeof (struct grub_fshelp_node), &sz))\n+\t\t  goto fail_0;\n+\n+\t\tnew_node = grub_realloc (node, sz);\n \t\tif (!new_node)\n \t\t  {\n+ fail_0:\n \t\t    if (ctx.filename_alloc)\n \t\t      grub_free (ctx.filename);\n \t\t    grub_free (node);\n@@ -799,14 +816,18 @@ grub_iso9660_iterate_dir (grub_fshelp_node_t dir,\n \t\t* sizeof (node->dirents[0]) < grub_strlen (ctx.symlink) + 1)\n \t      {\n \t\tstruct grub_fshelp_node *new_node;\n-\t\tnew_node = grub_realloc (node,\n-\t\t\t\t\t sizeof (struct grub_fshelp_node)\n-\t\t\t\t\t + ((node->alloc_dirents\n-\t\t\t\t\t     - ARRAY_SIZE (node->dirents))\n-\t\t\t\t\t    * sizeof (node->dirents[0]))\n-\t\t\t\t\t + grub_strlen (ctx.symlink) + 1);\n+\t\tgrub_size_t sz;\n+\n+\t\tif (grub_sub (node->alloc_dirents, ARRAY_SIZE (node->dirents), &sz) ||\n+\t\t    grub_mul (sz, sizeof (node->dirents[0]), &sz) ||\n+\t\t    grub_add (sz, sizeof (struct grub_fshelp_node) + 1, &sz) ||\n+\t\t    grub_add (sz, grub_strlen (ctx.symlink), &sz))\n+\t\t  goto fail_1;\n+\n+\t\tnew_node = grub_realloc (node, sz);\n \t\tif (!new_node)\n \t\t  {\n+ fail_1:\n \t\t    if (ctx.filename_alloc)\n \t\t      grub_free (ctx.filename);\n \t\t    grub_free (node);\ndiff --git a/grub-core/fs/sfs.c b/grub-core/fs/sfs.c\nindex 90f7fb379..de2b107a4 100644\n--- a/grub-core/fs/sfs.c\n+++ b/grub-core/fs/sfs.c\n@@ -26,6 +26,7 @@\n #include <grub/types.h>\n #include <grub/fshelp.h>\n #include <grub/charset.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -307,10 +308,15 @@ grub_sfs_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)\n       if (node->cache && node->cache_size >= node->cache_allocated)\n \t{\n \t  struct cache_entry *e = node->cache;\n-\t  e = grub_realloc (node->cache,node->cache_allocated * 2\n-\t\t\t    * sizeof (e[0]));\n+\t  grub_size_t sz;\n+\n+\t  if (grub_mul (node->cache_allocated, 2 * sizeof (e[0]), &sz))\n+\t    goto fail;\n+\n+\t  e = grub_realloc (node->cache, sz);\n \t  if (!e)\n \t    {\n+ fail:\n \t      grub_errno = 0;\n \t      grub_free (node->cache);\n \t      node->cache = 0;\n@@ -477,10 +483,16 @@ grub_sfs_create_node (struct grub_fshelp_node **node,\n   grub_size_t len = grub_strlen (name);\n   grub_uint8_t *name_u8;\n   int ret;\n+  grub_size_t sz;\n+\n+  if (grub_mul (len, GRUB_MAX_UTF8_PER_LATIN1, &sz) ||\n+      grub_add (sz, 1, &sz))\n+    return 1;\n+\n   *node = grub_malloc (sizeof (**node));\n   if (!*node)\n     return 1;\n-  name_u8 = grub_malloc (len * GRUB_MAX_UTF8_PER_LATIN1 + 1);\n+  name_u8 = grub_malloc (sz);\n   if (!name_u8)\n     {\n       grub_free (*node);\n@@ -724,8 +736,13 @@ grub_sfs_label (grub_device_t device, char **label)\n   data = grub_sfs_mount (disk);\n   if (data)\n     {\n-      grub_size_t len = grub_strlen (data->label);\n-      *label = grub_malloc (len * GRUB_MAX_UTF8_PER_LATIN1 + 1);\n+      grub_size_t sz, len = grub_strlen (data->label);\n+\n+      if (grub_mul (len, GRUB_MAX_UTF8_PER_LATIN1, &sz) ||\n+\t  grub_add (sz, 1, &sz))\n+\treturn GRUB_ERR_OUT_OF_RANGE;\n+\n+      *label = grub_malloc (sz);\n       if (*label)\n \t*grub_latin1_to_utf8 ((grub_uint8_t *) *label,\n \t\t\t      (const grub_uint8_t *) data->label,\ndiff --git a/grub-core/fs/squash4.c b/grub-core/fs/squash4.c\nindex 95d5c1e1f..785123894 100644\n--- a/grub-core/fs/squash4.c\n+++ b/grub-core/fs/squash4.c\n@@ -26,6 +26,7 @@\n #include <grub/types.h>\n #include <grub/fshelp.h>\n #include <grub/deflate.h>\n+#include <grub/safemath.h>\n #include <minilzo.h>\n \n #include \"xz.h\"\n@@ -459,7 +460,17 @@ grub_squash_read_symlink (grub_fshelp_node_t node)\n {\n   char *ret;\n   grub_err_t err;\n-  ret = grub_malloc (grub_le_to_cpu32 (node->ino.symlink.namelen) + 1);\n+  grub_size_t sz;\n+\n+  if (grub_add (grub_le_to_cpu32 (node->ino.symlink.namelen), 1, &sz))\n+    {\n+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n+      return NULL;\n+    }\n+\n+  ret = grub_malloc (sz);\n+  if (!ret)\n+    return NULL;\n \n   err = read_chunk (node->data, ret,\n \t\t    grub_le_to_cpu32 (node->ino.symlink.namelen),\n@@ -506,11 +517,16 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,\n \n   {\n     grub_fshelp_node_t node;\n-    node = grub_malloc (sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));\n+    grub_size_t sz;\n+\n+    if (grub_mul (dir->stsize, sizeof (dir->stack[0]), &sz) ||\n+\tgrub_add (sz, sizeof (*node), &sz))\n+      return 0;\n+\n+    node = grub_malloc (sz);\n     if (!node)\n       return 0;\n-    grub_memcpy (node, dir,\n-\t\t sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));\n+    grub_memcpy (node, dir, sz);\n     if (hook (\".\", GRUB_FSHELP_DIR, node, hook_data))\n       return 1;\n \n@@ -518,12 +534,15 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,\n       {\n \tgrub_err_t err;\n \n-\tnode = grub_malloc (sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));\n+\tif (grub_mul (dir->stsize, sizeof (dir->stack[0]), &sz) ||\n+\t    grub_add (sz, sizeof (*node), &sz))\n+\t  return 0;\n+\n+\tnode = grub_malloc (sz);\n \tif (!node)\n \t  return 0;\n \n-\tgrub_memcpy (node, dir,\n-\t\t     sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));\n+\tgrub_memcpy (node, dir, sz);\n \n \tnode->stsize--;\n \terr = read_chunk (dir->data, &node->ino, sizeof (node->ino),\n@@ -557,6 +576,7 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,\n \t  enum grub_fshelp_filetype filetype = GRUB_FSHELP_REG;\n \t  struct grub_squash_dirent di;\n \t  struct grub_squash_inode ino;\n+\t  grub_size_t sz;\n \n \t  err = read_chunk (dir->data, &di, sizeof (di),\n \t\t\t    grub_le_to_cpu64 (dir->data->sb.diroffset)\n@@ -589,13 +609,16 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,\n \t  if (grub_le_to_cpu16 (di.type) == SQUASH_TYPE_SYMLINK)\n \t    filetype = GRUB_FSHELP_SYMLINK;\n \n-\t  node = grub_malloc (sizeof (*node)\n-\t\t\t      + (dir->stsize + 1) * sizeof (dir->stack[0]));\n+\t  if (grub_add (dir->stsize, 1, &sz) ||\n+\t      grub_mul (sz, sizeof (dir->stack[0]), &sz) ||\n+\t      grub_add (sz, sizeof (*node), &sz))\n+\t    return 0;\n+\n+\t  node = grub_malloc (sz);\n \t  if (! node)\n \t    return 0;\n \n-\t  grub_memcpy (node, dir,\n-\t\t       sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));\n+\t  grub_memcpy (node, dir, sz - sizeof(dir->stack[0]));\n \n \t  node->ino = ino;\n \t  node->stack[node->stsize].ino_chunk = grub_le_to_cpu32 (dh.ino_chunk);\ndiff --git a/grub-core/fs/udf.c b/grub-core/fs/udf.c\nindex a83761674..21ac7f446 100644\n--- a/grub-core/fs/udf.c\n+++ b/grub-core/fs/udf.c\n@@ -28,6 +28,7 @@\n #include <grub/charset.h>\n #include <grub/datetime.h>\n #include <grub/udf.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -890,9 +891,19 @@ read_string (const grub_uint8_t *raw, grub_size_t sz, char *outbuf)\n \tutf16[i] = (raw[2 * i + 1] << 8) | raw[2*i + 2];\n     }\n   if (!outbuf)\n-    outbuf = grub_malloc (utf16len * GRUB_MAX_UTF8_PER_UTF16 + 1);\n+    {\n+      grub_size_t size;\n+\n+      if (grub_mul (utf16len, GRUB_MAX_UTF8_PER_UTF16, &size) ||\n+\t  grub_add (size, 1, &size))\n+\tgoto fail;\n+\n+      outbuf = grub_malloc (size);\n+    }\n   if (outbuf)\n     *grub_utf16_to_utf8 ((grub_uint8_t *) outbuf, utf16, utf16len) = '\\0';\n+\n+ fail:\n   grub_free (utf16);\n   return outbuf;\n }\n@@ -1005,7 +1016,7 @@ grub_udf_read_symlink (grub_fshelp_node_t node)\n   grub_size_t sz = U64 (node->block.fe.file_size);\n   grub_uint8_t *raw;\n   const grub_uint8_t *ptr;\n-  char *out, *optr;\n+  char *out = NULL, *optr;\n \n   if (sz < 4)\n     return NULL;\n@@ -1013,14 +1024,16 @@ grub_udf_read_symlink (grub_fshelp_node_t node)\n   if (!raw)\n     return NULL;\n   if (grub_udf_read_file (node, NULL, NULL, 0, sz, (char *) raw) < 0)\n-    {\n-      grub_free (raw);\n-      return NULL;\n-    }\n+    goto fail_1;\n \n-  out = grub_malloc (sz * 2 + 1);\n+  if (grub_mul (sz, 2, &sz) ||\n+      grub_add (sz, 1, &sz))\n+    goto fail_0;\n+\n+  out = grub_malloc (sz);\n   if (!out)\n     {\n+ fail_0:\n       grub_free (raw);\n       return NULL;\n     }\n@@ -1031,17 +1044,17 @@ grub_udf_read_symlink (grub_fshelp_node_t node)\n     {\n       grub_size_t s;\n       if ((grub_size_t) (ptr - raw + 4) > sz)\n-\tgoto fail;\n+\tgoto fail_1;\n       if (!(ptr[2] == 0 && ptr[3] == 0))\n-\tgoto fail;\n+\tgoto fail_1;\n       s = 4 + ptr[1];\n       if ((grub_size_t) (ptr - raw + s) > sz)\n-\tgoto fail;\n+\tgoto fail_1;\n       switch (*ptr)\n \t{\n \tcase 1:\n \t  if (ptr[1])\n-\t    goto fail;\n+\t    goto fail_1;\n \t  /* Fallthrough.  */\n \tcase 2:\n \t  /* in 4 bytes. out: 1 byte.  */\n@@ -1066,11 +1079,11 @@ grub_udf_read_symlink (grub_fshelp_node_t node)\n \t  if (optr != out)\n \t    *optr++ = '/';\n \t  if (!read_string (ptr + 4, s - 4, optr))\n-\t    goto fail;\n+\t    goto fail_1;\n \t  optr += grub_strlen (optr);\n \t  break;\n \tdefault:\n-\t  goto fail;\n+\t  goto fail_1;\n \t}\n       ptr += s;\n     }\n@@ -1078,7 +1091,7 @@ grub_udf_read_symlink (grub_fshelp_node_t node)\n   grub_free (raw);\n   return out;\n \n- fail:\n+ fail_1:\n   grub_free (raw);\n   grub_free (out);\n   grub_error (GRUB_ERR_BAD_FS, \"invalid symlink\");\ndiff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c\nindex 96ffecbfc..ea6590290 100644\n--- a/grub-core/fs/xfs.c\n+++ b/grub-core/fs/xfs.c\n@@ -25,6 +25,7 @@\n #include <grub/dl.h>\n #include <grub/types.h>\n #include <grub/fshelp.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -899,6 +900,7 @@ static struct grub_xfs_data *\n grub_xfs_mount (grub_disk_t disk)\n {\n   struct grub_xfs_data *data = 0;\n+  grub_size_t sz;\n \n   data = grub_zalloc (sizeof (struct grub_xfs_data));\n   if (!data)\n@@ -913,10 +915,11 @@ grub_xfs_mount (grub_disk_t disk)\n   if (!grub_xfs_sb_valid(data))\n     goto fail;\n \n-  data = grub_realloc (data,\n-\t\t       sizeof (struct grub_xfs_data)\n-\t\t       - sizeof (struct grub_xfs_inode)\n-\t\t       + grub_xfs_inode_size(data) + 1);\n+  if (grub_add (grub_xfs_inode_size (data),\n+      sizeof (struct grub_xfs_data) - sizeof (struct grub_xfs_inode) + 1, &sz))\n+    goto fail;\n+\n+  data = grub_realloc (data, sz);\n \n   if (! data)\n     goto fail;\ndiff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c\nindex 381dde556..36d0373a6 100644\n--- a/grub-core/fs/zfs/zfs.c\n+++ b/grub-core/fs/zfs/zfs.c\n@@ -55,6 +55,7 @@\n #include <grub/deflate.h>\n #include <grub/crypto.h>\n #include <grub/i18n.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -773,11 +774,14 @@ fill_vdev_info (struct grub_zfs_data *data,\n   if (data->n_devices_attached > data->n_devices_allocated)\n     {\n       void *tmp;\n-      data->n_devices_allocated = 2 * data->n_devices_attached + 1;\n-      data->devices_attached\n-\t= grub_realloc (tmp = data->devices_attached,\n-\t\t\tdata->n_devices_allocated\n-\t\t\t* sizeof (data->devices_attached[0]));\n+      grub_size_t sz;\n+\n+      if (grub_mul (data->n_devices_attached, 2, &data->n_devices_allocated) ||\n+\t  grub_add (data->n_devices_allocated, 1, &data->n_devices_allocated) ||\n+\t  grub_mul (data->n_devices_allocated, sizeof (data->devices_attached[0]), &sz))\n+\treturn GRUB_ERR_OUT_OF_RANGE;\n+\n+      data->devices_attached = grub_realloc (tmp = data->devices_attached, sz);\n       if (!data->devices_attached)\n \t{\n \t  data->devices_attached = tmp;\n@@ -3468,14 +3472,18 @@ grub_zfs_nvlist_lookup_nvlist (const char *nvlist, const char *name)\n {\n   char *nvpair;\n   char *ret;\n-  grub_size_t size;\n+  grub_size_t size, sz;\n   int found;\n \n   found = nvlist_find_value (nvlist, name, DATA_TYPE_NVLIST, &nvpair,\n \t\t\t     &size, 0);\n   if (!found)\n     return 0;\n-  ret = grub_zalloc (size + 3 * sizeof (grub_uint32_t));\n+\n+  if (grub_add (size, 3 * sizeof (grub_uint32_t), &sz))\n+      return 0;\n+\n+  ret = grub_zalloc (sz);\n   if (!ret)\n     return 0;\n   grub_memcpy (ret, nvlist, sizeof (grub_uint32_t));\ndiff --git a/grub-core/fs/zfs/zfscrypt.c b/grub-core/fs/zfs/zfscrypt.c\nindex 1402e0bc2..de3b015f5 100644\n--- a/grub-core/fs/zfs/zfscrypt.c\n+++ b/grub-core/fs/zfs/zfscrypt.c\n@@ -22,6 +22,7 @@\n #include <grub/misc.h>\n #include <grub/disk.h>\n #include <grub/partition.h>\n+#include <grub/safemath.h>\n #include <grub/dl.h>\n #include <grub/types.h>\n #include <grub/zfs/zfs.h>\n@@ -82,9 +83,13 @@ grub_zfs_add_key (grub_uint8_t *key_in,\n \t\t  int passphrase)\n {\n   struct grub_zfs_wrap_key *key;\n+  grub_size_t sz;\n+\n   if (!passphrase && keylen > 32)\n     keylen = 32;\n-  key = grub_malloc (sizeof (*key) + keylen);\n+  if (grub_add (sizeof (*key), keylen, &sz))\n+    return GRUB_ERR_OUT_OF_RANGE;\n+  key = grub_malloc (sz);\n   if (!key)\n     return grub_errno;\n   key->is_passphrase = passphrase;\ndiff --git a/grub-core/lib/arg.c b/grub-core/lib/arg.c\nindex fd7744a6f..3288609a5 100644\n--- a/grub-core/lib/arg.c\n+++ b/grub-core/lib/arg.c\n@@ -23,6 +23,7 @@\n #include <grub/term.h>\n #include <grub/extcmd.h>\n #include <grub/i18n.h>\n+#include <grub/safemath.h>\n \n /* Built-in parser for default options.  */\n static const struct grub_arg_option help_options[] =\n@@ -216,7 +217,13 @@ static inline grub_err_t\n add_arg (char ***argl, int *num, char *s)\n {\n   char **p = *argl;\n-  *argl = grub_realloc (*argl, (++(*num) + 1) * sizeof (char *));\n+  grub_size_t sz;\n+\n+  if (grub_add (++(*num), 1, &sz) ||\n+      grub_mul (sz, sizeof (char *), &sz))\n+    return grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n+\n+  *argl = grub_realloc (*argl, sz);\n   if (! *argl)\n     {\n       grub_free (p);\n@@ -431,6 +438,7 @@ grub_arg_list_alloc(grub_extcmd_t extcmd, int argc,\n   grub_size_t argcnt;\n   struct grub_arg_list *list;\n   const struct grub_arg_option *options;\n+  grub_size_t sz0, sz1;\n \n   options = extcmd->options;\n   if (! options)\n@@ -443,7 +451,15 @@ grub_arg_list_alloc(grub_extcmd_t extcmd, int argc,\n \targcnt += ((grub_size_t) argc + 1) / 2 + 1; /* max possible for any option */\n     }\n \n-  list = grub_zalloc (sizeof (*list) * i + sizeof (char*) * argcnt);\n+  if (grub_mul (sizeof (*list), i, &sz0) ||\n+      grub_mul (sizeof (char *), argcnt, &sz1) ||\n+      grub_add (sz0, sz1, &sz0))\n+    {\n+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n+      return 0;\n+    }\n+\n+  list = grub_zalloc (sz0);\n   if (! list)\n     return 0;\n \ndiff --git a/grub-core/loader/i386/bsd.c b/grub-core/loader/i386/bsd.c\nindex 3730ed382..b92cbe98d 100644\n--- a/grub-core/loader/i386/bsd.c\n+++ b/grub-core/loader/i386/bsd.c\n@@ -35,6 +35,7 @@\n #include <grub/ns8250.h>\n #include <grub/bsdlabel.h>\n #include <grub/crypto.h>\n+#include <grub/safemath.h>\n #include <grub/verify.h>\n #ifdef GRUB_MACHINE_PCBIOS\n #include <grub/machine/int.h>\n@@ -1012,11 +1013,16 @@ grub_netbsd_add_modules (void)\n   struct grub_netbsd_btinfo_modules *mods;\n   unsigned i;\n   grub_err_t err;\n+  grub_size_t sz;\n \n   for (mod = netbsd_mods; mod; mod = mod->next)\n     modcnt++;\n \n-  mods = grub_malloc (sizeof (*mods) + sizeof (mods->mods[0]) * modcnt);\n+  if (grub_mul (modcnt, sizeof (mods->mods[0]), &sz) ||\n+      grub_add (sz, sizeof (*mods), &sz))\n+    return GRUB_ERR_OUT_OF_RANGE;\n+\n+  mods = grub_malloc (sz);\n   if (!mods)\n     return grub_errno;\n \ndiff --git a/grub-core/net/dns.c b/grub-core/net/dns.c\nindex e332d5eb4..906ec7d67 100644\n--- a/grub-core/net/dns.c\n+++ b/grub-core/net/dns.c\n@@ -22,6 +22,7 @@\n #include <grub/i18n.h>\n #include <grub/err.h>\n #include <grub/time.h>\n+#include <grub/safemath.h>\n \n struct dns_cache_element\n {\n@@ -51,9 +52,15 @@ grub_net_add_dns_server (const struct grub_net_network_level_address *s)\n     {\n       int na = dns_servers_alloc * 2;\n       struct grub_net_network_level_address *ns;\n+      grub_size_t sz;\n+\n       if (na < 8)\n \tna = 8;\n-      ns = grub_realloc (dns_servers, na * sizeof (ns[0]));\n+\n+      if (grub_mul (na, sizeof (ns[0]), &sz))\n+\treturn GRUB_ERR_OUT_OF_RANGE;\n+\n+      ns = grub_realloc (dns_servers, sz);\n       if (!ns)\n \treturn grub_errno;\n       dns_servers_alloc = na;\ndiff --git a/grub-core/normal/charset.c b/grub-core/normal/charset.c\nindex d57fb72fa..4dfcc3107 100644\n--- a/grub-core/normal/charset.c\n+++ b/grub-core/normal/charset.c\n@@ -48,6 +48,7 @@\n #include <grub/unicode.h>\n #include <grub/term.h>\n #include <grub/normal.h>\n+#include <grub/safemath.h>\n \n #if HAVE_FONT_SOURCE\n #include \"widthspec.h\"\n@@ -464,6 +465,7 @@ grub_unicode_aglomerate_comb (const grub_uint32_t *in, grub_size_t inlen,\n \t{\n \t  struct grub_unicode_combining *n;\n \t  unsigned j;\n+\t  grub_size_t sz;\n \n \t  if (!haveout)\n \t    continue;\n@@ -477,10 +479,14 @@ grub_unicode_aglomerate_comb (const grub_uint32_t *in, grub_size_t inlen,\n \t    n = out->combining_inline;\n \t  else if (out->ncomb > (int) ARRAY_SIZE (out->combining_inline))\n \t    {\n-\t      n = grub_realloc (out->combining_ptr,\n-\t\t\t\tsizeof (n[0]) * (out->ncomb + 1));\n+\t      if (grub_add (out->ncomb, 1, &sz) ||\n+\t\t  grub_mul (sz, sizeof (n[0]), &sz))\n+\t\tgoto fail;\n+\n+\t      n = grub_realloc (out->combining_ptr, sz);\n \t      if (!n)\n \t\t{\n+ fail:\n \t\t  grub_errno = GRUB_ERR_NONE;\n \t\t  continue;\n \t\t}\ndiff --git a/grub-core/normal/cmdline.c b/grub-core/normal/cmdline.c\nindex c57242e2e..de03fe63b 100644\n--- a/grub-core/normal/cmdline.c\n+++ b/grub-core/normal/cmdline.c\n@@ -28,6 +28,7 @@\n #include <grub/env.h>\n #include <grub/i18n.h>\n #include <grub/charset.h>\n+#include <grub/safemath.h>\n \n static grub_uint32_t *kill_buf;\n \n@@ -307,12 +308,21 @@ cl_insert (struct cmdline_term *cl_terms, unsigned nterms,\n   if (len + (*llen) >= (*max_len))\n     {\n       grub_uint32_t *nbuf;\n-      (*max_len) *= 2;\n-      nbuf = grub_realloc ((*buf), sizeof (grub_uint32_t) * (*max_len));\n+      grub_size_t sz;\n+\n+      if (grub_mul (*max_len, 2, max_len) ||\n+\t  grub_mul (*max_len, sizeof (grub_uint32_t), &sz))\n+\t{\n+\t  grub_errno = GRUB_ERR_OUT_OF_RANGE;\n+\t  goto fail;\n+\t}\n+\n+      nbuf = grub_realloc ((*buf), sz);\n       if (nbuf)\n \t(*buf) = nbuf;\n       else\n \t{\n+ fail:\n \t  grub_print_error ();\n \t  grub_errno = GRUB_ERR_NONE;\n \t  (*max_len) /= 2;\ndiff --git a/grub-core/normal/menu_entry.c b/grub-core/normal/menu_entry.c\nindex 1993995be..50eef918c 100644\n--- a/grub-core/normal/menu_entry.c\n+++ b/grub-core/normal/menu_entry.c\n@@ -27,6 +27,7 @@\n #include <grub/auth.h>\n #include <grub/i18n.h>\n #include <grub/charset.h>\n+#include <grub/safemath.h>\n \n enum update_mode\n   {\n@@ -113,10 +114,18 @@ ensure_space (struct line *linep, int extra)\n {\n   if (linep->max_len < linep->len + extra)\n     {\n-      linep->max_len = 2 * (linep->len + extra);\n-      linep->buf = grub_realloc (linep->buf, (linep->max_len + 1) * sizeof (linep->buf[0]));\n+      grub_size_t sz0, sz1;\n+\n+      if (grub_add (linep->len, extra, &sz0) ||\n+\t  grub_mul (sz0, 2, &sz0) ||\n+\t  grub_add (sz0, 1, &sz1) ||\n+\t  grub_mul (sz1, sizeof (linep->buf[0]), &sz1))\n+\treturn 0;\n+\n+      linep->buf = grub_realloc (linep->buf, sz1);\n       if (! linep->buf)\n \treturn 0;\n+      linep->max_len = sz0;\n     }\n \n   return 1;\ndiff --git a/grub-core/script/argv.c b/grub-core/script/argv.c\nindex 217ec5d1e..5751fdd57 100644\n--- a/grub-core/script/argv.c\n+++ b/grub-core/script/argv.c\n@@ -20,6 +20,7 @@\n #include <grub/mm.h>\n #include <grub/misc.h>\n #include <grub/script_sh.h>\n+#include <grub/safemath.h>\n \n /* Return nearest power of two that is >= v.  */\n static unsigned\n@@ -81,11 +82,16 @@ int\n grub_script_argv_next (struct grub_script_argv *argv)\n {\n   char **p = argv->args;\n+  grub_size_t sz;\n \n   if (argv->args && argv->argc && argv->args[argv->argc - 1] == 0)\n     return 0;\n \n-  p = grub_realloc (p, round_up_exp ((argv->argc + 2) * sizeof (char *)));\n+  if (grub_add (argv->argc, 2, &sz) ||\n+      grub_mul (sz, sizeof (char *), &sz))\n+    return 1;\n+\n+  p = grub_realloc (p, round_up_exp (sz));\n   if (! p)\n     return 1;\n \n@@ -105,13 +111,19 @@ grub_script_argv_append (struct grub_script_argv *argv, const char *s,\n {\n   grub_size_t a;\n   char *p = argv->args[argv->argc - 1];\n+  grub_size_t sz;\n \n   if (! s)\n     return 0;\n \n   a = p ? grub_strlen (p) : 0;\n \n-  p = grub_realloc (p, round_up_exp ((a + slen + 1) * sizeof (char)));\n+  if (grub_add (a, slen, &sz) ||\n+      grub_add (sz, 1, &sz) ||\n+      grub_mul (sz, sizeof (char), &sz))\n+    return 1;\n+\n+  p = grub_realloc (p, round_up_exp (sz));\n   if (! p)\n     return 1;\n \ndiff --git a/grub-core/script/lexer.c b/grub-core/script/lexer.c\nindex c6bd3172f..5fb0cbd0b 100644\n--- a/grub-core/script/lexer.c\n+++ b/grub-core/script/lexer.c\n@@ -24,6 +24,7 @@\n #include <grub/mm.h>\n #include <grub/script_sh.h>\n #include <grub/i18n.h>\n+#include <grub/safemath.h>\n \n #define yytext_ptr char *\n #include \"grub_script.tab.h\"\n@@ -110,10 +111,14 @@ grub_script_lexer_record (struct grub_parser_param *parser, char *str)\n       old = lexer->recording;\n       if (lexer->recordlen < len)\n \tlexer->recordlen = len;\n-      lexer->recordlen *= 2;\n+\n+      if (grub_mul (lexer->recordlen, 2, &lexer->recordlen))\n+\tgoto fail;\n+\n       lexer->recording = grub_realloc (lexer->recording, lexer->recordlen);\n       if (!lexer->recording)\n \t{\n+ fail:\n \t  grub_free (old);\n \t  lexer->recordpos = 0;\n \t  lexer->recordlen = 0;\n@@ -130,7 +135,7 @@ int\n grub_script_lexer_yywrap (struct grub_parser_param *parserstate,\n \t\t\t  const char *input)\n {\n-  grub_size_t len = 0;\n+  grub_size_t len = 0, sz;\n   char *p = 0;\n   char *line = 0;\n   YY_BUFFER_STATE buffer;\n@@ -168,12 +173,22 @@ grub_script_lexer_yywrap (struct grub_parser_param *parserstate,\n     }\n   else if (len && line[len - 1] != '\\n')\n     {\n-      p = grub_realloc (line, len + 2);\n+      if (grub_add (len, 2, &sz))\n+\t{\n+\t  grub_free (line);\n+\t  grub_script_yyerror (parserstate, N_(\"overflow is detected\"));\n+\t  return 1;\n+\t}\n+\n+      p = grub_realloc (line, sz);\n       if (p)\n \t{\n \t  p[len++] = '\\n';\n \t  p[len] = '\\0';\n \t}\n+      else\n+\tgrub_free (line);\n+\n       line = p;\n     }\n \ndiff --git a/grub-core/video/bitmap.c b/grub-core/video/bitmap.c\nindex b2e031566..6256e209a 100644\n--- a/grub-core/video/bitmap.c\n+++ b/grub-core/video/bitmap.c\n@@ -23,6 +23,7 @@\n #include <grub/mm.h>\n #include <grub/misc.h>\n #include <grub/i18n.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -58,7 +59,7 @@ grub_video_bitmap_create (struct grub_video_bitmap **bitmap,\n                           enum grub_video_blit_format blit_format)\n {\n   struct grub_video_mode_info *mode_info;\n-  unsigned int size;\n+  grub_size_t size;\n \n   if (!bitmap)\n     return grub_error (GRUB_ERR_BUG, \"invalid argument\");\n@@ -137,19 +138,25 @@ grub_video_bitmap_create (struct grub_video_bitmap **bitmap,\n \n   mode_info->pitch = width * mode_info->bytes_per_pixel;\n \n-  /* Calculate size needed for the data.  */\n-  size = (width * mode_info->bytes_per_pixel) * height;\n+  /* Calculate size needed for the data. */\n+  if (grub_mul (width, mode_info->bytes_per_pixel, &size) ||\n+      grub_mul (size, height, &size))\n+    {\n+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n+      goto fail;\n+    }\n \n   (*bitmap)->data = grub_zalloc (size);\n   if (! (*bitmap)->data)\n-    {\n-      grub_free (*bitmap);\n-      *bitmap = 0;\n-\n-      return grub_errno;\n-    }\n+    goto fail;\n \n   return GRUB_ERR_NONE;\n+\n+ fail:\n+  grub_free (*bitmap);\n+  *bitmap = NULL;\n+\n+  return grub_errno;\n }\n \n /* Frees all resources allocated by bitmap.  */\ndiff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c\nindex 61bd64537..0157ff742 100644\n--- a/grub-core/video/readers/png.c\n+++ b/grub-core/video/readers/png.c\n@@ -23,6 +23,7 @@\n #include <grub/mm.h>\n #include <grub/misc.h>\n #include <grub/bufio.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -301,9 +302,17 @@ grub_png_decode_image_header (struct grub_png_data *data)\n       data->bpp <<= 1;\n \n   data->color_bits = color_bits;\n-  data->row_bytes = data->image_width * data->bpp;\n+\n+  if (grub_mul (data->image_width, data->bpp, &data->row_bytes))\n+    return grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n+\n   if (data->color_bits <= 4)\n-    data->row_bytes = (data->image_width * data->color_bits + 7) / 8;\n+    {\n+      if (grub_mul (data->image_width, data->color_bits + 7, &data->row_bytes))\n+\treturn grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n+\n+      data->row_bytes >>= 3;\n+    }\n \n #ifndef GRUB_CPU_WORDS_BIGENDIAN\n   if (data->is_16bit || data->is_gray || data->is_palette)\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0007-iso9660-Don-t-leak-memory-on-realloc-failures.patch",
    "content": "From e0dd17a3ce79c6622dc78c96e1f2ef1b20e2bf7b Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Sat, 4 Jul 2020 12:25:09 -0400\nSubject: [PATCH] iso9660: Don't leak memory on realloc() failures\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/iso9660.c | 24 ++++++++++++++++++++----\n 1 file changed, 20 insertions(+), 4 deletions(-)\n\ndiff --git a/grub-core/fs/iso9660.c b/grub-core/fs/iso9660.c\nindex 7ba5b300b..5ec4433b8 100644\n--- a/grub-core/fs/iso9660.c\n+++ b/grub-core/fs/iso9660.c\n@@ -533,14 +533,20 @@ add_part (struct iterate_dir_ctx *ctx,\n {\n   int size = ctx->symlink ? grub_strlen (ctx->symlink) : 0;\n   grub_size_t sz;\n+  char *new;\n \n   if (grub_add (size, len2, &sz) ||\n       grub_add (sz, 1, &sz))\n     return;\n \n-  ctx->symlink = grub_realloc (ctx->symlink, sz);\n-  if (! ctx->symlink)\n-    return;\n+  new = grub_realloc (ctx->symlink, sz);\n+  if (!new)\n+    {\n+      grub_free (ctx->symlink);\n+      ctx->symlink = NULL;\n+      return;\n+    }\n+  ctx->symlink = new;\n \n   grub_memcpy (ctx->symlink + size, part, len2);\n   ctx->symlink[size + len2] = 0;  \n@@ -634,7 +640,12 @@ susp_iterate_dir (struct grub_iso9660_susp_entry *entry,\n \t\t   is the length.  Both are part of the `Component\n \t\t   Record'.  */\n \t\tif (ctx->symlink && !ctx->was_continue)\n-\t\t  add_part (ctx, \"/\", 1);\n+\t\t  {\n+\t\t    add_part (ctx, \"/\", 1);\n+\t\t    if (grub_errno)\n+\t\t      return grub_errno;\n+\t\t  }\n+\n \t\tadd_part (ctx, (char *) &entry->data[pos + 2],\n \t\t\t  entry->data[pos + 1]);\n \t\tctx->was_continue = (entry->data[pos] & 1);\n@@ -653,6 +664,11 @@ susp_iterate_dir (struct grub_iso9660_susp_entry *entry,\n \t      add_part (ctx, \"/\", 1);\n \t      break;\n \t    }\n+\n+\t  /* Check if grub_realloc() failed in add_part(). */\n+\t  if (grub_errno)\n+\t    return grub_errno;\n+\n \t  /* In pos + 1 the length of the `Component Record' is\n \t     stored.  */\n \t  pos += entry->data[pos + 1] + 2;\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0008-font-Do-not-load-more-than-one-NAME-section.patch",
    "content": "From 73bc7a964c9496d5b0f00dbd69959dacf5adcebe Mon Sep 17 00:00:00 2001\nFrom: Daniel Kiper <daniel.kiper@oracle.com>\nDate: Tue, 7 Jul 2020 15:36:26 +0200\nSubject: [PATCH] font: Do not load more than one NAME section\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe GRUB font file can have one NAME section only. Though if somebody\ncrafts a broken font file with many NAME sections and loads it then the\nGRUB leaks memory. So, prevent against that by loading first NAME\nsection and failing in controlled way on following one.\n\nReported-by: Chris Coulson <chris.coulson@canonical.com>\nSigned-off-by: Daniel Kiper <daniel.kiper@oracle.com>\nReviewed-by: Jan Setje-Eilers <jan.setjeeilers@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/font/font.c | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/grub-core/font/font.c b/grub-core/font/font.c\nindex 5edb477ac..d09bb38d8 100644\n--- a/grub-core/font/font.c\n+++ b/grub-core/font/font.c\n@@ -532,6 +532,12 @@ grub_font_load (const char *filename)\n       if (grub_memcmp (section.name, FONT_FORMAT_SECTION_NAMES_FONT_NAME,\n \t\t       sizeof (FONT_FORMAT_SECTION_NAMES_FONT_NAME) - 1) == 0)\n \t{\n+\t  if (font->name != NULL)\n+\t    {\n+\t      grub_error (GRUB_ERR_BAD_FONT, \"invalid font file: too many NAME sections\");\n+\t      goto fail;\n+\t    }\n+\n \t  font->name = read_section_as_string (&section);\n \t  if (!font->name)\n \t    goto fail;\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0009-gfxmenu-Fix-double-free-in-load_image.patch",
    "content": "From 9ff609f0e7798bc5fb04f791131c98e7693bdd9b Mon Sep 17 00:00:00 2001\nFrom: Alexey Makhalov <amakhalov@vmware.com>\nDate: Wed, 8 Jul 2020 20:41:56 +0000\nSubject: [PATCH] gfxmenu: Fix double free in load_image()\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nself->bitmap should be zeroed after free. Otherwise, there is a chance\nto double free (USE_AFTER_FREE) it later in rescale_image().\n\nFixes: CID 292472\n\nSigned-off-by: Alexey Makhalov <amakhalov@vmware.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/gfxmenu/gui_image.c | 5 ++++-\n 1 file changed, 4 insertions(+), 1 deletion(-)\n\ndiff --git a/grub-core/gfxmenu/gui_image.c b/grub-core/gfxmenu/gui_image.c\nindex 29784ed2d..6b2e976f1 100644\n--- a/grub-core/gfxmenu/gui_image.c\n+++ b/grub-core/gfxmenu/gui_image.c\n@@ -195,7 +195,10 @@ load_image (grub_gui_image_t self, const char *path)\n     return grub_errno;\n \n   if (self->bitmap && (self->bitmap != self->raw_bitmap))\n-    grub_video_bitmap_destroy (self->bitmap);\n+    {\n+      grub_video_bitmap_destroy (self->bitmap);\n+      self->bitmap = 0;\n+    }\n   if (self->raw_bitmap)\n     grub_video_bitmap_destroy (self->raw_bitmap);\n \n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0010-xnu-Fix-double-free-in-grub_xnu_devprop_add_property.patch",
    "content": "From dc9777dc17697b196c415c53187a55861d41fd2a Mon Sep 17 00:00:00 2001\nFrom: Alexey Makhalov <amakhalov@vmware.com>\nDate: Wed, 8 Jul 2020 21:30:43 +0000\nSubject: [PATCH] xnu: Fix double free in grub_xnu_devprop_add_property()\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\ngrub_xnu_devprop_add_property() should not free utf8 and utf16 as it get\nallocated and freed in the caller.\n\nMinor improvement: do prop fields initialization after memory allocations.\n\nFixes: CID 292442, CID 292457, CID 292460, CID 292466\n\nSigned-off-by: Alexey Makhalov <amakhalov@vmware.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/loader/i386/xnu.c | 17 ++++++++---------\n 1 file changed, 8 insertions(+), 9 deletions(-)\n\ndiff --git a/grub-core/loader/i386/xnu.c b/grub-core/loader/i386/xnu.c\nindex b7d176b5d..e9e119259 100644\n--- a/grub-core/loader/i386/xnu.c\n+++ b/grub-core/loader/i386/xnu.c\n@@ -262,20 +262,19 @@ grub_xnu_devprop_add_property (struct grub_xnu_devprop_device_descriptor *dev,\n   if (!prop)\n     return grub_errno;\n \n-  prop->name = utf8;\n-  prop->name16 = utf16;\n-  prop->name16len = utf16len;\n-\n-  prop->length = datalen;\n-  prop->data = grub_malloc (prop->length);\n+  prop->data = grub_malloc (datalen);\n   if (!prop->data)\n     {\n-      grub_free (prop->name);\n-      grub_free (prop->name16);\n       grub_free (prop);\n       return grub_errno;\n     }\n-  grub_memcpy (prop->data, data, prop->length);\n+  grub_memcpy (prop->data, data, datalen);\n+\n+  prop->name = utf8;\n+  prop->name16 = utf16;\n+  prop->name16len = utf16len;\n+  prop->length = datalen;\n+\n   grub_list_push (GRUB_AS_LIST_P (&dev->properties),\n \t\t  GRUB_AS_LIST (prop));\n   return GRUB_ERR_NONE;\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0011-lzma-Make-sure-we-don-t-dereference-past-array.patch",
    "content": "From 78829f0c230680e386fff9f420bb1631bc20f761 Mon Sep 17 00:00:00 2001\nFrom: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>\nDate: Thu, 9 Jul 2020 03:05:23 +0000\nSubject: [PATCH] lzma: Make sure we don't dereference past array\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe two dimensional array p->posSlotEncoder[4][64] is being dereferenced\nusing the GetLenToPosState() macro which checks if len is less than 5,\nand if so subtracts 2 from it. If len = 0, that is 0 - 2 = 4294967294.\nObviously we don't want to dereference that far out so we check if the\nposition found is greater or equal kNumLenToPosStates (4) and bail out.\n\nN.B.: Upstream LZMA 18.05 and later has this function completely rewritten\nwithout any history.\n\nFixes: CID 51526\n\nSigned-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/lib/LzmaEnc.c | 10 ++++++++--\n 1 file changed, 8 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/lib/LzmaEnc.c b/grub-core/lib/LzmaEnc.c\nindex f2ec04a8c..753e56a95 100644\n--- a/grub-core/lib/LzmaEnc.c\n+++ b/grub-core/lib/LzmaEnc.c\n@@ -1877,13 +1877,19 @@ static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, Bool useLimits, UInt32 maxPackSize\n       }\n       else\n       {\n-        UInt32 posSlot;\n+        UInt32 posSlot, lenToPosState;\n         RangeEnc_EncodeBit(&p->rc, &p->isRep[p->state], 0);\n         p->state = kMatchNextStates[p->state];\n         LenEnc_Encode2(&p->lenEnc, &p->rc, len - LZMA_MATCH_LEN_MIN, posState, !p->fastMode, p->ProbPrices);\n         pos -= LZMA_NUM_REPS;\n         GetPosSlot(pos, posSlot);\n-        RcTree_Encode(&p->rc, p->posSlotEncoder[GetLenToPosState(len)], kNumPosSlotBits, posSlot);\n+        lenToPosState = GetLenToPosState(len);\n+        if (lenToPosState >= kNumLenToPosStates)\n+        {\n+          p->result = SZ_ERROR_DATA;\n+          return CheckErrors(p);\n+        }\n+        RcTree_Encode(&p->rc, p->posSlotEncoder[lenToPosState], kNumPosSlotBits, posSlot);\n \n         if (posSlot >= kStartPosModelIndex)\n         {\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0012-term-Fix-overflow-on-user-inputs.patch",
    "content": "From 8d3b6f9da468f666e3a7976657f2ab5c52762a21 Mon Sep 17 00:00:00 2001\nFrom: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>\nDate: Tue, 7 Jul 2020 15:12:25 -0400\nSubject: [PATCH] term: Fix overflow on user inputs\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis requires a very weird input from the serial interface but can cause\nan overflow in input_buf (keys) overwriting the next variable (npending)\nwith the user choice:\n\n(pahole output)\n\nstruct grub_terminfo_input_state {\n        int                        input_buf[6];         /*     0    24 */\n        int                        npending;             /*    24     4 */ <- CORRUPT\n        ...snip...\n\nThe magic string requires causing this is \"ESC,O,],0,1,2,q\" and we overflow\nnpending with \"q\" (aka increase npending to 161). The simplest fix is to\njust to disallow overwrites input_buf, which exactly what this patch does.\n\nFixes: CID 292449\n\nSigned-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/term/terminfo.c | 9 ++++++---\n 1 file changed, 6 insertions(+), 3 deletions(-)\n\ndiff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c\nindex d317efa36..5fa94c0c3 100644\n--- a/grub-core/term/terminfo.c\n+++ b/grub-core/term/terminfo.c\n@@ -398,7 +398,7 @@ grub_terminfo_getwh (struct grub_term_output *term)\n }\n \n static void\n-grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len,\n+grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len, int max_len,\n \t\t       int (*readkey) (struct grub_term_input *term))\n {\n   int c;\n@@ -414,6 +414,9 @@ grub_terminfo_readkey (struct grub_term_input *term, int *keys, int *len,\n     if (c == -1)\t\t\t\t\t\t\\\n       return;\t\t\t\t\t\t\t\\\n \t\t\t\t\t\t\t\t\\\n+    if (*len >= max_len)                                       \\\n+      return;                                                   \\\n+                                                                \\\n     keys[*len] = c;\t\t\t\t\t\t\\\n     (*len)++;\t\t\t\t\t\t\t\\\n   }\n@@ -602,8 +605,8 @@ grub_terminfo_getkey (struct grub_term_input *termi)\n       return ret;\n     }\n \n-  grub_terminfo_readkey (termi, data->input_buf,\n-\t\t\t &data->npending, data->readkey);\n+  grub_terminfo_readkey (termi, data->input_buf, &data->npending,\n+\t\t\t GRUB_TERMINFO_READKEY_MAX_LEN, data->readkey);\n \n #if defined(__powerpc__) && defined(GRUB_MACHINE_IEEE1275)\n   if (data->npending == 1 && data->input_buf[0] == GRUB_TERM_ESC\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0013-udf-Fix-memory-leak.patch",
    "content": "From 748b691761d31bfff7e9d0d210caa606294c2b52 Mon Sep 17 00:00:00 2001\nFrom: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>\nDate: Tue, 7 Jul 2020 22:02:31 -0400\nSubject: [PATCH] udf: Fix memory leak\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes: CID 73796\n\nSigned-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nReviewed-by: Jan Setje-Eilers <jan.setjeeilers@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/udf.c | 17 +++++++++++++----\n 1 file changed, 13 insertions(+), 4 deletions(-)\n\ndiff --git a/grub-core/fs/udf.c b/grub-core/fs/udf.c\nindex 21ac7f446..2ac5c1d00 100644\n--- a/grub-core/fs/udf.c\n+++ b/grub-core/fs/udf.c\n@@ -965,8 +965,10 @@ grub_udf_iterate_dir (grub_fshelp_node_t dir,\n \t    return 0;\n \n           if (grub_udf_read_icb (dir->data, &dirent.icb, child))\n-\t    return 0;\n-\n+\t    {\n+\t      grub_free (child);\n+\t      return 0;\n+\t    }\n           if (dirent.characteristics & GRUB_UDF_FID_CHAR_PARENT)\n \t    {\n \t      /* This is the parent directory.  */\n@@ -988,11 +990,18 @@ grub_udf_iterate_dir (grub_fshelp_node_t dir,\n \t\t\t\t       dirent.file_ident_length,\n \t\t\t\t       (char *) raw))\n \t\t  != dirent.file_ident_length)\n-\t\treturn 0;\n+\t\t{\n+\t\t  grub_free (child);\n+\t\t  return 0;\n+\t\t}\n \n \t      filename = read_string (raw, dirent.file_ident_length, 0);\n \t      if (!filename)\n-\t\tgrub_print_error ();\n+\t\t{\n+\t\t  /* As the hook won't get called. */\n+\t\t  grub_free (child);\n+\t\t  grub_print_error ();\n+\t\t}\n \n \t      if (filename && hook (filename, type, child, hook_data))\n \t\t{\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0014-multiboot2-Fix-memory-leak-if-grub_create_loader_cmd.patch",
    "content": "From 49bf3faa106498e151306fc780c63194a14751e3 Mon Sep 17 00:00:00 2001\nFrom: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>\nDate: Fri, 26 Jun 2020 10:51:43 -0400\nSubject: [PATCH] multiboot2: Fix memory leak if\n grub_create_loader_cmdline() fails\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes: CID 292468\n\nSigned-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/loader/multiboot_mbi2.c | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/grub-core/loader/multiboot_mbi2.c b/grub-core/loader/multiboot_mbi2.c\nindex 53da78615..0efc66062 100644\n--- a/grub-core/loader/multiboot_mbi2.c\n+++ b/grub-core/loader/multiboot_mbi2.c\n@@ -1070,7 +1070,11 @@ grub_multiboot2_add_module (grub_addr_t start, grub_size_t size,\n   err = grub_create_loader_cmdline (argc, argv, newmod->cmdline,\n \t\t\t\t    newmod->cmdline_size, GRUB_VERIFY_MODULE_CMDLINE);\n   if (err)\n-    return err;\n+    {\n+      grub_free (newmod->cmdline);\n+      grub_free (newmod);\n+      return err;\n+    }\n \n   if (modules_last)\n     modules_last->next = newmod;\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0015-tftp-Do-not-use-priority-queue.patch",
    "content": "From b6c4a1b204740fe52b32e7f530831a59f4038e20 Mon Sep 17 00:00:00 2001\nFrom: Alexey Makhalov <amakhalov@vmware.com>\nDate: Thu, 9 Jul 2020 08:10:40 +0000\nSubject: [PATCH] tftp: Do not use priority queue\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThere is not need to reassemble the order of blocks. Per RFC 1350,\nserver must wait for the ACK, before sending next block. Data packets\ncan be served immediately without putting them to priority queue.\n\nLogic to handle incoming packet is this:\n  - if packet block id equal to expected block id, then\n    process the packet,\n  - if packet block id is less than expected - this is retransmit\n    of old packet, then ACK it and drop the packet,\n  - if packet block id is more than expected - that shouldn't\n    happen, just drop the packet.\n\nIt makes the tftp receive path code simpler, smaller and faster.\nAs a benefit, this change fixes CID# 73624 and CID# 96690, caused\nby following while loop:\n\n  while (cmp_block (grub_be_to_cpu16 (tftph->u.data.block), data->block + 1) == 0)\n\nwhere tftph pointer is not moving from one iteration to another, causing\nto serve same packet again. Luckily, double serving didn't happen due to\ndata->block++ during the first iteration.\n\nFixes: CID 73624, CID 96690\n\nSigned-off-by: Alexey Makhalov <amakhalov@vmware.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/net/tftp.c | 168 ++++++++++++++-----------------------------\n 1 file changed, 53 insertions(+), 115 deletions(-)\n\ndiff --git a/grub-core/net/tftp.c b/grub-core/net/tftp.c\nindex 7d90bf66e..b4297bc8d 100644\n--- a/grub-core/net/tftp.c\n+++ b/grub-core/net/tftp.c\n@@ -25,7 +25,6 @@\n #include <grub/mm.h>\n #include <grub/dl.h>\n #include <grub/file.h>\n-#include <grub/priority_queue.h>\n #include <grub/i18n.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n@@ -106,31 +105,8 @@ typedef struct tftp_data\n   int have_oack;\n   struct grub_error_saved save_err;\n   grub_net_udp_socket_t sock;\n-  grub_priority_queue_t pq;\n } *tftp_data_t;\n \n-static int\n-cmp_block (grub_uint16_t a, grub_uint16_t b)\n-{\n-  grub_int16_t i = (grub_int16_t) (a - b);\n-  if (i > 0)\n-    return +1;\n-  if (i < 0)\n-    return -1;\n-  return 0;\n-}\n-\n-static int\n-cmp (const void *a__, const void *b__)\n-{\n-  struct grub_net_buff *a_ = *(struct grub_net_buff **) a__;\n-  struct grub_net_buff *b_ = *(struct grub_net_buff **) b__;\n-  struct tftphdr *a = (struct tftphdr *) a_->data;\n-  struct tftphdr *b = (struct tftphdr *) b_->data;\n-  /* We want the first elements to be on top.  */\n-  return -cmp_block (grub_be_to_cpu16 (a->u.data.block), grub_be_to_cpu16 (b->u.data.block));\n-}\n-\n static grub_err_t\n ack (tftp_data_t data, grub_uint64_t block)\n {\n@@ -207,73 +183,60 @@ tftp_receive (grub_net_udp_socket_t sock __attribute__ ((unused)),\n \t  return GRUB_ERR_NONE;\n \t}\n \n-      err = grub_priority_queue_push (data->pq, &nb);\n-      if (err)\n-\treturn err;\n-\n-      {\n-\tstruct grub_net_buff **nb_top_p, *nb_top;\n-\twhile (1)\n-\t  {\n-\t    nb_top_p = grub_priority_queue_top (data->pq);\n-\t    if (!nb_top_p)\n-\t      return GRUB_ERR_NONE;\n-\t    nb_top = *nb_top_p;\n-\t    tftph = (struct tftphdr *) nb_top->data;\n-\t    if (cmp_block (grub_be_to_cpu16 (tftph->u.data.block), data->block + 1) >= 0)\n-\t      break;\n-\t    ack (data, grub_be_to_cpu16 (tftph->u.data.block));\n-\t    grub_netbuff_free (nb_top);\n-\t    grub_priority_queue_pop (data->pq);\n-\t  }\n-\twhile (cmp_block (grub_be_to_cpu16 (tftph->u.data.block), data->block + 1) == 0)\n-\t  {\n-\t    unsigned size;\n-\n-\t    grub_priority_queue_pop (data->pq);\n-\n-\t    if (file->device->net->packs.count < 50)\n+      /* Ack old/retransmitted block. */\n+      if (grub_be_to_cpu16 (tftph->u.data.block) < data->block + 1)\n+\tack (data, grub_be_to_cpu16 (tftph->u.data.block));\n+      /* Ignore unexpected block. */\n+      else if (grub_be_to_cpu16 (tftph->u.data.block) > data->block + 1)\n+\tgrub_dprintf (\"tftp\", \"TFTP unexpected block # %d\\n\", tftph->u.data.block);\n+      else\n+\t{\n+\t  unsigned size;\n+\n+\t  if (file->device->net->packs.count < 50)\n+\t    {\n \t      err = ack (data, data->block + 1);\n-\t    else\n-\t      {\n-\t\tfile->device->net->stall = 1;\n-\t\terr = 0;\n-\t      }\n-\t    if (err)\n-\t      return err;\n-\n-\t    err = grub_netbuff_pull (nb_top, sizeof (tftph->opcode) +\n-\t\t\t\t     sizeof (tftph->u.data.block));\n-\t    if (err)\n-\t      return err;\n-\t    size = nb_top->tail - nb_top->data;\n-\n-\t    data->block++;\n-\t    if (size < data->block_size)\n-\t      {\n-\t\tif (data->ack_sent < data->block)\n-\t\t  ack (data, data->block);\n-\t\tfile->device->net->eof = 1;\n-\t\tfile->device->net->stall = 1;\n-\t\tgrub_net_udp_close (data->sock);\n-\t\tdata->sock = NULL;\n-\t      }\n-\t    /* Prevent garbage in broken cards. Is it still necessary\n-\t       given that IP implementation has been fixed?\n-\t     */\n-\t    if (size > data->block_size)\n-\t      {\n-\t\terr = grub_netbuff_unput (nb_top, size - data->block_size);\n-\t\tif (err)\n-\t\t  return err;\n-\t      }\n-\t    /* If there is data, puts packet in socket list. */\n-\t    if ((nb_top->tail - nb_top->data) > 0)\n-\t      grub_net_put_packet (&file->device->net->packs, nb_top);\n-\t    else\n-\t      grub_netbuff_free (nb_top);\n-\t  }\n-      }\n+\t      if (err)\n+\t\treturn err;\n+\t    }\n+\t  else\n+\t    file->device->net->stall = 1;\n+\n+\t  err = grub_netbuff_pull (nb, sizeof (tftph->opcode) +\n+\t\t\t\t   sizeof (tftph->u.data.block));\n+\t  if (err)\n+\t    return err;\n+\t  size = nb->tail - nb->data;\n+\n+\t  data->block++;\n+\t  if (size < data->block_size)\n+\t    {\n+\t      if (data->ack_sent < data->block)\n+\t\tack (data, data->block);\n+\t      file->device->net->eof = 1;\n+\t      file->device->net->stall = 1;\n+\t      grub_net_udp_close (data->sock);\n+\t      data->sock = NULL;\n+\t    }\n+\t  /*\n+\t   * Prevent garbage in broken cards. Is it still necessary\n+\t   * given that IP implementation has been fixed?\n+\t   */\n+\t  if (size > data->block_size)\n+\t    {\n+\t      err = grub_netbuff_unput (nb, size - data->block_size);\n+\t      if (err)\n+\t\treturn err;\n+\t    }\n+\t  /* If there is data, puts packet in socket list. */\n+\t  if ((nb->tail - nb->data) > 0)\n+\t    {\n+\t      grub_net_put_packet (&file->device->net->packs, nb);\n+\t      /* Do not free nb. */\n+\t      return GRUB_ERR_NONE;\n+\t    }\n+\t}\n+      grub_netbuff_free (nb);\n       return GRUB_ERR_NONE;\n     case TFTP_ERROR:\n       data->have_oack = 1;\n@@ -287,19 +250,6 @@ tftp_receive (grub_net_udp_socket_t sock __attribute__ ((unused)),\n     }\n }\n \n-static void\n-destroy_pq (tftp_data_t data)\n-{\n-  struct grub_net_buff **nb_p;\n-  while ((nb_p = grub_priority_queue_top (data->pq)))\n-    {\n-      grub_netbuff_free (*nb_p);\n-      grub_priority_queue_pop (data->pq);\n-    }\n-\n-  grub_priority_queue_destroy (data->pq);\n-}\n-\n static grub_err_t\n tftp_open (struct grub_file *file, const char *filename)\n {\n@@ -372,17 +322,9 @@ tftp_open (struct grub_file *file, const char *filename)\n   file->not_easily_seekable = 1;\n   file->data = data;\n \n-  data->pq = grub_priority_queue_new (sizeof (struct grub_net_buff *), cmp);\n-  if (!data->pq)\n-    {\n-      grub_free (data);\n-      return grub_errno;\n-    }\n-\n   err = grub_net_resolve_address (file->device->net->server, &addr);\n   if (err)\n     {\n-      destroy_pq (data);\n       grub_free (data);\n       return err;\n     }\n@@ -392,7 +334,6 @@ tftp_open (struct grub_file *file, const char *filename)\n \t\t\t\t  file);\n   if (!data->sock)\n     {\n-      destroy_pq (data);\n       grub_free (data);\n       return grub_errno;\n     }\n@@ -406,7 +347,6 @@ tftp_open (struct grub_file *file, const char *filename)\n       if (err)\n \t{\n \t  grub_net_udp_close (data->sock);\n-\t  destroy_pq (data);\n \t  grub_free (data);\n \t  return err;\n \t}\n@@ -423,7 +363,6 @@ tftp_open (struct grub_file *file, const char *filename)\n   if (grub_errno)\n     {\n       grub_net_udp_close (data->sock);\n-      destroy_pq (data);\n       grub_free (data);\n       return grub_errno;\n     }\n@@ -466,7 +405,6 @@ tftp_close (struct grub_file *file)\n \tgrub_print_error ();\n       grub_net_udp_close (data->sock);\n     }\n-  destroy_pq (data);\n   grub_free (data);\n   return GRUB_ERR_NONE;\n }\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0016-relocator-Protect-grub_relocator_alloc_chunk_addr-in.patch",
    "content": "From 1c7b619c84f229c1602c1958bcd054b6d9937562 Mon Sep 17 00:00:00 2001\nFrom: Alexey Makhalov <amakhalov@vmware.com>\nDate: Wed, 15 Jul 2020 06:42:37 +0000\nSubject: [PATCH] relocator: Protect grub_relocator_alloc_chunk_addr()\n input args against integer underflow/overflow\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nUse arithmetic macros from safemath.h to accomplish it. In this commit,\nI didn't want to be too paranoid to check every possible math equation\nfor overflow/underflow. Only obvious places (with non zero chance of\noverflow/underflow) were refactored.\n\nSigned-off-by: Alexey Makhalov <amakhalov@vmware.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/loader/i386/linux.c    |  9 +++++++--\n grub-core/loader/i386/pc/linux.c |  9 +++++++--\n grub-core/loader/i386/xen.c      | 12 ++++++++++--\n grub-core/loader/xnu.c           | 11 +++++++----\n 4 files changed, 31 insertions(+), 10 deletions(-)\n\ndiff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c\nindex d0501e229..02a73463a 100644\n--- a/grub-core/loader/i386/linux.c\n+++ b/grub-core/loader/i386/linux.c\n@@ -36,6 +36,7 @@\n #include <grub/lib/cmdline.h>\n #include <grub/linux.h>\n #include <grub/machine/kernel.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -547,9 +548,13 @@ grub_linux_boot (void)\n \n   {\n     grub_relocator_chunk_t ch;\n+    grub_size_t sz;\n+\n+    if (grub_add (ctx.real_size, efi_mmap_size, &sz))\n+      return GRUB_ERR_OUT_OF_RANGE;\n+\n     err = grub_relocator_alloc_chunk_addr (relocator, &ch,\n-\t\t\t\t\t   ctx.real_mode_target,\n-\t\t\t\t\t   (ctx.real_size + efi_mmap_size));\n+\t\t\t\t\t   ctx.real_mode_target, sz);\n     if (err)\n      return err;\n     real_mode_mem = get_virtual_current_address (ch);\ndiff --git a/grub-core/loader/i386/pc/linux.c b/grub-core/loader/i386/pc/linux.c\nindex 47ea2945e..31f09922b 100644\n--- a/grub-core/loader/i386/pc/linux.c\n+++ b/grub-core/loader/i386/pc/linux.c\n@@ -35,6 +35,7 @@\n #include <grub/i386/floppy.h>\n #include <grub/lib/cmdline.h>\n #include <grub/linux.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -218,8 +219,12 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),\n     setup_sects = GRUB_LINUX_DEFAULT_SETUP_SECTS;\n \n   real_size = setup_sects << GRUB_DISK_SECTOR_BITS;\n-  grub_linux16_prot_size = grub_file_size (file)\n-    - real_size - GRUB_DISK_SECTOR_SIZE;\n+  if (grub_sub (grub_file_size (file), real_size, &grub_linux16_prot_size) ||\n+      grub_sub (grub_linux16_prot_size, GRUB_DISK_SECTOR_SIZE, &grub_linux16_prot_size))\n+    {\n+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n+      goto fail;\n+    }\n \n   if (! grub_linux_is_bzimage\n       && GRUB_LINUX_ZIMAGE_ADDR + grub_linux16_prot_size\ndiff --git a/grub-core/loader/i386/xen.c b/grub-core/loader/i386/xen.c\nindex 8f662c8ac..cd24874ca 100644\n--- a/grub-core/loader/i386/xen.c\n+++ b/grub-core/loader/i386/xen.c\n@@ -41,6 +41,7 @@\n #include <grub/linux.h>\n #include <grub/i386/memory.h>\n #include <grub/verify.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -636,6 +637,7 @@ grub_cmd_xen (grub_command_t cmd __attribute__ ((unused)),\n   grub_relocator_chunk_t ch;\n   grub_addr_t kern_start;\n   grub_addr_t kern_end;\n+  grub_size_t sz;\n \n   if (argc == 0)\n     return grub_error (GRUB_ERR_BAD_ARGUMENT, N_(\"filename expected\"));\n@@ -703,8 +705,14 @@ grub_cmd_xen (grub_command_t cmd __attribute__ ((unused)),\n \n   xen_state.max_addr = ALIGN_UP (kern_end, PAGE_SIZE);\n \n-  err = grub_relocator_alloc_chunk_addr (xen_state.relocator, &ch, kern_start,\n-\t\t\t\t\t kern_end - kern_start);\n+\n+  if (grub_sub (kern_end, kern_start, &sz))\n+    {\n+      err = GRUB_ERR_OUT_OF_RANGE;\n+      goto fail;\n+    }\n+\n+  err = grub_relocator_alloc_chunk_addr (xen_state.relocator, &ch, kern_start, sz);\n   if (err)\n     goto fail;\n   kern_chunk_src = get_virtual_current_address (ch);\ndiff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c\nindex 77d7060e1..9ae4ceb35 100644\n--- a/grub-core/loader/xnu.c\n+++ b/grub-core/loader/xnu.c\n@@ -34,6 +34,7 @@\n #include <grub/env.h>\n #include <grub/i18n.h>\n #include <grub/verify.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -59,15 +60,17 @@ grub_xnu_heap_malloc (int size, void **src, grub_addr_t *target)\n {\n   grub_err_t err;\n   grub_relocator_chunk_t ch;\n+  grub_addr_t tgt;\n+\n+  if (grub_add (grub_xnu_heap_target_start, grub_xnu_heap_size, &tgt))\n+    return GRUB_ERR_OUT_OF_RANGE;\n   \n-  err = grub_relocator_alloc_chunk_addr (grub_xnu_relocator, &ch,\n-\t\t\t\t\t grub_xnu_heap_target_start\n-\t\t\t\t\t + grub_xnu_heap_size, size);\n+  err = grub_relocator_alloc_chunk_addr (grub_xnu_relocator, &ch, tgt, size);\n   if (err)\n     return err;\n \n   *src = get_virtual_current_address (ch);\n-  *target = grub_xnu_heap_target_start + grub_xnu_heap_size;\n+  *target = tgt;\n   grub_xnu_heap_size += size;\n   grub_dprintf (\"xnu\", \"val=%p\\n\", *src);\n   return GRUB_ERR_NONE;\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0017-relocator-Protect-grub_relocator_alloc_chunk_align-m.patch",
    "content": "From 0cfbbca3ccd84d36ffb1bcd6644ada7c73b19fc0 Mon Sep 17 00:00:00 2001\nFrom: Alexey Makhalov <amakhalov@vmware.com>\nDate: Wed, 8 Jul 2020 01:44:38 +0000\nSubject: [PATCH] relocator: Protect grub_relocator_alloc_chunk_align()\n max_addr against integer underflow\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis commit introduces integer underflow mitigation in max_addr calculation\nin grub_relocator_alloc_chunk_align() invocation.\n\nIt consists of 2 fixes:\n  1. Introduced grub_relocator_alloc_chunk_align_safe() wrapper function to perform\n     sanity check for min/max and size values, and to make safe invocation of\n     grub_relocator_alloc_chunk_align() with validated max_addr value. Replace all\n     invocations such as grub_relocator_alloc_chunk_align(..., min_addr, max_addr - size, size, ...)\n     by grub_relocator_alloc_chunk_align_safe(..., min_addr, max_addr, size, ...).\n  2. Introduced UP_TO_TOP32(s) macro for the cases where max_addr is 32-bit top\n     address (0xffffffff - size + 1) or similar.\n\nSigned-off-by: Alexey Makhalov <amakhalov@vmware.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/lib/i386/relocator.c        | 28 ++++++++++----------------\n grub-core/lib/mips/relocator.c        |  6 ++----\n grub-core/lib/powerpc/relocator.c     |  6 ++----\n grub-core/lib/x86_64/efi/relocator.c  |  7 +++----\n grub-core/loader/i386/linux.c         |  5 ++---\n grub-core/loader/i386/multiboot_mbi.c |  7 +++----\n grub-core/loader/i386/pc/linux.c      |  6 ++----\n grub-core/loader/mips/linux.c         |  9 +++------\n grub-core/loader/multiboot.c          |  2 +-\n grub-core/loader/multiboot_elfxx.c    | 10 ++++-----\n grub-core/loader/multiboot_mbi2.c     | 10 ++++-----\n grub-core/loader/xnu_resume.c         |  2 +-\n include/grub/relocator.h              | 29 +++++++++++++++++++++++++++\n 13 files changed, 69 insertions(+), 58 deletions(-)\n\ndiff --git a/grub-core/lib/i386/relocator.c b/grub-core/lib/i386/relocator.c\nindex 71dd4f0ab..34cbe834f 100644\n--- a/grub-core/lib/i386/relocator.c\n+++ b/grub-core/lib/i386/relocator.c\n@@ -83,11 +83,10 @@ grub_relocator32_boot (struct grub_relocator *rel,\n   /* Specific memory range due to Global Descriptor Table for use by payload\n      that we will store in returned chunk.  The address range and preference\n      are based on \"THE LINUX/x86 BOOT PROTOCOL\" specification.  */\n-  err = grub_relocator_alloc_chunk_align (rel, &ch, 0x1000,\n-\t\t\t\t\t  0x9a000 - RELOCATOR_SIZEOF (32),\n-\t\t\t\t\t  RELOCATOR_SIZEOF (32), 16,\n-\t\t\t\t\t  GRUB_RELOCATOR_PREFERENCE_LOW,\n-\t\t\t\t\t  avoid_efi_bootservices);\n+  err = grub_relocator_alloc_chunk_align_safe (rel, &ch, 0x1000, 0x9a000,\n+\t\t\t\t\t       RELOCATOR_SIZEOF (32), 16,\n+\t\t\t\t\t       GRUB_RELOCATOR_PREFERENCE_LOW,\n+\t\t\t\t\t       avoid_efi_bootservices);\n   if (err)\n     return err;\n \n@@ -125,13 +124,10 @@ grub_relocator16_boot (struct grub_relocator *rel,\n   grub_relocator_chunk_t ch;\n \n   /* Put it higher than the byte it checks for A20 check.  */\n-  err = grub_relocator_alloc_chunk_align (rel, &ch, 0x8010,\n-\t\t\t\t\t  0xa0000 - RELOCATOR_SIZEOF (16)\n-\t\t\t\t\t  - GRUB_RELOCATOR16_STACK_SIZE,\n-\t\t\t\t\t  RELOCATOR_SIZEOF (16)\n-\t\t\t\t\t  + GRUB_RELOCATOR16_STACK_SIZE, 16,\n-\t\t\t\t\t  GRUB_RELOCATOR_PREFERENCE_NONE,\n-\t\t\t\t\t  0);\n+  err = grub_relocator_alloc_chunk_align_safe (rel, &ch, 0x8010, 0xa0000,\n+\t\t\t\t\t       RELOCATOR_SIZEOF (16) +\n+\t\t\t\t\t       GRUB_RELOCATOR16_STACK_SIZE, 16,\n+\t\t\t\t\t       GRUB_RELOCATOR_PREFERENCE_NONE, 0);\n   if (err)\n     return err;\n \n@@ -183,11 +179,9 @@ grub_relocator64_boot (struct grub_relocator *rel,\n   void *relst;\n   grub_relocator_chunk_t ch;\n \n-  err = grub_relocator_alloc_chunk_align (rel, &ch, min_addr,\n-\t\t\t\t\t  max_addr - RELOCATOR_SIZEOF (64),\n-\t\t\t\t\t  RELOCATOR_SIZEOF (64), 16,\n-\t\t\t\t\t  GRUB_RELOCATOR_PREFERENCE_NONE,\n-\t\t\t\t\t  0);\n+  err = grub_relocator_alloc_chunk_align_safe (rel, &ch, min_addr, max_addr,\n+\t\t\t\t\t       RELOCATOR_SIZEOF (64), 16,\n+\t\t\t\t\t       GRUB_RELOCATOR_PREFERENCE_NONE, 0);\n   if (err)\n     return err;\n \ndiff --git a/grub-core/lib/mips/relocator.c b/grub-core/lib/mips/relocator.c\nindex 9d5f49cb9..743b213e6 100644\n--- a/grub-core/lib/mips/relocator.c\n+++ b/grub-core/lib/mips/relocator.c\n@@ -120,10 +120,8 @@ grub_relocator32_boot (struct grub_relocator *rel,\n   unsigned i;\n   grub_addr_t vtarget;\n \n-  err = grub_relocator_alloc_chunk_align (rel, &ch, 0,\n-\t\t\t\t\t  (0xffffffff - stateset_size)\n-\t\t\t\t\t  + 1, stateset_size,\n-\t\t\t\t\t  sizeof (grub_uint32_t),\n+  err = grub_relocator_alloc_chunk_align (rel, &ch, 0, UP_TO_TOP32 (stateset_size),\n+\t\t\t\t\t  stateset_size, sizeof (grub_uint32_t),\n \t\t\t\t\t  GRUB_RELOCATOR_PREFERENCE_NONE, 0);\n   if (err)\n     return err;\ndiff --git a/grub-core/lib/powerpc/relocator.c b/grub-core/lib/powerpc/relocator.c\nindex bdf2b111b..8ffb8b686 100644\n--- a/grub-core/lib/powerpc/relocator.c\n+++ b/grub-core/lib/powerpc/relocator.c\n@@ -115,10 +115,8 @@ grub_relocator32_boot (struct grub_relocator *rel,\n   unsigned i;\n   grub_relocator_chunk_t ch;\n \n-  err = grub_relocator_alloc_chunk_align (rel, &ch, 0,\n-\t\t\t\t\t  (0xffffffff - stateset_size)\n-\t\t\t\t\t  + 1, stateset_size,\n-\t\t\t\t\t  sizeof (grub_uint32_t),\n+  err = grub_relocator_alloc_chunk_align (rel, &ch, 0, UP_TO_TOP32 (stateset_size),\n+\t\t\t\t\t  stateset_size, sizeof (grub_uint32_t),\n \t\t\t\t\t  GRUB_RELOCATOR_PREFERENCE_NONE, 0);\n   if (err)\n     return err;\ndiff --git a/grub-core/lib/x86_64/efi/relocator.c b/grub-core/lib/x86_64/efi/relocator.c\nindex 3caef7a40..7d200a125 100644\n--- a/grub-core/lib/x86_64/efi/relocator.c\n+++ b/grub-core/lib/x86_64/efi/relocator.c\n@@ -50,10 +50,9 @@ grub_relocator64_efi_boot (struct grub_relocator *rel,\n    * 64-bit relocator code may live above 4 GiB quite well.\n    * However, I do not want ask for problems. Just in case.\n    */\n-  err = grub_relocator_alloc_chunk_align (rel, &ch, 0,\n-\t\t\t\t\t  0x100000000 - RELOCATOR_SIZEOF (64_efi),\n-\t\t\t\t\t  RELOCATOR_SIZEOF (64_efi), 16,\n-\t\t\t\t\t  GRUB_RELOCATOR_PREFERENCE_NONE, 1);\n+  err = grub_relocator_alloc_chunk_align_safe (rel, &ch, 0, 0x100000000,\n+\t\t\t\t\t       RELOCATOR_SIZEOF (64_efi), 16,\n+\t\t\t\t\t       GRUB_RELOCATOR_PREFERENCE_NONE, 1);\n   if (err)\n     return err;\n \ndiff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c\nindex 02a73463a..efbb99307 100644\n--- a/grub-core/loader/i386/linux.c\n+++ b/grub-core/loader/i386/linux.c\n@@ -181,9 +181,8 @@ allocate_pages (grub_size_t prot_size, grub_size_t *align,\n \tfor (; err && *align + 1 > min_align; (*align)--)\n \t  {\n \t    grub_errno = GRUB_ERR_NONE;\n-\t    err = grub_relocator_alloc_chunk_align (relocator, &ch,\n-\t\t\t\t\t\t    0x1000000,\n-\t\t\t\t\t\t    0xffffffff & ~prot_size,\n+\t    err = grub_relocator_alloc_chunk_align (relocator, &ch, 0x1000000,\n+\t\t\t\t\t\t    UP_TO_TOP32 (prot_size),\n \t\t\t\t\t\t    prot_size, 1 << *align,\n \t\t\t\t\t\t    GRUB_RELOCATOR_PREFERENCE_LOW,\n \t\t\t\t\t\t    1);\ndiff --git a/grub-core/loader/i386/multiboot_mbi.c b/grub-core/loader/i386/multiboot_mbi.c\nindex ad3cc292f..a67d9d0a8 100644\n--- a/grub-core/loader/i386/multiboot_mbi.c\n+++ b/grub-core/loader/i386/multiboot_mbi.c\n@@ -466,10 +466,9 @@ grub_multiboot_make_mbi (grub_uint32_t *target)\n \n   bufsize = grub_multiboot_get_mbi_size ();\n \n-  err = grub_relocator_alloc_chunk_align (grub_multiboot_relocator, &ch,\n-\t\t\t\t\t  0x10000, 0xa0000 - bufsize,\n-\t\t\t\t\t  bufsize, 4,\n-\t\t\t\t\t  GRUB_RELOCATOR_PREFERENCE_NONE, 0);\n+  err = grub_relocator_alloc_chunk_align_safe (grub_multiboot_relocator, &ch,\n+\t\t\t\t\t       0x10000, 0xa0000, bufsize, 4,\n+\t\t\t\t\t       GRUB_RELOCATOR_PREFERENCE_NONE, 0);\n   if (err)\n     return err;\n   ptrorig = get_virtual_current_address (ch);\ndiff --git a/grub-core/loader/i386/pc/linux.c b/grub-core/loader/i386/pc/linux.c\nindex 31f09922b..5fed5ffdf 100644\n--- a/grub-core/loader/i386/pc/linux.c\n+++ b/grub-core/loader/i386/pc/linux.c\n@@ -453,10 +453,8 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),\n \n   {\n     grub_relocator_chunk_t ch;\n-    err = grub_relocator_alloc_chunk_align (relocator, &ch,\n-\t\t\t\t\t    addr_min, addr_max - size,\n-\t\t\t\t\t    size, 0x1000,\n-\t\t\t\t\t    GRUB_RELOCATOR_PREFERENCE_HIGH, 0);\n+    err = grub_relocator_alloc_chunk_align_safe (relocator, &ch, addr_min, addr_max, size,\n+\t\t\t\t\t\t 0x1000, GRUB_RELOCATOR_PREFERENCE_HIGH, 0);\n     if (err)\n       return err;\n     initrd_chunk = get_virtual_current_address (ch);\ndiff --git a/grub-core/loader/mips/linux.c b/grub-core/loader/mips/linux.c\nindex 7b723bf18..e4ed95921 100644\n--- a/grub-core/loader/mips/linux.c\n+++ b/grub-core/loader/mips/linux.c\n@@ -442,12 +442,9 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),\n   {\n     grub_relocator_chunk_t ch;\n \n-    err = grub_relocator_alloc_chunk_align (relocator, &ch,\n-\t\t\t\t\t    (target_addr & 0x1fffffff)\n-\t\t\t\t\t    + linux_size + 0x10000,\n-\t\t\t\t\t    (0x10000000 - size),\n-\t\t\t\t\t    size, 0x10000,\n-\t\t\t\t\t    GRUB_RELOCATOR_PREFERENCE_NONE, 0);\n+    err = grub_relocator_alloc_chunk_align_safe (relocator, &ch, (target_addr & 0x1fffffff) +\n+\t\t\t\t\t\t linux_size + 0x10000, 0x10000000, size,\n+\t\t\t\t\t\t 0x10000, GRUB_RELOCATOR_PREFERENCE_NONE, 0);\n \n     if (err)\n       goto fail;\ndiff --git a/grub-core/loader/multiboot.c b/grub-core/loader/multiboot.c\nindex 4a98d7082..facb13f3d 100644\n--- a/grub-core/loader/multiboot.c\n+++ b/grub-core/loader/multiboot.c\n@@ -403,7 +403,7 @@ grub_cmd_module (grub_command_t cmd __attribute__ ((unused)),\n   {\n     grub_relocator_chunk_t ch;\n     err = grub_relocator_alloc_chunk_align (GRUB_MULTIBOOT (relocator), &ch,\n-\t\t\t\t\t    lowest_addr, (0xffffffff - size) + 1,\n+\t\t\t\t\t    lowest_addr, UP_TO_TOP32 (size),\n \t\t\t\t\t    size, MULTIBOOT_MOD_ALIGN,\n \t\t\t\t\t    GRUB_RELOCATOR_PREFERENCE_NONE, 1);\n     if (err)\ndiff --git a/grub-core/loader/multiboot_elfxx.c b/grub-core/loader/multiboot_elfxx.c\nindex cc6853692..f2318e0d1 100644\n--- a/grub-core/loader/multiboot_elfxx.c\n+++ b/grub-core/loader/multiboot_elfxx.c\n@@ -109,10 +109,10 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)\n       if (load_size > mld->max_addr || mld->min_addr > mld->max_addr - load_size)\n \treturn grub_error (GRUB_ERR_BAD_OS, \"invalid min/max address and/or load size\");\n \n-      err = grub_relocator_alloc_chunk_align (GRUB_MULTIBOOT (relocator), &ch,\n-\t\t\t\t\t      mld->min_addr, mld->max_addr - load_size,\n-\t\t\t\t\t      load_size, mld->align ? mld->align : 1,\n-\t\t\t\t\t      mld->preference, mld->avoid_efi_boot_services);\n+      err = grub_relocator_alloc_chunk_align_safe (GRUB_MULTIBOOT (relocator), &ch,\n+\t\t\t\t\t\t   mld->min_addr, mld->max_addr,\n+\t\t\t\t\t\t   load_size, mld->align ? mld->align : 1,\n+\t\t\t\t\t\t   mld->preference, mld->avoid_efi_boot_services);\n \n       if (err)\n         {\n@@ -256,7 +256,7 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)\n \t    continue;\n \n \t  err = grub_relocator_alloc_chunk_align (GRUB_MULTIBOOT (relocator), &ch, 0,\n-\t\t\t\t\t\t  (0xffffffff - sh->sh_size) + 1,\n+\t\t\t\t\t\t  UP_TO_TOP32 (sh->sh_size),\n \t\t\t\t\t\t  sh->sh_size, sh->sh_addralign,\n \t\t\t\t\t\t  GRUB_RELOCATOR_PREFERENCE_NONE,\n \t\t\t\t\t\t  mld->avoid_efi_boot_services);\ndiff --git a/grub-core/loader/multiboot_mbi2.c b/grub-core/loader/multiboot_mbi2.c\nindex 0efc66062..03967839c 100644\n--- a/grub-core/loader/multiboot_mbi2.c\n+++ b/grub-core/loader/multiboot_mbi2.c\n@@ -295,10 +295,10 @@ grub_multiboot2_load (grub_file_t file, const char *filename)\n \t      return grub_error (GRUB_ERR_BAD_OS, \"invalid min/max address and/or load size\");\n \t    }\n \n-\t  err = grub_relocator_alloc_chunk_align (grub_multiboot2_relocator, &ch,\n-\t\t\t\t\t\t  mld.min_addr, mld.max_addr - code_size,\n-\t\t\t\t\t\t  code_size, mld.align ? mld.align : 1,\n-\t\t\t\t\t\t  mld.preference, keep_bs);\n+\t  err = grub_relocator_alloc_chunk_align_safe (grub_multiboot2_relocator, &ch,\n+\t\t\t\t\t\t       mld.min_addr, mld.max_addr,\n+\t\t\t\t\t\t       code_size, mld.align ? mld.align : 1,\n+\t\t\t\t\t\t       mld.preference, keep_bs);\n \t}\n       else\n \terr = grub_relocator_alloc_chunk_addr (grub_multiboot2_relocator,\n@@ -708,7 +708,7 @@ grub_multiboot2_make_mbi (grub_uint32_t *target)\n   COMPILE_TIME_ASSERT (MULTIBOOT_TAG_ALIGN % sizeof (grub_properly_aligned_t) == 0);\n \n   err = grub_relocator_alloc_chunk_align (grub_multiboot2_relocator, &ch,\n-\t\t\t\t\t  0, 0xffffffff - bufsize,\n+\t\t\t\t\t  0, UP_TO_TOP32 (bufsize),\n \t\t\t\t\t  bufsize, MULTIBOOT_TAG_ALIGN,\n \t\t\t\t\t  GRUB_RELOCATOR_PREFERENCE_NONE, 1);\n   if (err)\ndiff --git a/grub-core/loader/xnu_resume.c b/grub-core/loader/xnu_resume.c\nindex 8089804d4..d648ef0cd 100644\n--- a/grub-core/loader/xnu_resume.c\n+++ b/grub-core/loader/xnu_resume.c\n@@ -129,7 +129,7 @@ grub_xnu_resume (char *imagename)\n   {\n     grub_relocator_chunk_t ch;\n     err = grub_relocator_alloc_chunk_align (grub_xnu_relocator, &ch, 0,\n-\t\t\t\t\t    (0xffffffff - hibhead.image_size) + 1,\n+\t\t\t\t\t    UP_TO_TOP32 (hibhead.image_size),\n \t\t\t\t\t    hibhead.image_size,\n \t\t\t\t\t    GRUB_XNU_PAGESIZE,\n \t\t\t\t\t    GRUB_RELOCATOR_PREFERENCE_NONE, 0);\ndiff --git a/include/grub/relocator.h b/include/grub/relocator.h\nindex 24d8672d2..1b3bdd92a 100644\n--- a/include/grub/relocator.h\n+++ b/include/grub/relocator.h\n@@ -49,6 +49,35 @@ grub_relocator_alloc_chunk_align (struct grub_relocator *rel,\n \t\t\t\t  int preference,\n \t\t\t\t  int avoid_efi_boot_services);\n \n+/*\n+ * Wrapper for grub_relocator_alloc_chunk_align() with purpose of\n+ * protecting against integer underflow.\n+ *\n+ * Compare to its callee, max_addr has different meaning here.\n+ * It covers entire chunk and not just start address of the chunk.\n+ */\n+static inline grub_err_t\n+grub_relocator_alloc_chunk_align_safe (struct grub_relocator *rel,\n+\t\t\t\t       grub_relocator_chunk_t *out,\n+\t\t\t\t       grub_phys_addr_t min_addr,\n+\t\t\t\t       grub_phys_addr_t max_addr,\n+\t\t\t\t       grub_size_t size, grub_size_t align,\n+\t\t\t\t       int preference,\n+\t\t\t\t       int avoid_efi_boot_services)\n+{\n+  /* Sanity check and ensure following equation (max_addr - size) is safe. */\n+  if (max_addr < size || (max_addr - size) < min_addr)\n+    return GRUB_ERR_OUT_OF_RANGE;\n+\n+  return grub_relocator_alloc_chunk_align (rel, out, min_addr,\n+\t\t\t\t\t   max_addr - size,\n+\t\t\t\t\t   size, align, preference,\n+\t\t\t\t\t   avoid_efi_boot_services);\n+}\n+\n+/* Top 32-bit address minus s bytes and plus 1 byte. */\n+#define UP_TO_TOP32(s)\t((~(s) & 0xffffffff) + 1)\n+\n #define GRUB_RELOCATOR_PREFERENCE_NONE 0\n #define GRUB_RELOCATOR_PREFERENCE_LOW 1\n #define GRUB_RELOCATOR_PREFERENCE_HIGH 2\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0018-script-Remove-unused-fields-from-grub_script_functio.patch",
    "content": "From 73aa0776457066ee6ebc93486c3cf0e6b755d1b8 Mon Sep 17 00:00:00 2001\nFrom: Chris Coulson <chris.coulson@canonical.com>\nDate: Fri, 10 Jul 2020 11:21:14 +0100\nSubject: [PATCH] script: Remove unused fields from grub_script_function\n struct\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSigned-off-by: Chris Coulson <chris.coulson@canonical.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n include/grub/script_sh.h | 5 -----\n 1 file changed, 5 deletions(-)\n\ndiff --git a/include/grub/script_sh.h b/include/grub/script_sh.h\nindex 360c2be1f..b382bcf09 100644\n--- a/include/grub/script_sh.h\n+++ b/include/grub/script_sh.h\n@@ -359,13 +359,8 @@ struct grub_script_function\n   /* The script function.  */\n   struct grub_script *func;\n \n-  /* The flags.  */\n-  unsigned flags;\n-\n   /* The next element.  */\n   struct grub_script_function *next;\n-\n-  int references;\n };\n typedef struct grub_script_function *grub_script_function_t;\n \n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0019-script-Avoid-a-use-after-free-when-redefining-a-func.patch",
    "content": "From 26349fcf80982b4d0120b73b2836e88bcf16853c Mon Sep 17 00:00:00 2001\nFrom: Chris Coulson <chris.coulson@canonical.com>\nDate: Fri, 10 Jul 2020 14:41:45 +0100\nSubject: [PATCH] script: Avoid a use-after-free when redefining a\n function during execution\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nDefining a new function with the same name as a previously defined\nfunction causes the grub_script and associated resources for the\nprevious function to be freed. If the previous function is currently\nexecuting when a function with the same name is defined, this results\nin use-after-frees when processing subsequent commands in the original\nfunction.\n\nInstead, reject a new function definition if it has the same name as\na previously defined function, and that function is currently being\nexecuted. Although a behavioural change, this should be backwards\ncompatible with existing configurations because they can't be\ndependent on the current behaviour without being broken.\n\nFixes: CVE-2020-15706\n\nSigned-off-by: Chris Coulson <chris.coulson@canonical.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/script/execute.c  |  2 ++\n grub-core/script/function.c | 16 +++++++++++++---\n grub-core/script/parser.y   |  3 ++-\n include/grub/script_sh.h    |  2 ++\n 4 files changed, 19 insertions(+), 4 deletions(-)\n\ndiff --git a/grub-core/script/execute.c b/grub-core/script/execute.c\nindex c8d6806fe..7e028e135 100644\n--- a/grub-core/script/execute.c\n+++ b/grub-core/script/execute.c\n@@ -838,7 +838,9 @@ grub_script_function_call (grub_script_function_t func, int argc, char **args)\n   old_scope = scope;\n   scope = &new_scope;\n \n+  func->executing++;\n   ret = grub_script_execute (func->func);\n+  func->executing--;\n \n   function_return = 0;\n   active_loops = loops;\ndiff --git a/grub-core/script/function.c b/grub-core/script/function.c\nindex d36655e51..3aad04bf9 100644\n--- a/grub-core/script/function.c\n+++ b/grub-core/script/function.c\n@@ -34,6 +34,7 @@ grub_script_function_create (struct grub_script_arg *functionname_arg,\n   func = (grub_script_function_t) grub_malloc (sizeof (*func));\n   if (! func)\n     return 0;\n+  func->executing = 0;\n \n   func->name = grub_strdup (functionname_arg->str);\n   if (! func->name)\n@@ -60,10 +61,19 @@ grub_script_function_create (struct grub_script_arg *functionname_arg,\n       grub_script_function_t q;\n \n       q = *p;\n-      grub_script_free (q->func);\n-      q->func = cmd;\n       grub_free (func);\n-      func = q;\n+      if (q->executing > 0)\n+        {\n+          grub_error (GRUB_ERR_BAD_ARGUMENT,\n+\t\t      N_(\"attempt to redefine a function being executed\"));\n+          func = NULL;\n+        }\n+      else\n+        {\n+          grub_script_free (q->func);\n+          q->func = cmd;\n+          func = q;\n+        }\n     }\n   else\n     {\ndiff --git a/grub-core/script/parser.y b/grub-core/script/parser.y\nindex 4f0ab8319..f80b86b6f 100644\n--- a/grub-core/script/parser.y\n+++ b/grub-core/script/parser.y\n@@ -289,7 +289,8 @@ function: \"function\" \"name\"\n \t      grub_script_mem_free (state->func_mem);\n \t    else {\n \t      script->children = state->scripts;\n-\t      grub_script_function_create ($2, script);\n+\t      if (!grub_script_function_create ($2, script))\n+\t\tgrub_script_free (script);\n \t    }\n \n \t    state->scripts = $<scripts>3;\ndiff --git a/include/grub/script_sh.h b/include/grub/script_sh.h\nindex b382bcf09..6c48e0751 100644\n--- a/include/grub/script_sh.h\n+++ b/include/grub/script_sh.h\n@@ -361,6 +361,8 @@ struct grub_script_function\n \n   /* The next element.  */\n   struct grub_script_function *next;\n+\n+  unsigned executing;\n };\n typedef struct grub_script_function *grub_script_function_t;\n \n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0020-relocator-Fix-grub_relocator_alloc_chunk_align-top-m.patch",
    "content": "From 06aa91f79f902752cb7e5d22ac0ea8e13bffd056 Mon Sep 17 00:00:00 2001\nFrom: Alexey Makhalov <amakhalov@vmware.com>\nDate: Fri, 17 Jul 2020 05:17:26 +0000\nSubject: [PATCH] relocator: Fix grub_relocator_alloc_chunk_align() top\n memory allocation\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nCurrent implementation of grub_relocator_alloc_chunk_align()\ndoes not allow allocation of the top byte.\n\nAssuming input args are:\n  max_addr = 0xfffff000;\n  size = 0x1000;\n\nAnd this is valid. But following overflow protection will\nunnecessarily move max_addr one byte down (to 0xffffefff):\n  if (max_addr > ~size)\n    max_addr = ~size;\n\n~size + 1 will fix the situation. In addition, check size\nfor non zero to do not zero max_addr.\n\nSigned-off-by: Alexey Makhalov <amakhalov@vmware.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/lib/relocator.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/lib/relocator.c b/grub-core/lib/relocator.c\nindex 5847aac36..f2c1944c2 100644\n--- a/grub-core/lib/relocator.c\n+++ b/grub-core/lib/relocator.c\n@@ -1386,8 +1386,8 @@ grub_relocator_alloc_chunk_align (struct grub_relocator *rel,\n   };\n   grub_addr_t min_addr2 = 0, max_addr2;\n \n-  if (max_addr > ~size)\n-    max_addr = ~size;\n+  if (size && (max_addr > ~size))\n+    max_addr = ~size + 1;\n \n #ifdef GRUB_MACHINE_PCBIOS\n   if (min_addr < 0x1000)\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0021-hfsplus-Fix-two-more-overflows.patch",
    "content": "From feec993673d8e13fcf22fe2389ac29222b6daebd Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Sun, 19 Jul 2020 14:43:31 -0400\nSubject: [PATCH] hfsplus: Fix two more overflows\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nBoth node->size and node->namelen come from the supplied filesystem,\nwhich may be user-supplied. We can't trust them for the math unless we\nknow they don't overflow. Making sure they go through grub_add() or\ngrub_calloc() first will give us that.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nReviewed-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/hfsplus.c | 11 ++++++++---\n 1 file changed, 8 insertions(+), 3 deletions(-)\n\ndiff --git a/grub-core/fs/hfsplus.c b/grub-core/fs/hfsplus.c\nindex dae43becc..9c4e4c88c 100644\n--- a/grub-core/fs/hfsplus.c\n+++ b/grub-core/fs/hfsplus.c\n@@ -31,6 +31,7 @@\n #include <grub/hfs.h>\n #include <grub/charset.h>\n #include <grub/hfsplus.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -475,8 +476,12 @@ grub_hfsplus_read_symlink (grub_fshelp_node_t node)\n {\n   char *symlink;\n   grub_ssize_t numread;\n+  grub_size_t sz = node->size;\n \n-  symlink = grub_malloc (node->size + 1);\n+  if (grub_add (sz, 1, &sz))\n+    return NULL;\n+\n+  symlink = grub_malloc (sz);\n   if (!symlink)\n     return 0;\n \n@@ -715,8 +720,8 @@ list_nodes (void *record, void *hook_arg)\n   if (type == GRUB_FSHELP_UNKNOWN)\n     return 0;\n \n-  filename = grub_malloc (grub_be_to_cpu16 (catkey->namelen)\n-\t\t\t  * GRUB_MAX_UTF8_PER_UTF16 + 1);\n+  filename = grub_calloc (grub_be_to_cpu16 (catkey->namelen),\n+\t\t\t  GRUB_MAX_UTF8_PER_UTF16 + 1);\n   if (! filename)\n     return 0;\n \n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0022-lvm-Fix-two-more-potential-data-dependent-alloc-over.patch",
    "content": "From a1845e90fc19fb5e904091bad8a378f458798e4a Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Sun, 19 Jul 2020 15:48:20 -0400\nSubject: [PATCH] lvm: Fix two more potential data-dependent alloc\n overflows\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nIt appears to be possible to make a (possibly invalid) lvm PV with\na metadata size field that overflows our type when adding it to the\naddress we've allocated. Even if it doesn't, it may be possible to do so\nwith the math using the outcome of that as an operand. Check them both.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/disk/lvm.c | 48 ++++++++++++++++++++++++++++++++++++--------\n 1 file changed, 40 insertions(+), 8 deletions(-)\n\ndiff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c\nindex d1df640b3..139fafd47 100644\n--- a/grub-core/disk/lvm.c\n+++ b/grub-core/disk/lvm.c\n@@ -25,6 +25,7 @@\n #include <grub/lvm.h>\n #include <grub/partition.h>\n #include <grub/i18n.h>\n+#include <grub/safemath.h>\n \n #ifdef GRUB_UTIL\n #include <grub/emu/misc.h>\n@@ -102,10 +103,11 @@ grub_lvm_detect (grub_disk_t disk,\n {\n   grub_err_t err;\n   grub_uint64_t mda_offset, mda_size;\n+  grub_size_t ptr;\n   char buf[GRUB_LVM_LABEL_SIZE];\n   char vg_id[GRUB_LVM_ID_STRLEN+1];\n   char pv_id[GRUB_LVM_ID_STRLEN+1];\n-  char *metadatabuf, *p, *q, *vgname;\n+  char *metadatabuf, *p, *q, *mda_end, *vgname;\n   struct grub_lvm_label_header *lh = (struct grub_lvm_label_header *) buf;\n   struct grub_lvm_pv_header *pvh;\n   struct grub_lvm_disk_locn *dlocn;\n@@ -205,19 +207,31 @@ grub_lvm_detect (grub_disk_t disk,\n \t\t   grub_le_to_cpu64 (rlocn->size) -\n \t\t   grub_le_to_cpu64 (mdah->size));\n     }\n-  p = q = metadatabuf + grub_le_to_cpu64 (rlocn->offset);\n \n-  while (*q != ' ' && q < metadatabuf + mda_size)\n-    q++;\n-\n-  if (q == metadatabuf + mda_size)\n+  if (grub_add ((grub_size_t)metadatabuf,\n+\t\t(grub_size_t)grub_le_to_cpu64 (rlocn->offset),\n+\t\t&ptr))\n     {\n+ error_parsing_metadata:\n #ifdef GRUB_UTIL\n       grub_util_info (\"error parsing metadata\");\n #endif\n       goto fail2;\n     }\n \n+  p = q = (char *)ptr;\n+\n+  if (grub_add ((grub_size_t)metadatabuf, (grub_size_t)mda_size, &ptr))\n+    goto error_parsing_metadata;\n+\n+  mda_end = (char *)ptr;\n+\n+  while (*q != ' ' && q < mda_end)\n+    q++;\n+\n+  if (q == mda_end)\n+    goto error_parsing_metadata;\n+\n   vgname_len = q - p;\n   vgname = grub_malloc (vgname_len + 1);\n   if (!vgname)\n@@ -367,8 +381,26 @@ grub_lvm_detect (grub_disk_t disk,\n \t      {\n \t\tconst char *iptr;\n \t\tchar *optr;\n-\t\tlv->fullname = grub_malloc (sizeof (\"lvm/\") - 1 + 2 * vgname_len\n-\t\t\t\t\t    + 1 + 2 * s + 1);\n+\n+\t\t/*\n+\t\t * This is kind of hard to read with our safe (but rather\n+\t\t * baroque) math primatives, but it boils down to:\n+\t\t *\n+\t\t *   sz0 = vgname_len * 2 + 1 +\n+\t\t *         s * 2 + 1 +\n+\t\t *         sizeof (\"lvm/\") - 1;\n+\t\t */\n+\t\tgrub_size_t sz0 = vgname_len, sz1 = s;\n+\n+\t\tif (grub_mul (sz0, 2, &sz0) ||\n+\t\t    grub_add (sz0, 1, &sz0) ||\n+\t\t    grub_mul (sz1, 2, &sz1) ||\n+\t\t    grub_add (sz1, 1, &sz1) ||\n+\t\t    grub_add (sz0, sz1, &sz0) ||\n+\t\t    grub_add (sz0, sizeof (\"lvm/\") - 1, &sz0))\n+\t\t  goto lvs_fail;\n+\n+\t\tlv->fullname = grub_malloc (sz0);\n \t\tif (!lv->fullname)\n \t\t  goto lvs_fail;\n \n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0023-emu-Make-grub_free-NULL-safe.patch",
    "content": "From 320e86747a32e4d46d24ee4b64493741c161da50 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Sun, 19 Jul 2020 16:08:08 -0400\nSubject: [PATCH] emu: Make grub_free(NULL) safe\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe grub_free() implementation in grub-core/kern/mm.c safely handles\nNULL pointers, and code at many places depends on this. We don't know\nthat the same is true on all host OSes, so we need to handle the same\nbehavior in grub-emu's implementation.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nReviewed-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/emu/mm.c | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/grub-core/kern/emu/mm.c b/grub-core/kern/emu/mm.c\nindex 145b01d37..4d1046a21 100644\n--- a/grub-core/kern/emu/mm.c\n+++ b/grub-core/kern/emu/mm.c\n@@ -60,7 +60,8 @@ grub_zalloc (grub_size_t size)\n void\n grub_free (void *ptr)\n {\n-  free (ptr);\n+  if (ptr)\n+    free (ptr);\n }\n \n void *\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0024-efi-Fix-some-malformed-device-path-arithmetic-errors.patch",
    "content": "From c330aa099a38bc5c4d3066954fe35767cc06adb1 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Sun, 19 Jul 2020 16:53:27 -0400\nSubject: [PATCH] efi: Fix some malformed device path arithmetic errors\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSeveral places we take the length of a device path and subtract 4 from\nit, without ever checking that it's >= 4. There are also cases where\nthis kind of malformation will result in unpredictable iteration,\nincluding treating the length from one dp node as the type in the next\nnode. These are all errors, no matter where the data comes from.\n\nThis patch adds a checking macro, GRUB_EFI_DEVICE_PATH_VALID(), which\ncan be used in several places, and makes GRUB_EFI_NEXT_DEVICE_PATH()\nreturn NULL and GRUB_EFI_END_ENTIRE_DEVICE_PATH() evaluate as true when\nthe length is too small. Additionally, it makes several places in the\ncode check for and return errors in these cases.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/efi/efi.c           | 64 +++++++++++++++++++++++++-----\n grub-core/loader/efi/chainloader.c | 13 +++++-\n grub-core/loader/i386/xnu.c        |  9 +++--\n include/grub/efi/api.h             | 14 ++++---\n 4 files changed, 79 insertions(+), 21 deletions(-)\n\ndiff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c\nindex dc31caa21..c97969a65 100644\n--- a/grub-core/kern/efi/efi.c\n+++ b/grub-core/kern/efi/efi.c\n@@ -332,7 +332,7 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)\n \n   dp = dp0;\n \n-  while (1)\n+  while (dp)\n     {\n       grub_efi_uint8_t type = GRUB_EFI_DEVICE_PATH_TYPE (dp);\n       grub_efi_uint8_t subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE (dp);\n@@ -342,9 +342,15 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)\n       if (type == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE\n \t       && subtype == GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE)\n \t{\n-\t  grub_efi_uint16_t len;\n-\t  len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4)\n-\t\t / sizeof (grub_efi_char16_t));\n+\t  grub_efi_uint16_t len = GRUB_EFI_DEVICE_PATH_LENGTH (dp);\n+\n+\t  if (len < 4)\n+\t    {\n+\t      grub_error (GRUB_ERR_OUT_OF_RANGE,\n+\t\t\t  \"malformed EFI Device Path node has length=%d\", len);\n+\t      return NULL;\n+\t    }\n+\t  len = (len - 4) / sizeof (grub_efi_char16_t);\n \t  filesize += GRUB_MAX_UTF8_PER_UTF16 * len + 2;\n \t}\n \n@@ -360,7 +366,7 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)\n   if (!name)\n     return NULL;\n \n-  while (1)\n+  while (dp)\n     {\n       grub_efi_uint8_t type = GRUB_EFI_DEVICE_PATH_TYPE (dp);\n       grub_efi_uint8_t subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE (dp);\n@@ -376,8 +382,15 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)\n \n \t  *p++ = '/';\n \n-\t  len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4)\n-\t\t / sizeof (grub_efi_char16_t));\n+\t  len = GRUB_EFI_DEVICE_PATH_LENGTH (dp);\n+\t  if (len < 4)\n+\t    {\n+\t      grub_error (GRUB_ERR_OUT_OF_RANGE,\n+\t\t\t  \"malformed EFI Device Path node has length=%d\", len);\n+\t      return NULL;\n+\t    }\n+\n+\t  len = (len - 4) / sizeof (grub_efi_char16_t);\n \t  fp = (grub_efi_file_path_device_path_t *) dp;\n \t  /* According to EFI spec Path Name is NULL terminated */\n \t  while (len > 0 && fp->path_name[len - 1] == 0)\n@@ -452,7 +465,26 @@ grub_efi_duplicate_device_path (const grub_efi_device_path_t *dp)\n        ;\n        p = GRUB_EFI_NEXT_DEVICE_PATH (p))\n     {\n-      total_size += GRUB_EFI_DEVICE_PATH_LENGTH (p);\n+      grub_size_t len = GRUB_EFI_DEVICE_PATH_LENGTH (p);\n+\n+      /*\n+       * In the event that we find a node that's completely garbage, for\n+       * example if we get to 0x7f 0x01 0x02 0x00 ... (EndInstance with a size\n+       * of 2), GRUB_EFI_END_ENTIRE_DEVICE_PATH() will be true and\n+       * GRUB_EFI_NEXT_DEVICE_PATH() will return NULL, so we won't continue,\n+       * and neither should our consumers, but there won't be any error raised\n+       * even though the device path is junk.\n+       *\n+       * This keeps us from passing junk down back to our caller.\n+       */\n+      if (len < 4)\n+\t{\n+\t  grub_error (GRUB_ERR_OUT_OF_RANGE,\n+\t\t      \"malformed EFI Device Path node has length=%d\", len);\n+\t  return NULL;\n+\t}\n+\n+      total_size += len;\n       if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (p))\n \tbreak;\n     }\n@@ -497,7 +529,7 @@ dump_vendor_path (const char *type, grub_efi_vendor_device_path_t *vendor)\n void\n grub_efi_print_device_path (grub_efi_device_path_t *dp)\n {\n-  while (1)\n+  while (GRUB_EFI_DEVICE_PATH_VALID (dp))\n     {\n       grub_efi_uint8_t type = GRUB_EFI_DEVICE_PATH_TYPE (dp);\n       grub_efi_uint8_t subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE (dp);\n@@ -909,7 +941,10 @@ grub_efi_compare_device_paths (const grub_efi_device_path_t *dp1,\n     /* Return non-zero.  */\n     return 1;\n \n-  while (1)\n+  if (dp1 == dp2)\n+    return 0;\n+\n+  while (GRUB_EFI_DEVICE_PATH_VALID (dp1) && GRUB_EFI_DEVICE_PATH_VALID (dp2))\n     {\n       grub_efi_uint8_t type1, type2;\n       grub_efi_uint8_t subtype1, subtype2;\n@@ -945,5 +980,14 @@ grub_efi_compare_device_paths (const grub_efi_device_path_t *dp1,\n       dp2 = (grub_efi_device_path_t *) ((char *) dp2 + len2);\n     }\n \n+  /*\n+   * There's no \"right\" answer here, but we probably don't want to call a valid\n+   * dp and an invalid dp equal, so pick one way or the other.\n+   */\n+  if (GRUB_EFI_DEVICE_PATH_VALID (dp1) && !GRUB_EFI_DEVICE_PATH_VALID (dp2))\n+    return 1;\n+  else if (!GRUB_EFI_DEVICE_PATH_VALID (dp1) && GRUB_EFI_DEVICE_PATH_VALID (dp2))\n+    return -1;\n+\n   return 0;\n }\ndiff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c\nindex daf8c6b54..a8d7b9155 100644\n--- a/grub-core/loader/efi/chainloader.c\n+++ b/grub-core/loader/efi/chainloader.c\n@@ -156,9 +156,18 @@ make_file_path (grub_efi_device_path_t *dp, const char *filename)\n \n   size = 0;\n   d = dp;\n-  while (1)\n+  while (d)\n     {\n-      size += GRUB_EFI_DEVICE_PATH_LENGTH (d);\n+      grub_size_t len = GRUB_EFI_DEVICE_PATH_LENGTH (d);\n+\n+      if (len < 4)\n+\t{\n+\t  grub_error (GRUB_ERR_OUT_OF_RANGE,\n+\t\t      \"malformed EFI Device Path node has length=%d\", len);\n+\t  return NULL;\n+\t}\n+\n+      size += len;\n       if ((GRUB_EFI_END_ENTIRE_DEVICE_PATH (d)))\n \tbreak;\n       d = GRUB_EFI_NEXT_DEVICE_PATH (d);\ndiff --git a/grub-core/loader/i386/xnu.c b/grub-core/loader/i386/xnu.c\nindex e9e119259..a70093607 100644\n--- a/grub-core/loader/i386/xnu.c\n+++ b/grub-core/loader/i386/xnu.c\n@@ -515,14 +515,15 @@ grub_cmd_devprop_load (grub_command_t cmd __attribute__ ((unused)),\n \n       devhead = buf;\n       buf = devhead + 1;\n-      dpstart = buf;\n+      dp = dpstart = buf;\n \n-      do\n+      while (GRUB_EFI_DEVICE_PATH_VALID (dp) && buf < bufend)\n \t{\n-\t  dp = buf;\n \t  buf = (char *) buf + GRUB_EFI_DEVICE_PATH_LENGTH (dp);\n+\t  if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp))\n+\t    break;\n+\t  dp = buf;\n \t}\n-      while (!GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp) && buf < bufend);\n \n       dev = grub_xnu_devprop_add_device (dpstart, (char *) buf\n \t\t\t\t\t - (char *) dpstart);\ndiff --git a/include/grub/efi/api.h b/include/grub/efi/api.h\nindex addcbfa8f..cf1355a8c 100644\n--- a/include/grub/efi/api.h\n+++ b/include/grub/efi/api.h\n@@ -625,6 +625,7 @@ typedef struct grub_efi_device_path grub_efi_device_path_protocol_t;\n #define GRUB_EFI_DEVICE_PATH_TYPE(dp)\t\t((dp)->type & 0x7f)\n #define GRUB_EFI_DEVICE_PATH_SUBTYPE(dp)\t((dp)->subtype)\n #define GRUB_EFI_DEVICE_PATH_LENGTH(dp)\t\t((dp)->length)\n+#define GRUB_EFI_DEVICE_PATH_VALID(dp)\t\t((dp) != NULL && GRUB_EFI_DEVICE_PATH_LENGTH (dp) >= 4)\n \n /* The End of Device Path nodes.  */\n #define GRUB_EFI_END_DEVICE_PATH_TYPE\t\t\t(0xff & 0x7f)\n@@ -633,13 +634,16 @@ typedef struct grub_efi_device_path grub_efi_device_path_protocol_t;\n #define GRUB_EFI_END_THIS_DEVICE_PATH_SUBTYPE\t\t0x01\n \n #define GRUB_EFI_END_ENTIRE_DEVICE_PATH(dp)\t\\\n-  (GRUB_EFI_DEVICE_PATH_TYPE (dp) == GRUB_EFI_END_DEVICE_PATH_TYPE \\\n-   && (GRUB_EFI_DEVICE_PATH_SUBTYPE (dp) \\\n-       == GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE))\n+  (!GRUB_EFI_DEVICE_PATH_VALID (dp) || \\\n+   (GRUB_EFI_DEVICE_PATH_TYPE (dp) == GRUB_EFI_END_DEVICE_PATH_TYPE \\\n+    && (GRUB_EFI_DEVICE_PATH_SUBTYPE (dp) \\\n+\t== GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE)))\n \n #define GRUB_EFI_NEXT_DEVICE_PATH(dp)\t\\\n-  ((grub_efi_device_path_t *) ((char *) (dp) \\\n-                               + GRUB_EFI_DEVICE_PATH_LENGTH (dp)))\n+  (GRUB_EFI_DEVICE_PATH_VALID (dp) \\\n+   ? ((grub_efi_device_path_t *) \\\n+      ((char *) (dp) + GRUB_EFI_DEVICE_PATH_LENGTH (dp))) \\\n+   : NULL)\n \n /* Hardware Device Path.  */\n #define GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE\t\t1\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0025-efi-chainloader-Propagate-errors-from-copy_file_path.patch",
    "content": "From fb55bc37dd510911df4eaf649da939f5fafdc7ce Mon Sep 17 00:00:00 2001\nFrom: Daniel Kiper <daniel.kiper@oracle.com>\nDate: Wed, 29 Jul 2020 13:38:31 +0200\nSubject: [PATCH] efi/chainloader: Propagate errors from copy_file_path()\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nWithout any error propagated to the caller, make_file_path()\nwould then try to advance the invalid device path node with\nGRUB_EFI_NEXT_DEVICE_PATH(), which would fail, returning a NULL\npointer that would subsequently be dereferenced. Hence, propagate\nerrors from copy_file_path().\n\nSigned-off-by: Chris Coulson <chris.coulson@canonical.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/loader/efi/chainloader.c | 19 +++++++++++++------\n 1 file changed, 13 insertions(+), 6 deletions(-)\n\ndiff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c\nindex a8d7b9155..7b31c3fb9 100644\n--- a/grub-core/loader/efi/chainloader.c\n+++ b/grub-core/loader/efi/chainloader.c\n@@ -106,7 +106,7 @@ grub_chainloader_boot (void)\n   return grub_errno;\n }\n \n-static void\n+static grub_err_t\n copy_file_path (grub_efi_file_path_device_path_t *fp,\n \t\tconst char *str, grub_efi_uint16_t len)\n {\n@@ -118,7 +118,7 @@ copy_file_path (grub_efi_file_path_device_path_t *fp,\n \n   path_name = grub_calloc (len, GRUB_MAX_UTF16_PER_UTF8 * sizeof (*path_name));\n   if (!path_name)\n-    return;\n+    return grub_error (GRUB_ERR_OUT_OF_MEMORY, \"failed to allocate path buffer\");\n \n   size = grub_utf8_to_utf16 (path_name, len * GRUB_MAX_UTF16_PER_UTF8,\n \t\t\t     (const grub_uint8_t *) str, len, 0);\n@@ -131,6 +131,7 @@ copy_file_path (grub_efi_file_path_device_path_t *fp,\n   fp->path_name[size++] = '\\0';\n   fp->header.length = size * sizeof (grub_efi_char16_t) + sizeof (*fp);\n   grub_free (path_name);\n+  return GRUB_ERR_NONE;\n }\n \n static grub_efi_device_path_t *\n@@ -189,13 +190,19 @@ make_file_path (grub_efi_device_path_t *dp, const char *filename)\n   d = (grub_efi_device_path_t *) ((char *) file_path\n \t\t\t\t  + ((char *) d - (char *) dp));\n   grub_efi_print_device_path (d);\n-  copy_file_path ((grub_efi_file_path_device_path_t *) d,\n-\t\t  dir_start, dir_end - dir_start);\n+  if (copy_file_path ((grub_efi_file_path_device_path_t *) d,\n+\t\t      dir_start, dir_end - dir_start) != GRUB_ERR_NONE)\n+    {\n+ fail:\n+      grub_free (file_path);\n+      return 0;\n+    }\n \n   /* Fill the file path for the file.  */\n   d = GRUB_EFI_NEXT_DEVICE_PATH (d);\n-  copy_file_path ((grub_efi_file_path_device_path_t *) d,\n-\t\t  dir_end + 1, grub_strlen (dir_end + 1));\n+  if (copy_file_path ((grub_efi_file_path_device_path_t *) d,\n+\t\t      dir_end + 1, grub_strlen (dir_end + 1)) != GRUB_ERR_NONE)\n+    goto fail;\n \n   /* Fill the end of device path nodes.  */\n   d = GRUB_EFI_NEXT_DEVICE_PATH (d);\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0026-efi-Fix-use-after-free-in-halt-reboot-path.patch",
    "content": "From 8a6d6299efcffd14c1130942195e6c0d9b50cacd Mon Sep 17 00:00:00 2001\nFrom: Alexey Makhalov <amakhalov@vmware.com>\nDate: Mon, 20 Jul 2020 23:03:05 +0000\nSubject: [PATCH] efi: Fix use-after-free in halt/reboot path\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\ncommit 92bfc33db984 (\"efi: Free malloc regions on exit\")\nintroduced memory freeing in grub_efi_fini(), which is\nused not only by exit path but by halt/reboot one as well.\nAs result of memory freeing, code and data regions used by\nmodules, such as halt, reboot, acpi (used by halt) also got\nfreed. After return to module code, CPU executes, filled\nby UEFI firmware (tested with edk2), 0xAFAFAFAF pattern as\na code. Which leads to #UD exception later.\n\ngrub> halt\n!!!! X64 Exception Type - 06(#UD - Invalid Opcode)  CPU Apic ID - 00000000 !!!!\nRIP  - 0000000003F4EC28, CS  - 0000000000000038, RFLAGS - 0000000000200246\nRAX  - 0000000000000000, RCX - 00000000061DA188, RDX - 0A74C0854DC35D41\nRBX  - 0000000003E10E08, RSP - 0000000007F0F860, RBP - 0000000000000000\nRSI  - 00000000064DB768, RDI - 000000000832C5C3\nR8   - 0000000000000002, R9  - 0000000000000000, R10 - 00000000061E2E52\nR11  - 0000000000000020, R12 - 0000000003EE5C1F, R13 - 00000000061E0FF4\nR14  - 0000000003E10D80, R15 - 00000000061E2F60\nDS   - 0000000000000030, ES  - 0000000000000030, FS  - 0000000000000030\nGS   - 0000000000000030, SS  - 0000000000000030\nCR0  - 0000000080010033, CR2 - 0000000000000000, CR3 - 0000000007C01000\nCR4  - 0000000000000668, CR8 - 0000000000000000\nDR0  - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000\nDR3  - 0000000000000000, DR6 - 00000000FFFF0FF0, DR7 - 0000000000000400\nGDTR - 00000000079EEA98 0000000000000047, LDTR - 0000000000000000\nIDTR - 0000000007598018 0000000000000FFF,   TR - 0000000000000000\nFXSAVE_STATE - 0000000007F0F4C0\n\nProposal here is to continue to free allocated memory for\nexit boot services path but keep it for halt/reboot path\nas it won't be much security concern here.\nIntroduced GRUB_LOADER_FLAG_EFI_KEEP_ALLOCATED_MEMORY\nloader flag to be used by efi halt/reboot path.\n\nSigned-off-by: Alexey Makhalov <amakhalov@vmware.com>\nReviewed-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/arm/efi/init.c   | 3 +++\n grub-core/kern/arm64/efi/init.c | 3 +++\n grub-core/kern/efi/efi.c        | 3 ++-\n grub-core/kern/efi/init.c       | 1 -\n grub-core/kern/i386/efi/init.c  | 9 +++++++--\n grub-core/kern/ia64/efi/init.c  | 9 +++++++--\n grub-core/kern/riscv/efi/init.c | 3 +++\n grub-core/lib/efi/halt.c        | 3 ++-\n include/grub/loader.h           | 1 +\n 9 files changed, 28 insertions(+), 7 deletions(-)\n\ndiff --git a/grub-core/kern/arm/efi/init.c b/grub-core/kern/arm/efi/init.c\nindex 06df60e2f..40c3b467f 100644\n--- a/grub-core/kern/arm/efi/init.c\n+++ b/grub-core/kern/arm/efi/init.c\n@@ -71,4 +71,7 @@ grub_machine_fini (int flags)\n   efi_call_1 (b->close_event, tmr_evt);\n \n   grub_efi_fini ();\n+\n+  if (!(flags & GRUB_LOADER_FLAG_EFI_KEEP_ALLOCATED_MEMORY))\n+    grub_efi_memory_fini ();\n }\ndiff --git a/grub-core/kern/arm64/efi/init.c b/grub-core/kern/arm64/efi/init.c\nindex 6224999ec..5010caefd 100644\n--- a/grub-core/kern/arm64/efi/init.c\n+++ b/grub-core/kern/arm64/efi/init.c\n@@ -57,4 +57,7 @@ grub_machine_fini (int flags)\n     return;\n \n   grub_efi_fini ();\n+\n+  if (!(flags & GRUB_LOADER_FLAG_EFI_KEEP_ALLOCATED_MEMORY))\n+    grub_efi_memory_fini ();\n }\ndiff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c\nindex c97969a65..9cfd88d77 100644\n--- a/grub-core/kern/efi/efi.c\n+++ b/grub-core/kern/efi/efi.c\n@@ -157,7 +157,8 @@ grub_efi_get_loaded_image (grub_efi_handle_t image_handle)\n void\n grub_reboot (void)\n {\n-  grub_machine_fini (GRUB_LOADER_FLAG_NORETURN);\n+  grub_machine_fini (GRUB_LOADER_FLAG_NORETURN |\n+\t\t     GRUB_LOADER_FLAG_EFI_KEEP_ALLOCATED_MEMORY);\n   efi_call_4 (grub_efi_system_table->runtime_services->reset_system,\n               GRUB_EFI_RESET_COLD, GRUB_EFI_SUCCESS, 0, NULL);\n   for (;;) ;\ndiff --git a/grub-core/kern/efi/init.c b/grub-core/kern/efi/init.c\nindex 3dfdf2d22..2c31847bf 100644\n--- a/grub-core/kern/efi/init.c\n+++ b/grub-core/kern/efi/init.c\n@@ -80,5 +80,4 @@ grub_efi_fini (void)\n {\n   grub_efidisk_fini ();\n   grub_console_fini ();\n-  grub_efi_memory_fini ();\n }\ndiff --git a/grub-core/kern/i386/efi/init.c b/grub-core/kern/i386/efi/init.c\nindex da499aba0..deb2eacd8 100644\n--- a/grub-core/kern/i386/efi/init.c\n+++ b/grub-core/kern/i386/efi/init.c\n@@ -39,6 +39,11 @@ grub_machine_init (void)\n void\n grub_machine_fini (int flags)\n {\n-  if (flags & GRUB_LOADER_FLAG_NORETURN)\n-    grub_efi_fini ();\n+  if (!(flags & GRUB_LOADER_FLAG_NORETURN))\n+    return;\n+\n+  grub_efi_fini ();\n+\n+  if (!(flags & GRUB_LOADER_FLAG_EFI_KEEP_ALLOCATED_MEMORY))\n+    grub_efi_memory_fini ();\n }\ndiff --git a/grub-core/kern/ia64/efi/init.c b/grub-core/kern/ia64/efi/init.c\nindex b5ecbd091..f1965571b 100644\n--- a/grub-core/kern/ia64/efi/init.c\n+++ b/grub-core/kern/ia64/efi/init.c\n@@ -70,6 +70,11 @@ grub_machine_init (void)\n void\n grub_machine_fini (int flags)\n {\n-  if (flags & GRUB_LOADER_FLAG_NORETURN)\n-    grub_efi_fini ();\n+  if (!(flags & GRUB_LOADER_FLAG_NORETURN))\n+    return;\n+\n+  grub_efi_fini ();\n+\n+  if (!(flags & GRUB_LOADER_FLAG_EFI_KEEP_ALLOCATED_MEMORY))\n+    grub_efi_memory_fini ();\n }\ndiff --git a/grub-core/kern/riscv/efi/init.c b/grub-core/kern/riscv/efi/init.c\nindex 7eb1969d0..38795fe67 100644\n--- a/grub-core/kern/riscv/efi/init.c\n+++ b/grub-core/kern/riscv/efi/init.c\n@@ -73,4 +73,7 @@ grub_machine_fini (int flags)\n     return;\n \n   grub_efi_fini ();\n+\n+  if (!(flags & GRUB_LOADER_FLAG_EFI_KEEP_ALLOCATED_MEMORY))\n+    grub_efi_memory_fini ();\n }\ndiff --git a/grub-core/lib/efi/halt.c b/grub-core/lib/efi/halt.c\nindex 5859f0498..29d413641 100644\n--- a/grub-core/lib/efi/halt.c\n+++ b/grub-core/lib/efi/halt.c\n@@ -28,7 +28,8 @@\n void\n grub_halt (void)\n {\n-  grub_machine_fini (GRUB_LOADER_FLAG_NORETURN);\n+  grub_machine_fini (GRUB_LOADER_FLAG_NORETURN |\n+\t\t     GRUB_LOADER_FLAG_EFI_KEEP_ALLOCATED_MEMORY);\n #if !defined(__ia64__) && !defined(__arm__) && !defined(__aarch64__) && \\\n     !defined(__riscv)\n   grub_acpi_halt ();\ndiff --git a/include/grub/loader.h b/include/grub/loader.h\nindex 7f82a499f..b20864282 100644\n--- a/include/grub/loader.h\n+++ b/include/grub/loader.h\n@@ -33,6 +33,7 @@ enum\n {\n   GRUB_LOADER_FLAG_NORETURN = 1,\n   GRUB_LOADER_FLAG_PXE_NOT_UNLOAD = 2,\n+  GRUB_LOADER_FLAG_EFI_KEEP_ALLOCATED_MEMORY = 4,\n };\n \n void EXPORT_FUNC (grub_loader_set) (grub_err_t (*boot) (void),\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0027-loader-linux-Avoid-overflow-on-initrd-size-calculati.patch",
    "content": "From a2a7464e9f10a677d6f91e1c4fa527d084c22e7c Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Fri, 24 Jul 2020 13:57:27 -0400\nSubject: [PATCH] loader/linux: Avoid overflow on initrd size calculation\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/loader/linux.c | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/grub-core/loader/linux.c b/grub-core/loader/linux.c\nindex 471b214d6..4cd8c20c7 100644\n--- a/grub-core/loader/linux.c\n+++ b/grub-core/loader/linux.c\n@@ -151,8 +151,7 @@ grub_initrd_init (int argc, char *argv[],\n   initrd_ctx->nfiles = 0;\n   initrd_ctx->components = 0;\n \n-  initrd_ctx->components = grub_zalloc (argc\n-\t\t\t\t\t* sizeof (initrd_ctx->components[0]));\n+  initrd_ctx->components = grub_calloc (argc, sizeof (initrd_ctx->components[0]));\n   if (!initrd_ctx->components)\n     return grub_errno;\n \n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0028-linux-Fix-integer-overflows-in-initrd-size-handling.patch",
    "content": "From 0367e7d1b9bac3a78608a672bf6e4ace6a28b964 Mon Sep 17 00:00:00 2001\nFrom: Colin Watson <cjwatson@debian.org>\nDate: Sat, 25 Jul 2020 12:15:37 +0100\nSubject: [PATCH] linux: Fix integer overflows in initrd size handling\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThese could be triggered by a crafted filesystem with very large files.\n\nFixes: CVE-2020-15707\n\nSigned-off-by: Colin Watson <cjwatson@debian.org>\nReviewed-by: Jan Setje-Eilers <jan.setjeeilers@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/loader/linux.c | 74 +++++++++++++++++++++++++++++-----------\n 1 file changed, 54 insertions(+), 20 deletions(-)\n\ndiff --git a/grub-core/loader/linux.c b/grub-core/loader/linux.c\nindex 4cd8c20c7..3fe390f17 100644\n--- a/grub-core/loader/linux.c\n+++ b/grub-core/loader/linux.c\n@@ -4,6 +4,7 @@\n #include <grub/misc.h>\n #include <grub/file.h>\n #include <grub/mm.h>\n+#include <grub/safemath.h>\n \n struct newc_head\n {\n@@ -98,13 +99,13 @@ free_dir (struct dir *root)\n   grub_free (root);\n }\n \n-static grub_size_t\n+static grub_err_t\n insert_dir (const char *name, struct dir **root,\n-\t    grub_uint8_t *ptr)\n+\t    grub_uint8_t *ptr, grub_size_t *size)\n {\n   struct dir *cur, **head = root;\n   const char *cb, *ce = name;\n-  grub_size_t size = 0;\n+  *size = 0;\n   while (1)\n     {\n       for (cb = ce; *cb == '/'; cb++);\n@@ -130,14 +131,22 @@ insert_dir (const char *name, struct dir **root,\n \t      ptr = make_header (ptr, name, ce - name,\n \t\t\t\t 040777, 0);\n \t    }\n-\t  size += ALIGN_UP ((ce - (char *) name)\n-\t\t\t    + sizeof (struct newc_head), 4);\n+\t  if (grub_add (*size,\n+\t\t        ALIGN_UP ((ce - (char *) name)\n+\t\t\t\t  + sizeof (struct newc_head), 4),\n+\t\t\tsize))\n+\t    {\n+\t      grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n+\t      grub_free (n->name);\n+\t      grub_free (n);\n+\t      return grub_errno;\n+\t    }\n \t  *head = n;\n \t  cur = n;\n \t}\n       root = &cur->next;\n     }\n-  return size;\n+  return GRUB_ERR_NONE;\n }\n \n grub_err_t\n@@ -172,26 +181,33 @@ grub_initrd_init (int argc, char *argv[],\n \t  eptr = grub_strchr (ptr, ':');\n \t  if (eptr)\n \t    {\n+\t      grub_size_t dir_size, name_len;\n+\n \t      initrd_ctx->components[i].newc_name = grub_strndup (ptr, eptr - ptr);\n-\t      if (!initrd_ctx->components[i].newc_name)\n+\t      if (!initrd_ctx->components[i].newc_name ||\n+\t\t  insert_dir (initrd_ctx->components[i].newc_name, &root, 0,\n+\t\t\t      &dir_size))\n \t\t{\n \t\t  grub_initrd_close (initrd_ctx);\n \t\t  return grub_errno;\n \t\t}\n-\t      initrd_ctx->size\n-\t\t+= ALIGN_UP (sizeof (struct newc_head)\n-\t\t\t    + grub_strlen (initrd_ctx->components[i].newc_name),\n-\t\t\t     4);\n-\t      initrd_ctx->size += insert_dir (initrd_ctx->components[i].newc_name,\n-\t\t\t\t\t      &root, 0);\n+\t      name_len = grub_strlen (initrd_ctx->components[i].newc_name);\n+\t      if (grub_add (initrd_ctx->size,\n+\t\t\t    ALIGN_UP (sizeof (struct newc_head) + name_len, 4),\n+\t\t\t    &initrd_ctx->size) ||\n+\t\t  grub_add (initrd_ctx->size, dir_size, &initrd_ctx->size))\n+\t\tgoto overflow;\n \t      newc = 1;\n \t      fname = eptr + 1;\n \t    }\n \t}\n       else if (newc)\n \t{\n-\t  initrd_ctx->size += ALIGN_UP (sizeof (struct newc_head)\n-\t\t\t\t\t+ sizeof (\"TRAILER!!!\") - 1, 4);\n+\t  if (grub_add (initrd_ctx->size,\n+\t\t\tALIGN_UP (sizeof (struct newc_head)\n+\t\t\t\t  + sizeof (\"TRAILER!!!\") - 1, 4),\n+\t\t\t&initrd_ctx->size))\n+\t    goto overflow;\n \t  free_dir (root);\n \t  root = 0;\n \t  newc = 0;\n@@ -207,19 +223,29 @@ grub_initrd_init (int argc, char *argv[],\n       initrd_ctx->nfiles++;\n       initrd_ctx->components[i].size\n \t= grub_file_size (initrd_ctx->components[i].file);\n-      initrd_ctx->size += initrd_ctx->components[i].size;\n+      if (grub_add (initrd_ctx->size, initrd_ctx->components[i].size,\n+\t\t    &initrd_ctx->size))\n+\tgoto overflow;\n     }\n \n   if (newc)\n     {\n       initrd_ctx->size = ALIGN_UP (initrd_ctx->size, 4);\n-      initrd_ctx->size += ALIGN_UP (sizeof (struct newc_head)\n-\t\t\t\t    + sizeof (\"TRAILER!!!\") - 1, 4);\n+      if (grub_add (initrd_ctx->size,\n+\t\t    ALIGN_UP (sizeof (struct newc_head)\n+\t\t\t      + sizeof (\"TRAILER!!!\") - 1, 4),\n+\t\t    &initrd_ctx->size))\n+\tgoto overflow;\n       free_dir (root);\n       root = 0;\n     }\n   \n   return GRUB_ERR_NONE;\n+\n+ overflow:\n+  free_dir (root);\n+  grub_initrd_close (initrd_ctx);\n+  return grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n }\n \n grub_size_t\n@@ -260,8 +286,16 @@ grub_initrd_load (struct grub_linux_initrd_context *initrd_ctx,\n \n       if (initrd_ctx->components[i].newc_name)\n \t{\n-\t  ptr += insert_dir (initrd_ctx->components[i].newc_name,\n-\t\t\t     &root, ptr);\n+\t  grub_size_t dir_size;\n+\n+\t  if (insert_dir (initrd_ctx->components[i].newc_name, &root, ptr,\n+\t\t\t  &dir_size))\n+\t    {\n+\t      free_dir (root);\n+\t      grub_initrd_close (initrd_ctx);\n+\t      return grub_errno;\n+\t    }\n+\t  ptr += dir_size;\n \t  ptr = make_header (ptr, initrd_ctx->components[i].newc_name,\n \t\t\t     grub_strlen (initrd_ctx->components[i].newc_name),\n \t\t\t     0100777,\n-- \n2.26.2\n\n"
  },
  {
    "path": "boot/grub2/0029-efi-Make-shim_lock-GUID-and-protocol-type-public.patch",
    "content": "From f76a27996c34900f2c369a8a0d6ac72ae2faa988 Mon Sep 17 00:00:00 2001\nFrom: Daniel Kiper <daniel.kiper@oracle.com>\nDate: Thu, 3 Dec 2020 16:01:45 +0100\nSubject: [PATCH] efi: Make shim_lock GUID and protocol type public\n\nThe GUID will be used to properly detect and report UEFI Secure Boot\nstatus to the x86 Linux kernel. The functionality will be added by\nsubsequent patches. The shim_lock protocol type is made public for\ncompleteness.\n\nAdditionally, fix formatting of four preceding GUIDs.\n\nSigned-off-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Marco A Benatto <mbenatto@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/commands/efi/shim_lock.c | 12 ------------\n include/grub/efi/api.h             | 19 +++++++++++++++----\n 2 files changed, 15 insertions(+), 16 deletions(-)\n\ndiff --git a/grub-core/commands/efi/shim_lock.c b/grub-core/commands/efi/shim_lock.c\nindex 764098c..d8f52d7 100644\n--- a/grub-core/commands/efi/shim_lock.c\n+++ b/grub-core/commands/efi/shim_lock.c\n@@ -27,18 +27,6 @@\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n-#define GRUB_EFI_SHIM_LOCK_GUID \\\n-  { 0x605dab50, 0xe046, 0x4300, \\\n-    { 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23 } \\\n-  }\n-\n-struct grub_efi_shim_lock_protocol\n-{\n-  grub_efi_status_t\n-  (*verify) (void *buffer, grub_uint32_t size);\n-};\n-typedef struct grub_efi_shim_lock_protocol grub_efi_shim_lock_protocol_t;\n-\n static grub_efi_guid_t shim_lock_guid = GRUB_EFI_SHIM_LOCK_GUID;\n static grub_efi_shim_lock_protocol_t *sl;\n \ndiff --git a/include/grub/efi/api.h b/include/grub/efi/api.h\nindex cf1355a..13e5715 100644\n--- a/include/grub/efi/api.h\n+++ b/include/grub/efi/api.h\n@@ -316,22 +316,27 @@\n \n #define GRUB_EFI_SAL_TABLE_GUID \\\n   { 0xeb9d2d32, 0x2d88, 0x11d3, \\\n-      { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \\\n+    { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \\\n   }\n \n #define GRUB_EFI_HCDP_TABLE_GUID \\\n   { 0xf951938d, 0x620b, 0x42ef, \\\n-      { 0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 } \\\n+    { 0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 } \\\n   }\n \n #define GRUB_EFI_DEVICE_TREE_GUID \\\n   { 0xb1b621d5, 0xf19c, 0x41a5, \\\n-      { 0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0 } \\\n+    { 0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0 } \\\n   }\n \n #define GRUB_EFI_VENDOR_APPLE_GUID \\\n   { 0x2B0585EB, 0xD8B8, 0x49A9,\t\\\n-      { 0x8B, 0x8C, 0xE2, 0x1B, 0x01, 0xAE, 0xF2, 0xB7 } \\\n+    { 0x8B, 0x8C, 0xE2, 0x1B, 0x01, 0xAE, 0xF2, 0xB7 } \\\n+  }\n+\n+#define GRUB_EFI_SHIM_LOCK_GUID \\\n+  { 0x605dab50, 0xe046, 0x4300, \\\n+    { 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23 } \\\n   }\n \n struct grub_efi_sal_system_table\n@@ -1689,6 +1694,12 @@ struct grub_efi_block_io\n };\n typedef struct grub_efi_block_io grub_efi_block_io_t;\n \n+struct grub_efi_shim_lock_protocol\n+{\n+  grub_efi_status_t (*verify) (void *buffer, grub_uint32_t size);\n+};\n+typedef struct grub_efi_shim_lock_protocol grub_efi_shim_lock_protocol_t;\n+\n #if (GRUB_TARGET_SIZEOF_VOID_P == 4) || defined (__ia64__) \\\n   || defined (__aarch64__) || defined (__MINGW64__) || defined (__CYGWIN__) \\\n   || defined(__riscv)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0030-efi-Return-grub_efi_status_t-from-grub_efi_get_varia.patch",
    "content": "From 04ae030d0eea8668d4417702d88bf2cf04713d80 Mon Sep 17 00:00:00 2001\nFrom: Daniel Kiper <daniel.kiper@oracle.com>\nDate: Thu, 3 Dec 2020 16:01:46 +0100\nSubject: [PATCH] efi: Return grub_efi_status_t from grub_efi_get_variable()\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis is needed to properly detect and report UEFI Secure Boot status\nto the x86 Linux kernel. The functionality will be added by subsequent\npatches.\n\nSigned-off-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Marco A Benatto <mbenatto@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/commands/efi/efifwsetup.c |  8 ++++----\n grub-core/kern/efi/efi.c            | 16 +++++++++-------\n grub-core/video/efi_gop.c           |  2 +-\n include/grub/efi/efi.h              |  7 ++++---\n 4 files changed, 18 insertions(+), 15 deletions(-)\n\ndiff --git a/grub-core/commands/efi/efifwsetup.c b/grub-core/commands/efi/efifwsetup.c\nindex 7a137a72a..eaca03283 100644\n--- a/grub-core/commands/efi/efifwsetup.c\n+++ b/grub-core/commands/efi/efifwsetup.c\n@@ -38,8 +38,8 @@ grub_cmd_fwsetup (grub_command_t cmd __attribute__ ((unused)),\n   grub_size_t oi_size;\n   grub_efi_guid_t global = GRUB_EFI_GLOBAL_VARIABLE_GUID;\n \n-  old_os_indications = grub_efi_get_variable (\"OsIndications\", &global,\n-\t\t\t\t\t      &oi_size);\n+  grub_efi_get_variable (\"OsIndications\", &global, &oi_size,\n+\t\t\t (void **) &old_os_indications);\n \n   if (old_os_indications != NULL && oi_size == sizeof (os_indications))\n     os_indications |= *old_os_indications;\n@@ -63,8 +63,8 @@ efifwsetup_is_supported (void)\n   grub_size_t oi_size = 0;\n   grub_efi_guid_t global = GRUB_EFI_GLOBAL_VARIABLE_GUID;\n \n-  os_indications_supported = grub_efi_get_variable (\"OsIndicationsSupported\",\n-\t\t\t\t\t\t    &global, &oi_size);\n+  grub_efi_get_variable (\"OsIndicationsSupported\", &global, &oi_size,\n+\t\t\t (void **) &os_indications_supported);\n \n   if (!os_indications_supported)\n     return 0;\ndiff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c\nindex e0165e74c..9403b12cd 100644\n--- a/grub-core/kern/efi/efi.c\n+++ b/grub-core/kern/efi/efi.c\n@@ -223,9 +223,9 @@ grub_efi_set_variable(const char *var, const grub_efi_guid_t *guid,\n   return grub_error (GRUB_ERR_IO, \"could not set EFI variable `%s'\", var);\n }\n \n-void *\n+grub_efi_status_t\n grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,\n-\t\t       grub_size_t *datasize_out)\n+\t\t       grub_size_t *datasize_out, void **data_out)\n {\n   grub_efi_status_t status;\n   grub_efi_uintn_t datasize = 0;\n@@ -234,13 +234,14 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,\n   void *data;\n   grub_size_t len, len16;\n \n+  *data_out = NULL;\n   *datasize_out = 0;\n \n   len = grub_strlen (var);\n   len16 = len * GRUB_MAX_UTF16_PER_UTF8;\n   var16 = grub_calloc (len16 + 1, sizeof (var16[0]));\n   if (!var16)\n-    return NULL;\n+    return GRUB_EFI_OUT_OF_RESOURCES;\n   len16 = grub_utf8_to_utf16 (var16, len16, (grub_uint8_t *) var, len, NULL);\n   var16[len16] = 0;\n \n@@ -251,14 +252,14 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,\n   if (status != GRUB_EFI_BUFFER_TOO_SMALL || !datasize)\n     {\n       grub_free (var16);\n-      return NULL;\n+      return status;\n     }\n \n   data = grub_malloc (datasize);\n   if (!data)\n     {\n       grub_free (var16);\n-      return NULL;\n+      return GRUB_EFI_OUT_OF_RESOURCES;\n     }\n \n   status = efi_call_5 (r->get_variable, var16, guid, NULL, &datasize, data);\n@@ -266,12 +267,13 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,\n \n   if (status == GRUB_EFI_SUCCESS)\n     {\n+      *data_out = data;\n       *datasize_out = datasize;\n-      return data;\n+      return status;\n     }\n \n   grub_free (data);\n-  return NULL;\n+  return status;\n }\n \n #pragma GCC diagnostic ignored \"-Wcast-align\"\ndiff --git a/grub-core/video/efi_gop.c b/grub-core/video/efi_gop.c\nindex be446f8d2..7fe0cdabf 100644\n--- a/grub-core/video/efi_gop.c\n+++ b/grub-core/video/efi_gop.c\n@@ -316,7 +316,7 @@ grub_video_gop_get_edid (struct grub_video_edid_info *edid_info)\n       char edidname[] = \"agp-internal-edid\";\n       grub_size_t datasize;\n       grub_uint8_t *data;\n-      data = grub_efi_get_variable (edidname, &efi_var_guid, &datasize);\n+      grub_efi_get_variable (edidname, &efi_var_guid, &datasize, (void **) &data);\n       if (data && datasize > 16)\n \t{\n \t  copy_size = datasize - 16;\ndiff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h\nindex e90e00dc4..8b2a0f1f5 100644\n--- a/include/grub/efi/efi.h\n+++ b/include/grub/efi/efi.h\n@@ -74,9 +74,10 @@ grub_err_t EXPORT_FUNC (grub_efi_set_virtual_address_map) (grub_efi_uintn_t memo\n \t\t\t\t\t\t\t   grub_efi_uintn_t descriptor_size,\n \t\t\t\t\t\t\t   grub_efi_uint32_t descriptor_version,\n \t\t\t\t\t\t\t   grub_efi_memory_descriptor_t *virtual_map);\n-void *EXPORT_FUNC (grub_efi_get_variable) (const char *variable,\n-\t\t\t\t\t   const grub_efi_guid_t *guid,\n-\t\t\t\t\t   grub_size_t *datasize_out);\n+grub_efi_status_t EXPORT_FUNC (grub_efi_get_variable) (const char *variable,\n+\t\t\t\t\t\t       const grub_efi_guid_t *guid,\n+\t\t\t\t\t\t       grub_size_t *datasize_out,\n+\t\t\t\t\t\t       void **data_out);\n grub_err_t\n EXPORT_FUNC (grub_efi_set_variable) (const char *var,\n \t\t\t\t     const grub_efi_guid_t *guid,\n-- \n2.29.2\n\n"
  },
  {
    "path": "boot/grub2/0031-efi-Add-a-function-to-read-EFI-variables-with-attrib.patch",
    "content": "From ac5c9367548750e75ed1e7fc4354a3d20186d733 Mon Sep 17 00:00:00 2001\nFrom: Daniel Kiper <daniel.kiper@oracle.com>\nDate: Thu, 3 Dec 2020 16:01:47 +0100\nSubject: [PATCH] efi: Add a function to read EFI variables with attributes\n\nIt will be used to properly detect and report UEFI Secure Boot status to\nthe x86 Linux kernel. The functionality will be added by subsequent patches.\n\nSigned-off-by: Ignat Korchagin <ignat@cloudflare.com>\nSigned-off-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Marco A Benatto <mbenatto@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n---\n grub-core/kern/efi/efi.c | 16 +++++++++++++---\n include/grub/efi/efi.h   |  5 +++++\n 2 files changed, 18 insertions(+), 3 deletions(-)\n\ndiff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c\nindex 9403b12cd..2942b8e35 100644\n--- a/grub-core/kern/efi/efi.c\n+++ b/grub-core/kern/efi/efi.c\n@@ -224,8 +224,11 @@ grub_efi_set_variable(const char *var, const grub_efi_guid_t *guid,\n }\n \n grub_efi_status_t\n-grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,\n-\t\t       grub_size_t *datasize_out, void **data_out)\n+grub_efi_get_variable_with_attributes (const char *var,\n+\t\t\t\t       const grub_efi_guid_t *guid,\n+\t\t\t\t       grub_size_t *datasize_out,\n+\t\t\t\t       void **data_out,\n+\t\t\t\t       grub_efi_uint32_t *attributes)\n {\n   grub_efi_status_t status;\n   grub_efi_uintn_t datasize = 0;\n@@ -262,7 +265,7 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,\n       return GRUB_EFI_OUT_OF_RESOURCES;\n     }\n \n-  status = efi_call_5 (r->get_variable, var16, guid, NULL, &datasize, data);\n+  status = efi_call_5 (r->get_variable, var16, guid, attributes, &datasize, data);\n   grub_free (var16);\n \n   if (status == GRUB_EFI_SUCCESS)\n@@ -276,6 +279,13 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,\n   return status;\n }\n \n+grub_efi_status_t\n+grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,\n+\t\t       grub_size_t *datasize_out, void **data_out)\n+{\n+  return grub_efi_get_variable_with_attributes (var, guid, datasize_out, data_out, NULL);\n+}\n+\n #pragma GCC diagnostic ignored \"-Wcast-align\"\n \n /* Search the mods section from the PE32/PE32+ image. This code uses\ndiff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h\nindex 8b2a0f1f5..83d958f99 100644\n--- a/include/grub/efi/efi.h\n+++ b/include/grub/efi/efi.h\n@@ -74,6 +74,11 @@ grub_err_t EXPORT_FUNC (grub_efi_set_virtual_address_map) (grub_efi_uintn_t memo\n \t\t\t\t\t\t\t   grub_efi_uintn_t descriptor_size,\n \t\t\t\t\t\t\t   grub_efi_uint32_t descriptor_version,\n \t\t\t\t\t\t\t   grub_efi_memory_descriptor_t *virtual_map);\n+grub_efi_status_t EXPORT_FUNC (grub_efi_get_variable_with_attributes) (const char *variable,\n+\t\t\t\t\t\t\t\t       const grub_efi_guid_t *guid,\n+\t\t\t\t\t\t\t\t       grub_size_t *datasize_out,\n+\t\t\t\t\t\t\t\t       void **data_out,\n+\t\t\t\t\t\t\t\t       grub_efi_uint32_t *attributes);\n grub_efi_status_t EXPORT_FUNC (grub_efi_get_variable) (const char *variable,\n \t\t\t\t\t\t       const grub_efi_guid_t *guid,\n \t\t\t\t\t\t       grub_size_t *datasize_out,\n-- \n2.29.2\n\n"
  },
  {
    "path": "boot/grub2/0032-efi-Add-secure-boot-detection.patch",
    "content": "From d7e54b2e5feee95d2f83058ed30d883c450d1473 Mon Sep 17 00:00:00 2001\nFrom: Daniel Kiper <daniel.kiper@oracle.com>\nDate: Thu, 3 Dec 2020 16:01:48 +0100\nSubject: [PATCH] efi: Add secure boot detection\n\nIntroduce grub_efi_get_secureboot() function which returns whether\nUEFI Secure Boot is enabled or not on UEFI systems.\n\nSigned-off-by: Ignat Korchagin <ignat@cloudflare.com>\nSigned-off-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Marco A Benatto <mbenatto@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n[Add changes to generated files]\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/Makefile.am       |   1 +\n grub-core/Makefile.core.am  |  14 +++---\n grub-core/Makefile.core.def |   1 +\n grub-core/Makefile.in       | 102 ++++++++++++++++++++++++++---------------\n grub-core/kern/efi/sb.c     | 109 ++++++++++++++++++++++++++++++++++++++++++++\n include/grub/efi/sb.h       |  40 ++++++++++++++++\n po/POTFILES.in              |   2 +\n 7 files changed, 225 insertions(+), 44 deletions(-)\n create mode 100644 grub-core/kern/efi/sb.c\n create mode 100644 include/grub/efi/sb.h\n\ndiff --git a/grub-core/Makefile.am b/grub-core/Makefile.am\nindex 3ea8e7f..c6ba5b2 100644\n--- a/grub-core/Makefile.am\n+++ b/grub-core/Makefile.am\n@@ -71,6 +71,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/command.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/device.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/disk.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/dl.h\n+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/sb.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/env.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/env_private.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/err.h\ndiff --git a/grub-core/Makefile.core.am b/grub-core/Makefile.core.am\nindex a217716..f28b753 100644\n--- a/grub-core/Makefile.core.am\n+++ b/grub-core/Makefile.core.am\n@@ -22421,7 +22421,7 @@ endif\n if COND_i386_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/efi/startup.S \n-kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/i386/efi/init.c bus/pci.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/i386/efi/init.c bus/pci.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22531,7 +22531,7 @@ endif\n if COND_x86_64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/x86_64/efi/startup.S \n-kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/x86_64/efi/callwrap.S kern/i386/efi/init.c bus/pci.c kern/x86_64/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/x86_64/efi/callwrap.S kern/i386/efi/init.c bus/pci.c kern/x86_64/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22707,7 +22707,7 @@ endif\n if COND_ia64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = \n-kernel_exec_SOURCES += kern/ia64/efi/startup.S kern/ia64/efi/init.c kern/ia64/dl.c kern/ia64/dl_helper.c kern/ia64/cache.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/ia64/efi/startup.S kern/ia64/efi/init.c kern/ia64/dl.c kern/ia64/dl_helper.c kern/ia64/cache.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) -fno-builtin -fpic -minline-int-divide-max-throughput \n@@ -22773,7 +22773,7 @@ endif\n if COND_arm_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/arm/efi/startup.S \n-kernel_exec_SOURCES += kern/arm/efi/init.c kern/efi/fdt.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/arm/efi/init.c kern/efi/fdt.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22795,7 +22795,7 @@ endif\n if COND_arm64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/arm64/efi/startup.S \n-kernel_exec_SOURCES += kern/arm64/efi/init.c kern/efi/fdt.c kern/arm64/cache.c kern/arm64/cache_flush.S kern/arm64/dl.c kern/arm64/dl_helper.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/arm64/efi/init.c kern/efi/fdt.c kern/arm64/cache.c kern/arm64/cache_flush.S kern/arm64/dl.c kern/arm64/dl_helper.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22839,7 +22839,7 @@ endif\n if COND_riscv32_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/riscv/efi/startup.S \n-kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22861,7 +22861,7 @@ endif\n if COND_riscv64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/riscv/efi/startup.S \n-kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \ndiff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def\nindex 474a63e..abd26cf 100644\n--- a/grub-core/Makefile.core.def\n+++ b/grub-core/Makefile.core.def\n@@ -203,6 +203,7 @@ kernel = {\n   efi = term/efi/console.c;\n   efi = kern/acpi.c;\n   efi = kern/efi/acpi.c;\n+  efi = kern/efi/sb.c;\n   i386_coreboot = kern/i386/pc/acpi.c;\n   i386_multiboot = kern/i386/pc/acpi.c;\n   i386_coreboot = kern/acpi.c;\ndiff --git a/grub-core/Makefile.in b/grub-core/Makefile.in\nindex d287607..8fb81ee 100644\n--- a/grub-core/Makefile.in\n+++ b/grub-core/Makefile.in\n@@ -10468,32 +10468,33 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n \tkern/arm64/cache_flush.S kern/arm64/dl.c \\\n \tkern/arm64/dl_helper.c disk/efi/efidisk.c kern/efi/efi.c \\\n \tkern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c \\\n-\tkern/efi/acpi.c kern/compiler-rt.c kern/mm.c kern/time.c \\\n-\tkern/generic/millisleep.c kern/command.c kern/corecmd.c \\\n-\tkern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c \\\n-\tkern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c \\\n-\tkern/parser.c kern/partition.c kern/rescue_parser.c \\\n-\tkern/rescue_reader.c kern/term.c kern/arm/startup.S \\\n-\tkern/arm/coreboot/init.c kern/arm/coreboot/timer.c \\\n-\tkern/arm/coreboot/coreboot.S lib/fdt.c bus/fdt.c term/ps2.c \\\n-\tterm/arm/pl050.c term/arm/cros.c term/arm/cros_ec.c \\\n-\tbus/spi/rk3288_spi.c commands/keylayouts.c \\\n-\tkern/arm/coreboot/dma.c kern/arm/coreboot/cbtable.c \\\n-\tvideo/coreboot/cbfb.c kern/coreboot/mmap.c \\\n-\tkern/coreboot/cbtable.c term/gfxterm.c font/font.c \\\n-\tfont/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c \\\n-\tvideo/fb/fbutil.c video/fb/video_fb.c video/video.c \\\n-\tkern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S \\\n-\tkern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S \\\n-\tlib/division.c kern/arm/efi/startup.S kern/arm/efi/init.c \\\n-\tkern/arm/uboot/init.c kern/arm/uboot/uboot.S \\\n-\tdisk/uboot/ubootdisk.c kern/uboot/uboot.c kern/uboot/init.c \\\n-\tkern/uboot/hw.c term/uboot/console.c term/terminfo.c \\\n-\tterm/tparm.c commands/extcmd.c lib/arg.c disk/host.c \\\n-\tkern/emu/cache_s.S kern/emu/hostdisk.c osdep/unix/hostdisk.c \\\n-\tosdep/exec.c osdep/devmapper/hostdisk.c osdep/hostdisk.c \\\n-\tkern/emu/hostfs.c kern/emu/main.c kern/emu/argp_common.c \\\n-\tkern/emu/misc.c kern/emu/mm.c kern/emu/time.c kern/emu/cache.c \\\n+\tkern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c \\\n+\tkern/time.c kern/generic/millisleep.c kern/command.c \\\n+\tkern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c \\\n+\tkern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c \\\n+\tkern/misc.c kern/parser.c kern/partition.c \\\n+\tkern/rescue_parser.c kern/rescue_reader.c kern/term.c \\\n+\tkern/arm/startup.S kern/arm/coreboot/init.c \\\n+\tkern/arm/coreboot/timer.c kern/arm/coreboot/coreboot.S \\\n+\tlib/fdt.c bus/fdt.c term/ps2.c term/arm/pl050.c \\\n+\tterm/arm/cros.c term/arm/cros_ec.c bus/spi/rk3288_spi.c \\\n+\tcommands/keylayouts.c kern/arm/coreboot/dma.c \\\n+\tkern/arm/coreboot/cbtable.c video/coreboot/cbfb.c \\\n+\tkern/coreboot/mmap.c kern/coreboot/cbtable.c term/gfxterm.c \\\n+\tfont/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c \\\n+\tvideo/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c \\\n+\tvideo/video.c kern/arm/dl.c kern/arm/dl_helper.c \\\n+\tkern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c \\\n+\tkern/arm/compiler-rt.S lib/division.c kern/arm/efi/startup.S \\\n+\tkern/arm/efi/init.c kern/arm/uboot/init.c \\\n+\tkern/arm/uboot/uboot.S disk/uboot/ubootdisk.c \\\n+\tkern/uboot/uboot.c kern/uboot/init.c kern/uboot/hw.c \\\n+\tterm/uboot/console.c term/terminfo.c term/tparm.c \\\n+\tcommands/extcmd.c lib/arg.c disk/host.c kern/emu/cache_s.S \\\n+\tkern/emu/hostdisk.c osdep/unix/hostdisk.c osdep/exec.c \\\n+\tosdep/devmapper/hostdisk.c osdep/hostdisk.c kern/emu/hostfs.c \\\n+\tkern/emu/main.c kern/emu/argp_common.c kern/emu/misc.c \\\n+\tkern/emu/mm.c kern/emu/time.c kern/emu/cache.c \\\n \tosdep/emuconsole.c osdep/dl.c osdep/sleep.c osdep/init.c \\\n \tosdep/emunet.c osdep/cputime.c kern/i386/coreboot/startup.S \\\n \tkern/i386/coreboot/init.c kern/i386/pc/acpi.c \\\n@@ -10580,6 +10581,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tterm/efi/kernel_exec-console.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -10651,6 +10653,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tterm/efi/kernel_exec-console.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -10686,6 +10689,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tterm/efi/kernel_exec-console.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -10881,6 +10885,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tterm/efi/kernel_exec-console.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -11109,6 +11114,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tterm/efi/kernel_exec-console.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -11271,6 +11277,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tterm/efi/kernel_exec-console.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -11360,6 +11367,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_TRUE@\tterm/efi/kernel_exec-console.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n+@COND_arm64_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -16380,6 +16388,7 @@ KERNEL_HEADER_FILES = $(top_srcdir)/include/grub/cache.h \\\n \t$(top_srcdir)/include/grub/device.h \\\n \t$(top_srcdir)/include/grub/disk.h \\\n \t$(top_srcdir)/include/grub/dl.h \\\n+\t$(top_srcdir)/include/grub/efi/sb.h \\\n \t$(top_srcdir)/include/grub/env.h \\\n \t$(top_srcdir)/include/grub/env_private.h \\\n \t$(top_srcdir)/include/grub/err.h \\\n@@ -25612,7 +25621,7 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_arm64_efi_TRUE@\tkern/arm64/dl_helper.c disk/efi/efidisk.c \\\n @COND_arm64_efi_TRUE@\tkern/efi/efi.c kern/efi/init.c \\\n @COND_arm64_efi_TRUE@\tkern/efi/mm.c term/efi/console.c \\\n-@COND_arm64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c \\\n+@COND_arm64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c kern/efi/sb.c \\\n @COND_arm64_efi_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n @COND_arm64_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n @COND_arm64_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n@@ -25661,8 +25670,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_arm_efi_TRUE@\tdisk/efi/efidisk.c kern/efi/efi.c \\\n @COND_arm_efi_TRUE@\tkern/efi/init.c kern/efi/mm.c \\\n @COND_arm_efi_TRUE@\tterm/efi/console.c kern/acpi.c \\\n-@COND_arm_efi_TRUE@\tkern/efi/acpi.c kern/compiler-rt.c \\\n-@COND_arm_efi_TRUE@\tkern/mm.c kern/time.c \\\n+@COND_arm_efi_TRUE@\tkern/efi/acpi.c kern/efi/sb.c \\\n+@COND_arm_efi_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n @COND_arm_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n @COND_arm_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n @COND_arm_efi_TRUE@\tkern/dl.c kern/env.c kern/err.c kern/file.c \\\n@@ -25739,7 +25748,7 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_efi_TRUE@\tkern/i386/tsc_pit.c disk/efi/efidisk.c \\\n @COND_i386_efi_TRUE@\tkern/efi/efi.c kern/efi/init.c \\\n @COND_i386_efi_TRUE@\tkern/efi/mm.c term/efi/console.c \\\n-@COND_i386_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c \\\n+@COND_i386_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c kern/efi/sb.c \\\n @COND_i386_efi_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n @COND_i386_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n @COND_i386_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n@@ -25851,7 +25860,7 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_ia64_efi_TRUE@\tlib/division.c disk/efi/efidisk.c \\\n @COND_ia64_efi_TRUE@\tkern/efi/efi.c kern/efi/init.c \\\n @COND_ia64_efi_TRUE@\tkern/efi/mm.c term/efi/console.c \\\n-@COND_ia64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c \\\n+@COND_ia64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c kern/efi/sb.c \\\n @COND_ia64_efi_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n @COND_ia64_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n @COND_ia64_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n@@ -25959,9 +25968,9 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_riscv32_efi_TRUE@\tdisk/efi/efidisk.c kern/efi/efi.c \\\n @COND_riscv32_efi_TRUE@\tkern/efi/init.c kern/efi/mm.c \\\n @COND_riscv32_efi_TRUE@\tterm/efi/console.c kern/acpi.c \\\n-@COND_riscv32_efi_TRUE@\tkern/efi/acpi.c kern/compiler-rt.c \\\n-@COND_riscv32_efi_TRUE@\tkern/mm.c kern/time.c \\\n-@COND_riscv32_efi_TRUE@\tkern/generic/millisleep.c \\\n+@COND_riscv32_efi_TRUE@\tkern/efi/acpi.c kern/efi/sb.c \\\n+@COND_riscv32_efi_TRUE@\tkern/compiler-rt.c kern/mm.c \\\n+@COND_riscv32_efi_TRUE@\tkern/time.c kern/generic/millisleep.c \\\n @COND_riscv32_efi_TRUE@\tkern/command.c kern/corecmd.c \\\n @COND_riscv32_efi_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n @COND_riscv32_efi_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n@@ -25977,8 +25986,9 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_riscv64_efi_TRUE@\tkern/efi/efi.c kern/efi/init.c \\\n @COND_riscv64_efi_TRUE@\tkern/efi/mm.c term/efi/console.c \\\n @COND_riscv64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c \\\n-@COND_riscv64_efi_TRUE@\tkern/compiler-rt.c kern/mm.c \\\n-@COND_riscv64_efi_TRUE@\tkern/time.c kern/generic/millisleep.c \\\n+@COND_riscv64_efi_TRUE@\tkern/efi/sb.c kern/compiler-rt.c \\\n+@COND_riscv64_efi_TRUE@\tkern/mm.c kern/time.c \\\n+@COND_riscv64_efi_TRUE@\tkern/generic/millisleep.c \\\n @COND_riscv64_efi_TRUE@\tkern/command.c kern/corecmd.c \\\n @COND_riscv64_efi_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n @COND_riscv64_efi_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n@@ -26022,7 +26032,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_x86_64_efi_TRUE@\tkern/efi/efi.c kern/efi/init.c \\\n @COND_x86_64_efi_TRUE@\tkern/efi/mm.c term/efi/console.c \\\n @COND_x86_64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c \\\n-@COND_x86_64_efi_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n+@COND_x86_64_efi_TRUE@\tkern/efi/sb.c kern/compiler-rt.c \\\n+@COND_x86_64_efi_TRUE@\tkern/mm.c kern/time.c \\\n @COND_x86_64_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n @COND_x86_64_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n @COND_x86_64_efi_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n@@ -27989,6 +28000,8 @@ kern/kernel_exec-acpi.$(OBJEXT): kern/$(am__dirstamp) \\\n \tkern/$(DEPDIR)/$(am__dirstamp)\n kern/efi/kernel_exec-acpi.$(OBJEXT): kern/efi/$(am__dirstamp) \\\n \tkern/efi/$(DEPDIR)/$(am__dirstamp)\n+kern/efi/kernel_exec-sb.$(OBJEXT): kern/efi/$(am__dirstamp) \\\n+\tkern/efi/$(DEPDIR)/$(am__dirstamp)\n kern/kernel_exec-compiler-rt.$(OBJEXT): kern/$(am__dirstamp) \\\n \tkern/$(DEPDIR)/$(am__dirstamp)\n kern/kernel_exec-mm.$(OBJEXT): kern/$(am__dirstamp) \\\n@@ -30994,6 +31007,7 @@ distclean-compile:\n @AMDEP_TRUE@@am__include@ @am__quote@kern/efi/$(DEPDIR)/kernel_exec-fdt.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/efi/$(DEPDIR)/kernel_exec-init.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/efi/$(DEPDIR)/kernel_exec-mm.Po@am__quote@\n+@AMDEP_TRUE@@am__include@ @am__quote@kern/efi/$(DEPDIR)/kernel_exec-sb.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/emu/$(DEPDIR)/grub_emu-full.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/emu/$(DEPDIR)/grub_emu_lite-lite.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/emu/$(DEPDIR)/kernel_exec-argp_common.Po@am__quote@\n@@ -35285,6 +35299,20 @@ kern/efi/kernel_exec-acpi.obj: kern/efi/acpi.c\n @AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n @am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -c -o kern/efi/kernel_exec-acpi.obj `if test -f 'kern/efi/acpi.c'; then $(CYGPATH_W) 'kern/efi/acpi.c'; else $(CYGPATH_W) '$(srcdir)/kern/efi/acpi.c'; fi`\n \n+kern/efi/kernel_exec-sb.o: kern/efi/sb.c\n+@am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -MT kern/efi/kernel_exec-sb.o -MD -MP -MF kern/efi/$(DEPDIR)/kernel_exec-sb.Tpo -c -o kern/efi/kernel_exec-sb.o `test -f 'kern/efi/sb.c' || echo '$(srcdir)/'`kern/efi/sb.c\n+@am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) kern/efi/$(DEPDIR)/kernel_exec-sb.Tpo kern/efi/$(DEPDIR)/kernel_exec-sb.Po\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\t$(AM_V_CC)source='kern/efi/sb.c' object='kern/efi/kernel_exec-sb.o' libtool=no @AMDEPBACKSLASH@\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n+@am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -c -o kern/efi/kernel_exec-sb.o `test -f 'kern/efi/sb.c' || echo '$(srcdir)/'`kern/efi/sb.c\n+\n+kern/efi/kernel_exec-sb.obj: kern/efi/sb.c\n+@am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -MT kern/efi/kernel_exec-sb.obj -MD -MP -MF kern/efi/$(DEPDIR)/kernel_exec-sb.Tpo -c -o kern/efi/kernel_exec-sb.obj `if test -f 'kern/efi/sb.c'; then $(CYGPATH_W) 'kern/efi/sb.c'; else $(CYGPATH_W) '$(srcdir)/kern/efi/sb.c'; fi`\n+@am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) kern/efi/$(DEPDIR)/kernel_exec-sb.Tpo kern/efi/$(DEPDIR)/kernel_exec-sb.Po\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\t$(AM_V_CC)source='kern/efi/sb.c' object='kern/efi/kernel_exec-sb.obj' libtool=no @AMDEPBACKSLASH@\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n+@am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -c -o kern/efi/kernel_exec-sb.obj `if test -f 'kern/efi/sb.c'; then $(CYGPATH_W) 'kern/efi/sb.c'; else $(CYGPATH_W) '$(srcdir)/kern/efi/sb.c'; fi`\n+\n kern/kernel_exec-compiler-rt.o: kern/compiler-rt.c\n @am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -MT kern/kernel_exec-compiler-rt.o -MD -MP -MF kern/$(DEPDIR)/kernel_exec-compiler-rt.Tpo -c -o kern/kernel_exec-compiler-rt.o `test -f 'kern/compiler-rt.c' || echo '$(srcdir)/'`kern/compiler-rt.c\n @am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) kern/$(DEPDIR)/kernel_exec-compiler-rt.Tpo kern/$(DEPDIR)/kernel_exec-compiler-rt.Po\ndiff --git a/grub-core/kern/efi/sb.c b/grub-core/kern/efi/sb.c\nnew file mode 100644\nindex 0000000..19658d9\n--- /dev/null\n+++ b/grub-core/kern/efi/sb.c\n@@ -0,0 +1,109 @@\n+/*\n+ *  GRUB  --  GRand Unified Bootloader\n+ *  Copyright (C) 2020  Free Software Foundation, Inc.\n+ *\n+ *  GRUB is free software: you can redistribute it and/or modify\n+ *  it under the terms of the GNU General Public License as published by\n+ *  the Free Software Foundation, either version 3 of the License, or\n+ *  (at your option) any later version.\n+ *\n+ *  GRUB is distributed in the hope that it will be useful,\n+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ *  GNU General Public License for more details.\n+ *\n+ *  You should have received a copy of the GNU General Public License\n+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.\n+ *\n+ *  UEFI Secure Boot related checkings.\n+ */\n+\n+#include <grub/efi/efi.h>\n+#include <grub/efi/pe32.h>\n+#include <grub/efi/sb.h>\n+#include <grub/err.h>\n+#include <grub/i386/linux.h>\n+#include <grub/mm.h>\n+#include <grub/types.h>\n+\n+/*\n+ * Determine whether we're in secure boot mode.\n+ *\n+ * Please keep the logic in sync with the Linux kernel,\n+ * drivers/firmware/efi/libstub/secureboot.c:efi_get_secureboot().\n+ */\n+grub_uint8_t\n+grub_efi_get_secureboot (void)\n+{\n+  static grub_efi_guid_t efi_variable_guid = GRUB_EFI_GLOBAL_VARIABLE_GUID;\n+  static grub_efi_guid_t efi_shim_lock_guid = GRUB_EFI_SHIM_LOCK_GUID;\n+  grub_efi_status_t status;\n+  grub_efi_uint32_t attr = 0;\n+  grub_size_t size = 0;\n+  grub_uint8_t *secboot = NULL;\n+  grub_uint8_t *setupmode = NULL;\n+  grub_uint8_t *moksbstate = NULL;\n+  grub_uint8_t secureboot = GRUB_EFI_SECUREBOOT_MODE_UNKNOWN;\n+  const char *secureboot_str = \"UNKNOWN\";\n+\n+  status = grub_efi_get_variable (\"SecureBoot\", &efi_variable_guid,\n+\t\t\t\t  &size, (void **) &secboot);\n+\n+  if (status == GRUB_EFI_NOT_FOUND)\n+    {\n+      secureboot = GRUB_EFI_SECUREBOOT_MODE_DISABLED;\n+      goto out;\n+    }\n+\n+  if (status != GRUB_EFI_SUCCESS)\n+    goto out;\n+\n+  status = grub_efi_get_variable (\"SetupMode\", &efi_variable_guid,\n+\t\t\t\t  &size, (void **) &setupmode);\n+\n+  if (status != GRUB_EFI_SUCCESS)\n+    goto out;\n+\n+  if ((*secboot == 0) || (*setupmode == 1))\n+    {\n+      secureboot = GRUB_EFI_SECUREBOOT_MODE_DISABLED;\n+      goto out;\n+    }\n+\n+  /*\n+   * See if a user has put the shim into insecure mode. If so, and if the\n+   * variable doesn't have the runtime attribute set, we might as well\n+   * honor that.\n+   */\n+  status = grub_efi_get_variable_with_attributes (\"MokSBState\", &efi_shim_lock_guid,\n+\t\t\t\t\t\t  &size, (void **) &moksbstate, &attr);\n+\n+  /* If it fails, we don't care why. Default to secure. */\n+  if (status != GRUB_EFI_SUCCESS)\n+    {\n+      secureboot = GRUB_EFI_SECUREBOOT_MODE_ENABLED;\n+      goto out;\n+    }\n+\n+  if (!(attr & GRUB_EFI_VARIABLE_RUNTIME_ACCESS) && *moksbstate == 1)\n+    {\n+      secureboot = GRUB_EFI_SECUREBOOT_MODE_DISABLED;\n+      goto out;\n+    }\n+\n+  secureboot = GRUB_EFI_SECUREBOOT_MODE_ENABLED;\n+\n+ out:\n+  grub_free (moksbstate);\n+  grub_free (setupmode);\n+  grub_free (secboot);\n+\n+  if (secureboot == GRUB_EFI_SECUREBOOT_MODE_DISABLED)\n+    secureboot_str = \"Disabled\";\n+  else if (secureboot == GRUB_EFI_SECUREBOOT_MODE_ENABLED)\n+    secureboot_str = \"Enabled\";\n+\n+  grub_dprintf (\"efi\", \"UEFI Secure Boot state: %s\\n\", secureboot_str);\n+\n+  return secureboot;\n+}\ndiff --git a/include/grub/efi/sb.h b/include/grub/efi/sb.h\nnew file mode 100644\nindex 0000000..a33d985\n--- /dev/null\n+++ b/include/grub/efi/sb.h\n@@ -0,0 +1,40 @@\n+/*\n+ *  GRUB  --  GRand Unified Bootloader\n+ *  Copyright (C) 2020  Free Software Foundation, Inc.\n+ *\n+ *  GRUB is free software: you can redistribute it and/or modify\n+ *  it under the terms of the GNU General Public License as published by\n+ *  the Free Software Foundation, either version 3 of the License, or\n+ *  (at your option) any later version.\n+ *\n+ *  GRUB is distributed in the hope that it will be useful,\n+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ *  GNU General Public License for more details.\n+ *\n+ *  You should have received a copy of the GNU General Public License\n+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.\n+ */\n+\n+#ifndef GRUB_EFI_SB_H\n+#define GRUB_EFI_SB_H     1\n+\n+#include <grub/types.h>\n+#include <grub/dl.h>\n+\n+#define GRUB_EFI_SECUREBOOT_MODE_UNSET\t0\n+#define GRUB_EFI_SECUREBOOT_MODE_UNKNOWN\t1\n+#define GRUB_EFI_SECUREBOOT_MODE_DISABLED\t2\n+#define GRUB_EFI_SECUREBOOT_MODE_ENABLED\t3\n+\n+#ifdef GRUB_MACHINE_EFI\n+extern grub_uint8_t\n+EXPORT_FUNC (grub_efi_get_secureboot) (void);\n+#else\n+static inline grub_uint8_t\n+grub_efi_get_secureboot (void)\n+{\n+  return GRUB_EFI_SECUREBOOT_MODE_UNSET;\n+}\n+#endif\n+#endif /* GRUB_EFI_SB_H */\ndiff --git a/po/POTFILES.in b/po/POTFILES.in\nindex 5574cbe..22543be 100644\n--- a/po/POTFILES.in\n+++ b/po/POTFILES.in\n@@ -266,6 +266,7 @@\n ./grub-core/kern/efi/fdt.c\n ./grub-core/kern/efi/init.c\n ./grub-core/kern/efi/mm.c\n+./grub-core/kern/efi/sb.c\n ./grub-core/kern/elf.c\n ./grub-core/kern/elfXX.c\n ./grub-core/kern/emu/argp_common.c\n@@ -1053,6 +1054,7 @@\n ./include/grub/efi/memory.h\n ./include/grub/efi/pci.h\n ./include/grub/efi/pe32.h\n+./include/grub/efi/sb.h\n ./include/grub/efi/tpm.h\n ./include/grub/efi/uga_draw.h\n ./include/grub/efiemu/efiemu.h\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0033-verifiers-Move-verifiers-API-to-kernel-image.patch",
    "content": "From 9e95f45ceeef36fcf93cbfffcf004276883dbc99 Mon Sep 17 00:00:00 2001\nFrom: Marco A Benatto <mbenatto@redhat.com>\nDate: Wed, 23 Sep 2020 11:33:33 -0400\nSubject: [PATCH] verifiers: Move verifiers API to kernel image\n\nMove verifiers API from a module to the kernel image, so it can be\nused there as well. There are no functional changes in this patch.\n\nSigned-off-by: Marco A Benatto <mbenatto@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n[Add changes to generated files]\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/Makefile.am          |   1 +\n grub-core/Makefile.core.am     |  66 +++-----\n grub-core/Makefile.core.def    |   6 +-\n grub-core/Makefile.in          | 355 +++++++++++++++++++++--------------------\n grub-core/commands/verifiers.c | 228 --------------------------\n grub-core/kern/main.c          |   4 +\n grub-core/kern/verifiers.c     | 224 ++++++++++++++++++++++++++\n include/grub/verify.h          |   9 +-\n po/POTFILES.in                 |   2 +-\n 9 files changed, 446 insertions(+), 449 deletions(-)\n delete mode 100644 grub-core/commands/verifiers.c\n create mode 100644 grub-core/kern/verifiers.c\n\ndiff --git a/grub-core/Makefile.am b/grub-core/Makefile.am\nindex c6ba5b2..cc6fc7d 100644\n--- a/grub-core/Makefile.am\n+++ b/grub-core/Makefile.am\n@@ -91,6 +91,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/parser.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/partition.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/term.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/time.h\n+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/verify.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/mm_private.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/net.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/memory.h\ndiff --git a/grub-core/Makefile.core.am b/grub-core/Makefile.core.am\nindex f28b753..c4d67d4 100644\n--- a/grub-core/Makefile.core.am\n+++ b/grub-core/Makefile.core.am\n@@ -6953,26 +6953,6 @@ CLEANFILES += pgp.marker\n pgp.marker: $(pgp_module_SOURCES) $(nodist_pgp_module_SOURCES)\n \t$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pgp_module_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)\n \tgrep 'MARKER' $@.new > $@; rm -f $@.new\n-platform_PROGRAMS += verifiers.module\n-MODULE_FILES += verifiers.module$(EXEEXT)\n-verifiers_module_SOURCES  = commands/verifiers.c  ## platform sources\n-nodist_verifiers_module_SOURCES  =  ## platform nodist sources\n-verifiers_module_LDADD  = \n-verifiers_module_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_MODULE) \n-verifiers_module_LDFLAGS  = $(AM_LDFLAGS) $(LDFLAGS_MODULE) \n-verifiers_module_CPPFLAGS  = $(AM_CPPFLAGS) $(CPPFLAGS_MODULE) \n-verifiers_module_CCASFLAGS  = $(AM_CCASFLAGS) $(CCASFLAGS_MODULE) \n-verifiers_module_DEPENDENCIES  = $(TARGET_OBJ2ELF) \n-dist_noinst_DATA += \n-BUILT_SOURCES += $(nodist_verifiers_module_SOURCES)\n-CLEANFILES += $(nodist_verifiers_module_SOURCES)\n-MOD_FILES += verifiers.mod\n-MARKER_FILES += verifiers.marker\n-CLEANFILES += verifiers.marker\n-\n-verifiers.marker: $(verifiers_module_SOURCES) $(nodist_verifiers_module_SOURCES)\n-\t$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(verifiers_module_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)\n-\tgrep 'MARKER' $@.new > $@; rm -f $@.new\n \n if COND_x86_64_efi\n platform_PROGRAMS += shim_lock.module\n@@ -22377,7 +22357,7 @@ gcry_whirlpool.marker: $(gcry_whirlpool_module_SOURCES) $(nodist_gcry_whirlpool_\n if COND_emu\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = \n-kernel_exec_SOURCES += disk/host.c kern/emu/cache_s.S kern/emu/hostdisk.c osdep/unix/hostdisk.c osdep/exec.c osdep/devmapper/hostdisk.c osdep/hostdisk.c kern/emu/hostfs.c kern/emu/main.c kern/emu/argp_common.c kern/emu/misc.c kern/emu/mm.c kern/emu/time.c kern/emu/cache.c osdep/emuconsole.c osdep/dl.c osdep/sleep.c osdep/init.c osdep/emunet.c osdep/cputime.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += disk/host.c kern/emu/cache_s.S kern/emu/hostdisk.c osdep/unix/hostdisk.c osdep/exec.c osdep/devmapper/hostdisk.c osdep/hostdisk.c kern/emu/hostfs.c kern/emu/main.c kern/emu/argp_common.c kern/emu/misc.c kern/emu/mm.c kern/emu/time.c kern/emu/cache.c osdep/emuconsole.c osdep/dl.c osdep/sleep.c osdep/init.c osdep/emunet.c osdep/cputime.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  =  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) $(CFLAGS_GNULIB) \n@@ -22399,7 +22379,7 @@ endif\n if COND_i386_pc\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/pc/startup.S \n-kernel_exec_SOURCES += kern/i386/pc/init.c kern/i386/pc/mmap.c term/i386/pc/console.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/i386/pc/init.c kern/i386/pc/mmap.c term/i386/pc/console.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22421,7 +22401,7 @@ endif\n if COND_i386_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/efi/startup.S \n-kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/i386/efi/init.c bus/pci.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/i386/efi/init.c bus/pci.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22443,7 +22423,7 @@ endif\n if COND_i386_qemu\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/qemu/startup.S \n-kernel_exec_SOURCES += kern/i386/qemu/init.c bus/pci.c kern/vga_init.c kern/i386/qemu/mmap.c term/i386/pc/vga_text.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/i386/qemu/init.c bus/pci.c kern/vga_init.c kern/i386/qemu/mmap.c term/i386/pc/vga_text.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22465,7 +22445,7 @@ endif\n if COND_i386_coreboot\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/coreboot/startup.S \n-kernel_exec_SOURCES += kern/i386/coreboot/init.c kern/i386/pc/acpi.c kern/acpi.c kern/i386/tsc_pmtimer.c kern/i386/coreboot/cbtable.c video/coreboot/cbfb.c kern/coreboot/mmap.c kern/coreboot/cbtable.c term/gfxterm.c font/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c video/video.c term/i386/pc/vga_text.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/i386/coreboot/init.c kern/i386/pc/acpi.c kern/acpi.c kern/i386/tsc_pmtimer.c kern/i386/coreboot/cbtable.c video/coreboot/cbfb.c kern/coreboot/mmap.c kern/coreboot/cbtable.c term/gfxterm.c font/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c video/video.c term/i386/pc/vga_text.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22487,7 +22467,7 @@ endif\n if COND_i386_multiboot\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/coreboot/startup.S \n-kernel_exec_SOURCES += kern/i386/coreboot/init.c kern/i386/pc/acpi.c kern/acpi.c kern/i386/multiboot_mmap.c term/i386/pc/vga_text.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/i386/coreboot/init.c kern/i386/pc/acpi.c kern/acpi.c kern/i386/multiboot_mmap.c term/i386/pc/vga_text.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22509,7 +22489,7 @@ endif\n if COND_i386_ieee1275\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/ieee1275/startup.S \n-kernel_exec_SOURCES += disk/ieee1275/ofdisk.c kern/ieee1275/cmain.c kern/ieee1275/ieee1275.c kern/ieee1275/mmap.c kern/ieee1275/openfw.c term/ieee1275/console.c kern/ieee1275/init.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += disk/ieee1275/ofdisk.c kern/ieee1275/cmain.c kern/ieee1275/ieee1275.c kern/ieee1275/mmap.c kern/ieee1275/openfw.c term/ieee1275/console.c kern/ieee1275/init.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22531,7 +22511,7 @@ endif\n if COND_x86_64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/x86_64/efi/startup.S \n-kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/x86_64/efi/callwrap.S kern/i386/efi/init.c bus/pci.c kern/x86_64/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/x86_64/efi/callwrap.S kern/i386/efi/init.c bus/pci.c kern/x86_64/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22553,7 +22533,7 @@ endif\n if COND_i386_xen\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/xen/startup.S \n-kernel_exec_SOURCES += kern/i386/dl.c kern/i386/xen/hypercall.S kern/i386/tsc.c kern/i386/xen/tsc.c kern/xen/init.c term/xen/console.c disk/xen/xendisk.c commands/boot.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/i386/dl.c kern/i386/xen/hypercall.S kern/i386/tsc.c kern/i386/xen/tsc.c kern/xen/init.c term/xen/console.c disk/xen/xendisk.c commands/boot.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22575,7 +22555,7 @@ endif\n if COND_x86_64_xen\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/x86_64/xen/startup.S \n-kernel_exec_SOURCES += kern/x86_64/dl.c kern/x86_64/xen/hypercall.S kern/i386/tsc.c kern/i386/xen/tsc.c kern/xen/init.c term/xen/console.c disk/xen/xendisk.c commands/boot.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/x86_64/dl.c kern/x86_64/xen/hypercall.S kern/i386/tsc.c kern/i386/xen/tsc.c kern/xen/init.c term/xen/console.c disk/xen/xendisk.c commands/boot.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22597,7 +22577,7 @@ endif\n if COND_i386_xen_pvh\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/xen/startup_pvh.S \n-kernel_exec_SOURCES += kern/i386/dl.c commands/boot.c disk/xen/xendisk.c kern/i386/tsc.c kern/i386/xen/tsc.c kern/i386/xen/pvh.c kern/xen/init.c term/xen/console.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/i386/dl.c commands/boot.c disk/xen/xendisk.c kern/i386/tsc.c kern/i386/xen/tsc.c kern/i386/xen/pvh.c kern/xen/init.c term/xen/console.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22619,7 +22599,7 @@ endif\n if COND_mips_loongson\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/mips/startup.S \n-kernel_exec_SOURCES += term/ns8250.c bus/bonito.c bus/cs5536.c bus/pci.c kern/mips/loongson/init.c term/at_keyboard.c term/ps2.c commands/boot.c term/serial.c video/sm712.c video/sis315pro.c video/radeon_fuloong2e.c video/radeon_yeeloong3a.c commands/keylayouts.c term/gfxterm.c font/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c video/video.c kern/generic/rtc_get_time_ms.c kern/mips/cache.S kern/mips/dl.c kern/mips/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += term/ns8250.c bus/bonito.c bus/cs5536.c bus/pci.c kern/mips/loongson/init.c term/at_keyboard.c term/ps2.c commands/boot.c term/serial.c video/sm712.c video/sis315pro.c video/radeon_fuloong2e.c video/radeon_yeeloong3a.c commands/keylayouts.c term/gfxterm.c font/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c video/video.c kern/generic/rtc_get_time_ms.c kern/mips/cache.S kern/mips/dl.c kern/mips/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22641,7 +22621,7 @@ endif\n if COND_sparc64_ieee1275\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/sparc64/ieee1275/crt0.S \n-kernel_exec_SOURCES += kern/sparc64/cache.S kern/sparc64/dl.c kern/sparc64/ieee1275/ieee1275.c disk/ieee1275/obdisk.c disk/ieee1275/ofdisk.c kern/ieee1275/cmain.c kern/ieee1275/ieee1275.c kern/ieee1275/mmap.c kern/ieee1275/openfw.c term/ieee1275/console.c kern/ieee1275/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/sparc64/cache.S kern/sparc64/dl.c kern/sparc64/ieee1275/ieee1275.c disk/ieee1275/obdisk.c disk/ieee1275/ofdisk.c kern/ieee1275/cmain.c kern/ieee1275/ieee1275.c kern/ieee1275/mmap.c kern/ieee1275/openfw.c term/ieee1275/console.c kern/ieee1275/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22663,7 +22643,7 @@ endif\n if COND_powerpc_ieee1275\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/powerpc/ieee1275/startup.S \n-kernel_exec_SOURCES += kern/powerpc/cache.S kern/powerpc/dl.c kern/powerpc/compiler-rt.S disk/ieee1275/ofdisk.c kern/ieee1275/cmain.c kern/ieee1275/ieee1275.c kern/ieee1275/mmap.c kern/ieee1275/openfw.c term/ieee1275/console.c kern/ieee1275/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/powerpc/cache.S kern/powerpc/dl.c kern/powerpc/compiler-rt.S disk/ieee1275/ofdisk.c kern/ieee1275/cmain.c kern/ieee1275/ieee1275.c kern/ieee1275/mmap.c kern/ieee1275/openfw.c term/ieee1275/console.c kern/ieee1275/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22685,7 +22665,7 @@ endif\n if COND_mips_arc\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/mips/startup.S \n-kernel_exec_SOURCES += kern/mips/arc/init.c term/arc/console.c disk/arc/arcdisk.c kern/generic/rtc_get_time_ms.c kern/mips/cache.S kern/mips/dl.c kern/mips/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/mips/arc/init.c term/arc/console.c disk/arc/arcdisk.c kern/generic/rtc_get_time_ms.c kern/mips/cache.S kern/mips/dl.c kern/mips/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22707,7 +22687,7 @@ endif\n if COND_ia64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = \n-kernel_exec_SOURCES += kern/ia64/efi/startup.S kern/ia64/efi/init.c kern/ia64/dl.c kern/ia64/dl_helper.c kern/ia64/cache.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/ia64/efi/startup.S kern/ia64/efi/init.c kern/ia64/dl.c kern/ia64/dl_helper.c kern/ia64/cache.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) -fno-builtin -fpic -minline-int-divide-max-throughput \n@@ -22729,7 +22709,7 @@ endif\n if COND_mips_qemu_mips\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/mips/startup.S \n-kernel_exec_SOURCES += kern/mips/qemu_mips/init.c term/ns8250.c term/serial.c term/at_keyboard.c term/ps2.c commands/boot.c commands/keylayouts.c term/i386/pc/vga_text.c kern/vga_init.c kern/generic/rtc_get_time_ms.c kern/mips/cache.S kern/mips/dl.c kern/mips/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/mips/qemu_mips/init.c term/ns8250.c term/serial.c term/at_keyboard.c term/ps2.c commands/boot.c commands/keylayouts.c term/i386/pc/vga_text.c kern/vga_init.c kern/generic/rtc_get_time_ms.c kern/mips/cache.S kern/mips/dl.c kern/mips/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22751,7 +22731,7 @@ endif\n if COND_arm_uboot\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/arm/startup.S \n-kernel_exec_SOURCES += kern/arm/uboot/init.c kern/arm/uboot/uboot.S disk/uboot/ubootdisk.c kern/uboot/uboot.c kern/uboot/init.c kern/uboot/hw.c term/uboot/console.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/arm/uboot/init.c kern/arm/uboot/uboot.S disk/uboot/ubootdisk.c kern/uboot/uboot.c kern/uboot/init.c kern/uboot/hw.c term/uboot/console.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22773,7 +22753,7 @@ endif\n if COND_arm_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/arm/efi/startup.S \n-kernel_exec_SOURCES += kern/arm/efi/init.c kern/efi/fdt.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/arm/efi/init.c kern/efi/fdt.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22795,7 +22775,7 @@ endif\n if COND_arm64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/arm64/efi/startup.S \n-kernel_exec_SOURCES += kern/arm64/efi/init.c kern/efi/fdt.c kern/arm64/cache.c kern/arm64/cache_flush.S kern/arm64/dl.c kern/arm64/dl_helper.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/arm64/efi/init.c kern/efi/fdt.c kern/arm64/cache.c kern/arm64/cache_flush.S kern/arm64/dl.c kern/arm64/dl_helper.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22817,7 +22797,7 @@ endif\n if COND_arm_coreboot\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/arm/startup.S \n-kernel_exec_SOURCES += kern/arm/coreboot/init.c kern/arm/coreboot/timer.c kern/arm/coreboot/coreboot.S lib/fdt.c bus/fdt.c term/ps2.c term/arm/pl050.c term/arm/cros.c term/arm/cros_ec.c bus/spi/rk3288_spi.c commands/keylayouts.c kern/arm/coreboot/dma.c kern/arm/coreboot/cbtable.c video/coreboot/cbfb.c kern/coreboot/mmap.c kern/coreboot/cbtable.c term/gfxterm.c font/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c video/video.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/arm/coreboot/init.c kern/arm/coreboot/timer.c kern/arm/coreboot/coreboot.S lib/fdt.c bus/fdt.c term/ps2.c term/arm/pl050.c term/arm/cros.c term/arm/cros_ec.c bus/spi/rk3288_spi.c commands/keylayouts.c kern/arm/coreboot/dma.c kern/arm/coreboot/cbtable.c video/coreboot/cbfb.c kern/coreboot/mmap.c kern/coreboot/cbtable.c term/gfxterm.c font/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c video/video.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22839,7 +22819,7 @@ endif\n if COND_riscv32_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/riscv/efi/startup.S \n-kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22861,7 +22841,7 @@ endif\n if COND_riscv64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/riscv/efi/startup.S \n-kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c \n+kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \ndiff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def\nindex abd26cf..f6c0348 100644\n--- a/grub-core/Makefile.core.def\n+++ b/grub-core/Makefile.core.def\n@@ -140,6 +140,7 @@ kernel = {\n   common = kern/rescue_parser.c;\n   common = kern/rescue_reader.c;\n   common = kern/term.c;\n+  common = kern/verifiers.c;\n \n   noemu = kern/compiler-rt.c;\n   noemu = kern/mm.c;\n@@ -943,11 +944,6 @@ module = {\n   cppflags = '-I$(srcdir)/lib/posix_wrap';\n };\n \n-module = {\n-  name = verifiers;\n-  common = commands/verifiers.c;\n-};\n-\n module = {\n   name = shim_lock;\n   common = commands/efi/shim_lock.c;\ndiff --git a/grub-core/Makefile.in b/grub-core/Makefile.in\nindex 8fb81ee..8930714 100644\n--- a/grub-core/Makefile.in\n+++ b/grub-core/Makefile.in\n@@ -202,39 +202,39 @@ platform_PROGRAMS = disk.module$(EXEEXT) trig.module$(EXEEXT) \\\n \t$(am__EXEEXT_286) $(am__EXEEXT_287) $(am__EXEEXT_288) \\\n \t$(am__EXEEXT_289) $(am__EXEEXT_290) $(am__EXEEXT_291) \\\n \t$(am__EXEEXT_292) hashsum.module$(EXEEXT) pgp.module$(EXEEXT) \\\n-\tverifiers.module$(EXEEXT) $(am__EXEEXT_293) $(am__EXEEXT_294) \\\n-\t$(am__EXEEXT_295) $(am__EXEEXT_296) $(am__EXEEXT_297) \\\n-\t$(am__EXEEXT_298) $(am__EXEEXT_299) $(am__EXEEXT_300) \\\n-\t$(am__EXEEXT_301) $(am__EXEEXT_302) help.module$(EXEEXT) \\\n-\thexdump.module$(EXEEXT) keystatus.module$(EXEEXT) \\\n-\t$(am__EXEEXT_303) $(am__EXEEXT_304) loadenv.module$(EXEEXT) \\\n-\tls.module$(EXEEXT) lsmmap.module$(EXEEXT) $(am__EXEEXT_305) \\\n-\t$(am__EXEEXT_306) $(am__EXEEXT_307) $(am__EXEEXT_308) \\\n-\t$(am__EXEEXT_309) $(am__EXEEXT_310) $(am__EXEEXT_311) \\\n-\t$(am__EXEEXT_312) memrw.module$(EXEEXT) \\\n-\tminicmd.module$(EXEEXT) parttool.module$(EXEEXT) \\\n-\tpassword.module$(EXEEXT) password_pbkdf2.module$(EXEEXT) \\\n-\t$(am__EXEEXT_313) $(am__EXEEXT_314) $(am__EXEEXT_315) \\\n-\t$(am__EXEEXT_316) $(am__EXEEXT_317) $(am__EXEEXT_318) \\\n-\t$(am__EXEEXT_319) $(am__EXEEXT_320) $(am__EXEEXT_321) \\\n-\t$(am__EXEEXT_322) $(am__EXEEXT_323) $(am__EXEEXT_324) \\\n-\t$(am__EXEEXT_325) $(am__EXEEXT_326) $(am__EXEEXT_327) \\\n-\t$(am__EXEEXT_328) $(am__EXEEXT_329) $(am__EXEEXT_330) \\\n-\t$(am__EXEEXT_331) $(am__EXEEXT_332) $(am__EXEEXT_333) \\\n-\tprobe.module$(EXEEXT) read.module$(EXEEXT) \\\n-\tsearch.module$(EXEEXT) search_fs_file.module$(EXEEXT) \\\n-\tsearch_fs_uuid.module$(EXEEXT) search_label.module$(EXEEXT) \\\n-\t$(am__EXEEXT_334) $(am__EXEEXT_335) $(am__EXEEXT_336) \\\n-\t$(am__EXEEXT_337) $(am__EXEEXT_338) $(am__EXEEXT_339) \\\n-\t$(am__EXEEXT_340) $(am__EXEEXT_341) $(am__EXEEXT_342) \\\n-\t$(am__EXEEXT_343) $(am__EXEEXT_344) $(am__EXEEXT_345) \\\n-\t$(am__EXEEXT_346) $(am__EXEEXT_347) $(am__EXEEXT_348) \\\n-\t$(am__EXEEXT_349) sleep.module$(EXEEXT) $(am__EXEEXT_350) \\\n-\t$(am__EXEEXT_351) terminal.module$(EXEEXT) \\\n-\ttest.module$(EXEEXT) true.module$(EXEEXT) $(am__EXEEXT_352) \\\n-\t$(am__EXEEXT_353) $(am__EXEEXT_354) $(am__EXEEXT_355) \\\n-\t$(am__EXEEXT_356) $(am__EXEEXT_357) $(am__EXEEXT_358) \\\n-\t$(am__EXEEXT_359) $(am__EXEEXT_360) videoinfo.module$(EXEEXT) \\\n+\t$(am__EXEEXT_293) $(am__EXEEXT_294) $(am__EXEEXT_295) \\\n+\t$(am__EXEEXT_296) $(am__EXEEXT_297) $(am__EXEEXT_298) \\\n+\t$(am__EXEEXT_299) $(am__EXEEXT_300) $(am__EXEEXT_301) \\\n+\t$(am__EXEEXT_302) help.module$(EXEEXT) hexdump.module$(EXEEXT) \\\n+\tkeystatus.module$(EXEEXT) $(am__EXEEXT_303) $(am__EXEEXT_304) \\\n+\tloadenv.module$(EXEEXT) ls.module$(EXEEXT) \\\n+\tlsmmap.module$(EXEEXT) $(am__EXEEXT_305) $(am__EXEEXT_306) \\\n+\t$(am__EXEEXT_307) $(am__EXEEXT_308) $(am__EXEEXT_309) \\\n+\t$(am__EXEEXT_310) $(am__EXEEXT_311) $(am__EXEEXT_312) \\\n+\tmemrw.module$(EXEEXT) minicmd.module$(EXEEXT) \\\n+\tparttool.module$(EXEEXT) password.module$(EXEEXT) \\\n+\tpassword_pbkdf2.module$(EXEEXT) $(am__EXEEXT_313) \\\n+\t$(am__EXEEXT_314) $(am__EXEEXT_315) $(am__EXEEXT_316) \\\n+\t$(am__EXEEXT_317) $(am__EXEEXT_318) $(am__EXEEXT_319) \\\n+\t$(am__EXEEXT_320) $(am__EXEEXT_321) $(am__EXEEXT_322) \\\n+\t$(am__EXEEXT_323) $(am__EXEEXT_324) $(am__EXEEXT_325) \\\n+\t$(am__EXEEXT_326) $(am__EXEEXT_327) $(am__EXEEXT_328) \\\n+\t$(am__EXEEXT_329) $(am__EXEEXT_330) $(am__EXEEXT_331) \\\n+\t$(am__EXEEXT_332) $(am__EXEEXT_333) probe.module$(EXEEXT) \\\n+\tread.module$(EXEEXT) search.module$(EXEEXT) \\\n+\tsearch_fs_file.module$(EXEEXT) search_fs_uuid.module$(EXEEXT) \\\n+\tsearch_label.module$(EXEEXT) $(am__EXEEXT_334) \\\n+\t$(am__EXEEXT_335) $(am__EXEEXT_336) $(am__EXEEXT_337) \\\n+\t$(am__EXEEXT_338) $(am__EXEEXT_339) $(am__EXEEXT_340) \\\n+\t$(am__EXEEXT_341) $(am__EXEEXT_342) $(am__EXEEXT_343) \\\n+\t$(am__EXEEXT_344) $(am__EXEEXT_345) $(am__EXEEXT_346) \\\n+\t$(am__EXEEXT_347) $(am__EXEEXT_348) $(am__EXEEXT_349) \\\n+\tsleep.module$(EXEEXT) $(am__EXEEXT_350) $(am__EXEEXT_351) \\\n+\tterminal.module$(EXEEXT) test.module$(EXEEXT) \\\n+\ttrue.module$(EXEEXT) $(am__EXEEXT_352) $(am__EXEEXT_353) \\\n+\t$(am__EXEEXT_354) $(am__EXEEXT_355) $(am__EXEEXT_356) \\\n+\t$(am__EXEEXT_357) $(am__EXEEXT_358) $(am__EXEEXT_359) \\\n+\t$(am__EXEEXT_360) videoinfo.module$(EXEEXT) \\\n \tvideotest.module$(EXEEXT) xnu_uuid.module$(EXEEXT) \\\n \tdm_nv.module$(EXEEXT) loopback.module$(EXEEXT) \\\n \tcryptodisk.module$(EXEEXT) luks.module$(EXEEXT) \\\n@@ -10474,7 +10474,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n \tkern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c \\\n \tkern/misc.c kern/parser.c kern/partition.c \\\n \tkern/rescue_parser.c kern/rescue_reader.c kern/term.c \\\n-\tkern/arm/startup.S kern/arm/coreboot/init.c \\\n+\tkern/verifiers.c kern/arm/startup.S kern/arm/coreboot/init.c \\\n \tkern/arm/coreboot/timer.c kern/arm/coreboot/coreboot.S \\\n \tlib/fdt.c bus/fdt.c term/ps2.c term/arm/pl050.c \\\n \tterm/arm/cros.c term/arm/cros_ec.c bus/spi/rk3288_spi.c \\\n@@ -10564,7 +10564,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@am_kernel_exec_OBJECTS = kern/x86_64/efi/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/i386/efi/kernel_exec-tsc.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/i386/kernel_exec-tsc_pmtimer.$(OBJEXT) \\\n@@ -10602,7 +10603,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@am_kernel_exec_OBJECTS = kern/sparc64/ieee1275/kernel_exec-crt0.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/sparc64/kernel_exec-cache.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/sparc64/kernel_exec-dl.$(OBJEXT) \\\n@@ -10639,7 +10641,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@am_kernel_exec_OBJECTS = kern/riscv/efi/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/riscv/efi/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/efi/kernel_exec-fdt.$(OBJEXT) \\\n@@ -10674,7 +10677,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@am_kernel_exec_OBJECTS = kern/riscv/efi/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/riscv/efi/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/efi/kernel_exec-fdt.$(OBJEXT) \\\n@@ -10710,7 +10714,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@am_kernel_exec_OBJECTS = kern/powerpc/ieee1275/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/powerpc/kernel_exec-cache.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/powerpc/kernel_exec-dl.$(OBJEXT) \\\n@@ -10746,7 +10751,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@am_kernel_exec_OBJECTS = kern/mips/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/mips/qemu_mips/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tterm/kernel_exec-ns8250.$(OBJEXT) \\\n@@ -10785,7 +10791,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@am_kernel_exec_OBJECTS = kern/mips/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tterm/kernel_exec-ns8250.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tbus/kernel_exec-bonito.$(OBJEXT) \\\n@@ -10838,7 +10845,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@am_kernel_exec_OBJECTS = kern/mips/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/mips/arc/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tterm/arc/kernel_exec-console.$(OBJEXT) \\\n@@ -10871,7 +10879,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@am_kernel_exec_OBJECTS = kern/ia64/efi/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/ia64/efi/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/ia64/kernel_exec-dl.$(OBJEXT) \\\n@@ -10906,7 +10915,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@am_kernel_exec_OBJECTS = kern/i386/xen/kernel_exec-startup_pvh.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/i386/kernel_exec-dl.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tcommands/kernel_exec-boot.$(OBJEXT) \\\n@@ -10940,7 +10950,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@am_kernel_exec_OBJECTS = kern/i386/xen/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/i386/kernel_exec-dl.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/i386/xen/kernel_exec-hypercall.$(OBJEXT) \\\n@@ -10974,7 +10985,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@am_kernel_exec_OBJECTS = kern/i386/qemu/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/i386/qemu/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tbus/kernel_exec-pci.$(OBJEXT) \\\n@@ -11004,7 +11016,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@am_kernel_exec_OBJECTS = kern/i386/pc/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/i386/pc/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/i386/pc/kernel_exec-mmap.$(OBJEXT) \\\n@@ -11032,7 +11045,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@am_kernel_exec_OBJECTS = kern/i386/coreboot/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/i386/coreboot/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/i386/pc/kernel_exec-acpi.$(OBJEXT) \\\n@@ -11062,7 +11076,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@am_kernel_exec_OBJECTS = kern/i386/ieee1275/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tdisk/ieee1275/kernel_exec-ofdisk.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/ieee1275/kernel_exec-cmain.$(OBJEXT) \\\n@@ -11098,7 +11113,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@am_kernel_exec_OBJECTS = kern/i386/efi/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/i386/efi/kernel_exec-tsc.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/i386/kernel_exec-tsc_pmtimer.$(OBJEXT) \\\n@@ -11135,7 +11151,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@am_kernel_exec_OBJECTS = kern/i386/coreboot/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/i386/coreboot/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/i386/pc/kernel_exec-acpi.$(OBJEXT) \\\n@@ -11178,7 +11195,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@am_kernel_exec_OBJECTS = disk/kernel_exec-host.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tkern/emu/kernel_exec-cache_s.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tkern/emu/kernel_exec-hostdisk.$(OBJEXT) \\\n@@ -11219,7 +11237,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@am_kernel_exec_OBJECTS = kern/arm/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/arm/uboot/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/arm/uboot/kernel_exec-uboot.$(OBJEXT) \\\n@@ -11259,7 +11278,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@am_kernel_exec_OBJECTS = kern/arm/efi/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/arm/efi/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/efi/kernel_exec-fdt.$(OBJEXT) \\\n@@ -11298,7 +11318,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@am_kernel_exec_OBJECTS = kern/arm/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/arm/coreboot/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/arm/coreboot/kernel_exec-timer.$(OBJEXT) \\\n@@ -11352,7 +11373,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_TRUE@am_kernel_exec_OBJECTS = kern/arm64/efi/kernel_exec-startup.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/arm64/efi/kernel_exec-init.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/efi/kernel_exec-fdt.$(OBJEXT) \\\n@@ -11388,7 +11410,8 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-partition.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-rescue_parser.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-rescue_reader.$(OBJEXT) \\\n-@COND_arm64_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT)\n+@COND_arm64_efi_TRUE@\tkern/kernel_exec-term.$(OBJEXT) \\\n+@COND_arm64_efi_TRUE@\tkern/kernel_exec-verifiers.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@nodist_kernel_exec_OBJECTS = kernel_exec-symlist.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@nodist_kernel_exec_OBJECTS = kernel_exec-symlist.$(OBJEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@nodist_kernel_exec_OBJECTS = kernel_exec-symlist.$(OBJEXT)\n@@ -13146,13 +13169,6 @@ vbe_module_OBJECTS = $(am_vbe_module_OBJECTS) \\\n \t$(nodist_vbe_module_OBJECTS)\n vbe_module_LINK = $(CCLD) $(vbe_module_CFLAGS) $(CFLAGS) \\\n \t$(vbe_module_LDFLAGS) $(LDFLAGS) -o $@\n-am_verifiers_module_OBJECTS =  \\\n-\tcommands/verifiers_module-verifiers.$(OBJEXT)\n-nodist_verifiers_module_OBJECTS =\n-verifiers_module_OBJECTS = $(am_verifiers_module_OBJECTS) \\\n-\t$(nodist_verifiers_module_OBJECTS)\n-verifiers_module_LINK = $(CCLD) $(verifiers_module_CFLAGS) $(CFLAGS) \\\n-\t$(verifiers_module_LDFLAGS) $(LDFLAGS) -o $@\n am__vga_module_SOURCES_DIST = video/i386/pc/vga.c\n @COND_i386_pc_TRUE@am_vga_module_OBJECTS =  \\\n @COND_i386_pc_TRUE@\tvideo/i386/pc/vga_module-vga.$(OBJEXT)\n@@ -13879,7 +13895,6 @@ SOURCES = $(acpi_module_SOURCES) $(nodist_acpi_module_SOURCES) \\\n \t$(nodist_usbserial_usbdebug_module_SOURCES) \\\n \t$(usbtest_module_SOURCES) $(nodist_usbtest_module_SOURCES) \\\n \t$(vbe_module_SOURCES) $(nodist_vbe_module_SOURCES) \\\n-\t$(verifiers_module_SOURCES) $(nodist_verifiers_module_SOURCES) \\\n \t$(vga_module_SOURCES) $(nodist_vga_module_SOURCES) \\\n \t$(vga_text_module_SOURCES) $(nodist_vga_text_module_SOURCES) \\\n \t$(video_module_SOURCES) $(nodist_video_module_SOURCES) \\\n@@ -14089,8 +14104,7 @@ DIST_SOURCES = $(am__acpi_module_SOURCES_DIST) \\\n \t$(am__usbserial_pl2303_module_SOURCES_DIST) \\\n \t$(am__usbserial_usbdebug_module_SOURCES_DIST) \\\n \t$(am__usbtest_module_SOURCES_DIST) \\\n-\t$(am__vbe_module_SOURCES_DIST) $(verifiers_module_SOURCES) \\\n-\t$(am__vga_module_SOURCES_DIST) \\\n+\t$(am__vbe_module_SOURCES_DIST) $(am__vga_module_SOURCES_DIST) \\\n \t$(am__vga_text_module_SOURCES_DIST) \\\n \t$(am__video_module_SOURCES_DIST) \\\n \t$(am__video_bochs_module_SOURCES_DIST) \\\n@@ -15497,38 +15511,38 @@ MOD_FILES = disk.mod trig.mod $(am__append_8) $(am__append_15) \\\n \t$(am__append_1989) $(am__append_1996) $(am__append_2003) \\\n \t$(am__append_2010) $(am__append_2017) $(am__append_2024) \\\n \t$(am__append_2031) $(am__append_2038) hashsum.mod pgp.mod \\\n-\tverifiers.mod $(am__append_2045) $(am__append_2052) \\\n-\t$(am__append_2059) $(am__append_2066) $(am__append_2073) \\\n-\t$(am__append_2080) $(am__append_2087) $(am__append_2094) \\\n-\t$(am__append_2101) $(am__append_2108) help.mod hexdump.mod \\\n-\tkeystatus.mod $(am__append_2115) $(am__append_2122) \\\n-\tloadenv.mod ls.mod lsmmap.mod $(am__append_2129) \\\n-\t$(am__append_2136) $(am__append_2143) $(am__append_2150) \\\n-\t$(am__append_2157) $(am__append_2164) $(am__append_2171) \\\n-\t$(am__append_2178) memrw.mod minicmd.mod parttool.mod \\\n-\tpassword.mod password_pbkdf2.mod $(am__append_2185) \\\n-\t$(am__append_2192) $(am__append_2199) $(am__append_2206) \\\n-\t$(am__append_2213) $(am__append_2220) $(am__append_2227) \\\n-\t$(am__append_2234) $(am__append_2241) $(am__append_2248) \\\n-\t$(am__append_2255) $(am__append_2262) $(am__append_2269) \\\n-\t$(am__append_2276) $(am__append_2283) $(am__append_2290) \\\n-\t$(am__append_2297) $(am__append_2304) $(am__append_2311) \\\n-\t$(am__append_2318) $(am__append_2325) probe.mod read.mod \\\n-\tsearch.mod search_fs_file.mod search_fs_uuid.mod \\\n-\tsearch_label.mod $(am__append_2332) $(am__append_2339) \\\n-\t$(am__append_2346) $(am__append_2353) $(am__append_2360) \\\n-\t$(am__append_2367) $(am__append_2374) $(am__append_2381) \\\n-\t$(am__append_2388) $(am__append_2395) $(am__append_2402) \\\n-\t$(am__append_2409) $(am__append_2416) $(am__append_2423) \\\n-\t$(am__append_2430) $(am__append_2437) sleep.mod \\\n-\t$(am__append_2444) $(am__append_2451) terminal.mod test.mod \\\n-\ttrue.mod $(am__append_2458) $(am__append_2465) \\\n-\t$(am__append_2472) $(am__append_2479) $(am__append_2486) \\\n-\t$(am__append_2493) $(am__append_2500) $(am__append_2507) \\\n-\t$(am__append_2514) videoinfo.mod videotest.mod xnu_uuid.mod \\\n-\tdm_nv.mod loopback.mod cryptodisk.mod luks.mod geli.mod \\\n-\tlvm.mod ldm.mod mdraid09.mod mdraid09_be.mod mdraid1x.mod \\\n-\tdiskfilter.mod raid5rec.mod raid6rec.mod scsi.mod memdisk.mod \\\n+\t$(am__append_2045) $(am__append_2052) $(am__append_2059) \\\n+\t$(am__append_2066) $(am__append_2073) $(am__append_2080) \\\n+\t$(am__append_2087) $(am__append_2094) $(am__append_2101) \\\n+\t$(am__append_2108) help.mod hexdump.mod keystatus.mod \\\n+\t$(am__append_2115) $(am__append_2122) loadenv.mod ls.mod \\\n+\tlsmmap.mod $(am__append_2129) $(am__append_2136) \\\n+\t$(am__append_2143) $(am__append_2150) $(am__append_2157) \\\n+\t$(am__append_2164) $(am__append_2171) $(am__append_2178) \\\n+\tmemrw.mod minicmd.mod parttool.mod password.mod \\\n+\tpassword_pbkdf2.mod $(am__append_2185) $(am__append_2192) \\\n+\t$(am__append_2199) $(am__append_2206) $(am__append_2213) \\\n+\t$(am__append_2220) $(am__append_2227) $(am__append_2234) \\\n+\t$(am__append_2241) $(am__append_2248) $(am__append_2255) \\\n+\t$(am__append_2262) $(am__append_2269) $(am__append_2276) \\\n+\t$(am__append_2283) $(am__append_2290) $(am__append_2297) \\\n+\t$(am__append_2304) $(am__append_2311) $(am__append_2318) \\\n+\t$(am__append_2325) probe.mod read.mod search.mod \\\n+\tsearch_fs_file.mod search_fs_uuid.mod search_label.mod \\\n+\t$(am__append_2332) $(am__append_2339) $(am__append_2346) \\\n+\t$(am__append_2353) $(am__append_2360) $(am__append_2367) \\\n+\t$(am__append_2374) $(am__append_2381) $(am__append_2388) \\\n+\t$(am__append_2395) $(am__append_2402) $(am__append_2409) \\\n+\t$(am__append_2416) $(am__append_2423) $(am__append_2430) \\\n+\t$(am__append_2437) sleep.mod $(am__append_2444) \\\n+\t$(am__append_2451) terminal.mod test.mod true.mod \\\n+\t$(am__append_2458) $(am__append_2465) $(am__append_2472) \\\n+\t$(am__append_2479) $(am__append_2486) $(am__append_2493) \\\n+\t$(am__append_2500) $(am__append_2507) $(am__append_2514) \\\n+\tvideoinfo.mod videotest.mod xnu_uuid.mod dm_nv.mod \\\n+\tloopback.mod cryptodisk.mod luks.mod geli.mod lvm.mod ldm.mod \\\n+\tmdraid09.mod mdraid09_be.mod mdraid1x.mod diskfilter.mod \\\n+\traid5rec.mod raid6rec.mod scsi.mod memdisk.mod \\\n \t$(am__append_2521) $(am__append_2528) $(am__append_2535) \\\n \t$(am__append_2542) $(am__append_2549) $(am__append_2556) \\\n \t$(am__append_2563) $(am__append_2570) $(am__append_2577) \\\n@@ -15809,8 +15823,7 @@ MODULE_FILES = disk.module$(EXEEXT) trig.module$(EXEEXT) \\\n \t$(am__append_1978) $(am__append_1985) $(am__append_1992) \\\n \t$(am__append_1999) $(am__append_2006) $(am__append_2013) \\\n \t$(am__append_2020) $(am__append_2027) $(am__append_2034) \\\n-\thashsum.module$(EXEEXT) pgp.module$(EXEEXT) \\\n-\tverifiers.module$(EXEEXT) $(am__append_2041) \\\n+\thashsum.module$(EXEEXT) pgp.module$(EXEEXT) $(am__append_2041) \\\n \t$(am__append_2048) $(am__append_2055) $(am__append_2062) \\\n \t$(am__append_2069) $(am__append_2076) $(am__append_2083) \\\n \t$(am__append_2090) $(am__append_2097) $(am__append_2104) \\\n@@ -16164,7 +16177,7 @@ MARKER_FILES = disk.marker trig.marker $(am__append_9) \\\n \t$(am__append_1983) $(am__append_1990) $(am__append_1997) \\\n \t$(am__append_2004) $(am__append_2011) $(am__append_2018) \\\n \t$(am__append_2025) $(am__append_2032) $(am__append_2039) \\\n-\thashsum.marker pgp.marker verifiers.marker $(am__append_2046) \\\n+\thashsum.marker pgp.marker $(am__append_2046) \\\n \t$(am__append_2053) $(am__append_2060) $(am__append_2067) \\\n \t$(am__append_2074) $(am__append_2081) $(am__append_2088) \\\n \t$(am__append_2095) $(am__append_2102) $(am__append_2109) \\\n@@ -16403,6 +16416,7 @@ KERNEL_HEADER_FILES = $(top_srcdir)/include/grub/cache.h \\\n \t$(top_srcdir)/include/grub/partition.h \\\n \t$(top_srcdir)/include/grub/term.h \\\n \t$(top_srcdir)/include/grub/time.h \\\n+\t$(top_srcdir)/include/grub/verify.h \\\n \t$(top_srcdir)/include/grub/mm_private.h \\\n \t$(top_srcdir)/include/grub/net.h \\\n \t$(top_srcdir)/include/grub/memory.h $(am__append_5803) \\\n@@ -16845,12 +16859,11 @@ CLEANFILES = build-grub-pep2elf$(BUILD_EXEEXT) \\\n \t$(am__append_2009) $(am__append_2016) $(am__append_2023) \\\n \t$(am__append_2030) $(am__append_2037) \\\n \t$(nodist_hashsum_module_SOURCES) hashsum.marker \\\n-\t$(nodist_pgp_module_SOURCES) pgp.marker \\\n-\t$(nodist_verifiers_module_SOURCES) verifiers.marker \\\n-\t$(am__append_2044) $(am__append_2051) $(am__append_2058) \\\n-\t$(am__append_2065) $(am__append_2072) $(am__append_2079) \\\n-\t$(am__append_2086) $(am__append_2093) $(am__append_2100) \\\n-\t$(am__append_2107) $(nodist_help_module_SOURCES) help.marker \\\n+\t$(nodist_pgp_module_SOURCES) pgp.marker $(am__append_2044) \\\n+\t$(am__append_2051) $(am__append_2058) $(am__append_2065) \\\n+\t$(am__append_2072) $(am__append_2079) $(am__append_2086) \\\n+\t$(am__append_2093) $(am__append_2100) $(am__append_2107) \\\n+\t$(nodist_help_module_SOURCES) help.marker \\\n \t$(nodist_hexdump_module_SOURCES) hexdump.marker \\\n \t$(nodist_keystatus_module_SOURCES) keystatus.marker \\\n \t$(am__append_2114) $(am__append_2121) \\\n@@ -17313,11 +17326,11 @@ BUILT_SOURCES = $(nodist_disk_module_SOURCES) \\\n \t$(am__append_2001) $(am__append_2008) $(am__append_2015) \\\n \t$(am__append_2022) $(am__append_2029) $(am__append_2036) \\\n \t$(nodist_hashsum_module_SOURCES) $(nodist_pgp_module_SOURCES) \\\n-\t$(nodist_verifiers_module_SOURCES) $(am__append_2043) \\\n-\t$(am__append_2050) $(am__append_2057) $(am__append_2064) \\\n-\t$(am__append_2071) $(am__append_2078) $(am__append_2085) \\\n-\t$(am__append_2092) $(am__append_2099) $(am__append_2106) \\\n-\t$(nodist_help_module_SOURCES) $(nodist_hexdump_module_SOURCES) \\\n+\t$(am__append_2043) $(am__append_2050) $(am__append_2057) \\\n+\t$(am__append_2064) $(am__append_2071) $(am__append_2078) \\\n+\t$(am__append_2085) $(am__append_2092) $(am__append_2099) \\\n+\t$(am__append_2106) $(nodist_help_module_SOURCES) \\\n+\t$(nodist_hexdump_module_SOURCES) \\\n \t$(nodist_keystatus_module_SOURCES) $(am__append_2113) \\\n \t$(am__append_2120) $(nodist_loadenv_module_SOURCES) \\\n \t$(nodist_ls_module_SOURCES) $(nodist_lsmmap_module_SOURCES) \\\n@@ -20070,14 +20083,6 @@ pgp_module_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_MODULE)\n pgp_module_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_MODULE) -I$(srcdir)/lib/posix_wrap \n pgp_module_CCASFLAGS = $(AM_CCASFLAGS) $(CCASFLAGS_MODULE) \n pgp_module_DEPENDENCIES = $(TARGET_OBJ2ELF) \n-verifiers_module_SOURCES = commands/verifiers.c  ## platform sources\n-nodist_verifiers_module_SOURCES = ## platform nodist sources\n-verifiers_module_LDADD = \n-verifiers_module_CFLAGS = $(AM_CFLAGS) $(CFLAGS_MODULE) \n-verifiers_module_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_MODULE) \n-verifiers_module_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_MODULE) \n-verifiers_module_CCASFLAGS = $(AM_CCASFLAGS) $(CCASFLAGS_MODULE) \n-verifiers_module_DEPENDENCIES = $(TARGET_OBJ2ELF) \n @COND_x86_64_efi_TRUE@shim_lock_module_SOURCES = commands/efi/shim_lock.c  ## platform sources\n @COND_x86_64_efi_TRUE@nodist_shim_lock_module_SOURCES = ## platform nodist sources\n @COND_x86_64_efi_TRUE@shim_lock_module_LDADD = \n@@ -25629,7 +25634,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_arm64_efi_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n @COND_arm64_efi_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n @COND_arm64_efi_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_arm64_efi_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_arm64_efi_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_arm64_efi_TRUE@\tkern/verifiers.c\n @COND_arm_coreboot_TRUE@kernel_exec_SOURCES = kern/arm/startup.S \\\n @COND_arm_coreboot_TRUE@\tkern/arm/coreboot/init.c \\\n @COND_arm_coreboot_TRUE@\tkern/arm/coreboot/timer.c \\\n@@ -25660,7 +25666,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_arm_coreboot_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n @COND_arm_coreboot_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_arm_coreboot_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_arm_coreboot_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_arm_coreboot_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_arm_coreboot_TRUE@\tkern/verifiers.c\n @COND_arm_efi_TRUE@kernel_exec_SOURCES = kern/arm/efi/startup.S \\\n @COND_arm_efi_TRUE@\tkern/arm/efi/init.c kern/efi/fdt.c \\\n @COND_arm_efi_TRUE@\tkern/arm/dl.c kern/arm/dl_helper.c \\\n@@ -25678,7 +25685,7 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_arm_efi_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n @COND_arm_efi_TRUE@\tkern/misc.c kern/parser.c kern/partition.c \\\n @COND_arm_efi_TRUE@\tkern/rescue_parser.c kern/rescue_reader.c \\\n-@COND_arm_efi_TRUE@\tkern/term.c\n+@COND_arm_efi_TRUE@\tkern/term.c kern/verifiers.c\n @COND_arm_uboot_TRUE@kernel_exec_SOURCES = kern/arm/startup.S \\\n @COND_arm_uboot_TRUE@\tkern/arm/uboot/init.c \\\n @COND_arm_uboot_TRUE@\tkern/arm/uboot/uboot.S \\\n@@ -25698,7 +25705,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_arm_uboot_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n @COND_arm_uboot_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n @COND_arm_uboot_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_arm_uboot_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_arm_uboot_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_arm_uboot_TRUE@\tkern/verifiers.c\n @COND_emu_TRUE@kernel_exec_SOURCES = disk/host.c kern/emu/cache_s.S \\\n @COND_emu_TRUE@\tkern/emu/hostdisk.c osdep/unix/hostdisk.c \\\n @COND_emu_TRUE@\tosdep/exec.c osdep/devmapper/hostdisk.c \\\n@@ -25714,7 +25722,7 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_emu_TRUE@\tkern/fs.c kern/list.c kern/main.c kern/misc.c \\\n @COND_emu_TRUE@\tkern/parser.c kern/partition.c \\\n @COND_emu_TRUE@\tkern/rescue_parser.c kern/rescue_reader.c \\\n-@COND_emu_TRUE@\tkern/term.c\n+@COND_emu_TRUE@\tkern/term.c kern/verifiers.c\n @COND_i386_coreboot_TRUE@kernel_exec_SOURCES =  \\\n @COND_i386_coreboot_TRUE@\tkern/i386/coreboot/startup.S \\\n @COND_i386_coreboot_TRUE@\tkern/i386/coreboot/init.c \\\n@@ -25739,7 +25747,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_coreboot_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n @COND_i386_coreboot_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_i386_coreboot_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_i386_coreboot_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_i386_coreboot_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_i386_coreboot_TRUE@\tkern/verifiers.c\n @COND_i386_efi_TRUE@kernel_exec_SOURCES = kern/i386/efi/startup.S \\\n @COND_i386_efi_TRUE@\tkern/i386/efi/tsc.c \\\n @COND_i386_efi_TRUE@\tkern/i386/tsc_pmtimer.c \\\n@@ -25756,7 +25765,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_efi_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n @COND_i386_efi_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n @COND_i386_efi_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_i386_efi_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_i386_efi_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_i386_efi_TRUE@\tkern/verifiers.c\n @COND_i386_ieee1275_TRUE@kernel_exec_SOURCES =  \\\n @COND_i386_ieee1275_TRUE@\tkern/i386/ieee1275/startup.S \\\n @COND_i386_ieee1275_TRUE@\tdisk/ieee1275/ofdisk.c \\\n@@ -25777,7 +25787,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_ieee1275_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n @COND_i386_ieee1275_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_i386_ieee1275_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_i386_ieee1275_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_i386_ieee1275_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_i386_ieee1275_TRUE@\tkern/verifiers.c\n @COND_i386_multiboot_TRUE@kernel_exec_SOURCES =  \\\n @COND_i386_multiboot_TRUE@\tkern/i386/coreboot/startup.S \\\n @COND_i386_multiboot_TRUE@\tkern/i386/coreboot/init.c \\\n@@ -25796,7 +25807,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_multiboot_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_i386_multiboot_TRUE@\tkern/partition.c \\\n @COND_i386_multiboot_TRUE@\tkern/rescue_parser.c \\\n-@COND_i386_multiboot_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_i386_multiboot_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_i386_multiboot_TRUE@\tkern/verifiers.c\n @COND_i386_pc_TRUE@kernel_exec_SOURCES = kern/i386/pc/startup.S \\\n @COND_i386_pc_TRUE@\tkern/i386/pc/init.c kern/i386/pc/mmap.c \\\n @COND_i386_pc_TRUE@\tterm/i386/pc/console.c kern/i386/dl.c \\\n@@ -25808,7 +25820,7 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_pc_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n @COND_i386_pc_TRUE@\tkern/misc.c kern/parser.c kern/partition.c \\\n @COND_i386_pc_TRUE@\tkern/rescue_parser.c kern/rescue_reader.c \\\n-@COND_i386_pc_TRUE@\tkern/term.c\n+@COND_i386_pc_TRUE@\tkern/term.c kern/verifiers.c\n @COND_i386_qemu_TRUE@kernel_exec_SOURCES = kern/i386/qemu/startup.S \\\n @COND_i386_qemu_TRUE@\tkern/i386/qemu/init.c bus/pci.c \\\n @COND_i386_qemu_TRUE@\tkern/vga_init.c kern/i386/qemu/mmap.c \\\n@@ -25821,7 +25833,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_qemu_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n @COND_i386_qemu_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n @COND_i386_qemu_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_i386_qemu_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_i386_qemu_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_i386_qemu_TRUE@\tkern/verifiers.c\n @COND_i386_xen_TRUE@kernel_exec_SOURCES = kern/i386/xen/startup.S \\\n @COND_i386_xen_TRUE@\tkern/i386/dl.c kern/i386/xen/hypercall.S \\\n @COND_i386_xen_TRUE@\tkern/i386/tsc.c kern/i386/xen/tsc.c \\\n@@ -25836,7 +25849,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_xen_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n @COND_i386_xen_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n @COND_i386_xen_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_i386_xen_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_i386_xen_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_i386_xen_TRUE@\tkern/verifiers.c\n @COND_i386_xen_pvh_TRUE@kernel_exec_SOURCES =  \\\n @COND_i386_xen_pvh_TRUE@\tkern/i386/xen/startup_pvh.S \\\n @COND_i386_xen_pvh_TRUE@\tkern/i386/dl.c commands/boot.c \\\n@@ -25853,7 +25867,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_xen_pvh_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n @COND_i386_xen_pvh_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_i386_xen_pvh_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_i386_xen_pvh_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_i386_xen_pvh_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_i386_xen_pvh_TRUE@\tkern/verifiers.c\n @COND_ia64_efi_TRUE@kernel_exec_SOURCES = kern/ia64/efi/startup.S \\\n @COND_ia64_efi_TRUE@\tkern/ia64/efi/init.c kern/ia64/dl.c \\\n @COND_ia64_efi_TRUE@\tkern/ia64/dl_helper.c kern/ia64/cache.c \\\n@@ -25868,7 +25883,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_ia64_efi_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n @COND_ia64_efi_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n @COND_ia64_efi_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_ia64_efi_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_ia64_efi_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_ia64_efi_TRUE@\tkern/verifiers.c\n @COND_mips_arc_TRUE@kernel_exec_SOURCES = kern/mips/startup.S \\\n @COND_mips_arc_TRUE@\tkern/mips/arc/init.c term/arc/console.c \\\n @COND_mips_arc_TRUE@\tdisk/arc/arcdisk.c \\\n@@ -25883,7 +25899,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_mips_arc_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n @COND_mips_arc_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n @COND_mips_arc_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_mips_arc_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_mips_arc_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_mips_arc_TRUE@\tkern/verifiers.c\n @COND_mips_loongson_TRUE@kernel_exec_SOURCES = kern/mips/startup.S \\\n @COND_mips_loongson_TRUE@\tterm/ns8250.c bus/bonito.c \\\n @COND_mips_loongson_TRUE@\tbus/cs5536.c bus/pci.c \\\n@@ -25911,7 +25928,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_mips_loongson_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n @COND_mips_loongson_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_mips_loongson_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_mips_loongson_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_mips_loongson_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_mips_loongson_TRUE@\tkern/verifiers.c\n @COND_mips_qemu_mips_TRUE@kernel_exec_SOURCES = kern/mips/startup.S \\\n @COND_mips_qemu_mips_TRUE@\tkern/mips/qemu_mips/init.c \\\n @COND_mips_qemu_mips_TRUE@\tterm/ns8250.c term/serial.c \\\n@@ -25934,7 +25952,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_mips_qemu_mips_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_mips_qemu_mips_TRUE@\tkern/partition.c \\\n @COND_mips_qemu_mips_TRUE@\tkern/rescue_parser.c \\\n-@COND_mips_qemu_mips_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_mips_qemu_mips_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_mips_qemu_mips_TRUE@\tkern/verifiers.c\n @COND_powerpc_ieee1275_TRUE@kernel_exec_SOURCES =  \\\n @COND_powerpc_ieee1275_TRUE@\tkern/powerpc/ieee1275/startup.S \\\n @COND_powerpc_ieee1275_TRUE@\tkern/powerpc/cache.S \\\n@@ -25959,7 +25978,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_powerpc_ieee1275_TRUE@\tkern/main.c kern/misc.c \\\n @COND_powerpc_ieee1275_TRUE@\tkern/parser.c kern/partition.c \\\n @COND_powerpc_ieee1275_TRUE@\tkern/rescue_parser.c \\\n-@COND_powerpc_ieee1275_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_powerpc_ieee1275_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_powerpc_ieee1275_TRUE@\tkern/verifiers.c\n @COND_riscv32_efi_TRUE@kernel_exec_SOURCES = kern/riscv/efi/startup.S \\\n @COND_riscv32_efi_TRUE@\tkern/riscv/efi/init.c kern/efi/fdt.c \\\n @COND_riscv32_efi_TRUE@\tkern/riscv/cache.c \\\n@@ -25977,7 +25997,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_riscv32_efi_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n @COND_riscv32_efi_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_riscv32_efi_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_riscv32_efi_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_riscv32_efi_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_riscv32_efi_TRUE@\tkern/verifiers.c\n @COND_riscv64_efi_TRUE@kernel_exec_SOURCES = kern/riscv/efi/startup.S \\\n @COND_riscv64_efi_TRUE@\tkern/riscv/efi/init.c kern/efi/fdt.c \\\n @COND_riscv64_efi_TRUE@\tkern/riscv/cache.c \\\n@@ -25995,7 +26016,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_riscv64_efi_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n @COND_riscv64_efi_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_riscv64_efi_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_riscv64_efi_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_riscv64_efi_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_riscv64_efi_TRUE@\tkern/verifiers.c\n @COND_sparc64_ieee1275_TRUE@kernel_exec_SOURCES =  \\\n @COND_sparc64_ieee1275_TRUE@\tkern/sparc64/ieee1275/crt0.S \\\n @COND_sparc64_ieee1275_TRUE@\tkern/sparc64/cache.S \\\n@@ -26021,7 +26043,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_sparc64_ieee1275_TRUE@\tkern/main.c kern/misc.c \\\n @COND_sparc64_ieee1275_TRUE@\tkern/parser.c kern/partition.c \\\n @COND_sparc64_ieee1275_TRUE@\tkern/rescue_parser.c \\\n-@COND_sparc64_ieee1275_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_sparc64_ieee1275_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_sparc64_ieee1275_TRUE@\tkern/verifiers.c\n @COND_x86_64_efi_TRUE@kernel_exec_SOURCES = kern/x86_64/efi/startup.S \\\n @COND_x86_64_efi_TRUE@\tkern/i386/efi/tsc.c \\\n @COND_x86_64_efi_TRUE@\tkern/i386/tsc_pmtimer.c \\\n@@ -26040,7 +26063,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_x86_64_efi_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n @COND_x86_64_efi_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n @COND_x86_64_efi_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_x86_64_efi_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_x86_64_efi_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_x86_64_efi_TRUE@\tkern/verifiers.c\n @COND_x86_64_xen_TRUE@kernel_exec_SOURCES = kern/x86_64/xen/startup.S \\\n @COND_x86_64_xen_TRUE@\tkern/x86_64/dl.c \\\n @COND_x86_64_xen_TRUE@\tkern/x86_64/xen/hypercall.S \\\n@@ -26056,7 +26080,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_x86_64_xen_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n @COND_x86_64_xen_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n @COND_x86_64_xen_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_x86_64_xen_TRUE@\tkern/rescue_reader.c kern/term.c\n+@COND_x86_64_xen_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_x86_64_xen_TRUE@\tkern/verifiers.c\n @COND_arm64_efi_TRUE@nodist_kernel_exec_SOURCES = symlist.c  ## platform nodist sources\n @COND_arm_coreboot_TRUE@nodist_kernel_exec_SOURCES = symlist.c  ## platform nodist sources\n @COND_arm_efi_TRUE@nodist_kernel_exec_SOURCES = symlist.c  ## platform nodist sources\n@@ -28051,6 +28076,8 @@ kern/kernel_exec-rescue_reader.$(OBJEXT): kern/$(am__dirstamp) \\\n \tkern/$(DEPDIR)/$(am__dirstamp)\n kern/kernel_exec-term.$(OBJEXT): kern/$(am__dirstamp) \\\n \tkern/$(DEPDIR)/$(am__dirstamp)\n+kern/kernel_exec-verifiers.$(OBJEXT): kern/$(am__dirstamp) \\\n+\tkern/$(DEPDIR)/$(am__dirstamp)\n kern/arm/$(am__dirstamp):\n \t@$(MKDIR_P) kern/arm\n \t@: > kern/arm/$(am__dirstamp)\n@@ -30171,12 +30198,6 @@ video/i386/pc/vbe_module-vbe.$(OBJEXT): video/i386/pc/$(am__dirstamp) \\\n vbe.module$(EXEEXT): $(vbe_module_OBJECTS) $(vbe_module_DEPENDENCIES) $(EXTRA_vbe_module_DEPENDENCIES) \n \t@rm -f vbe.module$(EXEEXT)\n \t$(AM_V_CCLD)$(vbe_module_LINK) $(vbe_module_OBJECTS) $(vbe_module_LDADD) $(LIBS)\n-commands/verifiers_module-verifiers.$(OBJEXT):  \\\n-\tcommands/$(am__dirstamp) commands/$(DEPDIR)/$(am__dirstamp)\n-\n-verifiers.module$(EXEEXT): $(verifiers_module_OBJECTS) $(verifiers_module_DEPENDENCIES) $(EXTRA_verifiers_module_DEPENDENCIES) \n-\t@rm -f verifiers.module$(EXEEXT)\n-\t$(AM_V_CCLD)$(verifiers_module_LINK) $(verifiers_module_OBJECTS) $(verifiers_module_LDADD) $(LIBS)\n video/i386/pc/vga_module-vga.$(OBJEXT): video/i386/pc/$(am__dirstamp) \\\n \tvideo/i386/pc/$(DEPDIR)/$(am__dirstamp)\n \n@@ -30799,7 +30820,6 @@ distclean-compile:\n @AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/tr_module-tr.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/true_module-true.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/usbtest_module-usbtest.Po@am__quote@\n-@AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/verifiers_module-verifiers.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/videoinfo_module-videoinfo.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/videotest_module-videotest.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/xnu_uuid_module-xnu_uuid.Po@am__quote@\n@@ -30975,6 +30995,7 @@ distclean-compile:\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-rescue_reader.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-term.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-time.Po@am__quote@\n+@AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-verifiers.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-vga_init.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/xz_decompress_image-compiler-rt.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/arm/$(DEPDIR)/kernel_exec-cache.Po@am__quote@\n@@ -35607,6 +35628,20 @@ kern/kernel_exec-term.obj: kern/term.c\n @AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n @am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -c -o kern/kernel_exec-term.obj `if test -f 'kern/term.c'; then $(CYGPATH_W) 'kern/term.c'; else $(CYGPATH_W) '$(srcdir)/kern/term.c'; fi`\n \n+kern/kernel_exec-verifiers.o: kern/verifiers.c\n+@am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -MT kern/kernel_exec-verifiers.o -MD -MP -MF kern/$(DEPDIR)/kernel_exec-verifiers.Tpo -c -o kern/kernel_exec-verifiers.o `test -f 'kern/verifiers.c' || echo '$(srcdir)/'`kern/verifiers.c\n+@am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) kern/$(DEPDIR)/kernel_exec-verifiers.Tpo kern/$(DEPDIR)/kernel_exec-verifiers.Po\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\t$(AM_V_CC)source='kern/verifiers.c' object='kern/kernel_exec-verifiers.o' libtool=no @AMDEPBACKSLASH@\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n+@am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -c -o kern/kernel_exec-verifiers.o `test -f 'kern/verifiers.c' || echo '$(srcdir)/'`kern/verifiers.c\n+\n+kern/kernel_exec-verifiers.obj: kern/verifiers.c\n+@am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -MT kern/kernel_exec-verifiers.obj -MD -MP -MF kern/$(DEPDIR)/kernel_exec-verifiers.Tpo -c -o kern/kernel_exec-verifiers.obj `if test -f 'kern/verifiers.c'; then $(CYGPATH_W) 'kern/verifiers.c'; else $(CYGPATH_W) '$(srcdir)/kern/verifiers.c'; fi`\n+@am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) kern/$(DEPDIR)/kernel_exec-verifiers.Tpo kern/$(DEPDIR)/kernel_exec-verifiers.Po\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\t$(AM_V_CC)source='kern/verifiers.c' object='kern/kernel_exec-verifiers.obj' libtool=no @AMDEPBACKSLASH@\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n+@am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -c -o kern/kernel_exec-verifiers.obj `if test -f 'kern/verifiers.c'; then $(CYGPATH_W) 'kern/verifiers.c'; else $(CYGPATH_W) '$(srcdir)/kern/verifiers.c'; fi`\n+\n kern/arm/coreboot/kernel_exec-init.o: kern/arm/coreboot/init.c\n @am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -MT kern/arm/coreboot/kernel_exec-init.o -MD -MP -MF kern/arm/coreboot/$(DEPDIR)/kernel_exec-init.Tpo -c -o kern/arm/coreboot/kernel_exec-init.o `test -f 'kern/arm/coreboot/init.c' || echo '$(srcdir)/'`kern/arm/coreboot/init.c\n @am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) kern/arm/coreboot/$(DEPDIR)/kernel_exec-init.Tpo kern/arm/coreboot/$(DEPDIR)/kernel_exec-init.Po\n@@ -40983,20 +41018,6 @@ video/i386/pc/vbe_module-vbe.obj: video/i386/pc/vbe.c\n @AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n @am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vbe_module_CPPFLAGS) $(CPPFLAGS) $(vbe_module_CFLAGS) $(CFLAGS) -c -o video/i386/pc/vbe_module-vbe.obj `if test -f 'video/i386/pc/vbe.c'; then $(CYGPATH_W) 'video/i386/pc/vbe.c'; else $(CYGPATH_W) '$(srcdir)/video/i386/pc/vbe.c'; fi`\n \n-commands/verifiers_module-verifiers.o: commands/verifiers.c\n-@am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(verifiers_module_CPPFLAGS) $(CPPFLAGS) $(verifiers_module_CFLAGS) $(CFLAGS) -MT commands/verifiers_module-verifiers.o -MD -MP -MF commands/$(DEPDIR)/verifiers_module-verifiers.Tpo -c -o commands/verifiers_module-verifiers.o `test -f 'commands/verifiers.c' || echo '$(srcdir)/'`commands/verifiers.c\n-@am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) commands/$(DEPDIR)/verifiers_module-verifiers.Tpo commands/$(DEPDIR)/verifiers_module-verifiers.Po\n-@AMDEP_TRUE@@am__fastdepCC_FALSE@\t$(AM_V_CC)source='commands/verifiers.c' object='commands/verifiers_module-verifiers.o' libtool=no @AMDEPBACKSLASH@\n-@AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n-@am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(verifiers_module_CPPFLAGS) $(CPPFLAGS) $(verifiers_module_CFLAGS) $(CFLAGS) -c -o commands/verifiers_module-verifiers.o `test -f 'commands/verifiers.c' || echo '$(srcdir)/'`commands/verifiers.c\n-\n-commands/verifiers_module-verifiers.obj: commands/verifiers.c\n-@am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(verifiers_module_CPPFLAGS) $(CPPFLAGS) $(verifiers_module_CFLAGS) $(CFLAGS) -MT commands/verifiers_module-verifiers.obj -MD -MP -MF commands/$(DEPDIR)/verifiers_module-verifiers.Tpo -c -o commands/verifiers_module-verifiers.obj `if test -f 'commands/verifiers.c'; then $(CYGPATH_W) 'commands/verifiers.c'; else $(CYGPATH_W) '$(srcdir)/commands/verifiers.c'; fi`\n-@am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) commands/$(DEPDIR)/verifiers_module-verifiers.Tpo commands/$(DEPDIR)/verifiers_module-verifiers.Po\n-@AMDEP_TRUE@@am__fastdepCC_FALSE@\t$(AM_V_CC)source='commands/verifiers.c' object='commands/verifiers_module-verifiers.obj' libtool=no @AMDEPBACKSLASH@\n-@AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n-@am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(verifiers_module_CPPFLAGS) $(CPPFLAGS) $(verifiers_module_CFLAGS) $(CFLAGS) -c -o commands/verifiers_module-verifiers.obj `if test -f 'commands/verifiers.c'; then $(CYGPATH_W) 'commands/verifiers.c'; else $(CYGPATH_W) '$(srcdir)/commands/verifiers.c'; fi`\n-\n video/i386/pc/vga_module-vga.o: video/i386/pc/vga.c\n @am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(vga_module_CPPFLAGS) $(CPPFLAGS) $(vga_module_CFLAGS) $(CFLAGS) -MT video/i386/pc/vga_module-vga.o -MD -MP -MF video/i386/pc/$(DEPDIR)/vga_module-vga.Tpo -c -o video/i386/pc/vga_module-vga.o `test -f 'video/i386/pc/vga.c' || echo '$(srcdir)/'`video/i386/pc/vga.c\n @am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) video/i386/pc/$(DEPDIR)/vga_module-vga.Tpo video/i386/pc/$(DEPDIR)/vga_module-vga.Po\n@@ -43717,10 +43738,6 @@ pgp.marker: $(pgp_module_SOURCES) $(nodist_pgp_module_SOURCES)\n \t$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pgp_module_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)\n \tgrep 'MARKER' $@.new > $@; rm -f $@.new\n \n-verifiers.marker: $(verifiers_module_SOURCES) $(nodist_verifiers_module_SOURCES)\n-\t$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(verifiers_module_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)\n-\tgrep 'MARKER' $@.new > $@; rm -f $@.new\n-\n @COND_x86_64_efi_TRUE@shim_lock.marker: $(shim_lock_module_SOURCES) $(nodist_shim_lock_module_SOURCES)\n @COND_x86_64_efi_TRUE@\t$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shim_lock_module_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)\n @COND_x86_64_efi_TRUE@\tgrep 'MARKER' $@.new > $@; rm -f $@.new\ndiff --git a/grub-core/commands/verifiers.c b/grub-core/commands/verifiers.c\ndeleted file mode 100644\nindex 0dde481..0000000\n--- a/grub-core/commands/verifiers.c\n+++ /dev/null\n@@ -1,228 +0,0 @@\n-/*\n- *  GRUB  --  GRand Unified Bootloader\n- *  Copyright (C) 2017  Free Software Foundation, Inc.\n- *\n- *  GRUB is free software: you can redistribute it and/or modify\n- *  it under the terms of the GNU General Public License as published by\n- *  the Free Software Foundation, either version 3 of the License, or\n- *  (at your option) any later version.\n- *\n- *  GRUB is distributed in the hope that it will be useful,\n- *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n- *  GNU General Public License for more details.\n- *\n- *  You should have received a copy of the GNU General Public License\n- *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.\n- *\n- *  Verifiers helper.\n- */\n-\n-#include <grub/file.h>\n-#include <grub/verify.h>\n-#include <grub/dl.h>\n-\n-GRUB_MOD_LICENSE (\"GPLv3+\");\n-\n-struct grub_file_verifier *grub_file_verifiers;\n-\n-struct grub_verified\n-{\n-  grub_file_t file;\n-  void *buf;\n-};\n-typedef struct grub_verified *grub_verified_t;\n-\n-static void\n-verified_free (grub_verified_t verified)\n-{\n-  if (verified)\n-    {\n-      grub_free (verified->buf);\n-      grub_free (verified);\n-    }\n-}\n-\n-static grub_ssize_t\n-verified_read (struct grub_file *file, char *buf, grub_size_t len)\n-{\n-  grub_verified_t verified = file->data;\n-\n-  grub_memcpy (buf, (char *) verified->buf + file->offset, len);\n-  return len;\n-}\n-\n-static grub_err_t\n-verified_close (struct grub_file *file)\n-{\n-  grub_verified_t verified = file->data;\n-\n-  grub_file_close (verified->file);\n-  verified_free (verified);\n-  file->data = 0;\n-\n-  /* Device and name are freed by parent. */\n-  file->device = 0;\n-  file->name = 0;\n-\n-  return grub_errno;\n-}\n-\n-struct grub_fs verified_fs =\n-{\n-  .name = \"verified_read\",\n-  .fs_read = verified_read,\n-  .fs_close = verified_close\n-};\n-\n-static grub_file_t\n-grub_verifiers_open (grub_file_t io, enum grub_file_type type)\n-{\n-  grub_verified_t verified = NULL;\n-  struct grub_file_verifier *ver;\n-  void *context;\n-  grub_file_t ret = 0;\n-  grub_err_t err;\n-  int defer = 0;\n-\n-  grub_dprintf (\"verify\", \"file: %s type: %d\\n\", io->name, type);\n-\n-  if ((type & GRUB_FILE_TYPE_MASK) == GRUB_FILE_TYPE_SIGNATURE\n-      || (type & GRUB_FILE_TYPE_MASK) == GRUB_FILE_TYPE_VERIFY_SIGNATURE\n-      || (type & GRUB_FILE_TYPE_SKIP_SIGNATURE))\n-    return io;\n-\n-  if (io->device->disk &&\n-      (io->device->disk->dev->id == GRUB_DISK_DEVICE_MEMDISK_ID\n-       || io->device->disk->dev->id == GRUB_DISK_DEVICE_PROCFS_ID))\n-    return io;\n-\n-  FOR_LIST_ELEMENTS(ver, grub_file_verifiers)\n-    {\n-      enum grub_verify_flags flags = 0;\n-      err = ver->init (io, type, &context, &flags);\n-      if (err)\n-\tgoto fail_noclose;\n-      if (flags & GRUB_VERIFY_FLAGS_DEFER_AUTH)\n-\t{\n-\t  defer = 1;\n-\t  continue;\n-\t}\n-      if (!(flags & GRUB_VERIFY_FLAGS_SKIP_VERIFICATION))\n-\tbreak;\n-    }\n-\n-  if (!ver)\n-    {\n-      if (defer)\n-\t{\n-\t  grub_error (GRUB_ERR_ACCESS_DENIED,\n-\t\t      N_(\"verification requested but nobody cares: %s\"), io->name);\n-\t  goto fail_noclose;\n-\t}\n-\n-      /* No verifiers wanted to verify. Just return underlying file. */\n-      return io;\n-    }\n-\n-  ret = grub_malloc (sizeof (*ret));\n-  if (!ret)\n-    {\n-      goto fail;\n-    }\n-  *ret = *io;\n-\n-  ret->fs = &verified_fs;\n-  ret->not_easily_seekable = 0;\n-  if (ret->size >> (sizeof (grub_size_t) * GRUB_CHAR_BIT - 1))\n-    {\n-      grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,\n-\t\t  N_(\"big file signature isn't implemented yet\"));\n-      goto fail;\n-    }\n-  verified = grub_malloc (sizeof (*verified));\n-  if (!verified)\n-    {\n-      goto fail;\n-    }\n-  verified->buf = grub_malloc (ret->size);\n-  if (!verified->buf)\n-    {\n-      goto fail;\n-    }\n-  if (grub_file_read (io, verified->buf, ret->size) != (grub_ssize_t) ret->size)\n-    {\n-      if (!grub_errno)\n-\tgrub_error (GRUB_ERR_FILE_READ_ERROR, N_(\"premature end of file %s\"),\n-\t\t    io->name);\n-      goto fail;\n-    }\n-\n-  err = ver->write (context, verified->buf, ret->size);\n-  if (err)\n-    goto fail;\n-\n-  err = ver->fini ? ver->fini (context) : GRUB_ERR_NONE;\n-  if (err)\n-    goto fail;\n-\n-  if (ver->close)\n-    ver->close (context);\n-\n-  FOR_LIST_ELEMENTS_NEXT(ver, grub_file_verifiers)\n-    {\n-      enum grub_verify_flags flags = 0;\n-      err = ver->init (io, type, &context, &flags);\n-      if (err)\n-\tgoto fail_noclose;\n-      if (flags & GRUB_VERIFY_FLAGS_SKIP_VERIFICATION ||\n-\t  /* Verification done earlier. So, we are happy here. */\n-\t  flags & GRUB_VERIFY_FLAGS_DEFER_AUTH)\n-\tcontinue;\n-      err = ver->write (context, verified->buf, ret->size);\n-      if (err)\n-\tgoto fail;\n-\n-      err = ver->fini ? ver->fini (context) : GRUB_ERR_NONE;\n-      if (err)\n-\tgoto fail;\n-\n-      if (ver->close)\n-\tver->close (context);\n-    }\n-\n-  verified->file = io;\n-  ret->data = verified;\n-  return ret;\n-\n- fail:\n-  ver->close (context);\n- fail_noclose:\n-  verified_free (verified);\n-  grub_free (ret);\n-  return NULL;\n-}\n-\n-grub_err_t\n-grub_verify_string (char *str, enum grub_verify_string_type type)\n-{\n-  struct grub_file_verifier *ver;\n-  FOR_LIST_ELEMENTS(ver, grub_file_verifiers)\n-    {\n-      grub_err_t err;\n-      err = ver->verify_string ? ver->verify_string (str, type) : GRUB_ERR_NONE;\n-      if (err)\n-\treturn err;\n-    }\n-  return GRUB_ERR_NONE;\n-}\n-\n-GRUB_MOD_INIT(verifiers)\n-{\n-  grub_file_filter_register (GRUB_FILE_FILTER_VERIFY, grub_verifiers_open);\n-}\n-\n-GRUB_MOD_FINI(verifiers)\n-{\n-  grub_file_filter_unregister (GRUB_FILE_FILTER_VERIFY);\n-}\ndiff --git a/grub-core/kern/main.c b/grub-core/kern/main.c\nindex 9cad0c4..73967e2 100644\n--- a/grub-core/kern/main.c\n+++ b/grub-core/kern/main.c\n@@ -29,6 +29,7 @@\n #include <grub/command.h>\n #include <grub/reader.h>\n #include <grub/parser.h>\n+#include <grub/verify.h>\n \n #ifdef GRUB_MACHINE_PCBIOS\n #include <grub/machine/memory.h>\n@@ -274,6 +275,9 @@ grub_main (void)\n   grub_printf (\"Welcome to GRUB!\\n\\n\");\n   grub_setcolorstate (GRUB_TERM_COLOR_STANDARD);\n \n+  /* Init verifiers API. */\n+  grub_verifiers_init ();\n+\n   grub_load_config ();\n \n   grub_boot_time (\"Before loading embedded modules.\");\ndiff --git a/grub-core/kern/verifiers.c b/grub-core/kern/verifiers.c\nnew file mode 100644\nindex 0000000..aa3dc7c\n--- /dev/null\n+++ b/grub-core/kern/verifiers.c\n@@ -0,0 +1,224 @@\n+/*\n+ *  GRUB  --  GRand Unified Bootloader\n+ *  Copyright (C) 2017  Free Software Foundation, Inc.\n+ *\n+ *  GRUB is free software: you can redistribute it and/or modify\n+ *  it under the terms of the GNU General Public License as published by\n+ *  the Free Software Foundation, either version 3 of the License, or\n+ *  (at your option) any later version.\n+ *\n+ *  GRUB is distributed in the hope that it will be useful,\n+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ *  GNU General Public License for more details.\n+ *\n+ *  You should have received a copy of the GNU General Public License\n+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.\n+ *\n+ *  Verifiers helper.\n+ */\n+\n+#include <grub/file.h>\n+#include <grub/verify.h>\n+#include <grub/dl.h>\n+\n+GRUB_MOD_LICENSE (\"GPLv3+\");\n+\n+struct grub_file_verifier *grub_file_verifiers;\n+\n+struct grub_verified\n+{\n+  grub_file_t file;\n+  void *buf;\n+};\n+typedef struct grub_verified *grub_verified_t;\n+\n+static void\n+verified_free (grub_verified_t verified)\n+{\n+  if (verified)\n+    {\n+      grub_free (verified->buf);\n+      grub_free (verified);\n+    }\n+}\n+\n+static grub_ssize_t\n+verified_read (struct grub_file *file, char *buf, grub_size_t len)\n+{\n+  grub_verified_t verified = file->data;\n+\n+  grub_memcpy (buf, (char *) verified->buf + file->offset, len);\n+  return len;\n+}\n+\n+static grub_err_t\n+verified_close (struct grub_file *file)\n+{\n+  grub_verified_t verified = file->data;\n+\n+  grub_file_close (verified->file);\n+  verified_free (verified);\n+  file->data = 0;\n+\n+  /* Device and name are freed by parent. */\n+  file->device = 0;\n+  file->name = 0;\n+\n+  return grub_errno;\n+}\n+\n+struct grub_fs verified_fs =\n+{\n+  .name = \"verified_read\",\n+  .fs_read = verified_read,\n+  .fs_close = verified_close\n+};\n+\n+static grub_file_t\n+grub_verifiers_open (grub_file_t io, enum grub_file_type type)\n+{\n+  grub_verified_t verified = NULL;\n+  struct grub_file_verifier *ver;\n+  void *context;\n+  grub_file_t ret = 0;\n+  grub_err_t err;\n+  int defer = 0;\n+\n+  grub_dprintf (\"verify\", \"file: %s type: %d\\n\", io->name, type);\n+\n+  if ((type & GRUB_FILE_TYPE_MASK) == GRUB_FILE_TYPE_SIGNATURE\n+      || (type & GRUB_FILE_TYPE_MASK) == GRUB_FILE_TYPE_VERIFY_SIGNATURE\n+      || (type & GRUB_FILE_TYPE_SKIP_SIGNATURE))\n+    return io;\n+\n+  if (io->device->disk &&\n+      (io->device->disk->dev->id == GRUB_DISK_DEVICE_MEMDISK_ID\n+       || io->device->disk->dev->id == GRUB_DISK_DEVICE_PROCFS_ID))\n+    return io;\n+\n+  FOR_LIST_ELEMENTS(ver, grub_file_verifiers)\n+    {\n+      enum grub_verify_flags flags = 0;\n+      err = ver->init (io, type, &context, &flags);\n+      if (err)\n+\tgoto fail_noclose;\n+      if (flags & GRUB_VERIFY_FLAGS_DEFER_AUTH)\n+\t{\n+\t  defer = 1;\n+\t  continue;\n+\t}\n+      if (!(flags & GRUB_VERIFY_FLAGS_SKIP_VERIFICATION))\n+\tbreak;\n+    }\n+\n+  if (!ver)\n+    {\n+      if (defer)\n+\t{\n+\t  grub_error (GRUB_ERR_ACCESS_DENIED,\n+\t\t      N_(\"verification requested but nobody cares: %s\"), io->name);\n+\t  goto fail_noclose;\n+\t}\n+\n+      /* No verifiers wanted to verify. Just return underlying file. */\n+      return io;\n+    }\n+\n+  ret = grub_malloc (sizeof (*ret));\n+  if (!ret)\n+    {\n+      goto fail;\n+    }\n+  *ret = *io;\n+\n+  ret->fs = &verified_fs;\n+  ret->not_easily_seekable = 0;\n+  if (ret->size >> (sizeof (grub_size_t) * GRUB_CHAR_BIT - 1))\n+    {\n+      grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,\n+\t\t  N_(\"big file signature isn't implemented yet\"));\n+      goto fail;\n+    }\n+  verified = grub_malloc (sizeof (*verified));\n+  if (!verified)\n+    {\n+      goto fail;\n+    }\n+  verified->buf = grub_malloc (ret->size);\n+  if (!verified->buf)\n+    {\n+      goto fail;\n+    }\n+  if (grub_file_read (io, verified->buf, ret->size) != (grub_ssize_t) ret->size)\n+    {\n+      if (!grub_errno)\n+\tgrub_error (GRUB_ERR_FILE_READ_ERROR, N_(\"premature end of file %s\"),\n+\t\t    io->name);\n+      goto fail;\n+    }\n+\n+  err = ver->write (context, verified->buf, ret->size);\n+  if (err)\n+    goto fail;\n+\n+  err = ver->fini ? ver->fini (context) : GRUB_ERR_NONE;\n+  if (err)\n+    goto fail;\n+\n+  if (ver->close)\n+    ver->close (context);\n+\n+  FOR_LIST_ELEMENTS_NEXT(ver, grub_file_verifiers)\n+    {\n+      enum grub_verify_flags flags = 0;\n+      err = ver->init (io, type, &context, &flags);\n+      if (err)\n+\tgoto fail_noclose;\n+      if (flags & GRUB_VERIFY_FLAGS_SKIP_VERIFICATION ||\n+\t  /* Verification done earlier. So, we are happy here. */\n+\t  flags & GRUB_VERIFY_FLAGS_DEFER_AUTH)\n+\tcontinue;\n+      err = ver->write (context, verified->buf, ret->size);\n+      if (err)\n+\tgoto fail;\n+\n+      err = ver->fini ? ver->fini (context) : GRUB_ERR_NONE;\n+      if (err)\n+\tgoto fail;\n+\n+      if (ver->close)\n+\tver->close (context);\n+    }\n+\n+  verified->file = io;\n+  ret->data = verified;\n+  return ret;\n+\n+ fail:\n+  ver->close (context);\n+ fail_noclose:\n+  verified_free (verified);\n+  grub_free (ret);\n+  return NULL;\n+}\n+\n+grub_err_t\n+grub_verify_string (char *str, enum grub_verify_string_type type)\n+{\n+  struct grub_file_verifier *ver;\n+  FOR_LIST_ELEMENTS(ver, grub_file_verifiers)\n+    {\n+      grub_err_t err;\n+      err = ver->verify_string ? ver->verify_string (str, type) : GRUB_ERR_NONE;\n+      if (err)\n+\treturn err;\n+    }\n+  return GRUB_ERR_NONE;\n+}\n+\n+void\n+grub_verifiers_init (void)\n+{\n+  grub_file_filter_register (GRUB_FILE_FILTER_VERIFY, grub_verifiers_open);\n+}\ndiff --git a/include/grub/verify.h b/include/grub/verify.h\nindex ea04914..cd129c3 100644\n--- a/include/grub/verify.h\n+++ b/include/grub/verify.h\n@@ -64,7 +64,10 @@ struct grub_file_verifier\n   grub_err_t (*verify_string) (char *str, enum grub_verify_string_type type);\n };\n \n-extern struct grub_file_verifier *grub_file_verifiers;\n+extern struct grub_file_verifier *EXPORT_VAR (grub_file_verifiers);\n+\n+extern void\n+grub_verifiers_init (void);\n \n static inline void\n grub_verifier_register (struct grub_file_verifier *ver)\n@@ -78,7 +81,7 @@ grub_verifier_unregister (struct grub_file_verifier *ver)\n   grub_list_remove (GRUB_AS_LIST (ver));\n }\n \n-grub_err_t\n-grub_verify_string (char *str, enum grub_verify_string_type type);\n+extern grub_err_t\n+EXPORT_FUNC (grub_verify_string) (char *str, enum grub_verify_string_type type);\n \n #endif /* ! GRUB_VERIFY_HEADER */\ndiff --git a/po/POTFILES.in b/po/POTFILES.in\nindex 22543be..11c799f 100644\n--- a/po/POTFILES.in\n+++ b/po/POTFILES.in\n@@ -107,7 +107,6 @@\n ./grub-core/commands/tr.c\n ./grub-core/commands/true.c\n ./grub-core/commands/usbtest.c\n-./grub-core/commands/verifiers.c\n ./grub-core/commands/videoinfo.c\n ./grub-core/commands/videotest.c\n ./grub-core/commands/wildcard.c\n@@ -334,6 +333,7 @@\n ./grub-core/kern/uboot/hw.c\n ./grub-core/kern/uboot/init.c\n ./grub-core/kern/uboot/uboot.c\n+./grub-core/kern/verifiers.c\n ./grub-core/kern/vga_init.c\n ./grub-core/kern/x86_64/dl.c\n ./grub-core/kern/xen/init.c\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0034-efi-Move-the-shim_lock-verifier-to-the-GRUB-core.patch",
    "content": "From 5e280caa6530ed160dcf2920c94f1605fb1f1f7c Mon Sep 17 00:00:00 2001\nFrom: Marco A Benatto <mbenatto@redhat.com>\nDate: Wed, 23 Sep 2020 14:21:14 -0400\nSubject: [PATCH] efi: Move the shim_lock verifier to the GRUB core\n\nMove the shim_lock verifier from its own module into the core image. The\nSecure Boot lockdown mechanism has the intent to prevent the load of any\nunsigned code or binary when Secure Boot is enabled.\n\nThe reason is that GRUB must be able to prevent executing untrusted code\nif UEFI Secure Boot is enabled, without depending on external modules.\n\nSigned-off-by: Marco A Benatto <mbenatto@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n[Add changes to generated files]\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n docs/grub.texi                     |     9 +-\n grub-core/Makefile.core.am         |    23 -\n grub-core/Makefile.core.def        |     6 -\n grub-core/Makefile.in              | 11139 +++++++++++++++++------------------\n grub-core/commands/efi/shim_lock.c |   130 -\n grub-core/kern/efi/init.c          |     4 +\n grub-core/kern/efi/sb.c            |   105 +\n include/grub/efi/sb.h              |     3 +\n po/POTFILES.in                     |     1 -\n 9 files changed, 5657 insertions(+), 5763 deletions(-)\n delete mode 100644 grub-core/commands/efi/shim_lock.c\n\ndiff --git a/docs/grub.texi b/docs/grub.texi\nindex 8779507..aefe032 100644\n--- a/docs/grub.texi\n+++ b/docs/grub.texi\n@@ -5747,15 +5747,16 @@ secure boot chain.\n @section UEFI secure boot and shim support\n \n The GRUB, except the @command{chainloader} command, works with the UEFI secure\n-boot and the shim. This functionality is provided by the shim_lock module. It\n-is recommend to build in this and other required modules into the @file{core.img}.\n+boot and the shim. This functionality is provided by the shim_lock verifier. It\n+is built into the @file{core.img} and is registered if the UEFI secure boot is\n+enabled.\n+\n All modules not stored in the @file{core.img} and the ACPI tables for the\n @command{acpi} command have to be signed, e.g. using PGP. Additionally, the\n @command{iorw}, the @command{memrw} and the @command{wrmsr} commands are\n prohibited if the UEFI secure boot is enabled. This is done due to\n security reasons. All above mentioned requirements are enforced by the\n-shim_lock module. And itself it is a persistent module which means that\n-it cannot be unloaded if it was loaded into the memory.\n+shim_lock verifier logic.\n \n @node Measured Boot\n @section Measuring boot components\ndiff --git a/grub-core/Makefile.core.am b/grub-core/Makefile.core.am\nindex c4d67d4..5623a5e 100644\n--- a/grub-core/Makefile.core.am\n+++ b/grub-core/Makefile.core.am\n@@ -6954,29 +6954,6 @@ pgp.marker: $(pgp_module_SOURCES) $(nodist_pgp_module_SOURCES)\n \t$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pgp_module_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)\n \tgrep 'MARKER' $@.new > $@; rm -f $@.new\n \n-if COND_x86_64_efi\n-platform_PROGRAMS += shim_lock.module\n-MODULE_FILES += shim_lock.module$(EXEEXT)\n-shim_lock_module_SOURCES  = commands/efi/shim_lock.c  ## platform sources\n-nodist_shim_lock_module_SOURCES  =  ## platform nodist sources\n-shim_lock_module_LDADD  = \n-shim_lock_module_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_MODULE) \n-shim_lock_module_LDFLAGS  = $(AM_LDFLAGS) $(LDFLAGS_MODULE) \n-shim_lock_module_CPPFLAGS  = $(AM_CPPFLAGS) $(CPPFLAGS_MODULE) \n-shim_lock_module_CCASFLAGS  = $(AM_CCASFLAGS) $(CCASFLAGS_MODULE) \n-shim_lock_module_DEPENDENCIES  = $(TARGET_OBJ2ELF) \n-dist_noinst_DATA += \n-BUILT_SOURCES += $(nodist_shim_lock_module_SOURCES)\n-CLEANFILES += $(nodist_shim_lock_module_SOURCES)\n-MOD_FILES += shim_lock.mod\n-MARKER_FILES += shim_lock.marker\n-CLEANFILES += shim_lock.marker\n-\n-shim_lock.marker: $(shim_lock_module_SOURCES) $(nodist_shim_lock_module_SOURCES)\n-\t$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shim_lock_module_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)\n-\tgrep 'MARKER' $@.new > $@; rm -f $@.new\n-endif\n-\n if COND_i386_pc\n platform_PROGRAMS += hdparm.module\n MODULE_FILES += hdparm.module$(EXEEXT)\ndiff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def\nindex f6c0348..4d380ed 100644\n--- a/grub-core/Makefile.core.def\n+++ b/grub-core/Makefile.core.def\n@@ -944,12 +944,6 @@ module = {\n   cppflags = '-I$(srcdir)/lib/posix_wrap';\n };\n \n-module = {\n-  name = shim_lock;\n-  common = commands/efi/shim_lock.c;\n-  enable = x86_64_efi;\n-};\n-\n module = {\n   name = hdparm;\n   common = commands/hdparm.c;\ndiff --git a/grub-core/Makefile.in b/grub-core/Makefile.in\nindex 8930714..09dc802 100644\n--- a/grub-core/Makefile.in\n+++ b/grub-core/Makefile.in\n@@ -205,36 +205,36 @@ platform_PROGRAMS = disk.module$(EXEEXT) trig.module$(EXEEXT) \\\n \t$(am__EXEEXT_293) $(am__EXEEXT_294) $(am__EXEEXT_295) \\\n \t$(am__EXEEXT_296) $(am__EXEEXT_297) $(am__EXEEXT_298) \\\n \t$(am__EXEEXT_299) $(am__EXEEXT_300) $(am__EXEEXT_301) \\\n-\t$(am__EXEEXT_302) help.module$(EXEEXT) hexdump.module$(EXEEXT) \\\n-\tkeystatus.module$(EXEEXT) $(am__EXEEXT_303) $(am__EXEEXT_304) \\\n+\thelp.module$(EXEEXT) hexdump.module$(EXEEXT) \\\n+\tkeystatus.module$(EXEEXT) $(am__EXEEXT_302) $(am__EXEEXT_303) \\\n \tloadenv.module$(EXEEXT) ls.module$(EXEEXT) \\\n-\tlsmmap.module$(EXEEXT) $(am__EXEEXT_305) $(am__EXEEXT_306) \\\n-\t$(am__EXEEXT_307) $(am__EXEEXT_308) $(am__EXEEXT_309) \\\n-\t$(am__EXEEXT_310) $(am__EXEEXT_311) $(am__EXEEXT_312) \\\n+\tlsmmap.module$(EXEEXT) $(am__EXEEXT_304) $(am__EXEEXT_305) \\\n+\t$(am__EXEEXT_306) $(am__EXEEXT_307) $(am__EXEEXT_308) \\\n+\t$(am__EXEEXT_309) $(am__EXEEXT_310) $(am__EXEEXT_311) \\\n \tmemrw.module$(EXEEXT) minicmd.module$(EXEEXT) \\\n \tparttool.module$(EXEEXT) password.module$(EXEEXT) \\\n-\tpassword_pbkdf2.module$(EXEEXT) $(am__EXEEXT_313) \\\n-\t$(am__EXEEXT_314) $(am__EXEEXT_315) $(am__EXEEXT_316) \\\n-\t$(am__EXEEXT_317) $(am__EXEEXT_318) $(am__EXEEXT_319) \\\n-\t$(am__EXEEXT_320) $(am__EXEEXT_321) $(am__EXEEXT_322) \\\n-\t$(am__EXEEXT_323) $(am__EXEEXT_324) $(am__EXEEXT_325) \\\n-\t$(am__EXEEXT_326) $(am__EXEEXT_327) $(am__EXEEXT_328) \\\n-\t$(am__EXEEXT_329) $(am__EXEEXT_330) $(am__EXEEXT_331) \\\n-\t$(am__EXEEXT_332) $(am__EXEEXT_333) probe.module$(EXEEXT) \\\n+\tpassword_pbkdf2.module$(EXEEXT) $(am__EXEEXT_312) \\\n+\t$(am__EXEEXT_313) $(am__EXEEXT_314) $(am__EXEEXT_315) \\\n+\t$(am__EXEEXT_316) $(am__EXEEXT_317) $(am__EXEEXT_318) \\\n+\t$(am__EXEEXT_319) $(am__EXEEXT_320) $(am__EXEEXT_321) \\\n+\t$(am__EXEEXT_322) $(am__EXEEXT_323) $(am__EXEEXT_324) \\\n+\t$(am__EXEEXT_325) $(am__EXEEXT_326) $(am__EXEEXT_327) \\\n+\t$(am__EXEEXT_328) $(am__EXEEXT_329) $(am__EXEEXT_330) \\\n+\t$(am__EXEEXT_331) $(am__EXEEXT_332) probe.module$(EXEEXT) \\\n \tread.module$(EXEEXT) search.module$(EXEEXT) \\\n \tsearch_fs_file.module$(EXEEXT) search_fs_uuid.module$(EXEEXT) \\\n-\tsearch_label.module$(EXEEXT) $(am__EXEEXT_334) \\\n-\t$(am__EXEEXT_335) $(am__EXEEXT_336) $(am__EXEEXT_337) \\\n-\t$(am__EXEEXT_338) $(am__EXEEXT_339) $(am__EXEEXT_340) \\\n-\t$(am__EXEEXT_341) $(am__EXEEXT_342) $(am__EXEEXT_343) \\\n-\t$(am__EXEEXT_344) $(am__EXEEXT_345) $(am__EXEEXT_346) \\\n-\t$(am__EXEEXT_347) $(am__EXEEXT_348) $(am__EXEEXT_349) \\\n-\tsleep.module$(EXEEXT) $(am__EXEEXT_350) $(am__EXEEXT_351) \\\n+\tsearch_label.module$(EXEEXT) $(am__EXEEXT_333) \\\n+\t$(am__EXEEXT_334) $(am__EXEEXT_335) $(am__EXEEXT_336) \\\n+\t$(am__EXEEXT_337) $(am__EXEEXT_338) $(am__EXEEXT_339) \\\n+\t$(am__EXEEXT_340) $(am__EXEEXT_341) $(am__EXEEXT_342) \\\n+\t$(am__EXEEXT_343) $(am__EXEEXT_344) $(am__EXEEXT_345) \\\n+\t$(am__EXEEXT_346) $(am__EXEEXT_347) $(am__EXEEXT_348) \\\n+\tsleep.module$(EXEEXT) $(am__EXEEXT_349) $(am__EXEEXT_350) \\\n \tterminal.module$(EXEEXT) test.module$(EXEEXT) \\\n-\ttrue.module$(EXEEXT) $(am__EXEEXT_352) $(am__EXEEXT_353) \\\n-\t$(am__EXEEXT_354) $(am__EXEEXT_355) $(am__EXEEXT_356) \\\n-\t$(am__EXEEXT_357) $(am__EXEEXT_358) $(am__EXEEXT_359) \\\n-\t$(am__EXEEXT_360) videoinfo.module$(EXEEXT) \\\n+\ttrue.module$(EXEEXT) $(am__EXEEXT_351) $(am__EXEEXT_352) \\\n+\t$(am__EXEEXT_353) $(am__EXEEXT_354) $(am__EXEEXT_355) \\\n+\t$(am__EXEEXT_356) $(am__EXEEXT_357) $(am__EXEEXT_358) \\\n+\t$(am__EXEEXT_359) videoinfo.module$(EXEEXT) \\\n \tvideotest.module$(EXEEXT) xnu_uuid.module$(EXEEXT) \\\n \tdm_nv.module$(EXEEXT) loopback.module$(EXEEXT) \\\n \tcryptodisk.module$(EXEEXT) luks.module$(EXEEXT) \\\n@@ -242,27 +242,27 @@ platform_PROGRAMS = disk.module$(EXEEXT) trig.module$(EXEEXT) \\\n \tmdraid09.module$(EXEEXT) mdraid09_be.module$(EXEEXT) \\\n \tmdraid1x.module$(EXEEXT) diskfilter.module$(EXEEXT) \\\n \traid5rec.module$(EXEEXT) raid6rec.module$(EXEEXT) \\\n-\tscsi.module$(EXEEXT) memdisk.module$(EXEEXT) $(am__EXEEXT_361) \\\n-\t$(am__EXEEXT_362) $(am__EXEEXT_363) $(am__EXEEXT_364) \\\n-\t$(am__EXEEXT_365) $(am__EXEEXT_366) $(am__EXEEXT_367) \\\n-\t$(am__EXEEXT_368) $(am__EXEEXT_369) $(am__EXEEXT_370) \\\n-\t$(am__EXEEXT_371) $(am__EXEEXT_372) $(am__EXEEXT_373) \\\n-\t$(am__EXEEXT_374) $(am__EXEEXT_375) $(am__EXEEXT_376) \\\n-\t$(am__EXEEXT_377) $(am__EXEEXT_378) $(am__EXEEXT_379) \\\n-\t$(am__EXEEXT_380) $(am__EXEEXT_381) $(am__EXEEXT_382) \\\n-\t$(am__EXEEXT_383) $(am__EXEEXT_384) $(am__EXEEXT_385) \\\n-\t$(am__EXEEXT_386) $(am__EXEEXT_387) $(am__EXEEXT_388) \\\n-\t$(am__EXEEXT_389) $(am__EXEEXT_390) $(am__EXEEXT_391) \\\n-\t$(am__EXEEXT_392) $(am__EXEEXT_393) $(am__EXEEXT_394) \\\n-\t$(am__EXEEXT_395) $(am__EXEEXT_396) $(am__EXEEXT_397) \\\n-\t$(am__EXEEXT_398) $(am__EXEEXT_399) $(am__EXEEXT_400) \\\n-\t$(am__EXEEXT_401) $(am__EXEEXT_402) $(am__EXEEXT_403) \\\n-\t$(am__EXEEXT_404) $(am__EXEEXT_405) $(am__EXEEXT_406) \\\n-\t$(am__EXEEXT_407) $(am__EXEEXT_408) $(am__EXEEXT_409) \\\n-\t$(am__EXEEXT_410) $(am__EXEEXT_411) $(am__EXEEXT_412) \\\n-\t$(am__EXEEXT_413) $(am__EXEEXT_414) $(am__EXEEXT_415) \\\n-\t$(am__EXEEXT_416) $(am__EXEEXT_417) $(am__EXEEXT_418) \\\n-\t$(am__EXEEXT_419) $(am__EXEEXT_420) $(am__EXEEXT_421) \\\n+\tscsi.module$(EXEEXT) memdisk.module$(EXEEXT) $(am__EXEEXT_360) \\\n+\t$(am__EXEEXT_361) $(am__EXEEXT_362) $(am__EXEEXT_363) \\\n+\t$(am__EXEEXT_364) $(am__EXEEXT_365) $(am__EXEEXT_366) \\\n+\t$(am__EXEEXT_367) $(am__EXEEXT_368) $(am__EXEEXT_369) \\\n+\t$(am__EXEEXT_370) $(am__EXEEXT_371) $(am__EXEEXT_372) \\\n+\t$(am__EXEEXT_373) $(am__EXEEXT_374) $(am__EXEEXT_375) \\\n+\t$(am__EXEEXT_376) $(am__EXEEXT_377) $(am__EXEEXT_378) \\\n+\t$(am__EXEEXT_379) $(am__EXEEXT_380) $(am__EXEEXT_381) \\\n+\t$(am__EXEEXT_382) $(am__EXEEXT_383) $(am__EXEEXT_384) \\\n+\t$(am__EXEEXT_385) $(am__EXEEXT_386) $(am__EXEEXT_387) \\\n+\t$(am__EXEEXT_388) $(am__EXEEXT_389) $(am__EXEEXT_390) \\\n+\t$(am__EXEEXT_391) $(am__EXEEXT_392) $(am__EXEEXT_393) \\\n+\t$(am__EXEEXT_394) $(am__EXEEXT_395) $(am__EXEEXT_396) \\\n+\t$(am__EXEEXT_397) $(am__EXEEXT_398) $(am__EXEEXT_399) \\\n+\t$(am__EXEEXT_400) $(am__EXEEXT_401) $(am__EXEEXT_402) \\\n+\t$(am__EXEEXT_403) $(am__EXEEXT_404) $(am__EXEEXT_405) \\\n+\t$(am__EXEEXT_406) $(am__EXEEXT_407) $(am__EXEEXT_408) \\\n+\t$(am__EXEEXT_409) $(am__EXEEXT_410) $(am__EXEEXT_411) \\\n+\t$(am__EXEEXT_412) $(am__EXEEXT_413) $(am__EXEEXT_414) \\\n+\t$(am__EXEEXT_415) $(am__EXEEXT_416) $(am__EXEEXT_417) \\\n+\t$(am__EXEEXT_418) $(am__EXEEXT_419) $(am__EXEEXT_420) \\\n \tprocfs.module$(EXEEXT) affs.module$(EXEEXT) \\\n \tafs.module$(EXEEXT) bfs.module$(EXEEXT) zstd.module$(EXEEXT) \\\n \tbtrfs.module$(EXEEXT) archelp.module$(EXEEXT) \\\n@@ -284,165 +284,165 @@ platform_PROGRAMS = disk.module$(EXEEXT) trig.module$(EXEEXT) \\\n \tufs1_be.module$(EXEEXT) ufs2.module$(EXEEXT) \\\n \txfs.module$(EXEEXT) zfs.module$(EXEEXT) \\\n \tzfscrypt.module$(EXEEXT) zfsinfo.module$(EXEEXT) \\\n-\tmacbless.module$(EXEEXT) $(am__EXEEXT_422) \\\n+\tmacbless.module$(EXEEXT) $(am__EXEEXT_421) \\\n \tgettext.module$(EXEEXT) gfxmenu.module$(EXEEXT) \\\n \thello.module$(EXEEXT) gzio.module$(EXEEXT) \\\n-\toffsetio.module$(EXEEXT) $(am__EXEEXT_423) $(am__EXEEXT_424) \\\n-\t$(am__EXEEXT_425) $(am__EXEEXT_426) $(am__EXEEXT_427) \\\n-\t$(am__EXEEXT_428) $(am__EXEEXT_429) $(am__EXEEXT_430) \\\n-\t$(am__EXEEXT_431) $(am__EXEEXT_432) $(am__EXEEXT_433) \\\n-\t$(am__EXEEXT_434) $(am__EXEEXT_435) $(am__EXEEXT_436) \\\n-\t$(am__EXEEXT_437) $(am__EXEEXT_438) $(am__EXEEXT_439) \\\n-\t$(am__EXEEXT_440) $(am__EXEEXT_441) $(am__EXEEXT_442) \\\n+\toffsetio.module$(EXEEXT) $(am__EXEEXT_422) $(am__EXEEXT_423) \\\n+\t$(am__EXEEXT_424) $(am__EXEEXT_425) $(am__EXEEXT_426) \\\n+\t$(am__EXEEXT_427) $(am__EXEEXT_428) $(am__EXEEXT_429) \\\n+\t$(am__EXEEXT_430) $(am__EXEEXT_431) $(am__EXEEXT_432) \\\n+\t$(am__EXEEXT_433) $(am__EXEEXT_434) $(am__EXEEXT_435) \\\n+\t$(am__EXEEXT_436) $(am__EXEEXT_437) $(am__EXEEXT_438) \\\n+\t$(am__EXEEXT_439) $(am__EXEEXT_440) $(am__EXEEXT_441) \\\n \telf.module$(EXEEXT) crypto.module$(EXEEXT) \\\n-\tpbkdf2.module$(EXEEXT) $(am__EXEEXT_443) $(am__EXEEXT_444) \\\n-\t$(am__EXEEXT_445) $(am__EXEEXT_446) $(am__EXEEXT_447) \\\n-\t$(am__EXEEXT_448) $(am__EXEEXT_449) $(am__EXEEXT_450) \\\n-\t$(am__EXEEXT_451) $(am__EXEEXT_452) $(am__EXEEXT_453) \\\n-\t$(am__EXEEXT_454) $(am__EXEEXT_455) $(am__EXEEXT_456) \\\n-\t$(am__EXEEXT_457) $(am__EXEEXT_458) $(am__EXEEXT_459) \\\n-\t$(am__EXEEXT_460) $(am__EXEEXT_461) $(am__EXEEXT_462) \\\n-\t$(am__EXEEXT_463) $(am__EXEEXT_464) $(am__EXEEXT_465) \\\n-\t$(am__EXEEXT_466) $(am__EXEEXT_467) $(am__EXEEXT_468) \\\n-\t$(am__EXEEXT_469) $(am__EXEEXT_470) $(am__EXEEXT_471) \\\n-\t$(am__EXEEXT_472) $(am__EXEEXT_473) $(am__EXEEXT_474) \\\n-\t$(am__EXEEXT_475) $(am__EXEEXT_476) $(am__EXEEXT_477) \\\n-\t$(am__EXEEXT_478) setjmp.module$(EXEEXT) $(am__EXEEXT_479) \\\n-\t$(am__EXEEXT_480) $(am__EXEEXT_481) $(am__EXEEXT_482) \\\n-\t$(am__EXEEXT_483) $(am__EXEEXT_484) $(am__EXEEXT_485) \\\n-\t$(am__EXEEXT_486) $(am__EXEEXT_487) $(am__EXEEXT_488) \\\n-\t$(am__EXEEXT_489) $(am__EXEEXT_490) $(am__EXEEXT_491) \\\n-\t$(am__EXEEXT_492) $(am__EXEEXT_493) $(am__EXEEXT_494) \\\n-\t$(am__EXEEXT_495) $(am__EXEEXT_496) $(am__EXEEXT_497) \\\n-\t$(am__EXEEXT_498) $(am__EXEEXT_499) $(am__EXEEXT_500) \\\n-\t$(am__EXEEXT_501) $(am__EXEEXT_502) $(am__EXEEXT_503) \\\n-\t$(am__EXEEXT_504) $(am__EXEEXT_505) $(am__EXEEXT_506) \\\n-\t$(am__EXEEXT_507) $(am__EXEEXT_508) $(am__EXEEXT_509) \\\n-\t$(am__EXEEXT_510) $(am__EXEEXT_511) $(am__EXEEXT_512) \\\n-\t$(am__EXEEXT_513) $(am__EXEEXT_514) $(am__EXEEXT_515) \\\n-\t$(am__EXEEXT_516) $(am__EXEEXT_517) $(am__EXEEXT_518) \\\n-\t$(am__EXEEXT_519) $(am__EXEEXT_520) $(am__EXEEXT_521) \\\n-\t$(am__EXEEXT_522) $(am__EXEEXT_523) $(am__EXEEXT_524) \\\n-\t$(am__EXEEXT_525) $(am__EXEEXT_526) $(am__EXEEXT_527) \\\n-\t$(am__EXEEXT_528) $(am__EXEEXT_529) $(am__EXEEXT_530) \\\n-\t$(am__EXEEXT_531) $(am__EXEEXT_532) $(am__EXEEXT_533) \\\n-\t$(am__EXEEXT_534) $(am__EXEEXT_535) $(am__EXEEXT_536) \\\n-\t$(am__EXEEXT_537) $(am__EXEEXT_538) $(am__EXEEXT_539) \\\n-\t$(am__EXEEXT_540) $(am__EXEEXT_541) $(am__EXEEXT_542) \\\n-\t$(am__EXEEXT_543) $(am__EXEEXT_544) $(am__EXEEXT_545) \\\n-\t$(am__EXEEXT_546) $(am__EXEEXT_547) $(am__EXEEXT_548) \\\n-\t$(am__EXEEXT_549) $(am__EXEEXT_550) $(am__EXEEXT_551) \\\n-\t$(am__EXEEXT_552) $(am__EXEEXT_553) $(am__EXEEXT_554) \\\n-\t$(am__EXEEXT_555) $(am__EXEEXT_556) macho.module$(EXEEXT) \\\n-\t$(am__EXEEXT_557) $(am__EXEEXT_558) $(am__EXEEXT_559) \\\n-\t$(am__EXEEXT_560) $(am__EXEEXT_561) $(am__EXEEXT_562) \\\n-\t$(am__EXEEXT_563) $(am__EXEEXT_564) $(am__EXEEXT_565) \\\n-\t$(am__EXEEXT_566) $(am__EXEEXT_567) $(am__EXEEXT_568) \\\n-\t$(am__EXEEXT_569) $(am__EXEEXT_570) $(am__EXEEXT_571) \\\n-\t$(am__EXEEXT_572) $(am__EXEEXT_573) $(am__EXEEXT_574) \\\n-\t$(am__EXEEXT_575) $(am__EXEEXT_576) $(am__EXEEXT_577) \\\n-\t$(am__EXEEXT_578) $(am__EXEEXT_579) $(am__EXEEXT_580) \\\n-\t$(am__EXEEXT_581) $(am__EXEEXT_582) $(am__EXEEXT_583) \\\n+\tpbkdf2.module$(EXEEXT) $(am__EXEEXT_442) $(am__EXEEXT_443) \\\n+\t$(am__EXEEXT_444) $(am__EXEEXT_445) $(am__EXEEXT_446) \\\n+\t$(am__EXEEXT_447) $(am__EXEEXT_448) $(am__EXEEXT_449) \\\n+\t$(am__EXEEXT_450) $(am__EXEEXT_451) $(am__EXEEXT_452) \\\n+\t$(am__EXEEXT_453) $(am__EXEEXT_454) $(am__EXEEXT_455) \\\n+\t$(am__EXEEXT_456) $(am__EXEEXT_457) $(am__EXEEXT_458) \\\n+\t$(am__EXEEXT_459) $(am__EXEEXT_460) $(am__EXEEXT_461) \\\n+\t$(am__EXEEXT_462) $(am__EXEEXT_463) $(am__EXEEXT_464) \\\n+\t$(am__EXEEXT_465) $(am__EXEEXT_466) $(am__EXEEXT_467) \\\n+\t$(am__EXEEXT_468) $(am__EXEEXT_469) $(am__EXEEXT_470) \\\n+\t$(am__EXEEXT_471) $(am__EXEEXT_472) $(am__EXEEXT_473) \\\n+\t$(am__EXEEXT_474) $(am__EXEEXT_475) $(am__EXEEXT_476) \\\n+\t$(am__EXEEXT_477) setjmp.module$(EXEEXT) $(am__EXEEXT_478) \\\n+\t$(am__EXEEXT_479) $(am__EXEEXT_480) $(am__EXEEXT_481) \\\n+\t$(am__EXEEXT_482) $(am__EXEEXT_483) $(am__EXEEXT_484) \\\n+\t$(am__EXEEXT_485) $(am__EXEEXT_486) $(am__EXEEXT_487) \\\n+\t$(am__EXEEXT_488) $(am__EXEEXT_489) $(am__EXEEXT_490) \\\n+\t$(am__EXEEXT_491) $(am__EXEEXT_492) $(am__EXEEXT_493) \\\n+\t$(am__EXEEXT_494) $(am__EXEEXT_495) $(am__EXEEXT_496) \\\n+\t$(am__EXEEXT_497) $(am__EXEEXT_498) $(am__EXEEXT_499) \\\n+\t$(am__EXEEXT_500) $(am__EXEEXT_501) $(am__EXEEXT_502) \\\n+\t$(am__EXEEXT_503) $(am__EXEEXT_504) $(am__EXEEXT_505) \\\n+\t$(am__EXEEXT_506) $(am__EXEEXT_507) $(am__EXEEXT_508) \\\n+\t$(am__EXEEXT_509) $(am__EXEEXT_510) $(am__EXEEXT_511) \\\n+\t$(am__EXEEXT_512) $(am__EXEEXT_513) $(am__EXEEXT_514) \\\n+\t$(am__EXEEXT_515) $(am__EXEEXT_516) $(am__EXEEXT_517) \\\n+\t$(am__EXEEXT_518) $(am__EXEEXT_519) $(am__EXEEXT_520) \\\n+\t$(am__EXEEXT_521) $(am__EXEEXT_522) $(am__EXEEXT_523) \\\n+\t$(am__EXEEXT_524) $(am__EXEEXT_525) $(am__EXEEXT_526) \\\n+\t$(am__EXEEXT_527) $(am__EXEEXT_528) $(am__EXEEXT_529) \\\n+\t$(am__EXEEXT_530) $(am__EXEEXT_531) $(am__EXEEXT_532) \\\n+\t$(am__EXEEXT_533) $(am__EXEEXT_534) $(am__EXEEXT_535) \\\n+\t$(am__EXEEXT_536) $(am__EXEEXT_537) $(am__EXEEXT_538) \\\n+\t$(am__EXEEXT_539) $(am__EXEEXT_540) $(am__EXEEXT_541) \\\n+\t$(am__EXEEXT_542) $(am__EXEEXT_543) $(am__EXEEXT_544) \\\n+\t$(am__EXEEXT_545) $(am__EXEEXT_546) $(am__EXEEXT_547) \\\n+\t$(am__EXEEXT_548) $(am__EXEEXT_549) $(am__EXEEXT_550) \\\n+\t$(am__EXEEXT_551) $(am__EXEEXT_552) $(am__EXEEXT_553) \\\n+\t$(am__EXEEXT_554) $(am__EXEEXT_555) macho.module$(EXEEXT) \\\n+\t$(am__EXEEXT_556) $(am__EXEEXT_557) $(am__EXEEXT_558) \\\n+\t$(am__EXEEXT_559) $(am__EXEEXT_560) $(am__EXEEXT_561) \\\n+\t$(am__EXEEXT_562) $(am__EXEEXT_563) $(am__EXEEXT_564) \\\n+\t$(am__EXEEXT_565) $(am__EXEEXT_566) $(am__EXEEXT_567) \\\n+\t$(am__EXEEXT_568) $(am__EXEEXT_569) $(am__EXEEXT_570) \\\n+\t$(am__EXEEXT_571) $(am__EXEEXT_572) $(am__EXEEXT_573) \\\n+\t$(am__EXEEXT_574) $(am__EXEEXT_575) $(am__EXEEXT_576) \\\n+\t$(am__EXEEXT_577) $(am__EXEEXT_578) $(am__EXEEXT_579) \\\n+\t$(am__EXEEXT_580) $(am__EXEEXT_581) $(am__EXEEXT_582) \\\n \tnormal.module$(EXEEXT) part_acorn.module$(EXEEXT) \\\n \tpart_amiga.module$(EXEEXT) part_apple.module$(EXEEXT) \\\n \tpart_gpt.module$(EXEEXT) part_msdos.module$(EXEEXT) \\\n \tpart_sun.module$(EXEEXT) part_plan.module$(EXEEXT) \\\n \tpart_dvh.module$(EXEEXT) part_bsd.module$(EXEEXT) \\\n \tpart_sunpc.module$(EXEEXT) part_dfly.module$(EXEEXT) \\\n-\tmsdospart.module$(EXEEXT) $(am__EXEEXT_584) $(am__EXEEXT_585) \\\n-\t$(am__EXEEXT_586) $(am__EXEEXT_587) $(am__EXEEXT_588) \\\n-\t$(am__EXEEXT_589) $(am__EXEEXT_590) $(am__EXEEXT_591) \\\n-\t$(am__EXEEXT_592) $(am__EXEEXT_593) $(am__EXEEXT_594) \\\n-\t$(am__EXEEXT_595) $(am__EXEEXT_596) $(am__EXEEXT_597) \\\n-\t$(am__EXEEXT_598) $(am__EXEEXT_599) $(am__EXEEXT_600) \\\n-\t$(am__EXEEXT_601) $(am__EXEEXT_602) $(am__EXEEXT_603) \\\n-\t$(am__EXEEXT_604) $(am__EXEEXT_605) $(am__EXEEXT_606) \\\n-\t$(am__EXEEXT_607) $(am__EXEEXT_608) $(am__EXEEXT_609) \\\n-\t$(am__EXEEXT_610) gfxterm_background.module$(EXEEXT) \\\n-\t$(am__EXEEXT_611) $(am__EXEEXT_612) $(am__EXEEXT_613) \\\n-\t$(am__EXEEXT_614) $(am__EXEEXT_615) $(am__EXEEXT_616) \\\n-\t$(am__EXEEXT_617) $(am__EXEEXT_618) $(am__EXEEXT_619) \\\n-\t$(am__EXEEXT_620) $(am__EXEEXT_621) $(am__EXEEXT_622) \\\n-\t$(am__EXEEXT_623) $(am__EXEEXT_624) $(am__EXEEXT_625) \\\n-\t$(am__EXEEXT_626) $(am__EXEEXT_627) $(am__EXEEXT_628) \\\n-\t$(am__EXEEXT_629) $(am__EXEEXT_630) $(am__EXEEXT_631) \\\n-\t$(am__EXEEXT_632) $(am__EXEEXT_633) $(am__EXEEXT_634) \\\n-\t$(am__EXEEXT_635) $(am__EXEEXT_636) $(am__EXEEXT_637) \\\n-\t$(am__EXEEXT_638) $(am__EXEEXT_639) $(am__EXEEXT_640) \\\n-\t$(am__EXEEXT_641) $(am__EXEEXT_642) $(am__EXEEXT_643) \\\n-\t$(am__EXEEXT_644) $(am__EXEEXT_645) $(am__EXEEXT_646) \\\n-\t$(am__EXEEXT_647) $(am__EXEEXT_648) $(am__EXEEXT_649) \\\n-\t$(am__EXEEXT_650) $(am__EXEEXT_651) $(am__EXEEXT_652) \\\n-\t$(am__EXEEXT_653) $(am__EXEEXT_654) $(am__EXEEXT_655) \\\n-\t$(am__EXEEXT_656) $(am__EXEEXT_657) $(am__EXEEXT_658) \\\n-\t$(am__EXEEXT_659) $(am__EXEEXT_660) $(am__EXEEXT_661) \\\n-\t$(am__EXEEXT_662) $(am__EXEEXT_663) $(am__EXEEXT_664) \\\n-\t$(am__EXEEXT_665) functional_test.module$(EXEEXT) \\\n+\tmsdospart.module$(EXEEXT) $(am__EXEEXT_583) $(am__EXEEXT_584) \\\n+\t$(am__EXEEXT_585) $(am__EXEEXT_586) $(am__EXEEXT_587) \\\n+\t$(am__EXEEXT_588) $(am__EXEEXT_589) $(am__EXEEXT_590) \\\n+\t$(am__EXEEXT_591) $(am__EXEEXT_592) $(am__EXEEXT_593) \\\n+\t$(am__EXEEXT_594) $(am__EXEEXT_595) $(am__EXEEXT_596) \\\n+\t$(am__EXEEXT_597) $(am__EXEEXT_598) $(am__EXEEXT_599) \\\n+\t$(am__EXEEXT_600) $(am__EXEEXT_601) $(am__EXEEXT_602) \\\n+\t$(am__EXEEXT_603) $(am__EXEEXT_604) $(am__EXEEXT_605) \\\n+\t$(am__EXEEXT_606) $(am__EXEEXT_607) $(am__EXEEXT_608) \\\n+\t$(am__EXEEXT_609) gfxterm_background.module$(EXEEXT) \\\n+\t$(am__EXEEXT_610) $(am__EXEEXT_611) $(am__EXEEXT_612) \\\n+\t$(am__EXEEXT_613) $(am__EXEEXT_614) $(am__EXEEXT_615) \\\n+\t$(am__EXEEXT_616) $(am__EXEEXT_617) $(am__EXEEXT_618) \\\n+\t$(am__EXEEXT_619) $(am__EXEEXT_620) $(am__EXEEXT_621) \\\n+\t$(am__EXEEXT_622) $(am__EXEEXT_623) $(am__EXEEXT_624) \\\n+\t$(am__EXEEXT_625) $(am__EXEEXT_626) $(am__EXEEXT_627) \\\n+\t$(am__EXEEXT_628) $(am__EXEEXT_629) $(am__EXEEXT_630) \\\n+\t$(am__EXEEXT_631) $(am__EXEEXT_632) $(am__EXEEXT_633) \\\n+\t$(am__EXEEXT_634) $(am__EXEEXT_635) $(am__EXEEXT_636) \\\n+\t$(am__EXEEXT_637) $(am__EXEEXT_638) $(am__EXEEXT_639) \\\n+\t$(am__EXEEXT_640) $(am__EXEEXT_641) $(am__EXEEXT_642) \\\n+\t$(am__EXEEXT_643) $(am__EXEEXT_644) $(am__EXEEXT_645) \\\n+\t$(am__EXEEXT_646) $(am__EXEEXT_647) $(am__EXEEXT_648) \\\n+\t$(am__EXEEXT_649) $(am__EXEEXT_650) $(am__EXEEXT_651) \\\n+\t$(am__EXEEXT_652) $(am__EXEEXT_653) $(am__EXEEXT_654) \\\n+\t$(am__EXEEXT_655) $(am__EXEEXT_656) $(am__EXEEXT_657) \\\n+\t$(am__EXEEXT_658) $(am__EXEEXT_659) $(am__EXEEXT_660) \\\n+\t$(am__EXEEXT_661) $(am__EXEEXT_662) $(am__EXEEXT_663) \\\n+\t$(am__EXEEXT_664) functional_test.module$(EXEEXT) \\\n \texfctest.module$(EXEEXT) strtoull_test.module$(EXEEXT) \\\n \tsetjmp_test.module$(EXEEXT) signature_test.module$(EXEEXT) \\\n \tsleep_test.module$(EXEEXT) xnu_uuid_test.module$(EXEEXT) \\\n-\tpbkdf2_test.module$(EXEEXT) $(am__EXEEXT_666) \\\n-\t$(am__EXEEXT_667) $(am__EXEEXT_668) $(am__EXEEXT_669) \\\n-\t$(am__EXEEXT_670) $(am__EXEEXT_671) $(am__EXEEXT_672) \\\n-\t$(am__EXEEXT_673) $(am__EXEEXT_674) $(am__EXEEXT_675) \\\n-\t$(am__EXEEXT_676) $(am__EXEEXT_677) $(am__EXEEXT_678) \\\n-\t$(am__EXEEXT_679) $(am__EXEEXT_680) $(am__EXEEXT_681) \\\n-\t$(am__EXEEXT_682) $(am__EXEEXT_683) $(am__EXEEXT_684) \\\n-\t$(am__EXEEXT_685) $(am__EXEEXT_686) $(am__EXEEXT_687) \\\n-\t$(am__EXEEXT_688) $(am__EXEEXT_689) $(am__EXEEXT_690) \\\n+\tpbkdf2_test.module$(EXEEXT) $(am__EXEEXT_665) \\\n+\t$(am__EXEEXT_666) $(am__EXEEXT_667) $(am__EXEEXT_668) \\\n+\t$(am__EXEEXT_669) $(am__EXEEXT_670) $(am__EXEEXT_671) \\\n+\t$(am__EXEEXT_672) $(am__EXEEXT_673) $(am__EXEEXT_674) \\\n+\t$(am__EXEEXT_675) $(am__EXEEXT_676) $(am__EXEEXT_677) \\\n+\t$(am__EXEEXT_678) $(am__EXEEXT_679) $(am__EXEEXT_680) \\\n+\t$(am__EXEEXT_681) $(am__EXEEXT_682) $(am__EXEEXT_683) \\\n+\t$(am__EXEEXT_684) $(am__EXEEXT_685) $(am__EXEEXT_686) \\\n+\t$(am__EXEEXT_687) $(am__EXEEXT_688) $(am__EXEEXT_689) \\\n \tdiv_test.module$(EXEEXT) mul_test.module$(EXEEXT) \\\n \tshift_test.module$(EXEEXT) cmp_test.module$(EXEEXT) \\\n \tctz_test.module$(EXEEXT) bswap_test.module$(EXEEXT) \\\n \tvideotest_checksum.module$(EXEEXT) \\\n \tgfxterm_menu.module$(EXEEXT) cmdline_cat_test.module$(EXEEXT) \\\n \tbitmap.module$(EXEEXT) bitmap_scale.module$(EXEEXT) \\\n-\t$(am__EXEEXT_691) $(am__EXEEXT_692) $(am__EXEEXT_693) \\\n-\t$(am__EXEEXT_694) $(am__EXEEXT_695) $(am__EXEEXT_696) \\\n-\t$(am__EXEEXT_697) $(am__EXEEXT_698) $(am__EXEEXT_699) \\\n+\t$(am__EXEEXT_690) $(am__EXEEXT_691) $(am__EXEEXT_692) \\\n+\t$(am__EXEEXT_693) $(am__EXEEXT_694) $(am__EXEEXT_695) \\\n+\t$(am__EXEEXT_696) $(am__EXEEXT_697) $(am__EXEEXT_698) \\\n \tjpeg.module$(EXEEXT) png.module$(EXEEXT) tga.module$(EXEEXT) \\\n-\t$(am__EXEEXT_700) $(am__EXEEXT_701) $(am__EXEEXT_702) \\\n-\t$(am__EXEEXT_703) $(am__EXEEXT_704) $(am__EXEEXT_705) \\\n-\t$(am__EXEEXT_706) $(am__EXEEXT_707) $(am__EXEEXT_708) \\\n-\t$(am__EXEEXT_709) $(am__EXEEXT_710) $(am__EXEEXT_711) \\\n-\t$(am__EXEEXT_712) $(am__EXEEXT_713) $(am__EXEEXT_714) \\\n-\t$(am__EXEEXT_715) $(am__EXEEXT_716) $(am__EXEEXT_717) \\\n-\t$(am__EXEEXT_718) $(am__EXEEXT_719) $(am__EXEEXT_720) \\\n-\t$(am__EXEEXT_721) $(am__EXEEXT_722) $(am__EXEEXT_723) \\\n-\t$(am__EXEEXT_724) $(am__EXEEXT_725) $(am__EXEEXT_726) \\\n-\t$(am__EXEEXT_727) $(am__EXEEXT_728) $(am__EXEEXT_729) \\\n-\t$(am__EXEEXT_730) $(am__EXEEXT_731) $(am__EXEEXT_732) \\\n-\t$(am__EXEEXT_733) $(am__EXEEXT_734) $(am__EXEEXT_735) \\\n-\t$(am__EXEEXT_736) $(am__EXEEXT_737) $(am__EXEEXT_738) \\\n-\t$(am__EXEEXT_739) $(am__EXEEXT_740) \\\n-\tvideo_colors.module$(EXEEXT) $(am__EXEEXT_741) \\\n-\t$(am__EXEEXT_742) datehook.module$(EXEEXT) net.module$(EXEEXT) \\\n-\ttftp.module$(EXEEXT) http.module$(EXEEXT) $(am__EXEEXT_743) \\\n-\t$(am__EXEEXT_744) $(am__EXEEXT_745) $(am__EXEEXT_746) \\\n-\t$(am__EXEEXT_747) $(am__EXEEXT_748) $(am__EXEEXT_749) \\\n-\t$(am__EXEEXT_750) $(am__EXEEXT_751) $(am__EXEEXT_752) \\\n-\t$(am__EXEEXT_753) $(am__EXEEXT_754) $(am__EXEEXT_755) \\\n-\t$(am__EXEEXT_756) $(am__EXEEXT_757) $(am__EXEEXT_758) \\\n-\t$(am__EXEEXT_759) $(am__EXEEXT_760) \\\n+\t$(am__EXEEXT_699) $(am__EXEEXT_700) $(am__EXEEXT_701) \\\n+\t$(am__EXEEXT_702) $(am__EXEEXT_703) $(am__EXEEXT_704) \\\n+\t$(am__EXEEXT_705) $(am__EXEEXT_706) $(am__EXEEXT_707) \\\n+\t$(am__EXEEXT_708) $(am__EXEEXT_709) $(am__EXEEXT_710) \\\n+\t$(am__EXEEXT_711) $(am__EXEEXT_712) $(am__EXEEXT_713) \\\n+\t$(am__EXEEXT_714) $(am__EXEEXT_715) $(am__EXEEXT_716) \\\n+\t$(am__EXEEXT_717) $(am__EXEEXT_718) $(am__EXEEXT_719) \\\n+\t$(am__EXEEXT_720) $(am__EXEEXT_721) $(am__EXEEXT_722) \\\n+\t$(am__EXEEXT_723) $(am__EXEEXT_724) $(am__EXEEXT_725) \\\n+\t$(am__EXEEXT_726) $(am__EXEEXT_727) $(am__EXEEXT_728) \\\n+\t$(am__EXEEXT_729) $(am__EXEEXT_730) $(am__EXEEXT_731) \\\n+\t$(am__EXEEXT_732) $(am__EXEEXT_733) $(am__EXEEXT_734) \\\n+\t$(am__EXEEXT_735) $(am__EXEEXT_736) $(am__EXEEXT_737) \\\n+\t$(am__EXEEXT_738) $(am__EXEEXT_739) \\\n+\tvideo_colors.module$(EXEEXT) $(am__EXEEXT_740) \\\n+\t$(am__EXEEXT_741) datehook.module$(EXEEXT) net.module$(EXEEXT) \\\n+\ttftp.module$(EXEEXT) http.module$(EXEEXT) $(am__EXEEXT_742) \\\n+\t$(am__EXEEXT_743) $(am__EXEEXT_744) $(am__EXEEXT_745) \\\n+\t$(am__EXEEXT_746) $(am__EXEEXT_747) $(am__EXEEXT_748) \\\n+\t$(am__EXEEXT_749) $(am__EXEEXT_750) $(am__EXEEXT_751) \\\n+\t$(am__EXEEXT_752) $(am__EXEEXT_753) $(am__EXEEXT_754) \\\n+\t$(am__EXEEXT_755) $(am__EXEEXT_756) $(am__EXEEXT_757) \\\n+\t$(am__EXEEXT_758) $(am__EXEEXT_759) \\\n \tsyslinuxcfg.module$(EXEEXT) test_blockarg.module$(EXEEXT) \\\n \txzio.module$(EXEEXT) lzopio.module$(EXEEXT) \\\n-\ttestload.module$(EXEEXT) $(am__EXEEXT_761) $(am__EXEEXT_762) \\\n-\t$(am__EXEEXT_763) $(am__EXEEXT_764) $(am__EXEEXT_765) \\\n-\t$(am__EXEEXT_766) $(am__EXEEXT_767) $(am__EXEEXT_768) \\\n-\t$(am__EXEEXT_769) $(am__EXEEXT_770) $(am__EXEEXT_771) \\\n-\t$(am__EXEEXT_772) $(am__EXEEXT_773) $(am__EXEEXT_774) \\\n-\t$(am__EXEEXT_775) $(am__EXEEXT_776) $(am__EXEEXT_777) \\\n+\ttestload.module$(EXEEXT) $(am__EXEEXT_760) $(am__EXEEXT_761) \\\n+\t$(am__EXEEXT_762) $(am__EXEEXT_763) $(am__EXEEXT_764) \\\n+\t$(am__EXEEXT_765) $(am__EXEEXT_766) $(am__EXEEXT_767) \\\n+\t$(am__EXEEXT_768) $(am__EXEEXT_769) $(am__EXEEXT_770) \\\n+\t$(am__EXEEXT_771) $(am__EXEEXT_772) $(am__EXEEXT_773) \\\n+\t$(am__EXEEXT_774) $(am__EXEEXT_775) $(am__EXEEXT_776) \\\n \tpriority_queue.module$(EXEEXT) time.module$(EXEEXT) \\\n-\t$(am__EXEEXT_778) $(am__EXEEXT_779) adler32.module$(EXEEXT) \\\n+\t$(am__EXEEXT_777) $(am__EXEEXT_778) adler32.module$(EXEEXT) \\\n \tcrc64.module$(EXEEXT) mpi.module$(EXEEXT) \\\n-\tall_video.module$(EXEEXT) $(am__EXEEXT_780) $(am__EXEEXT_781) \\\n-\t$(am__EXEEXT_782) $(am__EXEEXT_783) $(am__EXEEXT_784) \\\n-\t$(am__EXEEXT_785) testspeed.module$(EXEEXT) $(am__EXEEXT_786) \\\n+\tall_video.module$(EXEEXT) $(am__EXEEXT_779) $(am__EXEEXT_780) \\\n+\t$(am__EXEEXT_781) $(am__EXEEXT_782) $(am__EXEEXT_783) \\\n+\t$(am__EXEEXT_784) testspeed.module$(EXEEXT) $(am__EXEEXT_785) \\\n \ttr.module$(EXEEXT) progress.module$(EXEEXT) \\\n-\tfile.module$(EXEEXT) $(am__EXEEXT_787) $(am__EXEEXT_788) \\\n-\t$(am__EXEEXT_789) $(am__EXEEXT_790) $(am__EXEEXT_791) \\\n-\t$(am__EXEEXT_792) $(am__EXEEXT_793) $(am__EXEEXT_794) \\\n-\t$(am__EXEEXT_795) $(am__EXEEXT_796) $(am__EXEEXT_797) \\\n-\t$(am__EXEEXT_798) $(am__EXEEXT_799) $(am__EXEEXT_800) \\\n+\tfile.module$(EXEEXT) $(am__EXEEXT_786) $(am__EXEEXT_787) \\\n+\t$(am__EXEEXT_788) $(am__EXEEXT_789) $(am__EXEEXT_790) \\\n+\t$(am__EXEEXT_791) $(am__EXEEXT_792) $(am__EXEEXT_793) \\\n+\t$(am__EXEEXT_794) $(am__EXEEXT_795) $(am__EXEEXT_796) \\\n+\t$(am__EXEEXT_797) $(am__EXEEXT_798) $(am__EXEEXT_799) \\\n \tgcry_arcfour.module$(EXEEXT) gcry_blowfish.module$(EXEEXT) \\\n \tgcry_camellia.module$(EXEEXT) gcry_cast5.module$(EXEEXT) \\\n \tgcry_crc.module$(EXEEXT) gcry_des.module$(EXEEXT) \\\n@@ -454,19 +454,19 @@ platform_PROGRAMS = disk.module$(EXEEXT) trig.module$(EXEEXT) \\\n \tgcry_sha1.module$(EXEEXT) gcry_sha256.module$(EXEEXT) \\\n \tgcry_sha512.module$(EXEEXT) gcry_tiger.module$(EXEEXT) \\\n \tgcry_twofish.module$(EXEEXT) gcry_whirlpool.module$(EXEEXT) \\\n-\t$(am__EXEEXT_801) $(am__EXEEXT_802) $(am__EXEEXT_803) \\\n-\t$(am__EXEEXT_804) $(am__EXEEXT_805) $(am__EXEEXT_806) \\\n-\t$(am__EXEEXT_807) $(am__EXEEXT_808) $(am__EXEEXT_809) \\\n-\t$(am__EXEEXT_810) $(am__EXEEXT_811) $(am__EXEEXT_812) \\\n-\t$(am__EXEEXT_813) $(am__EXEEXT_814) $(am__EXEEXT_815) \\\n-\t$(am__EXEEXT_816) $(am__EXEEXT_817) $(am__EXEEXT_818) \\\n-\t$(am__EXEEXT_819) $(am__EXEEXT_820) $(am__EXEEXT_821) \\\n-\t$(am__EXEEXT_822) $(am__EXEEXT_823) $(am__EXEEXT_824) \\\n-\t$(am__EXEEXT_825) $(am__EXEEXT_826) $(am__EXEEXT_827) \\\n-\t$(am__EXEEXT_828) $(am__EXEEXT_829) $(am__EXEEXT_830) \\\n-\t$(am__EXEEXT_831) $(am__EXEEXT_832) $(am__EXEEXT_833) \\\n-\t$(am__EXEEXT_834) $(am__EXEEXT_835) $(am__EXEEXT_836) \\\n-\t$(am__EXEEXT_837) $(am__EXEEXT_838) $(am__EXEEXT_839)\n+\t$(am__EXEEXT_800) $(am__EXEEXT_801) $(am__EXEEXT_802) \\\n+\t$(am__EXEEXT_803) $(am__EXEEXT_804) $(am__EXEEXT_805) \\\n+\t$(am__EXEEXT_806) $(am__EXEEXT_807) $(am__EXEEXT_808) \\\n+\t$(am__EXEEXT_809) $(am__EXEEXT_810) $(am__EXEEXT_811) \\\n+\t$(am__EXEEXT_812) $(am__EXEEXT_813) $(am__EXEEXT_814) \\\n+\t$(am__EXEEXT_815) $(am__EXEEXT_816) $(am__EXEEXT_817) \\\n+\t$(am__EXEEXT_818) $(am__EXEEXT_819) $(am__EXEEXT_820) \\\n+\t$(am__EXEEXT_821) $(am__EXEEXT_822) $(am__EXEEXT_823) \\\n+\t$(am__EXEEXT_824) $(am__EXEEXT_825) $(am__EXEEXT_826) \\\n+\t$(am__EXEEXT_827) $(am__EXEEXT_828) $(am__EXEEXT_829) \\\n+\t$(am__EXEEXT_830) $(am__EXEEXT_831) $(am__EXEEXT_832) \\\n+\t$(am__EXEEXT_833) $(am__EXEEXT_834) $(am__EXEEXT_835) \\\n+\t$(am__EXEEXT_836) $(am__EXEEXT_837) $(am__EXEEXT_838)\n TESTS =\n @COND_i386_pc_TRUE@am__append_3 = cs5536.module\n @COND_i386_pc_TRUE@am__append_4 = cs5536.module$(EXEEXT)\n@@ -2996,1864 +2996,1854 @@ TESTS =\n @COND_riscv64_efi_TRUE@\treboot.marker\n @COND_riscv64_efi_TRUE@am__append_2038 = reboot.mod\n @COND_riscv64_efi_TRUE@am__append_2039 = reboot.marker\n-@COND_x86_64_efi_TRUE@am__append_2040 = shim_lock.module\n-@COND_x86_64_efi_TRUE@am__append_2041 = shim_lock.module$(EXEEXT)\n-@COND_x86_64_efi_FALSE@shim_lock_module_DEPENDENCIES =\n-@COND_x86_64_efi_TRUE@am__append_2042 = \n-@COND_x86_64_efi_TRUE@am__append_2043 = $(nodist_shim_lock_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2044 =  \\\n-@COND_x86_64_efi_TRUE@\t$(nodist_shim_lock_module_SOURCES) \\\n-@COND_x86_64_efi_TRUE@\tshim_lock.marker\n-@COND_x86_64_efi_TRUE@am__append_2045 = shim_lock.mod\n-@COND_x86_64_efi_TRUE@am__append_2046 = shim_lock.marker\n-@COND_i386_pc_TRUE@am__append_2047 = hdparm.module\n-@COND_i386_pc_TRUE@am__append_2048 = hdparm.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__append_2040 = hdparm.module\n+@COND_i386_pc_TRUE@am__append_2041 = hdparm.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_x86_64_efi_FALSE@hdparm_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2049 = \n-@COND_i386_pc_TRUE@am__append_2050 = $(nodist_hdparm_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2051 = $(nodist_hdparm_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2042 = \n+@COND_i386_pc_TRUE@am__append_2043 = $(nodist_hdparm_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2044 = $(nodist_hdparm_module_SOURCES) \\\n @COND_i386_pc_TRUE@\thdparm.marker\n-@COND_i386_pc_TRUE@am__append_2052 = hdparm.mod\n-@COND_i386_pc_TRUE@am__append_2053 = hdparm.marker\n-@COND_i386_efi_TRUE@am__append_2054 = hdparm.module\n-@COND_i386_efi_TRUE@am__append_2055 = hdparm.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2056 = \n-@COND_i386_efi_TRUE@am__append_2057 = $(nodist_hdparm_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2058 = $(nodist_hdparm_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2045 = hdparm.mod\n+@COND_i386_pc_TRUE@am__append_2046 = hdparm.marker\n+@COND_i386_efi_TRUE@am__append_2047 = hdparm.module\n+@COND_i386_efi_TRUE@am__append_2048 = hdparm.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2049 = \n+@COND_i386_efi_TRUE@am__append_2050 = $(nodist_hdparm_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2051 = $(nodist_hdparm_module_SOURCES) \\\n @COND_i386_efi_TRUE@\thdparm.marker\n-@COND_i386_efi_TRUE@am__append_2059 = hdparm.mod\n-@COND_i386_efi_TRUE@am__append_2060 = hdparm.marker\n-@COND_i386_qemu_TRUE@am__append_2061 = hdparm.module\n-@COND_i386_qemu_TRUE@am__append_2062 = hdparm.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2063 = \n-@COND_i386_qemu_TRUE@am__append_2064 = $(nodist_hdparm_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2065 =  \\\n+@COND_i386_efi_TRUE@am__append_2052 = hdparm.mod\n+@COND_i386_efi_TRUE@am__append_2053 = hdparm.marker\n+@COND_i386_qemu_TRUE@am__append_2054 = hdparm.module\n+@COND_i386_qemu_TRUE@am__append_2055 = hdparm.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2056 = \n+@COND_i386_qemu_TRUE@am__append_2057 = $(nodist_hdparm_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2058 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_hdparm_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\thdparm.marker\n-@COND_i386_qemu_TRUE@am__append_2066 = hdparm.mod\n-@COND_i386_qemu_TRUE@am__append_2067 = hdparm.marker\n-@COND_i386_coreboot_TRUE@am__append_2068 = hdparm.module\n-@COND_i386_coreboot_TRUE@am__append_2069 = hdparm.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2070 = \n-@COND_i386_coreboot_TRUE@am__append_2071 = $(nodist_hdparm_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2072 =  \\\n+@COND_i386_qemu_TRUE@am__append_2059 = hdparm.mod\n+@COND_i386_qemu_TRUE@am__append_2060 = hdparm.marker\n+@COND_i386_coreboot_TRUE@am__append_2061 = hdparm.module\n+@COND_i386_coreboot_TRUE@am__append_2062 = hdparm.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2063 = \n+@COND_i386_coreboot_TRUE@am__append_2064 = $(nodist_hdparm_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2065 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_hdparm_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\thdparm.marker\n-@COND_i386_coreboot_TRUE@am__append_2073 = hdparm.mod\n-@COND_i386_coreboot_TRUE@am__append_2074 = hdparm.marker\n-@COND_i386_multiboot_TRUE@am__append_2075 = hdparm.module\n-@COND_i386_multiboot_TRUE@am__append_2076 = hdparm.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2077 = \n-@COND_i386_multiboot_TRUE@am__append_2078 = $(nodist_hdparm_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2079 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2066 = hdparm.mod\n+@COND_i386_coreboot_TRUE@am__append_2067 = hdparm.marker\n+@COND_i386_multiboot_TRUE@am__append_2068 = hdparm.module\n+@COND_i386_multiboot_TRUE@am__append_2069 = hdparm.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2070 = \n+@COND_i386_multiboot_TRUE@am__append_2071 = $(nodist_hdparm_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2072 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_hdparm_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\thdparm.marker\n-@COND_i386_multiboot_TRUE@am__append_2080 = hdparm.mod\n-@COND_i386_multiboot_TRUE@am__append_2081 = hdparm.marker\n-@COND_i386_ieee1275_TRUE@am__append_2082 = hdparm.module\n-@COND_i386_ieee1275_TRUE@am__append_2083 = hdparm.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2084 = \n-@COND_i386_ieee1275_TRUE@am__append_2085 = $(nodist_hdparm_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2086 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2073 = hdparm.mod\n+@COND_i386_multiboot_TRUE@am__append_2074 = hdparm.marker\n+@COND_i386_ieee1275_TRUE@am__append_2075 = hdparm.module\n+@COND_i386_ieee1275_TRUE@am__append_2076 = hdparm.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2077 = \n+@COND_i386_ieee1275_TRUE@am__append_2078 = $(nodist_hdparm_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2079 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_hdparm_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\thdparm.marker\n-@COND_i386_ieee1275_TRUE@am__append_2087 = hdparm.mod\n-@COND_i386_ieee1275_TRUE@am__append_2088 = hdparm.marker\n-@COND_x86_64_efi_TRUE@am__append_2089 = hdparm.module\n-@COND_x86_64_efi_TRUE@am__append_2090 = hdparm.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2091 = \n-@COND_x86_64_efi_TRUE@am__append_2092 = $(nodist_hdparm_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2093 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_2080 = hdparm.mod\n+@COND_i386_ieee1275_TRUE@am__append_2081 = hdparm.marker\n+@COND_x86_64_efi_TRUE@am__append_2082 = hdparm.module\n+@COND_x86_64_efi_TRUE@am__append_2083 = hdparm.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2084 = \n+@COND_x86_64_efi_TRUE@am__append_2085 = $(nodist_hdparm_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2086 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_hdparm_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\thdparm.marker\n-@COND_x86_64_efi_TRUE@am__append_2094 = hdparm.mod\n-@COND_x86_64_efi_TRUE@am__append_2095 = hdparm.marker\n-@COND_mips_loongson_TRUE@am__append_2096 = hdparm.module\n-@COND_mips_loongson_TRUE@am__append_2097 = hdparm.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_2098 = \n-@COND_mips_loongson_TRUE@am__append_2099 = $(nodist_hdparm_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_2100 =  \\\n+@COND_x86_64_efi_TRUE@am__append_2087 = hdparm.mod\n+@COND_x86_64_efi_TRUE@am__append_2088 = hdparm.marker\n+@COND_mips_loongson_TRUE@am__append_2089 = hdparm.module\n+@COND_mips_loongson_TRUE@am__append_2090 = hdparm.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2091 = \n+@COND_mips_loongson_TRUE@am__append_2092 = $(nodist_hdparm_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_2093 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_hdparm_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\thdparm.marker\n-@COND_mips_loongson_TRUE@am__append_2101 = hdparm.mod\n-@COND_mips_loongson_TRUE@am__append_2102 = hdparm.marker\n-@COND_mips_qemu_mips_TRUE@am__append_2103 = hdparm.module\n-@COND_mips_qemu_mips_TRUE@am__append_2104 = hdparm.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_2105 = \n-@COND_mips_qemu_mips_TRUE@am__append_2106 = $(nodist_hdparm_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_2107 =  \\\n+@COND_mips_loongson_TRUE@am__append_2094 = hdparm.mod\n+@COND_mips_loongson_TRUE@am__append_2095 = hdparm.marker\n+@COND_mips_qemu_mips_TRUE@am__append_2096 = hdparm.module\n+@COND_mips_qemu_mips_TRUE@am__append_2097 = hdparm.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_2098 = \n+@COND_mips_qemu_mips_TRUE@am__append_2099 = $(nodist_hdparm_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_2100 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_hdparm_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\thdparm.marker\n-@COND_mips_qemu_mips_TRUE@am__append_2108 = hdparm.mod\n-@COND_mips_qemu_mips_TRUE@am__append_2109 = hdparm.marker\n-@COND_i386_efi_TRUE@am__append_2110 = loadbios.module\n-@COND_i386_efi_TRUE@am__append_2111 = loadbios.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_2101 = hdparm.mod\n+@COND_mips_qemu_mips_TRUE@am__append_2102 = hdparm.marker\n+@COND_i386_efi_TRUE@am__append_2103 = loadbios.module\n+@COND_i386_efi_TRUE@am__append_2104 = loadbios.module$(EXEEXT)\n @COND_i386_efi_FALSE@@COND_x86_64_efi_FALSE@loadbios_module_DEPENDENCIES =\n-@COND_i386_efi_TRUE@am__append_2112 = \n-@COND_i386_efi_TRUE@am__append_2113 = $(nodist_loadbios_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2114 =  \\\n+@COND_i386_efi_TRUE@am__append_2105 = \n+@COND_i386_efi_TRUE@am__append_2106 = $(nodist_loadbios_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2107 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_loadbios_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tloadbios.marker\n-@COND_i386_efi_TRUE@am__append_2115 = loadbios.mod\n-@COND_i386_efi_TRUE@am__append_2116 = loadbios.marker\n-@COND_x86_64_efi_TRUE@am__append_2117 = loadbios.module\n-@COND_x86_64_efi_TRUE@am__append_2118 = loadbios.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2119 = \n-@COND_x86_64_efi_TRUE@am__append_2120 = $(nodist_loadbios_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2121 =  \\\n+@COND_i386_efi_TRUE@am__append_2108 = loadbios.mod\n+@COND_i386_efi_TRUE@am__append_2109 = loadbios.marker\n+@COND_x86_64_efi_TRUE@am__append_2110 = loadbios.module\n+@COND_x86_64_efi_TRUE@am__append_2111 = loadbios.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2112 = \n+@COND_x86_64_efi_TRUE@am__append_2113 = $(nodist_loadbios_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2114 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_loadbios_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tloadbios.marker\n-@COND_x86_64_efi_TRUE@am__append_2122 = loadbios.mod\n-@COND_x86_64_efi_TRUE@am__append_2123 = loadbios.marker\n-@COND_i386_pc_TRUE@am__append_2124 = lspci.module\n-@COND_i386_pc_TRUE@am__append_2125 = lspci.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2115 = loadbios.mod\n+@COND_x86_64_efi_TRUE@am__append_2116 = loadbios.marker\n+@COND_i386_pc_TRUE@am__append_2117 = lspci.module\n+@COND_i386_pc_TRUE@am__append_2118 = lspci.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_mips_loongson_FALSE@@COND_x86_64_efi_FALSE@lspci_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2126 = \n-@COND_i386_pc_TRUE@am__append_2127 = $(nodist_lspci_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2128 = $(nodist_lspci_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2119 = \n+@COND_i386_pc_TRUE@am__append_2120 = $(nodist_lspci_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2121 = $(nodist_lspci_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tlspci.marker\n-@COND_i386_pc_TRUE@am__append_2129 = lspci.mod\n-@COND_i386_pc_TRUE@am__append_2130 = lspci.marker\n-@COND_i386_efi_TRUE@am__append_2131 = lspci.module\n-@COND_i386_efi_TRUE@am__append_2132 = lspci.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2133 = \n-@COND_i386_efi_TRUE@am__append_2134 = $(nodist_lspci_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2135 = $(nodist_lspci_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2122 = lspci.mod\n+@COND_i386_pc_TRUE@am__append_2123 = lspci.marker\n+@COND_i386_efi_TRUE@am__append_2124 = lspci.module\n+@COND_i386_efi_TRUE@am__append_2125 = lspci.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2126 = \n+@COND_i386_efi_TRUE@am__append_2127 = $(nodist_lspci_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2128 = $(nodist_lspci_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tlspci.marker\n-@COND_i386_efi_TRUE@am__append_2136 = lspci.mod\n-@COND_i386_efi_TRUE@am__append_2137 = lspci.marker\n-@COND_i386_qemu_TRUE@am__append_2138 = lspci.module\n-@COND_i386_qemu_TRUE@am__append_2139 = lspci.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2140 = \n-@COND_i386_qemu_TRUE@am__append_2141 = $(nodist_lspci_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2142 = $(nodist_lspci_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_2129 = lspci.mod\n+@COND_i386_efi_TRUE@am__append_2130 = lspci.marker\n+@COND_i386_qemu_TRUE@am__append_2131 = lspci.module\n+@COND_i386_qemu_TRUE@am__append_2132 = lspci.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2133 = \n+@COND_i386_qemu_TRUE@am__append_2134 = $(nodist_lspci_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2135 = $(nodist_lspci_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tlspci.marker\n-@COND_i386_qemu_TRUE@am__append_2143 = lspci.mod\n-@COND_i386_qemu_TRUE@am__append_2144 = lspci.marker\n-@COND_i386_coreboot_TRUE@am__append_2145 = lspci.module\n-@COND_i386_coreboot_TRUE@am__append_2146 = lspci.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2147 = \n-@COND_i386_coreboot_TRUE@am__append_2148 = $(nodist_lspci_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2149 =  \\\n+@COND_i386_qemu_TRUE@am__append_2136 = lspci.mod\n+@COND_i386_qemu_TRUE@am__append_2137 = lspci.marker\n+@COND_i386_coreboot_TRUE@am__append_2138 = lspci.module\n+@COND_i386_coreboot_TRUE@am__append_2139 = lspci.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2140 = \n+@COND_i386_coreboot_TRUE@am__append_2141 = $(nodist_lspci_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2142 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_lspci_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tlspci.marker\n-@COND_i386_coreboot_TRUE@am__append_2150 = lspci.mod\n-@COND_i386_coreboot_TRUE@am__append_2151 = lspci.marker\n-@COND_i386_multiboot_TRUE@am__append_2152 = lspci.module\n-@COND_i386_multiboot_TRUE@am__append_2153 = lspci.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2154 = \n-@COND_i386_multiboot_TRUE@am__append_2155 = $(nodist_lspci_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2156 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2143 = lspci.mod\n+@COND_i386_coreboot_TRUE@am__append_2144 = lspci.marker\n+@COND_i386_multiboot_TRUE@am__append_2145 = lspci.module\n+@COND_i386_multiboot_TRUE@am__append_2146 = lspci.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2147 = \n+@COND_i386_multiboot_TRUE@am__append_2148 = $(nodist_lspci_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2149 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_lspci_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tlspci.marker\n-@COND_i386_multiboot_TRUE@am__append_2157 = lspci.mod\n-@COND_i386_multiboot_TRUE@am__append_2158 = lspci.marker\n-@COND_i386_ieee1275_TRUE@am__append_2159 = lspci.module\n-@COND_i386_ieee1275_TRUE@am__append_2160 = lspci.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2161 = \n-@COND_i386_ieee1275_TRUE@am__append_2162 = $(nodist_lspci_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2163 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2150 = lspci.mod\n+@COND_i386_multiboot_TRUE@am__append_2151 = lspci.marker\n+@COND_i386_ieee1275_TRUE@am__append_2152 = lspci.module\n+@COND_i386_ieee1275_TRUE@am__append_2153 = lspci.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2154 = \n+@COND_i386_ieee1275_TRUE@am__append_2155 = $(nodist_lspci_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2156 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_lspci_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tlspci.marker\n-@COND_i386_ieee1275_TRUE@am__append_2164 = lspci.mod\n-@COND_i386_ieee1275_TRUE@am__append_2165 = lspci.marker\n-@COND_x86_64_efi_TRUE@am__append_2166 = lspci.module\n-@COND_x86_64_efi_TRUE@am__append_2167 = lspci.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2168 = \n-@COND_x86_64_efi_TRUE@am__append_2169 = $(nodist_lspci_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2170 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_2157 = lspci.mod\n+@COND_i386_ieee1275_TRUE@am__append_2158 = lspci.marker\n+@COND_x86_64_efi_TRUE@am__append_2159 = lspci.module\n+@COND_x86_64_efi_TRUE@am__append_2160 = lspci.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2161 = \n+@COND_x86_64_efi_TRUE@am__append_2162 = $(nodist_lspci_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2163 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_lspci_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tlspci.marker\n-@COND_x86_64_efi_TRUE@am__append_2171 = lspci.mod\n-@COND_x86_64_efi_TRUE@am__append_2172 = lspci.marker\n-@COND_mips_loongson_TRUE@am__append_2173 = lspci.module\n-@COND_mips_loongson_TRUE@am__append_2174 = lspci.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_2175 = \n-@COND_mips_loongson_TRUE@am__append_2176 = $(nodist_lspci_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_2177 =  \\\n+@COND_x86_64_efi_TRUE@am__append_2164 = lspci.mod\n+@COND_x86_64_efi_TRUE@am__append_2165 = lspci.marker\n+@COND_mips_loongson_TRUE@am__append_2166 = lspci.module\n+@COND_mips_loongson_TRUE@am__append_2167 = lspci.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2168 = \n+@COND_mips_loongson_TRUE@am__append_2169 = $(nodist_lspci_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_2170 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_lspci_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tlspci.marker\n-@COND_mips_loongson_TRUE@am__append_2178 = lspci.mod\n-@COND_mips_loongson_TRUE@am__append_2179 = lspci.marker\n-@COND_i386_pc_TRUE@am__append_2180 = play.module\n-@COND_i386_pc_TRUE@am__append_2181 = play.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2171 = lspci.mod\n+@COND_mips_loongson_TRUE@am__append_2172 = lspci.marker\n+@COND_i386_pc_TRUE@am__append_2173 = play.module\n+@COND_i386_pc_TRUE@am__append_2174 = play.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_x86_64_efi_FALSE@play_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2182 = \n-@COND_i386_pc_TRUE@am__append_2183 = $(nodist_play_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2184 = $(nodist_play_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2175 = \n+@COND_i386_pc_TRUE@am__append_2176 = $(nodist_play_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2177 = $(nodist_play_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tplay.marker\n-@COND_i386_pc_TRUE@am__append_2185 = play.mod\n-@COND_i386_pc_TRUE@am__append_2186 = play.marker\n-@COND_i386_efi_TRUE@am__append_2187 = play.module\n-@COND_i386_efi_TRUE@am__append_2188 = play.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2189 = \n-@COND_i386_efi_TRUE@am__append_2190 = $(nodist_play_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2191 = $(nodist_play_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2178 = play.mod\n+@COND_i386_pc_TRUE@am__append_2179 = play.marker\n+@COND_i386_efi_TRUE@am__append_2180 = play.module\n+@COND_i386_efi_TRUE@am__append_2181 = play.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2182 = \n+@COND_i386_efi_TRUE@am__append_2183 = $(nodist_play_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2184 = $(nodist_play_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tplay.marker\n-@COND_i386_efi_TRUE@am__append_2192 = play.mod\n-@COND_i386_efi_TRUE@am__append_2193 = play.marker\n-@COND_i386_qemu_TRUE@am__append_2194 = play.module\n-@COND_i386_qemu_TRUE@am__append_2195 = play.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2196 = \n-@COND_i386_qemu_TRUE@am__append_2197 = $(nodist_play_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2198 = $(nodist_play_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_2185 = play.mod\n+@COND_i386_efi_TRUE@am__append_2186 = play.marker\n+@COND_i386_qemu_TRUE@am__append_2187 = play.module\n+@COND_i386_qemu_TRUE@am__append_2188 = play.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2189 = \n+@COND_i386_qemu_TRUE@am__append_2190 = $(nodist_play_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2191 = $(nodist_play_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tplay.marker\n-@COND_i386_qemu_TRUE@am__append_2199 = play.mod\n-@COND_i386_qemu_TRUE@am__append_2200 = play.marker\n-@COND_i386_coreboot_TRUE@am__append_2201 = play.module\n-@COND_i386_coreboot_TRUE@am__append_2202 = play.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2203 = \n-@COND_i386_coreboot_TRUE@am__append_2204 = $(nodist_play_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2205 =  \\\n+@COND_i386_qemu_TRUE@am__append_2192 = play.mod\n+@COND_i386_qemu_TRUE@am__append_2193 = play.marker\n+@COND_i386_coreboot_TRUE@am__append_2194 = play.module\n+@COND_i386_coreboot_TRUE@am__append_2195 = play.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2196 = \n+@COND_i386_coreboot_TRUE@am__append_2197 = $(nodist_play_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2198 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_play_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tplay.marker\n-@COND_i386_coreboot_TRUE@am__append_2206 = play.mod\n-@COND_i386_coreboot_TRUE@am__append_2207 = play.marker\n-@COND_i386_multiboot_TRUE@am__append_2208 = play.module\n-@COND_i386_multiboot_TRUE@am__append_2209 = play.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2210 = \n-@COND_i386_multiboot_TRUE@am__append_2211 = $(nodist_play_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2212 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2199 = play.mod\n+@COND_i386_coreboot_TRUE@am__append_2200 = play.marker\n+@COND_i386_multiboot_TRUE@am__append_2201 = play.module\n+@COND_i386_multiboot_TRUE@am__append_2202 = play.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2203 = \n+@COND_i386_multiboot_TRUE@am__append_2204 = $(nodist_play_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2205 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_play_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tplay.marker\n-@COND_i386_multiboot_TRUE@am__append_2213 = play.mod\n-@COND_i386_multiboot_TRUE@am__append_2214 = play.marker\n-@COND_i386_ieee1275_TRUE@am__append_2215 = play.module\n-@COND_i386_ieee1275_TRUE@am__append_2216 = play.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2217 = \n-@COND_i386_ieee1275_TRUE@am__append_2218 = $(nodist_play_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2219 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2206 = play.mod\n+@COND_i386_multiboot_TRUE@am__append_2207 = play.marker\n+@COND_i386_ieee1275_TRUE@am__append_2208 = play.module\n+@COND_i386_ieee1275_TRUE@am__append_2209 = play.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2210 = \n+@COND_i386_ieee1275_TRUE@am__append_2211 = $(nodist_play_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2212 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_play_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tplay.marker\n-@COND_i386_ieee1275_TRUE@am__append_2220 = play.mod\n-@COND_i386_ieee1275_TRUE@am__append_2221 = play.marker\n-@COND_x86_64_efi_TRUE@am__append_2222 = play.module\n-@COND_x86_64_efi_TRUE@am__append_2223 = play.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2224 = \n-@COND_x86_64_efi_TRUE@am__append_2225 = $(nodist_play_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2226 = $(nodist_play_module_SOURCES) \\\n+@COND_i386_ieee1275_TRUE@am__append_2213 = play.mod\n+@COND_i386_ieee1275_TRUE@am__append_2214 = play.marker\n+@COND_x86_64_efi_TRUE@am__append_2215 = play.module\n+@COND_x86_64_efi_TRUE@am__append_2216 = play.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2217 = \n+@COND_x86_64_efi_TRUE@am__append_2218 = $(nodist_play_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2219 = $(nodist_play_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tplay.marker\n-@COND_x86_64_efi_TRUE@am__append_2227 = play.mod\n-@COND_x86_64_efi_TRUE@am__append_2228 = play.marker\n-@COND_i386_pc_TRUE@am__append_2229 = spkmodem.module\n-@COND_i386_pc_TRUE@am__append_2230 = spkmodem.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2220 = play.mod\n+@COND_x86_64_efi_TRUE@am__append_2221 = play.marker\n+@COND_i386_pc_TRUE@am__append_2222 = spkmodem.module\n+@COND_i386_pc_TRUE@am__append_2223 = spkmodem.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_x86_64_efi_FALSE@spkmodem_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2231 = \n-@COND_i386_pc_TRUE@am__append_2232 = $(nodist_spkmodem_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2233 =  \\\n+@COND_i386_pc_TRUE@am__append_2224 = \n+@COND_i386_pc_TRUE@am__append_2225 = $(nodist_spkmodem_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2226 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_spkmodem_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tspkmodem.marker\n-@COND_i386_pc_TRUE@am__append_2234 = spkmodem.mod\n-@COND_i386_pc_TRUE@am__append_2235 = spkmodem.marker\n-@COND_i386_efi_TRUE@am__append_2236 = spkmodem.module\n-@COND_i386_efi_TRUE@am__append_2237 = spkmodem.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2238 = \n-@COND_i386_efi_TRUE@am__append_2239 = $(nodist_spkmodem_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2240 =  \\\n+@COND_i386_pc_TRUE@am__append_2227 = spkmodem.mod\n+@COND_i386_pc_TRUE@am__append_2228 = spkmodem.marker\n+@COND_i386_efi_TRUE@am__append_2229 = spkmodem.module\n+@COND_i386_efi_TRUE@am__append_2230 = spkmodem.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2231 = \n+@COND_i386_efi_TRUE@am__append_2232 = $(nodist_spkmodem_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2233 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_spkmodem_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tspkmodem.marker\n-@COND_i386_efi_TRUE@am__append_2241 = spkmodem.mod\n-@COND_i386_efi_TRUE@am__append_2242 = spkmodem.marker\n-@COND_i386_qemu_TRUE@am__append_2243 = spkmodem.module\n-@COND_i386_qemu_TRUE@am__append_2244 = spkmodem.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2245 = \n-@COND_i386_qemu_TRUE@am__append_2246 = $(nodist_spkmodem_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2247 =  \\\n+@COND_i386_efi_TRUE@am__append_2234 = spkmodem.mod\n+@COND_i386_efi_TRUE@am__append_2235 = spkmodem.marker\n+@COND_i386_qemu_TRUE@am__append_2236 = spkmodem.module\n+@COND_i386_qemu_TRUE@am__append_2237 = spkmodem.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2238 = \n+@COND_i386_qemu_TRUE@am__append_2239 = $(nodist_spkmodem_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2240 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_spkmodem_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tspkmodem.marker\n-@COND_i386_qemu_TRUE@am__append_2248 = spkmodem.mod\n-@COND_i386_qemu_TRUE@am__append_2249 = spkmodem.marker\n-@COND_i386_coreboot_TRUE@am__append_2250 = spkmodem.module\n-@COND_i386_coreboot_TRUE@am__append_2251 = spkmodem.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2252 = \n-@COND_i386_coreboot_TRUE@am__append_2253 = $(nodist_spkmodem_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2254 =  \\\n+@COND_i386_qemu_TRUE@am__append_2241 = spkmodem.mod\n+@COND_i386_qemu_TRUE@am__append_2242 = spkmodem.marker\n+@COND_i386_coreboot_TRUE@am__append_2243 = spkmodem.module\n+@COND_i386_coreboot_TRUE@am__append_2244 = spkmodem.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2245 = \n+@COND_i386_coreboot_TRUE@am__append_2246 = $(nodist_spkmodem_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2247 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_spkmodem_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tspkmodem.marker\n-@COND_i386_coreboot_TRUE@am__append_2255 = spkmodem.mod\n-@COND_i386_coreboot_TRUE@am__append_2256 = spkmodem.marker\n-@COND_i386_multiboot_TRUE@am__append_2257 = spkmodem.module\n-@COND_i386_multiboot_TRUE@am__append_2258 = spkmodem.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2259 = \n-@COND_i386_multiboot_TRUE@am__append_2260 = $(nodist_spkmodem_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2261 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2248 = spkmodem.mod\n+@COND_i386_coreboot_TRUE@am__append_2249 = spkmodem.marker\n+@COND_i386_multiboot_TRUE@am__append_2250 = spkmodem.module\n+@COND_i386_multiboot_TRUE@am__append_2251 = spkmodem.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2252 = \n+@COND_i386_multiboot_TRUE@am__append_2253 = $(nodist_spkmodem_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2254 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_spkmodem_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tspkmodem.marker\n-@COND_i386_multiboot_TRUE@am__append_2262 = spkmodem.mod\n-@COND_i386_multiboot_TRUE@am__append_2263 = spkmodem.marker\n-@COND_i386_ieee1275_TRUE@am__append_2264 = spkmodem.module\n-@COND_i386_ieee1275_TRUE@am__append_2265 = spkmodem.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2266 = \n-@COND_i386_ieee1275_TRUE@am__append_2267 = $(nodist_spkmodem_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2268 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2255 = spkmodem.mod\n+@COND_i386_multiboot_TRUE@am__append_2256 = spkmodem.marker\n+@COND_i386_ieee1275_TRUE@am__append_2257 = spkmodem.module\n+@COND_i386_ieee1275_TRUE@am__append_2258 = spkmodem.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2259 = \n+@COND_i386_ieee1275_TRUE@am__append_2260 = $(nodist_spkmodem_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2261 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_spkmodem_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tspkmodem.marker\n-@COND_i386_ieee1275_TRUE@am__append_2269 = spkmodem.mod\n-@COND_i386_ieee1275_TRUE@am__append_2270 = spkmodem.marker\n-@COND_x86_64_efi_TRUE@am__append_2271 = spkmodem.module\n-@COND_x86_64_efi_TRUE@am__append_2272 = spkmodem.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2273 = \n-@COND_x86_64_efi_TRUE@am__append_2274 = $(nodist_spkmodem_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2275 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_2262 = spkmodem.mod\n+@COND_i386_ieee1275_TRUE@am__append_2263 = spkmodem.marker\n+@COND_x86_64_efi_TRUE@am__append_2264 = spkmodem.module\n+@COND_x86_64_efi_TRUE@am__append_2265 = spkmodem.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2266 = \n+@COND_x86_64_efi_TRUE@am__append_2267 = $(nodist_spkmodem_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2268 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_spkmodem_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tspkmodem.marker\n-@COND_x86_64_efi_TRUE@am__append_2276 = spkmodem.mod\n-@COND_x86_64_efi_TRUE@am__append_2277 = spkmodem.marker\n-@COND_i386_pc_TRUE@am__append_2278 = morse.module\n-@COND_i386_pc_TRUE@am__append_2279 = morse.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2269 = spkmodem.mod\n+@COND_x86_64_efi_TRUE@am__append_2270 = spkmodem.marker\n+@COND_i386_pc_TRUE@am__append_2271 = morse.module\n+@COND_i386_pc_TRUE@am__append_2272 = morse.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_x86_64_efi_FALSE@morse_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2280 = \n-@COND_i386_pc_TRUE@am__append_2281 = $(nodist_morse_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2282 = $(nodist_morse_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2273 = \n+@COND_i386_pc_TRUE@am__append_2274 = $(nodist_morse_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2275 = $(nodist_morse_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tmorse.marker\n-@COND_i386_pc_TRUE@am__append_2283 = morse.mod\n-@COND_i386_pc_TRUE@am__append_2284 = morse.marker\n-@COND_i386_efi_TRUE@am__append_2285 = morse.module\n-@COND_i386_efi_TRUE@am__append_2286 = morse.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2287 = \n-@COND_i386_efi_TRUE@am__append_2288 = $(nodist_morse_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2289 = $(nodist_morse_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2276 = morse.mod\n+@COND_i386_pc_TRUE@am__append_2277 = morse.marker\n+@COND_i386_efi_TRUE@am__append_2278 = morse.module\n+@COND_i386_efi_TRUE@am__append_2279 = morse.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2280 = \n+@COND_i386_efi_TRUE@am__append_2281 = $(nodist_morse_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2282 = $(nodist_morse_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tmorse.marker\n-@COND_i386_efi_TRUE@am__append_2290 = morse.mod\n-@COND_i386_efi_TRUE@am__append_2291 = morse.marker\n-@COND_i386_qemu_TRUE@am__append_2292 = morse.module\n-@COND_i386_qemu_TRUE@am__append_2293 = morse.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2294 = \n-@COND_i386_qemu_TRUE@am__append_2295 = $(nodist_morse_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2296 = $(nodist_morse_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_2283 = morse.mod\n+@COND_i386_efi_TRUE@am__append_2284 = morse.marker\n+@COND_i386_qemu_TRUE@am__append_2285 = morse.module\n+@COND_i386_qemu_TRUE@am__append_2286 = morse.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2287 = \n+@COND_i386_qemu_TRUE@am__append_2288 = $(nodist_morse_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2289 = $(nodist_morse_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tmorse.marker\n-@COND_i386_qemu_TRUE@am__append_2297 = morse.mod\n-@COND_i386_qemu_TRUE@am__append_2298 = morse.marker\n-@COND_i386_coreboot_TRUE@am__append_2299 = morse.module\n-@COND_i386_coreboot_TRUE@am__append_2300 = morse.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2301 = \n-@COND_i386_coreboot_TRUE@am__append_2302 = $(nodist_morse_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2303 =  \\\n+@COND_i386_qemu_TRUE@am__append_2290 = morse.mod\n+@COND_i386_qemu_TRUE@am__append_2291 = morse.marker\n+@COND_i386_coreboot_TRUE@am__append_2292 = morse.module\n+@COND_i386_coreboot_TRUE@am__append_2293 = morse.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2294 = \n+@COND_i386_coreboot_TRUE@am__append_2295 = $(nodist_morse_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2296 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_morse_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tmorse.marker\n-@COND_i386_coreboot_TRUE@am__append_2304 = morse.mod\n-@COND_i386_coreboot_TRUE@am__append_2305 = morse.marker\n-@COND_i386_multiboot_TRUE@am__append_2306 = morse.module\n-@COND_i386_multiboot_TRUE@am__append_2307 = morse.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2308 = \n-@COND_i386_multiboot_TRUE@am__append_2309 = $(nodist_morse_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2310 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2297 = morse.mod\n+@COND_i386_coreboot_TRUE@am__append_2298 = morse.marker\n+@COND_i386_multiboot_TRUE@am__append_2299 = morse.module\n+@COND_i386_multiboot_TRUE@am__append_2300 = morse.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2301 = \n+@COND_i386_multiboot_TRUE@am__append_2302 = $(nodist_morse_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2303 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_morse_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tmorse.marker\n-@COND_i386_multiboot_TRUE@am__append_2311 = morse.mod\n-@COND_i386_multiboot_TRUE@am__append_2312 = morse.marker\n-@COND_i386_ieee1275_TRUE@am__append_2313 = morse.module\n-@COND_i386_ieee1275_TRUE@am__append_2314 = morse.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2315 = \n-@COND_i386_ieee1275_TRUE@am__append_2316 = $(nodist_morse_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2317 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2304 = morse.mod\n+@COND_i386_multiboot_TRUE@am__append_2305 = morse.marker\n+@COND_i386_ieee1275_TRUE@am__append_2306 = morse.module\n+@COND_i386_ieee1275_TRUE@am__append_2307 = morse.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2308 = \n+@COND_i386_ieee1275_TRUE@am__append_2309 = $(nodist_morse_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2310 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_morse_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tmorse.marker\n-@COND_i386_ieee1275_TRUE@am__append_2318 = morse.mod\n-@COND_i386_ieee1275_TRUE@am__append_2319 = morse.marker\n-@COND_x86_64_efi_TRUE@am__append_2320 = morse.module\n-@COND_x86_64_efi_TRUE@am__append_2321 = morse.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2322 = \n-@COND_x86_64_efi_TRUE@am__append_2323 = $(nodist_morse_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2324 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_2311 = morse.mod\n+@COND_i386_ieee1275_TRUE@am__append_2312 = morse.marker\n+@COND_x86_64_efi_TRUE@am__append_2313 = morse.module\n+@COND_x86_64_efi_TRUE@am__append_2314 = morse.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2315 = \n+@COND_x86_64_efi_TRUE@am__append_2316 = $(nodist_morse_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2317 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_morse_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tmorse.marker\n-@COND_x86_64_efi_TRUE@am__append_2325 = morse.mod\n-@COND_x86_64_efi_TRUE@am__append_2326 = morse.marker\n-@COND_i386_pc_TRUE@am__append_2327 = setpci.module\n-@COND_i386_pc_TRUE@am__append_2328 = setpci.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2318 = morse.mod\n+@COND_x86_64_efi_TRUE@am__append_2319 = morse.marker\n+@COND_i386_pc_TRUE@am__append_2320 = setpci.module\n+@COND_i386_pc_TRUE@am__append_2321 = setpci.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_mips_loongson_FALSE@@COND_x86_64_efi_FALSE@setpci_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2329 = \n-@COND_i386_pc_TRUE@am__append_2330 = $(nodist_setpci_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2331 = $(nodist_setpci_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2322 = \n+@COND_i386_pc_TRUE@am__append_2323 = $(nodist_setpci_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2324 = $(nodist_setpci_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tsetpci.marker\n-@COND_i386_pc_TRUE@am__append_2332 = setpci.mod\n-@COND_i386_pc_TRUE@am__append_2333 = setpci.marker\n-@COND_i386_efi_TRUE@am__append_2334 = setpci.module\n-@COND_i386_efi_TRUE@am__append_2335 = setpci.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2336 = \n-@COND_i386_efi_TRUE@am__append_2337 = $(nodist_setpci_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2338 = $(nodist_setpci_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2325 = setpci.mod\n+@COND_i386_pc_TRUE@am__append_2326 = setpci.marker\n+@COND_i386_efi_TRUE@am__append_2327 = setpci.module\n+@COND_i386_efi_TRUE@am__append_2328 = setpci.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2329 = \n+@COND_i386_efi_TRUE@am__append_2330 = $(nodist_setpci_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2331 = $(nodist_setpci_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tsetpci.marker\n-@COND_i386_efi_TRUE@am__append_2339 = setpci.mod\n-@COND_i386_efi_TRUE@am__append_2340 = setpci.marker\n-@COND_i386_qemu_TRUE@am__append_2341 = setpci.module\n-@COND_i386_qemu_TRUE@am__append_2342 = setpci.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2343 = \n-@COND_i386_qemu_TRUE@am__append_2344 = $(nodist_setpci_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2345 =  \\\n+@COND_i386_efi_TRUE@am__append_2332 = setpci.mod\n+@COND_i386_efi_TRUE@am__append_2333 = setpci.marker\n+@COND_i386_qemu_TRUE@am__append_2334 = setpci.module\n+@COND_i386_qemu_TRUE@am__append_2335 = setpci.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2336 = \n+@COND_i386_qemu_TRUE@am__append_2337 = $(nodist_setpci_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2338 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_setpci_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tsetpci.marker\n-@COND_i386_qemu_TRUE@am__append_2346 = setpci.mod\n-@COND_i386_qemu_TRUE@am__append_2347 = setpci.marker\n-@COND_i386_coreboot_TRUE@am__append_2348 = setpci.module\n-@COND_i386_coreboot_TRUE@am__append_2349 = setpci.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2350 = \n-@COND_i386_coreboot_TRUE@am__append_2351 = $(nodist_setpci_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2352 =  \\\n+@COND_i386_qemu_TRUE@am__append_2339 = setpci.mod\n+@COND_i386_qemu_TRUE@am__append_2340 = setpci.marker\n+@COND_i386_coreboot_TRUE@am__append_2341 = setpci.module\n+@COND_i386_coreboot_TRUE@am__append_2342 = setpci.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2343 = \n+@COND_i386_coreboot_TRUE@am__append_2344 = $(nodist_setpci_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2345 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_setpci_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tsetpci.marker\n-@COND_i386_coreboot_TRUE@am__append_2353 = setpci.mod\n-@COND_i386_coreboot_TRUE@am__append_2354 = setpci.marker\n-@COND_i386_multiboot_TRUE@am__append_2355 = setpci.module\n-@COND_i386_multiboot_TRUE@am__append_2356 = setpci.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2357 = \n-@COND_i386_multiboot_TRUE@am__append_2358 = $(nodist_setpci_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2359 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2346 = setpci.mod\n+@COND_i386_coreboot_TRUE@am__append_2347 = setpci.marker\n+@COND_i386_multiboot_TRUE@am__append_2348 = setpci.module\n+@COND_i386_multiboot_TRUE@am__append_2349 = setpci.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2350 = \n+@COND_i386_multiboot_TRUE@am__append_2351 = $(nodist_setpci_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2352 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_setpci_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tsetpci.marker\n-@COND_i386_multiboot_TRUE@am__append_2360 = setpci.mod\n-@COND_i386_multiboot_TRUE@am__append_2361 = setpci.marker\n-@COND_i386_ieee1275_TRUE@am__append_2362 = setpci.module\n-@COND_i386_ieee1275_TRUE@am__append_2363 = setpci.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2364 = \n-@COND_i386_ieee1275_TRUE@am__append_2365 = $(nodist_setpci_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2366 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2353 = setpci.mod\n+@COND_i386_multiboot_TRUE@am__append_2354 = setpci.marker\n+@COND_i386_ieee1275_TRUE@am__append_2355 = setpci.module\n+@COND_i386_ieee1275_TRUE@am__append_2356 = setpci.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2357 = \n+@COND_i386_ieee1275_TRUE@am__append_2358 = $(nodist_setpci_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2359 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_setpci_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tsetpci.marker\n-@COND_i386_ieee1275_TRUE@am__append_2367 = setpci.mod\n-@COND_i386_ieee1275_TRUE@am__append_2368 = setpci.marker\n-@COND_x86_64_efi_TRUE@am__append_2369 = setpci.module\n-@COND_x86_64_efi_TRUE@am__append_2370 = setpci.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2371 = \n-@COND_x86_64_efi_TRUE@am__append_2372 = $(nodist_setpci_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2373 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_2360 = setpci.mod\n+@COND_i386_ieee1275_TRUE@am__append_2361 = setpci.marker\n+@COND_x86_64_efi_TRUE@am__append_2362 = setpci.module\n+@COND_x86_64_efi_TRUE@am__append_2363 = setpci.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2364 = \n+@COND_x86_64_efi_TRUE@am__append_2365 = $(nodist_setpci_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2366 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_setpci_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tsetpci.marker\n-@COND_x86_64_efi_TRUE@am__append_2374 = setpci.mod\n-@COND_x86_64_efi_TRUE@am__append_2375 = setpci.marker\n-@COND_mips_loongson_TRUE@am__append_2376 = setpci.module\n-@COND_mips_loongson_TRUE@am__append_2377 = setpci.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_2378 = \n-@COND_mips_loongson_TRUE@am__append_2379 = $(nodist_setpci_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_2380 =  \\\n+@COND_x86_64_efi_TRUE@am__append_2367 = setpci.mod\n+@COND_x86_64_efi_TRUE@am__append_2368 = setpci.marker\n+@COND_mips_loongson_TRUE@am__append_2369 = setpci.module\n+@COND_mips_loongson_TRUE@am__append_2370 = setpci.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2371 = \n+@COND_mips_loongson_TRUE@am__append_2372 = $(nodist_setpci_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_2373 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_setpci_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tsetpci.marker\n-@COND_mips_loongson_TRUE@am__append_2381 = setpci.mod\n-@COND_mips_loongson_TRUE@am__append_2382 = setpci.marker\n-@COND_i386_pc_TRUE@am__append_2383 = pcidump.module\n-@COND_i386_pc_TRUE@am__append_2384 = pcidump.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2374 = setpci.mod\n+@COND_mips_loongson_TRUE@am__append_2375 = setpci.marker\n+@COND_i386_pc_TRUE@am__append_2376 = pcidump.module\n+@COND_i386_pc_TRUE@am__append_2377 = pcidump.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_mips_loongson_FALSE@@COND_x86_64_efi_FALSE@pcidump_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2385 = \n-@COND_i386_pc_TRUE@am__append_2386 = $(nodist_pcidump_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2387 = $(nodist_pcidump_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2378 = \n+@COND_i386_pc_TRUE@am__append_2379 = $(nodist_pcidump_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2380 = $(nodist_pcidump_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tpcidump.marker\n-@COND_i386_pc_TRUE@am__append_2388 = pcidump.mod\n-@COND_i386_pc_TRUE@am__append_2389 = pcidump.marker\n-@COND_i386_efi_TRUE@am__append_2390 = pcidump.module\n-@COND_i386_efi_TRUE@am__append_2391 = pcidump.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2392 = \n-@COND_i386_efi_TRUE@am__append_2393 = $(nodist_pcidump_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2394 =  \\\n+@COND_i386_pc_TRUE@am__append_2381 = pcidump.mod\n+@COND_i386_pc_TRUE@am__append_2382 = pcidump.marker\n+@COND_i386_efi_TRUE@am__append_2383 = pcidump.module\n+@COND_i386_efi_TRUE@am__append_2384 = pcidump.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2385 = \n+@COND_i386_efi_TRUE@am__append_2386 = $(nodist_pcidump_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2387 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_pcidump_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tpcidump.marker\n-@COND_i386_efi_TRUE@am__append_2395 = pcidump.mod\n-@COND_i386_efi_TRUE@am__append_2396 = pcidump.marker\n-@COND_i386_qemu_TRUE@am__append_2397 = pcidump.module\n-@COND_i386_qemu_TRUE@am__append_2398 = pcidump.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2399 = \n-@COND_i386_qemu_TRUE@am__append_2400 = $(nodist_pcidump_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2401 =  \\\n+@COND_i386_efi_TRUE@am__append_2388 = pcidump.mod\n+@COND_i386_efi_TRUE@am__append_2389 = pcidump.marker\n+@COND_i386_qemu_TRUE@am__append_2390 = pcidump.module\n+@COND_i386_qemu_TRUE@am__append_2391 = pcidump.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2392 = \n+@COND_i386_qemu_TRUE@am__append_2393 = $(nodist_pcidump_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2394 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_pcidump_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tpcidump.marker\n-@COND_i386_qemu_TRUE@am__append_2402 = pcidump.mod\n-@COND_i386_qemu_TRUE@am__append_2403 = pcidump.marker\n-@COND_i386_coreboot_TRUE@am__append_2404 = pcidump.module\n-@COND_i386_coreboot_TRUE@am__append_2405 = pcidump.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2406 = \n-@COND_i386_coreboot_TRUE@am__append_2407 = $(nodist_pcidump_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2408 =  \\\n+@COND_i386_qemu_TRUE@am__append_2395 = pcidump.mod\n+@COND_i386_qemu_TRUE@am__append_2396 = pcidump.marker\n+@COND_i386_coreboot_TRUE@am__append_2397 = pcidump.module\n+@COND_i386_coreboot_TRUE@am__append_2398 = pcidump.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2399 = \n+@COND_i386_coreboot_TRUE@am__append_2400 = $(nodist_pcidump_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2401 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_pcidump_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tpcidump.marker\n-@COND_i386_coreboot_TRUE@am__append_2409 = pcidump.mod\n-@COND_i386_coreboot_TRUE@am__append_2410 = pcidump.marker\n-@COND_i386_multiboot_TRUE@am__append_2411 = pcidump.module\n-@COND_i386_multiboot_TRUE@am__append_2412 = pcidump.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2413 = \n-@COND_i386_multiboot_TRUE@am__append_2414 = $(nodist_pcidump_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2415 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2402 = pcidump.mod\n+@COND_i386_coreboot_TRUE@am__append_2403 = pcidump.marker\n+@COND_i386_multiboot_TRUE@am__append_2404 = pcidump.module\n+@COND_i386_multiboot_TRUE@am__append_2405 = pcidump.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2406 = \n+@COND_i386_multiboot_TRUE@am__append_2407 = $(nodist_pcidump_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2408 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_pcidump_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tpcidump.marker\n-@COND_i386_multiboot_TRUE@am__append_2416 = pcidump.mod\n-@COND_i386_multiboot_TRUE@am__append_2417 = pcidump.marker\n-@COND_i386_ieee1275_TRUE@am__append_2418 = pcidump.module\n-@COND_i386_ieee1275_TRUE@am__append_2419 = pcidump.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2420 = \n-@COND_i386_ieee1275_TRUE@am__append_2421 = $(nodist_pcidump_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2422 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2409 = pcidump.mod\n+@COND_i386_multiboot_TRUE@am__append_2410 = pcidump.marker\n+@COND_i386_ieee1275_TRUE@am__append_2411 = pcidump.module\n+@COND_i386_ieee1275_TRUE@am__append_2412 = pcidump.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2413 = \n+@COND_i386_ieee1275_TRUE@am__append_2414 = $(nodist_pcidump_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2415 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_pcidump_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tpcidump.marker\n-@COND_i386_ieee1275_TRUE@am__append_2423 = pcidump.mod\n-@COND_i386_ieee1275_TRUE@am__append_2424 = pcidump.marker\n-@COND_x86_64_efi_TRUE@am__append_2425 = pcidump.module\n-@COND_x86_64_efi_TRUE@am__append_2426 = pcidump.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2427 = \n-@COND_x86_64_efi_TRUE@am__append_2428 = $(nodist_pcidump_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2429 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_2416 = pcidump.mod\n+@COND_i386_ieee1275_TRUE@am__append_2417 = pcidump.marker\n+@COND_x86_64_efi_TRUE@am__append_2418 = pcidump.module\n+@COND_x86_64_efi_TRUE@am__append_2419 = pcidump.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2420 = \n+@COND_x86_64_efi_TRUE@am__append_2421 = $(nodist_pcidump_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2422 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_pcidump_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tpcidump.marker\n-@COND_x86_64_efi_TRUE@am__append_2430 = pcidump.mod\n-@COND_x86_64_efi_TRUE@am__append_2431 = pcidump.marker\n-@COND_mips_loongson_TRUE@am__append_2432 = pcidump.module\n-@COND_mips_loongson_TRUE@am__append_2433 = pcidump.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_2434 = \n-@COND_mips_loongson_TRUE@am__append_2435 = $(nodist_pcidump_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_2436 =  \\\n+@COND_x86_64_efi_TRUE@am__append_2423 = pcidump.mod\n+@COND_x86_64_efi_TRUE@am__append_2424 = pcidump.marker\n+@COND_mips_loongson_TRUE@am__append_2425 = pcidump.module\n+@COND_mips_loongson_TRUE@am__append_2426 = pcidump.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2427 = \n+@COND_mips_loongson_TRUE@am__append_2428 = $(nodist_pcidump_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_2429 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_pcidump_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tpcidump.marker\n-@COND_mips_loongson_TRUE@am__append_2437 = pcidump.mod\n-@COND_mips_loongson_TRUE@am__append_2438 = pcidump.marker\n-@COND_i386_ieee1275_TRUE@am__append_2439 = suspend.module\n-@COND_i386_ieee1275_TRUE@am__append_2440 = suspend.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2430 = pcidump.mod\n+@COND_mips_loongson_TRUE@am__append_2431 = pcidump.marker\n+@COND_i386_ieee1275_TRUE@am__append_2432 = suspend.module\n+@COND_i386_ieee1275_TRUE@am__append_2433 = suspend.module$(EXEEXT)\n @COND_i386_ieee1275_FALSE@@COND_powerpc_ieee1275_FALSE@suspend_module_DEPENDENCIES =\n-@COND_i386_ieee1275_TRUE@am__append_2441 = \n-@COND_i386_ieee1275_TRUE@am__append_2442 = $(nodist_suspend_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2443 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_2434 = \n+@COND_i386_ieee1275_TRUE@am__append_2435 = $(nodist_suspend_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2436 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_suspend_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tsuspend.marker\n-@COND_i386_ieee1275_TRUE@am__append_2444 = suspend.mod\n-@COND_i386_ieee1275_TRUE@am__append_2445 = suspend.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_2446 = suspend.module \\\n+@COND_i386_ieee1275_TRUE@am__append_2437 = suspend.mod\n+@COND_i386_ieee1275_TRUE@am__append_2438 = suspend.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_2439 = suspend.module \\\n @COND_powerpc_ieee1275_TRUE@\tescc.module\n-@COND_powerpc_ieee1275_TRUE@am__append_2447 = suspend.module$(EXEEXT) \\\n+@COND_powerpc_ieee1275_TRUE@am__append_2440 = suspend.module$(EXEEXT) \\\n @COND_powerpc_ieee1275_TRUE@\tescc.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__append_2448 =\n-@COND_powerpc_ieee1275_TRUE@am__append_2449 =  \\\n+@COND_powerpc_ieee1275_TRUE@am__append_2441 =\n+@COND_powerpc_ieee1275_TRUE@am__append_2442 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_suspend_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_escc_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_2450 =  \\\n+@COND_powerpc_ieee1275_TRUE@am__append_2443 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_suspend_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tsuspend.marker \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_escc_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tescc.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_2451 = suspend.mod escc.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_2452 = suspend.marker \\\n+@COND_powerpc_ieee1275_TRUE@am__append_2444 = suspend.mod escc.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_2445 = suspend.marker \\\n @COND_powerpc_ieee1275_TRUE@\tescc.marker\n @COND_powerpc_ieee1275_FALSE@escc_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2453 = usbtest.module\n-@COND_i386_pc_TRUE@am__append_2454 = usbtest.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__append_2446 = usbtest.module\n+@COND_i386_pc_TRUE@am__append_2447 = usbtest.module$(EXEEXT)\n @COND_arm_coreboot_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_mips_loongson_FALSE@@COND_x86_64_efi_FALSE@usbtest_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2455 = \n-@COND_i386_pc_TRUE@am__append_2456 = $(nodist_usbtest_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2457 = $(nodist_usbtest_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2448 = \n+@COND_i386_pc_TRUE@am__append_2449 = $(nodist_usbtest_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2450 = $(nodist_usbtest_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tusbtest.marker\n-@COND_i386_pc_TRUE@am__append_2458 = usbtest.mod\n-@COND_i386_pc_TRUE@am__append_2459 = usbtest.marker\n-@COND_i386_efi_TRUE@am__append_2460 = usbtest.module\n-@COND_i386_efi_TRUE@am__append_2461 = usbtest.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2462 = \n-@COND_i386_efi_TRUE@am__append_2463 = $(nodist_usbtest_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2464 =  \\\n+@COND_i386_pc_TRUE@am__append_2451 = usbtest.mod\n+@COND_i386_pc_TRUE@am__append_2452 = usbtest.marker\n+@COND_i386_efi_TRUE@am__append_2453 = usbtest.module\n+@COND_i386_efi_TRUE@am__append_2454 = usbtest.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2455 = \n+@COND_i386_efi_TRUE@am__append_2456 = $(nodist_usbtest_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2457 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_usbtest_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tusbtest.marker\n-@COND_i386_efi_TRUE@am__append_2465 = usbtest.mod\n-@COND_i386_efi_TRUE@am__append_2466 = usbtest.marker\n-@COND_i386_qemu_TRUE@am__append_2467 = usbtest.module\n-@COND_i386_qemu_TRUE@am__append_2468 = usbtest.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2469 = \n-@COND_i386_qemu_TRUE@am__append_2470 = $(nodist_usbtest_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2471 =  \\\n+@COND_i386_efi_TRUE@am__append_2458 = usbtest.mod\n+@COND_i386_efi_TRUE@am__append_2459 = usbtest.marker\n+@COND_i386_qemu_TRUE@am__append_2460 = usbtest.module\n+@COND_i386_qemu_TRUE@am__append_2461 = usbtest.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2462 = \n+@COND_i386_qemu_TRUE@am__append_2463 = $(nodist_usbtest_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2464 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_usbtest_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tusbtest.marker\n-@COND_i386_qemu_TRUE@am__append_2472 = usbtest.mod\n-@COND_i386_qemu_TRUE@am__append_2473 = usbtest.marker\n-@COND_i386_coreboot_TRUE@am__append_2474 = usbtest.module\n-@COND_i386_coreboot_TRUE@am__append_2475 = usbtest.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2476 = \n-@COND_i386_coreboot_TRUE@am__append_2477 = $(nodist_usbtest_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2478 =  \\\n+@COND_i386_qemu_TRUE@am__append_2465 = usbtest.mod\n+@COND_i386_qemu_TRUE@am__append_2466 = usbtest.marker\n+@COND_i386_coreboot_TRUE@am__append_2467 = usbtest.module\n+@COND_i386_coreboot_TRUE@am__append_2468 = usbtest.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2469 = \n+@COND_i386_coreboot_TRUE@am__append_2470 = $(nodist_usbtest_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2471 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_usbtest_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tusbtest.marker\n-@COND_i386_coreboot_TRUE@am__append_2479 = usbtest.mod\n-@COND_i386_coreboot_TRUE@am__append_2480 = usbtest.marker\n-@COND_i386_multiboot_TRUE@am__append_2481 = usbtest.module\n-@COND_i386_multiboot_TRUE@am__append_2482 = usbtest.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2483 = \n-@COND_i386_multiboot_TRUE@am__append_2484 = $(nodist_usbtest_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2485 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2472 = usbtest.mod\n+@COND_i386_coreboot_TRUE@am__append_2473 = usbtest.marker\n+@COND_i386_multiboot_TRUE@am__append_2474 = usbtest.module\n+@COND_i386_multiboot_TRUE@am__append_2475 = usbtest.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2476 = \n+@COND_i386_multiboot_TRUE@am__append_2477 = $(nodist_usbtest_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2478 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_usbtest_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tusbtest.marker\n-@COND_i386_multiboot_TRUE@am__append_2486 = usbtest.mod\n-@COND_i386_multiboot_TRUE@am__append_2487 = usbtest.marker\n-@COND_i386_ieee1275_TRUE@am__append_2488 = usbtest.module\n-@COND_i386_ieee1275_TRUE@am__append_2489 = usbtest.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2490 = \n-@COND_i386_ieee1275_TRUE@am__append_2491 = $(nodist_usbtest_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2492 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2479 = usbtest.mod\n+@COND_i386_multiboot_TRUE@am__append_2480 = usbtest.marker\n+@COND_i386_ieee1275_TRUE@am__append_2481 = usbtest.module\n+@COND_i386_ieee1275_TRUE@am__append_2482 = usbtest.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2483 = \n+@COND_i386_ieee1275_TRUE@am__append_2484 = $(nodist_usbtest_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2485 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_usbtest_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tusbtest.marker\n-@COND_i386_ieee1275_TRUE@am__append_2493 = usbtest.mod\n-@COND_i386_ieee1275_TRUE@am__append_2494 = usbtest.marker\n-@COND_x86_64_efi_TRUE@am__append_2495 = usbtest.module\n-@COND_x86_64_efi_TRUE@am__append_2496 = usbtest.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2497 = \n-@COND_x86_64_efi_TRUE@am__append_2498 = $(nodist_usbtest_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2499 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_2486 = usbtest.mod\n+@COND_i386_ieee1275_TRUE@am__append_2487 = usbtest.marker\n+@COND_x86_64_efi_TRUE@am__append_2488 = usbtest.module\n+@COND_x86_64_efi_TRUE@am__append_2489 = usbtest.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2490 = \n+@COND_x86_64_efi_TRUE@am__append_2491 = $(nodist_usbtest_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2492 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_usbtest_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tusbtest.marker\n-@COND_x86_64_efi_TRUE@am__append_2500 = usbtest.mod\n-@COND_x86_64_efi_TRUE@am__append_2501 = usbtest.marker\n-@COND_mips_loongson_TRUE@am__append_2502 = usbtest.module\n-@COND_mips_loongson_TRUE@am__append_2503 = usbtest.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_2504 = \n-@COND_mips_loongson_TRUE@am__append_2505 = $(nodist_usbtest_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_2506 =  \\\n+@COND_x86_64_efi_TRUE@am__append_2493 = usbtest.mod\n+@COND_x86_64_efi_TRUE@am__append_2494 = usbtest.marker\n+@COND_mips_loongson_TRUE@am__append_2495 = usbtest.module\n+@COND_mips_loongson_TRUE@am__append_2496 = usbtest.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2497 = \n+@COND_mips_loongson_TRUE@am__append_2498 = $(nodist_usbtest_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_2499 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_usbtest_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tusbtest.marker\n-@COND_mips_loongson_TRUE@am__append_2507 = usbtest.mod\n-@COND_mips_loongson_TRUE@am__append_2508 = usbtest.marker\n-@COND_arm_coreboot_TRUE@am__append_2509 = usbtest.module\n-@COND_arm_coreboot_TRUE@am__append_2510 = usbtest.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__append_2511 = \n-@COND_arm_coreboot_TRUE@am__append_2512 = $(nodist_usbtest_module_SOURCES)\n-@COND_arm_coreboot_TRUE@am__append_2513 =  \\\n+@COND_mips_loongson_TRUE@am__append_2500 = usbtest.mod\n+@COND_mips_loongson_TRUE@am__append_2501 = usbtest.marker\n+@COND_arm_coreboot_TRUE@am__append_2502 = usbtest.module\n+@COND_arm_coreboot_TRUE@am__append_2503 = usbtest.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__append_2504 = \n+@COND_arm_coreboot_TRUE@am__append_2505 = $(nodist_usbtest_module_SOURCES)\n+@COND_arm_coreboot_TRUE@am__append_2506 =  \\\n @COND_arm_coreboot_TRUE@\t$(nodist_usbtest_module_SOURCES) \\\n @COND_arm_coreboot_TRUE@\tusbtest.marker\n-@COND_arm_coreboot_TRUE@am__append_2514 = usbtest.mod\n-@COND_arm_coreboot_TRUE@am__append_2515 = usbtest.marker\n-@COND_i386_pc_TRUE@am__append_2516 = ata.module\n-@COND_i386_pc_TRUE@am__append_2517 = ata.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__append_2507 = usbtest.mod\n+@COND_arm_coreboot_TRUE@am__append_2508 = usbtest.marker\n+@COND_i386_pc_TRUE@am__append_2509 = ata.module\n+@COND_i386_pc_TRUE@am__append_2510 = ata.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_x86_64_efi_FALSE@ata_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2518 = \n-@COND_i386_pc_TRUE@am__append_2519 = $(nodist_ata_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2520 = $(nodist_ata_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2511 = \n+@COND_i386_pc_TRUE@am__append_2512 = $(nodist_ata_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2513 = $(nodist_ata_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tata.marker\n-@COND_i386_pc_TRUE@am__append_2521 = ata.mod\n-@COND_i386_pc_TRUE@am__append_2522 = ata.marker\n-@COND_i386_efi_TRUE@am__append_2523 = ata.module\n-@COND_i386_efi_TRUE@am__append_2524 = ata.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2525 = \n-@COND_i386_efi_TRUE@am__append_2526 = $(nodist_ata_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2527 = $(nodist_ata_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2514 = ata.mod\n+@COND_i386_pc_TRUE@am__append_2515 = ata.marker\n+@COND_i386_efi_TRUE@am__append_2516 = ata.module\n+@COND_i386_efi_TRUE@am__append_2517 = ata.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2518 = \n+@COND_i386_efi_TRUE@am__append_2519 = $(nodist_ata_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2520 = $(nodist_ata_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tata.marker\n-@COND_i386_efi_TRUE@am__append_2528 = ata.mod\n-@COND_i386_efi_TRUE@am__append_2529 = ata.marker\n-@COND_i386_qemu_TRUE@am__append_2530 = ata.module\n-@COND_i386_qemu_TRUE@am__append_2531 = ata.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2532 = \n-@COND_i386_qemu_TRUE@am__append_2533 = $(nodist_ata_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2534 = $(nodist_ata_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_2521 = ata.mod\n+@COND_i386_efi_TRUE@am__append_2522 = ata.marker\n+@COND_i386_qemu_TRUE@am__append_2523 = ata.module\n+@COND_i386_qemu_TRUE@am__append_2524 = ata.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2525 = \n+@COND_i386_qemu_TRUE@am__append_2526 = $(nodist_ata_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2527 = $(nodist_ata_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tata.marker\n-@COND_i386_qemu_TRUE@am__append_2535 = ata.mod\n-@COND_i386_qemu_TRUE@am__append_2536 = ata.marker\n-@COND_i386_coreboot_TRUE@am__append_2537 = ata.module\n-@COND_i386_coreboot_TRUE@am__append_2538 = ata.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2539 = \n-@COND_i386_coreboot_TRUE@am__append_2540 = $(nodist_ata_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2541 =  \\\n+@COND_i386_qemu_TRUE@am__append_2528 = ata.mod\n+@COND_i386_qemu_TRUE@am__append_2529 = ata.marker\n+@COND_i386_coreboot_TRUE@am__append_2530 = ata.module\n+@COND_i386_coreboot_TRUE@am__append_2531 = ata.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2532 = \n+@COND_i386_coreboot_TRUE@am__append_2533 = $(nodist_ata_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2534 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_ata_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tata.marker\n-@COND_i386_coreboot_TRUE@am__append_2542 = ata.mod\n-@COND_i386_coreboot_TRUE@am__append_2543 = ata.marker\n-@COND_i386_multiboot_TRUE@am__append_2544 = ata.module\n-@COND_i386_multiboot_TRUE@am__append_2545 = ata.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2546 = \n-@COND_i386_multiboot_TRUE@am__append_2547 = $(nodist_ata_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2548 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2535 = ata.mod\n+@COND_i386_coreboot_TRUE@am__append_2536 = ata.marker\n+@COND_i386_multiboot_TRUE@am__append_2537 = ata.module\n+@COND_i386_multiboot_TRUE@am__append_2538 = ata.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2539 = \n+@COND_i386_multiboot_TRUE@am__append_2540 = $(nodist_ata_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2541 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_ata_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tata.marker\n-@COND_i386_multiboot_TRUE@am__append_2549 = ata.mod\n-@COND_i386_multiboot_TRUE@am__append_2550 = ata.marker\n-@COND_i386_ieee1275_TRUE@am__append_2551 = ata.module\n-@COND_i386_ieee1275_TRUE@am__append_2552 = ata.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2553 = \n-@COND_i386_ieee1275_TRUE@am__append_2554 = $(nodist_ata_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2555 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2542 = ata.mod\n+@COND_i386_multiboot_TRUE@am__append_2543 = ata.marker\n+@COND_i386_ieee1275_TRUE@am__append_2544 = ata.module\n+@COND_i386_ieee1275_TRUE@am__append_2545 = ata.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2546 = \n+@COND_i386_ieee1275_TRUE@am__append_2547 = $(nodist_ata_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2548 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_ata_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tata.marker\n-@COND_i386_ieee1275_TRUE@am__append_2556 = ata.mod\n-@COND_i386_ieee1275_TRUE@am__append_2557 = ata.marker\n-@COND_x86_64_efi_TRUE@am__append_2558 = ata.module\n-@COND_x86_64_efi_TRUE@am__append_2559 = ata.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2560 = \n-@COND_x86_64_efi_TRUE@am__append_2561 = $(nodist_ata_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2562 = $(nodist_ata_module_SOURCES) \\\n+@COND_i386_ieee1275_TRUE@am__append_2549 = ata.mod\n+@COND_i386_ieee1275_TRUE@am__append_2550 = ata.marker\n+@COND_x86_64_efi_TRUE@am__append_2551 = ata.module\n+@COND_x86_64_efi_TRUE@am__append_2552 = ata.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2553 = \n+@COND_x86_64_efi_TRUE@am__append_2554 = $(nodist_ata_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2555 = $(nodist_ata_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tata.marker\n-@COND_x86_64_efi_TRUE@am__append_2563 = ata.mod\n-@COND_x86_64_efi_TRUE@am__append_2564 = ata.marker\n-@COND_mips_loongson_TRUE@am__append_2565 = ata.module\n-@COND_mips_loongson_TRUE@am__append_2566 = ata.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_2567 = \n-@COND_mips_loongson_TRUE@am__append_2568 = $(nodist_ata_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_2569 =  \\\n+@COND_x86_64_efi_TRUE@am__append_2556 = ata.mod\n+@COND_x86_64_efi_TRUE@am__append_2557 = ata.marker\n+@COND_mips_loongson_TRUE@am__append_2558 = ata.module\n+@COND_mips_loongson_TRUE@am__append_2559 = ata.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2560 = \n+@COND_mips_loongson_TRUE@am__append_2561 = $(nodist_ata_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_2562 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_ata_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tata.marker\n-@COND_mips_loongson_TRUE@am__append_2570 = ata.mod\n-@COND_mips_loongson_TRUE@am__append_2571 = ata.marker\n-@COND_mips_qemu_mips_TRUE@am__append_2572 = ata.module\n-@COND_mips_qemu_mips_TRUE@am__append_2573 = ata.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_2574 = \n-@COND_mips_qemu_mips_TRUE@am__append_2575 = $(nodist_ata_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_2576 =  \\\n+@COND_mips_loongson_TRUE@am__append_2563 = ata.mod\n+@COND_mips_loongson_TRUE@am__append_2564 = ata.marker\n+@COND_mips_qemu_mips_TRUE@am__append_2565 = ata.module\n+@COND_mips_qemu_mips_TRUE@am__append_2566 = ata.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_2567 = \n+@COND_mips_qemu_mips_TRUE@am__append_2568 = $(nodist_ata_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_2569 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_ata_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tata.marker\n-@COND_mips_qemu_mips_TRUE@am__append_2577 = ata.mod\n-@COND_mips_qemu_mips_TRUE@am__append_2578 = ata.marker\n-@COND_i386_pc_TRUE@am__append_2579 = ahci.module\n-@COND_i386_pc_TRUE@am__append_2580 = ahci.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_2570 = ata.mod\n+@COND_mips_qemu_mips_TRUE@am__append_2571 = ata.marker\n+@COND_i386_pc_TRUE@am__append_2572 = ahci.module\n+@COND_i386_pc_TRUE@am__append_2573 = ahci.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_mips_loongson_FALSE@@COND_x86_64_efi_FALSE@ahci_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2581 = \n-@COND_i386_pc_TRUE@am__append_2582 = $(nodist_ahci_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2583 = $(nodist_ahci_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2574 = \n+@COND_i386_pc_TRUE@am__append_2575 = $(nodist_ahci_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2576 = $(nodist_ahci_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tahci.marker\n-@COND_i386_pc_TRUE@am__append_2584 = ahci.mod\n-@COND_i386_pc_TRUE@am__append_2585 = ahci.marker\n-@COND_i386_efi_TRUE@am__append_2586 = ahci.module\n-@COND_i386_efi_TRUE@am__append_2587 = ahci.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2588 = \n-@COND_i386_efi_TRUE@am__append_2589 = $(nodist_ahci_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2590 = $(nodist_ahci_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2577 = ahci.mod\n+@COND_i386_pc_TRUE@am__append_2578 = ahci.marker\n+@COND_i386_efi_TRUE@am__append_2579 = ahci.module\n+@COND_i386_efi_TRUE@am__append_2580 = ahci.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2581 = \n+@COND_i386_efi_TRUE@am__append_2582 = $(nodist_ahci_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2583 = $(nodist_ahci_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tahci.marker\n-@COND_i386_efi_TRUE@am__append_2591 = ahci.mod\n-@COND_i386_efi_TRUE@am__append_2592 = ahci.marker\n-@COND_i386_qemu_TRUE@am__append_2593 = ahci.module\n-@COND_i386_qemu_TRUE@am__append_2594 = ahci.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2595 = \n-@COND_i386_qemu_TRUE@am__append_2596 = $(nodist_ahci_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2597 = $(nodist_ahci_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_2584 = ahci.mod\n+@COND_i386_efi_TRUE@am__append_2585 = ahci.marker\n+@COND_i386_qemu_TRUE@am__append_2586 = ahci.module\n+@COND_i386_qemu_TRUE@am__append_2587 = ahci.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2588 = \n+@COND_i386_qemu_TRUE@am__append_2589 = $(nodist_ahci_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2590 = $(nodist_ahci_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tahci.marker\n-@COND_i386_qemu_TRUE@am__append_2598 = ahci.mod\n-@COND_i386_qemu_TRUE@am__append_2599 = ahci.marker\n-@COND_i386_coreboot_TRUE@am__append_2600 = ahci.module\n-@COND_i386_coreboot_TRUE@am__append_2601 = ahci.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2602 = \n-@COND_i386_coreboot_TRUE@am__append_2603 = $(nodist_ahci_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2604 =  \\\n+@COND_i386_qemu_TRUE@am__append_2591 = ahci.mod\n+@COND_i386_qemu_TRUE@am__append_2592 = ahci.marker\n+@COND_i386_coreboot_TRUE@am__append_2593 = ahci.module\n+@COND_i386_coreboot_TRUE@am__append_2594 = ahci.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2595 = \n+@COND_i386_coreboot_TRUE@am__append_2596 = $(nodist_ahci_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2597 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_ahci_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tahci.marker\n-@COND_i386_coreboot_TRUE@am__append_2605 = ahci.mod\n-@COND_i386_coreboot_TRUE@am__append_2606 = ahci.marker\n-@COND_i386_multiboot_TRUE@am__append_2607 = ahci.module\n-@COND_i386_multiboot_TRUE@am__append_2608 = ahci.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2609 = \n-@COND_i386_multiboot_TRUE@am__append_2610 = $(nodist_ahci_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2611 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2598 = ahci.mod\n+@COND_i386_coreboot_TRUE@am__append_2599 = ahci.marker\n+@COND_i386_multiboot_TRUE@am__append_2600 = ahci.module\n+@COND_i386_multiboot_TRUE@am__append_2601 = ahci.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2602 = \n+@COND_i386_multiboot_TRUE@am__append_2603 = $(nodist_ahci_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2604 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_ahci_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tahci.marker\n-@COND_i386_multiboot_TRUE@am__append_2612 = ahci.mod\n-@COND_i386_multiboot_TRUE@am__append_2613 = ahci.marker\n-@COND_i386_ieee1275_TRUE@am__append_2614 = ahci.module\n-@COND_i386_ieee1275_TRUE@am__append_2615 = ahci.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2616 = \n-@COND_i386_ieee1275_TRUE@am__append_2617 = $(nodist_ahci_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2618 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2605 = ahci.mod\n+@COND_i386_multiboot_TRUE@am__append_2606 = ahci.marker\n+@COND_i386_ieee1275_TRUE@am__append_2607 = ahci.module\n+@COND_i386_ieee1275_TRUE@am__append_2608 = ahci.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2609 = \n+@COND_i386_ieee1275_TRUE@am__append_2610 = $(nodist_ahci_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2611 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_ahci_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tahci.marker\n-@COND_i386_ieee1275_TRUE@am__append_2619 = ahci.mod\n-@COND_i386_ieee1275_TRUE@am__append_2620 = ahci.marker\n-@COND_x86_64_efi_TRUE@am__append_2621 = ahci.module\n-@COND_x86_64_efi_TRUE@am__append_2622 = ahci.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2623 = \n-@COND_x86_64_efi_TRUE@am__append_2624 = $(nodist_ahci_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2625 = $(nodist_ahci_module_SOURCES) \\\n+@COND_i386_ieee1275_TRUE@am__append_2612 = ahci.mod\n+@COND_i386_ieee1275_TRUE@am__append_2613 = ahci.marker\n+@COND_x86_64_efi_TRUE@am__append_2614 = ahci.module\n+@COND_x86_64_efi_TRUE@am__append_2615 = ahci.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2616 = \n+@COND_x86_64_efi_TRUE@am__append_2617 = $(nodist_ahci_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2618 = $(nodist_ahci_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tahci.marker\n-@COND_x86_64_efi_TRUE@am__append_2626 = ahci.mod\n-@COND_x86_64_efi_TRUE@am__append_2627 = ahci.marker\n-@COND_mips_loongson_TRUE@am__append_2628 = ahci.module\n-@COND_mips_loongson_TRUE@am__append_2629 = ahci.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_2630 = \n-@COND_mips_loongson_TRUE@am__append_2631 = $(nodist_ahci_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_2632 =  \\\n+@COND_x86_64_efi_TRUE@am__append_2619 = ahci.mod\n+@COND_x86_64_efi_TRUE@am__append_2620 = ahci.marker\n+@COND_mips_loongson_TRUE@am__append_2621 = ahci.module\n+@COND_mips_loongson_TRUE@am__append_2622 = ahci.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2623 = \n+@COND_mips_loongson_TRUE@am__append_2624 = $(nodist_ahci_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_2625 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_ahci_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tahci.marker\n-@COND_mips_loongson_TRUE@am__append_2633 = ahci.mod\n-@COND_mips_loongson_TRUE@am__append_2634 = ahci.marker\n-@COND_i386_pc_TRUE@am__append_2635 = pata.module\n-@COND_i386_pc_TRUE@am__append_2636 = pata.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2626 = ahci.mod\n+@COND_mips_loongson_TRUE@am__append_2627 = ahci.marker\n+@COND_i386_pc_TRUE@am__append_2628 = pata.module\n+@COND_i386_pc_TRUE@am__append_2629 = pata.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_x86_64_efi_FALSE@pata_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2637 = \n-@COND_i386_pc_TRUE@am__append_2638 = $(nodist_pata_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2639 = $(nodist_pata_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2630 = \n+@COND_i386_pc_TRUE@am__append_2631 = $(nodist_pata_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2632 = $(nodist_pata_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tpata.marker\n-@COND_i386_pc_TRUE@am__append_2640 = pata.mod\n-@COND_i386_pc_TRUE@am__append_2641 = pata.marker\n-@COND_i386_efi_TRUE@am__append_2642 = pata.module\n-@COND_i386_efi_TRUE@am__append_2643 = pata.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2644 = \n-@COND_i386_efi_TRUE@am__append_2645 = $(nodist_pata_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2646 = $(nodist_pata_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2633 = pata.mod\n+@COND_i386_pc_TRUE@am__append_2634 = pata.marker\n+@COND_i386_efi_TRUE@am__append_2635 = pata.module\n+@COND_i386_efi_TRUE@am__append_2636 = pata.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2637 = \n+@COND_i386_efi_TRUE@am__append_2638 = $(nodist_pata_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2639 = $(nodist_pata_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tpata.marker\n-@COND_i386_efi_TRUE@am__append_2647 = pata.mod\n-@COND_i386_efi_TRUE@am__append_2648 = pata.marker\n-@COND_i386_qemu_TRUE@am__append_2649 = pata.module\n-@COND_i386_qemu_TRUE@am__append_2650 = pata.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2651 = \n-@COND_i386_qemu_TRUE@am__append_2652 = $(nodist_pata_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2653 = $(nodist_pata_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_2640 = pata.mod\n+@COND_i386_efi_TRUE@am__append_2641 = pata.marker\n+@COND_i386_qemu_TRUE@am__append_2642 = pata.module\n+@COND_i386_qemu_TRUE@am__append_2643 = pata.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2644 = \n+@COND_i386_qemu_TRUE@am__append_2645 = $(nodist_pata_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2646 = $(nodist_pata_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tpata.marker\n-@COND_i386_qemu_TRUE@am__append_2654 = pata.mod\n-@COND_i386_qemu_TRUE@am__append_2655 = pata.marker\n-@COND_i386_coreboot_TRUE@am__append_2656 = pata.module\n-@COND_i386_coreboot_TRUE@am__append_2657 = pata.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2658 = \n-@COND_i386_coreboot_TRUE@am__append_2659 = $(nodist_pata_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2660 =  \\\n+@COND_i386_qemu_TRUE@am__append_2647 = pata.mod\n+@COND_i386_qemu_TRUE@am__append_2648 = pata.marker\n+@COND_i386_coreboot_TRUE@am__append_2649 = pata.module\n+@COND_i386_coreboot_TRUE@am__append_2650 = pata.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2651 = \n+@COND_i386_coreboot_TRUE@am__append_2652 = $(nodist_pata_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2653 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_pata_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tpata.marker\n-@COND_i386_coreboot_TRUE@am__append_2661 = pata.mod\n-@COND_i386_coreboot_TRUE@am__append_2662 = pata.marker\n-@COND_i386_multiboot_TRUE@am__append_2663 = pata.module\n-@COND_i386_multiboot_TRUE@am__append_2664 = pata.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2665 = \n-@COND_i386_multiboot_TRUE@am__append_2666 = $(nodist_pata_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2667 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2654 = pata.mod\n+@COND_i386_coreboot_TRUE@am__append_2655 = pata.marker\n+@COND_i386_multiboot_TRUE@am__append_2656 = pata.module\n+@COND_i386_multiboot_TRUE@am__append_2657 = pata.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2658 = \n+@COND_i386_multiboot_TRUE@am__append_2659 = $(nodist_pata_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2660 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_pata_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tpata.marker\n-@COND_i386_multiboot_TRUE@am__append_2668 = pata.mod\n-@COND_i386_multiboot_TRUE@am__append_2669 = pata.marker\n-@COND_i386_ieee1275_TRUE@am__append_2670 = pata.module\n-@COND_i386_ieee1275_TRUE@am__append_2671 = pata.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2672 = \n-@COND_i386_ieee1275_TRUE@am__append_2673 = $(nodist_pata_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2674 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2661 = pata.mod\n+@COND_i386_multiboot_TRUE@am__append_2662 = pata.marker\n+@COND_i386_ieee1275_TRUE@am__append_2663 = pata.module\n+@COND_i386_ieee1275_TRUE@am__append_2664 = pata.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2665 = \n+@COND_i386_ieee1275_TRUE@am__append_2666 = $(nodist_pata_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2667 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_pata_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tpata.marker\n-@COND_i386_ieee1275_TRUE@am__append_2675 = pata.mod\n-@COND_i386_ieee1275_TRUE@am__append_2676 = pata.marker\n-@COND_x86_64_efi_TRUE@am__append_2677 = pata.module\n-@COND_x86_64_efi_TRUE@am__append_2678 = pata.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2679 = \n-@COND_x86_64_efi_TRUE@am__append_2680 = $(nodist_pata_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2681 = $(nodist_pata_module_SOURCES) \\\n+@COND_i386_ieee1275_TRUE@am__append_2668 = pata.mod\n+@COND_i386_ieee1275_TRUE@am__append_2669 = pata.marker\n+@COND_x86_64_efi_TRUE@am__append_2670 = pata.module\n+@COND_x86_64_efi_TRUE@am__append_2671 = pata.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2672 = \n+@COND_x86_64_efi_TRUE@am__append_2673 = $(nodist_pata_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2674 = $(nodist_pata_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tpata.marker\n-@COND_x86_64_efi_TRUE@am__append_2682 = pata.mod\n-@COND_x86_64_efi_TRUE@am__append_2683 = pata.marker\n-@COND_mips_loongson_TRUE@am__append_2684 = pata.module\n-@COND_mips_loongson_TRUE@am__append_2685 = pata.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_2686 = \n-@COND_mips_loongson_TRUE@am__append_2687 = $(nodist_pata_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_2688 =  \\\n+@COND_x86_64_efi_TRUE@am__append_2675 = pata.mod\n+@COND_x86_64_efi_TRUE@am__append_2676 = pata.marker\n+@COND_mips_loongson_TRUE@am__append_2677 = pata.module\n+@COND_mips_loongson_TRUE@am__append_2678 = pata.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2679 = \n+@COND_mips_loongson_TRUE@am__append_2680 = $(nodist_pata_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_2681 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_pata_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tpata.marker\n-@COND_mips_loongson_TRUE@am__append_2689 = pata.mod\n-@COND_mips_loongson_TRUE@am__append_2690 = pata.marker\n-@COND_mips_qemu_mips_TRUE@am__append_2691 = pata.module\n-@COND_mips_qemu_mips_TRUE@am__append_2692 = pata.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_2693 = \n-@COND_mips_qemu_mips_TRUE@am__append_2694 = $(nodist_pata_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_2695 =  \\\n+@COND_mips_loongson_TRUE@am__append_2682 = pata.mod\n+@COND_mips_loongson_TRUE@am__append_2683 = pata.marker\n+@COND_mips_qemu_mips_TRUE@am__append_2684 = pata.module\n+@COND_mips_qemu_mips_TRUE@am__append_2685 = pata.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_2686 = \n+@COND_mips_qemu_mips_TRUE@am__append_2687 = $(nodist_pata_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_2688 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_pata_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tpata.marker\n-@COND_mips_qemu_mips_TRUE@am__append_2696 = pata.mod\n-@COND_mips_qemu_mips_TRUE@am__append_2697 = pata.marker\n-@COND_i386_pc_TRUE@am__append_2698 = biosdisk.module usbms.module\n-@COND_i386_pc_TRUE@am__append_2699 = biosdisk.module$(EXEEXT) \\\n+@COND_mips_qemu_mips_TRUE@am__append_2689 = pata.mod\n+@COND_mips_qemu_mips_TRUE@am__append_2690 = pata.marker\n+@COND_i386_pc_TRUE@am__append_2691 = biosdisk.module usbms.module\n+@COND_i386_pc_TRUE@am__append_2692 = biosdisk.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tusbms.module$(EXEEXT)\n @COND_i386_pc_FALSE@biosdisk_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2700 =\n-@COND_i386_pc_TRUE@am__append_2701 =  \\\n+@COND_i386_pc_TRUE@am__append_2693 =\n+@COND_i386_pc_TRUE@am__append_2694 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_biosdisk_module_SOURCES) \\\n @COND_i386_pc_TRUE@\t$(nodist_usbms_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2702 =  \\\n+@COND_i386_pc_TRUE@am__append_2695 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_biosdisk_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tbiosdisk.marker \\\n @COND_i386_pc_TRUE@\t$(nodist_usbms_module_SOURCES) usbms.marker\n-@COND_i386_pc_TRUE@am__append_2703 = biosdisk.mod usbms.mod\n-@COND_i386_pc_TRUE@am__append_2704 = biosdisk.marker usbms.marker\n+@COND_i386_pc_TRUE@am__append_2696 = biosdisk.mod usbms.mod\n+@COND_i386_pc_TRUE@am__append_2697 = biosdisk.marker usbms.marker\n @COND_arm_coreboot_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_mips_loongson_FALSE@@COND_x86_64_efi_FALSE@usbms_module_DEPENDENCIES =\n-@COND_i386_efi_TRUE@am__append_2705 = usbms.module\n-@COND_i386_efi_TRUE@am__append_2706 = usbms.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2707 = \n-@COND_i386_efi_TRUE@am__append_2708 = $(nodist_usbms_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2709 = $(nodist_usbms_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_2698 = usbms.module\n+@COND_i386_efi_TRUE@am__append_2699 = usbms.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2700 = \n+@COND_i386_efi_TRUE@am__append_2701 = $(nodist_usbms_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2702 = $(nodist_usbms_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tusbms.marker\n-@COND_i386_efi_TRUE@am__append_2710 = usbms.mod\n-@COND_i386_efi_TRUE@am__append_2711 = usbms.marker\n-@COND_i386_qemu_TRUE@am__append_2712 = usbms.module\n-@COND_i386_qemu_TRUE@am__append_2713 = usbms.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2714 = \n-@COND_i386_qemu_TRUE@am__append_2715 = $(nodist_usbms_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2716 = $(nodist_usbms_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_2703 = usbms.mod\n+@COND_i386_efi_TRUE@am__append_2704 = usbms.marker\n+@COND_i386_qemu_TRUE@am__append_2705 = usbms.module\n+@COND_i386_qemu_TRUE@am__append_2706 = usbms.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2707 = \n+@COND_i386_qemu_TRUE@am__append_2708 = $(nodist_usbms_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2709 = $(nodist_usbms_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tusbms.marker\n-@COND_i386_qemu_TRUE@am__append_2717 = usbms.mod\n-@COND_i386_qemu_TRUE@am__append_2718 = usbms.marker\n-@COND_i386_coreboot_TRUE@am__append_2719 = usbms.module\n-@COND_i386_coreboot_TRUE@am__append_2720 = usbms.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2721 = \n-@COND_i386_coreboot_TRUE@am__append_2722 = $(nodist_usbms_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2723 =  \\\n+@COND_i386_qemu_TRUE@am__append_2710 = usbms.mod\n+@COND_i386_qemu_TRUE@am__append_2711 = usbms.marker\n+@COND_i386_coreboot_TRUE@am__append_2712 = usbms.module\n+@COND_i386_coreboot_TRUE@am__append_2713 = usbms.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2714 = \n+@COND_i386_coreboot_TRUE@am__append_2715 = $(nodist_usbms_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2716 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_usbms_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tusbms.marker\n-@COND_i386_coreboot_TRUE@am__append_2724 = usbms.mod\n-@COND_i386_coreboot_TRUE@am__append_2725 = usbms.marker\n-@COND_i386_multiboot_TRUE@am__append_2726 = usbms.module\n-@COND_i386_multiboot_TRUE@am__append_2727 = usbms.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2728 = \n-@COND_i386_multiboot_TRUE@am__append_2729 = $(nodist_usbms_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2730 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2717 = usbms.mod\n+@COND_i386_coreboot_TRUE@am__append_2718 = usbms.marker\n+@COND_i386_multiboot_TRUE@am__append_2719 = usbms.module\n+@COND_i386_multiboot_TRUE@am__append_2720 = usbms.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2721 = \n+@COND_i386_multiboot_TRUE@am__append_2722 = $(nodist_usbms_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2723 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_usbms_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tusbms.marker\n-@COND_i386_multiboot_TRUE@am__append_2731 = usbms.mod\n-@COND_i386_multiboot_TRUE@am__append_2732 = usbms.marker\n-@COND_i386_ieee1275_TRUE@am__append_2733 = usbms.module\n-@COND_i386_ieee1275_TRUE@am__append_2734 = usbms.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2735 = \n-@COND_i386_ieee1275_TRUE@am__append_2736 = $(nodist_usbms_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2737 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2724 = usbms.mod\n+@COND_i386_multiboot_TRUE@am__append_2725 = usbms.marker\n+@COND_i386_ieee1275_TRUE@am__append_2726 = usbms.module\n+@COND_i386_ieee1275_TRUE@am__append_2727 = usbms.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2728 = \n+@COND_i386_ieee1275_TRUE@am__append_2729 = $(nodist_usbms_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2730 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_usbms_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tusbms.marker\n-@COND_i386_ieee1275_TRUE@am__append_2738 = usbms.mod\n-@COND_i386_ieee1275_TRUE@am__append_2739 = usbms.marker\n-@COND_x86_64_efi_TRUE@am__append_2740 = usbms.module\n-@COND_x86_64_efi_TRUE@am__append_2741 = usbms.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2742 = \n-@COND_x86_64_efi_TRUE@am__append_2743 = $(nodist_usbms_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2744 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_2731 = usbms.mod\n+@COND_i386_ieee1275_TRUE@am__append_2732 = usbms.marker\n+@COND_x86_64_efi_TRUE@am__append_2733 = usbms.module\n+@COND_x86_64_efi_TRUE@am__append_2734 = usbms.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2735 = \n+@COND_x86_64_efi_TRUE@am__append_2736 = $(nodist_usbms_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2737 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_usbms_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tusbms.marker\n-@COND_x86_64_efi_TRUE@am__append_2745 = usbms.mod\n-@COND_x86_64_efi_TRUE@am__append_2746 = usbms.marker\n-@COND_mips_loongson_TRUE@am__append_2747 = usbms.module\n-@COND_mips_loongson_TRUE@am__append_2748 = usbms.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_2749 = \n-@COND_mips_loongson_TRUE@am__append_2750 = $(nodist_usbms_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_2751 =  \\\n+@COND_x86_64_efi_TRUE@am__append_2738 = usbms.mod\n+@COND_x86_64_efi_TRUE@am__append_2739 = usbms.marker\n+@COND_mips_loongson_TRUE@am__append_2740 = usbms.module\n+@COND_mips_loongson_TRUE@am__append_2741 = usbms.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_2742 = \n+@COND_mips_loongson_TRUE@am__append_2743 = $(nodist_usbms_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_2744 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_usbms_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tusbms.marker\n-@COND_mips_loongson_TRUE@am__append_2752 = usbms.mod\n-@COND_mips_loongson_TRUE@am__append_2753 = usbms.marker\n-@COND_arm_coreboot_TRUE@am__append_2754 = usbms.module\n-@COND_arm_coreboot_TRUE@am__append_2755 = usbms.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__append_2756 = \n-@COND_arm_coreboot_TRUE@am__append_2757 = $(nodist_usbms_module_SOURCES)\n-@COND_arm_coreboot_TRUE@am__append_2758 =  \\\n+@COND_mips_loongson_TRUE@am__append_2745 = usbms.mod\n+@COND_mips_loongson_TRUE@am__append_2746 = usbms.marker\n+@COND_arm_coreboot_TRUE@am__append_2747 = usbms.module\n+@COND_arm_coreboot_TRUE@am__append_2748 = usbms.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__append_2749 = \n+@COND_arm_coreboot_TRUE@am__append_2750 = $(nodist_usbms_module_SOURCES)\n+@COND_arm_coreboot_TRUE@am__append_2751 =  \\\n @COND_arm_coreboot_TRUE@\t$(nodist_usbms_module_SOURCES) \\\n @COND_arm_coreboot_TRUE@\tusbms.marker\n-@COND_arm_coreboot_TRUE@am__append_2759 = usbms.mod\n-@COND_arm_coreboot_TRUE@am__append_2760 = usbms.marker\n-@COND_i386_ieee1275_TRUE@am__append_2761 = nand.module\n-@COND_i386_ieee1275_TRUE@am__append_2762 = nand.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__append_2752 = usbms.mod\n+@COND_arm_coreboot_TRUE@am__append_2753 = usbms.marker\n+@COND_i386_ieee1275_TRUE@am__append_2754 = nand.module\n+@COND_i386_ieee1275_TRUE@am__append_2755 = nand.module$(EXEEXT)\n @COND_i386_ieee1275_FALSE@nand_module_DEPENDENCIES =\n-@COND_i386_ieee1275_TRUE@am__append_2763 = \n-@COND_i386_ieee1275_TRUE@am__append_2764 = $(nodist_nand_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2765 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_2756 = \n+@COND_i386_ieee1275_TRUE@am__append_2757 = $(nodist_nand_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2758 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_nand_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tnand.marker\n-@COND_i386_ieee1275_TRUE@am__append_2766 = nand.mod\n-@COND_i386_ieee1275_TRUE@am__append_2767 = nand.marker\n-@COND_i386_pc_TRUE@am__append_2768 = efiemu.module\n-@COND_i386_pc_TRUE@am__append_2769 = efiemu.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2759 = nand.mod\n+@COND_i386_ieee1275_TRUE@am__append_2760 = nand.marker\n+@COND_i386_pc_TRUE@am__append_2761 = efiemu.module\n+@COND_i386_pc_TRUE@am__append_2762 = efiemu.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@efiemu_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2770 = efiemu/prepare.c efiemu/loadcore.c efiemu/runtime/efiemu.S efiemu/runtime/efiemu.c \n-@COND_i386_pc_TRUE@am__append_2771 = $(nodist_efiemu_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2772 = $(nodist_efiemu_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2763 = efiemu/prepare.c efiemu/loadcore.c efiemu/runtime/efiemu.S efiemu/runtime/efiemu.c \n+@COND_i386_pc_TRUE@am__append_2764 = $(nodist_efiemu_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2765 = $(nodist_efiemu_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tefiemu.marker\n-@COND_i386_pc_TRUE@am__append_2773 = efiemu.mod\n-@COND_i386_pc_TRUE@am__append_2774 = efiemu.marker\n-@COND_i386_qemu_TRUE@am__append_2775 = efiemu.module\n-@COND_i386_qemu_TRUE@am__append_2776 = efiemu.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2777 = efiemu/prepare.c efiemu/loadcore.c efiemu/runtime/efiemu.S efiemu/runtime/efiemu.c \n-@COND_i386_qemu_TRUE@am__append_2778 = $(nodist_efiemu_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2779 =  \\\n+@COND_i386_pc_TRUE@am__append_2766 = efiemu.mod\n+@COND_i386_pc_TRUE@am__append_2767 = efiemu.marker\n+@COND_i386_qemu_TRUE@am__append_2768 = efiemu.module\n+@COND_i386_qemu_TRUE@am__append_2769 = efiemu.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2770 = efiemu/prepare.c efiemu/loadcore.c efiemu/runtime/efiemu.S efiemu/runtime/efiemu.c \n+@COND_i386_qemu_TRUE@am__append_2771 = $(nodist_efiemu_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2772 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_efiemu_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tefiemu.marker\n-@COND_i386_qemu_TRUE@am__append_2780 = efiemu.mod\n-@COND_i386_qemu_TRUE@am__append_2781 = efiemu.marker\n-@COND_i386_coreboot_TRUE@am__append_2782 = efiemu.module\n-@COND_i386_coreboot_TRUE@am__append_2783 = efiemu.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_2784 = efiemu/prepare.c efiemu/loadcore.c efiemu/runtime/efiemu.S efiemu/runtime/efiemu.c \n-@COND_i386_coreboot_TRUE@am__append_2785 = $(nodist_efiemu_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_2786 =  \\\n+@COND_i386_qemu_TRUE@am__append_2773 = efiemu.mod\n+@COND_i386_qemu_TRUE@am__append_2774 = efiemu.marker\n+@COND_i386_coreboot_TRUE@am__append_2775 = efiemu.module\n+@COND_i386_coreboot_TRUE@am__append_2776 = efiemu.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_2777 = efiemu/prepare.c efiemu/loadcore.c efiemu/runtime/efiemu.S efiemu/runtime/efiemu.c \n+@COND_i386_coreboot_TRUE@am__append_2778 = $(nodist_efiemu_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_2779 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_efiemu_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tefiemu.marker\n-@COND_i386_coreboot_TRUE@am__append_2787 = efiemu.mod\n-@COND_i386_coreboot_TRUE@am__append_2788 = efiemu.marker\n-@COND_i386_multiboot_TRUE@am__append_2789 = efiemu.module\n-@COND_i386_multiboot_TRUE@am__append_2790 = efiemu.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2791 = efiemu/prepare.c efiemu/loadcore.c efiemu/runtime/efiemu.S efiemu/runtime/efiemu.c \n-@COND_i386_multiboot_TRUE@am__append_2792 = $(nodist_efiemu_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2793 =  \\\n+@COND_i386_coreboot_TRUE@am__append_2780 = efiemu.mod\n+@COND_i386_coreboot_TRUE@am__append_2781 = efiemu.marker\n+@COND_i386_multiboot_TRUE@am__append_2782 = efiemu.module\n+@COND_i386_multiboot_TRUE@am__append_2783 = efiemu.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2784 = efiemu/prepare.c efiemu/loadcore.c efiemu/runtime/efiemu.S efiemu/runtime/efiemu.c \n+@COND_i386_multiboot_TRUE@am__append_2785 = $(nodist_efiemu_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2786 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_efiemu_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tefiemu.marker\n-@COND_i386_multiboot_TRUE@am__append_2794 = efiemu.mod\n-@COND_i386_multiboot_TRUE@am__append_2795 = efiemu.marker\n-@COND_i386_ieee1275_TRUE@am__append_2796 = efiemu.module\n-@COND_i386_ieee1275_TRUE@am__append_2797 = efiemu.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2798 = efiemu/prepare.c efiemu/loadcore.c efiemu/runtime/efiemu.S efiemu/runtime/efiemu.c \n-@COND_i386_ieee1275_TRUE@am__append_2799 = $(nodist_efiemu_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2800 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2787 = efiemu.mod\n+@COND_i386_multiboot_TRUE@am__append_2788 = efiemu.marker\n+@COND_i386_ieee1275_TRUE@am__append_2789 = efiemu.module\n+@COND_i386_ieee1275_TRUE@am__append_2790 = efiemu.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2791 = efiemu/prepare.c efiemu/loadcore.c efiemu/runtime/efiemu.S efiemu/runtime/efiemu.c \n+@COND_i386_ieee1275_TRUE@am__append_2792 = $(nodist_efiemu_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2793 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_efiemu_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tefiemu.marker\n-@COND_i386_ieee1275_TRUE@am__append_2801 = efiemu.mod\n-@COND_i386_ieee1275_TRUE@am__append_2802 = efiemu.marker\n-@COND_emu_TRUE@am__append_2803 = font.module\n-@COND_emu_TRUE@am__append_2804 = font.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2794 = efiemu.mod\n+@COND_i386_ieee1275_TRUE@am__append_2795 = efiemu.marker\n+@COND_emu_TRUE@am__append_2796 = font.module\n+@COND_emu_TRUE@am__append_2797 = font.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@font_module_DEPENDENCIES =\n-@COND_emu_TRUE@am__append_2805 = \n-@COND_emu_TRUE@am__append_2806 = $(nodist_font_module_SOURCES)\n-@COND_emu_TRUE@am__append_2807 = $(nodist_font_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_2798 = \n+@COND_emu_TRUE@am__append_2799 = $(nodist_font_module_SOURCES)\n+@COND_emu_TRUE@am__append_2800 = $(nodist_font_module_SOURCES) \\\n @COND_emu_TRUE@\tfont.marker\n-@COND_emu_TRUE@am__append_2808 = font.mod\n-@COND_emu_TRUE@am__append_2809 = font.marker\n-@COND_i386_pc_TRUE@am__append_2810 = font.module\n-@COND_i386_pc_TRUE@am__append_2811 = font.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__append_2812 = \n-@COND_i386_pc_TRUE@am__append_2813 = $(nodist_font_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2814 = $(nodist_font_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_2801 = font.mod\n+@COND_emu_TRUE@am__append_2802 = font.marker\n+@COND_i386_pc_TRUE@am__append_2803 = font.module\n+@COND_i386_pc_TRUE@am__append_2804 = font.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__append_2805 = \n+@COND_i386_pc_TRUE@am__append_2806 = $(nodist_font_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2807 = $(nodist_font_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tfont.marker\n-@COND_i386_pc_TRUE@am__append_2815 = font.mod\n-@COND_i386_pc_TRUE@am__append_2816 = font.marker\n-@COND_i386_efi_TRUE@am__append_2817 = font.module\n-@COND_i386_efi_TRUE@am__append_2818 = font.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2819 = \n-@COND_i386_efi_TRUE@am__append_2820 = $(nodist_font_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2821 = $(nodist_font_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2808 = font.mod\n+@COND_i386_pc_TRUE@am__append_2809 = font.marker\n+@COND_i386_efi_TRUE@am__append_2810 = font.module\n+@COND_i386_efi_TRUE@am__append_2811 = font.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2812 = \n+@COND_i386_efi_TRUE@am__append_2813 = $(nodist_font_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2814 = $(nodist_font_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tfont.marker\n-@COND_i386_efi_TRUE@am__append_2822 = font.mod\n-@COND_i386_efi_TRUE@am__append_2823 = font.marker\n-@COND_i386_qemu_TRUE@am__append_2824 = font.module\n-@COND_i386_qemu_TRUE@am__append_2825 = font.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2826 = \n-@COND_i386_qemu_TRUE@am__append_2827 = $(nodist_font_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2828 = $(nodist_font_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_2815 = font.mod\n+@COND_i386_efi_TRUE@am__append_2816 = font.marker\n+@COND_i386_qemu_TRUE@am__append_2817 = font.module\n+@COND_i386_qemu_TRUE@am__append_2818 = font.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2819 = \n+@COND_i386_qemu_TRUE@am__append_2820 = $(nodist_font_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2821 = $(nodist_font_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tfont.marker\n-@COND_i386_qemu_TRUE@am__append_2829 = font.mod\n-@COND_i386_qemu_TRUE@am__append_2830 = font.marker\n-@COND_i386_multiboot_TRUE@am__append_2831 = font.module\n-@COND_i386_multiboot_TRUE@am__append_2832 = font.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2833 = \n-@COND_i386_multiboot_TRUE@am__append_2834 = $(nodist_font_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2835 =  \\\n+@COND_i386_qemu_TRUE@am__append_2822 = font.mod\n+@COND_i386_qemu_TRUE@am__append_2823 = font.marker\n+@COND_i386_multiboot_TRUE@am__append_2824 = font.module\n+@COND_i386_multiboot_TRUE@am__append_2825 = font.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2826 = \n+@COND_i386_multiboot_TRUE@am__append_2827 = $(nodist_font_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2828 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_font_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tfont.marker\n-@COND_i386_multiboot_TRUE@am__append_2836 = font.mod\n-@COND_i386_multiboot_TRUE@am__append_2837 = font.marker\n-@COND_i386_ieee1275_TRUE@am__append_2838 = font.module\n-@COND_i386_ieee1275_TRUE@am__append_2839 = font.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2840 = \n-@COND_i386_ieee1275_TRUE@am__append_2841 = $(nodist_font_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2842 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2829 = font.mod\n+@COND_i386_multiboot_TRUE@am__append_2830 = font.marker\n+@COND_i386_ieee1275_TRUE@am__append_2831 = font.module\n+@COND_i386_ieee1275_TRUE@am__append_2832 = font.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2833 = \n+@COND_i386_ieee1275_TRUE@am__append_2834 = $(nodist_font_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2835 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_font_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tfont.marker\n-@COND_i386_ieee1275_TRUE@am__append_2843 = font.mod\n-@COND_i386_ieee1275_TRUE@am__append_2844 = font.marker\n-@COND_x86_64_efi_TRUE@am__append_2845 = font.module\n-@COND_x86_64_efi_TRUE@am__append_2846 = font.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2847 = \n-@COND_x86_64_efi_TRUE@am__append_2848 = $(nodist_font_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2849 = $(nodist_font_module_SOURCES) \\\n+@COND_i386_ieee1275_TRUE@am__append_2836 = font.mod\n+@COND_i386_ieee1275_TRUE@am__append_2837 = font.marker\n+@COND_x86_64_efi_TRUE@am__append_2838 = font.module\n+@COND_x86_64_efi_TRUE@am__append_2839 = font.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2840 = \n+@COND_x86_64_efi_TRUE@am__append_2841 = $(nodist_font_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2842 = $(nodist_font_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tfont.marker\n-@COND_x86_64_efi_TRUE@am__append_2850 = font.mod\n-@COND_x86_64_efi_TRUE@am__append_2851 = font.marker\n-@COND_i386_xen_TRUE@am__append_2852 = font.module\n-@COND_i386_xen_TRUE@am__append_2853 = font.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__append_2854 = \n-@COND_i386_xen_TRUE@am__append_2855 = $(nodist_font_module_SOURCES)\n-@COND_i386_xen_TRUE@am__append_2856 = $(nodist_font_module_SOURCES) \\\n+@COND_x86_64_efi_TRUE@am__append_2843 = font.mod\n+@COND_x86_64_efi_TRUE@am__append_2844 = font.marker\n+@COND_i386_xen_TRUE@am__append_2845 = font.module\n+@COND_i386_xen_TRUE@am__append_2846 = font.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__append_2847 = \n+@COND_i386_xen_TRUE@am__append_2848 = $(nodist_font_module_SOURCES)\n+@COND_i386_xen_TRUE@am__append_2849 = $(nodist_font_module_SOURCES) \\\n @COND_i386_xen_TRUE@\tfont.marker\n-@COND_i386_xen_TRUE@am__append_2857 = font.mod\n-@COND_i386_xen_TRUE@am__append_2858 = font.marker\n-@COND_x86_64_xen_TRUE@am__append_2859 = font.module\n-@COND_x86_64_xen_TRUE@am__append_2860 = font.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__append_2861 = \n-@COND_x86_64_xen_TRUE@am__append_2862 = $(nodist_font_module_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_2863 = $(nodist_font_module_SOURCES) \\\n+@COND_i386_xen_TRUE@am__append_2850 = font.mod\n+@COND_i386_xen_TRUE@am__append_2851 = font.marker\n+@COND_x86_64_xen_TRUE@am__append_2852 = font.module\n+@COND_x86_64_xen_TRUE@am__append_2853 = font.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__append_2854 = \n+@COND_x86_64_xen_TRUE@am__append_2855 = $(nodist_font_module_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_2856 = $(nodist_font_module_SOURCES) \\\n @COND_x86_64_xen_TRUE@\tfont.marker\n-@COND_x86_64_xen_TRUE@am__append_2864 = font.mod\n-@COND_x86_64_xen_TRUE@am__append_2865 = font.marker\n-@COND_i386_xen_pvh_TRUE@am__append_2866 = font.module\n-@COND_i386_xen_pvh_TRUE@am__append_2867 = font.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_2868 = \n-@COND_i386_xen_pvh_TRUE@am__append_2869 = $(nodist_font_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_2870 =  \\\n+@COND_x86_64_xen_TRUE@am__append_2857 = font.mod\n+@COND_x86_64_xen_TRUE@am__append_2858 = font.marker\n+@COND_i386_xen_pvh_TRUE@am__append_2859 = font.module\n+@COND_i386_xen_pvh_TRUE@am__append_2860 = font.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_2861 = \n+@COND_i386_xen_pvh_TRUE@am__append_2862 = $(nodist_font_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_2863 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_font_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tfont.marker\n-@COND_i386_xen_pvh_TRUE@am__append_2871 = font.mod\n-@COND_i386_xen_pvh_TRUE@am__append_2872 = font.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_2873 = font.module\n-@COND_sparc64_ieee1275_TRUE@am__append_2874 = font.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__append_2875 = \n-@COND_sparc64_ieee1275_TRUE@am__append_2876 = $(nodist_font_module_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_2877 =  \\\n+@COND_i386_xen_pvh_TRUE@am__append_2864 = font.mod\n+@COND_i386_xen_pvh_TRUE@am__append_2865 = font.marker\n+@COND_sparc64_ieee1275_TRUE@am__append_2866 = font.module\n+@COND_sparc64_ieee1275_TRUE@am__append_2867 = font.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__append_2868 = \n+@COND_sparc64_ieee1275_TRUE@am__append_2869 = $(nodist_font_module_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_2870 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_font_module_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tfont.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_2878 = font.mod\n-@COND_sparc64_ieee1275_TRUE@am__append_2879 = font.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_2880 = font.module\n-@COND_powerpc_ieee1275_TRUE@am__append_2881 = font.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__append_2882 = \n-@COND_powerpc_ieee1275_TRUE@am__append_2883 = $(nodist_font_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_2884 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__append_2871 = font.mod\n+@COND_sparc64_ieee1275_TRUE@am__append_2872 = font.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_2873 = font.module\n+@COND_powerpc_ieee1275_TRUE@am__append_2874 = font.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_2875 = \n+@COND_powerpc_ieee1275_TRUE@am__append_2876 = $(nodist_font_module_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_2877 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_font_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tfont.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_2885 = font.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_2886 = font.marker\n-@COND_mips_arc_TRUE@am__append_2887 = font.module\n-@COND_mips_arc_TRUE@am__append_2888 = font.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__append_2889 = \n-@COND_mips_arc_TRUE@am__append_2890 = $(nodist_font_module_SOURCES)\n-@COND_mips_arc_TRUE@am__append_2891 = $(nodist_font_module_SOURCES) \\\n+@COND_powerpc_ieee1275_TRUE@am__append_2878 = font.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_2879 = font.marker\n+@COND_mips_arc_TRUE@am__append_2880 = font.module\n+@COND_mips_arc_TRUE@am__append_2881 = font.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__append_2882 = \n+@COND_mips_arc_TRUE@am__append_2883 = $(nodist_font_module_SOURCES)\n+@COND_mips_arc_TRUE@am__append_2884 = $(nodist_font_module_SOURCES) \\\n @COND_mips_arc_TRUE@\tfont.marker\n-@COND_mips_arc_TRUE@am__append_2892 = font.mod\n-@COND_mips_arc_TRUE@am__append_2893 = font.marker\n-@COND_ia64_efi_TRUE@am__append_2894 = font.module\n-@COND_ia64_efi_TRUE@am__append_2895 = font.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_2896 = \n-@COND_ia64_efi_TRUE@am__append_2897 = $(nodist_font_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_2898 = $(nodist_font_module_SOURCES) \\\n+@COND_mips_arc_TRUE@am__append_2885 = font.mod\n+@COND_mips_arc_TRUE@am__append_2886 = font.marker\n+@COND_ia64_efi_TRUE@am__append_2887 = font.module\n+@COND_ia64_efi_TRUE@am__append_2888 = font.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_2889 = \n+@COND_ia64_efi_TRUE@am__append_2890 = $(nodist_font_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_2891 = $(nodist_font_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tfont.marker\n-@COND_ia64_efi_TRUE@am__append_2899 = font.mod\n-@COND_ia64_efi_TRUE@am__append_2900 = font.marker\n-@COND_mips_qemu_mips_TRUE@am__append_2901 = font.module\n-@COND_mips_qemu_mips_TRUE@am__append_2902 = font.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_2903 = \n-@COND_mips_qemu_mips_TRUE@am__append_2904 = $(nodist_font_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_2905 =  \\\n+@COND_ia64_efi_TRUE@am__append_2892 = font.mod\n+@COND_ia64_efi_TRUE@am__append_2893 = font.marker\n+@COND_mips_qemu_mips_TRUE@am__append_2894 = font.module\n+@COND_mips_qemu_mips_TRUE@am__append_2895 = font.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_2896 = \n+@COND_mips_qemu_mips_TRUE@am__append_2897 = $(nodist_font_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_2898 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_font_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tfont.marker\n-@COND_mips_qemu_mips_TRUE@am__append_2906 = font.mod\n-@COND_mips_qemu_mips_TRUE@am__append_2907 = font.marker\n-@COND_arm_uboot_TRUE@am__append_2908 = font.module\n-@COND_arm_uboot_TRUE@am__append_2909 = font.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__append_2910 = \n-@COND_arm_uboot_TRUE@am__append_2911 = $(nodist_font_module_SOURCES)\n-@COND_arm_uboot_TRUE@am__append_2912 = $(nodist_font_module_SOURCES) \\\n+@COND_mips_qemu_mips_TRUE@am__append_2899 = font.mod\n+@COND_mips_qemu_mips_TRUE@am__append_2900 = font.marker\n+@COND_arm_uboot_TRUE@am__append_2901 = font.module\n+@COND_arm_uboot_TRUE@am__append_2902 = font.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__append_2903 = \n+@COND_arm_uboot_TRUE@am__append_2904 = $(nodist_font_module_SOURCES)\n+@COND_arm_uboot_TRUE@am__append_2905 = $(nodist_font_module_SOURCES) \\\n @COND_arm_uboot_TRUE@\tfont.marker\n-@COND_arm_uboot_TRUE@am__append_2913 = font.mod\n-@COND_arm_uboot_TRUE@am__append_2914 = font.marker\n-@COND_arm_efi_TRUE@am__append_2915 = font.module\n-@COND_arm_efi_TRUE@am__append_2916 = font.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_2917 = \n-@COND_arm_efi_TRUE@am__append_2918 = $(nodist_font_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_2919 = $(nodist_font_module_SOURCES) \\\n+@COND_arm_uboot_TRUE@am__append_2906 = font.mod\n+@COND_arm_uboot_TRUE@am__append_2907 = font.marker\n+@COND_arm_efi_TRUE@am__append_2908 = font.module\n+@COND_arm_efi_TRUE@am__append_2909 = font.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_2910 = \n+@COND_arm_efi_TRUE@am__append_2911 = $(nodist_font_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_2912 = $(nodist_font_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tfont.marker\n-@COND_arm_efi_TRUE@am__append_2920 = font.mod\n-@COND_arm_efi_TRUE@am__append_2921 = font.marker\n-@COND_arm64_efi_TRUE@am__append_2922 = font.module\n-@COND_arm64_efi_TRUE@am__append_2923 = font.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_2924 = \n-@COND_arm64_efi_TRUE@am__append_2925 = $(nodist_font_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_2926 = $(nodist_font_module_SOURCES) \\\n+@COND_arm_efi_TRUE@am__append_2913 = font.mod\n+@COND_arm_efi_TRUE@am__append_2914 = font.marker\n+@COND_arm64_efi_TRUE@am__append_2915 = font.module\n+@COND_arm64_efi_TRUE@am__append_2916 = font.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_2917 = \n+@COND_arm64_efi_TRUE@am__append_2918 = $(nodist_font_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_2919 = $(nodist_font_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tfont.marker\n-@COND_arm64_efi_TRUE@am__append_2927 = font.mod\n-@COND_arm64_efi_TRUE@am__append_2928 = font.marker\n-@COND_riscv32_efi_TRUE@am__append_2929 = font.module\n-@COND_riscv32_efi_TRUE@am__append_2930 = font.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_2931 = \n-@COND_riscv32_efi_TRUE@am__append_2932 = $(nodist_font_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_2933 =  \\\n+@COND_arm64_efi_TRUE@am__append_2920 = font.mod\n+@COND_arm64_efi_TRUE@am__append_2921 = font.marker\n+@COND_riscv32_efi_TRUE@am__append_2922 = font.module\n+@COND_riscv32_efi_TRUE@am__append_2923 = font.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_2924 = \n+@COND_riscv32_efi_TRUE@am__append_2925 = $(nodist_font_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_2926 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_font_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tfont.marker\n-@COND_riscv32_efi_TRUE@am__append_2934 = font.mod\n-@COND_riscv32_efi_TRUE@am__append_2935 = font.marker\n-@COND_riscv64_efi_TRUE@am__append_2936 = font.module\n-@COND_riscv64_efi_TRUE@am__append_2937 = font.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_2938 = \n-@COND_riscv64_efi_TRUE@am__append_2939 = $(nodist_font_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_2940 =  \\\n+@COND_riscv32_efi_TRUE@am__append_2927 = font.mod\n+@COND_riscv32_efi_TRUE@am__append_2928 = font.marker\n+@COND_riscv64_efi_TRUE@am__append_2929 = font.module\n+@COND_riscv64_efi_TRUE@am__append_2930 = font.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_2931 = \n+@COND_riscv64_efi_TRUE@am__append_2932 = $(nodist_font_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_2933 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_font_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tfont.marker\n-@COND_riscv64_efi_TRUE@am__append_2941 = font.mod\n-@COND_riscv64_efi_TRUE@am__append_2942 = font.marker\n-@COND_i386_pc_TRUE@am__append_2943 = pxe.module\n-@COND_i386_pc_TRUE@am__append_2944 = pxe.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_2934 = font.mod\n+@COND_riscv64_efi_TRUE@am__append_2935 = font.marker\n+@COND_i386_pc_TRUE@am__append_2936 = pxe.module\n+@COND_i386_pc_TRUE@am__append_2937 = pxe.module$(EXEEXT)\n @COND_i386_pc_FALSE@pxe_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_2945 = \n-@COND_i386_pc_TRUE@am__append_2946 = $(nodist_pxe_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2947 = $(nodist_pxe_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2938 = \n+@COND_i386_pc_TRUE@am__append_2939 = $(nodist_pxe_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2940 = $(nodist_pxe_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tpxe.marker\n-@COND_i386_pc_TRUE@am__append_2948 = pxe.mod\n-@COND_i386_pc_TRUE@am__append_2949 = pxe.marker\n-@COND_emu_TRUE@am__append_2950 = bufio.module\n-@COND_emu_TRUE@am__append_2951 = bufio.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__append_2941 = pxe.mod\n+@COND_i386_pc_TRUE@am__append_2942 = pxe.marker\n+@COND_emu_TRUE@am__append_2943 = bufio.module\n+@COND_emu_TRUE@am__append_2944 = bufio.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@bufio_module_DEPENDENCIES =\n-@COND_emu_TRUE@am__append_2952 = \n-@COND_emu_TRUE@am__append_2953 = $(nodist_bufio_module_SOURCES)\n-@COND_emu_TRUE@am__append_2954 = $(nodist_bufio_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_2945 = \n+@COND_emu_TRUE@am__append_2946 = $(nodist_bufio_module_SOURCES)\n+@COND_emu_TRUE@am__append_2947 = $(nodist_bufio_module_SOURCES) \\\n @COND_emu_TRUE@\tbufio.marker\n-@COND_emu_TRUE@am__append_2955 = bufio.mod\n-@COND_emu_TRUE@am__append_2956 = bufio.marker\n-@COND_i386_pc_TRUE@am__append_2957 = bufio.module\n-@COND_i386_pc_TRUE@am__append_2958 = bufio.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__append_2959 = \n-@COND_i386_pc_TRUE@am__append_2960 = $(nodist_bufio_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_2961 = $(nodist_bufio_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_2948 = bufio.mod\n+@COND_emu_TRUE@am__append_2949 = bufio.marker\n+@COND_i386_pc_TRUE@am__append_2950 = bufio.module\n+@COND_i386_pc_TRUE@am__append_2951 = bufio.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__append_2952 = \n+@COND_i386_pc_TRUE@am__append_2953 = $(nodist_bufio_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_2954 = $(nodist_bufio_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tbufio.marker\n-@COND_i386_pc_TRUE@am__append_2962 = bufio.mod\n-@COND_i386_pc_TRUE@am__append_2963 = bufio.marker\n-@COND_i386_efi_TRUE@am__append_2964 = bufio.module\n-@COND_i386_efi_TRUE@am__append_2965 = bufio.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_2966 = \n-@COND_i386_efi_TRUE@am__append_2967 = $(nodist_bufio_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_2968 = $(nodist_bufio_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_2955 = bufio.mod\n+@COND_i386_pc_TRUE@am__append_2956 = bufio.marker\n+@COND_i386_efi_TRUE@am__append_2957 = bufio.module\n+@COND_i386_efi_TRUE@am__append_2958 = bufio.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_2959 = \n+@COND_i386_efi_TRUE@am__append_2960 = $(nodist_bufio_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_2961 = $(nodist_bufio_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tbufio.marker\n-@COND_i386_efi_TRUE@am__append_2969 = bufio.mod\n-@COND_i386_efi_TRUE@am__append_2970 = bufio.marker\n-@COND_i386_qemu_TRUE@am__append_2971 = bufio.module\n-@COND_i386_qemu_TRUE@am__append_2972 = bufio.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_2973 = \n-@COND_i386_qemu_TRUE@am__append_2974 = $(nodist_bufio_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_2975 = $(nodist_bufio_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_2962 = bufio.mod\n+@COND_i386_efi_TRUE@am__append_2963 = bufio.marker\n+@COND_i386_qemu_TRUE@am__append_2964 = bufio.module\n+@COND_i386_qemu_TRUE@am__append_2965 = bufio.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_2966 = \n+@COND_i386_qemu_TRUE@am__append_2967 = $(nodist_bufio_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_2968 = $(nodist_bufio_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tbufio.marker\n-@COND_i386_qemu_TRUE@am__append_2976 = bufio.mod\n-@COND_i386_qemu_TRUE@am__append_2977 = bufio.marker\n-@COND_i386_multiboot_TRUE@am__append_2978 = bufio.module\n-@COND_i386_multiboot_TRUE@am__append_2979 = bufio.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_2980 = \n-@COND_i386_multiboot_TRUE@am__append_2981 = $(nodist_bufio_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_2982 =  \\\n+@COND_i386_qemu_TRUE@am__append_2969 = bufio.mod\n+@COND_i386_qemu_TRUE@am__append_2970 = bufio.marker\n+@COND_i386_multiboot_TRUE@am__append_2971 = bufio.module\n+@COND_i386_multiboot_TRUE@am__append_2972 = bufio.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_2973 = \n+@COND_i386_multiboot_TRUE@am__append_2974 = $(nodist_bufio_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_2975 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_bufio_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tbufio.marker\n-@COND_i386_multiboot_TRUE@am__append_2983 = bufio.mod\n-@COND_i386_multiboot_TRUE@am__append_2984 = bufio.marker\n-@COND_i386_ieee1275_TRUE@am__append_2985 = bufio.module\n-@COND_i386_ieee1275_TRUE@am__append_2986 = bufio.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_2987 = \n-@COND_i386_ieee1275_TRUE@am__append_2988 = $(nodist_bufio_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_2989 =  \\\n+@COND_i386_multiboot_TRUE@am__append_2976 = bufio.mod\n+@COND_i386_multiboot_TRUE@am__append_2977 = bufio.marker\n+@COND_i386_ieee1275_TRUE@am__append_2978 = bufio.module\n+@COND_i386_ieee1275_TRUE@am__append_2979 = bufio.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_2980 = \n+@COND_i386_ieee1275_TRUE@am__append_2981 = $(nodist_bufio_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_2982 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_bufio_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tbufio.marker\n-@COND_i386_ieee1275_TRUE@am__append_2990 = bufio.mod\n-@COND_i386_ieee1275_TRUE@am__append_2991 = bufio.marker\n-@COND_x86_64_efi_TRUE@am__append_2992 = bufio.module\n-@COND_x86_64_efi_TRUE@am__append_2993 = bufio.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_2994 = \n-@COND_x86_64_efi_TRUE@am__append_2995 = $(nodist_bufio_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_2996 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_2983 = bufio.mod\n+@COND_i386_ieee1275_TRUE@am__append_2984 = bufio.marker\n+@COND_x86_64_efi_TRUE@am__append_2985 = bufio.module\n+@COND_x86_64_efi_TRUE@am__append_2986 = bufio.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_2987 = \n+@COND_x86_64_efi_TRUE@am__append_2988 = $(nodist_bufio_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_2989 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_bufio_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tbufio.marker\n-@COND_x86_64_efi_TRUE@am__append_2997 = bufio.mod\n-@COND_x86_64_efi_TRUE@am__append_2998 = bufio.marker\n-@COND_i386_xen_TRUE@am__append_2999 = bufio.module\n-@COND_i386_xen_TRUE@am__append_3000 = bufio.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__append_3001 = \n-@COND_i386_xen_TRUE@am__append_3002 = $(nodist_bufio_module_SOURCES)\n-@COND_i386_xen_TRUE@am__append_3003 = $(nodist_bufio_module_SOURCES) \\\n+@COND_x86_64_efi_TRUE@am__append_2990 = bufio.mod\n+@COND_x86_64_efi_TRUE@am__append_2991 = bufio.marker\n+@COND_i386_xen_TRUE@am__append_2992 = bufio.module\n+@COND_i386_xen_TRUE@am__append_2993 = bufio.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__append_2994 = \n+@COND_i386_xen_TRUE@am__append_2995 = $(nodist_bufio_module_SOURCES)\n+@COND_i386_xen_TRUE@am__append_2996 = $(nodist_bufio_module_SOURCES) \\\n @COND_i386_xen_TRUE@\tbufio.marker\n-@COND_i386_xen_TRUE@am__append_3004 = bufio.mod\n-@COND_i386_xen_TRUE@am__append_3005 = bufio.marker\n-@COND_x86_64_xen_TRUE@am__append_3006 = bufio.module\n-@COND_x86_64_xen_TRUE@am__append_3007 = bufio.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__append_3008 = \n-@COND_x86_64_xen_TRUE@am__append_3009 = $(nodist_bufio_module_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_3010 =  \\\n+@COND_i386_xen_TRUE@am__append_2997 = bufio.mod\n+@COND_i386_xen_TRUE@am__append_2998 = bufio.marker\n+@COND_x86_64_xen_TRUE@am__append_2999 = bufio.module\n+@COND_x86_64_xen_TRUE@am__append_3000 = bufio.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__append_3001 = \n+@COND_x86_64_xen_TRUE@am__append_3002 = $(nodist_bufio_module_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_3003 =  \\\n @COND_x86_64_xen_TRUE@\t$(nodist_bufio_module_SOURCES) \\\n @COND_x86_64_xen_TRUE@\tbufio.marker\n-@COND_x86_64_xen_TRUE@am__append_3011 = bufio.mod\n-@COND_x86_64_xen_TRUE@am__append_3012 = bufio.marker\n-@COND_i386_xen_pvh_TRUE@am__append_3013 = bufio.module\n-@COND_i386_xen_pvh_TRUE@am__append_3014 = bufio.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_3015 = \n-@COND_i386_xen_pvh_TRUE@am__append_3016 = $(nodist_bufio_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_3017 =  \\\n+@COND_x86_64_xen_TRUE@am__append_3004 = bufio.mod\n+@COND_x86_64_xen_TRUE@am__append_3005 = bufio.marker\n+@COND_i386_xen_pvh_TRUE@am__append_3006 = bufio.module\n+@COND_i386_xen_pvh_TRUE@am__append_3007 = bufio.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_3008 = \n+@COND_i386_xen_pvh_TRUE@am__append_3009 = $(nodist_bufio_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_3010 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_bufio_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tbufio.marker\n-@COND_i386_xen_pvh_TRUE@am__append_3018 = bufio.mod\n-@COND_i386_xen_pvh_TRUE@am__append_3019 = bufio.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_3020 = bufio.module\n-@COND_sparc64_ieee1275_TRUE@am__append_3021 = bufio.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__append_3022 = \n-@COND_sparc64_ieee1275_TRUE@am__append_3023 = $(nodist_bufio_module_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_3024 =  \\\n+@COND_i386_xen_pvh_TRUE@am__append_3011 = bufio.mod\n+@COND_i386_xen_pvh_TRUE@am__append_3012 = bufio.marker\n+@COND_sparc64_ieee1275_TRUE@am__append_3013 = bufio.module\n+@COND_sparc64_ieee1275_TRUE@am__append_3014 = bufio.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__append_3015 = \n+@COND_sparc64_ieee1275_TRUE@am__append_3016 = $(nodist_bufio_module_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_3017 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_bufio_module_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tbufio.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_3025 = bufio.mod\n-@COND_sparc64_ieee1275_TRUE@am__append_3026 = bufio.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_3027 = bufio.module\n-@COND_powerpc_ieee1275_TRUE@am__append_3028 = bufio.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__append_3029 = \n-@COND_powerpc_ieee1275_TRUE@am__append_3030 = $(nodist_bufio_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_3031 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__append_3018 = bufio.mod\n+@COND_sparc64_ieee1275_TRUE@am__append_3019 = bufio.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_3020 = bufio.module\n+@COND_powerpc_ieee1275_TRUE@am__append_3021 = bufio.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_3022 = \n+@COND_powerpc_ieee1275_TRUE@am__append_3023 = $(nodist_bufio_module_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_3024 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_bufio_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tbufio.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_3032 = bufio.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_3033 = bufio.marker\n-@COND_mips_arc_TRUE@am__append_3034 = bufio.module\n-@COND_mips_arc_TRUE@am__append_3035 = bufio.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__append_3036 = \n-@COND_mips_arc_TRUE@am__append_3037 = $(nodist_bufio_module_SOURCES)\n-@COND_mips_arc_TRUE@am__append_3038 = $(nodist_bufio_module_SOURCES) \\\n+@COND_powerpc_ieee1275_TRUE@am__append_3025 = bufio.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_3026 = bufio.marker\n+@COND_mips_arc_TRUE@am__append_3027 = bufio.module\n+@COND_mips_arc_TRUE@am__append_3028 = bufio.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__append_3029 = \n+@COND_mips_arc_TRUE@am__append_3030 = $(nodist_bufio_module_SOURCES)\n+@COND_mips_arc_TRUE@am__append_3031 = $(nodist_bufio_module_SOURCES) \\\n @COND_mips_arc_TRUE@\tbufio.marker\n-@COND_mips_arc_TRUE@am__append_3039 = bufio.mod\n-@COND_mips_arc_TRUE@am__append_3040 = bufio.marker\n-@COND_ia64_efi_TRUE@am__append_3041 = bufio.module\n-@COND_ia64_efi_TRUE@am__append_3042 = bufio.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_3043 = \n-@COND_ia64_efi_TRUE@am__append_3044 = $(nodist_bufio_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_3045 = $(nodist_bufio_module_SOURCES) \\\n+@COND_mips_arc_TRUE@am__append_3032 = bufio.mod\n+@COND_mips_arc_TRUE@am__append_3033 = bufio.marker\n+@COND_ia64_efi_TRUE@am__append_3034 = bufio.module\n+@COND_ia64_efi_TRUE@am__append_3035 = bufio.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_3036 = \n+@COND_ia64_efi_TRUE@am__append_3037 = $(nodist_bufio_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_3038 = $(nodist_bufio_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tbufio.marker\n-@COND_ia64_efi_TRUE@am__append_3046 = bufio.mod\n-@COND_ia64_efi_TRUE@am__append_3047 = bufio.marker\n-@COND_mips_qemu_mips_TRUE@am__append_3048 = bufio.module\n-@COND_mips_qemu_mips_TRUE@am__append_3049 = bufio.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_3050 = \n-@COND_mips_qemu_mips_TRUE@am__append_3051 = $(nodist_bufio_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_3052 =  \\\n+@COND_ia64_efi_TRUE@am__append_3039 = bufio.mod\n+@COND_ia64_efi_TRUE@am__append_3040 = bufio.marker\n+@COND_mips_qemu_mips_TRUE@am__append_3041 = bufio.module\n+@COND_mips_qemu_mips_TRUE@am__append_3042 = bufio.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_3043 = \n+@COND_mips_qemu_mips_TRUE@am__append_3044 = $(nodist_bufio_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_3045 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_bufio_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tbufio.marker\n-@COND_mips_qemu_mips_TRUE@am__append_3053 = bufio.mod\n-@COND_mips_qemu_mips_TRUE@am__append_3054 = bufio.marker\n-@COND_arm_uboot_TRUE@am__append_3055 = bufio.module\n-@COND_arm_uboot_TRUE@am__append_3056 = bufio.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__append_3057 = \n-@COND_arm_uboot_TRUE@am__append_3058 = $(nodist_bufio_module_SOURCES)\n-@COND_arm_uboot_TRUE@am__append_3059 = $(nodist_bufio_module_SOURCES) \\\n+@COND_mips_qemu_mips_TRUE@am__append_3046 = bufio.mod\n+@COND_mips_qemu_mips_TRUE@am__append_3047 = bufio.marker\n+@COND_arm_uboot_TRUE@am__append_3048 = bufio.module\n+@COND_arm_uboot_TRUE@am__append_3049 = bufio.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__append_3050 = \n+@COND_arm_uboot_TRUE@am__append_3051 = $(nodist_bufio_module_SOURCES)\n+@COND_arm_uboot_TRUE@am__append_3052 = $(nodist_bufio_module_SOURCES) \\\n @COND_arm_uboot_TRUE@\tbufio.marker\n-@COND_arm_uboot_TRUE@am__append_3060 = bufio.mod\n-@COND_arm_uboot_TRUE@am__append_3061 = bufio.marker\n-@COND_arm_efi_TRUE@am__append_3062 = bufio.module\n-@COND_arm_efi_TRUE@am__append_3063 = bufio.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_3064 = \n-@COND_arm_efi_TRUE@am__append_3065 = $(nodist_bufio_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_3066 = $(nodist_bufio_module_SOURCES) \\\n+@COND_arm_uboot_TRUE@am__append_3053 = bufio.mod\n+@COND_arm_uboot_TRUE@am__append_3054 = bufio.marker\n+@COND_arm_efi_TRUE@am__append_3055 = bufio.module\n+@COND_arm_efi_TRUE@am__append_3056 = bufio.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_3057 = \n+@COND_arm_efi_TRUE@am__append_3058 = $(nodist_bufio_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_3059 = $(nodist_bufio_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tbufio.marker\n-@COND_arm_efi_TRUE@am__append_3067 = bufio.mod\n-@COND_arm_efi_TRUE@am__append_3068 = bufio.marker\n-@COND_arm64_efi_TRUE@am__append_3069 = bufio.module\n-@COND_arm64_efi_TRUE@am__append_3070 = bufio.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_3071 = \n-@COND_arm64_efi_TRUE@am__append_3072 = $(nodist_bufio_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_3073 = $(nodist_bufio_module_SOURCES) \\\n+@COND_arm_efi_TRUE@am__append_3060 = bufio.mod\n+@COND_arm_efi_TRUE@am__append_3061 = bufio.marker\n+@COND_arm64_efi_TRUE@am__append_3062 = bufio.module\n+@COND_arm64_efi_TRUE@am__append_3063 = bufio.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_3064 = \n+@COND_arm64_efi_TRUE@am__append_3065 = $(nodist_bufio_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_3066 = $(nodist_bufio_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tbufio.marker\n-@COND_arm64_efi_TRUE@am__append_3074 = bufio.mod\n-@COND_arm64_efi_TRUE@am__append_3075 = bufio.marker\n-@COND_riscv32_efi_TRUE@am__append_3076 = bufio.module\n-@COND_riscv32_efi_TRUE@am__append_3077 = bufio.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_3078 = \n-@COND_riscv32_efi_TRUE@am__append_3079 = $(nodist_bufio_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_3080 =  \\\n+@COND_arm64_efi_TRUE@am__append_3067 = bufio.mod\n+@COND_arm64_efi_TRUE@am__append_3068 = bufio.marker\n+@COND_riscv32_efi_TRUE@am__append_3069 = bufio.module\n+@COND_riscv32_efi_TRUE@am__append_3070 = bufio.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_3071 = \n+@COND_riscv32_efi_TRUE@am__append_3072 = $(nodist_bufio_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_3073 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_bufio_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tbufio.marker\n-@COND_riscv32_efi_TRUE@am__append_3081 = bufio.mod\n-@COND_riscv32_efi_TRUE@am__append_3082 = bufio.marker\n-@COND_riscv64_efi_TRUE@am__append_3083 = bufio.module\n-@COND_riscv64_efi_TRUE@am__append_3084 = bufio.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_3085 = \n-@COND_riscv64_efi_TRUE@am__append_3086 = $(nodist_bufio_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_3087 =  \\\n+@COND_riscv32_efi_TRUE@am__append_3074 = bufio.mod\n+@COND_riscv32_efi_TRUE@am__append_3075 = bufio.marker\n+@COND_riscv64_efi_TRUE@am__append_3076 = bufio.module\n+@COND_riscv64_efi_TRUE@am__append_3077 = bufio.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_3078 = \n+@COND_riscv64_efi_TRUE@am__append_3079 = $(nodist_bufio_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_3080 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_bufio_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tbufio.marker\n-@COND_riscv64_efi_TRUE@am__append_3088 = bufio.mod\n-@COND_riscv64_efi_TRUE@am__append_3089 = bufio.marker\n-@COND_i386_pc_TRUE@am__append_3090 = relocator.module\n-@COND_i386_pc_TRUE@am__append_3091 = relocator.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_3081 = bufio.mod\n+@COND_riscv64_efi_TRUE@am__append_3082 = bufio.marker\n+@COND_i386_pc_TRUE@am__append_3083 = relocator.module\n+@COND_i386_pc_TRUE@am__append_3084 = relocator.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@relocator_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_3092 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_i386_pc_TRUE@am__append_3093 = $(nodist_relocator_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_3094 =  \\\n+@COND_i386_pc_TRUE@am__append_3085 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_i386_pc_TRUE@am__append_3086 = $(nodist_relocator_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_3087 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_i386_pc_TRUE@\trelocator.marker\n-@COND_i386_pc_TRUE@am__append_3095 = relocator.mod\n-@COND_i386_pc_TRUE@am__append_3096 = relocator.marker\n-@COND_i386_efi_TRUE@am__append_3097 = relocator.module\n-@COND_i386_efi_TRUE@am__append_3098 = relocator.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_3099 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_i386_efi_TRUE@am__append_3100 = $(nodist_relocator_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3101 =  \\\n+@COND_i386_pc_TRUE@am__append_3088 = relocator.mod\n+@COND_i386_pc_TRUE@am__append_3089 = relocator.marker\n+@COND_i386_efi_TRUE@am__append_3090 = relocator.module\n+@COND_i386_efi_TRUE@am__append_3091 = relocator.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_3092 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_i386_efi_TRUE@am__append_3093 = $(nodist_relocator_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3094 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_i386_efi_TRUE@\trelocator.marker\n-@COND_i386_efi_TRUE@am__append_3102 = relocator.mod\n-@COND_i386_efi_TRUE@am__append_3103 = relocator.marker\n-@COND_i386_qemu_TRUE@am__append_3104 = relocator.module\n-@COND_i386_qemu_TRUE@am__append_3105 = relocator.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_3106 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_i386_qemu_TRUE@am__append_3107 = $(nodist_relocator_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_3108 =  \\\n+@COND_i386_efi_TRUE@am__append_3095 = relocator.mod\n+@COND_i386_efi_TRUE@am__append_3096 = relocator.marker\n+@COND_i386_qemu_TRUE@am__append_3097 = relocator.module\n+@COND_i386_qemu_TRUE@am__append_3098 = relocator.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_3099 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_i386_qemu_TRUE@am__append_3100 = $(nodist_relocator_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_3101 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\trelocator.marker\n-@COND_i386_qemu_TRUE@am__append_3109 = relocator.mod\n-@COND_i386_qemu_TRUE@am__append_3110 = relocator.marker\n-@COND_i386_coreboot_TRUE@am__append_3111 = relocator.module\n-@COND_i386_coreboot_TRUE@am__append_3112 = relocator.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_3113 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_i386_coreboot_TRUE@am__append_3114 = $(nodist_relocator_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_3115 =  \\\n+@COND_i386_qemu_TRUE@am__append_3102 = relocator.mod\n+@COND_i386_qemu_TRUE@am__append_3103 = relocator.marker\n+@COND_i386_coreboot_TRUE@am__append_3104 = relocator.module\n+@COND_i386_coreboot_TRUE@am__append_3105 = relocator.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_3106 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_i386_coreboot_TRUE@am__append_3107 = $(nodist_relocator_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_3108 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\trelocator.marker\n-@COND_i386_coreboot_TRUE@am__append_3116 = relocator.mod\n-@COND_i386_coreboot_TRUE@am__append_3117 = relocator.marker\n-@COND_i386_multiboot_TRUE@am__append_3118 = relocator.module\n-@COND_i386_multiboot_TRUE@am__append_3119 = relocator.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_3120 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_i386_multiboot_TRUE@am__append_3121 = $(nodist_relocator_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_3122 =  \\\n+@COND_i386_coreboot_TRUE@am__append_3109 = relocator.mod\n+@COND_i386_coreboot_TRUE@am__append_3110 = relocator.marker\n+@COND_i386_multiboot_TRUE@am__append_3111 = relocator.module\n+@COND_i386_multiboot_TRUE@am__append_3112 = relocator.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_3113 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_i386_multiboot_TRUE@am__append_3114 = $(nodist_relocator_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_3115 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\trelocator.marker\n-@COND_i386_multiboot_TRUE@am__append_3123 = relocator.mod\n-@COND_i386_multiboot_TRUE@am__append_3124 = relocator.marker\n-@COND_i386_ieee1275_TRUE@am__append_3125 = relocator.module\n-@COND_i386_ieee1275_TRUE@am__append_3126 = relocator.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_3127 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_i386_ieee1275_TRUE@am__append_3128 = $(nodist_relocator_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_3129 =  \\\n+@COND_i386_multiboot_TRUE@am__append_3116 = relocator.mod\n+@COND_i386_multiboot_TRUE@am__append_3117 = relocator.marker\n+@COND_i386_ieee1275_TRUE@am__append_3118 = relocator.module\n+@COND_i386_ieee1275_TRUE@am__append_3119 = relocator.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_3120 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_i386_ieee1275_TRUE@am__append_3121 = $(nodist_relocator_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_3122 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\trelocator.marker\n-@COND_i386_ieee1275_TRUE@am__append_3130 = relocator.mod\n-@COND_i386_ieee1275_TRUE@am__append_3131 = relocator.marker\n-@COND_x86_64_efi_TRUE@am__append_3132 = relocator.module\n-@COND_x86_64_efi_TRUE@am__append_3133 = relocator.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_3134 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_x86_64_efi_TRUE@am__append_3135 = $(nodist_relocator_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_3136 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_3123 = relocator.mod\n+@COND_i386_ieee1275_TRUE@am__append_3124 = relocator.marker\n+@COND_x86_64_efi_TRUE@am__append_3125 = relocator.module\n+@COND_x86_64_efi_TRUE@am__append_3126 = relocator.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3127 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_x86_64_efi_TRUE@am__append_3128 = $(nodist_relocator_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_3129 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\trelocator.marker\n-@COND_x86_64_efi_TRUE@am__append_3137 = relocator.mod\n-@COND_x86_64_efi_TRUE@am__append_3138 = relocator.marker\n-@COND_i386_xen_TRUE@am__append_3139 = relocator.module\n-@COND_i386_xen_TRUE@am__append_3140 = relocator.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__append_3141 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_i386_xen_TRUE@am__append_3142 = $(nodist_relocator_module_SOURCES)\n-@COND_i386_xen_TRUE@am__append_3143 =  \\\n+@COND_x86_64_efi_TRUE@am__append_3130 = relocator.mod\n+@COND_x86_64_efi_TRUE@am__append_3131 = relocator.marker\n+@COND_i386_xen_TRUE@am__append_3132 = relocator.module\n+@COND_i386_xen_TRUE@am__append_3133 = relocator.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__append_3134 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_i386_xen_TRUE@am__append_3135 = $(nodist_relocator_module_SOURCES)\n+@COND_i386_xen_TRUE@am__append_3136 =  \\\n @COND_i386_xen_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_i386_xen_TRUE@\trelocator.marker\n-@COND_i386_xen_TRUE@am__append_3144 = relocator.mod\n-@COND_i386_xen_TRUE@am__append_3145 = relocator.marker\n-@COND_x86_64_xen_TRUE@am__append_3146 = relocator.module\n-@COND_x86_64_xen_TRUE@am__append_3147 = relocator.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__append_3148 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_x86_64_xen_TRUE@am__append_3149 = $(nodist_relocator_module_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_3150 =  \\\n+@COND_i386_xen_TRUE@am__append_3137 = relocator.mod\n+@COND_i386_xen_TRUE@am__append_3138 = relocator.marker\n+@COND_x86_64_xen_TRUE@am__append_3139 = relocator.module\n+@COND_x86_64_xen_TRUE@am__append_3140 = relocator.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__append_3141 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_x86_64_xen_TRUE@am__append_3142 = $(nodist_relocator_module_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_3143 =  \\\n @COND_x86_64_xen_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_x86_64_xen_TRUE@\trelocator.marker\n-@COND_x86_64_xen_TRUE@am__append_3151 = relocator.mod\n-@COND_x86_64_xen_TRUE@am__append_3152 = relocator.marker\n-@COND_i386_xen_pvh_TRUE@am__append_3153 = relocator.module\n-@COND_i386_xen_pvh_TRUE@am__append_3154 = relocator.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_3155 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_i386_xen_pvh_TRUE@am__append_3156 = $(nodist_relocator_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_3157 =  \\\n+@COND_x86_64_xen_TRUE@am__append_3144 = relocator.mod\n+@COND_x86_64_xen_TRUE@am__append_3145 = relocator.marker\n+@COND_i386_xen_pvh_TRUE@am__append_3146 = relocator.module\n+@COND_i386_xen_pvh_TRUE@am__append_3147 = relocator.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_3148 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_i386_xen_pvh_TRUE@am__append_3149 = $(nodist_relocator_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_3150 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\trelocator.marker\n-@COND_i386_xen_pvh_TRUE@am__append_3158 = relocator.mod\n-@COND_i386_xen_pvh_TRUE@am__append_3159 = relocator.marker\n-@COND_mips_loongson_TRUE@am__append_3160 = relocator.module\n-@COND_mips_loongson_TRUE@am__append_3161 = relocator.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_3162 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_mips_loongson_TRUE@am__append_3163 = $(nodist_relocator_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_3164 =  \\\n+@COND_i386_xen_pvh_TRUE@am__append_3151 = relocator.mod\n+@COND_i386_xen_pvh_TRUE@am__append_3152 = relocator.marker\n+@COND_mips_loongson_TRUE@am__append_3153 = relocator.module\n+@COND_mips_loongson_TRUE@am__append_3154 = relocator.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_3155 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_mips_loongson_TRUE@am__append_3156 = $(nodist_relocator_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_3157 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\trelocator.marker\n-@COND_mips_loongson_TRUE@am__append_3165 = relocator.mod\n-@COND_mips_loongson_TRUE@am__append_3166 = relocator.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_3167 = relocator.module\n-@COND_powerpc_ieee1275_TRUE@am__append_3168 = relocator.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__append_3169 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_powerpc_ieee1275_TRUE@am__append_3170 = $(nodist_relocator_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_3171 = $(nodist_relocator_module_SOURCES) \\\n+@COND_mips_loongson_TRUE@am__append_3158 = relocator.mod\n+@COND_mips_loongson_TRUE@am__append_3159 = relocator.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_3160 = relocator.module\n+@COND_powerpc_ieee1275_TRUE@am__append_3161 = relocator.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_3162 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_powerpc_ieee1275_TRUE@am__append_3163 = $(nodist_relocator_module_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_3164 = $(nodist_relocator_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\trelocator.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_3172 = relocator.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_3173 = relocator.marker\n-@COND_mips_arc_TRUE@am__append_3174 = relocator.module\n-@COND_mips_arc_TRUE@am__append_3175 = relocator.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__append_3176 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_mips_arc_TRUE@am__append_3177 = $(nodist_relocator_module_SOURCES)\n-@COND_mips_arc_TRUE@am__append_3178 =  \\\n+@COND_powerpc_ieee1275_TRUE@am__append_3165 = relocator.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_3166 = relocator.marker\n+@COND_mips_arc_TRUE@am__append_3167 = relocator.module\n+@COND_mips_arc_TRUE@am__append_3168 = relocator.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__append_3169 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_mips_arc_TRUE@am__append_3170 = $(nodist_relocator_module_SOURCES)\n+@COND_mips_arc_TRUE@am__append_3171 =  \\\n @COND_mips_arc_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_mips_arc_TRUE@\trelocator.marker\n-@COND_mips_arc_TRUE@am__append_3179 = relocator.mod\n-@COND_mips_arc_TRUE@am__append_3180 = relocator.marker\n-@COND_mips_qemu_mips_TRUE@am__append_3181 = relocator.module\n-@COND_mips_qemu_mips_TRUE@am__append_3182 = relocator.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_3183 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n-@COND_mips_qemu_mips_TRUE@am__append_3184 = $(nodist_relocator_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_3185 =  \\\n+@COND_mips_arc_TRUE@am__append_3172 = relocator.mod\n+@COND_mips_arc_TRUE@am__append_3173 = relocator.marker\n+@COND_mips_qemu_mips_TRUE@am__append_3174 = relocator.module\n+@COND_mips_qemu_mips_TRUE@am__append_3175 = relocator.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_3176 = lib/i386/relocator_common.S kern/powerpc/cache_flush.S \n+@COND_mips_qemu_mips_TRUE@am__append_3177 = $(nodist_relocator_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_3178 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_relocator_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\trelocator.marker\n-@COND_mips_qemu_mips_TRUE@am__append_3186 = relocator.mod\n-@COND_mips_qemu_mips_TRUE@am__append_3187 = relocator.marker\n-@COND_i386_pc_TRUE@am__append_3188 = datetime.module\n-@COND_i386_pc_TRUE@am__append_3189 = datetime.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_3179 = relocator.mod\n+@COND_mips_qemu_mips_TRUE@am__append_3180 = relocator.marker\n+@COND_i386_pc_TRUE@am__append_3181 = datetime.module\n+@COND_i386_pc_TRUE@am__append_3182 = datetime.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@datetime_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_3190 = \n-@COND_i386_pc_TRUE@am__append_3191 = $(nodist_datetime_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_3192 =  \\\n+@COND_i386_pc_TRUE@am__append_3183 = \n+@COND_i386_pc_TRUE@am__append_3184 = $(nodist_datetime_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_3185 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tdatetime.marker\n-@COND_i386_pc_TRUE@am__append_3193 = datetime.mod\n-@COND_i386_pc_TRUE@am__append_3194 = datetime.marker\n-@COND_i386_efi_TRUE@am__append_3195 = datetime.module\n-@COND_i386_efi_TRUE@am__append_3196 = datetime.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_3197 = \n-@COND_i386_efi_TRUE@am__append_3198 = $(nodist_datetime_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3199 =  \\\n+@COND_i386_pc_TRUE@am__append_3186 = datetime.mod\n+@COND_i386_pc_TRUE@am__append_3187 = datetime.marker\n+@COND_i386_efi_TRUE@am__append_3188 = datetime.module\n+@COND_i386_efi_TRUE@am__append_3189 = datetime.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_3190 = \n+@COND_i386_efi_TRUE@am__append_3191 = $(nodist_datetime_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3192 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tdatetime.marker\n-@COND_i386_efi_TRUE@am__append_3200 = datetime.mod\n-@COND_i386_efi_TRUE@am__append_3201 = datetime.marker\n-@COND_i386_qemu_TRUE@am__append_3202 = datetime.module\n-@COND_i386_qemu_TRUE@am__append_3203 = datetime.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_3204 = \n-@COND_i386_qemu_TRUE@am__append_3205 = $(nodist_datetime_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_3206 =  \\\n+@COND_i386_efi_TRUE@am__append_3193 = datetime.mod\n+@COND_i386_efi_TRUE@am__append_3194 = datetime.marker\n+@COND_i386_qemu_TRUE@am__append_3195 = datetime.module\n+@COND_i386_qemu_TRUE@am__append_3196 = datetime.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_3197 = \n+@COND_i386_qemu_TRUE@am__append_3198 = $(nodist_datetime_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_3199 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tdatetime.marker\n-@COND_i386_qemu_TRUE@am__append_3207 = datetime.mod\n-@COND_i386_qemu_TRUE@am__append_3208 = datetime.marker\n-@COND_i386_coreboot_TRUE@am__append_3209 = datetime.module\n-@COND_i386_coreboot_TRUE@am__append_3210 = datetime.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_3211 = \n-@COND_i386_coreboot_TRUE@am__append_3212 = $(nodist_datetime_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_3213 =  \\\n+@COND_i386_qemu_TRUE@am__append_3200 = datetime.mod\n+@COND_i386_qemu_TRUE@am__append_3201 = datetime.marker\n+@COND_i386_coreboot_TRUE@am__append_3202 = datetime.module\n+@COND_i386_coreboot_TRUE@am__append_3203 = datetime.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_3204 = \n+@COND_i386_coreboot_TRUE@am__append_3205 = $(nodist_datetime_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_3206 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tdatetime.marker\n-@COND_i386_coreboot_TRUE@am__append_3214 = datetime.mod\n-@COND_i386_coreboot_TRUE@am__append_3215 = datetime.marker\n-@COND_i386_multiboot_TRUE@am__append_3216 = datetime.module\n-@COND_i386_multiboot_TRUE@am__append_3217 = datetime.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_3218 = \n-@COND_i386_multiboot_TRUE@am__append_3219 = $(nodist_datetime_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_3220 =  \\\n+@COND_i386_coreboot_TRUE@am__append_3207 = datetime.mod\n+@COND_i386_coreboot_TRUE@am__append_3208 = datetime.marker\n+@COND_i386_multiboot_TRUE@am__append_3209 = datetime.module\n+@COND_i386_multiboot_TRUE@am__append_3210 = datetime.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_3211 = \n+@COND_i386_multiboot_TRUE@am__append_3212 = $(nodist_datetime_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_3213 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tdatetime.marker\n-@COND_i386_multiboot_TRUE@am__append_3221 = datetime.mod\n-@COND_i386_multiboot_TRUE@am__append_3222 = datetime.marker\n-@COND_i386_ieee1275_TRUE@am__append_3223 = datetime.module\n-@COND_i386_ieee1275_TRUE@am__append_3224 = datetime.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_3225 = \n-@COND_i386_ieee1275_TRUE@am__append_3226 = $(nodist_datetime_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_3227 =  \\\n+@COND_i386_multiboot_TRUE@am__append_3214 = datetime.mod\n+@COND_i386_multiboot_TRUE@am__append_3215 = datetime.marker\n+@COND_i386_ieee1275_TRUE@am__append_3216 = datetime.module\n+@COND_i386_ieee1275_TRUE@am__append_3217 = datetime.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_3218 = \n+@COND_i386_ieee1275_TRUE@am__append_3219 = $(nodist_datetime_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_3220 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tdatetime.marker\n-@COND_i386_ieee1275_TRUE@am__append_3228 = datetime.mod\n-@COND_i386_ieee1275_TRUE@am__append_3229 = datetime.marker\n-@COND_x86_64_efi_TRUE@am__append_3230 = datetime.module\n-@COND_x86_64_efi_TRUE@am__append_3231 = datetime.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_3232 = \n-@COND_x86_64_efi_TRUE@am__append_3233 = $(nodist_datetime_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_3234 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_3221 = datetime.mod\n+@COND_i386_ieee1275_TRUE@am__append_3222 = datetime.marker\n+@COND_x86_64_efi_TRUE@am__append_3223 = datetime.module\n+@COND_x86_64_efi_TRUE@am__append_3224 = datetime.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3225 = \n+@COND_x86_64_efi_TRUE@am__append_3226 = $(nodist_datetime_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_3227 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tdatetime.marker\n-@COND_x86_64_efi_TRUE@am__append_3235 = datetime.mod\n-@COND_x86_64_efi_TRUE@am__append_3236 = datetime.marker\n-@COND_i386_xen_TRUE@am__append_3237 = datetime.module\n-@COND_i386_xen_TRUE@am__append_3238 = datetime.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__append_3239 = \n-@COND_i386_xen_TRUE@am__append_3240 = $(nodist_datetime_module_SOURCES)\n-@COND_i386_xen_TRUE@am__append_3241 =  \\\n+@COND_x86_64_efi_TRUE@am__append_3228 = datetime.mod\n+@COND_x86_64_efi_TRUE@am__append_3229 = datetime.marker\n+@COND_i386_xen_TRUE@am__append_3230 = datetime.module\n+@COND_i386_xen_TRUE@am__append_3231 = datetime.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__append_3232 = \n+@COND_i386_xen_TRUE@am__append_3233 = $(nodist_datetime_module_SOURCES)\n+@COND_i386_xen_TRUE@am__append_3234 =  \\\n @COND_i386_xen_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_i386_xen_TRUE@\tdatetime.marker\n-@COND_i386_xen_TRUE@am__append_3242 = datetime.mod\n-@COND_i386_xen_TRUE@am__append_3243 = datetime.marker\n-@COND_x86_64_xen_TRUE@am__append_3244 = datetime.module\n-@COND_x86_64_xen_TRUE@am__append_3245 = datetime.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__append_3246 = \n-@COND_x86_64_xen_TRUE@am__append_3247 = $(nodist_datetime_module_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_3248 =  \\\n+@COND_i386_xen_TRUE@am__append_3235 = datetime.mod\n+@COND_i386_xen_TRUE@am__append_3236 = datetime.marker\n+@COND_x86_64_xen_TRUE@am__append_3237 = datetime.module\n+@COND_x86_64_xen_TRUE@am__append_3238 = datetime.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__append_3239 = \n+@COND_x86_64_xen_TRUE@am__append_3240 = $(nodist_datetime_module_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_3241 =  \\\n @COND_x86_64_xen_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_x86_64_xen_TRUE@\tdatetime.marker\n-@COND_x86_64_xen_TRUE@am__append_3249 = datetime.mod\n-@COND_x86_64_xen_TRUE@am__append_3250 = datetime.marker\n-@COND_i386_xen_pvh_TRUE@am__append_3251 = datetime.module\n-@COND_i386_xen_pvh_TRUE@am__append_3252 = datetime.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_3253 = \n-@COND_i386_xen_pvh_TRUE@am__append_3254 = $(nodist_datetime_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_3255 =  \\\n+@COND_x86_64_xen_TRUE@am__append_3242 = datetime.mod\n+@COND_x86_64_xen_TRUE@am__append_3243 = datetime.marker\n+@COND_i386_xen_pvh_TRUE@am__append_3244 = datetime.module\n+@COND_i386_xen_pvh_TRUE@am__append_3245 = datetime.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_3246 = \n+@COND_i386_xen_pvh_TRUE@am__append_3247 = $(nodist_datetime_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_3248 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tdatetime.marker\n-@COND_i386_xen_pvh_TRUE@am__append_3256 = datetime.mod\n-@COND_i386_xen_pvh_TRUE@am__append_3257 = datetime.marker\n-@COND_mips_loongson_TRUE@am__append_3258 = datetime.module\n-@COND_mips_loongson_TRUE@am__append_3259 = datetime.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_3260 = \n-@COND_mips_loongson_TRUE@am__append_3261 = $(nodist_datetime_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_3262 =  \\\n+@COND_i386_xen_pvh_TRUE@am__append_3249 = datetime.mod\n+@COND_i386_xen_pvh_TRUE@am__append_3250 = datetime.marker\n+@COND_mips_loongson_TRUE@am__append_3251 = datetime.module\n+@COND_mips_loongson_TRUE@am__append_3252 = datetime.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_3253 = \n+@COND_mips_loongson_TRUE@am__append_3254 = $(nodist_datetime_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_3255 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tdatetime.marker\n-@COND_mips_loongson_TRUE@am__append_3263 = datetime.mod\n-@COND_mips_loongson_TRUE@am__append_3264 = datetime.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_3265 = datetime.module\n-@COND_sparc64_ieee1275_TRUE@am__append_3266 = datetime.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__append_3267 = \n-@COND_sparc64_ieee1275_TRUE@am__append_3268 = $(nodist_datetime_module_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_3269 =  \\\n+@COND_mips_loongson_TRUE@am__append_3256 = datetime.mod\n+@COND_mips_loongson_TRUE@am__append_3257 = datetime.marker\n+@COND_sparc64_ieee1275_TRUE@am__append_3258 = datetime.module\n+@COND_sparc64_ieee1275_TRUE@am__append_3259 = datetime.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__append_3260 = \n+@COND_sparc64_ieee1275_TRUE@am__append_3261 = $(nodist_datetime_module_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_3262 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tdatetime.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_3270 = datetime.mod\n-@COND_sparc64_ieee1275_TRUE@am__append_3271 = datetime.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_3272 = datetime.module\n-@COND_powerpc_ieee1275_TRUE@am__append_3273 = datetime.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__append_3274 = \n-@COND_powerpc_ieee1275_TRUE@am__append_3275 = $(nodist_datetime_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_3276 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__append_3263 = datetime.mod\n+@COND_sparc64_ieee1275_TRUE@am__append_3264 = datetime.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_3265 = datetime.module\n+@COND_powerpc_ieee1275_TRUE@am__append_3266 = datetime.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_3267 = \n+@COND_powerpc_ieee1275_TRUE@am__append_3268 = $(nodist_datetime_module_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_3269 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tdatetime.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_3277 = datetime.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_3278 = datetime.marker\n-@COND_mips_arc_TRUE@am__append_3279 = datetime.module\n-@COND_mips_arc_TRUE@am__append_3280 = datetime.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__append_3281 = \n-@COND_mips_arc_TRUE@am__append_3282 = $(nodist_datetime_module_SOURCES)\n-@COND_mips_arc_TRUE@am__append_3283 =  \\\n+@COND_powerpc_ieee1275_TRUE@am__append_3270 = datetime.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_3271 = datetime.marker\n+@COND_mips_arc_TRUE@am__append_3272 = datetime.module\n+@COND_mips_arc_TRUE@am__append_3273 = datetime.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__append_3274 = \n+@COND_mips_arc_TRUE@am__append_3275 = $(nodist_datetime_module_SOURCES)\n+@COND_mips_arc_TRUE@am__append_3276 =  \\\n @COND_mips_arc_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_mips_arc_TRUE@\tdatetime.marker\n-@COND_mips_arc_TRUE@am__append_3284 = datetime.mod\n-@COND_mips_arc_TRUE@am__append_3285 = datetime.marker\n-@COND_ia64_efi_TRUE@am__append_3286 = datetime.module\n-@COND_ia64_efi_TRUE@am__append_3287 = datetime.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_3288 = \n-@COND_ia64_efi_TRUE@am__append_3289 = $(nodist_datetime_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_3290 =  \\\n+@COND_mips_arc_TRUE@am__append_3277 = datetime.mod\n+@COND_mips_arc_TRUE@am__append_3278 = datetime.marker\n+@COND_ia64_efi_TRUE@am__append_3279 = datetime.module\n+@COND_ia64_efi_TRUE@am__append_3280 = datetime.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_3281 = \n+@COND_ia64_efi_TRUE@am__append_3282 = $(nodist_datetime_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_3283 =  \\\n @COND_ia64_efi_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tdatetime.marker\n-@COND_ia64_efi_TRUE@am__append_3291 = datetime.mod\n-@COND_ia64_efi_TRUE@am__append_3292 = datetime.marker\n-@COND_mips_qemu_mips_TRUE@am__append_3293 = datetime.module\n-@COND_mips_qemu_mips_TRUE@am__append_3294 = datetime.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_3295 = \n-@COND_mips_qemu_mips_TRUE@am__append_3296 = $(nodist_datetime_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_3297 =  \\\n+@COND_ia64_efi_TRUE@am__append_3284 = datetime.mod\n+@COND_ia64_efi_TRUE@am__append_3285 = datetime.marker\n+@COND_mips_qemu_mips_TRUE@am__append_3286 = datetime.module\n+@COND_mips_qemu_mips_TRUE@am__append_3287 = datetime.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_3288 = \n+@COND_mips_qemu_mips_TRUE@am__append_3289 = $(nodist_datetime_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_3290 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tdatetime.marker\n-@COND_mips_qemu_mips_TRUE@am__append_3298 = datetime.mod\n-@COND_mips_qemu_mips_TRUE@am__append_3299 = datetime.marker\n-@COND_arm_uboot_TRUE@am__append_3300 = datetime.module\n-@COND_arm_uboot_TRUE@am__append_3301 = datetime.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__append_3302 = \n-@COND_arm_uboot_TRUE@am__append_3303 = $(nodist_datetime_module_SOURCES)\n-@COND_arm_uboot_TRUE@am__append_3304 =  \\\n+@COND_mips_qemu_mips_TRUE@am__append_3291 = datetime.mod\n+@COND_mips_qemu_mips_TRUE@am__append_3292 = datetime.marker\n+@COND_arm_uboot_TRUE@am__append_3293 = datetime.module\n+@COND_arm_uboot_TRUE@am__append_3294 = datetime.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__append_3295 = \n+@COND_arm_uboot_TRUE@am__append_3296 = $(nodist_datetime_module_SOURCES)\n+@COND_arm_uboot_TRUE@am__append_3297 =  \\\n @COND_arm_uboot_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_arm_uboot_TRUE@\tdatetime.marker\n-@COND_arm_uboot_TRUE@am__append_3305 = datetime.mod\n-@COND_arm_uboot_TRUE@am__append_3306 = datetime.marker\n-@COND_arm_efi_TRUE@am__append_3307 = datetime.module\n-@COND_arm_efi_TRUE@am__append_3308 = datetime.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_3309 = \n-@COND_arm_efi_TRUE@am__append_3310 = $(nodist_datetime_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_3311 =  \\\n+@COND_arm_uboot_TRUE@am__append_3298 = datetime.mod\n+@COND_arm_uboot_TRUE@am__append_3299 = datetime.marker\n+@COND_arm_efi_TRUE@am__append_3300 = datetime.module\n+@COND_arm_efi_TRUE@am__append_3301 = datetime.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_3302 = \n+@COND_arm_efi_TRUE@am__append_3303 = $(nodist_datetime_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_3304 =  \\\n @COND_arm_efi_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tdatetime.marker\n-@COND_arm_efi_TRUE@am__append_3312 = datetime.mod\n-@COND_arm_efi_TRUE@am__append_3313 = datetime.marker\n-@COND_arm64_efi_TRUE@am__append_3314 = datetime.module\n-@COND_arm64_efi_TRUE@am__append_3315 = datetime.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_3316 = \n-@COND_arm64_efi_TRUE@am__append_3317 = $(nodist_datetime_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_3318 =  \\\n+@COND_arm_efi_TRUE@am__append_3305 = datetime.mod\n+@COND_arm_efi_TRUE@am__append_3306 = datetime.marker\n+@COND_arm64_efi_TRUE@am__append_3307 = datetime.module\n+@COND_arm64_efi_TRUE@am__append_3308 = datetime.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_3309 = \n+@COND_arm64_efi_TRUE@am__append_3310 = $(nodist_datetime_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_3311 =  \\\n @COND_arm64_efi_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tdatetime.marker\n-@COND_arm64_efi_TRUE@am__append_3319 = datetime.mod\n-@COND_arm64_efi_TRUE@am__append_3320 = datetime.marker\n-@COND_arm_coreboot_TRUE@am__append_3321 = datetime.module\n-@COND_arm_coreboot_TRUE@am__append_3322 = datetime.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__append_3323 = \n-@COND_arm_coreboot_TRUE@am__append_3324 = $(nodist_datetime_module_SOURCES)\n-@COND_arm_coreboot_TRUE@am__append_3325 =  \\\n+@COND_arm64_efi_TRUE@am__append_3312 = datetime.mod\n+@COND_arm64_efi_TRUE@am__append_3313 = datetime.marker\n+@COND_arm_coreboot_TRUE@am__append_3314 = datetime.module\n+@COND_arm_coreboot_TRUE@am__append_3315 = datetime.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__append_3316 = \n+@COND_arm_coreboot_TRUE@am__append_3317 = $(nodist_datetime_module_SOURCES)\n+@COND_arm_coreboot_TRUE@am__append_3318 =  \\\n @COND_arm_coreboot_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_arm_coreboot_TRUE@\tdatetime.marker\n-@COND_arm_coreboot_TRUE@am__append_3326 = datetime.mod\n-@COND_arm_coreboot_TRUE@am__append_3327 = datetime.marker\n-@COND_riscv32_efi_TRUE@am__append_3328 = datetime.module\n-@COND_riscv32_efi_TRUE@am__append_3329 = datetime.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_3330 = \n-@COND_riscv32_efi_TRUE@am__append_3331 = $(nodist_datetime_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_3332 =  \\\n+@COND_arm_coreboot_TRUE@am__append_3319 = datetime.mod\n+@COND_arm_coreboot_TRUE@am__append_3320 = datetime.marker\n+@COND_riscv32_efi_TRUE@am__append_3321 = datetime.module\n+@COND_riscv32_efi_TRUE@am__append_3322 = datetime.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_3323 = \n+@COND_riscv32_efi_TRUE@am__append_3324 = $(nodist_datetime_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_3325 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tdatetime.marker\n-@COND_riscv32_efi_TRUE@am__append_3333 = datetime.mod\n-@COND_riscv32_efi_TRUE@am__append_3334 = datetime.marker\n-@COND_riscv64_efi_TRUE@am__append_3335 = datetime.module\n-@COND_riscv64_efi_TRUE@am__append_3336 = datetime.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_3337 = \n-@COND_riscv64_efi_TRUE@am__append_3338 = $(nodist_datetime_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_3339 =  \\\n+@COND_riscv32_efi_TRUE@am__append_3326 = datetime.mod\n+@COND_riscv32_efi_TRUE@am__append_3327 = datetime.marker\n+@COND_riscv64_efi_TRUE@am__append_3328 = datetime.module\n+@COND_riscv64_efi_TRUE@am__append_3329 = datetime.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_3330 = \n+@COND_riscv64_efi_TRUE@am__append_3331 = $(nodist_datetime_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_3332 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_datetime_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tdatetime.marker\n-@COND_riscv64_efi_TRUE@am__append_3340 = datetime.mod\n-@COND_riscv64_efi_TRUE@am__append_3341 = datetime.marker\n-@COND_i386_pc_TRUE@am__append_3342 = aout.module\n-@COND_i386_pc_TRUE@am__append_3343 = aout.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_3333 = datetime.mod\n+@COND_riscv64_efi_TRUE@am__append_3334 = datetime.marker\n+@COND_i386_pc_TRUE@am__append_3335 = aout.module\n+@COND_i386_pc_TRUE@am__append_3336 = aout.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_x86_64_efi_FALSE@aout_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_3344 = \n-@COND_i386_pc_TRUE@am__append_3345 = $(nodist_aout_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_3346 = $(nodist_aout_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3337 = \n+@COND_i386_pc_TRUE@am__append_3338 = $(nodist_aout_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_3339 = $(nodist_aout_module_SOURCES) \\\n @COND_i386_pc_TRUE@\taout.marker\n-@COND_i386_pc_TRUE@am__append_3347 = aout.mod\n-@COND_i386_pc_TRUE@am__append_3348 = aout.marker\n-@COND_i386_efi_TRUE@am__append_3349 = aout.module\n-@COND_i386_efi_TRUE@am__append_3350 = aout.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_3351 = \n-@COND_i386_efi_TRUE@am__append_3352 = $(nodist_aout_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3353 = $(nodist_aout_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3340 = aout.mod\n+@COND_i386_pc_TRUE@am__append_3341 = aout.marker\n+@COND_i386_efi_TRUE@am__append_3342 = aout.module\n+@COND_i386_efi_TRUE@am__append_3343 = aout.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_3344 = \n+@COND_i386_efi_TRUE@am__append_3345 = $(nodist_aout_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3346 = $(nodist_aout_module_SOURCES) \\\n @COND_i386_efi_TRUE@\taout.marker\n-@COND_i386_efi_TRUE@am__append_3354 = aout.mod\n-@COND_i386_efi_TRUE@am__append_3355 = aout.marker\n-@COND_i386_qemu_TRUE@am__append_3356 = aout.module\n-@COND_i386_qemu_TRUE@am__append_3357 = aout.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_3358 = \n-@COND_i386_qemu_TRUE@am__append_3359 = $(nodist_aout_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_3360 = $(nodist_aout_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_3347 = aout.mod\n+@COND_i386_efi_TRUE@am__append_3348 = aout.marker\n+@COND_i386_qemu_TRUE@am__append_3349 = aout.module\n+@COND_i386_qemu_TRUE@am__append_3350 = aout.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_3351 = \n+@COND_i386_qemu_TRUE@am__append_3352 = $(nodist_aout_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_3353 = $(nodist_aout_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\taout.marker\n-@COND_i386_qemu_TRUE@am__append_3361 = aout.mod\n-@COND_i386_qemu_TRUE@am__append_3362 = aout.marker\n-@COND_i386_coreboot_TRUE@am__append_3363 = aout.module\n-@COND_i386_coreboot_TRUE@am__append_3364 = aout.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_3365 = \n-@COND_i386_coreboot_TRUE@am__append_3366 = $(nodist_aout_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_3367 =  \\\n+@COND_i386_qemu_TRUE@am__append_3354 = aout.mod\n+@COND_i386_qemu_TRUE@am__append_3355 = aout.marker\n+@COND_i386_coreboot_TRUE@am__append_3356 = aout.module\n+@COND_i386_coreboot_TRUE@am__append_3357 = aout.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_3358 = \n+@COND_i386_coreboot_TRUE@am__append_3359 = $(nodist_aout_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_3360 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_aout_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\taout.marker\n-@COND_i386_coreboot_TRUE@am__append_3368 = aout.mod\n-@COND_i386_coreboot_TRUE@am__append_3369 = aout.marker\n-@COND_i386_multiboot_TRUE@am__append_3370 = aout.module\n-@COND_i386_multiboot_TRUE@am__append_3371 = aout.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_3372 = \n-@COND_i386_multiboot_TRUE@am__append_3373 = $(nodist_aout_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_3374 =  \\\n+@COND_i386_coreboot_TRUE@am__append_3361 = aout.mod\n+@COND_i386_coreboot_TRUE@am__append_3362 = aout.marker\n+@COND_i386_multiboot_TRUE@am__append_3363 = aout.module\n+@COND_i386_multiboot_TRUE@am__append_3364 = aout.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_3365 = \n+@COND_i386_multiboot_TRUE@am__append_3366 = $(nodist_aout_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_3367 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_aout_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\taout.marker\n-@COND_i386_multiboot_TRUE@am__append_3375 = aout.mod\n-@COND_i386_multiboot_TRUE@am__append_3376 = aout.marker\n-@COND_i386_ieee1275_TRUE@am__append_3377 = aout.module\n-@COND_i386_ieee1275_TRUE@am__append_3378 = aout.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_3379 = \n-@COND_i386_ieee1275_TRUE@am__append_3380 = $(nodist_aout_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_3381 =  \\\n+@COND_i386_multiboot_TRUE@am__append_3368 = aout.mod\n+@COND_i386_multiboot_TRUE@am__append_3369 = aout.marker\n+@COND_i386_ieee1275_TRUE@am__append_3370 = aout.module\n+@COND_i386_ieee1275_TRUE@am__append_3371 = aout.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_3372 = \n+@COND_i386_ieee1275_TRUE@am__append_3373 = $(nodist_aout_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_3374 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_aout_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\taout.marker\n-@COND_i386_ieee1275_TRUE@am__append_3382 = aout.mod\n-@COND_i386_ieee1275_TRUE@am__append_3383 = aout.marker\n-@COND_x86_64_efi_TRUE@am__append_3384 = aout.module\n-@COND_x86_64_efi_TRUE@am__append_3385 = aout.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_3386 = \n-@COND_x86_64_efi_TRUE@am__append_3387 = $(nodist_aout_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_3388 = $(nodist_aout_module_SOURCES) \\\n+@COND_i386_ieee1275_TRUE@am__append_3375 = aout.mod\n+@COND_i386_ieee1275_TRUE@am__append_3376 = aout.marker\n+@COND_x86_64_efi_TRUE@am__append_3377 = aout.module\n+@COND_x86_64_efi_TRUE@am__append_3378 = aout.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3379 = \n+@COND_x86_64_efi_TRUE@am__append_3380 = $(nodist_aout_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_3381 = $(nodist_aout_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\taout.marker\n-@COND_x86_64_efi_TRUE@am__append_3389 = aout.mod\n-@COND_x86_64_efi_TRUE@am__append_3390 = aout.marker\n-@COND_i386_pc_TRUE@am__append_3391 = bsd.module\n-@COND_i386_pc_TRUE@am__append_3392 = bsd.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3382 = aout.mod\n+@COND_x86_64_efi_TRUE@am__append_3383 = aout.marker\n+@COND_i386_pc_TRUE@am__append_3384 = bsd.module\n+@COND_i386_pc_TRUE@am__append_3385 = bsd.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_x86_64_efi_FALSE@bsd_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_3393 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n-@COND_i386_pc_TRUE@am__append_3394 = $(nodist_bsd_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_3395 = $(nodist_bsd_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3386 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n+@COND_i386_pc_TRUE@am__append_3387 = $(nodist_bsd_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_3388 = $(nodist_bsd_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tbsd.marker\n-@COND_i386_pc_TRUE@am__append_3396 = bsd.mod\n-@COND_i386_pc_TRUE@am__append_3397 = bsd.marker\n-@COND_i386_efi_TRUE@am__append_3398 = bsd.module\n-@COND_i386_efi_TRUE@am__append_3399 = bsd.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_3400 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n-@COND_i386_efi_TRUE@am__append_3401 = $(nodist_bsd_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3402 = $(nodist_bsd_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3389 = bsd.mod\n+@COND_i386_pc_TRUE@am__append_3390 = bsd.marker\n+@COND_i386_efi_TRUE@am__append_3391 = bsd.module\n+@COND_i386_efi_TRUE@am__append_3392 = bsd.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_3393 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n+@COND_i386_efi_TRUE@am__append_3394 = $(nodist_bsd_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3395 = $(nodist_bsd_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tbsd.marker\n-@COND_i386_efi_TRUE@am__append_3403 = bsd.mod\n-@COND_i386_efi_TRUE@am__append_3404 = bsd.marker\n-@COND_i386_qemu_TRUE@am__append_3405 = bsd.module\n-@COND_i386_qemu_TRUE@am__append_3406 = bsd.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_3407 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n-@COND_i386_qemu_TRUE@am__append_3408 = $(nodist_bsd_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_3409 = $(nodist_bsd_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_3396 = bsd.mod\n+@COND_i386_efi_TRUE@am__append_3397 = bsd.marker\n+@COND_i386_qemu_TRUE@am__append_3398 = bsd.module\n+@COND_i386_qemu_TRUE@am__append_3399 = bsd.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_3400 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n+@COND_i386_qemu_TRUE@am__append_3401 = $(nodist_bsd_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_3402 = $(nodist_bsd_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tbsd.marker\n-@COND_i386_qemu_TRUE@am__append_3410 = bsd.mod\n-@COND_i386_qemu_TRUE@am__append_3411 = bsd.marker\n-@COND_i386_coreboot_TRUE@am__append_3412 = bsd.module\n-@COND_i386_coreboot_TRUE@am__append_3413 = bsd.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_3414 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n-@COND_i386_coreboot_TRUE@am__append_3415 = $(nodist_bsd_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_3416 =  \\\n+@COND_i386_qemu_TRUE@am__append_3403 = bsd.mod\n+@COND_i386_qemu_TRUE@am__append_3404 = bsd.marker\n+@COND_i386_coreboot_TRUE@am__append_3405 = bsd.module\n+@COND_i386_coreboot_TRUE@am__append_3406 = bsd.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_3407 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n+@COND_i386_coreboot_TRUE@am__append_3408 = $(nodist_bsd_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_3409 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_bsd_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tbsd.marker\n-@COND_i386_coreboot_TRUE@am__append_3417 = bsd.mod\n-@COND_i386_coreboot_TRUE@am__append_3418 = bsd.marker\n-@COND_i386_multiboot_TRUE@am__append_3419 = bsd.module\n-@COND_i386_multiboot_TRUE@am__append_3420 = bsd.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_3421 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n-@COND_i386_multiboot_TRUE@am__append_3422 = $(nodist_bsd_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_3423 =  \\\n+@COND_i386_coreboot_TRUE@am__append_3410 = bsd.mod\n+@COND_i386_coreboot_TRUE@am__append_3411 = bsd.marker\n+@COND_i386_multiboot_TRUE@am__append_3412 = bsd.module\n+@COND_i386_multiboot_TRUE@am__append_3413 = bsd.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_3414 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n+@COND_i386_multiboot_TRUE@am__append_3415 = $(nodist_bsd_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_3416 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_bsd_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tbsd.marker\n-@COND_i386_multiboot_TRUE@am__append_3424 = bsd.mod\n-@COND_i386_multiboot_TRUE@am__append_3425 = bsd.marker\n-@COND_i386_ieee1275_TRUE@am__append_3426 = bsd.module\n-@COND_i386_ieee1275_TRUE@am__append_3427 = bsd.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_3428 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n-@COND_i386_ieee1275_TRUE@am__append_3429 = $(nodist_bsd_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_3430 =  \\\n+@COND_i386_multiboot_TRUE@am__append_3417 = bsd.mod\n+@COND_i386_multiboot_TRUE@am__append_3418 = bsd.marker\n+@COND_i386_ieee1275_TRUE@am__append_3419 = bsd.module\n+@COND_i386_ieee1275_TRUE@am__append_3420 = bsd.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_3421 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n+@COND_i386_ieee1275_TRUE@am__append_3422 = $(nodist_bsd_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_3423 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_bsd_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tbsd.marker\n-@COND_i386_ieee1275_TRUE@am__append_3431 = bsd.mod\n-@COND_i386_ieee1275_TRUE@am__append_3432 = bsd.marker\n-@COND_x86_64_efi_TRUE@am__append_3433 = bsd.module\n-@COND_x86_64_efi_TRUE@am__append_3434 = bsd.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_3435 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n-@COND_x86_64_efi_TRUE@am__append_3436 = $(nodist_bsd_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_3437 = $(nodist_bsd_module_SOURCES) \\\n+@COND_i386_ieee1275_TRUE@am__append_3424 = bsd.mod\n+@COND_i386_ieee1275_TRUE@am__append_3425 = bsd.marker\n+@COND_x86_64_efi_TRUE@am__append_3426 = bsd.module\n+@COND_x86_64_efi_TRUE@am__append_3427 = bsd.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3428 = loader/i386/bsdXX.c loader/i386/bsd_pagetable.c \n+@COND_x86_64_efi_TRUE@am__append_3429 = $(nodist_bsd_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_3430 = $(nodist_bsd_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tbsd.marker\n-@COND_x86_64_efi_TRUE@am__append_3438 = bsd.mod\n-@COND_x86_64_efi_TRUE@am__append_3439 = bsd.marker\n-@COND_i386_pc_TRUE@am__append_3440 = plan9.module linux16.module\n-@COND_i386_pc_TRUE@am__append_3441 = plan9.module$(EXEEXT) \\\n+@COND_x86_64_efi_TRUE@am__append_3431 = bsd.mod\n+@COND_x86_64_efi_TRUE@am__append_3432 = bsd.marker\n+@COND_i386_pc_TRUE@am__append_3433 = plan9.module linux16.module\n+@COND_i386_pc_TRUE@am__append_3434 = plan9.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tlinux16.module$(EXEEXT)\n @COND_i386_pc_FALSE@plan9_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_3442 =\n-@COND_i386_pc_TRUE@am__append_3443 = $(nodist_plan9_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3435 =\n+@COND_i386_pc_TRUE@am__append_3436 = $(nodist_plan9_module_SOURCES) \\\n @COND_i386_pc_TRUE@\t$(nodist_linux16_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_3444 = $(nodist_plan9_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3437 = $(nodist_plan9_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tplan9.marker \\\n @COND_i386_pc_TRUE@\t$(nodist_linux16_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tlinux16.marker\n-@COND_i386_pc_TRUE@am__append_3445 = plan9.mod linux16.mod\n-@COND_i386_pc_TRUE@am__append_3446 = plan9.marker linux16.marker\n+@COND_i386_pc_TRUE@am__append_3438 = plan9.mod linux16.mod\n+@COND_i386_pc_TRUE@am__append_3439 = plan9.marker linux16.marker\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_x86_64_efi_FALSE@linux16_module_DEPENDENCIES =\n-@COND_i386_efi_TRUE@am__append_3447 = linux16.module\n-@COND_i386_efi_TRUE@am__append_3448 = linux16.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_3449 = \n-@COND_i386_efi_TRUE@am__append_3450 = $(nodist_linux16_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3451 =  \\\n+@COND_i386_efi_TRUE@am__append_3440 = linux16.module\n+@COND_i386_efi_TRUE@am__append_3441 = linux16.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_3442 = \n+@COND_i386_efi_TRUE@am__append_3443 = $(nodist_linux16_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3444 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_linux16_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tlinux16.marker\n-@COND_i386_efi_TRUE@am__append_3452 = linux16.mod\n-@COND_i386_efi_TRUE@am__append_3453 = linux16.marker\n-@COND_i386_qemu_TRUE@am__append_3454 = linux16.module\n-@COND_i386_qemu_TRUE@am__append_3455 = linux16.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_3456 = \n-@COND_i386_qemu_TRUE@am__append_3457 = $(nodist_linux16_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_3458 =  \\\n+@COND_i386_efi_TRUE@am__append_3445 = linux16.mod\n+@COND_i386_efi_TRUE@am__append_3446 = linux16.marker\n+@COND_i386_qemu_TRUE@am__append_3447 = linux16.module\n+@COND_i386_qemu_TRUE@am__append_3448 = linux16.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_3449 = \n+@COND_i386_qemu_TRUE@am__append_3450 = $(nodist_linux16_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_3451 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_linux16_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tlinux16.marker\n-@COND_i386_qemu_TRUE@am__append_3459 = linux16.mod\n-@COND_i386_qemu_TRUE@am__append_3460 = linux16.marker\n-@COND_i386_coreboot_TRUE@am__append_3461 = linux16.module\n-@COND_i386_coreboot_TRUE@am__append_3462 = linux16.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_3463 = \n-@COND_i386_coreboot_TRUE@am__append_3464 = $(nodist_linux16_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_3465 =  \\\n+@COND_i386_qemu_TRUE@am__append_3452 = linux16.mod\n+@COND_i386_qemu_TRUE@am__append_3453 = linux16.marker\n+@COND_i386_coreboot_TRUE@am__append_3454 = linux16.module\n+@COND_i386_coreboot_TRUE@am__append_3455 = linux16.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_3456 = \n+@COND_i386_coreboot_TRUE@am__append_3457 = $(nodist_linux16_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_3458 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_linux16_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tlinux16.marker\n-@COND_i386_coreboot_TRUE@am__append_3466 = linux16.mod\n-@COND_i386_coreboot_TRUE@am__append_3467 = linux16.marker\n-@COND_i386_multiboot_TRUE@am__append_3468 = linux16.module\n-@COND_i386_multiboot_TRUE@am__append_3469 = linux16.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_3470 = \n-@COND_i386_multiboot_TRUE@am__append_3471 = $(nodist_linux16_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_3472 =  \\\n+@COND_i386_coreboot_TRUE@am__append_3459 = linux16.mod\n+@COND_i386_coreboot_TRUE@am__append_3460 = linux16.marker\n+@COND_i386_multiboot_TRUE@am__append_3461 = linux16.module\n+@COND_i386_multiboot_TRUE@am__append_3462 = linux16.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_3463 = \n+@COND_i386_multiboot_TRUE@am__append_3464 = $(nodist_linux16_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_3465 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_linux16_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tlinux16.marker\n-@COND_i386_multiboot_TRUE@am__append_3473 = linux16.mod\n-@COND_i386_multiboot_TRUE@am__append_3474 = linux16.marker\n-@COND_i386_ieee1275_TRUE@am__append_3475 = linux16.module\n-@COND_i386_ieee1275_TRUE@am__append_3476 = linux16.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_3477 = \n-@COND_i386_ieee1275_TRUE@am__append_3478 = $(nodist_linux16_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_3479 =  \\\n+@COND_i386_multiboot_TRUE@am__append_3466 = linux16.mod\n+@COND_i386_multiboot_TRUE@am__append_3467 = linux16.marker\n+@COND_i386_ieee1275_TRUE@am__append_3468 = linux16.module\n+@COND_i386_ieee1275_TRUE@am__append_3469 = linux16.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_3470 = \n+@COND_i386_ieee1275_TRUE@am__append_3471 = $(nodist_linux16_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_3472 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_linux16_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tlinux16.marker\n-@COND_i386_ieee1275_TRUE@am__append_3480 = linux16.mod\n-@COND_i386_ieee1275_TRUE@am__append_3481 = linux16.marker\n-@COND_x86_64_efi_TRUE@am__append_3482 = linux16.module\n-@COND_x86_64_efi_TRUE@am__append_3483 = linux16.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_3484 = \n-@COND_x86_64_efi_TRUE@am__append_3485 = $(nodist_linux16_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_3486 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_3473 = linux16.mod\n+@COND_i386_ieee1275_TRUE@am__append_3474 = linux16.marker\n+@COND_x86_64_efi_TRUE@am__append_3475 = linux16.module\n+@COND_x86_64_efi_TRUE@am__append_3476 = linux16.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3477 = \n+@COND_x86_64_efi_TRUE@am__append_3478 = $(nodist_linux16_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_3479 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_linux16_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tlinux16.marker\n-@COND_x86_64_efi_TRUE@am__append_3487 = linux16.mod\n-@COND_x86_64_efi_TRUE@am__append_3488 = linux16.marker\n-@COND_i386_pc_TRUE@am__append_3489 = ntldr.module truecrypt.module \\\n+@COND_x86_64_efi_TRUE@am__append_3480 = linux16.mod\n+@COND_x86_64_efi_TRUE@am__append_3481 = linux16.marker\n+@COND_i386_pc_TRUE@am__append_3482 = ntldr.module truecrypt.module \\\n @COND_i386_pc_TRUE@\tfreedos.module pxechain.module \\\n @COND_i386_pc_TRUE@\tmultiboot2.module\n-@COND_i386_pc_TRUE@am__append_3490 = ntldr.module$(EXEEXT) \\\n+@COND_i386_pc_TRUE@am__append_3483 = ntldr.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\ttruecrypt.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tfreedos.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tpxechain.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tmultiboot2.module$(EXEEXT)\n @COND_i386_pc_FALSE@ntldr_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_3491 =\n-@COND_i386_pc_TRUE@am__append_3492 = $(nodist_ntldr_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3484 =\n+@COND_i386_pc_TRUE@am__append_3485 = $(nodist_ntldr_module_SOURCES) \\\n @COND_i386_pc_TRUE@\t$(nodist_truecrypt_module_SOURCES) \\\n @COND_i386_pc_TRUE@\t$(nodist_freedos_module_SOURCES) \\\n @COND_i386_pc_TRUE@\t$(nodist_pxechain_module_SOURCES) \\\n @COND_i386_pc_TRUE@\t$(nodist_multiboot2_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_3493 = $(nodist_ntldr_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3486 = $(nodist_ntldr_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tntldr.marker \\\n @COND_i386_pc_TRUE@\t$(nodist_truecrypt_module_SOURCES) \\\n @COND_i386_pc_TRUE@\ttruecrypt.marker \\\n@@ -4863,2969 +4853,2969 @@ TESTS =\n @COND_i386_pc_TRUE@\tpxechain.marker \\\n @COND_i386_pc_TRUE@\t$(nodist_multiboot2_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tmultiboot2.marker\n-@COND_i386_pc_TRUE@am__append_3494 = ntldr.mod truecrypt.mod \\\n+@COND_i386_pc_TRUE@am__append_3487 = ntldr.mod truecrypt.mod \\\n @COND_i386_pc_TRUE@\tfreedos.mod pxechain.mod multiboot2.mod\n-@COND_i386_pc_TRUE@am__append_3495 = ntldr.marker truecrypt.marker \\\n+@COND_i386_pc_TRUE@am__append_3488 = ntldr.marker truecrypt.marker \\\n @COND_i386_pc_TRUE@\tfreedos.marker pxechain.marker \\\n @COND_i386_pc_TRUE@\tmultiboot2.marker\n @COND_i386_pc_FALSE@truecrypt_module_DEPENDENCIES =\n @COND_i386_pc_FALSE@freedos_module_DEPENDENCIES =\n @COND_i386_pc_FALSE@pxechain_module_DEPENDENCIES =\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_pvh_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_x86_64_efi_FALSE@multiboot2_module_DEPENDENCIES =\n-@COND_i386_efi_TRUE@am__append_3496 = multiboot2.module\n-@COND_i386_efi_TRUE@am__append_3497 = multiboot2.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_3498 = \n-@COND_i386_efi_TRUE@am__append_3499 = $(nodist_multiboot2_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3500 =  \\\n+@COND_i386_efi_TRUE@am__append_3489 = multiboot2.module\n+@COND_i386_efi_TRUE@am__append_3490 = multiboot2.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_3491 = \n+@COND_i386_efi_TRUE@am__append_3492 = $(nodist_multiboot2_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3493 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_multiboot2_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tmultiboot2.marker\n-@COND_i386_efi_TRUE@am__append_3501 = multiboot2.mod\n-@COND_i386_efi_TRUE@am__append_3502 = multiboot2.marker\n-@COND_i386_qemu_TRUE@am__append_3503 = multiboot2.module\n-@COND_i386_qemu_TRUE@am__append_3504 = multiboot2.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_3505 = \n-@COND_i386_qemu_TRUE@am__append_3506 = $(nodist_multiboot2_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_3507 =  \\\n+@COND_i386_efi_TRUE@am__append_3494 = multiboot2.mod\n+@COND_i386_efi_TRUE@am__append_3495 = multiboot2.marker\n+@COND_i386_qemu_TRUE@am__append_3496 = multiboot2.module\n+@COND_i386_qemu_TRUE@am__append_3497 = multiboot2.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_3498 = \n+@COND_i386_qemu_TRUE@am__append_3499 = $(nodist_multiboot2_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_3500 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_multiboot2_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tmultiboot2.marker\n-@COND_i386_qemu_TRUE@am__append_3508 = multiboot2.mod\n-@COND_i386_qemu_TRUE@am__append_3509 = multiboot2.marker\n-@COND_i386_coreboot_TRUE@am__append_3510 = multiboot2.module\n-@COND_i386_coreboot_TRUE@am__append_3511 = multiboot2.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_3512 = \n-@COND_i386_coreboot_TRUE@am__append_3513 = $(nodist_multiboot2_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_3514 =  \\\n+@COND_i386_qemu_TRUE@am__append_3501 = multiboot2.mod\n+@COND_i386_qemu_TRUE@am__append_3502 = multiboot2.marker\n+@COND_i386_coreboot_TRUE@am__append_3503 = multiboot2.module\n+@COND_i386_coreboot_TRUE@am__append_3504 = multiboot2.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_3505 = \n+@COND_i386_coreboot_TRUE@am__append_3506 = $(nodist_multiboot2_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_3507 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_multiboot2_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tmultiboot2.marker\n-@COND_i386_coreboot_TRUE@am__append_3515 = multiboot2.mod\n-@COND_i386_coreboot_TRUE@am__append_3516 = multiboot2.marker\n-@COND_i386_multiboot_TRUE@am__append_3517 = multiboot2.module\n-@COND_i386_multiboot_TRUE@am__append_3518 = multiboot2.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_3519 = \n-@COND_i386_multiboot_TRUE@am__append_3520 = $(nodist_multiboot2_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_3521 =  \\\n+@COND_i386_coreboot_TRUE@am__append_3508 = multiboot2.mod\n+@COND_i386_coreboot_TRUE@am__append_3509 = multiboot2.marker\n+@COND_i386_multiboot_TRUE@am__append_3510 = multiboot2.module\n+@COND_i386_multiboot_TRUE@am__append_3511 = multiboot2.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_3512 = \n+@COND_i386_multiboot_TRUE@am__append_3513 = $(nodist_multiboot2_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_3514 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_multiboot2_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tmultiboot2.marker\n-@COND_i386_multiboot_TRUE@am__append_3522 = multiboot2.mod\n-@COND_i386_multiboot_TRUE@am__append_3523 = multiboot2.marker\n-@COND_i386_ieee1275_TRUE@am__append_3524 = multiboot2.module\n-@COND_i386_ieee1275_TRUE@am__append_3525 = multiboot2.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_3526 = \n-@COND_i386_ieee1275_TRUE@am__append_3527 = $(nodist_multiboot2_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_3528 =  \\\n+@COND_i386_multiboot_TRUE@am__append_3515 = multiboot2.mod\n+@COND_i386_multiboot_TRUE@am__append_3516 = multiboot2.marker\n+@COND_i386_ieee1275_TRUE@am__append_3517 = multiboot2.module\n+@COND_i386_ieee1275_TRUE@am__append_3518 = multiboot2.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_3519 = \n+@COND_i386_ieee1275_TRUE@am__append_3520 = $(nodist_multiboot2_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_3521 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_multiboot2_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tmultiboot2.marker\n-@COND_i386_ieee1275_TRUE@am__append_3529 = multiboot2.mod\n-@COND_i386_ieee1275_TRUE@am__append_3530 = multiboot2.marker\n-@COND_x86_64_efi_TRUE@am__append_3531 = multiboot2.module\n-@COND_x86_64_efi_TRUE@am__append_3532 = multiboot2.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_3533 = \n-@COND_x86_64_efi_TRUE@am__append_3534 = $(nodist_multiboot2_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_3535 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_3522 = multiboot2.mod\n+@COND_i386_ieee1275_TRUE@am__append_3523 = multiboot2.marker\n+@COND_x86_64_efi_TRUE@am__append_3524 = multiboot2.module\n+@COND_x86_64_efi_TRUE@am__append_3525 = multiboot2.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3526 = \n+@COND_x86_64_efi_TRUE@am__append_3527 = $(nodist_multiboot2_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_3528 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_multiboot2_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tmultiboot2.marker\n-@COND_x86_64_efi_TRUE@am__append_3536 = multiboot2.mod\n-@COND_x86_64_efi_TRUE@am__append_3537 = multiboot2.marker\n-@COND_i386_xen_pvh_TRUE@am__append_3538 = multiboot2.module\n-@COND_i386_xen_pvh_TRUE@am__append_3539 = multiboot2.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_3540 = \n-@COND_i386_xen_pvh_TRUE@am__append_3541 = $(nodist_multiboot2_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_3542 =  \\\n+@COND_x86_64_efi_TRUE@am__append_3529 = multiboot2.mod\n+@COND_x86_64_efi_TRUE@am__append_3530 = multiboot2.marker\n+@COND_i386_xen_pvh_TRUE@am__append_3531 = multiboot2.module\n+@COND_i386_xen_pvh_TRUE@am__append_3532 = multiboot2.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_3533 = \n+@COND_i386_xen_pvh_TRUE@am__append_3534 = $(nodist_multiboot2_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_3535 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_multiboot2_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tmultiboot2.marker\n-@COND_i386_xen_pvh_TRUE@am__append_3543 = multiboot2.mod\n-@COND_i386_xen_pvh_TRUE@am__append_3544 = multiboot2.marker\n-@COND_mips_loongson_TRUE@am__append_3545 = multiboot2.module\n-@COND_mips_loongson_TRUE@am__append_3546 = multiboot2.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_3547 = \n-@COND_mips_loongson_TRUE@am__append_3548 = $(nodist_multiboot2_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_3549 =  \\\n+@COND_i386_xen_pvh_TRUE@am__append_3536 = multiboot2.mod\n+@COND_i386_xen_pvh_TRUE@am__append_3537 = multiboot2.marker\n+@COND_mips_loongson_TRUE@am__append_3538 = multiboot2.module\n+@COND_mips_loongson_TRUE@am__append_3539 = multiboot2.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_3540 = \n+@COND_mips_loongson_TRUE@am__append_3541 = $(nodist_multiboot2_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_3542 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_multiboot2_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tmultiboot2.marker\n-@COND_mips_loongson_TRUE@am__append_3550 = multiboot2.mod\n-@COND_mips_loongson_TRUE@am__append_3551 = multiboot2.marker\n-@COND_mips_arc_TRUE@am__append_3552 = multiboot2.module\n-@COND_mips_arc_TRUE@am__append_3553 = multiboot2.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__append_3554 = \n-@COND_mips_arc_TRUE@am__append_3555 = $(nodist_multiboot2_module_SOURCES)\n-@COND_mips_arc_TRUE@am__append_3556 =  \\\n+@COND_mips_loongson_TRUE@am__append_3543 = multiboot2.mod\n+@COND_mips_loongson_TRUE@am__append_3544 = multiboot2.marker\n+@COND_mips_arc_TRUE@am__append_3545 = multiboot2.module\n+@COND_mips_arc_TRUE@am__append_3546 = multiboot2.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__append_3547 = \n+@COND_mips_arc_TRUE@am__append_3548 = $(nodist_multiboot2_module_SOURCES)\n+@COND_mips_arc_TRUE@am__append_3549 =  \\\n @COND_mips_arc_TRUE@\t$(nodist_multiboot2_module_SOURCES) \\\n @COND_mips_arc_TRUE@\tmultiboot2.marker\n-@COND_mips_arc_TRUE@am__append_3557 = multiboot2.mod\n-@COND_mips_arc_TRUE@am__append_3558 = multiboot2.marker\n-@COND_mips_qemu_mips_TRUE@am__append_3559 = multiboot2.module\n-@COND_mips_qemu_mips_TRUE@am__append_3560 = multiboot2.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_3561 = \n-@COND_mips_qemu_mips_TRUE@am__append_3562 = $(nodist_multiboot2_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_3563 =  \\\n+@COND_mips_arc_TRUE@am__append_3550 = multiboot2.mod\n+@COND_mips_arc_TRUE@am__append_3551 = multiboot2.marker\n+@COND_mips_qemu_mips_TRUE@am__append_3552 = multiboot2.module\n+@COND_mips_qemu_mips_TRUE@am__append_3553 = multiboot2.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_3554 = \n+@COND_mips_qemu_mips_TRUE@am__append_3555 = $(nodist_multiboot2_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_3556 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_multiboot2_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tmultiboot2.marker\n-@COND_mips_qemu_mips_TRUE@am__append_3564 = multiboot2.mod\n-@COND_mips_qemu_mips_TRUE@am__append_3565 = multiboot2.marker\n-@COND_i386_pc_TRUE@am__append_3566 = multiboot.module\n-@COND_i386_pc_TRUE@am__append_3567 = multiboot.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_3557 = multiboot2.mod\n+@COND_mips_qemu_mips_TRUE@am__append_3558 = multiboot2.marker\n+@COND_i386_pc_TRUE@am__append_3559 = multiboot.module\n+@COND_i386_pc_TRUE@am__append_3560 = multiboot.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_pvh_FALSE@@COND_x86_64_efi_FALSE@multiboot_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_3568 = loader/multiboot_elfxx.c \n-@COND_i386_pc_TRUE@am__append_3569 = $(nodist_multiboot_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_3570 =  \\\n+@COND_i386_pc_TRUE@am__append_3561 = loader/multiboot_elfxx.c \n+@COND_i386_pc_TRUE@am__append_3562 = $(nodist_multiboot_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_3563 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_multiboot_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tmultiboot.marker\n-@COND_i386_pc_TRUE@am__append_3571 = multiboot.mod\n-@COND_i386_pc_TRUE@am__append_3572 = multiboot.marker\n-@COND_i386_efi_TRUE@am__append_3573 = multiboot.module\n-@COND_i386_efi_TRUE@am__append_3574 = multiboot.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_3575 = loader/multiboot_elfxx.c \n-@COND_i386_efi_TRUE@am__append_3576 = $(nodist_multiboot_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3577 =  \\\n+@COND_i386_pc_TRUE@am__append_3564 = multiboot.mod\n+@COND_i386_pc_TRUE@am__append_3565 = multiboot.marker\n+@COND_i386_efi_TRUE@am__append_3566 = multiboot.module\n+@COND_i386_efi_TRUE@am__append_3567 = multiboot.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_3568 = loader/multiboot_elfxx.c \n+@COND_i386_efi_TRUE@am__append_3569 = $(nodist_multiboot_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3570 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_multiboot_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tmultiboot.marker\n-@COND_i386_efi_TRUE@am__append_3578 = multiboot.mod\n-@COND_i386_efi_TRUE@am__append_3579 = multiboot.marker\n-@COND_i386_qemu_TRUE@am__append_3580 = multiboot.module\n-@COND_i386_qemu_TRUE@am__append_3581 = multiboot.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_3582 = loader/multiboot_elfxx.c \n-@COND_i386_qemu_TRUE@am__append_3583 = $(nodist_multiboot_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_3584 =  \\\n+@COND_i386_efi_TRUE@am__append_3571 = multiboot.mod\n+@COND_i386_efi_TRUE@am__append_3572 = multiboot.marker\n+@COND_i386_qemu_TRUE@am__append_3573 = multiboot.module\n+@COND_i386_qemu_TRUE@am__append_3574 = multiboot.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_3575 = loader/multiboot_elfxx.c \n+@COND_i386_qemu_TRUE@am__append_3576 = $(nodist_multiboot_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_3577 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_multiboot_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tmultiboot.marker\n-@COND_i386_qemu_TRUE@am__append_3585 = multiboot.mod\n-@COND_i386_qemu_TRUE@am__append_3586 = multiboot.marker\n-@COND_i386_coreboot_TRUE@am__append_3587 = multiboot.module\n-@COND_i386_coreboot_TRUE@am__append_3588 = multiboot.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_3589 = loader/multiboot_elfxx.c \n-@COND_i386_coreboot_TRUE@am__append_3590 = $(nodist_multiboot_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_3591 =  \\\n+@COND_i386_qemu_TRUE@am__append_3578 = multiboot.mod\n+@COND_i386_qemu_TRUE@am__append_3579 = multiboot.marker\n+@COND_i386_coreboot_TRUE@am__append_3580 = multiboot.module\n+@COND_i386_coreboot_TRUE@am__append_3581 = multiboot.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_3582 = loader/multiboot_elfxx.c \n+@COND_i386_coreboot_TRUE@am__append_3583 = $(nodist_multiboot_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_3584 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_multiboot_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tmultiboot.marker\n-@COND_i386_coreboot_TRUE@am__append_3592 = multiboot.mod\n-@COND_i386_coreboot_TRUE@am__append_3593 = multiboot.marker\n-@COND_i386_multiboot_TRUE@am__append_3594 = multiboot.module\n-@COND_i386_multiboot_TRUE@am__append_3595 = multiboot.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_3596 = loader/multiboot_elfxx.c \n-@COND_i386_multiboot_TRUE@am__append_3597 = $(nodist_multiboot_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_3598 =  \\\n+@COND_i386_coreboot_TRUE@am__append_3585 = multiboot.mod\n+@COND_i386_coreboot_TRUE@am__append_3586 = multiboot.marker\n+@COND_i386_multiboot_TRUE@am__append_3587 = multiboot.module\n+@COND_i386_multiboot_TRUE@am__append_3588 = multiboot.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_3589 = loader/multiboot_elfxx.c \n+@COND_i386_multiboot_TRUE@am__append_3590 = $(nodist_multiboot_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_3591 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_multiboot_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tmultiboot.marker\n-@COND_i386_multiboot_TRUE@am__append_3599 = multiboot.mod\n-@COND_i386_multiboot_TRUE@am__append_3600 = multiboot.marker\n-@COND_i386_ieee1275_TRUE@am__append_3601 = multiboot.module\n-@COND_i386_ieee1275_TRUE@am__append_3602 = multiboot.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_3603 = loader/multiboot_elfxx.c \n-@COND_i386_ieee1275_TRUE@am__append_3604 = $(nodist_multiboot_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_3605 =  \\\n+@COND_i386_multiboot_TRUE@am__append_3592 = multiboot.mod\n+@COND_i386_multiboot_TRUE@am__append_3593 = multiboot.marker\n+@COND_i386_ieee1275_TRUE@am__append_3594 = multiboot.module\n+@COND_i386_ieee1275_TRUE@am__append_3595 = multiboot.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_3596 = loader/multiboot_elfxx.c \n+@COND_i386_ieee1275_TRUE@am__append_3597 = $(nodist_multiboot_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_3598 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_multiboot_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tmultiboot.marker\n-@COND_i386_ieee1275_TRUE@am__append_3606 = multiboot.mod\n-@COND_i386_ieee1275_TRUE@am__append_3607 = multiboot.marker\n-@COND_x86_64_efi_TRUE@am__append_3608 = multiboot.module\n-@COND_x86_64_efi_TRUE@am__append_3609 = multiboot.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_3610 = loader/multiboot_elfxx.c \n-@COND_x86_64_efi_TRUE@am__append_3611 = $(nodist_multiboot_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_3612 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_3599 = multiboot.mod\n+@COND_i386_ieee1275_TRUE@am__append_3600 = multiboot.marker\n+@COND_x86_64_efi_TRUE@am__append_3601 = multiboot.module\n+@COND_x86_64_efi_TRUE@am__append_3602 = multiboot.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3603 = loader/multiboot_elfxx.c \n+@COND_x86_64_efi_TRUE@am__append_3604 = $(nodist_multiboot_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_3605 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_multiboot_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tmultiboot.marker\n-@COND_x86_64_efi_TRUE@am__append_3613 = multiboot.mod\n-@COND_x86_64_efi_TRUE@am__append_3614 = multiboot.marker\n-@COND_i386_xen_pvh_TRUE@am__append_3615 = multiboot.module\n-@COND_i386_xen_pvh_TRUE@am__append_3616 = multiboot.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_3617 = loader/multiboot_elfxx.c \n-@COND_i386_xen_pvh_TRUE@am__append_3618 = $(nodist_multiboot_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_3619 =  \\\n+@COND_x86_64_efi_TRUE@am__append_3606 = multiboot.mod\n+@COND_x86_64_efi_TRUE@am__append_3607 = multiboot.marker\n+@COND_i386_xen_pvh_TRUE@am__append_3608 = multiboot.module\n+@COND_i386_xen_pvh_TRUE@am__append_3609 = multiboot.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_3610 = loader/multiboot_elfxx.c \n+@COND_i386_xen_pvh_TRUE@am__append_3611 = $(nodist_multiboot_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_3612 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_multiboot_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tmultiboot.marker\n-@COND_i386_xen_pvh_TRUE@am__append_3620 = multiboot.mod\n-@COND_i386_xen_pvh_TRUE@am__append_3621 = multiboot.marker\n-@COND_arm64_efi_TRUE@am__append_3622 = xen_boot.module\n-@COND_arm64_efi_TRUE@am__append_3623 = xen_boot.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_3613 = multiboot.mod\n+@COND_i386_xen_pvh_TRUE@am__append_3614 = multiboot.marker\n+@COND_arm64_efi_TRUE@am__append_3615 = xen_boot.module\n+@COND_arm64_efi_TRUE@am__append_3616 = xen_boot.module$(EXEEXT)\n @COND_arm64_efi_FALSE@xen_boot_module_DEPENDENCIES =\n-@COND_arm64_efi_TRUE@am__append_3624 = \n-@COND_arm64_efi_TRUE@am__append_3625 = $(nodist_xen_boot_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_3626 =  \\\n+@COND_arm64_efi_TRUE@am__append_3617 = \n+@COND_arm64_efi_TRUE@am__append_3618 = $(nodist_xen_boot_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_3619 =  \\\n @COND_arm64_efi_TRUE@\t$(nodist_xen_boot_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\txen_boot.marker\n-@COND_arm64_efi_TRUE@am__append_3627 = xen_boot.mod\n-@COND_arm64_efi_TRUE@am__append_3628 = xen_boot.marker\n-@COND_i386_pc_TRUE@am__append_3629 = linux.module\n-@COND_i386_pc_TRUE@am__append_3630 = linux.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_3620 = xen_boot.mod\n+@COND_arm64_efi_TRUE@am__append_3621 = xen_boot.marker\n+@COND_i386_pc_TRUE@am__append_3622 = linux.module\n+@COND_i386_pc_TRUE@am__append_3623 = linux.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@linux_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_3631 = \n-@COND_i386_pc_TRUE@am__append_3632 = $(nodist_linux_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_3633 = $(nodist_linux_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3624 = \n+@COND_i386_pc_TRUE@am__append_3625 = $(nodist_linux_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_3626 = $(nodist_linux_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tlinux.marker\n-@COND_i386_pc_TRUE@am__append_3634 = linux.mod\n-@COND_i386_pc_TRUE@am__append_3635 = linux.marker\n-@COND_i386_efi_TRUE@am__append_3636 = linux.module\n-@COND_i386_efi_TRUE@am__append_3637 = linux.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_3638 = \n-@COND_i386_efi_TRUE@am__append_3639 = $(nodist_linux_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3640 = $(nodist_linux_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3627 = linux.mod\n+@COND_i386_pc_TRUE@am__append_3628 = linux.marker\n+@COND_i386_efi_TRUE@am__append_3629 = linux.module\n+@COND_i386_efi_TRUE@am__append_3630 = linux.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_3631 = \n+@COND_i386_efi_TRUE@am__append_3632 = $(nodist_linux_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3633 = $(nodist_linux_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tlinux.marker\n-@COND_i386_efi_TRUE@am__append_3641 = linux.mod\n-@COND_i386_efi_TRUE@am__append_3642 = linux.marker\n-@COND_i386_qemu_TRUE@am__append_3643 = linux.module\n-@COND_i386_qemu_TRUE@am__append_3644 = linux.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_3645 = \n-@COND_i386_qemu_TRUE@am__append_3646 = $(nodist_linux_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_3647 = $(nodist_linux_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_3634 = linux.mod\n+@COND_i386_efi_TRUE@am__append_3635 = linux.marker\n+@COND_i386_qemu_TRUE@am__append_3636 = linux.module\n+@COND_i386_qemu_TRUE@am__append_3637 = linux.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_3638 = \n+@COND_i386_qemu_TRUE@am__append_3639 = $(nodist_linux_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_3640 = $(nodist_linux_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tlinux.marker\n-@COND_i386_qemu_TRUE@am__append_3648 = linux.mod\n-@COND_i386_qemu_TRUE@am__append_3649 = linux.marker\n-@COND_i386_coreboot_TRUE@am__append_3650 = linux.module\n-@COND_i386_coreboot_TRUE@am__append_3651 = linux.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_3652 = \n-@COND_i386_coreboot_TRUE@am__append_3653 = $(nodist_linux_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_3654 =  \\\n+@COND_i386_qemu_TRUE@am__append_3641 = linux.mod\n+@COND_i386_qemu_TRUE@am__append_3642 = linux.marker\n+@COND_i386_coreboot_TRUE@am__append_3643 = linux.module\n+@COND_i386_coreboot_TRUE@am__append_3644 = linux.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_3645 = \n+@COND_i386_coreboot_TRUE@am__append_3646 = $(nodist_linux_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_3647 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tlinux.marker\n-@COND_i386_coreboot_TRUE@am__append_3655 = linux.mod\n-@COND_i386_coreboot_TRUE@am__append_3656 = linux.marker\n-@COND_i386_multiboot_TRUE@am__append_3657 = linux.module\n-@COND_i386_multiboot_TRUE@am__append_3658 = linux.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_3659 = \n-@COND_i386_multiboot_TRUE@am__append_3660 = $(nodist_linux_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_3661 =  \\\n+@COND_i386_coreboot_TRUE@am__append_3648 = linux.mod\n+@COND_i386_coreboot_TRUE@am__append_3649 = linux.marker\n+@COND_i386_multiboot_TRUE@am__append_3650 = linux.module\n+@COND_i386_multiboot_TRUE@am__append_3651 = linux.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_3652 = \n+@COND_i386_multiboot_TRUE@am__append_3653 = $(nodist_linux_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_3654 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tlinux.marker\n-@COND_i386_multiboot_TRUE@am__append_3662 = linux.mod\n-@COND_i386_multiboot_TRUE@am__append_3663 = linux.marker\n-@COND_i386_ieee1275_TRUE@am__append_3664 = linux.module\n-@COND_i386_ieee1275_TRUE@am__append_3665 = linux.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_3666 = \n-@COND_i386_ieee1275_TRUE@am__append_3667 = $(nodist_linux_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_3668 =  \\\n+@COND_i386_multiboot_TRUE@am__append_3655 = linux.mod\n+@COND_i386_multiboot_TRUE@am__append_3656 = linux.marker\n+@COND_i386_ieee1275_TRUE@am__append_3657 = linux.module\n+@COND_i386_ieee1275_TRUE@am__append_3658 = linux.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_3659 = \n+@COND_i386_ieee1275_TRUE@am__append_3660 = $(nodist_linux_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_3661 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tlinux.marker\n-@COND_i386_ieee1275_TRUE@am__append_3669 = linux.mod\n-@COND_i386_ieee1275_TRUE@am__append_3670 = linux.marker\n-@COND_x86_64_efi_TRUE@am__append_3671 = linux.module\n-@COND_x86_64_efi_TRUE@am__append_3672 = linux.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_3673 = \n-@COND_x86_64_efi_TRUE@am__append_3674 = $(nodist_linux_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_3675 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_3662 = linux.mod\n+@COND_i386_ieee1275_TRUE@am__append_3663 = linux.marker\n+@COND_x86_64_efi_TRUE@am__append_3664 = linux.module\n+@COND_x86_64_efi_TRUE@am__append_3665 = linux.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3666 = \n+@COND_x86_64_efi_TRUE@am__append_3667 = $(nodist_linux_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_3668 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tlinux.marker\n-@COND_x86_64_efi_TRUE@am__append_3676 = linux.mod\n-@COND_x86_64_efi_TRUE@am__append_3677 = linux.marker\n-@COND_i386_xen_TRUE@am__append_3678 = linux.module\n-@COND_i386_xen_TRUE@am__append_3679 = linux.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__append_3680 = \n-@COND_i386_xen_TRUE@am__append_3681 = $(nodist_linux_module_SOURCES)\n-@COND_i386_xen_TRUE@am__append_3682 = $(nodist_linux_module_SOURCES) \\\n+@COND_x86_64_efi_TRUE@am__append_3669 = linux.mod\n+@COND_x86_64_efi_TRUE@am__append_3670 = linux.marker\n+@COND_i386_xen_TRUE@am__append_3671 = linux.module\n+@COND_i386_xen_TRUE@am__append_3672 = linux.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__append_3673 = \n+@COND_i386_xen_TRUE@am__append_3674 = $(nodist_linux_module_SOURCES)\n+@COND_i386_xen_TRUE@am__append_3675 = $(nodist_linux_module_SOURCES) \\\n @COND_i386_xen_TRUE@\tlinux.marker\n-@COND_i386_xen_TRUE@am__append_3683 = linux.mod\n-@COND_i386_xen_TRUE@am__append_3684 = linux.marker\n-@COND_x86_64_xen_TRUE@am__append_3685 = linux.module\n-@COND_x86_64_xen_TRUE@am__append_3686 = linux.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__append_3687 = \n-@COND_x86_64_xen_TRUE@am__append_3688 = $(nodist_linux_module_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_3689 =  \\\n+@COND_i386_xen_TRUE@am__append_3676 = linux.mod\n+@COND_i386_xen_TRUE@am__append_3677 = linux.marker\n+@COND_x86_64_xen_TRUE@am__append_3678 = linux.module\n+@COND_x86_64_xen_TRUE@am__append_3679 = linux.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__append_3680 = \n+@COND_x86_64_xen_TRUE@am__append_3681 = $(nodist_linux_module_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_3682 =  \\\n @COND_x86_64_xen_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_x86_64_xen_TRUE@\tlinux.marker\n-@COND_x86_64_xen_TRUE@am__append_3690 = linux.mod\n-@COND_x86_64_xen_TRUE@am__append_3691 = linux.marker\n-@COND_i386_xen_pvh_TRUE@am__append_3692 = linux.module\n-@COND_i386_xen_pvh_TRUE@am__append_3693 = linux.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_3694 = \n-@COND_i386_xen_pvh_TRUE@am__append_3695 = $(nodist_linux_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_3696 =  \\\n+@COND_x86_64_xen_TRUE@am__append_3683 = linux.mod\n+@COND_x86_64_xen_TRUE@am__append_3684 = linux.marker\n+@COND_i386_xen_pvh_TRUE@am__append_3685 = linux.module\n+@COND_i386_xen_pvh_TRUE@am__append_3686 = linux.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_3687 = \n+@COND_i386_xen_pvh_TRUE@am__append_3688 = $(nodist_linux_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_3689 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tlinux.marker\n-@COND_i386_xen_pvh_TRUE@am__append_3697 = linux.mod\n-@COND_i386_xen_pvh_TRUE@am__append_3698 = linux.marker\n-@COND_mips_loongson_TRUE@am__append_3699 = linux.module\n-@COND_mips_loongson_TRUE@am__append_3700 = linux.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_3701 = \n-@COND_mips_loongson_TRUE@am__append_3702 = $(nodist_linux_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_3703 =  \\\n+@COND_i386_xen_pvh_TRUE@am__append_3690 = linux.mod\n+@COND_i386_xen_pvh_TRUE@am__append_3691 = linux.marker\n+@COND_mips_loongson_TRUE@am__append_3692 = linux.module\n+@COND_mips_loongson_TRUE@am__append_3693 = linux.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_3694 = \n+@COND_mips_loongson_TRUE@am__append_3695 = $(nodist_linux_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_3696 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tlinux.marker\n-@COND_mips_loongson_TRUE@am__append_3704 = linux.mod\n-@COND_mips_loongson_TRUE@am__append_3705 = linux.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_3706 = linux.module\n-@COND_sparc64_ieee1275_TRUE@am__append_3707 = linux.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__append_3708 = \n-@COND_sparc64_ieee1275_TRUE@am__append_3709 = $(nodist_linux_module_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_3710 =  \\\n+@COND_mips_loongson_TRUE@am__append_3697 = linux.mod\n+@COND_mips_loongson_TRUE@am__append_3698 = linux.marker\n+@COND_sparc64_ieee1275_TRUE@am__append_3699 = linux.module\n+@COND_sparc64_ieee1275_TRUE@am__append_3700 = linux.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__append_3701 = \n+@COND_sparc64_ieee1275_TRUE@am__append_3702 = $(nodist_linux_module_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_3703 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tlinux.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_3711 = linux.mod\n-@COND_sparc64_ieee1275_TRUE@am__append_3712 = linux.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_3713 = linux.module\n-@COND_powerpc_ieee1275_TRUE@am__append_3714 = linux.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__append_3715 = \n-@COND_powerpc_ieee1275_TRUE@am__append_3716 = $(nodist_linux_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_3717 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__append_3704 = linux.mod\n+@COND_sparc64_ieee1275_TRUE@am__append_3705 = linux.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_3706 = linux.module\n+@COND_powerpc_ieee1275_TRUE@am__append_3707 = linux.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_3708 = \n+@COND_powerpc_ieee1275_TRUE@am__append_3709 = $(nodist_linux_module_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_3710 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tlinux.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_3718 = linux.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_3719 = linux.marker\n-@COND_mips_arc_TRUE@am__append_3720 = linux.module\n-@COND_mips_arc_TRUE@am__append_3721 = linux.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__append_3722 = \n-@COND_mips_arc_TRUE@am__append_3723 = $(nodist_linux_module_SOURCES)\n-@COND_mips_arc_TRUE@am__append_3724 = $(nodist_linux_module_SOURCES) \\\n+@COND_powerpc_ieee1275_TRUE@am__append_3711 = linux.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_3712 = linux.marker\n+@COND_mips_arc_TRUE@am__append_3713 = linux.module\n+@COND_mips_arc_TRUE@am__append_3714 = linux.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__append_3715 = \n+@COND_mips_arc_TRUE@am__append_3716 = $(nodist_linux_module_SOURCES)\n+@COND_mips_arc_TRUE@am__append_3717 = $(nodist_linux_module_SOURCES) \\\n @COND_mips_arc_TRUE@\tlinux.marker\n-@COND_mips_arc_TRUE@am__append_3725 = linux.mod\n-@COND_mips_arc_TRUE@am__append_3726 = linux.marker\n-@COND_ia64_efi_TRUE@am__append_3727 = linux.module\n-@COND_ia64_efi_TRUE@am__append_3728 = linux.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_3729 = \n-@COND_ia64_efi_TRUE@am__append_3730 = $(nodist_linux_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_3731 = $(nodist_linux_module_SOURCES) \\\n+@COND_mips_arc_TRUE@am__append_3718 = linux.mod\n+@COND_mips_arc_TRUE@am__append_3719 = linux.marker\n+@COND_ia64_efi_TRUE@am__append_3720 = linux.module\n+@COND_ia64_efi_TRUE@am__append_3721 = linux.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_3722 = \n+@COND_ia64_efi_TRUE@am__append_3723 = $(nodist_linux_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_3724 = $(nodist_linux_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tlinux.marker\n-@COND_ia64_efi_TRUE@am__append_3732 = linux.mod\n-@COND_ia64_efi_TRUE@am__append_3733 = linux.marker\n-@COND_mips_qemu_mips_TRUE@am__append_3734 = linux.module\n-@COND_mips_qemu_mips_TRUE@am__append_3735 = linux.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_3736 = \n-@COND_mips_qemu_mips_TRUE@am__append_3737 = $(nodist_linux_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_3738 =  \\\n+@COND_ia64_efi_TRUE@am__append_3725 = linux.mod\n+@COND_ia64_efi_TRUE@am__append_3726 = linux.marker\n+@COND_mips_qemu_mips_TRUE@am__append_3727 = linux.module\n+@COND_mips_qemu_mips_TRUE@am__append_3728 = linux.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_3729 = \n+@COND_mips_qemu_mips_TRUE@am__append_3730 = $(nodist_linux_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_3731 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tlinux.marker\n-@COND_mips_qemu_mips_TRUE@am__append_3739 = linux.mod\n-@COND_mips_qemu_mips_TRUE@am__append_3740 = linux.marker\n-@COND_arm_uboot_TRUE@am__append_3741 = linux.module\n-@COND_arm_uboot_TRUE@am__append_3742 = linux.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__append_3743 = \n-@COND_arm_uboot_TRUE@am__append_3744 = $(nodist_linux_module_SOURCES)\n-@COND_arm_uboot_TRUE@am__append_3745 = $(nodist_linux_module_SOURCES) \\\n+@COND_mips_qemu_mips_TRUE@am__append_3732 = linux.mod\n+@COND_mips_qemu_mips_TRUE@am__append_3733 = linux.marker\n+@COND_arm_uboot_TRUE@am__append_3734 = linux.module\n+@COND_arm_uboot_TRUE@am__append_3735 = linux.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__append_3736 = \n+@COND_arm_uboot_TRUE@am__append_3737 = $(nodist_linux_module_SOURCES)\n+@COND_arm_uboot_TRUE@am__append_3738 = $(nodist_linux_module_SOURCES) \\\n @COND_arm_uboot_TRUE@\tlinux.marker\n-@COND_arm_uboot_TRUE@am__append_3746 = linux.mod\n-@COND_arm_uboot_TRUE@am__append_3747 = linux.marker\n-@COND_arm_efi_TRUE@am__append_3748 = linux.module\n-@COND_arm_efi_TRUE@am__append_3749 = linux.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_3750 = \n-@COND_arm_efi_TRUE@am__append_3751 = $(nodist_linux_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_3752 = $(nodist_linux_module_SOURCES) \\\n+@COND_arm_uboot_TRUE@am__append_3739 = linux.mod\n+@COND_arm_uboot_TRUE@am__append_3740 = linux.marker\n+@COND_arm_efi_TRUE@am__append_3741 = linux.module\n+@COND_arm_efi_TRUE@am__append_3742 = linux.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_3743 = \n+@COND_arm_efi_TRUE@am__append_3744 = $(nodist_linux_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_3745 = $(nodist_linux_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tlinux.marker\n-@COND_arm_efi_TRUE@am__append_3753 = linux.mod\n-@COND_arm_efi_TRUE@am__append_3754 = linux.marker\n-@COND_arm64_efi_TRUE@am__append_3755 = linux.module\n-@COND_arm64_efi_TRUE@am__append_3756 = linux.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_3757 = \n-@COND_arm64_efi_TRUE@am__append_3758 = $(nodist_linux_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_3759 = $(nodist_linux_module_SOURCES) \\\n+@COND_arm_efi_TRUE@am__append_3746 = linux.mod\n+@COND_arm_efi_TRUE@am__append_3747 = linux.marker\n+@COND_arm64_efi_TRUE@am__append_3748 = linux.module\n+@COND_arm64_efi_TRUE@am__append_3749 = linux.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_3750 = \n+@COND_arm64_efi_TRUE@am__append_3751 = $(nodist_linux_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_3752 = $(nodist_linux_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tlinux.marker\n-@COND_arm64_efi_TRUE@am__append_3760 = linux.mod\n-@COND_arm64_efi_TRUE@am__append_3761 = linux.marker\n-@COND_arm_coreboot_TRUE@am__append_3762 = linux.module\n-@COND_arm_coreboot_TRUE@am__append_3763 = linux.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__append_3764 = \n-@COND_arm_coreboot_TRUE@am__append_3765 = $(nodist_linux_module_SOURCES)\n-@COND_arm_coreboot_TRUE@am__append_3766 =  \\\n+@COND_arm64_efi_TRUE@am__append_3753 = linux.mod\n+@COND_arm64_efi_TRUE@am__append_3754 = linux.marker\n+@COND_arm_coreboot_TRUE@am__append_3755 = linux.module\n+@COND_arm_coreboot_TRUE@am__append_3756 = linux.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__append_3757 = \n+@COND_arm_coreboot_TRUE@am__append_3758 = $(nodist_linux_module_SOURCES)\n+@COND_arm_coreboot_TRUE@am__append_3759 =  \\\n @COND_arm_coreboot_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_arm_coreboot_TRUE@\tlinux.marker\n-@COND_arm_coreboot_TRUE@am__append_3767 = linux.mod\n-@COND_arm_coreboot_TRUE@am__append_3768 = linux.marker\n-@COND_riscv32_efi_TRUE@am__append_3769 = linux.module\n-@COND_riscv32_efi_TRUE@am__append_3770 = linux.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_3771 = \n-@COND_riscv32_efi_TRUE@am__append_3772 = $(nodist_linux_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_3773 =  \\\n+@COND_arm_coreboot_TRUE@am__append_3760 = linux.mod\n+@COND_arm_coreboot_TRUE@am__append_3761 = linux.marker\n+@COND_riscv32_efi_TRUE@am__append_3762 = linux.module\n+@COND_riscv32_efi_TRUE@am__append_3763 = linux.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_3764 = \n+@COND_riscv32_efi_TRUE@am__append_3765 = $(nodist_linux_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_3766 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tlinux.marker\n-@COND_riscv32_efi_TRUE@am__append_3774 = linux.mod\n-@COND_riscv32_efi_TRUE@am__append_3775 = linux.marker\n-@COND_riscv64_efi_TRUE@am__append_3776 = linux.module\n-@COND_riscv64_efi_TRUE@am__append_3777 = linux.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_3778 = \n-@COND_riscv64_efi_TRUE@am__append_3779 = $(nodist_linux_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_3780 =  \\\n+@COND_riscv32_efi_TRUE@am__append_3767 = linux.mod\n+@COND_riscv32_efi_TRUE@am__append_3768 = linux.marker\n+@COND_riscv64_efi_TRUE@am__append_3769 = linux.module\n+@COND_riscv64_efi_TRUE@am__append_3770 = linux.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_3771 = \n+@COND_riscv64_efi_TRUE@am__append_3772 = $(nodist_linux_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_3773 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_linux_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tlinux.marker\n-@COND_riscv64_efi_TRUE@am__append_3781 = linux.mod\n-@COND_riscv64_efi_TRUE@am__append_3782 = linux.marker\n-@COND_arm_uboot_TRUE@am__append_3783 = fdt.module\n-@COND_arm_uboot_TRUE@am__append_3784 = fdt.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_3774 = linux.mod\n+@COND_riscv64_efi_TRUE@am__append_3775 = linux.marker\n+@COND_arm_uboot_TRUE@am__append_3776 = fdt.module\n+@COND_arm_uboot_TRUE@am__append_3777 = fdt.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@fdt_module_DEPENDENCIES =\n-@COND_arm_uboot_TRUE@am__append_3785 = \n-@COND_arm_uboot_TRUE@am__append_3786 = $(nodist_fdt_module_SOURCES)\n-@COND_arm_uboot_TRUE@am__append_3787 = $(nodist_fdt_module_SOURCES) \\\n+@COND_arm_uboot_TRUE@am__append_3778 = \n+@COND_arm_uboot_TRUE@am__append_3779 = $(nodist_fdt_module_SOURCES)\n+@COND_arm_uboot_TRUE@am__append_3780 = $(nodist_fdt_module_SOURCES) \\\n @COND_arm_uboot_TRUE@\tfdt.marker\n-@COND_arm_uboot_TRUE@am__append_3788 = fdt.mod\n-@COND_arm_uboot_TRUE@am__append_3789 = fdt.marker\n-@COND_arm_efi_TRUE@am__append_3790 = fdt.module\n-@COND_arm_efi_TRUE@am__append_3791 = fdt.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_3792 = \n-@COND_arm_efi_TRUE@am__append_3793 = $(nodist_fdt_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_3794 = $(nodist_fdt_module_SOURCES) \\\n+@COND_arm_uboot_TRUE@am__append_3781 = fdt.mod\n+@COND_arm_uboot_TRUE@am__append_3782 = fdt.marker\n+@COND_arm_efi_TRUE@am__append_3783 = fdt.module\n+@COND_arm_efi_TRUE@am__append_3784 = fdt.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_3785 = \n+@COND_arm_efi_TRUE@am__append_3786 = $(nodist_fdt_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_3787 = $(nodist_fdt_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tfdt.marker\n-@COND_arm_efi_TRUE@am__append_3795 = fdt.mod\n-@COND_arm_efi_TRUE@am__append_3796 = fdt.marker\n-@COND_arm64_efi_TRUE@am__append_3797 = fdt.module\n-@COND_arm64_efi_TRUE@am__append_3798 = fdt.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_3799 = \n-@COND_arm64_efi_TRUE@am__append_3800 = $(nodist_fdt_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_3801 = $(nodist_fdt_module_SOURCES) \\\n+@COND_arm_efi_TRUE@am__append_3788 = fdt.mod\n+@COND_arm_efi_TRUE@am__append_3789 = fdt.marker\n+@COND_arm64_efi_TRUE@am__append_3790 = fdt.module\n+@COND_arm64_efi_TRUE@am__append_3791 = fdt.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_3792 = \n+@COND_arm64_efi_TRUE@am__append_3793 = $(nodist_fdt_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_3794 = $(nodist_fdt_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tfdt.marker\n-@COND_arm64_efi_TRUE@am__append_3802 = fdt.mod\n-@COND_arm64_efi_TRUE@am__append_3803 = fdt.marker\n-@COND_riscv32_efi_TRUE@am__append_3804 = fdt.module\n-@COND_riscv32_efi_TRUE@am__append_3805 = fdt.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_3806 = \n-@COND_riscv32_efi_TRUE@am__append_3807 = $(nodist_fdt_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_3808 = $(nodist_fdt_module_SOURCES) \\\n+@COND_arm64_efi_TRUE@am__append_3795 = fdt.mod\n+@COND_arm64_efi_TRUE@am__append_3796 = fdt.marker\n+@COND_riscv32_efi_TRUE@am__append_3797 = fdt.module\n+@COND_riscv32_efi_TRUE@am__append_3798 = fdt.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_3799 = \n+@COND_riscv32_efi_TRUE@am__append_3800 = $(nodist_fdt_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_3801 = $(nodist_fdt_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tfdt.marker\n-@COND_riscv32_efi_TRUE@am__append_3809 = fdt.mod\n-@COND_riscv32_efi_TRUE@am__append_3810 = fdt.marker\n-@COND_riscv64_efi_TRUE@am__append_3811 = fdt.module\n-@COND_riscv64_efi_TRUE@am__append_3812 = fdt.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_3813 = \n-@COND_riscv64_efi_TRUE@am__append_3814 = $(nodist_fdt_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_3815 = $(nodist_fdt_module_SOURCES) \\\n+@COND_riscv32_efi_TRUE@am__append_3802 = fdt.mod\n+@COND_riscv32_efi_TRUE@am__append_3803 = fdt.marker\n+@COND_riscv64_efi_TRUE@am__append_3804 = fdt.module\n+@COND_riscv64_efi_TRUE@am__append_3805 = fdt.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_3806 = \n+@COND_riscv64_efi_TRUE@am__append_3807 = $(nodist_fdt_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_3808 = $(nodist_fdt_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tfdt.marker\n-@COND_riscv64_efi_TRUE@am__append_3816 = fdt.mod\n-@COND_riscv64_efi_TRUE@am__append_3817 = fdt.marker\n-@COND_i386_pc_TRUE@am__append_3818 = xnu.module\n-@COND_i386_pc_TRUE@am__append_3819 = xnu.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_3809 = fdt.mod\n+@COND_riscv64_efi_TRUE@am__append_3810 = fdt.marker\n+@COND_i386_pc_TRUE@am__append_3811 = xnu.module\n+@COND_i386_pc_TRUE@am__append_3812 = xnu.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_x86_64_efi_FALSE@xnu_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_3820 = \n-@COND_i386_pc_TRUE@am__append_3821 = $(nodist_xnu_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_3822 = $(nodist_xnu_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3813 = \n+@COND_i386_pc_TRUE@am__append_3814 = $(nodist_xnu_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_3815 = $(nodist_xnu_module_SOURCES) \\\n @COND_i386_pc_TRUE@\txnu.marker\n-@COND_i386_pc_TRUE@am__append_3823 = xnu.mod\n-@COND_i386_pc_TRUE@am__append_3824 = xnu.marker\n-@COND_i386_efi_TRUE@am__append_3825 = xnu.module\n-@COND_i386_efi_TRUE@am__append_3826 = xnu.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_3827 = \n-@COND_i386_efi_TRUE@am__append_3828 = $(nodist_xnu_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3829 = $(nodist_xnu_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3816 = xnu.mod\n+@COND_i386_pc_TRUE@am__append_3817 = xnu.marker\n+@COND_i386_efi_TRUE@am__append_3818 = xnu.module\n+@COND_i386_efi_TRUE@am__append_3819 = xnu.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_3820 = \n+@COND_i386_efi_TRUE@am__append_3821 = $(nodist_xnu_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3822 = $(nodist_xnu_module_SOURCES) \\\n @COND_i386_efi_TRUE@\txnu.marker\n-@COND_i386_efi_TRUE@am__append_3830 = xnu.mod\n-@COND_i386_efi_TRUE@am__append_3831 = xnu.marker\n-@COND_i386_coreboot_TRUE@am__append_3832 = xnu.module\n-@COND_i386_coreboot_TRUE@am__append_3833 = xnu.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_3834 = \n-@COND_i386_coreboot_TRUE@am__append_3835 = $(nodist_xnu_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_3836 =  \\\n+@COND_i386_efi_TRUE@am__append_3823 = xnu.mod\n+@COND_i386_efi_TRUE@am__append_3824 = xnu.marker\n+@COND_i386_coreboot_TRUE@am__append_3825 = xnu.module\n+@COND_i386_coreboot_TRUE@am__append_3826 = xnu.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_3827 = \n+@COND_i386_coreboot_TRUE@am__append_3828 = $(nodist_xnu_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_3829 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_xnu_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\txnu.marker\n-@COND_i386_coreboot_TRUE@am__append_3837 = xnu.mod\n-@COND_i386_coreboot_TRUE@am__append_3838 = xnu.marker\n-@COND_i386_multiboot_TRUE@am__append_3839 = xnu.module\n-@COND_i386_multiboot_TRUE@am__append_3840 = xnu.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_3841 = \n-@COND_i386_multiboot_TRUE@am__append_3842 = $(nodist_xnu_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_3843 =  \\\n+@COND_i386_coreboot_TRUE@am__append_3830 = xnu.mod\n+@COND_i386_coreboot_TRUE@am__append_3831 = xnu.marker\n+@COND_i386_multiboot_TRUE@am__append_3832 = xnu.module\n+@COND_i386_multiboot_TRUE@am__append_3833 = xnu.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_3834 = \n+@COND_i386_multiboot_TRUE@am__append_3835 = $(nodist_xnu_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_3836 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_xnu_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\txnu.marker\n-@COND_i386_multiboot_TRUE@am__append_3844 = xnu.mod\n-@COND_i386_multiboot_TRUE@am__append_3845 = xnu.marker\n-@COND_x86_64_efi_TRUE@am__append_3846 = xnu.module\n-@COND_x86_64_efi_TRUE@am__append_3847 = xnu.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_3848 = \n-@COND_x86_64_efi_TRUE@am__append_3849 = $(nodist_xnu_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_3850 = $(nodist_xnu_module_SOURCES) \\\n+@COND_i386_multiboot_TRUE@am__append_3837 = xnu.mod\n+@COND_i386_multiboot_TRUE@am__append_3838 = xnu.marker\n+@COND_x86_64_efi_TRUE@am__append_3839 = xnu.module\n+@COND_x86_64_efi_TRUE@am__append_3840 = xnu.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3841 = \n+@COND_x86_64_efi_TRUE@am__append_3842 = $(nodist_xnu_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_3843 = $(nodist_xnu_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\txnu.marker\n-@COND_x86_64_efi_TRUE@am__append_3851 = xnu.mod\n-@COND_x86_64_efi_TRUE@am__append_3852 = xnu.marker\n-@COND_i386_pc_TRUE@am__append_3853 = random.module\n-@COND_i386_pc_TRUE@am__append_3854 = random.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3844 = xnu.mod\n+@COND_x86_64_efi_TRUE@am__append_3845 = xnu.marker\n+@COND_i386_pc_TRUE@am__append_3846 = random.module\n+@COND_i386_pc_TRUE@am__append_3847 = random.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_x86_64_efi_FALSE@random_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_3855 = \n-@COND_i386_pc_TRUE@am__append_3856 = $(nodist_random_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_3857 = $(nodist_random_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3848 = \n+@COND_i386_pc_TRUE@am__append_3849 = $(nodist_random_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_3850 = $(nodist_random_module_SOURCES) \\\n @COND_i386_pc_TRUE@\trandom.marker\n-@COND_i386_pc_TRUE@am__append_3858 = random.mod\n-@COND_i386_pc_TRUE@am__append_3859 = random.marker\n-@COND_i386_efi_TRUE@am__append_3860 = random.module\n-@COND_i386_efi_TRUE@am__append_3861 = random.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_3862 = \n-@COND_i386_efi_TRUE@am__append_3863 = $(nodist_random_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3864 = $(nodist_random_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3851 = random.mod\n+@COND_i386_pc_TRUE@am__append_3852 = random.marker\n+@COND_i386_efi_TRUE@am__append_3853 = random.module\n+@COND_i386_efi_TRUE@am__append_3854 = random.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_3855 = \n+@COND_i386_efi_TRUE@am__append_3856 = $(nodist_random_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3857 = $(nodist_random_module_SOURCES) \\\n @COND_i386_efi_TRUE@\trandom.marker\n-@COND_i386_efi_TRUE@am__append_3865 = random.mod\n-@COND_i386_efi_TRUE@am__append_3866 = random.marker\n-@COND_i386_coreboot_TRUE@am__append_3867 = random.module\n-@COND_i386_coreboot_TRUE@am__append_3868 = random.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_3869 = \n-@COND_i386_coreboot_TRUE@am__append_3870 = $(nodist_random_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_3871 =  \\\n+@COND_i386_efi_TRUE@am__append_3858 = random.mod\n+@COND_i386_efi_TRUE@am__append_3859 = random.marker\n+@COND_i386_coreboot_TRUE@am__append_3860 = random.module\n+@COND_i386_coreboot_TRUE@am__append_3861 = random.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_3862 = \n+@COND_i386_coreboot_TRUE@am__append_3863 = $(nodist_random_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_3864 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_random_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\trandom.marker\n-@COND_i386_coreboot_TRUE@am__append_3872 = random.mod\n-@COND_i386_coreboot_TRUE@am__append_3873 = random.marker\n-@COND_i386_multiboot_TRUE@am__append_3874 = random.module\n-@COND_i386_multiboot_TRUE@am__append_3875 = random.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_3876 = \n-@COND_i386_multiboot_TRUE@am__append_3877 = $(nodist_random_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_3878 =  \\\n+@COND_i386_coreboot_TRUE@am__append_3865 = random.mod\n+@COND_i386_coreboot_TRUE@am__append_3866 = random.marker\n+@COND_i386_multiboot_TRUE@am__append_3867 = random.module\n+@COND_i386_multiboot_TRUE@am__append_3868 = random.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_3869 = \n+@COND_i386_multiboot_TRUE@am__append_3870 = $(nodist_random_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_3871 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_random_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\trandom.marker\n-@COND_i386_multiboot_TRUE@am__append_3879 = random.mod\n-@COND_i386_multiboot_TRUE@am__append_3880 = random.marker\n-@COND_x86_64_efi_TRUE@am__append_3881 = random.module\n-@COND_x86_64_efi_TRUE@am__append_3882 = random.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_3883 = \n-@COND_x86_64_efi_TRUE@am__append_3884 = $(nodist_random_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_3885 =  \\\n+@COND_i386_multiboot_TRUE@am__append_3872 = random.mod\n+@COND_i386_multiboot_TRUE@am__append_3873 = random.marker\n+@COND_x86_64_efi_TRUE@am__append_3874 = random.module\n+@COND_x86_64_efi_TRUE@am__append_3875 = random.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3876 = \n+@COND_x86_64_efi_TRUE@am__append_3877 = $(nodist_random_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_3878 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_random_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\trandom.marker\n-@COND_x86_64_efi_TRUE@am__append_3886 = random.mod\n-@COND_x86_64_efi_TRUE@am__append_3887 = random.marker\n-@COND_i386_efi_TRUE@am__append_3888 = appleldr.module\n-@COND_i386_efi_TRUE@am__append_3889 = appleldr.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3879 = random.mod\n+@COND_x86_64_efi_TRUE@am__append_3880 = random.marker\n+@COND_i386_efi_TRUE@am__append_3881 = appleldr.module\n+@COND_i386_efi_TRUE@am__append_3882 = appleldr.module$(EXEEXT)\n @COND_i386_efi_FALSE@@COND_x86_64_efi_FALSE@appleldr_module_DEPENDENCIES =\n-@COND_i386_efi_TRUE@am__append_3890 = \n-@COND_i386_efi_TRUE@am__append_3891 = $(nodist_appleldr_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3892 =  \\\n+@COND_i386_efi_TRUE@am__append_3883 = \n+@COND_i386_efi_TRUE@am__append_3884 = $(nodist_appleldr_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3885 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_appleldr_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tappleldr.marker\n-@COND_i386_efi_TRUE@am__append_3893 = appleldr.mod\n-@COND_i386_efi_TRUE@am__append_3894 = appleldr.marker\n-@COND_x86_64_efi_TRUE@am__append_3895 = appleldr.module\n-@COND_x86_64_efi_TRUE@am__append_3896 = appleldr.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_3897 = \n-@COND_x86_64_efi_TRUE@am__append_3898 = $(nodist_appleldr_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_3899 =  \\\n+@COND_i386_efi_TRUE@am__append_3886 = appleldr.mod\n+@COND_i386_efi_TRUE@am__append_3887 = appleldr.marker\n+@COND_x86_64_efi_TRUE@am__append_3888 = appleldr.module\n+@COND_x86_64_efi_TRUE@am__append_3889 = appleldr.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3890 = \n+@COND_x86_64_efi_TRUE@am__append_3891 = $(nodist_appleldr_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_3892 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_appleldr_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tappleldr.marker\n-@COND_x86_64_efi_TRUE@am__append_3900 = appleldr.mod\n-@COND_x86_64_efi_TRUE@am__append_3901 = appleldr.marker\n-@COND_i386_pc_TRUE@am__append_3902 = chain.module\n-@COND_i386_pc_TRUE@am__append_3903 = chain.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3893 = appleldr.mod\n+@COND_x86_64_efi_TRUE@am__append_3894 = appleldr.marker\n+@COND_i386_pc_TRUE@am__append_3895 = chain.module\n+@COND_i386_pc_TRUE@am__append_3896 = chain.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_efi_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_pc_FALSE@@COND_ia64_efi_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_x86_64_efi_FALSE@chain_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_3904 = \n-@COND_i386_pc_TRUE@am__append_3905 = $(nodist_chain_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_3906 = $(nodist_chain_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3897 = \n+@COND_i386_pc_TRUE@am__append_3898 = $(nodist_chain_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_3899 = $(nodist_chain_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tchain.marker\n-@COND_i386_pc_TRUE@am__append_3907 = chain.mod\n-@COND_i386_pc_TRUE@am__append_3908 = chain.marker\n-@COND_i386_efi_TRUE@am__append_3909 = chain.module\n-@COND_i386_efi_TRUE@am__append_3910 = chain.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_3911 = \n-@COND_i386_efi_TRUE@am__append_3912 = $(nodist_chain_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3913 = $(nodist_chain_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3900 = chain.mod\n+@COND_i386_pc_TRUE@am__append_3901 = chain.marker\n+@COND_i386_efi_TRUE@am__append_3902 = chain.module\n+@COND_i386_efi_TRUE@am__append_3903 = chain.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_3904 = \n+@COND_i386_efi_TRUE@am__append_3905 = $(nodist_chain_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3906 = $(nodist_chain_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tchain.marker\n-@COND_i386_efi_TRUE@am__append_3914 = chain.mod\n-@COND_i386_efi_TRUE@am__append_3915 = chain.marker\n-@COND_i386_coreboot_TRUE@am__append_3916 = chain.module\n-@COND_i386_coreboot_TRUE@am__append_3917 = chain.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_3918 = \n-@COND_i386_coreboot_TRUE@am__append_3919 = $(nodist_chain_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_3920 =  \\\n+@COND_i386_efi_TRUE@am__append_3907 = chain.mod\n+@COND_i386_efi_TRUE@am__append_3908 = chain.marker\n+@COND_i386_coreboot_TRUE@am__append_3909 = chain.module\n+@COND_i386_coreboot_TRUE@am__append_3910 = chain.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_3911 = \n+@COND_i386_coreboot_TRUE@am__append_3912 = $(nodist_chain_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_3913 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_chain_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tchain.marker\n-@COND_i386_coreboot_TRUE@am__append_3921 = chain.mod\n-@COND_i386_coreboot_TRUE@am__append_3922 = chain.marker\n-@COND_x86_64_efi_TRUE@am__append_3923 = chain.module\n-@COND_x86_64_efi_TRUE@am__append_3924 = chain.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_3925 = \n-@COND_x86_64_efi_TRUE@am__append_3926 = $(nodist_chain_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_3927 =  \\\n+@COND_i386_coreboot_TRUE@am__append_3914 = chain.mod\n+@COND_i386_coreboot_TRUE@am__append_3915 = chain.marker\n+@COND_x86_64_efi_TRUE@am__append_3916 = chain.module\n+@COND_x86_64_efi_TRUE@am__append_3917 = chain.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_3918 = \n+@COND_x86_64_efi_TRUE@am__append_3919 = $(nodist_chain_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_3920 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_chain_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tchain.marker\n-@COND_x86_64_efi_TRUE@am__append_3928 = chain.mod\n-@COND_x86_64_efi_TRUE@am__append_3929 = chain.marker\n-@COND_ia64_efi_TRUE@am__append_3930 = chain.module\n-@COND_ia64_efi_TRUE@am__append_3931 = chain.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_3932 = \n-@COND_ia64_efi_TRUE@am__append_3933 = $(nodist_chain_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_3934 = $(nodist_chain_module_SOURCES) \\\n+@COND_x86_64_efi_TRUE@am__append_3921 = chain.mod\n+@COND_x86_64_efi_TRUE@am__append_3922 = chain.marker\n+@COND_ia64_efi_TRUE@am__append_3923 = chain.module\n+@COND_ia64_efi_TRUE@am__append_3924 = chain.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_3925 = \n+@COND_ia64_efi_TRUE@am__append_3926 = $(nodist_chain_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_3927 = $(nodist_chain_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tchain.marker\n-@COND_ia64_efi_TRUE@am__append_3935 = chain.mod\n-@COND_ia64_efi_TRUE@am__append_3936 = chain.marker\n-@COND_arm_efi_TRUE@am__append_3937 = chain.module\n-@COND_arm_efi_TRUE@am__append_3938 = chain.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_3939 = \n-@COND_arm_efi_TRUE@am__append_3940 = $(nodist_chain_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_3941 = $(nodist_chain_module_SOURCES) \\\n+@COND_ia64_efi_TRUE@am__append_3928 = chain.mod\n+@COND_ia64_efi_TRUE@am__append_3929 = chain.marker\n+@COND_arm_efi_TRUE@am__append_3930 = chain.module\n+@COND_arm_efi_TRUE@am__append_3931 = chain.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_3932 = \n+@COND_arm_efi_TRUE@am__append_3933 = $(nodist_chain_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_3934 = $(nodist_chain_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tchain.marker\n-@COND_arm_efi_TRUE@am__append_3942 = chain.mod\n-@COND_arm_efi_TRUE@am__append_3943 = chain.marker\n-@COND_arm64_efi_TRUE@am__append_3944 = chain.module\n-@COND_arm64_efi_TRUE@am__append_3945 = chain.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_3946 = \n-@COND_arm64_efi_TRUE@am__append_3947 = $(nodist_chain_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_3948 = $(nodist_chain_module_SOURCES) \\\n+@COND_arm_efi_TRUE@am__append_3935 = chain.mod\n+@COND_arm_efi_TRUE@am__append_3936 = chain.marker\n+@COND_arm64_efi_TRUE@am__append_3937 = chain.module\n+@COND_arm64_efi_TRUE@am__append_3938 = chain.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_3939 = \n+@COND_arm64_efi_TRUE@am__append_3940 = $(nodist_chain_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_3941 = $(nodist_chain_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tchain.marker\n-@COND_arm64_efi_TRUE@am__append_3949 = chain.mod\n-@COND_arm64_efi_TRUE@am__append_3950 = chain.marker\n-@COND_riscv32_efi_TRUE@am__append_3951 = chain.module\n-@COND_riscv32_efi_TRUE@am__append_3952 = chain.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_3953 = \n-@COND_riscv32_efi_TRUE@am__append_3954 = $(nodist_chain_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_3955 =  \\\n+@COND_arm64_efi_TRUE@am__append_3942 = chain.mod\n+@COND_arm64_efi_TRUE@am__append_3943 = chain.marker\n+@COND_riscv32_efi_TRUE@am__append_3944 = chain.module\n+@COND_riscv32_efi_TRUE@am__append_3945 = chain.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_3946 = \n+@COND_riscv32_efi_TRUE@am__append_3947 = $(nodist_chain_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_3948 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_chain_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tchain.marker\n-@COND_riscv32_efi_TRUE@am__append_3956 = chain.mod\n-@COND_riscv32_efi_TRUE@am__append_3957 = chain.marker\n-@COND_riscv64_efi_TRUE@am__append_3958 = chain.module\n-@COND_riscv64_efi_TRUE@am__append_3959 = chain.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_3960 = \n-@COND_riscv64_efi_TRUE@am__append_3961 = $(nodist_chain_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_3962 =  \\\n+@COND_riscv32_efi_TRUE@am__append_3949 = chain.mod\n+@COND_riscv32_efi_TRUE@am__append_3950 = chain.marker\n+@COND_riscv64_efi_TRUE@am__append_3951 = chain.module\n+@COND_riscv64_efi_TRUE@am__append_3952 = chain.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_3953 = \n+@COND_riscv64_efi_TRUE@am__append_3954 = $(nodist_chain_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_3955 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_chain_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tchain.marker\n-@COND_riscv64_efi_TRUE@am__append_3963 = chain.mod\n-@COND_riscv64_efi_TRUE@am__append_3964 = chain.marker\n-@COND_i386_pc_TRUE@am__append_3965 = mmap.module\n-@COND_i386_pc_TRUE@am__append_3966 = mmap.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_3956 = chain.mod\n+@COND_riscv64_efi_TRUE@am__append_3957 = chain.marker\n+@COND_i386_pc_TRUE@am__append_3958 = mmap.module\n+@COND_i386_pc_TRUE@am__append_3959 = mmap.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_efi_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_x86_64_efi_FALSE@mmap_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_3967 = \n-@COND_i386_pc_TRUE@am__append_3968 = $(nodist_mmap_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_3969 = $(nodist_mmap_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3960 = \n+@COND_i386_pc_TRUE@am__append_3961 = $(nodist_mmap_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_3962 = $(nodist_mmap_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tmmap.marker\n-@COND_i386_pc_TRUE@am__append_3970 = mmap.mod\n-@COND_i386_pc_TRUE@am__append_3971 = mmap.marker\n-@COND_i386_efi_TRUE@am__append_3972 = mmap.module\n-@COND_i386_efi_TRUE@am__append_3973 = mmap.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_3974 = \n-@COND_i386_efi_TRUE@am__append_3975 = $(nodist_mmap_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_3976 = $(nodist_mmap_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_3963 = mmap.mod\n+@COND_i386_pc_TRUE@am__append_3964 = mmap.marker\n+@COND_i386_efi_TRUE@am__append_3965 = mmap.module\n+@COND_i386_efi_TRUE@am__append_3966 = mmap.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_3967 = \n+@COND_i386_efi_TRUE@am__append_3968 = $(nodist_mmap_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_3969 = $(nodist_mmap_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tmmap.marker\n-@COND_i386_efi_TRUE@am__append_3977 = mmap.mod\n-@COND_i386_efi_TRUE@am__append_3978 = mmap.marker\n-@COND_i386_qemu_TRUE@am__append_3979 = mmap.module\n-@COND_i386_qemu_TRUE@am__append_3980 = mmap.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_3981 = \n-@COND_i386_qemu_TRUE@am__append_3982 = $(nodist_mmap_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_3983 = $(nodist_mmap_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_3970 = mmap.mod\n+@COND_i386_efi_TRUE@am__append_3971 = mmap.marker\n+@COND_i386_qemu_TRUE@am__append_3972 = mmap.module\n+@COND_i386_qemu_TRUE@am__append_3973 = mmap.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_3974 = \n+@COND_i386_qemu_TRUE@am__append_3975 = $(nodist_mmap_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_3976 = $(nodist_mmap_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tmmap.marker\n-@COND_i386_qemu_TRUE@am__append_3984 = mmap.mod\n-@COND_i386_qemu_TRUE@am__append_3985 = mmap.marker\n-@COND_i386_coreboot_TRUE@am__append_3986 = mmap.module\n-@COND_i386_coreboot_TRUE@am__append_3987 = mmap.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_3988 = \n-@COND_i386_coreboot_TRUE@am__append_3989 = $(nodist_mmap_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_3990 =  \\\n+@COND_i386_qemu_TRUE@am__append_3977 = mmap.mod\n+@COND_i386_qemu_TRUE@am__append_3978 = mmap.marker\n+@COND_i386_coreboot_TRUE@am__append_3979 = mmap.module\n+@COND_i386_coreboot_TRUE@am__append_3980 = mmap.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_3981 = \n+@COND_i386_coreboot_TRUE@am__append_3982 = $(nodist_mmap_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_3983 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_mmap_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tmmap.marker\n-@COND_i386_coreboot_TRUE@am__append_3991 = mmap.mod\n-@COND_i386_coreboot_TRUE@am__append_3992 = mmap.marker\n-@COND_i386_multiboot_TRUE@am__append_3993 = mmap.module\n-@COND_i386_multiboot_TRUE@am__append_3994 = mmap.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_3995 = \n-@COND_i386_multiboot_TRUE@am__append_3996 = $(nodist_mmap_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_3997 =  \\\n+@COND_i386_coreboot_TRUE@am__append_3984 = mmap.mod\n+@COND_i386_coreboot_TRUE@am__append_3985 = mmap.marker\n+@COND_i386_multiboot_TRUE@am__append_3986 = mmap.module\n+@COND_i386_multiboot_TRUE@am__append_3987 = mmap.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_3988 = \n+@COND_i386_multiboot_TRUE@am__append_3989 = $(nodist_mmap_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_3990 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_mmap_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tmmap.marker\n-@COND_i386_multiboot_TRUE@am__append_3998 = mmap.mod\n-@COND_i386_multiboot_TRUE@am__append_3999 = mmap.marker\n-@COND_i386_ieee1275_TRUE@am__append_4000 = mmap.module\n-@COND_i386_ieee1275_TRUE@am__append_4001 = mmap.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_4002 = \n-@COND_i386_ieee1275_TRUE@am__append_4003 = $(nodist_mmap_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_4004 =  \\\n+@COND_i386_multiboot_TRUE@am__append_3991 = mmap.mod\n+@COND_i386_multiboot_TRUE@am__append_3992 = mmap.marker\n+@COND_i386_ieee1275_TRUE@am__append_3993 = mmap.module\n+@COND_i386_ieee1275_TRUE@am__append_3994 = mmap.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_3995 = \n+@COND_i386_ieee1275_TRUE@am__append_3996 = $(nodist_mmap_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_3997 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_mmap_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tmmap.marker\n-@COND_i386_ieee1275_TRUE@am__append_4005 = mmap.mod\n-@COND_i386_ieee1275_TRUE@am__append_4006 = mmap.marker\n-@COND_x86_64_efi_TRUE@am__append_4007 = mmap.module\n-@COND_x86_64_efi_TRUE@am__append_4008 = mmap.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4009 = \n-@COND_x86_64_efi_TRUE@am__append_4010 = $(nodist_mmap_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4011 = $(nodist_mmap_module_SOURCES) \\\n+@COND_i386_ieee1275_TRUE@am__append_3998 = mmap.mod\n+@COND_i386_ieee1275_TRUE@am__append_3999 = mmap.marker\n+@COND_x86_64_efi_TRUE@am__append_4000 = mmap.module\n+@COND_x86_64_efi_TRUE@am__append_4001 = mmap.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4002 = \n+@COND_x86_64_efi_TRUE@am__append_4003 = $(nodist_mmap_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4004 = $(nodist_mmap_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tmmap.marker\n-@COND_x86_64_efi_TRUE@am__append_4012 = mmap.mod\n-@COND_x86_64_efi_TRUE@am__append_4013 = mmap.marker\n-@COND_i386_xen_pvh_TRUE@am__append_4014 = mmap.module\n-@COND_i386_xen_pvh_TRUE@am__append_4015 = mmap.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_4016 = \n-@COND_i386_xen_pvh_TRUE@am__append_4017 = $(nodist_mmap_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_4018 =  \\\n+@COND_x86_64_efi_TRUE@am__append_4005 = mmap.mod\n+@COND_x86_64_efi_TRUE@am__append_4006 = mmap.marker\n+@COND_i386_xen_pvh_TRUE@am__append_4007 = mmap.module\n+@COND_i386_xen_pvh_TRUE@am__append_4008 = mmap.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_4009 = \n+@COND_i386_xen_pvh_TRUE@am__append_4010 = $(nodist_mmap_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_4011 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_mmap_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tmmap.marker\n-@COND_i386_xen_pvh_TRUE@am__append_4019 = mmap.mod\n-@COND_i386_xen_pvh_TRUE@am__append_4020 = mmap.marker\n-@COND_mips_loongson_TRUE@am__append_4021 = mmap.module\n-@COND_mips_loongson_TRUE@am__append_4022 = mmap.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_4023 = \n-@COND_mips_loongson_TRUE@am__append_4024 = $(nodist_mmap_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_4025 =  \\\n+@COND_i386_xen_pvh_TRUE@am__append_4012 = mmap.mod\n+@COND_i386_xen_pvh_TRUE@am__append_4013 = mmap.marker\n+@COND_mips_loongson_TRUE@am__append_4014 = mmap.module\n+@COND_mips_loongson_TRUE@am__append_4015 = mmap.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_4016 = \n+@COND_mips_loongson_TRUE@am__append_4017 = $(nodist_mmap_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_4018 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_mmap_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tmmap.marker\n-@COND_mips_loongson_TRUE@am__append_4026 = mmap.mod\n-@COND_mips_loongson_TRUE@am__append_4027 = mmap.marker\n-@COND_mips_arc_TRUE@am__append_4028 = mmap.module\n-@COND_mips_arc_TRUE@am__append_4029 = mmap.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__append_4030 = \n-@COND_mips_arc_TRUE@am__append_4031 = $(nodist_mmap_module_SOURCES)\n-@COND_mips_arc_TRUE@am__append_4032 = $(nodist_mmap_module_SOURCES) \\\n+@COND_mips_loongson_TRUE@am__append_4019 = mmap.mod\n+@COND_mips_loongson_TRUE@am__append_4020 = mmap.marker\n+@COND_mips_arc_TRUE@am__append_4021 = mmap.module\n+@COND_mips_arc_TRUE@am__append_4022 = mmap.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__append_4023 = \n+@COND_mips_arc_TRUE@am__append_4024 = $(nodist_mmap_module_SOURCES)\n+@COND_mips_arc_TRUE@am__append_4025 = $(nodist_mmap_module_SOURCES) \\\n @COND_mips_arc_TRUE@\tmmap.marker\n-@COND_mips_arc_TRUE@am__append_4033 = mmap.mod\n-@COND_mips_arc_TRUE@am__append_4034 = mmap.marker\n-@COND_ia64_efi_TRUE@am__append_4035 = mmap.module\n-@COND_ia64_efi_TRUE@am__append_4036 = mmap.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_4037 = \n-@COND_ia64_efi_TRUE@am__append_4038 = $(nodist_mmap_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_4039 = $(nodist_mmap_module_SOURCES) \\\n+@COND_mips_arc_TRUE@am__append_4026 = mmap.mod\n+@COND_mips_arc_TRUE@am__append_4027 = mmap.marker\n+@COND_ia64_efi_TRUE@am__append_4028 = mmap.module\n+@COND_ia64_efi_TRUE@am__append_4029 = mmap.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_4030 = \n+@COND_ia64_efi_TRUE@am__append_4031 = $(nodist_mmap_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_4032 = $(nodist_mmap_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tmmap.marker\n-@COND_ia64_efi_TRUE@am__append_4040 = mmap.mod\n-@COND_ia64_efi_TRUE@am__append_4041 = mmap.marker\n-@COND_mips_qemu_mips_TRUE@am__append_4042 = mmap.module\n-@COND_mips_qemu_mips_TRUE@am__append_4043 = mmap.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_4044 = \n-@COND_mips_qemu_mips_TRUE@am__append_4045 = $(nodist_mmap_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_4046 =  \\\n+@COND_ia64_efi_TRUE@am__append_4033 = mmap.mod\n+@COND_ia64_efi_TRUE@am__append_4034 = mmap.marker\n+@COND_mips_qemu_mips_TRUE@am__append_4035 = mmap.module\n+@COND_mips_qemu_mips_TRUE@am__append_4036 = mmap.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_4037 = \n+@COND_mips_qemu_mips_TRUE@am__append_4038 = $(nodist_mmap_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_4039 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_mmap_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tmmap.marker\n-@COND_mips_qemu_mips_TRUE@am__append_4047 = mmap.mod\n-@COND_mips_qemu_mips_TRUE@am__append_4048 = mmap.marker\n-@COND_arm_efi_TRUE@am__append_4049 = mmap.module\n-@COND_arm_efi_TRUE@am__append_4050 = mmap.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_4051 = \n-@COND_arm_efi_TRUE@am__append_4052 = $(nodist_mmap_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_4053 = $(nodist_mmap_module_SOURCES) \\\n+@COND_mips_qemu_mips_TRUE@am__append_4040 = mmap.mod\n+@COND_mips_qemu_mips_TRUE@am__append_4041 = mmap.marker\n+@COND_arm_efi_TRUE@am__append_4042 = mmap.module\n+@COND_arm_efi_TRUE@am__append_4043 = mmap.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_4044 = \n+@COND_arm_efi_TRUE@am__append_4045 = $(nodist_mmap_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_4046 = $(nodist_mmap_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tmmap.marker\n-@COND_arm_efi_TRUE@am__append_4054 = mmap.mod\n-@COND_arm_efi_TRUE@am__append_4055 = mmap.marker\n-@COND_arm64_efi_TRUE@am__append_4056 = mmap.module\n-@COND_arm64_efi_TRUE@am__append_4057 = mmap.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_4058 = \n-@COND_arm64_efi_TRUE@am__append_4059 = $(nodist_mmap_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_4060 = $(nodist_mmap_module_SOURCES) \\\n+@COND_arm_efi_TRUE@am__append_4047 = mmap.mod\n+@COND_arm_efi_TRUE@am__append_4048 = mmap.marker\n+@COND_arm64_efi_TRUE@am__append_4049 = mmap.module\n+@COND_arm64_efi_TRUE@am__append_4050 = mmap.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_4051 = \n+@COND_arm64_efi_TRUE@am__append_4052 = $(nodist_mmap_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_4053 = $(nodist_mmap_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tmmap.marker\n-@COND_arm64_efi_TRUE@am__append_4061 = mmap.mod\n-@COND_arm64_efi_TRUE@am__append_4062 = mmap.marker\n-@COND_riscv32_efi_TRUE@am__append_4063 = mmap.module\n-@COND_riscv32_efi_TRUE@am__append_4064 = mmap.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_4065 = \n-@COND_riscv32_efi_TRUE@am__append_4066 = $(nodist_mmap_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_4067 =  \\\n+@COND_arm64_efi_TRUE@am__append_4054 = mmap.mod\n+@COND_arm64_efi_TRUE@am__append_4055 = mmap.marker\n+@COND_riscv32_efi_TRUE@am__append_4056 = mmap.module\n+@COND_riscv32_efi_TRUE@am__append_4057 = mmap.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_4058 = \n+@COND_riscv32_efi_TRUE@am__append_4059 = $(nodist_mmap_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_4060 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_mmap_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tmmap.marker\n-@COND_riscv32_efi_TRUE@am__append_4068 = mmap.mod\n-@COND_riscv32_efi_TRUE@am__append_4069 = mmap.marker\n-@COND_riscv64_efi_TRUE@am__append_4070 = mmap.module\n-@COND_riscv64_efi_TRUE@am__append_4071 = mmap.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_4072 = \n-@COND_riscv64_efi_TRUE@am__append_4073 = $(nodist_mmap_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_4074 =  \\\n+@COND_riscv32_efi_TRUE@am__append_4061 = mmap.mod\n+@COND_riscv32_efi_TRUE@am__append_4062 = mmap.marker\n+@COND_riscv64_efi_TRUE@am__append_4063 = mmap.module\n+@COND_riscv64_efi_TRUE@am__append_4064 = mmap.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_4065 = \n+@COND_riscv64_efi_TRUE@am__append_4066 = $(nodist_mmap_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_4067 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_mmap_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tmmap.marker\n-@COND_riscv64_efi_TRUE@am__append_4075 = mmap.mod\n-@COND_riscv64_efi_TRUE@am__append_4076 = mmap.marker\n-@COND_i386_pc_TRUE@am__append_4077 = at_keyboard.module\n-@COND_i386_pc_TRUE@am__append_4078 = at_keyboard.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_4068 = mmap.mod\n+@COND_riscv64_efi_TRUE@am__append_4069 = mmap.marker\n+@COND_i386_pc_TRUE@am__append_4070 = at_keyboard.module\n+@COND_i386_pc_TRUE@am__append_4071 = at_keyboard.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_x86_64_efi_FALSE@at_keyboard_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_4079 = \n-@COND_i386_pc_TRUE@am__append_4080 = $(nodist_at_keyboard_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_4081 =  \\\n+@COND_i386_pc_TRUE@am__append_4072 = \n+@COND_i386_pc_TRUE@am__append_4073 = $(nodist_at_keyboard_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_4074 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_at_keyboard_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tat_keyboard.marker\n-@COND_i386_pc_TRUE@am__append_4082 = at_keyboard.mod\n-@COND_i386_pc_TRUE@am__append_4083 = at_keyboard.marker\n-@COND_i386_efi_TRUE@am__append_4084 = at_keyboard.module\n-@COND_i386_efi_TRUE@am__append_4085 = at_keyboard.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_4086 = \n-@COND_i386_efi_TRUE@am__append_4087 = $(nodist_at_keyboard_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_4088 =  \\\n+@COND_i386_pc_TRUE@am__append_4075 = at_keyboard.mod\n+@COND_i386_pc_TRUE@am__append_4076 = at_keyboard.marker\n+@COND_i386_efi_TRUE@am__append_4077 = at_keyboard.module\n+@COND_i386_efi_TRUE@am__append_4078 = at_keyboard.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_4079 = \n+@COND_i386_efi_TRUE@am__append_4080 = $(nodist_at_keyboard_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_4081 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_at_keyboard_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tat_keyboard.marker\n-@COND_i386_efi_TRUE@am__append_4089 = at_keyboard.mod\n-@COND_i386_efi_TRUE@am__append_4090 = at_keyboard.marker\n-@COND_i386_qemu_TRUE@am__append_4091 = at_keyboard.module\n-@COND_i386_qemu_TRUE@am__append_4092 = at_keyboard.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_4093 = \n-@COND_i386_qemu_TRUE@am__append_4094 = $(nodist_at_keyboard_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_4095 =  \\\n+@COND_i386_efi_TRUE@am__append_4082 = at_keyboard.mod\n+@COND_i386_efi_TRUE@am__append_4083 = at_keyboard.marker\n+@COND_i386_qemu_TRUE@am__append_4084 = at_keyboard.module\n+@COND_i386_qemu_TRUE@am__append_4085 = at_keyboard.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_4086 = \n+@COND_i386_qemu_TRUE@am__append_4087 = $(nodist_at_keyboard_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_4088 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_at_keyboard_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tat_keyboard.marker\n-@COND_i386_qemu_TRUE@am__append_4096 = at_keyboard.mod\n-@COND_i386_qemu_TRUE@am__append_4097 = at_keyboard.marker\n-@COND_i386_coreboot_TRUE@am__append_4098 = at_keyboard.module\n-@COND_i386_coreboot_TRUE@am__append_4099 = at_keyboard.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_4100 = \n-@COND_i386_coreboot_TRUE@am__append_4101 = $(nodist_at_keyboard_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_4102 =  \\\n+@COND_i386_qemu_TRUE@am__append_4089 = at_keyboard.mod\n+@COND_i386_qemu_TRUE@am__append_4090 = at_keyboard.marker\n+@COND_i386_coreboot_TRUE@am__append_4091 = at_keyboard.module\n+@COND_i386_coreboot_TRUE@am__append_4092 = at_keyboard.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_4093 = \n+@COND_i386_coreboot_TRUE@am__append_4094 = $(nodist_at_keyboard_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_4095 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_at_keyboard_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tat_keyboard.marker\n-@COND_i386_coreboot_TRUE@am__append_4103 = at_keyboard.mod\n-@COND_i386_coreboot_TRUE@am__append_4104 = at_keyboard.marker\n-@COND_i386_multiboot_TRUE@am__append_4105 = at_keyboard.module\n-@COND_i386_multiboot_TRUE@am__append_4106 = at_keyboard.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_4107 = \n-@COND_i386_multiboot_TRUE@am__append_4108 = $(nodist_at_keyboard_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_4109 = $(nodist_at_keyboard_module_SOURCES) \\\n+@COND_i386_coreboot_TRUE@am__append_4096 = at_keyboard.mod\n+@COND_i386_coreboot_TRUE@am__append_4097 = at_keyboard.marker\n+@COND_i386_multiboot_TRUE@am__append_4098 = at_keyboard.module\n+@COND_i386_multiboot_TRUE@am__append_4099 = at_keyboard.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_4100 = \n+@COND_i386_multiboot_TRUE@am__append_4101 = $(nodist_at_keyboard_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_4102 = $(nodist_at_keyboard_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tat_keyboard.marker\n-@COND_i386_multiboot_TRUE@am__append_4110 = at_keyboard.mod\n-@COND_i386_multiboot_TRUE@am__append_4111 = at_keyboard.marker\n-@COND_i386_ieee1275_TRUE@am__append_4112 = at_keyboard.module\n-@COND_i386_ieee1275_TRUE@am__append_4113 = at_keyboard.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_4114 = \n-@COND_i386_ieee1275_TRUE@am__append_4115 = $(nodist_at_keyboard_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_4116 =  \\\n+@COND_i386_multiboot_TRUE@am__append_4103 = at_keyboard.mod\n+@COND_i386_multiboot_TRUE@am__append_4104 = at_keyboard.marker\n+@COND_i386_ieee1275_TRUE@am__append_4105 = at_keyboard.module\n+@COND_i386_ieee1275_TRUE@am__append_4106 = at_keyboard.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_4107 = \n+@COND_i386_ieee1275_TRUE@am__append_4108 = $(nodist_at_keyboard_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_4109 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_at_keyboard_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tat_keyboard.marker\n-@COND_i386_ieee1275_TRUE@am__append_4117 = at_keyboard.mod\n-@COND_i386_ieee1275_TRUE@am__append_4118 = at_keyboard.marker\n-@COND_x86_64_efi_TRUE@am__append_4119 = at_keyboard.module\n-@COND_x86_64_efi_TRUE@am__append_4120 = at_keyboard.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4121 = \n-@COND_x86_64_efi_TRUE@am__append_4122 = $(nodist_at_keyboard_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4123 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_4110 = at_keyboard.mod\n+@COND_i386_ieee1275_TRUE@am__append_4111 = at_keyboard.marker\n+@COND_x86_64_efi_TRUE@am__append_4112 = at_keyboard.module\n+@COND_x86_64_efi_TRUE@am__append_4113 = at_keyboard.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4114 = \n+@COND_x86_64_efi_TRUE@am__append_4115 = $(nodist_at_keyboard_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4116 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_at_keyboard_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tat_keyboard.marker\n-@COND_x86_64_efi_TRUE@am__append_4124 = at_keyboard.mod\n-@COND_x86_64_efi_TRUE@am__append_4125 = at_keyboard.marker\n-@COND_emu_TRUE@am__append_4126 = gfxterm.module\n-@COND_emu_TRUE@am__append_4127 = gfxterm.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4117 = at_keyboard.mod\n+@COND_x86_64_efi_TRUE@am__append_4118 = at_keyboard.marker\n+@COND_emu_TRUE@am__append_4119 = gfxterm.module\n+@COND_emu_TRUE@am__append_4120 = gfxterm.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@gfxterm_module_DEPENDENCIES =\n-@COND_emu_TRUE@am__append_4128 = \n-@COND_emu_TRUE@am__append_4129 = $(nodist_gfxterm_module_SOURCES)\n-@COND_emu_TRUE@am__append_4130 = $(nodist_gfxterm_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_4121 = \n+@COND_emu_TRUE@am__append_4122 = $(nodist_gfxterm_module_SOURCES)\n+@COND_emu_TRUE@am__append_4123 = $(nodist_gfxterm_module_SOURCES) \\\n @COND_emu_TRUE@\tgfxterm.marker\n-@COND_emu_TRUE@am__append_4131 = gfxterm.mod\n-@COND_emu_TRUE@am__append_4132 = gfxterm.marker\n-@COND_i386_pc_TRUE@am__append_4133 = gfxterm.module\n-@COND_i386_pc_TRUE@am__append_4134 = gfxterm.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__append_4135 = \n-@COND_i386_pc_TRUE@am__append_4136 = $(nodist_gfxterm_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_4137 = $(nodist_gfxterm_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_4124 = gfxterm.mod\n+@COND_emu_TRUE@am__append_4125 = gfxterm.marker\n+@COND_i386_pc_TRUE@am__append_4126 = gfxterm.module\n+@COND_i386_pc_TRUE@am__append_4127 = gfxterm.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__append_4128 = \n+@COND_i386_pc_TRUE@am__append_4129 = $(nodist_gfxterm_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_4130 = $(nodist_gfxterm_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tgfxterm.marker\n-@COND_i386_pc_TRUE@am__append_4138 = gfxterm.mod\n-@COND_i386_pc_TRUE@am__append_4139 = gfxterm.marker\n-@COND_i386_efi_TRUE@am__append_4140 = gfxterm.module\n-@COND_i386_efi_TRUE@am__append_4141 = gfxterm.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_4142 = \n-@COND_i386_efi_TRUE@am__append_4143 = $(nodist_gfxterm_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_4144 =  \\\n+@COND_i386_pc_TRUE@am__append_4131 = gfxterm.mod\n+@COND_i386_pc_TRUE@am__append_4132 = gfxterm.marker\n+@COND_i386_efi_TRUE@am__append_4133 = gfxterm.module\n+@COND_i386_efi_TRUE@am__append_4134 = gfxterm.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_4135 = \n+@COND_i386_efi_TRUE@am__append_4136 = $(nodist_gfxterm_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_4137 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tgfxterm.marker\n-@COND_i386_efi_TRUE@am__append_4145 = gfxterm.mod\n-@COND_i386_efi_TRUE@am__append_4146 = gfxterm.marker\n-@COND_i386_qemu_TRUE@am__append_4147 = gfxterm.module\n-@COND_i386_qemu_TRUE@am__append_4148 = gfxterm.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_4149 = \n-@COND_i386_qemu_TRUE@am__append_4150 = $(nodist_gfxterm_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_4151 =  \\\n+@COND_i386_efi_TRUE@am__append_4138 = gfxterm.mod\n+@COND_i386_efi_TRUE@am__append_4139 = gfxterm.marker\n+@COND_i386_qemu_TRUE@am__append_4140 = gfxterm.module\n+@COND_i386_qemu_TRUE@am__append_4141 = gfxterm.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_4142 = \n+@COND_i386_qemu_TRUE@am__append_4143 = $(nodist_gfxterm_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_4144 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tgfxterm.marker\n-@COND_i386_qemu_TRUE@am__append_4152 = gfxterm.mod\n-@COND_i386_qemu_TRUE@am__append_4153 = gfxterm.marker\n-@COND_i386_multiboot_TRUE@am__append_4154 = gfxterm.module\n-@COND_i386_multiboot_TRUE@am__append_4155 = gfxterm.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_4156 = \n-@COND_i386_multiboot_TRUE@am__append_4157 = $(nodist_gfxterm_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_4158 =  \\\n+@COND_i386_qemu_TRUE@am__append_4145 = gfxterm.mod\n+@COND_i386_qemu_TRUE@am__append_4146 = gfxterm.marker\n+@COND_i386_multiboot_TRUE@am__append_4147 = gfxterm.module\n+@COND_i386_multiboot_TRUE@am__append_4148 = gfxterm.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_4149 = \n+@COND_i386_multiboot_TRUE@am__append_4150 = $(nodist_gfxterm_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_4151 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tgfxterm.marker\n-@COND_i386_multiboot_TRUE@am__append_4159 = gfxterm.mod\n-@COND_i386_multiboot_TRUE@am__append_4160 = gfxterm.marker\n-@COND_i386_ieee1275_TRUE@am__append_4161 = gfxterm.module\n-@COND_i386_ieee1275_TRUE@am__append_4162 = gfxterm.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_4163 = \n-@COND_i386_ieee1275_TRUE@am__append_4164 = $(nodist_gfxterm_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_4165 =  \\\n+@COND_i386_multiboot_TRUE@am__append_4152 = gfxterm.mod\n+@COND_i386_multiboot_TRUE@am__append_4153 = gfxterm.marker\n+@COND_i386_ieee1275_TRUE@am__append_4154 = gfxterm.module\n+@COND_i386_ieee1275_TRUE@am__append_4155 = gfxterm.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_4156 = \n+@COND_i386_ieee1275_TRUE@am__append_4157 = $(nodist_gfxterm_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_4158 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tgfxterm.marker\n-@COND_i386_ieee1275_TRUE@am__append_4166 = gfxterm.mod\n-@COND_i386_ieee1275_TRUE@am__append_4167 = gfxterm.marker\n-@COND_x86_64_efi_TRUE@am__append_4168 = gfxterm.module\n-@COND_x86_64_efi_TRUE@am__append_4169 = gfxterm.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4170 = \n-@COND_x86_64_efi_TRUE@am__append_4171 = $(nodist_gfxterm_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4172 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_4159 = gfxterm.mod\n+@COND_i386_ieee1275_TRUE@am__append_4160 = gfxterm.marker\n+@COND_x86_64_efi_TRUE@am__append_4161 = gfxterm.module\n+@COND_x86_64_efi_TRUE@am__append_4162 = gfxterm.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4163 = \n+@COND_x86_64_efi_TRUE@am__append_4164 = $(nodist_gfxterm_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4165 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tgfxterm.marker\n-@COND_x86_64_efi_TRUE@am__append_4173 = gfxterm.mod\n-@COND_x86_64_efi_TRUE@am__append_4174 = gfxterm.marker\n-@COND_i386_xen_TRUE@am__append_4175 = gfxterm.module\n-@COND_i386_xen_TRUE@am__append_4176 = gfxterm.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__append_4177 = \n-@COND_i386_xen_TRUE@am__append_4178 = $(nodist_gfxterm_module_SOURCES)\n-@COND_i386_xen_TRUE@am__append_4179 =  \\\n+@COND_x86_64_efi_TRUE@am__append_4166 = gfxterm.mod\n+@COND_x86_64_efi_TRUE@am__append_4167 = gfxterm.marker\n+@COND_i386_xen_TRUE@am__append_4168 = gfxterm.module\n+@COND_i386_xen_TRUE@am__append_4169 = gfxterm.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__append_4170 = \n+@COND_i386_xen_TRUE@am__append_4171 = $(nodist_gfxterm_module_SOURCES)\n+@COND_i386_xen_TRUE@am__append_4172 =  \\\n @COND_i386_xen_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_i386_xen_TRUE@\tgfxterm.marker\n-@COND_i386_xen_TRUE@am__append_4180 = gfxterm.mod\n-@COND_i386_xen_TRUE@am__append_4181 = gfxterm.marker\n-@COND_x86_64_xen_TRUE@am__append_4182 = gfxterm.module\n-@COND_x86_64_xen_TRUE@am__append_4183 = gfxterm.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__append_4184 = \n-@COND_x86_64_xen_TRUE@am__append_4185 = $(nodist_gfxterm_module_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_4186 =  \\\n+@COND_i386_xen_TRUE@am__append_4173 = gfxterm.mod\n+@COND_i386_xen_TRUE@am__append_4174 = gfxterm.marker\n+@COND_x86_64_xen_TRUE@am__append_4175 = gfxterm.module\n+@COND_x86_64_xen_TRUE@am__append_4176 = gfxterm.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__append_4177 = \n+@COND_x86_64_xen_TRUE@am__append_4178 = $(nodist_gfxterm_module_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_4179 =  \\\n @COND_x86_64_xen_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_x86_64_xen_TRUE@\tgfxterm.marker\n-@COND_x86_64_xen_TRUE@am__append_4187 = gfxterm.mod\n-@COND_x86_64_xen_TRUE@am__append_4188 = gfxterm.marker\n-@COND_i386_xen_pvh_TRUE@am__append_4189 = gfxterm.module\n-@COND_i386_xen_pvh_TRUE@am__append_4190 = gfxterm.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_4191 = \n-@COND_i386_xen_pvh_TRUE@am__append_4192 = $(nodist_gfxterm_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_4193 =  \\\n+@COND_x86_64_xen_TRUE@am__append_4180 = gfxterm.mod\n+@COND_x86_64_xen_TRUE@am__append_4181 = gfxterm.marker\n+@COND_i386_xen_pvh_TRUE@am__append_4182 = gfxterm.module\n+@COND_i386_xen_pvh_TRUE@am__append_4183 = gfxterm.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_4184 = \n+@COND_i386_xen_pvh_TRUE@am__append_4185 = $(nodist_gfxterm_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_4186 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tgfxterm.marker\n-@COND_i386_xen_pvh_TRUE@am__append_4194 = gfxterm.mod\n-@COND_i386_xen_pvh_TRUE@am__append_4195 = gfxterm.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_4196 = gfxterm.module\n-@COND_sparc64_ieee1275_TRUE@am__append_4197 = gfxterm.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__append_4198 = \n-@COND_sparc64_ieee1275_TRUE@am__append_4199 = $(nodist_gfxterm_module_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_4200 =  \\\n+@COND_i386_xen_pvh_TRUE@am__append_4187 = gfxterm.mod\n+@COND_i386_xen_pvh_TRUE@am__append_4188 = gfxterm.marker\n+@COND_sparc64_ieee1275_TRUE@am__append_4189 = gfxterm.module\n+@COND_sparc64_ieee1275_TRUE@am__append_4190 = gfxterm.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__append_4191 = \n+@COND_sparc64_ieee1275_TRUE@am__append_4192 = $(nodist_gfxterm_module_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_4193 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tgfxterm.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_4201 = gfxterm.mod\n-@COND_sparc64_ieee1275_TRUE@am__append_4202 = gfxterm.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_4203 = gfxterm.module\n-@COND_powerpc_ieee1275_TRUE@am__append_4204 = gfxterm.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__append_4205 = \n-@COND_powerpc_ieee1275_TRUE@am__append_4206 = $(nodist_gfxterm_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_4207 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__append_4194 = gfxterm.mod\n+@COND_sparc64_ieee1275_TRUE@am__append_4195 = gfxterm.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_4196 = gfxterm.module\n+@COND_powerpc_ieee1275_TRUE@am__append_4197 = gfxterm.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_4198 = \n+@COND_powerpc_ieee1275_TRUE@am__append_4199 = $(nodist_gfxterm_module_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_4200 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tgfxterm.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_4208 = gfxterm.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_4209 = gfxterm.marker\n-@COND_mips_arc_TRUE@am__append_4210 = gfxterm.module\n-@COND_mips_arc_TRUE@am__append_4211 = gfxterm.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__append_4212 = \n-@COND_mips_arc_TRUE@am__append_4213 = $(nodist_gfxterm_module_SOURCES)\n-@COND_mips_arc_TRUE@am__append_4214 =  \\\n+@COND_powerpc_ieee1275_TRUE@am__append_4201 = gfxterm.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_4202 = gfxterm.marker\n+@COND_mips_arc_TRUE@am__append_4203 = gfxterm.module\n+@COND_mips_arc_TRUE@am__append_4204 = gfxterm.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__append_4205 = \n+@COND_mips_arc_TRUE@am__append_4206 = $(nodist_gfxterm_module_SOURCES)\n+@COND_mips_arc_TRUE@am__append_4207 =  \\\n @COND_mips_arc_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_mips_arc_TRUE@\tgfxterm.marker\n-@COND_mips_arc_TRUE@am__append_4215 = gfxterm.mod\n-@COND_mips_arc_TRUE@am__append_4216 = gfxterm.marker\n-@COND_ia64_efi_TRUE@am__append_4217 = gfxterm.module\n-@COND_ia64_efi_TRUE@am__append_4218 = gfxterm.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_4219 = \n-@COND_ia64_efi_TRUE@am__append_4220 = $(nodist_gfxterm_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_4221 =  \\\n+@COND_mips_arc_TRUE@am__append_4208 = gfxterm.mod\n+@COND_mips_arc_TRUE@am__append_4209 = gfxterm.marker\n+@COND_ia64_efi_TRUE@am__append_4210 = gfxterm.module\n+@COND_ia64_efi_TRUE@am__append_4211 = gfxterm.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_4212 = \n+@COND_ia64_efi_TRUE@am__append_4213 = $(nodist_gfxterm_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_4214 =  \\\n @COND_ia64_efi_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tgfxterm.marker\n-@COND_ia64_efi_TRUE@am__append_4222 = gfxterm.mod\n-@COND_ia64_efi_TRUE@am__append_4223 = gfxterm.marker\n-@COND_mips_qemu_mips_TRUE@am__append_4224 = gfxterm.module\n-@COND_mips_qemu_mips_TRUE@am__append_4225 = gfxterm.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_4226 = \n-@COND_mips_qemu_mips_TRUE@am__append_4227 = $(nodist_gfxterm_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_4228 =  \\\n+@COND_ia64_efi_TRUE@am__append_4215 = gfxterm.mod\n+@COND_ia64_efi_TRUE@am__append_4216 = gfxterm.marker\n+@COND_mips_qemu_mips_TRUE@am__append_4217 = gfxterm.module\n+@COND_mips_qemu_mips_TRUE@am__append_4218 = gfxterm.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_4219 = \n+@COND_mips_qemu_mips_TRUE@am__append_4220 = $(nodist_gfxterm_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_4221 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tgfxterm.marker\n-@COND_mips_qemu_mips_TRUE@am__append_4229 = gfxterm.mod\n-@COND_mips_qemu_mips_TRUE@am__append_4230 = gfxterm.marker\n-@COND_arm_uboot_TRUE@am__append_4231 = gfxterm.module\n-@COND_arm_uboot_TRUE@am__append_4232 = gfxterm.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__append_4233 = \n-@COND_arm_uboot_TRUE@am__append_4234 = $(nodist_gfxterm_module_SOURCES)\n-@COND_arm_uboot_TRUE@am__append_4235 =  \\\n+@COND_mips_qemu_mips_TRUE@am__append_4222 = gfxterm.mod\n+@COND_mips_qemu_mips_TRUE@am__append_4223 = gfxterm.marker\n+@COND_arm_uboot_TRUE@am__append_4224 = gfxterm.module\n+@COND_arm_uboot_TRUE@am__append_4225 = gfxterm.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__append_4226 = \n+@COND_arm_uboot_TRUE@am__append_4227 = $(nodist_gfxterm_module_SOURCES)\n+@COND_arm_uboot_TRUE@am__append_4228 =  \\\n @COND_arm_uboot_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_arm_uboot_TRUE@\tgfxterm.marker\n-@COND_arm_uboot_TRUE@am__append_4236 = gfxterm.mod\n-@COND_arm_uboot_TRUE@am__append_4237 = gfxterm.marker\n-@COND_arm_efi_TRUE@am__append_4238 = gfxterm.module\n-@COND_arm_efi_TRUE@am__append_4239 = gfxterm.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_4240 = \n-@COND_arm_efi_TRUE@am__append_4241 = $(nodist_gfxterm_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_4242 = $(nodist_gfxterm_module_SOURCES) \\\n+@COND_arm_uboot_TRUE@am__append_4229 = gfxterm.mod\n+@COND_arm_uboot_TRUE@am__append_4230 = gfxterm.marker\n+@COND_arm_efi_TRUE@am__append_4231 = gfxterm.module\n+@COND_arm_efi_TRUE@am__append_4232 = gfxterm.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_4233 = \n+@COND_arm_efi_TRUE@am__append_4234 = $(nodist_gfxterm_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_4235 = $(nodist_gfxterm_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tgfxterm.marker\n-@COND_arm_efi_TRUE@am__append_4243 = gfxterm.mod\n-@COND_arm_efi_TRUE@am__append_4244 = gfxterm.marker\n-@COND_arm64_efi_TRUE@am__append_4245 = gfxterm.module\n-@COND_arm64_efi_TRUE@am__append_4246 = gfxterm.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_4247 = \n-@COND_arm64_efi_TRUE@am__append_4248 = $(nodist_gfxterm_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_4249 =  \\\n+@COND_arm_efi_TRUE@am__append_4236 = gfxterm.mod\n+@COND_arm_efi_TRUE@am__append_4237 = gfxterm.marker\n+@COND_arm64_efi_TRUE@am__append_4238 = gfxterm.module\n+@COND_arm64_efi_TRUE@am__append_4239 = gfxterm.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_4240 = \n+@COND_arm64_efi_TRUE@am__append_4241 = $(nodist_gfxterm_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_4242 =  \\\n @COND_arm64_efi_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tgfxterm.marker\n-@COND_arm64_efi_TRUE@am__append_4250 = gfxterm.mod\n-@COND_arm64_efi_TRUE@am__append_4251 = gfxterm.marker\n-@COND_riscv32_efi_TRUE@am__append_4252 = gfxterm.module\n-@COND_riscv32_efi_TRUE@am__append_4253 = gfxterm.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_4254 = \n-@COND_riscv32_efi_TRUE@am__append_4255 = $(nodist_gfxterm_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_4256 =  \\\n+@COND_arm64_efi_TRUE@am__append_4243 = gfxterm.mod\n+@COND_arm64_efi_TRUE@am__append_4244 = gfxterm.marker\n+@COND_riscv32_efi_TRUE@am__append_4245 = gfxterm.module\n+@COND_riscv32_efi_TRUE@am__append_4246 = gfxterm.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_4247 = \n+@COND_riscv32_efi_TRUE@am__append_4248 = $(nodist_gfxterm_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_4249 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tgfxterm.marker\n-@COND_riscv32_efi_TRUE@am__append_4257 = gfxterm.mod\n-@COND_riscv32_efi_TRUE@am__append_4258 = gfxterm.marker\n-@COND_riscv64_efi_TRUE@am__append_4259 = gfxterm.module\n-@COND_riscv64_efi_TRUE@am__append_4260 = gfxterm.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_4261 = \n-@COND_riscv64_efi_TRUE@am__append_4262 = $(nodist_gfxterm_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_4263 =  \\\n+@COND_riscv32_efi_TRUE@am__append_4250 = gfxterm.mod\n+@COND_riscv32_efi_TRUE@am__append_4251 = gfxterm.marker\n+@COND_riscv64_efi_TRUE@am__append_4252 = gfxterm.module\n+@COND_riscv64_efi_TRUE@am__append_4253 = gfxterm.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_4254 = \n+@COND_riscv64_efi_TRUE@am__append_4255 = $(nodist_gfxterm_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_4256 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_gfxterm_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tgfxterm.marker\n-@COND_riscv64_efi_TRUE@am__append_4264 = gfxterm.mod\n-@COND_riscv64_efi_TRUE@am__append_4265 = gfxterm.marker\n-@COND_i386_pc_TRUE@am__append_4266 = serial.module\n-@COND_i386_pc_TRUE@am__append_4267 = serial.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_4257 = gfxterm.mod\n+@COND_riscv64_efi_TRUE@am__append_4258 = gfxterm.marker\n+@COND_i386_pc_TRUE@am__append_4259 = serial.module\n+@COND_i386_pc_TRUE@am__append_4260 = serial.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@serial_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_4268 = \n-@COND_i386_pc_TRUE@am__append_4269 = $(nodist_serial_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_4270 = $(nodist_serial_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_4261 = \n+@COND_i386_pc_TRUE@am__append_4262 = $(nodist_serial_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_4263 = $(nodist_serial_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tserial.marker\n-@COND_i386_pc_TRUE@am__append_4271 = serial.mod\n-@COND_i386_pc_TRUE@am__append_4272 = serial.marker\n-@COND_i386_efi_TRUE@am__append_4273 = serial.module\n-@COND_i386_efi_TRUE@am__append_4274 = serial.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_4275 = \n-@COND_i386_efi_TRUE@am__append_4276 = $(nodist_serial_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_4277 = $(nodist_serial_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_4264 = serial.mod\n+@COND_i386_pc_TRUE@am__append_4265 = serial.marker\n+@COND_i386_efi_TRUE@am__append_4266 = serial.module\n+@COND_i386_efi_TRUE@am__append_4267 = serial.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_4268 = \n+@COND_i386_efi_TRUE@am__append_4269 = $(nodist_serial_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_4270 = $(nodist_serial_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tserial.marker\n-@COND_i386_efi_TRUE@am__append_4278 = serial.mod\n-@COND_i386_efi_TRUE@am__append_4279 = serial.marker\n-@COND_i386_qemu_TRUE@am__append_4280 = serial.module\n-@COND_i386_qemu_TRUE@am__append_4281 = serial.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_4282 = \n-@COND_i386_qemu_TRUE@am__append_4283 = $(nodist_serial_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_4284 =  \\\n+@COND_i386_efi_TRUE@am__append_4271 = serial.mod\n+@COND_i386_efi_TRUE@am__append_4272 = serial.marker\n+@COND_i386_qemu_TRUE@am__append_4273 = serial.module\n+@COND_i386_qemu_TRUE@am__append_4274 = serial.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_4275 = \n+@COND_i386_qemu_TRUE@am__append_4276 = $(nodist_serial_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_4277 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_serial_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tserial.marker\n-@COND_i386_qemu_TRUE@am__append_4285 = serial.mod\n-@COND_i386_qemu_TRUE@am__append_4286 = serial.marker\n-@COND_i386_coreboot_TRUE@am__append_4287 = serial.module\n-@COND_i386_coreboot_TRUE@am__append_4288 = serial.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_4289 = \n-@COND_i386_coreboot_TRUE@am__append_4290 = $(nodist_serial_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_4291 =  \\\n+@COND_i386_qemu_TRUE@am__append_4278 = serial.mod\n+@COND_i386_qemu_TRUE@am__append_4279 = serial.marker\n+@COND_i386_coreboot_TRUE@am__append_4280 = serial.module\n+@COND_i386_coreboot_TRUE@am__append_4281 = serial.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_4282 = \n+@COND_i386_coreboot_TRUE@am__append_4283 = $(nodist_serial_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_4284 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_serial_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tserial.marker\n-@COND_i386_coreboot_TRUE@am__append_4292 = serial.mod\n-@COND_i386_coreboot_TRUE@am__append_4293 = serial.marker\n-@COND_i386_multiboot_TRUE@am__append_4294 = serial.module\n-@COND_i386_multiboot_TRUE@am__append_4295 = serial.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_4296 = \n-@COND_i386_multiboot_TRUE@am__append_4297 = $(nodist_serial_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_4298 =  \\\n+@COND_i386_coreboot_TRUE@am__append_4285 = serial.mod\n+@COND_i386_coreboot_TRUE@am__append_4286 = serial.marker\n+@COND_i386_multiboot_TRUE@am__append_4287 = serial.module\n+@COND_i386_multiboot_TRUE@am__append_4288 = serial.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_4289 = \n+@COND_i386_multiboot_TRUE@am__append_4290 = $(nodist_serial_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_4291 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_serial_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tserial.marker\n-@COND_i386_multiboot_TRUE@am__append_4299 = serial.mod\n-@COND_i386_multiboot_TRUE@am__append_4300 = serial.marker\n-@COND_i386_ieee1275_TRUE@am__append_4301 = serial.module\n-@COND_i386_ieee1275_TRUE@am__append_4302 = serial.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_4303 = \n-@COND_i386_ieee1275_TRUE@am__append_4304 = $(nodist_serial_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_4305 =  \\\n+@COND_i386_multiboot_TRUE@am__append_4292 = serial.mod\n+@COND_i386_multiboot_TRUE@am__append_4293 = serial.marker\n+@COND_i386_ieee1275_TRUE@am__append_4294 = serial.module\n+@COND_i386_ieee1275_TRUE@am__append_4295 = serial.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_4296 = \n+@COND_i386_ieee1275_TRUE@am__append_4297 = $(nodist_serial_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_4298 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_serial_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tserial.marker\n-@COND_i386_ieee1275_TRUE@am__append_4306 = serial.mod\n-@COND_i386_ieee1275_TRUE@am__append_4307 = serial.marker\n-@COND_x86_64_efi_TRUE@am__append_4308 = serial.module\n-@COND_x86_64_efi_TRUE@am__append_4309 = serial.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4310 = \n-@COND_x86_64_efi_TRUE@am__append_4311 = $(nodist_serial_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4312 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_4299 = serial.mod\n+@COND_i386_ieee1275_TRUE@am__append_4300 = serial.marker\n+@COND_x86_64_efi_TRUE@am__append_4301 = serial.module\n+@COND_x86_64_efi_TRUE@am__append_4302 = serial.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4303 = \n+@COND_x86_64_efi_TRUE@am__append_4304 = $(nodist_serial_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4305 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_serial_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tserial.marker\n-@COND_x86_64_efi_TRUE@am__append_4313 = serial.mod\n-@COND_x86_64_efi_TRUE@am__append_4314 = serial.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_4315 = serial.module\n-@COND_sparc64_ieee1275_TRUE@am__append_4316 = serial.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__append_4317 = \n-@COND_sparc64_ieee1275_TRUE@am__append_4318 = $(nodist_serial_module_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_4319 =  \\\n+@COND_x86_64_efi_TRUE@am__append_4306 = serial.mod\n+@COND_x86_64_efi_TRUE@am__append_4307 = serial.marker\n+@COND_sparc64_ieee1275_TRUE@am__append_4308 = serial.module\n+@COND_sparc64_ieee1275_TRUE@am__append_4309 = serial.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__append_4310 = \n+@COND_sparc64_ieee1275_TRUE@am__append_4311 = $(nodist_serial_module_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_4312 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_serial_module_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tserial.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_4320 = serial.mod\n-@COND_sparc64_ieee1275_TRUE@am__append_4321 = serial.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_4322 = serial.module\n-@COND_powerpc_ieee1275_TRUE@am__append_4323 = serial.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__append_4324 = \n-@COND_powerpc_ieee1275_TRUE@am__append_4325 = $(nodist_serial_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_4326 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__append_4313 = serial.mod\n+@COND_sparc64_ieee1275_TRUE@am__append_4314 = serial.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_4315 = serial.module\n+@COND_powerpc_ieee1275_TRUE@am__append_4316 = serial.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_4317 = \n+@COND_powerpc_ieee1275_TRUE@am__append_4318 = $(nodist_serial_module_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_4319 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_serial_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tserial.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_4327 = serial.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_4328 = serial.marker\n-@COND_mips_arc_TRUE@am__append_4329 = serial.module\n-@COND_mips_arc_TRUE@am__append_4330 = serial.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__append_4331 = \n-@COND_mips_arc_TRUE@am__append_4332 = $(nodist_serial_module_SOURCES)\n-@COND_mips_arc_TRUE@am__append_4333 = $(nodist_serial_module_SOURCES) \\\n+@COND_powerpc_ieee1275_TRUE@am__append_4320 = serial.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_4321 = serial.marker\n+@COND_mips_arc_TRUE@am__append_4322 = serial.module\n+@COND_mips_arc_TRUE@am__append_4323 = serial.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__append_4324 = \n+@COND_mips_arc_TRUE@am__append_4325 = $(nodist_serial_module_SOURCES)\n+@COND_mips_arc_TRUE@am__append_4326 = $(nodist_serial_module_SOURCES) \\\n @COND_mips_arc_TRUE@\tserial.marker\n-@COND_mips_arc_TRUE@am__append_4334 = serial.mod\n-@COND_mips_arc_TRUE@am__append_4335 = serial.marker\n-@COND_ia64_efi_TRUE@am__append_4336 = serial.module\n-@COND_ia64_efi_TRUE@am__append_4337 = serial.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_4338 = \n-@COND_ia64_efi_TRUE@am__append_4339 = $(nodist_serial_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_4340 = $(nodist_serial_module_SOURCES) \\\n+@COND_mips_arc_TRUE@am__append_4327 = serial.mod\n+@COND_mips_arc_TRUE@am__append_4328 = serial.marker\n+@COND_ia64_efi_TRUE@am__append_4329 = serial.module\n+@COND_ia64_efi_TRUE@am__append_4330 = serial.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_4331 = \n+@COND_ia64_efi_TRUE@am__append_4332 = $(nodist_serial_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_4333 = $(nodist_serial_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tserial.marker\n-@COND_ia64_efi_TRUE@am__append_4341 = serial.mod\n-@COND_ia64_efi_TRUE@am__append_4342 = serial.marker\n-@COND_arm_efi_TRUE@am__append_4343 = serial.module\n-@COND_arm_efi_TRUE@am__append_4344 = serial.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_4345 = \n-@COND_arm_efi_TRUE@am__append_4346 = $(nodist_serial_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_4347 = $(nodist_serial_module_SOURCES) \\\n+@COND_ia64_efi_TRUE@am__append_4334 = serial.mod\n+@COND_ia64_efi_TRUE@am__append_4335 = serial.marker\n+@COND_arm_efi_TRUE@am__append_4336 = serial.module\n+@COND_arm_efi_TRUE@am__append_4337 = serial.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_4338 = \n+@COND_arm_efi_TRUE@am__append_4339 = $(nodist_serial_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_4340 = $(nodist_serial_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tserial.marker\n-@COND_arm_efi_TRUE@am__append_4348 = serial.mod\n-@COND_arm_efi_TRUE@am__append_4349 = serial.marker\n-@COND_arm64_efi_TRUE@am__append_4350 = serial.module\n-@COND_arm64_efi_TRUE@am__append_4351 = serial.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_4352 = \n-@COND_arm64_efi_TRUE@am__append_4353 = $(nodist_serial_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_4354 =  \\\n+@COND_arm_efi_TRUE@am__append_4341 = serial.mod\n+@COND_arm_efi_TRUE@am__append_4342 = serial.marker\n+@COND_arm64_efi_TRUE@am__append_4343 = serial.module\n+@COND_arm64_efi_TRUE@am__append_4344 = serial.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_4345 = \n+@COND_arm64_efi_TRUE@am__append_4346 = $(nodist_serial_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_4347 =  \\\n @COND_arm64_efi_TRUE@\t$(nodist_serial_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tserial.marker\n-@COND_arm64_efi_TRUE@am__append_4355 = serial.mod\n-@COND_arm64_efi_TRUE@am__append_4356 = serial.marker\n-@COND_arm_coreboot_TRUE@am__append_4357 = serial.module\n-@COND_arm_coreboot_TRUE@am__append_4358 = serial.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__append_4359 = \n-@COND_arm_coreboot_TRUE@am__append_4360 = $(nodist_serial_module_SOURCES)\n-@COND_arm_coreboot_TRUE@am__append_4361 =  \\\n+@COND_arm64_efi_TRUE@am__append_4348 = serial.mod\n+@COND_arm64_efi_TRUE@am__append_4349 = serial.marker\n+@COND_arm_coreboot_TRUE@am__append_4350 = serial.module\n+@COND_arm_coreboot_TRUE@am__append_4351 = serial.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__append_4352 = \n+@COND_arm_coreboot_TRUE@am__append_4353 = $(nodist_serial_module_SOURCES)\n+@COND_arm_coreboot_TRUE@am__append_4354 =  \\\n @COND_arm_coreboot_TRUE@\t$(nodist_serial_module_SOURCES) \\\n @COND_arm_coreboot_TRUE@\tserial.marker\n-@COND_arm_coreboot_TRUE@am__append_4362 = serial.mod\n-@COND_arm_coreboot_TRUE@am__append_4363 = serial.marker\n-@COND_riscv32_efi_TRUE@am__append_4364 = serial.module\n-@COND_riscv32_efi_TRUE@am__append_4365 = serial.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_4366 = \n-@COND_riscv32_efi_TRUE@am__append_4367 = $(nodist_serial_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_4368 =  \\\n+@COND_arm_coreboot_TRUE@am__append_4355 = serial.mod\n+@COND_arm_coreboot_TRUE@am__append_4356 = serial.marker\n+@COND_riscv32_efi_TRUE@am__append_4357 = serial.module\n+@COND_riscv32_efi_TRUE@am__append_4358 = serial.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_4359 = \n+@COND_riscv32_efi_TRUE@am__append_4360 = $(nodist_serial_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_4361 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_serial_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tserial.marker\n-@COND_riscv32_efi_TRUE@am__append_4369 = serial.mod\n-@COND_riscv32_efi_TRUE@am__append_4370 = serial.marker\n-@COND_riscv64_efi_TRUE@am__append_4371 = serial.module\n-@COND_riscv64_efi_TRUE@am__append_4372 = serial.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_4373 = \n-@COND_riscv64_efi_TRUE@am__append_4374 = $(nodist_serial_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_4375 =  \\\n+@COND_riscv32_efi_TRUE@am__append_4362 = serial.mod\n+@COND_riscv32_efi_TRUE@am__append_4363 = serial.marker\n+@COND_riscv64_efi_TRUE@am__append_4364 = serial.module\n+@COND_riscv64_efi_TRUE@am__append_4365 = serial.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_4366 = \n+@COND_riscv64_efi_TRUE@am__append_4367 = $(nodist_serial_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_4368 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_serial_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tserial.marker\n-@COND_riscv64_efi_TRUE@am__append_4376 = serial.mod\n-@COND_riscv64_efi_TRUE@am__append_4377 = serial.marker\n-@COND_i386_pc_TRUE@am__append_4378 = sendkey.module terminfo.module\n-@COND_i386_pc_TRUE@am__append_4379 = sendkey.module$(EXEEXT) \\\n+@COND_riscv64_efi_TRUE@am__append_4369 = serial.mod\n+@COND_riscv64_efi_TRUE@am__append_4370 = serial.marker\n+@COND_i386_pc_TRUE@am__append_4371 = sendkey.module terminfo.module\n+@COND_i386_pc_TRUE@am__append_4372 = sendkey.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tterminfo.module$(EXEEXT)\n @COND_i386_pc_FALSE@sendkey_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_4380 =\n-@COND_i386_pc_TRUE@am__append_4381 = $(nodist_sendkey_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_4373 =\n+@COND_i386_pc_TRUE@am__append_4374 = $(nodist_sendkey_module_SOURCES) \\\n @COND_i386_pc_TRUE@\t$(nodist_terminfo_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_4382 = $(nodist_sendkey_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_4375 = $(nodist_sendkey_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tsendkey.marker \\\n @COND_i386_pc_TRUE@\t$(nodist_terminfo_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tterminfo.marker\n-@COND_i386_pc_TRUE@am__append_4383 = sendkey.mod terminfo.mod\n-@COND_i386_pc_TRUE@am__append_4384 = sendkey.marker terminfo.marker\n+@COND_i386_pc_TRUE@am__append_4376 = sendkey.mod terminfo.mod\n+@COND_i386_pc_TRUE@am__append_4377 = sendkey.marker terminfo.marker\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_ia64_efi_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_x86_64_efi_FALSE@terminfo_module_DEPENDENCIES =\n-@COND_i386_efi_TRUE@am__append_4385 = terminfo.module\n-@COND_i386_efi_TRUE@am__append_4386 = terminfo.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_4387 = \n-@COND_i386_efi_TRUE@am__append_4388 = $(nodist_terminfo_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_4389 =  \\\n+@COND_i386_efi_TRUE@am__append_4378 = terminfo.module\n+@COND_i386_efi_TRUE@am__append_4379 = terminfo.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_4380 = \n+@COND_i386_efi_TRUE@am__append_4381 = $(nodist_terminfo_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_4382 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_terminfo_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tterminfo.marker\n-@COND_i386_efi_TRUE@am__append_4390 = terminfo.mod\n-@COND_i386_efi_TRUE@am__append_4391 = terminfo.marker\n-@COND_i386_qemu_TRUE@am__append_4392 = terminfo.module\n-@COND_i386_qemu_TRUE@am__append_4393 = terminfo.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_4394 = \n-@COND_i386_qemu_TRUE@am__append_4395 = $(nodist_terminfo_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_4396 =  \\\n+@COND_i386_efi_TRUE@am__append_4383 = terminfo.mod\n+@COND_i386_efi_TRUE@am__append_4384 = terminfo.marker\n+@COND_i386_qemu_TRUE@am__append_4385 = terminfo.module\n+@COND_i386_qemu_TRUE@am__append_4386 = terminfo.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_4387 = \n+@COND_i386_qemu_TRUE@am__append_4388 = $(nodist_terminfo_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_4389 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_terminfo_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tterminfo.marker\n-@COND_i386_qemu_TRUE@am__append_4397 = terminfo.mod\n-@COND_i386_qemu_TRUE@am__append_4398 = terminfo.marker\n-@COND_i386_coreboot_TRUE@am__append_4399 = terminfo.module\n-@COND_i386_coreboot_TRUE@am__append_4400 = terminfo.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_4401 = \n-@COND_i386_coreboot_TRUE@am__append_4402 = $(nodist_terminfo_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_4403 =  \\\n+@COND_i386_qemu_TRUE@am__append_4390 = terminfo.mod\n+@COND_i386_qemu_TRUE@am__append_4391 = terminfo.marker\n+@COND_i386_coreboot_TRUE@am__append_4392 = terminfo.module\n+@COND_i386_coreboot_TRUE@am__append_4393 = terminfo.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_4394 = \n+@COND_i386_coreboot_TRUE@am__append_4395 = $(nodist_terminfo_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_4396 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_terminfo_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tterminfo.marker\n-@COND_i386_coreboot_TRUE@am__append_4404 = terminfo.mod\n-@COND_i386_coreboot_TRUE@am__append_4405 = terminfo.marker\n-@COND_i386_multiboot_TRUE@am__append_4406 = terminfo.module\n-@COND_i386_multiboot_TRUE@am__append_4407 = terminfo.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_4408 = \n-@COND_i386_multiboot_TRUE@am__append_4409 = $(nodist_terminfo_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_4410 =  \\\n+@COND_i386_coreboot_TRUE@am__append_4397 = terminfo.mod\n+@COND_i386_coreboot_TRUE@am__append_4398 = terminfo.marker\n+@COND_i386_multiboot_TRUE@am__append_4399 = terminfo.module\n+@COND_i386_multiboot_TRUE@am__append_4400 = terminfo.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_4401 = \n+@COND_i386_multiboot_TRUE@am__append_4402 = $(nodist_terminfo_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_4403 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_terminfo_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tterminfo.marker\n-@COND_i386_multiboot_TRUE@am__append_4411 = terminfo.mod\n-@COND_i386_multiboot_TRUE@am__append_4412 = terminfo.marker\n-@COND_x86_64_efi_TRUE@am__append_4413 = terminfo.module\n-@COND_x86_64_efi_TRUE@am__append_4414 = terminfo.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4415 = \n-@COND_x86_64_efi_TRUE@am__append_4416 = $(nodist_terminfo_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4417 =  \\\n+@COND_i386_multiboot_TRUE@am__append_4404 = terminfo.mod\n+@COND_i386_multiboot_TRUE@am__append_4405 = terminfo.marker\n+@COND_x86_64_efi_TRUE@am__append_4406 = terminfo.module\n+@COND_x86_64_efi_TRUE@am__append_4407 = terminfo.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4408 = \n+@COND_x86_64_efi_TRUE@am__append_4409 = $(nodist_terminfo_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4410 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_terminfo_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tterminfo.marker\n-@COND_x86_64_efi_TRUE@am__append_4418 = terminfo.mod\n-@COND_x86_64_efi_TRUE@am__append_4419 = terminfo.marker\n-@COND_ia64_efi_TRUE@am__append_4420 = terminfo.module\n-@COND_ia64_efi_TRUE@am__append_4421 = terminfo.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_4422 = \n-@COND_ia64_efi_TRUE@am__append_4423 = $(nodist_terminfo_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_4424 =  \\\n+@COND_x86_64_efi_TRUE@am__append_4411 = terminfo.mod\n+@COND_x86_64_efi_TRUE@am__append_4412 = terminfo.marker\n+@COND_ia64_efi_TRUE@am__append_4413 = terminfo.module\n+@COND_ia64_efi_TRUE@am__append_4414 = terminfo.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_4415 = \n+@COND_ia64_efi_TRUE@am__append_4416 = $(nodist_terminfo_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_4417 =  \\\n @COND_ia64_efi_TRUE@\t$(nodist_terminfo_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tterminfo.marker\n-@COND_ia64_efi_TRUE@am__append_4425 = terminfo.mod\n-@COND_ia64_efi_TRUE@am__append_4426 = terminfo.marker\n-@COND_arm_efi_TRUE@am__append_4427 = terminfo.module\n-@COND_arm_efi_TRUE@am__append_4428 = terminfo.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_4429 = \n-@COND_arm_efi_TRUE@am__append_4430 = $(nodist_terminfo_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_4431 =  \\\n+@COND_ia64_efi_TRUE@am__append_4418 = terminfo.mod\n+@COND_ia64_efi_TRUE@am__append_4419 = terminfo.marker\n+@COND_arm_efi_TRUE@am__append_4420 = terminfo.module\n+@COND_arm_efi_TRUE@am__append_4421 = terminfo.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_4422 = \n+@COND_arm_efi_TRUE@am__append_4423 = $(nodist_terminfo_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_4424 =  \\\n @COND_arm_efi_TRUE@\t$(nodist_terminfo_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tterminfo.marker\n-@COND_arm_efi_TRUE@am__append_4432 = terminfo.mod\n-@COND_arm_efi_TRUE@am__append_4433 = terminfo.marker\n-@COND_arm64_efi_TRUE@am__append_4434 = terminfo.module\n-@COND_arm64_efi_TRUE@am__append_4435 = terminfo.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_4436 = \n-@COND_arm64_efi_TRUE@am__append_4437 = $(nodist_terminfo_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_4438 =  \\\n+@COND_arm_efi_TRUE@am__append_4425 = terminfo.mod\n+@COND_arm_efi_TRUE@am__append_4426 = terminfo.marker\n+@COND_arm64_efi_TRUE@am__append_4427 = terminfo.module\n+@COND_arm64_efi_TRUE@am__append_4428 = terminfo.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_4429 = \n+@COND_arm64_efi_TRUE@am__append_4430 = $(nodist_terminfo_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_4431 =  \\\n @COND_arm64_efi_TRUE@\t$(nodist_terminfo_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tterminfo.marker\n-@COND_arm64_efi_TRUE@am__append_4439 = terminfo.mod\n-@COND_arm64_efi_TRUE@am__append_4440 = terminfo.marker\n-@COND_arm_coreboot_TRUE@am__append_4441 = terminfo.module\n-@COND_arm_coreboot_TRUE@am__append_4442 = terminfo.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__append_4443 = \n-@COND_arm_coreboot_TRUE@am__append_4444 = $(nodist_terminfo_module_SOURCES)\n-@COND_arm_coreboot_TRUE@am__append_4445 =  \\\n+@COND_arm64_efi_TRUE@am__append_4432 = terminfo.mod\n+@COND_arm64_efi_TRUE@am__append_4433 = terminfo.marker\n+@COND_arm_coreboot_TRUE@am__append_4434 = terminfo.module\n+@COND_arm_coreboot_TRUE@am__append_4435 = terminfo.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__append_4436 = \n+@COND_arm_coreboot_TRUE@am__append_4437 = $(nodist_terminfo_module_SOURCES)\n+@COND_arm_coreboot_TRUE@am__append_4438 =  \\\n @COND_arm_coreboot_TRUE@\t$(nodist_terminfo_module_SOURCES) \\\n @COND_arm_coreboot_TRUE@\tterminfo.marker\n-@COND_arm_coreboot_TRUE@am__append_4446 = terminfo.mod\n-@COND_arm_coreboot_TRUE@am__append_4447 = terminfo.marker\n-@COND_riscv32_efi_TRUE@am__append_4448 = terminfo.module\n-@COND_riscv32_efi_TRUE@am__append_4449 = terminfo.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_4450 = \n-@COND_riscv32_efi_TRUE@am__append_4451 = $(nodist_terminfo_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_4452 =  \\\n+@COND_arm_coreboot_TRUE@am__append_4439 = terminfo.mod\n+@COND_arm_coreboot_TRUE@am__append_4440 = terminfo.marker\n+@COND_riscv32_efi_TRUE@am__append_4441 = terminfo.module\n+@COND_riscv32_efi_TRUE@am__append_4442 = terminfo.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_4443 = \n+@COND_riscv32_efi_TRUE@am__append_4444 = $(nodist_terminfo_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_4445 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_terminfo_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tterminfo.marker\n-@COND_riscv32_efi_TRUE@am__append_4453 = terminfo.mod\n-@COND_riscv32_efi_TRUE@am__append_4454 = terminfo.marker\n-@COND_riscv64_efi_TRUE@am__append_4455 = terminfo.module\n-@COND_riscv64_efi_TRUE@am__append_4456 = terminfo.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_4457 = \n-@COND_riscv64_efi_TRUE@am__append_4458 = $(nodist_terminfo_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_4459 =  \\\n+@COND_riscv32_efi_TRUE@am__append_4446 = terminfo.mod\n+@COND_riscv32_efi_TRUE@am__append_4447 = terminfo.marker\n+@COND_riscv64_efi_TRUE@am__append_4448 = terminfo.module\n+@COND_riscv64_efi_TRUE@am__append_4449 = terminfo.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_4450 = \n+@COND_riscv64_efi_TRUE@am__append_4451 = $(nodist_terminfo_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_4452 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_terminfo_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tterminfo.marker\n-@COND_riscv64_efi_TRUE@am__append_4460 = terminfo.mod\n-@COND_riscv64_efi_TRUE@am__append_4461 = terminfo.marker\n-@COND_i386_pc_TRUE@am__append_4462 = usb_keyboard.module\n-@COND_i386_pc_TRUE@am__append_4463 = usb_keyboard.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_4453 = terminfo.mod\n+@COND_riscv64_efi_TRUE@am__append_4454 = terminfo.marker\n+@COND_i386_pc_TRUE@am__append_4455 = usb_keyboard.module\n+@COND_i386_pc_TRUE@am__append_4456 = usb_keyboard.module$(EXEEXT)\n @COND_arm_coreboot_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_mips_loongson_FALSE@@COND_x86_64_efi_FALSE@usb_keyboard_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_4464 = \n-@COND_i386_pc_TRUE@am__append_4465 = $(nodist_usb_keyboard_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_4466 =  \\\n+@COND_i386_pc_TRUE@am__append_4457 = \n+@COND_i386_pc_TRUE@am__append_4458 = $(nodist_usb_keyboard_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_4459 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_usb_keyboard_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tusb_keyboard.marker\n-@COND_i386_pc_TRUE@am__append_4467 = usb_keyboard.mod\n-@COND_i386_pc_TRUE@am__append_4468 = usb_keyboard.marker\n-@COND_i386_efi_TRUE@am__append_4469 = usb_keyboard.module\n-@COND_i386_efi_TRUE@am__append_4470 = usb_keyboard.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_4471 = \n-@COND_i386_efi_TRUE@am__append_4472 = $(nodist_usb_keyboard_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_4473 =  \\\n+@COND_i386_pc_TRUE@am__append_4460 = usb_keyboard.mod\n+@COND_i386_pc_TRUE@am__append_4461 = usb_keyboard.marker\n+@COND_i386_efi_TRUE@am__append_4462 = usb_keyboard.module\n+@COND_i386_efi_TRUE@am__append_4463 = usb_keyboard.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_4464 = \n+@COND_i386_efi_TRUE@am__append_4465 = $(nodist_usb_keyboard_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_4466 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_usb_keyboard_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tusb_keyboard.marker\n-@COND_i386_efi_TRUE@am__append_4474 = usb_keyboard.mod\n-@COND_i386_efi_TRUE@am__append_4475 = usb_keyboard.marker\n-@COND_i386_qemu_TRUE@am__append_4476 = usb_keyboard.module\n-@COND_i386_qemu_TRUE@am__append_4477 = usb_keyboard.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_4478 = \n-@COND_i386_qemu_TRUE@am__append_4479 = $(nodist_usb_keyboard_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_4480 =  \\\n+@COND_i386_efi_TRUE@am__append_4467 = usb_keyboard.mod\n+@COND_i386_efi_TRUE@am__append_4468 = usb_keyboard.marker\n+@COND_i386_qemu_TRUE@am__append_4469 = usb_keyboard.module\n+@COND_i386_qemu_TRUE@am__append_4470 = usb_keyboard.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_4471 = \n+@COND_i386_qemu_TRUE@am__append_4472 = $(nodist_usb_keyboard_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_4473 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_usb_keyboard_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tusb_keyboard.marker\n-@COND_i386_qemu_TRUE@am__append_4481 = usb_keyboard.mod\n-@COND_i386_qemu_TRUE@am__append_4482 = usb_keyboard.marker\n-@COND_i386_coreboot_TRUE@am__append_4483 = usb_keyboard.module\n-@COND_i386_coreboot_TRUE@am__append_4484 = usb_keyboard.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_4485 = \n-@COND_i386_coreboot_TRUE@am__append_4486 = $(nodist_usb_keyboard_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_4487 = $(nodist_usb_keyboard_module_SOURCES) \\\n+@COND_i386_qemu_TRUE@am__append_4474 = usb_keyboard.mod\n+@COND_i386_qemu_TRUE@am__append_4475 = usb_keyboard.marker\n+@COND_i386_coreboot_TRUE@am__append_4476 = usb_keyboard.module\n+@COND_i386_coreboot_TRUE@am__append_4477 = usb_keyboard.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_4478 = \n+@COND_i386_coreboot_TRUE@am__append_4479 = $(nodist_usb_keyboard_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_4480 = $(nodist_usb_keyboard_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tusb_keyboard.marker\n-@COND_i386_coreboot_TRUE@am__append_4488 = usb_keyboard.mod\n-@COND_i386_coreboot_TRUE@am__append_4489 = usb_keyboard.marker\n-@COND_i386_multiboot_TRUE@am__append_4490 = usb_keyboard.module\n-@COND_i386_multiboot_TRUE@am__append_4491 = usb_keyboard.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_4492 = \n-@COND_i386_multiboot_TRUE@am__append_4493 = $(nodist_usb_keyboard_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_4494 = $(nodist_usb_keyboard_module_SOURCES) \\\n+@COND_i386_coreboot_TRUE@am__append_4481 = usb_keyboard.mod\n+@COND_i386_coreboot_TRUE@am__append_4482 = usb_keyboard.marker\n+@COND_i386_multiboot_TRUE@am__append_4483 = usb_keyboard.module\n+@COND_i386_multiboot_TRUE@am__append_4484 = usb_keyboard.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_4485 = \n+@COND_i386_multiboot_TRUE@am__append_4486 = $(nodist_usb_keyboard_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_4487 = $(nodist_usb_keyboard_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tusb_keyboard.marker\n-@COND_i386_multiboot_TRUE@am__append_4495 = usb_keyboard.mod\n-@COND_i386_multiboot_TRUE@am__append_4496 = usb_keyboard.marker\n-@COND_i386_ieee1275_TRUE@am__append_4497 = usb_keyboard.module\n-@COND_i386_ieee1275_TRUE@am__append_4498 = usb_keyboard.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_4499 = \n-@COND_i386_ieee1275_TRUE@am__append_4500 = $(nodist_usb_keyboard_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_4501 = $(nodist_usb_keyboard_module_SOURCES) \\\n+@COND_i386_multiboot_TRUE@am__append_4488 = usb_keyboard.mod\n+@COND_i386_multiboot_TRUE@am__append_4489 = usb_keyboard.marker\n+@COND_i386_ieee1275_TRUE@am__append_4490 = usb_keyboard.module\n+@COND_i386_ieee1275_TRUE@am__append_4491 = usb_keyboard.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_4492 = \n+@COND_i386_ieee1275_TRUE@am__append_4493 = $(nodist_usb_keyboard_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_4494 = $(nodist_usb_keyboard_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tusb_keyboard.marker\n-@COND_i386_ieee1275_TRUE@am__append_4502 = usb_keyboard.mod\n-@COND_i386_ieee1275_TRUE@am__append_4503 = usb_keyboard.marker\n-@COND_x86_64_efi_TRUE@am__append_4504 = usb_keyboard.module\n-@COND_x86_64_efi_TRUE@am__append_4505 = usb_keyboard.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4506 = \n-@COND_x86_64_efi_TRUE@am__append_4507 = $(nodist_usb_keyboard_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4508 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_4495 = usb_keyboard.mod\n+@COND_i386_ieee1275_TRUE@am__append_4496 = usb_keyboard.marker\n+@COND_x86_64_efi_TRUE@am__append_4497 = usb_keyboard.module\n+@COND_x86_64_efi_TRUE@am__append_4498 = usb_keyboard.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4499 = \n+@COND_x86_64_efi_TRUE@am__append_4500 = $(nodist_usb_keyboard_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4501 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_usb_keyboard_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tusb_keyboard.marker\n-@COND_x86_64_efi_TRUE@am__append_4509 = usb_keyboard.mod\n-@COND_x86_64_efi_TRUE@am__append_4510 = usb_keyboard.marker\n-@COND_mips_loongson_TRUE@am__append_4511 = usb_keyboard.module\n-@COND_mips_loongson_TRUE@am__append_4512 = usb_keyboard.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_4513 = \n-@COND_mips_loongson_TRUE@am__append_4514 = $(nodist_usb_keyboard_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_4515 = $(nodist_usb_keyboard_module_SOURCES) \\\n+@COND_x86_64_efi_TRUE@am__append_4502 = usb_keyboard.mod\n+@COND_x86_64_efi_TRUE@am__append_4503 = usb_keyboard.marker\n+@COND_mips_loongson_TRUE@am__append_4504 = usb_keyboard.module\n+@COND_mips_loongson_TRUE@am__append_4505 = usb_keyboard.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_4506 = \n+@COND_mips_loongson_TRUE@am__append_4507 = $(nodist_usb_keyboard_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_4508 = $(nodist_usb_keyboard_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tusb_keyboard.marker\n-@COND_mips_loongson_TRUE@am__append_4516 = usb_keyboard.mod\n-@COND_mips_loongson_TRUE@am__append_4517 = usb_keyboard.marker\n-@COND_arm_coreboot_TRUE@am__append_4518 = usb_keyboard.module\n-@COND_arm_coreboot_TRUE@am__append_4519 = usb_keyboard.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__append_4520 = \n-@COND_arm_coreboot_TRUE@am__append_4521 = $(nodist_usb_keyboard_module_SOURCES)\n-@COND_arm_coreboot_TRUE@am__append_4522 =  \\\n+@COND_mips_loongson_TRUE@am__append_4509 = usb_keyboard.mod\n+@COND_mips_loongson_TRUE@am__append_4510 = usb_keyboard.marker\n+@COND_arm_coreboot_TRUE@am__append_4511 = usb_keyboard.module\n+@COND_arm_coreboot_TRUE@am__append_4512 = usb_keyboard.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__append_4513 = \n+@COND_arm_coreboot_TRUE@am__append_4514 = $(nodist_usb_keyboard_module_SOURCES)\n+@COND_arm_coreboot_TRUE@am__append_4515 =  \\\n @COND_arm_coreboot_TRUE@\t$(nodist_usb_keyboard_module_SOURCES) \\\n @COND_arm_coreboot_TRUE@\tusb_keyboard.marker\n-@COND_arm_coreboot_TRUE@am__append_4523 = usb_keyboard.mod\n-@COND_arm_coreboot_TRUE@am__append_4524 = usb_keyboard.marker\n-@COND_i386_pc_TRUE@am__append_4525 = vga.module vga_text.module \\\n+@COND_arm_coreboot_TRUE@am__append_4516 = usb_keyboard.mod\n+@COND_arm_coreboot_TRUE@am__append_4517 = usb_keyboard.marker\n+@COND_i386_pc_TRUE@am__append_4518 = vga.module vga_text.module \\\n @COND_i386_pc_TRUE@\tmda_text.module\n-@COND_i386_pc_TRUE@am__append_4526 = vga.module$(EXEEXT) \\\n+@COND_i386_pc_TRUE@am__append_4519 = vga.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tvga_text.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tmda_text.module$(EXEEXT)\n @COND_i386_pc_FALSE@vga_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_4527 =\n-@COND_i386_pc_TRUE@am__append_4528 = $(nodist_vga_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_4520 =\n+@COND_i386_pc_TRUE@am__append_4521 = $(nodist_vga_module_SOURCES) \\\n @COND_i386_pc_TRUE@\t$(nodist_vga_text_module_SOURCES) \\\n @COND_i386_pc_TRUE@\t$(nodist_mda_text_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_4529 = $(nodist_vga_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_4522 = $(nodist_vga_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tvga.marker \\\n @COND_i386_pc_TRUE@\t$(nodist_vga_text_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tvga_text.marker \\\n @COND_i386_pc_TRUE@\t$(nodist_mda_text_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tmda_text.marker\n-@COND_i386_pc_TRUE@am__append_4530 = vga.mod vga_text.mod mda_text.mod\n-@COND_i386_pc_TRUE@am__append_4531 = vga.marker vga_text.marker \\\n+@COND_i386_pc_TRUE@am__append_4523 = vga.mod vga_text.mod mda_text.mod\n+@COND_i386_pc_TRUE@am__append_4524 = vga.marker vga_text.marker \\\n @COND_i386_pc_TRUE@\tmda_text.marker\n @COND_i386_pc_FALSE@vga_text_module_DEPENDENCIES =\n @COND_i386_coreboot_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@mda_text_module_DEPENDENCIES =\n-@COND_i386_qemu_TRUE@am__append_4532 = mda_text.module\n-@COND_i386_qemu_TRUE@am__append_4533 = mda_text.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_4534 = \n-@COND_i386_qemu_TRUE@am__append_4535 = $(nodist_mda_text_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_4536 =  \\\n+@COND_i386_qemu_TRUE@am__append_4525 = mda_text.module\n+@COND_i386_qemu_TRUE@am__append_4526 = mda_text.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_4527 = \n+@COND_i386_qemu_TRUE@am__append_4528 = $(nodist_mda_text_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_4529 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_mda_text_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tmda_text.marker\n-@COND_i386_qemu_TRUE@am__append_4537 = mda_text.mod\n-@COND_i386_qemu_TRUE@am__append_4538 = mda_text.marker\n-@COND_i386_coreboot_TRUE@am__append_4539 = mda_text.module\n-@COND_i386_coreboot_TRUE@am__append_4540 = mda_text.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_4541 = \n-@COND_i386_coreboot_TRUE@am__append_4542 = $(nodist_mda_text_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_4543 =  \\\n+@COND_i386_qemu_TRUE@am__append_4530 = mda_text.mod\n+@COND_i386_qemu_TRUE@am__append_4531 = mda_text.marker\n+@COND_i386_coreboot_TRUE@am__append_4532 = mda_text.module\n+@COND_i386_coreboot_TRUE@am__append_4533 = mda_text.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_4534 = \n+@COND_i386_coreboot_TRUE@am__append_4535 = $(nodist_mda_text_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_4536 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_mda_text_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tmda_text.marker\n-@COND_i386_coreboot_TRUE@am__append_4544 = mda_text.mod\n-@COND_i386_coreboot_TRUE@am__append_4545 = mda_text.marker\n-@COND_i386_multiboot_TRUE@am__append_4546 = mda_text.module\n-@COND_i386_multiboot_TRUE@am__append_4547 = mda_text.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_4548 = \n-@COND_i386_multiboot_TRUE@am__append_4549 = $(nodist_mda_text_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_4550 =  \\\n+@COND_i386_coreboot_TRUE@am__append_4537 = mda_text.mod\n+@COND_i386_coreboot_TRUE@am__append_4538 = mda_text.marker\n+@COND_i386_multiboot_TRUE@am__append_4539 = mda_text.module\n+@COND_i386_multiboot_TRUE@am__append_4540 = mda_text.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_4541 = \n+@COND_i386_multiboot_TRUE@am__append_4542 = $(nodist_mda_text_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_4543 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_mda_text_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tmda_text.marker\n-@COND_i386_multiboot_TRUE@am__append_4551 = mda_text.mod\n-@COND_i386_multiboot_TRUE@am__append_4552 = mda_text.marker\n-@COND_i386_pc_TRUE@am__append_4553 = video_cirrus.module\n-@COND_i386_pc_TRUE@am__append_4554 = video_cirrus.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_4544 = mda_text.mod\n+@COND_i386_multiboot_TRUE@am__append_4545 = mda_text.marker\n+@COND_i386_pc_TRUE@am__append_4546 = video_cirrus.module\n+@COND_i386_pc_TRUE@am__append_4547 = video_cirrus.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_x86_64_efi_FALSE@video_cirrus_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_4555 = \n-@COND_i386_pc_TRUE@am__append_4556 = $(nodist_video_cirrus_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_4557 =  \\\n+@COND_i386_pc_TRUE@am__append_4548 = \n+@COND_i386_pc_TRUE@am__append_4549 = $(nodist_video_cirrus_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_4550 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_video_cirrus_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tvideo_cirrus.marker\n-@COND_i386_pc_TRUE@am__append_4558 = video_cirrus.mod\n-@COND_i386_pc_TRUE@am__append_4559 = video_cirrus.marker\n-@COND_i386_efi_TRUE@am__append_4560 = video_cirrus.module\n-@COND_i386_efi_TRUE@am__append_4561 = video_cirrus.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_4562 = \n-@COND_i386_efi_TRUE@am__append_4563 = $(nodist_video_cirrus_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_4564 =  \\\n+@COND_i386_pc_TRUE@am__append_4551 = video_cirrus.mod\n+@COND_i386_pc_TRUE@am__append_4552 = video_cirrus.marker\n+@COND_i386_efi_TRUE@am__append_4553 = video_cirrus.module\n+@COND_i386_efi_TRUE@am__append_4554 = video_cirrus.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_4555 = \n+@COND_i386_efi_TRUE@am__append_4556 = $(nodist_video_cirrus_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_4557 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_video_cirrus_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tvideo_cirrus.marker\n-@COND_i386_efi_TRUE@am__append_4565 = video_cirrus.mod\n-@COND_i386_efi_TRUE@am__append_4566 = video_cirrus.marker\n-@COND_i386_qemu_TRUE@am__append_4567 = video_cirrus.module\n-@COND_i386_qemu_TRUE@am__append_4568 = video_cirrus.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_4569 = \n-@COND_i386_qemu_TRUE@am__append_4570 = $(nodist_video_cirrus_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_4571 =  \\\n+@COND_i386_efi_TRUE@am__append_4558 = video_cirrus.mod\n+@COND_i386_efi_TRUE@am__append_4559 = video_cirrus.marker\n+@COND_i386_qemu_TRUE@am__append_4560 = video_cirrus.module\n+@COND_i386_qemu_TRUE@am__append_4561 = video_cirrus.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_4562 = \n+@COND_i386_qemu_TRUE@am__append_4563 = $(nodist_video_cirrus_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_4564 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_video_cirrus_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tvideo_cirrus.marker\n-@COND_i386_qemu_TRUE@am__append_4572 = video_cirrus.mod\n-@COND_i386_qemu_TRUE@am__append_4573 = video_cirrus.marker\n-@COND_i386_coreboot_TRUE@am__append_4574 = video_cirrus.module\n-@COND_i386_coreboot_TRUE@am__append_4575 = video_cirrus.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_4576 = \n-@COND_i386_coreboot_TRUE@am__append_4577 = $(nodist_video_cirrus_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_4578 = $(nodist_video_cirrus_module_SOURCES) \\\n+@COND_i386_qemu_TRUE@am__append_4565 = video_cirrus.mod\n+@COND_i386_qemu_TRUE@am__append_4566 = video_cirrus.marker\n+@COND_i386_coreboot_TRUE@am__append_4567 = video_cirrus.module\n+@COND_i386_coreboot_TRUE@am__append_4568 = video_cirrus.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_4569 = \n+@COND_i386_coreboot_TRUE@am__append_4570 = $(nodist_video_cirrus_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_4571 = $(nodist_video_cirrus_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tvideo_cirrus.marker\n-@COND_i386_coreboot_TRUE@am__append_4579 = video_cirrus.mod\n-@COND_i386_coreboot_TRUE@am__append_4580 = video_cirrus.marker\n-@COND_i386_multiboot_TRUE@am__append_4581 = video_cirrus.module\n-@COND_i386_multiboot_TRUE@am__append_4582 = video_cirrus.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_4583 = \n-@COND_i386_multiboot_TRUE@am__append_4584 = $(nodist_video_cirrus_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_4585 = $(nodist_video_cirrus_module_SOURCES) \\\n+@COND_i386_coreboot_TRUE@am__append_4572 = video_cirrus.mod\n+@COND_i386_coreboot_TRUE@am__append_4573 = video_cirrus.marker\n+@COND_i386_multiboot_TRUE@am__append_4574 = video_cirrus.module\n+@COND_i386_multiboot_TRUE@am__append_4575 = video_cirrus.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_4576 = \n+@COND_i386_multiboot_TRUE@am__append_4577 = $(nodist_video_cirrus_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_4578 = $(nodist_video_cirrus_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tvideo_cirrus.marker\n-@COND_i386_multiboot_TRUE@am__append_4586 = video_cirrus.mod\n-@COND_i386_multiboot_TRUE@am__append_4587 = video_cirrus.marker\n-@COND_i386_ieee1275_TRUE@am__append_4588 = video_cirrus.module\n-@COND_i386_ieee1275_TRUE@am__append_4589 = video_cirrus.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_4590 = \n-@COND_i386_ieee1275_TRUE@am__append_4591 = $(nodist_video_cirrus_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_4592 = $(nodist_video_cirrus_module_SOURCES) \\\n+@COND_i386_multiboot_TRUE@am__append_4579 = video_cirrus.mod\n+@COND_i386_multiboot_TRUE@am__append_4580 = video_cirrus.marker\n+@COND_i386_ieee1275_TRUE@am__append_4581 = video_cirrus.module\n+@COND_i386_ieee1275_TRUE@am__append_4582 = video_cirrus.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_4583 = \n+@COND_i386_ieee1275_TRUE@am__append_4584 = $(nodist_video_cirrus_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_4585 = $(nodist_video_cirrus_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tvideo_cirrus.marker\n-@COND_i386_ieee1275_TRUE@am__append_4593 = video_cirrus.mod\n-@COND_i386_ieee1275_TRUE@am__append_4594 = video_cirrus.marker\n-@COND_x86_64_efi_TRUE@am__append_4595 = video_cirrus.module\n-@COND_x86_64_efi_TRUE@am__append_4596 = video_cirrus.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4597 = \n-@COND_x86_64_efi_TRUE@am__append_4598 = $(nodist_video_cirrus_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4599 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_4586 = video_cirrus.mod\n+@COND_i386_ieee1275_TRUE@am__append_4587 = video_cirrus.marker\n+@COND_x86_64_efi_TRUE@am__append_4588 = video_cirrus.module\n+@COND_x86_64_efi_TRUE@am__append_4589 = video_cirrus.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4590 = \n+@COND_x86_64_efi_TRUE@am__append_4591 = $(nodist_video_cirrus_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4592 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_video_cirrus_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tvideo_cirrus.marker\n-@COND_x86_64_efi_TRUE@am__append_4600 = video_cirrus.mod\n-@COND_x86_64_efi_TRUE@am__append_4601 = video_cirrus.marker\n-@COND_i386_pc_TRUE@am__append_4602 = video_bochs.module\n-@COND_i386_pc_TRUE@am__append_4603 = video_bochs.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4593 = video_cirrus.mod\n+@COND_x86_64_efi_TRUE@am__append_4594 = video_cirrus.marker\n+@COND_i386_pc_TRUE@am__append_4595 = video_bochs.module\n+@COND_i386_pc_TRUE@am__append_4596 = video_bochs.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_x86_64_efi_FALSE@video_bochs_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_4604 = \n-@COND_i386_pc_TRUE@am__append_4605 = $(nodist_video_bochs_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_4606 =  \\\n+@COND_i386_pc_TRUE@am__append_4597 = \n+@COND_i386_pc_TRUE@am__append_4598 = $(nodist_video_bochs_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_4599 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_video_bochs_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tvideo_bochs.marker\n-@COND_i386_pc_TRUE@am__append_4607 = video_bochs.mod\n-@COND_i386_pc_TRUE@am__append_4608 = video_bochs.marker\n-@COND_i386_efi_TRUE@am__append_4609 = video_bochs.module\n-@COND_i386_efi_TRUE@am__append_4610 = video_bochs.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_4611 = \n-@COND_i386_efi_TRUE@am__append_4612 = $(nodist_video_bochs_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_4613 =  \\\n+@COND_i386_pc_TRUE@am__append_4600 = video_bochs.mod\n+@COND_i386_pc_TRUE@am__append_4601 = video_bochs.marker\n+@COND_i386_efi_TRUE@am__append_4602 = video_bochs.module\n+@COND_i386_efi_TRUE@am__append_4603 = video_bochs.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_4604 = \n+@COND_i386_efi_TRUE@am__append_4605 = $(nodist_video_bochs_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_4606 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_video_bochs_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tvideo_bochs.marker\n-@COND_i386_efi_TRUE@am__append_4614 = video_bochs.mod\n-@COND_i386_efi_TRUE@am__append_4615 = video_bochs.marker\n-@COND_i386_qemu_TRUE@am__append_4616 = video_bochs.module\n-@COND_i386_qemu_TRUE@am__append_4617 = video_bochs.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_4618 = \n-@COND_i386_qemu_TRUE@am__append_4619 = $(nodist_video_bochs_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_4620 =  \\\n+@COND_i386_efi_TRUE@am__append_4607 = video_bochs.mod\n+@COND_i386_efi_TRUE@am__append_4608 = video_bochs.marker\n+@COND_i386_qemu_TRUE@am__append_4609 = video_bochs.module\n+@COND_i386_qemu_TRUE@am__append_4610 = video_bochs.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_4611 = \n+@COND_i386_qemu_TRUE@am__append_4612 = $(nodist_video_bochs_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_4613 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_video_bochs_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tvideo_bochs.marker\n-@COND_i386_qemu_TRUE@am__append_4621 = video_bochs.mod\n-@COND_i386_qemu_TRUE@am__append_4622 = video_bochs.marker\n-@COND_i386_coreboot_TRUE@am__append_4623 = video_bochs.module\n-@COND_i386_coreboot_TRUE@am__append_4624 = video_bochs.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_4625 = \n-@COND_i386_coreboot_TRUE@am__append_4626 = $(nodist_video_bochs_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_4627 =  \\\n+@COND_i386_qemu_TRUE@am__append_4614 = video_bochs.mod\n+@COND_i386_qemu_TRUE@am__append_4615 = video_bochs.marker\n+@COND_i386_coreboot_TRUE@am__append_4616 = video_bochs.module\n+@COND_i386_coreboot_TRUE@am__append_4617 = video_bochs.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_4618 = \n+@COND_i386_coreboot_TRUE@am__append_4619 = $(nodist_video_bochs_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_4620 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_video_bochs_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tvideo_bochs.marker\n-@COND_i386_coreboot_TRUE@am__append_4628 = video_bochs.mod\n-@COND_i386_coreboot_TRUE@am__append_4629 = video_bochs.marker\n-@COND_i386_multiboot_TRUE@am__append_4630 = video_bochs.module\n-@COND_i386_multiboot_TRUE@am__append_4631 = video_bochs.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_4632 = \n-@COND_i386_multiboot_TRUE@am__append_4633 = $(nodist_video_bochs_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_4634 = $(nodist_video_bochs_module_SOURCES) \\\n+@COND_i386_coreboot_TRUE@am__append_4621 = video_bochs.mod\n+@COND_i386_coreboot_TRUE@am__append_4622 = video_bochs.marker\n+@COND_i386_multiboot_TRUE@am__append_4623 = video_bochs.module\n+@COND_i386_multiboot_TRUE@am__append_4624 = video_bochs.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_4625 = \n+@COND_i386_multiboot_TRUE@am__append_4626 = $(nodist_video_bochs_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_4627 = $(nodist_video_bochs_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tvideo_bochs.marker\n-@COND_i386_multiboot_TRUE@am__append_4635 = video_bochs.mod\n-@COND_i386_multiboot_TRUE@am__append_4636 = video_bochs.marker\n-@COND_i386_ieee1275_TRUE@am__append_4637 = video_bochs.module\n-@COND_i386_ieee1275_TRUE@am__append_4638 = video_bochs.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_4639 = \n-@COND_i386_ieee1275_TRUE@am__append_4640 = $(nodist_video_bochs_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_4641 =  \\\n+@COND_i386_multiboot_TRUE@am__append_4628 = video_bochs.mod\n+@COND_i386_multiboot_TRUE@am__append_4629 = video_bochs.marker\n+@COND_i386_ieee1275_TRUE@am__append_4630 = video_bochs.module\n+@COND_i386_ieee1275_TRUE@am__append_4631 = video_bochs.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_4632 = \n+@COND_i386_ieee1275_TRUE@am__append_4633 = $(nodist_video_bochs_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_4634 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_video_bochs_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tvideo_bochs.marker\n-@COND_i386_ieee1275_TRUE@am__append_4642 = video_bochs.mod\n-@COND_i386_ieee1275_TRUE@am__append_4643 = video_bochs.marker\n-@COND_x86_64_efi_TRUE@am__append_4644 = video_bochs.module\n-@COND_x86_64_efi_TRUE@am__append_4645 = video_bochs.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4646 = \n-@COND_x86_64_efi_TRUE@am__append_4647 = $(nodist_video_bochs_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4648 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_4635 = video_bochs.mod\n+@COND_i386_ieee1275_TRUE@am__append_4636 = video_bochs.marker\n+@COND_x86_64_efi_TRUE@am__append_4637 = video_bochs.module\n+@COND_x86_64_efi_TRUE@am__append_4638 = video_bochs.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4639 = \n+@COND_x86_64_efi_TRUE@am__append_4640 = $(nodist_video_bochs_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4641 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_video_bochs_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tvideo_bochs.marker\n-@COND_x86_64_efi_TRUE@am__append_4649 = video_bochs.mod\n-@COND_x86_64_efi_TRUE@am__append_4650 = video_bochs.marker\n-@COND_emu_TRUE@am__append_4651 = legacy_password_test.module\n-@COND_emu_TRUE@am__append_4652 = legacy_password_test.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4642 = video_bochs.mod\n+@COND_x86_64_efi_TRUE@am__append_4643 = video_bochs.marker\n+@COND_emu_TRUE@am__append_4644 = legacy_password_test.module\n+@COND_emu_TRUE@am__append_4645 = legacy_password_test.module$(EXEEXT)\n @COND_emu_FALSE@@COND_i386_efi_FALSE@@COND_i386_pc_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@legacy_password_test_module_DEPENDENCIES =\n-@COND_emu_TRUE@am__append_4653 = \n-@COND_emu_TRUE@am__append_4654 = $(nodist_legacy_password_test_module_SOURCES)\n-@COND_emu_TRUE@am__append_4655 =  \\\n+@COND_emu_TRUE@am__append_4646 = \n+@COND_emu_TRUE@am__append_4647 = $(nodist_legacy_password_test_module_SOURCES)\n+@COND_emu_TRUE@am__append_4648 =  \\\n @COND_emu_TRUE@\t$(nodist_legacy_password_test_module_SOURCES) \\\n @COND_emu_TRUE@\tlegacy_password_test.marker\n-@COND_emu_TRUE@am__append_4656 = legacy_password_test.mod\n-@COND_emu_TRUE@am__append_4657 = legacy_password_test.marker\n-@COND_i386_pc_TRUE@am__append_4658 = legacy_password_test.module\n-@COND_i386_pc_TRUE@am__append_4659 = legacy_password_test.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__append_4660 = \n-@COND_i386_pc_TRUE@am__append_4661 = $(nodist_legacy_password_test_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_4662 = $(nodist_legacy_password_test_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_4649 = legacy_password_test.mod\n+@COND_emu_TRUE@am__append_4650 = legacy_password_test.marker\n+@COND_i386_pc_TRUE@am__append_4651 = legacy_password_test.module\n+@COND_i386_pc_TRUE@am__append_4652 = legacy_password_test.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__append_4653 = \n+@COND_i386_pc_TRUE@am__append_4654 = $(nodist_legacy_password_test_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_4655 = $(nodist_legacy_password_test_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tlegacy_password_test.marker\n-@COND_i386_pc_TRUE@am__append_4663 = legacy_password_test.mod\n-@COND_i386_pc_TRUE@am__append_4664 = legacy_password_test.marker\n-@COND_i386_efi_TRUE@am__append_4665 = legacy_password_test.module\n-@COND_i386_efi_TRUE@am__append_4666 = legacy_password_test.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_4667 = \n-@COND_i386_efi_TRUE@am__append_4668 = $(nodist_legacy_password_test_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_4669 = $(nodist_legacy_password_test_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_4656 = legacy_password_test.mod\n+@COND_i386_pc_TRUE@am__append_4657 = legacy_password_test.marker\n+@COND_i386_efi_TRUE@am__append_4658 = legacy_password_test.module\n+@COND_i386_efi_TRUE@am__append_4659 = legacy_password_test.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_4660 = \n+@COND_i386_efi_TRUE@am__append_4661 = $(nodist_legacy_password_test_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_4662 = $(nodist_legacy_password_test_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tlegacy_password_test.marker\n-@COND_i386_efi_TRUE@am__append_4670 = legacy_password_test.mod\n-@COND_i386_efi_TRUE@am__append_4671 = legacy_password_test.marker\n-@COND_x86_64_efi_TRUE@am__append_4672 = legacy_password_test.module\n-@COND_x86_64_efi_TRUE@am__append_4673 = legacy_password_test.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4674 = \n-@COND_x86_64_efi_TRUE@am__append_4675 = $(nodist_legacy_password_test_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4676 = $(nodist_legacy_password_test_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_4663 = legacy_password_test.mod\n+@COND_i386_efi_TRUE@am__append_4664 = legacy_password_test.marker\n+@COND_x86_64_efi_TRUE@am__append_4665 = legacy_password_test.module\n+@COND_x86_64_efi_TRUE@am__append_4666 = legacy_password_test.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4667 = \n+@COND_x86_64_efi_TRUE@am__append_4668 = $(nodist_legacy_password_test_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4669 = $(nodist_legacy_password_test_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tlegacy_password_test.marker\n-@COND_x86_64_efi_TRUE@am__append_4677 = legacy_password_test.mod\n-@COND_x86_64_efi_TRUE@am__append_4678 = legacy_password_test.marker\n-@COND_i386_xen_TRUE@am__append_4679 = legacy_password_test.module\n-@COND_i386_xen_TRUE@am__append_4680 = legacy_password_test.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__append_4681 = \n-@COND_i386_xen_TRUE@am__append_4682 = $(nodist_legacy_password_test_module_SOURCES)\n-@COND_i386_xen_TRUE@am__append_4683 = $(nodist_legacy_password_test_module_SOURCES) \\\n+@COND_x86_64_efi_TRUE@am__append_4670 = legacy_password_test.mod\n+@COND_x86_64_efi_TRUE@am__append_4671 = legacy_password_test.marker\n+@COND_i386_xen_TRUE@am__append_4672 = legacy_password_test.module\n+@COND_i386_xen_TRUE@am__append_4673 = legacy_password_test.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__append_4674 = \n+@COND_i386_xen_TRUE@am__append_4675 = $(nodist_legacy_password_test_module_SOURCES)\n+@COND_i386_xen_TRUE@am__append_4676 = $(nodist_legacy_password_test_module_SOURCES) \\\n @COND_i386_xen_TRUE@\tlegacy_password_test.marker\n-@COND_i386_xen_TRUE@am__append_4684 = legacy_password_test.mod\n-@COND_i386_xen_TRUE@am__append_4685 = legacy_password_test.marker\n-@COND_x86_64_xen_TRUE@am__append_4686 = legacy_password_test.module\n-@COND_x86_64_xen_TRUE@am__append_4687 = legacy_password_test.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__append_4688 = \n-@COND_x86_64_xen_TRUE@am__append_4689 = $(nodist_legacy_password_test_module_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_4690 = $(nodist_legacy_password_test_module_SOURCES) \\\n+@COND_i386_xen_TRUE@am__append_4677 = legacy_password_test.mod\n+@COND_i386_xen_TRUE@am__append_4678 = legacy_password_test.marker\n+@COND_x86_64_xen_TRUE@am__append_4679 = legacy_password_test.module\n+@COND_x86_64_xen_TRUE@am__append_4680 = legacy_password_test.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__append_4681 = \n+@COND_x86_64_xen_TRUE@am__append_4682 = $(nodist_legacy_password_test_module_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_4683 = $(nodist_legacy_password_test_module_SOURCES) \\\n @COND_x86_64_xen_TRUE@\tlegacy_password_test.marker\n-@COND_x86_64_xen_TRUE@am__append_4691 = legacy_password_test.mod\n-@COND_x86_64_xen_TRUE@am__append_4692 = legacy_password_test.marker\n-@COND_i386_xen_pvh_TRUE@am__append_4693 = legacy_password_test.module\n-@COND_i386_xen_pvh_TRUE@am__append_4694 = legacy_password_test.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_4695 = \n-@COND_i386_xen_pvh_TRUE@am__append_4696 = $(nodist_legacy_password_test_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_4697 = $(nodist_legacy_password_test_module_SOURCES) \\\n+@COND_x86_64_xen_TRUE@am__append_4684 = legacy_password_test.mod\n+@COND_x86_64_xen_TRUE@am__append_4685 = legacy_password_test.marker\n+@COND_i386_xen_pvh_TRUE@am__append_4686 = legacy_password_test.module\n+@COND_i386_xen_pvh_TRUE@am__append_4687 = legacy_password_test.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_4688 = \n+@COND_i386_xen_pvh_TRUE@am__append_4689 = $(nodist_legacy_password_test_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_4690 = $(nodist_legacy_password_test_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tlegacy_password_test.marker\n-@COND_i386_xen_pvh_TRUE@am__append_4698 = legacy_password_test.mod\n-@COND_i386_xen_pvh_TRUE@am__append_4699 = legacy_password_test.marker\n-@COND_emu_TRUE@am__append_4700 = div.module\n-@COND_emu_TRUE@am__append_4701 = div.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_4691 = legacy_password_test.mod\n+@COND_i386_xen_pvh_TRUE@am__append_4692 = legacy_password_test.marker\n+@COND_emu_TRUE@am__append_4693 = div.module\n+@COND_emu_TRUE@am__append_4694 = div.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@div_module_DEPENDENCIES =\n-@COND_emu_TRUE@am__append_4702 = \n-@COND_emu_TRUE@am__append_4703 = $(nodist_div_module_SOURCES)\n-@COND_emu_TRUE@am__append_4704 = $(nodist_div_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_4695 = \n+@COND_emu_TRUE@am__append_4696 = $(nodist_div_module_SOURCES)\n+@COND_emu_TRUE@am__append_4697 = $(nodist_div_module_SOURCES) \\\n @COND_emu_TRUE@\tdiv.marker\n-@COND_emu_TRUE@am__append_4705 = div.mod\n-@COND_emu_TRUE@am__append_4706 = div.marker\n-@COND_i386_pc_TRUE@am__append_4707 = div.module\n-@COND_i386_pc_TRUE@am__append_4708 = div.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__append_4709 = \n-@COND_i386_pc_TRUE@am__append_4710 = $(nodist_div_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_4711 = $(nodist_div_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_4698 = div.mod\n+@COND_emu_TRUE@am__append_4699 = div.marker\n+@COND_i386_pc_TRUE@am__append_4700 = div.module\n+@COND_i386_pc_TRUE@am__append_4701 = div.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__append_4702 = \n+@COND_i386_pc_TRUE@am__append_4703 = $(nodist_div_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_4704 = $(nodist_div_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tdiv.marker\n-@COND_i386_pc_TRUE@am__append_4712 = div.mod\n-@COND_i386_pc_TRUE@am__append_4713 = div.marker\n-@COND_i386_efi_TRUE@am__append_4714 = div.module\n-@COND_i386_efi_TRUE@am__append_4715 = div.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_4716 = \n-@COND_i386_efi_TRUE@am__append_4717 = $(nodist_div_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_4718 = $(nodist_div_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_4705 = div.mod\n+@COND_i386_pc_TRUE@am__append_4706 = div.marker\n+@COND_i386_efi_TRUE@am__append_4707 = div.module\n+@COND_i386_efi_TRUE@am__append_4708 = div.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_4709 = \n+@COND_i386_efi_TRUE@am__append_4710 = $(nodist_div_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_4711 = $(nodist_div_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tdiv.marker\n-@COND_i386_efi_TRUE@am__append_4719 = div.mod\n-@COND_i386_efi_TRUE@am__append_4720 = div.marker\n-@COND_i386_qemu_TRUE@am__append_4721 = div.module\n-@COND_i386_qemu_TRUE@am__append_4722 = div.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_4723 = \n-@COND_i386_qemu_TRUE@am__append_4724 = $(nodist_div_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_4725 = $(nodist_div_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_4712 = div.mod\n+@COND_i386_efi_TRUE@am__append_4713 = div.marker\n+@COND_i386_qemu_TRUE@am__append_4714 = div.module\n+@COND_i386_qemu_TRUE@am__append_4715 = div.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_4716 = \n+@COND_i386_qemu_TRUE@am__append_4717 = $(nodist_div_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_4718 = $(nodist_div_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tdiv.marker\n-@COND_i386_qemu_TRUE@am__append_4726 = div.mod\n-@COND_i386_qemu_TRUE@am__append_4727 = div.marker\n-@COND_i386_coreboot_TRUE@am__append_4728 = div.module\n-@COND_i386_coreboot_TRUE@am__append_4729 = div.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_4730 = \n-@COND_i386_coreboot_TRUE@am__append_4731 = $(nodist_div_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_4732 =  \\\n+@COND_i386_qemu_TRUE@am__append_4719 = div.mod\n+@COND_i386_qemu_TRUE@am__append_4720 = div.marker\n+@COND_i386_coreboot_TRUE@am__append_4721 = div.module\n+@COND_i386_coreboot_TRUE@am__append_4722 = div.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_4723 = \n+@COND_i386_coreboot_TRUE@am__append_4724 = $(nodist_div_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_4725 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_div_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tdiv.marker\n-@COND_i386_coreboot_TRUE@am__append_4733 = div.mod\n-@COND_i386_coreboot_TRUE@am__append_4734 = div.marker\n-@COND_i386_multiboot_TRUE@am__append_4735 = div.module\n-@COND_i386_multiboot_TRUE@am__append_4736 = div.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_4737 = \n-@COND_i386_multiboot_TRUE@am__append_4738 = $(nodist_div_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_4739 =  \\\n+@COND_i386_coreboot_TRUE@am__append_4726 = div.mod\n+@COND_i386_coreboot_TRUE@am__append_4727 = div.marker\n+@COND_i386_multiboot_TRUE@am__append_4728 = div.module\n+@COND_i386_multiboot_TRUE@am__append_4729 = div.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_4730 = \n+@COND_i386_multiboot_TRUE@am__append_4731 = $(nodist_div_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_4732 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_div_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tdiv.marker\n-@COND_i386_multiboot_TRUE@am__append_4740 = div.mod\n-@COND_i386_multiboot_TRUE@am__append_4741 = div.marker\n-@COND_i386_ieee1275_TRUE@am__append_4742 = div.module\n-@COND_i386_ieee1275_TRUE@am__append_4743 = div.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_4744 = \n-@COND_i386_ieee1275_TRUE@am__append_4745 = $(nodist_div_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_4746 =  \\\n+@COND_i386_multiboot_TRUE@am__append_4733 = div.mod\n+@COND_i386_multiboot_TRUE@am__append_4734 = div.marker\n+@COND_i386_ieee1275_TRUE@am__append_4735 = div.module\n+@COND_i386_ieee1275_TRUE@am__append_4736 = div.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_4737 = \n+@COND_i386_ieee1275_TRUE@am__append_4738 = $(nodist_div_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_4739 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_div_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tdiv.marker\n-@COND_i386_ieee1275_TRUE@am__append_4747 = div.mod\n-@COND_i386_ieee1275_TRUE@am__append_4748 = div.marker\n-@COND_x86_64_efi_TRUE@am__append_4749 = div.module\n-@COND_x86_64_efi_TRUE@am__append_4750 = div.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4751 = \n-@COND_x86_64_efi_TRUE@am__append_4752 = $(nodist_div_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4753 = $(nodist_div_module_SOURCES) \\\n+@COND_i386_ieee1275_TRUE@am__append_4740 = div.mod\n+@COND_i386_ieee1275_TRUE@am__append_4741 = div.marker\n+@COND_x86_64_efi_TRUE@am__append_4742 = div.module\n+@COND_x86_64_efi_TRUE@am__append_4743 = div.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4744 = \n+@COND_x86_64_efi_TRUE@am__append_4745 = $(nodist_div_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4746 = $(nodist_div_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tdiv.marker\n-@COND_x86_64_efi_TRUE@am__append_4754 = div.mod\n-@COND_x86_64_efi_TRUE@am__append_4755 = div.marker\n-@COND_i386_xen_TRUE@am__append_4756 = div.module\n-@COND_i386_xen_TRUE@am__append_4757 = div.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__append_4758 = \n-@COND_i386_xen_TRUE@am__append_4759 = $(nodist_div_module_SOURCES)\n-@COND_i386_xen_TRUE@am__append_4760 = $(nodist_div_module_SOURCES) \\\n+@COND_x86_64_efi_TRUE@am__append_4747 = div.mod\n+@COND_x86_64_efi_TRUE@am__append_4748 = div.marker\n+@COND_i386_xen_TRUE@am__append_4749 = div.module\n+@COND_i386_xen_TRUE@am__append_4750 = div.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__append_4751 = \n+@COND_i386_xen_TRUE@am__append_4752 = $(nodist_div_module_SOURCES)\n+@COND_i386_xen_TRUE@am__append_4753 = $(nodist_div_module_SOURCES) \\\n @COND_i386_xen_TRUE@\tdiv.marker\n-@COND_i386_xen_TRUE@am__append_4761 = div.mod\n-@COND_i386_xen_TRUE@am__append_4762 = div.marker\n-@COND_x86_64_xen_TRUE@am__append_4763 = div.module\n-@COND_x86_64_xen_TRUE@am__append_4764 = div.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__append_4765 = \n-@COND_x86_64_xen_TRUE@am__append_4766 = $(nodist_div_module_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_4767 = $(nodist_div_module_SOURCES) \\\n+@COND_i386_xen_TRUE@am__append_4754 = div.mod\n+@COND_i386_xen_TRUE@am__append_4755 = div.marker\n+@COND_x86_64_xen_TRUE@am__append_4756 = div.module\n+@COND_x86_64_xen_TRUE@am__append_4757 = div.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__append_4758 = \n+@COND_x86_64_xen_TRUE@am__append_4759 = $(nodist_div_module_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_4760 = $(nodist_div_module_SOURCES) \\\n @COND_x86_64_xen_TRUE@\tdiv.marker\n-@COND_x86_64_xen_TRUE@am__append_4768 = div.mod\n-@COND_x86_64_xen_TRUE@am__append_4769 = div.marker\n-@COND_i386_xen_pvh_TRUE@am__append_4770 = div.module\n-@COND_i386_xen_pvh_TRUE@am__append_4771 = div.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_4772 = \n-@COND_i386_xen_pvh_TRUE@am__append_4773 = $(nodist_div_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_4774 =  \\\n+@COND_x86_64_xen_TRUE@am__append_4761 = div.mod\n+@COND_x86_64_xen_TRUE@am__append_4762 = div.marker\n+@COND_i386_xen_pvh_TRUE@am__append_4763 = div.module\n+@COND_i386_xen_pvh_TRUE@am__append_4764 = div.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_4765 = \n+@COND_i386_xen_pvh_TRUE@am__append_4766 = $(nodist_div_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_4767 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_div_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tdiv.marker\n-@COND_i386_xen_pvh_TRUE@am__append_4775 = div.mod\n-@COND_i386_xen_pvh_TRUE@am__append_4776 = div.marker\n-@COND_mips_loongson_TRUE@am__append_4777 = div.module\n-@COND_mips_loongson_TRUE@am__append_4778 = div.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__append_4779 = \n-@COND_mips_loongson_TRUE@am__append_4780 = $(nodist_div_module_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_4781 =  \\\n+@COND_i386_xen_pvh_TRUE@am__append_4768 = div.mod\n+@COND_i386_xen_pvh_TRUE@am__append_4769 = div.marker\n+@COND_mips_loongson_TRUE@am__append_4770 = div.module\n+@COND_mips_loongson_TRUE@am__append_4771 = div.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__append_4772 = \n+@COND_mips_loongson_TRUE@am__append_4773 = $(nodist_div_module_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_4774 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_div_module_SOURCES) \\\n @COND_mips_loongson_TRUE@\tdiv.marker\n-@COND_mips_loongson_TRUE@am__append_4782 = div.mod\n-@COND_mips_loongson_TRUE@am__append_4783 = div.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_4784 = div.module\n-@COND_sparc64_ieee1275_TRUE@am__append_4785 = div.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__append_4786 = \n-@COND_sparc64_ieee1275_TRUE@am__append_4787 = $(nodist_div_module_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_4788 =  \\\n+@COND_mips_loongson_TRUE@am__append_4775 = div.mod\n+@COND_mips_loongson_TRUE@am__append_4776 = div.marker\n+@COND_sparc64_ieee1275_TRUE@am__append_4777 = div.module\n+@COND_sparc64_ieee1275_TRUE@am__append_4778 = div.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__append_4779 = \n+@COND_sparc64_ieee1275_TRUE@am__append_4780 = $(nodist_div_module_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_4781 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_div_module_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tdiv.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_4789 = div.mod\n-@COND_sparc64_ieee1275_TRUE@am__append_4790 = div.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_4791 = div.module\n-@COND_powerpc_ieee1275_TRUE@am__append_4792 = div.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__append_4793 = \n-@COND_powerpc_ieee1275_TRUE@am__append_4794 = $(nodist_div_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_4795 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__append_4782 = div.mod\n+@COND_sparc64_ieee1275_TRUE@am__append_4783 = div.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_4784 = div.module\n+@COND_powerpc_ieee1275_TRUE@am__append_4785 = div.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_4786 = \n+@COND_powerpc_ieee1275_TRUE@am__append_4787 = $(nodist_div_module_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_4788 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_div_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tdiv.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_4796 = div.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_4797 = div.marker\n-@COND_mips_arc_TRUE@am__append_4798 = div.module\n-@COND_mips_arc_TRUE@am__append_4799 = div.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__append_4800 = \n-@COND_mips_arc_TRUE@am__append_4801 = $(nodist_div_module_SOURCES)\n-@COND_mips_arc_TRUE@am__append_4802 = $(nodist_div_module_SOURCES) \\\n+@COND_powerpc_ieee1275_TRUE@am__append_4789 = div.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_4790 = div.marker\n+@COND_mips_arc_TRUE@am__append_4791 = div.module\n+@COND_mips_arc_TRUE@am__append_4792 = div.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__append_4793 = \n+@COND_mips_arc_TRUE@am__append_4794 = $(nodist_div_module_SOURCES)\n+@COND_mips_arc_TRUE@am__append_4795 = $(nodist_div_module_SOURCES) \\\n @COND_mips_arc_TRUE@\tdiv.marker\n-@COND_mips_arc_TRUE@am__append_4803 = div.mod\n-@COND_mips_arc_TRUE@am__append_4804 = div.marker\n-@COND_mips_qemu_mips_TRUE@am__append_4805 = div.module\n-@COND_mips_qemu_mips_TRUE@am__append_4806 = div.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_4807 = \n-@COND_mips_qemu_mips_TRUE@am__append_4808 = $(nodist_div_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_4809 =  \\\n+@COND_mips_arc_TRUE@am__append_4796 = div.mod\n+@COND_mips_arc_TRUE@am__append_4797 = div.marker\n+@COND_mips_qemu_mips_TRUE@am__append_4798 = div.module\n+@COND_mips_qemu_mips_TRUE@am__append_4799 = div.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_4800 = \n+@COND_mips_qemu_mips_TRUE@am__append_4801 = $(nodist_div_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_4802 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_div_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tdiv.marker\n-@COND_mips_qemu_mips_TRUE@am__append_4810 = div.mod\n-@COND_mips_qemu_mips_TRUE@am__append_4811 = div.marker\n-@COND_arm64_efi_TRUE@am__append_4812 = div.module\n-@COND_arm64_efi_TRUE@am__append_4813 = div.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_4814 = \n-@COND_arm64_efi_TRUE@am__append_4815 = $(nodist_div_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_4816 = $(nodist_div_module_SOURCES) \\\n+@COND_mips_qemu_mips_TRUE@am__append_4803 = div.mod\n+@COND_mips_qemu_mips_TRUE@am__append_4804 = div.marker\n+@COND_arm64_efi_TRUE@am__append_4805 = div.module\n+@COND_arm64_efi_TRUE@am__append_4806 = div.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_4807 = \n+@COND_arm64_efi_TRUE@am__append_4808 = $(nodist_div_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_4809 = $(nodist_div_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tdiv.marker\n-@COND_arm64_efi_TRUE@am__append_4817 = div.mod\n-@COND_arm64_efi_TRUE@am__append_4818 = div.marker\n-@COND_riscv64_efi_TRUE@am__append_4819 = div.module\n-@COND_riscv64_efi_TRUE@am__append_4820 = div.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_4821 = \n-@COND_riscv64_efi_TRUE@am__append_4822 = $(nodist_div_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_4823 = $(nodist_div_module_SOURCES) \\\n+@COND_arm64_efi_TRUE@am__append_4810 = div.mod\n+@COND_arm64_efi_TRUE@am__append_4811 = div.marker\n+@COND_riscv64_efi_TRUE@am__append_4812 = div.module\n+@COND_riscv64_efi_TRUE@am__append_4813 = div.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_4814 = \n+@COND_riscv64_efi_TRUE@am__append_4815 = $(nodist_div_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_4816 = $(nodist_div_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tdiv.marker\n-@COND_riscv64_efi_TRUE@am__append_4824 = div.mod\n-@COND_riscv64_efi_TRUE@am__append_4825 = div.marker\n-@COND_i386_efi_TRUE@am__append_4826 = efi_gop.module\n-@COND_i386_efi_TRUE@am__append_4827 = efi_gop.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_4817 = div.mod\n+@COND_riscv64_efi_TRUE@am__append_4818 = div.marker\n+@COND_i386_efi_TRUE@am__append_4819 = efi_gop.module\n+@COND_i386_efi_TRUE@am__append_4820 = efi_gop.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_efi_FALSE@@COND_i386_efi_FALSE@@COND_ia64_efi_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_x86_64_efi_FALSE@efi_gop_module_DEPENDENCIES =\n-@COND_i386_efi_TRUE@am__append_4828 = \n-@COND_i386_efi_TRUE@am__append_4829 = $(nodist_efi_gop_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_4830 =  \\\n+@COND_i386_efi_TRUE@am__append_4821 = \n+@COND_i386_efi_TRUE@am__append_4822 = $(nodist_efi_gop_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_4823 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_efi_gop_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tefi_gop.marker\n-@COND_i386_efi_TRUE@am__append_4831 = efi_gop.mod\n-@COND_i386_efi_TRUE@am__append_4832 = efi_gop.marker\n-@COND_x86_64_efi_TRUE@am__append_4833 = efi_gop.module\n-@COND_x86_64_efi_TRUE@am__append_4834 = efi_gop.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4835 = \n-@COND_x86_64_efi_TRUE@am__append_4836 = $(nodist_efi_gop_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4837 =  \\\n+@COND_i386_efi_TRUE@am__append_4824 = efi_gop.mod\n+@COND_i386_efi_TRUE@am__append_4825 = efi_gop.marker\n+@COND_x86_64_efi_TRUE@am__append_4826 = efi_gop.module\n+@COND_x86_64_efi_TRUE@am__append_4827 = efi_gop.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4828 = \n+@COND_x86_64_efi_TRUE@am__append_4829 = $(nodist_efi_gop_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4830 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_efi_gop_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tefi_gop.marker\n-@COND_x86_64_efi_TRUE@am__append_4838 = efi_gop.mod\n-@COND_x86_64_efi_TRUE@am__append_4839 = efi_gop.marker\n-@COND_ia64_efi_TRUE@am__append_4840 = efi_gop.module\n-@COND_ia64_efi_TRUE@am__append_4841 = efi_gop.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_4842 = \n-@COND_ia64_efi_TRUE@am__append_4843 = $(nodist_efi_gop_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_4844 =  \\\n+@COND_x86_64_efi_TRUE@am__append_4831 = efi_gop.mod\n+@COND_x86_64_efi_TRUE@am__append_4832 = efi_gop.marker\n+@COND_ia64_efi_TRUE@am__append_4833 = efi_gop.module\n+@COND_ia64_efi_TRUE@am__append_4834 = efi_gop.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_4835 = \n+@COND_ia64_efi_TRUE@am__append_4836 = $(nodist_efi_gop_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_4837 =  \\\n @COND_ia64_efi_TRUE@\t$(nodist_efi_gop_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tefi_gop.marker\n-@COND_ia64_efi_TRUE@am__append_4845 = efi_gop.mod\n-@COND_ia64_efi_TRUE@am__append_4846 = efi_gop.marker\n-@COND_arm_efi_TRUE@am__append_4847 = efi_gop.module\n-@COND_arm_efi_TRUE@am__append_4848 = efi_gop.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_4849 = \n-@COND_arm_efi_TRUE@am__append_4850 = $(nodist_efi_gop_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_4851 = $(nodist_efi_gop_module_SOURCES) \\\n+@COND_ia64_efi_TRUE@am__append_4838 = efi_gop.mod\n+@COND_ia64_efi_TRUE@am__append_4839 = efi_gop.marker\n+@COND_arm_efi_TRUE@am__append_4840 = efi_gop.module\n+@COND_arm_efi_TRUE@am__append_4841 = efi_gop.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_4842 = \n+@COND_arm_efi_TRUE@am__append_4843 = $(nodist_efi_gop_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_4844 = $(nodist_efi_gop_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tefi_gop.marker\n-@COND_arm_efi_TRUE@am__append_4852 = efi_gop.mod\n-@COND_arm_efi_TRUE@am__append_4853 = efi_gop.marker\n-@COND_arm64_efi_TRUE@am__append_4854 = efi_gop.module\n-@COND_arm64_efi_TRUE@am__append_4855 = efi_gop.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_4856 = \n-@COND_arm64_efi_TRUE@am__append_4857 = $(nodist_efi_gop_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_4858 =  \\\n+@COND_arm_efi_TRUE@am__append_4845 = efi_gop.mod\n+@COND_arm_efi_TRUE@am__append_4846 = efi_gop.marker\n+@COND_arm64_efi_TRUE@am__append_4847 = efi_gop.module\n+@COND_arm64_efi_TRUE@am__append_4848 = efi_gop.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_4849 = \n+@COND_arm64_efi_TRUE@am__append_4850 = $(nodist_efi_gop_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_4851 =  \\\n @COND_arm64_efi_TRUE@\t$(nodist_efi_gop_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tefi_gop.marker\n-@COND_arm64_efi_TRUE@am__append_4859 = efi_gop.mod\n-@COND_arm64_efi_TRUE@am__append_4860 = efi_gop.marker\n-@COND_riscv32_efi_TRUE@am__append_4861 = efi_gop.module\n-@COND_riscv32_efi_TRUE@am__append_4862 = efi_gop.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_4863 = \n-@COND_riscv32_efi_TRUE@am__append_4864 = $(nodist_efi_gop_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_4865 =  \\\n+@COND_arm64_efi_TRUE@am__append_4852 = efi_gop.mod\n+@COND_arm64_efi_TRUE@am__append_4853 = efi_gop.marker\n+@COND_riscv32_efi_TRUE@am__append_4854 = efi_gop.module\n+@COND_riscv32_efi_TRUE@am__append_4855 = efi_gop.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_4856 = \n+@COND_riscv32_efi_TRUE@am__append_4857 = $(nodist_efi_gop_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_4858 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_efi_gop_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tefi_gop.marker\n-@COND_riscv32_efi_TRUE@am__append_4866 = efi_gop.mod\n-@COND_riscv32_efi_TRUE@am__append_4867 = efi_gop.marker\n-@COND_riscv64_efi_TRUE@am__append_4868 = efi_gop.module\n-@COND_riscv64_efi_TRUE@am__append_4869 = efi_gop.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_4870 = \n-@COND_riscv64_efi_TRUE@am__append_4871 = $(nodist_efi_gop_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_4872 =  \\\n+@COND_riscv32_efi_TRUE@am__append_4859 = efi_gop.mod\n+@COND_riscv32_efi_TRUE@am__append_4860 = efi_gop.marker\n+@COND_riscv64_efi_TRUE@am__append_4861 = efi_gop.module\n+@COND_riscv64_efi_TRUE@am__append_4862 = efi_gop.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_4863 = \n+@COND_riscv64_efi_TRUE@am__append_4864 = $(nodist_efi_gop_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_4865 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_efi_gop_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tefi_gop.marker\n-@COND_riscv64_efi_TRUE@am__append_4873 = efi_gop.mod\n-@COND_riscv64_efi_TRUE@am__append_4874 = efi_gop.marker\n-@COND_i386_efi_TRUE@am__append_4875 = efi_uga.module\n-@COND_i386_efi_TRUE@am__append_4876 = efi_uga.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_4866 = efi_gop.mod\n+@COND_riscv64_efi_TRUE@am__append_4867 = efi_gop.marker\n+@COND_i386_efi_TRUE@am__append_4868 = efi_uga.module\n+@COND_i386_efi_TRUE@am__append_4869 = efi_uga.module$(EXEEXT)\n @COND_i386_efi_FALSE@@COND_x86_64_efi_FALSE@efi_uga_module_DEPENDENCIES =\n-@COND_i386_efi_TRUE@am__append_4877 = \n-@COND_i386_efi_TRUE@am__append_4878 = $(nodist_efi_uga_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_4879 =  \\\n+@COND_i386_efi_TRUE@am__append_4870 = \n+@COND_i386_efi_TRUE@am__append_4871 = $(nodist_efi_uga_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_4872 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_efi_uga_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tefi_uga.marker\n-@COND_i386_efi_TRUE@am__append_4880 = efi_uga.mod\n-@COND_i386_efi_TRUE@am__append_4881 = efi_uga.marker\n-@COND_x86_64_efi_TRUE@am__append_4882 = efi_uga.module\n-@COND_x86_64_efi_TRUE@am__append_4883 = efi_uga.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4884 = \n-@COND_x86_64_efi_TRUE@am__append_4885 = $(nodist_efi_uga_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4886 =  \\\n+@COND_i386_efi_TRUE@am__append_4873 = efi_uga.mod\n+@COND_i386_efi_TRUE@am__append_4874 = efi_uga.marker\n+@COND_x86_64_efi_TRUE@am__append_4875 = efi_uga.module\n+@COND_x86_64_efi_TRUE@am__append_4876 = efi_uga.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4877 = \n+@COND_x86_64_efi_TRUE@am__append_4878 = $(nodist_efi_uga_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4879 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_efi_uga_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tefi_uga.marker\n-@COND_x86_64_efi_TRUE@am__append_4887 = efi_uga.mod\n-@COND_x86_64_efi_TRUE@am__append_4888 = efi_uga.marker\n-@COND_i386_pc_TRUE@am__append_4889 = vbe.module\n-@COND_i386_pc_TRUE@am__append_4890 = vbe.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4880 = efi_uga.mod\n+@COND_x86_64_efi_TRUE@am__append_4881 = efi_uga.marker\n+@COND_i386_pc_TRUE@am__append_4882 = vbe.module\n+@COND_i386_pc_TRUE@am__append_4883 = vbe.module$(EXEEXT)\n @COND_i386_pc_FALSE@vbe_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_4891 = \n-@COND_i386_pc_TRUE@am__append_4892 = $(nodist_vbe_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_4893 = $(nodist_vbe_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_4884 = \n+@COND_i386_pc_TRUE@am__append_4885 = $(nodist_vbe_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_4886 = $(nodist_vbe_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tvbe.marker\n-@COND_i386_pc_TRUE@am__append_4894 = vbe.mod\n-@COND_i386_pc_TRUE@am__append_4895 = vbe.marker\n-@COND_emu_TRUE@am__append_4896 = video_fb.module\n-@COND_emu_TRUE@am__append_4897 = video_fb.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__append_4887 = vbe.mod\n+@COND_i386_pc_TRUE@am__append_4888 = vbe.marker\n+@COND_emu_TRUE@am__append_4889 = video_fb.module\n+@COND_emu_TRUE@am__append_4890 = video_fb.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@video_fb_module_DEPENDENCIES =\n-@COND_emu_TRUE@am__append_4898 = \n-@COND_emu_TRUE@am__append_4899 = $(nodist_video_fb_module_SOURCES)\n-@COND_emu_TRUE@am__append_4900 = $(nodist_video_fb_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_4891 = \n+@COND_emu_TRUE@am__append_4892 = $(nodist_video_fb_module_SOURCES)\n+@COND_emu_TRUE@am__append_4893 = $(nodist_video_fb_module_SOURCES) \\\n @COND_emu_TRUE@\tvideo_fb.marker\n-@COND_emu_TRUE@am__append_4901 = video_fb.mod\n-@COND_emu_TRUE@am__append_4902 = video_fb.marker\n-@COND_i386_pc_TRUE@am__append_4903 = video_fb.module\n-@COND_i386_pc_TRUE@am__append_4904 = video_fb.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__append_4905 = \n-@COND_i386_pc_TRUE@am__append_4906 = $(nodist_video_fb_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_4907 =  \\\n+@COND_emu_TRUE@am__append_4894 = video_fb.mod\n+@COND_emu_TRUE@am__append_4895 = video_fb.marker\n+@COND_i386_pc_TRUE@am__append_4896 = video_fb.module\n+@COND_i386_pc_TRUE@am__append_4897 = video_fb.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__append_4898 = \n+@COND_i386_pc_TRUE@am__append_4899 = $(nodist_video_fb_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_4900 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tvideo_fb.marker\n-@COND_i386_pc_TRUE@am__append_4908 = video_fb.mod\n-@COND_i386_pc_TRUE@am__append_4909 = video_fb.marker\n-@COND_i386_efi_TRUE@am__append_4910 = video_fb.module\n-@COND_i386_efi_TRUE@am__append_4911 = video_fb.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_4912 = \n-@COND_i386_efi_TRUE@am__append_4913 = $(nodist_video_fb_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_4914 =  \\\n+@COND_i386_pc_TRUE@am__append_4901 = video_fb.mod\n+@COND_i386_pc_TRUE@am__append_4902 = video_fb.marker\n+@COND_i386_efi_TRUE@am__append_4903 = video_fb.module\n+@COND_i386_efi_TRUE@am__append_4904 = video_fb.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_4905 = \n+@COND_i386_efi_TRUE@am__append_4906 = $(nodist_video_fb_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_4907 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tvideo_fb.marker\n-@COND_i386_efi_TRUE@am__append_4915 = video_fb.mod\n-@COND_i386_efi_TRUE@am__append_4916 = video_fb.marker\n-@COND_i386_qemu_TRUE@am__append_4917 = video_fb.module\n-@COND_i386_qemu_TRUE@am__append_4918 = video_fb.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_4919 = \n-@COND_i386_qemu_TRUE@am__append_4920 = $(nodist_video_fb_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_4921 =  \\\n+@COND_i386_efi_TRUE@am__append_4908 = video_fb.mod\n+@COND_i386_efi_TRUE@am__append_4909 = video_fb.marker\n+@COND_i386_qemu_TRUE@am__append_4910 = video_fb.module\n+@COND_i386_qemu_TRUE@am__append_4911 = video_fb.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_4912 = \n+@COND_i386_qemu_TRUE@am__append_4913 = $(nodist_video_fb_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_4914 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tvideo_fb.marker\n-@COND_i386_qemu_TRUE@am__append_4922 = video_fb.mod\n-@COND_i386_qemu_TRUE@am__append_4923 = video_fb.marker\n-@COND_i386_multiboot_TRUE@am__append_4924 = video_fb.module\n-@COND_i386_multiboot_TRUE@am__append_4925 = video_fb.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_4926 = \n-@COND_i386_multiboot_TRUE@am__append_4927 = $(nodist_video_fb_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_4928 =  \\\n+@COND_i386_qemu_TRUE@am__append_4915 = video_fb.mod\n+@COND_i386_qemu_TRUE@am__append_4916 = video_fb.marker\n+@COND_i386_multiboot_TRUE@am__append_4917 = video_fb.module\n+@COND_i386_multiboot_TRUE@am__append_4918 = video_fb.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_4919 = \n+@COND_i386_multiboot_TRUE@am__append_4920 = $(nodist_video_fb_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_4921 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tvideo_fb.marker\n-@COND_i386_multiboot_TRUE@am__append_4929 = video_fb.mod\n-@COND_i386_multiboot_TRUE@am__append_4930 = video_fb.marker\n-@COND_i386_ieee1275_TRUE@am__append_4931 = video_fb.module\n-@COND_i386_ieee1275_TRUE@am__append_4932 = video_fb.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_4933 = \n-@COND_i386_ieee1275_TRUE@am__append_4934 = $(nodist_video_fb_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_4935 =  \\\n+@COND_i386_multiboot_TRUE@am__append_4922 = video_fb.mod\n+@COND_i386_multiboot_TRUE@am__append_4923 = video_fb.marker\n+@COND_i386_ieee1275_TRUE@am__append_4924 = video_fb.module\n+@COND_i386_ieee1275_TRUE@am__append_4925 = video_fb.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_4926 = \n+@COND_i386_ieee1275_TRUE@am__append_4927 = $(nodist_video_fb_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_4928 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tvideo_fb.marker\n-@COND_i386_ieee1275_TRUE@am__append_4936 = video_fb.mod\n-@COND_i386_ieee1275_TRUE@am__append_4937 = video_fb.marker\n-@COND_x86_64_efi_TRUE@am__append_4938 = video_fb.module\n-@COND_x86_64_efi_TRUE@am__append_4939 = video_fb.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_4940 = \n-@COND_x86_64_efi_TRUE@am__append_4941 = $(nodist_video_fb_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_4942 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_4929 = video_fb.mod\n+@COND_i386_ieee1275_TRUE@am__append_4930 = video_fb.marker\n+@COND_x86_64_efi_TRUE@am__append_4931 = video_fb.module\n+@COND_x86_64_efi_TRUE@am__append_4932 = video_fb.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_4933 = \n+@COND_x86_64_efi_TRUE@am__append_4934 = $(nodist_video_fb_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_4935 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tvideo_fb.marker\n-@COND_x86_64_efi_TRUE@am__append_4943 = video_fb.mod\n-@COND_x86_64_efi_TRUE@am__append_4944 = video_fb.marker\n-@COND_i386_xen_TRUE@am__append_4945 = video_fb.module\n-@COND_i386_xen_TRUE@am__append_4946 = video_fb.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__append_4947 = \n-@COND_i386_xen_TRUE@am__append_4948 = $(nodist_video_fb_module_SOURCES)\n-@COND_i386_xen_TRUE@am__append_4949 =  \\\n+@COND_x86_64_efi_TRUE@am__append_4936 = video_fb.mod\n+@COND_x86_64_efi_TRUE@am__append_4937 = video_fb.marker\n+@COND_i386_xen_TRUE@am__append_4938 = video_fb.module\n+@COND_i386_xen_TRUE@am__append_4939 = video_fb.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__append_4940 = \n+@COND_i386_xen_TRUE@am__append_4941 = $(nodist_video_fb_module_SOURCES)\n+@COND_i386_xen_TRUE@am__append_4942 =  \\\n @COND_i386_xen_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_i386_xen_TRUE@\tvideo_fb.marker\n-@COND_i386_xen_TRUE@am__append_4950 = video_fb.mod\n-@COND_i386_xen_TRUE@am__append_4951 = video_fb.marker\n-@COND_x86_64_xen_TRUE@am__append_4952 = video_fb.module\n-@COND_x86_64_xen_TRUE@am__append_4953 = video_fb.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__append_4954 = \n-@COND_x86_64_xen_TRUE@am__append_4955 = $(nodist_video_fb_module_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_4956 =  \\\n+@COND_i386_xen_TRUE@am__append_4943 = video_fb.mod\n+@COND_i386_xen_TRUE@am__append_4944 = video_fb.marker\n+@COND_x86_64_xen_TRUE@am__append_4945 = video_fb.module\n+@COND_x86_64_xen_TRUE@am__append_4946 = video_fb.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__append_4947 = \n+@COND_x86_64_xen_TRUE@am__append_4948 = $(nodist_video_fb_module_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_4949 =  \\\n @COND_x86_64_xen_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_x86_64_xen_TRUE@\tvideo_fb.marker\n-@COND_x86_64_xen_TRUE@am__append_4957 = video_fb.mod\n-@COND_x86_64_xen_TRUE@am__append_4958 = video_fb.marker\n-@COND_i386_xen_pvh_TRUE@am__append_4959 = video_fb.module\n-@COND_i386_xen_pvh_TRUE@am__append_4960 = video_fb.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_4961 = \n-@COND_i386_xen_pvh_TRUE@am__append_4962 = $(nodist_video_fb_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_4963 =  \\\n+@COND_x86_64_xen_TRUE@am__append_4950 = video_fb.mod\n+@COND_x86_64_xen_TRUE@am__append_4951 = video_fb.marker\n+@COND_i386_xen_pvh_TRUE@am__append_4952 = video_fb.module\n+@COND_i386_xen_pvh_TRUE@am__append_4953 = video_fb.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_4954 = \n+@COND_i386_xen_pvh_TRUE@am__append_4955 = $(nodist_video_fb_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_4956 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tvideo_fb.marker\n-@COND_i386_xen_pvh_TRUE@am__append_4964 = video_fb.mod\n-@COND_i386_xen_pvh_TRUE@am__append_4965 = video_fb.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_4966 = video_fb.module\n-@COND_sparc64_ieee1275_TRUE@am__append_4967 = video_fb.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__append_4968 = \n-@COND_sparc64_ieee1275_TRUE@am__append_4969 = $(nodist_video_fb_module_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_4970 =  \\\n+@COND_i386_xen_pvh_TRUE@am__append_4957 = video_fb.mod\n+@COND_i386_xen_pvh_TRUE@am__append_4958 = video_fb.marker\n+@COND_sparc64_ieee1275_TRUE@am__append_4959 = video_fb.module\n+@COND_sparc64_ieee1275_TRUE@am__append_4960 = video_fb.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__append_4961 = \n+@COND_sparc64_ieee1275_TRUE@am__append_4962 = $(nodist_video_fb_module_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_4963 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tvideo_fb.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_4971 = video_fb.mod\n-@COND_sparc64_ieee1275_TRUE@am__append_4972 = video_fb.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_4973 = video_fb.module\n-@COND_powerpc_ieee1275_TRUE@am__append_4974 = video_fb.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__append_4975 = \n-@COND_powerpc_ieee1275_TRUE@am__append_4976 = $(nodist_video_fb_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_4977 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__append_4964 = video_fb.mod\n+@COND_sparc64_ieee1275_TRUE@am__append_4965 = video_fb.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_4966 = video_fb.module\n+@COND_powerpc_ieee1275_TRUE@am__append_4967 = video_fb.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_4968 = \n+@COND_powerpc_ieee1275_TRUE@am__append_4969 = $(nodist_video_fb_module_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_4970 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tvideo_fb.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_4978 = video_fb.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_4979 = video_fb.marker\n-@COND_mips_arc_TRUE@am__append_4980 = video_fb.module\n-@COND_mips_arc_TRUE@am__append_4981 = video_fb.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__append_4982 = \n-@COND_mips_arc_TRUE@am__append_4983 = $(nodist_video_fb_module_SOURCES)\n-@COND_mips_arc_TRUE@am__append_4984 =  \\\n+@COND_powerpc_ieee1275_TRUE@am__append_4971 = video_fb.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_4972 = video_fb.marker\n+@COND_mips_arc_TRUE@am__append_4973 = video_fb.module\n+@COND_mips_arc_TRUE@am__append_4974 = video_fb.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__append_4975 = \n+@COND_mips_arc_TRUE@am__append_4976 = $(nodist_video_fb_module_SOURCES)\n+@COND_mips_arc_TRUE@am__append_4977 =  \\\n @COND_mips_arc_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_mips_arc_TRUE@\tvideo_fb.marker\n-@COND_mips_arc_TRUE@am__append_4985 = video_fb.mod\n-@COND_mips_arc_TRUE@am__append_4986 = video_fb.marker\n-@COND_ia64_efi_TRUE@am__append_4987 = video_fb.module\n-@COND_ia64_efi_TRUE@am__append_4988 = video_fb.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_4989 = \n-@COND_ia64_efi_TRUE@am__append_4990 = $(nodist_video_fb_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_4991 =  \\\n+@COND_mips_arc_TRUE@am__append_4978 = video_fb.mod\n+@COND_mips_arc_TRUE@am__append_4979 = video_fb.marker\n+@COND_ia64_efi_TRUE@am__append_4980 = video_fb.module\n+@COND_ia64_efi_TRUE@am__append_4981 = video_fb.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_4982 = \n+@COND_ia64_efi_TRUE@am__append_4983 = $(nodist_video_fb_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_4984 =  \\\n @COND_ia64_efi_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tvideo_fb.marker\n-@COND_ia64_efi_TRUE@am__append_4992 = video_fb.mod\n-@COND_ia64_efi_TRUE@am__append_4993 = video_fb.marker\n-@COND_mips_qemu_mips_TRUE@am__append_4994 = video_fb.module\n-@COND_mips_qemu_mips_TRUE@am__append_4995 = video_fb.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_4996 = \n-@COND_mips_qemu_mips_TRUE@am__append_4997 = $(nodist_video_fb_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_4998 =  \\\n+@COND_ia64_efi_TRUE@am__append_4985 = video_fb.mod\n+@COND_ia64_efi_TRUE@am__append_4986 = video_fb.marker\n+@COND_mips_qemu_mips_TRUE@am__append_4987 = video_fb.module\n+@COND_mips_qemu_mips_TRUE@am__append_4988 = video_fb.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_4989 = \n+@COND_mips_qemu_mips_TRUE@am__append_4990 = $(nodist_video_fb_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_4991 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tvideo_fb.marker\n-@COND_mips_qemu_mips_TRUE@am__append_4999 = video_fb.mod\n-@COND_mips_qemu_mips_TRUE@am__append_5000 = video_fb.marker\n-@COND_arm_uboot_TRUE@am__append_5001 = video_fb.module\n-@COND_arm_uboot_TRUE@am__append_5002 = video_fb.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__append_5003 = \n-@COND_arm_uboot_TRUE@am__append_5004 = $(nodist_video_fb_module_SOURCES)\n-@COND_arm_uboot_TRUE@am__append_5005 =  \\\n+@COND_mips_qemu_mips_TRUE@am__append_4992 = video_fb.mod\n+@COND_mips_qemu_mips_TRUE@am__append_4993 = video_fb.marker\n+@COND_arm_uboot_TRUE@am__append_4994 = video_fb.module\n+@COND_arm_uboot_TRUE@am__append_4995 = video_fb.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__append_4996 = \n+@COND_arm_uboot_TRUE@am__append_4997 = $(nodist_video_fb_module_SOURCES)\n+@COND_arm_uboot_TRUE@am__append_4998 =  \\\n @COND_arm_uboot_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_arm_uboot_TRUE@\tvideo_fb.marker\n-@COND_arm_uboot_TRUE@am__append_5006 = video_fb.mod\n-@COND_arm_uboot_TRUE@am__append_5007 = video_fb.marker\n-@COND_arm_efi_TRUE@am__append_5008 = video_fb.module\n-@COND_arm_efi_TRUE@am__append_5009 = video_fb.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_5010 = \n-@COND_arm_efi_TRUE@am__append_5011 = $(nodist_video_fb_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_5012 =  \\\n+@COND_arm_uboot_TRUE@am__append_4999 = video_fb.mod\n+@COND_arm_uboot_TRUE@am__append_5000 = video_fb.marker\n+@COND_arm_efi_TRUE@am__append_5001 = video_fb.module\n+@COND_arm_efi_TRUE@am__append_5002 = video_fb.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_5003 = \n+@COND_arm_efi_TRUE@am__append_5004 = $(nodist_video_fb_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_5005 =  \\\n @COND_arm_efi_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tvideo_fb.marker\n-@COND_arm_efi_TRUE@am__append_5013 = video_fb.mod\n-@COND_arm_efi_TRUE@am__append_5014 = video_fb.marker\n-@COND_arm64_efi_TRUE@am__append_5015 = video_fb.module\n-@COND_arm64_efi_TRUE@am__append_5016 = video_fb.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_5017 = \n-@COND_arm64_efi_TRUE@am__append_5018 = $(nodist_video_fb_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_5019 =  \\\n+@COND_arm_efi_TRUE@am__append_5006 = video_fb.mod\n+@COND_arm_efi_TRUE@am__append_5007 = video_fb.marker\n+@COND_arm64_efi_TRUE@am__append_5008 = video_fb.module\n+@COND_arm64_efi_TRUE@am__append_5009 = video_fb.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_5010 = \n+@COND_arm64_efi_TRUE@am__append_5011 = $(nodist_video_fb_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_5012 =  \\\n @COND_arm64_efi_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tvideo_fb.marker\n-@COND_arm64_efi_TRUE@am__append_5020 = video_fb.mod\n-@COND_arm64_efi_TRUE@am__append_5021 = video_fb.marker\n-@COND_riscv32_efi_TRUE@am__append_5022 = video_fb.module\n-@COND_riscv32_efi_TRUE@am__append_5023 = video_fb.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_5024 = \n-@COND_riscv32_efi_TRUE@am__append_5025 = $(nodist_video_fb_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_5026 =  \\\n+@COND_arm64_efi_TRUE@am__append_5013 = video_fb.mod\n+@COND_arm64_efi_TRUE@am__append_5014 = video_fb.marker\n+@COND_riscv32_efi_TRUE@am__append_5015 = video_fb.module\n+@COND_riscv32_efi_TRUE@am__append_5016 = video_fb.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_5017 = \n+@COND_riscv32_efi_TRUE@am__append_5018 = $(nodist_video_fb_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_5019 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tvideo_fb.marker\n-@COND_riscv32_efi_TRUE@am__append_5027 = video_fb.mod\n-@COND_riscv32_efi_TRUE@am__append_5028 = video_fb.marker\n-@COND_riscv64_efi_TRUE@am__append_5029 = video_fb.module\n-@COND_riscv64_efi_TRUE@am__append_5030 = video_fb.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_5031 = \n-@COND_riscv64_efi_TRUE@am__append_5032 = $(nodist_video_fb_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_5033 =  \\\n+@COND_riscv32_efi_TRUE@am__append_5020 = video_fb.mod\n+@COND_riscv32_efi_TRUE@am__append_5021 = video_fb.marker\n+@COND_riscv64_efi_TRUE@am__append_5022 = video_fb.module\n+@COND_riscv64_efi_TRUE@am__append_5023 = video_fb.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_5024 = \n+@COND_riscv64_efi_TRUE@am__append_5025 = $(nodist_video_fb_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_5026 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_video_fb_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tvideo_fb.marker\n-@COND_riscv64_efi_TRUE@am__append_5034 = video_fb.mod\n-@COND_riscv64_efi_TRUE@am__append_5035 = video_fb.marker\n-@COND_emu_TRUE@am__append_5036 = video.module\n-@COND_emu_TRUE@am__append_5037 = video.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_5027 = video_fb.mod\n+@COND_riscv64_efi_TRUE@am__append_5028 = video_fb.marker\n+@COND_emu_TRUE@am__append_5029 = video.module\n+@COND_emu_TRUE@am__append_5030 = video.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@video_module_DEPENDENCIES =\n-@COND_emu_TRUE@am__append_5038 = \n-@COND_emu_TRUE@am__append_5039 = $(nodist_video_module_SOURCES)\n-@COND_emu_TRUE@am__append_5040 = $(nodist_video_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_5031 = \n+@COND_emu_TRUE@am__append_5032 = $(nodist_video_module_SOURCES)\n+@COND_emu_TRUE@am__append_5033 = $(nodist_video_module_SOURCES) \\\n @COND_emu_TRUE@\tvideo.marker\n-@COND_emu_TRUE@am__append_5041 = video.mod\n-@COND_emu_TRUE@am__append_5042 = video.marker\n-@COND_i386_pc_TRUE@am__append_5043 = video.module\n-@COND_i386_pc_TRUE@am__append_5044 = video.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__append_5045 = \n-@COND_i386_pc_TRUE@am__append_5046 = $(nodist_video_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5047 = $(nodist_video_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_5034 = video.mod\n+@COND_emu_TRUE@am__append_5035 = video.marker\n+@COND_i386_pc_TRUE@am__append_5036 = video.module\n+@COND_i386_pc_TRUE@am__append_5037 = video.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__append_5038 = \n+@COND_i386_pc_TRUE@am__append_5039 = $(nodist_video_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_5040 = $(nodist_video_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tvideo.marker\n-@COND_i386_pc_TRUE@am__append_5048 = video.mod\n-@COND_i386_pc_TRUE@am__append_5049 = video.marker\n-@COND_i386_efi_TRUE@am__append_5050 = video.module\n-@COND_i386_efi_TRUE@am__append_5051 = video.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_5052 = \n-@COND_i386_efi_TRUE@am__append_5053 = $(nodist_video_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_5054 = $(nodist_video_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5041 = video.mod\n+@COND_i386_pc_TRUE@am__append_5042 = video.marker\n+@COND_i386_efi_TRUE@am__append_5043 = video.module\n+@COND_i386_efi_TRUE@am__append_5044 = video.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_5045 = \n+@COND_i386_efi_TRUE@am__append_5046 = $(nodist_video_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_5047 = $(nodist_video_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tvideo.marker\n-@COND_i386_efi_TRUE@am__append_5055 = video.mod\n-@COND_i386_efi_TRUE@am__append_5056 = video.marker\n-@COND_i386_qemu_TRUE@am__append_5057 = video.module\n-@COND_i386_qemu_TRUE@am__append_5058 = video.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_5059 = \n-@COND_i386_qemu_TRUE@am__append_5060 = $(nodist_video_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_5061 = $(nodist_video_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_5048 = video.mod\n+@COND_i386_efi_TRUE@am__append_5049 = video.marker\n+@COND_i386_qemu_TRUE@am__append_5050 = video.module\n+@COND_i386_qemu_TRUE@am__append_5051 = video.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_5052 = \n+@COND_i386_qemu_TRUE@am__append_5053 = $(nodist_video_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_5054 = $(nodist_video_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tvideo.marker\n-@COND_i386_qemu_TRUE@am__append_5062 = video.mod\n-@COND_i386_qemu_TRUE@am__append_5063 = video.marker\n-@COND_i386_multiboot_TRUE@am__append_5064 = video.module\n-@COND_i386_multiboot_TRUE@am__append_5065 = video.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_5066 = \n-@COND_i386_multiboot_TRUE@am__append_5067 = $(nodist_video_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_5068 =  \\\n+@COND_i386_qemu_TRUE@am__append_5055 = video.mod\n+@COND_i386_qemu_TRUE@am__append_5056 = video.marker\n+@COND_i386_multiboot_TRUE@am__append_5057 = video.module\n+@COND_i386_multiboot_TRUE@am__append_5058 = video.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_5059 = \n+@COND_i386_multiboot_TRUE@am__append_5060 = $(nodist_video_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_5061 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_video_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tvideo.marker\n-@COND_i386_multiboot_TRUE@am__append_5069 = video.mod\n-@COND_i386_multiboot_TRUE@am__append_5070 = video.marker\n-@COND_i386_ieee1275_TRUE@am__append_5071 = video.module\n-@COND_i386_ieee1275_TRUE@am__append_5072 = video.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_5073 = \n-@COND_i386_ieee1275_TRUE@am__append_5074 = $(nodist_video_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_5075 =  \\\n+@COND_i386_multiboot_TRUE@am__append_5062 = video.mod\n+@COND_i386_multiboot_TRUE@am__append_5063 = video.marker\n+@COND_i386_ieee1275_TRUE@am__append_5064 = video.module\n+@COND_i386_ieee1275_TRUE@am__append_5065 = video.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_5066 = \n+@COND_i386_ieee1275_TRUE@am__append_5067 = $(nodist_video_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_5068 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_video_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tvideo.marker\n-@COND_i386_ieee1275_TRUE@am__append_5076 = video.mod\n-@COND_i386_ieee1275_TRUE@am__append_5077 = video.marker\n-@COND_x86_64_efi_TRUE@am__append_5078 = video.module\n-@COND_x86_64_efi_TRUE@am__append_5079 = video.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_5080 = \n-@COND_x86_64_efi_TRUE@am__append_5081 = $(nodist_video_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_5082 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_5069 = video.mod\n+@COND_i386_ieee1275_TRUE@am__append_5070 = video.marker\n+@COND_x86_64_efi_TRUE@am__append_5071 = video.module\n+@COND_x86_64_efi_TRUE@am__append_5072 = video.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_5073 = \n+@COND_x86_64_efi_TRUE@am__append_5074 = $(nodist_video_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_5075 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_video_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tvideo.marker\n-@COND_x86_64_efi_TRUE@am__append_5083 = video.mod\n-@COND_x86_64_efi_TRUE@am__append_5084 = video.marker\n-@COND_i386_xen_TRUE@am__append_5085 = video.module\n-@COND_i386_xen_TRUE@am__append_5086 = video.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__append_5087 = \n-@COND_i386_xen_TRUE@am__append_5088 = $(nodist_video_module_SOURCES)\n-@COND_i386_xen_TRUE@am__append_5089 = $(nodist_video_module_SOURCES) \\\n+@COND_x86_64_efi_TRUE@am__append_5076 = video.mod\n+@COND_x86_64_efi_TRUE@am__append_5077 = video.marker\n+@COND_i386_xen_TRUE@am__append_5078 = video.module\n+@COND_i386_xen_TRUE@am__append_5079 = video.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__append_5080 = \n+@COND_i386_xen_TRUE@am__append_5081 = $(nodist_video_module_SOURCES)\n+@COND_i386_xen_TRUE@am__append_5082 = $(nodist_video_module_SOURCES) \\\n @COND_i386_xen_TRUE@\tvideo.marker\n-@COND_i386_xen_TRUE@am__append_5090 = video.mod\n-@COND_i386_xen_TRUE@am__append_5091 = video.marker\n-@COND_x86_64_xen_TRUE@am__append_5092 = video.module\n-@COND_x86_64_xen_TRUE@am__append_5093 = video.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__append_5094 = \n-@COND_x86_64_xen_TRUE@am__append_5095 = $(nodist_video_module_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_5096 =  \\\n+@COND_i386_xen_TRUE@am__append_5083 = video.mod\n+@COND_i386_xen_TRUE@am__append_5084 = video.marker\n+@COND_x86_64_xen_TRUE@am__append_5085 = video.module\n+@COND_x86_64_xen_TRUE@am__append_5086 = video.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__append_5087 = \n+@COND_x86_64_xen_TRUE@am__append_5088 = $(nodist_video_module_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_5089 =  \\\n @COND_x86_64_xen_TRUE@\t$(nodist_video_module_SOURCES) \\\n @COND_x86_64_xen_TRUE@\tvideo.marker\n-@COND_x86_64_xen_TRUE@am__append_5097 = video.mod\n-@COND_x86_64_xen_TRUE@am__append_5098 = video.marker\n-@COND_i386_xen_pvh_TRUE@am__append_5099 = video.module\n-@COND_i386_xen_pvh_TRUE@am__append_5100 = video.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_5101 = \n-@COND_i386_xen_pvh_TRUE@am__append_5102 = $(nodist_video_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_5103 =  \\\n+@COND_x86_64_xen_TRUE@am__append_5090 = video.mod\n+@COND_x86_64_xen_TRUE@am__append_5091 = video.marker\n+@COND_i386_xen_pvh_TRUE@am__append_5092 = video.module\n+@COND_i386_xen_pvh_TRUE@am__append_5093 = video.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_5094 = \n+@COND_i386_xen_pvh_TRUE@am__append_5095 = $(nodist_video_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_5096 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_video_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tvideo.marker\n-@COND_i386_xen_pvh_TRUE@am__append_5104 = video.mod\n-@COND_i386_xen_pvh_TRUE@am__append_5105 = video.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_5106 = video.module\n-@COND_sparc64_ieee1275_TRUE@am__append_5107 = video.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__append_5108 = \n-@COND_sparc64_ieee1275_TRUE@am__append_5109 = $(nodist_video_module_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_5110 =  \\\n+@COND_i386_xen_pvh_TRUE@am__append_5097 = video.mod\n+@COND_i386_xen_pvh_TRUE@am__append_5098 = video.marker\n+@COND_sparc64_ieee1275_TRUE@am__append_5099 = video.module\n+@COND_sparc64_ieee1275_TRUE@am__append_5100 = video.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__append_5101 = \n+@COND_sparc64_ieee1275_TRUE@am__append_5102 = $(nodist_video_module_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_5103 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_video_module_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tvideo.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_5111 = video.mod\n-@COND_sparc64_ieee1275_TRUE@am__append_5112 = video.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_5113 = video.module\n-@COND_powerpc_ieee1275_TRUE@am__append_5114 = video.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__append_5115 = \n-@COND_powerpc_ieee1275_TRUE@am__append_5116 = $(nodist_video_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_5117 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__append_5104 = video.mod\n+@COND_sparc64_ieee1275_TRUE@am__append_5105 = video.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_5106 = video.module\n+@COND_powerpc_ieee1275_TRUE@am__append_5107 = video.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_5108 = \n+@COND_powerpc_ieee1275_TRUE@am__append_5109 = $(nodist_video_module_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_5110 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_video_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tvideo.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_5118 = video.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_5119 = video.marker\n-@COND_mips_arc_TRUE@am__append_5120 = video.module\n-@COND_mips_arc_TRUE@am__append_5121 = video.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__append_5122 = \n-@COND_mips_arc_TRUE@am__append_5123 = $(nodist_video_module_SOURCES)\n-@COND_mips_arc_TRUE@am__append_5124 = $(nodist_video_module_SOURCES) \\\n+@COND_powerpc_ieee1275_TRUE@am__append_5111 = video.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_5112 = video.marker\n+@COND_mips_arc_TRUE@am__append_5113 = video.module\n+@COND_mips_arc_TRUE@am__append_5114 = video.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__append_5115 = \n+@COND_mips_arc_TRUE@am__append_5116 = $(nodist_video_module_SOURCES)\n+@COND_mips_arc_TRUE@am__append_5117 = $(nodist_video_module_SOURCES) \\\n @COND_mips_arc_TRUE@\tvideo.marker\n-@COND_mips_arc_TRUE@am__append_5125 = video.mod\n-@COND_mips_arc_TRUE@am__append_5126 = video.marker\n-@COND_ia64_efi_TRUE@am__append_5127 = video.module\n-@COND_ia64_efi_TRUE@am__append_5128 = video.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_5129 = \n-@COND_ia64_efi_TRUE@am__append_5130 = $(nodist_video_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_5131 = $(nodist_video_module_SOURCES) \\\n+@COND_mips_arc_TRUE@am__append_5118 = video.mod\n+@COND_mips_arc_TRUE@am__append_5119 = video.marker\n+@COND_ia64_efi_TRUE@am__append_5120 = video.module\n+@COND_ia64_efi_TRUE@am__append_5121 = video.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_5122 = \n+@COND_ia64_efi_TRUE@am__append_5123 = $(nodist_video_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_5124 = $(nodist_video_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tvideo.marker\n-@COND_ia64_efi_TRUE@am__append_5132 = video.mod\n-@COND_ia64_efi_TRUE@am__append_5133 = video.marker\n-@COND_mips_qemu_mips_TRUE@am__append_5134 = video.module\n-@COND_mips_qemu_mips_TRUE@am__append_5135 = video.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__append_5136 = \n-@COND_mips_qemu_mips_TRUE@am__append_5137 = $(nodist_video_module_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_5138 =  \\\n+@COND_ia64_efi_TRUE@am__append_5125 = video.mod\n+@COND_ia64_efi_TRUE@am__append_5126 = video.marker\n+@COND_mips_qemu_mips_TRUE@am__append_5127 = video.module\n+@COND_mips_qemu_mips_TRUE@am__append_5128 = video.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__append_5129 = \n+@COND_mips_qemu_mips_TRUE@am__append_5130 = $(nodist_video_module_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_5131 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_video_module_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tvideo.marker\n-@COND_mips_qemu_mips_TRUE@am__append_5139 = video.mod\n-@COND_mips_qemu_mips_TRUE@am__append_5140 = video.marker\n-@COND_arm_uboot_TRUE@am__append_5141 = video.module\n-@COND_arm_uboot_TRUE@am__append_5142 = video.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__append_5143 = \n-@COND_arm_uboot_TRUE@am__append_5144 = $(nodist_video_module_SOURCES)\n-@COND_arm_uboot_TRUE@am__append_5145 = $(nodist_video_module_SOURCES) \\\n+@COND_mips_qemu_mips_TRUE@am__append_5132 = video.mod\n+@COND_mips_qemu_mips_TRUE@am__append_5133 = video.marker\n+@COND_arm_uboot_TRUE@am__append_5134 = video.module\n+@COND_arm_uboot_TRUE@am__append_5135 = video.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__append_5136 = \n+@COND_arm_uboot_TRUE@am__append_5137 = $(nodist_video_module_SOURCES)\n+@COND_arm_uboot_TRUE@am__append_5138 = $(nodist_video_module_SOURCES) \\\n @COND_arm_uboot_TRUE@\tvideo.marker\n-@COND_arm_uboot_TRUE@am__append_5146 = video.mod\n-@COND_arm_uboot_TRUE@am__append_5147 = video.marker\n-@COND_arm_efi_TRUE@am__append_5148 = video.module\n-@COND_arm_efi_TRUE@am__append_5149 = video.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_5150 = \n-@COND_arm_efi_TRUE@am__append_5151 = $(nodist_video_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_5152 = $(nodist_video_module_SOURCES) \\\n+@COND_arm_uboot_TRUE@am__append_5139 = video.mod\n+@COND_arm_uboot_TRUE@am__append_5140 = video.marker\n+@COND_arm_efi_TRUE@am__append_5141 = video.module\n+@COND_arm_efi_TRUE@am__append_5142 = video.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_5143 = \n+@COND_arm_efi_TRUE@am__append_5144 = $(nodist_video_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_5145 = $(nodist_video_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tvideo.marker\n-@COND_arm_efi_TRUE@am__append_5153 = video.mod\n-@COND_arm_efi_TRUE@am__append_5154 = video.marker\n-@COND_arm64_efi_TRUE@am__append_5155 = video.module\n-@COND_arm64_efi_TRUE@am__append_5156 = video.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_5157 = \n-@COND_arm64_efi_TRUE@am__append_5158 = $(nodist_video_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_5159 = $(nodist_video_module_SOURCES) \\\n+@COND_arm_efi_TRUE@am__append_5146 = video.mod\n+@COND_arm_efi_TRUE@am__append_5147 = video.marker\n+@COND_arm64_efi_TRUE@am__append_5148 = video.module\n+@COND_arm64_efi_TRUE@am__append_5149 = video.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_5150 = \n+@COND_arm64_efi_TRUE@am__append_5151 = $(nodist_video_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_5152 = $(nodist_video_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tvideo.marker\n-@COND_arm64_efi_TRUE@am__append_5160 = video.mod\n-@COND_arm64_efi_TRUE@am__append_5161 = video.marker\n-@COND_riscv32_efi_TRUE@am__append_5162 = video.module\n-@COND_riscv32_efi_TRUE@am__append_5163 = video.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_5164 = \n-@COND_riscv32_efi_TRUE@am__append_5165 = $(nodist_video_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_5166 =  \\\n+@COND_arm64_efi_TRUE@am__append_5153 = video.mod\n+@COND_arm64_efi_TRUE@am__append_5154 = video.marker\n+@COND_riscv32_efi_TRUE@am__append_5155 = video.module\n+@COND_riscv32_efi_TRUE@am__append_5156 = video.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_5157 = \n+@COND_riscv32_efi_TRUE@am__append_5158 = $(nodist_video_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_5159 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_video_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tvideo.marker\n-@COND_riscv32_efi_TRUE@am__append_5167 = video.mod\n-@COND_riscv32_efi_TRUE@am__append_5168 = video.marker\n-@COND_riscv64_efi_TRUE@am__append_5169 = video.module\n-@COND_riscv64_efi_TRUE@am__append_5170 = video.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_5171 = \n-@COND_riscv64_efi_TRUE@am__append_5172 = $(nodist_video_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_5173 =  \\\n+@COND_riscv32_efi_TRUE@am__append_5160 = video.mod\n+@COND_riscv32_efi_TRUE@am__append_5161 = video.marker\n+@COND_riscv64_efi_TRUE@am__append_5162 = video.module\n+@COND_riscv64_efi_TRUE@am__append_5163 = video.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_5164 = \n+@COND_riscv64_efi_TRUE@am__append_5165 = $(nodist_video_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_5166 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_video_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tvideo.marker\n-@COND_riscv64_efi_TRUE@am__append_5174 = video.mod\n-@COND_riscv64_efi_TRUE@am__append_5175 = video.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_5176 = ieee1275_fb.module\n-@COND_powerpc_ieee1275_TRUE@am__append_5177 = ieee1275_fb.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_5167 = video.mod\n+@COND_riscv64_efi_TRUE@am__append_5168 = video.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_5169 = ieee1275_fb.module\n+@COND_powerpc_ieee1275_TRUE@am__append_5170 = ieee1275_fb.module$(EXEEXT)\n @COND_powerpc_ieee1275_FALSE@ieee1275_fb_module_DEPENDENCIES =\n-@COND_powerpc_ieee1275_TRUE@am__append_5178 = \n-@COND_powerpc_ieee1275_TRUE@am__append_5179 = $(nodist_ieee1275_fb_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_5180 = $(nodist_ieee1275_fb_module_SOURCES) \\\n+@COND_powerpc_ieee1275_TRUE@am__append_5171 = \n+@COND_powerpc_ieee1275_TRUE@am__append_5172 = $(nodist_ieee1275_fb_module_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_5173 = $(nodist_ieee1275_fb_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tieee1275_fb.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_5181 = ieee1275_fb.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_5182 = ieee1275_fb.marker\n-@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5183 = sdl.module\n-@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5184 = sdl.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_5174 = ieee1275_fb.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_5175 = ieee1275_fb.marker\n+@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5176 = sdl.module\n+@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5177 = sdl.module$(EXEEXT)\n @COND_GRUB_EMU_SDL_FALSE@sdl_module_DEPENDENCIES =\n @COND_emu_FALSE@sdl_module_DEPENDENCIES =\n-@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5185 = \n-@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5186 = $(nodist_sdl_module_SOURCES)\n-@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5187 = $(nodist_sdl_module_SOURCES) \\\n+@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5178 = \n+@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5179 = $(nodist_sdl_module_SOURCES)\n+@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5180 = $(nodist_sdl_module_SOURCES) \\\n @COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@\tsdl.marker\n-@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5188 = sdl.mod\n-@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5189 = sdl.marker\n-@COND_i386_ieee1275_TRUE@am__append_5190 = ofnet.module\n-@COND_i386_ieee1275_TRUE@am__append_5191 = ofnet.module$(EXEEXT)\n+@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5181 = sdl.mod\n+@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5182 = sdl.marker\n+@COND_i386_ieee1275_TRUE@am__append_5183 = ofnet.module\n+@COND_i386_ieee1275_TRUE@am__append_5184 = ofnet.module$(EXEEXT)\n @COND_i386_ieee1275_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_sparc64_ieee1275_FALSE@ofnet_module_DEPENDENCIES =\n-@COND_i386_ieee1275_TRUE@am__append_5192 = \n-@COND_i386_ieee1275_TRUE@am__append_5193 = $(nodist_ofnet_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_5194 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_5185 = \n+@COND_i386_ieee1275_TRUE@am__append_5186 = $(nodist_ofnet_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_5187 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_ofnet_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tofnet.marker\n-@COND_i386_ieee1275_TRUE@am__append_5195 = ofnet.mod\n-@COND_i386_ieee1275_TRUE@am__append_5196 = ofnet.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_5197 = ofnet.module\n-@COND_sparc64_ieee1275_TRUE@am__append_5198 = ofnet.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__append_5199 = \n-@COND_sparc64_ieee1275_TRUE@am__append_5200 = $(nodist_ofnet_module_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_5201 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_5188 = ofnet.mod\n+@COND_i386_ieee1275_TRUE@am__append_5189 = ofnet.marker\n+@COND_sparc64_ieee1275_TRUE@am__append_5190 = ofnet.module\n+@COND_sparc64_ieee1275_TRUE@am__append_5191 = ofnet.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__append_5192 = \n+@COND_sparc64_ieee1275_TRUE@am__append_5193 = $(nodist_ofnet_module_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_5194 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_ofnet_module_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tofnet.marker\n-@COND_sparc64_ieee1275_TRUE@am__append_5202 = ofnet.mod\n-@COND_sparc64_ieee1275_TRUE@am__append_5203 = ofnet.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_5204 = ofnet.module\n-@COND_powerpc_ieee1275_TRUE@am__append_5205 = ofnet.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__append_5206 = \n-@COND_powerpc_ieee1275_TRUE@am__append_5207 = $(nodist_ofnet_module_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_5208 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__append_5195 = ofnet.mod\n+@COND_sparc64_ieee1275_TRUE@am__append_5196 = ofnet.marker\n+@COND_powerpc_ieee1275_TRUE@am__append_5197 = ofnet.module\n+@COND_powerpc_ieee1275_TRUE@am__append_5198 = ofnet.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_5199 = \n+@COND_powerpc_ieee1275_TRUE@am__append_5200 = $(nodist_ofnet_module_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_5201 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_ofnet_module_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tofnet.marker\n-@COND_powerpc_ieee1275_TRUE@am__append_5209 = ofnet.mod\n-@COND_powerpc_ieee1275_TRUE@am__append_5210 = ofnet.marker\n-@COND_arm_uboot_TRUE@am__append_5211 = ubootnet.module\n-@COND_arm_uboot_TRUE@am__append_5212 = ubootnet.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__append_5202 = ofnet.mod\n+@COND_powerpc_ieee1275_TRUE@am__append_5203 = ofnet.marker\n+@COND_arm_uboot_TRUE@am__append_5204 = ubootnet.module\n+@COND_arm_uboot_TRUE@am__append_5205 = ubootnet.module$(EXEEXT)\n @COND_arm_uboot_FALSE@ubootnet_module_DEPENDENCIES =\n-@COND_arm_uboot_TRUE@am__append_5213 = \n-@COND_arm_uboot_TRUE@am__append_5214 = $(nodist_ubootnet_module_SOURCES)\n-@COND_arm_uboot_TRUE@am__append_5215 =  \\\n+@COND_arm_uboot_TRUE@am__append_5206 = \n+@COND_arm_uboot_TRUE@am__append_5207 = $(nodist_ubootnet_module_SOURCES)\n+@COND_arm_uboot_TRUE@am__append_5208 =  \\\n @COND_arm_uboot_TRUE@\t$(nodist_ubootnet_module_SOURCES) \\\n @COND_arm_uboot_TRUE@\tubootnet.marker\n-@COND_arm_uboot_TRUE@am__append_5216 = ubootnet.mod\n-@COND_arm_uboot_TRUE@am__append_5217 = ubootnet.marker\n-@COND_i386_efi_TRUE@am__append_5218 = efinet.module\n-@COND_i386_efi_TRUE@am__append_5219 = efinet.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__append_5209 = ubootnet.mod\n+@COND_arm_uboot_TRUE@am__append_5210 = ubootnet.marker\n+@COND_i386_efi_TRUE@am__append_5211 = efinet.module\n+@COND_i386_efi_TRUE@am__append_5212 = efinet.module$(EXEEXT)\n @COND_arm64_efi_FALSE@@COND_arm_efi_FALSE@@COND_i386_efi_FALSE@@COND_ia64_efi_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_x86_64_efi_FALSE@efinet_module_DEPENDENCIES =\n-@COND_i386_efi_TRUE@am__append_5220 = \n-@COND_i386_efi_TRUE@am__append_5221 = $(nodist_efinet_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_5222 = $(nodist_efinet_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_5213 = \n+@COND_i386_efi_TRUE@am__append_5214 = $(nodist_efinet_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_5215 = $(nodist_efinet_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tefinet.marker\n-@COND_i386_efi_TRUE@am__append_5223 = efinet.mod\n-@COND_i386_efi_TRUE@am__append_5224 = efinet.marker\n-@COND_x86_64_efi_TRUE@am__append_5225 = efinet.module\n-@COND_x86_64_efi_TRUE@am__append_5226 = efinet.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_5227 = \n-@COND_x86_64_efi_TRUE@am__append_5228 = $(nodist_efinet_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_5229 =  \\\n+@COND_i386_efi_TRUE@am__append_5216 = efinet.mod\n+@COND_i386_efi_TRUE@am__append_5217 = efinet.marker\n+@COND_x86_64_efi_TRUE@am__append_5218 = efinet.module\n+@COND_x86_64_efi_TRUE@am__append_5219 = efinet.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_5220 = \n+@COND_x86_64_efi_TRUE@am__append_5221 = $(nodist_efinet_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_5222 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_efinet_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tefinet.marker\n-@COND_x86_64_efi_TRUE@am__append_5230 = efinet.mod\n-@COND_x86_64_efi_TRUE@am__append_5231 = efinet.marker\n-@COND_ia64_efi_TRUE@am__append_5232 = efinet.module\n-@COND_ia64_efi_TRUE@am__append_5233 = efinet.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__append_5234 = \n-@COND_ia64_efi_TRUE@am__append_5235 = $(nodist_efinet_module_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_5236 = $(nodist_efinet_module_SOURCES) \\\n+@COND_x86_64_efi_TRUE@am__append_5223 = efinet.mod\n+@COND_x86_64_efi_TRUE@am__append_5224 = efinet.marker\n+@COND_ia64_efi_TRUE@am__append_5225 = efinet.module\n+@COND_ia64_efi_TRUE@am__append_5226 = efinet.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__append_5227 = \n+@COND_ia64_efi_TRUE@am__append_5228 = $(nodist_efinet_module_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_5229 = $(nodist_efinet_module_SOURCES) \\\n @COND_ia64_efi_TRUE@\tefinet.marker\n-@COND_ia64_efi_TRUE@am__append_5237 = efinet.mod\n-@COND_ia64_efi_TRUE@am__append_5238 = efinet.marker\n-@COND_arm_efi_TRUE@am__append_5239 = efinet.module\n-@COND_arm_efi_TRUE@am__append_5240 = efinet.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__append_5241 = \n-@COND_arm_efi_TRUE@am__append_5242 = $(nodist_efinet_module_SOURCES)\n-@COND_arm_efi_TRUE@am__append_5243 = $(nodist_efinet_module_SOURCES) \\\n+@COND_ia64_efi_TRUE@am__append_5230 = efinet.mod\n+@COND_ia64_efi_TRUE@am__append_5231 = efinet.marker\n+@COND_arm_efi_TRUE@am__append_5232 = efinet.module\n+@COND_arm_efi_TRUE@am__append_5233 = efinet.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__append_5234 = \n+@COND_arm_efi_TRUE@am__append_5235 = $(nodist_efinet_module_SOURCES)\n+@COND_arm_efi_TRUE@am__append_5236 = $(nodist_efinet_module_SOURCES) \\\n @COND_arm_efi_TRUE@\tefinet.marker\n-@COND_arm_efi_TRUE@am__append_5244 = efinet.mod\n-@COND_arm_efi_TRUE@am__append_5245 = efinet.marker\n-@COND_arm64_efi_TRUE@am__append_5246 = efinet.module\n-@COND_arm64_efi_TRUE@am__append_5247 = efinet.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__append_5248 = \n-@COND_arm64_efi_TRUE@am__append_5249 = $(nodist_efinet_module_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_5250 =  \\\n+@COND_arm_efi_TRUE@am__append_5237 = efinet.mod\n+@COND_arm_efi_TRUE@am__append_5238 = efinet.marker\n+@COND_arm64_efi_TRUE@am__append_5239 = efinet.module\n+@COND_arm64_efi_TRUE@am__append_5240 = efinet.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__append_5241 = \n+@COND_arm64_efi_TRUE@am__append_5242 = $(nodist_efinet_module_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_5243 =  \\\n @COND_arm64_efi_TRUE@\t$(nodist_efinet_module_SOURCES) \\\n @COND_arm64_efi_TRUE@\tefinet.marker\n-@COND_arm64_efi_TRUE@am__append_5251 = efinet.mod\n-@COND_arm64_efi_TRUE@am__append_5252 = efinet.marker\n-@COND_riscv32_efi_TRUE@am__append_5253 = efinet.module\n-@COND_riscv32_efi_TRUE@am__append_5254 = efinet.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__append_5255 = \n-@COND_riscv32_efi_TRUE@am__append_5256 = $(nodist_efinet_module_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_5257 =  \\\n+@COND_arm64_efi_TRUE@am__append_5244 = efinet.mod\n+@COND_arm64_efi_TRUE@am__append_5245 = efinet.marker\n+@COND_riscv32_efi_TRUE@am__append_5246 = efinet.module\n+@COND_riscv32_efi_TRUE@am__append_5247 = efinet.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__append_5248 = \n+@COND_riscv32_efi_TRUE@am__append_5249 = $(nodist_efinet_module_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_5250 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_efinet_module_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tefinet.marker\n-@COND_riscv32_efi_TRUE@am__append_5258 = efinet.mod\n-@COND_riscv32_efi_TRUE@am__append_5259 = efinet.marker\n-@COND_riscv64_efi_TRUE@am__append_5260 = efinet.module\n-@COND_riscv64_efi_TRUE@am__append_5261 = efinet.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__append_5262 = \n-@COND_riscv64_efi_TRUE@am__append_5263 = $(nodist_efinet_module_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_5264 =  \\\n+@COND_riscv32_efi_TRUE@am__append_5251 = efinet.mod\n+@COND_riscv32_efi_TRUE@am__append_5252 = efinet.marker\n+@COND_riscv64_efi_TRUE@am__append_5253 = efinet.module\n+@COND_riscv64_efi_TRUE@am__append_5254 = efinet.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__append_5255 = \n+@COND_riscv64_efi_TRUE@am__append_5256 = $(nodist_efinet_module_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_5257 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_efinet_module_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tefinet.marker\n-@COND_riscv64_efi_TRUE@am__append_5265 = efinet.mod\n-@COND_riscv64_efi_TRUE@am__append_5266 = efinet.marker\n-@COND_emu_TRUE@am__append_5267 = emunet.module legacycfg.module\n-@COND_emu_TRUE@am__append_5268 = emunet.module$(EXEEXT) \\\n+@COND_riscv64_efi_TRUE@am__append_5258 = efinet.mod\n+@COND_riscv64_efi_TRUE@am__append_5259 = efinet.marker\n+@COND_emu_TRUE@am__append_5260 = emunet.module legacycfg.module\n+@COND_emu_TRUE@am__append_5261 = emunet.module$(EXEEXT) \\\n @COND_emu_TRUE@\tlegacycfg.module$(EXEEXT)\n @COND_emu_FALSE@emunet_module_DEPENDENCIES =\n-@COND_emu_TRUE@am__append_5269 =\n-@COND_emu_TRUE@am__append_5270 = $(nodist_emunet_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_5262 =\n+@COND_emu_TRUE@am__append_5263 = $(nodist_emunet_module_SOURCES) \\\n @COND_emu_TRUE@\t$(nodist_legacycfg_module_SOURCES)\n-@COND_emu_TRUE@am__append_5271 = $(nodist_emunet_module_SOURCES) \\\n+@COND_emu_TRUE@am__append_5264 = $(nodist_emunet_module_SOURCES) \\\n @COND_emu_TRUE@\temunet.marker \\\n @COND_emu_TRUE@\t$(nodist_legacycfg_module_SOURCES) \\\n @COND_emu_TRUE@\tlegacycfg.marker\n-@COND_emu_TRUE@am__append_5272 = emunet.mod legacycfg.mod\n-@COND_emu_TRUE@am__append_5273 = emunet.marker legacycfg.marker\n+@COND_emu_TRUE@am__append_5265 = emunet.mod legacycfg.mod\n+@COND_emu_TRUE@am__append_5266 = emunet.marker legacycfg.marker\n @COND_emu_FALSE@@COND_i386_efi_FALSE@@COND_i386_pc_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@legacycfg_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_5274 = legacycfg.module\n-@COND_i386_pc_TRUE@am__append_5275 = legacycfg.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__append_5276 = \n-@COND_i386_pc_TRUE@am__append_5277 = $(nodist_legacycfg_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5278 =  \\\n+@COND_i386_pc_TRUE@am__append_5267 = legacycfg.module\n+@COND_i386_pc_TRUE@am__append_5268 = legacycfg.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__append_5269 = \n+@COND_i386_pc_TRUE@am__append_5270 = $(nodist_legacycfg_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_5271 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_legacycfg_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tlegacycfg.marker\n-@COND_i386_pc_TRUE@am__append_5279 = legacycfg.mod\n-@COND_i386_pc_TRUE@am__append_5280 = legacycfg.marker\n-@COND_i386_efi_TRUE@am__append_5281 = legacycfg.module\n-@COND_i386_efi_TRUE@am__append_5282 = legacycfg.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_5283 = \n-@COND_i386_efi_TRUE@am__append_5284 = $(nodist_legacycfg_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_5285 =  \\\n+@COND_i386_pc_TRUE@am__append_5272 = legacycfg.mod\n+@COND_i386_pc_TRUE@am__append_5273 = legacycfg.marker\n+@COND_i386_efi_TRUE@am__append_5274 = legacycfg.module\n+@COND_i386_efi_TRUE@am__append_5275 = legacycfg.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_5276 = \n+@COND_i386_efi_TRUE@am__append_5277 = $(nodist_legacycfg_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_5278 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_legacycfg_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tlegacycfg.marker\n-@COND_i386_efi_TRUE@am__append_5286 = legacycfg.mod\n-@COND_i386_efi_TRUE@am__append_5287 = legacycfg.marker\n-@COND_x86_64_efi_TRUE@am__append_5288 = legacycfg.module\n-@COND_x86_64_efi_TRUE@am__append_5289 = legacycfg.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_5290 = \n-@COND_x86_64_efi_TRUE@am__append_5291 = $(nodist_legacycfg_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_5292 =  \\\n+@COND_i386_efi_TRUE@am__append_5279 = legacycfg.mod\n+@COND_i386_efi_TRUE@am__append_5280 = legacycfg.marker\n+@COND_x86_64_efi_TRUE@am__append_5281 = legacycfg.module\n+@COND_x86_64_efi_TRUE@am__append_5282 = legacycfg.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_5283 = \n+@COND_x86_64_efi_TRUE@am__append_5284 = $(nodist_legacycfg_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_5285 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_legacycfg_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tlegacycfg.marker\n-@COND_x86_64_efi_TRUE@am__append_5293 = legacycfg.mod\n-@COND_x86_64_efi_TRUE@am__append_5294 = legacycfg.marker\n-@COND_i386_xen_TRUE@am__append_5295 = legacycfg.module\n-@COND_i386_xen_TRUE@am__append_5296 = legacycfg.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__append_5297 = \n-@COND_i386_xen_TRUE@am__append_5298 = $(nodist_legacycfg_module_SOURCES)\n-@COND_i386_xen_TRUE@am__append_5299 =  \\\n+@COND_x86_64_efi_TRUE@am__append_5286 = legacycfg.mod\n+@COND_x86_64_efi_TRUE@am__append_5287 = legacycfg.marker\n+@COND_i386_xen_TRUE@am__append_5288 = legacycfg.module\n+@COND_i386_xen_TRUE@am__append_5289 = legacycfg.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__append_5290 = \n+@COND_i386_xen_TRUE@am__append_5291 = $(nodist_legacycfg_module_SOURCES)\n+@COND_i386_xen_TRUE@am__append_5292 =  \\\n @COND_i386_xen_TRUE@\t$(nodist_legacycfg_module_SOURCES) \\\n @COND_i386_xen_TRUE@\tlegacycfg.marker\n-@COND_i386_xen_TRUE@am__append_5300 = legacycfg.mod\n-@COND_i386_xen_TRUE@am__append_5301 = legacycfg.marker\n-@COND_x86_64_xen_TRUE@am__append_5302 = legacycfg.module\n-@COND_x86_64_xen_TRUE@am__append_5303 = legacycfg.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__append_5304 = \n-@COND_x86_64_xen_TRUE@am__append_5305 = $(nodist_legacycfg_module_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_5306 =  \\\n+@COND_i386_xen_TRUE@am__append_5293 = legacycfg.mod\n+@COND_i386_xen_TRUE@am__append_5294 = legacycfg.marker\n+@COND_x86_64_xen_TRUE@am__append_5295 = legacycfg.module\n+@COND_x86_64_xen_TRUE@am__append_5296 = legacycfg.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__append_5297 = \n+@COND_x86_64_xen_TRUE@am__append_5298 = $(nodist_legacycfg_module_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_5299 =  \\\n @COND_x86_64_xen_TRUE@\t$(nodist_legacycfg_module_SOURCES) \\\n @COND_x86_64_xen_TRUE@\tlegacycfg.marker\n-@COND_x86_64_xen_TRUE@am__append_5307 = legacycfg.mod\n-@COND_x86_64_xen_TRUE@am__append_5308 = legacycfg.marker\n-@COND_i386_xen_pvh_TRUE@am__append_5309 = legacycfg.module\n-@COND_i386_xen_pvh_TRUE@am__append_5310 = legacycfg.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_5311 = \n-@COND_i386_xen_pvh_TRUE@am__append_5312 = $(nodist_legacycfg_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_5313 =  \\\n+@COND_x86_64_xen_TRUE@am__append_5300 = legacycfg.mod\n+@COND_x86_64_xen_TRUE@am__append_5301 = legacycfg.marker\n+@COND_i386_xen_pvh_TRUE@am__append_5302 = legacycfg.module\n+@COND_i386_xen_pvh_TRUE@am__append_5303 = legacycfg.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_5304 = \n+@COND_i386_xen_pvh_TRUE@am__append_5305 = $(nodist_legacycfg_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_5306 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_legacycfg_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tlegacycfg.marker\n-@COND_i386_xen_pvh_TRUE@am__append_5314 = legacycfg.mod\n-@COND_i386_xen_pvh_TRUE@am__append_5315 = legacycfg.marker\n-@COND_i386_pc_TRUE@am__append_5316 = backtrace.module\n-@COND_i386_pc_TRUE@am__append_5317 = backtrace.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_5307 = legacycfg.mod\n+@COND_i386_xen_pvh_TRUE@am__append_5308 = legacycfg.marker\n+@COND_i386_pc_TRUE@am__append_5309 = backtrace.module\n+@COND_i386_pc_TRUE@am__append_5310 = backtrace.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@backtrace_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_5318 = \n-@COND_i386_pc_TRUE@am__append_5319 = $(nodist_backtrace_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5320 =  \\\n+@COND_i386_pc_TRUE@am__append_5311 = \n+@COND_i386_pc_TRUE@am__append_5312 = $(nodist_backtrace_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_5313 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_backtrace_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tbacktrace.marker\n-@COND_i386_pc_TRUE@am__append_5321 = backtrace.mod\n-@COND_i386_pc_TRUE@am__append_5322 = backtrace.marker\n-@COND_i386_efi_TRUE@am__append_5323 = backtrace.module\n-@COND_i386_efi_TRUE@am__append_5324 = backtrace.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_5325 = \n-@COND_i386_efi_TRUE@am__append_5326 = $(nodist_backtrace_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_5327 =  \\\n+@COND_i386_pc_TRUE@am__append_5314 = backtrace.mod\n+@COND_i386_pc_TRUE@am__append_5315 = backtrace.marker\n+@COND_i386_efi_TRUE@am__append_5316 = backtrace.module\n+@COND_i386_efi_TRUE@am__append_5317 = backtrace.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_5318 = \n+@COND_i386_efi_TRUE@am__append_5319 = $(nodist_backtrace_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_5320 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_backtrace_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tbacktrace.marker\n-@COND_i386_efi_TRUE@am__append_5328 = backtrace.mod\n-@COND_i386_efi_TRUE@am__append_5329 = backtrace.marker\n-@COND_i386_qemu_TRUE@am__append_5330 = backtrace.module\n-@COND_i386_qemu_TRUE@am__append_5331 = backtrace.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_5332 = \n-@COND_i386_qemu_TRUE@am__append_5333 = $(nodist_backtrace_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_5334 =  \\\n+@COND_i386_efi_TRUE@am__append_5321 = backtrace.mod\n+@COND_i386_efi_TRUE@am__append_5322 = backtrace.marker\n+@COND_i386_qemu_TRUE@am__append_5323 = backtrace.module\n+@COND_i386_qemu_TRUE@am__append_5324 = backtrace.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_5325 = \n+@COND_i386_qemu_TRUE@am__append_5326 = $(nodist_backtrace_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_5327 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_backtrace_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tbacktrace.marker\n-@COND_i386_qemu_TRUE@am__append_5335 = backtrace.mod\n-@COND_i386_qemu_TRUE@am__append_5336 = backtrace.marker\n-@COND_i386_coreboot_TRUE@am__append_5337 = backtrace.module\n-@COND_i386_coreboot_TRUE@am__append_5338 = backtrace.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_5339 = \n-@COND_i386_coreboot_TRUE@am__append_5340 = $(nodist_backtrace_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_5341 =  \\\n+@COND_i386_qemu_TRUE@am__append_5328 = backtrace.mod\n+@COND_i386_qemu_TRUE@am__append_5329 = backtrace.marker\n+@COND_i386_coreboot_TRUE@am__append_5330 = backtrace.module\n+@COND_i386_coreboot_TRUE@am__append_5331 = backtrace.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_5332 = \n+@COND_i386_coreboot_TRUE@am__append_5333 = $(nodist_backtrace_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_5334 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_backtrace_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tbacktrace.marker\n-@COND_i386_coreboot_TRUE@am__append_5342 = backtrace.mod\n-@COND_i386_coreboot_TRUE@am__append_5343 = backtrace.marker\n-@COND_i386_multiboot_TRUE@am__append_5344 = backtrace.module\n-@COND_i386_multiboot_TRUE@am__append_5345 = backtrace.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_5346 = \n-@COND_i386_multiboot_TRUE@am__append_5347 = $(nodist_backtrace_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_5348 =  \\\n+@COND_i386_coreboot_TRUE@am__append_5335 = backtrace.mod\n+@COND_i386_coreboot_TRUE@am__append_5336 = backtrace.marker\n+@COND_i386_multiboot_TRUE@am__append_5337 = backtrace.module\n+@COND_i386_multiboot_TRUE@am__append_5338 = backtrace.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_5339 = \n+@COND_i386_multiboot_TRUE@am__append_5340 = $(nodist_backtrace_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_5341 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_backtrace_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tbacktrace.marker\n-@COND_i386_multiboot_TRUE@am__append_5349 = backtrace.mod\n-@COND_i386_multiboot_TRUE@am__append_5350 = backtrace.marker\n-@COND_i386_ieee1275_TRUE@am__append_5351 = backtrace.module\n-@COND_i386_ieee1275_TRUE@am__append_5352 = backtrace.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_5353 = \n-@COND_i386_ieee1275_TRUE@am__append_5354 = $(nodist_backtrace_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_5355 =  \\\n+@COND_i386_multiboot_TRUE@am__append_5342 = backtrace.mod\n+@COND_i386_multiboot_TRUE@am__append_5343 = backtrace.marker\n+@COND_i386_ieee1275_TRUE@am__append_5344 = backtrace.module\n+@COND_i386_ieee1275_TRUE@am__append_5345 = backtrace.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_5346 = \n+@COND_i386_ieee1275_TRUE@am__append_5347 = $(nodist_backtrace_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_5348 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_backtrace_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tbacktrace.marker\n-@COND_i386_ieee1275_TRUE@am__append_5356 = backtrace.mod\n-@COND_i386_ieee1275_TRUE@am__append_5357 = backtrace.marker\n-@COND_x86_64_efi_TRUE@am__append_5358 = backtrace.module\n-@COND_x86_64_efi_TRUE@am__append_5359 = backtrace.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_5360 = \n-@COND_x86_64_efi_TRUE@am__append_5361 = $(nodist_backtrace_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_5362 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_5349 = backtrace.mod\n+@COND_i386_ieee1275_TRUE@am__append_5350 = backtrace.marker\n+@COND_x86_64_efi_TRUE@am__append_5351 = backtrace.module\n+@COND_x86_64_efi_TRUE@am__append_5352 = backtrace.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_5353 = \n+@COND_x86_64_efi_TRUE@am__append_5354 = $(nodist_backtrace_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_5355 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_backtrace_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tbacktrace.marker\n-@COND_x86_64_efi_TRUE@am__append_5363 = backtrace.mod\n-@COND_x86_64_efi_TRUE@am__append_5364 = backtrace.marker\n-@COND_i386_xen_TRUE@am__append_5365 = backtrace.module\n-@COND_i386_xen_TRUE@am__append_5366 = backtrace.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__append_5367 = \n-@COND_i386_xen_TRUE@am__append_5368 = $(nodist_backtrace_module_SOURCES)\n-@COND_i386_xen_TRUE@am__append_5369 =  \\\n+@COND_x86_64_efi_TRUE@am__append_5356 = backtrace.mod\n+@COND_x86_64_efi_TRUE@am__append_5357 = backtrace.marker\n+@COND_i386_xen_TRUE@am__append_5358 = backtrace.module\n+@COND_i386_xen_TRUE@am__append_5359 = backtrace.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__append_5360 = \n+@COND_i386_xen_TRUE@am__append_5361 = $(nodist_backtrace_module_SOURCES)\n+@COND_i386_xen_TRUE@am__append_5362 =  \\\n @COND_i386_xen_TRUE@\t$(nodist_backtrace_module_SOURCES) \\\n @COND_i386_xen_TRUE@\tbacktrace.marker\n-@COND_i386_xen_TRUE@am__append_5370 = backtrace.mod\n-@COND_i386_xen_TRUE@am__append_5371 = backtrace.marker\n-@COND_x86_64_xen_TRUE@am__append_5372 = backtrace.module\n-@COND_x86_64_xen_TRUE@am__append_5373 = backtrace.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__append_5374 = \n-@COND_x86_64_xen_TRUE@am__append_5375 = $(nodist_backtrace_module_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_5376 =  \\\n+@COND_i386_xen_TRUE@am__append_5363 = backtrace.mod\n+@COND_i386_xen_TRUE@am__append_5364 = backtrace.marker\n+@COND_x86_64_xen_TRUE@am__append_5365 = backtrace.module\n+@COND_x86_64_xen_TRUE@am__append_5366 = backtrace.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__append_5367 = \n+@COND_x86_64_xen_TRUE@am__append_5368 = $(nodist_backtrace_module_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_5369 =  \\\n @COND_x86_64_xen_TRUE@\t$(nodist_backtrace_module_SOURCES) \\\n @COND_x86_64_xen_TRUE@\tbacktrace.marker\n-@COND_x86_64_xen_TRUE@am__append_5377 = backtrace.mod\n-@COND_x86_64_xen_TRUE@am__append_5378 = backtrace.marker\n-@COND_i386_xen_pvh_TRUE@am__append_5379 = backtrace.module\n-@COND_i386_xen_pvh_TRUE@am__append_5380 = backtrace.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__append_5381 = \n-@COND_i386_xen_pvh_TRUE@am__append_5382 = $(nodist_backtrace_module_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_5383 =  \\\n+@COND_x86_64_xen_TRUE@am__append_5370 = backtrace.mod\n+@COND_x86_64_xen_TRUE@am__append_5371 = backtrace.marker\n+@COND_i386_xen_pvh_TRUE@am__append_5372 = backtrace.module\n+@COND_i386_xen_pvh_TRUE@am__append_5373 = backtrace.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__append_5374 = \n+@COND_i386_xen_pvh_TRUE@am__append_5375 = $(nodist_backtrace_module_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_5376 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_backtrace_module_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tbacktrace.marker\n-@COND_i386_xen_pvh_TRUE@am__append_5384 = backtrace.mod\n-@COND_i386_xen_pvh_TRUE@am__append_5385 = backtrace.marker\n-@COND_i386_pc_TRUE@am__append_5386 = lsapm.module keylayouts.module\n-@COND_i386_pc_TRUE@am__append_5387 = lsapm.module$(EXEEXT) \\\n+@COND_i386_xen_pvh_TRUE@am__append_5377 = backtrace.mod\n+@COND_i386_xen_pvh_TRUE@am__append_5378 = backtrace.marker\n+@COND_i386_pc_TRUE@am__append_5379 = lsapm.module keylayouts.module\n+@COND_i386_pc_TRUE@am__append_5380 = lsapm.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tkeylayouts.module$(EXEEXT)\n @COND_i386_pc_FALSE@lsapm_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_5388 =\n-@COND_i386_pc_TRUE@am__append_5389 = $(nodist_lsapm_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5381 =\n+@COND_i386_pc_TRUE@am__append_5382 = $(nodist_lsapm_module_SOURCES) \\\n @COND_i386_pc_TRUE@\t$(nodist_keylayouts_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5390 = $(nodist_lsapm_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5383 = $(nodist_lsapm_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tlsapm.marker \\\n @COND_i386_pc_TRUE@\t$(nodist_keylayouts_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tkeylayouts.marker\n-@COND_i386_pc_TRUE@am__append_5391 = lsapm.mod keylayouts.mod\n-@COND_i386_pc_TRUE@am__append_5392 = lsapm.marker keylayouts.marker\n+@COND_i386_pc_TRUE@am__append_5384 = lsapm.mod keylayouts.mod\n+@COND_i386_pc_TRUE@am__append_5385 = lsapm.marker keylayouts.marker\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_x86_64_efi_FALSE@keylayouts_module_DEPENDENCIES =\n-@COND_i386_efi_TRUE@am__append_5393 = keylayouts.module\n-@COND_i386_efi_TRUE@am__append_5394 = keylayouts.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_5395 = \n-@COND_i386_efi_TRUE@am__append_5396 = $(nodist_keylayouts_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_5397 =  \\\n+@COND_i386_efi_TRUE@am__append_5386 = keylayouts.module\n+@COND_i386_efi_TRUE@am__append_5387 = keylayouts.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_5388 = \n+@COND_i386_efi_TRUE@am__append_5389 = $(nodist_keylayouts_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_5390 =  \\\n @COND_i386_efi_TRUE@\t$(nodist_keylayouts_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tkeylayouts.marker\n-@COND_i386_efi_TRUE@am__append_5398 = keylayouts.mod\n-@COND_i386_efi_TRUE@am__append_5399 = keylayouts.marker\n-@COND_i386_qemu_TRUE@am__append_5400 = keylayouts.module\n-@COND_i386_qemu_TRUE@am__append_5401 = keylayouts.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_5402 = \n-@COND_i386_qemu_TRUE@am__append_5403 = $(nodist_keylayouts_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_5404 =  \\\n+@COND_i386_efi_TRUE@am__append_5391 = keylayouts.mod\n+@COND_i386_efi_TRUE@am__append_5392 = keylayouts.marker\n+@COND_i386_qemu_TRUE@am__append_5393 = keylayouts.module\n+@COND_i386_qemu_TRUE@am__append_5394 = keylayouts.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_5395 = \n+@COND_i386_qemu_TRUE@am__append_5396 = $(nodist_keylayouts_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_5397 =  \\\n @COND_i386_qemu_TRUE@\t$(nodist_keylayouts_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tkeylayouts.marker\n-@COND_i386_qemu_TRUE@am__append_5405 = keylayouts.mod\n-@COND_i386_qemu_TRUE@am__append_5406 = keylayouts.marker\n-@COND_i386_coreboot_TRUE@am__append_5407 = keylayouts.module\n-@COND_i386_coreboot_TRUE@am__append_5408 = keylayouts.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_5409 = \n-@COND_i386_coreboot_TRUE@am__append_5410 = $(nodist_keylayouts_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_5411 =  \\\n+@COND_i386_qemu_TRUE@am__append_5398 = keylayouts.mod\n+@COND_i386_qemu_TRUE@am__append_5399 = keylayouts.marker\n+@COND_i386_coreboot_TRUE@am__append_5400 = keylayouts.module\n+@COND_i386_coreboot_TRUE@am__append_5401 = keylayouts.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_5402 = \n+@COND_i386_coreboot_TRUE@am__append_5403 = $(nodist_keylayouts_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_5404 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_keylayouts_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tkeylayouts.marker\n-@COND_i386_coreboot_TRUE@am__append_5412 = keylayouts.mod\n-@COND_i386_coreboot_TRUE@am__append_5413 = keylayouts.marker\n-@COND_i386_multiboot_TRUE@am__append_5414 = keylayouts.module\n-@COND_i386_multiboot_TRUE@am__append_5415 = keylayouts.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_5416 = \n-@COND_i386_multiboot_TRUE@am__append_5417 = $(nodist_keylayouts_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_5418 =  \\\n+@COND_i386_coreboot_TRUE@am__append_5405 = keylayouts.mod\n+@COND_i386_coreboot_TRUE@am__append_5406 = keylayouts.marker\n+@COND_i386_multiboot_TRUE@am__append_5407 = keylayouts.module\n+@COND_i386_multiboot_TRUE@am__append_5408 = keylayouts.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_5409 = \n+@COND_i386_multiboot_TRUE@am__append_5410 = $(nodist_keylayouts_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_5411 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_keylayouts_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tkeylayouts.marker\n-@COND_i386_multiboot_TRUE@am__append_5419 = keylayouts.mod\n-@COND_i386_multiboot_TRUE@am__append_5420 = keylayouts.marker\n-@COND_i386_ieee1275_TRUE@am__append_5421 = keylayouts.module\n-@COND_i386_ieee1275_TRUE@am__append_5422 = keylayouts.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_5423 = \n-@COND_i386_ieee1275_TRUE@am__append_5424 = $(nodist_keylayouts_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_5425 =  \\\n+@COND_i386_multiboot_TRUE@am__append_5412 = keylayouts.mod\n+@COND_i386_multiboot_TRUE@am__append_5413 = keylayouts.marker\n+@COND_i386_ieee1275_TRUE@am__append_5414 = keylayouts.module\n+@COND_i386_ieee1275_TRUE@am__append_5415 = keylayouts.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_5416 = \n+@COND_i386_ieee1275_TRUE@am__append_5417 = $(nodist_keylayouts_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_5418 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_keylayouts_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tkeylayouts.marker\n-@COND_i386_ieee1275_TRUE@am__append_5426 = keylayouts.mod\n-@COND_i386_ieee1275_TRUE@am__append_5427 = keylayouts.marker\n-@COND_x86_64_efi_TRUE@am__append_5428 = keylayouts.module\n-@COND_x86_64_efi_TRUE@am__append_5429 = keylayouts.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_5430 = \n-@COND_x86_64_efi_TRUE@am__append_5431 = $(nodist_keylayouts_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_5432 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_5419 = keylayouts.mod\n+@COND_i386_ieee1275_TRUE@am__append_5420 = keylayouts.marker\n+@COND_x86_64_efi_TRUE@am__append_5421 = keylayouts.module\n+@COND_x86_64_efi_TRUE@am__append_5422 = keylayouts.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_5423 = \n+@COND_x86_64_efi_TRUE@am__append_5424 = $(nodist_keylayouts_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_5425 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_keylayouts_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tkeylayouts.marker\n-@COND_x86_64_efi_TRUE@am__append_5433 = keylayouts.mod\n-@COND_x86_64_efi_TRUE@am__append_5434 = keylayouts.marker\n-@COND_ENABLE_CACHE_STATS_TRUE@am__append_5435 = cacheinfo.module\n-@COND_ENABLE_CACHE_STATS_TRUE@am__append_5436 = cacheinfo.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_5426 = keylayouts.mod\n+@COND_x86_64_efi_TRUE@am__append_5427 = keylayouts.marker\n+@COND_ENABLE_CACHE_STATS_TRUE@am__append_5428 = cacheinfo.module\n+@COND_ENABLE_CACHE_STATS_TRUE@am__append_5429 = cacheinfo.module$(EXEEXT)\n @COND_ENABLE_CACHE_STATS_FALSE@cacheinfo_module_DEPENDENCIES =\n-@COND_ENABLE_CACHE_STATS_TRUE@am__append_5437 = \n-@COND_ENABLE_CACHE_STATS_TRUE@am__append_5438 = $(nodist_cacheinfo_module_SOURCES)\n-@COND_ENABLE_CACHE_STATS_TRUE@am__append_5439 = $(nodist_cacheinfo_module_SOURCES) \\\n+@COND_ENABLE_CACHE_STATS_TRUE@am__append_5430 = \n+@COND_ENABLE_CACHE_STATS_TRUE@am__append_5431 = $(nodist_cacheinfo_module_SOURCES)\n+@COND_ENABLE_CACHE_STATS_TRUE@am__append_5432 = $(nodist_cacheinfo_module_SOURCES) \\\n @COND_ENABLE_CACHE_STATS_TRUE@\tcacheinfo.marker\n-@COND_ENABLE_CACHE_STATS_TRUE@am__append_5440 = cacheinfo.mod\n-@COND_ENABLE_CACHE_STATS_TRUE@am__append_5441 = cacheinfo.marker\n-@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5442 = boottime.module\n-@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5443 = boottime.module$(EXEEXT)\n+@COND_ENABLE_CACHE_STATS_TRUE@am__append_5433 = cacheinfo.mod\n+@COND_ENABLE_CACHE_STATS_TRUE@am__append_5434 = cacheinfo.marker\n+@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5435 = boottime.module\n+@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5436 = boottime.module$(EXEEXT)\n @COND_ENABLE_BOOT_TIME_STATS_FALSE@boottime_module_DEPENDENCIES =\n-@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5444 = \n-@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5445 = $(nodist_boottime_module_SOURCES)\n-@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5446 = $(nodist_boottime_module_SOURCES) \\\n+@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5437 = \n+@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5438 = $(nodist_boottime_module_SOURCES)\n+@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5439 = $(nodist_boottime_module_SOURCES) \\\n @COND_ENABLE_BOOT_TIME_STATS_TRUE@\tboottime.marker\n-@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5447 = boottime.mod\n-@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5448 = boottime.marker\n-@COND_i386_pc_TRUE@am__append_5449 = gdb.module\n-@COND_i386_pc_TRUE@am__append_5450 = gdb.module$(EXEEXT)\n+@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5440 = boottime.mod\n+@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__append_5441 = boottime.marker\n+@COND_i386_pc_TRUE@am__append_5442 = gdb.module\n+@COND_i386_pc_TRUE@am__append_5443 = gdb.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@gdb_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_5451 = \n-@COND_i386_pc_TRUE@am__append_5452 = $(nodist_gdb_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5453 = $(nodist_gdb_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5444 = \n+@COND_i386_pc_TRUE@am__append_5445 = $(nodist_gdb_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_5446 = $(nodist_gdb_module_SOURCES) \\\n @COND_i386_pc_TRUE@\tgdb.marker\n-@COND_i386_pc_TRUE@am__append_5454 = gdb.mod\n-@COND_i386_pc_TRUE@am__append_5455 = gdb.marker\n-@COND_i386_efi_TRUE@am__append_5456 = gdb.module\n-@COND_i386_efi_TRUE@am__append_5457 = gdb.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_5458 = \n-@COND_i386_efi_TRUE@am__append_5459 = $(nodist_gdb_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_5460 = $(nodist_gdb_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5447 = gdb.mod\n+@COND_i386_pc_TRUE@am__append_5448 = gdb.marker\n+@COND_i386_efi_TRUE@am__append_5449 = gdb.module\n+@COND_i386_efi_TRUE@am__append_5450 = gdb.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_5451 = \n+@COND_i386_efi_TRUE@am__append_5452 = $(nodist_gdb_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_5453 = $(nodist_gdb_module_SOURCES) \\\n @COND_i386_efi_TRUE@\tgdb.marker\n-@COND_i386_efi_TRUE@am__append_5461 = gdb.mod\n-@COND_i386_efi_TRUE@am__append_5462 = gdb.marker\n-@COND_i386_qemu_TRUE@am__append_5463 = gdb.module\n-@COND_i386_qemu_TRUE@am__append_5464 = gdb.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_5465 = \n-@COND_i386_qemu_TRUE@am__append_5466 = $(nodist_gdb_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_5467 = $(nodist_gdb_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_5454 = gdb.mod\n+@COND_i386_efi_TRUE@am__append_5455 = gdb.marker\n+@COND_i386_qemu_TRUE@am__append_5456 = gdb.module\n+@COND_i386_qemu_TRUE@am__append_5457 = gdb.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_5458 = \n+@COND_i386_qemu_TRUE@am__append_5459 = $(nodist_gdb_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_5460 = $(nodist_gdb_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\tgdb.marker\n-@COND_i386_qemu_TRUE@am__append_5468 = gdb.mod\n-@COND_i386_qemu_TRUE@am__append_5469 = gdb.marker\n-@COND_i386_coreboot_TRUE@am__append_5470 = gdb.module\n-@COND_i386_coreboot_TRUE@am__append_5471 = gdb.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_5472 = \n-@COND_i386_coreboot_TRUE@am__append_5473 = $(nodist_gdb_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_5474 =  \\\n+@COND_i386_qemu_TRUE@am__append_5461 = gdb.mod\n+@COND_i386_qemu_TRUE@am__append_5462 = gdb.marker\n+@COND_i386_coreboot_TRUE@am__append_5463 = gdb.module\n+@COND_i386_coreboot_TRUE@am__append_5464 = gdb.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_5465 = \n+@COND_i386_coreboot_TRUE@am__append_5466 = $(nodist_gdb_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_5467 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_gdb_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tgdb.marker\n-@COND_i386_coreboot_TRUE@am__append_5475 = gdb.mod\n-@COND_i386_coreboot_TRUE@am__append_5476 = gdb.marker\n-@COND_i386_multiboot_TRUE@am__append_5477 = gdb.module\n-@COND_i386_multiboot_TRUE@am__append_5478 = gdb.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_5479 = \n-@COND_i386_multiboot_TRUE@am__append_5480 = $(nodist_gdb_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_5481 =  \\\n+@COND_i386_coreboot_TRUE@am__append_5468 = gdb.mod\n+@COND_i386_coreboot_TRUE@am__append_5469 = gdb.marker\n+@COND_i386_multiboot_TRUE@am__append_5470 = gdb.module\n+@COND_i386_multiboot_TRUE@am__append_5471 = gdb.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_5472 = \n+@COND_i386_multiboot_TRUE@am__append_5473 = $(nodist_gdb_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_5474 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_gdb_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tgdb.marker\n-@COND_i386_multiboot_TRUE@am__append_5482 = gdb.mod\n-@COND_i386_multiboot_TRUE@am__append_5483 = gdb.marker\n-@COND_i386_ieee1275_TRUE@am__append_5484 = gdb.module\n-@COND_i386_ieee1275_TRUE@am__append_5485 = gdb.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_5486 = \n-@COND_i386_ieee1275_TRUE@am__append_5487 = $(nodist_gdb_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_5488 =  \\\n+@COND_i386_multiboot_TRUE@am__append_5475 = gdb.mod\n+@COND_i386_multiboot_TRUE@am__append_5476 = gdb.marker\n+@COND_i386_ieee1275_TRUE@am__append_5477 = gdb.module\n+@COND_i386_ieee1275_TRUE@am__append_5478 = gdb.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_5479 = \n+@COND_i386_ieee1275_TRUE@am__append_5480 = $(nodist_gdb_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_5481 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_gdb_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tgdb.marker\n-@COND_i386_ieee1275_TRUE@am__append_5489 = gdb.mod\n-@COND_i386_ieee1275_TRUE@am__append_5490 = gdb.marker\n-@COND_x86_64_efi_TRUE@am__append_5491 = tpm.module\n-@COND_x86_64_efi_TRUE@am__append_5492 = tpm.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_5482 = gdb.mod\n+@COND_i386_ieee1275_TRUE@am__append_5483 = gdb.marker\n+@COND_x86_64_efi_TRUE@am__append_5484 = tpm.module\n+@COND_x86_64_efi_TRUE@am__append_5485 = tpm.module$(EXEEXT)\n @COND_x86_64_efi_FALSE@tpm_module_DEPENDENCIES =\n-@COND_x86_64_efi_TRUE@am__append_5493 = \n-@COND_x86_64_efi_TRUE@am__append_5494 = $(nodist_tpm_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_5495 = $(nodist_tpm_module_SOURCES) \\\n+@COND_x86_64_efi_TRUE@am__append_5486 = \n+@COND_x86_64_efi_TRUE@am__append_5487 = $(nodist_tpm_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_5488 = $(nodist_tpm_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\ttpm.marker\n-@COND_x86_64_efi_TRUE@am__append_5496 = tpm.mod\n-@COND_x86_64_efi_TRUE@am__append_5497 = tpm.marker\n-@COND_i386_pc_TRUE@am__append_5498 = rdmsr.module\n-@COND_i386_pc_TRUE@am__append_5499 = rdmsr.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_5489 = tpm.mod\n+@COND_x86_64_efi_TRUE@am__append_5490 = tpm.marker\n+@COND_i386_pc_TRUE@am__append_5491 = rdmsr.module\n+@COND_i386_pc_TRUE@am__append_5492 = rdmsr.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_x86_64_efi_FALSE@rdmsr_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_5500 = \n-@COND_i386_pc_TRUE@am__append_5501 = $(nodist_rdmsr_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5502 = $(nodist_rdmsr_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5493 = \n+@COND_i386_pc_TRUE@am__append_5494 = $(nodist_rdmsr_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_5495 = $(nodist_rdmsr_module_SOURCES) \\\n @COND_i386_pc_TRUE@\trdmsr.marker\n-@COND_i386_pc_TRUE@am__append_5503 = rdmsr.mod\n-@COND_i386_pc_TRUE@am__append_5504 = rdmsr.marker\n-@COND_i386_efi_TRUE@am__append_5505 = rdmsr.module\n-@COND_i386_efi_TRUE@am__append_5506 = rdmsr.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_5507 = \n-@COND_i386_efi_TRUE@am__append_5508 = $(nodist_rdmsr_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_5509 = $(nodist_rdmsr_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5496 = rdmsr.mod\n+@COND_i386_pc_TRUE@am__append_5497 = rdmsr.marker\n+@COND_i386_efi_TRUE@am__append_5498 = rdmsr.module\n+@COND_i386_efi_TRUE@am__append_5499 = rdmsr.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_5500 = \n+@COND_i386_efi_TRUE@am__append_5501 = $(nodist_rdmsr_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_5502 = $(nodist_rdmsr_module_SOURCES) \\\n @COND_i386_efi_TRUE@\trdmsr.marker\n-@COND_i386_efi_TRUE@am__append_5510 = rdmsr.mod\n-@COND_i386_efi_TRUE@am__append_5511 = rdmsr.marker\n-@COND_i386_qemu_TRUE@am__append_5512 = rdmsr.module\n-@COND_i386_qemu_TRUE@am__append_5513 = rdmsr.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_5514 = \n-@COND_i386_qemu_TRUE@am__append_5515 = $(nodist_rdmsr_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_5516 = $(nodist_rdmsr_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_5503 = rdmsr.mod\n+@COND_i386_efi_TRUE@am__append_5504 = rdmsr.marker\n+@COND_i386_qemu_TRUE@am__append_5505 = rdmsr.module\n+@COND_i386_qemu_TRUE@am__append_5506 = rdmsr.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_5507 = \n+@COND_i386_qemu_TRUE@am__append_5508 = $(nodist_rdmsr_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_5509 = $(nodist_rdmsr_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\trdmsr.marker\n-@COND_i386_qemu_TRUE@am__append_5517 = rdmsr.mod\n-@COND_i386_qemu_TRUE@am__append_5518 = rdmsr.marker\n-@COND_i386_coreboot_TRUE@am__append_5519 = rdmsr.module\n-@COND_i386_coreboot_TRUE@am__append_5520 = rdmsr.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_5521 = \n-@COND_i386_coreboot_TRUE@am__append_5522 = $(nodist_rdmsr_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_5523 =  \\\n+@COND_i386_qemu_TRUE@am__append_5510 = rdmsr.mod\n+@COND_i386_qemu_TRUE@am__append_5511 = rdmsr.marker\n+@COND_i386_coreboot_TRUE@am__append_5512 = rdmsr.module\n+@COND_i386_coreboot_TRUE@am__append_5513 = rdmsr.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_5514 = \n+@COND_i386_coreboot_TRUE@am__append_5515 = $(nodist_rdmsr_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_5516 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_rdmsr_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\trdmsr.marker\n-@COND_i386_coreboot_TRUE@am__append_5524 = rdmsr.mod\n-@COND_i386_coreboot_TRUE@am__append_5525 = rdmsr.marker\n-@COND_i386_multiboot_TRUE@am__append_5526 = rdmsr.module\n-@COND_i386_multiboot_TRUE@am__append_5527 = rdmsr.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_5528 = \n-@COND_i386_multiboot_TRUE@am__append_5529 = $(nodist_rdmsr_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_5530 =  \\\n+@COND_i386_coreboot_TRUE@am__append_5517 = rdmsr.mod\n+@COND_i386_coreboot_TRUE@am__append_5518 = rdmsr.marker\n+@COND_i386_multiboot_TRUE@am__append_5519 = rdmsr.module\n+@COND_i386_multiboot_TRUE@am__append_5520 = rdmsr.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_5521 = \n+@COND_i386_multiboot_TRUE@am__append_5522 = $(nodist_rdmsr_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_5523 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_rdmsr_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\trdmsr.marker\n-@COND_i386_multiboot_TRUE@am__append_5531 = rdmsr.mod\n-@COND_i386_multiboot_TRUE@am__append_5532 = rdmsr.marker\n-@COND_i386_ieee1275_TRUE@am__append_5533 = rdmsr.module\n-@COND_i386_ieee1275_TRUE@am__append_5534 = rdmsr.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_5535 = \n-@COND_i386_ieee1275_TRUE@am__append_5536 = $(nodist_rdmsr_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_5537 =  \\\n+@COND_i386_multiboot_TRUE@am__append_5524 = rdmsr.mod\n+@COND_i386_multiboot_TRUE@am__append_5525 = rdmsr.marker\n+@COND_i386_ieee1275_TRUE@am__append_5526 = rdmsr.module\n+@COND_i386_ieee1275_TRUE@am__append_5527 = rdmsr.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_5528 = \n+@COND_i386_ieee1275_TRUE@am__append_5529 = $(nodist_rdmsr_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_5530 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_rdmsr_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\trdmsr.marker\n-@COND_i386_ieee1275_TRUE@am__append_5538 = rdmsr.mod\n-@COND_i386_ieee1275_TRUE@am__append_5539 = rdmsr.marker\n-@COND_x86_64_efi_TRUE@am__append_5540 = rdmsr.module\n-@COND_x86_64_efi_TRUE@am__append_5541 = rdmsr.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_5542 = \n-@COND_x86_64_efi_TRUE@am__append_5543 = $(nodist_rdmsr_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_5544 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_5531 = rdmsr.mod\n+@COND_i386_ieee1275_TRUE@am__append_5532 = rdmsr.marker\n+@COND_x86_64_efi_TRUE@am__append_5533 = rdmsr.module\n+@COND_x86_64_efi_TRUE@am__append_5534 = rdmsr.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_5535 = \n+@COND_x86_64_efi_TRUE@am__append_5536 = $(nodist_rdmsr_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_5537 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_rdmsr_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\trdmsr.marker\n-@COND_x86_64_efi_TRUE@am__append_5545 = rdmsr.mod\n-@COND_x86_64_efi_TRUE@am__append_5546 = rdmsr.marker\n-@COND_i386_pc_TRUE@am__append_5547 = wrmsr.module\n-@COND_i386_pc_TRUE@am__append_5548 = wrmsr.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_5538 = rdmsr.mod\n+@COND_x86_64_efi_TRUE@am__append_5539 = rdmsr.marker\n+@COND_i386_pc_TRUE@am__append_5540 = wrmsr.module\n+@COND_i386_pc_TRUE@am__append_5541 = wrmsr.module$(EXEEXT)\n @COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_x86_64_efi_FALSE@wrmsr_module_DEPENDENCIES =\n-@COND_i386_pc_TRUE@am__append_5549 = \n-@COND_i386_pc_TRUE@am__append_5550 = $(nodist_wrmsr_module_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5551 = $(nodist_wrmsr_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5542 = \n+@COND_i386_pc_TRUE@am__append_5543 = $(nodist_wrmsr_module_SOURCES)\n+@COND_i386_pc_TRUE@am__append_5544 = $(nodist_wrmsr_module_SOURCES) \\\n @COND_i386_pc_TRUE@\twrmsr.marker\n-@COND_i386_pc_TRUE@am__append_5552 = wrmsr.mod\n-@COND_i386_pc_TRUE@am__append_5553 = wrmsr.marker\n-@COND_i386_efi_TRUE@am__append_5554 = wrmsr.module\n-@COND_i386_efi_TRUE@am__append_5555 = wrmsr.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__append_5556 = \n-@COND_i386_efi_TRUE@am__append_5557 = $(nodist_wrmsr_module_SOURCES)\n-@COND_i386_efi_TRUE@am__append_5558 = $(nodist_wrmsr_module_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5545 = wrmsr.mod\n+@COND_i386_pc_TRUE@am__append_5546 = wrmsr.marker\n+@COND_i386_efi_TRUE@am__append_5547 = wrmsr.module\n+@COND_i386_efi_TRUE@am__append_5548 = wrmsr.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__append_5549 = \n+@COND_i386_efi_TRUE@am__append_5550 = $(nodist_wrmsr_module_SOURCES)\n+@COND_i386_efi_TRUE@am__append_5551 = $(nodist_wrmsr_module_SOURCES) \\\n @COND_i386_efi_TRUE@\twrmsr.marker\n-@COND_i386_efi_TRUE@am__append_5559 = wrmsr.mod\n-@COND_i386_efi_TRUE@am__append_5560 = wrmsr.marker\n-@COND_i386_qemu_TRUE@am__append_5561 = wrmsr.module\n-@COND_i386_qemu_TRUE@am__append_5562 = wrmsr.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__append_5563 = \n-@COND_i386_qemu_TRUE@am__append_5564 = $(nodist_wrmsr_module_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_5565 = $(nodist_wrmsr_module_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_5552 = wrmsr.mod\n+@COND_i386_efi_TRUE@am__append_5553 = wrmsr.marker\n+@COND_i386_qemu_TRUE@am__append_5554 = wrmsr.module\n+@COND_i386_qemu_TRUE@am__append_5555 = wrmsr.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__append_5556 = \n+@COND_i386_qemu_TRUE@am__append_5557 = $(nodist_wrmsr_module_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_5558 = $(nodist_wrmsr_module_SOURCES) \\\n @COND_i386_qemu_TRUE@\twrmsr.marker\n-@COND_i386_qemu_TRUE@am__append_5566 = wrmsr.mod\n-@COND_i386_qemu_TRUE@am__append_5567 = wrmsr.marker\n-@COND_i386_coreboot_TRUE@am__append_5568 = wrmsr.module\n-@COND_i386_coreboot_TRUE@am__append_5569 = wrmsr.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__append_5570 = \n-@COND_i386_coreboot_TRUE@am__append_5571 = $(nodist_wrmsr_module_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_5572 =  \\\n+@COND_i386_qemu_TRUE@am__append_5559 = wrmsr.mod\n+@COND_i386_qemu_TRUE@am__append_5560 = wrmsr.marker\n+@COND_i386_coreboot_TRUE@am__append_5561 = wrmsr.module\n+@COND_i386_coreboot_TRUE@am__append_5562 = wrmsr.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__append_5563 = \n+@COND_i386_coreboot_TRUE@am__append_5564 = $(nodist_wrmsr_module_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_5565 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_wrmsr_module_SOURCES) \\\n @COND_i386_coreboot_TRUE@\twrmsr.marker\n-@COND_i386_coreboot_TRUE@am__append_5573 = wrmsr.mod\n-@COND_i386_coreboot_TRUE@am__append_5574 = wrmsr.marker\n-@COND_i386_multiboot_TRUE@am__append_5575 = wrmsr.module\n-@COND_i386_multiboot_TRUE@am__append_5576 = wrmsr.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__append_5577 = \n-@COND_i386_multiboot_TRUE@am__append_5578 = $(nodist_wrmsr_module_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_5579 =  \\\n+@COND_i386_coreboot_TRUE@am__append_5566 = wrmsr.mod\n+@COND_i386_coreboot_TRUE@am__append_5567 = wrmsr.marker\n+@COND_i386_multiboot_TRUE@am__append_5568 = wrmsr.module\n+@COND_i386_multiboot_TRUE@am__append_5569 = wrmsr.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__append_5570 = \n+@COND_i386_multiboot_TRUE@am__append_5571 = $(nodist_wrmsr_module_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_5572 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_wrmsr_module_SOURCES) \\\n @COND_i386_multiboot_TRUE@\twrmsr.marker\n-@COND_i386_multiboot_TRUE@am__append_5580 = wrmsr.mod\n-@COND_i386_multiboot_TRUE@am__append_5581 = wrmsr.marker\n-@COND_i386_ieee1275_TRUE@am__append_5582 = wrmsr.module\n-@COND_i386_ieee1275_TRUE@am__append_5583 = wrmsr.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__append_5584 = \n-@COND_i386_ieee1275_TRUE@am__append_5585 = $(nodist_wrmsr_module_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_5586 =  \\\n+@COND_i386_multiboot_TRUE@am__append_5573 = wrmsr.mod\n+@COND_i386_multiboot_TRUE@am__append_5574 = wrmsr.marker\n+@COND_i386_ieee1275_TRUE@am__append_5575 = wrmsr.module\n+@COND_i386_ieee1275_TRUE@am__append_5576 = wrmsr.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__append_5577 = \n+@COND_i386_ieee1275_TRUE@am__append_5578 = $(nodist_wrmsr_module_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_5579 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_wrmsr_module_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\twrmsr.marker\n-@COND_i386_ieee1275_TRUE@am__append_5587 = wrmsr.mod\n-@COND_i386_ieee1275_TRUE@am__append_5588 = wrmsr.marker\n-@COND_x86_64_efi_TRUE@am__append_5589 = wrmsr.module\n-@COND_x86_64_efi_TRUE@am__append_5590 = wrmsr.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__append_5591 = \n-@COND_x86_64_efi_TRUE@am__append_5592 = $(nodist_wrmsr_module_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_5593 =  \\\n+@COND_i386_ieee1275_TRUE@am__append_5580 = wrmsr.mod\n+@COND_i386_ieee1275_TRUE@am__append_5581 = wrmsr.marker\n+@COND_x86_64_efi_TRUE@am__append_5582 = wrmsr.module\n+@COND_x86_64_efi_TRUE@am__append_5583 = wrmsr.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__append_5584 = \n+@COND_x86_64_efi_TRUE@am__append_5585 = $(nodist_wrmsr_module_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_5586 =  \\\n @COND_x86_64_efi_TRUE@\t$(nodist_wrmsr_module_SOURCES) \\\n @COND_x86_64_efi_TRUE@\twrmsr.marker\n-@COND_x86_64_efi_TRUE@am__append_5594 = wrmsr.mod\n-@COND_x86_64_efi_TRUE@am__append_5595 = wrmsr.marker\n-@COND_emu_TRUE@am__append_5596 = kernel.exec\n+@COND_x86_64_efi_TRUE@am__append_5587 = wrmsr.mod\n+@COND_x86_64_efi_TRUE@am__append_5588 = wrmsr.marker\n+@COND_emu_TRUE@am__append_5589 = kernel.exec\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_FALSE@kernel_exec_DEPENDENCIES =\n-@COND_emu_TRUE@am__append_5597 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_emu_TRUE@am__append_5598 = $(nodist_kernel_exec_SOURCES)\n-@COND_emu_TRUE@am__append_5599 = $(nodist_kernel_exec_SOURCES) \\\n+@COND_emu_TRUE@am__append_5590 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_emu_TRUE@am__append_5591 = $(nodist_kernel_exec_SOURCES)\n+@COND_emu_TRUE@am__append_5592 = $(nodist_kernel_exec_SOURCES) \\\n @COND_emu_TRUE@\tkernel.img\n-@COND_emu_TRUE@am__append_5600 = kernel.img\n-@COND_i386_pc_TRUE@am__append_5601 = kernel.exec\n-@COND_i386_pc_TRUE@am__append_5602 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_i386_pc_TRUE@am__append_5603 = $(nodist_kernel_exec_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5604 = $(nodist_kernel_exec_SOURCES) \\\n+@COND_emu_TRUE@am__append_5593 = kernel.img\n+@COND_i386_pc_TRUE@am__append_5594 = kernel.exec\n+@COND_i386_pc_TRUE@am__append_5595 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_i386_pc_TRUE@am__append_5596 = $(nodist_kernel_exec_SOURCES)\n+@COND_i386_pc_TRUE@am__append_5597 = $(nodist_kernel_exec_SOURCES) \\\n @COND_i386_pc_TRUE@\tkernel.img\n-@COND_i386_pc_TRUE@am__append_5605 = kernel.img\n-@COND_i386_efi_TRUE@am__append_5606 = kernel.exec\n-@COND_i386_efi_TRUE@am__append_5607 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_i386_efi_TRUE@am__append_5608 = $(nodist_kernel_exec_SOURCES)\n-@COND_i386_efi_TRUE@am__append_5609 = $(nodist_kernel_exec_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5598 = kernel.img\n+@COND_i386_efi_TRUE@am__append_5599 = kernel.exec\n+@COND_i386_efi_TRUE@am__append_5600 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_i386_efi_TRUE@am__append_5601 = $(nodist_kernel_exec_SOURCES)\n+@COND_i386_efi_TRUE@am__append_5602 = $(nodist_kernel_exec_SOURCES) \\\n @COND_i386_efi_TRUE@\tkernel.img\n-@COND_i386_efi_TRUE@am__append_5610 = kernel.img\n-@COND_i386_qemu_TRUE@am__append_5611 = kernel.exec\n-@COND_i386_qemu_TRUE@am__append_5612 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_i386_qemu_TRUE@am__append_5613 = $(nodist_kernel_exec_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_5614 = $(nodist_kernel_exec_SOURCES) \\\n+@COND_i386_efi_TRUE@am__append_5603 = kernel.img\n+@COND_i386_qemu_TRUE@am__append_5604 = kernel.exec\n+@COND_i386_qemu_TRUE@am__append_5605 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_i386_qemu_TRUE@am__append_5606 = $(nodist_kernel_exec_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_5607 = $(nodist_kernel_exec_SOURCES) \\\n @COND_i386_qemu_TRUE@\tkernel.img\n-@COND_i386_qemu_TRUE@am__append_5615 = kernel.img\n-@COND_i386_coreboot_TRUE@am__append_5616 = kernel.exec\n-@COND_i386_coreboot_TRUE@am__append_5617 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_i386_coreboot_TRUE@am__append_5618 = $(nodist_kernel_exec_SOURCES)\n-@COND_i386_coreboot_TRUE@am__append_5619 =  \\\n+@COND_i386_qemu_TRUE@am__append_5608 = kernel.img\n+@COND_i386_coreboot_TRUE@am__append_5609 = kernel.exec\n+@COND_i386_coreboot_TRUE@am__append_5610 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_i386_coreboot_TRUE@am__append_5611 = $(nodist_kernel_exec_SOURCES)\n+@COND_i386_coreboot_TRUE@am__append_5612 =  \\\n @COND_i386_coreboot_TRUE@\t$(nodist_kernel_exec_SOURCES) \\\n @COND_i386_coreboot_TRUE@\tkernel.img\n-@COND_i386_coreboot_TRUE@am__append_5620 = kernel.img\n-@COND_i386_multiboot_TRUE@am__append_5621 = kernel.exec\n-@COND_i386_multiboot_TRUE@am__append_5622 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_i386_multiboot_TRUE@am__append_5623 = $(nodist_kernel_exec_SOURCES)\n-@COND_i386_multiboot_TRUE@am__append_5624 =  \\\n+@COND_i386_coreboot_TRUE@am__append_5613 = kernel.img\n+@COND_i386_multiboot_TRUE@am__append_5614 = kernel.exec\n+@COND_i386_multiboot_TRUE@am__append_5615 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_i386_multiboot_TRUE@am__append_5616 = $(nodist_kernel_exec_SOURCES)\n+@COND_i386_multiboot_TRUE@am__append_5617 =  \\\n @COND_i386_multiboot_TRUE@\t$(nodist_kernel_exec_SOURCES) \\\n @COND_i386_multiboot_TRUE@\tkernel.img\n-@COND_i386_multiboot_TRUE@am__append_5625 = kernel.img\n-@COND_i386_ieee1275_TRUE@am__append_5626 = kernel.exec\n-@COND_i386_ieee1275_TRUE@am__append_5627 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_i386_ieee1275_TRUE@am__append_5628 = $(nodist_kernel_exec_SOURCES)\n-@COND_i386_ieee1275_TRUE@am__append_5629 =  \\\n+@COND_i386_multiboot_TRUE@am__append_5618 = kernel.img\n+@COND_i386_ieee1275_TRUE@am__append_5619 = kernel.exec\n+@COND_i386_ieee1275_TRUE@am__append_5620 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_i386_ieee1275_TRUE@am__append_5621 = $(nodist_kernel_exec_SOURCES)\n+@COND_i386_ieee1275_TRUE@am__append_5622 =  \\\n @COND_i386_ieee1275_TRUE@\t$(nodist_kernel_exec_SOURCES) \\\n @COND_i386_ieee1275_TRUE@\tkernel.img\n-@COND_i386_ieee1275_TRUE@am__append_5630 = kernel.img\n-@COND_x86_64_efi_TRUE@am__append_5631 = kernel.exec\n-@COND_x86_64_efi_TRUE@am__append_5632 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_x86_64_efi_TRUE@am__append_5633 = $(nodist_kernel_exec_SOURCES)\n-@COND_x86_64_efi_TRUE@am__append_5634 = $(nodist_kernel_exec_SOURCES) \\\n+@COND_i386_ieee1275_TRUE@am__append_5623 = kernel.img\n+@COND_x86_64_efi_TRUE@am__append_5624 = kernel.exec\n+@COND_x86_64_efi_TRUE@am__append_5625 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_x86_64_efi_TRUE@am__append_5626 = $(nodist_kernel_exec_SOURCES)\n+@COND_x86_64_efi_TRUE@am__append_5627 = $(nodist_kernel_exec_SOURCES) \\\n @COND_x86_64_efi_TRUE@\tkernel.img\n-@COND_x86_64_efi_TRUE@am__append_5635 = kernel.img\n-@COND_i386_xen_TRUE@am__append_5636 = kernel.exec\n-@COND_i386_xen_TRUE@am__append_5637 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_i386_xen_TRUE@am__append_5638 = $(nodist_kernel_exec_SOURCES)\n-@COND_i386_xen_TRUE@am__append_5639 = $(nodist_kernel_exec_SOURCES) \\\n+@COND_x86_64_efi_TRUE@am__append_5628 = kernel.img\n+@COND_i386_xen_TRUE@am__append_5629 = kernel.exec\n+@COND_i386_xen_TRUE@am__append_5630 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_i386_xen_TRUE@am__append_5631 = $(nodist_kernel_exec_SOURCES)\n+@COND_i386_xen_TRUE@am__append_5632 = $(nodist_kernel_exec_SOURCES) \\\n @COND_i386_xen_TRUE@\tkernel.img\n-@COND_i386_xen_TRUE@am__append_5640 = kernel.img\n-@COND_x86_64_xen_TRUE@am__append_5641 = kernel.exec\n-@COND_x86_64_xen_TRUE@am__append_5642 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_x86_64_xen_TRUE@am__append_5643 = $(nodist_kernel_exec_SOURCES)\n-@COND_x86_64_xen_TRUE@am__append_5644 = $(nodist_kernel_exec_SOURCES) \\\n+@COND_i386_xen_TRUE@am__append_5633 = kernel.img\n+@COND_x86_64_xen_TRUE@am__append_5634 = kernel.exec\n+@COND_x86_64_xen_TRUE@am__append_5635 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_x86_64_xen_TRUE@am__append_5636 = $(nodist_kernel_exec_SOURCES)\n+@COND_x86_64_xen_TRUE@am__append_5637 = $(nodist_kernel_exec_SOURCES) \\\n @COND_x86_64_xen_TRUE@\tkernel.img\n-@COND_x86_64_xen_TRUE@am__append_5645 = kernel.img\n-@COND_i386_xen_pvh_TRUE@am__append_5646 = kernel.exec\n-@COND_i386_xen_pvh_TRUE@am__append_5647 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_i386_xen_pvh_TRUE@am__append_5648 = $(nodist_kernel_exec_SOURCES)\n-@COND_i386_xen_pvh_TRUE@am__append_5649 =  \\\n+@COND_x86_64_xen_TRUE@am__append_5638 = kernel.img\n+@COND_i386_xen_pvh_TRUE@am__append_5639 = kernel.exec\n+@COND_i386_xen_pvh_TRUE@am__append_5640 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_i386_xen_pvh_TRUE@am__append_5641 = $(nodist_kernel_exec_SOURCES)\n+@COND_i386_xen_pvh_TRUE@am__append_5642 =  \\\n @COND_i386_xen_pvh_TRUE@\t$(nodist_kernel_exec_SOURCES) \\\n @COND_i386_xen_pvh_TRUE@\tkernel.img\n-@COND_i386_xen_pvh_TRUE@am__append_5650 = kernel.img\n-@COND_mips_loongson_TRUE@am__append_5651 = kernel.exec\n-@COND_mips_loongson_TRUE@am__append_5652 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_mips_loongson_TRUE@am__append_5653 = $(nodist_kernel_exec_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_5654 =  \\\n+@COND_i386_xen_pvh_TRUE@am__append_5643 = kernel.img\n+@COND_mips_loongson_TRUE@am__append_5644 = kernel.exec\n+@COND_mips_loongson_TRUE@am__append_5645 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_mips_loongson_TRUE@am__append_5646 = $(nodist_kernel_exec_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_5647 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_kernel_exec_SOURCES) \\\n @COND_mips_loongson_TRUE@\tkernel.img\n-@COND_mips_loongson_TRUE@am__append_5655 = kernel.img\n-@COND_sparc64_ieee1275_TRUE@am__append_5656 = kernel.exec\n-@COND_sparc64_ieee1275_TRUE@am__append_5657 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_sparc64_ieee1275_TRUE@am__append_5658 = $(nodist_kernel_exec_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_5659 =  \\\n+@COND_mips_loongson_TRUE@am__append_5648 = kernel.img\n+@COND_sparc64_ieee1275_TRUE@am__append_5649 = kernel.exec\n+@COND_sparc64_ieee1275_TRUE@am__append_5650 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_sparc64_ieee1275_TRUE@am__append_5651 = $(nodist_kernel_exec_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_5652 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_kernel_exec_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tkernel.img\n-@COND_sparc64_ieee1275_TRUE@am__append_5660 = kernel.img\n-@COND_powerpc_ieee1275_TRUE@am__append_5661 = kernel.exec\n-@COND_powerpc_ieee1275_TRUE@am__append_5662 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_powerpc_ieee1275_TRUE@am__append_5663 = $(nodist_kernel_exec_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_5664 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__append_5653 = kernel.img\n+@COND_powerpc_ieee1275_TRUE@am__append_5654 = kernel.exec\n+@COND_powerpc_ieee1275_TRUE@am__append_5655 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_powerpc_ieee1275_TRUE@am__append_5656 = $(nodist_kernel_exec_SOURCES)\n+@COND_powerpc_ieee1275_TRUE@am__append_5657 =  \\\n @COND_powerpc_ieee1275_TRUE@\t$(nodist_kernel_exec_SOURCES) \\\n @COND_powerpc_ieee1275_TRUE@\tkernel.img\n-@COND_powerpc_ieee1275_TRUE@am__append_5665 = kernel.img\n-@COND_mips_arc_TRUE@am__append_5666 = kernel.exec\n-@COND_mips_arc_TRUE@am__append_5667 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_mips_arc_TRUE@am__append_5668 = $(nodist_kernel_exec_SOURCES)\n-@COND_mips_arc_TRUE@am__append_5669 = $(nodist_kernel_exec_SOURCES) \\\n+@COND_powerpc_ieee1275_TRUE@am__append_5658 = kernel.img\n+@COND_mips_arc_TRUE@am__append_5659 = kernel.exec\n+@COND_mips_arc_TRUE@am__append_5660 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_mips_arc_TRUE@am__append_5661 = $(nodist_kernel_exec_SOURCES)\n+@COND_mips_arc_TRUE@am__append_5662 = $(nodist_kernel_exec_SOURCES) \\\n @COND_mips_arc_TRUE@\tkernel.img\n-@COND_mips_arc_TRUE@am__append_5670 = kernel.img\n-@COND_ia64_efi_TRUE@am__append_5671 = kernel.exec\n-@COND_ia64_efi_TRUE@am__append_5672 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_ia64_efi_TRUE@am__append_5673 = $(nodist_kernel_exec_SOURCES)\n-@COND_ia64_efi_TRUE@am__append_5674 = $(nodist_kernel_exec_SOURCES) \\\n+@COND_mips_arc_TRUE@am__append_5663 = kernel.img\n+@COND_ia64_efi_TRUE@am__append_5664 = kernel.exec\n+@COND_ia64_efi_TRUE@am__append_5665 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_ia64_efi_TRUE@am__append_5666 = $(nodist_kernel_exec_SOURCES)\n+@COND_ia64_efi_TRUE@am__append_5667 = $(nodist_kernel_exec_SOURCES) \\\n @COND_ia64_efi_TRUE@\tkernel.img\n-@COND_ia64_efi_TRUE@am__append_5675 = kernel.img\n-@COND_mips_qemu_mips_TRUE@am__append_5676 = kernel.exec\n-@COND_mips_qemu_mips_TRUE@am__append_5677 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_mips_qemu_mips_TRUE@am__append_5678 = $(nodist_kernel_exec_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_5679 =  \\\n+@COND_ia64_efi_TRUE@am__append_5668 = kernel.img\n+@COND_mips_qemu_mips_TRUE@am__append_5669 = kernel.exec\n+@COND_mips_qemu_mips_TRUE@am__append_5670 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_mips_qemu_mips_TRUE@am__append_5671 = $(nodist_kernel_exec_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_5672 =  \\\n @COND_mips_qemu_mips_TRUE@\t$(nodist_kernel_exec_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tkernel.img\n-@COND_mips_qemu_mips_TRUE@am__append_5680 = kernel.img\n-@COND_arm_uboot_TRUE@am__append_5681 = kernel.exec\n-@COND_arm_uboot_TRUE@am__append_5682 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_arm_uboot_TRUE@am__append_5683 = $(nodist_kernel_exec_SOURCES)\n-@COND_arm_uboot_TRUE@am__append_5684 = $(nodist_kernel_exec_SOURCES) \\\n+@COND_mips_qemu_mips_TRUE@am__append_5673 = kernel.img\n+@COND_arm_uboot_TRUE@am__append_5674 = kernel.exec\n+@COND_arm_uboot_TRUE@am__append_5675 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_arm_uboot_TRUE@am__append_5676 = $(nodist_kernel_exec_SOURCES)\n+@COND_arm_uboot_TRUE@am__append_5677 = $(nodist_kernel_exec_SOURCES) \\\n @COND_arm_uboot_TRUE@\tkernel.img\n-@COND_arm_uboot_TRUE@am__append_5685 = kernel.img\n-@COND_arm_efi_TRUE@am__append_5686 = kernel.exec\n-@COND_arm_efi_TRUE@am__append_5687 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_arm_efi_TRUE@am__append_5688 = $(nodist_kernel_exec_SOURCES)\n-@COND_arm_efi_TRUE@am__append_5689 = $(nodist_kernel_exec_SOURCES) \\\n+@COND_arm_uboot_TRUE@am__append_5678 = kernel.img\n+@COND_arm_efi_TRUE@am__append_5679 = kernel.exec\n+@COND_arm_efi_TRUE@am__append_5680 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_arm_efi_TRUE@am__append_5681 = $(nodist_kernel_exec_SOURCES)\n+@COND_arm_efi_TRUE@am__append_5682 = $(nodist_kernel_exec_SOURCES) \\\n @COND_arm_efi_TRUE@\tkernel.img\n-@COND_arm_efi_TRUE@am__append_5690 = kernel.img\n-@COND_arm64_efi_TRUE@am__append_5691 = kernel.exec\n-@COND_arm64_efi_TRUE@am__append_5692 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_arm64_efi_TRUE@am__append_5693 = $(nodist_kernel_exec_SOURCES)\n-@COND_arm64_efi_TRUE@am__append_5694 = $(nodist_kernel_exec_SOURCES) \\\n+@COND_arm_efi_TRUE@am__append_5683 = kernel.img\n+@COND_arm64_efi_TRUE@am__append_5684 = kernel.exec\n+@COND_arm64_efi_TRUE@am__append_5685 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_arm64_efi_TRUE@am__append_5686 = $(nodist_kernel_exec_SOURCES)\n+@COND_arm64_efi_TRUE@am__append_5687 = $(nodist_kernel_exec_SOURCES) \\\n @COND_arm64_efi_TRUE@\tkernel.img\n-@COND_arm64_efi_TRUE@am__append_5695 = kernel.img\n-@COND_arm_coreboot_TRUE@am__append_5696 = kernel.exec\n-@COND_arm_coreboot_TRUE@am__append_5697 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_arm_coreboot_TRUE@am__append_5698 = $(nodist_kernel_exec_SOURCES)\n-@COND_arm_coreboot_TRUE@am__append_5699 =  \\\n+@COND_arm64_efi_TRUE@am__append_5688 = kernel.img\n+@COND_arm_coreboot_TRUE@am__append_5689 = kernel.exec\n+@COND_arm_coreboot_TRUE@am__append_5690 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_arm_coreboot_TRUE@am__append_5691 = $(nodist_kernel_exec_SOURCES)\n+@COND_arm_coreboot_TRUE@am__append_5692 =  \\\n @COND_arm_coreboot_TRUE@\t$(nodist_kernel_exec_SOURCES) \\\n @COND_arm_coreboot_TRUE@\tkernel.img\n-@COND_arm_coreboot_TRUE@am__append_5700 = kernel.img\n-@COND_riscv32_efi_TRUE@am__append_5701 = kernel.exec\n-@COND_riscv32_efi_TRUE@am__append_5702 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_riscv32_efi_TRUE@am__append_5703 = $(nodist_kernel_exec_SOURCES)\n-@COND_riscv32_efi_TRUE@am__append_5704 =  \\\n+@COND_arm_coreboot_TRUE@am__append_5693 = kernel.img\n+@COND_riscv32_efi_TRUE@am__append_5694 = kernel.exec\n+@COND_riscv32_efi_TRUE@am__append_5695 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_riscv32_efi_TRUE@am__append_5696 = $(nodist_kernel_exec_SOURCES)\n+@COND_riscv32_efi_TRUE@am__append_5697 =  \\\n @COND_riscv32_efi_TRUE@\t$(nodist_kernel_exec_SOURCES) \\\n @COND_riscv32_efi_TRUE@\tkernel.img\n-@COND_riscv32_efi_TRUE@am__append_5705 = kernel.img\n-@COND_riscv64_efi_TRUE@am__append_5706 = kernel.exec\n-@COND_riscv64_efi_TRUE@am__append_5707 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n-@COND_riscv64_efi_TRUE@am__append_5708 = $(nodist_kernel_exec_SOURCES)\n-@COND_riscv64_efi_TRUE@am__append_5709 =  \\\n+@COND_riscv32_efi_TRUE@am__append_5698 = kernel.img\n+@COND_riscv64_efi_TRUE@am__append_5699 = kernel.exec\n+@COND_riscv64_efi_TRUE@am__append_5700 = video/sm712_init.c video/sis315_init.c kern/arm/cache.S osdep/unix/exec.c osdep/unix/emuconsole.c osdep/windows/emuconsole.c osdep/unix/dl.c osdep/windows/dl.c osdep/linux/emunet.c osdep/basic/emunet.c osdep/unix/cputime.c osdep/windows/cputime.c kern/i386/int.S kern/i386/realmode.S boot/i386/pc/lzma_decode.S kern/mips/cache_flush.S \n+@COND_riscv64_efi_TRUE@am__append_5701 = $(nodist_kernel_exec_SOURCES)\n+@COND_riscv64_efi_TRUE@am__append_5702 =  \\\n @COND_riscv64_efi_TRUE@\t$(nodist_kernel_exec_SOURCES) \\\n @COND_riscv64_efi_TRUE@\tkernel.img\n-@COND_riscv64_efi_TRUE@am__append_5710 = kernel.img\n-@COND_i386_pc_TRUE@am__append_5711 = boot.image\n-@COND_i386_pc_TRUE@am__append_5712 = \n-@COND_i386_pc_TRUE@am__append_5713 = $(nodist_boot_image_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5714 = $(nodist_boot_image_SOURCES) \\\n+@COND_riscv64_efi_TRUE@am__append_5703 = kernel.img\n+@COND_i386_pc_TRUE@am__append_5704 = boot.image\n+@COND_i386_pc_TRUE@am__append_5705 = \n+@COND_i386_pc_TRUE@am__append_5706 = $(nodist_boot_image_SOURCES)\n+@COND_i386_pc_TRUE@am__append_5707 = $(nodist_boot_image_SOURCES) \\\n @COND_i386_pc_TRUE@\tboot.img\n-@COND_i386_pc_TRUE@am__append_5715 = boot.img\n-@COND_i386_qemu_TRUE@am__append_5716 = boot.image\n-@COND_i386_qemu_TRUE@am__append_5717 = \n-@COND_i386_qemu_TRUE@am__append_5718 = $(nodist_boot_image_SOURCES)\n-@COND_i386_qemu_TRUE@am__append_5719 = $(nodist_boot_image_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5708 = boot.img\n+@COND_i386_qemu_TRUE@am__append_5709 = boot.image\n+@COND_i386_qemu_TRUE@am__append_5710 = \n+@COND_i386_qemu_TRUE@am__append_5711 = $(nodist_boot_image_SOURCES)\n+@COND_i386_qemu_TRUE@am__append_5712 = $(nodist_boot_image_SOURCES) \\\n @COND_i386_qemu_TRUE@\tboot.img\n-@COND_i386_qemu_TRUE@am__append_5720 = boot.img\n-@COND_sparc64_ieee1275_TRUE@am__append_5721 = boot.image\n-@COND_sparc64_ieee1275_TRUE@am__append_5722 = \n-@COND_sparc64_ieee1275_TRUE@am__append_5723 = $(nodist_boot_image_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_5724 =  \\\n+@COND_i386_qemu_TRUE@am__append_5713 = boot.img\n+@COND_sparc64_ieee1275_TRUE@am__append_5714 = boot.image\n+@COND_sparc64_ieee1275_TRUE@am__append_5715 = \n+@COND_sparc64_ieee1275_TRUE@am__append_5716 = $(nodist_boot_image_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_5717 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_boot_image_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tboot.img\n-@COND_sparc64_ieee1275_TRUE@am__append_5725 = boot.img\n-@COND_i386_pc_TRUE@am__append_5726 = boot_hybrid.image cdboot.image\n-@COND_i386_pc_TRUE@am__append_5727 =\n-@COND_i386_pc_TRUE@am__append_5728 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__append_5718 = boot.img\n+@COND_i386_pc_TRUE@am__append_5719 = boot_hybrid.image cdboot.image\n+@COND_i386_pc_TRUE@am__append_5720 =\n+@COND_i386_pc_TRUE@am__append_5721 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_boot_hybrid_image_SOURCES) \\\n @COND_i386_pc_TRUE@\t$(nodist_cdboot_image_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5729 =  \\\n+@COND_i386_pc_TRUE@am__append_5722 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_boot_hybrid_image_SOURCES) \\\n @COND_i386_pc_TRUE@\tboot_hybrid.img \\\n @COND_i386_pc_TRUE@\t$(nodist_cdboot_image_SOURCES) cdboot.img\n-@COND_i386_pc_TRUE@am__append_5730 = boot_hybrid.img cdboot.img\n-@COND_sparc64_ieee1275_TRUE@am__append_5731 = cdboot.image\n-@COND_sparc64_ieee1275_TRUE@am__append_5732 = \n-@COND_sparc64_ieee1275_TRUE@am__append_5733 = $(nodist_cdboot_image_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_5734 =  \\\n+@COND_i386_pc_TRUE@am__append_5723 = boot_hybrid.img cdboot.img\n+@COND_sparc64_ieee1275_TRUE@am__append_5724 = cdboot.image\n+@COND_sparc64_ieee1275_TRUE@am__append_5725 = \n+@COND_sparc64_ieee1275_TRUE@am__append_5726 = $(nodist_cdboot_image_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_5727 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_cdboot_image_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tcdboot.img\n-@COND_sparc64_ieee1275_TRUE@am__append_5735 = cdboot.img\n-@COND_i386_pc_TRUE@am__append_5736 = pxeboot.image diskboot.image\n-@COND_i386_pc_TRUE@am__append_5737 =\n-@COND_i386_pc_TRUE@am__append_5738 = $(nodist_pxeboot_image_SOURCES) \\\n+@COND_sparc64_ieee1275_TRUE@am__append_5728 = cdboot.img\n+@COND_i386_pc_TRUE@am__append_5729 = pxeboot.image diskboot.image\n+@COND_i386_pc_TRUE@am__append_5730 =\n+@COND_i386_pc_TRUE@am__append_5731 = $(nodist_pxeboot_image_SOURCES) \\\n @COND_i386_pc_TRUE@\t$(nodist_diskboot_image_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5739 = $(nodist_pxeboot_image_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5732 = $(nodist_pxeboot_image_SOURCES) \\\n @COND_i386_pc_TRUE@\tpxeboot.img \\\n @COND_i386_pc_TRUE@\t$(nodist_diskboot_image_SOURCES) \\\n @COND_i386_pc_TRUE@\tdiskboot.img\n-@COND_i386_pc_TRUE@am__append_5740 = pxeboot.img diskboot.img\n-@COND_sparc64_ieee1275_TRUE@am__append_5741 = diskboot.image\n-@COND_sparc64_ieee1275_TRUE@am__append_5742 = \n-@COND_sparc64_ieee1275_TRUE@am__append_5743 = $(nodist_diskboot_image_SOURCES)\n-@COND_sparc64_ieee1275_TRUE@am__append_5744 =  \\\n+@COND_i386_pc_TRUE@am__append_5733 = pxeboot.img diskboot.img\n+@COND_sparc64_ieee1275_TRUE@am__append_5734 = diskboot.image\n+@COND_sparc64_ieee1275_TRUE@am__append_5735 = \n+@COND_sparc64_ieee1275_TRUE@am__append_5736 = $(nodist_diskboot_image_SOURCES)\n+@COND_sparc64_ieee1275_TRUE@am__append_5737 =  \\\n @COND_sparc64_ieee1275_TRUE@\t$(nodist_diskboot_image_SOURCES) \\\n @COND_sparc64_ieee1275_TRUE@\tdiskboot.img\n-@COND_sparc64_ieee1275_TRUE@am__append_5745 = diskboot.img\n-@COND_i386_pc_TRUE@am__append_5746 = lnxboot.image\n-@COND_i386_pc_TRUE@am__append_5747 = \n-@COND_i386_pc_TRUE@am__append_5748 = $(nodist_lnxboot_image_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5749 = $(nodist_lnxboot_image_SOURCES) \\\n+@COND_sparc64_ieee1275_TRUE@am__append_5738 = diskboot.img\n+@COND_i386_pc_TRUE@am__append_5739 = lnxboot.image\n+@COND_i386_pc_TRUE@am__append_5740 = \n+@COND_i386_pc_TRUE@am__append_5741 = $(nodist_lnxboot_image_SOURCES)\n+@COND_i386_pc_TRUE@am__append_5742 = $(nodist_lnxboot_image_SOURCES) \\\n @COND_i386_pc_TRUE@\tlnxboot.img\n-@COND_i386_pc_TRUE@am__append_5750 = lnxboot.img\n-@COND_mips_loongson_TRUE@am__append_5751 = xz_decompress.image\n-@COND_mips_loongson_TRUE@am__append_5752 = \n-@COND_mips_loongson_TRUE@am__append_5753 = $(nodist_xz_decompress_image_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_5754 = $(nodist_xz_decompress_image_SOURCES) \\\n+@COND_i386_pc_TRUE@am__append_5743 = lnxboot.img\n+@COND_mips_loongson_TRUE@am__append_5744 = xz_decompress.image\n+@COND_mips_loongson_TRUE@am__append_5745 = \n+@COND_mips_loongson_TRUE@am__append_5746 = $(nodist_xz_decompress_image_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_5747 = $(nodist_xz_decompress_image_SOURCES) \\\n @COND_mips_loongson_TRUE@\txz_decompress.img\n-@COND_mips_loongson_TRUE@am__append_5755 = xz_decompress.img\n-@COND_mips_arc_TRUE@am__append_5756 = xz_decompress.image\n-@COND_mips_arc_TRUE@am__append_5757 = \n-@COND_mips_arc_TRUE@am__append_5758 = $(nodist_xz_decompress_image_SOURCES)\n-@COND_mips_arc_TRUE@am__append_5759 =  \\\n+@COND_mips_loongson_TRUE@am__append_5748 = xz_decompress.img\n+@COND_mips_arc_TRUE@am__append_5749 = xz_decompress.image\n+@COND_mips_arc_TRUE@am__append_5750 = \n+@COND_mips_arc_TRUE@am__append_5751 = $(nodist_xz_decompress_image_SOURCES)\n+@COND_mips_arc_TRUE@am__append_5752 =  \\\n @COND_mips_arc_TRUE@\t$(nodist_xz_decompress_image_SOURCES) \\\n @COND_mips_arc_TRUE@\txz_decompress.img\n-@COND_mips_arc_TRUE@am__append_5760 = xz_decompress.img\n-@COND_mips_qemu_mips_TRUE@am__append_5761 = xz_decompress.image\n-@COND_mips_qemu_mips_TRUE@am__append_5762 = \n-@COND_mips_qemu_mips_TRUE@am__append_5763 = $(nodist_xz_decompress_image_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_5764 = $(nodist_xz_decompress_image_SOURCES) \\\n+@COND_mips_arc_TRUE@am__append_5753 = xz_decompress.img\n+@COND_mips_qemu_mips_TRUE@am__append_5754 = xz_decompress.image\n+@COND_mips_qemu_mips_TRUE@am__append_5755 = \n+@COND_mips_qemu_mips_TRUE@am__append_5756 = $(nodist_xz_decompress_image_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_5757 = $(nodist_xz_decompress_image_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\txz_decompress.img\n-@COND_mips_qemu_mips_TRUE@am__append_5765 = xz_decompress.img\n-@COND_mips_loongson_TRUE@am__append_5766 = none_decompress.image\n-@COND_mips_loongson_TRUE@am__append_5767 = \n-@COND_mips_loongson_TRUE@am__append_5768 = $(nodist_none_decompress_image_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_5769 = $(nodist_none_decompress_image_SOURCES) \\\n+@COND_mips_qemu_mips_TRUE@am__append_5758 = xz_decompress.img\n+@COND_mips_loongson_TRUE@am__append_5759 = none_decompress.image\n+@COND_mips_loongson_TRUE@am__append_5760 = \n+@COND_mips_loongson_TRUE@am__append_5761 = $(nodist_none_decompress_image_SOURCES)\n+@COND_mips_loongson_TRUE@am__append_5762 = $(nodist_none_decompress_image_SOURCES) \\\n @COND_mips_loongson_TRUE@\tnone_decompress.img\n-@COND_mips_loongson_TRUE@am__append_5770 = none_decompress.img\n-@COND_mips_arc_TRUE@am__append_5771 = none_decompress.image\n-@COND_mips_arc_TRUE@am__append_5772 = \n-@COND_mips_arc_TRUE@am__append_5773 = $(nodist_none_decompress_image_SOURCES)\n-@COND_mips_arc_TRUE@am__append_5774 =  \\\n+@COND_mips_loongson_TRUE@am__append_5763 = none_decompress.img\n+@COND_mips_arc_TRUE@am__append_5764 = none_decompress.image\n+@COND_mips_arc_TRUE@am__append_5765 = \n+@COND_mips_arc_TRUE@am__append_5766 = $(nodist_none_decompress_image_SOURCES)\n+@COND_mips_arc_TRUE@am__append_5767 =  \\\n @COND_mips_arc_TRUE@\t$(nodist_none_decompress_image_SOURCES) \\\n @COND_mips_arc_TRUE@\tnone_decompress.img\n-@COND_mips_arc_TRUE@am__append_5775 = none_decompress.img\n-@COND_mips_qemu_mips_TRUE@am__append_5776 = none_decompress.image\n-@COND_mips_qemu_mips_TRUE@am__append_5777 = \n-@COND_mips_qemu_mips_TRUE@am__append_5778 = $(nodist_none_decompress_image_SOURCES)\n-@COND_mips_qemu_mips_TRUE@am__append_5779 = $(nodist_none_decompress_image_SOURCES) \\\n+@COND_mips_arc_TRUE@am__append_5768 = none_decompress.img\n+@COND_mips_qemu_mips_TRUE@am__append_5769 = none_decompress.image\n+@COND_mips_qemu_mips_TRUE@am__append_5770 = \n+@COND_mips_qemu_mips_TRUE@am__append_5771 = $(nodist_none_decompress_image_SOURCES)\n+@COND_mips_qemu_mips_TRUE@am__append_5772 = $(nodist_none_decompress_image_SOURCES) \\\n @COND_mips_qemu_mips_TRUE@\tnone_decompress.img\n-@COND_mips_qemu_mips_TRUE@am__append_5780 = none_decompress.img\n-@COND_i386_pc_TRUE@am__append_5781 = lzma_decompress.image\n-@COND_i386_pc_TRUE@am__append_5782 = \n-@COND_i386_pc_TRUE@am__append_5783 = $(nodist_lzma_decompress_image_SOURCES)\n-@COND_i386_pc_TRUE@am__append_5784 =  \\\n+@COND_mips_qemu_mips_TRUE@am__append_5773 = none_decompress.img\n+@COND_i386_pc_TRUE@am__append_5774 = lzma_decompress.image\n+@COND_i386_pc_TRUE@am__append_5775 = \n+@COND_i386_pc_TRUE@am__append_5776 = $(nodist_lzma_decompress_image_SOURCES)\n+@COND_i386_pc_TRUE@am__append_5777 =  \\\n @COND_i386_pc_TRUE@\t$(nodist_lzma_decompress_image_SOURCES) \\\n @COND_i386_pc_TRUE@\tlzma_decompress.img\n-@COND_i386_pc_TRUE@am__append_5785 = lzma_decompress.img\n-@COND_mips_loongson_TRUE@am__append_5786 = fwstart.image \\\n+@COND_i386_pc_TRUE@am__append_5778 = lzma_decompress.img\n+@COND_mips_loongson_TRUE@am__append_5779 = fwstart.image \\\n @COND_mips_loongson_TRUE@\tfwstart_fuloong2f.image\n-@COND_mips_loongson_TRUE@am__append_5787 =\n-@COND_mips_loongson_TRUE@am__append_5788 =  \\\n+@COND_mips_loongson_TRUE@am__append_5780 =\n+@COND_mips_loongson_TRUE@am__append_5781 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_fwstart_image_SOURCES) \\\n @COND_mips_loongson_TRUE@\t$(nodist_fwstart_fuloong2f_image_SOURCES)\n-@COND_mips_loongson_TRUE@am__append_5789 =  \\\n+@COND_mips_loongson_TRUE@am__append_5782 =  \\\n @COND_mips_loongson_TRUE@\t$(nodist_fwstart_image_SOURCES) \\\n @COND_mips_loongson_TRUE@\tfwstart.img \\\n @COND_mips_loongson_TRUE@\t$(nodist_fwstart_fuloong2f_image_SOURCES) \\\n @COND_mips_loongson_TRUE@\tfwstart_fuloong2f.img\n-@COND_mips_loongson_TRUE@am__append_5790 = fwstart.img \\\n+@COND_mips_loongson_TRUE@am__append_5783 = fwstart.img \\\n @COND_mips_loongson_TRUE@\tfwstart_fuloong2f.img\n-@COND_emu_TRUE@am__append_5791 = grub-emu grub-emu-lite\n-@COND_MAN_PAGES_TRUE@@COND_emu_TRUE@am__append_5792 = grub-emu.1\n-@COND_MAN_PAGES_TRUE@@COND_emu_TRUE@am__append_5793 = grub-emu.1\n-@COND_emu_TRUE@am__append_5794 =\n-@COND_emu_TRUE@am__append_5795 = $(nodist_grub_emu_SOURCES) \\\n+@COND_emu_TRUE@am__append_5784 = grub-emu grub-emu-lite\n+@COND_MAN_PAGES_TRUE@@COND_emu_TRUE@am__append_5785 = grub-emu.1\n+@COND_MAN_PAGES_TRUE@@COND_emu_TRUE@am__append_5786 = grub-emu.1\n+@COND_emu_TRUE@am__append_5787 =\n+@COND_emu_TRUE@am__append_5788 = $(nodist_grub_emu_SOURCES) \\\n @COND_emu_TRUE@\t$(nodist_grub_emu_lite_SOURCES)\n-@COND_emu_TRUE@am__append_5796 = $(nodist_grub_emu_SOURCES) \\\n+@COND_emu_TRUE@am__append_5789 = $(nodist_grub_emu_SOURCES) \\\n @COND_emu_TRUE@\t$(nodist_grub_emu_lite_SOURCES)\n-@COND_powerpc_ieee1275_TRUE@am__append_5797 = grub.chrp bootinfo.txt\n-@COND_powerpc_ieee1275_TRUE@am__append_5798 = grub.chrp bootinfo.txt\n-@COND_powerpc_ieee1275_TRUE@am__append_5799 =\n-@COND_powerpc_ieee1275_TRUE@am__append_5800 =  \\\n+@COND_powerpc_ieee1275_TRUE@am__append_5790 = grub.chrp bootinfo.txt\n+@COND_powerpc_ieee1275_TRUE@am__append_5791 = grub.chrp bootinfo.txt\n+@COND_powerpc_ieee1275_TRUE@am__append_5792 =\n+@COND_powerpc_ieee1275_TRUE@am__append_5793 =  \\\n @COND_powerpc_ieee1275_TRUE@\tboot/powerpc/grub.chrp.in \\\n @COND_powerpc_ieee1275_TRUE@\tboot/powerpc/bootinfo.txt.in\n-@COND_emu_TRUE@am__append_5801 = $(top_srcdir)/include/grub/compiler-rt-emu.h\n-@COND_emu_FALSE@am__append_5802 = $(top_srcdir)/include/grub/compiler-rt.h\n-@COND_i386_pc_TRUE@am__append_5803 = $(top_builddir)/include/grub/machine/kernel.h \\\n+@COND_emu_TRUE@am__append_5794 = $(top_srcdir)/include/grub/compiler-rt-emu.h\n+@COND_emu_FALSE@am__append_5795 = $(top_srcdir)/include/grub/compiler-rt.h\n+@COND_i386_pc_TRUE@am__append_5796 = $(top_builddir)/include/grub/machine/kernel.h \\\n @COND_i386_pc_TRUE@\t$(top_builddir)/include/grub/machine/pxe.h \\\n @COND_i386_pc_TRUE@\t$(top_builddir)/include/grub/machine/int.h \\\n @COND_i386_pc_TRUE@\t$(top_srcdir)/include/grub/i386/tsc.h\n-@COND_i386_xen_pvh_TRUE@am__append_5804 = $(top_builddir)/include/grub/machine/kernel.h \\\n+@COND_i386_xen_pvh_TRUE@am__append_5797 = $(top_builddir)/include/grub/machine/kernel.h \\\n @COND_i386_xen_pvh_TRUE@\t$(top_builddir)/include/grub/machine/int.h \\\n @COND_i386_xen_pvh_TRUE@\t$(top_srcdir)/include/grub/i386/tsc.h \\\n @COND_i386_xen_pvh_TRUE@\t$(top_srcdir)/include/grub/terminfo.h \\\n@@ -7834,14 +7824,14 @@ TESTS =\n @COND_i386_xen_pvh_TRUE@\t$(top_srcdir)/include/grub/lib/arg.h \\\n @COND_i386_xen_pvh_TRUE@\t$(top_srcdir)/include/grub/xen.h \\\n @COND_i386_xen_pvh_TRUE@\t$(top_srcdir)/include/grub/i386/xen/hypercall.h\n-@COND_i386_efi_TRUE@am__append_5805 = $(top_builddir)/include/grub/machine/kernel.h \\\n+@COND_i386_efi_TRUE@am__append_5798 = $(top_builddir)/include/grub/machine/kernel.h \\\n @COND_i386_efi_TRUE@\t$(top_srcdir)/include/grub/efi/efi.h \\\n @COND_i386_efi_TRUE@\t$(top_srcdir)/include/grub/efi/disk.h \\\n @COND_i386_efi_TRUE@\t$(top_srcdir)/include/grub/i386/tsc.h \\\n @COND_i386_efi_TRUE@\t$(top_srcdir)/include/grub/acpi.h \\\n @COND_i386_efi_TRUE@\t$(top_srcdir)/include/grub/pci.h \\\n @COND_i386_efi_TRUE@\t$(top_srcdir)/include/grub/i386/pmtimer.h\n-@COND_i386_coreboot_TRUE@am__append_5806 = $(top_builddir)/include/grub/machine/kernel.h \\\n+@COND_i386_coreboot_TRUE@am__append_5799 = $(top_builddir)/include/grub/machine/kernel.h \\\n @COND_i386_coreboot_TRUE@\t$(top_srcdir)/include/grub/i386/tsc.h \\\n @COND_i386_coreboot_TRUE@\t$(top_srcdir)/include/grub/coreboot/lbio.h \\\n @COND_i386_coreboot_TRUE@\t$(top_srcdir)/include/grub/video.h \\\n@@ -7850,56 +7840,56 @@ TESTS =\n @COND_i386_coreboot_TRUE@\t$(top_srcdir)/include/grub/font.h \\\n @COND_i386_coreboot_TRUE@\t$(top_srcdir)/include/grub/bufio.h \\\n @COND_i386_coreboot_TRUE@\t$(top_srcdir)/include/grub/acpi.h\n-@COND_i386_multiboot_TRUE@am__append_5807 = $(top_builddir)/include/grub/machine/kernel.h \\\n+@COND_i386_multiboot_TRUE@am__append_5800 = $(top_builddir)/include/grub/machine/kernel.h \\\n @COND_i386_multiboot_TRUE@\t$(top_srcdir)/include/grub/i386/tsc.h \\\n @COND_i386_multiboot_TRUE@\t$(top_srcdir)/include/grub/acpi.h\n-@COND_i386_qemu_TRUE@am__append_5808 =  \\\n+@COND_i386_qemu_TRUE@am__append_5801 =  \\\n @COND_i386_qemu_TRUE@\t$(top_srcdir)/include/grub/pci.h \\\n @COND_i386_qemu_TRUE@\t$(top_srcdir)/include/grub/i386/tsc.h\n-@COND_i386_ieee1275_TRUE@am__append_5809 = $(top_builddir)/include/grub/machine/kernel.h \\\n+@COND_i386_ieee1275_TRUE@am__append_5802 = $(top_builddir)/include/grub/machine/kernel.h \\\n @COND_i386_ieee1275_TRUE@\t$(top_srcdir)/include/grub/ieee1275/ieee1275.h \\\n @COND_i386_ieee1275_TRUE@\t$(top_srcdir)/include/grub/terminfo.h \\\n @COND_i386_ieee1275_TRUE@\t$(top_srcdir)/include/grub/extcmd.h \\\n @COND_i386_ieee1275_TRUE@\t$(top_srcdir)/include/grub/lib/arg.h \\\n @COND_i386_ieee1275_TRUE@\t$(top_srcdir)/include/grub/i386/tsc.h\n-@COND_i386_xen_TRUE@am__append_5810 = $(top_builddir)/include/grub/machine/kernel.h \\\n+@COND_i386_xen_TRUE@am__append_5803 = $(top_builddir)/include/grub/machine/kernel.h \\\n @COND_i386_xen_TRUE@\t$(top_srcdir)/include/grub/xen.h \\\n @COND_i386_xen_TRUE@\t$(top_srcdir)/include/grub/i386/xen/hypercall.h \\\n @COND_i386_xen_TRUE@\t$(top_srcdir)/include/grub/terminfo.h \\\n @COND_i386_xen_TRUE@\t$(top_srcdir)/include/grub/extcmd.h \\\n @COND_i386_xen_TRUE@\t$(top_srcdir)/include/grub/lib/arg.h \\\n @COND_i386_xen_TRUE@\t$(top_srcdir)/include/grub/loader.h\n-@COND_x86_64_xen_TRUE@am__append_5811 =  \\\n+@COND_x86_64_xen_TRUE@am__append_5804 =  \\\n @COND_x86_64_xen_TRUE@\t$(top_srcdir)/include/grub/xen.h \\\n @COND_x86_64_xen_TRUE@\t$(top_srcdir)/include/grub/x86_64/xen/hypercall.h \\\n @COND_x86_64_xen_TRUE@\t$(top_srcdir)/include/grub/terminfo.h \\\n @COND_x86_64_xen_TRUE@\t$(top_srcdir)/include/grub/extcmd.h \\\n @COND_x86_64_xen_TRUE@\t$(top_srcdir)/include/grub/lib/arg.h \\\n @COND_x86_64_xen_TRUE@\t$(top_srcdir)/include/grub/loader.h\n-@COND_x86_64_efi_TRUE@am__append_5812 = $(top_builddir)/include/grub/machine/kernel.h \\\n+@COND_x86_64_efi_TRUE@am__append_5805 = $(top_builddir)/include/grub/machine/kernel.h \\\n @COND_x86_64_efi_TRUE@\t$(top_srcdir)/include/grub/efi/efi.h \\\n @COND_x86_64_efi_TRUE@\t$(top_srcdir)/include/grub/efi/disk.h \\\n @COND_x86_64_efi_TRUE@\t$(top_srcdir)/include/grub/i386/tsc.h \\\n @COND_x86_64_efi_TRUE@\t$(top_srcdir)/include/grub/pci.h \\\n @COND_x86_64_efi_TRUE@\t$(top_srcdir)/include/grub/acpi.h \\\n @COND_x86_64_efi_TRUE@\t$(top_srcdir)/include/grub/i386/pmtimer.h\n-@COND_ia64_efi_TRUE@am__append_5813 =  \\\n+@COND_ia64_efi_TRUE@am__append_5806 =  \\\n @COND_ia64_efi_TRUE@\t$(top_srcdir)/include/grub/efi/efi.h \\\n @COND_ia64_efi_TRUE@\t$(top_srcdir)/include/grub/efi/disk.h \\\n @COND_ia64_efi_TRUE@\t$(top_srcdir)/include/grub/acpi.h\n-@COND_mips_TRUE@am__append_5814 = $(top_builddir)/include/grub/cpu/kernel.h\n-@COND_mips_arc_TRUE@am__append_5815 =  \\\n+@COND_mips_TRUE@am__append_5807 = $(top_builddir)/include/grub/cpu/kernel.h\n+@COND_mips_arc_TRUE@am__append_5808 =  \\\n @COND_mips_arc_TRUE@\t$(top_srcdir)/include/grub/extcmd.h \\\n @COND_mips_arc_TRUE@\t$(top_srcdir)/include/grub/arc/arc.h \\\n @COND_mips_arc_TRUE@\t$(top_srcdir)/include/grub/terminfo.h\n-@COND_mips_qemu_mips_TRUE@am__append_5816 = $(top_builddir)/include/grub/keyboard_layouts.h \\\n+@COND_mips_qemu_mips_TRUE@am__append_5809 = $(top_builddir)/include/grub/keyboard_layouts.h \\\n @COND_mips_qemu_mips_TRUE@\t$(top_builddir)/include/grub/machine/kernel.h \\\n @COND_mips_qemu_mips_TRUE@\t$(top_srcdir)/include/grub/serial.h \\\n @COND_mips_qemu_mips_TRUE@\t$(top_srcdir)/include/grub/loader.h \\\n @COND_mips_qemu_mips_TRUE@\t$(top_srcdir)/include/grub/terminfo.h \\\n @COND_mips_qemu_mips_TRUE@\t$(top_srcdir)/include/grub/extcmd.h \\\n @COND_mips_qemu_mips_TRUE@\t$(top_srcdir)/include/grub/lib/arg.h\n-@COND_mips_loongson_TRUE@am__append_5817 = $(top_builddir)/include/grub/keyboard_layouts.h \\\n+@COND_mips_loongson_TRUE@am__append_5810 = $(top_builddir)/include/grub/keyboard_layouts.h \\\n @COND_mips_loongson_TRUE@\t$(top_builddir)/include/grub/machine/kernel.h \\\n @COND_mips_loongson_TRUE@\t$(top_builddir)/include/grub/machine/time.h \\\n @COND_mips_loongson_TRUE@\t$(top_srcdir)/include/grub/video.h \\\n@@ -7915,24 +7905,24 @@ TESTS =\n @COND_mips_loongson_TRUE@\t$(top_srcdir)/include/grub/terminfo.h \\\n @COND_mips_loongson_TRUE@\t$(top_srcdir)/include/grub/extcmd.h \\\n @COND_mips_loongson_TRUE@\t$(top_srcdir)/include/grub/lib/arg.h\n-@COND_mips_qemu_mips_TRUE@am__append_5818 = $(top_builddir)/include/grub/machine/memory.h \\\n+@COND_mips_qemu_mips_TRUE@am__append_5811 = $(top_builddir)/include/grub/machine/memory.h \\\n @COND_mips_qemu_mips_TRUE@\t$(top_builddir)/include/grub/machine/kernel.h\n-@COND_powerpc_ieee1275_TRUE@am__append_5819 = $(top_srcdir)/include/grub/ieee1275/ieee1275.h \\\n+@COND_powerpc_ieee1275_TRUE@am__append_5812 = $(top_srcdir)/include/grub/ieee1275/ieee1275.h \\\n @COND_powerpc_ieee1275_TRUE@\t$(top_srcdir)/include/grub/terminfo.h \\\n @COND_powerpc_ieee1275_TRUE@\t$(top_srcdir)/include/grub/extcmd.h \\\n @COND_powerpc_ieee1275_TRUE@\t$(top_srcdir)/include/grub/lib/arg.h\n-@COND_sparc64_ieee1275_TRUE@am__append_5820 = $(top_srcdir)/include/grub/ieee1275/ieee1275.h \\\n+@COND_sparc64_ieee1275_TRUE@am__append_5813 = $(top_srcdir)/include/grub/ieee1275/ieee1275.h \\\n @COND_sparc64_ieee1275_TRUE@\t$(top_srcdir)/include/grub/sparc64/ieee1275/ieee1275.h \\\n @COND_sparc64_ieee1275_TRUE@\t$(top_srcdir)/include/grub/terminfo.h \\\n @COND_sparc64_ieee1275_TRUE@\t$(top_srcdir)/include/grub/extcmd.h \\\n @COND_sparc64_ieee1275_TRUE@\t$(top_srcdir)/include/grub/lib/arg.h\n-@COND_arm_uboot_TRUE@am__append_5821 =  \\\n+@COND_arm_uboot_TRUE@am__append_5814 =  \\\n @COND_arm_uboot_TRUE@\t$(top_srcdir)/include/grub/uboot/uboot.h \\\n @COND_arm_uboot_TRUE@\t$(top_srcdir)/include/grub/uboot/disk.h \\\n @COND_arm_uboot_TRUE@\t$(top_srcdir)/include/grub/extcmd.h \\\n @COND_arm_uboot_TRUE@\t$(top_srcdir)/include/grub/lib/arg.h \\\n @COND_arm_uboot_TRUE@\t$(top_srcdir)/include/grub/arm/system.h\n-@COND_arm_coreboot_TRUE@am__append_5822 = $(top_builddir)/include/grub/keyboard_layouts.h \\\n+@COND_arm_coreboot_TRUE@am__append_5815 = $(top_builddir)/include/grub/keyboard_layouts.h \\\n @COND_arm_coreboot_TRUE@\t$(top_srcdir)/include/grub/arm/system.h \\\n @COND_arm_coreboot_TRUE@\t$(top_srcdir)/include/grub/video.h \\\n @COND_arm_coreboot_TRUE@\t$(top_srcdir)/include/grub/video_fb.h \\\n@@ -7943,35 +7933,35 @@ TESTS =\n @COND_arm_coreboot_TRUE@\t$(top_srcdir)/include/grub/dma.h \\\n @COND_arm_coreboot_TRUE@\t$(top_srcdir)/include/grub/arm/coreboot/kernel.h \\\n @COND_arm_coreboot_TRUE@\t$(top_srcdir)/include/grub/fdtbus.h\n-@COND_arm_efi_TRUE@am__append_5823 =  \\\n+@COND_arm_efi_TRUE@am__append_5816 =  \\\n @COND_arm_efi_TRUE@\t$(top_srcdir)/include/grub/efi/efi.h \\\n @COND_arm_efi_TRUE@\t$(top_srcdir)/include/grub/efi/disk.h \\\n @COND_arm_efi_TRUE@\t$(top_srcdir)/include/grub/arm/system.h \\\n @COND_arm_efi_TRUE@\t$(top_srcdir)/include/grub/acpi.h\n-@COND_arm64_efi_TRUE@am__append_5824 =  \\\n+@COND_arm64_efi_TRUE@am__append_5817 =  \\\n @COND_arm64_efi_TRUE@\t$(top_srcdir)/include/grub/efi/efi.h \\\n @COND_arm64_efi_TRUE@\t$(top_srcdir)/include/grub/efi/disk.h \\\n @COND_arm64_efi_TRUE@\t$(top_srcdir)/include/grub/acpi.h\n-@COND_riscv32_efi_TRUE@am__append_5825 =  \\\n+@COND_riscv32_efi_TRUE@am__append_5818 =  \\\n @COND_riscv32_efi_TRUE@\t$(top_srcdir)/include/grub/efi/efi.h \\\n @COND_riscv32_efi_TRUE@\t$(top_srcdir)/include/grub/efi/disk.h \\\n @COND_riscv32_efi_TRUE@\t$(top_srcdir)/include/grub/acpi.h\n-@COND_riscv64_efi_TRUE@am__append_5826 =  \\\n+@COND_riscv64_efi_TRUE@am__append_5819 =  \\\n @COND_riscv64_efi_TRUE@\t$(top_srcdir)/include/grub/efi/efi.h \\\n @COND_riscv64_efi_TRUE@\t$(top_srcdir)/include/grub/efi/disk.h \\\n @COND_riscv64_efi_TRUE@\t$(top_srcdir)/include/grub/acpi.h\n-@COND_emu_TRUE@am__append_5827 =  \\\n+@COND_emu_TRUE@am__append_5820 =  \\\n @COND_emu_TRUE@\t$(top_srcdir)/include/grub/datetime.h \\\n @COND_emu_TRUE@\t$(top_srcdir)/include/grub/emu/misc.h \\\n @COND_emu_TRUE@\t$(top_srcdir)/include/grub/emu/net.h \\\n @COND_emu_TRUE@\t$(top_srcdir)/include/grub/emu/hostdisk.h \\\n @COND_emu_TRUE@\t$(top_srcdir)/include/grub/emu/hostfile.h \\\n @COND_emu_TRUE@\t$(top_srcdir)/include/grub/extcmd.h\n-@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5828 = $(top_srcdir)/include/grub/sdl.h\n-@COND_GRUB_EMU_PCI_TRUE@@COND_emu_TRUE@am__append_5829 = $(top_srcdir)/include/grub/libpciaccess.h\n-@COND_emu_TRUE@am__append_5830 = grub_emu_init.h grub_emu_init.c\n-@COND_ENABLE_EFIEMU_TRUE@am__append_5831 = efiemu32.o efiemu64.o\n-@COND_ENABLE_EFIEMU_TRUE@am__append_5832 = efiemu32.o efiemu64.o efiemu64_c.o efiemu64_s.o\n+@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__append_5821 = $(top_srcdir)/include/grub/sdl.h\n+@COND_GRUB_EMU_PCI_TRUE@@COND_emu_TRUE@am__append_5822 = $(top_srcdir)/include/grub/libpciaccess.h\n+@COND_emu_TRUE@am__append_5823 = grub_emu_init.h grub_emu_init.c\n+@COND_ENABLE_EFIEMU_TRUE@am__append_5824 = efiemu32.o efiemu64.o\n+@COND_ENABLE_EFIEMU_TRUE@am__append_5825 = efiemu32.o efiemu64.o efiemu64_c.o efiemu64_s.o\n subdir = grub-core\n ACLOCAL_M4 = $(top_srcdir)/aclocal.m4\n am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \\\n@@ -8380,591 +8370,590 @@ am__installdirs = \"$(DESTDIR)$(bindir)\" \"$(DESTDIR)$(platformdir)\" \\\n @COND_arm_coreboot_TRUE@am__EXEEXT_290 = reboot.module$(EXEEXT)\n @COND_riscv32_efi_TRUE@am__EXEEXT_291 = reboot.module$(EXEEXT)\n @COND_riscv64_efi_TRUE@am__EXEEXT_292 = reboot.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_293 = shim_lock.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_294 = hdparm.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_295 = hdparm.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_296 = hdparm.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_297 = hdparm.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_298 = hdparm.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_299 = hdparm.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_300 = hdparm.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_301 = hdparm.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_302 = hdparm.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_303 = loadbios.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_304 = loadbios.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_305 = lspci.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_306 = lspci.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_307 = lspci.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_308 = lspci.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_309 = lspci.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_310 = lspci.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_311 = lspci.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_312 = lspci.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_313 = play.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_314 = play.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_315 = play.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_316 = play.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_317 = play.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_318 = play.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_319 = play.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_320 = spkmodem.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_321 = spkmodem.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_322 = spkmodem.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_323 = spkmodem.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_324 = spkmodem.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_325 = spkmodem.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_326 = spkmodem.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_327 = morse.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_328 = morse.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_329 = morse.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_330 = morse.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_331 = morse.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_332 = morse.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_333 = morse.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_334 = setpci.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_335 = setpci.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_336 = setpci.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_337 = setpci.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_338 = setpci.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_339 = setpci.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_340 = setpci.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_341 = setpci.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_342 = pcidump.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_343 = pcidump.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_344 = pcidump.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_345 = pcidump.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_346 = pcidump.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_347 = pcidump.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_348 = pcidump.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_349 = pcidump.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_350 = suspend.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_351 = suspend.module$(EXEEXT) \\\n+@COND_i386_pc_TRUE@am__EXEEXT_293 = hdparm.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_294 = hdparm.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_295 = hdparm.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_296 = hdparm.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_297 = hdparm.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_298 = hdparm.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_299 = hdparm.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_300 = hdparm.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_301 = hdparm.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_302 = loadbios.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_303 = loadbios.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_304 = lspci.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_305 = lspci.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_306 = lspci.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_307 = lspci.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_308 = lspci.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_309 = lspci.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_310 = lspci.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_311 = lspci.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_312 = play.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_313 = play.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_314 = play.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_315 = play.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_316 = play.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_317 = play.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_318 = play.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_319 = spkmodem.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_320 = spkmodem.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_321 = spkmodem.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_322 = spkmodem.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_323 = spkmodem.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_324 = spkmodem.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_325 = spkmodem.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_326 = morse.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_327 = morse.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_328 = morse.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_329 = morse.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_330 = morse.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_331 = morse.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_332 = morse.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_333 = setpci.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_334 = setpci.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_335 = setpci.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_336 = setpci.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_337 = setpci.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_338 = setpci.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_339 = setpci.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_340 = setpci.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_341 = pcidump.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_342 = pcidump.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_343 = pcidump.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_344 = pcidump.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_345 = pcidump.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_346 = pcidump.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_347 = pcidump.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_348 = pcidump.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_349 = suspend.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_350 = suspend.module$(EXEEXT) \\\n @COND_powerpc_ieee1275_TRUE@\tescc.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_352 = usbtest.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_353 = usbtest.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_354 = usbtest.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_355 = usbtest.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_356 = usbtest.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_357 = usbtest.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_358 = usbtest.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_359 = usbtest.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__EXEEXT_360 = usbtest.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_361 = ata.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_362 = ata.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_363 = ata.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_364 = ata.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_365 = ata.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_366 = ata.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_367 = ata.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_368 = ata.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_369 = ata.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_370 = ahci.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_371 = ahci.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_372 = ahci.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_373 = ahci.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_374 = ahci.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_375 = ahci.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_376 = ahci.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_377 = ahci.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_378 = pata.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_379 = pata.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_380 = pata.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_381 = pata.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_382 = pata.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_383 = pata.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_384 = pata.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_385 = pata.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_386 = pata.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_387 = biosdisk.module$(EXEEXT) \\\n+@COND_i386_pc_TRUE@am__EXEEXT_351 = usbtest.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_352 = usbtest.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_353 = usbtest.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_354 = usbtest.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_355 = usbtest.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_356 = usbtest.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_357 = usbtest.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_358 = usbtest.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__EXEEXT_359 = usbtest.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_360 = ata.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_361 = ata.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_362 = ata.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_363 = ata.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_364 = ata.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_365 = ata.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_366 = ata.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_367 = ata.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_368 = ata.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_369 = ahci.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_370 = ahci.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_371 = ahci.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_372 = ahci.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_373 = ahci.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_374 = ahci.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_375 = ahci.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_376 = ahci.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_377 = pata.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_378 = pata.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_379 = pata.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_380 = pata.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_381 = pata.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_382 = pata.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_383 = pata.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_384 = pata.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_385 = pata.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_386 = biosdisk.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tusbms.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_388 = usbms.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_389 = usbms.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_390 = usbms.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_391 = usbms.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_392 = usbms.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_393 = usbms.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_394 = usbms.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__EXEEXT_395 = usbms.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_396 = nand.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_397 = efiemu.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_398 = efiemu.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_399 = efiemu.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_400 = efiemu.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_401 = efiemu.module$(EXEEXT)\n-@COND_emu_TRUE@am__EXEEXT_402 = font.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_403 = font.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_404 = font.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_405 = font.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_406 = font.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_407 = font.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_408 = font.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_409 = font.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_410 = font.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_411 = font.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_412 = font.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_413 = font.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_414 = font.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_415 = font.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_416 = font.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__EXEEXT_417 = font.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_418 = font.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_419 = font.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_420 = font.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_421 = font.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_422 = pxe.module$(EXEEXT)\n-@COND_emu_TRUE@am__EXEEXT_423 = bufio.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_424 = bufio.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_425 = bufio.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_426 = bufio.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_427 = bufio.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_428 = bufio.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_429 = bufio.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_430 = bufio.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_431 = bufio.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_432 = bufio.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_433 = bufio.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_434 = bufio.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_435 = bufio.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_436 = bufio.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_437 = bufio.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__EXEEXT_438 = bufio.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_439 = bufio.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_440 = bufio.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_441 = bufio.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_442 = bufio.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_443 = relocator.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_444 = relocator.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_445 = relocator.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_446 = relocator.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_447 = relocator.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_448 = relocator.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_449 = relocator.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_450 = relocator.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_451 = relocator.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_452 = relocator.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_453 = relocator.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_454 =  \\\n+@COND_i386_efi_TRUE@am__EXEEXT_387 = usbms.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_388 = usbms.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_389 = usbms.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_390 = usbms.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_391 = usbms.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_392 = usbms.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_393 = usbms.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__EXEEXT_394 = usbms.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_395 = nand.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_396 = efiemu.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_397 = efiemu.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_398 = efiemu.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_399 = efiemu.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_400 = efiemu.module$(EXEEXT)\n+@COND_emu_TRUE@am__EXEEXT_401 = font.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_402 = font.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_403 = font.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_404 = font.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_405 = font.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_406 = font.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_407 = font.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__EXEEXT_408 = font.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__EXEEXT_409 = font.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_410 = font.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_411 = font.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_412 = font.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__EXEEXT_413 = font.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_414 = font.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_415 = font.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__EXEEXT_416 = font.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_417 = font.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_418 = font.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_419 = font.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_420 = font.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_421 = pxe.module$(EXEEXT)\n+@COND_emu_TRUE@am__EXEEXT_422 = bufio.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_423 = bufio.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_424 = bufio.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_425 = bufio.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_426 = bufio.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_427 = bufio.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_428 = bufio.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__EXEEXT_429 = bufio.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__EXEEXT_430 = bufio.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_431 = bufio.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_432 = bufio.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_433 = bufio.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__EXEEXT_434 = bufio.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_435 = bufio.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_436 = bufio.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__EXEEXT_437 = bufio.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_438 = bufio.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_439 = bufio.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_440 = bufio.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_441 = bufio.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_442 = relocator.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_443 = relocator.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_444 = relocator.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_445 = relocator.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_446 = relocator.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_447 = relocator.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_448 = relocator.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__EXEEXT_449 = relocator.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__EXEEXT_450 = relocator.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_451 = relocator.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_452 = relocator.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_453 =  \\\n @COND_powerpc_ieee1275_TRUE@\trelocator.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_455 = relocator.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_456 = relocator.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_457 = datetime.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_458 = datetime.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_459 = datetime.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_460 = datetime.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_461 = datetime.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_462 = datetime.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_463 = datetime.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_464 = datetime.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_465 = datetime.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_466 = datetime.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_467 = datetime.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_468 = datetime.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_469 = datetime.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_470 = datetime.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_471 = datetime.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_472 = datetime.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__EXEEXT_473 = datetime.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_474 = datetime.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_475 = datetime.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__EXEEXT_476 = datetime.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_477 = datetime.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_478 = datetime.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_479 = aout.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_480 = aout.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_481 = aout.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_482 = aout.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_483 = aout.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_484 = aout.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_485 = aout.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_486 = bsd.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_487 = bsd.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_488 = bsd.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_489 = bsd.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_490 = bsd.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_491 = bsd.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_492 = bsd.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_493 = plan9.module$(EXEEXT) \\\n+@COND_mips_arc_TRUE@am__EXEEXT_454 = relocator.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_455 = relocator.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_456 = datetime.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_457 = datetime.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_458 = datetime.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_459 = datetime.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_460 = datetime.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_461 = datetime.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_462 = datetime.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__EXEEXT_463 = datetime.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__EXEEXT_464 = datetime.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_465 = datetime.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_466 = datetime.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_467 = datetime.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_468 = datetime.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__EXEEXT_469 = datetime.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_470 = datetime.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_471 = datetime.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__EXEEXT_472 = datetime.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_473 = datetime.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_474 = datetime.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__EXEEXT_475 = datetime.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_476 = datetime.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_477 = datetime.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_478 = aout.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_479 = aout.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_480 = aout.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_481 = aout.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_482 = aout.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_483 = aout.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_484 = aout.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_485 = bsd.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_486 = bsd.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_487 = bsd.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_488 = bsd.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_489 = bsd.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_490 = bsd.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_491 = bsd.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_492 = plan9.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tlinux16.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_494 = linux16.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_495 = linux16.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_496 = linux16.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_497 = linux16.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_498 = linux16.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_499 = linux16.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_500 = ntldr.module$(EXEEXT) \\\n+@COND_i386_efi_TRUE@am__EXEEXT_493 = linux16.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_494 = linux16.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_495 = linux16.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_496 = linux16.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_497 = linux16.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_498 = linux16.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_499 = ntldr.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\ttruecrypt.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tfreedos.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tpxechain.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tmultiboot2.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_501 = multiboot2.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_502 = multiboot2.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_503 = multiboot2.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_504 = multiboot2.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_505 = multiboot2.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_506 = multiboot2.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_507 = multiboot2.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_508 = multiboot2.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_509 = multiboot2.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_510 = multiboot2.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_511 = multiboot.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_512 = multiboot.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_513 = multiboot.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_514 = multiboot.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_515 = multiboot.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_516 = multiboot.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_517 = multiboot.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_518 = multiboot.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_519 = xen_boot.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_520 = linux.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_521 = linux.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_522 = linux.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_523 = linux.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_524 = linux.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_525 = linux.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_526 = linux.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_527 = linux.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_528 = linux.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_529 = linux.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_530 = linux.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_531 = linux.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_532 = linux.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_533 = linux.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_534 = linux.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_535 = linux.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__EXEEXT_536 = linux.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_537 = linux.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_538 = linux.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__EXEEXT_539 = linux.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_540 = linux.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_541 = linux.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__EXEEXT_542 = fdt.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_543 = fdt.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_544 = fdt.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_545 = fdt.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_546 = fdt.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_547 = xnu.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_548 = xnu.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_549 = xnu.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_550 = xnu.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_551 = xnu.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_552 = random.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_553 = random.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_554 = random.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_555 = random.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_556 = random.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_557 = appleldr.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_558 = appleldr.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_559 = chain.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_560 = chain.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_561 = chain.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_562 = chain.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_563 = chain.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_564 = chain.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_565 = chain.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_566 = chain.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_567 = chain.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_568 = mmap.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_569 = mmap.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_570 = mmap.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_571 = mmap.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_572 = mmap.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_573 = mmap.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_574 = mmap.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_575 = mmap.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_576 = mmap.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_577 = mmap.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_578 = mmap.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_579 = mmap.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_580 = mmap.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_581 = mmap.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_582 = mmap.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_583 = mmap.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_584 = at_keyboard.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_585 = at_keyboard.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_586 = at_keyboard.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_587 = at_keyboard.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_588 =  \\\n+@COND_i386_efi_TRUE@am__EXEEXT_500 = multiboot2.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_501 = multiboot2.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_502 = multiboot2.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_503 = multiboot2.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_504 = multiboot2.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_505 = multiboot2.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_506 = multiboot2.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_507 = multiboot2.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__EXEEXT_508 = multiboot2.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_509 = multiboot2.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_510 = multiboot.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_511 = multiboot.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_512 = multiboot.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_513 = multiboot.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_514 = multiboot.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_515 = multiboot.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_516 = multiboot.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_517 = multiboot.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_518 = xen_boot.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_519 = linux.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_520 = linux.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_521 = linux.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_522 = linux.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_523 = linux.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_524 = linux.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_525 = linux.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__EXEEXT_526 = linux.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__EXEEXT_527 = linux.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_528 = linux.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_529 = linux.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_530 = linux.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_531 = linux.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__EXEEXT_532 = linux.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_533 = linux.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_534 = linux.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__EXEEXT_535 = linux.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_536 = linux.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_537 = linux.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__EXEEXT_538 = linux.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_539 = linux.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_540 = linux.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__EXEEXT_541 = fdt.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_542 = fdt.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_543 = fdt.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_544 = fdt.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_545 = fdt.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_546 = xnu.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_547 = xnu.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_548 = xnu.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_549 = xnu.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_550 = xnu.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_551 = random.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_552 = random.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_553 = random.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_554 = random.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_555 = random.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_556 = appleldr.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_557 = appleldr.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_558 = chain.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_559 = chain.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_560 = chain.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_561 = chain.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_562 = chain.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_563 = chain.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_564 = chain.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_565 = chain.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_566 = chain.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_567 = mmap.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_568 = mmap.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_569 = mmap.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_570 = mmap.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_571 = mmap.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_572 = mmap.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_573 = mmap.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_574 = mmap.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_575 = mmap.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__EXEEXT_576 = mmap.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_577 = mmap.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_578 = mmap.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_579 = mmap.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_580 = mmap.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_581 = mmap.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_582 = mmap.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_583 = at_keyboard.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_584 = at_keyboard.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_585 = at_keyboard.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_586 = at_keyboard.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_587 =  \\\n @COND_i386_multiboot_TRUE@\tat_keyboard.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_589 = at_keyboard.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_590 = at_keyboard.module$(EXEEXT)\n-@COND_emu_TRUE@am__EXEEXT_591 = gfxterm.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_592 = gfxterm.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_593 = gfxterm.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_594 = gfxterm.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_595 = gfxterm.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_596 = gfxterm.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_597 = gfxterm.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_598 = gfxterm.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_599 = gfxterm.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_600 = gfxterm.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_601 = gfxterm.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_602 = gfxterm.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_603 = gfxterm.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_604 = gfxterm.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_605 = gfxterm.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__EXEEXT_606 = gfxterm.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_607 = gfxterm.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_608 = gfxterm.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_609 = gfxterm.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_610 = gfxterm.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_611 = serial.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_612 = serial.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_613 = serial.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_614 = serial.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_615 = serial.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_616 = serial.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_617 = serial.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_618 = serial.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_619 = serial.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_620 = serial.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_621 = serial.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_622 = serial.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_623 = serial.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__EXEEXT_624 = serial.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_625 = serial.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_626 = serial.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_627 = sendkey.module$(EXEEXT) \\\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_588 = at_keyboard.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_589 = at_keyboard.module$(EXEEXT)\n+@COND_emu_TRUE@am__EXEEXT_590 = gfxterm.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_591 = gfxterm.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_592 = gfxterm.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_593 = gfxterm.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_594 = gfxterm.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_595 = gfxterm.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_596 = gfxterm.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__EXEEXT_597 = gfxterm.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__EXEEXT_598 = gfxterm.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_599 = gfxterm.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_600 = gfxterm.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_601 = gfxterm.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__EXEEXT_602 = gfxterm.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_603 = gfxterm.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_604 = gfxterm.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__EXEEXT_605 = gfxterm.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_606 = gfxterm.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_607 = gfxterm.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_608 = gfxterm.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_609 = gfxterm.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_610 = serial.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_611 = serial.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_612 = serial.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_613 = serial.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_614 = serial.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_615 = serial.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_616 = serial.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_617 = serial.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_618 = serial.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__EXEEXT_619 = serial.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_620 = serial.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_621 = serial.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_622 = serial.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__EXEEXT_623 = serial.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_624 = serial.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_625 = serial.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_626 = sendkey.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tterminfo.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_628 = terminfo.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_629 = terminfo.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_630 = terminfo.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_631 = terminfo.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_632 = terminfo.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_633 = terminfo.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_634 = terminfo.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_635 = terminfo.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__EXEEXT_636 = terminfo.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_637 = terminfo.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_638 = terminfo.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_639 = usb_keyboard.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_640 = usb_keyboard.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_641 = usb_keyboard.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_642 =  \\\n+@COND_i386_efi_TRUE@am__EXEEXT_627 = terminfo.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_628 = terminfo.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_629 = terminfo.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_630 = terminfo.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_631 = terminfo.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_632 = terminfo.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_633 = terminfo.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_634 = terminfo.module$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__EXEEXT_635 = terminfo.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_636 = terminfo.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_637 = terminfo.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_638 = usb_keyboard.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_639 = usb_keyboard.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_640 = usb_keyboard.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_641 =  \\\n @COND_i386_coreboot_TRUE@\tusb_keyboard.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_643 =  \\\n+@COND_i386_multiboot_TRUE@am__EXEEXT_642 =  \\\n @COND_i386_multiboot_TRUE@\tusb_keyboard.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_644 =  \\\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_643 =  \\\n @COND_i386_ieee1275_TRUE@\tusb_keyboard.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_645 = usb_keyboard.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_646 =  \\\n+@COND_x86_64_efi_TRUE@am__EXEEXT_644 = usb_keyboard.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_645 =  \\\n @COND_mips_loongson_TRUE@\tusb_keyboard.module$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__EXEEXT_647 = usb_keyboard.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_648 = vga.module$(EXEEXT) \\\n+@COND_arm_coreboot_TRUE@am__EXEEXT_646 = usb_keyboard.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_647 = vga.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tvga_text.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tmda_text.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_649 = mda_text.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_650 = mda_text.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_651 = mda_text.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_652 = video_cirrus.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_653 = video_cirrus.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_654 = video_cirrus.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_655 =  \\\n+@COND_i386_qemu_TRUE@am__EXEEXT_648 = mda_text.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_649 = mda_text.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_650 = mda_text.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_651 = video_cirrus.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_652 = video_cirrus.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_653 = video_cirrus.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_654 =  \\\n @COND_i386_coreboot_TRUE@\tvideo_cirrus.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_656 =  \\\n+@COND_i386_multiboot_TRUE@am__EXEEXT_655 =  \\\n @COND_i386_multiboot_TRUE@\tvideo_cirrus.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_657 =  \\\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_656 =  \\\n @COND_i386_ieee1275_TRUE@\tvideo_cirrus.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_658 = video_cirrus.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_659 = video_bochs.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_660 = video_bochs.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_661 = video_bochs.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_662 = video_bochs.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_663 =  \\\n+@COND_x86_64_efi_TRUE@am__EXEEXT_657 = video_cirrus.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_658 = video_bochs.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_659 = video_bochs.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_660 = video_bochs.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_661 = video_bochs.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_662 =  \\\n @COND_i386_multiboot_TRUE@\tvideo_bochs.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_664 = video_bochs.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_665 = video_bochs.module$(EXEEXT)\n-@COND_emu_TRUE@am__EXEEXT_666 = legacy_password_test.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_667 =  \\\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_663 = video_bochs.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_664 = video_bochs.module$(EXEEXT)\n+@COND_emu_TRUE@am__EXEEXT_665 = legacy_password_test.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_666 =  \\\n @COND_i386_pc_TRUE@\tlegacy_password_test.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_668 =  \\\n+@COND_i386_efi_TRUE@am__EXEEXT_667 =  \\\n @COND_i386_efi_TRUE@\tlegacy_password_test.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_669 =  \\\n+@COND_x86_64_efi_TRUE@am__EXEEXT_668 =  \\\n @COND_x86_64_efi_TRUE@\tlegacy_password_test.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_670 =  \\\n+@COND_i386_xen_TRUE@am__EXEEXT_669 =  \\\n @COND_i386_xen_TRUE@\tlegacy_password_test.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_671 =  \\\n+@COND_x86_64_xen_TRUE@am__EXEEXT_670 =  \\\n @COND_x86_64_xen_TRUE@\tlegacy_password_test.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_672 =  \\\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_671 =  \\\n @COND_i386_xen_pvh_TRUE@\tlegacy_password_test.module$(EXEEXT)\n-@COND_emu_TRUE@am__EXEEXT_673 = div.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_674 = div.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_675 = div.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_676 = div.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_677 = div.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_678 = div.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_679 = div.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_680 = div.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_681 = div.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_682 = div.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_683 = div.module$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_684 = div.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_685 = div.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_686 = div.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_687 = div.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_688 = div.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_689 = div.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_690 = div.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_691 = efi_gop.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_692 = efi_gop.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_693 = efi_gop.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_694 = efi_gop.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_695 = efi_gop.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_696 = efi_gop.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_697 = efi_gop.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_698 = efi_uga.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_699 = efi_uga.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_700 = vbe.module$(EXEEXT)\n-@COND_emu_TRUE@am__EXEEXT_701 = video_fb.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_702 = video_fb.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_703 = video_fb.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_704 = video_fb.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_705 = video_fb.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_706 = video_fb.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_707 = video_fb.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_708 = video_fb.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_709 = video_fb.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_710 = video_fb.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_711 = video_fb.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_712 = video_fb.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_713 = video_fb.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_714 = video_fb.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_715 = video_fb.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__EXEEXT_716 = video_fb.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_717 = video_fb.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_718 = video_fb.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_719 = video_fb.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_720 = video_fb.module$(EXEEXT)\n-@COND_emu_TRUE@am__EXEEXT_721 = video.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_722 = video.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_723 = video.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_724 = video.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_725 = video.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_726 = video.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_727 = video.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_728 = video.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_729 = video.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_730 = video.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_731 = video.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_732 = video.module$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_733 = video.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_734 = video.module$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_735 = video.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__EXEEXT_736 = video.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_737 = video.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_738 = video.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_739 = video.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_740 = video.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_741 =  \\\n+@COND_emu_TRUE@am__EXEEXT_672 = div.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_673 = div.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_674 = div.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_675 = div.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_676 = div.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_677 = div.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_678 = div.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_679 = div.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__EXEEXT_680 = div.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__EXEEXT_681 = div.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_682 = div.module$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_683 = div.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_684 = div.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_685 = div.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__EXEEXT_686 = div.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_687 = div.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_688 = div.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_689 = div.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_690 = efi_gop.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_691 = efi_gop.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_692 = efi_gop.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_693 = efi_gop.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_694 = efi_gop.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_695 = efi_gop.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_696 = efi_gop.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_697 = efi_uga.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_698 = efi_uga.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_699 = vbe.module$(EXEEXT)\n+@COND_emu_TRUE@am__EXEEXT_700 = video_fb.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_701 = video_fb.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_702 = video_fb.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_703 = video_fb.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_704 = video_fb.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_705 = video_fb.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_706 = video_fb.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__EXEEXT_707 = video_fb.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__EXEEXT_708 = video_fb.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_709 = video_fb.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_710 = video_fb.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_711 = video_fb.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__EXEEXT_712 = video_fb.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_713 = video_fb.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_714 = video_fb.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__EXEEXT_715 = video_fb.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_716 = video_fb.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_717 = video_fb.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_718 = video_fb.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_719 = video_fb.module$(EXEEXT)\n+@COND_emu_TRUE@am__EXEEXT_720 = video.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_721 = video.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_722 = video.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_723 = video.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_724 = video.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_725 = video.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_726 = video.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__EXEEXT_727 = video.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__EXEEXT_728 = video.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_729 = video.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_730 = video.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_731 = video.module$(EXEEXT)\n+@COND_mips_arc_TRUE@am__EXEEXT_732 = video.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_733 = video.module$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_734 = video.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__EXEEXT_735 = video.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_736 = video.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_737 = video.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_738 = video.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_739 = video.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_740 =  \\\n @COND_powerpc_ieee1275_TRUE@\tieee1275_fb.module$(EXEEXT)\n-@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__EXEEXT_742 =  \\\n+@COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@am__EXEEXT_741 =  \\\n @COND_GRUB_EMU_SDL_TRUE@@COND_emu_TRUE@\tsdl.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_743 = ofnet.module$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_744 = ofnet.module$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_745 = ofnet.module$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__EXEEXT_746 = ubootnet.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_747 = efinet.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_748 = efinet.module$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_749 = efinet.module$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_750 = efinet.module$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_751 = efinet.module$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_752 = efinet.module$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_753 = efinet.module$(EXEEXT)\n-@COND_emu_TRUE@am__EXEEXT_754 = emunet.module$(EXEEXT) \\\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_742 = ofnet.module$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_743 = ofnet.module$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_744 = ofnet.module$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__EXEEXT_745 = ubootnet.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_746 = efinet.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_747 = efinet.module$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_748 = efinet.module$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_749 = efinet.module$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_750 = efinet.module$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_751 = efinet.module$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_752 = efinet.module$(EXEEXT)\n+@COND_emu_TRUE@am__EXEEXT_753 = emunet.module$(EXEEXT) \\\n @COND_emu_TRUE@\tlegacycfg.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_755 = legacycfg.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_756 = legacycfg.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_757 = legacycfg.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_758 = legacycfg.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_759 = legacycfg.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_760 = legacycfg.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_761 = backtrace.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_762 = backtrace.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_763 = backtrace.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_764 = backtrace.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_765 = backtrace.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_766 = backtrace.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_767 = backtrace.module$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_768 = backtrace.module$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_769 = backtrace.module$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_770 = backtrace.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_771 = lsapm.module$(EXEEXT) \\\n+@COND_i386_pc_TRUE@am__EXEEXT_754 = legacycfg.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_755 = legacycfg.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_756 = legacycfg.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__EXEEXT_757 = legacycfg.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__EXEEXT_758 = legacycfg.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_759 = legacycfg.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_760 = backtrace.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_761 = backtrace.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_762 = backtrace.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_763 = backtrace.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_764 = backtrace.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_765 = backtrace.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_766 = backtrace.module$(EXEEXT)\n+@COND_i386_xen_TRUE@am__EXEEXT_767 = backtrace.module$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__EXEEXT_768 = backtrace.module$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_769 = backtrace.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_770 = lsapm.module$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tkeylayouts.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_772 = keylayouts.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_773 = keylayouts.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_774 = keylayouts.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_775 = keylayouts.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_776 = keylayouts.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_777 = keylayouts.module$(EXEEXT)\n-@COND_ENABLE_CACHE_STATS_TRUE@am__EXEEXT_778 =  \\\n+@COND_i386_efi_TRUE@am__EXEEXT_771 = keylayouts.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_772 = keylayouts.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_773 = keylayouts.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_774 = keylayouts.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_775 = keylayouts.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_776 = keylayouts.module$(EXEEXT)\n+@COND_ENABLE_CACHE_STATS_TRUE@am__EXEEXT_777 =  \\\n @COND_ENABLE_CACHE_STATS_TRUE@\tcacheinfo.module$(EXEEXT)\n-@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__EXEEXT_779 =  \\\n+@COND_ENABLE_BOOT_TIME_STATS_TRUE@am__EXEEXT_778 =  \\\n @COND_ENABLE_BOOT_TIME_STATS_TRUE@\tboottime.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_780 = gdb.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_781 = gdb.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_782 = gdb.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_783 = gdb.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_784 = gdb.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_785 = gdb.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_786 = tpm.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_787 = rdmsr.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_788 = rdmsr.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_789 = rdmsr.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_790 = rdmsr.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_791 = rdmsr.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_792 = rdmsr.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_793 = rdmsr.module$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_794 = wrmsr.module$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_795 = wrmsr.module$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_796 = wrmsr.module$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_797 = wrmsr.module$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_798 = wrmsr.module$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_799 = wrmsr.module$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_800 = wrmsr.module$(EXEEXT)\n-@COND_emu_TRUE@am__EXEEXT_801 = kernel.exec$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_802 = kernel.exec$(EXEEXT)\n-@COND_i386_efi_TRUE@am__EXEEXT_803 = kernel.exec$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_804 = kernel.exec$(EXEEXT)\n-@COND_i386_coreboot_TRUE@am__EXEEXT_805 = kernel.exec$(EXEEXT)\n-@COND_i386_multiboot_TRUE@am__EXEEXT_806 = kernel.exec$(EXEEXT)\n-@COND_i386_ieee1275_TRUE@am__EXEEXT_807 = kernel.exec$(EXEEXT)\n-@COND_x86_64_efi_TRUE@am__EXEEXT_808 = kernel.exec$(EXEEXT)\n-@COND_i386_xen_TRUE@am__EXEEXT_809 = kernel.exec$(EXEEXT)\n-@COND_x86_64_xen_TRUE@am__EXEEXT_810 = kernel.exec$(EXEEXT)\n-@COND_i386_xen_pvh_TRUE@am__EXEEXT_811 = kernel.exec$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_812 = kernel.exec$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_813 = kernel.exec$(EXEEXT)\n-@COND_powerpc_ieee1275_TRUE@am__EXEEXT_814 = kernel.exec$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_815 = kernel.exec$(EXEEXT)\n-@COND_ia64_efi_TRUE@am__EXEEXT_816 = kernel.exec$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_817 = kernel.exec$(EXEEXT)\n-@COND_arm_uboot_TRUE@am__EXEEXT_818 = kernel.exec$(EXEEXT)\n-@COND_arm_efi_TRUE@am__EXEEXT_819 = kernel.exec$(EXEEXT)\n-@COND_arm64_efi_TRUE@am__EXEEXT_820 = kernel.exec$(EXEEXT)\n-@COND_arm_coreboot_TRUE@am__EXEEXT_821 = kernel.exec$(EXEEXT)\n-@COND_riscv32_efi_TRUE@am__EXEEXT_822 = kernel.exec$(EXEEXT)\n-@COND_riscv64_efi_TRUE@am__EXEEXT_823 = kernel.exec$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_824 = boot.image$(EXEEXT)\n-@COND_i386_qemu_TRUE@am__EXEEXT_825 = boot.image$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_826 = boot.image$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_827 = boot_hybrid.image$(EXEEXT) \\\n+@COND_i386_pc_TRUE@am__EXEEXT_779 = gdb.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_780 = gdb.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_781 = gdb.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_782 = gdb.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_783 = gdb.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_784 = gdb.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_785 = tpm.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_786 = rdmsr.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_787 = rdmsr.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_788 = rdmsr.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_789 = rdmsr.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_790 = rdmsr.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_791 = rdmsr.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_792 = rdmsr.module$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_793 = wrmsr.module$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_794 = wrmsr.module$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_795 = wrmsr.module$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_796 = wrmsr.module$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_797 = wrmsr.module$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_798 = wrmsr.module$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_799 = wrmsr.module$(EXEEXT)\n+@COND_emu_TRUE@am__EXEEXT_800 = kernel.exec$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_801 = kernel.exec$(EXEEXT)\n+@COND_i386_efi_TRUE@am__EXEEXT_802 = kernel.exec$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_803 = kernel.exec$(EXEEXT)\n+@COND_i386_coreboot_TRUE@am__EXEEXT_804 = kernel.exec$(EXEEXT)\n+@COND_i386_multiboot_TRUE@am__EXEEXT_805 = kernel.exec$(EXEEXT)\n+@COND_i386_ieee1275_TRUE@am__EXEEXT_806 = kernel.exec$(EXEEXT)\n+@COND_x86_64_efi_TRUE@am__EXEEXT_807 = kernel.exec$(EXEEXT)\n+@COND_i386_xen_TRUE@am__EXEEXT_808 = kernel.exec$(EXEEXT)\n+@COND_x86_64_xen_TRUE@am__EXEEXT_809 = kernel.exec$(EXEEXT)\n+@COND_i386_xen_pvh_TRUE@am__EXEEXT_810 = kernel.exec$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_811 = kernel.exec$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_812 = kernel.exec$(EXEEXT)\n+@COND_powerpc_ieee1275_TRUE@am__EXEEXT_813 = kernel.exec$(EXEEXT)\n+@COND_mips_arc_TRUE@am__EXEEXT_814 = kernel.exec$(EXEEXT)\n+@COND_ia64_efi_TRUE@am__EXEEXT_815 = kernel.exec$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_816 = kernel.exec$(EXEEXT)\n+@COND_arm_uboot_TRUE@am__EXEEXT_817 = kernel.exec$(EXEEXT)\n+@COND_arm_efi_TRUE@am__EXEEXT_818 = kernel.exec$(EXEEXT)\n+@COND_arm64_efi_TRUE@am__EXEEXT_819 = kernel.exec$(EXEEXT)\n+@COND_arm_coreboot_TRUE@am__EXEEXT_820 = kernel.exec$(EXEEXT)\n+@COND_riscv32_efi_TRUE@am__EXEEXT_821 = kernel.exec$(EXEEXT)\n+@COND_riscv64_efi_TRUE@am__EXEEXT_822 = kernel.exec$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_823 = boot.image$(EXEEXT)\n+@COND_i386_qemu_TRUE@am__EXEEXT_824 = boot.image$(EXEEXT)\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_825 = boot.image$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_826 = boot_hybrid.image$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tcdboot.image$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_828 = cdboot.image$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_829 = pxeboot.image$(EXEEXT) \\\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_827 = cdboot.image$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_828 = pxeboot.image$(EXEEXT) \\\n @COND_i386_pc_TRUE@\tdiskboot.image$(EXEEXT)\n-@COND_sparc64_ieee1275_TRUE@am__EXEEXT_830 = diskboot.image$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_831 = lnxboot.image$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_832 =  \\\n+@COND_sparc64_ieee1275_TRUE@am__EXEEXT_829 = diskboot.image$(EXEEXT)\n+@COND_i386_pc_TRUE@am__EXEEXT_830 = lnxboot.image$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_831 =  \\\n @COND_mips_loongson_TRUE@\txz_decompress.image$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_833 = xz_decompress.image$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_834 =  \\\n+@COND_mips_arc_TRUE@am__EXEEXT_832 = xz_decompress.image$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_833 =  \\\n @COND_mips_qemu_mips_TRUE@\txz_decompress.image$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_835 =  \\\n+@COND_mips_loongson_TRUE@am__EXEEXT_834 =  \\\n @COND_mips_loongson_TRUE@\tnone_decompress.image$(EXEEXT)\n-@COND_mips_arc_TRUE@am__EXEEXT_836 = none_decompress.image$(EXEEXT)\n-@COND_mips_qemu_mips_TRUE@am__EXEEXT_837 =  \\\n+@COND_mips_arc_TRUE@am__EXEEXT_835 = none_decompress.image$(EXEEXT)\n+@COND_mips_qemu_mips_TRUE@am__EXEEXT_836 =  \\\n @COND_mips_qemu_mips_TRUE@\tnone_decompress.image$(EXEEXT)\n-@COND_i386_pc_TRUE@am__EXEEXT_838 = lzma_decompress.image$(EXEEXT)\n-@COND_mips_loongson_TRUE@am__EXEEXT_839 = fwstart.image$(EXEEXT) \\\n+@COND_i386_pc_TRUE@am__EXEEXT_837 = lzma_decompress.image$(EXEEXT)\n+@COND_mips_loongson_TRUE@am__EXEEXT_838 = fwstart.image$(EXEEXT) \\\n @COND_mips_loongson_TRUE@\tfwstart_fuloong2f.image$(EXEEXT)\n PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) $(platform_PROGRAMS) \\\n \t$(sbin_PROGRAMS)\n@@ -12775,13 +12764,6 @@ shift_test_module_OBJECTS = $(am_shift_test_module_OBJECTS) \\\n \t$(nodist_shift_test_module_OBJECTS)\n shift_test_module_LINK = $(CCLD) $(shift_test_module_CFLAGS) $(CFLAGS) \\\n \t$(shift_test_module_LDFLAGS) $(LDFLAGS) -o $@\n-am__shim_lock_module_SOURCES_DIST = commands/efi/shim_lock.c\n-@COND_x86_64_efi_TRUE@am_shim_lock_module_OBJECTS = commands/efi/shim_lock_module-shim_lock.$(OBJEXT)\n-nodist_shim_lock_module_OBJECTS =\n-shim_lock_module_OBJECTS = $(am_shim_lock_module_OBJECTS) \\\n-\t$(nodist_shim_lock_module_OBJECTS)\n-shim_lock_module_LINK = $(CCLD) $(shim_lock_module_CFLAGS) $(CFLAGS) \\\n-\t$(shim_lock_module_LDFLAGS) $(LDFLAGS) -o $@\n am_signature_test_module_OBJECTS =  \\\n \ttests/signature_test_module-signature_test.$(OBJEXT)\n nodist_signature_test_module_OBJECTS =\n@@ -13847,7 +13829,6 @@ SOURCES = $(acpi_module_SOURCES) $(nodist_acpi_module_SOURCES) \\\n \t$(nodist_setpci_module_SOURCES) $(sfs_module_SOURCES) \\\n \t$(nodist_sfs_module_SOURCES) $(shift_test_module_SOURCES) \\\n \t$(nodist_shift_test_module_SOURCES) \\\n-\t$(shim_lock_module_SOURCES) $(nodist_shim_lock_module_SOURCES) \\\n \t$(signature_test_module_SOURCES) \\\n \t$(nodist_signature_test_module_SOURCES) \\\n \t$(sleep_module_SOURCES) $(nodist_sleep_module_SOURCES) \\\n@@ -14078,10 +14059,8 @@ DIST_SOURCES = $(am__acpi_module_SOURCES_DIST) \\\n \t$(am__serial_module_SOURCES_DIST) $(setjmp_module_SOURCES) \\\n \t$(setjmp_test_module_SOURCES) \\\n \t$(am__setpci_module_SOURCES_DIST) $(sfs_module_SOURCES) \\\n-\t$(shift_test_module_SOURCES) \\\n-\t$(am__shim_lock_module_SOURCES_DIST) \\\n-\t$(signature_test_module_SOURCES) $(sleep_module_SOURCES) \\\n-\t$(sleep_test_module_SOURCES) \\\n+\t$(shift_test_module_SOURCES) $(signature_test_module_SOURCES) \\\n+\t$(sleep_module_SOURCES) $(sleep_test_module_SOURCES) \\\n \t$(am__spkmodem_module_SOURCES_DIST) $(squash4_module_SOURCES) \\\n \t$(strtoull_test_module_SOURCES) \\\n \t$(am__suspend_module_SOURCES_DIST) \\\n@@ -15514,56 +15493,55 @@ MOD_FILES = disk.mod trig.mod $(am__append_8) $(am__append_15) \\\n \t$(am__append_2045) $(am__append_2052) $(am__append_2059) \\\n \t$(am__append_2066) $(am__append_2073) $(am__append_2080) \\\n \t$(am__append_2087) $(am__append_2094) $(am__append_2101) \\\n-\t$(am__append_2108) help.mod hexdump.mod keystatus.mod \\\n-\t$(am__append_2115) $(am__append_2122) loadenv.mod ls.mod \\\n-\tlsmmap.mod $(am__append_2129) $(am__append_2136) \\\n+\thelp.mod hexdump.mod keystatus.mod $(am__append_2108) \\\n+\t$(am__append_2115) loadenv.mod ls.mod lsmmap.mod \\\n+\t$(am__append_2122) $(am__append_2129) $(am__append_2136) \\\n \t$(am__append_2143) $(am__append_2150) $(am__append_2157) \\\n-\t$(am__append_2164) $(am__append_2171) $(am__append_2178) \\\n-\tmemrw.mod minicmd.mod parttool.mod password.mod \\\n-\tpassword_pbkdf2.mod $(am__append_2185) $(am__append_2192) \\\n+\t$(am__append_2164) $(am__append_2171) memrw.mod minicmd.mod \\\n+\tparttool.mod password.mod password_pbkdf2.mod \\\n+\t$(am__append_2178) $(am__append_2185) $(am__append_2192) \\\n \t$(am__append_2199) $(am__append_2206) $(am__append_2213) \\\n \t$(am__append_2220) $(am__append_2227) $(am__append_2234) \\\n \t$(am__append_2241) $(am__append_2248) $(am__append_2255) \\\n \t$(am__append_2262) $(am__append_2269) $(am__append_2276) \\\n \t$(am__append_2283) $(am__append_2290) $(am__append_2297) \\\n \t$(am__append_2304) $(am__append_2311) $(am__append_2318) \\\n-\t$(am__append_2325) probe.mod read.mod search.mod \\\n-\tsearch_fs_file.mod search_fs_uuid.mod search_label.mod \\\n+\tprobe.mod read.mod search.mod search_fs_file.mod \\\n+\tsearch_fs_uuid.mod search_label.mod $(am__append_2325) \\\n \t$(am__append_2332) $(am__append_2339) $(am__append_2346) \\\n \t$(am__append_2353) $(am__append_2360) $(am__append_2367) \\\n \t$(am__append_2374) $(am__append_2381) $(am__append_2388) \\\n \t$(am__append_2395) $(am__append_2402) $(am__append_2409) \\\n \t$(am__append_2416) $(am__append_2423) $(am__append_2430) \\\n-\t$(am__append_2437) sleep.mod $(am__append_2444) \\\n-\t$(am__append_2451) terminal.mod test.mod true.mod \\\n-\t$(am__append_2458) $(am__append_2465) $(am__append_2472) \\\n-\t$(am__append_2479) $(am__append_2486) $(am__append_2493) \\\n-\t$(am__append_2500) $(am__append_2507) $(am__append_2514) \\\n-\tvideoinfo.mod videotest.mod xnu_uuid.mod dm_nv.mod \\\n-\tloopback.mod cryptodisk.mod luks.mod geli.mod lvm.mod ldm.mod \\\n-\tmdraid09.mod mdraid09_be.mod mdraid1x.mod diskfilter.mod \\\n-\traid5rec.mod raid6rec.mod scsi.mod memdisk.mod \\\n-\t$(am__append_2521) $(am__append_2528) $(am__append_2535) \\\n-\t$(am__append_2542) $(am__append_2549) $(am__append_2556) \\\n-\t$(am__append_2563) $(am__append_2570) $(am__append_2577) \\\n-\t$(am__append_2584) $(am__append_2591) $(am__append_2598) \\\n-\t$(am__append_2605) $(am__append_2612) $(am__append_2619) \\\n-\t$(am__append_2626) $(am__append_2633) $(am__append_2640) \\\n-\t$(am__append_2647) $(am__append_2654) $(am__append_2661) \\\n-\t$(am__append_2668) $(am__append_2675) $(am__append_2682) \\\n-\t$(am__append_2689) $(am__append_2696) $(am__append_2703) \\\n-\t$(am__append_2710) $(am__append_2717) $(am__append_2724) \\\n-\t$(am__append_2731) $(am__append_2738) $(am__append_2745) \\\n-\t$(am__append_2752) $(am__append_2759) $(am__append_2766) \\\n-\t$(am__append_2773) $(am__append_2780) $(am__append_2787) \\\n-\t$(am__append_2794) $(am__append_2801) $(am__append_2808) \\\n-\t$(am__append_2815) $(am__append_2822) $(am__append_2829) \\\n-\t$(am__append_2836) $(am__append_2843) $(am__append_2850) \\\n-\t$(am__append_2857) $(am__append_2864) $(am__append_2871) \\\n-\t$(am__append_2878) $(am__append_2885) $(am__append_2892) \\\n-\t$(am__append_2899) $(am__append_2906) $(am__append_2913) \\\n-\t$(am__append_2920) $(am__append_2927) $(am__append_2934) \\\n-\t$(am__append_2941) procfs.mod affs.mod afs.mod bfs.mod \\\n+\tsleep.mod $(am__append_2437) $(am__append_2444) terminal.mod \\\n+\ttest.mod true.mod $(am__append_2451) $(am__append_2458) \\\n+\t$(am__append_2465) $(am__append_2472) $(am__append_2479) \\\n+\t$(am__append_2486) $(am__append_2493) $(am__append_2500) \\\n+\t$(am__append_2507) videoinfo.mod videotest.mod xnu_uuid.mod \\\n+\tdm_nv.mod loopback.mod cryptodisk.mod luks.mod geli.mod \\\n+\tlvm.mod ldm.mod mdraid09.mod mdraid09_be.mod mdraid1x.mod \\\n+\tdiskfilter.mod raid5rec.mod raid6rec.mod scsi.mod memdisk.mod \\\n+\t$(am__append_2514) $(am__append_2521) $(am__append_2528) \\\n+\t$(am__append_2535) $(am__append_2542) $(am__append_2549) \\\n+\t$(am__append_2556) $(am__append_2563) $(am__append_2570) \\\n+\t$(am__append_2577) $(am__append_2584) $(am__append_2591) \\\n+\t$(am__append_2598) $(am__append_2605) $(am__append_2612) \\\n+\t$(am__append_2619) $(am__append_2626) $(am__append_2633) \\\n+\t$(am__append_2640) $(am__append_2647) $(am__append_2654) \\\n+\t$(am__append_2661) $(am__append_2668) $(am__append_2675) \\\n+\t$(am__append_2682) $(am__append_2689) $(am__append_2696) \\\n+\t$(am__append_2703) $(am__append_2710) $(am__append_2717) \\\n+\t$(am__append_2724) $(am__append_2731) $(am__append_2738) \\\n+\t$(am__append_2745) $(am__append_2752) $(am__append_2759) \\\n+\t$(am__append_2766) $(am__append_2773) $(am__append_2780) \\\n+\t$(am__append_2787) $(am__append_2794) $(am__append_2801) \\\n+\t$(am__append_2808) $(am__append_2815) $(am__append_2822) \\\n+\t$(am__append_2829) $(am__append_2836) $(am__append_2843) \\\n+\t$(am__append_2850) $(am__append_2857) $(am__append_2864) \\\n+\t$(am__append_2871) $(am__append_2878) $(am__append_2885) \\\n+\t$(am__append_2892) $(am__append_2899) $(am__append_2906) \\\n+\t$(am__append_2913) $(am__append_2920) $(am__append_2927) \\\n+\t$(am__append_2934) procfs.mod affs.mod afs.mod bfs.mod \\\n \tzstd.mod btrfs.mod archelp.mod cbfs.mod cpio.mod cpio_be.mod \\\n \tnewc.mod odc.mod ext2.mod fat.mod exfat.mod f2fs.mod \\\n \tfshelp.mod hfs.mod hfsplus.mod hfspluscomp.mod iso9660.mod \\\n@@ -15571,150 +15549,150 @@ MOD_FILES = disk.mod trig.mod $(am__append_8) $(am__append_15) \\\n \tminix2_be.mod minix3_be.mod nilfs2.mod ntfs.mod ntfscomp.mod \\\n \treiserfs.mod romfs.mod sfs.mod squash4.mod tar.mod udf.mod \\\n \tufs1.mod ufs1_be.mod ufs2.mod xfs.mod zfs.mod zfscrypt.mod \\\n-\tzfsinfo.mod macbless.mod $(am__append_2948) gettext.mod \\\n-\tgfxmenu.mod hello.mod gzio.mod offsetio.mod $(am__append_2955) \\\n-\t$(am__append_2962) $(am__append_2969) $(am__append_2976) \\\n-\t$(am__append_2983) $(am__append_2990) $(am__append_2997) \\\n-\t$(am__append_3004) $(am__append_3011) $(am__append_3018) \\\n-\t$(am__append_3025) $(am__append_3032) $(am__append_3039) \\\n-\t$(am__append_3046) $(am__append_3053) $(am__append_3060) \\\n-\t$(am__append_3067) $(am__append_3074) $(am__append_3081) \\\n-\t$(am__append_3088) elf.mod crypto.mod pbkdf2.mod \\\n-\t$(am__append_3095) $(am__append_3102) $(am__append_3109) \\\n-\t$(am__append_3116) $(am__append_3123) $(am__append_3130) \\\n-\t$(am__append_3137) $(am__append_3144) $(am__append_3151) \\\n-\t$(am__append_3158) $(am__append_3165) $(am__append_3172) \\\n-\t$(am__append_3179) $(am__append_3186) $(am__append_3193) \\\n-\t$(am__append_3200) $(am__append_3207) $(am__append_3214) \\\n-\t$(am__append_3221) $(am__append_3228) $(am__append_3235) \\\n-\t$(am__append_3242) $(am__append_3249) $(am__append_3256) \\\n-\t$(am__append_3263) $(am__append_3270) $(am__append_3277) \\\n-\t$(am__append_3284) $(am__append_3291) $(am__append_3298) \\\n-\t$(am__append_3305) $(am__append_3312) $(am__append_3319) \\\n-\t$(am__append_3326) $(am__append_3333) $(am__append_3340) \\\n-\tsetjmp.mod $(am__append_3347) $(am__append_3354) \\\n-\t$(am__append_3361) $(am__append_3368) $(am__append_3375) \\\n-\t$(am__append_3382) $(am__append_3389) $(am__append_3396) \\\n-\t$(am__append_3403) $(am__append_3410) $(am__append_3417) \\\n-\t$(am__append_3424) $(am__append_3431) $(am__append_3438) \\\n-\t$(am__append_3445) $(am__append_3452) $(am__append_3459) \\\n-\t$(am__append_3466) $(am__append_3473) $(am__append_3480) \\\n-\t$(am__append_3487) $(am__append_3494) $(am__append_3501) \\\n-\t$(am__append_3508) $(am__append_3515) $(am__append_3522) \\\n-\t$(am__append_3529) $(am__append_3536) $(am__append_3543) \\\n-\t$(am__append_3550) $(am__append_3557) $(am__append_3564) \\\n-\t$(am__append_3571) $(am__append_3578) $(am__append_3585) \\\n-\t$(am__append_3592) $(am__append_3599) $(am__append_3606) \\\n-\t$(am__append_3613) $(am__append_3620) $(am__append_3627) \\\n-\t$(am__append_3634) $(am__append_3641) $(am__append_3648) \\\n-\t$(am__append_3655) $(am__append_3662) $(am__append_3669) \\\n-\t$(am__append_3676) $(am__append_3683) $(am__append_3690) \\\n-\t$(am__append_3697) $(am__append_3704) $(am__append_3711) \\\n-\t$(am__append_3718) $(am__append_3725) $(am__append_3732) \\\n-\t$(am__append_3739) $(am__append_3746) $(am__append_3753) \\\n-\t$(am__append_3760) $(am__append_3767) $(am__append_3774) \\\n-\t$(am__append_3781) $(am__append_3788) $(am__append_3795) \\\n-\t$(am__append_3802) $(am__append_3809) $(am__append_3816) \\\n-\t$(am__append_3823) $(am__append_3830) $(am__append_3837) \\\n-\t$(am__append_3844) $(am__append_3851) $(am__append_3858) \\\n-\t$(am__append_3865) $(am__append_3872) $(am__append_3879) \\\n-\t$(am__append_3886) macho.mod $(am__append_3893) \\\n-\t$(am__append_3900) $(am__append_3907) $(am__append_3914) \\\n-\t$(am__append_3921) $(am__append_3928) $(am__append_3935) \\\n-\t$(am__append_3942) $(am__append_3949) $(am__append_3956) \\\n-\t$(am__append_3963) $(am__append_3970) $(am__append_3977) \\\n-\t$(am__append_3984) $(am__append_3991) $(am__append_3998) \\\n-\t$(am__append_4005) $(am__append_4012) $(am__append_4019) \\\n-\t$(am__append_4026) $(am__append_4033) $(am__append_4040) \\\n-\t$(am__append_4047) $(am__append_4054) $(am__append_4061) \\\n-\t$(am__append_4068) $(am__append_4075) normal.mod \\\n+\tzfsinfo.mod macbless.mod $(am__append_2941) gettext.mod \\\n+\tgfxmenu.mod hello.mod gzio.mod offsetio.mod $(am__append_2948) \\\n+\t$(am__append_2955) $(am__append_2962) $(am__append_2969) \\\n+\t$(am__append_2976) $(am__append_2983) $(am__append_2990) \\\n+\t$(am__append_2997) $(am__append_3004) $(am__append_3011) \\\n+\t$(am__append_3018) $(am__append_3025) $(am__append_3032) \\\n+\t$(am__append_3039) $(am__append_3046) $(am__append_3053) \\\n+\t$(am__append_3060) $(am__append_3067) $(am__append_3074) \\\n+\t$(am__append_3081) elf.mod crypto.mod pbkdf2.mod \\\n+\t$(am__append_3088) $(am__append_3095) $(am__append_3102) \\\n+\t$(am__append_3109) $(am__append_3116) $(am__append_3123) \\\n+\t$(am__append_3130) $(am__append_3137) $(am__append_3144) \\\n+\t$(am__append_3151) $(am__append_3158) $(am__append_3165) \\\n+\t$(am__append_3172) $(am__append_3179) $(am__append_3186) \\\n+\t$(am__append_3193) $(am__append_3200) $(am__append_3207) \\\n+\t$(am__append_3214) $(am__append_3221) $(am__append_3228) \\\n+\t$(am__append_3235) $(am__append_3242) $(am__append_3249) \\\n+\t$(am__append_3256) $(am__append_3263) $(am__append_3270) \\\n+\t$(am__append_3277) $(am__append_3284) $(am__append_3291) \\\n+\t$(am__append_3298) $(am__append_3305) $(am__append_3312) \\\n+\t$(am__append_3319) $(am__append_3326) $(am__append_3333) \\\n+\tsetjmp.mod $(am__append_3340) $(am__append_3347) \\\n+\t$(am__append_3354) $(am__append_3361) $(am__append_3368) \\\n+\t$(am__append_3375) $(am__append_3382) $(am__append_3389) \\\n+\t$(am__append_3396) $(am__append_3403) $(am__append_3410) \\\n+\t$(am__append_3417) $(am__append_3424) $(am__append_3431) \\\n+\t$(am__append_3438) $(am__append_3445) $(am__append_3452) \\\n+\t$(am__append_3459) $(am__append_3466) $(am__append_3473) \\\n+\t$(am__append_3480) $(am__append_3487) $(am__append_3494) \\\n+\t$(am__append_3501) $(am__append_3508) $(am__append_3515) \\\n+\t$(am__append_3522) $(am__append_3529) $(am__append_3536) \\\n+\t$(am__append_3543) $(am__append_3550) $(am__append_3557) \\\n+\t$(am__append_3564) $(am__append_3571) $(am__append_3578) \\\n+\t$(am__append_3585) $(am__append_3592) $(am__append_3599) \\\n+\t$(am__append_3606) $(am__append_3613) $(am__append_3620) \\\n+\t$(am__append_3627) $(am__append_3634) $(am__append_3641) \\\n+\t$(am__append_3648) $(am__append_3655) $(am__append_3662) \\\n+\t$(am__append_3669) $(am__append_3676) $(am__append_3683) \\\n+\t$(am__append_3690) $(am__append_3697) $(am__append_3704) \\\n+\t$(am__append_3711) $(am__append_3718) $(am__append_3725) \\\n+\t$(am__append_3732) $(am__append_3739) $(am__append_3746) \\\n+\t$(am__append_3753) $(am__append_3760) $(am__append_3767) \\\n+\t$(am__append_3774) $(am__append_3781) $(am__append_3788) \\\n+\t$(am__append_3795) $(am__append_3802) $(am__append_3809) \\\n+\t$(am__append_3816) $(am__append_3823) $(am__append_3830) \\\n+\t$(am__append_3837) $(am__append_3844) $(am__append_3851) \\\n+\t$(am__append_3858) $(am__append_3865) $(am__append_3872) \\\n+\t$(am__append_3879) macho.mod $(am__append_3886) \\\n+\t$(am__append_3893) $(am__append_3900) $(am__append_3907) \\\n+\t$(am__append_3914) $(am__append_3921) $(am__append_3928) \\\n+\t$(am__append_3935) $(am__append_3942) $(am__append_3949) \\\n+\t$(am__append_3956) $(am__append_3963) $(am__append_3970) \\\n+\t$(am__append_3977) $(am__append_3984) $(am__append_3991) \\\n+\t$(am__append_3998) $(am__append_4005) $(am__append_4012) \\\n+\t$(am__append_4019) $(am__append_4026) $(am__append_4033) \\\n+\t$(am__append_4040) $(am__append_4047) $(am__append_4054) \\\n+\t$(am__append_4061) $(am__append_4068) normal.mod \\\n \tpart_acorn.mod part_amiga.mod part_apple.mod part_gpt.mod \\\n \tpart_msdos.mod part_sun.mod part_plan.mod part_dvh.mod \\\n \tpart_bsd.mod part_sunpc.mod part_dfly.mod msdospart.mod \\\n-\t$(am__append_4082) $(am__append_4089) $(am__append_4096) \\\n-\t$(am__append_4103) $(am__append_4110) $(am__append_4117) \\\n-\t$(am__append_4124) $(am__append_4131) $(am__append_4138) \\\n-\t$(am__append_4145) $(am__append_4152) $(am__append_4159) \\\n-\t$(am__append_4166) $(am__append_4173) $(am__append_4180) \\\n-\t$(am__append_4187) $(am__append_4194) $(am__append_4201) \\\n-\t$(am__append_4208) $(am__append_4215) $(am__append_4222) \\\n-\t$(am__append_4229) $(am__append_4236) $(am__append_4243) \\\n-\t$(am__append_4250) $(am__append_4257) $(am__append_4264) \\\n-\tgfxterm_background.mod $(am__append_4271) $(am__append_4278) \\\n-\t$(am__append_4285) $(am__append_4292) $(am__append_4299) \\\n-\t$(am__append_4306) $(am__append_4313) $(am__append_4320) \\\n-\t$(am__append_4327) $(am__append_4334) $(am__append_4341) \\\n-\t$(am__append_4348) $(am__append_4355) $(am__append_4362) \\\n-\t$(am__append_4369) $(am__append_4376) $(am__append_4383) \\\n-\t$(am__append_4390) $(am__append_4397) $(am__append_4404) \\\n-\t$(am__append_4411) $(am__append_4418) $(am__append_4425) \\\n-\t$(am__append_4432) $(am__append_4439) $(am__append_4446) \\\n-\t$(am__append_4453) $(am__append_4460) $(am__append_4467) \\\n-\t$(am__append_4474) $(am__append_4481) $(am__append_4488) \\\n-\t$(am__append_4495) $(am__append_4502) $(am__append_4509) \\\n-\t$(am__append_4516) $(am__append_4523) $(am__append_4530) \\\n-\t$(am__append_4537) $(am__append_4544) $(am__append_4551) \\\n-\t$(am__append_4558) $(am__append_4565) $(am__append_4572) \\\n-\t$(am__append_4579) $(am__append_4586) $(am__append_4593) \\\n-\t$(am__append_4600) $(am__append_4607) $(am__append_4614) \\\n-\t$(am__append_4621) $(am__append_4628) $(am__append_4635) \\\n-\t$(am__append_4642) $(am__append_4649) functional_test.mod \\\n+\t$(am__append_4075) $(am__append_4082) $(am__append_4089) \\\n+\t$(am__append_4096) $(am__append_4103) $(am__append_4110) \\\n+\t$(am__append_4117) $(am__append_4124) $(am__append_4131) \\\n+\t$(am__append_4138) $(am__append_4145) $(am__append_4152) \\\n+\t$(am__append_4159) $(am__append_4166) $(am__append_4173) \\\n+\t$(am__append_4180) $(am__append_4187) $(am__append_4194) \\\n+\t$(am__append_4201) $(am__append_4208) $(am__append_4215) \\\n+\t$(am__append_4222) $(am__append_4229) $(am__append_4236) \\\n+\t$(am__append_4243) $(am__append_4250) $(am__append_4257) \\\n+\tgfxterm_background.mod $(am__append_4264) $(am__append_4271) \\\n+\t$(am__append_4278) $(am__append_4285) $(am__append_4292) \\\n+\t$(am__append_4299) $(am__append_4306) $(am__append_4313) \\\n+\t$(am__append_4320) $(am__append_4327) $(am__append_4334) \\\n+\t$(am__append_4341) $(am__append_4348) $(am__append_4355) \\\n+\t$(am__append_4362) $(am__append_4369) $(am__append_4376) \\\n+\t$(am__append_4383) $(am__append_4390) $(am__append_4397) \\\n+\t$(am__append_4404) $(am__append_4411) $(am__append_4418) \\\n+\t$(am__append_4425) $(am__append_4432) $(am__append_4439) \\\n+\t$(am__append_4446) $(am__append_4453) $(am__append_4460) \\\n+\t$(am__append_4467) $(am__append_4474) $(am__append_4481) \\\n+\t$(am__append_4488) $(am__append_4495) $(am__append_4502) \\\n+\t$(am__append_4509) $(am__append_4516) $(am__append_4523) \\\n+\t$(am__append_4530) $(am__append_4537) $(am__append_4544) \\\n+\t$(am__append_4551) $(am__append_4558) $(am__append_4565) \\\n+\t$(am__append_4572) $(am__append_4579) $(am__append_4586) \\\n+\t$(am__append_4593) $(am__append_4600) $(am__append_4607) \\\n+\t$(am__append_4614) $(am__append_4621) $(am__append_4628) \\\n+\t$(am__append_4635) $(am__append_4642) functional_test.mod \\\n \texfctest.mod strtoull_test.mod setjmp_test.mod \\\n \tsignature_test.mod sleep_test.mod xnu_uuid_test.mod \\\n-\tpbkdf2_test.mod $(am__append_4656) $(am__append_4663) \\\n-\t$(am__append_4670) $(am__append_4677) $(am__append_4684) \\\n-\t$(am__append_4691) $(am__append_4698) $(am__append_4705) \\\n-\t$(am__append_4712) $(am__append_4719) $(am__append_4726) \\\n-\t$(am__append_4733) $(am__append_4740) $(am__append_4747) \\\n-\t$(am__append_4754) $(am__append_4761) $(am__append_4768) \\\n-\t$(am__append_4775) $(am__append_4782) $(am__append_4789) \\\n-\t$(am__append_4796) $(am__append_4803) $(am__append_4810) \\\n-\t$(am__append_4817) $(am__append_4824) div_test.mod \\\n+\tpbkdf2_test.mod $(am__append_4649) $(am__append_4656) \\\n+\t$(am__append_4663) $(am__append_4670) $(am__append_4677) \\\n+\t$(am__append_4684) $(am__append_4691) $(am__append_4698) \\\n+\t$(am__append_4705) $(am__append_4712) $(am__append_4719) \\\n+\t$(am__append_4726) $(am__append_4733) $(am__append_4740) \\\n+\t$(am__append_4747) $(am__append_4754) $(am__append_4761) \\\n+\t$(am__append_4768) $(am__append_4775) $(am__append_4782) \\\n+\t$(am__append_4789) $(am__append_4796) $(am__append_4803) \\\n+\t$(am__append_4810) $(am__append_4817) div_test.mod \\\n \tmul_test.mod shift_test.mod cmp_test.mod ctz_test.mod \\\n \tbswap_test.mod videotest_checksum.mod gfxterm_menu.mod \\\n \tcmdline_cat_test.mod bitmap.mod bitmap_scale.mod \\\n-\t$(am__append_4831) $(am__append_4838) $(am__append_4845) \\\n-\t$(am__append_4852) $(am__append_4859) $(am__append_4866) \\\n-\t$(am__append_4873) $(am__append_4880) $(am__append_4887) \\\n-\tjpeg.mod png.mod tga.mod $(am__append_4894) $(am__append_4901) \\\n-\t$(am__append_4908) $(am__append_4915) $(am__append_4922) \\\n-\t$(am__append_4929) $(am__append_4936) $(am__append_4943) \\\n-\t$(am__append_4950) $(am__append_4957) $(am__append_4964) \\\n-\t$(am__append_4971) $(am__append_4978) $(am__append_4985) \\\n-\t$(am__append_4992) $(am__append_4999) $(am__append_5006) \\\n-\t$(am__append_5013) $(am__append_5020) $(am__append_5027) \\\n-\t$(am__append_5034) $(am__append_5041) $(am__append_5048) \\\n-\t$(am__append_5055) $(am__append_5062) $(am__append_5069) \\\n-\t$(am__append_5076) $(am__append_5083) $(am__append_5090) \\\n-\t$(am__append_5097) $(am__append_5104) $(am__append_5111) \\\n-\t$(am__append_5118) $(am__append_5125) $(am__append_5132) \\\n-\t$(am__append_5139) $(am__append_5146) $(am__append_5153) \\\n-\t$(am__append_5160) $(am__append_5167) $(am__append_5174) \\\n-\tvideo_colors.mod $(am__append_5181) $(am__append_5188) \\\n-\tdatehook.mod net.mod tftp.mod http.mod $(am__append_5195) \\\n-\t$(am__append_5202) $(am__append_5209) $(am__append_5216) \\\n-\t$(am__append_5223) $(am__append_5230) $(am__append_5237) \\\n-\t$(am__append_5244) $(am__append_5251) $(am__append_5258) \\\n-\t$(am__append_5265) $(am__append_5272) $(am__append_5279) \\\n-\t$(am__append_5286) $(am__append_5293) $(am__append_5300) \\\n-\t$(am__append_5307) $(am__append_5314) syslinuxcfg.mod \\\n+\t$(am__append_4824) $(am__append_4831) $(am__append_4838) \\\n+\t$(am__append_4845) $(am__append_4852) $(am__append_4859) \\\n+\t$(am__append_4866) $(am__append_4873) $(am__append_4880) \\\n+\tjpeg.mod png.mod tga.mod $(am__append_4887) $(am__append_4894) \\\n+\t$(am__append_4901) $(am__append_4908) $(am__append_4915) \\\n+\t$(am__append_4922) $(am__append_4929) $(am__append_4936) \\\n+\t$(am__append_4943) $(am__append_4950) $(am__append_4957) \\\n+\t$(am__append_4964) $(am__append_4971) $(am__append_4978) \\\n+\t$(am__append_4985) $(am__append_4992) $(am__append_4999) \\\n+\t$(am__append_5006) $(am__append_5013) $(am__append_5020) \\\n+\t$(am__append_5027) $(am__append_5034) $(am__append_5041) \\\n+\t$(am__append_5048) $(am__append_5055) $(am__append_5062) \\\n+\t$(am__append_5069) $(am__append_5076) $(am__append_5083) \\\n+\t$(am__append_5090) $(am__append_5097) $(am__append_5104) \\\n+\t$(am__append_5111) $(am__append_5118) $(am__append_5125) \\\n+\t$(am__append_5132) $(am__append_5139) $(am__append_5146) \\\n+\t$(am__append_5153) $(am__append_5160) $(am__append_5167) \\\n+\tvideo_colors.mod $(am__append_5174) $(am__append_5181) \\\n+\tdatehook.mod net.mod tftp.mod http.mod $(am__append_5188) \\\n+\t$(am__append_5195) $(am__append_5202) $(am__append_5209) \\\n+\t$(am__append_5216) $(am__append_5223) $(am__append_5230) \\\n+\t$(am__append_5237) $(am__append_5244) $(am__append_5251) \\\n+\t$(am__append_5258) $(am__append_5265) $(am__append_5272) \\\n+\t$(am__append_5279) $(am__append_5286) $(am__append_5293) \\\n+\t$(am__append_5300) $(am__append_5307) syslinuxcfg.mod \\\n \ttest_blockarg.mod xzio.mod lzopio.mod testload.mod \\\n-\t$(am__append_5321) $(am__append_5328) $(am__append_5335) \\\n-\t$(am__append_5342) $(am__append_5349) $(am__append_5356) \\\n-\t$(am__append_5363) $(am__append_5370) $(am__append_5377) \\\n-\t$(am__append_5384) $(am__append_5391) $(am__append_5398) \\\n-\t$(am__append_5405) $(am__append_5412) $(am__append_5419) \\\n-\t$(am__append_5426) $(am__append_5433) priority_queue.mod \\\n-\ttime.mod $(am__append_5440) $(am__append_5447) adler32.mod \\\n-\tcrc64.mod mpi.mod all_video.mod $(am__append_5454) \\\n-\t$(am__append_5461) $(am__append_5468) $(am__append_5475) \\\n-\t$(am__append_5482) $(am__append_5489) testspeed.mod \\\n-\t$(am__append_5496) tr.mod progress.mod file.mod \\\n-\t$(am__append_5503) $(am__append_5510) $(am__append_5517) \\\n-\t$(am__append_5524) $(am__append_5531) $(am__append_5538) \\\n-\t$(am__append_5545) $(am__append_5552) $(am__append_5559) \\\n-\t$(am__append_5566) $(am__append_5573) $(am__append_5580) \\\n-\t$(am__append_5587) $(am__append_5594) gcry_arcfour.mod \\\n+\t$(am__append_5314) $(am__append_5321) $(am__append_5328) \\\n+\t$(am__append_5335) $(am__append_5342) $(am__append_5349) \\\n+\t$(am__append_5356) $(am__append_5363) $(am__append_5370) \\\n+\t$(am__append_5377) $(am__append_5384) $(am__append_5391) \\\n+\t$(am__append_5398) $(am__append_5405) $(am__append_5412) \\\n+\t$(am__append_5419) $(am__append_5426) priority_queue.mod \\\n+\ttime.mod $(am__append_5433) $(am__append_5440) adler32.mod \\\n+\tcrc64.mod mpi.mod all_video.mod $(am__append_5447) \\\n+\t$(am__append_5454) $(am__append_5461) $(am__append_5468) \\\n+\t$(am__append_5475) $(am__append_5482) testspeed.mod \\\n+\t$(am__append_5489) tr.mod progress.mod file.mod \\\n+\t$(am__append_5496) $(am__append_5503) $(am__append_5510) \\\n+\t$(am__append_5517) $(am__append_5524) $(am__append_5531) \\\n+\t$(am__append_5538) $(am__append_5545) $(am__append_5552) \\\n+\t$(am__append_5559) $(am__append_5566) $(am__append_5573) \\\n+\t$(am__append_5580) $(am__append_5587) gcry_arcfour.mod \\\n \tgcry_blowfish.mod gcry_camellia.mod gcry_cast5.mod \\\n \tgcry_crc.mod gcry_des.mod gcry_dsa.mod gcry_idea.mod \\\n \tgcry_md4.mod gcry_md5.mod gcry_rfc2268.mod gcry_rijndael.mod \\\n@@ -15826,72 +15804,71 @@ MODULE_FILES = disk.module$(EXEEXT) trig.module$(EXEEXT) \\\n \thashsum.module$(EXEEXT) pgp.module$(EXEEXT) $(am__append_2041) \\\n \t$(am__append_2048) $(am__append_2055) $(am__append_2062) \\\n \t$(am__append_2069) $(am__append_2076) $(am__append_2083) \\\n-\t$(am__append_2090) $(am__append_2097) $(am__append_2104) \\\n-\thelp.module$(EXEEXT) hexdump.module$(EXEEXT) \\\n-\tkeystatus.module$(EXEEXT) $(am__append_2111) \\\n-\t$(am__append_2118) loadenv.module$(EXEEXT) ls.module$(EXEEXT) \\\n-\tlsmmap.module$(EXEEXT) $(am__append_2125) $(am__append_2132) \\\n-\t$(am__append_2139) $(am__append_2146) $(am__append_2153) \\\n-\t$(am__append_2160) $(am__append_2167) $(am__append_2174) \\\n-\tmemrw.module$(EXEEXT) minicmd.module$(EXEEXT) \\\n-\tparttool.module$(EXEEXT) password.module$(EXEEXT) \\\n-\tpassword_pbkdf2.module$(EXEEXT) $(am__append_2181) \\\n-\t$(am__append_2188) $(am__append_2195) $(am__append_2202) \\\n-\t$(am__append_2209) $(am__append_2216) $(am__append_2223) \\\n-\t$(am__append_2230) $(am__append_2237) $(am__append_2244) \\\n-\t$(am__append_2251) $(am__append_2258) $(am__append_2265) \\\n-\t$(am__append_2272) $(am__append_2279) $(am__append_2286) \\\n-\t$(am__append_2293) $(am__append_2300) $(am__append_2307) \\\n-\t$(am__append_2314) $(am__append_2321) probe.module$(EXEEXT) \\\n-\tread.module$(EXEEXT) search.module$(EXEEXT) \\\n-\tsearch_fs_file.module$(EXEEXT) search_fs_uuid.module$(EXEEXT) \\\n-\tsearch_label.module$(EXEEXT) $(am__append_2328) \\\n-\t$(am__append_2335) $(am__append_2342) $(am__append_2349) \\\n-\t$(am__append_2356) $(am__append_2363) $(am__append_2370) \\\n-\t$(am__append_2377) $(am__append_2384) $(am__append_2391) \\\n-\t$(am__append_2398) $(am__append_2405) $(am__append_2412) \\\n-\t$(am__append_2419) $(am__append_2426) $(am__append_2433) \\\n-\tsleep.module$(EXEEXT) $(am__append_2440) $(am__append_2447) \\\n-\tterminal.module$(EXEEXT) test.module$(EXEEXT) \\\n-\ttrue.module$(EXEEXT) $(am__append_2454) $(am__append_2461) \\\n-\t$(am__append_2468) $(am__append_2475) $(am__append_2482) \\\n-\t$(am__append_2489) $(am__append_2496) $(am__append_2503) \\\n-\t$(am__append_2510) videoinfo.module$(EXEEXT) \\\n-\tvideotest.module$(EXEEXT) xnu_uuid.module$(EXEEXT) \\\n-\tdm_nv.module$(EXEEXT) loopback.module$(EXEEXT) \\\n-\tcryptodisk.module$(EXEEXT) luks.module$(EXEEXT) \\\n-\tgeli.module$(EXEEXT) lvm.module$(EXEEXT) ldm.module$(EXEEXT) \\\n-\tmdraid09.module$(EXEEXT) mdraid09_be.module$(EXEEXT) \\\n-\tmdraid1x.module$(EXEEXT) diskfilter.module$(EXEEXT) \\\n-\traid5rec.module$(EXEEXT) raid6rec.module$(EXEEXT) \\\n-\tscsi.module$(EXEEXT) memdisk.module$(EXEEXT) \\\n-\t$(am__append_2517) $(am__append_2524) $(am__append_2531) \\\n-\t$(am__append_2538) $(am__append_2545) $(am__append_2552) \\\n-\t$(am__append_2559) $(am__append_2566) $(am__append_2573) \\\n-\t$(am__append_2580) $(am__append_2587) $(am__append_2594) \\\n-\t$(am__append_2601) $(am__append_2608) $(am__append_2615) \\\n-\t$(am__append_2622) $(am__append_2629) $(am__append_2636) \\\n-\t$(am__append_2643) $(am__append_2650) $(am__append_2657) \\\n-\t$(am__append_2664) $(am__append_2671) $(am__append_2678) \\\n-\t$(am__append_2685) $(am__append_2692) $(am__append_2699) \\\n-\t$(am__append_2706) $(am__append_2713) $(am__append_2720) \\\n-\t$(am__append_2727) $(am__append_2734) $(am__append_2741) \\\n-\t$(am__append_2748) $(am__append_2755) $(am__append_2762) \\\n-\t$(am__append_2769) $(am__append_2776) $(am__append_2783) \\\n-\t$(am__append_2790) $(am__append_2797) $(am__append_2804) \\\n-\t$(am__append_2811) $(am__append_2818) $(am__append_2825) \\\n-\t$(am__append_2832) $(am__append_2839) $(am__append_2846) \\\n-\t$(am__append_2853) $(am__append_2860) $(am__append_2867) \\\n-\t$(am__append_2874) $(am__append_2881) $(am__append_2888) \\\n-\t$(am__append_2895) $(am__append_2902) $(am__append_2909) \\\n-\t$(am__append_2916) $(am__append_2923) $(am__append_2930) \\\n-\t$(am__append_2937) procfs.module$(EXEEXT) affs.module$(EXEEXT) \\\n-\tafs.module$(EXEEXT) bfs.module$(EXEEXT) zstd.module$(EXEEXT) \\\n-\tbtrfs.module$(EXEEXT) archelp.module$(EXEEXT) \\\n-\tcbfs.module$(EXEEXT) cpio.module$(EXEEXT) \\\n-\tcpio_be.module$(EXEEXT) newc.module$(EXEEXT) \\\n-\todc.module$(EXEEXT) ext2.module$(EXEEXT) fat.module$(EXEEXT) \\\n-\texfat.module$(EXEEXT) f2fs.module$(EXEEXT) \\\n+\t$(am__append_2090) $(am__append_2097) help.module$(EXEEXT) \\\n+\thexdump.module$(EXEEXT) keystatus.module$(EXEEXT) \\\n+\t$(am__append_2104) $(am__append_2111) loadenv.module$(EXEEXT) \\\n+\tls.module$(EXEEXT) lsmmap.module$(EXEEXT) $(am__append_2118) \\\n+\t$(am__append_2125) $(am__append_2132) $(am__append_2139) \\\n+\t$(am__append_2146) $(am__append_2153) $(am__append_2160) \\\n+\t$(am__append_2167) memrw.module$(EXEEXT) \\\n+\tminicmd.module$(EXEEXT) parttool.module$(EXEEXT) \\\n+\tpassword.module$(EXEEXT) password_pbkdf2.module$(EXEEXT) \\\n+\t$(am__append_2174) $(am__append_2181) $(am__append_2188) \\\n+\t$(am__append_2195) $(am__append_2202) $(am__append_2209) \\\n+\t$(am__append_2216) $(am__append_2223) $(am__append_2230) \\\n+\t$(am__append_2237) $(am__append_2244) $(am__append_2251) \\\n+\t$(am__append_2258) $(am__append_2265) $(am__append_2272) \\\n+\t$(am__append_2279) $(am__append_2286) $(am__append_2293) \\\n+\t$(am__append_2300) $(am__append_2307) $(am__append_2314) \\\n+\tprobe.module$(EXEEXT) read.module$(EXEEXT) \\\n+\tsearch.module$(EXEEXT) search_fs_file.module$(EXEEXT) \\\n+\tsearch_fs_uuid.module$(EXEEXT) search_label.module$(EXEEXT) \\\n+\t$(am__append_2321) $(am__append_2328) $(am__append_2335) \\\n+\t$(am__append_2342) $(am__append_2349) $(am__append_2356) \\\n+\t$(am__append_2363) $(am__append_2370) $(am__append_2377) \\\n+\t$(am__append_2384) $(am__append_2391) $(am__append_2398) \\\n+\t$(am__append_2405) $(am__append_2412) $(am__append_2419) \\\n+\t$(am__append_2426) sleep.module$(EXEEXT) $(am__append_2433) \\\n+\t$(am__append_2440) terminal.module$(EXEEXT) \\\n+\ttest.module$(EXEEXT) true.module$(EXEEXT) $(am__append_2447) \\\n+\t$(am__append_2454) $(am__append_2461) $(am__append_2468) \\\n+\t$(am__append_2475) $(am__append_2482) $(am__append_2489) \\\n+\t$(am__append_2496) $(am__append_2503) \\\n+\tvideoinfo.module$(EXEEXT) videotest.module$(EXEEXT) \\\n+\txnu_uuid.module$(EXEEXT) dm_nv.module$(EXEEXT) \\\n+\tloopback.module$(EXEEXT) cryptodisk.module$(EXEEXT) \\\n+\tluks.module$(EXEEXT) geli.module$(EXEEXT) lvm.module$(EXEEXT) \\\n+\tldm.module$(EXEEXT) mdraid09.module$(EXEEXT) \\\n+\tmdraid09_be.module$(EXEEXT) mdraid1x.module$(EXEEXT) \\\n+\tdiskfilter.module$(EXEEXT) raid5rec.module$(EXEEXT) \\\n+\traid6rec.module$(EXEEXT) scsi.module$(EXEEXT) \\\n+\tmemdisk.module$(EXEEXT) $(am__append_2510) $(am__append_2517) \\\n+\t$(am__append_2524) $(am__append_2531) $(am__append_2538) \\\n+\t$(am__append_2545) $(am__append_2552) $(am__append_2559) \\\n+\t$(am__append_2566) $(am__append_2573) $(am__append_2580) \\\n+\t$(am__append_2587) $(am__append_2594) $(am__append_2601) \\\n+\t$(am__append_2608) $(am__append_2615) $(am__append_2622) \\\n+\t$(am__append_2629) $(am__append_2636) $(am__append_2643) \\\n+\t$(am__append_2650) $(am__append_2657) $(am__append_2664) \\\n+\t$(am__append_2671) $(am__append_2678) $(am__append_2685) \\\n+\t$(am__append_2692) $(am__append_2699) $(am__append_2706) \\\n+\t$(am__append_2713) $(am__append_2720) $(am__append_2727) \\\n+\t$(am__append_2734) $(am__append_2741) $(am__append_2748) \\\n+\t$(am__append_2755) $(am__append_2762) $(am__append_2769) \\\n+\t$(am__append_2776) $(am__append_2783) $(am__append_2790) \\\n+\t$(am__append_2797) $(am__append_2804) $(am__append_2811) \\\n+\t$(am__append_2818) $(am__append_2825) $(am__append_2832) \\\n+\t$(am__append_2839) $(am__append_2846) $(am__append_2853) \\\n+\t$(am__append_2860) $(am__append_2867) $(am__append_2874) \\\n+\t$(am__append_2881) $(am__append_2888) $(am__append_2895) \\\n+\t$(am__append_2902) $(am__append_2909) $(am__append_2916) \\\n+\t$(am__append_2923) $(am__append_2930) procfs.module$(EXEEXT) \\\n+\taffs.module$(EXEEXT) afs.module$(EXEEXT) bfs.module$(EXEEXT) \\\n+\tzstd.module$(EXEEXT) btrfs.module$(EXEEXT) \\\n+\tarchelp.module$(EXEEXT) cbfs.module$(EXEEXT) \\\n+\tcpio.module$(EXEEXT) cpio_be.module$(EXEEXT) \\\n+\tnewc.module$(EXEEXT) odc.module$(EXEEXT) ext2.module$(EXEEXT) \\\n+\tfat.module$(EXEEXT) exfat.module$(EXEEXT) f2fs.module$(EXEEXT) \\\n \tfshelp.module$(EXEEXT) hfs.module$(EXEEXT) \\\n \thfsplus.module$(EXEEXT) hfspluscomp.module$(EXEEXT) \\\n \tiso9660.module$(EXEEXT) jfs.module$(EXEEXT) \\\n@@ -15906,166 +15883,166 @@ MODULE_FILES = disk.module$(EXEEXT) trig.module$(EXEEXT) \\\n \tufs1_be.module$(EXEEXT) ufs2.module$(EXEEXT) \\\n \txfs.module$(EXEEXT) zfs.module$(EXEEXT) \\\n \tzfscrypt.module$(EXEEXT) zfsinfo.module$(EXEEXT) \\\n-\tmacbless.module$(EXEEXT) $(am__append_2944) \\\n+\tmacbless.module$(EXEEXT) $(am__append_2937) \\\n \tgettext.module$(EXEEXT) gfxmenu.module$(EXEEXT) \\\n \thello.module$(EXEEXT) gzio.module$(EXEEXT) \\\n-\toffsetio.module$(EXEEXT) $(am__append_2951) $(am__append_2958) \\\n-\t$(am__append_2965) $(am__append_2972) $(am__append_2979) \\\n-\t$(am__append_2986) $(am__append_2993) $(am__append_3000) \\\n-\t$(am__append_3007) $(am__append_3014) $(am__append_3021) \\\n-\t$(am__append_3028) $(am__append_3035) $(am__append_3042) \\\n-\t$(am__append_3049) $(am__append_3056) $(am__append_3063) \\\n-\t$(am__append_3070) $(am__append_3077) $(am__append_3084) \\\n+\toffsetio.module$(EXEEXT) $(am__append_2944) $(am__append_2951) \\\n+\t$(am__append_2958) $(am__append_2965) $(am__append_2972) \\\n+\t$(am__append_2979) $(am__append_2986) $(am__append_2993) \\\n+\t$(am__append_3000) $(am__append_3007) $(am__append_3014) \\\n+\t$(am__append_3021) $(am__append_3028) $(am__append_3035) \\\n+\t$(am__append_3042) $(am__append_3049) $(am__append_3056) \\\n+\t$(am__append_3063) $(am__append_3070) $(am__append_3077) \\\n \telf.module$(EXEEXT) crypto.module$(EXEEXT) \\\n-\tpbkdf2.module$(EXEEXT) $(am__append_3091) $(am__append_3098) \\\n-\t$(am__append_3105) $(am__append_3112) $(am__append_3119) \\\n-\t$(am__append_3126) $(am__append_3133) $(am__append_3140) \\\n-\t$(am__append_3147) $(am__append_3154) $(am__append_3161) \\\n-\t$(am__append_3168) $(am__append_3175) $(am__append_3182) \\\n-\t$(am__append_3189) $(am__append_3196) $(am__append_3203) \\\n-\t$(am__append_3210) $(am__append_3217) $(am__append_3224) \\\n-\t$(am__append_3231) $(am__append_3238) $(am__append_3245) \\\n-\t$(am__append_3252) $(am__append_3259) $(am__append_3266) \\\n-\t$(am__append_3273) $(am__append_3280) $(am__append_3287) \\\n-\t$(am__append_3294) $(am__append_3301) $(am__append_3308) \\\n-\t$(am__append_3315) $(am__append_3322) $(am__append_3329) \\\n-\t$(am__append_3336) setjmp.module$(EXEEXT) $(am__append_3343) \\\n-\t$(am__append_3350) $(am__append_3357) $(am__append_3364) \\\n-\t$(am__append_3371) $(am__append_3378) $(am__append_3385) \\\n-\t$(am__append_3392) $(am__append_3399) $(am__append_3406) \\\n-\t$(am__append_3413) $(am__append_3420) $(am__append_3427) \\\n-\t$(am__append_3434) $(am__append_3441) $(am__append_3448) \\\n-\t$(am__append_3455) $(am__append_3462) $(am__append_3469) \\\n-\t$(am__append_3476) $(am__append_3483) $(am__append_3490) \\\n-\t$(am__append_3497) $(am__append_3504) $(am__append_3511) \\\n-\t$(am__append_3518) $(am__append_3525) $(am__append_3532) \\\n-\t$(am__append_3539) $(am__append_3546) $(am__append_3553) \\\n-\t$(am__append_3560) $(am__append_3567) $(am__append_3574) \\\n-\t$(am__append_3581) $(am__append_3588) $(am__append_3595) \\\n-\t$(am__append_3602) $(am__append_3609) $(am__append_3616) \\\n-\t$(am__append_3623) $(am__append_3630) $(am__append_3637) \\\n-\t$(am__append_3644) $(am__append_3651) $(am__append_3658) \\\n-\t$(am__append_3665) $(am__append_3672) $(am__append_3679) \\\n-\t$(am__append_3686) $(am__append_3693) $(am__append_3700) \\\n-\t$(am__append_3707) $(am__append_3714) $(am__append_3721) \\\n-\t$(am__append_3728) $(am__append_3735) $(am__append_3742) \\\n-\t$(am__append_3749) $(am__append_3756) $(am__append_3763) \\\n-\t$(am__append_3770) $(am__append_3777) $(am__append_3784) \\\n-\t$(am__append_3791) $(am__append_3798) $(am__append_3805) \\\n-\t$(am__append_3812) $(am__append_3819) $(am__append_3826) \\\n-\t$(am__append_3833) $(am__append_3840) $(am__append_3847) \\\n-\t$(am__append_3854) $(am__append_3861) $(am__append_3868) \\\n-\t$(am__append_3875) $(am__append_3882) macho.module$(EXEEXT) \\\n-\t$(am__append_3889) $(am__append_3896) $(am__append_3903) \\\n-\t$(am__append_3910) $(am__append_3917) $(am__append_3924) \\\n-\t$(am__append_3931) $(am__append_3938) $(am__append_3945) \\\n-\t$(am__append_3952) $(am__append_3959) $(am__append_3966) \\\n-\t$(am__append_3973) $(am__append_3980) $(am__append_3987) \\\n-\t$(am__append_3994) $(am__append_4001) $(am__append_4008) \\\n-\t$(am__append_4015) $(am__append_4022) $(am__append_4029) \\\n-\t$(am__append_4036) $(am__append_4043) $(am__append_4050) \\\n-\t$(am__append_4057) $(am__append_4064) $(am__append_4071) \\\n+\tpbkdf2.module$(EXEEXT) $(am__append_3084) $(am__append_3091) \\\n+\t$(am__append_3098) $(am__append_3105) $(am__append_3112) \\\n+\t$(am__append_3119) $(am__append_3126) $(am__append_3133) \\\n+\t$(am__append_3140) $(am__append_3147) $(am__append_3154) \\\n+\t$(am__append_3161) $(am__append_3168) $(am__append_3175) \\\n+\t$(am__append_3182) $(am__append_3189) $(am__append_3196) \\\n+\t$(am__append_3203) $(am__append_3210) $(am__append_3217) \\\n+\t$(am__append_3224) $(am__append_3231) $(am__append_3238) \\\n+\t$(am__append_3245) $(am__append_3252) $(am__append_3259) \\\n+\t$(am__append_3266) $(am__append_3273) $(am__append_3280) \\\n+\t$(am__append_3287) $(am__append_3294) $(am__append_3301) \\\n+\t$(am__append_3308) $(am__append_3315) $(am__append_3322) \\\n+\t$(am__append_3329) setjmp.module$(EXEEXT) $(am__append_3336) \\\n+\t$(am__append_3343) $(am__append_3350) $(am__append_3357) \\\n+\t$(am__append_3364) $(am__append_3371) $(am__append_3378) \\\n+\t$(am__append_3385) $(am__append_3392) $(am__append_3399) \\\n+\t$(am__append_3406) $(am__append_3413) $(am__append_3420) \\\n+\t$(am__append_3427) $(am__append_3434) $(am__append_3441) \\\n+\t$(am__append_3448) $(am__append_3455) $(am__append_3462) \\\n+\t$(am__append_3469) $(am__append_3476) $(am__append_3483) \\\n+\t$(am__append_3490) $(am__append_3497) $(am__append_3504) \\\n+\t$(am__append_3511) $(am__append_3518) $(am__append_3525) \\\n+\t$(am__append_3532) $(am__append_3539) $(am__append_3546) \\\n+\t$(am__append_3553) $(am__append_3560) $(am__append_3567) \\\n+\t$(am__append_3574) $(am__append_3581) $(am__append_3588) \\\n+\t$(am__append_3595) $(am__append_3602) $(am__append_3609) \\\n+\t$(am__append_3616) $(am__append_3623) $(am__append_3630) \\\n+\t$(am__append_3637) $(am__append_3644) $(am__append_3651) \\\n+\t$(am__append_3658) $(am__append_3665) $(am__append_3672) \\\n+\t$(am__append_3679) $(am__append_3686) $(am__append_3693) \\\n+\t$(am__append_3700) $(am__append_3707) $(am__append_3714) \\\n+\t$(am__append_3721) $(am__append_3728) $(am__append_3735) \\\n+\t$(am__append_3742) $(am__append_3749) $(am__append_3756) \\\n+\t$(am__append_3763) $(am__append_3770) $(am__append_3777) \\\n+\t$(am__append_3784) $(am__append_3791) $(am__append_3798) \\\n+\t$(am__append_3805) $(am__append_3812) $(am__append_3819) \\\n+\t$(am__append_3826) $(am__append_3833) $(am__append_3840) \\\n+\t$(am__append_3847) $(am__append_3854) $(am__append_3861) \\\n+\t$(am__append_3868) $(am__append_3875) macho.module$(EXEEXT) \\\n+\t$(am__append_3882) $(am__append_3889) $(am__append_3896) \\\n+\t$(am__append_3903) $(am__append_3910) $(am__append_3917) \\\n+\t$(am__append_3924) $(am__append_3931) $(am__append_3938) \\\n+\t$(am__append_3945) $(am__append_3952) $(am__append_3959) \\\n+\t$(am__append_3966) $(am__append_3973) $(am__append_3980) \\\n+\t$(am__append_3987) $(am__append_3994) $(am__append_4001) \\\n+\t$(am__append_4008) $(am__append_4015) $(am__append_4022) \\\n+\t$(am__append_4029) $(am__append_4036) $(am__append_4043) \\\n+\t$(am__append_4050) $(am__append_4057) $(am__append_4064) \\\n \tnormal.module$(EXEEXT) part_acorn.module$(EXEEXT) \\\n \tpart_amiga.module$(EXEEXT) part_apple.module$(EXEEXT) \\\n \tpart_gpt.module$(EXEEXT) part_msdos.module$(EXEEXT) \\\n \tpart_sun.module$(EXEEXT) part_plan.module$(EXEEXT) \\\n \tpart_dvh.module$(EXEEXT) part_bsd.module$(EXEEXT) \\\n \tpart_sunpc.module$(EXEEXT) part_dfly.module$(EXEEXT) \\\n-\tmsdospart.module$(EXEEXT) $(am__append_4078) \\\n-\t$(am__append_4085) $(am__append_4092) $(am__append_4099) \\\n-\t$(am__append_4106) $(am__append_4113) $(am__append_4120) \\\n-\t$(am__append_4127) $(am__append_4134) $(am__append_4141) \\\n-\t$(am__append_4148) $(am__append_4155) $(am__append_4162) \\\n-\t$(am__append_4169) $(am__append_4176) $(am__append_4183) \\\n-\t$(am__append_4190) $(am__append_4197) $(am__append_4204) \\\n-\t$(am__append_4211) $(am__append_4218) $(am__append_4225) \\\n-\t$(am__append_4232) $(am__append_4239) $(am__append_4246) \\\n-\t$(am__append_4253) $(am__append_4260) \\\n-\tgfxterm_background.module$(EXEEXT) $(am__append_4267) \\\n-\t$(am__append_4274) $(am__append_4281) $(am__append_4288) \\\n-\t$(am__append_4295) $(am__append_4302) $(am__append_4309) \\\n-\t$(am__append_4316) $(am__append_4323) $(am__append_4330) \\\n-\t$(am__append_4337) $(am__append_4344) $(am__append_4351) \\\n-\t$(am__append_4358) $(am__append_4365) $(am__append_4372) \\\n-\t$(am__append_4379) $(am__append_4386) $(am__append_4393) \\\n-\t$(am__append_4400) $(am__append_4407) $(am__append_4414) \\\n-\t$(am__append_4421) $(am__append_4428) $(am__append_4435) \\\n-\t$(am__append_4442) $(am__append_4449) $(am__append_4456) \\\n-\t$(am__append_4463) $(am__append_4470) $(am__append_4477) \\\n-\t$(am__append_4484) $(am__append_4491) $(am__append_4498) \\\n-\t$(am__append_4505) $(am__append_4512) $(am__append_4519) \\\n-\t$(am__append_4526) $(am__append_4533) $(am__append_4540) \\\n-\t$(am__append_4547) $(am__append_4554) $(am__append_4561) \\\n-\t$(am__append_4568) $(am__append_4575) $(am__append_4582) \\\n-\t$(am__append_4589) $(am__append_4596) $(am__append_4603) \\\n-\t$(am__append_4610) $(am__append_4617) $(am__append_4624) \\\n-\t$(am__append_4631) $(am__append_4638) $(am__append_4645) \\\n+\tmsdospart.module$(EXEEXT) $(am__append_4071) \\\n+\t$(am__append_4078) $(am__append_4085) $(am__append_4092) \\\n+\t$(am__append_4099) $(am__append_4106) $(am__append_4113) \\\n+\t$(am__append_4120) $(am__append_4127) $(am__append_4134) \\\n+\t$(am__append_4141) $(am__append_4148) $(am__append_4155) \\\n+\t$(am__append_4162) $(am__append_4169) $(am__append_4176) \\\n+\t$(am__append_4183) $(am__append_4190) $(am__append_4197) \\\n+\t$(am__append_4204) $(am__append_4211) $(am__append_4218) \\\n+\t$(am__append_4225) $(am__append_4232) $(am__append_4239) \\\n+\t$(am__append_4246) $(am__append_4253) \\\n+\tgfxterm_background.module$(EXEEXT) $(am__append_4260) \\\n+\t$(am__append_4267) $(am__append_4274) $(am__append_4281) \\\n+\t$(am__append_4288) $(am__append_4295) $(am__append_4302) \\\n+\t$(am__append_4309) $(am__append_4316) $(am__append_4323) \\\n+\t$(am__append_4330) $(am__append_4337) $(am__append_4344) \\\n+\t$(am__append_4351) $(am__append_4358) $(am__append_4365) \\\n+\t$(am__append_4372) $(am__append_4379) $(am__append_4386) \\\n+\t$(am__append_4393) $(am__append_4400) $(am__append_4407) \\\n+\t$(am__append_4414) $(am__append_4421) $(am__append_4428) \\\n+\t$(am__append_4435) $(am__append_4442) $(am__append_4449) \\\n+\t$(am__append_4456) $(am__append_4463) $(am__append_4470) \\\n+\t$(am__append_4477) $(am__append_4484) $(am__append_4491) \\\n+\t$(am__append_4498) $(am__append_4505) $(am__append_4512) \\\n+\t$(am__append_4519) $(am__append_4526) $(am__append_4533) \\\n+\t$(am__append_4540) $(am__append_4547) $(am__append_4554) \\\n+\t$(am__append_4561) $(am__append_4568) $(am__append_4575) \\\n+\t$(am__append_4582) $(am__append_4589) $(am__append_4596) \\\n+\t$(am__append_4603) $(am__append_4610) $(am__append_4617) \\\n+\t$(am__append_4624) $(am__append_4631) $(am__append_4638) \\\n \tfunctional_test.module$(EXEEXT) exfctest.module$(EXEEXT) \\\n \tstrtoull_test.module$(EXEEXT) setjmp_test.module$(EXEEXT) \\\n \tsignature_test.module$(EXEEXT) sleep_test.module$(EXEEXT) \\\n \txnu_uuid_test.module$(EXEEXT) pbkdf2_test.module$(EXEEXT) \\\n-\t$(am__append_4652) $(am__append_4659) $(am__append_4666) \\\n-\t$(am__append_4673) $(am__append_4680) $(am__append_4687) \\\n-\t$(am__append_4694) $(am__append_4701) $(am__append_4708) \\\n-\t$(am__append_4715) $(am__append_4722) $(am__append_4729) \\\n-\t$(am__append_4736) $(am__append_4743) $(am__append_4750) \\\n-\t$(am__append_4757) $(am__append_4764) $(am__append_4771) \\\n-\t$(am__append_4778) $(am__append_4785) $(am__append_4792) \\\n-\t$(am__append_4799) $(am__append_4806) $(am__append_4813) \\\n-\t$(am__append_4820) div_test.module$(EXEEXT) \\\n+\t$(am__append_4645) $(am__append_4652) $(am__append_4659) \\\n+\t$(am__append_4666) $(am__append_4673) $(am__append_4680) \\\n+\t$(am__append_4687) $(am__append_4694) $(am__append_4701) \\\n+\t$(am__append_4708) $(am__append_4715) $(am__append_4722) \\\n+\t$(am__append_4729) $(am__append_4736) $(am__append_4743) \\\n+\t$(am__append_4750) $(am__append_4757) $(am__append_4764) \\\n+\t$(am__append_4771) $(am__append_4778) $(am__append_4785) \\\n+\t$(am__append_4792) $(am__append_4799) $(am__append_4806) \\\n+\t$(am__append_4813) div_test.module$(EXEEXT) \\\n \tmul_test.module$(EXEEXT) shift_test.module$(EXEEXT) \\\n \tcmp_test.module$(EXEEXT) ctz_test.module$(EXEEXT) \\\n \tbswap_test.module$(EXEEXT) videotest_checksum.module$(EXEEXT) \\\n \tgfxterm_menu.module$(EXEEXT) cmdline_cat_test.module$(EXEEXT) \\\n \tbitmap.module$(EXEEXT) bitmap_scale.module$(EXEEXT) \\\n-\t$(am__append_4827) $(am__append_4834) $(am__append_4841) \\\n-\t$(am__append_4848) $(am__append_4855) $(am__append_4862) \\\n-\t$(am__append_4869) $(am__append_4876) $(am__append_4883) \\\n+\t$(am__append_4820) $(am__append_4827) $(am__append_4834) \\\n+\t$(am__append_4841) $(am__append_4848) $(am__append_4855) \\\n+\t$(am__append_4862) $(am__append_4869) $(am__append_4876) \\\n \tjpeg.module$(EXEEXT) png.module$(EXEEXT) tga.module$(EXEEXT) \\\n-\t$(am__append_4890) $(am__append_4897) $(am__append_4904) \\\n-\t$(am__append_4911) $(am__append_4918) $(am__append_4925) \\\n-\t$(am__append_4932) $(am__append_4939) $(am__append_4946) \\\n-\t$(am__append_4953) $(am__append_4960) $(am__append_4967) \\\n-\t$(am__append_4974) $(am__append_4981) $(am__append_4988) \\\n-\t$(am__append_4995) $(am__append_5002) $(am__append_5009) \\\n-\t$(am__append_5016) $(am__append_5023) $(am__append_5030) \\\n-\t$(am__append_5037) $(am__append_5044) $(am__append_5051) \\\n-\t$(am__append_5058) $(am__append_5065) $(am__append_5072) \\\n-\t$(am__append_5079) $(am__append_5086) $(am__append_5093) \\\n-\t$(am__append_5100) $(am__append_5107) $(am__append_5114) \\\n-\t$(am__append_5121) $(am__append_5128) $(am__append_5135) \\\n-\t$(am__append_5142) $(am__append_5149) $(am__append_5156) \\\n-\t$(am__append_5163) $(am__append_5170) \\\n-\tvideo_colors.module$(EXEEXT) $(am__append_5177) \\\n-\t$(am__append_5184) datehook.module$(EXEEXT) \\\n+\t$(am__append_4883) $(am__append_4890) $(am__append_4897) \\\n+\t$(am__append_4904) $(am__append_4911) $(am__append_4918) \\\n+\t$(am__append_4925) $(am__append_4932) $(am__append_4939) \\\n+\t$(am__append_4946) $(am__append_4953) $(am__append_4960) \\\n+\t$(am__append_4967) $(am__append_4974) $(am__append_4981) \\\n+\t$(am__append_4988) $(am__append_4995) $(am__append_5002) \\\n+\t$(am__append_5009) $(am__append_5016) $(am__append_5023) \\\n+\t$(am__append_5030) $(am__append_5037) $(am__append_5044) \\\n+\t$(am__append_5051) $(am__append_5058) $(am__append_5065) \\\n+\t$(am__append_5072) $(am__append_5079) $(am__append_5086) \\\n+\t$(am__append_5093) $(am__append_5100) $(am__append_5107) \\\n+\t$(am__append_5114) $(am__append_5121) $(am__append_5128) \\\n+\t$(am__append_5135) $(am__append_5142) $(am__append_5149) \\\n+\t$(am__append_5156) $(am__append_5163) \\\n+\tvideo_colors.module$(EXEEXT) $(am__append_5170) \\\n+\t$(am__append_5177) datehook.module$(EXEEXT) \\\n \tnet.module$(EXEEXT) tftp.module$(EXEEXT) http.module$(EXEEXT) \\\n-\t$(am__append_5191) $(am__append_5198) $(am__append_5205) \\\n-\t$(am__append_5212) $(am__append_5219) $(am__append_5226) \\\n-\t$(am__append_5233) $(am__append_5240) $(am__append_5247) \\\n-\t$(am__append_5254) $(am__append_5261) $(am__append_5268) \\\n-\t$(am__append_5275) $(am__append_5282) $(am__append_5289) \\\n-\t$(am__append_5296) $(am__append_5303) $(am__append_5310) \\\n+\t$(am__append_5184) $(am__append_5191) $(am__append_5198) \\\n+\t$(am__append_5205) $(am__append_5212) $(am__append_5219) \\\n+\t$(am__append_5226) $(am__append_5233) $(am__append_5240) \\\n+\t$(am__append_5247) $(am__append_5254) $(am__append_5261) \\\n+\t$(am__append_5268) $(am__append_5275) $(am__append_5282) \\\n+\t$(am__append_5289) $(am__append_5296) $(am__append_5303) \\\n \tsyslinuxcfg.module$(EXEEXT) test_blockarg.module$(EXEEXT) \\\n \txzio.module$(EXEEXT) lzopio.module$(EXEEXT) \\\n-\ttestload.module$(EXEEXT) $(am__append_5317) $(am__append_5324) \\\n-\t$(am__append_5331) $(am__append_5338) $(am__append_5345) \\\n-\t$(am__append_5352) $(am__append_5359) $(am__append_5366) \\\n-\t$(am__append_5373) $(am__append_5380) $(am__append_5387) \\\n-\t$(am__append_5394) $(am__append_5401) $(am__append_5408) \\\n-\t$(am__append_5415) $(am__append_5422) $(am__append_5429) \\\n+\ttestload.module$(EXEEXT) $(am__append_5310) $(am__append_5317) \\\n+\t$(am__append_5324) $(am__append_5331) $(am__append_5338) \\\n+\t$(am__append_5345) $(am__append_5352) $(am__append_5359) \\\n+\t$(am__append_5366) $(am__append_5373) $(am__append_5380) \\\n+\t$(am__append_5387) $(am__append_5394) $(am__append_5401) \\\n+\t$(am__append_5408) $(am__append_5415) $(am__append_5422) \\\n \tpriority_queue.module$(EXEEXT) time.module$(EXEEXT) \\\n-\t$(am__append_5436) $(am__append_5443) adler32.module$(EXEEXT) \\\n+\t$(am__append_5429) $(am__append_5436) adler32.module$(EXEEXT) \\\n \tcrc64.module$(EXEEXT) mpi.module$(EXEEXT) \\\n-\tall_video.module$(EXEEXT) $(am__append_5450) \\\n-\t$(am__append_5457) $(am__append_5464) $(am__append_5471) \\\n-\t$(am__append_5478) $(am__append_5485) \\\n-\ttestspeed.module$(EXEEXT) $(am__append_5492) \\\n+\tall_video.module$(EXEEXT) $(am__append_5443) \\\n+\t$(am__append_5450) $(am__append_5457) $(am__append_5464) \\\n+\t$(am__append_5471) $(am__append_5478) \\\n+\ttestspeed.module$(EXEEXT) $(am__append_5485) \\\n \ttr.module$(EXEEXT) progress.module$(EXEEXT) \\\n-\tfile.module$(EXEEXT) $(am__append_5499) $(am__append_5506) \\\n-\t$(am__append_5513) $(am__append_5520) $(am__append_5527) \\\n-\t$(am__append_5534) $(am__append_5541) $(am__append_5548) \\\n-\t$(am__append_5555) $(am__append_5562) $(am__append_5569) \\\n-\t$(am__append_5576) $(am__append_5583) $(am__append_5590) \\\n+\tfile.module$(EXEEXT) $(am__append_5492) $(am__append_5499) \\\n+\t$(am__append_5506) $(am__append_5513) $(am__append_5520) \\\n+\t$(am__append_5527) $(am__append_5534) $(am__append_5541) \\\n+\t$(am__append_5548) $(am__append_5555) $(am__append_5562) \\\n+\t$(am__append_5569) $(am__append_5576) $(am__append_5583) \\\n \tgcry_arcfour.module$(EXEEXT) gcry_blowfish.module$(EXEEXT) \\\n \tgcry_camellia.module$(EXEEXT) gcry_cast5.module$(EXEEXT) \\\n \tgcry_crc.module$(EXEEXT) gcry_des.module$(EXEEXT) \\\n@@ -16180,58 +16157,58 @@ MARKER_FILES = disk.marker trig.marker $(am__append_9) \\\n \thashsum.marker pgp.marker $(am__append_2046) \\\n \t$(am__append_2053) $(am__append_2060) $(am__append_2067) \\\n \t$(am__append_2074) $(am__append_2081) $(am__append_2088) \\\n-\t$(am__append_2095) $(am__append_2102) $(am__append_2109) \\\n-\thelp.marker hexdump.marker keystatus.marker $(am__append_2116) \\\n-\t$(am__append_2123) loadenv.marker ls.marker lsmmap.marker \\\n-\t$(am__append_2130) $(am__append_2137) $(am__append_2144) \\\n-\t$(am__append_2151) $(am__append_2158) $(am__append_2165) \\\n-\t$(am__append_2172) $(am__append_2179) memrw.marker \\\n+\t$(am__append_2095) $(am__append_2102) help.marker \\\n+\thexdump.marker keystatus.marker $(am__append_2109) \\\n+\t$(am__append_2116) loadenv.marker ls.marker lsmmap.marker \\\n+\t$(am__append_2123) $(am__append_2130) $(am__append_2137) \\\n+\t$(am__append_2144) $(am__append_2151) $(am__append_2158) \\\n+\t$(am__append_2165) $(am__append_2172) memrw.marker \\\n \tminicmd.marker parttool.marker password.marker \\\n-\tpassword_pbkdf2.marker $(am__append_2186) $(am__append_2193) \\\n-\t$(am__append_2200) $(am__append_2207) $(am__append_2214) \\\n-\t$(am__append_2221) $(am__append_2228) $(am__append_2235) \\\n-\t$(am__append_2242) $(am__append_2249) $(am__append_2256) \\\n-\t$(am__append_2263) $(am__append_2270) $(am__append_2277) \\\n-\t$(am__append_2284) $(am__append_2291) $(am__append_2298) \\\n-\t$(am__append_2305) $(am__append_2312) $(am__append_2319) \\\n-\t$(am__append_2326) probe.marker read.marker search.marker \\\n+\tpassword_pbkdf2.marker $(am__append_2179) $(am__append_2186) \\\n+\t$(am__append_2193) $(am__append_2200) $(am__append_2207) \\\n+\t$(am__append_2214) $(am__append_2221) $(am__append_2228) \\\n+\t$(am__append_2235) $(am__append_2242) $(am__append_2249) \\\n+\t$(am__append_2256) $(am__append_2263) $(am__append_2270) \\\n+\t$(am__append_2277) $(am__append_2284) $(am__append_2291) \\\n+\t$(am__append_2298) $(am__append_2305) $(am__append_2312) \\\n+\t$(am__append_2319) probe.marker read.marker search.marker \\\n \tsearch_fs_file.marker search_fs_uuid.marker \\\n-\tsearch_label.marker $(am__append_2333) $(am__append_2340) \\\n-\t$(am__append_2347) $(am__append_2354) $(am__append_2361) \\\n-\t$(am__append_2368) $(am__append_2375) $(am__append_2382) \\\n-\t$(am__append_2389) $(am__append_2396) $(am__append_2403) \\\n-\t$(am__append_2410) $(am__append_2417) $(am__append_2424) \\\n-\t$(am__append_2431) $(am__append_2438) sleep.marker \\\n-\t$(am__append_2445) $(am__append_2452) terminal.marker \\\n-\ttest.marker true.marker $(am__append_2459) $(am__append_2466) \\\n-\t$(am__append_2473) $(am__append_2480) $(am__append_2487) \\\n-\t$(am__append_2494) $(am__append_2501) $(am__append_2508) \\\n-\t$(am__append_2515) videoinfo.marker videotest.marker \\\n+\tsearch_label.marker $(am__append_2326) $(am__append_2333) \\\n+\t$(am__append_2340) $(am__append_2347) $(am__append_2354) \\\n+\t$(am__append_2361) $(am__append_2368) $(am__append_2375) \\\n+\t$(am__append_2382) $(am__append_2389) $(am__append_2396) \\\n+\t$(am__append_2403) $(am__append_2410) $(am__append_2417) \\\n+\t$(am__append_2424) $(am__append_2431) sleep.marker \\\n+\t$(am__append_2438) $(am__append_2445) terminal.marker \\\n+\ttest.marker true.marker $(am__append_2452) $(am__append_2459) \\\n+\t$(am__append_2466) $(am__append_2473) $(am__append_2480) \\\n+\t$(am__append_2487) $(am__append_2494) $(am__append_2501) \\\n+\t$(am__append_2508) videoinfo.marker videotest.marker \\\n \txnu_uuid.marker dm_nv.marker loopback.marker cryptodisk.marker \\\n \tluks.marker geli.marker lvm.marker ldm.marker mdraid09.marker \\\n \tmdraid09_be.marker mdraid1x.marker diskfilter.marker \\\n \traid5rec.marker raid6rec.marker scsi.marker memdisk.marker \\\n-\t$(am__append_2522) $(am__append_2529) $(am__append_2536) \\\n-\t$(am__append_2543) $(am__append_2550) $(am__append_2557) \\\n-\t$(am__append_2564) $(am__append_2571) $(am__append_2578) \\\n-\t$(am__append_2585) $(am__append_2592) $(am__append_2599) \\\n-\t$(am__append_2606) $(am__append_2613) $(am__append_2620) \\\n-\t$(am__append_2627) $(am__append_2634) $(am__append_2641) \\\n-\t$(am__append_2648) $(am__append_2655) $(am__append_2662) \\\n-\t$(am__append_2669) $(am__append_2676) $(am__append_2683) \\\n-\t$(am__append_2690) $(am__append_2697) $(am__append_2704) \\\n-\t$(am__append_2711) $(am__append_2718) $(am__append_2725) \\\n-\t$(am__append_2732) $(am__append_2739) $(am__append_2746) \\\n-\t$(am__append_2753) $(am__append_2760) $(am__append_2767) \\\n-\t$(am__append_2774) $(am__append_2781) $(am__append_2788) \\\n-\t$(am__append_2795) $(am__append_2802) $(am__append_2809) \\\n-\t$(am__append_2816) $(am__append_2823) $(am__append_2830) \\\n-\t$(am__append_2837) $(am__append_2844) $(am__append_2851) \\\n-\t$(am__append_2858) $(am__append_2865) $(am__append_2872) \\\n-\t$(am__append_2879) $(am__append_2886) $(am__append_2893) \\\n-\t$(am__append_2900) $(am__append_2907) $(am__append_2914) \\\n-\t$(am__append_2921) $(am__append_2928) $(am__append_2935) \\\n-\t$(am__append_2942) procfs.marker affs.marker afs.marker \\\n+\t$(am__append_2515) $(am__append_2522) $(am__append_2529) \\\n+\t$(am__append_2536) $(am__append_2543) $(am__append_2550) \\\n+\t$(am__append_2557) $(am__append_2564) $(am__append_2571) \\\n+\t$(am__append_2578) $(am__append_2585) $(am__append_2592) \\\n+\t$(am__append_2599) $(am__append_2606) $(am__append_2613) \\\n+\t$(am__append_2620) $(am__append_2627) $(am__append_2634) \\\n+\t$(am__append_2641) $(am__append_2648) $(am__append_2655) \\\n+\t$(am__append_2662) $(am__append_2669) $(am__append_2676) \\\n+\t$(am__append_2683) $(am__append_2690) $(am__append_2697) \\\n+\t$(am__append_2704) $(am__append_2711) $(am__append_2718) \\\n+\t$(am__append_2725) $(am__append_2732) $(am__append_2739) \\\n+\t$(am__append_2746) $(am__append_2753) $(am__append_2760) \\\n+\t$(am__append_2767) $(am__append_2774) $(am__append_2781) \\\n+\t$(am__append_2788) $(am__append_2795) $(am__append_2802) \\\n+\t$(am__append_2809) $(am__append_2816) $(am__append_2823) \\\n+\t$(am__append_2830) $(am__append_2837) $(am__append_2844) \\\n+\t$(am__append_2851) $(am__append_2858) $(am__append_2865) \\\n+\t$(am__append_2872) $(am__append_2879) $(am__append_2886) \\\n+\t$(am__append_2893) $(am__append_2900) $(am__append_2907) \\\n+\t$(am__append_2914) $(am__append_2921) $(am__append_2928) \\\n+\t$(am__append_2935) procfs.marker affs.marker afs.marker \\\n \tbfs.marker zstd.marker btrfs.marker archelp.marker cbfs.marker \\\n \tcpio.marker cpio_be.marker newc.marker odc.marker ext2.marker \\\n \tfat.marker exfat.marker f2fs.marker fshelp.marker hfs.marker \\\n@@ -16242,153 +16219,153 @@ MARKER_FILES = disk.marker trig.marker $(am__append_9) \\\n \tsquash4.marker tar.marker udf.marker ufs1.marker \\\n \tufs1_be.marker ufs2.marker xfs.marker zfs.marker \\\n \tzfscrypt.marker zfsinfo.marker macbless.marker \\\n-\t$(am__append_2949) gettext.marker gfxmenu.marker hello.marker \\\n-\tgzio.marker offsetio.marker $(am__append_2956) \\\n-\t$(am__append_2963) $(am__append_2970) $(am__append_2977) \\\n-\t$(am__append_2984) $(am__append_2991) $(am__append_2998) \\\n-\t$(am__append_3005) $(am__append_3012) $(am__append_3019) \\\n-\t$(am__append_3026) $(am__append_3033) $(am__append_3040) \\\n-\t$(am__append_3047) $(am__append_3054) $(am__append_3061) \\\n-\t$(am__append_3068) $(am__append_3075) $(am__append_3082) \\\n-\t$(am__append_3089) elf.marker crypto.marker pbkdf2.marker \\\n-\t$(am__append_3096) $(am__append_3103) $(am__append_3110) \\\n-\t$(am__append_3117) $(am__append_3124) $(am__append_3131) \\\n-\t$(am__append_3138) $(am__append_3145) $(am__append_3152) \\\n-\t$(am__append_3159) $(am__append_3166) $(am__append_3173) \\\n-\t$(am__append_3180) $(am__append_3187) $(am__append_3194) \\\n-\t$(am__append_3201) $(am__append_3208) $(am__append_3215) \\\n-\t$(am__append_3222) $(am__append_3229) $(am__append_3236) \\\n-\t$(am__append_3243) $(am__append_3250) $(am__append_3257) \\\n-\t$(am__append_3264) $(am__append_3271) $(am__append_3278) \\\n-\t$(am__append_3285) $(am__append_3292) $(am__append_3299) \\\n-\t$(am__append_3306) $(am__append_3313) $(am__append_3320) \\\n-\t$(am__append_3327) $(am__append_3334) $(am__append_3341) \\\n-\tsetjmp.marker $(am__append_3348) $(am__append_3355) \\\n-\t$(am__append_3362) $(am__append_3369) $(am__append_3376) \\\n-\t$(am__append_3383) $(am__append_3390) $(am__append_3397) \\\n-\t$(am__append_3404) $(am__append_3411) $(am__append_3418) \\\n-\t$(am__append_3425) $(am__append_3432) $(am__append_3439) \\\n-\t$(am__append_3446) $(am__append_3453) $(am__append_3460) \\\n-\t$(am__append_3467) $(am__append_3474) $(am__append_3481) \\\n-\t$(am__append_3488) $(am__append_3495) $(am__append_3502) \\\n-\t$(am__append_3509) $(am__append_3516) $(am__append_3523) \\\n-\t$(am__append_3530) $(am__append_3537) $(am__append_3544) \\\n-\t$(am__append_3551) $(am__append_3558) $(am__append_3565) \\\n-\t$(am__append_3572) $(am__append_3579) $(am__append_3586) \\\n-\t$(am__append_3593) $(am__append_3600) $(am__append_3607) \\\n-\t$(am__append_3614) $(am__append_3621) $(am__append_3628) \\\n-\t$(am__append_3635) $(am__append_3642) $(am__append_3649) \\\n-\t$(am__append_3656) $(am__append_3663) $(am__append_3670) \\\n-\t$(am__append_3677) $(am__append_3684) $(am__append_3691) \\\n-\t$(am__append_3698) $(am__append_3705) $(am__append_3712) \\\n-\t$(am__append_3719) $(am__append_3726) $(am__append_3733) \\\n-\t$(am__append_3740) $(am__append_3747) $(am__append_3754) \\\n-\t$(am__append_3761) $(am__append_3768) $(am__append_3775) \\\n-\t$(am__append_3782) $(am__append_3789) $(am__append_3796) \\\n-\t$(am__append_3803) $(am__append_3810) $(am__append_3817) \\\n-\t$(am__append_3824) $(am__append_3831) $(am__append_3838) \\\n-\t$(am__append_3845) $(am__append_3852) $(am__append_3859) \\\n-\t$(am__append_3866) $(am__append_3873) $(am__append_3880) \\\n-\t$(am__append_3887) macho.marker $(am__append_3894) \\\n-\t$(am__append_3901) $(am__append_3908) $(am__append_3915) \\\n-\t$(am__append_3922) $(am__append_3929) $(am__append_3936) \\\n-\t$(am__append_3943) $(am__append_3950) $(am__append_3957) \\\n-\t$(am__append_3964) $(am__append_3971) $(am__append_3978) \\\n-\t$(am__append_3985) $(am__append_3992) $(am__append_3999) \\\n-\t$(am__append_4006) $(am__append_4013) $(am__append_4020) \\\n-\t$(am__append_4027) $(am__append_4034) $(am__append_4041) \\\n-\t$(am__append_4048) $(am__append_4055) $(am__append_4062) \\\n-\t$(am__append_4069) $(am__append_4076) normal.marker \\\n+\t$(am__append_2942) gettext.marker gfxmenu.marker hello.marker \\\n+\tgzio.marker offsetio.marker $(am__append_2949) \\\n+\t$(am__append_2956) $(am__append_2963) $(am__append_2970) \\\n+\t$(am__append_2977) $(am__append_2984) $(am__append_2991) \\\n+\t$(am__append_2998) $(am__append_3005) $(am__append_3012) \\\n+\t$(am__append_3019) $(am__append_3026) $(am__append_3033) \\\n+\t$(am__append_3040) $(am__append_3047) $(am__append_3054) \\\n+\t$(am__append_3061) $(am__append_3068) $(am__append_3075) \\\n+\t$(am__append_3082) elf.marker crypto.marker pbkdf2.marker \\\n+\t$(am__append_3089) $(am__append_3096) $(am__append_3103) \\\n+\t$(am__append_3110) $(am__append_3117) $(am__append_3124) \\\n+\t$(am__append_3131) $(am__append_3138) $(am__append_3145) \\\n+\t$(am__append_3152) $(am__append_3159) $(am__append_3166) \\\n+\t$(am__append_3173) $(am__append_3180) $(am__append_3187) \\\n+\t$(am__append_3194) $(am__append_3201) $(am__append_3208) \\\n+\t$(am__append_3215) $(am__append_3222) $(am__append_3229) \\\n+\t$(am__append_3236) $(am__append_3243) $(am__append_3250) \\\n+\t$(am__append_3257) $(am__append_3264) $(am__append_3271) \\\n+\t$(am__append_3278) $(am__append_3285) $(am__append_3292) \\\n+\t$(am__append_3299) $(am__append_3306) $(am__append_3313) \\\n+\t$(am__append_3320) $(am__append_3327) $(am__append_3334) \\\n+\tsetjmp.marker $(am__append_3341) $(am__append_3348) \\\n+\t$(am__append_3355) $(am__append_3362) $(am__append_3369) \\\n+\t$(am__append_3376) $(am__append_3383) $(am__append_3390) \\\n+\t$(am__append_3397) $(am__append_3404) $(am__append_3411) \\\n+\t$(am__append_3418) $(am__append_3425) $(am__append_3432) \\\n+\t$(am__append_3439) $(am__append_3446) $(am__append_3453) \\\n+\t$(am__append_3460) $(am__append_3467) $(am__append_3474) \\\n+\t$(am__append_3481) $(am__append_3488) $(am__append_3495) \\\n+\t$(am__append_3502) $(am__append_3509) $(am__append_3516) \\\n+\t$(am__append_3523) $(am__append_3530) $(am__append_3537) \\\n+\t$(am__append_3544) $(am__append_3551) $(am__append_3558) \\\n+\t$(am__append_3565) $(am__append_3572) $(am__append_3579) \\\n+\t$(am__append_3586) $(am__append_3593) $(am__append_3600) \\\n+\t$(am__append_3607) $(am__append_3614) $(am__append_3621) \\\n+\t$(am__append_3628) $(am__append_3635) $(am__append_3642) \\\n+\t$(am__append_3649) $(am__append_3656) $(am__append_3663) \\\n+\t$(am__append_3670) $(am__append_3677) $(am__append_3684) \\\n+\t$(am__append_3691) $(am__append_3698) $(am__append_3705) \\\n+\t$(am__append_3712) $(am__append_3719) $(am__append_3726) \\\n+\t$(am__append_3733) $(am__append_3740) $(am__append_3747) \\\n+\t$(am__append_3754) $(am__append_3761) $(am__append_3768) \\\n+\t$(am__append_3775) $(am__append_3782) $(am__append_3789) \\\n+\t$(am__append_3796) $(am__append_3803) $(am__append_3810) \\\n+\t$(am__append_3817) $(am__append_3824) $(am__append_3831) \\\n+\t$(am__append_3838) $(am__append_3845) $(am__append_3852) \\\n+\t$(am__append_3859) $(am__append_3866) $(am__append_3873) \\\n+\t$(am__append_3880) macho.marker $(am__append_3887) \\\n+\t$(am__append_3894) $(am__append_3901) $(am__append_3908) \\\n+\t$(am__append_3915) $(am__append_3922) $(am__append_3929) \\\n+\t$(am__append_3936) $(am__append_3943) $(am__append_3950) \\\n+\t$(am__append_3957) $(am__append_3964) $(am__append_3971) \\\n+\t$(am__append_3978) $(am__append_3985) $(am__append_3992) \\\n+\t$(am__append_3999) $(am__append_4006) $(am__append_4013) \\\n+\t$(am__append_4020) $(am__append_4027) $(am__append_4034) \\\n+\t$(am__append_4041) $(am__append_4048) $(am__append_4055) \\\n+\t$(am__append_4062) $(am__append_4069) normal.marker \\\n \tpart_acorn.marker part_amiga.marker part_apple.marker \\\n \tpart_gpt.marker part_msdos.marker part_sun.marker \\\n \tpart_plan.marker part_dvh.marker part_bsd.marker \\\n \tpart_sunpc.marker part_dfly.marker msdospart.marker \\\n-\t$(am__append_4083) $(am__append_4090) $(am__append_4097) \\\n-\t$(am__append_4104) $(am__append_4111) $(am__append_4118) \\\n-\t$(am__append_4125) $(am__append_4132) $(am__append_4139) \\\n-\t$(am__append_4146) $(am__append_4153) $(am__append_4160) \\\n-\t$(am__append_4167) $(am__append_4174) $(am__append_4181) \\\n-\t$(am__append_4188) $(am__append_4195) $(am__append_4202) \\\n-\t$(am__append_4209) $(am__append_4216) $(am__append_4223) \\\n-\t$(am__append_4230) $(am__append_4237) $(am__append_4244) \\\n-\t$(am__append_4251) $(am__append_4258) $(am__append_4265) \\\n-\tgfxterm_background.marker $(am__append_4272) \\\n-\t$(am__append_4279) $(am__append_4286) $(am__append_4293) \\\n-\t$(am__append_4300) $(am__append_4307) $(am__append_4314) \\\n-\t$(am__append_4321) $(am__append_4328) $(am__append_4335) \\\n-\t$(am__append_4342) $(am__append_4349) $(am__append_4356) \\\n-\t$(am__append_4363) $(am__append_4370) $(am__append_4377) \\\n-\t$(am__append_4384) $(am__append_4391) $(am__append_4398) \\\n-\t$(am__append_4405) $(am__append_4412) $(am__append_4419) \\\n-\t$(am__append_4426) $(am__append_4433) $(am__append_4440) \\\n-\t$(am__append_4447) $(am__append_4454) $(am__append_4461) \\\n-\t$(am__append_4468) $(am__append_4475) $(am__append_4482) \\\n-\t$(am__append_4489) $(am__append_4496) $(am__append_4503) \\\n-\t$(am__append_4510) $(am__append_4517) $(am__append_4524) \\\n-\t$(am__append_4531) $(am__append_4538) $(am__append_4545) \\\n-\t$(am__append_4552) $(am__append_4559) $(am__append_4566) \\\n-\t$(am__append_4573) $(am__append_4580) $(am__append_4587) \\\n-\t$(am__append_4594) $(am__append_4601) $(am__append_4608) \\\n-\t$(am__append_4615) $(am__append_4622) $(am__append_4629) \\\n-\t$(am__append_4636) $(am__append_4643) $(am__append_4650) \\\n+\t$(am__append_4076) $(am__append_4083) $(am__append_4090) \\\n+\t$(am__append_4097) $(am__append_4104) $(am__append_4111) \\\n+\t$(am__append_4118) $(am__append_4125) $(am__append_4132) \\\n+\t$(am__append_4139) $(am__append_4146) $(am__append_4153) \\\n+\t$(am__append_4160) $(am__append_4167) $(am__append_4174) \\\n+\t$(am__append_4181) $(am__append_4188) $(am__append_4195) \\\n+\t$(am__append_4202) $(am__append_4209) $(am__append_4216) \\\n+\t$(am__append_4223) $(am__append_4230) $(am__append_4237) \\\n+\t$(am__append_4244) $(am__append_4251) $(am__append_4258) \\\n+\tgfxterm_background.marker $(am__append_4265) \\\n+\t$(am__append_4272) $(am__append_4279) $(am__append_4286) \\\n+\t$(am__append_4293) $(am__append_4300) $(am__append_4307) \\\n+\t$(am__append_4314) $(am__append_4321) $(am__append_4328) \\\n+\t$(am__append_4335) $(am__append_4342) $(am__append_4349) \\\n+\t$(am__append_4356) $(am__append_4363) $(am__append_4370) \\\n+\t$(am__append_4377) $(am__append_4384) $(am__append_4391) \\\n+\t$(am__append_4398) $(am__append_4405) $(am__append_4412) \\\n+\t$(am__append_4419) $(am__append_4426) $(am__append_4433) \\\n+\t$(am__append_4440) $(am__append_4447) $(am__append_4454) \\\n+\t$(am__append_4461) $(am__append_4468) $(am__append_4475) \\\n+\t$(am__append_4482) $(am__append_4489) $(am__append_4496) \\\n+\t$(am__append_4503) $(am__append_4510) $(am__append_4517) \\\n+\t$(am__append_4524) $(am__append_4531) $(am__append_4538) \\\n+\t$(am__append_4545) $(am__append_4552) $(am__append_4559) \\\n+\t$(am__append_4566) $(am__append_4573) $(am__append_4580) \\\n+\t$(am__append_4587) $(am__append_4594) $(am__append_4601) \\\n+\t$(am__append_4608) $(am__append_4615) $(am__append_4622) \\\n+\t$(am__append_4629) $(am__append_4636) $(am__append_4643) \\\n \tfunctional_test.marker exfctest.marker strtoull_test.marker \\\n \tsetjmp_test.marker signature_test.marker sleep_test.marker \\\n-\txnu_uuid_test.marker pbkdf2_test.marker $(am__append_4657) \\\n-\t$(am__append_4664) $(am__append_4671) $(am__append_4678) \\\n-\t$(am__append_4685) $(am__append_4692) $(am__append_4699) \\\n-\t$(am__append_4706) $(am__append_4713) $(am__append_4720) \\\n-\t$(am__append_4727) $(am__append_4734) $(am__append_4741) \\\n-\t$(am__append_4748) $(am__append_4755) $(am__append_4762) \\\n-\t$(am__append_4769) $(am__append_4776) $(am__append_4783) \\\n-\t$(am__append_4790) $(am__append_4797) $(am__append_4804) \\\n-\t$(am__append_4811) $(am__append_4818) $(am__append_4825) \\\n+\txnu_uuid_test.marker pbkdf2_test.marker $(am__append_4650) \\\n+\t$(am__append_4657) $(am__append_4664) $(am__append_4671) \\\n+\t$(am__append_4678) $(am__append_4685) $(am__append_4692) \\\n+\t$(am__append_4699) $(am__append_4706) $(am__append_4713) \\\n+\t$(am__append_4720) $(am__append_4727) $(am__append_4734) \\\n+\t$(am__append_4741) $(am__append_4748) $(am__append_4755) \\\n+\t$(am__append_4762) $(am__append_4769) $(am__append_4776) \\\n+\t$(am__append_4783) $(am__append_4790) $(am__append_4797) \\\n+\t$(am__append_4804) $(am__append_4811) $(am__append_4818) \\\n \tdiv_test.marker mul_test.marker shift_test.marker \\\n \tcmp_test.marker ctz_test.marker bswap_test.marker \\\n \tvideotest_checksum.marker gfxterm_menu.marker \\\n \tcmdline_cat_test.marker bitmap.marker bitmap_scale.marker \\\n-\t$(am__append_4832) $(am__append_4839) $(am__append_4846) \\\n-\t$(am__append_4853) $(am__append_4860) $(am__append_4867) \\\n-\t$(am__append_4874) $(am__append_4881) $(am__append_4888) \\\n-\tjpeg.marker png.marker tga.marker $(am__append_4895) \\\n-\t$(am__append_4902) $(am__append_4909) $(am__append_4916) \\\n-\t$(am__append_4923) $(am__append_4930) $(am__append_4937) \\\n-\t$(am__append_4944) $(am__append_4951) $(am__append_4958) \\\n-\t$(am__append_4965) $(am__append_4972) $(am__append_4979) \\\n-\t$(am__append_4986) $(am__append_4993) $(am__append_5000) \\\n-\t$(am__append_5007) $(am__append_5014) $(am__append_5021) \\\n-\t$(am__append_5028) $(am__append_5035) $(am__append_5042) \\\n-\t$(am__append_5049) $(am__append_5056) $(am__append_5063) \\\n-\t$(am__append_5070) $(am__append_5077) $(am__append_5084) \\\n-\t$(am__append_5091) $(am__append_5098) $(am__append_5105) \\\n-\t$(am__append_5112) $(am__append_5119) $(am__append_5126) \\\n-\t$(am__append_5133) $(am__append_5140) $(am__append_5147) \\\n-\t$(am__append_5154) $(am__append_5161) $(am__append_5168) \\\n-\t$(am__append_5175) video_colors.marker $(am__append_5182) \\\n-\t$(am__append_5189) datehook.marker net.marker tftp.marker \\\n-\thttp.marker $(am__append_5196) $(am__append_5203) \\\n-\t$(am__append_5210) $(am__append_5217) $(am__append_5224) \\\n-\t$(am__append_5231) $(am__append_5238) $(am__append_5245) \\\n-\t$(am__append_5252) $(am__append_5259) $(am__append_5266) \\\n-\t$(am__append_5273) $(am__append_5280) $(am__append_5287) \\\n-\t$(am__append_5294) $(am__append_5301) $(am__append_5308) \\\n-\t$(am__append_5315) syslinuxcfg.marker test_blockarg.marker \\\n-\txzio.marker lzopio.marker testload.marker $(am__append_5322) \\\n-\t$(am__append_5329) $(am__append_5336) $(am__append_5343) \\\n-\t$(am__append_5350) $(am__append_5357) $(am__append_5364) \\\n-\t$(am__append_5371) $(am__append_5378) $(am__append_5385) \\\n-\t$(am__append_5392) $(am__append_5399) $(am__append_5406) \\\n-\t$(am__append_5413) $(am__append_5420) $(am__append_5427) \\\n-\t$(am__append_5434) priority_queue.marker time.marker \\\n-\t$(am__append_5441) $(am__append_5448) adler32.marker \\\n-\tcrc64.marker mpi.marker all_video.marker $(am__append_5455) \\\n-\t$(am__append_5462) $(am__append_5469) $(am__append_5476) \\\n-\t$(am__append_5483) $(am__append_5490) testspeed.marker \\\n-\t$(am__append_5497) tr.marker progress.marker file.marker \\\n-\t$(am__append_5504) $(am__append_5511) $(am__append_5518) \\\n-\t$(am__append_5525) $(am__append_5532) $(am__append_5539) \\\n-\t$(am__append_5546) $(am__append_5553) $(am__append_5560) \\\n-\t$(am__append_5567) $(am__append_5574) $(am__append_5581) \\\n-\t$(am__append_5588) $(am__append_5595) gcry_arcfour.marker \\\n+\t$(am__append_4825) $(am__append_4832) $(am__append_4839) \\\n+\t$(am__append_4846) $(am__append_4853) $(am__append_4860) \\\n+\t$(am__append_4867) $(am__append_4874) $(am__append_4881) \\\n+\tjpeg.marker png.marker tga.marker $(am__append_4888) \\\n+\t$(am__append_4895) $(am__append_4902) $(am__append_4909) \\\n+\t$(am__append_4916) $(am__append_4923) $(am__append_4930) \\\n+\t$(am__append_4937) $(am__append_4944) $(am__append_4951) \\\n+\t$(am__append_4958) $(am__append_4965) $(am__append_4972) \\\n+\t$(am__append_4979) $(am__append_4986) $(am__append_4993) \\\n+\t$(am__append_5000) $(am__append_5007) $(am__append_5014) \\\n+\t$(am__append_5021) $(am__append_5028) $(am__append_5035) \\\n+\t$(am__append_5042) $(am__append_5049) $(am__append_5056) \\\n+\t$(am__append_5063) $(am__append_5070) $(am__append_5077) \\\n+\t$(am__append_5084) $(am__append_5091) $(am__append_5098) \\\n+\t$(am__append_5105) $(am__append_5112) $(am__append_5119) \\\n+\t$(am__append_5126) $(am__append_5133) $(am__append_5140) \\\n+\t$(am__append_5147) $(am__append_5154) $(am__append_5161) \\\n+\t$(am__append_5168) video_colors.marker $(am__append_5175) \\\n+\t$(am__append_5182) datehook.marker net.marker tftp.marker \\\n+\thttp.marker $(am__append_5189) $(am__append_5196) \\\n+\t$(am__append_5203) $(am__append_5210) $(am__append_5217) \\\n+\t$(am__append_5224) $(am__append_5231) $(am__append_5238) \\\n+\t$(am__append_5245) $(am__append_5252) $(am__append_5259) \\\n+\t$(am__append_5266) $(am__append_5273) $(am__append_5280) \\\n+\t$(am__append_5287) $(am__append_5294) $(am__append_5301) \\\n+\t$(am__append_5308) syslinuxcfg.marker test_blockarg.marker \\\n+\txzio.marker lzopio.marker testload.marker $(am__append_5315) \\\n+\t$(am__append_5322) $(am__append_5329) $(am__append_5336) \\\n+\t$(am__append_5343) $(am__append_5350) $(am__append_5357) \\\n+\t$(am__append_5364) $(am__append_5371) $(am__append_5378) \\\n+\t$(am__append_5385) $(am__append_5392) $(am__append_5399) \\\n+\t$(am__append_5406) $(am__append_5413) $(am__append_5420) \\\n+\t$(am__append_5427) priority_queue.marker time.marker \\\n+\t$(am__append_5434) $(am__append_5441) adler32.marker \\\n+\tcrc64.marker mpi.marker all_video.marker $(am__append_5448) \\\n+\t$(am__append_5455) $(am__append_5462) $(am__append_5469) \\\n+\t$(am__append_5476) $(am__append_5483) testspeed.marker \\\n+\t$(am__append_5490) tr.marker progress.marker file.marker \\\n+\t$(am__append_5497) $(am__append_5504) $(am__append_5511) \\\n+\t$(am__append_5518) $(am__append_5525) $(am__append_5532) \\\n+\t$(am__append_5539) $(am__append_5546) $(am__append_5553) \\\n+\t$(am__append_5560) $(am__append_5567) $(am__append_5574) \\\n+\t$(am__append_5581) $(am__append_5588) gcry_arcfour.marker \\\n \tgcry_blowfish.marker gcry_camellia.marker gcry_cast5.marker \\\n \tgcry_crc.marker gcry_des.marker gcry_dsa.marker \\\n \tgcry_idea.marker gcry_md4.marker gcry_md5.marker \\\n@@ -16410,8 +16387,8 @@ KERNEL_HEADER_FILES = $(top_srcdir)/include/grub/cache.h \\\n \t$(top_srcdir)/include/grub/i18n.h \\\n \t$(top_srcdir)/include/grub/kernel.h \\\n \t$(top_srcdir)/include/grub/list.h \\\n-\t$(top_srcdir)/include/grub/misc.h $(am__append_5801) \\\n-\t$(am__append_5802) $(top_srcdir)/include/grub/mm.h \\\n+\t$(top_srcdir)/include/grub/misc.h $(am__append_5794) \\\n+\t$(am__append_5795) $(top_srcdir)/include/grub/mm.h \\\n \t$(top_srcdir)/include/grub/parser.h \\\n \t$(top_srcdir)/include/grub/partition.h \\\n \t$(top_srcdir)/include/grub/term.h \\\n@@ -16419,38 +16396,38 @@ KERNEL_HEADER_FILES = $(top_srcdir)/include/grub/cache.h \\\n \t$(top_srcdir)/include/grub/verify.h \\\n \t$(top_srcdir)/include/grub/mm_private.h \\\n \t$(top_srcdir)/include/grub/net.h \\\n-\t$(top_srcdir)/include/grub/memory.h $(am__append_5803) \\\n-\t$(am__append_5804) $(am__append_5805) $(am__append_5806) \\\n-\t$(am__append_5807) $(am__append_5808) $(am__append_5809) \\\n-\t$(am__append_5810) $(am__append_5811) $(am__append_5812) \\\n-\t$(am__append_5813) $(am__append_5814) $(am__append_5815) \\\n-\t$(am__append_5816) $(am__append_5817) $(am__append_5818) \\\n-\t$(am__append_5819) $(am__append_5820) $(am__append_5821) \\\n-\t$(am__append_5822) $(am__append_5823) $(am__append_5824) \\\n-\t$(am__append_5825) $(am__append_5826) $(am__append_5827) \\\n-\t$(am__append_5828) $(am__append_5829)\n-man_MANS = $(am__append_5792)\n+\t$(top_srcdir)/include/grub/memory.h $(am__append_5796) \\\n+\t$(am__append_5797) $(am__append_5798) $(am__append_5799) \\\n+\t$(am__append_5800) $(am__append_5801) $(am__append_5802) \\\n+\t$(am__append_5803) $(am__append_5804) $(am__append_5805) \\\n+\t$(am__append_5806) $(am__append_5807) $(am__append_5808) \\\n+\t$(am__append_5809) $(am__append_5810) $(am__append_5811) \\\n+\t$(am__append_5812) $(am__append_5813) $(am__append_5814) \\\n+\t$(am__append_5815) $(am__append_5816) $(am__append_5817) \\\n+\t$(am__append_5818) $(am__append_5819) $(am__append_5820) \\\n+\t$(am__append_5821) $(am__append_5822)\n+man_MANS = $(am__append_5785)\n noinst_DATA = gensyminfo.sh genmod.sh modinfo.sh kernel_syms.lst\n pkgdata_DATA = \n bin_SCRIPTS = \n sbin_SCRIPTS = \n-platform_DATA = $(am__append_5600) $(am__append_5605) \\\n-\t$(am__append_5610) $(am__append_5615) $(am__append_5620) \\\n-\t$(am__append_5625) $(am__append_5630) $(am__append_5635) \\\n-\t$(am__append_5640) $(am__append_5645) $(am__append_5650) \\\n-\t$(am__append_5655) $(am__append_5660) $(am__append_5665) \\\n-\t$(am__append_5670) $(am__append_5675) $(am__append_5680) \\\n-\t$(am__append_5685) $(am__append_5690) $(am__append_5695) \\\n-\t$(am__append_5700) $(am__append_5705) $(am__append_5710) \\\n-\t$(am__append_5715) $(am__append_5720) $(am__append_5725) \\\n-\t$(am__append_5730) $(am__append_5735) $(am__append_5740) \\\n-\t$(am__append_5745) $(am__append_5750) $(am__append_5755) \\\n-\t$(am__append_5760) $(am__append_5765) $(am__append_5770) \\\n-\t$(am__append_5775) $(am__append_5780) $(am__append_5785) \\\n-\t$(am__append_5790) gmodule.pl gdb_grub $(am__append_5797) \\\n+platform_DATA = $(am__append_5593) $(am__append_5598) \\\n+\t$(am__append_5603) $(am__append_5608) $(am__append_5613) \\\n+\t$(am__append_5618) $(am__append_5623) $(am__append_5628) \\\n+\t$(am__append_5633) $(am__append_5638) $(am__append_5643) \\\n+\t$(am__append_5648) $(am__append_5653) $(am__append_5658) \\\n+\t$(am__append_5663) $(am__append_5668) $(am__append_5673) \\\n+\t$(am__append_5678) $(am__append_5683) $(am__append_5688) \\\n+\t$(am__append_5693) $(am__append_5698) $(am__append_5703) \\\n+\t$(am__append_5708) $(am__append_5713) $(am__append_5718) \\\n+\t$(am__append_5723) $(am__append_5728) $(am__append_5733) \\\n+\t$(am__append_5738) $(am__append_5743) $(am__append_5748) \\\n+\t$(am__append_5753) $(am__append_5758) $(am__append_5763) \\\n+\t$(am__append_5768) $(am__append_5773) $(am__append_5778) \\\n+\t$(am__append_5783) gmodule.pl gdb_grub $(am__append_5790) \\\n \tfs.lst command.lst partmap.lst terminal.lst fdt.lst \\\n \tparttool.lst video.lst crypto.lst moddep.lst $(MOD_FILES) \\\n-\tmodinfo.sh $(am__append_5831)\n+\tmodinfo.sh $(am__append_5824)\n check_SCRIPTS = \n dist_grubconf_DATA = \n noinst_SCRIPTS = \n@@ -16567,7 +16544,7 @@ dist_noinst_DATA = kern/disk_common.c gentrigtables.c $(am__append_5) \\\n \t$(am__append_2259) $(am__append_2266) $(am__append_2273) \\\n \t$(am__append_2280) $(am__append_2287) $(am__append_2294) \\\n \t$(am__append_2301) $(am__append_2308) $(am__append_2315) \\\n-\t$(am__append_2322) commands/search.c $(am__append_2329) \\\n+\tcommands/search.c $(am__append_2322) $(am__append_2329) \\\n \t$(am__append_2336) $(am__append_2343) $(am__append_2350) \\\n \t$(am__append_2357) $(am__append_2364) $(am__append_2371) \\\n \t$(am__append_2378) $(am__append_2385) $(am__append_2392) \\\n@@ -16603,8 +16580,8 @@ dist_noinst_DATA = kern/disk_common.c gentrigtables.c $(am__append_5) \\\n \t$(am__append_3008) $(am__append_3015) $(am__append_3022) \\\n \t$(am__append_3029) $(am__append_3036) $(am__append_3043) \\\n \t$(am__append_3050) $(am__append_3057) $(am__append_3064) \\\n-\t$(am__append_3071) $(am__append_3078) $(am__append_3085) \\\n-\tkern/elfXX.c lib/libgcrypt-grub/cipher/crypto.lst \\\n+\t$(am__append_3071) $(am__append_3078) kern/elfXX.c \\\n+\tlib/libgcrypt-grub/cipher/crypto.lst $(am__append_3085) \\\n \t$(am__append_3092) $(am__append_3099) $(am__append_3106) \\\n \t$(am__append_3113) $(am__append_3120) $(am__append_3127) \\\n \t$(am__append_3134) $(am__append_3141) $(am__append_3148) \\\n@@ -16616,11 +16593,11 @@ dist_noinst_DATA = kern/disk_common.c gentrigtables.c $(am__append_5) \\\n \t$(am__append_3260) $(am__append_3267) $(am__append_3274) \\\n \t$(am__append_3281) $(am__append_3288) $(am__append_3295) \\\n \t$(am__append_3302) $(am__append_3309) $(am__append_3316) \\\n-\t$(am__append_3323) $(am__append_3330) $(am__append_3337) \\\n-\tlib/i386/setjmp.S lib/mips/setjmp.S lib/x86_64/setjmp.S \\\n-\tlib/sparc64/setjmp.S lib/powerpc/setjmp.S lib/ia64/setjmp.S \\\n-\tlib/ia64/longjmp.S lib/arm/setjmp.S lib/arm64/setjmp.S \\\n-\tlib/riscv/setjmp.S $(am__append_3344) $(am__append_3351) \\\n+\t$(am__append_3323) $(am__append_3330) lib/i386/setjmp.S \\\n+\tlib/mips/setjmp.S lib/x86_64/setjmp.S lib/sparc64/setjmp.S \\\n+\tlib/powerpc/setjmp.S lib/ia64/setjmp.S lib/ia64/longjmp.S \\\n+\tlib/arm/setjmp.S lib/arm64/setjmp.S lib/riscv/setjmp.S \\\n+\t$(am__append_3337) $(am__append_3344) $(am__append_3351) \\\n \t$(am__append_3358) $(am__append_3365) $(am__append_3372) \\\n \t$(am__append_3379) $(am__append_3386) $(am__append_3393) \\\n \t$(am__append_3400) $(am__append_3407) $(am__append_3414) \\\n@@ -16646,7 +16623,7 @@ dist_noinst_DATA = kern/disk_common.c gentrigtables.c $(am__append_5) \\\n \t$(am__append_3820) $(am__append_3827) $(am__append_3834) \\\n \t$(am__append_3841) $(am__append_3848) $(am__append_3855) \\\n \t$(am__append_3862) $(am__append_3869) $(am__append_3876) \\\n-\t$(am__append_3883) loader/machoXX.c $(am__append_3890) \\\n+\tloader/machoXX.c $(am__append_3883) $(am__append_3890) \\\n \t$(am__append_3897) $(am__append_3904) $(am__append_3911) \\\n \t$(am__append_3918) $(am__append_3925) $(am__append_3932) \\\n \t$(am__append_3939) $(am__append_3946) $(am__append_3953) \\\n@@ -16655,8 +16632,8 @@ dist_noinst_DATA = kern/disk_common.c gentrigtables.c $(am__append_5) \\\n \t$(am__append_4002) $(am__append_4009) $(am__append_4016) \\\n \t$(am__append_4023) $(am__append_4030) $(am__append_4037) \\\n \t$(am__append_4044) $(am__append_4051) $(am__append_4058) \\\n-\t$(am__append_4065) $(am__append_4072) script/yylex.l \\\n-\tscript/parser.y $(am__append_4079) $(am__append_4086) \\\n+\t$(am__append_4065) script/yylex.l script/parser.y \\\n+\t$(am__append_4072) $(am__append_4079) $(am__append_4086) \\\n \t$(am__append_4093) $(am__append_4100) $(am__append_4107) \\\n \t$(am__append_4114) $(am__append_4121) $(am__append_4128) \\\n \t$(am__append_4135) $(am__append_4142) $(am__append_4149) \\\n@@ -16723,30 +16700,29 @@ dist_noinst_DATA = kern/disk_common.c gentrigtables.c $(am__append_5) \\\n \t$(am__append_5416) $(am__append_5423) $(am__append_5430) \\\n \t$(am__append_5437) $(am__append_5444) $(am__append_5451) \\\n \t$(am__append_5458) $(am__append_5465) $(am__append_5472) \\\n-\t$(am__append_5479) $(am__append_5486) $(am__append_5493) \\\n-\tcommands/fileXX.c loader/i386/xen_fileXX.c $(am__append_5500) \\\n+\t$(am__append_5479) $(am__append_5486) commands/fileXX.c \\\n+\tloader/i386/xen_fileXX.c $(am__append_5493) $(am__append_5500) \\\n \t$(am__append_5507) $(am__append_5514) $(am__append_5521) \\\n \t$(am__append_5528) $(am__append_5535) $(am__append_5542) \\\n \t$(am__append_5549) $(am__append_5556) $(am__append_5563) \\\n \t$(am__append_5570) $(am__append_5577) $(am__append_5584) \\\n-\t$(am__append_5591) $(am__append_5597) $(am__append_5602) \\\n-\t$(am__append_5607) $(am__append_5612) $(am__append_5617) \\\n-\t$(am__append_5622) $(am__append_5627) $(am__append_5632) \\\n-\t$(am__append_5637) $(am__append_5642) $(am__append_5647) \\\n-\t$(am__append_5652) $(am__append_5657) $(am__append_5662) \\\n-\t$(am__append_5667) $(am__append_5672) $(am__append_5677) \\\n-\t$(am__append_5682) $(am__append_5687) $(am__append_5692) \\\n-\t$(am__append_5697) $(am__append_5702) $(am__append_5707) \\\n-\t$(am__append_5712) $(am__append_5717) $(am__append_5722) \\\n-\t$(am__append_5727) $(am__append_5732) $(am__append_5737) \\\n-\t$(am__append_5742) $(am__append_5747) $(am__append_5752) \\\n-\t$(am__append_5757) $(am__append_5762) $(am__append_5767) \\\n-\t$(am__append_5772) $(am__append_5777) $(am__append_5782) \\\n-\t$(am__append_5787) $(am__append_5794) gensyminfo.sh.in \\\n-\tgenmod.sh.in modinfo.sh.in gmodule.pl.in gdb_grub.in \\\n-\t$(am__append_5800)\n+\t$(am__append_5590) $(am__append_5595) $(am__append_5600) \\\n+\t$(am__append_5605) $(am__append_5610) $(am__append_5615) \\\n+\t$(am__append_5620) $(am__append_5625) $(am__append_5630) \\\n+\t$(am__append_5635) $(am__append_5640) $(am__append_5645) \\\n+\t$(am__append_5650) $(am__append_5655) $(am__append_5660) \\\n+\t$(am__append_5665) $(am__append_5670) $(am__append_5675) \\\n+\t$(am__append_5680) $(am__append_5685) $(am__append_5690) \\\n+\t$(am__append_5695) $(am__append_5700) $(am__append_5705) \\\n+\t$(am__append_5710) $(am__append_5715) $(am__append_5720) \\\n+\t$(am__append_5725) $(am__append_5730) $(am__append_5735) \\\n+\t$(am__append_5740) $(am__append_5745) $(am__append_5750) \\\n+\t$(am__append_5755) $(am__append_5760) $(am__append_5765) \\\n+\t$(am__append_5770) $(am__append_5775) $(am__append_5780) \\\n+\t$(am__append_5787) gensyminfo.sh.in genmod.sh.in modinfo.sh.in \\\n+\tgmodule.pl.in gdb_grub.in $(am__append_5793)\n platform_SCRIPTS = \n-EXTRA_DIST = $(am__append_5799)\n+EXTRA_DIST = $(am__append_5792)\n CLEANFILES = build-grub-pep2elf$(BUILD_EXEEXT) \\\n \tbuild-grub-pe2elf$(BUILD_EXEEXT) gentrigtables$(BUILD_EXEEXT) \\\n \tbuild-grub-module-verifier$(BUILD_EXEEXT) trigtables.c \\\n@@ -16862,48 +16838,48 @@ CLEANFILES = build-grub-pep2elf$(BUILD_EXEEXT) \\\n \t$(nodist_pgp_module_SOURCES) pgp.marker $(am__append_2044) \\\n \t$(am__append_2051) $(am__append_2058) $(am__append_2065) \\\n \t$(am__append_2072) $(am__append_2079) $(am__append_2086) \\\n-\t$(am__append_2093) $(am__append_2100) $(am__append_2107) \\\n+\t$(am__append_2093) $(am__append_2100) \\\n \t$(nodist_help_module_SOURCES) help.marker \\\n \t$(nodist_hexdump_module_SOURCES) hexdump.marker \\\n \t$(nodist_keystatus_module_SOURCES) keystatus.marker \\\n-\t$(am__append_2114) $(am__append_2121) \\\n+\t$(am__append_2107) $(am__append_2114) \\\n \t$(nodist_loadenv_module_SOURCES) loadenv.marker \\\n \t$(nodist_ls_module_SOURCES) ls.marker \\\n \t$(nodist_lsmmap_module_SOURCES) lsmmap.marker \\\n-\t$(am__append_2128) $(am__append_2135) $(am__append_2142) \\\n-\t$(am__append_2149) $(am__append_2156) $(am__append_2163) \\\n-\t$(am__append_2170) $(am__append_2177) \\\n+\t$(am__append_2121) $(am__append_2128) $(am__append_2135) \\\n+\t$(am__append_2142) $(am__append_2149) $(am__append_2156) \\\n+\t$(am__append_2163) $(am__append_2170) \\\n \t$(nodist_memrw_module_SOURCES) memrw.marker \\\n \t$(nodist_minicmd_module_SOURCES) minicmd.marker \\\n \t$(nodist_parttool_module_SOURCES) parttool.marker \\\n \t$(nodist_password_module_SOURCES) password.marker \\\n \t$(nodist_password_pbkdf2_module_SOURCES) \\\n-\tpassword_pbkdf2.marker $(am__append_2184) $(am__append_2191) \\\n-\t$(am__append_2198) $(am__append_2205) $(am__append_2212) \\\n-\t$(am__append_2219) $(am__append_2226) $(am__append_2233) \\\n-\t$(am__append_2240) $(am__append_2247) $(am__append_2254) \\\n-\t$(am__append_2261) $(am__append_2268) $(am__append_2275) \\\n-\t$(am__append_2282) $(am__append_2289) $(am__append_2296) \\\n-\t$(am__append_2303) $(am__append_2310) $(am__append_2317) \\\n-\t$(am__append_2324) $(nodist_probe_module_SOURCES) probe.marker \\\n+\tpassword_pbkdf2.marker $(am__append_2177) $(am__append_2184) \\\n+\t$(am__append_2191) $(am__append_2198) $(am__append_2205) \\\n+\t$(am__append_2212) $(am__append_2219) $(am__append_2226) \\\n+\t$(am__append_2233) $(am__append_2240) $(am__append_2247) \\\n+\t$(am__append_2254) $(am__append_2261) $(am__append_2268) \\\n+\t$(am__append_2275) $(am__append_2282) $(am__append_2289) \\\n+\t$(am__append_2296) $(am__append_2303) $(am__append_2310) \\\n+\t$(am__append_2317) $(nodist_probe_module_SOURCES) probe.marker \\\n \t$(nodist_read_module_SOURCES) read.marker \\\n \t$(nodist_search_module_SOURCES) search.marker \\\n \t$(nodist_search_fs_file_module_SOURCES) search_fs_file.marker \\\n \t$(nodist_search_fs_uuid_module_SOURCES) search_fs_uuid.marker \\\n \t$(nodist_search_label_module_SOURCES) search_label.marker \\\n-\t$(am__append_2331) $(am__append_2338) $(am__append_2345) \\\n-\t$(am__append_2352) $(am__append_2359) $(am__append_2366) \\\n-\t$(am__append_2373) $(am__append_2380) $(am__append_2387) \\\n-\t$(am__append_2394) $(am__append_2401) $(am__append_2408) \\\n-\t$(am__append_2415) $(am__append_2422) $(am__append_2429) \\\n-\t$(am__append_2436) $(nodist_sleep_module_SOURCES) sleep.marker \\\n-\t$(am__append_2443) $(am__append_2450) \\\n+\t$(am__append_2324) $(am__append_2331) $(am__append_2338) \\\n+\t$(am__append_2345) $(am__append_2352) $(am__append_2359) \\\n+\t$(am__append_2366) $(am__append_2373) $(am__append_2380) \\\n+\t$(am__append_2387) $(am__append_2394) $(am__append_2401) \\\n+\t$(am__append_2408) $(am__append_2415) $(am__append_2422) \\\n+\t$(am__append_2429) $(nodist_sleep_module_SOURCES) sleep.marker \\\n+\t$(am__append_2436) $(am__append_2443) \\\n \t$(nodist_terminal_module_SOURCES) terminal.marker \\\n \t$(nodist_test_module_SOURCES) test.marker \\\n-\t$(nodist_true_module_SOURCES) true.marker $(am__append_2457) \\\n-\t$(am__append_2464) $(am__append_2471) $(am__append_2478) \\\n-\t$(am__append_2485) $(am__append_2492) $(am__append_2499) \\\n-\t$(am__append_2506) $(am__append_2513) \\\n+\t$(nodist_true_module_SOURCES) true.marker $(am__append_2450) \\\n+\t$(am__append_2457) $(am__append_2464) $(am__append_2471) \\\n+\t$(am__append_2478) $(am__append_2485) $(am__append_2492) \\\n+\t$(am__append_2499) $(am__append_2506) \\\n \t$(nodist_videoinfo_module_SOURCES) videoinfo.marker \\\n \t$(nodist_videotest_module_SOURCES) videotest.marker \\\n \t$(nodist_xnu_uuid_module_SOURCES) xnu_uuid.marker \\\n@@ -16922,27 +16898,27 @@ CLEANFILES = build-grub-pep2elf$(BUILD_EXEEXT) \\\n \t$(nodist_raid6rec_module_SOURCES) raid6rec.marker \\\n \t$(nodist_scsi_module_SOURCES) scsi.marker \\\n \t$(nodist_memdisk_module_SOURCES) memdisk.marker \\\n-\t$(am__append_2520) $(am__append_2527) $(am__append_2534) \\\n-\t$(am__append_2541) $(am__append_2548) $(am__append_2555) \\\n-\t$(am__append_2562) $(am__append_2569) $(am__append_2576) \\\n-\t$(am__append_2583) $(am__append_2590) $(am__append_2597) \\\n-\t$(am__append_2604) $(am__append_2611) $(am__append_2618) \\\n-\t$(am__append_2625) $(am__append_2632) $(am__append_2639) \\\n-\t$(am__append_2646) $(am__append_2653) $(am__append_2660) \\\n-\t$(am__append_2667) $(am__append_2674) $(am__append_2681) \\\n-\t$(am__append_2688) $(am__append_2695) $(am__append_2702) \\\n-\t$(am__append_2709) $(am__append_2716) $(am__append_2723) \\\n-\t$(am__append_2730) $(am__append_2737) $(am__append_2744) \\\n-\t$(am__append_2751) $(am__append_2758) $(am__append_2765) \\\n-\t$(am__append_2772) $(am__append_2779) $(am__append_2786) \\\n-\t$(am__append_2793) $(am__append_2800) $(am__append_2807) \\\n-\t$(am__append_2814) $(am__append_2821) $(am__append_2828) \\\n-\t$(am__append_2835) $(am__append_2842) $(am__append_2849) \\\n-\t$(am__append_2856) $(am__append_2863) $(am__append_2870) \\\n-\t$(am__append_2877) $(am__append_2884) $(am__append_2891) \\\n-\t$(am__append_2898) $(am__append_2905) $(am__append_2912) \\\n-\t$(am__append_2919) $(am__append_2926) $(am__append_2933) \\\n-\t$(am__append_2940) $(nodist_procfs_module_SOURCES) \\\n+\t$(am__append_2513) $(am__append_2520) $(am__append_2527) \\\n+\t$(am__append_2534) $(am__append_2541) $(am__append_2548) \\\n+\t$(am__append_2555) $(am__append_2562) $(am__append_2569) \\\n+\t$(am__append_2576) $(am__append_2583) $(am__append_2590) \\\n+\t$(am__append_2597) $(am__append_2604) $(am__append_2611) \\\n+\t$(am__append_2618) $(am__append_2625) $(am__append_2632) \\\n+\t$(am__append_2639) $(am__append_2646) $(am__append_2653) \\\n+\t$(am__append_2660) $(am__append_2667) $(am__append_2674) \\\n+\t$(am__append_2681) $(am__append_2688) $(am__append_2695) \\\n+\t$(am__append_2702) $(am__append_2709) $(am__append_2716) \\\n+\t$(am__append_2723) $(am__append_2730) $(am__append_2737) \\\n+\t$(am__append_2744) $(am__append_2751) $(am__append_2758) \\\n+\t$(am__append_2765) $(am__append_2772) $(am__append_2779) \\\n+\t$(am__append_2786) $(am__append_2793) $(am__append_2800) \\\n+\t$(am__append_2807) $(am__append_2814) $(am__append_2821) \\\n+\t$(am__append_2828) $(am__append_2835) $(am__append_2842) \\\n+\t$(am__append_2849) $(am__append_2856) $(am__append_2863) \\\n+\t$(am__append_2870) $(am__append_2877) $(am__append_2884) \\\n+\t$(am__append_2891) $(am__append_2898) $(am__append_2905) \\\n+\t$(am__append_2912) $(am__append_2919) $(am__append_2926) \\\n+\t$(am__append_2933) $(nodist_procfs_module_SOURCES) \\\n \tprocfs.marker $(nodist_affs_module_SOURCES) affs.marker \\\n \t$(nodist_afs_module_SOURCES) afs.marker \\\n \t$(nodist_bfs_module_SOURCES) bfs.marker \\\n@@ -16987,70 +16963,70 @@ CLEANFILES = build-grub-pep2elf$(BUILD_EXEEXT) \\\n \t$(nodist_zfscrypt_module_SOURCES) zfscrypt.marker \\\n \t$(nodist_zfsinfo_module_SOURCES) zfsinfo.marker \\\n \t$(nodist_macbless_module_SOURCES) macbless.marker \\\n-\t$(am__append_2947) $(nodist_gettext_module_SOURCES) \\\n+\t$(am__append_2940) $(nodist_gettext_module_SOURCES) \\\n \tgettext.marker $(nodist_gfxmenu_module_SOURCES) gfxmenu.marker \\\n \t$(nodist_hello_module_SOURCES) hello.marker \\\n \t$(nodist_gzio_module_SOURCES) gzio.marker \\\n \t$(nodist_offsetio_module_SOURCES) offsetio.marker \\\n-\t$(am__append_2954) $(am__append_2961) $(am__append_2968) \\\n-\t$(am__append_2975) $(am__append_2982) $(am__append_2989) \\\n-\t$(am__append_2996) $(am__append_3003) $(am__append_3010) \\\n-\t$(am__append_3017) $(am__append_3024) $(am__append_3031) \\\n-\t$(am__append_3038) $(am__append_3045) $(am__append_3052) \\\n-\t$(am__append_3059) $(am__append_3066) $(am__append_3073) \\\n-\t$(am__append_3080) $(am__append_3087) \\\n+\t$(am__append_2947) $(am__append_2954) $(am__append_2961) \\\n+\t$(am__append_2968) $(am__append_2975) $(am__append_2982) \\\n+\t$(am__append_2989) $(am__append_2996) $(am__append_3003) \\\n+\t$(am__append_3010) $(am__append_3017) $(am__append_3024) \\\n+\t$(am__append_3031) $(am__append_3038) $(am__append_3045) \\\n+\t$(am__append_3052) $(am__append_3059) $(am__append_3066) \\\n+\t$(am__append_3073) $(am__append_3080) \\\n \t$(nodist_elf_module_SOURCES) elf.marker \\\n \t$(nodist_crypto_module_SOURCES) crypto.marker \\\n \t$(nodist_pbkdf2_module_SOURCES) pbkdf2.marker \\\n-\t$(am__append_3094) $(am__append_3101) $(am__append_3108) \\\n-\t$(am__append_3115) $(am__append_3122) $(am__append_3129) \\\n-\t$(am__append_3136) $(am__append_3143) $(am__append_3150) \\\n-\t$(am__append_3157) $(am__append_3164) $(am__append_3171) \\\n-\t$(am__append_3178) $(am__append_3185) $(am__append_3192) \\\n-\t$(am__append_3199) $(am__append_3206) $(am__append_3213) \\\n-\t$(am__append_3220) $(am__append_3227) $(am__append_3234) \\\n-\t$(am__append_3241) $(am__append_3248) $(am__append_3255) \\\n-\t$(am__append_3262) $(am__append_3269) $(am__append_3276) \\\n-\t$(am__append_3283) $(am__append_3290) $(am__append_3297) \\\n-\t$(am__append_3304) $(am__append_3311) $(am__append_3318) \\\n-\t$(am__append_3325) $(am__append_3332) $(am__append_3339) \\\n+\t$(am__append_3087) $(am__append_3094) $(am__append_3101) \\\n+\t$(am__append_3108) $(am__append_3115) $(am__append_3122) \\\n+\t$(am__append_3129) $(am__append_3136) $(am__append_3143) \\\n+\t$(am__append_3150) $(am__append_3157) $(am__append_3164) \\\n+\t$(am__append_3171) $(am__append_3178) $(am__append_3185) \\\n+\t$(am__append_3192) $(am__append_3199) $(am__append_3206) \\\n+\t$(am__append_3213) $(am__append_3220) $(am__append_3227) \\\n+\t$(am__append_3234) $(am__append_3241) $(am__append_3248) \\\n+\t$(am__append_3255) $(am__append_3262) $(am__append_3269) \\\n+\t$(am__append_3276) $(am__append_3283) $(am__append_3290) \\\n+\t$(am__append_3297) $(am__append_3304) $(am__append_3311) \\\n+\t$(am__append_3318) $(am__append_3325) $(am__append_3332) \\\n \t$(nodist_setjmp_module_SOURCES) setjmp.marker \\\n-\t$(am__append_3346) $(am__append_3353) $(am__append_3360) \\\n-\t$(am__append_3367) $(am__append_3374) $(am__append_3381) \\\n-\t$(am__append_3388) $(am__append_3395) $(am__append_3402) \\\n-\t$(am__append_3409) $(am__append_3416) $(am__append_3423) \\\n-\t$(am__append_3430) $(am__append_3437) $(am__append_3444) \\\n-\t$(am__append_3451) $(am__append_3458) $(am__append_3465) \\\n-\t$(am__append_3472) $(am__append_3479) $(am__append_3486) \\\n-\t$(am__append_3493) $(am__append_3500) $(am__append_3507) \\\n-\t$(am__append_3514) $(am__append_3521) $(am__append_3528) \\\n-\t$(am__append_3535) $(am__append_3542) $(am__append_3549) \\\n-\t$(am__append_3556) $(am__append_3563) $(am__append_3570) \\\n-\t$(am__append_3577) $(am__append_3584) $(am__append_3591) \\\n-\t$(am__append_3598) $(am__append_3605) $(am__append_3612) \\\n-\t$(am__append_3619) $(am__append_3626) $(am__append_3633) \\\n-\t$(am__append_3640) $(am__append_3647) $(am__append_3654) \\\n-\t$(am__append_3661) $(am__append_3668) $(am__append_3675) \\\n-\t$(am__append_3682) $(am__append_3689) $(am__append_3696) \\\n-\t$(am__append_3703) $(am__append_3710) $(am__append_3717) \\\n-\t$(am__append_3724) $(am__append_3731) $(am__append_3738) \\\n-\t$(am__append_3745) $(am__append_3752) $(am__append_3759) \\\n-\t$(am__append_3766) $(am__append_3773) $(am__append_3780) \\\n-\t$(am__append_3787) $(am__append_3794) $(am__append_3801) \\\n-\t$(am__append_3808) $(am__append_3815) $(am__append_3822) \\\n-\t$(am__append_3829) $(am__append_3836) $(am__append_3843) \\\n-\t$(am__append_3850) $(am__append_3857) $(am__append_3864) \\\n-\t$(am__append_3871) $(am__append_3878) $(am__append_3885) \\\n-\t$(nodist_macho_module_SOURCES) macho.marker $(am__append_3892) \\\n-\t$(am__append_3899) $(am__append_3906) $(am__append_3913) \\\n-\t$(am__append_3920) $(am__append_3927) $(am__append_3934) \\\n-\t$(am__append_3941) $(am__append_3948) $(am__append_3955) \\\n-\t$(am__append_3962) $(am__append_3969) $(am__append_3976) \\\n-\t$(am__append_3983) $(am__append_3990) $(am__append_3997) \\\n-\t$(am__append_4004) $(am__append_4011) $(am__append_4018) \\\n-\t$(am__append_4025) $(am__append_4032) $(am__append_4039) \\\n-\t$(am__append_4046) $(am__append_4053) $(am__append_4060) \\\n-\t$(am__append_4067) $(am__append_4074) \\\n+\t$(am__append_3339) $(am__append_3346) $(am__append_3353) \\\n+\t$(am__append_3360) $(am__append_3367) $(am__append_3374) \\\n+\t$(am__append_3381) $(am__append_3388) $(am__append_3395) \\\n+\t$(am__append_3402) $(am__append_3409) $(am__append_3416) \\\n+\t$(am__append_3423) $(am__append_3430) $(am__append_3437) \\\n+\t$(am__append_3444) $(am__append_3451) $(am__append_3458) \\\n+\t$(am__append_3465) $(am__append_3472) $(am__append_3479) \\\n+\t$(am__append_3486) $(am__append_3493) $(am__append_3500) \\\n+\t$(am__append_3507) $(am__append_3514) $(am__append_3521) \\\n+\t$(am__append_3528) $(am__append_3535) $(am__append_3542) \\\n+\t$(am__append_3549) $(am__append_3556) $(am__append_3563) \\\n+\t$(am__append_3570) $(am__append_3577) $(am__append_3584) \\\n+\t$(am__append_3591) $(am__append_3598) $(am__append_3605) \\\n+\t$(am__append_3612) $(am__append_3619) $(am__append_3626) \\\n+\t$(am__append_3633) $(am__append_3640) $(am__append_3647) \\\n+\t$(am__append_3654) $(am__append_3661) $(am__append_3668) \\\n+\t$(am__append_3675) $(am__append_3682) $(am__append_3689) \\\n+\t$(am__append_3696) $(am__append_3703) $(am__append_3710) \\\n+\t$(am__append_3717) $(am__append_3724) $(am__append_3731) \\\n+\t$(am__append_3738) $(am__append_3745) $(am__append_3752) \\\n+\t$(am__append_3759) $(am__append_3766) $(am__append_3773) \\\n+\t$(am__append_3780) $(am__append_3787) $(am__append_3794) \\\n+\t$(am__append_3801) $(am__append_3808) $(am__append_3815) \\\n+\t$(am__append_3822) $(am__append_3829) $(am__append_3836) \\\n+\t$(am__append_3843) $(am__append_3850) $(am__append_3857) \\\n+\t$(am__append_3864) $(am__append_3871) $(am__append_3878) \\\n+\t$(nodist_macho_module_SOURCES) macho.marker $(am__append_3885) \\\n+\t$(am__append_3892) $(am__append_3899) $(am__append_3906) \\\n+\t$(am__append_3913) $(am__append_3920) $(am__append_3927) \\\n+\t$(am__append_3934) $(am__append_3941) $(am__append_3948) \\\n+\t$(am__append_3955) $(am__append_3962) $(am__append_3969) \\\n+\t$(am__append_3976) $(am__append_3983) $(am__append_3990) \\\n+\t$(am__append_3997) $(am__append_4004) $(am__append_4011) \\\n+\t$(am__append_4018) $(am__append_4025) $(am__append_4032) \\\n+\t$(am__append_4039) $(am__append_4046) $(am__append_4053) \\\n+\t$(am__append_4060) $(am__append_4067) \\\n \t$(nodist_normal_module_SOURCES) normal.marker \\\n \t$(nodist_part_acorn_module_SOURCES) part_acorn.marker \\\n \t$(nodist_part_amiga_module_SOURCES) part_amiga.marker \\\n@@ -17064,35 +17040,35 @@ CLEANFILES = build-grub-pep2elf$(BUILD_EXEEXT) \\\n \t$(nodist_part_sunpc_module_SOURCES) part_sunpc.marker \\\n \t$(nodist_part_dfly_module_SOURCES) part_dfly.marker \\\n \t$(nodist_msdospart_module_SOURCES) msdospart.marker \\\n-\t$(am__append_4081) $(am__append_4088) $(am__append_4095) \\\n-\t$(am__append_4102) $(am__append_4109) $(am__append_4116) \\\n-\t$(am__append_4123) $(am__append_4130) $(am__append_4137) \\\n-\t$(am__append_4144) $(am__append_4151) $(am__append_4158) \\\n-\t$(am__append_4165) $(am__append_4172) $(am__append_4179) \\\n-\t$(am__append_4186) $(am__append_4193) $(am__append_4200) \\\n-\t$(am__append_4207) $(am__append_4214) $(am__append_4221) \\\n-\t$(am__append_4228) $(am__append_4235) $(am__append_4242) \\\n-\t$(am__append_4249) $(am__append_4256) $(am__append_4263) \\\n+\t$(am__append_4074) $(am__append_4081) $(am__append_4088) \\\n+\t$(am__append_4095) $(am__append_4102) $(am__append_4109) \\\n+\t$(am__append_4116) $(am__append_4123) $(am__append_4130) \\\n+\t$(am__append_4137) $(am__append_4144) $(am__append_4151) \\\n+\t$(am__append_4158) $(am__append_4165) $(am__append_4172) \\\n+\t$(am__append_4179) $(am__append_4186) $(am__append_4193) \\\n+\t$(am__append_4200) $(am__append_4207) $(am__append_4214) \\\n+\t$(am__append_4221) $(am__append_4228) $(am__append_4235) \\\n+\t$(am__append_4242) $(am__append_4249) $(am__append_4256) \\\n \t$(nodist_gfxterm_background_module_SOURCES) \\\n-\tgfxterm_background.marker $(am__append_4270) \\\n-\t$(am__append_4277) $(am__append_4284) $(am__append_4291) \\\n-\t$(am__append_4298) $(am__append_4305) $(am__append_4312) \\\n-\t$(am__append_4319) $(am__append_4326) $(am__append_4333) \\\n-\t$(am__append_4340) $(am__append_4347) $(am__append_4354) \\\n-\t$(am__append_4361) $(am__append_4368) $(am__append_4375) \\\n-\t$(am__append_4382) $(am__append_4389) $(am__append_4396) \\\n-\t$(am__append_4403) $(am__append_4410) $(am__append_4417) \\\n-\t$(am__append_4424) $(am__append_4431) $(am__append_4438) \\\n-\t$(am__append_4445) $(am__append_4452) $(am__append_4459) \\\n-\t$(am__append_4466) $(am__append_4473) $(am__append_4480) \\\n-\t$(am__append_4487) $(am__append_4494) $(am__append_4501) \\\n-\t$(am__append_4508) $(am__append_4515) $(am__append_4522) \\\n-\t$(am__append_4529) $(am__append_4536) $(am__append_4543) \\\n-\t$(am__append_4550) $(am__append_4557) $(am__append_4564) \\\n-\t$(am__append_4571) $(am__append_4578) $(am__append_4585) \\\n-\t$(am__append_4592) $(am__append_4599) $(am__append_4606) \\\n-\t$(am__append_4613) $(am__append_4620) $(am__append_4627) \\\n-\t$(am__append_4634) $(am__append_4641) $(am__append_4648) \\\n+\tgfxterm_background.marker $(am__append_4263) \\\n+\t$(am__append_4270) $(am__append_4277) $(am__append_4284) \\\n+\t$(am__append_4291) $(am__append_4298) $(am__append_4305) \\\n+\t$(am__append_4312) $(am__append_4319) $(am__append_4326) \\\n+\t$(am__append_4333) $(am__append_4340) $(am__append_4347) \\\n+\t$(am__append_4354) $(am__append_4361) $(am__append_4368) \\\n+\t$(am__append_4375) $(am__append_4382) $(am__append_4389) \\\n+\t$(am__append_4396) $(am__append_4403) $(am__append_4410) \\\n+\t$(am__append_4417) $(am__append_4424) $(am__append_4431) \\\n+\t$(am__append_4438) $(am__append_4445) $(am__append_4452) \\\n+\t$(am__append_4459) $(am__append_4466) $(am__append_4473) \\\n+\t$(am__append_4480) $(am__append_4487) $(am__append_4494) \\\n+\t$(am__append_4501) $(am__append_4508) $(am__append_4515) \\\n+\t$(am__append_4522) $(am__append_4529) $(am__append_4536) \\\n+\t$(am__append_4543) $(am__append_4550) $(am__append_4557) \\\n+\t$(am__append_4564) $(am__append_4571) $(am__append_4578) \\\n+\t$(am__append_4585) $(am__append_4592) $(am__append_4599) \\\n+\t$(am__append_4606) $(am__append_4613) $(am__append_4620) \\\n+\t$(am__append_4627) $(am__append_4634) $(am__append_4641) \\\n \t$(nodist_functional_test_module_SOURCES) \\\n \tfunctional_test.marker $(nodist_exfctest_module_SOURCES) \\\n \texfctest.marker $(nodist_strtoull_test_module_SOURCES) \\\n@@ -17101,15 +17077,15 @@ CLEANFILES = build-grub-pep2elf$(BUILD_EXEEXT) \\\n \tsignature_test.marker $(nodist_sleep_test_module_SOURCES) \\\n \tsleep_test.marker $(nodist_xnu_uuid_test_module_SOURCES) \\\n \txnu_uuid_test.marker $(nodist_pbkdf2_test_module_SOURCES) \\\n-\tpbkdf2_test.marker $(am__append_4655) $(am__append_4662) \\\n-\t$(am__append_4669) $(am__append_4676) $(am__append_4683) \\\n-\t$(am__append_4690) $(am__append_4697) $(am__append_4704) \\\n-\t$(am__append_4711) $(am__append_4718) $(am__append_4725) \\\n-\t$(am__append_4732) $(am__append_4739) $(am__append_4746) \\\n-\t$(am__append_4753) $(am__append_4760) $(am__append_4767) \\\n-\t$(am__append_4774) $(am__append_4781) $(am__append_4788) \\\n-\t$(am__append_4795) $(am__append_4802) $(am__append_4809) \\\n-\t$(am__append_4816) $(am__append_4823) \\\n+\tpbkdf2_test.marker $(am__append_4648) $(am__append_4655) \\\n+\t$(am__append_4662) $(am__append_4669) $(am__append_4676) \\\n+\t$(am__append_4683) $(am__append_4690) $(am__append_4697) \\\n+\t$(am__append_4704) $(am__append_4711) $(am__append_4718) \\\n+\t$(am__append_4725) $(am__append_4732) $(am__append_4739) \\\n+\t$(am__append_4746) $(am__append_4753) $(am__append_4760) \\\n+\t$(am__append_4767) $(am__append_4774) $(am__append_4781) \\\n+\t$(am__append_4788) $(am__append_4795) $(am__append_4802) \\\n+\t$(am__append_4809) $(am__append_4816) \\\n \t$(nodist_div_test_module_SOURCES) div_test.marker \\\n \t$(nodist_mul_test_module_SOURCES) mul_test.marker \\\n \t$(nodist_shift_test_module_SOURCES) shift_test.marker \\\n@@ -17122,65 +17098,65 @@ CLEANFILES = build-grub-pep2elf$(BUILD_EXEEXT) \\\n \t$(nodist_cmdline_cat_test_module_SOURCES) \\\n \tcmdline_cat_test.marker $(nodist_bitmap_module_SOURCES) \\\n \tbitmap.marker $(nodist_bitmap_scale_module_SOURCES) \\\n-\tbitmap_scale.marker $(am__append_4830) $(am__append_4837) \\\n-\t$(am__append_4844) $(am__append_4851) $(am__append_4858) \\\n-\t$(am__append_4865) $(am__append_4872) $(am__append_4879) \\\n-\t$(am__append_4886) $(nodist_jpeg_module_SOURCES) jpeg.marker \\\n+\tbitmap_scale.marker $(am__append_4823) $(am__append_4830) \\\n+\t$(am__append_4837) $(am__append_4844) $(am__append_4851) \\\n+\t$(am__append_4858) $(am__append_4865) $(am__append_4872) \\\n+\t$(am__append_4879) $(nodist_jpeg_module_SOURCES) jpeg.marker \\\n \t$(nodist_png_module_SOURCES) png.marker \\\n-\t$(nodist_tga_module_SOURCES) tga.marker $(am__append_4893) \\\n-\t$(am__append_4900) $(am__append_4907) $(am__append_4914) \\\n-\t$(am__append_4921) $(am__append_4928) $(am__append_4935) \\\n-\t$(am__append_4942) $(am__append_4949) $(am__append_4956) \\\n-\t$(am__append_4963) $(am__append_4970) $(am__append_4977) \\\n-\t$(am__append_4984) $(am__append_4991) $(am__append_4998) \\\n-\t$(am__append_5005) $(am__append_5012) $(am__append_5019) \\\n-\t$(am__append_5026) $(am__append_5033) $(am__append_5040) \\\n-\t$(am__append_5047) $(am__append_5054) $(am__append_5061) \\\n-\t$(am__append_5068) $(am__append_5075) $(am__append_5082) \\\n-\t$(am__append_5089) $(am__append_5096) $(am__append_5103) \\\n-\t$(am__append_5110) $(am__append_5117) $(am__append_5124) \\\n-\t$(am__append_5131) $(am__append_5138) $(am__append_5145) \\\n-\t$(am__append_5152) $(am__append_5159) $(am__append_5166) \\\n-\t$(am__append_5173) $(nodist_video_colors_module_SOURCES) \\\n-\tvideo_colors.marker $(am__append_5180) $(am__append_5187) \\\n+\t$(nodist_tga_module_SOURCES) tga.marker $(am__append_4886) \\\n+\t$(am__append_4893) $(am__append_4900) $(am__append_4907) \\\n+\t$(am__append_4914) $(am__append_4921) $(am__append_4928) \\\n+\t$(am__append_4935) $(am__append_4942) $(am__append_4949) \\\n+\t$(am__append_4956) $(am__append_4963) $(am__append_4970) \\\n+\t$(am__append_4977) $(am__append_4984) $(am__append_4991) \\\n+\t$(am__append_4998) $(am__append_5005) $(am__append_5012) \\\n+\t$(am__append_5019) $(am__append_5026) $(am__append_5033) \\\n+\t$(am__append_5040) $(am__append_5047) $(am__append_5054) \\\n+\t$(am__append_5061) $(am__append_5068) $(am__append_5075) \\\n+\t$(am__append_5082) $(am__append_5089) $(am__append_5096) \\\n+\t$(am__append_5103) $(am__append_5110) $(am__append_5117) \\\n+\t$(am__append_5124) $(am__append_5131) $(am__append_5138) \\\n+\t$(am__append_5145) $(am__append_5152) $(am__append_5159) \\\n+\t$(am__append_5166) $(nodist_video_colors_module_SOURCES) \\\n+\tvideo_colors.marker $(am__append_5173) $(am__append_5180) \\\n \t$(nodist_datehook_module_SOURCES) datehook.marker \\\n \t$(nodist_net_module_SOURCES) net.marker \\\n \t$(nodist_tftp_module_SOURCES) tftp.marker \\\n-\t$(nodist_http_module_SOURCES) http.marker $(am__append_5194) \\\n-\t$(am__append_5201) $(am__append_5208) $(am__append_5215) \\\n-\t$(am__append_5222) $(am__append_5229) $(am__append_5236) \\\n-\t$(am__append_5243) $(am__append_5250) $(am__append_5257) \\\n-\t$(am__append_5264) $(am__append_5271) $(am__append_5278) \\\n-\t$(am__append_5285) $(am__append_5292) $(am__append_5299) \\\n-\t$(am__append_5306) $(am__append_5313) \\\n+\t$(nodist_http_module_SOURCES) http.marker $(am__append_5187) \\\n+\t$(am__append_5194) $(am__append_5201) $(am__append_5208) \\\n+\t$(am__append_5215) $(am__append_5222) $(am__append_5229) \\\n+\t$(am__append_5236) $(am__append_5243) $(am__append_5250) \\\n+\t$(am__append_5257) $(am__append_5264) $(am__append_5271) \\\n+\t$(am__append_5278) $(am__append_5285) $(am__append_5292) \\\n+\t$(am__append_5299) $(am__append_5306) \\\n \t$(nodist_syslinuxcfg_module_SOURCES) syslinuxcfg.marker \\\n \t$(nodist_test_blockarg_module_SOURCES) test_blockarg.marker \\\n \t$(nodist_xzio_module_SOURCES) xzio.marker \\\n \t$(nodist_lzopio_module_SOURCES) lzopio.marker \\\n \t$(nodist_testload_module_SOURCES) testload.marker \\\n-\t$(am__append_5320) $(am__append_5327) $(am__append_5334) \\\n-\t$(am__append_5341) $(am__append_5348) $(am__append_5355) \\\n-\t$(am__append_5362) $(am__append_5369) $(am__append_5376) \\\n-\t$(am__append_5383) $(am__append_5390) $(am__append_5397) \\\n-\t$(am__append_5404) $(am__append_5411) $(am__append_5418) \\\n-\t$(am__append_5425) $(am__append_5432) \\\n+\t$(am__append_5313) $(am__append_5320) $(am__append_5327) \\\n+\t$(am__append_5334) $(am__append_5341) $(am__append_5348) \\\n+\t$(am__append_5355) $(am__append_5362) $(am__append_5369) \\\n+\t$(am__append_5376) $(am__append_5383) $(am__append_5390) \\\n+\t$(am__append_5397) $(am__append_5404) $(am__append_5411) \\\n+\t$(am__append_5418) $(am__append_5425) \\\n \t$(nodist_priority_queue_module_SOURCES) priority_queue.marker \\\n-\t$(nodist_time_module_SOURCES) time.marker $(am__append_5439) \\\n-\t$(am__append_5446) $(nodist_adler32_module_SOURCES) \\\n+\t$(nodist_time_module_SOURCES) time.marker $(am__append_5432) \\\n+\t$(am__append_5439) $(nodist_adler32_module_SOURCES) \\\n \tadler32.marker $(nodist_crc64_module_SOURCES) crc64.marker \\\n \t$(nodist_mpi_module_SOURCES) mpi.marker \\\n \t$(nodist_all_video_module_SOURCES) all_video.marker \\\n-\t$(am__append_5453) $(am__append_5460) $(am__append_5467) \\\n-\t$(am__append_5474) $(am__append_5481) $(am__append_5488) \\\n+\t$(am__append_5446) $(am__append_5453) $(am__append_5460) \\\n+\t$(am__append_5467) $(am__append_5474) $(am__append_5481) \\\n \t$(nodist_testspeed_module_SOURCES) testspeed.marker \\\n-\t$(am__append_5495) $(nodist_tr_module_SOURCES) tr.marker \\\n+\t$(am__append_5488) $(nodist_tr_module_SOURCES) tr.marker \\\n \t$(nodist_progress_module_SOURCES) progress.marker \\\n-\t$(nodist_file_module_SOURCES) file.marker $(am__append_5502) \\\n-\t$(am__append_5509) $(am__append_5516) $(am__append_5523) \\\n-\t$(am__append_5530) $(am__append_5537) $(am__append_5544) \\\n-\t$(am__append_5551) $(am__append_5558) $(am__append_5565) \\\n-\t$(am__append_5572) $(am__append_5579) $(am__append_5586) \\\n-\t$(am__append_5593) $(nodist_gcry_arcfour_module_SOURCES) \\\n+\t$(nodist_file_module_SOURCES) file.marker $(am__append_5495) \\\n+\t$(am__append_5502) $(am__append_5509) $(am__append_5516) \\\n+\t$(am__append_5523) $(am__append_5530) $(am__append_5537) \\\n+\t$(am__append_5544) $(am__append_5551) $(am__append_5558) \\\n+\t$(am__append_5565) $(am__append_5572) $(am__append_5579) \\\n+\t$(am__append_5586) $(nodist_gcry_arcfour_module_SOURCES) \\\n \tgcry_arcfour.marker $(nodist_gcry_blowfish_module_SOURCES) \\\n \tgcry_blowfish.marker $(nodist_gcry_camellia_module_SOURCES) \\\n \tgcry_camellia.marker $(nodist_gcry_cast5_module_SOURCES) \\\n@@ -17202,25 +17178,25 @@ CLEANFILES = build-grub-pep2elf$(BUILD_EXEEXT) \\\n \tgcry_sha512.marker $(nodist_gcry_tiger_module_SOURCES) \\\n \tgcry_tiger.marker $(nodist_gcry_twofish_module_SOURCES) \\\n \tgcry_twofish.marker $(nodist_gcry_whirlpool_module_SOURCES) \\\n-\tgcry_whirlpool.marker $(am__append_5599) $(am__append_5604) \\\n-\t$(am__append_5609) $(am__append_5614) $(am__append_5619) \\\n-\t$(am__append_5624) $(am__append_5629) $(am__append_5634) \\\n-\t$(am__append_5639) $(am__append_5644) $(am__append_5649) \\\n-\t$(am__append_5654) $(am__append_5659) $(am__append_5664) \\\n-\t$(am__append_5669) $(am__append_5674) $(am__append_5679) \\\n-\t$(am__append_5684) $(am__append_5689) $(am__append_5694) \\\n-\t$(am__append_5699) $(am__append_5704) $(am__append_5709) \\\n-\t$(am__append_5714) $(am__append_5719) $(am__append_5724) \\\n-\t$(am__append_5729) $(am__append_5734) $(am__append_5739) \\\n-\t$(am__append_5744) $(am__append_5749) $(am__append_5754) \\\n-\t$(am__append_5759) $(am__append_5764) $(am__append_5769) \\\n-\t$(am__append_5774) $(am__append_5779) $(am__append_5784) \\\n-\t$(am__append_5789) $(am__append_5793) $(am__append_5796) \\\n+\tgcry_whirlpool.marker $(am__append_5592) $(am__append_5597) \\\n+\t$(am__append_5602) $(am__append_5607) $(am__append_5612) \\\n+\t$(am__append_5617) $(am__append_5622) $(am__append_5627) \\\n+\t$(am__append_5632) $(am__append_5637) $(am__append_5642) \\\n+\t$(am__append_5647) $(am__append_5652) $(am__append_5657) \\\n+\t$(am__append_5662) $(am__append_5667) $(am__append_5672) \\\n+\t$(am__append_5677) $(am__append_5682) $(am__append_5687) \\\n+\t$(am__append_5692) $(am__append_5697) $(am__append_5702) \\\n+\t$(am__append_5707) $(am__append_5712) $(am__append_5717) \\\n+\t$(am__append_5722) $(am__append_5727) $(am__append_5732) \\\n+\t$(am__append_5737) $(am__append_5742) $(am__append_5747) \\\n+\t$(am__append_5752) $(am__append_5757) $(am__append_5762) \\\n+\t$(am__append_5767) $(am__append_5772) $(am__append_5777) \\\n+\t$(am__append_5782) $(am__append_5786) $(am__append_5789) \\\n \tgensyminfo.sh genmod.sh modinfo.sh gmodule.pl gdb_grub \\\n-\t$(am__append_5798) symlist.h symlist.c kernel_syms.lst \\\n-\t$(am__append_5830) fs.lst command.lst partmap.lst terminal.lst \\\n+\t$(am__append_5791) symlist.h symlist.c kernel_syms.lst \\\n+\t$(am__append_5823) fs.lst command.lst partmap.lst terminal.lst \\\n \tfdt.lst parttool.lst video.lst crypto.lst config.log \\\n-\tsyminfo.lst moddep.lst $(MOD_FILES) $(am__append_5832)\n+\tsyminfo.lst moddep.lst $(MOD_FILES) $(am__append_5825)\n BUILT_SOURCES = $(nodist_disk_module_SOURCES) \\\n \t$(nodist_trig_module_SOURCES) $(am__append_6) $(am__append_13) \\\n \t$(am__append_20) $(am__append_27) $(am__append_34) \\\n@@ -17329,42 +17305,41 @@ BUILT_SOURCES = $(nodist_disk_module_SOURCES) \\\n \t$(am__append_2043) $(am__append_2050) $(am__append_2057) \\\n \t$(am__append_2064) $(am__append_2071) $(am__append_2078) \\\n \t$(am__append_2085) $(am__append_2092) $(am__append_2099) \\\n-\t$(am__append_2106) $(nodist_help_module_SOURCES) \\\n-\t$(nodist_hexdump_module_SOURCES) \\\n-\t$(nodist_keystatus_module_SOURCES) $(am__append_2113) \\\n-\t$(am__append_2120) $(nodist_loadenv_module_SOURCES) \\\n+\t$(nodist_help_module_SOURCES) $(nodist_hexdump_module_SOURCES) \\\n+\t$(nodist_keystatus_module_SOURCES) $(am__append_2106) \\\n+\t$(am__append_2113) $(nodist_loadenv_module_SOURCES) \\\n \t$(nodist_ls_module_SOURCES) $(nodist_lsmmap_module_SOURCES) \\\n-\t$(am__append_2127) $(am__append_2134) $(am__append_2141) \\\n-\t$(am__append_2148) $(am__append_2155) $(am__append_2162) \\\n-\t$(am__append_2169) $(am__append_2176) \\\n+\t$(am__append_2120) $(am__append_2127) $(am__append_2134) \\\n+\t$(am__append_2141) $(am__append_2148) $(am__append_2155) \\\n+\t$(am__append_2162) $(am__append_2169) \\\n \t$(nodist_memrw_module_SOURCES) \\\n \t$(nodist_minicmd_module_SOURCES) \\\n \t$(nodist_parttool_module_SOURCES) \\\n \t$(nodist_password_module_SOURCES) \\\n-\t$(nodist_password_pbkdf2_module_SOURCES) $(am__append_2183) \\\n-\t$(am__append_2190) $(am__append_2197) $(am__append_2204) \\\n-\t$(am__append_2211) $(am__append_2218) $(am__append_2225) \\\n-\t$(am__append_2232) $(am__append_2239) $(am__append_2246) \\\n-\t$(am__append_2253) $(am__append_2260) $(am__append_2267) \\\n-\t$(am__append_2274) $(am__append_2281) $(am__append_2288) \\\n-\t$(am__append_2295) $(am__append_2302) $(am__append_2309) \\\n-\t$(am__append_2316) $(am__append_2323) \\\n+\t$(nodist_password_pbkdf2_module_SOURCES) $(am__append_2176) \\\n+\t$(am__append_2183) $(am__append_2190) $(am__append_2197) \\\n+\t$(am__append_2204) $(am__append_2211) $(am__append_2218) \\\n+\t$(am__append_2225) $(am__append_2232) $(am__append_2239) \\\n+\t$(am__append_2246) $(am__append_2253) $(am__append_2260) \\\n+\t$(am__append_2267) $(am__append_2274) $(am__append_2281) \\\n+\t$(am__append_2288) $(am__append_2295) $(am__append_2302) \\\n+\t$(am__append_2309) $(am__append_2316) \\\n \t$(nodist_probe_module_SOURCES) $(nodist_read_module_SOURCES) \\\n \t$(nodist_search_module_SOURCES) \\\n \t$(nodist_search_fs_file_module_SOURCES) \\\n \t$(nodist_search_fs_uuid_module_SOURCES) \\\n-\t$(nodist_search_label_module_SOURCES) $(am__append_2330) \\\n-\t$(am__append_2337) $(am__append_2344) $(am__append_2351) \\\n-\t$(am__append_2358) $(am__append_2365) $(am__append_2372) \\\n-\t$(am__append_2379) $(am__append_2386) $(am__append_2393) \\\n-\t$(am__append_2400) $(am__append_2407) $(am__append_2414) \\\n-\t$(am__append_2421) $(am__append_2428) $(am__append_2435) \\\n-\t$(nodist_sleep_module_SOURCES) $(am__append_2442) \\\n-\t$(am__append_2449) $(nodist_terminal_module_SOURCES) \\\n+\t$(nodist_search_label_module_SOURCES) $(am__append_2323) \\\n+\t$(am__append_2330) $(am__append_2337) $(am__append_2344) \\\n+\t$(am__append_2351) $(am__append_2358) $(am__append_2365) \\\n+\t$(am__append_2372) $(am__append_2379) $(am__append_2386) \\\n+\t$(am__append_2393) $(am__append_2400) $(am__append_2407) \\\n+\t$(am__append_2414) $(am__append_2421) $(am__append_2428) \\\n+\t$(nodist_sleep_module_SOURCES) $(am__append_2435) \\\n+\t$(am__append_2442) $(nodist_terminal_module_SOURCES) \\\n \t$(nodist_test_module_SOURCES) $(nodist_true_module_SOURCES) \\\n-\t$(am__append_2456) $(am__append_2463) $(am__append_2470) \\\n-\t$(am__append_2477) $(am__append_2484) $(am__append_2491) \\\n-\t$(am__append_2498) $(am__append_2505) $(am__append_2512) \\\n+\t$(am__append_2449) $(am__append_2456) $(am__append_2463) \\\n+\t$(am__append_2470) $(am__append_2477) $(am__append_2484) \\\n+\t$(am__append_2491) $(am__append_2498) $(am__append_2505) \\\n \t$(nodist_videoinfo_module_SOURCES) \\\n \t$(nodist_videotest_module_SOURCES) \\\n \t$(nodist_xnu_uuid_module_SOURCES) \\\n@@ -17380,27 +17355,27 @@ BUILT_SOURCES = $(nodist_disk_module_SOURCES) \\\n \t$(nodist_raid5rec_module_SOURCES) \\\n \t$(nodist_raid6rec_module_SOURCES) \\\n \t$(nodist_scsi_module_SOURCES) $(nodist_memdisk_module_SOURCES) \\\n-\t$(am__append_2519) $(am__append_2526) $(am__append_2533) \\\n-\t$(am__append_2540) $(am__append_2547) $(am__append_2554) \\\n-\t$(am__append_2561) $(am__append_2568) $(am__append_2575) \\\n-\t$(am__append_2582) $(am__append_2589) $(am__append_2596) \\\n-\t$(am__append_2603) $(am__append_2610) $(am__append_2617) \\\n-\t$(am__append_2624) $(am__append_2631) $(am__append_2638) \\\n-\t$(am__append_2645) $(am__append_2652) $(am__append_2659) \\\n-\t$(am__append_2666) $(am__append_2673) $(am__append_2680) \\\n-\t$(am__append_2687) $(am__append_2694) $(am__append_2701) \\\n-\t$(am__append_2708) $(am__append_2715) $(am__append_2722) \\\n-\t$(am__append_2729) $(am__append_2736) $(am__append_2743) \\\n-\t$(am__append_2750) $(am__append_2757) $(am__append_2764) \\\n-\t$(am__append_2771) $(am__append_2778) $(am__append_2785) \\\n-\t$(am__append_2792) $(am__append_2799) $(am__append_2806) \\\n-\t$(am__append_2813) $(am__append_2820) $(am__append_2827) \\\n-\t$(am__append_2834) $(am__append_2841) $(am__append_2848) \\\n-\t$(am__append_2855) $(am__append_2862) $(am__append_2869) \\\n-\t$(am__append_2876) $(am__append_2883) $(am__append_2890) \\\n-\t$(am__append_2897) $(am__append_2904) $(am__append_2911) \\\n-\t$(am__append_2918) $(am__append_2925) $(am__append_2932) \\\n-\t$(am__append_2939) $(nodist_procfs_module_SOURCES) \\\n+\t$(am__append_2512) $(am__append_2519) $(am__append_2526) \\\n+\t$(am__append_2533) $(am__append_2540) $(am__append_2547) \\\n+\t$(am__append_2554) $(am__append_2561) $(am__append_2568) \\\n+\t$(am__append_2575) $(am__append_2582) $(am__append_2589) \\\n+\t$(am__append_2596) $(am__append_2603) $(am__append_2610) \\\n+\t$(am__append_2617) $(am__append_2624) $(am__append_2631) \\\n+\t$(am__append_2638) $(am__append_2645) $(am__append_2652) \\\n+\t$(am__append_2659) $(am__append_2666) $(am__append_2673) \\\n+\t$(am__append_2680) $(am__append_2687) $(am__append_2694) \\\n+\t$(am__append_2701) $(am__append_2708) $(am__append_2715) \\\n+\t$(am__append_2722) $(am__append_2729) $(am__append_2736) \\\n+\t$(am__append_2743) $(am__append_2750) $(am__append_2757) \\\n+\t$(am__append_2764) $(am__append_2771) $(am__append_2778) \\\n+\t$(am__append_2785) $(am__append_2792) $(am__append_2799) \\\n+\t$(am__append_2806) $(am__append_2813) $(am__append_2820) \\\n+\t$(am__append_2827) $(am__append_2834) $(am__append_2841) \\\n+\t$(am__append_2848) $(am__append_2855) $(am__append_2862) \\\n+\t$(am__append_2869) $(am__append_2876) $(am__append_2883) \\\n+\t$(am__append_2890) $(am__append_2897) $(am__append_2904) \\\n+\t$(am__append_2911) $(am__append_2918) $(am__append_2925) \\\n+\t$(am__append_2932) $(nodist_procfs_module_SOURCES) \\\n \t$(nodist_affs_module_SOURCES) $(nodist_afs_module_SOURCES) \\\n \t$(nodist_bfs_module_SOURCES) $(nodist_zstd_module_SOURCES) \\\n \t$(nodist_btrfs_module_SOURCES) \\\n@@ -17428,69 +17403,69 @@ BUILT_SOURCES = $(nodist_disk_module_SOURCES) \\\n \t$(nodist_xfs_module_SOURCES) $(nodist_zfs_module_SOURCES) \\\n \t$(nodist_zfscrypt_module_SOURCES) \\\n \t$(nodist_zfsinfo_module_SOURCES) \\\n-\t$(nodist_macbless_module_SOURCES) $(am__append_2946) \\\n+\t$(nodist_macbless_module_SOURCES) $(am__append_2939) \\\n \t$(nodist_gettext_module_SOURCES) \\\n \t$(nodist_gfxmenu_module_SOURCES) \\\n \t$(nodist_hello_module_SOURCES) $(nodist_gzio_module_SOURCES) \\\n-\t$(nodist_offsetio_module_SOURCES) $(am__append_2953) \\\n-\t$(am__append_2960) $(am__append_2967) $(am__append_2974) \\\n-\t$(am__append_2981) $(am__append_2988) $(am__append_2995) \\\n-\t$(am__append_3002) $(am__append_3009) $(am__append_3016) \\\n-\t$(am__append_3023) $(am__append_3030) $(am__append_3037) \\\n-\t$(am__append_3044) $(am__append_3051) $(am__append_3058) \\\n-\t$(am__append_3065) $(am__append_3072) $(am__append_3079) \\\n-\t$(am__append_3086) $(nodist_elf_module_SOURCES) \\\n+\t$(nodist_offsetio_module_SOURCES) $(am__append_2946) \\\n+\t$(am__append_2953) $(am__append_2960) $(am__append_2967) \\\n+\t$(am__append_2974) $(am__append_2981) $(am__append_2988) \\\n+\t$(am__append_2995) $(am__append_3002) $(am__append_3009) \\\n+\t$(am__append_3016) $(am__append_3023) $(am__append_3030) \\\n+\t$(am__append_3037) $(am__append_3044) $(am__append_3051) \\\n+\t$(am__append_3058) $(am__append_3065) $(am__append_3072) \\\n+\t$(am__append_3079) $(nodist_elf_module_SOURCES) \\\n \t$(nodist_crypto_module_SOURCES) \\\n-\t$(nodist_pbkdf2_module_SOURCES) $(am__append_3093) \\\n-\t$(am__append_3100) $(am__append_3107) $(am__append_3114) \\\n-\t$(am__append_3121) $(am__append_3128) $(am__append_3135) \\\n-\t$(am__append_3142) $(am__append_3149) $(am__append_3156) \\\n-\t$(am__append_3163) $(am__append_3170) $(am__append_3177) \\\n-\t$(am__append_3184) $(am__append_3191) $(am__append_3198) \\\n-\t$(am__append_3205) $(am__append_3212) $(am__append_3219) \\\n-\t$(am__append_3226) $(am__append_3233) $(am__append_3240) \\\n-\t$(am__append_3247) $(am__append_3254) $(am__append_3261) \\\n-\t$(am__append_3268) $(am__append_3275) $(am__append_3282) \\\n-\t$(am__append_3289) $(am__append_3296) $(am__append_3303) \\\n-\t$(am__append_3310) $(am__append_3317) $(am__append_3324) \\\n-\t$(am__append_3331) $(am__append_3338) \\\n-\t$(nodist_setjmp_module_SOURCES) $(am__append_3345) \\\n-\t$(am__append_3352) $(am__append_3359) $(am__append_3366) \\\n-\t$(am__append_3373) $(am__append_3380) $(am__append_3387) \\\n-\t$(am__append_3394) $(am__append_3401) $(am__append_3408) \\\n-\t$(am__append_3415) $(am__append_3422) $(am__append_3429) \\\n-\t$(am__append_3436) $(am__append_3443) $(am__append_3450) \\\n-\t$(am__append_3457) $(am__append_3464) $(am__append_3471) \\\n-\t$(am__append_3478) $(am__append_3485) $(am__append_3492) \\\n-\t$(am__append_3499) $(am__append_3506) $(am__append_3513) \\\n-\t$(am__append_3520) $(am__append_3527) $(am__append_3534) \\\n-\t$(am__append_3541) $(am__append_3548) $(am__append_3555) \\\n-\t$(am__append_3562) $(am__append_3569) $(am__append_3576) \\\n-\t$(am__append_3583) $(am__append_3590) $(am__append_3597) \\\n-\t$(am__append_3604) $(am__append_3611) $(am__append_3618) \\\n-\t$(am__append_3625) $(am__append_3632) $(am__append_3639) \\\n-\t$(am__append_3646) $(am__append_3653) $(am__append_3660) \\\n-\t$(am__append_3667) $(am__append_3674) $(am__append_3681) \\\n-\t$(am__append_3688) $(am__append_3695) $(am__append_3702) \\\n-\t$(am__append_3709) $(am__append_3716) $(am__append_3723) \\\n-\t$(am__append_3730) $(am__append_3737) $(am__append_3744) \\\n-\t$(am__append_3751) $(am__append_3758) $(am__append_3765) \\\n-\t$(am__append_3772) $(am__append_3779) $(am__append_3786) \\\n-\t$(am__append_3793) $(am__append_3800) $(am__append_3807) \\\n-\t$(am__append_3814) $(am__append_3821) $(am__append_3828) \\\n-\t$(am__append_3835) $(am__append_3842) $(am__append_3849) \\\n-\t$(am__append_3856) $(am__append_3863) $(am__append_3870) \\\n-\t$(am__append_3877) $(am__append_3884) \\\n-\t$(nodist_macho_module_SOURCES) $(am__append_3891) \\\n-\t$(am__append_3898) $(am__append_3905) $(am__append_3912) \\\n-\t$(am__append_3919) $(am__append_3926) $(am__append_3933) \\\n-\t$(am__append_3940) $(am__append_3947) $(am__append_3954) \\\n-\t$(am__append_3961) $(am__append_3968) $(am__append_3975) \\\n-\t$(am__append_3982) $(am__append_3989) $(am__append_3996) \\\n-\t$(am__append_4003) $(am__append_4010) $(am__append_4017) \\\n-\t$(am__append_4024) $(am__append_4031) $(am__append_4038) \\\n-\t$(am__append_4045) $(am__append_4052) $(am__append_4059) \\\n-\t$(am__append_4066) $(am__append_4073) \\\n+\t$(nodist_pbkdf2_module_SOURCES) $(am__append_3086) \\\n+\t$(am__append_3093) $(am__append_3100) $(am__append_3107) \\\n+\t$(am__append_3114) $(am__append_3121) $(am__append_3128) \\\n+\t$(am__append_3135) $(am__append_3142) $(am__append_3149) \\\n+\t$(am__append_3156) $(am__append_3163) $(am__append_3170) \\\n+\t$(am__append_3177) $(am__append_3184) $(am__append_3191) \\\n+\t$(am__append_3198) $(am__append_3205) $(am__append_3212) \\\n+\t$(am__append_3219) $(am__append_3226) $(am__append_3233) \\\n+\t$(am__append_3240) $(am__append_3247) $(am__append_3254) \\\n+\t$(am__append_3261) $(am__append_3268) $(am__append_3275) \\\n+\t$(am__append_3282) $(am__append_3289) $(am__append_3296) \\\n+\t$(am__append_3303) $(am__append_3310) $(am__append_3317) \\\n+\t$(am__append_3324) $(am__append_3331) \\\n+\t$(nodist_setjmp_module_SOURCES) $(am__append_3338) \\\n+\t$(am__append_3345) $(am__append_3352) $(am__append_3359) \\\n+\t$(am__append_3366) $(am__append_3373) $(am__append_3380) \\\n+\t$(am__append_3387) $(am__append_3394) $(am__append_3401) \\\n+\t$(am__append_3408) $(am__append_3415) $(am__append_3422) \\\n+\t$(am__append_3429) $(am__append_3436) $(am__append_3443) \\\n+\t$(am__append_3450) $(am__append_3457) $(am__append_3464) \\\n+\t$(am__append_3471) $(am__append_3478) $(am__append_3485) \\\n+\t$(am__append_3492) $(am__append_3499) $(am__append_3506) \\\n+\t$(am__append_3513) $(am__append_3520) $(am__append_3527) \\\n+\t$(am__append_3534) $(am__append_3541) $(am__append_3548) \\\n+\t$(am__append_3555) $(am__append_3562) $(am__append_3569) \\\n+\t$(am__append_3576) $(am__append_3583) $(am__append_3590) \\\n+\t$(am__append_3597) $(am__append_3604) $(am__append_3611) \\\n+\t$(am__append_3618) $(am__append_3625) $(am__append_3632) \\\n+\t$(am__append_3639) $(am__append_3646) $(am__append_3653) \\\n+\t$(am__append_3660) $(am__append_3667) $(am__append_3674) \\\n+\t$(am__append_3681) $(am__append_3688) $(am__append_3695) \\\n+\t$(am__append_3702) $(am__append_3709) $(am__append_3716) \\\n+\t$(am__append_3723) $(am__append_3730) $(am__append_3737) \\\n+\t$(am__append_3744) $(am__append_3751) $(am__append_3758) \\\n+\t$(am__append_3765) $(am__append_3772) $(am__append_3779) \\\n+\t$(am__append_3786) $(am__append_3793) $(am__append_3800) \\\n+\t$(am__append_3807) $(am__append_3814) $(am__append_3821) \\\n+\t$(am__append_3828) $(am__append_3835) $(am__append_3842) \\\n+\t$(am__append_3849) $(am__append_3856) $(am__append_3863) \\\n+\t$(am__append_3870) $(am__append_3877) \\\n+\t$(nodist_macho_module_SOURCES) $(am__append_3884) \\\n+\t$(am__append_3891) $(am__append_3898) $(am__append_3905) \\\n+\t$(am__append_3912) $(am__append_3919) $(am__append_3926) \\\n+\t$(am__append_3933) $(am__append_3940) $(am__append_3947) \\\n+\t$(am__append_3954) $(am__append_3961) $(am__append_3968) \\\n+\t$(am__append_3975) $(am__append_3982) $(am__append_3989) \\\n+\t$(am__append_3996) $(am__append_4003) $(am__append_4010) \\\n+\t$(am__append_4017) $(am__append_4024) $(am__append_4031) \\\n+\t$(am__append_4038) $(am__append_4045) $(am__append_4052) \\\n+\t$(am__append_4059) $(am__append_4066) \\\n \t$(nodist_normal_module_SOURCES) \\\n \t$(nodist_part_acorn_module_SOURCES) \\\n \t$(nodist_part_amiga_module_SOURCES) \\\n@@ -17503,35 +17478,35 @@ BUILT_SOURCES = $(nodist_disk_module_SOURCES) \\\n \t$(nodist_part_bsd_module_SOURCES) \\\n \t$(nodist_part_sunpc_module_SOURCES) \\\n \t$(nodist_part_dfly_module_SOURCES) \\\n-\t$(nodist_msdospart_module_SOURCES) $(am__append_4080) \\\n-\t$(am__append_4087) $(am__append_4094) $(am__append_4101) \\\n-\t$(am__append_4108) $(am__append_4115) $(am__append_4122) \\\n-\t$(am__append_4129) $(am__append_4136) $(am__append_4143) \\\n-\t$(am__append_4150) $(am__append_4157) $(am__append_4164) \\\n-\t$(am__append_4171) $(am__append_4178) $(am__append_4185) \\\n-\t$(am__append_4192) $(am__append_4199) $(am__append_4206) \\\n-\t$(am__append_4213) $(am__append_4220) $(am__append_4227) \\\n-\t$(am__append_4234) $(am__append_4241) $(am__append_4248) \\\n-\t$(am__append_4255) $(am__append_4262) \\\n-\t$(nodist_gfxterm_background_module_SOURCES) $(am__append_4269) \\\n-\t$(am__append_4276) $(am__append_4283) $(am__append_4290) \\\n-\t$(am__append_4297) $(am__append_4304) $(am__append_4311) \\\n-\t$(am__append_4318) $(am__append_4325) $(am__append_4332) \\\n-\t$(am__append_4339) $(am__append_4346) $(am__append_4353) \\\n-\t$(am__append_4360) $(am__append_4367) $(am__append_4374) \\\n-\t$(am__append_4381) $(am__append_4388) $(am__append_4395) \\\n-\t$(am__append_4402) $(am__append_4409) $(am__append_4416) \\\n-\t$(am__append_4423) $(am__append_4430) $(am__append_4437) \\\n-\t$(am__append_4444) $(am__append_4451) $(am__append_4458) \\\n-\t$(am__append_4465) $(am__append_4472) $(am__append_4479) \\\n-\t$(am__append_4486) $(am__append_4493) $(am__append_4500) \\\n-\t$(am__append_4507) $(am__append_4514) $(am__append_4521) \\\n-\t$(am__append_4528) $(am__append_4535) $(am__append_4542) \\\n-\t$(am__append_4549) $(am__append_4556) $(am__append_4563) \\\n-\t$(am__append_4570) $(am__append_4577) $(am__append_4584) \\\n-\t$(am__append_4591) $(am__append_4598) $(am__append_4605) \\\n-\t$(am__append_4612) $(am__append_4619) $(am__append_4626) \\\n-\t$(am__append_4633) $(am__append_4640) $(am__append_4647) \\\n+\t$(nodist_msdospart_module_SOURCES) $(am__append_4073) \\\n+\t$(am__append_4080) $(am__append_4087) $(am__append_4094) \\\n+\t$(am__append_4101) $(am__append_4108) $(am__append_4115) \\\n+\t$(am__append_4122) $(am__append_4129) $(am__append_4136) \\\n+\t$(am__append_4143) $(am__append_4150) $(am__append_4157) \\\n+\t$(am__append_4164) $(am__append_4171) $(am__append_4178) \\\n+\t$(am__append_4185) $(am__append_4192) $(am__append_4199) \\\n+\t$(am__append_4206) $(am__append_4213) $(am__append_4220) \\\n+\t$(am__append_4227) $(am__append_4234) $(am__append_4241) \\\n+\t$(am__append_4248) $(am__append_4255) \\\n+\t$(nodist_gfxterm_background_module_SOURCES) $(am__append_4262) \\\n+\t$(am__append_4269) $(am__append_4276) $(am__append_4283) \\\n+\t$(am__append_4290) $(am__append_4297) $(am__append_4304) \\\n+\t$(am__append_4311) $(am__append_4318) $(am__append_4325) \\\n+\t$(am__append_4332) $(am__append_4339) $(am__append_4346) \\\n+\t$(am__append_4353) $(am__append_4360) $(am__append_4367) \\\n+\t$(am__append_4374) $(am__append_4381) $(am__append_4388) \\\n+\t$(am__append_4395) $(am__append_4402) $(am__append_4409) \\\n+\t$(am__append_4416) $(am__append_4423) $(am__append_4430) \\\n+\t$(am__append_4437) $(am__append_4444) $(am__append_4451) \\\n+\t$(am__append_4458) $(am__append_4465) $(am__append_4472) \\\n+\t$(am__append_4479) $(am__append_4486) $(am__append_4493) \\\n+\t$(am__append_4500) $(am__append_4507) $(am__append_4514) \\\n+\t$(am__append_4521) $(am__append_4528) $(am__append_4535) \\\n+\t$(am__append_4542) $(am__append_4549) $(am__append_4556) \\\n+\t$(am__append_4563) $(am__append_4570) $(am__append_4577) \\\n+\t$(am__append_4584) $(am__append_4591) $(am__append_4598) \\\n+\t$(am__append_4605) $(am__append_4612) $(am__append_4619) \\\n+\t$(am__append_4626) $(am__append_4633) $(am__append_4640) \\\n \t$(nodist_functional_test_module_SOURCES) \\\n \t$(nodist_exfctest_module_SOURCES) \\\n \t$(nodist_strtoull_test_module_SOURCES) \\\n@@ -17539,15 +17514,15 @@ BUILT_SOURCES = $(nodist_disk_module_SOURCES) \\\n \t$(nodist_signature_test_module_SOURCES) \\\n \t$(nodist_sleep_test_module_SOURCES) \\\n \t$(nodist_xnu_uuid_test_module_SOURCES) \\\n-\t$(nodist_pbkdf2_test_module_SOURCES) $(am__append_4654) \\\n-\t$(am__append_4661) $(am__append_4668) $(am__append_4675) \\\n-\t$(am__append_4682) $(am__append_4689) $(am__append_4696) \\\n-\t$(am__append_4703) $(am__append_4710) $(am__append_4717) \\\n-\t$(am__append_4724) $(am__append_4731) $(am__append_4738) \\\n-\t$(am__append_4745) $(am__append_4752) $(am__append_4759) \\\n-\t$(am__append_4766) $(am__append_4773) $(am__append_4780) \\\n-\t$(am__append_4787) $(am__append_4794) $(am__append_4801) \\\n-\t$(am__append_4808) $(am__append_4815) $(am__append_4822) \\\n+\t$(nodist_pbkdf2_test_module_SOURCES) $(am__append_4647) \\\n+\t$(am__append_4654) $(am__append_4661) $(am__append_4668) \\\n+\t$(am__append_4675) $(am__append_4682) $(am__append_4689) \\\n+\t$(am__append_4696) $(am__append_4703) $(am__append_4710) \\\n+\t$(am__append_4717) $(am__append_4724) $(am__append_4731) \\\n+\t$(am__append_4738) $(am__append_4745) $(am__append_4752) \\\n+\t$(am__append_4759) $(am__append_4766) $(am__append_4773) \\\n+\t$(am__append_4780) $(am__append_4787) $(am__append_4794) \\\n+\t$(am__append_4801) $(am__append_4808) $(am__append_4815) \\\n \t$(nodist_div_test_module_SOURCES) \\\n \t$(nodist_mul_test_module_SOURCES) \\\n \t$(nodist_shift_test_module_SOURCES) \\\n@@ -17558,59 +17533,59 @@ BUILT_SOURCES = $(nodist_disk_module_SOURCES) \\\n \t$(nodist_gfxterm_menu_module_SOURCES) \\\n \t$(nodist_cmdline_cat_test_module_SOURCES) \\\n \t$(nodist_bitmap_module_SOURCES) \\\n-\t$(nodist_bitmap_scale_module_SOURCES) $(am__append_4829) \\\n-\t$(am__append_4836) $(am__append_4843) $(am__append_4850) \\\n-\t$(am__append_4857) $(am__append_4864) $(am__append_4871) \\\n-\t$(am__append_4878) $(am__append_4885) \\\n+\t$(nodist_bitmap_scale_module_SOURCES) $(am__append_4822) \\\n+\t$(am__append_4829) $(am__append_4836) $(am__append_4843) \\\n+\t$(am__append_4850) $(am__append_4857) $(am__append_4864) \\\n+\t$(am__append_4871) $(am__append_4878) \\\n \t$(nodist_jpeg_module_SOURCES) $(nodist_png_module_SOURCES) \\\n-\t$(nodist_tga_module_SOURCES) $(am__append_4892) \\\n-\t$(am__append_4899) $(am__append_4906) $(am__append_4913) \\\n-\t$(am__append_4920) $(am__append_4927) $(am__append_4934) \\\n-\t$(am__append_4941) $(am__append_4948) $(am__append_4955) \\\n-\t$(am__append_4962) $(am__append_4969) $(am__append_4976) \\\n-\t$(am__append_4983) $(am__append_4990) $(am__append_4997) \\\n-\t$(am__append_5004) $(am__append_5011) $(am__append_5018) \\\n-\t$(am__append_5025) $(am__append_5032) $(am__append_5039) \\\n-\t$(am__append_5046) $(am__append_5053) $(am__append_5060) \\\n-\t$(am__append_5067) $(am__append_5074) $(am__append_5081) \\\n-\t$(am__append_5088) $(am__append_5095) $(am__append_5102) \\\n-\t$(am__append_5109) $(am__append_5116) $(am__append_5123) \\\n-\t$(am__append_5130) $(am__append_5137) $(am__append_5144) \\\n-\t$(am__append_5151) $(am__append_5158) $(am__append_5165) \\\n-\t$(am__append_5172) $(nodist_video_colors_module_SOURCES) \\\n-\t$(am__append_5179) $(am__append_5186) \\\n+\t$(nodist_tga_module_SOURCES) $(am__append_4885) \\\n+\t$(am__append_4892) $(am__append_4899) $(am__append_4906) \\\n+\t$(am__append_4913) $(am__append_4920) $(am__append_4927) \\\n+\t$(am__append_4934) $(am__append_4941) $(am__append_4948) \\\n+\t$(am__append_4955) $(am__append_4962) $(am__append_4969) \\\n+\t$(am__append_4976) $(am__append_4983) $(am__append_4990) \\\n+\t$(am__append_4997) $(am__append_5004) $(am__append_5011) \\\n+\t$(am__append_5018) $(am__append_5025) $(am__append_5032) \\\n+\t$(am__append_5039) $(am__append_5046) $(am__append_5053) \\\n+\t$(am__append_5060) $(am__append_5067) $(am__append_5074) \\\n+\t$(am__append_5081) $(am__append_5088) $(am__append_5095) \\\n+\t$(am__append_5102) $(am__append_5109) $(am__append_5116) \\\n+\t$(am__append_5123) $(am__append_5130) $(am__append_5137) \\\n+\t$(am__append_5144) $(am__append_5151) $(am__append_5158) \\\n+\t$(am__append_5165) $(nodist_video_colors_module_SOURCES) \\\n+\t$(am__append_5172) $(am__append_5179) \\\n \t$(nodist_datehook_module_SOURCES) $(nodist_net_module_SOURCES) \\\n \t$(nodist_tftp_module_SOURCES) $(nodist_http_module_SOURCES) \\\n-\t$(am__append_5193) $(am__append_5200) $(am__append_5207) \\\n-\t$(am__append_5214) $(am__append_5221) $(am__append_5228) \\\n-\t$(am__append_5235) $(am__append_5242) $(am__append_5249) \\\n-\t$(am__append_5256) $(am__append_5263) $(am__append_5270) \\\n-\t$(am__append_5277) $(am__append_5284) $(am__append_5291) \\\n-\t$(am__append_5298) $(am__append_5305) $(am__append_5312) \\\n+\t$(am__append_5186) $(am__append_5193) $(am__append_5200) \\\n+\t$(am__append_5207) $(am__append_5214) $(am__append_5221) \\\n+\t$(am__append_5228) $(am__append_5235) $(am__append_5242) \\\n+\t$(am__append_5249) $(am__append_5256) $(am__append_5263) \\\n+\t$(am__append_5270) $(am__append_5277) $(am__append_5284) \\\n+\t$(am__append_5291) $(am__append_5298) $(am__append_5305) \\\n \t$(nodist_syslinuxcfg_module_SOURCES) \\\n \t$(nodist_test_blockarg_module_SOURCES) \\\n \t$(nodist_xzio_module_SOURCES) $(nodist_lzopio_module_SOURCES) \\\n-\t$(nodist_testload_module_SOURCES) $(am__append_5319) \\\n-\t$(am__append_5326) $(am__append_5333) $(am__append_5340) \\\n-\t$(am__append_5347) $(am__append_5354) $(am__append_5361) \\\n-\t$(am__append_5368) $(am__append_5375) $(am__append_5382) \\\n-\t$(am__append_5389) $(am__append_5396) $(am__append_5403) \\\n-\t$(am__append_5410) $(am__append_5417) $(am__append_5424) \\\n-\t$(am__append_5431) $(nodist_priority_queue_module_SOURCES) \\\n-\t$(nodist_time_module_SOURCES) $(am__append_5438) \\\n-\t$(am__append_5445) $(nodist_adler32_module_SOURCES) \\\n+\t$(nodist_testload_module_SOURCES) $(am__append_5312) \\\n+\t$(am__append_5319) $(am__append_5326) $(am__append_5333) \\\n+\t$(am__append_5340) $(am__append_5347) $(am__append_5354) \\\n+\t$(am__append_5361) $(am__append_5368) $(am__append_5375) \\\n+\t$(am__append_5382) $(am__append_5389) $(am__append_5396) \\\n+\t$(am__append_5403) $(am__append_5410) $(am__append_5417) \\\n+\t$(am__append_5424) $(nodist_priority_queue_module_SOURCES) \\\n+\t$(nodist_time_module_SOURCES) $(am__append_5431) \\\n+\t$(am__append_5438) $(nodist_adler32_module_SOURCES) \\\n \t$(nodist_crc64_module_SOURCES) $(nodist_mpi_module_SOURCES) \\\n-\t$(nodist_all_video_module_SOURCES) $(am__append_5452) \\\n-\t$(am__append_5459) $(am__append_5466) $(am__append_5473) \\\n-\t$(am__append_5480) $(am__append_5487) \\\n-\t$(nodist_testspeed_module_SOURCES) $(am__append_5494) \\\n+\t$(nodist_all_video_module_SOURCES) $(am__append_5445) \\\n+\t$(am__append_5452) $(am__append_5459) $(am__append_5466) \\\n+\t$(am__append_5473) $(am__append_5480) \\\n+\t$(nodist_testspeed_module_SOURCES) $(am__append_5487) \\\n \t$(nodist_tr_module_SOURCES) $(nodist_progress_module_SOURCES) \\\n-\t$(nodist_file_module_SOURCES) $(am__append_5501) \\\n-\t$(am__append_5508) $(am__append_5515) $(am__append_5522) \\\n-\t$(am__append_5529) $(am__append_5536) $(am__append_5543) \\\n-\t$(am__append_5550) $(am__append_5557) $(am__append_5564) \\\n-\t$(am__append_5571) $(am__append_5578) $(am__append_5585) \\\n-\t$(am__append_5592) $(nodist_gcry_arcfour_module_SOURCES) \\\n+\t$(nodist_file_module_SOURCES) $(am__append_5494) \\\n+\t$(am__append_5501) $(am__append_5508) $(am__append_5515) \\\n+\t$(am__append_5522) $(am__append_5529) $(am__append_5536) \\\n+\t$(am__append_5543) $(am__append_5550) $(am__append_5557) \\\n+\t$(am__append_5564) $(am__append_5571) $(am__append_5578) \\\n+\t$(am__append_5585) $(nodist_gcry_arcfour_module_SOURCES) \\\n \t$(nodist_gcry_blowfish_module_SOURCES) \\\n \t$(nodist_gcry_camellia_module_SOURCES) \\\n \t$(nodist_gcry_cast5_module_SOURCES) \\\n@@ -17631,20 +17606,20 @@ BUILT_SOURCES = $(nodist_disk_module_SOURCES) \\\n \t$(nodist_gcry_sha512_module_SOURCES) \\\n \t$(nodist_gcry_tiger_module_SOURCES) \\\n \t$(nodist_gcry_twofish_module_SOURCES) \\\n-\t$(nodist_gcry_whirlpool_module_SOURCES) $(am__append_5598) \\\n-\t$(am__append_5603) $(am__append_5608) $(am__append_5613) \\\n-\t$(am__append_5618) $(am__append_5623) $(am__append_5628) \\\n-\t$(am__append_5633) $(am__append_5638) $(am__append_5643) \\\n-\t$(am__append_5648) $(am__append_5653) $(am__append_5658) \\\n-\t$(am__append_5663) $(am__append_5668) $(am__append_5673) \\\n-\t$(am__append_5678) $(am__append_5683) $(am__append_5688) \\\n-\t$(am__append_5693) $(am__append_5698) $(am__append_5703) \\\n-\t$(am__append_5708) $(am__append_5713) $(am__append_5718) \\\n-\t$(am__append_5723) $(am__append_5728) $(am__append_5733) \\\n-\t$(am__append_5738) $(am__append_5743) $(am__append_5748) \\\n-\t$(am__append_5753) $(am__append_5758) $(am__append_5763) \\\n-\t$(am__append_5768) $(am__append_5773) $(am__append_5778) \\\n-\t$(am__append_5783) $(am__append_5788) $(am__append_5795) \\\n+\t$(nodist_gcry_whirlpool_module_SOURCES) $(am__append_5591) \\\n+\t$(am__append_5596) $(am__append_5601) $(am__append_5606) \\\n+\t$(am__append_5611) $(am__append_5616) $(am__append_5621) \\\n+\t$(am__append_5626) $(am__append_5631) $(am__append_5636) \\\n+\t$(am__append_5641) $(am__append_5646) $(am__append_5651) \\\n+\t$(am__append_5656) $(am__append_5661) $(am__append_5666) \\\n+\t$(am__append_5671) $(am__append_5676) $(am__append_5681) \\\n+\t$(am__append_5686) $(am__append_5691) $(am__append_5696) \\\n+\t$(am__append_5701) $(am__append_5706) $(am__append_5711) \\\n+\t$(am__append_5716) $(am__append_5721) $(am__append_5726) \\\n+\t$(am__append_5731) $(am__append_5736) $(am__append_5741) \\\n+\t$(am__append_5746) $(am__append_5751) $(am__append_5756) \\\n+\t$(am__append_5761) $(am__append_5766) $(am__append_5771) \\\n+\t$(am__append_5776) $(am__append_5781) $(am__append_5788) \\\n \tsymlist.h symlist.c\n MACHO2IMG = $(top_builddir)/grub-macho2img\n AM_CFLAGS = $(TARGET_CFLAGS)\n@@ -20083,14 +20058,6 @@ pgp_module_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_MODULE)\n pgp_module_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_MODULE) -I$(srcdir)/lib/posix_wrap \n pgp_module_CCASFLAGS = $(AM_CCASFLAGS) $(CCASFLAGS_MODULE) \n pgp_module_DEPENDENCIES = $(TARGET_OBJ2ELF) \n-@COND_x86_64_efi_TRUE@shim_lock_module_SOURCES = commands/efi/shim_lock.c  ## platform sources\n-@COND_x86_64_efi_TRUE@nodist_shim_lock_module_SOURCES = ## platform nodist sources\n-@COND_x86_64_efi_TRUE@shim_lock_module_LDADD = \n-@COND_x86_64_efi_TRUE@shim_lock_module_CFLAGS = $(AM_CFLAGS) $(CFLAGS_MODULE) \n-@COND_x86_64_efi_TRUE@shim_lock_module_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_MODULE) \n-@COND_x86_64_efi_TRUE@shim_lock_module_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS_MODULE) \n-@COND_x86_64_efi_TRUE@shim_lock_module_CCASFLAGS = $(AM_CCASFLAGS) $(CCASFLAGS_MODULE) \n-@COND_x86_64_efi_TRUE@shim_lock_module_DEPENDENCIES = $(TARGET_OBJ2ELF) \n @COND_i386_coreboot_TRUE@hdparm_module_SOURCES = commands/hdparm.c  ## platform sources\n @COND_i386_efi_TRUE@hdparm_module_SOURCES = commands/hdparm.c  ## platform sources\n @COND_i386_ieee1275_TRUE@hdparm_module_SOURCES = commands/hdparm.c  ## platform sources\n@@ -29924,13 +29891,6 @@ tests/shift_test_module-shift_test.$(OBJEXT): tests/$(am__dirstamp) \\\n shift_test.module$(EXEEXT): $(shift_test_module_OBJECTS) $(shift_test_module_DEPENDENCIES) $(EXTRA_shift_test_module_DEPENDENCIES) \n \t@rm -f shift_test.module$(EXEEXT)\n \t$(AM_V_CCLD)$(shift_test_module_LINK) $(shift_test_module_OBJECTS) $(shift_test_module_LDADD) $(LIBS)\n-commands/efi/shim_lock_module-shim_lock.$(OBJEXT):  \\\n-\tcommands/efi/$(am__dirstamp) \\\n-\tcommands/efi/$(DEPDIR)/$(am__dirstamp)\n-\n-shim_lock.module$(EXEEXT): $(shim_lock_module_OBJECTS) $(shim_lock_module_DEPENDENCIES) $(EXTRA_shim_lock_module_DEPENDENCIES) \n-\t@rm -f shim_lock.module$(EXEEXT)\n-\t$(AM_V_CCLD)$(shim_lock_module_LINK) $(shim_lock_module_OBJECTS) $(shim_lock_module_LDADD) $(LIBS)\n tests/signature_test_module-signature_test.$(OBJEXT):  \\\n \ttests/$(am__dirstamp) tests/$(DEPDIR)/$(am__dirstamp)\n \n@@ -30831,7 +30791,6 @@ distclean-compile:\n @AMDEP_TRUE@@am__include@ @am__quote@commands/efi/$(DEPDIR)/lsefimmap_module-lsefimmap.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@commands/efi/$(DEPDIR)/lsefisystab_module-lsefisystab.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@commands/efi/$(DEPDIR)/lssal_module-lssal.Po@am__quote@\n-@AMDEP_TRUE@@am__include@ @am__quote@commands/efi/$(DEPDIR)/shim_lock_module-shim_lock.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@commands/efi/$(DEPDIR)/tpm_module-tpm.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@commands/i386/$(DEPDIR)/cmosdump_module-cmosdump.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@commands/i386/$(DEPDIR)/cmostest_module-cmostest.Po@am__quote@\n@@ -40402,20 +40361,6 @@ tests/shift_test_module-shift_test.obj: tests/shift_test.c\n @AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n @am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shift_test_module_CPPFLAGS) $(CPPFLAGS) $(shift_test_module_CFLAGS) $(CFLAGS) -c -o tests/shift_test_module-shift_test.obj `if test -f 'tests/shift_test.c'; then $(CYGPATH_W) 'tests/shift_test.c'; else $(CYGPATH_W) '$(srcdir)/tests/shift_test.c'; fi`\n \n-commands/efi/shim_lock_module-shim_lock.o: commands/efi/shim_lock.c\n-@am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shim_lock_module_CPPFLAGS) $(CPPFLAGS) $(shim_lock_module_CFLAGS) $(CFLAGS) -MT commands/efi/shim_lock_module-shim_lock.o -MD -MP -MF commands/efi/$(DEPDIR)/shim_lock_module-shim_lock.Tpo -c -o commands/efi/shim_lock_module-shim_lock.o `test -f 'commands/efi/shim_lock.c' || echo '$(srcdir)/'`commands/efi/shim_lock.c\n-@am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) commands/efi/$(DEPDIR)/shim_lock_module-shim_lock.Tpo commands/efi/$(DEPDIR)/shim_lock_module-shim_lock.Po\n-@AMDEP_TRUE@@am__fastdepCC_FALSE@\t$(AM_V_CC)source='commands/efi/shim_lock.c' object='commands/efi/shim_lock_module-shim_lock.o' libtool=no @AMDEPBACKSLASH@\n-@AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n-@am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shim_lock_module_CPPFLAGS) $(CPPFLAGS) $(shim_lock_module_CFLAGS) $(CFLAGS) -c -o commands/efi/shim_lock_module-shim_lock.o `test -f 'commands/efi/shim_lock.c' || echo '$(srcdir)/'`commands/efi/shim_lock.c\n-\n-commands/efi/shim_lock_module-shim_lock.obj: commands/efi/shim_lock.c\n-@am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shim_lock_module_CPPFLAGS) $(CPPFLAGS) $(shim_lock_module_CFLAGS) $(CFLAGS) -MT commands/efi/shim_lock_module-shim_lock.obj -MD -MP -MF commands/efi/$(DEPDIR)/shim_lock_module-shim_lock.Tpo -c -o commands/efi/shim_lock_module-shim_lock.obj `if test -f 'commands/efi/shim_lock.c'; then $(CYGPATH_W) 'commands/efi/shim_lock.c'; else $(CYGPATH_W) '$(srcdir)/commands/efi/shim_lock.c'; fi`\n-@am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) commands/efi/$(DEPDIR)/shim_lock_module-shim_lock.Tpo commands/efi/$(DEPDIR)/shim_lock_module-shim_lock.Po\n-@AMDEP_TRUE@@am__fastdepCC_FALSE@\t$(AM_V_CC)source='commands/efi/shim_lock.c' object='commands/efi/shim_lock_module-shim_lock.obj' libtool=no @AMDEPBACKSLASH@\n-@AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n-@am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shim_lock_module_CPPFLAGS) $(CPPFLAGS) $(shim_lock_module_CFLAGS) $(CFLAGS) -c -o commands/efi/shim_lock_module-shim_lock.obj `if test -f 'commands/efi/shim_lock.c'; then $(CYGPATH_W) 'commands/efi/shim_lock.c'; else $(CYGPATH_W) '$(srcdir)/commands/efi/shim_lock.c'; fi`\n-\n tests/signature_test_module-signature_test.o: tests/signature_test.c\n @am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(signature_test_module_CPPFLAGS) $(CPPFLAGS) $(signature_test_module_CFLAGS) $(CFLAGS) -MT tests/signature_test_module-signature_test.o -MD -MP -MF tests/$(DEPDIR)/signature_test_module-signature_test.Tpo -c -o tests/signature_test_module-signature_test.o `test -f 'tests/signature_test.c' || echo '$(srcdir)/'`tests/signature_test.c\n @am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) tests/$(DEPDIR)/signature_test_module-signature_test.Tpo tests/$(DEPDIR)/signature_test_module-signature_test.Po\n@@ -43738,10 +43683,6 @@ pgp.marker: $(pgp_module_SOURCES) $(nodist_pgp_module_SOURCES)\n \t$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(pgp_module_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)\n \tgrep 'MARKER' $@.new > $@; rm -f $@.new\n \n-@COND_x86_64_efi_TRUE@shim_lock.marker: $(shim_lock_module_SOURCES) $(nodist_shim_lock_module_SOURCES)\n-@COND_x86_64_efi_TRUE@\t$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shim_lock_module_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)\n-@COND_x86_64_efi_TRUE@\tgrep 'MARKER' $@.new > $@; rm -f $@.new\n-\n @COND_i386_pc_TRUE@hdparm.marker: $(hdparm_module_SOURCES) $(nodist_hdparm_module_SOURCES)\n @COND_i386_pc_TRUE@\t$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(hdparm_module_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)\n @COND_i386_pc_TRUE@\tgrep 'MARKER' $@.new > $@; rm -f $@.new\ndiff --git a/grub-core/commands/efi/shim_lock.c b/grub-core/commands/efi/shim_lock.c\ndeleted file mode 100644\nindex d8f52d7..0000000\n--- a/grub-core/commands/efi/shim_lock.c\n+++ /dev/null\n@@ -1,130 +0,0 @@\n-/*\n- *  GRUB  --  GRand Unified Bootloader\n- *  Copyright (C) 2017  Free Software Foundation, Inc.\n- *\n- *  GRUB is free software: you can redistribute it and/or modify\n- *  it under the terms of the GNU General Public License as published by\n- *  the Free Software Foundation, either version 3 of the License, or\n- *  (at your option) any later version.\n- *\n- *  GRUB is distributed in the hope that it will be useful,\n- *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n- *  GNU General Public License for more details.\n- *\n- *  You should have received a copy of the GNU General Public License\n- *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.\n- *\n- *  EFI shim lock verifier.\n- */\n-\n-#include <grub/dl.h>\n-#include <grub/efi/efi.h>\n-#include <grub/err.h>\n-#include <grub/file.h>\n-#include <grub/misc.h>\n-#include <grub/verify.h>\n-\n-GRUB_MOD_LICENSE (\"GPLv3+\");\n-\n-static grub_efi_guid_t shim_lock_guid = GRUB_EFI_SHIM_LOCK_GUID;\n-static grub_efi_shim_lock_protocol_t *sl;\n-\n-/* List of modules which cannot be loaded if UEFI secure boot mode is enabled. */\n-static const char * const disabled_mods[] = {\"iorw\", \"memrw\", \"wrmsr\", NULL};\n-\n-static grub_err_t\n-shim_lock_init (grub_file_t io, enum grub_file_type type,\n-\t\tvoid **context __attribute__ ((unused)),\n-\t\tenum grub_verify_flags *flags)\n-{\n-  const char *b, *e;\n-  int i;\n-\n-  *flags = GRUB_VERIFY_FLAGS_SKIP_VERIFICATION;\n-\n-  if (!sl)\n-    return GRUB_ERR_NONE;\n-\n-  switch (type & GRUB_FILE_TYPE_MASK)\n-    {\n-    case GRUB_FILE_TYPE_GRUB_MODULE:\n-      /* Establish GRUB module name. */\n-      b = grub_strrchr (io->name, '/');\n-      e = grub_strrchr (io->name, '.');\n-\n-      b = b ? (b + 1) : io->name;\n-      e = e ? e : io->name + grub_strlen (io->name);\n-      e = (e > b) ? e : io->name + grub_strlen (io->name);\n-\n-      for (i = 0; disabled_mods[i]; i++)\n-\tif (!grub_strncmp (b, disabled_mods[i], grub_strlen (b) - grub_strlen (e)))\n-\t  {\n-\t    grub_error (GRUB_ERR_ACCESS_DENIED,\n-\t\t\tN_(\"module cannot be loaded in UEFI secure boot mode: %s\"),\n-\t\t\tio->name);\n-\t    return GRUB_ERR_ACCESS_DENIED;\n-\t  }\n-\n-      /* Fall through. */\n-\n-    case GRUB_FILE_TYPE_ACPI_TABLE:\n-    case GRUB_FILE_TYPE_DEVICE_TREE_IMAGE:\n-      *flags = GRUB_VERIFY_FLAGS_DEFER_AUTH;\n-\n-      return GRUB_ERR_NONE;\n-\n-    case GRUB_FILE_TYPE_LINUX_KERNEL:\n-    case GRUB_FILE_TYPE_MULTIBOOT_KERNEL:\n-    case GRUB_FILE_TYPE_BSD_KERNEL:\n-    case GRUB_FILE_TYPE_XNU_KERNEL:\n-    case GRUB_FILE_TYPE_PLAN9_KERNEL:\n-      for (i = 0; disabled_mods[i]; i++)\n-\tif (grub_dl_get (disabled_mods[i]))\n-\t  {\n-\t    grub_error (GRUB_ERR_ACCESS_DENIED,\n-\t\t\tN_(\"cannot boot due to dangerous module in memory: %s\"),\n-\t\t\tdisabled_mods[i]);\n-\t    return GRUB_ERR_ACCESS_DENIED;\n-\t  }\n-\n-      *flags = GRUB_VERIFY_FLAGS_SINGLE_CHUNK;\n-\n-      /* Fall through. */\n-\n-    default:\n-      return GRUB_ERR_NONE;\n-    }\n-}\n-\n-static grub_err_t\n-shim_lock_write (void *context __attribute__ ((unused)), void *buf, grub_size_t size)\n-{\n-  if (sl->verify (buf, size) != GRUB_EFI_SUCCESS)\n-    return grub_error (GRUB_ERR_BAD_SIGNATURE, N_(\"bad shim signature\"));\n-\n-  return GRUB_ERR_NONE;\n-}\n-\n-struct grub_file_verifier shim_lock =\n-  {\n-    .name = \"shim_lock\",\n-    .init = shim_lock_init,\n-    .write = shim_lock_write\n-  };\n-\n-GRUB_MOD_INIT(shim_lock)\n-{\n-  sl = grub_efi_locate_protocol (&shim_lock_guid, 0);\n-  grub_verifier_register (&shim_lock);\n-\n-  if (!sl)\n-    return;\n-\n-  grub_dl_set_persistent (mod);\n-}\n-\n-GRUB_MOD_FINI(shim_lock)\n-{\n-  grub_verifier_unregister (&shim_lock);\n-}\ndiff --git a/grub-core/kern/efi/init.c b/grub-core/kern/efi/init.c\nindex 2c31847..b683bec 100644\n--- a/grub-core/kern/efi/init.c\n+++ b/grub-core/kern/efi/init.c\n@@ -20,6 +20,7 @@\n #include <grub/efi/efi.h>\n #include <grub/efi/console.h>\n #include <grub/efi/disk.h>\n+#include <grub/efi/sb.h>\n #include <grub/term.h>\n #include <grub/misc.h>\n #include <grub/env.h>\n@@ -39,6 +40,9 @@ grub_efi_init (void)\n   /* Initialize the memory management system.  */\n   grub_efi_mm_init ();\n \n+  /* Register the shim_lock verifier if UEFI Secure Boot is enabled. */\n+  grub_shim_lock_verifier_setup ();\n+\n   efi_call_4 (grub_efi_system_table->boot_services->set_watchdog_timer,\n \t      0, 0, 0, NULL);\n \ndiff --git a/grub-core/kern/efi/sb.c b/grub-core/kern/efi/sb.c\nindex 19658d9..ce3b7f6 100644\n--- a/grub-core/kern/efi/sb.c\n+++ b/grub-core/kern/efi/sb.c\n@@ -22,9 +22,16 @@\n #include <grub/efi/pe32.h>\n #include <grub/efi/sb.h>\n #include <grub/err.h>\n+#include <grub/file.h>\n #include <grub/i386/linux.h>\n #include <grub/mm.h>\n #include <grub/types.h>\n+#include <grub/verify.h>\n+\n+static grub_efi_guid_t shim_lock_guid = GRUB_EFI_SHIM_LOCK_GUID;\n+\n+/* List of modules which cannot be loaded if UEFI secure boot mode is enabled. */\n+static const char * const disabled_mods[] = {\"iorw\", \"memrw\", NULL};\n \n /*\n  * Determine whether we're in secure boot mode.\n@@ -107,3 +114,101 @@ grub_efi_get_secureboot (void)\n \n   return secureboot;\n }\n+\n+static grub_err_t\n+shim_lock_verifier_init (grub_file_t io __attribute__ ((unused)),\n+\t\t\t enum grub_file_type type,\n+\t\t\t void **context __attribute__ ((unused)),\n+\t\t\t enum grub_verify_flags *flags)\n+{\n+  const char *b, *e;\n+  int i;\n+\n+  *flags = GRUB_VERIFY_FLAGS_SKIP_VERIFICATION;\n+\n+  switch (type & GRUB_FILE_TYPE_MASK)\n+    {\n+    case GRUB_FILE_TYPE_GRUB_MODULE:\n+      /* Establish GRUB module name. */\n+      b = grub_strrchr (io->name, '/');\n+      e = grub_strrchr (io->name, '.');\n+\n+      b = b ? (b + 1) : io->name;\n+      e = e ? e : io->name + grub_strlen (io->name);\n+      e = (e > b) ? e : io->name + grub_strlen (io->name);\n+\n+      for (i = 0; disabled_mods[i]; i++)\n+\tif (!grub_strncmp (b, disabled_mods[i], grub_strlen (b) - grub_strlen (e)))\n+\t  {\n+\t    grub_error (GRUB_ERR_ACCESS_DENIED,\n+\t\t\tN_(\"module cannot be loaded in UEFI secure boot mode: %s\"),\n+\t\t\tio->name);\n+\t    return GRUB_ERR_ACCESS_DENIED;\n+\t  }\n+\n+      /* Fall through. */\n+\n+    case GRUB_FILE_TYPE_ACPI_TABLE:\n+    case GRUB_FILE_TYPE_DEVICE_TREE_IMAGE:\n+      *flags = GRUB_VERIFY_FLAGS_DEFER_AUTH;\n+\n+      return GRUB_ERR_NONE;\n+\n+    case GRUB_FILE_TYPE_LINUX_KERNEL:\n+    case GRUB_FILE_TYPE_MULTIBOOT_KERNEL:\n+    case GRUB_FILE_TYPE_BSD_KERNEL:\n+    case GRUB_FILE_TYPE_XNU_KERNEL:\n+    case GRUB_FILE_TYPE_PLAN9_KERNEL:\n+      for (i = 0; disabled_mods[i]; i++)\n+\tif (grub_dl_get (disabled_mods[i]))\n+\t  {\n+\t    grub_error (GRUB_ERR_ACCESS_DENIED,\n+\t\t\tN_(\"cannot boot due to dangerous module in memory: %s\"),\n+\t\t\tdisabled_mods[i]);\n+\t    return GRUB_ERR_ACCESS_DENIED;\n+\t  }\n+\n+      *flags = GRUB_VERIFY_FLAGS_SINGLE_CHUNK;\n+\n+      /* Fall through. */\n+\n+    default:\n+      return GRUB_ERR_NONE;\n+    }\n+}\n+\n+static grub_err_t\n+shim_lock_verifier_write (void *context __attribute__ ((unused)), void *buf, grub_size_t size)\n+{\n+  grub_efi_shim_lock_protocol_t *sl = grub_efi_locate_protocol (&shim_lock_guid, 0);\n+\n+  if (!sl)\n+    return grub_error (GRUB_ERR_ACCESS_DENIED, N_(\"shim_lock protocol not found\"));\n+\n+  if (sl->verify (buf, size) != GRUB_EFI_SUCCESS)\n+    return grub_error (GRUB_ERR_BAD_SIGNATURE, N_(\"bad shim signature\"));\n+\n+  return GRUB_ERR_NONE;\n+}\n+\n+struct grub_file_verifier shim_lock_verifier =\n+  {\n+    .name = \"shim_lock_verifier\",\n+    .init = shim_lock_verifier_init,\n+    .write = shim_lock_verifier_write\n+  };\n+\n+void\n+grub_shim_lock_verifier_setup (void)\n+{\n+  grub_efi_shim_lock_protocol_t *sl =\n+    grub_efi_locate_protocol (&shim_lock_guid, 0);\n+\n+  if (!sl)\n+    return;\n+\n+  if (grub_efi_get_secureboot () != GRUB_EFI_SECUREBOOT_MODE_ENABLED)\n+    return;\n+\n+  grub_verifier_register (&shim_lock_verifier);\n+}\ndiff --git a/include/grub/efi/sb.h b/include/grub/efi/sb.h\nindex a33d985..30c4335 100644\n--- a/include/grub/efi/sb.h\n+++ b/include/grub/efi/sb.h\n@@ -30,6 +30,9 @@\n #ifdef GRUB_MACHINE_EFI\n extern grub_uint8_t\n EXPORT_FUNC (grub_efi_get_secureboot) (void);\n+\n+extern void\n+grub_shim_lock_verifier_setup (void);\n #else\n static inline grub_uint8_t\n grub_efi_get_secureboot (void)\ndiff --git a/po/POTFILES.in b/po/POTFILES.in\nindex 11c799f..49755d3 100644\n--- a/po/POTFILES.in\n+++ b/po/POTFILES.in\n@@ -39,7 +39,6 @@\n ./grub-core/commands/efi/lsefimmap.c\n ./grub-core/commands/efi/lsefisystab.c\n ./grub-core/commands/efi/lssal.c\n-./grub-core/commands/efi/shim_lock.c\n ./grub-core/commands/efi/tpm.c\n ./grub-core/commands/eval.c\n ./grub-core/commands/extcmd.c\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0035-kern-Add-lockdown-support.patch",
    "content": "From 578c95298bcc46e0296f4c786db64c2ff26ce2cc Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Mon, 28 Sep 2020 20:08:02 +0200\nSubject: [PATCH] kern: Add lockdown support\n\nWhen the GRUB starts on a secure boot platform, some commands can be\nused to subvert the protections provided by the verification mechanism and\ncould lead to booting untrusted system.\n\nTo prevent that situation, allow GRUB to be locked down. That way the code\nmay check if GRUB has been locked down and further restrict the commands\nthat are registered or what subset of their functionality could be used.\n\nThe lockdown support adds the following components:\n\n* The grub_lockdown() function which can be used to lockdown GRUB if,\n  e.g., UEFI Secure Boot is enabled.\n\n* The grub_is_lockdown() function which can be used to check if the GRUB\n  was locked down.\n\n* A verifier that flags OS kernels, the GRUB modules, Device Trees and ACPI\n  tables as GRUB_VERIFY_FLAGS_DEFER_AUTH to defer verification to other\n  verifiers. These files are only successfully verified if another registered\n  verifier returns success. Otherwise, the whole verification process fails.\n\n  For example, PE/COFF binaries verification can be done by the shim_lock\n  verifier which validates the signatures using the shim_lock protocol.\n  However, the verification is not deferred directly to the shim_lock verifier.\n  The shim_lock verifier is hooked into the verification process instead.\n\n* A set of grub_{command,extcmd}_lockdown functions that can be used by\n  code registering command handlers, to only register unsafe commands if\n  the GRUB has not been locked down.\n\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n[Add changes to generated files]\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n Makefile.in                 |  2 ++\n conf/Makefile.common        |  2 ++\n docs/grub-dev.texi          | 27 +++++++++++++++\n docs/grub.texi              |  8 +++++\n grub-core/Makefile.am       |  5 ++-\n grub-core/Makefile.core.am  | 14 ++++----\n grub-core/Makefile.core.def |  1 +\n grub-core/Makefile.in       | 73 ++++++++++++++++++++++++++++++-----------\n grub-core/commands/extcmd.c | 23 +++++++++++++\n grub-core/kern/command.c    | 24 ++++++++++++++\n grub-core/kern/lockdown.c   | 80 +++++++++++++++++++++++++++++++++++++++++++++\n include/grub/command.h      |  5 +++\n include/grub/extcmd.h       |  7 ++++\n include/grub/lockdown.h     | 44 +++++++++++++++++++++++++\n po/POTFILES.in              |  2 ++\n 15 files changed, 290 insertions(+), 27 deletions(-)\n create mode 100644 grub-core/kern/lockdown.c\n create mode 100644 include/grub/lockdown.h\n\ndiff --git a/Makefile.in b/Makefile.in\nindex e6a185b..ecb3278 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -2617,7 +2617,9 @@ CPPFLAGS_PARTTOOL_LIST = -Dgrub_parttool_register=PARTTOOL_LIST_MARKER\n CPPFLAGS_TERMINAL_LIST = '-Dgrub_term_register_input(...)=INPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)' \\\n \t'-Dgrub_term_register_output(...)=OUTPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)'\n CPPFLAGS_COMMAND_LIST = '-Dgrub_register_command(...)=COMMAND_LIST_MARKER(__VA_ARGS__)' \\\n+\t'-Dgrub_register_command_lockdown(...)=COMMAND_LOCKDOWN_LIST_MARKER(__VA_ARGS__)' \\\n \t'-Dgrub_register_extcmd(...)=EXTCOMMAND_LIST_MARKER(__VA_ARGS__)' \\\n+\t'-Dgrub_register_extcmd_lockdown(...)=EXTCOMMAND_LOCKDOWN_LIST_MARKER(__VA_ARGS__)' \\\n \t'-Dgrub_register_command_p1(...)=P1COMMAND_LIST_MARKER(__VA_ARGS__)'\n CPPFLAGS_FDT_LIST := '-Dgrub_fdtbus_register(...)=FDT_DRIVER_LIST_MARKER(__VA_ARGS__)'\n CPPFLAGS_MARKER = $(CPPFLAGS_FS_LIST) $(CPPFLAGS_VIDEO_LIST) \\\ndiff --git a/conf/Makefile.common b/conf/Makefile.common\nindex 6cd71cb..2a1a886 100644\n--- a/conf/Makefile.common\n+++ b/conf/Makefile.common\n@@ -84,7 +84,9 @@ CPPFLAGS_PARTTOOL_LIST = -Dgrub_parttool_register=PARTTOOL_LIST_MARKER\n CPPFLAGS_TERMINAL_LIST = '-Dgrub_term_register_input(...)=INPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)'\n CPPFLAGS_TERMINAL_LIST += '-Dgrub_term_register_output(...)=OUTPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)'\n CPPFLAGS_COMMAND_LIST = '-Dgrub_register_command(...)=COMMAND_LIST_MARKER(__VA_ARGS__)'\n+CPPFLAGS_COMMAND_LIST += '-Dgrub_register_command_lockdown(...)=COMMAND_LOCKDOWN_LIST_MARKER(__VA_ARGS__)'\n CPPFLAGS_COMMAND_LIST += '-Dgrub_register_extcmd(...)=EXTCOMMAND_LIST_MARKER(__VA_ARGS__)'\n+CPPFLAGS_COMMAND_LIST += '-Dgrub_register_extcmd_lockdown(...)=EXTCOMMAND_LOCKDOWN_LIST_MARKER(__VA_ARGS__)'\n CPPFLAGS_COMMAND_LIST += '-Dgrub_register_command_p1(...)=P1COMMAND_LIST_MARKER(__VA_ARGS__)'\n CPPFLAGS_FDT_LIST := '-Dgrub_fdtbus_register(...)=FDT_DRIVER_LIST_MARKER(__VA_ARGS__)'\n CPPFLAGS_MARKER = $(CPPFLAGS_FS_LIST) $(CPPFLAGS_VIDEO_LIST) \\\ndiff --git a/docs/grub-dev.texi b/docs/grub-dev.texi\nindex ee389fd..635ec72 100644\n--- a/docs/grub-dev.texi\n+++ b/docs/grub-dev.texi\n@@ -86,6 +86,7 @@ This edition documents version @value{VERSION}.\n * PFF2 Font File Format::\n * Graphical Menu Software Design::\n * Verifiers framework::\n+* Lockdown framework::\n * Copying This Manual::         Copying This Manual\n * Index::\n @end menu\n@@ -2086,6 +2087,32 @@ Optionally at the end of the file @samp{fini}, if it exists, is called with just\n the context. If you return no error during any of @samp{init}, @samp{write} and\n @samp{fini} then the file is considered as having succeded verification.\n \n+@node Lockdown framework\n+@chapter Lockdown framework\n+\n+The GRUB can be locked down, which is a restricted mode where some operations\n+are not allowed. For instance, some commands cannot be used when the GRUB is\n+locked down.\n+\n+The function\n+@code{grub_lockdown()} is used to lockdown GRUB and the function\n+@code{grub_is_lockdown()} function can be used to check whether lockdown is\n+enabled or not. When enabled, the function returns @samp{GRUB_LOCKDOWN_ENABLED}\n+and @samp{GRUB_LOCKDOWN_DISABLED} when is not enabled.\n+\n+The following functions can be used to register the commands that can only be\n+used when lockdown is disabled:\n+\n+@itemize\n+\n+@item @code{grub_cmd_lockdown()} registers command which should not run when the\n+GRUB is in lockdown mode.\n+\n+@item @code{grub_cmd_lockdown()} registers extended command which should not run\n+when the GRUB is in lockdown mode.\n+\n+@end itemize\n+\n @node Copying This Manual\n @appendix Copying This Manual\n \ndiff --git a/docs/grub.texi b/docs/grub.texi\nindex aefe032..a25459f 100644\n--- a/docs/grub.texi\n+++ b/docs/grub.texi\n@@ -5581,6 +5581,7 @@ environment variables and commands are listed in the same order.\n * Using digital signatures::         Booting digitally signed code\n * UEFI secure boot and shim::        Booting digitally signed PE files\n * Measured Boot::                    Measuring boot components\n+* Lockdown::                         Lockdown when booting on a secure setup\n @end menu\n \n @node Authentication and authorisation\n@@ -5795,6 +5796,13 @@ into @file{core.img} in order to avoid a potential gap in measurement between\n \n Measured boot is currently only supported on EFI platforms.\n \n+@node Lockdown\n+@section Lockdown when booting on a secure setup\n+\n+The GRUB can be locked down when booted on a secure boot environment, for example\n+if the UEFI secure boot is enabled. On a locked down configuration, the GRUB will\n+be restricted and some operations/commands cannot be executed.\n+\n @node Platform limitations\n @chapter Platform limitations\n \ndiff --git a/grub-core/Makefile.am b/grub-core/Makefile.am\nindex cc6fc7d..30e23ad 100644\n--- a/grub-core/Makefile.am\n+++ b/grub-core/Makefile.am\n@@ -80,6 +80,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/fs.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i18n.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/kernel.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/list.h\n+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lockdown.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/misc.h\n if COND_emu\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/compiler-rt-emu.h\n@@ -377,8 +378,10 @@ command.lst: $(MARKER_FILES)\n \t  b=`basename $$pp .marker`; \\\n \t  sed -n \\\n \t    -e \"/EXTCOMMAND_LIST_MARKER *( *\\\"/{s/.*( *\\\"\\([^\\\"]*\\)\\\".*/*\\1: $$b/;p;}\" \\\n+\t    -e \"/EXTCOMMAND_LOCKDOWN_LIST_MARKER *( *\\\"/{s/.*( *\\\"\\([^\\\"]*\\)\\\".*/*\\1: $$b/;p;}\" \\\n \t    -e \"/P1COMMAND_LIST_MARKER *( *\\\"/{s/.*( *\\\"\\([^\\\"]*\\)\\\".*/*\\1: $$b/;p;}\" \\\n-\t    -e \"/COMMAND_LIST_MARKER *( *\\\"/{s/.*( *\\\"\\([^\\\"]*\\)\\\".*/\\1: $$b/;p;}\" $$pp; \\\n+\t    -e \"/COMMAND_LIST_MARKER *( *\\\"/{s/.*( *\\\"\\([^\\\"]*\\)\\\".*/\\1: $$b/;p;}\" \\\n+\t    -e \"/COMMAND_LOCKDOWN_LIST_MARKER *( *\\\"/{s/.*( *\\\"\\([^\\\"]*\\)\\\".*/\\1: $$b/;p;}\" $$pp; \\\n \tdone) | sort -u > $@\n platform_DATA += command.lst\n CLEANFILES += command.lst\ndiff --git a/grub-core/Makefile.core.am b/grub-core/Makefile.core.am\nindex 5623a5e..fbfb627 100644\n--- a/grub-core/Makefile.core.am\n+++ b/grub-core/Makefile.core.am\n@@ -22378,7 +22378,7 @@ endif\n if COND_i386_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/efi/startup.S \n-kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/i386/efi/init.c bus/pci.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/i386/efi/init.c bus/pci.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22488,7 +22488,7 @@ endif\n if COND_x86_64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/x86_64/efi/startup.S \n-kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/x86_64/efi/callwrap.S kern/i386/efi/init.c bus/pci.c kern/x86_64/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/x86_64/efi/callwrap.S kern/i386/efi/init.c bus/pci.c kern/x86_64/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22664,7 +22664,7 @@ endif\n if COND_ia64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = \n-kernel_exec_SOURCES += kern/ia64/efi/startup.S kern/ia64/efi/init.c kern/ia64/dl.c kern/ia64/dl_helper.c kern/ia64/cache.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/ia64/efi/startup.S kern/ia64/efi/init.c kern/ia64/dl.c kern/ia64/dl_helper.c kern/ia64/cache.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) -fno-builtin -fpic -minline-int-divide-max-throughput \n@@ -22730,7 +22730,7 @@ endif\n if COND_arm_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/arm/efi/startup.S \n-kernel_exec_SOURCES += kern/arm/efi/init.c kern/efi/fdt.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/arm/efi/init.c kern/efi/fdt.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22752,7 +22752,7 @@ endif\n if COND_arm64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/arm64/efi/startup.S \n-kernel_exec_SOURCES += kern/arm64/efi/init.c kern/efi/fdt.c kern/arm64/cache.c kern/arm64/cache_flush.S kern/arm64/dl.c kern/arm64/dl_helper.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/arm64/efi/init.c kern/efi/fdt.c kern/arm64/cache.c kern/arm64/cache_flush.S kern/arm64/dl.c kern/arm64/dl_helper.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22796,7 +22796,7 @@ endif\n if COND_riscv32_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/riscv/efi/startup.S \n-kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22818,7 +22818,7 @@ endif\n if COND_riscv64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/riscv/efi/startup.S \n-kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \ndiff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def\nindex 4d380ed..ee8dc55 100644\n--- a/grub-core/Makefile.core.def\n+++ b/grub-core/Makefile.core.def\n@@ -205,6 +205,7 @@ kernel = {\n   efi = kern/acpi.c;\n   efi = kern/efi/acpi.c;\n   efi = kern/efi/sb.c;\n+  efi = kern/lockdown.c;\n   i386_coreboot = kern/i386/pc/acpi.c;\n   i386_multiboot = kern/i386/pc/acpi.c;\n   i386_coreboot = kern/acpi.c;\ndiff --git a/grub-core/Makefile.in b/grub-core/Makefile.in\nindex 09dc802..ac400ea 100644\n--- a/grub-core/Makefile.in\n+++ b/grub-core/Makefile.in\n@@ -10457,13 +10457,14 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n \tkern/arm64/cache_flush.S kern/arm64/dl.c \\\n \tkern/arm64/dl_helper.c disk/efi/efidisk.c kern/efi/efi.c \\\n \tkern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c \\\n-\tkern/efi/acpi.c kern/efi/sb.c kern/compiler-rt.c kern/mm.c \\\n-\tkern/time.c kern/generic/millisleep.c kern/command.c \\\n-\tkern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c \\\n-\tkern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c \\\n-\tkern/misc.c kern/parser.c kern/partition.c \\\n-\tkern/rescue_parser.c kern/rescue_reader.c kern/term.c \\\n-\tkern/verifiers.c kern/arm/startup.S kern/arm/coreboot/init.c \\\n+\tkern/efi/acpi.c kern/efi/sb.c kern/lockdown.c \\\n+\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n+\tkern/generic/millisleep.c kern/command.c kern/corecmd.c \\\n+\tkern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c \\\n+\tkern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c \\\n+\tkern/parser.c kern/partition.c kern/rescue_parser.c \\\n+\tkern/rescue_reader.c kern/term.c kern/verifiers.c \\\n+\tkern/arm/startup.S kern/arm/coreboot/init.c \\\n \tkern/arm/coreboot/timer.c kern/arm/coreboot/coreboot.S \\\n \tlib/fdt.c bus/fdt.c term/ps2.c term/arm/pl050.c \\\n \tterm/arm/cros.c term/arm/cros_ec.c bus/spi/rk3288_spi.c \\\n@@ -10572,6 +10573,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-lockdown.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -10646,6 +10648,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-lockdown.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -10683,6 +10686,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-lockdown.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -10884,6 +10888,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-lockdown.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -11120,6 +11125,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-lockdown.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -11287,6 +11293,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-lockdown.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -11379,6 +11386,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/efi/kernel_exec-acpi.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/efi/kernel_exec-sb.$(OBJEXT) \\\n+@COND_arm64_efi_TRUE@\tkern/kernel_exec-lockdown.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-compiler-rt.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n@@ -15379,7 +15387,9 @@ CPPFLAGS_PARTTOOL_LIST = -Dgrub_parttool_register=PARTTOOL_LIST_MARKER\n CPPFLAGS_TERMINAL_LIST = '-Dgrub_term_register_input(...)=INPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)' \\\n \t'-Dgrub_term_register_output(...)=OUTPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)'\n CPPFLAGS_COMMAND_LIST = '-Dgrub_register_command(...)=COMMAND_LIST_MARKER(__VA_ARGS__)' \\\n+\t'-Dgrub_register_command_lockdown(...)=COMMAND_LOCKDOWN_LIST_MARKER(__VA_ARGS__)' \\\n \t'-Dgrub_register_extcmd(...)=EXTCOMMAND_LIST_MARKER(__VA_ARGS__)' \\\n+\t'-Dgrub_register_extcmd_lockdown(...)=EXTCOMMAND_LOCKDOWN_LIST_MARKER(__VA_ARGS__)' \\\n \t'-Dgrub_register_command_p1(...)=P1COMMAND_LIST_MARKER(__VA_ARGS__)'\n CPPFLAGS_FDT_LIST := '-Dgrub_fdtbus_register(...)=FDT_DRIVER_LIST_MARKER(__VA_ARGS__)'\n CPPFLAGS_MARKER = $(CPPFLAGS_FS_LIST) $(CPPFLAGS_VIDEO_LIST) \\\n@@ -16387,6 +16397,7 @@ KERNEL_HEADER_FILES = $(top_srcdir)/include/grub/cache.h \\\n \t$(top_srcdir)/include/grub/i18n.h \\\n \t$(top_srcdir)/include/grub/kernel.h \\\n \t$(top_srcdir)/include/grub/list.h \\\n+\t$(top_srcdir)/include/grub/lockdown.h \\\n \t$(top_srcdir)/include/grub/misc.h $(am__append_5794) \\\n \t$(am__append_5795) $(top_srcdir)/include/grub/mm.h \\\n \t$(top_srcdir)/include/grub/parser.h \\\n@@ -25594,7 +25605,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_arm64_efi_TRUE@\tkern/efi/efi.c kern/efi/init.c \\\n @COND_arm64_efi_TRUE@\tkern/efi/mm.c term/efi/console.c \\\n @COND_arm64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c kern/efi/sb.c \\\n-@COND_arm64_efi_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n+@COND_arm64_efi_TRUE@\tkern/lockdown.c kern/compiler-rt.c \\\n+@COND_arm64_efi_TRUE@\tkern/mm.c kern/time.c \\\n @COND_arm64_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n @COND_arm64_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n @COND_arm64_efi_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n@@ -25645,7 +25657,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_arm_efi_TRUE@\tkern/efi/init.c kern/efi/mm.c \\\n @COND_arm_efi_TRUE@\tterm/efi/console.c kern/acpi.c \\\n @COND_arm_efi_TRUE@\tkern/efi/acpi.c kern/efi/sb.c \\\n-@COND_arm_efi_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n+@COND_arm_efi_TRUE@\tkern/lockdown.c kern/compiler-rt.c \\\n+@COND_arm_efi_TRUE@\tkern/mm.c kern/time.c \\\n @COND_arm_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n @COND_arm_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n @COND_arm_efi_TRUE@\tkern/dl.c kern/env.c kern/err.c kern/file.c \\\n@@ -25725,7 +25738,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_efi_TRUE@\tkern/efi/efi.c kern/efi/init.c \\\n @COND_i386_efi_TRUE@\tkern/efi/mm.c term/efi/console.c \\\n @COND_i386_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c kern/efi/sb.c \\\n-@COND_i386_efi_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n+@COND_i386_efi_TRUE@\tkern/lockdown.c kern/compiler-rt.c \\\n+@COND_i386_efi_TRUE@\tkern/mm.c kern/time.c \\\n @COND_i386_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n @COND_i386_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n @COND_i386_efi_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n@@ -25843,7 +25857,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_ia64_efi_TRUE@\tkern/efi/efi.c kern/efi/init.c \\\n @COND_ia64_efi_TRUE@\tkern/efi/mm.c term/efi/console.c \\\n @COND_ia64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c kern/efi/sb.c \\\n-@COND_ia64_efi_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n+@COND_ia64_efi_TRUE@\tkern/lockdown.c kern/compiler-rt.c \\\n+@COND_ia64_efi_TRUE@\tkern/mm.c kern/time.c \\\n @COND_ia64_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n @COND_ia64_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n @COND_ia64_efi_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n@@ -25956,8 +25971,9 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_riscv32_efi_TRUE@\tkern/efi/init.c kern/efi/mm.c \\\n @COND_riscv32_efi_TRUE@\tterm/efi/console.c kern/acpi.c \\\n @COND_riscv32_efi_TRUE@\tkern/efi/acpi.c kern/efi/sb.c \\\n-@COND_riscv32_efi_TRUE@\tkern/compiler-rt.c kern/mm.c \\\n-@COND_riscv32_efi_TRUE@\tkern/time.c kern/generic/millisleep.c \\\n+@COND_riscv32_efi_TRUE@\tkern/lockdown.c kern/compiler-rt.c \\\n+@COND_riscv32_efi_TRUE@\tkern/mm.c kern/time.c \\\n+@COND_riscv32_efi_TRUE@\tkern/generic/millisleep.c \\\n @COND_riscv32_efi_TRUE@\tkern/command.c kern/corecmd.c \\\n @COND_riscv32_efi_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n @COND_riscv32_efi_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n@@ -25974,9 +25990,9 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_riscv64_efi_TRUE@\tkern/efi/efi.c kern/efi/init.c \\\n @COND_riscv64_efi_TRUE@\tkern/efi/mm.c term/efi/console.c \\\n @COND_riscv64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c \\\n-@COND_riscv64_efi_TRUE@\tkern/efi/sb.c kern/compiler-rt.c \\\n-@COND_riscv64_efi_TRUE@\tkern/mm.c kern/time.c \\\n-@COND_riscv64_efi_TRUE@\tkern/generic/millisleep.c \\\n+@COND_riscv64_efi_TRUE@\tkern/efi/sb.c kern/lockdown.c \\\n+@COND_riscv64_efi_TRUE@\tkern/compiler-rt.c kern/mm.c \\\n+@COND_riscv64_efi_TRUE@\tkern/time.c kern/generic/millisleep.c \\\n @COND_riscv64_efi_TRUE@\tkern/command.c kern/corecmd.c \\\n @COND_riscv64_efi_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n @COND_riscv64_efi_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n@@ -26022,8 +26038,8 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_x86_64_efi_TRUE@\tkern/efi/efi.c kern/efi/init.c \\\n @COND_x86_64_efi_TRUE@\tkern/efi/mm.c term/efi/console.c \\\n @COND_x86_64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c \\\n-@COND_x86_64_efi_TRUE@\tkern/efi/sb.c kern/compiler-rt.c \\\n-@COND_x86_64_efi_TRUE@\tkern/mm.c kern/time.c \\\n+@COND_x86_64_efi_TRUE@\tkern/efi/sb.c kern/lockdown.c \\\n+@COND_x86_64_efi_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n @COND_x86_64_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n @COND_x86_64_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n @COND_x86_64_efi_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n@@ -27994,6 +28010,8 @@ kern/efi/kernel_exec-acpi.$(OBJEXT): kern/efi/$(am__dirstamp) \\\n \tkern/efi/$(DEPDIR)/$(am__dirstamp)\n kern/efi/kernel_exec-sb.$(OBJEXT): kern/efi/$(am__dirstamp) \\\n \tkern/efi/$(DEPDIR)/$(am__dirstamp)\n+kern/kernel_exec-lockdown.$(OBJEXT): kern/$(am__dirstamp) \\\n+\tkern/$(DEPDIR)/$(am__dirstamp)\n kern/kernel_exec-compiler-rt.$(OBJEXT): kern/$(am__dirstamp) \\\n \tkern/$(DEPDIR)/$(am__dirstamp)\n kern/kernel_exec-mm.$(OBJEXT): kern/$(am__dirstamp) \\\n@@ -30945,6 +30963,7 @@ distclean-compile:\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-file.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-fs.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-list.Po@am__quote@\n+@AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-lockdown.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-main.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-misc.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-mm.Po@am__quote@\n@@ -35293,6 +35312,20 @@ kern/efi/kernel_exec-sb.obj: kern/efi/sb.c\n @AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n @am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -c -o kern/efi/kernel_exec-sb.obj `if test -f 'kern/efi/sb.c'; then $(CYGPATH_W) 'kern/efi/sb.c'; else $(CYGPATH_W) '$(srcdir)/kern/efi/sb.c'; fi`\n \n+kern/kernel_exec-lockdown.o: kern/lockdown.c\n+@am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -MT kern/kernel_exec-lockdown.o -MD -MP -MF kern/$(DEPDIR)/kernel_exec-lockdown.Tpo -c -o kern/kernel_exec-lockdown.o `test -f 'kern/lockdown.c' || echo '$(srcdir)/'`kern/lockdown.c\n+@am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) kern/$(DEPDIR)/kernel_exec-lockdown.Tpo kern/$(DEPDIR)/kernel_exec-lockdown.Po\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\t$(AM_V_CC)source='kern/lockdown.c' object='kern/kernel_exec-lockdown.o' libtool=no @AMDEPBACKSLASH@\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n+@am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -c -o kern/kernel_exec-lockdown.o `test -f 'kern/lockdown.c' || echo '$(srcdir)/'`kern/lockdown.c\n+\n+kern/kernel_exec-lockdown.obj: kern/lockdown.c\n+@am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -MT kern/kernel_exec-lockdown.obj -MD -MP -MF kern/$(DEPDIR)/kernel_exec-lockdown.Tpo -c -o kern/kernel_exec-lockdown.obj `if test -f 'kern/lockdown.c'; then $(CYGPATH_W) 'kern/lockdown.c'; else $(CYGPATH_W) '$(srcdir)/kern/lockdown.c'; fi`\n+@am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) kern/$(DEPDIR)/kernel_exec-lockdown.Tpo kern/$(DEPDIR)/kernel_exec-lockdown.Po\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\t$(AM_V_CC)source='kern/lockdown.c' object='kern/kernel_exec-lockdown.obj' libtool=no @AMDEPBACKSLASH@\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n+@am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -c -o kern/kernel_exec-lockdown.obj `if test -f 'kern/lockdown.c'; then $(CYGPATH_W) 'kern/lockdown.c'; else $(CYGPATH_W) '$(srcdir)/kern/lockdown.c'; fi`\n+\n kern/kernel_exec-compiler-rt.o: kern/compiler-rt.c\n @am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -MT kern/kernel_exec-compiler-rt.o -MD -MP -MF kern/$(DEPDIR)/kernel_exec-compiler-rt.Tpo -c -o kern/kernel_exec-compiler-rt.o `test -f 'kern/compiler-rt.c' || echo '$(srcdir)/'`kern/compiler-rt.c\n @am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) kern/$(DEPDIR)/kernel_exec-compiler-rt.Tpo kern/$(DEPDIR)/kernel_exec-compiler-rt.Po\n@@ -46650,8 +46683,10 @@ command.lst: $(MARKER_FILES)\n \t  b=`basename $$pp .marker`; \\\n \t  sed -n \\\n \t    -e \"/EXTCOMMAND_LIST_MARKER *( *\\\"/{s/.*( *\\\"\\([^\\\"]*\\)\\\".*/*\\1: $$b/;p;}\" \\\n+\t    -e \"/EXTCOMMAND_LOCKDOWN_LIST_MARKER *( *\\\"/{s/.*( *\\\"\\([^\\\"]*\\)\\\".*/*\\1: $$b/;p;}\" \\\n \t    -e \"/P1COMMAND_LIST_MARKER *( *\\\"/{s/.*( *\\\"\\([^\\\"]*\\)\\\".*/*\\1: $$b/;p;}\" \\\n-\t    -e \"/COMMAND_LIST_MARKER *( *\\\"/{s/.*( *\\\"\\([^\\\"]*\\)\\\".*/\\1: $$b/;p;}\" $$pp; \\\n+\t    -e \"/COMMAND_LIST_MARKER *( *\\\"/{s/.*( *\\\"\\([^\\\"]*\\)\\\".*/\\1: $$b/;p;}\" \\\n+\t    -e \"/COMMAND_LOCKDOWN_LIST_MARKER *( *\\\"/{s/.*( *\\\"\\([^\\\"]*\\)\\\".*/\\1: $$b/;p;}\" $$pp; \\\n \tdone) | sort -u > $@\n \n partmap.lst: $(MARKER_FILES)\ndiff --git a/grub-core/commands/extcmd.c b/grub-core/commands/extcmd.c\nindex 69574e2..90a5ca2 100644\n--- a/grub-core/commands/extcmd.c\n+++ b/grub-core/commands/extcmd.c\n@@ -19,6 +19,7 @@\n \n #include <grub/mm.h>\n #include <grub/list.h>\n+#include <grub/lockdown.h>\n #include <grub/misc.h>\n #include <grub/extcmd.h>\n #include <grub/script_sh.h>\n@@ -110,6 +111,28 @@ grub_register_extcmd (const char *name, grub_extcmd_func_t func,\n \t\t\t\t    summary, description, parser, 1);\n }\n \n+static grub_err_t\n+grub_extcmd_lockdown (grub_extcmd_context_t ctxt __attribute__ ((unused)),\n+                      int argc __attribute__ ((unused)),\n+                      char **argv __attribute__ ((unused)))\n+{\n+  return grub_error (GRUB_ERR_ACCESS_DENIED,\n+                     N_(\"%s: the command is not allowed when lockdown is enforced\"),\n+                     ctxt->extcmd->cmd->name);\n+}\n+\n+grub_extcmd_t\n+grub_register_extcmd_lockdown (const char *name, grub_extcmd_func_t func,\n+                               grub_command_flags_t flags, const char *summary,\n+                               const char *description,\n+                               const struct grub_arg_option *parser)\n+{\n+  if (grub_is_lockdown () == GRUB_LOCKDOWN_ENABLED)\n+    func = grub_extcmd_lockdown;\n+\n+  return grub_register_extcmd (name, func, flags, summary, description, parser);\n+}\n+\n void\n grub_unregister_extcmd (grub_extcmd_t ext)\n {\ndiff --git a/grub-core/kern/command.c b/grub-core/kern/command.c\nindex acd7218..4aabcd4 100644\n--- a/grub-core/kern/command.c\n+++ b/grub-core/kern/command.c\n@@ -17,6 +17,7 @@\n  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.\n  */\n \n+#include <grub/lockdown.h>\n #include <grub/mm.h>\n #include <grub/command.h>\n \n@@ -77,6 +78,29 @@ grub_register_command_prio (const char *name,\n   return cmd;\n }\n \n+static grub_err_t\n+grub_cmd_lockdown (grub_command_t cmd __attribute__ ((unused)),\n+                   int argc __attribute__ ((unused)),\n+                   char **argv __attribute__ ((unused)))\n+\n+{\n+  return grub_error (GRUB_ERR_ACCESS_DENIED,\n+                     N_(\"%s: the command is not allowed when lockdown is enforced\"),\n+                     cmd->name);\n+}\n+\n+grub_command_t\n+grub_register_command_lockdown (const char *name,\n+                                grub_command_func_t func,\n+                                const char *summary,\n+                                const char *description)\n+{\n+  if (grub_is_lockdown () == GRUB_LOCKDOWN_ENABLED)\n+    func = grub_cmd_lockdown;\n+\n+  return grub_register_command_prio (name, func, summary, description, 0);\n+}\n+\n void\n grub_unregister_command (grub_command_t cmd)\n {\ndiff --git a/grub-core/kern/lockdown.c b/grub-core/kern/lockdown.c\nnew file mode 100644\nindex 0000000..1e56c0b\n--- /dev/null\n+++ b/grub-core/kern/lockdown.c\n@@ -0,0 +1,80 @@\n+/*\n+ *  GRUB  --  GRand Unified Bootloader\n+ *  Copyright (C) 2020  Free Software Foundation, Inc.\n+ *\n+ *  GRUB is free software: you can redistribute it and/or modify\n+ *  it under the terms of the GNU General Public License as published by\n+ *  the Free Software Foundation, either version 3 of the License, or\n+ *  (at your option) any later version.\n+ *\n+ *  GRUB is distributed in the hope that it will be useful,\n+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ *  GNU General Public License for more details.\n+ *\n+ *  You should have received a copy of the GNU General Public License\n+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.\n+ *\n+ */\n+\n+#include <grub/dl.h>\n+#include <grub/file.h>\n+#include <grub/lockdown.h>\n+#include <grub/verify.h>\n+\n+static int lockdown = GRUB_LOCKDOWN_DISABLED;\n+\n+static grub_err_t\n+lockdown_verifier_init (grub_file_t io __attribute__ ((unused)),\n+                    enum grub_file_type type,\n+                    void **context __attribute__ ((unused)),\n+                    enum grub_verify_flags *flags)\n+{\n+  *flags = GRUB_VERIFY_FLAGS_SKIP_VERIFICATION;\n+\n+  switch (type & GRUB_FILE_TYPE_MASK)\n+    {\n+    case GRUB_FILE_TYPE_GRUB_MODULE:\n+    case GRUB_FILE_TYPE_LINUX_KERNEL:\n+    case GRUB_FILE_TYPE_MULTIBOOT_KERNEL:\n+    case GRUB_FILE_TYPE_XEN_HYPERVISOR:\n+    case GRUB_FILE_TYPE_BSD_KERNEL:\n+    case GRUB_FILE_TYPE_XNU_KERNEL:\n+    case GRUB_FILE_TYPE_PLAN9_KERNEL:\n+    case GRUB_FILE_TYPE_NTLDR:\n+    case GRUB_FILE_TYPE_TRUECRYPT:\n+    case GRUB_FILE_TYPE_FREEDOS:\n+    case GRUB_FILE_TYPE_PXECHAINLOADER:\n+    case GRUB_FILE_TYPE_PCCHAINLOADER:\n+    case GRUB_FILE_TYPE_COREBOOT_CHAINLOADER:\n+    case GRUB_FILE_TYPE_EFI_CHAINLOADED_IMAGE:\n+    case GRUB_FILE_TYPE_ACPI_TABLE:\n+    case GRUB_FILE_TYPE_DEVICE_TREE_IMAGE:\n+      *flags = GRUB_VERIFY_FLAGS_DEFER_AUTH;\n+\n+      /* Fall through. */\n+\n+    default:\n+      return GRUB_ERR_NONE;\n+    }\n+}\n+\n+struct grub_file_verifier lockdown_verifier =\n+  {\n+    .name = \"lockdown_verifier\",\n+    .init = lockdown_verifier_init,\n+  };\n+\n+void\n+grub_lockdown (void)\n+{\n+  lockdown = GRUB_LOCKDOWN_ENABLED;\n+\n+  grub_verifier_register (&lockdown_verifier);\n+}\n+\n+int\n+grub_is_lockdown (void)\n+{\n+  return lockdown;\n+}\ndiff --git a/include/grub/command.h b/include/grub/command.h\nindex eee4e84..2a6f7f8 100644\n--- a/include/grub/command.h\n+++ b/include/grub/command.h\n@@ -86,6 +86,11 @@ EXPORT_FUNC(grub_register_command_prio) (const char *name,\n \t\t\t\t\t const char *summary,\n \t\t\t\t\t const char *description,\n \t\t\t\t\t int prio);\n+grub_command_t\n+EXPORT_FUNC(grub_register_command_lockdown) (const char *name,\n+                                             grub_command_func_t func,\n+                                             const char *summary,\n+                                             const char *description);\n void EXPORT_FUNC(grub_unregister_command) (grub_command_t cmd);\n \n static inline grub_command_t\ndiff --git a/include/grub/extcmd.h b/include/grub/extcmd.h\nindex 19fe592..fe9248b 100644\n--- a/include/grub/extcmd.h\n+++ b/include/grub/extcmd.h\n@@ -62,6 +62,13 @@ grub_extcmd_t EXPORT_FUNC(grub_register_extcmd) (const char *name,\n \t\t\t\t\t\t const char *description,\n \t\t\t\t\t\t const struct grub_arg_option *parser);\n \n+grub_extcmd_t EXPORT_FUNC(grub_register_extcmd_lockdown) (const char *name,\n+                                                          grub_extcmd_func_t func,\n+                                                          grub_command_flags_t flags,\n+                                                          const char *summary,\n+                                                          const char *description,\n+                                                          const struct grub_arg_option *parser);\n+\n grub_extcmd_t EXPORT_FUNC(grub_register_extcmd_prio) (const char *name,\n \t\t\t\t\t\t      grub_extcmd_func_t func,\n \t\t\t\t\t\t      grub_command_flags_t flags,\ndiff --git a/include/grub/lockdown.h b/include/grub/lockdown.h\nnew file mode 100644\nindex 0000000..40531fa\n--- /dev/null\n+++ b/include/grub/lockdown.h\n@@ -0,0 +1,44 @@\n+/*\n+ *  GRUB  --  GRand Unified Bootloader\n+ *  Copyright (C) 2020  Free Software Foundation, Inc.\n+ *\n+ *  GRUB is free software: you can redistribute it and/or modify\n+ *  it under the terms of the GNU General Public License as published by\n+ *  the Free Software Foundation, either version 3 of the License, or\n+ *  (at your option) any later version.\n+ *\n+ *  GRUB is distributed in the hope that it will be useful,\n+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ *  GNU General Public License for more details.\n+ *\n+ *  You should have received a copy of the GNU General Public License\n+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.\n+ */\n+\n+#ifndef GRUB_LOCKDOWN_H\n+#define GRUB_LOCKDOWN_H 1\n+\n+#include <grub/symbol.h>\n+\n+#define GRUB_LOCKDOWN_DISABLED       0\n+#define GRUB_LOCKDOWN_ENABLED        1\n+\n+#ifdef GRUB_MACHINE_EFI\n+extern void\n+EXPORT_FUNC (grub_lockdown) (void);\n+extern int\n+EXPORT_FUNC (grub_is_lockdown) (void);\n+#else\n+static inline void\n+grub_lockdown (void)\n+{\n+}\n+\n+static inline int\n+grub_is_lockdown (void)\n+{\n+  return GRUB_LOCKDOWN_DISABLED;\n+}\n+#endif\n+#endif /* ! GRUB_LOCKDOWN_H */\ndiff --git a/po/POTFILES.in b/po/POTFILES.in\nindex 49755d3..5e26845 100644\n--- a/po/POTFILES.in\n+++ b/po/POTFILES.in\n@@ -309,6 +309,7 @@\n ./grub-core/kern/ieee1275/mmap.c\n ./grub-core/kern/ieee1275/openfw.c\n ./grub-core/kern/list.c\n+./grub-core/kern/lockdown.c\n ./grub-core/kern/main.c\n ./grub-core/kern/mips/arc/init.c\n ./grub-core/kern/mips/dl.c\n@@ -1207,6 +1208,7 @@\n ./include/grub/linux.h\n ./include/grub/list.h\n ./include/grub/loader.h\n+./include/grub/lockdown.h\n ./include/grub/lvm.h\n ./include/grub/macho.h\n ./include/grub/machoload.h\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0036-kern-lockdown-Set-a-variable-if-the-GRUB-is-locked-d.patch",
    "content": "From d90367471779c240e002e62edfb6b31fc85b4908 Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Tue, 2 Feb 2021 19:59:48 +0100\nSubject: [PATCH] kern/lockdown: Set a variable if the GRUB is locked down\n\nIt may be useful for scripts to determine whether the GRUB is locked\ndown or not. Add the lockdown variable which is set to \"y\" when the GRUB\nis locked down.\n\nSuggested-by: Dimitri John Ledkov <xnox@ubuntu.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n docs/grub.texi            | 3 +++\n grub-core/kern/lockdown.c | 4 ++++\n 2 files changed, 7 insertions(+)\n\ndiff --git a/docs/grub.texi b/docs/grub.texi\nindex a25459f..bdbb329 100644\n--- a/docs/grub.texi\n+++ b/docs/grub.texi\n@@ -5803,6 +5803,9 @@ The GRUB can be locked down when booted on a secure boot environment, for exampl\n if the UEFI secure boot is enabled. On a locked down configuration, the GRUB will\n be restricted and some operations/commands cannot be executed.\n \n+The @samp{lockdown} variable is set to @samp{y} when the GRUB is locked down.\n+Otherwise it does not exit.\n+\n @node Platform limitations\n @chapter Platform limitations\n \ndiff --git a/grub-core/kern/lockdown.c b/grub-core/kern/lockdown.c\nindex 1e56c0b..0bc70fd 100644\n--- a/grub-core/kern/lockdown.c\n+++ b/grub-core/kern/lockdown.c\n@@ -18,6 +18,7 @@\n  */\n \n #include <grub/dl.h>\n+#include <grub/env.h>\n #include <grub/file.h>\n #include <grub/lockdown.h>\n #include <grub/verify.h>\n@@ -71,6 +72,9 @@ grub_lockdown (void)\n   lockdown = GRUB_LOCKDOWN_ENABLED;\n \n   grub_verifier_register (&lockdown_verifier);\n+\n+  grub_env_set (\"lockdown\", \"y\");\n+  grub_env_export (\"lockdown\");\n }\n \n int\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0037-efi-Lockdown-the-GRUB-when-the-UEFI-Secure-Boot-is-e.patch",
    "content": "From 98b00a403cbf2ba6833d1ac0499871b27a08eb77 Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Mon, 28 Sep 2020 20:08:29 +0200\nSubject: [PATCH] efi: Lockdown the GRUB when the UEFI Secure Boot is enabled\n\nIf the UEFI Secure Boot is enabled then the GRUB must be locked down\nto prevent executing code that can potentially be used to subvert its\nverification mechanisms.\n\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/efi/init.c | 12 ++++++++++--\n 1 file changed, 10 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/kern/efi/init.c b/grub-core/kern/efi/init.c\nindex b683bec..1333465 100644\n--- a/grub-core/kern/efi/init.c\n+++ b/grub-core/kern/efi/init.c\n@@ -21,6 +21,7 @@\n #include <grub/efi/console.h>\n #include <grub/efi/disk.h>\n #include <grub/efi/sb.h>\n+#include <grub/lockdown.h>\n #include <grub/term.h>\n #include <grub/misc.h>\n #include <grub/env.h>\n@@ -40,8 +41,15 @@ grub_efi_init (void)\n   /* Initialize the memory management system.  */\n   grub_efi_mm_init ();\n \n-  /* Register the shim_lock verifier if UEFI Secure Boot is enabled. */\n-  grub_shim_lock_verifier_setup ();\n+  /*\n+   * Lockdown the GRUB and register the shim_lock verifier\n+   * if the UEFI Secure Boot is enabled.\n+   */\n+  if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)\n+    {\n+      grub_lockdown ();\n+      grub_shim_lock_verifier_setup ();\n+    }\n \n   efi_call_4 (grub_efi_system_table->boot_services->set_watchdog_timer,\n \t      0, 0, 0, NULL);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0038-efi-Use-grub_is_lockdown-instead-of-hardcoding-a-dis.patch",
    "content": "From 8f73052885892bc0dbc01e297f79d7cf4925e491 Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Mon, 28 Sep 2020 20:08:33 +0200\nSubject: [PATCH] efi: Use grub_is_lockdown() instead of hardcoding a disabled\n modules list\n\nNow the GRUB can check if it has been locked down and this can be used to\nprevent executing commands that can be utilized to circumvent the UEFI\nSecure Boot mechanisms. So, instead of hardcoding a list of modules that\nhave to be disabled, prevent the usage of commands that can be dangerous.\n\nThis not only allows the commands to be disabled on other platforms, but\nalso properly separate the concerns. Since the shim_lock verifier logic\nshould be only about preventing to run untrusted binaries and not about\ndefining these kind of policies.\n\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n docs/grub.texi                  | 15 +++++++++------\n grub-core/commands/i386/wrmsr.c |  5 +++--\n grub-core/commands/iorw.c       | 19 ++++++++++---------\n grub-core/commands/memrw.c      | 19 ++++++++++---------\n grub-core/kern/efi/sb.c         | 41 -----------------------------------------\n 5 files changed, 32 insertions(+), 67 deletions(-)\n\ndiff --git a/docs/grub.texi b/docs/grub.texi\nindex bdbb329..bbe60a4 100644\n--- a/docs/grub.texi\n+++ b/docs/grub.texi\n@@ -5256,6 +5256,9 @@ only applies to the particular cpu/core/thread that runs the command.\n Also, if you specify a reserved or unimplemented MSR address, it will\n cause a general protection exception (which is not currently being handled)\n and the system will reboot.\n+\n+Note: The command is not allowed when lockdown is enforced (@pxref{Lockdown}).\n+      This is done to prevent subverting various security mechanisms.\n @end deffn\n \n @node xen_hypervisor\n@@ -5752,12 +5755,12 @@ boot and the shim. This functionality is provided by the shim_lock verifier. It\n is built into the @file{core.img} and is registered if the UEFI secure boot is\n enabled.\n \n-All modules not stored in the @file{core.img} and the ACPI tables for the\n-@command{acpi} command have to be signed, e.g. using PGP. Additionally, the\n-@command{iorw}, the @command{memrw} and the @command{wrmsr} commands are\n-prohibited if the UEFI secure boot is enabled. This is done due to\n-security reasons. All above mentioned requirements are enforced by the\n-shim_lock verifier logic.\n+All GRUB modules not stored in the @file{core.img}, OS kernels, ACPI tables,\n+Device Trees, etc. have to be signed, e.g, using PGP. Additionally, the commands\n+that can be used to subvert the UEFI secure boot mechanism, such as @command{iorw}\n+and @command{memrw} will not be available when the UEFI secure boot is enabled.\n+This is done for security reasons and are enforced by the GRUB Lockdown mechanism\n+(@pxref{Lockdown}).\n \n @node Measured Boot\n @section Measuring boot components\ndiff --git a/grub-core/commands/i386/wrmsr.c b/grub-core/commands/i386/wrmsr.c\nindex 9c5e510..56a29c2 100644\n--- a/grub-core/commands/i386/wrmsr.c\n+++ b/grub-core/commands/i386/wrmsr.c\n@@ -24,6 +24,7 @@\n #include <grub/env.h>\n #include <grub/command.h>\n #include <grub/extcmd.h>\n+#include <grub/lockdown.h>\n #include <grub/i18n.h>\n #include <grub/i386/cpuid.h>\n #include <grub/i386/wrmsr.h>\n@@ -83,8 +84,8 @@ grub_cmd_msr_write (grub_command_t cmd __attribute__ ((unused)), int argc, char\n \n GRUB_MOD_INIT(wrmsr)\n {\n-  cmd_write = grub_register_command (\"wrmsr\", grub_cmd_msr_write, N_(\"ADDR VALUE\"),\n-\t\t\t\t     N_(\"Write a value to a CPU model specific register.\"));\n+  cmd_write = grub_register_command_lockdown (\"wrmsr\", grub_cmd_msr_write, N_(\"ADDR VALUE\"),\n+                                              N_(\"Write a value to a CPU model specific register.\"));\n }\n \n GRUB_MOD_FINI(wrmsr)\ndiff --git a/grub-core/commands/iorw.c b/grub-core/commands/iorw.c\nindex a0c164e..584baec 100644\n--- a/grub-core/commands/iorw.c\n+++ b/grub-core/commands/iorw.c\n@@ -23,6 +23,7 @@\n #include <grub/env.h>\n #include <grub/cpu/io.h>\n #include <grub/i18n.h>\n+#include <grub/lockdown.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -131,17 +132,17 @@ GRUB_MOD_INIT(memrw)\n \t\t\t  N_(\"PORT\"), N_(\"Read 32-bit value from PORT.\"),\n \t\t\t  options);\n   cmd_write_byte =\n-    grub_register_command (\"outb\", grub_cmd_write,\n-\t\t\t   N_(\"PORT VALUE [MASK]\"),\n-\t\t\t   N_(\"Write 8-bit VALUE to PORT.\"));\n+    grub_register_command_lockdown (\"outb\", grub_cmd_write,\n+                                    N_(\"PORT VALUE [MASK]\"),\n+                                    N_(\"Write 8-bit VALUE to PORT.\"));\n   cmd_write_word =\n-    grub_register_command (\"outw\", grub_cmd_write,\n-\t\t\t   N_(\"PORT VALUE [MASK]\"),\n-\t\t\t   N_(\"Write 16-bit VALUE to PORT.\"));\n+    grub_register_command_lockdown (\"outw\", grub_cmd_write,\n+                                    N_(\"PORT VALUE [MASK]\"),\n+                                    N_(\"Write 16-bit VALUE to PORT.\"));\n   cmd_write_dword =\n-    grub_register_command (\"outl\", grub_cmd_write,\n-\t\t\t   N_(\"ADDR VALUE [MASK]\"),\n-\t\t\t   N_(\"Write 32-bit VALUE to PORT.\"));\n+    grub_register_command_lockdown (\"outl\", grub_cmd_write,\n+                                    N_(\"ADDR VALUE [MASK]\"),\n+                                    N_(\"Write 32-bit VALUE to PORT.\"));\n }\n \n GRUB_MOD_FINI(memrw)\ndiff --git a/grub-core/commands/memrw.c b/grub-core/commands/memrw.c\nindex 98769ea..d401a6d 100644\n--- a/grub-core/commands/memrw.c\n+++ b/grub-core/commands/memrw.c\n@@ -22,6 +22,7 @@\n #include <grub/extcmd.h>\n #include <grub/env.h>\n #include <grub/i18n.h>\n+#include <grub/lockdown.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -133,17 +134,17 @@ GRUB_MOD_INIT(memrw)\n \t\t\t  N_(\"ADDR\"), N_(\"Read 32-bit value from ADDR.\"),\n \t\t\t  options);\n   cmd_write_byte =\n-    grub_register_command (\"write_byte\", grub_cmd_write,\n-\t\t\t   N_(\"ADDR VALUE [MASK]\"),\n-\t\t\t   N_(\"Write 8-bit VALUE to ADDR.\"));\n+    grub_register_command_lockdown (\"write_byte\", grub_cmd_write,\n+                                    N_(\"ADDR VALUE [MASK]\"),\n+                                    N_(\"Write 8-bit VALUE to ADDR.\"));\n   cmd_write_word =\n-    grub_register_command (\"write_word\", grub_cmd_write,\n-\t\t\t   N_(\"ADDR VALUE [MASK]\"),\n-\t\t\t   N_(\"Write 16-bit VALUE to ADDR.\"));\n+    grub_register_command_lockdown (\"write_word\", grub_cmd_write,\n+                                    N_(\"ADDR VALUE [MASK]\"),\n+                                    N_(\"Write 16-bit VALUE to ADDR.\"));\n   cmd_write_dword =\n-    grub_register_command (\"write_dword\", grub_cmd_write,\n-\t\t\t   N_(\"ADDR VALUE [MASK]\"),\n-\t\t\t   N_(\"Write 32-bit VALUE to ADDR.\"));\n+    grub_register_command_lockdown (\"write_dword\", grub_cmd_write,\n+                                    N_(\"ADDR VALUE [MASK]\"),\n+                                    N_(\"Write 32-bit VALUE to ADDR.\"));\n }\n \n GRUB_MOD_FINI(memrw)\ndiff --git a/grub-core/kern/efi/sb.c b/grub-core/kern/efi/sb.c\nindex ce3b7f6..5d7210a 100644\n--- a/grub-core/kern/efi/sb.c\n+++ b/grub-core/kern/efi/sb.c\n@@ -30,9 +30,6 @@\n \n static grub_efi_guid_t shim_lock_guid = GRUB_EFI_SHIM_LOCK_GUID;\n \n-/* List of modules which cannot be loaded if UEFI secure boot mode is enabled. */\n-static const char * const disabled_mods[] = {\"iorw\", \"memrw\", NULL};\n-\n /*\n  * Determine whether we're in secure boot mode.\n  *\n@@ -121,53 +118,15 @@ shim_lock_verifier_init (grub_file_t io __attribute__ ((unused)),\n \t\t\t void **context __attribute__ ((unused)),\n \t\t\t enum grub_verify_flags *flags)\n {\n-  const char *b, *e;\n-  int i;\n-\n   *flags = GRUB_VERIFY_FLAGS_SKIP_VERIFICATION;\n \n   switch (type & GRUB_FILE_TYPE_MASK)\n     {\n-    case GRUB_FILE_TYPE_GRUB_MODULE:\n-      /* Establish GRUB module name. */\n-      b = grub_strrchr (io->name, '/');\n-      e = grub_strrchr (io->name, '.');\n-\n-      b = b ? (b + 1) : io->name;\n-      e = e ? e : io->name + grub_strlen (io->name);\n-      e = (e > b) ? e : io->name + grub_strlen (io->name);\n-\n-      for (i = 0; disabled_mods[i]; i++)\n-\tif (!grub_strncmp (b, disabled_mods[i], grub_strlen (b) - grub_strlen (e)))\n-\t  {\n-\t    grub_error (GRUB_ERR_ACCESS_DENIED,\n-\t\t\tN_(\"module cannot be loaded in UEFI secure boot mode: %s\"),\n-\t\t\tio->name);\n-\t    return GRUB_ERR_ACCESS_DENIED;\n-\t  }\n-\n-      /* Fall through. */\n-\n-    case GRUB_FILE_TYPE_ACPI_TABLE:\n-    case GRUB_FILE_TYPE_DEVICE_TREE_IMAGE:\n-      *flags = GRUB_VERIFY_FLAGS_DEFER_AUTH;\n-\n-      return GRUB_ERR_NONE;\n-\n     case GRUB_FILE_TYPE_LINUX_KERNEL:\n     case GRUB_FILE_TYPE_MULTIBOOT_KERNEL:\n     case GRUB_FILE_TYPE_BSD_KERNEL:\n     case GRUB_FILE_TYPE_XNU_KERNEL:\n     case GRUB_FILE_TYPE_PLAN9_KERNEL:\n-      for (i = 0; disabled_mods[i]; i++)\n-\tif (grub_dl_get (disabled_mods[i]))\n-\t  {\n-\t    grub_error (GRUB_ERR_ACCESS_DENIED,\n-\t\t\tN_(\"cannot boot due to dangerous module in memory: %s\"),\n-\t\t\tdisabled_mods[i]);\n-\t    return GRUB_ERR_ACCESS_DENIED;\n-\t  }\n-\n       *flags = GRUB_VERIFY_FLAGS_SINGLE_CHUNK;\n \n       /* Fall through. */\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0039-acpi-Don-t-register-the-acpi-command-when-locked-dow.patch",
    "content": "From 3e8e4c0549240fa209acffceb473e1e509b50c95 Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Mon, 28 Sep 2020 20:08:41 +0200\nSubject: [PATCH] acpi: Don't register the acpi command when locked down\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe command is not allowed when lockdown is enforced. Otherwise an\nattacker can instruct the GRUB to load an SSDT table to overwrite\nthe kernel lockdown configuration and later load and execute\nunsigned code.\n\nFixes: CVE-2020-14372\n\nReported-by: Máté Kukri <km@mkukri.xyz>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n docs/grub.texi            |  5 +++++\n grub-core/commands/acpi.c | 15 ++++++++-------\n 2 files changed, 13 insertions(+), 7 deletions(-)\n\ndiff --git a/docs/grub.texi b/docs/grub.texi\nindex bbe60a4..98592d3 100644\n--- a/docs/grub.texi\n+++ b/docs/grub.texi\n@@ -3986,6 +3986,11 @@ Normally, this command will replace the Root System Description Pointer\n (RSDP) in the Extended BIOS Data Area to point to the new tables. If the\n @option{--no-ebda} option is used, the new tables will be known only to\n GRUB, but may be used by GRUB's EFI emulation.\n+\n+Note: The command is not allowed when lockdown is enforced (@pxref{Lockdown}).\n+      Otherwise an attacker can instruct the GRUB to load an SSDT table to\n+      overwrite the kernel lockdown configuration and later load and execute\n+      unsigned code.\n @end deffn\n \n \ndiff --git a/grub-core/commands/acpi.c b/grub-core/commands/acpi.c\nindex 5a1499a..1215f2a 100644\n--- a/grub-core/commands/acpi.c\n+++ b/grub-core/commands/acpi.c\n@@ -27,6 +27,7 @@\n #include <grub/mm.h>\n #include <grub/memory.h>\n #include <grub/i18n.h>\n+#include <grub/lockdown.h>\n \n #ifdef GRUB_MACHINE_EFI\n #include <grub/efi/efi.h>\n@@ -775,13 +776,13 @@ static grub_extcmd_t cmd;\n \n GRUB_MOD_INIT(acpi)\n {\n-  cmd = grub_register_extcmd (\"acpi\", grub_cmd_acpi, 0,\n-\t\t\t      N_(\"[-1|-2] [--exclude=TABLE1,TABLE2|\"\n-\t\t\t      \"--load-only=TABLE1,TABLE2] FILE1\"\n-\t\t\t      \" [FILE2] [...]\"),\n-\t\t\t      N_(\"Load host ACPI tables and tables \"\n-\t\t\t      \"specified by arguments.\"),\n-\t\t\t      options);\n+  cmd = grub_register_extcmd_lockdown (\"acpi\", grub_cmd_acpi, 0,\n+                                       N_(\"[-1|-2] [--exclude=TABLE1,TABLE2|\"\n+                                          \"--load-only=TABLE1,TABLE2] FILE1\"\n+                                          \" [FILE2] [...]\"),\n+                                       N_(\"Load host ACPI tables and tables \"\n+                                          \"specified by arguments.\"),\n+                                       options);\n }\n \n GRUB_MOD_FINI(acpi)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0040-mmap-Don-t-register-cutmem-and-badram-commands-when-.patch",
    "content": "From d298b41f90cbf1f2e5a10e29daa1fc92ddee52c9 Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Wed, 14 Oct 2020 16:33:42 +0200\nSubject: [PATCH] mmap: Don't register cutmem and badram commands when lockdown\n is enforced\n\nThe cutmem and badram commands can be used to remove EFI memory regions\nand potentially disable the UEFI Secure Boot. Prevent the commands to be\nregistered if the GRUB is locked down.\n\nFixes: CVE-2020-27779\n\nReported-by: Teddy Reed <teddy.reed@gmail.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n docs/grub.texi        |  4 ++++\n grub-core/mmap/mmap.c | 13 +++++++------\n 2 files changed, 11 insertions(+), 6 deletions(-)\n\ndiff --git a/docs/grub.texi b/docs/grub.texi\nindex 98592d3..f2fe149 100644\n--- a/docs/grub.texi\n+++ b/docs/grub.texi\n@@ -4051,6 +4051,10 @@ this page is to be filtered.  This syntax makes it easy to represent patterns\n that are often result of memory damage, due to physical distribution of memory\n cells.\n \n+Note: The command is not allowed when lockdown is enforced (@pxref{Lockdown}).\n+      This prevents removing EFI memory regions to potentially subvert the\n+      security mechanisms provided by the UEFI secure boot.\n+\n @node blocklist\n @subsection blocklist\n \ndiff --git a/grub-core/mmap/mmap.c b/grub-core/mmap/mmap.c\nindex 57b4e9a..7ebf32e 100644\n--- a/grub-core/mmap/mmap.c\n+++ b/grub-core/mmap/mmap.c\n@@ -20,6 +20,7 @@\n #include <grub/memory.h>\n #include <grub/machine/memory.h>\n #include <grub/err.h>\n+#include <grub/lockdown.h>\n #include <grub/misc.h>\n #include <grub/mm.h>\n #include <grub/command.h>\n@@ -534,12 +535,12 @@ static grub_command_t cmd, cmd_cut;\n \f\n GRUB_MOD_INIT(mmap)\n {\n-  cmd = grub_register_command (\"badram\", grub_cmd_badram,\n-\t\t\t       N_(\"ADDR1,MASK1[,ADDR2,MASK2[,...]]\"),\n-\t\t\t       N_(\"Declare memory regions as faulty (badram).\"));\n-  cmd_cut = grub_register_command (\"cutmem\", grub_cmd_cutmem,\n-\t\t\t\t   N_(\"FROM[K|M|G] TO[K|M|G]\"),\n-\t\t\t\t   N_(\"Remove any memory regions in specified range.\"));\n+  cmd = grub_register_command_lockdown (\"badram\", grub_cmd_badram,\n+                                        N_(\"ADDR1,MASK1[,ADDR2,MASK2[,...]]\"),\n+                                        N_(\"Declare memory regions as faulty (badram).\"));\n+  cmd_cut = grub_register_command_lockdown (\"cutmem\", grub_cmd_cutmem,\n+                                            N_(\"FROM[K|M|G] TO[K|M|G]\"),\n+                                            N_(\"Remove any memory regions in specified range.\"));\n \n }\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0041-commands-Restrict-commands-that-can-load-BIOS-or-DT-.patch",
    "content": "From 468a5699b249fe6816b4e7e86c5dc9d325c9b09e Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Wed, 24 Feb 2021 09:00:05 +0100\nSubject: [PATCH] commands: Restrict commands that can load BIOS or DT blobs\n when locked down\n\nThere are some more commands that should be restricted when the GRUB is\nlocked down. Following is the list of commands and reasons to restrict:\n\n  * fakebios:   creates BIOS-like structures for backward compatibility with\n                existing OSes. This should not be allowed when locked down.\n\n  * loadbios:   reads a BIOS dump from storage and loads it. This action\n                should not be allowed when locked down.\n\n  * devicetree: loads a Device Tree blob and passes it to the OS. It replaces\n                any Device Tree provided by the firmware. This also should\n                not be allowed when locked down.\n\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n docs/grub.texi                    |  3 +++\n grub-core/commands/efi/loadbios.c | 16 ++++++++--------\n grub-core/loader/arm/linux.c      |  6 +++---\n grub-core/loader/efi/fdt.c        |  4 ++--\n 4 files changed, 16 insertions(+), 13 deletions(-)\n\ndiff --git a/docs/grub.texi b/docs/grub.texi\nindex f2fe149..79f58c5 100644\n--- a/docs/grub.texi\n+++ b/docs/grub.texi\n@@ -4235,6 +4235,9 @@ hour, minute, and second unchanged.\n Load a device tree blob (.dtb) from a filesystem, for later use by a Linux\n kernel. Does not perform merging with any device tree supplied by firmware,\n but rather replaces it completely.\n+\n+Note: The command is not allowed when lockdown is enforced (@pxref{Lockdown}).\n+      This is done to prevent subverting various security mechanisms.\n @ref{GNU/Linux}.\n @end deffn\n \ndiff --git a/grub-core/commands/efi/loadbios.c b/grub-core/commands/efi/loadbios.c\nindex d41d521..5c7725f 100644\n--- a/grub-core/commands/efi/loadbios.c\n+++ b/grub-core/commands/efi/loadbios.c\n@@ -205,14 +205,14 @@ static grub_command_t cmd_fakebios, cmd_loadbios;\n \n GRUB_MOD_INIT(loadbios)\n {\n-  cmd_fakebios = grub_register_command (\"fakebios\", grub_cmd_fakebios,\n-\t\t\t\t\t0, N_(\"Create BIOS-like structures for\"\n-\t\t\t\t\t      \" backward compatibility with\"\n-\t\t\t\t\t      \" existing OS.\"));\n-\n-  cmd_loadbios = grub_register_command (\"loadbios\", grub_cmd_loadbios,\n-\t\t\t\t\tN_(\"BIOS_DUMP [INT10_DUMP]\"),\n-\t\t\t\t\tN_(\"Load BIOS dump.\"));\n+  cmd_fakebios = grub_register_command_lockdown (\"fakebios\", grub_cmd_fakebios,\n+\t\t\t\t\t\t 0, N_(\"Create BIOS-like structures for\"\n+\t\t\t\t\t\t       \" backward compatibility with\"\n+\t\t\t\t\t\t       \" existing OS.\"));\n+\n+  cmd_loadbios = grub_register_command_lockdown (\"loadbios\", grub_cmd_loadbios,\n+\t\t\t\t\t\t N_(\"BIOS_DUMP [INT10_DUMP]\"),\n+\t\t\t\t\t\t N_(\"Load BIOS dump.\"));\n }\n \n GRUB_MOD_FINI(loadbios)\ndiff --git a/grub-core/loader/arm/linux.c b/grub-core/loader/arm/linux.c\nindex d70c174..ed23dc7 100644\n--- a/grub-core/loader/arm/linux.c\n+++ b/grub-core/loader/arm/linux.c\n@@ -493,9 +493,9 @@ GRUB_MOD_INIT (linux)\n \t\t\t\t     0, N_(\"Load Linux.\"));\n   cmd_initrd = grub_register_command (\"initrd\", grub_cmd_initrd,\n \t\t\t\t      0, N_(\"Load initrd.\"));\n-  cmd_devicetree = grub_register_command (\"devicetree\", grub_cmd_devicetree,\n-\t\t\t\t\t  /* TRANSLATORS: DTB stands for device tree blob.  */\n-\t\t\t\t\t  0, N_(\"Load DTB file.\"));\n+  cmd_devicetree = grub_register_command_lockdown (\"devicetree\", grub_cmd_devicetree,\n+\t\t\t\t\t\t   /* TRANSLATORS: DTB stands for device tree blob. */\n+\t\t\t\t\t\t   0, N_(\"Load DTB file.\"));\n   my_mod = mod;\n   current_fdt = (const void *) grub_arm_firmware_get_boot_data ();\n   machine_type = grub_arm_firmware_get_machine_type ();\ndiff --git a/grub-core/loader/efi/fdt.c b/grub-core/loader/efi/fdt.c\nindex ee9c559..003d07c 100644\n--- a/grub-core/loader/efi/fdt.c\n+++ b/grub-core/loader/efi/fdt.c\n@@ -165,8 +165,8 @@ static grub_command_t cmd_devicetree;\n GRUB_MOD_INIT (fdt)\n {\n   cmd_devicetree =\n-    grub_register_command (\"devicetree\", grub_cmd_devicetree, 0,\n-\t\t\t   N_(\"Load DTB file.\"));\n+    grub_register_command_lockdown (\"devicetree\", grub_cmd_devicetree, 0,\n+\t\t\t\t    N_(\"Load DTB file.\"));\n }\n \n GRUB_MOD_FINI (fdt)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0042-commands-setpci-Restrict-setpci-command-when-locked-.patch",
    "content": "From 58b77d4069823b44c5fa916fa8ddfc9c4cd51e02 Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Wed, 24 Feb 2021 22:59:59 +0100\nSubject: [PATCH] commands/setpci: Restrict setpci command when locked down\n\nThis command can set PCI devices register values, which makes it dangerous\nin a locked down configuration. Restrict it so can't be used on this setup.\n\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/commands/setpci.c | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/grub-core/commands/setpci.c b/grub-core/commands/setpci.c\nindex d5bc97d..fa2ba7d 100644\n--- a/grub-core/commands/setpci.c\n+++ b/grub-core/commands/setpci.c\n@@ -329,10 +329,10 @@ static grub_extcmd_t cmd;\n \n GRUB_MOD_INIT(setpci)\n {\n-  cmd = grub_register_extcmd (\"setpci\", grub_cmd_setpci, 0,\n-\t\t\t      N_(\"[-s POSITION] [-d DEVICE] [-v VAR] \"\n-\t\t\t\t \"REGISTER[=VALUE[:MASK]]\"),\n-\t\t\t      N_(\"Manipulate PCI devices.\"), options);\n+  cmd = grub_register_extcmd_lockdown (\"setpci\", grub_cmd_setpci, 0,\n+\t\t\t\t       N_(\"[-s POSITION] [-d DEVICE] [-v VAR] \"\n+\t\t\t\t\t  \"REGISTER[=VALUE[:MASK]]\"),\n+\t\t\t\t       N_(\"Manipulate PCI devices.\"), options);\n }\n \n GRUB_MOD_FINI(setpci)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0043-commands-hdparm-Restrict-hdparm-command-when-locked-.patch",
    "content": "From 5c97492a29c6063567b65ed1a069f5e6f4e211f0 Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Wed, 24 Feb 2021 12:59:29 +0100\nSubject: [PATCH] commands/hdparm: Restrict hdparm command when locked down\n\nThe command can be used to get/set ATA disk parameters. Some of these can\nbe dangerous since change the disk behavior. Restrict it when locked down.\n\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/commands/hdparm.c | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/grub-core/commands/hdparm.c b/grub-core/commands/hdparm.c\nindex d3fa966..2e2319e 100644\n--- a/grub-core/commands/hdparm.c\n+++ b/grub-core/commands/hdparm.c\n@@ -436,9 +436,9 @@ static grub_extcmd_t cmd;\n \n GRUB_MOD_INIT(hdparm)\n {\n-  cmd = grub_register_extcmd (\"hdparm\", grub_cmd_hdparm, 0,\n-\t\t\t      N_(\"[OPTIONS] DISK\"),\n-\t\t\t      N_(\"Get/set ATA disk parameters.\"), options);\n+  cmd = grub_register_extcmd_lockdown (\"hdparm\", grub_cmd_hdparm, 0,\n+\t\t\t\t       N_(\"[OPTIONS] DISK\"),\n+\t\t\t\t       N_(\"Get/set ATA disk parameters.\"), options);\n }\n \n GRUB_MOD_FINI(hdparm)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0044-gdb-Restrict-GDB-access-when-locked-down.patch",
    "content": "From 508270838998f151a82e9c13e7cb8a470a2dc23d Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Wed, 24 Feb 2021 15:03:26 +0100\nSubject: [PATCH] gdb: Restrict GDB access when locked down\n\nThe gdbstub* commands allow to start and control a GDB stub running on\nlocal host that can be used to connect from a remote debugger. Restrict\nthis functionality when the GRUB is locked down.\n\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/gdb/gdb.c | 32 ++++++++++++++++++--------------\n 1 file changed, 18 insertions(+), 14 deletions(-)\n\ndiff --git a/grub-core/gdb/gdb.c b/grub-core/gdb/gdb.c\nindex 847a1e1..1818cb6 100644\n--- a/grub-core/gdb/gdb.c\n+++ b/grub-core/gdb/gdb.c\n@@ -75,20 +75,24 @@ static grub_command_t cmd, cmd_stop, cmd_break;\n GRUB_MOD_INIT (gdb)\n {\n   grub_gdb_idtinit ();\n-  cmd = grub_register_command (\"gdbstub\", grub_cmd_gdbstub,\n-\t\t\t       N_(\"PORT\"), \n-\t\t\t       /* TRANSLATORS: GDB stub is a small part of\n-\t\t\t\t  GDB functionality running on local host\n-\t\t\t\t  which allows remote debugger to\n-\t\t\t\t  connect to it.  */\n-\t\t\t       N_(\"Start GDB stub on given port\"));\n-  cmd_break = grub_register_command (\"gdbstub_break\", grub_cmd_gdb_break,\n-\t\t\t\t     /* TRANSLATORS: this refers to triggering\n-\t\t\t\t\ta breakpoint so that the user will land\n-\t\t\t\t\tinto GDB.  */\n-\t\t\t\t     0, N_(\"Break into GDB\"));\n-  cmd_stop = grub_register_command (\"gdbstub_stop\", grub_cmd_gdbstop,\n-\t\t\t\t    0, N_(\"Stop GDB stub\"));\n+  cmd = grub_register_command_lockdown (\"gdbstub\", grub_cmd_gdbstub,\n+\t\t\t\t\tN_(\"PORT\"),\n+\t\t\t\t\t/*\n+\t\t\t\t\t * TRANSLATORS: GDB stub is a small part of\n+\t\t\t\t\t * GDB functionality running on local host\n+\t\t\t\t\t * which allows remote debugger to\n+\t\t\t\t\t * connect to it.\n+\t\t\t\t\t */\n+\t\t\t\t\tN_(\"Start GDB stub on given port\"));\n+  cmd_break = grub_register_command_lockdown (\"gdbstub_break\", grub_cmd_gdb_break,\n+\t\t\t\t\t      /*\n+\t\t\t\t\t       * TRANSLATORS: this refers to triggering\n+\t\t\t\t\t       * a breakpoint so that the user will land\n+\t\t\t\t\t       * into GDB.\n+\t\t\t\t\t       */\n+\t\t\t\t\t      0, N_(\"Break into GDB\"));\n+  cmd_stop = grub_register_command_lockdown (\"gdbstub_stop\", grub_cmd_gdbstop,\n+\t\t\t\t\t     0, N_(\"Stop GDB stub\"));\n }\n \n GRUB_MOD_FINI (gdb)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0045-loader-xnu-Don-t-allow-loading-extension-and-package.patch",
    "content": "From 9c5565135f12400a925ee901b25984e7af4442f5 Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Wed, 24 Feb 2021 14:44:38 +0100\nSubject: [PATCH] loader/xnu: Don't allow loading extension and packages when\n locked down\n\nThe shim_lock verifier validates the XNU kernels but no its extensions\nand packages. Prevent these to be loaded when the GRUB is locked down.\n\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/loader/xnu.c | 31 +++++++++++++++++--------------\n 1 file changed, 17 insertions(+), 14 deletions(-)\n\ndiff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c\nindex 9ae4ceb..44fd5a9 100644\n--- a/grub-core/loader/xnu.c\n+++ b/grub-core/loader/xnu.c\n@@ -1485,20 +1485,23 @@ GRUB_MOD_INIT(xnu)\n \t\t\t\t      N_(\"Load XNU image.\"));\n   cmd_kernel64 = grub_register_command (\"xnu_kernel64\", grub_cmd_xnu_kernel64,\n \t\t\t\t\t0, N_(\"Load 64-bit XNU image.\"));\n-  cmd_mkext = grub_register_command (\"xnu_mkext\", grub_cmd_xnu_mkext, 0,\n-\t\t\t\t     N_(\"Load XNU extension package.\"));\n-  cmd_kext = grub_register_command (\"xnu_kext\", grub_cmd_xnu_kext, 0,\n-\t\t\t\t    N_(\"Load XNU extension.\"));\n-  cmd_kextdir = grub_register_command (\"xnu_kextdir\", grub_cmd_xnu_kextdir,\n-\t\t\t\t       /* TRANSLATORS: OSBundleRequired is a\n-\t\t\t\t\t  variable name in xnu extensions\n-\t\t\t\t\t  manifests. It behaves mostly like\n-\t\t\t\t\t  GNU/Linux runlevels.\n-\t\t\t\t       */\n-\t\t\t\t       N_(\"DIRECTORY [OSBundleRequired]\"),\n-\t\t\t\t       /* TRANSLATORS: There are many extensions\n-\t\t\t\t\t  in extension directory.  */\n-\t\t\t\t       N_(\"Load XNU extension directory.\"));\n+  cmd_mkext = grub_register_command_lockdown (\"xnu_mkext\", grub_cmd_xnu_mkext, 0,\n+\t\t\t\t\t      N_(\"Load XNU extension package.\"));\n+  cmd_kext = grub_register_command_lockdown (\"xnu_kext\", grub_cmd_xnu_kext, 0,\n+\t\t\t\t\t     N_(\"Load XNU extension.\"));\n+  cmd_kextdir = grub_register_command_lockdown (\"xnu_kextdir\", grub_cmd_xnu_kextdir,\n+\t\t\t\t\t\t/*\n+\t\t\t\t\t\t * TRANSLATORS: OSBundleRequired is\n+\t\t\t\t\t\t * a variable name in xnu extensions\n+\t\t\t\t\t\t * manifests. It behaves mostly like\n+\t\t\t\t\t\t * GNU/Linux runlevels.\n+\t\t\t\t\t\t */\n+\t\t\t\t\t\tN_(\"DIRECTORY [OSBundleRequired]\"),\n+\t\t\t\t\t\t/*\n+\t\t\t\t\t\t * TRANSLATORS: There are many extensions\n+\t\t\t\t\t\t * in extension directory.\n+\t\t\t\t\t\t */\n+\t\t\t\t\t\tN_(\"Load XNU extension directory.\"));\n   cmd_ramdisk = grub_register_command (\"xnu_ramdisk\", grub_cmd_xnu_ramdisk, 0,\n    /* TRANSLATORS: ramdisk here isn't identifier. It can be translated.  */\n \t\t\t\t       N_(\"Load XNU ramdisk. \"\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0046-docs-Document-the-cutmem-command.patch",
    "content": "From f05e79a0143beb2d9a482a3ebf4fe0ce76778122 Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Sat, 7 Nov 2020 01:03:18 +0100\nSubject: [PATCH] docs: Document the cutmem command\n\nThe command is not present in the docs/grub.texi user documentation.\n\nReported-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nSigned-off-by: Daniel Kiper <daniel.kiper@oracle.com>\nReviewed-by: Javier Martinez Canillas <javierm@redhat.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n docs/grub.texi | 21 +++++++++++++++++++++\n 1 file changed, 21 insertions(+)\n\ndiff --git a/docs/grub.texi b/docs/grub.texi\nindex 79f58c5..8518cc0 100644\n--- a/docs/grub.texi\n+++ b/docs/grub.texi\n@@ -3892,6 +3892,7 @@ you forget a command, you can run the command @command{help}\n * cpuid::                       Check for CPU features\n * crc::                         Compute or check CRC32 checksums\n * cryptomount::                 Mount a crypto device\n+* cutmem::                      Remove memory regions\n * date::                        Display or set current date and time\n * devicetree::                  Load a device tree blob\n * distrust::                    Remove a pubkey from trusted keys\n@@ -4051,6 +4052,8 @@ this page is to be filtered.  This syntax makes it easy to represent patterns\n that are often result of memory damage, due to physical distribution of memory\n cells.\n \n+The command is similar to @command{cutmem} command.\n+\n Note: The command is not allowed when lockdown is enforced (@pxref{Lockdown}).\n       This prevents removing EFI memory regions to potentially subvert the\n       security mechanisms provided by the UEFI secure boot.\n@@ -4214,6 +4217,24 @@ GRUB suports devices encrypted using LUKS and geli. Note that necessary modules\n be used.\n @end deffn\n \n+@node cutmem\n+@subsection cutmem\n+\n+@deffn Command cutmem from[K|M|G] to[K|M|G]\n+Remove any memory regions in specified range.\n+@end deffn\n+\n+This command notifies the memory manager that specified regions of RAM ought to\n+be filtered out. This remains in effect after a payload kernel has been loaded\n+by GRUB, as long as the loaded kernel obtains its memory map from GRUB. Kernels\n+that support this include Linux, GNU Mach, the kernel of FreeBSD and Multiboot\n+kernels in general.\n+\n+The command is similar to @command{badram} command.\n+\n+Note: The command is not allowed when lockdown is enforced (@pxref{Lockdown}).\n+      This prevents removing EFI memory regions to potentially subvert the\n+      security mechanisms provided by the UEFI secure boot.\n \n @node date\n @subsection date\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0047-dl-Only-allow-unloading-modules-that-are-not-depende.patch",
    "content": "From 7630ec5397fe418276b360f9011934b8c034936c Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Tue, 29 Sep 2020 14:08:55 +0200\nSubject: [PATCH] dl: Only allow unloading modules that are not dependencies\n\nWhen a module is attempted to be removed its reference counter is always\ndecremented. This means that repeated rmmod invocations will cause the\nmodule to be unloaded even if another module depends on it.\n\nThis may lead to a use-after-free scenario allowing an attacker to execute\narbitrary code and by-pass the UEFI Secure Boot protection.\n\nWhile being there, add the extern keyword to some function declarations in\nthat header file.\n\nFixes: CVE-2020-25632\n\nReported-by: Chris Coulson <chris.coulson@canonical.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/commands/minicmd.c | 7 +++++--\n grub-core/kern/dl.c          | 9 +++++++++\n include/grub/dl.h            | 8 +++++---\n 3 files changed, 19 insertions(+), 5 deletions(-)\n\ndiff --git a/grub-core/commands/minicmd.c b/grub-core/commands/minicmd.c\nindex 6bbce31..fa49893 100644\n--- a/grub-core/commands/minicmd.c\n+++ b/grub-core/commands/minicmd.c\n@@ -140,8 +140,11 @@ grub_mini_cmd_rmmod (struct grub_command *cmd __attribute__ ((unused)),\n   if (grub_dl_is_persistent (mod))\n     return grub_error (GRUB_ERR_BAD_ARGUMENT, \"cannot unload persistent module\");\n \n-  if (grub_dl_unref (mod) <= 0)\n-    grub_dl_unload (mod);\n+  if (grub_dl_ref_count (mod) > 1)\n+    return grub_error (GRUB_ERR_BAD_ARGUMENT, \"cannot unload referenced module\");\n+\n+  grub_dl_unref (mod);\n+  grub_dl_unload (mod);\n \n   return 0;\n }\ndiff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c\nindex 48eb5e7..48f8a79 100644\n--- a/grub-core/kern/dl.c\n+++ b/grub-core/kern/dl.c\n@@ -549,6 +549,15 @@ grub_dl_unref (grub_dl_t mod)\n   return --mod->ref_count;\n }\n \n+int\n+grub_dl_ref_count (grub_dl_t mod)\n+{\n+  if (mod == NULL)\n+    return 0;\n+\n+  return mod->ref_count;\n+}\n+\n static void\n grub_dl_flush_cache (grub_dl_t mod)\n {\ndiff --git a/include/grub/dl.h b/include/grub/dl.h\nindex f03c035..b3753c9 100644\n--- a/include/grub/dl.h\n+++ b/include/grub/dl.h\n@@ -203,9 +203,11 @@ grub_dl_t EXPORT_FUNC(grub_dl_load) (const char *name);\n grub_dl_t grub_dl_load_core (void *addr, grub_size_t size);\n grub_dl_t EXPORT_FUNC(grub_dl_load_core_noinit) (void *addr, grub_size_t size);\n int EXPORT_FUNC(grub_dl_unload) (grub_dl_t mod);\n-void grub_dl_unload_unneeded (void);\n-int EXPORT_FUNC(grub_dl_ref) (grub_dl_t mod);\n-int EXPORT_FUNC(grub_dl_unref) (grub_dl_t mod);\n+extern void grub_dl_unload_unneeded (void);\n+extern int EXPORT_FUNC(grub_dl_ref) (grub_dl_t mod);\n+extern int EXPORT_FUNC(grub_dl_unref) (grub_dl_t mod);\n+extern int EXPORT_FUNC(grub_dl_ref_count) (grub_dl_t mod);\n+\n extern grub_dl_t EXPORT_VAR(grub_dl_head);\n \n #ifndef GRUB_UTIL\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0048-usb-Avoid-possible-out-of-bound-accesses-caused-by-m.patch",
    "content": "From 128c16a682034263eb519c89bc0934eeb6fa8cfa Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Fri, 11 Dec 2020 19:19:21 +0100\nSubject: [PATCH] usb: Avoid possible out-of-bound accesses caused by malicious\n devices\n\nThe maximum number of configurations and interfaces are fixed but there is\nno out-of-bound checking to prevent a malicious USB device to report large\nvalues for these and cause accesses outside the arrays' memory.\n\nFixes: CVE-2020-25647\n\nReported-by: Joseph Tartaro <joseph.tartaro@ioactive.com>\nReported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/bus/usb/usb.c | 15 ++++++++++++---\n include/grub/usb.h      | 10 +++++++---\n 2 files changed, 19 insertions(+), 6 deletions(-)\n\ndiff --git a/grub-core/bus/usb/usb.c b/grub-core/bus/usb/usb.c\nindex 8da5e4c..7cb3cc2 100644\n--- a/grub-core/bus/usb/usb.c\n+++ b/grub-core/bus/usb/usb.c\n@@ -75,6 +75,9 @@ grub_usb_controller_iterate (grub_usb_controller_iterate_hook_t hook,\n grub_usb_err_t\n grub_usb_clear_halt (grub_usb_device_t dev, int endpoint)\n {\n+  if (endpoint >= GRUB_USB_MAX_TOGGLE)\n+    return GRUB_USB_ERR_BADDEVICE;\n+\n   dev->toggle[endpoint] = 0;\n   return grub_usb_control_msg (dev, (GRUB_USB_REQTYPE_OUT\n \t\t\t\t     | GRUB_USB_REQTYPE_STANDARD\n@@ -134,10 +137,10 @@ grub_usb_device_initialize (grub_usb_device_t dev)\n     return err;\n   descdev = &dev->descdev;\n \n-  for (i = 0; i < 8; i++)\n+  for (i = 0; i < GRUB_USB_MAX_CONF; i++)\n     dev->config[i].descconf = NULL;\n \n-  if (descdev->configcnt == 0)\n+  if (descdev->configcnt == 0 || descdev->configcnt > GRUB_USB_MAX_CONF)\n     {\n       err = GRUB_USB_ERR_BADDEVICE;\n       goto fail;\n@@ -172,6 +175,12 @@ grub_usb_device_initialize (grub_usb_device_t dev)\n       /* Skip the configuration descriptor.  */\n       pos = dev->config[i].descconf->length;\n \n+      if (dev->config[i].descconf->numif > GRUB_USB_MAX_IF)\n+        {\n+          err = GRUB_USB_ERR_BADDEVICE;\n+          goto fail;\n+        }\n+\n       /* Read all interfaces.  */\n       for (currif = 0; currif < dev->config[i].descconf->numif; currif++)\n \t{\n@@ -217,7 +226,7 @@ grub_usb_device_initialize (grub_usb_device_t dev)\n \n  fail:\n \n-  for (i = 0; i < 8; i++)\n+  for (i = 0; i < GRUB_USB_MAX_CONF; i++)\n     grub_free (dev->config[i].descconf);\n \n   return err;\ndiff --git a/include/grub/usb.h b/include/grub/usb.h\nindex 512ae1d..6475c55 100644\n--- a/include/grub/usb.h\n+++ b/include/grub/usb.h\n@@ -23,6 +23,10 @@\n #include <grub/usbdesc.h>\n #include <grub/usbtrans.h>\n \n+#define GRUB_USB_MAX_CONF    8\n+#define GRUB_USB_MAX_IF      32\n+#define GRUB_USB_MAX_TOGGLE  256\n+\n typedef struct grub_usb_device *grub_usb_device_t;\n typedef struct grub_usb_controller *grub_usb_controller_t;\n typedef struct grub_usb_controller_dev *grub_usb_controller_dev_t;\n@@ -167,7 +171,7 @@ struct grub_usb_configuration\n   struct grub_usb_desc_config *descconf;\n \n   /* Interfaces associated to this configuration.  */\n-  struct grub_usb_interface interf[32];\n+  struct grub_usb_interface interf[GRUB_USB_MAX_IF];\n };\n \n struct grub_usb_hub_port\n@@ -191,7 +195,7 @@ struct grub_usb_device\n   struct grub_usb_controller controller;\n \n   /* Device configurations (after opening the device).  */\n-  struct grub_usb_configuration config[8];\n+  struct grub_usb_configuration config[GRUB_USB_MAX_CONF];\n \n   /* Device address.  */\n   int addr;\n@@ -203,7 +207,7 @@ struct grub_usb_device\n   int initialized;\n \n   /* Data toggle values (used for bulk transfers only).  */\n-  int toggle[256];\n+  int toggle[GRUB_USB_MAX_TOGGLE];\n \n   /* Used by libusb wrapper.  Schedulded for removal. */\n   void *data;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0049-mmap-Fix-memory-leak-when-iterating-over-mapped-memo.patch",
    "content": "From 8cb2848f9699642a698af84b12ba187cab722031 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Thu, 3 Dec 2020 14:39:45 +0000\nSubject: [PATCH] mmap: Fix memory leak when iterating over mapped memory\n\nWhen returning from grub_mmap_iterate() the memory allocated to present\nis not being released causing it to leak.\n\nFixes: CID 96655\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/mmap/mmap.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/grub-core/mmap/mmap.c b/grub-core/mmap/mmap.c\nindex 7ebf32e..8bf235f 100644\n--- a/grub-core/mmap/mmap.c\n+++ b/grub-core/mmap/mmap.c\n@@ -270,6 +270,7 @@ grub_mmap_iterate (grub_memory_hook_t hook, void *hook_data)\n \t\t   hook_data))\n \t{\n \t  grub_free (ctx.scanline_events);\n+\t  grub_free (present);\n \t  return GRUB_ERR_NONE;\n \t}\n \n@@ -282,6 +283,7 @@ grub_mmap_iterate (grub_memory_hook_t hook, void *hook_data)\n     }\n \n   grub_free (ctx.scanline_events);\n+  grub_free (present);\n   return GRUB_ERR_NONE;\n }\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0050-net-net-Fix-possible-dereference-to-of-a-NULL-pointe.patch",
    "content": "From 03f2515ae0c503406f1a99a2178405049c6555db Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Fri, 27 Nov 2020 15:10:26 +0000\nSubject: [PATCH] net/net: Fix possible dereference to of a NULL pointer\n\nIt is always possible that grub_zalloc() could fail, so we should check for\na NULL return. Otherwise we run the risk of dereferencing a NULL pointer.\n\nFixes: CID 296221\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/net/net.c | 9 +++++++--\n 1 file changed, 7 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/net/net.c b/grub-core/net/net.c\nindex 38f19df..7c2cdf2 100644\n--- a/grub-core/net/net.c\n+++ b/grub-core/net/net.c\n@@ -86,8 +86,13 @@ grub_net_link_layer_add_address (struct grub_net_card *card,\n \n   /* Add sender to cache table.  */\n   if (card->link_layer_table == NULL)\n-    card->link_layer_table = grub_zalloc (LINK_LAYER_CACHE_SIZE\n-\t\t\t\t\t  * sizeof (card->link_layer_table[0]));\n+    {\n+      card->link_layer_table = grub_zalloc (LINK_LAYER_CACHE_SIZE\n+\t\t\t\t\t    * sizeof (card->link_layer_table[0]));\n+      if (card->link_layer_table == NULL)\n+\treturn;\n+    }\n+\n   entry = &(card->link_layer_table[card->new_ll_entry]);\n   entry->avail = 1;\n   grub_memcpy (&entry->ll_address, ll, sizeof (entry->ll_address));\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0051-net-tftp-Fix-dangling-memory-pointer.patch",
    "content": "From 0cb838b281a68b536a09681f9557ea6a7ac5da7a Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Fri, 19 Feb 2021 17:12:23 +0000\nSubject: [PATCH] net/tftp: Fix dangling memory pointer\n\nThe static code analysis tool, Parfait, reported that the valid of\nfile->data was left referencing memory that was freed by the call to\ngrub_free(data) where data was initialized from file->data.\n\nTo ensure that there is no unintentional access to this memory\nreferenced by file->data we should set the pointer to NULL.\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/net/tftp.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/grub-core/net/tftp.c b/grub-core/net/tftp.c\nindex b4297bc..c106704 100644\n--- a/grub-core/net/tftp.c\n+++ b/grub-core/net/tftp.c\n@@ -406,6 +406,7 @@ tftp_close (struct grub_file *file)\n       grub_net_udp_close (data->sock);\n     }\n   grub_free (data);\n+  file->data = NULL;\n   return GRUB_ERR_NONE;\n }\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0052-kern-parser-Fix-resource-leak-if-argc-0.patch",
    "content": "From d06161b035dde4769199ad65aa0a587a5920012b Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Fri, 22 Jan 2021 12:32:41 +0000\nSubject: [PATCH] kern/parser: Fix resource leak if argc == 0\n\nAfter processing the command-line yet arriving at the point where we are\nsetting argv, we are allocating memory, even if argc == 0, which makes\nno sense since we never put anything into the allocated argv.\n\nThe solution is to simply return that we've successfully processed the\narguments but that argc == 0, and also ensure that argv is NULL when\nwe're not allocating anything in it.\n\nThere are only 2 callers of this function, and both are handling a zero\nvalue in argc assuming nothing is allocated in argv.\n\nFixes: CID 96680\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/parser.c | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c\nindex 619db31..d1cf061 100644\n--- a/grub-core/kern/parser.c\n+++ b/grub-core/kern/parser.c\n@@ -146,6 +146,7 @@ grub_parser_split_cmdline (const char *cmdline,\n   int i;\n \n   *argc = 0;\n+  *argv = NULL;\n   do\n     {\n       if (!rd || !*rd)\n@@ -207,6 +208,10 @@ grub_parser_split_cmdline (const char *cmdline,\n       (*argc)++;\n     }\n \n+  /* If there are no args, then we're done. */\n+  if (!*argc)\n+    return 0;\n+\n   /* Reserve memory for the return values.  */\n   args = grub_malloc (bp - buffer);\n   if (!args)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0053-kern-efi-Fix-memory-leak-on-failure.patch",
    "content": "From ed286ceba6015d37a9304f04602451c47bf195d7 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Thu, 5 Nov 2020 10:15:25 +0000\nSubject: [PATCH] kern/efi: Fix memory leak on failure\n\nFree the memory allocated to name before returning on failure.\n\nFixes: CID 296222\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/efi/efi.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c\nindex 9cfd88d..4fc14d6 100644\n--- a/grub-core/kern/efi/efi.c\n+++ b/grub-core/kern/efi/efi.c\n@@ -388,6 +388,7 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)\n \t    {\n \t      grub_error (GRUB_ERR_OUT_OF_RANGE,\n \t\t\t  \"malformed EFI Device Path node has length=%d\", len);\n+\t      grub_free (name);\n \t      return NULL;\n \t    }\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0054-kern-efi-mm-Fix-possible-NULL-pointer-dereference.patch",
    "content": "From 6aee4bfd6973c714056fb7b56890b8d524e94ee1 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Fri, 11 Dec 2020 15:03:13 +0000\nSubject: [PATCH] kern/efi/mm: Fix possible NULL pointer dereference\n\nThe model of grub_efi_get_memory_map() is that if memory_map is NULL,\nthen the purpose is to discover how much memory should be allocated to\nit for the subsequent call.\n\nThe problem here is that with grub_efi_is_finished set to 1, there is no\ncheck at all that the function is being called with a non-NULL memory_map.\n\nWhile this MAY be true, we shouldn't assume it.\n\nThe solution to this is to behave as expected, and if memory_map is NULL,\nthen don't try to use it and allow memory_map_size to be filled in, and\nreturn 0 as is done later in the code if the buffer is too small (or NULL).\n\nAdditionally, drop unneeded ret = 1.\n\nFixes: CID 96632\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/efi/mm.c | 19 ++++++++++++++-----\n 1 file changed, 14 insertions(+), 5 deletions(-)\n\ndiff --git a/grub-core/kern/efi/mm.c b/grub-core/kern/efi/mm.c\nindex b02fab1..5afcef7 100644\n--- a/grub-core/kern/efi/mm.c\n+++ b/grub-core/kern/efi/mm.c\n@@ -328,15 +328,24 @@ grub_efi_get_memory_map (grub_efi_uintn_t *memory_map_size,\n   if (grub_efi_is_finished)\n     {\n       int ret = 1;\n-      if (*memory_map_size < finish_mmap_size)\n+\n+      if (memory_map != NULL)\n \t{\n-\t  grub_memcpy (memory_map, finish_mmap_buf, *memory_map_size);\n-\t  ret = 0;\n+\t  if (*memory_map_size < finish_mmap_size)\n+\t    {\n+\t      grub_memcpy (memory_map, finish_mmap_buf, *memory_map_size);\n+\t      ret = 0;\n+\t    }\n+          else\n+\t    grub_memcpy (memory_map, finish_mmap_buf, finish_mmap_size);\n \t}\n       else\n \t{\n-\t  grub_memcpy (memory_map, finish_mmap_buf, finish_mmap_size);\n-\t  ret = 1;\n+\t  /*\n+\t   * Incomplete, no buffer to copy into, same as\n+\t   * GRUB_EFI_BUFFER_TOO_SMALL below.\n+\t   */\n+\t  ret = 0;\n \t}\n       *memory_map_size = finish_mmap_size;\n       if (map_key)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0055-gnulib-regexec-Resolve-unused-variable.patch",
    "content": "From a983d36bd9178d377d2072fd4b11c635fdc404b4 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Wed, 21 Oct 2020 14:41:27 +0000\nSubject: [PATCH] gnulib/regexec: Resolve unused variable\n\nThis is a really minor issue where a variable is being assigned to but\nnot checked before it is overwritten again.\n\nThe reason for this issue is that we are not building with DEBUG set and\nthis in turn means that the assert() that reads the value of the\nvariable match_last is being processed out.\n\nThe solution, move the assignment to match_last in to an ifdef DEBUG too.\n\nFixes: CID 292459\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n[Add changes to generated files]\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n Makefile.in                                         |  1 +\n conf/Makefile.extra-dist                            |  1 +\n grub-core/lib/gnulib-patches/fix-unused-value.patch | 14 ++++++++++++++\n grub-core/lib/gnulib/regexec.c                      |  4 ++++\n 4 files changed, 20 insertions(+)\n create mode 100644 grub-core/lib/gnulib-patches/fix-unused-value.patch\n\ndiff --git a/Makefile.in b/Makefile.in\nindex ecb3278..e6b287b 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -2742,6 +2742,7 @@ EXTRA_DIST = autogen.sh geninit.sh gentpl.py Makefile.util.def \\\n \tgrub-core/gensyminfo.sh.in grub-core/gensymlist.sh \\\n \tgrub-core/genemuinit.sh grub-core/genemuinitheader.sh \\\n \tgrub-core/lib/gnulib-patches/fix-null-deref.patch \\\n+\tgrub-core/lib/gnulib-patches/fix-unused-value.patch \\\n \tgrub-core/lib/gnulib-patches/fix-width.patch \\\n \tgrub-core/lib/gnulib-patches/no-abort.patch \\\n \tgrub-core/lib/libgcrypt \\\ndiff --git a/conf/Makefile.extra-dist b/conf/Makefile.extra-dist\nindex 46c4e95..9b01152 100644\n--- a/conf/Makefile.extra-dist\n+++ b/conf/Makefile.extra-dist\n@@ -29,6 +29,7 @@ EXTRA_DIST += grub-core/genemuinit.sh\n EXTRA_DIST += grub-core/genemuinitheader.sh\n \n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-deref.patch\n+EXTRA_DIST += grub-core/lib/gnulib-patches/fix-unused-value.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-width.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/no-abort.patch\n \ndiff --git a/grub-core/lib/gnulib-patches/fix-unused-value.patch b/grub-core/lib/gnulib-patches/fix-unused-value.patch\nnew file mode 100644\nindex 0000000..ba51f1b\n--- /dev/null\n+++ b/grub-core/lib/gnulib-patches/fix-unused-value.patch\n@@ -0,0 +1,14 @@\n+--- a/lib/regexec.c\t2020-10-21 14:25:35.310195912 +0000\n++++ b/lib/regexec.c\t2020-10-21 14:32:07.961765604 +0000\n+@@ -828,7 +828,11 @@\n+ \t\t    break;\n+ \t\t  if (__glibc_unlikely (err != REG_NOMATCH))\n+ \t\t    goto free_return;\n++#ifdef DEBUG\n++\t\t  /* Only used for assertion below when DEBUG is set, otherwise\n++\t\t     it will be over-written when we loop around.  */\n+ \t\t  match_last = -1;\n++#endif\n+ \t\t}\n+ \t      else\n+ \t\tbreak; /* We found a match.  */\ndiff --git a/grub-core/lib/gnulib/regexec.c b/grub-core/lib/gnulib/regexec.c\nindex 21cf791..98a25f5 100644\n--- a/grub-core/lib/gnulib/regexec.c\n+++ b/grub-core/lib/gnulib/regexec.c\n@@ -828,6 +828,10 @@ re_search_internal (const regex_t *preg, const char *string, Idx length,\n \t\t    break;\n \t\t  if (__glibc_unlikely (err != REG_NOMATCH))\n \t\t    goto free_return;\n+#ifdef DEBUG\n+\t\t  /* Only used for assertion below when DEBUG is set, otherwise\n+\t\t     it will be over-written when we loop around.  */\n+#endif\n \t\t  match_last = -1;\n \t\t}\n \t      else\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0056-gnulib-regcomp-Fix-uninitialized-token-structure.patch",
    "content": "From 75c3d3cec4f408848f575d6d5e30a95bd6313db0 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Thu, 22 Oct 2020 13:54:06 +0000\nSubject: [PATCH] gnulib/regcomp: Fix uninitialized token structure\n\nThe code is assuming that the value of br_token.constraint was\ninitialized to zero when it wasn't.\n\nWhile some compilers will ensure that, not all do, so it is better to\nfix this explicitly than leave it to chance.\n\nFixes: CID 73749\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n[Add changes to generated files]\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n Makefile.in                                             |  1 +\n conf/Makefile.extra-dist                                |  1 +\n grub-core/lib/gnulib-patches/fix-uninit-structure.patch | 11 +++++++++++\n grub-core/lib/gnulib/regcomp.c                          |  2 +-\n 4 files changed, 14 insertions(+), 1 deletion(-)\n create mode 100644 grub-core/lib/gnulib-patches/fix-uninit-structure.patch\n\ndiff --git a/Makefile.in b/Makefile.in\nindex e6b287b..d58a7d7 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -2742,6 +2742,7 @@ EXTRA_DIST = autogen.sh geninit.sh gentpl.py Makefile.util.def \\\n \tgrub-core/gensyminfo.sh.in grub-core/gensymlist.sh \\\n \tgrub-core/genemuinit.sh grub-core/genemuinitheader.sh \\\n \tgrub-core/lib/gnulib-patches/fix-null-deref.patch \\\n+\tgrub-core/lib/gnulib-patches/fix-uninit-structure.patch \\\n \tgrub-core/lib/gnulib-patches/fix-unused-value.patch \\\n \tgrub-core/lib/gnulib-patches/fix-width.patch \\\n \tgrub-core/lib/gnulib-patches/no-abort.patch \\\ndiff --git a/conf/Makefile.extra-dist b/conf/Makefile.extra-dist\nindex 9b01152..9e55458 100644\n--- a/conf/Makefile.extra-dist\n+++ b/conf/Makefile.extra-dist\n@@ -29,6 +29,7 @@ EXTRA_DIST += grub-core/genemuinit.sh\n EXTRA_DIST += grub-core/genemuinitheader.sh\n \n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-deref.patch\n+EXTRA_DIST += grub-core/lib/gnulib-patches/fix-uninit-structure.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-unused-value.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-width.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/no-abort.patch\ndiff --git a/grub-core/lib/gnulib-patches/fix-uninit-structure.patch b/grub-core/lib/gnulib-patches/fix-uninit-structure.patch\nnew file mode 100644\nindex 0000000..7b4d9f6\n--- /dev/null\n+++ b/grub-core/lib/gnulib-patches/fix-uninit-structure.patch\n@@ -0,0 +1,11 @@\n+--- a/lib/regcomp.c\t2020-10-22 13:49:06.770168928 +0000\n++++ b/lib/regcomp.c\t2020-10-22 13:50:37.026528298 +0000\n+@@ -3662,7 +3662,7 @@\n+   Idx alloc = 0;\n+ #endif /* not RE_ENABLE_I18N */\n+   reg_errcode_t ret;\n+-  re_token_t br_token;\n++  re_token_t br_token = {0};\n+   bin_tree_t *tree;\n+ \n+   sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);\ndiff --git a/grub-core/lib/gnulib/regcomp.c b/grub-core/lib/gnulib/regcomp.c\nindex fe7dfcb..2545d3e 100644\n--- a/grub-core/lib/gnulib/regcomp.c\n+++ b/grub-core/lib/gnulib/regcomp.c\n@@ -3662,7 +3662,7 @@ build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,\n   Idx alloc = 0;\n #endif /* not RE_ENABLE_I18N */\n   reg_errcode_t ret;\n-  re_token_t br_token;\n+  re_token_t br_token = {0};\n   bin_tree_t *tree;\n \n   sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0057-gnulib-argp-help-Fix-dereference-of-a-possibly-NULL-.patch",
    "content": "From 3a37bf120a9194c373257c70175cdb5b337bc107 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Wed, 28 Oct 2020 14:43:01 +0000\nSubject: [PATCH] gnulib/argp-help: Fix dereference of a possibly NULL state\n\nAll other instances of call to __argp_failure() where there is\na dgettext() call is first checking whether state is NULL before\nattempting to dereference it to get the root_argp->argp_domain.\n\nFixes: CID 292436\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n[Add changes to generated files]\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n Makefile.in                                             |  1 +\n conf/Makefile.extra-dist                                |  1 +\n grub-core/lib/gnulib-patches/fix-null-state-deref.patch | 12 ++++++++++++\n grub-core/lib/gnulib/argp-help.c                        |  3 ++-\n 4 files changed, 16 insertions(+), 1 deletion(-)\n create mode 100644 grub-core/lib/gnulib-patches/fix-null-state-deref.patch\n\ndiff --git a/Makefile.in b/Makefile.in\nindex d58a7d7..812b7c2 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -2742,6 +2742,7 @@ EXTRA_DIST = autogen.sh geninit.sh gentpl.py Makefile.util.def \\\n \tgrub-core/gensyminfo.sh.in grub-core/gensymlist.sh \\\n \tgrub-core/genemuinit.sh grub-core/genemuinitheader.sh \\\n \tgrub-core/lib/gnulib-patches/fix-null-deref.patch \\\n+\tgrub-core/lib/gnulib-patches/fix-null-state-deref.patch \\\n \tgrub-core/lib/gnulib-patches/fix-uninit-structure.patch \\\n \tgrub-core/lib/gnulib-patches/fix-unused-value.patch \\\n \tgrub-core/lib/gnulib-patches/fix-width.patch \\\ndiff --git a/conf/Makefile.extra-dist b/conf/Makefile.extra-dist\nindex 9e55458..96d7e69 100644\n--- a/conf/Makefile.extra-dist\n+++ b/conf/Makefile.extra-dist\n@@ -29,6 +29,7 @@ EXTRA_DIST += grub-core/genemuinit.sh\n EXTRA_DIST += grub-core/genemuinitheader.sh\n \n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-deref.patch\n+EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-state-deref.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-uninit-structure.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-unused-value.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-width.patch\ndiff --git a/grub-core/lib/gnulib-patches/fix-null-state-deref.patch b/grub-core/lib/gnulib-patches/fix-null-state-deref.patch\nnew file mode 100644\nindex 0000000..813ec09\n--- /dev/null\n+++ b/grub-core/lib/gnulib-patches/fix-null-state-deref.patch\n@@ -0,0 +1,12 @@\n+--- a/lib/argp-help.c\t2020-10-28 14:32:19.189215988 +0000\n++++ b/lib/argp-help.c\t2020-10-28 14:38:21.204673940 +0000\n+@@ -145,7 +145,8 @@\n+       if (*(int *)((char *)upptr + up->uparams_offs) >= upptr->rmargin)\n+         {\n+           __argp_failure (state, 0, 0,\n+-                          dgettext (state->root_argp->argp_domain,\n++                          dgettext (state == NULL ? NULL\n++                                    : state->root_argp->argp_domain,\n+                                     \"\\\n+ ARGP_HELP_FMT: %s value is less than or equal to %s\"),\n+                           \"rmargin\", up->name);\ndiff --git a/grub-core/lib/gnulib/argp-help.c b/grub-core/lib/gnulib/argp-help.c\nindex 5d8f451..c75568c 100644\n--- a/grub-core/lib/gnulib/argp-help.c\n+++ b/grub-core/lib/gnulib/argp-help.c\n@@ -145,7 +145,8 @@ validate_uparams (const struct argp_state *state, struct uparams *upptr)\n       if (*(int *)((char *)upptr + up->uparams_offs) >= upptr->rmargin)\n         {\n           __argp_failure (state, 0, 0,\n-                          dgettext (state->root_argp->argp_domain,\n+                          dgettext (state == NULL ? NULL\n+                                    : state->root_argp->argp_domain,\n                                     \"\\\n ARGP_HELP_FMT: %s value is less than or equal to %s\"),\n                           \"rmargin\", up->name);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0058-gnulib-regexec-Fix-possible-null-dereference.patch",
    "content": "From 0b7f347638153e403ee2dd518af3ce26f4f99647 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Thu, 5 Nov 2020 10:57:14 +0000\nSubject: [PATCH] gnulib/regexec: Fix possible null-dereference\n\nIt appears to be possible that the mctx->state_log field may be NULL,\nand the name of this function, clean_state_log_if_needed(), suggests\nthat it should be checking that it is valid to be cleaned before\nassuming that it does.\n\nFixes: CID 86720\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n[Add changes to generated files]\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n Makefile.in                                               |  1 +\n conf/Makefile.extra-dist                                  |  1 +\n grub-core/lib/gnulib-patches/fix-regexec-null-deref.patch | 12 ++++++++++++\n grub-core/lib/gnulib/regexec.c                            |  3 +++\n 4 files changed, 17 insertions(+)\n create mode 100644 grub-core/lib/gnulib-patches/fix-regexec-null-deref.patch\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 812b7c2..d9da6e9 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -2743,6 +2743,7 @@ EXTRA_DIST = autogen.sh geninit.sh gentpl.py Makefile.util.def \\\n \tgrub-core/genemuinit.sh grub-core/genemuinitheader.sh \\\n \tgrub-core/lib/gnulib-patches/fix-null-deref.patch \\\n \tgrub-core/lib/gnulib-patches/fix-null-state-deref.patch \\\n+\tgrub-core/lib/gnulib-patches/fix-regexec-null-deref.patch \\\n \tgrub-core/lib/gnulib-patches/fix-uninit-structure.patch \\\n \tgrub-core/lib/gnulib-patches/fix-unused-value.patch \\\n \tgrub-core/lib/gnulib-patches/fix-width.patch \\\ndiff --git a/conf/Makefile.extra-dist b/conf/Makefile.extra-dist\nindex 96d7e69..d27d3a9 100644\n--- a/conf/Makefile.extra-dist\n+++ b/conf/Makefile.extra-dist\n@@ -30,6 +30,7 @@ EXTRA_DIST += grub-core/genemuinitheader.sh\n \n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-deref.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-state-deref.patch\n+EXTRA_DIST += grub-core/lib/gnulib-patches/fix-regexec-null-deref.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-uninit-structure.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-unused-value.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-width.patch\ndiff --git a/grub-core/lib/gnulib-patches/fix-regexec-null-deref.patch b/grub-core/lib/gnulib-patches/fix-regexec-null-deref.patch\nnew file mode 100644\nindex 0000000..db6dac9\n--- /dev/null\n+++ b/grub-core/lib/gnulib-patches/fix-regexec-null-deref.patch\n@@ -0,0 +1,12 @@\n+--- a/lib/regexec.c\t2020-10-21 14:25:35.310195912 +0000\n++++ b/lib/regexec.c\t2020-11-05 10:55:09.621542984 +0000\n+@@ -1692,6 +1692,9 @@\n+ {\n+   Idx top = mctx->state_log_top;\n+\n++  if (mctx->state_log == NULL)\n++    return REG_NOERROR;\n++\n+   if ((next_state_log_idx >= mctx->input.bufs_len\n+        && mctx->input.bufs_len < mctx->input.len)\n+       || (next_state_log_idx >= mctx->input.valid_len\ndiff --git a/grub-core/lib/gnulib/regexec.c b/grub-core/lib/gnulib/regexec.c\nindex 98a25f5..df97667 100644\n--- a/grub-core/lib/gnulib/regexec.c\n+++ b/grub-core/lib/gnulib/regexec.c\n@@ -1696,6 +1696,9 @@ clean_state_log_if_needed (re_match_context_t *mctx, Idx next_state_log_idx)\n {\n   Idx top = mctx->state_log_top;\n \n+  if (mctx->state_log == NULL)\n+    return REG_NOERROR;\n+\n   if ((next_state_log_idx >= mctx->input.bufs_len\n        && mctx->input.bufs_len < mctx->input.len)\n       || (next_state_log_idx >= mctx->input.valid_len\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0059-gnulib-regcomp-Fix-uninitialized-re_token.patch",
    "content": "From 03477085f9a33789ba6cca7cd49ab9326a1baa0e Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Tue, 24 Nov 2020 18:04:22 +0000\nSubject: [PATCH] gnulib/regcomp: Fix uninitialized re_token\n\nThis issue has been fixed in the latest version of gnulib, so to\nmaintain consistency, I've backported that change rather than doing\nsomething different.\n\nFixes: CID 73828\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n[Add changes to generated files]\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n Makefile.in                                               |  1 +\n conf/Makefile.extra-dist                                  |  1 +\n .../lib/gnulib-patches/fix-regcomp-uninit-token.patch     | 15 +++++++++++++++\n grub-core/lib/gnulib/regcomp.c                            |  6 +-----\n 4 files changed, 18 insertions(+), 5 deletions(-)\n create mode 100644 grub-core/lib/gnulib-patches/fix-regcomp-uninit-token.patch\n\ndiff --git a/Makefile.in b/Makefile.in\nindex d9da6e9..9442504 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -2743,6 +2743,7 @@ EXTRA_DIST = autogen.sh geninit.sh gentpl.py Makefile.util.def \\\n \tgrub-core/genemuinit.sh grub-core/genemuinitheader.sh \\\n \tgrub-core/lib/gnulib-patches/fix-null-deref.patch \\\n \tgrub-core/lib/gnulib-patches/fix-null-state-deref.patch \\\n+\tgrub-core/lib/gnulib-patches/fix-regcomp-uninit-token.patch \\\n \tgrub-core/lib/gnulib-patches/fix-regexec-null-deref.patch \\\n \tgrub-core/lib/gnulib-patches/fix-uninit-structure.patch \\\n \tgrub-core/lib/gnulib-patches/fix-unused-value.patch \\\ndiff --git a/conf/Makefile.extra-dist b/conf/Makefile.extra-dist\nindex d27d3a9..ffe6829 100644\n--- a/conf/Makefile.extra-dist\n+++ b/conf/Makefile.extra-dist\n@@ -30,6 +30,7 @@ EXTRA_DIST += grub-core/genemuinitheader.sh\n \n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-deref.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-null-state-deref.patch\n+EXTRA_DIST += grub-core/lib/gnulib-patches/fix-regcomp-uninit-token.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-regexec-null-deref.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-uninit-structure.patch\n EXTRA_DIST += grub-core/lib/gnulib-patches/fix-unused-value.patch\ndiff --git a/grub-core/lib/gnulib-patches/fix-regcomp-uninit-token.patch b/grub-core/lib/gnulib-patches/fix-regcomp-uninit-token.patch\nnew file mode 100644\nindex 0000000..02e0631\n--- /dev/null\n+++ b/grub-core/lib/gnulib-patches/fix-regcomp-uninit-token.patch\n@@ -0,0 +1,15 @@\n+--- a/lib/regcomp.c\t2020-11-24 17:06:08.159223858 +0000\n++++ b/lib/regcomp.c\t2020-11-24 17:06:15.630253923 +0000\n+@@ -3808,11 +3808,7 @@\n+ create_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,\n+ \t     re_token_type_t type)\n+ {\n+-  re_token_t t;\n+-#if defined GCC_LINT || defined lint\n+-  memset (&t, 0, sizeof t);\n+-#endif\n+-  t.type = type;\n++  re_token_t t = { .type = type };\n+   return create_token_tree (dfa, left, right, &t);\n+ }\n+ \ndiff --git a/grub-core/lib/gnulib/regcomp.c b/grub-core/lib/gnulib/regcomp.c\nindex 2545d3e..64a4fa7 100644\n--- a/grub-core/lib/gnulib/regcomp.c\n+++ b/grub-core/lib/gnulib/regcomp.c\n@@ -3808,11 +3808,7 @@ static bin_tree_t *\n create_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,\n \t     re_token_type_t type)\n {\n-  re_token_t t;\n-#if defined GCC_LINT || defined lint\n-  memset (&t, 0, sizeof t);\n-#endif\n-  t.type = type;\n+  re_token_t t = { .type = type };\n   return create_token_tree (dfa, left, right, &t);\n }\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0060-io-lzopio-Resolve-unnecessary-self-assignment-errors.patch",
    "content": "From 59666e520f44177c97b82a44c169b3b315d63b42 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Wed, 21 Oct 2020 14:44:10 +0000\nSubject: [PATCH] io/lzopio: Resolve unnecessary self-assignment errors\n\nThese 2 assignments are unnecessary since they are just assigning\nto themselves.\n\nFixes: CID 73643\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/io/lzopio.c | 4 ----\n 1 file changed, 4 deletions(-)\n\ndiff --git a/grub-core/io/lzopio.c b/grub-core/io/lzopio.c\nindex 3014485..a7d4425 100644\n--- a/grub-core/io/lzopio.c\n+++ b/grub-core/io/lzopio.c\n@@ -125,8 +125,6 @@ read_block_header (struct grub_lzopio *lzopio)\n \t\t\t  sizeof (lzopio->block.ucheck)) !=\n \t  sizeof (lzopio->block.ucheck))\n \treturn -1;\n-\n-      lzopio->block.ucheck = lzopio->block.ucheck;\n     }\n \n   /* Read checksum of compressed data.  */\n@@ -143,8 +141,6 @@ read_block_header (struct grub_lzopio *lzopio)\n \t\t\t      sizeof (lzopio->block.ccheck)) !=\n \t      sizeof (lzopio->block.ccheck))\n \t    return -1;\n-\n-\t  lzopio->block.ccheck = lzopio->block.ccheck;\n \t}\n     }\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0061-zstd-Initialize-seq_t-structure-fully.patch",
    "content": "From 2777cf4466719921dbe4b30af358a75e7d76f217 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Thu, 5 Nov 2020 10:29:59 +0000\nSubject: [PATCH] zstd: Initialize seq_t structure fully\n\nWhile many compilers will initialize this to zero, not all will, so it\nis better to be sure that fields not being explicitly set are at known\nvalues, and there is code that checks this fields value elsewhere in the\ncode.\n\nFixes: CID 292440\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/lib/zstd/zstd_decompress.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/grub-core/lib/zstd/zstd_decompress.c b/grub-core/lib/zstd/zstd_decompress.c\nindex 711b5b6..e4b5670 100644\n--- a/grub-core/lib/zstd/zstd_decompress.c\n+++ b/grub-core/lib/zstd/zstd_decompress.c\n@@ -1325,7 +1325,7 @@ typedef enum { ZSTD_lo_isRegularOffset, ZSTD_lo_isLongOffset=1 } ZSTD_longOffset\n FORCE_INLINE_TEMPLATE seq_t\n ZSTD_decodeSequence(seqState_t* seqState, const ZSTD_longOffset_e longOffsets)\n {\n-    seq_t seq;\n+    seq_t seq = {0};\n     U32 const llBits = seqState->stateLL.table[seqState->stateLL.state].nbAdditionalBits;\n     U32 const mlBits = seqState->stateML.table[seqState->stateML.state].nbAdditionalBits;\n     U32 const ofBits = seqState->stateOffb.table[seqState->stateOffb.state].nbAdditionalBits;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0062-kern-partition-Check-for-NULL-before-dereferencing-i.patch",
    "content": "From bc9c468a2ce84bc767234eec888b71f1bc744fff Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Fri, 23 Oct 2020 09:49:59 +0000\nSubject: [PATCH] kern/partition: Check for NULL before dereferencing input\n string\n\nThere is the possibility that the value of str comes from an external\nsource and continuing to use it before ever checking its validity is\nwrong. So, needs fixing.\n\nAdditionally, drop unneeded part initialization.\n\nFixes: CID 292444\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/partition.c | 5 ++++-\n 1 file changed, 4 insertions(+), 1 deletion(-)\n\ndiff --git a/grub-core/kern/partition.c b/grub-core/kern/partition.c\nindex e499147..b10a184 100644\n--- a/grub-core/kern/partition.c\n+++ b/grub-core/kern/partition.c\n@@ -109,11 +109,14 @@ grub_partition_map_probe (const grub_partition_map_t partmap,\n grub_partition_t\n grub_partition_probe (struct grub_disk *disk, const char *str)\n {\n-  grub_partition_t part = 0;\n+  grub_partition_t part;\n   grub_partition_t curpart = 0;\n   grub_partition_t tail;\n   const char *ptr;\n \n+  if (str == NULL)\n+    return 0;\n+\n   part = tail = disk->partition;\n \n   for (ptr = str; *ptr;)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0063-disk-ldm-Make-sure-comp-data-is-freed-before-exiting.patch",
    "content": "From 23e39f50ca7a107f6b66396ed4d177a914dee035 Mon Sep 17 00:00:00 2001\nFrom: Marco A Benatto <mbenatto@redhat.com>\nDate: Mon, 7 Dec 2020 11:53:03 -0300\nSubject: [PATCH] disk/ldm: Make sure comp data is freed before exiting from\n make_vg()\n\nSeveral error handling paths in make_vg() do not free comp data before\njumping to fail2 label and returning from the function. This will leak\nmemory. So, let's fix all issues of that kind.\n\nFixes: CID 73804\n\nSigned-off-by: Marco A Benatto <mbenatto@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/disk/ldm.c | 51 ++++++++++++++++++++++++++++++++++++++++++++-------\n 1 file changed, 44 insertions(+), 7 deletions(-)\n\ndiff --git a/grub-core/disk/ldm.c b/grub-core/disk/ldm.c\nindex 58f8a53..428415f 100644\n--- a/grub-core/disk/ldm.c\n+++ b/grub-core/disk/ldm.c\n@@ -554,7 +554,11 @@ make_vg (grub_disk_t disk,\n \t      comp->segments = grub_calloc (comp->segment_alloc,\n \t\t\t\t\t    sizeof (*comp->segments));\n \t      if (!comp->segments)\n-\t\tgoto fail2;\n+\t\t{\n+\t\t  grub_free (comp->internal_id);\n+\t\t  grub_free (comp);\n+\t\t  goto fail2;\n+\t\t}\n \t    }\n \t  else\n \t    {\n@@ -562,7 +566,11 @@ make_vg (grub_disk_t disk,\n \t      comp->segment_count = 1;\n \t      comp->segments = grub_malloc (sizeof (*comp->segments));\n \t      if (!comp->segments)\n-\t\tgoto fail2;\n+\t\t{\n+\t\t  grub_free (comp->internal_id);\n+\t\t  grub_free (comp);\n+\t\t  goto fail2;\n+\t\t}\n \t      comp->segments->start_extent = 0;\n \t      comp->segments->extent_count = lv->size;\n \t      comp->segments->layout = 0;\n@@ -574,15 +582,26 @@ make_vg (grub_disk_t disk,\n \t\t  comp->segments->layout = GRUB_RAID_LAYOUT_SYMMETRIC_MASK;\n \t\t}\n \t      else\n-\t\tgoto fail2;\n+\t\t{\n+\t\t  grub_free (comp->segments);\n+\t\t  grub_free (comp->internal_id);\n+\t\t  grub_free (comp);\n+\t\t  goto fail2;\n+\t\t}\n \t      ptr += *ptr + 1;\n \t      ptr++;\n \t      if (!(vblk[i].flags & 0x10))\n-\t\tgoto fail2;\n+\t\t{\n+\t\t  grub_free (comp->segments);\n+\t\t  grub_free (comp->internal_id);\n+\t\t  grub_free (comp);\n+\t\t  goto fail2;\n+\t\t}\n \t      if (ptr >= vblk[i].dynamic + sizeof (vblk[i].dynamic)\n \t\t  || ptr + *ptr + 1 >= vblk[i].dynamic\n \t\t  + sizeof (vblk[i].dynamic))\n \t\t{\n+\t\t  grub_free (comp->segments);\n \t\t  grub_free (comp->internal_id);\n \t\t  grub_free (comp);\n \t\t  goto fail2;\n@@ -592,6 +611,7 @@ make_vg (grub_disk_t disk,\n \t      if (ptr + *ptr + 1 >= vblk[i].dynamic\n \t\t  + sizeof (vblk[i].dynamic))\n \t\t{\n+\t\t  grub_free (comp->segments);\n \t\t  grub_free (comp->internal_id);\n \t\t  grub_free (comp);\n \t\t  goto fail2;\n@@ -601,7 +621,12 @@ make_vg (grub_disk_t disk,\n \t      comp->segments->nodes = grub_calloc (comp->segments->node_alloc,\n \t\t\t\t\t\t   sizeof (*comp->segments->nodes));\n \t      if (!lv->segments->nodes)\n-\t\tgoto fail2;\n+\t\t{\n+\t\t  grub_free (comp->segments);\n+\t\t  grub_free (comp->internal_id);\n+\t\t  grub_free (comp);\n+\t\t  goto fail2;\n+\t\t}\n \t    }\n \n \t  if (lv->segments->node_alloc == lv->segments->node_count)\n@@ -611,11 +636,23 @@ make_vg (grub_disk_t disk,\n \n \t      if (grub_mul (lv->segments->node_alloc, 2, &lv->segments->node_alloc) ||\n \t\t  grub_mul (lv->segments->node_alloc, sizeof (*lv->segments->nodes), &sz))\n-\t\tgoto fail2;\n+\t\t{\n+\t\t  grub_free (comp->segments->nodes);\n+\t\t  grub_free (comp->segments);\n+\t\t  grub_free (comp->internal_id);\n+\t\t  grub_free (comp);\n+\t\t  goto fail2;\n+\t\t}\n \n \t      t = grub_realloc (lv->segments->nodes, sz);\n \t      if (!t)\n-\t\tgoto fail2;\n+\t\t{\n+\t\t  grub_free (comp->segments->nodes);\n+\t\t  grub_free (comp->segments);\n+\t\t  grub_free (comp->internal_id);\n+\t\t  grub_free (comp);\n+\t\t  goto fail2;\n+\t\t}\n \t      lv->segments->nodes = t;\n \t    }\n \t  lv->segments->nodes[lv->segments->node_count].pv = 0;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0064-disk-ldm-If-failed-then-free-vg-variable-too.patch",
    "content": "From e0b83df5da538d2a38f770e60817b3a4b9d5b4d7 Mon Sep 17 00:00:00 2001\nFrom: Paulo Flabiano Smorigo <pfsmorigo@canonical.com>\nDate: Mon, 7 Dec 2020 10:07:47 -0300\nSubject: [PATCH] disk/ldm: If failed then free vg variable too\n\nFixes: CID 73809\n\nSigned-off-by: Paulo Flabiano Smorigo <pfsmorigo@canonical.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/disk/ldm.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/grub-core/disk/ldm.c b/grub-core/disk/ldm.c\nindex 428415f..54713f4 100644\n--- a/grub-core/disk/ldm.c\n+++ b/grub-core/disk/ldm.c\n@@ -199,6 +199,7 @@ make_vg (grub_disk_t disk,\n     {\n       grub_free (vg->uuid);\n       grub_free (vg->name);\n+      grub_free (vg);\n       return NULL;\n     }\n   grub_memcpy (vg->uuid, label->group_guid, LDM_GUID_STRLEN);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0065-disk-ldm-Fix-memory-leak-on-uninserted-lv-references.patch",
    "content": "From 156c281a1625dc73fd350530630c6f2d5673d4f6 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Tue, 8 Dec 2020 10:00:51 +0000\nSubject: [PATCH] disk/ldm: Fix memory leak on uninserted lv references\n\nThe problem here is that the memory allocated to the variable lv is not\nyet inserted into the list that is being processed at the label fail2.\n\nAs we can already see at line 342, which correctly frees lv before going\nto fail2, we should also be doing that at these earlier jumps to fail2.\n\nFixes: CID 73824\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/disk/ldm.c | 10 ++++++++--\n 1 file changed, 8 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/disk/ldm.c b/grub-core/disk/ldm.c\nindex 54713f4..e82e989 100644\n--- a/grub-core/disk/ldm.c\n+++ b/grub-core/disk/ldm.c\n@@ -321,7 +321,10 @@ make_vg (grub_disk_t disk,\n \t  lv->visible = 1;\n \t  lv->segments = grub_zalloc (sizeof (*lv->segments));\n \t  if (!lv->segments)\n-\t    goto fail2;\n+\t    {\n+\t      grub_free (lv);\n+\t      goto fail2;\n+\t    }\n \t  lv->segments->start_extent = 0;\n \t  lv->segments->type = GRUB_DISKFILTER_MIRROR;\n \t  lv->segments->node_count = 0;\n@@ -329,7 +332,10 @@ make_vg (grub_disk_t disk,\n \t  lv->segments->nodes = grub_calloc (lv->segments->node_alloc,\n \t\t\t\t\t     sizeof (*lv->segments->nodes));\n \t  if (!lv->segments->nodes)\n-\t    goto fail2;\n+\t    {\n+\t      grub_free (lv);\n+\t      goto fail2;\n+\t    }\n \t  ptr = vblk[i].dynamic;\n \t  if (ptr + *ptr + 1 >= vblk[i].dynamic\n \t      + sizeof (vblk[i].dynamic))\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0066-disk-cryptodisk-Fix-potential-integer-overflow.patch",
    "content": "From a201ad17caa430aa710654fdf2e6ab4c8166f031 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Thu, 21 Jan 2021 11:38:31 +0000\nSubject: [PATCH] disk/cryptodisk: Fix potential integer overflow\n\nThe encrypt and decrypt functions expect a grub_size_t. So, we need to\nensure that the constant bit shift is using grub_size_t rather than\nunsigned int when it is performing the shift.\n\nFixes: CID 307788\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/disk/cryptodisk.c | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c\nindex 5037768..6883f48 100644\n--- a/grub-core/disk/cryptodisk.c\n+++ b/grub-core/disk/cryptodisk.c\n@@ -311,10 +311,10 @@ grub_cryptodisk_endecrypt (struct grub_cryptodisk *dev,\n \tcase GRUB_CRYPTODISK_MODE_CBC:\n \t  if (do_encrypt)\n \t    err = grub_crypto_cbc_encrypt (dev->cipher, data + i, data + i,\n-\t\t\t\t\t   (1U << dev->log_sector_size), iv);\n+\t\t\t\t\t   ((grub_size_t) 1 << dev->log_sector_size), iv);\n \t  else\n \t    err = grub_crypto_cbc_decrypt (dev->cipher, data + i, data + i,\n-\t\t\t\t\t   (1U << dev->log_sector_size), iv);\n+\t\t\t\t\t   ((grub_size_t) 1 << dev->log_sector_size), iv);\n \t  if (err)\n \t    return err;\n \t  break;\n@@ -322,10 +322,10 @@ grub_cryptodisk_endecrypt (struct grub_cryptodisk *dev,\n \tcase GRUB_CRYPTODISK_MODE_PCBC:\n \t  if (do_encrypt)\n \t    err = grub_crypto_pcbc_encrypt (dev->cipher, data + i, data + i,\n-\t\t\t\t\t    (1U << dev->log_sector_size), iv);\n+\t\t\t\t\t    ((grub_size_t) 1 << dev->log_sector_size), iv);\n \t  else\n \t    err = grub_crypto_pcbc_decrypt (dev->cipher, data + i, data + i,\n-\t\t\t\t\t    (1U << dev->log_sector_size), iv);\n+\t\t\t\t\t    ((grub_size_t) 1 << dev->log_sector_size), iv);\n \t  if (err)\n \t    return err;\n \t  break;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0067-hfsplus-Check-that-the-volume-name-length-is-valid.patch",
    "content": "From 2298f6e0d951251bb9ca97d891d1bc8b74515f8c Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Fri, 23 Oct 2020 17:09:31 +0000\nSubject: [PATCH] hfsplus: Check that the volume name length is valid\n\nHFS+ documentation suggests that the maximum filename and volume name is\n255 Unicode characters in length.\n\nSo, when converting from big-endian to little-endian, we should ensure\nthat the name of the volume has a length that is between 0 and 255,\ninclusive.\n\nFixes: CID 73641\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/hfsplus.c | 9 +++++++++\n 1 file changed, 9 insertions(+)\n\ndiff --git a/grub-core/fs/hfsplus.c b/grub-core/fs/hfsplus.c\nindex 9c4e4c8..8fe7c12 100644\n--- a/grub-core/fs/hfsplus.c\n+++ b/grub-core/fs/hfsplus.c\n@@ -1012,6 +1012,15 @@ grub_hfsplus_label (grub_device_t device, char **label)\n     grub_hfsplus_btree_recptr (&data->catalog_tree, node, ptr);\n \n   label_len = grub_be_to_cpu16 (catkey->namelen);\n+\n+  /* Ensure that the length is >= 0. */\n+  if (label_len < 0)\n+    label_len = 0;\n+\n+  /* Ensure label length is at most 255 Unicode characters. */\n+  if (label_len > 255)\n+    label_len = 255;\n+\n   label_name = grub_calloc (label_len, sizeof (*label_name));\n   if (!label_name)\n     {\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0068-zfs-Fix-possible-negative-shift-operation.patch",
    "content": "From a02091834d3e167320d8a262ff04b8e83c5e616d Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Tue, 24 Nov 2020 16:41:49 +0000\nSubject: [PATCH] zfs: Fix possible negative shift operation\n\nWhile it is possible for the return value from zfs_log2() to be zero\n(0), it is quite unlikely, given that the previous assignment to blksz\nis shifted up by SPA_MINBLOCKSHIFT (9) before 9 is subtracted at the\nassignment to epbs.\n\nBut, while unlikely during a normal operation, it may be that a carefully\ncrafted ZFS filesystem could result in a zero (0) value to the\ndn_datalbkszsec field, which means that the shift left does nothing\nand assigns zero (0) to blksz, resulting in a negative epbs value.\n\nFixes: CID 73608\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/zfs/zfs.c | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c\nindex 36d0373..0c42cba 100644\n--- a/grub-core/fs/zfs/zfs.c\n+++ b/grub-core/fs/zfs/zfs.c\n@@ -2667,6 +2667,11 @@ dnode_get (dnode_end_t * mdn, grub_uint64_t objnum, grub_uint8_t type,\n   blksz = grub_zfs_to_cpu16 (mdn->dn.dn_datablkszsec, \n \t\t\t     mdn->endian) << SPA_MINBLOCKSHIFT;\n   epbs = zfs_log2 (blksz) - DNODE_SHIFT;\n+\n+  /* While this should never happen, we should check that epbs is not negative. */\n+  if (epbs < 0)\n+    epbs = 0;\n+\n   blkid = objnum >> epbs;\n   idx = objnum & ((1 << epbs) - 1);\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0069-zfs-Fix-resource-leaks-while-constructing-path.patch",
    "content": "From 89bdab965805e8d54d7f75349024e1a11cbe2eb8 Mon Sep 17 00:00:00 2001\nFrom: Paulo Flabiano Smorigo <pfsmorigo@canonical.com>\nDate: Mon, 14 Dec 2020 18:54:49 -0300\nSubject: [PATCH] zfs: Fix resource leaks while constructing path\n\nThere are several exit points in dnode_get_path() that are causing possible\nmemory leaks.\n\nIn the while(1) the correct exit mechanism should not be to do a direct return,\nbut to instead break out of the loop, setting err first if it is not already set.\n\nThe reason behind this is that the dnode_path is a linked list, and while doing\nthrough this loop, it is being allocated and built up - the only way to\ncorrectly unravel it is to traverse it, which is what is being done at the end\nof the function outside of the loop.\n\nSeveral of the existing exit points correctly did a break, but not all so this\nchange makes that more consistent and should resolve the leaking of memory as\nfound by Coverity.\n\nFixes: CID 73741\n\nSigned-off-by: Paulo Flabiano Smorigo <pfsmorigo@canonical.com>\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/zfs/zfs.c | 30 +++++++++++++++++++++---------\n 1 file changed, 21 insertions(+), 9 deletions(-)\n\ndiff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c\nindex 0c42cba..9087a72 100644\n--- a/grub-core/fs/zfs/zfs.c\n+++ b/grub-core/fs/zfs/zfs.c\n@@ -2836,8 +2836,8 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,\n \n       if (dnode_path->dn.dn.dn_type != DMU_OT_DIRECTORY_CONTENTS)\n \t{\n-\t  grub_free (path_buf);\n-\t  return grub_error (GRUB_ERR_BAD_FILE_TYPE, N_(\"not a directory\"));\n+\t  err = grub_error (GRUB_ERR_BAD_FILE_TYPE, N_(\"not a directory\"));\n+\t  break;\n \t}\n       err = zap_lookup (&(dnode_path->dn), cname, &objnum,\n \t\t\tdata, subvol->case_insensitive);\n@@ -2879,11 +2879,18 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,\n \t\t       << SPA_MINBLOCKSHIFT);\n \n \t      if (blksz == 0)\n-\t\treturn grub_error(GRUB_ERR_BAD_FS, \"0-sized block\");\n+                {\n+                  err = grub_error (GRUB_ERR_BAD_FS, \"0-sized block\");\n+                  break;\n+                }\n \n \t      sym_value = grub_malloc (sym_sz);\n \t      if (!sym_value)\n-\t\treturn grub_errno;\n+\t\t{\n+\t\t  err = grub_errno;\n+\t\t  break;\n+\t\t}\n+\n \t      for (block = 0; block < (sym_sz + blksz - 1) / blksz; block++)\n \t\t{\n \t\t  void *t;\n@@ -2893,7 +2900,7 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,\n \t\t  if (err)\n \t\t    {\n \t\t      grub_free (sym_value);\n-\t\t      return err;\n+\t\t      break;\n \t\t    }\n \n \t\t  movesize = sym_sz - block * blksz;\n@@ -2903,6 +2910,8 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,\n \t\t  grub_memcpy (sym_value + block * blksz, t, movesize);\n \t\t  grub_free (t);\n \t\t}\n+\t\tif (err)\n+\t\t  break;\n \t      free_symval = 1;\n \t    }\t    \n \t  path = path_buf = grub_malloc (sym_sz + grub_strlen (oldpath) + 1);\n@@ -2911,7 +2920,8 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,\n \t      grub_free (oldpathbuf);\n \t      if (free_symval)\n \t\tgrub_free (sym_value);\n-\t      return grub_errno;\n+\t      err = grub_errno;\n+\t      break;\n \t    }\n \t  grub_memcpy (path, sym_value, sym_sz);\n \t  if (free_symval)\n@@ -2949,11 +2959,12 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,\n \t      \n \t      err = zio_read (bp, dnode_path->dn.endian, &sahdrp, NULL, data);\n \t      if (err)\n-\t\treturn err;\n+\t        break;\n \t    }\n \t  else\n \t    {\n-\t      return grub_error (GRUB_ERR_BAD_FS, \"filesystem is corrupt\");\n+\t      err = grub_error (GRUB_ERR_BAD_FS, \"filesystem is corrupt\");\n+\t      break;\n \t    }\n \n \t  hdrsize = SA_HDR_SIZE (((sa_hdr_phys_t *) sahdrp));\n@@ -2974,7 +2985,8 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,\n \t      if (!path_buf)\n \t\t{\n \t\t  grub_free (oldpathbuf);\n-\t\t  return grub_errno;\n+\t\t  err = grub_errno;\n+\t\t  break;\n \t\t}\n \t      grub_memcpy (path, sym_value, sym_sz);\n \t      path [sym_sz] = 0;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0070-zfs-Fix-possible-integer-overflows.patch",
    "content": "From 302c12ff5714bc455949117c1c9548ccb324d55b Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Tue, 8 Dec 2020 22:17:04 +0000\nSubject: [PATCH] zfs: Fix possible integer overflows\n\nIn all cases the problem is that the value being acted upon by\na left-shift is a 32-bit number which is then being used in the\ncontext of a 64-bit number.\n\nTo avoid overflow we ensure that the number being shifted is 64-bit\nbefore the shift is done.\n\nFixes: CID 73684, CID 73695, CID 73764\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/zfs/zfs.c | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c\nindex 9087a72..b078ccc 100644\n--- a/grub-core/fs/zfs/zfs.c\n+++ b/grub-core/fs/zfs/zfs.c\n@@ -564,7 +564,7 @@ find_bestub (uberblock_phys_t * ub_array,\n       ubptr = (uberblock_phys_t *) ((grub_properly_aligned_t *) ub_array\n \t\t\t\t    + ((i << ub_shift)\n \t\t\t\t       / sizeof (grub_properly_aligned_t)));\n-      err = uberblock_verify (ubptr, offset, 1 << ub_shift);\n+      err = uberblock_verify (ubptr, offset, (grub_size_t) 1 << ub_shift);\n       if (err)\n \t{\n \t  grub_errno = GRUB_ERR_NONE;\n@@ -1543,7 +1543,7 @@ read_device (grub_uint64_t offset, struct grub_zfs_device_desc *desc,\n \n \t    high = grub_divmod64 ((offset >> desc->ashift) + c,\n \t\t\t\t  desc->n_children, &devn);\n-\t    csize = bsize << desc->ashift;\n+\t    csize = (grub_size_t) bsize << desc->ashift;\n \t    if (csize > len)\n \t      csize = len;\n \n@@ -1635,8 +1635,8 @@ read_device (grub_uint64_t offset, struct grub_zfs_device_desc *desc,\n \n \t    while (len > 0)\n \t      {\n-\t\tgrub_size_t csize;\n-\t\tcsize = ((s / (desc->n_children - desc->nparity))\n+\t\tgrub_size_t csize = s;\n+\t\tcsize = ((csize / (desc->n_children - desc->nparity))\n \t\t\t << desc->ashift);\n \t\tif (csize > len)\n \t\t  csize = len;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0071-zfsinfo-Correct-a-check-for-error-allocating-memory.patch",
    "content": "From 7aab03418ec6a9b991aa44416cb2585aff4e7972 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Thu, 26 Nov 2020 10:56:45 +0000\nSubject: [PATCH] zfsinfo: Correct a check for error allocating memory\n\nWhile arguably the check for grub_errno is correct, we should really be\nchecking the return value from the function since it is always possible\nthat grub_errno was set elsewhere, making this code behave incorrectly.\n\nFixes: CID 73668\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/zfs/zfsinfo.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/fs/zfs/zfsinfo.c b/grub-core/fs/zfs/zfsinfo.c\nindex c8a28ac..bf29180 100644\n--- a/grub-core/fs/zfs/zfsinfo.c\n+++ b/grub-core/fs/zfs/zfsinfo.c\n@@ -358,8 +358,8 @@ grub_cmd_zfs_bootfs (grub_command_t cmd __attribute__ ((unused)), int argc,\n     return grub_error (GRUB_ERR_BAD_ARGUMENT, N_(\"one argument expected\"));\n \n   devname = grub_file_get_device_name (args[0]);\n-  if (grub_errno)\n-    return grub_errno;\n+  if (devname == NULL)\n+    return GRUB_ERR_OUT_OF_MEMORY;\n \n   dev = grub_device_open (devname);\n   grub_free (devname);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0072-affs-Fix-memory-leaks.patch",
    "content": "From 178ac5107389f8e5b32489d743d6824a5ebf342a Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Thu, 26 Nov 2020 12:48:07 +0000\nSubject: [PATCH] affs: Fix memory leaks\n\nThe node structure reference is being allocated but not freed if it\nreaches the end of the function. If any of the hooks had returned\na non-zero value, then node would have been copied in to the context\nreference, but otherwise node is not stored and should be freed.\n\nSimilarly, the call to grub_affs_create_node() replaces the allocated\nmemory in node with a newly allocated structure, leaking the existing\nmemory pointed by node.\n\nFinally, when dir->parent is set, then we again replace node with newly\nallocated memory, which seems unnecessary when we copy in the values\nfrom dir->parent immediately after.\n\nFixes: CID 73759\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/affs.c | 18 ++++++++----------\n 1 file changed, 8 insertions(+), 10 deletions(-)\n\ndiff --git a/grub-core/fs/affs.c b/grub-core/fs/affs.c\nindex 220b371..230e26a 100644\n--- a/grub-core/fs/affs.c\n+++ b/grub-core/fs/affs.c\n@@ -400,12 +400,12 @@ grub_affs_iterate_dir (grub_fshelp_node_t dir,\n {\n   unsigned int i;\n   struct grub_affs_file file;\n-  struct grub_fshelp_node *node = 0;\n+  struct grub_fshelp_node *node, *orig_node;\n   struct grub_affs_data *data = dir->data;\n   grub_uint32_t *hashtable;\n \n   /* Create the directory entries for `.' and `..'.  */\n-  node = grub_zalloc (sizeof (*node));\n+  node = orig_node = grub_zalloc (sizeof (*node));\n   if (!node)\n     return 1;\n     \n@@ -414,9 +414,6 @@ grub_affs_iterate_dir (grub_fshelp_node_t dir,\n     return 1;\n   if (dir->parent)\n     {\n-      node = grub_zalloc (sizeof (*node));\n-      if (!node)\n-\treturn 1;\n       *node = *dir->parent;\n       if (hook (\"..\", GRUB_FSHELP_DIR, node, hook_data))\n \treturn 1;\n@@ -456,17 +453,18 @@ grub_affs_iterate_dir (grub_fshelp_node_t dir,\n \n \t  if (grub_affs_create_node (dir, hook, hook_data, &node, &hashtable,\n \t\t\t\t     next, &file))\n-\t    return 1;\n+\t    {\n+\t      /* Node has been replaced in function. */\n+\t      grub_free (orig_node);\n+\t      return 1;\n+\t    }\n \n \t  next = grub_be_to_cpu32 (file.next);\n \t}\n     }\n \n-  grub_free (hashtable);\n-  return 0;\n-\n  fail:\n-  grub_free (node);\n+  grub_free (orig_node);\n   grub_free (hashtable);\n   return 0;\n }\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0073-libgcrypt-mpi-Fix-possible-unintended-sign-extension.patch",
    "content": "From e8814c811132a70f9b55418f7567378a34ad3883 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Tue, 3 Nov 2020 16:43:37 +0000\nSubject: [PATCH] libgcrypt/mpi: Fix possible unintended sign extension\n\nThe array of unsigned char gets promoted to a signed 32-bit int before\nit is finally promoted to a size_t. There is the possibility that this\nmay result in the signed-bit being set for the intermediate signed\n32-bit int. We should ensure that the promotion is to the correct type\nbefore we bitwise-OR the values.\n\nFixes: CID 96697\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/lib/libgcrypt-grub/mpi/mpicoder.c | 2 +-\n grub-core/lib/libgcrypt/mpi/mpicoder.c      | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/lib/libgcrypt-grub/mpi/mpicoder.c b/grub-core/lib/libgcrypt-grub/mpi/mpicoder.c\nindex 3d55dfc..faf1cd6 100644\n--- a/grub-core/lib/libgcrypt-grub/mpi/mpicoder.c\n+++ b/grub-core/lib/libgcrypt-grub/mpi/mpicoder.c\n@@ -460,7 +460,7 @@ gcry_mpi_scan (struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,\n       if (len && len < 4)\n         return gcry_error (GPG_ERR_TOO_SHORT);\n \n-      n = (s[0] << 24 | s[1] << 16 | s[2] << 8 | s[3]);\n+      n = ((size_t)s[0] << 24 | (size_t)s[1] << 16 | (size_t)s[2] << 8 | (size_t)s[3]);\n       s += 4;\n       if (len)\n         len -= 4;\ndiff --git a/grub-core/lib/libgcrypt/mpi/mpicoder.c b/grub-core/lib/libgcrypt/mpi/mpicoder.c\nindex a3435ed..7ecad27 100644\n--- a/grub-core/lib/libgcrypt/mpi/mpicoder.c\n+++ b/grub-core/lib/libgcrypt/mpi/mpicoder.c\n@@ -458,7 +458,7 @@ gcry_mpi_scan (struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,\n       if (len && len < 4)\n         return gcry_error (GPG_ERR_TOO_SHORT);\n \n-      n = (s[0] << 24 | s[1] << 16 | s[2] << 8 | s[3]);\n+      n = ((size_t)s[0] << 24 | (size_t)s[1] << 16 | (size_t)s[2] << 8 | (size_t)s[3]);\n       s += 4;\n       if (len)\n         len -= 4;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0074-libgcrypt-mpi-Fix-possible-NULL-dereference.patch",
    "content": "From ae0f3fabeba7b393113d5dc185b6aff9b728136d Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Thu, 26 Nov 2020 10:41:54 +0000\nSubject: [PATCH] libgcrypt/mpi: Fix possible NULL dereference\n\nThe code in gcry_mpi_scan() assumes that buffer is not NULL, but there\nis no explicit check for that, so we add one.\n\nFixes: CID 73757\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/lib/libgcrypt-grub/mpi/mpicoder.c | 3 +++\n grub-core/lib/libgcrypt/mpi/mpicoder.c      | 3 +++\n 2 files changed, 6 insertions(+)\n\ndiff --git a/grub-core/lib/libgcrypt-grub/mpi/mpicoder.c b/grub-core/lib/libgcrypt-grub/mpi/mpicoder.c\nindex faf1cd6..e734dcf 100644\n--- a/grub-core/lib/libgcrypt-grub/mpi/mpicoder.c\n+++ b/grub-core/lib/libgcrypt-grub/mpi/mpicoder.c\n@@ -381,6 +381,9 @@ gcry_mpi_scan (struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,\n   unsigned int len;\n   int secure = (buffer && gcry_is_secure (buffer));\n \n+  if (!buffer)\n+    return gcry_error (GPG_ERR_INV_ARG);\n+\n   if (format == GCRYMPI_FMT_SSH)\n     len = 0;\n   else\ndiff --git a/grub-core/lib/libgcrypt/mpi/mpicoder.c b/grub-core/lib/libgcrypt/mpi/mpicoder.c\nindex 7ecad27..6fe3891 100644\n--- a/grub-core/lib/libgcrypt/mpi/mpicoder.c\n+++ b/grub-core/lib/libgcrypt/mpi/mpicoder.c\n@@ -379,6 +379,9 @@ gcry_mpi_scan (struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,\n   unsigned int len;\n   int secure = (buffer && gcry_is_secure (buffer));\n \n+  if (!buffer)\n+    return gcry_error (GPG_ERR_INV_ARG);\n+\n   if (format == GCRYMPI_FMT_SSH)\n     len = 0;\n   else\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0075-syslinux-Fix-memory-leak-while-parsing.patch",
    "content": "From 95bc016dba94cab3d398dd74160665915cd08ad6 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Thu, 26 Nov 2020 15:31:53 +0000\nSubject: [PATCH] syslinux: Fix memory leak while parsing\n\nIn syslinux_parse_real() the 2 points where return is being called\ndidn't release the memory stored in buf which is no longer required.\n\nFixes: CID 176634\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/lib/syslinux_parse.c | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/grub-core/lib/syslinux_parse.c b/grub-core/lib/syslinux_parse.c\nindex 4afa992..3acc6b4 100644\n--- a/grub-core/lib/syslinux_parse.c\n+++ b/grub-core/lib/syslinux_parse.c\n@@ -737,7 +737,10 @@ syslinux_parse_real (struct syslinux_menu *menu)\n \t\t  && grub_strncasecmp (\"help\", ptr3, ptr4 - ptr3) == 0))\n \t    {\n \t      if (helptext (ptr5, file, menu))\n-\t\treturn 1;\n+\t\t{\n+\t\t  grub_free (buf);\n+\t\t  return 1;\n+\t\t}\n \t      continue;\n \t    }\n \n@@ -757,6 +760,7 @@ syslinux_parse_real (struct syslinux_menu *menu)\n     }\n  fail:\n   grub_file_close (file);\n+  grub_free (buf);\n   return err;\n }\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0076-normal-completion-Fix-leaking-of-memory-when-process.patch",
    "content": "From 9213575b7a95b514bce80be5964a28d407d7d56d Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Fri, 4 Dec 2020 18:56:48 +0000\nSubject: [PATCH] normal/completion: Fix leaking of memory when processing a\n completion\n\nIt is possible for the code to reach the end of the function without\nfreeing the memory allocated to argv and argc still to be 0.\n\nWe should always call grub_free(argv). The grub_free() will handle\na NULL argument correctly if it reaches that code without the memory\nbeing allocated.\n\nFixes: CID 96672\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/normal/completion.c | 10 ++++------\n 1 file changed, 4 insertions(+), 6 deletions(-)\n\ndiff --git a/grub-core/normal/completion.c b/grub-core/normal/completion.c\nindex 5961028..46e473c 100644\n--- a/grub-core/normal/completion.c\n+++ b/grub-core/normal/completion.c\n@@ -400,8 +400,8 @@ char *\n grub_normal_do_completion (char *buf, int *restore,\n \t\t\t   void (*hook) (const char *, grub_completion_type_t, int))\n {\n-  int argc;\n-  char **argv;\n+  int argc = 0;\n+  char **argv = NULL;\n \n   /* Initialize variables.  */\n   match = 0;\n@@ -516,10 +516,8 @@ grub_normal_do_completion (char *buf, int *restore,\n \n  fail:\n   if (argc != 0)\n-    {\n-      grub_free (argv[0]);\n-      grub_free (argv);\n-    }\n+    grub_free (argv[0]);\n+  grub_free (argv);\n   grub_free (match);\n   grub_errno = GRUB_ERR_NONE;\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0077-commands-hashsum-Fix-a-memory-leak.patch",
    "content": "From 8b6f528e52e18b7a69f90b8dc3671d7b1147d9f3 Mon Sep 17 00:00:00 2001\nFrom: Chris Coulson <chris.coulson@canonical.com>\nDate: Tue, 1 Dec 2020 23:41:24 +0000\nSubject: [PATCH] commands/hashsum: Fix a memory leak\n\ncheck_list() uses grub_file_getline(), which allocates a buffer.\nIf the hash list file contains invalid lines, the function leaks\nthis buffer when it returns an error.\n\nFixes: CID 176635\n\nSigned-off-by: Chris Coulson <chris.coulson@canonical.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/commands/hashsum.c | 15 ++++++++++++---\n 1 file changed, 12 insertions(+), 3 deletions(-)\n\ndiff --git a/grub-core/commands/hashsum.c b/grub-core/commands/hashsum.c\nindex 456ba90..b8a22b0 100644\n--- a/grub-core/commands/hashsum.c\n+++ b/grub-core/commands/hashsum.c\n@@ -128,11 +128,17 @@ check_list (const gcry_md_spec_t *hash, const char *hashfilename,\n \t  high = hextoval (*p++);\n \t  low = hextoval (*p++);\n \t  if (high < 0 || low < 0)\n-\t    return grub_error (GRUB_ERR_BAD_FILE_TYPE, \"invalid hash list\");\n+\t    {\n+\t      grub_free (buf);\n+\t      return grub_error (GRUB_ERR_BAD_FILE_TYPE, \"invalid hash list\");\n+\t    }\n \t  expected[i] = (high << 4) | low;\n \t}\n       if ((p[0] != ' ' && p[0] != '\\t') || (p[1] != ' ' && p[1] != '\\t'))\n-\treturn grub_error (GRUB_ERR_BAD_FILE_TYPE, \"invalid hash list\");\n+\t{\n+\t  grub_free (buf);\n+\t  return grub_error (GRUB_ERR_BAD_FILE_TYPE, \"invalid hash list\");\n+\t}\n       p += 2;\n       if (prefix)\n \t{\n@@ -140,7 +146,10 @@ check_list (const gcry_md_spec_t *hash, const char *hashfilename,\n \t  \n \t  filename = grub_xasprintf (\"%s/%s\", prefix, p);\n \t  if (!filename)\n-\t    return grub_errno;\n+\t    {\n+\t      grub_free (buf);\n+\t      return grub_errno;\n+\t    }\n \t  file = grub_file_open (filename, GRUB_FILE_TYPE_TO_HASH\n \t\t\t\t | (!uncompress ? GRUB_FILE_TYPE_NO_DECOMPRESS\n \t\t\t\t    : GRUB_FILE_TYPE_NONE));\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0079-video-efi_gop-Remove-unnecessary-return-value-of-gru.patch",
    "content": "From fc5951d3b1616055ef81a019a5affc09d13344d0 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Tue, 8 Dec 2020 21:14:31 +0000\nSubject: [PATCH] video/efi_gop: Remove unnecessary return value of\n grub_video_gop_fill_mode_info()\n\nThe return value of grub_video_gop_fill_mode_info() is never able to be\nanything other than GRUB_ERR_NONE. So, rather than continue to return\na value and checking it each time, it is more correct to redefine the\nfunction to not return anything and remove checks of its return value\naltogether.\n\nFixes: CID 96701\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/video/efi_gop.c | 25 ++++++-------------------\n 1 file changed, 6 insertions(+), 19 deletions(-)\n\ndiff --git a/grub-core/video/efi_gop.c b/grub-core/video/efi_gop.c\nindex 7f9d1c2..db2ee98 100644\n--- a/grub-core/video/efi_gop.c\n+++ b/grub-core/video/efi_gop.c\n@@ -227,7 +227,7 @@ grub_video_gop_fill_real_mode_info (unsigned mode,\n   return GRUB_ERR_NONE;\n }\n \n-static grub_err_t\n+static void\n grub_video_gop_fill_mode_info (unsigned mode,\n \t\t\t       struct grub_efi_gop_mode_info *in,\n \t\t\t       struct grub_video_mode_info *out)\n@@ -252,8 +252,6 @@ grub_video_gop_fill_mode_info (unsigned mode,\n   out->blit_format = GRUB_VIDEO_BLIT_FORMAT_BGRA_8888;\n   out->mode_type |= (GRUB_VIDEO_MODE_TYPE_DOUBLE_BUFFERED\n \t\t     | GRUB_VIDEO_MODE_TYPE_UPDATING_SWAP);\n-\n-  return GRUB_ERR_NONE;\n }\n \n static int\n@@ -266,7 +264,6 @@ grub_video_gop_iterate (int (*hook) (const struct grub_video_mode_info *info, vo\n       grub_efi_uintn_t size;\n       grub_efi_status_t status;\n       struct grub_efi_gop_mode_info *info = NULL;\n-      grub_err_t err;\n       struct grub_video_mode_info mode_info;\n \t \n       status = efi_call_4 (gop->query_mode, gop, mode, &size, &info);\n@@ -277,12 +274,7 @@ grub_video_gop_iterate (int (*hook) (const struct grub_video_mode_info *info, vo\n \t  continue;\n \t}\n \n-      err = grub_video_gop_fill_mode_info (mode, info, &mode_info);\n-      if (err)\n-\t{\n-\t  grub_errno = GRUB_ERR_NONE;\n-\t  continue;\n-\t}\n+      grub_video_gop_fill_mode_info (mode, info, &mode_info);\n       if (hook (&mode_info, hook_arg))\n \treturn 1;\n     }\n@@ -466,13 +458,8 @@ grub_video_gop_setup (unsigned int width, unsigned int height,\n \n   info = gop->mode->info;\n \n-  err = grub_video_gop_fill_mode_info (gop->mode->mode, info,\n-\t\t\t\t       &framebuffer.mode_info);\n-  if (err)\n-    {\n-      grub_dprintf (\"video\", \"GOP: couldn't fill mode info\\n\");\n-      return err;\n-    }\n+  grub_video_gop_fill_mode_info (gop->mode->mode, info,\n+\t\t\t\t &framebuffer.mode_info);\n \n   framebuffer.ptr = (void *) (grub_addr_t) gop->mode->fb_base;\n   framebuffer.offscreen\n@@ -486,8 +473,8 @@ grub_video_gop_setup (unsigned int width, unsigned int height,\n     {\n       grub_dprintf (\"video\", \"GOP: couldn't allocate shadow\\n\");\n       grub_errno = 0;\n-      err = grub_video_gop_fill_mode_info (gop->mode->mode, info,\n-\t\t\t\t\t   &framebuffer.mode_info);\n+      grub_video_gop_fill_mode_info (gop->mode->mode, info,\n+\t\t\t\t     &framebuffer.mode_info);\n       buffer = framebuffer.ptr;\n     }\n     \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0080-video-fb-fbfill-Fix-potential-integer-overflow.patch",
    "content": "From 7ce3259f67ac2cd93acb0ec0080c24b3b69e66c6 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Wed, 4 Nov 2020 15:10:51 +0000\nSubject: [PATCH] video/fb/fbfill: Fix potential integer overflow\n\nThe multiplication of 2 unsigned 32-bit integers may overflow before\npromotion to unsigned 64-bit. We should ensure that the multiplication\nis done with overflow detection. Additionally, use grub_sub() for\nsubtraction.\n\nFixes: CID 73640, CID 73697, CID 73702, CID 73823\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nSigned-off-by: Marco A Benatto <mbenatto@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/video/fb/fbfill.c | 17 +++++++++++++----\n 1 file changed, 13 insertions(+), 4 deletions(-)\n\ndiff --git a/grub-core/video/fb/fbfill.c b/grub-core/video/fb/fbfill.c\nindex 11816d0..a37acd1 100644\n--- a/grub-core/video/fb/fbfill.c\n+++ b/grub-core/video/fb/fbfill.c\n@@ -31,6 +31,7 @@\n #include <grub/fbfill.h>\n #include <grub/fbutil.h>\n #include <grub/types.h>\n+#include <grub/safemath.h>\n #include <grub/video.h>\n \n /* Generic filler that works for every supported mode.  */\n@@ -61,7 +62,9 @@ grub_video_fbfill_direct32 (struct grub_video_fbblit_info *dst,\n \n   /* Calculate the number of bytes to advance from the end of one line\n      to the beginning of the next line.  */\n-  rowskip = dst->mode_info->pitch - dst->mode_info->bytes_per_pixel * width;\n+  if (grub_mul (dst->mode_info->bytes_per_pixel, width, &rowskip) ||\n+      grub_sub (dst->mode_info->pitch, rowskip, &rowskip))\n+    return;\n \n   /* Get the start address.  */\n   dstptr = grub_video_fb_get_video_ptr (dst, x, y);\n@@ -98,7 +101,9 @@ grub_video_fbfill_direct24 (struct grub_video_fbblit_info *dst,\n #endif\n   /* Calculate the number of bytes to advance from the end of one line\n      to the beginning of the next line.  */\n-  rowskip = dst->mode_info->pitch - dst->mode_info->bytes_per_pixel * width;\n+  if (grub_mul (dst->mode_info->bytes_per_pixel, width, &rowskip) ||\n+      grub_sub (dst->mode_info->pitch, rowskip, &rowskip))\n+    return;\n \n   /* Get the start address.  */\n   dstptr = grub_video_fb_get_video_ptr (dst, x, y);\n@@ -131,7 +136,9 @@ grub_video_fbfill_direct16 (struct grub_video_fbblit_info *dst,\n \n   /* Calculate the number of bytes to advance from the end of one line\n      to the beginning of the next line.  */\n-  rowskip = (dst->mode_info->pitch - dst->mode_info->bytes_per_pixel * width);\n+  if (grub_mul (dst->mode_info->bytes_per_pixel, width, &rowskip) ||\n+      grub_sub (dst->mode_info->pitch, rowskip, &rowskip))\n+    return;\n \n   /* Get the start address.  */\n   dstptr = grub_video_fb_get_video_ptr (dst, x, y);\n@@ -161,7 +168,9 @@ grub_video_fbfill_direct8 (struct grub_video_fbblit_info *dst,\n \n   /* Calculate the number of bytes to advance from the end of one line\n      to the beginning of the next line.  */\n-  rowskip = dst->mode_info->pitch - dst->mode_info->bytes_per_pixel * width;\n+  if (grub_mul (dst->mode_info->bytes_per_pixel, width, &rowskip) ||\n+      grub_sub (dst->mode_info->pitch, rowskip, &rowskip))\n+    return;\n \n   /* Get the start address.  */\n   dstptr = grub_video_fb_get_video_ptr (dst, x, y);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0081-video-fb-video_fb-Fix-multiple-integer-overflows.patch",
    "content": "From 08e098b1dbf01e96376f594b337491bc4cfa48dd Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Wed, 4 Nov 2020 14:43:44 +0000\nSubject: [PATCH] video/fb/video_fb: Fix multiple integer overflows\n\nThe calculation of the unsigned 64-bit value is being generated by\nmultiplying 2, signed or unsigned, 32-bit integers which may overflow\nbefore promotion to unsigned 64-bit. Fix all of them.\n\nFixes: CID 73703, CID 73767, CID 73833\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/video/fb/video_fb.c | 52 ++++++++++++++++++++++++++++++-------------\n 1 file changed, 36 insertions(+), 16 deletions(-)\n\ndiff --git a/grub-core/video/fb/video_fb.c b/grub-core/video/fb/video_fb.c\nindex 1a602c8..1c9a138 100644\n--- a/grub-core/video/fb/video_fb.c\n+++ b/grub-core/video/fb/video_fb.c\n@@ -25,6 +25,7 @@\n #include <grub/fbutil.h>\n #include <grub/bitmap.h>\n #include <grub/dl.h>\n+#include <grub/safemath.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -1417,15 +1418,23 @@ doublebuf_blit_update_screen (void)\n {\n   if (framebuffer.current_dirty.first_line\n       <= framebuffer.current_dirty.last_line)\n-    grub_memcpy ((char *) framebuffer.pages[0]\n-\t\t + framebuffer.current_dirty.first_line\n-\t\t * framebuffer.back_target->mode_info.pitch,\n-\t\t (char *) framebuffer.back_target->data\n-\t\t + framebuffer.current_dirty.first_line\n-\t\t * framebuffer.back_target->mode_info.pitch,\n-\t\t framebuffer.back_target->mode_info.pitch\n-\t\t * (framebuffer.current_dirty.last_line\n-\t\t    - framebuffer.current_dirty.first_line));\n+    {\n+      grub_size_t copy_size;\n+\n+      if (grub_sub (framebuffer.current_dirty.last_line,\n+\t\t    framebuffer.current_dirty.first_line, &copy_size) ||\n+\t  grub_mul (framebuffer.back_target->mode_info.pitch, copy_size, &copy_size))\n+\t{\n+\t  /* Shouldn't happen, but if it does we've a bug. */\n+\t  return GRUB_ERR_BUG;\n+\t}\n+\n+      grub_memcpy ((char *) framebuffer.pages[0] + framebuffer.current_dirty.first_line *\n+\t\t   framebuffer.back_target->mode_info.pitch,\n+\t\t   (char *) framebuffer.back_target->data + framebuffer.current_dirty.first_line *\n+\t\t   framebuffer.back_target->mode_info.pitch,\n+\t\t   copy_size);\n+    }\n   framebuffer.current_dirty.first_line\n     = framebuffer.back_target->mode_info.height;\n   framebuffer.current_dirty.last_line = 0;\n@@ -1439,7 +1448,7 @@ grub_video_fb_doublebuf_blit_init (struct grub_video_fbrender_target **back,\n \t\t\t\t   volatile void *framebuf)\n {\n   grub_err_t err;\n-  grub_size_t page_size = mode_info.pitch * mode_info.height;\n+  grub_size_t page_size = (grub_size_t) mode_info.pitch * mode_info.height;\n \n   framebuffer.offscreen_buffer = grub_zalloc (page_size);\n   if (! framebuffer.offscreen_buffer)\n@@ -1482,12 +1491,23 @@ doublebuf_pageflipping_update_screen (void)\n     last_line = framebuffer.previous_dirty.last_line;\n \n   if (first_line <= last_line)\n-    grub_memcpy ((char *) framebuffer.pages[framebuffer.render_page]\n-\t\t + first_line * framebuffer.back_target->mode_info.pitch,\n-\t\t (char *) framebuffer.back_target->data\n-\t\t + first_line * framebuffer.back_target->mode_info.pitch,\n-\t\t framebuffer.back_target->mode_info.pitch\n-\t\t * (last_line - first_line));\n+    {\n+      grub_size_t copy_size;\n+\n+      if (grub_sub (last_line, first_line, &copy_size) ||\n+\t  grub_mul (framebuffer.back_target->mode_info.pitch, copy_size, &copy_size))\n+\t{\n+\t  /* Shouldn't happen, but if it does we've a bug. */\n+\t  return GRUB_ERR_BUG;\n+\t}\n+\n+      grub_memcpy ((char *) framebuffer.pages[framebuffer.render_page] + first_line *\n+\t\t   framebuffer.back_target->mode_info.pitch,\n+\t\t   (char *) framebuffer.back_target->data + first_line *\n+\t\t   framebuffer.back_target->mode_info.pitch,\n+\t\t   copy_size);\n+    }\n+\n   framebuffer.previous_dirty = framebuffer.current_dirty;\n   framebuffer.current_dirty.first_line\n     = framebuffer.back_target->mode_info.height;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0082-video-fb-video_fb-Fix-possible-integer-overflow.patch",
    "content": "From 08413f2f4edec0e2d9bf15f836f6ee5ca2e379cb Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Fri, 4 Dec 2020 14:51:30 +0000\nSubject: [PATCH] video/fb/video_fb: Fix possible integer overflow\n\nIt is minimal possibility that the values being used here will overflow.\nSo, change the code to use the safemath function grub_mul() to ensure\nthat doesn't happen.\n\nFixes: CID 73761\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/video/fb/video_fb.c | 8 +++++++-\n 1 file changed, 7 insertions(+), 1 deletion(-)\n\ndiff --git a/grub-core/video/fb/video_fb.c b/grub-core/video/fb/video_fb.c\nindex 1c9a138..ae6b89f 100644\n--- a/grub-core/video/fb/video_fb.c\n+++ b/grub-core/video/fb/video_fb.c\n@@ -1537,7 +1537,13 @@ doublebuf_pageflipping_init (struct grub_video_mode_info *mode_info,\n \t\t\t     volatile void *page1_ptr)\n {\n   grub_err_t err;\n-  grub_size_t page_size = mode_info->pitch * mode_info->height;\n+  grub_size_t page_size = 0;\n+\n+  if (grub_mul (mode_info->pitch, mode_info->height, &page_size))\n+    {\n+      /* Shouldn't happen, but if it does we've a bug. */\n+      return GRUB_ERR_BUG;\n+    }\n \n   framebuffer.offscreen_buffer = grub_malloc (page_size);\n   if (! framebuffer.offscreen_buffer)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0083-video-readers-jpeg-Test-for-an-invalid-next-marker-r.patch",
    "content": "From 5f5eb7ca8e971227e95745abe541df3e1509360e Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Fri, 4 Dec 2020 15:39:00 +0000\nSubject: [PATCH] video/readers/jpeg: Test for an invalid next marker reference\n from a jpeg file\n\nWhile it may never happen, and potentially could be caught at the end of\nthe function, it is worth checking up front for a bad reference to the\nnext marker just in case of a maliciously crafted file being provided.\n\nFixes: CID 73694\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/video/readers/jpeg.c | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/grub-core/video/readers/jpeg.c b/grub-core/video/readers/jpeg.c\nindex 31359a4..0b6ce3c 100644\n--- a/grub-core/video/readers/jpeg.c\n+++ b/grub-core/video/readers/jpeg.c\n@@ -253,6 +253,12 @@ grub_jpeg_decode_quan_table (struct grub_jpeg_data *data)\n   next_marker = data->file->offset;\n   next_marker += grub_jpeg_get_word (data);\n \n+  if (next_marker > data->file->size)\n+    {\n+      /* Should never be set beyond the size of the file. */\n+      return grub_error (GRUB_ERR_BAD_FILE_TYPE, \"jpeg: invalid next reference\");\n+    }\n+\n   while (data->file->offset + sizeof (data->quan_table[id]) + 1\n \t <= next_marker)\n     {\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0084-gfxmenu-gui_list-Remove-code-that-coverity-is-flaggi.patch",
    "content": "From 4a1aa5917595650efbd46b581368c470ebee42ab Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Mon, 7 Dec 2020 14:44:47 +0000\nSubject: [PATCH] gfxmenu/gui_list: Remove code that coverity is flagging as\n dead\n\nThe test of value for NULL before calling grub_strdup() is not required,\nsince the if condition prior to this has already tested for value being\nNULL and cannot reach this code if it is.\n\nFixes: CID 73659\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/gfxmenu/gui_list.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/grub-core/gfxmenu/gui_list.c b/grub-core/gfxmenu/gui_list.c\nindex 01477cd..df334a6 100644\n--- a/grub-core/gfxmenu/gui_list.c\n+++ b/grub-core/gfxmenu/gui_list.c\n@@ -771,7 +771,7 @@ list_set_property (void *vself, const char *name, const char *value)\n         {\n           self->need_to_recreate_boxes = 1;\n           grub_free (self->selected_item_box_pattern);\n-          self->selected_item_box_pattern = value ? grub_strdup (value) : 0;\n+          self->selected_item_box_pattern = grub_strdup (value);\n           self->selected_item_box_pattern_inherit = 0;\n         }\n     }\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0085-loader-bsd-Check-for-NULL-arg-up-front.patch",
    "content": "From 5d5391b0a05abe76e04c1eb68dcc6cbef5326c4a Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Tue, 8 Dec 2020 21:47:13 +0000\nSubject: [PATCH] loader/bsd: Check for NULL arg up-front\n\nThe code in the next block suggests that it is possible for .set to be\ntrue but .arg may still be NULL.\n\nThis code assumes that it is never NULL, yet later is testing if it is\nNULL - that is inconsistent.\n\nSo we should check first if .arg is not NULL, and remove this check that\nis being flagged by Coverity since it is no longer required.\n\nFixes: CID 292471\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/loader/i386/bsd.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/loader/i386/bsd.c b/grub-core/loader/i386/bsd.c\nindex b92cbe9..8432283 100644\n--- a/grub-core/loader/i386/bsd.c\n+++ b/grub-core/loader/i386/bsd.c\n@@ -1605,7 +1605,7 @@ grub_cmd_openbsd (grub_extcmd_context_t ctxt, int argc, char *argv[])\n   kernel_type = KERNEL_TYPE_OPENBSD;\n   bootflags = grub_bsd_parse_flags (ctxt->state, openbsd_flags);\n \n-  if (ctxt->state[OPENBSD_ROOT_ARG].set)\n+  if (ctxt->state[OPENBSD_ROOT_ARG].set && ctxt->state[OPENBSD_ROOT_ARG].arg != NULL)\n     {\n       const char *arg = ctxt->state[OPENBSD_ROOT_ARG].arg;\n       unsigned type, unit, part;\n@@ -1622,7 +1622,7 @@ grub_cmd_openbsd (grub_extcmd_context_t ctxt, int argc, char *argv[])\n \t\t\t   \"unknown disk type name\");\n \n       unit = grub_strtoul (arg, (char **) &arg, 10);\n-      if (! (arg && *arg >= 'a' && *arg <= 'z'))\n+      if (! (*arg >= 'a' && *arg <= 'z'))\n \treturn grub_error (GRUB_ERR_BAD_ARGUMENT,\n \t\t\t   \"only device specifications of form \"\n \t\t\t   \"<type><number><lowercase letter> are supported\");\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0086-loader-xnu-Fix-memory-leak.patch",
    "content": "From bcb59ece3263d118510c4440c4da0950f224bb7f Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Thu, 26 Nov 2020 12:53:10 +0000\nSubject: [PATCH] loader/xnu: Fix memory leak\n\nThe code here is finished with the memory stored in name, but it only\nfrees it if there curvalue is valid, while it could actually free it\nregardless.\n\nThe fix is a simple relocation of the grub_free() to before the test\nof curvalue.\n\nFixes: CID 96646\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/loader/xnu.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c\nindex 44fd5a9..eb14462 100644\n--- a/grub-core/loader/xnu.c\n+++ b/grub-core/loader/xnu.c\n@@ -1391,9 +1391,9 @@ grub_xnu_fill_devicetree (void)\n     name[len] = 0;\n \n     curvalue = grub_xnu_create_value (curkey, name);\n+    grub_free (name);\n     if (!curvalue)\n       return grub_errno;\n-    grub_free (name);\n    \n     data = grub_malloc (grub_strlen (var->value) + 1);\n     if (!data)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0087-loader-xnu-Free-driverkey-data-when-an-error-is-dete.patch",
    "content": "From 4b4027b6b1c877d7ab467896b04c7bd1aadcfa15 Mon Sep 17 00:00:00 2001\nFrom: Marco A Benatto <mbenatto@redhat.com>\nDate: Mon, 30 Nov 2020 12:18:24 -0300\nSubject: [PATCH] loader/xnu: Free driverkey data when an error is detected in\n grub_xnu_writetree_toheap()\n\n... to avoid memory leaks.\n\nFixes: CID 96640\n\nSigned-off-by: Marco A Benatto <mbenatto@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/loader/xnu.c | 24 ++++++++++++++++++++----\n 1 file changed, 20 insertions(+), 4 deletions(-)\n\ndiff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c\nindex eb14462..1a590db 100644\n--- a/grub-core/loader/xnu.c\n+++ b/grub-core/loader/xnu.c\n@@ -227,26 +227,33 @@ grub_xnu_writetree_toheap (grub_addr_t *target, grub_size_t *size)\n   if (! memorymap)\n     return grub_errno;\n \n-  driverkey = (struct grub_xnu_devtree_key *) grub_malloc (sizeof (*driverkey));\n+  driverkey = (struct grub_xnu_devtree_key *) grub_zalloc (sizeof (*driverkey));\n   if (! driverkey)\n     return grub_errno;\n   driverkey->name = grub_strdup (\"DeviceTree\");\n   if (! driverkey->name)\n-    return grub_errno;\n+    {\n+      err = grub_errno;\n+      goto fail;\n+    }\n+\n   driverkey->datasize = sizeof (*extdesc);\n   driverkey->next = memorymap->first_child;\n   memorymap->first_child = driverkey;\n   driverkey->data = extdesc\n     = (struct grub_xnu_extdesc *) grub_malloc (sizeof (*extdesc));\n   if (! driverkey->data)\n-    return grub_errno;\n+    {\n+      err = grub_errno;\n+      goto fail;\n+    }\n \n   /* Allocate the space based on the size with dummy value. */\n   *size = grub_xnu_writetree_get_size (grub_xnu_devtree_root, \"/\");\n   err = grub_xnu_heap_malloc (ALIGN_UP (*size + 1, GRUB_XNU_PAGESIZE),\n \t\t\t      &src, target);\n   if (err)\n-    return err;\n+    goto fail;\n \n   /* Put real data in the dummy. */\n   extdesc->addr = *target;\n@@ -255,6 +262,15 @@ grub_xnu_writetree_toheap (grub_addr_t *target, grub_size_t *size)\n   /* Write the tree to heap. */\n   grub_xnu_writetree_toheap_real (src, grub_xnu_devtree_root, \"/\");\n   return GRUB_ERR_NONE;\n+\n+ fail:\n+  memorymap->first_child = NULL;\n+\n+  grub_free (driverkey->data);\n+  grub_free (driverkey->name);\n+  grub_free (driverkey);\n+\n+  return err;\n }\n \n /* Find a key or value in parent key. */\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0088-loader-xnu-Check-if-pointer-is-NULL-before-using-it.patch",
    "content": "From 7c8a2b5d1421a0f2a33d33531f7561f3da93b844 Mon Sep 17 00:00:00 2001\nFrom: Paulo Flabiano Smorigo <pfsmorigo@canonical.com>\nDate: Mon, 30 Nov 2020 10:36:00 -0300\nSubject: [PATCH] loader/xnu: Check if pointer is NULL before using it\n\nFixes: CID 73654\n\nSigned-off-by: Paulo Flabiano Smorigo <pfsmorigo@canonical.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/loader/xnu.c | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c\nindex 1a590db..1c0cf6a 100644\n--- a/grub-core/loader/xnu.c\n+++ b/grub-core/loader/xnu.c\n@@ -670,6 +670,9 @@ grub_xnu_load_driver (char *infoplistname, grub_file_t binaryfile,\n   char *name, *nameend;\n   int namelen;\n \n+  if (infoplistname == NULL)\n+    return grub_error (GRUB_ERR_BAD_FILENAME, N_(\"missing p-list filename\"));\n+\n   name = get_name_ptr (infoplistname);\n   nameend = grub_strchr (name, '/');\n \n@@ -701,10 +704,7 @@ grub_xnu_load_driver (char *infoplistname, grub_file_t binaryfile,\n   else\n     macho = 0;\n \n-  if (infoplistname)\n-    infoplist = grub_file_open (infoplistname, GRUB_FILE_TYPE_XNU_INFO_PLIST);\n-  else\n-    infoplist = 0;\n+  infoplist = grub_file_open (infoplistname, GRUB_FILE_TYPE_XNU_INFO_PLIST);\n   grub_errno = GRUB_ERR_NONE;\n   if (infoplist)\n     {\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0089-util-grub-install-Fix-NULL-pointer-dereferences.patch",
    "content": "From 8b3a95655b4391122e7b0315d8cc6f876caf8183 Mon Sep 17 00:00:00 2001\nFrom: Daniel Kiper <daniel.kiper@oracle.com>\nDate: Thu, 25 Feb 2021 18:35:01 +0100\nSubject: [PATCH] util/grub-install: Fix NULL pointer dereferences\n\nTwo grub_device_open() calls does not have associated NULL checks\nfor returned values. Fix that and appease the Coverity.\n\nFixes: CID 314583\n\nSigned-off-by: Daniel Kiper <daniel.kiper@oracle.com>\nReviewed-by: Javier Martinez Canillas <javierm@redhat.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n util/grub-install.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/util/grub-install.c b/util/grub-install.c\nindex a82725f..367350f 100644\n--- a/util/grub-install.c\n+++ b/util/grub-install.c\n@@ -1775,6 +1775,8 @@ main (int argc, char *argv[])\n \t  fill_core_services (core_services);\n \n \t  ins_dev = grub_device_open (install_drive);\n+\t  if (ins_dev == NULL)\n+\t    grub_util_error (\"%s\", grub_errmsg);\n \n \t  bless (ins_dev, core_services, 0);\n \n@@ -1875,6 +1877,8 @@ main (int argc, char *argv[])\n \t  fill_core_services(core_services);\n \n \t  ins_dev = grub_device_open (install_drive);\n+\t  if (ins_dev == NULL)\n+\t    grub_util_error (\"%s\", grub_errmsg);\n \n \t  bless (ins_dev, boot_efi, 1);\n \t  if (!removable && update_nvram)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0090-util-grub-editenv-Fix-incorrect-casting-of-a-signed-.patch",
    "content": "From 5dc41edc4eba259c6043ae7698c245ec1baaacc6 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Thu, 5 Nov 2020 14:33:50 +0000\nSubject: [PATCH] util/grub-editenv: Fix incorrect casting of a signed value\n\nThe return value of ftell() may be negative (-1) on error. While it is\nprobably unlikely to occur, we should not blindly cast to an unsigned\nvalue without first testing that it is not negative.\n\nFixes: CID 73856\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n util/grub-editenv.c | 8 +++++++-\n 1 file changed, 7 insertions(+), 1 deletion(-)\n\ndiff --git a/util/grub-editenv.c b/util/grub-editenv.c\nindex f3662c9..db6f187 100644\n--- a/util/grub-editenv.c\n+++ b/util/grub-editenv.c\n@@ -125,6 +125,7 @@ open_envblk_file (const char *name)\n {\n   FILE *fp;\n   char *buf;\n+  long loc;\n   size_t size;\n   grub_envblk_t envblk;\n \n@@ -143,7 +144,12 @@ open_envblk_file (const char *name)\n     grub_util_error (_(\"cannot seek `%s': %s\"), name,\n \t\t     strerror (errno));\n \n-  size = (size_t) ftell (fp);\n+  loc = ftell (fp);\n+  if (loc < 0)\n+    grub_util_error (_(\"cannot get file location `%s': %s\"), name,\n+\t\t     strerror (errno));\n+\n+  size = (size_t) loc;\n \n   if (fseek (fp, 0, SEEK_SET) < 0)\n     grub_util_error (_(\"cannot seek `%s': %s\"), name,\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0091-util-glue-efi-Fix-incorrect-use-of-a-possibly-negati.patch",
    "content": "From 1641d74e16f9d1ca35ba1a87ee4a0bf3afa48e72 Mon Sep 17 00:00:00 2001\nFrom: Darren Kenny <darren.kenny@oracle.com>\nDate: Fri, 4 Dec 2020 15:04:28 +0000\nSubject: [PATCH] util/glue-efi: Fix incorrect use of a possibly negative value\n\nIt is possible for the ftell() function to return a negative value,\nalthough it is fairly unlikely here, we should be checking for\na negative value before we assign it to an unsigned value.\n\nFixes: CID 73744\n\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n util/glue-efi.c | 14 ++++++++++++--\n 1 file changed, 12 insertions(+), 2 deletions(-)\n\ndiff --git a/util/glue-efi.c b/util/glue-efi.c\nindex 68f5316..de0fa6d 100644\n--- a/util/glue-efi.c\n+++ b/util/glue-efi.c\n@@ -39,13 +39,23 @@ write_fat (FILE *in32, FILE *in64, FILE *out, const char *out_filename,\n   struct grub_macho_fat_header head;\n   struct grub_macho_fat_arch arch32, arch64;\n   grub_uint32_t size32, size64;\n+  long size;\n   char *buf;\n \n   fseek (in32, 0, SEEK_END);\n-  size32 = ftell (in32);\n+  size = ftell (in32);\n+  if (size < 0)\n+    grub_util_error (\"cannot get end of input file '%s': %s\",\n+\t\t     name32, strerror (errno));\n+  size32 = (grub_uint32_t) size;\n   fseek (in32, 0, SEEK_SET);\n+\n   fseek (in64, 0, SEEK_END);\n-  size64 = ftell (in64);\n+  size = ftell (in64);\n+  if (size < 0)\n+    grub_util_error (\"cannot get end of input file '%s': %s\",\n+\t\t     name64, strerror (errno));\n+  size64 = (grub_uint64_t) size;\n   fseek (in64, 0, SEEK_SET);\n \n   head.magic = grub_cpu_to_le32_compile_time (GRUB_MACHO_FAT_EFI_MAGIC);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0092-script-execute-Fix-NULL-dereference-in-grub_script_e.patch",
    "content": "From 41ae93b2e6c75453514629bcfe684300e3aec0ce Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Fri, 3 Apr 2020 23:05:13 +1100\nSubject: [PATCH] script/execute: Fix NULL dereference in\n grub_script_execute_cmdline()\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/script/execute.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/grub-core/script/execute.c b/grub-core/script/execute.c\nindex 7e028e1..5ea2aef 100644\n--- a/grub-core/script/execute.c\n+++ b/grub-core/script/execute.c\n@@ -940,7 +940,7 @@ grub_script_execute_cmdline (struct grub_script_cmd *cmd)\n   struct grub_script_argv argv = { 0, 0, 0 };\n \n   /* Lookup the command.  */\n-  if (grub_script_arglist_to_argv (cmdline->arglist, &argv) || ! argv.args[0])\n+  if (grub_script_arglist_to_argv (cmdline->arglist, &argv) || ! argv.args || ! argv.args[0])\n     return grub_errno;\n \n   for (i = 0; i < argv.argc; i++)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0093-commands-ls-Require-device_name-is-not-NULL-before-p.patch",
    "content": "From 6afbe6063c95b827372f9ec310c9fc7461311eb1 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 11 Jan 2021 16:57:37 +1100\nSubject: [PATCH] commands/ls: Require device_name is not NULL before printing\n\nThis can be triggered with:\n  ls -l (0 0*)\nand causes a NULL deref in grub_normal_print_device_info().\n\nI'm not sure if there's any implication with the IEEE 1275 platform.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/commands/ls.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/grub-core/commands/ls.c b/grub-core/commands/ls.c\nindex 5b7491a..326d2d6 100644\n--- a/grub-core/commands/ls.c\n+++ b/grub-core/commands/ls.c\n@@ -196,7 +196,7 @@ grub_ls_list_files (char *dirname, int longlist, int all, int human)\n       goto fail;\n     }\n \n-  if (! *path)\n+  if (! *path && device_name)\n     {\n       if (grub_errno == GRUB_ERR_UNKNOWN_FS)\n \tgrub_errno = GRUB_ERR_NONE;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0094-script-execute-Avoid-crash-when-using-outside-a-func.patch",
    "content": "From fe0586347ee46f927ae27bb9673532da9f5dead5 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 11 Jan 2021 17:30:42 +1100\nSubject: [PATCH] script/execute: Avoid crash when using \"$#\" outside a\n function scope\n\n\"$#\" represents the number of arguments to a function. It is only\ndefined in a function scope, where \"scope\" is non-NULL. Currently,\nif we attempt to evaluate \"$#\" outside a function scope, \"scope\" will\nbe NULL and we will crash with a NULL pointer dereference.\n\nDo not attempt to count arguments for \"$#\" if \"scope\" is NULL. This\nwill result in \"$#\" being interpreted as an empty string if evaluated\noutside a function scope.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/script/execute.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/grub-core/script/execute.c b/grub-core/script/execute.c\nindex 5ea2aef..23d34bd 100644\n--- a/grub-core/script/execute.c\n+++ b/grub-core/script/execute.c\n@@ -485,7 +485,7 @@ gettext_putvar (const char *str, grub_size_t len,\n     return 0;\n \n   /* Enough for any number.  */\n-  if (len == 1 && str[0] == '#')\n+  if (len == 1 && str[0] == '#' && scope != NULL)\n     {\n       grub_snprintf (*ptr, 30, \"%u\", scope->argv.argc);\n       *ptr += grub_strlen (*ptr);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0095-lib-arg-Block-repeated-short-options-that-require-an.patch",
    "content": "From 2a330dba93ff11bc00eda76e9419bc52b0c7ead6 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Fri, 22 Jan 2021 16:07:29 +1100\nSubject: [PATCH] lib/arg: Block repeated short options that require an\n argument\n\nFuzzing found the following crash:\n\n  search -hhhhhhhhhhhhhf\n\nWe didn't allocate enough option space for 13 hints because the\nallocation code counts the number of discrete arguments (i.e. argc).\nHowever, the shortopt parsing code will happily keep processing\na combination of short options without checking if those short\noptions require an argument. This means you can easily end writing\npast the allocated option space.\n\nThis fixes a OOB write which can cause heap corruption.\n\nFixes: CVE-2021-20225\n\nReported-by: Daniel Axtens <dja@axtens.net>\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/lib/arg.c | 13 +++++++++++++\n 1 file changed, 13 insertions(+)\n\ndiff --git a/grub-core/lib/arg.c b/grub-core/lib/arg.c\nindex 3288609..537c5e9 100644\n--- a/grub-core/lib/arg.c\n+++ b/grub-core/lib/arg.c\n@@ -299,6 +299,19 @@ grub_arg_parse (grub_extcmd_t cmd, int argc, char **argv,\n \t\t it can have an argument value.  */\n \t      if (*curshort)\n \t\t{\n+\t\t  /*\n+\t\t   * Only permit further short opts if this one doesn't\n+\t\t   * require a value.\n+\t\t   */\n+\t\t  if (opt->type != ARG_TYPE_NONE &&\n+\t\t      !(opt->flags & GRUB_ARG_OPTION_OPTIONAL))\n+\t\t    {\n+\t\t      grub_error (GRUB_ERR_BAD_ARGUMENT,\n+\t\t\t\t  N_(\"missing mandatory option for `%s'\"),\n+\t\t\t\t  opt->longarg);\n+\t\t      goto fail;\n+\t\t    }\n+\n \t\t  if (parse_option (cmd, opt, 0, usr) || grub_errno)\n \t\t    goto fail;\n \t\t}\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0096-script-execute-Don-t-crash-on-a-for-loop-with-no-ite.patch",
    "content": "From 0a05f88e2bb33ed2a0cfd93f481f471efb7791aa Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Fri, 22 Jan 2021 16:18:26 +1100\nSubject: [PATCH] script/execute: Don't crash on a \"for\" loop with no items\n\nThe following crashes the parser:\n\n  for x in; do\n  0\n  done\n\nThis is because grub_script_arglist_to_argv() doesn't consider the\npossibility that arglist is NULL. Catch that explicitly.\n\nThis avoids a NULL pointer dereference.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/script/execute.c | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/grub-core/script/execute.c b/grub-core/script/execute.c\nindex 23d34bd..31dac25 100644\n--- a/grub-core/script/execute.c\n+++ b/grub-core/script/execute.c\n@@ -624,6 +624,9 @@ grub_script_arglist_to_argv (struct grub_script_arglist *arglist,\n   struct grub_script_arg *arg = 0;\n   struct grub_script_argv result = { 0, 0, 0 };\n \n+  if (arglist == NULL)\n+    return 1;\n+\n   for (; arglist && arglist->arg; arglist = arglist->next)\n     {\n       if (grub_script_argv_next (&result))\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0097-commands-menuentry-Fix-quoting-in-setparams_prefix.patch",
    "content": "From 2f533a89a8dfcacbf2c9dbc77d910f111f24bf33 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Fri, 22 Jan 2021 17:10:48 +1100\nSubject: [PATCH] commands/menuentry: Fix quoting in setparams_prefix()\n\nCommit 9acdcbf32542 (use single quotes in menuentry setparams command)\nsays that expressing a quoted single quote will require 3 characters. It\nactually requires (and always did require!) 4 characters:\n\n  str: a'b => a'\\''b\n  len:  3  => 6 (2 for the letters + 4 for the quote)\n\nThis leads to not allocating enough memory and thus out of bounds writes\nthat have been observed to cause heap corruption.\n\nAllocate 4 bytes for each single quote.\n\nCommit 22e7dbb2bb81 (Fix quoting in legacy parser.) does the same\nquoting, but it adds 3 as extra overhead on top of the single byte that\nthe quote already needs. So it's correct.\n\nFixes: 9acdcbf32542 (use single quotes in menuentry setparams command)\nFixes: CVE-2021-20233\n\nReported-by: Daniel Axtens <dja@axtens.net>\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/commands/menuentry.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/grub-core/commands/menuentry.c b/grub-core/commands/menuentry.c\nindex 9164df7..720e6d8 100644\n--- a/grub-core/commands/menuentry.c\n+++ b/grub-core/commands/menuentry.c\n@@ -230,7 +230,7 @@ setparams_prefix (int argc, char **args)\n       len += 3; /* 3 = 1 space + 2 quotes */\n       p = args[i];\n       while (*p)\n-\tlen += (*p++ == '\\'' ? 3 : 1);\n+\tlen += (*p++ == '\\'' ? 4 : 1);\n     }\n \n   result = grub_malloc (len + 2);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0098-kern-misc-Always-set-end-in-grub_strtoull.patch",
    "content": "From f41f0af48ab7f7c135aac17ac862c30bde0bbab7 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Wed, 13 Jan 2021 22:19:01 +1100\nSubject: [PATCH] kern/misc: Always set *end in grub_strtoull()\n\nCurrently, if there is an error in grub_strtoull(), *end is not set.\nThis differs from the usual behavior of strtoull(), and also means that\nsome callers may use an uninitialized value for *end.\n\nSet *end unconditionally.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/misc.c | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c\nindex a7abd36..b02693b 100644\n--- a/grub-core/kern/misc.c\n+++ b/grub-core/kern/misc.c\n@@ -406,6 +406,10 @@ grub_strtoull (const char *str, char **end, int base)\n \t{\n \t  grub_error (GRUB_ERR_OUT_OF_RANGE,\n \t\t      N_(\"overflow is detected\"));\n+\n+          if (end)\n+            *end = (char *) str;\n+\n \t  return ~0ULL;\n \t}\n \n@@ -417,6 +421,10 @@ grub_strtoull (const char *str, char **end, int base)\n     {\n       grub_error (GRUB_ERR_BAD_NUMBER,\n \t\t  N_(\"unrecognized number\"));\n+\n+      if (end)\n+        *end = (char *) str;\n+\n       return 0;\n     }\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0099-video-readers-jpeg-Catch-files-with-unsupported-quan.patch",
    "content": "From 693989598fd38c3c0b2a928f4f64865b5681762f Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Fri, 15 Jan 2021 12:57:04 +1100\nSubject: [PATCH] video/readers/jpeg: Catch files with unsupported quantization\n or Huffman tables\n\nOur decoder only supports 2 quantization tables. If a file asks for\na quantization table with index > 1, reject it.\n\nSimilarly, our decoder only supports 4 Huffman tables. If a file asks\nfor a Huffman table with index > 3, reject it.\n\nThis fixes some out of bounds reads. It's not clear what degree of control\nover subsequent execution could be gained by someone who can carefully\nset up the contents of memory before loading an invalid JPEG file.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/video/readers/jpeg.c | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/grub-core/video/readers/jpeg.c b/grub-core/video/readers/jpeg.c\nindex 0b6ce3c..23f919a 100644\n--- a/grub-core/video/readers/jpeg.c\n+++ b/grub-core/video/readers/jpeg.c\n@@ -333,7 +333,11 @@ grub_jpeg_decode_sof (struct grub_jpeg_data *data)\n       else if (ss != JPEG_SAMPLING_1x1)\n \treturn grub_error (GRUB_ERR_BAD_FILE_TYPE,\n \t\t\t   \"jpeg: sampling method not supported\");\n+\n       data->comp_index[id][0] = grub_jpeg_get_byte (data);\n+      if (data->comp_index[id][0] > 1)\n+\treturn grub_error (GRUB_ERR_BAD_FILE_TYPE,\n+\t\t\t   \"jpeg: too many quantization tables\");\n     }\n \n   if (data->file->offset != next_marker)\n@@ -602,6 +606,10 @@ grub_jpeg_decode_sos (struct grub_jpeg_data *data)\n       ht = grub_jpeg_get_byte (data);\n       data->comp_index[id][1] = (ht >> 4);\n       data->comp_index[id][2] = (ht & 0xF) + 2;\n+\n+      if ((data->comp_index[id][1] < 0) || (data->comp_index[id][1] > 3) ||\n+\t  (data->comp_index[id][2] < 0) || (data->comp_index[id][2] > 3))\n+\treturn grub_error (GRUB_ERR_BAD_FILE_TYPE, \"jpeg: invalid hufftable index\");\n     }\n \n   grub_jpeg_get_byte (data);\t/* Skip 3 unused bytes.  */\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0100-video-readers-jpeg-Catch-OOB-reads-writes-in-grub_jp.patch",
    "content": "From 34b85a6e07014383ddcad09f99ff239ad752dd1a Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Fri, 15 Jan 2021 13:29:53 +1100\nSubject: [PATCH] video/readers/jpeg: Catch OOB reads/writes in\n grub_jpeg_decode_du()\n\nThe key line is:\n\n  du[jpeg_zigzag_order[pos]] = val * (int) data->quan_table[qt][pos];\n\njpeg_zigzag_order is grub_uint8_t[64].\n\nI don't understand JPEG decoders quite well enough to explain what's\ngoing on here. However, I observe sometimes pos=64, which leads to an\nOOB read of the jpeg_zigzag_order global then an OOB write to du.\nThat leads to various unpleasant memory corruption conditions.\n\nCatch where pos >= ARRAY_SIZE(jpeg_zigzag_order) and bail.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/video/readers/jpeg.c | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/grub-core/video/readers/jpeg.c b/grub-core/video/readers/jpeg.c\nindex 23f919a..e514812 100644\n--- a/grub-core/video/readers/jpeg.c\n+++ b/grub-core/video/readers/jpeg.c\n@@ -526,6 +526,14 @@ grub_jpeg_decode_du (struct grub_jpeg_data *data, int id, jpeg_data_unit_t du)\n       val = grub_jpeg_get_number (data, num & 0xF);\n       num >>= 4;\n       pos += num;\n+\n+      if (pos >= ARRAY_SIZE (jpeg_zigzag_order))\n+\t{\n+\t  grub_error (GRUB_ERR_BAD_FILE_TYPE,\n+\t\t      \"jpeg: invalid position in zigzag order!?\");\n+\t  return;\n+\t}\n+\n       du[jpeg_zigzag_order[pos]] = val * (int) data->quan_table[qt][pos];\n       pos++;\n     }\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0101-video-readers-jpeg-Don-t-decode-data-before-start-of.patch",
    "content": "From 8338a8238f08d9f3ae4c2ddfff0603eff80af9e2 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Fri, 15 Jan 2021 14:06:46 +1100\nSubject: [PATCH] video/readers/jpeg: Don't decode data before start of stream\n\nWhen a start of stream marker is encountered, we call grub_jpeg_decode_sos()\nwhich allocates space for a bitmap.\n\nWhen a restart marker is encountered, we call grub_jpeg_decode_data() which\nthen fills in that bitmap.\n\nIf we get a restart marker before the start of stream marker, we will\nattempt to write to a bitmap_ptr that hasn't been allocated. Catch this\nand bail out. This fixes an attempt to write to NULL.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/video/readers/jpeg.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/grub-core/video/readers/jpeg.c b/grub-core/video/readers/jpeg.c\nindex e514812..e31602f 100644\n--- a/grub-core/video/readers/jpeg.c\n+++ b/grub-core/video/readers/jpeg.c\n@@ -646,6 +646,10 @@ grub_jpeg_decode_data (struct grub_jpeg_data *data)\n   nr1 = (data->image_height + vb - 1) >> (3 + data->log_vs);\n   nc1 = (data->image_width + hb - 1)  >> (3 + data->log_hs);\n \n+  if (data->bitmap_ptr == NULL)\n+    return grub_error(GRUB_ERR_BAD_FILE_TYPE,\n+\t\t      \"jpeg: attempted to decode data before start of stream\");\n+\n   for (; data->r1 < nr1 && (!data->dri || rst);\n        data->r1++, data->bitmap_ptr += (vb * data->image_width - hb * nc1) * 3)\n     for (c1 = 0;  c1 < nc1 && (!data->dri || rst);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0102-term-gfxterm-Don-t-set-up-a-font-with-glyphs-that-ar.patch",
    "content": "From 829329bddb2c3e623270cc634cc9ab32e6455fe7 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Fri, 15 Jan 2021 20:03:20 +1100\nSubject: [PATCH] term/gfxterm: Don't set up a font with glyphs that are too\n big\n\nCatch the case where we have a font so big that it causes the number of\nrows or columns to be 0. Currently we continue and allocate a\nvirtual_screen.text_buffer of size 0. We then try to use that for glpyhs\nand things go badly.\n\nOn the emu platform, malloc() may give us a valid pointer, in which case\nwe'll access heap memory which we shouldn't. Alternatively, it may give us\nNULL, in which case we'll crash. For other platforms, if I understand\ngrub_memalign() correctly, we will receive a valid but small allocation\nthat we will very likely later overrun.\n\nPrevent the creation of a virtual screen that isn't at least 40 cols\nby 12 rows. This is arbitrary, but it seems that if your width or height\nis half a standard 80x24 terminal, you're probably going to struggle to\nread anything anyway.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/term/gfxterm.c | 9 +++++++++\n 1 file changed, 9 insertions(+)\n\ndiff --git a/grub-core/term/gfxterm.c b/grub-core/term/gfxterm.c\nindex af7c090..b40fcce 100644\n--- a/grub-core/term/gfxterm.c\n+++ b/grub-core/term/gfxterm.c\n@@ -232,6 +232,15 @@ grub_virtual_screen_setup (unsigned int x, unsigned int y,\n   virtual_screen.columns = virtual_screen.width / virtual_screen.normal_char_width;\n   virtual_screen.rows = virtual_screen.height / virtual_screen.normal_char_height;\n \n+  /*\n+   * There must be a minimum number of rows and columns for the screen to\n+   * make sense. Arbitrarily pick half of 80x24. If either dimensions is 0\n+   * we would allocate 0 bytes for the text_buffer.\n+   */\n+  if (virtual_screen.columns < 40 || virtual_screen.rows < 12)\n+    return grub_error (GRUB_ERR_BAD_FONT,\n+\t\t       \"font: glyphs too large to fit on screen\");\n+\n   /* Allocate memory for text buffer.  */\n   virtual_screen.text_buffer =\n     (struct grub_colored_char *) grub_malloc (virtual_screen.columns\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0103-fs-fshelp-Catch-impermissibly-large-block-sizes-in-r.patch",
    "content": "From b5bc456f664bc301ab4cd5a17d3d23c6661c259e Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 18 Jan 2021 11:46:39 +1100\nSubject: [PATCH] fs/fshelp: Catch impermissibly large block sizes in read\n helper\n\nA fuzzed HFS+ filesystem had log2blocksize = 22. This gave\nlog2blocksize + GRUB_DISK_SECTOR_BITS = 31. 1 << 31 = 0x80000000,\nwhich is -1 as an int. This caused some wacky behavior later on in\nthe function, leading to out-of-bounds writes on the destination buffer.\n\nCatch log2blocksize + GRUB_DISK_SECTOR_BITS >= 31. We could be stricter,\nbut this is the minimum that will prevent integer size weirdness.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/fshelp.c | 12 ++++++++++++\n 1 file changed, 12 insertions(+)\n\ndiff --git a/grub-core/fs/fshelp.c b/grub-core/fs/fshelp.c\nindex 4c902ad..a2d0d29 100644\n--- a/grub-core/fs/fshelp.c\n+++ b/grub-core/fs/fshelp.c\n@@ -362,6 +362,18 @@ grub_fshelp_read_file (grub_disk_t disk, grub_fshelp_node_t node,\n   grub_disk_addr_t i, blockcnt;\n   int blocksize = 1 << (log2blocksize + GRUB_DISK_SECTOR_BITS);\n \n+  /*\n+   * Catch blatantly invalid log2blocksize. We could be a lot stricter, but\n+   * this is the most permissive we can be before we start to see integer\n+   * overflow/underflow issues.\n+   */\n+  if (log2blocksize + GRUB_DISK_SECTOR_BITS >= 31)\n+    {\n+      grub_error (GRUB_ERR_OUT_OF_RANGE,\n+\t\t  N_(\"blocksize too large\"));\n+      return -1;\n+    }\n+\n   if (pos > filesize)\n     {\n       grub_error (GRUB_ERR_OUT_OF_RANGE,\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0104-fs-hfsplus-Don-t-fetch-a-key-beyond-the-end-of-the-n.patch",
    "content": "From 58ea11d5b9ca0966bd9c68d8ba5240cf7dc3ba83 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Fri, 22 Jan 2021 18:13:56 +1100\nSubject: [PATCH] fs/hfsplus: Don't fetch a key beyond the end of the node\n\nOtherwise you get a wild pointer, leading to a bunch of invalid reads.\nCheck it falls inside the given node.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/hfsplus.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/grub-core/fs/hfsplus.c b/grub-core/fs/hfsplus.c\nindex 8fe7c12..1c7791b 100644\n--- a/grub-core/fs/hfsplus.c\n+++ b/grub-core/fs/hfsplus.c\n@@ -635,6 +635,10 @@ grub_hfsplus_btree_search (struct grub_hfsplus_btree *btree,\n \t      pointer = ((char *) currkey\n \t\t\t + grub_be_to_cpu16 (currkey->keylen)\n \t\t\t + 2);\n+\n+\t      if ((char *) pointer > node + btree->nodesize - 2)\n+\t\treturn grub_error (GRUB_ERR_BAD_FS, \"HFS+ key beyond end of node\");\n+\n \t      currnode = grub_be_to_cpu32 (grub_get_unaligned32 (pointer));\n \t      match = 1;\n \t    }\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0105-fs-hfsplus-Don-t-use-uninitialized-data-on-corrupt-f.patch",
    "content": "From 2ca0e5dbcdcb6fc93ccae39a0f39d0dba4a7ff20 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Tue, 2 Feb 2021 16:59:35 +1100\nSubject: [PATCH] fs/hfsplus: Don't use uninitialized data on corrupt\n filesystems\n\nValgrind identified the following use of uninitialized data:\n\n  ==2782220== Conditional jump or move depends on uninitialised value(s)\n  ==2782220==    at 0x42B364: grub_hfsplus_btree_search (hfsplus.c:566)\n  ==2782220==    by 0x42B21D: grub_hfsplus_read_block (hfsplus.c:185)\n  ==2782220==    by 0x42A693: grub_fshelp_read_file (fshelp.c:386)\n  ==2782220==    by 0x42C598: grub_hfsplus_read_file (hfsplus.c:219)\n  ==2782220==    by 0x42C598: grub_hfsplus_mount (hfsplus.c:330)\n  ==2782220==    by 0x42B8C5: grub_hfsplus_dir (hfsplus.c:958)\n  ==2782220==    by 0x4C1AE6: grub_fs_probe (fs.c:73)\n  ==2782220==    by 0x407C94: grub_ls_list_files (ls.c:186)\n  ==2782220==    by 0x407C94: grub_cmd_ls (ls.c:284)\n  ==2782220==    by 0x4D7130: grub_extcmd_dispatcher (extcmd.c:55)\n  ==2782220==    by 0x4045A6: execute_command (grub-fstest.c:59)\n  ==2782220==    by 0x4045A6: fstest (grub-fstest.c:433)\n  ==2782220==    by 0x4045A6: main (grub-fstest.c:772)\n  ==2782220==  Uninitialised value was created by a heap allocation\n  ==2782220==    at 0x483C7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)\n  ==2782220==    by 0x4C0305: grub_malloc (mm.c:42)\n  ==2782220==    by 0x42C21D: grub_hfsplus_mount (hfsplus.c:239)\n  ==2782220==    by 0x42B8C5: grub_hfsplus_dir (hfsplus.c:958)\n  ==2782220==    by 0x4C1AE6: grub_fs_probe (fs.c:73)\n  ==2782220==    by 0x407C94: grub_ls_list_files (ls.c:186)\n  ==2782220==    by 0x407C94: grub_cmd_ls (ls.c:284)\n  ==2782220==    by 0x4D7130: grub_extcmd_dispatcher (extcmd.c:55)\n  ==2782220==    by 0x4045A6: execute_command (grub-fstest.c:59)\n  ==2782220==    by 0x4045A6: fstest (grub-fstest.c:433)\n  ==2782220==    by 0x4045A6: main (grub-fstest.c:772)\n\nThis happens when the process of reading the catalog file goes sufficiently\nwrong that there's an attempt to read the extent overflow file, which has\nnot yet been loaded. Keep track of when the extent overflow file is\nfully loaded and refuse to use it before then.\n\nThe load valgrind doesn't like is btree->nodesize, and that's then used\nto allocate a data structure. It looks like there are subsequently a lot\nof reads based on that pointer so OOB reads are likely, and indeed crashes\n(albeit difficult-to-replicate ones) have been observed in fuzzing.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/hfsplus.c | 14 ++++++++++++++\n include/grub/hfsplus.h |  2 ++\n 2 files changed, 16 insertions(+)\n\ndiff --git a/grub-core/fs/hfsplus.c b/grub-core/fs/hfsplus.c\nindex 1c7791b..361e5be 100644\n--- a/grub-core/fs/hfsplus.c\n+++ b/grub-core/fs/hfsplus.c\n@@ -177,6 +177,17 @@ grub_hfsplus_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)\n \t  break;\n \t}\n \n+      /*\n+       * If the extent overflow tree isn't ready yet, we can't look\n+       * in it. This can happen where the catalog file is corrupted.\n+       */\n+      if (!node->data->extoverflow_tree_ready)\n+\t{\n+\t  grub_error (GRUB_ERR_BAD_FS,\n+\t\t      \"attempted to read extent overflow tree before loading\");\n+\t  break;\n+\t}\n+\n       /* Set up the key to look for in the extent overflow file.  */\n       extoverflow.extkey.fileid = node->fileid;\n       extoverflow.extkey.type = 0;\n@@ -241,6 +252,7 @@ grub_hfsplus_mount (grub_disk_t disk)\n     return 0;\n \n   data->disk = disk;\n+  data->extoverflow_tree_ready = 0;\n \n   /* Read the bootblock.  */\n   grub_disk_read (disk, GRUB_HFSPLUS_SBLOCK, 0, sizeof (volheader),\n@@ -357,6 +369,8 @@ grub_hfsplus_mount (grub_disk_t disk)\n   if (data->extoverflow_tree.nodesize < 2)\n     goto fail;\n \n+  data->extoverflow_tree_ready = 1;\n+\n   if (grub_hfsplus_read_file (&data->attr_tree.file, 0, 0,\n \t\t\t      sizeof (struct grub_hfsplus_btnode),\n \t\t\t      sizeof (header), (char *) &header) <= 0)\ndiff --git a/include/grub/hfsplus.h b/include/grub/hfsplus.h\nindex 117740a..e14dd31 100644\n--- a/include/grub/hfsplus.h\n+++ b/include/grub/hfsplus.h\n@@ -113,6 +113,8 @@ struct grub_hfsplus_data\n   struct grub_hfsplus_btree extoverflow_tree;\n   struct grub_hfsplus_btree attr_tree;\n \n+  int extoverflow_tree_ready;\n+\n   struct grub_hfsplus_file dirroot;\n   struct grub_hfsplus_file opened_file;\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0106-fs-hfs-Disable-under-lockdown.patch",
    "content": "From 1c15848838d924552611247110723e2a1c17a5a1 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 18 Jan 2021 12:19:07 +1100\nSubject: [PATCH] fs/hfs: Disable under lockdown\n\nHFS has issues such as infinite mutual recursion that are simply too\ncomplex to fix for such a legacy format. So simply do not permit\nit to be loaded under lockdown.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/hfs.c | 7 +++++--\n 1 file changed, 5 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/fs/hfs.c b/grub-core/fs/hfs.c\nindex 3fe842b..9a5b7bb 100644\n--- a/grub-core/fs/hfs.c\n+++ b/grub-core/fs/hfs.c\n@@ -30,6 +30,7 @@\n #include <grub/hfs.h>\n #include <grub/i18n.h>\n #include <grub/fshelp.h>\n+#include <grub/lockdown.h>\n \n GRUB_MOD_LICENSE (\"GPLv3+\");\n \n@@ -1433,11 +1434,13 @@ static struct grub_fs grub_hfs_fs =\n \n GRUB_MOD_INIT(hfs)\n {\n-  grub_fs_register (&grub_hfs_fs);\n+  if (!grub_is_lockdown ())\n+    grub_fs_register (&grub_hfs_fs);\n   my_mod = mod;\n }\n \n GRUB_MOD_FINI(hfs)\n {\n-  grub_fs_unregister (&grub_hfs_fs);\n+  if (!grub_is_lockdown())\n+    grub_fs_unregister (&grub_hfs_fs);\n }\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0107-fs-sfs-Fix-over-read-of-root-object-name.patch",
    "content": "From 8d3ae59dee2930d640add3bba983006e1f5dd1b6 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 18 Jan 2021 14:34:58 +1100\nSubject: [PATCH] fs/sfs: Fix over-read of root object name\n\nThere's a read of the name of the root object that assumes that the name\nis nul-terminated within the root block. This isn't guaranteed - it seems\nSFS would require you to read multiple blocks to get a full name in general,\nbut maybe that doesn't apply to the root object.\n\nEither way, figure out how much space is left in the root block and don't\nover-read it. This fixes some OOB reads.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/sfs.c | 9 ++++++++-\n 1 file changed, 8 insertions(+), 1 deletion(-)\n\ndiff --git a/grub-core/fs/sfs.c b/grub-core/fs/sfs.c\nindex de2b107..983e880 100644\n--- a/grub-core/fs/sfs.c\n+++ b/grub-core/fs/sfs.c\n@@ -373,6 +373,7 @@ grub_sfs_mount (grub_disk_t disk)\n   struct grub_sfs_objc *rootobjc;\n   char *rootobjc_data = 0;\n   grub_uint32_t blk;\n+  unsigned int max_len;\n \n   data = grub_malloc (sizeof (*data));\n   if (!data)\n@@ -421,7 +422,13 @@ grub_sfs_mount (grub_disk_t disk)\n   data->diropen.data = data;\n   data->diropen.cache = 0;\n   data->disk = disk;\n-  data->label = grub_strdup ((char *) (rootobjc->objects[0].filename));\n+\n+  /* We only read 1 block of data, so truncate the name if needed. */\n+  max_len = ((GRUB_DISK_SECTOR_SIZE << data->log_blocksize)\n+\t     - 24    /* offsetof (struct grub_sfs_objc, objects) */\n+\t     - 25);  /* offsetof (struct grub_sfs_obj, filename) */\n+  data->label = grub_zalloc (max_len + 1);\n+  grub_strncpy (data->label, (char *) rootobjc->objects[0].filename, max_len);\n \n   grub_free (rootobjc_data);\n   return data;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0108-fs-jfs-Do-not-move-to-leaf-level-if-name-length-is-n.patch",
    "content": "From ffd5a46f68710e2781899d0be4d701429a5a817d Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 18 Jan 2021 14:51:11 +1100\nSubject: [PATCH] fs/jfs: Do not move to leaf level if name length is negative\n\nFuzzing JFS revealed crashes where a negative number would be passed\nto le_to_cpu16_copy(). There it would be cast to a large positive number\nand the copy would read and write off the end of the respective buffers.\n\nCatch this at the top as well as the bottom of the loop.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/jfs.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/grub-core/fs/jfs.c b/grub-core/fs/jfs.c\nindex d5a6d65..e5bbda6 100644\n--- a/grub-core/fs/jfs.c\n+++ b/grub-core/fs/jfs.c\n@@ -567,7 +567,7 @@ grub_jfs_getent (struct grub_jfs_diropen *diro)\n \n   /* Move down to the leaf level.  */\n   nextent = leaf->next;\n-  if (leaf->next != 255)\n+  if (leaf->next != 255 && len > 0)\n     do\n       {\n  \tnext_leaf = &diro->next_leaf[nextent];\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0109-fs-jfs-Limit-the-extents-that-getblk-can-consider.patch",
    "content": "From bd0cf8148ccf721f6e39ffbd70f8abad0c8897f0 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 18 Jan 2021 14:57:17 +1100\nSubject: [PATCH] fs/jfs: Limit the extents that getblk() can consider\n\ngetblk() implicitly trusts that treehead->count is an accurate count of\nthe number of extents. However, that value is read from disk and is not\ntrustworthy, leading to OOB reads and crashes. I am not sure to what\nextent the data read from OOB can influence subsequent program execution.\n\nRequire callers to pass in the maximum number of extents for which\nthey have storage.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/jfs.c | 8 +++++---\n 1 file changed, 5 insertions(+), 3 deletions(-)\n\ndiff --git a/grub-core/fs/jfs.c b/grub-core/fs/jfs.c\nindex e5bbda6..804c42d 100644\n--- a/grub-core/fs/jfs.c\n+++ b/grub-core/fs/jfs.c\n@@ -261,13 +261,15 @@ static grub_err_t grub_jfs_lookup_symlink (struct grub_jfs_data *data, grub_uint\n static grub_int64_t\n getblk (struct grub_jfs_treehead *treehead,\n \tstruct grub_jfs_tree_extent *extents,\n+\tint max_extents,\n \tstruct grub_jfs_data *data,\n \tgrub_uint64_t blk)\n {\n   int found = -1;\n   int i;\n \n-  for (i = 0; i < grub_le_to_cpu16 (treehead->count) - 2; i++)\n+  for (i = 0; i < grub_le_to_cpu16 (treehead->count) - 2 &&\n+\t      i < max_extents; i++)\n     {\n       if (treehead->flags & GRUB_JFS_TREE_LEAF)\n \t{\n@@ -302,7 +304,7 @@ getblk (struct grub_jfs_treehead *treehead,\n \t\t\t   << (grub_le_to_cpu16 (data->sblock.log2_blksz)\n \t\t\t       - GRUB_DISK_SECTOR_BITS), 0,\n \t\t\t   sizeof (*tree), (char *) tree))\n-\tret = getblk (&tree->treehead, &tree->extents[0], data, blk);\n+\tret = getblk (&tree->treehead, &tree->extents[0], 254, data, blk);\n       grub_free (tree);\n       return ret;\n     }\n@@ -316,7 +318,7 @@ static grub_int64_t\n grub_jfs_blkno (struct grub_jfs_data *data, struct grub_jfs_inode *inode,\n \t\tgrub_uint64_t blk)\n {\n-  return getblk (&inode->file.tree, &inode->file.extents[0], data, blk);\n+  return getblk (&inode->file.tree, &inode->file.extents[0], 16, data, blk);\n }\n \n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0110-fs-jfs-Catch-infinite-recursion.patch",
    "content": "From 223120dd83745126cb232a0248c9a8901d7e350d Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 18 Jan 2021 15:47:24 +1100\nSubject: [PATCH] fs/jfs: Catch infinite recursion\n\nIt's possible with a fuzzed filesystem for JFS to keep getblk()-ing\nthe same data over and over again, leading to stack exhaustion.\n\nCheck if we'd be calling the function with exactly the same data as\nwas passed in, and if so abort.\n\nI'm not sure what the performance impact of this is and am open to\nbetter ideas.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/jfs.c | 11 ++++++++++-\n 1 file changed, 10 insertions(+), 1 deletion(-)\n\ndiff --git a/grub-core/fs/jfs.c b/grub-core/fs/jfs.c\nindex 804c42d..6f7c439 100644\n--- a/grub-core/fs/jfs.c\n+++ b/grub-core/fs/jfs.c\n@@ -304,7 +304,16 @@ getblk (struct grub_jfs_treehead *treehead,\n \t\t\t   << (grub_le_to_cpu16 (data->sblock.log2_blksz)\n \t\t\t       - GRUB_DISK_SECTOR_BITS), 0,\n \t\t\t   sizeof (*tree), (char *) tree))\n-\tret = getblk (&tree->treehead, &tree->extents[0], 254, data, blk);\n+\t{\n+\t  if (grub_memcmp (&tree->treehead, treehead, sizeof (struct grub_jfs_treehead)) ||\n+\t      grub_memcmp (&tree->extents, extents, 254 * sizeof (struct grub_jfs_tree_extent)))\n+\t    ret = getblk (&tree->treehead, &tree->extents[0], 254, data, blk);\n+\t  else\n+\t    {\n+\t      grub_error (GRUB_ERR_BAD_FS, \"jfs: infinite recursion detected\");\n+\t      ret = -1;\n+\t    }\n+\t}\n       grub_free (tree);\n       return ret;\n     }\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0111-fs-nilfs2-Reject-too-large-keys.patch",
    "content": "From 20ab8cb44bc140a1dedda82a3fccdd45e9bc6929 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 18 Jan 2021 16:49:09 +1100\nSubject: [PATCH] fs/nilfs2: Reject too-large keys\n\nNILFS2 has up to 7 keys, per the data structure. Do not permit array\nindices in excess of that.\n\nThis catches some OOB reads. I don't know how controllable the invalidly\nread data is or if that could be used later in the program.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/nilfs2.c | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/grub-core/fs/nilfs2.c b/grub-core/fs/nilfs2.c\nindex 7ed148d..fee2242 100644\n--- a/grub-core/fs/nilfs2.c\n+++ b/grub-core/fs/nilfs2.c\n@@ -569,6 +569,11 @@ grub_nilfs2_btree_lookup (struct grub_nilfs2_data *data,\n static inline grub_uint64_t\n grub_nilfs2_direct_lookup (struct grub_nilfs2_inode *inode, grub_uint64_t key)\n {\n+  if (1 + key > 6)\n+    {\n+      grub_error (GRUB_ERR_BAD_FS, \"key is too large\");\n+      return 0xffffffffffffffff;\n+    }\n   return grub_le_to_cpu64 (inode->i_bmap[1 + key]);\n }\n \n@@ -584,7 +589,7 @@ grub_nilfs2_bmap_lookup (struct grub_nilfs2_data *data,\n     {\n       grub_uint64_t ptr;\n       ptr = grub_nilfs2_direct_lookup (inode, key);\n-      if (need_translate)\n+      if (ptr != ((grub_uint64_t) 0xffffffffffffffff) && need_translate)\n \tptr = grub_nilfs2_dat_translate (data, ptr);\n       return ptr;\n     }\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0112-fs-nilfs2-Don-t-search-children-if-provided-number-i.patch",
    "content": "From 37c0eb05cdcc64c28d31c4ebd300f14d5239d05e Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 18 Jan 2021 16:49:44 +1100\nSubject: [PATCH] fs/nilfs2: Don't search children if provided number is too\n large\n\nNILFS2 reads the number of children a node has from the node. Unfortunately,\nthat's not trustworthy. Check if it's beyond what the filesystem permits and\nreject it if so.\n\nThis blocks some OOB reads. I'm not sure how controllable the read is and what\ncould be done with invalidly read data later on.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/nilfs2.c | 38 +++++++++++++++++++++++---------------\n 1 file changed, 23 insertions(+), 15 deletions(-)\n\ndiff --git a/grub-core/fs/nilfs2.c b/grub-core/fs/nilfs2.c\nindex fee2242..43ac1ad 100644\n--- a/grub-core/fs/nilfs2.c\n+++ b/grub-core/fs/nilfs2.c\n@@ -416,14 +416,34 @@ grub_nilfs2_btree_node_get_key (struct grub_nilfs2_btree_node *node,\n }\n \n static inline int\n-grub_nilfs2_btree_node_lookup (struct grub_nilfs2_btree_node *node,\n+grub_nilfs2_btree_node_nchildren_max (struct grub_nilfs2_data *data,\n+\t\t\t\t      struct grub_nilfs2_btree_node *node)\n+{\n+  int node_children_max = ((NILFS2_BLOCK_SIZE (data) -\n+\t\t\t    sizeof (struct grub_nilfs2_btree_node) -\n+\t\t\t    NILFS_BTREE_NODE_EXTRA_PAD_SIZE) /\n+\t\t\t   (sizeof (grub_uint64_t) + sizeof (grub_uint64_t)));\n+\n+  return (node->bn_flags & NILFS_BTREE_NODE_ROOT) ? 3 : node_children_max;\n+}\n+\n+static inline int\n+grub_nilfs2_btree_node_lookup (struct grub_nilfs2_data *data,\n+\t\t\t       struct grub_nilfs2_btree_node *node,\n \t\t\t       grub_uint64_t key, int *indexp)\n {\n   grub_uint64_t nkey;\n   int index, low, high, s;\n \n   low = 0;\n+\n   high = grub_le_to_cpu16 (node->bn_nchildren) - 1;\n+  if (high >= grub_nilfs2_btree_node_nchildren_max (data, node))\n+    {\n+      grub_error (GRUB_ERR_BAD_FS, \"too many children\");\n+      return 0;\n+    }\n+\n   index = 0;\n   s = 0;\n   while (low <= high)\n@@ -459,18 +479,6 @@ grub_nilfs2_btree_node_lookup (struct grub_nilfs2_btree_node *node,\n   return s == 0;\n }\n \n-static inline int\n-grub_nilfs2_btree_node_nchildren_max (struct grub_nilfs2_data *data,\n-\t\t\t\t      struct grub_nilfs2_btree_node *node)\n-{\n-  int node_children_max = ((NILFS2_BLOCK_SIZE (data) -\n-\t\t\t    sizeof (struct grub_nilfs2_btree_node) -\n-\t\t\t    NILFS_BTREE_NODE_EXTRA_PAD_SIZE) /\n-\t\t\t   (sizeof (grub_uint64_t) + sizeof (grub_uint64_t)));\n-\n-  return (node->bn_flags & NILFS_BTREE_NODE_ROOT) ? 3 : node_children_max;\n-}\n-\n static inline grub_uint64_t *\n grub_nilfs2_btree_node_dptrs (struct grub_nilfs2_data *data,\n \t\t\t      struct grub_nilfs2_btree_node *node)\n@@ -517,7 +525,7 @@ grub_nilfs2_btree_lookup (struct grub_nilfs2_data *data,\n   node = grub_nilfs2_btree_get_root (inode);\n   level = grub_nilfs2_btree_get_level (node);\n \n-  found = grub_nilfs2_btree_node_lookup (node, key, &index);\n+  found = grub_nilfs2_btree_node_lookup (data, node, key, &index);\n   ptr = grub_nilfs2_btree_node_get_ptr (data, node, index);\n   if (need_translate)\n     ptr = grub_nilfs2_dat_translate (data, ptr);\n@@ -538,7 +546,7 @@ grub_nilfs2_btree_lookup (struct grub_nilfs2_data *data,\n \t}\n \n       if (!found)\n-\tfound = grub_nilfs2_btree_node_lookup (node, key, &index);\n+\tfound = grub_nilfs2_btree_node_lookup (data, node, key, &index);\n       else\n \tindex = 0;\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0113-fs-nilfs2-Properly-bail-on-errors-in-grub_nilfs2_btr.patch",
    "content": "From ca5d9ac206043b1fb4cb06259272fb1c5946bb6d Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 18 Jan 2021 17:06:19 +1100\nSubject: [PATCH] fs/nilfs2: Properly bail on errors in\n grub_nilfs2_btree_node_lookup()\n\nWe just introduced an error return in grub_nilfs2_btree_node_lookup().\nMake sure the callers catch it.\n\nAt the same time, make sure that grub_nilfs2_btree_node_lookup() always\ninits the index pointer passed to it.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/nilfs2.c | 11 ++++++++---\n 1 file changed, 8 insertions(+), 3 deletions(-)\n\ndiff --git a/grub-core/fs/nilfs2.c b/grub-core/fs/nilfs2.c\nindex 43ac1ad..aaba002 100644\n--- a/grub-core/fs/nilfs2.c\n+++ b/grub-core/fs/nilfs2.c\n@@ -433,7 +433,7 @@ grub_nilfs2_btree_node_lookup (struct grub_nilfs2_data *data,\n \t\t\t       grub_uint64_t key, int *indexp)\n {\n   grub_uint64_t nkey;\n-  int index, low, high, s;\n+  int index = 0, low, high, s;\n \n   low = 0;\n \n@@ -441,10 +441,10 @@ grub_nilfs2_btree_node_lookup (struct grub_nilfs2_data *data,\n   if (high >= grub_nilfs2_btree_node_nchildren_max (data, node))\n     {\n       grub_error (GRUB_ERR_BAD_FS, \"too many children\");\n+      *indexp = index;\n       return 0;\n     }\n \n-  index = 0;\n   s = 0;\n   while (low <= high)\n     {\n@@ -526,6 +526,10 @@ grub_nilfs2_btree_lookup (struct grub_nilfs2_data *data,\n   level = grub_nilfs2_btree_get_level (node);\n \n   found = grub_nilfs2_btree_node_lookup (data, node, key, &index);\n+\n+  if (grub_errno != GRUB_ERR_NONE)\n+    goto fail;\n+\n   ptr = grub_nilfs2_btree_node_get_ptr (data, node, index);\n   if (need_translate)\n     ptr = grub_nilfs2_dat_translate (data, ptr);\n@@ -550,7 +554,8 @@ grub_nilfs2_btree_lookup (struct grub_nilfs2_data *data,\n       else\n \tindex = 0;\n \n-      if (index < grub_nilfs2_btree_node_nchildren_max (data, node))\n+      if (index < grub_nilfs2_btree_node_nchildren_max (data, node) &&\n+\t  grub_errno == GRUB_ERR_NONE)\n \t{\n \t  ptr = grub_nilfs2_btree_node_get_ptr (data, node, index);\n \t  if (need_translate)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0114-io-gzio-Bail-if-gzio-tl-td-is-NULL.patch",
    "content": "From 3334a5e6c86f10e715cca3bf66ce0fc2f164b61b Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Wed, 13 Jan 2021 20:59:09 +1100\nSubject: [PATCH] io/gzio: Bail if gzio->tl/td is NULL\n\nThis is an ugly fix that doesn't address why gzio->tl comes to be NULL.\nHowever, it seems to be sufficient to patch up a bunch of NULL derefs.\n\nIt would be good to revisit this in future and see if we can have\na cleaner solution that addresses some of the causes of the unexpected\nNULL pointers.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/io/gzio.c | 20 ++++++++++++++++++++\n 1 file changed, 20 insertions(+)\n\ndiff --git a/grub-core/io/gzio.c b/grub-core/io/gzio.c\nindex 43d98a7..4a8eaea 100644\n--- a/grub-core/io/gzio.c\n+++ b/grub-core/io/gzio.c\n@@ -669,6 +669,13 @@ inflate_codes_in_window (grub_gzio_t gzio)\n     {\n       if (! gzio->code_state)\n \t{\n+\n+\t  if (gzio->tl == NULL)\n+\t    {\n+\t      grub_error (GRUB_ERR_BAD_COMPRESSED_DATA, \"NULL gzio->tl\");\n+\t      return 1;\n+\t    }\n+\n \t  NEEDBITS ((unsigned) gzio->bl);\n \t  if ((e = (t = gzio->tl + ((unsigned) b & ml))->e) > 16)\n \t    do\n@@ -707,6 +714,12 @@ inflate_codes_in_window (grub_gzio_t gzio)\n \t      n = t->v.n + ((unsigned) b & mask_bits[e]);\n \t      DUMPBITS (e);\n \n+\t      if (gzio->td == NULL)\n+\t\t{\n+\t\t  grub_error (GRUB_ERR_BAD_COMPRESSED_DATA, \"NULL gzio->td\");\n+\t\t  return 1;\n+\t\t}\n+\n \t      /* decode distance of block to copy */\n \t      NEEDBITS ((unsigned) gzio->bd);\n \t      if ((e = (t = gzio->td + ((unsigned) b & md))->e) > 16)\n@@ -917,6 +930,13 @@ init_dynamic_block (grub_gzio_t gzio)\n   n = nl + nd;\n   m = mask_bits[gzio->bl];\n   i = l = 0;\n+\n+  if (gzio->tl == NULL)\n+    {\n+      grub_error (GRUB_ERR_BAD_COMPRESSED_DATA, \"NULL gzio->tl\");\n+      return;\n+    }\n+\n   while ((unsigned) i < n)\n     {\n       NEEDBITS ((unsigned) gzio->bl);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0115-io-gzio-Add-init_dynamic_block-clean-up-if-unpacking.patch",
    "content": "From 18490336d91da2b532277cba56473bfed1376fc4 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Thu, 21 Jan 2021 00:05:58 +1100\nSubject: [PATCH] io/gzio: Add init_dynamic_block() clean up if unpacking codes\n fails\n\ninit_dynamic_block() didn't clean up gzio->tl and td in some error\npaths. This left td pointing to part of tl. Then in grub_gzio_close(),\nwhen tl was freed the storage for td would also be freed. The code then\nattempts to free td explicitly, performing a UAF and then a double free.\n\nExplicitly clean up tl and td in the error paths.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/io/gzio.c | 12 +++++++++---\n 1 file changed, 9 insertions(+), 3 deletions(-)\n\ndiff --git a/grub-core/io/gzio.c b/grub-core/io/gzio.c\nindex 4a8eaea..4236f0f 100644\n--- a/grub-core/io/gzio.c\n+++ b/grub-core/io/gzio.c\n@@ -953,7 +953,7 @@ init_dynamic_block (grub_gzio_t gzio)\n \t  if ((unsigned) i + j > n)\n \t    {\n \t      grub_error (GRUB_ERR_BAD_COMPRESSED_DATA, \"too many codes found\");\n-\t      return;\n+\t      goto fail;\n \t    }\n \t  while (j--)\n \t    ll[i++] = l;\n@@ -966,7 +966,7 @@ init_dynamic_block (grub_gzio_t gzio)\n \t  if ((unsigned) i + j > n)\n \t    {\n \t      grub_error (GRUB_ERR_BAD_COMPRESSED_DATA, \"too many codes found\");\n-\t      return;\n+\t      goto fail;\n \t    }\n \t  while (j--)\n \t    ll[i++] = 0;\n@@ -981,7 +981,7 @@ init_dynamic_block (grub_gzio_t gzio)\n \t  if ((unsigned) i + j > n)\n \t    {\n \t      grub_error (GRUB_ERR_BAD_COMPRESSED_DATA, \"too many codes found\");\n-\t      return;\n+\t      goto fail;\n \t    }\n \t  while (j--)\n \t    ll[i++] = 0;\n@@ -1019,6 +1019,12 @@ init_dynamic_block (grub_gzio_t gzio)\n   /* indicate we're now working on a block */\n   gzio->code_state = 0;\n   gzio->block_len++;\n+  return;\n+\n+ fail:\n+  huft_free (gzio->tl);\n+  gzio->td = NULL;\n+  gzio->tl = NULL;\n }\n \n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0116-io-gzio-Catch-missing-values-in-huft_build-and-bail.patch",
    "content": "From 4e76b08f7171a8603d74fcafb27409a91f578647 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Thu, 21 Jan 2021 12:20:49 +1100\nSubject: [PATCH] io/gzio: Catch missing values in huft_build() and bail\n\nIn huft_build(), \"v\" is a table of values in order of bit length.\nThe code later (when setting up table entries in \"r\") assumes that all\nelements of this array corresponding to a code are initialized and less\nthan N_MAX. However, it doesn't enforce this.\n\nWith sufficiently manipulated inputs (e.g. from fuzzing), there can be\nelements of \"v\" that are not filled. Therefore a lookup into \"e\" or \"d\"\nwill use an uninitialized value. This can lead to an invalid/OOB read on\nthose values, often leading to a crash.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/io/gzio.c | 10 +++++++++-\n 1 file changed, 9 insertions(+), 1 deletion(-)\n\ndiff --git a/grub-core/io/gzio.c b/grub-core/io/gzio.c\nindex 4236f0f..19adebe 100644\n--- a/grub-core/io/gzio.c\n+++ b/grub-core/io/gzio.c\n@@ -507,6 +507,7 @@ huft_build (unsigned *b,\t/* code lengths in bits (all assumed <= BMAX) */\n     }\n \n   /* Make a table of values in order of bit lengths */\n+  grub_memset (v, N_MAX, ARRAY_SIZE (v));\n   p = b;\n   i = 0;\n   do\n@@ -588,11 +589,18 @@ huft_build (unsigned *b,\t/* code lengths in bits (all assumed <= BMAX) */\n \t      r.v.n = (ush) (*p);\t/* simple code is just the value */\n \t      p++;\t\t/* one compiler does not like *p++ */\n \t    }\n-\t  else\n+\t  else if (*p < N_MAX)\n \t    {\n \t      r.e = (uch) e[*p - s];\t/* non-simple--look up in lists */\n \t      r.v.n = d[*p++ - s];\n \t    }\n+\t  else\n+\t    {\n+\t      /* Detected an uninitialised value, abort. */\n+\t      if (h)\n+\t\thuft_free (u[0]);\n+\t      return 2;\n+\t    }\n \n \t  /* fill code-like entries with r */\n \t  f = 1 << (k - w);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0117-io-gzio-Zero-gzio-tl-td-in-init_dynamic_block-if-huf.patch",
    "content": "From b5a2b59cc5b8f5ee7ba3b951e7693e402d5b3a6f Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Thu, 21 Jan 2021 12:22:28 +1100\nSubject: [PATCH] io/gzio: Zero gzio->tl/td in init_dynamic_block() if\n huft_build() fails\n\nIf huft_build() fails, gzio->tl or gzio->td could contain pointers that\nare no longer valid. Zero them out.\n\nThis prevents a double free when grub_gzio_close() comes through and\nattempts to free them again.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/io/gzio.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/grub-core/io/gzio.c b/grub-core/io/gzio.c\nindex 19adebe..aea86a0 100644\n--- a/grub-core/io/gzio.c\n+++ b/grub-core/io/gzio.c\n@@ -1010,6 +1010,7 @@ init_dynamic_block (grub_gzio_t gzio)\n   gzio->bl = lbits;\n   if (huft_build (ll, nl, 257, cplens, cplext, &gzio->tl, &gzio->bl) != 0)\n     {\n+      gzio->tl = 0;\n       grub_error (GRUB_ERR_BAD_COMPRESSED_DATA,\n \t\t  \"failed in building a Huffman code table\");\n       return;\n@@ -1019,6 +1020,7 @@ init_dynamic_block (grub_gzio_t gzio)\n     {\n       huft_free (gzio->tl);\n       gzio->tl = 0;\n+      gzio->td = 0;\n       grub_error (GRUB_ERR_BAD_COMPRESSED_DATA,\n \t\t  \"failed in building a Huffman code table\");\n       return;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0118-disk-lvm-Don-t-go-beyond-the-end-of-the-data-we-read.patch",
    "content": "From a8cc95de74ccc3ad090e8062ac335c844f13c9f4 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Thu, 21 Jan 2021 17:59:14 +1100\nSubject: [PATCH] disk/lvm: Don't go beyond the end of the data we read from\n disk\n\nWe unconditionally trusted offset_xl from the LVM label header, even if\nit told us that the PV header/disk locations were way off past the end\nof the data we read from disk.\n\nRequire that the offset be sane, fixing an OOB read and crash.\n\nFixes: CID 314367, CID 314371\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/disk/lvm.c | 14 ++++++++++++++\n 1 file changed, 14 insertions(+)\n\ndiff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c\nindex 139fafd..8136122 100644\n--- a/grub-core/disk/lvm.c\n+++ b/grub-core/disk/lvm.c\n@@ -141,6 +141,20 @@ grub_lvm_detect (grub_disk_t disk,\n       goto fail;\n     }\n \n+  /*\n+   * We read a grub_lvm_pv_header and then 2 grub_lvm_disk_locns that\n+   * immediately follow the PV header. Make sure we have space for both.\n+   */\n+  if (grub_le_to_cpu32 (lh->offset_xl) >=\n+      GRUB_LVM_LABEL_SIZE - sizeof (struct grub_lvm_pv_header) -\n+      2 * sizeof (struct grub_lvm_disk_locn))\n+    {\n+#ifdef GRUB_UTIL\n+      grub_util_info (\"LVM PV header/disk locations are beyond the end of the block\");\n+#endif\n+      goto fail;\n+    }\n+\n   pvh = (struct grub_lvm_pv_header *) (buf + grub_le_to_cpu32(lh->offset_xl));\n \n   for (i = 0, j = 0; i < GRUB_LVM_ID_LEN; i++)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0119-disk-lvm-Don-t-blast-past-the-end-of-the-circular-me.patch",
    "content": "From 27a79bf38e6d050e497eb96a3fdddce43af25577 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Thu, 21 Jan 2021 18:19:51 +1100\nSubject: [PATCH] disk/lvm: Don't blast past the end of the circular metadata\n buffer\n\nThis catches at least some OOB reads, and it's possible I suppose that\nif 2 * mda_size is less than GRUB_LVM_MDA_HEADER_SIZE it might catch some\nOOB writes too (although that hasn't showed up as a crash in fuzzing yet).\n\nIt's a bit ugly and I'd appreciate better suggestions.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/disk/lvm.c | 10 ++++++++++\n 1 file changed, 10 insertions(+)\n\ndiff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c\nindex 8136122..36da575 100644\n--- a/grub-core/disk/lvm.c\n+++ b/grub-core/disk/lvm.c\n@@ -214,6 +214,16 @@ grub_lvm_detect (grub_disk_t disk,\n   if (grub_le_to_cpu64 (rlocn->offset) + grub_le_to_cpu64 (rlocn->size) >\n       grub_le_to_cpu64 (mdah->size))\n     {\n+      if (2 * mda_size < GRUB_LVM_MDA_HEADER_SIZE ||\n+          (grub_le_to_cpu64 (rlocn->offset) + grub_le_to_cpu64 (rlocn->size) -\n+\t   grub_le_to_cpu64 (mdah->size) > mda_size - GRUB_LVM_MDA_HEADER_SIZE))\n+\t{\n+#ifdef GRUB_UTIL\n+\t  grub_util_info (\"cannot copy metadata wrap in circular buffer\");\n+#endif\n+\t  goto fail2;\n+\t}\n+\n       /* Metadata is circular. Copy the wrap in place. */\n       grub_memcpy (metadatabuf + mda_size,\n \t\t   metadatabuf + GRUB_LVM_MDA_HEADER_SIZE,\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0120-disk-lvm-Bail-on-missing-PV-list.patch",
    "content": "From 2958695c4cdc785de6ed708709af071a2d20afef Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Thu, 21 Jan 2021 18:54:29 +1100\nSubject: [PATCH] disk/lvm: Bail on missing PV list\n\nThere's an if block for the presence of \"physical_volumes {\", but if\nthat block is absent, then p remains NULL and a NULL-deref will result\nwhen looking for logical volumes.\n\nIt doesn't seem like LVM makes sense without physical volumes, so error\nout rather than crashing.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/disk/lvm.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c\nindex 36da575..8e560f3 100644\n--- a/grub-core/disk/lvm.c\n+++ b/grub-core/disk/lvm.c\n@@ -370,6 +370,8 @@ grub_lvm_detect (grub_disk_t disk,\n \t      goto fail4;\n \t    }\n \t}\n+      else\n+        goto fail4;\n \n       p = grub_strstr (p, \"logical_volumes {\");\n       if (p)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0121-disk-lvm-Do-not-crash-if-an-expected-string-is-not-f.patch",
    "content": "From db29073fc7aec71a40dabfc722a96ea9f3280907 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Thu, 21 Jan 2021 18:35:22 +1100\nSubject: [PATCH] disk/lvm: Do not crash if an expected string is not found\n\nClean up a bunch of cases where we could have strstr() fail and lead to\nus dereferencing NULL.\n\nWe'll still leak memory in some cases (loops don't clean up allocations\nfrom earlier iterations if a later iteration fails) but at least we're\nnot crashing.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/disk/lvm.c | 22 +++++++++++++++++-----\n 1 file changed, 17 insertions(+), 5 deletions(-)\n\ndiff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c\nindex 8e560f3..bd5ae87 100644\n--- a/grub-core/disk/lvm.c\n+++ b/grub-core/disk/lvm.c\n@@ -539,7 +539,16 @@ grub_lvm_detect (grub_disk_t disk,\n \t\t\t}\n \n \t\t      if (seg->node_count != 1)\n-\t\t\tseg->stripe_size = grub_lvm_getvalue (&p, \"stripe_size = \");\n+\t\t\t{\n+\t\t\t  seg->stripe_size = grub_lvm_getvalue (&p, \"stripe_size = \");\n+\t\t\t  if (p == NULL)\n+\t\t\t    {\n+#ifdef GRUB_UTIL\n+\t\t\t      grub_util_info (\"unknown stripe_size\");\n+#endif\n+\t\t\t      goto lvs_segment_fail;\n+\t\t\t    }\n+\t\t\t}\n \n \t\t      seg->nodes = grub_calloc (seg->node_count,\n \t\t\t\t\t\tsizeof (*stripe));\n@@ -559,7 +568,7 @@ grub_lvm_detect (grub_disk_t disk,\n \t\t\t{\n \t\t\t  p = grub_strchr (p, '\"');\n \t\t\t  if (p == NULL)\n-\t\t\t    continue;\n+\t\t\t    goto lvs_segment_fail2;\n \t\t\t  q = ++p;\n \t\t\t  while (*q != '\"')\n \t\t\t    q++;\n@@ -578,7 +587,10 @@ grub_lvm_detect (grub_disk_t disk,\n \t\t\t  stripe->start = grub_lvm_getvalue (&p, \",\")\n \t\t\t    * vg->extent_size;\n \t\t\t  if (p == NULL)\n-\t\t\t    continue;\n+\t\t\t    {\n+\t\t\t      grub_free (stripe->name);\n+\t\t\t      goto lvs_segment_fail2;\n+\t\t\t    }\n \n \t\t\t  stripe++;\n \t\t\t}\n@@ -615,7 +627,7 @@ grub_lvm_detect (grub_disk_t disk,\n \n \t\t\t  p = grub_strchr (p, '\"');\n \t\t\t  if (p == NULL)\n-\t\t\t    continue;\n+\t\t\t    goto lvs_segment_fail2;\n \t\t\t  q = ++p;\n \t\t\t  while (*q != '\"')\n \t\t\t    q++;\n@@ -703,7 +715,7 @@ grub_lvm_detect (grub_disk_t disk,\n \t\t\t  p = p ? grub_strchr (p + 1, '\"') : 0;\n \t\t\t  p = p ? grub_strchr (p + 1, '\"') : 0;\n \t\t\t  if (p == NULL)\n-\t\t\t    continue;\n+\t\t\t    goto lvs_segment_fail2;\n \t\t\t  q = ++p;\n \t\t\t  while (*q != '\"')\n \t\t\t    q++;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0122-disk-lvm-Do-not-overread-metadata.patch",
    "content": "From 1155d7dffd3337942cb7583706b429d567d4db86 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Thu, 21 Jan 2021 18:35:22 +1100\nSubject: [PATCH] disk/lvm: Do not overread metadata\n\nWe could reach the end of valid metadata and not realize, leading to\nsome buffer overreads. Check if we have reached the end and bail.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/disk/lvm.c | 31 +++++++++++++++++++++++++------\n 1 file changed, 25 insertions(+), 6 deletions(-)\n\ndiff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c\nindex bd5ae87..742ecd6 100644\n--- a/grub-core/disk/lvm.c\n+++ b/grub-core/disk/lvm.c\n@@ -313,17 +313,23 @@ grub_lvm_detect (grub_disk_t disk,\n \t  while (1)\n \t    {\n \t      grub_ssize_t s;\n-\t      while (grub_isspace (*p))\n+\t      while (grub_isspace (*p) && p < mda_end)\n \t\tp++;\n \n+\t      if (p == mda_end)\n+\t\tgoto fail4;\n+\n \t      if (*p == '}')\n \t\tbreak;\n \n \t      pv = grub_zalloc (sizeof (*pv));\n \t      q = p;\n-\t      while (*q != ' ')\n+\t      while (*q != ' ' && q < mda_end)\n \t\tq++;\n \n+\t      if (q == mda_end)\n+\t\tgoto pvs_fail_noname;\n+\n \t      s = q - p;\n \t      pv->name = grub_malloc (s + 1);\n \t      grub_memcpy (pv->name, p, s);\n@@ -366,6 +372,7 @@ grub_lvm_detect (grub_disk_t disk,\n \t      continue;\n \t    pvs_fail:\n \t      grub_free (pv->name);\n+\t    pvs_fail_noname:\n \t      grub_free (pv);\n \t      goto fail4;\n \t    }\n@@ -387,18 +394,24 @@ grub_lvm_detect (grub_disk_t disk,\n \t      struct grub_diskfilter_segment *seg;\n \t      int is_pvmove;\n \n-\t      while (grub_isspace (*p))\n+\t      while (grub_isspace (*p) && p < mda_end)\n \t\tp++;\n \n+\t      if (p == mda_end)\n+\t\tgoto fail4;\n+\n \t      if (*p == '}')\n \t\tbreak;\n \n \t      lv = grub_zalloc (sizeof (*lv));\n \n \t      q = p;\n-\t      while (*q != ' ')\n+\t      while (*q != ' ' && q < mda_end)\n \t\tq++;\n \n+\t      if (q == mda_end)\n+\t\tgoto lvs_fail;\n+\n \t      s = q - p;\n \t      lv->name = grub_strndup (p, s);\n \t      if (!lv->name)\n@@ -570,9 +583,12 @@ grub_lvm_detect (grub_disk_t disk,\n \t\t\t  if (p == NULL)\n \t\t\t    goto lvs_segment_fail2;\n \t\t\t  q = ++p;\n-\t\t\t  while (*q != '\"')\n+\t\t\t  while (q < mda_end && *q != '\"')\n \t\t\t    q++;\n \n+\t\t\t  if (q == mda_end)\n+\t\t\t    goto lvs_segment_fail2;\n+\n \t\t\t  s = q - p;\n \n \t\t\t  stripe->name = grub_malloc (s + 1);\n@@ -629,9 +645,12 @@ grub_lvm_detect (grub_disk_t disk,\n \t\t\t  if (p == NULL)\n \t\t\t    goto lvs_segment_fail2;\n \t\t\t  q = ++p;\n-\t\t\t  while (*q != '\"')\n+\t\t\t  while (q < mda_end && *q != '\"')\n \t\t\t    q++;\n \n+\t\t\t  if (q == mda_end)\n+\t\t\t    goto lvs_segment_fail2;\n+\n \t\t\t  s = q - p;\n \n \t\t\t  lvname = grub_malloc (s + 1);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0123-disk-lvm-Sanitize-rlocn-offset-to-prevent-wild-read.patch",
    "content": "From 701293684742d00133b39bf957d3642c81dc83f4 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Fri, 22 Jan 2021 14:43:58 +1100\nSubject: [PATCH] disk/lvm: Sanitize rlocn->offset to prevent wild read\n\nrlocn->offset is read directly from disk and added to the metadatabuf\npointer to create a pointer to a block of metadata. It's a 64-bit\nquantity so as long as you don't overflow you can set subsequent\npointers to point anywhere in memory.\n\nRequire that rlocn->offset fits within the metadata buffer size.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/disk/lvm.c | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c\nindex 742ecd6..ed0712f 100644\n--- a/grub-core/disk/lvm.c\n+++ b/grub-core/disk/lvm.c\n@@ -211,6 +211,14 @@ grub_lvm_detect (grub_disk_t disk,\n     }\n \n   rlocn = mdah->raw_locns;\n+  if (grub_le_to_cpu64 (rlocn->offset) >= grub_le_to_cpu64 (mda_size))\n+    {\n+#ifdef GRUB_UTIL\n+      grub_util_info (\"metadata offset is beyond end of metadata area\");\n+#endif\n+      goto fail2;\n+    }\n+\n   if (grub_le_to_cpu64 (rlocn->offset) + grub_le_to_cpu64 (rlocn->size) >\n       grub_le_to_cpu64 (mdah->size))\n     {\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0124-disk-lvm-Do-not-allow-a-LV-to-be-it-s-own-segment-s-.patch",
    "content": "From e18a00073890021362b4a48097672f1d4b340d3c Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Fri, 22 Jan 2021 14:42:21 +1100\nSubject: [PATCH] disk/lvm: Do not allow a LV to be it's own segment's node's\n LV\n\nThis prevents infinite recursion in the diskfilter verification code.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/disk/lvm.c | 10 +++++++---\n 1 file changed, 7 insertions(+), 3 deletions(-)\n\ndiff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c\nindex ed0712f..81dc375 100644\n--- a/grub-core/disk/lvm.c\n+++ b/grub-core/disk/lvm.c\n@@ -838,9 +838,13 @@ grub_lvm_detect (grub_disk_t disk,\n \t\t    }\n \t\tif (lv1->segments[i].nodes[j].pv == NULL)\n \t\t  for (lv2 = vg->lvs; lv2; lv2 = lv2->next)\n-\t\t    if (grub_strcmp (lv2->name,\n-\t\t\t\t     lv1->segments[i].nodes[j].name) == 0)\n-\t\t      lv1->segments[i].nodes[j].lv = lv2;\n+\t\t    {\n+\t\t      if (lv1 == lv2)\n+\t\t        continue;\n+\t\t      if (grub_strcmp (lv2->name,\n+\t\t\t\t       lv1->segments[i].nodes[j].name) == 0)\n+\t\t\tlv1->segments[i].nodes[j].lv = lv2;\n+\t\t    }\n \t      }\n \t\n       }\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0125-fs-btrfs-Validate-the-number-of-stripes-parities-in-.patch",
    "content": "From b88a82e78cdd0ab8e0339c1c3f9564c4d8c0c969 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 18 Jan 2021 17:17:16 +1100\nSubject: [PATCH] fs/btrfs: Validate the number of stripes/parities in RAID5/6\n\nThis prevents a divide by zero if nstripes == nparities, and\nalso prevents propagation of invalid values if nstripes ends up\nless than nparities.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/btrfs.c | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c\nindex 2b65bd5..e4e87ba 100644\n--- a/grub-core/fs/btrfs.c\n+++ b/grub-core/fs/btrfs.c\n@@ -1076,6 +1076,9 @@ grub_btrfs_read_logical (struct grub_btrfs_data *data, grub_disk_addr_t addr,\n \t       * stripen is computed without the parities\n \t       * (0 for A0, A1, A2, 1 for B0, B1, B2, etc.).\n \t       */\n+\t      if (nparities >= nstripes)\n+\t\treturn grub_error (GRUB_ERR_BAD_FS,\n+\t\t\t\t   \"invalid RAID5/6: nparities >= nstripes\");\n \t      high = grub_divmod64 (stripe_nr, nstripes - nparities, &stripen);\n \n \t      /*\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0126-fs-btrfs-Squash-some-uninitialized-reads.patch",
    "content": "From b911884dd707ba1e6f641eb17857df3155013a45 Mon Sep 17 00:00:00 2001\nFrom: Daniel Axtens <dja@axtens.net>\nDate: Mon, 18 Jan 2021 17:27:18 +1100\nSubject: [PATCH] fs/btrfs: Squash some uninitialized reads\n\nWe need to check errors before calling into a function that uses the result.\n\nSigned-off-by: Daniel Axtens <dja@axtens.net>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/fs/btrfs.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c\nindex e4e87ba..d489cb0 100644\n--- a/grub-core/fs/btrfs.c\n+++ b/grub-core/fs/btrfs.c\n@@ -381,9 +381,9 @@ next (struct grub_btrfs_data *data,\n \n       err = grub_btrfs_read_logical (data, grub_le_to_cpu64 (node.addr),\n \t\t\t\t     &head, sizeof (head), 0);\n-      check_btrfs_header (data, &head, grub_le_to_cpu64 (node.addr));\n       if (err)\n \treturn -err;\n+      check_btrfs_header (data, &head, grub_le_to_cpu64 (node.addr));\n \n       save_ref (desc, grub_le_to_cpu64 (node.addr), 0,\n \t\tgrub_le_to_cpu32 (head.nitems), !head.level);\n@@ -443,9 +443,9 @@ lower_bound (struct grub_btrfs_data *data,\n       /* FIXME: preread few nodes into buffer. */\n       err = grub_btrfs_read_logical (data, addr, &head, sizeof (head),\n \t\t\t\t     recursion_depth + 1);\n-      check_btrfs_header (data, &head, addr);\n       if (err)\n \treturn err;\n+      check_btrfs_header (data, &head, addr);\n       addr += sizeof (head);\n       if (head.level)\n \t{\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0127-kern-parser-Fix-a-memory-leak.patch",
    "content": "From c6c426e5ab6ea715153b72584de6bd8c82f698ec Mon Sep 17 00:00:00 2001\nFrom: Chris Coulson <chris.coulson@canonical.com>\nDate: Wed, 18 Nov 2020 00:59:24 +0000\nSubject: [PATCH] kern/parser: Fix a memory leak\n\nThe getline() function supplied to grub_parser_split_cmdline() returns\na newly allocated buffer and can be called multiple times, but the\nreturned buffer is never freed.\n\nSigned-off-by: Chris Coulson <chris.coulson@canonical.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/parser.c | 20 ++++++++++++++++----\n 1 file changed, 16 insertions(+), 4 deletions(-)\n\ndiff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c\nindex d1cf061..39e4df6 100644\n--- a/grub-core/kern/parser.c\n+++ b/grub-core/kern/parser.c\n@@ -140,6 +140,7 @@ grub_parser_split_cmdline (const char *cmdline,\n   char buffer[1024];\n   char *bp = buffer;\n   char *rd = (char *) cmdline;\n+  char *rp = rd;\n   char varname[200];\n   char *vp = varname;\n   char *args;\n@@ -149,10 +150,18 @@ grub_parser_split_cmdline (const char *cmdline,\n   *argv = NULL;\n   do\n     {\n-      if (!rd || !*rd)\n+      if (rp == NULL || *rp == '\\0')\n \t{\n+\t  if (rd != cmdline)\n+\t    {\n+\t      grub_free (rd);\n+\t      rd = rp = NULL;\n+\t    }\n \t  if (getline)\n-\t    getline (&rd, 1, getline_data);\n+\t    {\n+\t      getline (&rd, 1, getline_data);\n+\t      rp = rd;\n+\t    }\n \t  else\n \t    break;\n \t}\n@@ -160,12 +169,12 @@ grub_parser_split_cmdline (const char *cmdline,\n       if (!rd)\n \tbreak;\n \n-      for (; *rd; rd++)\n+      for (; *rp != '\\0'; rp++)\n \t{\n \t  grub_parser_state_t newstate;\n \t  char use;\n \n-\t  newstate = grub_parser_cmdline_state (state, *rd, &use);\n+\t  newstate = grub_parser_cmdline_state (state, *rp, &use);\n \n \t  /* If a variable was being processed and this character does\n \t     not describe the variable anymore, write the variable to\n@@ -198,6 +207,9 @@ grub_parser_split_cmdline (const char *cmdline,\n     }\n   while (state != GRUB_PARSER_STATE_TEXT && !check_varstate (state));\n \n+  if (rd != cmdline)\n+    grub_free (rd);\n+\n   /* A special case for when the last character was part of a\n      variable.  */\n   add_var (varname, &bp, &vp, state, GRUB_PARSER_STATE_TEXT);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0128-kern-parser-Introduce-process_char-helper.patch",
    "content": "From b1c9e9e889e4273fb15712051c887e6078511448 Mon Sep 17 00:00:00 2001\nFrom: Chris Coulson <chris.coulson@canonical.com>\nDate: Tue, 5 Jan 2021 22:17:28 +0000\nSubject: [PATCH] kern/parser: Introduce process_char() helper\n\ngrub_parser_split_cmdline() iterates over each command line character.\nIn order to add error checking and to simplify the subsequent error\nhandling, split the character processing in to a separate function.\n\nSigned-off-by: Chris Coulson <chris.coulson@canonical.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/parser.c | 74 ++++++++++++++++++++++++++++++-------------------\n 1 file changed, 46 insertions(+), 28 deletions(-)\n\ndiff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c\nindex 39e4df6..0d3582b 100644\n--- a/grub-core/kern/parser.c\n+++ b/grub-core/kern/parser.c\n@@ -1,7 +1,7 @@\n /* parser.c - the part of the parser that can return partial tokens */\n /*\n  *  GRUB  --  GRand Unified Bootloader\n- *  Copyright (C) 2005,2007,2009  Free Software Foundation, Inc.\n+ *  Copyright (C) 2005,2007,2009,2021  Free Software Foundation, Inc.\n  *\n  *  GRUB is free software: you can redistribute it and/or modify\n  *  it under the terms of the GNU General Public License as published by\n@@ -129,6 +129,46 @@ add_var (char *varname, char **bp, char **vp,\n     *((*bp)++) = *val;\n }\n \n+static grub_err_t\n+process_char (char c, char *buffer, char **bp, char *varname, char **vp,\n+\t      grub_parser_state_t state, int *argc,\n+\t      grub_parser_state_t *newstate)\n+{\n+  char use;\n+\n+  *newstate = grub_parser_cmdline_state (state, c, &use);\n+\n+  /*\n+   * If a variable was being processed and this character does\n+   * not describe the variable anymore, write the variable to\n+   * the buffer.\n+   */\n+  add_var (varname, bp, vp, state, *newstate);\n+\n+  if (check_varstate (*newstate))\n+    {\n+      if (use)\n+\t*((*vp)++) = use;\n+    }\n+  else if (*newstate == GRUB_PARSER_STATE_TEXT &&\n+\t   state != GRUB_PARSER_STATE_ESC && grub_isspace (use))\n+    {\n+      /*\n+       * Don't add more than one argument if multiple\n+       * spaces are used.\n+       */\n+      if (*bp != buffer && *((*bp) - 1) != '\\0')\n+\t{\n+\t  *((*bp)++) = '\\0';\n+\t  (*argc)++;\n+\t}\n+    }\n+  else if (use)\n+    *((*bp)++) = use;\n+\n+  return GRUB_ERR_NONE;\n+}\n+\n grub_err_t\n grub_parser_split_cmdline (const char *cmdline,\n \t\t\t   grub_reader_getline_t getline, void *getline_data,\n@@ -172,35 +212,13 @@ grub_parser_split_cmdline (const char *cmdline,\n       for (; *rp != '\\0'; rp++)\n \t{\n \t  grub_parser_state_t newstate;\n-\t  char use;\n-\n-\t  newstate = grub_parser_cmdline_state (state, *rp, &use);\n \n-\t  /* If a variable was being processed and this character does\n-\t     not describe the variable anymore, write the variable to\n-\t     the buffer.  */\n-\t  add_var (varname, &bp, &vp, state, newstate);\n-\n-\t  if (check_varstate (newstate))\n-\t    {\n-\t      if (use)\n-\t\t*(vp++) = use;\n-\t    }\n-\t  else\n+\t  if (process_char (*rp, buffer, &bp, varname, &vp, state, argc,\n+\t\t\t    &newstate) != GRUB_ERR_NONE)\n \t    {\n-\t      if (newstate == GRUB_PARSER_STATE_TEXT\n-\t\t  && state != GRUB_PARSER_STATE_ESC && grub_isspace (use))\n-\t\t{\n-\t\t  /* Don't add more than one argument if multiple\n-\t\t     spaces are used.  */\n-\t\t  if (bp != buffer && *(bp - 1))\n-\t\t    {\n-\t\t      *(bp++) = '\\0';\n-\t\t      (*argc)++;\n-\t\t    }\n-\t\t}\n-\t      else if (use)\n-\t\t*(bp++) = use;\n+\t      if (rd != cmdline)\n+\t\tgrub_free (rd);\n+\t      return grub_errno;\n \t    }\n \t  state = newstate;\n \t}\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0129-kern-parser-Introduce-terminate_arg-helper.patch",
    "content": "From 3d157bbd06506b170fde5ec23980c4bf9f7660e2 Mon Sep 17 00:00:00 2001\nFrom: Chris Coulson <chris.coulson@canonical.com>\nDate: Thu, 7 Jan 2021 19:53:55 +0000\nSubject: [PATCH] kern/parser: Introduce terminate_arg() helper\n\nprocess_char() and grub_parser_split_cmdline() use similar code for\nterminating the most recent argument. Add a helper function for this.\n\nSigned-off-by: Chris Coulson <chris.coulson@canonical.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/parser.c | 23 +++++++++++++----------\n 1 file changed, 13 insertions(+), 10 deletions(-)\n\ndiff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c\nindex 0d3582b..572c670 100644\n--- a/grub-core/kern/parser.c\n+++ b/grub-core/kern/parser.c\n@@ -129,6 +129,16 @@ add_var (char *varname, char **bp, char **vp,\n     *((*bp)++) = *val;\n }\n \n+static void\n+terminate_arg (char *buffer, char **bp, int *argc)\n+{\n+  if (*bp != buffer && *((*bp) - 1) != '\\0')\n+    {\n+      *((*bp)++) = '\\0';\n+      (*argc)++;\n+    }\n+}\n+\n static grub_err_t\n process_char (char c, char *buffer, char **bp, char *varname, char **vp,\n \t      grub_parser_state_t state, int *argc,\n@@ -157,11 +167,7 @@ process_char (char c, char *buffer, char **bp, char *varname, char **vp,\n        * Don't add more than one argument if multiple\n        * spaces are used.\n        */\n-      if (*bp != buffer && *((*bp) - 1) != '\\0')\n-\t{\n-\t  *((*bp)++) = '\\0';\n-\t  (*argc)++;\n-\t}\n+      terminate_arg (buffer, bp, argc);\n     }\n   else if (use)\n     *((*bp)++) = use;\n@@ -232,11 +238,8 @@ grub_parser_split_cmdline (const char *cmdline,\n      variable.  */\n   add_var (varname, &bp, &vp, state, GRUB_PARSER_STATE_TEXT);\n \n-  if (bp != buffer && *(bp - 1))\n-    {\n-      *(bp++) = '\\0';\n-      (*argc)++;\n-    }\n+  /* Ensure that the last argument is terminated. */\n+  terminate_arg (buffer, &bp, argc);\n \n   /* If there are no args, then we're done. */\n   if (!*argc)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0130-kern-parser-Refactor-grub_parser_split_cmdline-clean.patch",
    "content": "From 8bc817014ce3d7a498db44eae33c8b90e2430926 Mon Sep 17 00:00:00 2001\nFrom: Chris Coulson <chris.coulson@canonical.com>\nDate: Wed, 6 Jan 2021 13:54:26 +0000\nSubject: [PATCH] kern/parser: Refactor grub_parser_split_cmdline() cleanup\n\nIntroduce a common function epilogue used for cleaning up on all\nreturn paths, which will simplify additional error handling to be\nintroduced in a subsequent commit.\n\nSigned-off-by: Chris Coulson <chris.coulson@canonical.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/parser.c | 35 ++++++++++++++++++++---------------\n 1 file changed, 20 insertions(+), 15 deletions(-)\n\ndiff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c\nindex 572c670..e010eaa 100644\n--- a/grub-core/kern/parser.c\n+++ b/grub-core/kern/parser.c\n@@ -221,19 +221,13 @@ grub_parser_split_cmdline (const char *cmdline,\n \n \t  if (process_char (*rp, buffer, &bp, varname, &vp, state, argc,\n \t\t\t    &newstate) != GRUB_ERR_NONE)\n-\t    {\n-\t      if (rd != cmdline)\n-\t\tgrub_free (rd);\n-\t      return grub_errno;\n-\t    }\n+\t    goto fail;\n+\n \t  state = newstate;\n \t}\n     }\n   while (state != GRUB_PARSER_STATE_TEXT && !check_varstate (state));\n \n-  if (rd != cmdline)\n-    grub_free (rd);\n-\n   /* A special case for when the last character was part of a\n      variable.  */\n   add_var (varname, &bp, &vp, state, GRUB_PARSER_STATE_TEXT);\n@@ -243,20 +237,20 @@ grub_parser_split_cmdline (const char *cmdline,\n \n   /* If there are no args, then we're done. */\n   if (!*argc)\n-    return 0;\n+    {\n+      grub_errno = GRUB_ERR_NONE;\n+      goto out;\n+    }\n \n   /* Reserve memory for the return values.  */\n   args = grub_malloc (bp - buffer);\n   if (!args)\n-    return grub_errno;\n+    goto fail;\n   grub_memcpy (args, buffer, bp - buffer);\n \n   *argv = grub_calloc (*argc + 1, sizeof (char *));\n   if (!*argv)\n-    {\n-      grub_free (args);\n-      return grub_errno;\n-    }\n+    goto fail;\n \n   /* The arguments are separated with 0's, setup argv so it points to\n      the right values.  */\n@@ -269,7 +263,18 @@ grub_parser_split_cmdline (const char *cmdline,\n       bp++;\n     }\n \n-  return 0;\n+  grub_errno = GRUB_ERR_NONE;\n+\n+ out:\n+  if (rd != cmdline)\n+    grub_free (rd);\n+\n+  return grub_errno;\n+\n+ fail:\n+  grub_free (*argv);\n+  grub_free (args);\n+  goto out;\n }\n \n /* Helper for grub_parser_execute.  */\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0131-kern-buffer-Add-variable-sized-heap-buffer.patch",
    "content": "From 030fb6c4fa354cdbd6a8d6903dfed5d36eaf3cb2 Mon Sep 17 00:00:00 2001\nFrom: Chris Coulson <chris.coulson@canonical.com>\nDate: Thu, 7 Jan 2021 15:15:43 +0000\nSubject: [PATCH] kern/buffer: Add variable sized heap buffer\n\nAdd a new variable sized heap buffer type (grub_buffer_t) with simple\noperations for appending data, accessing the data and maintaining\na read cursor.\n\nSigned-off-by: Chris Coulson <chris.coulson@canonical.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n[Add changes to generated files]\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/Makefile.core.am  |  46 +++---\n grub-core/Makefile.core.def |   1 +\n grub-core/Makefile.in       | 341 +++++++++++++++++++++++++-------------------\n grub-core/kern/buffer.c     | 117 +++++++++++++++\n include/grub/buffer.h       | 144 +++++++++++++++++++\n po/POTFILES.in              |   2 +\n 6 files changed, 485 insertions(+), 166 deletions(-)\n create mode 100644 grub-core/kern/buffer.c\n create mode 100644 include/grub/buffer.h\n\ndiff --git a/grub-core/Makefile.core.am b/grub-core/Makefile.core.am\nindex fbfb627..2fa9a8e 100644\n--- a/grub-core/Makefile.core.am\n+++ b/grub-core/Makefile.core.am\n@@ -22334,7 +22334,7 @@ gcry_whirlpool.marker: $(gcry_whirlpool_module_SOURCES) $(nodist_gcry_whirlpool_\n if COND_emu\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = \n-kernel_exec_SOURCES += disk/host.c kern/emu/cache_s.S kern/emu/hostdisk.c osdep/unix/hostdisk.c osdep/exec.c osdep/devmapper/hostdisk.c osdep/hostdisk.c kern/emu/hostfs.c kern/emu/main.c kern/emu/argp_common.c kern/emu/misc.c kern/emu/mm.c kern/emu/time.c kern/emu/cache.c osdep/emuconsole.c osdep/dl.c osdep/sleep.c osdep/init.c osdep/emunet.c osdep/cputime.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += disk/host.c kern/emu/cache_s.S kern/emu/hostdisk.c osdep/unix/hostdisk.c osdep/exec.c osdep/devmapper/hostdisk.c osdep/hostdisk.c kern/emu/hostfs.c kern/emu/main.c kern/emu/argp_common.c kern/emu/misc.c kern/emu/mm.c kern/emu/time.c kern/emu/cache.c osdep/emuconsole.c osdep/dl.c osdep/sleep.c osdep/init.c osdep/emunet.c osdep/cputime.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  =  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) $(CFLAGS_GNULIB) \n@@ -22356,7 +22356,7 @@ endif\n if COND_i386_pc\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/pc/startup.S \n-kernel_exec_SOURCES += kern/i386/pc/init.c kern/i386/pc/mmap.c term/i386/pc/console.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/i386/pc/init.c kern/i386/pc/mmap.c term/i386/pc/console.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22378,7 +22378,7 @@ endif\n if COND_i386_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/efi/startup.S \n-kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/i386/efi/init.c bus/pci.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/i386/efi/init.c bus/pci.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22400,7 +22400,7 @@ endif\n if COND_i386_qemu\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/qemu/startup.S \n-kernel_exec_SOURCES += kern/i386/qemu/init.c bus/pci.c kern/vga_init.c kern/i386/qemu/mmap.c term/i386/pc/vga_text.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/i386/qemu/init.c bus/pci.c kern/vga_init.c kern/i386/qemu/mmap.c term/i386/pc/vga_text.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22422,7 +22422,7 @@ endif\n if COND_i386_coreboot\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/coreboot/startup.S \n-kernel_exec_SOURCES += kern/i386/coreboot/init.c kern/i386/pc/acpi.c kern/acpi.c kern/i386/tsc_pmtimer.c kern/i386/coreboot/cbtable.c video/coreboot/cbfb.c kern/coreboot/mmap.c kern/coreboot/cbtable.c term/gfxterm.c font/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c video/video.c term/i386/pc/vga_text.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/i386/coreboot/init.c kern/i386/pc/acpi.c kern/acpi.c kern/i386/tsc_pmtimer.c kern/i386/coreboot/cbtable.c video/coreboot/cbfb.c kern/coreboot/mmap.c kern/coreboot/cbtable.c term/gfxterm.c font/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c video/video.c term/i386/pc/vga_text.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22444,7 +22444,7 @@ endif\n if COND_i386_multiboot\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/coreboot/startup.S \n-kernel_exec_SOURCES += kern/i386/coreboot/init.c kern/i386/pc/acpi.c kern/acpi.c kern/i386/multiboot_mmap.c term/i386/pc/vga_text.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/i386/coreboot/init.c kern/i386/pc/acpi.c kern/acpi.c kern/i386/multiboot_mmap.c term/i386/pc/vga_text.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22466,7 +22466,7 @@ endif\n if COND_i386_ieee1275\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/ieee1275/startup.S \n-kernel_exec_SOURCES += disk/ieee1275/ofdisk.c kern/ieee1275/cmain.c kern/ieee1275/ieee1275.c kern/ieee1275/mmap.c kern/ieee1275/openfw.c term/ieee1275/console.c kern/ieee1275/init.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += disk/ieee1275/ofdisk.c kern/ieee1275/cmain.c kern/ieee1275/ieee1275.c kern/ieee1275/mmap.c kern/ieee1275/openfw.c term/ieee1275/console.c kern/ieee1275/init.c kern/i386/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22488,7 +22488,7 @@ endif\n if COND_x86_64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/x86_64/efi/startup.S \n-kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/x86_64/efi/callwrap.S kern/i386/efi/init.c bus/pci.c kern/x86_64/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/i386/efi/tsc.c kern/i386/tsc_pmtimer.c kern/x86_64/efi/callwrap.S kern/i386/efi/init.c bus/pci.c kern/x86_64/dl.c kern/i386/tsc.c kern/i386/tsc_pit.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22510,7 +22510,7 @@ endif\n if COND_i386_xen\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/xen/startup.S \n-kernel_exec_SOURCES += kern/i386/dl.c kern/i386/xen/hypercall.S kern/i386/tsc.c kern/i386/xen/tsc.c kern/xen/init.c term/xen/console.c disk/xen/xendisk.c commands/boot.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/i386/dl.c kern/i386/xen/hypercall.S kern/i386/tsc.c kern/i386/xen/tsc.c kern/xen/init.c term/xen/console.c disk/xen/xendisk.c commands/boot.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22532,7 +22532,7 @@ endif\n if COND_x86_64_xen\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/x86_64/xen/startup.S \n-kernel_exec_SOURCES += kern/x86_64/dl.c kern/x86_64/xen/hypercall.S kern/i386/tsc.c kern/i386/xen/tsc.c kern/xen/init.c term/xen/console.c disk/xen/xendisk.c commands/boot.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/x86_64/dl.c kern/x86_64/xen/hypercall.S kern/i386/tsc.c kern/i386/xen/tsc.c kern/xen/init.c term/xen/console.c disk/xen/xendisk.c commands/boot.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22554,7 +22554,7 @@ endif\n if COND_i386_xen_pvh\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/i386/xen/startup_pvh.S \n-kernel_exec_SOURCES += kern/i386/dl.c commands/boot.c disk/xen/xendisk.c kern/i386/tsc.c kern/i386/xen/tsc.c kern/i386/xen/pvh.c kern/xen/init.c term/xen/console.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/i386/dl.c commands/boot.c disk/xen/xendisk.c kern/i386/tsc.c kern/i386/xen/tsc.c kern/i386/xen/pvh.c kern/xen/init.c term/xen/console.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22576,7 +22576,7 @@ endif\n if COND_mips_loongson\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/mips/startup.S \n-kernel_exec_SOURCES += term/ns8250.c bus/bonito.c bus/cs5536.c bus/pci.c kern/mips/loongson/init.c term/at_keyboard.c term/ps2.c commands/boot.c term/serial.c video/sm712.c video/sis315pro.c video/radeon_fuloong2e.c video/radeon_yeeloong3a.c commands/keylayouts.c term/gfxterm.c font/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c video/video.c kern/generic/rtc_get_time_ms.c kern/mips/cache.S kern/mips/dl.c kern/mips/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += term/ns8250.c bus/bonito.c bus/cs5536.c bus/pci.c kern/mips/loongson/init.c term/at_keyboard.c term/ps2.c commands/boot.c term/serial.c video/sm712.c video/sis315pro.c video/radeon_fuloong2e.c video/radeon_yeeloong3a.c commands/keylayouts.c term/gfxterm.c font/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c video/video.c kern/generic/rtc_get_time_ms.c kern/mips/cache.S kern/mips/dl.c kern/mips/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22598,7 +22598,7 @@ endif\n if COND_sparc64_ieee1275\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/sparc64/ieee1275/crt0.S \n-kernel_exec_SOURCES += kern/sparc64/cache.S kern/sparc64/dl.c kern/sparc64/ieee1275/ieee1275.c disk/ieee1275/obdisk.c disk/ieee1275/ofdisk.c kern/ieee1275/cmain.c kern/ieee1275/ieee1275.c kern/ieee1275/mmap.c kern/ieee1275/openfw.c term/ieee1275/console.c kern/ieee1275/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/sparc64/cache.S kern/sparc64/dl.c kern/sparc64/ieee1275/ieee1275.c disk/ieee1275/obdisk.c disk/ieee1275/ofdisk.c kern/ieee1275/cmain.c kern/ieee1275/ieee1275.c kern/ieee1275/mmap.c kern/ieee1275/openfw.c term/ieee1275/console.c kern/ieee1275/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22620,7 +22620,7 @@ endif\n if COND_powerpc_ieee1275\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/powerpc/ieee1275/startup.S \n-kernel_exec_SOURCES += kern/powerpc/cache.S kern/powerpc/dl.c kern/powerpc/compiler-rt.S disk/ieee1275/ofdisk.c kern/ieee1275/cmain.c kern/ieee1275/ieee1275.c kern/ieee1275/mmap.c kern/ieee1275/openfw.c term/ieee1275/console.c kern/ieee1275/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/powerpc/cache.S kern/powerpc/dl.c kern/powerpc/compiler-rt.S disk/ieee1275/ofdisk.c kern/ieee1275/cmain.c kern/ieee1275/ieee1275.c kern/ieee1275/mmap.c kern/ieee1275/openfw.c term/ieee1275/console.c kern/ieee1275/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22642,7 +22642,7 @@ endif\n if COND_mips_arc\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/mips/startup.S \n-kernel_exec_SOURCES += kern/mips/arc/init.c term/arc/console.c disk/arc/arcdisk.c kern/generic/rtc_get_time_ms.c kern/mips/cache.S kern/mips/dl.c kern/mips/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/mips/arc/init.c term/arc/console.c disk/arc/arcdisk.c kern/generic/rtc_get_time_ms.c kern/mips/cache.S kern/mips/dl.c kern/mips/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22664,7 +22664,7 @@ endif\n if COND_ia64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = \n-kernel_exec_SOURCES += kern/ia64/efi/startup.S kern/ia64/efi/init.c kern/ia64/dl.c kern/ia64/dl_helper.c kern/ia64/cache.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/ia64/efi/startup.S kern/ia64/efi/init.c kern/ia64/dl.c kern/ia64/dl_helper.c kern/ia64/cache.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) -fno-builtin -fpic -minline-int-divide-max-throughput \n@@ -22686,7 +22686,7 @@ endif\n if COND_mips_qemu_mips\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/mips/startup.S \n-kernel_exec_SOURCES += kern/mips/qemu_mips/init.c term/ns8250.c term/serial.c term/at_keyboard.c term/ps2.c commands/boot.c commands/keylayouts.c term/i386/pc/vga_text.c kern/vga_init.c kern/generic/rtc_get_time_ms.c kern/mips/cache.S kern/mips/dl.c kern/mips/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/mips/qemu_mips/init.c term/ns8250.c term/serial.c term/at_keyboard.c term/ps2.c commands/boot.c commands/keylayouts.c term/i386/pc/vga_text.c kern/vga_init.c kern/generic/rtc_get_time_ms.c kern/mips/cache.S kern/mips/dl.c kern/mips/init.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22708,7 +22708,7 @@ endif\n if COND_arm_uboot\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/arm/startup.S \n-kernel_exec_SOURCES += kern/arm/uboot/init.c kern/arm/uboot/uboot.S disk/uboot/ubootdisk.c kern/uboot/uboot.c kern/uboot/init.c kern/uboot/hw.c term/uboot/console.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/arm/uboot/init.c kern/arm/uboot/uboot.S disk/uboot/ubootdisk.c kern/uboot/uboot.c kern/uboot/init.c kern/uboot/hw.c term/uboot/console.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c term/terminfo.c term/tparm.c commands/extcmd.c lib/arg.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22730,7 +22730,7 @@ endif\n if COND_arm_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/arm/efi/startup.S \n-kernel_exec_SOURCES += kern/arm/efi/init.c kern/efi/fdt.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/arm/efi/init.c kern/efi/fdt.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22752,7 +22752,7 @@ endif\n if COND_arm64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/arm64/efi/startup.S \n-kernel_exec_SOURCES += kern/arm64/efi/init.c kern/efi/fdt.c kern/arm64/cache.c kern/arm64/cache_flush.S kern/arm64/dl.c kern/arm64/dl_helper.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/arm64/efi/init.c kern/efi/fdt.c kern/arm64/cache.c kern/arm64/cache_flush.S kern/arm64/dl.c kern/arm64/dl_helper.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22774,7 +22774,7 @@ endif\n if COND_arm_coreboot\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/arm/startup.S \n-kernel_exec_SOURCES += kern/arm/coreboot/init.c kern/arm/coreboot/timer.c kern/arm/coreboot/coreboot.S lib/fdt.c bus/fdt.c term/ps2.c term/arm/pl050.c term/arm/cros.c term/arm/cros_ec.c bus/spi/rk3288_spi.c commands/keylayouts.c kern/arm/coreboot/dma.c kern/arm/coreboot/cbtable.c video/coreboot/cbfb.c kern/coreboot/mmap.c kern/coreboot/cbtable.c term/gfxterm.c font/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c video/video.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/arm/coreboot/init.c kern/arm/coreboot/timer.c kern/arm/coreboot/coreboot.S lib/fdt.c bus/fdt.c term/ps2.c term/arm/pl050.c term/arm/cros.c term/arm/cros_ec.c bus/spi/rk3288_spi.c commands/keylayouts.c kern/arm/coreboot/dma.c kern/arm/coreboot/cbtable.c video/coreboot/cbfb.c kern/coreboot/mmap.c kern/coreboot/cbtable.c term/gfxterm.c font/font.c font/font_cmd.c io/bufio.c video/fb/fbblit.c video/fb/fbfill.c video/fb/fbutil.c video/fb/video_fb.c video/video.c kern/arm/dl.c kern/arm/dl_helper.c kern/arm/cache_armv6.S kern/arm/cache_armv7.S kern/arm/cache.c kern/arm/compiler-rt.S lib/division.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22796,7 +22796,7 @@ endif\n if COND_riscv32_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/riscv/efi/startup.S \n-kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c lib/division.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \n@@ -22818,7 +22818,7 @@ endif\n if COND_riscv64_efi\n platform_PROGRAMS += kernel.exec\n kernel_exec_SOURCES  = kern/riscv/efi/startup.S \n-kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n+kernel_exec_SOURCES += kern/riscv/efi/init.c kern/efi/fdt.c kern/riscv/cache.c kern/riscv/cache_flush.S kern/riscv/dl.c disk/efi/efidisk.c kern/efi/efi.c kern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c kern/efi/acpi.c kern/efi/sb.c kern/lockdown.c kern/compiler-rt.c kern/mm.c kern/time.c kern/generic/millisleep.c kern/buffer.c kern/command.c kern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c kern/parser.c kern/partition.c kern/rescue_parser.c kern/rescue_reader.c kern/term.c kern/verifiers.c \n nodist_kernel_exec_SOURCES  = symlist.c  ## platform nodist sources\n kernel_exec_LDADD  = \n kernel_exec_CFLAGS  = $(AM_CFLAGS) $(CFLAGS_KERNEL) \ndiff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def\nindex ee8dc55..291b58a 100644\n--- a/grub-core/Makefile.core.def\n+++ b/grub-core/Makefile.core.def\n@@ -123,6 +123,7 @@ kernel = {\n   riscv32_efi_startup = kern/riscv/efi/startup.S;\n   riscv64_efi_startup = kern/riscv/efi/startup.S;\n \n+  common = kern/buffer.c;\n   common = kern/command.c;\n   common = kern/corecmd.c;\n   common = kern/device.c;\ndiff --git a/grub-core/Makefile.in b/grub-core/Makefile.in\nindex ac400ea..1f8133b 100644\n--- a/grub-core/Makefile.in\n+++ b/grub-core/Makefile.in\n@@ -10459,12 +10459,12 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n \tkern/efi/init.c kern/efi/mm.c term/efi/console.c kern/acpi.c \\\n \tkern/efi/acpi.c kern/efi/sb.c kern/lockdown.c \\\n \tkern/compiler-rt.c kern/mm.c kern/time.c \\\n-\tkern/generic/millisleep.c kern/command.c kern/corecmd.c \\\n-\tkern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c \\\n-\tkern/file.c kern/fs.c kern/list.c kern/main.c kern/misc.c \\\n-\tkern/parser.c kern/partition.c kern/rescue_parser.c \\\n-\tkern/rescue_reader.c kern/term.c kern/verifiers.c \\\n-\tkern/arm/startup.S kern/arm/coreboot/init.c \\\n+\tkern/generic/millisleep.c kern/buffer.c kern/command.c \\\n+\tkern/corecmd.c kern/device.c kern/disk.c kern/dl.c kern/env.c \\\n+\tkern/err.c kern/file.c kern/fs.c kern/list.c kern/main.c \\\n+\tkern/misc.c kern/parser.c kern/partition.c \\\n+\tkern/rescue_parser.c kern/rescue_reader.c kern/term.c \\\n+\tkern/verifiers.c kern/arm/startup.S kern/arm/coreboot/init.c \\\n \tkern/arm/coreboot/timer.c kern/arm/coreboot/coreboot.S \\\n \tlib/fdt.c bus/fdt.c term/ps2.c term/arm/pl050.c \\\n \tterm/arm/cros.c term/arm/cros_ec.c bus/spi/rk3288_spi.c \\\n@@ -10538,6 +10538,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_FALSE@@COND_x86_64_xen_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -10578,6 +10579,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_FALSE@@COND_x86_64_efi_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -10616,6 +10618,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_FALSE@@COND_sparc64_ieee1275_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -10653,6 +10656,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_FALSE@@COND_riscv64_efi_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -10691,6 +10695,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_FALSE@@COND_riscv32_efi_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -10728,6 +10733,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_FALSE@@COND_powerpc_ieee1275_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -10768,6 +10774,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_FALSE@@COND_mips_qemu_mips_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -10822,6 +10829,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_FALSE@@COND_mips_loongson_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -10856,6 +10864,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_FALSE@@COND_mips_arc_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -10893,6 +10902,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_FALSE@@COND_ia64_efi_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -10928,6 +10938,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_FALSE@@COND_i386_xen_pvh_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -10963,6 +10974,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_FALSE@@COND_i386_xen_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -10994,6 +11006,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_FALSE@@COND_i386_qemu_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -11023,6 +11036,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_FALSE@@COND_i386_pc_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -11054,6 +11068,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_FALSE@@COND_i386_multiboot_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -11091,6 +11106,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_FALSE@@COND_i386_ieee1275_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -11130,6 +11146,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_FALSE@@COND_i386_efi_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -11174,6 +11191,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_FALSE@@COND_i386_coreboot_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -11216,6 +11234,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tterm/kernel_exec-tparm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tcommands/kernel_exec-extcmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tlib/kernel_exec-arg.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_FALSE@@COND_emu_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -11257,6 +11276,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_FALSE@@COND_arm_uboot_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -11298,6 +11318,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_FALSE@@COND_arm_efi_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -11353,6 +11374,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_FALSE@@COND_arm_coreboot_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -11391,6 +11413,7 @@ am__kernel_exec_SOURCES_DIST = kern/arm64/efi/startup.S \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-mm.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-time.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/generic/kernel_exec-millisleep.$(OBJEXT) \\\n+@COND_arm64_efi_TRUE@\tkern/kernel_exec-buffer.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-command.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-corecmd.$(OBJEXT) \\\n @COND_arm64_efi_TRUE@\tkern/kernel_exec-device.$(OBJEXT) \\\n@@ -25607,11 +25630,12 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_arm64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c kern/efi/sb.c \\\n @COND_arm64_efi_TRUE@\tkern/lockdown.c kern/compiler-rt.c \\\n @COND_arm64_efi_TRUE@\tkern/mm.c kern/time.c \\\n-@COND_arm64_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n-@COND_arm64_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n-@COND_arm64_efi_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n-@COND_arm64_efi_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n-@COND_arm64_efi_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n+@COND_arm64_efi_TRUE@\tkern/generic/millisleep.c kern/buffer.c \\\n+@COND_arm64_efi_TRUE@\tkern/command.c kern/corecmd.c \\\n+@COND_arm64_efi_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n+@COND_arm64_efi_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n+@COND_arm64_efi_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n+@COND_arm64_efi_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_arm64_efi_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n @COND_arm64_efi_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_arm64_efi_TRUE@\tkern/verifiers.c\n@@ -25639,12 +25663,13 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_arm_coreboot_TRUE@\tkern/arm/compiler-rt.S lib/division.c \\\n @COND_arm_coreboot_TRUE@\tkern/compiler-rt.c kern/mm.c \\\n @COND_arm_coreboot_TRUE@\tkern/time.c kern/generic/millisleep.c \\\n-@COND_arm_coreboot_TRUE@\tkern/command.c kern/corecmd.c \\\n-@COND_arm_coreboot_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n-@COND_arm_coreboot_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n-@COND_arm_coreboot_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n-@COND_arm_coreboot_TRUE@\tkern/misc.c kern/parser.c \\\n-@COND_arm_coreboot_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n+@COND_arm_coreboot_TRUE@\tkern/buffer.c kern/command.c \\\n+@COND_arm_coreboot_TRUE@\tkern/corecmd.c kern/device.c \\\n+@COND_arm_coreboot_TRUE@\tkern/disk.c kern/dl.c kern/env.c \\\n+@COND_arm_coreboot_TRUE@\tkern/err.c kern/file.c kern/fs.c \\\n+@COND_arm_coreboot_TRUE@\tkern/list.c kern/main.c kern/misc.c \\\n+@COND_arm_coreboot_TRUE@\tkern/parser.c kern/partition.c \\\n+@COND_arm_coreboot_TRUE@\tkern/rescue_parser.c \\\n @COND_arm_coreboot_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_arm_coreboot_TRUE@\tkern/verifiers.c\n @COND_arm_efi_TRUE@kernel_exec_SOURCES = kern/arm/efi/startup.S \\\n@@ -25659,13 +25684,14 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_arm_efi_TRUE@\tkern/efi/acpi.c kern/efi/sb.c \\\n @COND_arm_efi_TRUE@\tkern/lockdown.c kern/compiler-rt.c \\\n @COND_arm_efi_TRUE@\tkern/mm.c kern/time.c \\\n-@COND_arm_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n-@COND_arm_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n-@COND_arm_efi_TRUE@\tkern/dl.c kern/env.c kern/err.c kern/file.c \\\n-@COND_arm_efi_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n-@COND_arm_efi_TRUE@\tkern/misc.c kern/parser.c kern/partition.c \\\n-@COND_arm_efi_TRUE@\tkern/rescue_parser.c kern/rescue_reader.c \\\n-@COND_arm_efi_TRUE@\tkern/term.c kern/verifiers.c\n+@COND_arm_efi_TRUE@\tkern/generic/millisleep.c kern/buffer.c \\\n+@COND_arm_efi_TRUE@\tkern/command.c kern/corecmd.c kern/device.c \\\n+@COND_arm_efi_TRUE@\tkern/disk.c kern/dl.c kern/env.c kern/err.c \\\n+@COND_arm_efi_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n+@COND_arm_efi_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n+@COND_arm_efi_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n+@COND_arm_efi_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_arm_efi_TRUE@\tkern/verifiers.c\n @COND_arm_uboot_TRUE@kernel_exec_SOURCES = kern/arm/startup.S \\\n @COND_arm_uboot_TRUE@\tkern/arm/uboot/init.c \\\n @COND_arm_uboot_TRUE@\tkern/arm/uboot/uboot.S \\\n@@ -25679,11 +25705,12 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_arm_uboot_TRUE@\tterm/terminfo.c term/tparm.c \\\n @COND_arm_uboot_TRUE@\tcommands/extcmd.c lib/arg.c \\\n @COND_arm_uboot_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n-@COND_arm_uboot_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n-@COND_arm_uboot_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n-@COND_arm_uboot_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n-@COND_arm_uboot_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n-@COND_arm_uboot_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n+@COND_arm_uboot_TRUE@\tkern/generic/millisleep.c kern/buffer.c \\\n+@COND_arm_uboot_TRUE@\tkern/command.c kern/corecmd.c \\\n+@COND_arm_uboot_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n+@COND_arm_uboot_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n+@COND_arm_uboot_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n+@COND_arm_uboot_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_arm_uboot_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n @COND_arm_uboot_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_arm_uboot_TRUE@\tkern/verifiers.c\n@@ -25696,11 +25723,11 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_emu_TRUE@\tkern/emu/cache.c osdep/emuconsole.c osdep/dl.c \\\n @COND_emu_TRUE@\tosdep/sleep.c osdep/init.c osdep/emunet.c \\\n @COND_emu_TRUE@\tosdep/cputime.c term/terminfo.c term/tparm.c \\\n-@COND_emu_TRUE@\tcommands/extcmd.c lib/arg.c kern/command.c \\\n-@COND_emu_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n-@COND_emu_TRUE@\tkern/dl.c kern/env.c kern/err.c kern/file.c \\\n-@COND_emu_TRUE@\tkern/fs.c kern/list.c kern/main.c kern/misc.c \\\n-@COND_emu_TRUE@\tkern/parser.c kern/partition.c \\\n+@COND_emu_TRUE@\tcommands/extcmd.c lib/arg.c kern/buffer.c \\\n+@COND_emu_TRUE@\tkern/command.c kern/corecmd.c kern/device.c \\\n+@COND_emu_TRUE@\tkern/disk.c kern/dl.c kern/env.c kern/err.c \\\n+@COND_emu_TRUE@\tkern/file.c kern/fs.c kern/list.c kern/main.c \\\n+@COND_emu_TRUE@\tkern/misc.c kern/parser.c kern/partition.c \\\n @COND_emu_TRUE@\tkern/rescue_parser.c kern/rescue_reader.c \\\n @COND_emu_TRUE@\tkern/term.c kern/verifiers.c\n @COND_i386_coreboot_TRUE@kernel_exec_SOURCES =  \\\n@@ -25721,12 +25748,13 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_coreboot_TRUE@\tkern/i386/tsc_pit.c \\\n @COND_i386_coreboot_TRUE@\tkern/compiler-rt.c kern/mm.c \\\n @COND_i386_coreboot_TRUE@\tkern/time.c kern/generic/millisleep.c \\\n-@COND_i386_coreboot_TRUE@\tkern/command.c kern/corecmd.c \\\n-@COND_i386_coreboot_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n-@COND_i386_coreboot_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n-@COND_i386_coreboot_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n-@COND_i386_coreboot_TRUE@\tkern/misc.c kern/parser.c \\\n-@COND_i386_coreboot_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n+@COND_i386_coreboot_TRUE@\tkern/buffer.c kern/command.c \\\n+@COND_i386_coreboot_TRUE@\tkern/corecmd.c kern/device.c \\\n+@COND_i386_coreboot_TRUE@\tkern/disk.c kern/dl.c kern/env.c \\\n+@COND_i386_coreboot_TRUE@\tkern/err.c kern/file.c kern/fs.c \\\n+@COND_i386_coreboot_TRUE@\tkern/list.c kern/main.c kern/misc.c \\\n+@COND_i386_coreboot_TRUE@\tkern/parser.c kern/partition.c \\\n+@COND_i386_coreboot_TRUE@\tkern/rescue_parser.c \\\n @COND_i386_coreboot_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_i386_coreboot_TRUE@\tkern/verifiers.c\n @COND_i386_efi_TRUE@kernel_exec_SOURCES = kern/i386/efi/startup.S \\\n@@ -25740,14 +25768,14 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c kern/efi/sb.c \\\n @COND_i386_efi_TRUE@\tkern/lockdown.c kern/compiler-rt.c \\\n @COND_i386_efi_TRUE@\tkern/mm.c kern/time.c \\\n-@COND_i386_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n-@COND_i386_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n-@COND_i386_efi_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n-@COND_i386_efi_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n-@COND_i386_efi_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n-@COND_i386_efi_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_i386_efi_TRUE@\tkern/rescue_reader.c kern/term.c \\\n-@COND_i386_efi_TRUE@\tkern/verifiers.c\n+@COND_i386_efi_TRUE@\tkern/generic/millisleep.c kern/buffer.c \\\n+@COND_i386_efi_TRUE@\tkern/command.c kern/corecmd.c \\\n+@COND_i386_efi_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n+@COND_i386_efi_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n+@COND_i386_efi_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n+@COND_i386_efi_TRUE@\tkern/misc.c kern/parser.c kern/partition.c \\\n+@COND_i386_efi_TRUE@\tkern/rescue_parser.c kern/rescue_reader.c \\\n+@COND_i386_efi_TRUE@\tkern/term.c kern/verifiers.c\n @COND_i386_ieee1275_TRUE@kernel_exec_SOURCES =  \\\n @COND_i386_ieee1275_TRUE@\tkern/i386/ieee1275/startup.S \\\n @COND_i386_ieee1275_TRUE@\tdisk/ieee1275/ofdisk.c \\\n@@ -25762,12 +25790,13 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_ieee1275_TRUE@\tcommands/extcmd.c lib/arg.c \\\n @COND_i386_ieee1275_TRUE@\tkern/compiler-rt.c kern/mm.c \\\n @COND_i386_ieee1275_TRUE@\tkern/time.c kern/generic/millisleep.c \\\n-@COND_i386_ieee1275_TRUE@\tkern/command.c kern/corecmd.c \\\n-@COND_i386_ieee1275_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n-@COND_i386_ieee1275_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n-@COND_i386_ieee1275_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n-@COND_i386_ieee1275_TRUE@\tkern/misc.c kern/parser.c \\\n-@COND_i386_ieee1275_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n+@COND_i386_ieee1275_TRUE@\tkern/buffer.c kern/command.c \\\n+@COND_i386_ieee1275_TRUE@\tkern/corecmd.c kern/device.c \\\n+@COND_i386_ieee1275_TRUE@\tkern/disk.c kern/dl.c kern/env.c \\\n+@COND_i386_ieee1275_TRUE@\tkern/err.c kern/file.c kern/fs.c \\\n+@COND_i386_ieee1275_TRUE@\tkern/list.c kern/main.c kern/misc.c \\\n+@COND_i386_ieee1275_TRUE@\tkern/parser.c kern/partition.c \\\n+@COND_i386_ieee1275_TRUE@\tkern/rescue_parser.c \\\n @COND_i386_ieee1275_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_i386_ieee1275_TRUE@\tkern/verifiers.c\n @COND_i386_multiboot_TRUE@kernel_exec_SOURCES =  \\\n@@ -25781,12 +25810,12 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_multiboot_TRUE@\tkern/compiler-rt.c kern/mm.c \\\n @COND_i386_multiboot_TRUE@\tkern/time.c \\\n @COND_i386_multiboot_TRUE@\tkern/generic/millisleep.c \\\n-@COND_i386_multiboot_TRUE@\tkern/command.c kern/corecmd.c \\\n-@COND_i386_multiboot_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n-@COND_i386_multiboot_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n-@COND_i386_multiboot_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n-@COND_i386_multiboot_TRUE@\tkern/misc.c kern/parser.c \\\n-@COND_i386_multiboot_TRUE@\tkern/partition.c \\\n+@COND_i386_multiboot_TRUE@\tkern/buffer.c kern/command.c \\\n+@COND_i386_multiboot_TRUE@\tkern/corecmd.c kern/device.c \\\n+@COND_i386_multiboot_TRUE@\tkern/disk.c kern/dl.c kern/env.c \\\n+@COND_i386_multiboot_TRUE@\tkern/err.c kern/file.c kern/fs.c \\\n+@COND_i386_multiboot_TRUE@\tkern/list.c kern/main.c kern/misc.c \\\n+@COND_i386_multiboot_TRUE@\tkern/parser.c kern/partition.c \\\n @COND_i386_multiboot_TRUE@\tkern/rescue_parser.c \\\n @COND_i386_multiboot_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_i386_multiboot_TRUE@\tkern/verifiers.c\n@@ -25795,24 +25824,26 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_pc_TRUE@\tterm/i386/pc/console.c kern/i386/dl.c \\\n @COND_i386_pc_TRUE@\tkern/i386/tsc.c kern/i386/tsc_pit.c \\\n @COND_i386_pc_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n-@COND_i386_pc_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n-@COND_i386_pc_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n-@COND_i386_pc_TRUE@\tkern/dl.c kern/env.c kern/err.c kern/file.c \\\n-@COND_i386_pc_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n-@COND_i386_pc_TRUE@\tkern/misc.c kern/parser.c kern/partition.c \\\n-@COND_i386_pc_TRUE@\tkern/rescue_parser.c kern/rescue_reader.c \\\n-@COND_i386_pc_TRUE@\tkern/term.c kern/verifiers.c\n+@COND_i386_pc_TRUE@\tkern/generic/millisleep.c kern/buffer.c \\\n+@COND_i386_pc_TRUE@\tkern/command.c kern/corecmd.c kern/device.c \\\n+@COND_i386_pc_TRUE@\tkern/disk.c kern/dl.c kern/env.c kern/err.c \\\n+@COND_i386_pc_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n+@COND_i386_pc_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n+@COND_i386_pc_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n+@COND_i386_pc_TRUE@\tkern/rescue_reader.c kern/term.c \\\n+@COND_i386_pc_TRUE@\tkern/verifiers.c\n @COND_i386_qemu_TRUE@kernel_exec_SOURCES = kern/i386/qemu/startup.S \\\n @COND_i386_qemu_TRUE@\tkern/i386/qemu/init.c bus/pci.c \\\n @COND_i386_qemu_TRUE@\tkern/vga_init.c kern/i386/qemu/mmap.c \\\n @COND_i386_qemu_TRUE@\tterm/i386/pc/vga_text.c kern/i386/dl.c \\\n @COND_i386_qemu_TRUE@\tkern/i386/tsc.c kern/i386/tsc_pit.c \\\n @COND_i386_qemu_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n-@COND_i386_qemu_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n-@COND_i386_qemu_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n-@COND_i386_qemu_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n-@COND_i386_qemu_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n-@COND_i386_qemu_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n+@COND_i386_qemu_TRUE@\tkern/generic/millisleep.c kern/buffer.c \\\n+@COND_i386_qemu_TRUE@\tkern/command.c kern/corecmd.c \\\n+@COND_i386_qemu_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n+@COND_i386_qemu_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n+@COND_i386_qemu_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n+@COND_i386_qemu_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_i386_qemu_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n @COND_i386_qemu_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_i386_qemu_TRUE@\tkern/verifiers.c\n@@ -25824,14 +25855,14 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_xen_TRUE@\tterm/terminfo.c term/tparm.c \\\n @COND_i386_xen_TRUE@\tcommands/extcmd.c lib/arg.c \\\n @COND_i386_xen_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n-@COND_i386_xen_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n-@COND_i386_xen_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n-@COND_i386_xen_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n-@COND_i386_xen_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n-@COND_i386_xen_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n-@COND_i386_xen_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_i386_xen_TRUE@\tkern/rescue_reader.c kern/term.c \\\n-@COND_i386_xen_TRUE@\tkern/verifiers.c\n+@COND_i386_xen_TRUE@\tkern/generic/millisleep.c kern/buffer.c \\\n+@COND_i386_xen_TRUE@\tkern/command.c kern/corecmd.c \\\n+@COND_i386_xen_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n+@COND_i386_xen_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n+@COND_i386_xen_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n+@COND_i386_xen_TRUE@\tkern/misc.c kern/parser.c kern/partition.c \\\n+@COND_i386_xen_TRUE@\tkern/rescue_parser.c kern/rescue_reader.c \\\n+@COND_i386_xen_TRUE@\tkern/term.c kern/verifiers.c\n @COND_i386_xen_pvh_TRUE@kernel_exec_SOURCES =  \\\n @COND_i386_xen_pvh_TRUE@\tkern/i386/xen/startup_pvh.S \\\n @COND_i386_xen_pvh_TRUE@\tkern/i386/dl.c commands/boot.c \\\n@@ -25842,12 +25873,13 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_i386_xen_pvh_TRUE@\tterm/tparm.c commands/extcmd.c \\\n @COND_i386_xen_pvh_TRUE@\tlib/arg.c kern/compiler-rt.c kern/mm.c \\\n @COND_i386_xen_pvh_TRUE@\tkern/time.c kern/generic/millisleep.c \\\n-@COND_i386_xen_pvh_TRUE@\tkern/command.c kern/corecmd.c \\\n-@COND_i386_xen_pvh_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n-@COND_i386_xen_pvh_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n-@COND_i386_xen_pvh_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n-@COND_i386_xen_pvh_TRUE@\tkern/misc.c kern/parser.c \\\n-@COND_i386_xen_pvh_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n+@COND_i386_xen_pvh_TRUE@\tkern/buffer.c kern/command.c \\\n+@COND_i386_xen_pvh_TRUE@\tkern/corecmd.c kern/device.c \\\n+@COND_i386_xen_pvh_TRUE@\tkern/disk.c kern/dl.c kern/env.c \\\n+@COND_i386_xen_pvh_TRUE@\tkern/err.c kern/file.c kern/fs.c \\\n+@COND_i386_xen_pvh_TRUE@\tkern/list.c kern/main.c kern/misc.c \\\n+@COND_i386_xen_pvh_TRUE@\tkern/parser.c kern/partition.c \\\n+@COND_i386_xen_pvh_TRUE@\tkern/rescue_parser.c \\\n @COND_i386_xen_pvh_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_i386_xen_pvh_TRUE@\tkern/verifiers.c\n @COND_ia64_efi_TRUE@kernel_exec_SOURCES = kern/ia64/efi/startup.S \\\n@@ -25859,14 +25891,14 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_ia64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c kern/efi/sb.c \\\n @COND_ia64_efi_TRUE@\tkern/lockdown.c kern/compiler-rt.c \\\n @COND_ia64_efi_TRUE@\tkern/mm.c kern/time.c \\\n-@COND_ia64_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n-@COND_ia64_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n-@COND_ia64_efi_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n-@COND_ia64_efi_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n-@COND_ia64_efi_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n-@COND_ia64_efi_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_ia64_efi_TRUE@\tkern/rescue_reader.c kern/term.c \\\n-@COND_ia64_efi_TRUE@\tkern/verifiers.c\n+@COND_ia64_efi_TRUE@\tkern/generic/millisleep.c kern/buffer.c \\\n+@COND_ia64_efi_TRUE@\tkern/command.c kern/corecmd.c \\\n+@COND_ia64_efi_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n+@COND_ia64_efi_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n+@COND_ia64_efi_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n+@COND_ia64_efi_TRUE@\tkern/misc.c kern/parser.c kern/partition.c \\\n+@COND_ia64_efi_TRUE@\tkern/rescue_parser.c kern/rescue_reader.c \\\n+@COND_ia64_efi_TRUE@\tkern/term.c kern/verifiers.c\n @COND_mips_arc_TRUE@kernel_exec_SOURCES = kern/mips/startup.S \\\n @COND_mips_arc_TRUE@\tkern/mips/arc/init.c term/arc/console.c \\\n @COND_mips_arc_TRUE@\tdisk/arc/arcdisk.c \\\n@@ -25875,14 +25907,14 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_mips_arc_TRUE@\tkern/mips/init.c term/terminfo.c \\\n @COND_mips_arc_TRUE@\tterm/tparm.c commands/extcmd.c lib/arg.c \\\n @COND_mips_arc_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n-@COND_mips_arc_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n-@COND_mips_arc_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n-@COND_mips_arc_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n-@COND_mips_arc_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n-@COND_mips_arc_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n-@COND_mips_arc_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n-@COND_mips_arc_TRUE@\tkern/rescue_reader.c kern/term.c \\\n-@COND_mips_arc_TRUE@\tkern/verifiers.c\n+@COND_mips_arc_TRUE@\tkern/generic/millisleep.c kern/buffer.c \\\n+@COND_mips_arc_TRUE@\tkern/command.c kern/corecmd.c \\\n+@COND_mips_arc_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n+@COND_mips_arc_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n+@COND_mips_arc_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n+@COND_mips_arc_TRUE@\tkern/misc.c kern/parser.c kern/partition.c \\\n+@COND_mips_arc_TRUE@\tkern/rescue_parser.c kern/rescue_reader.c \\\n+@COND_mips_arc_TRUE@\tkern/term.c kern/verifiers.c\n @COND_mips_loongson_TRUE@kernel_exec_SOURCES = kern/mips/startup.S \\\n @COND_mips_loongson_TRUE@\tterm/ns8250.c bus/bonito.c \\\n @COND_mips_loongson_TRUE@\tbus/cs5536.c bus/pci.c \\\n@@ -25904,12 +25936,13 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_mips_loongson_TRUE@\tlib/arg.c kern/compiler-rt.c \\\n @COND_mips_loongson_TRUE@\tkern/mm.c kern/time.c \\\n @COND_mips_loongson_TRUE@\tkern/generic/millisleep.c \\\n-@COND_mips_loongson_TRUE@\tkern/command.c kern/corecmd.c \\\n-@COND_mips_loongson_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n-@COND_mips_loongson_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n-@COND_mips_loongson_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n-@COND_mips_loongson_TRUE@\tkern/misc.c kern/parser.c \\\n-@COND_mips_loongson_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n+@COND_mips_loongson_TRUE@\tkern/buffer.c kern/command.c \\\n+@COND_mips_loongson_TRUE@\tkern/corecmd.c kern/device.c \\\n+@COND_mips_loongson_TRUE@\tkern/disk.c kern/dl.c kern/env.c \\\n+@COND_mips_loongson_TRUE@\tkern/err.c kern/file.c kern/fs.c \\\n+@COND_mips_loongson_TRUE@\tkern/list.c kern/main.c kern/misc.c \\\n+@COND_mips_loongson_TRUE@\tkern/parser.c kern/partition.c \\\n+@COND_mips_loongson_TRUE@\tkern/rescue_parser.c \\\n @COND_mips_loongson_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_mips_loongson_TRUE@\tkern/verifiers.c\n @COND_mips_qemu_mips_TRUE@kernel_exec_SOURCES = kern/mips/startup.S \\\n@@ -25927,12 +25960,12 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_mips_qemu_mips_TRUE@\tlib/arg.c kern/compiler-rt.c \\\n @COND_mips_qemu_mips_TRUE@\tkern/mm.c kern/time.c \\\n @COND_mips_qemu_mips_TRUE@\tkern/generic/millisleep.c \\\n-@COND_mips_qemu_mips_TRUE@\tkern/command.c kern/corecmd.c \\\n-@COND_mips_qemu_mips_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n-@COND_mips_qemu_mips_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n-@COND_mips_qemu_mips_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n-@COND_mips_qemu_mips_TRUE@\tkern/misc.c kern/parser.c \\\n-@COND_mips_qemu_mips_TRUE@\tkern/partition.c \\\n+@COND_mips_qemu_mips_TRUE@\tkern/buffer.c kern/command.c \\\n+@COND_mips_qemu_mips_TRUE@\tkern/corecmd.c kern/device.c \\\n+@COND_mips_qemu_mips_TRUE@\tkern/disk.c kern/dl.c kern/env.c \\\n+@COND_mips_qemu_mips_TRUE@\tkern/err.c kern/file.c kern/fs.c \\\n+@COND_mips_qemu_mips_TRUE@\tkern/list.c kern/main.c kern/misc.c \\\n+@COND_mips_qemu_mips_TRUE@\tkern/parser.c kern/partition.c \\\n @COND_mips_qemu_mips_TRUE@\tkern/rescue_parser.c \\\n @COND_mips_qemu_mips_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_mips_qemu_mips_TRUE@\tkern/verifiers.c\n@@ -25953,12 +25986,13 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_powerpc_ieee1275_TRUE@\tkern/compiler-rt.c kern/mm.c \\\n @COND_powerpc_ieee1275_TRUE@\tkern/time.c \\\n @COND_powerpc_ieee1275_TRUE@\tkern/generic/millisleep.c \\\n-@COND_powerpc_ieee1275_TRUE@\tkern/command.c kern/corecmd.c \\\n-@COND_powerpc_ieee1275_TRUE@\tkern/device.c kern/disk.c \\\n-@COND_powerpc_ieee1275_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n-@COND_powerpc_ieee1275_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n-@COND_powerpc_ieee1275_TRUE@\tkern/main.c kern/misc.c \\\n-@COND_powerpc_ieee1275_TRUE@\tkern/parser.c kern/partition.c \\\n+@COND_powerpc_ieee1275_TRUE@\tkern/buffer.c kern/command.c \\\n+@COND_powerpc_ieee1275_TRUE@\tkern/corecmd.c kern/device.c \\\n+@COND_powerpc_ieee1275_TRUE@\tkern/disk.c kern/dl.c kern/env.c \\\n+@COND_powerpc_ieee1275_TRUE@\tkern/err.c kern/file.c kern/fs.c \\\n+@COND_powerpc_ieee1275_TRUE@\tkern/list.c kern/main.c \\\n+@COND_powerpc_ieee1275_TRUE@\tkern/misc.c kern/parser.c \\\n+@COND_powerpc_ieee1275_TRUE@\tkern/partition.c \\\n @COND_powerpc_ieee1275_TRUE@\tkern/rescue_parser.c \\\n @COND_powerpc_ieee1275_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_powerpc_ieee1275_TRUE@\tkern/verifiers.c\n@@ -25973,7 +26007,7 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_riscv32_efi_TRUE@\tkern/efi/acpi.c kern/efi/sb.c \\\n @COND_riscv32_efi_TRUE@\tkern/lockdown.c kern/compiler-rt.c \\\n @COND_riscv32_efi_TRUE@\tkern/mm.c kern/time.c \\\n-@COND_riscv32_efi_TRUE@\tkern/generic/millisleep.c \\\n+@COND_riscv32_efi_TRUE@\tkern/generic/millisleep.c kern/buffer.c \\\n @COND_riscv32_efi_TRUE@\tkern/command.c kern/corecmd.c \\\n @COND_riscv32_efi_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n @COND_riscv32_efi_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n@@ -25993,12 +26027,13 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_riscv64_efi_TRUE@\tkern/efi/sb.c kern/lockdown.c \\\n @COND_riscv64_efi_TRUE@\tkern/compiler-rt.c kern/mm.c \\\n @COND_riscv64_efi_TRUE@\tkern/time.c kern/generic/millisleep.c \\\n-@COND_riscv64_efi_TRUE@\tkern/command.c kern/corecmd.c \\\n-@COND_riscv64_efi_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n-@COND_riscv64_efi_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n-@COND_riscv64_efi_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n-@COND_riscv64_efi_TRUE@\tkern/misc.c kern/parser.c \\\n-@COND_riscv64_efi_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n+@COND_riscv64_efi_TRUE@\tkern/buffer.c kern/command.c \\\n+@COND_riscv64_efi_TRUE@\tkern/corecmd.c kern/device.c \\\n+@COND_riscv64_efi_TRUE@\tkern/disk.c kern/dl.c kern/env.c \\\n+@COND_riscv64_efi_TRUE@\tkern/err.c kern/file.c kern/fs.c \\\n+@COND_riscv64_efi_TRUE@\tkern/list.c kern/main.c kern/misc.c \\\n+@COND_riscv64_efi_TRUE@\tkern/parser.c kern/partition.c \\\n+@COND_riscv64_efi_TRUE@\tkern/rescue_parser.c \\\n @COND_riscv64_efi_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_riscv64_efi_TRUE@\tkern/verifiers.c\n @COND_sparc64_ieee1275_TRUE@kernel_exec_SOURCES =  \\\n@@ -26019,12 +26054,13 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_sparc64_ieee1275_TRUE@\tkern/compiler-rt.c kern/mm.c \\\n @COND_sparc64_ieee1275_TRUE@\tkern/time.c \\\n @COND_sparc64_ieee1275_TRUE@\tkern/generic/millisleep.c \\\n-@COND_sparc64_ieee1275_TRUE@\tkern/command.c kern/corecmd.c \\\n-@COND_sparc64_ieee1275_TRUE@\tkern/device.c kern/disk.c \\\n-@COND_sparc64_ieee1275_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n-@COND_sparc64_ieee1275_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n-@COND_sparc64_ieee1275_TRUE@\tkern/main.c kern/misc.c \\\n-@COND_sparc64_ieee1275_TRUE@\tkern/parser.c kern/partition.c \\\n+@COND_sparc64_ieee1275_TRUE@\tkern/buffer.c kern/command.c \\\n+@COND_sparc64_ieee1275_TRUE@\tkern/corecmd.c kern/device.c \\\n+@COND_sparc64_ieee1275_TRUE@\tkern/disk.c kern/dl.c kern/env.c \\\n+@COND_sparc64_ieee1275_TRUE@\tkern/err.c kern/file.c kern/fs.c \\\n+@COND_sparc64_ieee1275_TRUE@\tkern/list.c kern/main.c \\\n+@COND_sparc64_ieee1275_TRUE@\tkern/misc.c kern/parser.c \\\n+@COND_sparc64_ieee1275_TRUE@\tkern/partition.c \\\n @COND_sparc64_ieee1275_TRUE@\tkern/rescue_parser.c \\\n @COND_sparc64_ieee1275_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_sparc64_ieee1275_TRUE@\tkern/verifiers.c\n@@ -26040,11 +26076,12 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_x86_64_efi_TRUE@\tkern/acpi.c kern/efi/acpi.c \\\n @COND_x86_64_efi_TRUE@\tkern/efi/sb.c kern/lockdown.c \\\n @COND_x86_64_efi_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n-@COND_x86_64_efi_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n-@COND_x86_64_efi_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n-@COND_x86_64_efi_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n-@COND_x86_64_efi_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n-@COND_x86_64_efi_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n+@COND_x86_64_efi_TRUE@\tkern/generic/millisleep.c kern/buffer.c \\\n+@COND_x86_64_efi_TRUE@\tkern/command.c kern/corecmd.c \\\n+@COND_x86_64_efi_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n+@COND_x86_64_efi_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n+@COND_x86_64_efi_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n+@COND_x86_64_efi_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_x86_64_efi_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n @COND_x86_64_efi_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_x86_64_efi_TRUE@\tkern/verifiers.c\n@@ -26057,11 +26094,12 @@ gcry_whirlpool_module_DEPENDENCIES = $(TARGET_OBJ2ELF)\n @COND_x86_64_xen_TRUE@\tterm/terminfo.c term/tparm.c \\\n @COND_x86_64_xen_TRUE@\tcommands/extcmd.c lib/arg.c \\\n @COND_x86_64_xen_TRUE@\tkern/compiler-rt.c kern/mm.c kern/time.c \\\n-@COND_x86_64_xen_TRUE@\tkern/generic/millisleep.c kern/command.c \\\n-@COND_x86_64_xen_TRUE@\tkern/corecmd.c kern/device.c kern/disk.c \\\n-@COND_x86_64_xen_TRUE@\tkern/dl.c kern/env.c kern/err.c \\\n-@COND_x86_64_xen_TRUE@\tkern/file.c kern/fs.c kern/list.c \\\n-@COND_x86_64_xen_TRUE@\tkern/main.c kern/misc.c kern/parser.c \\\n+@COND_x86_64_xen_TRUE@\tkern/generic/millisleep.c kern/buffer.c \\\n+@COND_x86_64_xen_TRUE@\tkern/command.c kern/corecmd.c \\\n+@COND_x86_64_xen_TRUE@\tkern/device.c kern/disk.c kern/dl.c \\\n+@COND_x86_64_xen_TRUE@\tkern/env.c kern/err.c kern/file.c \\\n+@COND_x86_64_xen_TRUE@\tkern/fs.c kern/list.c kern/main.c \\\n+@COND_x86_64_xen_TRUE@\tkern/misc.c kern/parser.c \\\n @COND_x86_64_xen_TRUE@\tkern/partition.c kern/rescue_parser.c \\\n @COND_x86_64_xen_TRUE@\tkern/rescue_reader.c kern/term.c \\\n @COND_x86_64_xen_TRUE@\tkern/verifiers.c\n@@ -28027,6 +28065,8 @@ kern/generic/$(DEPDIR)/$(am__dirstamp):\n kern/generic/kernel_exec-millisleep.$(OBJEXT):  \\\n \tkern/generic/$(am__dirstamp) \\\n \tkern/generic/$(DEPDIR)/$(am__dirstamp)\n+kern/kernel_exec-buffer.$(OBJEXT): kern/$(am__dirstamp) \\\n+\tkern/$(DEPDIR)/$(am__dirstamp)\n kern/kernel_exec-command.$(OBJEXT): kern/$(am__dirstamp) \\\n \tkern/$(DEPDIR)/$(am__dirstamp)\n kern/kernel_exec-corecmd.$(OBJEXT): kern/$(am__dirstamp) \\\n@@ -30952,6 +30992,7 @@ distclean-compile:\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/acpi_module-acpi.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/elf_module-elf.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-acpi.Po@am__quote@\n+@AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-buffer.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-command.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-compiler-rt.Po@am__quote@\n @AMDEP_TRUE@@am__include@ @am__quote@kern/$(DEPDIR)/kernel_exec-corecmd.Po@am__quote@\n@@ -35382,6 +35423,20 @@ kern/generic/kernel_exec-millisleep.obj: kern/generic/millisleep.c\n @AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n @am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -c -o kern/generic/kernel_exec-millisleep.obj `if test -f 'kern/generic/millisleep.c'; then $(CYGPATH_W) 'kern/generic/millisleep.c'; else $(CYGPATH_W) '$(srcdir)/kern/generic/millisleep.c'; fi`\n \n+kern/kernel_exec-buffer.o: kern/buffer.c\n+@am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -MT kern/kernel_exec-buffer.o -MD -MP -MF kern/$(DEPDIR)/kernel_exec-buffer.Tpo -c -o kern/kernel_exec-buffer.o `test -f 'kern/buffer.c' || echo '$(srcdir)/'`kern/buffer.c\n+@am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) kern/$(DEPDIR)/kernel_exec-buffer.Tpo kern/$(DEPDIR)/kernel_exec-buffer.Po\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\t$(AM_V_CC)source='kern/buffer.c' object='kern/kernel_exec-buffer.o' libtool=no @AMDEPBACKSLASH@\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n+@am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -c -o kern/kernel_exec-buffer.o `test -f 'kern/buffer.c' || echo '$(srcdir)/'`kern/buffer.c\n+\n+kern/kernel_exec-buffer.obj: kern/buffer.c\n+@am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -MT kern/kernel_exec-buffer.obj -MD -MP -MF kern/$(DEPDIR)/kernel_exec-buffer.Tpo -c -o kern/kernel_exec-buffer.obj `if test -f 'kern/buffer.c'; then $(CYGPATH_W) 'kern/buffer.c'; else $(CYGPATH_W) '$(srcdir)/kern/buffer.c'; fi`\n+@am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) kern/$(DEPDIR)/kernel_exec-buffer.Tpo kern/$(DEPDIR)/kernel_exec-buffer.Po\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\t$(AM_V_CC)source='kern/buffer.c' object='kern/kernel_exec-buffer.obj' libtool=no @AMDEPBACKSLASH@\n+@AMDEP_TRUE@@am__fastdepCC_FALSE@\tDEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@\n+@am__fastdepCC_FALSE@\t$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -c -o kern/kernel_exec-buffer.obj `if test -f 'kern/buffer.c'; then $(CYGPATH_W) 'kern/buffer.c'; else $(CYGPATH_W) '$(srcdir)/kern/buffer.c'; fi`\n+\n kern/kernel_exec-command.o: kern/command.c\n @am__fastdepCC_TRUE@\t$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(kernel_exec_CPPFLAGS) $(CPPFLAGS) $(kernel_exec_CFLAGS) $(CFLAGS) -MT kern/kernel_exec-command.o -MD -MP -MF kern/$(DEPDIR)/kernel_exec-command.Tpo -c -o kern/kernel_exec-command.o `test -f 'kern/command.c' || echo '$(srcdir)/'`kern/command.c\n @am__fastdepCC_TRUE@\t$(AM_V_at)$(am__mv) kern/$(DEPDIR)/kernel_exec-command.Tpo kern/$(DEPDIR)/kernel_exec-command.Po\ndiff --git a/grub-core/kern/buffer.c b/grub-core/kern/buffer.c\nnew file mode 100644\nindex 0000000..9f5f8b8\n--- /dev/null\n+++ b/grub-core/kern/buffer.c\n@@ -0,0 +1,117 @@\n+/*\n+ *  GRUB  --  GRand Unified Bootloader\n+ *  Copyright (C) 2021  Free Software Foundation, Inc.\n+ *\n+ *  GRUB is free software: you can redistribute it and/or modify\n+ *  it under the terms of the GNU General Public License as published by\n+ *  the Free Software Foundation, either version 3 of the License, or\n+ *  (at your option) any later version.\n+ *\n+ *  GRUB is distributed in the hope that it will be useful,\n+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ *  GNU General Public License for more details.\n+ *\n+ *  You should have received a copy of the GNU General Public License\n+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.\n+ */\n+\n+#include <grub/buffer.h>\n+#include <grub/err.h>\n+#include <grub/misc.h>\n+#include <grub/mm.h>\n+#include <grub/safemath.h>\n+#include <grub/types.h>\n+\n+grub_buffer_t\n+grub_buffer_new (grub_size_t sz)\n+{\n+  struct grub_buffer *ret;\n+\n+  ret = (struct grub_buffer *) grub_malloc (sizeof (*ret));\n+  if (ret == NULL)\n+    return NULL;\n+\n+  ret->data = (grub_uint8_t *) grub_malloc (sz);\n+  if (ret->data == NULL)\n+    {\n+      grub_free (ret);\n+      return NULL;\n+    }\n+\n+  ret->sz = sz;\n+  ret->pos = 0;\n+  ret->used = 0;\n+\n+  return ret;\n+}\n+\n+void\n+grub_buffer_free (grub_buffer_t buf)\n+{\n+  grub_free (buf->data);\n+  grub_free (buf);\n+}\n+\n+grub_err_t\n+grub_buffer_ensure_space (grub_buffer_t buf, grub_size_t req)\n+{\n+  grub_uint8_t *d;\n+  grub_size_t newsz = 1;\n+\n+  /* Is the current buffer size adequate? */\n+  if (buf->sz >= req)\n+    return GRUB_ERR_NONE;\n+\n+  /* Find the smallest power-of-2 size that satisfies the request. */\n+  while (newsz < req)\n+    {\n+      if (newsz == 0)\n+\treturn grub_error (GRUB_ERR_OUT_OF_RANGE,\n+\t\t\t   N_(\"requested buffer size is too large\"));\n+      newsz <<= 1;\n+    }\n+\n+  d = (grub_uint8_t *) grub_realloc (buf->data, newsz);\n+  if (d == NULL)\n+    return grub_errno;\n+\n+  buf->data = d;\n+  buf->sz = newsz;\n+\n+  return GRUB_ERR_NONE;\n+}\n+\n+void *\n+grub_buffer_take_data (grub_buffer_t buf)\n+{\n+  void *data = buf->data;\n+\n+  buf->data = NULL;\n+  buf->sz = buf->pos = buf->used = 0;\n+\n+  return data;\n+}\n+\n+void\n+grub_buffer_reset (grub_buffer_t buf)\n+{\n+  buf->pos = buf->used = 0;\n+}\n+\n+grub_err_t\n+grub_buffer_advance_read_pos (grub_buffer_t buf, grub_size_t n)\n+{\n+  grub_size_t newpos;\n+\n+  if (grub_add (buf->pos, n, &newpos))\n+    return grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n+\n+  if (newpos > buf->used)\n+    return grub_error (GRUB_ERR_OUT_OF_RANGE,\n+\t\t       N_(\"new read is position beyond the end of the written data\"));\n+\n+  buf->pos = newpos;\n+\n+  return GRUB_ERR_NONE;\n+}\ndiff --git a/include/grub/buffer.h b/include/grub/buffer.h\nnew file mode 100644\nindex 0000000..f4b10cf\n--- /dev/null\n+++ b/include/grub/buffer.h\n@@ -0,0 +1,144 @@\n+/*\n+ *  GRUB  --  GRand Unified Bootloader\n+ *  Copyright (C) 2021  Free Software Foundation, Inc.\n+ *\n+ *  GRUB is free software: you can redistribute it and/or modify\n+ *  it under the terms of the GNU General Public License as published by\n+ *  the Free Software Foundation, either version 3 of the License, or\n+ *  (at your option) any later version.\n+ *\n+ *  GRUB is distributed in the hope that it will be useful,\n+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ *  GNU General Public License for more details.\n+ *\n+ *  You should have received a copy of the GNU General Public License\n+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.\n+ */\n+\n+#ifndef GRUB_BUFFER_H\n+#define GRUB_BUFFER_H\t1\n+\n+#include <grub/err.h>\n+#include <grub/misc.h>\n+#include <grub/mm.h>\n+#include <grub/safemath.h>\n+#include <grub/types.h>\n+\n+struct grub_buffer\n+{\n+  grub_uint8_t *data;\n+  grub_size_t sz;\n+  grub_size_t pos;\n+  grub_size_t used;\n+};\n+\n+/*\n+ * grub_buffer_t represents a simple variable sized byte buffer with\n+ * read and write cursors. It currently only implements\n+ * functionality required by the only user in GRUB (append byte[s],\n+ * peeking data at a specified position and updating the read cursor.\n+ * Some things that this doesn't do yet are:\n+ * - Reading a portion of the buffer by copying data from the current\n+ *   read position in to a caller supplied destination buffer and then\n+ *   automatically updating the read cursor.\n+ * - Dropping the read part at the start of the buffer when an append\n+ *   requires more space.\n+ */\n+typedef struct grub_buffer *grub_buffer_t;\n+\n+/* Allocate a new buffer with the specified initial size. */\n+extern grub_buffer_t grub_buffer_new (grub_size_t sz);\n+\n+/* Free the buffer and its resources. */\n+extern void grub_buffer_free (grub_buffer_t buf);\n+\n+/* Return the number of unread bytes in this buffer. */\n+static inline grub_size_t\n+grub_buffer_get_unread_bytes (grub_buffer_t buf)\n+{\n+  return buf->used - buf->pos;\n+}\n+\n+/*\n+ * Ensure that the buffer size is at least the requested\n+ * number of bytes.\n+ */\n+extern grub_err_t grub_buffer_ensure_space (grub_buffer_t buf, grub_size_t req);\n+\n+/*\n+ * Append the specified number of bytes from the supplied\n+ * data to the buffer.\n+ */\n+static inline grub_err_t\n+grub_buffer_append_data (grub_buffer_t buf, const void *data, grub_size_t len)\n+{\n+  grub_size_t req;\n+\n+  if (grub_add (buf->used, len, &req))\n+    return grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected\"));\n+\n+  if (grub_buffer_ensure_space (buf, req) != GRUB_ERR_NONE)\n+    return grub_errno;\n+\n+  grub_memcpy (&buf->data[buf->used], data, len);\n+  buf->used = req;\n+\n+  return GRUB_ERR_NONE;\n+}\n+\n+/* Append the supplied character to the buffer. */\n+static inline grub_err_t\n+grub_buffer_append_char (grub_buffer_t buf, char c)\n+{\n+  return grub_buffer_append_data (buf, &c, 1);\n+}\n+\n+/*\n+ * Forget and return the underlying data buffer. The caller\n+ * becomes the owner of this buffer, and must free it when it\n+ * is no longer required.\n+ */\n+extern void *grub_buffer_take_data (grub_buffer_t buf);\n+\n+/* Reset this buffer. Note that this does not deallocate any resources. */\n+void grub_buffer_reset (grub_buffer_t buf);\n+\n+/*\n+ * Return a pointer to the underlying data buffer at the specified\n+ * offset from the current read position. Note that this pointer may\n+ * become invalid if the buffer is mutated further.\n+ */\n+static inline void *\n+grub_buffer_peek_data_at (grub_buffer_t buf, grub_size_t off)\n+{\n+  if (grub_add (buf->pos, off, &off))\n+    {\n+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"overflow is detected.\"));\n+      return NULL;\n+    }\n+\n+  if (off >= buf->used)\n+    {\n+      grub_error (GRUB_ERR_OUT_OF_RANGE, N_(\"peek out of range\"));\n+      return NULL;\n+    }\n+\n+  return &buf->data[off];\n+}\n+\n+/*\n+ * Return a pointer to the underlying data buffer at the current\n+ * read position. Note that this pointer may become invalid if the\n+ * buffer is mutated further.\n+ */\n+static inline void *\n+grub_buffer_peek_data (grub_buffer_t buf)\n+{\n+  return grub_buffer_peek_data_at (buf, 0);\n+}\n+\n+/* Advance the read position by the specified number of bytes. */\n+extern grub_err_t grub_buffer_advance_read_pos (grub_buffer_t buf, grub_size_t n);\n+\n+#endif /* GRUB_BUFFER_H */\ndiff --git a/po/POTFILES.in b/po/POTFILES.in\nindex 5e26845..7753ab4 100644\n--- a/po/POTFILES.in\n+++ b/po/POTFILES.in\n@@ -250,6 +250,7 @@\n ./grub-core/kern/arm64/dl.c\n ./grub-core/kern/arm64/dl_helper.c\n ./grub-core/kern/arm64/efi/init.c\n+./grub-core/kern/buffer.c\n ./grub-core/kern/command.c\n ./grub-core/kern/compiler-rt.c\n ./grub-core/kern/coreboot/cbtable.c\n@@ -1021,6 +1022,7 @@\n ./include/grub/boottime.h\n ./include/grub/bsdlabel.h\n ./include/grub/btrfs.h\n+./include/grub/buffer.h\n ./include/grub/bufio.h\n ./include/grub/cache.h\n ./include/grub/cbfs_core.h\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0132-kern-parser-Fix-a-stack-buffer-overflow.patch",
    "content": "From 4ea7bae51f97e49c84dc67ea30b466ca8633b9f6 Mon Sep 17 00:00:00 2001\nFrom: Chris Coulson <chris.coulson@canonical.com>\nDate: Thu, 7 Jan 2021 19:21:03 +0000\nSubject: [PATCH] kern/parser: Fix a stack buffer overflow\n\ngrub_parser_split_cmdline() expands variable names present in the supplied\ncommand line in to their corresponding variable contents and uses a 1 kiB\nstack buffer for temporary storage without sufficient bounds checking. If\nthe function is called with a command line that references a variable with\na sufficiently large payload, it is possible to overflow the stack\nbuffer via tab completion, corrupt the stack frame and potentially\ncontrol execution.\n\nFixes: CVE-2020-27749\n\nReported-by: Chris Coulson <chris.coulson@canonical.com>\nSigned-off-by: Chris Coulson <chris.coulson@canonical.com>\nSigned-off-by: Darren Kenny <darren.kenny@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/parser.c | 110 +++++++++++++++++++++++++++++-------------------\n 1 file changed, 67 insertions(+), 43 deletions(-)\n\ndiff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c\nindex e010eaa..6ab7aa4 100644\n--- a/grub-core/kern/parser.c\n+++ b/grub-core/kern/parser.c\n@@ -18,6 +18,7 @@\n  */\n \n #include <grub/parser.h>\n+#include <grub/buffer.h>\n #include <grub/env.h>\n #include <grub/misc.h>\n #include <grub/mm.h>\n@@ -107,8 +108,8 @@ check_varstate (grub_parser_state_t s)\n }\n \n \n-static void\n-add_var (char *varname, char **bp, char **vp,\n+static grub_err_t\n+add_var (grub_buffer_t varname, grub_buffer_t buf,\n \t grub_parser_state_t state, grub_parser_state_t newstate)\n {\n   const char *val;\n@@ -116,31 +117,41 @@ add_var (char *varname, char **bp, char **vp,\n   /* Check if a variable was being read in and the end of the name\n      was reached.  */\n   if (!(check_varstate (state) && !check_varstate (newstate)))\n-    return;\n+    return GRUB_ERR_NONE;\n+\n+  if (grub_buffer_append_char (varname, '\\0') != GRUB_ERR_NONE)\n+    return grub_errno;\n \n-  *((*vp)++) = '\\0';\n-  val = grub_env_get (varname);\n-  *vp = varname;\n+  val = grub_env_get ((const char *) grub_buffer_peek_data (varname));\n+  grub_buffer_reset (varname);\n   if (!val)\n-    return;\n+    return GRUB_ERR_NONE;\n \n   /* Insert the contents of the variable in the buffer.  */\n-  for (; *val; val++)\n-    *((*bp)++) = *val;\n+  return grub_buffer_append_data (buf, val, grub_strlen (val));\n }\n \n-static void\n-terminate_arg (char *buffer, char **bp, int *argc)\n+static grub_err_t\n+terminate_arg (grub_buffer_t buffer, int *argc)\n {\n-  if (*bp != buffer && *((*bp) - 1) != '\\0')\n-    {\n-      *((*bp)++) = '\\0';\n-      (*argc)++;\n-    }\n+  grub_size_t unread = grub_buffer_get_unread_bytes (buffer);\n+\n+  if (unread == 0)\n+    return GRUB_ERR_NONE;\n+\n+  if (*(const char *) grub_buffer_peek_data_at (buffer, unread - 1) == '\\0')\n+    return GRUB_ERR_NONE;\n+\n+  if (grub_buffer_append_char (buffer, '\\0') != GRUB_ERR_NONE)\n+    return grub_errno;\n+\n+  (*argc)++;\n+\n+  return GRUB_ERR_NONE;\n }\n \n static grub_err_t\n-process_char (char c, char *buffer, char **bp, char *varname, char **vp,\n+process_char (char c, grub_buffer_t buffer, grub_buffer_t varname,\n \t      grub_parser_state_t state, int *argc,\n \t      grub_parser_state_t *newstate)\n {\n@@ -153,12 +164,13 @@ process_char (char c, char *buffer, char **bp, char *varname, char **vp,\n    * not describe the variable anymore, write the variable to\n    * the buffer.\n    */\n-  add_var (varname, bp, vp, state, *newstate);\n+  if (add_var (varname, buffer, state, *newstate) != GRUB_ERR_NONE)\n+    return grub_errno;\n \n   if (check_varstate (*newstate))\n     {\n       if (use)\n-\t*((*vp)++) = use;\n+        return grub_buffer_append_char (varname, use);\n     }\n   else if (*newstate == GRUB_PARSER_STATE_TEXT &&\n \t   state != GRUB_PARSER_STATE_ESC && grub_isspace (use))\n@@ -167,10 +179,10 @@ process_char (char c, char *buffer, char **bp, char *varname, char **vp,\n        * Don't add more than one argument if multiple\n        * spaces are used.\n        */\n-      terminate_arg (buffer, bp, argc);\n+      return terminate_arg (buffer, argc);\n     }\n   else if (use)\n-    *((*bp)++) = use;\n+    return grub_buffer_append_char (buffer, use);\n \n   return GRUB_ERR_NONE;\n }\n@@ -181,19 +193,22 @@ grub_parser_split_cmdline (const char *cmdline,\n \t\t\t   int *argc, char ***argv)\n {\n   grub_parser_state_t state = GRUB_PARSER_STATE_TEXT;\n-  /* XXX: Fixed size buffer, perhaps this buffer should be dynamically\n-     allocated.  */\n-  char buffer[1024];\n-  char *bp = buffer;\n+  grub_buffer_t buffer, varname;\n   char *rd = (char *) cmdline;\n   char *rp = rd;\n-  char varname[200];\n-  char *vp = varname;\n-  char *args;\n   int i;\n \n   *argc = 0;\n   *argv = NULL;\n+\n+  buffer = grub_buffer_new (1024);\n+  if (buffer == NULL)\n+    return grub_errno;\n+\n+  varname = grub_buffer_new (200);\n+  if (varname == NULL)\n+    goto fail;\n+\n   do\n     {\n       if (rp == NULL || *rp == '\\0')\n@@ -219,7 +234,7 @@ grub_parser_split_cmdline (const char *cmdline,\n \t{\n \t  grub_parser_state_t newstate;\n \n-\t  if (process_char (*rp, buffer, &bp, varname, &vp, state, argc,\n+\t  if (process_char (*rp, buffer, varname, state, argc,\n \t\t\t    &newstate) != GRUB_ERR_NONE)\n \t    goto fail;\n \n@@ -230,10 +245,12 @@ grub_parser_split_cmdline (const char *cmdline,\n \n   /* A special case for when the last character was part of a\n      variable.  */\n-  add_var (varname, &bp, &vp, state, GRUB_PARSER_STATE_TEXT);\n+  if (add_var (varname, buffer, state, GRUB_PARSER_STATE_TEXT) != GRUB_ERR_NONE)\n+    goto fail;\n \n   /* Ensure that the last argument is terminated. */\n-  terminate_arg (buffer, &bp, argc);\n+  if (terminate_arg (buffer, argc) != GRUB_ERR_NONE)\n+    goto fail;\n \n   /* If there are no args, then we're done. */\n   if (!*argc)\n@@ -242,38 +259,45 @@ grub_parser_split_cmdline (const char *cmdline,\n       goto out;\n     }\n \n-  /* Reserve memory for the return values.  */\n-  args = grub_malloc (bp - buffer);\n-  if (!args)\n-    goto fail;\n-  grub_memcpy (args, buffer, bp - buffer);\n-\n   *argv = grub_calloc (*argc + 1, sizeof (char *));\n   if (!*argv)\n     goto fail;\n \n   /* The arguments are separated with 0's, setup argv so it points to\n      the right values.  */\n-  bp = args;\n   for (i = 0; i < *argc; i++)\n     {\n-      (*argv)[i] = bp;\n-      while (*bp)\n-\tbp++;\n-      bp++;\n+      char *arg;\n+\n+      if (i > 0)\n+\t{\n+\t  if (grub_buffer_advance_read_pos (buffer, 1) != GRUB_ERR_NONE)\n+\t    goto fail;\n+\t}\n+\n+      arg = (char *) grub_buffer_peek_data (buffer);\n+      if (arg == NULL ||\n+\t  grub_buffer_advance_read_pos (buffer, grub_strlen (arg)) != GRUB_ERR_NONE)\n+\tgoto fail;\n+\n+      (*argv)[i] = arg;\n     }\n \n+  /* Keep memory for the return values. */\n+  grub_buffer_take_data (buffer);\n+\n   grub_errno = GRUB_ERR_NONE;\n \n  out:\n   if (rd != cmdline)\n     grub_free (rd);\n+  grub_buffer_free (buffer);\n+  grub_buffer_free (varname);\n \n   return grub_errno;\n \n  fail:\n   grub_free (*argv);\n-  grub_free (args);\n   goto out;\n }\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0133-kern-efi-Add-initial-stack-protector-implementation.patch",
    "content": "From 133d73079c5771bbf3d8311281b6772846357ec1 Mon Sep 17 00:00:00 2001\nFrom: Chris Coulson <chris.coulson@canonical.com>\nDate: Tue, 1 Dec 2020 23:03:39 +0000\nSubject: [PATCH] kern/efi: Add initial stack protector implementation\n\nIt works only on UEFI platforms but can be quite easily extended to\nothers architectures and platforms if needed.\n\nSigned-off-by: Chris Coulson <chris.coulson@canonical.com>\nSigned-off-by: Daniel Kiper <daniel.kiper@oracle.com>\nReviewed-by: Marco A Benatto <mbenatto@redhat.com>\nReviewed-by: Javier Martinez Canillas <javierm@redhat.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n acinclude.m4                   | 38 ++++++++++++++++-\n configure                      | 97 +++++++++++++++++++++++++++++++++++++++---\n configure.ac                   | 44 ++++++++++++++++---\n grub-core/Makefile.am          |  1 +\n grub-core/Makefile.in          |  1 +\n grub-core/kern/efi/init.c      | 54 +++++++++++++++++++++++\n include/grub/efi/api.h         | 19 +++++++++\n include/grub/stack_protector.h | 30 +++++++++++++\n po/POTFILES.in                 |  1 +\n 9 files changed, 272 insertions(+), 13 deletions(-)\n create mode 100644 include/grub/stack_protector.h\n\ndiff --git a/acinclude.m4 b/acinclude.m4\nindex 78cdf6e..6e14bb5 100644\n--- a/acinclude.m4\n+++ b/acinclude.m4\n@@ -305,9 +305,9 @@ fi\n ])\n \n \f\n-dnl Check if the C compiler supports `-fstack-protector'.\n+dnl Check if the C compiler supports the stack protector\n AC_DEFUN([grub_CHECK_STACK_PROTECTOR],[\n-[# Smashing stack protector.\n+[# Stack smashing protector.\n ssp_possible=yes]\n AC_MSG_CHECKING([whether `$CC' accepts `-fstack-protector'])\n # Is this a reliable test case?\n@@ -324,6 +324,40 @@ else\n   ssp_possible=no]\n   AC_MSG_RESULT([no])\n [fi]\n+[# Strong stack smashing protector.\n+ssp_strong_possible=yes]\n+AC_MSG_CHECKING([whether `$CC' accepts `-fstack-protector-strong'])\n+# Is this a reliable test case?\n+AC_LANG_CONFTEST([AC_LANG_SOURCE([[\n+void foo (void) { volatile char a[8]; a[3]; }\n+]])])\n+[# `$CC -c -o ...' might not be portable.  But, oh, well...  Is calling\n+# `ac_compile' like this correct, after all?\n+if eval \"$ac_compile -S -fstack-protector-strong -o conftest.s\" 2> /dev/null; then]\n+  AC_MSG_RESULT([yes])\n+  [# Should we clear up other files as well, having called `AC_LANG_CONFTEST'?\n+  rm -f conftest.s\n+else\n+  ssp_strong_possible=no]\n+  AC_MSG_RESULT([no])\n+[fi]\n+[# Global stack smashing protector.\n+ssp_global_possible=yes]\n+AC_MSG_CHECKING([whether `$CC' accepts `-mstack-protector-guard=global'])\n+# Is this a reliable test case?\n+AC_LANG_CONFTEST([AC_LANG_SOURCE([[\n+void foo (void) { volatile char a[8]; a[3]; }\n+]])])\n+[# `$CC -c -o ...' might not be portable.  But, oh, well...  Is calling\n+# `ac_compile' like this correct, after all?\n+if eval \"$ac_compile -S -fstack-protector -mstack-protector-guard=global -o conftest.s\" 2> /dev/null; then]\n+  AC_MSG_RESULT([yes])\n+  [# Should we clear up other files as well, having called `AC_LANG_CONFTEST'?\n+  rm -f conftest.s\n+else\n+  ssp_global_possible=no]\n+  AC_MSG_RESULT([no])\n+[fi]\n ])\n \n dnl Check if the C compiler supports `-mstack-arg-probe' (Cygwin).\ndiff --git a/configure b/configure\nindex 9290ae8..973f702 100755\n--- a/configure\n+++ b/configure\n@@ -1778,6 +1778,7 @@ with_libintl_prefix\n with_libpth_prefix\n with_included_regex\n enable_efiemu\n+enable_stack_protector\n enable_mm_debug\n enable_cache_stats\n enable_boot_time\n@@ -2459,6 +2460,8 @@ Optional Features:\n   --disable-rpath         do not hardcode runtime library paths\n   --enable-efiemu         build and install the efiemu runtimes\n                           (default=guessed)\n+  --enable-stack-protector\n+                          enable the stack protector\n   --enable-mm-debug       include memory manager debugging\n   --enable-cache-stats    enable disk cache statistics collection\n   --enable-boot-time      enable boot time statistics collection\n@@ -32348,9 +32351,9 @@ fi\n \n CFLAGS=\"$TARGET_CFLAGS\"\n \n-# Smashing stack protector.\n+# Stack smashing protector.\n \n-# Smashing stack protector.\n+# Stack smashing protector.\n ssp_possible=yes\n { $as_echo \"$as_me:${as_lineno-$LINENO}: checking whether \\`$CC' accepts \\`-fstack-protector'\" >&5\n $as_echo_n \"checking whether \\`$CC' accepts \\`-fstack-protector'... \" >&6; }\n@@ -32373,11 +32376,88 @@ else\n   { $as_echo \"$as_me:${as_lineno-$LINENO}: result: no\" >&5\n $as_echo \"no\" >&6; }\n fi\n+# Strong stack smashing protector.\n+ssp_strong_possible=yes\n+{ $as_echo \"$as_me:${as_lineno-$LINENO}: checking whether \\`$CC' accepts \\`-fstack-protector-strong'\" >&5\n+$as_echo_n \"checking whether \\`$CC' accepts \\`-fstack-protector-strong'... \" >&6; }\n+# Is this a reliable test case?\n+cat confdefs.h - <<_ACEOF >conftest.$ac_ext\n+/* end confdefs.h.  */\n \n-# Need that, because some distributions ship compilers that include\n-# `-fstack-protector' in the default specs.\n-if test \"x$ssp_possible\" = xyes; then\n-  TARGET_CFLAGS=\"$TARGET_CFLAGS -fno-stack-protector\"\n+void foo (void) { volatile char a[8]; a[3]; }\n+\n+_ACEOF\n+# `$CC -c -o ...' might not be portable.  But, oh, well...  Is calling\n+# `ac_compile' like this correct, after all?\n+if eval \"$ac_compile -S -fstack-protector-strong -o conftest.s\" 2> /dev/null; then\n+  { $as_echo \"$as_me:${as_lineno-$LINENO}: result: yes\" >&5\n+$as_echo \"yes\" >&6; }\n+  # Should we clear up other files as well, having called `AC_LANG_CONFTEST'?\n+  rm -f conftest.s\n+else\n+  ssp_strong_possible=no\n+  { $as_echo \"$as_me:${as_lineno-$LINENO}: result: no\" >&5\n+$as_echo \"no\" >&6; }\n+fi\n+# Global stack smashing protector.\n+ssp_global_possible=yes\n+{ $as_echo \"$as_me:${as_lineno-$LINENO}: checking whether \\`$CC' accepts \\`-mstack-protector-guard=global'\" >&5\n+$as_echo_n \"checking whether \\`$CC' accepts \\`-mstack-protector-guard=global'... \" >&6; }\n+# Is this a reliable test case?\n+cat confdefs.h - <<_ACEOF >conftest.$ac_ext\n+/* end confdefs.h.  */\n+\n+void foo (void) { volatile char a[8]; a[3]; }\n+\n+_ACEOF\n+# `$CC -c -o ...' might not be portable.  But, oh, well...  Is calling\n+# `ac_compile' like this correct, after all?\n+if eval \"$ac_compile -S -fstack-protector -mstack-protector-guard=global -o conftest.s\" 2> /dev/null; then\n+  { $as_echo \"$as_me:${as_lineno-$LINENO}: result: yes\" >&5\n+$as_echo \"yes\" >&6; }\n+  # Should we clear up other files as well, having called `AC_LANG_CONFTEST'?\n+  rm -f conftest.s\n+else\n+  ssp_global_possible=no\n+  { $as_echo \"$as_me:${as_lineno-$LINENO}: result: no\" >&5\n+$as_echo \"no\" >&6; }\n+fi\n+\n+# Check whether --enable-stack-protector was given.\n+if test \"${enable_stack_protector+set}\" = set; then :\n+  enableval=$enable_stack_protector;\n+else\n+  enable_stack_protector=no\n+fi\n+\n+if test \"x$enable_stack_protector\" = xno; then\n+  if test \"x$ssp_possible\" = xyes; then\n+    # Need that, because some distributions ship compilers that include\n+    # `-fstack-protector' in the default specs.\n+    TARGET_CFLAGS=\"$TARGET_CFLAGS -fno-stack-protector\"\n+  fi\n+elif test \"x$platform\" != xefi; then\n+  as_fn_error $? \"--enable-stack-protector is only supported on EFI platforms\" \"$LINENO\" 5\n+elif test \"x$ssp_global_possible\" != xyes; then\n+  as_fn_error $? \"--enable-stack-protector is not supported (compiler doesn't support -mstack-protector-guard=global)\" \"$LINENO\" 5\n+else\n+  TARGET_CFLAGS=\"$TARGET_CFLAGS -mstack-protector-guard=global\"\n+  if test \"x$enable_stack_protector\" = xyes; then\n+    if test \"x$ssp_possible\" != xyes; then\n+      as_fn_error $? \"--enable-stack-protector is not supported (compiler doesn't support -fstack-protector)\" \"$LINENO\" 5\n+    fi\n+    TARGET_CFLAGS=\"$TARGET_CFLAGS -fstack-protector\"\n+  elif test \"x$enable_stack_protector\" = xstrong; then\n+    if test \"x$ssp_strong_possible\" != xyes; then\n+      as_fn_error $? \"--enable-stack-protector=strong is not supported (compiler doesn't support -fstack-protector-strong)\" \"$LINENO\" 5\n+    fi\n+    TARGET_CFLAGS=\"$TARGET_CFLAGS -fstack-protector-strong\"\n+  else\n+    # Note, -fstack-protector-all requires that the protector is disabled for\n+    # functions that appear in the call stack when the canary is initialized.\n+    as_fn_error $? \"invalid value $enable_stack_protector for --enable-stack-protector\" \"$LINENO\" 5\n+  fi\n+  TARGET_CPPFLAGS=\"$TARGET_CPPFLAGS -DGRUB_STACK_PROTECTOR=1\"\n fi\n \n CFLAGS=\"$TARGET_CFLAGS\"\n@@ -37054,5 +37134,10 @@ echo \"Without liblzma (no support for XZ-compressed mips images) ($liblzma_excus\n else\n echo \"With liblzma from $LIBLZMA (support for XZ-compressed mips images)\"\n fi\n+if test \"x$enable_stack_protector\" != xno; then\n+echo \"With stack smashing protector: Yes\"\n+else\n+echo \"With stack smashing protector: No\"\n+fi\n echo \"*******************************************************\"\n \ndiff --git a/configure.ac b/configure.ac\nindex 7656f24..bb6b02a 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1285,12 +1285,41 @@ fi]\n \n CFLAGS=\"$TARGET_CFLAGS\"\n \n-# Smashing stack protector.\n+# Stack smashing protector.\n grub_CHECK_STACK_PROTECTOR\n-# Need that, because some distributions ship compilers that include\n-# `-fstack-protector' in the default specs.\n-if test \"x$ssp_possible\" = xyes; then\n-  TARGET_CFLAGS=\"$TARGET_CFLAGS -fno-stack-protector\"\n+AC_ARG_ENABLE([stack-protector],\n+\t      AS_HELP_STRING([--enable-stack-protector],\n+\t\t\t     [enable the stack protector]),\n+\t      [],\n+\t      [enable_stack_protector=no])\n+if test \"x$enable_stack_protector\" = xno; then\n+  if test \"x$ssp_possible\" = xyes; then\n+    # Need that, because some distributions ship compilers that include\n+    # `-fstack-protector' in the default specs.\n+    TARGET_CFLAGS=\"$TARGET_CFLAGS -fno-stack-protector\"\n+  fi\n+elif test \"x$platform\" != xefi; then\n+  AC_MSG_ERROR([--enable-stack-protector is only supported on EFI platforms])\n+elif test \"x$ssp_global_possible\" != xyes; then\n+  AC_MSG_ERROR([--enable-stack-protector is not supported (compiler doesn't support -mstack-protector-guard=global)])\n+else\n+  TARGET_CFLAGS=\"$TARGET_CFLAGS -mstack-protector-guard=global\"\n+  if test \"x$enable_stack_protector\" = xyes; then\n+    if test \"x$ssp_possible\" != xyes; then\n+      AC_MSG_ERROR([--enable-stack-protector is not supported (compiler doesn't support -fstack-protector)])\n+    fi\n+    TARGET_CFLAGS=\"$TARGET_CFLAGS -fstack-protector\"\n+  elif test \"x$enable_stack_protector\" = xstrong; then\n+    if test \"x$ssp_strong_possible\" != xyes; then\n+      AC_MSG_ERROR([--enable-stack-protector=strong is not supported (compiler doesn't support -fstack-protector-strong)])\n+    fi\n+    TARGET_CFLAGS=\"$TARGET_CFLAGS -fstack-protector-strong\"\n+  else\n+    # Note, -fstack-protector-all requires that the protector is disabled for\n+    # functions that appear in the call stack when the canary is initialized.\n+    AC_MSG_ERROR([invalid value $enable_stack_protector for --enable-stack-protector])\n+  fi\n+  TARGET_CPPFLAGS=\"$TARGET_CPPFLAGS -DGRUB_STACK_PROTECTOR=1\"\n fi\n \n CFLAGS=\"$TARGET_CFLAGS\"\n@@ -2103,5 +2132,10 @@ echo \"Without liblzma (no support for XZ-compressed mips images) ($liblzma_excus\n else\n echo \"With liblzma from $LIBLZMA (support for XZ-compressed mips images)\"\n fi\n+if test \"x$enable_stack_protector\" != xno; then\n+echo \"With stack smashing protector: Yes\"\n+else\n+echo \"With stack smashing protector: No\"\n+fi\n echo \"*******************************************************\"\n ]\ndiff --git a/grub-core/Makefile.am b/grub-core/Makefile.am\nindex 30e23ad..ee88e44 100644\n--- a/grub-core/Makefile.am\n+++ b/grub-core/Makefile.am\n@@ -90,6 +90,7 @@ endif\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/mm.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/parser.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/partition.h\n+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/stack_protector.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/term.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/time.h\n KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/verify.h\ndiff --git a/grub-core/Makefile.in b/grub-core/Makefile.in\nindex 1f8133b..50c70b5 100644\n--- a/grub-core/Makefile.in\n+++ b/grub-core/Makefile.in\n@@ -16425,6 +16425,7 @@ KERNEL_HEADER_FILES = $(top_srcdir)/include/grub/cache.h \\\n \t$(am__append_5795) $(top_srcdir)/include/grub/mm.h \\\n \t$(top_srcdir)/include/grub/parser.h \\\n \t$(top_srcdir)/include/grub/partition.h \\\n+\t$(top_srcdir)/include/grub/stack_protector.h \\\n \t$(top_srcdir)/include/grub/term.h \\\n \t$(top_srcdir)/include/grub/time.h \\\n \t$(top_srcdir)/include/grub/verify.h \\\ndiff --git a/grub-core/kern/efi/init.c b/grub-core/kern/efi/init.c\nindex 1333465..7facacf 100644\n--- a/grub-core/kern/efi/init.c\n+++ b/grub-core/kern/efi/init.c\n@@ -27,6 +27,58 @@\n #include <grub/env.h>\n #include <grub/mm.h>\n #include <grub/kernel.h>\n+#include <grub/stack_protector.h>\n+\n+#ifdef GRUB_STACK_PROTECTOR\n+\n+static grub_efi_guid_t rng_protocol_guid = GRUB_EFI_RNG_PROTOCOL_GUID;\n+\n+/*\n+ * Don't put this on grub_efi_init()'s local stack to avoid it\n+ * getting a stack check.\n+ */\n+static grub_efi_uint8_t stack_chk_guard_buf[32];\n+\n+grub_addr_t __stack_chk_guard;\n+\n+void __attribute__ ((noreturn))\n+__stack_chk_fail (void)\n+{\n+  /*\n+   * Assume it's not safe to call into EFI Boot Services. Sorry, that\n+   * means no console message here.\n+   */\n+  do\n+    {\n+      /* Do not optimize out the loop. */\n+      asm volatile (\"\");\n+    }\n+  while (1);\n+}\n+\n+static void\n+stack_protector_init (void)\n+{\n+  grub_efi_rng_protocol_t *rng;\n+\n+  /* Set up the stack canary. Make errors here non-fatal for now. */\n+  rng = grub_efi_locate_protocol (&rng_protocol_guid, NULL);\n+  if (rng != NULL)\n+    {\n+      grub_efi_status_t status;\n+\n+      status = efi_call_4 (rng->get_rng, rng, NULL, sizeof (stack_chk_guard_buf),\n+\t\t\t   stack_chk_guard_buf);\n+      if (status == GRUB_EFI_SUCCESS)\n+\tgrub_memcpy (&__stack_chk_guard, stack_chk_guard_buf, sizeof (__stack_chk_guard));\n+    }\n+}\n+#else\n+static void\n+stack_protector_init (void)\n+{\n+}\n+#endif\n \n grub_addr_t grub_modbase;\n \n@@ -38,6 +90,8 @@ grub_efi_init (void)\n      messages.  */\n   grub_console_init ();\n \n+  stack_protector_init ();\n+\n   /* Initialize the memory management system.  */\n   grub_efi_mm_init ();\n \ndiff --git a/include/grub/efi/api.h b/include/grub/efi/api.h\nindex 13e5715..5517f7e 100644\n--- a/include/grub/efi/api.h\n+++ b/include/grub/efi/api.h\n@@ -339,6 +339,11 @@\n     { 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23 } \\\n   }\n \n+#define GRUB_EFI_RNG_PROTOCOL_GUID \\\n+  { 0x3152bca5, 0xeade, 0x433d, \\\n+    { 0x86, 0x2e, 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44 } \\\n+  }\n+\n struct grub_efi_sal_system_table\n {\n   grub_uint32_t signature;\n@@ -1700,6 +1705,20 @@ struct grub_efi_shim_lock_protocol\n };\n typedef struct grub_efi_shim_lock_protocol grub_efi_shim_lock_protocol_t;\n \n+typedef grub_efi_guid_t grub_efi_rng_algorithm_t;\n+\n+struct grub_efi_rng_protocol\n+{\n+  grub_efi_status_t (*get_info) (struct grub_efi_rng_protocol *this,\n+\t\t\t\t grub_efi_uintn_t *rng_algorithm_list_size,\n+\t\t\t\t grub_efi_rng_algorithm_t *rng_algorithm_list);\n+  grub_efi_status_t (*get_rng) (struct grub_efi_rng_protocol *this,\n+\t\t\t\tgrub_efi_rng_algorithm_t *rng_algorithm,\n+\t\t\t\tgrub_efi_uintn_t rng_value_length,\n+\t\t\t\tgrub_efi_uint8_t *rng_value);\n+};\n+typedef struct grub_efi_rng_protocol grub_efi_rng_protocol_t;\n+\n #if (GRUB_TARGET_SIZEOF_VOID_P == 4) || defined (__ia64__) \\\n   || defined (__aarch64__) || defined (__MINGW64__) || defined (__CYGWIN__) \\\n   || defined(__riscv)\ndiff --git a/include/grub/stack_protector.h b/include/grub/stack_protector.h\nnew file mode 100644\nindex 0000000..c88dc00\n--- /dev/null\n+++ b/include/grub/stack_protector.h\n@@ -0,0 +1,30 @@\n+/*\n+ *  GRUB  --  GRand Unified Bootloader\n+ *  Copyright (C) 2021  Free Software Foundation, Inc.\n+ *\n+ *  GRUB is free software: you can redistribute it and/or modify\n+ *  it under the terms of the GNU General Public License as published by\n+ *  the Free Software Foundation, either version 3 of the License, or\n+ *  (at your option) any later version.\n+ *\n+ *  GRUB is distributed in the hope that it will be useful,\n+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ *  GNU General Public License for more details.\n+ *\n+ *  You should have received a copy of the GNU General Public License\n+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.\n+ */\n+\n+#ifndef GRUB_STACK_PROTECTOR_H\n+#define GRUB_STACK_PROTECTOR_H\t1\n+\n+#include <grub/symbol.h>\n+#include <grub/types.h>\n+\n+#ifdef GRUB_STACK_PROTECTOR\n+extern grub_addr_t EXPORT_VAR (__stack_chk_guard);\n+extern void __attribute__ ((noreturn)) EXPORT_FUNC (__stack_chk_fail) (void);\n+#endif\n+\n+#endif /* GRUB_STACK_PROTECTOR_H */\ndiff --git a/po/POTFILES.in b/po/POTFILES.in\nindex 7753ab4..ef42c7d 100644\n--- a/po/POTFILES.in\n+++ b/po/POTFILES.in\n@@ -1319,6 +1319,7 @@\n ./include/grub/sparc64/time.h\n ./include/grub/sparc64/types.h\n ./include/grub/speaker.h\n+./include/grub/stack_protector.h\n ./include/grub/symbol.h\n ./include/grub/syslinux_parse.h\n ./include/grub/term.h\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0134-util-mkimage-Remove-unused-code-to-add-BSS-section.patch",
    "content": "From d52f78def1b9c4f435fdbf6b24fd899208580c76 Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Thu, 11 Feb 2021 17:06:49 +0100\nSubject: [PATCH] util/mkimage: Remove unused code to add BSS section\n\nThe code is compiled out so there is no reason to keep it.\n\nAdditionally, don't set bss_size field since we do not add a BSS section.\n\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n util/mkimage.c | 17 -----------------\n 1 file changed, 17 deletions(-)\n\ndiff --git a/util/mkimage.c b/util/mkimage.c\nindex 37d6249..32bb8ea 100644\n--- a/util/mkimage.c\n+++ b/util/mkimage.c\n@@ -1304,7 +1304,6 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t    o->code_size = grub_host_to_target32 (layout.exec_size);\n \t    o->data_size = grub_cpu_to_le32 (reloc_addr - layout.exec_size\n \t\t\t\t\t     - header_size);\n-\t    o->bss_size = grub_cpu_to_le32 (layout.bss_size);\n \t    o->entry_addr = grub_cpu_to_le32 (layout.start_address);\n \t    o->code_base = grub_cpu_to_le32 (header_size);\n \n@@ -1342,7 +1341,6 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t    o->code_size = grub_host_to_target32 (layout.exec_size);\n \t    o->data_size = grub_cpu_to_le32 (reloc_addr - layout.exec_size\n \t\t\t\t\t     - header_size);\n-\t    o->bss_size = grub_cpu_to_le32 (layout.bss_size);\n \t    o->entry_addr = grub_cpu_to_le32 (layout.start_address);\n \t    o->code_base = grub_cpu_to_le32 (header_size);\n \t    o->image_base = 0;\n@@ -1387,21 +1385,6 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t  = grub_cpu_to_le32_compile_time (GRUB_PE32_SCN_CNT_INITIALIZED_DATA\n \t\t\t      | GRUB_PE32_SCN_MEM_READ\n \t\t\t      | GRUB_PE32_SCN_MEM_WRITE);\n-\n-#if 0\n-\tbss_section = data_section + 1;\n-\tstrcpy (bss_section->name, \".bss\");\n-\tbss_section->virtual_size = grub_cpu_to_le32 (layout.bss_size);\n-\tbss_section->virtual_address = grub_cpu_to_le32 (header_size + layout.kernel_size);\n-\tbss_section->raw_data_size = 0;\n-\tbss_section->raw_data_offset = 0;\n-\tbss_section->characteristics\n-\t  = grub_cpu_to_le32_compile_time (GRUB_PE32_SCN_MEM_READ\n-\t\t\t      | GRUB_PE32_SCN_MEM_WRITE\n-\t\t\t      | GRUB_PE32_SCN_ALIGN_64BYTES\n-\t\t\t      | GRUB_PE32_SCN_CNT_INITIALIZED_DATA\n-\t\t\t      | 0x80);\n-#endif\n     \n \tmods_section = data_section + 1;\n \tstrcpy (mods_section->name, \"mods\");\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0135-util-mkimage-Use-grub_host_to_target32-instead-of-gr.patch",
    "content": "From 1710452aca05ccdd21e74390ec08c63fdf0ee10a Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Mon, 15 Feb 2021 13:59:21 +0100\nSubject: [PATCH] util/mkimage: Use grub_host_to_target32() instead of\n grub_cpu_to_le32()\n\nThe latter doesn't take into account the target image endianness. There is\na grub_cpu_to_le32_compile_time() but no compile time variant for function\ngrub_host_to_target32(). So, let's keep using the other one for this case.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n util/mkimage.c | 44 ++++++++++++++++++++++----------------------\n 1 file changed, 22 insertions(+), 22 deletions(-)\n\ndiff --git a/util/mkimage.c b/util/mkimage.c\nindex 32bb8ea..02944f2 100644\n--- a/util/mkimage.c\n+++ b/util/mkimage.c\n@@ -1302,10 +1302,10 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t       + sizeof (struct grub_pe32_coff_header));\n \t    o->magic = grub_host_to_target16 (GRUB_PE32_PE32_MAGIC);\n \t    o->code_size = grub_host_to_target32 (layout.exec_size);\n-\t    o->data_size = grub_cpu_to_le32 (reloc_addr - layout.exec_size\n+\t    o->data_size = grub_host_to_target32 (reloc_addr - layout.exec_size\n \t\t\t\t\t     - header_size);\n-\t    o->entry_addr = grub_cpu_to_le32 (layout.start_address);\n-\t    o->code_base = grub_cpu_to_le32 (header_size);\n+\t    o->entry_addr = grub_host_to_target32 (layout.start_address);\n+\t    o->code_base = grub_host_to_target32 (header_size);\n \n \t    o->data_base = grub_host_to_target32 (header_size + layout.exec_size);\n \n@@ -1339,10 +1339,10 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t       + sizeof (struct grub_pe32_coff_header));\n \t    o->magic = grub_host_to_target16 (GRUB_PE32_PE64_MAGIC);\n \t    o->code_size = grub_host_to_target32 (layout.exec_size);\n-\t    o->data_size = grub_cpu_to_le32 (reloc_addr - layout.exec_size\n+\t    o->data_size = grub_host_to_target32 (reloc_addr - layout.exec_size\n \t\t\t\t\t     - header_size);\n-\t    o->entry_addr = grub_cpu_to_le32 (layout.start_address);\n-\t    o->code_base = grub_cpu_to_le32 (header_size);\n+\t    o->entry_addr = grub_host_to_target32 (layout.start_address);\n+\t    o->code_base = grub_host_to_target32 (header_size);\n \t    o->image_base = 0;\n \t    o->section_alignment = grub_host_to_target32 (image_target->section_align);\n \t    o->file_alignment = grub_host_to_target32 (GRUB_PE32_FILE_ALIGNMENT);\n@@ -1366,10 +1366,10 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t/* The sections.  */\n \ttext_section = sections;\n \tstrcpy (text_section->name, \".text\");\n-\ttext_section->virtual_size = grub_cpu_to_le32 (layout.exec_size);\n-\ttext_section->virtual_address = grub_cpu_to_le32 (header_size);\n-\ttext_section->raw_data_size = grub_cpu_to_le32 (layout.exec_size);\n-\ttext_section->raw_data_offset = grub_cpu_to_le32 (header_size);\n+\ttext_section->virtual_size = grub_host_to_target32 (layout.exec_size);\n+\ttext_section->virtual_address = grub_host_to_target32 (header_size);\n+\ttext_section->raw_data_size = grub_host_to_target32 (layout.exec_size);\n+\ttext_section->raw_data_offset = grub_host_to_target32 (header_size);\n \ttext_section->characteristics = grub_cpu_to_le32_compile_time (\n \t\t\t\t\t\t  GRUB_PE32_SCN_CNT_CODE\n \t\t\t\t\t\t| GRUB_PE32_SCN_MEM_EXECUTE\n@@ -1377,10 +1377,10 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \n \tdata_section = text_section + 1;\n \tstrcpy (data_section->name, \".data\");\n-\tdata_section->virtual_size = grub_cpu_to_le32 (layout.kernel_size - layout.exec_size);\n-\tdata_section->virtual_address = grub_cpu_to_le32 (header_size + layout.exec_size);\n-\tdata_section->raw_data_size = grub_cpu_to_le32 (layout.kernel_size - layout.exec_size);\n-\tdata_section->raw_data_offset = grub_cpu_to_le32 (header_size + layout.exec_size);\n+\tdata_section->virtual_size = grub_host_to_target32 (layout.kernel_size - layout.exec_size);\n+\tdata_section->virtual_address = grub_host_to_target32 (header_size + layout.exec_size);\n+\tdata_section->raw_data_size = grub_host_to_target32 (layout.kernel_size - layout.exec_size);\n+\tdata_section->raw_data_offset = grub_host_to_target32 (header_size + layout.exec_size);\n \tdata_section->characteristics\n \t  = grub_cpu_to_le32_compile_time (GRUB_PE32_SCN_CNT_INITIALIZED_DATA\n \t\t\t      | GRUB_PE32_SCN_MEM_READ\n@@ -1388,10 +1388,10 @@ grub_install_generate_image (const char *dir, const char *prefix,\n     \n \tmods_section = data_section + 1;\n \tstrcpy (mods_section->name, \"mods\");\n-\tmods_section->virtual_size = grub_cpu_to_le32 (reloc_addr - layout.kernel_size - header_size);\n-\tmods_section->virtual_address = grub_cpu_to_le32 (header_size + layout.kernel_size + layout.bss_size);\n-\tmods_section->raw_data_size = grub_cpu_to_le32 (reloc_addr - layout.kernel_size - header_size);\n-\tmods_section->raw_data_offset = grub_cpu_to_le32 (header_size + layout.kernel_size);\n+\tmods_section->virtual_size = grub_host_to_target32 (reloc_addr - layout.kernel_size - header_size);\n+\tmods_section->virtual_address = grub_host_to_target32 (header_size + layout.kernel_size + layout.bss_size);\n+\tmods_section->raw_data_size = grub_host_to_target32 (reloc_addr - layout.kernel_size - header_size);\n+\tmods_section->raw_data_offset = grub_host_to_target32 (header_size + layout.kernel_size);\n \tmods_section->characteristics\n \t  = grub_cpu_to_le32_compile_time (GRUB_PE32_SCN_CNT_INITIALIZED_DATA\n \t\t\t      | GRUB_PE32_SCN_MEM_READ\n@@ -1399,10 +1399,10 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \n \treloc_section = mods_section + 1;\n \tstrcpy (reloc_section->name, \".reloc\");\n-\treloc_section->virtual_size = grub_cpu_to_le32 (layout.reloc_size);\n-\treloc_section->virtual_address = grub_cpu_to_le32 (reloc_addr + layout.bss_size);\n-\treloc_section->raw_data_size = grub_cpu_to_le32 (layout.reloc_size);\n-\treloc_section->raw_data_offset = grub_cpu_to_le32 (reloc_addr);\n+\treloc_section->virtual_size = grub_host_to_target32 (layout.reloc_size);\n+\treloc_section->virtual_address = grub_host_to_target32 (reloc_addr + layout.bss_size);\n+\treloc_section->raw_data_size = grub_host_to_target32 (layout.reloc_size);\n+\treloc_section->raw_data_offset = grub_host_to_target32 (reloc_addr);\n \treloc_section->characteristics\n \t  = grub_cpu_to_le32_compile_time (GRUB_PE32_SCN_CNT_INITIALIZED_DATA\n \t\t\t      | GRUB_PE32_SCN_MEM_DISCARDABLE\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0136-util-mkimage-Always-use-grub_host_to_target32-to-ini.patch",
    "content": "From ae8936f9c375e1a38129e85a1b5d573fb451f288 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Mon, 15 Feb 2021 14:14:24 +0100\nSubject: [PATCH] util/mkimage: Always use grub_host_to_target32() to\n initialize PE stack and heap stuff\n\nThis change does not impact final result of initialization itself.\nHowever, it eases PE code unification in subsequent patches.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n util/mkimage.c | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/util/mkimage.c b/util/mkimage.c\nindex 02944f2..b94bfb7 100644\n--- a/util/mkimage.c\n+++ b/util/mkimage.c\n@@ -1351,10 +1351,10 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t    o->subsystem = grub_host_to_target16 (GRUB_PE32_SUBSYSTEM_EFI_APPLICATION);\n \n \t    /* Do these really matter? */\n-\t    o->stack_reserve_size = grub_host_to_target64 (0x10000);\n-\t    o->stack_commit_size = grub_host_to_target64 (0x10000);\n-\t    o->heap_reserve_size = grub_host_to_target64 (0x10000);\n-\t    o->heap_commit_size = grub_host_to_target64 (0x10000);\n+\t    o->stack_reserve_size = grub_host_to_target32 (0x10000);\n+\t    o->stack_commit_size = grub_host_to_target32 (0x10000);\n+\t    o->heap_reserve_size = grub_host_to_target32 (0x10000);\n+\t    o->heap_commit_size = grub_host_to_target32 (0x10000);\n     \n \t    o->num_data_directories\n \t      = grub_host_to_target32 (GRUB_PE32_NUM_DATA_DIRECTORIES);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0137-util-mkimage-Unify-more-of-the-PE32-and-PE32-header-.patch",
    "content": "From a4e8936f010a8e928e973b80390c8f83ad6b8000 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Mon, 15 Feb 2021 14:19:31 +0100\nSubject: [PATCH] util/mkimage: Unify more of the PE32 and PE32+ header set-up\n\nThere's quite a bit of code duplication in the code that sets the optional\nheader for PE32 and PE32+. The two are very similar with the exception of\na few fields that have type grub_uint64_t instead of grub_uint32_t.\n\nFactor out the common code and add a PE_OHDR() macro that simplifies the\nset-up and make the code more readable.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n util/mkimage.c | 111 ++++++++++++++++++++++++++-------------------------------\n 1 file changed, 51 insertions(+), 60 deletions(-)\n\ndiff --git a/util/mkimage.c b/util/mkimage.c\nindex b94bfb7..a039039 100644\n--- a/util/mkimage.c\n+++ b/util/mkimage.c\n@@ -816,6 +816,21 @@ grub_install_get_image_targets_string (void)\n   return formats;\n }\n \n+/*\n+ * tmp_ is just here so the compiler knows we'll never derefernce a NULL.\n+ * It should get fully optimized away.\n+ */\n+#define PE_OHDR(o32, o64, field) (*(\t\t\\\n+{\t\t\t\t\t\t\\\n+  __typeof__((o64)->field) tmp_;\t\t\\\n+  __typeof__((o64)->field) *ret_ = &tmp_;\t\\\n+  if (o32)\t\t\t\t\t\\\n+    ret_ = (void *)(&((o32)->field));\t\t\\\n+  else if (o64)\t\t\t\t\\\n+    ret_ = (void *)(&((o64)->field));\t\t\\\n+  ret_;\t\t\t\t\t\\\n+}))\n+\n void\n grub_install_generate_image (const char *dir, const char *prefix,\n \t\t\t     FILE *out, const char *outname, char *mods[],\n@@ -1252,6 +1267,8 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \tstatic const grub_uint8_t stub[] = GRUB_PE32_MSDOS_STUB;\n \tint header_size;\n \tint reloc_addr;\n+\tstruct grub_pe32_optional_header *o32 = NULL;\n+\tstruct grub_pe64_optional_header *o64 = NULL;\n \n \tif (image_target->voidp_sizeof == 4)\n \t  header_size = EFI32_HEADER_SIZE;\n@@ -1293,76 +1310,50 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t/* The PE Optional header.  */\n \tif (image_target->voidp_sizeof == 4)\n \t  {\n-\t    struct grub_pe32_optional_header *o;\n-\n \t    c->optional_header_size = grub_host_to_target16 (sizeof (struct grub_pe32_optional_header));\n \n-\t    o = (struct grub_pe32_optional_header *)\n-\t      (header + GRUB_PE32_MSDOS_STUB_SIZE + GRUB_PE32_SIGNATURE_SIZE\n-\t       + sizeof (struct grub_pe32_coff_header));\n-\t    o->magic = grub_host_to_target16 (GRUB_PE32_PE32_MAGIC);\n-\t    o->code_size = grub_host_to_target32 (layout.exec_size);\n-\t    o->data_size = grub_host_to_target32 (reloc_addr - layout.exec_size\n-\t\t\t\t\t     - header_size);\n-\t    o->entry_addr = grub_host_to_target32 (layout.start_address);\n-\t    o->code_base = grub_host_to_target32 (header_size);\n-\n-\t    o->data_base = grub_host_to_target32 (header_size + layout.exec_size);\n-\n-\t    o->image_base = 0;\n-\t    o->section_alignment = grub_host_to_target32 (image_target->section_align);\n-\t    o->file_alignment = grub_host_to_target32 (GRUB_PE32_FILE_ALIGNMENT);\n-\t    o->image_size = grub_host_to_target32 (pe_size);\n-\t    o->header_size = grub_host_to_target32 (header_size);\n-\t    o->subsystem = grub_host_to_target16 (GRUB_PE32_SUBSYSTEM_EFI_APPLICATION);\n-\n-\t    /* Do these really matter? */\n-\t    o->stack_reserve_size = grub_host_to_target32 (0x10000);\n-\t    o->stack_commit_size = grub_host_to_target32 (0x10000);\n-\t    o->heap_reserve_size = grub_host_to_target32 (0x10000);\n-\t    o->heap_commit_size = grub_host_to_target32 (0x10000);\n-    \n-\t    o->num_data_directories = grub_host_to_target32 (GRUB_PE32_NUM_DATA_DIRECTORIES);\n+\t    o32 = (struct grub_pe32_optional_header *)\n+              (header + GRUB_PE32_MSDOS_STUB_SIZE + GRUB_PE32_SIGNATURE_SIZE +\n+               sizeof (struct grub_pe32_coff_header));\n+\t    o32->magic = grub_host_to_target16 (GRUB_PE32_PE32_MAGIC);\n+\t    o32->data_base = grub_host_to_target32 (header_size + layout.exec_size);\n \n-\t    o->base_relocation_table.rva = grub_host_to_target32 (reloc_addr);\n-\t    o->base_relocation_table.size = grub_host_to_target32 (layout.reloc_size);\n-\t    sections = o + 1;\n+\t    sections = o32 + 1;\n \t  }\n \telse\n \t  {\n-\t    struct grub_pe64_optional_header *o;\n-\n \t    c->optional_header_size = grub_host_to_target16 (sizeof (struct grub_pe64_optional_header));\n \n-\t    o = (struct grub_pe64_optional_header *) \n-\t      (header + GRUB_PE32_MSDOS_STUB_SIZE + GRUB_PE32_SIGNATURE_SIZE\n-\t       + sizeof (struct grub_pe32_coff_header));\n-\t    o->magic = grub_host_to_target16 (GRUB_PE32_PE64_MAGIC);\n-\t    o->code_size = grub_host_to_target32 (layout.exec_size);\n-\t    o->data_size = grub_host_to_target32 (reloc_addr - layout.exec_size\n-\t\t\t\t\t     - header_size);\n-\t    o->entry_addr = grub_host_to_target32 (layout.start_address);\n-\t    o->code_base = grub_host_to_target32 (header_size);\n-\t    o->image_base = 0;\n-\t    o->section_alignment = grub_host_to_target32 (image_target->section_align);\n-\t    o->file_alignment = grub_host_to_target32 (GRUB_PE32_FILE_ALIGNMENT);\n-\t    o->image_size = grub_host_to_target32 (pe_size);\n-\t    o->header_size = grub_host_to_target32 (header_size);\n-\t    o->subsystem = grub_host_to_target16 (GRUB_PE32_SUBSYSTEM_EFI_APPLICATION);\n-\n-\t    /* Do these really matter? */\n-\t    o->stack_reserve_size = grub_host_to_target32 (0x10000);\n-\t    o->stack_commit_size = grub_host_to_target32 (0x10000);\n-\t    o->heap_reserve_size = grub_host_to_target32 (0x10000);\n-\t    o->heap_commit_size = grub_host_to_target32 (0x10000);\n-    \n-\t    o->num_data_directories\n-\t      = grub_host_to_target32 (GRUB_PE32_NUM_DATA_DIRECTORIES);\n+\t    o64 = (struct grub_pe64_optional_header *)\n+\t\t  (header + GRUB_PE32_MSDOS_STUB_SIZE + GRUB_PE32_SIGNATURE_SIZE +\n+                   sizeof (struct grub_pe32_coff_header));\n+\t    o64->magic = grub_host_to_target16 (GRUB_PE32_PE64_MAGIC);\n \n-\t    o->base_relocation_table.rva = grub_host_to_target32 (reloc_addr);\n-\t    o->base_relocation_table.size = grub_host_to_target32 (layout.reloc_size);\n-\t    sections = o + 1;\n+\t    sections = o64 + 1;\n \t  }\n+\n+\tPE_OHDR (o32, o64, code_size) = grub_host_to_target32 (layout.exec_size);\n+\tPE_OHDR (o32, o64, data_size) = grub_host_to_target32 (reloc_addr - layout.exec_size - header_size);\n+\tPE_OHDR (o32, o64, entry_addr) = grub_host_to_target32 (layout.start_address);\n+\tPE_OHDR (o32, o64, code_base) = grub_host_to_target32 (header_size);\n+\n+\tPE_OHDR (o32, o64, image_base) = 0;\n+\tPE_OHDR (o32, o64, section_alignment) = grub_host_to_target32 (image_target->section_align);\n+\tPE_OHDR (o32, o64, file_alignment) = grub_host_to_target32 (GRUB_PE32_FILE_ALIGNMENT);\n+\tPE_OHDR (o32, o64, image_size) = grub_host_to_target32 (pe_size);\n+\tPE_OHDR (o32, o64, header_size) = grub_host_to_target32 (header_size);\n+\tPE_OHDR (o32, o64, subsystem) = grub_host_to_target16 (GRUB_PE32_SUBSYSTEM_EFI_APPLICATION);\n+\n+\t/* Do these really matter? */\n+\tPE_OHDR (o32, o64, stack_reserve_size) = grub_host_to_target32 (0x10000);\n+\tPE_OHDR (o32, o64, stack_commit_size) = grub_host_to_target32 (0x10000);\n+\tPE_OHDR (o32, o64, heap_reserve_size) = grub_host_to_target32 (0x10000);\n+\tPE_OHDR (o32, o64, heap_commit_size) = grub_host_to_target32 (0x10000);\n+\n+\tPE_OHDR (o32, o64, num_data_directories) = grub_host_to_target32 (GRUB_PE32_NUM_DATA_DIRECTORIES);\n+\tPE_OHDR (o32, o64, base_relocation_table.rva) = grub_host_to_target32 (reloc_addr);\n+\tPE_OHDR (o32, o64, base_relocation_table.size) = grub_host_to_target32 (layout.reloc_size);\n+\n \t/* The sections.  */\n \ttext_section = sections;\n \tstrcpy (text_section->name, \".text\");\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0138-util-mkimage-Reorder-PE-optional-header-fields-set-u.patch",
    "content": "From ba44c87e56a8bccde235ebb7d41d5aa54604d241 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Mon, 15 Feb 2021 14:21:48 +0100\nSubject: [PATCH] util/mkimage: Reorder PE optional header fields set-up\n\nThis makes the PE32 and PE32+ header fields set-up easier to follow by\nsetting them closer to the initialization of their related sections.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n util/mkimage.c | 16 ++++++++--------\n 1 file changed, 8 insertions(+), 8 deletions(-)\n\ndiff --git a/util/mkimage.c b/util/mkimage.c\nindex a039039..deaef56 100644\n--- a/util/mkimage.c\n+++ b/util/mkimage.c\n@@ -1332,16 +1332,12 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t    sections = o64 + 1;\n \t  }\n \n-\tPE_OHDR (o32, o64, code_size) = grub_host_to_target32 (layout.exec_size);\n-\tPE_OHDR (o32, o64, data_size) = grub_host_to_target32 (reloc_addr - layout.exec_size - header_size);\n+\tPE_OHDR (o32, o64, header_size) = grub_host_to_target32 (header_size);\n \tPE_OHDR (o32, o64, entry_addr) = grub_host_to_target32 (layout.start_address);\n-\tPE_OHDR (o32, o64, code_base) = grub_host_to_target32 (header_size);\n-\n \tPE_OHDR (o32, o64, image_base) = 0;\n+\tPE_OHDR (o32, o64, image_size) = grub_host_to_target32 (pe_size);\n \tPE_OHDR (o32, o64, section_alignment) = grub_host_to_target32 (image_target->section_align);\n \tPE_OHDR (o32, o64, file_alignment) = grub_host_to_target32 (GRUB_PE32_FILE_ALIGNMENT);\n-\tPE_OHDR (o32, o64, image_size) = grub_host_to_target32 (pe_size);\n-\tPE_OHDR (o32, o64, header_size) = grub_host_to_target32 (header_size);\n \tPE_OHDR (o32, o64, subsystem) = grub_host_to_target16 (GRUB_PE32_SUBSYSTEM_EFI_APPLICATION);\n \n \t/* Do these really matter? */\n@@ -1351,10 +1347,10 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \tPE_OHDR (o32, o64, heap_commit_size) = grub_host_to_target32 (0x10000);\n \n \tPE_OHDR (o32, o64, num_data_directories) = grub_host_to_target32 (GRUB_PE32_NUM_DATA_DIRECTORIES);\n-\tPE_OHDR (o32, o64, base_relocation_table.rva) = grub_host_to_target32 (reloc_addr);\n-\tPE_OHDR (o32, o64, base_relocation_table.size) = grub_host_to_target32 (layout.reloc_size);\n \n \t/* The sections.  */\n+\tPE_OHDR (o32, o64, code_base) = grub_host_to_target32 (header_size);\n+\tPE_OHDR (o32, o64, code_size) = grub_host_to_target32 (layout.exec_size);\n \ttext_section = sections;\n \tstrcpy (text_section->name, \".text\");\n \ttext_section->virtual_size = grub_host_to_target32 (layout.exec_size);\n@@ -1366,6 +1362,8 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t\t\t\t\t\t| GRUB_PE32_SCN_MEM_EXECUTE\n \t\t\t\t\t\t| GRUB_PE32_SCN_MEM_READ);\n \n+\tPE_OHDR (o32, o64, data_size) = grub_host_to_target32 (reloc_addr - layout.exec_size - header_size);\n+\n \tdata_section = text_section + 1;\n \tstrcpy (data_section->name, \".data\");\n \tdata_section->virtual_size = grub_host_to_target32 (layout.kernel_size - layout.exec_size);\n@@ -1388,6 +1386,8 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t\t\t      | GRUB_PE32_SCN_MEM_READ\n \t\t\t      | GRUB_PE32_SCN_MEM_WRITE);\n \n+\tPE_OHDR (o32, o64, base_relocation_table.rva) = grub_host_to_target32 (reloc_addr);\n+\tPE_OHDR (o32, o64, base_relocation_table.size) = grub_host_to_target32 (layout.reloc_size);\n \treloc_section = mods_section + 1;\n \tstrcpy (reloc_section->name, \".reloc\");\n \treloc_section->virtual_size = grub_host_to_target32 (layout.reloc_size);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0139-util-mkimage-Improve-data_size-value-calculation.patch",
    "content": "From ff406eff25465932b97a2857ee5a75fd0957e9b9 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Thu, 11 Feb 2021 17:07:33 +0100\nSubject: [PATCH] util/mkimage: Improve data_size value calculation\n\nAccording to \"Microsoft Portable Executable and Common Object File Format\nSpecification\", the Optional Header SizeOfInitializedData field contains:\n\n  Size of the initialized data section, or the sum of all such sections if\n  there are multiple data sections.\n\nMake this explicit by adding the GRUB kernel data size to the sum of all\nthe modules sizes. The ALIGN_UP() is not required by the PE spec but do\nit to avoid alignment issues.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n util/mkimage.c | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/util/mkimage.c b/util/mkimage.c\nindex deaef56..853a521 100644\n--- a/util/mkimage.c\n+++ b/util/mkimage.c\n@@ -1260,6 +1260,7 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \tvoid *pe_img;\n \tgrub_uint8_t *header;\n \tvoid *sections;\n+\tsize_t scn_size;\n \tsize_t pe_size;\n \tstruct grub_pe32_coff_header *c;\n \tstruct grub_pe32_section_table *text_section, *data_section;\n@@ -1362,7 +1363,10 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t\t\t\t\t\t| GRUB_PE32_SCN_MEM_EXECUTE\n \t\t\t\t\t\t| GRUB_PE32_SCN_MEM_READ);\n \n-\tPE_OHDR (o32, o64, data_size) = grub_host_to_target32 (reloc_addr - layout.exec_size - header_size);\n+\tscn_size = ALIGN_UP (layout.kernel_size - layout.exec_size, GRUB_PE32_FILE_ALIGNMENT);\n+\tPE_OHDR (o32, o64, data_size) = grub_host_to_target32 (scn_size +\n+\t\t\t\t\t\t\t       ALIGN_UP (total_module_size,\n+\t\t\t\t\t\t\t\t\t GRUB_PE32_FILE_ALIGNMENT));\n \n \tdata_section = text_section + 1;\n \tstrcpy (data_section->name, \".data\");\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0140-util-mkimage-Refactor-section-setup-to-use-a-helper.patch",
    "content": "From f60ba9e5945892e835e53f0619406d96002f7f70 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Mon, 15 Feb 2021 14:58:06 +0100\nSubject: [PATCH] util/mkimage: Refactor section setup to use a helper\n\nAdd a init_pe_section() helper function to setup PE sections. This makes\nthe code simpler and easier to read.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n util/mkimage.c | 143 +++++++++++++++++++++++++++++++--------------------------\n 1 file changed, 77 insertions(+), 66 deletions(-)\n\ndiff --git a/util/mkimage.c b/util/mkimage.c\nindex 853a521..8b475a6 100644\n--- a/util/mkimage.c\n+++ b/util/mkimage.c\n@@ -816,6 +816,38 @@ grub_install_get_image_targets_string (void)\n   return formats;\n }\n \n+/*\n+ * The image_target parameter is used by the grub_host_to_target32() macro.\n+ */\n+static struct grub_pe32_section_table *\n+init_pe_section(const struct grub_install_image_target_desc *image_target,\n+\t\tstruct grub_pe32_section_table *section,\n+\t\tconst char * const name,\n+\t\tgrub_uint32_t *vma, grub_uint32_t vsz, grub_uint32_t valign,\n+\t\tgrub_uint32_t *rda, grub_uint32_t rsz,\n+\t\tgrub_uint32_t characteristics)\n+{\n+  size_t len = strlen (name);\n+\n+  if (len > sizeof (section->name))\n+    grub_util_error (_(\"section name %s length is bigger than %lu\"),\n+\t\t     name, (unsigned long) sizeof (section->name));\n+\n+  memcpy (section->name, name, len);\n+\n+  section->virtual_address = grub_host_to_target32 (*vma);\n+  section->virtual_size = grub_host_to_target32 (vsz);\n+  (*vma) = ALIGN_UP (*vma + vsz, valign);\n+\n+  section->raw_data_offset = grub_host_to_target32 (*rda);\n+  section->raw_data_size = grub_host_to_target32 (rsz);\n+  (*rda) = ALIGN_UP (*rda + rsz, GRUB_PE32_FILE_ALIGNMENT);\n+\n+  section->characteristics = grub_host_to_target32 (characteristics);\n+\n+  return section + 1;\n+}\n+\n /*\n  * tmp_ is just here so the compiler knows we'll never derefernce a NULL.\n  * It should get fully optimized away.\n@@ -1257,17 +1289,13 @@ grub_install_generate_image (const char *dir, const char *prefix,\n       break;\n     case IMAGE_EFI:\n       {\n-\tvoid *pe_img;\n-\tgrub_uint8_t *header;\n-\tvoid *sections;\n+\tchar *pe_img, *header;\n+\tstruct grub_pe32_section_table *section;\n \tsize_t scn_size;\n-\tsize_t pe_size;\n+\tgrub_uint32_t vma, raw_data;\n+\tsize_t pe_size, header_size;\n \tstruct grub_pe32_coff_header *c;\n-\tstruct grub_pe32_section_table *text_section, *data_section;\n-\tstruct grub_pe32_section_table *mods_section, *reloc_section;\n \tstatic const grub_uint8_t stub[] = GRUB_PE32_MSDOS_STUB;\n-\tint header_size;\n-\tint reloc_addr;\n \tstruct grub_pe32_optional_header *o32 = NULL;\n \tstruct grub_pe64_optional_header *o64 = NULL;\n \n@@ -1276,17 +1304,12 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \telse\n \t  header_size = EFI64_HEADER_SIZE;\n \n-\treloc_addr = ALIGN_UP (header_size + core_size,\n-\t\t\t       GRUB_PE32_FILE_ALIGNMENT);\n+\tvma = raw_data = header_size;\n+\tpe_size = ALIGN_UP (header_size + core_size, GRUB_PE32_FILE_ALIGNMENT) +\n+          ALIGN_UP (layout.reloc_size, GRUB_PE32_FILE_ALIGNMENT);\n+\theader = pe_img = xcalloc (1, pe_size);\n \n-\tpe_size = ALIGN_UP (reloc_addr + layout.reloc_size,\n-\t\t\t    GRUB_PE32_FILE_ALIGNMENT);\n-\tpe_img = xmalloc (reloc_addr + layout.reloc_size);\n-\tmemset (pe_img, 0, header_size);\n-\tmemcpy ((char *) pe_img + header_size, core_img, core_size);\n-\tmemset ((char *) pe_img + header_size + core_size, 0, reloc_addr - (header_size + core_size));\n-\tmemcpy ((char *) pe_img + reloc_addr, layout.reloc_section, layout.reloc_size);\n-\theader = pe_img;\n+\tmemcpy (pe_img + raw_data, core_img, core_size);\n \n \t/* The magic.  */\n \tmemcpy (header, stub, GRUB_PE32_MSDOS_STUB_SIZE);\n@@ -1319,18 +1342,17 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t    o32->magic = grub_host_to_target16 (GRUB_PE32_PE32_MAGIC);\n \t    o32->data_base = grub_host_to_target32 (header_size + layout.exec_size);\n \n-\t    sections = o32 + 1;\n+\t    section = (struct grub_pe32_section_table *)(o32 + 1);\n \t  }\n \telse\n \t  {\n \t    c->optional_header_size = grub_host_to_target16 (sizeof (struct grub_pe64_optional_header));\n-\n \t    o64 = (struct grub_pe64_optional_header *)\n \t\t  (header + GRUB_PE32_MSDOS_STUB_SIZE + GRUB_PE32_SIGNATURE_SIZE +\n                    sizeof (struct grub_pe32_coff_header));\n \t    o64->magic = grub_host_to_target16 (GRUB_PE32_PE64_MAGIC);\n \n-\t    sections = o64 + 1;\n+\t    section = (struct grub_pe32_section_table *)(o64 + 1);\n \t  }\n \n \tPE_OHDR (o32, o64, header_size) = grub_host_to_target32 (header_size);\n@@ -1350,58 +1372,47 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \tPE_OHDR (o32, o64, num_data_directories) = grub_host_to_target32 (GRUB_PE32_NUM_DATA_DIRECTORIES);\n \n \t/* The sections.  */\n-\tPE_OHDR (o32, o64, code_base) = grub_host_to_target32 (header_size);\n+\tPE_OHDR (o32, o64, code_base) = grub_host_to_target32 (vma);\n \tPE_OHDR (o32, o64, code_size) = grub_host_to_target32 (layout.exec_size);\n-\ttext_section = sections;\n-\tstrcpy (text_section->name, \".text\");\n-\ttext_section->virtual_size = grub_host_to_target32 (layout.exec_size);\n-\ttext_section->virtual_address = grub_host_to_target32 (header_size);\n-\ttext_section->raw_data_size = grub_host_to_target32 (layout.exec_size);\n-\ttext_section->raw_data_offset = grub_host_to_target32 (header_size);\n-\ttext_section->characteristics = grub_cpu_to_le32_compile_time (\n-\t\t\t\t\t\t  GRUB_PE32_SCN_CNT_CODE\n-\t\t\t\t\t\t| GRUB_PE32_SCN_MEM_EXECUTE\n-\t\t\t\t\t\t| GRUB_PE32_SCN_MEM_READ);\n+\tsection = init_pe_section (image_target, section, \".text\",\n+\t\t\t\t   &vma, layout.exec_size,\n+\t\t\t\t   image_target->section_align,\n+\t\t\t\t   &raw_data, layout.exec_size,\n+\t\t\t\t   GRUB_PE32_SCN_CNT_CODE |\n+\t\t\t\t   GRUB_PE32_SCN_MEM_EXECUTE |\n+\t\t\t\t   GRUB_PE32_SCN_MEM_READ);\n \n \tscn_size = ALIGN_UP (layout.kernel_size - layout.exec_size, GRUB_PE32_FILE_ALIGNMENT);\n \tPE_OHDR (o32, o64, data_size) = grub_host_to_target32 (scn_size +\n \t\t\t\t\t\t\t       ALIGN_UP (total_module_size,\n \t\t\t\t\t\t\t\t\t GRUB_PE32_FILE_ALIGNMENT));\n \n-\tdata_section = text_section + 1;\n-\tstrcpy (data_section->name, \".data\");\n-\tdata_section->virtual_size = grub_host_to_target32 (layout.kernel_size - layout.exec_size);\n-\tdata_section->virtual_address = grub_host_to_target32 (header_size + layout.exec_size);\n-\tdata_section->raw_data_size = grub_host_to_target32 (layout.kernel_size - layout.exec_size);\n-\tdata_section->raw_data_offset = grub_host_to_target32 (header_size + layout.exec_size);\n-\tdata_section->characteristics\n-\t  = grub_cpu_to_le32_compile_time (GRUB_PE32_SCN_CNT_INITIALIZED_DATA\n-\t\t\t      | GRUB_PE32_SCN_MEM_READ\n-\t\t\t      | GRUB_PE32_SCN_MEM_WRITE);\n-    \n-\tmods_section = data_section + 1;\n-\tstrcpy (mods_section->name, \"mods\");\n-\tmods_section->virtual_size = grub_host_to_target32 (reloc_addr - layout.kernel_size - header_size);\n-\tmods_section->virtual_address = grub_host_to_target32 (header_size + layout.kernel_size + layout.bss_size);\n-\tmods_section->raw_data_size = grub_host_to_target32 (reloc_addr - layout.kernel_size - header_size);\n-\tmods_section->raw_data_offset = grub_host_to_target32 (header_size + layout.kernel_size);\n-\tmods_section->characteristics\n-\t  = grub_cpu_to_le32_compile_time (GRUB_PE32_SCN_CNT_INITIALIZED_DATA\n-\t\t\t      | GRUB_PE32_SCN_MEM_READ\n-\t\t\t      | GRUB_PE32_SCN_MEM_WRITE);\n-\n-\tPE_OHDR (o32, o64, base_relocation_table.rva) = grub_host_to_target32 (reloc_addr);\n-\tPE_OHDR (o32, o64, base_relocation_table.size) = grub_host_to_target32 (layout.reloc_size);\n-\treloc_section = mods_section + 1;\n-\tstrcpy (reloc_section->name, \".reloc\");\n-\treloc_section->virtual_size = grub_host_to_target32 (layout.reloc_size);\n-\treloc_section->virtual_address = grub_host_to_target32 (reloc_addr + layout.bss_size);\n-\treloc_section->raw_data_size = grub_host_to_target32 (layout.reloc_size);\n-\treloc_section->raw_data_offset = grub_host_to_target32 (reloc_addr);\n-\treloc_section->characteristics\n-\t  = grub_cpu_to_le32_compile_time (GRUB_PE32_SCN_CNT_INITIALIZED_DATA\n-\t\t\t      | GRUB_PE32_SCN_MEM_DISCARDABLE\n-\t\t\t      | GRUB_PE32_SCN_MEM_READ);\n+\tsection = init_pe_section (image_target, section, \".data\",\n+\t\t\t\t   &vma, scn_size, image_target->section_align,\n+\t\t\t\t   &raw_data, scn_size,\n+\t\t\t\t   GRUB_PE32_SCN_CNT_INITIALIZED_DATA |\n+\t\t\t\t   GRUB_PE32_SCN_MEM_READ |\n+\t\t\t\t   GRUB_PE32_SCN_MEM_WRITE);\n+\n+\tscn_size = pe_size - layout.reloc_size - raw_data;\n+\tsection = init_pe_section (image_target, section, \"mods\",\n+\t\t\t\t   &vma, scn_size, image_target->section_align,\n+\t\t\t\t   &raw_data, scn_size,\n+\t\t\t\t   GRUB_PE32_SCN_CNT_INITIALIZED_DATA |\n+\t\t\t\t   GRUB_PE32_SCN_MEM_READ |\n+\t\t\t\t   GRUB_PE32_SCN_MEM_WRITE);\n+\n+\tscn_size = layout.reloc_size;\n+\tPE_OHDR (o32, o64, base_relocation_table.rva) = grub_host_to_target32 (vma);\n+\tPE_OHDR (o32, o64, base_relocation_table.size) = grub_host_to_target32 (scn_size);\n+\tmemcpy (pe_img + raw_data, layout.reloc_section, scn_size);\n+\tinit_pe_section (image_target, section, \".reloc\",\n+\t\t\t &vma, scn_size, image_target->section_align,\n+\t\t\t &raw_data, scn_size,\n+\t\t\t GRUB_PE32_SCN_CNT_INITIALIZED_DATA |\n+\t\t\t GRUB_PE32_SCN_MEM_DISCARDABLE |\n+\t\t\t GRUB_PE32_SCN_MEM_READ);\n+\n \tfree (core_img);\n \tcore_img = pe_img;\n \tcore_size = pe_size;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0141-util-mkimage-Add-an-option-to-import-SBAT-metadata-i.patch",
    "content": "From b11547137703bbc642114a816233a5b6fed61b06 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Mon, 15 Feb 2021 17:07:00 +0100\nSubject: [PATCH] util/mkimage: Add an option to import SBAT metadata into a\n .sbat section\n\nAdd a --sbat option to the grub-mkimage tool which allows us to import\nan SBAT metadata formatted as a CSV file into a .sbat section of the\nEFI binary.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n docs/grub.texi              | 19 +++++++++++++++++++\n include/grub/util/install.h |  3 ++-\n include/grub/util/mkimage.h |  1 +\n util/grub-install-common.c  |  2 +-\n util/grub-mkimage.c         | 15 ++++++++++++++-\n util/mkimage.c              | 43 ++++++++++++++++++++++++++++++++++++-------\n 6 files changed, 73 insertions(+), 10 deletions(-)\n\ndiff --git a/docs/grub.texi b/docs/grub.texi\nindex 8518cc0..bff6dfc 100644\n--- a/docs/grub.texi\n+++ b/docs/grub.texi\n@@ -5616,6 +5616,7 @@ environment variables and commands are listed in the same order.\n * Authentication and authorisation:: Users and access control\n * Using digital signatures::         Booting digitally signed code\n * UEFI secure boot and shim::        Booting digitally signed PE files\n+* Secure Boot Advanced Targeting::   Embedded information for generation number based revocation\n * Measured Boot::                    Measuring boot components\n * Lockdown::                         Lockdown when booting on a secure setup\n @end menu\n@@ -5795,6 +5796,24 @@ and @command{memrw} will not be available when the UEFI secure boot is enabled.\n This is done for security reasons and are enforced by the GRUB Lockdown mechanism\n (@pxref{Lockdown}).\n \n+@node Secure Boot Advanced Targeting\n+@section Embedded information for generation number based revocation\n+\n+The Secure Boot Advanced Targeting (SBAT) is a mechanism to allow the revocation\n+of components in the boot path by using generation numbers embedded into the EFI\n+binaries. The SBAT metadata is located in an .sbat data section that has set of\n+UTF-8 strings as comma-separated values (CSV). See\n+@uref{https://github.com/rhboot/shim/blob/main/SBAT.md} for more details.\n+\n+To add a data section containing the SBAT information into the binary, the\n+@option{--sbat} option of @command{grub-mkimage} command should be used. The content\n+of a CSV file, encoded with UTF-8, is copied as is to the .sbat data section into\n+the generated EFI binary. The CSV file can be stored anywhere on the file system.\n+\n+@example\n+grub-mkimage -O x86_64-efi -o grubx64.efi -p '(tftp)/grub' --sbat sbat.csv efinet tftp\n+@end example\n+\n @node Measured Boot\n @section Measuring boot components\n \ndiff --git a/include/grub/util/install.h b/include/grub/util/install.h\nindex 2631b10..c03befd 100644\n--- a/include/grub/util/install.h\n+++ b/include/grub/util/install.h\n@@ -183,7 +183,8 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t\t\t     char *config_path,\n \t\t\t     const struct grub_install_image_target_desc *image_target,\n \t\t\t     int note,\n-\t\t\t     grub_compression_t comp, const char *dtb_file);\n+\t\t\t     grub_compression_t comp, const char *dtb_file,\n+\t\t\t     const char *sbat_path);\n \n const struct grub_install_image_target_desc *\n grub_install_get_image_target (const char *arg);\ndiff --git a/include/grub/util/mkimage.h b/include/grub/util/mkimage.h\nindex ba9f568..3819a67 100644\n--- a/include/grub/util/mkimage.h\n+++ b/include/grub/util/mkimage.h\n@@ -24,6 +24,7 @@ struct grub_mkimage_layout\n   size_t exec_size;\n   size_t kernel_size;\n   size_t bss_size;\n+  size_t sbat_size;\n   grub_uint64_t start_address;\n   void *reloc_section;\n   size_t reloc_size;\ndiff --git a/util/grub-install-common.c b/util/grub-install-common.c\nindex 0295d40..5d43ed1 100644\n--- a/util/grub-install-common.c\n+++ b/util/grub-install-common.c\n@@ -511,7 +511,7 @@ grub_install_make_image_wrap_file (const char *dir, const char *prefix,\n   grub_install_generate_image (dir, prefix, fp, outname,\n \t\t\t       modules.entries, memdisk_path,\n \t\t\t       pubkeys, npubkeys, config_path, tgt,\n-\t\t\t       note, compression, dtb);\n+\t\t\t       note, compression, dtb, NULL);\n   while (dc--)\n     grub_install_pop_module ();\n }\ndiff --git a/util/grub-mkimage.c b/util/grub-mkimage.c\nindex 912564e..75b8847 100644\n--- a/util/grub-mkimage.c\n+++ b/util/grub-mkimage.c\n@@ -81,6 +81,7 @@ static struct argp_option options[] = {\n   {\"output\",  'o', N_(\"FILE\"), 0, N_(\"output a generated image to FILE [default=stdout]\"), 0},\n   {\"format\",  'O', N_(\"FORMAT\"), 0, 0, 0},\n   {\"compression\",  'C', \"(xz|none|auto)\", 0, N_(\"choose the compression to use for core image\"), 0},\n+  {\"sbat\", 's', N_(\"FILE\"), 0, N_(\"SBAT metadata\"), 0},\n   {\"verbose\",     'v', 0,      0, N_(\"print verbose messages.\"), 0},\n   { 0, 0, 0, 0, 0, 0 }\n };\n@@ -123,6 +124,7 @@ struct arguments\n   size_t npubkeys;\n   char *font;\n   char *config;\n+  char *sbat;\n   int note;\n   const struct grub_install_image_target_desc *image_target;\n   grub_compression_t comp;\n@@ -224,6 +226,13 @@ argp_parser (int key, char *arg, struct argp_state *state)\n       arguments->prefix = xstrdup (arg);\n       break;\n \n+    case 's':\n+      if (arguments->sbat)\n+\tfree (arguments->sbat);\n+\n+      arguments->sbat = xstrdup (arg);\n+      break;\n+\n     case 'v':\n       verbosity++;\n       break;\n@@ -309,7 +318,8 @@ main (int argc, char *argv[])\n \t\t\t       arguments.memdisk, arguments.pubkeys,\n \t\t\t       arguments.npubkeys, arguments.config,\n \t\t\t       arguments.image_target, arguments.note,\n-\t\t\t       arguments.comp, arguments.dtb);\n+\t\t\t       arguments.comp, arguments.dtb,\n+\t\t\t       arguments.sbat);\n \n   if (grub_util_file_sync (fp) < 0)\n     grub_util_error (_(\"cannot sync `%s': %s\"), arguments.output ? : \"stdout\",\n@@ -328,5 +338,8 @@ main (int argc, char *argv[])\n   if (arguments.output)\n     free (arguments.output);\n \n+  if (arguments.sbat)\n+    free (arguments.sbat);\n+\n   return 0;\n }\ndiff --git a/util/mkimage.c b/util/mkimage.c\nindex 8b475a6..b354ec1 100644\n--- a/util/mkimage.c\n+++ b/util/mkimage.c\n@@ -869,12 +869,13 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t\t\t     char *memdisk_path, char **pubkey_paths,\n \t\t\t     size_t npubkeys, char *config_path,\n \t\t\t     const struct grub_install_image_target_desc *image_target,\n-\t\t\t     int note, grub_compression_t comp, const char *dtb_path)\n+\t\t\t     int note, grub_compression_t comp, const char *dtb_path,\n+\t\t\t     const char *sbat_path)\n {\n   char *kernel_img, *core_img;\n   size_t total_module_size, core_size;\n   size_t memdisk_size = 0, config_size = 0;\n-  size_t prefix_size = 0, dtb_size = 0;\n+  size_t prefix_size = 0, dtb_size = 0, sbat_size = 0;\n   char *kernel_path;\n   size_t offset;\n   struct grub_util_path_list *path_list, *p;\n@@ -925,6 +926,9 @@ grub_install_generate_image (const char *dir, const char *prefix,\n       total_module_size += dtb_size + sizeof (struct grub_module_header);\n     }\n \n+  if (sbat_path != NULL && image_target->id != IMAGE_EFI)\n+    grub_util_error (_(\".sbat section can be embedded into EFI images only\"));\n+\n   if (config_path)\n     {\n       config_size = ALIGN_ADDR (grub_util_get_image_size (config_path) + 1);\n@@ -1289,8 +1293,9 @@ grub_install_generate_image (const char *dir, const char *prefix,\n       break;\n     case IMAGE_EFI:\n       {\n-\tchar *pe_img, *header;\n+\tchar *pe_img, *pe_sbat, *header;\n \tstruct grub_pe32_section_table *section;\n+\tsize_t n_sections = 4;\n \tsize_t scn_size;\n \tgrub_uint32_t vma, raw_data;\n \tsize_t pe_size, header_size;\n@@ -1305,8 +1310,15 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t  header_size = EFI64_HEADER_SIZE;\n \n \tvma = raw_data = header_size;\n+\n+\tif (sbat_path != NULL)\n+\t  {\n+\t    sbat_size = ALIGN_ADDR (grub_util_get_image_size (sbat_path));\n+\t    sbat_size = ALIGN_UP (sbat_size, GRUB_PE32_FILE_ALIGNMENT);\n+\t  }\n+\n \tpe_size = ALIGN_UP (header_size + core_size, GRUB_PE32_FILE_ALIGNMENT) +\n-          ALIGN_UP (layout.reloc_size, GRUB_PE32_FILE_ALIGNMENT);\n+          ALIGN_UP (layout.reloc_size, GRUB_PE32_FILE_ALIGNMENT) + sbat_size;\n \theader = pe_img = xcalloc (1, pe_size);\n \n \tmemcpy (pe_img + raw_data, core_img, core_size);\n@@ -1321,7 +1333,10 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t\t\t\t\t      + GRUB_PE32_SIGNATURE_SIZE);\n \tc->machine = grub_host_to_target16 (image_target->pe_target);\n \n-\tc->num_sections = grub_host_to_target16 (4);\n+\tif (sbat_path != NULL)\n+\t  n_sections++;\n+\n+\tc->num_sections = grub_host_to_target16 (n_sections);\n \tc->time = grub_host_to_target32 (STABLE_EMBEDDING_TIMESTAMP);\n \tc->characteristics = grub_host_to_target16 (GRUB_PE32_EXECUTABLE_IMAGE\n \t\t\t\t\t\t    | GRUB_PE32_LINE_NUMS_STRIPPED\n@@ -1383,7 +1398,8 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t\t\t\t   GRUB_PE32_SCN_MEM_READ);\n \n \tscn_size = ALIGN_UP (layout.kernel_size - layout.exec_size, GRUB_PE32_FILE_ALIGNMENT);\n-\tPE_OHDR (o32, o64, data_size) = grub_host_to_target32 (scn_size +\n+\t/* ALIGN_UP (sbat_size, GRUB_PE32_FILE_ALIGNMENT) is done earlier. */\n+\tPE_OHDR (o32, o64, data_size) = grub_host_to_target32 (scn_size + sbat_size +\n \t\t\t\t\t\t\t       ALIGN_UP (total_module_size,\n \t\t\t\t\t\t\t\t\t GRUB_PE32_FILE_ALIGNMENT));\n \n@@ -1394,7 +1410,7 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t\t\t\t   GRUB_PE32_SCN_MEM_READ |\n \t\t\t\t   GRUB_PE32_SCN_MEM_WRITE);\n \n-\tscn_size = pe_size - layout.reloc_size - raw_data;\n+\tscn_size = pe_size - layout.reloc_size - sbat_size - raw_data;\n \tsection = init_pe_section (image_target, section, \"mods\",\n \t\t\t\t   &vma, scn_size, image_target->section_align,\n \t\t\t\t   &raw_data, scn_size,\n@@ -1402,6 +1418,19 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t\t\t\t   GRUB_PE32_SCN_MEM_READ |\n \t\t\t\t   GRUB_PE32_SCN_MEM_WRITE);\n \n+\tif (sbat_path != NULL)\n+\t  {\n+\t    pe_sbat = pe_img + raw_data;\n+\t    grub_util_load_image (sbat_path, pe_sbat);\n+\n+\t    section = init_pe_section (image_target, section, \".sbat\",\n+\t\t\t\t       &vma, sbat_size,\n+\t\t\t\t       image_target->section_align,\n+\t\t\t\t       &raw_data, sbat_size,\n+\t\t\t\t       GRUB_PE32_SCN_CNT_INITIALIZED_DATA |\n+\t\t\t\t       GRUB_PE32_SCN_MEM_READ);\n+\t  }\n+\n \tscn_size = layout.reloc_size;\n \tPE_OHDR (o32, o64, base_relocation_table.rva) = grub_host_to_target32 (vma);\n \tPE_OHDR (o32, o64, base_relocation_table.size) = grub_host_to_target32 (scn_size);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0142-grub-install-common-Add-sbat-option.patch",
    "content": "From bb51ee2b49fbda0f66c1fa580a33442ff578f110 Mon Sep 17 00:00:00 2001\nFrom: Dimitri John Ledkov <xnox@ubuntu.com>\nDate: Mon, 22 Feb 2021 17:05:25 +0000\nSubject: [PATCH] grub-install-common: Add --sbat option\n\nSigned-off-by: Dimitri John Ledkov <xnox@ubuntu.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n include/grub/util/install.h |  5 ++++-\n util/grub-install-common.c  | 12 ++++++++++--\n 2 files changed, 14 insertions(+), 3 deletions(-)\n\ndiff --git a/include/grub/util/install.h b/include/grub/util/install.h\nindex c03befd..8cb5056 100644\n--- a/include/grub/util/install.h\n+++ b/include/grub/util/install.h\n@@ -63,6 +63,8 @@\n     /* TRANSLATORS: \"embed\" is a verb (command description).  \"*/\t\\\n   { \"pubkey\",   'k', N_(\"FILE\"), 0,\t\t\t\t\t\\\n       N_(\"embed FILE as public key for signature checking\"), 0},\t\\\n+  { \"sbat\", GRUB_INSTALL_OPTIONS_SBAT, N_(\"FILE\"), 0,\t\t\t\\\n+      N_(\"SBAT metadata\"), 0 },\t\t\t\t\t\t\\\n   { \"verbose\", 'v', 0, 0,\t\t\t\t\t\t\\\n     N_(\"print verbose messages.\"), 1 }\n \n@@ -122,7 +124,8 @@ enum grub_install_options {\n   GRUB_INSTALL_OPTIONS_THEMES_DIRECTORY,\n   GRUB_INSTALL_OPTIONS_GRUB_MKIMAGE,\n   GRUB_INSTALL_OPTIONS_INSTALL_CORE_COMPRESS,\n-  GRUB_INSTALL_OPTIONS_DTB\n+  GRUB_INSTALL_OPTIONS_DTB,\n+  GRUB_INSTALL_OPTIONS_SBAT\n };\n \n extern char *grub_install_source_directory;\ndiff --git a/util/grub-install-common.c b/util/grub-install-common.c\nindex 5d43ed1..1fcccd2 100644\n--- a/util/grub-install-common.c\n+++ b/util/grub-install-common.c\n@@ -307,6 +307,7 @@ handle_install_list (struct install_list *il, const char *val,\n \n static char **pubkeys;\n static size_t npubkeys;\n+static char *sbat;\n static grub_compression_t compression;\n \n int\n@@ -337,6 +338,12 @@ grub_install_parse (int key, char *arg)\n \t\t\t  * (npubkeys + 1));\n       pubkeys[npubkeys++] = xstrdup (arg);\n       return 1;\n+    case GRUB_INSTALL_OPTIONS_SBAT:\n+      if (sbat)\n+\tfree (sbat);\n+\n+      sbat = xstrdup (arg);\n+      return 1;\n \n     case GRUB_INSTALL_OPTIONS_VERBOSITY:\n       verbosity++;\n@@ -498,9 +505,10 @@ grub_install_make_image_wrap_file (const char *dir, const char *prefix,\n   grub_util_info (\"grub-mkimage --directory '%s' --prefix '%s'\"\n \t\t  \" --output '%s' \"\n \t\t  \" --dtb '%s' \"\n+\t\t  \"--sbat '%s' \"\n \t\t  \"--format '%s' --compression '%s' %s %s\\n\",\n \t\t  dir, prefix,\n-\t\t  outname, dtb ? : \"\", mkimage_target,\n+\t\t  outname, dtb ? : \"\", sbat ? : \"\", mkimage_target,\n \t\t  compnames[compression], note ? \"--note\" : \"\", s);\n   free (s);\n \n@@ -511,7 +519,7 @@ grub_install_make_image_wrap_file (const char *dir, const char *prefix,\n   grub_install_generate_image (dir, prefix, fp, outname,\n \t\t\t       modules.entries, memdisk_path,\n \t\t\t       pubkeys, npubkeys, config_path, tgt,\n-\t\t\t       note, compression, dtb, NULL);\n+\t\t\t       note, compression, dtb, sbat);\n   while (dc--)\n     grub_install_pop_module ();\n }\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0143-shim_lock-Only-skip-loading-shim_lock-verifier-with-.patch",
    "content": "From 968de8c23c1cba0f18230f778ebcf6c412ec8ec5 Mon Sep 17 00:00:00 2001\nFrom: Dimitri John Ledkov <xnox@ubuntu.com>\nDate: Sat, 20 Feb 2021 17:10:34 +0000\nSubject: [PATCH] shim_lock: Only skip loading shim_lock verifier with explicit\n consent\n\nCommit 32ddc42c (efi: Only register shim_lock verifier if shim_lock\nprotocol is found and SB enabled) reintroduced CVE-2020-15705 which\npreviously only existed in the out-of-tree linuxefi patches and was\nfixed as part of the BootHole patch series.\n\nUnder Secure Boot enforce loading shim_lock verifier. Allow skipping\nshim_lock verifier if SecureBoot/MokSBState EFI variables indicate\nskipping validations, or if GRUB image is built with --disable-shim-lock.\n\nFixes: 132ddc42c (efi: Only register shim_lock verifier if shim_lock\n       protocol is found and SB enabled)\nFixes: CVE-2020-15705\nFixes: CVE-2021-3418\n\nReported-by: Dimitri John Ledkov <xnox@ubuntu.com>\nSigned-off-by: Dimitri John Ledkov <xnox@ubuntu.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n docs/grub.texi              |  5 ++++-\n grub-core/kern/efi/sb.c     | 17 ++++++++++++++++-\n include/grub/kernel.h       |  3 ++-\n include/grub/util/install.h |  7 +++++--\n util/grub-install-common.c  | 12 +++++++++---\n util/grub-mkimage.c         |  8 +++++++-\n util/mkimage.c              | 15 ++++++++++++++-\n 7 files changed, 57 insertions(+), 10 deletions(-)\n\ndiff --git a/docs/grub.texi b/docs/grub.texi\nindex bff6dfc..e302797 100644\n--- a/docs/grub.texi\n+++ b/docs/grub.texi\n@@ -5787,7 +5787,10 @@ secure boot chain.\n The GRUB, except the @command{chainloader} command, works with the UEFI secure\n boot and the shim. This functionality is provided by the shim_lock verifier. It\n is built into the @file{core.img} and is registered if the UEFI secure boot is\n-enabled.\n+enabled. The @samp{shim_lock} variable is set to @samp{y} when shim_lock verifier\n+is registered. If it is desired to use UEFI secure boot without shim, one can\n+disable shim_lock by disabling shim verification with MokSbState UEFI variable\n+or by building grub image with @samp{--disable-shim-lock} option.\n \n All GRUB modules not stored in the @file{core.img}, OS kernels, ACPI tables,\n Device Trees, etc. have to be signed, e.g, using PGP. Additionally, the commands\ndiff --git a/grub-core/kern/efi/sb.c b/grub-core/kern/efi/sb.c\nindex 5d7210a..41dadcd 100644\n--- a/grub-core/kern/efi/sb.c\n+++ b/grub-core/kern/efi/sb.c\n@@ -21,9 +21,11 @@\n #include <grub/efi/efi.h>\n #include <grub/efi/pe32.h>\n #include <grub/efi/sb.h>\n+#include <grub/env.h>\n #include <grub/err.h>\n #include <grub/file.h>\n #include <grub/i386/linux.h>\n+#include <grub/kernel.h>\n #include <grub/mm.h>\n #include <grub/types.h>\n #include <grub/verify.h>\n@@ -160,14 +162,27 @@ struct grub_file_verifier shim_lock_verifier =\n void\n grub_shim_lock_verifier_setup (void)\n {\n+  struct grub_module_header *header;\n   grub_efi_shim_lock_protocol_t *sl =\n     grub_efi_locate_protocol (&shim_lock_guid, 0);\n \n+  /* shim_lock is missing, check if GRUB image is built with --disable-shim-lock. */\n   if (!sl)\n-    return;\n+    {\n+      FOR_MODULES (header)\n+\t{\n+\t  if (header->type == OBJ_TYPE_DISABLE_SHIM_LOCK)\n+\t    return;\n+\t}\n+    }\n \n+  /* Secure Boot is off. Do not load shim_lock. */\n   if (grub_efi_get_secureboot () != GRUB_EFI_SECUREBOOT_MODE_ENABLED)\n     return;\n \n+  /* Enforce shim_lock_verifier. */\n   grub_verifier_register (&shim_lock_verifier);\n+\n+  grub_env_set (\"shim_lock\", \"y\");\n+  grub_env_export (\"shim_lock\");\n }\ndiff --git a/include/grub/kernel.h b/include/grub/kernel.h\nindex 133a37c..abbca5e 100644\n--- a/include/grub/kernel.h\n+++ b/include/grub/kernel.h\n@@ -29,7 +29,8 @@ enum\n   OBJ_TYPE_CONFIG,\n   OBJ_TYPE_PREFIX,\n   OBJ_TYPE_PUBKEY,\n-  OBJ_TYPE_DTB\n+  OBJ_TYPE_DTB,\n+  OBJ_TYPE_DISABLE_SHIM_LOCK\n };\n \n /* The module header.  */\ndiff --git a/include/grub/util/install.h b/include/grub/util/install.h\nindex 8cb5056..11a8df8 100644\n--- a/include/grub/util/install.h\n+++ b/include/grub/util/install.h\n@@ -65,6 +65,8 @@\n       N_(\"embed FILE as public key for signature checking\"), 0},\t\\\n   { \"sbat\", GRUB_INSTALL_OPTIONS_SBAT, N_(\"FILE\"), 0,\t\t\t\\\n       N_(\"SBAT metadata\"), 0 },\t\t\t\t\t\t\\\n+  { \"disable-shim-lock\", GRUB_INSTALL_OPTIONS_DISABLE_SHIM_LOCK, 0, 0,\t\\\n+      N_(\"disable shim_lock verifier\"), 0 },\t\t\t\t\\\n   { \"verbose\", 'v', 0, 0,\t\t\t\t\t\t\\\n     N_(\"print verbose messages.\"), 1 }\n \n@@ -125,7 +127,8 @@ enum grub_install_options {\n   GRUB_INSTALL_OPTIONS_GRUB_MKIMAGE,\n   GRUB_INSTALL_OPTIONS_INSTALL_CORE_COMPRESS,\n   GRUB_INSTALL_OPTIONS_DTB,\n-  GRUB_INSTALL_OPTIONS_SBAT\n+  GRUB_INSTALL_OPTIONS_SBAT,\n+  GRUB_INSTALL_OPTIONS_DISABLE_SHIM_LOCK\n };\n \n extern char *grub_install_source_directory;\n@@ -187,7 +190,7 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t\t\t     const struct grub_install_image_target_desc *image_target,\n \t\t\t     int note,\n \t\t\t     grub_compression_t comp, const char *dtb_file,\n-\t\t\t     const char *sbat_path);\n+\t\t\t     const char *sbat_path, const int disable_shim_lock);\n \n const struct grub_install_image_target_desc *\n grub_install_get_image_target (const char *arg);\ndiff --git a/util/grub-install-common.c b/util/grub-install-common.c\nindex 1fcccd2..13d9fe9 100644\n--- a/util/grub-install-common.c\n+++ b/util/grub-install-common.c\n@@ -308,6 +308,7 @@ handle_install_list (struct install_list *il, const char *val,\n static char **pubkeys;\n static size_t npubkeys;\n static char *sbat;\n+static int disable_shim_lock;\n static grub_compression_t compression;\n \n int\n@@ -344,6 +345,9 @@ grub_install_parse (int key, char *arg)\n \n       sbat = xstrdup (arg);\n       return 1;\n+    case GRUB_INSTALL_OPTIONS_DISABLE_SHIM_LOCK:\n+      disable_shim_lock = 1;\n+      return 1;\n \n     case GRUB_INSTALL_OPTIONS_VERBOSITY:\n       verbosity++;\n@@ -506,10 +510,11 @@ grub_install_make_image_wrap_file (const char *dir, const char *prefix,\n \t\t  \" --output '%s' \"\n \t\t  \" --dtb '%s' \"\n \t\t  \"--sbat '%s' \"\n-\t\t  \"--format '%s' --compression '%s' %s %s\\n\",\n+\t\t  \"--format '%s' --compression '%s' %s %s %s\\n\",\n \t\t  dir, prefix,\n \t\t  outname, dtb ? : \"\", sbat ? : \"\", mkimage_target,\n-\t\t  compnames[compression], note ? \"--note\" : \"\", s);\n+\t\t  compnames[compression], note ? \"--note\" : \"\",\n+\t\t  disable_shim_lock ? \"--disable-shim-lock\" : \"\", s);\n   free (s);\n \n   tgt = grub_install_get_image_target (mkimage_target);\n@@ -519,7 +524,8 @@ grub_install_make_image_wrap_file (const char *dir, const char *prefix,\n   grub_install_generate_image (dir, prefix, fp, outname,\n \t\t\t       modules.entries, memdisk_path,\n \t\t\t       pubkeys, npubkeys, config_path, tgt,\n-\t\t\t       note, compression, dtb, sbat);\n+\t\t\t       note, compression, dtb, sbat,\n+\t\t\t       disable_shim_lock);\n   while (dc--)\n     grub_install_pop_module ();\n }\ndiff --git a/util/grub-mkimage.c b/util/grub-mkimage.c\nindex 75b8847..c0d5599 100644\n--- a/util/grub-mkimage.c\n+++ b/util/grub-mkimage.c\n@@ -82,6 +82,7 @@ static struct argp_option options[] = {\n   {\"format\",  'O', N_(\"FORMAT\"), 0, 0, 0},\n   {\"compression\",  'C', \"(xz|none|auto)\", 0, N_(\"choose the compression to use for core image\"), 0},\n   {\"sbat\", 's', N_(\"FILE\"), 0, N_(\"SBAT metadata\"), 0},\n+  {\"disable-shim-lock\", GRUB_INSTALL_OPTIONS_DISABLE_SHIM_LOCK, 0, 0, N_(\"disable shim_lock verifier\"), 0},\n   {\"verbose\",     'v', 0,      0, N_(\"print verbose messages.\"), 0},\n   { 0, 0, 0, 0, 0, 0 }\n };\n@@ -126,6 +127,7 @@ struct arguments\n   char *config;\n   char *sbat;\n   int note;\n+  int disable_shim_lock;\n   const struct grub_install_image_target_desc *image_target;\n   grub_compression_t comp;\n };\n@@ -233,6 +235,10 @@ argp_parser (int key, char *arg, struct argp_state *state)\n       arguments->sbat = xstrdup (arg);\n       break;\n \n+    case GRUB_INSTALL_OPTIONS_DISABLE_SHIM_LOCK:\n+      arguments->disable_shim_lock = 1;\n+      break;\n+\n     case 'v':\n       verbosity++;\n       break;\n@@ -319,7 +325,7 @@ main (int argc, char *argv[])\n \t\t\t       arguments.npubkeys, arguments.config,\n \t\t\t       arguments.image_target, arguments.note,\n \t\t\t       arguments.comp, arguments.dtb,\n-\t\t\t       arguments.sbat);\n+\t\t\t       arguments.sbat, arguments.disable_shim_lock);\n \n   if (grub_util_file_sync (fp) < 0)\n     grub_util_error (_(\"cannot sync `%s': %s\"), arguments.output ? : \"stdout\",\ndiff --git a/util/mkimage.c b/util/mkimage.c\nindex b354ec1..a26cf76 100644\n--- a/util/mkimage.c\n+++ b/util/mkimage.c\n@@ -870,7 +870,7 @@ grub_install_generate_image (const char *dir, const char *prefix,\n \t\t\t     size_t npubkeys, char *config_path,\n \t\t\t     const struct grub_install_image_target_desc *image_target,\n \t\t\t     int note, grub_compression_t comp, const char *dtb_path,\n-\t\t\t     const char *sbat_path)\n+\t\t\t     const char *sbat_path, int disable_shim_lock)\n {\n   char *kernel_img, *core_img;\n   size_t total_module_size, core_size;\n@@ -929,6 +929,9 @@ grub_install_generate_image (const char *dir, const char *prefix,\n   if (sbat_path != NULL && image_target->id != IMAGE_EFI)\n     grub_util_error (_(\".sbat section can be embedded into EFI images only\"));\n \n+  if (disable_shim_lock)\n+    total_module_size += sizeof (struct grub_module_header);\n+\n   if (config_path)\n     {\n       config_size = ALIGN_ADDR (grub_util_get_image_size (config_path) + 1);\n@@ -1065,6 +1068,16 @@ grub_install_generate_image (const char *dir, const char *prefix,\n       offset += dtb_size;\n     }\n \n+  if (disable_shim_lock)\n+    {\n+      struct grub_module_header *header;\n+\n+      header = (struct grub_module_header *) (kernel_img + offset);\n+      header->type = grub_host_to_target32 (OBJ_TYPE_DISABLE_SHIM_LOCK);\n+      header->size = grub_host_to_target32 (sizeof (*header));\n+      offset += sizeof (*header);\n+    }\n+\n   if (config_path)\n     {\n       struct grub_module_header *header;\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0144-kern-misc-Split-parse_printf_args-into-format-parsin.patch",
    "content": "From 7f11bde3143b21b40d8225ea1d641e0f83b5a01e Mon Sep 17 00:00:00 2001\nFrom: Thomas Frauendorfer | Miray Software <tf@miray.de>\nDate: Mon, 15 Feb 2021 13:40:16 +0100\nSubject: [PATCH] kern/misc: Split parse_printf_args() into format parsing and\n va_list handling\n\nThis patch is preparing for a follow up patch which will use\nthe format parsing part to compare the arguments in a printf()\nformat from an external source against a printf() format with\nexpected arguments.\n\nSigned-off-by: Thomas Frauendorfer | Miray Software <tf@miray.de>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/misc.c | 11 +++++++++--\n 1 file changed, 9 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c\nindex b02693b..50bf3ee 100644\n--- a/grub-core/kern/misc.c\n+++ b/grub-core/kern/misc.c\n@@ -632,8 +632,7 @@ grub_lltoa (char *str, int c, unsigned long long n)\n }\n \n static void\n-parse_printf_args (const char *fmt0, struct printf_args *args,\n-\t\t   va_list args_in)\n+parse_printf_arg_fmt (const char *fmt0, struct printf_args *args)\n {\n   const char *fmt;\n   char c;\n@@ -789,6 +788,14 @@ parse_printf_args (const char *fmt0, struct printf_args *args,\n \t  break;\n \t}\n     }\n+}\n+\n+static void\n+parse_printf_args (const char *fmt0, struct printf_args *args, va_list args_in)\n+{\n+  grub_size_t n;\n+\n+  parse_printf_arg_fmt (fmt0, args);\n \n   for (n = 0; n < args->count; n++)\n     switch (args->ptr[n].type)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0145-kern-misc-Add-STRING-type-for-internal-printf-format.patch",
    "content": "From 1a2a5aff71e8edba436398492279de434abfe7a3 Mon Sep 17 00:00:00 2001\nFrom: Thomas Frauendorfer | Miray Software <tf@miray.de>\nDate: Mon, 15 Feb 2021 14:04:26 +0100\nSubject: [PATCH] kern/misc: Add STRING type for internal printf() format\n handling\n\nSet printf() argument type for \"%s\" to new type STRING. This is in\npreparation for a follow up patch to compare a printf() format string\nagainst an expected printf() format string.\n\nFor \"%s\" the corresponding printf() argument is dereferenced as pointer\nwhile all other argument types are defined as integer value. However,\nwhen validating a printf() format it is necessary to differentiate \"%s\"\nfrom \"%p\" and other integers. So, let's do that.\n\nSigned-off-by: Thomas Frauendorfer | Miray Software <tf@miray.de>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/misc.c | 13 +++++++++++--\n 1 file changed, 11 insertions(+), 2 deletions(-)\n\ndiff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c\nindex 50bf3ee..22417f7 100644\n--- a/grub-core/kern/misc.c\n+++ b/grub-core/kern/misc.c\n@@ -33,7 +33,8 @@ union printf_arg\n   enum\n     {\n       INT, LONG, LONGLONG,\n-      UNSIGNED_INT = 3, UNSIGNED_LONG, UNSIGNED_LONGLONG\n+      UNSIGNED_INT = 3, UNSIGNED_LONG, UNSIGNED_LONGLONG,\n+      STRING\n     } type;\n   long long ll;\n };\n@@ -776,12 +777,14 @@ parse_printf_arg_fmt (const char *fmt0, struct printf_args *args)\n \t  args->ptr[curn].type = INT + longfmt;\n \t  break;\n \tcase 'p':\n-\tcase 's':\n \t  if (sizeof (void *) == sizeof (long long))\n \t    args->ptr[curn].type = UNSIGNED_LONGLONG;\n \t  else\n \t    args->ptr[curn].type = UNSIGNED_INT;\n \t  break;\n+\tcase 's':\n+\t  args->ptr[curn].type = STRING;\n+\t  break;\n \tcase 'C':\n \tcase 'c':\n \t  args->ptr[curn].type = INT;\n@@ -816,6 +819,12 @@ parse_printf_args (const char *fmt0, struct printf_args *args, va_list args_in)\n       case UNSIGNED_LONGLONG:\n \targs->ptr[n].ll = va_arg (args_in, long long);\n \tbreak;\n+      case STRING:\n+\tif (sizeof (void *) == sizeof (long long))\n+\t  args->ptr[n].ll = va_arg (args_in, long long);\n+\telse\n+\t  args->ptr[n].ll = va_arg (args_in, unsigned int);\n+\tbreak;\n       }\n }\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0146-kern-misc-Add-function-to-check-printf-format-agains.patch",
    "content": "From 83603bea6ce8fdff5ab3fbc4c9e592a8c71a8706 Mon Sep 17 00:00:00 2001\nFrom: Thomas Frauendorfer | Miray Software <tf@miray.de>\nDate: Thu, 4 Feb 2021 19:02:33 +0100\nSubject: [PATCH] kern/misc: Add function to check printf() format against\n expected format\n\nThe grub_printf_fmt_check() function parses the arguments of an untrusted\nprintf() format and an expected printf() format and then compares the\narguments counts and arguments types. The arguments count in the untrusted\nformat string must be less or equal to the arguments count in the expected\nformat string and both arguments types must match.\n\nTo do this the parse_printf_arg_fmt() helper function is extended in the\nfollowing way:\n\n  1. Add a return value to report errors to the grub_printf_fmt_check().\n\n  2. Add the fmt_check argument to enable stricter format verification:\n     - the function expects that arguments definitions are always\n       terminated by a supported conversion specifier.\n     - positional parameters, \"$\", are not allowed, as they cannot be\n       validated correctly with the current implementation. For example\n       \"%s%1$d\" would assign the first args entry twice while leaving the\n       second one unchanged.\n     - Return an error if preallocated space in args is too small and\n       allocation fails for the needed size. The grub_printf_fmt_check()\n       should verify all arguments. So, if validation is not possible for\n       any reason it should return an error.\n     This also adds a case entry to handle \"%%\", which is the escape\n     sequence to print \"%\" character.\n\n  3. Add the max_args argument to check for the maximum allowed arguments\n     count in a printf() string. This should be set to the arguments count\n     of the expected format. Then the parse_printf_arg_fmt() function will\n     return an error if the arguments count is exceeded.\n\nThe two additional arguments allow us to use parse_printf_arg_fmt() in\nprintf() and grub_printf_fmt_check() calls.\n\nWhen parse_printf_arg_fmt() is used by grub_printf_fmt_check() the\nfunction parse user provided untrusted format string too. So, in\nthat case it is better to be too strict than too lenient.\n\nSigned-off-by: Thomas Frauendorfer | Miray Software <tf@miray.de>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/misc.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++---\n include/grub/misc.h   | 16 ++++++++++\n 2 files changed, 94 insertions(+), 4 deletions(-)\n\ndiff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c\nindex 22417f7..90317b6 100644\n--- a/grub-core/kern/misc.c\n+++ b/grub-core/kern/misc.c\n@@ -632,8 +632,26 @@ grub_lltoa (char *str, int c, unsigned long long n)\n   return p;\n }\n \n-static void\n-parse_printf_arg_fmt (const char *fmt0, struct printf_args *args)\n+/*\n+ * Parse printf() fmt0 string into args arguments.\n+ *\n+ * The parsed arguments are either used by a printf() function to format the fmt0\n+ * string or they are used to compare a format string from an untrusted source\n+ * against a format string with expected arguments.\n+ *\n+ * When the fmt_check is set to !0, e.g. 1, then this function is executed in\n+ * printf() format check mode. This enforces stricter rules for parsing the\n+ * fmt0 to limit exposure to possible errors in printf() handling. It also\n+ * disables positional parameters, \"$\", because some formats, e.g \"%s%1$d\",\n+ * cannot be validated with the current implementation.\n+ *\n+ * The max_args allows to set a maximum number of accepted arguments. If the fmt0\n+ * string defines more arguments than the max_args then the parse_printf_arg_fmt()\n+ * function returns an error. This is currently used for format check only.\n+ */\n+static grub_err_t\n+parse_printf_arg_fmt (const char *fmt0, struct printf_args *args,\n+\t\t      int fmt_check, grub_size_t max_args)\n {\n   const char *fmt;\n   char c;\n@@ -660,7 +678,12 @@ parse_printf_arg_fmt (const char *fmt0, struct printf_args *args)\n \tfmt++;\n \n       if (*fmt == '$')\n-\tfmt++;\n+\t{\n+\t  if (fmt_check)\n+\t    return grub_error (GRUB_ERR_BAD_ARGUMENT,\n+\t\t\t       \"positional arguments are not supported\");\n+\t  fmt++;\n+\t}\n \n       if (*fmt =='-')\n \tfmt++;\n@@ -691,9 +714,19 @@ parse_printf_arg_fmt (const char *fmt0, struct printf_args *args)\n \tcase 's':\n \t  args->count++;\n \t  break;\n+\tcase '%':\n+\t  /* \"%%\" is the escape sequence to output \"%\". */\n+\t  break;\n+\tdefault:\n+\t  if (fmt_check)\n+\t    return grub_error (GRUB_ERR_BAD_ARGUMENT, \"unexpected format\");\n+\t  break;\n \t}\n     }\n \n+  if (fmt_check && args->count > max_args)\n+    return grub_error (GRUB_ERR_BAD_ARGUMENT, \"too many arguments\");\n+\n   if (args->count <= ARRAY_SIZE (args->prealloc))\n     args->ptr = args->prealloc;\n   else\n@@ -701,6 +734,9 @@ parse_printf_arg_fmt (const char *fmt0, struct printf_args *args)\n       args->ptr = grub_calloc (args->count, sizeof (args->ptr[0]));\n       if (!args->ptr)\n \t{\n+\t  if (fmt_check)\n+\t    return grub_errno;\n+\n \t  grub_errno = GRUB_ERR_NONE;\n \t  args->ptr = args->prealloc;\n \t  args->count = ARRAY_SIZE (args->prealloc);\n@@ -791,6 +827,8 @@ parse_printf_arg_fmt (const char *fmt0, struct printf_args *args)\n \t  break;\n \t}\n     }\n+\n+  return GRUB_ERR_NONE;\n }\n \n static void\n@@ -798,7 +836,7 @@ parse_printf_args (const char *fmt0, struct printf_args *args, va_list args_in)\n {\n   grub_size_t n;\n \n-  parse_printf_arg_fmt (fmt0, args);\n+  parse_printf_arg_fmt (fmt0, args, 0, 0);\n \n   for (n = 0; n < args->count; n++)\n     switch (args->ptr[n].type)\n@@ -1105,6 +1143,42 @@ grub_xasprintf (const char *fmt, ...)\n   return ret;\n }\n \n+grub_err_t\n+grub_printf_fmt_check (const char *fmt, const char *fmt_expected)\n+{\n+  struct printf_args args_expected, args_fmt;\n+  grub_err_t ret;\n+  grub_size_t n;\n+\n+  if (fmt == NULL || fmt_expected == NULL)\n+    return grub_error (GRUB_ERR_BAD_ARGUMENT, \"invalid format\");\n+\n+  ret = parse_printf_arg_fmt (fmt_expected, &args_expected, 1, GRUB_SIZE_MAX);\n+  if (ret != GRUB_ERR_NONE)\n+    return ret;\n+\n+  /* Limit parsing to the number of expected arguments. */\n+  ret = parse_printf_arg_fmt (fmt, &args_fmt, 1, args_expected.count);\n+  if (ret != GRUB_ERR_NONE)\n+    {\n+      free_printf_args (&args_expected);\n+      return ret;\n+    }\n+\n+  for (n = 0; n < args_fmt.count; n++)\n+    if (args_fmt.ptr[n].type != args_expected.ptr[n].type)\n+     {\n+\tret = grub_error (GRUB_ERR_BAD_ARGUMENT, \"arguments types do not match\");\n+\tbreak;\n+     }\n+\n+  free_printf_args (&args_expected);\n+  free_printf_args (&args_fmt);\n+\n+  return ret;\n+}\n+\n+\n /* Abort GRUB. This function does not return.  */\n static void __attribute__ ((noreturn))\n grub_abort (void)\ndiff --git a/include/grub/misc.h b/include/grub/misc.h\nindex ee48eb7..d1c5709 100644\n--- a/include/grub/misc.h\n+++ b/include/grub/misc.h\n@@ -440,6 +440,22 @@ grub_error_load (const struct grub_error_saved *save)\n   grub_errno = save->grub_errno;\n }\n \n+/*\n+ * grub_printf_fmt_checks() a fmt string for printf() against an expected\n+ * format. It is intended for cases where the fmt string could come from\n+ * an outside source and cannot be trusted.\n+ *\n+ * While expected fmt accepts a printf() format string it should be kept\n+ * as simple as possible. The printf() format strings with positional\n+ * parameters are NOT accepted, neither for fmt nor for fmt_expected.\n+ *\n+ * The fmt is accepted if it has equal or less arguments than fmt_expected\n+ * and if the type of all arguments match.\n+ *\n+ * Returns GRUB_ERR_NONE if fmt is acceptable.\n+ */\n+grub_err_t EXPORT_FUNC (grub_printf_fmt_check) (const char *fmt, const char *fmt_expected);\n+\n #if BOOT_TIME_STATS\n struct grub_boot_time\n {\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0147-gfxmenu-gui-Check-printf-format-in-the-gui_progress_.patch",
    "content": "From 42facd577231cf5ffe4c7128fed15b7e7d99cbca Mon Sep 17 00:00:00 2001\nFrom: Thomas Frauendorfer | Miray Software <tf@miray.de>\nDate: Tue, 4 Aug 2020 13:49:51 +0200\nSubject: [PATCH] gfxmenu/gui: Check printf() format in the gui_progress_bar\n and gui_label\n\nThe gui_progress_bar and gui_label components can display the timeout\nvalue. The format string can be set through a theme file. This patch\nadds a validation step to the format string.\n\nIf a user loads a theme file into the GRUB without this patch then\na GUI label with the following settings\n\n  + label {\n  ...\n  id = \"__timeout__\"\n  text = \"%s\"\n  }\n\nwill interpret the current timeout value as string pointer and print the\nmemory at that position on the screen. It is not desired behavior.\n\nSigned-off-by: Thomas Frauendorfer | Miray Software <tf@miray.de>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/gfxmenu/gui_label.c        | 4 ++++\n grub-core/gfxmenu/gui_progress_bar.c | 3 +++\n 2 files changed, 7 insertions(+)\n\ndiff --git a/grub-core/gfxmenu/gui_label.c b/grub-core/gfxmenu/gui_label.c\nindex a4c8178..1c19054 100644\n--- a/grub-core/gfxmenu/gui_label.c\n+++ b/grub-core/gfxmenu/gui_label.c\n@@ -193,6 +193,10 @@ label_set_property (void *vself, const char *name, const char *value)\n \t   else if (grub_strcmp (value, \"@KEYMAP_SHORT@\") == 0)\n \t    value = _(\"enter: boot, `e': options, `c': cmd-line\");\n \t   /* FIXME: Add more templates here if needed.  */\n+\n+\t  if (grub_printf_fmt_check(value, \"%d\") != GRUB_ERR_NONE)\n+\t    value = \"\"; /* Unsupported format. */\n+\n \t  self->template = grub_strdup (value);\n \t  self->text = grub_xasprintf (value, self->value);\n \t}\ndiff --git a/grub-core/gfxmenu/gui_progress_bar.c b/grub-core/gfxmenu/gui_progress_bar.c\nindex b128f08..ace85a1 100644\n--- a/grub-core/gfxmenu/gui_progress_bar.c\n+++ b/grub-core/gfxmenu/gui_progress_bar.c\n@@ -348,6 +348,9 @@ progress_bar_set_property (void *vself, const char *name, const char *value)\n \t   Please use the shortest form available in you language.  */\n \tvalue = _(\"%ds\");\n \n+      if (grub_printf_fmt_check(value, \"%d\") != GRUB_ERR_NONE)\n+\tvalue = \"\"; /* Unsupported format. */\n+\n       self->template = grub_strdup (value);\n     }\n   else if (grub_strcmp (name, \"font\") == 0)\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0148-templates-Disable-the-os-prober-by-default.patch",
    "content": "From e346414725a70e5c74ee87ca14e580c66f517666 Mon Sep 17 00:00:00 2001\nFrom: Alex Burmashev <alexander.burmashev@oracle.com>\nDate: Tue, 16 Feb 2021 11:12:12 +0100\nSubject: [PATCH] templates: Disable the os-prober by default\n\nThe os-prober is enabled by default what may lead to potentially\ndangerous use cases and borderline opening attack vectors. This\npatch disables the os-prober, adds warning messages and updates\nGRUB_DISABLE_OS_PROBER configuration option documentation. This\nway we make it clear that the os-prober usage is not recommended.\n\nSimplistic nature of this change allows downstream vendors, who\nreally want os-prober to be enabled out of the box in their\nrelevant products, easily revert to it's old behavior.\n\nReported-by: NyankoSec (<nyanko@10x.moe>, https://twitter.com/NyankoSec),\n             working with SSD Secure Disclosure\nSigned-off-by: Alex Burmashev <alexander.burmashev@oracle.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n docs/grub.texi              | 18 ++++++++++--------\n util/grub.d/30_os-prober.in |  5 ++++-\n 2 files changed, 14 insertions(+), 9 deletions(-)\n\ndiff --git a/docs/grub.texi b/docs/grub.texi\nindex e302797..45a9f80 100644\n--- a/docs/grub.texi\n+++ b/docs/grub.texi\n@@ -1481,10 +1481,13 @@ boot sequence.  If you have problems, set this option to @samp{text} and\n GRUB will tell Linux to boot in normal text mode.\n \n @item GRUB_DISABLE_OS_PROBER\n-Normally, @command{grub-mkconfig} will try to use the external\n-@command{os-prober} program, if installed, to discover other operating\n-systems installed on the same system and generate appropriate menu entries\n-for them.  Set this option to @samp{true} to disable this.\n+The @command{grub-mkconfig} has a feature to use the external\n+@command{os-prober} program to discover other operating systems installed on\n+the same machine and generate appropriate menu entries for them. It is disabled\n+by default since automatic and silent execution of @command{os-prober}, and\n+creating boot entries based on that data, is a potential attack vector. Set\n+this option to @samp{false} to enable this feature in the\n+@command{grub-mkconfig} command.\n \n @item GRUB_OS_PROBER_SKIP_LIST\n List of space-separated FS UUIDs of filesystems to be ignored from os-prober\n@@ -1812,10 +1815,9 @@ than zero; otherwise 0.\n @section Multi-boot manual config\n \n Currently autogenerating config files for multi-boot environments depends on\n-os-prober and has several shortcomings. While fixing it is scheduled for the\n-next release, meanwhile you can make use of the power of GRUB syntax and do it\n-yourself. A possible configuration is detailed here, feel free to adjust to your\n-needs.\n+os-prober and has several shortcomings. Due to that it is disabled by default.\n+It is advised to use the power of GRUB syntax and do it yourself. A possible\n+configuration is detailed here, feel free to adjust to your needs.\n \n First create a separate GRUB partition, big enough to hold GRUB. Some of the\n following entries show how to load OS installer images from this same partition,\ndiff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in\nindex 515a68c..99de043 100644\n--- a/util/grub.d/30_os-prober.in\n+++ b/util/grub.d/30_os-prober.in\n@@ -26,7 +26,8 @@ export TEXTDOMAINDIR=\"@localedir@\"\n \n . \"$pkgdatadir/grub-mkconfig_lib\"\n \n-if [ \"x${GRUB_DISABLE_OS_PROBER}\" = \"xtrue\" ]; then\n+if [ \"x${GRUB_DISABLE_OS_PROBER}\" = \"xfalse\" ]; then\n+  gettext_printf \"os-prober will not be executed to detect other bootable partitions.\\nSystems on them will not be added to the GRUB boot configuration.\\nCheck GRUB_DISABLE_OS_PROBER documentation entry.\\n\"\n   exit 0\n fi\n \n@@ -39,6 +40,8 @@ OSPROBED=\"`os-prober | tr ' ' '^' | paste -s -d ' '`\"\n if [ -z \"${OSPROBED}\" ] ; then\n   # empty os-prober output, nothing doing\n   exit 0\n+else\n+  grub_warn \"$(gettext_printf \"os-prober was executed to detect other bootable partitions.\\nIt's output will be used to detect bootable binaries on them and create new boot entries.\")\"\n fi\n \n osx_entry() {\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0149-kern-mm-Fix-grub_debug_calloc-compilation-error.patch",
    "content": "From a9d8de960834f376087856f9d60a214b47c76f61 Mon Sep 17 00:00:00 2001\nFrom: Marco A Benatto <mbenatto@redhat.com>\nDate: Tue, 9 Feb 2021 12:33:06 -0300\nSubject: [PATCH] kern/mm: Fix grub_debug_calloc() compilation error\n\nFix compilation error due to missing parameter to\ngrub_printf() when MM_DEBUG is defined.\n\nFixes: 64e26162e (calloc: Make sure we always have an overflow-checking calloc() available)\n\nSigned-off-by: Marco A Benatto <mbenatto@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n grub-core/kern/mm.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/grub-core/kern/mm.c b/grub-core/kern/mm.c\nindex f2822a8..c070afc 100644\n--- a/grub-core/kern/mm.c\n+++ b/grub-core/kern/mm.c\n@@ -594,7 +594,7 @@ grub_debug_calloc (const char *file, int line, grub_size_t nmemb, grub_size_t si\n \n   if (grub_mm_debug)\n     grub_printf (\"%s:%d: calloc (0x%\" PRIxGRUB_SIZE \", 0x%\" PRIxGRUB_SIZE \") = \",\n-\t\t file, line, size);\n+\t\t file, line, nmemb, size);\n   ptr = grub_calloc (nmemb, size);\n   if (grub_mm_debug)\n     grub_printf (\"%p\\n\", ptr);\n-- \n2.14.2\n\n"
  },
  {
    "path": "boot/grub2/0150-Makefile-Make-libgrub.pp-depend-on-config-util.h.patch",
    "content": "From 42f4054faf3c7f2cd2cab5b43e63f9d97d81f7a1 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Wed, 4 Mar 2020 12:58:42 +0100\nSubject: [PATCH 150/150] Makefile: Make libgrub.pp depend on config-util.h\n\nIf you build with \"make -j48\" a lot, sometimes you see:\n\ngcc -E -DHAVE_CONFIG_H -I. -I..  -Wall -W -DGRUB_UTIL=1 -D_FILE_OFFSET_BITS=64 -I./include -DGRUB_FILE=\\\"grub_script.tab.h\\\" -I. -I.. -I. -I.. -I../include -I./include -I../grub-core/lib/libgcrypt-grub/src/  -I../grub-core/lib/minilzo -I../grub-core/lib/xzembed -DMINILZO_HAVE_CONFIG_H -Wall -W -DGRUB_UTIL=1 -D_FILE_OFFSET_BITS=64 -I./include -DGRUB_FILE=\\\"grub_script.tab.h\\\" -I. -I.. -I. -I.. -I../include -I./include -I../grub-core/lib/libgcrypt-grub/src/  -I./grub-core/gnulib -I../grub-core/gnulib -I/builddir/build/BUILD/grub-2.02/grub-aarch64-efi-2.02 -D_FILE_OFFSET_BITS=64 \\\n  -D'GRUB_MOD_INIT(x)=@MARKER@x@' grub_script.tab.h grub_script.yy.h ../grub-core/commands/blocklist.c ../grub-core/commands/macbless.c ../grub-core/commands/xnu_uuid.c ../grub-core/commands/testload.c ../grub-core/commands/ls.c ../grub-core/disk/dmraid_nvidia.c ../grub-core/disk/loopback.c ../grub-core/disk/lvm.c ../grub-core/disk/mdraid_linux.c ../grub-core/disk/mdraid_linux_be.c ../grub-core/disk/mdraid1x_linux.c ../grub-core/disk/raid5_recover.c ../grub-core/disk/raid6_recover.c ../grub-core/font/font.c ../grub-core/gfxmenu/font.c ../grub-core/normal/charset.c ../grub-core/video/fb/fbblit.c ../grub-core/video/fb/fbutil.c ../grub-core/video/fb/fbfill.c ../grub-core/video/fb/video_fb.c ../grub-core/video/video.c ../grub-core/video/capture.c ../grub-core/video/colors.c ../grub-core/unidata.c ../grub-core/io/bufio.c ../grub-core/fs/affs.c ../grub-core/fs/afs.c ../grub-core/fs/bfs.c ../grub-core/fs/btrfs.c ../grub-core/fs/cbfs.c ../grub-core/fs/cpio.c ../grub-core/fs/cpio_be.c ../grub-core/fs/odc.c ../grub-core/fs/newc.c ../grub-core/fs/ext2.c ../grub-core/fs/fat.c ../grub-core/fs/exfat.c ../grub-core/fs/fshelp.c ../grub-core/fs/hfs.c ../grub-core/fs/hfsplus.c ../grub-core/fs/hfspluscomp.c ../grub-core/fs/iso9660.c ../grub-core/fs/jfs.c ../grub-core/fs/minix.c ../grub-core/fs/minix2.c ../grub-core/fs/minix3.c ../grub-core/fs/minix_be.c ../grub-core/fs/minix2_be.c ../grub-core/fs/minix3_be.c ../grub-core/fs/nilfs2.c ../grub-core/fs/ntfs.c ../grub-core/fs/ntfscomp.c ../grub-core/fs/reiserfs.c ../grub-core/fs/romfs.c ../grub-core/fs/sfs.c ../grub-core/fs/squash4.c ../grub-core/fs/tar.c ../grub-core/fs/udf.c ../grub-core/fs/ufs2.c ../grub-core/fs/ufs.c ../grub-core/fs/ufs_be.c ../grub-core/fs/xfs.c ../grub-core/fs/zfs/zfscrypt.c ../grub-core/fs/zfs/zfs.c ../grub-core/fs/zfs/zfsinfo.c ../grub-core/fs/zfs/zfs_lzjb.c ../grub-core/fs/zfs/zfs_lz4.c ../grub-core/fs/zfs/zfs_sha256.c ../grub-core/fs/zfs/zfs_fletcher.c ../grub-core/lib/envblk.c ../grub-core/lib/hexdump.c ../grub-core/lib/LzFind.c ../grub-core/lib/LzmaEnc.c ../grub-core/lib/crc.c ../grub-core/lib/adler32.c ../grub-core/lib/crc64.c ../grub-core/normal/datetime.c ../grub-core/normal/misc.c ../grub-core/partmap/acorn.c ../grub-core/partmap/amiga.c ../grub-core/partmap/apple.c ../grub-core/partmap/sun.c ../grub-core/partmap/plan.c ../grub-core/partmap/dvh.c ../grub-core/partmap/sunpc.c ../grub-core/partmap/bsdlabel.c ../grub-core/partmap/dfly.c ../grub-core/script/function.c ../grub-core/script/lexer.c ../grub-core/script/main.c ../grub-core/script/script.c ../grub-core/script/argv.c ../grub-core/io/gzio.c ../grub-core/io/xzio.c ../grub-core/io/lzopio.c ../grub-core/kern/ia64/dl_helper.c ../grub-core/kern/arm/dl_helper.c ../grub-core/kern/arm64/dl_helper.c ../grub-core/lib/minilzo/minilzo.c ../grub-core/lib/xzembed/xz_dec_bcj.c ../grub-core/lib/xzembed/xz_dec_lzma2.c ../grub-core/lib/xzembed/xz_dec_stream.c ../util/misc.c ../grub-core/kern/command.c ../grub-core/kern/device.c ../grub-core/kern/disk.c ../grub-core/lib/disk.c ../util/getroot.c ../grub-core/osdep/unix/getroot.c ../grub-core/osdep/getroot.c ../grub-core/osdep/devmapper/getroot.c ../grub-core/osdep/relpath.c ../grub-core/kern/emu/hostdisk.c ../grub-core/osdep/devmapper/hostdisk.c ../grub-core/osdep/hostdisk.c ../grub-core/osdep/unix/hostdisk.c ../grub-core/osdep/exec.c ../grub-core/osdep/sleep.c ../grub-core/osdep/password.c ../grub-core/kern/emu/misc.c ../grub-core/kern/emu/mm.c ../grub-core/kern/env.c ../grub-core/kern/err.c ../grub-core/kern/file.c ../grub-core/kern/fs.c ../grub-core/kern/list.c ../grub-core/kern/misc.c ../grub-core/kern/partition.c ../grub-core/lib/crypto.c ../grub-core/disk/luks.c ../grub-core/disk/geli.c ../grub-core/disk/cryptodisk.c ../grub-core/disk/AFSplitter.c ../grub-core/lib/pbkdf2.c ../grub-core/commands/extcmd.c ../grub-core/lib/arg.c ../grub-core/disk/ldm.c ../grub-core/disk/diskfilter.c ../grub-core/partmap/gpt.c ../grub-core/partmap/msdos.c ../grub-core/fs/proc.c ../grub-core/fs/archelp.c > libgrub.pp || (rm -f libgrub.pp; exit 1)\nrm -f stamp-h1\ntouch ../config-util.h.in\ncd . && /bin/sh ./config.status config-util.h\nconfig.status: creating config-util.h\nIn file included from ../include/grub/mm.h:25:0,\n                 from ../include/grub/disk.h:29,\n                 from ../include/grub/file.h:26,\n                 from ../grub-core/fs/btrfs.c:21:\n./config.h:38:10: fatal error: ./config-util.h: No such file or directory\n #include <config-util.h>\n          ^~~~~~~~~~~~~~~\ncompilation terminated.\nmake: *** [Makefile:13098: libgrub.pp] Error 1\n\nThis is because libgrub.pp is built with -DGRUB_UTIL=1, which means\nit'll try to include config-util.h, but a parallel make is actually\nbuilding that file.  I think.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nReviewed-by: Daniel Kiper <daniel.kiper@oracle.com>\n---\n Makefile.am | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 1f4bb9b8c..bf9c1ba64 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -37,7 +37,7 @@ grub_script.yy.c: grub_script.yy.h\n CLEANFILES += grub_script.yy.c grub_script.yy.h\n \n # For libgrub.a\n-libgrub.pp: grub_script.tab.h grub_script.yy.h $(libgrubmods_a_SOURCES) $(libgrubkern_a_SOURCES)\n+libgrub.pp: config-util.h grub_script.tab.h grub_script.yy.h $(libgrubmods_a_SOURCES) $(libgrubkern_a_SOURCES)\n \t$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgrubmods_a_CPPFLAGS) $(libgrubkern_a_CPPFLAGS) $(CPPFLAGS) \\\n \t  -D'GRUB_MOD_INIT(x)=@MARKER@x@' $^ > $@ || (rm -f $@; exit 1)\n CLEANFILES += libgrub.pp\n-- \n2.25.1\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 1f4bb9b8c..bf9c1ba64 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -37,7 +37,7 @@ grub_script.yy.c: grub_script.yy.h\n CLEANFILES += grub_script.yy.c grub_script.yy.h\n \n # For libgrub.a\n-libgrub.pp: grub_script.tab.h grub_script.yy.h $(libgrubmods_a_SOURCES) $(libgrubkern_a_SOURCES)\n+libgrub.pp: config-util.h grub_script.tab.h grub_script.yy.h $(libgrubmods_a_SOURCES) $(libgrubkern_a_SOURCES)\n \t$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgrubmods_a_CPPFLAGS) $(libgrubkern_a_CPPFLAGS) $(CPPFLAGS) \\\n \t  -D'GRUB_MOD_INIT(x)=@MARKER@x@' $^ > $@ || (rm -f $@; exit 1)\n CLEANFILES += libgrub.pp\n-- \n2.25.1\n\n"
  },
  {
    "path": "boot/grub2/Config.in",
    "content": "config BR2_TARGET_GRUB2_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_i386\n\tdefault y if BR2_x86_64\n\tdefault y if BR2_arm\n\tdefault y if BR2_aarch64\n\tdepends on BR2_USE_MMU\n\nconfig BR2_TARGET_GRUB2\n\tbool \"grub2\"\n\tdepends on BR2_TARGET_GRUB2_ARCH_SUPPORTS\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_TARGET_GRUB2_I386_PC if \\\n\t\t!BR2_TARGET_GRUB2_HAS_PTF && \\\n\t\t(BR2_i386 || BR2_x86_64)\n\tselect BR2_TARGET_GRUB2_ARM_UBOOT if \\\n\t\t!BR2_TARGET_GRUB2_HAS_PTF && \\\n\t\tBR2_arm\n\tselect BR2_TARGET_GRUB2_ARM64_EFI if BR2_aarch64\n\thelp\n\t  GNU GRUB is a Multiboot boot loader. It was derived from\n\t  GRUB, the GRand Unified Bootloader, which was originally\n\t  designed and implemented by Erich Stefan Boleyn. GRUB 2 has\n\t  replaced what was formerly known as GRUB (i.e. version\n\t  0.9x), which has, in turn, become GRUB Legacy.\n\n\t  Amongst others, GRUB2 offers EFI support, which GRUB Legacy\n\t  doesn't provide.\n\n\t  For additional notes on using Grub 2 with Buildroot, see\n\t  boot/grub2/readme.txt\n\n\t  http://www.gnu.org/software/grub/\n\nif BR2_TARGET_GRUB2\n\nconfig BR2_TARGET_GRUB2_HAS_LEGACY_BOOT\n\tbool\n\nconfig BR2_TARGET_GRUB2_HAS_EFI_BOOT\n\tbool\n\nconfig BR2_TARGET_GRUB2_HAS_PTF\n\tbool\n\nconfig BR2_TARGET_GRUB2_I386_PC\n\tbool \"i386-pc\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tselect BR2_TARGET_GRUB2_HAS_LEGACY_BOOT\n\thelp\n\t  Select this option if the platform you're targetting is a\n\t  x86 or x86-64 legacy BIOS based platform.\n\nconfig BR2_TARGET_GRUB2_I386_EFI\n\tbool \"i386-efi\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tselect BR2_TARGET_GRUB2_HAS_PTF\n\tselect BR2_TARGET_GRUB2_HAS_EFI_BOOT\n\thelp\n\t  Select this option if the platform you're targetting has a\n\t  32 bits EFI BIOS. Note that some x86-64 platforms use a 32\n\t  bits EFI BIOS, and this option should be used in this case.\n\nconfig BR2_TARGET_GRUB2_X86_64_EFI\n\tbool \"x86-64-efi\"\n\tdepends on BR2_x86_64\n\tselect BR2_TARGET_GRUB2_HAS_PTF\n\tselect BR2_TARGET_GRUB2_HAS_EFI_BOOT\n\thelp\n\t  Select this option if the platform you're targetting has a\n\t  64 bits EFI BIOS.\n\nconfig BR2_TARGET_GRUB2_ARM_UBOOT\n\tbool \"arm-uboot\"\n\tdepends on BR2_arm\n\tselect BR2_TARGET_GRUB2_HAS_LEGACY_BOOT\n\thelp\n\t  Select this option if the platform you're targetting is an\n\t  ARM u-boot platform, and you want to boot Grub 2 as an u-boot\n\t  compatible image.\n\nconfig BR2_TARGET_GRUB2_ARM_EFI\n\tbool \"arm-efi\"\n\tdepends on BR2_arm\n\tselect BR2_TARGET_GRUB2_HAS_PTF\n\tselect BR2_TARGET_GRUB2_HAS_EFI_BOOT\n\thelp\n\t  Select this option if the platform you're targetting is an\n\t  ARM platform and you want to boot Grub 2 as an EFI\n\t  application.\n\nconfig BR2_TARGET_GRUB2_ARM64_EFI\n\tbool \"arm64-efi\"\n\tdepends on BR2_aarch64\n\tselect BR2_TARGET_GRUB2_HAS_EFI_BOOT\n\thelp\n\t  Select this option if the platform you're targetting is an\n\t  Aarch64 platform and you want to boot Grub 2 as an EFI\n\t  application.\n\nif BR2_TARGET_GRUB2_HAS_LEGACY_BOOT\n\ncomment \"Options for the x86 legacy BIOS or ARM U-Boot support\"\n\nconfig BR2_TARGET_GRUB2_BOOT_PARTITION\n\tstring \"boot partition\"\n\tdefault \"hd0,msdos1\"\n\thelp\n\t  Specify the partition where the /boot/grub/grub.cfg file is\n\t  located. Use 'hd0,msdos1' for the first partition of the\n\t  first disk if using a legacy partition table, or 'hd0,gpt1'\n\t  if using GPT partition table.\n\nconfig BR2_TARGET_GRUB2_BUILTIN_MODULES_PC\n\tstring \"builtin modules\"\n\tdefault BR2_TARGET_GRUB2_BUILTIN_MODULES if BR2_TARGET_GRUB2_BUILTIN_MODULES != \"\" # legacy\n\tdefault \"boot linux ext2 fat squash4 part_msdos part_gpt normal biosdisk\" if BR2_TARGET_GRUB2_I386_PC\n\tdefault \"linux ext2 fat part_msdos normal\" if BR2_TARGET_GRUB2_ARM_UBOOT\n\nconfig BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC\n\tstring \"builtin config\"\n\tdefault BR2_TARGET_GRUB2_BUILTIN_CONFIG if BR2_TARGET_GRUB2_BUILTIN_CONFIG != \"\" # legacy\n\thelp\n\t  Path to a Grub 2 configuration file that will be embedded\n\t  into the Grub image itself. This allows to set the root\n\t  device and other configuration parameters, but however menu\n\t  entries cannot be described in this embedded configuration.\n\nendif # BR2_TARGET_GRUB2_HAS_LEGACY_BOOT\n\nif BR2_TARGET_GRUB2_HAS_EFI_BOOT\n\ncomment \"Options for the EFI BIOS or ARM EFI support\"\n\nconfig BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI\n\tstring \"builtin modules\"\n\tdefault BR2_TARGET_GRUB2_BUILTIN_MODULES if BR2_TARGET_GRUB2_BUILTIN_MODULES != \"\" # legacy\n\tdefault \"boot linux ext2 fat squash4 part_msdos part_gpt normal efi_gop\"\n\nconfig BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI\n\tstring \"builtin config\"\n\tdefault BR2_TARGET_GRUB2_BUILTIN_CONFIG if BR2_TARGET_GRUB2_BUILTIN_CONFIG != \"\" # legacy\n\thelp\n\t  Path to a Grub 2 configuration file that will be embedded\n\t  into the Grub image itself. This allows to set the root\n\t  device and other configuration parameters, but however menu\n\t  entries cannot be described in this embedded configuration.\n\nendif # BR2_TARGET_GRUB2_HAS_EFI_BOOT\n\nconfig BR2_TARGET_GRUB2_INSTALL_TOOLS\n\tbool \"install tools\"\n\thelp\n\t  Install support tools to interact with GNU GRUB Multiboot\n\t  boot loader.\n\n\t  This will also install the Grub 2 loadable modules to the\n\t  target.\n\nendif # BR2_TARGET_GRUB2\n\ncomment \"grub2 needs a toolchain w/ wchar\"\n\tdepends on BR2_TARGET_GRUB2_ARCH_SUPPORTS\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "boot/grub2/grub.cfg",
    "content": "set default=\"0\"\nset timeout=\"5\"\n\nmenuentry \"Buildroot\" {\n\tlinux /boot/bzImage root=/dev/sda1 rootwait console=tty1\n}\n"
  },
  {
    "path": "boot/grub2/grub2.hash",
    "content": "# Locally computed:\nsha256 e5292496995ad42dabe843a0192cf2a2c502e7ffcc7479398232b10a472df77d grub-2.04.tar.xz\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING\n"
  },
  {
    "path": "boot/grub2/grub2.mk",
    "content": "################################################################################\n#\n# grub2\n#\n################################################################################\n\nGRUB2_VERSION = 2.04\nGRUB2_SITE = http://ftp.gnu.org/gnu/grub\nGRUB2_SOURCE = grub-$(GRUB2_VERSION).tar.xz\nGRUB2_LICENSE = GPL-3.0+\nGRUB2_LICENSE_FILES = COPYING\nGRUB2_DEPENDENCIES = host-bison host-flex host-grub2\nHOST_GRUB2_DEPENDENCIES = host-bison host-flex\nGRUB2_INSTALL_IMAGES = YES\n\n# 0001-build-Fix-GRUB-i386-pc-build-with-Ubuntu-gcc.patch and 2021/03/02\n# security fixes (patches 0029-0149)\ndefine GRUB2_AVOID_AUTORECONF\n\t$(Q)touch $(@D)/Makefile.util.am\n\t$(Q)touch $(@D)/aclocal.m4\n\t$(Q)touch $(@D)/Makefile.in\n\t$(Q)touch $(@D)/configure\nendef\nGRUB2_POST_PATCH_HOOKS += GRUB2_AVOID_AUTORECONF\nHOST_GRUB2_POST_PATCH_HOOKS += GRUB2_AVOID_AUTORECONF\n\n# 0002-yylex-Make-lexer-fatal-errors-actually-be-fatal.patch\nGRUB2_IGNORE_CVES += CVE-2020-10713\n# 0005-calloc-Use-calloc-at-most-places.patch\nGRUB2_IGNORE_CVES += CVE-2020-14308\n# 0006-malloc-Use-overflow-checking-primitives-where-we-do-.patch\nGRUB2_IGNORE_CVES += CVE-2020-14309 CVE-2020-14310 CVE-2020-14311\n# 0019-script-Avoid-a-use-after-free-when-redefining-a-func.patch\nGRUB2_IGNORE_CVES += CVE-2020-15706\n# 0028-linux-Fix-integer-overflows-in-initrd-size-handling.patch\nGRUB2_IGNORE_CVES += CVE-2020-15707\n# 2021/03/02 security fixes - patches 0029-0149\nGRUB2_IGNORE_CVES += CVE-2020-25632 CVE-2020-25647 CVE-2020-27749 \\\n\tCVE-2020-27779 CVE-2021-3418 CVE-2021-20225 CVE-2021-20233\n# 0039-acpi-Don-t-register-the-acpi-command-when-locked-dow.patch\nGRUB2_IGNORE_CVES += CVE-2020-14372\n# CVE-2019-14865 is about a flaw in the grub2-set-bootflag tool, which\n# doesn't exist upstream, but is added by the Redhat/Fedora\n# packaging. Not applicable to Buildroot.\nGRUB2_IGNORE_CVES += CVE-2019-14865\n# CVE-2020-15705 is related to a flaw in the use of the\n# grub_linuxefi_secure_validate(), which was added by Debian/Ubuntu\n# patches. The issue doesn't affect upstream Grub, and\n# grub_linuxefi_secure_validate() is not implemented in the grub2\n# version available in Buildroot.\nGRUB2_IGNORE_CVES += CVE-2020-15705\n\nifeq ($(BR2_TARGET_GRUB2_INSTALL_TOOLS),y)\nGRUB2_INSTALL_TARGET = YES\nelse\nGRUB2_INSTALL_TARGET = NO\nendif\nGRUB2_CPE_ID_VENDOR = gnu\n\nGRUB2_BUILTIN_MODULES_PC = $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_PC))\nGRUB2_BUILTIN_MODULES_EFI = $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI))\nGRUB2_BUILTIN_CONFIG_PC = $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC))\nGRUB2_BUILTIN_CONFIG_EFI = $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI))\nGRUB2_BOOT_PARTITION = $(call qstrip,$(BR2_TARGET_GRUB2_BOOT_PARTITION))\n\nGRUB2_IMAGE_i386-pc = $(BINARIES_DIR)/grub.img\nGRUB2_CFG_i386-pc = $(TARGET_DIR)/boot/grub/grub.cfg\nGRUB2_PREFIX_i386-pc = ($(GRUB2_BOOT_PARTITION))/boot/grub\nGRUB2_TARGET_i386-pc = i386\nGRUB2_PLATFORM_i386-pc = pc\nGRUB2_BUILTIN_CONFIG_i386-pc = $(GRUB2_BUILTIN_CONFIG_PC)\nGRUB2_BUILTIN_MODULES_i386-pc = $(GRUB2_BUILTIN_MODULES_PC)\nGRUB2_TUPLES-$(BR2_TARGET_GRUB2_I386_PC) += i386-pc\n\nGRUB2_IMAGE_i386-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootia32.efi\nGRUB2_CFG_i386-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg\nGRUB2_PREFIX_i386-efi = /EFI/BOOT\nGRUB2_TARGET_i386-efi = i386\nGRUB2_PLATFORM_i386-efi = efi\nGRUB2_BUILTIN_CONFIG_i386-efi = $(GRUB2_BUILTIN_CONFIG_EFI)\nGRUB2_BUILTIN_MODULES_i386-efi = $(GRUB2_BUILTIN_MODULES_EFI)\nGRUB2_TUPLES-$(BR2_TARGET_GRUB2_I386_EFI) += i386-efi\n\nGRUB2_IMAGE_x86_64-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootx64.efi\nGRUB2_CFG_x86_64-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg\nGRUB2_PREFIX_x86_64-efi = /EFI/BOOT\nGRUB2_TARGET_x86_64-efi = x86_64\nGRUB2_PLATFORM_x86_64-efi = efi\nGRUB2_BUILTIN_CONFIG_x86_64-efi = $(GRUB2_BUILTIN_CONFIG_EFI)\nGRUB2_BUILTIN_MODULES_x86_64-efi = $(GRUB2_BUILTIN_MODULES_EFI)\nGRUB2_TUPLES-$(BR2_TARGET_GRUB2_X86_64_EFI) += x86_64-efi\n\nGRUB2_IMAGE_arm-uboot = $(BINARIES_DIR)/boot-part/grub/grub.img\nGRUB2_CFG_arm-uboot = $(BINARIES_DIR)/boot-part/grub/grub.cfg\nGRUB2_PREFIX_arm-uboot = ($(GRUB2_BOOT_PARTITION))/boot/grub\nGRUB2_TARGET_arm-uboot = arm\nGRUB2_PLATFORM_arm-uboot = uboot\nGRUB2_BUILTIN_CONFIG_arm-uboot = $(GRUB2_BUILTIN_CONFIG_PC)\nGRUB2_BUILTIN_MODULES_arm-uboot = $(GRUB2_BUILTIN_MODULES_PC)\nGRUB2_TUPLES-$(BR2_TARGET_GRUB2_ARM_UBOOT) += arm-uboot\n\nGRUB2_IMAGE_arm-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootarm.efi\nGRUB2_CFG_arm-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg\nGRUB2_PREFIX_arm-efi = /EFI/BOOT\nGRUB2_TARGET_arm-efi = arm\nGRUB2_PLATFORM_arm-efi = efi\nGRUB2_BUILTIN_CONFIG_arm-efi = $(GRUB2_BUILTIN_CONFIG_EFI)\nGRUB2_BUILTIN_MODULES_arm-efi = $(GRUB2_BUILTIN_MODULES_EFI)\nGRUB2_TUPLES-$(BR2_TARGET_GRUB2_ARM_EFI) += arm-efi\n\nGRUB2_IMAGE_arm64-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootaa64.efi\nGRUB2_CFG_arm64-efi = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg\nGRUB2_PREFIX_arm64-efi = /EFI/BOOT\nGRUB2_TARGET_arm64-efi = aarch64\nGRUB2_PLATFORM_arm64-efi = efi\nGRUB2_BUILTIN_CONFIG_arm64-efi = $(GRUB2_BUILTIN_CONFIG_EFI)\nGRUB2_BUILTIN_MODULES_arm64-efi = $(GRUB2_BUILTIN_MODULES_EFI)\nGRUB2_TUPLES-$(BR2_TARGET_GRUB2_ARM64_EFI) += arm64-efi\n\n# Grub2 is kind of special: it considers CC, LD and so on to be the\n# tools to build the host programs and uses TARGET_CC, TARGET_CFLAGS,\n# TARGET_CPPFLAGS, TARGET_LDFLAGS to build the bootloader itself.\n#\n# NOTE: TARGET_STRIP is overridden by !BR2_STRIP_strip, so always\n# use the cross compile variant to ensure grub2 builds\n\nHOST_GRUB2_CONF_ENV = \\\n\tCPP=\"$(HOSTCC) -E\"\n\nGRUB2_CONF_ENV = \\\n\tCPP=\"$(TARGET_CC) -E\" \\\n\tTARGET_CC=\"$(TARGET_CC)\" \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -Os\" \\\n\tTARGET_CFLAGS=\"$(TARGET_CFLAGS) -Os\" \\\n\tCPPFLAGS=\"$(TARGET_CPPFLAGS) -Os -fno-stack-protector\" \\\n\tTARGET_CPPFLAGS=\"$(TARGET_CPPFLAGS) -Os -fno-stack-protector\" \\\n\tTARGET_LDFLAGS=\"$(TARGET_LDFLAGS) -Os\" \\\n\tTARGET_NM=\"$(TARGET_NM)\" \\\n\tTARGET_OBJCOPY=\"$(TARGET_OBJCOPY)\" \\\n\tTARGET_STRIP=\"$(TARGET_CROSS)strip\"\n\nHOST_GRUB2_CONF_OPTS = \\\n\t--with-platform=none \\\n\t--disable-grub-mkfont \\\n\t--enable-efiemu=no \\\n\tac_cv_lib_lzma_lzma_code=no \\\n\t--enable-device-mapper=no \\\n\t--enable-libzfs=no \\\n\t--disable-werror\n\ndefine GRUB2_CONFIGURE_CMDS\n\t$(foreach tuple, $(GRUB2_TUPLES-y), \\\n\t\t@$(call MESSAGE,Configuring $(tuple))\n\t\tmkdir -p $(@D)/build-$(tuple)\n\t\tcd $(@D)/build-$(tuple) && \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(TARGET_CONFIGURE_ARGS) \\\n\t\t$(GRUB2_CONF_ENV) \\\n\t\t../configure \\\n\t\t\t--target=$(GRUB2_TARGET_$(tuple)) \\\n\t\t\t--with-platform=$(GRUB2_PLATFORM_$(tuple)) \\\n\t\t\t--host=$(GNU_TARGET_NAME) \\\n\t\t\t--build=$(GNU_HOST_NAME) \\\n\t\t\t--prefix=/ \\\n\t\t\t--exec-prefix=/ \\\n\t\t\t--disable-grub-mkfont \\\n\t\t\t--enable-efiemu=no \\\n\t\t\tac_cv_lib_lzma_lzma_code=no \\\n\t\t\t--enable-device-mapper=no \\\n\t\t\t--enable-libzfs=no \\\n\t\t\t--disable-werror\n\t)\nendef\n\ndefine GRUB2_BUILD_CMDS\n\t$(foreach tuple, $(GRUB2_TUPLES-y), \\\n\t\t@$(call MESSAGE,Building $(tuple))\n\t\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/build-$(tuple)\n\t)\nendef\n\ndefine GRUB2_INSTALL_IMAGES_CMDS\n\t$(foreach tuple, $(GRUB2_TUPLES-y), \\\n\t\t@$(call MESSAGE,Installing $(tuple) to images directory)\n\t\tmkdir -p $(dir $(GRUB2_IMAGE_$(tuple)))\n\t\t$(HOST_DIR)/usr/bin/grub-mkimage \\\n\t\t\t-d $(@D)/build-$(tuple)/grub-core/ \\\n\t\t\t-O $(tuple) \\\n\t\t\t-o $(GRUB2_IMAGE_$(tuple)) \\\n\t\t\t-p \"$(GRUB2_PREFIX_$(tuple))\" \\\n\t\t\t$(if $(GRUB2_BUILTIN_CONFIG_$(tuple)), \\\n\t\t\t\t-c $(GRUB2_BUILTIN_CONFIG_$(tuple))) \\\n\t\t\t$(GRUB2_BUILTIN_MODULES_$(tuple))\n\t\t$(INSTALL) -D -m 0644 boot/grub2/grub.cfg $(GRUB2_CFG_$(tuple))\n\t\t$(if $(findstring $(GRUB2_PLATFORM_$(tuple)), pc), \\\n\t\t\tcat $(@D)/build-$(tuple)/grub-core/cdboot.img $(GRUB2_IMAGE_$(tuple)) > \\\n\t\t\t\t$(BINARIES_DIR)/grub-eltorito.img\n\t\t) \\\n\t)\nendef\n\nifeq ($(BR2_TARGET_GRUB2_INSTALL_TOOLS),y)\ndefine GRUB2_INSTALL_TARGET_CMDS\n\t$(foreach tuple, $(GRUB2_TUPLES-y), \\\n\t\t@$(call MESSAGE,Installing $(tuple) to target directory)\n\t\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/build-$(tuple) DESTDIR=$(TARGET_DIR) install\n\t)\nendef\nendif\n\n$(eval $(generic-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "boot/grub2/readme.txt",
    "content": "Notes on using Grub2 for BIOS-based platforms\n=============================================\n\n1. Create a disk image\n   dd if=/dev/zero of=disk.img bs=1M count=32\n2. Partition it (either legacy or GPT style partitions work)\n   cfdisk disk.img\n    - Create one partition, type Linux, for the root\n      filesystem. The only constraint is to make sure there\n      is enough free space *before* the first partition to\n      store Grub2. Leaving 1 MB of free space is safe.\n3. Setup loop device and loop partitions\n   sudo losetup -f disk.img\n   sudo partx -a /dev/loop0\n4. Prepare the root partition\n   sudo mkfs.ext3 -L root /dev/loop0p1\n   sudo mount /dev/loop0p1 /mnt\n   sudo tar -C /mnt -xf output/images/rootfs.tar\n   sudo umount /mnt\n5. Install Grub2\n   sudo ./output/host/sbin/grub-bios-setup \\\n        -b ./output/host/lib/grub/i386-pc/boot.img \\\n        -c ./output/images/grub.img -d . /dev/loop0\n6. Cleanup loop device\n   sudo partx -d /dev/loop0\n   sudo losetup -d /dev/loop0\n7. Your disk.img is ready!\n\nUsing genimage\n--------------\n\nIf you use genimage to generate your complete image,\ninstalling Grub can be tricky. Here is how to achieve Grub's\ninstallation with genimage:\n\npartition boot {\n    in-partition-table = \"no\"\n    image = \"path_to_boot.img\"\n    offset = 0\n    size = 512\n}\npartition grub {\n    in-partition-table = \"no\"\n    image = \"path_to_grub.img\"\n    offset = 512\n}\n\nThe result is not byte to byte identical to what\ngrub-bios-setup does but it works anyway.\n\nTo test your BIOS image in Qemu\n-------------------------------\n\nqemu-system-{i386,x86-64} -hda disk.img\n\nNotes on using Grub2 for x86/x86_64 EFI-based platforms\n=======================================================\n\n1. Create a disk image\n   dd if=/dev/zero of=disk.img bs=1M count=32\n2. Partition it with GPT partitions\n   cgdisk disk.img\n    - Create a first partition, type EF00, for the\n      bootloader and kernel image\n    - Create a second partition, type 8300, for the root\n      filesystem.\n3. Setup loop device and loop partitions\n   sudo losetup -f disk.img\n   sudo partx -a /dev/loop0\n4. Prepare the boot partition\n   sudo mkfs.vfat -n boot /dev/loop0p1\n   sudo mount /dev/loop0p1 /mnt\n   sudo cp -a output/images/efi-part/* /mnt/\n   sudo cp output/images/bzImage /mnt/\n   sudo umount /mnt\n5. Prepare the root partition\n   sudo mkfs.ext3 -L root /dev/loop0p2\n   sudo mount /dev/loop0p2 /mnt\n   sudo tar -C /mnt -xf output/images/rootfs.tar\n   sudo umount /mnt\n6  Cleanup loop device\n   sudo partx -d /dev/loop0\n   sudo losetup -d /dev/loop0\n7. Your disk.img is ready!\n\nTo test your i386/x86-64 EFI image in Qemu\n------------------------------------------\n\n1. Download the EFI BIOS for Qemu\n   Version IA32 or X64 depending on the chosen Grub2\n   platform (i386-efi vs. x86-64-efi)\n   https://www.kraxel.org/repos/jenkins/edk2/\n   (or use one provided by your distribution as OVMF)\n2. Extract, and rename OVMF.fd to bios.bin and\n   CirrusLogic5446.rom to vgabios-cirrus.bin.\n3. qemu-system-{i386,x86-64} -L ovmf-dir/ -hda disk.img\n4. Make sure to pass pci=nocrs to the kernel command line,\n   to workaround a bug in the EFI BIOS regarding the\n   EFI framebuffer.\n\nNotes on using Grub2 for ARM u-boot-based platforms\n===================================================\n\nThe following steps show how to use the Grub2 arm-uboot platform\nsupport in the simplest way possible and with a single\nbuildroot-generated filesystem.\n\n 1. Load qemu_arm_vexpress_defconfig\n\n 2. Enable u-boot with the vexpress_ca9x4 board name and with\n    u-boot.elf image format.\n\n 3. Enable grub2 for the arm-uboot platform.\n\n 4. Enable \"Install kernel image to /boot in target\" in the kernel\n    menu to populate a /boot directory with zImage in it.\n\n 5. The upstream u-boot vexpress_ca9x4 doesn't have CONFIG_API enabled\n    by default, which is required.\n\n    Before building, patch u-boot (for example, make u-boot-extract to\n    edit the source before building) file\n    include/configs/vexpress_common.h to define:\n\n    #define CONFIG_API\n    #define CONFIG_SYS_MMC_MAX_DEVICE   1\n\n 6. Create a custom grub2 config file with the following contents and\n    set its path in BR2_TARGET_GRUB2_CFG:\n\n    set default=\"0\"\n    set timeout=\"5\"\n\n    menuentry \"Buildroot\" {\n        set root='(hd0)'\n        linux /boot/zImage root=/dev/mmcblk0 console=ttyAMA0\n        devicetree /boot/vexpress-v2p-ca9.dtb\n    }\n\n 7. Create a custom builtin config file with the following contents\n    and set its path in BR2_TARGET_GRUB2_BUILTIN_CONFIG:\n\n    set root=(hd0)\n    set prefix=/boot/grub\n\n 8. Create a custom post-build script which copies files from\n    ${BINARIES_DIR}/boot-part to $(TARGET_DIR)/boot (set its path in\n    BR2_ROOTFS_POST_BUILD_SCRIPT):\n\n    #!/bin/sh\n    cp -r ${BINARIES_DIR}/boot-part/* ${TARGET_DIR}/boot/\n\n 9. make\n\n10. Run qemu with:\n\n    qemu-system-arm -M vexpress-a9 -kernel output/images/u-boot -m 1024 \\\n    -nographic -sd output/images/rootfs.ext2\n\n11. In u-boot, stop at the prompt and run grub2 with:\n\n  => ext2load mmc 0:0 ${loadaddr} /boot/grub/grub.img\n  => bootm\n\n12. This should bring the grub2 menu, upon which selecting the \"Buildroot\"\n    entry should boot Linux.\n\n\nNotes on using Grub2 for Aarch64 EFI-based platforms\n====================================================\n\nThe following steps show how to use the Grub2 arm64-efi platform,\nusing qemu and EFI firmware built for qemu.\n\n 1. Load aarch64_efi_defconfig\n\n 2. make\n\n 3. Download the EFI firmware for qemu aarch64\n    https://www.kraxel.org/repos/jenkins/edk2/\n    (or use one provided by your distribution as OVMF-aarch64 or AAVMF)\n\n 4. Run qemu with:\n\n    qemu-system-aarch64 -M virt -cpu cortex-a57 -m 512 -nographic \\\n    -bios <path/to/EDK2>/QEMU_EFI.fd -hda output/images/disk.img \\\n    -netdev user,id=eth0 -device virtio-net-device,netdev=eth0\n\n 5. This should bring the grub2 menu, upon which selecting the\n    \"Buildroot\" entry should boot Linux.\n"
  },
  {
    "path": "boot/gummiboot/0001-Allow-building-with-newer-glibc-versions.patch",
    "content": "From 40ab4167b5a45c772304a879c71b47d54de3b0e3 Mon Sep 17 00:00:00 2001\nFrom: Esben Haabendal <esben@haabendal.dk>\nDate: Wed, 20 Mar 2019 14:19:40 +0100\nSubject: [PATCH] Allow building with newer glibc versions\n\nNewer glibc versions does not include sys/sysmacros.h from sys/types.h\nanymore.  Including it unconditionally should be safe.\n\nSee https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html for why\nthis was done.\n\nSigned-off-by: Esben Haabendal <esben@haabendal.dk>\n---\n src/setup/setup.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/setup/setup.c b/src/setup/setup.c\nindex 6a4275a2ae36..53429375a146 100644\n--- a/src/setup/setup.c\n+++ b/src/setup/setup.c\n@@ -37,6 +37,7 @@\n #include <ftw.h>\n #include <stdbool.h>\n #include <blkid.h>\n+#include <sys/sysmacros.h>\n \n #include \"efivars.h\"\n \n-- \n2.21.0\n\n"
  },
  {
    "path": "boot/gummiboot/0002-Fix-linking-for-non-host-compatible-targets.patch",
    "content": "From fc05ced797b87286b8ec7303fe32bf200a072972 Mon Sep 17 00:00:00 2001\nFrom: Esben Haabendal <esben@haabendal.dk>\nDate: Mon, 18 Mar 2019 11:14:31 +0100\nSubject: [PATCH] Fix linking for non-host compatible targets\n\nWithout this, gummiboot build system will use host 'ld' when linking\ntarget binary, which is obviously not a good idea.\n\nSigned-off-by: Esben Haabendal <esben@haabendal.dk>\n---\n Makefile.am  | 4 ++--\n configure.ac | 4 ++++\n 2 files changed, 6 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 6568a355ed74..9051dd44edd9 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -142,7 +142,7 @@ $(top_builddir)/src/efi/%.o: $(top_srcdir)/src/efi/%.c $(addprefix $(top_srcdir)\n \t$(AM_V_CC)$(EFI_CC) $(efi_cppflags) $(efi_cflags) -c $< -o $@\n \n $(gummiboot_solib): $(gummiboot_objects)\n-\t$(AM_V_CCLD)$(LD) $(efi_ldflags) $(gummiboot_objects) \\\n+\t$(AM_V_CCLD)$(EFI_LD) $(efi_ldflags) $(gummiboot_objects) \\\n \t\t-o $@ -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name); \\\n \tnm -D -u $@ | grep ' U ' && exit 1 || :\n .DELETE_ON_ERROR: $(gummboot_solib)\n@@ -177,7 +177,7 @@ $(top_builddir)/src/efi/%.o: $(top_srcdir)/src/efi/%.c $(addprefix $(top_srcdir)\n \t$(AM_V_CC)$(EFI_CC) $(efi_cppflags) $(efi_cflags) -c $< -o $@\n \n $(stub_solib): $(stub_objects)\n-\t$(AM_V_CCLD)$(LD) $(efi_ldflags) $(stub_objects) \\\n+\t$(AM_V_CCLD)$(EFI_LD) $(efi_ldflags) $(stub_objects) \\\n \t\t-o $@ -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name); \\\n \tnm -D -u $@ | grep ' U ' && exit 1 || :\n .DELETE_ON_ERROR: $(gummboot_solib)\ndiff --git a/configure.ac b/configure.ac\nindex 27bbe1d73396..b948696c220b 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -40,6 +40,10 @@ dnl Don't try to use things like -std=c99 for efi compilation\n EFI_CC=$CC\n AC_SUBST([EFI_CC])\n \n+dnl Allow specifying linker compatible with the compiler\n+EFI_LD=$LD\n+AC_SUBST([EFI_LD])\n+\n AC_PROG_CC_C99\n AM_PROG_CC_C_O\n AC_PROG_GCC_TRADITIONAL\n-- \n2.21.0\n\n"
  },
  {
    "path": "boot/gummiboot/Config.in",
    "content": "config BR2_TARGET_GUMMIBOOT\n\tbool \"gummiboot\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_GNU_EFI\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\thelp\n\t  gummiboot is a simple UEFI boot manager which executes\n\t  configured EFI images. The default entry is selected by a\n\t  configured pattern (glob) or an on-screen menu.\n\n\t  gummiboot operates on the EFI System Partition (ESP)\n\t  only. Configuration file fragments, kernels, initrds, other\n\t  EFI images need to reside on the ESP. Linux kernels need to\n\t  be built with CONFIG_EFI_STUB to be able to be directly\n\t  executed as an EFI image.\n\n\t  See the Grub2 help text for details on preparing an EFI\n\t  capable disk image using Gummiboot: the instructions are\n\t  exactly the same, except that the Gummiboot configuration\n\t  files will be located in /loader/ inside the EFI partition.\n\n\t  http://freedesktop.org/wiki/Software/gummiboot/\n"
  },
  {
    "path": "boot/gummiboot/buildroot.conf",
    "content": "title\tBuildroot\nversion\t1\nlinux\t/bzImage\noptions\tconsole=ttyS0 root=/dev/sda2\n"
  },
  {
    "path": "boot/gummiboot/gummiboot.mk",
    "content": "################################################################################\n#\n# gummiboot\n#\n################################################################################\n\nGUMMIBOOT_SITE = https://gitlab.freedesktop.org/archived-projects/gummiboot.git\nGUMMIBOOT_SITE_METHOD = git\nGUMMIBOOT_VERSION = 2bcd919c681c952eb867ef1bdb458f1bc49c2d55\nGUMMIBOOT_LICENSE = LGPL-2.1+\nGUMMIBOOT_LICENSE_FILES = LICENSE\n\n# The git archive does not have the autoconf/automake stuff generated.\nGUMMIBOOT_AUTORECONF = YES\nGUMMIBOOT_DEPENDENCIES = gnu-efi host-pkgconf util-linux\nGUMMIBOOT_INSTALL_TARGET = NO\nGUMMIBOOT_INSTALL_IMAGES = YES\n\nifeq ($(BR2_i386),y)\nGUMMIBOOT_IMGARCH = ia32\nelse ifeq ($(BR2_x86_64),y)\nGUMMIBOOT_IMGARCH = x64\nendif\n\nGUMMIBOOT_CONF_OPTS = \\\n\t--host=$(BR2_ARCH) \\\n\t--with-efi-libdir=$(STAGING_DIR)/usr/lib \\\n\t--with-efi-ldsdir=$(STAGING_DIR)/usr/lib \\\n\t--with-efi-includedir=$(STAGING_DIR)/usr/include \\\n\t--disable-manpages\n\ndefine GUMMIBOOT_INSTALL_IMAGES_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/gummiboot$(GUMMIBOOT_IMGARCH).efi \\\n\t\t$(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(GUMMIBOOT_IMGARCH).efi\n\t$(INSTALL) -D -m 0644 boot/gummiboot/loader.conf \\\n\t\t$(BINARIES_DIR)/efi-part/loader/loader.conf\n\t$(INSTALL) -D -m 0644 boot/gummiboot/buildroot.conf \\\n\t\t$(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "boot/gummiboot/loader.conf",
    "content": "timeout 3\ndefault buildroot\n"
  },
  {
    "path": "boot/lpc32xxcdl/Config.in",
    "content": "config BR2_TARGET_LPC32XXCDL\n\tbool \"LPC32XX CDL (kickstart and S1L)\"\n\tdepends on BR2_arm926t\n\nif BR2_TARGET_LPC32XXCDL\n\nconfig BR2_TARGET_LPC32XXCDL_BOARDNAME\n\tstring \"LPC32xx board name\"\n\nendif #BR2_TARGET_LPC32XXCDL\n"
  },
  {
    "path": "boot/lpc32xxcdl/lpc32xxcdl-2.11-compiler_name.patch",
    "content": "Use CROSS_COMPILE as compiler name and stop using libc\n\nSigned-off-by: Alexandre Belloni <abelloni@adeneo-embedded.com>\n---\n makerule/lpc32xx/make.lpc32xx.gnu |   22 +++++++++++-----------\n 1 files changed, 11 insertions(+), 11 deletions(-)\n\ndiff --git a/makerule/lpc32xx/make.lpc32xx.gnu b/makerule/lpc32xx/make.lpc32xx.gnu\nindex 1014c28..3277d99 100644\n--- a/makerule/lpc32xx/make.lpc32xx.gnu\n+++ b/makerule/lpc32xx/make.lpc32xx.gnu\n@@ -27,19 +27,19 @@ CFLAGS   += -mno-sched-prolog -fno-hosted -mno-thumb-interwork -ffunction-sectio\n CFLAGS   += -I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR)\n AFLAGS   = -mcpu=arm926ej-s\n AFLAGS   += -I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR)\n-CC       = arm-none-eabi-gcc\n-AS       = arm-none-eabi-as\n-AR       = arm-none-eabi-ar -r\n-LD       = arm-none-eabi-gcc\n-NM       = arm-none-eabi-nm\n-OBJDUMP  = arm-none-eabi-objdump\n-OBJCOPY  = arm-none-eabi-objcopy\n-READELF  = arm-none-eabi-readelf\n+CC       = $(CROSS_COMPILE)gcc\n+AS       = $(CROSS_COMPILE)as\n+AR       = $(CROSS_COMPILE)ar -r\n+LD       = $(CROSS_COMPILE)gcc\n+NM       = $(CROSS_COMPILE)nm\n+OBJDUMP  = $(CROSS_COMPILE)objdump\n+OBJCOPY  = $(CROSS_COMPILE)objcopy\n+READELF  = $(CROSS_COMPILE)readelf\n LDFLAGS  += -Wl,--gc-sections\n \n LK       =  -static\n LK       += -Wl,--start-group $(TARGET_CSP_LIB) $(TARGET_BSP_LIB) $(TARGET_GEN_LIB)\n-LK       +=  -lgcc -lc -lg -lm -lstdc++ -lsupc++ \n+LK       +=  -nostdlib -lgcc #-lc -lg -lm -lstdc++ -lsupc++ \n LK       += -Wl,--end-group\n MAP      = -Xlinker -Map -Xlinker\n LDESC    = -Xlinker -T  \n@@ -47,6 +47,6 @@ ENTRY    = -e\n BIN      = -bin\n EXT      = .elf\n LEXT     = \n-ELFTOREC =arm-none-eabi-objcopy -O srec --strip-all --verbose\n-ELFTOBIN =arm-none-eabi-objcopy -I elf32-littlearm -O binary --strip-all --verbose\n+ELFTOREC = $(OBJCOPY) -O srec --strip-all --verbose\n+ELFTOBIN = $(OBJCOPY) -I elf32-littlearm -O binary --strip-all --verbose\n REC      =.srec\n-- \n1.7.7.3\n\n"
  },
  {
    "path": "boot/lpc32xxcdl/lpc32xxcdl-2.11-delete_redundant_files.patch",
    "content": "Remove duplicated files to stop the linker from complaining about duplicate\nsymbols\n\nSigned-off-by: Alexandre Belloni <abelloni@adeneo-embedded.com>\n---\n--- a/csps/lpc32xx/bsps/fdi3250/startup/examples/s1l/sysapi_timer.c\t2011-10-05 19:10:37.000000000 +0200\n+++ /dev/null\t2012-01-01 16:39:47.918907000 +0100\n@@ -1,212 +0,0 @@\n-/***********************************************************************\n- * $Id:: sysapi_timer.c 3394 2010-05-06 17:56:27Z usb10132             $\n- *\n- * Project: Time support functions\n- *\n- * Description:\n- *     Implements the following functions required for the S1L API\n- *         time_init\n- *         time_reset\n- *         time_start\n- *         time_stop\n- *         time_get\n- *         time_get_rate\n- *\n- ***********************************************************************\n- * Software that is described herein is for illustrative purposes only  \n- * which provides customers with programming information regarding the  \n- * products. This software is supplied \"AS IS\" without any warranties.  \n- * NXP Semiconductors assumes no responsibility or liability for the \n- * use of the software, conveys no license or title under any patent, \n- * copyright, or mask work right to the product. NXP Semiconductors \n- * reserves the right to make changes in the software without \n- * notification. NXP Semiconductors also make no representation or \n- * warranty that such application will be suitable for the specified \n- * use without further testing or modification. \n- **********************************************************************/\n-\n-#include \"s1l_sys_inf.h\"\n-#include \"lpc32xx_intc_driver.h\"\n-#include \"lpc32xx_timer_driver.h\"\n-\n-static UNS_64 base_rate;\n-static INT_32 tdev = 0;\n-\n-/***********************************************************************\n- *\n- * Function: time_init\n- *\n- * Purpose: Initializes time system\n- *\n- * Processing: Initializes the system timer.\n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: 0 if the init failed, otherwise non-zero\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-INT_32 time_init(void)\n-{\n-\tTMR_PSCALE_SETUP_T pscale;\n-\n-\t/* Open timer driver */\n-\tif (tdev == 0)\n-\t{\n-\t\ttdev = timer_open((void *) TIMER_CNTR0, 0);\n-\t\tif (tdev != 0)\n-\t\t{\n-\t\t\t/* Use a prescale count to 100000 */\n-\t\t\tpscale.ps_tick_val = 100000;\n-\t\t\tpscale.ps_us_val = 0; /* Not needed when ps_tick_val != 0 */\n-\t\t\ttimer_ioctl(tdev, TMR_SETUP_PSCALE, (INT_32) &pscale);\n-\n-\t\t\t/* Get timer clock rate */\n-\t\t\tbase_rate = (UNS_64) timer_ioctl(tdev, TMR_GET_STATUS,\n-\t\t\t\tTMR_GET_CLOCK);\n-\t\t}\n-\t}\n-\n-\treturn tdev;\n-}\n-\n-/***********************************************************************\n- *\n- * Function: time_reset\n- *\n- * Purpose: Resets system timer\n- *\n- * Processing:\n- *     See function.\n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: Nothing\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-void time_reset(void)\n-{\n-\tif (tdev != 0)\n-\t{\n-\t\ttimer_ioctl(tdev, TMR_RESET, 1);\n-\t}\n-}\n-\n-/***********************************************************************\n- *\n- * Function: time_start\n- *\n- * Purpose: Starts system timer\n- *\n- * Processing:\n- *     See function.\n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: Nothing\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-void time_start(void)\n-{\n-\tif (tdev != 0)\n-\t{\n-\t\ttimer_ioctl(tdev, TMR_ENABLE, 1);\n-\t}\n-}\n-\n-/***********************************************************************\n- *\n- * Function: time_stop\n- *\n- * Purpose: Stops system timer\n- *\n- * Processing:\n- *     See function.\n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: Nothing\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-void time_stop(void)\n-{\n-\tif (tdev != 0)\n-\t{\n-\t\ttimer_ioctl(tdev, TMR_ENABLE, 0);\n-\t}\n-}\n-\n-/***********************************************************************\n- *\n- * Function: time_get\n- *\n- * Purpose: Returns current system time value\n- *\n- * Processing:\n- *     See function.\n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: The number of ticks of the timer counter\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-UNS_64 time_get(void)\n-{\n-\tTMR_COUNTS_T tcounts;\n-\tUNS_64 ticks = 0;\n-\n-\tif (tdev != 0)\n-\t{\n-\t\ttimer_ioctl(tdev, TMR_GET_COUNTS, (INT_32) &tcounts);\n-\n-\t\t/* Compute number of timer ticks */\n-\t\tticks = (UNS_64) tcounts.count_val * 100000;\n-\t\tticks = ticks + (UNS_64) tcounts.ps_count_val;\n-\t}\n-\n-\treturn ticks;\n-}\n-\n-/***********************************************************************\n- *\n- * Function: time_get_rate\n- *\n- * Purpose:\n- *     Returns base tick rate (ticks per second) of the time counter\n- *\n- * Processing:\n- *     See function.\n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: The timer tick rate (in ticks per second)\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-UNS_64 time_get_rate(void)\n-{\n-\treturn base_rate;\n-}\n-\n--- a/csps/lpc32xx/bsps/fdi3250/startup/examples/s1l/sys_mmu_cmd_group.c\t2011-10-05 19:10:37.000000000 +0200\n+++ /dev/null\t2012-01-01 16:39:47.918907000 +0100\n@@ -1,746 +0,0 @@\n-/***********************************************************************\n- * $Id:: sys_mmu_cmd_group.c 3430 2010-05-07 17:39:08Z usb10132        $\n- *\n- * Project: Command processor for peek, poke, dump, and fill\n- *\n- * Description:\n- *     Processes commands from the command prompt\n- *\n- ***********************************************************************\n- * Software that is described herein is for illustrative purposes only  \n- * which provides customers with programming information regarding the  \n- * products. This software is supplied \"AS IS\" without any warranties.  \n- * NXP Semiconductors assumes no responsibility or liability for the \n- * use of the software, conveys no license or title under any patent, \n- * copyright, or mask work right to the product. NXP Semiconductors \n- * reserves the right to make changes in the software without \n- * notification. NXP Semiconductors also make no representation or \n- * warranty that such application will be suitable for the specified \n- * use without further testing or modification. \n- **********************************************************************/\n-\n-#include \"lpc_arm922t_cp15_driver.h\"\n-#include \"lpc_string.h\"\n-#include \"startup.h\"\n-#include \"s1l_cmds.h\"\n-#include \"s1l_sys_inf.h\"\n-\n-/* dcache command */\n-BOOL_32 cmd_dcache(void);\n-static UNS_32 cmd_dcache_plist[] =\n-{\n-\t(PARSE_TYPE_STR), /* The \"dcache\" command */\n-\t(PARSE_TYPE_DEC | PARSE_TYPE_END)\n-};\n-static CMD_ROUTE_T core_dcache_cmd =\n-{\n-\t(UNS_8 *) \"dcache\",\n-\tcmd_dcache,\n-\t(UNS_8 *) \"Enables, disables, or flushes data cache\",\n-\t(UNS_8 *) \"dcache [0(disable), 1(enable), 2(flush)]\",\n-\tcmd_dcache_plist,\n-\tNULL\n-};\n-\n-/* icache command */\n-BOOL_32 cmd_icache(void);\n-static UNS_32 cmd_icache_plist[] =\n-{\n-\t(PARSE_TYPE_STR), /* The \"icache\" command */\n-\t(PARSE_TYPE_DEC | PARSE_TYPE_END)\n-};\n-static CMD_ROUTE_T core_icache_cmd =\n-{\n-\t(UNS_8 *) \"icache\",\n-\tcmd_icache,\n-\t(UNS_8 *) \"Enables or disables instruction cache\",\n-\t(UNS_8 *) \"icache [0(disable), 1(enable)]\",\n-\tcmd_icache_plist,\n-\tNULL\n-};\n-\n-/* inval command */\n-BOOL_32 cmd_inval(void);\n-static UNS_32 cmd_inval_plist[] =\n-{\n-\t(PARSE_TYPE_STR | PARSE_TYPE_END) /* The \"inval\" command */\n-};\n-static CMD_ROUTE_T core_inval_cmd =\n-{\n-\t(UNS_8 *) \"inval\",\n-\tcmd_inval,\n-\t(UNS_8 *) \"Flushes data cache and invalidates instruction cache\",\n-\t(UNS_8 *) \"inval\",\n-\tcmd_inval_plist,\n-\tNULL\n-};\n-\n-/* mmuenab command */\n-BOOL_32 cmd_mmuenab(void);\n-static UNS_32 cmd_mmuenab_plist[] =\n-{\n-\t(PARSE_TYPE_STR), /* The \"mmuenab\" command */\n-\t(PARSE_TYPE_DEC | PARSE_TYPE_END)\n-};\n-static CMD_ROUTE_T core_mmuenab_cmd =\n-{\n-\t(UNS_8 *) \"mmuenab\",\n-\tcmd_mmuenab,\n-\t(UNS_8 *) \"Enables or disables the MMU\",\n-\t(UNS_8 *) \"mmuenab [0(disable), 1(enable)]\",\n-\tcmd_mmuenab_plist,\n-\tNULL\n-};\n-\n-/* map command */\n-BOOL_32 cmd_map(void);\n-static UNS_32 cmd_map_plist[] =\n-{\n-\t(PARSE_TYPE_STR), /* The \"map\" command */\n-\t(PARSE_TYPE_HEX),\n-\t(PARSE_TYPE_HEX),\n-\t(PARSE_TYPE_DEC),\n-\t(PARSE_TYPE_DEC | PARSE_TYPE_END),\n-};\n-static CMD_ROUTE_T core_map_cmd =\n-{\n-\t(UNS_8 *) \"map\",\n-\tcmd_map,\n-\t(UNS_8 *) \"Maps a range of physical address sections to virtual addresses\",\n-\t(UNS_8 *) \"map [virt hex addr][phy hex addr][sections][0(uncached), 1(cached), 2(unmap)]\",\n-\tcmd_map_plist,\n-\tNULL\n-};\n-\n-/* mmuinfo command */\n-static BOOL_32 cmd_mmuinfo(void);\n-static UNS_32 cmd_mmuinfo_plist[] =\n-{\n-\t(PARSE_TYPE_STR | PARSE_TYPE_END) /* The \"mmuinfo\" command */\n-};\n-static CMD_ROUTE_T core_mmuinfo_cmd =\n-{\n-\t(UNS_8 *) \"mmuinfo\",\n-\tcmd_mmuinfo,\n-\t(UNS_8 *) \"Dumps page table and MMU info\",\n-\t(UNS_8 *) \"mmuinfo\",\n-\tcmd_mmuinfo_plist,\n-\tNULL\n-};\n-\n-/* MMU group */\n-static GROUP_LIST_T mmu_group =\n-{\n-\t(UNS_8 *) \"mmu\", /* mmu group */\n-\t(UNS_8 *) \"MMU command group\",\n-\tNULL,\n-\tNULL\n-};\n-\n-static UNS_8 enabled_msg [] =\" enabled\";\n-static UNS_8 disabled_msg [] =\" disabled\";\n-static UNS_8 dcache_msg[] = \"Data cache\";\n-static UNS_8 icache_msg[] = \"Instruction cache\";\n-static UNS_8 pagetab_msg[] = \"Page table at address: \";\n-static UNS_8 slist_msg[] = \"Type        Virt       Phy        fl Size\";\n-static UNS_8 mmu_msg [] =\"MMU\";\n-static UNS_8 cpage_msg[] = \"Coarse page:\";\n-static UNS_8 fpage_msg[] = \"Fine page  :\";\n-static UNS_8 sect_msg[] =  \"Section    :\";\n-static UNS_8 mbytes_msg[] = \"M\";\n-static UNS_8 map1_err_msg[] =\n-\t\"Error : section addresses must be aligned on a 32-bit boundary\";\n-static UNS_8 map2_err_msg[] =\n-\t\"Error : Number of sections exceeds address range of device\";\n-static UNS_8 phya_msg[] = \"Virtual address \";\n-static UNS_8 mapped_msg[] = \" mapped to physical address \";\n-static UNS_8 unmapped_msg[] = \" unmapped from physical address \";\n-static UNS_8 cached_msg[] = \" (cached)\";\n-static UNS_8 inval_msg[] = \" invalidated\";\n-static UNS_8 caches_msg [] =\"Caches\";\n-static UNS_8 flushed_msg[] = \" flushed\";\n-\n-/***********************************************************************\n- *\n- * Function: show_section\n- *\n- * Purpose: Display section information\n- *\n- * Processing:\n- *     See function.\n- *\n- * Parameters:\n- *     mmu_reg   : MMU settings for this section\n- *     virt_addr : Starting virtual address for this section\n- *     segs      : Number of 1M segments for this section\n- *\n- * Outputs: None\n- *\n- * Returns: Nothing\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-static void show_section(UNS_32 mmu_reg,\n-\t\t\t\t\t\t UNS_32 virt_addr,\n-\t\t\t\t\t\t UNS_32 segs) \n-{\n-\tUNS_8 straddr [16];\n-\tUNS_32 mmu_phy;\n-\n-\tif ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) !=\n-\t\tARM922T_L1D_TYPE_FAULT) \n-\t{\n-\t\tif ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) ==\n-\t\t\tARM922T_L1D_TYPE_CPAGE) \n-\t\t{\n-\t\t\tterm_dat_out(cpage_msg);\n-\t\t}\n-\t\telse if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) ==\n-\t\t\tARM922T_L1D_TYPE_FPAGE) \n-\t\t{\n-\t\t\tterm_dat_out(fpage_msg);\n-\t\t}\n-\t\telse\n-\t\t{\n-\t\t\tterm_dat_out(sect_msg);\n-\t\t}\n-\n-\t\t/* Compute virtual address */\n-\t\tstr_makehex(straddr, virt_addr, 8);\n-\t\tterm_dat_out(straddr);\n-\t\tterm_dat_out((UNS_8 *) \" \");\n-\n-\t\t/* Compute mapped physical address */\n-\t\tif ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) ==\n-\t\tARM922T_L1D_TYPE_SECTION) \n-\t\t{\n-\t\t\tmmu_phy = mmu_reg & 0xFFF00000;\n-\t\t}\n-\t\telse \n-\t\t{\n-\t\t\t/* Don't compute addresses for non-sections */\n-\t\t\tmmu_phy = 0;\n-\t\t}\n-\t\tstr_makehex(straddr, mmu_phy, 8);\n-\t\tterm_dat_out(straddr);\n-\t\tterm_dat_out((UNS_8 *) \" \");\n-\n-\t\t/* MMU flags */\n-\t\tif ((mmu_reg & ARM922T_L1D_BUFFERABLE) != 0) \n-\t\t{\n-\t\t\tterm_dat_out((UNS_8 *) \"b\");\n-\t\t}\n-\t\telse \n-\t\t{\n-\t\t\tterm_dat_out((UNS_8 *) \" \");\n-\t\t}\n-\t\tif ((mmu_reg & ARM922T_L1D_CACHEABLE) != 0) \n-\t\t{\n-\t\t\tterm_dat_out((UNS_8 *) \"c\");\n-\t\t}\n-\t\telse \n-\t\t{\n-\t\t\tterm_dat_out((UNS_8 *) \" \");\n-\t\t}\n-\t\tterm_dat_out((UNS_8 *) \" \");\n-\n-\t\t/* Displays used megabytes */\n-\t\tstr_makedec(straddr, segs);\n-\t\tterm_dat_out(straddr);\n-\t\tterm_dat_out_crlf(mbytes_msg);\n-\t}\n-}\n-\n-/***********************************************************************\n- *\n- * Function: mmu_dumpinfo\n- *\n- * Purpose: Display MMU info\n- *\n- * Processing:\n- *     Display the MMU information, including enable status, cache\n- *     status, and page table.\n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: TRUE if the command was processed, otherwise FALSE\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-static BOOL_32 mmu_dumpinfo(void) \n-{\n-\tUNS_32 segsz, last_mmu_reg, mmu_vrt, mmu_reg, mmu_vrtsav = 0, *pt;\n-\tUNS_32 mlast_mmu_reg, mmmu_reg;\n-\tint idx;\n-\tUNS_8 hexaddr [16];\n-\n-\tterm_dat_out(mmu_msg);\n-\tif (cp15_mmu_enabled() == FALSE) \n-\t{\n-\t\tterm_dat_out_crlf(disabled_msg);\n-\t}\n-\telse \n-\t{\n-\t\tterm_dat_out_crlf(enabled_msg);\n-\n-\t    /* Get MMU control register word */\n-  \t\tmmu_reg = cp15_get_mmu_control_reg();\n-\n-\t\t/* Instruction cache status */\n-\t\tterm_dat_out(icache_msg);\n-\t\tif ((mmu_reg & ARM922T_MMU_CONTROL_I) == 0) \n-\t\t{\n-\t\t\tterm_dat_out_crlf(disabled_msg);\n-\t\t}\n-\t\telse \n-\t\t{\n-\t\t\tterm_dat_out_crlf(enabled_msg);\n-\t\t}\n-\n-\t\t/* Data cache status */\n-\t\tterm_dat_out(dcache_msg);\n-\t\tif ((mmu_reg & ARM922T_MMU_CONTROL_C) == 0) \n-\t\t{\n-\t\t\tterm_dat_out_crlf(disabled_msg);\n-\t\t}\n-\t\telse \n-\t\t{\n-\t\t\tterm_dat_out_crlf(enabled_msg);\n-\t\t}\n-\n-\t\tterm_dat_out(pagetab_msg);\n-\t\tmmu_reg = (UNS_32) cp15_get_ttb();\n-\t\tstr_makehex(hexaddr, mmu_reg, 8);\n-\t\tterm_dat_out_crlf(hexaddr);\n-\t\tterm_dat_out_crlf(slist_msg);\n-\n-\t\t/* Process MMU table - assume that the physical and\n-\t\t   virtual locations of table are the same */\n-\t\tpt = (UNS_32 *) mmu_reg;\n-\t\tmmu_vrt = 0x0;\n-\t\tsegsz = 0xFFFFFFFF;\n-\t\tlast_mmu_reg = mlast_mmu_reg = 0xFFFFFFFF;\n-\t\tfor (idx = 0; idx < 4096; idx++) \n-\t\t{\n-\t\t\tmmu_reg = *pt;\n-\t\t\tmmmu_reg = (mmu_reg & (ARM922T_L1D_TYPE_PG_SN_MASK |\n-\t\t\t\tARM922T_L1D_BUFFERABLE | ARM922T_L1D_CACHEABLE));\n-\t\t\tsegsz = segsz + 1;\n-\n-\t\t\tif ((last_mmu_reg != 0xFFFFFFFF) &&\n-\t\t\t\t(mlast_mmu_reg != mmmu_reg))\n-\t\t\t{\n-\t\t\t\tshow_section(last_mmu_reg, mmu_vrtsav, segsz);\n-\t\t\t\tsegsz = 0;\n-\t\t\t}\n-\n-\t\t\tif (mlast_mmu_reg != mmmu_reg) \n-\t\t\t{\n-\t\t\t\tmmu_vrtsav = mmu_vrt;\n-\t\t\t\tlast_mmu_reg = mmu_reg;\n-\t\t\t\tmlast_mmu_reg = mmmu_reg;\n-\t\t\t}\n-\n-\t\t\tpt++;\n-\t\t\tmmu_vrt += 0x00100000;\n-\t\t}\n-\t}\n-\n-\treturn TRUE;\n-}\n-\n-/***********************************************************************\n- *\n- * Function: mmu_dumpmap\n- *\n- * Purpose: Map a virtual address range to a physical range\n- *\n- * Processing:\n- *     From the input addresses and number of sections, generate the\n- *     appropriate entries in the page table.\n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: TRUE if the command was processed, otherwise FALSE\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-static BOOL_32 mmu_dumpmap(UNS_32 vrt,\n-\t\t\t\t\t\t   UNS_32 phy,\n-\t\t\t\t\t\t   UNS_32 sections,\n-\t\t\t\t\t\t   UNS_32 cache) \n-{\n-\tBOOL_32 processed = FALSE;\n-\tUNS_32 mmu_phy, mmu_vrt, tmp1 = 0, tmp2, *pt;\n-\tUNS_8 hexaddr [16];\n-\n-\t/* Verify address boundaries are sectional */\n-\tmmu_vrt = vrt & ~ARM922T_L2D_SN_BASE_MASK;\n-\tmmu_phy = phy & ~ARM922T_L2D_SN_BASE_MASK;\n-\tif ((mmu_vrt != 0) || (mmu_phy != 0)) \n-\t{\n-\t\tterm_dat_out_crlf(map1_err_msg);\n-\t}\n-\telse \n-\t{\n-\t\t/* Verify that address range and section count will not\n-\t\t   exceed address range of device */\n-\t\ttmp1 = vrt >> 20;\n-\t\ttmp1 = (tmp1 + sections) - 1;\n-\t\ttmp2 = phy >> 20;\n-\t\ttmp2 = (tmp2 + sections) - 1;\n-\t\tif ((tmp1 < 4096) && (tmp2 < 4096)) \n-\t\t{\n-\t\t\t/* Good address range and good section count */\n-\t\t\tprocessed = TRUE;\n-\t\t}\n-\t\telse \n-\t\t{\n-\t\t\tterm_dat_out_crlf(map2_err_msg);\n-\t\t}\n-\t}\n-\t\n-\t/* Generate static part of MMU word */\n-\tif (cache == 0) \n-\t{\n-\t\t/* Section mapped with cache disabled */\n-\t\ttmp1 = ARM922T_L1D_TYPE_SECTION;\n-\t}\n-\telse if (cache == 1)\n-\t{\n-\t\t/* Section mapped with cache enabled */\n-\t\ttmp1 = (ARM922T_L1D_BUFFERABLE | ARM922T_L1D_CACHEABLE |\n-\t\t\tARM922T_L1D_TYPE_SECTION);\n-\t}\n-\telse if (cache == 2)\n-\t{\n-\t\t/* Section unmapped */\n-\t\ttmp1 = ARM922T_L1D_TYPE_FAULT;\n-\t}\n-\ttmp1 |= ARM922T_L1D_AP_ALL;\n-\n-\t/* Offset into page table for virtual address */\n-\ttmp2 = (vrt >> 20);\n-\tpt = cp15_get_ttb() + tmp2;\n-\n-\t/* Loop until all sections are complete */\n-\twhile ((sections > 0) && (processed == TRUE)) \n-\t{\n-\t\t/* Add in physical address */\n-\t\ttmp2 = tmp1 | (phy & ARM922T_L2D_SN_BASE_MASK);\n-\n-\t\t/* Save new section descriptor for virtual address */\n-\t\t*pt = tmp2;\n-\n-\t\t/* Output message shown the map */\n-\t\tterm_dat_out(phya_msg);\n-\t\tstr_makehex(hexaddr, phy, 8);\n-\t\tterm_dat_out(hexaddr);\n-\t\tif (cache == 2) \n-\t\t{\n-\t\t\tterm_dat_out(unmapped_msg);\n-\t\t}\n-\t\telse \n-\t\t{\n-\t\t\tterm_dat_out(mapped_msg);\n-\t\t}\n-\t\tstr_makehex(hexaddr, vrt, 8);\n-\t\tterm_dat_out(hexaddr);\n-\t\tif (cache == 1) \n-\t\t{\n-\t\t\tterm_dat_out(cached_msg);\n-\t\t}\n-\t\tterm_dat_out_crlf((UNS_8 *) \"\");\n-\n-\t\t/* Next section and page table entry*/\n-\t\tphy += 0x00100000;\n-\t\tvrt += 0x00100000;\n-\t\tpt++;\n-\t\tsections--;\n-\t}\n-\n-\treturn processed;\n-}\n-\n-/***********************************************************************\n- *\n- * Function: cmd_mmuinfo\n- *\n- * Purpose: Display MMU information\n- *\n- * Processing:\n- *     See function. \n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: TRUE if the command was processed, otherwise FALSE\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-static BOOL_32 cmd_mmuinfo(void) \n-{\n-\tmmu_dumpinfo();\n-\n-\treturn TRUE;\n-}\n-\n-/***********************************************************************\n- *\n- * Function: cmd_map\n- *\n- * Purpose: Map a physical address region to a virtual region\n- *\n- * Processing:\n- *     See function. \n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: TRUE if the command was processed, otherwise FALSE\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-BOOL_32 cmd_map(void) \n-{\n-\tUNS_32 phy, virt, sects, ce = 0;\n-\n-\t/* Get arguments */\n-\tvirt = cmd_get_field_val(1);\n-\tphy = cmd_get_field_val(2);\n-\tsects = cmd_get_field_val(3);\n-\tce = cmd_get_field_val(4);\n-\n-\tif (ce <= 2) \n-\t{\n-\t\tmmu_dumpmap(virt, phy, sects, ce);\n-\t}\n-\n-\treturn TRUE;\n-}\n-\n-/***********************************************************************\n- *\n- * Function: cmd_inval\n- *\n- * Purpose: MMU cache flush and invalidate\n- *\n- * Processing:\n- *     See function. \n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: TRUE if the command was processed, otherwise FALSE\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-BOOL_32 cmd_inval(void) \n-{\n-\tdcache_flush();\n-\ticache_inval();\n-\tterm_dat_out(caches_msg);\n-\tterm_dat_out(inval_msg);\n-\n-\treturn TRUE;\n-}\n-\n-/***********************************************************************\n- *\n- * Function: cmd_dcache\n- *\n- * Purpose: MMU data cache enable and disable\n- *\n- * Processing:\n- *     If the value passed in the parser is 1, enable the data cache,\n- *     otherwise disable the data cache.\n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: TRUE if the command was processed, otherwise FALSE\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-BOOL_32 cmd_dcache(void) \n-{\n-\tUNS_32 cenable;\n-\tUNS_8 *ppar;\n-\n-\t/* Get argument */\n-\tcenable = cmd_get_field_val(1);\n-\n-\tswitch (cenable)\n-\t{\n-\t\tcase 0:\n-\t\t\tdcache_flush();\n-\t\t\tcp15_set_dcache(0);\n-\t\t\tppar = disabled_msg;\n-\t\t\tbreak;\n-\n-\t\tcase 1:\n-\t\t\tcp15_invalidate_cache();\n-\t\t\tcp15_set_dcache(1);\n-\t\t\tppar = enabled_msg;\n-\t\t\tbreak;\n-\n-\t\tcase 2:\n-\t\tdefault:\n-\t\t\tdcache_flush();\n-\t\t\tppar = flushed_msg;\n-\t\t\tbreak;\n-\t}\n-\n-\tterm_dat_out(dcache_msg);\n-\tterm_dat_out_crlf(ppar);\n-\n-\treturn TRUE;\n-}\n-\n-/***********************************************************************\n- *\n- * Function: cmd_icache\n- *\n- * Purpose: MMU instruction cache enable and disable\n- *\n- * Processing:\n- *     If the value passed in the parser is 1, enable the instruction\n- *     cache, otherwise disable the instruction cache.\n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: TRUE if the command was processed, otherwise FALSE\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-BOOL_32 cmd_icache(void)\n-{\n-\tUNS_32 cenable;\n-\tUNS_8 *ppar;\n-\n-\t/* Get argument */\n-\tcenable = cmd_get_field_val(1);\n-\n-\tif (cenable == 1) \n-\t{\n-\t\tdcache_flush();\n-\t\tcp15_invalidate_cache();\n-\t\tcp15_set_icache(1);\n-\t\tppar = enabled_msg;\n-\t}\n-\telse\n-\t{\n-\t\tcp15_set_icache(0);\n-\t\tppar = disabled_msg;\n-\t}\n-\n-\tterm_dat_out(icache_msg);\n-\tterm_dat_out_crlf(ppar);\n-\n-\treturn TRUE;\n-}\n-\n-\n-/***********************************************************************\n- *\n- * Function: cmd_mmuenab\n- *\n- * Purpose: Enable or disable MMU\n- *\n- * Processing:\n- *     See function. \n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: TRUE if the command was processed, otherwise FALSE\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-BOOL_32 cmd_mmuenab(void) \n-{\n-\tUNS_8 *ppar;\n-\tUNS_32 cenable;\n-\n-\tterm_dat_out_crlf((UNS_8 *) \"Warning: Changing MMU status on \"\n-\t\t\" cached and buffered code can cause system crashes.\");\n-\n-\t/* Get argument */\n-\tcenable = cmd_get_field_val(1);\n-\n-\tif (cenable == 1) \n-\t{\n-\t\tif ((cp15_get_mmu_control_reg() & ARM922T_MMU_CONTROL_C) != 0)\n-\t\t{\n-\t\t\tcp15_invalidate_cache();\n-\t\t}\n-\n-\t\tcp15_set_mmu(1);\n-\t\tppar = enabled_msg;\n-\t}\n-\telse\n-\t{\n-\t\tcp15_dcache_flush();\n-\t\tcp15_write_buffer_flush();\n-\t\tcp15_invalidate_cache();\n-\t\tcp15_set_mmu(0);\n-\t\tppar = disabled_msg;\n-\t}\n-\n-\tterm_dat_out(mmu_msg);\n-\tterm_dat_out_crlf(ppar);\n-\n-\treturn TRUE;\n-}\n-\n-/***********************************************************************\n- *\n- * Function: mmu_cmd_group_init\n- *\n- * Purpose: Initialize MMU command group\n- *\n- * Processing:\n- *     See function. \n- *\n- * Parameters: None\n- *\n- * Outputs: None\n- *\n- * Returns: Nothin\n- *\n- * Notes: None\n- *\n- **********************************************************************/\n-void mmu_cmd_group_init(void)\n-{\n-\t/* Add MMU group */\n-\tcmd_add_group(&mmu_group);\n-\n-\t/* Add commands to the MMU group */\n-\tcmd_add_new_command(&mmu_group, &core_dcache_cmd);\n-\tcmd_add_new_command(&mmu_group, &core_icache_cmd);\n-\tcmd_add_new_command(&mmu_group, &core_inval_cmd);\n-\tcmd_add_new_command(&mmu_group, &core_mmuenab_cmd);\n-\tcmd_add_new_command(&mmu_group, &core_map_cmd);\n-\tcmd_add_new_command(&mmu_group, &core_mmuinfo_cmd);\n-}\n"
  },
  {
    "path": "boot/lpc32xxcdl/lpc32xxcdl-2.11-libnosys_gnu.patch",
    "content": "Fix compilation and eabi issues\n\nSince we are not linking with libc anymore, we need to define our own memset,\nstrlen and memcpy. Also, as we are using a *libc compiler, we need to \"handle\"\nexceptions (mostly division by 0) by defining raise() and\n__aeabi_unwind_cpp_pr0.\n\nSigned-off-by: Alexandre Belloni <abelloni@adeneo-embedded.com>\n---\n csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c  |   41 +++++++++++++++++++++++\n csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c |   41 +++++++++++++++++++++++\n csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c |   41 +++++++++++++++++++++++\n 3 files changed, 123 insertions(+), 0 deletions(-)\n\ndiff --git a/csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c b/csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c\nindex 385b0ab..f1f0a0a 100644\n--- a/csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c\n+++ b/csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c\n@@ -25,6 +25,7 @@\n #include <errno.h>\n #include <sys/times.h>\n #include <sys/stat.h>\n+#include <sys/types.h>\n \n /* errno definition */\n #undef errno\n@@ -125,4 +126,44 @@ int _write(int file, char *ptr, int len){\n     return 0;\n }\n \n+void * memset(void * s,int c,size_t count)\n+{\n+        char *xs = (char *) s;\n+\n+        while (count--)\n+                *xs++ = c;\n+\n+        return s;\n+}\n+\n+\n+size_t strlen(const char * s)\n+{\n+        const char *sc;\n+\n+        for (sc = s; *sc != '\\0'; ++sc)\n+                /* nothing */;\n+        return sc - s;\n+}\n+\n+void * memcpy(void * dest,const void *src,size_t count)\n+{\n+        char *tmp = (char *) dest, *s = (char *) src;\n+\n+        while (count--)\n+                *tmp++ = *s++;\n+\n+        return dest;\n+}\n+\n+\n+/* Dummy functions to avoid linker complaints */\n+void __aeabi_unwind_cpp_pr0(void)\n+{\n+};\n+\n+void raise(void)\n+{\n+};\n+\n #endif /*__GNUC__*/\ndiff --git a/csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c b/csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c\nindex 385b0ab..f1f0a0a 100644\n--- a/csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c\n+++ b/csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c\n@@ -25,6 +25,7 @@\n #include <errno.h>\n #include <sys/times.h>\n #include <sys/stat.h>\n+#include <sys/types.h>\n \n /* errno definition */\n #undef errno\n@@ -125,4 +126,44 @@ int _write(int file, char *ptr, int len){\n     return 0;\n }\n \n+void * memset(void * s,int c,size_t count)\n+{\n+        char *xs = (char *) s;\n+\n+        while (count--)\n+                *xs++ = c;\n+\n+        return s;\n+}\n+\n+\n+size_t strlen(const char * s)\n+{\n+        const char *sc;\n+\n+        for (sc = s; *sc != '\\0'; ++sc)\n+                /* nothing */;\n+        return sc - s;\n+}\n+\n+void * memcpy(void * dest,const void *src,size_t count)\n+{\n+        char *tmp = (char *) dest, *s = (char *) src;\n+\n+        while (count--)\n+                *tmp++ = *s++;\n+\n+        return dest;\n+}\n+\n+\n+/* Dummy functions to avoid linker complaints */\n+void __aeabi_unwind_cpp_pr0(void)\n+{\n+};\n+\n+void raise(void)\n+{\n+};\n+\n #endif /*__GNUC__*/\ndiff --git a/csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c b/csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c\nindex cfdb674..6b50c60 100644\n--- a/csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c\n+++ b/csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c\n@@ -25,6 +25,7 @@\n #include <errno.h>\n #include <sys/times.h>\n #include <sys/stat.h>\n+#include <sys/types.h>\n \n /* errno definition */\n #undef errno\n@@ -125,4 +126,44 @@ int _write(int file, char *ptr, int len){\n     return 0;\n }\n \n+void * memset(void * s,int c,size_t count)\n+{\n+        char *xs = (char *) s;\n+\n+        while (count--)\n+                *xs++ = c;\n+\n+        return s;\n+}\n+\n+\n+size_t strlen(const char * s)\n+{\n+        const char *sc;\n+\n+        for (sc = s; *sc != '\\0'; ++sc)\n+                /* nothing */;\n+        return sc - s;\n+}\n+\n+void * memcpy(void * dest,const void *src,size_t count)\n+{\n+        char *tmp = (char *) dest, *s = (char *) src;\n+\n+        while (count--)\n+                *tmp++ = *s++;\n+\n+        return dest;\n+}\n+\n+\n+/* Dummy functions to avoid linker complaints */\n+void __aeabi_unwind_cpp_pr0(void)\n+{\n+};\n+\n+void raise(void)\n+{\n+};\n+\n #endif /*__GNUC__*/\n-- \n1.7.7.3\n\n"
  },
  {
    "path": "boot/lpc32xxcdl/lpc32xxcdl-2.11-slashes.patch",
    "content": "Use slashes instead of backslashes\n\nSigned-off-by: Alexandre Belloni <abelloni@adeneo-embedded.com>\n---\n .../bsps/common/examples/buildfiles/makefile       |   10 +++---\n .../startup/examples/burners/makefile.burner       |   16 +++++-----\n csps/lpc32xx/bsps/ea3250/source/makefile           |   10 +++---\n csps/lpc32xx/bsps/fdi3250/source/makefile          |   12 ++++----\n csps/lpc32xx/bsps/phy3250/examples/makefile        |    2 +-\n csps/lpc32xx/bsps/phy3250/source/makefile          |    2 +-\n .../examples/Burners/nor/kickstart/makefile        |    2 +-\n .../startup/examples/Burners/nor/norerase/makefile |    2 +-\n .../startup/examples/Burners/nor/s1lapp/makefile   |    2 +-\n .../examples/Burners/spi/kickstart/makefile        |    2 +-\n csps/lpc32xx/source/makefile                       |   10 +++---\n lpc/source/makefile                                |   10 +++---\n makefile                                           |    2 +-\n makerule/common/make.rules.environment             |   30 ++++++++++----------\n makerule/lpc32xx/make.lpc32xx.gnu                  |    2 +-\n makerule/lpc32xx/make.lpc32xx.iar                  |   12 ++++----\n makerule/lpc32xx/make.lpc32xx.keil                 |    6 ++--\n makerule/lpc32xx/make.lpc32xx.rvw                  |    2 +-\n 18 files changed, 67 insertions(+), 67 deletions(-)\n\ndiff --git a/csps/lpc32xx/bsps/common/examples/buildfiles/makefile b/csps/lpc32xx/bsps/common/examples/buildfiles/makefile\nindex cf4977c..1da2201 100644\n--- a/csps/lpc32xx/bsps/common/examples/buildfiles/makefile\n+++ b/csps/lpc32xx/bsps/common/examples/buildfiles/makefile\n@@ -25,16 +25,16 @@\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\$(CSP)\\make.$(CSP).$(TOOL)\n+include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL)\n \n ########################################################################\n #\n # Pick up the assembler and C source files in the directory  \n #\n ########################################################################\n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.ftypes\n-AFLAGS +=-I..\\Include\n-CFLAGS +=-I..\\Include\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes\n+AFLAGS +=-I../Include\n+CFLAGS +=-I../Include\n \n ########################################################################\n #\n@@ -42,6 +42,6 @@ CFLAGS +=-I..\\Include\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.build\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build\n \n \ndiff --git a/csps/lpc32xx/bsps/common/startup/examples/burners/makefile.burner b/csps/lpc32xx/bsps/common/startup/examples/burners/makefile.burner\nindex fca3947..18bd703 100644\n--- a/csps/lpc32xx/bsps/common/startup/examples/burners/makefile.burner\n+++ b/csps/lpc32xx/bsps/common/startup/examples/burners/makefile.burner\n@@ -22,9 +22,9 @@\n #\n ########################################################################\n \n-COMMON_BASE := $(NXPMCU_SOFTWARE)\\csps\\$(CSP)\\bsps\\common\n-include $(NXPMCU_SOFTWARE)\\makerule\\$(CSP)\\make.$(CSP).$(TOOL)\n-include $(COMMON_BASE)\\startup\\examples\\buildfiles\\make.env\n+COMMON_BASE := $(NXPMCU_SOFTWARE)/csps/$(CSP)/bsps/common\n+include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL)\n+include $(COMMON_BASE)/startup/examples/buildfiles/make.env\n \n ########################################################################\n # ARM Realview\n@@ -38,7 +38,7 @@ AFLAGS += --predefine \"USE_ALL_STACKS SETL {TRUE}\"\n #AFLAGS += --predefine \"RW_RELOC SETL {TRUE}\"\n \n # This runs from IRAM\n-LDSCRIPT =$(COMMON_BASE)\\startup\\examples\\buildfiles\\ldscript_iram_rvw.ld\n+LDSCRIPT =$(COMMON_BASE)/startup/examples/buildfiles/ldscript_iram_rvw.ld\n LDFLAGS = --remove\n MAP = --map --info=totals,sizes,unused --symbols --list\n endif\n@@ -55,7 +55,7 @@ AFLAGS += --predefine \"USE_ALL_STACKS SETL {TRUE}\"\n #AFLAGS += --predefine \"RW_RELOC SETL {TRUE}\"\n \n # This runs from IRAM\n-LDSCRIPT =$(COMMON_BASE)\\startup\\examples\\buildfiles\\ldscript_iram_rvw.ld\n+LDSCRIPT =$(COMMON_BASE)/startup/examples/buildfiles/ldscript_iram_rvw.ld\n LDFLAGS = --remove\n MAP = --map --info=totals,sizes,unused --symbols --list\n endif\n@@ -72,7 +72,7 @@ AFLAGS += --defsym USE_ALL_STACKS=1\n #AFLAGS += --defsym RW_RELOC=1\n \n # This runs from IRAM\n-LDSCRIPT =$(COMMON_BASE)\\startup\\examples\\buildfiles\\ldscript_iram_gnu.ld\n+LDSCRIPT =$(COMMON_BASE)/startup/examples/buildfiles/ldscript_iram_gnu.ld\n \n endif\n \n@@ -108,7 +108,7 @@ endif\n # Pick up the assembler and C source files in the directory  \n #\n ########################################################################\n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.ftypes\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes\n \n ########################################################################\n #\n@@ -157,6 +157,6 @@ endif\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.build\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build\n \n .PHONY: debug bin\ndiff --git a/csps/lpc32xx/bsps/ea3250/source/makefile b/csps/lpc32xx/bsps/ea3250/source/makefile\nindex 7cada25..2899b20 100644\n--- a/csps/lpc32xx/bsps/ea3250/source/makefile\n+++ b/csps/lpc32xx/bsps/ea3250/source/makefile\n@@ -22,16 +22,16 @@\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\$(CSP)\\make.$(CSP).$(TOOL)\n+include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL)\n \n ########################################################################\n #\n # Pick up the assembler and C source files in the directory  \n #\n ########################################################################\n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.ftypes\n-AFLAGS +=-I..\\Include\n-CFLAGS +=-I..\\Include\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes\n+AFLAGS +=-I../Include\n+CFLAGS +=-I../Include\n \n ########################################################################\n #\n@@ -64,7 +64,7 @@ realclean: lib_realclean\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.build\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build\n \n .PHONY: all lib_clean lib_realclean\n \ndiff --git a/csps/lpc32xx/bsps/fdi3250/source/makefile b/csps/lpc32xx/bsps/fdi3250/source/makefile\nindex 4e153bb..11e4b63 100644\n--- a/csps/lpc32xx/bsps/fdi3250/source/makefile\n+++ b/csps/lpc32xx/bsps/fdi3250/source/makefile\n@@ -22,16 +22,16 @@\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\$(CSP)\\make.$(CSP).$(TOOL)\n+include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL)\n \n ########################################################################\n #\n # Pick up the assembler and C source files in the directory  \n #\n ########################################################################\n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.ftypes\n-AFLAGS +=-I..\\Include\n-CFLAGS +=-I..\\Include\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes\n+AFLAGS +=-I../Include\n+CFLAGS +=-I../Include\n \n ########################################################################\n #\n@@ -53,7 +53,7 @@ lib_clean:\n # delete all targets this Makefile can make and all built libraries\n # linked in\n lib_realclean: \n-\t-@$(RM) $(BSP_LIB_DIR)\\*.a\n+\t-@$(RM) $(BSP_LIB_DIR)/*.a\n \t-@$(RMDIR) $(BSP_LIB_DIR)\n \t\n clean: lib_clean\n@@ -65,7 +65,7 @@ realclean: lib_realclean\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.build\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build\n \n .PHONY: all lib_clean lib_realclean\n \ndiff --git a/csps/lpc32xx/bsps/phy3250/examples/makefile b/csps/lpc32xx/bsps/phy3250/examples/makefile\nindex b939252..e7feaa6 100644\n--- a/csps/lpc32xx/bsps/phy3250/examples/makefile\n+++ b/csps/lpc32xx/bsps/phy3250/examples/makefile\n@@ -25,7 +25,7 @@\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\$(CSP)\\make.$(CSP).$(TOOL)\n+include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL)\n \n SUBDIRS = adc dram_self_refresh hstimer hsuart i2c kscan lcd_colorbars\n SUBDIRS += lcd_tsc mi2c mstimer pwm pwm_simple rtc sdcard sdcard_dma\ndiff --git a/csps/lpc32xx/bsps/phy3250/source/makefile b/csps/lpc32xx/bsps/phy3250/source/makefile\nindex 7c48e7d..750b776 100644\n--- a/csps/lpc32xx/bsps/phy3250/source/makefile\n+++ b/csps/lpc32xx/bsps/phy3250/source/makefile\n@@ -32,7 +32,7 @@ include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL)\n # Pick up the assembler and C source files in the directory  \n #\n ########################################################################\n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.ftypes\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes\n AFLAGS +=-I../Include\n CFLAGS +=-I../Include\n \ndiff --git a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/kickstart/makefile b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/kickstart/makefile\nindex 01e2b38..526d6cc 100644\n--- a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/kickstart/makefile\n+++ b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/kickstart/makefile\n@@ -78,7 +78,7 @@ endif\n \n ########################################################################\n #\n-# Compiler\\linker specific stuff\n+# Compiler/linker specific stuff\n #\n ########################################################################\n \ndiff --git a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/norerase/makefile b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/norerase/makefile\nindex ce329f5..e81b8db 100644\n--- a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/norerase/makefile\n+++ b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/norerase/makefile\n@@ -77,7 +77,7 @@ endif\n \n ########################################################################\n #\n-# Compiler\\linker specific stuff\n+# Compiler/linker specific stuff\n #\n ########################################################################\n \ndiff --git a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/s1lapp/makefile b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/s1lapp/makefile\nindex 4426fc7..196faec 100644\n--- a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/s1lapp/makefile\n+++ b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/s1lapp/makefile\n@@ -77,7 +77,7 @@ endif\n \n ########################################################################\n #\n-# Compiler\\linker specific stuff\n+# Compiler/linker specific stuff\n #\n ########################################################################\n \ndiff --git a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/spi/kickstart/makefile b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/spi/kickstart/makefile\nindex dc73b64..39fc304 100644\n--- a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/spi/kickstart/makefile\n+++ b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/spi/kickstart/makefile\n@@ -78,7 +78,7 @@ endif\n \n ########################################################################\n #\n-# Compiler\\linker specific stuff\n+# Compiler/linker specific stuff\n #\n ########################################################################\n \ndiff --git a/csps/lpc32xx/source/makefile b/csps/lpc32xx/source/makefile\nindex 8e05456..16bd944 100644\n--- a/csps/lpc32xx/source/makefile\n+++ b/csps/lpc32xx/source/makefile\n@@ -25,16 +25,16 @@\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\$(CSP)\\make.$(CSP).$(TOOL)\n+include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL)\n \n ########################################################################\n #\n # Pick up the assembler and C source files in the directory  \n #\n ########################################################################\n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.ftypes\n-AFLAGS +=-I..\\Include\n-CFLAGS +=-I..\\Include\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes\n+AFLAGS +=-I../Include\n+CFLAGS +=-I../Include\n \n \n ########################################################################\n@@ -68,7 +68,7 @@ realclean: lib_realclean\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.build\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build\n \n .PHONY: all lib_clean lib_realclean\n \ndiff --git a/lpc/source/makefile b/lpc/source/makefile\nindex 2860db9..ae7d612 100644\n--- a/lpc/source/makefile\n+++ b/lpc/source/makefile\n@@ -25,16 +25,16 @@\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\$(CSP)\\make.$(CSP).$(TOOL)\n+include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL)\n \n ########################################################################\n #\n # Pick up the assembler and C source files in the directory  \n #\n ########################################################################\n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.ftypes\n-AFLAGS +=-I..\\Include\n-CFLAGS +=-I..\\Include\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes\n+AFLAGS +=-I../Include\n+CFLAGS +=-I../Include\n \n ########################################################################\n #\n@@ -67,7 +67,7 @@ realclean: lib_realclean\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.build\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build\n \n .PHONY: all lib_clean lib_realclean\n \ndiff --git a/makefile b/makefile\nindex 8645fcc..86fa6bc 100644\n--- a/makefile\n+++ b/makefile\n@@ -34,7 +34,7 @@ TARGETS_CLN\t=gen_clean csp_clean bsp_clean\n #\n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\$(CSP)\\make.$(CSP).$(TOOL)\n+include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL)\n \n ########################################################################\n #\ndiff --git a/makerule/common/make.rules.environment b/makerule/common/make.rules.environment\nindex d5737fe..4e6df48 100644\n--- a/makerule/common/make.rules.environment\n+++ b/makerule/common/make.rules.environment\n@@ -52,7 +52,7 @@ ASTYLE          =astyle --options=$(BUILD_ROOT)/tools/astyle.cfg\n #\n ########################################################################\n   \n-CSP_LIB_DIR  =$(BUILD_ROOT)\\csps\\$(CSP)\\lib\n+CSP_LIB_DIR  =$(BUILD_ROOT)/csps/$(CSP)/lib\n \n ########################################################################\n #\n@@ -60,7 +60,7 @@ CSP_LIB_DIR  =$(BUILD_ROOT)\\csps\\$(CSP)\\lib\n #\n ########################################################################\n \n-BSP_LIB_DIR =$(BUILD_ROOT)\\csps\\$(CSP)\\bsps\\$(BSP)\\lib\n+BSP_LIB_DIR =$(BUILD_ROOT)/csps/$(CSP)/bsps/$(BSP)/lib\n \n ########################################################################\n #\n@@ -68,7 +68,7 @@ BSP_LIB_DIR =$(BUILD_ROOT)\\csps\\$(CSP)\\bsps\\$(BSP)\\lib\n #\n ########################################################################\n \n-GEN_LIB_DIR =$(BUILD_ROOT)\\$(GEN)\\lib\n+GEN_LIB_DIR =$(BUILD_ROOT)/$(GEN)/lib\n \n ########################################################################\n # \n@@ -76,9 +76,9 @@ GEN_LIB_DIR =$(BUILD_ROOT)\\$(GEN)\\lib\n # \n ########################################################################\n \n-CSP_DIR     =$(BUILD_ROOT)\\csps\\$(CSP)\n-CSP_SRC_DIR =$(CSP_DIR)\\source\n-CSP_INC_DIR =$(CSP_DIR)\\include\n+CSP_DIR     =$(BUILD_ROOT)/csps/$(CSP)\n+CSP_SRC_DIR =$(CSP_DIR)/source\n+CSP_INC_DIR =$(CSP_DIR)/include\n \n ########################################################################\n # \n@@ -86,9 +86,9 @@ CSP_INC_DIR =$(CSP_DIR)\\include\n # \n ########################################################################\n \n-BSP_DIR     =$(BUILD_ROOT)\\csps\\$(CSP)\\bsps\\$(BSP)\n-BSP_SRC_DIR =$(BSP_DIR)\\source\n-BSP_INC_DIR =$(BSP_DIR)\\include\n+BSP_DIR     =$(BUILD_ROOT)/csps/$(CSP)/bsps/$(BSP)\n+BSP_SRC_DIR =$(BSP_DIR)/source\n+BSP_INC_DIR =$(BSP_DIR)/include\n \n ########################################################################\n # \n@@ -96,9 +96,9 @@ BSP_INC_DIR =$(BSP_DIR)\\include\n # \n ########################################################################\n \n-GEN_DIR     =$(BUILD_ROOT)\\$(GEN)\n-GEN_SRC_DIR =$(GEN_DIR)\\source\n-GEN_INC_DIR =$(GEN_DIR)\\include\n+GEN_DIR     =$(BUILD_ROOT)/$(GEN)\n+GEN_SRC_DIR =$(GEN_DIR)/source\n+GEN_INC_DIR =$(GEN_DIR)/include\n \n ########################################################################\n #\n@@ -151,6 +151,6 @@ endif\n # \n ########################################################################\n \n-TARGET_CSP_LIB =$(CSP_LIB_DIR)\\$(CSP_ARCHIVE)\n-TARGET_BSP_LIB =$(BSP_LIB_DIR)\\$(BSP_ARCHIVE)\n-TARGET_GEN_LIB =$(GEN_LIB_DIR)\\$(GEN_ARCHIVE)\n+TARGET_CSP_LIB =$(CSP_LIB_DIR)/$(CSP_ARCHIVE)\n+TARGET_BSP_LIB =$(BSP_LIB_DIR)/$(BSP_ARCHIVE)\n+TARGET_GEN_LIB =$(GEN_LIB_DIR)/$(GEN_ARCHIVE)\ndiff --git a/makerule/lpc32xx/make.lpc32xx.gnu b/makerule/lpc32xx/make.lpc32xx.gnu\nindex 3277d99..d80b98d 100644\n--- a/makerule/lpc32xx/make.lpc32xx.gnu\n+++ b/makerule/lpc32xx/make.lpc32xx.gnu\n@@ -19,7 +19,7 @@\n # use without further testing or modification. \n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.environment\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.environment\n \n CPU      = arm926ej-s\n CFLAGS   = -mcpu=arm926ej-s -Wall -Os\ndiff --git a/makerule/lpc32xx/make.lpc32xx.iar b/makerule/lpc32xx/make.lpc32xx.iar\nindex 238ebbf..27d163f 100644\n--- a/makerule/lpc32xx/make.lpc32xx.iar\n+++ b/makerule/lpc32xx/make.lpc32xx.iar\n@@ -19,12 +19,12 @@\n # use without further testing or modification. \n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.environment\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.environment\n \n-IARBASE   = $(IAR_ROOT)\\ARM\n-IARTOOLS  = $(IARBASE)\\bin\n-IAR_LIB   = $(IARBASE)\\lib\n-IAR_INC   = $(IARBASE)\\inc\n+IARBASE   = $(IAR_ROOT)/ARM\n+IARTOOLS  = $(IARBASE)/bin\n+IAR_LIB   = $(IARBASE)/lib\n+IAR_INC   = $(IARBASE)/inc\n CC        = iccarm\n CCP       = iccarm\n AS        = iasmarm\n@@ -36,7 +36,7 @@ CFLAGS    += -I\"$(IAR_INC)\"\n AFLAGS    = --cpu 5TEJ\n LDFLAGS   = \n LK        = \"$(TARGET_GEN_LIB)\" \"$(TARGET_CSP_LIB)\" \"$(TARGET_BSP_LIB)\"\n-;LK        += \"$(IAR_LIB)\\dl4tpannl8f.r79\"\n+;LK        += \"$(IAR_LIB)/dl4tpannl8f.r79\"\n MAP       = --map\n LDESC     = --config\n ENTRY     = --entry\ndiff --git a/makerule/lpc32xx/make.lpc32xx.keil b/makerule/lpc32xx/make.lpc32xx.keil\nindex dd27583..7334d3f 100644\n--- a/makerule/lpc32xx/make.lpc32xx.keil\n+++ b/makerule/lpc32xx/make.lpc32xx.keil\n@@ -19,7 +19,7 @@\n # use without further testing or modification. \n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.environment\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.environment\n \n CC        =armcc\n CCP       =armcc\n@@ -27,11 +27,11 @@ AS        =armasm\n LD        =armlink\n AR        =armar -r -s\n CFLAGS    =--arm -O3 -g --device DARMP3 -D__MICROLIB \n-CFLAGS    +=-I$(KEIL_RVCT)\\inc -I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR) \n+CFLAGS    +=-I$(KEIL_RVCT)/inc -I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR) \n AFLAGS    =--arm --device=DARMP3 \n AFLAGS    +=-I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR)\n LDFLAGS   =--noremove\n-LK        =--device DARMP3 --libpath $(KEIL_RVCT)\\lib --scan $(TARGET_CSP_LIB)\n+LK        =--device DARMP3 --libpath $(KEIL_RVCT)/lib --scan $(TARGET_CSP_LIB)\n LK        +=--scan $(TARGET_BSP_LIB) \n LK        +=--scan $(TARGET_GEN_LIB)\n MAP       =--map --list\ndiff --git a/makerule/lpc32xx/make.lpc32xx.rvw b/makerule/lpc32xx/make.lpc32xx.rvw\nindex 59961dd..2419976 100644\n--- a/makerule/lpc32xx/make.lpc32xx.rvw\n+++ b/makerule/lpc32xx/make.lpc32xx.rvw\n@@ -19,7 +19,7 @@\n # use without further testing or modification. \n ########################################################################\n \n-include $(NXPMCU_SOFTWARE)\\makerule\\common\\make.rules.environment\n+include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.environment\n \n CC        =armcc\n CCP       =armcpp\n-- \n1.7.7.3\n\n"
  },
  {
    "path": "boot/lpc32xxcdl/lpc32xxcdl.hash",
    "content": "# Locally computed\nsha256  ded3fa936a96d3fb8188ca6214f57b5208bd49e5416bd69f38bfc810b34197bc  lpc32xx_cdl-v2.11.zip\n"
  },
  {
    "path": "boot/lpc32xxcdl/lpc32xxcdl.mk",
    "content": "################################################################################\n#\n# lpc32xxcdl\n#\n################################################################################\n\nLPC32XXCDL_VERSION = 2.11\nLPC32XXCDL_SOURCE = lpc32xx_cdl-v$(LPC32XXCDL_VERSION).zip\nLPC32XXCDL_SITE = https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/lpcware-archive/61/2\n\nLPC32XXCDL_INSTALL_TARGET = NO\nLPC32XXCDL_INSTALL_IMAGES = YES\n\nifeq ($(BR2_TARGET_LPC32XXCDL_BOARDNAME),\"ea3250\")\nLPC32XXCDL_KICKSTART = kickstart/nand\nLPC32XXCDL_KICKSTART_BURNER = nand/kickstart\nLPC32XXCDL_S1L = s1l\nLPC32XXCDL_S1L_BURNER = nand/s1lapp\nendif\n\nifeq ($(BR2_TARGET_LPC32XXCDL_BOARDNAME),\"phy3250\")\nLPC32XXCDL_KICKSTART = kickstart/kickstart_nand\nLPC32XXCDL_KICKSTART_BURNER = nand/kickstart\nLPC32XXCDL_S1L = s1l/s1l_nand_boot\nLPC32XXCDL_S1L_BURNER = nand/s1lapp\nendif\n\nifeq ($(BR2_TARGET_LPC32XXCDL_BOARDNAME),\"fdi3250\")\nLPC32XXCDL_KICKSTART = kickstart/nand\nLPC32XXCDL_KICKSTART_BURNER = nand/kickstart_jtag\nLPC32XXCDL_S1L = s1l\nLPC32XXCDL_S1L_BURNER = nand/s1lapp_jtag\nendif\n\nLPC32XXCDL_BUILD_FLAGS = \\\n\tCROSS_COMPILE=$(TARGET_CROSS) \\\n\tNXPMCU_WINBASE=$(@D) \\\n\tNXPMCU_SOFTWARE=$(@D) \\\n\tBSP=$(BR2_TARGET_LPC32XXCDL_BOARDNAME) \\\n\tCSP=lpc32xx TOOL=gnu GEN=lpc\n\nLPC32XXCDL_BOARD_STARTUP_DIR = \\\n\tcsps/lpc32xx/bsps/$(BR2_TARGET_LPC32XXCDL_BOARDNAME)/startup/examples/\n\n# Source files are with dos newlines, which our patch infrastructure doesn't\n# handle. Work around it by converting the affected files to unix newlines\n# before patching\ndefine LPC32XXCDL_EXTRACT_CMDS\n\tunzip $(LPC32XXCDL_DL_DIR)/$(LPC32XXCDL_SOURCE) -d $(@D)\n\tmv $(@D)/lpc3xxx_cdl/* $(@D)\n\trmdir $(@D)/lpc3xxx_cdl/\n\tsed -n 's|^[+-]\\{3\\} [^/]\\+\\([^ \\t]*\\)\\(.*\\)|$(@D)\\1|p' \\\n\t\tboot/lpc32xxcdl/*.patch| sort -u | xargs $(SED) 's/\\x0D$$//'\nendef\n\ndefine LPC32XXCDL_BUILD_CMDS\n\t$(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)\n\t$(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/Burners/$(LPC32XXCDL_KICKSTART_BURNER)\n\t$(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/$(LPC32XXCDL_KICKSTART)\n\t$(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/Burners/$(LPC32XXCDL_S1L_BURNER)\n\t$(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/$(LPC32XXCDL_S1L)\nendef\n\ndefine LPC32XXCDL_INSTALL_IMAGES_CMDS\n\tcp $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/Burners/$(LPC32XXCDL_KICKSTART_BURNER)/*gnu.bin $(BINARIES_DIR)\n\tcp $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/$(LPC32XXCDL_KICKSTART)/*gnu.bin $(BINARIES_DIR)\n\tcp $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/Burners/$(LPC32XXCDL_S1L_BURNER)/*gnu.bin $(BINARIES_DIR)\n\tcp $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/$(LPC32XXCDL_S1L)/*gnu.bin $(BINARIES_DIR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/mv-ddr-marvell/Config.in",
    "content": "config BR2_TARGET_MV_DDR_MARVELL\n\tbool \"mv-ddr-marvell\"\n\tdepends on BR2_aarch64\n\thelp\n\t  Marvell keeps algorithms for DDR training in a separate\n\t  repository. This code is not built separately, it is needed\n\t  as a dependency to build ATF firmware for Marvell Armada 7040\n\t  and 8040 SoCs.\n\n\t  https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/\n"
  },
  {
    "path": "boot/mv-ddr-marvell/mv-ddr-marvell.hash",
    "content": "# Locally calculated\nsha256  bfab74a625d65238c569b9df282b55c0fc9a1e2d3decedcf194d44774df2ede4  mv-ddr-marvell-305d923e6bc4236cd3b902f6679b0aef9e5fa52d.tar.gz\nsha256  48bb930b6fbc3f5db72e29c849b096df3868e4a6d2bdc0e2dd3365c768241cd5  ddr3_init.c\n"
  },
  {
    "path": "boot/mv-ddr-marvell/mv-ddr-marvell.mk",
    "content": "################################################################################\n#\n# mv-ddr-marvell\n#\n################################################################################\n\n# This is the latest commit on mv-ddr-devel as of 20201207\nMV_DDR_MARVELL_VERSION = 305d923e6bc4236cd3b902f6679b0aef9e5fa52d\nMV_DDR_MARVELL_SITE = $(call github,MarvellEmbeddedProcessors,mv-ddr-marvell,$(MV_DDR_MARVELL_VERSION))\nMV_DDR_MARVELL_LICENSE = GPL-2.0+ or LGPL-2.1 with freertos-exception-2.0, BSD-3-Clause, Marvell Commercial\nMV_DDR_MARVELL_LICENSE_FILES = ddr3_init.c\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/mxs-bootlets/Config.in",
    "content": "config BR2_TARGET_MXS_BOOTLETS\n\tbool \"mxs-bootlets\"\n\tdepends on BR2_arm\n\thelp\n\t  Stage1 bootloaders for Freescale iMX23/iMX28 SoCs\n\nif BR2_TARGET_MXS_BOOTLETS\n\nchoice\n\tprompt \"Source\"\n\tdefault BR2_TARGET_MXS_BOOTLETS_FREESCALE\n\thelp\n\t  Select the location of the bootlets you want to use\n\nconfig BR2_TARGET_MXS_BOOTLETS_FREESCALE\n\tbool \"Freescale 10.12.01 version\"\n\nconfig BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL\n\tbool \"Custom tarball\"\n\nconfig BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT\n\tbool \"Custom Git repository\"\n\nendchoice\n\nconfig BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL\n\tstring \"URL of custom bootlets tarball\"\n\tdepends on BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL\n\nif BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT\n\nconfig BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL\n\tstring \"URL of custom Git repository\"\n\nconfig BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_VERSION\n\tstring \"Custom Git version\"\n\nendif\n\nchoice\n\tprompt \"Bootstream\"\n\thelp\n\t  Select which bootstream to generate\n\nconfig BR2_TARGET_MXS_BOOTLETS_BAREBOX\n\tbool \"Barebox Bootloader\"\n\tdepends on BR2_TARGET_BAREBOX\n\nconfig BR2_TARGET_MXS_BOOTLETS_LINUX\n\tbool \"Linux Kernel\"\n\tdepends on BR2_LINUX_KERNEL\n\nconfig BR2_TARGET_MXS_BOOTLETS_UBOOT\n\tbool \"U-boot bootloader\"\n\tdepends on BR2_TARGET_UBOOT\n\nendchoice\n\nconfig BR2_TARGET_MXS_BOOTLETS_HAS_IVT\n\tbool \"HAB Support\"\n\thelp\n\t  Enable this option if you are building bootlets\n\t  for the iMX28 platform that needs to include instructions\n\t  for the secure boot mechanism present on these SoCs\n\nchoice\n\tprompt \"Board\"\n\thelp\n\t  Select the board to build the bootlets for\n\nconfig BR2_TARGET_MXS_BOOTLETS_STMP37xx\n\tbool \"Sigmatel ST-MP3-7xx Board\"\n\nconfig BR2_TARGET_MXS_BOOTLETS_STMP378x\n\tbool \"Sigmatel ST-MP3-78x Board\"\n\nconfig BR2_TARGET_MXS_BOOTLETS_IMX28EVK\n\tbool \"Freescale iMX28 EVK Board\"\n\nconfig BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD\n\tbool \"Custom board\"\nendchoice\n\nconfig BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME\n\tstring \"Custom board name\"\n\tdepends on BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD\n\thelp\n\t  Name of the board to build the bootlets for\n\nendif\n"
  },
  {
    "path": "boot/mxs-bootlets/barebox_ivt.bd",
    "content": "// STMP378x ROM command script to load and run U-Boot\n\nsources {\n\tpower_prep=\"./power_prep/power_prep\";\n\tsdram_prep=\"./boot_prep/boot_prep\";\n\tbarebox=\"./barebox\";\n}\n\nsection (0) {\n\n\t//----------------------------------------------------------\n\t// Power Supply initialization\n\t//----------------------------------------------------------\n\n\tload power_prep;\n\tload ivt (entry = power_prep:_start) > 0x8000;\n\thab call 0x8000;\n\n\t//----------------------------------------------------------\n\t// SDRAM initialization\n\t//----------------------------------------------------------\n\n\tload sdram_prep;\n        load ivt (entry = sdram_prep:_start) > 0x8000;\n        hab call 0x8000;\n\t//----------------------------------------------------------\n\t//  Load and call u_boot - ELF ARM image\n\t//----------------------------------------------------------\n\n        load barebox;\n        load ivt (entry = barebox:start) > 0x8000;\n\thab call 0x8000;\n\n}\n"
  },
  {
    "path": "boot/mxs-bootlets/mxs-bootlets.hash",
    "content": "# locally computed\nsha256  63f6068ae36884adef4259bbb1fe2591755718f22c46d0a59d854883dfab1ffc  imx-bootlets-src-10.12.01.tar.gz\n"
  },
  {
    "path": "boot/mxs-bootlets/mxs-bootlets.mk",
    "content": "################################################################################\n#\n# mxs-bootlets\n#\n################################################################################\n\nifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL),y)\nMXS_BOOTLETS_TARBALL = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL))\nMXS_BOOTLETS_SITE = $(patsubst %/,%,$(dir $(MXS_BOOTLETS_TARBALL)))\nMXS_BOOTLETS_SOURCE = $(notdir $(MXS_BOOTLETS_TARBALL))\nBR_NO_CHECK_HASH_FOR += $(MXS_BOOTLETS_SOURCE)\nelse ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT),y)\nMXS_BOOTLETS_SITE = $(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL)\nMXS_BOOTLETS_SITE_METHOD = git\nMXS_BOOTLETS_VERSION = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_VERSION))\nBR_NO_CHECK_HASH_FOR += $(MXS_BOOTLETS_SOURCE)\nelse\nMXS_BOOTLETS_VERSION = 10.12.01\nMXS_BOOTLETS_SITE = http://download.ossystems.com.br/bsp/freescale/source\nMXS_BOOTLETS_SOURCE = imx-bootlets-src-$(MXS_BOOTLETS_VERSION).tar.gz\nendif\n\nifeq ($(BR2_TARGET_MXS_BOOTLETS_STMP37xx),y)\nMXS_BOOTLETS_BOARD = stmp37xx_dev\nelse ifeq ($(BR2_TARGET_MXS_BOOTLETS_STMP378x),y)\nMXS_BOOTLETS_BOARD = stmp378x_dev\nelse ifeq ($(BR2_TARGET_MXS_BOOTLETS_IMX28EVK),y)\nMXS_BOOTLETS_BOARD = iMX28_EVK\nelse ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD),y)\nMXS_BOOTLETS_BOARD = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME))\nendif\n\nifeq ($(BR2_TARGET_MXS_BOOTLETS_HAS_IVT),y)\nMXS_BOOTLETS_IVT_SUFFIX = _ivt\nMXS_BOOTLETS_ELFTOSB_OPTIONS += -f imx28\nendif\n\nMXS_BOOTLETS_DEPENDENCIES = host-elftosb\nMXS_BOOTLETS_LICENSE = GPL-2.0+\n\nifeq ($(BR2_TARGET_MXS_BOOTLETS_BAREBOX),y)\nMXS_BOOTLETS_DEPENDENCIES += barebox\nMXS_BOOTLETS_BOOTDESC = barebox$(MXS_BOOTLETS_IVT_SUFFIX).bd\nMXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_barebox$(MXS_BOOTLETS_IVT_SUFFIX).sb\n\nelse ifeq ($(BR2_TARGET_MXS_BOOTLETS_LINUX),y)\nMXS_BOOTLETS_DEPENDENCIES += linux\nMXS_BOOTLETS_BOOTDESC = linux$(MXS_BOOTLETS_IVT_SUFFIX).bd\nMXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_linux$(MXS_BOOTLETS_IVT_SUFFIX).sb\n\nelse ifeq ($(BR2_TARGET_MXS_BOOTLETS_UBOOT),y)\nMXS_BOOTLETS_DEPENDENCIES += uboot\nMXS_BOOTLETS_BOOTDESC = uboot$(MXS_BOOTLETS_IVT_SUFFIX).bd\nMXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_uboot$(MXS_BOOTLETS_IVT_SUFFIX).sb\nendif\n\nifeq ($(BR2_TARGET_MXS_BOOTLETS_BAREBOX),y)\ndefine MXS_BOOTLETS_SED_BAREBOX\n\tsed -i 's,[^ *]barebox.*;,\\tbarebox=\"$(BAREBOX_DIR)/barebox\";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC)\nendef\nendif\n\nifeq ($(BR2_TARGET_MXS_BOOTLETS_LINUX),y)\ndefine MXS_BOOTLETS_BUILD_LINUX_PREP\n\tBOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\t\t$(MAKE1) -C $(@D) linux_prep\nendef\ndefine MXS_BOOTLETS_SED_LINUX\n\tsed -i 's,[^ *]linux_prep.*;,\\tlinux_prep=\"$(@D)/linux_prep/output-target/linux_prep\";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC)\n\tsed -i 's,[^ *]zImage.*;,\\tzImage=\"$(LINUX_DIR)/arch/arm/boot/zImage\";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC)\nendef\nendif\n\nifeq ($(BR2_TARGET_MXS_BOOTLETS_UBOOT),y)\ndefine MXS_BOOTLETS_SED_UBOOT\n\tsed -i 's,[^ *]u_boot.*;,\\tu_boot=\"$(UBOOT_DIR)/u-boot\";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC)\nendef\nendif\n\ndefine MXS_BOOTLETS_INSTALL_BAREBOX_BOOTDESC\n\tcp boot/mxs-bootlets/barebox_ivt.bd $(@D)/\nendef\n\nMXS_BOOTLETS_POST_EXTRACT_HOOKS += MXS_BOOTLETS_INSTALL_BAREBOX_BOOTDESC\n\ndefine MXS_BOOTLETS_BUILD_CMDS\n\tBOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\t\t$(MAKE1) -C $(@D) power_prep\n\tBOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\t\t$(MAKE1) -C $(@D) boot_prep\n\t$(MXS_BOOTLETS_BUILD_LINUX_PREP)\n\tsed -i 's,[^ *]power_prep.*;,\\tpower_prep=\"$(@D)/power_prep/power_prep\";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC)\n\tsed -i 's,[^ *]sdram_prep.*;,\\tsdram_prep=\"$(@D)/boot_prep/boot_prep\";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC)\n\t$(MXS_BOOTLETS_SED_BAREBOX)\n\t$(MXS_BOOTLETS_SED_LINUX)\n\t$(MXS_BOOTLETS_SED_UBOOT)\n\t$(HOST_DIR)/bin/elftosb $(MXS_BOOTLETS_ELFTOSB_OPTIONS) \\\n\t\t-z -c $(@D)/$(MXS_BOOTLETS_BOOTDESC) \\\n\t\t-o $(@D)/$(MXS_BOOTLETS_BOOTSTREAM)\nendef\n\ndefine MXS_BOOTLETS_INSTALL_TARGET_CMDS\n\tcp $(@D)/$(MXS_BOOTLETS_BOOTSTREAM) $(BINARIES_DIR)/\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/opensbi/0.9/0001-Makefile-Don-t-specify-mabi-or-march.patch",
    "content": "From f5871e1f3650d6c8a032928cb5d8ca00c275c377 Mon Sep 17 00:00:00 2001\nFrom: Alistair Francis <alistair.francis@wdc.com>\nDate: Fri, 15 Feb 2019 14:57:41 -0800\nSubject: [PATCH] Makefile: Don't specify mabi or march\n\nTo avoid\n    can't link double-float modules with soft-float modules\nerrors when building 32-bit openSBI don't specify mabi or march.\n\nSigned-off-by: Alistair Francis <alistair.francis@wdc.com>\n---\n Makefile | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex ae68f55..10851fc 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -145,7 +145,6 @@ GENFLAGS\t+=\t$(firmware-genflags-y)\n CFLAGS\t\t=\t-g -Wall -Werror -nostdlib -fno-strict-aliasing -O2\n CFLAGS\t\t+=\t-fno-omit-frame-pointer -fno-optimize-sibling-calls\n CFLAGS\t\t+=\t-mno-save-restore -mstrict-align\n-CFLAGS\t\t+=\t-mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)\n CFLAGS\t\t+=\t-mcmodel=$(PLATFORM_RISCV_CODE_MODEL)\n CFLAGS\t\t+=\t$(GENFLAGS)\n CFLAGS\t\t+=\t$(platform-cflags-y)\n@@ -158,7 +157,6 @@ CPPFLAGS\t+=\t$(firmware-cppflags-y)\n ASFLAGS\t\t=\t-g -Wall -nostdlib -D__ASSEMBLY__\n ASFLAGS\t\t+=\t-fno-omit-frame-pointer -fno-optimize-sibling-calls\n ASFLAGS\t\t+=\t-mno-save-restore -mstrict-align\n-ASFLAGS\t\t+=\t-mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)\n ASFLAGS\t\t+=\t-mcmodel=$(PLATFORM_RISCV_CODE_MODEL)\n ASFLAGS\t\t+=\t$(GENFLAGS)\n ASFLAGS\t\t+=\t$(platform-asflags-y)\n-- \n2.20.1\n\n"
  },
  {
    "path": "boot/opensbi/0.9/0002-Makefile-unconditionally-disable-SSP.patch",
    "content": "From e389d5fbc296e496db15368b2b621e0f178f7f34 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 8 May 2021 21:28:10 +0200\nSubject: [PATCH] Makefile: unconditionally disable SSP\n\nThough -nostdlib is passed in {C,+AS,DTSCPP}FLAGS, -fno-stack-protector\nmust also be passed to avoid linking errors related to undefined\nreferences to '__stack_chk_guard' and '__stack_chk_fail' if toolchain\nenforces -fstack-protector.\n\nFixes:\n - https://gitlab.com/kubu93/buildroot/-/jobs/1247043359\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/riscv/opensbi/pull/211]\n---\n Makefile | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex eeffe6b..1419360 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -203,7 +203,7 @@ GENFLAGS\t+=\t$(libsbiutils-genflags-y)\n GENFLAGS\t+=\t$(platform-genflags-y)\n GENFLAGS\t+=\t$(firmware-genflags-y)\n \n-CFLAGS\t\t=\t-g -Wall -Werror -ffreestanding -nostdlib -fno-strict-aliasing -O2\n+CFLAGS\t\t=\t-g -Wall -Werror -ffreestanding -nostdlib -fno-stack-protector -fno-strict-aliasing -O2\n CFLAGS\t\t+=\t-fno-omit-frame-pointer -fno-optimize-sibling-calls\n CFLAGS\t\t+=\t-mno-save-restore -mstrict-align\n CFLAGS\t\t+=\t-mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)\n@@ -217,7 +217,7 @@ CPPFLAGS\t+=\t$(GENFLAGS)\n CPPFLAGS\t+=\t$(platform-cppflags-y)\n CPPFLAGS\t+=\t$(firmware-cppflags-y)\n \n-ASFLAGS\t\t=\t-g -Wall -nostdlib -D__ASSEMBLY__\n+ASFLAGS\t\t=\t-g -Wall -nostdlib -fno-stack-protector -D__ASSEMBLY__\n ASFLAGS\t\t+=\t-fno-omit-frame-pointer -fno-optimize-sibling-calls\n ASFLAGS\t\t+=\t-mno-save-restore -mstrict-align\n ASFLAGS\t\t+=\t-mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)\n@@ -236,7 +236,7 @@ MERGEFLAGS\t+=\t-r\n MERGEFLAGS\t+=\t-b elf$(PLATFORM_RISCV_XLEN)-littleriscv\n MERGEFLAGS\t+=\t-m elf$(PLATFORM_RISCV_XLEN)lriscv\n \n-DTSCPPFLAGS\t=\t$(CPPFLAGS) -nostdinc -nostdlib -fno-builtin -D__DTS__ -x assembler-with-cpp\n+DTSCPPFLAGS\t=\t$(CPPFLAGS) -nostdinc -nostdlib -fno-stack-protector -fno-builtin -D__DTS__ -x assembler-with-cpp\n \n # Setup functions for compilation\n define dynamic_flags\n-- \n2.30.2\n\n"
  },
  {
    "path": "boot/opensbi/Config.in",
    "content": "config BR2_TARGET_OPENSBI\n\tbool \"opensbi\"\n\tdepends on BR2_riscv\n\thelp\n\t  OpenSBI aims to provide an open-source and extensible\n\t  implementation of the RISC-V SBI specification for a platform\n\t  specific firmware (M-mode) and a general purpose OS,\n\t  hypervisor or bootloader (S-mode or HS-mode). OpenSBI\n\t  implementation can be easily extended by RISC-V platform or\n\t  System-on-Chip vendors to fit a particular hadware\n\t  configuration.\n\n\t  https://github.com/riscv/opensbi.git\n\nif BR2_TARGET_OPENSBI\nchoice\n\tprompt \"OpenSBI Version\"\n\thelp\n\t  Select the specific OpenSBI version you want to use\n\nconfig BR2_TARGET_OPENSBI_LATEST_VERSION\n\tbool \"0.9\"\n\nconfig BR2_TARGET_OPENSBI_CUSTOM_VERSION\n\tbool \"Custom version\"\n\thelp\n\t  This option allows to use a specific official versions\n\nconfig BR2_TARGET_OPENSBI_CUSTOM_TARBALL\n\tbool \"Custom tarball\"\n\nconfig BR2_TARGET_OPENSBI_CUSTOM_GIT\n\tbool \"Custom Git repository\"\n\nendchoice\n\nconfig BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE\n\tstring \"OpenSBI version\"\n\tdepends on BR2_TARGET_OPENSBI_CUSTOM_VERSION\n\nconfig BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION\n\tstring \"URL of custom OpenSBI tarball\"\n\tdepends on BR2_TARGET_OPENSBI_CUSTOM_TARBALL\n\nif BR2_TARGET_OPENSBI_CUSTOM_GIT\n\nconfig BR2_TARGET_OPENSBI_CUSTOM_REPO_URL\n\tstring \"URL of custom repository\"\n\nconfig BR2_TARGET_OPENSBI_CUSTOM_REPO_VERSION\n\tstring \"Custom repository version\"\n\thelp\n\t  Revision to use in the typical format used by Git. E.G. a\n\t  sha id, a tag, branch, ..\n\nendif\n\nconfig BR2_TARGET_OPENSBI_VERSION\n\tstring\n\tdefault \"0.9\"\tif BR2_TARGET_OPENSBI_LATEST_VERSION\n\tdefault BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE \\\n\t\tif BR2_TARGET_OPENSBI_CUSTOM_VERSION\n\tdefault \"custom\"\tif BR2_TARGET_OPENSBI_CUSTOM_TARBALL\n\tdefault BR2_TARGET_OPENSBI_CUSTOM_REPO_VERSION \\\n\t\tif BR2_TARGET_OPENSBI_CUSTOM_GIT\n\nconfig BR2_TARGET_OPENSBI_PLAT\n\tstring \"OpenSBI Platform\"\n\tdefault \"\"\n\thelp\n\t  Specifies the OpenSBI platform to build. If no platform is\n\t  specified only the OpenSBI platform independent static\n\t  library libsbi.a is built. If a platform is specified then\n\t  the platform specific static library libplatsbi.a and firmware\n\t  examples are built.\n\nconfig BR2_TARGET_OPENSBI_INSTALL_DYNAMIC_IMG\n\tbool \"Install fw_dynamic image\"\n\tdefault y if BR2_TARGET_OPENSBI_PLAT != \"\"\n\thelp\n\t  This installs the fw_dynamic image.\n\nconfig BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG\n\tbool \"Install fw_jump image\"\n\tdefault y if BR2_TARGET_OPENSBI_PLAT != \"\"\n\thelp\n\t  This installs the fw_jump image.\n\nconfig BR2_TARGET_OPENSBI_INSTALL_PAYLOAD_IMG\n\tbool \"Install fw_payload image\"\n\thelp\n\t  This option enables the installation of the fw_paylaod\n\t  image.\n\nconfig BR2_TARGET_OPENSBI_LINUX_PAYLOAD\n\tbool \"Include Linux as OpenSBI Payload\"\n\tdepends on BR2_TARGET_OPENSBI_PLAT != \"\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_LINUX_KERNEL_IMAGE\n\tselect BR2_TARGET_OPENSBI_INSTALL_PAYLOAD_IMG\n\thelp\n\t  Build OpenSBI with the Linux kernel as a Payload.\n\nconfig BR2_TARGET_OPENSBI_UBOOT_PAYLOAD\n\tbool \"Include U-Boot as OpenSBI Payload\"\n\tdepends on BR2_TARGET_OPENSBI_PLAT != \"\"\n\tdepends on BR2_TARGET_UBOOT\n\tselect BR2_TARGET_OPENSBI_INSTALL_PAYLOAD_IMG\n\thelp\n\t  Build OpenSBI with the U-Boot as a Payload.\n\nconfig BR2_TARGET_OPENSBI_FW_FDT_PATH\n\tbool \"Include U-Boot DTB in OpenSBI Payload\"\n\tdepends on BR2_TARGET_OPENSBI_UBOOT_PAYLOAD\n\tselect BR2_TARGET_UBOOT_FORMAT_DTB\n\thelp\n\t  Build OpenSBI with FW_FDT_PATH set to\n\t  $(BINARIES_DIR)/u-boot.dtb. Note that CONFIG_OF_SEPARATE\n\t  must be set in the U-Boot configuration for this file to be\n\t  produced.\n\nendif\n"
  },
  {
    "path": "boot/opensbi/opensbi.hash",
    "content": "# locally computed\nsha256  60f995cb3cd03e3cf5e649194d3395d0fe67499fd960a36cf7058a4efde686f0  opensbi-0.9.tar.gz\nsha256  82d13fb1bf6bb162629deeea9eb9c117e74548d3b707e478967691fe79a68e21  COPYING.BSD\n"
  },
  {
    "path": "boot/opensbi/opensbi.mk",
    "content": "################################################################################\n#\n# opensbi\n#\n################################################################################\n\nOPENSBI_VERSION = $(call qstrip,$(BR2_TARGET_OPENSBI_VERSION))\n\nifeq ($(OPENSBI_VERSION),custom)\n# Handle custom OpenSBI tarballs as specified by the configuration\nOPENSBI_TARBALL = $(call qstrip,$(BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION))\nOPENSBI_SITE = $(patsubst %/,%,$(dir $(OPENSBI_TARBALL)))\nOPENSBI_SOURCE = $(notdir $(OPENSBI_TARBALL))\nelse ifeq ($(BR2_TARGET_OPENSBI_CUSTOM_GIT),y)\nOPENSBI_SITE = $(call qstrip,$(BR2_TARGET_OPENSBI_CUSTOM_REPO_URL))\nOPENSBI_SITE_METHOD = git\nelse\n# Handle official OpenSBI versions\nOPENSBI_SITE = $(call github,riscv,opensbi,v$(OPENSBI_VERSION))\nendif\n\nOPENSBI_LICENSE = BSD-2-Clause\nifeq ($(BR2_TARGET_OPENSBI_LATEST_VERSION),y)\nOPENSBI_LICENSE_FILES = COPYING.BSD\nendif\nOPENSBI_INSTALL_TARGET = NO\nOPENSBI_INSTALL_STAGING = YES\n\nifeq ($(BR2_TARGET_OPENSBI)$(BR2_TARGET_OPENSBI_LATEST_VERSION),y)\nBR_NO_CHECK_HASH_FOR += $(OPENSBI_SOURCE)\nendif\n\nOPENSBI_MAKE_ENV = \\\n\tCROSS_COMPILE=$(TARGET_CROSS)\n\nOPENSBI_PLAT = $(call qstrip,$(BR2_TARGET_OPENSBI_PLAT))\nifneq ($(OPENSBI_PLAT),)\nOPENSBI_MAKE_ENV += PLATFORM=$(OPENSBI_PLAT)\nendif\n\nifeq ($(BR2_TARGET_OPENSBI_LINUX_PAYLOAD),y)\nOPENSBI_DEPENDENCIES += linux\nOPENSBI_MAKE_ENV += FW_PAYLOAD_PATH=\"$(BINARIES_DIR)/Image\"\nendif\n\nifeq ($(BR2_TARGET_OPENSBI_UBOOT_PAYLOAD),y)\nOPENSBI_DEPENDENCIES += uboot\nOPENSBI_MAKE_ENV += FW_PAYLOAD_PATH=\"$(BINARIES_DIR)/u-boot.bin\"\nifeq ($(BR2_TARGET_OPENSBI_FW_FDT_PATH),y)\nOPENSBI_MAKE_ENV += FW_FDT_PATH=\"$(BINARIES_DIR)/u-boot.dtb\"\nendif\nendif\n\ndefine OPENSBI_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(OPENSBI_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\nifeq ($(BR2_TARGET_OPENSBI_INSTALL_DYNAMIC_IMG),y)\nOPENSBI_INSTALL_IMAGES = YES\nOPENSBI_FW_IMAGES += dynamic\nendif\n\nifeq ($(BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG),y)\nOPENSBI_INSTALL_IMAGES = YES\nOPENSBI_FW_IMAGES += jump\nendif\n\nifeq ($(BR2_TARGET_OPENSBI_INSTALL_PAYLOAD_IMG),y)\nOPENSBI_INSTALL_IMAGES = YES\nOPENSBI_FW_IMAGES += payload\nendif\n\ndefine OPENSBI_INSTALL_IMAGES_CMDS\n\t$(foreach f,$(OPENSBI_FW_IMAGES),\\\n\t\t$(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_$(f).bin \\\n\t\t\t$(BINARIES_DIR)/fw_$(f).bin\n\t\t$(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_$(f).elf \\\n\t\t\t$(BINARIES_DIR)/fw_$(f).elf\n\t)\nendef\n\n# libsbi.a is not a library meant to be linked in user-space code, but\n# with bare metal code, which is why we don't install it in\n# $(STAGING_DIR)/usr/lib\ndefine OPENSBI_INSTALL_STAGING_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/build/lib/libsbi.a $(STAGING_DIR)/usr/share/opensbi/libsbi.a\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/optee-os/3.13.0/0001-core-zlib-fix-build-warning-when-_LFS64_LARGEFILE-is.patch",
    "content": "From 82becbadd5918ed7ad3c2b651ce479084b5feb2a Mon Sep 17 00:00:00 2001\nFrom: Etienne Carriere <etienne.carriere@linaro.org>\nDate: Mon, 10 May 2021 15:58:41 +0200\nSubject: core: zlib: fix build warning when _LFS64_LARGEFILE is not defined\n\nIn zlib, _LFS64_LARGEFILE is expected to be a boolean directive, either\n1 (true) or 0 (false). Depending on toolchain version and directives\nbuild may produces warnings (as shown below with gcc 9.3) when the macro\nis not defined hence this change to default it to value 0 (false).\n\ncore/lib/zlib/zutil.h:196:39: warning: \"_LFS64_LARGEFILE\" is not defined, evaluates to 0 [-Wundef]\n  196 |     (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)\n      |                                       ^~~~~~~~~~~~~~~~\nIn file included from core/lib/zlib/adler32.c:9:\ncore/lib/zlib/zutil.h:196:39: warning: \"_LFS64_LARGEFILE\" is not defined, evaluates to 0 [-Wundef]\n  196 |     (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)\n      |                                       ^~~~~~~~~~~~~~~~\n  CC      out/core/lib/zlib/zutil.o\nIn file included from core/lib/zlib/inftrees.c:7:\ncore/lib/zlib/zutil.h:196:39: warning: \"_LFS64_LARGEFILE\" is not defined, evaluates to 0 [-Wundef]\n  196 |     (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)\n      |                                       ^~~~~~~~~~~~~~~~\nIn file included from core/lib/zlib/inflate.c:84:\ncore/lib/zlib/zutil.h:196:39: warning: \"_LFS64_LARGEFILE\" is not defined, evaluates to 0 [-Wundef]\n  196 |     (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)\n      |                                       ^~~~~~~~~~~~~~~~\nIn file included from core/lib/zlib/zutil.c:9:\ncore/lib/zlib/zutil.h:196:39: warning: \"_LFS64_LARGEFILE\" is not defined, evaluates to 0 [-Wundef]\n  196 |     (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)\n      |                                       ^~~~~~~~~~~~~~~~\n\nSigned-off-by: Etienne Carriere <etienne.carriere@linaro.org>\nReviewed-by: Jens Wiklander <jens.wiklander@linaro.org>\n---\n core/lib/zlib/zconf.h | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/core/lib/zlib/zconf.h b/core/lib/zlib/zconf.h\nindex 0bca18be..a7d13741 100644\n--- a/core/lib/zlib/zconf.h\n+++ b/core/lib/zlib/zconf.h\n@@ -487,6 +487,11 @@ typedef uLong FAR uLongf;\n #  endif\n #endif\n \n+/* Other places expect _LFS64_LARGEFILE to be defined with a valid value */\n+#ifndef _LFS64_LARGEFILE\n+#define _LFS64_LARGEFILE\t0\n+#endif\n+\n #if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0\n #  define Z_LFS64\n #endif\n-- \n2.17.1\n\n"
  },
  {
    "path": "boot/optee-os/Config.in",
    "content": "config BR2_TARGET_OPTEE_OS\n\tbool \"optee_os\"\n\tdepends on BR2_ARM_CPU_ARMV8A || BR2_ARM_CPU_ARMV7A\n\thelp\n\t  OP-TEE OS provides the secure world boot image and the trust\n\t  application development kit of the OP-TEE project. OP-TEE OS\n\t  also provides generic trusted application one can embedded\n\t  into its system.\n\n\t  http://github.com/OP-TEE/optee_os\n\nif BR2_TARGET_OPTEE_OS\n\nchoice\n\tprompt \"OP-TEE OS version\"\n\tdefault BR2_TARGET_OPTEE_OS_LATEST\n\thelp\n\t  Select the version of OP-TEE OS you want to use\n\nconfig BR2_TARGET_OPTEE_OS_LATEST\n\tbool \"3.15.0\"\n\thelp\n\t  Use the latest release tag from the OP-TEE OS official Git\n\t  repository.\n\nconfig BR2_TARGET_OPTEE_OS_CUSTOM_GIT\n\tbool \"Custom Git repository\"\n\thelp\n\t  Use a custom version fetched from a Git repository.\n\nendchoice\n\nif BR2_TARGET_OPTEE_OS_CUSTOM_GIT\n\nconfig BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL\n\tstring \"URL of custom repository\"\n\tdepends on BR2_TARGET_OPTEE_OS_CUSTOM_GIT\n\thelp\n\t  Specific location of the reference source tree Git\n\t  repository.\n\nconfig BR2_TARGET_OPTEE_OS_CUSTOM_REPO_VERSION\n\tstring \"Custom repository version\"\n\tdepends on BR2_TARGET_OPTEE_OS_CUSTOM_GIT\n\thelp\n\t  Revision to use in the typical format used by Git, i.e a\n\t  SHA1 or a tag.\n\nendif\n\nconfig BR2_TARGET_OPTEE_OS_VERSION\n\tstring\n\tdefault \"3.15.0\"\tif BR2_TARGET_OPTEE_OS_LATEST\n\tdefault BR2_TARGET_OPTEE_OS_CUSTOM_REPO_VERSION \\\n\t\t\t\tif BR2_TARGET_OPTEE_OS_CUSTOM_GIT\n\nconfig BR2_TARGET_OPTEE_OS_CORE\n\tbool \"Build core\"\n\tdefault y\n\thelp\n\t  This option will build and install the OP-TEE core\n\t  boot images.\n\nconfig BR2_TARGET_OPTEE_OS_SDK\n\tbool \"Build TA devkit\"\n\tdefault y\n\thelp\n\t  This option will build and install the OP-TEE development\n\t  kit for building OP-TEE trusted application images. It is\n\t  installed in the staging directory /lib/optee.\n\nconfig BR2_TARGET_OPTEE_OS_SERVICES\n\tbool \"Build service TAs and libs\"\n\tdefault y\n\tselect BR2_TARGET_OPTEE_OS_CORE\n\thelp\n\t  This option installs the service trusted applications and\n\t  trusted shared libraries built from OP-TEE OS source tree.\n\t  These are installed in target /lib/optee_armtz directory\n\t  as other trusted applications. At runtime OP-TEE OS can\n\t  load these from this non-secure filesystem/directory into\n\t  the secure world for execution.\n\nconfig BR2_TARGET_OPTEE_OS_PLATFORM\n\tstring \"Target platform (mandatory)\"\n\thelp\n\t  Value for the mandated PLATFORM build directive provided to\n\t  OP-TEE OS.\n\nconfig BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR\n\tstring \"Target platform flavor (optional)\"\n\thelp\n\t  Value for the optional PLATFORM_FLAVOR build directive\n\t  provided to OP-TEE OS.\n\nconfig BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES\n\tstring \"Additional build variables\"\n\thelp\n\t  Additional parameters for the OP-TEE OS build\n\t  E.g. 'CFG_TEE_CORE_LOG_LEVEL=3 CFG_UNWIND=y'\n\nconfig BR2_TARGET_OPTEE_OS_CORE_IMAGES\n\tstring \"Binary boot images\"\n\tdefault \"tee.bin tee-*_v2.bin\"\n\thelp\n\t  Names of generated image files that are installed in the\n\t  output images/ directory.\n\nendif # BR2_TARGET_OPTEE_OS\n"
  },
  {
    "path": "boot/optee-os/optee-os.hash",
    "content": "# From https://github.com/OP-TEE/optee_os/archive/3.15.0/optee-os-3.15.0.tar.gz\nsha256 e5bb3d9eedaf7785af091602addac5b52118f4cdc108af9cd6f6c96b21503ab8  optee-os-3.15.0.tar.gz\n# Locally computed\nsha256 1247ee90858f4037b6cac63cbffddfed435d0d73c631b37d78c1e6e6ab3e5d1a  LICENSE\n"
  },
  {
    "path": "boot/optee-os/optee-os.mk",
    "content": "################################################################################\n#\n# optee-os\n#\n################################################################################\n\nOPTEE_OS_VERSION = $(call qstrip,$(BR2_TARGET_OPTEE_OS_VERSION))\nOPTEE_OS_LICENSE = BSD-2-Clause\nifeq ($(BR2_TARGET_OPTEE_OS_LATEST),y)\nOPTEE_OS_LICENSE_FILES = LICENSE\nendif\n\nOPTEE_OS_INSTALL_STAGING = YES\nOPTEE_OS_INSTALL_IMAGES = YES\n\nifeq ($(BR2_TARGET_OPTEE_OS_CUSTOM_GIT),y)\nOPTEE_OS_SITE = $(call qstrip,$(BR2_TARGET_OPTEE_OS_CUSTOM_REPO_URL))\nOPTEE_OS_SITE_METHOD = git\nBR_NO_CHECK_HASH_FOR += $(OPTEE_OS_SOURCE)\nelse\nOPTEE_OS_SITE = $(call github,OP-TEE,optee_os,$(OPTEE_OS_VERSION))\nendif\n\nOPTEE_OS_DEPENDENCIES = host-openssl host-python3 host-python3-pycryptodomex host-python3-pyelftools\n\n# On 64bit targets, OP-TEE OS can be built in 32bit mode, or\n# can be built in 64bit mode and support 32bit and 64bit\n# trusted applications. Since buildroot currently references\n# a single cross compiler, build exclusively in 32bit\n# or 64bit mode.\nOPTEE_OS_MAKE_OPTS = \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tCROSS_COMPILE_core=\"$(TARGET_CROSS)\" \\\n\tCROSS_COMPILE_ta_arm64=\"$(TARGET_CROSS)\" \\\n\tCROSS_COMPILE_ta_arm32=\"$(TARGET_CROSS)\" \\\n\tPYTHON3=\"$(HOST_DIR)/bin/python3\"\n\nifeq ($(BR2_aarch64),y)\nOPTEE_OS_MAKE_OPTS += \\\n\tCFG_ARM64_core=y \\\n\tCFG_USER_TA_TARGETS=ta_arm64\nelse\nOPTEE_OS_MAKE_OPTS += \\\n\tCFG_ARM32_core=y\nendif\n\n# Get mandatory PLAFORM and optional PLATFORM_FLAVOR and additional\n# variables\nOPTEE_OS_MAKE_OPTS += PLATFORM=$(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM))\nifneq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR)),)\nOPTEE_OS_MAKE_OPTS += PLATFORM_FLAVOR=$(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM_FLAVOR))\nendif\nOPTEE_OS_MAKE_OPTS += $(call qstrip,$(BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES))\n\n# Requests OP-TEE OS to build from subdirectory out/ of its sourcetree\n# root path otherwise the output directory path depends on the target\n# platform name.\nOPTEE_OS_BUILDDIR_OUT = out\nifeq ($(BR2_aarch64),y)\nOPTEE_OS_LOCAL_SDK = $(OPTEE_OS_BUILDDIR_OUT)/export-ta_arm64\nOPTEE_OS_SDK = $(STAGING_DIR)/lib/optee/export-ta_arm64\nendif\nifeq ($(BR2_arm),y)\nOPTEE_OS_LOCAL_SDK = $(OPTEE_OS_BUILDDIR_OUT)/export-ta_arm32\nOPTEE_OS_SDK = $(STAGING_DIR)/lib/optee/export-ta_arm32\nendif\n\nOPTEE_OS_IMAGE_FILES = $(call qstrip,$(BR2_TARGET_OPTEE_OS_CORE_IMAGES))\n\nifeq ($(BR2_TARGET_OPTEE_OS_CORE),y)\ndefine OPTEE_OS_BUILD_CORE\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) O=$(OPTEE_OS_BUILDDIR_OUT) \\\n\t\t$(TARGET_CONFIGURE_OPTS) $(OPTEE_OS_MAKE_OPTS) all\nendef\ndefine OPTEE_OS_INSTALL_IMAGES_CORE\n\tmkdir -p $(BINARIES_DIR)\n\t$(foreach f,$(OPTEE_OS_IMAGE_FILES), \\\n\t\tcp -dpf $(wildcard $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/core/$(f)) $(BINARIES_DIR)/\n\t)\nendef\nendif # BR2_TARGET_OPTEE_OS_CORE\n\nifeq ($(BR2_TARGET_OPTEE_OS_SERVICES),y)\ndefine OPTEE_OS_INSTALL_TARGET_CMDS\n\t$(if $(wildcard $(@D)/$(OPTEE_OS_BUILDDIR_OUT)/ta/*/*.ta),\n\t\t$(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz \\\n\t\t\t$(@D)/$(OPTEE_OS_BUILDDIR_OUT)/ta/*/*.ta)\n\t$(if $(wildcard $(@D)/$(OPTEE_OS_LOCAL_SDK)/lib/*.ta),\n\t\t$(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz \\\n\t\t\t$(@D)/$(OPTEE_OS_LOCAL_SDK)/lib/*.ta)\nendef\nendif # BR2_TARGET_OPTEE_OS_SERVICES\n\nifeq ($(BR2_TARGET_OPTEE_OS_SDK),y)\ndefine OPTEE_OS_BUILD_SDK\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) O=$(OPTEE_OS_BUILDDIR_OUT) \\\n\t\t $(TARGET_CONFIGURE_OPTS) $(OPTEE_OS_MAKE_OPTS) ta_dev_kit\nendef\ndefine OPTEE_OS_INSTALL_STAGING_CMDS\n\tmkdir -p $(OPTEE_OS_SDK)\n\tcp -ardpf $(@D)/$(OPTEE_OS_LOCAL_SDK)/* $(OPTEE_OS_SDK)\nendef\nendif # BR2_TARGET_OPTEE_OS_SDK\n\ndefine OPTEE_OS_BUILD_CMDS\n\t$(OPTEE_OS_BUILD_CORE)\n\t$(OPTEE_OS_BUILD_SDK)\nendef\n\ndefine OPTEE_OS_INSTALL_IMAGES_CMDS\n\t$(OPTEE_OS_INSTALL_IMAGES_CORE)\n\t$(OPTEE_OS_INSTALL_IMAGES_SERVICES)\nendef\n\nifeq ($(BR2_TARGET_OPTEE_OS)$(BR_BUILDING),yy)\nifeq ($(call qstrip,$(BR2_TARGET_OPTEE_OS_PLATFORM)),)\n$(error No OP-TEE OS platform set. Check your BR2_TARGET_OPTEE_OS_PLATFORM setting)\nendif\nendif # BR2_TARGET_OPTEE_OS && BR2_BUILDING\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/s500-bootloader/Config.in",
    "content": "config BR2_TARGET_S500_BOOTLOADER\n\tbool \"s500-bootloader\"\n\tdepends on BR2_arm\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tselect BR2_HOSTARCH_NEEDS_IA32_LIBS\n\thelp\n\t  1st level bootloader for Actions Semiconductor S500 SoC.\n\n\t  https://github.com/xapp-le/owl\n\nconfig BR2_TARGET_S500_BOOTLOADER_BOARD\n\tstring \"board to configure for\"\n\tdepends on BR2_TARGET_S500_BOOTLOADER\n\thelp\n\t  Specify the board to configure the bootloader for.\n\t  This should be the name of a directory under s500/boards\n\t  containing a suitable bootloader.ini file.\n"
  },
  {
    "path": "boot/s500-bootloader/s500-bootloader.hash",
    "content": "# Locally calculated\nsha256 b183024ac69f51ea7befd28d03b2ec35a7280e270405600fb4f37aa91d9c9571  s500-bootloader-a8d7fa1d9a7f353ec4613febf30f4ca99a10a106.tar.gz\n"
  },
  {
    "path": "boot/s500-bootloader/s500-bootloader.mk",
    "content": "################################################################################\n#\n# s500-bootloader\n#\n################################################################################\n\nS500_BOOTLOADER_VERSION = a8d7fa1d9a7f353ec4613febf30f4ca99a10a106\nS500_BOOTLOADER_SITE = $(call github,xapp-le,owl,$(S500_BOOTLOADER_VERSION))\nS500_BOOTLOADER_LICENSE = PROPRIETARY\nS500_BOOTLOADER_INSTALL_TARGET = NO\nS500_BOOTLOADER_INSTALL_IMAGES = YES\n\nS500_BOOTLOADER_BOARD = $(call qstrip,$(BR2_TARGET_S500_BOOTLOADER_BOARD))\n\ndefine S500_BOOTLOADER_BUILD_CMDS\n\tcd $(@D) && ./tools/utils/bootloader_pack \\\n\t\ts500/bootloader/bootloader.bin \\\n\t\ts500/boards/$(S500_BOOTLOADER_BOARD)/bootloader.ini \\\n\t\ts500-bootloader.bin\nendef\n\ndefine S500_BOOTLOADER_INSTALL_IMAGES_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/s500-bootloader.bin \\\n\t\t$(BINARIES_DIR)/s500-bootloader.bin\nendef\n\n$(eval $(generic-package))\n\nifeq ($(BR2_TARGET_S500_BOOTLOADER)$(BR_BUILDING),yy)\n# we NEED a board name\nifeq ($(S500_BOOTLOADER_BOARD),)\n$(error No s500-bootloader board specified. Check your BR2_TARGET_S500_BOOTLOADER settings)\nendif\nendif\n"
  },
  {
    "path": "boot/shim/Config.in",
    "content": "config BR2_TARGET_SHIM\n\tbool \"shim\"\n\t# it includes gnu-efi\n\tdepends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS\n\thelp\n\t  Boot loader to chain-load signed boot loaders under Secure\n\t  Boot.\n\n\t  This package provides a minimalist boot loader which allows\n\t  verifying signatures of other UEFI binaries against either\n\t  the Secure Boot DB/DBX or against a built-in signature\n\t  database.  Its purpose is to allow a small,\n\t  infrequently-changing binary to be signed by the UEFI CA,\n\t  while allowing an OS distributor to revision their main\n\t  bootloader independently of the CA.\n\n\t  https://github.com/rhboot/shim\n"
  },
  {
    "path": "boot/shim/shim.hash",
    "content": "# locally computed hash\nsha256 8344473dd10569588b8238a4656b8fab226714eea9f5363f8c410aa8a5090297  shim-15.4.tar.bz2\nsha256 15edf527919ddcb2f514ab9d16ad07ef219e4bb490e0b79560be510f0c159cc2  COPYRIGHT\n"
  },
  {
    "path": "boot/shim/shim.mk",
    "content": "################################################################################\n#\n# shim\n#\n################################################################################\n\nSHIM_VERSION = 15.4\nSHIM_SITE = https://github.com/rhboot/shim/releases/download/$(SHIM_VERSION)\nSHIM_SOURCE = shim-$(SHIM_VERSION).tar.bz2\nSHIM_LICENSE = BSD-2-Clause\nSHIM_LICENSE_FILES = COPYRIGHT\nSHIM_CPE_ID_VENDOR = redhat\nSHIM_INSTALL_TARGET = NO\nSHIM_INSTALL_IMAGES = YES\n\nSHIM_MAKE_OPTS = \\\n\tARCH=\"$(GNU_EFI_PLATFORM)\" \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tDASHJ=\"-j$(PARALLEL_JOBS)\"\n\ndefine SHIM_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(SHIM_MAKE_OPTS)\nendef\n\ndefine SHIM_INSTALL_IMAGES_CMDS\n\t$(INSTALL) -m 0755 -t $(BINARIES_DIR) $(@D)/*.efi\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/sun20i-d1-spl/Config.in",
    "content": "config BR2_TARGET_SUN20I_D1_SPL\n\tbool \"sun20-d1-spl\"\n\tdepends on BR2_RISCV_64\n\thelp\n\t  Allwinner D1 boot0 code with modifications to use as U-Boot\n\t  SPL.\n\n\t  https://github.com/smaeul/sun20i_d1_spl\n"
  },
  {
    "path": "boot/sun20i-d1-spl/sun20i-d1-spl.hash",
    "content": "# Locally computed\nsha256  69063601239a7254fb72e486b138d88a6f2b5c645b24cdfe9792123f975d4a8f  sun20i-d1-spl-771192d0b3737798d7feca87263c8fa74a449787.tar.gz\n"
  },
  {
    "path": "boot/sun20i-d1-spl/sun20i-d1-spl.mk",
    "content": "################################################################################\n#\n# sun20i-d1-spl\n#\n################################################################################\n\n# Commit on the 'mainline' branch\nSUN20I_D1_SPL_VERSION = 771192d0b3737798d7feca87263c8fa74a449787\nSUN20I_D1_SPL_SITE = $(call github,smaeul,sun20i_d1_spl,$(SUN20I_D1_SPL_VERSION))\nSUN20I_D1_SPL_INSTALL_TARGET = NO\nSUN20I_D1_SPL_INSTALL_IMAGES = YES\nSUN20I_D1_SPL_LICENSE = GPL-2.0+\n\ndefine SUN20I_D1_SPL_BUILD_CMDS\n\t$(MAKE) -C $(@D) CROSS_COMPILE=\"$(TARGET_CROSS)\" p=sun20iw1p1 mmc\nendef\n\ndefine SUN20I_D1_SPL_INSTALL_IMAGES_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/nboot/boot0_sdcard_sun20iw1p1.bin \\\n\t\t$(BINARIES_DIR)/boot0_sdcard_sun20iw1p1.bin\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/syslinux/0001-bios-Fix-alignment-change-with-gcc-5.patch",
    "content": "From da5cbd1a3b248f2d32281a1766a3d1414c0e8e03 Mon Sep 17 00:00:00 2001\nFrom: Sylvain Gault <sylvain.gault@gmail.com>\nDate: Tue, 29 Sep 2015 02:38:25 +0200\nSubject: [PATCH] bios: Fix alignment change with gcc 5\n\nThe section aligment specified in the ld scripts have to be greater or\nequal to those in the .o files generated by gcc.\n\nSigned-off-by: Sylvain Gault <sylvain.gault@gmail.com>\nTested-by: poma <pomidorabelisima@gmail.com>\nSigned-off-by: Paulo Alcantara <pcacjr@zytor.com>\nSigned-off-by: Frank Hunleth <fhunleth@troodon-software.com>\n---\n core/i386/syslinux.ld   | 6 +++---\n core/x86_64/syslinux.ld | 6 +++---\n 2 files changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld\nindex 7b4e012..7390451 100644\n--- a/core/i386/syslinux.ld\n+++ b/core/i386/syslinux.ld\n@@ -266,7 +266,7 @@ SECTIONS\n \t\t__text_end = .;\n \t}\n \n-\t. = ALIGN(16);\n+\t. = ALIGN(32);\n \n \t__rodata_vma = .;\n \t__rodata_lma = __rodata_vma + __text_lma - __text_vma;\n@@ -361,7 +361,7 @@ SECTIONS\n \t\t__dynamic_end = .;\n \t}\n \n-\t. = ALIGN(16);\n+\t. = ALIGN(32);\n \n \t__data_vma = .;\n \t__data_lma = __data_vma + __text_lma - __text_vma;\n@@ -377,7 +377,7 @@ SECTIONS\n \t__pm_code_dwords = (__pm_code_len + 3) >> 2;\n \n \t. = ALIGN(128);\n-\t\n+\n \t__bss_vma = .;\n \t__bss_lma = .;\t\t/* Dummy */\n \t.bss (NOLOAD) : AT (__bss_lma) {\ndiff --git a/core/x86_64/syslinux.ld b/core/x86_64/syslinux.ld\nindex 1057112..bf815c4 100644\n--- a/core/x86_64/syslinux.ld\n+++ b/core/x86_64/syslinux.ld\n@@ -266,7 +266,7 @@ SECTIONS\n \t\t__text_end = .;\n \t}\n \n-\t. = ALIGN(16);\n+\t. = ALIGN(32);\n \n \t__rodata_vma = .;\n \t__rodata_lma = __rodata_vma + __text_lma - __text_vma;\n@@ -361,7 +361,7 @@ SECTIONS\n \t\t__dynamic_end = .;\n \t}\n \n-\t. = ALIGN(16);\n+\t. = ALIGN(32);\n \n \t__data_vma = .;\n \t__data_lma = __data_vma + __text_lma - __text_vma;\n@@ -377,7 +377,7 @@ SECTIONS\n \t__pm_code_dwords = (__pm_code_len + 3) >> 2;\n \n \t. = ALIGN(128);\n-\t\n+\n \t__bss_vma = .;\n \t__bss_lma = .;\t\t/* Dummy */\n \t.bss (NOLOAD) : AT (__bss_lma) {\n-- \n2.7.4\n\n"
  },
  {
    "path": "boot/syslinux/0002-Disable-PIE-to-avoid-FTBFS-on-amd64.patch",
    "content": "From 250bf2c921713434627dc7bc8b0918fa0841f9b7 Mon Sep 17 00:00:00 2001\nFrom: Graham Inggs <ginggs@ubuntu.com>\nDate: Wed, 5 Apr 2017 22:03:12 +0200\nSubject: [PATCH] Disable PIE to avoid FTBFS on amd64\n\ngcc 6.x has PIE support enabled by default, which causes a build issue\nwith syslinux. This patch disables PIE support in the relevant\nsyslinux Makefile.\n\nSigned-off-by: Ryan Coe <bluemrp9@gmail.com>\n---\n gpxe/src/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/gpxe/src/Makefile b/gpxe/src/Makefile\nindex cc91d78..077af64 100644\n--- a/gpxe/src/Makefile\n+++ b/gpxe/src/Makefile\n@@ -4,7 +4,7 @@\n #\n \n CLEANUP\t\t:=\n-CFLAGS\t\t:=\n+CFLAGS\t\t:= -fno-PIE\n ASFLAGS\t\t:=\n LDFLAGS\t\t:=\n MAKEDEPS\t:= Makefile\n-- \n2.7.4\n\n"
  },
  {
    "path": "boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch",
    "content": "From c0287594239d5af2082cac20817f8e8b11a4b1b2 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Beno=C3=AEt=20Allard?= <benoit.allard@greenbone.net>\nDate: Wed, 5 Apr 2017 14:18:09 +0200\nSubject: [PATCH] memdisk: Force ld output format to 32-bits\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nOn toolchains where the default output is x86_64, we need to be\nconsistent with the other .o files\n\nSigned-off-by: Benoît Allard <benoit.allard@greenbone.net>\n---\n memdisk/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/memdisk/Makefile b/memdisk/Makefile\nindex e6557d8..06613ff 100644\n--- a/memdisk/Makefile\n+++ b/memdisk/Makefile\n@@ -78,7 +78,7 @@ memdisk16.o: memdisk16.asm\n \t$(NASM) -f bin $(NASMOPT) $(NFLAGS) $(NINCLUDE) -o $@ -l $*.lst $<\n \n memdisk_%.o: memdisk_%.bin\n-\t$(LD) -r -b binary -o $@ $<\n+\t$(LD) --oformat elf32-i386 -r -b binary -o $@ $<\n \n memdisk16.elf: $(OBJS16)\n \t$(LD) -Ttext 0 -o $@ $^\n-- \n2.7.4\n\n"
  },
  {
    "path": "boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch",
    "content": "From e000251144056c99e390a2a4449d06cbd2a19c0a Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Beno=C3=AEt=20Allard?= <benoit.allard@greenbone.net>\nDate: Wed, 5 Apr 2017 14:25:02 +0200\nSubject: [PATCH] utils: Use the host toolchain to build.\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe utilities are meant to run on the host machine, hence must be built using\nthe host toolchain.\n\nSigned-off-by: Benoît Allard <benoit.allard@greenbone.net>\n---\n utils/Makefile | 12 ++++++------\n 1 file changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/utils/Makefile b/utils/Makefile\nindex dfe6259..ac91aaa 100644\n--- a/utils/Makefile\n+++ b/utils/Makefile\n@@ -17,8 +17,8 @@\n VPATH = $(SRC)\n include $(MAKEDIR)/syslinux.mk\n \n-CFLAGS   = $(GCCWARN) -Os -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -I$(SRC)\n-LDFLAGS  = -O2\n+CFLAGS   = $(CFLAGS_FOR_BUILD) $(GCCWARN) -Os -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -I$(SRC)\n+LDFLAGS  = $(LDFLAGS_FOR_BUILD) -O2\n \n C_TARGETS\t = isohybrid gethostip memdiskfind\n SCRIPT_TARGETS\t = mkdiskimage\n@@ -35,7 +35,7 @@ ISOHDPFX = $(addprefix $(OBJ)/,../mbr/isohdpfx.bin ../mbr/isohdpfx_f.bin \\\n all: $(TARGETS)\n \n %.o: %.c\n-\t$(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $<\n+\t$(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $<\n \n mkdiskimage: mkdiskimage.in ../mbr/mbr.bin bin2hex.pl\n \t$(PERL) $(SRC)/bin2hex.pl < $(OBJ)/../mbr/mbr.bin | cat $(SRC)/mkdiskimage.in - > $@\n@@ -51,13 +51,13 @@ isohdpfx.c: $(ISOHDPFX) isohdpfxarray.pl\n \t$(PERL) $(SRC)/isohdpfxarray.pl $(ISOHDPFX) > $@\n \n isohybrid: isohybrid.o isohdpfx.o\n-\t$(CC) $(LDFLAGS) -o $@ $^ -luuid\n+\t$(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ -luuid\n \n gethostip: gethostip.o\n-\t$(CC) $(LDFLAGS) -o $@ $^\n+\t$(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^\n \n memdiskfind: memdiskfind.o\n-\t$(CC) $(LDFLAGS) -o $@ $^\n+\t$(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^\n \n tidy dist:\n \trm -f *.o .*.d isohdpfx.c\n-- \n2.1.4\n\n"
  },
  {
    "path": "boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch",
    "content": "From 83e1f00990c25554723609bb549e18b987034317 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Beno=C3=AEt=20Allard?= <benoit.allard@greenbone.net>\nDate: Thu, 6 Apr 2017 09:43:46 +0200\nSubject: [PATCH] lzo: Use the host toolchain for prepcore\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSigned-off-by: Benoît Allard <benoit.allard@greenbone.net>\n---\n lzo/Makefile | 7 +++++--\n 1 file changed, 5 insertions(+), 2 deletions(-)\n\ndiff --git a/lzo/Makefile b/lzo/Makefile\nindex 29f1fa6..c016e5a 100644\n--- a/lzo/Makefile\n+++ b/lzo/Makefile\n@@ -11,10 +11,13 @@\n ## -----------------------------------------------------------------------\n \n VPATH = $(SRC)\n-include $(MAKEDIR)/build.mk\n+include $(MAKEDIR)/syslinux.mk\n \n INCLUDES += -I$(SRC)/include\n \n+%.o: %.c\n+\t$(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS_FOR_BUILD) $(INCLUDES) -c -o $@ $<\n+\n LIBOBJS = $(patsubst %.c,%.o,$(subst $(SRC)/,,$(wildcard $(SRC)/src/*.c)))\n LIB     = lzo.a\n BINS    = prepcore\n@@ -30,7 +33,7 @@ $(LIB) : $(LIBOBJS)\n \t$(RANLIB) $@\n \n prepcore : prepcore.o $(LIB)\n-\t$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)\n+\t$(CC_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ $^ $(LIBS)\n \n tidy dist clean spotless:\n \trm -f $(BINS)\n-- \n2.1.4\n\n"
  },
  {
    "path": "boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch",
    "content": "From 39274503292a6003b1b0c93f694e34f11e85ea44 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Beno=C3=AEt=20Allard?= <benoit.allard@greenbone.net>\nDate: Fri, 9 Jun 2017 11:55:14 +0200\nSubject: [PATCH] The VPrint definition is now part of the exports of\n gnu-efi\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSigned-off-by: Benoît Allard <benoit.allard@greenbone.net>\n---\n efi/fio.h | 9 ---------\n 1 file changed, 9 deletions(-)\n\ndiff --git a/efi/fio.h b/efi/fio.h\nindex 65fff8d..a1bfe68 100644\n--- a/efi/fio.h\n+++ b/efi/fio.h\n@@ -11,15 +11,6 @@\n #define MAX_EFI_ARGS\t\t64\n #define WS(c16)         (c16 == L' ' || c16 == CHAR_TAB)\n \n-/* VPrint is not in export declarations in gnu-efi lib yet\n- * although it is a global function; declare it here\n- */\n-extern UINTN\n-VPrint (\n-    IN CHAR16   *fmt,\n-    va_list     args\n-    );\n-\n extern EFI_STATUS efi_errno;\n \n void efi_memcpy(unsigned char *dst, unsigned char *src, size_t len);\n-- \n2.1.4\n\n"
  },
  {
    "path": "boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch",
    "content": "From 3bd5c2d951421a89f76b2423e5810862f53486c1 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Beno=C3=AEt=20Allard?= <benoit.allard@greenbone.net>\nDate: Fri, 9 Jun 2017 11:59:43 +0200\nSubject: [PATCH] Update the longjump calls to fit the new declaration\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSigned-off-by: Benoît Allard <benoit.allard@greenbone.net>\n---\n efi/main.c | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/efi/main.c b/efi/main.c\nindex 208fee4f..71d31a5c 100644\n--- a/efi/main.c\n+++ b/efi/main.c\n@@ -10,7 +10,6 @@\n #include <syslinux/firmware.h>\n #include <syslinux/linux.h>\n #include <sys/ansi.h>\n-#include <setjmp.h>\n \n #include \"efi.h\"\n #include \"fio.h\"\n@@ -30,7 +29,7 @@ uint32_t timer_irq;\n __export uint8_t KbdMap[256];\n char aux_seg[256];\n \n-static jmp_buf load_error_buf;\n+static jmp_buf *load_error_buf;\n \n static inline EFI_STATUS\n efi_close_protocol(EFI_HANDLE handle, EFI_GUID *guid, EFI_HANDLE agent,\n-- \n2.13.3\n\n"
  },
  {
    "path": "boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch",
    "content": "From ca8aaded0c7c3900397029bd9520132b62629308 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Beno=C3=AEt=20Allard?= <benoit.allard@greenbone.net>\nDate: Mon, 12 Jun 2017 14:59:16 +0200\nSubject: [PATCH] efi/wrapper: build it with the host toolchain.\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe wrapper program is executed on the build machine, so it should be\nbuilt with CC_FOR_BUILD.\n\nSigned-off-by: Benoît Allard <benoit.allard@greenbone.net>\n---\n efi/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/efi/Makefile b/efi/Makefile\nindex d5443bd5..d24d16db 100644\n--- a/efi/Makefile\n+++ b/efi/Makefile\n@@ -79,7 +79,7 @@ syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS)\n #\tcp $^ $@\n \n wrapper: wrapper.c\n-\t$(CC) $^ -o $@\n+\t$(CC_FOR_BUILD) $^ -o $@\n \n #\n # Build the wrapper app and wrap our .so to produce a .efi\n-- \n2.13.3\n\n"
  },
  {
    "path": "boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch",
    "content": "From 76946dd67bc856eaf4fe69d0826547a794176f78 Mon Sep 17 00:00:00 2001\nFrom: Sylvain Gault <sylvain.gault@gmail.com>\nDate: Tue, 29 Sep 2015 04:45:09 +0200\nSubject: [PATCH] bios: Don't try to guess the sections alignment\n\nFor the compression / decompression to succeed, the sections layout must\nbe the same between the virtual memory and load memory. The section\nalignment was kept in sync by introducing aligment that should be\ngreater or equal to the actual section alignment.\n\nThis patch compute the load memory addresses of the sections so that\nthe layout is the same as the virtual memory addresses.\n\nSigned-off-by: Sylvain Gault <sylvain.gault@gmail.com>\nTested-by: poma <pomidorabelisima@gmail.com>\nSigned-off-by: Paulo Alcantara <pcacjr@zytor.com>\n\nUpstream: 0cc9a99e560a2f52bcf052fd85b1efae35ee812f\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n---\n core/i386/syslinux.ld   | 63 ++++++++++---------------------------------------\n core/x86_64/syslinux.ld | 63 ++++++++++---------------------------------------\n 2 files changed, 24 insertions(+), 102 deletions(-)\n\ndiff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld\nindex 73904510..92b75b11 100644\n--- a/core/i386/syslinux.ld\n+++ b/core/i386/syslinux.ld\n@@ -255,10 +255,9 @@ SECTIONS\n \t. = 0x100000;\n \n \t__pm_code_start = .;\n+\t__vma_to_lma = __pm_code_lma - __pm_code_start;\n \n-\t__text_vma = .;\n-\t__text_lma = __pm_code_lma;\n-\t.text : AT(__text_lma) {\n+\t.text : AT(ADDR(.text) + __vma_to_lma) {\n \t\tFILL(0x90909090)\n \t\t__text_start = .;\n \t\t*(.text)\n@@ -266,106 +265,68 @@ SECTIONS\n \t\t__text_end = .;\n \t}\n \n-\t. = ALIGN(32);\n-\n-\t__rodata_vma = .;\n-\t__rodata_lma = __rodata_vma + __text_lma - __text_vma;\n-\t.rodata : AT(__rodata_lma) {\n+\t.rodata : AT(ADDR(.rodata) + __vma_to_lma) {\n \t\t__rodata_start = .;\n \t\t*(.rodata)\n \t\t*(.rodata.*)\n \t\t__rodata_end = .;\n \t}\n \n-\t. = ALIGN(4);\n-\n-\t__ctors_vma = .;\n-\t__ctors_lma = __ctors_vma + __text_lma - __text_vma;\n-\t.ctors : AT(__ctors_lma) {\n+\t.ctors : AT(ADDR(.ctors) + __vma_to_lma) {\n \t\t__ctors_start = .;\n \t\tKEEP (*(SORT(.ctors.*)))\n \t\tKEEP (*(.ctors))\n \t\t__ctors_end = .;\n \t}\n \n-\t__dtors_vma = .;\n-\t__dtors_lma = __dtors_vma + __text_lma - __text_vma;\n-\t.dtors : AT(__dtors_lma) {\n+\t.dtors : AT(ADDR(.dtors) + __vma_to_lma) {\n \t\t__dtors_start = .;\n \t\tKEEP (*(SORT(.dtors.*)))\n \t\tKEEP (*(.dtors))\n \t\t__dtors_end = .;\n \t}\n \n-\t. = ALIGN(4);\n-\n-\t__dynsym_vma = .;\n-\t__dynsym_lma = __dynsym_vma + __text_lma - __text_vma;\n-\t.dynsym : AT(__dynsym_lma) {\n+\t.dynsym : AT(ADDR(.dynsym) + __vma_to_lma) {\n \t\t__dynsym_start = .;\n \t\t*(.dynsym)\n \t\t__dynsym_end = .;\n \t}\n \t__dynsym_len = __dynsym_end - __dynsym_start;\n \n-\t. = ALIGN(4);\n-\n-\t__dynstr_vma = .;\n-\t__dynstr_lma = __dynstr_vma + __text_lma - __text_vma;\n-\t.dynstr : AT(__dynstr_lma) {\n+\t.dynstr : AT(ADDR(.dynstr) + __vma_to_lma) {\n \t\t__dynstr_start = .;\n \t\t*(.dynstr)\n \t\t__dynstr_end = .;\n \t}\n \t__dynstr_len = __dynstr_end - __dynstr_start;\n \n-\t. = ALIGN(4);\n-\n-\t__gnu_hash_vma = .;\n-\t__gnu_hash_lma = __gnu_hash_vma + __text_lma - __text_vma;\n-\t.gnu.hash : AT(__gnu_hash_lma) {\n+\t.gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) {\n \t\t__gnu_hash_start = .;\n \t\t*(.gnu.hash)\n \t\t__gnu_hash_end = .;\n \t}\n \n \n-\t. = ALIGN(4);\n-\n-\t__dynlink_vma = .;\n-\t__dynlink_lma = __dynlink_vma + __text_lma - __text_vma;\n-\t.dynlink : AT(__dynlink_lma) {\n+\t.dynlink : AT(ADDR(.dynlink) + __vma_to_lma) {\n \t\t__dynlink_start = .;\n \t\t*(.dynlink)\n \t\t__dynlink_end = .;\n \t}\n \n-\t. = ALIGN(4);\n-\n-\t__got_vma = .;\n-\t__got_lma = __got_vma + __text_lma - __text_vma;\n-\t.got : AT(__got_lma) {\n+\t.got : AT(ADDR(.got) + __vma_to_lma) {\n \t\t__got_start = .;\n \t\tKEEP (*(.got.plt))\n \t\tKEEP (*(.got))\n \t\t__got_end = .;\n \t}\n \n-\t. = ALIGN(4);\n-\n-\t__dynamic_vma = .;\n-\t__dynamic_lma = __dynamic_vma + __text_lma - __text_vma;\n-\t.dynamic : AT(__dynamic_lma) {\n+\t.dynamic : AT(ADDR(.dynamic) + __vma_to_lma) {\n \t\t__dynamic_start = .;\n \t\t*(.dynamic)\n \t\t__dynamic_end = .;\n \t}\n \n-\t. = ALIGN(32);\n-\n-\t__data_vma = .;\n-\t__data_lma = __data_vma + __text_lma - __text_vma;\n-\t.data : AT(__data_lma) {\n+\t.data : AT(ADDR(.data) + __vma_to_lma) {\n \t\t__data_start = .;\n \t\t*(.data)\n \t\t*(.data.*)\ndiff --git a/core/x86_64/syslinux.ld b/core/x86_64/syslinux.ld\nindex bf815c46..70c6e00a 100644\n--- a/core/x86_64/syslinux.ld\n+++ b/core/x86_64/syslinux.ld\n@@ -255,10 +255,9 @@ SECTIONS\n \t. = 0x100000;\n \n \t__pm_code_start = .;\n+\t__vma_to_lma = __pm_code_lma - __pm_code_start;\n \n-\t__text_vma = .;\n-\t__text_lma = __pm_code_lma;\n-\t.text : AT(__text_lma) {\n+\t.text : AT(ADDR(.text) + __vma_to_lma) {\n \t\tFILL(0x90909090)\n \t\t__text_start = .;\n \t\t*(.text)\n@@ -266,106 +265,68 @@ SECTIONS\n \t\t__text_end = .;\n \t}\n \n-\t. = ALIGN(32);\n-\n-\t__rodata_vma = .;\n-\t__rodata_lma = __rodata_vma + __text_lma - __text_vma;\n-\t.rodata : AT(__rodata_lma) {\n+\t.rodata : AT(ADDR(.rodata) + __vma_to_lma) {\n \t\t__rodata_start = .;\n \t\t*(.rodata)\n \t\t*(.rodata.*)\n \t\t__rodata_end = .;\n \t}\n \n-\t. = ALIGN(4);\n-\n-\t__ctors_vma = .;\n-\t__ctors_lma = __ctors_vma + __text_lma - __text_vma;\n-\t.ctors : AT(__ctors_lma) {\n+\t.ctors : AT(ADDR(.ctors) + __vma_to_lma) {\n \t\t__ctors_start = .;\n \t\tKEEP (*(SORT(.ctors.*)))\n \t\tKEEP (*(.ctors))\n \t\t__ctors_end = .;\n \t}\n \n-\t__dtors_vma = .;\n-\t__dtors_lma = __dtors_vma + __text_lma - __text_vma;\n-\t.dtors : AT(__dtors_lma) {\n+\t.dtors : AT(ADDR(.dtors) + __vma_to_lma) {\n \t\t__dtors_start = .;\n \t\tKEEP (*(SORT(.dtors.*)))\n \t\tKEEP (*(.dtors))\n \t\t__dtors_end = .;\n \t}\n \n-\t. = ALIGN(4);\n-\n-\t__dynsym_vma = .;\n-\t__dynsym_lma = __dynsym_vma + __text_lma - __text_vma;\n-\t.dynsym : AT(__dynsym_lma) {\n+\t.dynsym : AT(ADDR(.dynsym) + __vma_to_lma) {\n \t\t__dynsym_start = .;\n \t\t*(.dynsym)\n \t\t__dynsym_end = .;\n \t}\n \t__dynsym_len = __dynsym_end - __dynsym_start;\n \n-\t. = ALIGN(4);\n-\n-\t__dynstr_vma = .;\n-\t__dynstr_lma = __dynstr_vma + __text_lma - __text_vma;\n-\t.dynstr : AT(__dynstr_lma) {\n+\t.dynstr : AT(ADDR(.dynstr) + __vma_to_lma) {\n \t\t__dynstr_start = .;\n \t\t*(.dynstr)\n \t\t__dynstr_end = .;\n \t}\n \t__dynstr_len = __dynstr_end - __dynstr_start;\n \n-\t. = ALIGN(4);\n-\n-\t__gnu_hash_vma = .;\n-\t__gnu_hash_lma = __gnu_hash_vma + __text_lma - __text_vma;\n-\t.gnu.hash : AT(__gnu_hash_lma) {\n+\t.gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) {\n \t\t__gnu_hash_start = .;\n \t\t*(.gnu.hash)\n \t\t__gnu_hash_end = .;\n \t}\n \n \n-\t. = ALIGN(4);\n-\n-\t__dynlink_vma = .;\n-\t__dynlink_lma = __dynlink_vma + __text_lma - __text_vma;\n-\t.dynlink : AT(__dynlink_lma) {\n+\t.dynlink : AT(ADDR(.dynlink) + __vma_to_lma) {\n \t\t__dynlink_start = .;\n \t\t*(.dynlink)\n \t\t__dynlink_end = .;\n \t}\n \n-\t. = ALIGN(4);\n-\n-\t__got_vma = .;\n-\t__got_lma = __got_vma + __text_lma - __text_vma;\n-\t.got : AT(__got_lma) {\n+\t.got : AT(ADDR(.got) + __vma_to_lma) {\n \t\t__got_start = .;\n \t\tKEEP (*(.got.plt))\n \t\tKEEP (*(.got))\n \t\t__got_end = .;\n \t}\n \n-\t. = ALIGN(4);\n-\n-\t__dynamic_vma = .;\n-\t__dynamic_lma = __dynamic_vma + __text_lma - __text_vma;\n-\t.dynamic : AT(__dynamic_lma) {\n+\t.dynamic : AT(ADDR(.dynamic) + __vma_to_lma) {\n \t\t__dynamic_start = .;\n \t\t*(.dynamic)\n \t\t__dynamic_end = .;\n \t}\n \n-\t. = ALIGN(32);\n-\n-\t__data_vma = .;\n-\t__data_lma = __data_vma + __text_lma - __text_vma;\n-\t.data : AT(__data_lma) {\n+\t.data : AT(ADDR(.data) + __vma_to_lma) {\n \t\t__data_start = .;\n \t\t*(.data)\n \t\t*(.data.*)\n-- \n2.13.3\n\n"
  },
  {
    "path": "boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch",
    "content": "From a14b1b3d3e375d2e8af8804171ef5e52574dbb2a Mon Sep 17 00:00:00 2001\nFrom: \"H. Peter Anvin\" <hpa@zytor.com>\nDate: Tue, 9 Feb 2016 18:15:50 -0800\nSubject: [PATCH] core: Clean up the i386-bios build\n\nRemove symbols and data structures not used in the i386-bios build,\nand clean up the linker script so that most internal symbols are\nHIDDEN.\n\nSigned-off-by: H. Peter Anvin <hpa@zytor.com>\n\nUpstream: ff859050fa4e6535cae098dc35d88a265466448d\n\nThis patch fixes the following build failure with i386 binutils 2.28.1:\n\n/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld  -Bsymbolic -pie -E --hash-style=gnu -T\n/builds/arnout/buildroot/output/build/syslinux-6.03/core/i386/syslinux.ld -M -o ldlinux.elf ldlinux.o \\\n\t--start-group libcom32.a --whole-archive /builds/arnout/buildroot/output/build/syslinux-6.03/bios/com32/lib/libcom32core.a libldlinux.a --end-group -N\n--no-omagic \\\n\t> ldlinux.map\n/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld: ldlinux.elf: Not enough room for program headers, try linking with -N\n/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld: final link failed: Bad value\n/builds/arnout/buildroot/output/build/syslinux-6.03/core/Makefile:167: recipe for target 'ldlinux.elf' failed\n\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n---\n core/extern.inc       |  17 +--\n core/i386/syslinux.ld | 287 +++++++++++++++++++++++++-------------------------\n core/layout.inc       |  11 --\n 3 files changed, 143 insertions(+), 172 deletions(-)\n\ndiff --git a/core/extern.inc b/core/extern.inc\nindex af8eb04c..ce4abfab 100644\n--- a/core/extern.inc\n+++ b/core/extern.inc\n@@ -12,27 +12,17 @@\n \t; hello.c\n \textern hello\n \n-\t;abort.c\n-\textern abort_load_new\n-\n \t; elflink/load_env32.c\n \textern load_env32, pm_env32_run\n \n-\t; memscan.c\n-\textern highmem_init\n-\n-\textern linux_kernel\n-\n \textern mp1, mp2, mp3, mp4, mp5\n \n-\textern hexdump, mydump\n+\textern hexdump\n \n \textern mem_init\n \n \t; fs.c\n-\textern pm_fs_init, pm_searchdir, getfssec, getfsbytes\n-\textern pm_mangle_name, pm_load_config\n-        extern pm_open_file, pm_close_file\n+\textern pm_fs_init\n \textern SectorSize, SectorShift\n \n \t; chdir.c\n@@ -41,9 +31,6 @@\n         ; readdir.c\n         extern opendir, readdir, closedir\n \n-\t; newconfig.c\n-\textern pm_is_config_file\n-\n \t; idle.c\n \textern __idle\n \ndiff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld\nindex 92b75b11..39198d75 100644\n--- a/core/i386/syslinux.ld\n+++ b/core/i386/syslinux.ld\n@@ -1,7 +1,7 @@\n /* -----------------------------------------------------------------------\n  *   \n  *   Copyright 2008-2009 H. Peter Anvin - All Rights Reserved\n- *   Copyright 2009 Intel Corporation; author: H. Peter Anvin\n+ *   Copyright 2009-2016 Intel Corporation; author: H. Peter Anvin\n  *\n  *   This program is free software; you can redistribute it and/or modify\n  *   it under the terms of the GNU General Public License as published by\n@@ -12,7 +12,7 @@\n  * ----------------------------------------------------------------------- */\n \n /*\n- * Linker script for the SYSLINUX core\n+ * Linker script for the SYSLINUX core when built for i386-bios\n  */\n \n OUTPUT_FORMAT(\"elf32-i386\", \"elf32-i386\", \"elf32-i386\")\n@@ -26,7 +26,7 @@ SECTIONS\n {\n \t/* Prefix structure for the compression program */\n \t. = 0;\n-\t__module_start = .;\n+\tHIDDEN(__module_start = ABSOLUTE(.));\n \t.prefix : {\n \t\t*(.prefix)\n \t}\n@@ -35,81 +35,82 @@ SECTIONS\n \t. = 0x1000;\n \n \t.earlybss (NOLOAD) : {\n-\t\t__earlybss_start = .;\n+\t\tHIDDEN(__earlybss_start = .);\n \t\t*(.earlybss)\n-\t\t__earlybss_end = .;\n+\t\tHIDDEN(__earlybss_end = .);\n \t}\n-\t__earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start);\n-\t__earlybss_dwords = (__earlybss_len + 3) >> 2;\n+\tHIDDEN(__earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start));\n+\tHIDDEN(__earlybss_dwords = (__earlybss_len + 3) >> 2);\n \n \t. = ALIGN(4);\n \t.bss16 (NOLOAD) : {\n-\t\t__bss16_start = .;\n+\t\tHIDDEN(__bss16_start = .);\n \t\t*(.bss16)\n-\t\t__bss16_end = .;\n+\t\tHIDDEN(__bss16_end = .);\n \t}\n-\t__bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start);\n-\t__bss16_dwords = (__bss16_len + 3) >> 2;\n+\tHIDDEN(__bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start));\n+\tHIDDEN(__bss16_dwords = (__bss16_len + 3) >> 2);\n \n \t. = ALIGN(4);\n  \t.config : AT (__config_lma) {\n-\t\t__config_start = .;\n+\t\tHIDDEN(__config_start = .);\n \t\t*(.config)\n-\t\t__config_end = .;\n+\t\tHIDDEN(__config_end = .);\n \t}\n-\t__config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start);\n-\t__config_dwords = (__config_len + 3) >> 2;\n+\tHIDDEN(__config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start));\n+\tHIDDEN(__config_dwords = (__config_len + 3) >> 2);\n \n \t/* Generated and/or copied code */\n \n \t. = ALIGN(128);\t\t/* Minimum separation from mutable data */\n  \t.replacestub : AT (__replacestub_lma) {\n-\t\t__replacestub_start = .;\n+\t\tHIDDEN(__replacestub_start = .);\n \t\t*(.replacestub)\n-\t\t__replacestub_end = .;\n+\t\tHIDDEN(__replacestub_end = .);\n \t}\n-\t__replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start);\n-\t__replacestub_dwords = (__replacestub_len + 3) >> 2;\n+\tHIDDEN(__replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start));\n+\tHIDDEN(__replacestub_dwords = (__replacestub_len + 3) >> 2);\n \n \t. = ALIGN(16);\n-\t__gentextnr_lma = .;\n+\tHIDDEN(__gentextnr_lma = .);\n \t.gentextnr : AT(__gentextnr_lma) {\n-\t\t__gentextnr_start = .;\n+\t\tHIDDEN(__gentextnr_start = .);\n \t\t*(.gentextnr)\n-\t\t__gentextnr_end = .;\n+\t\tHIDDEN(__gentextnr_end = .);\n \t}\n-\t__gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start);\n-\t__gentextnr_dwords = (__gentextnr_len + 3) >> 2;\n+\tHIDDEN(__gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start));\n+\tHIDDEN(__gentextnr_dwords = (__gentextnr_len + 3) >> 2);\n \n \t. = STACK_BASE;\n \t.stack16 : AT(STACK_BASE) {\n-\t\t__stack16_start = .;\n+\t\tHIDDEN(__stack16_start = .);\n \t\t. += STACK_LEN;\n-\t\t__stack16_end = .;\n+\t\tHIDDEN(__stack16_end = .);\n \t}\n-\t__stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start);\n-\t__stack16_dwords = (__stack16_len + 3) >> 2;\n+\tHIDDEN(__stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start));\n+\tHIDDEN(__stack16_dwords = (__stack16_len + 3) >> 2);\n \n \t/* Initialized sections */\n \n \t. = 0x7c00;\n \t.init : {\n \t\tFILL(0x90909090)\n-\t\t__init_start = .;\n+\t\tHIDDEN(__init_start = .);\n \t\t*(.init)\n-\t\t__init_end = .;\n+\t\tHIDDEN(__init_end = .);\n \t}\n-\t__init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start);\n-\t__init_dwords = (__init_len + 3) >> 2;\n+\tHIDDEN(__init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start));\n+\tHIDDEN(__init_dwords = (__init_len + 3) >> 2);\n \n+\t. = ALIGN(4);\n \t.text16 : {\n \t\tFILL(0x90909090)\n-\t\t__text16_start = .;\n+\t\tHIDDEN(__text16_start = .);\n \t\t*(.text16)\n-\t\t__text16_end = .;\n+\t\tHIDDEN(__text16_end = .);\n \t}\n-\t__text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start);\n-\t__text16_dwords = (__text16_len + 3) >> 2;\n+\tHIDDEN(__text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start));\n+\tHIDDEN(__text16_dwords = (__text16_len + 3) >> 2);\n \n \t/*\n \t * .textnr is used for 32-bit code that is used on the code\n@@ -118,99 +119,92 @@ SECTIONS\n \t. = ALIGN(16);\n \t.textnr : {\n \t\tFILL(0x90909090)\n-\t\t__textnr_start = .;\n+\t\tHIDDEN(__textnr_start = .);\n \t\t*(.textnr)\n-\t\t__textnr_end = .;\n+\t\tHIDDEN(__textnr_end = .);\n \t}\n-\t__textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start);\n-\t__textnr_dwords = (__textnr_len + 3) >> 2;\n+\tHIDDEN(__textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start));\n+\tHIDDEN(__textnr_dwords = (__textnr_len + 3) >> 2);\n \n \t. = ALIGN(16);\n-\t__bcopyxx_start = .;\n+\tHIDDEN(__bcopyxx_start = .);\n \n \t.bcopyxx.text : {\n \t\tFILL(0x90909090)\n-\t\t__bcopyxx_text_start = .;\n+\t\tHIDDEN(__bcopyxx_text_start = .);\n \t\t*(.bcopyxx.text)\n-\t\t__bcopyxx_text_end = .;\n+\t\tHIDDEN(__bcopyxx_text_end = .);\n \t}\n-\t__bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start);\n-\t__bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2;\n+\tHIDDEN(__bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start));\n+\tHIDDEN(__bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2);\n \n \t.bcopyxx.data : {\n-\t\t__bcopyxx_data_start = .;\n+\t\tHIDDEN(__bcopyxx_data_start = .);\n \t\t*(.bcopyxx.text)\n-\t\t__bcopyxx_data_end = .;\n+\t\tHIDDEN(__bcopyxx_data_end = .);\n \t}\n-\t__bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start);\n-\t__bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2;\n+\tHIDDEN(__bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start));\n+\tHIDDEN(__bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2);\n \n-\t__bcopyxx_end = .;\n-\t__bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start);\n-\t__bcopyxx_dwords = (__bcopyxx_len + 3) >> 2;\n+\tHIDDEN(__bcopyxx_end = .);\n+\tHIDDEN(__bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start));\n+\tHIDDEN(__bcopyxx_dwords = (__bcopyxx_len + 3) >> 2);\n \n \t. = ALIGN(4);\n \t.data16 : {\n-\t      __data16_start = .;\n+\t      HIDDEN(__data16_start = .);\n \t      *(.data16)\n-\t      __data16_end = .;\n+\t      HIDDEN(__data16_end = .);\n \t}\n-\t__data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start);\n-\t__data16_dwords = (__data16_len + 3) >> 2;\n+\tHIDDEN(__data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start));\n+\tHIDDEN(__data16_dwords = (__data16_len + 3) >> 2);\n \n \t. = ALIGN(4);\n-\t__config_lma = .;\n+\tHIDDEN(__config_lma = ABSOLUTE(.));\n \t. += SIZEOF(.config);\n \n \t. = ALIGN(4);\n-\t__replacestub_lma = .;\n+\tHIDDEN(__replacestub_lma = ABSOLUTE(.));\n \t. += SIZEOF(.replacestub);\n \n \t/* The 32-bit code loads above the non-progbits sections */\n \n \t. = ALIGN(16);\n-\t__pm_code_lma = .;\n+\tHIDDEN(__pm_code_lma = ABSOLUTE(.));\n \n-\t__high_clear_start = .;\n+\tHIDDEN(__high_clear_start = .);\n \n \t. = ALIGN(512);\n \t.adv (NOLOAD) : {\n-\t\t__adv_start = .;\n+\t\tHIDDEN(__adv_start = .);\n \t\t*(.adv)\n-\t\t__adv_end = .;\n+\t\tHIDDEN(__adv_end = .);\n \t}\n-\t__adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start);\n-\t__adv_dwords = (__adv_len + 3) >> 2;\n+\tHIDDEN(__adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start));\n+\tHIDDEN(__adv_dwords = (__adv_len + 3) >> 2);\n \n \t/* Late uninitialized sections */\n \n \t. = ALIGN(4);\n \t.uibss (NOLOAD) : {\n-\t\t__uibss_start = .;\n+\t\tHIDDEN(__uibss_start = .);\n \t\t*(.uibss)\n-\t\t__uibss_end = .;\n+\t\tHIDDEN(__uibss_end = .);\n \t}\n-\t__uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start);\n-\t__uibss_dwords = (__uibss_len + 3) >> 2;\n+\tHIDDEN(__uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start));\n+\tHIDDEN(__uibss_dwords = (__uibss_len + 3) >> 2);\n \n-\t_end16 = .;\n-\t__assert_end16 = ASSERT(_end16 <= 0x10000, \"64K overflow\");\n+\tHIDDEN(_end16 = .);\n+\tHIDDEN(__assert_end16 = ASSERT(_end16 <= 0x10000, \"64K overflow\"));\n \n \t/*\n \t * Special 16-bit segments\n \t */\n-\n-\t. = ALIGN(65536);\n-\t.real_mode (NOLOAD) : {\n-\t\t*(.real_mode)\n-\t}\n-\treal_mode_seg = core_real_mode >> 4;\n-\n \t. = ALIGN(65536);\n \t.xfer_buf (NOLOAD) : {\n \t\t*(.xfer_buf)\n \t}\n-\txfer_buf_seg = core_xfer_buf >> 4;\n+\tHIDDEN(xfer_buf_seg = core_xfer_buf >> 4);\n \n \t/*\n \t * The auxilliary data segment is used by the 16-bit code\n@@ -219,33 +213,33 @@ SECTIONS\n \n \t. = ALIGN(16);\n \t.auxseg (NOLOAD) : {\n-\t\t__auxseg_start = .;\n+\t\tHIDDEN(__auxseg_start = .);\n \t\t*(.auxseg)\n-\t\t__auxseg_end = .;\n+\t\tHIDDEN(__auxseg_end = .);\n \t}\n-\t__auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start);\n-\t__auxseg_dwords = (__auxseg_len + 3) >> 2;\n-\taux_seg = __auxseg_start >> 4;\n+\tHIDDEN(__auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start));\n+\tHIDDEN(__auxseg_dwords = (__auxseg_len + 3) >> 2);\n+\tHIDDEN(aux_seg = __auxseg_start >> 4);\n \n \t/*\n \t * Used to allocate lowmem buffers from 32-bit code\n \t */\n \t.lowmem (NOLOAD) : {\n-\t\t__lowmem_start = .;\n+\t\tHIDDEN(__lowmem_start = .);\n \t\t*(.lowmem)\n-\t\t__lowmem_end = .;\n+\t\tHIDDEN(__lowmem_end = .);\n \t}\n-\t__lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start);\n-\t__lowmem_dwords = (__lowmem_len + 3) >> 2;\n+\tHIDDEN(__lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start));\n+\tHIDDEN(__lowmem_dwords = (__lowmem_len + 3) >> 2);\n \n-\t__high_clear_end = .;\n+\tHIDDEN(__high_clear_end = .);\n \n-\t__high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start);\n-\t__high_clear_dwords = (__high_clear_len + 3) >> 2;\n+\tHIDDEN(__high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start));\n+\tHIDDEN(__high_clear_dwords = (__high_clear_len + 3) >> 2);\n \n \t/* Start of the lowmem heap */\n \t. = ALIGN(16);\n-\t__lowmem_heap = .;\n+\tHIDDEN(__lowmem_heap = .);\n \n \t/*\n \t * 32-bit code.  This is a hack for the moment due to the\n@@ -254,136 +248,137 @@ SECTIONS\n \n \t. = 0x100000;\n \n-\t__pm_code_start = .;\n-\t__vma_to_lma = __pm_code_lma - __pm_code_start;\n+\tHIDDEN(__pm_code_start = .);\n+\tHIDDEN(__vma_to_lma = ABSOLUTE(__pm_code_lma - __pm_code_start));\n \n \t.text : AT(ADDR(.text) + __vma_to_lma) {\n \t\tFILL(0x90909090)\n-\t\t__text_start = .;\n+\t\tHIDDEN(__text_start = .);\n \t\t*(.text)\n \t\t*(.text.*)\n-\t\t__text_end = .;\n+\t\tHIDDEN(__text_end = .);\n \t}\n \n \t.rodata : AT(ADDR(.rodata) + __vma_to_lma) {\n-\t\t__rodata_start = .;\n+\t\tHIDDEN(__rodata_start = .);\n \t\t*(.rodata)\n \t\t*(.rodata.*)\n-\t\t__rodata_end = .;\n+\t\tHIDDEN(__rodata_end = .);\n \t}\n \n \t.ctors : AT(ADDR(.ctors) + __vma_to_lma) {\n-\t\t__ctors_start = .;\n+\t\tHIDDEN(__ctors_start = .);\n \t\tKEEP (*(SORT(.ctors.*)))\n \t\tKEEP (*(.ctors))\n-\t\t__ctors_end = .;\n+\t\tHIDDEN(__ctors_end = .);\n \t}\n \n \t.dtors : AT(ADDR(.dtors) + __vma_to_lma) {\n-\t\t__dtors_start = .;\n+\t\tHIDDEN(__dtors_start = .);\n \t\tKEEP (*(SORT(.dtors.*)))\n \t\tKEEP (*(.dtors))\n-\t\t__dtors_end = .;\n+\t\tHIDDEN(__dtors_end = .);\n \t}\n \n \t.dynsym : AT(ADDR(.dynsym) + __vma_to_lma) {\n-\t\t__dynsym_start = .;\n-\t\t*(.dynsym)\n-\t\t__dynsym_end = .;\n+\t\tHIDDEN(__dynsym_start = .);\n+\t\tKEEP (*(.dynsym))\n+\t\tHIDDEN(__dynsym_end = .);\n \t}\n-\t__dynsym_len = __dynsym_end - __dynsym_start;\n+\tHIDDEN(__dynsym_len = __dynsym_end - __dynsym_start);\n \n \t.dynstr : AT(ADDR(.dynstr) + __vma_to_lma) {\n-\t\t__dynstr_start = .;\n-\t\t*(.dynstr)\n-\t\t__dynstr_end = .;\n+\t\tHIDDEN(__dynstr_start = .);\n+\t\tKEEP (*(.dynstr))\n+\t\tHIDDEN(__dynstr_end = .);\n \t}\n-\t__dynstr_len = __dynstr_end - __dynstr_start;\n+\tHIDDEN(__dynstr_len = __dynstr_end - __dynstr_start);\n \n \t.gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) {\n-\t\t__gnu_hash_start = .;\n-\t\t*(.gnu.hash)\n-\t\t__gnu_hash_end = .;\n+\t\tHIDDEN(__gnu_hash_start = .);\n+\t\tKEEP (*(.gnu.hash))\n+\t\tHIDDEN(__gnu_hash_end = .);\n \t}\n \n \n \t.dynlink : AT(ADDR(.dynlink) + __vma_to_lma) {\n-\t\t__dynlink_start = .;\n-\t\t*(.dynlink)\n-\t\t__dynlink_end = .;\n+\t\tHIDDEN(__dynlink_start = .);\n+\t\tKEEP (*(.dynlink))\n+\t\tHIDDEN(__dynlink_end = .);\n \t}\n \n \t.got : AT(ADDR(.got) + __vma_to_lma) {\n-\t\t__got_start = .;\n-\t\tKEEP (*(.got.plt))\n+\t\tHIDDEN(__got_start = .);\n \t\tKEEP (*(.got))\n-\t\t__got_end = .;\n+\t\tKEEP (*(.got.plt))\n+\t\tHIDDEN(__got_end = .);\n \t}\n \n \t.dynamic : AT(ADDR(.dynamic) + __vma_to_lma) {\n-\t\t__dynamic_start = .;\n-\t\t*(.dynamic)\n-\t\t__dynamic_end = .;\n+\t\tHIDDEN(__dynamic_start = .);\n+\t\tKEEP (*(.dynamic))\n+\t\tHIDDEN(__dynamic_end = .);\n \t}\n \n \t.data : AT(ADDR(.data) + __vma_to_lma) {\n-\t\t__data_start = .;\n+\t\tHIDDEN(__data_start = .);\n \t\t*(.data)\n \t\t*(.data.*)\n-\t\t__data_end = .;\n+\t\tHIDDEN(__data_end = .);\n \t}\n \n-\t__pm_code_end = .;\n-\t__pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start);\n-\t__pm_code_dwords = (__pm_code_len + 3) >> 2;\n+\tHIDDEN(__pm_code_end = .);\n+\tHIDDEN(__pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start));\n+\tHIDDEN(__pm_code_dwords = (__pm_code_len + 3) >> 2);\n \n \t. = ALIGN(128);\n \n-\t__bss_vma = .;\n-\t__bss_lma = .;\t\t/* Dummy */\n+\tHIDDEN(__bss_vma = .);\n+\tHIDDEN(__bss_lma = ABSOLUTE(.));\t\t/* Dummy */\n \t.bss (NOLOAD) : AT (__bss_lma) {\n-\t\t__bss_start = .;\n+\t\tHIDDEN(__bss_start = .);\n \t\t*(.bss)\n \t\t*(.bss.*)\n \t\t*(COMMON)\n-\t\t__bss_end = .;\n+\t\tHIDDEN(__bss_end = .);\n \t}\n-\t__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start);\n-\t__bss_dwords = (__bss_len + 3) >> 2;\n+\tHIDDEN(__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start));\n+\tHIDDEN(__bss_dwords = (__bss_len + 3) >> 2);\n \n \t/* Very large objects which don't need to be zeroed */\n \n-\t__hugebss_vma = .;\n-\t__hugebss_lma = .;\t\t/* Dummy */\n+\tHIDDEN(__hugebss_vma = .);\n+\tHIDDEN(__hugebss_lma = ABSOLUTE(.));\t\t/* Dummy */\n \t.hugebss (NOLOAD) : AT (__hugebss_lma) {\n-\t\t__hugebss_start = .;\n+\t\tHIDDEN(__hugebss_start = .);\n \t\t*(.hugebss)\n \t\t*(.hugebss.*)\n-\t\t__hugebss_end = .;\n+\t\tHIDDEN(__hugebss_end = .);\n \t}\n-\t__hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start);\n-\t__hugebss_dwords = (__hugebss_len + 3) >> 2;\n+\tHIDDEN(__hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start));\n+\tHIDDEN(__hugebss_dwords = (__hugebss_len + 3) >> 2);\n \n \n \t/* XXX: This stack should be unified with the COM32 stack */\n-\t__stack_vma = .;\n-\t__stack_lma = .;\t/* Dummy */\n+\tHIDDEN(__stack_vma = .);\n+\tHIDDEN(__stack_lma = ABSOLUTE(.));\t\t/* Dummy */\n \t.stack (NOLOAD) : AT(__stack_lma) {\n-\t\t__stack_start = .;\n+\t\tHIDDEN(__stack_start = .);\n \t\t*(.stack)\n-\t\t__stack_end = .;\n+\t\tHIDDEN(__stack_end = .);\n \t}\n-\t__stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start);\n-\t__stack_dwords = (__stack_len + 3) >> 2;\n+\tHIDDEN(__stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start));\n+\tHIDDEN(__stack_dwords = (__stack_len + 3) >> 2);\n \n-\t_end = .;\n+\tHIDDEN(_end = .);\n \n \t/* COM32R and kernels are loaded after our own PM code */\n \t. = ALIGN(65536);\n-\tfree_high_memory = .;\n+\tHIDDEN(free_high_memory = .);\n \n \t/* Stuff we don't need... */\n \t/DISCARD/ : {\n \t\t*(.eh_frame)\n+\t\t*(.interp)\n \t}\n }\ndiff --git a/core/layout.inc b/core/layout.inc\nindex 53ca783d..635df537 100644\n--- a/core/layout.inc\n+++ b/core/layout.inc\n@@ -139,17 +139,6 @@ serial_buf_size\tequ 4096\t\t; Should be a power of 2\n core_xfer_buf\tresb 65536\n \n ;\n-; Segment for the real mode code (needed as long as we have a in-kernel\n-; loader and/or COM16 support.\n-; One symbol for the segment number, one for the absolute address\n-;\n-\t\textern\treal_mode_seg\n-\t\tsection .real_mode\twrite nobits align=65536\n-\t\tglobal\tcore_real_mode:data hidden\n-core_real_mode\tresb 65536\n-comboot_seg\tequ real_mode_seg\t; COMBOOT image loading zone\n-\n-;\n ; At the very end, the lowmem heap\n ;\n \t\textern __lowmem_heap\n-- \n2.13.3\n\n"
  },
  {
    "path": "boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch",
    "content": "From 4df2e7c0ae84bfbdba0ed285c0664aa089b38b7e Mon Sep 17 00:00:00 2001\nFrom: Carlos Santos <casantos@datacom.ind.br>\nDate: Sat, 30 Sep 2017 19:49:55 -0300\nSubject: [PATCH] extlinux: Use the host toolchain to build.\n\nIt is meant to run on the host machine, hence must be built using the\nhost toolchain.\n\nSigned-off-by: Carlos Santos <casantos@datacom.ind.br>\n---\n extlinux/Makefile | 12 ++++++------\n 1 file changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/extlinux/Makefile b/extlinux/Makefile\nindex 02d1db51..5c4baa5a 100644\n--- a/extlinux/Makefile\n+++ b/extlinux/Makefile\n@@ -18,9 +18,9 @@ include $(MAKEDIR)/syslinux.mk\n \n OPTFLAGS = -g -Os\n INCLUDES = -I$(SRC) -I$(objdir) -I$(SRC)/../libinstaller\n-CFLAGS\t = $(GCCWARN) -Wno-sign-compare -D_FILE_OFFSET_BITS=64 \\\n+CFLAGS\t = $(CFLAGS_FOR_BUILD) $(GCCWARN) -Wno-sign-compare -D_FILE_OFFSET_BITS=64 \\\n \t   $(OPTFLAGS) $(INCLUDES)\n-LDFLAGS\t = \n+LDFLAGS\t = $(LDFLAGS_FOR_BUILD)\n \n SRCS     = main.c \\\n \t   mountinfo.c \\\n@@ -52,16 +52,16 @@ spotless: clean\n installer: extlinux\n \n extlinux: $(OBJS)\n-\t$(CC) $(LDFLAGS) -o $@ $^\n+\t$(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^\n \n strip:\n \t$(STRIP) extlinux\n \n %.o: %.c\n-\t$(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $<\n+\t$(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $<\n %.i: %.c\n-\t$(CC) $(UMAKEDEPS) $(CFLAGS) -E -o $@ $<\n+\t$(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -E -o $@ $<\n %.s: %.c\n-\t$(CC) $(UMAKEDEPS) $(CFLAGS) -S -o $@ $<\n+\t$(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -S -o $@ $<\n \n -include .*.d\n-- \n2.13.5\n\n"
  },
  {
    "path": "boot/syslinux/0012-pull-in-sys-sysmacros-h-for-major-minor-makedev.patch",
    "content": "From 1a74985b2a404639b08882c57f3147229605dfd5 Mon Sep 17 00:00:00 2001\nFrom: Mike Frysinger <vapier@gentoo.org>\nDate: Tue, 19 Apr 2016 06:50:31 -0400\nSubject: [PATCH] extlinux: pull in sys/sysmacros.h for major/minor/makedev\n\nThese functions are defined in sys/sysmacros.h, so add the include to\nmain.c.  This is already handled correctly in mountinfo.c.  Otherwise\nwe get build failures like:\n\nmain.o: In function 'find_device_sysfs':\nextlinux/main.c:1131: undefined reference to 'minor'\n\nSigned-off-by: Mike Frysinger <vapier@gentoo.org>\nSigned-off-by: Gene Cumm <gene.cumm@gmail.com>\nSigned-off-by: Alexander Sverdlin <alexader.sverdlin@gmail.com>\n---\n extlinux/main.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/extlinux/main.c b/extlinux/main.c\nindex a7ebd49..ebff7ea 100644\n--- a/extlinux/main.c\n+++ b/extlinux/main.c\n@@ -38,6 +38,7 @@\n #include <sysexits.h>\n #include <sys/ioctl.h>\n #include <sys/stat.h>\n+#include <sys/sysmacros.h>\n #include <sys/types.h>\n #include <sys/mount.h>\n #include <sys/vfs.h>\n-- \n2.10.5.GIT\n\n"
  },
  {
    "path": "boot/syslinux/0013-Fix-build-with-gnu-efi-version-3.0.9.patch",
    "content": "From 44a1b42e561b9a257209300e2860b901b100cc17 Mon Sep 17 00:00:00 2001\nFrom: Carlos Santos <casantos@datacom.com.br>\nDate: Tue, 26 Feb 2019 08:07:22 -0300\nSubject: [PATCH] Fix build with gnu-efi version 3.0.9\n\nAdapt a patch already applied upstream to prevent multiple definitions\nof 'memset' and 'memcpy'.\n\nSigned-off-by: Carlos Santos <casantos@datacom.com.br>\n(adapted from commit 363d61c4f112b972649b19d67e96b9321f738f00)\n---\n mk/lib.mk | 9 +++++++--\n 1 file changed, 7 insertions(+), 2 deletions(-)\n\ndiff --git a/mk/lib.mk b/mk/lib.mk\nindex ceb95bd0..c9b6eaf3 100644\n--- a/mk/lib.mk\n+++ b/mk/lib.mk\n@@ -186,9 +186,9 @@ MINLIBOBJS = \\\n #\t$(LIBVESA_OBJS)\n \n CORELIBOBJS = \\\n-\tmemcpy.o memset.o memcmp.o printf.o strncmp.o vfprintf.o \t\\\n+\tmemcmp.o printf.o strncmp.o vfprintf.o\t\t\t\t\\\n \tstrlen.o vsnprintf.o snprintf.o stpcpy.o strcmp.o strdup.o \t\\\n-\tstrcpy.o strncpy.o setjmp.o fopen.o fread.o fread2.o puts.o \t\\\n+\tstrcpy.o strncpy.o fopen.o fread.o fread2.o puts.o\t \t\\\n \tstrtoul.o strntoumax.o strcasecmp.o \t\t\t\t\\\n \tsprintf.o strlcat.o strchr.o strlcpy.o strncasecmp.o ctypes.o \t\\\n \tfputs.o fwrite2.o fwrite.o fgetc.o fclose.o lmalloc.o \t\t\\\n@@ -203,6 +203,11 @@ CORELIBOBJS = \\\n \t$(LIBENTRY_OBJS) \\\n \t$(LIBMODULE_OBJS)\n \n+ifndef EFI_BUILD\n+# For EFI, these are part of gnu-efi\n+CORELIBOBJS += setjmp.o memcpy.o memset.o\n+endif\n+\n LDFLAGS\t= -m elf_$(ARCH) --hash-style=gnu -T $(com32)/lib/$(ARCH)/elf.ld\n \n .SUFFIXES: .c .o .a .so .lo .i .S .s .ls .ss .lss\n-- \n2.14.5\n\n"
  },
  {
    "path": "boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch",
    "content": "From beb526ca925983c7da229043790ecd552d910650 Mon Sep 17 00:00:00 2001\nFrom: Christian Stewart <christian@paral.in>\nDate: Thu, 4 Apr 2019 23:24:31 -0700\nSubject: [PATCH] Fix build with binutils note gnu property section\n\nThis fixes the following build error with newer binutils:\n\n  objcopy -O binary mbr.elf mbr.bin\n  perl /build/syslinux/src/syslinux/mbr/checksize.pl mbr.bin\n  mbr.bin: too big (452 > 440)\n\nCorresponding bug reports:\n\n - https://bugs.archlinux.org/task/60405\n - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=906414\n\nStrips the .note.gnu.property in the linker scripts for the MBRs.\n\nSigned-off-by: Christian Stewart <christian@paral.in>\n---\n mbr/i386/mbr.ld   | 1 +\n mbr/x86_64/mbr.ld | 1 +\n 2 files changed, 2 insertions(+)\n\ndiff --git a/mbr/i386/mbr.ld b/mbr/i386/mbr.ld\nindex d14ba802..53683461 100644\n--- a/mbr/i386/mbr.ld\n+++ b/mbr/i386/mbr.ld\n@@ -70,4 +70,5 @@ SECTIONS\n   .debug_typenames 0 : { *(.debug_typenames) }\n   .debug_varnames  0 : { *(.debug_varnames) }\n   /DISCARD/ : { *(.note.GNU-stack) }\n+  /DISCARD/ : { *(.note.gnu.property) }\n }\ndiff --git a/mbr/x86_64/mbr.ld b/mbr/x86_64/mbr.ld\nindex ae27d49a..b8c0d895 100644\n--- a/mbr/x86_64/mbr.ld\n+++ b/mbr/x86_64/mbr.ld\n@@ -69,4 +69,5 @@ SECTIONS\n   .debug_typenames 0 : { *(.debug_typenames) }\n   .debug_varnames  0 : { *(.debug_varnames) }\n   /DISCARD/ : { *(.note.GNU-stack) }\n+  /DISCARD/ : { *(.note.gnu.property) }\n }\n-- \n2.21.0\n\n"
  },
  {
    "path": "boot/syslinux/0015-efi-main.c-include-efisetjmp.h.patch",
    "content": "From 7d68fa68cd9f2987bd85339f3391913a8b0e58c7 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Tue, 24 Mar 2020 10:21:27 +0100\nSubject: [PATCH] efi/main.c: include <efisetjmp.h>\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nBuilding syslinux against gnu-efi 3.0.10 currently fails with:\n\nsyslinux/efi/main.c:33:8: error: unknown type name ‘jmp_buf’\n   33 | static jmp_buf load_error_buf;\n      |        ^~~~~~~\nsyslinux/efi/main.c: In function ‘local_boot’:\nsyslinux/efi/main.c:189:5: warning: implicit declaration of function ‘longjmp’ [-Wimplicit-function-declaration]\n  189 |     longjmp(&load_error_buf, 1);\n      |     ^~~~~~~\nsyslinux/efi/main.c: In function ‘build_gdt’:\nsyslinux/efi/main.c:907:75: warning: taking address of packed member of ‘struct dt_desc’ may result in an unaligned pointer value [-Waddress-of-packed-member]\n  907 |  status = emalloc(gdt.limit, __SIZEOF_POINTER__ , (EFI_PHYSICAL_ADDRESS *)&gdt.base);\n      |                                                                           ^~~~~~~~~\nsyslinux/efi/main.c: In function ‘efi_main’:\nsyslinux/efi/main.c:1390:7: warning: implicit declaration of function ‘setjmp’ [-Wimplicit-function-declaration]\n 1390 |  if (!setjmp(&load_error_buf))\n      |       ^~~~~~\nmake[3]: *** [syslinux/mk/efi.mk:63: main.o] Error 1\n\nThis is due to gnu-efi commit 486ba3c3bdd147b7d98159b9e650be60bce0f027\n(\"Do not include efisetjmp.h on efi.h\"), in which they state:\n\n    Do not include efisetjmp.h on efi.h\n\n    People than really want to use efisetjmp implementation can include\n    the header on their own.\n\n    Signed-off-by: leo <leo.sartre@geebol.fr>\n\nSo we act as specified, and include <efisetjmp.h> from efi/main.c.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nUpstream: https://www.syslinux.org/archives/2020-March/026621.html\n---\n efi/main.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/efi/main.c b/efi/main.c\nindex 6a748412..e924cfb1 100644\n--- a/efi/main.c\n+++ b/efi/main.c\n@@ -12,6 +12,7 @@\n #include <sys/ansi.h>\n \n #include \"efi.h\"\n+#include <efisetjmp.h>\n #include \"fio.h\"\n #include \"version.h\"\n #include \"efi_pxe.h\"\n-- \n2.25.1\n\n"
  },
  {
    "path": "boot/syslinux/0016-Workaround-multiple-definition-of-symbol-errors.patch",
    "content": "From 16f293d67eace501c98494976030f4319778ebf5 Mon Sep 17 00:00:00 2001\nFrom: Merlin Mathesius <mmathesi@redhat.com>\nDate: Wed, 13 May 2020 08:02:27 -0500\nSubject: [PATCH] Workaround multiple definition of symbol errors\n\n[From https://src.fedoraproject.org/rpms/syslinux/raw/rawhide/f/0005-Workaround-multiple-definition-of-symbol-errors.patch\n plus adding '-z muldefs' for gpxe]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n com32/cmenu/Makefile           | 2 +-\n com32/elflink/ldlinux/Makefile | 2 +-\n com32/gpllib/Makefile          | 2 +-\n com32/hdt/Makefile             | 2 +-\n core/Makefile                  | 2 +-\n dos/Makefile                   | 2 +-\n efi/Makefile                   | 2 +-\n gpxe/src/arch/i386/Makefile    | 2 +-\n 8 files changed, 8 insertions(+), 8 deletions(-)\n\ndiff --git a/com32/cmenu/Makefile b/com32/cmenu/Makefile\nindex 6bb52316..66cdd649 100644\n--- a/com32/cmenu/Makefile\n+++ b/com32/cmenu/Makefile\n@@ -49,7 +49,7 @@ makeoutputdirs:\n \t@mkdir -p $(OBJ)/libmenu\n \n libmenu/libmenu.elf: $(LIBMENU)\n-\t$(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) \\\n+\t$(LD) -shared $(LDFLAGS) -z muldefs -soname $(patsubst %.elf,%.c32,$(@F)) \\\n \t\t-o $@ $^\n \n tidy dist:\ndiff --git a/com32/elflink/ldlinux/Makefile b/com32/elflink/ldlinux/Makefile\nindex d948da43..67434a1f 100644\n--- a/com32/elflink/ldlinux/Makefile\n+++ b/com32/elflink/ldlinux/Makefile\n@@ -33,7 +33,7 @@ endif\n all: $(BTARGET) ldlinux_lnx.a\n \n ldlinux.elf : $(OBJS)\n-\t$(LD) $(LDFLAGS) -soname $(SONAME) -o $@ $^ $(LIBS)\n+\t$(LD) $(LDFLAGS) -z muldefs -soname $(SONAME) -o $@ $^ $(LIBS)\n \n LNXCFLAGS += -D__export='__attribute__((visibility(\"default\")))'\n LNXLIBOBJS = get_key.lo\ndiff --git a/com32/gpllib/Makefile b/com32/gpllib/Makefile\nindex e3e30d76..17520a1e 100644\n--- a/com32/gpllib/Makefile\n+++ b/com32/gpllib/Makefile\n@@ -24,7 +24,7 @@ makeoutputdirs:\n \t\t$(addprefix $(OBJ),$(sort $(dir $(LIBOBJS)))),$(b))\n \n libgpl.elf : $(LIBOBJS)\n-\t$(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^\n+\t$(LD) -shared $(LDFLAGS) -z muldefs -soname $(patsubst %.elf,%.c32,$(@F)) -o $@ $^\n \n tidy dist clean:\n \tfind . \\( -name \\*.o -o -name .\\*.d -o -name \\*.tmp \\) -print0 | \\\ndiff --git a/com32/hdt/Makefile b/com32/hdt/Makefile\nindex 80f2d0a0..8509cd96 100644\n--- a/com32/hdt/Makefile\n+++ b/com32/hdt/Makefile\n@@ -52,7 +52,7 @@ QEMU\t\t\t?= qemu-kvm\n all: $(MODULES) $(TESTFILES)\n \n hdt.elf : $(OBJS) $(LIBS) $(C_LIBS)\n-\t$(LD) $(LDFLAGS) -o $@ $^\n+\t$(LD) $(LDFLAGS) -z muldefs -o $@ $^\n \n memtest:\n \t-[ ! -f $(FLOPPY_DIR)/$(MEMTEST) ] && $(WGET) $(MEMTEST_URL) -O $(FLOPPY_DIR)/$(MEMTEST)\ndiff --git a/core/Makefile b/core/Makefile\nindex ad0acb5a..3bee4dc9 100644\n--- a/core/Makefile\n+++ b/core/Makefile\n@@ -164,7 +164,7 @@ AUXLIBS = libisolinux.a libisolinux-debug.a libldlinux.a \\\n LDSCRIPT = $(SRC)/$(ARCH)/syslinux.ld\n \n %.elf: %.o $(LIBDEP) $(LDSCRIPT) $(AUXLIBS)\n-\t$(LD) $(LDFLAGS) -Bsymbolic $(LD_PIE) -E --hash-style=gnu -T $(LDSCRIPT) -M -o $@ $< \\\n+\t$(LD) $(LDFLAGS) -z muldefs -Bsymbolic $(LD_PIE) -E --hash-style=gnu -T $(LDSCRIPT) -M -o $@ $< \\\n \t\t--start-group $(LIBS) $(subst $(*F).elf,lib$(*F).a,$@) --end-group \\\n \t\t> $(@:.elf=.map)\n \t$(OBJDUMP) -h $@ > $(@:.elf=.sec)\ndiff --git a/dos/Makefile b/dos/Makefile\nindex b9c337d5..2af87346 100644\n--- a/dos/Makefile\n+++ b/dos/Makefile\n@@ -19,7 +19,7 @@ include $(MAKEDIR)/embedded.mk\n CFLAGS\t+= -D__MSDOS__ -mregparm=3 -DREGPARM=3\n # CFLAGS  += -DDEBUG\n \n-LDFLAGS\t = -T $(SRC)/dosexe.ld\n+LDFLAGS\t = -T $(SRC)/dosexe.ld -z muldefs\n OPTFLAGS = -g\n INCLUDES = -include code16.h -nostdinc -iwithprefix include \\\n \t   -I$(SRC) -I$(SRC)/.. -I$(SRC)/../libfat \\\ndiff --git a/efi/Makefile b/efi/Makefile\nindex d24d16db..7c714ebf 100644\n--- a/efi/Makefile\n+++ b/efi/Makefile\n@@ -70,7 +70,7 @@ $(OBJS): subdirs\n BTARGET  = syslinux.efi\n \n syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS)\n-\t$(LD) $(LDFLAGS) --strip-debug -o $@ $^ -lgnuefi -lefi\n+\t$(LD) $(LDFLAGS) -z muldefs --strip-debug -o $@ $^ -lgnuefi -lefi\n \n # We need to rename the .hash section because the EFI firmware\n # linker really doesn't like it.\ndiff --git a/gpxe/src/arch/i386/Makefile b/gpxe/src/arch/i386/Makefile\nindex dd8da802..be1d00ff 100644\n--- a/gpxe/src/arch/i386/Makefile\n+++ b/gpxe/src/arch/i386/Makefile\n@@ -55,7 +55,7 @@ ASFLAGS\t\t+= --32\n ifeq ($(HOST_OS),FreeBSD)\n LDFLAGS\t\t+= -m elf_i386_fbsd\n else\n-LDFLAGS\t\t+= -m elf_i386\n+LDFLAGS\t\t+= -z muldefs -m elf_i386\n endif\n \n # EFI requires -fshort-wchar, and nothing else currently uses wchar_t\n-- \n2.30.1\n\n"
  },
  {
    "path": "boot/syslinux/0017-Replace-builtin-strlen-that-appears-to-get-optimized.patch",
    "content": "From 698a6ce88524b727d265b204d648e78d8acb485c Mon Sep 17 00:00:00 2001\nFrom: Merlin Mathesius <mmathesi@redhat.com>\nDate: Wed, 13 May 2020 11:58:37 -0500\nSubject: [PATCH] Replace builtin strlen that appears to get optimized away\n\n[From https://src.fedoraproject.org/rpms/syslinux/raw/rawhide/f/0006-Replace-builtin-strlen-that-appears-to-get-optimized.patch]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n dos/string.h | 12 +++++++++++-\n 1 file changed, 11 insertions(+), 1 deletion(-)\n\ndiff --git a/dos/string.h b/dos/string.h\nindex f648de2d..407d0233 100644\n--- a/dos/string.h\n+++ b/dos/string.h\n@@ -5,12 +5,22 @@\n #ifndef _STRING_H\n #define _STRING_H\n \n+#include <stddef.h>\n+\n /* Standard routines */\n #define memcpy(a,b,c)\t__builtin_memcpy(a,b,c)\n #define memmove(a,b,c)\t__builtin_memmove(a,b,c)\n #define memset(a,b,c)\t__builtin_memset(a,b,c)\n #define strcpy(a,b)\t__builtin_strcpy(a,b)\n-#define strlen(a)\t__builtin_strlen(a)\n+#define strlen(a)\tinline_strlen(a)\n+\n+/* replacement for builtin strlen that appears to get optimized away */\n+static inline size_t inline_strlen(const char *str)\n+{\n+    size_t l;\n+    for (l = 0; *str++; l++);\n+    return l;\n+}\n \n /* This only returns true or false */\n static inline int memcmp(const void *__m1, const void *__m2, unsigned int __n)\n-- \n2.30.1\n\n"
  },
  {
    "path": "boot/syslinux/Config.in",
    "content": "config BR2_TARGET_SYSLINUX\n\tbool \"syslinux\"\n\tdepends on BR2_i386 || BR2_x86_64\n\t# Make sure at least one of the flavors is installed\n\tselect BR2_TARGET_SYSLINUX_ISOLINUX \\\n\t\tif !BR2_TARGET_SYSLINUX_PXELINUX && \\\n\t\t   !BR2_TARGET_SYSLINUX_MBR && \\\n\t\t   !BR2_TARGET_SYSLINUX_EFI\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  The syslinux bootloader for x86 systems.\n\t  This includes: syslinux, pxelinux, extlinux.\n\n\t  http://syslinux.org\n\nif BR2_TARGET_SYSLINUX\n\nconfig BR2_TARGET_SYSLINUX_LEGACY_BIOS\n\tbool\n\nconfig BR2_TARGET_SYSLINUX_ISOLINUX\n\tbool \"install isolinux\"\n\tselect BR2_TARGET_SYSLINUX_LEGACY_BIOS\n\thelp\n\t  Install the legacy-BIOS 'isolinux' image, to boot off\n\t  optical media (CDROM, DVD.)\n\nconfig BR2_TARGET_SYSLINUX_PXELINUX\n\tbool \"install pxelinux\"\n\tselect BR2_TARGET_SYSLINUX_LEGACY_BIOS\n\thelp\n\t  Install the legacy-BIOS 'pxelinux' image, to boot off\n\t  the network using PXE.\n\nconfig BR2_TARGET_SYSLINUX_MBR\n\tbool \"install mbr\"\n\tselect BR2_TARGET_SYSLINUX_LEGACY_BIOS\n\thelp\n\t  Install the legacy-BIOS 'mbr' image, to boot off a\n\t  local MBR-partition (e.g. prepared with 'extlinux'\n\t  or 'syslinux').\n\nconfig BR2_TARGET_SYSLINUX_EFI\n\tbool \"install efi\"\n\tdepends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_GNU_EFI\n\thelp\n\t  Install the 'efi' image, to boot from an EFI environment.\n\nif BR2_TARGET_SYSLINUX_LEGACY_BIOS\n\nconfig BR2_TARGET_SYSLINUX_C32\n\tstring \"modules to install\"\n\thelp\n\t  Enter a space-separated list of .c32 modules to install.\n\t  Leave empty to install no module.\n\nendif # BR2_TARGET_SYSLINUX_LEGACY_BIOS\n\nendif # BR2_TARGET_SYSLINUX\n"
  },
  {
    "path": "boot/syslinux/syslinux.hash",
    "content": "# From https://www.kernel.org/pub/linux/utils/boot/syslinux/sha256sums.asc\nsha256  26d3986d2bea109d5dc0e4f8c4822a459276cf021125e8c9f23c3cca5d8c850e  syslinux-6.03.tar.xz\n# Locally computed\nsha256  dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa  COPYING\n"
  },
  {
    "path": "boot/syslinux/syslinux.mk",
    "content": "################################################################################\n#\n# syslinux to make target msdos/iso9660 filesystems bootable\n#\n################################################################################\n\nSYSLINUX_VERSION = 6.03\nSYSLINUX_SOURCE = syslinux-$(SYSLINUX_VERSION).tar.xz\nSYSLINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/boot/syslinux\n\nSYSLINUX_LICENSE = GPL-2.0+\nSYSLINUX_LICENSE_FILES = COPYING\n\nSYSLINUX_INSTALL_IMAGES = YES\n\n# host-util-linux needed to provide libuuid when building host tools\nSYSLINUX_DEPENDENCIES = \\\n\thost-nasm \\\n\thost-python3 \\\n\thost-upx \\\n\thost-util-linux \\\n\tutil-linux\n\nifeq ($(BR2_TARGET_SYSLINUX_LEGACY_BIOS),y)\nSYSLINUX_TARGET += bios\nendif\n\n# The syslinux build system must be forced to use Buildroot's gnu-efi\n# package by setting EFIINC, LIBDIR and LIBEFI. Otherwise, it uses its\n# own copy of gnu-efi included in syslinux's sources since 6.03\n# release.\nifeq ($(BR2_TARGET_SYSLINUX_EFI),y)\nifeq ($(BR2_ARCH_IS_64),y)\nSYSLINUX_EFI_BITS = efi64\nelse\nSYSLINUX_EFI_BITS = efi32\nendif # 64-bit\nSYSLINUX_DEPENDENCIES += gnu-efi\nSYSLINUX_TARGET += $(SYSLINUX_EFI_BITS)\nSYSLINUX_EFI_ARGS = \\\n\tEFIINC=$(STAGING_DIR)/usr/include/efi \\\n\tLIBDIR=$(STAGING_DIR)/usr/lib \\\n\tLIBEFI=$(STAGING_DIR)/usr/lib/libefi.a\nendif # EFI\n\n# The syslinux tarball comes with pre-compiled binaries.\n# Since timestamps might not be in the correct order, a rebuild is\n# not always triggered for all the different images.\n# Cleanup the mess even before we attempt a build, so we indeed\n# build everything from source.\ndefine SYSLINUX_CLEANUP\n\trm -rf $(@D)/bios $(@D)/efi32 $(@D)/efi64\nendef\nSYSLINUX_POST_PATCH_HOOKS += SYSLINUX_CLEANUP\n\n# syslinux build system has no convenient way to pass CFLAGS,\n# and the internal zlib should take precedence so -I shouldn't\n# be used.\ndefine SYSLINUX_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) \\\n\t\tCC=\"$(TARGET_CC)\" \\\n\t\tLD=\"$(TARGET_LD)\" \\\n\t\tOBJCOPY=\"$(TARGET_OBJCOPY)\" \\\n\t\tAS=\"$(TARGET_AS)\" \\\n\t\tNASM=\"$(HOST_DIR)/bin/nasm\" \\\n\t\tCC_FOR_BUILD=\"$(HOSTCC)\" \\\n\t\tCFLAGS_FOR_BUILD=\"$(HOST_CFLAGS)\" \\\n\t\tLDFLAGS_FOR_BUILD=\"$(HOST_LDFLAGS)\" \\\n\t\tPYTHON=$(HOST_DIR)/bin/python3 \\\n\t\t$(SYSLINUX_EFI_ARGS) -C $(@D) $(SYSLINUX_TARGET)\nendef\n\n# While the actual bootloader is compiled for the target, several\n# utilities for installing the bootloader are meant for the host.\n# Repeat the target, otherwise syslinux will try to build everything\n# Repeat LD (and CC) as it happens that some binaries are linked at\n# install-time.\ndefine SYSLINUX_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) $(SYSLINUX_EFI_ARGS) INSTALLROOT=$(HOST_DIR) \\\n\t\tCC=\"$(TARGET_CC)\" \\\n\t\tLD=\"$(TARGET_LD)\" \\\n\t\t-C $(@D) $(SYSLINUX_TARGET) install\nendef\n\n# That 'syslinux' binary is an installer actually built for the target.\n# However, buildroot makes no usage of it, so better delete it than have it\n# installed at the wrong place\ndefine SYSLINUX_POST_INSTALL_CLEANUP\n\trm -rf $(HOST_DIR)/bin/syslinux\nendef\nSYSLINUX_POST_INSTALL_TARGET_HOOKS += SYSLINUX_POST_INSTALL_CLEANUP\n\nSYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_ISOLINUX) += bios/core/isolinux.bin\nSYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_PXELINUX) += bios/core/pxelinux.bin\nSYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_MBR) += bios/mbr/mbr.bin\nSYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_EFI) += $(SYSLINUX_EFI_BITS)/efi/syslinux.efi\n\nSYSLINUX_C32 = $(call qstrip,$(BR2_TARGET_SYSLINUX_C32))\n\n# We install the c32 modules from the host-installed tree, where they\n# are all neatly installed in a single location, while they are\n# scattered around everywhere in the build tree.\ndefine SYSLINUX_INSTALL_IMAGES_CMDS\n\tfor i in $(SYSLINUX_IMAGES-y); do \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$$i $(BINARIES_DIR)/syslinux/$${i##*/}; \\\n\tdone\n\tfor i in $(SYSLINUX_C32); do \\\n\t\t$(INSTALL) -D -m 0755 $(HOST_DIR)/share/syslinux/$${i} \\\n\t\t\t$(BINARIES_DIR)/syslinux/$${i}; \\\n\tdone\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "boot/uboot/2015.07/0001-Revert-arch-Make-board-selection-choices-optional.patch",
    "content": "From ee11fed43e2bd029f71af1e72ab9bb5652f5fc54 Mon Sep 17 00:00:00 2001\nFrom: Alexey Brodkin <abrodkin@synopsys.com>\nDate: Wed, 29 Jul 2015 20:32:59 +0300\nSubject: [PATCH] Revert \"arch: Make board selection choices optional\"\n\nThis reverts commit a26cd04920dc069fd6e91abb785426cf6c29f45f.\n\nReverted commit caused an issue with \"make oldconfig\" - default prompt\nfor target selection was set as No that lead to missing platform\nselection by automated scripts like that:\n------------------>8------------------\n\"yes \"\" | make oldconfig\" on defconfig\n------------------>8------------------\n\nAnd that lead to build failure:\n------------------>8------------------\n$ make\nscripts/kconfig/conf --silentoldconfig Kconfig\n  CHK     include/config.h\n  UPD     include/config.h\n  GEN     include/autoconf.mk\nIn file included from ./include/common.h:18:0:\ninclude/config.h:5:22: fatal error: configs/.h: No such file or directory\n #include <configs/.h>\n                      ^\ncompilation terminated.\nscripts/Makefile.autoconf:72: recipe for target 'include/autoconf.mk' failed\nmake[1]: *** [include/autoconf.mk] Error 1\n------------------>8------------------\n\nSigned-off-by: Alexey Brodkin <abrodkin@synopsys.com>\n---\n arch/arc/Kconfig                     | 1 -\n arch/arm/Kconfig                     | 1 -\n arch/arm/cpu/armv7/exynos/Kconfig    | 1 -\n arch/arm/cpu/armv7/mx5/Kconfig       | 1 -\n arch/arm/cpu/armv7/mx6/Kconfig       | 1 -\n arch/arm/cpu/armv7/omap3/Kconfig     | 1 -\n arch/arm/cpu/armv7/omap4/Kconfig     | 1 -\n arch/arm/cpu/armv7/omap5/Kconfig     | 1 -\n arch/arm/cpu/armv7/rmobile/Kconfig   | 1 -\n arch/arm/cpu/armv7/s5pc1xx/Kconfig   | 1 -\n arch/arm/mach-at91/Kconfig           | 1 -\n arch/arm/mach-bcm283x/Kconfig        | 1 -\n arch/arm/mach-davinci/Kconfig        | 1 -\n arch/arm/mach-integrator/Kconfig     | 2 --\n arch/arm/mach-keystone/Kconfig       | 1 -\n arch/arm/mach-kirkwood/Kconfig       | 1 -\n arch/arm/mach-nomadik/Kconfig        | 1 -\n arch/arm/mach-orion5x/Kconfig        | 1 -\n arch/arm/mach-socfpga/Kconfig        | 1 -\n arch/arm/mach-tegra/Kconfig          | 1 -\n arch/arm/mach-tegra/tegra114/Kconfig | 1 -\n arch/arm/mach-tegra/tegra124/Kconfig | 1 -\n arch/arm/mach-tegra/tegra20/Kconfig  | 1 -\n arch/arm/mach-tegra/tegra30/Kconfig  | 1 -\n arch/arm/mach-zynq/Kconfig           | 1 -\n arch/avr32/Kconfig                   | 1 -\n arch/blackfin/Kconfig                | 1 -\n arch/m68k/Kconfig                    | 1 -\n arch/microblaze/Kconfig              | 1 -\n arch/mips/Kconfig                    | 1 -\n arch/nds32/Kconfig                   | 1 -\n arch/nios2/Kconfig                   | 1 -\n arch/openrisc/Kconfig                | 1 -\n arch/powerpc/Kconfig                 | 1 -\n arch/powerpc/cpu/mpc512x/Kconfig     | 1 -\n arch/powerpc/cpu/mpc5xx/Kconfig      | 1 -\n arch/powerpc/cpu/mpc5xxx/Kconfig     | 1 -\n arch/powerpc/cpu/mpc8260/Kconfig     | 1 -\n arch/powerpc/cpu/mpc83xx/Kconfig     | 1 -\n arch/powerpc/cpu/mpc85xx/Kconfig     | 1 -\n arch/powerpc/cpu/mpc86xx/Kconfig     | 1 -\n arch/powerpc/cpu/mpc8xx/Kconfig      | 1 -\n arch/powerpc/cpu/ppc4xx/Kconfig      | 1 -\n arch/sh/Kconfig                      | 1 -\n arch/sparc/Kconfig                   | 1 -\n board/amcc/canyonlands/Kconfig       | 1 -\n board/coreboot/Kconfig               | 1 -\n board/dbau1x00/Kconfig               | 1 -\n board/google/Kconfig                 | 1 -\n board/intel/Kconfig                  | 1 -\n board/micronas/vct/Kconfig           | 1 -\n board/seco/Kconfig                   | 2 --\n board/sunxi/Kconfig                  | 1 -\n 53 files changed, 55 deletions(-)\n\ndiff --git a/arch/arc/Kconfig b/arch/arc/Kconfig\nindex 925e312..640cda8 100644\n--- a/arch/arc/Kconfig\n+++ b/arch/arc/Kconfig\n@@ -129,7 +129,6 @@ config ARC_CACHE_LINE_SHIFT\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_TB100\n \tbool \"Support tb100\"\ndiff --git a/arch/arm/Kconfig b/arch/arm/Kconfig\nindex 9908b43..8eeb46c 100644\n--- a/arch/arm/Kconfig\n+++ b/arch/arm/Kconfig\n@@ -64,7 +64,6 @@ config SEMIHOSTING\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config ARCH_AT91\n \tbool \"Atmel AT91\"\ndiff --git a/arch/arm/cpu/armv7/exynos/Kconfig b/arch/arm/cpu/armv7/exynos/Kconfig\nindex 4a7d82f..f2fe748 100644\n--- a/arch/arm/cpu/armv7/exynos/Kconfig\n+++ b/arch/arm/cpu/armv7/exynos/Kconfig\n@@ -2,7 +2,6 @@ if ARCH_EXYNOS\n \n choice\n \tprompt \"EXYNOS board select\"\n-\toptional\n \n config TARGET_SMDKV310\n \tselect SUPPORT_SPL\ndiff --git a/arch/arm/cpu/armv7/mx5/Kconfig b/arch/arm/cpu/armv7/mx5/Kconfig\nindex 9f250c6..2d6c0ce 100644\n--- a/arch/arm/cpu/armv7/mx5/Kconfig\n+++ b/arch/arm/cpu/armv7/mx5/Kconfig\n@@ -12,7 +12,6 @@ config MX53\n \n choice\n \tprompt \"MX5 board select\"\n-\toptional\n \n config TARGET_USBARMORY\n \tbool \"Support USB armory\"\ndiff --git a/arch/arm/cpu/armv7/mx6/Kconfig b/arch/arm/cpu/armv7/mx6/Kconfig\nindex 10908c4..662596f 100644\n--- a/arch/arm/cpu/armv7/mx6/Kconfig\n+++ b/arch/arm/cpu/armv7/mx6/Kconfig\n@@ -27,7 +27,6 @@ config MX6SX\n \n choice\n \tprompt \"MX6 board select\"\n-\toptional\n \n config TARGET_SECOMX6\n \tbool \"Support secomx6 boards\"\ndiff --git a/arch/arm/cpu/armv7/omap3/Kconfig b/arch/arm/cpu/armv7/omap3/Kconfig\nindex b32a6b0..cc82c50 100644\n--- a/arch/arm/cpu/armv7/omap3/Kconfig\n+++ b/arch/arm/cpu/armv7/omap3/Kconfig\n@@ -2,7 +2,6 @@ if OMAP34XX\n \n choice\n \tprompt \"OMAP3 board select\"\n-\toptional\n \n config TARGET_AM3517_EVM\n \tbool \"AM3517 EVM\"\ndiff --git a/arch/arm/cpu/armv7/omap4/Kconfig b/arch/arm/cpu/armv7/omap4/Kconfig\nindex df27ea1..eccf897 100644\n--- a/arch/arm/cpu/armv7/omap4/Kconfig\n+++ b/arch/arm/cpu/armv7/omap4/Kconfig\n@@ -2,7 +2,6 @@ if OMAP44XX\n \n choice\n \tprompt \"OMAP4 board select\"\n-\toptional\n \n config TARGET_DUOVERO\n \tbool \"OMAP4430 Gumstix Duovero\"\ndiff --git a/arch/arm/cpu/armv7/omap5/Kconfig b/arch/arm/cpu/armv7/omap5/Kconfig\nindex 20c3bd9..aca862d 100644\n--- a/arch/arm/cpu/armv7/omap5/Kconfig\n+++ b/arch/arm/cpu/armv7/omap5/Kconfig\n@@ -2,7 +2,6 @@ if OMAP54XX\n \n choice\n \tprompt \"OMAP5 board select\"\n-\toptional\n \n config TARGET_CM_T54\n \tbool \"CompuLab CM-T54\"\ndiff --git a/arch/arm/cpu/armv7/rmobile/Kconfig b/arch/arm/cpu/armv7/rmobile/Kconfig\nindex ef56286..638b63d 100644\n--- a/arch/arm/cpu/armv7/rmobile/Kconfig\n+++ b/arch/arm/cpu/armv7/rmobile/Kconfig\n@@ -2,7 +2,6 @@ if RMOBILE\n \n choice\n \tprompt \"Renesus ARM SoCs board select\"\n-\toptional\n \n config TARGET_ARMADILLO_800EVA\n \tbool \"armadillo 800 eva board\"\ndiff --git a/arch/arm/cpu/armv7/s5pc1xx/Kconfig b/arch/arm/cpu/armv7/s5pc1xx/Kconfig\nindex 792ef59..65cc9eb 100644\n--- a/arch/arm/cpu/armv7/s5pc1xx/Kconfig\n+++ b/arch/arm/cpu/armv7/s5pc1xx/Kconfig\n@@ -2,7 +2,6 @@ if ARCH_S5PC1XX\n \n choice\n \tprompt \"S5PC1XX board select\"\n-\toptional\n \n config TARGET_S5P_GONI\n \tbool \"S5P Goni board\"\ndiff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig\nindex bbf4228..5dc2cb2 100644\n--- a/arch/arm/mach-at91/Kconfig\n+++ b/arch/arm/mach-at91/Kconfig\n@@ -2,7 +2,6 @@ if ARCH_AT91\n \n choice\n \tprompt \"Atmel AT91 board select\"\n-\toptional\n \n config TARGET_AT91RM9200EK\n \tbool \"Atmel AT91RM9200 evaluation kit\"\ndiff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig\nindex 2315a13..d40f505 100644\n--- a/arch/arm/mach-bcm283x/Kconfig\n+++ b/arch/arm/mach-bcm283x/Kconfig\n@@ -3,7 +3,6 @@ menu \"Broadcom BCM283X family\"\n \n choice\n \tprompt \"Broadcom BCM283X board select\"\n-\toptional\n \n config TARGET_RPI\n \tbool \"Raspberry Pi\"\ndiff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig\nindex e6cb390..3ef55d3 100644\n--- a/arch/arm/mach-davinci/Kconfig\n+++ b/arch/arm/mach-davinci/Kconfig\n@@ -2,7 +2,6 @@ if ARCH_DAVINCI\n \n choice\n \tprompt \"DaVinci board select\"\n-\toptional\n \n config TARGET_ENBW_CMC\n \tbool \"EnBW CMC board\"\ndiff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig\nindex c54d69d..8ffc544 100644\n--- a/arch/arm/mach-integrator/Kconfig\n+++ b/arch/arm/mach-integrator/Kconfig\n@@ -3,7 +3,6 @@ menu \"Integrator Options\"\n \n choice\n \tprompt \"Integrator platform select\"\n-\toptional\n \n config ARCH_INTEGRATOR_AP\n \tbool \"Support Integrator/AP platform\"\n@@ -19,7 +18,6 @@ config ARCH_CINTEGRATOR\n \n choice\n \tprompt \"Integrator core module select\"\n-\toptional\n \n config CM720T\n \tbool \"Core Module for ARM720T\"\ndiff --git a/arch/arm/mach-keystone/Kconfig b/arch/arm/mach-keystone/Kconfig\nindex 67f1a33..134ae87 100644\n--- a/arch/arm/mach-keystone/Kconfig\n+++ b/arch/arm/mach-keystone/Kconfig\n@@ -2,7 +2,6 @@ if ARCH_KEYSTONE\n \n choice\n \tprompt \"TI Keystone board select\"\n-\toptional\n \n config TARGET_K2HK_EVM\n \tbool \"TI Keystone 2 Kepler/Hawking EVM\"\ndiff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig\nindex 1261885..45c6687 100644\n--- a/arch/arm/mach-kirkwood/Kconfig\n+++ b/arch/arm/mach-kirkwood/Kconfig\n@@ -2,7 +2,6 @@ if KIRKWOOD\n \n choice\n \tprompt \"Marvell Kirkwood board select\"\n-\toptional\n \n config TARGET_OPENRD\n \tbool \"Marvell OpenRD Board\"\ndiff --git a/arch/arm/mach-nomadik/Kconfig b/arch/arm/mach-nomadik/Kconfig\nindex ba72a41..265f336 100644\n--- a/arch/arm/mach-nomadik/Kconfig\n+++ b/arch/arm/mach-nomadik/Kconfig\n@@ -2,7 +2,6 @@ if ARCH_NOMADIK\n \n choice\n \tprompt \"Nomadik board select\"\n-\toptional\n \n config NOMADIK_NHK8815\n \tbool \"ST 8815 Nomadik Hardware Kit\"\ndiff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig\nindex 7644b8d..291c511 100644\n--- a/arch/arm/mach-orion5x/Kconfig\n+++ b/arch/arm/mach-orion5x/Kconfig\n@@ -2,7 +2,6 @@ if ORION5X\n \n choice\n \tprompt \"Marvell Orion board select\"\n-\toptional\n \n config TARGET_EDMINIV2\n \tbool \"LaCie Ethernet Disk mini V2\"\ndiff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig\nindex e46c348..204efca 100644\n--- a/arch/arm/mach-socfpga/Kconfig\n+++ b/arch/arm/mach-socfpga/Kconfig\n@@ -2,7 +2,6 @@ if ARCH_SOCFPGA\n \n choice\n \tprompt \"Altera SOCFPGA board select\"\n-\toptional\n \n config TARGET_SOCFPGA_ARRIA5\n \tbool \"Altera SOCFPGA Arria V\"\ndiff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig\nindex 54bd648..ef77c84 100644\n--- a/arch/arm/mach-tegra/Kconfig\n+++ b/arch/arm/mach-tegra/Kconfig\n@@ -2,7 +2,6 @@ if TEGRA\n \n choice\n \tprompt \"Tegra SoC select\"\n-\toptional\n \n config TEGRA20\n \tbool \"Tegra20 family\"\ndiff --git a/arch/arm/mach-tegra/tegra114/Kconfig b/arch/arm/mach-tegra/tegra114/Kconfig\nindex 1047b92..31012bc 100644\n--- a/arch/arm/mach-tegra/tegra114/Kconfig\n+++ b/arch/arm/mach-tegra/tegra114/Kconfig\n@@ -2,7 +2,6 @@ if TEGRA114\n \n choice\n \tprompt \"Tegra114 board select\"\n-\toptional\n \n config TARGET_DALMORE\n \tbool \"NVIDIA Tegra114 Dalmore evaluation board\"\ndiff --git a/arch/arm/mach-tegra/tegra124/Kconfig b/arch/arm/mach-tegra/tegra124/Kconfig\nindex f3324ff..86c1301 100644\n--- a/arch/arm/mach-tegra/tegra124/Kconfig\n+++ b/arch/arm/mach-tegra/tegra124/Kconfig\n@@ -2,7 +2,6 @@ if TEGRA124\n \n choice\n \tprompt \"Tegra124 board select\"\n-\toptional\n \n config TARGET_JETSON_TK1\n \tbool \"NVIDIA Tegra124 Jetson TK1 board\"\ndiff --git a/arch/arm/mach-tegra/tegra20/Kconfig b/arch/arm/mach-tegra/tegra20/Kconfig\nindex 1bb8dff..7f09f81 100644\n--- a/arch/arm/mach-tegra/tegra20/Kconfig\n+++ b/arch/arm/mach-tegra/tegra20/Kconfig\n@@ -2,7 +2,6 @@ if TEGRA20\n \n choice\n \tprompt \"Tegra20 board select\"\n-\toptional\n \n config TARGET_HARMONY\n \tbool \"NVIDIA Tegra20 Harmony evaluation board\"\ndiff --git a/arch/arm/mach-tegra/tegra30/Kconfig b/arch/arm/mach-tegra/tegra30/Kconfig\nindex e78331e..3abdc7b 100644\n--- a/arch/arm/mach-tegra/tegra30/Kconfig\n+++ b/arch/arm/mach-tegra/tegra30/Kconfig\n@@ -2,7 +2,6 @@ if TEGRA30\n \n choice\n \tprompt \"Tegra30 board select\"\n-\toptional\n \n config TARGET_APALIS_T30\n \tbool \"Toradex Apalis T30 board\"\ndiff --git a/arch/arm/mach-zynq/Kconfig b/arch/arm/mach-zynq/Kconfig\nindex 1de5b07..6b0e295 100644\n--- a/arch/arm/mach-zynq/Kconfig\n+++ b/arch/arm/mach-zynq/Kconfig\n@@ -10,7 +10,6 @@ config ZYNQ_CUSTOM_INIT\n \n choice\n \tprompt \"Xilinx Zynq board select\"\n-\toptional\n \n config TARGET_ZYNQ_ZED\n \tbool \"Zynq ZedBoard\"\ndiff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig\nindex eb33774..801b9cc 100644\n--- a/arch/avr32/Kconfig\n+++ b/arch/avr32/Kconfig\n@@ -6,7 +6,6 @@ config SYS_ARCH\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_ATNGW100\n \tbool \"Support atngw100\"\ndiff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig\nindex 0a2fb4d..31913fe 100644\n--- a/arch/blackfin/Kconfig\n+++ b/arch/blackfin/Kconfig\n@@ -6,7 +6,6 @@ config SYS_ARCH\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_BCT_BRETTL2\n \tbool \"Support bct-brettl2\"\ndiff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig\nindex 26509b7..69cb0f7 100644\n--- a/arch/m68k/Kconfig\n+++ b/arch/m68k/Kconfig\n@@ -114,7 +114,6 @@ config M548x\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_M52277EVB\n \tbool \"Support M52277EVB\"\ndiff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig\nindex 077b2a7..6f419f0 100644\n--- a/arch/microblaze/Kconfig\n+++ b/arch/microblaze/Kconfig\n@@ -6,7 +6,6 @@ config SYS_ARCH\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_MICROBLAZE_GENERIC\n \tbool \"Support microblaze-generic\"\ndiff --git a/arch/mips/Kconfig b/arch/mips/Kconfig\nindex 7f7e258..87b94ac 100644\n--- a/arch/mips/Kconfig\n+++ b/arch/mips/Kconfig\n@@ -10,7 +10,6 @@ config SYS_CPU\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_QEMU_MIPS\n \tbool \"Support qemu-mips\"\ndiff --git a/arch/nds32/Kconfig b/arch/nds32/Kconfig\nindex 98b0282..81b0a01 100644\n--- a/arch/nds32/Kconfig\n+++ b/arch/nds32/Kconfig\n@@ -6,7 +6,6 @@ config SYS_ARCH\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_ADP_AG101\n \tbool \"Support adp-ag101\"\ndiff --git a/arch/nios2/Kconfig b/arch/nios2/Kconfig\nindex 8ae7f6e..b3be7b5 100644\n--- a/arch/nios2/Kconfig\n+++ b/arch/nios2/Kconfig\n@@ -6,7 +6,6 @@ config SYS_ARCH\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_NIOS2_GENERIC\n \tbool \"Support nios2-generic\"\ndiff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig\nindex 11014d1..4d62b4c 100644\n--- a/arch/openrisc/Kconfig\n+++ b/arch/openrisc/Kconfig\n@@ -6,7 +6,6 @@ config SYS_ARCH\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_OPENRISC_GENERIC\n \tbool \"Support openrisc-generic\"\ndiff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig\nindex 3b3f446..8e5a3e2 100644\n--- a/arch/powerpc/Kconfig\n+++ b/arch/powerpc/Kconfig\n@@ -6,7 +6,6 @@ config SYS_ARCH\n \n choice\n \tprompt \"CPU select\"\n-\toptional\n \n config MPC512X\n \tbool \"MPC512X\"\ndiff --git a/arch/powerpc/cpu/mpc512x/Kconfig b/arch/powerpc/cpu/mpc512x/Kconfig\nindex 53450ae..a0f0ede 100644\n--- a/arch/powerpc/cpu/mpc512x/Kconfig\n+++ b/arch/powerpc/cpu/mpc512x/Kconfig\n@@ -6,7 +6,6 @@ config SYS_CPU\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_PDM360NG\n \tbool \"Support pdm360ng\"\ndiff --git a/arch/powerpc/cpu/mpc5xx/Kconfig b/arch/powerpc/cpu/mpc5xx/Kconfig\nindex 5275447..aad4a7c 100644\n--- a/arch/powerpc/cpu/mpc5xx/Kconfig\n+++ b/arch/powerpc/cpu/mpc5xx/Kconfig\n@@ -6,7 +6,6 @@ config SYS_CPU\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_CMI_MPC5XX\n \tbool \"Support cmi_mpc5xx\"\ndiff --git a/arch/powerpc/cpu/mpc5xxx/Kconfig b/arch/powerpc/cpu/mpc5xxx/Kconfig\nindex 5d49228..eec9d7d 100644\n--- a/arch/powerpc/cpu/mpc5xxx/Kconfig\n+++ b/arch/powerpc/cpu/mpc5xxx/Kconfig\n@@ -6,7 +6,6 @@ config SYS_CPU\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_A3M071\n \tbool \"Support a3m071\"\ndiff --git a/arch/powerpc/cpu/mpc8260/Kconfig b/arch/powerpc/cpu/mpc8260/Kconfig\nindex e93732d..55941c8 100644\n--- a/arch/powerpc/cpu/mpc8260/Kconfig\n+++ b/arch/powerpc/cpu/mpc8260/Kconfig\n@@ -6,7 +6,6 @@ config SYS_CPU\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_KM82XX\n \tbool \"Support km82xx\"\ndiff --git a/arch/powerpc/cpu/mpc83xx/Kconfig b/arch/powerpc/cpu/mpc83xx/Kconfig\nindex 3fb901f..88a3bd6 100644\n--- a/arch/powerpc/cpu/mpc83xx/Kconfig\n+++ b/arch/powerpc/cpu/mpc83xx/Kconfig\n@@ -6,7 +6,6 @@ config SYS_CPU\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_MPC8308_P1M\n \tbool \"Support mpc8308_p1m\"\ndiff --git a/arch/powerpc/cpu/mpc85xx/Kconfig b/arch/powerpc/cpu/mpc85xx/Kconfig\nindex 3e8d0b1..aff5fdb 100644\n--- a/arch/powerpc/cpu/mpc85xx/Kconfig\n+++ b/arch/powerpc/cpu/mpc85xx/Kconfig\n@@ -6,7 +6,6 @@ config SYS_CPU\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_SBC8548\n \tbool \"Support sbc8548\"\ndiff --git a/arch/powerpc/cpu/mpc86xx/Kconfig b/arch/powerpc/cpu/mpc86xx/Kconfig\nindex fe1859d..14e8b1a 100644\n--- a/arch/powerpc/cpu/mpc86xx/Kconfig\n+++ b/arch/powerpc/cpu/mpc86xx/Kconfig\n@@ -6,7 +6,6 @@ config SYS_CPU\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_SBC8641D\n \tbool \"Support sbc8641d\"\ndiff --git a/arch/powerpc/cpu/mpc8xx/Kconfig b/arch/powerpc/cpu/mpc8xx/Kconfig\nindex 79cee35..e8bcbe9 100644\n--- a/arch/powerpc/cpu/mpc8xx/Kconfig\n+++ b/arch/powerpc/cpu/mpc8xx/Kconfig\n@@ -6,7 +6,6 @@ config SYS_CPU\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_TQM823L\n \tbool \"Support TQM823L\"\ndiff --git a/arch/powerpc/cpu/ppc4xx/Kconfig b/arch/powerpc/cpu/ppc4xx/Kconfig\nindex 10b86e0..4d5954a 100644\n--- a/arch/powerpc/cpu/ppc4xx/Kconfig\n+++ b/arch/powerpc/cpu/ppc4xx/Kconfig\n@@ -6,7 +6,6 @@ config SYS_CPU\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_CSB272\n \tbool \"Support csb272\"\ndiff --git a/arch/sh/Kconfig b/arch/sh/Kconfig\nindex 6ac22af..ff8f5b5 100644\n--- a/arch/sh/Kconfig\n+++ b/arch/sh/Kconfig\n@@ -29,7 +29,6 @@ config SH_32BIT\n \n choice\n \tprompt \"Target select\"\n-\toptional\n \n config TARGET_RSK7203\n \tbool \"RSK+ 7203\"\ndiff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig\nindex 04dc08f..2df09b2 100644\n--- a/arch/sparc/Kconfig\n+++ b/arch/sparc/Kconfig\n@@ -14,7 +14,6 @@ config LEON3\n \n choice\n \tprompt \"Board select\"\n-\toptional\n \n config TARGET_GRSIM_LEON2\n \tbool \"GRSIM simulating a LEON2 board\"\ndiff --git a/board/amcc/canyonlands/Kconfig b/board/amcc/canyonlands/Kconfig\nindex a655dbc..ef66ad4 100644\n--- a/board/amcc/canyonlands/Kconfig\n+++ b/board/amcc/canyonlands/Kconfig\n@@ -11,7 +11,6 @@ config SYS_CONFIG_NAME\n \n choice BOARD_TYPE\n \tprompt \"Select which board to build for\"\n-\toptional\n \n config CANYONLANDS\n \tbool \"Glacier\"\ndiff --git a/board/coreboot/Kconfig b/board/coreboot/Kconfig\nindex ede6065..dc9b70f 100644\n--- a/board/coreboot/Kconfig\n+++ b/board/coreboot/Kconfig\n@@ -8,7 +8,6 @@ if VENDOR_COREBOOT\n \n choice\n \tprompt \"Mainboard model\"\n-\toptional\n \n config TARGET_COREBOOT\n \tbool \"coreboot\"\ndiff --git a/board/dbau1x00/Kconfig b/board/dbau1x00/Kconfig\nindex b813adb..1286e45 100644\n--- a/board/dbau1x00/Kconfig\n+++ b/board/dbau1x00/Kconfig\n@@ -13,7 +13,6 @@ menu \"dbau1x00 board options\"\n \n choice\n \tprompt \"Select au1x00 SoC type\"\n-\toptional\n \n config DBAU1100\n \tbool \"Select AU1100\"\ndiff --git a/board/google/Kconfig b/board/google/Kconfig\nindex e9559c9..302f68e 100644\n--- a/board/google/Kconfig\n+++ b/board/google/Kconfig\n@@ -8,7 +8,6 @@ if VENDOR_GOOGLE\n \n choice\n \tprompt \"Mainboard model\"\n-\toptional\n \n config TARGET_CHROMEBOOK_LINK\n \tbool \"Chromebook link\"\ndiff --git a/board/intel/Kconfig b/board/intel/Kconfig\nindex 3d9ecf0..7fe21b9 100644\n--- a/board/intel/Kconfig\n+++ b/board/intel/Kconfig\n@@ -8,7 +8,6 @@ if VENDOR_INTEL\n \n choice\n \tprompt \"Mainboard model\"\n-\toptional\n \n config TARGET_CROWNBAY\n \tbool \"Crown Bay\"\ndiff --git a/board/micronas/vct/Kconfig b/board/micronas/vct/Kconfig\nindex c518079..288a1ae 100644\n--- a/board/micronas/vct/Kconfig\n+++ b/board/micronas/vct/Kconfig\n@@ -13,7 +13,6 @@ menu \"vct board options\"\n \n choice\n \tprompt \"Board variant\"\n-\toptional\n \n config VCT_PLATINUM\n \tbool \"Enable VCT_PLATINUM\"\ndiff --git a/board/seco/Kconfig b/board/seco/Kconfig\nindex af16697..dcb1ac8 100644\n--- a/board/seco/Kconfig\n+++ b/board/seco/Kconfig\n@@ -2,7 +2,6 @@ if TARGET_SECOMX6\n \n choice\n \tprompt \"SECO i.MX6 Board variant\"\n-\toptional\n \n config SECOMX6_Q7\n \tbool \"Q7\"\n@@ -17,7 +16,6 @@ endchoice\n \n choice\n \tprompt \"SECO i.MX6 SoC variant\"\n-\toptional\n \n config SECOMX6Q\n \tbool \"i.MX6Q\"\ndiff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig\nindex 2a1cd3c..808de26 100644\n--- a/board/sunxi/Kconfig\n+++ b/board/sunxi/Kconfig\n@@ -18,7 +18,6 @@ config SUNXI_GEN_SUN6I\n \n choice\n \tprompt \"Sunxi SoC Variant\"\n-\toptional\n \n config MACH_SUN4I\n \tbool \"sun4i (Allwinner A10)\"\n-- \n2.4.3\n\n"
  },
  {
    "path": "boot/uboot/2016.07/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch",
    "content": "From 7c8d81605302e7d7fdd3e7d8eb69302bddc64a2c Mon Sep 17 00:00:00 2001\nFrom: Alexey Brodkin <abrodkin@synopsys.com>\nDate: Fri, 16 Sep 2016 12:12:26 +0300\nSubject: [PATCH] arc: Use -mcpu=XXX instead of obsolete -marcXXX\n\nWith newer ARC tools old way of CPU specification gets obsolete,\nso we're switching to newer and more common way of setting \"-mcpu\".\n\nSigned-off-by: Alexey Brodkin <abrodkin@synopsys.com>\n---\n arch/arc/config.mk | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/arch/arc/config.mk b/arch/arc/config.mk\nindex 7c974f0..13676bd 100644\n--- a/arch/arc/config.mk\n+++ b/arch/arc/config.mk\n@@ -31,15 +31,15 @@ CONFIG_MMU = 1\n endif\n \n ifdef CONFIG_CPU_ARC750D\n-PLATFORM_CPPFLAGS += -marc700\n+PLATFORM_CPPFLAGS += -mcpu=arc700\n endif\n \n ifdef CONFIG_CPU_ARC770D\n-PLATFORM_CPPFLAGS += -marc700 -mlock -mswape\n+PLATFORM_CPPFLAGS += -mcpu=arc700 -mlock -mswape\n endif\n \n ifdef CONFIG_CPU_ARCEM6\n-PLATFORM_CPPFLAGS += -marcem\n+PLATFORM_CPPFLAGS += -mcpu=arcem\n endif\n \n ifdef CONFIG_CPU_ARCHS34\n-- \n2.7.4\n\n"
  },
  {
    "path": "boot/uboot/2016.09.01/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch",
    "content": "From 7c8d81605302e7d7fdd3e7d8eb69302bddc64a2c Mon Sep 17 00:00:00 2001\nFrom: Alexey Brodkin <abrodkin@synopsys.com>\nDate: Fri, 16 Sep 2016 12:12:26 +0300\nSubject: [PATCH] arc: Use -mcpu=XXX instead of obsolete -marcXXX\n\nWith newer ARC tools old way of CPU specification gets obsolete,\nso we're switching to newer and more common way of setting \"-mcpu\".\n\nSigned-off-by: Alexey Brodkin <abrodkin@synopsys.com>\n---\n arch/arc/config.mk | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/arch/arc/config.mk b/arch/arc/config.mk\nindex 7c974f0..13676bd 100644\n--- a/arch/arc/config.mk\n+++ b/arch/arc/config.mk\n@@ -31,15 +31,15 @@ CONFIG_MMU = 1\n endif\n \n ifdef CONFIG_CPU_ARC750D\n-PLATFORM_CPPFLAGS += -marc700\n+PLATFORM_CPPFLAGS += -mcpu=arc700\n endif\n \n ifdef CONFIG_CPU_ARC770D\n-PLATFORM_CPPFLAGS += -marc700 -mlock -mswape\n+PLATFORM_CPPFLAGS += -mcpu=arc700 -mlock -mswape\n endif\n \n ifdef CONFIG_CPU_ARCEM6\n-PLATFORM_CPPFLAGS += -marcem\n+PLATFORM_CPPFLAGS += -mcpu=arcem\n endif\n \n ifdef CONFIG_CPU_ARCHS34\n-- \n2.7.4\n\n"
  },
  {
    "path": "boot/uboot/Config.in",
    "content": "config BR2_TARGET_UBOOT\n\tbool \"U-Boot\"\n\thelp\n\t  Build \"Das U-Boot\" Boot Monitor\n\n\t  https://www.denx.de/wiki/U-Boot\n\nif BR2_TARGET_UBOOT\nchoice\n\tprompt \"Build system\"\n\tdefault BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG if BR2_TARGET_UBOOT_LATEST_VERSION\n\tdefault BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY\n\nconfig BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG\n\tbool \"Kconfig\"\n\thelp\n\t  Select this option if you use a recent U-Boot version (2015.04\n\t  or newer), so that we use the Kconfig build system.\n\nconfig BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY\n\tbool \"Legacy\"\n\thelp\n\t  Select this option if you use an old U-Boot (older than\n\t  2015.04), so that we use the old build system.\n\nendchoice\n\nif BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY\nconfig BR2_TARGET_UBOOT_BOARDNAME\n\tstring \"U-Boot board name\"\n\thelp\n\t  One of U-Boot supported boards to be built.\n\t  This will be suffixed with _config to meet U-Boot standard\n\t  naming. See boards.cfg in U-Boot source code for the list of\n\t  available configurations.\nendif\n\nchoice\n\tprompt \"U-Boot Version\"\n\thelp\n\t  Select the specific U-Boot version you want to use\n\nconfig BR2_TARGET_UBOOT_LATEST_VERSION\n\tbool \"2021.10\"\n\nconfig BR2_TARGET_UBOOT_CUSTOM_VERSION\n\tbool \"Custom version\"\n\thelp\n\t  This option allows to use a specific official versions\n\nconfig BR2_TARGET_UBOOT_CUSTOM_TARBALL\n\tbool \"Custom tarball\"\n\nconfig BR2_TARGET_UBOOT_CUSTOM_GIT\n\tbool \"Custom Git repository\"\n\nconfig BR2_TARGET_UBOOT_CUSTOM_HG\n\tbool \"Custom Mercurial repository\"\n\nconfig BR2_TARGET_UBOOT_CUSTOM_SVN\n\tbool \"Custom Subversion repository\"\n\nendchoice\n\nconfig BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE\n\tstring \"U-Boot version\"\n\tdepends on BR2_TARGET_UBOOT_CUSTOM_VERSION\n\nconfig BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION\n\tstring \"URL of custom U-Boot tarball\"\n\tdepends on BR2_TARGET_UBOOT_CUSTOM_TARBALL\n\nif BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || BR2_TARGET_UBOOT_CUSTOM_SVN\n\nconfig BR2_TARGET_UBOOT_CUSTOM_REPO_URL\n\tstring \"URL of custom repository\"\n\nconfig BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION\n\tstring \"Custom repository version\"\n\thelp\n\t  Revision to use in the typical format used by\n\t  Git/Mercurial/Subversion E.G. a sha id, a tag, branch, ..\n\nendif\n\nconfig BR2_TARGET_UBOOT_VERSION\n\tstring\n\tdefault \"2021.10\"\tif BR2_TARGET_UBOOT_LATEST_VERSION\n\tdefault BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE \\\n\t\tif BR2_TARGET_UBOOT_CUSTOM_VERSION\n\tdefault \"custom\"\tif BR2_TARGET_UBOOT_CUSTOM_TARBALL\n\tdefault BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION \\\n\t\tif BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || BR2_TARGET_UBOOT_CUSTOM_SVN\n\nconfig BR2_TARGET_UBOOT_PATCH\n\tstring \"Custom U-Boot patches\"\n\tdefault BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR if BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR != \"\"  # legacy\n\thelp\n\t  A space-separated list of patches to apply to U-Boot.\n\t  Each patch can be described as an URL, a local file path,\n\t  or a directory. In the case of a directory, all files\n\t  matching *.patch in the directory will be applied.\n\n\t  Most users may leave this empty\n\nif BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG\nchoice\n\tprompt \"U-Boot configuration\"\n\tdefault BR2_TARGET_UBOOT_USE_DEFCONFIG\n\nconfig BR2_TARGET_UBOOT_USE_DEFCONFIG\n\tbool \"Using an in-tree board defconfig file\"\n\nconfig BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG\n\tbool \"Using a custom board (def)config file\"\n\nendchoice\n\nconfig BR2_TARGET_UBOOT_BOARD_DEFCONFIG\n\tstring \"Board defconfig\"\n\tdepends on BR2_TARGET_UBOOT_USE_DEFCONFIG\n\thelp\n\t  Name of the board for which U-Boot should be built, without\n\t  the _defconfig suffix.\n\nconfig BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE\n\tstring \"Configuration file path\"\n\tdepends on BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG\n\thelp\n\t  Path to the U-Boot configuration file.\n\nconfig BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES\n\tstring \"Additional configuration fragment files\"\n\thelp\n\t  A space-separated list of configuration fragment files,\n\t  that will be merged to the main U-Boot configuration file.\nendif\n\nconfig BR2_TARGET_UBOOT_NEEDS_DTC\n\tbool \"U-Boot needs dtc\"\n\tselect BR2_PACKAGE_HOST_DTC\n\thelp\n\t  Select this option if your U-Boot board configuration\n\t  requires the Device Tree compiler to be available.\n\nconfig BR2_TARGET_UBOOT_NEEDS_PYTHON\n\tbool\n\nchoice\n\tbool \"U-Boot needs host Python\"\n\nconfig BR2_TARGET_UBOOT_NEEDS_PYTHON_NONE\n\tbool \"no\"\n\tdepends on !BR2_TARGET_UBOOT_NEEDS_PYTHON\n\thelp\n\t  Select this option if U-Boot does not need any\n\t  host python to build.\n\nconfig BR2_TARGET_UBOOT_NEEDS_PYTHON2\n\tbool \"python 2.x\"\n\thelp\n\t  Select this option if U-Boot needs a host Python 2.x\n\t  interpreter. This is the case for some U-Boot\n\t  configurations, prior to U-Boot 2020.01.\n\nconfig BR2_TARGET_UBOOT_NEEDS_PYTHON3\n\tbool \"python 3.x\"\n\thelp\n\t  Select this option if U-Boot needs a host Python 3.x\n\t  interpreter. This is the case for some U-Boot\n\t  configurations, after U-Boot 2020.01.\n\nendchoice\n\nconfig BR2_TARGET_UBOOT_NEEDS_PYLIBFDT\n\tbool \"U-Boot needs pylibfdt\"\n\tselect BR2_TARGET_UBOOT_NEEDS_PYTHON\n\thelp\n\t  Select this option if your U-Boot board configuration\n\t  requires the Python libfdt library to be available.\n\nconfig BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS\n\tbool \"U-Boot needs pyelftools\"\n\tselect BR2_TARGET_UBOOT_NEEDS_PYTHON\n\thelp\n\t  Select this option if your U-Boot board configuration\n\t  requires the Python pyelftools library to be available.\n\t  This is used by some rockchip SOCs for elf parsing.\n\t  For example: rk3399 soc boards.\n\nconfig BR2_TARGET_UBOOT_NEEDS_OPENSSL\n\tbool \"U-Boot needs OpenSSL\"\n\thelp\n\t  Select this option if your U-Boot board configuration\n\t  requires OpenSSL to be available on the host. This is\n\t  typically the case when the board configuration has\n\t  CONFIG_FIT_SIGNATURE enabled.\n\nconfig BR2_TARGET_UBOOT_NEEDS_LZOP\n\tbool \"U-Boot needs lzop\"\n\thelp\n\t  Select this option if your U-Boot board configuration\n\t  requires lzop to be available on the host. This is typically\n\t  the case when the board configuration has CONFIG_SPL_LZO\n\t  enabled.\n\nconfig BR2_TARGET_UBOOT_NEEDS_ATF_BL31\n\tbool \"U-Boot needs ATF BL31\"\n\tdepends on BR2_TARGET_ARM_TRUSTED_FIRMWARE\n\tdepends on !BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33\n\tselect BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31\n\thelp\n\t  Some specific platforms (such as Allwinner A64/H5)\n\t  encapsulate the BL31 part of ATF inside U-Boot. This option\n\t  makes sure ATF gets built prior to U-Boot, and that the BL31\n\t  variable pointing to ATF's BL31 binary, is passed during the\n\t  Buildroot build.\n\nchoice\n\tprompt \"U-Boot ATF BL31 format\"\n\tdefault BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN\n\tdepends on BR2_TARGET_UBOOT_NEEDS_ATF_BL31\n\nconfig BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN\n\tbool \"bl31.bin\"\n\nconfig BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF\n\tbool \"bl31.elf\"\n\nendchoice\n\nconfig BR2_TARGET_UBOOT_NEEDS_OPENSBI\n\tbool \"U-Boot needs OpenSBI\"\n\tdepends on BR2_TARGET_OPENSBI\n\thelp\n\t  Some RISC-V platforms (such as SiFive HiFive Unleashed)\n\t  encapsulate the OpenSBI firmware image inside U-Boot.\n\t  This option makes sure OpenSBI gets built prior to U-Boot,\n\t  and that the OpenSBI variable pointing to OpenSBI binary,\n\t  is passed during the Buildroot build.\n\nconfig BR2_TARGET_UBOOT_NEEDS_IMX_FIRMWARE\n\tbool \"U-Boot needs firmware-imx\"\n\tdepends on BR2_PACKAGE_FIRMWARE_IMX\n\tdepends on BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW || \\\n\t\tBR2_PACKAGE_FIRMWARE_IMX_NEEDS_HDMI_FW\n\thelp\n\t  Some i.MX8 platforms (such as i.MX8 M, i.MX 8M Mini, i.MX 8M\n\t  Nano) encapsulate NXP specific firmware (DDR, HDMI) inside\n\t  U-Boot.\n\t  This option makes sure that the i.MX firmwares are copied into\n\t  the U-Boot source directory.\n\nmenu \"U-Boot binary format\"\n\nconfig BR2_TARGET_UBOOT_FORMAT_AIS\n\tbool \"u-boot.ais\"\n\thelp\n\t  AIS (Application Image Script) is a format defined by TI.\n\t  It is required to load code/data on OMAP-L1 processors.\n\t  u-boot.ais contains U-Boot with the SPL support.\n\nconfig BR2_TARGET_UBOOT_FORMAT_BIN\n\tbool \"u-boot.bin\"\n\tdefault y\n\nconfig BR2_TARGET_UBOOT_FORMAT_DTB\n\tbool \"u-boot.dtb\"\n\nconfig BR2_TARGET_UBOOT_FORMAT_DTB_BIN\n\tbool \"u-boot-dtb.bin\"\n\nconfig BR2_TARGET_UBOOT_FORMAT_NAND_BIN\n\tbool \"u-boot-nand.bin\"\n\nconfig BR2_TARGET_UBOOT_FORMAT_ELF\n\tbool \"u-boot.elf\"\n\nconfig BR2_TARGET_UBOOT_FORMAT_IMG\n\tbool \"u-boot.img\"\n\nconfig BR2_TARGET_UBOOT_FORMAT_DTB_IMG\n\tbool \"u-boot-dtb.img\"\n\nconfig BR2_TARGET_UBOOT_FORMAT_IMX\n\tbool \"u-boot.imx\"\n\nconfig BR2_TARGET_UBOOT_FORMAT_DTB_IMX\n\tbool \"u-boot-dtb.imx\"\n\nconfig BR2_TARGET_UBOOT_FORMAT_ITB\n\tbool \"u-boot.itb\"\n\nconfig BR2_TARGET_UBOOT_FORMAT_KWB\n\tbool \"u-boot.kwb (Marvell)\"\n\tdepends on BR2_arm\n\nconfig BR2_TARGET_UBOOT_FORMAT_NAND\n\tbool \"u-boot.nand (Freescale i.MX28)\"\n\tdepends on BR2_arm\n\thelp\n\t  This is Freescale i.MX28 BootStream format (.sb), with a\n\t  header for booting from a NAND flash.\n\n\t  U-Boot includes an mxsboot tool to generate this format,\n\t  starting from 2011.12.\n\n\t  There are two possibilities when preparing an image writable\n\t  to NAND flash:\n\t  1) The NAND was not written at all yet or the BCB (Boot\n\t  Control Blocks) is broken. In this case, the NAND image\n\t  'u-boot.nand' needs to written.\n\t  2) The NAND flash was already written with a good BCB. This\n\t  applies after 'u-boot.nand' was correctly written. There is no\n\t  need to write the BCB again. In this case, the bootloader can\n\t  be upgraded by writing 'u-boot.sb'.\n\n\t  To satisfy both cases, the 'u-boot.nand' image obtained from\n\t  mxsboot as well as the U-Boot make target 'u-boot.sb' are\n\t  copied to the binaries directory.\n\n\t  See doc/README.mxs (or doc/README.mx28_common before 2013.07)\n\nif BR2_TARGET_UBOOT_FORMAT_NAND\n\nconfig BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE\n\tint \"NAND page size\"\n\tdefault 2048\n\thelp\n\t  The NAND page size of the targets NAND flash in bytes as a\n\t  decimal integer value.\n\n\t  The value provided here is passed to the -w option of mxsboot.\n\nconfig BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE\n\tint \"NAND OOB size\"\n\tdefault 64\n\thelp\n\t  The NAND OOB size of the targets NAND flash in bytes as a\n\t  decimal integer value.\n\n\t  The value provided here is passed to the -o option of mxsboot.\n\nconfig BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE\n\tint \"NAND erase size\"\n\tdefault 131072\n\thelp\n\t  The NAND eraseblock size of the targets NAND flash in bytes as\n\t  a decimal integer value.\n\n\t  The value provided here is passed to the -e option of mxsboot.\n\nendif\n\nconfig BR2_TARGET_UBOOT_FORMAT_SB\n\tbool \"u-boot.sb (Freescale i.MX28)\"\n\tdepends on BR2_arm\n\nconfig BR2_TARGET_UBOOT_FORMAT_SD\n\tbool \"u-boot.sd (Freescale i.MX28)\"\n\tdepends on BR2_arm\n\thelp\n\t  This is Freescale i.MX28 SB format, with a header for booting\n\t  from an SD card.\n\n\t  U-Boot includes an mxsboot tool to generate this format,\n\t  starting from 2011.12.\n\n\t  See doc/README.mxs (or doc/README.mx28_common before 2013.07)\n\nconfig BR2_TARGET_UBOOT_FORMAT_STM32\n\tbool \"u-boot.stm32\"\n\tdepends on BR2_arm\n\nconfig BR2_TARGET_UBOOT_FORMAT_CUSTOM\n\tbool \"Custom (specify below)\"\n\thelp\n\t  On some platforms, the standard U-Boot binary is not called\n\t  u-boot.bin, but u-boot<something>.bin. If this is your case,\n\t  you should select this option and specify the correct name(s)\n\t  in BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME.\n\nconfig BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME\n\tstring \"U-Boot binary format: custom names\"\n\tdepends on BR2_TARGET_UBOOT_FORMAT_CUSTOM\n\thelp\n\t  In case the U-Boot binary for the target platform is not among\n\t  the default names, one or more custom names can be listed\n\t  here.\n\t  Use space to separate multiple names.\n\t  Example:\n\t  u-boot_magic.bin\n\nendmenu\n\nconfig BR2_TARGET_UBOOT_OMAP_IFT\n\tbool \"produce a .ift signed image (OMAP)\"\n\tdepends on BR2_TARGET_UBOOT_FORMAT_BIN\n\tdepends on BR2_arm || BR2_armeb\n\tselect BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS\n\thelp\n\t  Use gpsign to produce an image of u-boot.bin signed with\n\t  a Configuration Header for booting on OMAP processors.\n\t  This allows U-Boot to boot without the need for an\n\t  intermediate bootloader (e.g. x-loader) if it is written\n\t  on the first sector of the boot medium.\n\t  This only works for some media, such as NAND. Check your\n\t  chip documentation for details. You might also want to\n\t  read the documentation of gpsign, the tool that generates\n\t  the .ift image, at:\n\t  https://github.com/nmenon/omap-u-boot-utils/blob/master/README\n\nif BR2_TARGET_UBOOT_OMAP_IFT\n\nconfig BR2_TARGET_UBOOT_OMAP_IFT_CONFIG\n\tstring \"gpsign Configuration Header config file\"\n\thelp\n\t  The Configuration Header (CH) config file defines the\n\t  desired content of the CH for the signed image.\n\t  It usually contains external RAM settings and\n\t  possibly other external devices initialization.\n\t  The omap-u-boot-utils software contains example\n\t  configuration files for some boards:\n\t  https://github.com/nmenon/omap-u-boot-utils/tree/master/configs\n\nendif\n\nconfig BR2_TARGET_UBOOT_SPL\n\tbool \"Install U-Boot SPL binary image\"\n\tdepends on !BR2_TARGET_XLOADER\n\thelp\n\t  Install the U-Boot SPL binary image to the images\n\t  directory.\n\t  SPL is a first stage bootloader loaded into internal\n\t  memory in charge of enabling and configuring the\n\t  external memory (DDR), and load the u-boot program\n\t  into DDR.\n\nconfig BR2_TARGET_UBOOT_SPL_NAME\n\tstring \"U-Boot SPL/TPL binary image name(s)\"\n\tdefault \"spl/u-boot-spl.bin\"\n\tdepends on BR2_TARGET_UBOOT_SPL\n\thelp\n\t  A space-separated list of SPL/TPL binaries, generated during\n\t  u-boot build. For most platform SPL name is spl/u-boot-spl.bin\n\t  and TPL name is tpl/u-boot-tpl.bin but not always. SPL name is\n\t  MLO on OMAP and SPL on i.MX6 for example.\n\nconfig BR2_TARGET_UBOOT_ZYNQ_IMAGE\n\tbool \"Generate image for Xilinx Zynq\"\n\tdepends on BR2_arm\n\tdepends on BR2_TARGET_UBOOT_SPL\n\tdepends on BR2_TARGET_UBOOT_FORMAT_DTB_IMG\n\thelp\n\t  Generate the BOOT.BIN file from U-Boot's SPL. The image\n\t  boots the Xilinx Zynq chip without any FPGA bitstream.\n\t  A bitstream can be loaded by the U-Boot. The SPL searchs\n\t  for u-boot-dtb.img file so this U-Boot format is required\n\t  to be set.\n\nconfig BR2_TARGET_UBOOT_ZYNQMP\n\tbool \"Boot on the Xilinx ZynqMP SoCs\"\n\tdepends on BR2_aarch64\n\thelp\n\t  Enable options specific to the Xilinx ZynqMP family of SoCs.\n\nif BR2_TARGET_UBOOT_ZYNQMP\n\nconfig BR2_TARGET_UBOOT_ZYNQMP_PMUFW\n\tstring \"PMU firmware location\"\n\tdepends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG\n\thelp\n\t  Location of a PMU firmware binary.\n\n\t  If not empty, instructs the U-Boot build process to generate\n\t  a boot.bin (to be loaded by the ZynqMP boot ROM) containing\n\t  both the U-Boot SPL and the PMU firmware in the\n\t  Xilinx-specific boot format.\n\n\t  The value can be an absolute or relative path, and will be\n\t  used directly from where it is located, or an URI\n\t  (e.g. http://...), and it will be downloaded and used from\n\t  the download directory.\n\n\t  If empty, the generated boot.bin will not contain a PMU\n\t  firmware.\n\n\t  This feature requires U-Boot >= 2018.07.\n\nconfig BR2_TARGET_UBOOT_ZYNQMP_PM_CFG\n\tstring \"PMU configuration location\"\n\tdepends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG\n\thelp\n\t  Location of a PMU configuration file.\n\n\t  If not empty, Buildroot will convert the PMU configuration\n\t  file into a loadable blob and pass it to U-Boot. The blob gets\n\t  embedded into the U-Boot SPL and is used to configure the PMU\n\t  during board initialization.\n\n\t  Unlike the PMU firmware, the PMU configuration file is unique\n\t  to each board configuration. A PMU configuration file can be\n\t  generated by building your Xilinx SDK BSP. It can be found in\n\t  the BSP source, for example at\n\t    ./psu_cortexa53_0/libsrc/xilpm_v2_4/src/pm_cfg_obj.c\n\n\t  Leave this option empty if your PMU firmware has a hard-coded\n\t  configuration object or you are loading it by any other means.\n\n\t  This feature requires U-Boot >= v2019.10.\n\nconfig BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE\n\tstring \"Custom psu_init_gpl file\"\n\tdepends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG\n\thelp\n\t  On ZynqMP the booloader is responsible for some basic\n\t  initializations, such as enabling peripherals and\n\t  configuring pinmuxes. The psu_init_gpl.c file (and,\n\t  optionally, psu_init_gpl.h) contains the code for such\n\t  initializations.\n\n\t  Although U-Boot contains psu_init_gpl.c files for some\n\t  boards, each of them describes only one specific\n\t  configuration. Users of a different board, or needing a\n\t  different configuration, can generate custom files using the\n\t  Xilinx development tools.\n\n\t  Set this variable to the path to your psu_init_gpl.c file\n\t  (e.g. \"board/myboard/psu_init_gpl.c\"). psu_init_gpl.h, if\n\t  needed, should be in the same directory. U-Boot will build\n\t  and link the user-provided file instead of the built-in one.\n\n\t  Leave empty to use the files provided by U-Boot.\n\n\t  This feature requires commit\n\t  6da4f67ad09cd8b311d77b2b04e557b7ef65b56c from upstream\n\t  U-Boot, available from versions after 2018.07.\n\nendif\n\nconfig BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC\n\tbool \"CRC image for Altera SoC FPGA (mkpimage)\"\n\tdepends on BR2_arm\n\tdepends on BR2_TARGET_UBOOT_SPL || BR2_TARGET_UBOOT_FORMAT_DTB_BIN\n\thelp\n\t  Pass the U-Boot image through the mkpimage tool to enable\n\t  booting on the Altera SoC FPGA based platforms.\n\n\t  On some platforms, it's the SPL that needs to be passed\n\t  through mkpimage. On some other platforms there is no SPL\n\t  because the internal SRAM is big enough to store the full\n\t  U-Boot. In this case, it's directly the full U-Boot image\n\t  that is passed through mkpimage.\n\n\t  If BR2_TARGET_UBOOT_SPL is enabled then\n\t  BR2_TARGET_UBOOT_SPL_NAME is converted by mkpimage using\n\t  header version 0.\n\n\t  Otherwise the full u-boot-dtb.bin is converted using\n\t  mkpimage header version 1.\n\n\t  In either case the resulting file will be given a .crc\n\t  extension.\n\nif BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG\n\nconfig BR2_TARGET_UBOOT_CUSTOM_DTS_PATH\n\tstring \"Device Tree Source file paths\"\n\thelp\n\t  Space-separated list of paths to device tree source files\n\t  that will be copied to arch/ARCH/dts/ before starting the\n\t  build.\n\n\t  To use this device tree source file, the U-Boot configuration\n\t  file must refer to it.\n\nendif\n\nconfig BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS\n\tstring \"Custom make options\"\n\thelp\n\t  List of custom make options passed at build time. Can be\n\t  used for example to pass a DEVICE_TREE= value.\n\nendif # BR2_TARGET_UBOOT\n"
  },
  {
    "path": "boot/uboot/uboot.hash",
    "content": "# Locally computed:\nsha256  cde723e19262e646f2670d25e5ec4b1b368490de950d4e26275a988c36df0bd4  u-boot-2021.10.tar.bz2\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  Licenses/gpl-2.0.txt\n"
  },
  {
    "path": "boot/uboot/uboot.mk",
    "content": "################################################################################\n#\n# uboot\n#\n################################################################################\n\nUBOOT_VERSION = $(call qstrip,$(BR2_TARGET_UBOOT_VERSION))\nUBOOT_BOARD_NAME = $(call qstrip,$(BR2_TARGET_UBOOT_BOARDNAME))\n\nUBOOT_LICENSE = GPL-2.0+\nifeq ($(BR2_TARGET_UBOOT_LATEST_VERSION),y)\nUBOOT_LICENSE_FILES = Licenses/gpl-2.0.txt\nendif\nUBOOT_CPE_ID_VENDOR = denx\nUBOOT_CPE_ID_PRODUCT = u-boot\n\nUBOOT_INSTALL_IMAGES = YES\n\n# u-boot 2020.01+ needs make 4.0+\nUBOOT_DEPENDENCIES = host-pkgconf $(BR2_MAKE_HOST_DEPENDENCY)\nUBOOT_MAKE = $(BR2_MAKE)\n\nifeq ($(UBOOT_VERSION),custom)\n# Handle custom U-Boot tarballs as specified by the configuration\nUBOOT_TARBALL = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION))\nUBOOT_SITE = $(patsubst %/,%,$(dir $(UBOOT_TARBALL)))\nUBOOT_SOURCE = $(notdir $(UBOOT_TARBALL))\nelse ifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT),y)\nUBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL))\nUBOOT_SITE_METHOD = git\nelse ifeq ($(BR2_TARGET_UBOOT_CUSTOM_HG),y)\nUBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL))\nUBOOT_SITE_METHOD = hg\nelse ifeq ($(BR2_TARGET_UBOOT_CUSTOM_SVN),y)\nUBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL))\nUBOOT_SITE_METHOD = svn\nelse\n# Handle stable official U-Boot versions\nUBOOT_SITE = https://ftp.denx.de/pub/u-boot\nUBOOT_SOURCE = u-boot-$(UBOOT_VERSION).tar.bz2\nendif\n\nifeq ($(BR2_TARGET_UBOOT)$(BR2_TARGET_UBOOT_LATEST_VERSION),y)\nBR_NO_CHECK_HASH_FOR += $(UBOOT_SOURCE)\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_BIN),y)\nUBOOT_BINS += u-boot.bin\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB),y)\nUBOOT_BINS += u-boot.dtb\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_ELF),y)\nUBOOT_BINS += u-boot\n# To make elf usable for debuging on ARC use special target\nifeq ($(BR2_arc),y)\nUBOOT_MAKE_TARGET += mdbtrick\nendif\nendif\n\n# Call 'make all' unconditionally\nUBOOT_MAKE_TARGET += all\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y)\nUBOOT_BINS += u-boot.kwb\nUBOOT_MAKE_TARGET += u-boot.kwb\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_AIS),y)\nUBOOT_BINS += u-boot.ais\nUBOOT_MAKE_TARGET += u-boot.ais\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND_BIN),y)\nUBOOT_BINS += u-boot-nand.bin\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMG),y)\nUBOOT_BINS += u-boot-dtb.img\nUBOOT_MAKE_TARGET += u-boot-dtb.img\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMX),y)\nUBOOT_BINS += u-boot-dtb.imx\nUBOOT_MAKE_TARGET += u-boot-dtb.imx\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_BIN),y)\nUBOOT_BINS += u-boot-dtb.bin\nUBOOT_MAKE_TARGET += u-boot-dtb.bin\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_IMG),y)\nUBOOT_BINS += u-boot.img\nUBOOT_MAKE_TARGET += u-boot.img\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_ITB),y)\nUBOOT_BINS += u-boot.itb\nUBOOT_MAKE_TARGET += u-boot.itb\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_IMX),y)\nUBOOT_BINS += u-boot.imx\nUBOOT_MAKE_TARGET += u-boot.imx\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_SB),y)\nUBOOT_BINS += u-boot.sb\nUBOOT_MAKE_TARGET += u-boot.sb\n# mxsimage needs OpenSSL\nUBOOT_DEPENDENCIES += host-elftosb host-openssl\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y)\n# BootStream (.sb) is generated by U-Boot, we convert it to SD format\nUBOOT_BINS += u-boot.sd\nUBOOT_MAKE_TARGET += u-boot.sb\nUBOOT_DEPENDENCIES += host-elftosb host-openssl\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y)\nUBOOT_BINS += u-boot.nand\nUBOOT_MAKE_TARGET += u-boot.sb\nUBOOT_DEPENDENCIES += host-elftosb host-openssl\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_STM32),y)\nUBOOT_BINS += u-boot.stm32\nUBOOT_MAKE_TARGET += u-boot.stm32\nendif\n\nifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y)\nUBOOT_BINS += $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME))\nendif\n\nifeq ($(BR2_TARGET_UBOOT_OMAP_IFT),y)\nUBOOT_BINS += u-boot.bin\nUBOOT_BIN_IFT = u-boot.bin.ift\nendif\n\n# The kernel calls AArch64 'arm64', but U-Boot calls it just 'arm', so\n# we have to special case it. Similar for i386/x86_64 -> x86\nifeq ($(KERNEL_ARCH),arm64)\nUBOOT_ARCH = arm\nelse ifneq ($(filter $(KERNEL_ARCH),i386 x86_64),)\nUBOOT_ARCH = x86\nelse\nUBOOT_ARCH = $(KERNEL_ARCH)\nendif\n\nUBOOT_MAKE_OPTS += \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tARCH=$(UBOOT_ARCH) \\\n\tHOSTCC=\"$(HOSTCC) $(subst -I/,-isystem /,$(subst -I /,-isystem /,$(HOST_CFLAGS)))\" \\\n\tHOSTLDFLAGS=\"$(HOST_LDFLAGS)\" \\\n\t$(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS))\n\nifeq ($(BR2_TARGET_UBOOT_NEEDS_ATF_BL31),y)\nUBOOT_DEPENDENCIES += arm-trusted-firmware\nifeq ($(BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF),y)\nUBOOT_MAKE_OPTS += BL31=$(BINARIES_DIR)/bl31.elf\ndefine UBOOT_COPY_ATF_FIRMWARE\n\tcp $(BINARIES_DIR)/bl31.elf $(@D)/\nendef\nUBOOT_PRE_BUILD_HOOKS += UBOOT_COPY_ATF_FIRMWARE\nelse\nUBOOT_MAKE_OPTS += BL31=$(BINARIES_DIR)/bl31.bin\ndefine UBOOT_COPY_ATF_FIRMWARE\n\tcp $(BINARIES_DIR)/bl31.bin $(@D)/\nendef\nUBOOT_PRE_BUILD_HOOKS += UBOOT_COPY_ATF_FIRMWARE\nendif\nendif\n\nifeq ($(BR2_TARGET_UBOOT_NEEDS_OPENSBI),y)\nUBOOT_DEPENDENCIES += opensbi\nUBOOT_MAKE_OPTS += OPENSBI=$(BINARIES_DIR)/fw_dynamic.bin\nendif\n\n# Mainline U-Boot versions can create the i.MX specific boot images\n# and need some NXP firmware blobs.\nifeq ($(BR2_TARGET_UBOOT_NEEDS_IMX_FIRMWARE),y)\nUBOOT_DEPENDENCIES += firmware-imx\nUBOOT_IMX_FW_FILES = \\\n\t$(if $(BR2_PACKAGE_FIRMWARE_IMX_NEEDS_HDMI_FW),signed_hdmi_imx8m.bin) \\\n\t$(if $(BR2_PACKAGE_FIRMWARE_IMX_LPDDR4),lpddr4*.bin) \\\n\t$(if $(BR2_PACKAGE_FIRMWARE_IMX_DDR4),ddr4*.bin)\n\ndefine UBOOT_COPY_IMX_FW_FILES\n\t$(foreach fw,$(UBOOT_IMX_FW_FILES),\\\n\t\tcp $(BINARIES_DIR)/$(fw) $(@D)/\n\t)\nendef\nUBOOT_PRE_BUILD_HOOKS += UBOOT_COPY_IMX_FW_FILES\nendif\n\nifeq ($(BR2_TARGET_UBOOT_NEEDS_DTC),y)\nUBOOT_DEPENDENCIES += host-dtc\nendif\n\nifeq ($(BR2_TARGET_UBOOT_NEEDS_PYTHON2),y)\nUBOOT_DEPENDENCIES += host-python host-python-setuptools\nelse ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYTHON3),y)\nUBOOT_DEPENDENCIES += host-python3 host-python3-setuptools\nendif\n\nifeq ($(BR2_TARGET_UBOOT_NEEDS_PYLIBFDT),y)\nUBOOT_DEPENDENCIES += host-swig\nendif\n\nifeq ($(BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS),y)\nifeq ($(BR2_TARGET_UBOOT_NEEDS_PYTHON2),y)\nUBOOT_DEPENDENCIES += host-python-pyelftools\nelse ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYTHON3),y)\nUBOOT_DEPENDENCIES += host-python3-pyelftools\nendif\nendif\n\nifeq ($(BR2_TARGET_UBOOT_NEEDS_OPENSSL),y)\nUBOOT_DEPENDENCIES += host-openssl\nendif\n\nifeq ($(BR2_TARGET_UBOOT_NEEDS_LZOP),y)\nUBOOT_DEPENDENCIES += host-lzop\nendif\n\n# prior to u-boot 2013.10 the license info was in COPYING. Copy it so\n# legal-info finds it\ndefine UBOOT_COPY_OLD_LICENSE_FILE\n\tif [ -f $(@D)/COPYING ]; then \\\n\t\t$(INSTALL) -m 0644 -D $(@D)/COPYING $(@D)/Licenses/gpl-2.0.txt; \\\n\tfi\nendef\n\nUBOOT_POST_EXTRACT_HOOKS += UBOOT_COPY_OLD_LICENSE_FILE\nUBOOT_POST_RSYNC_HOOKS += UBOOT_COPY_OLD_LICENSE_FILE\n\nifneq ($(ARCH_XTENSA_OVERLAY_FILE),)\ndefine UBOOT_XTENSA_OVERLAY_EXTRACT\n\t$(call arch-xtensa-overlay-extract,$(@D),u-boot)\nendef\nUBOOT_POST_EXTRACT_HOOKS += UBOOT_XTENSA_OVERLAY_EXTRACT\nUBOOT_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL)\nendif\n\n# Analogous code exists in linux/linux.mk. Basically, the generic\n# package infrastructure handles downloading and applying remote\n# patches. Local patches are handled depending on whether they are\n# directories or files.\nUBOOT_PATCHES = $(call qstrip,$(BR2_TARGET_UBOOT_PATCH))\nUBOOT_PATCH = $(filter ftp://% http://% https://%,$(UBOOT_PATCHES))\n\ndefine UBOOT_APPLY_LOCAL_PATCHES\n\tfor p in $(filter-out ftp://% http://% https://%,$(UBOOT_PATCHES)) ; do \\\n\t\tif test -d $$p ; then \\\n\t\t\t$(APPLY_PATCHES) $(@D) $$p \\*.patch || exit 1 ; \\\n\t\telse \\\n\t\t\t$(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \\\n\t\tfi \\\n\tdone\nendef\nUBOOT_POST_PATCH_HOOKS += UBOOT_APPLY_LOCAL_PATCHES\n\n# Fixup inclusion of libfdt headers, which can fail in older u-boot versions\n# when libfdt-devel is installed system-wide.\n# The core change is equivalent to upstream commit\n# e0d20dc1521e74b82dbd69be53a048847798a90a (first in v2018.03). However, the fixup\n# is complicated by the fact that the underlying u-boot code changed multiple\n# times in history:\n# - The directory scripts/dtc/libfdt only exists since upstream commit\n#   c0e032e0090d6541549b19cc47e06ccd1f302893 (first in v2017.11). For earlier\n#   versions, create a dummy scripts/dtc/libfdt directory with symlinks for the\n#   fdt-related files. This allows to use the same -I<path> option for both\n#   cases.\n# - The variable 'srctree' used to be called 'SRCTREE' before upstream commit\n#   01286329b27b27eaeda045b469d41b1d9fce545a (first in v2014.04).\n# - The original location for libfdt, 'lib/libfdt/', used to be simply\n#   'libfdt' before upstream commit 0de71d507157c4bd4fddcd3a419140d2b986eed2\n#   (first in v2010.06). Make the 'lib' part optional in the substitution to\n#   handle this.\ndefine UBOOT_FIXUP_LIBFDT_INCLUDE\n\t$(Q)if [ ! -d $(@D)/scripts/dtc/libfdt ]; then \\\n\t\tmkdir -p $(@D)/scripts/dtc/libfdt; \\\n\t\tcd $(@D)/scripts/dtc/libfdt; \\\n\t\tln -s ../../../include/fdt.h .; \\\n\t\tln -s ../../../include/libfdt*.h .; \\\n\t\tln -s ../../../lib/libfdt/libfdt_internal.h .; \\\n\tfi\n\t$(Q)$(SED) \\\n\t\t's%-I\\ *\\$$(srctree)/lib/libfdt%-I$$(srctree)/scripts/dtc/libfdt%; \\\n\t\ts%-I\\ *\\$$(SRCTREE)\\(/lib\\)\\?/libfdt%-I$$(SRCTREE)/scripts/dtc/libfdt%' \\\n\t\t$(@D)/tools/Makefile\nendef\nUBOOT_POST_PATCH_HOOKS += UBOOT_FIXUP_LIBFDT_INCLUDE\n\nifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y)\ndefine UBOOT_CONFIGURE_CMDS\n\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(UBOOT_MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \\\n\t\t$(UBOOT_BOARD_NAME)_config\nendef\nelse ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y)\nifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG),y)\nUBOOT_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG))_defconfig\nelse ifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG),y)\nUBOOT_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE))\nendif # BR2_TARGET_UBOOT_USE_DEFCONFIG\n\nUBOOT_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES))\nUBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig\n\n# UBOOT_MAKE_OPTS overrides HOSTCC / HOSTLDFLAGS to allow the build to\n# find our host-openssl. However, this triggers a bug in the kconfig\n# build script that causes it to build with /usr/include/ncurses.h\n# (which is typically wchar) but link with\n# $(HOST_DIR)/lib/libncurses.so (which is not).  We don't actually\n# need any host-package for kconfig, so remove the HOSTCC/HOSTLDFLAGS\n# override again. In addition, host-ccache is not ready at kconfig\n# time, so use HOSTCC_NOCCACHE.\nUBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC=\"$(HOSTCC_NOCCACHE)\" HOSTLDFLAGS=\"\"\nendif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY\n\nUBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH))\n\ndefine UBOOT_BUILD_CMDS\n\t$(if $(UBOOT_CUSTOM_DTS_PATH),\n\t\tcp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/\n\t)\n\t$(TARGET_CONFIGURE_OPTS) \\\n\t\tPKG_CONFIG=\"$(PKG_CONFIG_HOST_BINARY)\" \\\n\t\tPKG_CONFIG_SYSROOT_DIR=\"/\" \\\n\t\tPKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \\\n\t\tPKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \\\n\t\tPKG_CONFIG_LIBDIR=\"$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig\" \\\n\t\t$(UBOOT_MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \\\n\t\t$(UBOOT_MAKE_TARGET)\n\t$(if $(BR2_TARGET_UBOOT_FORMAT_SD),\n\t\t$(@D)/tools/mxsboot sd $(@D)/u-boot.sb $(@D)/u-boot.sd)\n\t$(if $(BR2_TARGET_UBOOT_FORMAT_NAND),\n\t\t$(@D)/tools/mxsboot \\\n\t\t\t-w $(BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE) \\\n\t\t\t-o $(BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE) \\\n\t\t\t-e $(BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE) \\\n\t\t\tnand $(@D)/u-boot.sb $(@D)/u-boot.nand)\nendef\n\ndefine UBOOT_BUILD_OMAP_IFT\n\t$(HOST_DIR)/bin/gpsign -f $(@D)/u-boot.bin \\\n\t\t-c $(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG))\nendef\n\ndefine UBOOT_INSTALL_IMAGES_CMDS\n\t$(foreach f,$(UBOOT_BINS), \\\n\t\t\tcp -dpf $(@D)/$(f) $(BINARIES_DIR)/\n\t)\n\t$(if $(BR2_TARGET_UBOOT_FORMAT_NAND),\n\t\tcp -dpf $(@D)/u-boot.sb $(BINARIES_DIR))\n\t$(if $(BR2_TARGET_UBOOT_SPL),\n\t\t$(foreach f,$(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)), \\\n\t\t\tcp -dpf $(@D)/$(f) $(BINARIES_DIR)/\n\t\t)\n\t)\nendef\n\nifeq ($(BR2_TARGET_UBOOT_ZYNQMP),y)\n\nUBOOT_ZYNQMP_PMUFW = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PMUFW))\n\nifneq ($(findstring ://,$(UBOOT_ZYNQMP_PMUFW)),)\nUBOOT_EXTRA_DOWNLOADS += $(UBOOT_ZYNQMP_PMUFW)\nBR_NO_CHECK_HASH_FOR += $(notdir $(UBOOT_ZYNQMP_PMUFW))\nUBOOT_ZYNQMP_PMUFW_PATH = $(UBOOT_DL_DIR)/$(notdir $(UBOOT_ZYNQMP_PMUFW))\nelse ifneq ($(UBOOT_ZYNQMP_PMUFW),)\nUBOOT_ZYNQMP_PMUFW_PATH = $(shell readlink -f $(UBOOT_ZYNQMP_PMUFW))\nendif\n\ndefine UBOOT_ZYNQMP_KCONFIG_PMUFW\n\t$(call KCONFIG_SET_OPT,CONFIG_PMUFW_INIT_FILE,\"$(UBOOT_ZYNQMP_PMUFW_PATH)\")\nendef\n\nUBOOT_ZYNQMP_PM_CFG = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PM_CFG))\nifneq ($(UBOOT_ZYNQMP_PM_CFG),)\nUBOOT_ZYNQMP_PM_CFG_BIN = $(UBOOT_DIR)/pm_cfg_obj.bin\ndefine UBOOT_ZYNQMP_KCONFIG_PM_CFG\n\t$(call KCONFIG_SET_OPT,CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE,\"$(UBOOT_ZYNQMP_PM_CFG_BIN)\", \\\n\t\t$(@D)/.config)\nendef\n\ndefine UBOOT_ZYNQMP_PM_CFG_CONVERT\n\t$(UBOOT_DIR)/tools/zynqmp_pm_cfg_obj_convert.py \\\n\t\t\"$(UBOOT_ZYNQMP_PM_CFG)\" \\\n\t\t\"$(UBOOT_ZYNQMP_PM_CFG_BIN)\"\nendef\nUBOOT_PRE_BUILD_HOOKS += UBOOT_ZYNQMP_PM_CFG_CONVERT\nendif\n\nUBOOT_ZYNQMP_PSU_INIT = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE))\nUBOOT_ZYNQMP_PSU_INIT_PATH = $(shell readlink -f $(UBOOT_ZYNQMP_PSU_INIT))\n\nifneq ($(UBOOT_ZYNQMP_PSU_INIT),)\ndefine UBOOT_ZYNQMP_KCONFIG_PSU_INIT\n\t$(call KCONFIG_SET_OPT,CONFIG_XILINX_PS_INIT_FILE,\"$(UBOOT_ZYNQMP_PSU_INIT_PATH)\")\nendef\nendif\n\nendif # BR2_TARGET_UBOOT_ZYNQMP\n\ndefine UBOOT_INSTALL_OMAP_IFT_IMAGE\n\tcp -dpf $(@D)/$(UBOOT_BIN_IFT) $(BINARIES_DIR)/\nendef\n\nifeq ($(BR2_TARGET_UBOOT_OMAP_IFT),y)\nifeq ($(BR_BUILDING),y)\nifeq ($(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG)),)\n$(error No gpsign config file. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting)\nendif\nifeq ($(wildcard $(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG))),)\n$(error gpsign config file $(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG) not found. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting)\nendif\nendif\nUBOOT_DEPENDENCIES += host-omap-u-boot-utils\nUBOOT_POST_BUILD_HOOKS += UBOOT_BUILD_OMAP_IFT\nUBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_INSTALL_OMAP_IFT_IMAGE\nendif\n\nifeq ($(BR2_TARGET_UBOOT_ZYNQ_IMAGE),y)\ndefine UBOOT_GENERATE_ZYNQ_IMAGE\n\t$(HOST_DIR)/bin/python2 \\\n\t\t$(HOST_DIR)/bin/zynq-boot-bin.py \\\n\t\t-u $(@D)/$(firstword $(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME))) \\\n\t\t-o $(BINARIES_DIR)/BOOT.BIN\nendef\nUBOOT_DEPENDENCIES += host-zynq-boot-bin\nUBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_GENERATE_ZYNQ_IMAGE\nendif\n\nifeq ($(BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC),y)\nifeq ($(BR2_TARGET_UBOOT_SPL),y)\nUBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES = $(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME))\nUBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION = 0\nelse\nUBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES = u-boot-dtb.bin\nUBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION = 1\nendif\ndefine UBOOT_CRC_ALTERA_SOCFPGA_IMAGE\n\t$(foreach f,$(UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES), \\\n\t\t$(HOST_DIR)/bin/mkpimage \\\n\t\t\t-v $(UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION) \\\n\t\t\t-o $(BINARIES_DIR)/$(notdir $(call qstrip,$(f))).crc \\\n\t\t\t$(@D)/$(call qstrip,$(f))\n\t)\nendef\nUBOOT_DEPENDENCIES += host-mkpimage\nUBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_CRC_ALTERA_SOCFPGA_IMAGE\nendif\n\ndefine UBOOT_KCONFIG_FIXUP_CMDS\n\t$(UBOOT_ZYNQMP_KCONFIG_PMUFW)\n\t$(UBOOT_ZYNQMP_KCONFIG_PM_CFG)\n\t$(UBOOT_ZYNQMP_KCONFIG_PSU_INIT)\nendef\n\nifeq ($(BR2_TARGET_UBOOT)$(BR_BUILDING),yy)\n\n#\n# Check U-Boot board name (for legacy) or the defconfig/custom config\n# file options (for kconfig)\n#\nifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y)\nifeq ($(UBOOT_BOARD_NAME),)\n$(error No U-Boot board name set. Check your BR2_TARGET_UBOOT_BOARDNAME setting)\nendif # UBOOT_BOARD_NAME\nelse ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y)\nifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG),y)\nifeq ($(call qstrip,$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG)),)\n$(error No board defconfig name specified, check your BR2_TARGET_UBOOT_BOARD_DEFCONFIG setting)\nendif # qstrip BR2_TARGET_UBOOT_BOARD_DEFCONFIG\nendif # BR2_TARGET_UBOOT_USE_DEFCONFIG\nifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG),y)\nifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE)),)\n$(error No board configuration file specified, check your BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE setting)\nendif # qstrip BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE\nendif # BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG\nendif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY\n\n#\n# Check custom version option\n#\nifeq ($(BR2_TARGET_UBOOT_CUSTOM_VERSION),y)\nifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE)),)\n$(error No custom U-Boot version specified. Check your BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE setting)\nendif # qstrip BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE\nendif # BR2_TARGET_UBOOT_CUSTOM_VERSION\n\n#\n# Check custom tarball option\n#\nifeq ($(BR2_TARGET_UBOOT_CUSTOM_TARBALL),y)\nifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION)),)\n$(error No custom U-Boot tarball specified. Check your BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION setting)\nendif # qstrip BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION\nendif # BR2_TARGET_UBOOT_CUSTOM_TARBALL\n\n#\n# Check Git/Mercurial repo options\n#\nifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT)$(BR2_TARGET_UBOOT_CUSTOM_HG),y)\nifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)),)\n$(error No custom U-Boot repository URL specified. Check your BR2_TARGET_UBOOT_CUSTOM_REPO_URL setting)\nendif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_URL\nifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION)),)\n$(error No custom U-Boot repository version specified. Check your BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION setting)\nendif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_VERSION\nendif # BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG\n\nendif # BR2_TARGET_UBOOT && BR_BUILDING\n\nifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y)\nUBOOT_DEPENDENCIES += \\\n\t$(BR2_BISON_HOST_DEPENDENCY) \\\n\t$(BR2_FLEX_HOST_DEPENDENCY)\n$(eval $(generic-package))\nelse ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y)\nUBOOT_MAKE_ENV = $(TARGET_MAKE_ENV)\n# Starting with 2021.10, the kconfig in uboot calls the cross-compiler\n# to check its capabilities. So we need the toolchain before we can\n# call the configurators.\nUBOOT_KCONFIG_DEPENDENCIES += \\\n\ttoolchain \\\n\t$(BR2_MAKE_HOST_DEPENDENCY) \\\n\t$(BR2_BISON_HOST_DEPENDENCY) \\\n\t$(BR2_FLEX_HOST_DEPENDENCY)\n$(eval $(kconfig-package))\nendif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY\n"
  },
  {
    "path": "boot/vexpress-firmware/Config.in",
    "content": "config BR2_TARGET_VEXPRESS_FIRMWARE\n\tbool \"vexpress-firmware\"\n\tdepends on BR2_aarch64\n\thelp\n\t  Versatile Express firmware from ARM, with Linaro mods last\n\t  change.\n\n\t  https://git.linaro.org/arm/vexpress-firmware.git\n"
  },
  {
    "path": "boot/vexpress-firmware/vexpress-firmware.hash",
    "content": "# Locally calculated\nsha256  ea92d686e6e211074fb0f62cb5e011f4cfc294c7f6ec9fb27b7d987db7bf51c5  vexpress-firmware-901f81977c3b367a2e0bf3d6444be302822d97a3-br1.tar.gz\n"
  },
  {
    "path": "boot/vexpress-firmware/vexpress-firmware.mk",
    "content": "################################################################################\n#\n# vexpress-firmware\n#\n################################################################################\n\nVEXPRESS_FIRMWARE_VERSION = 901f81977c3b367a2e0bf3d6444be302822d97a3\nVEXPRESS_FIRMWARE_SITE = https://git.linaro.org/arm/vexpress-firmware.git\nVEXPRESS_FIRMWARE_SITE_METHOD = git\n# The only available license files are in PDF and RTF formats, and we\n# support only plain text.\nVEXPRESS_FIRMWARE_LICENSE = ARM EULA\n\nVEXPRESS_FIRMWARE_INSTALL_IMAGES = YES\n\ndefine VEXPRESS_FIRMWARE_INSTALL_IMAGES_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/SOFTWARE/bl30.bin $(BINARIES_DIR)/scp-fw.bin\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "build-docker.sh",
    "content": "#!/bin/bash\n\nDOCKER_BUILDER_IMAGE=\"ccrisan/thingos-builder\"\nENV_FILE=$(mktemp)\n\nfunction cleanup() {\n    rm -f ${ENV_FILE}\n}\n\ntrap cleanup EXIT\n\ncd $(dirname \"$0\")\nprintenv | grep -E ^THINGOS > ${ENV_FILE}\n\nargs=\"${@}\"\ndocker run --privileged -it --rm -u $(id -u):$(id -g) \\\n       -v \"$(pwd)\":/os \\\n       -e TB_CUSTOM_CMD=\"./build.sh ${args}\" \\\n       --env-file ${ENV_FILE} \\\n       --device /dev/loop-control:/dev/loop-control \\\n       \"${DOCKER_BUILDER_IMAGE}\"\n"
  },
  {
    "path": "build.sh",
    "content": "#!/bin/bash\n\nif [ -z \"$1\" ]; then\n    echo \"Usage: $0 <{board}|all|boards> [mkimage|mkrelease|clean-target|initramfs|make-targets...]\"\n    echo \"    mkimage - creates the OS image (.img)\"\n    echo \"    mkrelease - creates the compressed OS image (.img.gz, .img.xz)\"\n    echo \"    clean-target - removes the target dir, preserving the package build dirs\"\n    echo \"    initramfs - builds the initramfs image; extra arguments will be passed internally to BuildRoot\"\n    echo \"\"\n    echo \"    for other make targets, see the BuildRoot manual\"\n    exit 1\nfi\n\nset -e # exit at first error\n\nboard=$1\ntarget=${*:2}\ncd \"$(dirname \"$0\")\"\nbasedir=$(pwd)\ngzip=$(which pigz 2> /dev/null || which gzip 2> /dev/null)\n\n# extra environment from local file\ntest -f \"$basedir/.build-env\" && source \"$basedir/.build-env\"\n\n# OS name\nif [ -n \"$THINGOS_SHORT_NAME\" ]; then\n    osname=$THINGOS_SHORT_NAME\nelse\n    osname=$(source \"$basedir/board/common/overlay/etc/version\" && echo \"$OS_SHORT_NAME\")\nfi\n\n# OS version\nif [ -n \"$THINGOS_VERSION\" ]; then\n    osversion=$THINGOS_VERSION\nelse\n    osversion=$(source \"$basedir/board/common/overlay/etc/version\" && echo \"$OS_VERSION\")\nfi\n\n# when the special \"boards\" keyword is used for board, simply list all known boards\nif [ \"$board\" == \"boards\" ]; then\n    boards=$(ls \"$basedir\"/configs/*_defconfig | grep -v initramfs | grep -oE '\\w+_defconfig$' | cut -d '_' -f 1)\n    for b in $boards; do\n        echo \"$b\"\n    done\n\n    exit 0\nfi\n\n# when the special \"all\" keyword is used for board, all boards are processed, in turn\nif [ \"$board\" == \"all\" ]; then\n    boards=$(ls \"$basedir\"/configs/*_defconfig | grep -v initramfs | grep -oE '\\w+_defconfig$' | cut -d '_' -f 1)\n    for b in $boards; do\n        if ! $0 \"$b\" \"$target\"; then\n            exit 1\n        fi\n    done\n\n    exit 0\nfi\n\noutputdir=$basedir/output/$board\nboarddir=$basedir/board/$board\n\nif ! [ -f \"$basedir/configs/${board}_defconfig\" ]; then\n    echo \"unknown board: $board\"\n    exit 1\nfi\n\nfunction prepare_target_dir() {\n    if [ -L \"$outputdir/target/var/lib\" ]; then\n        rm \"$outputdir/target/var/lib\"\n        mkdir \"$outputdir/target/var/lib\"\n    fi\n}\n\nmkdir -p \"$outputdir\"\n\nif ! [ -f \"$outputdir/.config\" ]; then\n    make O=\"$outputdir\" \"${board}_defconfig\"\nfi\n\nif [ \"$target\" == \"mkimage\" ]; then\n    \"${basedir}/support/scripts/mkimage.sh\" ${board}\n\nelif [ \"$target\" == \"mkrelease\" ]; then\n    test -f \"$outputdir/images/$osname-$board.img\" || \"${basedir}/support/scripts/mkimage.sh\" ${board}\n    cp \"$outputdir/images/$osname-$board.img\" \"$outputdir/images/$osname-$board-$osversion.img\"\n\n    echo \"preparing compressed xz image\"\n    rm -f \"$outputdir/images/$osname-$board-$osversion.img.xz\"\n    xz -6ek -T 0 \"$outputdir/images/$osname-$board-$osversion.img\"\n    echo \"your xz image is ready at $outputdir/images/$osname-$board-$osversion.img.xz\"\n\n    rm -f \"$outputdir/images/$osname-$board-$osversion.img\"\n\nelif [ \"$target\" == \"clean-target\" ]; then\n    if [ -d \"$outputdir/target\" ]; then\n        echo \"removing target directory\"\n        rm -rf \"$outputdir/target/\"*\n\n        echo \"removing staging directory\"\n        rm -rf \"$outputdir/staging/\"*\n\n        echo \"removing images directory\"\n        rm -rf \"$outputdir/images/\"*\n    fi\n\n    if [ -d \"$outputdir/build\" ]; then\n        echo \"removing .stamp_target_installed files\"\n        find \"$outputdir/build\" -name .stamp_target_installed -print0 | xargs -0 -r rm\n\n        echo \"removing .stamp_staging_installed files\"\n        find \"$outputdir/build\" -name .stamp_staging_installed -print0 | xargs -0 -r rm\n\n        echo \"removing .stamp_host_installed files\"\n        find \"$outputdir/build\" -name .stamp_host_installed -print0 | xargs -0 -r rm\n\n        echo \"removing .stamp_images_installed files\"\n        find \"$outputdir/build\" -name .stamp_images_installed -print0 | xargs -0 -r rm\n\n        echo \"removing linux kernel build dir\"\n        make O=\"$outputdir\" linux-dirclean\n    fi\n\n    if [ -f \"$outputdir/.config\" ]; then\n        echo \"removing .config file\"\n        rm -f \"$outputdir/.config\"\n    fi\n\n    echo \"target is clean\"\n\nelif [[ \"$target\" == initramfs* ]]; then\n    extra_args=${target:10}\n    $0 \"${board}_initramfs\" \"$extra_args\"\n    if [ -z \"$extra_args\" ] && [ -x \"$boarddir/cpinitramfs.sh\" ]; then\n        BINARIES_DIR=$basedir/output/${board}_initramfs/images/ BOARD_DIR=$boarddir \"$boarddir/cpinitramfs.sh\"\n    fi\n\nelif [ \"$target\" == \"all\" ]; then\n    prepare_target_dir\n    make O=\"$outputdir\" all\n\nelif [ -n \"$target\" ]; then\n    prepare_target_dir\n    make O=\"$outputdir\" $target\n\nelse  # if [ -z \"$target ]\n    $0 \"$board\" all\n    echo \"build successful\"\nfi\n"
  },
  {
    "path": "configs/nanopir1_defconfig",
    "content": "BR2_arm=y\nBR2_cortex_a7=y\nBR2_ARM_FPU_VFPV4=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-nanopir1\"\nBR2_OPTIMIZE_2=y\nBR2_GLOBAL_PATCH_DIR=\"board/nanopir1\"\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y\nBR2_TARGET_TZ_INFO=y\nBR2_ROOTFS_OVERLAY=\"board/common/overlay board/nanopir1/overlay\"\nBR2_ROOTFS_POST_BUILD_SCRIPT=\"board/common/postscript.sh\"\nBR2_LINUX_KERNEL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION=\"https://github.com/friendlyarm/linux/archive/ec36a7d5dfaa66f2b108114cc58ff2a3ddef26c6.tar.gz\"\nBR2_LINUX_KERNEL_DEFCONFIG=\"sunxi\"\nBR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES=\"board/nanopir1/kernel-extra.config\"\nBR2_LINUX_KERNEL_DTS_SUPPORT=y\nBR2_LINUX_KERNEL_INTREE_DTS_NAME=\"sun8i-h3-nanopi-r1\"\nBR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox.config\"\nBR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y\nBR2_PACKAGE_ALSA_UTILS=y\nBR2_PACKAGE_ALSA_UTILS_APLAY=y\nBR2_PACKAGE_GZIP=y\nBR2_PACKAGE_JQ=y\nBR2_PACKAGE_E2FSPROGS=y\nBR2_PACKAGE_NTFS_3G=y\nBR2_PACKAGE_B43_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y\nBR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y\nBR2_PACKAGE_GPTFDISK=y\nBR2_PACKAGE_RNG_TOOLS=y\nBR2_PACKAGE_USB_MODESWITCH_DATA=y\nBR2_PACKAGE_CA_CERTIFICATES=y\nBR2_PACKAGE_LIBSSH2=y\nBR2_PACKAGE_LIBFUSE=y\nBR2_PACKAGE_LIBCURL=y\nBR2_PACKAGE_LIBCURL_CURL=y\nBR2_PACKAGE_LIBCAP=y\nBR2_PACKAGE_PCRE=y\nBR2_PACKAGE_PCRE_UCP=y\nBR2_PACKAGE_SEMVER_SORT=y\nBR2_PACKAGE_AUTOSSH=y\nBR2_PACKAGE_CHRONY=y\nBR2_PACKAGE_CRDA=y\nBR2_PACKAGE_DHCP=y\nBR2_PACKAGE_DHCP_CLIENT=y\n# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set\nBR2_PACKAGE_IPTABLES=y\nBR2_PACKAGE_IW=y\nBR2_PACKAGE_NET_TOOLS=y\nBR2_PACKAGE_NETCAT=y\nBR2_PACKAGE_NTP=y\nBR2_PACKAGE_NTP_SNTP=y\n# BR2_PACKAGE_NTP_NTPD is not set\nBR2_PACKAGE_OPENSSH=y\nBR2_PACKAGE_PPPD=y\nBR2_PACKAGE_WIRELESS_TOOLS=y\nBR2_PACKAGE_WPA_SUPPLICANT=y\nBR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y\nBR2_PACKAGE_WPA_SUPPLICANT_EAP=y\nBR2_PACKAGE_WPA_SUPPLICANT_WPS=y\nBR2_PACKAGE_WPA_SUPPLICANT_CLI=y\nBR2_PACKAGE_BASH=y\nBR2_PACKAGE_LOGROTATE=y\nBR2_PACKAGE_CGROUPFS_MOUNT=y\nBR2_PACKAGE_TAR=y\nBR2_PACKAGE_UTIL_LINUX_BINARIES=y\nBR2_PACKAGE_UTIL_LINUX_LOSETUP=y\nBR2_PACKAGE_UTIL_LINUX_PARTX=y\nBR2_PACKAGE_NANO=y\nBR2_TARGET_UBOOT=y\nBR2_TARGET_UBOOT_BOARDNAME=\"nanopi_h3\"\nBR2_TARGET_UBOOT_CUSTOM_TARBALL=y\nBR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION=\"https://github.com/friendlyarm/u-boot/archive/5e8607b2899354b882dbd8b8a0c4ea725c051314.tar.gz\"\nBR2_TARGET_UBOOT_NEEDS_DTC=y\nBR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y\n# BR2_TARGET_UBOOT_FORMAT_BIN is not set\nBR2_TARGET_UBOOT_FORMAT_CUSTOM=y\nBR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME=\"u-boot-sunxi-with-spl.bin\"\nBR2_TARGET_UBOOT_SPL=y\nBR2_TARGET_UBOOT_SPL_NAME=\"u-boot-sunxi-with-spl.bin\"\nBR2_TARGET_UBOOT_CUSTOM_MAKEOPTS=\"PYTHON=python2\"\nBR2_PACKAGE_HOST_E2FSPROGS=y\nBR2_PACKAGE_HOST_SWIG=y\nBR2_PACKAGE_HOST_UBOOT_TOOLS=y\nBR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y\nBR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE=\"board/nanopir1/boot.cmd\"\n"
  },
  {
    "path": "configs/nanopir1_initramfs_defconfig",
    "content": "BR2_arm=y\nBR2_cortex_a7=y\nBR2_ARM_FPU_VFPV4=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-nanopir1-initramfs\"\nBR2_OPTIMIZE_2=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_ROOTFS_OVERLAY=\"board/common/overlay-initramfs board/nanopir1/overlay-initramfs\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox_initramfs.config\"\nBR2_PACKAGE_UTIL_LINUX=y\nBR2_PACKAGE_UTIL_LINUX_LIBBLKID=y\nBR2_TARGET_ROOTFS_CPIO=y\nBR2_TARGET_ROOTFS_CPIO_GZIP=y\nBR2_TARGET_ROOTFS_CPIO_UIMAGE=y\n# BR2_TARGET_ROOTFS_TAR is not set\n"
  },
  {
    "path": "configs/radxacm3_defconfig",
    "content": "BR2_aarch64=y\nBR2_cortex_a55=y\nBR2_JLEVEL=4\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-radxacm3\"\nBR2_OPTIMIZE_2=y\nBR2_GLOBAL_PATCH_DIR=\"board/radxacm3\"\n# BR2_COMPILER_PARANOID_UNSAFE_PATH is not set\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y\nBR2_TARGET_TZ_INFO=y\nBR2_ROOTFS_OVERLAY=\"board/common/overlay board/radxacm3/overlay\"\nBR2_ROOTFS_POST_BUILD_SCRIPT=\"board/common/postscript.sh\"\nBR2_LINUX_KERNEL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION=\"https://github.com/radxa/kernel/archive/67a0c0ce87a07769ea7afd4a0978a0f22c76f8ce.tar.gz\"\nBR2_LINUX_KERNEL_DEFCONFIG=\"rockchip_linux\"\nBR2_LINUX_KERNEL_DTS_SUPPORT=y\nBR2_LINUX_KERNEL_INTREE_DTS_NAME=\"rockchip/rk3566-radxa-cm3-rpi-cm4-io\"\nBR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox.config\"\nBR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y\nBR2_PACKAGE_ALSA_UTILS=y\nBR2_PACKAGE_ALSA_UTILS_APLAY=y\nBR2_PACKAGE_GZIP=y\nBR2_PACKAGE_JQ=y\nBR2_PACKAGE_E2FSPROGS=y\nBR2_PACKAGE_NTFS_3G=y\nBR2_PACKAGE_B43_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y\nBR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y\nBR2_PACKAGE_RKBIN=y\nBR2_PACKAGE_GPTFDISK=y\nBR2_PACKAGE_RNG_TOOLS=y\nBR2_PACKAGE_USB_MODESWITCH_DATA=y\nBR2_PACKAGE_CA_CERTIFICATES=y\nBR2_PACKAGE_LIBSSH2=y\nBR2_PACKAGE_LIBFUSE=y\nBR2_PACKAGE_LIBCURL=y\nBR2_PACKAGE_LIBCURL_CURL=y\nBR2_PACKAGE_LIBCAP=y\nBR2_PACKAGE_SEMVER_SORT=y\nBR2_PACKAGE_AUTOSSH=y\nBR2_PACKAGE_BLUEZ5_UTILS=y\nBR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y\nBR2_PACKAGE_BLUEZ5_UTILS_TOOLS=y\nBR2_PACKAGE_CHRONY=y\nBR2_PACKAGE_CRDA=y\nBR2_PACKAGE_DHCP=y\nBR2_PACKAGE_DHCP_CLIENT=y\n# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set\nBR2_PACKAGE_IPTABLES=y\nBR2_PACKAGE_IW=y\nBR2_PACKAGE_NET_TOOLS=y\nBR2_PACKAGE_NETCAT=y\nBR2_PACKAGE_NTP=y\nBR2_PACKAGE_NTP_SNTP=y\n# BR2_PACKAGE_NTP_NTPD is not set\nBR2_PACKAGE_OPENSSH=y\nBR2_PACKAGE_PPPD=y\nBR2_PACKAGE_WIRELESS_TOOLS=y\nBR2_PACKAGE_WPA_SUPPLICANT=y\nBR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y\nBR2_PACKAGE_WPA_SUPPLICANT_EAP=y\nBR2_PACKAGE_WPA_SUPPLICANT_WPS=y\nBR2_PACKAGE_WPA_SUPPLICANT_CLI=y\nBR2_PACKAGE_BASH=y\nBR2_PACKAGE_LOGROTATE=y\nBR2_PACKAGE_CGROUPFS_MOUNT=y\nBR2_PACKAGE_TAR=y\nBR2_PACKAGE_UTIL_LINUX_BINARIES=y\nBR2_PACKAGE_UTIL_LINUX_LOSETUP=y\nBR2_PACKAGE_UTIL_LINUX_PARTX=y\nBR2_PACKAGE_NANO=y\nBR2_TARGET_UBOOT=y\nBR2_TARGET_UBOOT_BOARDNAME=\"radxa-cm3-rpi-cm4-io-rk3566\"\nBR2_TARGET_UBOOT_CUSTOM_TARBALL=y\nBR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION=\"https://github.com/radxa/u-boot/archive/693c4cd017e57a6af8e471494be5e8780c041b08.tar.gz\"\nBR2_TARGET_UBOOT_NEEDS_DTC=y\n# BR2_TARGET_UBOOT_FORMAT_BIN is not set\nBR2_TARGET_UBOOT_FORMAT_DTB=y\nBR2_TARGET_UBOOT_FORMAT_ITB=y\nBR2_TARGET_UBOOT_SPL=y\nBR2_TARGET_UBOOT_CUSTOM_MAKEOPTS=\"BL31=../../../../board/radxacm3/rk3568_bl31_v1.32.elf\"\nBR2_PACKAGE_HOST_UBOOT_TOOLS=y\nBR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y\nBR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE=\"board/radxacm3/boot.cmd\"\n"
  },
  {
    "path": "configs/radxacm3_initramfs_defconfig",
    "content": "BR2_aarch64=y\nBR2_cortex_a55=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-radxacm3-initramfs\"\nBR2_OPTIMIZE_2=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_TARGET_GENERIC_HOSTNAME=\"\"\nBR2_TARGET_GENERIC_ISSUE=\"\"\nBR2_ROOTFS_OVERLAY=\"board/common/overlay-initramfs board/radxacm3/overlay-initramfs\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox_initramfs.config\"\nBR2_PACKAGE_UTIL_LINUX=y\nBR2_PACKAGE_UTIL_LINUX_LIBBLKID=y\nBR2_TARGET_ROOTFS_CPIO=y\nBR2_TARGET_ROOTFS_CPIO_GZIP=y\n# BR2_TARGET_ROOTFS_TAR is not set\n"
  },
  {
    "path": "configs/raspberrypi2_defconfig",
    "content": "BR2_arm=y\nBR2_cortex_a7=y\nBR2_ARM_FPU_NEON_VFPV4=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-raspberrypi2\"\nBR2_OPTIMIZE_2=y\nBR2_GLOBAL_PATCH_DIR=\"board/raspberrypi2\"\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y\nBR2_TARGET_TZ_INFO=y\nBR2_ROOTFS_OVERLAY=\"board/common/overlay board/raspberrypi2/overlay\"\nBR2_ROOTFS_POST_BUILD_SCRIPT=\"board/common/postscript.sh\"\nBR2_LINUX_KERNEL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION=\"https://github.com/raspberrypi/linux/archive/6f921e98008589258f97243fb6658d09750f0a2f.tar.gz\"\nBR2_LINUX_KERNEL_DEFCONFIG=\"bcm2709\"\nBR2_LINUX_KERNEL_DTS_SUPPORT=y\nBR2_LINUX_KERNEL_INTREE_DTS_NAME=\"bcm2709-rpi-2-b\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox.config\"\nBR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y\nBR2_PACKAGE_ALSA_UTILS=y\nBR2_PACKAGE_ALSA_UTILS_APLAY=y\nBR2_PACKAGE_GZIP=y\nBR2_PACKAGE_JQ=y\nBR2_PACKAGE_E2FSPROGS=y\nBR2_PACKAGE_NTFS_3G=y\nBR2_PACKAGE_B43_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y\nBR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y\nBR2_PACKAGE_RPI_BT_FIRMWARE=y\nBR2_PACKAGE_RPI_FIRMWARE=y\nBR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y\nBR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y\nBR2_PACKAGE_RPI_WIFI_FIRMWARE=y\nBR2_PACKAGE_GPTFDISK=y\nBR2_PACKAGE_RNG_TOOLS=y\nBR2_PACKAGE_RPI_ARMMEM=y\nBR2_PACKAGE_RPI_USERLAND=y\nBR2_PACKAGE_USB_MODESWITCH_DATA=y\nBR2_PACKAGE_CA_CERTIFICATES=y\nBR2_PACKAGE_LIBSSH2=y\nBR2_PACKAGE_LIBFUSE=y\nBR2_PACKAGE_LIBCURL=y\nBR2_PACKAGE_LIBCURL_CURL=y\nBR2_PACKAGE_LIBCAP=y\nBR2_PACKAGE_PCRE=y\nBR2_PACKAGE_PCRE_UCP=y\nBR2_PACKAGE_SEMVER_SORT=y\nBR2_PACKAGE_AUTOSSH=y\nBR2_PACKAGE_CHRONY=y\nBR2_PACKAGE_CRDA=y\nBR2_PACKAGE_DHCP=y\nBR2_PACKAGE_DHCP_CLIENT=y\n# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set\nBR2_PACKAGE_IPTABLES=y\nBR2_PACKAGE_IW=y\nBR2_PACKAGE_NET_TOOLS=y\nBR2_PACKAGE_NETCAT=y\nBR2_PACKAGE_NTP=y\nBR2_PACKAGE_NTP_SNTP=y\n# BR2_PACKAGE_NTP_NTPD is not set\nBR2_PACKAGE_OPENSSH=y\nBR2_PACKAGE_PPPD=y\nBR2_PACKAGE_WIRELESS_TOOLS=y\nBR2_PACKAGE_WPA_SUPPLICANT=y\nBR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y\nBR2_PACKAGE_WPA_SUPPLICANT_EAP=y\nBR2_PACKAGE_WPA_SUPPLICANT_WPS=y\nBR2_PACKAGE_WPA_SUPPLICANT_CLI=y\nBR2_PACKAGE_BASH=y\nBR2_PACKAGE_LOGROTATE=y\nBR2_PACKAGE_CGROUPFS_MOUNT=y\nBR2_PACKAGE_TAR=y\nBR2_PACKAGE_UTIL_LINUX_BINARIES=y\nBR2_PACKAGE_UTIL_LINUX_LOSETUP=y\nBR2_PACKAGE_UTIL_LINUX_PARTX=y\nBR2_PACKAGE_NANO=y\n"
  },
  {
    "path": "configs/raspberrypi2_initramfs_defconfig",
    "content": "BR2_arm=y\nBR2_cortex_a7=y\nBR2_ARM_FPU_NEON_VFPV4=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-raspberrypi2-initramfs\"\nBR2_OPTIMIZE_2=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_TARGET_GENERIC_HOSTNAME=\"\"\nBR2_TARGET_GENERIC_ISSUE=\"\"\nBR2_ROOTFS_OVERLAY=\"board/common/overlay-initramfs board/raspberrypi/overlay-initramfs\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox_initramfs.config\"\nBR2_PACKAGE_UTIL_LINUX=y\nBR2_PACKAGE_UTIL_LINUX_LIBBLKID=y\nBR2_TARGET_ROOTFS_CPIO=y\nBR2_TARGET_ROOTFS_CPIO_GZIP=y\n# BR2_TARGET_ROOTFS_TAR is not set\n"
  },
  {
    "path": "configs/raspberrypi3_defconfig",
    "content": "BR2_arm=y\nBR2_cortex_a7=y\nBR2_ARM_FPU_NEON_VFPV4=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-raspberrypi3\"\nBR2_OPTIMIZE_2=y\nBR2_GLOBAL_PATCH_DIR=\"board/raspberrypi3\"\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y\nBR2_TARGET_TZ_INFO=y\nBR2_ROOTFS_OVERLAY=\"board/common/overlay board/raspberrypi3/overlay\"\nBR2_ROOTFS_POST_BUILD_SCRIPT=\"board/common/postscript.sh\"\nBR2_LINUX_KERNEL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION=\"https://github.com/raspberrypi/linux/archive/6f921e98008589258f97243fb6658d09750f0a2f.tar.gz\"\nBR2_LINUX_KERNEL_DEFCONFIG=\"bcm2711\"\nBR2_LINUX_KERNEL_DTS_SUPPORT=y\nBR2_LINUX_KERNEL_INTREE_DTS_NAME=\"bcm2837-rpi-3-a-plus bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3 bcm2710-rpi-zero-2\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox.config\"\nBR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y\nBR2_PACKAGE_ALSA_UTILS=y\nBR2_PACKAGE_ALSA_UTILS_APLAY=y\nBR2_PACKAGE_GZIP=y\nBR2_PACKAGE_JQ=y\nBR2_PACKAGE_E2FSPROGS=y\nBR2_PACKAGE_NTFS_3G=y\nBR2_PACKAGE_B43_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y\nBR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y\nBR2_PACKAGE_RPI_BT_FIRMWARE=y\nBR2_PACKAGE_RPI_FIRMWARE=y\nBR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y\nBR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y\nBR2_PACKAGE_RPI_WIFI_FIRMWARE=y\nBR2_PACKAGE_GPTFDISK=y\nBR2_PACKAGE_RNG_TOOLS=y\nBR2_PACKAGE_RPI_ARMMEM=y\nBR2_PACKAGE_RPI_USERLAND=y\nBR2_PACKAGE_USB_MODESWITCH_DATA=y\nBR2_PACKAGE_CA_CERTIFICATES=y\nBR2_PACKAGE_LIBSSH2=y\nBR2_PACKAGE_LIBFUSE=y\nBR2_PACKAGE_LIBCURL=y\nBR2_PACKAGE_LIBCURL_CURL=y\nBR2_PACKAGE_LIBCAP=y\nBR2_PACKAGE_PCRE=y\nBR2_PACKAGE_PCRE_UCP=y\nBR2_PACKAGE_SEMVER_SORT=y\nBR2_PACKAGE_AUTOSSH=y\nBR2_PACKAGE_CHRONY=y\nBR2_PACKAGE_CRDA=y\nBR2_PACKAGE_DHCP=y\nBR2_PACKAGE_DHCP_CLIENT=y\n# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set\nBR2_PACKAGE_IPTABLES=y\nBR2_PACKAGE_IW=y\nBR2_PACKAGE_NET_TOOLS=y\nBR2_PACKAGE_NETCAT=y\nBR2_PACKAGE_NTP=y\nBR2_PACKAGE_NTP_SNTP=y\n# BR2_PACKAGE_NTP_NTPD is not set\nBR2_PACKAGE_OPENSSH=y\nBR2_PACKAGE_PPPD=y\nBR2_PACKAGE_WIRELESS_TOOLS=y\nBR2_PACKAGE_WPA_SUPPLICANT=y\nBR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y\nBR2_PACKAGE_WPA_SUPPLICANT_EAP=y\nBR2_PACKAGE_WPA_SUPPLICANT_WPS=y\nBR2_PACKAGE_WPA_SUPPLICANT_CLI=y\nBR2_PACKAGE_BASH=y\nBR2_PACKAGE_LOGROTATE=y\nBR2_PACKAGE_CGROUPFS_MOUNT=y\nBR2_PACKAGE_TAR=y\nBR2_PACKAGE_UTIL_LINUX_BINARIES=y\nBR2_PACKAGE_UTIL_LINUX_LOSETUP=y\nBR2_PACKAGE_UTIL_LINUX_PARTX=y\nBR2_PACKAGE_NANO=y\n"
  },
  {
    "path": "configs/raspberrypi3_initramfs_defconfig",
    "content": "BR2_arm=y\nBR2_cortex_a7=y\nBR2_ARM_FPU_NEON_VFPV4=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-raspberrypi3-initramfs\"\nBR2_OPTIMIZE_2=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_TARGET_GENERIC_HOSTNAME=\"\"\nBR2_TARGET_GENERIC_ISSUE=\"\"\nBR2_ROOTFS_OVERLAY=\"board/common/overlay-initramfs board/raspberrypi/overlay-initramfs\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox_initramfs.config\"\nBR2_PACKAGE_UTIL_LINUX=y\nBR2_PACKAGE_UTIL_LINUX_LIBBLKID=y\nBR2_TARGET_ROOTFS_CPIO=y\nBR2_TARGET_ROOTFS_CPIO_GZIP=y\n# BR2_TARGET_ROOTFS_TAR is not set\n"
  },
  {
    "path": "configs/raspberrypi4_defconfig",
    "content": "BR2_arm=y\nBR2_cortex_a72=y\nBR2_ARM_FPU_NEON_FP_ARMV8=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-raspberrypi4\"\nBR2_OPTIMIZE_2=y\nBR2_GLOBAL_PATCH_DIR=\"board/raspberrypi4\"\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y\nBR2_TARGET_TZ_INFO=y\nBR2_ROOTFS_OVERLAY=\"board/common/overlay board/raspberrypi4/overlay\"\nBR2_ROOTFS_POST_BUILD_SCRIPT=\"board/common/postscript.sh\"\nBR2_LINUX_KERNEL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION=\"https://github.com/raspberrypi/linux/archive/6f921e98008589258f97243fb6658d09750f0a2f.tar.gz\"\nBR2_LINUX_KERNEL_DEFCONFIG=\"bcm2711\"\nBR2_LINUX_KERNEL_DTS_SUPPORT=y\nBR2_LINUX_KERNEL_INTREE_DTS_NAME=\"bcm2711-rpi-4-b bcm2711-rpi-cm4\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox.config\"\nBR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y\nBR2_PACKAGE_ALSA_UTILS=y\nBR2_PACKAGE_ALSA_UTILS_APLAY=y\nBR2_PACKAGE_GZIP=y\nBR2_PACKAGE_JQ=y\nBR2_PACKAGE_E2FSPROGS=y\nBR2_PACKAGE_NTFS_3G=y\nBR2_PACKAGE_B43_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y\nBR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y\nBR2_PACKAGE_RPI_BT_FIRMWARE=y\nBR2_PACKAGE_RPI_FIRMWARE=y\nBR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y\nBR2_PACKAGE_RPI_WIFI_FIRMWARE=y\nBR2_PACKAGE_GPTFDISK=y\nBR2_PACKAGE_RNG_TOOLS=y\nBR2_PACKAGE_RPI_ARMMEM=y\nBR2_PACKAGE_RPI_USERLAND=y\nBR2_PACKAGE_USB_MODESWITCH_DATA=y\nBR2_PACKAGE_CA_CERTIFICATES=y\nBR2_PACKAGE_LIBSSH2=y\nBR2_PACKAGE_LIBFUSE=y\nBR2_PACKAGE_LIBCURL=y\nBR2_PACKAGE_LIBCURL_CURL=y\nBR2_PACKAGE_LIBCAP=y\nBR2_PACKAGE_PCRE=y\nBR2_PACKAGE_PCRE_UCP=y\nBR2_PACKAGE_SEMVER_SORT=y\nBR2_PACKAGE_AUTOSSH=y\nBR2_PACKAGE_CHRONY=y\nBR2_PACKAGE_CRDA=y\nBR2_PACKAGE_DHCP=y\nBR2_PACKAGE_DHCP_CLIENT=y\n# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set\nBR2_PACKAGE_IPTABLES=y\nBR2_PACKAGE_IW=y\nBR2_PACKAGE_NET_TOOLS=y\nBR2_PACKAGE_NETCAT=y\nBR2_PACKAGE_NTP=y\nBR2_PACKAGE_NTP_SNTP=y\n# BR2_PACKAGE_NTP_NTPD is not set\nBR2_PACKAGE_OPENSSH=y\nBR2_PACKAGE_PPPD=y\nBR2_PACKAGE_WIRELESS_TOOLS=y\nBR2_PACKAGE_WPA_SUPPLICANT=y\nBR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y\nBR2_PACKAGE_WPA_SUPPLICANT_EAP=y\nBR2_PACKAGE_WPA_SUPPLICANT_WPS=y\nBR2_PACKAGE_WPA_SUPPLICANT_CLI=y\nBR2_PACKAGE_BASH=y\nBR2_PACKAGE_LOGROTATE=y\nBR2_PACKAGE_CGROUPFS_MOUNT=y\nBR2_PACKAGE_TAR=y\nBR2_PACKAGE_UTIL_LINUX_BINARIES=y\nBR2_PACKAGE_UTIL_LINUX_LOSETUP=y\nBR2_PACKAGE_UTIL_LINUX_PARTX=y\nBR2_PACKAGE_NANO=y\n"
  },
  {
    "path": "configs/raspberrypi4_initramfs_defconfig",
    "content": "BR2_arm=y\nBR2_cortex_a7=y\nBR2_ARM_FPU_NEON_VFPV4=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-raspberrypi4-initramfs\"\nBR2_OPTIMIZE_2=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_TARGET_GENERIC_HOSTNAME=\"\"\nBR2_TARGET_GENERIC_ISSUE=\"\"\nBR2_ROOTFS_OVERLAY=\"board/common/overlay-initramfs board/raspberrypi/overlay-initramfs\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox_initramfs.config\"\nBR2_PACKAGE_UTIL_LINUX=y\nBR2_PACKAGE_UTIL_LINUX_LIBBLKID=y\nBR2_TARGET_ROOTFS_CPIO=y\nBR2_TARGET_ROOTFS_CPIO_GZIP=y\n# BR2_TARGET_ROOTFS_TAR is not set\n"
  },
  {
    "path": "configs/raspberrypi64_defconfig",
    "content": "BR2_aarch64=y\nBR2_cortex_a72=y\nBR2_JLEVEL=4\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-raspberrypi64\"\nBR2_OPTIMIZE_2=y\nBR2_GLOBAL_PATCH_DIR=\"board/raspberrypi64\"\n# BR2_COMPILER_PARANOID_UNSAFE_PATH is not set\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y\nBR2_TARGET_TZ_INFO=y\nBR2_ROOTFS_OVERLAY=\"board/common/overlay board/raspberrypi64/overlay\"\nBR2_ROOTFS_POST_BUILD_SCRIPT=\"board/common/postscript.sh\"\nBR2_LINUX_KERNEL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION=\"https://github.com/raspberrypi/linux/archive/6f921e98008589258f97243fb6658d09750f0a2f.tar.gz\"\nBR2_LINUX_KERNEL_DEFCONFIG=\"bcm2711\"\nBR2_LINUX_KERNEL_IMAGEGZ=y\nBR2_LINUX_KERNEL_DTS_SUPPORT=y\nBR2_LINUX_KERNEL_INTREE_DTS_NAME=\"broadcom/bcm2837-rpi-3-a-plus broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2710-rpi-cm3 broadcom/bcm2837-rpi-cm3-io3 broadcom/bcm2710-rpi-zero-2 broadcom/bcm2711-rpi-4-b broadcom/bcm2711-rpi-cm4\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox.config\"\nBR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y\nBR2_PACKAGE_ALSA_UTILS=y\nBR2_PACKAGE_ALSA_UTILS_APLAY=y\nBR2_PACKAGE_GZIP=y\nBR2_PACKAGE_JQ=y\nBR2_PACKAGE_E2FSPROGS=y\nBR2_PACKAGE_NTFS_3G=y\nBR2_PACKAGE_B43_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y\nBR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y\nBR2_PACKAGE_RPI_BT_FIRMWARE=y\nBR2_PACKAGE_RPI_FIRMWARE=y\nBR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y\nBR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y\nBR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y\nBR2_PACKAGE_RPI_WIFI_FIRMWARE=y\nBR2_PACKAGE_GPTFDISK=y\nBR2_PACKAGE_RNG_TOOLS=y\nBR2_PACKAGE_USB_MODESWITCH_DATA=y\nBR2_PACKAGE_CA_CERTIFICATES=y\nBR2_PACKAGE_LIBSSH2=y\nBR2_PACKAGE_LIBFUSE=y\nBR2_PACKAGE_LIBCURL=y\nBR2_PACKAGE_LIBCURL_CURL=y\nBR2_PACKAGE_LIBCAP=y\nBR2_PACKAGE_PCRE=y\nBR2_PACKAGE_PCRE_UCP=y\nBR2_PACKAGE_SEMVER_SORT=y\nBR2_PACKAGE_AUTOSSH=y\nBR2_PACKAGE_CHRONY=y\nBR2_PACKAGE_CRDA=y\nBR2_PACKAGE_DHCP=y\nBR2_PACKAGE_DHCP_CLIENT=y\n# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set\nBR2_PACKAGE_IPTABLES=y\nBR2_PACKAGE_IW=y\nBR2_PACKAGE_NET_TOOLS=y\nBR2_PACKAGE_NETCAT=y\nBR2_PACKAGE_NTP=y\nBR2_PACKAGE_NTP_SNTP=y\n# BR2_PACKAGE_NTP_NTPD is not set\nBR2_PACKAGE_OPENSSH=y\nBR2_PACKAGE_PPPD=y\nBR2_PACKAGE_WIRELESS_TOOLS=y\nBR2_PACKAGE_WPA_SUPPLICANT=y\nBR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y\nBR2_PACKAGE_WPA_SUPPLICANT_EAP=y\nBR2_PACKAGE_WPA_SUPPLICANT_WPS=y\nBR2_PACKAGE_WPA_SUPPLICANT_CLI=y\nBR2_PACKAGE_BASH=y\nBR2_PACKAGE_LOGROTATE=y\nBR2_PACKAGE_CGROUPFS_MOUNT=y\nBR2_PACKAGE_TAR=y\nBR2_PACKAGE_UTIL_LINUX_BINARIES=y\nBR2_PACKAGE_UTIL_LINUX_LOSETUP=y\nBR2_PACKAGE_UTIL_LINUX_PARTX=y\nBR2_PACKAGE_NANO=y\n"
  },
  {
    "path": "configs/raspberrypi64_initramfs_defconfig",
    "content": "BR2_arm=y\nBR2_cortex_a7=y\nBR2_ARM_FPU_NEON_VFPV4=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-raspberrypi64-initramfs\"\nBR2_OPTIMIZE_2=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_TARGET_GENERIC_HOSTNAME=\"\"\nBR2_TARGET_GENERIC_ISSUE=\"\"\nBR2_ROOTFS_OVERLAY=\"board/common/overlay-initramfs board/raspberrypi/overlay-initramfs\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox_initramfs.config\"\nBR2_PACKAGE_UTIL_LINUX=y\nBR2_PACKAGE_UTIL_LINUX_LIBBLKID=y\nBR2_TARGET_ROOTFS_CPIO=y\nBR2_TARGET_ROOTFS_CPIO_GZIP=y\n# BR2_TARGET_ROOTFS_TAR is not set\n"
  },
  {
    "path": "configs/raspberrypi_defconfig",
    "content": "BR2_arm=y\nBR2_arm1176jzf_s=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-raspberrypi\"\nBR2_OPTIMIZE_2=y\nBR2_GLOBAL_PATCH_DIR=\"board/raspberrypi\"\nBR2_TOOLCHAIN_BUILDROOT_GLIBC=y\nBR2_TOOLCHAIN_BUILDROOT_CXX=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y\nBR2_TARGET_TZ_INFO=y\nBR2_ROOTFS_OVERLAY=\"board/common/overlay board/raspberrypi/overlay\"\nBR2_ROOTFS_POST_BUILD_SCRIPT=\"board/common/postscript.sh\"\nBR2_LINUX_KERNEL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION=\"https://github.com/raspberrypi/linux/archive/6f921e98008589258f97243fb6658d09750f0a2f.tar.gz\"\nBR2_LINUX_KERNEL_DEFCONFIG=\"bcmrpi\"\nBR2_LINUX_KERNEL_DTS_SUPPORT=y\nBR2_LINUX_KERNEL_INTREE_DTS_NAME=\"bcm2708-rpi-zero bcm2708-rpi-zero-w bcm2708-rpi-b bcm2708-rpi-b-plus bcm2708-rpi-cm\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox.config\"\nBR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y\nBR2_PACKAGE_ALSA_UTILS=y\nBR2_PACKAGE_ALSA_UTILS_APLAY=y\nBR2_PACKAGE_GZIP=y\nBR2_PACKAGE_JQ=y\nBR2_PACKAGE_E2FSPROGS=y\nBR2_PACKAGE_NTFS_3G=y\nBR2_PACKAGE_B43_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y\nBR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y\nBR2_PACKAGE_RPI_BT_FIRMWARE=y\nBR2_PACKAGE_RPI_FIRMWARE=y\nBR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y\nBR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y\nBR2_PACKAGE_RPI_WIFI_FIRMWARE=y\nBR2_PACKAGE_GPTFDISK=y\nBR2_PACKAGE_RNG_TOOLS=y\nBR2_PACKAGE_RPI_ARMMEM=y\nBR2_PACKAGE_RPI_USERLAND=y\nBR2_PACKAGE_USB_MODESWITCH_DATA=y\nBR2_PACKAGE_CA_CERTIFICATES=y\nBR2_PACKAGE_LIBSSH2=y\nBR2_PACKAGE_LIBFUSE=y\nBR2_PACKAGE_LIBCURL=y\nBR2_PACKAGE_LIBCURL_CURL=y\nBR2_PACKAGE_LIBCAP=y\nBR2_PACKAGE_PCRE=y\nBR2_PACKAGE_PCRE_UCP=y\nBR2_PACKAGE_SEMVER_SORT=y\nBR2_PACKAGE_AUTOSSH=y\nBR2_PACKAGE_CHRONY=y\nBR2_PACKAGE_CRDA=y\nBR2_PACKAGE_DHCP=y\nBR2_PACKAGE_DHCP_CLIENT=y\n# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set\nBR2_PACKAGE_IPTABLES=y\nBR2_PACKAGE_IW=y\nBR2_PACKAGE_NET_TOOLS=y\nBR2_PACKAGE_NETCAT=y\nBR2_PACKAGE_NTP=y\nBR2_PACKAGE_NTP_SNTP=y\n# BR2_PACKAGE_NTP_NTPD is not set\nBR2_PACKAGE_OPENSSH=y\nBR2_PACKAGE_PPPD=y\nBR2_PACKAGE_WIRELESS_TOOLS=y\nBR2_PACKAGE_WPA_SUPPLICANT=y\nBR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y\nBR2_PACKAGE_WPA_SUPPLICANT_EAP=y\nBR2_PACKAGE_WPA_SUPPLICANT_WPS=y\nBR2_PACKAGE_WPA_SUPPLICANT_CLI=y\nBR2_PACKAGE_BASH=y\nBR2_PACKAGE_LOGROTATE=y\nBR2_PACKAGE_CGROUPFS_MOUNT=y\nBR2_PACKAGE_TAR=y\nBR2_PACKAGE_UTIL_LINUX_BINARIES=y\nBR2_PACKAGE_UTIL_LINUX_LOSETUP=y\nBR2_PACKAGE_UTIL_LINUX_PARTX=y\nBR2_PACKAGE_NANO=y\n"
  },
  {
    "path": "configs/raspberrypi_initramfs_defconfig",
    "content": "BR2_arm=y\nBR2_arm1176jzf_s=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-raspberrypi-initramfs\"\nBR2_OPTIMIZE_2=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\nBR2_TOOLCHAIN_EXTERNAL_URL=\"https://github.com/raspberrypi/tools/archive/5caa7046982f0539cf5380f94da04b31129ed521.tar.gz\"\nBR2_TOOLCHAIN_EXTERNAL_REL_BIN_PATH=\"arm-bcm2708/arm-linux-gnueabihf/bin\"\nBR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX=\"arm-linux-gnueabihf\"\nBR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y\nBR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y\nBR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y\nBR2_TOOLCHAIN_EXTERNAL_CXX=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_TARGET_GENERIC_HOSTNAME=\"\"\nBR2_TARGET_GENERIC_ISSUE=\"\"\nBR2_ROOTFS_OVERLAY=\"board/common/overlay-initramfs board/raspberrypi/overlay-initramfs\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox_initramfs.config\"\nBR2_PACKAGE_UTIL_LINUX=y\nBR2_PACKAGE_UTIL_LINUX_LIBBLKID=y\nBR2_TARGET_ROOTFS_CPIO=y\nBR2_TARGET_ROOTFS_CPIO_GZIP=y\n# BR2_TARGET_ROOTFS_TAR is not set\n"
  },
  {
    "path": "configs/rockpi4b_defconfig",
    "content": "BR2_aarch64=y\nBR2_cortex_a72_a53=y\nBR2_JLEVEL=4\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-rockpi4b\"\nBR2_OPTIMIZE_2=y\nBR2_GLOBAL_PATCH_DIR=\"board/rockpi4b\"\n# BR2_COMPILER_PARANOID_UNSAFE_PATH is not set\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y\nBR2_TARGET_TZ_INFO=y\nBR2_ROOTFS_OVERLAY=\"board/common/overlay board/rockpi4b/overlay\"\nBR2_ROOTFS_POST_BUILD_SCRIPT=\"board/common/postscript.sh\"\nBR2_LINUX_KERNEL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL=y\nBR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION=\"https://github.com/radxa/kernel/archive/4e1e1f3520cd63c496b16104d7f7cb524a206a83.tar.gz\"\nBR2_LINUX_KERNEL_DEFCONFIG=\"rockchip_linux\"\nBR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES=\"board/rockpi4b/linux.fragment\"\nBR2_LINUX_KERNEL_DTS_SUPPORT=y\nBR2_LINUX_KERNEL_INTREE_DTS_NAME=\"rockchip/rk3399-rock-pi-4b\"\nBR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox.config\"\nBR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y\nBR2_PACKAGE_ALSA_UTILS=y\nBR2_PACKAGE_ALSA_UTILS_APLAY=y\nBR2_PACKAGE_GZIP=y\nBR2_PACKAGE_JQ=y\nBR2_PACKAGE_E2FSPROGS=y\nBR2_PACKAGE_NTFS_3G=y\nBR2_PACKAGE_B43_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y\nBR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y\nBR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y\nBR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y\nBR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y\nBR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y\nBR2_PACKAGE_RKBIN=y\nBR2_PACKAGE_GPTFDISK=y\nBR2_PACKAGE_RNG_TOOLS=y\nBR2_PACKAGE_USB_MODESWITCH_DATA=y\nBR2_PACKAGE_CA_CERTIFICATES=y\nBR2_PACKAGE_LIBSSH2=y\nBR2_PACKAGE_LIBFUSE=y\nBR2_PACKAGE_LIBCURL=y\nBR2_PACKAGE_LIBCURL_CURL=y\nBR2_PACKAGE_LIBCAP=y\nBR2_PACKAGE_SEMVER_SORT=y\nBR2_PACKAGE_AUTOSSH=y\nBR2_PACKAGE_BLUEZ5_UTILS=y\nBR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y\nBR2_PACKAGE_BLUEZ5_UTILS_TOOLS=y\nBR2_PACKAGE_CHRONY=y\nBR2_PACKAGE_CRDA=y\nBR2_PACKAGE_DHCP=y\nBR2_PACKAGE_DHCP_CLIENT=y\n# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set\nBR2_PACKAGE_IPTABLES=y\nBR2_PACKAGE_IW=y\nBR2_PACKAGE_NET_TOOLS=y\nBR2_PACKAGE_NETCAT=y\nBR2_PACKAGE_NTP=y\nBR2_PACKAGE_NTP_SNTP=y\n# BR2_PACKAGE_NTP_NTPD is not set\nBR2_PACKAGE_OPENSSH=y\nBR2_PACKAGE_PPPD=y\nBR2_PACKAGE_WIRELESS_TOOLS=y\nBR2_PACKAGE_WPA_SUPPLICANT=y\nBR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y\nBR2_PACKAGE_WPA_SUPPLICANT_EAP=y\nBR2_PACKAGE_WPA_SUPPLICANT_WPS=y\nBR2_PACKAGE_WPA_SUPPLICANT_CLI=y\nBR2_PACKAGE_BASH=y\nBR2_PACKAGE_LOGROTATE=y\nBR2_PACKAGE_CGROUPFS_MOUNT=y\nBR2_PACKAGE_TAR=y\nBR2_PACKAGE_UTIL_LINUX_BINARIES=y\nBR2_PACKAGE_UTIL_LINUX_LOSETUP=y\nBR2_PACKAGE_UTIL_LINUX_PARTX=y\nBR2_PACKAGE_NANO=y\nBR2_TARGET_UBOOT=y\nBR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y\nBR2_TARGET_UBOOT_CUSTOM_TARBALL=y\nBR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION=\"https://github.com/radxa/u-boot/archive/8e67d581610eb7abd97885e1069b94dcf15b592c.tar.gz\"\nBR2_TARGET_UBOOT_BOARD_DEFCONFIG=\"rock-pi-4b-rk3399\"\nBR2_TARGET_UBOOT_NEEDS_DTC=y\nBR2_TARGET_UBOOT_NEEDS_PYTHON3=y\nBR2_TARGET_UBOOT_FORMAT_DTB_BIN=y\nBR2_PACKAGE_HOST_UBOOT_TOOLS=y\nBR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y\nBR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE=\"board/rockpi4b/boot.cmd\"\n"
  },
  {
    "path": "configs/rockpi4b_initramfs_defconfig",
    "content": "BR2_aarch64=y\nBR2_cortex_a55=y\nBR2_CCACHE=y\nBR2_CCACHE_DIR=\"$(TOPDIR)/.buildroot-ccache-rockpi4b-initramfs\"\nBR2_OPTIMIZE_2=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TARGET_OPTIMIZATION=\"-pipe\"\nBR2_TARGET_GENERIC_HOSTNAME=\"\"\nBR2_TARGET_GENERIC_ISSUE=\"\"\nBR2_ROOTFS_OVERLAY=\"board/common/overlay-initramfs board/rockpi4b/overlay-initramfs\"\nBR2_PACKAGE_BUSYBOX_CONFIG=\"board/common/busybox_initramfs.config\"\nBR2_PACKAGE_UTIL_LINUX=y\nBR2_PACKAGE_UTIL_LINUX_LIBBLKID=y\nBR2_TARGET_ROOTFS_CPIO=y\nBR2_TARGET_ROOTFS_CPIO_GZIP=y\n# BR2_TARGET_ROOTFS_TAR is not set\n"
  },
  {
    "path": "docs/conf/asciidoc-text.conf",
    "content": "# Refer to following asciidoc documentation:\n#     http://www.methods.co.nz/asciidoc/userguide.html\n# In particular sections \"Macros\" and \"Attribute References\"\n#\n# For hyperlinks, show 'link text [URL]' (if link text provided) or 'URL'\n[http-inlinemacro]\n{0=}{0? &#91;}{name}:{target}{0?&#93;}\n[https-inlinemacro]\n{0=}{0? &#91;}{name}:{target}{0?&#93;}\n[ftp-inlinemacro]\n{0=}{0? &#91;}{name}:{target}{0?&#93;}\n[file-inlinemacro]\n{0=}{0? &#91;}{name}:{target}{0?&#93;}\n[irc-inlinemacro]\n{0=}{0? &#91;}{name}:{target}{0?&#93;}\n[mailto-inlinemacro]\n{0=}{0? &#91;}{name}:{target}{0?&#93;}\n\n# Hide image representation from text manual\n[image-inlinemacro]\n{empty}\n[image-blockmacro]\n{empty}\n"
  },
  {
    "path": "docs/manual/adding-board-support.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[adding-board-support]]\n== Adding support for a particular board\n\nBuildroot contains basic configurations for several publicly available\nhardware boards, so that users of such a board can easily build a system\nthat is known to work. You are welcome to add support for other boards\nto Buildroot too.\n\nTo do so, you need to create a normal Buildroot configuration that\nbuilds a basic system for the hardware: (internal) toolchain, kernel,\nbootloader, filesystem and a simple BusyBox-only userspace. No specific\npackage should be selected: the configuration should be as minimal as\npossible, and should only build a working basic BusyBox system for the\ntarget platform. You can of course use more complicated configurations\nfor your internal projects, but the Buildroot project will only\nintegrate basic board configurations. This is because package\nselections are highly application-specific.\n\nOnce you have a known working configuration, run +make\nsavedefconfig+. This will generate a minimal +defconfig+ file at the\nroot of the Buildroot source tree. Move this file into the +configs/+\ndirectory, and rename it +<boardname>_defconfig+. If the configuration\nis a bit more complicated, it is nice to manually reformat it and\nseparate it into sections, with a comment before each section. Typical\nsections are _Architecture_, _Toolchain options_ (typically just linux\nheaders version), _Firmware_, _Bootloader_, _Kernel_, and _Filesystem_.\n\nAlways use fixed versions or commit hashes for the different\ncomponents, not the \"latest\" version. For example, set\n+BR2_LINUX_KERNEL_CUSTOM_VERSION=y+ and\n+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE+ to the kernel version you tested\nwith.\n\nIt is recommended to use as much as possible upstream versions of the\nLinux kernel and bootloaders, and to use as much as possible default\nkernel and bootloader configurations. If they are incorrect for your\nboard, or no default exists, we encourage you to send fixes to the\ncorresponding upstream projects.\n\nHowever, in the mean time, you may want to store kernel or bootloader\nconfiguration or patches specific to your target platform. To do so,\ncreate a directory +board/<manufacturer>+ and a subdirectory\n+board/<manufacturer>/<boardname>+. You can then store your patches\nand configurations in these directories, and reference them from the main\nBuildroot configuration. Refer to xref:customize[] for more details.\n"
  },
  {
    "path": "docs/manual/adding-packages-asciidoc.txt",
    "content": "// -*- mode:doc; -*-\n// vim: syntax=asciidoc\n\n=== Infrastructure for asciidoc documents\n\n[[asciidoc-documents-tutorial]]\n\nThe Buildroot manual, which you are currently reading, is entirely written\nusing the http://asciidoc.org/[AsciiDoc] mark-up syntax. The manual is then\nrendered to many formats:\n\n* html\n* split-html\n* pdf\n* epub\n* text\n\nAlthough Buildroot only contains one document written in AsciiDoc, there\nis, as for packages, an infrastructure for rendering documents using the\nAsciiDoc syntax.\n\nAlso as for packages, the AsciiDoc infrastructure is available from a\nxref:outside-br-custom[br2-external tree]. This allows documentation for\na br2-external tree to match the Buildroot documentation, as it will be\nrendered to the same formats and use the same layout and theme.\n\n==== +asciidoc-document+ tutorial\n\nWhereas package infrastructures are suffixed with +-package+, the document\ninfrastructures are suffixed with +-document+. So, the AsciiDoc infrastructure\nis named +asciidoc-document+.\n\nHere is an example to render a simple AsciiDoc document.\n\n----\n01: ################################################################################\n02: #\n03: # foo-document\n04: #\n05: ################################################################################\n06:\n07: FOO_SOURCES = $(sort $(wildcard $(pkgdir)/*))\n08: $(eval $(call asciidoc-document))\n----\n\nOn line 7, the Makefile declares what the sources of the document are.\nCurrently, it is expected that the document's sources are only local;\nBuildroot will not attempt to download anything to render a document.\nThus, you must indicate where the sources are. Usually, the string\nabove is sufficient for a document with no sub-directory structure.\n\nOn line 8, we call the +asciidoc-document+ function, which generates all\nthe Makefile code necessary to render the document.\n\n==== +asciidoc-document+ reference\n\nThe list of variables that can be set in a +.mk+ file to give metadata\ninformation is (assuming the document name is +foo+) :\n\n* +FOO_SOURCES+, mandatory, defines the source files for the document.\n\n* +FOO_RESOURCES+, optional, may contain a space-separated list of paths\n  to one or more directories containing so-called resources (like CSS or\n  images). By default, empty.\n\n* +FOO_DEPENDENCIES+, optional, the list of packages (most probably,\n  host-packages) that must be built before building this document.\n\nThere are also additional hooks (see xref:hooks[] for general information\non hooks), that a document may set to define extra actions to be done at\nvarious steps:\n\n* +FOO_POST_RSYNC_HOOKS+ to run additional commands after the sources\n  have been copied by Buildroot. This can for example be used to\n  generate part of the manual with information extracted from the\n  tree. As an example, Buildroot uses this hook to generate the tables\n  in the appendices.\n\n* +FOO_CHECK_DEPENDENCIES_HOOKS+ to run additional tests on required\n  components to generate the document. In AsciiDoc, it is possible to\n  call filters, that is, programs that will parse an AsciiDoc block and\n  render it appropriately (e.g. http://ditaa.sourceforge.net/[ditaa] or\n  https://pythonhosted.org/aafigure/[aafigure]).\n\n* +FOO_CHECK_DEPENDENCIES_<FMT>_HOOKS+, to run additional tests for\n  the specified format +<FMT>+ (see the list of rendered formats, above).\n\nHere is a complete example that uses all variables and all hooks:\n\n----\n01: ################################################################################\n02: #\n03: # foo-document\n04: #\n05: ################################################################################\n06:\n07: FOO_SOURCES = $(sort $(wildcard $(pkgdir)/*))\n08: FOO_RESOURCES = $(sort $(wildcard $(pkgdir)/ressources))\n09:\n10: define FOO_GEN_EXTRA_DOC\n11:     /path/to/generate-script --outdir=$(@D)\n12: endef\n13: FOO_POST_RSYNC_HOOKS += FOO_GEN_EXTRA_DOC\n14:\n15: define FOO_CHECK_MY_PROG\n16:     if ! which my-prog >/dev/null 2>&1; then \\\n17:         echo \"You need my-prog to generate the foo document\"; \\\n18:         exit 1; \\\n19:     fi\n20: endef\n21: FOO_CHECK_DEPENDENCIES_HOOKS += FOO_CHECK_MY_PROG\n22:\n23: define FOO_CHECK_MY_OTHER_PROG\n24:     if ! which my-other-prog >/dev/null 2>&1; then \\\n25:         echo \"You need my-other-prog to generate the foo document as PDF\"; \\\n26:         exit 1; \\\n27:     fi\n28: endef\n29: FOO_CHECK_DEPENDENCIES_PDF_HOOKS += FOO_CHECK_MY_OTHER_PROG\n30:\n31: $(eval $(call asciidoc-document))\n----\n"
  },
  {
    "path": "docs/manual/adding-packages-autotools.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for autotools-based packages\n\n[[autotools-package-tutorial]]\n\n==== +autotools-package+ tutorial\n\nFirst, let's see how to write a +.mk+ file for an autotools-based\npackage, with an example :\n\n------------------------\n01: ################################################################################\n02: #\n03: # libfoo\n04: #\n05: ################################################################################\n06:\n07: LIBFOO_VERSION = 1.0\n08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz\n09: LIBFOO_SITE = http://www.foosoftware.org/download\n10: LIBFOO_INSTALL_STAGING = YES\n11: LIBFOO_INSTALL_TARGET = NO\n12: LIBFOO_CONF_OPTS = --disable-shared\n13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf\n14:\n15: $(eval $(autotools-package))\n------------------------\n\nOn line 7, we declare the version of the package.\n\nOn line 8 and 9, we declare the name of the tarball (xz-ed tarball recommended)\nand the location of the tarball on the Web. Buildroot will automatically\ndownload the tarball from this location.\n\nOn line 10, we tell Buildroot to install the package to the staging\ndirectory. The staging directory, located in +output/staging/+\nis the directory where all the packages are installed, including their\ndevelopment files, etc. By default, packages are not installed to the\nstaging directory, since usually, only libraries need to be installed in\nthe staging directory: their development files are needed to compile\nother libraries or applications depending on them. Also by default, when\nstaging installation is enabled, packages are installed in this location\nusing the +make install+ command.\n\nOn line 11, we tell Buildroot to not install the package to the\ntarget directory. This directory contains what will become the root\nfilesystem running on the target. For purely static libraries, it is\nnot necessary to install them in the target directory because they will\nnot be used at runtime. By default, target installation is enabled; setting\nthis variable to NO is almost never needed. Also by default, packages are\ninstalled in this location using the +make install+ command.\n\nOn line 12, we tell Buildroot to pass a custom configure option, that\nwill be passed to the +./configure+ script before configuring\nand building the package.\n\nOn line 13, we declare our dependencies, so that they are built\nbefore the build process of our package starts.\n\nFinally, on line line 15, we invoke the +autotools-package+\nmacro that generates all the Makefile rules that actually allows the\npackage to be built.\n\n[[autotools-package-reference]]\n\n==== +autotools-package+ reference\n\nThe main macro of the autotools package infrastructure is\n+autotools-package+. It is similar to the +generic-package+ macro. The ability to\nhave target and host packages is also available, with the\n+host-autotools-package+ macro.\n\nJust like the generic infrastructure, the autotools infrastructure\nworks by defining a number of variables before calling the\n+autotools-package+ macro.\n\nFirst, all the package metadata information variables that exist in the\ngeneric infrastructure also exist in the autotools infrastructure:\n+LIBFOO_VERSION+, +LIBFOO_SOURCE+,\n+LIBFOO_PATCH+, +LIBFOO_SITE+,\n+LIBFOO_SUBDIR+, +LIBFOO_DEPENDENCIES+,\n+LIBFOO_INSTALL_STAGING+, +LIBFOO_INSTALL_TARGET+.\n\nA few additional variables, specific to the autotools infrastructure,\ncan also be defined. Many of them are only useful in very specific\ncases, typical packages will therefore only use a few of them.\n\n* +LIBFOO_SUBDIR+ may contain the name of a subdirectory\n  inside the package that contains the configure script. This is useful,\n  if for example, the main configure script is not at the root of the\n  tree extracted by the tarball. If +HOST_LIBFOO_SUBDIR+ is\n  not specified, it defaults to +LIBFOO_SUBDIR+.\n\n* +LIBFOO_CONF_ENV+, to specify additional environment\n  variables to pass to the configure script. By default, empty.\n\n* +LIBFOO_CONF_OPTS+, to specify additional configure\n  options to pass to the configure script. By default, empty.\n\n* +LIBFOO_MAKE+, to specify an alternate +make+\n  command. This is typically useful when parallel make is enabled in\n  the configuration (using +BR2_JLEVEL+) but that this\n  feature should be disabled for the given package, for one reason or\n  another. By default, set to +$(MAKE)+. If parallel building\n  is not supported by the package, then it should be set to\n  +LIBFOO_MAKE=$(MAKE1)+.\n\n* +LIBFOO_MAKE_ENV+, to specify additional environment\n  variables to pass to make in the build step. These are passed before\n  the +make+ command. By default, empty.\n\n* +LIBFOO_MAKE_OPTS+, to specify additional variables to\n  pass to make in the build step. These are passed after the\n  +make+ command. By default, empty.\n\n* +LIBFOO_AUTORECONF+, tells whether the package should\n  be autoreconfigured or not (i.e. if the configure script and\n  Makefile.in files should be re-generated by re-running autoconf,\n  automake, libtool, etc.). Valid values are +YES+ and\n  +NO+. By default, the value is +NO+\n\n* +LIBFOO_AUTORECONF_ENV+, to specify additional environment\n  variables to pass to the 'autoreconf' program if\n  +LIBFOO_AUTORECONF=YES+. These are passed in the environment of\n  the 'autoreconf' command. By default, empty.\n\n* +LIBFOO_AUTORECONF_OPTS+ to specify additional options\n  passed to the 'autoreconf' program if\n  +LIBFOO_AUTORECONF=YES+. By default, empty.\n\n* +LIBFOO_GETTEXTIZE+, tells whether the package should be\n  gettextized or not (i.e. if the package uses a different gettext\n  version than Buildroot provides, and it is needed to run\n  'gettextize'.) Only valid when +LIBFOO_AUTORECONF=YES+. Valid\n  values are +YES+ and +NO+. The default is +NO+.\n\n* +LIBFOO_GETTEXTIZE_OPTS+, to specify additional options passed to\n  the 'gettextize' program, if +LIBFOO_GETTEXTIZE=YES+. You may\n  use that if, for example, the +.po+ files are not located in the\n  standard place (i.e. in +po/+ at the root of the package.) By\n  default, '-f'.\n\n* +LIBFOO_LIBTOOL_PATCH+ tells whether the Buildroot\n  patch to fix libtool cross-compilation issues should be applied or\n  not. Valid values are +YES+ and +NO+. By\n  default, the value is +YES+\n\n* +LIBFOO_INSTALL_STAGING_OPTS+ contains the make options\n  used to install the package to the staging directory. By default, the\n  value is +DESTDIR=$(STAGING_DIR) install+, which is\n  correct for most autotools packages. It is still possible to override\n  it.\n\n* +LIBFOO_INSTALL_TARGET_OPTS+ contains the make options\n  used to install the package to the target directory. By default, the\n  value is +DESTDIR=$(TARGET_DIR) install+. The default\n  value is correct for most autotools packages, but it is still possible\n  to override it if needed.\n\nWith the autotools infrastructure, all the steps required to build\nand install the packages are already defined, and they generally work\nwell for most autotools-based packages. However, when required, it is\nstill possible to customize what is done in any particular step:\n\n* By adding a post-operation hook (after extract, patch, configure,\n  build or install). See xref:hooks[] for details.\n\n* By overriding one of the steps. For example, even if the autotools\n  infrastructure is used, if the package +.mk+ file defines its\n  own +LIBFOO_CONFIGURE_CMDS+ variable, it will be used\n  instead of the default autotools one. However, using this method\n  should be restricted to very specific cases. Do not use it in the\n  general case.\n"
  },
  {
    "path": "docs/manual/adding-packages-cargo.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Integration of Cargo-based packages\n\nCargo is the package manager for the Rust programming language. It allows the\nuser to build programs or libraries written in Rust, but it also downloads and\nmanages their dependencies, to ensure repeatable builds. Cargo packages are\ncalled \"crates\".\n\n[[cargo-package-tutorial]]\n\n==== Cargo-based package's +Config.in+ file\n\nThe +Config.in+ file of Cargo-based package 'foo' should contain:\n\n---------------------------\n01: config BR2_PACKAGE_FOO\n02: \tbool \"foo\"\n03: \tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n04: \tselect BR2_PACKAGE_HOST_RUSTC\n05: \thelp\n06: \t  This is a comment that explains what foo is.\n07:\n08: \t  http://foosoftware.org/foo/\n---------------------------\n\n==== Cargo-based package's +.mk+ file\n\nBuildroot does not (yet) provide a dedicated package infrastructure for\nCargo-based packages. So, we will explain how to write a +.mk+ file for such a\npackage. Let's start with an example:\n\n------------------------------\n01: ################################################################################\n02: #\n03: # foo\n04: #\n05: ################################################################################\n06:\n07: FOO_VERSION = 1.0\n08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz\n09: FOO_SITE = http://www.foosoftware.org/download\n10: FOO_LICENSE = GPL-3.0+\n11: FOO_LICENSE_FILES = COPYING\n12:\n13: FOO_DEPENDENCIES = host-rustc\n14:\n15: FOO_CARGO_ENV = CARGO_HOME=$(HOST_DIR)/share/cargo\n16:\n17: FOO_BIN_DIR = target/$(RUSTC_TARGET_NAME)/$(FOO_CARGO_MODE)\n18:\n19: FOO_CARGO_OPTS = \\\n20: \t$(if $(BR2_ENABLE_DEBUG),,--release) \\\n21: \t--target=$(RUSTC_TARGET_NAME) \\\n22: \t--manifest-path=$(@D)/Cargo.toml\n23:\n24: define FOO_BUILD_CMDS\n25: \t$(TARGET_MAKE_ENV) $(FOO_CARGO_ENV) \\\n26: \t\tcargo build $(FOO_CARGO_OPTS)\n27: endef\n28:\n29: define FOO_INSTALL_TARGET_CMDS\n30: \t$(INSTALL) -D -m 0755 $(@D)/$(FOO_BIN_DIR)/foo \\\n31: \t\t$(TARGET_DIR)/usr/bin/foo\n32: endef\n33:\n34: $(eval $(generic-package))\n--------------------------------\n\nThe Makefile starts with the definition of the standard variables for package\ndeclaration (lines 7 to 11).\n\nAs seen in line 34, it is based on the\nxref:generic-package-tutorial[+generic-package+ infrastructure]. So, it defines\nthe variables required by this particular infrastructure, where Cargo is\ninvoked:\n\n* +FOO_BUILD_CMDS+: Cargo is invoked to perform the build. The options required\n  to configure the cross-compilation of the package are passed via\n  +FOO_CONF_OPTS+.\n\n* +FOO_INSTALL_TARGET_CMDS+: The binary executable generated is installed on\n  the target.\n\nIn order to have Cargo available for the build, +FOO_DEPENDENCIES+ needs to\ncontain +host-cargo+.\n\nTo sum it up, to add a new Cargo-based package, the Makefile example can be\ncopied verbatim then edited to replace all occurences of +FOO+ with the\nuppercase name of the new package and update the values of the standard\nvariables.\n\n==== About Dependencies Management\n\nA crate can depend on other libraries from crates.io or git repositories, listed\nin its Cargo.toml file. Before starting a build, Cargo usually downloads\nautomatically them. This step can also be performed independently, via the\n+cargo fetch+ command.\n\nCargo maintains a local cache of the registry index and of git checkouts of the\ncrates, whose location is given by +$CARGO_HOME+. As seen in the package\nMakefile example at line 15, this environment variable is set to\n+$(HOST_DIR)/share/cargo+.\n\nThis dependency download mechanism is not convenient when performing an offline\nbuild, as Cargo will fail to fetch the dependencies. In that case, it is advised\nto generate a tarball of the dependencies using the +cargo vendor+ and add it to\n+FOO_EXTRA_DOWNLOADS+.\n"
  },
  {
    "path": "docs/manual/adding-packages-cmake.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for CMake-based packages\n\n[[cmake-package-tutorial]]\n\n==== +cmake-package+ tutorial\n\nFirst, let's see how to write a +.mk+ file for a CMake-based package,\nwith an example :\n\n------------------------\n01: ################################################################################\n02: #\n03: # libfoo\n04: #\n05: ################################################################################\n06:\n07: LIBFOO_VERSION = 1.0\n08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz\n09: LIBFOO_SITE = http://www.foosoftware.org/download\n10: LIBFOO_INSTALL_STAGING = YES\n11: LIBFOO_INSTALL_TARGET = NO\n12: LIBFOO_CONF_OPTS = -DBUILD_DEMOS=ON\n13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf\n14:\n15: $(eval $(cmake-package))\n------------------------\n\nOn line 7, we declare the version of the package.\n\nOn line 8 and 9, we declare the name of the tarball (xz-ed tarball recommended)\nand the location of the tarball on the Web. Buildroot will automatically\ndownload the tarball from this location.\n\nOn line 10, we tell Buildroot to install the package to the staging\ndirectory. The staging directory, located in +output/staging/+\nis the directory where all the packages are installed, including their\ndevelopment files, etc. By default, packages are not installed to the\nstaging directory, since usually, only libraries need to be installed in\nthe staging directory: their development files are needed to compile\nother libraries or applications depending on them. Also by default, when\nstaging installation is enabled, packages are installed in this location\nusing the +make install+ command.\n\nOn line 11, we tell Buildroot to not install the package to the\ntarget directory. This directory contains what will become the root\nfilesystem running on the target. For purely static libraries, it is\nnot necessary to install them in the target directory because they will\nnot be used at runtime. By default, target installation is enabled; setting\nthis variable to NO is almost never needed. Also by default, packages are\ninstalled in this location using the +make install+ command.\n\nOn line 12, we tell Buildroot to pass custom options to CMake when it is\nconfiguring the package.\n\nOn line 13, we declare our dependencies, so that they are built\nbefore the build process of our package starts.\n\nFinally, on line line 15, we invoke the +cmake-package+\nmacro that generates all the Makefile rules that actually allows the\npackage to be built.\n\n[[cmake-package-reference]]\n\n==== +cmake-package+ reference\n\nThe main macro of the CMake package infrastructure is\n+cmake-package+. It is similar to the +generic-package+ macro. The ability to\nhave target and host packages is also available, with the\n+host-cmake-package+ macro.\n\nJust like the generic infrastructure, the CMake infrastructure works\nby defining a number of variables before calling the +cmake-package+\nmacro.\n\nFirst, all the package metadata information variables that exist in\nthe generic infrastructure also exist in the CMake infrastructure:\n+LIBFOO_VERSION+, +LIBFOO_SOURCE+, +LIBFOO_PATCH+, +LIBFOO_SITE+,\n+LIBFOO_SUBDIR+, +LIBFOO_DEPENDENCIES+, +LIBFOO_INSTALL_STAGING+,\n+LIBFOO_INSTALL_TARGET+.\n\nA few additional variables, specific to the CMake infrastructure, can\nalso be defined. Many of them are only useful in very specific cases,\ntypical packages will therefore only use a few of them.\n\n* +LIBFOO_SUBDIR+ may contain the name of a subdirectory inside the\n  package that contains the main CMakeLists.txt file. This is useful,\n  if for example, the main CMakeLists.txt file is not at the root of\n  the tree extracted by the tarball. If +HOST_LIBFOO_SUBDIR+ is not\n  specified, it defaults to +LIBFOO_SUBDIR+.\n\n* +LIBFOO_CONF_ENV+, to specify additional environment variables to\n  pass to CMake. By default, empty.\n\n* +LIBFOO_CONF_OPTS+, to specify additional configure options to pass\n  to CMake. By default, empty. A number of common CMake options are\n  set by the +cmake-package+ infrastructure; so it is normally not\n  necessary to set them in the package's +*.mk+ file unless you want\n  to override them:\n\n** +CMAKE_BUILD_TYPE+ is driven by +BR2_ENABLE_RUNTIME_DEBUG+;\n** +CMAKE_INSTALL_PREFIX+;\n** +BUILD_SHARED_LIBS+ is driven by +BR2_STATIC_LIBS+;\n** +BUILD_DOC+, +BUILD_DOCS+ are disabled;\n** +BUILD_EXAMPLE+, +BUILD_EXAMPLES+ are disabled;\n** +BUILD_TEST+, +BUILD_TESTS+, +BUILD_TESTING+ are disabled.\n\n* +LIBFOO_SUPPORTS_IN_SOURCE_BUILD = NO+ should be set when the package\n  cannot be built inside the source tree but needs a separate build\n  directory.\n\n* +LIBFOO_MAKE+, to specify an alternate +make+ command. This is\n  typically useful when parallel make is enabled in the configuration\n  (using +BR2_JLEVEL+) but that this feature should be disabled for\n  the given package, for one reason or another. By default, set to\n  +$(MAKE)+. If parallel building is not supported by the package,\n  then it should be set to +LIBFOO_MAKE=$(MAKE1)+.\n\n* +LIBFOO_MAKE_ENV+, to specify additional environment variables to\n  pass to make in the build step. These are passed before the +make+\n  command. By default, empty.\n\n* +LIBFOO_MAKE_OPTS+, to specify additional variables to pass to make\n  in the build step. These are passed after the +make+ command. By\n  default, empty.\n\n* +LIBFOO_INSTALL_OPTS+ contains the make options used to\n  install the package to the host directory. By default, the value\n  is +install+, which is correct for most CMake packages. It is still\n  possible to override it.\n\n* +LIBFOO_INSTALL_STAGING_OPTS+ contains the make options used to\n  install the package to the staging directory. By default, the value\n  is +DESTDIR=$(STAGING_DIR) install/fast+, which is correct for most\n  CMake packages. It is still possible to override it.\n\n* +LIBFOO_INSTALL_TARGET_OPTS+ contains the make options used to\n  install the package to the target directory. By default, the value\n  is +DESTDIR=$(TARGET_DIR) install/fast+. The default value is correct\n  for most CMake packages, but it is still possible to override it if\n  needed.\n\nWith the CMake infrastructure, all the steps required to build and\ninstall the packages are already defined, and they generally work well\nfor most CMake-based packages. However, when required, it is still\npossible to customize what is done in any particular step:\n\n* By adding a post-operation hook (after extract, patch, configure,\n  build or install). See xref:hooks[] for details.\n\n* By overriding one of the steps. For example, even if the CMake\n  infrastructure is used, if the package +.mk+ file defines its own\n  +LIBFOO_CONFIGURE_CMDS+ variable, it will be used instead of the\n  default CMake one. However, using this method should be restricted\n  to very specific cases. Do not use it in the general case.\n"
  },
  {
    "path": "docs/manual/adding-packages-conclusion.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Conclusion\n\nAs you can see, adding a software package to Buildroot is simply a\nmatter of writing a Makefile using an existing example and modifying it\naccording to the compilation process required by the package.\n\nIf you package software that might be useful for other people, don't\nforget to send a patch to the Buildroot mailing list (see\nxref:submitting-patches[])!\n\n"
  },
  {
    "path": "docs/manual/adding-packages-directory.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Package directory\n\nFirst of all, create a directory under the +package+ directory for\nyour software, for example +libfoo+.\n\nSome packages have been grouped by topic in a sub-directory:\n+x11r7+, +qt5+ and +gstreamer+. If your package fits in\none of these categories, then create your package directory in these.\nNew subdirectories are discouraged, however.\n\n=== Config files\n\nFor the package to be displayed in the configuration tool, you need to\ncreate a Config file in your package directory. There are two types:\n+Config.in+ and +Config.in.host+.\n\n==== +Config.in+ file\n\nFor packages used on the target, create a file named +Config.in+. This\nfile will contain the option descriptions related to our +libfoo+ software\nthat will be used and displayed in the configuration tool. It should basically\ncontain:\n\n---------------------------\nconfig BR2_PACKAGE_LIBFOO\n\tbool \"libfoo\"\n\thelp\n\t  This is a comment that explains what libfoo is. The help text\n\t  should be wrapped.\n\n\t  http://foosoftware.org/libfoo/\n---------------------------\n\nThe +bool+ line, +help+ line and other metadata information about the\nconfiguration option must be indented with one tab. The help text\nitself should be indented with one tab and two spaces, lines should\nbe wrapped to fit 72 columns, where tab counts for 8, so 62 characters\nin the text itself. The help text must mention the upstream URL of the\nproject after an empty line.\n\nAs a convention specific to Buildroot, the ordering of the attributes\nis as follows:\n\n1. The type of option: +bool+, +string+... with the prompt\n2. If needed, the +default+ value(s)\n3. Any dependencies on the target in +depends on+ form\n4. Any dependencies on the toolchain in +depends on+ form\n5. Any dependencies on other packages in +depends on+ form\n6. Any dependency of the +select+ form\n7. The help keyword and help text.\n\nYou can add other sub-options into a +if BR2_PACKAGE_LIBFOO...endif+\nstatement to configure particular things in your software. You can look at\nexamples in other packages. The syntax of the +Config.in+ file is the same\nas the one for the kernel Kconfig file. The documentation for this syntax is\navailable at http://kernel.org/doc/Documentation/kbuild/kconfig-language.txt[]\n\nFinally you have to add your new +libfoo/Config.in+ to\n+package/Config.in+ (or in a category subdirectory if you decided to\nput your package in one of the existing categories). The files\nincluded there are 'sorted alphabetically' per category and are 'NOT'\nsupposed to contain anything but the 'bare' name of the package.\n\n--------------------------\nsource \"package/libfoo/Config.in\"\n--------------------------\n\n\n==== +Config.in.host+ file\n\nSome packages also need to be built for the host system. There are two\noptions here:\n\n* The host package is only required to satisfy build-time\n  dependencies of one or more target packages. In this case, add\n  +host-foo+ to the target package's +BAR_DEPENDENCIES+ variable. No\n  +Config.in.host+ file should be created.\n\n* The host package should be explicitly selectable by the user from\n  the configuration menu. In this case, create a +Config.in.host+ file\n  for that host package:\n+\n---------------------------\nconfig BR2_PACKAGE_HOST_FOO\n\tbool \"host foo\"\n\thelp\n\t  This is a comment that explains what foo for the host is.\n\n\t  http://foosoftware.org/foo/\n---------------------------\n+\nThe same coding style and options as for the +Config.in+ file are valid.\n+\nFinally you have to add your new +libfoo/Config.in.host+ to\n+package/Config.in.host+. The files included there are 'sorted alphabetically'\nand are 'NOT' supposed to contain anything but the 'bare' name of the package.\n+\n--------------------------\nsource \"package/foo/Config.in.host\"\n--------------------------\n+\nThe host package will then be available from the +Host utilities+ menu.\n\n[[depends-on-vs-select]]\n==== Choosing +depends on+ or +select+\n\nThe +Config.in+ file of your package must also ensure that\ndependencies are enabled. Typically, Buildroot uses the following\nrules:\n\n* Use a +select+ type of dependency for dependencies on\n  libraries. These dependencies are generally not obvious and it\n  therefore make sense to have the kconfig system ensure that the\n  dependencies are selected. For example, the _libgtk2_ package uses\n  +select BR2_PACKAGE_LIBGLIB2+ to make sure this library is also\n  enabled.\n  The +select+ keyword expresses the dependency with a backward\n  semantic.\n\n* Use a +depends on+ type of dependency when the user really needs to\n  be aware of the dependency. Typically, Buildroot uses this type of\n  dependency for dependencies on target architecture, MMU support and\n  toolchain options (see xref:dependencies-target-toolchain-options[]),\n  or for dependencies on \"big\" things, such as the X.org system.\n  The +depends on+ keyword expresses the dependency with a forward\n  semantic.\n\n.Note\nThe current problem with the _kconfig_ language is that these two\ndependency semantics are not internally linked. Therefore, it may be\npossible to select a package, whom one of its dependencies/requirement\nis not met.\n\nAn example illustrates both the usage of +select+ and +depends on+.\n\n--------------------------\nconfig BR2_PACKAGE_RRDTOOL\n\tbool \"rrdtool\"\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_LIBART\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_ZLIB\n        help\n\t  RRDtool is the OpenSource industry standard, high performance\n\t  data logging and graphing system for time series data.\n\n\t  http://oss.oetiker.ch/rrdtool/\n\ncomment \"rrdtool needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n--------------------------\n\n\nNote that these two dependency types are only transitive with the\ndependencies of the same kind.\n\nThis means, in the following example:\n\n--------------------------\nconfig BR2_PACKAGE_A\n        bool \"Package A\"\n\nconfig BR2_PACKAGE_B\n        bool \"Package B\"\n        depends on BR2_PACKAGE_A\n\nconfig BR2_PACKAGE_C\n        bool \"Package C\"\n        depends on BR2_PACKAGE_B\n\nconfig BR2_PACKAGE_D\n        bool \"Package D\"\n        select BR2_PACKAGE_B\n\nconfig BR2_PACKAGE_E\n        bool \"Package E\"\n        select BR2_PACKAGE_D\n--------------------------\n\n* Selecting +Package C+ will be visible if +Package B+ has been\n  selected, which in turn is only visible if +Package A+ has been\n  selected.\n\n* Selecting +Package E+ will select +Package D+, which will select\n  +Package B+, it will not check for the dependencies of +Package B+,\n  so it will not select +Package A+.\n\n* Since +Package B+ is selected but +Package A+ is not, this violates\n  the dependency of +Package B+ on +Package A+. Therefore, in such a\n  situation, the transitive dependency has to be added explicitly:\n\n--------------------------\nconfig BR2_PACKAGE_D\n\tbool \"Package D\"\n\tselect BR2_PACKAGE_B\n\tdepends on BR2_PACKAGE_A\n\nconfig BR2_PACKAGE_E\n\tbool \"Package E\"\n\tselect BR2_PACKAGE_D\n\tdepends on BR2_PACKAGE_A\n--------------------------\n\nOverall, for package library dependencies, +select+ should be\npreferred.\n\nNote that such dependencies will ensure that the dependency option\nis also enabled, but not necessarily built before your package. To do\nso, the dependency also needs to be expressed in the +.mk+ file of the\npackage.\n\nFurther formatting details: see xref:writing-rules-config-in[the\ncoding style].\n\n[[dependencies-target-toolchain-options]]\n==== Dependencies on target and toolchain options\n\nMany packages depend on certain options of the toolchain: the choice of\nC library, C++ support, thread support, RPC support, wchar support,\nor dynamic library support. Some packages can only be built on certain\ntarget architectures, or if an MMU is available in the processor.\n\nThese dependencies have to be expressed with the appropriate 'depends\non' statements in the Config.in file. Additionally, for dependencies on\ntoolchain options, a +comment+ should be displayed when the option is\nnot enabled, so that the user knows why the package is not available.\nDependencies on target architecture or MMU support should not be\nmade visible in a comment: since it is unlikely that the user can\nfreely choose another target, it makes little sense to show these\ndependencies explicitly.\n\nThe +comment+ should only be visible if the +config+ option itself would\nbe visible when the toolchain option dependencies are met. This means\nthat all other dependencies of the package (including dependencies on\ntarget architecture and MMU support) have to be repeated on the\n+comment+ definition. To keep it clear, the +depends on+ statement for\nthese non-toolchain option should be kept separate from the +depends on+\nstatement for the toolchain options.\nIf there is a dependency on a config option in that same file (typically\nthe main package) it is preferable to have a global +if ... endif+\nconstruct rather than repeating the +depends on+ statement on the\ncomment and other config options.\n\nThe general format of a dependency +comment+ for package foo is:\n\n--------------------------\nfoo needs a toolchain w/ featA, featB, featC\n--------------------------\n\nfor example:\n\n--------------------------\nmpd needs a toolchain w/ C++, threads, wchar\n--------------------------\n\nor\n\n--------------------------\ncrda needs a toolchain w/ threads\n--------------------------\n\nNote that this text is kept brief on purpose, so that it will fit on a\n80-character terminal.\n\nThe rest of this section enumerates the different target and toolchain\noptions, the corresponding config symbols to depend on, and the text to\nuse in the comment.\n\n* Target architecture\n** Dependency symbol: +BR2_powerpc+, +BR2_mips+, ... (see +arch/Config.in+)\n** Comment string: no comment to be added\n\n* MMU support\n** Dependency symbol: +BR2_USE_MMU+\n** Comment string: no comment to be added\n\n* Gcc +__sync_*+ built-ins used for atomic operations. They are\n  available in variants operating on 1 byte, 2 bytes, 4 bytes and 8\n  bytes. Since different architectures support atomic operations on\n  different sizes, one dependency symbol is available for each size:\n** Dependency symbol: +BR2_TOOLCHAIN_HAS_SYNC_1+ for 1 byte,\n   +BR2_TOOLCHAIN_HAS_SYNC_2+ for 2 bytes,\n   +BR2_TOOLCHAIN_HAS_SYNC_4+ for 4 bytes, +BR2_TOOLCHAIN_HAS_SYNC_8+\n   for 8 bytes.\n** Comment string: no comment to be added\n\n* Gcc +__atomic_*+ built-ins used for atomic operations.\n** Dependency symbol: +BR2_TOOLCHAIN_HAS_ATOMIC+.\n** Comment string: no comment to be added\n\n* Kernel headers\n** Dependency symbol: +BR2_TOOLCHAIN_HEADERS_AT_LEAST_X_Y+, (replace\n   +X_Y+ with the proper version, see +toolchain/Config.in+)\n** Comment string: +headers >= X.Y+ and/or `headers <= X.Y` (replace\n   +X.Y+ with the proper version)\n\n* GCC version\n** Dependency symbol: +BR2_TOOLCHAIN_GCC_AT_LEAST_X_Y+, (replace\n   +X_Y+ with the proper version, see +toolchain/Config.in+)\n** Comment string: +gcc >= X.Y+ and/or `gcc <= X.Y` (replace\n   +X.Y+ with the proper version)\n\n* Host GCC version\n** Dependency symbol: +BR2_HOST_GCC_AT_LEAST_X_Y+, (replace\n   +X_Y+ with the proper version, see +Config.in+)\n** Comment string: no comment to be added\n** Note that it is usually not the package itself that has a minimum\n   host GCC version, but rather a host-package on which it depends.\n\n* C library\n** Dependency symbol: +BR2_TOOLCHAIN_USES_GLIBC+,\n   +BR2_TOOLCHAIN_USES_MUSL+, +BR2_TOOLCHAIN_USES_UCLIBC+\n** Comment string: for the C library, a slightly different comment text\n   is used: +foo needs a glibc toolchain+, or `foo needs a glibc\n   toolchain w/ C++`\n\n* C++ support\n** Dependency symbol: +BR2_INSTALL_LIBSTDCPP+\n** Comment string: `C++`\n\n* D support\n** Dependency symbol: +BR2_TOOLCHAIN_HAS_DLANG+\n** Comment string: `Dlang`\n\n* Fortran support\n** Dependency symbol: +BR2_TOOLCHAIN_HAS_FORTRAN+\n** Comment string: `fortran`\n\n* thread support\n** Dependency symbol: +BR2_TOOLCHAIN_HAS_THREADS+\n** Comment string: +threads+ (unless +BR2_TOOLCHAIN_HAS_THREADS_NPTL+\n   is also needed, in which case, specifying only +NPTL+ is sufficient)\n\n* NPTL thread support\n** Dependency symbol: +BR2_TOOLCHAIN_HAS_THREADS_NPTL+\n** Comment string: +NPTL+\n\n* RPC support\n** Dependency symbol: +BR2_TOOLCHAIN_HAS_NATIVE_RPC+\n** Comment string: +RPC+\n\n* wchar support\n** Dependency symbol: +BR2_USE_WCHAR+\n** Comment string: +wchar+\n\n* dynamic library\n** Dependency symbol: +!BR2_STATIC_LIBS+\n** Comment string: +dynamic library+\n\n==== Dependencies on a Linux kernel built by buildroot\n\nSome packages need a Linux kernel to be built by buildroot. These are\ntypically kernel modules or firmware. A comment should be added in the\nConfig.in file to express this dependency, similar to dependencies on\ntoolchain options. The general format is:\n\n--------------------------\nfoo needs a Linux kernel to be built\n--------------------------\n\nIf there is a dependency on both toolchain options and the Linux\nkernel, use this format:\n\n--------------------------\nfoo needs a toolchain w/ featA, featB, featC and a Linux kernel to be built\n--------------------------\n\n==== Dependencies on udev /dev management\n\nIf a package needs udev /dev management, it should depend on symbol\n+BR2_PACKAGE_HAS_UDEV+, and the following comment should be added:\n\n--------------------------\nfoo needs udev /dev management\n--------------------------\n\nIf there is a dependency on both toolchain options and udev /dev\nmanagement, use this format:\n\n--------------------------\nfoo needs udev /dev management and a toolchain w/ featA, featB, featC\n--------------------------\n\n==== Dependencies on features provided by virtual packages\n\nSome features can be provided by more than one package, such as the\nopenGL libraries.\n\nSee xref:virtual-package-tutorial[] for more on the virtual packages.\n\n=== The +.mk+ file\n\n[[adding-packages-mk]]\n\nFinally, here's the hardest part. Create a file named +libfoo.mk+. It\ndescribes how the package should be downloaded, configured, built,\ninstalled, etc.\n\nDepending on the package type, the +.mk+ file must be written in a\ndifferent way, using different infrastructures:\n\n* *Makefiles for generic packages* (not using autotools or CMake):\n  These are based on an infrastructure similar to the one used for\n  autotools-based packages, but require a little more work from the\n  developer. They specify what should be done for the configuration,\n  compilation and installation of the package. This\n  infrastructure must be used for all packages that do not use the\n  autotools as their build system. In the future, other specialized\n  infrastructures might be written for other build systems. We cover\n  them through in a xref:generic-package-tutorial[tutorial] and a\n  xref:generic-package-reference[reference].\n\n* *Makefiles for autotools-based software* (autoconf, automake, etc.):\n  We provide a dedicated infrastructure for such packages, since\n  autotools is a very common build system. This infrastructure 'must'\n  be used for new packages that rely on the autotools as their build\n  system. We cover them through a xref:autotools-package-tutorial[tutorial]\n  and xref:autotools-package-reference[reference].\n\n* *Makefiles for cmake-based software*: We provide a dedicated\n   infrastructure for such packages, as CMake is a more and more\n   commonly used build system and has a standardized behaviour. This\n   infrastructure 'must' be used for new packages that rely on\n   CMake. We cover them through a xref:cmake-package-tutorial[tutorial]\n   and xref:cmake-package-reference[reference].\n\n* *Makefiles for Python modules*: We have a dedicated infrastructure\n   for Python modules that use either the +distutils+ or the\n   +setuptools+ mechanism. We cover them through a\n   xref:python-package-tutorial[tutorial] and a\n   xref:python-package-reference[reference].\n\n* *Makefiles for Lua modules*: We have a dedicated infrastructure for\n   Lua modules available through the LuaRocks web site. We cover them\n   through a xref:luarocks-package-tutorial[tutorial] and a\n   xref:luarocks-package-reference[reference].\n\nFurther formatting details: see xref:writing-rules-mk[the writing\nrules].\n\n[[adding-packages-hash]]\n=== The +.hash+ file\n\nWhen possible, you must add a third file, named +libfoo.hash+, that\ncontains the hashes of the downloaded files for the +libfoo+\npackage. The only reason for not adding a +.hash+ file is when hash\nchecking is not possible due to how the package is downloaded.\n\nWhen a package has a version selection choice, then the hash file may be\nstored in a subdirectory named after the version, e.g.\n+package/libfoo/1.2.3/libfoo.hash+. This is especially important if the\ndifferent versions have different licensing terms, but they are stored\nin the same file. Otherwise, the hash file should stay in the package's\ndirectory.\n\nThe hashes stored in that file are used to validate the integrity of the\ndownloaded files and of the license files.\n\nThe format of this file is one line for each file for which to check the\nhash, each line with the following three fields separated by two spaces:\n\n* the type of hash, one of:\n** +md5+, +sha1+, +sha224+, +sha256+, +sha384+, +sha512+, +none+\n* the hash of the file:\n** for +none+, one or more non-space chars, usually just the string +xxx+\n** for +md5+, 32 hexadecimal characters\n** for +sha1+, 40 hexadecimal characters\n** for +sha224+, 56 hexadecimal characters\n** for +sha256+, 64 hexadecimal characters\n** for +sha384+, 96 hexadecimal characters\n** for +sha512+, 128 hexadecimal characters\n* the name of the file:\n** for a source archive: the basename of the file, without any directory\n   component,\n** for a license file: the path as it appears in +FOO_LICENSE_FILES+.\n\nLines starting with a +#+ sign are considered comments, and ignored. Empty\nlines are ignored.\n\nThere can be more than one hash for a single file, each on its own line. In\nthis case, all hashes must match.\n\n.Note\nIdeally, the hashes stored in this file should match the hashes published by\nupstream, e.g. on their website, in the e-mail announcement... If upstream\nprovides more than one type of hash (e.g. +sha1+ and +sha512+), then it is\nbest to add all those hashes in the +.hash+ file. If upstream does not\nprovide any hash, or only provides an +md5+ hash, then compute at least one\nstrong hash yourself (preferably +sha256+, but not +md5+), and mention\nthis in a comment line above the hashes.\n\n.Note\nThe hashes for license files are used to detect a license change when a\npackage version is bumped. The hashes are checked during the make legal-info\ntarget run. For a package with multiple versions (like Qt5),\ncreate the hash file in a subdirectory +<packageversion>+ of that package\n(see also xref:patch-apply-order[]).\n\nThe +none+ hash type is reserved to those archives downloaded from a\nrepository, like a 'git clone', a 'subversion checkout'...\n\nThe example below defines a +sha1+ and a +sha256+ published by upstream for\nthe main +libfoo-1.2.3.tar.bz2+ tarball, an +md5+ from upstream and a\nlocally-computed +sha256+ hashes for a binary blob, a +sha256+ for a\ndownloaded patch, and an archive with no hash:\n\n----\n# Hashes from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.{sha1,sha256}:\nsha1  486fb55c3efa71148fe07895fd713ea3a5ae343a  libfoo-1.2.3.tar.bz2\nsha256  efc8103cc3bcb06bda6a781532d12701eb081ad83e8f90004b39ab81b65d4369  libfoo-1.2.3.tar.bz2\n\n# md5 from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.md5, sha256 locally computed:\nmd5  2d608f3c318c6b7557d551a5a09314f03452f1a1  libfoo-data.bin\nsha256  01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b  libfoo-data.bin\n\n# Locally computed:\nsha256  ff52101fb90bbfc3fe9475e425688c660f46216d7e751c4bbdb1dc85cdccacb9  libfoo-fix-blabla.patch\n\n# No hash for 1234:\nnone  xxx  libfoo-1234.tar.gz\n\n# Hash for license files:\nsha256  a45a845012742796534f7e91fe623262ccfb99460a2bd04015bd28d66fba95b8  COPYING\nsha256  01b1f9f2c8ee648a7a596a1abe8aa4ed7899b1c9e5551bda06da6e422b04aa55  doc/COPYING.LGPL\n----\n\nIf the +.hash+ file is present, and it contains one or more hashes for a\ndownloaded file, the hash(es) computed by Buildroot (after download) must\nmatch the hash(es) stored in the +.hash+ file. If one or more hashes do\nnot match, Buildroot considers this an error, deletes the downloaded file,\nand aborts.\n\nIf the +.hash+ file is present, but it does not contain a hash for a\ndownloaded file, Buildroot considers this an error and aborts. However,\nthe downloaded file is left in the download directory since this\ntypically indicates that the +.hash+ file is wrong but the downloaded\nfile is probably OK.\n\nHashes are currently checked for files fetched from http/ftp servers,\nGit repositories, files copied using scp and local files. Hashes are\nnot checked for other version control systems (such as Subversion,\nCVS, etc.) because Buildroot currently does not generate reproducible\ntarballs when source code is fetched from such version control\nsystems.\n\nHashes should only be added in +.hash+ files for files that are\nguaranteed to be stable. For example, patches auto-generated by Github\nare not guaranteed to be stable, and therefore their hashes can change\nover time. Such patches should not be downloaded, and instead be added\nlocally to the package folder.\n\nIf the +.hash+ file is missing, then no check is done at all.\n"
  },
  {
    "path": "docs/manual/adding-packages-generic.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for packages with specific build systems\n\nBy 'packages with specific build systems' we mean all the packages\nwhose build system is not one of the standard ones, such as\n'autotools' or 'CMake'. This typically includes packages whose build\nsystem is based on hand-written Makefiles or shell scripts.\n\n[[generic-package-tutorial]]\n\n==== +generic-package+ tutorial\n\n------------------------------\n01: ################################################################################\n02: #\n03: # libfoo\n04: #\n05: ################################################################################\n06:\n07: LIBFOO_VERSION = 1.0\n08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz\n09: LIBFOO_SITE = http://www.foosoftware.org/download\n10: LIBFOO_LICENSE = GPL-3.0+\n11: LIBFOO_LICENSE_FILES = COPYING\n12: LIBFOO_INSTALL_STAGING = YES\n13: LIBFOO_CONFIG_SCRIPTS = libfoo-config\n14: LIBFOO_DEPENDENCIES = host-libaaa libbbb\n15:\n16: define LIBFOO_BUILD_CMDS\n17:\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all\n18: endef\n19:\n20: define LIBFOO_INSTALL_STAGING_CMDS\n21:\t$(INSTALL) -D -m 0755 $(@D)/libfoo.a $(STAGING_DIR)/usr/lib/libfoo.a\n22:\t$(INSTALL) -D -m 0644 $(@D)/foo.h $(STAGING_DIR)/usr/include/foo.h\n23:\t$(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(STAGING_DIR)/usr/lib\n24: endef\n25:\n26: define LIBFOO_INSTALL_TARGET_CMDS\n27:\t$(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(TARGET_DIR)/usr/lib\n28:\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/foo.d\n29: endef\n30:\n31: define LIBFOO_USERS\n32:\tfoo -1 libfoo -1 * - - - LibFoo daemon\n33: endef\n34:\n35: define LIBFOO_DEVICES\n36:\t/dev/foo c 666 0 0 42 0 - - -\n37: endef\n38:\n39: define LIBFOO_PERMISSIONS\n40:\t/bin/foo f 4755 foo libfoo - - - - -\n41: endef\n42:\n43: $(eval $(generic-package))\n--------------------------------\n\nThe Makefile begins on line 7 to 11 with metadata information: the\nversion of the package (+LIBFOO_VERSION+), the name of the\ntarball containing the package (+LIBFOO_SOURCE+) (xz-ed tarball recommended)\nthe Internet location at which the tarball can be downloaded from\n(+LIBFOO_SITE+), the license (+LIBFOO_LICENSE+) and file with the\nlicense text (+LIBFOO_LICENSE_FILES+). All variables must start with\nthe same prefix, +LIBFOO_+ in this case. This prefix is always the\nuppercased version of the package name (see below to understand where\nthe package name is defined).\n\nOn line 12, we specify that this package wants to install something to\nthe staging space. This is often needed for libraries, since they must\ninstall header files and other development files in the staging space.\nThis will ensure that the commands listed in the\n+LIBFOO_INSTALL_STAGING_CMDS+ variable will be executed.\n\nOn line 13, we specify that there is some fixing to be done to some\nof the 'libfoo-config' files that were installed during\n+LIBFOO_INSTALL_STAGING_CMDS+ phase.\nThese *-config files are executable shell script files that are\nlocated in '$(STAGING_DIR)/usr/bin' directory and are executed\nby other 3rd party packages to find out the location and the linking\nflags of this particular package.\n\nThe problem is that all these *-config files by default give wrong,\nhost system linking flags that are unsuitable for cross-compiling.\n\nFor example:\t'-I/usr/include' instead of '-I$(STAGING_DIR)/usr/include'\nor:\t\t'-L/usr/lib' instead of '-L$(STAGING_DIR)/usr/lib'\n\nSo some sed magic is done to these scripts to make them give correct\nflags.\nThe argument to be given to +LIBFOO_CONFIG_SCRIPTS+ is the file name(s)\nof the shell script(s) needing fixing. All these names are relative to\n'$(STAGING_DIR)/usr/bin' and if needed multiple names can be given.\n\nIn addition, the scripts listed in +LIBFOO_CONFIG_SCRIPTS+ are removed\nfrom +$(TARGET_DIR)/usr/bin+, since they are not needed on the target.\n\n.Config script: 'divine' package\n================================\nPackage divine installs shell script '$(STAGING_DIR)/usr/bin/divine-config'.\n\nSo its fixup would be:\n\n--------------------------------\nDIVINE_CONFIG_SCRIPTS = divine-config\n--------------------------------\n================================\n\n.Config script: 'imagemagick' package:\n================================\nPackage imagemagick installs the following scripts:\n'$(STAGING_DIR)/usr/bin/{Magick,Magick++,MagickCore,MagickWand,Wand}-config'\n\nSo it's fixup would be:\n\n--------------------------------\nIMAGEMAGICK_CONFIG_SCRIPTS = \\\n   Magick-config Magick++-config \\\n   MagickCore-config MagickWand-config Wand-config\n--------------------------------\n================================\n\nOn line 14, we specify the list of dependencies this package relies\non. These dependencies are listed in terms of lower-case package names,\nwhich can be packages for the target (without the +host-+\nprefix) or packages for the host (with the +host-+) prefix).\nBuildroot will ensure that all these packages are built and installed\n'before' the current package starts its configuration.\n\nThe rest of the Makefile, lines 16..29, defines what should be done\nat the different steps of the package configuration, compilation and\ninstallation.\n+LIBFOO_BUILD_CMDS+ tells what steps should be performed to\nbuild the package. +LIBFOO_INSTALL_STAGING_CMDS+ tells what\nsteps should be performed to install the package in the staging space.\n+LIBFOO_INSTALL_TARGET_CMDS+ tells what steps should be\nperformed to install the package in the target space.\n\nAll these steps rely on the +$(@D)+ variable, which\ncontains the directory where the source code of the package has been\nextracted.\n\nOn lines 31..33, we define a user that is used by this package (e.g.\nto run a daemon as non-root) (+LIBFOO_USERS+).\n\nOn line 35..37, we define a device-node file used by this package\n(+LIBFOO_DEVICES+).\n\nOn line 39..41, we define the permissions to set to specific files\ninstalled by this package (+LIBFOO_PERMISSIONS+).\n\nFinally, on line 43, we call the +generic-package+ function, which\ngenerates, according to the variables defined previously, all the\nMakefile code necessary to make your package working.\n\n[[generic-package-reference]]\n\n==== +generic-package+ reference\n\nThere are two variants of the generic target. The +generic-package+ macro is\nused for packages to be cross-compiled for the target. The\n+host-generic-package+ macro is used for host packages, natively compiled\nfor the host. It is possible to call both of them in a single +.mk+\nfile: once to create the rules to generate a target\npackage and once to create the rules to generate a host package:\n\n----------------------\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n----------------------\n\nThis might be useful if the compilation of the target package requires\nsome tools to be installed on the host. If the package name is\n+libfoo+, then the name of the package for the target is also\n+libfoo+, while the name of the package for the host is\n+host-libfoo+. These names should be used in the DEPENDENCIES\nvariables of other packages, if they depend on +libfoo+ or\n+host-libfoo+.\n\nThe call to the +generic-package+ and/or +host-generic-package+ macro\n*must* be at the end of the +.mk+ file, after all variable definitions.\nThe call to +host-generic-package+ *must* be after the call to\n+generic-package+, if any.\n\nFor the target package, the +generic-package+ uses the variables defined by\nthe .mk file and prefixed by the uppercased package name:\n+LIBFOO_*+. +host-generic-package+ uses the +HOST_LIBFOO_*+ variables. For\n'some' variables, if the +HOST_LIBFOO_+ prefixed variable doesn't\nexist, the package infrastructure uses the corresponding variable\nprefixed by +LIBFOO_+. This is done for variables that are likely to\nhave the same value for both the target and host packages. See below\nfor details.\n\nThe list of variables that can be set in a +.mk+ file to give metadata\ninformation is (assuming the package name is +libfoo+) :\n\n* +LIBFOO_VERSION+, mandatory, must contain the version of the\n  package. Note that if +HOST_LIBFOO_VERSION+ doesn't exist, it is\n  assumed to be the same as +LIBFOO_VERSION+. It can also be a\n  revision number or a tag for packages that are fetched directly\n  from their version control system. Examples:\n  ** a version for a release tarball: +LIBFOO_VERSION = 0.1.2+\n  ** a sha1 for a git tree: +LIBFOO_VERSION = cb9d6aa9429e838f0e54faa3d455bcbab5eef057+\n  ** a tag for a git tree +LIBFOO_VERSION = v0.1.2+\n+\n.Note:\nUsing a branch name as +FOO_VERSION+ is not supported, because it does\nnot and can not work as people would expect it should:\n+\n  1. due to local caching, Buildroot will not re-fetch the repository,\n     so people who expect to be able to follow the remote repository\n     would be quite surprised and disappointed;\n  2. because two builds can never be perfectly simultaneous, and because\n     the remote repository may get new commits on the branch anytime,\n     two users, using the same Buildroot tree and building the same\n     configuration, may get different source, thus rendering the build\n     non reproducible, and people would be quite surprised and\n     disappointed.\n\n* +LIBFOO_SOURCE+ may contain the name of the tarball of the package,\n  which Buildroot will use to download the tarball from\n  +LIBFOO_SITE+. If +HOST_LIBFOO_SOURCE+ is not specified, it defaults\n  to +LIBFOO_SOURCE+. If none are specified, then the value is assumed\n  to be +libfoo-$(LIBFOO_VERSION).tar.gz+. +\n  Example: +LIBFOO_SOURCE = foobar-$(LIBFOO_VERSION).tar.bz2+\n\n* +LIBFOO_PATCH+ may contain a space-separated list of patch file\n  names, that Buildroot will download and apply to the package source\n  code. If an entry contains +://+, then Buildroot will assume it is a\n  full URL and download the patch from this location. Otherwise,\n  Buildroot will assume that the patch should be downloaded from\n  +LIBFOO_SITE+. If +HOST_LIBFOO_PATCH+ is not specified, it defaults\n  to +LIBFOO_PATCH+. Note that patches that are included in Buildroot\n  itself use a different mechanism: all files of the form\n  +*.patch+ present in the package directory inside\n  Buildroot will be applied to the package after extraction (see\n  xref:patch-policy[patching a package]). Finally, patches listed in\n  the +LIBFOO_PATCH+ variable are applied _before_ the patches stored\n  in the Buildroot package directory.\n\n* +LIBFOO_SITE+ provides the location of the package, which can be a\n  URL or a local filesystem path. HTTP, FTP and SCP are supported URL\n  types for retrieving package tarballs. In these cases don't include a\n  trailing slash: it will be added by Buildroot between the directory\n  and the filename as appropriate. Git, Subversion, Mercurial,\n  and Bazaar are supported URL types for retrieving packages directly\n  from source code management systems. There is a helper function to make\n  it easier to download source tarballs from GitHub (refer to\n  xref:github-download-url[] for details). A filesystem path may be used\n  to specify either a tarball or a directory containing the package\n  source code. See +LIBFOO_SITE_METHOD+ below for more details on how\n  retrieval works. +\n  Note that SCP URLs should be of the form\n  +scp://[user@]host:filepath+, and that filepath is relative to the\n  user's home directory, so you may want to prepend the path with a\n  slash for absolute paths:\n  +scp://[user@]host:/absolutepath+. +\n  If +HOST_LIBFOO_SITE+ is not specified, it defaults to\n  +LIBFOO_SITE+.\n  Examples: +\n    +LIBFOO_SITE=http://www.libfoosoftware.org/libfoo+ +\n    +LIBFOO_SITE=http://svn.xiph.org/trunk/Tremor+ +\n    +LIBFOO_SITE=/opt/software/libfoo.tar.gz+ +\n    +LIBFOO_SITE=$(TOPDIR)/../src/libfoo+\n\n* +LIBFOO_DL_OPTS+ is a space-separated list of additional options to\n  pass to the downloader. Useful for retrieving documents with\n  server-side checking for user logins and passwords, or to use a proxy.\n  All download methods valid for +LIBFOO_SITE_METHOD+ are supported;\n  valid options depend on the download method (consult the man page\n  for the respective download utilities).\n\n* +LIBFOO_EXTRA_DOWNLOADS+ is a space-separated list of additional\n  files that Buildroot should download. If an entry contains +://+\n  then Buildroot will assume it is a complete URL and will download\n  the file using this URL. Otherwise, Buildroot will assume the file\n  to be downloaded is located at +LIBFOO_SITE+. Buildroot will not do\n  anything with those additional files, except download them: it will\n  be up to the package recipe to use them from +$(LIBFOO_DL_DIR)+.\n\n* +LIBFOO_SITE_METHOD+ determines the method used to fetch or copy the\n  package source code. In many cases, Buildroot guesses the method\n  from the contents of +LIBFOO_SITE+ and setting +LIBFOO_SITE_METHOD+\n  is unnecessary. When +HOST_LIBFOO_SITE_METHOD+ is not specified, it\n  defaults to the value of +LIBFOO_SITE_METHOD+. +\n  The possible values of +LIBFOO_SITE_METHOD+ are:\n  ** +wget+ for normal FTP/HTTP downloads of tarballs. Used by\n     default when +LIBFOO_SITE+ begins with +http://+, +https://+ or\n     +ftp://+.\n  ** +scp+ for downloads of tarballs over SSH with scp. Used by\n     default when +LIBFOO_SITE+ begins with +scp://+.\n  ** +svn+ for retrieving source code from a Subversion repository.\n     Used by default when +LIBFOO_SITE+ begins with +svn://+. When a\n     +http://+ Subversion repository URL is specified in\n     +LIBFOO_SITE+, one 'must' specify +LIBFOO_SITE_METHOD=svn+.\n     Buildroot performs a checkout which is preserved as a tarball in\n     the download cache; subsequent builds use the tarball instead of\n     performing another checkout.\n  ** +cvs+ for retrieving source code from a CVS repository.\n     Used by default when +LIBFOO_SITE+ begins with +cvs://+.\n     The downloaded source code is cached as with the +svn+ method.\n     Anonymous pserver mode is assumed otherwise explicitly defined\n     on +LIBFOO_SITE+. Both\n     +LIBFOO_SITE=cvs://libfoo.net:/cvsroot/libfoo+ and\n     +LIBFOO_SITE=cvs://:ext:libfoo.net:/cvsroot/libfoo+\n     are accepted, on the former anonymous pserver access mode is\n     assumed.\n     +LIBFOO_SITE+ 'must' contain the source URL as well as the remote\n     repository directory. The module is the package name.\n     +LIBFOO_VERSION+ is 'mandatory' and 'must' be a tag, a branch, or\n     a date (e.g. \"2014-10-20\", \"2014-10-20 13:45\", \"2014-10-20\n     13:45+01\" see \"man cvs\" for further details).\n  ** +git+ for retrieving source code from a Git repository. Used by\n     default when +LIBFOO_SITE+ begins with +git://+. The downloaded\n     source code is cached as with the +svn+\n     method.\n  ** +hg+ for retrieving source code from a Mercurial repository. One\n     'must' specify +LIBFOO_SITE_METHOD=hg+ when +LIBFOO_SITE+\n     contains a Mercurial repository URL. The downloaded source code\n     is cached as with the +svn+ method.\n  ** +bzr+ for retrieving source code from a Bazaar repository. Used\n     by default when +LIBFOO_SITE+ begins with +bzr://+. The\n     downloaded source code is cached as with the +svn+ method.\n  ** +file+ for a local tarball. One should use this when\n     +LIBFOO_SITE+ specifies a package tarball as a local filename.\n     Useful for software that isn't available publicly or in version\n     control.\n  ** +local+ for a local source code directory. One should use this\n     when +LIBFOO_SITE+ specifies a local directory path containing\n     the package source code. Buildroot copies the contents of the\n     source directory into the package's build directory. Note that\n     for +local+ packages, no patches are applied. If you need to\n     still patch the source code, use +LIBFOO_POST_RSYNC_HOOKS+, see\n     xref:hooks-rsync[].\n\n* +LIBFOO_GIT_SUBMODULES+ can be set to +YES+ to create an archive\n  with the git submodules in the repository.  This is only available\n  for packages downloaded with git (i.e. when\n  +LIBFOO_SITE_METHOD=git+).  Note that we try not to use such git\n  submodules when they contain bundled libraries, in which case we\n  prefer to use those libraries from their own package.\n\n* +LIBFOO_STRIP_COMPONENTS+ is the number of leading components\n  (directories) that tar must strip from file names on extraction.\n  The tarball for most packages has one leading component named\n  \"<pkg-name>-<pkg-version>\", thus Buildroot passes\n  --strip-components=1 to tar to remove it.\n  For non-standard packages that don't have this component, or\n  that have more than one leading component to strip, set this\n  variable with the value to be passed to tar. Default: 1.\n\n* +LIBFOO_EXCLUDES+ is a space-separated list of patterns to exclude\n  when extracting the archive. Each item from that list is passed as\n  a tar's +--exclude+ option. By default, empty.\n\n* +LIBFOO_DEPENDENCIES+ lists the dependencies (in terms of package\n  name) that are required for the current target package to\n  compile. These dependencies are guaranteed to be compiled and\n  installed before the configuration of the current package starts.\n  However, modifications to configuration of these dependencies will\n  not force a rebuild of the current package. In a similar way,\n  +HOST_LIBFOO_DEPENDENCIES+ lists the dependencies for the current\n  host package.\n\n* +LIBFOO_EXTRACT_DEPENDENCIES+ lists the dependencies (in terms of\n  package name) that are required for the current target package to be\n  extracted. These dependencies are guaranteed to be compiled and\n  installed before the extract step of the current package\n  starts. This is only used internally by the package infrastructure,\n  and should typically not be used directly by packages.\n\n* +LIBFOO_PATCH_DEPENDENCIES+ lists the dependencies (in terms of\n  package name) that are required for the current package to be\n  patched. These dependencies are guaranteed to be extracted and\n  patched (but not necessarily built) before the current package is\n  patched. In a similar way, +HOST_LIBFOO_PATCH_DEPENDENCIES+ lists\n  the dependencies for the current host package.\n  This is seldom used; usually, +LIBFOO_DEPENDENCIES+ is what you\n  really want to use.\n\n* +LIBFOO_PROVIDES+ lists all the virtual packages +libfoo+ is an\n  implementation of. See xref:virtual-package-tutorial[].\n\n* +LIBFOO_INSTALL_STAGING+ can be set to +YES+ or +NO+ (default). If\n  set to +YES+, then the commands in the +LIBFOO_INSTALL_STAGING_CMDS+\n  variables are executed to install the package into the staging\n  directory.\n\n* +LIBFOO_INSTALL_TARGET+ can be set to +YES+ (default) or +NO+. If\n  set to +YES+, then the commands in the +LIBFOO_INSTALL_TARGET_CMDS+\n  variables are executed to install the package into the target\n  directory.\n\n* +LIBFOO_INSTALL_IMAGES+ can be set to +YES+ or +NO+ (default). If\n  set to +YES+, then the commands in the +LIBFOO_INSTALL_IMAGES_CMDS+\n  variable are executed to install the package into the images\n  directory.\n\n* +LIBFOO_CONFIG_SCRIPTS+ lists the names of the files in\n  '$(STAGING_DIR)/usr/bin' that need some special fixing to make them\n  cross-compiling friendly. Multiple file names separated by space can\n  be given and all are relative to '$(STAGING_DIR)/usr/bin'. The files\n  listed in +LIBFOO_CONFIG_SCRIPTS+ are also removed from\n  +$(TARGET_DIR)/usr/bin+ since they are not needed on the target.\n\n* +LIBFOO_DEVICES+ lists the device files to be created by Buildroot\n  when using the static device table. The syntax to use is the\n  makedevs one. You can find some documentation for this syntax in the\n  xref:makedev-syntax[]. This variable is optional.\n\n* +LIBFOO_PERMISSIONS+ lists the changes of permissions to be done at\n  the end of the build process. The syntax is once again the makedevs one.\n  You can find some documentation for this syntax in the xref:makedev-syntax[].\n  This variable is optional.\n\n* +LIBFOO_USERS+ lists the users to create for this package, if it installs\n  a program you want to run as a specific user (e.g. as a daemon, or as a\n  cron-job). The syntax is similar in spirit to the makedevs one, and is\n  described in the xref:makeuser-syntax[]. This variable is optional.\n\n* +LIBFOO_LICENSE+ defines the license (or licenses) under which the package\n  is released.\n  This name will appear in the manifest file produced by +make legal-info+.\n  If the license appears in https://spdx.org/licenses/[the SPDX License List],\n  use the SPDX short identifier to make the manifest file uniform.\n  Otherwise, describe the license in a precise and concise way, avoiding\n  ambiguous names such as +BSD+ which actually name a family of licenses.\n  This variable is optional. If it is not defined, +unknown+ will appear in\n  the +license+ field of the manifest file for this package. +\n  The expected format for this variable must comply with the following rules:\n  ** If different parts of the package are released under different\n     licenses, then +comma+ separate licenses (e.g. +`LIBFOO_LICENSE =\n     GPL-2.0+, LGPL-2.1+`+). If there is clear distinction between which\n     component is licensed under what license, then annotate the license\n     with that component, between parenthesis (e.g. +`LIBFOO_LICENSE =\n     GPL-2.0+ (programs), LGPL-2.1+ (libraries)`+).\n  ** If some licenses are conditioned on a sub-option being enabled, append\n     the conditional licenses with a comma (e.g.: `FOO_LICENSE += , GPL-2.0+\n     (programs)`); the infrastructure will internally remove the space before\n     the comma.\n  ** If the package is dual licensed, then separate licenses with the\n     +or+ keyword (e.g. +`LIBFOO_LICENSE = AFL-2.1 or GPL-2.0+`+).\n\n* +LIBFOO_LICENSE_FILES+ is a space-separated list of files in the package\n  tarball that contain the license(s) under which the package is released.\n  +make legal-info+ copies all of these files in the +legal-info+ directory.\n  See xref:legal-info[] for more information.\n  This variable is optional. If it is not defined, a warning will be produced\n  to let you know, and +not saved+ will appear in the +license files+ field\n  of the manifest file for this package.\n\n* +LIBFOO_ACTUAL_SOURCE_TARBALL+ only applies to packages whose\n  +LIBFOO_SITE+ / +LIBFOO_SOURCE+ pair points to an archive that does\n  not actually contain source code, but binary code. This a very\n  uncommon case, only known to apply to external toolchains which come\n  already compiled, although theoretically it might apply to other\n  packages. In such cases a separate tarball is usually available with\n  the actual source code. Set +LIBFOO_ACTUAL_SOURCE_TARBALL+ to the\n  name of the actual source code archive and Buildroot will download\n  it and use it when you run +make legal-info+ to collect\n  legally-relevant material.  Note this file will not be downloaded\n  during regular builds nor by +make source+.\n\n* +LIBFOO_ACTUAL_SOURCE_SITE+ provides the location of the actual\n  source tarball. The default value is +LIBFOO_SITE+, so you don't\n  need to set this variable if the binary and source archives are\n  hosted on the same directory.  If +LIBFOO_ACTUAL_SOURCE_TARBALL+ is\n  not set, it doesn't make sense to define\n  +LIBFOO_ACTUAL_SOURCE_SITE+.\n\n* +LIBFOO_REDISTRIBUTE+ can be set to +YES+ (default) or +NO+ to indicate if\n  the package source code is allowed to be redistributed. Set it to +NO+ for\n  non-opensource packages: Buildroot will not save the source code for this\n  package when collecting the +legal-info+.\n\n* +LIBFOO_FLAT_STACKSIZE+ defines the stack size of an application built into\n  the FLAT binary format. The application stack size on the NOMMU architecture\n  processors can't be enlarged at run time. The default stack size for the\n  FLAT binary format is only 4k bytes. If the application consumes more stack,\n  append the required number here.\n\n* +LIBFOO_BIN_ARCH_EXCLUDE+ is a space-separated list of paths (relative\n  to the target directory) to ignore when checking that the package\n  installs correctly cross-compiled binaries. You seldom need to set this\n  variable, unless the package installs binary blobs outside the default\n  locations, `/lib/firmware`, `/usr/lib/firmware`, `/lib/modules`,\n  `/usr/lib/modules`, and `/usr/share`, which are automatically excluded.\n\n* +LIBFOO_IGNORE_CVES+ is a space-separated list of CVEs that tells\n  Buildroot CVE tracking tools which CVEs should be ignored for this\n  package. This is typically used when the CVE is fixed by a patch in\n  the package, or when the CVE for some reason does not affect the\n  Buildroot package. A Makefile comment must always precede the\n  addition of a CVE to this variable. Example:\n\n----------------------\n# 0001-fix-cve-2020-12345.patch\nLIBFOO_IGNORE_CVES += CVE-2020-12345\n# only when built with libbaz, which Buildroot doesn't support\nLIBFOO_IGNORE_CVES += CVE-2020-54321\n----------------------\n\n* +LIBFOO_CPE_ID_*+ variables is a set of variables that allows the\n  package to define its https://nvd.nist.gov/products/cpe[CPE\n  identifier]. The available variables are:\n+\n--\n** +LIBFOO_CPE_ID_PREFIX+, specifies the prefix of the CPE identifier,\n   i.e the first three fields. When not defined, the default value is\n   +cpe:2.3:a+.\n\n** +LIBFOO_CPE_ID_VENDOR+, specifies the vendor part of the CPE\n   identifier. When not defined, the default value is\n   +<pkgname>_project+.\n\n** +LIBFOO_CPE_ID_PRODUCT+, specifies the product part of the CPE\n   identifier. When not defined, the default value is +<pkgname>+.\n\n** +LIBFOO_CPE_ID_VERSION+, specifies the version part of the CPE\n   identifier. When not defined the default value is\n   +$(LIBFOO_VERSION)+.\n\n** +LIBFOO_CPE_ID_UPDATE+ specifies the _update_ part of the CPE\n   identifier. When not defined the default value is +*+.\n--\n+\nIf any of those variables is defined, then the generic package\ninfrastructure assumes the package provides valid CPE information. In\nthis case, the generic package infrastructure will define\n+LIBFOO_CPE_ID+.\n+\nFor a host package, if its +LIBFOO_CPE_ID_*+ variables are not\ndefined, it inherits the value of those variables from the\ncorresponding target package.\n\nThe recommended way to define these variables is to use the following\nsyntax:\n\n----------------------\nLIBFOO_VERSION = 2.32\n----------------------\n\nNow, the variables that define what should be performed at the\ndifferent steps of the build process.\n\n* +LIBFOO_EXTRACT_CMDS+ lists the actions to be performed to extract\n  the package. This is generally not needed as tarballs are\n  automatically handled by Buildroot. However, if the package uses a\n  non-standard archive format, such as a ZIP or RAR file, or has a\n  tarball with a non-standard organization, this variable allows to\n  override the package infrastructure default behavior.\n\n* +LIBFOO_CONFIGURE_CMDS+ lists the actions to be performed to\n  configure the package before its compilation.\n\n* +LIBFOO_BUILD_CMDS+ lists the actions to be performed to\n  compile the package.\n\n* +HOST_LIBFOO_INSTALL_CMDS+ lists the actions to be performed\n  to install the package, when the package is a host package. The\n  package must install its files to the directory given by\n  +$(HOST_DIR)+. All files, including development files such as\n  headers should be installed, since other packages might be compiled\n  on top of this package.\n\n* +LIBFOO_INSTALL_TARGET_CMDS+ lists the actions to be\n  performed to install the package to the target directory, when the\n  package is a target package. The package must install its files to\n  the directory given by +$(TARGET_DIR)+. Only the files required for\n  'execution' of the package have to be\n  installed. Header files, static libraries and documentation will be\n  removed again when the target filesystem is finalized.\n\n* +LIBFOO_INSTALL_STAGING_CMDS+ lists the actions to be\n  performed to install the package to the staging directory, when the\n  package is a target package. The package must install its files to\n  the directory given by +$(STAGING_DIR)+. All development files\n  should be installed, since they might be needed to compile other\n  packages.\n\n* +LIBFOO_INSTALL_IMAGES_CMDS+ lists the actions to be performed to\n  install the package to the images directory, when the package is a\n  target package. The package must install its files to the directory\n  given by +$(BINARIES_DIR)+. Only files that are binary images (aka\n  images) that do not belong in the +TARGET_DIR+ but are necessary\n  for booting the board should be placed here. For example, a package\n  should utilize this step if it has binaries which would be similar\n  to the kernel image, bootloader or root filesystem images.\n\n* +LIBFOO_INSTALL_INIT_SYSV+, +LIBFOO_INSTALL_INIT_OPENRC+ and\n  +LIBFOO_INSTALL_INIT_SYSTEMD+ list the actions to install init\n  scripts either for the systemV-like init systems (busybox,\n  sysvinit, etc.), openrc or for the systemd units. These commands\n  will be run only when the relevant init system is installed (i.e.\n  if systemd is selected as the init system in the configuration,\n  only +LIBFOO_INSTALL_INIT_SYSTEMD+ will be run). The only exception\n  is when openrc is chosen as init system and +LIBFOO_INSTALL_INIT_OPENRC+\n  has not been set, in such situation +LIBFOO_INSTALL_INIT_SYSV+ will\n  be called, since openrc supports sysv init scripts.\n  When systemd is used as the init system, buildroot will automatically enable\n  all services using the +systemctl preset-all+ command in the final phase of\n  image building. You can add preset files to prevent a particular unit from\n  being automatically enabled by buildroot.\n\n* +LIBFOO_HELP_CMDS+ lists the actions to print the package help, which\n  is included to the main +make help+ output. These commands can print\n  anything in any format.\n  This is seldom used, as packages rarely have custom rules. *Do not use\n  this variable*, unless you really know that you need to print help.\n\n* +LIBFOO_LINUX_CONFIG_FIXUPS+ lists the Linux kernel configuration\n  options that are needed to build and use this package, and without\n  which the package is fundamentally broken. This shall be a set of\n  calls to one of the kconfig tweaking option: `KCONFIG_ENABLE_OPT`,\n  `KCONFIG_DISABLE_OPT`, or `KCONFIG_SET_OPT`.\n  This is seldom used, as package usually have no strict requirements on\n  the kernel options.\n\nThe preferred way to define these variables is:\n\n----------------------\ndefine LIBFOO_CONFIGURE_CMDS\n\taction 1\n\taction 2\n\taction 3\nendef\n----------------------\n\nIn the action definitions, you can use the following variables:\n\n* +$(LIBFOO_PKGDIR)+ contains the path to the directory containing the\n  +libfoo.mk+ and +Config.in+ files. This variable is useful when it is\n  necessary to install a file bundled in Buildroot, like a runtime\n  configuration file, a splashscreen image...\n\n* +$(@D)+, which contains the directory in which the package source\n  code has been uncompressed.\n\n* +$(LIBFOO_DL_DIR)+ contains the path to the directory where all the downloads\n  made by Buildroot for +libfoo+ are stored in.\n\n* +$(TARGET_CC)+, +$(TARGET_LD)+, etc. to get the target\n  cross-compilation utilities\n\n* +$(TARGET_CROSS)+ to get the cross-compilation toolchain prefix\n\n* Of course the +$(HOST_DIR)+, +$(STAGING_DIR)+ and +$(TARGET_DIR)+\n  variables to install the packages properly. Those variables point to\n  the global _host_, _staging_ and _target_ directories, unless\n  _per-package directory_ support is used, in which case they point to\n  the current package _host_, _staging_ and _target_ directories. In\n  both cases, it doesn't make any difference from the package point of\n  view: it should simply use +HOST_DIR+, +STAGING_DIR+ and\n  +TARGET_DIR+. See xref:top-level-parallel-build[] for more details\n  about _per-package directory_ support.\n\nFinally, you can also use hooks. See xref:hooks[] for more information.\n"
  },
  {
    "path": "docs/manual/adding-packages-gettext.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Gettext integration and interaction with packages\n\nMany packages that support internationalization use the gettext\nlibrary. Dependencies for this library are fairly complicated and\ntherefore, deserve some explanation.\n\nThe 'glibc' C library integrates a full-blown implementation of\n'gettext', supporting translation. Native Language Support is\ntherefore built-in in 'glibc'.\n\nOn the other hand, the 'uClibc' and 'musl' C libraries only provide a\nstub implementation of the gettext functionality, which allows to\ncompile libraries and programs using gettext functions, but without\nproviding the translation capabilities of a full-blown gettext\nimplementation. With such C libraries, if real Native Language Support\nis necessary, it can be provided by the +libintl+ library of the\n+gettext+ package.\n\nDue to this, and in order to make sure that Native Language Support is\nproperly handled, packages in Buildroot that can use NLS support\nshould:\n\n1. Ensure NLS support is enabled when +BR2_SYSTEM_ENABLE_NLS=y+. This\n   is done automatically for 'autotools' packages and therefore should\n   only be done for packages using other package infrastructures.\n\n1. Add +$(TARGET_NLS_DEPENDENCIES)+ to the package\n   +<pkg>_DEPENDENCIES+ variable. This addition should be done\n   unconditionally: the value of this variable is automatically\n   adjusted by the core infrastructure to contain the relevant list of\n   packages. If NLS support is disabled, this variable is empty. If\n   NLS support is enabled, this variable contains +host-gettext+ so\n   that tools needed to compile translation files are available on the\n   host. In addition, if 'uClibc' or 'musl' are used, this variable\n   also contains +gettext+ in order to get the full-blown 'gettext'\n   implementation.\n\n1. If needed, add +$(TARGET_NLS_LIBS)+ to the linker flags, so that\n   the package gets linked with +libintl+. This is generally not\n   needed with 'autotools' packages as they usually detect\n   automatically that they should link with +libintl+. However,\n   packages using other build systems, or problematic autotools-based\n   packages may need this. +$(TARGET_NLS_LIBS)+ should be added\n   unconditionally to the linker flags, as the core automatically\n   makes it empty or defined to +-lintl+ depending on the\n   configuration.\n\nNo changes should be made to the +Config.in+ file to support NLS.\n\nFinally, certain packages need some gettext utilities on the target,\nsuch as the +gettext+ program itself, which allows to retrieve\ntranslated strings, from the command line. In such a case, the package\nshould:\n\n* use +select BR2_PACKAGE_GETTEXT+ in their +Config.in+ file,\n  indicating in a comment above that it's a runtime dependency only.\n\n* not add any +gettext+ dependency in the +DEPENDENCIES+ variable of\n  their +.mk+ file.\n"
  },
  {
    "path": "docs/manual/adding-packages-golang.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for Go packages\n\nThis infrastructure applies to Go packages that use the standard\nbuild system and use bundled dependencies.\n\n[[golang-package-tutorial]]\n\n==== +golang-package+ tutorial\n\nFirst, let's see how to write a +.mk+ file for a go package,\nwith an example :\n\n------------------------\n01: ################################################################################\n02: #\n03: # foo\n04: #\n05: ################################################################################\n06:\n07: FOO_VERSION = 1.0\n08: FOO_SITE = $(call github,bar,foo,$(FOO_VERSION))\n09: FOO_LICENSE = BSD-3-Clause\n10: FOO_LICENSE_FILES = LICENSE\n11:\n12: $(eval $(golang-package))\n------------------------\n\nOn line 7, we declare the version of the package.\n\nOn line 8, we declare the upstream location of the package, here\nfetched from Github, since a large number of Go packages are hosted on\nGithub.\n\nOn line 9 and 10, we give licensing details about the package.\n\nFinally, on line 12, we invoke the +golang-package+ macro that\ngenerates all the Makefile rules that actually allow the package to be\nbuilt.\n\n[[golang-package-reference]]\n\n==== +golang-package+ reference\n\nIn their +Config.in+ file, packages using the +golang-package+\ninfrastructure should depend on +BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS+\nbecause Buildroot will automatically add a dependency on +host-go+\nto such packages.\nIf you need CGO support in your package, you must add a dependency on\n+BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS+.\n\nThe main macro of the Go package infrastructure is\n+golang-package+. It is similar to the +generic-package+ macro. The\nability to build host packages is also available, with the\n+host-golang-package+ macro.\nHost packages built by +host-golang-package+ macro should depend on\nBR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS.\n\nJust like the generic infrastructure, the Go infrastructure works\nby defining a number of variables before calling the +golang-package+.\n\nAll the package metadata information variables that exist in the\nxref:generic-package-reference[generic package infrastructure] also\nexist in the Go infrastructure: +FOO_VERSION+, +FOO_SOURCE+,\n+FOO_PATCH+, +FOO_SITE+, +FOO_SUBDIR+, +FOO_DEPENDENCIES+,\n+FOO_LICENSE+, +FOO_LICENSE_FILES+, +FOO_INSTALL_STAGING+, etc.\n\nNote that it is not necessary to add +host-go+ in the\n+FOO_DEPENDENCIES+ variable of a package, since this basic dependency\nis automatically added as needed by the Go package infrastructure.\n\nA few additional variables, specific to the Go infrastructure, can\noptionally be defined, depending on the package's needs. Many of them\nare only useful in very specific cases, typical packages will\ntherefore only use a few of them, or none.\n\n* The package must specify its Go module name in the +FOO_GOMOD+\n  variable. If not specified, it defaults to\n  +URL-domain/1st-part-of-URL/2nd-part-of-URL+, e.g +FOO_GOMOD+ will\n  take the value +github.com/bar/foo+ for a package that specifies\n  +FOO_SITE = $(call github,bar,foo,$(FOO_VERSION))+. The Go package\n  infrastructure will automatically generate a minimal +go.mod+ file\n  in the package source tree if it doesn't exist.\n\n* +FOO_LDFLAGS+ and +FOO_TAGS+ can be used to pass respectively the\n  +LDFLAGS+ or the +TAGS+ to the +go+ build command.\n\n* +FOO_BUILD_TARGETS+ can be used to pass the list of targets that\n  should be built. If +FOO_BUILD_TARGETS+ is not specified, it\n  defaults to +.+. We then have two cases:\n\n** +FOO_BUILD_TARGETS+ is +.+. In this case, we assume only one binary\n   will be produced, and that by default we name it after the package\n   name. If that is not appropriate, the name of the produced binary\n   can be overridden using +FOO_BIN_NAME+.\n\n** +FOO_BUILD_TARGETS+ is not +.+. In this case, we iterate over the\n   values to build each target, and for each produced a binary that is\n   the non-directory component of the target. For example if\n   +FOO_BUILD_TARGETS = cmd/docker cmd/dockerd+ the binaries produced\n   are +docker+ and +dockerd+.\n\n* +FOO_INSTALL_BINS+ can be used to pass the list of binaries that\n  should be installed in +/usr/bin+ on the target. If\n  +FOO_INSTALL_BINS+ is not specified, it defaults to the lower-case\n  name of package.\n\nWith the Go infrastructure, all the steps required to build and\ninstall the packages are already defined, and they generally work well\nfor most Go-based packages. However, when required, it is still\npossible to customize what is done in any particular step:\n\n* By adding a post-operation hook (after extract, patch, configure,\n  build or install). See xref:hooks[] for details.\n\n* By overriding one of the steps. For example, even if the Go\n  infrastructure is used, if the package +.mk+ file defines its own\n  +FOO_BUILD_CMDS+ variable, it will be used instead of the default Go\n  one. However, using this method should be restricted to very\n  specific cases. Do not use it in the general case.\n"
  },
  {
    "path": "docs/manual/adding-packages-hooks.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[hooks]]\n=== Hooks available in the various build steps\n\nThe generic infrastructure (and as a result also the derived autotools\nand cmake infrastructures) allow packages to specify hooks.\nThese define further actions to perform after existing steps.\nMost hooks aren't really useful for generic packages, since the +.mk+\nfile already has full control over the actions performed in each step\nof the package construction.\n\nThe following hook points are available:\n\n* +LIBFOO_PRE_DOWNLOAD_HOOKS+\n* +LIBFOO_POST_DOWNLOAD_HOOKS+\n\n* +LIBFOO_PRE_EXTRACT_HOOKS+\n* +LIBFOO_POST_EXTRACT_HOOKS+\n\n* +LIBFOO_PRE_RSYNC_HOOKS+\n* +LIBFOO_POST_RSYNC_HOOKS+\n\n* +LIBFOO_PRE_PATCH_HOOKS+\n* +LIBFOO_POST_PATCH_HOOKS+\n\n* +LIBFOO_PRE_CONFIGURE_HOOKS+\n* +LIBFOO_POST_CONFIGURE_HOOKS+\n\n* +LIBFOO_PRE_BUILD_HOOKS+\n* +LIBFOO_POST_BUILD_HOOKS+\n\n* +LIBFOO_PRE_INSTALL_HOOKS+ (for host packages only)\n* +LIBFOO_POST_INSTALL_HOOKS+ (for host packages only)\n\n* +LIBFOO_PRE_INSTALL_STAGING_HOOKS+ (for target packages only)\n* +LIBFOO_POST_INSTALL_STAGING_HOOKS+ (for target packages only)\n\n* +LIBFOO_PRE_INSTALL_TARGET_HOOKS+ (for target packages only)\n* +LIBFOO_POST_INSTALL_TARGET_HOOKS+ (for target packages only)\n\n* +LIBFOO_PRE_INSTALL_IMAGES_HOOKS+\n* +LIBFOO_POST_INSTALL_IMAGES_HOOKS+\n\n* +LIBFOO_PRE_LEGAL_INFO_HOOKS+\n* +LIBFOO_POST_LEGAL_INFO_HOOKS+\n\nThese variables are 'lists' of variable names containing actions to be\nperformed at this hook point. This allows several hooks to be\nregistered at a given hook point. Here is an example:\n\n----------------------\ndefine LIBFOO_POST_PATCH_FIXUP\n\taction1\n\taction2\nendef\n\nLIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP\n----------------------\n\n[[hooks-rsync]]\n==== Using the +POST_RSYNC+ hook\nThe +POST_RSYNC+ hook is run only for packages that use a local source,\neither through the +local+ site method or the +OVERRIDE_SRCDIR+\nmechanism. In this case, package sources are copied using +rsync+ from\nthe local location into the buildroot build directory. The +rsync+\ncommand does not copy all files from the source directory, though.\nFiles belonging to a version control system, like the directories\n+.git+, +.hg+, etc. are not copied. For most packages this is\nsufficient, but a given package can perform additional actions using\nthe +POST_RSYNC+ hook.\n\nIn principle, the hook can contain any command you want. One specific\nuse case, though, is the intentional copying of the version control\ndirectory using +rsync+. The +rsync+ command you use in the hook can, among\nothers, use the following variables:\n\n* +$(SRCDIR)+: the path to the overridden source directory\n* +$(@D)+: the path to the build directory\n\n==== Target-finalize hook\n\nPackages may also register hooks in +LIBFOO_TARGET_FINALIZE_HOOKS+.\nThese hooks are run after all packages are built, but before the\nfilesystem images are generated. They are seldom used, and your\npackage probably do not need them.\n"
  },
  {
    "path": "docs/manual/adding-packages-kconfig.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for packages using kconfig for configuration files\n\nA popular way for a software package to handle user-specified\nconfiguration is +kconfig+. Among others, it is used by the Linux\nkernel, Busybox, and Buildroot itself. The presence of a .config file\nand a +menuconfig+ target are two well-known symptoms of kconfig being\nused.\n\nBuildroot features an infrastructure for packages that use kconfig for\ntheir configuration. This infrastructure provides the necessary logic to\nexpose the package's +menuconfig+ target as +foo-menuconfig+ in\nBuildroot, and to handle the copying back and forth of the configuration\nfile in a correct way.\n\nThe +kconfig-package+ infrastructure is based on the +generic-package+\ninfrastructure. All variables supported by +generic-package+ are\navailable in +kconfig-package+ as well. See\nxref:generic-package-reference[] for more details.\n\nIn order to use the +kconfig-package+ infrastructure for a Buildroot\npackage, the minimally required lines in the +.mk+ file, in addition to\nthe variables required by the +generic-package+ infrastructure, are:\n\n------------------------------\nFOO_KCONFIG_FILE = reference-to-source-configuration-file\n\n$(eval $(kconfig-package))\n------------------------------\n\nThis snippet creates the following make targets:\n\n* +foo-menuconfig+, which calls the package's +menuconfig+ target\n\n* +foo-update-config+, which copies the configuration back to the\n  source configuration file. It is not possible to use this target\n  when fragment files are set.\n\n* +foo-update-defconfig+, which copies the configuration back to the\n  source configuration file. The configuration file will only list the\n  options that differ from the default values. It is not possible to\n  use this target when fragment files are set.\n\n* +foo-diff-config+, which outputs the differences between the current\n  configuration and the one defined in the Buildroot configuration for\n  this kconfig package. The output is useful to identify the\n  configuration changes that may have to be propagated to\n  configuration fragments for example.\n\nand ensures that the source configuration file is copied to the build\ndirectory at the right moment.\n\nThere are two options to specify a configuration file to use, either\n+FOO_KCONFIG_FILE+ (as in the example, above) or +FOO_KCONFIG_DEFCONFIG+.\nIt is mandatory to provide either, but not both:\n\n* +FOO_KCONFIG_FILE+ specifies the path to a defconfig or full-config file\n  to be used to configure the package.\n\n* +FOO_KCONFIG_DEFCONFIG+ specifies the defconfig 'make' rule to call to\n  configure the package.\n\nIn addition to these minimally required lines, several optional variables can\nbe set to suit the needs of the package under consideration:\n\n* +FOO_KCONFIG_EDITORS+: a space-separated list of kconfig editors to\n  support, for example 'menuconfig xconfig'. By default, 'menuconfig'.\n\n* +FOO_KCONFIG_FRAGMENT_FILES+: a space-separated list of configuration\n  fragment files that are merged to the main configuration file.\n  Fragment files are typically used when there is a desire to stay in sync\n  with an upstream (def)config file, with some minor modifications.\n\n* +FOO_KCONFIG_OPTS+: extra options to pass when calling the kconfig\n  editors. This may need to include '$(FOO_MAKE_OPTS)', for example. By\n  default, empty.\n\n* +FOO_KCONFIG_FIXUP_CMDS+: a list of shell commands needed to fixup the\n  configuration file after copying it or running a kconfig editor. Such\n  commands may be needed to ensure a configuration consistent with other\n  configuration of Buildroot, for example. By default, empty.\n\n* +FOO_KCONFIG_DOTCONFIG+: path (with filename) of the +.config+ file,\n  relative to the package source tree. The default, +.config+, should\n  be well suited for all packages that use the standard kconfig\n  infrastructure as inherited from the Linux kernel; some packages use\n  a derivative of kconfig that use a different location.\n\n* +FOO_KCONFIG_DEPENDENCIES+: the list of packages (most probably, host\n  packages) that need to be built before this package's kconfig is\n  interpreted. Seldom used. By default, empty.\n\n* +FOO_KCONFIG_SUPPORTS_DEFCONFIG+: whether the package's kconfig system\n  supports using defconfig files; few packages do not. By default, 'YES'.\n"
  },
  {
    "path": "docs/manual/adding-packages-kernel-module.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for packages building kernel modules\n\nBuildroot offers a helper infrastructure to make it easy to write packages that\nbuild and install Linux kernel modules. Some packages only contain a kernel\nmodule, other packages contain programs and libraries in addition to kernel\nmodules. Buildroot's helper infrastructure supports either case.\n\n[[kernel-module-tutorial]]\n==== +kernel-module+ tutorial\n\nLet's start with an example on how to prepare a simple package that only\nbuilds a kernel module, and no other component:\n\n----\n01: ################################################################################\n02: #\n03: # foo\n04: #\n05: ################################################################################\n06: \n07: FOO_VERSION = 1.2.3\n08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz\n09: FOO_SITE = http://www.foosoftware.org/download\n10: FOO_LICENSE = GPL-2.0\n11: FOO_LICENSE_FILES = COPYING\n12: \n13: $(eval $(kernel-module))\n14: $(eval $(generic-package))\n----\n\nLines 7-11 define the usual meta-data to specify the version, archive name,\nremote URI where to find the package source, licensing information.\n\nOn line 13, we invoke the +kernel-module+ helper infrastructure, that\ngenerates all the appropriate Makefile rules and variables to build\nthat kernel module.\n\nFinally, on line 14, we invoke the\nxref:generic-package-tutorial[+generic-package+ infrastructure].\n\nThe dependency on +linux+ is automatically added, so it is not needed to\nspecify it in +FOO_DEPENDENCIES+.\n\nWhat you may have noticed is that, unlike other package infrastructures,\nwe explicitly invoke a second infrastructure. This allows a package to\nbuild a kernel module, but also, if needed, use any one of other package\ninfrastructures to build normal userland components (libraries,\nexecutables...). Using the +kernel-module+ infrastructure on its own is\nnot sufficient; another package infrastructure *must* be used.\n\nLet's look at a more complex example:\n\n----\n01: ################################################################################\n02: #\n03: # foo\n04: #\n05: ################################################################################\n06: \n07: FOO_VERSION = 1.2.3\n08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz\n09: FOO_SITE = http://www.foosoftware.org/download\n10: FOO_LICENSE = GPL-2.0\n11: FOO_LICENSE_FILES = COPYING\n12: \n13: FOO_MODULE_SUBDIRS = driver/base\n14: FOO_MODULE_MAKE_OPTS = KVERSION=$(LINUX_VERSION_PROBED)\n15: \n16: ifeq ($(BR2_PACKAGE_LIBBAR),y)\n17: FOO_DEPENDENCIES = libbar\n18: FOO_CONF_OPTS = --enable-bar\n19: FOO_MODULE_SUBDIRS += driver/bar\n20: else\n21: FOO_CONF_OPTS = --disable-bar\n22: endif\n23: \n24: $(eval $(kernel-module))\n26: $(eval $(autotools-package))\n----\n\nHere, we see that we have an autotools-based package, that also builds\nthe kernel module located in sub-directory +driver/base+ and, if libbar\nis enabled, the kernel module located in sub-directory +driver/bar+, and\ndefines the variable +KVERSION+ to be passed to the Linux buildsystem\nwhen building the module(s).\n\n\n[[kernel-module-reference]]\n==== +kernel-module+ reference\n\nThe main macro for the  kernel module infrastructure is +kernel-module+.\nUnlike other package infrastructures, it is not stand-alone, and requires\nany of the other +*-package+ macros be called after it.\n\nThe +kernel-module+ macro defines post-build and post-target-install\nhooks to build the kernel modules. If the package's +.mk+ needs access\nto the built kernel modules, it should do so in a post-build hook,\n*registered after* the call to +kernel-module+. Similarly, if the\npackage's +.mk+ needs access to the kernel module after it has been\ninstalled, it should do so in a post-install hook, *registered after*\nthe call to +kernel-module+. Here's an example:\n\n----\n$(eval $(kernel-module))\n\ndefine FOO_DO_STUFF_WITH_KERNEL_MODULE\n    # Do something with it...\nendef\nFOO_POST_BUILD_HOOKS += FOO_DO_STUFF_WITH_KERNEL_MODULE\n\n$(eval $(generic-package))\n----\n\nFinally, unlike the other package infrastructures, there is no\n+host-kernel-module+ variant to build a host kernel module.\n\nThe following additional variables can optionally be defined to further\nconfigure the build of the kernel module:\n\n* +FOO_MODULE_SUBDIRS+ may be set to one or more sub-directories (relative\n  to the package source top-directory) where the kernel module sources are.\n  If empty or not set, the sources for the kernel module(s) are considered\n  to be located at the top of the package source tree.\n\n* +FOO_MODULE_MAKE_OPTS+ may be set to contain extra variable definitions\n  to pass to the Linux buildsystem.\n\n[[kernel-variables]]\nYou may also reference (but you may *not* set!) those variables:\n\n * +LINUX_DIR+ contains the path to where the Linux kernel has been\n   extracted and built.\n\n * +LINUX_VERSION+ contains the version string as configured by the user.\n\n * +LINUX_VERSION_PROBED+ contains the real version string of the kernel,\n   retrieved with running `make -C $(LINUX_DIR) kernelrelease`\n\n * +KERNEL_ARCH+ contains the name of the current architecture, like `arm`,\n   `mips`...\n"
  },
  {
    "path": "docs/manual/adding-packages-linux-kernel-spec-infra.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[linux-kernel-specific-infra]]\n=== Infrastructure specific to the Linux kernel package\n\nThe Linux kernel package can use some specific infrastructures based on package\nhooks for building Linux kernel tools or/and building Linux kernel extensions.\n\n[[linux-kernel-tools]]\n==== linux-kernel-tools\n\nBuildroot offers a helper infrastructure to build some userspace tools\nfor the target available within the Linux kernel sources. Since their\nsource code is part of the kernel source code, a special package,\n+linux-tools+, exists and re-uses the sources of the Linux kernel that\nruns on the target.\n\nLet's look at an example of a Linux tool. For a new Linux tool named\n+foo+, create a new menu entry in the existing\n+package/linux-tools/Config.in+.  This file will contain the option\ndescriptions related to each kernel tool that will be used and\ndisplayed in the configuration tool. It would basically look like:\n\n------------------------------\n01: config BR2_PACKAGE_LINUX_TOOLS_FOO\n02: \tbool \"foo\"\n03: \tselect BR2_PACKAGE_LINUX_TOOLS\n04: \thelp\n05: \t  This is a comment that explains what foo kernel tool is.\n06:\n07: \t  http://foosoftware.org/foo/\n------------------------------\n\nThe name of the option starts with the prefix +BR2_PACKAGE_LINUX_TOOLS_+,\nfollowed by the uppercase name of the tool (like is done for packages).\n\n.Note\nUnlike other packages, the +linux-tools+ package options appear in the\n+linux+ kernel menu, under the `Linux Kernel Tools` sub-menu, not under\nthe `Target packages` main menu.\n\nThen for each linux tool, add a new +.mk.in+ file named\n+package/linux-tools/linux-tool-foo.mk.in+. It would basically look like:\n\n------------------------------\n01: ################################################################################\n02: #\n03: # foo\n04: #\n05: ################################################################################\n06:\n07: LINUX_TOOLS += foo\n08:\n09: FOO_DEPENDENCIES = libbbb\n10:\n11: define FOO_BUILD_CMDS\n12: \t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools foo\n13: endef\n14:\n15: define FOO_INSTALL_STAGING_CMDS\n16: \t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \\\n17: \t\tDESTDIR=$(STAGING_DIR) \\\n18: \t\tfoo_install\n19: endef\n20:\n21: define FOO_INSTALL_TARGET_CMDS\n22: \t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \\\n23: \t\tDESTDIR=$(TARGET_DIR) \\\n24: \t\tfoo_install\n25: endef\n--------------------------------\n\nOn line 7, we register the Linux tool +foo+ to the list of available\nLinux tools.\n\nOn line 9, we specify the list of dependencies this tool relies on. These\ndependencies are added to the Linux package dependencies list only when the\n+foo+ tool is selected.\n\nThe rest of the Makefile, lines 11-25 defines what should be done at the\ndifferent steps of the Linux tool build process like for a\nxref:generic-package-tutorial[+generic package+]. They will actually be\nused only when the +foo+ tool is selected. The only supported commands are\n+_BUILD_CMDS+, +_INSTALL_STAGING_CMDS+ and +_INSTALL_TARGET_CMDS+.\n\n.Note\nOne *must not* call +$(eval $(generic-package))+ or any other\npackage infrastructure! Linux tools are not packages by themselves,\nthey are part of the +linux-tools+ package.\n\n[[linux-kernel-ext]]\n==== linux-kernel-extensions\n\nSome packages provide new features that require the Linux kernel tree\nto be modified. This can be in the form of patches to be applied on\nthe kernel tree, or in the form of new files to be added to the\ntree. The Buildroot's Linux kernel extensions infrastructure provides\na simple solution to automatically do this, just after the kernel\nsources are extracted and before the kernel patches are\napplied. Examples of extensions packaged using this mechanism are the\nreal-time extensions Xenomai and RTAI, as well as the set of\nout-of-tree LCD screens drivers +fbtft+.\n\nLet's look at an example on how to add a new Linux extension +foo+.\n\nFirst, create the package +foo+ that provides the extension: this\npackage is a standard package; see the previous chapters on how to\ncreate such a package. This package is in charge of downloading the\nsources archive, checking the hash, defining the licence informations\nand building user space tools if any.\n\nThen create the 'Linux extension' proper: create a new menu entry in\nthe existing +linux/Config.ext.in+. This file contains the option\ndescriptions related to each kernel extension that will be used and\ndisplayed in the configuration tool. It would basically look like:\n\n------------------------------\n01: config BR2_LINUX_KERNEL_EXT_FOO\n02: \tbool \"foo\"\n03: \thelp\n04: \t  This is a comment that explains what foo kernel extension is.\n05:\n06: \t  http://foosoftware.org/foo/\n------------------------------\n\nThen for each linux extension, add a new +.mk+ file named\n+linux/linux-ext-foo.mk+. It should basically contain:\n\n------------------------------\n01: ################################################################################\n02: #\n03: # foo\n04: #\n05: ################################################################################\n06:\n07: LINUX_EXTENSIONS += foo\n08:\n09: define FOO_PREPARE_KERNEL\n10:\t$(FOO_DIR)/prepare-kernel-tree.sh --linux-dir=$(@D)\n11: endef\n--------------------------------\n\nOn line 7, we add the Linux extension +foo+ to the list of available\nLinux extensions.\n\nOn line 9-11, we define what should be done by the extension to modify\nthe Linux kernel tree; this is specific to the linux extension and can\nuse the variables defined by the +foo+ package, like: +$(FOO_DIR)+ or\n+$(FOO_VERSION)+... as well as all the Linux variables, like:\n+$(LINUX_VERSION)+ or +$(LINUX_VERSION_PROBED)+, +$(KERNEL_ARCH)+...\nSee the xref:kernel-variables[definition of those kernel variables].\n"
  },
  {
    "path": "docs/manual/adding-packages-luarocks.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for LuaRocks-based packages\n\n[[luarocks-package-tutorial]]\n\n==== +luarocks-package+ tutorial\n\nFirst, let's see how to write a +.mk+ file for a LuaRocks-based package,\nwith an example :\n\n------------------------\n01: ################################################################################\n02: #\n03: # lua-foo\n04: #\n05: ################################################################################\n06:\n07: LUA_FOO_VERSION = 1.0.2-1\n08: LUA_FOO_NAME_UPSTREAM = foo\n09: LUA_FOO_DEPENDENCIES = bar\n10:\n11: LUA_FOO_BUILD_OPTS += BAR_INCDIR=$(STAGING_DIR)/usr/include\n12: LUA_FOO_BUILD_OPTS += BAR_LIBDIR=$(STAGING_DIR)/usr/lib\n13: LUA_FOO_LICENSE = luaFoo license\n14: LUA_FOO_LICENSE_FILES = $(LUA_FOO_SUBDIR)/COPYING\n15:\n16: $(eval $(luarocks-package))\n------------------------\n\nOn line 7, we declare the version of the package (the same as in the rockspec,\nwhich is the concatenation of the upstream version and the rockspec revision,\nseparated by a hyphen '-').\n\nOn line 8, we declare that the package is called \"foo\" on LuaRocks. In\nBuildroot, we give Lua-related packages a name that starts with \"lua\", so the\nBuildroot name is different from the upstream name. +LUA_FOO_NAME_UPSTREAM+\nmakes the link between the two names.\n\nOn line 9, we declare our dependencies against native libraries, so that they\nare built before the build process of our package starts.\n\nOn lines 11-12, we tell Buildroot to pass custom options to LuaRocks when it is\nbuilding the package.\n\nOn lines 13-14, we specify the licensing terms for the package.\n\nFinally, on line 16, we invoke the +luarocks-package+\nmacro that generates all the Makefile rules that actually allows the\npackage to be built.\n\nMost of these details can be retrieved from the +rock+ and +rockspec+.\nSo, this file and the Config.in file can be generated by running the\ncommand +luarocks buildroot foo lua-foo+ in the Buildroot\ndirectory. This command runs a specific Buildroot addon of +luarocks+\nthat will automatically generate a Buildroot package. The result must\nstill be manually inspected and possibly modified.\n\n* The +package/Config.in+ file has to be updated manually to include the\n  generated Config.in files.\n\n[[luarocks-package-reference]]\n\n==== +luarocks-package+ reference\n\nLuaRocks is a deployment and management system for Lua modules, and supports\nvarious +build.type+: +builtin+, +make+ and +cmake+. In the context of\nBuildroot, the +luarocks-package+ infrastructure only supports the +builtin+\nmode. LuaRocks packages that use the +make+ or +cmake+ build mechanisms\nshould instead be packaged using the +generic-package+ and +cmake-package+\ninfrastructures in Buildroot, respectively.\n\nThe main macro of the LuaRocks package infrastructure is +luarocks-package+:\nlike +generic-package+ it works by defining a number of variables providing\nmetadata information about the package, and then calling +luarocks-package+.\n\nJust like the generic infrastructure, the LuaRocks infrastructure works\nby defining a number of variables before calling the +luarocks-package+\nmacro.\n\nFirst, all the package metadata information variables that exist in\nthe generic infrastructure also exist in the LuaRocks infrastructure:\n+LUA_FOO_VERSION+, +LUA_FOO_SOURCE+, +LUA_FOO_SITE+,\n+LUA_FOO_DEPENDENCIES+, +LUA_FOO_LICENSE+, +LUA_FOO_LICENSE_FILES+.\n\nTwo of them are populated by the LuaRocks infrastructure (for the\n+download+ step). If your package is not hosted on the LuaRocks mirror\n+$(BR2_LUAROCKS_MIRROR)+, you can override them:\n\n* +LUA_FOO_SITE+, which defaults to +$(BR2_LUAROCKS_MIRROR)+\n\n* +LUA_FOO_SOURCE+, which defaults to\n  +$(lowercase LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).src.rock+\n\nA few additional variables, specific to the LuaRocks infrastructure, are\nalso defined. They can be overridden in specific cases.\n\n* +LUA_FOO_NAME_UPSTREAM+, which defaults to +lua-foo+, i.e. the Buildroot\n  package name\n\n* +LUA_FOO_ROCKSPEC+, which defaults to\n  +$(lowercase LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).rockspec+\n\n* +LUA_FOO_SUBDIR+, which defaults to\n  +$(LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION_WITHOUT_ROCKSPEC_REVISION)+\n\n* +LUA_FOO_BUILD_OPTS+ contains additional build options for the\n  +luarocks build+ call.\n"
  },
  {
    "path": "docs/manual/adding-packages-meson.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for Meson-based packages\n\n[[meson-package-tutorial]]\n\n==== +meson-package+ tutorial\n\nhttp://mesonbuild.com[Meson] is an open source build system meant to be both\nextremely fast, and, even more importantly, as user friendly as possible. It\nuses https://ninja-build.org[Ninja] as a companion tool to perform the actual\nbuild operations.\n\nLet's see how to write a +.mk+ file for a Meson-based package, with an example:\n\n------------------------------\n01: ################################################################################\n02: #\n03: # foo\n04: #\n05: ################################################################################\n06:\n07: FOO_VERSION = 1.0\n08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz\n09: FOO_SITE = http://www.foosoftware.org/download\n10: FOO_LICENSE = GPL-3.0+\n11: FOO_LICENSE_FILES = COPYING\n12: FOO_INSTALL_STAGING = YES\n13:\n14: FOO_DEPENDENCIES = host-pkgconf bar\n15:\n16: ifeq ($(BR2_PACKAGE_BAZ),y)\n17: FOO_CONF_OPTS += -Dbaz=true\n18: FOO_DEPENDENCIES += baz\n19: else\n20: FOO_CONF_OPTS += -Dbaz=false\n21: endif\n22:\n23: $(eval $(meson-package))\n--------------------------------\n\nThe Makefile starts with the definition of the standard variables for package\ndeclaration (lines 7 to 11).\n\nOn line line 23, we invoke the +meson-package+ macro that generates all the\nMakefile rules that actually allows the package to be built.\n\nIn the example, +host-pkgconf+ and +bar+ are declared as dependencies in\n+FOO_DEPENDENCIES+ at line 14 because the Meson build file of +foo+ uses\n`pkg-config` to determine the compilation flags and libraries of package +bar+.\n\nNote that it is not necessary to add +host-meson+ in the +FOO_DEPENDENCIES+\nvariable of a package, since this basic dependency is automatically added as\nneeded by the Meson package infrastructure.\n\nIf the \"baz\" package is selected, then support for the \"baz\" feature in \"foo\" is\nactivated by adding +-Dbaz=true+ to +FOO_CONF_OPTS+ at line 17, as specified in\nthe +meson_options.txt+ file in \"foo\" source tree. The \"baz\" package is also\nadded to +FOO_DEPENDENCIES+. Note that the support for +baz+ is explicitly\ndisabled at line 20, if the package is not selected.\n\nTo sum it up, to add a new meson-based package, the Makefile example can be\ncopied verbatim then edited to replace all occurences of +FOO+ with the\nuppercase name of the new package and update the values of the standard\nvariables.\n\n[[meson-package-reference]]\n\n==== +meson-package+ reference\n\nThe main macro of the Meson package infrastructure is +meson-package+. It is\nsimilar to the +generic-package+ macro. The ability to have target and host\npackages is also available, with the +host-meson-package+ macro.\n\nJust like the generic infrastructure, the Meson infrastructure works by defining\na number of variables before calling the +meson-package+ macro.\n\nFirst, all the package metadata information variables that exist in the generic\ninfrastructure also exist in the Meson infrastructure: +FOO_VERSION+,\n+FOO_SOURCE+, +FOO_PATCH+, +FOO_SITE+, +FOO_SUBDIR+, +FOO_DEPENDENCIES+,\n+FOO_INSTALL_STAGING+, +FOO_INSTALL_TARGET+.\n\nA few additional variables, specific to the Meson infrastructure, can also be\ndefined. Many of them are only useful in very specific cases, typical packages\nwill therefore only use a few of them.\n\n* +FOO_SUBDIR+ may contain the name of a subdirectory inside the\n  package that contains the main meson.build file. This is useful,\n  if for example, the main meson.build file is not at the root of\n  the tree extracted by the tarball. If +HOST_FOO_SUBDIR+ is not\n  specified, it defaults to +FOO_SUBDIR+.\n\n* +FOO_CONF_ENV+, to specify additional environment variables to pass to\n  +meson+ for the configuration step. By default, empty.\n\n* +FOO_CONF_OPTS+, to specify additional options to pass to +meson+ for the\n  configuration step. By default, empty.\n\n* +FOO_CFLAGS+, to specify compiler arguments added to the package specific\n  +cross-compile.conf+ file +c_args+ property. By default, the value of\n  +TARGET_CFLAGS+.\n\n* +FOO_CXXFLAGS+, to specify compiler arguments added to the package specific\n  +cross-compile.conf+ file +cpp_args+ property. By default, the value of\n  +TARGET_CXXFLAGS+.\n\n* +FOO_LDFLAGS+, to specify compiler arguments added to the package specific\n  +cross-compile.conf+ file +c_link_args+ and +cpp_link_args+ properties. By\n  default, the value of +TARGET_LDFLAGS+.\n\n* +FOO_MESON_EXTRA_BINARIES+, to specify a space-separated list of programs\n  to add to the `[binaries]` section of the meson `cross-compilation.conf`\n  configuration file. The format is `program-name='/path/to/program'`, with\n  no space around the +=+ sign, and with the path of the program between\n  single quotes. By default, empty. Note that Buildroot already sets the\n  correct values for +c+, +cpp+, +ar+, +strip+, and +pkgconfig+.\n\n* +FOO_MESON_EXTRA_PROPERTIES+, to specify a space-separated list of\n  properties to add to the `[properties]` section of the meson\n  `cross-compilation.conf` configuration file. The format is\n  `property-name=<value>` with no space around the +=+ sign, and with\n  single quotes around string values. By default, empty. Note that\n  Buildroot already sets values for +needs_exe_wrapper+, +c_args+,\n  +c_link_args+, +cpp_args+, +cpp_link_args+, +sys_root+, and\n  +pkg_config_libdir+.\n\n* +FOO_NINJA_ENV+, to specify additional environment variables to pass to\n  +ninja+, meson companion tool in charge of the build operations. By default,\n  empty.\n\n* +FOO_NINJA_OPTS+, to specify a space-separated list of targets to build. By\n  default, empty, to build the default target(s).\n"
  },
  {
    "path": "docs/manual/adding-packages-perl.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for Perl/CPAN packages\n\n[[perl-package-tutorial]]\n\n==== +perl-package+ tutorial\n\nFirst, let's see how to write a +.mk+ file for a Perl/CPAN package,\nwith an example :\n\n------------------------\n01: ################################################################################\n02: #\n03: # perl-foo-bar\n04: #\n05: ################################################################################\n06:\n07: PERL_FOO_BAR_VERSION = 0.02\n08: PERL_FOO_BAR_SOURCE = Foo-Bar-$(PERL_FOO_BAR_VERSION).tar.gz\n09: PERL_FOO_BAR_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MO/MONGER\n10: PERL_FOO_BAR_DEPENDENCIES = perl-strictures\n11: PERL_FOO_BAR_LICENSE = Artistic or GPL-1.0+\n12: PERL_FOO_BAR_LICENSE_FILES = LICENSE\n13: PERL_FOO_BAR_DISTNAME = Foo-Bar\n14:\n15: $(eval $(perl-package))\n------------------------\n\nOn line 7, we declare the version of the package.\n\nOn line 8 and 9, we declare the name of the tarball and the location\nof the tarball on a CPAN server. Buildroot will automatically download\nthe tarball from this location.\n\nOn line 10, we declare our dependencies, so that they are built\nbefore the build process of our package starts.\n\nOn line 11 and 12, we give licensing details about the package (its\nlicense on line 11, and the file containing the license text on line\n12).\n\nOn line 13, the name of the distribution as needed by the script\n+utils/scancpan+ (in order to regenerate/upgrade these package files).\n\nFinally, on line 15, we invoke the +perl-package+ macro that\ngenerates all the Makefile rules that actually allow the package to be\nbuilt.\n\nMost of these data can be retrieved from https://metacpan.org/.\nSo, this file and the Config.in can be generated by running\nthe script +utils/scancpan Foo-Bar+ in the Buildroot directory\n(or in a br2-external tree).\nThis script creates a Config.in file and foo-bar.mk file for the\nrequested package, and also recursively for all dependencies specified by\nCPAN. You should still manually edit the result. In particular, the\nfollowing things should be checked.\n\n* If the perl module links with a shared library that is provided by\n  another (non-perl) package, this dependency is not added automatically.\n  It has to be added manually to +PERL_FOO_BAR_DEPENDENCIES+.\n* The +package/Config.in+ file has to be updated manually to include the\n  generated Config.in files. As a hint, the +scancpan+ script prints out\n  the required +source \"...\"+ statements, sorted alphabetically.\n\n[[perl-package-reference]]\n\n==== +perl-package+ reference\n\nAs a policy, packages that provide Perl/CPAN modules should all be\nnamed +perl-<something>+ in Buildroot.\n\nThis infrastructure handles various Perl build systems :\n+ExtUtils-MakeMaker+ (EUMM), +Module-Build+ (MB) and +Module-Build-Tiny+.\n+Build.PL+ is preferred by default when a package provides a +Makefile.PL+\nand a +Build.PL+.\n\nThe main macro of the Perl/CPAN package infrastructure is\n+perl-package+. It is similar to the +generic-package+ macro. The ability to\nhave target and host packages is also available, with the\n+host-perl-package+ macro.\n\nJust like the generic infrastructure, the Perl/CPAN infrastructure\nworks by defining a number of variables before calling the\n+perl-package+ macro.\n\nFirst, all the package metadata information variables that exist in the\ngeneric infrastructure also exist in the Perl/CPAN infrastructure:\n+PERL_FOO_VERSION+, +PERL_FOO_SOURCE+,\n+PERL_FOO_PATCH+, +PERL_FOO_SITE+,\n+PERL_FOO_SUBDIR+, +PERL_FOO_DEPENDENCIES+,\n+PERL_FOO_INSTALL_TARGET+.\n\nNote that setting +PERL_FOO_INSTALL_STAGING+ to +YES+ has no effect\nunless a +PERL_FOO_INSTALL_STAGING_CMDS+ variable is defined. The perl\ninfrastructure doesn't define these commands since Perl modules generally\ndon't need to be installed to the +staging+ directory.\n\nA few additional variables, specific to the Perl/CPAN infrastructure,\ncan also be defined. Many of them are only useful in very specific\ncases, typical packages will therefore only use a few of them.\n\n* +PERL_FOO_PREFER_INSTALLER+/+HOST_PERL_FOO_PREFER_INSTALLER+,\n  specifies the preferred installation method. Possible values are\n  +EUMM+ (for +Makefile.PL+ based installation using\n  +ExtUtils-MakeMaker+) and +MB+ (for +Build.PL+ based installation\n  using +Module-Build+). This variable is only used when the package\n  provides both installation methods.\n\n* +PERL_FOO_CONF_ENV+/+HOST_PERL_FOO_CONF_ENV+, to specify additional\n  environment variables to pass to the +perl Makefile.PL+ or +perl Build.PL+.\n  By default, empty.\n\n* +PERL_FOO_CONF_OPTS+/+HOST_PERL_FOO_CONF_OPTS+, to specify additional\n  configure options to pass to the +perl Makefile.PL+ or +perl Build.PL+.\n  By default, empty.\n\n* +PERL_FOO_BUILD_OPTS+/+HOST_PERL_FOO_BUILD_OPTS+, to specify additional\n  options to pass to +make pure_all+ or +perl Build build+ in the build step.\n  By default, empty.\n\n* +PERL_FOO_INSTALL_TARGET_OPTS+, to specify additional options to\n  pass to +make pure_install+ or +perl Build install+ in the install step.\n  By default, empty.\n\n* +HOST_PERL_FOO_INSTALL_OPTS+, to specify additional options to\n  pass to +make pure_install+ or +perl Build install+ in the install step.\n  By default, empty.\n"
  },
  {
    "path": "docs/manual/adding-packages-python.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for Python packages\n\nThis infrastructure applies to Python packages that use the standard\nPython setuptools mechanism as their build system, generally\nrecognizable by the usage of a +setup.py+ script.\n\n[[python-package-tutorial]]\n\n==== +python-package+ tutorial\n\nFirst, let's see how to write a +.mk+ file for a Python package,\nwith an example :\n\n------------------------\n01: ################################################################################\n02: #\n03: # python-foo\n04: #\n05: ################################################################################\n06:\n07: PYTHON_FOO_VERSION = 1.0\n08: PYTHON_FOO_SOURCE = python-foo-$(PYTHON_FOO_VERSION).tar.xz\n09: PYTHON_FOO_SITE = http://www.foosoftware.org/download\n10: PYTHON_FOO_LICENSE = BSD-3-Clause\n11: PYTHON_FOO_LICENSE_FILES = LICENSE\n12: PYTHON_FOO_ENV = SOME_VAR=1\n13: PYTHON_FOO_DEPENDENCIES = libmad\n14: PYTHON_FOO_SETUP_TYPE = distutils\n15:\n16: $(eval $(python-package))\n------------------------\n\nOn line 7, we declare the version of the package.\n\nOn line 8 and 9, we declare the name of the tarball (xz-ed tarball\nrecommended) and the location of the tarball on the Web. Buildroot\nwill automatically download the tarball from this location.\n\nOn line 10 and 11, we give licensing details about the package (its\nlicense on line 10, and the file containing the license text on line\n11).\n\nOn line 12, we tell Buildroot to pass custom options to the Python\n+setup.py+ script when it is configuring the package.\n\nOn line 13, we declare our dependencies, so that they are built\nbefore the build process of our package starts.\n\nOn line 14, we declare the specific Python build system being used. In\nthis case the +distutils+ Python build system is used. The two\nsupported ones are +distutils+ and +setuptools+.\n\nFinally, on line 16, we invoke the +python-package+ macro that\ngenerates all the Makefile rules that actually allow the package to be\nbuilt.\n\n[[python-package-reference]]\n\n==== +python-package+ reference\n\nAs a policy, packages that merely provide Python modules should all be\nnamed +python-<something>+ in Buildroot. Other packages that use the\nPython build system, but are not Python modules, can freely choose\ntheir name (existing examples in Buildroot are +scons+ and\n+supervisor+).\n\nPackages that are only compatible with one version of Python (as in:\nPython 2 or Python 3) should depend on that version explicitely in\ntheir +Config.in+ file (+BR2_PACKAGE_PYTHON+ for Python 2,\n+BR2_PACKAGE_PYTHON3+ for Python 3).  Packages that are compatible\nwith both versions should not explicitely depend on them in their\n+Config.in+ file, since that condition is already expressed for the\nwhole \"External python modules\" menu.\n\nThe main macro of the Python package infrastructure is\n+python-package+. It is similar to the +generic-package+ macro. It is\nalso possible to create Python host packages with the\n+host-python-package+ macro.\n\nJust like the generic infrastructure, the Python infrastructure works\nby defining a number of variables before calling the +python-package+\nor +host-python-package+ macros.\n\nAll the package metadata information variables that exist in the\nxref:generic-package-reference[generic package infrastructure] also\nexist in the Python infrastructure: +PYTHON_FOO_VERSION+,\n+PYTHON_FOO_SOURCE+, +PYTHON_FOO_PATCH+, +PYTHON_FOO_SITE+,\n+PYTHON_FOO_SUBDIR+, +PYTHON_FOO_DEPENDENCIES+, +PYTHON_FOO_LICENSE+,\n+PYTHON_FOO_LICENSE_FILES+, +PYTHON_FOO_INSTALL_STAGING+, etc.\n\nNote that:\n\n * It is not necessary to add +python+ or +host-python+ in the\n   +PYTHON_FOO_DEPENDENCIES+ variable of a package, since these basic\n   dependencies are automatically added as needed by the Python\n   package infrastructure.\n\n * Similarly, it is not needed to add +host-setuptools+ to\n   +PYTHON_FOO_DEPENDENCIES+ for setuptools-based packages, since it's\n   automatically added by the Python infrastructure as needed.\n\nOne variable specific to the Python infrastructure is mandatory:\n\n* +PYTHON_FOO_SETUP_TYPE+, to define which Python build system is used\n  by the package. The two supported values are +distutils+ and\n  +setuptools+. If you don't know which one is used in your package,\n  look at the +setup.py+ file in your package source code, and see\n  whether it imports things from the +distutils+ module or the\n  +setuptools+ module.\n\nA few additional variables, specific to the Python infrastructure, can\noptionally be defined, depending on the package's needs. Many of them\nare only useful in very specific cases, typical packages will\ntherefore only use a few of them, or none.\n\n* +PYTHON_FOO_SUBDIR+ may contain the name of a subdirectory inside the\n  package that contains the main +setup.py+ file. This is useful,\n  if for example, the main +setup.py+ file is not at the root of\n  the tree extracted by the tarball. If +HOST_PYTHON_FOO_SUBDIR+ is not\n  specified, it defaults to +PYTHON_FOO_SUBDIR+.\n\n* +PYTHON_FOO_ENV+, to specify additional environment variables to\n  pass to the Python +setup.py+ script (for both the build and install\n  steps). Note that the infrastructure is automatically passing\n  several standard variables, defined in +PKG_PYTHON_DISTUTILS_ENV+\n  (for distutils target packages), +HOST_PKG_PYTHON_DISTUTILS_ENV+\n  (for distutils host packages), +PKG_PYTHON_SETUPTOOLS_ENV+ (for\n  setuptools target packages) and +HOST_PKG_PYTHON_SETUPTOOLS_ENV+\n  (for setuptools host packages).\n\n* +PYTHON_FOO_BUILD_OPTS+, to specify additional options to pass to the\n  Python +setup.py+ script during the build step. For target distutils\n  packages, the +PKG_PYTHON_DISTUTILS_BUILD_OPTS+ options are already\n  passed automatically by the infrastructure.\n\n* +PYTHON_FOO_INSTALL_TARGET_OPTS+, +PYTHON_FOO_INSTALL_STAGING_OPTS+,\n  +HOST_PYTHON_FOO_INSTALL_OPTS+ to specify additional options to pass\n  to the Python +setup.py+ script during the target installation step,\n  the staging installation step or the host installation,\n  respectively. Note that the infrastructure is automatically passing\n  some options, defined in +PKG_PYTHON_DISTUTILS_INSTALL_TARGET_OPTS+\n  or +PKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS+ (for target distutils\n  packages), +HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS+ (for host\n  distutils packages), +PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_OPTS+ or\n  +PKG_PYTHON_SETUPTOOLS_INSTALL_STAGING_OPTS+ (for target setuptools\n  packages) and +HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS+ (for host\n  setuptools packages).\n\n* +HOST_PYTHON_FOO_NEEDS_HOST_PYTHON+, to define the host python\n  interpreter. The usage of this variable is limited to host\n  packages. The two supported value are +python2+ and +python3+. It\n  will ensure the right host python package is available and will\n  invoke it for the build. If some build steps are overloaded, the\n  right python interpreter must be explicitly called in the commands.\n\nWith the Python infrastructure, all the steps required to build and\ninstall the packages are already defined, and they generally work well\nfor most Python-based packages. However, when required, it is still\npossible to customize what is done in any particular step:\n\n* By adding a post-operation hook (after extract, patch, configure,\n  build or install). See xref:hooks[] for details.\n\n* By overriding one of the steps. For example, even if the Python\n  infrastructure is used, if the package +.mk+ file defines its own\n  +PYTHON_FOO_BUILD_CMDS+ variable, it will be used instead of the\n  default Python one. However, using this method should be restricted\n  to very specific cases. Do not use it in the general case.\n\n[[scanpypi]]\n\n==== Generating a +python-package+ from a PyPI repository\n\nIf the Python package for which you would like to create a Buildroot\npackage is available on PyPI, you may want to use the +scanpypi+ tool\nlocated in +utils/+ to automate the process.\n\nYou can find the list of existing PyPI packages\nhttps://pypi.python.org[here].\n\n+scanpypi+ requires Python's +setuptools+ package to be installed on\nyour host.\n\nWhen at the root of your buildroot directory just do :\n\n-----------------------\nutils/scanpypi foo bar -o package\n-----------------------\n\nThis will generate packages +python-foo+ and +python-bar+ in the package\nfolder if they exist on https://pypi.python.org.\n\nFind the +external python modules+ menu and insert your package inside.\nKeep in mind that the items inside a menu should be in alphabetical order.\n\nPlease keep in mind that you'll most likely have to manually check the\npackage for any mistakes as there are things that cannot be guessed by\nthe generator (e.g.  dependencies on any of the python core modules\nsuch as BR2_PACKAGE_PYTHON_ZLIB).  Also, please take note that the\nlicense and license files are guessed and must be checked. You also\nneed to manually add the package to the +package/Config.in+ file.\n\nIf your Buildroot package is not in the official Buildroot tree but in\na br2-external tree, use the -o flag as follows:\n\n-----------------------\nutils/scanpypi foo bar -o other_package_dir\n-----------------------\n\nThis will generate packages +python-foo+ and +python-bar+ in the\n+other_package_directory+ instead of +package+.\n\nOption +-h+ will list the available options:\n\n-----------------------\nutils/scanpypi -h\n-----------------------\n\n[[python-package-cffi-backend]]\n\n==== +python-package+ CFFI backend\n\nC Foreign Function Interface for Python (CFFI) provides a convenient\nand reliable way to call compiled C code from Python using interface\ndeclarations written in C. Python packages relying on this backend can\nbe identified by the appearance of a +cffi+ dependency in the\n+install_requires+ field of their +setup.py+ file.\n\nSuch a package should:\n\n * add +python-cffi+ as a runtime dependency in order to install the\ncompiled C library wrapper on the target. This is achieved by adding\n+select BR2_PACKAGE_PYTHON_CFFI+ to the package +Config.in+.\n\n------------------------\nconfig BR2_PACKAGE_PYTHON_FOO\n        bool \"python-foo\"\n        select BR2_PACKAGE_PYTHON_CFFI # runtime\n------------------------\n\n * add +host-python-cffi+ as a build-time dependency in order to\ncross-compile the C wrapper. This is achieved by adding\n+host-python-cffi+ to the +PYTHON_FOO_DEPENDENCIES+ variable.\n\n------------------------\n################################################################################\n#\n# python-foo\n#\n################################################################################\n\n...\n\nPYTHON_FOO_DEPENDENCIES = host-python-cffi\n\n$(eval $(python-package))\n------------------------\n"
  },
  {
    "path": "docs/manual/adding-packages-qmake.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for QMake-based packages\n\n[[qmake-package-tutorial]]\n\n==== +qmake-package+ tutorial\n\nFirst, let's see how to write a +.mk+ file for a QMake-based package, with\nan example :\n\n------------------------\n01: ################################################################################\n02: #\n03: # libfoo\n04: #\n05: ################################################################################\n06:\n07: LIBFOO_VERSION = 1.0\n08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz\n09: LIBFOO_SITE = http://www.foosoftware.org/download\n10: LIBFOO_CONF_OPTS = QT_CONFIG+=bar QT_CONFIG-=baz\n11: LIBFOO_DEPENDENCIES = bar\n12:\n13: $(eval $(qmake-package))\n------------------------\n\nOn line 7, we declare the version of the package.\n\nOn line 8 and 9, we declare the name of the tarball (xz-ed tarball\nrecommended) and the location of the tarball on the Web. Buildroot\nwill automatically download the tarball from this location.\n\nOn line 10, we tell Buildroot what options to enable for libfoo.\n\nOn line 11, we tell Buildroot the dependencies of libfoo.\n\nFinally, on line line 13, we invoke the +qmake-package+\nmacro that generates all the Makefile rules that actually allows the\npackage to be built.\n\n[[qmake-package-reference]]\n\n==== +qmake-package+ reference\n\nThe main macro of the QMake package infrastructure is +qmake-package+.\nIt is similar to the +generic-package+ macro.\n\nJust like the generic infrastructure, the QMake infrastructure works\nby defining a number of variables before calling the +qmake-package+\nmacro.\n\nFirst, all the package metadata information variables that exist in\nthe generic infrastructure also exist in the QMake infrastructure:\n+LIBFOO_VERSION+, +LIBFOO_SOURCE+, +LIBFOO_PATCH+, +LIBFOO_SITE+,\n+LIBFOO_SUBDIR+, +LIBFOO_DEPENDENCIES+, +LIBFOO_INSTALL_STAGING+,\n+LIBFOO_INSTALL_TARGET+.\n\nAn additional variable, specific to the QMake infrastructure, can\nalso be defined.\n\n* +LIBFOO_CONF_ENV+, to specify additional environment variables to\n  pass to the +qmake+ script for the configuration step. By default, empty.\n\n* +LIBFOO_CONF_OPTS+, to specify additional options to pass to the\n  +qmake+ script for the configuration step. By default, empty.\n\n* +LIBFOO_MAKE_ENV+, to specify additional environment variables to the\n  +make+ command during the build and install steps. By default, empty.\n\n* +LIBFOO_MAKE_OPTS+, to specify additional targets to pass to the\n  +make+ command during the build step. By default, empty.\n\n* +LIBFOO_INSTALL_STAGING_OPTS+, to specify additional targets to pass\n  to the +make+ command during the staging installation step. By default,\n  +install+.\n\n* +LIBFOO_INSTALL_TARGET_OPTS+, to specify additional targets to pass\n  to the +make+ command during the target installation step. By default,\n  +install+.\n\n* +LIBFOO_SYNC_QT_HEADERS+, to run syncqt.pl before qmake. Some packages\n  need this to have a properly populated include directory before\n  running the build.\n"
  },
  {
    "path": "docs/manual/adding-packages-rebar.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for rebar-based packages\n\n[[rebar-package-tutorial]]\n\n==== +rebar-package+ tutorial\n\nFirst, let's see how to write a +.mk+ file for a rebar-based package,\nwith an example :\n\n------------------------------\n01: ################################################################################\n02: #\n03: # erlang-foobar\n04: #\n05: ################################################################################\n06:\n07: ERLANG_FOOBAR_VERSION = 1.0\n08: ERLANG_FOOBAR_SOURCE = erlang-foobar-$(ERLANG_FOOBAR_VERSION).tar.xz\n09: ERLANG_FOOBAR_SITE = http://www.foosoftware.org/download\n10: ERLANG_FOOBAR_DEPENDENCIES = host-libaaa libbbb\n11:\n12: $(eval $(rebar-package))\n--------------------------------\n\nOn line 7, we declare the version of the package.\n\nOn line 8 and 9, we declare the name of the tarball (xz-ed tarball\nrecommended) and the location of the tarball on the Web. Buildroot\nwill automatically download the tarball from this location.\n\nOn line 10, we declare our dependencies, so that they are built\nbefore the build process of our package starts.\n\nFinally, on line 12, we invoke the +rebar-package+ macro that\ngenerates all the Makefile rules that actually allows the package to\nbe built.\n\n[[rebar-package-reference]]\n\n==== +rebar-package+ reference\n\nThe main macro of the +rebar+ package infrastructure is\n+rebar-package+. It is similar to the +generic-package+ macro. The\nability to have host packages is also available, with the\n+host-rebar-package+ macro.\n\nJust like the generic infrastructure, the +rebar+ infrastructure works\nby defining a number of variables before calling the +rebar-package+\nmacro.\n\nFirst, all the package metadata information variables that exist in\nthe generic infrastructure also exist in the +rebar+ infrastructure:\n+ERLANG_FOOBAR_VERSION+, +ERLANG_FOOBAR_SOURCE+,\n+ERLANG_FOOBAR_PATCH+, +ERLANG_FOOBAR_SITE+,\n+ERLANG_FOOBAR_SUBDIR+, +ERLANG_FOOBAR_DEPENDENCIES+,\n+ERLANG_FOOBAR_INSTALL_STAGING+, +ERLANG_FOOBAR_INSTALL_TARGET+,\n+ERLANG_FOOBAR_LICENSE+ and +ERLANG_FOOBAR_LICENSE_FILES+.\n\nA few additional variables, specific to the +rebar+ infrastructure,\ncan also be defined. Many of them are only useful in very specific\ncases, typical packages will therefore only use a few of them.\n\n* +ERLANG_FOOBAR_USE_AUTOCONF+, to specify that the package uses\n  _autoconf_ at the configuration step.  When a package sets this\n  variable to +YES+, the +autotools+ infrastructure is used.\n+\n.Note\nYou can also use some of the variables from the +autotools+\n  infrastructure: +ERLANG_FOOBAR_CONF_ENV+, +ERLANG_FOOBAR_CONF_OPTS+,\n  +ERLANG_FOOBAR_AUTORECONF+, +ERLANG_FOOBAR_AUTORECONF_ENV+ and\n  +ERLANG_FOOBAR_AUTORECONF_OPTS+.\n\n* +ERLANG_FOOBAR_USE_BUNDLED_REBAR+, to specify that the package has\n  a bundled version of _rebar_ *and* that it shall be used. Valid\n  values are +YES+ or +NO+ (the default).\n+\n.Note\nIf the package bundles a _rebar_ utility, but can use the generic\n  one that Buildroot provides, just say +NO+ (i.e., do not specify\n  this variable). Only set if it is mandatory to use the _rebar_\n  utility bundled in this package.\n\n* +ERLANG_FOOBAR_REBAR_ENV+, to specify additional environment\n  variables to pass to the _rebar_ utility.\n\n* +ERLANG_FOOBAR_KEEP_DEPENDENCIES+, to keep the dependencies\n  described in the rebar.config file. Valid values are +YES+ or +NO+\n  (the default). Unless this variable is set to +YES+, the _rebar_\n  infrastructure removes such dependencies in a post-patch hook to\n  ensure rebar does not download nor compile them.\n\nWith the rebar infrastructure, all the steps required to build\nand install the packages are already defined, and they generally work\nwell for most rebar-based packages. However, when required, it is\nstill possible to customize what is done in any particular step:\n\n* By adding a post-operation hook (after extract, patch, configure,\n  build or install). See xref:hooks[] for details.\n\n* By overriding one of the steps. For example, even if the rebar\n  infrastructure is used, if the package +.mk+ file defines its\n  own +ERLANG_FOOBAR_BUILD_CMDS+ variable, it will be used instead\n  of the default rebar one. However, using this method should be\n  restricted to very specific cases. Do not use it in the general\n  case.\n"
  },
  {
    "path": "docs/manual/adding-packages-tips.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Tips and tricks\n\n[[package-name-variable-relation]]\n==== Package name, config entry name and makefile variable relationship\n\nIn Buildroot, there is some relationship between:\n\n* the _package name_, which is the package directory name (and the\n  name of the +*.mk+ file);\n\n* the config entry name that is declared in the +Config.in+ file;\n\n* the makefile variable prefix.\n\nIt is mandatory to maintain consistency between these elements,\nusing the following rules:\n\n* the package directory and the +*.mk+ name are the _package name_\n  itself (e.g.: +package/foo-bar_boo/foo-bar_boo.mk+);\n\n* the _make_ target name is the _package name_ itself (e.g.:\n  +foo-bar_boo+);\n\n* the config entry is the upper case _package name_ with `.` and `-`\n  characters substituted with `_`, prefixed with +BR2_PACKAGE_+ (e.g.:\n  +BR2_PACKAGE_FOO_BAR_BOO+);\n\n* the +*.mk+ file variable prefix is the upper case _package name_\n  with `.` and `-` characters substituted with `_` (e.g.:\n  +FOO_BAR_BOO_VERSION+).\n\n[[check-package]]\n==== How to check the coding style\n\nBuildroot provides a script in +utils/check-package+ that checks new or\nchanged files for coding style. It is not a complete language validator,\nbut it catches many common mistakes. It is meant to run in the actual\nfiles you created or modified, before creating the patch for submission.\n\nThis script can be used for packages, filesystem makefiles, Config.in\nfiles, etc. It does not check the files defining the package\ninfrastructures and some other files containing similar common code.\n\nTo use it, run the +check-package+ script, by telling which files you\ncreated or changed:\n\n----\n$ ./utils/check-package package/new-package/*\n----\n\nIf you have the +utils+ directory in your path you can also run:\n\n----\n$ cd package/new-package/\n$ check-package *\n----\n\nThe tool can also be used for packages in a br2-external:\n\n----\n$ check-package -b /path/to/br2-ext-tree/package/my-package/*\n----\n\n[[testing-package]]\n==== How to test your package\n\nOnce you have added your new package, it is important that you test it\nunder various conditions: does it build for all architectures? Does it\nbuild with the different C libraries? Does it need threads, NPTL? And\nso on...\n\nBuildroot runs http://autobuild.buildroot.org/[autobuilders] which\ncontinuously test random configurations. However, these only build the\n`master` branch of the git tree, and your new fancy package is not yet\nthere.\n\nBuildroot provides a script in +utils/test-pkg+ that uses the same base\nconfigurations as used by the autobuilders so you can test your package\nin the same conditions.\n\nFirst, create a config snippet that contains all the necessary options\nneeded to enable your package, but without any architecture or toolchain\noption. For example, let's create a config snippet that just enables\n+libcurl+, without any TLS backend:\n\n----\n$ cat libcurl.config\nBR2_PACKAGE_LIBCURL=y\n----\n\nIf your package needs more configuration options, you can add them to the\nconfig snippet. For example, here's how you would test +libcurl+ with\n+openssl+ as a TLS backend and the +curl+ program:\n\n----\n$ cat libcurl.config\nBR2_PACKAGE_LIBCURL=y\nBR2_PACKAGE_LIBCURL_CURL=y\nBR2_PACKAGE_OPENSSL=y\n----\n\nThen run the +test-pkg+ script, by telling it what config snippet to use\nand what package to test:\n\n----\n$ ./utils/test-pkg -c libcurl.config -p libcurl\n----\n\nBy default, +test-pkg+ will build your package against a subset of the\ntoolchains used by the autobuilders, which has been selected by the\nBuildroot developers as being the most useful and representative\nsubset. If you want to test all toolchains, pass the +-a+ option. Note\nthat in any case, internal toolchains are excluded as they take too\nlong to build.\n\nThe output lists all toolchains that are tested and the corresponding\nresult (excerpt, results are fake):\n\n----\n$ ./utils/test-pkg -c libcurl.config -p libcurl\n                armv5-ctng-linux-gnueabi [ 1/11]: OK\n              armv7-ctng-linux-gnueabihf [ 2/11]: OK\n                        br-aarch64-glibc [ 3/11]: SKIPPED\n                           br-arcle-hs38 [ 4/11]: SKIPPED\n                            br-arm-basic [ 5/11]: FAILED\n                  br-arm-cortex-a9-glibc [ 6/11]: OK\n                   br-arm-cortex-a9-musl [ 7/11]: FAILED\n                   br-arm-cortex-m4-full [ 8/11]: OK\n                             br-arm-full [ 9/11]: OK\n                    br-arm-full-nothread [10/11]: FAILED\n                      br-arm-full-static [11/11]: OK\n11 builds, 2 skipped, 2 build failed, 1 legal-info failed\n----\n\nThe results mean:\n\n* `OK`: the build was successful.\n* `SKIPPED`: one or more configuration options listed in the config\n  snippet were not present in the final configuration. This is due to\n  options having dependencies not satisfied by the toolchain, such as\n  for example a package that +depends on BR2_USE_MMU+ with a noMMU\n  toolchain. The missing options are reported in +missing.config+ in\n  the output build directory (+~/br-test-pkg/TOOLCHAIN_NAME/+ by\n  default).\n* `FAILED`: the build failed. Inspect the +logfile+ file in the output\n  build  directory to see what went wrong:\n** the actual build failed,\n** the legal-info failed,\n** one of the preliminary steps (downloading the config file, applying\n   the configuration, running `dirclean` for the package) failed.\n\nWhen there are failures, you can just re-run the script with the same\noptions (after you fixed your package); the script will attempt to\nre-build the package specified with +-p+ for all toolchains, without\nthe need to re-build all the dependencies of that package.\n\nThe +test-pkg+ script accepts a few options, for which you can get some\nhelp by running:\n\n----\n$ ./utils/test-pkg -h\n----\n\n[[github-download-url]]\n==== How to add a package from GitHub\n\nPackages on GitHub often don't have a download area with release tarballs.\nHowever, it is possible to download tarballs directly from the repository\non GitHub. As GitHub is known to have changed download mechanisms in the\npast, the 'github' helper function should be used as shown below.\n\n------------------------\n# Use a tag or a full commit ID\nFOO_VERSION = 1.0\nFOO_SITE = $(call github,<user>,<package>,v$(FOO_VERSION))\n------------------------\n\n.Notes\n- The FOO_VERSION can either be a tag or a commit ID.\n- The tarball name generated by github matches the default one from\n  Buildroot (e.g.: +foo-f6fb6654af62045239caed5950bc6c7971965e60.tar.gz+),\n  so it is not necessary to specify it in the +.mk+ file.\n- When using a commit ID as version, you should use the full 40 hex characters.\n- When the tag contains a prefix such as +v+ in +v1.0+, then the\n  +VERSION+ variable should contain just +1.0+, and the +v+ should be\n  added directly in the +SITE+ variable, as illustrated above. This\n  ensures that the +VERSION+ variable value can be used to match\n  against http://www.release-monitoring.org/[release-monitoring.org]\n  results.\n\nIf the package you wish to add does have a release section on GitHub, the\nmaintainer may have uploaded a release tarball, or the release may just point\nto the automatically generated tarball from the git tag. If there is a\nrelease tarball uploaded by the maintainer, we prefer to use that since it\nmay be slightly different (e.g. it contains a configure script so we don't\nneed to do AUTORECONF).\n\nYou can see on the release page if it's an uploaded tarball or a git tag:\n\nimage::github_hash_mongrel2.png[]\n\n- If it looks like the image above then it was uploaded by the\n  maintainer and you should use that link (in that example:\n  'mongrel2-v1.9.2.tar.bz2') to specify +FOO_SITE+, and not use the\n  'github' helper.\n\n- On the other hand, if there's is *only* the \"Source code\" link, then\n  it's an automatically generated tarball and you should use the\n  'github' helper function.\n\n[[gitlab-download-url]]\n==== How to add a package from Gitlab\n\nIn a similar way to the +github+ macro described in\nxref:github-download-url[], Buildroot also provides the +gitlab+ macro\nto download from Gitlab repositories. It can be used to download\nauto-generated tarballs produced by Gitlab, either for specific tags\nor commits:\n\n------------------------\n# Use a tag or a full commit ID\nFOO_VERSION = 1.0\nFOO_SITE = $(call gitlab,<user>,<package>,v$(FOO_VERSION))\n------------------------\n\nBy default, it will use a +.tar.gz+ tarball, but Gitlab also provides\n+.tar.bz2+ tarballs, so by adding a +<pkg>_SOURCE+ variable, this\n+.tar.bz2+ tarball can be used:\n\n------------------------\n# Use a tag or a full commit ID\nFOO_VERSION = 1.0\nFOO_SITE = $(call gitlab,<user>,<package>,v$(FOO_VERSION))\nFOO_SOURCE = foo-$(FOO_VERSION).tar.bz2\n------------------------\n\nIf there is a specific tarball uploaded by the upstream developers in\n+https://gitlab.com/<project>/releases/+, do not use this macro, but\nrather use directly the link to the tarball.\n"
  },
  {
    "path": "docs/manual/adding-packages-virtual.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for virtual packages\n\n[[virtual-package-tutorial]]\n\nIn Buildroot, a virtual package is a package whose functionalities are\nprovided by one or more packages, referred to as 'providers'. The virtual\npackage management is an extensible mechanism allowing the user to choose\nthe provider used in the rootfs.\n\nFor example, 'OpenGL ES' is an API for 2D and 3D graphics on embedded systems.\nThe implementation of this API is different for the 'Allwinner Tech Sunxi' and\nthe 'Texas Instruments OMAP35xx' platforms. So +libgles+ will be a virtual\npackage and +sunxi-mali+ and +ti-gfx+ will be the providers.\n\n==== +virtual-package+ tutorial\n\nIn the following example, we will explain how to add a new virtual package\n('something-virtual') and a provider for it ('some-provider').\n\nFirst, let's create the virtual package.\n\n==== Virtual package's +Config.in+ file\n\nThe +Config.in+ file of virtual package 'something-virtual' should contain:\n\n---------------------------\n01: config BR2_PACKAGE_HAS_SOMETHING_VIRTUAL\n02:\tbool\n03:\n04: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL\n05:\tdepends on BR2_PACKAGE_HAS_SOMETHING_VIRTUAL\n06:\tstring\n---------------------------\n\nIn this file, we declare two options, +BR2_PACKAGE_HAS_SOMETHING_VIRTUAL+ and\n+BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL+, whose values will be used by the\nproviders.\n\n==== Virtual package's +.mk+ file\n\nThe +.mk+ for the virtual package should just evaluate the +virtual-package+ macro:\n\n---------------------------\n01: ################################################################################\n02: #\n03: # something-virtual\n04: #\n05: ################################################################################\n06:\n07: $(eval $(virtual-package))\n---------------------------\n\nThe ability to have target and host packages is also available, with the\n+host-virtual-package+ macro.\n\n==== Provider's +Config.in+ file\n\nWhen adding a package as a provider, only the +Config.in+ file requires some\nmodifications.\n\nThe +Config.in+ file of the package 'some-provider', which provides the\nfunctionalities of 'something-virtual', should contain:\n\n---------------------------\n01: config BR2_PACKAGE_SOME_PROVIDER\n02:\tbool \"some-provider\"\n03:\tselect BR2_PACKAGE_HAS_SOMETHING_VIRTUAL\n04:\thelp\n05:\t  This is a comment that explains what some-provider is.\n06:\n07:\t  http://foosoftware.org/some-provider/\n08:\n09: if BR2_PACKAGE_SOME_PROVIDER\n10: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL\n11:\tdefault \"some-provider\"\n12: endif\n---------------------------\n\nOn line 3, we select +BR2_PACKAGE_HAS_SOMETHING_VIRTUAL+, and on line 11, we\nset the value of +BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL+ to the name of the\nprovider, but only if it is selected.\n\n==== Provider's +.mk+ file\n\nThe +.mk+ file should also declare an additional variable\n+SOME_PROVIDER_PROVIDES+ to contain the names of all the virtual\npackages it is an implementation of:\n\n---------------------------\n01: SOME_PROVIDER_PROVIDES = something-virtual\n---------------------------\n\nOf course, do not forget to add the proper build and runtime dependencies for\nthis package!\n\n==== Notes on depending on a virtual package\n\nWhen adding a package that requires a certain +FEATURE+ provided by a virtual\npackage, you have to use +depends on BR2_PACKAGE_HAS_FEATURE+, like so:\n\n---------------------------\nconfig BR2_PACKAGE_HAS_FEATURE\n    bool\n\nconfig BR2_PACKAGE_FOO\n    bool \"foo\"\n    depends on BR2_PACKAGE_HAS_FEATURE\n---------------------------\n\n==== Notes on depending on a specific provider\n\nIf your package really requires a specific provider, then you'll have to\nmake your package +depends on+ this provider; you can _not_ +select+ a\nprovider.\n\nLet's take an example with two providers for a +FEATURE+:\n\n---------------------------\nconfig BR2_PACKAGE_HAS_FEATURE\n    bool\n\nconfig BR2_PACKAGE_FOO\n    bool \"foo\"\n    select BR2_PACKAGE_HAS_FEATURE\n\nconfig BR2_PACKAGE_BAR\n    bool \"bar\"\n    select BR2_PACKAGE_HAS_FEATURE\n---------------------------\n\nAnd you are adding a package that needs +FEATURE+ as provided by +foo+,\nbut not as provided by +bar+.\n\nIf you were to use +select BR2_PACKAGE_FOO+, then the user would still\nbe able to select +BR2_PACKAGE_BAR+ in the menuconfig. This would create\na configuration inconsistency, whereby two providers of the same +FEATURE+\nwould be enabled at once, one explicitly set by the user, the other\nimplicitly by your +select+.\n\nInstead, you have to use +depends on BR2_PACKAGE_FOO+, which avoids any\nimplicit configuration inconsistency.\n"
  },
  {
    "path": "docs/manual/adding-packages-waf.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Infrastructure for Waf-based packages\n\n[[waf-package-tutorial]]\n\n==== +waf-package+ tutorial\n\nFirst, let's see how to write a +.mk+ file for a Waf-based package, with\nan example :\n\n------------------------\n01: ################################################################################\n02: #\n03: # libfoo\n04: #\n05: ################################################################################\n06:\n07: LIBFOO_VERSION = 1.0\n08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz\n09: LIBFOO_SITE = http://www.foosoftware.org/download\n10: LIBFOO_CONF_OPTS = --enable-bar --disable-baz\n11: LIBFOO_DEPENDENCIES = bar\n12:\n13: $(eval $(waf-package))\n------------------------\n\nOn line 7, we declare the version of the package.\n\nOn line 8 and 9, we declare the name of the tarball (xz-ed tarball\nrecommended) and the location of the tarball on the Web. Buildroot\nwill automatically download the tarball from this location.\n\nOn line 10, we tell Buildroot what options to enable for libfoo.\n\nOn line 11, we tell Buildroot the dependencies of libfoo.\n\nFinally, on line line 13, we invoke the +waf-package+\nmacro that generates all the Makefile rules that actually allows the\npackage to be built.\n\n[[waf-package-reference]]\n\n==== +waf-package+ reference\n\nThe main macro of the Waf package infrastructure is +waf-package+.\nIt is similar to the +generic-package+ macro.\n\nJust like the generic infrastructure, the Waf infrastructure works\nby defining a number of variables before calling the +waf-package+\nmacro.\n\nFirst, all the package metadata information variables that exist in\nthe generic infrastructure also exist in the Waf infrastructure:\n+LIBFOO_VERSION+, +LIBFOO_SOURCE+, +LIBFOO_PATCH+, +LIBFOO_SITE+,\n+LIBFOO_SUBDIR+, +LIBFOO_DEPENDENCIES+, +LIBFOO_INSTALL_STAGING+,\n+LIBFOO_INSTALL_TARGET+.\n\nAn additional variable, specific to the Waf infrastructure, can\nalso be defined.\n\n* +LIBFOO_SUBDIR+ may contain the name of a subdirectory inside the\n  package that contains the main wscript file. This is useful,\n  if for example, the main wscript file is not at the root of\n  the tree extracted by the tarball. If +HOST_LIBFOO_SUBDIR+ is not\n  specified, it defaults to +LIBFOO_SUBDIR+.\n\n* +LIBFOO_NEEDS_EXTERNAL_WAF+ can be set to +YES+ or +NO+ to tell\n  Buildroot to use the bundled +waf+ executable. If set to +NO+, the\n  default, then Buildroot will use the waf executable provided in the\n  package source tree; if set to +YES+, then Buildroot will download,\n  install waf as a host tool and use it to build the package.\n\n* +LIBFOO_WAF_OPTS+, to specify additional options to pass to the\n  +waf+ script at every step of the package build process: configure,\n  build and installation. By default, empty.\n\n* +LIBFOO_CONF_OPTS+, to specify additional options to pass to the\n  +waf+ script for the configuration step. By default, empty.\n\n* +LIBFOO_BUILD_OPTS+, to specify additional options to pass to the\n  +waf+ script during the build step. By default, empty.\n\n* +LIBFOO_INSTALL_STAGING_OPTS+, to specify additional options to pass\n  to the +waf+ script during the staging installation step.  By default,\n  empty.\n\n* +LIBFOO_INSTALL_TARGET_OPTS+, to specify additional options to pass\n  to the +waf+ script during the target installation step.  By default,\n  empty.\n"
  },
  {
    "path": "docs/manual/adding-packages.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[adding-packages]]\n== Adding new packages to Buildroot\n\nThis section covers how new packages (userspace libraries or\napplications) can be integrated into Buildroot. It also shows how\nexisting packages are integrated, which is needed for fixing issues or\ntuning their configuration.\n\nWhen you add a new package, be sure to test it in various conditions\n(see xref:testing-package[]) and also check it for coding style (see\nxref:check-package[]).\n\ninclude::adding-packages-directory.txt[]\n\ninclude::adding-packages-generic.txt[]\n\ninclude::adding-packages-autotools.txt[]\n\ninclude::adding-packages-cmake.txt[]\n\ninclude::adding-packages-python.txt[]\n\ninclude::adding-packages-luarocks.txt[]\n\ninclude::adding-packages-perl.txt[]\n\ninclude::adding-packages-virtual.txt[]\n\ninclude::adding-packages-kconfig.txt[]\n\ninclude::adding-packages-rebar.txt[]\n\ninclude::adding-packages-waf.txt[]\n\ninclude::adding-packages-meson.txt[]\n\ninclude::adding-packages-cargo.txt[]\n\ninclude::adding-packages-golang.txt[]\n\ninclude::adding-packages-qmake.txt[]\n\ninclude::adding-packages-kernel-module.txt[]\n\ninclude::adding-packages-asciidoc.txt[]\n\ninclude::adding-packages-linux-kernel-spec-infra.txt[]\n\ninclude::adding-packages-hooks.txt[]\n\ninclude::adding-packages-gettext.txt[]\n\ninclude::adding-packages-tips.txt[]\n\ninclude::adding-packages-conclusion.txt[]\n"
  },
  {
    "path": "docs/manual/advanced.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Advanced usage\n\ninclude::using-buildroot-toolchain.txt[]\n\ninclude::using-buildroot-debugger.txt[]\n\ninclude::ccache-support.txt[]\n\ninclude::download-location.txt[]\n\ninclude::package-make-target.txt[]\n\ninclude::using-buildroot-development.txt[]\n"
  },
  {
    "path": "docs/manual/appendix.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\ninclude::makedev-syntax.txt[]\ninclude::makeusers-syntax.txt[]\ninclude::migrating.txt[]\n"
  },
  {
    "path": "docs/manual/beyond-buildroot.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n== Beyond Buildroot\n\n=== Boot the generated images\n\n==== NFS boot\n\nTo achieve NFS-boot, enable _tar root filesystem_ in the _Filesystem\nimages_ menu.\n\nAfter a complete build, just run the following commands to setup the\nNFS-root directory:\n\n-------------------\nsudo tar -xavf /path/to/output_dir/rootfs.tar -C /path/to/nfs_root_dir\n-------------------\n\nRemember to add this path to +/etc/exports+.\n\nThen, you can execute a NFS-boot from your target.\n\n==== Live CD\n\nTo build a live CD image, enable the _iso image_ option in the\n_Filesystem images_ menu. Note that this option is only available on\nthe x86 and x86-64 architectures, and if you are building your kernel\nwith Buildroot.\n\nYou can build a live CD image with either IsoLinux, Grub or Grub 2 as\na bootloader, but only Isolinux supports making this image usable both\nas a live CD and live USB (through the _Build hybrid image_ option).\n\nYou can test your live CD image using QEMU:\n\n-------------------\nqemu-system-i386 -cdrom output/images/rootfs.iso9660\n-------------------\n\nOr use it as a hard-drive image if it is a hybrid ISO:\n\n-------------------\nqemu-system-i386 -hda output/images/rootfs.iso9660\n-------------------\n\nIt can be easily flashed to a USB drive with +dd+:\n\n-------------------\ndd if=output/images/rootfs.iso9660 of=/dev/sdb\n-------------------\n\n=== Chroot\n\nIf you want to chroot in a generated image, then there are few thing\nyou should be aware of:\n\n* you should setup the new root from the _tar root filesystem_ image;\n\n* either the selected target architecture is compatible with your host\n  machine, or you should use some +qemu-*+ binary and correctly set it\n  within the +binfmt+ properties to be able to run the binaries built\n  for the target on your host machine;\n\n* Buildroot does not currently provide +host-qemu+ and +binfmt+\n  correctly built and set for that kind of use.\n"
  },
  {
    "path": "docs/manual/ccache-support.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[ccache]]\n==== Using +ccache+ in Buildroot\n\nhttp://ccache.samba.org[ccache] is a compiler cache. It stores the\nobject files resulting from each compilation process, and is able to\nskip future compilation of the same source file (with same compiler\nand same arguments) by using the pre-existing object files. When doing\nalmost identical builds from scratch a number of times, it can nicely\nspeed up the build process.\n\n+ccache+ support is integrated in Buildroot. You just have to enable\n+Enable compiler cache+ in +Build options+. This will automatically\nbuild +ccache+ and use it for every host and target compilation.\n\nThe cache is located in +$HOME/.buildroot-ccache+. It is stored\noutside of Buildroot output directory so that it can be shared by\nseparate Buildroot builds. If you want to get rid of the cache, simply\nremove this directory.\n\nYou can get statistics on the cache (its size, number of hits,\nmisses, etc.) by running +make ccache-stats+.\n\nThe make target +ccache-options+ and the +CCACHE_OPTIONS+ variable\nprovide more generic access to the ccache. For example\n\n-----------------\n# set cache limit size\nmake CCACHE_OPTIONS=\"--max-size=5G\" ccache-options\n\n# zero statistics counters\nmake CCACHE_OPTIONS=\"--zero-stats\" ccache-options\n-----------------\n\n+ccache+ makes a hash of the source files and of the compiler options.\nIf a compiler option is different, the cached object file will not be\nused. Many compiler options, however, contain an absolute path to the\nstaging directory. Because of this, building in a different output\ndirectory would lead to many cache misses.\n\nTo avoid this issue, buildroot has the +Use relative paths+ option\n(+BR2_CCACHE_USE_BASEDIR+). This will rewrite all absolute paths that\npoint inside the output directory into relative paths. Thus, changing\nthe output directory no longer leads to cache misses.\n\nA disadvantage of the relative paths is that they also end up to be\nrelative paths in the object file. Therefore, for example, the debugger\nwill no longer find the file, unless you cd to the output directory\nfirst.\n\nSee https://ccache.samba.org/manual.html#_compiling_in_different_directories[the\nccache manual's section on \"Compiling in different directories\"] for\nmore details about this rewriting of absolute paths.\n"
  },
  {
    "path": "docs/manual/common-usage.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n== General Buildroot usage\n\ninclude::make-tips.txt[]\n\ninclude::rebuilding-packages.txt[]\n\n=== Offline builds\n\nIf you intend to do an offline build and just want to download\nall sources that you previously selected in the configurator\n('menuconfig', 'nconfig', 'xconfig' or 'gconfig'), then issue:\n\n--------------------\n $ make source\n--------------------\n\nYou can now disconnect or copy the content of your +dl+\ndirectory to the build-host.\n\n=== Building out-of-tree\n\nAs default, everything built by Buildroot is stored in the directory\n+output+ in the Buildroot tree.\n\nBuildroot also supports building out of tree with a syntax similar to\nthe Linux kernel. To use it, add +O=<directory>+ to the make command\nline:\n\n--------------------\n $ make O=/tmp/build\n--------------------\n\nOr:\n\n--------------------\n $ cd /tmp/build; make O=$PWD -C path/to/buildroot\n--------------------\n\nAll the output files will be located under +/tmp/build+. If the +O+\npath does not exist, Buildroot will create it.\n\n*Note:* the +O+ path can be either an absolute or a relative path, but if it's\npassed as a relative path, it is important to note that it is interpreted\nrelative to the main Buildroot source directory, *not* the current working\ndirectory.\n\nWhen using out-of-tree builds, the Buildroot +.config+ and temporary\nfiles are also stored in the output directory. This means that you can\nsafely run multiple builds in parallel using the same source tree as\nlong as they use unique output directories.\n\nFor ease of use, Buildroot generates a Makefile wrapper in the output\ndirectory - so after the first run, you no longer need to pass +O=<...>+\nand +-C <...>+, simply run (in the output directory):\n\n--------------------\n $ make <target>\n--------------------\n\n[[env-vars]]\n\n=== Environment variables\n\nBuildroot also honors some environment variables, when they are passed\nto +make+ or set in the environment:\n\n* +HOSTCXX+, the host C++ compiler to use\n* +HOSTCC+, the host C compiler to use\n* +UCLIBC_CONFIG_FILE=<path/to/.config>+, path to\n  the uClibc configuration file, used to compile uClibc, if an\n  internal toolchain is being built.\n  +\n  Note that the uClibc configuration file can also be set from the\n  configuration interface, so through the Buildroot +.config+ file; this\n  is the recommended way of setting it.\n  +\n* +BUSYBOX_CONFIG_FILE=<path/to/.config>+, path to\n  the BusyBox configuration file.\n  +\n  Note that the BusyBox configuration file can also be set from the\n  configuration interface, so through the Buildroot +.config+ file; this\n  is the recommended way of setting it.\n  +\n* +BR2_CCACHE_DIR+ to override the directory where\n  Buildroot stores the cached files when using ccache.\n  +\n* +BR2_DL_DIR+ to override the directory in which\n  Buildroot stores/retrieves downloaded files.\n  +\n  Note that the Buildroot download directory can also be set from the\n  configuration interface, so through the Buildroot +.config+ file. See\n  xref:download-location[] for more details on how you can set the download\n  directory.\n* +BR2_GRAPH_ALT+, if set and non-empty, to use an alternate color-scheme in\n  build-time graphs\n* +BR2_GRAPH_OUT+ to set the filetype of generated graphs, either +pdf+ (the\n  default), or +png+.\n* +BR2_GRAPH_DEPS_OPTS+ to pass extra options to the dependency graph; see\n  xref:graph-depends[] for the accepted options\n* +BR2_GRAPH_DOT_OPTS+ is passed verbatim as options to the +dot+ utility to\n  draw the dependency graph.\n* +BR2_GRAPH_SIZE_OPTS+ to pass extra options to the size graph; see\n  xref:graph-size[] for the acepted options\n\nAn example that uses config files located in the toplevel directory and\nin your $HOME:\n\n--------------------\n $ make UCLIBC_CONFIG_FILE=uClibc.config BUSYBOX_CONFIG_FILE=$HOME/bb.config\n--------------------\n\nIf you want to use a compiler other than the default +gcc+\nor +g+++ for building helper-binaries on your host, then do\n\n--------------------\n $ make HOSTCXX=g++-4.3-HEAD HOSTCC=gcc-4.3-HEAD\n--------------------\n\n=== Dealing efficiently with filesystem images\n\nFilesystem images can get pretty big, depending on the filesystem you choose,\nthe number of packages, whether you provisioned free space... Yet, some\nlocations in the filesystems images may just be _empty_ (e.g. a long run of\n'zeroes'); such a file is called a _sparse_ file.\n\nMost tools can handle sparse files efficiently, and will only store or write\nthose parts of a sparse file that are not empty.\n\nFor example:\n\n* +tar+ accepts the +-S+ option to tell it to only store non-zero blocks\n  of sparse files:\n** +tar cf archive.tar -S [files...]+ will efficiently store sparse files\n   in a tarball\n** +tar xf archive.tar -S+ will efficiently store sparse files extracted\n   from a tarball\n\n* +cp+ accepts the +--sparse=WHEN+ option (+WHEN+ is one of +auto+,\n  +never+ or +always+):\n** +cp --sparse=always source.file dest.file+ will make +dest.file+ a\n   sparse file if +source.file+ has long runs of zeroes\n\nOther tools may have similar options. Please consult their respective man\npages.\n\nYou can use sparse files if you need to store the filesystem images (e.g.\nto transfer from one machine to another), or if you need to send them (e.g.\nto the Q&A team).\n\nNote however that flashing a filesystem image to a device while using the\nsparse mode of +dd+ may result in a broken filesystem (e.g. the block bitmap\nof an ext2 filesystem may be corrupted; or, if you have sparse files in\nyour filesystem, those parts may not be all-zeroes when read back). You\nshould only use sparse files when handling files on the build machine, not\nwhen transferring them to an actual device that will be used on the target.\n\n=== Details about packages\n\n[[package-details]]\n\nBuildroot can produce a JSON blurb that describes the set of enabled\npackages in the current configuration, together with their\ndependencies, licenses and other metadata. This JSON blurb is produced\nby using the +show-info+ make target:\n\n------------------------\nmake show-info\n------------------------\n\nBuildroot can also produce details about packages as HTML and JSON\noutput using the +pkg-stats+ make target. Amongst other things, these\ndetails include whether known CVEs (security vulnerabilities) affect\nthe packages in your current configuration. It also shows if there is\na newer upstream version for those packages.\n\n------------------------\nmake pkg-stats\n------------------------\n\n=== Graphing the dependencies between packages\n\n[[graph-depends]]\n\nOne of Buildroot's jobs is to know the dependencies between packages,\nand make sure they are built in the right order. These dependencies\ncan sometimes be quite complicated, and for a given system, it is\noften not easy to understand why such or such package was brought into\nthe build by Buildroot.\n\nIn order to help understanding the dependencies, and therefore better\nunderstand what is the role of the different components in your\nembedded Linux system, Buildroot is capable of generating dependency\ngraphs.\n\nTo generate a dependency graph of the full system you have compiled,\nsimply run:\n\n------------------------\nmake graph-depends\n------------------------\n\nYou will find the generated graph in\n+output/graphs/graph-depends.pdf+.\n\nIf your system is quite large, the dependency graph may be too complex\nand difficult to read. It is therefore possible to generate the\ndependency graph just for a given package:\n\n------------------------\nmake <pkg>-graph-depends\n------------------------\n\nYou will find the generated graph in\n+output/graph/<pkg>-graph-depends.pdf+.\n\nNote that the dependency graphs are generated using the +dot+ tool\nfrom the _Graphviz_ project, which you must have installed on your\nsystem to use this feature. In most distributions, it is available as\nthe +graphviz+ package.\n\nBy default, the dependency graphs are generated in the PDF\nformat. However, by passing the +BR2_GRAPH_OUT+ environment variable, you\ncan switch to other output formats, such as PNG, PostScript or\nSVG. All formats supported by the +-T+ option of the +dot+ tool are\nsupported.\n\n--------------------------------\nBR2_GRAPH_OUT=svg make graph-depends\n--------------------------------\n\nThe +graph-depends+ behaviour can be controlled by setting options in the\n+BR2_GRAPH_DEPS_OPTS+ environment variable. The accepted options are:\n\n* +--depth N+, +-d N+, to limit the dependency depth to +N+ levels. The\n  default, +0+, means no limit.\n\n* +--stop-on PKG+, +-s PKG+, to stop the graph on the package +PKG+.\n  +PKG+ can be an actual package name, a glob, the keyword 'virtual'\n  (to stop on virtual packages), or the keyword 'host' (to stop on\n  host packages). The package is still present on the graph, but its\n  dependencies are not.\n\n* +--exclude PKG+, +-x PKG+, like +--stop-on+, but also omits +PKG+ from\n  the graph.\n\n* +--transitive+, +--no-transitive+, to draw (or not) the transitive\n  dependencies. The default is to not draw transitive dependencies.\n\n* +--colors R,T,H+, the comma-separated list of colors to draw the\n  root package (+R+), the target packages (+T+) and the host packages\n  (+H+). Defaults to: +lightblue,grey,gainsboro+\n\n--------------------------------\nBR2_GRAPH_DEPS_OPTS='-d 3 --no-transitive --colors=red,green,blue' make graph-depends\n--------------------------------\n\n=== Graphing the build duration\n\n[[graph-duration]]\n\nWhen the build of a system takes a long time, it is sometimes useful\nto be able to understand which packages are the longest to build, to\nsee if anything can be done to speed up the build. In order to help\nsuch build time analysis, Buildroot collects the build time of each\nstep of each package, and allows to generate graphs from this data.\n\nTo generate the build time graph after a build, run:\n\n----------------\nmake graph-build\n----------------\n\nThis will generate a set of files in +output/graphs+ :\n\n* +build.hist-build.pdf+, a histogram of the build time for each\n  package, ordered in the build order.\n\n* +build.hist-duration.pdf+, a histogram of the build time for each\n  package, ordered by duration (longest first)\n\n* +build.hist-name.pdf+, a histogram of the build time for each\n  package, order by package name.\n\n* +build.pie-packages.pdf+, a pie chart of the build time per package\n\n* +build.pie-steps.pdf+, a pie chart of the global time spent in each\n  step of the packages build process.\n\nThis +graph-build+ target requires the Python Matplotlib and Numpy\nlibraries to be installed (+python-matplotlib+ and +python-numpy+ on\nmost distributions), and also the +argparse+ module if you're using a\nPython version older than 2.7 (+python-argparse+ on most\ndistributions).\n\nBy default, the output format for the graph is PDF, but a different\nformat can be selected using the +BR2_GRAPH_OUT+ environment variable. The\nonly other format supported is PNG:\n\n----------------\nBR2_GRAPH_OUT=png make graph-build\n----------------\n\n[[graph-size]]\n=== Graphing the filesystem size contribution of packages\n\nWhen your target system grows, it is sometimes useful to understand\nhow much each Buildroot package is contributing to the overall root\nfilesystem size. To help with such an analysis, Buildroot collects\ndata about files installed by each package and using this data,\ngenerates a graph and CSV files detailing the size contribution of\nthe different packages.\n\nTo generate these data after a build, run:\n\n----------------\nmake graph-size\n----------------\n\nThis will generate:\n\n* +output/graphs/graph-size.pdf+, a pie chart of the contribution of\n  each package to the overall root filesystem size\n\n* +output/graphs/package-size-stats.csv+, a CSV file giving the size\n  contribution of each package to the overall root filesystem size\n\n* +output/graphs/file-size-stats.csv+, a CSV file giving the size\n  contribution of each installed file to the package it belongs, and\n  to the overall filesystem size.\n\nThis +graph-size+ target requires the Python Matplotlib library to be\ninstalled (+python-matplotlib+ on most distributions), and also the\n+argparse+ module if you're using a Python version older than 2.7\n(+python-argparse+ on most distributions).\n\nJust like for the duration graph, a +BR2_GRAPH_OUT+ environment variable\nis supported to adjust the output file format. See xref:graph-depends[]\nfor details about this environment variable.\n\nAdditionally, one may set the environment variable +BR2_GRAPH_SIZE_OPTS+\nto further control the generated graph. Accepted options are:\n\n* `--size-limit X`, `-l X`, will group all packages which individual\n  contribution is below `X` percent, to a single entry labelled _Others_\n  in the graph. By default, `X=0.01`, which means packages each\n  contributing less than 1% are grouped under _Others_. Accepted values\n  are in the range `[0.0..1.0]`.\n\n* `--iec`, `--binary`, `--si`, `--decimal`, to use IEC (binary, powers\n  of 1024) or SI (decimal, powers of 1000; the default) prefixes.\n\n* `--biggest-first`, to sort packages in decreasing size order, rather\n  than in increasing size order.\n\n.Note\nThe collected filesystem size data is only meaningful after a complete\nclean rebuild. Be sure to run +make clean all+ before using +make\ngraph-size+.\n\nTo compare the root filesystem size of two different Buildroot compilations,\nfor example after adjusting the configuration or when switching to another\nBuildroot release, use the +size-stats-compare+ script. It takes two\n+file-size-stats.csv+ files (produced by +make graph-size+) as input.\nRefer to the help text of this script for more details:\n\n----------------\nutils/size-stats-compare -h\n----------------\n\n[[top-level-parallel-build]]\n=== Top-level parallel build\n\n.Note\nThis section deals with a very experimental feature, which is known to\nbreak even in some non-unusual situations. Use at your own risk.\n\nBuildroot has always been capable of using parallel build on a per\npackage basis: each package is built by Buildroot using +make -jN+ (or\nthe equivalent invocation for non-make-based build systems). The level\nof parallelism is by default number of CPUs + 1, but it can be\nadjusted using the +BR2_JLEVEL+ configuration option.\n\nUntil 2020.02, Buildroot was however building packages in a serial\nfashion: each package was built one after the other, without\nparallelization of the build between packages. As of 2020.02,\nBuildroot has experimental support for *top-level parallel build*,\nwhich allows some signicant build time savings by building packages\nthat have no dependency relationship in parallel. This feature is\nhowever marked as experimental and is known not to work in some cases.\n\nIn order to use top-level parallel build, one must:\n\n. Enable the option +BR2_PER_PACKAGE_DIRECTORIES+ in the Buildroot\nconfiguration\n\n. Use +make -jN+ when starting the Buildroot build\n\nInternally, the +BR2_PER_PACKAGE_DIRECTORIES+ will enable a mechanism\ncalled *per-package directories*, which will have the following\neffects:\n\n* Instead of a global _target_ directory and a global _host_ directory\n  common to all packages, per-package _target_ and _host_ directories\n  will be used, in +$(O)/per-package/<pkg>/target/+ and\n  +$(O)/per-package/<pkg>/host/+ respectively. Those folders will be\n  populated from the corresponding folders of the package dependencies\n  at the beginning of +<pkg>+ build. The compiler and all other tools\n  will therefore only be able to see and access files installed by\n  dependencies explicitly listed by +<pkg>+.\n\n* At the end of the build, the global _target_ and _host_ directories\n  will be populated, located in +$(O)/target+ and +$(O)/host+\n  respectively. This means that during the build, those folders will\n  be empty and it's only at the very end of the build that they will\n  be populated.\n\ninclude::eclipse-integration.txt[]\n\ninclude::advanced.txt[]\n"
  },
  {
    "path": "docs/manual/configure-other-components.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n== Configuration of other components\n\nBefore attempting to modify any of the components below, make sure you\nhave already configured Buildroot itself, and have enabled the\ncorresponding package.\n\nBusyBox::\n+\nIf you already have a BusyBox configuration file, you can directly\nspecify this file in the Buildroot configuration, using\n+BR2_PACKAGE_BUSYBOX_CONFIG+. Otherwise, Buildroot will start from a\ndefault BusyBox configuration file.\n+\nTo make subsequent changes to the configuration, use +make\nbusybox-menuconfig+ to open the BusyBox configuration editor.\n+\nIt is also possible to specify a BusyBox configuration file through an\nenvironment variable, although this is not recommended. Refer to\nxref:env-vars[] for more details.\n\nuClibc::\n+\nConfiguration of uClibc is done in the same way as for BusyBox. The\nconfiguration variable to specify an existing configuration file is\n+BR2_UCLIBC_CONFIG+. The command to make subsequent changes is +make\nuclibc-menuconfig+.\n\nLinux kernel::\n+\nIf you already have a kernel configuration file, you can directly\nspecify this file in the Buildroot configuration, using\n+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG+.\n+\nIf you do not yet have a kernel configuration file, you can either start\nby specifying a defconfig in the Buildroot configuration, using\n+BR2_LINUX_KERNEL_USE_DEFCONFIG+, or start by creating an empty file and\nspecifying it as custom configuration file, using\n+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG+.\n+\nTo make subsequent changes to the configuration, use +make\nlinux-menuconfig+ to open the Linux configuration editor.\n\nBarebox::\n+\nConfiguration of Barebox is done in the same way as for the Linux\nkernel. The corresponding configuration variables are\n+BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG+ and\n+BR2_TARGET_BAREBOX_USE_DEFCONFIG+. To open the configuration editor,\nuse +make barebox-menuconfig+.\n\nU-Boot::\n+\nConfiguration of U-Boot (version 2015.04 or newer) is done in the same\nway as for the Linux kernel. The corresponding configuration variables\nare +BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG+ and\n+BR2_TARGET_UBOOT_USE_DEFCONFIG+. To open the configuration editor,\nuse +make uboot-menuconfig+.\n"
  },
  {
    "path": "docs/manual/configure.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[configure]]\n== Buildroot configuration\n\nAll the configuration options in +make *config+ have a help text\nproviding details about the option.\n\nThe +make *config+ commands also offer a search tool. Read the help\nmessage in the different frontend menus to know how to use it:\n\n* in _menuconfig_, the search tool is called by pressing +/+;\n* in _xconfig_, the search tool is called by pressing +Ctrl+ + +f+.\n\nThe result of the search shows the help message of the matching items.\nIn _menuconfig_, numbers in the left column provide a shortcut to the\ncorresponding entry. Just type this number to directly jump to the\nentry, or to the containing menu in case the entry is not selectable due\nto a missing dependency.\n\nAlthough the menu structure and the help text of the entries should be\nsufficiently self-explanatory, a number of topics require additional\nexplanation that cannot easily be covered in the help text and are\ntherefore covered in the following sections.\n\n=== Cross-compilation toolchain\n\nA compilation toolchain is the set of tools that allows you to compile\ncode for your system. It consists of a compiler (in our case, +gcc+),\nbinary utils like assembler and linker (in our case, +binutils+) and a\nC standard library (for example\nhttp://www.gnu.org/software/libc/libc.html[GNU Libc],\nhttp://www.uclibc-ng.org/[uClibc-ng]).\n\nThe system installed on your development station certainly already has\na compilation toolchain that you can use to compile an application\nthat runs on your system. If you're using a PC, your compilation\ntoolchain runs on an x86 processor and generates code for an x86\nprocessor. Under most Linux systems, the compilation toolchain uses\nthe GNU libc (glibc) as the C standard library. This compilation\ntoolchain is called the \"host compilation toolchain\". The machine on\nwhich it is running, and on which you're working, is called the \"host\nsystem\" footnote:[This terminology differs from what is used by GNU\nconfigure, where the host is the machine on which the application will\nrun (which is usually the same as target)].\n\nThe compilation toolchain is provided by your distribution, and\nBuildroot has nothing to do with it (other than using it to build a\ncross-compilation toolchain and other tools that are run on the\ndevelopment host).\n\nAs said above, the compilation toolchain that comes with your system\nruns on and generates code for the processor in your host system. As\nyour embedded system has a different processor, you need a\ncross-compilation toolchain - a compilation toolchain that runs on\nyour _host system_ but generates code for your _target system_ (and\ntarget processor). For example, if your host system uses x86 and your\ntarget system uses ARM, the regular compilation toolchain on your host\nruns on x86 and generates code for x86, while the cross-compilation\ntoolchain runs on x86 and generates code for ARM.\n\nBuildroot provides two solutions for the cross-compilation toolchain:\n\n * The *internal toolchain backend*, called +Buildroot toolchain+ in\n   the configuration interface.\n\n * The *external toolchain backend*, called +External toolchain+ in\n   the configuration interface.\n\nThe choice between these two solutions is done using the +Toolchain\nType+ option in the +Toolchain+ menu. Once one solution has been\nchosen, a number of configuration options appear, they are detailed in\nthe following sections.\n\n[[internal-toolchain-backend]]\n==== Internal toolchain backend\n\nThe _internal toolchain backend_ is the backend where Buildroot builds\nby itself a cross-compilation toolchain, before building the userspace\napplications and libraries for your target embedded system.\n\nThis backend supports several C libraries:\nhttp://www.uclibc-ng.org[uClibc-ng],\nhttp://www.gnu.org/software/libc/libc.html[glibc] and\nhttp://www.musl-libc.org[musl].\n\nOnce you have selected this backend, a number of options appear. The\nmost important ones allow to:\n\n * Change the version of the Linux kernel headers used to build the\n   toolchain. This item deserves a few explanations. In the process of\n   building a cross-compilation toolchain, the C library is being\n   built. This library provides the interface between userspace\n   applications and the Linux kernel. In order to know how to \"talk\"\n   to the Linux kernel, the C library needs to have access to the\n   _Linux kernel headers_ (i.e. the +.h+ files from the kernel), which\n   define the interface between userspace and the kernel (system\n   calls, data structures, etc.). Since this interface is backward\n   compatible, the version of the Linux kernel headers used to build\n   your toolchain do not need to match _exactly_ the version of the\n   Linux kernel you intend to run on your embedded system. They only\n   need to have a version equal or older to the version of the Linux\n   kernel you intend to run. If you use kernel headers that are more\n   recent than the Linux kernel you run on your embedded system, then\n   the C library might be using interfaces that are not provided by\n   your Linux kernel.\n\n * Change the version of the GCC compiler, binutils and the C library.\n\n * Select a number of toolchain options (uClibc only): whether the\n   toolchain should have RPC support (used mainly for NFS),\n   wide-char support, locale support (for internationalization),\n   C++ support or thread support. Depending on which options you choose,\n   the number of userspace applications and libraries visible in\n   Buildroot menus will change: many applications and libraries require\n   certain toolchain options to be enabled. Most packages show a comment\n   when a certain toolchain option is required to be able to enable\n   those packages. If needed, you can further refine the uClibc\n   configuration by running +make uclibc-menuconfig+. Note however that\n   all packages in Buildroot are tested against the default uClibc\n   configuration bundled in Buildroot: if you deviate from this\n   configuration by removing features from uClibc, some packages may no\n   longer build.\n\nIt is worth noting that whenever one of those options is modified,\nthen the entire toolchain and system must be rebuilt. See\nxref:full-rebuild[].\n\nAdvantages of this backend:\n\n* Well integrated with Buildroot\n* Fast, only builds what's necessary\n\nDrawbacks of this backend:\n\n* Rebuilding the toolchain is needed when doing +make clean+, which\n  takes time. If you're trying to reduce your build time, consider\n  using the _External toolchain backend_.\n\n[[external-toolchain-backend]]\n==== External toolchain backend\n\nThe _external toolchain backend_ allows to use existing pre-built\ncross-compilation toolchains. Buildroot knows about a number of\nwell-known cross-compilation toolchains (from\nhttp://www.linaro.org[Linaro] for ARM,\nhttp://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/[Sourcery\nCodeBench] for ARM, x86-64, PowerPC, and MIPS, and is capable of\ndownloading them automatically, or it can be pointed to a custom\ntoolchain, either available for download or installed locally.\n\nThen, you have three solutions to use an external toolchain:\n\n* Use a predefined external toolchain profile, and let Buildroot\n  download, extract and install the toolchain. Buildroot already knows\n  about a few CodeSourcery and Linaro toolchains. Just select the\n  toolchain profile in +Toolchain+ from the available ones. This is\n  definitely the easiest solution.\n\n* Use a predefined external toolchain profile, but instead of having\n  Buildroot download and extract the toolchain, you can tell Buildroot\n  where your toolchain is already installed on your system. Just\n  select the toolchain profile in +Toolchain+ through the available\n  ones, unselect +Download toolchain automatically+, and fill the\n  +Toolchain path+ text entry with the path to your cross-compiling\n  toolchain.\n\n* Use a completely custom external toolchain. This is particularly\n  useful for toolchains generated using crosstool-NG or with Buildroot\n  itself. To do this, select the +Custom toolchain+ solution in the\n  +Toolchain+ list. You need to fill the +Toolchain path+, +Toolchain\n  prefix+ and +External toolchain C library+ options. Then, you have\n  to tell Buildroot what your external toolchain supports. If your\n  external toolchain uses the 'glibc' library, you only have to tell\n  whether your toolchain supports C\\++ or not and whether it has\n  built-in RPC support. If your external toolchain uses the 'uClibc'\n  library, then you have to tell Buildroot if it supports RPC,\n  wide-char, locale, program invocation, threads and C++.\n  At the beginning of the execution, Buildroot will tell you if\n  the selected options do not match the toolchain configuration.\n\nOur external toolchain support has been tested with toolchains from\nCodeSourcery and Linaro, toolchains generated by\nhttp://crosstool-ng.org[crosstool-NG], and toolchains generated by\nBuildroot itself. In general, all toolchains that support the\n'sysroot' feature should work. If not, do not hesitate to contact the\ndevelopers.\n\nWe do not support toolchains or SDK generated by OpenEmbedded or\nYocto, because these toolchains are not pure toolchains (i.e. just the\ncompiler, binutils, the C and C++ libraries). Instead these toolchains\ncome with a very large set of pre-compiled libraries and\nprograms. Therefore, Buildroot cannot import the 'sysroot' of the\ntoolchain, as it would contain hundreds of megabytes of pre-compiled\nlibraries that are normally built by Buildroot.\n\nWe also do not support using the distribution toolchain (i.e. the\ngcc/binutils/C library installed by your distribution) as the\ntoolchain to build software for the target. This is because your\ndistribution toolchain is not a \"pure\" toolchain (i.e. only with the\nC/C++ library), so we cannot import it properly into the Buildroot\nbuild environment. So even if you are building a system for a x86 or\nx86_64 target, you have to generate a cross-compilation toolchain with\nBuildroot or crosstool-NG.\n\nIf you want to generate a custom toolchain for your project, that can\nbe used as an external toolchain in Buildroot, our recommendation is\nto build it either with Buildroot itself (see\nxref:build-toolchain-with-buildroot[]) or with\nhttp://crosstool-ng.org[crosstool-NG].\n\nAdvantages of this backend:\n\n* Allows to use well-known and well-tested cross-compilation\n  toolchains.\n\n* Avoids the build time of the cross-compilation toolchain, which is\n  often very significant in the overall build time of an embedded\n  Linux system.\n\nDrawbacks of this backend:\n\n* If your pre-built external toolchain has a bug, may be hard to get a\n  fix from the toolchain vendor, unless you build your external\n  toolchain by yourself using Buildroot or Crosstool-NG.\n\n[[build-toolchain-with-buildroot]]\n==== Build an external toolchain with Buildroot\n\nThe Buildroot internal toolchain option can be used to create an\nexternal toolchain. Here are a series of steps to build an internal\ntoolchain and package it up for reuse by Buildroot itself (or other\nprojects).\n\nCreate a new Buildroot configuration, with the following details:\n\n* Select the appropriate *Target options* for your target CPU\n  architecture\n\n* In the *Toolchain* menu, keep the default of *Buildroot toolchain*\n  for *Toolchain type*, and configure your toolchain as desired\n\n* In the *System configuration* menu, select *None* as the *Init\n  system* and *none* as */bin/sh*\n\n* In the *Target packages* menu, disable *BusyBox*\n\n* In the *Filesystem images* menu, disable *tar the root filesystem*\n\nThen, we can trigger the build, and also ask Buildroot to generate a\nSDK. This will conveniently generate for us a tarball which contains\nour toolchain:\n\n-----\nmake sdk\n-----\n\nThis produces the SDK tarball in +$(O)/images+, with a name similar to\n+arm-buildroot-linux-uclibcgnueabi_sdk-buildroot.tar.gz+. Save this\ntarball, as it is now the toolchain that you can re-use as an external\ntoolchain in other Buildroot projects.\n\nIn those other Buildroot projects, in the *Toolchain* menu:\n\n* Set *Toolchain type* to *External toolchain*\n\n* Set *Toolchain* to *Custom toolchain*\n\n* Set *Toolchain origin* to *Toolchain to be downloaded and installed*\n\n* Set *Toolchain URL* to +file:///path/to/your/sdk/tarball.tar.gz+\n\n===== External toolchain wrapper\n\nWhen using an external toolchain, Buildroot generates a wrapper program,\nthat transparently passes the appropriate options (according to the\nconfiguration) to the external toolchain programs. In case you need to\ndebug this wrapper to check exactly what arguments are passed, you can\nset the environment variable +BR2_DEBUG_WRAPPER+ to either one of:\n\n* +0+, empty or not set: no debug\n\n* +1+: trace all arguments on a single line\n\n* +2+: trace one argument per line\n\n=== /dev management\n\nOn a Linux system, the +/dev+ directory contains special files, called\n_device files_, that allow userspace applications to access the\nhardware devices managed by the Linux kernel. Without these _device\nfiles_, your userspace applications would not be able to use the\nhardware devices, even if they are properly recognized by the Linux\nkernel.\n\nUnder +System configuration+, +/dev management+, Buildroot offers four\ndifferent solutions to handle the +/dev+ directory :\n\n * The first solution is *Static using device table*. This is the old\n   classical way of handling device files in Linux. With this method,\n   the device files are persistently stored in the root filesystem\n   (i.e. they persist across reboots), and there is nothing that will\n   automatically create and remove those device files when hardware\n   devices are added or removed from the system. Buildroot therefore\n   creates a standard set of device files using a _device table_, the\n   default one being stored in +system/device_table_dev.txt+ in the\n   Buildroot source code. This file is processed when Buildroot\n   generates the final root filesystem image, and the _device files_\n   are therefore not visible in the +output/target+ directory. The\n   +BR2_ROOTFS_STATIC_DEVICE_TABLE+ option allows to change the\n   default device table used by Buildroot, or to add an additional\n   device table, so that additional _device files_ are created by\n   Buildroot during the build. So, if you use this method, and a\n   _device file_ is missing in your system, you can for example create\n   a +board/<yourcompany>/<yourproject>/device_table_dev.txt+ file\n   that contains the description of your additional _device files_,\n   and then you can set +BR2_ROOTFS_STATIC_DEVICE_TABLE+ to\n   +system/device_table_dev.txt\n   board/<yourcompany>/<yourproject>/device_table_dev.txt+. For more\n   details about the format of the device table file, see\n   xref:makedev-syntax[].\n\n * The second solution is *Dynamic using devtmpfs only*. _devtmpfs_ is\n   a virtual filesystem inside the Linux kernel that has been\n   introduced in kernel 2.6.32 (if you use an older kernel, it is not\n   possible to use this option). When mounted in +/dev+, this virtual\n   filesystem will automatically make _device files_ appear and\n   disappear as hardware devices are added and removed from the\n   system. This filesystem is not persistent across reboots: it is\n   filled dynamically by the kernel. Using _devtmpfs_ requires the\n   following kernel configuration options to be enabled:\n   +CONFIG_DEVTMPFS+ and +CONFIG_DEVTMPFS_MOUNT+. When Buildroot is in\n   charge of building the Linux kernel for your embedded device, it\n   makes sure that those two options are enabled. However, if you\n   build your Linux kernel outside of Buildroot, then it is your\n   responsibility to enable those two options (if you fail to do so,\n   your Buildroot system will not boot).\n\n * The third solution is *Dynamic using devtmpfs + mdev*. This method\n   also relies on the _devtmpfs_ virtual filesystem detailed above (so\n   the requirement to have +CONFIG_DEVTMPFS+ and\n   +CONFIG_DEVTMPFS_MOUNT+ enabled in the kernel configuration still\n   apply), but adds the +mdev+ userspace utility on top of it. +mdev+\n   is a program part of BusyBox that the kernel will call every time a\n   device is added or removed. Thanks to the +/etc/mdev.conf+\n   configuration file, +mdev+ can be configured to for example, set\n   specific permissions or ownership on a device file, call a script\n   or application whenever a device appears or disappear,\n   etc. Basically, it allows _userspace_ to react on device addition\n   and removal events. +mdev+ can for example be used to automatically\n   load kernel modules when devices appear on the system. +mdev+ is\n   also important if you have devices that require a firmware, as it\n   will be responsible for pushing the firmware contents to the\n   kernel. +mdev+ is a lightweight implementation (with fewer\n   features) of +udev+. For more details about +mdev+ and the syntax\n   of its configuration file, see\n   http://git.busybox.net/busybox/tree/docs/mdev.txt.\n\n * The fourth solution is *Dynamic using devtmpfs + eudev*. This\n   method also relies on the _devtmpfs_ virtual filesystem detailed\n   above, but adds the +eudev+ userspace daemon on top of it. +eudev+\n   is a daemon that runs in the background, and gets called by the\n   kernel when a device gets added or removed from the system. It is a\n   more heavyweight solution than +mdev+, but provides higher\n   flexibility.  +eudev+ is a standalone version of +udev+, the\n   original userspace daemon used in most desktop Linux distributions,\n   which is now part of Systemd. For more details, see\n   http://en.wikipedia.org/wiki/Udev.\n\nThe Buildroot developers recommendation is to start with the *Dynamic\nusing devtmpfs only* solution, until you have the need for userspace\nto be notified when devices are added/removed, or if firmwares are\nneeded, in which case *Dynamic using devtmpfs + mdev* is usually a\ngood solution.\n\nNote that if +systemd+ is chosen as init system, /dev management will\nbe performed by the +udev+ program provided by +systemd+.\n\n=== init system\n\nThe _init_ program is the first userspace program started by the\nkernel (it carries the PID number 1), and is responsible for starting\nthe userspace services and programs (for example: web server,\ngraphical applications, other network servers, etc.).\n\nBuildroot allows to use three different types of init systems, which\ncan be chosen from +System configuration+, +Init system+:\n\n * The first solution is *BusyBox*. Amongst many programs, BusyBox has\n   an implementation of a basic +init+ program, which is sufficient\n   for most embedded systems. Enabling the +BR2_INIT_BUSYBOX+ will\n   ensure BusyBox will build and install its +init+ program. This is\n   the default solution in Buildroot. The BusyBox +init+ program will\n   read the +/etc/inittab+ file at boot to know what to do. The syntax\n   of this file can be found in\n   http://git.busybox.net/busybox/tree/examples/inittab (note that\n   BusyBox +inittab+ syntax is special: do not use a random +inittab+\n   documentation from the Internet to learn about BusyBox\n   +inittab+). The default +inittab+ in Buildroot is stored in\n   +system/skeleton/etc/inittab+. Apart from mounting a few important\n   filesystems, the main job the default inittab does is to start the\n   +/etc/init.d/rcS+ shell script, and start a +getty+ program (which\n   provides a login prompt).\n\n * The second solution is *systemV*. This solution uses the old\n   traditional _sysvinit_ program, packed in Buildroot in\n   +package/sysvinit+. This was the solution used in most desktop\n   Linux distributions, until they switched to more recent\n   alternatives such as Upstart or Systemd. +sysvinit+ also works with\n   an +inittab+ file (which has a slightly different syntax than the\n   one from BusyBox). The default +inittab+ installed with this init\n   solution is located in +package/sysvinit/inittab+.\n\n * The third solution is *systemd*. +systemd+ is the new generation\n   init system for Linux. It does far more than traditional _init_\n   programs: aggressive parallelization capabilities, uses socket and\n   D-Bus activation for starting services, offers on-demand starting\n   of daemons, keeps track of processes using Linux control groups,\n   supports snapshotting and restoring of the system state,\n   etc. +systemd+ will be useful on relatively complex embedded\n   systems, for example the ones requiring D-Bus and services\n   communicating between each other. It is worth noting that +systemd+\n   brings a fairly big number of large dependencies: +dbus+, +udev+\n   and more. For more details about +systemd+, see\n   http://www.freedesktop.org/wiki/Software/systemd.\n\nThe solution recommended by Buildroot developers is to use the\n*BusyBox init* as it is sufficient for most embedded\nsystems. *systemd* can be used for more complex situations.\n"
  },
  {
    "path": "docs/manual/contribute.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n== Contributing to Buildroot\n\nThere are many ways in which you can contribute to Buildroot: analyzing\nand fixing bugs, analyzing and fixing package build failures detected by\nthe autobuilders, testing and reviewing patches sent by other\ndevelopers, working on the items in our TODO list and sending your own\nimprovements to Buildroot or its manual. The following sections give a\nlittle more detail on each of these items.\n\nIf you are interested in contributing to Buildroot, the first thing you\nshould do is to subscribe to the Buildroot mailing list. This list is\nthe main way of interacting with other Buildroot developers and to send\ncontributions to. If you aren't subscribed yet, then refer to\nxref:community-resources[] for the subscription link.\n\nIf you are going to touch the code, it is highly recommended to use a\ngit repository of Buildroot, rather than starting from an extracted\nsource code tarball. Git is the easiest way to develop from and directly\nsend your patches to the mailing list. Refer to xref:getting-buildroot[]\nfor more information on obtaining a Buildroot git tree.\n\n=== Reproducing, analyzing and fixing bugs\n\nA first way of contributing is to have a look at the open bug reports in\nthe https://bugs.buildroot.org/buglist.cgi?product=buildroot[Buildroot bug\ntracker]. As we strive to keep the bug count as small as possible, all\nhelp in reproducing, analyzing and fixing reported bugs is more than\nwelcome. Don't hesitate to add a comment to bug reports reporting your\nfindings, even if you don't yet see the full picture.\n\n=== Analyzing and fixing autobuild failures\n\nThe Buildroot autobuilders are a set of build machines that continuously\nrun Buildroot builds based on random configurations. This is done for\nall architectures supported by Buildroot, with various toolchains, and\nwith a random selection of packages. With the large commit activity on\nBuildroot, these autobuilders are a great help in detecting problems\nvery early after commit.\n\nAll build results are available at http://autobuild.buildroot.org[],\nstatistics are at http://autobuild.buildroot.org/stats.php[]. Every day,\nan overview of all failed packages is sent to the mailing list.\n\nDetecting problems is great, but obviously these problems have to be\nfixed as well. Your contribution is very welcome here! There are\nbasically two things that can be done:\n\n- Analyzing the problems. The daily summary mails do not contain details\n  about the actual failures: in order to see what's going on you have to\n  open the build log and check the last output. Having someone doing\n  this for all packages in the mail is very useful for other developers,\n  as they can make a quick initial analysis based on this output alone.\n\n- Fixing a problem. When fixing autobuild failures, you should follow\n  these steps:\n  . Check if you can reproduce the problem by building with the same\n    configuration. You can do this manually, or use the\n    http://git.buildroot.org/buildroot-test/tree/utils/br-reproduce-build[br-reproduce-build]\n    script that will automatically clone a Buildroot git repository,\n    checkout the correct revision, download and set the right\n    configuration, and start the build.\n  . Analyze the problem and create a fix.\n  . Verify that the problem is really fixed by starting from a clean\n    Buildroot tree and only applying your fix.\n  . Send the fix to the Buildroot mailing list (see\n    xref:submitting-patches[]). In case you created a patch against the\n    package sources, you should also send the patch upstream so that the\n    problem will be fixed in a later release, and the patch in Buildroot\n    can be removed.\n    In the commit message of a patch fixing an autobuild failure, add a\n    reference to the build result directory, as follows:\n---------------------\nFixes: http://autobuild.buildroot.org/results/51000a9d4656afe9e0ea6f07b9f8ed374c2e4069\n---------------------\n\n=== Reviewing and testing patches\n\nWith the amount of patches sent to the mailing list each day, the\nmaintainer has a very hard job to judge which patches are ready to apply\nand which ones aren't. Contributors can greatly help here by reviewing\nand testing these patches.\n\nIn the review process, do not hesitate to respond to patch submissions\nfor remarks, suggestions or anything that will help everyone to\nunderstand the patches and make them better. Please use internet\nstyle replies in plain text emails when responding to patch\nsubmissions.\n\nTo indicate approval of a patch, there are three formal tags that keep\ntrack of this approval. To add your tag to a patch, reply to it with the\napproval tag below the original author's Signed-off-by line. These tags\nwill be picked up automatically by patchwork (see\nxref:apply-patches-patchwork[]) and will be part of the commit log when\nthe patch is accepted.\n\nTested-by:: Indicates that the patch has been tested successfully.\n  You are encouraged to specify what kind of testing you performed\n  (compile-test on architecture X and Y, runtime test on target A,\n  ...). This additional information helps other testers and the\n  maintainer.\n\nReviewed-by:: Indicates that you code-reviewed the patch and did your\n  best in spotting problems, but you are not sufficiently familiar with\n  the area touched to provide an Acked-by tag. This means that there\n  may be remaining problems in the patch that would be spotted by\n  someone with more experience in that area. Should such problems be\n  detected, your Reviewed-by tag remains appropriate and you cannot\n  be blamed.\n\nAcked-by:: Indicates that you code-reviewed the patch and you are\n  familiar enough with the area touched to feel that the patch can be\n  committed as-is (no additional changes required). In case it later\n  turns out that something is wrong with the patch, your Acked-by could\n  be considered inappropriate. The difference between Acked-by and\n  Reviewed-by is thus mainly that you are prepared to take the blame on\n  Acked patches, but not on Reviewed ones.\n\nIf you reviewed a patch and have comments on it, you should simply reply\nto the patch stating these comments, without providing a Reviewed-by or\nAcked-by tag. These tags should only be provided if you judge the patch\nto be good as it is.\n\nIt is important to note that neither Reviewed-by nor Acked-by imply\nthat testing has been performed. To indicate that you both reviewed and\ntested the patch, provide two separate tags (Reviewed/Acked-by and\nTested-by).\n\nNote also that _any developer_ can provide Tested/Reviewed/Acked-by\ntags, without exception, and we encourage everyone to do this. Buildroot\ndoes not have a defined group of _core_ developers, it just so happens\nthat some developers are more active than others. The maintainer will\nvalue tags according to the track record of their submitter. Tags\nprovided by a regular contributor will naturally be trusted more than\ntags provided by a newcomer. As you provide tags more regularly, your\n'trustworthiness' (in the eyes of the maintainer) will go up, but _any_\ntag provided is valuable.\n\nBuildroot's Patchwork website can be used to pull in patches for testing\npurposes. Please see xref:apply-patches-patchwork[] for more\ninformation on using Buildroot's Patchwork website to apply patches.\n\n[[apply-patches-patchwork]]\n==== Applying Patches from Patchwork\n\nThe main use of Buildroot's Patchwork website for a developer is for\npulling in patches into their local git repository for testing\npurposes.\n\nWhen browsing patches in the patchwork management interface, an +mbox+\nlink is provided at the top of the page. Copy this link address and\nrun the following commands:\n\n---------------------\n$ git checkout -b <test-branch-name>\n$ wget -O - <mbox-url> | git am\n---------------------\n\nAnother option for applying patches is to create a bundle. A bundle is\na set of patches that you can group together using the patchwork\ninterface. Once the bundle is created and the bundle is made public,\nyou can copy the +mbox+ link for the bundle and apply the bundle\nusing the above commands.\n\n\n=== Work on items from the TODO list\n\nIf you want to contribute to Buildroot but don't know where to start,\nand you don't like any of the above topics, you can always work on items\nfrom the http://elinux.org/Buildroot#Todo_list[Buildroot TODO list].\nDon't hesitate to discuss an item first on the mailing list or on IRC.\nDo edit the wiki to indicate when you start working on an item, so we\navoid duplicate efforts.\n\n[[submitting-patches]]\n=== Submitting patches\n\n[NOTE]\n_Please, do not attach patches to bugs, send them to the mailing list\ninstead_.\n\nIf you made some changes to Buildroot and you would like to contribute\nthem to the Buildroot project, proceed as follows.\n\n==== The formatting of a patch\n\nWe expect patches to be formatted in a specific way. This is necessary\nto make it easy to review patches, to be able to apply them easily to\nthe git repository, to make it easy to find back in the history how\nand why things have changed, and to make it possible to use +git\nbisect+ to locate the origin of a problem.\n\nFirst of all, it is essential that the patch has a good commit\nmessage. The commit message should start with a separate line with a\nbrief summary of the change, prefixed by the area touched by the\npatch. A few examples of good commit titles:\n\n* +package/linuxptp: bump version to 2.0+\n\n* +configs/imx23evk: bump Linux version to 4.19+\n\n* +package/pkg-generic: postpone evaluation of dependency conditions+\n\n* +boot/uboot: needs host-{flex,bison}+\n\n* +support/testing: add python-ubjson tests+\n\nThe description that follows the prefix should start with a lower case\nletter (i.e \"bump\", \"needs\", \"postpone\", \"add\" in the above examples).\n\nSecond, the body of the commit message should describe _why_ this\nchange is needed, and if necessary also give details about _how_ it\nwas done. When writing the commit message, think of how the reviewers\nwill read it, but also think about how you will read it when you look\nat this change again a few years down the line.\n\nThird, the patch itself should do only one change, but do it\ncompletely. Two unrelated or weakly related changes should usually be\ndone in two separate patches. This usually means that a patch affects\nonly a single package. If several changes are related, it is often\nstill possible to split them up in small patches and apply them in a\nspecific order. Small patches make it easier to review, and often\nmake it easier to understand afterwards why a change was done.\nHowever, each patch must be complete. It is not allowed that the\nbuild is broken when only the first but not the second patch is\napplied. This is necessary to be able to use +git bisect+ afterwards.\n\nOf course, while you're doing your development, you're probably going\nback and forth between packages, and certainly not committing things\nimmediately in a way that is clean enough for submission. So most\ndevelopers rewrite the history of commits to produce a clean set of\ncommits that is appropriate for submission. To do this, you need to\nuse _interactive rebasing_. You can learn about it\nhttps://git-scm.com/book/en/v2/Git-Tools-Rewriting-History[in the Pro\nGit book]. Sometimes, it is even easier to discard you history with\n+git reset --soft origin/master+ and select individual changes with\n+git add -i+ or +git add -p+.\n\nFinally, the patch should be signed off. This is done by adding\n+Signed-off-by: Your Real Name <your@email.address>+ at the end of the\ncommit message. +git commit -s+ does that for you, if configured\nproperly. The +Signed-off-by+ tag means that you publish the patch\nunder the Buildroot license (i.e. GPL-2.0+, except for package patches,\nwhich have the upstream license), and that you are allowed to do so.\nSee http://developercertificate.org/[the Developer Certificate of\nOrigin] for details.\n\nWhen adding new packages, you should submit every package in a\nseparate patch. This patch should have the update to\n+package/Config.in+, the package +Config.in+ file, the +.mk+ file, the\n+.hash+ file, any init script, and all package patches. If the package\nhas many sub-options, these are sometimes better added as separate\nfollow-up patches. The summary line should be something like\n+<packagename>: new package+. The body of the commit message can be\nempty for simple packages, or it can contain the description of the\npackage (like the Config.in help text). If anything special has to be\ndone to build the package, this should also be explained explicitly in\nthe commit message body.\n\nWhen you bump a package to a new version, you should also submit a\nseparate patch for each package. Don't forget to update the +.hash+\nfile, or add it if it doesn't exist yet. Also don't forget to check if\nthe +_LICENSE+ and +_LICENSE_FILES+ are still valid. The summary line\nshould be something like +<packagename>: bump to version <new\nversion>+. If the new version only contains security updates compared\nto the existing one, the summary should be +<packagename>: security\nbump to version <new version>+ and the commit message body should show\nthe CVE numbers that are fixed. If some package patches can be removed\nin the new version, it should be explained explicitly why they can be\nremoved, preferably with the upstream commit ID. Also any other\nrequired changes should be explained explicitly, like configure\noptions that no longer exist or are no longer needed.\n\nIf you are interested in getting notified of build failures and of\nfurther changes in the packages you added or modified, please add\nyourself to the DEVELOPERS file. This should be done in the same patch\ncreating or modifying the package. See xref:DEVELOPERS[the DEVELOPERS file]\nfor more information.\n\nBuildroot provides a handy tool to check for common coding style\nmistakes on files you created or modified, called +check-package+ (see\nxref:check-package[] for more information).\n\n==== Preparing a patch series\n\nStarting from the changes committed in your local git view, _rebase_\nyour development branch on top of the upstream tree before generating\na patch set. To do so, run:\n\n---------------------\n$ git fetch --all --tags\n$ git rebase origin/master\n---------------------\n\nNow, you are ready to generate then submit your patch set.\n\nTo generate it, run:\n\n---------------------\n$ git format-patch -M -n -s -o outgoing origin/master\n---------------------\n\nThis will generate patch files in the +outgoing+ subdirectory,\nautomatically adding the +Signed-off-by+ line.\n\nOnce patch files are generated, you can review/edit the commit message\nbefore submitting them, using your favorite text editor.\n\nBuildroot provides a handy tool to know to whom your patches should be\nsent, called +get-developers+ (see xref:DEVELOPERS[] for more\ninformation). This tool reads your patches and outputs the appropriate\n+git send-email+ command to use:\n\n---------------------\n$ ./utils/get-developers outgoing/*\n---------------------\n\nUse the output of +get-developers+ to send your patches:\n\n---------------------\n$ git send-email --to buildroot@buildroot.org --cc bob --cc alice outgoing/*\n---------------------\n\nAlternatively, +get-developers -e+ can be used directly with the\n+--cc-cmd+ argument to +git send-email+ to automatically CC the\naffected developers:\n\n---------------------\n$ git send-email --to buildroot@buildroot.org \\\n      --cc-cmd './utils/get-developers -e' origin/master\n---------------------\n\n+git+ can be configured to automatically do this out of the box with:\n\n---------------------\n$ git config sendemail.to buildroot@buildroot.org\n$ git config sendemail.ccCmd \"$(pwd)/utils/get-developers -e\"\n---------------------\n\nAnd then just do:\n\n---------------------\n$ git send-email origin/master\n---------------------\n\nNote that +git+ should be configured to use your mail account.\nTo configure +git+, see +man git-send-email+ or google it.\n\nIf you do not use +git send-email+, make sure posted *patches are not\nline-wrapped*, otherwise they cannot easily be applied. In such a case,\nfix your e-mail client, or better yet, learn to use +git send-email+.\n\n==== Cover letter\n\nIf you want to present the whole patch set in a separate mail, add\n+--cover-letter+ to the +git format-patch+ command (see +man\ngit-format-patch+ for further information). This will generate a\ntemplate for an introduction e-mail to your patch series.\n\nA 'cover letter' may be useful to introduce the changes you propose\nin the following cases:\n\n* large number of commits in the series;\n\n* deep impact of the changes in the rest of the project;\n\n* RFC footnote:[RFC: (Request for comments) change proposal];\n\n* whenever you feel it will help presenting your work, your choices,\n  the review process, etc.\n\n==== Patches for maintenance branches\n\nWhen fixing bugs on a maintenance branch, bugs should be fixed on the\nmaster branch first. The commit log for such a patch may then contain a\npost-commit note specifying what branches are affected:\n\n----\npackage/foo: fix stuff\n\nSigned-off-by: Your Real Name <your@email.address>\n---\nBackport to: 2020.02.x, 2020.05.x\n(2020.08.x not affected as the version was bumped)\n----\n\nThose changes will then be backported by a maintainer to the affected\nbranches.\n\nHowever, some bugs may apply only to a specific release, for example\nbecause it is using an older version of a package. In that case, patches\nshould be based off the maintenance branch, and the patch subject prefix\nmust include the maintenance branch name (for example \"[PATCH 2020.02.x]\").\nThis can be done with the +git format-patch+ flag +--subject-prefix+:\n\n---------------------\n$ git format-patch --subject-prefix \"PATCH 2020.02.x\" \\\n    -M -s -o outgoing origin/2020.02.x\n---------------------\n\nThen send the patches with +git send-email+, as described above.\n\n==== Patch revision changelog\n\nWhen improvements are requested, the new revision of each commit\nshould include a changelog of the modifications between each\nsubmission. Note that when your patch series is introduced by a cover\nletter, an overall changelog may be added to the cover letter in\naddition to the changelog in the individual commits.\nThe best thing to rework a patch series is by interactive rebasing:\n+git rebase -i origin/master+. Consult the git manual for more\ninformation.\n\nWhen added to the individual commits, this changelog is added when\nediting the commit message. Below the +Signed-off-by+ section, add\n+---+ and your changelog.\n\nAlthough the changelog will be visible for the reviewers in the mail\nthread, as well as in http://patchwork.buildroot.org[patchwork], +git+\nwill automatically ignores lines below +---+ when the patch will be\nmerged. This is the intended behavior: the changelog is not meant to\nbe preserved forever in the +git+ history of the project.\n\nHereafter the recommended layout:\n\n---------------\nPatch title: short explanation, max 72 chars\n\nA paragraph that explains the problem, and how it manifests itself. If\nthe problem is complex, it is OK to add more paragraphs. All paragraphs\nshould be wrapped at 72 characters.\n\nA paragraph that explains the root cause of the problem. Again, more\nthan one paragraph is OK.\n\nFinally, one or more paragraphs that explain how the problem is solved.\nDon't hesitate to explain complex solutions in detail.\n\nSigned-off-by: John DOE <john.doe@example.net>\n\n---\nChanges v2 -> v3:\n  - foo bar  (suggested by Jane)\n  - bar buz\n\nChanges v1 -> v2:\n  - alpha bravo  (suggested by John)\n  - charly delta\n---------------\n\nAny patch revision should include the version number. The version number\nis simply composed of the letter +v+ followed by an +integer+ greater or\nequal to two (i.e. \"PATCH v2\", \"PATCH v3\" ...).\n\nThis can be easily handled with +git format-patch+ by using the option\n+--subject-prefix+:\n\n---------------------\n$ git format-patch --subject-prefix \"PATCH v4\" \\\n    -M -s -o outgoing origin/master\n---------------------\n\nSince git version 1.8.1, you can also use +-v <n>+ (where <n> is the\nversion number):\n\n---------------------\n$ git format-patch -v4 -M -s -o outgoing origin/master\n---------------------\n\nWhen you provide a new version of a patch, please mark the old one as\nsuperseded in http://patchwork.buildroot.org[patchwork]. You need to\ncreate an account on http://patchwork.buildroot.org[patchwork] to be\nable to modify the status of your patches. Note that you can only change\nthe status of patches you submitted yourself, which means the email\naddress you register in http://patchwork.buildroot.org[patchwork] should\nmatch the one you use for sending patches to the mailing list.\n\nYou can also add the +--in-reply-to <message-id>+ option when\nsubmitting a patch to the mailing list. The id of the mail to reply to\ncan be found under the \"Message Id\" tag on\nhttp://patchwork.buildroot.org[patchwork].  The advantage of\n*in-reply-to* is that patchwork will automatically mark the previous\nversion of the patch as superseded.\n\n[[reporting-bugs]]\n=== Reporting issues/bugs or getting help\n\nBefore reporting any issue, please check in\nxref:community-resources[the mailing list archive] whether someone has\nalready reported and/or fixed a similar problem.\n\nHowever you choose to report bugs or get help, either by\nopening a bug in the xref:community-resources[bug tracker] or by\nxref:community-resources[sending a mail to the mailing list], there are\na number of details to provide in order to help people reproduce and\nfind a solution to the issue.\n\nTry to think as if you were trying to help someone else; in\nthat case, what would you need?\n\nHere is a short list of details to provide in such case:\n\n* host machine (OS/release)\n* version of Buildroot\n* target for which the build fails\n* package(s) for which the build fails\n* the command that fails and its output\n* any information you think that may be relevant\n\nAdditionally, you should add the +.config+ file (or if you know how, a\n+defconfig+; see xref:customize-store-buildroot-config[]).\n\nIf some of these details are too large, do not hesitate to use a\npastebin service. Note that not all available pastebin services will\npreserve Unix-style line terminators when downloading raw pastes.\nFollowing pastebin services are known to work correctly:\n- https://gist.github.com/\n- http://code.bulix.org/\n\n=== Using the runtime tests framework\n\nBuildroot includes a run-time testing framework built upon Python\nscripting and QEMU runtime execution. The goals of the framework are\nthe following:\n\n* build a well defined Buildroot configuration\n* optionally, verify some properties of the build output\n* optionally, boot the build results under Qemu, and verify that a\n  given feature is working as expected\n\nThe entry point to use the runtime tests framework is the\n+support/testing/run-tests+ tool, which has a series of options\ndocumented in the tool's help '-h' description. Some common options\ninclude setting the download folder, the output folder, keeping build\noutput, and for multiple test cases, you can set the JLEVEL for each.\n\nHere is an example walk through of running a test case.\n\n* For a first step, let us see what all the test case options are. The test\ncases can be listed by executing +support/testing/run-tests -l+. These tests\ncan all be run individually during test development from the console. Both\none at a time and selectively as a group of a subset of tests.\n\n---------------------\n$ support/testing/run-tests -l\nList of tests\ntest_run (tests.utils.test_check_package.TestCheckPackage)\ntest_run (tests.toolchain.test_external.TestExternalToolchainBuildrootMusl) ... ok\ntest_run (tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc) ... ok\ntest_run (tests.toolchain.test_external.TestExternalToolchainCCache) ... ok\ntest_run (tests.toolchain.test_external.TestExternalToolchainCtngMusl) ... ok\ntest_run (tests.toolchain.test_external.TestExternalToolchainLinaroArm) ... ok\ntest_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv4) ... ok\ntest_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv5) ... ok\ntest_run (tests.toolchain.test_external.TestExternalToolchainSourceryArmv7) ... ok\n[snip]\ntest_run (tests.init.test_systemd.TestInitSystemSystemdRoFull) ... ok\ntest_run (tests.init.test_systemd.TestInitSystemSystemdRoIfupdown) ... ok\ntest_run (tests.init.test_systemd.TestInitSystemSystemdRoNetworkd) ... ok\ntest_run (tests.init.test_systemd.TestInitSystemSystemdRwFull) ... ok\ntest_run (tests.init.test_systemd.TestInitSystemSystemdRwIfupdown) ... ok\ntest_run (tests.init.test_systemd.TestInitSystemSystemdRwNetworkd) ... ok\ntest_run (tests.init.test_busybox.TestInitSystemBusyboxRo) ... ok\ntest_run (tests.init.test_busybox.TestInitSystemBusyboxRoNet) ... ok\ntest_run (tests.init.test_busybox.TestInitSystemBusyboxRw) ... ok\ntest_run (tests.init.test_busybox.TestInitSystemBusyboxRwNet) ... ok\n\nRan 157 tests in 0.021s\n\nOK\n---------------------\n\n* Then, to run one test case:\n\n---------------------\n$ support/testing/run-tests -d dl -o output_folder -k tests.init.test_busybox.TestInitSystemBusyboxRw\n15:03:26 TestInitSystemBusyboxRw                  Starting\n15:03:28 TestInitSystemBusyboxRw                  Building\n15:08:18 TestInitSystemBusyboxRw                  Building done\n15:08:27 TestInitSystemBusyboxRw                  Cleaning up\n.\nRan 1 test in 301.140s\n\nOK\n---------------------\n\nThe standard output indicates if the test is successful or not. By\ndefault, the output folder for the test is deleted automatically\nunless the option +-k+ is passed to *keep* the output directory.\n\n==== Creating a test case\n\nWithin the Buildroot repository, the testing framework is organized at the\ntop level in +support/testing/+ by folders of +conf+, +infra+ and +tests+.\nAll the test cases live under the +tests+ folder and are organized in various\nfolders representing the category of test.\n\nThe best way to get familiar with how to create a test case is to look\nat a few of the basic file system +support/testing/tests/fs/+ and init\n+support/testing/tests/init/+ test scripts. Those tests give good\nexamples of a basic tests that include both checking the build\nresults, and doing runtime tests. There are other more advanced cases\nthat use things like nested +br2-external+ folders to provide\nskeletons and additional packages.\n\nCreating a basic test case involves:\n\n* Defining a test class that inherits from +infra.basetest.BRTest+\n\n* Defining the +config+ member of the test class, to the Buildroot\n  configuration to build for this test case. It can optionally rely on\n  configuration snippets provided by the runtime test infrastructure:\n  +infra.basetest.BASIC_TOOLCHAIN_CONFIG+ to get a basic\n  architecture/toolchain configuration, and\n  +infra.basetest.MINIMAL_CONFIG+ to not build any filesystem. The\n  advantage of using +infra.basetest.BASIC_TOOLCHAIN_CONFIG+ is that a\n  matching Linux kernel image is provided, which allows to boot the\n  resulting image in Qemu without having to build a Linux kernel image\n  as part of the test case, therefore significant decreasing the build\n  time required for the test case.\n\n* Implementing a +def test_run(self):+ function to implement the\n  actual tests to run after the build has completed. They may be tests\n  that verify the build output, by running command on the host using\n  the +run_cmd_on_host()+ helper function. Or they may boot the\n  generated system in Qemu using the +Emulator+ object available as\n  +self.emulator+ in the test case. For example +self.emulator.boot()+\n  allows to boot the system in Qemu, +self.emulator.login()+ allows to\n  login, +self.emulator.run()+ allows to run shell commands inside\n  Qemu.\n\nAfter creating the test script, add yourself to the +DEVELOPERS+ file to\nbe the maintainer of that test case.\n\n==== Debugging a test case\n\nWhen a test case runs, the +output_folder+ will contain the following:\n\n---------------------\n$ ls output_folder/\nTestInitSystemBusyboxRw/\nTestInitSystemBusyboxRw-build.log\nTestInitSystemBusyboxRw-run.log\n---------------------\n\n+TestInitSystemBusyboxRw/+ is the Buildroot output directory, and it\nis preserved only if the +-k+ option is passed.\n\n+TestInitSystemBusyboxRw-build.log+ is the log of the Buildroot build.\n\n+TestInitSystemBusyboxRw-run.log+ is the log of the Qemu boot and\ntest. This file will only exist if the build was successful and the\ntest case involves booting under Qemu.\n\nIf you want to manually run Qemu to do manual tests of the build\nresult, the first few lines of +TestInitSystemBusyboxRw-run.log+\ncontain the Qemu command line to use.\n\nYou can also make modifications to the current sources inside the\n+output_folder+ (e.g. for debug purposes) and rerun the standard\nBuildroot make targets (in order to regenerate the complete image with\nthe new modifications) and then rerun the test.\n\n==== Runtime tests and Gitlab CI\n\nAll runtime tests are regularly executed by Buildroot Gitlab CI\ninfrastructure, see .gitlab.yml and\nhttps://gitlab.com/buildroot.org/buildroot/-/jobs.\n\nYou can also use Gitlab CI to test your new test cases, or verify that\nexisting tests continue to work after making changes in Buildroot.\n\nIn order to achieve this, you need to create a fork of the Buildroot\nproject on Gitlab, and be able to push branches to your Buildroot fork\non Gitlab.\n\nThe name of the branch that you push will determine if a Gitlab CI\npipeline will be triggered or not, and for which test cases.\n\nIn the examples below, the <name> component of the branch name is an\narbitrary string you choose.\n\n* To trigger all run-test test case jobs, push a branch that ends with\n  +-runtime-tests+:\n\n---------------------\n $ git push gitlab HEAD:<name>-runtime-tests\n---------------------\n\n* To trigger one or several test case jobs, push a branch that ends\n  with the complete test case name\n  (+tests.init.test_busybox.TestInitSystemBusyboxRo+) or with the name\n  of a category of tests (+tests.init.test_busybox+):\n\n---------------------\n $ git push gitlab HEAD:<name>-<test case name>\n---------------------\n\nExample to run one test:\n\n---------------------\n $ git push gitlab HEAD:foo-tests.init.test_busybox.TestInitSystemBusyboxRo\n---------------------\n\nExamples to run several tests part of the same group:\n\n---------------------\n $ git push gitlab HEAD:foo-tests.init.test_busybox\n $ git push gitlab HEAD:foo-tests.init\n---------------------\n"
  },
  {
    "path": "docs/manual/customize-configuration.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[customize-store-buildroot-config]]\n=== Storing the Buildroot configuration\n\nThe Buildroot configuration can be stored using the command\n +make savedefconfig+.\n\nThis strips the Buildroot configuration down by removing configuration\noptions that are at their default value. The result is stored in a file\ncalled +defconfig+. If you want to save it in another place, change the\n+BR2_DEFCONFIG+ option in the Buildroot configuration itself, or call\nmake with +make savedefconfig BR2_DEFCONFIG=<path-to-defconfig>+.\n\nThe recommended place to store this defconfig is\n+configs/<boardname>_defconfig+. If you follow this recommendation, the\nconfiguration will be listed in +make help+ and can be set again by\nrunning +make <boardname>_defconfig+.\n\nAlternatively, you can copy the file to any other place and rebuild with\n+make defconfig BR2_DEFCONFIG=<path-to-defconfig-file>+.\n\n[[customize-store-package-config]]\n=== Storing the configuration of other components\n\nThe configuration files for BusyBox, the Linux kernel, Barebox, U-Boot\nand uClibc should be stored as well if changed. For each of these\ncomponents, a Buildroot configuration option exists to point to an input\nconfiguration file, e.g. +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+. To store\ntheir configuration, set these configuration options to a path where you\nwant to save the configuration files, and then use the helper targets\ndescribed below to actually store the configuration.\n\nAs explained in xref:customize-dir-structure[], the recommended path to\nstore these configuration files is\n+board/<company>/<boardname>/foo.config+.\n\nMake sure that you create a configuration file 'before' changing\nthe +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+ etc. options. Otherwise,\nBuildroot will try to access this config file, which doesn't exist\nyet, and will fail. You can create the configuration file by running\n+make linux-menuconfig+ etc.\n\nBuildroot provides a few helper targets to make the saving of\nconfiguration files easier.\n\n* +make linux-update-defconfig+ saves the linux configuration to the\n  path specified by +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+. It\n  simplifies the config file by removing default values. However,\n  this only works with kernels starting from 2.6.33. For earlier\n  kernels, use +make linux-update-config+.\n* +make busybox-update-config+ saves the busybox configuration to the\n  path specified by +BR2_PACKAGE_BUSYBOX_CONFIG+.\n* +make uclibc-update-config+ saves the uClibc configuration to the\n  path specified by +BR2_UCLIBC_CONFIG+.\n* +make barebox-update-defconfig+ saves the barebox configuration to the\n  path specified by +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE+.\n* +make uboot-update-defconfig+ saves the U-Boot configuration to the\n  path specified by +BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE+.\n* For at91bootstrap3, no helper exists so you have to copy the config\n  file manually to +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE+.\n\n\n"
  },
  {
    "path": "docs/manual/customize-device-permission-tables.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[customize-device-permission]]\n==== Setting file permissions and ownership and adding custom devices nodes\n\nSometimes it is needed to set specific permissions or ownership on files\nor device nodes. For example, certain files may need to be owned by\nroot. Since the post-build scripts are not run as root, you cannot do\nsuch changes from there unless you use an explicit fakeroot from the\npost-build script.\n\nInstead, Buildroot provides support for so-called _permission tables_.\nTo use this feature, set config option +BR2_ROOTFS_DEVICE_TABLE+ to a\nspace-separated list of permission tables, regular text files following\nthe xref:makedev-syntax[makedev syntax].\n\nIf you are using a static device table (i.e. not using +devtmpfs+,\n+mdev+, or +(e)udev+) then you can add device nodes using the same\nsyntax, in so-called _device tables_. To use this feature, set config\noption +BR2_ROOTFS_STATIC_DEVICE_TABLE+ to a space-separated list of\ndevice tables.\n\nAs shown in xref:customize-dir-structure[], the recommended location for\nsuch files is +board/<company>/<boardname>/+.\n\nIt should be noted that if the specific permissions or device nodes are\nrelated to a specific application, you should set variables\n+FOO_PERMISSIONS+ and +FOO_DEVICES+ in the package's +.mk+ file instead\n(see xref:generic-package-reference[]).\n"
  },
  {
    "path": "docs/manual/customize-directory-structure.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[customize-dir-structure]]\n=== Recommended directory structure\n\nWhen customizing Buildroot for your project, you will be creating one or\nmore project-specific files that need to be stored somewhere. While most\nof these files could be placed in _any_ location as their path is to be\nspecified in the Buildroot configuration, the Buildroot developers\nrecommend a specific directory structure which is described in this\nsection.\n\nOrthogonal to this directory structure, you can choose _where_ you place\nthis structure itself: either inside the Buildroot tree, or outside of\nit using a br2-external tree. Both options are valid, the choice is up\nto you.\n\n-----\n+-- board/\n|   +-- <company>/\n|       +-- <boardname>/\n|           +-- linux.config\n|           +-- busybox.config\n|           +-- <other configuration files>\n|           +-- post_build.sh\n|           +-- post_image.sh\n|           +-- rootfs_overlay/\n|           |   +-- etc/\n|           |   +-- <some file>\n|           +-- patches/\n|               +-- foo/\n|               |   +-- <some patch>\n|               +-- libbar/\n|                   +-- <some other patches>\n|\n+-- configs/\n|   +-- <boardname>_defconfig\n|\n+-- package/\n|   +-- <company>/\n|       +-- Config.in (if not using a br2-external tree)\n|       +-- <company>.mk (if not using a br2-external tree)\n|       +-- package1/\n|       |    +-- Config.in\n|       |    +-- package1.mk\n|       +-- package2/\n|           +-- Config.in\n|           +-- package2.mk\n|\n+-- Config.in (if using a br2-external tree)\n+-- external.mk (if using a br2-external tree)\n+-- external.desc (if using a br2-external tree)\n------\n\nDetails on the files shown above are given further in this chapter.\n\nNote: if you choose to place this structure outside of the Buildroot\ntree but in a br2-external tree, the <company> and possibly <boardname>\ncomponents may be superfluous and can be left out.\n\n==== Implementing layered customizations\n\nIt is quite common for a user to have several related projects that partly\nneed the same customizations. Instead of duplicating these\ncustomizations for each project, it is recommended to use a layered\ncustomization approach, as explained in this section.\n\nAlmost all of the customization methods available in Buildroot, like\npost-build scripts and root filesystem overlays, accept a\nspace-separated list of items. The specified items are always treated in\norder, from left to right. By creating more than one such item, one for\nthe common customizations and another one for the really\nproject-specific customizations, you can avoid unnecessary duplication.\nEach layer is typically embodied by a separate directory inside\n+board/<company>/+. Depending on your projects, you could even introduce\nmore than two layers.\n\nAn example directory structure for where a user has two customization\nlayers 'common' and 'fooboard' is:\n\n-----\n+-- board/\n    +-- <company>/\n        +-- common/\n        |   +-- post_build.sh\n        |   +-- rootfs_overlay/\n        |   |   +-- ...\n        |   +-- patches/\n        |       +-- ...\n        |\n        +-- fooboard/\n            +-- linux.config\n            +-- busybox.config\n            +-- <other configuration files>\n            +-- post_build.sh\n            +-- rootfs_overlay/\n            |   +-- ...\n            +-- patches/\n                +-- ...\n-----\n\nFor example, if the user has the +BR2_GLOBAL_PATCH_DIR+ configuration\noption set as:\n\n-----\nBR2_GLOBAL_PATCH_DIR=\"board/<company>/common/patches board/<company>/fooboard/patches\"\n-----\n\nthen first the patches from the 'common' layer would be applied,\nfollowed by the patches from the 'fooboard' layer.\n"
  },
  {
    "path": "docs/manual/customize-outside-br.txt",
    "content": "// -*- mode:doc -*- ;\n// vim: set syntax=asciidoc:\n\n[[outside-br-custom]]\n=== Keeping customizations outside of Buildroot\n\nAs already briefly mentioned in xref:customize-dir-structure[], you can\nplace project-specific customizations in two locations:\n\n * directly within the Buildroot tree, typically maintaining them using\n   branches in a version control system so that upgrading to a newer\n   Buildroot release is easy.\n\n * outside of the Buildroot tree, using the _br2-external_ mechanism.\n   This mechanism allows to keep package recipes, board support and\n   configuration files outside of the Buildroot tree, while still\n   having them nicely integrated in the build logic. We call this\n   location a _br2-external tree_. This section explains how to use\n   the br2-external mechanism and what to provide in a br2-external\n   tree.\n\nOne can tell Buildroot to use one or more br2-external trees by setting\nthe +BR2_EXTERNAL+ make variable set to the path(s) of the br2-external\ntree(s) to use. It can be passed to any Buildroot +make+ invocation. It\nis automatically saved in the hidden +.br2-external.mk+ file in the output\ndirectory. Thanks to this, there is no need to pass +BR2_EXTERNAL+ at\nevery +make+ invocation. It can however be changed at any time by\npassing a new value, and can be removed by passing an empty value.\n\n.Note\nThe path to a br2-external tree can be either absolute or relative.\nIf it is passed as a relative path, it is important to note that it is\ninterpreted relative to the main Buildroot source directory, *not* to\nthe Buildroot output directory.\n\n.Note:\nIf using an br2-external tree from before Buildroot 2016.11, you need to\nconvert it before you can use it with Buildroot 2016.11 onward. See\nxref:br2-external-converting[] for help on doing so.\n\nSome examples:\n\n-----\nbuildroot/ $ make BR2_EXTERNAL=/path/to/foo menuconfig\n-----\n\nFrom now on, definitions from the +/path/to/foo+ br2-external tree\nwill be used:\n\n-----\nbuildroot/ $ make\nbuildroot/ $ make legal-info\n-----\n\nWe can switch to another br2-external tree at any time:\n\n-----\nbuildroot/ $ make BR2_EXTERNAL=/where/we/have/bar xconfig\n-----\n\nWe can also use multiple br2-external trees:\n\n----\nbuildroot/ $ make BR2_EXTERNAL=/path/to/foo:/where/we/have/bar menuconfig\n----\n\nOr disable the usage of any br2-external tree:\n\n-----\nbuildroot/ $ make BR2_EXTERNAL= xconfig\n-----\n\n==== Layout of a br2-external tree\n\nA br2-external tree must contain at least those three files, described\nin the following chapters:\n\n * +external.desc+\n * +external.mk+\n * +Config.in+\n\nApart from those mandatory files, there may be additional and optional\ncontent that may be present in a br2-external tree, like the +configs/+\nor +provides/+ directories. They are described in the following chapters\nas well.\n\nA complete example br2-external tree layout is also described later.\n\n===== The +external.desc+ file\n\nThat file describes the br2-external tree: the _name_ and _description_\nfor that br2-external tree.\n\nThe format for this file is line based, with each line starting by a\nkeyword, followed by a colon and one or more spaces, followed by the\nvalue assigned to that keyword. There are two keywords currently\nrecognised:\n\n * +name+, mandatory, defines the name for that br2-external tree. That\n   name must only use ASCII characters in the set +[A-Za-z0-9_]+; any\n   other character is forbidden. Buildroot sets the variable\n   +BR2_EXTERNAL_$(NAME)_PATH+ to the absolute path of the br2-external\n   tree, so that you can use it to refer to your br2-external tree. This\n   variable is available both in Kconfig, so you can use it to source your\n   Kconfig files (see below) and in the Makefile, so that you can use it\n   to include other Makefiles (see below) or refer to other files (like\n   data files) from your br2-external tree.\n+\n.Note:\nSince it is possible to use multiple br2-external trees at once, this\n  name is used by Buildroot to generate variables for each of those trees.\n  That name is used to identify your br2-external tree, so try to come up\n  with a name that really describes your br2-external tree, in order for\n  it to be relatively unique, so that it does not clash with another name\n  from another br2-external tree, especially if you are planning on\n  somehow sharing your br2-external tree with third parties or using\n  br2-external trees from third parties.\n\n * +desc+, optional, provides a short description for that br2-external\n   tree. It shall fit on a single line, is mostly free-form (see below),\n   and is used when displaying information about a br2-external tree (e.g.\n   above the list of defconfig files, or as the prompt in the menuconfig);\n   as such, it should relatively brief (40 chars is probably a good upper\n   limit). The description is available in the +BR2_EXTERNAL_$(NAME)_DESC+\n   variable.\n\nExamples of names and the corresponding +BR2_EXTERNAL_$(NAME)_PATH+\nvariables:\n\n  * +FOO+ -> +BR2_EXTERNAL_FOO_PATH+\n  * +BAR_42+ -> +BR2_EXTERNAL_BAR_42_PATH+\n\nIn the following examples, it is assumed the name to be set to +BAR_42+.\n\n.Note:\nBoth +BR2_EXTERNAL_$(NAME)_PATH+ and `BR2_EXTERNAL_$(NAME)_DESC` are\n  available in the Kconfig files and the Makefiles. They are also\n  exported in the environment so are available in post-build, post-image\n  and in-fakeroot scripts.\n\n===== The +Config.in+ and +external.mk+ files\n\nThose files (which may each be empty) can be used to define package\nrecipes (i.e. +foo/Config.in+ and +foo/foo.mk+ like for packages bundled\nin Buildroot itself) or other custom configuration options or make logic.\n\nBuildroot automatically includes the +Config.in+ from each br2-external\ntree to make it appear in the top-level configuration menu, and includes\nthe +external.mk+ from each br2-external tree with the rest of the\nmakefile logic.\n\nThe main usage of this is to store package recipes. The recommended way\nto do this is to write a +Config.in+ file that looks like:\n\n------\nsource \"$BR2_EXTERNAL_BAR_42_PATH/package/package1/Config.in\"\nsource \"$BR2_EXTERNAL_BAR_42_PATH/package/package2/Config.in\"\n------\n\nThen, have an +external.mk+ file that looks like:\n\n------\ninclude $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk))\n------\n\nAnd then in +$(BR2_EXTERNAL_BAR_42_PATH)/package/package1+ and\n+$(BR2_EXTERNAL_BAR_42_PATH)/package/package2+ create normal\nBuildroot package recipes, as explained in xref:adding-packages[].\nIf you prefer, you can also group the packages in subdirectories\ncalled <boardname> and adapt the above paths accordingly.\n\nYou can also define custom configuration options in +Config.in+ and\ncustom make logic in +external.mk+.\n\n===== The +configs/+ directory\n\nOne can store Buildroot defconfigs in the +configs+ subdirectory of\nthe br2-external tree. Buildroot will automatically show them in the\noutput of +make list-defconfigs+ and allow them to be loaded with the\nnormal +make <name>_defconfig+ command. They will be visible in the\n'make list-defconfigs' output, below an +External configs+ label that\ncontains the name of the br2-external tree they are defined in.\n\n.Note:\nIf a defconfig file is present in more than one br2-external tree, then\nthe one from the last br2-external tree is used. It is thus possible\nto override a defconfig bundled in Buildroot or another br2-external\ntree.\n\n===== The +provides/+ directory\n\nFor some packages, Buildroot provides a choice between two (or more)\nimplementations of API-compatible such packages. For example, there is\na choice to choose either libjpeg ot jpeg-turbo; there is one between\nopenssl or libressl; there is one to select one of the known,\npre-configured toolchains...\n\nIt is possible for a br2-external to extend those choices, by providing\na set of files that define those alternatives:\n\n* +provides/toolchains.in+ defines the pre-configured toolchains, which\n  will then be listed in the toolchain selection;\n* +provides/jpeg.in+ defines the alternative libjpeg implementations;\n* +provides/openssl.in+ defines the alternative openssl implementations;\n* +provides/skeleton.in+ defines the alternative skeleton implementations;\n* +provides/init.in+ defines the alternative init system implementations, this\n  can be used to select a default skeleton for your init.\n\n===== Free-form content\n\nOne can store all the board-specific configuration files there, such\nas the kernel configuration, the root filesystem overlay, or any other\nconfiguration file for which Buildroot allows to set the location (by\nusing the +BR2_EXTERNAL_$(NAME)_PATH+ variable). For example, you\ncould set the paths to a global patch directory, to a rootfs overlay\nand to the kernel configuration file as follows (e.g. by running\n`make menuconfig` and filling in these options):\n\n----\nBR2_GLOBAL_PATCH_DIR=$(BR2_EXTERNAL_BAR_42_PATH)/patches/\nBR2_ROOTFS_OVERLAY=$(BR2_EXTERNAL_BAR_42_PATH)/board/<boardname>/overlay/\nBR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=$(BR2_EXTERNAL_BAR_42_PATH)/board/<boardname>/kernel.config\n----\n\n===== Additional Linux kernel extensions\n\nAdditional Linux kernel extensions (see xref:linux-kernel-ext[]) can\nbe added by storing them in the `linux/` directory at the root of a\nbr2-external tree.\n\n===== Example layout\n\nHere is an example layout using all features of br2-external (the sample\ncontent is shown for the file above it, when it is relevant to explain\nthe br2-external tree; this is all entirely made up just for the sake of\nillustration, of course):\n\n----\n/path/to/br2-ext-tree/\n  |- external.desc\n  |     |name: BAR_42\n  |     |desc: Example br2-external tree\n  |     `----\n  |\n  |- Config.in\n  |     |source \"$BR2_EXTERNAL_BAR_42_PATH/toolchain/toolchain-external-mine/Config.in.options\"\n  |     |source \"$BR2_EXTERNAL_BAR_42_PATH/package/pkg-1/Config.in\"\n  |     |source \"$BR2_EXTERNAL_BAR_42_PATH/package/pkg-2/Config.in\"\n  |     |source \"$BR2_EXTERNAL_BAR_42_PATH/package/my-jpeg/Config.in\"\n  |     |\n  |     |config BAR_42_FLASH_ADDR\n  |     |    hex \"my-board flash address\"\n  |     |    default 0x10AD\n  |     `----\n  |\n  |- external.mk\n  |     |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk))\n  |     |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/toolchain/*/*.mk))\n  |     |\n  |     |flash-my-board:\n  |     |    $(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/flash-image \\\n  |     |        --image $(BINARIES_DIR)/image.bin \\\n  |     |        --address $(BAR_42_FLASH_ADDR)\n  |     `----\n  |\n  |- package/pkg-1/Config.in\n  |     |config BR2_PACKAGE_PKG_1\n  |     |    bool \"pkg-1\"\n  |     |    help\n  |     |      Some help about pkg-1\n  |     `----\n  |- package/pkg-1/pkg-1.hash\n  |- package/pkg-1/pkg-1.mk\n  |     |PKG_1_VERSION = 1.2.3\n  |     |PKG_1_SITE = /some/where/to/get/pkg-1\n  |     |PKG_1_LICENSE = blabla\n  |     |\n  |     |define PKG_1_INSTALL_INIT_SYSV\n  |     |    $(INSTALL) -D -m 0755 $(PKG_1_PKGDIR)/S99my-daemon \\\n  |     |                          $(TARGET_DIR)/etc/init.d/S99my-daemon\n  |     |endef\n  |     |\n  |     |$(eval $(autotools-package))\n  |     `----\n  |- package/pkg-1/S99my-daemon\n  |\n  |- package/pkg-2/Config.in\n  |- package/pkg-2/pkg-2.hash\n  |- package/pkg-2/pkg-2.mk\n  |\n  |- provides/jpeg.in\n  |     |config BR2_PACKAGE_MY_JPEG\n  |     |    bool \"my-jpeg\"\n  |     `----\n  |- package/my-jpeg/Config.in\n  |     |config BR2_PACKAGE_PROVIDES_JPEG\n  |     |    default \"my-jpeg\" if BR2_PACKAGE_MY_JPEG\n  |     `----\n  |- package/my-jpeg/my-jpeg.mk\n  |     |# This is a normal package .mk file\n  |     |MY_JPEG_VERSION = 1.2.3\n  |     |MY_JPEG_SITE = https://example.net/some/place\n  |     |MY_JPEG_PROVIDES = jpeg\n  |     |$(eval $(autotools-package))\n  |     `----\n  |\n  |- provides/init.in\n  |     |config BR2_INIT_MINE\n  |     |    bool \"my custom init\"\n  |     |    select BR2_PACKAGE_MY_INIT\n  |     |    select BR2_PACKAGE_SKELETON_INIT_MINE if BR2_ROOTFS_SKELETON_DEFAULT\n  |     `----\n  |\n  |- provides/skeleton.in\n  |     |config BR2_ROOTFS_SKELETON_MINE\n  |     |    bool \"my custom skeleton\"\n  |     |    select BR2_PACKAGE_SKELETON_MINE\n  |     `----\n  |- package/skeleton-mine/Config.in\n  |     |config BR2_PACKAGE_SKELETON_MINE\n  |     |    bool\n  |     |    select BR2_PACKAGE_HAS_SKELETON\n  |     |\n  |     |config BR2_PACKAGE_PROVIDES_SKELETON\n  |     |    default \"skeleton-mine\" if BR2_PACKAGE_SKELETON_MINE\n  |     `----\n  |- package/skeleton-mine/skeleton-mine.mk\n  |     |SKELETON_MINE_ADD_TOOLCHAIN_DEPENDENCY = NO\n  |     |SKELETON_MINE_ADD_SKELETON_DEPENDENCY = NO\n  |     |SKELETON_MINE_PROVIDES = skeleton\n  |     |SKELETON_MINE_INSTALL_STAGING = YES\n  |     |$(eval $(generic-package))\n  |     `----\n  |\n  |- provides/toolchains.in\n  |     |config BR2_TOOLCHAIN_EXTERNAL_MINE\n  |     |    bool \"my custom toolchain\"\n  |     |    depends on BR2_some_arch\n  |     |    select BR2_INSTALL_LIBSTDCPP\n  |     `----\n  |- toolchain/toolchain-external-mine/Config.in.options\n  |     |if BR2_TOOLCHAIN_EXTERNAL_MINE\n  |     |config BR2_TOOLCHAIN_EXTERNAL_PREFIX\n  |     |    default \"arch-mine-linux-gnu\"\n  |     |config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n  |     |    default \"toolchain-external-mine\"\n  |     |endif\n  |     `----\n  |- toolchain/toolchain-external-mine/toolchain-external-mine.mk\n  |     |TOOLCHAIN_EXTERNAL_MINE_SITE = https://example.net/some/place\n  |     |TOOLCHAIN_EXTERNAL_MINE_SOURCE = my-toolchain.tar.gz\n  |     |$(eval $(toolchain-external-package))\n  |     `----\n  |\n  |- linux/Config.ext.in\n  |     |config BR2_LINUX_KERNEL_EXT_EXAMPLE_DRIVER\n  |     |    bool \"example-external-driver\"\n  |     |    help\n  |     |      Example external driver\n  |     |---\n  |- linux/linux-ext-example-driver.mk\n  |\n  |- configs/my-board_defconfig\n  |     |BR2_GLOBAL_PATCH_DIR=\"$(BR2_EXTERNAL_BAR_42_PATH)/patches/\"\n  |     |BR2_ROOTFS_OVERLAY=\"$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/overlay/\"\n  |     |BR2_ROOTFS_POST_IMAGE_SCRIPT=\"$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/post-image.sh\"\n  |     |BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/kernel.config\"\n  |     `----\n  |\n  |- patches/linux/0001-some-change.patch\n  |- patches/linux/0002-some-other-change.patch\n  |- patches/busybox/0001-fix-something.patch\n  |\n  |- board/my-board/kernel.config\n  |- board/my-board/overlay/var/www/index.html\n  |- board/my-board/overlay/var/www/my.css\n  |- board/my-board/flash-image\n  `- board/my-board/post-image.sh\n        |#!/bin/sh\n        |generate-my-binary-image \\\n        |    --root ${BINARIES_DIR}/rootfs.tar \\\n        |    --kernel ${BINARIES_DIR}/zImage \\\n        |    --dtb ${BINARIES_DIR}/my-board.dtb \\\n        |    --output ${BINARIES_DIR}/image.bin\n        `----\n----\n\nThe br2-external tree will then be visible in the menuconfig (with\nthe layout expanded):\n\n----\nExternal options  --->\n    *** Example br2-external tree (in /path/to/br2-ext-tree/)\n    [ ] pkg-1\n    [ ] pkg-2\n    (0x10AD) my-board flash address\n----\n\nIf you are using more than one br2-external tree, it would look like\n(with the layout expanded and the second one with name +FOO_27+ but no\n+desc:+ field in +external.desc+):\n\n----\nExternal options  --->\n    Example br2-external tree  --->\n        *** Example br2-external tree (in /path/to/br2-ext-tree)\n        [ ] pkg-1\n        [ ] pkg-2\n        (0x10AD) my-board flash address\n    FOO_27  --->\n        *** FOO_27 (in /path/to/another-br2-ext)\n        [ ] foo\n        [ ] bar\n----\n\nAdditionally, the jpeg provider will be visible in the jpeg choice:\n\n----\nTarget packages  --->\n    Libraries  --->\n        Graphics  --->\n            [*] jpeg support\n                jpeg variant ()  --->\n                    ( ) jpeg\n                    ( ) jpeg-turbo\n                        *** jpeg from: Example br2-external tree ***\n                    (X) my-jpeg\n                        *** jpeg from: FOO_27 ***\n                    ( ) another-jpeg\n----\n\nAnd similarly for the toolchains:\n\n----\nToolchain  --->\n    Toolchain ()  --->\n        ( ) Custom toolchain\n            *** Toolchains from: Example br2-external tree ***\n        (X) my custom toolchain\n----\n\n.Note\nThe toolchain options in +toolchain/toolchain-external-mine/Config.in.options+\nwill not appear in the `Toolchain` menu. They must be explicitly included\nfrom within the br2-external's top-level +Config.in+ and will thus appear\nin the `External options` menu.\n"
  },
  {
    "path": "docs/manual/customize-packages.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[customize-packages]]\n=== Adding project-specific packages\n\nIn general, any new package should be added directly in the +package+\ndirectory and submitted to the Buildroot upstream project. How to add\npackages to Buildroot in general is explained in full detail in\nxref:adding-packages[] and will not be repeated here. However, your\nproject may need some proprietary packages that cannot be upstreamed.\nThis section will explain how you can keep such project-specific\npackages in a project-specific directory.\n\nAs shown in xref:customize-dir-structure[], the recommended location for\nproject-specific packages is +package/<company>/+. If you are using the\nbr2-external tree feature (see xref:outside-br-custom[]) the recommended\nlocation is to put them in a sub-directory named +package/+ in your\nbr2-external tree.\n\nHowever, Buildroot will not be aware of the packages in this location,\nunless we perform some additional steps. As explained in\nxref:adding-packages[], a package in Buildroot basically consists of two\nfiles: a +.mk+ file (describing how to build the package) and a\n+Config.in+ file (describing the configuration options for this\npackage).\n\nBuildroot will automatically include the +.mk+ files in first-level\nsubdirectories of the +package+ directory (using the pattern\n+package/\\*/*.mk+). If we want Buildroot to include +.mk+ files from\ndeeper subdirectories (like +package/<company>/package1/+) then we\nsimply have to add a +.mk+ file in a first-level subdirectory that\nincludes these additional +.mk+ files. Therefore, create a file\n+package/<company>/<company>.mk+ with following contents (assuming you\nhave only one extra directory level below +package/<company>/+):\n\n-----\ninclude $(sort $(wildcard package/<company>/*/*.mk))\n-----\n\nFor the +Config.in+ files, create a file +package/<company>/Config.in+\nthat includes the +Config.in+ files of all your packages. An exhaustive\nlist has to be provided since wildcards are not supported in the source command of kconfig.\nFor example:\n\n-----\nsource \"package/<company>/package1/Config.in\"\nsource \"package/<company>/package2/Config.in\"\n-----\n\nInclude this new file +package/<company>/Config.in+ from\n+package/Config.in+, preferably in a company-specific menu to make\nmerges with future Buildroot versions easier.\n\nIf using a br2-external tree, refer to xref:outside-br-custom[] for how\nto fill in those files.\n"
  },
  {
    "path": "docs/manual/customize-patches.txt",
    "content": "// -*- mode:doc -*- ;\n// vim: set syntax=asciidoc:\n\n[[customize-patches]]\n=== Adding project-specific patches\n\nIt is sometimes useful to apply 'extra' patches to packages - on top of\nthose provided in Buildroot. This might be used to support custom\nfeatures in a project, for example, or when working on a new\narchitecture.\n\nThe +BR2_GLOBAL_PATCH_DIR+ configuration option can be used to specify\na space separated list of one or more directories containing package\npatches.\n\nFor a specific version +<packageversion>+ of a specific package\n+<packagename>+, patches are applied from +BR2_GLOBAL_PATCH_DIR+ as\nfollows:\n\n. For every directory - +<global-patch-dir>+ - that exists in\n  +BR2_GLOBAL_PATCH_DIR+, a +<package-patch-dir>+ will be determined as\n  follows:\n+\n* +<global-patch-dir>/<packagename>/<packageversion>/+ if the\n  directory exists.\n+\n* Otherwise, +<global-patch-dir>/<packagename>+ if the directory\n  exists.\n\n. Patches will then be applied from a +<package-patch-dir>+ as\n  follows:\n+\n* If a +series+ file exists in the package directory, then patches are\n  applied according to the +series+ file;\n+\n* Otherwise, patch files matching +*.patch+ are applied in\n  alphabetical order.  So, to ensure they are applied in the right\n  order, it is highly recommended to name the patch files like this:\n  +<number>-<description>.patch+, where +<number>+ refers to the\n  'apply order'.\n\nFor information about how patches are applied for a package, see\nxref:patch-apply-order[]\n\nThe +BR2_GLOBAL_PATCH_DIR+ option is the preferred method for\nspecifying a custom patch directory for packages. It can be used to\nspecify a patch directory for any package in buildroot. It should also\nbe used in place of the custom patch directory options that are\navailable for packages such as U-Boot and Barebox. By doing this, it\nwill allow a user to manage their patches from one top-level\ndirectory.\n\nThe exception to +BR2_GLOBAL_PATCH_DIR+ being the preferred method for\nspecifying custom patches is +BR2_LINUX_KERNEL_PATCH+.\n+BR2_LINUX_KERNEL_PATCH+ should be used to specify kernel patches that\nare available at a URL. *Note:* +BR2_LINUX_KERNEL_PATCH+ specifies kernel\npatches that are applied after patches available in +BR2_GLOBAL_PATCH_DIR+,\nas it is done from a post-patch hook of the Linux package.\n\n"
  },
  {
    "path": "docs/manual/customize-post-image.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Customization _after_ the images have been created\n\nWhile post-build scripts (xref:rootfs-custom[]) are run _before_\nbuilding the filesystem image, kernel and bootloader, *post-image\nscripts* can be used to perform some specific actions _after_ all images\nhave been created.\n\nPost-image scripts can for example be used to automatically extract your\nroot filesystem tarball in a location exported by your NFS server, or\nto create a special firmware image that bundles your root filesystem and\nkernel image, or any other custom action required for your project.\n\nTo enable this feature, specify a space-separated list of post-image\nscripts in config option +BR2_ROOTFS_POST_IMAGE_SCRIPT+ (in the +System\nconfiguration+ menu). If you specify a relative path, it will be\nrelative to the root of the Buildroot tree.\n\nJust like post-build scripts, post-image scripts are run with the main\nBuildroot tree as current working directory. The path to the +images+\noutput directory is passed as the first argument to each script. If the\nconfig option +BR2_ROOTFS_POST_SCRIPT_ARGS+ is not empty, these\narguments will be passed to the script too. All the scripts will be\npassed the exact same set of arguments, it is not possible to pass\ndifferent sets of arguments to each script.\n\nAgain just like for the post-build scripts, the scripts have access to\nthe environment variables +BR2_CONFIG+, +HOST_DIR+, +STAGING_DIR+,\n+TARGET_DIR+, +BUILD_DIR+, +BINARIES_DIR+, +CONFIG_DIR+ and\n+BASE_DIR+.\n\nThe post-image scripts will be executed as the user that executes\nBuildroot, which should normally _not_ be the root user. Therefore, any\naction requiring root permissions in one of these scripts will require\nspecial handling (usage of fakeroot or sudo), which is left to the\nscript developer.\n"
  },
  {
    "path": "docs/manual/customize-quick-guide.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Quick guide to storing your project-specific customizations\n\nEarlier in this chapter, the different methods for making\nproject-specific customizations have been described. This section will\nnow summarize all this by providing step-by-step instructions to storing your\nproject-specific customizations. Clearly, the steps that are not relevant to\nyour project can be skipped.\n\n1. +make menuconfig+ to configure toolchain, packages and kernel.\n1. +make linux-menuconfig+ to update the kernel config, similar for\n   other configuration like busybox, uclibc, ...\n1. +mkdir -p board/<manufacturer>/<boardname>+\n1. Set the following options to +board/<manufacturer>/<boardname>/<package>.config+\n   (as far as they are relevant):\n   * +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+\n   * +BR2_PACKAGE_BUSYBOX_CONFIG+\n   * +BR2_UCLIBC_CONFIG+\n   * +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE+\n   * +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE+\n   * +BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE+\n1. Write the configuration files:\n   * +make linux-update-defconfig+\n   * +make busybox-update-config+\n   * +make uclibc-update-config+\n   * +cp <output>/build/at91bootstrap3-*/.config\n     board/<manufacturer>/<boardname>/at91bootstrap3.config+\n   * +make barebox-update-defconfig+\n   * +make uboot-update-defconfig+\n1. Create +board/<manufacturer>/<boardname>/rootfs-overlay/+ and fill it\n   with additional files you need on your rootfs, e.g.\n   +board/<manufacturer>/<boardname>/rootfs-overlay/etc/inittab+.\n   Set +BR2_ROOTFS_OVERLAY+\n   to +board/<manufacturer>/<boardname>/rootfs-overlay+.\n1. Create a post-build script\n   +board/<manufacturer>/<boardname>/post_build.sh+. Set\n   +BR2_ROOTFS_POST_BUILD_SCRIPT+ to\n   +board/<manufacturer>/<boardname>/post_build.sh+\n1. If additional setuid permissions have to be set or device nodes have\n   to be created, create +board/<manufacturer>/<boardname>/device_table.txt+\n   and add that path to +BR2_ROOTFS_DEVICE_TABLE+.\n1. If additional user accounts have to be created, create\n   +board/<manufacturer>/<boardname>/users_table.txt+ and add that path\n   to +BR2_ROOTFS_USERS_TABLES+.\n1. To add custom patches to certain packages, set +BR2_GLOBAL_PATCH_DIR+\n   to +board/<manufacturer>/<boardname>/patches/+ and add your patches\n   for each package in a subdirectory named after the package. Each\n   patch should be called +<packagename>-<num>-<description>.patch+.\n1. Specifically for the Linux kernel, there also exists the option\n   +BR2_LINUX_KERNEL_PATCH+ with as main advantage that it can also\n   download patches from a URL. If you do not need this,\n   +BR2_GLOBAL_PATCH_DIR+ is preferred. U-Boot, Barebox, at91bootstrap\n   and at91bootstrap3 also have separate options, but these do not\n   provide any advantage over +BR2_GLOBAL_PATCH_DIR+ and will likely be\n   removed in the future.\n1. If you need to add project-specific packages, create\n   +package/<manufacturer>/+ and place your packages in that\n   directory. Create an overall +<manufacturer>.mk+ file that\n   includes the +.mk+ files of all your packages. Create an overall\n   +Config.in+ file that sources the +Config.in+ files of all your\n   packages. Include this +Config.in+ file from Buildroot's\n   +package/Config.in+ file.\n1. +make savedefconfig+ to save the buildroot configuration.\n1. +cp defconfig configs/<boardname>_defconfig+\n"
  },
  {
    "path": "docs/manual/customize-rootfs.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[rootfs-custom]]\n=== Customizing the generated target filesystem\n\nBesides changing the configuration through +make *config+,\nthere are a few other ways to customize the resulting target filesystem.\n\nThe two recommended methods, which can co-exist, are root filesystem\noverlay(s) and post build script(s).\n\nRoot filesystem overlays (+BR2_ROOTFS_OVERLAY+)::\n+\nA filesystem overlay is a tree of files that is copied directly\n  over the target filesystem after it has been built. To enable this\n  feature, set config option +BR2_ROOTFS_OVERLAY+ (in the +System\n  configuration+ menu) to the root of the overlay. You can even specify\n  multiple overlays, space-separated. If you specify a relative path,\n  it will be relative to the root of the Buildroot tree. Hidden\n  directories of version control systems, like +.git+, +.svn+, +.hg+,\n  etc., files called +.empty+ and files ending in +~+ are excluded from\n  the copy.\n+\nWhen +BR2_ROOTFS_MERGED_USR+ is enabled, then the overlay must not\n  contain the '/bin', '/lib' or '/sbin' directories, as Buildroot will\n  create them as symbolic links to the relevant folders in '/usr'.  In\n  such a situation, should the overlay have any programs or libraries,\n  they should be placed in '/usr/bin', '/usr/sbin' and '/usr/lib'.\n+\nAs shown in xref:customize-dir-structure[], the recommended path for\n  this overlay is +board/<company>/<boardname>/rootfs-overlay+.\n\nPost-build scripts (+BR2_ROOTFS_POST_BUILD_SCRIPT+)::\n+\nPost-build scripts are shell scripts called 'after' Buildroot builds\n  all the selected software, but 'before' the rootfs images are\n  assembled. To enable this feature, specify a space-separated list of\n  post-build scripts in config option +BR2_ROOTFS_POST_BUILD_SCRIPT+ (in\n  the +System configuration+ menu). If you specify a relative path, it\n  will be relative to the root of the Buildroot tree.\n+\nUsing post-build scripts, you can remove or modify any file in your\n  target filesystem. You should, however, use this feature with care.\n  Whenever you find that a certain package generates wrong or unneeded\n  files, you should fix that package rather than work around it with some\n  post-build cleanup scripts.\n+\nAs shown in xref:customize-dir-structure[], the recommended path for\n  this script is +board/<company>/<boardname>/post_build.sh+.\n+\nThe post-build scripts are run with the main Buildroot tree as current\n  working directory. The path to the target filesystem is passed as the\n  first argument to each script. If the config option\n  +BR2_ROOTFS_POST_SCRIPT_ARGS+ is not empty, these arguments will be\n  passed to the script too. All the scripts will be passed the exact\n  same set of arguments, it is not possible to pass different sets of\n  arguments to each script.\n+\nIn addition, you may also use these environment variables:\n\n  - +BR2_CONFIG+: the path to the Buildroot .config file\n  - +CONFIG_DIR+: the directory containing the .config file, and\n    therefore the top-level Buildroot Makefile to use (which is\n    correct for both in-tree and out-of-tree builds)\n  - +HOST_DIR+, +STAGING_DIR+, +TARGET_DIR+: see\n    xref:generic-package-reference[]\n  - +BUILD_DIR+: the directory where packages are extracted and built\n  - +BINARIES_DIR+: the place where all binary files (aka images) are\n    stored\n  - +BASE_DIR+: the base output directory\n\nBelow three more methods of customizing the target filesystem are\ndescribed, but they are not recommended.\n\nDirect modification of the target filesystem::\n+\nFor temporary modifications, you can modify the target filesystem\n  directly and rebuild the image. The target filesystem is available\n  under +output/target/+. After making your changes, run +make+ to\n  rebuild the target filesystem image.\n+\nThis method allows you to do anything to the target filesystem, but if\n  you need to clean your Buildroot tree using +make clean+, these\n  changes will be lost. Such cleaning is necessary in several cases,\n  refer to xref:full-rebuild[] for details. This solution is therefore\n  only useful for quick tests: _changes do not survive the +make clean+\n  command_. Once you have validated your changes, you should make sure\n  that they will persist after a +make clean+, using a root filesystem\n  overlay or a post-build script.\n\nCustom target skeleton (+BR2_ROOTFS_SKELETON_CUSTOM+)::\n+\nThe root filesystem image is created from a target skeleton, on top of\n  which all packages install their files. The skeleton is copied to the\n  target directory +output/target+ before any package is built and\n  installed. The default target skeleton provides the standard Unix\n  filesystem layout and some basic init scripts and configuration files.\n+\nIf the default skeleton (available under +system/skeleton+) does not\n  match your needs, you would typically use a root filesystem overlay or\n  post-build script to adapt it. However, if the default skeleton is\n  entirely different than what you need, using a custom skeleton may be\n  more suitable.\n+\nTo enable this feature, enable config option\n  +BR2_ROOTFS_SKELETON_CUSTOM+ and set +BR2_ROOTFS_SKELETON_CUSTOM_PATH+\n  to the path of your custom skeleton. Both options are available in the\n  +System configuration+ menu. If you specify a relative path, it will\n  be relative to the root of the Buildroot tree.\n+\nCustom skeletons don't need to contain the '/bin', '/lib' or '/sbin'\n  directories, since they are created automatically during the build.\n  When +BR2_ROOTFS_MERGED_USR+ is enabled, then the custom skeleton must\n  not contain the '/bin', '/lib' or '/sbin' directories, as Buildroot\n  will create them as symbolic links to the relevant folders in '/usr'.\n  In such a situation, should the skeleton have any programs or\n  libraries, they should be placed in '/usr/bin', '/usr/sbin' and\n  '/usr/lib'.\n+\nThis method is not recommended because it duplicates the entire\n  skeleton, which prevents taking advantage of the fixes or improvements\n  brought to the default skeleton in later Buildroot releases.\n\nPost-fakeroot scripts (+BR2_ROOTFS_POST_FAKEROOT_SCRIPT+)::\n+\nWhen aggregating the final images, some parts of the process requires\n  root rights: creating device nodes in `/dev`, setting permissions or\n  ownership to files and directories... To avoid requiring actual root\n  rights, Buildroot uses +fakeroot+ to simulate root rights. This is not\n  a complete substitute for actually being root, but is enough for what\n  Buildroot needs.\n+\nPost-fakeroot scripts are shell scripts that are called at the 'end' of\n  the fakeroot phase, 'right before' the filesystem image generator is\n  called. As such, they are called in the fakeroot context.\n+\nPost-fakeroot scripts can be useful in case you need to tweak the\n  filesystem to do modifications that are usually only available to the\n  root user.\n+\n.Note:\nIt is recommended to use the existing mechanisms to set file permissions\n  or create entries in `/dev` (see xref:customize-device-permission[]) or\n  to create users (see xref:customize-users[])\n+\n.Note:\nThe difference between post-build scripts (above) and fakeroot scripts,\n  is that post-build scripts are not called in the fakeroot context.\n+\n.Note:\nUsing `fakeroot` is not an absolute substitute for actually being root.\n  `fakeroot` only ever fakes the file access rights and types (regular,\n  block-or-char device...) and uid/gid; these are emulated in-memory.\n\ninclude::customize-device-permission-tables.txt[]\n"
  },
  {
    "path": "docs/manual/customize-users-tables.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[customize-users]]\n=== Adding custom user accounts\n\nSometimes it is needed to add specific users in the target system.\nTo cover this requirement, Buildroot provides support for so-called\n_users tables_. To use this feature, set config option\n+BR2_ROOTFS_USERS_TABLES+ to a space-separated list of users tables,\nregular text files following the xref:makeuser-syntax[makeusers syntax].\n\nAs shown in xref:customize-dir-structure[], the recommended location for\nsuch files is +board/<company>/<boardname>/+.\n\nIt should be noted that if the custom users are related to a specific\napplication, you should set variable +FOO_USERS+ in the package's +.mk+\nfile instead (see xref:generic-package-reference[]).\n"
  },
  {
    "path": "docs/manual/customize.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[customize]]\n== Project-specific customization\n\nTypical actions you may need to perform for a given project are:\n\n* configuring Buildroot (including build options and toolchain,\n  bootloader, kernel, package and filesystem image type selection)\n* configuring other components, like the Linux kernel and BusyBox\n* customizing the generated target filesystem\n  ** adding or overwriting files on the target filesystem (using\n     +BR2_ROOTFS_OVERLAY+)\n  ** modifying or deleting files on the target filesystem (using\n     +BR2_ROOTFS_POST_BUILD_SCRIPT+)\n  ** running arbitrary commands prior to generating the filesystem image\n     (using +BR2_ROOTFS_POST_BUILD_SCRIPT+)\n  ** setting file permissions and ownership (using\n     +BR2_ROOTFS_DEVICE_TABLE+)\n  ** adding custom devices nodes (using\n     +BR2_ROOTFS_STATIC_DEVICE_TABLE+)\n* adding custom user accounts (using +BR2_ROOTFS_USERS_TABLES+)\n* running arbitrary commands after generating the filesystem image\n  (using +BR2_ROOTFS_POST_IMAGE_SCRIPT+)\n* adding project-specific patches to some packages (using\n  +BR2_GLOBAL_PATCH_DIR+)\n* adding project-specific packages\n\nAn important note regarding such 'project-specific' customizations:\nplease carefully consider which changes are indeed project-specific and\nwhich changes are also useful to developers outside your project. The\nBuildroot community highly recommends and encourages the upstreaming of\nimprovements, packages and board support to the official Buildroot\nproject. Of course, it is sometimes not possible or desirable to\nupstream because the changes are highly specific or proprietary.\n\nThis chapter describes how to make such project-specific customizations\nin Buildroot and how to store them in a way that you can build the same\nimage in a reproducible way, even after running 'make clean'. By\nfollowing the recommended strategy, you can even use the same Buildroot\ntree to build multiple distinct projects!\n\ninclude::customize-directory-structure.txt[]\n\ninclude::customize-outside-br.txt[]\n\ninclude::customize-configuration.txt[]\n\ninclude::customize-rootfs.txt[]\n\ninclude::customize-users-tables.txt[]\n\ninclude::customize-post-image.txt[]\n\ninclude::customize-patches.txt[]\n\ninclude::customize-packages.txt[]\n\ninclude::customize-quick-guide.txt[]\n"
  },
  {
    "path": "docs/manual/debugging-buildroot.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[debugging-buildroot]]\n\n== Debugging Buildroot\n\nIt is possible to instrument the steps +Buildroot+ does when building\npackages. Define the variable +BR2_INSTRUMENTATION_SCRIPTS+ to contain\nthe path of one or more scripts (or other executables), in a\nspace-separated list, you want called before and after each step. The\nscripts are called in sequence, with three parameters:\n\n  - +start+ or +end+ to denote the start (resp. the end) of a step;\n  - the name of the step about to be started, or which just ended;\n  - the name of the package.\n\nFor example :\n\n----\nmake BR2_INSTRUMENTATION_SCRIPTS=\"/path/to/my/script1 /path/to/my/script2\"\n----\n\nThe list of steps is:\n\n  - +extract+\n  - +patch+\n  - +configure+\n  - +build+\n  - +install-host+, when a host-package is installed in +$(HOST_DIR)+\n  - +install-target+, when a target-package is installed in +$(TARGET_DIR)+\n  - +install-staging+, when a target-package is installed in +$(STAGING_DIR)+\n  - +install-image+, when a target-package installs files in +$(BINARIES_DIR)+\n\nThe script has access to the following variables:\n\n  - +BR2_CONFIG+: the path to the Buildroot .config file\n  - +HOST_DIR+, +STAGING_DIR+, +TARGET_DIR+: see\n    xref:generic-package-reference[]\n  - +BUILD_DIR+: the directory where packages are extracted and built\n  - +BINARIES_DIR+: the place where all binary files (aka images) are\n    stored\n  - +BASE_DIR+: the base output directory\n"
  },
  {
    "path": "docs/manual/developers.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[DEVELOPERS]]\n== DEVELOPERS file and get-developers\n\nThe main Buildroot directory contains a file named +DEVELOPERS+ that\nlists the developers involved with various areas of Buildroot. Thanks\nto this file, the +get-developers+ tool allows to:\n\n- Calculate the list of developers to whom patches should be sent, by\n  parsing the patches and matching the modified files with the\n  relevant developers. See xref:submitting-patches[] for details.\n\n- Find which developers are taking care of a given architecture or\n  package, so that they can be notified when a build failure occurs on\n  this architecture or package. This is done in interaction with\n  Buildroot's autobuild infrastructure.\n\nWe ask developers adding new packages, new boards, or generally new\nfunctionality in Buildroot, to register themselves in the +DEVELOPERS+\nfile. As an example, we expect a developer contributing a new package\nto include in his patch the appropriate modification to the\n+DEVELOPERS+ file.\n\nThe +DEVELOPERS+ file format is documented in detail inside the file\nitself.\n\nThe +get-developers+ tool, located in +utils/+ allows to use\nthe +DEVELOPERS+ file for various tasks:\n\n- When passing one or several patches as command line argument,\n  +get-developers+ will return the appropriate +git send-email+\n  command. If the +-e+ option is passed, only the email addresses are\n  printed in a format suitable for +git send-email --cc-cmd+.\n\n- When using the +-a <arch>+ command line option, +get-developers+ will\n  return the list of developers in charge of the given architecture.\n\n- When using the +-p <package>+ command line option, +get-developers+\n  will return the list of developers in charge of the given package.\n\n- When using the +-c+ command line option, +get-developers+ will look\n  at all files under version control in the Buildroot repository, and\n  list the ones that are not handled by any developer. The purpose of\n  this option is to help completing the +DEVELOPERS+ file.\n\n- When using without any arguments, it validates the integrity of the\n  DEVELOPERS file and will note WARNINGS for items that don't match.\n"
  },
  {
    "path": "docs/manual/download-infra.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[download-infra]]\n\n== Download infrastructure\n\nTODO\n"
  },
  {
    "path": "docs/manual/download-location.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[download-location]]\n\n==== Location of downloaded packages\n\nThe various tarballs that are downloaded by Buildroot are all stored\nin +BR2_DL_DIR+, which by default is the +dl+ directory. If you want\nto keep a complete version of Buildroot which is known to be working\nwith the associated tarballs, you can make a copy of this directory.\nThis will allow you to regenerate the toolchain and the target\nfilesystem with exactly the same versions.\n\nIf you maintain several Buildroot trees, it might be better to have a\nshared download location. This can be achieved by pointing the\n+BR2_DL_DIR+ environment variable to a directory. If this is\nset, then the value of +BR2_DL_DIR+ in the Buildroot configuration is\noverridden. The following line should be added to +<~/.bashrc>+.\n\n-----------------\n export BR2_DL_DIR=<shared download location>\n-----------------\n\nThe download location can also be set in the +.config+ file, with the\n+BR2_DL_DIR+ option. Unlike most options in the .config file, this value\nis overridden by the +BR2_DL_DIR+ environment variable.\n"
  },
  {
    "path": "docs/manual/eclipse-integration.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n=== Integration with Eclipse\n\nWhile a part of the embedded Linux developers like classical text\neditors like Vim or Emacs, and command-line based interfaces, a number\nof other embedded Linux developers like richer graphical interfaces to\ndo their development work. Eclipse being one of the most popular\nIntegrated Development Environment, Buildroot integrates with Eclipse\nin order to ease the development work of Eclipse users.\n\nOur integration with Eclipse simplifies the compilation, remote\nexecution and remote debugging of applications and libraries that are\nbuilt on top of a Buildroot system. It does not integrate the\nBuildroot configuration and build processes themselves with\nEclipse. Therefore, the typical usage model of our Eclipse integration\nwould be:\n\n* Configure your Buildroot system with +make menuconfig+, +make\n  xconfig+ or any other configuration interface provided with\n  Buildroot.\n* Build your Buildroot system by running +make+.\n* Start Eclipse to develop, execute and debug your own custom\n  applications and libraries, that will rely on the libraries built\n  and installed by Buildroot.\n\nThe Buildroot Eclipse integration installation process and usage is\ndescribed in detail at\nhttps://github.com/mbats/eclipse-buildroot-bundle/wiki.\n"
  },
  {
    "path": "docs/manual/faq-troubleshooting.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n== Frequently Asked Questions & Troubleshooting\n\n[[faq-boot-hang-after-starting]]\n=== The boot hangs after 'Starting network...'\n\nIf the boot process seems to hang after the following messages\n(messages not necessarily exactly similar, depending on the list of\npackages selected):\n\n------------------------\nFreeing init memory: 3972K\nInitializing random number generator... done.\nStarting network...\nStarting dropbear sshd: generating rsa key... generating dsa key... OK\n------------------------\n\nthen it means that your system is running, but didn't start a shell on\nthe serial console. In order to have the system start a shell on your\nserial console, you have to go into the Buildroot configuration, in\n+System configuration+, modify +Run a getty (login prompt) after boot+\nand set the appropriate port and baud rate in the +getty options+\nsubmenu. This will automatically tune the +/etc/inittab+ file of the\ngenerated system so that a shell starts on the correct serial port.\n\n[[faq-no-compiler-on-target]]\n=== Why is there no compiler on the target?\n\nIt has been decided that support for the _native compiler on the\ntarget_ would be stopped from the Buildroot-2012.11 release because:\n\n* this feature was neither maintained nor tested, and often broken;\n* this feature was only available for Buildroot toolchains;\n* Buildroot mostly targets _small_ or _very small_ target hardware\n  with limited resource onboard (CPU, ram, mass-storage), for which\n  compiling on the target does not make much sense;\n* Buildroot aims at easing the cross-compilation, making native\n  compilation on the target unnecessary.\n\nIf you need a compiler on your target anyway, then Buildroot is not\nsuitable for your purpose. In such case, you need a _real\ndistribution_ and you should opt for something like:\n\n* http://www.openembedded.org[openembedded]\n* https://www.yoctoproject.org[yocto]\n* http://www.emdebian.org[emdebian]\n* https://fedoraproject.org/wiki/Architectures[Fedora]\n* http://en.opensuse.org/Portal:ARM[openSUSE ARM]\n* http://archlinuxarm.org[Arch Linux ARM]\n* ...\n\n[[faq-no-dev-files-on-target]]\n=== Why are there no development files on the target?\n\nSince there is no compiler available on the target (see\nxref:faq-no-compiler-on-target[]), it does not make sense to waste\nspace with headers or static libraries.\n\nTherefore, those files are always removed from the target since the\nBuildroot-2012.11 release.\n\n[[faq-no-doc-on-target]]\n=== Why is there no documentation on the target?\n\nBecause Buildroot mostly targets _small_ or _very small_ target\nhardware with limited resource onboard (CPU, ram, mass-storage), it\ndoes not make sense to waste space with the documentation data.\n\nIf you need documentation data on your target anyway, then Buildroot\nis not suitable for your purpose, and you should look for a _real\ndistribution_ (see: xref:faq-no-compiler-on-target[]).\n\n[[faq-why-not-visible-package]]\n=== Why are some packages not visible in the Buildroot config menu?\n\nIf a package exists in the Buildroot tree and does not appear in the\nconfig menu, this most likely means that some of the package's\ndependencies are not met.\n\nTo know more about the dependencies of a package, search for the\npackage symbol in the config menu (see xref:make-tips[]).\n\nThen, you may have to recursively enable several options (which\ncorrespond to the unmet dependencies) to finally be able to select\nthe package.\n\nIf the package is not visible due to some unmet toolchain options,\nthen you should certainly run a full rebuild (see xref:make-tips[] for\nmore explanations).\n\n[[faq-why-not-use-target-as-chroot]]\n=== Why not use the target directory as a chroot directory?\n\nThere are plenty of reasons to *not* use the target directory a chroot\none, among these:\n\n* file ownerships, modes and permissions are not correctly set in the\n  target directory;\n* device nodes are not created in the target directory.\n\nFor these reasons, commands run through chroot, using the target\ndirectory as the new root, will most likely fail.\n\nIf you want to run the target filesystem inside a chroot, or as an NFS\nroot, then use the tarball image generated in +images/+ and extract it\nas root.\n\n[[faq-no-binary-packages]]\n=== Why doesn't Buildroot generate binary packages (.deb, .ipkg...)?\n\nOne feature that is often discussed on the Buildroot list is the\ngeneral topic of \"package management\". To summarize, the idea\nwould be to add some tracking of which Buildroot package installs\nwhat files, with the goals of:\n\n * being able to remove files installed by a package when this package\n   gets unselected from the menuconfig;\n\n * being able to generate binary packages (ipk or other format) that\n   can be installed on the target without re-generating a new root\n   filesystem image.\n\nIn general, most people think it is easy to do: just track which package\ninstalled what and remove it when the package is unselected. However, it\nis much more complicated than that:\n\n * It is not only about the +target/+ directory, but also the sysroot in\n   +host/<tuple>/sysroot+ and the +host/+ directory itself. All files\n   installed in those directories by various packages must be tracked.\n\n * When a package is unselected from the configuration, it is not\n   sufficient to remove just the files it installed. One must also\n   remove all its reverse dependencies (i.e. packages relying on it)\n   and rebuild all those packages. For example, package A depends\n   optionally on the OpenSSL library. Both are selected, and Buildroot\n   is built. Package A is built with crypto support using OpenSSL.\n   Later on, OpenSSL gets unselected from the configuration, but\n   package A remains (since OpenSSL is an optional dependency, this\n   is possible.) If only OpenSSL files are removed, then the files\n   installed by package A are broken: they use a library that is no\n   longer present on the target. Although this is technically doable,\n   it adds a lot of complexity to Buildroot, which goes against the\n   simplicity we try to stick to.\n\n * In addition to the previous problem, there is the case where the\n   optional dependency is not even known to Buildroot. For example,\n   package A in version 1.0 never used OpenSSL, but in version 2.0 it\n   automatically uses OpenSSL if available. If the Buildroot .mk file\n   hasn't been updated to take this into account, then package A will\n   not be part of the reverse dependencies of OpenSSL and will not be\n   removed and rebuilt when OpenSSL is removed. For sure, the .mk file\n   of package A should be fixed to mention this optional dependency,\n   but in the mean time, you can have non-reproducible behaviors.\n\n * The request is to also allow changes in the menuconfig to be\n   applied on the output directory without having to rebuild\n   everything from scratch. However, this is very difficult to achieve\n   in a reliable way: what happens when the suboptions of a package\n   are changed (we would have to detect this, and rebuild the package\n   from scratch and potentially all its reverse dependencies), what\n   happens if toolchain options are changed, etc. At the moment, what\n   Buildroot does is clear and simple so its behaviour is very\n   reliable and it is easy to support users. If configuration changes\n   done in menuconfig are applied after the next make, then it has to\n   work correctly and properly in all situations, and not have some\n   bizarre corner cases. The risk is to get bug reports like \"I have\n   enabled package A, B and C, then ran make, then disabled package\n   C and enabled package D and ran make, then re-enabled package C\n   and enabled package E and then there is a build failure\". Or worse\n   \"I did some configuration, then built, then did some changes,\n   built, some more changes, built, some more changes, built, and now\n   it fails, but I don't remember all the changes I did and in which\n   order\". This will be impossible to support.\n\nFor all these reasons, the conclusion is that adding tracking of\ninstalled files to remove them when the package is unselected, or to\ngenerate a repository of binary packages, is something that is very\nhard to achieve reliably and will add a lot of complexity.\n\nOn this matter, the Buildroot developers make this position statement:\n\n * Buildroot strives to make it easy to generate a root filesystem (hence\n   the name, by the way.) That is what we want to make Buildroot good at:\n   building root filesystems.\n\n * Buildroot is not meant to be a distribution (or rather, a distribution\n   generator.) It is the opinion of most Buildroot developers that this\n   is not a goal we should pursue. We believe that there are other tools\n   better suited to generate a distro than Buildroot is. For example,\n   http://openembedded.org/[Open Embedded], or https://openwrt.org/[openWRT],\n   are such tools.\n\n * We prefer to push Buildroot in a direction that makes it easy (or even\n   easier) to generate complete root filesystems. This is what makes\n   Buildroot stands out in the crowd (among other things, of course!)\n\n * We believe that for most embedded Linux systems, binary packages are\n   not necessary, and potentially harmful. When binary packages are\n   used, it means that the system can be partially upgraded, which\n   creates an enormous number of possible combinations of package\n   versions that should be tested before doing the upgrade on the\n   embedded device. On the other hand, by doing complete system\n   upgrades by upgrading the entire root filesystem image at once,\n   the image deployed to the embedded system is guaranteed to really\n   be the one that has been tested and validated.\n\n[[faq-speeding-up-build]]\n=== How to speed-up the build process?\n\nSince Buildroot often involves doing full rebuilds of the entire\nsystem that can be quite long, we provide below a number of tips to\nhelp reduce the build time:\n\n * Use a pre-built external toolchain instead of the default Buildroot\n   internal toolchain. By using a pre-built Linaro toolchain (on ARM)\n   or a Sourcery CodeBench toolchain (for ARM, x86, x86-64, MIPS,\n   etc.), you will save the build time of the toolchain at each\n   complete rebuild, approximately 15 to 20 minutes. Note that\n   temporarily using an external toolchain does not prevent you to\n   switch back to an internal toolchain (that may provide a higher\n   level of customization) once the rest of your system is working;\n\n * Use the +ccache+ compiler cache (see: xref:ccache[]);\n\n * Learn about rebuilding only the few packages you actually care\n   about (see xref:rebuild-pkg[]), but beware that sometimes full\n   rebuilds are anyway necessary (see xref:full-rebuild[]);\n\n * Make sure you are not using a virtual machine for the Linux system\n   used to run Buildroot. Most of the virtual machine technologies are\n   known to cause a significant performance impact on I/O, which is\n   really important for building source code;\n\n * Make sure that you're using only local files: do not attempt to do\n   a build over NFS, which significantly slows down the build. Having\n   the Buildroot download folder available locally also helps a bit.\n\n * Buy new hardware. SSDs and lots of RAM are key to speeding up the\n   builds.\n\n * Experiment with top-level parallel build, see\n   xref:top-level-parallel-build[].\n"
  },
  {
    "path": "docs/manual/getting.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[getting-buildroot]]\n== Getting Buildroot\n\nBuildroot releases are made every 3 months, in February, May, August and\nNovember. Release numbers are in the format YYYY.MM, so for example\n2013.02, 2014.08.\n\nRelease tarballs are available at http://buildroot.org/downloads/[].\n\nFor your convenience, a https://www.vagrantup.com/[Vagrantfile] is\navailable in `support/misc/Vagrantfile` in the Buildroot source tree\nto quickly set up a virtual machine with the needed dependencies to\nget started.\n\nIf you want to setup an isolated buildroot environment on Linux or Mac\nOs X, paste this line onto your terminal:\n\n--------------------\ncurl -O https://buildroot.org/downloads/Vagrantfile; vagrant up\n--------------------\n\nIf you are on Windows, paste this into your powershell:\n\n--------------------\n(new-object System.Net.WebClient).DownloadFile(\n\"https://buildroot.org/downloads/Vagrantfile\",\"Vagrantfile\");\nvagrant up\n--------------------\n\nIf you want to follow development, you can use the daily snapshots or\nmake a clone of the Git repository. Refer to the\nhttp://buildroot.org/download[Download page] of the Buildroot website\nfor more details.\n"
  },
  {
    "path": "docs/manual/how-buildroot-works.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n== How Buildroot works\n\nAs mentioned above, Buildroot is basically a set of Makefiles that\ndownload, configure, and compile software with the correct options. It\nalso includes patches for various software packages - mainly the ones\ninvolved in the cross-compilation toolchain (+gcc+, +binutils+ and\n+uClibc+).\n\nThere is basically one Makefile per software package, and they are\nnamed with the +.mk+ extension. Makefiles are split into many different\nparts.\n\n* The +toolchain/+ directory contains the Makefiles\n  and associated files for all software related to the\n  cross-compilation toolchain: +binutils+, +gcc+, +gdb+,\n  +kernel-headers+ and +uClibc+.\n\n* The +arch/+ directory contains the definitions for all the processor\n  architectures that are supported by Buildroot.\n\n* The +package/+ directory contains the Makefiles and\n  associated files for all user-space tools and libraries that Buildroot\n  can compile and add to the target root filesystem. There is one\n  sub-directory per package.\n\n* The +linux/+ directory contains the Makefiles and associated files for\n  the Linux kernel.\n\n* The +boot/+ directory contains the Makefiles and associated files for\n  the bootloaders supported by Buildroot.\n\n* The +system/+ directory contains support for system integration, e.g.\n  the target filesystem skeleton and the selection of an init system.\n\n* The +fs/+ directory contains the Makefiles and\n  associated files for software related to the generation of the\n  target root filesystem image.\n\nEach directory contains at least 2 files:\n\n* +something.mk+ is the Makefile that downloads, configures,\n  compiles and installs the package +something+.\n\n* +Config.in+ is a part of the configuration tool\n  description file. It describes the options related to the\n  package.\n\nThe main Makefile performs the following steps (once the\nconfiguration is done):\n\n* Create all the output directories: +staging+, +target+, +build+,\n  etc. in the output directory (+output/+ by default,\n  another value can be specified using +O=+)\n\n* Generate the toolchain target. When an internal toolchain is used, this\n  means generating the cross-compilation toolchain. When an external\n  toolchain is used, this means checking the features of the external\n  toolchain and importing it into the Buildroot environment.\n\n* Generate all the targets listed in the +TARGETS+ variable. This\n  variable is filled by all the individual components'\n  Makefiles. Generating these targets will trigger the compilation of\n  the userspace packages (libraries, programs), the kernel, the\n  bootloader and the generation of the root filesystem images,\n  depending on the configuration.\n\n"
  },
  {
    "path": "docs/manual/introduction.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n== About Buildroot\n\nBuildroot is a tool that simplifies and automates the process of\nbuilding a complete Linux system for an embedded system, using\ncross-compilation.\n\nIn order to achieve this, Buildroot is able to generate a\ncross-compilation toolchain, a root filesystem, a Linux kernel image\nand a bootloader for your target. Buildroot can be used for any\ncombination of these options, independently (you can for example use\nan existing cross-compilation toolchain, and build only your root\nfilesystem with Buildroot).\n\nBuildroot is useful mainly for people working with embedded systems.\nEmbedded systems often use processors that are not the regular x86\nprocessors everyone is used to having in his PC. They can be PowerPC\nprocessors, MIPS processors, ARM processors, etc.\n\nBuildroot supports numerous processors and their variants; it also\ncomes with default configurations for several boards available\noff-the-shelf. Besides this, a number of third-party projects are based on,\nor develop their BSP footnote:[BSP: Board Support Package] or\nSDK footnote:[SDK: Software Development Kit] on top of Buildroot.\n"
  },
  {
    "path": "docs/manual/known-issues.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n== Known issues\n\n* It is not possible to pass extra linker options via +BR2_TARGET_LDFLAGS+\n  if such options contain a +$+ sign. For example, the following is known\n  to break: +BR2_TARGET_LDFLAGS=\"-Wl,-rpath=\\'$ORIGIN/../lib'\"+\n\n* The +libffi+ package is not supported on the SuperH 2, nds32, and ARMv7-M\n  architectures.\n\n* The +prboom+ package triggers a compiler failure with the SuperH 4\n  compiler from Sourcery CodeBench, version 2012.09.\n\n"
  },
  {
    "path": "docs/manual/legal-notice.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[legal-info]]\n\n== Legal notice and licensing\n\n=== Complying with open source licenses\n\nAll of the end products of Buildroot (toolchain, root filesystem, kernel,\nbootloaders) contain open source software, released under various licenses.\n\nUsing open source software gives you the freedom to build rich embedded\nsystems, choosing from a wide range of packages, but also imposes some\nobligations that you must know and honour.\nSome licenses require you to publish the license text in the documentation of\nyour product. Others require you to redistribute the source code of the\nsoftware to those that receive your product.\n\nThe exact requirements of each license are documented in each package, and\nit is your responsibility (or that of your legal office) to comply with those\nrequirements.\nTo make this easier for you, Buildroot can collect for you some material you\nwill probably need. To produce this material, after you have configured\nBuildroot with +make menuconfig+, +make xconfig+ or +make gconfig+, run:\n\n--------------------\nmake legal-info\n--------------------\n\nBuildroot will collect legally-relevant material in your output directory,\nunder the +legal-info/+ subdirectory.\nThere you will find:\n\n* A +README+ file, that summarizes the produced material and contains warnings\n  about material that Buildroot could not produce.\n* +buildroot.config+: this is the Buildroot configuration file that is usually\n  produced with +make menuconfig+, and which is necessary to reproduce the\n  build.\n* The source code for all packages; this is saved in the +sources/+ and\n  +host-sources/+ subdirectories for target and host packages respectively.\n  The source code for packages that set +<PKG>_REDISTRIBUTE = NO+ will not be\n  saved.\n  Patches that were applied are also saved, along with a file named +series+\n  that lists the patches in the order they were applied. Patches are under the\n  same license as the files that they modify.\n  Note: Buildroot applies additional patches to Libtool scripts of\n  autotools-based packages. These patches can be found under\n  +support/libtool+ in the Buildroot source and, due to technical\n  limitations, are not saved with the package sources. You may need to\n  collect them manually.\n* A manifest file (one for host and one for target packages) listing the\n  configured packages, their version, license and related information.\n  Some of this information might not be defined in Buildroot; such items are\n  marked as \"unknown\".\n* The license texts of all packages, in the +licenses/+ and +host-licenses/+\n  subdirectories for target and host packages respectively.\n  If the license file(s) are not defined in Buildroot, the file is not produced\n  and a warning in the +README+ indicates this.\n\nPlease note that the aim of the +legal-info+ feature of Buildroot is to\nproduce all the material that is somehow relevant for legal compliance with the\npackage licenses. Buildroot does not try to produce the exact material that\nyou must somehow make public. Certainly, more material is produced than is\nneeded for a strict legal compliance. For example, it produces the source code\nfor packages released under BSD-like licenses, that you are not required to\nredistribute in source form.\n\nMoreover, due to technical limitations, Buildroot does not produce some\nmaterial that you will or may need, such as the toolchain source code for\nsome of the external toolchains and the Buildroot source code itself.\nWhen you run +make legal-info+, Buildroot produces warnings in the +README+\nfile to inform you of relevant material that could not be saved.\n\nFinally, keep in mind that the output of +make legal-info+ is based on\ndeclarative statements in each of the packages recipes. The Buildroot\ndevelopers try to do their best to keep those declarative statements as\naccurate as possible, to the best of their knowledge. However, it is very\nwell possible that those declarative statements are not all fully accurate\nnor exhaustive. You (or your legal department) _have_ to check the output\nof +make legal-info+ before using it as your own compliance delivery. See\nthe _NO WARRANTY_ clauses (clauses 11 and 12) in the +COPYING+ file at the\nroot of the Buildroot distribution.\n\n[[legal-info-buildroot]]\n=== Complying with the Buildroot license\n\nBuildroot itself is an open source software, released under the\nhttp://www.gnu.org/licenses/old-licenses/gpl-2.0.html[GNU General\nPublic License, version 2] or (at your option) any later version, with\nthe exception of the package patches detailed below.\nHowever, being a build system, it is not normally part of the end product:\nif you develop the root filesystem, kernel, bootloader or toolchain for a\ndevice, the code of Buildroot is only present on the development machine, not\nin the device storage.\n\nNevertheless, the general view of the Buildroot developers is that you should\nrelease the Buildroot source code along with the source code of other packages\nwhen releasing a product that contains GPL-licensed software.\nThis is because the\nhttp://www.gnu.org/licenses/old-licenses/gpl-2.0.html[GNU GPL]\ndefines the \"'complete source code'\" for an executable work as \"'all the\nsource code for all modules it contains, plus any associated interface\ndefinition files, plus the scripts used to control compilation and installation\nof the executable'\".\nBuildroot is part of the 'scripts used to control compilation and\ninstallation of the executable', and as such it is considered part of the\nmaterial that must be redistributed.\n\nKeep in mind that this is only the Buildroot developers' opinion, and you\nshould consult your legal department or lawyer in case of any doubt.\n\n==== Patches to packages\n\nBuildroot also bundles patch files, which are applied to the sources\nof the various packages. Those patches are not covered by the license\nof Buildroot. Instead, they are covered by the license of the software\nto which the patches are applied. When said software is available\nunder multiple licenses, the Buildroot patches are only provided under\nthe publicly accessible licenses.\n\nSee xref:patch-policy[] for the technical details.\n"
  },
  {
    "path": "docs/manual/make-tips.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[make-tips]]\n=== 'make' tips\n\nThis is a collection of tips that help you make the most of Buildroot.\n\n.Display all commands executed by make:\n\n--------------------\n $ make V=1 <target>\n--------------------\n\n.Display the list of boards with a defconfig:\n\n--------------------\n $ make list-defconfigs\n--------------------\n\n.Display all available targets:\n\n--------------------\n $ make help\n--------------------\n\nNot all targets are always available,\nsome settings in the +.config+ file may hide some targets:\n\n* +busybox-menuconfig+ only works when +busybox+ is enabled;\n* +linux-menuconfig+ and +linux-savedefconfig+ only work when\n  +linux+ is enabled;\n* +uclibc-menuconfig+ is only available when the uClibc C library is\n  selected in the internal toolchain backend;\n* +barebox-menuconfig+ and +barebox-savedefconfig+ only work when the\n  +barebox+ bootloader is enabled.\n* +uboot-menuconfig+ and +uboot-savedefconfig+ only work when the\n  +U-Boot+ bootloader is enabled.\n\n.Cleaning:\n\nExplicit cleaning is required when any of the architecture or toolchain\nconfiguration options are changed.\n\nTo delete all build products (including build directories, host, staging\nand target trees, the images and the toolchain):\n\n--------------------\n $ make clean\n--------------------\n\n.Generating the manual:\n\nThe present manual sources are located in the 'docs/manual' directory.\nTo generate the manual:\n\n---------------------------------\n $ make manual-clean\n $ make manual\n---------------------------------\n\nThe manual outputs will be generated in 'output/docs/manual'.\n\n.Notes\n- A few tools are required to build the documentation (see:\n  xref:requirement-optional[]).\n\n.Resetting Buildroot for a new target:\n\nTo delete all build products as well as the configuration:\n\n--------------------\n $ make distclean\n--------------------\n\n.Notes\nIf +ccache+ is enabled, running +make clean+ or +distclean+ does\nnot empty the compiler cache used by Buildroot. To delete it, refer\nto xref:ccache[].\n\n.Dumping the internal make variables:\n\nOne can dump the variables known to make, along with their values:\n\n----\n $ make -s printvars VARS='VARIABLE1 VARIABLE2'\n VARIABLE1=value_of_variable\n VARIABLE2=value_of_variable\n----\n\nIt is possible to tweak the output using some variables:\n\n- +VARS+ will limit the listing to variables which names match the\n  specified make-patterns - this must be set else nothing is printed\n- +QUOTED_VARS+, if set to +YES+, will single-quote the value\n- +RAW_VARS+, if set to +YES+, will print the unexpanded value\n\nFor example:\n\n----\n $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES\n BUSYBOX_DEPENDENCIES=skeleton toolchain\n BUSYBOX_FINAL_ALL_DEPENDENCIES=skeleton toolchain\n BUSYBOX_FINAL_DEPENDENCIES=skeleton toolchain\n BUSYBOX_FINAL_PATCH_DEPENDENCIES=\n BUSYBOX_RDEPENDENCIES=ncurses util-linux\n----\n\n----\n $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES QUOTED_VARS=YES\n BUSYBOX_DEPENDENCIES='skeleton toolchain'\n BUSYBOX_FINAL_ALL_DEPENDENCIES='skeleton toolchain'\n BUSYBOX_FINAL_DEPENDENCIES='skeleton toolchain'\n BUSYBOX_FINAL_PATCH_DEPENDENCIES=''\n BUSYBOX_RDEPENDENCIES='ncurses util-linux'\n----\n\n----\n $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES RAW_VARS=YES\n BUSYBOX_DEPENDENCIES=skeleton toolchain\n BUSYBOX_FINAL_ALL_DEPENDENCIES=$(sort $(BUSYBOX_FINAL_DEPENDENCIES) $(BUSYBOX_FINAL_PATCH_DEPENDENCIES))\n BUSYBOX_FINAL_DEPENDENCIES=$(sort $(BUSYBOX_DEPENDENCIES))\n BUSYBOX_FINAL_PATCH_DEPENDENCIES=$(sort $(BUSYBOX_PATCH_DEPENDENCIES))\n BUSYBOX_RDEPENDENCIES=ncurses util-linux\n----\n\nThe output of quoted variables can be reused in shell scripts, for example:\n\n----\n $ eval $(make -s printvars VARS=BUSYBOX_DEPENDENCIES QUOTED_VARS=YES)\n $ echo $BUSYBOX_DEPENDENCIES\n skeleton toolchain\n----\n"
  },
  {
    "path": "docs/manual/makedev-syntax.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[makedev-syntax]]\n== Makedev syntax documentation\n\nThe makedev syntax is used in several places in Buildroot to\ndefine changes to be made for permissions, or which device files to\ncreate and how to create them, in order to avoid calls to mknod.\n\nThis syntax is derived from the makedev utility, and more complete\ndocumentation can be found in the +package/makedevs/README+ file.\n\nIt takes the form of a space separated list of fields, one file per\nline; the fields are:\n\n|===========================================================\n|name |type |mode |uid |gid |major |minor |start |inc |count\n|===========================================================\n\nThere are a few non-trivial blocks:\n\n- +name+ is the path to the file you want to create/modify\n- +type+ is the type of the file, being one of:\n  * f: a regular file\n  * d: a directory\n  * r: a directory recursively\n  * c: a character device file\n  * b: a block device file\n  * p: a named pipe\n- +mode+ are the usual permissions settings (only numerical values\n  are allowed)\n- +uid+ and +gid+ are the UID and GID to set on this file; can be\n  either numerical values or actual names\n- +major+ and +minor+ are here for device files, set to +-+ for other\n  files\n- +start+, +inc+ and +count+ are for when you want to create a batch\n  of files, and can be reduced to a loop, beginning at +start+,\n  incrementing its counter by +inc+ until it reaches +count+\n\nLet's say you want to change the permissions of a given file; using\nthis syntax, you will need to write:\n\n----\n/usr/bin/foo f 755 0 0 - - - - -\n/usr/bin/bar f 755 root root - - - - -\n/data/buz f 644 buz-user buz-group - - - - -\n----\n\nAlternatively, if you want to change owner/permission of a directory\nrecursively, you can write (to set UID to foo, GID to bar and access\nrights to rwxr-x--- for the directory /usr/share/myapp and all files\nand directories below it):\n\n----\n/usr/share/myapp r 750 foo bar - - - - -\n----\n\nOn the other hand, if you want to create the device file +/dev/hda+\nand the corresponding 15 files for the partitions, you will need for\n+/dev/hda+:\n\n----\n/dev/hda b 640 root root 3 0 0 0 -\n----\n\nand then for device files corresponding to the partitions of\n+/dev/hda+, +/dev/hdaX+, +X+ ranging from 1 to 15:\n\n----\n/dev/hda b 640 root root 3 1 1 1 15\n----\n\nExtended attributes are supported if\n+BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES+ is enabled.\nThis is done by adding a line starting with +|xattr+ after\nthe line describing the file. Right now, only capability\nis supported as extended attribute.\n\n|=====================\n| \\|xattr | capability\n|=====================\n\n- +|xattr+ is a \"flag\" that indicate an extended attribute\n- +capability+ is a capability to add to the previous file\n\nIf you want to add the capability cap_sys_admin to the binary foo,\nyou will write :\n\n----\n/usr/bin/foo f 755 root root - - - - -\n|xattr cap_sys_admin+eip\n----\n\nYou can add several capabilities to a file by using several +|xattr+ lines.\nIf you want to add the capability cap_sys_admin and cap_net_admin to the\nbinary foo, you will write :\n\n----\n/usr/bin/foo f 755 root root - - - - -\n|xattr cap_sys_admin+eip\n|xattr cap_net_admin+eip\n----\n"
  },
  {
    "path": "docs/manual/makeusers-syntax.txt",
    "content": "// -*- mode:doc -*- ;\n// vim: set syntax=asciidoc:\n\n[[makeuser-syntax]]\n== Makeusers syntax documentation\n\nThe syntax to create users is inspired by the makedev syntax, above, but\nis specific to Buildroot.\n\nThe syntax for adding a user is a space-separated list of fields, one\nuser per line; the fields are:\n\n|=================================================================\n|username |uid |group |gid |password |home |shell |groups |comment\n|=================================================================\n\nWhere:\n\n- +username+ is the desired user name (aka login name) for the user.\n  It can not be +root+, and must be unique. If set to +-+, then just a\n  group will be created.\n- +uid+ is the desired UID for the user. It must be unique, and not\n  +0+. If set to +-1+, then a unique UID will be computed by Buildroot\n  in the range [1000...1999]\n- +group+ is the desired name for the user's main group. It can not\n  be +root+. If the group does not exist, it will be created.\n- +gid+ is the desired GID for the user's main group. It must be unique,\n  and not +0+. If set to +-1+, and the group does not already exist, then\n  a unique GID will be computed by Buildroot in the range [1000..1999]\n- +password+ is the crypt(3)-encoded password. If prefixed with +!+,\n  then login is disabled. If prefixed with +=+, then it is interpreted\n  as clear-text, and will be crypt-encoded (using MD5). If prefixed with\n  +!=+, then the password will be crypt-encoded (using MD5) and login\n  will be disabled. If set to +*+, then login is not allowed. If set to \n  +-+, then no password value will be set.\n- +home+ is the desired home directory for the user. If set to '-', no\n  home directory will be created, and the user's home will be +/+.\n  Explicitly setting +home+ to +/+ is not allowed.\n- +shell+ is the desired shell for the user. If set to +-+, then\n  +/bin/false+ is set as the user's shell.\n- +groups+ is the comma-separated list of additional groups the user\n  should be part of. If set to +-+, then the user will be a member of\n  no additional group. Missing groups will be created with an arbitrary\n  +gid+.\n- +comment+ (aka https://en.wikipedia.org/wiki/Gecos_field[GECOS]\n  field) is an almost-free-form text.\n\nThere are a few restrictions on the content of each field:\n\n* except for +comment+, all fields are mandatory.\n* except for +comment+, fields may not contain spaces.\n* no field may contain a colon (+:+).\n\nIf +home+ is not +-+, then the home directory, and all files below,\nwill belong to the user and its main group.\n\nExamples:\n\n----\nfoo -1 bar -1 !=blabla /home/foo /bin/sh alpha,bravo Foo user\n----\n\nThis will create this user:\n\n- +username+ (aka login name) is: +foo+\n- +uid+ is computed by Buildroot\n- main +group+ is: +bar+\n- main group +gid+ is computed by Buildroot\n- clear-text +password+ is: +blabla+, will be crypt(3)-encoded, and login is disabled.\n- +home+ is: +/home/foo+\n- +shell+ is: +/bin/sh+\n- +foo+ is also a member of +groups+: +alpha+ and +bravo+\n- +comment+ is: +Foo user+\n\n----\ntest 8000 wheel -1 = - /bin/sh - Test user\n----\n\nThis will create this user:\n\n- +username+ (aka login name) is: +test+\n- +uid+ is : +8000+\n- main +group+ is: +wheel+\n- main group +gid+ is computed by Buildroot, and will use the value defined in the rootfs skeleton\n- +password+ is empty (aka no password).\n- +home+ is +/+ but will not belong to +test+\n- +shell+ is: +/bin/sh+\n- +test+ is not a member of any additional +groups+\n- +comment+ is: +Test user+\n"
  },
  {
    "path": "docs/manual/manual.mk",
    "content": "################################################################################\n#\n# The Buildroot manual\n#\n################################################################################\n\nMANUAL_SOURCES = $(sort $(wildcard docs/manual/*.txt) $(wildcard docs/images/*))\nMANUAL_RESOURCES = $(TOPDIR)/docs/images\n\n$(eval $(call asciidoc-document))\n"
  },
  {
    "path": "docs/manual/manual.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n= The Buildroot user manual\n:toc:\n\nBuildroot {sys:echo $\\{BR2_VERSION%%-git*\\}} manual generated on {localdate}\n{localtime} from git revision {sys:git rev-parse --short HEAD}\n\nThe Buildroot manual is written by the Buildroot developers.\nIt is licensed under the GNU General Public License, version 2. Refer to the\nhttp://git.buildroot.org/buildroot/tree/COPYING?id={sys:git rev-parse HEAD}[COPYING]\nfile in the Buildroot sources for the full text of this license.\n\nCopyright (C) 2004-2020 The Buildroot developers\n\nimage::logo.png[]\n\n= Getting started\n\ninclude::introduction.txt[]\n\ninclude::prerequisite.txt[]\n\ninclude::getting.txt[]\n\ninclude::quickstart.txt[]\n\ninclude::resources.txt[]\n\n= User guide\n\ninclude::configure.txt[]\n\ninclude::configure-other-components.txt[]\n\ninclude::common-usage.txt[]\n\ninclude::customize.txt[]\n\ninclude::selinux-support.txt[]\n\ninclude::faq-troubleshooting.txt[]\n\ninclude::known-issues.txt[]\n\ninclude::legal-notice.txt[]\n\ninclude::beyond-buildroot.txt[]\n\n= Developer guide\n\ninclude::how-buildroot-works.txt[]\n\ninclude::writing-rules.txt[]\n\ninclude::adding-board-support.txt[]\n\ninclude::adding-packages.txt[]\n\ninclude::patch-policy.txt[]\n\ninclude::download-infra.txt[]\n\ninclude::debugging-buildroot.txt[]\n\ninclude::contribute.txt[]\n\ninclude::developers.txt[]\n\ninclude::release-engineering.txt[]\n\n= Appendix\n\ninclude::appendix.txt[]\n"
  },
  {
    "path": "docs/manual/migrating.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[migrating-from-ol-versions]]\n== Migrating from older Buildroot versions\n\nSome versions have introduced backward incompatibilities. This section\nexplains those incompatibilities, and for each explains what to do to\ncomplete the migration.\n\n[[migrating-approach]]\n=== General approach\n\nTo migrate from an older Buildroot version, take the following steps.\n\n. For all your configurations, do a build in the old Buildroot\n  environment. Run +make graph-size+. Save\n  +graphs/file-size-stats.csv+ in a different location. Run +make\n  clean+ to remove the rest.\n. Review the specific migration notes below and make the required\n  adaptations to external packages and custom build scripts.\n. Update Buildroot.\n. Run +make menuconfig+ starting from the existing +.config+.\n. If anything is enabled in the Legacy menu, check its help text,\n  unselect it, and save the configuration.\n. For more details, review the git commit messages for the packages that\n  you need. Change into the +packages+ directory and run\n  +git log <old version>.. -- <your packages>+.\n. Build in the new Buildroot environment.\n. Fix build issues in external packages (usually due to updated\n  dependencies).\n. Run +make graph-size+.\n. Compare the new +file-size-stats.csv+ with the original one, to\n  check if no required files have disappeared and if no new big unneeded\n  files have appeared.\n. For configuration (and other) files in a custom overlay that overwrite\n  files created by Buildroot, check if there are changes in the\n  Buildroot-generated file that need to be propagated to your custom\n  file.\n\n[[br2-external-converting]]\n=== Migrating to 2016.11\n\nBefore Buildroot 2016.11, it was possible to use only one br2-external\ntree at once. With Buildroot 2016.11 came the possibility to use more\nthan one simultaneously (for details, see xref:outside-br-custom[]).\n\nThis however means that older br2-external trees are not usable as-is.\nA minor change has to be made: adding a name to your br2-external tree.\n\nThis can be done very easily in just a few steps:\n\n * First, create a new file named +external.desc+, at the root of your\n   br2-external tree, with a single line defining the name of your\n   br2-external tree:\n+\n----\n$ echo 'name: NAME_OF_YOUR_TREE' >external.desc\n----\n+\n.Note\nBe careful when choosing a name: It has to be unique and be made\nwith only ASCII characters from the set +[A-Za-z0-9_]+.\n\n * Then, change every occurence of +BR2_EXTERNAL+ in your br2-external\n   tree with the new variable:\n+\n----\n$ find . -type f | xargs sed -i 's/BR2_EXTERNAL/BR2_EXTERNAL_NAME_OF_YOUR_TREE_PATH/g'\n----\n\nNow, your br2-external tree can be used with Buildroot 2016.11 onward.\n\n.Note:\nThis change makes your br2-external tree incompatible with Buildroot\nbefore 2016.11.\n\n[[migrating-host-usr]]\n=== Migrating to 2017.08\n\nBefore Buildroot 2017.08, host packages were installed in +$(HOST_DIR)/usr+\n(with e.g. the autotools' +--prefix=$(HOST_DIR)/usr+). With Buildroot\n2017.08, they are now installed directly in +$(HOST_DIR)+.\n\nWhenever a package installs an executable that is linked with a library\nin +$(HOST_DIR)/lib+, it must have an RPATH pointing to that directory.\n\nAn RPATH pointing to +$(HOST_DIR)/usr/lib+ is no longer accepted.\n"
  },
  {
    "path": "docs/manual/package-make-target.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[pkg-build-steps]]\n\n==== Package-specific _make_ targets\n\nRunning +make <package>+ builds and installs that particular package\nand its dependencies.\n\nFor packages relying on the Buildroot infrastructure, there are\nnumerous special make targets that can be called independently like\nthis:\n\n------------\nmake <package>-<target>\n------------\n\nThe package build targets are (in the order they are executed):\n\n[width=\"90%\",cols=\"^1,4\",options=\"header\"]\n|===================================================\n| command/target    | Description\n\n| +source+          | Fetch the source (download the tarball, clone\nthe source repository, etc)\n\n| +depends+         | Build and install all dependencies required to\nbuild the package\n\n| +extract+         | Put the source in the package build directory\n(extract the tarball, copy the source, etc)\n\n| +patch+           | Apply the patches, if any\n\n| +configure+       | Run the configure commands, if any\n\n| +build+           | Run the compilation commands\n\n| +install-staging+ |\n*target package:* Run the installation of the package in the\nstaging directory, if necessary\n\n| +install-target+  |\n*target package:* Run the installation of the package in the\ntarget directory, if necessary\n\n| +install+         |\n*target package:* Run the 2 previous installation commands\n\n*host package:* Run the installation of the package in the host\ndirectory\n\n|===================================================\n\nAdditionally, there are some other useful make targets:\n\n[width=\"90%\",cols=\"^1,4\",options=\"header\"]\n|===================================================\n| command/target    | Description\n\n| +show-depends+    | Displays the first-order dependencies required to build the\npackage\n\n| +show-recursive-depends+ | Recursively displays the dependencies\n  required to build the package\n\n| +show-rdepends+   | Displays the first-order reverse dependencies of\n  the package (i.e packages that directly depend on it)\n\n| +show-recursive-rdepends+ | Recursively displays the reverse\n  dependencies of the package (i.e the packages that depend on it,\n  directly or indirectly)\n\n| +graph-depends+   | Generate a dependency graph of the package, in the\ncontext of the current Buildroot configuration. See\nxref:graph-depends[this section] for more details about dependency\ngraphs.\n\n| +graph-rdepends+  | Generate a graph of this package reverse\n  dependencies (i.e the packages that depend on it, directly or\n  indirectly)\n\n| +dirclean+        | Remove the whole package build directory\n\n| +reinstall+       | Re-run the install commands\n\n| +rebuild+         | Re-run the compilation commands - this only makes\nsense when using the +OVERRIDE_SRCDIR+ feature or when you modified a file\ndirectly in the build directory\n\n| +reconfigure+     | Re-run the configure commands, then rebuild - this only\nmakes sense when using the +OVERRIDE_SRCDIR+ feature or when you modified a\nfile directly in the build directory\n\n|===================================================\n"
  },
  {
    "path": "docs/manual/patch-policy.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[patch-policy]]\n\n== Patching a package\n\nWhile integrating a new package or updating an existing one, it may be\nnecessary to patch the source of the software to get it cross-built within\nBuildroot.\n\nBuildroot offers an infrastructure to automatically handle this during\nthe builds. It supports three ways of applying patch sets: downloaded patches,\npatches supplied within buildroot and patches located in a user-defined\nglobal patch directory.\n\n=== Providing patches\n\n==== Downloaded\n\nIf it is necessary to apply a patch that is available for download, then add it\nto the +<packagename>_PATCH+ variable. If an entry contains +://+,\nthen Buildroot will assume it is a full URL and download the patch\nfrom this location. Otherwise, Buildroot will assume that the patch should be\ndownloaded from +<packagename>_SITE+. It can be a single patch,\nor a tarball containing a patch series.\n\nLike for all downloads, a hash should be added to the +<packagename>.hash+\nfile.\n\nThis method is typically used for packages from Debian.\n\n==== Within Buildroot\n\nMost patches are provided within Buildroot, in the package\ndirectory; these typically aim to fix cross-compilation, libc support,\nor other such issues.\n\nThese patch files should be named +<number>-<description>.patch+.\n\n.Notes\n- The patch files coming with Buildroot should not contain any package version\n  reference in their filename.\n- The field +<number>+ in the patch file name refers to the 'apply order',\n  and shall start at 1; It is preferred to pad the number with zeros up to 4\n  digits, like 'git-format-patch' does. E.g.: +0001-foobar-the-buz.patch+\n- Previously, it was mandatory for patches to be prefixed with the name of\n  the package, like +<package>-<number>-<description>.patch+, but that is\n  no longer the case. Existing packages will be fixed as time passes. 'Do\n  not prefix patches with the package name.'\n- Previously, a +series+ file, as used by +quilt+, could also be added in\n  the package directory. In that case, the +series+ file defines the patch\n  application order. This is deprecated, and will be removed in the future.\n  'Do not use a series file.'\n\n\n==== Global patch directory\n\nThe +BR2_GLOBAL_PATCH_DIR+ configuration file option can be\nused to specify a space separated list of one or more directories\ncontaining global package patches. See xref:customize-patches[] for\ndetails.\n\n[[patch-apply-order]]\n=== How patches are applied\n\n. Run the +<packagename>_PRE_PATCH_HOOKS+ commands if defined;\n\n. Cleanup the build directory, removing any existing +*.rej+ files;\n\n. If +<packagename>_PATCH+ is defined, then patches from these\n  tarballs are applied;\n\n. If there are some +*.patch+ files in the package's Buildroot\n  directory or in a package subdirectory named +<packageversion>+,\n  then:\n+\n* If a +series+ file exists in the package directory, then patches are\n  applied according to the +series+ file;\n+\n* Otherwise, patch files matching +*.patch+ are applied in alphabetical\n  order.\n  So, to ensure they are applied in the right order, it is highly\n  recommended to name the patch files like this:\n  +<number>-<description>.patch+, where +<number>+ refers to the\n  'apply order'.\n\n. If +BR2_GLOBAL_PATCH_DIR+ is defined, the directories will be\n  enumerated in the order they are specified. The patches are applied\n  as described in the previous step.\n\n. Run the +<packagename>_POST_PATCH_HOOKS+ commands if defined.\n\nIf something goes wrong in the steps _3_ or _4_, then the build fails.\n\n=== Format and licensing of the package patches\n\nPatches are released under the same license as the software they apply\nto (see xref:legal-info-buildroot[]).\n\nA message explaining what the patch does, and why it is needed, should\nbe added in the header commentary of the patch.\n\nYou should add a +Signed-off-by+ statement in the header of the each\npatch to help with keeping track of the changes and to certify that the\npatch is released under the same license as the software that is modified.\n\nIf the software is under version control, it is recommended to use the\nupstream SCM software to generate the patch set.\n\nOtherwise, concatenate the header with the output of the\n+diff -purN package-version.orig/ package-version/+ command.\n\nIf you update an existing patch (e.g. when bumping the package version),\nmake sure the existing From header and Signed-off-by tags are not\nremoved, but do update the rest of the patch comment when appropriate.\n\nAt the end, the patch should look like:\n\n---------------\nconfigure.ac: add C++ support test\n\nSigned-off-by: John Doe <john.doe@noname.org>\n\n--- configure.ac.orig\n+++ configure.ac\n@@ -40,2 +40,12 @@\n\nAC_PROG_MAKE_SET\n+\n+AC_CACHE_CHECK([whether the C++ compiler works],\n+               [rw_cv_prog_cxx_works],\n+               [AC_LANG_PUSH([C++])\n+                AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],\n+                               [rw_cv_prog_cxx_works=yes],\n+                               [rw_cv_prog_cxx_works=no])\n+                AC_LANG_POP([C++])])\n+\n+AM_CONDITIONAL([CXX_WORKS], [test \"x$rw_cv_prog_cxx_works\" = \"xyes\"])\n---------------\n\n=== Integrating patches found on the Web\n\nWhen integrating a patch of which you are not the author, you have to\nadd a few things in the header of the patch itself.\n\nDepending on whether the patch has been obtained from the project\nrepository itself, or from somewhere on the web, add one of the\nfollowing tags:\n\n---------------\nBackported from: <some commit id>\n---------------\n\nor\n\n---------------\nFetch from: <some url>\n---------------\n\nIt is also sensible to add a few words about any changes to the patch\nthat may have been necessary.\n"
  },
  {
    "path": "docs/manual/prerequisite.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[requirement]]\n== System requirements\n\nBuildroot is designed to run on Linux systems.\n\nWhile Buildroot itself will build most host packages it needs for the\ncompilation, certain standard Linux utilities are expected to be\nalready installed on the host system. Below you will find an overview of\nthe mandatory and optional packages (note that package names may vary\nbetween distributions).\n\n[[requirement-mandatory]]\n\n=== Mandatory packages\n\n* Build tools:\n\n** +which+\n** +sed+\n** +make+ (version 3.81 or any later)\n** +binutils+\n** +build-essential+ (only for Debian based systems)\n** +gcc+ (version 4.8 or any later)\n** `g++` (version 4.8 or any later)\n** +bash+\n** +patch+\n** +gzip+\n** +bzip2+\n** +perl+ (version 5.8.7 or any later)\n** +tar+\n** +cpio+\n** +unzip+\n** +rsync+\n** +file+ (must be in +/usr/bin/file+)\n** +bc+\n\n* Source fetching tools:\n** +wget+\n\n[[requirement-optional]]\n\n=== Optional packages\n\n* Recommended dependencies:\n+\nSome features or utilities in Buildroot, like the legal-info, or the\ngraph generation tools, have additional dependencies. Although they\nare not mandatory for a simple build, they are still highly recommended:\n+\n** +python+ (version 2.7 or any later)\n\n* Configuration interface dependencies:\n+\nFor these libraries, you need to install both runtime and development\ndata, which in many distributions are packaged separately. The\ndevelopment packages typically have a _-dev_ or _-devel_ suffix.\n+\n** +ncurses5+ to use the 'menuconfig' interface\n** +qt5+ to use the 'xconfig' interface\n** +glib2+, +gtk2+ and +glade2+ to use the 'gconfig' interface\n\n* Source fetching tools:\n+\nIn the official tree, most of the package sources are retrieved using\n+wget+ from _ftp_, _http_ or _https_ locations. A few packages are only\navailable through a version control system. Moreover, Buildroot is\ncapable of downloading sources via other tools, like +rsync+ or +scp+\n(refer to xref:download-infra[] for more details). If you enable\npackages using any of these methods, you will need to install the\ncorresponding tool on the host system:\n+\n** +bazaar+\n** +cvs+\n** +git+\n** +mercurial+\n** +rsync+\n** +scp+\n** +subversion+\n\n* Java-related packages, if the Java Classpath needs to be built for\n  the target system:\n** The +javac+ compiler\n** The +jar+ tool\n\n* Documentation generation tools:\n** +asciidoc+, version 8.6.3 or higher\n** +w3m+\n** +python+ with the +argparse+ module (automatically present in 2.7+ and 3.2+)\n** +dblatex+ (required for the pdf manual only)\n\n* Graph generation tools:\n** +graphviz+ to use 'graph-depends' and '<pkg>-graph-depends'\n** +python-matplotlib+ to use 'graph-build'\n"
  },
  {
    "path": "docs/manual/quickstart.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n== Buildroot quick start\n\n*Important*: you can and should *build everything as a normal user*. There\nis no need to be root to configure and use Buildroot. By running all\ncommands as a regular user, you protect your system against packages\nbehaving badly during compilation and installation.\n\nThe first step when using Buildroot is to create a configuration.\nBuildroot has a nice configuration tool similar to the one you can\nfind in the http://www.kernel.org/[Linux kernel] or in\nhttp://www.busybox.net/[BusyBox].\n\nFrom the buildroot directory, run\n\n--------------------\n $ make menuconfig\n--------------------\n\nfor the original curses-based configurator, or\n\n--------------------\n $ make nconfig\n--------------------\n\nfor the new curses-based configurator, or\n\n--------------------\n $ make xconfig\n--------------------\n\nfor the Qt-based configurator, or\n\n--------------------\n $ make gconfig\n--------------------\n\nfor the GTK-based configurator.\n\nAll of these \"make\" commands will need to build a configuration\nutility (including the interface), so you may need to install\n\"development\" packages for relevant libraries used by the\nconfiguration utilities. Refer to xref:requirement[] for more details,\nspecifically the xref:requirement-optional[optional requirements]\nto get the dependencies of your favorite interface.\n\nFor each menu entry in the configuration tool, you can find associated\nhelp that describes the purpose of the entry. Refer to xref:configure[]\nfor details on some specific configuration aspects.\n\nOnce everything is configured, the configuration tool generates a\n+.config+ file that contains the entire configuration. This file will be\nread by the top-level Makefile.\n\nTo start the build process, simply run:\n\n--------------------\n $ make\n--------------------\n\nBy default, Buildroot does not support top-level parallel build, so\nrunning +make -jN+ is not necessary. There is however experimental\nsupport for top-level parallel build, see\nxref:top-level-parallel-build[].\n\nThe `make` command will generally perform the following steps:\n\n* download source files (as required);\n* configure, build and install the cross-compilation toolchain, or\n  simply import an external toolchain;\n* configure, build and install selected target packages;\n* build a kernel image, if selected;\n* build a bootloader image, if selected;\n* create a root filesystem in selected formats.\n\nBuildroot output is stored in a single directory, +output/+.\nThis directory contains several subdirectories:\n\n* +images/+ where all the images (kernel image, bootloader and root\n  filesystem images) are stored. These are the files you need to put\n  on your target system.\n\n* +build/+ where all the components are built (this includes tools\n  needed by Buildroot on the host and packages compiled for the\n  target). This directory contains one subdirectory for each of these\n  components.\n\n* +host/+ contains both the tools built for the host, and the sysroot\n  of the target toolchain. The former is an installation of tools\n  compiled for the host that are needed for the proper execution of\n  Buildroot, including the cross-compilation toolchain. The latter\n  is a hierarchy similar to a root filesystem hierarchy. It contains\n  the headers and libraries of all user-space packages that provide\n  and install libraries used by other packages. However, this\n  directory is 'not' intended to be the root filesystem for the target:\n  it contains a lot of development files, unstripped binaries and\n  libraries that make it far too big for an embedded system. These\n  development files are used to compile libraries and applications for\n  the target that depend on other libraries.\n\n* +staging/+ is a symlink to the target toolchain sysroot inside\n  +host/+, which exists for backwards compatibility.\n\n* +target/+ which contains 'almost' the complete root filesystem for\n  the target: everything needed is present except the device files in\n  +/dev/+ (Buildroot can't create them because Buildroot doesn't run\n  as root and doesn't want to run as root). Also, it doesn't have the correct\n  permissions (e.g. setuid for the busybox binary). Therefore, this directory\n  *should not be used on your target*. Instead, you should use one of\n  the images built in the +images/+ directory. If you need an\n  extracted image of the root filesystem for booting over NFS, then\n  use the tarball image generated in +images/+ and extract it as\n  root. Compared to +staging/+, +target/+ contains only the files and\n  libraries needed to run the selected target applications: the\n  development files (headers, etc.) are not present, the binaries are\n  stripped.\n\nThese commands, +make menuconfig|nconfig|gconfig|xconfig+ and +make+, are the\nbasic ones that allow to easily and quickly generate images fitting\nyour needs, with all the features and applications you enabled.\n\nMore details about the \"make\" command usage are given in\nxref:make-tips[].\n"
  },
  {
    "path": "docs/manual/rebuilding-packages.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[full-rebuild]]\n=== Understanding when a full rebuild is necessary\n\nBuildroot does not attempt to detect what parts of the system should\nbe rebuilt when the system configuration is changed through +make\nmenuconfig+, +make xconfig+ or one of the other configuration\ntools. In some cases, Buildroot should rebuild the entire system, in\nsome cases, only a specific subset of packages. But detecting this in\na completely reliable manner is very difficult, and therefore the\nBuildroot developers have decided to simply not attempt to do this.\n\nInstead, it is the responsibility of the user to know when a full\nrebuild is necessary. As a hint, here are a few rules of thumb that\ncan help you understand how to work with Buildroot:\n\n * When the target architecture configuration is changed, a complete\n   rebuild is needed. Changing the architecture variant, the binary\n   format or the floating point strategy for example has an impact on\n   the entire system.\n\n * When the toolchain configuration is changed, a complete rebuild\n   generally is needed. Changing the toolchain configuration often\n   involves changing the compiler version, the type of C library or\n   its configuration, or some other fundamental configuration item,\n   and these changes have an impact on the entire system.\n\n * When an additional package is added to the configuration, a full\n   rebuild is not necessarily needed. Buildroot will detect that this\n   package has never been built, and will build it. However, if this\n   package is a library that can optionally be used by packages that\n   have already been built, Buildroot will not automatically rebuild\n   those. Either you know which packages should be rebuilt, and you\n   can rebuild them manually, or you should do a full rebuild. For\n   example, let's suppose you have built a system with the +ctorrent+\n   package, but without +openssl+. Your system works, but you realize\n   you would like to have SSL support in +ctorrent+, so you enable the\n   +openssl+ package in Buildroot configuration and restart the\n   build. Buildroot will detect that +openssl+ should be built and\n   will be build it, but it will not detect that +ctorrent+ should be\n   rebuilt to benefit from +openssl+ to add OpenSSL support. You will\n   either have to do a full rebuild, or rebuild +ctorrent+ itself.\n\n * When a package is removed from the configuration, Buildroot does\n   not do anything special. It does not remove the files installed by\n   this package from the target root filesystem or from the toolchain\n   _sysroot_. A full rebuild is needed to get rid of this\n   package. However, generally you don't necessarily need this package\n   to be removed right now: you can wait for the next lunch break to\n   restart the build from scratch.\n\n * When the sub-options of a package are changed, the package is not\n   automatically rebuilt. After making such changes, rebuilding only\n   this package is often sufficient, unless enabling the package\n   sub-option adds some features to the package that are useful for\n   another package which has already been built. Again, Buildroot does\n   not track when a package should be rebuilt: once a package has been\n   built, it is never rebuilt unless explicitly told to do so.\n\n * When a change to the root filesystem skeleton is made, a full\n   rebuild is needed. However, when changes to the root filesystem\n   overlay, a post-build script or a post-image script are made,\n   there is no need for a full rebuild: a simple +make+ invocation\n   will take the changes into account.\n\n * When a package listed in +FOO_DEPENDENCIES+ is rebuilt or removed,\n   the package +foo+ is not automatically rebuilt. For example, if a\n   package +bar+ is listed in +FOO_DEPENDENCIES+ with +FOO_DEPENDENCIES\n   = bar+ and the configuration of the +bar+ package is changed, the\n   configuration change would not result in a rebuild of package +foo+\n   automatically. In this scenario, you may need to either rebuild any\n   packages in your build which reference +bar+ in their +DEPENDENCIES+,\n   or perform a full rebuild to ensure any +bar+ dependent packages are\n   up to date.\n\nGenerally speaking, when you're facing a build error and you're unsure\nof the potential consequences of the configuration changes you've\nmade, do a full rebuild. If you get the same build error, then you are\nsure that the error is not related to partial rebuilds of packages,\nand if this error occurs with packages from the official Buildroot, do\nnot hesitate to report the problem! As your experience with Buildroot\nprogresses, you will progressively learn when a full rebuild is really\nnecessary, and you will save more and more time.\n\nFor reference, a full rebuild is achieved by running:\n\n---------------\n$ make clean all\n---------------\n\n[[rebuild-pkg]]\n=== Understanding how to rebuild packages\n\nOne of the most common questions asked by Buildroot users is how to\nrebuild a given package or how to remove a package without rebuilding\neverything from scratch.\n\nRemoving a package is unsupported by Buildroot without\nrebuilding from scratch. This is because Buildroot doesn't keep track\nof which package installs what files in the +output/staging+ and\n+output/target+ directories, or which package would be compiled differently\ndepending on the availability of another package.\n\nThe easiest way to rebuild a single package from scratch is to remove\nits build directory in +output/build+. Buildroot will then re-extract,\nre-configure, re-compile and re-install this package from scratch. You\ncan ask buildroot to do this with the +make <package>-dirclean+ command.\n\nOn the other hand, if you only want to restart the build process of a\npackage from its compilation step, you can run +make <package>-rebuild+. It\nwill restart the compilation and installation of the package, but not from\nscratch: it basically re-executes +make+ and +make install+ inside the package,\nso it will only rebuild files that changed.\n\nIf you want to restart the build process of a package from its configuration\nstep, you can run +make <package>-reconfigure+. It will restart the\nconfiguration, compilation and installation of the package.\n\nWhile +<package>-rebuild+ implies +<package>-reinstall+ and\n+<package>-reconfigure+ implies +<package>-rebuild+, these targets as well\nas +<package>+ only act on the said package, and do not trigger re-creating\nthe root filesystem image. If re-creating the root filesystem in necessary,\none should in addition run +make+ or +make all+.\n\nInternally, Buildroot creates so-called _stamp files_ to keep track of\nwhich build steps have been completed for each package. They are\nstored in the package build directory,\n+output/build/<package>-<version>/+ and are named\n+.stamp_<step-name>+. The commands detailed above simply manipulate\nthese stamp files to force Buildroot to restart a specific set of\nsteps of a package build process.\n\nFurther details about package special make targets are explained in\nxref:pkg-build-steps[].\n"
  },
  {
    "path": "docs/manual/release-engineering.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[RELENG]]\n== Release Engineering\n=== Releases\n\nThe Buildroot project makes quarterly releases with monthly bugfix\nreleases.  The first release of each year is a long term support\nrelease, LTS.\n\n - Quarterly releases: 2020.02, 2020.05, 2020.08, and 2020.11\n - Bugfix releases: 2020.02.1, 2020.02.2, ...\n - LTS releases: 2020.02, 2021.02, ...\n\nReleases are supported until the first bugfix release of the next\nrelease, e.g., 2020.05.x is EOL when 2020.08.1 is released.\n\nLTS releases are supported until the first bugfix release of the next\nLTS, e.g., 2020.02.x is supported until 2021.02.1 is released.\n\n=== Development\n\nEach release cycle consist of two months of development on the +master+\nbranch and one month stabilization before the release is made.  During\nthis phase no new features are added to +master+, only bugfixes.\n\nThe stabilization phase starts with tagging +-rc1+, and every week until\nthe release, another release candidate is tagged.\n\nTo handle new features and version bumps during the stabilization phase,\na +next+ branch may be created for these features.  Once the current\nrelease has been made, the +next+ branch is merged into +master+ and\nthe development cycle for the next release continues there.\n"
  },
  {
    "path": "docs/manual/resources.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[community-resources]]\n== Community resources\n\nLike any open source project, Buildroot has different ways to share\ninformation in its community and outside.\n\nEach of those ways may interest you if you are looking for some help,\nwant to understand Buildroot or contribute to the project.\n\nMailing List::\n+\nBuildroot has a mailing list for discussion and development. It is the\nmain method of interaction for Buildroot users and developers.\n+\nOnly subscribers to the Buildroot mailing list are allowed to post to\nthis list. You can subscribe via the\nhttp://lists.buildroot.org/mailman/listinfo/buildroot[mailing list info\npage].\n+\nMails that are sent to the mailing list are also available in the\nmailing list archives, available through\nhttp://lists.buildroot.org/pipermail/buildroot[Mailman] or at\nhttps://lore.kernel.org/buildroot/[lore.kernel.org].\n\nIRC::\n+\nThe Buildroot IRC channel irc://irc.oftc.net/#buildroot[#buildroot] is\nhosted on https://www.oftc.net/WebChat/[OFTC]. It is a useful place to\nask quick questions or discuss on certain topics.\n+\nWhen asking for help on IRC, share relevant logs or pieces of code\nusing a code sharing website, such as https://paste.ack.tf/.\n+\nNote that for certain questions, posting to the mailing list may be\nbetter as it will reach more people, both developers and users.\n\nBug tracker::\n+\nBugs in Buildroot can be reported via the mailing list or alternatively\nvia the https://bugs.buildroot.org/buglist.cgi?product=buildroot[Buildroot\nbugtracker]. Please refer to xref:reporting-bugs[] before creating a bug\nreport.\n\nWiki::\n+\nhttp://elinux.org/Buildroot[The Buildroot wiki page] is hosted on\nthe http://elinux.org[eLinux] wiki. It contains some useful links, an\noverview of past and upcoming events, and a TODO list.\n\nPatchwork::\n+\nPatchwork is a web-based patch tracking system designed to facilitate\nthe contribution and management of contributions to an open-source\nproject. Patches that have been sent to a mailing list are \\'caught' by\nthe system, and appear on a web page. Any comments posted that\nreference the patch are appended to the patch page too. For more\ninformation on Patchwork see\nhttp://jk.ozlabs.org/projects/patchwork/[].\n+\nBuildroot's Patchwork website is mainly for use by Buildroot's\nmaintainer to ensure patches aren't missed. It is also used by Buildroot\npatch reviewers (see also xref:apply-patches-patchwork[]).\nHowever, since the website exposes patches and their corresponding\nreview comments in a clean and concise web interface, it can be useful\nfor all Buildroot developers.\n+\nThe Buildroot patch management interface is available at\nhttp://patchwork.buildroot.org[].\n"
  },
  {
    "path": "docs/manual/selinux-support.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n[[selinux]]\n== Using SELinux in Buildroot\n\nhttps://selinuxproject.org[SELinux] is a Linux kernel security module\nenforcing access control policies. In addition to the traditional file\npermissions and access control lists, +SELinux+ allows to write rules\nfor users or processes to access specific functions of resources\n(files, sockets...).\n\n_SELinux_ has three modes of operation:\n\n* _Disabled_: the policy is not applied\n* _Permissive_: the policy is applied, and non-authorized actions are\n  simply logged. This mode is often used for troubleshooting SELinux\n  issues.\n* _Enforcing_: the policy is applied, and non-authorized actions are\n  denied\n\nIn Buildroot the mode of operation is controlled by the\n+BR2_PACKAGE_REFPOLICY_POLICY_STATE_*+ configuration options. The\nLinux kernel also has various configuration options that affect how\n+SELinux+ is enabled (see +security/selinux/Kconfig+ in the Linux\nkernel sources).\n\nBy default in Buildroot the +SELinux+ policy is provided by the\nupstream https://github.com/SELinuxProject/refpolicy[refpolicy]\nproject, enabled with +BR2_PACKAGE_REFPOLICY+.\n\n[[enabling-selinux]]\n=== Enabling SELinux support\n\nTo have proper support for +SELinux+ in a Buildroot generated system,\nthe following configuration options must be enabled:\n\n* +BR2_PACKAGE_LIBSELINUX+\n* +BR2_PACKAGE_REFPOLICY+\n\nIn addition, your filesystem image format must support extended\nattributes.\n\n[[selinux-policy-tweaking]]\n=== SELinux policy tweaking\n\nThe +SELinux refpolicy+ contains modules that can be enabled or\ndisabled when being built. Each module provide a number of +SELinux+\nrules. In Buildroot the non-base modules are disabled by default and\nseveral ways to enable such modules are provided:\n\n- Packages can enable a list of +SELinux+ modules within the +refpolicy+ using\n  the +<packagename>_SELINUX_MODULES+ variable.\n- Packages can provide additional +SELinux+ modules by putting them (.fc, .if\n  and .te files) in +package/<packagename>/selinux/+.\n- Extra +SELinux+ modules can be added in directories pointed by the\n  +BR2_REFPOLICY_EXTRA_MODULES_DIRS+ configuration option.\n- Additional modules in the +refpolicy+ can be enabled if listed in the\n  +BR2_REFPOLICY_EXTRA_MODULES_DEPENDENCIES+ configuration option.\n\nBuildroot also allows to completely override the +refpolicy+. This\nallows to provide a full custom policy designed specifically for a\ngiven system. When going this way, all of the above mechanisms are\ndisabled: no extra +SElinux+ module is added to the policy, and all\nthe available modules within the custom policy are enabled and built\ninto the final binary policy. The custom policy must be a fork of the\nofficial https://github.com/SELinuxProject/refpolicy[refpolicy].\n\nIn order to fully override the +refpolicy+ the following configuration\nvariables have to be set:\n\n- +BR2_PACKAGE_REFPOLICY_CUSTOM_GIT+\n- +BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL+\n- +BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION+\n"
  },
  {
    "path": "docs/manual/using-buildroot-debugger.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n==== Using +gdb+ in Buildroot\n\nBuildroot allows to do cross-debugging, where the debugger runs on the\nbuild machine and communicates with +gdbserver+ on the target to\ncontrol the execution of the program.\n\nTo achieve this:\n\n* If you are using an _internal toolchain_ (built by Buildroot), you\n  must enable +BR2_PACKAGE_HOST_GDB+, +BR2_PACKAGE_GDB+ and\n  +BR2_PACKAGE_GDB_SERVER+. This ensures that both the cross gdb and\n  gdbserver get built, and that gdbserver gets installed to your target.\n\n* If you are using an _external toolchain_, you should enable\n  +BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY+, which will copy the\n  gdbserver included with the external toolchain to the target. If your\n  external toolchain does not have a cross gdb or gdbserver, it is also\n  possible to let Buildroot build them, by enabling the same options as\n  for the _internal toolchain backend_.\n\nNow, to start debugging a program called +foo+, you should run on the\ntarget:\n\n----------------------------\ngdbserver :2345 foo\n----------------------------\n\nThis will cause +gdbserver+ to listen on TCP port 2345 for a connection\nfrom the cross gdb.\n\nThen, on the host, you should start the cross gdb using the following\ncommand line:\n\n----------------------------\n<buildroot>/output/host/bin/<tuple>-gdb -ix <buildroot>/output/staging/usr/share/buildroot/gdbinit foo\n----------------------------\n\nOf course, +foo+ must be available in the current directory, built\nwith debugging symbols. Typically you start this command from the\ndirectory where +foo+ is built (and not from +output/target/+ as the\nbinaries in that directory are stripped).\n\nThe +<buildroot>/output/staging/usr/share/buildroot/gdbinit+ file will tell the\ncross gdb where to find the libraries of the target.\n\nFinally, to connect to the target from the cross gdb:\n\n----------------------------\n(gdb) target remote <target ip address>:2345\n----------------------------\n"
  },
  {
    "path": "docs/manual/using-buildroot-development.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n==== Using Buildroot during development\n\nThe normal operation of Buildroot is to download a tarball, extract\nit, configure, compile and install the software component found inside\nthis tarball. The source code is extracted in\n+output/build/<package>-<version>+, which is a temporary directory:\nwhenever +make clean+ is used, this directory is entirely removed, and\nre-created at the next +make+ invocation. Even when a Git or\nSubversion repository is used as the input for the package source\ncode, Buildroot creates a tarball out of it, and then behaves as it\nnormally does with tarballs.\n\nThis behavior is well-suited when Buildroot is used mainly as an\nintegration tool, to build and integrate all the components of an\nembedded Linux system. However, if one uses Buildroot during the\ndevelopment of certain components of the system, this behavior is not\nvery convenient: one would instead like to make a small change to the\nsource code of one package, and be able to quickly rebuild the system\nwith Buildroot.\n\nMaking changes directly in +output/build/<package>-<version>+ is not\nan appropriate solution, because this directory is removed on +make\nclean+.\n\nTherefore, Buildroot provides a specific mechanism for this use case:\nthe +<pkg>_OVERRIDE_SRCDIR+ mechanism. Buildroot reads an _override_\nfile, which allows the user to tell Buildroot the location of the\nsource for certain packages.\n\nThe default location of the override file is +$(CONFIG_DIR)/local.mk+,\nas defined by the +BR2_PACKAGE_OVERRIDE_FILE+ configuration option.\n+$(CONFIG_DIR)+ is the location of the Buildroot +.config+ file, so\n+local.mk+ by default lives side-by-side with the +.config+ file,\nwhich means:\n\n* In the top-level Buildroot source directory for in-tree builds\n  (i.e., when +O=+ is not used)\n* In the out-of-tree directory for out-of-tree builds (i.e., when\n  +O=+ is used)\n\nIf a different location than these defaults is required, it can be\nspecified through the +BR2_PACKAGE_OVERRIDE_FILE+ configuration\noption.\n\nIn this _override_ file, Buildroot expects to find lines of the form:\n\n------------------\n<pkg1>_OVERRIDE_SRCDIR = /path/to/pkg1/sources\n<pkg2>_OVERRIDE_SRCDIR = /path/to/pkg2/sources\n------------------\n\nFor example:\n\n------------------\nLINUX_OVERRIDE_SRCDIR = /home/bob/linux/\nBUSYBOX_OVERRIDE_SRCDIR = /home/bob/busybox/\n------------------\n\nWhen Buildroot finds that for a given package, an\n+<pkg>_OVERRIDE_SRCDIR+ has been defined, it will no longer attempt to\ndownload, extract and patch the package. Instead, it will directly use\nthe source code available in the specified directory and +make clean+\nwill not touch this directory. This allows to point Buildroot to your\nown directories, that can be managed by Git, Subversion, or any other\nversion control system. To achieve this, Buildroot will use _rsync_ to\ncopy the source code of the component from the specified\n+<pkg>_OVERRIDE_SRCDIR+ to +output/build/<package>-custom/+.\n\nThis mechanism is best used in conjunction with the +make\n<pkg>-rebuild+ and +make <pkg>-reconfigure+ targets. A +make\n<pkg>-rebuild all+ sequence will _rsync_ the source code from\n+<pkg>_OVERRIDE_SRCDIR+ to +output/build/<package>-custom+ (thanks to\n_rsync_, only the modified files are copied), and restart the build\nprocess of just this package.\n\nIn the example of the +linux+ package above, the developer can then\nmake a source code change in +/home/bob/linux+ and then run:\n\n-----------------------\nmake linux-rebuild all\n-----------------------\n\nand in a matter of seconds gets the updated Linux kernel image in\n+output/images+. Similarly, a change can be made to the BusyBox source\ncode in +/home/bob/busybox+, and after:\n\n-----------------------\nmake busybox-rebuild all\n-----------------------\n\nthe root filesystem image in +output/images+ contains the updated\nBusyBox.\n\nSource trees for big projects often contain hundreds or thousands of\nfiles which are not needed for building, but will slow down the process\nof copying the sources with _rsync_. Optionally, it is possible define\n+<pkg>_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS+ to skip syncing certain files\nfrom the source tree. For example, when working on the +webkitgtk+\npackage, the following will exclude the tests and in-tree builds from\na local WebKit source tree:\n\n------------------\nWEBKITGTK_OVERRIDE_SRCDIR = /home/bob/WebKit\nWEBKITGTK_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = \\\n\t--exclude JSTests --exclude ManualTests --exclude PerformanceTests \\\n\t--exclude WebDriverTests --exclude WebKitBuild --exclude WebKitLibraries \\\n\t--exclude WebKit.xcworkspace --exclude Websites --exclude Examples\n------------------\n\nBy default, Buildroot skips syncing of VCS artifacts (e.g., the *.git* and\n*.svn* directories). Some packages prefer to have these VCS directories\navailable during build, for example for automatically determining a precise\ncommit reference for version information. To undo this built-in filtering at a\ncost of a slower speed, add these directories back:\n\n------------------\nLINUX_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS = --include .git\n------------------\n"
  },
  {
    "path": "docs/manual/using-buildroot-toolchain.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n==== Using the generated toolchain outside Buildroot\n\nYou may want to compile, for your target, your own programs or other\nsoftware that are not packaged in Buildroot. In order to do this you\ncan use the toolchain that was generated by Buildroot.\n\nThe toolchain generated by Buildroot is located by default in\n+output/host/+. The simplest way to use it is to add\n+output/host/bin/+ to your PATH environment variable and then to\nuse +ARCH-linux-gcc+, +ARCH-linux-objdump+, +ARCH-linux-ld+, etc.\n\nAlternatively, Buildroot can also export the toolchain and the development\nfiles of all selected packages, as an SDK, by running the command\n+make sdk+. This generates a tarball of the content of the host directory\n+output/host/+, named +<TARGET-TUPLE>_sdk-buildroot.tar.gz+ (which can be\noverriden by setting the environment variable +BR2_SDK_PREFIX+) and\nlocated in the output directory +output/images/+.\n\nThis tarball can then be distributed to application developers, when\nthey want to develop their applications that are not (yet) packaged as\na Buildroot package.\n\nUpon extracting the SDK tarball, the user must run the script\n+relocate-sdk.sh+ (located at the top directory of the SDK), to make\nsure all paths are updated with the new location.\n\nAlternatively, if you just want to prepare the SDK without generating\nthe tarball (e.g. because you will just be moving the +host+ directory,\nor will be generating the tarball on your own), Buildroot also allows\nyou to just prepare the SDK with +make prepare-sdk+ without actually\ngenerating a tarball.\n\nFor your convenience, by selecting the option\n+BR2_PACKAGE_HOST_ENVIRONMENT_SETUP+, you can get a\n+environment-setup+ script installed in +output/host/+ and therefore\nin your SDK.  This script can be sourced with\n+. your/sdk/path/environment-setup+ to export a number of environment\nvariables that will help cross-compile your projects using the\nBuildroot SDK: the +PATH+ will contain the SDK binaries, standard\n_autotools_ variables will be defined with the appropriate values, and\n+CONFIGURE_FLAGS+ will contain basic +./configure+ options to\ncross-compile _autotools_ projects. It also provides some useful\ncommands. Note however that once this script is sourced, the\nenvironment is setup only for cross-compilation, and no longer for\nnative compilation.\n"
  },
  {
    "path": "docs/manual/writing-rules.txt",
    "content": "// -*- mode:doc; -*-\n// vim: set syntax=asciidoc:\n\n== Coding style\n\nOverall, these coding style rules are here to help you to add new files in\nBuildroot or refactor existing ones.\n\nIf you slightly modify some existing file, the important thing is\nto keep the consistency of the whole file, so you can:\n\n* either follow the potentially deprecated coding style used in this\nfile,\n\n* or entirely rework it in order to make it comply with these rules.\n\n[[writing-rules-config-in]]\n\n=== +Config.in+ file\n\n+Config.in+ files contain entries for almost anything configurable in\nBuildroot.\n\nAn entry has the following pattern:\n\n---------------------\nconfig BR2_PACKAGE_LIBFOO\n\tbool \"libfoo\"\n\tdepends on BR2_PACKAGE_LIBBAZ\n\tselect BR2_PACKAGE_LIBBAR\n\thelp\n\t  This is a comment that explains what libfoo is. The help text\n\t  should be wrapped.\n\n\t  http://foosoftware.org/libfoo/\n---------------------\n\n* The +bool+, +depends on+, +select+ and +help+ lines are indented\n  with one tab.\n\n* The help text itself should be indented with one tab and two\n  spaces.\n\n* The help text should be wrapped to fit 72 columns, where tab counts\n  for 8, so 62 characters in the text itself.\n\nThe +Config.in+ files are the input for the configuration tool\nused in Buildroot, which is the regular _Kconfig_. For further\ndetails about the _Kconfig_ language, refer to\nhttp://kernel.org/doc/Documentation/kbuild/kconfig-language.txt[].\n\n[[writing-rules-mk]]\n\n=== The +.mk+ file\n\n* Header: The file starts with a header. It contains the module name,\npreferably in lowercase, enclosed between separators made of 80 hashes. A\nblank line is mandatory after the header:\n+\n---------------------\n################################################################################\n#\n# libfoo\n#\n################################################################################\n---------------------\n+\n* Assignment: use +=+ preceded and followed by one space:\n+\n---------------------\nLIBFOO_VERSION = 1.0\nLIBFOO_CONF_OPTS += --without-python-support\n---------------------\n+\nDo not align the +=+ signs.\n\n* Indentation: use tab only:\n+\n---------------------\ndefine LIBFOO_REMOVE_DOC\n\t$(RM) -fr $(TARGET_DIR)/usr/share/libfoo/doc \\\n\t\t$(TARGET_DIR)/usr/share/man/man3/libfoo*\nendef\n---------------------\n+\nNote that commands inside a +define+ block should always start with a tab,\nso _make_ recognizes them as commands.\n\n* Optional dependency:\n\n** Prefer multi-line syntax.\n+\nYES:\n+\n---------------------\nifeq ($(BR2_PACKAGE_PYTHON),y)\nLIBFOO_CONF_OPTS += --with-python-support\nLIBFOO_DEPENDENCIES += python\nelse\nLIBFOO_CONF_OPTS += --without-python-support\nendif\n---------------------\n+\nNO:\n+\n---------------------\nLIBFOO_CONF_OPTS += --with$(if $(BR2_PACKAGE_PYTHON),,out)-python-support\nLIBFOO_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,)\n---------------------\n\n** Keep configure options and dependencies close together.\n\n* Optional hooks: keep hook definition and assignment together in one\n  if block.\n+\nYES:\n+\n---------------------\nifneq ($(BR2_LIBFOO_INSTALL_DATA),y)\ndefine LIBFOO_REMOVE_DATA\n\t$(RM) -fr $(TARGET_DIR)/usr/share/libfoo/data\nendef\nLIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA\nendif\n---------------------\n+\nNO:\n+\n---------------------\ndefine LIBFOO_REMOVE_DATA\n\t$(RM) -fr $(TARGET_DIR)/usr/share/libfoo/data\nendef\n\nifneq ($(BR2_LIBFOO_INSTALL_DATA),y)\nLIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA\nendif\n---------------------\n\n[[writing-genimage-cfg]]\n\n=== The +genimage.cfg+ file\n\n+genimage.cfg+ files contain the output image layout that genimage utility\nuses to create final .img file.\n\nAn example follows:\n\n---------------------\nimage efi-part.vfat {\n\tvfat {\n\t\tfile EFI {\n\t\t\timage = \"efi-part/EFI\"\n\t\t}\n\n\t\tfile Image {\n\t\t\timage = \"Image\"\n\t\t}\n\t}\n\n\tsize = 32M\n}\n\nimage sdimage.img {\n\thdimage {\n\t}\n\n\tpartition u-boot {\n\t\timage = \"efi-part.vfat\"\n\t\toffset = 8K\n\t}\n\n\tpartition root {\n\t\timage = \"rootfs.ext2\"\n\t\tsize = 512M\n\t}\n}\n---------------------\n\n* Every +section+(i.e. hdimage, vfat etc.), +partition+ must be indented\n  with one tab.\n\n* Every +file+ or other +subnode+ must be indented with two tabs.\n\n* Every node(+section+, +partition+, +file+, +subnode+) must have an open\n  curly bracket on the same line of the node's name, while the closing one\n  must be on a newline and after it a newline must be added except for the\n  last one node. Same goes for its option, for example option +size = +.\n\n* Every +option+(i.e. +image+, +offset+, +size+) must have the +=+\n  assignment one space from it and one space from the value specified.\n\n* Filename must at least begin with genimage prefix and have the .cfg\n  extension to be easy to recognize.\n\nThe +genimage.cfg+ files are the input for the genimage tool used in\nBuildroot to generate the final image file(i.e. sdcard.img). For further\ndetails about the _genimage_ language, refer to\nhttps://github.com/pengutronix/genimage/blob/master/README.rst[].\n\n\n=== The documentation\n\nThe documentation uses the\nhttp://www.methods.co.nz/asciidoc/[asciidoc] format.\n\nFor further details about the asciidoc syntax, refer to\nhttp://www.methods.co.nz/asciidoc/userguide.html[].\n\n=== Support scripts\n\nSome scripts in the +support/+ and +utils/+ directories are written in\nPython and should follow the\nhttps://www.python.org/dev/peps/pep-0008/[PEP8 Style Guide for Python Code].\n"
  },
  {
    "path": "docs/website/.htaccess",
    "content": "# BEGIN Compress text files\n<ifModule mod_deflate.c>\n  <filesMatch \".(css|js|x?html?|php)$\">\n    SetOutputFilter DEFLATE\n  </filesMatch>\n</ifModule>\n# END Compress text files\n\n# BEGIN Expire headers\n<ifModule mod_expires.c>\n  ExpiresActive On\n  ExpiresDefault \"access plus 1 seconds\"\n  ExpiresByType image/x-icon \"access plus 2592000 seconds\"\n  ExpiresByType image/jpeg \"access plus 2592000 seconds\"\n  ExpiresByType image/png \"access plus 2592000 seconds\"\n  ExpiresByType image/gif \"access plus 2592000 seconds\"\n  ExpiresByType application/x-shockwave-flash \"access plus 2592000 seconds\"\n  ExpiresByType text/css \"access plus 604800 seconds\"\n  ExpiresByType text/javascript \"access plus 216000 seconds\"\n  ExpiresByType application/javascript \"access plus 216000 seconds\"\n  ExpiresByType application/x-javascript \"access plus 216000 seconds\"\n  ExpiresByType text/html \"access plus 600 seconds\"\n  ExpiresByType application/xhtml+xml \"access plus 600 seconds\"\n</ifModule>\n# END Expire headers\n\n# BEGIN Cache-Control Headers\n<ifModule mod_headers.c>\n  <filesMatch \".(ico|jpe?g|png|gif|swf)$\">\n    Header set Cache-Control \"max-age=2592000, public\"\n  </filesMatch>\n  <filesMatch \".(css)$\">\n    Header set Cache-Control \"max-age=604800, public\"\n  </filesMatch>\n  <filesMatch \".(js)$\">\n    Header set Cache-Control \"max-age=216000, private\"\n  </filesMatch>\n  <filesMatch \".(x?html?|php)$\">\n    Header set Cache-Control \"max-age=600, private, must-revalidate\"\n  </filesMatch>\n</ifModule>\n# END Cache-Control Headers\n\n# BEGIN Turn ETags Off\n<ifModule mod_headers.c>\n  Header unset ETag\n</ifModule>\nFileETag None\n# END Turn ETags Off\n\n# BEGIN gzip\n<ifModule mod_gzip.c>\nmod_gzip_on Yes\nmod_gzip_dechunk Yes\nmod_gzip_item_include file .(html?|txt|css|js)$\nmod_gzip_item_include handler ^cgi-script$\nmod_gzip_item_include mime ^text/.*\nmod_gzip_item_include mime ^application/x-javascript.*\nmod_gzip_item_exclude mime ^image/.*\nmod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*\n</ifModule>\n# END gzip\n"
  },
  {
    "path": "docs/website/association.html",
    "content": "<!--#include file=\"header.html\" -->\n\n<div class=\"container\">\n  <div class=\"row nh\"><!-- current sponsor row -->\n    <div class=\"col-lg-10 col-lg-offset-1 col-md-12 col-sm-12 col-xs-12\">\n      <div class=\"panel panel-primary\">\n\t<div class=\"panel-heading\">Association</div>\n\t<div class=\"panel-body\">\n\n\t  <p>The Buildroot open-source project is supported by a\n\t  non-profit organization called the <strong>Buildroot\n\t  Association</strong>. The goal of this non-profit\n\t  organization is <strong>to engage actions to promote, help\n\t  develop and democratise the Buildroot project</strong>.</p>\n\n\t  <p>This non-profit organization is registered as a legal\n\t  entity in France, more precisely as an <em>association loi\n\t  1901</em>.</p>\n\n\t  <p>This organization can receive funding from members,\n\t  donors and sponsors. This funding is then used to pay for:</p>\n\n\t  <ul>\n\t    <li>the meeting rooms used during the Buildroot\n\t      Developers Meeting twice per year;</li>\n\t    <li>travel expenses for contributors\n\t      willing to attend the Buildroot Developers\n\t      Meeting, and not covered by their employer to do\n\t      so;</li>\n\t    <li>renting servers and services used to host the\n\t      Buildroot infrastructure.</li>\n\t  </ul>\n\n\t  <p>The bylaws of the association are available\n\t  in <a href=\"https://raw.githubusercontent.com/buildroot/buildroot-association/master/statuts_fr.txt\">French</a>\n\t  (official) and\n\t  in <a href=\"https://github.com/buildroot/buildroot-association/blob/master/statutes_en.txt\">English</a>\n\t  (unofficial translation). The association was declared on\n\t  March 14, 2016 to the <em>Préfecture de Haute-Garonne</em>\n\t  (France) and is registered under the n°W313024278. See this\n\t  official <a href=\"https://github.com/buildroot/buildroot-association/blob/master/pdf/Recepisse_CR.pdf\">receipt</a>\n\t  from the French authorities.</p>\n\n\t  <p>Our accounting is fully public, including the bank\n\t  account summaries,\n\t  see <a href=\"https://github.com/buildroot/buildroot-association/tree/master/accounting\">accounting</a>. Numerous\n\t  other administrative documents related to the association\n\t  are available on\n\t  its <a href=\"https://github.com/buildroot/buildroot-association/\">Github\n\t  repository</a></p>\n\t</div>\n      </div>\n\n      <div class=\"panel panel-primary\">\n\t<div class=\"panel-heading\">Becoming a member</div>\n\t<div class=\"panel-body\">\n\n\t  <p>To become a member, an individual or a company simply has\n\t  to pay its yearly membership. For an individual, the minimum\n\t  membership fee per year is 10 EUR. For a company, the\n\t  minimum membership fee per year is 150 EUR. Individuals and\n\t  companies are free to give more than the minimum\n\t  required.</p>\n\n\t  <p>The membership is valid for the current civil year, i.e\n\t  any membership fee paid in 2019 is valid through December 31,\n\t  2019.</p>\n\n\t  <p>Once the membership fee is received, it will be listed in\n\t  the\n\t  association <a href=\"https://github.com/buildroot/buildroot-association/tree/master/accounting\">accounting</a>\n\t  files, which serve as the official list of\n\t  members. Therefore, members accept that their name and the\n\t  amount of their membership fee is made public.</p>\n\n\t  <p>There are two possibilities to pay the membership\n\t  fee:</p>\n\n\t  <ul>\n\n\t    <li>A direct wire-transfer to the association bank\n\t    account. Since the bank account is located in France, this\n\t    is completely free of charge for any person or company\n\t    located in the European Union. The IBAN number of the\n\t    association bank account is <code>FR53 2004 1010 1615 0958\n\t    0P03 772</code>.</li>\n\n\t    <li>A Paypal payment to the association Paypal account,\n\t    whose address\n\t    is <code>buildroot-association@buildroot.org</code>.</li>\n\n\t  </ul>\n\n\t</div>\n      </div>\n\n      <div class=\"panel panel-primary\">\n\t<div class=\"panel-heading\">Sponsoring the project</div>\n\t<div class=\"panel-body\">\n\n\t  <p>Companies willing to help the Buildroot project can do so\n\t  by making a donation to the <em>Buildroot\n\t  Association</em>. In exchange for these donations, companies\n\t  will be listed on our <a href=\"/sponsors.html\">Sponsors</a>\n\t  page and will be thanked in our release announcements.</p>\n\n\t  <p>As the <em>Buildroot Association</em> is a legal entity\n\t  registered in France, it is able to deliver a bill and/or\n\t  receipt.</p>\n\n\t  <p>Please\n\t  contact <a href=\"mailto:buildroot-association@buildroot.org\">buildroot-association@buildroot.org</a>\n\t  if you are a company interested in making a donation.</p>\n\n\t</div>\n      </div>\n\n    </div>\n  </div>\n</div>\n\n<!--#include file=\"footer.html\" -->\n"
  },
  {
    "path": "docs/website/contribute.html",
    "content": "<!--#include file=\"header.html\" -->\n\n<div class=\"container\">\n<div class=\"row nh\">\n<div class=\"col-lg-10 col-lg-offset-1 col-md-12 col-sm-12 col-xs-12\">\n\n  <div class=\"panel panel-primary\">\n    <div class=\"panel-heading\">Contribute</div>\n    <div class=\"panel-body\">\n      <p>Buildroot is an open source project and you are very welcome to contribute to\n\tit.<br />\n\tThere are many different ways to contribute:</p>\n\n      <ul>\n\t<li>Reproducing, analyzing and fixing bugs from our\n\t  <a href=\"https://bugs.buildroot.org/\">bug tracker</a></li>\n\t<li>Analyzing and fixing <a href=\"http://autobuild.buildroot.org/\">\n\t    autobuild failures</a></li>\n\t<li>Reviewing and testing patches sent by other developers. See the\n\t  <a href=\"http://lists.buildroot.org/mailman/listinfo/buildroot\">mailing list\n\t  </a> or <a href=\"https://patchwork.ozlabs.org/project/buildroot/list/\">\n\t    patchwork</a>.</li>\n\t<li>Working on items from the\n\t  <a href=\"http://www.elinux.org/Buildroot#Todo_list\">TODO list</a></li>\n\t<li><a href=\"http://buildroot.org/manual.html#submitting-patches\">Submitting\n\t  your own patches</a> through the\n\t  <a href=\"http://lists.buildroot.org/mailman/listinfo/buildroot\">mailing list\n\t</a></li>\n      </ul>\n\n      <p>For more details on these topics, check out the\n\t<a href=\"http://buildroot.org/manual.html#_contributing_to_buildroot\">\n\t  Contributing to buildroot</a> chapter in the Buildroot manual. Thanks for your help!</p>\n\n      <p>If you need any support yourself, have a look at <a href=\"./support.html\">\n\t  Support</a>.</p>\n    </div>\n  </div>\n\n</div><!--/.col-sm-10 -->\n</div><!--/.row -->\n</div>\n\n<!--#include file=\"footer.html\" -->\n"
  },
  {
    "path": "docs/website/copyright.txt",
    "content": "\nThe code and graphics on this website (and it's mirror sites, if any) are\nCopyright (c) 1999-2005 by Erik Andersen, 2006-2020 The Buildroot\ndevelopers. All rights reserved.\n\nDocuments on this Web site including their graphical elements, design, and\nlayout are protected by trade dress and other laws and MAY BE COPIED OR\nIMITATED IN WHOLE OR IN PART.  THIS WEBSITE IS LICENSED FREE OF CHARGE, THERE\nIS NO WARRANTY FOR THE WEBSITE TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nSHOULD THIS WEBSITE PROVE DEFECTIVE, YOU MAY ASSUME THAT SOMEONE MIGHT GET\nAROUND TO SERVICING, REPAIRING OR CORRECTING IT SOMETIME WHEN THEY HAVE NOTHING\nBETTER TO DO.  REGARDLESS, YOU GET TO KEEP BOTH PIECES.\n\nIN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY\nCOPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THIS\nWEBSITE AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR\nINABILITY TO USE THIS WEBSITE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR\nLOSS OF HAIR, LOSS OF LIFE, LOSS OF MEMORY, LOSS OF YOUR CARKEYS, MISPLACEMENT\nOF YOUR PAYCHECK, OR COMMANDER DATA BEING RENDERED UNABLE TO ASSIST THE\nSTARFLEET OFFICERS ABORD THE STARSHIP ENTERPRISE TO RECALIBRATE THE MAIN\nDEFLECTOR ARRAY, LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE\nWEBSITE TO OPERATE WITH YOUR WEBBROWSER), EVEN IF SUCH HOLDER OR OTHER PARTY\nHAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n\nYou have been warned.\n\nYou can contact the webmaster at <buildroot@buildroot.org> if you have some sort\nof problem with this.\n\n"
  },
  {
    "path": "docs/website/css/main.css",
    "content": "/*\n * Author: Carlos Alvarez\n * URL: http://alvarez.is\n *\n * Project Name: FLATTY - Free Bootstrap 3 Theme\n * Version: 1.0\n * URL: http://blacktie.co\n */\n\nbody {\n  background-color: #f2f2f2;\n\tfont-family: 'Roboto', sans-serif;\n\tfont-weight: 300;\n\tfont-size: 16px;\n\tcolor: #555;\n\n\t-webkit-font-smoothing: antialiased;\n\t-webkit-overflow-scrolling: touch;\n}\n\n/* Titles */\nh1, h2, h3, h4, h5, h6 {\n\tfont-family: 'Roboto', sans-serif;\n\tfont-weight: 300;\n\tcolor: #333;\n}\n\nh1 {\n\tfont-size: 40px;\n}\n\nh3 {\n\tcolor: #95a5a6;\n\tfont-weight: 400;\n}\n\nh4 {\n\tcolor: #95a5a6;\n\tfont-weight: 400;\n\tfont-size: 20px;\n}\n\n.ellipsis p {\n\tmargin-bottom:10px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n.centered {\n\ttext-align: center;\n}\n\n/* Links */\na {\n\tcolor: #3498db;\n\tword-wrap: break-word;\n\n\t-webkit-transition: color 0.1s ease-in, background 0.1s ease-in;\n\t-moz-transition: color 0.1s ease-in, background 0.1s ease-in;\n\t-ms-transition: color 0.1s ease-in, background 0.1s ease-in;\n\t-o-transition: color 0.1s ease-in, background 0.1s ease-in;\n\ttransition: color 0.1s ease-in, background 0.1s ease-in;\n}\n\na:hover,\na:focus {\n\tcolor: #7b7b7b;\n\ttext-decoration: none;\n\toutline: 0;\n}\n\na:before,\na:after {\n\t-webkit-transition: color 0.1s ease-in, background 0.1s ease-in;\n\t-moz-transition: color 0.1s ease-in, background 0.1s ease-in;\n\t-ms-transition: color 0.1s ease-in, background 0.1s ease-in;\n\t-o-transition: color 0.1s ease-in, background 0.1s ease-in;\n\ttransition: color 0.1s ease-in, background 0.1s ease-in;\n}\n\n hr {\n\tdisplay: block;\n\theight: 1px;\n\tborder: 0;\n\tborder-top: 1px solid #ccc;\n\tmargin: 1em 0;\n\tpadding: 0;\n}\n\n.navbar-default {\n\tbackground-color: #3498db;\n\tborder-color: transparent;\n}\n\n.navbar-default .navbar-brand {\n\tcolor: white;\n}\n\n.navbar-default .navbar-nav > li > a {\n\tcolor: white;\n}\n\n/* Helpers */\n\n.mt {\n\tmargin-top: 40px;\n\tmargin-bottom: 40px;\n}\n\n.nh {\n\tmargin-top: 80px;\n\tmargin-bottom: 40px;\n}\n\n.form-control {\n\theight: 42px;\n\tfont-size: 18px;\n\twidth: 280px;\n}\n\ni {\n\tmargin: 8px;\n\tcolor: #3498db;\n}\n\n\n/* HeaderWrap */\n#headerwrap {\n\t/* background: url(../img/bg01.jpg) no-repeat center top; */\n\tbackground-color: #3498db;\n\tmargin-top: -20px;\n\tpadding-top:120px;\n\tbackground-attachment: relative;\n\tbackground-position: center center;\n\tmin-height: 400px;\n\tmax-height: 800px;\n\twidth: 100%;\n\n\t-webkit-background-size: 100%;\n\t-moz-background-size: 100%;\n\t-o-background-size: 100%;\n\tbackground-size: 100%;\n\n\t-webkit-background-size: cover;\n\t-moz-background-size: cover;\n\t-o-background-size: cover;\n\tbackground-size: cover;\n}\n\n#headerwrap h1 {\n\tcolor: white;\n\tfont-size: 60px;\n\tfont-weight: bold;\n\tletter-spacing: 1px;\n}\n\n#menubutton {\n\tmax-height: 50px;\n\tmargin-top: 6px;\n\tpadding-top: 15px;\n\tmargin-left: 10px;\n}\n\n.panel-sponsor {\n\tmin-height: 350px;\n\ttext-align: justify;\n\ttext-justify: inter-word;\n}\n\n@media (min-width: 768px) and (max-width: 991px) {\n\t.navbar-collapse.collapse {\n\t\tdisplay: none !important;\n\t}\n\t.navbar-collapse.collapse.in {\n\t\tdisplay: block !important;\n\t}\n\t.navbar-header .collapse, .navbar-toggle {\n\t\tdisplay:block !important;\n\t}\n\t.navbar-header {\n\t\tfloat:none;\n\t}\n\t.navbar-collapse {\n\t\toverflow:hidden;\n\t}\n\t#menubutton {\n\t\tmargin-right: 40px;\n\t\twidth: 45px;\n\t}\n\t.text-shrink {\n\t\tvisibility: hidden;\n\t}\n}\n\n@media (max-width:767px) {\n\t#menubutton {\n\t\tmax-height: 50px;\n\t\tmargin-top: 6px;\n\t\tpadding-top: 15px;\n\t\tmargin-left: 15px;\n\t\tmargin-right: 15px;\n\t}\n}\n\n/* entire container, keeps perspective */\n.flip-container {\n\tperspective: 1000;\n}\n\t/* flip the pane when hovered */\n\t.flip-container:hover .flipper, .flip-container.hover .flipper {\n\t\ttransform: rotateY(180deg);\n\t}\n\n.flip-container, .front, .back {\n\twidth: 180px;\n\theight: 180px;\n}\n\n/* flip speed goes here */\n.flipper {\n\ttransition: 0.6s;\n\ttransform-style: preserve-3d;\n\n\tposition: relative;\n}\n\n/* hide back of pane during swap */\n.front, .back {\n\tbackface-visibility: hidden;\n\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n}\n\n/* front pane, placed above back */\n.front {\n\tz-index: 2;\n\t/* for firefox 31 */\n\ttransform: rotateY(0deg);\n}\n\n/* back, initially hidden pane */\n.back {\n\ttransform: rotateY(180deg);\n}\n\n.back img {\n\t-moz-transform: scaleX(-1);\n\t-o-transform: scaleX(-1);\n\t-webkit-transform: scaleX(-1);\n\ttransform: scaleX(-1);\n\tfilter: FlipH;\n\t-ms-filter: \"FlipH\";\n}\n\n.panel-box p {\n    height: 1.5em;\n}\n"
  },
  {
    "path": "docs/website/css/timeline.css",
    "content": ".timeline {\n\tlist-style: none;\n\tpadding: 20px 0 20px;\n\tposition: relative;\n}\n\n.timeline:before {\n\ttop: 0;\n\tbottom: 0;\n\tposition: absolute;\n\tcontent: \" \";\n\twidth: 3px;\n\tbackground-color: #E4E4E4;\n\tleft: 50%;\n\tmargin-left: -1.5px;\n\t}\n\n.timeline > li {\n\tmargin-bottom: 20px;\n\tposition: relative;\n}\n\n.timeline > li:before,\n.timeline > li:after {\n\tcontent: \" \";\n\tdisplay: table;\n}\n\n.timeline > li:after {\n\tclear: both;\n}\n\n.timeline > li:before,\n.timeline > li:after {\n\tcontent: \" \";\n\tdisplay: table;\n}\n\n.timeline > li:after {\n    clear: both;\n}\n\n.timeline > li > .timeline-panel {\n\twidth: 46%;\n\tfloat: left;\n\tborder: 1px solid #d4d4d4;\n\tborder-radius: 2px;\n\tpadding: 20px;\n\tposition: relative;\n\t-webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175);\n\tbox-shadow: 0 1px 6px rgba(0, 0, 0, 0.175);\n\tbackground-color: white;\n}\n\n.timeline > li > .timeline-panel:before {\n\tposition: absolute;\n\ttop: 26px;\n\tright: -15px;\n\tdisplay: inline-block;\n\tborder-top: 15px solid transparent;\n\tborder-left: 15px solid #ccc;\n\tborder-right: 0 solid #ccc;\n\tborder-bottom: 15px solid transparent;\n\tcontent: \" \";\n}\n\n.timeline > li > .timeline-panel:after {\n\tposition: absolute;\n\ttop: 27px;\n\tright: -14px;\n\tdisplay: inline-block;\n\tborder-top: 14px solid transparent;\n\tborder-left: 14px solid #fff;\n\tborder-right: 0 solid #fff;\n\tborder-bottom: 14px solid transparent;\n\tcontent: \" \";\n}\n\n.timeline > li > .timeline-badge {\n\tcolor: #fff;\n\twidth: 50px;\n\theight: 50px;\n\tline-height: 50px;\n\tfont-size: 1.4em;\n\ttext-align: center;\n\tposition: absolute;\n\ttop: 16px;\n\tleft: 50%;\n\tmargin-left: -25px;\n\tbackground-color: #E6E6E6;\n\tz-index: 100;\n\tborder-top-right-radius: 50%;\n\tborder-top-left-radius: 50%;\n\tborder-bottom-right-radius: 50%;\n\tborder-bottom-left-radius: 50%;\n}\n\n.timeline > li.timeline-inverted > .timeline-panel {\n\tfloat: right;\n}\n\n.timeline > li.timeline-inverted > .timeline-panel:before {\n\tborder-left-width: 0;\n\tborder-right-width: 15px;\n\tleft: -15px;\n\tright: auto;\n}\n\n.timeline > li.timeline-inverted > .timeline-panel:after {\n\tborder-left-width: 0;\n\tborder-right-width: 14px;\n\tleft: -14px;\n\tright: auto;\n}\n\n.timeline-badge.primary {\n\tbackground-color: #2e6da4 !important;\n}\n\n.timeline-badge.success {\n\tbackground-color: #3f903f !important;\n}\n\n.timeline-badge.warning {\n\tbackground-color: #f0ad4e !important;\n}\n\n.timeline-badge.danger {\n\tbackground-color: #d9534f !important;\n}\n\n.timeline-badge.info {\n\tbackground-color: #5bc0de !important;\n}\n\n.timeline-title {\n\tmargin-top: 0;\n\tcolor: inherit;\n}\n\n.timeline-body > p,\n.timeline-body > ul {\n\tmargin-bottom: 0;\n}\n\n.timeline-body > p + p {\n\tmargin-top: 5px;\n}\n\n@media (max-width: 767px) {\n\tul.timeline:before {\n\t\tleft: 40px;\n\t}\n\n\tul.timeline > li > .timeline-panel {\n\t\twidth: calc(100% - 90px);\n\t\twidth: -moz-calc(100% - 90px);\n\t\twidth: -webkit-calc(100% - 90px);\n\t}\n\n\tul.timeline > li > .timeline-badge {\n\t\tleft: 15px;\n\t\tmargin-left: 0;\n\t\ttop: 16px;\n\t}\n\n\tul.timeline > li > .timeline-panel {\n\t\tfloat: right;\n\t}\n\n\tul.timeline > li > .timeline-panel:before {\n\t\tborder-left-width: 0;\n\t\tborder-right-width: 15px;\n\t\tleft: -15px;\n\t\tright: auto;\n\t}\n\n\tul.timeline > li > .timeline-panel:after {\n\t\tborder-left-width: 0;\n\t\tborder-right-width: 14px;\n\t\tleft: -14px;\n\t\tright: auto;\n\t}\n}\n"
  },
  {
    "path": "docs/website/docs.html",
    "content": "<!--#include file=\"header.html\" -->\n\n<div class=\"container\">\n<div class=\"row nh\">\n<div class=\"col-lg-10 col-lg-offset-1 col-md-12 col-sm-12 col-xs-12\">\n\n  <div class=\"panel panel-primary\">\n    <div class=\"panel-heading\">Documentation</div>\n    <div class=\"panel-body\">\n      <p>The Buildroot user manual is where you want to start reading if you\n\twish to understand how Buildroot works, or wish to change/extend/fix\n\tthings. It is available as:</p>\n\n      <div class=\"row mt centered\">\n\t<div class=\"col-sm-4\">\n\t  <div class=\"flip-container center-block\" ontouchstart=\"this.classList.toggle('hover');\">\n\t    <div class=\"flipper\">\n\t      <div class=\"front\">\n\t\t<a href=\"/manual.html\"><img src=\"images/browser.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t      <div class=\"back\">\n\t\t<a href=\"/manual.html\"><img src=\"images/browser.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t    </div>\n\t  </div>\n\n\t  <h3>HTML <br>\n\t    <a href=\"/manual.html\">Stable</a> |\n\t    <a href=\"http://nightly.buildroot.org/manual.html\">Nightly</a>\n\t  </h3>\n\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"flip-container center-block\" ontouchstart=\"this.classList.toggle('hover');\">\n\t    <div class=\"flipper\">\n\t      <div class=\"front\">\n\t\t<img src=\"images/pdf-icon.png\" width=\"180\" alt=\"\">\n\t      </div>\n\t      <div class=\"back\">\n\t\t<img src=\"images/pdf-icon.png\" width=\"180\" alt=\"\">\n\t      </div>\n\t    </div>\n\t  </div>\n\n\t  <h3>PDF <br>\n\t    <a href=\"/downloads/manual/manual.pdf\">Stable</a> |\n\t    <a href=\"http://nightly.buildroot.org/manual.pdf\">Nightly</a>\n\t  </h3>\n\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"flip-container center-block\" ontouchstart=\"this.classList.toggle('hover');\">\n\t    <div class=\"flipper\">\n\t      <div class=\"front\">\n\t\t<img src=\"images/text.png\" width=\"180\" alt=\"\">\n\t      </div>\n\t      <div class=\"back\">\n\t\t<img src=\"images/text.png\" width=\"180\" alt=\"\">\n\t      </div>\n\t    </div>\n\t  </div>\n\n\t  <h3>ASCII <br>\n\t    <a href=\"/downloads/manual/manual.text\">Stable</a> |\n\t    <a href=\"http://nightly.buildroot.org/manual.text\">Nightly</a>\n\t  </h3>\n\n\t</div>\n      </div>\n\n      <p>If you find any errors (factual, grammatical, whatever) please\n\treport them to us.</p>\n    </div>\n  </div>\n\n  <div class=\"panel panel-primary\">\n    <div class=\"panel-heading\">Training</div>\n    <div class=\"panel-body\">\n      <p><a href=\"http://www.bootlin.com\">Bootlin</a> (formerly Free Electrons)\n\toffers a complete <a href=\"http://bootlin.com/training/buildroot/\">3-days\n\t  training course on Buildroot</a>. They also make the training\n\tmaterials freely available:</p>\n\n      <div class=\"row\">\n\t<div class=\"col-sm-8\">\n\t  <div class=\"panel panel-success\">\n\t    <div class=\"panel-heading\">Slides preview</div>\n\t    <div class=\"panel-body\">\n\t      <div id=\"slides\" style=\"width: 100%; padding-bottom: 75%; position: relative\">\n\t\t<a href=\"http://bootlin.com/doc/training/buildroot/buildroot-slides.pdf\"><img src=\"images/buildroot-slides.png\" alt=\"buildroot slides\" style=\"position:absolute; width:100%; height:100%; top:0; left:0;\"></a>\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default\t\">\n\t    <div class=\"panel-heading\">Training materials</div>\n\t    <div class=\"panel-body\">\n\t      <ul>\n\t\t<li><a href=\"http://bootlin.com/doc/training/buildroot/buildroot-slides.pdf\">slides (PDF)</a></li>\n\t\t<li><a href=\"http://bootlin.com/doc/training/buildroot/buildroot-labs.pdf\">practical labs (PDF)</a></li>\n\t\t<li><a href=\"http://bootlin.com/doc/training/buildroot/buildroot-labs.tar.xz\">practical labs data (.tar.xz)</a></li>\n\t      </ul>\n\t    </div>\n\t  </div>\n\n\t  <div class=\"panel panel-default\">\n\t    <div class=\"panel-heading\">Public online training course</div>\n\t    <div class=\"panel-body\">\n\t      Regular online training courses, available to individual\n\t      registration, are proposed by Bootlin, with Thomas\n\t      Petazzoni as\n\t      trainer. See <a href=\"https://bootlin.com/training/buildroot/\">next\n\t      dates and registration details</a>.\n\t    </div>\n\t  </div>\n\t</div>\n      </div>\n    </div>\n  </div>\n\n</div>\n</div>\n</div>\n\n<!--#include file=\"footer.html\" -->\n\n"
  },
  {
    "path": "docs/website/download.html",
    "content": "<!--#include file=\"header.html\" -->\n\n<div class=\"container\">\n<div class=\"row nh\">\n<div class=\"col-lg-10 col-lg-offset-1 col-md-12 col-sm-12 col-xs-12\">\n\n  <div class=\"panel panel-primary\">\n    <div class=\"panel-heading\">Download</div>\n    <div class=\"panel-body\">\n\n      <h3 style=\"text-align: center;\">Latest long term support release: <b>2021.02.7</b></h3>\n\n      <div class=\"row mt centered\">\n\t<div class=\"col-sm-6\">\n\t  <div class=\"flip-container center-block\" ontouchstart=\"this.classList.toggle('hover');\">\n\t    <div class=\"flipper\">\n\t      <div class=\"front\">\n\t\t<a href=\"/downloads/buildroot-2021.02.7.tar.gz\"><img src=\"images/zip.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t      <div class=\"back\">\n\t\t<a href=\"/downloads/buildroot-2021.02.7.tar.gz\"><img src=\"images/zip.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t    </div>\n\t  </div>\n\t  <h3><a href=\"/downloads/buildroot-2021.02.7.tar.gz\">buildroot-2021.02.7.tar.gz</a></h3>\n\t  <p><a href=\"/downloads/buildroot-2021.02.7.tar.gz.sign\">PGP signature</a></p>\n\t</div>\n\t<div class=\"col-sm-6\">\n\t  <div class=\"flip-container center-block\" ontouchstart=\"this.classList.toggle('hover');\">\n\t    <div class=\"flipper\">\n\t      <div class=\"front\">\n\t\t<a href=\"/downloads/buildroot-2021.02.7.tar.bz2\"><img src=\"images/package.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t      <div class=\"back\">\n\t\t<a href=\"/downloads/buildroot-2021.02.7.tar.bz2\"><img src=\"images/package.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t    </div>\n\t  </div>\n\n\t  <h3><a href=\"/downloads/buildroot-2021.02.7.tar.bz2\">buildroot-2021.02.7.tar.bz2</a></h3>\n\t  <p><a href=\"/downloads/buildroot-2021.02.7.tar.bz2.sign\">PGP signature</a></p>\n\t</div>\n      </div>\n\n      <h3 style=\"text-align: center;\">Latest stable release: <b>2021.11</b></h3>\n\n      <div class=\"row mt centered\">\n\t<div class=\"col-sm-6\">\n\t  <div class=\"flip-container center-block\" ontouchstart=\"this.classList.toggle('hover');\">\n\t    <div class=\"flipper\">\n\t      <div class=\"front\">\n\t\t<a href=\"/downloads/buildroot-2021.11.tar.gz\"><img src=\"images/zip.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t      <div class=\"back\">\n\t\t<a href=\"/downloads/buildroot-2021.11.tar.gz\"><img src=\"images/zip.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t    </div>\n\t  </div>\n\t  <h3><a href=\"/downloads/buildroot-2021.11.tar.gz\">buildroot-2021.11.tar.gz</a></h3>\n\t  <p><a href=\"/downloads/buildroot-2021.11.tar.gz.sign\">PGP signature</a></p>\n\t</div>\n\t<div class=\"col-sm-6\">\n\t  <div class=\"flip-container center-block\" ontouchstart=\"this.classList.toggle('hover');\">\n\t    <div class=\"flipper\">\n\t      <div class=\"front\">\n\t\t<a href=\"/downloads/buildroot-2021.11.tar.xz\"><img src=\"images/package.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t      <div class=\"back\">\n\t\t<a href=\"/downloads/buildroot-2021.11.tar.xz\"><img src=\"images/package.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t    </div>\n\t  </div>\n\n\t  <h3><a href=\"/downloads/buildroot-2021.11.tar.xz\">buildroot-2021.11.tar.xz</a></h3>\n\t  <p><a href=\"/downloads/buildroot-2021.11.tar.xz.sign\">PGP signature</a></p>\n\t</div>\n      </div>\n<!--\n      <h3 style=\"text-align: center;\">Latest release candidate: <b>2021.11-rc3</b></h3>\n      <div class=\"row mt centered\">\n\t<div class=\"col-sm-6\">\n\t  <div class=\"flip-container center-block\" ontouchstart=\"this.classList.toggle('hover');\">\n\t    <div class=\"flipper\">\n\t      <div class=\"front\">\n\t\t<a href=\"/downloads/buildroot-2021.11-rc3.tar.gz\"><img src=\"images/zip.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t      <div class=\"back\">\n\t\t<a href=\"/downloads/buildroot-2021.11-rc3.tar.gz\"><img src=\"images/zip.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t    </div>\n\t  </div>\n\n\t  <h3><a href=\"/downloads/buildroot-2021.11-rc3.tar.gz\">buildroot-2021.11-rc3.tar.gz</a></h3>\n\t  <p><a href=\"/downloads/buildroot-2021.11-rc3.tar.gz.sign\">PGP signature</a></p>\n\t</div>\n\t<div class=\"col-sm-6\">\n\t  <div class=\"flip-container center-block\" ontouchstart=\"this.classList.toggle('hover');\">\n\t    <div class=\"flipper\">\n\t      <div class=\"front\">\n\t\t<a href=\"/downloads/buildroot-2021.11-rc3.tar.bz2\"><img src=\"images/package.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t      <div class=\"back\">\n\t\t<a href=\"/downloads/buildroot-2021.11-rc3.tar.bz2\"><img src=\"images/package.png\" width=\"180\" alt=\"\"></a>\n\t      </div>\n\t    </div>\n\t  </div>\n\n\t  <h3><a href=\"/downloads/buildroot-2021.11-rc3.tar.bz2\">buildroot-2021.11-rc3.tar.bz2</a></h3>\n\t  <p><a href=\"/downloads/buildroot-2021.11-rc3.tar.bz2.sign\">PGP signature</a></p>\n\t</div>\n      </div>\n-->\n      This and earlier releases (and their PGP signatures) can always be downloaded from\n      <a href=\"/downloads/\">http://buildroot.net/downloads/</a>.\n    </div>\n  </div>\n\n  <div class=\"panel panel-primary\">\n    <div class=\"panel-heading\">Source code</div>\n    <div class=\"panel-body\">\n\n      <div class=\"row\">\n\t<div class=\"col-sm-7\">\n\t  <div class=\"panel panel-success\">\n\t    <div class=\"panel-heading\">Repository</div>\n\t    <div class=\"panel-body\">\n\t      <P>The buildroot repository can be browsed online through cgit at\n\t\t<a href=\"http://git.buildroot.net/buildroot/\">http://git.buildroot.net/buildroot</a>.\n\t\tTo grab a copy of the repository use</p>\n\n\n\t      <div class=\"input-group\" style=\"width: 100%;\">\n\t\t<input class=\"form-control\" style=\"width: 85%;\" id=\"giturl\"\n\t\t       value=\"git clone git://git.buildroot.net/buildroot\" type=\"text\" readonly></input>\n\t\t<span class=\"input-group-button\">\n\t\t  <button class=\"btn pull-right\" type=\"button\" data-clipboard-target=\"#giturl\"\n\t\t\t  data-toggle=\"tooltip\" data-placement=\"bottom\" data-trigger=\"manual\" title=\"Copied!\">\n\t\t    <img class=\"clippy\" src=\"images/clippy.svg\" alt=\"Copy to clipboard\" width=\"13\">\n\t\t  </button>\n\t\t</span>\n\t      </div><br>\n\n\t      <p>\n\t\tOr if you're behind a firewall blocking git:\n\t      </p>\n\n\t      <div class=\"input-group\" style=\"width: 100%;\">\n\t\t<input class=\"form-control\" style=\"width: 85%;\" id=\"giturlhttps\"\n\t\t       value=\"git clone https://git.buildroot.net/buildroot\" type=\"text\" readonly></input>\n\t\t<span class=\"input-group-button\">\n\t\t  <button class=\"btn pull-right\" type=\"button\" data-clipboard-target=\"#giturlhttps\"\n\t\t\t  data-toggle=\"tooltip\" data-placement=\"bottom\" data-trigger=\"click\" title=\"Copied!\">\n\t\t    <img class=\"clippy\" src=\"images/clippy.svg\" alt=\"Copy to clipboard\" width=\"13\">\n\t\t  </button>\n\t\t</span>\n\t      </div><br>\n\n\t      <p>\n\n\t\tPlease use the native git protocol if at all possible, as it's a lot\n\t\tmore efficient than HTTP.\n\n\t      <p>\n\n\t\tIf you are not already familiar with using Git, we recommend you visit <a\n\t\t\t\t\t\t\t\t\t\t\t  href=\"http://git-scm.org\">the Git website</a>.\n\n\t      <p>\n\n\t\tOnce you've checked out a copy of the source tree, you can update your source\n\t\ttree at any time so it is in sync with the latest and greatest by entering your\n\t\tbuildroot directory and running the command:\n\n<pre>\ngit pull\n</pre>\n\n\t\tBecause you've only been granted anonymous access to the tree, you won't be\n\t\table to push your changes to the repo. Changes can instead be submitted for\n\t\tinclusion by posting them to the buildroot mailing list.\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-5\">\n\t  <div class=\"panel panel-default\t\">\n\t    <div class=\"panel-heading\">Tarballs</div>\n\t    <div class=\"panel-body\">\n\t      You can also obtain daily snapshots of the latest Buildroot source tree if you\n\t      want to follow development, but cannot or do not wish to use Git.\n\n\t      <ul>\n\t\t<li>You can download the\n\t\t  <a href=\"downloads/snapshots/buildroot-snapshot.tar.bz2\">latest snapshot\n\t\t  </a> or view recent <a href=\"downloads/snapshots/\">daily snapshots</a>.\n\t\t</li>\n\n\t\t<li>You can also <a href=\"http://git.buildroot.net/buildroot\">browse the\n\t\t    source tree online</a>.\n\t\t</li>\n\t      </ul>\n\n\t      <p>\n\t\tOlder versions can be downloaded from <a href=\"/downloads/\">the release archive</a>.\n\t      </p>\n\t    </div>\n\t  </div>\n\t</div>\n      </div>\n    </div>\n  </div>\n\n</div><!--/.col-sm-10 -->\n</div><!--/.row -->\n</div>\n\n<!--#include file=\"footer.html\" -->\n"
  },
  {
    "path": "docs/website/footer.html",
    "content": "\t<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js\" integrity=\"sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=\" crossorigin=\"anonymous\"></script>\n\t<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js\" integrity=\"sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=\" crossorigin=\"anonymous\"></script>\n\t<script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js\" integrity=\"sha256-Daf8GuI2eLKHJlOWLRR/zRy9Clqcj4TUSumbxYH9kGI=\" crossorigin=\"anonymous\"></script>\n\t<script src=\"https://cdnjs.cloudflare.com/ajax/libs/x2js/1.2.0/xml2json.min.js\" integrity=\"sha256-RbFvov4fXA9DW/RzOAcIC0ZHIDmghGdsoug5slJHMMI=\" crossorigin=\"anonymous\"></script>\n\t<script type=\"text/javascript\" src=\"js/buildroot.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "docs/website/header.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta name=\"Buildroot\" content=\"\">\n\t<meta name=\"angelo.compagnucci@gmail.com\" content=\"\">\n\t<link rel=\"shortcut icon\" href=\"images/favicon.png\">\n\n\t<title>Buildroot - Making Embedded Linux Easy</title>\n\n\t<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.7/paper/bootstrap.min.css\" integrity=\"sha256-LxKiHTQko0DUCUSgrIK23SYMymvfuj8uxXmblBvVWm0=\" crossorigin=\"anonymous\">\n\t<link href=\"css/main.css\" rel=\"stylesheet\">\n\n\t<!--[if lt IE 9]>\n\t  <script src=\"https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.0/html5shiv.js\" integrity=\"sha256-jHqcBHBWM2erADB7T7m7MFLQon8LlOY7ncC7jDaUScs=\" crossorigin=\"anonymous\"></script>\n\t  <script src=\"https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.3.0/respond.min.js\" integrity=\"sha256-g2lnLPqUkGXj7GDW+Zy47+O2ph+Ur1cmtdklVqkj+kg=\" crossorigin=\"anonymous\"></script>\n\t<![endif]-->\n</head>\n\n<body>\n\t<!-- Fixed navbar -->\n\t<div class=\"navbar navbar-default navbar-fixed-top\">\n\t\t<div class=\"container\">\n\t\t<div class=\"navbar-header\">\n\t\t  <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t<span class=\"icon-bar\"></span>\n\t\t\t<span class=\"icon-bar\"></span>\n\t\t  </button>\n\t\t  <a class=\"navbar-brand\" href=\"/\"><b>Buildroot</b></a>\n\t\t</div>\n\t\t<div class=\"navbar-collapse collapse\">\n\t\t\t<ul class=\"nav navbar-nav navbar-right\">\n\t\t\t\t<li><a href=\"/news.html\">\n\t\t\t\t\t<span class=\"glyphicon glyphicon-star\"></span> News</a></li>\n\t\t\t\t<li><a href=\"/docs.html\">\n\t\t\t\t\t<span class=\"glyphicon glyphicon-book\"></span> Documentation</a></li>\n\t\t\t\t<li><a href=\"/support.html\">\n\t\t\t\t\t<span class=\"glyphicon glyphicon-question-sign\"></span> Support</a></li>\n\t\t\t\t<li><a href=\"/contribute.html\">\n\t\t\t\t\t<span class=\"glyphicon glyphicon-share\"></span> Contribute</a></li>\n\t\t\t\t<li><a href=\"/sponsors.html\">\n\t\t\t\t\t<span class=\"glyphicon glyphicon-usd\"></span> Sponsors</a></li>\n\t\t\t\t<li><a href=\"/association.html\">\n\t\t\t\t\t<span class=\"glyphicon glyphicon-resize-small\"></span> Association</a></li>\n\t\t\t\t<li><a id=\"menubutton\" class=\"btn btn-success btn-shrink\" href=\"/download.html\">\n\t\t\t\t\t<span class=\"glyphicon glyphicon-cloud-download\"></span>\n\t\t\t\t\t<span class=\"text-shrink\" >Download</span></a></li>\n\t\t\t</ul>\n\t\t</div><!--/.nav-collapse -->\n\t\t</div>\n\t</div>\n"
  },
  {
    "path": "docs/website/index.html",
    "content": "<!--#include file=\"header.html\" -->\n\n<div id=\"headerwrap\">\n  <div class=\"container\">\n    <div class=\"row\">\n      <div class=\"col-sm-6\">\n\t<img class=\"img-responsive center-block\" src=\"images/logo.png\" alt=\"\" style=\"max-width:300px\">\n      </div><!-- /col-lg-6 -->\n      <div class=\"col-sm-6\">\n\t<h1>Buildroot<br>\n\t  <small>Making Embedded Linux Easy</small></h1>\n\t<div class=\"col-sm-6\" style=\"margin-top:1em; padding-left:0px;\">\n\t  <a class=\"btn btn-default btn-lg\" style=\"width:100%;\" href=\"#about\"><span class=\"glyphicon glyphicon-info-sign\"></span>&nbsp; Learn more</a>\n\t</div>\n\t<div class=\"col-sm-6\" style=\"margin-top:1em; padding-left:0px;\">\n\t  <a class=\"btn btn-default btn-lg\" style=\"width:100%; margin-bottom: 20px;\" href=\"/download.html\"><span class=\"glyphicon glyphicon-cloud-download\"></span>&nbsp; Download</a>\n\t</div>\n      </div><!-- /col-lg-6 -->\n    </div><!-- /row -->\n  </div><!-- /container -->\n</div><!-- /headerwrap -->\n\n<a name=\"about\"></a>\n<div class=\"container\">\n  <div class=\"row mt centered\">\n    <div class=\"col-lg-8 col-lg-offset-2\">\n      <h1>Buildroot is a simple, efficient and easy-to-use tool to\n\tgenerate embedded Linux systems through cross-compilation.</h1>\n    </div>\n  </div><!-- /row -->\n\n  <div class=\"row mt centered\">\n    <div class=\"col-md-4\">\n      <div class=\"flip-container center-block\" ontouchstart=\"this.classList.toggle('hover');\">\n\t<div class=\"flipper\">\n\t  <div class=\"front\">\n\t    <img src=\"images/tux-flat.png\" width=\"180\" alt=\"\">\n\t  </div>\n\t  <div class=\"back\">\n\t    <img src=\"images/tux-flat.png\" width=\"180\" alt=\"\">\n\t  </div>\n\t</div>\n      </div>\n\n      <h4>Can handle everything</h4>\n      <p>Cross-compilation toolchain, root filesystem generation,\n\tkernel image compilation and bootloader compilation.</p>\n    </div><!--/col-lg-4 -->\n\n    <div class=\"col-md-4\">\n      <div class=\"flip-container center-block\" ontouchstart=\"this.classList.toggle('hover');\">\n\t<div class=\"flipper\">\n\t  <div class=\"front\">\n\t    <img src=\"images/hammer.png\" width=\"180\" alt=\"\">\n\t  </div>\n\t  <div class=\"back\">\n\t    <img src=\"images/hammer.png\" width=\"180\" alt=\"\">\n\t  </div>\n\t</div>\n      </div>\n\n      <h4>Is very easy</h4>\n      <p>Thanks to its kernel-like menuconfig, gconfig and\n\txconfig configuration interfaces, building a basic system with\n\tBuildroot is easy and typically takes 15-30 minutes.</p>\n\n    </div><!--/col-lg-4 -->\n\n    <div class=\"col-md-4\">\n      <div class=\"flip-container center-block\" ontouchstart=\"this.classList.toggle('hover');\">\n\t<div class=\"flipper\">\n\t  <div class=\"front\">\n\t    <img src=\"images/gift.png\" width=\"180\" alt=\"\">\n\t  </div>\n\t  <div class=\"back\">\n\t    <img src=\"images/gift.png\" width=\"180\" alt=\"\">\n\t  </div>\n\t</div>\n      </div>\n\n      <h4>Supports several thousand packages</h4>\n      <p>X.org stack, Gtk3, Qt 5, GStreamer, Webkit, Kodi, a large number of network-related and system-related utilities are supported.</p>\n\n    </div><!--/col-lg-4 -->\n  </div><!-- /row -->\n  <hr>\n</div><!-- /container -->\n\n<div class=\"container\">\n  <div class=\"row mt centered\">\n    <div class=\"col-lg-6 col-lg-offset-3\">\n      <h1>Buildroot is for Everyone.</h1>\n      <h3>Has a simple structure that makes it easy to understand and extend. It relies only on the well-known Makefile language.</h3>\n    </div>\n  </div><!-- /row -->\n\n  <div class=\"row mt centered\">\n    <div class=\"col-lg-8 col-lg-offset-2\">\n      <div id=\"carousel-example-generic\" class=\"carousel slide\" data-ride=\"carousel\">\n\t<!-- Wrapper for slides -->\n\t<div class=\"carousel-inner\">\n\t  <div class=\"item active\">\n\t    <img src=\"images/nconfig.png\" alt=\"\">\n\t  </div>\n\t  <div class=\"item\">\n\t    <img src=\"images/menuconfig.png\" alt=\"\">\n\t  </div>\n\t  <div class=\"item\">\n\t    <img src=\"images/xconfig.png\" alt=\"\">\n\t  </div>\n\t</div>\n\t<!-- Indicators -->\n\t<ol class=\"carousel-indicators\" style=\"margin-top:10px\">\n\t  <li data-target=\"#carousel-example-generic\" data-slide-to=\"0\" class=\"active\"></li>\n\t  <li data-target=\"#carousel-example-generic\" data-slide-to=\"1\"></li>\n\t  <li data-target=\"#carousel-example-generic\" data-slide-to=\"2\"></li>\n\t</ol>\n      </div>\n    </div><!-- /col-lg-8 -->\n  </div><!-- /row -->\n</div><!-- /container -->\n\n<div class=\"container\">\n  <div class=\"row mt centered\">\n    <div class=\"col-lg-6 col-lg-offset-3\">\n      <h1>Our recent activity.</h1>\n      <h3>Buildroot is an open source project: many developers contribute to it daily.</h3>\n    </div>\n  </div><!-- /row -->\n</div><!-- /container -->\n\n<div class=\"container\">\n  <div class=\"row\">\n    <div class=\"col-sm-6\">\n      <div class=\"panel panel-primary\">\n\t<div class=\"panel-heading\"><a href=\"http://git.buildroot.net/buildroot\"><h5>Recent commits</h5></a></div>\n\t<div class=\"panel-box panel-body ellipsis\" id=\"commit-activity\">\n\t</div>\n      </div>\n    </div>\n    <div class=\"col-sm-6\" >\n      <div class=\"panel panel-primary\">\n\t<div class=\"panel-heading\"><a href=\"http://dir.gmane.org/gmane.comp.lib.uclibc.buildroot\"><h5>Recent discussions</h5></a></div>\n\t<div class=\"panel-box panel-body ellipsis\" id=\"mailing-list-activity\">\n\t</div>\n      </div>\n    </div>\n  </div>\n</div><!-- /container -->\n\n<!--#include file=\"footer.html\" -->\n"
  },
  {
    "path": "docs/website/js/buildroot.js",
    "content": "function load_activity(feedurl, divid) {\n    let container = document.getElementById(divid);\n    $.ajax({\n      url: \"https://cors-anywhere.herokuapp.com/\" + feedurl\n    })\n    .done(function(data){\n        let x2js = new X2JS();\n        let result = x2js.xml_str2json(data.documentElement.outerHTML);\n        let loaded = 0;\n        let nb_display = 8;\n        if (result==null) return;\n        for (let i = 0; i < result.feed.entry.length; i++) {\n            let entry = result.feed.entry[i];\n            if (entry.title.indexOf(\"git commit\") !== -1)\n                continue;\n            loaded += 1;\n            if (loaded > nb_display)\n                break;\n            let div = document.createElement(\"p\");\n            let link = document.createElement(\"a\");\n            let d = new Date(entry.published);\n            let data = '[' + d.toLocaleDateString() + '] ' + entry.title;\n            let text = document.createTextNode(data);\n            link.appendChild(text);\n            link.title = entry.title;\n            link.href = entry.link._href;\n            div.appendChild(link);\n            container.appendChild(div);\n        }\n        let empty = nb_display - loaded;\n        for (let i = 0; i < empty; i++) {\n            container.appendChild(document.createElement(\"p\"));\n        }\n    });\n}\n\nfunction google_analytics() {\n    let _gaq = _gaq || [];\n    _gaq.push(['_setAccount', 'UA-21761074-1']);\n    _gaq.push(['_setDomainName', 'none']);\n    _gaq.push(['_setAllowLinker', true]);\n    _gaq.push(['_trackPageview']);\n\n    let ga = document.createElement('script');\n    ga.type = 'text/javascript';\n    ga.async = true;\n    ga.src = ('https:' === document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    let s = document.getElementsByTagName('script')[0];\n    s.parentNode.insertBefore(ga, s);\n}\n\nfunction showTooltip(elem, msg) {\n    elem.setAttribute('class', 'btn tooltipped tooltipped-s');\n    elem.setAttribute('aria-label', msg);\n}\n\nlet clipboard = new Clipboard('.btn');\n\n$(function () {\n  $('[data-toggle=\"tooltip\"]').tooltip()\n});\n\nclipboard.on('success', function(e) {\n    e.clearSelection();\n    $(e.trigger).tooltip('show');\n});\n\n$(function() {\n  $('a[href*=\\\\#]:not([href=\\\\#])').click(function() {\n    if (location.pathname.replace(/^\\//,'') === this.pathname.replace(/^\\//,'') && location.hostname === this.hostname) {\n        let target = $(this.hash);\n      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');\n      if (target.length) {\n        $('html,body').animate({\n          scrollTop: target.offset().top\n        }, 1000);\n        return false;\n      }\n    }\n  });\n});\n\njQuery(document).ready(function($) {\n    let url = window.location.href;\n    // Get the basename of the URL\n    url = url.split(/[\\\\/]/).pop();\n    $('.nav a[href=\"/' + url + '\"]').parent().addClass('active');\n\n    load_activity(\"http://buildroot-busybox.2317881.n4.nabble.com/Buildroot-busybox-ft2.xml\", \"mailing-list-activity\");\n    load_activity(\"http://git.buildroot.org/buildroot/atom/?h=master\", \"commit-activity\");\n\n    $('#slides').html('<iframe src=\"https://docs.google.com/gview?url=http://bootlin.com/doc/training/buildroot/buildroot-slides.pdf&embedded=true\" style=\"position:absolute; width:100%; height:100%; top:0; left:0;\" frameborder=\"0\"></iframe>')\n});\n"
  },
  {
    "path": "docs/website/news.html",
    "content": "<!--#include file=\"header.html\" -->\n\n<link href=\"css/timeline.css\" rel=\"stylesheet\">\n\n<div class=\"container\">\n<div class=\"row nh\">\n<div class=\"col-lg-10 col-lg-offset-1 col-md-12 col-sm-12 col-xs-12\">\n\n<h2>News</h2>\n<ul class=\"timeline\">\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>5 December 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2021.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.11\">CHANGES</a>\n\t  file for more details\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.11.tar.xz\">2021.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.11-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 November 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>2021.11-rc3 has been released with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.11-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.11-rc3.tar.bz2\">2021.11-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>19 November 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>2021.11-rc2 has been released with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.11-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.11-rc2.tar.bz2\">2021.11-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.02.7 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 November 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2021.02.7 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2021.02.6 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.02.7\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-November/628324.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.02.7.tar.bz2\">2021.02.7 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.08.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 November 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2021.08.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2021.08.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.08.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-November/628323.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.08.2.tar.bz2\">2021.08.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>8 November 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.11-rc1\">CHANGES</a>\n\t  file for more details.</p>\n\n\t<p>Go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.11-rc1.tar.bz2\">2021.11-rc1\n\t  release</a>, and report any problems found to the\n         <a href=\"support.html\">mailing list</a> or\n         <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.02.6 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 October 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2021.02.6 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2021.02.5 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.02.6\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-October/625654.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.02.6.tar.bz2\">2021.02.6 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.05.3 released, 2021.05.x series EOL</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 October 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2021.05.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2021.05.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.05.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-October/625646.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.05.3.tar.bz2\">2021.05.3 release</a>.</p>\n\n\t  <p>Notice that the 2021.05.x series is now end of life. Please migrate to\n\t  the 2021.08 series instead which will be supported until December 2021.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.08.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>11 October 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2021.08.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2021.08 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.08.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-October/625642.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.08.1.tar.bz2\">2021.08.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.02.5 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>16 September 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2021.02.5 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2021.02.4 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.02.5\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-September/623319.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.02.5.tar.bz2\">2021.02.5 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.05.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>15 September 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2021.05.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2021.05.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.05.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-September/623285.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.05.2.tar.bz2\">2021.05.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 September 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2021.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.08\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-September/622072.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.08.tar.bz2\">2021.08 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.08-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 August 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>2021.08-rc3 has been released with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.08-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.08-rc3.tar.bz2\">2021.08-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>18 August 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>2021.08-rc2 has been released with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.08-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.08-rc2.tar.bz2\">2021.08-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.02.4 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>11 August 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2021.02.4 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2021.02.3 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.02.4\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-August/620747.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.02.4.tar.bz2\">2021.02.4 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.05.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 August 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2021.05.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2021.05 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.05.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-August/620721.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.05.1.tar.bz2\">2021.05.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>3 August 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.08-rc1\">CHANGES</a>\n\t  file for more details.</p>\n\n\t<p>Go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.08-rc1.tar.bz2\">2021.08-rc1\n\t  release</a>, and report any problems found to the\n         <a href=\"support.html\">mailing list</a> or\n         <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.02.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 June 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2021.02.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2021.02.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.02.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-June/312591.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.02.3.tar.bz2\">2021.02.3 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>6 June 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2021.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.05\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-June/311946.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.05.tar.bz2\">2021.05 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.05-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 May 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>2021.05-rc3 has been released with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.05-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.05-rc3.tar.bz2\">2021.05-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>22 May 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>2021.05-rc2 has been released with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.05-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.05-rc2.tar.bz2\">2021.05-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.02.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 May 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2021.02.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2021.02.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.02.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-May/310003.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.02.2.tar.bz2\">2021.02.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 May 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.05-rc1\">CHANGES</a>\n\t  file for more details.</p>\n\n\t<p>Go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.05-rc1.tar.bz2\">2021.05-rc1\n\t  release</a>, and report any problems found to the\n         <a href=\"support.html\">mailing list</a> or\n         <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.02.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>7 April 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2021.02.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2021.02 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.02.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-April/307970.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.02.1.tar.bz2\">2021.02.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02.12 released, 2020.02.x series EOL</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>5 April 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.02.12 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.02.11 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02.12\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-April/307630.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.12.tar.bz2\">2020.02.12 release</a>.</p>\n\n\t  <p>Notice that the 2020.02.x series is now end of life. Please migrate to\n\t  the 2021.02 series instead which will be supported until March 2022.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.11.4 released, 2020.11.x series EOL</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>5 April 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.11.4 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.11.3 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.11.4\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-April/307609.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.11.4.tar.bz2\">2020.11.4 release</a>.</p>\n\n\t  <p>Notice that the 2020.11.x series is now end of life. Please migrate to\n\t  the 2021.02 series instead which will be supported until March 2022.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.02 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>6 March 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2021.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.02\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-March/305168.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.02.tar.bz2\">2021.02 release</a>.</p>\n\n\t  <p>Notice that this is a long term support release which will be\n\t  supported with security and other important fixes until March 2022.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.02-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 February 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>2021.02-rc3 has been released with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.02-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.02-rc3.tar.bz2\">2021.02-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>17 February 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.02.11 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.02.10 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02.11\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-February/304049.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.11.tar.bz2\">2020.02.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.11.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>17 February 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.11.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.11.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.11.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-February/304041.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.11.3.tar.bz2\">2020.11.3 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.02-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>17 February 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>2021.02-rc2 has been released with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.02-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.02-rc2.tar.bz2\">2021.02-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2021.02-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>9 February 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2021.02-rc1\">CHANGES</a>\n\t  file for more details.</p>\n\n\t<p>Go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2021.02-rc1.tar.bz2\">2021.02-rc1\n\t  release</a>, and report any problems found to the\n         <a href=\"support.html\">mailing list</a> or\n         <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02.10 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 January 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.02.10 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.02.9 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02.10\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-January/302578.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.10.tar.bz2\">2020.02.10 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.11.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 January 2021</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.11.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.11.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.11.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2021-January/302574.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.11.2.tar.bz2\">2020.11.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02.9 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 December 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.02.9 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.02.8 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02.9\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-December/299462.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.9.tar.bz2\">2020.02.9 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.08.3 released, 2020.08.x series EOL</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 December 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.08.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.08.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.08.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-December/299456.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.08.3.tar.bz2\">2020.08.3 release</a>.</p>\n\n\t  <p>Notice that the 2020.08.x series is now end of life. Please migrate to\n\t  the 2020.11 series instead which will be supported until March 2021.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.11.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 December 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.11.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.11 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.11.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-December/299452.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.11.1.tar.bz2\">2020.11.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>2 December 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2020.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.11\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-December/297705.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.11.tar.bz2\">2020.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.11-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 November 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.11-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.11-rc3.tar.bz2\">2020.11-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02.8 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>17 November 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.02.8 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.02.7 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02.8\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-November/296838.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.8.tar.bz2\">2020.02.8 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.08.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>16 November 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.08.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.08.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.08.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-November/296830.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.08.2.tar.bz2\">2020.08.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>14 November 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>2020.11-rc2 has been released with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.11-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.11-rc2.tar.bz2\">2020.11-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 November 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.11-rc1\">CHANGES</a>\n\t  file for more details.</p>\n\n\t<p>Go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.11-rc1.tar.bz2\">2020.11-rc1\n\t  release</a>, and report any problems found to the\n         <a href=\"support.html\">mailing list</a> or\n         <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02.7 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 October 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.02.7 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.02.6 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02.7\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-October/294451.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.7.tar.bz2\">2020.02.7 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.05.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 October 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.05.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.05.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.05.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-October/294446.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.05.3.tar.bz2\">2020.05.3 release</a>.</p>\n\n\t  <p>Notice that the 2020.05.x series is now end of life. Please migrate to\n\t  the 2020.08 series instead which will be supported until December 2020.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.08.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 October 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.08.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.08 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.08.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-October/294407.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.08.1.tar.bz2\">2020.08.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02.6 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>5 September 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.02.6 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.02.5 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02.6\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-September/291322.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.6.tar.bz2\">2020.02.6 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 September 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2020.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.08\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-September/290797.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.08.tar.bz2\">2020.08 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02.5 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 august 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.02.5 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.02.4 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02.5\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-August/290497.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.5.tar.bz2\">2020.02.5 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.05.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 August 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.05.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.05.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.05.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-August/290474.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.05.2.tar.bz2\">2020.05.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.08-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 August 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.08-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.08-rc3.tar.bz2\">2020.08-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>24 August 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>2020.08-rc2 has been released with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.08-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.08-rc2.tar.bz2\">2020.08-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>6 August 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.08-rc1 release candidate is out. It is the first\n\trelease candidate for 2020.08, which we aim at releasing end\n\tof August 2020. It contains a number of new packages, new\n\tdefconfigs, toolchain improvements, package updates and\n\tmore. See\n\tthe <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.08-rc1\">CHANGES</a>. Go\n\tto the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t<a href=\"/downloads/buildroot-2020.08-rc1.tar.bz2\">2020.08-rc1\n\trelease</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02.4 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>26 July 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.02.4 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.02.3 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02.4\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-July/287951.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.4.tar.bz2\">2020.02.4 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.05.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>25 July 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.05.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.05 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.05.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-July/287824.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.05.1.tar.bz2\">2020.05.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>3 June 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.02.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.02.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-June/284030.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.3.tar.bz2\">2020.02.3 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 June 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2020.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.05\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-June/283817.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.05.tar.bz2\">2020.05 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.05-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 May 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.05-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.05-rc3.tar.bz2\">2020.05-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>22 May 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.05-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.05-rc2.tar.bz2\">2020.05-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 May 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.02.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.02.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-May/282748.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.2.tar.bz2\">2020.02.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 April 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.05-rc1\">CHANGES</a>\n\t  file for more details.</p>\n\n\t<p>Go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.05-rc1.tar.bz2\">2020.05-rc1\n\t  release</a>, and report any problems found to the\n         <a href=\"support.html\">mailing list</a> or\n         <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 April 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2020.02.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2020.02 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-April/279600.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.1.tar.bz2\">2020.02.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.11.3 released, 2019.11.x series EOL</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 April 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.11.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.11.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.11.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-April/279539.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.11.3.tar.bz2\">2019.11.3 release</a>.</p>\n\n\t  <p>Notice that the 2019.11.x series is now end of life. Please migrate to\n\t  the 2020.02 series instead which will be supported until April 2021.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02.11 released, 2019.02.x series EOL</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>9 April 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.02.11 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.02.10 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02.11\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-April/279523.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02.11.tar.bz2\">2019.02.11 release</a>.</p>\n\n\t  <p>Notice that the 2019.02.x series is now end of life. Please migrate to\n\t  the 2020.02 series instead which will be supported until April 2021.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02.10 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>16 march 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.02.10 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.02.9 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02.10\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-March/277395.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02.10.tar.bz2\">2019.02.10 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.11.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>16 March 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.11.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.11.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.11.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-March/277375.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.11.2.tar.bz2\">2019.11.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>8 March 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2020.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-March/276231.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02.tar.bz2\">2020.02 release</a>.</p>\n\n\t  <p>Notice that this is a long term support release which will be\n\t  supported with security and other important fixes until March 2021.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>2 March 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02-rc3.tar.bz2\">2020.02-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>26 February 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02-rc2.tar.bz2\">2020.02-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2020.02-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>18 February 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2020.02-rc1\">CHANGES</a>\n\t  file for details.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2020.02-rc1.tar.bz2\">2020.02-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02.9 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 January 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.02.9 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.02.8 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02.9\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-January/271410.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02.9.tar.bz2\">2019.02.9 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.11.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 January 2020</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.11.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.11 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.11.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2020-January/271404.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.11.1.tar.bz2\">2019.11.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02.8 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>7 December 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.02.8 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.02.7 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02.8\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-December/268545.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02.8.tar.bz2\">2019.02.8 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.08.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>7 December 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.08.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.08.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.08.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-December/268515.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.08.3.tar.bz2\">2019.08.3 release</a>.</p>\n\n\t  <p>Notice that the 2019.08.x series is now end of life. Please migrate to\n\t  the 2019.02 or 2019.11 series instead.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 December 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2019.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.11\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-December/267603.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.11.tar.bz2\">2019.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.11-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>24 November 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.11-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.11-rc3.tar.bz2\">2019.11-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>16 November 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.11-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.11-rc2.tar.bz2\">2019.11-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02.7 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 November 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.02.7 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.02.6 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02.7\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-November/265909.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02.7.tar.bz2\">2019.02.7 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.08.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>9 November 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.08.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.08.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.08.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-November/265842.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.08.2.tar.bz2\">2019.08.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>5 November 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.11-rc1\">CHANGES</a>\n\t  file for details.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.11-rc1.tar.bz2\">2019.11-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02.6 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 October 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.02.6 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.02.5 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02.6\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-October/261557.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02.6.tar.bz2\">2019.02.6 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.05.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 October 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.05.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.05.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.05.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-October/261556.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.05.3.tar.bz2\">2019.05.3 release</a>.</p>\n\n\t  <p>Notice that the 2019.05.x series is now end of life. Please migrate to\n\t  the 2019.02 or 2019.08 series instead.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.08.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 October 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.08.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.08 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.08.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-October/261531.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.08.1.tar.bz2\">2019.08.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.05.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>3 September 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.05.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.05.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.05.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-September/258410.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.05.2.tar.bz2\">2019.05.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02.5 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>2 September 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.02.5 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.02.4 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02.5\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-September/258384.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02.5.tar.bz2\">2019.02.5 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 September 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2019.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.08\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-September/258136.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.08.tar.bz2\">2019.08 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.08-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 August 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.08-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.08-rc3.tar.bz2\">2019.08-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>20 August 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.08-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.08-rc2.tar.bz2\">2019.08-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>9 August 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.08-rc1\">CHANGES</a>\n\t  file for details.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.08-rc1.tar.bz2\">2019.08-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02.4 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>7 June 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.02.4 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.02.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02.4\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-July/254194.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02.4.tar.bz2\">2019.02.4 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.05.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>7 July 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.05.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.05 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.05.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-July/254105.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.05.1.tar.bz2\">2019.05.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>7 June 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.02.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.02.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-June/252046.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02.3.tar.bz2\">2019.02.3 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>2 June 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2019.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.05\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-June/251548.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.05.tar.bz2\">2019.05 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.05-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>25 May 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.05-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.05-rc3.tar.bz2\">2019.05-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>15 May 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.05-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.05-rc2.tar.bz2\">2019.05-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>8 May 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.05-rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-May/249819.html\">announcement</a>.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.05-rc1.tar.bz2\">2019.05-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 April 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.02.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.02.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-April/248972.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02.2.tar.bz2\">2019.02.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 March 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2019.02.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2019.02 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-March/246465.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02.1.tar.bz2\">2019.02.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02.12 released, 2018.02.x series EOL</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 March 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.02.12 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.02.11 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02.12\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-March/246419.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.12.tar.bz2\">2018.02.12 release</a>.</p>\n\n\t  <p>Notice that the 2018.02.x series is now end of life. Please migrate to\n\t  the 2019.02 series instead which will be supported until March 2020.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.11.4 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 March 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.11.4 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.11.3 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.11.4\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-March/246388.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.11.4.tar.bz2\">2018.11.4 release</a>.</p>\n\n\t  <p>Notice that the 2018.11.x series is now end of life. Please migrate to\n\t  the 2019.02 series instead which will be supported until March 2020.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 March 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2019.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-March/244273.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02.tar.bz2\">2019.02 release</a>.</p>\n\n\t  <p>Notice that this is a long term support release which will be\n\t  supported with security and other important fixes until March 2020.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 March 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups\n          and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02-rc3.tar.bz2\">2019.02-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.11.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>23 February 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.11.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.11.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.11.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-February/243960.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.11.3.tar.bz2\">2018.11.3 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>23 February 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.02.11 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.02.10 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02.11\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-February/243944.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.11.tar.bz2\">2018.02.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>23 February 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups\n          and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02-rc2.tar.bz2\">2019.02-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2019.02-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>13 February 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2019.02-rc1\">CHANGES</a>\n\t  file for details and read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-February/243205.html\">announcement</a>.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2019.02-rc1.tar.bz2\">2019.02-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02.10 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 January 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.02.10 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.02.9 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02.10\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-January/242027.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.10.tar.bz2\">2018.02.10 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.11.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 January 2019</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.11.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.11.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.11.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2019-January/241981.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.11.2.tar.bz2\">2018.11.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02.9 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>20 December 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.02.9 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.02.8 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02.9\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-December/239206.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.9.tar.bz2\">2018.02.9 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.08.4 released, 2018.08 series EOL</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>20 December 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.08.4 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.08.3 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.08.4\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-December/239200.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.08.4.tar.bz2\">2018.08.4 release</a>.</p>\n        <p>Notice that the 2018.08 series is now end of life, please\n          consider migrating to 2018.11 instead.</p>\n     </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.11.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>19 December 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.11.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.11 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.11.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-December/239184.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.11.1.tar.bz2\">2018.11.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 December 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2018.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.11\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-December/237402.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.11.tar.bz2\">2018.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.11-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 November 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups\n          and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.11-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.11-rc3.tar.bz2\">2018.11-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02.8 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>26 November 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.02.8 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.02.7 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02.8\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-November/237072.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.8.tar.bz2\">2018.02.8 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.08.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>26 November 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.08.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.08.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.08.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-November/237068.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.08.3.tar.bz2\">2018.08.3 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>21 November 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups\n          and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.11-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.11-rc2.tar.bz2\">2018.11-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>9 November 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.11-rc1\">CHANGES</a>\n\t  file for details and/or read\n\t  the <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-November/235405.html\">announcement</a>.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.11-rc1.tar.bz2\">2018.11-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02.7 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>25 October 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.02.7 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.02.6 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02.7\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-October/234262.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.7.tar.bz2\">2018.02.7 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.08.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>25 October 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.08.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.08.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.08.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-October/234252.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.08.2.tar.bz2\">2018.08.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.08.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>7 October 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.08.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.08 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.08.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-October/232433.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.08.1.tar.bz2\">2018.08.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02.6 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>7 October 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.02.6 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.02.5 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02.6\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-October/232428.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.6.tar.bz2\">2018.02.6 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.05.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>6 October 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.05.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.05.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.05.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-October/232379.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.05.3.tar.bz2\">2018.05.3 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>6 September 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2018.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.08\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-September/229982.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.08.tar.bz2\">2018.08 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.08-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 August 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups\n          and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.08-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.08-rc3.tar.bz2\">2018.08-rc3\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02.5 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 August 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.02.5 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.02.4 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02.5\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-August/229453.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.5.tar.bz2\">2018.02.5 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.05.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 August 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.05.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.05.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.05.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-August/229355.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.05.2.tar.bz2\">2018.05.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>20 August 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups\n          and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.08-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.08-rc2.tar.bz2\">2018.08-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>5 August 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.08-rc1\">CHANGES</a>\n\t  file for details and/or read\n\t  the <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-August/227070.html\">announcement</a>.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.08-rc1.tar.bz2\">2018.08-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02.4 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>21 July 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.02.4 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.02.3 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02.4\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-July/226417.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.4.tar.bz2\">2018.02.4 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.05.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>20 July 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.05.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.05 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.05.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-July/226383.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.05.1.tar.bz2\">2018.05.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>18 June 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.02.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.02.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-June/224225.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.3.tar.bz2\">2018.02.3 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 June 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2018.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.05\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-June/222697.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.05.tar.bz2\">2018.05 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.05-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 May 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and security\n\t  / build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.05-rc3\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up\n\t  the <a href=\"/downloads/buildroot-2018.05-rc3.tar.bz2\">2018.05-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>22 May 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups\n          and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.05-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.05-rc2.tar.bz2\">2018.05-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>9 May 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.05-rc1\">CHANGES</a>\n\t  file for details and read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-May/221257.html\">announcement</a>.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.05-rc1.tar.bz2\">2018.05-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 May 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.02.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.02.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-May/220788.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.2.tar.bz2\">2018.02.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>11 April 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.02.11 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.02.10 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02.11\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-April/218919.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02.11.tar.bz2\">2017.02.11 release</a>.</p>\n\t<p>Notice that the 2017.02 series is now end of life, so please consider\n\t  updating to 2018.02 instead.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 April 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2018.02.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2018.02 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-April/218642.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.1.tar.bz2\">2018.02.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 March 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2018.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-March/215002.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02.tar.bz2\">2018.02 release</a>.</p>\n\n\t  <p>Notice that this is a long term support release which will be\n\t  supported with security and other important fixes until February 2019.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 February 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and security\n\t  / build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02-rc3\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up\n\t  the <a href=\"/downloads/buildroot-2018.02-rc3.tar.bz2\">2018.02-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>15 February 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups\n          and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02-rc2.tar.bz2\">2018.02-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2018.02-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>5 February 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2018.02-rc1\">CHANGES</a>\n\t  file for details and read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-February/213171.html\">announcement</a>.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2018.02-rc1.tar.bz2\">2018.02-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02.10 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 January 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.02.10 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.02.9 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02.10\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-January/212844.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02.10.tar.bz2\">2017.02.10 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.11.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>21 January 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.11.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.11.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.11.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-January/212069.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.11.2.tar.bz2\">2017.11.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02.9 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 January 2018</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.02.9 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.02.8 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02.9\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2018-January/210559.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02.9.tar.bz2\">2017.02.9 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.11.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 December 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.11.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.11 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.11.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-December/210505.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.11.1.tar.bz2\">2017.11.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 November 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2017.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.11\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-December/208338.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.11.tar.bz2\">2017.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.08.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 November 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.08.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.08.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.08.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-November/208174.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.08.2.tar.bz2\">2017.08.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02.8 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 November 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.02.8 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.02.7 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02.8\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-November/208113.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02.8.tar.bz2\">2017.02.8 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>13 November 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups\n          and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.11-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.11-rc2.tar.bz2\">2017.11-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>6 November 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.11-rc1\">CHANGES</a>\n\t  file for details.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.11-rc1.tar.bz2\">2017.11-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02.7 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 October 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.02.7 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.02.6 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02.7\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-October/205628.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02.7.tar.bz2\">2017.02.7 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.08.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>23 October 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.08.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.08 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.08.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-October/205323.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.08.1.tar.bz2\">2017.08.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02.6 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>24 September 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.02.6 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.02.5 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02.6\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-September/203197.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02.6.tar.bz2\">2017.02.6 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 September 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2017.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.08\">CHANGES</a>\n\t  file for more details\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.08.tar.bz2\">2017.08 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.08-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>23 August 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another release candidate, on the road to the final 2017.08\n\t  release. A number of fixes and cleanups in various packages\n\t  and defconfigs. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.08-rc3\">CHANGES</a>\n\t  file for details.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.08-rc3.tar.bz2\">2017.08-rc3\n\t    release candidate</a>, and report any\n\t  problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>11 August 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another release candidate, on the road to the final 2017.08\n\t  release. A number of fixes and cleanups in various packages\n\t  and defconfigs. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.08-rc2\">CHANGES</a>\n\t  file for details.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.08-rc2.tar.bz2\">2017.08-rc2\n\t    release candidate</a>, and report any\n\t  problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>2 August 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.08-rc1\">CHANGES</a>\n\t  file for details.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.08-rc1.tar.bz2\">2017.08-rc1\n\t    release candidate</a>, and report any\n\t  problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.05.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 July 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.05.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.05.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.05.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-July/199284.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.05.2.tar.bz2\">2017.05.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02.5 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 July 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.02.5 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.02.4 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02.5\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-July/199281.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02.5.tar.bz2\">2017.02.5 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.05.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 July 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.05.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.05 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.05.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-July/196743.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.05.1.tar.bz2\">2017.05.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02.4 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 July 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.02.4 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.02.3 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02.4\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-July/196719.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02.4.tar.bz2\">2017.02.4 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>2 June 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.02.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.02.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-June/193485.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02.3.tar.bz2\">2017.02.3 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 May 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2017.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.05\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-June/193164.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.05.tar.bz2\">2017.05 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.05-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 May 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and security\n\t  / build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.05-rc3\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up\n\t  the <a href=\"/downloads/buildroot-2017.05-rc3.tar.bz2\">2017.05-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>17 May 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n        <p>Another week, another release candidate with more cleanups\n          and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.05-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.05-rc2.tar.bz2\">2017.05-rc2\n\t  release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>8 May 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.05-rc1\">CHANGES</a>\n\t  file for details.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.05-rc1.tar.bz2\">2017.05-rc1\n\t    release candidate</a>, and report any\n\t  problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 May 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.02.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.02.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-May/191062.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02.2.tar.bz2\">2017.02.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 April 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2017.02.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2017.02 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-April/188708.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02.1.tar.bz2\">2017.02.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.11.3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 March 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2016.11.3 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2016.11.2 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.11.3\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-March/186418.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.11.3.tar.bz2\">2016.11.3 release</a>.</p>\n\t  <p>Notice that this is the final 2016.11.x release. Users are\n\t  urged to migrate to the 2017.02.x series instead.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 February 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2017.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-February/185228.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02.tar.bz2\">2017.02 release</a>.</p>\n\n\t  <p>Notice that this is a long term support release which will be\n\t  supported with security and other important fixes until February 2018.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>26 February 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and security\n\t  / build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02-rc3\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up\n\t  the <a href=\"/downloads/buildroot-2017.02-rc3.tar.bz2\">2017.02-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>20 February 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02-rc2\">CHANGES</a>\n\t  file for details.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02-rc2.tar.bz2\">2017.02-rc2\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2017.02-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>11 February 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.02-rc1\">CHANGES</a>\n\t  file for details, read\n\t  the <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-February/183729.html\">announcement</a>.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2017.02-rc1.tar.bz2\">2017.12-rc1\n\t    release candidate</a>, and report any\n\t  problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.11.2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>25 January 2017</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2016.11.2 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2016.11.1 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.11.2\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2017-January/182095.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.11.2.tar.bz2\">2016.11.2 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.11.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 December 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2016.11.1 bugfix release is out, fixing a number of important /\n\t  security related issues discovered since the 2016.11 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.11.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2016-December/180622.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.11.1.tar.bz2\">2016.11.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 November 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2016.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.11\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2016-November/178514.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.11.tar.bz2\">2016.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.11-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 November 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and security\n\t  / build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.11-rc3\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up\n\t  the <a href=\"/downloads/buildroot-2016.11-rc3.tar.bz2\">2016.11-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>13 November 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of\n\t  changes all over the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.11-rc2\">CHANGES</a>\n\t  file for details.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.11-rc2.tar.bz2\">2016.11-rc2\n\t    release candidate</a>, and report any\n\t  problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>3 November 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of\n\t  changes all over the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.11-rc1\">CHANGES</a>\n\t  file for details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2016-November/176453.html\">announcement</a>.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.11-rc1.tar.bz2\">2016.11-rc1\n\t    release candidate</a>, and report any\n\t  problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.08.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>21 September 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2016.08.1 bugfix release is out. This release fixes a\n\t  potential entire root filesystem removal issue with the\n\t  external toolchain handling discovered since the 2016.08\n\t  release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.08.1\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2016-September/172712.html\">announcement</a> and go to the\n\t  <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.08.1.tar.bz2\">2016.08.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 September 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2016.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.08\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2016-September/171172.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.08.tar.bz2\">2016.08 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.08-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 August 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and security\n\t  / build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.08-rc3\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up\n\t  the <a href=\"/downloads/buildroot-2016.08-rc3.tar.bz2\">2016.08-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>17 August 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.08-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.08-rc2.tar.bz2\">2016.08-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>6 August 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of\n\t  changes all over the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.08-rc1\">CHANGES</a>\n\t  file for details and read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2016-August/169277.html\">announcement</a>\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.08-rc1.tar.bz2\">2016.08-rc1\n\t    release candidate</a>, and report any\n\t  problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 March 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2016.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.05\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2016-May/162428.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.05.tar.bz2\">2016.05 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.05-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>26 May 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and security\n\t  / build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.05-rc3\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up\n\t  the <a href=\"/downloads/buildroot-2016.05-rc3.tar.bz2\">2016.05-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>17 May 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.05-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.05-rc2.tar.bz2\">2016.05-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 May 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of\n\t  changes all over the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.05-rc1\">CHANGES</a>\n\t  file for details and read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2016-May/160897.html\">announcement</a>.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.05-rc1.tar.bz2\">2016.05-rc1\n\t    release candidate</a>, and report any\n\t  problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.buildroot.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.02 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 March 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2016.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.02\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2016-March/154535.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.02.tar.bz2\">2016.02 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.02-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 February 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and security\n\t  / build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.02-rc3\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up\n\t  the <a href=\"/downloads/buildroot-2016.02-rc3.tar.bz2\">2016.02-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.02-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>18 February 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.02-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.02-rc2.tar.bz2\">2016.02-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2016.02-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 February 2016</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of\n\t  changes all over the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2016.02-rc1\">CHANGES</a>\n\t  file for details and read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2016-February/152420.html\">announcement</a>.\n\t</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2016.02-rc1.tar.bz2\">2016.02-rc1\n\t    release candidate</a>, and report any\n\t  problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.11.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>5 December 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2015.11.1 bugfix release is out - Thanks to everyone\n\tcontributing. This release fixes critical issues discovered\n\tsince the 2015.11 release. See the\n\t<a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.11.1\">CHANGES</a>\n\tfile for more details, and go to the\n\t<a href=\"/downloads/\">downloads page</a> to pick up the\n\t<a href=\"/downloads/buildroot-2015.11.1.tar.bz2\">2015.11.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 November 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2015.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.11\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.busybox.net/pipermail/buildroot/2015-November/145727.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2015.11.tar.bz2\">2015.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.11-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>26 November 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and security\n\t  / build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.11-rc3\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up\n\t  the <a href=\"/downloads/buildroot-2015.11-rc3.tar.bz2\">2015.11-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>19 November 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.11-rc2\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up\n\t  the <a href=\"/downloads/buildroot-2015.11-rc2.tar.bz2\">2015.11-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>7 November 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of\n\t  changes all over the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.11-rc1\">CHANGES</a>\n\t  file for details. See also\n\t  the <a href=\"http://lists.busybox.net/pipermail/buildroot/2015-November/144026.html\">announcement\n\t    e-mail</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2015.11-rc1.tar.bz2\">2015.11-rc1\n\t    release candidate</a>, and report any\n\t  problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.08.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>6 September 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2015.08.1 bugfix release is out - Thanks to everyone\n\t  contributing. This release fixes critical issues discovered since\n\t  the 2015.08 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.08.1\">CHANGES</a>\n\t  file for more details,\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2015.08.1.tar.bz2\">2015.08.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 August 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2015.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.08\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2015-August/138336.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2015.08.tar.bz2\">2015.08 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>24 August 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.08-rc2\">CHANGES</a>\n\t  file for details, and\n\t  the <a href=\"http://lists.buildroot.org/pipermail/buildroot/2015-August/137879.html\">release\n\t    announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2015.08-rc2.tar.bz2\">2015.08-rc2\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>5 August 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.08-rc1\">CHANGES</a>\n\t  file for details, read\n\t  the <a href=\"http://lists.buildroot.org/pipermail/buildroot/2015-August/135417.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2015.08-rc1.tar.bz2\">2015.08-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 May 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2015.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.05\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2015-May/129209.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2015.05.tar.bz2\">2015.05 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.05-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>22 May 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and security\n\t  / build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.05-rc3\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up\n\t  the <a href=\"/downloads/buildroot-2015.05-rc3.tar.bz2\">2015.05-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>11 May 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.05-rc2\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up the\n\t  <a href=\"/downloads/buildroot-2015.05-rc2.tar.bz2\">2015.05-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 May 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.05-rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2015-May/127794.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2015.05-rc1.tar.bz2\">2015.05-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.02 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 March 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2015.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.02\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2015-March/120396.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2015.02.tar.bz2\">2015.02 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.02-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>24 February 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and security\n\t  / build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.02-rc3\">CHANGES</a>\n\t  file for details.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up the\n\t  <a href=\"/downloads/buildroot-2015.02-rc3.tar.bz2\">2015.02-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.02-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>15 February 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.02-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2015.02-rc2.tar.bz2\">2015.02-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2015.02-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>8 February 2015</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2015.02-rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2015-February/118982.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2015.02-rc1.tar.bz2\">2015.02-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 December 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2014.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.11\">CHANGES</a>\n\t  file for more details,\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.11.tar.bz2\">2014.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li  class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.11-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 November 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and build\n\t  fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.11-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up the\n\t  <a href=\"/downloads/buildroot-2014.11-rc3.tar.bz2\">2014.11-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>21 November 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.11-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.11-rc2.tar.bz2\">2014.11-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Report from Buildroot Developers Meeting</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>13 November 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>A report from the recent\n\t  <a href=\"http://elinux.org/Buildroot:DeveloperDaysELCE2014\">\n\t    Buildroot Developers Meeting</a> is now\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2014-October/109966.html\">available</a>.</p>\n\n\t<p>Once again, thanks to all the participants and to\n\t  <a href=\"http://www.mind.be\">Mind</a> for sponsoring the event.</p>\n\n\t<p>The next Developer Days will take place on February 2nd and\n\t  3rd in Brussels, Belgium, right\n\t  after <a href=\"http://fosdem.org\">FOSDEM</a>. See\n\t  the <a href=\"http://elinux.org/Buildroot:DeveloperDaysFOSDEM2015\">wiki</a>\n\t  for more details.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 November 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the <a\n\t\t\t   href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.11-rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2014-November/111946.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.11-rc1.tar.bz2\">2014.11-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 September 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2014.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.08\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2014-September/105257.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.08.tar.bz2\">2014.08 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.08-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>26 August 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and build\n\t  fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.08-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.08-rc3.tar.bz2\">2014.08-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>18 August 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.08-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.08-rc2.tar.bz2\">2014.08-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>8 August 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the <a\n\t\t\t   href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.08-rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2014-August/103972.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.08-rc1.tar.bz2\">2014.08-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 May 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2014.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.05\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2014-May/097863.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.05.tar.bz2\">2014.05 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.05-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 May 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and build\n\t  fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.05-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.05-rc3.tar.bz2\">2014.05-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>21 May 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.05-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up the\n\t  <a href=\"/downloads/buildroot-2014.05-rc2.tar.bz2\">2014.05-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>13 May 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the <a\n\t\t\t   href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.05-rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2014-May/096492.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.05-rc1.tar.bz2\">2014.05-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">27 February 2014</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>2014.02 released</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2014.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.02\">CHANGES</a>\n\t  file for more details,\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.02.tar.bz2\">2014.02 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">25 February 2014</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>2014.02-rc3 released</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Release candidate 3 is out with more cleanups and build\n\t  fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.02-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.02-rc3.tar.bz2\">2014.02-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">20 February 2014</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>2014.02-rc2 released</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.02-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.02-rc2.tar.bz2\">2014.02-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2014.02-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>11 February 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the <a\n\t\t\t   href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2014.02-rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2014-February/089055.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2014.02-rc1.tar.bz2\">2014.02-rc1\n\t    release candidate</a>, and report any problems found to the\n\t  <a href=\"support.html\">mailing list</a> or\n\t  <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">9 February 2014</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>Report from Buildroot Developers Meeting</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>A report from the recent\n\t  <a href=\"http://elinux.org/Buildroot:DeveloperDaysFOSDEM2014\">\n\t    Buildroot Developers Meeting</a> is now\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2014-February/088373.html\">available</a>.</p>\n\n\t<p>Once again, thanks to all the participants and to\n\t  <a href=\"http://www.google.com\">Google</a> and\n\t  <a href=\"http://www.mind.be\">Mind</a> for sponsoring the event.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Upcoming Buildroot Developers meeting</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 January 2014</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The upcoming Buildroot Developers meeting will take place in\n\t  Brussels on February, 3rd and 4th, after the\n\t  <a href=\"http://www.fosdem.org\">FOSDEM</a> conference. Additional\n\t  details about the meeting can be found on the corresponding\n\t  <a href=\"http://elinux.org/Buildroot:DeveloperDaysFOSDEM2014\">\n\t    wiki page</a>.</p>\n\n\t<p>Persons not able to join the meeting in Brussels can participate\n\t  remotely using Google Hangouts. Simply give your Google address to\n\t  <code>thomas.petazzoni@free-electrons.com</code>.</p>\n\n\t<p>This meeting is sponsored by\n\t  <a href=\"http://www.google.com\">Google</a> (for the meeting room)\n\t  and <a href=\"http://www.mind.be\">Mind</a> (for the dinner).\n\t  Thanks to our sponsors!</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 November 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2013.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.11\">CHANGES</a>\n\t  file for more details, read the <a href=\"http://lists.buildroot.org/pipermail/buildroot/2013-November/083600.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.11.tar.bz2\">2013.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Slides from Embedded Linux Conference Europe</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 November 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The slides from the Buildroot presentation at the recent\n\t  <a href=\"http://events.linuxfoundation.org/events/embedded-linux-conference-europe\">Embedded Linux Conference Europe 2013</a>\n\t  are now\n\t  <a href=\"http://elinux.org/images/2/23/Buildroot-whats-new-elce2013.pdf\">available</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.11-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>18 November 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more\n\t  fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.11-rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.11-rc3.tar.bz2\">2013.11-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>18 November 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.11-rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.11-rc2.tar.bz2\">2013.11-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Announcement of the next Buildroot Developer Days</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>13 November 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The next <i>Buildroot Developer Days</i> meeting will take\n\t  place on Monday 3rd and Tuesday 4th February 2014 in Brussels,\n\t  Belgium - Just after\n\t  <a href=\"http://www.fosdem.org\">FOSDEM</a> (February\n\t  1st/2nd). This two days meeting is mainly open to Buildroot\n\t  developers and contributors, or Buildroot users having a prior\n\t  experience with the tool. It will allow developers to work on\n\t  Buildroot and discuss current issues, the future directions, and\n\t  more.</p>\n\n\t<p>In addition to the Buildroot event, we encourage embedded Linux\n\t  developers to propose talks for the Embedded and Mobile Developer\n\t  Room at FOSDEM. See\n\t  the <a href=\"https://lists.fosdem.org/pipermail/fosdem/2013-October/001870.html\">CFP</a>.</p>\n\n\t<p>We would like to thank our\n\t  sponsor <a href=\"http://www.google.com\">Google</a> for sponsoring\n\t  the event by providing all the needed logistics.</p>\n\n\t<p>For more details, see the\n\t  <a href=\"http://www.elinux.org/Buildroot:DeveloperDaysFOSDEM2014\">wiki\n\t    page</a> dedicated to the meeting.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 November 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the <a\n\t\t\t   href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.11_rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2013-November/082514.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.11-rc1.tar.bz2\">2013.11-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Report from Buildroot Developers Meeting</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>11 November 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>A report from the recent\n\t  <a href=\"http://elinux.org/Buildroot:DeveloperDaysELCE2013\">\n\t    Buildroot Developers Meeting</a> is now\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2013-November/082401.html\">available</a>.</p>\n\n\t<p>Once again, thanks to all the participants and to\n\t  <a href=\"http://www.imgtec.com/\">Imagination Technologies</a>\n\t  for sponsoring the event.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.08.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>17 September 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2013.08.1 bugfix release is out - Thanks to everyone\n\t  contributing. This release fixes critical issues discovered since\n\t  the 2013.08 release. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.08.1\">CHANGES</a>\n\t  file for more details,\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.08.1.tar.bz2\">2013.08.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Buildroot Developer Days</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>16 September 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The next <i>Buildroot Developer Days</i> meeting will take\n\t  place on Saturday October 26th and Sunday October 27th 2013 in\n\t  Edinburgh, UK - Just after the <a\n\t\t\t\t\t    href=\"https://events.linuxfoundation.org/events/embedded-linux-conference-europe\">\n\t    Embedded Linux Conference Europe</a> (October 23th-24th). This two\n\t  days meeting is mainly open to Buildroot developers and\n\t  contributors, or Buildroot users having a prior experience with\n\t  the tool. It will allow developers to work on Buildroot and\n\t  discuss current issues, the future directions, and more.</p>\n\n\t<p>For more details, see the\n\t  <a href=\"http://www.elinux.org/Buildroot:DeveloperDaysELCE2013\">wiki\n\t    page</a> dedicated to the meeting.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 August 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2013.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.08\">CHANGES</a>\n\t  file for more details, read the <a href=\"http://lists.buildroot.org/pipermail/buildroot/2013-August/077224.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.08.tar.bz2\">2013.08 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.08-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 August 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups and\n\t  build fixes. See the <a\n\t\t\t\t  href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.08_rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.08-rc3.tar.bz2\">2013.08-rc3\n\t    release candidate</a>, and report any problems found to the <a\n\t\t\t\t\t\t\t\t\t   href=\"support.html\">mailing list</a> or <a\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t      href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>16 August 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.08_rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.08-rc2.tar.bz2\">2013.08-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>5 August 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.08_rc1\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.08-rc1.tar.bz2\">2013.08-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 May 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2013.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.05\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2013-May/073121.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.05.tar.bz2\">2013.05 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.05-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>25 May 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups and\n\t  build fixes. See the <a\n\t\t\t\t  href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.05_rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.05-rc3.tar.bz2\">2013.05-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>15 May 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups and\n\t  build fixes. See the <a\n\t\t\t\t  href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.05_rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.05-rc2.tar.bz2\">2013.05-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>8 May 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the <a\n\t\t\t   href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.05_rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2013-May/071737.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.05-rc1.tar.bz2\">2013.05-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.02 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 February 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2013.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.02\">CHANGES</a>\n\t  file for more details\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.02.tar.bz2\">2013.02 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.02-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>26 February 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.02_rc3\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.02-rc3.tar.bz2\">2013.02-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.02-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>19 February 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups and\n\t  build fixes. See the <a\n\t\t\t\t  href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.02_rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.02-rc2.tar.bz2\">2013.02-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2013.02-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 February 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the <a\n\t\t\t   href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2013.02_rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2013-February/067148.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2013.02-rc1.tar.bz2\">2013.02-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Report from Buildroot Developers Meeting</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 February 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>A report from the recent Buildroot Developers Meeting is now\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2013-February/067105.html\">available</a>.\n\t  <a href=\"http://emlinews.net\">Embedded Linux News</a> also has a\n\t  <a href=\"http://www.emlinews.net/2013/02/buildroot-developers-meeting-report/\">\n\t    writeup about the event</a>, including photos.</p>\n\n\t<p>Once again, thanks to all the participants and to\n\t  <a href=\"http://www.google.com\">Google</a> for sponsoring the event.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Next Buildroot Developers Meeting next to FOSDEM, Brussels</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 January 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The next Buildroot Developers Meeting will take place on Monday\n\t  4th February 2013 and Tuesday 5th February 2013 in Brussels,\n\t  Belgium. Those dates have been chosen to immediately follow the\n\t  great <a href=\"http://www.fosdem.org\">FOSDEM</a> conference.</p>\n\n\t<p>Attending this meeting is free, after registration by\n\t  contacting <a href=\"mailto:thomas.petazzoni@free-electrons.com\">Thomas\n\t    Petazzoni</a>. For more details about the meeting, please see\n\t  the <a href=\"http://elinux.org/Buildroot:DeveloperDaysFOSDEM2013\">related\n\t    Wiki page</a>.</p>\n\n\t<p>We would like to\n\t  thank <a href=\"http://www.google.com\">Google</a> for providing the\n\t  meeting location and the Internet connection, and offering free\n\t  lunch and refreshments to the participants.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.11.1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>3 January 2013</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The 2012.11.1 bugfix release is out - Thanks to everyone\n\t  contributing. This release fixes critical issues discovered since\n\t  the 2012.11 release, most importantly with non-largefile builds on\n\t  recent Ubuntu versions. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.11.1\">CHANGES</a>\n\t  file for more details,\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.11.1.tar.bz2\">2012.11.1 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>2 December 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2012.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.11\">CHANGES</a>\n\t  file for more details\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.11.tar.bz2\">2012.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 November 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC2 is out with more bugfixes - See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.11_rc2\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.11-rc2.tar.bz2\">2012.11-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>17 November 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the <a\n\t\t\t   href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.11_rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2012-November/061995.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.11-rc1.tar.bz2\">2012.11-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Buildroot Developer Day</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>17 November 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>A report from the recent <i>Buildroot Developer Days</i>\n\t  meeting in Barcelona, Spain is\n\t  now <a href=\"http://lists.buildroot.org/pipermail/buildroot/2012-November/061558.html\">available</a>.\n\t  Many thanks to all the participants, and a special thanks to\n\t  Arnout Vandecappelle from <a href=\"http://mind.be/\">mind</a>\n\t  for taking notes and Thomas Petazzoni\n\t  from <a href=\"http://free-electrons.com/\">Free Electrons</a>\n\t  for handling all the practical arrangements, and naturally\n\t  our sponsors, <a href=\"http://www.fluendo.com/\">Fluendo</a>\n\t  and <a href=\"http://www.synopsys.com/\">Synopsis</a>.\n\t</p>\n\t<p>The next Developer Days will take place on February 4th and\n\t  5th in Brussels, Belgium, right\n\t  after <a href=\"http://fosdem.org\">FOSDEM</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 August 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2012.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.08\">CHANGES</a>\n\t  file for more details and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.08.tar.bz2\">2012.08 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.08-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>25 August 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Various fixes, and\n\t  addition of licensing informations on many\n\t  packages. See <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.08_rc3\">CHANGES</a>\n\t  file for details</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.08-rc3.tar.bz2\">2012.08-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>15 August 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Various fixes, and addition\n\t  of licensing informations on many\n\t  packages. See <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.08_rc2\">CHANGES</a>\n\t  file for details</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.08-rc2.tar.bz2\">2012.08-rc2\n\t    release candidate</a>, and report any problems found to the <a\n\t\t\t\t\t\t\t\t\t   href=\"support.html\">mailing list</a> or <a\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t      href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 August 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.08_rc1\">CHANGES</a>\n\t  file for details</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.08-rc1.tar.bz2\">2012.08-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Buildroot Developer Day</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>22 July 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The next <i>Buildroot Developer Day</i> meeting will take place\n\t  on Saturday November 3th and Sunday November 4th 2012 in\n\t  Barcelona, Spain, just before\n\t  the <a href=\"https://events.linuxfoundation.org/events/embedded-linux-conference-europe\">Embedded\n\t    Linux Conference Europe</a> (November 5th-7th). This two days\n\t  meeting is mainly opened to Buildroot developers and contributors,\n\t  or Buildroot users having a prior experience with the tool. This\n\t  meeting will allow developers to work and Buildroot, and discuss\n\t  current issues, the future directions, and more.</p>\n\n\t<p>For more details, see\n\t  the <a href=\"http://elinux.org/Buildroot#Buildroot_Developers_Meeting.2C_3-4_November_2012.2C_Barcelona_Spain\">wiki\n\t    page</a> dedicated to the meeting.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 May 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2012.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.05\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2012-May/054342.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.05.tar.bz2\">2012.05 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.05-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>25 May 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC3 is out with more bugfixes - See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.05_rc3\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.05-rc3.tar.bz2\">2012.05-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>18 May 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.05_rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.05-rc2.tar.bz2\">2012.05-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>10 May 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.05_rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2012-May/053736.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.05-rc1.tar.bz2\">2012.05-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Autobuilder Results Online</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>20 April 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The status of the autobuilders, which do repeated\n\t  <code>randpackageconfig</code> builds for continuous\n\t  integration testing, is now online\n\t  at <a href='http://autobuild.buildroot.org'>autobuild.buildroot.org</a>. The\n\t  code behind it can be found\n\t  in <a href='http://git.buildroot.net/buildroot-test/'>git</a>.</p>\n\n\t<p>Thanks to Thomas Petazzoni for running the web interface, and\n\t  to <a href='http://gcc.gnu.org/wiki/CompileFarm'>The GCC Compile\n\t    Farm</a> and <a href='http://free-electrons.com/'>Free\n\t    Electrons</a> for hosting builders. Thomas also sends out a daily\n\t  summary of the build status to the mailing list.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.02 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 February 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2012.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.02\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2012-February/050752.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.02.tar.bz2\">2012.02 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.02-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 February 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC3 is out with more bugfixes - See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.02_rc3\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.02-rc3.tar.bz2\">2012.02-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.02-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>19 February 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with more cleanups\n\t  and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.02_rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.02-rc2.tar.bz2\">2012.02-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2012.02-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 February 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2012.02_rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2012-February/050234.html\">announcement</a>.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2012.02-rc1.tar.bz2\">2012.02-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Buildroot Developer Day</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 January 2012</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another <i>Buildroot Developer Day</i> will take place on\n\t  Friday, February 3rd in Brussels, Belgium - The day\n\t  before <a href=\"http://fosdem.org\">FOSDEM</a>. See the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2012-January/049340.html\">announcement</a>\n\t  or\n\t  the <a href=\"http://free-electrons.com/blog/bdd-2012-brussels/\">Free\n\t    Electrons blog</a> for more info.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 November 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2011.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.11\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2011-November/047926.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.11.tar.bz2\">2011.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.11-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>26 November 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC3 is out with more bugfixes - See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.11_rc3\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.11-rc3.tar.bz2\">2011.11-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>18 November 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with a bunch of\n\t  cleanups and build fixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.11_rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.11-rc2.tar.bz2\">2011.11-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>11 November 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.11_rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2011-November/047395.html\">announcement</a>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.11-rc1.tar.bz2\">2011.11-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 August 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2011.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.08\">CHANGES</a>\n\t  file for more details, and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.08.tar.bz2\">2011.08 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 August 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC2 is out with more bugfixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.08_rc2\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2011-August/045211.html\">announcement</a>.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.08-rc2.tar.bz2\">2011.08-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>4 August 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.08_rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2011-August/044855.html\">announcement</a>.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.08-rc1.tar.bz2\">2011.08-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 May 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2011.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.05\">CHANGES</a>\n\t  file for more details, and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.05.tar.bz2\">2011.05 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>24 May 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC2 is out with more bugfixes. See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.05_rc2\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.05-rc2.tar.bz2\">2011.05-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>18 May 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.05_rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2011-May/043317.html\">announcement</a>.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.05-rc1.tar.bz2\">2011.05-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.02 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 February 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2011.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.02\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2011-February/041662.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.02.tar.bz2\">2011.02 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.02-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>24 February 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC2 is out with more cleanups and bugfixes, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.02_rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.02-rc2.tar.bz2\">2011.02-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2011.02-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>14 February 2011</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.02_rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2011-February/041365.html\">announcement</a>.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2011.02-rc1.tar.bz2\">2011.02-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 November 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2010.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.11\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2010-November/039135.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2010.11.tar.bz2\">2010.11 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>25 November 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC2 is out with more cleanups and bugfixes, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.11_rc2\">CHANGES</a>\n\t  file for details.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2010.11-rc2.tar.bz2\">2010.11-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>8 November 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.11_rc1\">CHANGES</a>\n\t  file for details, and read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2010-November/038645.html\">announcement</a>.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2010.11-rc1.tar.bz2\">2010.11-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Buildroot Developer Day</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>28 September 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>A <i>Buildroot Developer Day</i> will take place on\n\t  Friday, October 29th in Cambridge, UK - Just the day after the\n\t  <a href=\"http://www.embeddedlinuxconference.com/elc_europe10/\">Embedded\n\t    Linux Conference Europe</a>. This <i>Developer Day</i>\n\t  aims at allowing Buildroot developers to meet and exchange\n\t  ideas on the project and its future. See the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2010-September/037930.html\">announcement</a>\n\t  for more info.</p>\n\n\t<p>Thanks to Thomas Petazzoni for taking care of the practical\n\t  arrangements.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 August 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2010.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.08\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2010-August/037078.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2010.08.tar.bz2\">2010.08 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 August 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC2 is out with more cleanups and bugfixes, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.08_rc2\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2010.08-rc2.tar.bz2\">2010.08-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n\n\tThis is very much expected to be the final release candidate,\n\tso give it a good test and expect a final 2010.08 release\n\tbefore September unless critical issues are found.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 July 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.08_rc1\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2010.08-rc1.tar.bz2\">2010.08-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>30 May 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2010.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.05\">CHANGES</a>\n\t  file for more details, read the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2010-May/034878.html\">announcement</a>\n\t  and go to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2010.05.tar.bz2\">2010.05 release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.05-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 May 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC3 is out with more cleanups and bugfixes, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.05_rc3\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2010.05-rc3.tar.bz2\">2010.05-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>11 May 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with a bunch of\n\t  cleanups and build fixes.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2010.05-rc2.tar.bz2\">2010.05-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>3 May 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.05_rc1\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2010.05-rc1.tar.bz2\">2010.05-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">FOSDEM slides online</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>2 May 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The slides from\n\t  the <a href=\"http://fosdem.org/2010/schedule/events/emb_cross_build\">Cross\n\t    Build Systems: Present & Future</a> session\n\t  at <a href=\"http://fosdem.org/2010\">FOSDEM</a> are\n\t  now <a href=\"http://send-patches.org/news/20100211-1-FOSDEM-Crossdev-Workshop.pdf\">online</a>.\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.02 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>26 February 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2010.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.02\">CHANGES</a>\n\t  file for more details, and go to\n\t  the <a href=\"/downloads/\">downloads page</a> to pick up\n\t  the <a href=\"/downloads/buildroot-2010.02.tar.bz2\">2010.02\n\t    release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.02-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>23 February 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC2 is out with more cleanups and bugfixes, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.02_rc2\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2010.02-rc2.tar.bz2\">2010.02-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2010.02-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>9 February 2010</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.02_rc1\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2010.02-rc1.tar.bz2\">2010.02-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.11 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 December 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2009.11 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2009-December/030672.html\">announcement</a>\n\t  or <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.11\">CHANGES</a>\n\t  for more details, and go to the <a href=\"/downloads/\">downloads page</a>\n\t  to pick up the <a href=\"/downloads/buildroot-2009.11.tar.bz2\">2009.11\n\t    release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.11-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>29 November 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC2 is out with more cleanups and bugfixes, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.11_rc2\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2009.11-rc2.tar.bz2\">2009.11-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.11-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>23 November 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.11_rc1\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2009.11-rc1.tar.bz2\">2009.11-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">First Buildroot Developer Day</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>7 September 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The first <i>Buildroot Developer Day</i> will take place on\n\t  Saturday, October 17th in Grenoble, France, just the day after\n\t  Embedded Linux Conference Europe. This <i>Developer Day</i> aims\n\t  at allowing Buildroot developers to meet and exchange ideas on the\n\t  project and its future.</p>\n\n\t<p>As the number of places is limited, interested candidates are\n\t  invited to send an e-mail to Peter Korsgaard (<code>jacmet at\n\t    uclibc dot org</code>) and Thomas Petazzoni (<code>thomas dot\n\t    petazzoni at free-electrons dot com</code>).</p>\n\n\t<p>This <i>Developer Day</i> will take place thanks to the\n\t  sponsoring of <a href=\"http://www.calao-systems.com\">Calao\n\t    Systems</a> and <a href=\"http://www.free-electrons.com\">Free\n\t    Electrons</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.08 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 August 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2009.08 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2009-August/029018.html\">announcement</a>\n\t  or <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.08\">CHANGES</a>\n\t  for more details, and go to the <a href=\"/downloads/\">downloads page</a>\n\t  to pick up the <a href=\"/downloads/buildroot-2009.08.tar.bz2\">2009.08\n\t    release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.08-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>26 August 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>A number of bugfixes have been added to the tree since RC2\n\t  (especially thanks to Thomas Petazzoni) - See\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.08_rc3\">CHANGES</a>\n\t  file for details. This is very much expected to be the final\n\t  release candidate, so give it a good test and expect a final\n\t  2009.08 release next weekend unless critical issues are\n\t  found.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up the\n\t  <a href=\"/downloads/buildroot-2009.08-rc3.tar.bz2\">2009.08-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.08-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>6 August 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC2 is out with more cleanups and bugfixes, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.08_rc2\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2009.08-rc2.tar.bz2\">2009.08-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.08-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>2 August 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over\n\t  the tree, see\n\t  the <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.08_rc1\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2009.08-rc1.tar.bz2\">2009.08-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.05 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>1 June 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2009.05 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2009-June/027640.html\">announcement</a>\n\t  or <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05\">CHANGES</a>\n\t  for more details, and go to the <a href=\"/downloads/\">downloads page</a>\n\t  to pick up the <a href=\"/downloads/buildroot-2009.05.tar.bz2\">2009.05\n\t    release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.05-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 May 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We had a number of fixes post-RC2, so RC3 is out\n\t  (see <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05_rc3\">CHANGES</a>\n\t  for details). Now is the moment to test and verify that\n\t  everything is working for your favorite config - Expect a\n\t  final 2009.05 very soon.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2009.05-rc3.tar.bz2\">2009.05-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.05-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>19 May 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC2 is out with more cleanups and bug fixes\n\t  (see <a href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05_rc2\">CHANGES</a>).\n\t  Unless big issues are found, expect this to be the last\n\t  release candidate before the release - So give it a good\n\t  test.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2009.05-rc2.tar.bz2\">2009.05-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Buildroot.org</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>14 May 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Earl Levine has been so kind to donate\n\t  the <b>buildroot.org</b> domain to us, so the website can\n\t  now also be reached\n\t  at <a href=\"http://www.buildroot.org\">www.buildroot.org</a>\n\t  (and git at\n\t  <a href=\"http://git.buildroot.org/buildroot\">git.buildroot.org</a>).\n\n\t  Thanks a lot Earl!</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.05-rc1 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>5 May 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a new release candidate! Lots of changes all over the\n\t  tree, see the <a\n\t\t\t   href=\"http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05_rc1\">CHANGES</a>\n\t  file for details.\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to pick up the\n\t  <a href=\"/downloads/buildroot-2009.05-rc1.tar.bz2\">2009.05-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Moved to git</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>3 May 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We've moved the source code\n\t  from <a href=\"http://subversion.tigris.org\">Subversion</a>\n\t  to <a href=\"http://git-scm.org\">Git</a>. You can browse the\n\t  repo online\n\t  <a href=\"http://git.buildroot.net/buildroot\">here</a>, and clone\n\t  the repo using:\n\t  <pre>git clone git://git.buildroot.net/buildroot</pre>\n\t  See the <a href=\"/git.html\">Git Access</a> page for more details.\n\t</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\"><new Logo/h4>\n\t    <p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>27 March 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We have a <a href=\"images/logo.png\">logo</a>! We have so\n\t  far been using the <a href=\"http://busybox.net\">Busybox</a>\n\t  logo on the website, as the website was a copy of\n\t  the <a href=\"http://busybox.net\">Busybox</a> one - But not\n\t  anymore, we now have a shiny new logo of our own.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.02 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>12 February 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>The stable 2009.02 release is out - Thanks to everyone\n\t  contributing and testing the release candidates. See the\n\t  <a href=\"http://lists.buildroot.org/pipermail/buildroot/2009-February/025974.html\">announcement</a>\n\t  for more details, and go to the <a href=\"/downloads/\">downloads page</a>\n\t  to pick up the <a href=\"/downloads/buildroot-2009.02.tar.bz2\">2009.02\n\t    release</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.02-rc4 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>9 February 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>We had more than 50 changes since RC3, several of them\n\t  toolchain related, so decided to make a RC4 as well. This is\n\t  very much expected to be the final release candidate, so\n\t  give it a good test and expect a final 2009.02 release this\n\t  week unless critical issues are found.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up the\n\t  <a href=\"/downloads/buildroot-2009.02-rc4.tar.bz2\">2009.02-rc4\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.02-rc3 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>31 January 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>RC3 is out with more cleanups and bug fixes. Unless big\n\t  issues are found, expect this to be the last release\n\t  candidate before the release - So give it a good test.</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up the\n\t  <a href=\"/downloads/buildroot-2009.02-rc3.tar.bz2\">2009.02-rc3\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">2009.02-rc2 released</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>23 January 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Another week, another release candidate with a bunch of\n\t  cleanups and build fixes.</p>\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up the\n\t  <a href=\"/downloads/buildroot-2009.02-rc2.tar.bz2\">2009.02-rc2\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Release candidate and new maintainer</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>16 January 2009</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\n\t<p>It has been a long time coming, but we finally have a new\n\t  release candidate! - And a new maintainer to match (Peter\n\t  Korsgaard).</p>\n\n\t<p>Head to the <a href=\"/downloads/\">downloads page</a> to\n\t  pick up the\n\t  <a href=\"/downloads/buildroot-2009.02-rc1.tar.bz2\">2009.02-rc1\n\t    release candidate</a>, and report any problems found to\n\t  the <a href=\"support.html\">mailing list</a>\n\t  or <a href=\"https://bugs.uclibc.org\">bug tracker</a>. The\n\t  plan is to release 2009.02 in time\n\t  for <a href=\"http://www.fosdem.org/2009/\">FOSDEM</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li>\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Buildroot mailing list</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>16 July 2006</small></p>\n      </div>\n      <div class=\"timeline-body\">\n\t<p>Buildroot now has its own <a href=support.html>mailing list</a>.</p>\n      </div>\n    </div>\n  </li>\n\n  <li class=\"timeline-inverted\">\n    <div class=\"timeline-badge\"><i class=\"glyphicon glyphicon-thumbs-up\"></i></div>\n    <div class=\"timeline-panel\">\n      <div class=\"timeline-heading\">\n\t<h4 class=\"timeline-title\">Buildroot webpage added</h4>\n\t<p><small class=\"text-muted\"><i class=\"glyphicon glyphicon-time\"></i>21 February 2005</small></p>\n\n\t<p>Buildroot is a set of Makefiles and patches that makes it easy generate a\n\t  cross-compilation toolchain and root filesystem for your target Linux\n\t  system using the <a href= \"http://www.uclibc.org/\">uClibc C library</a>.\n\t  Buildroot is useful mainly for people working with small or embedded\n\t  systems.  Embedded systems often use processors that are not the regular\n\t  x86 processors everyone is used to using on their PC. It can be PowerPC\n\t  processors, MIPS processors, ARM processors, etc.  And to be extra safe,\n\t  you do not need to be root to build or run buildroot.</p>\n\n\t<p>And as of today buildroot even has its own webpage, making it a first class\n\t  citizen of uclibc.org and busybox.net, and more importantly, make it easy\n\t  to find and point to buildroot.</p>\n\n\t<p>If you find a bug in buildroot, or wish to submit a patch\n\t  to fix a problem or add a shiny new feature, please use\n\t  the <a href=\"https://bugs.uclibc.org/\">Bug and Patch\n\t  Tracking System</a> to post the details, to make certain\n\t  your work is not lost</p>\n      </div>\n    </div>\n  </li>\n</ul>\n\n</div><!--/.col-sm-10 -->\n</div><!--/.row -->\n</div>\n\n<!--#include file=\"footer.html\" -->\n\n"
  },
  {
    "path": "docs/website/robots.txt",
    "content": "User-agent: *\nDisallow: /cgi-bin/\n"
  },
  {
    "path": "docs/website/sponsors.html",
    "content": "<!--#include file=\"header.html\" -->\n\n<div class=\"container\">\n<div class=\"row nh\"><!-- current sponsor row -->\n<div class=\"col-lg-10 col-lg-offset-1 col-md-12 col-sm-12 col-xs-12\">\n\n    <div class=\"panel panel-primary\">\n    <div class=\"panel-heading\">Current sponsors</div>\n    <div class=\"panel-body\">\n\n      <div class=\"row\">\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\" style=\"height: 150px;\">\n\t\t<a href=\"https://www.tap2open.com\">\n\t\t  <img class=\"img-responsive center-block\" src=\"images/tap2open-logo.png\"/>\n\t\t</a>\n\t      </div>\n\t      <div class=\"col-sm-12\" style=\"height: 150px;\">\n\t        <a href=\"https://www.tap2open.com\">Tap2Open</a>\n\t        financially sponsored the <a href=\"/association.html\">Buildroot Association</a>\n\t        in 2020.</div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\" style=\"height: 150px;\">\n\t\t<a href=\"http://www.logilin.fr\">\n\t\t  <img class=\"img-responsive center-block\" src=\"images/logilin-logo.png\"/>\n\t\t</a>\n\t      </div>\n\t      <div class=\"col-sm-12\" style=\"height: 150px;\">\n\t\t<a href=\"http://www.logilin.fr\">Logilin</a>\n\t\tfinancially sponsored the <a href=\"/association.html\">Buildroot Association</a>\n\t\tin 2020.</div>\n\t    </div>\n\t  </div>\n\t</div>\n      </div>\n    </div>\n    </div>\n\n  <div class=\"panel panel-primary\">\n    <div class=\"panel-heading\">Sponsor of the Buildroot.org domain</div>\n    <div class=\"panel-body\">\n      <div class=\"col-sm-6\">\n\t<p>The Buildroot community would like to thank\n          <a href=\"http://www.zillabit.com/\">Zillabit</a> for\n\t  donating the <b>buildroot.org</b> domain name and sponsoring\n\t  the registration fees 2009 - 2019.</p>\n       </div>\n      <div class=\"col-sm-6\">\n\t<a href=\"http://www.zillabit.com\">\n\t  <img class=\"img-responsive center-block\" src=\"images/zillabit-logo.png\"/>\n\t</a>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"panel panel-primary\">\n    <div class=\"panel-heading\">Past sponsors</div>\n    <div class=\"panel-body\">\n      <p>Throughout its history, the Buildroot project has been sponsored by\n\tvarious companies, that we would like to thank below.</p>\n\n      <div class=\"row\">\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\" style=\"height: 150px;\">\n\t\t<a href=\"https://www.smile.eu\">\n\t\t  <img class=\"img-responsive center-block\" src=\"images/smile-logo.png\"/>\n\t\t</a>\n\t      </div>\n\t      <div class=\"col-sm-12\" style=\"height: 400px;\">\n\t        <a href=\"https://www.smile.eu\">Smile</a> provided the meeting location for the\n\t\t<a href=\"https://elinux.org/Buildroot:DeveloperDaysELCE2019\">ELCE 2019</a>\n\t\tmeeting and sponsored the Buildroot Summer Camp that took place on July 1-5 2016\n\t\tin Toulouse, France. Smile sponsored the participation of Romain Naour and paid\n\t\tthe food expenses for the meeting participants.\n\t\tIn 2018, Smile sponsored of LLVM/Clang integration into Buildroot, see the final\n\t\t<a href=\"http://www.linuxembedded.fr/2018/07/llvmclang-integration-into-buildroot\">report</a>.\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\" style=\"height: 150px;\">\n\t\t<a href=\"http://www.mind.be\">\n\t\t  <img class=\"img-responsive center-block\" src=\"images/mind-logo.png\"/>\n\t\t</a>\n\t      </div>\n\t      <div class=\"col-sm-12\" style=\"height: 400px;\">\n\t\t<a href=\"http://www.mind.be\">Mind</a> sponsored\n\t\tfinancially the Buildroot Association for the ELCE\n\t\t2018 meeting, sponsored the dinner of the FOSDEM 2014,\n\t\t2015, 2016, 2017 and 2018 Developers Meeting\n\t\t(Brussels) and ELCE 2016 (Berlin) and 2017 (Prague),\n\t\tand the meeting room and the dinner for the ELCE 2014\n\t\tDevelopers Meeting (Düsseldorf).\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\" style=\"height: 150px;\">\n\t\t<p><a href=\"http://www.google.com\">\n\t\t    <img class=\"img-responsive center-block\" src=\"images/google-logo.png\"/></a></p>\n\t      </div>\n\t      <div class=\"col-sm-12\" style=\"height: 400px;\">\n\t\t<p><a href=\"http://www.google.com\">Google</a> provided\n\t\t  the logistics for the FOSDEM 2013, FOSDEM 2014,\n\t\t  FOSDEM 2015, FOSDEM 2016, FOSDEM 2017, FOSDEM 2018,\n\t\t  FOSDEM 2019 and FOSDEM 2020 Developer Days in Brussels,\n\t\t  Belgium.</p>\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n      </div>\n\n      <div class=\"row\">\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\" style=\"height: 400px;\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"https://www.amarulasolutions.com/\">\n\t\t    <img class=\"img-responsive center-block\" src=\"images/amarula-solutions-logo.png\"/></a></p>\n\t      </div>\n\t      <div class=\"col-sm-12\">\n\t\t<a href=\"https://www.amarulasolutions.com/\">Amarula\n\t\t  Solutions</a> sponsored the event by contributing\n\t\tfinancially to the <em>Buildroot Association</em>.\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\" style=\"height: 400px;\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"https://www.bootlin.com/\">\n\t\t    <img class=\"img-responsive center-block\" src=\"images/bootlin-logo.png\"/></a></p>\n\t      </div>\n\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"http://www.bootlin.com\">Bootlin</a>\n\t\t  sponsored financially the Buildroot Association for\n\t\t  the ELCE 2018 meeting, sponsored the meeting\n\t\t  location for the ELCE 2016 Developer Days in Berlin,\n\t\t  Germany, and the lunch for the ELCE 2009 Developer\n\t\t  Days in Grenoble, France.</p>\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\" style=\"height: 400px;\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\">\n\t\t<a href=\"http://www.logilin.fr\">\n\t\t  <img class=\"img-responsive center-block\" src=\"images/logilin-logo.png\"/>\n\t\t</a>\n\t      </div>\n\t      <div class=\"col-sm-12\">\n\t\t<a href=\"http://www.logilin.fr\">Logilin</a> sponsored\n\t\tthe ELCE 2018 Buildroot Developers meeting by\n\t\tcontributing financially to the <em>Buildroot\n\t\tAssociation</em>.\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n      </div>\n\n      <div class=\"row\">\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\">\n\t\t<a href=\"http://www.tkos.col.il\">\n\t\t  <img class=\"img-responsive center-block\" src=\"images/tkos-logo.png\"/>\n\t\t</a>\n\t      </div>\n\t      <div class=\"col-sm-12\">\n\t\t<a href=\"http://www.tkos.co.il\">Tk Open Systems</a>\n\t\tsponsored the ELCE 2018 Buildroot Developers meeting\n\t\tby contributing financially to the <em>Buildroot\n\t\tAssociation</em>.\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\" style=\"height: 100px;\">\n\t\t<a href=\"http://www.rockwellcollins.com/\">\n\t\t  <img class=\"img-responsive center-block\" src=\"images/rockwell-collins-logo.png\"/>\n\t\t</a>\n\t      </div>\n\t      <div class=\"col-sm-12\">\n\t\t<a href=\"http://www.rockwellcollins.com\">Rockwell\n\t\tCollins</a> sponsored the ELCE 2018 Buildroot\n\t\tDevelopers meeting by funding the social Saturday\n\t\tdinner for the participants.\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\" style=\"height: 100px;\">\n\t\t<a href=\"http://www.scaleway.com\">\n\t\t  <img class=\"img-responsive center-block\" src=\"images/scaleway-logo.png\"/>\n\t\t</a>\n\t      </div>\n\t      <div class=\"col-sm-12\">\n\t\t<a href=\"https://www.scaleway.com/\">Scaleway</a>\n\t\tsponsored the complete logistics to organize our Buildroot\n\t\tHackathon in Paris in March 2018: meeting room, Internet\n\t\tconnectivity and accommodation.\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n      </div>\n\n      <div class=\"row\">\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"http://www.imgtec.com/\">\n\t\t    <img class=\"img-responsive center-block\" src=\"images/imgtec-logo.png\"/></a></p>\n\t      </div>\n\t      <div class=\"col-sm-12\">\n\t\t<a href=\"http://www.imgtec.com/\">Imagination Technologies</a>\n\t\tsponsored the meeting room and dinner of the ELCE 2013\n\t\tDeveloper Days in Edinburgh, UK.\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"http://circuitco.com/\">\n\t\t    <img class=\"img-responsive center-block\" src=\"images/circuitco-logo.png\"/></a></p>\n\t      </div>\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"http://circuitco.com/\">CircuitCo</a> sponsored\n\t\t  several development boards for the Google Summer of Code\n\t\t  2013 project on Buildroot.</p>\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"http://boundarydevices.com/\">\n\t\t    <img class=\"img-responsive center-block\" src=\"images/boundary-devices-logo.png\"/></a></p>\n\t      </div>\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"http://boundarydevices.com/\">BoundaryDevices</a>\n\t\t  sponsored an i.MX6 development board for the Google Summer of\n\t\t  Code 2013 project on Buildroot.</p>\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n      </div>\n\n      <div class=\"row\">\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"http://www.fluendo.com/\">\n\t\t    <img class=\"img-responsive center-block\" src=\"images/fluendo-logo.png\"/></a></p>\n\t      </div>\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"http://www.fluendo.com/\">Fluendo</a> sponsored the\n\t\t  meeting room for the ELCE 2012 Developer Days in Barcelona\n\t\t  Spain.</p>\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"http://www.synopsys.com\">\n\t\t    <img class=\"img-responsive center-block\" src=\"images/synopsys-logo.png\"/></a></p>\n\t      </div>\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"http://www.synopsys.com\">Synopsys</a> sponsored the\n\t\t  dinner for the ELCE 2012 Developer Days in Barcelona, Spain.</p>\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-4\">\n\t  <div class=\"panel panel-default panel-sponsor\">\n\t    <div class=\"panel-body\">\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"http://www.calao-systems.com/\">\n\t\t    <img class=\"img-responsive center-block\" src=\"images/calao-logo.png\"/></a></p>\n\t      </div>\n\t      <div class=\"col-sm-12\">\n\t\t<p><a href=\"http://www.calao-systems.com/\">Calao Systems</a>\n\t\t  provided a a meeting room for the ELCE 2009 Developer Days\n\t\t  in Grenoble, France.</p>\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n      </div>\n\n    </div>\n  </div>\n</div>\n\n<!--#include file=\"footer.html\" -->\n"
  },
  {
    "path": "docs/website/support.html",
    "content": "<!--#include file=\"header.html\" -->\n\n<div class=\"container\">\n<div class=\"row nh\">\n<div class=\"col-lg-10 col-lg-offset-1 col-md-12 col-sm-12 col-xs-12\">\n\n  <div class=\"panel panel-primary\">\n    <div class=\"panel-heading\">Support</div>\n    <div class=\"panel-body\">\n      <p>You can get support for Buildroot through three main channels:</p>\n\n      <div class=\"row\">\n\t<div class=\"col-sm-12\">\n\t  <div class=\"panel panel-primary\">\n\t    <div class=\"panel-heading\">IRC</div>\n\t    <div class=\"panel-body\">\n\t      <div class=\"row\">\n\t\t<div class=\"col-sm-1\">\n\t\t  <img class=\"img-responsive\" src=\"images/irc.png\" style=\"max-width:50px; margin-bottom:10px;\">\n\t\t</div>\n\t\t<div class=\"col-sm-11\">\n\t\t  <p>The Buildroot IRC channel is <a href=\"irc://irc.oftc.net/#buildroot\">\n\t\t      #buildroot</a>, hosted on OFTC. If you do not have an IRC client, you can\n\t\t    use the <a href=\"https://www.oftc.net/WebChat/\">OFTC web interface</a>.\n\t\t    When asking for help on IRC, share relevant logs or pieces of code using a code\n\t\t    sharing website.</p>\n\n\t\t  <p>Note that due to excessive spamming on IRC, the channel can only be\n\t\t    joined if you are a registered user with\n\t\t    <a href=\"https://www.oftc.net/Services/\">OFTC NickServ</a>\n\t\t    service. Follow the instructions to register as a user with a password,\n\t\t    and then join the <code>#buildroot</code> channel.</p>\n\t\t</div>\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-12\">\n\t  <div class=\"panel panel-primary\">\n\t    <div class=\"panel-heading\">Mailing List Information</div>\n\t    <div class=\"panel-body\">\n\t      <div class=\"row\">\n\t\t<div class=\"col-sm-1\">\n\t\t  <img class=\"img-responsive\" src=\"images/email.png\" style=\"max-width:50px; margin-bottom:10px;\">\n\t\t</div>\n\t\t<div class=\"col-sm-11\">\n\t\t  <p>The mailing list is for discussion and\n\t\t    development.  You can subscribe by visiting\n\t\t    <a href=\"http://lists.buildroot.org/mailman/listinfo/buildroot\">this\n\t\t    page</a>.  Only subscribers to the Buildroot\n\t\t    mailing list are allowed to post to this\n\t\t    list. Archives are available\n\t\t    from <a href=\"/lists/buildroot/\">Mailman</a>\n\t\t    and <a href=\"https://lore.kernel.org/buildroot/\">lore.kernel.org</a>.\n\n\t\t  <h4>Search the List Archives</h4>\n\t\t  <p>Please search the mailing list archives before asking questions on the mailing\n\t\t    list, since there is a good chance someone else has asked the same question\n\t\t    before.</p>\n\n\t\t  <form method=\"get\" action=\"https://lore.kernel.org/buildroot/\">\n\t\t    <input type=\"text\" name=\"q\">\n\t\t    <button type=\"submit\" class=\"btn btn-default\">Submit</button>\n\t\t  </form>\n\t\t</div>\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n\n\t<div class=\"col-sm-12\">\n\t  <div class=\"panel panel-primary\">\n\t    <div class=\"panel-heading\">Bug Tracker</div>\n\t    <div class=\"panel-body\">\n\t      <div class=\"row\">\n\t\t<div class=\"col-sm-1\">\n\t\t  <img class=\"img-responsive\" src=\"images/bug-buddy.png\" style=\"max-width:50px; margin-bottom:10px;\">\n\t\t</div>\n\t\t<div class=\"col-sm-11\">\n\t\t  <p>If you think you found a bug in Buildroot, you can use the\n\t\t    <a href=\"https://bugs.buildroot.org/\">Bug Tracker</a> to post your bugs and/or\n\t\t    participate to find solutions to existing problems.</p>\n\n\t\t  <p>Note: patches are only accepted through the mailing list.</p>\n\t\t</div>\n\t      </div>\n\t    </div>\n\t  </div>\n\t</div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"panel panel-primary\">\n    <div class=\"panel-heading\">Commercial support</div>\n    <div class=\"panel-body\">\n      <p>In addition, the following companies are able to provide commercial\n\t support. Only companies heavily involved in Buildroot maintenance and\n\t community are listed here.</p>\n\n      <div class=\"row\">\n\t<div class=\"col-sm-12\">\n\t  <center>\n\t    <a href=\"https://bootlin.com/engineering/\">\n\t      <img src=\"images/bootlin-logo.png\" style=\"max-width:200px; margin-right:40px;\"/>\n\t    </a>\n\t    <a href=\"https://mind.be/services/buildroot.html\">\n\t      <img src=\"images/mind-logo.png\" style=\"max-width:200px; margin-right:40px;\"/>\n\t    </a>\n\t    <a href=\"https://www.smile.eu/en/offers/embedded-iot\">\n\t      <img src=\"images/smile-logo.png\" style=\"max-width:200px; margin-right:40px;\"/>\n\t    </a>\n\t  </center>\n\t</div>\n      </div>\n    </div>\n  </div>\n\n</div><!--/.col-sm-10 -->\n</div><!--/.row -->\n</div>\n\n<!--#include file=\"footer.html\" -->\n"
  },
  {
    "path": "fs/Config.in",
    "content": "menu \"Filesystem images\"\n\nsource \"fs/axfs/Config.in\"\nsource \"fs/btrfs/Config.in\"\nsource \"fs/cloop/Config.in\"\nsource \"fs/cpio/Config.in\"\nsource \"fs/cramfs/Config.in\"\nsource \"fs/erofs/Config.in\"\nsource \"fs/ext2/Config.in\"\nsource \"fs/f2fs/Config.in\"\nsource \"fs/initramfs/Config.in\"\nsource \"fs/iso9660/Config.in\"\nsource \"fs/jffs2/Config.in\"\nsource \"fs/oci/Config.in\"\nsource \"fs/romfs/Config.in\"\nsource \"fs/squashfs/Config.in\"\nsource \"fs/tar/Config.in\"\nsource \"fs/ubi/Config.in\"\nsource \"fs/ubifs/Config.in\"\nsource \"fs/yaffs2/Config.in\"\n\nendmenu\n"
  },
  {
    "path": "fs/axfs/Config.in",
    "content": "config BR2_TARGET_ROOTFS_AXFS\n\tbool \"axfs root filesystem\"\n\thelp\n\t  The Advanced XIP File System is a Linux kernel filesystem\n\t  driver that enables files to be executed directly from flash\n\t  or ROM memory rather than being copied into RAM. It has the\n\t  ability to store individual *pages* in a file\n\t  uncompressed/XIP or compressed/Demand Paged.\n\n\t  So far, the only supported mode is 'XIP all', so all the\n\t  files that have the execute attribute set will be XIP'ed.\n\n\t  At the moment, the FS is not supported in Linux mainline\n\t  (v4.3-rc5), so the kernel has to be built with the axfs\n\t  patches to be able to read it. Patches can be found at:\n\n\t  https://github.com/jaredeh/axfs\n"
  },
  {
    "path": "fs/axfs/axfs.mk",
    "content": "################################################################################\n#\n# Build the axfs root filesystem image\n#\n################################################################################\n\nROOTFS_AXFS_DEPENDENCIES = host-axfsutils\n\ndefine ROOTFS_AXFS_CMD\n\t$(HOST_DIR)/bin/mkfs.axfs -s -a $(TARGET_DIR) $@\nendef\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/btrfs/Config.in",
    "content": "config BR2_TARGET_ROOTFS_BTRFS\n\tbool \"btrfs root filesystem\"\n\tselect BR2_PACKAGE_HOST_BTRFS_PROGS\n\thelp\n\t  Build a btrfs root filesystem. If you enable this option, you\n\t  probably want to enable the btrfs-progs package too.\n\nif BR2_TARGET_ROOTFS_BTRFS\n\nconfig BR2_TARGET_ROOTFS_BTRFS_LABEL\n\tstring \"filesystem label\"\n\nconfig BR2_TARGET_ROOTFS_BTRFS_SIZE\n\tstring \"filesystem size\"\n\tdefault \"100m\"\n\thelp\n\t  The size of the filesystem image in bytes.\n\t  Suffix with k, m, g or t for power-of-two kilo-, mega-, giga-\n\t  or terabytes.\n\nconfig BR2_TARGET_ROOTFS_BTRFS_SIZE_SECTOR\n\tstring \"sector size\"\n\tdefault \"4096\"\n\thelp\n\t  This value should be set to the page size in bytes. The\n\t  default value of 4096 is the the most common page size for\n\t  most systems.  If the sectorsize differs from the page size,\n\t  the created filesystem may not be mountable by the kernel.\n\t  Therefore it is recommended to leave this value at\n\t  4096. Unless you know that your kernel uses a different page\n\t  size.  Suffix with k for power-of-two kilobytes.\n\nconfig BR2_TARGET_ROOTFS_BTRFS_SIZE_NODE\n\tstring \"btree node size\"\n\tdefault \"16384\"\n\thelp\n\t  The tree block size in which btrfs stores metadata in bytes.\n\t  This must be a multiple of the sectorsize, but not larger\n\t  than 64KiB (65536).\n\t  Suffix with k for power-of-two kilobytes.\n\nconfig BR2_TARGET_ROOTFS_BTRFS_FEATURES\n\tstring \"Filesystem Features\"\n\thelp\n\t  A comma separated string of features that can be enabled\n\t  during creation time.\n\t  For a list of available options, use:\n\t    `.../host/bin/mkfs.btrfs -O list-all`\n\nendif # BR2_TARGET_ROOTFS_BTRFS\n"
  },
  {
    "path": "fs/btrfs/btrfs.mk",
    "content": "################################################################################\n#\n# Build the btrfs root filesystem image\n#\n################################################################################\n\nBTRFS_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_SIZE))\nifeq ($(BR2_TARGET_ROOTFS_BTRFS)-$(BTRFS_SIZE),y-)\n$(error BR2_TARGET_ROOTFS_BTRFS_SIZE cannot be empty)\nendif\n\nBTRFS_SIZE_NODE = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_SIZE_NODE))\nBTRFS_SIZE_SECTOR = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_SIZE_SECTOR))\nBTRFS_FEATURES = $(call qstrip,$(BR2_TARGET_ROOTFS_BTRFS_FEATURES))\n# qstrip results in stripping consecutive spaces into a single one. So the\n# variable is not qstrip-ed to preserve the integrity of the string value.\nBTRFS_LABEL = $(subst \",,$(BR2_TARGET_ROOTFS_BTRFS_LABEL))\n# \")\n\nBTRFS_OPTS = \\\n\t-f \\\n\t-r '$(TARGET_DIR)' \\\n\t-L '$(BTRFS_LABEL)' \\\n\t--byte-count '$(BTRFS_SIZE)' \\\n\t$(if $(BTRFS_SIZE_NODE),--nodesize '$(BTRFS_SIZE_NODE)') \\\n\t$(if $(BTRFS_SIZE_SECTOR),--sectorsize '$(BTRFS_SIZE_SECTOR)') \\\n\t$(if $(BTRFS_FEATURES),--features '$(BTRFS_FEATURES)')\n\nROOTFS_BTRFS_DEPENDENCIES = host-btrfs-progs\n\ndefine ROOTFS_BTRFS_CMD\n\t$(RM) -f $@\n\t$(HOST_DIR)/bin/mkfs.btrfs $(BTRFS_OPTS) $@\nendef\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/cloop/Config.in",
    "content": "config BR2_TARGET_ROOTFS_CLOOP\n\tbool \"cloop root filesystem for the target device\"\n\thelp\n\t  Build a cloop root filesystem\n\n\t  cloop is a Linux kernel module that enables compressed\n\t  loopback filesystem support. With it you can mount a\n\t  compressed filesystem like a block device and seamlessly\n\t  decompress its data while accessing it.  The majority of the\n\t  software on an LNX-BBC is accessed in this fashion.\n"
  },
  {
    "path": "fs/cloop/cloop.mk",
    "content": "################################################################################\n#\n# Build the compressed loop root filesystem image\n#\n################################################################################\n\nROOTFS_CLOOP_DEPENDENCIES = host-cloop host-cdrkit\n\ndefine ROOTFS_CLOOP_CMD\n\t$(HOST_DIR)/bin/genisoimage -r $(TARGET_DIR) | \\\n\t\t$(HOST_DIR)/bin/create_compressed_fs - 65536 > $@\nendef\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/common.mk",
    "content": "#\n# Macro that builds the needed Makefile target to create a root\n# filesystem image.\n#\n# The following variable must be defined before calling this macro\n#\n#  ROOTFS_$(FSTYPE)_CMD, the command that generates the root\n#  filesystem image. A single command is allowed. The filename of the\n#  filesystem image that it must generate is $$@.\n#\n# The following variables can optionaly be defined\n#\n#  ROOTFS_$(FSTYPE)_DEPENDENCIES, the list of dependencies needed to\n#  build the root filesystem (usually host tools)\n#\n#  ROOTFS_$(FSTYPE)_PRE_GEN_HOOKS, a list of hooks to call before\n#  generating the filesystem image\n#\n#  ROOTFS_$(FSTYPE)_POST_GEN_HOOKS, a list of hooks to call after\n#  generating the filesystem image\n#\n# In terms of configuration option, this macro assumes that the\n# BR2_TARGET_ROOTFS_$(FSTYPE) config option allows to enable/disable\n# the generation of a filesystem image of a particular type. If\n# the configuration options BR2_TARGET_ROOTFS_$(FSTYPE)_GZIP,\n# BR2_TARGET_ROOTFS_$(FSTYPE)_BZIP2 or\n# BR2_TARGET_ROOTFS_$(FSTYPE)_LZMA exist and are enabled, then the\n# macro will automatically generate a compressed filesystem image.\n\nFS_DIR = $(BUILD_DIR)/buildroot-fs\nROOTFS_DEVICE_TABLES = $(call qstrip,$(BR2_ROOTFS_DEVICE_TABLE) \\\n\t$(BR2_ROOTFS_STATIC_DEVICE_TABLE))\n\nROOTFS_USERS_TABLES = $(call qstrip,$(BR2_ROOTFS_USERS_TABLES))\n\nROOTFS_FULL_DEVICES_TABLE = $(FS_DIR)/full_devices_table.txt\nROOTFS_FULL_USERS_TABLE = $(FS_DIR)/full_users_table.txt\n\nROOTFS_COMMON_NAME = rootfs-common\nROOTFS_COMMON_TYPE = rootfs\nROOTFS_COMMON_DEPENDENCIES = \\\n\thost-fakeroot host-makedevs \\\n\t$(BR2_TAR_HOST_DEPENDENCY) \\\n\t$(if $(PACKAGES_USERS)$(ROOTFS_USERS_TABLES),host-mkpasswd)\n\nifeq ($(BR2_REPRODUCIBLE),y)\ndefine ROOTFS_REPRODUCIBLE\n\tfind $(TARGET_DIR) -print0 | xargs -0 -r touch -hd @$(SOURCE_DATE_EPOCH)\nendef\nendif\n\nifeq ($(BR2_PACKAGE_REFPOLICY),y)\ndefine ROOTFS_SELINUX\n\t$(HOST_DIR)/sbin/setfiles -m -r $(TARGET_DIR) \\\n\t\t-c $(TARGET_DIR)/etc/selinux/targeted/policy/policy.$(BR2_PACKAGE_LIBSEPOL_POLICY_VERSION) \\\n\t\t$(TARGET_DIR)/etc/selinux/targeted/contexts/files/file_contexts \\\n\t\t$(TARGET_DIR)\nendef\nROOTFS_COMMON_DEPENDENCIES += host-policycoreutils\nendif\n\nROOTFS_COMMON_FINAL_RECURSIVE_DEPENDENCIES = $(sort \\\n\t$(if $(filter undefined,$(origin ROOTFS_COMMON_FINAL_RECURSIVE_DEPENDENCIES__X)), \\\n\t\t$(eval ROOTFS_COMMON_FINAL_RECURSIVE_DEPENDENCIES__X := \\\n\t\t\t$(foreach p, \\\n\t\t\t\t$(ROOTFS_COMMON_DEPENDENCIES), \\\n\t\t\t\t$(p) \\\n\t\t\t\t$($(call UPPERCASE,$(p))_FINAL_RECURSIVE_DEPENDENCIES) \\\n\t\t\t) \\\n\t\t) \\\n\t) \\\n\t$(ROOTFS_COMMON_FINAL_RECURSIVE_DEPENDENCIES__X))\n\n.PHONY: rootfs-common\nrootfs-common: $(ROOTFS_COMMON_DEPENDENCIES) target-finalize\n\t@$(call MESSAGE,\"Generating root filesystems common tables\")\n\trm -rf $(FS_DIR)\n\tmkdir -p $(FS_DIR)\n\n\t$(call PRINTF,$(PACKAGES_USERS)) >> $(ROOTFS_FULL_USERS_TABLE)\nifneq ($(ROOTFS_USERS_TABLES),)\n\tcat $(ROOTFS_USERS_TABLES) >> $(ROOTFS_FULL_USERS_TABLE)\nendif\n\n\t$(call PRINTF,$(PACKAGES_PERMISSIONS_TABLE)) > $(ROOTFS_FULL_DEVICES_TABLE)\nifneq ($(ROOTFS_DEVICE_TABLES),)\n\tcat $(ROOTFS_DEVICE_TABLES) >> $(ROOTFS_FULL_DEVICES_TABLE)\nendif\nifeq ($(BR2_ROOTFS_DEVICE_CREATION_STATIC),y)\n\t$(call PRINTF,$(PACKAGES_DEVICES_TABLE)) >> $(ROOTFS_FULL_DEVICES_TABLE)\nendif\n\nrootfs-common-show-depends:\n\t@echo $(ROOTFS_COMMON_DEPENDENCIES)\n\n.PHONY: rootfs-common-show-info\nrootfs-common-show-info:\n\t@:\n\t$(info $(call clean-json,{ $(call json-info,ROOTFS_COMMON) }))\n\n# Since this function will be called from within an $(eval ...)\n# all variable references except the arguments must be $$-quoted.\ndefine inner-rootfs\n\nROOTFS_$(2)_NAME = rootfs-$(1)\nROOTFS_$(2)_TYPE = rootfs\nROOTFS_$(2)_IMAGE_NAME ?= rootfs.$(1)\nROOTFS_$(2)_FINAL_IMAGE_NAME = $$(strip $$(ROOTFS_$(2)_IMAGE_NAME))\nROOTFS_$(2)_DIR = $$(FS_DIR)/$(1)\nROOTFS_$(2)_TARGET_DIR = $$(ROOTFS_$(2)_DIR)/target\n\nROOTFS_$(2)_DEPENDENCIES += rootfs-common\n\nROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES = $$(sort \\\n\t$$(if $$(filter undefined,$$(origin ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES__X)), \\\n\t\t$$(eval ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES__X := \\\n\t\t\t$$(foreach p, \\\n\t\t\t\t$$(ROOTFS_$(2)_DEPENDENCIES), \\\n\t\t\t\t$$(p) \\\n\t\t\t\t$$($$(call UPPERCASE,$$(p))_FINAL_RECURSIVE_DEPENDENCIES) \\\n\t\t\t) \\\n\t\t) \\\n\t) \\\n\t$$(ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES__X))\n\nifeq ($$(BR2_TARGET_ROOTFS_$(2)_GZIP),y)\nROOTFS_$(2)_COMPRESS_EXT = .gz\nROOTFS_$(2)_COMPRESS_CMD = gzip -9 -c -n\nendif\nifeq ($$(BR2_TARGET_ROOTFS_$(2)_BZIP2),y)\nROOTFS_$(2)_COMPRESS_EXT = .bz2\nROOTFS_$(2)_COMPRESS_CMD = bzip2 -9 -c\nendif\nifeq ($$(BR2_TARGET_ROOTFS_$(2)_LZMA),y)\nROOTFS_$(2)_DEPENDENCIES += host-lzma\nROOTFS_$(2)_COMPRESS_EXT = .lzma\nROOTFS_$(2)_COMPRESS_CMD = $$(LZMA) -9 -c\nendif\nifeq ($$(BR2_TARGET_ROOTFS_$(2)_LZ4),y)\nROOTFS_$(2)_DEPENDENCIES += host-lz4\nROOTFS_$(2)_COMPRESS_EXT = .lz4\nROOTFS_$(2)_COMPRESS_CMD = lz4 -l -9 -c\nendif\nifeq ($$(BR2_TARGET_ROOTFS_$(2)_LZO),y)\nROOTFS_$(2)_DEPENDENCIES += host-lzop\nROOTFS_$(2)_COMPRESS_EXT = .lzo\nROOTFS_$(2)_COMPRESS_CMD = $$(LZOP) -9 -c\nendif\nifeq ($$(BR2_TARGET_ROOTFS_$(2)_XZ),y)\nROOTFS_$(2)_DEPENDENCIES += host-xz\nROOTFS_$(2)_COMPRESS_EXT = .xz\nROOTFS_$(2)_COMPRESS_CMD = xz -9 -C crc32 -c\nifeq ($(BR2_REPRODUCIBLE),)\nROOTFS_$(2)_COMPRESS_CMD += -T $(PARALLEL_JOBS)\nendif\nendif\nifeq ($(BR2_TARGET_ROOTFS_$(2)_ZSTD),y)\nROOTFS_$(2)_DEPENDENCIES += host-zstd\nROOTFS_$(2)_COMPRESS_EXT = .zst\nROOTFS_$(2)_COMPRESS_CMD = zstd -19 -z -f -T$(PARALLEL_JOBS)\nendif\n\n$$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): ROOTFS=$(2)\n$$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): FAKEROOT_SCRIPT=$$(ROOTFS_$(2)_DIR)/fakeroot\n$$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME): $$(ROOTFS_$(2)_DEPENDENCIES)\n\t@$$(call MESSAGE,\"Generating filesystem image $$(ROOTFS_$(2)_FINAL_IMAGE_NAME)\")\n\tmkdir -p $$(@D)\n\trm -rf $$(ROOTFS_$(2)_DIR)\n\tmkdir -p $$(ROOTFS_$(2)_DIR)\n\trsync -auH \\\n\t\t--exclude=/$$(notdir $$(TARGET_DIR_WARNING_FILE)) \\\n\t\t$$(BASE_TARGET_DIR)/ \\\n\t\t$$(TARGET_DIR)\n\n\techo '#!/bin/sh' > $$(FAKEROOT_SCRIPT)\n\techo \"set -e\" >> $$(FAKEROOT_SCRIPT)\n\n\techo \"chown -h -R 0:0 $$(TARGET_DIR)\" >> $$(FAKEROOT_SCRIPT)\n\tPATH=$$(BR_PATH) $$(TOPDIR)/support/scripts/mkusers $$(ROOTFS_FULL_USERS_TABLE) $$(TARGET_DIR) >> $$(FAKEROOT_SCRIPT)\n\techo \"$$(HOST_DIR)/bin/makedevs -d $$(ROOTFS_FULL_DEVICES_TABLE) $$(TARGET_DIR)\" >> $$(FAKEROOT_SCRIPT)\n\t$$(foreach hook,$$(ROOTFS_PRE_CMD_HOOKS),\\\n\t\t$$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep))\n\t$$(foreach s,$$(call qstrip,$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT)),\\\n\t\techo \"echo '$$(TERM_BOLD)>>>   Executing fakeroot script $$(s)$$(TERM_RESET)'\" >> $$(FAKEROOT_SCRIPT); \\\n\t\techo $$(EXTRA_ENV) $$(s) $$(TARGET_DIR) $$(BR2_ROOTFS_POST_SCRIPT_ARGS) >> $$(FAKEROOT_SCRIPT)$$(sep))\n\n\t$$(foreach hook,$$(ROOTFS_$(2)_PRE_GEN_HOOKS),\\\n\t\t$$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep))\n\t$$(call PRINTF,$$(ROOTFS_REPRODUCIBLE)) >> $$(FAKEROOT_SCRIPT)\n\t$$(call PRINTF,$$(ROOTFS_SELINUX)) >> $$(FAKEROOT_SCRIPT)\n\t$$(call PRINTF,$$(ROOTFS_$(2)_CMD)) >> $$(FAKEROOT_SCRIPT)\n\tchmod a+x $$(FAKEROOT_SCRIPT)\n\tPATH=$$(BR_PATH) FAKEROOTDONTTRYCHOWN=1 $$(HOST_DIR)/bin/fakeroot -- $$(FAKEROOT_SCRIPT)\n\t$(Q)rm -rf $$(TARGET_DIR)\nifneq ($$(ROOTFS_$(2)_COMPRESS_CMD),)\n\tPATH=$$(BR_PATH) $$(ROOTFS_$(2)_COMPRESS_CMD) $$@ > $$@$$(ROOTFS_$(2)_COMPRESS_EXT)\nendif\n\t$$(foreach hook,$$(ROOTFS_$(2)_POST_GEN_HOOKS),$$(call $$(hook))$$(sep))\n\nrootfs-$(1)-show-depends:\n\t@echo $$(ROOTFS_$(2)_DEPENDENCIES)\n\nrootfs-$(1)-show-info:\n\t@:\n\t$$(info $$(call clean-json,{ $$(call json-info,ROOTFS_$(2)) }))\n\nrootfs-$(1): $$(BINARIES_DIR)/$$(ROOTFS_$(2)_FINAL_IMAGE_NAME)\n\n.PHONY: rootfs-$(1) rootfs-$(1)-show-depends rootfs-$(1)-show-info\n\nifeq ($$(BR2_TARGET_ROOTFS_$(2)),y)\nTARGETS_ROOTFS += rootfs-$(1)\nPACKAGES += $$(filter-out rootfs-%,$$(ROOTFS_$(2)_FINAL_RECURSIVE_DEPENDENCIES))\nendif\n\n# Check for legacy POST_TARGETS rules\nifneq ($$(ROOTFS_$(2)_POST_TARGETS),)\n$$(error Filesystem $(1) uses post-target rules, which are no longer supported.\\\n\tUpdate $(1) to use post-gen hooks instead)\nendif\n\nendef\n\n# $(pkgname) also works well to return the filesystem name\nrootfs = $(call inner-rootfs,$(pkgname),$(call UPPERCASE,$(pkgname)))\n\ninclude $(sort $(wildcard fs/*/*.mk))\n"
  },
  {
    "path": "fs/cpio/Config.in",
    "content": "config BR2_TARGET_ROOTFS_CPIO\n\tbool \"cpio the root filesystem (for use as an initial RAM filesystem)\"\n\thelp\n\t  Build a cpio archive of the root filesystem. This is typically\n\t  used for an initial RAM filesystem that is passed to the\n\t  kernel by the bootloader.\n\nif BR2_TARGET_ROOTFS_CPIO\n\nchoice\n\tprompt \"Compression method\"\n\tdefault BR2_TARGET_ROOTFS_CPIO_NONE\n\thelp\n\t  Select compressor for cpio filesystem of the root filesystem.\n\t  If you use the cpio archive as an initial RAM filesystem, make\n\t  sure the kernel contains the decompression algorithm selected\n\t  here.\n\nconfig BR2_TARGET_ROOTFS_CPIO_NONE\n\tbool \"no compression\"\n\thelp\n\t  Do not compress the cpio filesystem.\n\nconfig BR2_TARGET_ROOTFS_CPIO_GZIP\n\tbool \"gzip\"\n\thelp\n\t  Do compress the cpio filesystem with gzip.\n\nconfig BR2_TARGET_ROOTFS_CPIO_BZIP2\n\tbool \"bzip2\"\n\thelp\n\t  Do compress the cpio filesystem with bzip2.\n\nconfig BR2_TARGET_ROOTFS_CPIO_LZ4\n\tbool \"lz4\"\n\thelp\n\t  Do compress the cpio filesystem with lz4.\n\nconfig BR2_TARGET_ROOTFS_CPIO_LZMA\n\tbool \"lzma\"\n\thelp\n\t  Do compress the cpio filesystem with lzma.\n\nconfig BR2_TARGET_ROOTFS_CPIO_LZO\n\tbool \"lzo\"\n\thelp\n\t  Do compress the cpio filesystem with lzop.\n\nconfig BR2_TARGET_ROOTFS_CPIO_XZ\n\tbool \"xz\"\n\thelp\n\t  Do compress the cpio filesystem with xz.\n\nconfig BR2_TARGET_ROOTFS_CPIO_ZSTD\n\tbool \"zstd\"\n\thelp\n\t  Do compress the cpio filesystem with zstd.\n\nendchoice\n\nconfig BR2_TARGET_ROOTFS_CPIO_UIMAGE\n\tbool \"Create U-Boot image of the root filesystem\"\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS\n\thelp\n\t  Add a U-Boot header to the cpio root filesystem. This allows\n\t  the initramfs to be loaded with the bootm command in U-Boot.\n\n\t  The U-Boot image will be called rootfs.cpio.uboot\n\nendif # BR2_TARGET_ROOTFS_CPIO\n"
  },
  {
    "path": "fs/cpio/cpio.mk",
    "content": "################################################################################\n#\n# cpio to archive target filesystem\n#\n################################################################################\n\nifeq ($(BR2_ROOTFS_DEVICE_CREATION_STATIC),y)\n\ndefine ROOTFS_CPIO_ADD_INIT\n\tif [ ! -e $(TARGET_DIR)/init ]; then \\\n\t\tln -sf sbin/init $(TARGET_DIR)/init; \\\n\tfi\nendef\n\nelse\n# devtmpfs does not get automounted when initramfs is used.\n# Add a pre-init script to mount it before running init\n# We must have /dev/console very early, even before /init runs,\n# for stdin/stdout/stderr\ndefine ROOTFS_CPIO_ADD_INIT\n\tif [ ! -e $(TARGET_DIR)/init ]; then \\\n\t\t$(INSTALL) -m 0755 fs/cpio/init $(TARGET_DIR)/init; \\\n\tfi\n\tmkdir -p $(TARGET_DIR)/dev\n\tmknod -m 0622 $(TARGET_DIR)/dev/console c 5 1\nendef\n\nendif # BR2_ROOTFS_DEVICE_CREATION_STATIC\n\nROOTFS_CPIO_PRE_GEN_HOOKS += ROOTFS_CPIO_ADD_INIT\n\n# --reproducible option was introduced in cpio v2.12, which may not be\n# available in some old distributions, so we build host-cpio\nifeq ($(BR2_REPRODUCIBLE),y)\nROOTFS_CPIO_DEPENDENCIES += host-cpio\nROOTFS_CPIO_OPTS += --reproducible\nendif\n\ndefine ROOTFS_CPIO_CMD\n\tcd $(TARGET_DIR) && \\\n\tfind . \\\n\t| LC_ALL=C sort \\\n\t| cpio $(ROOTFS_CPIO_OPTS) --quiet -o -H newc \\\n\t> $@\nendef\n\nifeq ($(BR2_TARGET_ROOTFS_CPIO_UIMAGE),y)\nROOTFS_CPIO_DEPENDENCIES += host-uboot-tools\ndefine ROOTFS_CPIO_UBOOT_MKIMAGE\n\t$(MKIMAGE) -A $(MKIMAGE_ARCH) -T ramdisk \\\n\t\t-C none -d $@$(ROOTFS_CPIO_COMPRESS_EXT) $@.uboot\nendef\nROOTFS_CPIO_POST_GEN_HOOKS += ROOTFS_CPIO_UBOOT_MKIMAGE\nendif\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/cpio/init",
    "content": "#!/bin/sh\n# devtmpfs does not get automounted for initramfs\n/bin/mount -t devtmpfs devtmpfs /dev\n\n# use the /dev/console device node from devtmpfs if possible to not\n# confuse glibc's ttyname_r().\n# This may fail (E.G. booted with console=), and errors from exec will\n# terminate the shell, so use a subshell for the test\nif (exec 0</dev/console) 2>/dev/null; then\n    exec 0</dev/console\n    exec 1>/dev/console\n    exec 2>/dev/console\nfi\n\nexec /sbin/init \"$@\"\n"
  },
  {
    "path": "fs/cramfs/Config.in",
    "content": "config BR2_TARGET_ROOTFS_CRAMFS\n\tbool \"cramfs root filesystem\"\n\thelp\n\t  Build a cramfs root filesystem\n\n\t  https://github.com/npitre/cramfs-tools\n\nif BR2_TARGET_ROOTFS_CRAMFS\n\nconfig BR2_TARGET_ROOTFS_CRAMFS_XIP\n\tbool \"Support XIP of all ELF files\"\n\thelp\n\t  For ELF files, uncompressed and properly aligned data blocks\n\t  will be automatically be mapped directly into user space\n\t  whenever possible providing eXecute-In-Place (XIP) from ROM\n\t  of read-only segments. Data segments mapped read-write\n\t  (hence they have to be copied to RAM) may still be\n\t  compressed in the cramfs image in the same file along with\n\t  non compressed read-only segments. Both MMU and no-MMU\n\t  systems are supported. This is particularly handy for tiny\n\t  embedded systems with very tight memory constraints.\n\n\t  The CRAMFS_MTD Kconfig option must also be enabled in a\n\t  4.15+ kernel.\n\nendif # BR2_TARGET_ROOTFS_CRAMFS\n"
  },
  {
    "path": "fs/cramfs/cramfs.mk",
    "content": "################################################################################\n#\n# Build the cramfs root filesystem image\n#\n################################################################################\n\nifeq ($(BR2_ENDIAN),\"BIG\")\nCRAMFS_OPTS = -B\nelse\nCRAMFS_OPTS = -L\nendif\n\nifeq ($(BR2_TARGET_ROOTFS_CRAMFS_XIP),y)\nifeq ($(BR2_USE_MMU),y)\nCRAMFS_OPTS += -X -X\nelse\nCRAMFS_OPTS += -X\nendif\nendif\n\ndefine ROOTFS_CRAMFS_CMD\n\t$(HOST_DIR)/bin/mkcramfs $(CRAMFS_OPTS) $(TARGET_DIR) $@\nendef\n\nROOTFS_CRAMFS_DEPENDENCIES = host-cramfs\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/erofs/Config.in",
    "content": "config BR2_TARGET_ROOTFS_EROFS\n\tbool \"erofs root filesystem\"\n\tselect BR2_PACKAGE_HOST_EROFS_UTILS\n\thelp\n\t  Build a EROFS root filesystem.\n\nif BR2_TARGET_ROOTFS_EROFS\n\nconfig BR2_TARGET_ROOTFS_EROFS_LZ4HC\n\tbool \"lz4hc compression\"\n\thelp\n\t  Use lz4 high-compression to compress data in the filesystem.\n\nconfig BR2_TARGET_ROOTFS_EROFS_PCLUSTERSIZE\n\tint \"pcluster size\"\n\tdefault 0\n\thelp\n\t  Specify the maximum size of physical cluster in bytes, as a\n\t  multiple of 4KiB, for the big pcluster feature in order to\n\t  get much better compression ratios (thus better sequential\n\t  read performance for common storage devices), which has been\n\t  introduced since Linux 5.13.\n\nendif # BR2_TARGET_ROOTFS_EROFS\n"
  },
  {
    "path": "fs/erofs/erofs.mk",
    "content": "################################################################################\n#\n# Build the EROFS root filesystem image\n#\n################################################################################\n\nROOTFS_EROFS_DEPENDENCIES = host-erofs-utils\n\nifeq ($(BR2_TARGET_ROOTFS_EROFS_LZ4HC),y)\nROOTFS_EROFS_ARGS += -zlz4hc\nendif\n\nifneq ($(BR2_TARGET_ROOTFS_EROFS_PCLUSTERSIZE),0)\nROOTFS_EROFS_ARGS += -C$(strip $(BR2_TARGET_ROOTFS_EROFS_PCLUSTERSIZE))\nendif\n\ndefine ROOTFS_EROFS_CMD\n\t$(HOST_DIR)/bin/mkfs.erofs $(ROOTFS_EROFS_ARGS) $@ $(TARGET_DIR)\nendef\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/ext2/Config.in",
    "content": "config BR2_TARGET_ROOTFS_EXT2\n\tbool \"ext2/3/4 root filesystem\"\n\tselect BR2_PACKAGE_HOST_E2FSPROGS\n\thelp\n\t  Build an ext2/3/4 root filesystem\n\nif BR2_TARGET_ROOTFS_EXT2\n\nconfig BR2_TARGET_ROOTFS_EXT2_2\n\tbool\n\nchoice\n\tbool \"ext2/3/4 variant\"\n\tdefault BR2_TARGET_ROOTFS_EXT2_2r1\n\nconfig BR2_TARGET_ROOTFS_EXT2_2r0\n\tbool \"ext2 (rev0)\"\n\tselect BR2_TARGET_ROOTFS_EXT2_2\n\nconfig BR2_TARGET_ROOTFS_EXT2_2r1\n\tbool \"ext2 (rev1)\"\n\tselect BR2_TARGET_ROOTFS_EXT2_2\n\nconfig BR2_TARGET_ROOTFS_EXT2_3\n\tbool \"ext3\"\n\nconfig BR2_TARGET_ROOTFS_EXT2_4\n\tbool \"ext4\"\n\nendchoice\n\nconfig BR2_TARGET_ROOTFS_EXT2_GEN\n\tint\n\tdefault 2 if BR2_TARGET_ROOTFS_EXT2_2\n\tdefault 3 if BR2_TARGET_ROOTFS_EXT2_3\n\tdefault 4 if BR2_TARGET_ROOTFS_EXT2_4\n\n# All ext generations are revision 1, except ext2r0, which is revision 0\nconfig BR2_TARGET_ROOTFS_EXT2_REV\n\tint\n\tdefault 0   if BR2_TARGET_ROOTFS_EXT2_2r0\n\tdefault 1   if !BR2_TARGET_ROOTFS_EXT2_2r0\n\nconfig BR2_TARGET_ROOTFS_EXT2_LABEL\n\tstring \"filesystem label\"\n\tdefault \"rootfs\"\n\nconfig BR2_TARGET_ROOTFS_EXT2_SIZE\n\tstring \"exact size\"\n\tdefault BR2_TARGET_ROOTFS_EXT2_BLOCKS if BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP # legacy 2017.08\n\tdefault \"60M\"\n\thelp\n\t  The size of the filesystem image. If it does not have a\n\t  suffix, it is interpreted as power-of-two kilobytes. If it is\n\t  suffixed by 'k', 'm', 'g', 't' (either upper-case or\n\t  lower-case), then it is interpreted in power-of-two kilobytes,\n\t  megabytes, gigabytes, terabytes, etc.\n\nconfig BR2_TARGET_ROOTFS_EXT2_INODES\n\tint \"exact number of inodes (leave at 0 for auto calculation)\"\n\tdefault 0\n\nconfig BR2_TARGET_ROOTFS_EXT2_RESBLKS\n\tint \"reserved blocks percentage\"\n\tdefault 5\n\thelp\n\t  The number of blocks on the filesystem (as a percentage of the\n\t  total number of blocks), that are reserved for use by root.\n\t  Traditionally, this has been 5%, and all ext-related tools\n\t  still default to reserving 5% when creating a new ext\n\t  filesystem.\n\nconfig BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS\n\tstring \"additional mke2fs options\"\n\tdefault \"-O ^64bit\"\n\thelp\n\t  Specify a space-separated list of mke2fs options, including\n\t  any ext2/3/4 filesystem features.\n\n\t  For more information about the mke2fs options, see the manual\n\t  page mke2fs(8).\n\n\t  For more information about the ext2/3/4 features which can be\n\t  set, see the manual page ext4(5).\n\n\t  The default is \"-O ^64bit\", i.e. disable 64-bit filesystem\n\t  support. This default value has been chosen because U-Boot\n\t  versions before 2017.02 don't support this filesystem\n\t  option: using it may make the filesystem unreadable by\n\t  U-Boot.\n\nchoice\n\tprompt \"Compression method\"\n\tdefault BR2_TARGET_ROOTFS_EXT2_NONE\n\thelp\n\t  Select compressor for ext2/3/4 filesystem of the root\n\t  filesystem\n\nconfig BR2_TARGET_ROOTFS_EXT2_NONE\n\tbool \"no compression\"\n\thelp\n\t  Do not compress the ext2/3/4 filesystem.\n\nconfig BR2_TARGET_ROOTFS_EXT2_GZIP\n\tbool \"gzip\"\n\thelp\n\t  Do compress the ext2/3/4 filesystem with gzip.\n\nconfig BR2_TARGET_ROOTFS_EXT2_BZIP2\n\tbool \"bzip2\"\n\thelp\n\t  Do compress the ext2/3/4 filesystem with bzip2.\n\nconfig BR2_TARGET_ROOTFS_EXT2_LZ4\n\tbool \"lz4\"\n\thelp\n\t  Do compress the ext2 filesystem with lz4.\n\nconfig BR2_TARGET_ROOTFS_EXT2_LZMA\n\tbool \"lzma\"\n\thelp\n\t  Do compress the ext2/3/4 filesystem with lzma.\n\nconfig BR2_TARGET_ROOTFS_EXT2_LZO\n\tbool \"lzo\"\n\thelp\n\t  Do compress the ext2 filesystem with lzop.\n\nconfig BR2_TARGET_ROOTFS_EXT2_XZ\n\tbool \"xz\"\n\thelp\n\t  Do compress the ext2 filesystem with xz.\n\nendchoice\n\nendif # BR2_TARGET_ROOTFS_EXT2\n"
  },
  {
    "path": "fs/ext2/ext2.mk",
    "content": "################################################################################\n#\n# Build the ext2 root filesystem image\n#\n################################################################################\n\nROOTFS_EXT2_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_EXT2_SIZE))\nifeq ($(BR2_TARGET_ROOTFS_EXT2)-$(ROOTFS_EXT2_SIZE),y-)\n$(error BR2_TARGET_ROOTFS_EXT2_SIZE cannot be empty)\nendif\n\nROOTFS_EXT2_MKFS_OPTS = $(call qstrip,$(BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS))\n\n# qstrip results in stripping consecutive spaces into a single one. So the\n# variable is not qstrip-ed to preserve the integrity of the string value.\nROOTFS_EXT2_LABEL = $(subst \",,$(BR2_TARGET_ROOTFS_EXT2_LABEL))\n#\" Syntax highlighting... :-/ )\n\nROOTFS_EXT2_OPTS = \\\n\t-d $(TARGET_DIR) \\\n\t-r $(BR2_TARGET_ROOTFS_EXT2_REV) \\\n\t-N $(BR2_TARGET_ROOTFS_EXT2_INODES) \\\n\t-m $(BR2_TARGET_ROOTFS_EXT2_RESBLKS) \\\n\t-L \"$(ROOTFS_EXT2_LABEL)\" \\\n\t$(ROOTFS_EXT2_MKFS_OPTS)\n\nROOTFS_EXT2_DEPENDENCIES = host-e2fsprogs\n\ndefine ROOTFS_EXT2_CMD\n\trm -f $@\n\t$(HOST_DIR)/sbin/mkfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN) $(ROOTFS_EXT2_OPTS) $@ \\\n\t\t\"$(ROOTFS_EXT2_SIZE)\" \\\n\t|| { ret=$$?; \\\n\t     echo \"*** Maybe you need to increase the filesystem size (BR2_TARGET_ROOTFS_EXT2_SIZE)\" 1>&2; \\\n\t     exit $$ret; \\\n\t}\nendef\n\nifneq ($(BR2_TARGET_ROOTFS_EXT2_GEN),2)\ndefine ROOTFS_EXT2_SYMLINK\n\tln -sf rootfs.ext2$(ROOTFS_EXT2_COMPRESS_EXT) $(BINARIES_DIR)/rootfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN)$(ROOTFS_EXT2_COMPRESS_EXT)\nendef\nROOTFS_EXT2_POST_GEN_HOOKS += ROOTFS_EXT2_SYMLINK\nendif\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/f2fs/Config.in",
    "content": "config BR2_TARGET_ROOTFS_F2FS\n\tbool \"f2fs root filesystem\"\n\tselect BR2_PACKAGE_HOST_F2FS_TOOLS\n\thelp\n\t  Build a f2fs root filesystem. If you enable this option, you\n\t  probably want to enable the f2fs-tools package too.\n\nif BR2_TARGET_ROOTFS_F2FS\n\nconfig BR2_TARGET_ROOTFS_F2FS_LABEL\n\tstring \"filesystem label\"\n\nconfig BR2_TARGET_ROOTFS_F2FS_SIZE\n\tstring \"filesystem size\"\n\tdefault \"100M\"\n\thelp\n\t  The size of the filesystem image in bytes.\n\t  Suffix with K, M, G or T for power-of-two kilo-, mega-, giga-\n\t  or terabytes.\n\nconfig BR2_TARGET_ROOTFS_F2FS_COLD_FILES\n\tstring \"extension list for cold files\"\n\thelp\n\t  Specify a comma separated file extension list in order f2fs\n\t  to treat them as cold files. The default list includes most\n\t  of multimedia file extensions such as jpg, gif, mpeg, mkv,\n\t  and so on.\n\nconfig BR2_TARGET_ROOTFS_F2FS_HOT_FILES\n\tstring \"extension list for hot files\"\n\thelp\n\t  Specify a comma separated file extension list in order f2fs\n\t  to treat them as hot files. The default list includes only\n\t  a db extension.\n\nconfig BR2_TARGET_ROOTFS_F2FS_OVERPROVISION\n\tint \"overprovision ratio\"\n\tdefault 0\n\thelp\n\t  The percentage over the volume size for overprovision\n\t  area. This area is hidden to users, and utilized by F2FS\n\t  cleaner.\n\n\t  Leave at 0 for autocalculation according to the partition\n\t  size.\n\nconfig BR2_TARGET_ROOTFS_F2FS_DISCARD\n\tbool \"discard policy\"\n\tdefault y\n\thelp\n\t  Enable or disable discard policy.\n\nconfig BR2_TARGET_ROOTFS_F2FS_FEATURES\n\tstring \"filesystem features\"\n\thelp\n\t  List of features that the F2FS filesystem should support\n\t  (e.g \"encrypt\")\n\nendif # BR2_TARGET_ROOTFS_F2FS\n"
  },
  {
    "path": "fs/f2fs/f2fs.mk",
    "content": "################################################################################\n#\n# Build the f2fs root filesystem image\n#\n################################################################################\n\nF2FS_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_SIZE))\nifeq ($(BR2_TARGET_ROOTFS_F2FS)-$(F2FS_SIZE),y-)\n$(error BR2_TARGET_ROOTFS_F2FS_SIZE cannot be empty)\nendif\n\n# qstrip results in stripping consecutive spaces into a single one. So the\n# variable is not qstrip-ed to preserve the integrity of the string value.\nF2FS_LABEL = $(subst \",,$(BR2_TARGET_ROOTFS_F2FS_LABEL))\n# \")\nF2FS_COLD_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_COLD_FILES))\nF2FS_HOT_FILES = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_HOT_FILES))\n\nifeq ($(BR2_TARGET_ROOTFS_F2FS_DISCARD),y)\nF2FS_DISCARD = 1\nelse\nF2FS_DISCARD = 0\nendif\n\nF2FS_FEATURES = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_FEATURES))\n\nF2FS_OPTS = \\\n\t-f \\\n\t-l \"$(F2FS_LABEL)\" \\\n\t-t $(F2FS_DISCARD) \\\n\t-o $(BR2_TARGET_ROOTFS_F2FS_OVERPROVISION) \\\n\t$(if $(F2FS_COLD_FILES),-e \"$(F2FS_COLD_FILES)\") \\\n\t$(if $(F2FS_HOT_FILES),-E \"$(F2FS_HOT_FILES)\") \\\n\t$(if $(F2FS_FEATURES),-O \"$(F2FS_FEATURES)\")\n\nROOTFS_F2FS_DEPENDENCIES = host-f2fs-tools\n\ndefine ROOTFS_F2FS_CMD\n\t$(RM) -f $@\n\ttruncate -s $(F2FS_SIZE) $@\n\t$(HOST_DIR)/sbin/mkfs.f2fs $(F2FS_OPTS) $@\n\t$(HOST_DIR)/sbin/sload.f2fs -f $(TARGET_DIR) $@\nendef\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/initramfs/Config.in",
    "content": "config BR2_TARGET_ROOTFS_INITRAMFS\n\tbool \"initial RAM filesystem linked into linux kernel\"\n\tdepends on BR2_LINUX_KERNEL\n\tselect BR2_TARGET_ROOTFS_CPIO\n\thelp\n\t  Integrate the root filesystem generated by Buildroot as an\n\t  initramfs inside the kernel image. This integration will\n\t  take place automatically.\n\n\t  A rootfs.cpio file will be generated in the images/ directory.\n\t  This is the archive that will be included in the kernel image.\n\t  The default rootfs compression set in the kernel configuration\n\t  is used, regardless of how buildroot's cpio archive is\n\t  configured.\n\n\t  Note that enabling initramfs together with another filesystem\n\t  formats doesn't make sense: you would end up having two\n\t  identical root filesystems, one embedded inside the kernel\n\t  image, and one separately.\n\ncomment \"initramfs needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "fs/initramfs/initramfs.mk",
    "content": "################################################################################\n#\n# Build a kernel with an integrated initial ramdisk filesystem based on cpio.\n#\n################################################################################\n\n# The generic fs infrastructure isn't very useful here.\n#\n# The initramfs image does not actually build an image; its only purpose is:\n# 1- to ensure rootfs.cpio is generated,\n# 2- to then rebuild the kernel with rootfs.cpio as initramfs\n#\n# Note: ordering of the dependencies is not guaranteed here, but in\n# linux/linux.mk, via the linux-rebuild-with-initramfs rule, which depends\n# on the rootfs-cpio filesystem rule.\n#\n# Note: the trick here is that we directly depend on rebuilding the Linux\n# kernel image (which itself depends on the rootfs-cpio rule), while we\n# advertise that our dependency is on the rootfs-cpio rule, which is\n# cleaner in the dependency graph.\n\nrootfs-initramfs: linux-rebuild-with-initramfs\n\nrootfs-initramfs-show-depends:\n\t@echo rootfs-cpio\n\n.PHONY: rootfs-initramfs rootfs-initramfs-show-depends\n\nifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)\nTARGETS_ROOTFS += rootfs-initramfs\nendif\n\n# Not using the rootfs infra, so fake the variables\nROOTFS_INITRAMFS_NAME = rootfs-initramfs\nROOTFS_INITRAMFS_TYPE = rootfs\nROOTFS_INITRAMFS_DEPENDENCIES = rootfs-cpio linux\n"
  },
  {
    "path": "fs/iso9660/Config.in",
    "content": "config BR2_TARGET_ROOTFS_ISO9660\n\tbool \"iso image\"\n\tdepends on (BR2_i386 || BR2_x86_64)\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_TARGET_GRUB2 || BR2_TARGET_SYSLINUX_ISOLINUX\n\tselect BR2_LINUX_KERNEL_INSTALL_TARGET \\\n\t       if (!BR2_TARGET_ROOTFS_ISO9660_INITRD && !BR2_TARGET_ROOTFS_INITRAMFS)\n\thelp\n\t  Build a bootable ISO9660 image. By default, the root\n\t  filesystem is directly packed as the ISO9660 filesystem,\n\t  which means the root filesystem will be read-only. It\n\t  requires ISO9660 filesystem support and CDROM support in the\n\t  kernel.\n\n\t  However, if BR2_TARGET_ROOTFS_INITRAMFS or\n\t  BR2_TARGET_ROOTFS_ISO9660_INITRD have been enabled, the\n\t  ISO9660 filesystem will only contain a kernel image and\n\t  optionally an external initrd image. In this case, the\n\t  filesystem being in RAM, it will be read/write. No ISO9660\n\t  or CDROM support is needed in the kernel.\n\nif BR2_TARGET_ROOTFS_ISO9660\n\nchoice\n\tprompt \"Bootloader\"\n\nconfig BR2_TARGET_ROOTFS_ISO9660_GRUB2\n\tbool \"grub2\"\n\tdepends on BR2_TARGET_GRUB2\n\tselect BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER \\\n\t\tif BR2_TARGET_GRUB2_I386_PC\n\tselect BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER \\\n\t\tif (BR2_TARGET_GRUB2_I386_EFI || BR2_TARGET_GRUB2_X86_64_EFI)\n\thelp\n\t  Use Grub 2 as the bootloader for the ISO9660 image. Make\n\t  sure to enable the 'iso9660' module in\n\t  BR2_TARGET_GRUB2_BUILTIN_MODULES_PC or\n\t  BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI. Use 'cd' as the boot\n\t  partition in BR2_TARGET_GRUB2_BOOT_PARTITION= for GRUB on BIOS\n\t  or 'set root=(cd0)' in the configuration file passed to\n\t  BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI for GRUB on EFI.\n\nconfig BR2_TARGET_ROOTFS_ISO9660_ISOLINUX\n\tbool \"isolinux\"\n\tdepends on BR2_TARGET_SYSLINUX_ISOLINUX\n\tselect BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER\n\nendchoice\n\nconfig BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER\n\tbool\n\nconfig BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER\n\tbool\n\nconfig BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU\n\tstring \"Boot menu config file\"\n\tdefault \"fs/iso9660/grub.cfg\" if BR2_TARGET_ROOTFS_ISO9660_GRUB2\n\tdefault \"fs/iso9660/isolinux.cfg\" if BR2_TARGET_ROOTFS_ISO9660_ISOLINUX\n\thelp\n\t  Use this option to provide a custom bootloader configuration\n\t  file (grub.cfg for Grub 2, isolinux.cfg for isolinux).\n\n\t  Note that the strings __KERNEL_PATH__ and __INITRD_PATH__\n\t  will automatically be replaced by the path to the kernel and\n\t  initrd images respectively.\n\nconfig BR2_TARGET_ROOTFS_ISO9660_INITRD\n\tbool \"Use initrd\"\n\tdefault y\n\tselect BR2_TARGET_ROOTFS_CPIO\n\thelp\n\t  Enable this option to have the root filesystem bundled as an\n\t  initrd/initramfs rather than directly as the ISO9660\n\t  filesystem. With this option enabled, the ISO9660 will only\n\t  contain a kernel image, an initrd image (unless an initramfs\n\t  linked into the kernel is used) and the bootloader.\n\nconfig BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION\n\tbool \"transparent compression\"\n\tdepends on !BR2_TARGET_ROOTFS_ISO9660_INITRD\n\tdepends on !BR2_TARGET_ROOTFS_INITRAMFS\n\thelp\n\t  Say 'y' to enable use of transparent (de)compression. Files\n\t  are stored compressed and will be decompressed on-the-fly\n\t  upon access at runtime.\n\nconfig BR2_TARGET_ROOTFS_ISO9660_HYBRID\n\tbool \"Build hybrid image\"\n\tdepends on BR2_TARGET_ROOTFS_ISO9660_ISOLINUX\n\thelp\n\t  Enable this option to build an hybrid image, i.e an image\n\t  which can either be booted from a CD-ROM or from a device\n\t  which BIOS considers a hard disk or ZIP disk, e.g. a USB key\n\t  or similar.\n\nendif\n\ncomment \"iso image needs a Linux kernel and either grub2 or isolinux to be built\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_LINUX_KERNEL || \\\n\t\t!(BR2_TARGET_GRUB2 || BR2_TARGET_SYSLINUX_ISOLINUX)\n"
  },
  {
    "path": "fs/iso9660/grub.cfg",
    "content": "set default=\"0\"\nset timeout=\"10\"\n\nmenuentry \"Buildroot\" {\n\tlinux __KERNEL_PATH__ root=/dev/sr0\n\tinitrd __INITRD_PATH__\n}\n"
  },
  {
    "path": "fs/iso9660/iso9660.mk",
    "content": "################################################################################\n#\n# Build the iso96600 root filesystem image\n#\n################################################################################\n\n#\n# We need to handle three cases:\n#\n#  1. The ISO9660 filesystem will really be the real root filesystem\n#     itself. This is when BR2_TARGET_ROOTFS_ISO9660_INITRD is\n#     disabled.\n#\n#  2. The ISO9660 filesystem will be a filesystem with just a kernel\n#     image, initrd and grub. This is when\n#     BR2_TARGET_ROOTFS_ISO9660_INITRD is enabled, but\n#     BR2_TARGET_ROOTFS_INITRAMFS is disabled.\n#\n#  3. The ISO9660 filesystem will be a filesystem with just a kernel\n#     image and grub. This is like (2), except that the initrd is\n#     built into the kernel image. This is when\n#     BR2_TARGET_ROOTFS_INITRAMFS is enabled (regardless of the value\n#     of BR2_TARGET_ROOTFS_ISO9660_INITRD).\n\nROOTFS_ISO9660_BOOT_MENU = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU))\n\nROOTFS_ISO9660_DEPENDENCIES = host-xorriso linux\n\nifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)\nROOTFS_ISO9660_USE_INITRD = YES\nendif\n\nifeq ($(BR2_TARGET_ROOTFS_ISO9660_INITRD),y)\nROOTFS_ISO9660_USE_INITRD = YES\nendif\n\nifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)\nROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp\ndefine ROOTFS_ISO9660_CREATE_TEMPDIR\n\t$(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR)\n\tmkdir -p $(ROOTFS_ISO9660_TMP_TARGET_DIR)\nendef\nROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_CREATE_TEMPDIR\nelse ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y)\nROOTFS_ISO9660_DEPENDENCIES += host-zisofs-tools\nROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp\n# This must be early, before we copy the bootloader files.\ndefine ROOTFS_ISO9660_MKZFTREE\n\t$(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR)\n\t$(HOST_DIR)/bin/mkzftree -X -z 9 -p $(PARALLEL_JOBS) \\\n\t\t$(TARGET_DIR) \\\n\t\t$(ROOTFS_ISO9660_TMP_TARGET_DIR)\nendef\nROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_MKZFTREE\nROOTFS_ISO9660_OPTS += -z\nelse\nROOTFS_ISO9660_TMP_TARGET_DIR = $(TARGET_DIR)\nendif\n\nifeq ($(BR2_REPRODUCIBLE),y)\nROOTFS_ISO9660_VFAT_OPTS = --invariant\nROOTFS_ISO9660_FIX_TIME = touch -d @$(SOURCE_DATE_EPOCH)\nelse\nROOTFS_ISO9660_FIX_TIME = :\nendif\n\nifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2)$(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER),yy)\nROOTFS_ISO9660_DEPENDENCIES += grub2\nROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \\\n\t$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg\nROOTFS_ISO9660_BOOT_IMAGE = boot/grub/grub-eltorito.img\ndefine ROOTFS_ISO9660_INSTALL_BOOTLOADER_BIOS\n\t$(INSTALL) -D -m 0644 $(BINARIES_DIR)/grub-eltorito.img \\\n\t\t$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub-eltorito.img\nendef\nendif\n\nifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2)$(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),yy)\nROOTFS_ISO9660_DEPENDENCIES += grub2 host-dosfstools host-mtools\nROOTFS_ISO9660_EFI_PARTITION = boot/fat.efi\nROOTFS_ISO9660_EFI_PARTITION_PATH = $(ROOTFS_ISO9660_TMP_TARGET_DIR)/$(ROOTFS_ISO9660_EFI_PARTITION)\nROOTFS_ISO9660_EFI_PARTITION_CONTENT = $(BINARIES_DIR)/efi-part\nROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \\\n\t$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg\ndefine ROOTFS_ISO9660_INSTALL_BOOTLOADER_EFI\n\trm -rf $(ROOTFS_ISO9660_EFI_PARTITION_PATH)\n\tmkdir -p $(dir $(ROOTFS_ISO9660_EFI_PARTITION_PATH))\n\tdd if=/dev/zero of=$(ROOTFS_ISO9660_EFI_PARTITION_PATH) bs=1M count=1\n\t$(HOST_DIR)/sbin/mkfs.vfat $(ROOTFS_ISO9660_VFAT_OPTS) $(ROOTFS_ISO9660_EFI_PARTITION_PATH)\n\t$(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/*\n\t$(HOST_DIR)/bin/mcopy -p -m -i $(ROOTFS_ISO9660_EFI_PARTITION_PATH) -s \\\n\t\t$(ROOTFS_ISO9660_EFI_PARTITION_CONTENT)/* ::/\n\t$(ROOTFS_ISO9660_FIX_TIME) $(ROOTFS_ISO9660_EFI_PARTITION_PATH)\nendef\nendif\n\nifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y)\nROOTFS_ISO9660_DEPENDENCIES += syslinux\nROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \\\n\t$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/isolinux.cfg\nROOTFS_ISO9660_BOOT_IMAGE = isolinux/isolinux.bin\ndefine ROOTFS_ISO9660_INSTALL_BOOTLOADER_BIOS\n\t$(INSTALL) -D -m 0644 $(BINARIES_DIR)/syslinux/* \\\n\t\t$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/\n\t$(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/ldlinux.c32 \\\n\t\t$(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/ldlinux.c32\nendef\nendif\n\ndefine ROOTFS_ISO9660_PREPARATION\n\t$(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_BOOT_MENU) \\\n\t\t$(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)\n\t$(SED) \"s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%\" \\\n\t\t$(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)\n\t$(ROOTFS_ISO9660_INSTALL_BOOTLOADER_BIOS)\n\t$(ROOTFS_ISO9660_INSTALL_BOOTLOADER_EFI)\nendef\n\nROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_PREPARATION\n\ndefine ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD\n\t$(SED) '/__INITRD_PATH__/d'  $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)\nendef\n\n# Copy the kernel to temporary filesystem\ndefine ROOTFS_ISO9660_COPY_KERNEL\n\t$(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) \\\n\t\t$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME)\nendef\n\nifeq ($(ROOTFS_ISO9660_USE_INITRD),YES)\nROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL\n\n# If initramfs is used, disable loading the initrd as the rootfs is\n# already inside the kernel image. Otherwise, make sure a cpio is\n# generated and use it as the initrd.\nifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y)\nROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD\nelse\nROOTFS_ISO9660_DEPENDENCIES += rootfs-cpio\ndefine ROOTFS_ISO9660_COPY_INITRD\n\t$(INSTALL) -D -m 0644 $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \\\n\t\t$(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/initrd\n\t$(SED) \"s%__INITRD_PATH__%/boot/initrd%\" \\\n\t\t$(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH)\nendef\nROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_INITRD\nendif\n\nelse # ROOTFS_ISO9660_USE_INITRD\nifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y)\n# We must use the uncompressed kernel image\nROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL\nendif\n\nROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD\n\nendif # ROOTFS_ISO9660_USE_INITRD\n\nROOTFS_ISO9660_OPTS += -J -R\n\nROOTFS_ISO9660_OPTS_BIOS = \\\n\t-b $(ROOTFS_ISO9660_BOOT_IMAGE) \\\n\t-no-emul-boot \\\n\t-boot-load-size 4 \\\n\t-boot-info-table\n\nROOTFS_ISO9660_OPTS_EFI = \\\n\t--efi-boot $(ROOTFS_ISO9660_EFI_PARTITION) \\\n\t-no-emul-boot\n\nifeq ($(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER)$(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),yy)\nROOTFS_ISO9660_OPTS += \\\n\t$(ROOTFS_ISO9660_OPTS_BIOS) \\\n\t-eltorito-alt-boot \\\n\t$(ROOTFS_ISO9660_OPTS_EFI)\nelse ifeq ($(BR2_TARGET_ROOTFS_ISO9660_BIOS_BOOTLOADER),y)\nROOTFS_ISO9660_OPTS += $(ROOTFS_ISO9660_OPTS_BIOS)\nelse ifeq ($(BR2_TARGET_ROOTFS_ISO9660_EFI_BOOTLOADER),y)\nROOTFS_ISO9660_OPTS += $(ROOTFS_ISO9660_OPTS_EFI)\nendif\n\ndefine ROOTFS_ISO9660_CMD\n\t$(HOST_DIR)/bin/xorriso -as mkisofs \\\n\t\t$(ROOTFS_ISO9660_OPTS) \\\n\t\t-o $@ $(ROOTFS_ISO9660_TMP_TARGET_DIR)\nendef\n\nifeq ($(BR2_TARGET_ROOTFS_ISO9660_HYBRID),y)\ndefine ROOTFS_ISO9660_GEN_HYBRID\n\t$(HOST_DIR)/bin/isohybrid -t 0x96 $@\nendef\n\nROOTFS_ISO9660_POST_GEN_HOOKS += ROOTFS_ISO9660_GEN_HYBRID\nendif\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/iso9660/isolinux.cfg",
    "content": "default 1\nlabel 1\n      kernel __KERNEL_PATH__\n      initrd __INITRD_PATH__\n      append root=/dev/sr0\n"
  },
  {
    "path": "fs/jffs2/Config.in",
    "content": "config BR2_TARGET_ROOTFS_JFFS2\n\tbool \"jffs2 root filesystem\"\n\thelp\n\t  Build a jffs2 root filesystem\n\nif BR2_TARGET_ROOTFS_JFFS2\n\nchoice\n\tprompt \"Flash Type\"\n\tdefault BR2_TARGET_ROOTFS_JFFS2_FLASH_128\n\nconfig BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056\n\tbool \"AT45 dataflash with 1056 byte pagesize\"\n\tselect BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER\n\nconfig BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528\n\tbool \"AT45 dataflash with 528 byte pagesize\"\n\tselect BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER\n\nconfig BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K\n\tbool \"NAND flash with 16 kB erasesize\"\n\tselect BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER\n\nconfig BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K\n\tbool \"NAND flash with 128 kB erasesize\"\n\tselect BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER\n\nconfig BR2_TARGET_ROOTFS_JFFS2_FLASH_128\n\tbool \"Parallel flash with 128 kB erase size\"\n\nconfig BR2_TARGET_ROOTFS_JFFS2_FLASH_64\n\tbool \"Parallel flash with 64 kB erase size\"\n\nconfig BR2_TARGET_ROOTFS_JFFS2_CUSTOM\n\tbool \"Select custom erase size\"\n\nendchoice\n\nconfig BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE\n\thex \"Erase block size\"\n\tdefault 0x20000\n\tdepends on BR2_TARGET_ROOTFS_JFFS2_CUSTOM\n\thelp\n\t  Set to erase size of memory\n\nconfig BR2_TARGET_ROOTFS_JFFS2_EBSIZE\n\thex\n\tdefault 0x2100 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056\n\tdefault 0x1080 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528\n\tdefault 0x4000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K\n\tdefault 0x20000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K\n\tdefault 0x20000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_128\n\tdefault 0x10000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_64\n\tdefault BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE if BR2_TARGET_ROOTFS_JFFS2_CUSTOM\n\nconfig BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER\n\tbool \"Do not use Cleanmarker\"\n\tdefault y if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056\n\tdefault y if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528\n\tdefault y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K\n\tdefault y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K\n\thelp\n\t  Do not use cleanmarkers if using NAND flash or Dataflash where\n\t  the pagesize is not a power of 2\n\nconfig BR2_TARGET_ROOTFS_JFFS2_PAD\n\tbool \"Pad output\"\n\nconfig BR2_TARGET_ROOTFS_JFFS2_PADSIZE\n\thex \"Pad output size (0x0 = to end of EB)\"\n\tdefault 0x0\n\tdepends on BR2_TARGET_ROOTFS_JFFS2_PAD\n\thelp\n\t  Set to 0x0 to pad to end of erase block.\n\nchoice\n\tprompt \"Endianess\"\n\tdefault BR2_TARGET_ROOTFS_JFFS2_BE if BR2_ENDIAN = \"BIG\"\n\nconfig BR2_TARGET_ROOTFS_JFFS2_LE\n\tbool \"little-endian\"\n\nconfig BR2_TARGET_ROOTFS_JFFS2_BE\n\tbool \"big-endian\"\n\nendchoice\n\nconfig BR2_TARGET_ROOTFS_JFFS2_SUMMARY\n\tbool \"Produce a summarized JFFS2 image\"\n\thelp\n\t  A summarised image can be mounted faster if support is\n\t  enabled in the kernel (CONFIG_JFFS2_SUMMARY)\n\nconfig BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE\n\tbool \"Select custom virtual memory page size\"\n\thelp\n\t  Use a custom virtual memory page size. Note that this is not\n\t  related to the flash memory page size. Using this option is\n\t  only needed if Linux is configured to use a page size\n\t  different than 4kB.\n\nconfig BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE\n\thex \"Virtual memory page size\"\n\tdefault 0x1000\n\tdepends on BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE\n\thelp\n\t  Set to virtual memory page size of target system (in bytes).\n\t  This value should match the virtual page size in Linux (i.e.\n\t  this should have the same value as the value of the PAGE_SIZE\n\t  macro in Linux). It is not related to the flash memory page\n\t  size.\n\nendif\n"
  },
  {
    "path": "fs/jffs2/jffs2.mk",
    "content": "################################################################################\n#\n# Build the jffs2 root filesystem image\n#\n################################################################################\n\nJFFS2_OPTS = -e $(BR2_TARGET_ROOTFS_JFFS2_EBSIZE) --with-xattr\nSUMTOOL_OPTS = -e $(BR2_TARGET_ROOTFS_JFFS2_EBSIZE)\n\nifeq ($(BR2_TARGET_ROOTFS_JFFS2_PAD),y)\nifneq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)),0x0)\nJFFS2_OPTS += --pad=$(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE))\nelse\nJFFS2_OPTS += -p\nendif\nSUMTOOL_OPTS += -p\nendif\n\nifeq ($(BR2_TARGET_ROOTFS_JFFS2_LE),y)\nJFFS2_OPTS += -l\nSUMTOOL_OPTS += -l\nendif\n\nifeq ($(BR2_TARGET_ROOTFS_JFFS2_BE),y)\nJFFS2_OPTS += -b\nSUMTOOL_OPTS += -b\nendif\n\nifeq ($(BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE),y)\nJFFS2_OPTS += -s $(BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE)\nendif\n\nifeq ($(BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER),y)\nJFFS2_OPTS += -n\nSUMTOOL_OPTS += -n\nendif\n\nROOTFS_JFFS2_DEPENDENCIES = host-mtd\n\nifneq ($(BR2_TARGET_ROOTFS_JFFS2_SUMMARY),)\ndefine ROOTFS_JFFS2_CMD\n\t$(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $@.nosummary\n\t$(SUMTOOL) $(SUMTOOL_OPTS) -i $@.nosummary -o $@\n\trm $@.nosummary\nendef\nelse\ndefine ROOTFS_JFFS2_CMD\n\t$(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $@\nendef\nendif\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/oci/Config.in",
    "content": "config BR2_TARGET_ROOTFS_OCI\n\tbool \"oci image\"\n\thelp\n\t  Build an OCI (Open Container Initiative) image.\n\n\t  By default, the image is generated in a directory called\n\t  rootfs-oci:\n\n\t  $ cd output/images\n\t  $ ls rootfs-oci/\n\t  blobs  index.json  oci-layout\n\n\t  You can push the image to a registry. Example using skopeo:\n\n\t  $ skopeo copy --dest-creds <user>:<pass> \\\n\t           oci:rootfs-oci:<tag> docker://<user>/<image>[:tag]\n\n\t  And pull/run it with docker:\n\n\t  $ docker run -it <user>/<image>[:tag]\n\nif BR2_TARGET_ROOTFS_OCI\n\nconfig BR2_TARGET_ROOTFS_OCI_AUTHOR\n\tstring \"author name and/or email address\"\n\tdefault \"Buildroot\"\n\thelp\n\t  Name and/or email address of the person which created the\n\t  image.\n\nconfig BR2_TARGET_ROOTFS_OCI_TAG\n\tstring \"image tag\"\n\tdefault \"latest\"\n\thelp\n\t  Tag to be used in the container image. If empty, 'latest' will\n\t  be used by default.\n\nconfig BR2_TARGET_ROOTFS_OCI_ENTRYPOINT\n\tstring \"entrypoint\"\n\tdefault \"sh\"\n\thelp\n\t  Command to execute when the container starts.\n\nconfig BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS\n\tstring \"entrypoint arguments\"\n\thelp\n\t  Default arguments to the entrypoint of the container.\n\nconfig BR2_TARGET_ROOTFS_OCI_WORKDIR\n\tstring \"working directory\"\n\thelp\n\t  Working directory of the entrypoint process in the\n\t  container.\n\nconfig BR2_TARGET_ROOTFS_OCI_UID\n\tstring \"username or UID\"\n\tdefault \"0\"\n\thelp\n\t  The username or UID of user the process run as.\n\nconfig BR2_TARGET_ROOTFS_OCI_ENV_VARS\n\tstring \"environment variables\"\n\thelp\n\t  Default environment variables for the container.\n\t  Space-separated list of variable=value assignments.\n\nconfig BR2_TARGET_ROOTFS_OCI_PORTS\n\tstring \"ports\"\n\thelp\n\t  Default set of ports to expose from a container running\n\t  this image as a space-separted list of ports in the following\n\t  format:\n\n\t  <port>/tcp, <port>/udp, <port> (same as <port>/tcp).\n\nconfig BR2_TARGET_ROOTFS_OCI_LABELS\n\tstring \"labels\"\n\thelp\n\t  Metadata in the format KEY=VALUE for the container compliant\n\t  with OCI annotation rules. If KEY starts with a dot, it will\n\t  be prefixed with \"org.opencontainers.image\"\n\t  (e.g. .url -> org.opencontainers.image.url).\n\nconfig BR2_TARGET_ROOTFS_OCI_ARCHIVE\n\tbool \"pack oci image into a tar archive\"\n\thelp\n\t  Select whether the image should be packed into a TAR archive.\n\nendif\n"
  },
  {
    "path": "fs/oci/oci.mk",
    "content": "################################################################################\n#\n# Build the oci image\n#\n################################################################################\n\nROOTFS_OCI_DEPENDENCIES = host-sloci-image\n\n# architecture - take it from Go\nOCI_SLOCI_IMAGE_OPTS = --arch $(GO_GOARCH)\n\n# architecture variant (typically used only for arm)\nOCI_SLOCI_IMAGE_OPTS += $(and $(GO_GOARM),--arch-variant v$(GO_GOARM))\n\n# entrypoint\nOCI_ENTRYPOINT = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_ENTRYPOINT))\nifneq ($(OCI_ENTRYPOINT),)\nOCI_SLOCI_IMAGE_OPTS += --entrypoint \"$(OCI_ENTRYPOINT)\"\nendif\n\n# entrypoint arguments\nOCI_ENTRYPOINT_ARGS = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS))\nifneq ($(OCI_ENTRYPOINT_ARGS),)\nOCI_SLOCI_IMAGE_OPTS += --cmd \"$(OCI_ENTRYPOINT_ARGS)\"\nendif\n\n# author\nOCI_AUTHOR = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_AUTHOR))\nifneq ($(OCI_AUTHOR),)\nOCI_SLOCI_IMAGE_OPTS += --author \"$(OCI_AUTHOR)\"\nendif\n\n# username or UID\nOCI_UID = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_UID))\nifneq ($(OCI_UID),)\nOCI_SLOCI_IMAGE_OPTS += --user \"$(OCI_UID)\"\nendif\n\n# labels\nOCI_LABELS = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_LABELS))\nifneq ($(OCI_LABELS),)\nOCI_SLOCI_IMAGE_OPTS += \\\n\t$(foreach label,$(OCI_LABELS),--label \"$(label)\")\nendif\n\n# environment variables\nOCI_ENV_VARS = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_ENV_VARS))\nifneq ($(OCI_ENV_VARS),)\nOCI_SLOCI_IMAGE_OPTS += \\\n\t$(foreach var,$(OCI_ENV_VARS),--env \"$(var)\")\nendif\n\n# working directory\nOCI_WORKDIR = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_WORKDIR))\nifneq ($(OCI_WORKDIR),)\nOCI_SLOCI_IMAGE_OPTS += --working-dir \"$(OCI_WORKDIR)\"\nendif\n\n# ports\nOCI_PORTS = $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_PORTS))\nifneq ($(OCI_PORTS),)\nOCI_SLOCI_IMAGE_OPTS += \\\n\t$(foreach port,$(OCI_PORTS),--port \"$(port)\")\nendif\n\n# tag\nOCI_TAG = $(or $(call qstrip,$(BR2_TARGET_ROOTFS_OCI_TAG)),latest)\n\n# enable tar archive\nifeq ($(BR2_TARGET_ROOTFS_OCI_ARCHIVE),y)\nOCI_SLOCI_IMAGE_OPTS += --tar\nendif\n\ndefine ROOTFS_OCI_CMD\n\trm -rf $(BINARIES_DIR)/rootfs-oci\n\t$(HOST_DIR)/bin/sloci-image $(OCI_SLOCI_IMAGE_OPTS) $(TARGET_DIR) \\\n\t\t$(BINARIES_DIR)/rootfs-oci:$(OCI_TAG)\nendef\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/romfs/Config.in",
    "content": "config BR2_TARGET_ROOTFS_ROMFS\n\tbool \"romfs root filesystem\"\n\thelp\n\t  Build a romfs image of the root filesystem.\n"
  },
  {
    "path": "fs/romfs/romfs.mk",
    "content": "################################################################################\n#\n# Build the romfs root filesystem image\n#\n################################################################################\n\nROOTFS_ROMFS_DEPENDENCIES = host-genromfs\n\ndefine ROOTFS_ROMFS_CMD\n\t$(HOST_DIR)/bin/genromfs -d $(TARGET_DIR) -f $@\nendef\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/squashfs/Config.in",
    "content": "config BR2_TARGET_ROOTFS_SQUASHFS\n\tbool \"squashfs root filesystem\"\n\thelp\n\t  Build a squashfs root filesystem\n\nif BR2_TARGET_ROOTFS_SQUASHFS\n\nconfig BR2_TARGET_ROOTFS_SQUASHFS_PAD\n\tbool \"pad to a 4K boundary\"\n\tdefault y # legacy was always ON\n\thelp\n\t  Say 'y' here (the default) to pad the the filesystem image\n\t  to a 4K boundary. Say 'n' to disable padding.\n\nchoice\n\tprompt \"Compression algorithm\"\n\tdefault BR2_TARGET_ROOTFS_SQUASHFS4_GZIP\n\thelp\n\t  Select the squashfs compression algorithm to use when\n\t  generating the filesystem.\n\nconfig BR2_TARGET_ROOTFS_SQUASHFS4_GZIP\n\tbool \"gzip\"\n\nconfig BR2_TARGET_ROOTFS_SQUASHFS4_LZ4\n\tbool \"lz4\"\n\nconfig BR2_TARGET_ROOTFS_SQUASHFS4_LZMA\n\tbool \"lzma\"\n\nconfig BR2_TARGET_ROOTFS_SQUASHFS4_LZO\n\tbool \"lzo\"\n\nconfig BR2_TARGET_ROOTFS_SQUASHFS4_XZ\n\tbool \"xz\"\n\nconfig BR2_TARGET_ROOTFS_SQUASHFS4_ZSTD\n\tbool \"zstd\"\n\nendchoice\n\nendif\n"
  },
  {
    "path": "fs/squashfs/squashfs.mk",
    "content": "################################################################################\n#\n# Build the squashfs root filesystem image\n#\n################################################################################\n\nROOTFS_SQUASHFS_DEPENDENCIES = host-squashfs\n\nROOTFS_SQUASHFS_ARGS = -noappend -processors $(PARALLEL_JOBS)\n\nifeq ($(BR2_TARGET_ROOTFS_SQUASHFS_PAD),)\nROOTFS_SQUASHFS_ARGS += -nopad\nendif\n\nifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZ4),y)\nROOTFS_SQUASHFS_ARGS += -comp lz4 -Xhc\nelse ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZO),y)\nROOTFS_SQUASHFS_ARGS += -comp lzo\nelse ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZMA),y)\nROOTFS_SQUASHFS_ARGS += -comp lzma\nelse ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_XZ),y)\nROOTFS_SQUASHFS_ARGS += -comp xz\nelse ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_ZSTD),y)\nROOTFS_SQUASHFS_ARGS += -comp zstd\nelse\nROOTFS_SQUASHFS_ARGS += -comp gzip\nendif\n\ndefine ROOTFS_SQUASHFS_CMD\n\t$(HOST_DIR)/bin/mksquashfs $(TARGET_DIR) $@ $(ROOTFS_SQUASHFS_ARGS)\nendef\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/tar/Config.in",
    "content": "config BR2_TARGET_ROOTFS_TAR\n\tbool \"tar the root filesystem\"\n\tdefault y\n\thelp\n\t  Build a tar archive of the root filesystem\n\nchoice\n\tprompt \"Compression method\"\n\tdefault BR2_TARGET_ROOTFS_TAR_NONE\n\tdepends on BR2_TARGET_ROOTFS_TAR\n\thelp\n\t  Select compressor for tar archive of the root filesystem\n\nconfig BR2_TARGET_ROOTFS_TAR_NONE\n\tbool \"no compression\"\n\thelp\n\t  Do not compress the tarball.\n\nconfig BR2_TARGET_ROOTFS_TAR_GZIP\n\tbool \"gzip\"\n\thelp\n\t  Do compress the tarball with gzip.\n\nconfig BR2_TARGET_ROOTFS_TAR_BZIP2\n\tbool \"bzip2\"\n\thelp\n\t  Do compress the tarball with bzip2.\n\nconfig BR2_TARGET_ROOTFS_TAR_LZ4\n\tbool \"lz4\"\n\thelp\n\t  Do compress the tarball with lz4.\n\nconfig BR2_TARGET_ROOTFS_TAR_LZMA\n\tbool \"lzma\"\n\thelp\n\t  Do compress the tarball with lzma.\n\nconfig BR2_TARGET_ROOTFS_TAR_LZO\n\tbool \"lzo\"\n\thelp\n\t  Do compress the tarball with lzop.\n\nconfig BR2_TARGET_ROOTFS_TAR_XZ\n\tbool \"xz\"\n\thelp\n\t  Do compress the tarball with xz.\n\nendchoice\n\nconfig BR2_TARGET_ROOTFS_TAR_OPTIONS\n\tstring \"other random options to pass to tar\"\n\tdefault \"\"\n\tdepends on BR2_TARGET_ROOTFS_TAR\n\thelp\n\t  Any other flags you want to pass to tar\n\t  Refer to tar --help for details\n"
  },
  {
    "path": "fs/tar/tar.mk",
    "content": "################################################################################\n#\n# tar to archive target filesystem\n#\n################################################################################\n\nTAR_OPTS = $(call qstrip,$(BR2_TARGET_ROOTFS_TAR_OPTIONS))\n\nROOTFS_TAR_DEPENDENCIES = $(BR2_TAR_HOST_DEPENDENCY)\n\n# do not store atime/ctime in PaxHeaders to ensure reproducbility\nTAR_OPTS += --pax-option=exthdr.name=%d/PaxHeaders/%f,atime:=0,ctime:=0\n\ndefine ROOTFS_TAR_CMD\n\t(cd $(TARGET_DIR); find -print0 | LC_ALL=C sort -z | \\\n\t\ttar $(TAR_OPTS) -cf $@ --null --xattrs-include='*' --no-recursion -T - --numeric-owner)\nendef\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/ubi/Config.in",
    "content": "config BR2_TARGET_ROOTFS_UBI\n\tbool \"ubi image containing an ubifs root filesystem\"\n\tselect BR2_TARGET_ROOTFS_UBIFS\n\thelp\n\t  Build an ubi image from the ubifs one (with ubinize).\n\nif BR2_TARGET_ROOTFS_UBI\n\nconfig BR2_TARGET_ROOTFS_UBI_PEBSIZE\n\thex \"physical eraseblock size\"\n\tdefault 0x20000\n\thelp\n\t  Tells ubinize the physical eraseblock (PEB) size of the\n\t  flash chip the ubi image is created for. The value provided\n\t  here is passed to the -p/--peb-size option of ubinize.\n\nconfig BR2_TARGET_ROOTFS_UBI_SUBSIZE\n\tint \"sub-page size\"\n\tdefault 512\n\thelp\n\t  Tells ubinize that the flash supports sub-pages and the\n\t  sub-page size. Use 0 if sub-pages are not supported on flash\n\t  chip.\n\t  The value provided here is passed to the -s/--sub-page-size\n\t  option of ubinize.\n\nconfig BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG\n\tbool \"Use custom config file\"\n\thelp\n\t  Select this option to use a custom ubinize configuration file,\n\t  rather than the default configuration used by Buildroot (which\n\t  defines a single dynamic volume marked as auto-resize).\n\t  Passing a custom ubinize configuration file allows you to\n\t  create several volumes, specify volume types, etc.\n\n\t  As a convenience, buildroot replaces the string\n\t  \"BR2_ROOTFS_UBIFS_PATH\" with the path to the built ubifs file.\n\t  So the volume defined for the root filesystem can specify the\n\t  image path as:  image=BR2_ROOTFS_UBIFS_PATH\n\n\t  Buildroot also replaces the string \"BINARIES_DIR\" with the\n\t  value of $(BINARIES_DIR), so that it is possible to reference\n\t  other build artefacts (e.g. to include the kernel in a UBI\n\t  volume).\n\nconfig BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE\n\tstring \"Configuration file path\"\n\tdepends on BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG\n\thelp\n\t  Path to the ubinize configuration file.\n\nconfig BR2_TARGET_ROOTFS_UBI_OPTS\n\tstring \"Additional ubinize options\"\n\thelp\n\t  Any additional ubinize options you may want to include.\n\nendif # BR2_TARGET_ROOTFS_UBI\n"
  },
  {
    "path": "fs/ubi/ubi.mk",
    "content": "################################################################################\n#\n# Embed the ubifs image into an ubi image\n#\n################################################################################\n\nUBI_UBINIZE_OPTS = -m $(BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE)\nUBI_UBINIZE_OPTS += -p $(BR2_TARGET_ROOTFS_UBI_PEBSIZE)\nifneq ($(BR2_TARGET_ROOTFS_UBI_SUBSIZE),0)\nUBI_UBINIZE_OPTS += -s $(BR2_TARGET_ROOTFS_UBI_SUBSIZE)\nendif\n\nUBI_UBINIZE_OPTS += $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_OPTS))\n\nROOTFS_UBI_DEPENDENCIES = rootfs-ubifs\n\nifeq ($(BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG),y)\nUBI_UBINIZE_CONFIG_FILE_PATH = $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE))\nelse\nUBI_UBINIZE_CONFIG_FILE_PATH = fs/ubi/ubinize.cfg\nendif\n\n# don't use sed -i as it misbehaves on systems with SELinux enabled when this is\n# executed through fakeroot (see #9386)\ndefine ROOTFS_UBI_CMD\n\tsed 's;BR2_ROOTFS_UBIFS_PATH;$@fs;;s;BINARIES_DIR;$(BINARIES_DIR);' \\\n\t\t$(UBI_UBINIZE_CONFIG_FILE_PATH) > $(BUILD_DIR)/ubinize.cfg\n\t$(HOST_DIR)/sbin/ubinize -o $@ $(UBI_UBINIZE_OPTS) $(BUILD_DIR)/ubinize.cfg\n\trm $(BUILD_DIR)/ubinize.cfg\nendef\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/ubi/ubinize.cfg",
    "content": "[ubifs]\nmode=ubi\nvol_id=0\nvol_type=dynamic\nvol_name=rootfs\nvol_alignment=1\nvol_flags=autoresize\nimage=BR2_ROOTFS_UBIFS_PATH\n"
  },
  {
    "path": "fs/ubifs/Config.in",
    "content": "config BR2_TARGET_ROOTFS_UBIFS\n\tbool \"ubifs root filesystem\"\n\thelp\n\t  Build a ubifs root filesystem\n\nif BR2_TARGET_ROOTFS_UBIFS\n\nconfig BR2_TARGET_ROOTFS_UBIFS_LEBSIZE\n\thex \"logical eraseblock size\"\n\tdefault 0x1f800\n\thelp\n\t  Logical eraseblock (LEB) size. The value provided here is\n\t  passed to the -e/--leb-size option of mkfs.ubifs.\n\nconfig BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE\n\thex \"minimum I/O unit size\"\n\tdefault 0x800\n\thelp\n\t  Minimum I/O unit size. The value provided here is passed\n\t  to the -m/--min-io-size option of mkfs.ubifs/ubinize.\n\nconfig BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT\n\tint \"maximum logical eraseblock count\"\n\tdefault 2048\n\thelp\n\t  Maximum logical eraseblock (LEB) count. The value provided\n\t  here is passed to the -c/--max-leb-cnt option of mkfs.ubifs.\n\nchoice\n\tprompt \"ubifs runtime compression\"\n\tdefault BR2_TARGET_ROOTFS_UBIFS_RT_LZO\n\thelp\n\t  Select which compression format to use at run-time within\n\t  the ubifs file system. The choice made here is passed to\n\t  the -x/--compr option of mkfs.ubifs\n\nconfig BR2_TARGET_ROOTFS_UBIFS_RT_NONE\n\tbool \"no compression\"\n\thelp\n\t  Don't use run-time compression.\n\nconfig BR2_TARGET_ROOTFS_UBIFS_RT_ZLIB\n\tbool \"gzip\"\n\thelp\n\t  Use zlib compression at run-time.\n\nconfig BR2_TARGET_ROOTFS_UBIFS_RT_LZO\n\tbool \"lzo\"\n\thelp\n\t  Use lzo compression at run-time.\n\nendchoice\n\nchoice\n\tprompt \"Compression method\"\n\tdefault BR2_TARGET_ROOTFS_UBIFS_NONE\n\thelp\n\t  Select which compression format to compress the final image\n\t  into.\n\nconfig BR2_TARGET_ROOTFS_UBIFS_NONE\n\tbool \"no compression\"\n\thelp\n\t  Do not compress the ubifs filesystem.\n\nconfig BR2_TARGET_ROOTFS_UBIFS_GZIP\n\tbool \"gzip\"\n\thelp\n\t  Do compress the ubifs filesystem with gzip.\n\nconfig BR2_TARGET_ROOTFS_UBIFS_BZIP2\n\tbool \"bzip2\"\n\thelp\n\t  Do compress the ubifs filesystem with bzip2.\n\nconfig BR2_TARGET_ROOTFS_UBIFS_LZMA\n\tbool \"lzma\"\n\thelp\n\t  Do compress the ubifs filesystem with lzma.\n\nconfig BR2_TARGET_ROOTFS_UBIFS_LZO\n\tbool \"lzo\"\n\thelp\n\t  Do compress the ubifs filesystem with lzop.\n\nconfig BR2_TARGET_ROOTFS_UBIFS_XZ\n\tbool \"xz\"\n\thelp\n\t  Do compress the ubifs filesystem with xz.\n\nendchoice\n\nconfig BR2_TARGET_ROOTFS_UBIFS_OPTS\n\tstring \"Additional mkfs.ubifs options\"\n\thelp\n\t  Any additional mkfs.ubifs options you may want to include.\n\nendif # BR2_TARGET_ROOTFS_UBIFS\n"
  },
  {
    "path": "fs/ubifs/ubifs.mk",
    "content": "################################################################################\n#\n# Build the ubifs root filesystem image\n#\n################################################################################\n\nUBIFS_OPTS = \\\n\t-e $(BR2_TARGET_ROOTFS_UBIFS_LEBSIZE) \\\n\t-c $(BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT) \\\n\t-m $(BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE)\n\nifeq ($(BR2_TARGET_ROOTFS_UBIFS_RT_ZLIB),y)\nUBIFS_OPTS += -x zlib\nendif\nifeq ($(BR2_TARGET_ROOTFS_UBIFS_RT_LZO),y)\nUBIFS_OPTS += -x lzo\nendif\nifeq ($(BR2_TARGET_ROOTFS_UBIFS_RT_NONE),y)\nUBIFS_OPTS += -x none\nendif\n\nUBIFS_OPTS += $(call qstrip,$(BR2_TARGET_ROOTFS_UBIFS_OPTS))\n\nROOTFS_UBIFS_DEPENDENCIES = host-mtd\n\ndefine ROOTFS_UBIFS_CMD\n\t$(HOST_DIR)/sbin/mkfs.ubifs -d $(TARGET_DIR) $(UBIFS_OPTS) -o $@\nendef\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "fs/yaffs2/Config.in",
    "content": "config BR2_TARGET_ROOTFS_YAFFS2\n\tbool \"yaffs2 root filesystem\"\n\thelp\n\t  Build a yaffs2 root filesystem\n"
  },
  {
    "path": "fs/yaffs2/yaffs2.mk",
    "content": "################################################################################\n#\n# Build the yaffs2 root filesystem image\n#\n################################################################################\n\nROOTFS_YAFFS2_DEPENDENCIES = host-yaffs2utils\n\ndefine ROOTFS_YAFFS2_CMD\n\t$(HOST_DIR)/bin/mkyaffs2 --all-root $(TARGET_DIR) $@\nendef\n\n$(eval $(rootfs))\n"
  },
  {
    "path": "linux/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional",
    "content": "From 63a3f603413ffe82ad775f2d62a5afff87fd94a0 Mon Sep 17 00:00:00 2001\nFrom: \"H. Peter Anvin\" <hpa@linux.intel.com>\nDate: Thu, 7 Feb 2013 17:14:08 -0800\nSubject: [PATCH] timeconst.pl: Eliminate Perl warning\n\ndefined(@array) is deprecated in Perl and gives off a warning.\nRestructure the code to remove that warning.\n\n[ hpa: it would be interesting to revert to the timeconst.bc script.\n  It appears that the failures reported by akpm during testing of\n  that script was due to a known broken version of make, not a problem\n  with bc.  The Makefile rules could probably be restructured to avoid\n  the make bug, or it is probably old enough that it doesn't matter. ]\n\nReported-by: Andi Kleen <ak@linux.intel.com>\nSigned-off-by: H. Peter Anvin <hpa@linux.intel.com>\nCc: Andrew Morton <akpm@linux-foundation.org>\nCc: <stable@vger.kernel.org>\nSigned-off-by: Gustavo Zacarias <gustavo.zacarias@free-electrons.com>\n---\nPatch status: upstream\n\n kernel/timeconst.pl | 6 ++----\n 1 file changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/kernel/timeconst.pl b/kernel/timeconst.pl\nindex eb51d76..3f42652 100644\n--- a/kernel/timeconst.pl\n+++ b/kernel/timeconst.pl\n@@ -369,10 +369,8 @@ if ($hz eq '--can') {\n \t\tdie \"Usage: $0 HZ\\n\";\n \t}\n \n-\t@val = @{$canned_values{$hz}};\n-\tif (!defined(@val)) {\n-\t\t@val = compute_values($hz);\n-\t}\n+\t$cv = $canned_values{$hz};\n+\t@val = defined($cv) ? @$cv : compute_values($hz);\n \toutput($hz, @val);\n }\n exit 0;\n-- \n2.4.10\n\n"
  },
  {
    "path": "linux/Config.ext.in",
    "content": "menu \"Linux Kernel Extensions\"\n\n#-------------------------------------------------------------------------------\n# Xenomai\nconfig BR2_LINUX_KERNEL_EXT_XENOMAI\n\tbool \"Adeos/Xenomai Real-time patch\"\n\tdepends on BR2_PACKAGE_XENOMAI_COBALT_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU # xenomai\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # xenomai\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # xenomai\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # xenomai\n\tselect BR2_PACKAGE_XENOMAI\n\thelp\n\t  Xenomai is split in two parts: a kernel part and a userspace\n\t  part. Enabling this option automatically selects the Xenomai\n\t  package and helps in patching the Linux kernel built by\n\t  Buildroot with the Xenomai kernel part (ie Adeos/Ipipe).\n\n\t  You can find the currently supported kernel versions by\n\t  looking at the available patches in the Xenomai sources\n\t  tree: ksrc/arch/$(ARCH)/patches\n\n\t  However, it is recommended to use the latest version of the\n\t  Adeos/Ipipe patch available at\n\t  https://xenomai.org/downloads/ipipe/\n\n\t  Xenomai is know to support Blackfin, SH4, x86, ARM, NIOS2\n\t  and PowerPC architectures.\n\nconfig BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH\n\tstring \"Path/URL for Adeos patch file\"\n\tdepends on BR2_LINUX_KERNEL_EXT_XENOMAI\n\thelp\n\t  Optionally, explicitly specify where to find the Adeos\n\t  patch to use.\n\t  Examples:\n\t  https://xenomai.org/downloads/ipipe/v4.x/arm/ipipe-core-4.19.33-arm-2.patch\n\t  or /home/foo/ipipe-core-4.19.33-arm-2.patch\n\t  Please verify that your kernel version in Buildroot matches.\n\ncomment \"xenomai needs a uClibc or glibc toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_XENOMAI_COBALT_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL\n\n#-------------------------------------------------------------------------------\n# RTAI\nconfig BR2_LINUX_KERNEL_EXT_RTAI\n\tbool \"RTAI Real-time patch\"\n\tselect BR2_PACKAGE_RTAI\n\thelp\n\t  RTAI Kernel part.\n\n#-------------------------------------------------------------------------------\n# ev3dev Linux drivers\nconfig BR2_LINUX_KERNEL_EXT_EV3DEV_LINUX_DRIVERS\n\tbool \"ev3dev Linux drivers\"\n\tselect BR2_PACKAGE_EV3DEV_LINUX_DRIVERS\n\thelp\n\t  Linux drivers for LEGO MINDSTORMS EV3 from the ev3dev project.\n\n\t  https://github.com/ev3dev/lego-linux-drivers\n\n#-------------------------------------------------------------------------------\n# fbtft\nconfig BR2_LINUX_KERNEL_EXT_FBTFT\n\tbool \"FB TFT drivers\"\n\tselect BR2_PACKAGE_FBTFT\n\thelp\n\t  Linux Framebuffer drivers for small TFT LCD display modules,\n\t  e.g. Adafruit PiTFT displays for Raspberry Pi (this extra\n\t  package is only needed for linux kernels until v3.19, since\n\t  v4.0 the drivers are included in the staging area).\n\n\t  To enable fbtft, e.g. for Adafruit 2.8 PiTFT, enable the\n\t  following kernel configurations:\n\t  - CONFIG_SPI\n\t  - CONFIG_GPIOLIB\n\t  - CONFIG_FB\n\t  - CONFIG_FB_TFT\n\t  - CONFIG_FB_TFT_ILI9341\n\n\t  https://github.com/notro/fbtft\n\n# aufs-standalone\nconfig BR2_LINUX_KERNEL_EXT_AUFS\n\tbool \"Aufs Filesystem Module patch\"\n\tselect BR2_PACKAGE_AUFS\n\thelp\n\t  Aufs is split in two parts: a kernel part and a userspace\n\t  part. Enabling this option automatically selects the aufs\n\t  standalone (module) package and patches the Linux kernel\n\t  built by Buildroot with the aufs kernel part (ie fs/aufs).\n\n\t  It is important to use the correct branch of aufs-standalone.\n\nif BR2_LINUX_KERNEL_EXT_AUFS\n\nchoice\n\tbool \"aufs-standalone series\"\n\thelp\n\t  Select the major series of this version. This must match the\n\t  major version of your kernel (e.g. for kernels 3.x, select\n\t  aufs3.x; for kernels 4.x, select aufs4.x; for kernels 5.x,\n\t  select aufs5.x ).\n\n\t  Note: neither aufs1.x nor aufs2.x (both for kernels older than\n\t  3.x) are supported.\n\nconfig BR2_LINUX_KERNEL_EXT_AUFS_SERIES_3\n\tbool \"aufs3.x\"\n\nconfig BR2_LINUX_KERNEL_EXT_AUFS_SERIES_4\n\tbool \"aufs4.x\"\n\nconfig BR2_LINUX_KERNEL_EXT_AUFS_SERIES_5\n\tbool \"aufs5.x\"\n\nendchoice\n\nconfig BR2_LINUX_KERNEL_EXT_AUFS_SERIES\n\tint\n\tdefault 3 if BR2_LINUX_KERNEL_EXT_AUFS_SERIES_3\n\tdefault 4 if BR2_LINUX_KERNEL_EXT_AUFS_SERIES_4\n\tdefault 5 if BR2_LINUX_KERNEL_EXT_AUFS_SERIES_5\n\nconfig BR2_LINUX_KERNEL_EXT_AUFS_VERSION\n\tstring \"aufs-standalone version\"\n\tdefault \"\"\n\thelp\n\t  The version you choose must match that of your kernel.\n\t  Usually, the sha1 of the cset you want to use; avoid using a\n\t  branch name as this yields non-reproducible builds.\n\n\t  See the following resources to see what versions are\n\t  available:\n\n\t  For aufs3.x:\n\t  https://sourceforge.net/p/aufs/aufs3-standalone/ref/master/branches/\n\t  For aufs4.x:\n\t  https://github.com/sfjro/aufs4-standalone/branches/all\n\t  For aufs5.x:\n\t  https://github.com/sfjro/aufs5-standalone/branches/all\n\nendif # aufs\n\nendmenu\n"
  },
  {
    "path": "linux/Config.in",
    "content": "menu \"Kernel\"\n\nconfig BR2_LINUX_KERNEL\n\tbool \"Linux Kernel\"\n\tselect BR2_PACKAGE_HOST_KMOD # Unconditional, even if modules not enabled\n\tselect BR2_PACKAGE_HOST_IMAGEMAGICK if BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH != \"\"\n\thelp\n\t  Enable this option if you want to build a Linux kernel for\n\t  your embedded device\n\nif BR2_LINUX_KERNEL\n\n# Packages that need to have a kernel with support for loadable modules,\n# but do not use the kernel-modules infrastructure, should select that\n# option.\nconfig BR2_LINUX_NEEDS_MODULES\n\tbool\n\n#\n# Version selection. We provide the choice between:\n#\n#  1. A single fairly recent stable kernel version\n#  2. A custom stable version\n#  3. A custom tarball\n#  4. A set of custom repository locations\n#\nchoice\n\tprompt \"Kernel version\"\n\nconfig BR2_LINUX_KERNEL_LATEST_VERSION\n\tbool \"Latest version (5.15)\"\n\nconfig BR2_LINUX_KERNEL_LATEST_CIP_VERSION\n\tbool \"Latest CIP SLTS version (4.19.198-cip54)\"\n\thelp\n\t  CIP launched in the spring of 2016 to address the needs of\n\t  organizations in industries such as power generation and\n\t  distribution, water, oil and gas, transportation, building\n\t  automation and more for reliable and secure Linux-based\n\t  embedded systems that can be sustained over a period of\n\t  10 to as many as 60 years.\n\t  The project's goal is to provide an open source base layer\n\t  of industrial-grade software that permits the use and\n\t  implementation of software building blocks that meet\n\t  these requirements.\n\n\t  The CIP community plans to maintain 4.19 for security and\n\t  bug fixes for more than 10 years.\n\n\t  https://www.cip-project.org\n\nconfig BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION\n\tbool \"Latest CIP RT SLTS version (4.19.198-cip54-rt21)\"\n\thelp\n\t  Same as the CIP version, but this is the PREEMPT_RT realtime\n\t  variant.\n\n\t  The CIP community plans to maintain 4.19 for security and\n\t  bug fixes for more than 10 years.\n\n\t  https://www.cip-project.org\n\nconfig BR2_LINUX_KERNEL_CUSTOM_VERSION\n\tbool \"Custom version\"\n\thelp\n\t  This option allows to use a specific official version from\n\t  kernel.org, like 2.6.x, 2.6.x.y, 3.x.y, ...\n\n\t  Note: you cannot use this option to select a _longterm_ 2.6\n\t  kernel, because these kernels are not located at the standard\n\t  URL at kernel.org. Instead, select \"Custom tarball\" and\n\t  specify the right URL directly.\n\nconfig BR2_LINUX_KERNEL_CUSTOM_TARBALL\n\tbool \"Custom tarball\"\n\thelp\n\t  This option allows to specify a URL pointing to a kernel\n\t  source tarball. This URL can use any protocol recognized by\n\t  Buildroot, like http://, ftp://, file:// or scp://.\n\n\t  When pointing to a local tarball using file://, you may want\n\t  to use a make variable like $(TOPDIR) to reference the root of\n\t  the Buildroot tree.\n\nconfig BR2_LINUX_KERNEL_CUSTOM_GIT\n\tbool \"Custom Git repository\"\n\thelp\n\t  This option allows Buildroot to get the Linux kernel source\n\t  code from a Git repository.\n\nconfig BR2_LINUX_KERNEL_CUSTOM_HG\n\tbool \"Custom Mercurial repository\"\n\thelp\n\t  This option allows Buildroot to get the Linux kernel source\n\t  code from a Mercurial repository.\n\nconfig BR2_LINUX_KERNEL_CUSTOM_SVN\n\tbool \"Custom Subversion repository\"\n\thelp\n\t  This option allows Buildroot to get the Linux kernel source\n\t  code from a Subversion repository.\n\nendchoice\n\nconfig BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE\n\tstring \"Kernel version\"\n\tdepends on BR2_LINUX_KERNEL_CUSTOM_VERSION\n\nconfig BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION\n\tstring \"URL of custom kernel tarball\"\n\tdepends on BR2_LINUX_KERNEL_CUSTOM_TARBALL\n\nif BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG || BR2_LINUX_KERNEL_CUSTOM_SVN\n\nconfig BR2_LINUX_KERNEL_CUSTOM_REPO_URL\n\tstring \"URL of custom repository\"\n\nconfig BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION\n\tstring \"Custom repository version\"\n\thelp\n\t  Revision to use in the typical format used by\n\t  Git/Mercurial/Subversion E.G. a sha id, a tag, branch, ..\n\nendif\n\nconfig BR2_LINUX_KERNEL_VERSION\n\tstring\n\tdefault \"5.15.6\" if BR2_LINUX_KERNEL_LATEST_VERSION\n\tdefault \"4.19.198-cip54\" if BR2_LINUX_KERNEL_LATEST_CIP_VERSION\n\tdefault \"4.19.198-cip54-rt21\" if BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION\n\tdefault BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE \\\n\t\tif BR2_LINUX_KERNEL_CUSTOM_VERSION\n\tdefault \"custom\" if BR2_LINUX_KERNEL_CUSTOM_TARBALL\n\tdefault BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION \\\n\t\tif BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG || BR2_LINUX_KERNEL_CUSTOM_SVN\n\n#\n# Patch selection\n#\n\nconfig BR2_LINUX_KERNEL_PATCH\n\tstring \"Custom kernel patches\"\n\thelp\n\t  A space-separated list of patches to apply to the\n\t  kernel. Each patch can be described as an URL, a local file\n\t  path, or a directory. In the case of a directory, all files\n\t  matching *.patch in the directory will be applied.\n\n#\n# Configuration selection\n#\n\nchoice\n\tprompt \"Kernel configuration\"\n\tdefault BR2_LINUX_KERNEL_USE_DEFCONFIG\n\nconfig BR2_LINUX_KERNEL_USE_DEFCONFIG\n\tbool \"Using an in-tree defconfig file\"\n\nconfig BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG\n\tbool \"Use the architecture default configuration\"\n\thelp\n\t  This option will use the default configuration for the\n\t  selected architecture. I.e, it is equivalent to running\n\t  \"make ARCH=<foo> defconfig\". This is useful on architectures\n\t  that have a single defconfig file, such as ARM64.\n\nconfig BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG\n\tbool \"Using a custom (def)config file\"\n\nendchoice\n\nconfig BR2_LINUX_KERNEL_DEFCONFIG\n\tstring \"Defconfig name\"\n\tdepends on BR2_LINUX_KERNEL_USE_DEFCONFIG\n\thelp\n\t  Name of the kernel defconfig file to use, without the\n\t  trailing _defconfig.  The defconfig is located in\n\t  arch/<arch>/configs in the kernel tree.\n\nconfig BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE\n\tstring \"Configuration file path\"\n\tdepends on BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG\n\thelp\n\t  Path to the kernel configuration file\n\n\t  Note: this can be a defconfig file or a complete .config file,\n\t  which can later be saved back with make\n\t  linux-update-(def)config.\n\nconfig BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES\n\tstring \"Additional configuration fragment files\"\n\thelp\n\t  A space-separated list of kernel configuration fragment files,\n\t  that will be merged to the main kernel configuration file.\n\nconfig BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH\n\tstring \"Custom boot logo file path\"\n\thelp\n\t  Use a custom Linux framebuffer boot logo.\n\t  Custom logo should be in PNG or JPEG format, it will be\n\t  converted to the linux kernel format (224 colors only)\n\t  and copied over the original logo file.\n\n#\n# Binary format\n#\n\nchoice\n\tprompt \"Kernel binary format\"\n\tdefault BR2_LINUX_KERNEL_ZIMAGE if BR2_arm || BR2_armeb\n\nconfig BR2_LINUX_KERNEL_UIMAGE\n\tbool \"uImage\"\n\tdepends on BR2_arc || BR2_arm || BR2_armeb || \\\n\t\t   BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \\\n\t\t   BR2_sh || BR2_mips || BR2_mipsel || \\\n\t\t   BR2_mips64 || BR2_mips64el || BR2_xtensa\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS\n\nconfig BR2_LINUX_KERNEL_APPENDED_UIMAGE\n\tbool \"uImage with appended DT\"\n\tdepends on BR2_arm || BR2_armeb\n\tselect BR2_LINUX_KERNEL_DTS_SUPPORT\n\tselect BR2_LINUX_KERNEL_APPENDED_DTB\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS\n\nconfig BR2_LINUX_KERNEL_BZIMAGE\n\tbool \"bzImage\"\n\tdepends on BR2_i386 || BR2_x86_64 || BR2_s390x\n\nconfig BR2_LINUX_KERNEL_ZIMAGE\n\tbool \"zImage\"\n\tdepends on BR2_arm || BR2_armeb || BR2_powerpc || \\\n\t\t   BR2_powerpc64 || BR2_powerpc64le || BR2_sparc || \\\n\t\t   BR2_sh || BR2_xtensa\n\nconfig BR2_LINUX_KERNEL_ZIMAGE_EPAPR\n\tbool \"zImage.epapr\"\n\tdepends on BR2_powerpc64 || BR2_powerpc64le\n\nconfig BR2_LINUX_KERNEL_APPENDED_ZIMAGE\n\tbool \"zImage with appended DT\"\n\tdepends on BR2_arm || BR2_armeb\n\tselect BR2_LINUX_KERNEL_DTS_SUPPORT\n\tselect BR2_LINUX_KERNEL_APPENDED_DTB\n\nconfig BR2_LINUX_KERNEL_CUIMAGE\n\tbool \"cuImage\"\n\tdepends on BR2_powerpc\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS\n\tselect BR2_LINUX_KERNEL_DTS_SUPPORT\n\tselect BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT\n\nconfig BR2_LINUX_KERNEL_SIMPLEIMAGE\n\tbool \"simpleImage\"\n\tdepends on BR2_microblaze\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS\n\tselect BR2_LINUX_KERNEL_DTS_SUPPORT\n\tselect BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT\n\nconfig BR2_LINUX_KERNEL_IMAGE\n\tbool \"Image\"\n\tdepends on BR2_aarch64 || BR2_riscv\n\nconfig BR2_LINUX_KERNEL_IMAGEGZ\n\tbool \"Image.gz\"\n\tdepends on BR2_aarch64 || BR2_riscv\n\nconfig BR2_LINUX_KERNEL_LINUX_BIN\n\tbool \"linux.bin\"\n\tdepends on BR2_microblaze\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS\n\nconfig BR2_LINUX_KERNEL_VMLINUX_BIN\n\tbool \"vmlinux.bin\"\n\tdepends on BR2_mips || BR2_mipsel || BR2_sh\n\nconfig BR2_LINUX_KERNEL_VMLINUX\n\tbool \"vmlinux\"\n\nconfig BR2_LINUX_KERNEL_VMLINUZ\n\tbool \"vmlinuz\"\n\tdepends on BR2_mips || BR2_mipsel\n\nconfig BR2_LINUX_KERNEL_VMLINUZ_BIN\n\tbool \"vmlinuz.bin\"\n\tdepends on BR2_mips || BR2_mipsel\n\nconfig BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM\n\tbool \"custom target\"\n\thelp\n\t  For certain cases a board-specific target image must be\n\t  used.  For example, on powerPC where the OpenFirmware\n\t  description is attached in a board-specific kernel image\n\t  target like 'cuImage.mpc8379_rdb'.\n\n\t  Select this option and specify the make target in \"Kernel\n\t  image target name\".\n\nendchoice\n\n#\n# Kernel compression format\n#\n\nchoice\n\tprompt \"Kernel compression format\"\n\thelp\n\t  This selection will just ensure that the correct host tools\n\t  are built. The actual compression for the kernel should be\n\t  selected in the kernel configuration menu.\n\nconfig BR2_LINUX_KERNEL_GZIP\n\tbool \"gzip compression\"\n\nconfig BR2_LINUX_KERNEL_LZ4\n\tbool \"lz4 compression\"\n\nconfig BR2_LINUX_KERNEL_LZMA\n\tbool \"lzma compression\"\n\nconfig BR2_LINUX_KERNEL_LZO\n\tbool \"lzo compression\"\n\nconfig BR2_LINUX_KERNEL_XZ\n\tbool \"xz compression\"\n\nconfig BR2_LINUX_KERNEL_ZSTD\n\tbool \"zstd compression\"\n\nconfig BR2_LINUX_KERNEL_UNCOMPRESSED\n\tbool \"uncompressed\"\n\tdepends on BR2_s390x\n\nendchoice\n\nconfig BR2_LINUX_KERNEL_IMAGE_TARGET_NAME\n\tstring \"Kernel image target name\"\n\tdepends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM\n\thelp\n\t  Specify the kernel make target to build the kernel that you\n\t  need.\n\nconfig BR2_LINUX_KERNEL_IMAGE_NAME\n\tstring \"Kernel image name\"\n\tdepends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM\n\thelp\n\t  The filename of the kernel image, if it is different from\n\t  the make target (above). Defaults to\n\t  BR2_LINUX_KERNEL_IMAGE_TARGET_NAME. If specified, the\n\t  filename is relative to arch/ARCH/boot/.\n\n\t  If unsure, leave it empty.\n\nconfig BR2_LINUX_KERNEL_UIMAGE_LOADADDR\n\tstring \"load address (for 3.7+ multi-platform image)\"\n\tdepends on BR2_arm || BR2_armeb\n\tdepends on BR2_LINUX_KERNEL_UIMAGE || BR2_LINUX_KERNEL_APPENDED_UIMAGE\n\thelp\n\t  If your ARM system's Linux kernel is configured with the new\n\t  (3.7+) multi-architecture support (CONFIG_ARCH_MULTIPLATFORM=y\n\t  in your kernel config), then it is necessary to specify a\n\t  kernel load address when building the uImage. This should be a\n\t  hexadecimal string beginning with 0x, for example: 0x00008000.\n\n\t  If unsure, let this option empty.\n\nconfig BR2_LINUX_KERNEL_DTS_SUPPORT\n\tbool \"Build a Device Tree Blob (DTB)\"\n\thelp\n\t  Compile one or more device tree sources into device tree\n\t  blobs.\n\t  Select the dts files to compile in the options below.\n\nif BR2_LINUX_KERNEL_DTS_SUPPORT\n\n# We have mainly three cases when it comes to device tree support:\n#   1) We don't want any support at all. Then the ..DTS_SUPPORT\n#      variable won't be set\n#   2) We want device tree support, so we need the user to enter the\n#      device tree name or the path to the custom device he uses, but\n#      the kernel abstracts this from us and only build an image that\n#      looks like a regular kernel image. In this case, we only need\n#      to derive the kernel image name from the given device tree\n#      name, and all the rest is as usual\n#   3) We want device tree support, but the kernel requires us to\n#      build the device tree blob separately. In this case, some\n#      more logic will be needed.\n# The variable below address the second case, were you only want\n# limited actions from buildroot.\nconfig BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT\n\tbool \"DTB is built by kernel itself\"\n\thelp\n\t  Normally, the device tree(s) to be built have to be passed\n\t  explicitly to the kernel build system. For some binary\n\t  formats, however, the kernel build system links in the\n\t  device tree directly in the kernel binary. Select this option\n\t  if you have such a kernel binary format.\n\nconfig BR2_LINUX_KERNEL_APPENDED_DTB\n\tbool\n\nconfig BR2_LINUX_KERNEL_INTREE_DTS_NAME\n\tstring \"In-tree Device Tree Source file names\"\n\thelp\n\t  Name of in-tree device tree source file, without\n\t  the trailing .dts. You can provide a list of\n\t  dts files to build, separated by spaces.\n\nconfig BR2_LINUX_KERNEL_CUSTOM_DTS_PATH\n\tstring \"Out-of-tree Device Tree Source file paths\"\n\thelp\n\t  Path to the out-of-tree device tree source files.\n\t  You can provide a list of dts paths to copy and\n\t  build, separated by spaces.\n\nconfig BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME\n\tbool \"Keep the directory name of the Device Tree\"\n\thelp\n\t  If enabled, the device tree blobs keep their\n\t  directory prefixes when they get copied to the\n\t  output image directory or the target directory.\n\nconfig BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT\n\tbool \"Build Device Tree with overlay support\"\n\thelp\n\t  If enabled, pass the \"-@\" option to dtc, such that\n\t  symbols are generated in the compiled Device Tree.\n\t  Choose this option to support Device Tree overlays\n\t  on the target system.\n\nendif\n\nconfig BR2_LINUX_KERNEL_INSTALL_TARGET\n\tbool \"Install kernel image to /boot in target\"\n\tdepends on !BR2_TARGET_ROOTFS_INITRAMFS\n\thelp\n\t  Select this option to have the kernel image installed to\n\t  /boot in the target root filesystem, as is typically done on\n\t  x86/x86_64 systems.\n\n\t  Note that this option also installs the Device Tree Blobs to\n\t  /boot if DTBs have been generated by the kernel build\n\t  process.\n\nconfig BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL\n\tbool \"Needs host OpenSSL\"\n\thelp\n\t  Some Linux kernel configuration options (such as\n\t  CONFIG_SYSTEM_TRUSTED_KEYRING) require building a host\n\t  program called extract-cert, which itself needs\n\t  OpenSSL. Enabling this option will ensure host-openssl gets\n\t  built before the Linux kernel.\n\n\t  Enable this option if you get a Linux kernel build failure\n\t  such as \"scripts/extract-cert.c:21:25: fatal error:\n\t  openssl/bio.h: No such file or directory\".\n\nconfig BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF\n\tbool \"Needs host libelf\"\n\thelp\n\t  Some Linux kernel configuration options (such as\n\t  CONFIG_UNWINDER_ORC) require building a host program that\n\t  needs libelf. Enabling this option will ensure host-elfutils\n\t  (which provides libelf) gets built before the Linux kernel.\n\n\t  Enable this option if you get a Linux kernel build failure\n\t  such as \"Cannot generate ORC metadata for\n\t  CONFIG_UNWINDER_ORC=y, please install libelf-dev,\n\t  libelf-devel or elfutils-libelf-devel\".\n\n# Linux extensions\nsource \"linux/Config.ext.in\"\n\n# Linux tools\nsource \"package/linux-tools/Config.in\"\n\nendif # BR2_LINUX_KERNEL\n\nendmenu\n"
  },
  {
    "path": "linux/linux-ext-aufs.mk",
    "content": "################################################################################\n#\n# Patch the linux kernel with aufs extension\n#\n################################################################################\n\nLINUX_EXTENSIONS += aufs\n\ndefine AUFS_PREPARE_KERNEL\n\tif test -d $(@D)/fs/aufs/; then \\\n\t\techo \"Your kernel already supports AUFS.\"; \\\n\t\texit 1; \\\n\tfi\n\t$(APPLY_PATCHES) $(@D) $(AUFS_DIR) \\\n\t\taufs$(BR2_PACKAGE_AUFS_SERIES)-kbuild.patch \\\n\t\taufs$(BR2_PACKAGE_AUFS_SERIES)-base.patch \\\n\t\taufs$(BR2_PACKAGE_AUFS_SERIES)-mmap.patch \\\n\t\taufs$(BR2_PACKAGE_AUFS_SERIES)-standalone.patch\n\tcp -r $(AUFS_DIR)/fs/aufs/ $(@D)/fs/\n\tcp $(AUFS_DIR)/include/uapi/linux/aufs_type.h $(@D)/include/uapi/linux/\nendef\n"
  },
  {
    "path": "linux/linux-ext-ev3dev-linux-drivers.mk",
    "content": "################################################################################\n#\n# Patch the linux kernel with ev3dev extension\n#\n################################################################################\n\nLINUX_EXTENSIONS += ev3dev-linux-drivers\n\ndefine EV3DEV_LINUX_DRIVERS_PREPARE_KERNEL\n\tmkdir -p $(LINUX_DIR)/drivers/lego\n\tcp -dpfr $(EV3DEV_LINUX_DRIVERS_DIR)/* $(LINUX_DIR)/drivers/lego/\nendef\n"
  },
  {
    "path": "linux/linux-ext-fbtft.mk",
    "content": "################################################################################\n#\n# Patch the linux kernel with fbtft extension\n#\n################################################################################\n\nLINUX_EXTENSIONS += fbtft\n\n# for linux >= 3.15 install to drivers/video/fbdev/fbtft\n# for linux < 3.15 install to drivers/video/fbtft\ndefine FBTFT_PREPARE_KERNEL\n\tif [ -e $(LINUX_DIR)/drivers/video/fbdev ]; then \\\n\t\tdest=drivers/video/fbdev ; \\\n\telse \\\n\t\tdest=drivers/video ; \\\n\tfi ; \\\n\tmkdir -p $(LINUX_DIR)/$${dest}/fbtft; \\\n\tcp -dpfr $(FBTFT_DIR)/* $(LINUX_DIR)/$${dest}/fbtft/ ; \\\n\techo \"source \\\"$${dest}/fbtft/Kconfig\\\"\" \\\n\t\t>> $(LINUX_DIR)/$${dest}/Kconfig ; \\\n\techo 'obj-y += fbtft/' >> $(LINUX_DIR)/$${dest}/Makefile\nendef\n"
  },
  {
    "path": "linux/linux-ext-rtai.mk",
    "content": "################################################################################\n#\n# Patch the linux kernel with RTAI extension\n#\n################################################################################\n\nLINUX_EXTENSIONS += rtai\n\nifeq ($(KERNEL_ARCH),i386)\nRTAI_ARCH = x86\nelse ifeq ($(KERNEL_ARCH),x86_64)\nRTAI_ARCH = x86\nelse ifeq ($(KERNEL_ARCH),powerpc)\nRTAI_ARCH = ppc\nelse\nRTAI_ARCH = $(KERNEL_ARCH)\nendif\n\n# Prepare kernel patch\ndefine RTAI_PREPARE_KERNEL\n\tkver=`$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelversion` ; \\\n\tif test -f $(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/hal-linux-$${kver}-*patch ; then \\\n\t\t$(APPLY_PATCHES) $(LINUX_DIR) \\\n\t\t\t$(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/ \\\n\t\t\thal-linux-$${kver}-*patch ; \\\n\telse \\\n\t\techo \"No RTAI patch for your kernel version\" ; \\\n\t\texit 1 ; \\\n\tfi\nendef\n"
  },
  {
    "path": "linux/linux-ext-xenomai.mk",
    "content": "################################################################################\n#\n# Patch the linux kernel with Adeos/Xenomai extension\n#\n################################################################################\n\nLINUX_EXTENSIONS += xenomai\n\n# Adeos patch version\nXENOMAI_ADEOS_PATCH = $(call qstrip,$(BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH))\n\nifneq ($(filter ftp://% http://% https://%,$(XENOMAI_ADEOS_PATCH)),)\nXENOMAI_ADEOS_PATCH_NAME = $(notdir $(XENOMAI_ADEOS_PATCH))\nXENOMAI_ADEOS_PATCH_PATH = $(LINUX_DL_DIR)/$(XENOMAI_ADEOS_PATCH_NAME)\n# check-package TypoInPackageVariable\nLINUX_EXTRA_DOWNLOADS += $(XENOMAI_ADEOS_PATCH)\nBR_NO_CHECK_HASH_FOR += $(XENOMAI_ADEOS_PATCH_NAME)\nelse\nXENOMAI_ADEOS_PATCH_PATH = $(XENOMAI_ADEOS_PATCH)\nendif\n\nifeq ($(XENOMAI_ADEOS_PATCH),)\nXENOMAI_ADEOS_OPTS = --default\nelse\nXENOMAI_ADEOS_OPTS = --adeos=$(XENOMAI_ADEOS_PATCH_PATH)\nendif\n\n# Prepare kernel patch\ndefine XENOMAI_PREPARE_KERNEL\n\t$(XENOMAI_DIR)/scripts/prepare-kernel.sh \\\n\t\t--linux=$(LINUX_DIR) \\\n\t\t--arch=$(KERNEL_ARCH) \\\n\t\t$(XENOMAI_ADEOS_OPTS) \\\n\t\t--verbose\nendef\n"
  },
  {
    "path": "linux/linux.hash",
    "content": "# From https://www.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc\nsha256  b3e9ba06a299a3e2ead4a15753bc46a3e0c90d3b92ffeed1034ccc9f13a717f0  linux-5.15.6.tar.xz\nsha256  f41a259cb2002dd2e3286524b2bb4e803f4f982992d092706ecea613584023b3  linux-5.14.21.tar.xz\nsha256  ef259a43f33ddb56001283f4f4e50af29b8a48fa066aed7371a90ebf38c29b70  linux-5.10.83.tar.xz\nsha256  6246fe1776d83039d71f74eb839f38ebdec23e1b37a7bf76f3bce13cbf0290be  linux-5.4.163.tar.xz\n# From https://www.kernel.org/pub/linux/kernel/v4.x/sha256sums.asc\nsha256  6d2f83619493e656276dbf22afcdb80f42320e697570419380773bb4916130fd  linux-4.4.293.tar.xz\nsha256  b55d77774ed631f57f736bcdab021f68167455c9daede7e9e4161b4d564d8b53  linux-4.9.291.tar.xz\nsha256  9784204f95cfc7de1c933088e6f9364e99a29988ae4e6b9353677637eb171aa0  linux-4.14.256.tar.xz\nsha256  8f4ecd71fbcdd733c2849e2e5afe59d351c463c9a699bdbf428d88fa911009db  linux-4.19.219.tar.xz\n# Locally computed\nsha256  e6fc0a999a180ad272b08ff71cbc67f2d3fdc6773d4a8069aefb8781b8e07821  linux-cip-4.19.198-cip54.tar.gz\nsha256  449668d678e458ddaf30f944b7ca7f5ce6ea6664f57d43ea4eb90b176e03b9cb  linux-cip-4.19.198-cip54-rt21.tar.gz\n\n# Licenses hashes\nsha256  fb5a425bd3b3cd6071a3a9aff9909a859e7c1158d54d32e07658398cd67eb6a0  COPYING\nsha256  f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79  LICENSES/preferred/GPL-2.0\nsha256  8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f  LICENSES/exceptions/Linux-syscall-note\n"
  },
  {
    "path": "linux/linux.mk",
    "content": "################################################################################\n#\n# Linux kernel target\n#\n################################################################################\n\nLINUX_VERSION = $(call qstrip,$(BR2_LINUX_KERNEL_VERSION))\nLINUX_LICENSE = GPL-2.0\nifeq ($(BR2_LINUX_KERNEL_LATEST_VERSION),y)\nLINUX_LICENSE_FILES = \\\n\tCOPYING \\\n\tLICENSES/preferred/GPL-2.0 \\\n\tLICENSES/exceptions/Linux-syscall-note\nendif\nLINUX_CPE_ID_VENDOR = linux\nLINUX_CPE_ID_PRODUCT = linux_kernel\nLINUX_CPE_ID_PREFIX = cpe:2.3:o\n\n# Compute LINUX_SOURCE and LINUX_SITE from the configuration\nifeq ($(BR2_LINUX_KERNEL_CUSTOM_TARBALL),y)\nLINUX_TARBALL = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION))\nLINUX_SITE = $(patsubst %/,%,$(dir $(LINUX_TARBALL)))\nLINUX_SOURCE = $(notdir $(LINUX_TARBALL))\nelse ifeq ($(BR2_LINUX_KERNEL_CUSTOM_GIT),y)\nLINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL))\nLINUX_SITE_METHOD = git\nelse ifeq ($(BR2_LINUX_KERNEL_CUSTOM_HG),y)\nLINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL))\nLINUX_SITE_METHOD = hg\nelse ifeq ($(BR2_LINUX_KERNEL_CUSTOM_SVN),y)\nLINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL))\nLINUX_SITE_METHOD = svn\nelse ifeq ($(BR2_LINUX_KERNEL_LATEST_CIP_VERSION)$(BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION),y)\nLINUX_SOURCE = linux-cip-$(LINUX_VERSION).tar.gz\nLINUX_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git/snapshot\nelse ifneq ($(findstring -rc,$(LINUX_VERSION)),)\n# Since 4.12-rc1, -rc kernels are generated from cgit. This also works for\n# older -rc kernels.\nLINUX_SITE = https://git.kernel.org/torvalds/t\nelse\nLINUX_SOURCE = linux-$(LINUX_VERSION).tar.xz\nifeq ($(findstring x2.6.,x$(LINUX_VERSION)),x2.6.)\nLINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v2.6\nelse\nLINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v$(firstword $(subst ., ,$(LINUX_VERSION))).x\nendif\nendif\n\nifeq ($(BR2_LINUX_KERNEL)$(BR2_LINUX_KERNEL_LATEST_VERSION),y)\nBR_NO_CHECK_HASH_FOR += $(LINUX_SOURCE)\nendif\n\nLINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH))\n\n# We have no way to know the hashes for user-supplied patches.\nBR_NO_CHECK_HASH_FOR += $(notdir $(LINUX_PATCHES))\n\n# We rely on the generic package infrastructure to download and apply\n# remote patches (downloaded from ftp, http or https). For local\n# patches, we can't rely on that infrastructure, because there might\n# be directories in the patch list (unlike for other packages).\nLINUX_PATCH = $(filter ftp://% http://% https://%,$(LINUX_PATCHES))\n\n# while the kernel is built for the target, the build may need various\n# host libraries depending on config (and version), so use\n# HOST_MAKE_ENV here. In particular, this ensures that our\n# host-pkgconf will look for host libraries and not target ones.\nLINUX_MAKE_ENV = \\\n\t$(HOST_MAKE_ENV) \\\n\tBR_BINARIES_DIR=$(BINARIES_DIR)\n\nLINUX_INSTALL_IMAGES = YES\nLINUX_DEPENDENCIES = host-kmod \\\n\t$(if $(BR2_PACKAGE_INTEL_MICROCODE),intel-microcode) \\\n\t$(if $(BR2_PACKAGE_LINUX_FIRMWARE),linux-firmware)\n\n# Starting with 4.16, the generated kconfig paser code is no longer\n# shipped with the kernel sources, so we need flex and bison, but\n# only if the host does not have them.\nLINUX_KCONFIG_DEPENDENCIES = \\\n\t$(BR2_BISON_HOST_DEPENDENCY) \\\n\t$(BR2_FLEX_HOST_DEPENDENCY)\n\n# Starting with 4.18, the kconfig in the kernel calls the\n# cross-compiler to check its capabilities. So we need the\n# toolchain before we can call the configurators.\nLINUX_KCONFIG_DEPENDENCIES += toolchain\n\n# host tools needed for kernel compression\nifeq ($(BR2_LINUX_KERNEL_LZ4),y)\nLINUX_DEPENDENCIES += host-lz4\nelse ifeq ($(BR2_LINUX_KERNEL_LZMA),y)\nLINUX_DEPENDENCIES += host-lzma\nelse ifeq ($(BR2_LINUX_KERNEL_LZO),y)\nLINUX_DEPENDENCIES += host-lzop\nelse ifeq ($(BR2_LINUX_KERNEL_XZ),y)\nLINUX_DEPENDENCIES += host-xz\nelse ifeq ($(BR2_LINUX_KERNEL_ZSTD),y)\nLINUX_DEPENDENCIES += host-zstd\nendif\nLINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_GZIP) += CONFIG_KERNEL_GZIP\nLINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZ4) += CONFIG_KERNEL_LZ4\nLINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZMA) += CONFIG_KERNEL_LZMA\nLINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZO) += CONFIG_KERNEL_LZO\nLINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_XZ) += CONFIG_KERNEL_XZ\nLINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_ZSTD) += CONFIG_KERNEL_ZSTD\nLINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_UNCOMPRESSED) += CONFIG_KERNEL_UNCOMPRESSED\n\nifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL),y)\nLINUX_DEPENDENCIES += host-openssl\nendif\n\nifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF),y)\nLINUX_DEPENDENCIES += host-elfutils host-pkgconf\nendif\n\n# If host-uboot-tools is selected by the user, assume it is needed to\n# create a custom image\nifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS),y)\nLINUX_DEPENDENCIES += host-uboot-tools\nendif\n\nifneq ($(ARCH_XTENSA_OVERLAY_FILE),)\ndefine LINUX_XTENSA_OVERLAY_EXTRACT\n\t$(call arch-xtensa-overlay-extract,$(@D),linux)\nendef\nLINUX_POST_EXTRACT_HOOKS += LINUX_XTENSA_OVERLAY_EXTRACT\nLINUX_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL)\nendif\n\n# We don't want to run depmod after installing the kernel. It's done in a\n# target-finalize hook, to encompass modules installed by packages.\nLINUX_MAKE_FLAGS = \\\n\tHOSTCC=\"$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS)\" \\\n\tARCH=$(KERNEL_ARCH) \\\n\tINSTALL_MOD_PATH=$(TARGET_DIR) \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tDEPMOD=$(HOST_DIR)/sbin/depmod\n\nifeq ($(BR2_REPRODUCIBLE),y)\nLINUX_MAKE_ENV += \\\n\tKBUILD_BUILD_VERSION=1 \\\n\tKBUILD_BUILD_USER=buildroot \\\n\tKBUILD_BUILD_HOST=buildroot \\\n\tKBUILD_BUILD_TIMESTAMP=\"$(shell LC_ALL=C date -d @$(SOURCE_DATE_EPOCH))\"\nendif\n\n# gcc-8 started warning about function aliases that have a\n# non-matching prototype.  This seems rather useful in general, but it\n# causes tons of warnings in the Linux kernel, where we rely on\n# abusing those aliases for system call entry points, in order to\n# sanitize the arguments passed from user space in registers.\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82435\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_8),y)\nLINUX_MAKE_ENV += KCFLAGS=-Wno-attribute-alias\nendif\n\nifeq ($(BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT),y)\nLINUX_MAKE_ENV += DTC_FLAGS=-@\nendif\n\n# Get the real Linux version, which tells us where kernel modules are\n# going to be installed in the target filesystem.\n# Filter out 'w' from MAKEFLAGS, to workaround a bug in make 4.1 (#13141)\nLINUX_VERSION_PROBED = `MAKEFLAGS='$(filter-out w,$(MAKEFLAGS))' $(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelrelease 2>/dev/null`\n\nLINUX_DTS_NAME += $(call qstrip,$(BR2_LINUX_KERNEL_INTREE_DTS_NAME))\n\n# We keep only the .dts files, so that the user can specify both .dts\n# and .dtsi files in BR2_LINUX_KERNEL_CUSTOM_DTS_PATH. Both will be\n# copied to arch/<arch>/boot/dts, but only the .dts files will\n# actually be generated as .dtb.\nLINUX_DTS_NAME += $(basename $(filter %.dts,$(notdir $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)))))\n\nLINUX_DTBS = $(addsuffix .dtb,$(LINUX_DTS_NAME))\n\nifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y)\nLINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_NAME))\nLINUX_TARGET_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME))\nifeq ($(LINUX_IMAGE_NAME),)\nLINUX_IMAGE_NAME = $(LINUX_TARGET_NAME)\nendif\nelse\nifeq ($(BR2_LINUX_KERNEL_UIMAGE),y)\nLINUX_IMAGE_NAME = uImage\nelse ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y)\nLINUX_IMAGE_NAME = uImage\nelse ifeq ($(BR2_LINUX_KERNEL_BZIMAGE),y)\nLINUX_IMAGE_NAME = bzImage\nelse ifeq ($(BR2_LINUX_KERNEL_ZIMAGE),y)\nLINUX_IMAGE_NAME = zImage\nelse ifeq ($(BR2_LINUX_KERNEL_ZIMAGE_EPAPR),y)\nLINUX_IMAGE_NAME = zImage.epapr\nelse ifeq ($(BR2_LINUX_KERNEL_APPENDED_ZIMAGE),y)\nLINUX_IMAGE_NAME = zImage\nelse ifeq ($(BR2_LINUX_KERNEL_CUIMAGE),y)\nLINUX_IMAGE_NAME = cuImage.$(firstword $(LINUX_DTS_NAME))\nelse ifeq ($(BR2_LINUX_KERNEL_SIMPLEIMAGE),y)\nLINUX_IMAGE_NAME = simpleImage.$(firstword $(LINUX_DTS_NAME))\nelse ifeq ($(BR2_LINUX_KERNEL_IMAGE),y)\nLINUX_IMAGE_NAME = Image\nelse ifeq ($(BR2_LINUX_KERNEL_IMAGEGZ),y)\nLINUX_IMAGE_NAME = Image.gz\nelse ifeq ($(BR2_LINUX_KERNEL_LINUX_BIN),y)\nLINUX_IMAGE_NAME = linux.bin\nelse ifeq ($(BR2_LINUX_KERNEL_VMLINUX_BIN),y)\nLINUX_IMAGE_NAME = vmlinux.bin\nelse ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y)\nLINUX_IMAGE_NAME = vmlinux\nelse ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y)\nLINUX_IMAGE_NAME = vmlinuz\nelse ifeq ($(BR2_LINUX_KERNEL_VMLINUZ_BIN),y)\nLINUX_IMAGE_NAME = vmlinuz.bin\nendif\n# The if-else blocks above are all the image types we know of, and all\n# come from a Kconfig choice, so we know we have LINUX_IMAGE_NAME set\n# to something\nLINUX_TARGET_NAME = $(LINUX_IMAGE_NAME)\nendif\n\nLINUX_KERNEL_UIMAGE_LOADADDR = $(call qstrip,$(BR2_LINUX_KERNEL_UIMAGE_LOADADDR))\nifneq ($(LINUX_KERNEL_UIMAGE_LOADADDR),)\nLINUX_MAKE_FLAGS += LOADADDR=\"$(LINUX_KERNEL_UIMAGE_LOADADDR)\"\nendif\n\n# Compute the arch path, since i386 and x86_64 are in arch/x86 and not\n# in arch/$(KERNEL_ARCH). Even if the kernel creates symbolic links\n# for bzImage, arch/i386 and arch/x86_64 do not exist when copying the\n# defconfig file.\nifeq ($(KERNEL_ARCH),i386)\nLINUX_ARCH_PATH = $(LINUX_DIR)/arch/x86\nelse ifeq ($(KERNEL_ARCH),x86_64)\nLINUX_ARCH_PATH = $(LINUX_DIR)/arch/x86\nelse\nLINUX_ARCH_PATH = $(LINUX_DIR)/arch/$(KERNEL_ARCH)\nendif\n\nifeq ($(BR2_LINUX_KERNEL_VMLINUX),y)\nLINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME)\nelse ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y)\nLINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME)\nelse ifeq ($(BR2_LINUX_KERNEL_VMLINUZ_BIN),y)\nLINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME)\nelse\nLINUX_IMAGE_PATH = $(LINUX_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME)\nendif # BR2_LINUX_KERNEL_VMLINUX\n\ndefine LINUX_APPLY_LOCAL_PATCHES\n\tfor p in $(filter-out ftp://% http://% https://%,$(LINUX_PATCHES)) ; do \\\n\t\tif test -d $$p ; then \\\n\t\t\t$(APPLY_PATCHES) $(@D) $$p \\*.patch || exit 1 ; \\\n\t\telse \\\n\t\t\t$(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \\\n\t\tfi \\\n\tdone\nendef\n\nLINUX_POST_PATCH_HOOKS += LINUX_APPLY_LOCAL_PATCHES\n\n# Older linux kernels use deprecated perl constructs in timeconst.pl\n# that were removed for perl 5.22+ so it breaks on newer distributions\n# Try a dry-run patch to see if this applies, if it does go ahead\ndefine LINUX_TRY_PATCH_TIMECONST\n\t@if patch -p1 --dry-run -f -s -d $(@D) <$(LINUX_PKGDIR)/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional >/dev/null ; then \\\n\t\t$(APPLY_PATCHES) $(@D) $(LINUX_PKGDIR) 0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional ; \\\n\tfi\nendef\nLINUX_POST_PATCH_HOOKS += LINUX_TRY_PATCH_TIMECONST\n\nLINUX_KERNEL_CUSTOM_LOGO_PATH = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH))\nifneq ($(LINUX_KERNEL_CUSTOM_LOGO_PATH),)\nLINUX_DEPENDENCIES += host-imagemagick\ndefine LINUX_KERNEL_CUSTOM_LOGO_CONVERT\n\t$(HOST_DIR)/bin/convert $(LINUX_KERNEL_CUSTOM_LOGO_PATH) \\\n\t\t-dither None -colors 224 -compress none \\\n\t\t$(LINUX_DIR)/drivers/video/logo/logo_linux_clut224.ppm\nendef\nLINUX_PRE_BUILD_HOOKS += LINUX_KERNEL_CUSTOM_LOGO_CONVERT\nendif\n\nifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y)\nLINUX_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG))_defconfig\nelse ifeq ($(BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG),y)\nLINUX_KCONFIG_DEFCONFIG = defconfig\nelse ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y)\nLINUX_KCONFIG_FILE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE))\nendif\nLINUX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES))\nLINUX_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig\n\n# LINUX_MAKE_FLAGS overrides HOSTCC to allow the kernel build to find\n# our host-openssl and host-libelf. However, this triggers a bug in\n# the kconfig build script that causes it to build with\n# /usr/include/ncurses.h (which is typically wchar) but link with\n# $(HOST_DIR)/lib/libncurses.so (which is not).  We don't actually\n# need any host-package for kconfig, so remove the HOSTCC override\n# again. In addition, even though linux depends on the toolchain and\n# therefore host-ccache would be ready, we use HOSTCC_NOCCACHE for\n# consistency with other kconfig packages.\nLINUX_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS) HOSTCC=\"$(HOSTCC_NOCCACHE)\"\n\n# If no package has yet set it, set it from the Kconfig option\nLINUX_NEEDS_MODULES ?= $(BR2_LINUX_NEEDS_MODULES)\n\n# Make sure the Linux kernel is built with the right endianness. Not\n# all architectures support\n# CONFIG_CPU_BIG_ENDIAN/CONFIG_CPU_LITTLE_ENDIAN in Linux, but the\n# option will be thrown away and ignored if it doesn't exist.\nifeq ($(BR2_ENDIAN),\"BIG\")\ndefine LINUX_FIXUP_CONFIG_ENDIANNESS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CPU_BIG_ENDIAN)\nendef\nelse\ndefine LINUX_FIXUP_CONFIG_ENDIANNESS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CPU_LITTLE_ENDIAN)\nendef\nendif\n\ndefine LINUX_KCONFIG_FIXUP_CMDS\n\t$(if $(LINUX_NEEDS_MODULES),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_MODULES))\n\t$(call KCONFIG_ENABLE_OPT,$(strip $(LINUX_COMPRESSION_OPT_y)))\n\t$(foreach opt, $(LINUX_COMPRESSION_OPT_),\n\t\t$(call KCONFIG_DISABLE_OPT,$(opt))\n\t)\n\t$(LINUX_FIXUP_CONFIG_ENDIANNESS)\n\t$(if $(BR2_arm)$(BR2_armeb),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_AEABI))\n\t$(if $(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_PPC_DISABLE_WERROR))\n\t$(if $(BR2_ARC_PAGE_SIZE_4K),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_ARC_PAGE_SIZE_4K)\n\t\t$(call KCONFIG_DISABLE_OPT,CONFIG_ARC_PAGE_SIZE_8K)\n\t\t$(call KCONFIG_DISABLE_OPT,CONFIG_ARC_PAGE_SIZE_16K))\n\t$(if $(BR2_ARC_PAGE_SIZE_8K),\n\t\t$(call KCONFIG_DISABLE_OPT,CONFIG_ARC_PAGE_SIZE_4K)\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_ARC_PAGE_SIZE_8K)\n\t\t$(call KCONFIG_DISABLE_OPT,CONFIG_ARC_PAGE_SIZE_16K))\n\t$(if $(BR2_ARC_PAGE_SIZE_16K),\n\t\t$(call KCONFIG_DISABLE_OPT,CONFIG_ARC_PAGE_SIZE_4K)\n\t\t$(call KCONFIG_DISABLE_OPT,CONFIG_ARC_PAGE_SIZE_8K)\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_ARC_PAGE_SIZE_16K))\n\t$(if $(BR2_TARGET_ROOTFS_CPIO),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_BLK_DEV_INITRD))\n\t# As the kernel gets compiled before root filesystems are\n\t# built, we create a fake cpio file. It'll be\n\t# replaced later by the real cpio archive, and the kernel will be\n\t# rebuilt using the linux-rebuild-with-initramfs target.\n\t$(if $(BR2_TARGET_ROOTFS_INITRAMFS),\n\t\tmkdir -p $(BINARIES_DIR)\n\t\ttouch $(BINARIES_DIR)/rootfs.cpio\n\t\t$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_SOURCE,\"$${BR_BINARIES_DIR}/rootfs.cpio\")\n\t\t$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_UID,0)\n\t\t$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_GID,0))\n\t$(if $(BR2_ROOTFS_DEVICE_CREATION_STATIC),,\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS)\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS_MOUNT))\n\t$(if $(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER))\n\t$(if $(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_NET))\n\t$(if $(BR2_LINUX_KERNEL_APPENDED_DTB),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_ARM_APPENDED_DTB))\n\t$(if $(LINUX_KERNEL_CUSTOM_LOGO_PATH),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_FB)\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_LOGO)\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_LOGO_LINUX_CLUT224))\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_GCC_PLUGINS)\n\t$(PACKAGES_LINUX_CONFIG_FIXUPS)\nendef\n\nifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT),y)\n# Starting with 4.17, the generated dtc parser code is no longer\n# shipped with the kernel sources, so we need flex and bison. For\n# reproducibility, we use our owns rather than the host ones.\nLINUX_DEPENDENCIES += host-bison host-flex\n\nifeq ($(BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT),)\ndefine LINUX_BUILD_DTB\n\t$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_DTBS)\nendef\nifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),)\ndefine LINUX_INSTALL_DTB\n\t# dtbs moved from arch/<ARCH>/boot to arch/<ARCH>/boot/dts since 3.8-rc1\n\t$(foreach dtb,$(LINUX_DTBS), \\\n\t\tinstall -D \\\n\t\t\t$(or $(wildcard $(LINUX_ARCH_PATH)/boot/dts/$(dtb)),$(LINUX_ARCH_PATH)/boot/$(dtb)) \\\n\t\t\t$(1)/$(if $(BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME),$(dtb),$(notdir $(dtb)))\n\t)\nendef\nendif # BR2_LINUX_KERNEL_APPENDED_DTB\nendif # BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT\nendif # BR2_LINUX_KERNEL_DTS_SUPPORT\n\nifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y)\n# dtbs moved from arch/$ARCH/boot to arch/$ARCH/boot/dts since 3.8-rc1\ndefine LINUX_APPEND_DTB\n\t(cd $(LINUX_ARCH_PATH)/boot; \\\n\t\tfor dtb in $(LINUX_DTS_NAME); do \\\n\t\t\tif test -e $${dtb}.dtb ; then \\\n\t\t\t\tdtbpath=$${dtb}.dtb ; \\\n\t\t\telse \\\n\t\t\t\tdtbpath=dts/$${dtb}.dtb ; \\\n\t\t\tfi ; \\\n\t\t\tcat zImage $${dtbpath} > zImage.$${dtb} || exit 1; \\\n\t\tdone)\nendef\nifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y)\n# We need to generate a new u-boot image that takes into\n# account the extra-size added by the device tree at the end\n# of the image. To do so, we first need to retrieve both load\n# address and entry point for the kernel from the already\n# generate uboot image before using mkimage -l.\nLINUX_APPEND_DTB += ; \\\n\tMKIMAGE_ARGS=`$(MKIMAGE) -l $(LINUX_IMAGE_PATH) |\\\n\tsed -n -e 's/Image Name:[ ]*\\(.*\\)/-n \\1/p' -e 's/Load Address:/-a/p' -e 's/Entry Point:/-e/p'`; \\\n\tfor dtb in $(LINUX_DTS_NAME); do \\\n\t\t$(MKIMAGE) -A $(MKIMAGE_ARCH) -O linux \\\n\t\t\t-T kernel -C none $${MKIMAGE_ARGS} \\\n\t\t\t-d $(LINUX_ARCH_PATH)/boot/zImage.$${dtb} $(LINUX_IMAGE_PATH).$${dtb}; \\\n\tdone\nendif\nendif\n\n# Compilation. We make sure the kernel gets rebuilt when the\n# configuration has changed. We call the 'all' and\n# '$(LINUX_TARGET_NAME)' targets separately because calling them in\n# the same $(MAKE) invocation has shown to cause parallel build\n# issues.\n# The call to disable gcc-plugins is a stop-gap measure:\n#   http://lists.busybox.net/pipermail/buildroot/2020-May/282727.html\ndefine LINUX_BUILD_CMDS\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_GCC_PLUGINS)\n\t$(foreach dts,$(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)), \\\n\t\tcp -f $(dts) $(LINUX_ARCH_PATH)/boot/dts/\n\t)\n\t$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) all\n\t$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)\n\t$(LINUX_BUILD_DTB)\n\t$(LINUX_APPEND_DTB)\nendef\n\nifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y)\n# When a DTB was appended, install the potential several images with\n# appended DTBs.\ndefine LINUX_INSTALL_IMAGE\n\tmkdir -p $(1)\n\tcp $(LINUX_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME).* $(1)\nendef\nelse\n# Otherwise, just install the unique image generated by the kernel\n# build process.\ndefine LINUX_INSTALL_IMAGE\n\t$(INSTALL) -m 0644 -D $(LINUX_IMAGE_PATH) $(1)/$(notdir $(LINUX_IMAGE_NAME))\nendef\nendif\n\nifeq ($(BR2_LINUX_KERNEL_INSTALL_TARGET),y)\ndefine LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET\n\t$(call LINUX_INSTALL_IMAGE,$(TARGET_DIR)/boot)\n\t$(call LINUX_INSTALL_DTB,$(TARGET_DIR)/boot)\nendef\nendif\n\ndefine LINUX_INSTALL_HOST_TOOLS\n\t# Installing dtc (device tree compiler) as host tool, if selected\n\tif grep -q \"CONFIG_DTC=y\" $(@D)/.config; then \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/scripts/dtc/dtc $(HOST_DIR)/bin/linux-dtc ; \\\n\t\t$(if $(BR2_PACKAGE_HOST_DTC),,ln -sf linux-dtc $(HOST_DIR)/bin/dtc;) \\\n\tfi\nendef\n\ndefine LINUX_INSTALL_IMAGES_CMDS\n\t$(call LINUX_INSTALL_IMAGE,$(BINARIES_DIR))\n\t$(call LINUX_INSTALL_DTB,$(BINARIES_DIR))\nendef\n\nifeq ($(BR2_STRIP_strip),y)\nLINUX_MAKE_FLAGS += INSTALL_MOD_STRIP=1\nendif\n\ndefine LINUX_INSTALL_TARGET_CMDS\n\t$(LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET)\n\t# Install modules and remove symbolic links pointing to build\n\t# directories, not relevant on the target\n\t@if grep -q \"CONFIG_MODULES=y\" $(@D)/.config; then \\\n\t\t$(LINUX_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) modules_install; \\\n\t\trm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/build ; \\\n\t\trm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/source ; \\\n\tfi\n\t$(LINUX_INSTALL_HOST_TOOLS)\nendef\n\n# Run depmod in a target-finalize hook, to encompass modules installed by\n# packages.\ndefine LINUX_RUN_DEPMOD\n\tif test -d $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED) \\\n\t\t&& grep -q \"CONFIG_MODULES=y\" $(LINUX_DIR)/.config; then \\\n\t\t$(HOST_DIR)/sbin/depmod -a -b $(TARGET_DIR) $(LINUX_VERSION_PROBED); \\\n\tfi\nendef\nLINUX_TARGET_FINALIZE_HOOKS += LINUX_RUN_DEPMOD\n\n# Include all our extensions.\n#\n# Note: our package infrastructure uses the full-path of the last-scanned\n# Makefile to determine what package we're currently defining, using the\n# last directory component in the path. Additionally, the full path of\n# the package directory is also stored in _PKGDIR (e.g. to find patches)\n#\n# As such, including other Makefiles, like below, before we call one of\n# the *-package macros usually doesn't work.\n#\n# However, by including the in-tree extensions after the ones from the\n# br2-external trees, we're back to the situation where the last Makefile\n# scanned *is* included from the correct directory.\n#\n# NOTE: this is very fragile, and extra care must be taken to ensure that\n# we always end up with an in-tree included file. That's mostly OK, because\n# we do have in-tree linux-extensions.\n#\ninclude $(sort $(wildcard $(foreach ext,$(BR2_EXTERNAL_DIRS), \\\n\t$(ext)/linux/linux-ext-*.mk)))\ninclude $(sort $(wildcard linux/linux-ext-*.mk))\n\nLINUX_PATCH_DEPENDENCIES += $(foreach ext,$(LINUX_EXTENSIONS),\\\n\t$(if $(BR2_LINUX_KERNEL_EXT_$(call UPPERCASE,$(ext))),$(ext)))\n\nLINUX_PRE_PATCH_HOOKS += $(foreach ext,$(LINUX_EXTENSIONS),\\\n\t$(if $(BR2_LINUX_KERNEL_EXT_$(call UPPERCASE,$(ext))),\\\n\t\t$(call UPPERCASE,$(ext))_PREPARE_KERNEL))\n\n# Checks to give errors that the user can understand\n\n# When a custom repository has been set, check for the repository version\nifeq ($(BR2_LINUX_KERNEL_CUSTOM_SVN)$(BR2_LINUX_KERNEL_CUSTOM_GIT)$(BR2_LINUX_KERNEL_CUSTOM_HG),y)\nifeq ($(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION)),)\n$(error No custom repository version set. Check your BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION setting)\nendif\nifeq ($(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)),)\n$(error No custom repo URL set. Check your BR2_LINUX_KERNEL_CUSTOM_REPO_URL setting)\nendif\nendif\n\nifeq ($(BR_BUILDING),y)\n\nifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y)\n# We must use the user-supplied kconfig value, because\n# LINUX_KCONFIG_DEFCONFIG will at least contain the\n# trailing _defconfig\nifeq ($(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG)),)\n$(error No kernel defconfig name specified, check your BR2_LINUX_KERNEL_DEFCONFIG setting)\nendif\nendif\n\nifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y)\nifeq ($(LINUX_KCONFIG_FILE),)\n$(error No kernel configuration file specified, check your BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE setting)\nendif\nendif\n\nifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT):$(strip $(LINUX_DTS_NAME)),y:)\n$(error No kernel device tree source specified, check your \\\n\tBR2_LINUX_KERNEL_INTREE_DTS_NAME / BR2_LINUX_KERNEL_CUSTOM_DTS_PATH settings)\nendif\n\nendif # BR_BUILDING\n\n$(eval $(kconfig-package))\n\n# Support for rebuilding the kernel after the cpio archive has\n# been generated.\n.PHONY: linux-rebuild-with-initramfs\nlinux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_target_installed\nlinux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_images_installed\nlinux-rebuild-with-initramfs: rootfs-cpio\nlinux-rebuild-with-initramfs:\n\t@$(call MESSAGE,\"Rebuilding kernel with initramfs\")\n\t# Build the kernel.\n\t$(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) $(LINUX_TARGET_NAME)\n\t$(LINUX_APPEND_DTB)\n\t# Copy the kernel image(s) to its(their) final destination\n\t$(call LINUX_INSTALL_IMAGE,$(BINARIES_DIR))\n\t# If there is a .ub file copy it to the final destination\n\ttest ! -f $(LINUX_IMAGE_PATH).ub || cp $(LINUX_IMAGE_PATH).ub $(BINARIES_DIR)\n"
  },
  {
    "path": "package/18xx-ti-utils/0001-plt.h-fix-build-with-gcc-10.patch",
    "content": "From 12d3b3c01b0ec28d45427754541a8156939346d9 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 13 Aug 2020 23:24:05 +0200\nSubject: [PATCH] plt.h: fix build with gcc 10\n\nDrop EFUSE_PARAMETER_TYPE_ENM to fix the following build failure with\ngcc 10:\n\n/home/buildroot/autobuild/run/instance-3/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -L/home/buildroot/autobuild/run/instance-3/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/lib nvs.o misc_cmds.o calibrator.o plt.o wl18xx_plt.o ini.o -lm -lnl-3 -lnl-genl-3 -o calibrator\n/home/buildroot/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: misc_cmds.o:(.bss+0x0): multiple definition of `EFUSE_PARAMETER_TYPE_ENM'; nvs.o:(.bss+0x0): first defined here\n/home/buildroot/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: calibrator.o: in function `.LANCHOR0':\ncalibrator.c:(.bss+0xc): multiple definition of `EFUSE_PARAMETER_TYPE_ENM'; nvs.o:(.bss+0x0): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/df2d04de4b2e5003f3fc56c9e84db5054bd4d499\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to sudharshan <sudharshan@ti.com>]\n---\n plt.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/plt.h b/plt.h\nindex 8b534a9..43d5dbc 100644\n--- a/plt.h\n+++ b/plt.h\n@@ -399,7 +399,7 @@ enum EFUSE_PARAMETER_TYPE_ENMT {\n \tTX_BIP_PD_BUFFER_VBIAS_ERROR_E,\n \tEFUSE_NUMBER_OF_PARAMETERS_E,\n \tEFUSE_LAST_PARAMETER_E = (EFUSE_NUMBER_OF_PARAMETERS_E - 1)\n-} EFUSE_PARAMETER_TYPE_ENM;\n+};\n \n int get_mac_addr(int ifc_num, unsigned char *mac_addr);\n \n-- \n2.27.0\n\n"
  },
  {
    "path": "package/18xx-ti-utils/18xx-ti-utils.hash",
    "content": "# Locally calculated\nsha256  ce0185ba8a9bf456cc94a798bf66903775065e337e53ff812f18a6d88f5bac13  18xx-ti-utils-R8.8.tar.xz\nsha256  363cef40b276a7a91ebcff3f78626d9cfe5e5a51927c725236007259403d5fc4  COPYING\n"
  },
  {
    "path": "package/18xx-ti-utils/18xx-ti-utils.mk",
    "content": "################################################################################\n#\n# 18xx-ti-utils\n#\n################################################################################\n\n18XX_TI_UTILS_VERSION = 8.8\n18XX_TI_UTILS_SITE = https://git.ti.com/cgit/wilink8-wlan/18xx-ti-utils/snapshot\n18XX_TI_UTILS_SOURCE = 18xx-ti-utils-R$(18XX_TI_UTILS_VERSION).tar.xz\n18XX_TI_UTILS_DEPENDENCIES = libnl\n18XX_TI_UTILS_LICENSE = BSD-3-Clause\n18XX_TI_UTILS_LICENSE_FILES = COPYING\n\n18XX_TI_UTILS_CFLAGS = -I$(STAGING_DIR)/usr/include/libnl3 -DCONFIG_LIBNL32\n\nifeq ($(BR2_STATIC_LIBS),y)\n18XX_TI_UTILS_BUILD_TARGET = static\nendif\n\ndefine 18XX_TI_UTILS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) CROSS_COMPILE=$(TARGET_CROSS) \\\n\t\tNFSROOT=\"$(STAGING_DIR)\" NLVER=3 $(MAKE) -C $(@D) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) $(18XX_TI_UTILS_CFLAGS)\" \\\n\t\t$(18XX_TI_UTILS_BUILD_TARGET)\n\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/wlconf \\\n\t\t$(HOST_CONFIGURE_OPTS)\nendef\n\ndefine 18XX_TI_UTILS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 $(@D)/calibrator $(TARGET_DIR)/usr/bin/calibrator\n\t$(INSTALL) -m 0755 $(@D)/wlconf/wlconf $(HOST_DIR)/bin/wlconf\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/18xx-ti-utils/Config.in",
    "content": "config BR2_PACKAGE_18XX_TI_UTILS\n\tbool \"18xx-ti-utils\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tselect BR2_PACKAGE_LIBNL\n\thelp\n\t  TI Wilink calibration utilities.\n\n\t  CONFIG_NL80211_TESTMODE must be enabled in the kernel\n\t  configuration for this package to work.\n\n\t  http://processors.wiki.ti.com/index.php/WL18xx_TX_Testing\n\ncomment \"18xx-ti-utils needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/4th/0001-avoid-regen-during-install.patch",
    "content": "avoid regen during install\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\n--- a/sources/Makefile\n+++ b/sources/Makefile\n@@ -120,7 +120,7 @@\n \tln -sf $(SHARED_LIB) $(LIBRARIES)/lib4th.so\n endif\n \n-mostlyinstall: libinstall all\n+mostlyinstall: libinstall\n \tcp 4th 4tsh pp4th $(BINARIES)\n \n install: mostlyinstall\n-- \n\n"
  },
  {
    "path": "package/4th/4th.hash",
    "content": "# Locally computed:\nsha256  f822f7dd8cfb0b1744a62d653c6efe933578ae1789ec60a088509a38bca4b4fc  4th-3.62.5-unix.tar.gz\nsha256  8c6111b645a02219579ea66e84aa8e78a0ed4f4dd80857ffb91bcda5528717d4  COPYING\n"
  },
  {
    "path": "package/4th/4th.mk",
    "content": "################################################################################\n#\n# 4th\n#\n################################################################################\n\n4TH_VERSION = 3.62.5\n4TH_SOURCE = 4th-$(4TH_VERSION)-unix.tar.gz\n4TH_SITE = http://downloads.sourceforge.net/project/forth-4th/4th-$(4TH_VERSION)\n4TH_LICENSE = GPL-3.0+, LGPL-3.0+\n# The COPYING file only contains the text of the LGPL-3.0, but the\n# source code really contains parts under GPL-3.0+.\n4TH_LICENSE_FILES = COPYING\n4TH_DEPENDENCIES = host-4th\n4TH_INSTALL_STAGING = YES\n\n4TH_CFLAGS = $(TARGET_CFLAGS) -DUNIX -fsigned-char\n\nifeq ($(BR2_STATIC_LIBS),y)\n4TH_MAKE_ENV = $(TARGET_MAKE_ENV) STATIC=1\nelse\n4TH_MAKE_ENV = $(TARGET_MAKE_ENV) SHARED=1\n4TH_CFLAGS += -fPIC\nendif\n\ndefine 4TH_BUILD_CMDS\n\t$(4TH_MAKE_ENV) $(MAKE) -C $(@D)/sources all \\\n\t\tCROSS=\"$(TARGET_CROSS)\" \\\n\t\tCFLAGS=\"$(4TH_CFLAGS)\" \\\n\t\tFOURTH=$(HOST_DIR)/bin/4th\nendef\n\ndefine 4TH_INSTALL_STAGING_CMDS\n\t$(4TH_MAKE_ENV) $(MAKE) -C $(@D)/sources libinstall \\\n\t\tLIBRARIES=$(STAGING_DIR)/usr/lib\n\t$(INSTALL) -D -m 0644 $(@D)/sources/4th.h \\\n\t\t$(STAGING_DIR)/usr/include/4th.h\nendef\n\ndefine 4TH_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/bin\n\tmkdir -p $(TARGET_DIR)/usr/lib\n\t$(4TH_MAKE_ENV) $(MAKE) -C $(@D)/sources mostlyinstall \\\n\t\tBINARIES=$(TARGET_DIR)/usr/bin \\\n\t\tLIBRARIES=$(TARGET_DIR)/usr/lib\n\tmkdir -p $(TARGET_DIR)/usr/share/4th/lib\n\tcp -dpf $(@D)/4th/*.4th $(TARGET_DIR)/usr/share/4th\n\tcp -dpf $(@D)/4th/lib/*.4th $(TARGET_DIR)/usr/share/4th/lib\n\tmkdir -p $(TARGET_DIR)/usr/share/4th/demo\n\tcp -dpf $(@D)/4th/demo/*.4th $(TARGET_DIR)/usr/share/4th/demo\n\tmkdir -p $(TARGET_DIR)/usr/share/4th/4pp/lib\n\tcp -dpf $(@D)/4th/4pp/*.4pp $(TARGET_DIR)/usr/share/4th/4pp\n\tcp -dpf $(@D)/4th/4pp/lib/*.4pp $(TARGET_DIR)/usr/share/4th/4pp/lib\nendef\n\ndefine HOST_4TH_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/sources all \\\n\t\tCFLAGS=\"$(HOST_CFLAGS) -DUNIX -fsigned-char\"\nendef\n\ndefine HOST_4TH_INSTALL_CMDS\n\tmkdir -p $(HOST_DIR)/bin\n\tmkdir -p $(HOST_DIR)/lib\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/sources mostlyinstall \\\n\t\tBINARIES=$(HOST_DIR)/bin \\\n\t\tLIBRARIES=$(HOST_DIR)/lib\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/4th/Config.in",
    "content": "config BR2_PACKAGE_4TH\n\tbool \"4th\"\n\thelp\n\t  4tH is a Forth compiler that can create bytecode,\n\t  C-embeddable bytecode, standalone executables, but also\n\t  works fine as a scripting language\n\n\t  http://thebeez.home.xs4all.nl/4tH/\n"
  },
  {
    "path": "package/Config.in",
    "content": "menu \"Target packages\"\n\n\tsource \"package/busybox/Config.in\"\n\tsource \"package/skeleton/Config.in\"\n\tsource \"package/skeleton-custom/Config.in\"\n\tsource \"package/skeleton-init-common/Config.in\"\n\tsource \"package/skeleton-init-none/Config.in\"\n\tsource \"package/skeleton-init-openrc/Config.in\"\n\tsource \"package/skeleton-init-systemd/Config.in\"\n\tsource \"package/skeleton-init-sysv/Config.in\"\n\nmenu \"Audio and video applications\"\n\tsource \"package/alsa-utils/Config.in\"\n\tsource \"package/atest/Config.in\"\n\tsource \"package/aumix/Config.in\"\n\tsource \"package/bluez-alsa/Config.in\"\n\tsource \"package/dvblast/Config.in\"\n\tsource \"package/dvdauthor/Config.in\"\n\tsource \"package/dvdrw-tools/Config.in\"\n\tsource \"package/espeak/Config.in\"\n\tsource \"package/faad2/Config.in\"\n\tsource \"package/ffmpeg/Config.in\"\n\tsource \"package/flac/Config.in\"\n\tsource \"package/flite/Config.in\"\n\tsource \"package/fluid-soundfont/Config.in\"\n\tsource \"package/fluidsynth/Config.in\"\n\tsource \"package/gmrender-resurrect/Config.in\"\n\tsource \"package/gstreamer1/Config.in\"\n\tsource \"package/jack1/Config.in\"\n\tsource \"package/jack2/Config.in\"\n\tsource \"package/kodi/Config.in\"\n\tsource \"package/lame/Config.in\"\n\tsource \"package/libwebcam/Config.in\"\n\tsource \"package/madplay/Config.in\"\n\tsource \"package/mimic/Config.in\"\n\tsource \"package/minimodem/Config.in\"\n\tsource \"package/miraclecast/Config.in\"\n\tsource \"package/mjpegtools/Config.in\"\n\tsource \"package/modplugtools/Config.in\"\n\tsource \"package/motion/Config.in\"\n\tsource \"package/mpd/Config.in\"\n\tsource \"package/mpd-mpc/Config.in\"\n\tsource \"package/mpg123/Config.in\"\n\tsource \"package/mpv/Config.in\"\n\tsource \"package/multicat/Config.in\"\n\tsource \"package/musepack/Config.in\"\n\tsource \"package/ncmpc/Config.in\"\n\tsource \"package/omxplayer/Config.in\"\n\tsource \"package/on2-8170-libs/Config.in\"\n\tsource \"package/opus-tools/Config.in\"\n\tsource \"package/pulseaudio/Config.in\"\n\tsource \"package/sox/Config.in\"\n\tsource \"package/streameye/Config.in\"\n\tsource \"package/squeezelite/Config.in\"\n\tsource \"package/tovid/Config.in\"\n\tsource \"package/tstools/Config.in\"\n\tsource \"package/twolame/Config.in\"\n\tsource \"package/udpxy/Config.in\"\n\tsource \"package/upmpdcli/Config.in\"\n\tsource \"package/v4l2grab/Config.in\"\n\tsource \"package/v4l2loopback/Config.in\"\n\tsource \"package/v4l2rtspserver/Config.in\"\n\tsource \"package/v4l2tools/Config.in\"\n\tsource \"package/vlc/Config.in\"\n\tsource \"package/vorbis-tools/Config.in\"\n\tsource \"package/wavpack/Config.in\"\n\tsource \"package/yavta/Config.in\"\n\tsource \"package/ympd/Config.in\"\nendmenu\n\nmenu \"Compressors and decompressors\"\n\tsource \"package/brotli/Config.in\"\n\tsource \"package/bzip2/Config.in\"\n\tsource \"package/gzip/Config.in\"\n\tsource \"package/lrzip/Config.in\"\n\tsource \"package/lzip/Config.in\"\n\tsource \"package/lzop/Config.in\"\n\tsource \"package/p7zip/Config.in\"\n\tsource \"package/pigz/Config.in\"\n\tsource \"package/pixz/Config.in\"\n\tsource \"package/unrar/Config.in\"\n\tsource \"package/unzip/Config.in\"\n\tsource \"package/xz/Config.in\"\n\tsource \"package/zip/Config.in\"\n\tsource \"package/zstd/Config.in\"\nendmenu\n\nmenu \"Debugging, profiling and benchmark\"\n\tsource \"package/babeltrace2/Config.in\"\n\tsource \"package/blktrace/Config.in\"\n\tsource \"package/bonnie/Config.in\"\n\tsource \"package/cache-calibrator/Config.in\"\n\tsource \"package/clinfo/Config.in\"\n\tsource \"package/coremark/Config.in\"\n\tsource \"package/coremark-pro/Config.in\"\n\tsource \"package/dacapo/Config.in\"\n\tsource \"package/delve/Config.in\"\n\tsource \"package/dhrystone/Config.in\"\n\tsource \"package/dieharder/Config.in\"\n\tsource \"package/dmalloc/Config.in\"\n\tsource \"package/dropwatch/Config.in\"\n\tsource \"package/dstat/Config.in\"\n\tsource \"package/dt/Config.in\"\n\tsource \"package/duma/Config.in\"\n\tsource \"package/fio/Config.in\"\n\tsource \"package/fwts/Config.in\"\n\tsource \"package/gdb/Config.in\"\n\tsource \"package/google-breakpad/Config.in\"\n\tsource \"package/iozone/Config.in\"\n\tsource \"package/kexec/Config.in\"\n\tsource \"package/kexec-lite/Config.in\"\n\tsource \"package/ktap/Config.in\"\n\tsource \"package/kvm-unit-tests/Config.in\"\n\tsource \"package/kyua/Config.in\"\n\tsource \"package/latencytop/Config.in\"\n\tsource \"package/libbpf/Config.in\"\n\tsource \"package/lmbench/Config.in\"\n\tsource \"package/lsof/Config.in\"\n\tsource \"package/ltp-testsuite/Config.in\"\n\tsource \"package/ltrace/Config.in\"\n\tsource \"package/lttng-babeltrace/Config.in\"\n\tsource \"package/lttng-modules/Config.in\"\n\tsource \"package/lttng-tools/Config.in\"\n\tsource \"package/mcelog/Config.in\"\n\tsource \"package/memstat/Config.in\"\n\tsource \"package/netperf/Config.in\"\n\tsource \"package/netsniff-ng/Config.in\"\n\tsource \"package/nmon/Config.in\"\n\tsource \"package/oprofile/Config.in\"\n\tsource \"package/pax-utils/Config.in\"\n\tsource \"package/pcm-tools/Config.in\"\n\tsource \"package/piglit/Config.in\"\n\tsource \"package/ply/Config.in\"\n\tsource \"package/poke/Config.in\"\n\tsource \"package/ptm2human/Config.in\"\n\tsource \"package/pv/Config.in\"\n\tsource \"package/racehound/Config.in\"\n\tsource \"package/ramsmp/Config.in\"\n\tsource \"package/ramspeed/Config.in\"\n\tsource \"package/rt-tests/Config.in\"\n\tsource \"package/rwmem/Config.in\"\n\tsource \"package/sentry-native/Config.in\"\n\tsource \"package/spidev_test/Config.in\"\n\tsource \"package/strace/Config.in\"\n\tsource \"package/stress/Config.in\"\n\tsource \"package/stress-ng/Config.in\"\n\tsource \"package/sysdig/Config.in\"\n\tsource \"package/sysprof/Config.in\"\n\tsource \"package/tcf-agent/Config.in\"\n\tsource \"package/tinymembench/Config.in\"\n\tsource \"package/trace-cmd/Config.in\"\n\tsource \"package/trinity/Config.in\"\n\tsource \"package/uclibc-ng-test/Config.in\"\n\tsource \"package/uftrace/Config.in\"\n\tsource \"package/valgrind/Config.in\"\n\tsource \"package/vmtouch/Config.in\"\n\tsource \"package/whetstone/Config.in\"\nendmenu\n\nmenu \"Development tools\"\n\tsource \"package/bats-core/Config.in\"\n\tsource \"package/binutils/Config.in\"\n\tsource \"package/bitwise/Config.in\"\n\tsource \"package/bsdiff/Config.in\"\n\tsource \"package/bustle/Config.in\"\n\tsource \"package/check/Config.in\"\n\tsource \"package/cmake/Config.in\"\n\tsource \"package/cppunit/Config.in\"\n\tsource \"package/cukinia/Config.in\"\n\tsource \"package/cunit/Config.in\"\n\tsource \"package/cvs/Config.in\"\n\tsource \"package/cxxtest/Config.in\"\n\tsource \"package/diffutils/Config.in\"\n\tsource \"package/dos2unix/Config.in\"\n\tsource \"package/findutils/Config.in\"\n\tsource \"package/flex/Config.in\"\n\tsource \"package/gawk/Config.in\"\n\tsource \"package/gettext/Config.in\"\n\tsource \"package/gettext-gnu/Config.in\"\n\tsource \"package/gettext-tiny/Config.in\"\n\tsource \"package/git/Config.in\"\n\tsource \"package/git-crypt/Config.in\"\n\tsource \"package/gperf/Config.in\"\n\tsource \"package/grep/Config.in\"\n\tsource \"package/jo/Config.in\"\n\tsource \"package/jq/Config.in\"\n\tsource \"package/libtool/Config.in\"\n\tsource \"package/make/Config.in\"\n\tsource \"package/mawk/Config.in\"\n\tsource \"package/patch/Config.in\"\n\tsource \"package/pkgconf/Config.in\"\n\tsource \"package/ripgrep/Config.in\"\n\tsource \"package/sed/Config.in\"\n\tsource \"package/subversion/Config.in\"\n\tsource \"package/tree/Config.in\"\n\tsource \"package/yasm/Config.in\"\nendmenu\n\nmenu \"Filesystem and flash utilities\"\n\tsource \"package/abootimg/Config.in\"\n\tsource \"package/aufs/Config.in\"\n\tsource \"package/aufs-util/Config.in\"\n\tsource \"package/autofs/Config.in\"\n\tsource \"package/bmap-tools/Config.in\"\n\tsource \"package/btrfs-progs/Config.in\"\n\tsource \"package/cifs-utils/Config.in\"\n\tsource \"package/cpio/Config.in\"\n\tsource \"package/cramfs/Config.in\"\n\tsource \"package/curlftpfs/Config.in\"\n\tsource \"package/davfs2/Config.in\"\n\tsource \"package/dosfstools/Config.in\"\n\tsource \"package/e2fsprogs/Config.in\"\n\tsource \"package/e2tools/Config.in\"\n\tsource \"package/ecryptfs-utils/Config.in\"\n\tsource \"package/erofs-utils/Config.in\"\n\tsource \"package/exfat/Config.in\"\n\tsource \"package/exfat-utils/Config.in\"\n\tsource \"package/exfatprogs/Config.in\"\n\tsource \"package/f2fs-tools/Config.in\"\n\tsource \"package/firmware-utils/Config.in\"\n\tsource \"package/flashbench/Config.in\"\n\tsource \"package/fscryptctl/Config.in\"\n\tsource \"package/fuse-overlayfs/Config.in\"\n\tsource \"package/fwup/Config.in\"\n\tsource \"package/genext2fs/Config.in\"\n\tsource \"package/genpart/Config.in\"\n\tsource \"package/genromfs/Config.in\"\n\tsource \"package/imx-usb-loader/Config.in\"\n\tsource \"package/mmc-utils/Config.in\"\n\tsource \"package/mtd/Config.in\"\n\tsource \"package/mtools/Config.in\"\n\tsource \"package/nfs-utils/Config.in\"\n\tsource \"package/nilfs-utils/Config.in\"\n\tsource \"package/ntfs-3g/Config.in\"\n\tsource \"package/sp-oops-extract/Config.in\"\n\tsource \"package/squashfs/Config.in\"\n\tsource \"package/sshfs/Config.in\"\n\tsource \"package/sunxi-tools/Config.in\"\n\tsource \"package/udftools/Config.in\"\n\tsource \"package/unionfs/Config.in\"\n\tsource \"package/xfsprogs/Config.in\"\n\tsource \"package/zfs/Config.in\"\nendmenu\n\nmenu \"Fonts, cursors, icons, sounds and themes\"\n\ncomment \"Cursors\"\n\tsource \"package/comix-cursors/Config.in\"\n\tsource \"package/obsidian-cursors/Config.in\"\n\ncomment \"Fonts\"\n\tsource \"package/bitstream-vera/Config.in\"\n\tsource \"package/cantarell/Config.in\"\n\tsource \"package/dejavu/Config.in\"\n\tsource \"package/font-awesome/Config.in\"\n\tsource \"package/ghostscript-fonts/Config.in\"\n\tsource \"package/inconsolata/Config.in\"\n\tsource \"package/liberation/Config.in\"\n\tsource \"package/wqy-zenhei/Config.in\"\n\ncomment \"Icons\"\n\tsource \"package/adwaita-icon-theme/Config.in\"\n\tsource \"package/google-material-design-icons/Config.in\"\n\tsource \"package/hicolor-icon-theme/Config.in\"\n\ncomment \"Sounds\"\n\tsource \"package/sound-theme-borealis/Config.in\"\n\tsource \"package/sound-theme-freedesktop/Config.in\"\n\ncomment \"Themes\"\n\tsource \"package/gtk2-engines/Config.in\"\n\nendmenu\n\nmenu \"Games\"\n\tsource \"package/ascii-invaders/Config.in\"\n\tsource \"package/chocolate-doom/Config.in\"\n\tsource \"package/doom-wad/Config.in\"\n\tsource \"package/flare-engine/Config.in\"\n\tsource \"package/flare-game/Config.in\"\n\tsource \"package/frotz/Config.in\"\n\tsource \"package/gnuchess/Config.in\"\n\tsource \"package/lbreakout2/Config.in\"\n\tsource \"package/ltris/Config.in\"\n\tsource \"package/lugaru/Config.in\"\n\tsource \"package/minetest/Config.in\"\n\tsource \"package/minetest-game/Config.in\"\n\tsource \"package/opentyrian/Config.in\"\n\tsource \"package/opentyrian-data/Config.in\"\n\tsource \"package/prboom/Config.in\"\n\tsource \"package/rubix/Config.in\"\n\tsource \"package/sl/Config.in\"\n\tsource \"package/solarus/Config.in\"\n\tsource \"package/stella/Config.in\"\n\tsource \"package/supertux/Config.in\"\n\tsource \"package/supertuxkart/Config.in\"\n\tsource \"package/xorcurses/Config.in\"\nendmenu\n\nmenu \"Graphic libraries and applications (graphic/text)\"\n\ncomment \"Graphic applications\"\n\tsource \"package/cage/Config.in\"\n\tsource \"package/cog/Config.in\"\n\tsource \"package/fswebcam/Config.in\"\n\tsource \"package/ghostscript/Config.in\"\n\tsource \"package/glmark2/Config.in\"\n\tsource \"package/glslsandbox-player/Config.in\"\n\tsource \"package/gnuplot/Config.in\"\n\tsource \"package/jhead/Config.in\"\n\tsource \"package/kmscube/Config.in\"\n\tsource \"package/libva-utils/Config.in\"\n\tsource \"package/mesa3d-demos/Config.in\"\n\tsource \"package/netsurf/Config.in\"\n\tsource \"package/pngquant/Config.in\"\n\tsource \"package/qt5cinex/Config.in\"\n\tsource \"package/rrdtool/Config.in\"\n\tsource \"package/stellarium/Config.in\"\n\tsource \"package/tesseract-ocr/Config.in\"\n\ncomment \"Graphic libraries\"\n\tsource \"package/cegui/Config.in\"\n\tsource \"package/directfb/Config.in\"\n\tsource \"package/directfb-examples/Config.in\"\n\tsource \"package/efl/Config.in\"\n\tsource \"package/fb-test-app/Config.in\"\n\tsource \"package/fbdump/Config.in\"\n\tsource \"package/fbgrab/Config.in\"\n\tsource \"package/fbset/Config.in\"\n\tsource \"package/fbterm/Config.in\"\n\tsource \"package/fbv/Config.in\"\n\tsource \"package/freerdp/Config.in\"\n\tsource \"package/graphicsmagick/Config.in\"\n\tsource \"package/imagemagick/Config.in\"\n\tsource \"package/linux-fusion/Config.in\"\n\tsource \"package/lite/Config.in\"\n\tsource \"package/mesa3d/Config.in\"\n\tsource \"package/mesa3d-headers/Config.in\"\n\tsource \"package/ocrad/Config.in\"\n\tsource \"package/ogre/Config.in\"\n\tsource \"package/psplash/Config.in\"\n\tsource \"package/sdl/Config.in\"\n\tsource \"package/sdl_gfx/Config.in\"\n\tsource \"package/sdl_image/Config.in\"\n\tsource \"package/sdl_mixer/Config.in\"\n\tsource \"package/sdl_net/Config.in\"\n\tsource \"package/sdl_sound/Config.in\"\n\tsource \"package/sdl_ttf/Config.in\"\n\tsource \"package/sdl2/Config.in\"\n\tsource \"package/sdl2_gfx/Config.in\"\n\tsource \"package/sdl2_image/Config.in\"\n\tsource \"package/sdl2_mixer/Config.in\"\n\tsource \"package/sdl2_net/Config.in\"\n\tsource \"package/sdl2_ttf/Config.in\"\n\tsource \"package/tk/Config.in\"\n\ncomment \"Other GUIs\"\n\tsource \"package/qt5/Config.in\"\nif BR2_PACKAGE_QT5\ncomment \"QT libraries and helper libraries\"\n\tsource \"package/cutelyst/Config.in\"\n\tsource \"package/grantlee/Config.in\"\n\tsource \"package/kf5/Config.in\"\n\tsource \"package/qextserialport/Config.in\"\n\tsource \"package/qjson/Config.in\"\n\tsource \"package/quazip/Config.in\"\n\tsource \"package/qwt/Config.in\"\nendif\n\tsource \"package/tekui/Config.in\"\n\tsource \"package/weston/Config.in\"\n\tsource \"package/x11r7/Config.in\"\n\ncomment \"X applications\"\n\tdepends on BR2_PACKAGE_XORG7\n\n\tsource \"package/alsamixergui/Config.in\"\n\tsource \"package/apitrace/Config.in\"\n\tsource \"package/dillo/Config.in\"\n\tsource \"package/docker/Config.in\"\n\tsource \"package/feh/Config.in\"\n\tsource \"package/gmpc/Config.in\"\n\tsource \"package/gtkperf/Config.in\"\n\tsource \"package/leafpad/Config.in\"\n\tsource \"package/midori/Config.in\"\n\tsource \"package/mupdf/Config.in\"\n\tsource \"package/nodm/Config.in\"\n\tsource \"package/pcmanfm/Config.in\"\n\tsource \"package/qt-webkit-kiosk/Config.in\"\n\tsource \"package/rdesktop/Config.in\"\n\tsource \"package/synergy/Config.in\"\n\tsource \"package/vte/Config.in\"\n\tsource \"package/wmctrl/Config.in\"\n\tsource \"package/x11vnc/Config.in\"\n\tsource \"package/xdotool/Config.in\"\n\tsource \"package/xscreensaver/Config.in\"\n\tsource \"package/xterm/Config.in\"\n\tsource \"package/xvkbd/Config.in\"\n\tsource \"package/yad/Config.in\"\n\ncomment \"X libraries and helper libraries\"\n\tdepends on BR2_PACKAGE_XORG7\n\n\tsource \"package/libsexy/Config.in\"\n\tsource \"package/x11r7/xkeyboard-config/Config.in\"\n\ncomment \"X window managers\"\n\tdepends on BR2_PACKAGE_XORG7\n\n\tsource \"package/enlightenment/Config.in\"\n\tsource \"package/fluxbox/Config.in\"\n\tsource \"package/matchbox/Config.in\"\n\tsource \"package/metacity/Config.in\"\n\tsource \"package/openbox/Config.in\"\n\tsource \"package/ratpoison/Config.in\"\nendmenu\n\nmenu \"Hardware handling\"\nmenu \"Firmware\"\n\tsource \"package/am33x-cm3/Config.in\"\n\tsource \"package/armbian-firmware/Config.in\"\n\tsource \"package/b43-firmware/Config.in\"\n\tsource \"package/linux-firmware/Config.in\"\n\tsource \"package/murata-cyw-fw/Config.in\"\n\tsource \"package/odroidc2-firmware/Config.in\"\n\tsource \"package/qcom-db410c-firmware/Config.in\"\n\tsource \"package/rcw-smarc-sal28/Config.in\"\n\tsource \"package/rkbin/Config.in\"\n\tsource \"package/rpi-bt-firmware/Config.in\"\n\tsource \"package/rpi-firmware/Config.in\"\n\tsource \"package/rpi-wifi-firmware/Config.in\"\n\tsource \"package/sunxi-boards/Config.in\"\n\tsource \"package/ts4900-fpga/Config.in\"\n\tsource \"package/ux500-firmware/Config.in\"\n\tsource \"package/wilc1000-firmware/Config.in\"\n\tsource \"package/wilink-bt-firmware/Config.in\"\n\tsource \"package/zd1211-firmware/Config.in\"\nendmenu\n\tsource \"package/18xx-ti-utils/Config.in\"\n\tsource \"package/a10disp/Config.in\"\n\tsource \"package/acpica/Config.in\"\n\tsource \"package/acpid/Config.in\"\n\tsource \"package/acpitool/Config.in\"\n\tsource \"package/aer-inject/Config.in\"\n\tsource \"package/altera-stapl/Config.in\"\n\tsource \"package/am335x-pru-package/Config.in\"\n\tsource \"package/apcupsd/Config.in\"\n\tsource \"package/avrdude/Config.in\"\n\tsource \"package/bcache-tools/Config.in\"\n\tsource \"package/biosdevname/Config.in\"\n\tsource \"package/brickd/Config.in\"\n\tsource \"package/brltty/Config.in\"\n\tsource \"package/cbootimage/Config.in\"\n\tsource \"package/cc-tool/Config.in\"\n\tsource \"package/cdrkit/Config.in\"\n\tsource \"package/cpuburn-arm/Config.in\"\n\tsource \"package/cryptsetup/Config.in\"\n\tsource \"package/cwiid/Config.in\"\n\tsource \"package/dahdi-linux/Config.in\"\n\tsource \"package/dahdi-tools/Config.in\"\n\tsource \"package/dbus/Config.in\"\n\tsource \"package/dbus-cpp/Config.in\"\n\tsource \"package/dbus-glib/Config.in\"\n\tsource \"package/dbus-python/Config.in\"\n\tsource \"package/dbus-triggerd/Config.in\"\n\tsource \"package/dfu-util/Config.in\"\n\tsource \"package/dmidecode/Config.in\"\n\tsource \"package/dmraid/Config.in\"\n\tsource \"package/dt-utils/Config.in\"\n\tsource \"package/dtbocfg/Config.in\"\n\tsource \"package/dtv-scan-tables/Config.in\"\n\tsource \"package/dump1090/Config.in\"\n\tsource \"package/dvb-apps/Config.in\"\n\tsource \"package/dvbsnoop/Config.in\"\n\tsource \"package/edid-decode/Config.in\"\n\tsource \"package/edk2-platforms/Config.in\"\n\tsource \"package/eudev/Config.in\"\n\tsource \"package/ev3dev-linux-drivers/Config.in\"\n\tsource \"package/evemu/Config.in\"\n\tsource \"package/evtest/Config.in\"\n\tsource \"package/fan-ctrl/Config.in\"\n\tsource \"package/fbtft/Config.in\"\n\tsource \"package/fconfig/Config.in\"\n\tsource \"package/flashrom/Config.in\"\n\tsource \"package/fmtools/Config.in\"\n\tsource \"package/freescale-imx/Config.in\"\n\tsource \"package/fxload/Config.in\"\n\tsource \"package/gcnano-binaries/Config.in\"\n\tsource \"package/gpm/Config.in\"\n\tsource \"package/gpsd/Config.in\"\n\tsource \"package/gptfdisk/Config.in\"\n\tsource \"package/gvfs/Config.in\"\n\tsource \"package/hdparm/Config.in\"\n\tsource \"package/hwdata/Config.in\"\n\tsource \"package/hwloc/Config.in\"\n\tsource \"package/i2c-tools/Config.in\"\n\tsource \"package/i7z/Config.in\"\n\tsource \"package/input-event-daemon/Config.in\"\n\tsource \"package/intel-microcode/Config.in\"\n\tsource \"package/ipmitool/Config.in\"\n\tsource \"package/ipmiutil/Config.in\"\n\tsource \"package/irda-utils/Config.in\"\n\tsource \"package/iucode-tool/Config.in\"\n\tsource \"package/kbd/Config.in\"\n\tsource \"package/lan951x-led-ctl/Config.in\"\n\tsource \"package/lcdproc/Config.in\"\n\tsource \"package/libiec61850/Config.in\"\n\tsource \"package/libubootenv/Config.in\"\n\tsource \"package/libuio/Config.in\"\n\tsource \"package/linux-backports/Config.in\"\n\tsource \"package/linux-serial-test/Config.in\"\n\tsource \"package/linuxconsoletools/Config.in\"\n\tsource \"package/lirc-tools/Config.in\"\n\tsource \"package/lm-sensors/Config.in\"\n\tsource \"package/lshw/Config.in\"\n\tsource \"package/lsscsi/Config.in\"\n\tsource \"package/lsuio/Config.in\"\n\tsource \"package/luksmeta/Config.in\"\n\tsource \"package/lvm2/Config.in\"\n\tsource \"package/mali-t76x/Config.in\"\n\tsource \"package/mbpfan/Config.in\"\n\tsource \"package/mdadm/Config.in\"\n\tsource \"package/mdevd/Config.in\"\n\tsource \"package/memtest86/Config.in\"\n\tsource \"package/memtester/Config.in\"\n\tsource \"package/memtool/Config.in\"\n\tsource \"package/minicom/Config.in\"\n\tsource \"package/msr-tools/Config.in\"\n\tsource \"package/nanocom/Config.in\"\n\tsource \"package/neard/Config.in\"\n\tsource \"package/nvidia-driver/Config.in\"\n\tsource \"package/nvidia-modprobe/Config.in\"\n\tsource \"package/nvme/Config.in\"\n\tsource \"package/ofono/Config.in\"\n\tsource \"package/on2-8170-modules/Config.in\"\n\tsource \"package/open2300/Config.in\"\n\tsource \"package/openfpgaloader/Config.in\"\n\tsource \"package/openipmi/Config.in\"\n\tsource \"package/openocd/Config.in\"\n\tsource \"package/openpowerlink/Config.in\"\n\tsource \"package/owl-linux/Config.in\"\n\tsource \"package/parted/Config.in\"\n\tsource \"package/pciutils/Config.in\"\n\tsource \"package/pdbg/Config.in\"\n\tsource \"package/picocom/Config.in\"\n\tsource \"package/pifmrds/Config.in\"\n\tsource \"package/pigpio/Config.in\"\n\tsource \"package/powertop/Config.in\"\n\tsource \"package/pps-tools/Config.in\"\n\tsource \"package/pru-software-support/Config.in\"\n\tsource \"package/pulseview/Config.in\"\n\tsource \"package/raspi-gpio/Config.in\"\n\tsource \"package/read-edid/Config.in\"\n\tsource \"package/rng-tools/Config.in\"\n\tsource \"package/rpi-armmem/Config.in\"\n\tsource \"package/rpi-userland/Config.in\"\n\tsource \"package/rs485conf/Config.in\"\n\tsource \"package/rtc-tools/Config.in\"\n\tsource \"package/rtl8188eu/Config.in\"\n\tsource \"package/rtl8189fs/Config.in\"\n\tsource \"package/rtl8723bs/Config.in\"\n\tsource \"package/rtl8723bu/Config.in\"\n\tsource \"package/rtl8812au-aircrack-ng/Config.in\"\n\tsource \"package/rtl8821au/Config.in\"\n\tsource \"package/sane-backends/Config.in\"\n\tsource \"package/sdparm/Config.in\"\n\tsource \"package/sedutil/Config.in\"\n\tsource \"package/setserial/Config.in\"\n\tsource \"package/sg3_utils/Config.in\"\n\tsource \"package/sigrok-cli/Config.in\"\n\tsource \"package/sispmctl/Config.in\"\n\tsource \"package/smartmontools/Config.in\"\n\tsource \"package/smstools3/Config.in\"\n\tsource \"package/spi-tools/Config.in\"\n\tsource \"package/sredird/Config.in\"\n\tsource \"package/statserial/Config.in\"\n\tsource \"package/stm32flash/Config.in\"\n\tsource \"package/sunxi-cedarx/Config.in\"\n\tsource \"package/sunxi-mali-mainline/Config.in\"\n\tsource \"package/sunxi-mali-mainline-driver/Config.in\"\n\tsource \"package/sysstat/Config.in\"\n\tsource \"package/targetcli-fb/Config.in\"\n\tsource \"package/ti-gfx/Config.in\"\n\tsource \"package/ti-sgx-demos/Config.in\"\n\tsource \"package/ti-sgx-km/Config.in\"\n\tsource \"package/ti-sgx-um/Config.in\"\n\tsource \"package/ti-uim/Config.in\"\n\tsource \"package/ti-utils/Config.in\"\n\tsource \"package/tio/Config.in\"\n\tsource \"package/triggerhappy/Config.in\"\n\tsource \"package/uboot-tools/Config.in\"\n\tsource \"package/ubus/Config.in\"\n\tsource \"package/uccp420wlan/Config.in\"\n\tsource \"package/udev/Config.in\"\n\tsource \"package/udev-gentoo-scripts/Config.in\"\n\tsource \"package/udisks/Config.in\"\n\tsource \"package/uhubctl/Config.in\"\n\tsource \"package/umtprd/Config.in\"\n\tsource \"package/upower/Config.in\"\n\tsource \"package/usb_modeswitch/Config.in\"\n\tsource \"package/usb_modeswitch_data/Config.in\"\n\tsource \"package/usbguard/Config.in\"\n\tsource \"package/usbmount/Config.in\"\n\tsource \"package/usbutils/Config.in\"\n\tsource \"package/w_scan/Config.in\"\n\tsource \"package/wf111/Config.in\"\n\tsource \"package/wipe/Config.in\"\n\tsource \"package/xorriso/Config.in\"\n\tsource \"package/xr819-xradio/Config.in\"\nendmenu\n\nmenu \"Interpreter languages and scripting\"\n\tsource \"package/4th/Config.in\"\n\tsource \"package/enscript/Config.in\"\n\tsource \"package/erlang/Config.in\"\nif BR2_PACKAGE_ERLANG\nmenu \"Erlang libraries/modules\"\n\tsource \"package/erlang-base64url/Config.in\"\n\tsource \"package/erlang-eimp/Config.in\"\n\tsource \"package/erlang-goldrush/Config.in\"\n\tsource \"package/erlang-idna/Config.in\"\n\tsource \"package/erlang-jiffy/Config.in\"\n\tsource \"package/erlang-jose/Config.in\"\n\tsource \"package/erlang-lager/Config.in\"\n\tsource \"package/erlang-p1-acme/Config.in\"\n\tsource \"package/erlang-p1-cache-tab/Config.in\"\n\tsource \"package/erlang-p1-mqtree/Config.in\"\n\tsource \"package/erlang-p1-oauth2/Config.in\"\n\tsource \"package/erlang-p1-pkix/Config.in\"\n\tsource \"package/erlang-p1-sip/Config.in\"\n\tsource \"package/erlang-p1-stringprep/Config.in\"\n\tsource \"package/erlang-p1-stun/Config.in\"\n\tsource \"package/erlang-p1-tls/Config.in\"\n\tsource \"package/erlang-p1-utils/Config.in\"\n\tsource \"package/erlang-p1-xml/Config.in\"\n\tsource \"package/erlang-p1-xmpp/Config.in\"\n\tsource \"package/erlang-p1-yaml/Config.in\"\n\tsource \"package/erlang-p1-yconf/Config.in\"\n\tsource \"package/erlang-p1-zlib/Config.in\"\nendmenu\nendif\n\tsource \"package/execline/Config.in\"\n\tsource \"package/ficl/Config.in\"\n\tsource \"package/gauche/Config.in\"\n\tsource \"package/guile/Config.in\"\n\tsource \"package/haserl/Config.in\"\n\tsource \"package/janet/Config.in\"\n\tsource \"package/jimtcl/Config.in\"\n\tsource \"package/lua/Config.in\"\n\tsource \"package/luainterpreter/Config.in\"\n\tsource \"package/luajit/Config.in\"\nif BR2_PACKAGE_HAS_LUAINTERPRETER && !BR2_STATIC_LIBS\n# lua modules are dynamically loaded, so not available on static builds\nmenu \"Lua libraries/modules\"\n# When adding lua packages, make sure the name start with \"lua\". If the\n# upstream package is \"luafoo\", call it \"luafoo\" in Buildroot; if the upstream\n# package is \"foo\", call it \"lua-foo\". Many packages currently don't follow\n# this convention, but that's historical accident.\n\tsource \"package/argparse/Config.in\"\n\tsource \"package/cgilua/Config.in\"\n\tsource \"package/copas/Config.in\"\n\tsource \"package/coxpcall/Config.in\"\n\tsource \"package/dado/Config.in\"\n\tsource \"package/easydbus/Config.in\"\n\tsource \"package/lbase64/Config.in\"\n\tsource \"package/ljlinenoise/Config.in\"\n\tsource \"package/ljsyscall/Config.in\"\n\tsource \"package/lpeg/Config.in\"\n\tsource \"package/lpty/Config.in\"\n\tsource \"package/lrandom/Config.in\"\n\tsource \"package/lsqlite3/Config.in\"\n\tsource \"package/lua-augeas/Config.in\"\n\tsource \"package/lua-basexx/Config.in\"\n\tsource \"package/lua-binaryheap/Config.in\"\n\tsource \"package/lua-bit32/Config.in\"\n\tsource \"package/lua-cjson/Config.in\"\n\tsource \"package/lua-coat/Config.in\"\n\tsource \"package/lua-coatpersistent/Config.in\"\n\tsource \"package/lua-codegen/Config.in\"\n\tsource \"package/lua-compat53/Config.in\"\n\tsource \"package/lua-cqueues/Config.in\"\n\tsource \"package/lua-csnappy/Config.in\"\n\tsource \"package/lua-curl/Config.in\"\n\tsource \"package/lua-datafile/Config.in\"\n\tsource \"package/lua-ev/Config.in\"\n\tsource \"package/lua-fifo/Config.in\"\n\tsource \"package/lua-flu/Config.in\"\n\tsource \"package/lua-gd/Config.in\"\n\tsource \"package/lua-http/Config.in\"\n\tsource \"package/lua-iconv/Config.in\"\n\tsource \"package/lua-livr/Config.in\"\n\tsource \"package/lua-livr-extra/Config.in\"\n\tsource \"package/lua-lpeg-patterns/Config.in\"\n\tsource \"package/lua-lunitx/Config.in\"\n\tsource \"package/lua-lunix/Config.in\"\n\tsource \"package/lua-lyaml/Config.in\"\n\tsource \"package/lua-markdown/Config.in\"\n\tsource \"package/lua-messagepack/Config.in\"\n\tsource \"package/lua-msgpack-native/Config.in\"\n\tsource \"package/lua-periphery/Config.in\"\n\tsource \"package/lua-resty-http/Config.in\"\n\tsource \"package/lua-rotas/Config.in\"\n\tsource \"package/lua-sailor/Config.in\"\n\tsource \"package/lua-sdl2/Config.in\"\n\tsource \"package/lua-silva/Config.in\"\n\tsource \"package/lua-std-debug/Config.in\"\n\tsource \"package/lua-std-normalize/Config.in\"\n\tsource \"package/lua-stdlib/Config.in\"\n\tsource \"package/lua-testmore/Config.in\"\n\tsource \"package/lua-utf8/Config.in\"\n\tsource \"package/lua-valua/Config.in\"\n\tsource \"package/lua-zlib/Config.in\"\n\tsource \"package/luabitop/Config.in\"\n\tsource \"package/luadbi/Config.in\"\n\tsource \"package/luadbi-sqlite3/Config.in\"\n\tsource \"package/luaexpat/Config.in\"\n\tsource \"package/luaexpatutils/Config.in\"\n\tsource \"package/luafilesystem/Config.in\"\n\tsource \"package/luajson/Config.in\"\n\tsource \"package/lualdap/Config.in\"\n\tsource \"package/lualogging/Config.in\"\n\tsource \"package/luaossl/Config.in\"\n\tsource \"package/luaposix/Config.in\"\n\tsource \"package/luasec/Config.in\"\n\tsource \"package/luasocket/Config.in\"\n\tsource \"package/luasql-sqlite3/Config.in\"\n\tsource \"package/luasyslog/Config.in\"\n\tsource \"package/lutok/Config.in\"\n\tsource \"package/luv/Config.in\"\n\tsource \"package/luvi/Config.in\"\n\tsource \"package/lzlib/Config.in\"\n\tsource \"package/orbit/Config.in\"\n\tsource \"package/rings/Config.in\"\n\tsource \"package/turbolua/Config.in\"\n\tsource \"package/wsapi/Config.in\"\n\tsource \"package/wsapi-fcgi/Config.in\"\n\tsource \"package/wsapi-xavante/Config.in\"\n\tsource \"package/xavante/Config.in\"\nendmenu\nendif\n\tsource \"package/micropython/Config.in\"\n\tsource \"package/micropython-lib/Config.in\"\n\tsource \"package/moarvm/Config.in\"\n\tsource \"package/mono/Config.in\"\nif BR2_PACKAGE_MONO\nmenu \"Mono libraries/modules\"\n\tsource \"package/mono-gtksharp3/Config.in\"\nendmenu\nendif\n\tsource \"package/nodejs/Config.in\"\n\tsource \"package/openjdk/Config.in\"\n\tsource \"package/perl/Config.in\"\nif BR2_PACKAGE_PERL\nmenu \"Perl libraries/modules\"\n\tsource \"package/perl-apache-logformat-compiler/Config.in\"\n\tsource \"package/perl-appconfig/Config.in\"\n\tsource \"package/perl-astro-suntime/Config.in\"\n\tsource \"package/perl-class-inspector/Config.in\"\n\tsource \"package/perl-class-load/Config.in\"\n\tsource \"package/perl-class-method-modifiers/Config.in\"\n\tsource \"package/perl-class-std/Config.in\"\n\tsource \"package/perl-class-std-fast/Config.in\"\n\tsource \"package/perl-convert-asn1/Config.in\"\n\tsource \"package/perl-cookie-baker/Config.in\"\n\tsource \"package/perl-crypt-blowfish/Config.in\"\n\tsource \"package/perl-crypt-cbc/Config.in\"\n\tsource \"package/perl-crypt-openssl-aes/Config.in\"\n\tsource \"package/perl-crypt-openssl-random/Config.in\"\n\tsource \"package/perl-crypt-openssl-rsa/Config.in\"\n\tsource \"package/perl-data-dump/Config.in\"\n\tsource \"package/perl-data-optlist/Config.in\"\n\tsource \"package/perl-data-uuid/Config.in\"\n\tsource \"package/perl-date-manip/Config.in\"\n\tsource \"package/perl-datetime-tiny/Config.in\"\n\tsource \"package/perl-dbd-mysql/Config.in\"\n\tsource \"package/perl-dbi/Config.in\"\n\tsource \"package/perl-devel-cycle/Config.in\"\n\tsource \"package/perl-devel-globaldestruction/Config.in\"\n\tsource \"package/perl-devel-size/Config.in\"\n\tsource \"package/perl-devel-stacktrace/Config.in\"\n\tsource \"package/perl-devel-stacktrace-ashtml/Config.in\"\n\tsource \"package/perl-device-serialport/Config.in\"\n\tsource \"package/perl-digest-hmac/Config.in\"\n\tsource \"package/perl-digest-sha1/Config.in\"\n\tsource \"package/perl-dist-checkconflicts/Config.in\"\n\tsource \"package/perl-encode-detect/Config.in\"\n\tsource \"package/perl-encode-locale/Config.in\"\n\tsource \"package/perl-exporter-tiny/Config.in\"\n\tsource \"package/perl-file-listing/Config.in\"\n\tsource \"package/perl-file-sharedir/Config.in\"\n\tsource \"package/perl-file-slurp/Config.in\"\n\tsource \"package/perl-file-util/Config.in\"\n\tsource \"package/perl-filesys-notify-simple/Config.in\"\n\tsource \"package/perl-gd/Config.in\"\n\tsource \"package/perl-gdgraph/Config.in\"\n\tsource \"package/perl-gdtextutil/Config.in\"\n\tsource \"package/perl-hash-multivalue/Config.in\"\n\tsource \"package/perl-html-parser/Config.in\"\n\tsource \"package/perl-html-tagset/Config.in\"\n\tsource \"package/perl-http-cookies/Config.in\"\n\tsource \"package/perl-http-daemon/Config.in\"\n\tsource \"package/perl-http-date/Config.in\"\n\tsource \"package/perl-http-entity-parser/Config.in\"\n\tsource \"package/perl-http-headers-fast/Config.in\"\n\tsource \"package/perl-http-message/Config.in\"\n\tsource \"package/perl-http-multipartparser/Config.in\"\n\tsource \"package/perl-http-negotiate/Config.in\"\n\tsource \"package/perl-i18n/Config.in\"\n\tsource \"package/perl-io-html/Config.in\"\n\tsource \"package/perl-io-interface/Config.in\"\n\tsource \"package/perl-io-socket-multicast/Config.in\"\n\tsource \"package/perl-io-socket-ssl/Config.in\"\n\tsource \"package/perl-json-maybexs/Config.in\"\n\tsource \"package/perl-json-tiny/Config.in\"\n\tsource \"package/perl-libwww-perl/Config.in\"\n\tsource \"package/perl-locale-maketext-lexicon/Config.in\"\n\tsource \"package/perl-lwp-mediatypes/Config.in\"\n\tsource \"package/perl-lwp-protocol-https/Config.in\"\n\tsource \"package/perl-mail-dkim/Config.in\"\n\tsource \"package/perl-mailtools/Config.in\"\n\tsource \"package/perl-math-int64/Config.in\"\n\tsource \"package/perl-math-prime-util/Config.in\"\n\tsource \"package/perl-mime-base64-urlsafe/Config.in\"\n\tsource \"package/perl-mime-tools/Config.in\"\n\tsource \"package/perl-module-implementation/Config.in\"\n\tsource \"package/perl-module-runtime/Config.in\"\n\tsource \"package/perl-mojolicious/Config.in\"\n\tsource \"package/perl-mojolicious-plugin-authentication/Config.in\"\n\tsource \"package/perl-mojolicious-plugin-authorization/Config.in\"\n\tsource \"package/perl-mojolicious-plugin-cspheader/Config.in\"\n\tsource \"package/perl-mojolicious-plugin-i18n/Config.in\"\n\tsource \"package/perl-mojolicious-plugin-securityheader/Config.in\"\n\tsource \"package/perl-moo/Config.in\"\n\tsource \"package/perl-mozilla-ca/Config.in\"\n\tsource \"package/perl-net-dns/Config.in\"\n\tsource \"package/perl-net-http/Config.in\"\n\tsource \"package/perl-net-snmp/Config.in\"\n\tsource \"package/perl-net-ssh2/Config.in\"\n\tsource \"package/perl-net-ssleay/Config.in\"\n\tsource \"package/perl-net-telnet/Config.in\"\n\tsource \"package/perl-netaddr-ip/Config.in\"\n\tsource \"package/perl-number-bytes-human/Config.in\"\n\tsource \"package/perl-package-stash/Config.in\"\n\tsource \"package/perl-params-util/Config.in\"\n\tsource \"package/perl-parse-yapp/Config.in\"\n\tsource \"package/perl-path-tiny/Config.in\"\n\tsource \"package/perl-plack/Config.in\"\n\tsource \"package/perl-posix-strftime-compiler/Config.in\"\n\tsource \"package/perl-role-tiny/Config.in\"\n\tsource \"package/perl-stream-buffered/Config.in\"\n\tsource \"package/perl-sub-exporter-progressive/Config.in\"\n\tsource \"package/perl-sub-install/Config.in\"\n\tsource \"package/perl-sub-quote/Config.in\"\n\tsource \"package/perl-sys-cpu/Config.in\"\n\tsource \"package/perl-sys-meminfo/Config.in\"\n\tsource \"package/perl-sys-mmap/Config.in\"\n\tsource \"package/perl-time-parsedate/Config.in\"\n\tsource \"package/perl-timedate/Config.in\"\n\tsource \"package/perl-try-tiny/Config.in\"\n\tsource \"package/perl-type-tiny/Config.in\"\n\tsource \"package/perl-uri/Config.in\"\n\tsource \"package/perl-www-form-urlencoded/Config.in\"\n\tsource \"package/perl-www-robotrules/Config.in\"\n\tsource \"package/perl-x10/Config.in\"\n\tsource \"package/perl-xml-libxml/Config.in\"\n\tsource \"package/perl-xml-namespacesupport/Config.in\"\n\tsource \"package/perl-xml-sax/Config.in\"\n\tsource \"package/perl-xml-sax-base/Config.in\"\nendmenu\nendif\n\tsource \"package/php/Config.in\"\nif BR2_PACKAGE_PHP\nif !BR2_STATIC_LIBS\nmenu \"External php extensions\"\n\tsource \"package/php-amqp/Config.in\"\n\tsource \"package/php-geoip/Config.in\"\n\tsource \"package/php-gnupg/Config.in\"\n\tsource \"package/php-imagick/Config.in\"\n\tsource \"package/php-memcached/Config.in\"\n\tsource \"package/php-pecl-dbus/Config.in\"\n\tsource \"package/php-ssh2/Config.in\"\n\tsource \"package/php-xdebug/Config.in\"\n\tsource \"package/php-yaml/Config.in\"\n\tsource \"package/php-zmq/Config.in\"\nendmenu\nendif\nif BR2_STATIC_LIBS\ncomment \"External PHP extensions need a toolchain w/ dynamic library\"\nendif\nendif\n\tsource \"package/python/Config.in\"\n\tsource \"package/python3/Config.in\"\nif BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\nmenu \"External python modules\"\n\tsource \"package/python-aenum/Config.in\"\n\tsource \"package/python-aioblescan/Config.in\"\n\tsource \"package/python-aiocoap/Config.in\"\n\tsource \"package/python-aioconsole/Config.in\"\n\tsource \"package/python-aiodns/Config.in\"\n\tsource \"package/python-aiofiles/Config.in\"\n\tsource \"package/python-aiohttp/Config.in\"\n\tsource \"package/python-aiohttp-cors/Config.in\"\n\tsource \"package/python-aiohttp-debugtoolbar/Config.in\"\n\tsource \"package/python-aiohttp-jinja2/Config.in\"\n\tsource \"package/python-aiohttp-mako/Config.in\"\n\tsource \"package/python-aiohttp-remotes/Config.in\"\n\tsource \"package/python-aiohttp-security/Config.in\"\n\tsource \"package/python-aiohttp-session/Config.in\"\n\tsource \"package/python-aiohttp-sse/Config.in\"\n\tsource \"package/python-aiohttp-swagger/Config.in\"\n\tsource \"package/python-aiojobs/Config.in\"\n\tsource \"package/python-aiologstash/Config.in\"\n\tsource \"package/python-aiomonitor/Config.in\"\n\tsource \"package/python-aioprocessing/Config.in\"\n\tsource \"package/python-aioredis/Config.in\"\n\tsource \"package/python-aiorwlock/Config.in\"\n\tsource \"package/python-aiosignal/Config.in\"\n\tsource \"package/python-aiozipkin/Config.in\"\n\tsource \"package/python-alsaaudio/Config.in\"\n\tsource \"package/python-ansicolors/Config.in\"\n\tsource \"package/python-apispec/Config.in\"\n\tsource \"package/python-argh/Config.in\"\n\tsource \"package/python-argon2-cffi/Config.in\"\n\tsource \"package/python-arrow/Config.in\"\n\tsource \"package/python-asgiref/Config.in\"\n\tsource \"package/python-asn1crypto/Config.in\"\n\tsource \"package/python-async-lru/Config.in\"\n\tsource \"package/python-async-timeout/Config.in\"\n\tsource \"package/python-asyncpg/Config.in\"\n\tsource \"package/python-attrs/Config.in\"\n\tsource \"package/python-augeas/Config.in\"\n\tsource \"package/python-autobahn/Config.in\"\n\tsource \"package/python-automat/Config.in\"\n\tsource \"package/python-avro/Config.in\"\n\tsource \"package/python-babel/Config.in\"\n\tsource \"package/python-backcall/Config.in\"\n\tsource \"package/python-backports-abc/Config.in\"\n\tsource \"package/python-backports-functools-lru-cache/Config.in\"\n\tsource \"package/python-backports-shutil-get-terminal-size/Config.in\"\n\tsource \"package/python-backports-ssl-match-hostname/Config.in\"\n\tsource \"package/python-base58/Config.in\"\n\tsource \"package/python-bcrypt/Config.in\"\n\tsource \"package/python-beautifulsoup4/Config.in\"\n\tsource \"package/python-bidict/Config.in\"\n\tsource \"package/python-bitstring/Config.in\"\n\tsource \"package/python-bleak/Config.in\"\n\tsource \"package/python-bluepy/Config.in\"\n\tsource \"package/python-bluezero/Config.in\"\n\tsource \"package/python-boto3/Config.in\"\n\tsource \"package/python-botocore/Config.in\"\n\tsource \"package/python-bottle/Config.in\"\n\tsource \"package/python-brotli/Config.in\"\n\tsource \"package/python-bsdiff4/Config.in\"\n\tsource \"package/python-bunch/Config.in\"\n\tsource \"package/python-cached-property/Config.in\"\n\tsource \"package/python-can/Config.in\"\n\tsource \"package/python-canopen/Config.in\"\n\tsource \"package/python-cbor/Config.in\"\n\tsource \"package/python-cbor2/Config.in\"\n\tsource \"package/python-cchardet/Config.in\"\n\tsource \"package/python-certifi/Config.in\"\n\tsource \"package/python-cffi/Config.in\"\n\tsource \"package/python-channels/Config.in\"\n\tsource \"package/python-channels-redis/Config.in\"\n\tsource \"package/python-characteristic/Config.in\"\n\tsource \"package/python-chardet/Config.in\"\n\tsource \"package/python-charset-normalizer/Config.in\"\n\tsource \"package/python-cheetah/Config.in\"\n\tsource \"package/python-cheroot/Config.in\"\n\tsource \"package/python-cherrypy/Config.in\"\n\tsource \"package/python-click/Config.in\"\n\tsource \"package/python-colibris/Config.in\"\n\tsource \"package/python-colorama/Config.in\"\n\tsource \"package/python-colorlog/Config.in\"\n\tsource \"package/python-colorzero/Config.in\"\n\tsource \"package/python-configobj/Config.in\"\n\tsource \"package/python-configshell-fb/Config.in\"\n\tsource \"package/python-constantly/Config.in\"\n\tsource \"package/python-couchdb/Config.in\"\n\tsource \"package/python-crayons/Config.in\"\n\tsource \"package/python-crc16/Config.in\"\n\tsource \"package/python-crcmod/Config.in\"\n\tsource \"package/python-crontab/Config.in\"\n\tsource \"package/python-crossbar/Config.in\"\n\tsource \"package/python-cryptography/Config.in\"\n\tsource \"package/python-cssselect/Config.in\"\n\tsource \"package/python-cssutils/Config.in\"\n\tsource \"package/python-cycler/Config.in\"\n\tsource \"package/python-daemon/Config.in\"\n\tsource \"package/python-daemonize/Config.in\"\n\tsource \"package/python-daphne/Config.in\"\n\tsource \"package/python-dataproperty/Config.in\"\n\tsource \"package/python-dateutil/Config.in\"\n\tsource \"package/python-dbus-fast/Config.in\"\n\tsource \"package/python-dbus-next/Config.in\"\n\tsource \"package/python-decorator/Config.in\"\n\tsource \"package/python-defusedxml/Config.in\"\n\tsource \"package/python-dialog/Config.in\"\n\tsource \"package/python-dialog3/Config.in\"\n\tsource \"package/python-dicttoxml/Config.in\"\n\tsource \"package/python-django/Config.in\"\n\tsource \"package/python-django-enumfields/Config.in\"\n\tsource \"package/python-dnspython/Config.in\"\n\tsource \"package/python-docker/Config.in\"\n\tsource \"package/python-docker-pycreds/Config.in\"\n\tsource \"package/python-dockerpty/Config.in\"\n\tsource \"package/python-docopt/Config.in\"\n\tsource \"package/python-docutils/Config.in\"\n\tsource \"package/python-dominate/Config.in\"\n\tsource \"package/python-dotenv/Config.in\"\n\tsource \"package/python-dpkt/Config.in\"\n\tsource \"package/python-ecdsa/Config.in\"\n\tsource \"package/python-engineio/Config.in\"\n\tsource \"package/python-entrypoints/Config.in\"\n\tsource \"package/python-enum/Config.in\"\n\tsource \"package/python-enum34/Config.in\"\n\tsource \"package/python-esptool/Config.in\"\n\tsource \"package/python-falcon/Config.in\"\n\tsource \"package/python-filelock/Config.in\"\n\tsource \"package/python-fire/Config.in\"\n\tsource \"package/python-flask/Config.in\"\n\tsource \"package/python-flask-babel/Config.in\"\n\tsource \"package/python-flask-cors/Config.in\"\n\tsource \"package/python-flask-expects-json/Config.in\"\n\tsource \"package/python-flask-jsonrpc/Config.in\"\n\tsource \"package/python-flask-login/Config.in\"\n\tsource \"package/python-flask-sqlalchemy/Config.in\"\n\tsource \"package/python-flask-wtf/Config.in\"\n\tsource \"package/python-flatbuffers/Config.in\"\n\tsource \"package/python-flup/Config.in\"\n\tsource \"package/python-frozenlist/Config.in\"\n\tsource \"package/python-functools32/Config.in\"\n\tsource \"package/python-future/Config.in\"\n\tsource \"package/python-futures/Config.in\"\n\tsource \"package/python-git/Config.in\"\n\tsource \"package/python-gitdb2/Config.in\"\n\tsource \"package/python-gobject/Config.in\"\n\tsource \"package/python-gpiozero/Config.in\"\n\tsource \"package/python-greenlet/Config.in\"\n\tsource \"package/python-gunicorn/Config.in\"\n\tsource \"package/python-h2/Config.in\"\n\tsource \"package/python-hiredis/Config.in\"\n\tsource \"package/python-hpack/Config.in\"\n\tsource \"package/python-html5lib/Config.in\"\n\tsource \"package/python-httplib2/Config.in\"\n\tsource \"package/python-huepy/Config.in\"\n\tsource \"package/python-humanize/Config.in\"\n\tsource \"package/python-hyperframe/Config.in\"\n\tsource \"package/python-hyperlink/Config.in\"\n\tsource \"package/python-ibmiotf/Config.in\"\n\tsource \"package/python-id3/Config.in\"\n\tsource \"package/python-idna/Config.in\"\n\tsource \"package/python-idna-ssl/Config.in\"\n\tsource \"package/python-ifaddr/Config.in\"\n\tsource \"package/python-incremental/Config.in\"\n\tsource \"package/python-inflection/Config.in\"\n\tsource \"package/python-influxdb/Config.in\"\n\tsource \"package/python-iniconfig/Config.in\"\n\tsource \"package/python-iniparse/Config.in\"\n\tsource \"package/python-intelhex/Config.in\"\n\tsource \"package/python-iowait/Config.in\"\n\tsource \"package/python-ipaddr/Config.in\"\n\tsource \"package/python-ipaddress/Config.in\"\n\tsource \"package/python-ipdb/Config.in\"\n\tsource \"package/python-iptables/Config.in\"\n\tsource \"package/python-ipy/Config.in\"\n\tsource \"package/python-ipython/Config.in\"\n\tsource \"package/python-ipython-genutils/Config.in\"\n\tsource \"package/python-iso8601/Config.in\"\n\tsource \"package/python-itsdangerous/Config.in\"\n\tsource \"package/python-iwlib/Config.in\"\n\tsource \"package/python-janus/Config.in\"\n\tsource \"package/python-jaraco-classes/Config.in\"\n\tsource \"package/python-jaraco-functools/Config.in\"\n\tsource \"package/python-jedi/Config.in\"\n\tsource \"package/python-jinja2/Config.in\"\n\tsource \"package/python-jmespath/Config.in\"\n\tsource \"package/python-json-schema-validator/Config.in\"\n\tsource \"package/python-jsonmodels/Config.in\"\n\tsource \"package/python-jsonpointer/Config.in\"\n\tsource \"package/python-jsonschema/Config.in\"\n\tsource \"package/python-keyring/Config.in\"\n\tsource \"package/python-kiwisolver/Config.in\"\n\tsource \"package/python-libconfig/Config.in\"\n\tsource \"package/python-libusb1/Config.in\"\n\tsource \"package/python-lmdb/Config.in\"\n\tsource \"package/python-lockfile/Config.in\"\n\tsource \"package/python-logbook/Config.in\"\n\tsource \"package/python-logstash/Config.in\"\n\tsource \"package/python-lxml/Config.in\"\n\tsource \"package/python-m2crypto/Config.in\"\n\tsource \"package/python-m2r/Config.in\"\n\tsource \"package/python-mad/Config.in\"\n\tsource \"package/python-mako/Config.in\"\n\tsource \"package/python-markdown/Config.in\"\n\tsource \"package/python-markdown2/Config.in\"\n\tsource \"package/python-markupsafe/Config.in\"\n\tsource \"package/python-marshmallow/Config.in\"\n\tsource \"package/python-marshmallow-peewee/Config.in\"\n\tsource \"package/python-matplotlib/Config.in\"\n\tsource \"package/python-mbstrdecoder/Config.in\"\n\tsource \"package/python-mimeparse/Config.in\"\n\tsource \"package/python-mistune/Config.in\"\n\tsource \"package/python-mock/Config.in\"\n\tsource \"package/python-modbus-tk/Config.in\"\n\tsource \"package/python-more-itertools/Config.in\"\n\tsource \"package/python-msgfy/Config.in\"\n\tsource \"package/python-msgpack/Config.in\"\n\tsource \"package/python-multidict/Config.in\"\n\tsource \"package/python-mutagen/Config.in\"\n\tsource \"package/python-mwclient/Config.in\"\n\tsource \"package/python-mwscrape/Config.in\"\n\tsource \"package/python-mwscrape2slob/Config.in\"\n\tsource \"package/python-nested-dict/Config.in\"\n\tsource \"package/python-netaddr/Config.in\"\n\tsource \"package/python-netifaces/Config.in\"\n\tsource \"package/python-networkmanager/Config.in\"\n\tsource \"package/python-networkx/Config.in\"\n\tsource \"package/python-nfc/Config.in\"\n\tsource \"package/python-numpy/Config.in\"\n\tsource \"package/python-oauthlib/Config.in\"\n\tsource \"package/python-opcua-asyncio/Config.in\"\n\tsource \"package/python-packaging/Config.in\"\n\tsource \"package/python-paho-mqtt/Config.in\"\n\tsource \"package/python-pam/Config.in\"\n\tsource \"package/python-paramiko/Config.in\"\n\tsource \"package/python-parso/Config.in\"\n\tsource \"package/python-passlib/Config.in\"\n\tsource \"package/python-pathlib2/Config.in\"\n\tsource \"package/python-pathpy/Config.in\"\n\tsource \"package/python-pathtools/Config.in\"\n\tsource \"package/python-pathvalidate/Config.in\"\n\tsource \"package/python-peewee/Config.in\"\n\tsource \"package/python-peewee-migrate/Config.in\"\n\tsource \"package/python-periphery/Config.in\"\n\tsource \"package/python-pexpect/Config.in\"\n\tsource \"package/python-picamera/Config.in\"\n\tsource \"package/python-pickleshare/Config.in\"\n\tsource \"package/python-piexif/Config.in\"\n\tsource \"package/python-pigpio/Config.in\"\n\tsource \"package/python-pillow/Config.in\"\n\tsource \"package/python-pip/Config.in\"\n\tsource \"package/python-pluggy/Config.in\"\n\tsource \"package/python-ply/Config.in\"\n\tsource \"package/python-portend/Config.in\"\n\tsource \"package/python-posix-ipc/Config.in\"\n\tsource \"package/python-priority/Config.in\"\n\tsource \"package/python-prompt-toolkit/Config.in\"\n\tsource \"package/python-protobuf/Config.in\"\n\tsource \"package/python-psutil/Config.in\"\n\tsource \"package/python-psycopg2/Config.in\"\n\tsource \"package/python-ptyprocess/Config.in\"\n\tsource \"package/python-pudb/Config.in\"\n\tsource \"package/python-py/Config.in\"\n\tsource \"package/python-pyaes/Config.in\"\n\tsource \"package/python-pyalsa/Config.in\"\n\tsource \"package/python-pyasn1/Config.in\"\n\tsource \"package/python-pyasn1-modules/Config.in\"\n\tsource \"package/python-pybind/Config.in\"\n\tsource \"package/python-pycairo/Config.in\"\n\tsource \"package/python-pycares/Config.in\"\n\tsource \"package/python-pycli/Config.in\"\n\tsource \"package/python-pycparser/Config.in\"\n\tsource \"package/python-pycryptodomex/Config.in\"\n\tsource \"package/python-pycups/Config.in\"\n\tsource \"package/python-pycurl/Config.in\"\n\tsource \"package/python-pydal/Config.in\"\n\tsource \"package/python-pydantic/Config.in\"\n\tsource \"package/python-pyelftools/Config.in\"\n\tsource \"package/python-pyftpdlib/Config.in\"\n\tsource \"package/python-pygame/Config.in\"\n\tsource \"package/python-pygments/Config.in\"\n\tsource \"package/python-pyhamcrest/Config.in\"\n\tsource \"package/python-pyhocon/Config.in\"\n\tsource \"package/python-pyicu/Config.in\"\n\tsource \"package/python-pyinotify/Config.in\"\n\tsource \"package/python-pyjwt/Config.in\"\n\tsource \"package/python-pylibftdi/Config.in\"\n\tsource \"package/python-pylru/Config.in\"\n\tsource \"package/python-pymodbus/Config.in\"\n\tsource \"package/python-pymongo/Config.in\"\n\tsource \"package/python-pymupdf/Config.in\"\n\tsource \"package/python-pymysql/Config.in\"\n\tsource \"package/python-pynacl/Config.in\"\n\tsource \"package/python-pyndiff/Config.in\"\n\tsource \"package/python-pyopenssl/Config.in\"\n\tsource \"package/python-pyparsing/Config.in\"\n\tsource \"package/python-pyparted/Config.in\"\n\tsource \"package/python-pypcap/Config.in\"\n\tsource \"package/python-pyqrcode/Config.in\"\n\tsource \"package/python-pyqt5/Config.in\"\n\tsource \"package/python-pyratemp/Config.in\"\n\tsource \"package/python-pyro/Config.in\"\n\tsource \"package/python-pyroute2/Config.in\"\n\tsource \"package/python-pysendfile/Config.in\"\n\tsource \"package/python-pysftp/Config.in\"\n\tsource \"package/python-pysmb/Config.in\"\n\tsource \"package/python-pysmi/Config.in\"\n\tsource \"package/python-pysnmp/Config.in\"\n\tsource \"package/python-pysnmp-mibs/Config.in\"\n\tsource \"package/python-pysocks/Config.in\"\n\tsource \"package/python-pytablereader/Config.in\"\n\tsource \"package/python-pytablewriter/Config.in\"\n\tsource \"package/python-pytest/Config.in\"\n\tsource \"package/python-pytest-asyncio/Config.in\"\n\tsource \"package/python-pytrie/Config.in\"\n\tsource \"package/python-pytz/Config.in\"\n\tsource \"package/python-pyudev/Config.in\"\n\tsource \"package/python-pyusb/Config.in\"\n\tsource \"package/python-pyxb/Config.in\"\n\tsource \"package/python-pyyaml/Config.in\"\n\tsource \"package/python-pyzmq/Config.in\"\n\tsource \"package/python-raven/Config.in\"\n\tsource \"package/python-redis/Config.in\"\n\tsource \"package/python-reentry/Config.in\"\n\tsource \"package/python-regex/Config.in\"\n\tsource \"package/python-remi/Config.in\"\n\tsource \"package/python-request-id/Config.in\"\n\tsource \"package/python-requests/Config.in\"\n\tsource \"package/python-requests-oauthlib/Config.in\"\n\tsource \"package/python-requests-toolbelt/Config.in\"\n\tsource \"package/python-rpi-gpio/Config.in\"\n\tsource \"package/python-rpi-ws281x/Config.in\"\n\tsource \"package/python-rq/Config.in\"\n\tsource \"package/python-rsa/Config.in\"\n\tsource \"package/python-rtslib-fb/Config.in\"\n\tsource \"package/python-s3transfer/Config.in\"\n\tsource \"package/python-scandir/Config.in\"\n\tsource \"package/python-scapy/Config.in\"\n\tsource \"package/python-schedule/Config.in\"\n\tsource \"package/python-sdnotify/Config.in\"\n\tsource \"package/python-secretstorage/Config.in\"\n\tsource \"package/python-see/Config.in\"\n\tsource \"package/python-semver/Config.in\"\n\tsource \"package/python-sentry-sdk/Config.in\"\n\tsource \"package/python-serial/Config.in\"\n\tsource \"package/python-serial-asyncio/Config.in\"\n\tsource \"package/python-service-identity/Config.in\"\n\tsource \"package/python-setproctitle/Config.in\"\n\tsource \"package/python-setuptools/Config.in\"\n\tsource \"package/python-sh/Config.in\"\n\tsource \"package/python-shutilwhich/Config.in\"\n\tsource \"package/python-simpleaudio/Config.in\"\n\tsource \"package/python-simplegeneric/Config.in\"\n\tsource \"package/python-simplejson/Config.in\"\n\tsource \"package/python-simplelogging/Config.in\"\n\tsource \"package/python-simplesqlite/Config.in\"\n\tsource \"package/python-singledispatch/Config.in\"\n\tsource \"package/python-sip/Config.in\"\n\tsource \"package/python-six/Config.in\"\n\tsource \"package/python-slob/Config.in\"\n\tsource \"package/python-smbus-cffi/Config.in\"\n\tsource \"package/python-smbus2/Config.in\"\n\tsource \"package/python-smmap2/Config.in\"\n\tsource \"package/python-snappy/Config.in\"\n\tsource \"package/python-socketio/Config.in\"\n\tsource \"package/python-sockjs/Config.in\"\n\tsource \"package/python-sortedcontainers/Config.in\"\n\tsource \"package/python-soupsieve/Config.in\"\n\tsource \"package/python-spidev/Config.in\"\n\tsource \"package/python-sqlalchemy/Config.in\"\n\tsource \"package/python-sqliteschema/Config.in\"\n\tsource \"package/python-sqlparse/Config.in\"\n\tsource \"package/python-subprocess32/Config.in\"\n\tsource \"package/python-systemd/Config.in\"\n\tsource \"package/python-tabledata/Config.in\"\n\tsource \"package/python-tempora/Config.in\"\n\tsource \"package/python-termcolor/Config.in\"\n\tsource \"package/python-terminaltables/Config.in\"\n\tsource \"package/python-texttable/Config.in\"\n\tsource \"package/python-thrift/Config.in\"\n\tsource \"package/python-tinyrpc/Config.in\"\n\tsource \"package/python-tomako/Config.in\"\n\tsource \"package/python-toml/Config.in\"\n\tsource \"package/python-tornado/Config.in\"\n\tsource \"package/python-tqdm/Config.in\"\n\tsource \"package/python-traitlets/Config.in\"\n\tsource \"package/python-treq/Config.in\"\n\tsource \"package/python-twisted/Config.in\"\n\tsource \"package/python-txaio/Config.in\"\n\tsource \"package/python-txdbus/Config.in\"\n\tsource \"package/python-txtorcon/Config.in\"\n\tsource \"package/python-typepy/Config.in\"\n\tsource \"package/python-typing/Config.in\"\n\tsource \"package/python-typing-extensions/Config.in\"\n\tsource \"package/python-u-msgpack/Config.in\"\n\tsource \"package/python-ubjson/Config.in\"\n\tsource \"package/python-ujson/Config.in\"\n\tsource \"package/python-unittest-xml-reporting/Config.in\"\n\tsource \"package/python-unqlite/Config.in\"\n\tsource \"package/python-urllib3/Config.in\"\n\tsource \"package/python-urwid/Config.in\"\n\tsource \"package/python-uvloop/Config.in\"\n\tsource \"package/python-validators/Config.in\"\n\tsource \"package/python-versiontools/Config.in\"\n\tsource \"package/python-visitor/Config.in\"\n\tsource \"package/python-watchdog/Config.in\"\n\tsource \"package/python-wcwidth/Config.in\"\n\tsource \"package/python-web2py/Config.in\"\n\tsource \"package/python-webargs/Config.in\"\n\tsource \"package/python-webencodings/Config.in\"\n\tsource \"package/python-webob/Config.in\"\n\tsource \"package/python-webpy/Config.in\"\n\tsource \"package/python-websocket-client/Config.in\"\n\tsource \"package/python-websockets/Config.in\"\n\tsource \"package/python-werkzeug/Config.in\"\n\tsource \"package/python-whoosh/Config.in\"\n\tsource \"package/python-wrapt/Config.in\"\n\tsource \"package/python-ws4py/Config.in\"\n\tsource \"package/python-wsaccel/Config.in\"\n\tsource \"package/python-wtforms/Config.in\"\n\tsource \"package/python-xlib/Config.in\"\n\tsource \"package/python-xlrd/Config.in\"\n\tsource \"package/python-xlsxwriter/Config.in\"\n\tsource \"package/python-xlutils/Config.in\"\n\tsource \"package/python-xlwt/Config.in\"\n\tsource \"package/python-xmljson/Config.in\"\n\tsource \"package/python-xmltodict/Config.in\"\n\tsource \"package/python-xmodem/Config.in\"\n\tsource \"package/python-yarl/Config.in\"\n\tsource \"package/python-yatl/Config.in\"\n\tsource \"package/python-yieldfrom/Config.in\"\n\tsource \"package/python-zc-lockfile/Config.in\"\n\tsource \"package/python-zeroconf/Config.in\"\n\tsource \"package/python-zope-interface/Config.in\"\nendmenu\nendif\n\tsource \"package/quickjs/Config.in\"\n\tsource \"package/ruby/Config.in\"\n\tsource \"package/tcl/Config.in\"\nif BR2_PACKAGE_TCL\nmenu \"Tcl libraries/modules\"\n\tsource \"package/expect/Config.in\"\n\tsource \"package/tcllib/Config.in\"\nendmenu\nendif\nendmenu\n\nmenu \"Libraries\"\n\nmenu \"Audio/Sound\"\n\tsource \"package/alsa-lib/Config.in\"\n\tsource \"package/alsa-plugins/Config.in\"\n\tsource \"package/alure/Config.in\"\n\tsource \"package/aubio/Config.in\"\n\tsource \"package/bcg729/Config.in\"\n\tsource \"package/caps/Config.in\"\n\tsource \"package/fdk-aac/Config.in\"\n\tsource \"package/libao/Config.in\"\n\tsource \"package/libasplib/Config.in\"\n\tsource \"package/libbroadvoice/Config.in\"\n\tsource \"package/libcdaudio/Config.in\"\n\tsource \"package/libcddb/Config.in\"\n\tsource \"package/libcdio/Config.in\"\n\tsource \"package/libcdio-paranoia/Config.in\"\n\tsource \"package/libcodec2/Config.in\"\n\tsource \"package/libcue/Config.in\"\n\tsource \"package/libcuefile/Config.in\"\n\tsource \"package/libebur128/Config.in\"\n\tsource \"package/libg7221/Config.in\"\n\tsource \"package/libgsm/Config.in\"\n\tsource \"package/libid3tag/Config.in\"\n\tsource \"package/libilbc/Config.in\"\n\tsource \"package/liblo/Config.in\"\n\tsource \"package/libmad/Config.in\"\n\tsource \"package/libmodplug/Config.in\"\n\tsource \"package/libmpd/Config.in\"\n\tsource \"package/libmpdclient/Config.in\"\n\tsource \"package/libreplaygain/Config.in\"\n\tsource \"package/libsamplerate/Config.in\"\n\tsource \"package/libsidplay2/Config.in\"\n\tsource \"package/libsilk/Config.in\"\n\tsource \"package/libsndfile/Config.in\"\n\tsource \"package/libsoundtouch/Config.in\"\n\tsource \"package/libsoxr/Config.in\"\n\tsource \"package/libvorbis/Config.in\"\n\tsource \"package/mp4v2/Config.in\"\n\tsource \"package/openal/Config.in\"\n\tsource \"package/opencore-amr/Config.in\"\n\tsource \"package/opus/Config.in\"\n\tsource \"package/opusfile/Config.in\"\n\tsource \"package/portaudio/Config.in\"\n\tsource \"package/sbc/Config.in\"\n\tsource \"package/spandsp/Config.in\"\n\tsource \"package/speex/Config.in\"\n\tsource \"package/speexdsp/Config.in\"\n\tsource \"package/taglib/Config.in\"\n\tsource \"package/tinyalsa/Config.in\"\n\tsource \"package/tremor/Config.in\"\n\tsource \"package/vo-aacenc/Config.in\"\n\tsource \"package/webrtc-audio-processing/Config.in\"\nendmenu\n\nmenu \"Compression and decompression\"\n\tsource \"package/libarchive/Config.in\"\n\tsource \"package/libmspack/Config.in\"\n\tsource \"package/libsquish/Config.in\"\n\tsource \"package/libzip/Config.in\"\n\tsource \"package/lz4/Config.in\"\n\tsource \"package/lzo/Config.in\"\n\tsource \"package/minizip/Config.in\"\n\tsource \"package/snappy/Config.in\"\n\tsource \"package/szip/Config.in\"\n\tsource \"package/zlib/Config.in\"\n\tsource \"package/zziplib/Config.in\"\nendmenu\n\nmenu \"Crypto\"\n\tsource \"package/bearssl/Config.in\"\n\tsource \"package/beecrypt/Config.in\"\n\tsource \"package/botan/Config.in\"\n\tsource \"package/ca-certificates/Config.in\"\n\tsource \"package/cryptodev/Config.in\"\n\tsource \"package/gcr/Config.in\"\n\tsource \"package/gnutls/Config.in\"\n\tsource \"package/libargon2/Config.in\"\n\tsource \"package/libassuan/Config.in\"\n\tsource \"package/libgcrypt/Config.in\"\n\tsource \"package/libgpg-error/Config.in\"\n\tsource \"package/libgpgme/Config.in\"\n\tsource \"package/libkcapi/Config.in\"\n\tsource \"package/libksba/Config.in\"\n\tsource \"package/libmhash/Config.in\"\n\tsource \"package/libnss/Config.in\"\n\tsource \"package/libolm/Config.in\"\n\tsource \"package/libp11/Config.in\"\n\tsource \"package/libscrypt/Config.in\"\n\tsource \"package/libsecret/Config.in\"\n\tsource \"package/libsha1/Config.in\"\n\tsource \"package/libsodium/Config.in\"\n\tsource \"package/libssh/Config.in\"\n\tsource \"package/libssh2/Config.in\"\n\tsource \"package/libtomcrypt/Config.in\"\n\tsource \"package/libuecc/Config.in\"\n\tsource \"package/libxcrypt/Config.in\"\n\tsource \"package/mbedtls/Config.in\"\n\tsource \"package/nettle/Config.in\"\n\tsource \"package/openssl/Config.in\"\n\tsource \"package/pkcs11-helper/Config.in\"\n\tsource \"package/rhash/Config.in\"\n\tsource \"package/tinydtls/Config.in\"\n\tsource \"package/tpm2-pkcs11/Config.in\"\n\tsource \"package/tpm2-tss/Config.in\"\n\tsource \"package/trousers/Config.in\"\n\tsource \"package/ustream-ssl/Config.in\"\n\tsource \"package/wolfssl/Config.in\"\nendmenu\n\nmenu \"Database\"\n\tsource \"package/berkeleydb/Config.in\"\n\tsource \"package/cppdb/Config.in\"\n\tsource \"package/gdbm/Config.in\"\n\tsource \"package/hiredis/Config.in\"\n\tsource \"package/kompexsqlite/Config.in\"\n\tsource \"package/leveldb/Config.in\"\n\tsource \"package/libdbi/Config.in\"\n\tsource \"package/libdbi-drivers/Config.in\"\n\tsource \"package/libgit2/Config.in\"\n\tsource \"package/libmdbx/Config.in\"\n\tsource \"package/libodb/Config.in\"\n\tsource \"package/libodb-boost/Config.in\"\n\tsource \"package/libodb-mysql/Config.in\"\n\tsource \"package/libodb-pgsql/Config.in\"\n\tsource \"package/libpqxx/Config.in\"\n\tsource \"package/mongodb/Config.in\"\n\tsource \"package/mysql/Config.in\"\n\tsource \"package/postgresql/Config.in\"\nif BR2_PACKAGE_POSTGRESQL\n\tsource \"package/osm2pgsql/Config.in\"\n\tsource \"package/postgis/Config.in\"\nendif\n\tsource \"package/redis/Config.in\"\n\tsource \"package/rocksdb/Config.in\"\n\tsource \"package/sqlcipher/Config.in\"\n\tsource \"package/sqlite/Config.in\"\n\tsource \"package/timescaledb/Config.in\"\n\tsource \"package/unixodbc/Config.in\"\nendmenu\n\nmenu \"Filesystem\"\n\tsource \"package/gamin/Config.in\"\n\tsource \"package/libconfig/Config.in\"\n\tsource \"package/libconfuse/Config.in\"\n\tsource \"package/libfuse/Config.in\"\n\tsource \"package/libfuse3/Config.in\"\n\tsource \"package/liblockfile/Config.in\"\n\tsource \"package/libnfs/Config.in\"\n\tsource \"package/libsysfs/Config.in\"\n\tsource \"package/lockdev/Config.in\"\n\tsource \"package/physfs/Config.in\"\nendmenu\n\nmenu \"Graphics\"\n\tsource \"package/assimp/Config.in\"\n\tsource \"package/at-spi2-atk/Config.in\"\n\tsource \"package/at-spi2-core/Config.in\"\n\tsource \"package/atk/Config.in\"\n\tsource \"package/atkmm/Config.in\"\n\tsource \"package/bayer2rgb-neon/Config.in\"\n\tsource \"package/bullet/Config.in\"\n\tsource \"package/cairo/Config.in\"\n\tsource \"package/cairomm/Config.in\"\n\tsource \"package/chipmunk/Config.in\"\n\tsource \"package/exempi/Config.in\"\n\tsource \"package/exiv2/Config.in\"\n\tsource \"package/fltk/Config.in\"\n\tsource \"package/fontconfig/Config.in\"\n\tsource \"package/freetype/Config.in\"\n\tsource \"package/gd/Config.in\"\n\tsource \"package/gdk-pixbuf/Config.in\"\n\tsource \"package/giblib/Config.in\"\n\tsource \"package/giflib/Config.in\"\n\tsource \"package/granite/Config.in\"\n\tsource \"package/graphite2/Config.in\"\n\tsource \"package/gtkmm3/Config.in\"\n\tsource \"package/gtksourceview/Config.in\"\n\tsource \"package/harfbuzz/Config.in\"\n\tsource \"package/ijs/Config.in\"\n\tsource \"package/imlib2/Config.in\"\n\tsource \"package/intel-gmmlib/Config.in\"\n\tsource \"package/intel-mediadriver/Config.in\"\n\tsource \"package/intel-mediasdk/Config.in\"\n\tsource \"package/irrlicht/Config.in\"\n\tsource \"package/jasper/Config.in\"\n\tsource \"package/jbig2dec/Config.in\"\n\tsource \"package/jpeg/Config.in\"\n\tsource \"package/kmsxx/Config.in\"\n\tsource \"package/lcms2/Config.in\"\n\tsource \"package/lensfun/Config.in\"\n\tsource \"package/leptonica/Config.in\"\n\tsource \"package/lesstif/Config.in\"\n\tsource \"package/libart/Config.in\"\n\tsource \"package/libdmtx/Config.in\"\n\tsource \"package/libdri2/Config.in\"\n\tsource \"package/libdrm/Config.in\"\n\tsource \"package/libepoxy/Config.in\"\n\tsource \"package/libexif/Config.in\"\n\tsource \"package/libfm/Config.in\"\n\tsource \"package/libfm-extra/Config.in\"\n\tsource \"package/libfreeglut/Config.in\"\n\tsource \"package/libfreeimage/Config.in\"\n\tsource \"package/libgdiplus/Config.in\"\n\tsource \"package/libgeotiff/Config.in\"\n\tsource \"package/libglade/Config.in\"\n\tsource \"package/libglew/Config.in\"\n\tsource \"package/libglfw/Config.in\"\n\tsource \"package/libglu/Config.in\"\n\tsource \"package/libgta/Config.in\"\n\tsource \"package/libgtk2/Config.in\"\n\tsource \"package/libgtk3/Config.in\"\n\tsource \"package/libmediaart/Config.in\"\n\tsource \"package/libmng/Config.in\"\n\tsource \"package/libpng/Config.in\"\n\tsource \"package/libqrencode/Config.in\"\n\tsource \"package/libraw/Config.in\"\n\tsource \"package/librsvg/Config.in\"\n\tsource \"package/libsvg/Config.in\"\n\tsource \"package/libsvg-cairo/Config.in\"\n\tsource \"package/libsvgtiny/Config.in\"\n\tsource \"package/libva/Config.in\"\n\tsource \"package/libva-intel-driver/Config.in\"\n\tsource \"package/libvdpau/Config.in\"\n\tsource \"package/libvips/Config.in\"\n\tsource \"package/libwpe/Config.in\"\n\tsource \"package/menu-cache/Config.in\"\n\tsource \"package/opencv3/Config.in\"\n\tsource \"package/opencv4/Config.in\"\n\tsource \"package/opengl/Config.in\"\n\tsource \"package/openjpeg/Config.in\"\n\tsource \"package/pango/Config.in\"\n\tsource \"package/pangomm/Config.in\"\n\tsource \"package/pipewire/Config.in\"\n\tsource \"package/pipewire-media-session/Config.in\"\n\tsource \"package/pixman/Config.in\"\n\tsource \"package/poppler/Config.in\"\n\tsource \"package/powervr/Config.in\"\n\tsource \"package/tiff/Config.in\"\n\tsource \"package/unclutter-xfixes/Config.in\"\n\tsource \"package/waffle/Config.in\"\n\tsource \"package/wayland/Config.in\"\n\tsource \"package/wayland-protocols/Config.in\"\n\tsource \"package/wayland-utils/Config.in\"\n\tsource \"package/waylandpp/Config.in\"\n\tsource \"package/webkitgtk/Config.in\"\n\tsource \"package/webp/Config.in\"\n\tsource \"package/wireplumber/Config.in\"\n\tsource \"package/wlroots/Config.in\"\n\tsource \"package/woff2/Config.in\"\n\tsource \"package/wpebackend-fdo/Config.in\"\n\tsource \"package/wpewebkit/Config.in\"\n\tsource \"package/zbar/Config.in\"\n\tsource \"package/zxing-cpp/Config.in\"\nendmenu\n\nmenu \"Hardware handling\"\n\tsource \"package/acsccid/Config.in\"\n\tsource \"package/bcm2835/Config.in\"\n\tsource \"package/c-periphery/Config.in\"\n\tsource \"package/ccid/Config.in\"\n\tsource \"package/dtc/Config.in\"\n\tsource \"package/gnu-efi/Config.in\"\n\tsource \"package/hackrf/Config.in\"\n\tsource \"package/hidapi/Config.in\"\n\tsource \"package/jitterentropy-library/Config.in\"\n\tsource \"package/lcdapi/Config.in\"\n\tsource \"package/let-me-create/Config.in\"\n\tsource \"package/libaio/Config.in\"\n\tsource \"package/libatasmart/Config.in\"\n\tsource \"package/libblockdev/Config.in\"\n\tsource \"package/libcec/Config.in\"\n\tsource \"package/libfreefare/Config.in\"\n\tsource \"package/libftdi/Config.in\"\n\tsource \"package/libftdi1/Config.in\"\n\tsource \"package/libgphoto2/Config.in\"\n\tsource \"package/libgpiod/Config.in\"\n\tsource \"package/libgudev/Config.in\"\n\tsource \"package/libhid/Config.in\"\n\tsource \"package/libiio/Config.in\"\n\tsource \"package/libinput/Config.in\"\n\tsource \"package/libiqrf/Config.in\"\n\tsource \"package/libllcp/Config.in\"\n\tsource \"package/libmbim/Config.in\"\n\tsource \"package/libnfc/Config.in\"\n\tsource \"package/libpciaccess/Config.in\"\n\tsource \"package/libphidget/Config.in\"\n\tsource \"package/libpri/Config.in\"\n\tsource \"package/libqmi/Config.in\"\n\tsource \"package/libqrtr-glib/Config.in\"\n\tsource \"package/libraw1394/Config.in\"\n\tsource \"package/librtas/Config.in\"\n\tsource \"package/librtlsdr/Config.in\"\n\tsource \"package/libserial/Config.in\"\n\tsource \"package/libserialport/Config.in\"\n\tsource \"package/libsigrok/Config.in\"\n\tsource \"package/libsigrokdecode/Config.in\"\n\tsource \"package/libsoc/Config.in\"\n\tsource \"package/libss7/Config.in\"\n\tsource \"package/libusb/Config.in\"\n\tsource \"package/libusb-compat/Config.in\"\n\tsource \"package/libusbgx/Config.in\"\n\tsource \"package/libv4l/Config.in\"\n\tsource \"package/libxkbcommon/Config.in\"\n\tsource \"package/mraa/Config.in\"\n\tsource \"package/mtdev/Config.in\"\n\tsource \"package/ne10/Config.in\"\n\tsource \"package/neardal/Config.in\"\n\tsource \"package/owfs/Config.in\"\n\tsource \"package/pcsc-lite/Config.in\"\n\tsource \"package/tslib/Config.in\"\n\tsource \"package/uhd/Config.in\"\n\tsource \"package/urg/Config.in\"\nendmenu\n\nmenu \"Javascript\"\n\tsource \"package/angularjs/Config.in\"\nif BR2_PACKAGE_ANGULARJS\nmenu \"External AngularJS plugins\"\n\tsource \"package/angular-websocket/Config.in\"\nendmenu\nendif\n\tsource \"package/bootstrap/Config.in\"\n\tsource \"package/chartjs/Config.in\"\n\tsource \"package/datatables/Config.in\"\n\tsource \"package/datatables-buttons/Config.in\"\n\tsource \"package/datatables-fixedcolumns/Config.in\"\n\tsource \"package/datatables-responsive/Config.in\"\n\tsource \"package/duktape/Config.in\"\n\tsource \"package/explorercanvas/Config.in\"\n\tsource \"package/flot/Config.in\"\n\tsource \"package/jquery/Config.in\"\nif BR2_PACKAGE_JQUERY\nmenu \"External jQuery plugins\"\n\tsource \"package/jquery-datetimepicker/Config.in\"\n\tsource \"package/jquery-keyboard/Config.in\"\n\tsource \"package/jquery-mobile/Config.in\"\n\tsource \"package/jquery-sidebar/Config.in\"\n\tsource \"package/jquery-sparkline/Config.in\"\n\tsource \"package/jquery-ui/Config.in\"\n\tsource \"package/jquery-ui-themes/Config.in\"\n\tsource \"package/jquery-validation/Config.in\"\nendmenu\nendif\n\tsource \"package/jsmin/Config.in\"\n\tsource \"package/json-javascript/Config.in\"\n\tsource \"package/jszip/Config.in\"\n\tsource \"package/openlayers/Config.in\"\n\tsource \"package/popperjs/Config.in\"\n\tsource \"package/vuejs/Config.in\"\nif BR2_PACKAGE_VUEJS\ncomment \"External Vue.js plugins\"\n\tsource \"package/vuejs-router/Config.in\"\nendif\nendmenu\n\nmenu \"JSON/XML\"\n\tsource \"package/benejson/Config.in\"\n\tsource \"package/cjson/Config.in\"\n\tsource \"package/expat/Config.in\"\n\tsource \"package/jansson/Config.in\"\n\tsource \"package/jose/Config.in\"\n\tsource \"package/jsmn/Config.in\"\n\tsource \"package/json-c/Config.in\"\n\tsource \"package/json-for-modern-cpp/Config.in\"\n\tsource \"package/json-glib/Config.in\"\n\tsource \"package/jsoncpp/Config.in\"\n\tsource \"package/libbson/Config.in\"\n\tsource \"package/libfastjson/Config.in\"\n\tsource \"package/libjson/Config.in\"\n\tsource \"package/libroxml/Config.in\"\n\tsource \"package/libucl/Config.in\"\n\tsource \"package/libxml2/Config.in\"\n\tsource \"package/libxmlpp/Config.in\"\n\tsource \"package/libxmlrpc/Config.in\"\n\tsource \"package/libxslt/Config.in\"\n\tsource \"package/libyaml/Config.in\"\n\tsource \"package/mxml/Config.in\"\n\tsource \"package/pugixml/Config.in\"\n\tsource \"package/rapidjson/Config.in\"\n\tsource \"package/rapidxml/Config.in\"\n\tsource \"package/raptor/Config.in\"\n\tsource \"package/tinyxml/Config.in\"\n\tsource \"package/tinyxml2/Config.in\"\n\tsource \"package/valijson/Config.in\"\n\tsource \"package/xerces/Config.in\"\n\tsource \"package/xml-security-c/Config.in\"\n\tsource \"package/yajl/Config.in\"\n\tsource \"package/yaml-cpp/Config.in\"\nendmenu\n\nmenu \"Logging\"\n\tsource \"package/glog/Config.in\"\n\tsource \"package/liblog4c-localtime/Config.in\"\n\tsource \"package/liblogging/Config.in\"\n\tsource \"package/log4cplus/Config.in\"\n\tsource \"package/log4cpp/Config.in\"\n\tsource \"package/log4cxx/Config.in\"\n\tsource \"package/log4qt/Config.in\"\n\tsource \"package/opentracing-cpp/Config.in\"\n\tsource \"package/spdlog/Config.in\"\n\tsource \"package/zlog/Config.in\"\nendmenu\n\nmenu \"Multimedia\"\n\tsource \"package/bitstream/Config.in\"\n\tsource \"package/dav1d/Config.in\"\n\tsource \"package/kvazaar/Config.in\"\n\tsource \"package/libaacs/Config.in\"\n\tsource \"package/libass/Config.in\"\n\tsource \"package/libbdplus/Config.in\"\n\tsource \"package/libbluray/Config.in\"\n\tsource \"package/libcamera/Config.in\"\n\tsource \"package/libdcadec/Config.in\"\n\tsource \"package/libdvbcsa/Config.in\"\n\tsource \"package/libdvbpsi/Config.in\"\n\tsource \"package/libdvbsi/Config.in\"\n\tsource \"package/libdvdcss/Config.in\"\n\tsource \"package/libdvdnav/Config.in\"\n\tsource \"package/libdvdread/Config.in\"\n\tsource \"package/libebml/Config.in\"\n\tsource \"package/libhdhomerun/Config.in\"\n\tsource \"package/libimxvpuapi/Config.in\"\n\tsource \"package/libmatroska/Config.in\"\n\tsource \"package/libmms/Config.in\"\n\tsource \"package/libmpeg2/Config.in\"\n\tsource \"package/libogg/Config.in\"\n\tsource \"package/libopenh264/Config.in\"\n\tsource \"package/libopusenc/Config.in\"\n\tsource \"package/libtheora/Config.in\"\n\tsource \"package/libudfread/Config.in\"\n\tsource \"package/libvpx/Config.in\"\n\tsource \"package/libyuv/Config.in\"\n\tsource \"package/live555/Config.in\"\n\tsource \"package/mediastreamer/Config.in\"\n\tsource \"package/v4l2cpp/Config.in\"\n\tsource \"package/x264/Config.in\"\n\tsource \"package/x265/Config.in\"\nendmenu\n\nmenu \"Networking\"\n\tsource \"package/agentpp/Config.in\"\n\tsource \"package/azmq/Config.in\"\n\tsource \"package/azure-iot-sdk-c/Config.in\"\n\tsource \"package/batman-adv/Config.in\"\n\tsource \"package/belle-sip/Config.in\"\n\tsource \"package/bluez5_utils-headers/Config.in\"\n\tsource \"package/c-ares/Config.in\"\n\tsource \"package/cgic/Config.in\"\n\tsource \"package/chirpstack-gateway-bridge/Config.in\"\n\tsource \"package/cppzmq/Config.in\"\n\tsource \"package/curlpp/Config.in\"\n\tsource \"package/czmq/Config.in\"\n\tsource \"package/daq/Config.in\"\n\tsource \"package/daq3/Config.in\"\n\tsource \"package/davici/Config.in\"\n\tsource \"package/enet/Config.in\"\n\tsource \"package/filemq/Config.in\"\n\tsource \"package/flickcurl/Config.in\"\n\tsource \"package/fmlib/Config.in\"\n\tsource \"package/freeradius-client/Config.in\"\n\tsource \"package/gensio/Config.in\"\n\tsource \"package/geoip/Config.in\"\n\tsource \"package/glib-networking/Config.in\"\n\tsource \"package/grpc/Config.in\"\n\tsource \"package/gssdp/Config.in\"\n\tsource \"package/gupnp/Config.in\"\n\tsource \"package/gupnp-av/Config.in\"\n\tsource \"package/gupnp-dlna/Config.in\"\n\tsource \"package/ibrcommon/Config.in\"\n\tsource \"package/ibrdtn/Config.in\"\n\tsource \"package/libcgi/Config.in\"\n\tsource \"package/libcgicc/Config.in\"\n\tsource \"package/libcoap/Config.in\"\n\tsource \"package/libcpprestsdk/Config.in\"\n\tsource \"package/libcurl/Config.in\"\n\tsource \"package/libdnet/Config.in\"\n\tsource \"package/libeXosip2/Config.in\"\n\tsource \"package/libfcgi/Config.in\"\n\tsource \"package/libgsasl/Config.in\"\n\tsource \"package/libhtp/Config.in\"\n\tsource \"package/libhttpparser/Config.in\"\n\tsource \"package/libhttpserver/Config.in\"\n\tsource \"package/libidn/Config.in\"\n\tsource \"package/libidn2/Config.in\"\n\tsource \"package/libiscsi/Config.in\"\n\tsource \"package/libkrb5/Config.in\"\n\tsource \"package/libldns/Config.in\"\n\tsource \"package/libmaxminddb/Config.in\"\n\tsource \"package/libmbus/Config.in\"\n\tsource \"package/libmemcached/Config.in\"\n\tsource \"package/libmicrohttpd/Config.in\"\n\tsource \"package/libminiupnpc/Config.in\"\n\tsource \"package/libmnl/Config.in\"\n\tsource \"package/libmodbus/Config.in\"\n\tsource \"package/libmodsecurity/Config.in\"\n\tsource \"package/libnatpmp/Config.in\"\n\tsource \"package/libndp/Config.in\"\n\tsource \"package/libnet/Config.in\"\n\tsource \"package/libnetconf2/Config.in\"\n\tsource \"package/libnetfilter_acct/Config.in\"\n\tsource \"package/libnetfilter_conntrack/Config.in\"\n\tsource \"package/libnetfilter_cthelper/Config.in\"\n\tsource \"package/libnetfilter_cttimeout/Config.in\"\n\tsource \"package/libnetfilter_log/Config.in\"\n\tsource \"package/libnetfilter_queue/Config.in\"\n\tsource \"package/libnfnetlink/Config.in\"\n\tsource \"package/libnftnl/Config.in\"\n\tsource \"package/libnice/Config.in\"\n\tsource \"package/libnids/Config.in\"\n\tsource \"package/libnl/Config.in\"\n\tsource \"package/libnpupnp/Config.in\"\n\tsource \"package/liboauth/Config.in\"\n\tsource \"package/liboping/Config.in\"\n\tsource \"package/libosip2/Config.in\"\n\tsource \"package/libpagekite/Config.in\"\n\tsource \"package/libpcap/Config.in\"\n\tsource \"package/libpjsip/Config.in\"\n\tsource \"package/libpsl/Config.in\"\n\tsource \"package/librelp/Config.in\"\n\tsource \"package/librsync/Config.in\"\n\tsource \"package/libshairplay/Config.in\"\n\tsource \"package/libshout/Config.in\"\n\tsource \"package/libsocketcan/Config.in\"\n\tsource \"package/libsoup/Config.in\"\n\tsource \"package/libsrtp/Config.in\"\n\tsource \"package/libstrophe/Config.in\"\n\tsource \"package/libteam/Config.in\"\n\tsource \"package/libtelnet/Config.in\"\n\tsource \"package/libtirpc/Config.in\"\n\tsource \"package/libtorrent/Config.in\"\n\tsource \"package/libtorrent-rasterbar/Config.in\"\n\tsource \"package/libuev/Config.in\"\n\tsource \"package/libuhttpd/Config.in\"\n\tsource \"package/libupnp/Config.in\"\n\tsource \"package/libupnpp/Config.in\"\n\tsource \"package/liburiparser/Config.in\"\n\tsource \"package/libuwsc/Config.in\"\n\tsource \"package/libvncserver/Config.in\"\n\tsource \"package/libwebsock/Config.in\"\n\tsource \"package/libwebsockets/Config.in\"\n\tsource \"package/libyang/Config.in\"\n\tsource \"package/lksctp-tools/Config.in\"\n\tsource \"package/mbuffer/Config.in\"\n\tsource \"package/mongoose/Config.in\"\n\tsource \"package/nanomsg/Config.in\"\n\tsource \"package/neon/Config.in\"\n\tsource \"package/netopeer2/Config.in\"\n\tsource \"package/nghttp2/Config.in\"\n\tsource \"package/norm/Config.in\"\n\tsource \"package/nss-mdns/Config.in\"\n\tsource \"package/nss-myhostname/Config.in\"\n\tsource \"package/nss-pam-ldapd/Config.in\"\n\tsource \"package/omniorb/Config.in\"\n\tsource \"package/open62541/Config.in\"\n\tsource \"package/openldap/Config.in\"\n\tsource \"package/openmpi/Config.in\"\n\tsource \"package/openpgm/Config.in\"\n\tsource \"package/openzwave/Config.in\"\n\tsource \"package/ortp/Config.in\"\n\tsource \"package/paho-mqtt-c/Config.in\"\n\tsource \"package/paho-mqtt-cpp/Config.in\"\n\tsource \"package/pistache/Config.in\"\n\tsource \"package/qdecoder/Config.in\"\n\tsource \"package/qpid-proton/Config.in\"\n\tsource \"package/rabbitmq-c/Config.in\"\n\tsource \"package/resiprocate/Config.in\"\n\tsource \"package/restclient-cpp/Config.in\"\n\tsource \"package/rtmpdump/Config.in\"\n\tsource \"package/siproxd/Config.in\"\n\tsource \"package/slirp/Config.in\"\n\tsource \"package/snmppp/Config.in\"\n\tsource \"package/sofia-sip/Config.in\"\n\tsource \"package/sysrepo/Config.in\"\n\tsource \"package/thrift/Config.in\"\n\tsource \"package/usbredir/Config.in\"\n\tsource \"package/wampcc/Config.in\"\n\tsource \"package/websocketpp/Config.in\"\n\tsource \"package/zeromq/Config.in\"\n\tsource \"package/zmqpp/Config.in\"\n\tsource \"package/zyre/Config.in\"\nendmenu\n\nmenu \"Other\"\n\tsource \"package/apr/Config.in\"\n\tsource \"package/apr-util/Config.in\"\n\tsource \"package/argp-standalone/Config.in\"\n\tsource \"package/armadillo/Config.in\"\n\tsource \"package/atf/Config.in\"\n\tsource \"package/avro-c/Config.in\"\n\tsource \"package/bctoolbox/Config.in\"\n\tsource \"package/bdwgc/Config.in\"\n\tsource \"package/belr/Config.in\"\n\tsource \"package/boost/Config.in\"\n\tsource \"package/c-capnproto/Config.in\"\n\tsource \"package/capnproto/Config.in\"\n\tsource \"package/cctz/Config.in\"\n\tsource \"package/cereal/Config.in\"\n\tsource \"package/clang/Config.in\"\n\tsource \"package/cmocka/Config.in\"\n\tsource \"package/cppcms/Config.in\"\n\tsource \"package/cracklib/Config.in\"\n\tsource \"package/dawgdic/Config.in\"\n\tsource \"package/ding-libs/Config.in\"\n\tsource \"package/eigen/Config.in\"\n\tsource \"package/elfutils/Config.in\"\n\tsource \"package/ell/Config.in\"\n\tsource \"package/fftw/Config.in\"\n\tsource \"package/flann/Config.in\"\n\tsource \"package/flatbuffers/Config.in\"\n\tsource \"package/flatcc/Config.in\"\n\tsource \"package/gconf/Config.in\"\n\tsource \"package/gflags/Config.in\"\n\tsource \"package/gli/Config.in\"\n\tsource \"package/glibmm/Config.in\"\n\tsource \"package/glm/Config.in\"\n\tsource \"package/gmp/Config.in\"\n\tsource \"package/gobject-introspection/Config.in\"\n\tsource \"package/gsl/Config.in\"\n\tsource \"package/gtest/Config.in\"\n\tsource \"package/gumbo-parser/Config.in\"\n\tsource \"package/jemalloc/Config.in\"\n\tsource \"package/lapack/Config.in\"\n\tsource \"package/libabseil-cpp/Config.in\"\n\tsource \"package/libargtable2/Config.in\"\n\tsource \"package/libatomic_ops/Config.in\"\n\tsource \"package/libavl/Config.in\"\n\tsource \"package/libb64/Config.in\"\n\tsource \"package/libbacktrace/Config.in\"\n\tsource \"package/libbsd/Config.in\"\n\tsource \"package/libbytesize/Config.in\"\n\tsource \"package/libcap/Config.in\"\n\tsource \"package/libcap-ng/Config.in\"\n\tsource \"package/libcgroup/Config.in\"\n\tsource \"package/libclc/Config.in\"\n\tsource \"package/libcofi/Config.in\"\n\tsource \"package/libcorrect/Config.in\"\n\tsource \"package/libcrossguid/Config.in\"\n\tsource \"package/libcsv/Config.in\"\n\tsource \"package/libdaemon/Config.in\"\n\tsource \"package/libeastl/Config.in\"\n\tsource \"package/libee/Config.in\"\n\tsource \"package/libev/Config.in\"\n\tsource \"package/libevdev/Config.in\"\n\tsource \"package/libevent/Config.in\"\n\tsource \"package/libffi/Config.in\"\n\tsource \"package/libgee/Config.in\"\n\tsource \"package/libgeos/Config.in\"\n\tsource \"package/libglib2/Config.in\"\n\tsource \"package/libglob/Config.in\"\n\tsource \"package/libical/Config.in\"\n\tsource \"package/libite/Config.in\"\n\tsource \"package/liblinear/Config.in\"\n\tsource \"package/libloki/Config.in\"\n\tsource \"package/libnpth/Config.in\"\n\tsource \"package/libnspr/Config.in\"\n\tsource \"package/libosmium/Config.in\"\n\tsource \"package/libpfm4/Config.in\"\n\tsource \"package/libplatform/Config.in\"\n\tsource \"package/libplist/Config.in\"\n\tsource \"package/libpthread-stubs/Config.in\"\n\tsource \"package/libpthsem/Config.in\"\n\tsource \"package/libpwquality/Config.in\"\n\tsource \"package/libqb/Config.in\"\n\tsource \"package/libseccomp/Config.in\"\n\tsource \"package/libsigc/Config.in\"\n\tsource \"package/libsigsegv/Config.in\"\n\tsource \"package/libspatialindex/Config.in\"\n\tsource \"package/libtalloc/Config.in\"\n\tsource \"package/libtasn1/Config.in\"\n\tsource \"package/libtommath/Config.in\"\n\tsource \"package/libtpl/Config.in\"\n\tsource \"package/libubox/Config.in\"\n\tsource \"package/libuci/Config.in\"\n\tsource \"package/libunwind/Config.in\"\n\tsource \"package/liburcu/Config.in\"\n\tsource \"package/libuv/Config.in\"\n\tsource \"package/lightning/Config.in\"\n\tsource \"package/linux-pam/Config.in\"\nif BR2_PACKAGE_LINUX_PAM\ncomment \"linux-pam plugins\"\n\tsource \"package/libpam-nfc/Config.in\"\n\tsource \"package/libpam-radius-auth/Config.in\"\n\tsource \"package/libpam-tacplus/Config.in\"\nendif\n\tsource \"package/liquid-dsp/Config.in\"\n\tsource \"package/llvm/Config.in\"\n\tsource \"package/lttng-libust/Config.in\"\n\tsource \"package/matio/Config.in\"\n\tsource \"package/mpc/Config.in\"\n\tsource \"package/mpdecimal/Config.in\"\n\tsource \"package/mpfr/Config.in\"\n\tsource \"package/mpir/Config.in\"\n\tsource \"package/msgpack/Config.in\"\n\tsource \"package/musl-compat-headers/Config.in\"\n\tsource \"package/musl-fts/Config.in\"\n\tsource \"package/openblas/Config.in\"\n\tsource \"package/orc/Config.in\"\n\tsource \"package/p11-kit/Config.in\"\n\tsource \"package/poco/Config.in\"\n\tsource \"package/protobuf/Config.in\"\n\tsource \"package/protobuf-c/Config.in\"\n\tsource \"package/protozero/Config.in\"\n\tsource \"package/qhull/Config.in\"\n\tsource \"package/qlibc/Config.in\"\n\tsource \"package/riemann-c-client/Config.in\"\n\tsource \"package/shapelib/Config.in\"\n\tsource \"package/skalibs/Config.in\"\n\tsource \"package/sphinxbase/Config.in\"\n\tsource \"package/startup-notification/Config.in\"\n\tsource \"package/tinycbor/Config.in\"\n\tsource \"package/tz/Config.in\"\n\tsource \"package/tzdata/Config.in\"\n\tsource \"package/uvw/Config.in\"\n\tsource \"package/xapian/Config.in\"\nendmenu\n\nmenu \"Security\"\n\tsource \"package/libapparmor/Config.in\"\n\tsource \"package/libselinux/Config.in\"\n\tsource \"package/libsemanage/Config.in\"\n\tsource \"package/libsepol/Config.in\"\n\tsource \"package/safeclib/Config.in\"\n\tsource \"package/softhsm2/Config.in\"\nendmenu\n\nmenu \"Text and terminal handling\"\n\tsource \"package/augeas/Config.in\"\n\tsource \"package/enchant/Config.in\"\n\tsource \"package/fmt/Config.in\"\n\tsource \"package/fstrcmp/Config.in\"\n\tsource \"package/icu/Config.in\"\n\tsource \"package/inih/Config.in\"\n\tsource \"package/libcli/Config.in\"\n\tsource \"package/libedit/Config.in\"\n\tsource \"package/libenca/Config.in\"\n\tsource \"package/libestr/Config.in\"\n\tsource \"package/libfribidi/Config.in\"\n\tsource \"package/libiconv/Config.in\"\n\tsource \"package/libunistring/Config.in\"\n\tsource \"package/linenoise/Config.in\"\n\tsource \"package/ncurses/Config.in\"\n\tsource \"package/newt/Config.in\"\n\tsource \"package/oniguruma/Config.in\"\n\tsource \"package/pcre/Config.in\"\n\tsource \"package/pcre2/Config.in\"\n\tsource \"package/popt/Config.in\"\n\tsource \"package/re2/Config.in\"\n\tsource \"package/readline/Config.in\"\n\tsource \"package/slang/Config.in\"\n\tsource \"package/tclap/Config.in\"\n\tsource \"package/utf8proc/Config.in\"\nendmenu\n\nendmenu\n\nmenu \"Mail\"\n\tsource \"package/dovecot/Config.in\"\n\tsource \"package/exim/Config.in\"\n\tsource \"package/fetchmail/Config.in\"\n\tsource \"package/heirloom-mailx/Config.in\"\n\tsource \"package/libesmtp/Config.in\"\n\tsource \"package/msmtp/Config.in\"\n\tsource \"package/mutt/Config.in\"\n\tsource \"package/sylpheed/Config.in\"\nendmenu\n\nmenu \"Miscellaneous\"\n\tsource \"package/aespipe/Config.in\"\n\tsource \"package/bc/Config.in\"\n\tsource \"package/bitcoin/Config.in\"\n\tsource \"package/clamav/Config.in\"\n\tsource \"package/collectd/Config.in\"\n\tsource \"package/collectl/Config.in\"\n\tsource \"package/domoticz/Config.in\"\n\tsource \"package/empty/Config.in\"\n\tsource \"package/gnuradio/Config.in\"\n\tsource \"package/googlefontdirectory/Config.in\"\n\tsource \"package/gqrx/Config.in\"\n\tsource \"package/gr-osmosdr/Config.in\"\n\tsource \"package/gsettings-desktop-schemas/Config.in\"\n\tsource \"package/haveged/Config.in\"\n\tsource \"package/linux-syscall-support/Config.in\"\n\tsource \"package/mobile-broadband-provider-info/Config.in\"\n\tsource \"package/netdata/Config.in\"\n\tsource \"package/proj/Config.in\"\n\tsource \"package/qemu/Config.in\"\n\tsource \"package/qpdf/Config.in\"\n\tsource \"package/rtl_433/Config.in\"\n\tsource \"package/semver-sort/Config.in\"\n\tsource \"package/shared-mime-info/Config.in\"\n\tsource \"package/sunwait/Config.in\"\n\tsource \"package/taskd/Config.in\"\n\tsource \"package/wine/Config.in\"\n\tsource \"package/xmrig/Config.in\"\n\tsource \"package/xutil_util-macros/Config.in\"\nendmenu\n\nmenu \"Networking applications\"\n\tsource \"package/aircrack-ng/Config.in\"\n\tsource \"package/aoetools/Config.in\"\n\tsource \"package/apache/Config.in\"\n\tsource \"package/argus/Config.in\"\n\tsource \"package/arp-scan/Config.in\"\n\tsource \"package/arptables/Config.in\"\n\tsource \"package/asterisk/Config.in\"\n\tsource \"package/atftp/Config.in\"\n\tsource \"package/autossh/Config.in\"\n\tsource \"package/avahi/Config.in\"\n\tsource \"package/axel/Config.in\"\n\tsource \"package/babeld/Config.in\"\n\tsource \"package/bandwidthd/Config.in\"\n\tsource \"package/batctl/Config.in\"\n\tsource \"package/bcusdk/Config.in\"\n\tsource \"package/bind/Config.in\"\n\tsource \"package/bird/Config.in\"\n\tsource \"package/bluez-tools/Config.in\"\n\tsource \"package/bluez5_utils/Config.in\"\n\tsource \"package/bmon/Config.in\"\n\tsource \"package/boinc/Config.in\"\n\tsource \"package/brcm-patchram-plus/Config.in\"\n\tsource \"package/bridge-utils/Config.in\"\n\tsource \"package/bwm-ng/Config.in\"\n\tsource \"package/c-icap/Config.in\"\n\tsource \"package/c-icap-modules/Config.in\"\n\tsource \"package/can-utils/Config.in\"\n\tsource \"package/cannelloni/Config.in\"\n\tsource \"package/casync/Config.in\"\n\tsource \"package/chrony/Config.in\"\n\tsource \"package/civetweb/Config.in\"\n\tsource \"package/connman/Config.in\"\n\tsource \"package/connman-gtk/Config.in\"\n\tsource \"package/conntrack-tools/Config.in\"\n\tsource \"package/corkscrew/Config.in\"\n\tsource \"package/crda/Config.in\"\n\tsource \"package/ctorrent/Config.in\"\n\tsource \"package/cups/Config.in\"\n\tsource \"package/cups-filters/Config.in\"\n\tsource \"package/dante/Config.in\"\n\tsource \"package/darkhttpd/Config.in\"\n\tsource \"package/dehydrated/Config.in\"\n\tsource \"package/dhcp/Config.in\"\n\tsource \"package/dhcpcd/Config.in\"\n\tsource \"package/dhcpdump/Config.in\"\n\tsource \"package/dnsmasq/Config.in\"\n\tsource \"package/drbd-utils/Config.in\"\n\tsource \"package/dropbear/Config.in\"\n\tsource \"package/easyframes/Config.in\"\n\tsource \"package/ebtables/Config.in\"\n\tsource \"package/ejabberd/Config.in\"\n\tsource \"package/ethtool/Config.in\"\n\tsource \"package/faifa/Config.in\"\n\tsource \"package/fail2ban/Config.in\"\n\tsource \"package/fastd/Config.in\"\n\tsource \"package/fcgiwrap/Config.in\"\n\tsource \"package/flannel/Config.in\"\n\tsource \"package/fmc/Config.in\"\n\tsource \"package/fping/Config.in\"\n\tsource \"package/freeswitch/Config.in\"\n\tsource \"package/freeswitch-mod-bcg729/Config.in\"\n\tsource \"package/frr/Config.in\"\n\tsource \"package/gerbera/Config.in\"\n\tsource \"package/gesftpserver/Config.in\"\n\tsource \"package/gloox/Config.in\"\n\tsource \"package/glorytun/Config.in\"\n\tsource \"package/gupnp-tools/Config.in\"\n\tsource \"package/gutenprint/Config.in\"\n\tsource \"package/hans/Config.in\"\n\tsource \"package/haproxy/Config.in\"\n\tsource \"package/hiawatha/Config.in\"\n\tsource \"package/hostapd/Config.in\"\n\tsource \"package/hplip/Config.in\"\n\tsource \"package/htpdate/Config.in\"\n\tsource \"package/httping/Config.in\"\n\tsource \"package/i2pd/Config.in\"\n\tsource \"package/ibrdtn-tools/Config.in\"\n\tsource \"package/ibrdtnd/Config.in\"\n\tsource \"package/ifenslave/Config.in\"\n\tsource \"package/ifmetric/Config.in\"\n\tsource \"package/ifplugd/Config.in\"\n\tsource \"package/iftop/Config.in\"\n\tsource \"package/ifupdown/Config.in\"\n\tsource \"package/ifupdown-scripts/Config.in\"\n\tsource \"package/igd2-for-linux/Config.in\"\n\tsource \"package/igh-ethercat/Config.in\"\n\tsource \"package/igmpproxy/Config.in\"\n\tsource \"package/inadyn/Config.in\"\n\tsource \"package/iodine/Config.in\"\n\tsource \"package/ipcalc/Config.in\"\n\tsource \"package/iperf/Config.in\"\n\tsource \"package/iperf3/Config.in\"\n\tsource \"package/iproute2/Config.in\"\n\tsource \"package/ipset/Config.in\"\n\tsource \"package/iptables/Config.in\"\n\tsource \"package/iptraf-ng/Config.in\"\n\tsource \"package/iputils/Config.in\"\n\tsource \"package/irssi/Config.in\"\n\tsource \"package/iw/Config.in\"\n\tsource \"package/iwd/Config.in\"\n\tsource \"package/janus-gateway/Config.in\"\n\tsource \"package/keepalived/Config.in\"\n\tsource \"package/kismet/Config.in\"\n\tsource \"package/knock/Config.in\"\n\tsource \"package/leafnode2/Config.in\"\n\tsource \"package/lft/Config.in\"\n\tsource \"package/lftp/Config.in\"\n\tsource \"package/lighttpd/Config.in\"\n\tsource \"package/linknx/Config.in\"\n\tsource \"package/links/Config.in\"\n\tsource \"package/linphone/Config.in\"\n\tsource \"package/linux-zigbee/Config.in\"\n\tsource \"package/linuxptp/Config.in\"\n\tsource \"package/lldpd/Config.in\"\n\tsource \"package/lrzsz/Config.in\"\n\tsource \"package/lynx/Config.in\"\n\tsource \"package/macchanger/Config.in\"\n\tsource \"package/memcached/Config.in\"\n\tsource \"package/mii-diag/Config.in\"\n\tsource \"package/mini-snmpd/Config.in\"\n\tsource \"package/minidlna/Config.in\"\n\tsource \"package/minissdpd/Config.in\"\n\tsource \"package/mjpg-streamer/Config.in\"\n\tsource \"package/modem-manager/Config.in\"\n\tsource \"package/mongrel2/Config.in\"\n\tsource \"package/mosh/Config.in\"\n\tsource \"package/mosquitto/Config.in\"\n\tsource \"package/mrouted/Config.in\"\n\tsource \"package/mrp/Config.in\"\n\tsource \"package/mstpd/Config.in\"\n\tsource \"package/mtr/Config.in\"\n\tsource \"package/nbd/Config.in\"\n\tsource \"package/ncftp/Config.in\"\n\tsource \"package/ndisc6/Config.in\"\n\tsource \"package/net-tools/Config.in\"\n\tsource \"package/netatalk/Config.in\"\n\tsource \"package/netcalc/Config.in\"\n\tsource \"package/netcat/Config.in\"\n\tsource \"package/netcat-openbsd/Config.in\"\n\tsource \"package/netplug/Config.in\"\n\tsource \"package/netsnmp/Config.in\"\n\tsource \"package/netstat-nat/Config.in\"\n\tsource \"package/network-manager/Config.in\"\n\tsource \"package/network-manager-openvpn/Config.in\"\n\tsource \"package/nfacct/Config.in\"\n\tsource \"package/nftables/Config.in\"\n\tsource \"package/nginx/Config.in\"\nif BR2_PACKAGE_NGINX\nmenu \"External nginx modules\"\n\tsource \"package/nginx-dav-ext/Config.in\"\n\tsource \"package/nginx-modsecurity/Config.in\"\n\tsource \"package/nginx-naxsi/Config.in\"\n\tsource \"package/nginx-upload/Config.in\"\nendmenu\nendif\n\tsource \"package/ngircd/Config.in\"\n\tsource \"package/ngrep/Config.in\"\n\tsource \"package/nload/Config.in\"\n\tsource \"package/nmap/Config.in\"\n\tsource \"package/noip/Config.in\"\n\tsource \"package/ntp/Config.in\"\n\tsource \"package/nuttcp/Config.in\"\n\tsource \"package/odhcp6c/Config.in\"\n\tsource \"package/odhcploc/Config.in\"\n\tsource \"package/olsr/Config.in\"\n\tsource \"package/open-lldp/Config.in\"\n\tsource \"package/open-plc-utils/Config.in\"\n\tsource \"package/openntpd/Config.in\"\n\tsource \"package/openobex/Config.in\"\n\tsource \"package/openresolv/Config.in\"\n\tsource \"package/openssh/Config.in\"\n\tsource \"package/openswan/Config.in\"\n\tsource \"package/openvpn/Config.in\"\n\tsource \"package/p910nd/Config.in\"\n\tsource \"package/parprouted/Config.in\"\n\tsource \"package/phidgetwebservice/Config.in\"\n\tsource \"package/phytool/Config.in\"\n\tsource \"package/pimd/Config.in\"\n\tsource \"package/pixiewps/Config.in\"\n\tsource \"package/pound/Config.in\"\n\tsource \"package/pppd/Config.in\"\n\tsource \"package/pptp-linux/Config.in\"\n\tsource \"package/privoxy/Config.in\"\n\tsource \"package/proftpd/Config.in\"\n\tsource \"package/prosody/Config.in\"\n\tsource \"package/proxychains-ng/Config.in\"\n\tsource \"package/ptpd/Config.in\"\n\tsource \"package/ptpd2/Config.in\"\n\tsource \"package/pure-ftpd/Config.in\"\n\tsource \"package/putty/Config.in\"\n\tsource \"package/quagga/Config.in\"\n\tsource \"package/rabbitmq-server/Config.in\"\n\tsource \"package/radvd/Config.in\"\n\tsource \"package/reaver/Config.in\"\n\tsource \"package/redir/Config.in\"\n\tsource \"package/rp-pppoe/Config.in\"\n\tsource \"package/rpcbind/Config.in\"\n\tsource \"package/rsh-redone/Config.in\"\n\tsource \"package/rsync/Config.in\"\n\tsource \"package/rtorrent/Config.in\"\n\tsource \"package/rtptools/Config.in\"\n\tsource \"package/rygel/Config.in\"\n\tsource \"package/s6-dns/Config.in\"\n\tsource \"package/s6-networking/Config.in\"\n\tsource \"package/samba4/Config.in\"\n\tsource \"package/sconeserver/Config.in\"\n\tsource \"package/ser2net/Config.in\"\n\tsource \"package/shadowsocks-libev/Config.in\"\n\tsource \"package/shairport-sync/Config.in\"\n\tsource \"package/shellinabox/Config.in\"\n\tsource \"package/smcroute/Config.in\"\n\tsource \"package/sngrep/Config.in\"\n\tsource \"package/snmpclitools/Config.in\"\n\tsource \"package/snort/Config.in\"\n\tsource \"package/snort3/Config.in\"\n\tsource \"package/socat/Config.in\"\n\tsource \"package/socketcand/Config.in\"\n\tsource \"package/softether/Config.in\"\n\tsource \"package/spawn-fcgi/Config.in\"\n\tsource \"package/spice/Config.in\"\n\tsource \"package/spice-protocol/Config.in\"\n\tsource \"package/squid/Config.in\"\n\tsource \"package/ssdp-responder/Config.in\"\n\tsource \"package/sshguard/Config.in\"\n\tsource \"package/sshpass/Config.in\"\n\tsource \"package/sslh/Config.in\"\n\tsource \"package/strongswan/Config.in\"\n\tsource \"package/stunnel/Config.in\"\n\tsource \"package/suricata/Config.in\"\n\tsource \"package/system-config-printer/Config.in\"\n\tsource \"package/tcpdump/Config.in\"\n\tsource \"package/tcping/Config.in\"\n\tsource \"package/tcpreplay/Config.in\"\n\tsource \"package/tftpd/Config.in\"\n\tsource \"package/thttpd/Config.in\"\n\tsource \"package/tinc/Config.in\"\n\tsource \"package/tinyproxy/Config.in\"\n\tsource \"package/tinyssh/Config.in\"\n\tsource \"package/tor/Config.in\"\n\tsource \"package/traceroute/Config.in\"\n\tsource \"package/transmission/Config.in\"\n\tsource \"package/tunctl/Config.in\"\n\tsource \"package/tvheadend/Config.in\"\n\tsource \"package/uacme/Config.in\"\n\tsource \"package/udpcast/Config.in\"\n\tsource \"package/uftp/Config.in\"\n\tsource \"package/uhttpd/Config.in\"\n\tsource \"package/ulogd/Config.in\"\n\tsource \"package/unbound/Config.in\"\n\tsource \"package/uqmi/Config.in\"\n\tsource \"package/uredir/Config.in\"\n\tsource \"package/ushare/Config.in\"\n\tsource \"package/ussp-push/Config.in\"\n\tsource \"package/vde2/Config.in\"\n\tsource \"package/vdr/Config.in\"\n\tsource \"package/vdr-plugin-vnsiserver/Config.in\"\n\tsource \"package/vnstat/Config.in\"\n\tsource \"package/vpnc/Config.in\"\n\tsource \"package/vsftpd/Config.in\"\n\tsource \"package/vtun/Config.in\"\n\tsource \"package/wavemon/Config.in\"\n\tsource \"package/wget/Config.in\"\n\tsource \"package/whois/Config.in\"\n\tsource \"package/wireguard-linux-compat/Config.in\"\n\tsource \"package/wireguard-tools/Config.in\"\n\tsource \"package/wireless-regdb/Config.in\"\n\tsource \"package/wireless_tools/Config.in\"\n\tsource \"package/wireshark/Config.in\"\n\tsource \"package/wpa_supplicant/Config.in\"\n\tsource \"package/wpan-tools/Config.in\"\n\tsource \"package/xinetd/Config.in\"\n\tsource \"package/xl2tp/Config.in\"\n\tsource \"package/xtables-addons/Config.in\"\n\tsource \"package/znc/Config.in\"\n\nendmenu\n\nmenu \"Package managers\"\ncomment \"-------------------------------------------------------\"\ncomment \"Please note:                                           \"\ncomment \"- Buildroot does *not* generate binary packages,       \"\ncomment \"- Buildroot does *not* install any package database.   \"\ncomment \"*                                                      \"\ncomment \"It is up to you to provide those by yourself if you    \"\ncomment \"want to use any of those package managers.             \"\ncomment \"*                                                      \"\ncomment \"See the manual:                                        \"\ncomment \"http://buildroot.org/manual.html#faq-no-binary-packages\"\ncomment \"-------------------------------------------------------\"\n\tsource \"package/opkg/Config.in\"\n\tsource \"package/opkg-utils/Config.in\"\n\tsource \"package/rpm/Config.in\"\nendmenu\n\nmenu \"Real-Time\"\n\tsource \"package/rtai/Config.in\"\n\tsource \"package/xenomai/Config.in\"\nendmenu\n\nmenu \"Security\"\n\tsource \"package/apparmor/Config.in\"\n\tsource \"package/checkpolicy/Config.in\"\n\tsource \"package/ima-evm-utils/Config.in\"\n\tsource \"package/optee-benchmark/Config.in\"\n\tsource \"package/optee-client/Config.in\"\n\tsource \"package/optee-examples/Config.in\"\n\tsource \"package/optee-test/Config.in\"\n\tsource \"package/paxtest/Config.in\"\n\tsource \"package/policycoreutils/Config.in\"\n\tsource \"package/refpolicy/Config.in\"\n\tsource \"package/restorecond/Config.in\"\n\tsource \"package/selinux-python/Config.in\"\n\tsource \"package/semodule-utils/Config.in\"\n\tsource \"package/setools/Config.in\"\n\tsource \"package/urandom-scripts/Config.in\"\nendmenu\n\nmenu \"Shell and utilities\"\ncomment \"Shells\"\n\tsource \"package/bash/Config.in\"\n\tsource \"package/dash/Config.in\"\n\tsource \"package/mksh/Config.in\"\n\tsource \"package/zsh/Config.in\"\ncomment \"Utilities\"\n\tsource \"package/apg/Config.in\"\n\tsource \"package/at/Config.in\"\n\tsource \"package/bash-completion/Config.in\"\n\tsource \"package/ccrypt/Config.in\"\n\tsource \"package/crudini/Config.in\"\n\tsource \"package/dialog/Config.in\"\n\tsource \"package/dtach/Config.in\"\n\tsource \"package/easy-rsa/Config.in\"\n\tsource \"package/file/Config.in\"\n\tsource \"package/gnupg/Config.in\"\n\tsource \"package/gnupg2/Config.in\"\n\tsource \"package/inotify-tools/Config.in\"\n\tsource \"package/lockfile-progs/Config.in\"\n\tsource \"package/logrotate/Config.in\"\n\tsource \"package/logsurfer/Config.in\"\n\tsource \"package/neofetch/Config.in\"\n\tsource \"package/pdmenu/Config.in\"\n\tsource \"package/pinentry/Config.in\"\n\tsource \"package/qprint/Config.in\"\n\tsource \"package/ranger/Config.in\"\n\tsource \"package/rtty/Config.in\"\n\tsource \"package/screen/Config.in\"\n\tsource \"package/screenfetch/Config.in\"\n\tsource \"package/sudo/Config.in\"\n\tsource \"package/terminology/Config.in\"\n\tsource \"package/time/Config.in\"\n\tsource \"package/tini/Config.in\"\n\tsource \"package/tmux/Config.in\"\n\tsource \"package/ttyd/Config.in\"\n\tsource \"package/which/Config.in\"\n\tsource \"package/xmlstarlet/Config.in\"\n\tsource \"package/xxhash/Config.in\"\n\tsource \"package/ytree/Config.in\"\nendmenu\n\nmenu \"System tools\"\n\tsource \"package/acl/Config.in\"\n\tsource \"package/android-tools/Config.in\"\n\tsource \"package/atop/Config.in\"\n\tsource \"package/attr/Config.in\"\n\tsource \"package/audit/Config.in\"\n\tsource \"package/balena-engine/Config.in\"\n\tsource \"package/bubblewrap/Config.in\"\n\tsource \"package/cgroupfs-mount/Config.in\"\n\tsource \"package/circus/Config.in\"\n\tsource \"package/containerd/Config.in\"\n\tsource \"package/coreutils/Config.in\"\n\tsource \"package/cpuload/Config.in\"\n\tsource \"package/daemon/Config.in\"\n\tsource \"package/dc3dd/Config.in\"\n\tsource \"package/dcron/Config.in\"\n\tsource \"package/ddrescue/Config.in\"\n\tsource \"package/debianutils/Config.in\"\n\tsource \"package/docker-cli/Config.in\"\n\tsource \"package/docker-compose/Config.in\"\n\tsource \"package/docker-engine/Config.in\"\n\tsource \"package/docker-proxy/Config.in\"\n\tsource \"package/earlyoom/Config.in\"\n\tsource \"package/efibootmgr/Config.in\"\n\tsource \"package/efivar/Config.in\"\n\tsource \"package/emlog/Config.in\"\n\tsource \"package/ftop/Config.in\"\n\tsource \"package/getent/Config.in\"\n\tsource \"package/gkrellm/Config.in\"\n\tsource \"package/htop/Config.in\"\n\tsource \"package/ibm-sw-tpm2/Config.in\"\n\tsource \"package/initscripts/Config.in\"\n\tsource \"package/iotop/Config.in\"\n\tsource \"package/iprutils/Config.in\"\n\tsource \"package/irqbalance/Config.in\"\n\tsource \"package/jailhouse/Config.in\"\n\tsource \"package/keyutils/Config.in\"\n\tsource \"package/kmod/Config.in\"\n\tsource \"package/kvmtool/Config.in\"\n\tsource \"package/libostree/Config.in\"\n\tsource \"package/libvirt/Config.in\"\n\tsource \"package/lxc/Config.in\"\n\tsource \"package/makedumpfile/Config.in\"\n\tsource \"package/mender/Config.in\"\n\tsource \"package/mender-grubenv/Config.in\"\n\tsource \"package/mfoc/Config.in\"\n\tsource \"package/monit/Config.in\"\n\tsource \"package/multipath-tools/Config.in\"\n\tsource \"package/ncdu/Config.in\"\n\tsource \"package/netifrc/Config.in\"\n\tsource \"package/numactl/Config.in\"\n\tsource \"package/nut/Config.in\"\n\tsource \"package/openrc/Config.in\"\n\tsource \"package/openvmtools/Config.in\"\n\tsource \"package/pamtester/Config.in\"\n\tsource \"package/polkit/Config.in\"\n\tsource \"package/powerpc-utils/Config.in\"\n\tsource \"package/procps-ng/Config.in\"\n\tsource \"package/procrank_linux/Config.in\"\n\tsource \"package/psmisc/Config.in\"\n\tsource \"package/pwgen/Config.in\"\n\tsource \"package/quota/Config.in\"\n\tsource \"package/quotatool/Config.in\"\n\tsource \"package/rauc/Config.in\"\n\tsource \"package/rsyslog/Config.in\"\n\tsource \"package/runc/Config.in\"\n\tsource \"package/s390-tools/Config.in\"\n\tsource \"package/s6/Config.in\"\n\tsource \"package/s6-linux-init/Config.in\"\n\tsource \"package/s6-linux-utils/Config.in\"\n\tsource \"package/s6-portable-utils/Config.in\"\n\tsource \"package/s6-rc/Config.in\"\n\tsource \"package/scrub/Config.in\"\n\tsource \"package/scrypt/Config.in\"\n\tsource \"package/sdbusplus/Config.in\"\n\tsource \"package/seatd/Config.in\"\n\tsource \"package/smack/Config.in\"\n\tsource \"package/start-stop-daemon/Config.in\"\n\tsource \"package/supervisor/Config.in\"\n\tsource \"package/swupdate/Config.in\"\n\tsource \"package/sysklogd/Config.in\"\n\tsource \"package/syslog-ng/Config.in\"\n\tsource \"package/systemd/Config.in\"\n\tsource \"package/systemd-bootchart/Config.in\"\n\tsource \"package/sysvinit/Config.in\"\n\tsource \"package/tar/Config.in\"\n\tsource \"package/thermald/Config.in\"\n\tsource \"package/tpm-tools/Config.in\"\n\tsource \"package/tpm2-abrmd/Config.in\"\n\tsource \"package/tpm2-tools/Config.in\"\n\tsource \"package/tpm2-totp/Config.in\"\n\tsource \"package/unscd/Config.in\"\n\tsource \"package/util-linux/Config.in\"\n\tsource \"package/watchdog/Config.in\"\n\tsource \"package/watchdogd/Config.in\"\n\tsource \"package/xdg-dbus-proxy/Config.in\"\n\tsource \"package/xen/Config.in\"\n\tsource \"package/xvisor/Config.in\"\nendmenu\n\nmenu \"Text editors and viewers\"\n\tsource \"package/ed/Config.in\"\n\tsource \"package/joe/Config.in\"\n\tsource \"package/less/Config.in\"\n\tsource \"package/mc/Config.in\"\n\tsource \"package/mg/Config.in\"\n\tsource \"package/most/Config.in\"\n\tsource \"package/nano/Config.in\"\n\tsource \"package/uemacs/Config.in\"\n\tsource \"package/vim/Config.in\"\nendmenu\n\nendmenu\n"
  },
  {
    "path": "package/Config.in.host",
    "content": "menu \"Host utilities\"\n\n\tsource \"package/abootimg/Config.in.host\"\n\tsource \"package/aespipe/Config.in.host\"\n\tsource \"package/android-tools/Config.in.host\"\n\tsource \"package/asn1c/Config.in.host\"\n\tsource \"package/babeltrace2/Config.in.host\"\n\tsource \"package/bmap-tools/Config.in.host\"\n\tsource \"package/btrfs-progs/Config.in.host\"\n\tsource \"package/cbootimage/Config.in.host\"\n\tsource \"package/checkpolicy/Config.in.host\"\n\tsource \"package/checksec/Config.in.host\"\n\tsource \"package/cmake/Config.in.host\"\n\tsource \"package/cramfs/Config.in.host\"\n\tsource \"package/cryptsetup/Config.in.host\"\n\tsource \"package/dbus-python/Config.in.host\"\n\tsource \"package/dfu-util/Config.in.host\"\n\tsource \"package/dos2unix/Config.in.host\"\n\tsource \"package/dosfstools/Config.in.host\"\n\tsource \"package/doxygen/Config.in.host\"\n\tsource \"package/dtc/Config.in.host\"\n\tsource \"package/e2fsprogs/Config.in.host\"\n\tsource \"package/e2tools/Config.in.host\"\n\tsource \"package/environment-setup/Config.in.host\"\n\tsource \"package/erofs-utils/Config.in.host\"\n\tsource \"package/eudev/Config.in.host\"\n\tsource \"package/exfatprogs/Config.in.host\"\n\tsource \"package/f2fs-tools/Config.in.host\"\n\tsource \"package/faketime/Config.in.host\"\n\tsource \"package/fatcat/Config.in.host\"\n\tsource \"package/firmware-utils/Config.in.host\"\n\tsource \"package/fwup/Config.in.host\"\n\tsource \"package/genext2fs/Config.in.host\"\n\tsource \"package/genimage/Config.in.host\"\n\tsource \"package/genpart/Config.in.host\"\n\tsource \"package/gnupg/Config.in.host\"\n\tsource \"package/go/Config.in.host\"\n\tsource \"package/go-bootstrap-stage1/Config.in.host\"\n\tsource \"package/go-bootstrap-stage2/Config.in.host\"\n\tsource \"package/google-breakpad/Config.in.host\"\n\tsource \"package/gptfdisk/Config.in.host\"\n\tsource \"package/imagemagick/Config.in.host\"\n\tsource \"package/imx-mkimage/Config.in.host\"\n\tsource \"package/imx-usb-loader/Config.in.host\"\n\tsource \"package/jh71xx-tools/Config.in.host\"\n\tsource \"package/jq/Config.in.host\"\n\tsource \"package/jsmin/Config.in.host\"\n\tsource \"package/kmod/Config.in.host\"\n\tsource \"package/libp11/Config.in.host\"\n\tsource \"package/lld/Config.in.host\"\n\tsource \"package/lpc3250loader/Config.in.host\"\n\tsource \"package/lttng-babeltrace/Config.in.host\"\n\tsource \"package/mender-artifact/Config.in.host\"\n\tsource \"package/meson-tools/Config.in.host\"\n\tsource \"package/mfgtools/Config.in.host\"\n\tsource \"package/mkpasswd/Config.in.host\"\n\tsource \"package/mtd/Config.in.host\"\n\tsource \"package/mtools/Config.in.host\"\n\tsource \"package/mxsldr/Config.in.host\"\n\tsource \"package/odb/Config.in.host\"\n\tsource \"package/omap-u-boot-utils/Config.in.host\"\n\tsource \"package/openocd/Config.in.host\"\n\tsource \"package/opkg-utils/Config.in.host\"\n\tsource \"package/parted/Config.in.host\"\n\tsource \"package/patchelf/Config.in.host\"\n\tsource \"package/pigz/Config.in.host\"\n\tsource \"package/pkgconf/Config.in.host\"\n\tsource \"package/pru-software-support/Config.in.host\"\n\tsource \"package/pwgen/Config.in.host\"\n\tsource \"package/python/Config.in.host\"\n\tsource \"package/python-cython/Config.in.host\"\n\tsource \"package/python-lxml/Config.in.host\"\n\tsource \"package/python-six/Config.in.host\"\n\tsource \"package/python-xlrd/Config.in.host\"\n\tsource \"package/python3/Config.in.host\"\n\tsource \"package/qemu/Config.in.host\"\n\tsource \"package/qoriq-rcw/Config.in.host\"\n\tsource \"package/raspberrypi-usbboot/Config.in.host\"\n\tsource \"package/rauc/Config.in.host\"\n\tsource \"package/rustc/Config.in.host\"\n\tsource \"package/s6-rc/Config.in.host\"\n\tsource \"package/sam-ba/Config.in.host\"\n\tsource \"package/sdbusplus/Config.in.host\"\n\tsource \"package/sloci-image/Config.in.host\"\n\tsource \"package/squashfs/Config.in.host\"\n\tsource \"package/sunxi-tools/Config.in.host\"\n\tsource \"package/swig/Config.in.host\"\n\tsource \"package/systemd/Config.in.host\"\n\tsource \"package/tegrarcm/Config.in.host\"\n\tsource \"package/ti-cgt-pru/Config.in.host\"\n\tsource \"package/uboot-tools/Config.in.host\"\n\tsource \"package/util-linux/Config.in.host\"\n\tsource \"package/utp_com/Config.in.host\"\n\tsource \"package/vboot-utils/Config.in.host\"\n\tsource \"package/xorriso/Config.in.host\"\n\tsource \"package/zip/Config.in.host\"\n\tsource \"package/zstd/Config.in.host\"\n\nendmenu\n"
  },
  {
    "path": "package/Makefile.in",
    "content": "ifndef MAKE\nMAKE := make\nendif\nifndef HOSTMAKE\nHOSTMAKE = $(MAKE)\nendif\nHOSTMAKE := $(shell which $(HOSTMAKE) || type -p $(HOSTMAKE) || echo make)\n\n# If BR2_JLEVEL is 0, scale the maximum concurrency with the number of\n# CPUs. An additional job is used in order to keep processors busy\n# while waiting on I/O.\n# If the number of processors is not available, assume one.\nifeq ($(BR2_JLEVEL),0)\nPARALLEL_JOBS := $(shell echo \\\n\t$$((1 + `getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1`)))\nelse\nPARALLEL_JOBS := $(BR2_JLEVEL)\nendif\n\nMAKE1 := $(HOSTMAKE) -j1\noverride MAKE = $(HOSTMAKE) \\\n\t$(if $(findstring j,$(filter-out --%,$(MAKEFLAGS))),,-j$(PARALLEL_JOBS))\n\nifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)\nTARGET_VENDOR = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_VENDOR))\nelse\nTARGET_VENDOR = buildroot\nendif\n\n# Sanity checks\nifeq ($(TARGET_VENDOR),)\n$(error BR2_TOOLCHAIN_BUILDROOT_VENDOR is not allowed to be empty)\nendif\nifeq ($(TARGET_VENDOR),unknown)\n$(error BR2_TOOLCHAIN_BUILDROOT_VENDOR cannot be 'unknown'. \\\n\tIt might be confused with the native toolchain)\nendif\n\n# Compute GNU_TARGET_NAME\nGNU_TARGET_NAME = $(ARCH)-$(TARGET_VENDOR)-$(TARGET_OS)-$(LIBC)$(ABI)\n\n# FLAT binary format needs uclinux, except RISC-V 64-bits which needs\n# the regular linux name.\nifeq ($(BR2_BINFMT_FLAT):$(BR2_RISCV_64),y:)\nTARGET_OS = uclinux\nelse\nTARGET_OS = linux\nendif\n\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\nLIBC = uclibc\nelse ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)\nLIBC = musl\nelse\nLIBC = gnu\nendif\n\n# The ABI suffix is a bit special on ARM, as it needs to be\n# -uclibcgnueabi for uClibc EABI, and -gnueabi for glibc EABI.\n# This means that the LIBC and ABI aren't strictly orthogonal,\n# which explains why we need the test on LIBC below.\nifeq ($(BR2_arm)$(BR2_armeb),y)\nifeq ($(LIBC),uclibc)\nABI = gnueabi\nelse\nABI = eabi\nendif\n\nifeq ($(BR2_ARM_EABIHF),y)\nABI := $(ABI)hf\nendif\nendif\n\n# For C-SKY abiv1 & abiv2\nifeq ($(BR2_csky),y)\nifeq ($(BR2_ck610),y)\nABI = abiv1\nelse\nABI = abiv2\nendif\nendif\n\n# For FSL PowerPC there's SPE\nifeq ($(BR2_powerpc_SPE),y)\nABI = spe\n# MPC8540s are e500v1 with single precision FP\nifeq ($(BR2_powerpc_8540),y)\nTARGET_ABI += -mabi=spe -mfloat-gprs=single -Wa,-me500\nendif\nifeq ($(BR2_powerpc_8548),y)\nTARGET_ABI += -mabi=spe -mfloat-gprs=double -Wa,-me500x2\nendif\nifeq ($(BR2_powerpc_e500mc),y)\nTARGET_ABI += -mabi=spe -mfloat-gprs=double -Wa,-me500mc\nendif\nendif\n\n# Use longcalls option for Xtensa globally.\n# The 'longcalls' option allows calls across a greater range of addresses,\n# and is required for some packages. While this option can degrade both\n# code size and performance, the linker can usually optimize away the\n# overhead when a call ends up within a certain range.\n#\n# Use auto-litpools for Xtensa globally.\n# Collecting literals into separate section can be advantageous if that\n# section is placed into DTCM at link time. This is applicable for code\n# running on bare metal, but makes no sense under linux, where userspace\n# is isolated from the physical memory details. OTOH placing literals into\n# separate section breaks build of huge source files, because l32r\n# instruction can only access literals in 256 KBytes range.\n#\nifeq ($(BR2_xtensa),y)\nTARGET_ABI += -mlongcalls -mauto-litpools\nendif\n\nSTAGING_SUBDIR = $(GNU_TARGET_NAME)/sysroot\nSTAGING_DIR    = $(HOST_DIR)/$(STAGING_SUBDIR)\n\nifeq ($(BR2_OPTIMIZE_0),y)\nTARGET_OPTIMIZATION = -O0\nendif\nifeq ($(BR2_OPTIMIZE_1),y)\nTARGET_OPTIMIZATION = -O1\nendif\nifeq ($(BR2_OPTIMIZE_2),y)\nTARGET_OPTIMIZATION = -O2\nendif\nifeq ($(BR2_OPTIMIZE_3),y)\nTARGET_OPTIMIZATION = -O3\nendif\nifeq ($(BR2_OPTIMIZE_G),y)\nTARGET_OPTIMIZATION = -Og\nendif\nifeq ($(BR2_OPTIMIZE_S),y)\nTARGET_OPTIMIZATION = -Os\nendif\nifeq ($(BR2_OPTIMIZE_FAST),y)\nTARGET_OPTIMIZATION = -Ofast\nendif\nifeq ($(BR2_ENABLE_DEBUG),)\nTARGET_DEBUGGING = -g0\nendif\nifeq ($(BR2_DEBUG_1),y)\nTARGET_DEBUGGING = -g1\nendif\nifeq ($(BR2_DEBUG_2),y)\nTARGET_DEBUGGING = -g2\nendif\nifeq ($(BR2_DEBUG_3),y)\nTARGET_DEBUGGING = -g3\nendif\n\nTARGET_LDFLAGS = $(call qstrip,$(BR2_TARGET_LDFLAGS))\n\n# By design, _FORTIFY_SOURCE requires gcc optimization to be enabled.\n# Therefore, we need to pass _FORTIFY_SOURCE and the optimization level\n# through the same mechanism, i.e currently through CFLAGS. Passing\n# _FORTIFY_SOURCE through the wrapper and the optimization level\n# through CFLAGS would not work, because CFLAGS are sometimes\n# ignored/overridden by packages, but the flags passed by the wrapper\n# are enforced: this would cause _FORTIFY_SOURCE to be used without any\n# optimization level, leading to a build / configure failure. So we keep\n# passing _FORTIFY_SOURCE and the optimization level both through CFLAGS.\nifeq ($(BR2_FORTIFY_SOURCE_1),y)\nTARGET_HARDENED += -D_FORTIFY_SOURCE=1\nelse ifeq ($(BR2_FORTIFY_SOURCE_2),y)\nTARGET_HARDENED += -D_FORTIFY_SOURCE=2\nendif\n\nTARGET_CPPFLAGS += -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64\nTARGET_CFLAGS = $(TARGET_CPPFLAGS) $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) $(TARGET_HARDENED)\nTARGET_CXXFLAGS = $(TARGET_CFLAGS)\nTARGET_FCFLAGS = $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING)\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79509\nifeq ($(BR2_m68k_cf),y)\nTARGET_CFLAGS += -fno-dwarf2-cfi-asm\nTARGET_CXXFLAGS += -fno-dwarf2-cfi-asm\nendif\n\nifeq ($(BR2_BINFMT_FLAT),y)\nifeq ($(BR2_RISCV_64),y)\nTARGET_CFLAGS += -fPIC\nendif\nifeq ($(BR2_BINFMT_FLAT_ONE),y)\nELF2FLT_FLAGS = $(if $($(PKG)_FLAT_STACKSIZE),\\\n\t-Wl$(comma)-elf2flt=\"-r -s$($(PKG)_FLAT_STACKSIZE)\",\\\n        -Wl$(comma)-elf2flt=-r)\nelse\nELF2FLT_FLAGS = $(if $($(PKG)_FLAT_STACKSIZE),\\\n\t-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\\\n\t-Wl$(comma)-elf2flt)\nendif\nTARGET_CFLAGS += $(ELF2FLT_FLAGS)\nTARGET_CXXFLAGS += $(ELF2FLT_FLAGS)\nTARGET_FCFLAGS += $(ELF2FLT_FLAGS)\nTARGET_LDFLAGS += $(ELF2FLT_FLAGS)\nendif\n\nifeq ($(BR2_BINFMT_FLAT_SHARED),y)\nTARGET_LDFLAGS += -mid-shared-library -mshared-library-id=0\nTARGET_CFLAGS += -mid-shared-library -mshared-library-id=0\nTARGET_FCFLAGS += -mid-shared-library -mshared-library-id=0\nTARGET_CXXFLAGS += -mid-shared-library -mshared-library-id=0\nendif\n\nifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)\nTARGET_CROSS = $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-\nelse\nTARGET_CROSS = $(HOST_DIR)/bin/$(TOOLCHAIN_EXTERNAL_PREFIX)-\nendif\n\n# Define TARGET_xx variables for all common binutils/gcc\nTARGET_AR       = $(TARGET_CROSS)ar\nTARGET_AS       = $(TARGET_CROSS)as\nTARGET_CC       = $(TARGET_CROSS)gcc\nTARGET_CPP      = $(TARGET_CROSS)cpp\nTARGET_CXX      = $(TARGET_CROSS)g++\nTARGET_FC       = $(TARGET_CROSS)gfortran\nTARGET_LD       = $(TARGET_CROSS)ld\nTARGET_NM       = $(TARGET_CROSS)nm\nTARGET_RANLIB   = $(TARGET_CROSS)ranlib\nTARGET_READELF  = $(TARGET_CROSS)readelf\nTARGET_OBJCOPY  = $(TARGET_CROSS)objcopy\nTARGET_OBJDUMP  = $(TARGET_CROSS)objdump\n\nifeq ($(BR2_STRIP_strip),y)\nSTRIP_STRIP_DEBUG := --strip-debug\nTARGET_STRIP = $(TARGET_CROSS)strip\nSTRIPCMD = $(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note\nelse\nTARGET_STRIP = /bin/true\nSTRIPCMD = $(TARGET_STRIP)\nendif\nINSTALL := $(shell which install || type -p install)\nUNZIP := $(shell which unzip || type -p unzip) -q\n\nAPPLY_PATCHES = PATH=$(HOST_DIR)/bin:$$PATH support/scripts/apply-patches.sh $(if $(QUIET),-s)\n\nHOST_CPPFLAGS  = -I$(HOST_DIR)/include\nHOST_CFLAGS   ?= -O2\nHOST_CFLAGS   += $(HOST_CPPFLAGS)\nHOST_CXXFLAGS += $(HOST_CFLAGS)\nHOST_LDFLAGS  += -L$(HOST_DIR)/lib -Wl,-rpath,$(HOST_DIR)/lib\n\n# host-intltool should be executed with the system perl, so we save\n# the path to the system perl, before a host-perl built by Buildroot\n# might get installed into $(HOST_DIR)/bin and therefore appears\n# in our PATH. This system perl will be used as INTLTOOL_PERL.\nexport PERL=$(shell which perl)\n\n# host-intltool needs libxml-parser-perl, which Buildroot installs in\n# $(HOST_DIR)/lib/perl, so we must make sure that the system perl\n# finds this perl module by exporting the proper value for PERL5LIB.\nexport PERL5LIB=$(HOST_DIR)/lib/perl\n\nTARGET_MAKE_ENV = PATH=$(BR_PATH)\n\nTARGET_CONFIGURE_OPTS = \\\n\t$(TARGET_MAKE_ENV) \\\n\tAR=\"$(TARGET_AR)\" \\\n\tAS=\"$(TARGET_AS)\" \\\n\tLD=\"$(TARGET_LD)\" \\\n\tNM=\"$(TARGET_NM)\" \\\n\tCC=\"$(TARGET_CC)\" \\\n\tGCC=\"$(TARGET_CC)\" \\\n\tCPP=\"$(TARGET_CPP)\" \\\n\tCXX=\"$(TARGET_CXX)\" \\\n\tFC=\"$(TARGET_FC)\" \\\n\tF77=\"$(TARGET_FC)\" \\\n\tRANLIB=\"$(TARGET_RANLIB)\" \\\n\tREADELF=\"$(TARGET_READELF)\" \\\n\tSTRIP=\"$(TARGET_STRIP)\" \\\n\tOBJCOPY=\"$(TARGET_OBJCOPY)\" \\\n\tOBJDUMP=\"$(TARGET_OBJDUMP)\" \\\n\tAR_FOR_BUILD=\"$(HOSTAR)\" \\\n\tAS_FOR_BUILD=\"$(HOSTAS)\" \\\n\tCC_FOR_BUILD=\"$(HOSTCC)\" \\\n\tGCC_FOR_BUILD=\"$(HOSTCC)\" \\\n\tCXX_FOR_BUILD=\"$(HOSTCXX)\" \\\n\tLD_FOR_BUILD=\"$(HOSTLD)\" \\\n\tCPPFLAGS_FOR_BUILD=\"$(HOST_CPPFLAGS)\" \\\n\tCFLAGS_FOR_BUILD=\"$(HOST_CFLAGS)\" \\\n\tCXXFLAGS_FOR_BUILD=\"$(HOST_CXXFLAGS)\" \\\n\tLDFLAGS_FOR_BUILD=\"$(HOST_LDFLAGS)\" \\\n\tFCFLAGS_FOR_BUILD=\"$(HOST_FCFLAGS)\" \\\n\tDEFAULT_ASSEMBLER=\"$(TARGET_AS)\" \\\n\tDEFAULT_LINKER=\"$(TARGET_LD)\" \\\n\tCPPFLAGS=\"$(TARGET_CPPFLAGS)\" \\\n\tCFLAGS=\"$(TARGET_CFLAGS)\" \\\n\tCXXFLAGS=\"$(TARGET_CXXFLAGS)\" \\\n\tLDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\tFCFLAGS=\"$(TARGET_FCFLAGS)\" \\\n\tFFLAGS=\"$(TARGET_FCFLAGS)\" \\\n\tPKG_CONFIG=\"$(PKG_CONFIG_HOST_BINARY)\" \\\n\tSTAGING_DIR=\"$(STAGING_DIR)\" \\\n\tINTLTOOL_PERL=$(PERL)\n\n\nHOST_MAKE_ENV = \\\n\tPATH=$(BR_PATH) \\\n\tPKG_CONFIG=\"$(PKG_CONFIG_HOST_BINARY)\" \\\n\tPKG_CONFIG_SYSROOT_DIR=\"/\" \\\n\tPKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \\\n\tPKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \\\n\tPKG_CONFIG_LIBDIR=\"$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig\"\n\nHOST_CONFIGURE_OPTS = \\\n\t$(HOST_MAKE_ENV) \\\n\tAR=\"$(HOSTAR)\" \\\n\tAS=\"$(HOSTAS)\" \\\n\tLD=\"$(HOSTLD)\" \\\n\tNM=\"$(HOSTNM)\" \\\n\tCC=\"$(HOSTCC)\" \\\n\tGCC=\"$(HOSTCC)\" \\\n\tCXX=\"$(HOSTCXX)\" \\\n\tCPP=\"$(HOSTCPP)\" \\\n\tOBJCOPY=\"$(HOSTOBJCOPY)\" \\\n\tRANLIB=\"$(HOSTRANLIB)\" \\\n\tCPPFLAGS=\"$(HOST_CPPFLAGS)\" \\\n\tCFLAGS=\"$(HOST_CFLAGS)\" \\\n\tCXXFLAGS=\"$(HOST_CXXFLAGS)\" \\\n\tLDFLAGS=\"$(HOST_LDFLAGS)\" \\\n\tINTLTOOL_PERL=$(PERL)\n\n# This is extra environment we can not export ourselves (eg. because some\n# packages use that variable internally, eg. uboot), so we have to\n# explicitly pass it to user-supplied external hooks (eg. post-build,\n# post-images)\nEXTRA_ENV = \\\n\tPATH=$(BR_PATH) \\\n\tBR2_DL_DIR=$(BR2_DL_DIR) \\\n\tBUILD_DIR=$(BUILD_DIR) \\\n\tCONFIG_DIR=$(CONFIG_DIR) \\\n\tO=$(CANONICAL_O)\n\n################################################################################\n# settings we need to pass to configure\n\n# does unaligned access trap?\nBR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=yes\nifeq ($(BR2_i386),y)\nBR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no\nendif\nifeq ($(BR2_x86_64),y)\nBR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no\nendif\nifeq ($(BR2_m68k),y)\nBR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no\nendif\nifeq ($(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),y)\nBR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no\nendif\n\nifeq ($(BR2_ENDIAN),\"BIG\")\nBR2_AC_CV_C_BIGENDIAN = ac_cv_c_bigendian=yes\nelse\nBR2_AC_CV_C_BIGENDIAN = ac_cv_c_bigendian=no\nendif\n\n# AM_GNU_GETTEXT misdetects musl gettext support.\n# musl currently implements api level 1 and 2 (basic + ngettext)\n# http://www.openwall.com/lists/musl/2015/04/16/3\n#\n# These autoconf variables should only be pre-seeded when the minimal\n# gettext implementation of musl is used. When the full blown\n# implementation provided by gettext libintl is used, auto-detection\n# works fine, and pre-seeding those values is actually wrong.\nifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y:)\nBR2_GT_CV_FUNC_GNUGETTEXT_LIBC = \\\n\tgt_cv_func_gnugettext1_libc=yes \\\n\tgt_cv_func_gnugettext2_libc=yes\nendif\n\nTARGET_CONFIGURE_ARGS = \\\n\t$(BR2_AC_CV_TRAP_CHECK) \\\n\tac_cv_func_mmap_fixed_mapped=yes \\\n\tac_cv_func_memcmp_working=yes \\\n\tac_cv_have_decl_malloc=yes \\\n\tgl_cv_func_malloc_0_nonnull=yes \\\n\tac_cv_func_malloc_0_nonnull=yes \\\n\tac_cv_func_calloc_0_nonnull=yes \\\n\tac_cv_func_realloc_0_nonnull=yes \\\n\tlt_cv_sys_lib_search_path_spec=\"\" \\\n\t$(BR2_AC_CV_C_BIGENDIAN) \\\n\t$(BR2_GT_CV_FUNC_GNUGETTEXT_LIBC)\n\n################################################################################\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nNLS_OPTS = --enable-nls\nTARGET_NLS_DEPENDENCIES = host-gettext\nifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y)\nTARGET_NLS_DEPENDENCIES += gettext\nTARGET_NLS_LIBS += -lintl\nendif\nelse\nNLS_OPTS = --disable-nls\nendif\n\n# We need anything that is invalid. Traditionally, we'd have used 'false' (and\n# we did so in the past). However, that breaks libtool for packages that have\n# optional C++ support (e.g. gnutls), because libtool will *require* a *valid*\n# C++ preprocessor as long as CXX is not 'no'.\n# Now, whether we use 'no' or 'false' for CXX as the same side effect: it is an\n# invalid C++ compiler, and thus will cause detection of C++ to fail (which is\n# expected and what we want), while at the same time taming libtool into\n# silence.\nifneq ($(BR2_INSTALL_LIBSTDCPP),y)\nTARGET_CONFIGURE_OPTS += CXX=no\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nSHARED_STATIC_LIBS_OPTS = --enable-static --disable-shared\nTARGET_CFLAGS += -static\nTARGET_CXXFLAGS += -static\nTARGET_FCFLAGS += -static\nTARGET_LDFLAGS += -static\nelse ifeq ($(BR2_SHARED_LIBS),y)\nSHARED_STATIC_LIBS_OPTS = --disable-static --enable-shared\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nSHARED_STATIC_LIBS_OPTS = --enable-static --enable-shared\nendif\n\nifeq ($(BR2_COMPILER_PARANOID_UNSAFE_PATH),y)\nexport BR_COMPILER_PARANOID_UNSAFE_PATH=enabled\nendif\n\ninclude package/pkg-download.mk\ninclude package/pkg-autotools.mk\ninclude package/pkg-cmake.mk\ninclude package/pkg-luarocks.mk\ninclude package/pkg-perl.mk\ninclude package/pkg-python.mk\ninclude package/pkg-virtual.mk\ninclude package/pkg-generic.mk\ninclude package/pkg-kconfig.mk\ninclude package/pkg-rebar.mk\ninclude package/pkg-kernel-module.mk\ninclude package/pkg-waf.mk\ninclude package/pkg-golang.mk\ninclude package/pkg-meson.mk\ninclude package/pkg-qmake.mk\n"
  },
  {
    "path": "package/a10disp/Config.in",
    "content": "config BR2_PACKAGE_A10DISP\n\tbool \"a10disp\"\n\tdepends on BR2_arm\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  Program to change the display mode of Allwinner ARM SOCs\n\t  running the linux-sunxi kernel (and not the mainline kernel.)\n\n\t  http://github.com/hglm/a10disp\n\ncomment \"a10disp needs a Linux kernel to be built\"\n\tdepends on BR2_arm\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/a10disp/a10disp.hash",
    "content": "# Locally calculated\nsha256  5077405030e8f97a1edd4b86d469466abbc4d32b4a4609e58459347fcd1ba35b  a10disp-0.6.1.tar.gz\nsha256  ddf849966f57fee8f9675f5a3c7791353d1cba71695cd58016212fc236bbdbee  a10disp.c\n"
  },
  {
    "path": "package/a10disp/a10disp.mk",
    "content": "################################################################################\n#\n# a10disp\n#\n################################################################################\n\nA10DISP_VERSION = 0.6.1\nA10DISP_SITE = $(call github,hglm,a10disp,v$(A10DISP_VERSION))\nA10DISP_LICENSE = MIT\nA10DISP_LICENSE_FILES = a10disp.c\n\nA10DISP_DEPENDENCIES = linux\n\ndefine A10DISP_BUILD_CMDS\n\tcp -f $(LINUX_DIR)/include/video/sunxi_disp_ioctl.h $(@D)/\n\t$(TARGET_CC) $(TARGET_CFLAGS) $(@D)/a10disp.c -o $(@D)/a10disp\nendef\n\ndefine A10DISP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/a10disp $(TARGET_DIR)/usr/bin/a10disp\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/abootimg/Config.in",
    "content": "config BR2_PACKAGE_ABOOTIMG\n\tbool \"abootimg\"\n\tdepends on BR2_USE_MMU\t# libblkid\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\thelp\n\t  Tool to manipulate Android Boot Images, either on files\n\t  or directly on /dev block devices.\n\n\t  https://gitlab.com/ajs124/abootimg\n"
  },
  {
    "path": "package/abootimg/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_ABOOTIMG\n\tbool \"host abootimg\"\n\tselect BR2_PACKAGE_HOST_UTIL_LINUX\n\thelp\n\t  Tool to manipulate Android Boot Images, either on files\n\t  or directly on /dev block devices.\n\n\t  https://github.com/ggrandou/abootimg\n"
  },
  {
    "path": "package/abootimg/abootimg.hash",
    "content": "# Locally calculated\nsha256\tf377da42a57d982cfc22fa75c5a69febdc3e4c1ef43cd0ceaec42e14067e2f37\tabootimg-1ebeb393252ab5aeed62e34bc439b6728444f06e-br1.tar.gz\nsha256\t8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\tLICENSE\n"
  },
  {
    "path": "package/abootimg/abootimg.mk",
    "content": "################################################################################\n#\n# abootimg\n#\n################################################################################\n\nABOOTIMG_VERSION = 1ebeb393252ab5aeed62e34bc439b6728444f06e\nABOOTIMG_SITE = https://gitlab.com/ajs124/abootimg.git\nABOOTIMG_SITE_METHOD = git\nABOOTIMG_LICENSE = GPL-2.0+\nABOOTIMG_LICENSE_FILES = LICENSE\n\n# depends on libblkid from util-linux\nABOOTIMG_DEPENDENCIES = util-linux\nHOST_ABOOTIMG_DEPENDENCIES = host-util-linux\n\ndefine ABOOTIMG_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine ABOOTIMG_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 $(@D)/abootimg $(TARGET_DIR)/usr/bin/abootimg\nendef\n\ndefine HOST_ABOOTIMG_BUILD_CMDS\n\t$(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine HOST_ABOOTIMG_INSTALL_CMDS\n\t$(INSTALL) -m 0755 $(@D)/abootimg $(HOST_DIR)/usr/bin/abootimg\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/acl/0001-Build-with-old-GCC-versions.patch",
    "content": "From a42519dceef0493ece45538375ae1791313f16d3 Mon Sep 17 00:00:00 2001\nFrom: Hollis Blanchard <hollis_blanchard@mentor.com>\nDate: Mon, 30 Jul 2018 14:29:46 -0700\nSubject: [PATCH] Remove pragmas inside functions\n\nGCC 4.4.7, as found in RHEL6, reports:\n    libacl/acl_from_text.c:307: error: #pragma GCC diagnostic not allowed inside functions\n\nSigned-off-by: Hollis Blanchard <hollis_blanchard@mentor.com>\n---\n libacl/acl_from_text.c | 3 ---\n 1 file changed, 3 deletions(-)\n\ndiff --git a/libacl/acl_from_text.c b/libacl/acl_from_text.c\nindex 09790c9..fb6bc07 100644\n--- a/libacl/acl_from_text.c\n+++ b/libacl/acl_from_text.c\n@@ -304,11 +304,8 @@ parse_acl_entry(const char **text_p, acl_t *acl_p)\n create_entry:\n \tif (acl_create_entry(acl_p, &entry_d) != 0)\n \t\treturn -1;\n-#pragma GCC diagnostic push\n-#pragma GCC diagnostic ignored \"-Waddress\"\n \tif (acl_copy_entry(entry_d, int2ext(&entry_obj)) != 0)\n \t\treturn -1;\n-#pragma GCC diagnostic pop\n \treturn 0;\n \n fail:\n-- \n2.13.0\n\n"
  },
  {
    "path": "package/acl/Config.in",
    "content": "config BR2_PACKAGE_ACL\n\tbool \"acl\"\n\tselect BR2_PACKAGE_ATTR\n\thelp\n\t  POSIX Access Control Lists, which are used to define more\n\t  fine-grained discretionary access rights for files and\n\t  directories.\n\t  This package also provides libacl.\n\n\t  http://savannah.nongnu.org/projects/acl\n"
  },
  {
    "path": "package/acl/acl.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  c0234042e17f11306c23c038b08e5e070edb7be44bef6697fb8734dcff1c66b1  acl-2.3.1.tar.xz\n\n# Locally calculated\nsha256  a45a845012742796534f7e91fe623262ccfb99460a2bd04015bd28d66fba95b8  doc/COPYING\nsha256  01b1f9f2c8ee648a7a596a1abe8aa4ed7899b1c9e5551bda06da6e422b04aa55  doc/COPYING.LGPL\n"
  },
  {
    "path": "package/acl/acl.mk",
    "content": "################################################################################\n#\n# acl\n#\n################################################################################\n\nACL_VERSION = 2.3.1\nACL_SOURCE = acl-$(ACL_VERSION).tar.xz\nACL_SITE = http://download.savannah.gnu.org/releases/acl\nACL_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries)\nACL_LICENSE_FILES = doc/COPYING doc/COPYING.LGPL\nACL_CPE_ID_VENDOR = acl_project\n\nACL_DEPENDENCIES = attr\nHOST_ACL_DEPENDENCIES = host-attr\n\nACL_INSTALL_STAGING = YES\n\nACL_CONF_OPTS = --disable-nls\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/acpica/0001-build-do-not-use-Werror.patch",
    "content": "From 9382ae2431d2962c430e7149302c8690f5bc159c Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sun, 10 Jul 2016 15:06:15 +0200\nSubject: [PATCH] build: do not use -Werror\n\nWarnings come and go with various compiler versions, so using -Werror is\nprone to cause build failures with various compiler versions, especially\nnewer versions that introduce new warnings.\n\nRemove use of -Werror.\n\n[Vincent: tweak patch for 20170531 release]\n[Bernd: tweak patch for 20191018 release]\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nSigned-off-by: \"Vicente Olivert Riera\" <Vincent.Riera@imgtec.com>\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n generate/unix/Makefile.config |  1 -\n generate/unix/iasl/Makefile   | 16 ++++++++--------\n 2 files changed, 8 insertions(+), 9 deletions(-)\n\ndiff --git a/generate/unix/Makefile.config b/generate/unix/Makefile.config\nindex c28e8a9b1..7064bed97 100644\n--- a/generate/unix/Makefile.config\n+++ b/generate/unix/Makefile.config\n@@ -204,7 +204,6 @@ CWARNINGFLAGS = \\\n     -Wall\\\n     -Wbad-function-cast\\\n     -Wdeclaration-after-statement\\\n-    -Werror\\\n     -Wformat=2\\\n     -Wmissing-declarations\\\n     -Wmissing-prototypes\\\ndiff --git a/generate/unix/iasl/Makefile b/generate/unix/iasl/Makefile\nindex 47ea73cab..2c756af79 100644\n--- a/generate/unix/iasl/Makefile\n+++ b/generate/unix/iasl/Makefile\n@@ -360,32 +360,32 @@ $(OBJDIR)/prparserparse.c $(OBJDIR)/prparser.y.h :       $(ASL_COMPILER)/prparse\n #\n $(OBJDIR)/aslcompilerlex.o :   $(OBJDIR)/aslcompilerlex.c\n \t@echo \"- \" \"Intermediate\" $<\n-\t@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<\n+\t@$(CC) -c $(CFLAGS) -Wall -o$@ $<\n \n $(OBJDIR)/aslcompilerparse.o : $(OBJDIR)/aslcompilerparse.c\n \t@echo \"- \" \"Intermediate\" $<\n-\t@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<\n+\t@$(CC) -c $(CFLAGS) -Wall -o$@ $<\n \n $(OBJDIR)/dtcompilerparserlex.o :      $(OBJDIR)/dtcompilerparserlex.c\n \t@echo \"- \" \"Intermediate\" $<\n-\t@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<\n+\t@$(CC) -c $(CFLAGS) -Wall -o$@ $<\n \n $(OBJDIR)/dtcompilerparserparse.o :    $(OBJDIR)/dtcompilerparserparse.c\n \t@echo \"- \" \"Intermediate\" $<\n-\t@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<\n+\t@$(CC) -c $(CFLAGS) -Wall -o$@ $<\n \n $(OBJDIR)/dtparserlex.o :      $(OBJDIR)/dtparserlex.c\n \t@echo \"- \" \"Intermediate\" $<\n-\t@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<\n+\t@$(CC) -c $(CFLAGS) -Wall -o$@ $<\n \n $(OBJDIR)/dtparserparse.o :    $(OBJDIR)/dtparserparse.c\n \t@echo \"- \" \"Intermediate\" $<\n-\t@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<\n+\t@$(CC) -c $(CFLAGS) -Wall -o$@ $<\n \n $(OBJDIR)/prparserlex.o :      $(OBJDIR)/prparserlex.c\n \t@echo \"- \" \"Intermediate\" $<\n-\t@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<\n+\t@$(CC) -c $(CFLAGS) -Wall -o$@ $<\n \n $(OBJDIR)/prparserparse.o :    $(OBJDIR)/prparserparse.c\n \t@echo \"- \" \"Intermediate\" $<\n-\t@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<\n+\t@$(CC) -c $(CFLAGS) -Wall -o$@ $<\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/acpica/Config.in",
    "content": "config BR2_PACKAGE_ACPICA\n\tbool \"acpica\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  The ACPI Component Architecture (ACPICA) project provides an\n\t  operating system (OS)-independent reference implementation\n\t  of the Advanced Configuration and Power Interface\n\t  Specification (ACPI).\n\n\t  https://www.acpica.org\n\ncomment \"acpica needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/acpica/acpica.hash",
    "content": "# locally computed hash\nsha256  8a49904744a8159b7f325ed941b56968ba37a0371c634036628064f97538de4b  acpica-unix2-20200717.tar.gz\nsha256  cb17c679d3291eba1a70a1336062fb07eec2e839b0821b443b24f41de18c5218  source/include/acpi.h\n"
  },
  {
    "path": "package/acpica/acpica.mk",
    "content": "################################################################################\n#\n# acpica\n#\n################################################################################\n\nACPICA_VERSION = 20200717\nACPICA_SOURCE = acpica-unix2-$(ACPICA_VERSION).tar.gz\nACPICA_SITE = https://acpica.org/sites/acpica/files\nACPICA_LICENSE = BSD-3-Clause or GPL-2.0\nACPICA_LICENSE_FILES = source/include/acpi.h\nACPICA_DEPENDENCIES = host-bison host-flex\nHOST_ACPICA_DEPENDENCIES = host-bison host-flex\n\ndefine ACPICA_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tHARDWARE_NAME=$(BR2_ARCH) HOST=_LINUX CC=\"$(TARGET_CC)\" \\\n\t\tall\nendef\n\ndefine HOST_ACPICA_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tall\nendef\n\ndefine ACPICA_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tHARDWARE_NAME=$(BR2_ARCH) DESTDIR=\"$(TARGET_DIR)\" \\\n\t\tINSTALLFLAGS=-m755 install\nendef\n\ndefine HOST_ACPICA_INSTALL_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tPREFIX=\"$(HOST_DIR)\" \\\n\t\tINSTALLFLAGS=-m755 install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/acpid/0001-dont-use-isfdtype.patch",
    "content": "Partially roll back upstream commit 4711119089e1ad08dad206f4fded68f1972fdeed\nsince released versions of uClibc don't support isfdtype().\n\nSigned-off-by: Gustavo Zaarias <gustavo@zacarias.com.ar>\n\ndiff -Nura acpid-2.0.22.orig/sock.c acpid-2.0.22/sock.c\n--- acpid-2.0.22.orig/sock.c\t2014-04-22 18:04:19.706841764 -0300\n+++ acpid-2.0.22/sock.c\t2014-04-22 18:05:08.285479625 -0300\n@@ -53,7 +53,10 @@\n int\n is_socket(int fd)\n {\n-    return (isfdtype(fd, S_IFSOCK) == 1);\n+\tint v;\n+\tsocklen_t l = sizeof(int);\n+\n+\treturn (getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&v, &l) == 0);\n }\n \n /* accept a new client connection */\n"
  },
  {
    "path": "package/acpid/0002-add-missing-defines.patch",
    "content": "Add missing MSG_CMSG_CLOEXEC\n\nUnpatched uClibc toolchains, even using the latest 0.9.33.2, do not\nhave the MSG_CMSG_CLOEXEC definition. Even though the Buildroot\ninternal toolchain backend has a uClibc patch to provide it, it\ndoesn't apply to external toolchains. This patch provides the\ndefinition of MSG_CMSG_CLOEXEC.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/libnetlink.h\n===================================================================\n--- a/libnetlink.h\n+++ b/libnetlink.h\n@@ -7,6 +7,10 @@\n #include <linux/netlink.h>\n #include <linux/rtnetlink.h>\n \n+#ifndef MSG_CMSG_CLOEXEC\n+#define MSG_CMSG_CLOEXEC 0x40000000\n+#endif\n+\n struct rtnl_handle\n {\n \tint\t\t\tfd;\nIndex: b/kacpimon/libnetlink.h\n===================================================================\n--- a/kacpimon/libnetlink.h\n+++ b/kacpimon/libnetlink.h\n@@ -7,6 +7,10 @@\n #include <linux/netlink.h>\n #include <linux/rtnetlink.h>\n \n+#ifndef MSG_CMSG_CLOEXEC\n+#define MSG_CMSG_CLOEXEC 0x40000000\n+#endif\n+\n struct rtnl_handle\n {\n \tint\t\t\tfd;\n"
  },
  {
    "path": "package/acpid/Config.in",
    "content": "config BR2_PACKAGE_ACPID\n\tbool \"acpid\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Advanced Configuration and Power Interface event daemon.\n\n\t  Acpid is designed to notify user-space programs of ACPI\n\t  events, and allows you to configure specific actions for\n\t  specific events.\n\n\t  http://sourceforge.net/projects/acpid2/\n"
  },
  {
    "path": "package/acpid/S02acpid",
    "content": "#!/bin/sh\n\nDAEMON=\"acpid\"\nEXEC=\"/usr/sbin/$DAEMON\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nACPID_ARGS=\"\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"$EXEC\" \\\n\t\t-- -n $ACPID_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\" -x \"$EXEC\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\t# Give acpid time to send dying gasp to syslog\n\t\tsleep 1\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/acpid/acpid.hash",
    "content": "# From https://sourceforge.net/projects/acpid2/files/\nmd5  b2f2ca633b30ae893c47981fa4d3b258  acpid-2.0.33.tar.xz\nsha1  b3e06c3f2213db8ee1a9024cf372fb30e2fab637  acpid-2.0.33.tar.xz\n\n# Locally computed\nsha256  0856f71b3eb34a1b663d0a8e6363dfcbc519e63d847330498898658e2972dbe8  acpid-2.0.33.tar.xz\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/acpid/acpid.mk",
    "content": "################################################################################\n#\n# acpid\n#\n################################################################################\n\nACPID_VERSION = 2.0.33\nACPID_SOURCE = acpid-$(ACPID_VERSION).tar.xz\nACPID_SITE = http://downloads.sourceforge.net/project/acpid2\nACPID_LICENSE = GPL-2.0+\nACPID_LICENSE_FILES = COPYING\nACPID_CPE_ID_VENDOR = tedfelix\nACPID_CPE_ID_PRODUCT = acpid2\nACPID_SELINUX_MODULES = acpi\n\ndefine ACPID_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/acpid/acpid.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/acpid.service\nendef\n\ndefine ACPID_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/acpid/S02acpid \\\n\t\t$(TARGET_DIR)/etc/init.d/S02acpid\nendef\n\nifeq ($(BR2_INIT_SYSV)$(BR2_INIT_SYSTEMD),y)\nACPID_POWEROFF_CMD = /sbin/shutdown -hP now\nelse\nACPID_POWEROFF_CMD = /sbin/poweroff\nendif\n\ndefine ACPID_SET_EVENTS\n\tmkdir -p $(TARGET_DIR)/etc/acpi/events\n\tprintf 'event=button[ /]power\\naction=%s\\n' '$(ACPID_POWEROFF_CMD)' \\\n\t\t>$(TARGET_DIR)/etc/acpi/events/powerbtn\nendef\n\nACPID_POST_INSTALL_TARGET_HOOKS += ACPID_SET_EVENTS\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/acpid/acpid.service",
    "content": "[Unit]\nDescription=ACPI event daemon\nDocumentation=man:acpid(8)\n\n[Service]\nExecStart=/usr/sbin/acpid --foreground --netlink\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/acpitool/Config.in",
    "content": "config BR2_PACKAGE_ACPITOOL\n\tbool \"acpitool\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  A small, convenient command-line ACPI client with a lot of\n\t  features for Linux\n\n\t  http://acpitool.sourceforge.net\n\ncomment \"acpitool needs a toolchain w/ threads, C++, dynamic library\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/acpitool/acpitool.hash",
    "content": "# locally computed hash\nsha256 004fb6cd43102918b6302cf537a2db7ceadda04aef2e0906ddf230f820dad34f  acpitool-0.5.1.tar.bz2\nsha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/acpitool/acpitool.mk",
    "content": "################################################################################\n#\n# acpitool\n#\n################################################################################\n\nACPITOOL_VERSION = 0.5.1\nACPITOOL_SOURCE = acpitool-$(ACPITOOL_VERSION).tar.bz2\nACPITOOL_SITE = http://downloads.sourceforge.net/sourceforge/acpitool\nACPITOOL_LICENSE = GPL-2.0+\nACPITOOL_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/acsccid/Config.in",
    "content": "config BR2_PACKAGE_ACSCCID\n\tbool \"acsccid\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # pcsc-lite, libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tdepends on BR2_USE_MMU # pcsc-lite\n\tdepends on !BR2_STATIC_LIBS # pcsc-lite\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_PCSC_LITE\n\t# Even though there is a --disable-libusb option, it has in\n\t# fact no effect, and acsccid really requires libusb.\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  acsccid is a PC/SC driver for Linux/Mac OS X and it supports\n\t  ACS CCID smart card readers.\n\n\t  http://acsccid.sourceforge.net/\n\ncomment \"acsccid needs a toolchain w/ threads, dynamic library, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/acsccid/acsccid.hash",
    "content": "# From https://sourceforge.net/projects/acsccid/files/acsccid/1.1.7/\nsha1  c0062401e5fedf3ec12c8c2d375d6e1561a8a8ed  acsccid-1.1.8.tar.bz2\nmd5  3eba7b2527aa0b14c73b1a620a1d72d2  acsccid-1.1.8.tar.bz2\n# Locally computed\nsha256  f86fd846bc88594a569ea27040cb441d933b7eca8d51d2a90bacf161e7740051  acsccid-1.1.8.tar.bz2\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING\n"
  },
  {
    "path": "package/acsccid/acsccid.mk",
    "content": "################################################################################\n#\n# acsccid\n#\n################################################################################\n\nACSCCID_VERSION = 1.1.8\nACSCCID_SOURCE = acsccid-$(ACSCCID_VERSION).tar.bz2\nACSCCID_SITE = http://downloads.sourceforge.net/acsccid\nACSCCID_LICENSE = LGPL-2.1+\nACSCCID_LICENSE_FILES = COPYING\nACSCCID_INSTALL_STAGING = YES\nACSCCID_DEPENDENCIES = pcsc-lite host-flex host-pkgconf libusb\nACSCCID_CONF_OPTS = --enable-usbdropdir=/usr/lib/pcsc/drivers\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nACSCCID_DEPENDENCIES += libiconv\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/adwaita-icon-theme/Config.in",
    "content": "config BR2_PACKAGE_ADWAITA_ICON_THEME\n\tbool \"adwaita icon theme\"\n\tdepends on BR2_PACKAGE_LIBGTK2 || BR2_PACKAGE_LIBGTK3\n\thelp\n\t  Adwaita icon theme\n"
  },
  {
    "path": "package/adwaita-icon-theme/adwaita-icon-theme.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/adwaita-icon-theme/3.22/adwaita-icon-theme-3.22.0.sha256sum\nsha256  a594e7440971f860cc61b1b8291be15ffc1b8dd06a9f11485a5a7faf189bcf6b  adwaita-icon-theme-3.37.2.tar.xz\n# locally computed\nsha256  51f83b2b4e9ed2beebc9b8eed2ecad29314a58ed8c5184b22ad8f9df703d3ce5  COPYING\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING_LGPL\nsha256  207fe75c396c0ae197c57d42c727163428b6667d98cef3644e41c6f1afe1895f  COPYING_CCBYSA3\n"
  },
  {
    "path": "package/adwaita-icon-theme/adwaita-icon-theme.mk",
    "content": "################################################################################\n#\n# adwaita-icon-theme\n#\n################################################################################\n\nADWAITA_ICON_THEME_VERSION_MAJOR = 3.37\nADWAITA_ICON_THEME_VERSION = $(ADWAITA_ICON_THEME_VERSION_MAJOR).2\nADWAITA_ICON_THEME_SITE = http://ftp.gnome.org/pub/gnome/sources/adwaita-icon-theme/$(ADWAITA_ICON_THEME_VERSION_MAJOR)\nADWAITA_ICON_THEME_SOURCE = adwaita-icon-theme-$(ADWAITA_ICON_THEME_VERSION).tar.xz\nADWAITA_ICON_THEME_INSTALL_STAGING = YES\nADWAITA_ICON_THEME_LICENSE = LGPL-3.0 or CC-BY-SA-3.0\nADWAITA_ICON_THEME_LICENSE_FILES = COPYING COPYING_LGPL COPYING_CCBYSA3\nADWAITA_ICON_THEME_DEPENDENCIES = host-intltool host-libgtk3\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/aer-inject/Config.in",
    "content": "config BR2_PACKAGE_AER_INJECT\n\tbool \"aer-inject\"\n\thelp\n\t  aer-inject allows to inject PCIE AER errors on the software\n\t  level into a running Linux kernel. This is intended for\n\t  validation of the PCIE driver error recovery handler and\n\t  PCIE AER core handler.\n\n\t  Requires a new Linux kernel with PCIE AER error injection\n\t  patches.\n\n\t  https://git.kernel.org/cgit/linux/kernel/git/gong.chen/aer-inject.git/\n"
  },
  {
    "path": "package/aer-inject/aer-inject.hash",
    "content": "# Locally computed\nsha256  2dd2bd73aa738c1cc26ba04b6e502329778d18c2cc873c0bd00e6b2d38e9477c  aer-inject-9bd5e2c7886fca72f139cd8402488a2235957d41-br1.tar.gz\nsha256  659a191d8775e05c6c6a9a4ba66b3577c577342bb83f20d393135eb6633c8973  README\n"
  },
  {
    "path": "package/aer-inject/aer-inject.mk",
    "content": "################################################################################\n#\n# aer-inject\n#\n################################################################################\n\nAER_INJECT_VERSION = 9bd5e2c7886fca72f139cd8402488a2235957d41\nAER_INJECT_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/gong.chen/aer-inject.git\nAER_INJECT_LICENSE = GPL-2.0\nAER_INJECT_LICENSE_FILES = README\nAER_INJECT_DEPENDENCIES = host-flex host-bison\n\ndefine AER_INJECT_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine AER_INJECT_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) PREFIX=/usr/bin install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/aespipe/Config.in",
    "content": "config BR2_PACKAGE_AESPIPE\n\tbool \"aespipe\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  aespipe program is AES encrypting or decrypting pipe. It reads\n\t  from standard input and writes to standard output. It can be\n\t  used to create and restore encrypted tar or cpio archives.\n\t  It can be used to encrypt and decrypt loop-AES compatible\n\t  encrypted disk images.\n\n\t  http://loop-aes.sourceforge.net/\n"
  },
  {
    "path": "package/aespipe/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_AESPIPE\n\tbool \"host aespipe\"\n\thelp\n\t  aespipe program is AES encrypting or decrypting pipe. It\n\t  reads from standard input and writes to standard output. It\n\t  can be used to create and restore encrypted tar or cpio\n\t  archives. It can be used to encrypt and decrypt loop-AES\n\t  compatible encrypted disk images.\n\n\t  http://loop-aes.sourceforge.net/\n"
  },
  {
    "path": "package/aespipe/aespipe.hash",
    "content": "# From https://sourceforge.net/projects/loop-aes/files/aespipe/v2.4f/\nsha1 2c23e1a6be298cf4f173f06b1123e4ecd5e9a202  aespipe-v2.4f.tar.bz2\nmd5 ed05c62c1954110f009bedda4bc1562f  aespipe-v2.4f.tar.bz2\n# Locally computed:\nsha256 b135e1659f58dc9be5e3c88923cd03d2a936096ab8cd7f2b3af4cb7a844cef96  aespipe-v2.4f.tar.bz2\n"
  },
  {
    "path": "package/aespipe/aespipe.mk",
    "content": "################################################################################\n#\n# aespipe\n#\n################################################################################\n\nAESPIPE_VERSION = 2.4f\nAESPIPE_SOURCE = aespipe-v$(AESPIPE_VERSION).tar.bz2\nAESPIPE_SITE = http://loop-aes.sourceforge.net/aespipe\nAESPIPE_LICENSE = GPL\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/agentpp/0001-Fix-build-when-SNMPv3-is-disabled.patch",
    "content": "From 2a0fe384eec254643ca2176ccfcbbd036a5aad06 Mon Sep 17 00:00:00 2001\nFrom: Luca Ceresoli <luca@lucaceresoli.net>\nDate: Tue, 14 Jul 2020 10:30:10 +0200\nSubject: [PATCH] Fix build when SNMPv3 is disabled\n\nagentpp has ifdefs to disable v3 code when SNMPv3 is disabled. However it\nis missing one and it has a few ones in excess. Fix them.\n\nUpstream is aware, says \"will fix in later version\", but thinks to make v3\nmandatory. See discussion at\nhttps://forum.snmp.app/t/agent-compile-fails-if-snmp-has-disable-snmpv3/326\n\nUpstream status: none, upstream is not welcoming contributions.\n\nSigned-off-by: Luca Ceresoli <luca@lucaceresoli.net>\n---\n include/agent_pp/notification_log_mib.h    | 4 ++--\n include/agent_pp/notification_originator.h | 2 ++\n include/agent_pp/snmp_community_mib.h      | 4 ++--\n src/notification_originator.cpp            | 2 ++\n 4 files changed, 8 insertions(+), 4 deletions(-)\n\ndiff --git a/include/agent_pp/notification_log_mib.h b/include/agent_pp/notification_log_mib.h\nindex ddac05e515d9..8fd8cfec32ca 100644\n--- a/include/agent_pp/notification_log_mib.h\n+++ b/include/agent_pp/notification_log_mib.h\n@@ -22,7 +22,7 @@\n \n //--AgentGen BEGIN=_BEGIN\n #include <agent_pp/agent++.h>\n-#ifdef _SNMPv3\n+// #ifdef _SNMPv3 // This file deos not look SNMPv3-specific\n #include <agent_pp/mib_complex_entry.h>\n //--AgentGen END\n \n@@ -688,6 +688,6 @@ protected:\n  */\n \n \n-#endif\n+// #endif // _SNMPv3\n \n \ndiff --git a/include/agent_pp/notification_originator.h b/include/agent_pp/notification_originator.h\nindex 95e8b4e1836d..6f50cd52625b 100644\n--- a/include/agent_pp/notification_originator.h\n+++ b/include/agent_pp/notification_originator.h\n@@ -307,7 +307,9 @@ class AGENTPP_DECL NotificationOriginator: public NotificationSender {\n          */\n         virtual nlmLogEntry* get_nlm_log_entry();\n                 \n+#ifdef _SNMPv3\n         virtual v3MP* get_v3mp();\n+#endif\n \n  protected:\n      \ndiff --git a/include/agent_pp/snmp_community_mib.h b/include/agent_pp/snmp_community_mib.h\nindex 7d5c4558f36d..d9eb2b4a87ec 100644\n--- a/include/agent_pp/snmp_community_mib.h\n+++ b/include/agent_pp/snmp_community_mib.h\n@@ -49,7 +49,7 @@ namespace Agentpp {\n #define oidSnmpTrapAddress               \"1.3.6.1.6.3.18.1.3.0\"\n #define oidSnmpTrapCommunity             \"1.3.6.1.6.3.18.1.4.0\"\n \n-#ifdef _SNMPv3\n+// #ifdef _SNMPv3 // This file deos not look SNMPv3-specific\n \n /**\n  *  snmpCommunityName\n@@ -346,7 +346,7 @@ class AGENTPP_DECL snmp_community_mib: public MibGroup\n \tstatic void\t       \tadd_public();\n \tstatic void\t       \tadd_public(Mib* mib);\n };\n-#endif\n+// #endif // _SNMPv3\n \n #ifdef AGENTPP_NAMESPACE\n }\ndiff --git a/src/notification_originator.cpp b/src/notification_originator.cpp\nindex d7d566869998..39ddbe08cdeb 100644\n--- a/src/notification_originator.cpp\n+++ b/src/notification_originator.cpp\n@@ -237,6 +237,7 @@ nlmLogEntry* NotificationOriginator::get_nlm_log_entry() {\n     return nlmLogEntry::instance;\n }\n \n+#ifdef _SNMPv3\n v3MP* NotificationOriginator::get_v3mp() {\n     if (mib) {\n         return mib->get_request_list()->get_v3mp();\n@@ -244,6 +245,7 @@ v3MP* NotificationOriginator::get_v3mp() {\n         return v3MP::I;\n     }\n }\n+#endif\n \n \n bool NotificationOriginator::check_access(ListCursor<MibTableRow>& cur,\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/agentpp/Config.in",
    "content": "config BR2_PACKAGE_AGENTPP\n\tbool \"agent++\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # snmp++\n\tdepends on !BR2_STATIC_LIBS # snmp++\n\tselect BR2_PACKAGE_SNMPPP\n\thelp\n\t  AGENT++ is a set of C++ classes which provides a complete\n\t  protocol engine and dispatch table for the development of\n\t  SNMP agents. AGENT++ is a multilingual API which supports\n\t  SNMPv1, SNMPv2c, and SNMPv3. It provides various C++ classes\n\t  implementing prototypes for scalar and table SNMP managed\n\t  objects that can be customized by derivation. Additional\n\t  classes support the development of proxy agents as well as\n\t  sending notifications.\n\n\t  SNMPv3 support is enabled if SNMP++ enables it.\n\n\t  http://www.agentpp.com/agentpp3_5/agentpp3_5.html\n\ncomment \"agent++ needs a toolchain w/ threads, C++, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/agentpp/agentpp.hash",
    "content": "# Locally computed:\nsha256  9b45123df45e803198a1181540b37a4ccd0e63c68df6e826702e2ba49167edac  agent++-4.3.1.tar.gz\nsha256  1eb85fc97224598dad1852b5d6483bbcf0aa8608790dcc657a5a2a761ae9c8c6  LICENSE-2_0.txt\n"
  },
  {
    "path": "package/agentpp/agentpp.mk",
    "content": "################################################################################\n#\n# agentpp\n#\n################################################################################\n\nAGENTPP_VERSION = 4.3.1\nAGENTPP_SOURCE = agent++-$(AGENTPP_VERSION).tar.gz\nAGENTPP_SITE = http://www.agentpp.com/download\nAGENTPP_LICENSE = Apache-2.0\nAGENTPP_LICENSE_FILES = LICENSE-2_0.txt\nAGENTPP_INSTALL_STAGING = YES\nAGENTPP_DEPENDENCIES = host-pkgconf snmppp\nAGENTPP_CONF_OPTS += \\\n\t--disable-proxy \\\n\t--disable-forwarder \\\n\t--disable-rpath\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/aircrack-ng/0001-Expand-packed-definition.patch",
    "content": "From d4496006ac1e0c99908108b998ae39afb0658733 Mon Sep 17 00:00:00 2001\nFrom: Joseph Benden <joe@benden.us>\nDate: Tue, 7 Jul 2020 11:42:40 -0700\nSubject: [PATCH] Expand __packed definition.\n\nSigned-off-by: Joseph Benden <joe@benden.us>\n[Retrieved from:\nhttps://github.com/aircrack-ng/aircrack-ng/commit/d4496006ac1e0c99908108b998ae39afb0658733]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n lib/radiotap/radiotap.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/lib/radiotap/radiotap.h b/lib/radiotap/radiotap.h\nindex 57f784b8d..bb5a41dfc 100644\n--- a/lib/radiotap/radiotap.h\n+++ b/lib/radiotap/radiotap.h\n@@ -56,7 +56,7 @@ struct ieee80211_radiotap_header {\n \t * @it_present: (first) present word\n \t */\n \tuint32_t it_present;\n-} __packed;\n+} __attribute__((__packed__));\n \n /* version is always 0 */\n #define PKTHDR_RADIOTAP_VERSION\t0\n"
  },
  {
    "path": "package/aircrack-ng/0002-Fix-duplicated-symbols.patch",
    "content": "From f6f1396807607f5649d20631db517cfca3a1f5c4 Mon Sep 17 00:00:00 2001\nFrom: Joseph Benden <joe@benden.us>\nDate: Tue, 7 Jul 2020 11:44:40 -0700\nSubject: [PATCH] Fix duplicated symbols.\n\nSigned-off-by: Joseph Benden <joe@benden.us>\n[Retrieved from:\nhttps://github.com/aircrack-ng/aircrack-ng/commit/f6f1396807607f5649d20631db517cfca3a1f5c4]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/airodump-ng/airodump-ng.c                 | 2 --\n src/airventriloquist-ng/airventriloquist-ng.c | 6 +++---\n src/tkiptun-ng/tkiptun-ng.c                   | 4 ++--\n 3 files changed, 5 insertions(+), 7 deletions(-)\n\ndiff --git a/src/airodump-ng/airodump-ng.c b/src/airodump-ng/airodump-ng.c\nindex 3ae6994dd..e72bc88e2 100644\n--- a/src/airodump-ng/airodump-ng.c\n+++ b/src/airodump-ng/airodump-ng.c\n@@ -92,8 +92,6 @@\n #include \"radiotap/radiotap_iter.h\"\n \n struct devices dev;\n-uint8_t h80211[4096] __attribute__((aligned(16)));\n-uint8_t tmpbuf[4096] __attribute__((aligned(16)));\n \n static const unsigned char llcnull[] = {0, 0, 0, 0};\n \ndiff --git a/src/airventriloquist-ng/airventriloquist-ng.c b/src/airventriloquist-ng/airventriloquist-ng.c\nindex ac6b7647e..267d95540 100644\n--- a/src/airventriloquist-ng/airventriloquist-ng.c\n+++ b/src/airventriloquist-ng/airventriloquist-ng.c\n@@ -173,7 +173,7 @@ static struct local_options\n } lopt;\n \n struct devices dev;\n-struct wif *_wi_in, *_wi_out;\n+extern struct wif *_wi_in, *_wi_out;\n \n struct ARP_req\n {\n@@ -195,8 +195,8 @@ struct APt\n };\n \n unsigned long nb_pkt_sent;\n-u_int8_t h80211[4096];\n-static u_int8_t tmpbuf[4096];\n+extern u_int8_t h80211[4096];\n+extern u_int8_t tmpbuf[4096];\n \n static int tcp_test(const char * ip_str, const short port)\n {\ndiff --git a/src/tkiptun-ng/tkiptun-ng.c b/src/tkiptun-ng/tkiptun-ng.c\nindex dc67f5d58..43db0bc23 100644\n--- a/src/tkiptun-ng/tkiptun-ng.c\n+++ b/src/tkiptun-ng/tkiptun-ng.c\n@@ -267,7 +267,7 @@ static struct local_options\n \n // unused, but needed for link\n struct devices dev;\n-struct wif *_wi_in, *_wi_out;\n+extern struct wif *_wi_in, *_wi_out;\n \n struct ARP_req\n {\n@@ -289,7 +289,7 @@ struct APt\n };\n \n unsigned long nb_pkt_sent;\n-unsigned char h80211[4096];\n+extern unsigned char h80211[4096];\n static unsigned char srcbuf[4096];\n static char strbuf[512];\n static int alarmed;\n"
  },
  {
    "path": "package/aircrack-ng/Config.in",
    "content": "config BR2_PACKAGE_AIRCRACK_NG\n\tbool \"aircrack-ng\"\n\tdepends on BR2_USE_MMU # uses fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tselect BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  A set of tools for auditing wireless networks\n\n\t  For complete functionality, also select ethtool, iw,\n\t  util-linux (utilities and rfkill), and wireless_tools.\n\n\t  http://www.aircrack-ng.org/\n\ncomment \"aircrack-ng needs a toolchain w/ dynamic library, threads, C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/aircrack-ng/aircrack-ng.hash",
    "content": "# From http://www.aircrack-ng.org/downloads.html\nsha1 ffeb4816476e7b329dc0c154f1aa4a30ad171beb aircrack-ng-1.6.tar.gz\nmd5  22ddc85549b51ed0da0931d01ef215e5 aircrack-ng-1.6.tar.gz\n\n# Hash for license file:\nsha256 fc51fd3a97223f2fd47b057202d4a6b0daaedf23b5a1f5ff8723c192fc1e021d LICENSE\n"
  },
  {
    "path": "package/aircrack-ng/aircrack-ng.mk",
    "content": "################################################################################\n#\n# aircrack-ng\n#\n################################################################################\n\nAIRCRACK_NG_VERSION = 1.6\nAIRCRACK_NG_SITE = http://download.aircrack-ng.org\nAIRCRACK_NG_LICENSE = GPL-2.0+\nAIRCRACK_NG_LICENSE_FILES = LICENSE\nAIRCRACK_NG_CPE_ID_VENDOR = aircrack-ng\nAIRCRACK_NG_DEPENDENCIES = \\\n\t$(if $(BR2_PACKAGE_CMOCKA),cmocka) \\\n\t$(if $(BR2_PACKAGE_LIBNL),libnl) \\\n\t$(if $(BR2_PACKAGE_OPENSSL),openssl) \\\n\t$(if $(BR2_PACKAGE_PCRE),pcre) \\\n\t$(if $(BR2_PACKAGE_ZLIB),zlib) \\\n\thost-pkgconf\nAIRCRACK_NG_AUTORECONF = YES\n# Enable buddy-ng, easside-ng, tkiptun-ng, wesside-ng\nAIRCRACK_NG_CONF_OPTS = --with-experimental\n\nifeq ($(BR2_TOOLCHAIN_HAS_SSP),y)\nAIRCRACK_NG_CONF_OPTS += --with-opt\nelse\nAIRCRACK_NG_CONF_OPTS += --without-opt\nendif\n\nifeq ($(BR2_PACKAGE_DUMA),y)\nAIRCRACK_NG_DEPENDENCIES += duma\nAIRCRACK_NG_CONF_OPTS += --with-duma\nelse\nAIRCRACK_NG_CONF_OPTS += --without-duma\nendif\n\nifeq ($(BR2_PACKAGE_HWLOC),y)\nAIRCRACK_NG_DEPENDENCIES += hwloc\nAIRCRACK_NG_CONF_OPTS += --enable-hwloc\nelse\nAIRCRACK_NG_CONF_OPTS += --disable-hwloc\nendif\n\nifeq ($(BR2_PACKAGE_JEMALLOC),y)\nAIRCRACK_NG_DEPENDENCIES += jemalloc\nAIRCRACK_NG_CONF_OPTS += --with-jemalloc\nelse\nAIRCRACK_NG_CONF_OPTS += --without-jemalloc\nendif\n\nifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nAIRCRACK_NG_DEPENDENCIES += libgcrypt\nAIRCRACK_NG_CONF_OPTS += \\\n\t--with-gcrypt \\\n\t--with-libgcrypt-prefix=$(STAGING_DIR)/usr\nelse\nAIRCRACK_NG_CONF_OPTS += --without-gcrypt\nendif\n\nifeq ($(BR2_PACKAGE_LIBPCAP),y)\nAIRCRACK_NG_DEPENDENCIES += libpcap\nAIRCRACK_NG_CONF_OPTS += \\\n\t--with-libpcap-include=$(STAGING_DIR)/usr/include \\\n\t--with-libpcap-lib=$(STAGING_DIR)/usr/lib\nifeq ($(BR2_STATIC_LIBS),y)\nAIRCRACK_NG_CONF_ENV += \\\n\tLIBS=\"`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\"\nendif\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE),y)\nAIRCRACK_NG_DEPENDENCIES += sqlite\nAIRCRACK_NG_CONF_OPTS += --with-sqlite3\nelse\nAIRCRACK_NG_CONF_OPTS += --without-sqlite3\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/alsa-lib/0001-Don-t-use-fork-on-noMMU-platforms.patch",
    "content": "From 41c029755502acf01ed634db437ac06d09be6c41 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Fri, 13 Apr 2018 09:02:37 +0200\nSubject: [PATCH] Don't use fork() on noMMU platforms\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n[Jörg: update patch for 1.1.6]\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\nUpstream: http://mailman.alsa-project.org/pipermail/alsa-devel/2018-November/141376.html\n[Bernd: update patch for 1.2.4]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n configure.ac         |  2 ++\n src/pcm/pcm_direct.c | 10 +++++++++-\n 2 files changed, 11 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex cce195ae..0c852434 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -51,6 +51,8 @@ dnl Checks for library functions.\n AC_PROG_GCC_TRADITIONAL\n AC_CHECK_FUNCS([uselocale])\n \n+AC_CHECK_FUNC([fork])\n+\n SAVE_LIBRARY_VERSION\n AC_SUBST(LIBTOOL_VERSION_INFO)\n \ndiff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c\nindex 2b07eff9..4dc3ea26 100644\n--- a/src/pcm/pcm_direct.c\n+++ b/src/pcm/pcm_direct.c\n@@ -437,13 +437,21 @@ int snd_pcm_direct_server_create(snd_pcm_direct_t *dmix)\n \t\tclose(dmix->server_fd);\n \t\treturn ret;\n \t}\n-\t\n+\n+#ifdef HAVE_FORK\n \tret = fork();\n+#else\n+\tret = vfork();\n+#endif\n \tif (ret < 0) {\n \t\tclose(dmix->server_fd);\n \t\treturn ret;\n \t} else if (ret == 0) {\n+#ifdef HAVE_FORK\n \t\tret = fork();\n+#else\n+\t\tret = vfork();\n+#endif\n \t\tif (ret == 0)\n \t\t\tserver_job(dmix);\n \t\t_exit(EXIT_SUCCESS);\n-- \n2.14.3\n\n"
  },
  {
    "path": "package/alsa-lib/0002-fix-build-with-disable-ucm.patch",
    "content": "From 3fbaea3ff390d4c09adbf5d6ae62fb7b5f3f24f5 Mon Sep 17 00:00:00 2001\nFrom: Jaroslav Kysela <perex@perex.cz>\nDate: Mon, 28 Jun 2021 12:08:53 +0200\nSubject: [PATCH] fix build with --disable-ucm\n\nLink: https://mailman.alsa-project.org/pipermail/alsa-devel/2021-June/186729.html\nReported-by: Michael Forney <mforney@mforney.org>\nSigned-off-by: Jaroslav Kysela <perex@perex.cz>\nUpstream: f4f29d42be8b8ad60ea4c5697374adad4bfe6868\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n include/local.h | 10 ++++++++++\n 1 file changed, 10 insertions(+)\n\ndiff --git a/include/local.h b/include/local.h\nindex 4e7d88a0..7cfcec53 100644\n--- a/include/local.h\n+++ b/include/local.h\n@@ -374,6 +374,8 @@ int _snd_config_load_with_include(snd_config_t *config, snd_input_t *in,\n void *INTERNAL(snd_dlopen)(const char *name, int mode, char *errbuf, size_t errbuflen);\n #endif\n \n+#ifdef BUILD_UCM\n+\n const char *uc_mgr_alibcfg_by_device(snd_config_t **config, const char *name);\n \n static inline int _snd_is_ucm_device(const char *name)\n@@ -381,4 +383,12 @@ static inline int _snd_is_ucm_device(const char *name)\n \treturn name && name[0] == '_' && name[1] == 'u' && name[2] == 'c' && name[3] == 'm';\n }\n \n+#else\n+\n+static inline const char *uc_mgr_alibcfg_by_device(snd_config_t **config, const char *name) { return NULL; }\n+static inline int _snd_is_ucm_device(const char *name) { return 0; }\n+\n+\n+#endif\n+\n #endif\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/alsa-lib/0003-control-empty-fix-the-static-build.patch",
    "content": "From 81e7923fbfad45b2f353a4d6e3053af51f5f7d0b Mon Sep 17 00:00:00 2001\nFrom: Jaroslav Kysela <perex@perex.cz>\nDate: Tue, 15 Jun 2021 23:21:42 +0200\nSubject: [PATCH] control: empty - fix the static build\n\nReported-by: Jan Palus <atler@pld-linux.org>\nFixes: https://github.com/alsa-project/alsa-lib/issues/157\nSigned-off-by: Jaroslav Kysela <perex@perex.cz>\n\n[Retrieved from:\nhttps://github.com/alsa-project/alsa-lib/commit/81e7923fbfad45b2f353a4d6e3053af51f5f7d0b]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/control/control_empty.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/control/control_empty.c b/src/control/control_empty.c\nindex 49d1026c..c9b048c1 100644\n--- a/src/control/control_empty.c\n+++ b/src/control/control_empty.c\n@@ -30,7 +30,7 @@\n \n #ifndef PIC\n /* entry for static linking */\n-const char *_snd_module_ctl_empty = \"\";\n+const char *_snd_module_control_empty = \"\";\n #endif\n \n /*! \\page control_plugins\n"
  },
  {
    "path": "package/alsa-lib/Config.in",
    "content": "comment \"alsa-lib needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nmenuconfig BR2_PACKAGE_ALSA_LIB\n\tbool \"alsa-lib\"\n\t# Even though some parts of alsa-lib use threads only when\n\t# available, some PCM plugins use them unconditionally. Since\n\t# the usage of alsa-lib on no-thread systems is pretty\n\t# unlikely, just require thread support globally for alsa-lib.\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# Temporary until\n\t# https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4913\n\t# is fixed\n\tselect BR2_PACKAGE_ALSA_LIB_PCM\n\thelp\n\t  The Advanced Linux Sound Architecture (ALSA) provides audio\n\t  and MIDI functionality to the Linux operating system.\n\n\t  http://www.alsa-project.org/\n\nif BR2_PACKAGE_ALSA_LIB\n\nconfig BR2_PACKAGE_ALSA_LIB_PYTHON\n\tbool \"Python support for alsa-lib\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\thelp\n\t  Add python support for alsa-lib.\n\t  Python will be built and libpython will be installed\n\t  in the target directory\n\t  http://www.alsa-project.org/\n\nconfig BR2_PACKAGE_ALSA_LIB_DEVDIR\n\tstring \"directory with ALSA device files\"\n\tdefault \"/dev/snd\"\n\nconfig BR2_PACKAGE_ALSA_LIB_PCM_PLUGINS\n\tstring \"built PCM plugins\"\n\tdefault \"all\" if BR2_USE_MMU\n\tdefault \"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\n\nconfig BR2_PACKAGE_ALSA_LIB_CTL_PLUGINS\n\tstring \"built control plugins\"\n\tdefault \"all\"\n\nconfig BR2_PACKAGE_ALSA_LIB_ALOAD\n\tbool \"aload\"\n\tdefault y\n\nconfig BR2_PACKAGE_ALSA_LIB_MIXER\n\tbool \"mixer\"\n\tdefault y\n\nconfig BR2_PACKAGE_ALSA_LIB_PCM\n\tbool \"pcm\"\n\tdefault y\n\nconfig BR2_PACKAGE_ALSA_LIB_RAWMIDI\n\tbool \"rawmidi\"\n\tdefault y\n\nconfig BR2_PACKAGE_ALSA_LIB_HWDEP\n\tbool \"hwdep\"\n\tdefault y\n\nconfig BR2_PACKAGE_ALSA_LIB_SEQ\n\tbool \"seq\"\n\tdefault y\n\nconfig BR2_PACKAGE_ALSA_LIB_UCM\n\tbool \"ucm\"\n\tdefault y\n\tselect BR2_PACKAGE_ALSA_LIB_MIXER\n\nconfig BR2_PACKAGE_ALSA_LIB_ALISP\n\tbool \"alisp\"\n\tdefault y\n\tdepends on BR2_USE_MMU\n\nconfig BR2_PACKAGE_ALSA_LIB_OLD_SYMBOLS\n\tbool \"old-symbols\"\n\tdefault y\n\nendif\n"
  },
  {
    "path": "package/alsa-lib/alsa-lib.hash",
    "content": "# Locally calculated\nsha256  628421d950cecaf234de3f899d520c0a6923313c964ad751ffac081df331438e  alsa-lib-1.2.5.1.tar.bz2\nsha256  32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b  COPYING\nsha256  bfe16cf823bcff261fc6a062c07ee96660e3c39678f42f39a788a68dbc234ced  aserver/COPYING\n"
  },
  {
    "path": "package/alsa-lib/alsa-lib.mk",
    "content": "################################################################################\n#\n# alsa-lib\n#\n################################################################################\n\nALSA_LIB_VERSION = 1.2.5.1\nALSA_LIB_SOURCE = alsa-lib-$(ALSA_LIB_VERSION).tar.bz2\nALSA_LIB_SITE = https://www.alsa-project.org/files/pub/lib\nALSA_LIB_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (aserver)\nALSA_LIB_LICENSE_FILES = COPYING aserver/COPYING\nALSA_LIB_CPE_ID_VENDOR = alsa-project\nALSA_LIB_INSTALL_STAGING = YES\nALSA_LIB_CFLAGS = $(TARGET_CFLAGS)\nALSA_LIB_AUTORECONF = YES\nALSA_LIB_CONF_OPTS = \\\n\t--with-alsa-devdir=$(call qstrip,$(BR2_PACKAGE_ALSA_LIB_DEVDIR)) \\\n\t--with-pcm-plugins=\"$(call qstrip,$(BR2_PACKAGE_ALSA_LIB_PCM_PLUGINS))\" \\\n\t--with-ctl-plugins=\"$(call qstrip,$(BR2_PACKAGE_ALSA_LIB_CTL_PLUGINS))\" \\\n\t--without-versioned\n\n# Can't build with static & shared at the same time (1.0.25+)\nifeq ($(BR2_STATIC_LIBS),y)\nALSA_LIB_CONF_OPTS += \\\n\t--enable-shared=no \\\n\t--without-libdl\nelse\nALSA_LIB_CONF_OPTS += --enable-static=no\nendif\n\nifneq ($(BR2_PACKAGE_ALSA_LIB_ALOAD),y)\nALSA_LIB_CONF_OPTS += --disable-aload\nendif\nifneq ($(BR2_PACKAGE_ALSA_LIB_MIXER),y)\nALSA_LIB_CONF_OPTS += --disable-mixer\nendif\nifneq ($(BR2_PACKAGE_ALSA_LIB_PCM),y)\nALSA_LIB_CONF_OPTS += --disable-pcm\nendif\nifneq ($(BR2_PACKAGE_ALSA_LIB_RAWMIDI),y)\nALSA_LIB_CONF_OPTS += --disable-rawmidi\nendif\nifneq ($(BR2_PACKAGE_ALSA_LIB_HWDEP),y)\nALSA_LIB_CONF_OPTS += --disable-hwdep\nendif\nifneq ($(BR2_PACKAGE_ALSA_LIB_SEQ),y)\nALSA_LIB_CONF_OPTS += --disable-seq\nendif\nifneq ($(BR2_PACKAGE_ALSA_LIB_UCM),y)\nALSA_LIB_CONF_OPTS += --disable-ucm\nendif\nifneq ($(BR2_PACKAGE_ALSA_LIB_ALISP),y)\nALSA_LIB_CONF_OPTS += --disable-alisp\nendif\nifneq ($(BR2_PACKAGE_ALSA_LIB_OLD_SYMBOLS),y)\nALSA_LIB_CONF_OPTS += --disable-old-symbols\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB_PYTHON),y)\nALSA_LIB_CONF_OPTS += \\\n\t--enable-mixer-pymods\nifeq ($(BR2_PACKAGE_PYTHON),y)\nALSA_LIB_CONF_OPTS += \\\n\t--with-pythonlibs=-lpython$(PYTHON_VERSION_MAJOR) \\\n\t--with-pythonincludes=$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)\nALSA_LIB_CFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)\nALSA_LIB_DEPENDENCIES += python\nelse\nALSA_LIB_CONF_OPTS += \\\n\t--with-pythonlibs=-lpython$(PYTHON3_VERSION_MAJOR) \\\n\t--with-pythonincludes=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR)\nALSA_LIB_CFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR)\nALSA_LIB_DEPENDENCIES += python3\nendif\nelse\nALSA_LIB_CONF_OPTS += --disable-python\nendif\n\nALSA_LIB_CONF_ENV = \\\n\tCFLAGS=\"$(ALSA_LIB_CFLAGS)\" \\\n\tLDFLAGS=\"$(TARGET_LDFLAGS) -lm\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/alsa-plugins/Config.in",
    "content": "config BR2_PACKAGE_ALSA_PLUGINS\n\tbool \"alsa-plugins\"\n\tdepends on BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_HWDEP\n\thelp\n\t  Advanced Linux Sound Architecture Plugins\n\n\t  http://www.alsa-project.org/\n"
  },
  {
    "path": "package/alsa-plugins/alsa-plugins.hash",
    "content": "# Locally calculated\nsha256  42eef98433d2c8d11f1deeeb459643619215a75aa5a5bbdd06a794e4c413df20  alsa-plugins-1.2.5.tar.bz2\nsha256  32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b  COPYING\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING.GPL\n"
  },
  {
    "path": "package/alsa-plugins/alsa-plugins.mk",
    "content": "################################################################################\n#\n# alsa-plugins\n#\n################################################################################\n\nALSA_PLUGINS_VERSION = 1.2.5\nALSA_PLUGINS_SOURCE = alsa-plugins-$(ALSA_PLUGINS_VERSION).tar.bz2\nALSA_PLUGINS_SITE = https://www.alsa-project.org/files/pub/plugins\nALSA_PLUGINS_LICENSE = LGPL-2.1+\nALSA_PLUGINS_LICENSE_FILES = COPYING\nALSA_PLUGINS_DEPENDENCIES = host-pkgconf alsa-lib\n\nALSA_PLUGINS_CONF_OPTS = \\\n\t--disable-jack \\\n\t--disable-usbstream \\\n\t--disable-pulseaudio \\\n\t--disable-libav \\\n\t--disable-maemo-plugin \\\n\t--disable-maemo-resource-manager \\\n\t--with-speex=no\n\nifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y)\nALSA_PLUGINS_CONF_OPTS += --enable-samplerate\nALSA_PLUGINS_DEPENDENCIES += libsamplerate\nALSA_PLUGINS_LICENSE += , GPL-2.0+ (samplerate plugin)\nALSA_PLUGINS_LICENSE_FILES += COPYING.GPL\nelse\nALSA_PLUGINS_CONF_OPTS += --disable-samplerate\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/alsa-utils/Config.in",
    "content": "comment \"alsa-utils needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU # fork\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nmenuconfig BR2_PACKAGE_ALSA_UTILS\n\tbool \"alsa-utils\"\n\tdepends on BR2_USE_MMU # fork\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib\n\tselect BR2_PACKAGE_ALSA_LIB\n\thelp\n\t  This package contains the command line utilities for the ALSA\n\t  project.\n\n\t  http://www.alsa-project.org/\n\nif BR2_PACKAGE_ALSA_UTILS\n\nconfig BR2_PACKAGE_ALSA_UTILS_ALSACONF\n\tbool \"alsaconf\"\n\nconfig BR2_PACKAGE_ALSA_UTILS_ACONNECT\n\tbool \"aconnect\"\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\nconfig BR2_PACKAGE_ALSA_UTILS_ALSACTL\n\tbool \"alsactl\"\n\tdefault y\n\nconfig BR2_PACKAGE_ALSA_UTILS_ALSALOOP\n\tbool \"alsaloop\"\n\nconfig BR2_PACKAGE_ALSA_UTILS_ALSAMIXER\n\tbool \"alsamixer\"\n\tdefault y\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_ALSA_LIB_MIXER\n\ncomment \"alsamixer needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_ALSA_UTILS_ALSAUCM\n\tbool \"alsaucm\"\n\tselect BR2_PACKAGE_ALSA_LIB_UCM\n\nconfig BR2_PACKAGE_ALSA_UTILS_ALSATPLG\n\tbool \"alsatplg\"\n\nconfig BR2_PACKAGE_ALSA_UTILS_AMIDI\n\tbool \"amidi\"\n\tselect BR2_PACKAGE_ALSA_LIB_RAWMIDI\n\nconfig BR2_PACKAGE_ALSA_UTILS_AMIXER\n\tbool \"amixer\"\n\tselect BR2_PACKAGE_ALSA_LIB_MIXER\n\nconfig BR2_PACKAGE_ALSA_UTILS_APLAY\n\tbool \"aplay/arecord\"\n\tselect BR2_PACKAGE_ALSA_LIB_PCM\n\nconfig BR2_PACKAGE_ALSA_UTILS_APLAYMIDI\n\tbool \"aplaymidi\"\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\nconfig BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI\n\tbool \"arecordmidi\"\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\nconfig BR2_PACKAGE_ALSA_UTILS_ASEQDUMP\n\tbool \"aseqdump\"\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\nconfig BR2_PACKAGE_ALSA_UTILS_ASEQNET\n\tbool \"aseqnet\"\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\nconfig BR2_PACKAGE_ALSA_UTILS_BAT\n\tbool \"bat\"\n\thelp\n\t  ALSABAT (ALSA Basic Audio Tester) is a simple command-line\n\t  utility intended to help automate audio driver and sound\n\t  server testing with little human interaction.\n\n\t  Note that analysis support in alsabat requires fftw single\n\t  precision.\n\nconfig BR2_PACKAGE_ALSA_UTILS_IECSET\n\tbool \"iecset\"\n\tselect BR2_PACKAGE_ALSA_LIB_PCM\n\nconfig BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST\n\tbool \"speaker-test\"\n\tselect BR2_PACKAGE_ALSA_LIB_PCM\n\nendif\n"
  },
  {
    "path": "package/alsa-utils/alsa-utils.hash",
    "content": "# Locally calculated\nsha256  98ffc2d599de0577d423a48fa5f20a992ca0b82d812ed1f2e58ade49ac6da426  alsa-utils-1.2.4.tar.bz2\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/alsa-utils/alsa-utils.mk",
    "content": "################################################################################\n#\n# alsa-utils\n#\n################################################################################\n\nALSA_UTILS_VERSION = 1.2.4\nALSA_UTILS_SOURCE = alsa-utils-$(ALSA_UTILS_VERSION).tar.bz2\nALSA_UTILS_SITE = https://www.alsa-project.org/files/pub/utils\nALSA_UTILS_LICENSE = GPL-2.0\nALSA_UTILS_LICENSE_FILES = COPYING\nALSA_UTILS_INSTALL_STAGING = YES\nALSA_UTILS_DEPENDENCIES = host-pkgconf alsa-lib \\\n\t$(if $(BR2_PACKAGE_NCURSES),ncurses) \\\n\t$(if $(BR2_PACKAGE_LIBSAMPLERATE),libsamplerate) \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nifeq ($(BR2_PACKAGE_ALSA_UTILS_ALSACTL),y)\nALSA_UTILS_SELINUX_MODULES += alsa\nendif\n\nALSA_UTILS_CONF_ENV = \\\n\tac_cv_prog_ncurses5_config=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) \\\n\tLIBS=$(TARGET_NLS_LIBS)\n\nALSA_UTILS_CONF_OPTS = \\\n\t--disable-xmlto \\\n\t--disable-rst2man \\\n\t--with-curses=$(if $(BR2_PACKAGE_NCURSES_WCHAR),ncursesw,ncurses)\n\nifeq ($(BR2_PACKAGE_ALSA_UTILS_ALSALOOP),y)\nALSA_UTILS_CONF_OPTS += --enable-alsaloop\nelse\nALSA_UTILS_CONF_OPTS += --disable-alsaloop\nendif\n\nifneq ($(BR2_PACKAGE_ALSA_UTILS_ALSAMIXER),y)\nALSA_UTILS_CONF_OPTS += --disable-alsamixer\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_UTILS_BAT),y)\nALSA_UTILS_CONF_OPTS += --enable-bat\n# Analysis support requires fftw single precision\nALSA_UTILS_DEPENDENCIES += $(if $(BR2_PACKAGE_FFTW_SINGLE),fftw-single)\nelse\nALSA_UTILS_CONF_OPTS += --disable-bat\nendif\n\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACONF) += usr/sbin/alsaconf\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACTL) += usr/sbin/alsactl\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSALOOP) += usr/bin/alsaloop\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSAMIXER) += usr/bin/alsamixer\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSATPLG) += usr/bin/alsatplg\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_AMIDI) += usr/bin/amidi\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_AMIXER) += usr/bin/amixer\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_APLAY) += usr/bin/aplay usr/bin/arecord\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_BAT) += usr/bin/alsabat\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_IECSET) += usr/bin/iecset\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ACONNECT) += usr/bin/aconnect\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSAUCM) += usr/bin/alsaucm\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_APLAYMIDI) += usr/bin/aplaymidi\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI) += usr/bin/arecordmidi\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQDUMP) += usr/bin/aseqdump\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQNET) += usr/bin/aseqnet\nALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST) += usr/bin/speaker-test\n\ndefine ALSA_UTILS_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/var/lib/alsa\n\tfor i in $(ALSA_UTILS_TARGETS_y); do \\\n\t\t$(INSTALL) -D -m 755 $(STAGING_DIR)/$$i $(TARGET_DIR)/$$i || exit 1; \\\n\tdone\n\tif [ -x \"$(TARGET_DIR)/usr/bin/speaker-test\" ]; then \\\n\t\tmkdir -p $(TARGET_DIR)/usr/share/alsa/speaker-test; \\\n\t\tmkdir -p $(TARGET_DIR)/usr/share/sounds/alsa; \\\n\t\tcp -rdpf $(STAGING_DIR)/usr/share/alsa/speaker-test/* $(TARGET_DIR)/usr/share/alsa/speaker-test/; \\\n\t\tcp -rdpf $(STAGING_DIR)/usr/share/sounds/alsa/* $(TARGET_DIR)/usr/share/sounds/alsa/; \\\n\tfi\n\tif [ -x \"$(TARGET_DIR)/usr/sbin/alsactl\" ]; then \\\n\t\tmkdir -p $(TARGET_DIR)/usr/share/; \\\n\t\tcp -rdpf $(STAGING_DIR)/usr/share/alsa/ $(TARGET_DIR)/usr/share/alsa/; \\\n\tfi\nendef\n\nifeq ($(BR2_PACKAGE_ALSA_UTILS_ALSACTL)$(BR2_INIT_SYSTEMD),yy)\nALSA_UTILS_DEPENDENCIES += systemd\nALSA_UTILS_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system\ndefine ALSA_UTILS_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 $(@D)/alsactl/alsa-restore.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/alsa-restore.service\n\t$(INSTALL) -D -m 0644 $(@D)/alsactl/alsa-state.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/alsa-state.service\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/systemd/system/alsa-restore.service.d\n\tprintf '[Install]\\nWantedBy=multi-user.target\\n' \\\n\t\t>$(TARGET_DIR)/usr/lib/systemd/system/alsa-restore.service.d/buildroot-enable.conf\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/systemd/system/alsa-state.service.d\n\tprintf '[Install]\\nWantedBy=multi-user.target\\n' \\\n\t\t>$(TARGET_DIR)/usr/lib/systemd/system/alsa-state.service.d/buildroot-enable.conf;\nendef\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/alsamixergui/0001-misc-fixes.patch",
    "content": "--- a/configure.in\n+++ b/configure.in\n@@ -11,7 +11,10 @@\n AC_PROG_LN_S\n \n dnl Checks for libraries.\n-AC_CHECK_LIB(fltk,numericsort,,AC_MSG_ERROR(\"missing fltk\"))\n+AC_CHECK_LIB(fltk,numericsort,,\n+AC_CHECK_LIB(fltk,fl_numericsort,,\n+AC_MSG_ERROR(\"missing fltk\"))\n+)\n AM_PATH_ALSA(0.9.0)\n \n dnl Checks for header files.\n--- a/src/alsamixer.cxx\t2007-10-21 12:39:11.000000000 -0400\n+++ b/src/alsamixer.cxx\t2007-10-21 12:49:10.000000000 -0400\n@@ -2081,8 +2081,8 @@ static void\n mixer_signal_handler (int signal)\n {\n   if (signal != SIGSEGV)\n-    mixer_abort (ERR_SIGNAL, sys_siglist[signal], 0);\n-  else\n+  //  mixer_abort (ERR_SIGNAL, sys_siglist[signal], 0);\n+  //else\n     {\n       fprintf (stderr, \"\\nSegmentation fault.\\n\");\n       _exit (11);\n--- a/src/alsamixer.cxx\t2006-01-16 12:41:54.000000000 -0600\n+++ b/src/alsamixer.cxx\t2006-01-16 12:45:44.000000000 -0600\n@@ -653,8 +653,8 @@\n     if (vleft >= 0 && vright >= 0) {\n       if (joined) {\n #ifdef ALSAMIXER_GUI\n-\tfor (chn = snd_mixer_selem_channel_id_t(0); chn < SND_MIXER_SCHN_LAST; \n-\tsnd_mixer_selem_channel_id_t(int(chn)++))\n+\tfor (chn = snd_mixer_selem_channel_id_t(0); chn < SND_MIXER_SCHN_LAST;\n+\tsnd_mixer_selem_channel_id_t(int(chn)+1))\n #else\n \tfor (chn = 0; chn < SND_MIXER_SCHN_LAST; chn++)\n #endif\n"
  },
  {
    "path": "package/alsamixergui/0002-configure-fix-detection-of-fltk-libs.patch",
    "content": "From c154195fa161575363280aac9e928b7225f0de9e Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sun, 29 Dec 2019 17:42:13 +0100\nSubject: [PATCH] configure: fix detection of fltk libs\n\nChaining calls to AC_CHECK_LIB one in the other, breaks the configure\nscript, because some internal functions (e.g. ac_fn_c_try_link) would\nnot be defined before they are needed, leading the build to fail as\nthus:\n\n    checking for snd_tplg_new in -latopology... ./configure: line 4630:\n    ac_fn_c_try_link: command not found\n    no\n    configure: error: No linkable libatopology was found.\n\nUsing AC_CHECK_LIB() in sequence (i.e. one after the other) and\nmemorising the result is not trivial: AC_CHECK_LIB() implements a\nddefault action-if-found that append to LIBS, but not if the user\nptrovides their own action-if-found.\n\nInstead, AC_SEARH_LIBS() always append to LIBS, *and* run the\nuser-provided action.\n\nSo, we switch to AC_SEARCH_LIBS() and memorise the result for each\ntest, to eventually test if ether worked.\n\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n configure.in | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/configure.in b/configure.in\nindex 9307cc2..55f6864 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -11,10 +11,10 @@ AC_PROG_INSTALL\n AC_PROG_LN_S\n \n dnl Checks for libraries.\n-AC_CHECK_LIB(fltk,numericsort,,\n-AC_CHECK_LIB(fltk,fl_numericsort,,\n-AC_MSG_ERROR(\"missing fltk\"))\n-)\n+has_fltk=false\n+AC_SEARCH_LIBS(numericsort,fltk,has_fltk=true)\n+AC_SEARCH_LIBS(fl_numericsort,fltk,has_fltk=true)\n+AS_IF(test \"${has_fltk}\" = \"false\", AC_MSG_ERROR(\"missing fltk\"))\n AM_PATH_ALSA(0.9.0)\n \n dnl Checks for header files.\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/alsamixergui/Config.in",
    "content": "config BR2_PACKAGE_ALSAMIXERGUI\n\tbool \"alsamixergui\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU # fltk fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib\n\tselect BR2_PACKAGE_FLTK\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_PCM\n\tselect BR2_PACKAGE_ALSA_LIB_MIXER\n\thelp\n\t  A nice GUI mixer for Alsa using fltk\n\n\t  http://www.iua.upf.es/~mdeboer/projects/alsamixergui/\n\ncomment \"alsamixergui needs a toolchain w/ C++, threads\"\n\tdepends on BR2_PACKAGE_XORG7 && BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/alsamixergui/alsamixergui.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/a/alsamixergui/alsamixergui_0.9.0rc2-1-9.dsc\nmd5\taf942a41b81ba27e2e4d0a1e1ab0decb  alsamixergui_0.9.0rc2-1.orig.tar.gz\n# locally computed\nsha256  ea617b76dcd0df74576686ca34c281f43bb9d844015cea91e3debc91538d2b1d  debian/copyright\n"
  },
  {
    "path": "package/alsamixergui/alsamixergui.mk",
    "content": "################################################################################\n#\n# alsamixergui\n#\n################################################################################\n\nALSAMIXERGUI_VERSION = 0.9.0rc2-1\nALSAMIXERGUI_SOURCE = alsamixergui_$(ALSAMIXERGUI_VERSION).orig.tar.gz\nALSAMIXERGUI_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/a/alsamixergui\nALSAMIXERGUI_LICENSE = GPL-2.0+\nALSAMIXERGUI_LICENSE_FILES = debian/copyright\nALSAMIXERGUI_AUTORECONF = YES\n\nALSAMIXERGUI_DEPENDENCIES = fltk alsa-lib\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/altera-stapl/Config.in",
    "content": "config BR2_PACKAGE_ALTERA_STAPL\n\tbool \"altera-stapl\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 # libgpiod\n\tselect BR2_PACKAGE_LIBGPIOD\n\thelp\n\t  Altera Jam STAPL Bytecode Player.\n\n\t  https://github.com/kontron/altera-stapl\n"
  },
  {
    "path": "package/altera-stapl/altera-stapl.hash",
    "content": "sha256  a4d85a79790eab851399132fce4524979fe764d5297413b2445673e6a190bb42  altera-stapl-0.3.3.tar.gz\nsha256  d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388  COPYING\n"
  },
  {
    "path": "package/altera-stapl/altera-stapl.mk",
    "content": "################################################################################\n#\n# altera-stapl\n#\n################################################################################\n\nALTERA_STAPL_VERSION = 0.3.3\nALTERA_STAPL_SITE = $(call github,kontron,altera-stapl,$(ALTERA_STAPL_VERSION))\nALTERA_STAPL_LICENSE = GPLv2+\nALTERA_STAPL_LICENSE_FILES = COPYING\nALTERA_STAPL_DEPENDENCIES = libgpiod\n\ndefine ALTERA_STAPL_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all\nendef\n\ndefine ALTERA_STAPL_INSTALL_TARGET_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/alure/Config.in",
    "content": "config BR2_PACKAGE_ALURE\n\tbool \"alure\"\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal\n\tdepends on BR2_USE_WCHAR # use wchar_t\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future\n\tselect BR2_PACKAGE_OPENAL\n\thelp\n\t  Alure is a C++ 3D audio API. It uses OpenAL for audio\n\t  rendering, and provides common higher-level features such as\n\t  file loading and decoding, buffer caching, background\n\t  streaming, and source management for virtually unlimited\n\t  sound source handles.\n\n\t  https://kcat.strangesoft.net/alure.html\n\nif BR2_PACKAGE_ALURE\n\nconfig BR2_PACKAGE_ALURE_FLAC_DECODER\n\tbool \"flac decoder\"\n\thelp\n\t  Enables the built-in FLAC decoder.\n\nconfig BR2_PACKAGE_ALURE_MINIMP3_DECODER\n\tbool \"minimp3 decoder\"\n\thelp\n\t  Enables the built-in minimp3 decoder.\n\nconfig BR2_PACKAGE_ALURE_OPUS_DECODER\n\tbool \"opus decoder\"\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_OPUS\n\thelp\n\t  Enables the built-in libopusfile decoder.\n\nconfig BR2_PACKAGE_ALURE_SNDFILE_DECODER\n\tbool \"sndfile decoder\"\n\tselect BR2_PACKAGE_LIBSNDFILE\n\thelp\n\t  Enables the built-in libsndfile decoder.\n\nconfig BR2_PACKAGE_ALURE_VORBIS_DECODER\n\tbool \"vorbis decoder\"\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_LIBVORBIS\n\thelp\n\t  Enables the built-in libvorbis decoder.\n\nendif\n\ncomment \"alure needs a toolchain w/ C++, gcc >= 4.9, NPTL, wchar\"\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR\n\ncomment \"alure needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/alure/alure.hash",
    "content": "# Locally computed\nsha256 9b808e5b5a54d156348221dc86704c7831115047d5238691e6088f8c4814b2ca  alure-14beed2a86d5a36030e907b21c46614d505f07cd.tar.gz\nsha256 7331ddc67daaf1a283c81e8dc17bac8dc40f54ed3fab3d3964616f4bd502a0a3  LICENSE\n"
  },
  {
    "path": "package/alure/alure.mk",
    "content": "################################################################################\n#\n# alure\n#\n################################################################################\n\nALURE_VERSION = 14beed2a86d5a36030e907b21c46614d505f07cd\nALURE_SITE = $(call github,kcat,alure,$(ALURE_VERSION))\nALURE_LICENSE = Zlib, Public Domain (src/decoders/dr_flac.h)\nALURE_LICENSE_FILES = LICENSE\nALURE_INSTALL_STAGING = YES\n\nALURE_DEPENDENCIES = openal\n\n# Disabling alure examples remove the dependecies on physfs and dump libraries.\n# Enable at least one built-in decoder (wave).\nALURE_CONF_OPTS = -DALURE_INSTALL=ON \\\n\t-DALURE_BUILD_EXAMPLES=OFF \\\n\t-DALURE_ENABLE_WAVE=ON\n\nifeq ($(BR2_PACKAGE_ALURE_FLAC_DECODER),y)\nALURE_CONF_OPTS += -DALURE_ENABLE_FLAC=ON\nelse\nALURE_CONF_OPTS += -DALURE_ENABLE_FLAC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ALURE_MINIMP3_DECODER),y)\nALURE_CONF_OPTS += -DALURE_ENABLE_MINIMP3=ON\nelse\nALURE_CONF_OPTS += -DALURE_ENABLE_MINIMP3=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ALURE_OPUS_DECODER),y)\nALURE_CONF_OPTS += -DALURE_ENABLE_OPUS=ON\nALURE_DEPENDENCIES += libogg opus\nelse\nALURE_CONF_OPTS += -DALURE_ENABLE_OPUS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ALURE_SNDFILE_DECODER),y)\nALURE_CONF_OPTS += -DALURE_ENABLE_SNDFILE=ON\nALURE_DEPENDENCIES += libsndfile\nelse\nALURE_CONF_OPTS += -DALURE_ENABLE_SNDFILE=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ALURE_VORBIS_DECODER),y)\nALURE_CONF_OPTS += -DALURE_ENABLE_VORBIS=ON\nALURE_DEPENDENCIES += libogg libvorbis\nelse\nALURE_CONF_OPTS += -DALURE_ENABLE_VORBIS=OFF\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nALURE_CONF_OPTS += -DALURE_BUILD_SHARED=OFF \\\n\t-DALURE_BUILD_STATIC=ON\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nALURE_CONF_OPTS += -DALURE_BUILD_SHARED=ON \\\n\t-DALURE_BUILD_STATIC=ON\nelse\nALURE_CONF_OPTS += -DALURE_BUILD_SHARED=ON \\\n\t-DALURE_BUILD_STATIC=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/am335x-pru-package/0001-install-does-not-build.patch",
    "content": "Makefile: do not force the release build on install\n\nIf we did build any of the other targets, and are just interested\nin those and not the release one, we still want to use the 'install'\nrule, but not build (and install) the release libraries.\n\nSo, remove the dependency on the 'release' target from the 'install'\nrule.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea.orig/pru_sw/app_loader/interface/Makefile am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea/pru_sw/app_loader/interface/Makefile\n--- am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea.orig/pru_sw/app_loader/interface/Makefile\t2014-08-18 00:24:36.000000000 +0200\n+++ am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea/pru_sw/app_loader/interface/Makefile\t2014-10-12 11:39:17.144682697 +0200\n@@ -38,7 +38,7 @@\n \n all:\tdebug release sodebug sorelease\n \n-install: release\n+install:\n \tinstall -m 0755 -d $(DESTDIR)$(PREFIX)/lib\n \tinstall -m 0755 -d $(DESTDIR)$(PREFIX)/include\n \tinstall -m 0644 $(LIBDIR)/* $(DESTDIR)$(PREFIX)/lib\n"
  },
  {
    "path": "package/am335x-pru-package/Config.in",
    "content": "config BR2_PACKAGE_AM335X_PRU_PACKAGE\n\tbool \"am335x-pru-package\"\n\tdepends on BR2_arm # only relevant for TI am335x\n\thelp\n\t  TI AM335X PRU program loader\n\n\t  https://github.com/beagleboard/am335x_pru_package\n"
  },
  {
    "path": "package/am335x-pru-package/am335x-pru-package.hash",
    "content": "# Locally computed\nsha256  2a902f825ccc1885c5dccd83e1ccee104aa30e601c9964a24f49459f76f674b9  am335x-pru-package-5f374ad57cc195f28bf5e585c3d446aba6ee7096.tar.gz\nsha256  f0fcdf9b2090896389eb4b784f23be96d5544c5ce5282d84f82ae9a8e8331beb  pru_sw/utils/LICENCE.txt\n"
  },
  {
    "path": "package/am335x-pru-package/am335x-pru-package.mk",
    "content": "################################################################################\n#\n# am335x-pru-package\n#\n################################################################################\n\nAM335X_PRU_PACKAGE_VERSION = 5f374ad57cc195f28bf5e585c3d446aba6ee7096\nAM335X_PRU_PACKAGE_SITE = $(call github,beagleboard,am335x_pru_package,$(AM335X_PRU_PACKAGE_VERSION))\nAM335X_PRU_PACKAGE_LICENSE = BSD-3-Clause\nAM335X_PRU_PACKAGE_LICENSE_FILES = pru_sw/utils/LICENCE.txt\nAM335X_PRU_PACKAGE_DEPENDENCIES = host-am335x-pru-package\nAM335X_PRU_PACKAGE_INSTALL_STAGING = YES\n\n# The default 'all' rule builds everything, when we just need the library\nifeq ($(BR2_ENABLE_DEBUG),y)\nAM335X_PRU_PACKAGE_MAKE_TARGET = debug $(if $(BR2_STATIC_LIBS),,sodebug)\nelse\nAM335X_PRU_PACKAGE_MAKE_TARGET = release $(if $(BR2_STATIC_LIBS),,sorelease)\nendif\n\ndefine AM335X_PRU_PACKAGE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\t\t-C $(@D)/pru_sw/app_loader/interface $(AM335X_PRU_PACKAGE_MAKE_TARGET)\nendef\n\n# 'install' installs whatever was built, and our patch removes the dependency\n# on the release build, so we can use it to install whatever we built above.\ndefine AM335X_PRU_PACKAGE_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) DESTDIR=\"$(STAGING_DIR)\" PREFIX=\"/usr\" \\\n\t\t-C $(@D)/pru_sw/app_loader/interface install\nendef\n\ndefine AM335X_PRU_PACKAGE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) DESTDIR=\"$(TARGET_DIR)\" PREFIX=\"/usr\" \\\n\t\t-C $(@D)/pru_sw/app_loader/interface install\nendef\n\n# The debug libraries are named differently than the release ones,\n# so we must provide a symlink to still be able to link with them.\nifeq ($(BR2_ENABLE_DEBUG),y)\n\ndefine AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_STATIC\n\tln -sf libprussdrvd.a $(STAGING_DIR)/usr/lib/libprussdrv.a\nendef\nAM335X_PRU_PACKAGE_POST_INSTALL_STAGING_HOOKS += AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_STATIC\n\nifeq ($(BR2_STATIC_LIBS),)\n\ndefine AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_SHARED\n\tln -sf libprussdrvd.so $(STAGING_DIR)/usr/lib/libprussdrv.so\nendef\nAM335X_PRU_PACKAGE_POST_INSTALL_STAGING_HOOKS += AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_SHARED\n\ndefine AM335X_PRU_PACKAGE_LN_DEBUG_TARGET\n\tln -sf libprussdrvd.so $(TARGET_DIR)/usr/lib/libprussdrv.so\nendef\nAM335X_PRU_PACKAGE_POST_INSTALL_TARGET_HOOKS += AM335X_PRU_PACKAGE_LN_DEBUG_TARGET\n\nendif # !STATIC\n\nendif # DEBUG\n\ndefine HOST_AM335X_PRU_PACKAGE_BUILD_CMDS\n\tcd $(@D)/pru_sw/utils/pasm_source; \\\n\t$(HOSTCC) -Wall -D_UNIX_ pasm.c pasmpp.c pasmexp.c pasmop.c \\\n\t\tpasmdot.c pasmstruct.c pasmmacro.c path_utils.c -o ../pasm\nendef\n\ndefine HOST_AM335X_PRU_PACKAGE_INSTALL_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/pru_sw/utils/pasm $(HOST_DIR)/bin/pasm\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/am33x-cm3/0001-fix-makefile.patch",
    "content": "Enforce correct -march option\n\nBuildroot uses a normal ARM compiler to build the AM33X CM3 firmware\n(which runs on a Cortex-M3 processor), but Buildroot will have a\ndefault -march value that doesn't necessarily match the one needed for\nCortex-M3, leading to build failures (gcc complains that the\n-mcpu=cortex-m3 option being passed is not compatible with the\nselected -march).\n\nFix this by explicitly indicating -march=armv7-m.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nUpdated the patch to the latest version of the Makefile\n\nSigned-off-by: Anders Darander <anders@chargestorm.se>\n\nIndex: b/Makefile\n===================================================================\n--- a/Makefile\n+++ b/Makefile\n@@ -13,7 +13,7 @@ SRCDIR = src\n BINDIR = bin\n \n INCLUDES = $(SRCDIR)/include\n-CFLAGS =-mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \\\n+CFLAGS =-march=armv7-m -mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \\\n \t-Werror-implicit-function-declaration -Wstrict-prototypes \\\n \t-Wdeclaration-after-statement -fno-delete-null-pointer-checks \\\n \t-Wempty-body -fno-strict-overflow  -g -I$(INCLUDES) -O2\n"
  },
  {
    "path": "package/am33x-cm3/0002-Makefile-unconditionally-disable-SSP.patch",
    "content": "From 6c3b05b74ccd49d8ba246bfef0c2e549b9f2bf7b Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 29 Oct 2019 16:14:18 +0100\nSubject: [PATCH] Makefile: unconditionally disable SSP\n\nThough -nostdlib is passed in $(CFLAGS), -fno-stack-protector must also be\npassed to avoid linking errors related to undefined references to\n'__stack_chk_guard' and '__stack_chk_fail' if toolchain enforces\n-fstack-protector.\n\nFixes:\n - http://autobuild.buildroot.net/results/3a3a21f3c35ea025e9b93e09c2454aed0ad31034\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex c3ec071..5226006 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -16,7 +16,8 @@ INCLUDES = $(SRCDIR)/include\n CFLAGS =-march=armv7-m -mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \\\n \t-Werror-implicit-function-declaration -Wstrict-prototypes \\\n \t-Wdeclaration-after-statement -fno-delete-null-pointer-checks \\\n-\t-Wempty-body -fno-strict-overflow  -g -I$(INCLUDES) -O2\n+\t-Wempty-body -fno-strict-overflow -fno-stack-protector \\\n+\t-g -I$(INCLUDES) -O2\n LDFLAGS =-nostartfiles -fno-exceptions -Tfirmware.ld\n \n EXECUTABLE=am335x-pm-firmware.elf\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/am33x-cm3/0003-Makefile-unconditionally-disable-PIE.patch",
    "content": "From 0e8c3c4851ce64268a8ae1810ef72594251d917d Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 10 Nov 2019 21:57:12 +0100\nSubject: [PATCH] Makefile: unconditionally disable PIE\n\nThough -nostdlib is passed in $(CFLAGS), -fno-pie must also be passed to\navoid linking errors related to overlapping sections if toolchain\nenforces PIE.\n\nFixes:\n - http://autobuild.buildroot.org/results/418a40b995e91bc66e692dfbc4b0521db3fa5fbb\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 5226006..fe3d844 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -17,7 +17,7 @@ CFLAGS =-march=armv7-m -mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \\\n \t-Werror-implicit-function-declaration -Wstrict-prototypes \\\n \t-Wdeclaration-after-statement -fno-delete-null-pointer-checks \\\n \t-Wempty-body -fno-strict-overflow -fno-stack-protector \\\n-\t-g -I$(INCLUDES) -O2\n+\t-fno-pie -g -I$(INCLUDES) -O2\n LDFLAGS =-nostartfiles -fno-exceptions -Tfirmware.ld\n \n EXECUTABLE=am335x-pm-firmware.elf\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/am33x-cm3/0004-Makefile-add-fno-builtin.patch",
    "content": "From 25fc567ba8a0cd199e48bfa82863247d953784ea Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 30 Aug 2020 20:59:29 +0200\nSubject: [PATCH] Makefile: add -fno-builtin\n\nBuild with gcc 10 fails on:\n\n/srv/storage/autobuild/run/instance-2/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: src/foundation/startup.o: in function `reset_handler':\n/srv/storage/autobuild/run/instance-2/output-1/build/am33x-cm3-11107db2f1e9e58ee75d4fe9cc38423c9a6e4365/src/foundation/startup.c:177: undefined reference to `memcpy'\n\nThis is due to the fact that gcc 10 replaces the following statement by\na memcpy call:\n\n*puldest++ = *pulsrc++;\n\nTo fix this build failure, add -fno-builtin\n\nFixes:\n - http://autobuild.buildroot.org/results/a991e6efa012df518ff1bb35017ad2c96c8feedc\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex fe3d844..fa24d4b 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -17,7 +17,7 @@ CFLAGS =-march=armv7-m -mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \\\n \t-Werror-implicit-function-declaration -Wstrict-prototypes \\\n \t-Wdeclaration-after-statement -fno-delete-null-pointer-checks \\\n \t-Wempty-body -fno-strict-overflow -fno-stack-protector \\\n-\t-fno-pie -g -I$(INCLUDES) -O2\n+\t-fno-pie -fno-builtin -g -I$(INCLUDES) -O2\n LDFLAGS =-nostartfiles -fno-exceptions -Tfirmware.ld\n \n EXECUTABLE=am335x-pm-firmware.elf\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/am33x-cm3/Config.in",
    "content": "config BR2_PACKAGE_AM33X_CM3\n\tbool \"am33x-cm3\"\n\tdepends on BR2_arm # only relevant for TI am335x\n\tdepends on BR2_BINFMT_ELF # assumes the compiler builds ELF file\n\thelp\n\t  Cortex-M3 binary blob for suspend-resume on am335x\n\n\t  http://arago-project.org/git/projects/am33x-cm3.git\n"
  },
  {
    "path": "package/am33x-cm3/S93-am335x-pm-firmware-load",
    "content": "#!/bin/sh\n\n# Load the PM CM3 firmware\necho 1 > /sys/devices/ocp.2/44d00000.wkup_m3/firmware/am335x-pm-firmware.bin/loading\ncat /lib/firmware/am335x-pm-firmware.bin > /sys/devices/ocp.2/44d00000.wkup_m3/firmware/am335x-pm-firmware.bin/data\necho 0 > /sys/devices/ocp.2/44d00000.wkup_m3/firmware/am335x-pm-firmware.bin/loading\n"
  },
  {
    "path": "package/am33x-cm3/am33x-cm3.hash",
    "content": "# Locally computed\nsha256  c0b11d7ed2300172354f2948e858ddb5cae19d084bd1ab6d48cfa7b6bfa13261  am33x-cm3-11107db2f1e9e58ee75d4fe9cc38423c9a6e4365-br1.tar.gz\nsha256  e136e6949a1d3ca144374375af8b9387faa11d2eee7debff8cf22ca8fe7bf7e9  License.txt\n"
  },
  {
    "path": "package/am33x-cm3/am33x-cm3.mk",
    "content": "################################################################################\n#\n# am33x-cm3\n#\n################################################################################\n\n# This should correpsond to v05.00.00.02\nAM33X_CM3_VERSION = 11107db2f1e9e58ee75d4fe9cc38423c9a6e4365\nAM33X_CM3_SITE = http://arago-project.org/git/projects/am33x-cm3.git\nAM33X_CM3_SITE_METHOD = git\nAM33X_CM3_LICENSE = TI Publicly Available Software License\nAM33X_CM3_LICENSE_FILES = License.txt\n\n# The build command below will use the standard cross-compiler (normally\n# build for Cortex-A8, to build the FW for the Cortex-M3.\ndefine AM33X_CM3_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" CROSS_COMPILE=\"$(TARGET_CROSS)\" -C $(@D) all\nendef\n\n# Not all of the firmware files are used\ndefine AM33X_CM3_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/bin/am335x-pm-firmware.bin \\\n\t\t$(TARGET_DIR)/lib/firmware/am335x-pm-firmware.bin\nendef\n\ndefine AM33X_CM3_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/am33x-cm3/S93-am335x-pm-firmware-load \\\n\t\t$(TARGET_DIR)/etc/init.d/S93-am335x-pm-firmware-load\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/android-tools/0001-Fix-makefiles-for-out-of-tree-build.patch",
    "content": "[PATCH] Fix makefiles for out-of-tree build\n\nSigned-off-by: Gary Bisson <gary.bisson@boundarydevices.com>\n---\n debian/makefiles/adb.mk      | 10 +++++-----\n debian/makefiles/adbd.mk     | 33 ++++++++++++++++-----------------\n debian/makefiles/fastboot.mk | 17 +++++++++--------\n 3 files changed, 30 insertions(+), 30 deletions(-)\n\ndiff --git a/debian/makefiles/adb.mk b/debian/makefiles/adb.mk\nindex d9d4feb..654b9f1 100644\n--- a/debian/makefiles/adb.mk\n+++ b/debian/makefiles/adb.mk\n@@ -1,5 +1,6 @@\n # Makefile for adb; from https://heiher.info/2227.html\n \n+VPATH+= $(SRCDIR)/core/adb\n SRCS+= adb.c\n SRCS+= adb_client.c\n SRCS+= adb_auth_host.c\n@@ -17,7 +18,7 @@ SRCS+= usb_linux.c\n SRCS+= usb_vendors.c\n SRCS+= utils.c\n \n-VPATH+= ../libcutils\n+VPATH+= $(SRCDIR)/core/libcutils\n SRCS+= abort_socket.c\n SRCS+= socket_inaddr_any_server.c\n SRCS+= socket_local_client.c\n@@ -28,7 +29,7 @@ SRCS+= socket_network_client.c\n SRCS+= list.c\n SRCS+= load_file.c\n \n-VPATH+= ../libzipfile\n+VPATH+= $(SRCDIR)/core/libzipfile\n SRCS+= centraldir.c\n SRCS+= zipfile.c\n \n@@ -37,9 +38,8 @@ CPPFLAGS+= -DADB_HOST=1\n CPPFLAGS+= -DHAVE_FORKEXEC=1\n CPPFLAGS+= -DHAVE_SYMLINKS\n CPPFLAGS+= -DHAVE_TERMIO_H\n-CPPFLAGS+= -I.\n-CPPFLAGS+= -I../include\n-CPPFLAGS+= -I../../../external/zlib\n+CPPFLAGS+= -I$(SRCDIR)/core/adb\n+CPPFLAGS+= -I$(SRCDIR)/core/include\n \n LIBS+= -lc -lpthread -lz -lcrypto\n \ndiff --git a/debian/makefiles/adbd.mk b/debian/makefiles/adbd.mk\nindex 94d3a90..49dab8c 100644\n--- a/debian/makefiles/adbd.mk\n+++ b/debian/makefiles/adbd.mk\n@@ -1,18 +1,6 @@\n # Makefile for adbd\n \n-VPATH+= ../libcutils\n-SRCS+= abort_socket.c\n-SRCS+= socket_inaddr_any_server.c\n-SRCS+= socket_local_client.c\n-SRCS+= socket_local_server.c\n-SRCS+= socket_loopback_client.c\n-SRCS+= socket_loopback_server.c\n-SRCS+= socket_network_client.c\n-SRCS+= list.c\n-SRCS+= load_file.c\n-SRCS+= android_reboot.c\n-\n-#VPATH+= ../adb\n+VPATH+= $(SRCDIR)/core/adbd\n SRCS+=  adb.c\n SRCS+=\tbackup_service.c\n SRCS+=\tfdevent.c\n@@ -31,7 +19,19 @@ SRCS+=\tlog_service.c\n SRCS+=\tutils.c\n SRCS+=\tbase64.c\n \n-VPATH+= ../libzipfile\n+VPATH+= $(SRCDIR)/core/libcutils\n+SRCS+= abort_socket.c\n+SRCS+= socket_inaddr_any_server.c\n+SRCS+= socket_local_client.c\n+SRCS+= socket_local_server.c\n+SRCS+= socket_loopback_client.c\n+SRCS+= socket_loopback_server.c\n+SRCS+= socket_network_client.c\n+SRCS+= list.c\n+SRCS+= load_file.c\n+SRCS+= android_reboot.c\n+\n+VPATH+= $(SRCDIR)/core/libzipfile\n SRCS+= centraldir.c\n SRCS+= zipfile.c\n \n@@ -40,10 +40,9 @@ CPPFLAGS+= -O2 -g -Wall -Wno-unused-parameter\n CPPFLAGS+= -DADB_HOST=0 -DHAVE_FORKEXEC=1 -D_XOPEN_SOURCE -D_GNU_SOURCE -DALLOW_ADBD_ROOT=1\n CPPFLAGS+= -DHAVE_SYMLINKS -DBOARD_ALWAYS_INSECURE\n CPPFLAGS+= -DHAVE_TERMIO_H\n-CPPFLAGS+= -I.\n-CPPFLAGS+= -I../include\n-CPPFLAGS+= -I../../../external/zlib\n CPPFLAGS+= `pkg-config --cflags glib-2.0 gio-2.0`\n+CPPFLAGS+= -I$(SRCDIR)/core/adbd\n+CPPFLAGS+= -I$(SRCDIR)/core/include\n \n LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0`\n \ndiff --git a/debian/makefiles/fastboot.mk b/debian/makefiles/fastboot.mk\nindex 9e8b751..94a069b 100644\n--- a/debian/makefiles/fastboot.mk\n+++ b/debian/makefiles/fastboot.mk\n@@ -1,5 +1,6 @@\n # Makefile for fastboot; from https://heiher.info/2227.html\n \n+VPATH+= $(SRCDIR)/core/fastboot\n SRCS+= bootimg.c\n SRCS+= engine.c\n SRCS+= fastboot.c\n@@ -7,11 +8,11 @@ SRCS+= protocol.c\n SRCS+= usb_linux.c\n SRCS+= util_linux.c\n \n-VPATH+= ../libzipfile\n+VPATH+= $(SRCDIR)/core/libzipfile\n SRCS+= centraldir.c\n SRCS+= zipfile.c\n \n-VPATH+= ../libsparse\n+VPATH+= $(SRCDIR)/core/libsparse\n SRCS+= backed_block.c\n SRCS+= sparse_crc32.c\n SRCS+= sparse.c\n@@ -19,7 +20,7 @@ SRCS+= sparse_read.c\n SRCS+= sparse_err.c\n SRCS+= output_file.c\n \n-VPATH+= ../../extras/ext4_utils/\n+VPATH+= $(SRCDIR)/extras/ext4_utils/\n SRCS+= make_ext4fs.c\n SRCS+= crc16.c\n SRCS+= ext4_utils.c\n@@ -31,11 +32,11 @@ SRCS+= extent.c\n SRCS+= wipe.c\n SRCS+= sha1.c\n \n-CPPFLAGS+= -I.\n-CPPFLAGS+= -I../include\n-CPPFLAGS+= -I../mkbootimg\n-CPPFLAGS+= -I../../extras/ext4_utils/\n-CPPFLAGS+= -I../libsparse/include/\n+CPPFLAGS+= -I$(SRCDIR)/core/fastboot\n+CPPFLAGS+= -I$(SRCDIR)/core/include\n+CPPFLAGS+= -I$(SRCDIR)/core/mkbootimg\n+CPPFLAGS+= -I$(SRCDIR)/extras/ext4_utils/\n+CPPFLAGS+= -I$(SRCDIR)/core/libsparse/include/\n \n LIBS+= -lz -lselinux\n \n-- \n2.5.1\n\n"
  },
  {
    "path": "package/android-tools/0002-Fix-adbd-for-non-Ubuntu-systems.patch",
    "content": "[PATCH] Fix adbd for non-Ubuntu systems\n\nRemove glib/dbus dependencies and partially restore services.c to be\ncloser to the original source code in order to run on systems without\nsudo.\n\nSigned-off-by: Gary Bisson <gary.bisson@boundarydevices.com>\n---\n core/adbd/adb.c          |   1 -\n core/adbd/services.c     | 160 ++++-------------------------------------------\n debian/makefiles/adbd.mk |   4 +-\n 3 files changed, 14 insertions(+), 151 deletions(-)\n\ndiff --git a/core/adbd/adb.c b/core/adbd/adb.c\nindex d90e6b8..7fe6445 100644\n--- a/core/adbd/adb.c\n+++ b/core/adbd/adb.c\n@@ -1165,7 +1165,6 @@ void build_local_name(char* target_str, size_t target_size, int server_port)\n \n #if !ADB_HOST\n static int should_drop_privileges() {\n-    return 1;\n #ifndef ALLOW_ADBD_ROOT\n     return 1;\n #else /* ALLOW_ADBD_ROOT */\ndiff --git a/core/adbd/services.c b/core/adbd/services.c\nindex 05bd0d0..5adcefe 100644\n--- a/core/adbd/services.c\n+++ b/core/adbd/services.c\n@@ -20,15 +20,6 @@\n #include <string.h>\n #include <errno.h>\n #include <pwd.h>\n-#include <glib.h>\n-#include <gio/gio.h>\n-\n-#define UNITY_SERVICE \"com.canonical.UnityGreeter\"\n-#define GREETER_OBJ \"/\"\n-#define GREETER_INTERFACE \"com.canonical.UnityGreeter\"\n-#define PROPERTIES_INTERFACE \"org.freedesktop.DBus.Properties\"\n-#define ACTIVE_PROPERTY \"IsActive\"\n-#define UNLOCK_PATH \"/userdata/.adb_onlock\"\n \n #include \"sysdeps.h\"\n \n@@ -268,11 +259,11 @@ static int create_service_thread(void (*func)(int, void *), void *cookie)\n }\n \n #if !ADB_HOST\n-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)\n+static int create_subprocess(const char *cmd, const char *arg0, const char *arg1, pid_t *pid)\n {\n #ifdef HAVE_WIN32_PROC\n-    D(\"create_subprocess(cmd=%s, arg0=%s, arg1=%s, arg2=%s, arg3=%, arg4=%ss)\\n\", cmd, arg0, arg1, arg2, arg3, arg4);\n-    fprintf(stderr, \"error: create_subprocess not implemented on Win32 (%s %s %s %s %s %s)\\n\", cmd, arg0, arg1, arg2, arg3, arg4);\n+    D(\"create_subprocess(cmd=%s, arg0=%s, arg1=%s)\\n\", cmd, arg0, arg1);\n+    fprintf(stderr, \"error: create_subprocess not implemented on Win32 (%s %s %s)\\n\", cmd, arg0, arg1);\n     return -1;\n #else /* !HAVE_WIN32_PROC */\n     char *devname;\n@@ -327,7 +318,7 @@ static int create_subprocess(const char *cmd, const char *arg0, const char *arg1\n         } else {\n            D(\"adb: unable to open %s\\n\", text);\n         }\n-\texecl(cmd, cmd, arg0, arg1, arg2, arg3, arg4, NULL);\n+        execl(cmd, cmd, arg0, arg1, NULL);\n         fprintf(stderr, \"- exec '%s' failed: %s (%d) -\\n\",\n                 cmd, strerror(errno), errno);\n         exit(-1);\n@@ -342,7 +333,7 @@ static int create_subprocess(const char *cmd, const char *arg0, const char *arg1\n }\n #endif  /* !ABD_HOST */\n \n-#if ADB_HOST\n+#if ADB_HOST || ADBD_NON_ANDROID\n #define SHELL_COMMAND \"/bin/sh\"\n #else\n #define SHELL_COMMAND \"/system/bin/sh\"\n@@ -380,139 +371,16 @@ static void subproc_waiter_service(int fd, void *cookie)\n     }\n }\n \n-int is_phone_locked() {\n-    GError *error = NULL;\n-    GVariant *variant = NULL;\n-    GDBusConnection *connection = NULL;\n-\n-    if (g_file_test(UNLOCK_PATH, G_FILE_TEST_EXISTS)) {\n-        D(\"unlock path present.\");\n-        return 0;\n-    }\n-\n-    // check if the environment variable is present, if not we grab it from\n-    // the phablet user\n-    if (g_getenv(\"DBUS_SESSION_BUS_ADDRESS\") == NULL) {\n-        D(\"DBUS_SESSION_BUS_ADDRESS missing.\\n\");\n-        struct passwd *pw = getpwuid(AID_SHELL);\n-        char user_id[15];\n-        gchar *path = NULL;\n-        gchar *contents = NULL;\n-        gchar *session_path = NULL;\n-\n-        snprintf(user_id, sizeof user_id, \"%d\", pw->pw_uid);\n-\n-        path = g_build_filename(\"/run\", \"user\", user_id, \"dbus-session\", NULL);\n-\n-        g_file_get_contents(path, &contents, NULL, &error);\n-        session_path = g_strstrip(g_strsplit(contents, \"DBUS_SESSION_BUS_ADDRESS=\", -1)[1]);\n-        D(\"Session bus is %s\\n\", session_path);\n-\n-        // path is not longer used\n-        g_free(path);\n-\n-        if (error != NULL) {\n-            g_clear_error(&error);\n-            D(\"Couldn't set session bus\\n\");\n-            return 1;\n-        }\n-\n-        g_setenv(\"DBUS_SESSION_BUS_ADDRESS\", session_path, TRUE);\n-        g_free(contents);\n-    }\n-\n-    // set the uid to be able to connect to the phablet user session bus\n-    setuid(AID_SHELL);\n-    connection =  g_dbus_connection_new_for_address_sync(g_getenv(\"DBUS_SESSION_BUS_ADDRESS\"),\n-                                                         G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION,\n-                                                         NULL,\n-                                                         NULL,\n-                                                         &error);\n-    if (connection == NULL) {\n-        D(\"session bus not available: %s\", error->message);\n-        g_error_free (error);\n-        return 1;\n-    }\n-\n-    variant = g_dbus_connection_call_sync(connection,\n-                                          UNITY_SERVICE,\n-                                          GREETER_OBJ,\n-                                          PROPERTIES_INTERFACE,\n-                                          \"Get\",\n-                                          g_variant_new(\"(ss)\", GREETER_INTERFACE, ACTIVE_PROPERTY),\n-                                          g_variant_type_new(\"(v)\"),\n-                                          G_DBUS_CALL_FLAGS_NONE,\n-                                          -1,\n-                                          NULL,\n-                                          &error);\n-\n-    if (error != NULL) {\n-        D(\"Could not get property: %s\", error->message);\n-        g_object_unref(connection);\n-        g_error_free(error);\n-        return 1;\n-    }\n-\n-    if (variant == NULL) {\n-        D(\"Failed to get property '%s': %s\", \"IsActive\", error->message);\n-        g_object_unref(connection);\n-        g_error_free(error);\n-        return 1;\n-    }\n-\n-    variant = g_variant_get_variant(g_variant_get_child_value(variant, 0));\n-\n-    int active = 1;\n-    if (!g_variant_get_boolean(variant)) {\n-        active = 0;\n-    }\n-\n-    // get back to be root and return the value\n-    g_object_unref(connection);\n-    g_variant_unref(variant);\n-    setuid(0);\n-    return active;\n-}\n-\n static int create_subproc_thread(const char *name)\n {\n-    if (is_phone_locked() ) {\n-        fprintf(stderr, \"device is locked\\n\");\n-        return -1;\n-    }\n-\n     stinfo *sti;\n     adb_thread_t t;\n     int ret_fd;\n     pid_t pid;\n-\n-    struct passwd *user = getpwuid(getuid());\n-    char *shell;\n-    char *shellopts = \"-c\";\n-    char *home;\n-    char *sudo = \"/usr/bin/sudo\";\n-    char useropt[256] = \"-u\";\n-\n-    if (user->pw_name)\n-        strcat(useropt, user->pw_name);\n-\n-    if (user && user->pw_shell) {\n-        shell = user->pw_shell;\n-        shellopts = \"-cl\";\n-    } else {\n-        shell = SHELL_COMMAND;\n-    }\n-\n-    if (user->pw_dir)\n-        home = user->pw_dir;\n-        if(chdir(home) < 0 )\n-            return 1;\n-\n     if(name) {\n-\tret_fd = create_subprocess(sudo, useropt, \"-i\", shell, shellopts, name, &pid);\n+        ret_fd = create_subprocess(SHELL_COMMAND, \"-c\", name, &pid);\n     } else {\n-\tshellopts = \"-l\";\n-\tret_fd = create_subprocess(sudo, useropt, \"-i\", shell, shellopts, 0, &pid);\n+        ret_fd = create_subprocess(SHELL_COMMAND, \"-\", 0, &pid);\n     }\n     D(\"create_subprocess() ret_fd=%d pid=%d\\n\", ret_fd, pid);\n \n@@ -585,17 +453,13 @@ int service_to_fd(const char *name)\n     } else if (!strncmp(name, \"log:\", 4)) {\n         ret = create_service_thread(log_service, get_log_file_path(name + 4));\n     } else if(!HOST && !strncmp(name, \"shell:\", 6)) {\n-        if (!is_phone_locked() ) {\n-            if(name[6]) {\n-                ret = create_subproc_thread(name + 6);\n-            } else {\n-                ret = create_subproc_thread(0);\n-            }\n+        if(name[6]) {\n+            ret = create_subproc_thread(name + 6);\n+        } else {\n+            ret = create_subproc_thread(0);\n         }\n     } else if(!strncmp(name, \"sync:\", 5)) {\n-        if (!is_phone_locked() ) {\n-            ret = create_service_thread(file_sync_service, NULL);\n-        }\n+        ret = create_service_thread(file_sync_service, NULL);\n     } else if(!strncmp(name, \"remount:\", 8)) {\n         ret = create_service_thread(remount_service, NULL);\n     } else if(!strncmp(name, \"reboot:\", 7)) {\ndiff --git a/debian/makefiles/adbd.mk b/debian/makefiles/adbd.mk\nindex 49dab8c..22c1816 100644\n--- a/debian/makefiles/adbd.mk\n+++ b/debian/makefiles/adbd.mk\n@@ -40,11 +40,11 @@ CPPFLAGS+= -O2 -g -Wall -Wno-unused-parameter\n CPPFLAGS+= -DADB_HOST=0 -DHAVE_FORKEXEC=1 -D_XOPEN_SOURCE -D_GNU_SOURCE -DALLOW_ADBD_ROOT=1\n CPPFLAGS+= -DHAVE_SYMLINKS -DBOARD_ALWAYS_INSECURE\n CPPFLAGS+= -DHAVE_TERMIO_H\n-CPPFLAGS+= `pkg-config --cflags glib-2.0 gio-2.0`\n+CPPFLAGS+= -DADBD_NON_ANDROID\n CPPFLAGS+= -I$(SRCDIR)/core/adbd\n CPPFLAGS+= -I$(SRCDIR)/core/include\n \n-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0`\n+LIBS+= -lc -lpthread -lz -lcrypto -lcrypt\n \n OBJS= $(patsubst %, %.o, $(basename $(SRCS)))\n \n-- \n2.5.1\n\n"
  },
  {
    "path": "package/android-tools/0003-Fix-build-issue-with-uclibc.patch",
    "content": "[PATCH] Fix build issue with uclibc\n\nSigned-off-by: Gary Bisson <gary.bisson@boundarydevices.com>\n---\n core/adbd/adb_auth_client.c | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/core/adb/adb_auth_client.c b/core/adb/adb_auth_client.c\nindex 0b4913e..068d837 100644\n--- a/core/adb/adb_auth_client.c\n+++ b/core/adb/adb_auth_client.c\n@@ -72,7 +72,7 @@ static void read_keys(const char *file, struct listnode *list)\n         if (sep)\n             *sep = '\\0';\n \n-        ret = __b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4);\n+        ret = b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4);\n         if (ret != sizeof(key->key)) {\n             D(\"%s: Invalid base64 data ret=%d\\n\", file, ret);\n             free(key);\ndiff --git a/core/adbd/adb_auth_client.c b/core/adbd/adb_auth_client.c\nindex 0b4913e..068d837 100644\n--- a/core/adbd/adb_auth_client.c\n+++ b/core/adbd/adb_auth_client.c\n@@ -72,7 +72,7 @@ static void read_keys(const char *file, struct listnode *list)\n         if (sep)\n             *sep = '\\0';\n \n-        ret = __b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4);\n+        ret = b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4);\n         if (ret != sizeof(key->key)) {\n             D(\"%s: Invalid base64 data ret=%d\\n\", file, ret);\n             free(key);\n-- \n2.6.1\n\n"
  },
  {
    "path": "package/android-tools/0004-Fix-build-issue-with-musl.patch",
    "content": "[PATCH] Fix build issue with musl\n\narpa/nameser.h doesn't use the same macro name to avoid several\ninclusions.\n\nFinally had an issue with framebuffer_service.c since it was missing the\nTEMP_FAILURE_RETRY macro.\n\nSigned-off-by: Gary Bisson <gary.bisson@boundarydevices.com>\n---\n core/adbd/arpa_nameser.h              | 12 +++++++++---\n core/adbd/base64.c                    |  1 -\n core/adbd/framebuffer_service.c       |  1 +\n core/adbd/qemu_pipe.h                 |  1 -\n core/include/cutils/android_reboot.h  |  8 ++++++--\n core/include/cutils/bitops.h          | 10 ++++++----\n core/include/cutils/partition_utils.h |  8 ++++++--\n extras/ext4_utils/sha1.c              |  3 ---\n extras/ext4_utils/sha1.h              | 13 ++++++-------\n 9 files changed, 34 insertions(+), 23 deletions(-)\n\ndiff --git a/core/adbd/arpa_nameser.h b/core/adbd/arpa_nameser.h\nindex 438dc04..b2a28d6 100644\n--- a/core/adbd/arpa_nameser.h\n+++ b/core/adbd/arpa_nameser.h\n@@ -52,6 +52,8 @@\n \n #ifndef _ARPA_NAMESER_H_\n #define _ARPA_NAMESER_H_\n+#ifndef _ARPA_NAMESER_H\n+#define _ARPA_NAMESER_H\n \n #define BIND_4_COMPAT\n \n@@ -574,4 +579,5 @@ __END_DECLS\n #define  XLOG(...)   do {} while (0)\n #endif\n \n+#endif /* !_ARPA_NAMESER_H */\n #endif /* !_ARPA_NAMESER_H_ */\ndiff --git a/core/adbd/framebuffer_service.c b/core/adbd/framebuffer_service.c\nindex 20c08d2..48e0241 100644\n--- a/core/adbd/framebuffer_service.c\n+++ b/core/adbd/framebuffer_service.c\n@@ -26,6 +26,7 @@\n #include \"fdevent.h\"\n #include \"adb.h\"\n \n+#include <cutils/fs.h>\n #include <linux/fb.h>\n #include <sys/ioctl.h>\n #include <sys/mman.h>\n-- \n2.6.1\n"
  },
  {
    "path": "package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch",
    "content": "makefiles: use pkgconf to get libs deps\n\nLIBS lists library dependencies without taking into account static linking\nthat need ordered listing and more libraries listed since differently from\nshared linking dependency is not transparent(i.e. -lcrypto could need\n-latomic etc.).\n\nReplace -lcrypto with `pkg-config --libs libcrypto` command to be sure all\nneeded libraries are listed during linking.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>\n---\ndiff -urpN android-tools-4.2.2+git20130218.orig/debian/makefiles/adbd.mk android-tools-4.2.2+git20130218/debian/makefiles/adbd.mk\n--- android-tools-4.2.2+git20130218.orig/debian/makefiles/adbd.mk\t2019-04-08 16:05:02.967710428 +0200\n+++ android-tools-4.2.2+git20130218/debian/makefiles/adbd.mk\t2019-04-08 16:30:42.463084426 +0200\n@@ -44,7 +44,7 @@ CPPFLAGS+= -DADBD_NON_ANDROID\n CPPFLAGS+= -I$(SRCDIR)/core/adbd\n CPPFLAGS+= -I$(SRCDIR)/core/include\n\n-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt\n+LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto` -lcrypt\n\n OBJS= $(patsubst %, %.o, $(basename $(SRCS)))\n\ndiff -urpN android-tools-4.2.2+git20130218.orig/debian/makefiles/adb.mk android-tools-4.2.2+git20130218/debian/makefiles/adb.mk\n--- android-tools-4.2.2+git20130218.orig/debian/makefiles/adb.mk\t2019-04-08 16:05:02.959701400 +0200\n+++ android-tools-4.2.2+git20130218/debian/makefiles/adb.mk\t2019-04-08 16:31:06.529426250 +0200\n@@ -41,7 +41,7 @@ CPPFLAGS+= -DHAVE_TERMIO_H\n CPPFLAGS+= -I$(SRCDIR)/core/adb\n CPPFLAGS+= -I$(SRCDIR)/core/include\n\n-LIBS+= -lc -lpthread -lz -lcrypto\n+LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto`\n\n OBJS= $(SRCS:.c=.o)\n"
  },
  {
    "path": "package/android-tools/0006-fix-big-endian-build.patch",
    "content": "Fix build on big endian systems\n\nThe usb_linux_client.c file defines cpu_to_le16/32 by using the C\nlibrary htole16/32 function calls. However, cpu_to_le16/32 are used\nwhen initializing structures, i.e in a context where a function call\nis not allowed.\n\nIt works fine on little endian systems because htole16/32 are defined\nby the C library as no-ops. But on big-endian systems, they are\nactually doing something, which might involve calling a function,\ncausing build failures.\n\nTo solve this, we simply open-code cpu_to_le16/32 in a way that allows\nthem to be used when initializing structures.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/core/adb/usb_linux_client.c\n===================================================================\n--- a/core/adb/usb_linux_client.c\n+++ b/core/adb/usb_linux_client.c\n@@ -34,8 +34,15 @@\n #define MAX_PACKET_SIZE_FS\t64\n #define MAX_PACKET_SIZE_HS\t512\n \n-#define cpu_to_le16(x)  htole16(x)\n-#define cpu_to_le32(x)  htole32(x)\n+#if __BYTE_ORDER == __LITTLE_ENDIAN\n+# define cpu_to_le16(x) (x)\n+# define cpu_to_le32(x) (x)\n+#else\n+# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))\n+# define cpu_to_le32(x) \\\n+\t((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >>  8) | \\\n+\t (((x) & 0x0000ff00u) <<  8) | (((x) & 0x000000ffu) << 24))\n+#endif\n \n struct usb_handle\n {\nIndex: b/core/adbd/usb_linux_client.c\n===================================================================\n--- a/core/adbd/usb_linux_client.c\n+++ b/core/adbd/usb_linux_client.c\n@@ -34,8 +34,15 @@\n #define MAX_PACKET_SIZE_FS\t64\n #define MAX_PACKET_SIZE_HS\t512\n \n-#define cpu_to_le16(x)  htole16(x)\n-#define cpu_to_le32(x)  htole32(x)\n+#if __BYTE_ORDER == __LITTLE_ENDIAN\n+# define cpu_to_le16(x) (x)\n+# define cpu_to_le32(x) (x)\n+#else\n+# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))\n+# define cpu_to_le32(x) \\\n+\t((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >>  8) | \\\n+\t (((x) & 0x0000ff00u) <<  8) | (((x) & 0x000000ffu) << 24))\n+#endif\n \n struct usb_handle\n {\n"
  },
  {
    "path": "package/android-tools/0007-include-cdefs-h-when-needed.patch",
    "content": "Include cdefs.h wherever it is needed\n\ncdefs.h is included from within a lot of glibc headers, so it almost\ninvariably and automagically gets pulled in with glibc.\n\nHowever, this might not be the case with other C libraries. musl does\nnot provide cdefs.h so it does not include it from its own headers\n(cdefs.h must be provided separately).\n\nSo we must include it when we are going to use macros it provides.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n---\n core/adbd/services.c                  |  1 +\n core/libcutils/android_reboot.c       |  1 +\n 2 files changed, 2 insertions(+), 0 deletion(-)\n\ndiff --git a/core/adbd/services.c b/core/adbd/services.c\nindex 20c08d2..48e0241 100644\n--- a/core/adbd/services.c\n+++ b/core/adbd/services.c\n@@ -20,6 +20,7 @@\n #include <string.h>\n #include <errno.h>\n #include <pwd.h>\n+#include <sys/cdefs.h>\n \n #include \"sysdeps.h\"\n \ndiff --git a/core/libcutils/android_reboot.c b/core/libcutils/android_reboot.c\nindex 20c08d2..48e0241 100644\n--- a/core/libcutils/android_reboot.c\n+++ b/core/libcutils/android_reboot.c\n@@ -23,6 +23,7 @@\n #include <string.h>\n #include <linux/reboot.h>\n #include <sys/syscall.h>\n+#include <sys/cdefs.h>\n \n #include <cutils/android_reboot.h>\n \n"
  },
  {
    "path": "package/android-tools/0008-Include-sysmacros.h-to-compile-with-glibc-2.28.patch",
    "content": "usb_linux.c: fix minor()/major() build failure due to glibc 2.28\n\nglibc 2.28 no longer includes <sys/sysmacros.h> from <sys/types.h>,\nand therefore <sys/sysmacros.h> must be included explicitly when\nmajor()/minor() are used.\n\nThis commit adds a patch to directly include <sys/sysmacros.h> into\nall usb_linux.c files where minor() and major() macros are used.\n\ndiff -urpN host-android-tools-4.2.2+git20130218.orig/core/adb/usb_linux.c host-android-tools-4.2.2+git20130218/core/adb/usb_linux.c\n--- host-android-tools-4.2.2+git20130218.orig/core/adb/usb_linux.c\t2013-02-18 15:49:03.000000000 +0100\n+++ host-android-tools-4.2.2+git20130218/core/adb/usb_linux.c\t2018-09-09 11:47:16.476292546 +0200\n@@ -20,6 +20,7 @@\n #include <string.h>\n \n #include <sys/ioctl.h>\n+#include <sys/sysmacros.h>\n #include <sys/types.h>\n #include <sys/time.h>\n #include <dirent.h>\ndiff -urpN host-android-tools-4.2.2+git20130218.orig/core/adbd/usb_linux.c host-android-tools-4.2.2+git20130218/core/adbd/usb_linux.c\n--- host-android-tools-4.2.2+git20130218.orig/core/adbd/usb_linux.c\t2018-09-09 02:32:57.154503866 +0200\n+++ host-android-tools-4.2.2+git20130218/core/adbd/usb_linux.c\t2018-09-09 11:47:28.148353880 +0200\n@@ -20,6 +20,7 @@\n #include <string.h>\n \n #include <sys/ioctl.h>\n+#include <sys/sysmacros.h>\n #include <sys/types.h>\n #include <sys/time.h>\n #include <dirent.h>\ndiff -urpN host-android-tools-4.2.2+git20130218.orig/core/fastboot/usb_linux.c host-android-tools-4.2.2+git20130218/core/fastboot/usb_linux.c\n--- host-android-tools-4.2.2+git20130218.orig/core/fastboot/usb_linux.c\t2013-02-18 15:49:03.000000000 +0100\n+++ host-android-tools-4.2.2+git20130218/core/fastboot/usb_linux.c\t2018-09-09 11:46:53.028169154 +0200\n@@ -33,6 +33,7 @@\n \n #include <sys/ioctl.h>\n #include <sys/stat.h>\n+#include <sys/sysmacros.h>\n #include <sys/types.h>\n #include <dirent.h>\n #include <fcntl.h>\n"
  },
  {
    "path": "package/android-tools/0009-Fix-makefiles-for-out-of-tree-ext4_utils-build.patch",
    "content": "From d24abbec201975a5eb7f8589614cfb424b8c80b6 Mon Sep 17 00:00:00 2001\nFrom: Alex Kaplan <kaplan2539@gmail.com>\nDate: Sat, 10 Nov 2018 19:50:51 -0800\nSubject: [PATCH] Fix makefiles for out-of-tree ext4_utils build\n\nSigned-off-by: Alex Kaplan <kaplan2539@gmail.com>\n---\n debian/makefiles/ext4_utils.mk | 10 +++++-----\n 1 file changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/debian/makefiles/ext4_utils.mk b/debian/makefiles/ext4_utils.mk\nindex cb64916..c5904bf 100644\n--- a/debian/makefiles/ext4_utils.mk\n+++ b/debian/makefiles/ext4_utils.mk\n@@ -1,6 +1,7 @@\n # Makefile for ext4_utils; based on https://heiher.info/2227.html\n # Author: Dmitrijs Ledkovs <xnox@ubuntu.com>\n \n+VPATH+=$(SRCDIR)/extras/ext4_utils\n SRCS+=make_ext4fs.c\n SRCS+=ext4fixup.c\n SRCS+=ext4_utils.c\n@@ -13,7 +14,7 @@ SRCS+=sha1.c\n SRCS+=wipe.c\n SRCS+=crc16.c\n \n-VPATH+=../../core/libsparse\n+VPATH+=$(SRCDIR)/core/libsparse\n SRCS+= backed_block.c\n SRCS+= sparse_crc32.c\n SRCS+= sparse.c\n@@ -31,10 +32,9 @@ SRCS+=img2simg.c\n SRCS+=simg2img.c\n SRCS+=simg2simg.c\n \n-CPPFLAGS+= -I.\n-CPPFLAGS+= -I/usr/include\n-CPPFLAGS+= -I../../core/include\n-CPPFLAGS+= -I../../core/libsparse/include/\n+CPPFLAGS+= -I$(SRCDIR)\n+CPPFLAGS+= -I$(SRCDIR)/core/include\n+CPPFLAGS+= -I$(SRCDIR)/core/libsparse/include/\n \n LIBS+= -lz -lselinux\n \n-- \n2.7.4\n\n"
  },
  {
    "path": "package/android-tools/0010-adb-added-patch-for-openssl-1.1.0-compatibility.patch",
    "content": "From bb3da0e32be4f2260940edf3ee0f88103dfd0dcc Mon Sep 17 00:00:00 2001\nFrom: Eneas U de Queiroz <cote2004-github@yahoo.com>\nDate: Tue, 5 Feb 2019 01:12:19 +0200\nSubject: [PATCH] adb: added patch for openssl 1.1.0 compatibility\n\nSigned-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>\n\n[Vadim: took only adb related part from\nhttps://github.com/lede-project/source/commit/f63f20fb93c7e67775cb01d97fc88b5b29452b81]\nSigned-off-by: Vadim Kochan <vadim4j@gmail.com>\n---\n core/adb/adb_auth_host.c | 10 ++++++++++\n 1 file changed, 10 insertions(+)\n\ndiff --git a/core/adb/adb_auth_host.c b/core/adb/adb_auth_host.c\nindex 9039d42..debd2ef 100644\n--- a/core/adb/adb_auth_host.c\n+++ b/core/adb/adb_auth_host.c\n@@ -79,7 +79,13 @@ static int RSA_to_RSAPublicKey(RSA *rsa, RSAPublicKey *pkey)\n     }\n \n     BN_set_bit(r32, 32);\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+    const BIGNUM *rsa_n, *rsa_e;\n+    RSA_get0_key(rsa, &rsa_n, &rsa_e, NULL);\n+    BN_copy(n, rsa_n);\n+#else\n     BN_copy(n, rsa->n);\n+#endif\n     BN_set_bit(r, RSANUMWORDS * 32);\n     BN_mod_sqr(rr, r, n, ctx);\n     BN_div(NULL, rem, n, r32, ctx);\n@@ -93,7 +99,11 @@ static int RSA_to_RSAPublicKey(RSA *rsa, RSAPublicKey *pkey)\n         BN_div(n, rem, n, r32, ctx);\n         pkey->n[i] = BN_get_word(rem);\n     }\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+    pkey->exponent = BN_get_word(rsa_e);\n+#else\n     pkey->exponent = BN_get_word(rsa->e);\n+#endif\n \n out:\n     BN_free(n0inv);\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/android-tools/Config.in",
    "content": "config BR2_PACKAGE_ANDROID_TOOLS\n\tbool \"android-tools\"\n\t# Technically, fastboot could build on noMMU systems. But\n\t# since we need at least one of the three sub-options enabled,\n\t# and adb/adbd can't be built on noMMU systems, and fastboot\n\t# has some complicated dependencies, we simply make the whole\n\t# package not available on noMMU platforms.\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_ANDROID_TOOLS_ADBD if \\\n\t      !BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT && \\\n\t      !BR2_PACKAGE_ANDROID_TOOLS_ADB\n\thelp\n\t  This package contains the fastboot and adb utilities, that\n\t  can be used to interact with target devices using of these\n\t  protocols.\n\n\t  https://wiki.debian.org/AndroidTools#Original_android-tools_package\n\nif BR2_PACKAGE_ANDROID_TOOLS\n\n# We need kernel headers that support the __SANE_USERSPACE_TYPES__\n# mechanism for 64 bits architectures, so that u64 gets defined as\n# \"unsigned long long\" and not \"unsigned long\". We know that >= 3.16\n# is needed for MIPS64 (kernel commit\n# f4b3aa7cd9d32407670e67238c5ee752bb98f481) and >= 3.10 is needed for\n# PowerPC64 (kernel commit\n# 2c9c6ce0199a4d252e20c531cfdc9d24e39235c0). Without this, the build\n# fails with a bad redefinition of u64 (the android-tools fastboot\n# code defines it as \"unsigned long long\").\nconfig BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS\n\tbool\n\tdefault y if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 && (BR2_powerpc64 || BR2_powerpc64le)\n\tdefault y if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 && (BR2_mips64 || BR2_mips64el)\n\tdefault y if !BR2_powerpc64 && !BR2_powerpc64le && !BR2_mips64 && !BR2_mips64el\n\nconfig BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT\n\tbool \"fastboot\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libselinux\n\tdepends on !BR2_STATIC_LIBS # libselinux\n\tdepends on BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS\n\tselect BR2_PACKAGE_LIBSELINUX\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  This option will build and install the fastboot utility for\n\t  the target, which can be used to reflash other target devices\n\t  implementing the fastboot protocol.\n\ncomment \"fastboot needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\ncomment \"fastboot needs headers >= 3.10 (PowerPC64), headers >= 3.16 (MIPS64)\"\n\tdepends on !BR2_arc\n\tdepends on !BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS\n\nconfig BR2_PACKAGE_ANDROID_TOOLS_ADB\n\tbool \"adb\"\n\tdepends on BR2_USE_MMU # uses fork()\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  This option will build and install the adb utility for the\n\t  target, which can be used to interact with other target\n\t  devices implementing the ADB protocol.\n\nconfig BR2_PACKAGE_ANDROID_TOOLS_ADBD\n\tbool \"adbd\"\n\tdepends on BR2_USE_MMU # uses fork()\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  This option will build and install the adbd utility for the\n\t  target, which can be used to interact with a host machine\n\t  implementing the ADB protocol.\n\nendif\n\ncomment \"android-tools needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/android-tools/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_ANDROID_TOOLS\n\tbool \"host android-tools\"\n\tselect BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB if \\\n\t\t!BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT\n\thelp\n\t  This package contains the fastboot and adb utilities, that\n\t  can be used to interact with target devices using of these\n\t  protocols.\n\nif BR2_PACKAGE_HOST_ANDROID_TOOLS\n\nconfig BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT\n\tbool \"fastboot\"\n\thelp\n\t  This option will build and install the fastboot utility for\n\t  the host, which can be used to reflash target devices\n\t  implementing the fastboot protocol.\n\nconfig BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB\n\tbool \"adb\"\n\thelp\n\t  This option will build and install the adb utility for the\n\t  host, which can be used to interact with target devices\n\t  implementing the ADB protocol.\n\nconfig BR2_PACKAGE_HOST_ANDROID_TOOLS_EXT4_UTILS\n\tbool \"ext4 utils\"\n\thelp\n\t  This option will build and install the ext4 utils for the\n\t  host, i.e. make_ext4fs, ext4fixup, ext2simg, img2simg,\n\t  simg2img and simg2simg.\n\nendif\n"
  },
  {
    "path": "package/android-tools/android-tools.hash",
    "content": "# locally computed\nsha256\t9bfba987e1351b12aa983787b9ae4424ab752e9e646d8e93771538dc1e5d932f  android-tools_4.2.2+git20130218.orig.tar.xz\nsha256\t73c3078de3e44d8a3cadf7a360863c63155d9d558c2f0933cf38ad901a3f5998  android-tools_4.2.2+git20130218-3ubuntu41.debian.tar.gz\nsha256  170c5939bf8c8eed1db8f66f2d6155e8c1a3e799e390b55e7aad253195b1ebf5  debian/copyright\n"
  },
  {
    "path": "package/android-tools/android-tools.mk",
    "content": "################################################################################\n#\n# android-tools\n#\n################################################################################\n\nANDROID_TOOLS_SITE = https://launchpad.net/ubuntu/+archive/primary/+files\nANDROID_TOOLS_VERSION = 4.2.2+git20130218\nANDROID_TOOLS_SOURCE = android-tools_$(ANDROID_TOOLS_VERSION).orig.tar.xz\nANDROID_TOOLS_EXTRA_DOWNLOADS = android-tools_$(ANDROID_TOOLS_VERSION)-3ubuntu41.debian.tar.gz\nHOST_ANDROID_TOOLS_EXTRA_DOWNLOADS = $(ANDROID_TOOLS_EXTRA_DOWNLOADS)\nANDROID_TOOLS_LICENSE = Apache-2.0\nANDROID_TOOLS_LICENSE_FILES = debian/copyright\nANDROID_TOOLS_DEPENDENCIES = host-pkgconf\nHOST_ANDROID_TOOLS_DEPENDENCIES = host-pkgconf\n\n# Extract the Debian tarball inside the sources\ndefine ANDROID_TOOLS_DEBIAN_EXTRACT\n\t$(call suitable-extractor,$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS))) \\\n\t\t$(ANDROID_TOOLS_DL_DIR)/$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS)) | \\\n\t\t$(TAR) -C $(@D) $(TAR_OPTIONS) -\nendef\n\nHOST_ANDROID_TOOLS_POST_EXTRACT_HOOKS += ANDROID_TOOLS_DEBIAN_EXTRACT\nANDROID_TOOLS_POST_EXTRACT_HOOKS += ANDROID_TOOLS_DEBIAN_EXTRACT\n\n# Apply the Debian patches before applying the Buildroot patches\ndefine ANDROID_TOOLS_DEBIAN_PATCH\n\t$(APPLY_PATCHES) $(@D) $(@D)/debian/patches \\*\nendef\n\nHOST_ANDROID_TOOLS_PRE_PATCH_HOOKS += ANDROID_TOOLS_DEBIAN_PATCH\nANDROID_TOOLS_PRE_PATCH_HOOKS += ANDROID_TOOLS_DEBIAN_PATCH\n\nifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT),y)\nHOST_ANDROID_TOOLS_BUILD_TARGETS += fastboot\nHOST_ANDROID_TOOLS_INSTALL_TARGETS += build-fastboot/fastboot\nHOST_ANDROID_TOOLS_DEPENDENCIES += host-zlib host-libselinux\nendif\n\nifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB),y)\nHOST_ANDROID_TOOLS_BUILD_TARGETS += adb\nHOST_ANDROID_TOOLS_INSTALL_TARGETS += build-adb/adb\nHOST_ANDROID_TOOLS_DEPENDENCIES += host-zlib host-openssl\nendif\n\nifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_EXT4_UTILS),y)\nHOST_ANDROID_TOOLS_BUILD_TARGETS += ext4_utils\nHOST_ANDROID_TOOLS_INSTALL_TARGETS += \\\n\t$(addprefix build-ext4_utils/,make_ext4fs ext4fixup ext2simg img2simg simg2img simg2simg)\nHOST_ANDROID_TOOLS_DEPENDENCIES += host-libselinux\nendif\n\nifeq ($(BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT),y)\nANDROID_TOOLS_TARGETS += fastboot\nANDROID_TOOLS_DEPENDENCIES += zlib libselinux\nendif\n\nifeq ($(BR2_PACKAGE_ANDROID_TOOLS_ADB),y)\nANDROID_TOOLS_TARGETS += adb\nANDROID_TOOLS_DEPENDENCIES += zlib openssl\nendif\n\nifeq ($(BR2_PACKAGE_ANDROID_TOOLS_ADBD),y)\nANDROID_TOOLS_TARGETS += adbd\nANDROID_TOOLS_DEPENDENCIES += zlib openssl\nendif\n\n# Build each tool in its own directory not to share object files\n\ndefine HOST_ANDROID_TOOLS_BUILD_CMDS\n\t$(foreach t,$(HOST_ANDROID_TOOLS_BUILD_TARGETS),\\\n\t\tmkdir -p $(@D)/build-$(t) && \\\n\t\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) SRCDIR=$(@D) \\\n\t\t\t-C $(@D)/build-$(t) -f $(@D)/debian/makefiles/$(t).mk$(sep))\nendef\n\ndefine ANDROID_TOOLS_BUILD_CMDS\n\t$(foreach t,$(ANDROID_TOOLS_TARGETS),\\\n\t\tmkdir -p $(@D)/build-$(t) && \\\n\t\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) SRCDIR=$(@D) \\\n\t\t\t-C $(@D)/build-$(t) -f $(@D)/debian/makefiles/$(t).mk$(sep))\nendef\n\ndefine HOST_ANDROID_TOOLS_INSTALL_CMDS\n\t$(foreach t,$(HOST_ANDROID_TOOLS_INSTALL_TARGETS),\\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$(t) $(HOST_DIR)/bin/$(notdir $(t))$(sep))\nendef\n\ndefine ANDROID_TOOLS_INSTALL_TARGET_CMDS\n\t$(foreach t,$(ANDROID_TOOLS_TARGETS),\\\n\t\t$(INSTALL) -D -m 0755 $(@D)/build-$(t)/$(t) $(TARGET_DIR)/usr/bin/$(t)$(sep))\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/angular-websocket/Config.in",
    "content": "config BR2_PACKAGE_ANGULAR_WEBSOCKET\n\tbool \"angular-websocket\"\n\thelp\n\t  An AngularJS WebSocket service for connecting client\n\t  applications to servers.\n\n\t  https://github.com/AngularClass/angular-websocket\n"
  },
  {
    "path": "package/angular-websocket/angular-websocket.hash",
    "content": "# Locally calculated\nsha256 69d752896bc17c08750a2fda24b5eb3c6d653afc6f406dd90a6b7c920b22a14a  angular-websocket-2.0.0.tar.gz\nsha256 3013a57f2c8df37775804b8be5b107665a2ca209607bb92c618bcc084feb00a7  LICENSE\n"
  },
  {
    "path": "package/angular-websocket/angular-websocket.mk",
    "content": "################################################################################\n#\n# angular-websocket\n#\n################################################################################\n\nANGULAR_WEBSOCKET_VERSION = 2.0.0\nANGULAR_WEBSOCKET_SITE = $(call github,AngularClass,angular-websocket,v$(ANGULAR_WEBSOCKET_VERSION))\nANGULAR_WEBSOCKET_LICENSE = MIT\nANGULAR_WEBSOCKET_LICENSE_FILES = LICENSE\n\n# install .min.js as .js\ndefine ANGULAR_WEBSOCKET_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/dist/angular-websocket.min.js \\\n\t\t$(TARGET_DIR)/var/www/angular-websocket.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/angularjs/Config.in",
    "content": "config BR2_PACKAGE_ANGULARJS\n\tbool \"angularjs\"\n\thelp\n\t  AngularJS web application framework.\n\n\t  http://angularjs.org\n"
  },
  {
    "path": "package/angularjs/angularjs.hash",
    "content": "# Locally computed:\nsha256  471b57064031da8c5fd3b1ba3f52dd1e0d2740a97ed34da2e8ab2a4cc2718280  angular-1.8.2.zip\nsha256  237656fae6e39d02cd71cbcfbf91b7964eba5796aafca1bfcfff3b054ce3fed6  angular.js\n"
  },
  {
    "path": "package/angularjs/angularjs.mk",
    "content": "################################################################################\n#\n# angularjs\n#\n################################################################################\n\nANGULARJS_VERSION = 1.8.2\nANGULARJS_SOURCE = angular-$(ANGULARJS_VERSION).zip\nANGULARJS_SITE = https://code.angularjs.org/$(ANGULARJS_VERSION)\nANGULARJS_LICENSE = MIT\n# There's no separate license file in the archive, so use angular.js instead.\nANGULARJS_LICENSE_FILES = angular.js\nANGULARJS_CPE_ID_VENDOR = angularjs\nANGULARJS_CPE_ID_PRODUCT = angular.js\n\ndefine ANGULARJS_EXTRACT_CMDS\n\tunzip $(ANGULARJS_DL_DIR)/$(ANGULARJS_SOURCE) -d $(@D)\n\tmv $(@D)/angular-$(ANGULARJS_VERSION)/* $(@D)\n\trmdir $(@D)/angular-$(ANGULARJS_VERSION)\nendef\n\n# install .min.js as .js\ndefine ANGULARJS_INSTALL_TARGET_CMDS\n\t$(foreach f,$(notdir $(wildcard $(@D)/*.min.js)),\n\t\t$(INSTALL) -m 0644 -D $(@D)/$(f) \\\n\t\t\t$(TARGET_DIR)/var/www/$(f:.min.js=.js)$(sep))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/aoetools/0001-Change-shell-script-interpreter-from-bin-bash-to-bin.patch",
    "content": "From 4ef42740538cefd3c1554aa4df5bcb1388ac927b Mon Sep 17 00:00:00 2001\nFrom: Sergio Prado <sergio.prado@e-labworks.com>\nDate: Tue, 16 Jan 2018 22:28:32 -0200\nSubject: [PATCH] Change shell script interpreter from /bin/bash to /bin/sh\n\nThis will make the script more portable, making it possible to run on\nsystems that do not have bash.\n\nSigned-off-by: Sergio Prado <sergio.prado@e-labworks.com>\n---\n aoe-stat.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/aoe-stat.in b/aoe-stat.in\nindex 50e6ac674169..0c1d6f5ebe1e 100755\n--- a/aoe-stat.in\n+++ b/aoe-stat.in\n@@ -1,4 +1,4 @@\n-#! /bin/bash\n+#! /bin/sh\n # aoe-stat - collate and present information about AoE storage\n # Copyright 2012, CORAID, Inc., and licensed under GPL v.2.\n \n-- \n1.9.1\n\n"
  },
  {
    "path": "package/aoetools/Config.in",
    "content": "config BR2_PACKAGE_AOETOOLS\n\tbool \"aoetools\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  The aoetools are programs for users of the ATA over Ethernet\n\t  (AoE) network storage protocol, a simple protocol for using\n\t  storage over an ethernet LAN.\n\n\t  http://aoetools.sourceforge.net/\n\ncomment \"aoetools needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/aoetools/aoetools.hash",
    "content": "# Locally computed:\nsha256 477e796f5c18e8c0e61b5d88e1759c68249e8e0210c2f3de2b98680e2cc63e32  aoetools-37.tar.gz\n\n# Hash for license files:\nsha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/aoetools/aoetools.mk",
    "content": "################################################################################\n#\n# aoetools\n#\n################################################################################\n\nAOETOOLS_VERSION = 37\nAOETOOLS_SITE = $(call github,OpenAoE,aoetools,aoetools-$(AOETOOLS_VERSION))\nAOETOOLS_LICENSE = GPL-2.0\nAOETOOLS_LICENSE_FILES = COPYING\n\ndefine AOETOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine AOETOOLS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) \\\n\t\t-C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/apache/0001-cross-compile.patch",
    "content": "Fix cross-compilation\n\nFetched httpd-2.4.x-cross_compile.diff from upstream bugtracker:\nhttps://issues.apache.org/bugzilla/show_bug.cgi?id=51257#c6\n\nwhich is a bundle of upstream revisions:\n    http://svn.apache.org/viewvc?view=revision&revision=1327907\n    http://svn.apache.org/viewvc?view=revision&revision=1328390\n    http://svn.apache.org/viewvc?view=revision&revision=1328714\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\nIndex: server/Makefile.in\n===================================================================\n--- a/server/Makefile.in\t(revision 1328714)\n+++ b/server/Makefile.in\t(working copy)\n@@ -22,9 +22,14 @@\n include $(top_builddir)/build/rules.mk\n include $(top_srcdir)/build/library.mk\n \n+ifdef CC_FOR_BUILD\n+gen_test_char: gen_test_char.c\n+\t$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $<\n+else\n gen_test_char_OBJECTS = gen_test_char.lo\n gen_test_char: $(gen_test_char_OBJECTS)\n \t$(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS)\n+endif\n \n test_char.h: gen_test_char\n \t./gen_test_char > test_char.h\nIndex: configure.in\n===================================================================\n--- a/configure.in\t(revision 1328714)\n+++ b/configure.in\t(working copy)\n@@ -193,6 +193,14 @@\n dnl Try to get c99 support for variadic macros\n ifdef([AC_PROG_CC_C99], [AC_PROG_CC_C99])\n \n+dnl In case of cross compilation we set CC_FOR_BUILD to cc unless\n+dnl we got already CC_FOR_BUILD from environment.\n+if test \"x${build_alias}\" != \"x${host_alias}\"; then\n+  if test \"x${CC_FOR_BUILD}\" = \"x\"; then\n+    CC_FOR_BUILD=cc\n+  fi\n+fi\n+\n if test \"x${cache_file}\" = \"x/dev/null\"; then\n   # Likewise, ensure that CC and CPP are passed through to the pcre\n   # configure script iff caching is disabled (the autoconf 2.5x default).\nIndex: acinclude.m4\n===================================================================\n--- a/acinclude.m4\t(revision 1328714)\n+++ ab/cinclude.m4\t(working copy)\n@@ -53,6 +53,8 @@\n   APACHE_SUBST(CPPFLAGS)\n   APACHE_SUBST(CFLAGS)\n   APACHE_SUBST(CXXFLAGS)\n+  APACHE_SUBST(CC_FOR_BUILD)\n+  APACHE_SUBST(CFLAGS_FOR_BUILD)\n   APACHE_SUBST(LTFLAGS)\n   APACHE_SUBST(LDFLAGS)\n   APACHE_SUBST(LT_LDFLAGS)\n"
  },
  {
    "path": "package/apache/0002-nios2_is_not_os2.patch",
    "content": "Fix nios2 detection.\n\nApache treats nios2 as OS/2.\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr httpd-2.4.12.org/configure.in httpd-2.4.12/configure.in\n--- httpd-2.4.12.org/configure.in\t2015-01-22 18:33:07.000000000 +0100\n+++ httpd-2.4.12/configure.in\t2015-04-02 22:01:32.851102219 +0200\n@@ -268,7 +268,7 @@\n AC_MSG_NOTICE([])\n \n case $host in\n-  *os2*)\n+  *-os2*)\n       # Use a custom made libtool replacement\n       echo \"using aplibtool\"\n       LIBTOOL=\"$abs_srcdir/srclib/apr/build/aplibtool\"\n"
  },
  {
    "path": "package/apache/0003-server-Makefile.in-handle-separate-APR_INCLUDE_DIR-A.patch",
    "content": "From 00281390e82db18fe0de4033be4045f9391a8ee5 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Thu, 15 Nov 2018 14:04:29 +0100\nSubject: [PATCH] server/Makefile.in: handle separate\n APR_INCLUDE_DIR/APU_INCLUDE_DIR\n\nIf APR_INCLUDEDIR and APU_INCLUDEDIR point to different directories,\nbut for example APU_INCLUDEDIR contains both the apr headers and apu\nheaders, the \"export_files\" file will contain duplicate header files,\ncausing the exports.c file to contain duplicate definitions, making\nthe build fail.\n\nThis commit fixes that by making sure we only use the apr headers from\nAPR_INCLUDEDIR and the apu headers from the APU_INCLUDEDIR.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nUpstream: https://bz.apache.org/bugzilla/show_bug.cgi?id=62930\n---\n server/Makefile.in | 6 ++----\n 1 file changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/server/Makefile.in b/server/Makefile.in\nindex 1fa334467d..2258f0bdf2 100644\n--- a/server/Makefile.in\n+++ b/server/Makefile.in\n@@ -34,7 +34,6 @@ test_char.h: gen_test_char\n util.lo: test_char.h\n \n EXPORT_DIRS = $(top_srcdir)/include $(top_srcdir)/os/$(OS_DIR)\n-EXPORT_DIRS_APR = $(APR_INCLUDEDIR) $(APU_INCLUDEDIR)\n \n # If export_files is a dependency here, but we remove it during this stage,\n # when exports.c is generated, make will not detect that export_files is no\n@@ -60,9 +59,8 @@ export_files:\n \t      ls $$dir/*.h ; \\\n \t  done; \\\n \t  echo \"$(top_srcdir)/server/mpm_fdqueue.h\"; \\\n-\t  for dir in $(EXPORT_DIRS_APR); do \\\n-\t      ls $$dir/ap[ru].h $$dir/ap[ru]_*.h 2>/dev/null; \\\n-\t  done; \\\n+\t  ls $(APR_INCLUDE_DIR)/{apr.h,apr_*.h} 2>/dev/null; \\\n+\t  ls $(APU_INCLUDE_DIR)/{apu.h,apu_*.h} 2>/dev/null; \\\n \t) | sed -e s,//,/,g | sort -u > $@\n \n exports.c: export_files\n-- \n2.19.1\n\n"
  },
  {
    "path": "package/apache/Config.in",
    "content": "config BR2_PACKAGE_APACHE\n\tbool \"apache\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # apr\n\tselect BR2_PACKAGE_APR_UTIL\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  The Apache HTTP Server Project is an effort to develop and\n\t  maintain an open-source HTTP server for modern operating\n\t  systems including UNIX and Windows NT. The goal of this\n\t  project is to provide a secure, efficient and extensible\n\t  server that provides HTTP services in sync with the current\n\t  HTTP standards.\n\n\t  https://httpd.apache.org\n\nif BR2_PACKAGE_APACHE\n\nchoice\n\tprompt \"Multi-Processing Module (MPM)\"\n\tdefault BR2_PACKAGE_APACHE_MPM_WORKER\n\thelp\n\t  Select the Multi-Processing Module (MPM).\n\nconfig BR2_PACKAGE_APACHE_MPM_EVENT\n\tbool \"event\"\n\thelp\n\t  A variant of the worker MPM with the goal of consuming threads\n\t  only for connections with active processing\n\nconfig BR2_PACKAGE_APACHE_MPM_PREFORK\n\tbool \"prefork\"\n\thelp\n\t  Implements a non-threaded, pre-forking web server\n\nconfig BR2_PACKAGE_APACHE_MPM_WORKER\n\tbool \"worker\"\n\thelp\n\t  Implements a hybrid multi-threaded multi-process web server\n\nendchoice\n\nendif\n\ncomment \"apache needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/apache/S50apache",
    "content": "#!/bin/sh\n\ncase \"$1\" in\n  start|restart|graceful|graceful-stop|stop)\n\tapachectl -k $1\n\t;;\n  reload)\n\tapachectl -k restart\n\t;;\n  *)\n\techo \"Usage: $0 {start|restart|reload|graceful|graceful-stop|stop}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/apache/apache.hash",
    "content": "# From https://downloads.apache.org/httpd/httpd-2.4.51.tar.bz2.{sha256,sha512}\nsha256  20e01d81fecf077690a4439e3969a9b22a09a8d43c525356e863407741b838f4  httpd-2.4.51.tar.bz2\nsha512  9fb07c4b176f5c0485a143e2b1bb1085345ca9120b959974f68c37a8911a57894d2cb488b1b42fdf3102860b99e890204f5e9fa7ae3828b481119c563812cc66  httpd-2.4.51.tar.bz2\n# Locally computed\nsha256  47b8c2b6c3309282a99d4a3001575c790fead690cc14734628c4667d2bbffc43  LICENSE\n"
  },
  {
    "path": "package/apache/apache.mk",
    "content": "################################################################################\n#\n# apache\n#\n################################################################################\n\nAPACHE_VERSION = 2.4.51\nAPACHE_SOURCE = httpd-$(APACHE_VERSION).tar.bz2\nAPACHE_SITE = https://downloads.apache.org/httpd\nAPACHE_LICENSE = Apache-2.0\nAPACHE_LICENSE_FILES = LICENSE\nAPACHE_CPE_ID_VENDOR = apache\nAPACHE_CPE_ID_PRODUCT = http_server\nAPACHE_SELINUX_MODULES = apache\n# Needed for mod_php\nAPACHE_INSTALL_STAGING = YES\n# We have a patch touching configure.in and Makefile.in,\n# so we need to autoreconf:\nAPACHE_AUTORECONF = YES\nAPACHE_DEPENDENCIES = apr apr-util pcre\n\nifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)\ndefine APACHE_FIXUP_APR_LIBTOOL\n\t$(SED) \"s@$(PER_PACKAGE_DIR)/[^/]\\+/@$(PER_PACKAGE_DIR)/apache/@g\" \\\n\t\t$(STAGING_DIR)/usr/build-1/libtool\nendef\nAPACHE_POST_PREPARE_HOOKS += APACHE_FIXUP_APR_LIBTOOL\nendif\n\nAPACHE_CONF_ENV= \\\n\tap_cv_void_ptr_lt_long=no \\\n\tPCRE_CONFIG=$(STAGING_DIR)/usr/bin/pcre-config\n\nifeq ($(BR2_PACKAGE_APACHE_MPM_EVENT),y)\nAPACHE_MPM = event\nelse ifeq ($(BR2_PACKAGE_APACHE_MPM_PREFORK),y)\nAPACHE_MPM = prefork\nelse ifeq ($(BR2_PACKAGE_APACHE_MPM_WORKER),y)\nAPACHE_MPM = worker\nendif\n\nAPACHE_CONF_OPTS = \\\n\t--sysconfdir=/etc/apache2 \\\n\t--with-apr=$(STAGING_DIR)/usr \\\n\t--with-apr-util=$(STAGING_DIR)/usr \\\n\t--with-pcre=$(STAGING_DIR)/usr/bin/pcre-config \\\n\t--enable-http \\\n\t--enable-dbd \\\n\t--enable-proxy \\\n\t--enable-mime-magic \\\n\t--without-suexec-bin \\\n\t--enable-mods-shared=all \\\n\t--with-mpm=$(APACHE_MPM) \\\n\t--disable-luajit\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nAPACHE_DEPENDENCIES += libxml2\n# Apache wants the path to the header file, where it can find\n# <libxml/parser.h>.\nAPACHE_CONF_OPTS += \\\n\t--enable-xml2enc \\\n\t--enable-proxy-html \\\n\t--with-libxml2=$(STAGING_DIR)/usr/include/libxml2\nelse\nAPACHE_CONF_OPTS += \\\n\t--disable-xml2enc \\\n\t--disable-proxy-html\nendif\n\nifeq ($(BR2_PACKAGE_LUA),y)\nAPACHE_CONF_OPTS += --enable-lua\nAPACHE_DEPENDENCIES += lua\nelse\nAPACHE_CONF_OPTS += --disable-lua\nendif\n\nifeq ($(BR2_PACKAGE_NGHTTP2),y)\nAPACHE_CONF_OPTS += \\\n\t--enable-http2 \\\n\t--with-nghttp2=$(STAGING_DIR)/usr\nAPACHE_DEPENDENCIES += nghttp2\nelse\nAPACHE_CONF_OPTS += --disable-http2\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nAPACHE_DEPENDENCIES += openssl\nAPACHE_CONF_OPTS += \\\n\t--enable-ssl \\\n\t--with-ssl=$(STAGING_DIR)/usr\nelse\nAPACHE_CONF_OPTS += --disable-ssl\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nAPACHE_DEPENDENCIES += zlib\nAPACHE_CONF_OPTS += \\\n\t--enable-deflate \\\n\t--with-z=$(STAGING_DIR)/usr\nelse\nAPACHE_CONF_OPTS += --disable-deflate\nendif\n\ndefine APACHE_FIX_STAGING_APACHE_CONFIG\n\t$(SED) 's%\"/usr/bin\"%\"$(STAGING_DIR)/usr/bin\"%' $(STAGING_DIR)/usr/bin/apxs\n\t$(SED) 's%/usr/build%$(STAGING_DIR)/usr/build%' $(STAGING_DIR)/usr/bin/apxs\n\t$(SED) 's%^prefix =.*%prefix = $(STAGING_DIR)/usr%' $(STAGING_DIR)/usr/build/config_vars.mk\nendef\nAPACHE_POST_INSTALL_STAGING_HOOKS += APACHE_FIX_STAGING_APACHE_CONFIG\n\ndefine APACHE_CLEANUP_TARGET\n\t$(RM) -rf $(TARGET_DIR)/usr/manual $(TARGET_DIR)/usr/build\nendef\nAPACHE_POST_INSTALL_TARGET_HOOKS += APACHE_CLEANUP_TARGET\n\ndefine APACHE_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/apache/S50apache \\\n\t\t$(TARGET_DIR)/etc/init.d/S50apache\nendef\n\ndefine APACHE_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/apache/apache.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/apache.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/apache/apache.service",
    "content": "[Unit]\nDescription=Apache HTTP Server\nAfter=network.target\n\n[Service]\nType=forking\nExecStart=/usr/bin/apachectl start\nExecReload=/usr/bin/apachectl graceful\nExecStop=/usr/bin/apachectl stop\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/apcupsd/Config.in",
    "content": "config BR2_PACKAGE_APCUPSD\n\tbool \"apcupsd\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  A daemon for controlling APC UPSes.\n\n\t  http://www.apcupsd.org/\n\nif BR2_PACKAGE_APCUPSD\n\nconfig BR2_PACKAGE_APCUPSD_APCSMART\n\tbool \"apcsmart\"\n\thelp\n\t  Compile APC SmartUPS serial driver\n\nconfig BR2_PACKAGE_APCUPSD_DUMB\n\tbool \"dumb\"\n\thelp\n\t  Compile dumb UPS driver\n\nconfig BR2_PACKAGE_APCUPSD_MODBUS\n\tbool \"modbus\"\n\thelp\n\t  Compile MODBUS driver code\n\nconfig BR2_PACKAGE_APCUPSD_MODBUS_USB\n\tbool \"modbus usb\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\tselect BR2_PACKAGE_APCUPSD_MODBUS\n\thelp\n\t  Compile MODBUS/USB driver code\n\ncomment \"modbus usb support needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_APCUPSD_NET\n\tbool \"net\"\n\thelp\n\t  Compile networking driver for slaves\n\nconfig BR2_PACKAGE_APCUPSD_PCNET\n\tbool \"pcnet\"\n\thelp\n\t  Compile PCNET driver code\n\nconfig BR2_PACKAGE_APCUPSD_SNMP\n\tbool \"snmp\"\n\thelp\n\t  Compile SNMP driver\n\nconfig BR2_PACKAGE_APCUPSD_USB\n\tbool \"usb\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\thelp\n\t  Compile USB UPS code\n\ncomment \"usb support needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nendif\n\ncomment \"apcupsd needs a toolchain w/ C++, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/apcupsd/apcupsd.hash",
    "content": "# From https://sourceforge.net/projects/apcupsd/files/apcupsd%20-%20Stable/3.14.14/\nmd5  cc8f5ced77f38906a274787acb9bc980  apcupsd-3.14.14.tar.gz\nsha1  f027fa141c929371fe860443b6d911ef3a3606fb  apcupsd-3.14.14.tar.gz\n# Locally computed:\nsha256  db7748559b6b4c3784f9856561ef6ac6199ef7bd019b3edcd7e0a647bf8f9867  apcupsd-3.14.14.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/apcupsd/apcupsd.mk",
    "content": "################################################################################\n#\n# apcupsd\n#\n################################################################################\n\nAPCUPSD_VERSION = 3.14.14\nAPCUPSD_SITE = http://downloads.sourceforge.net/project/apcupsd/apcupsd%20-%20Stable/$(APCUPSD_VERSION)\nAPCUPSD_LICENSE = GPL-2.0\nAPCUPSD_LICENSE_FILES = COPYING\nAPCUPSD_CPE_ID_VENDOR = apcupsd\nAPCUPSD_SELINUX_MODULES = apache apcupsd\nAPCUPSD_CONF_OPTS = --disable-test\n\nifneq ($(BR2_PACKAGE_APCUPSD_MODBUS_USB)$(BR2_PACKAGE_APCUPSD_USB),)\nAPCUPSD_CONF_ENV += ac_cv_path_usbcfg=$(STAGING_DIR)/usr/bin/libusb-config\nifeq ($(BR2_STATIC_LIBS),y)\nAPCUPSD_DEPENDENCIES += host-pkgconf\nAPCUPSD_CONF_ENV += LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs libusb`\"\nendif\nendif\n\nifeq ($(BR2_PACKAGE_APCUPSD_APCSMART),y)\nAPCUPSD_CONF_OPTS += --enable-apcsmart\nelse\nAPCUPSD_CONF_OPTS += --disable-apcsmart\nendif\n\nifeq ($(BR2_PACKAGE_APCUPSD_DUMB),y)\nAPCUPSD_CONF_OPTS += --enable-dumb\nelse\nAPCUPSD_CONF_OPTS += --disable-dumb\nendif\n\nifeq ($(BR2_PACKAGE_APCUPSD_MODBUS_USB),y)\nAPCUPSD_CONF_OPTS += --enable-modbus-usb\nAPCUPSD_DEPENDENCIES += libusb libusb-compat\nelse\nAPCUPSD_CONF_OPTS += --disable-modbus-usb\nendif\n\nifeq ($(BR2_PACKAGE_APCUPSD_MODBUS),y)\nAPCUPSD_CONF_OPTS += --enable-modbus\nelse\nAPCUPSD_CONF_OPTS += --disable-modbus\nendif\n\nifeq ($(BR2_PACKAGE_APCUPSD_NET),y)\nAPCUPSD_CONF_OPTS += --enable-net\nelse\nAPCUPSD_CONF_OPTS += --disable-net\nendif\n\nifeq ($(BR2_PACKAGE_APCUPSD_PCNET),y)\nAPCUPSD_CONF_OPTS += --enable-pcnet\nelse\nAPCUPSD_CONF_OPTS += --disable-pcnet\nendif\n\nifeq ($(BR2_PACKAGE_APCUPSD_SNMP),y)\nAPCUPSD_CONF_OPTS += --enable-snmp\nelse\nAPCUPSD_CONF_OPTS += --disable-snmp\nendif\n\nifeq ($(BR2_PACKAGE_APCUPSD_USB),y)\nAPCUPSD_CONF_OPTS += --enable-usb\nAPCUPSD_DEPENDENCIES += libusb libusb-compat\nelse\nAPCUPSD_CONF_OPTS += --disable-usb\nendif\n\ndefine APCUPSD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/platforms\nendef\n\ndefine APCUPSD_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src DESTDIR=$(TARGET_DIR) install\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/platforms DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/apg/Config.in",
    "content": "config BR2_PACKAGE_APG\n\tbool \"apg\"\n\thelp\n\t  Automated Password Generator (APG).\n\n\t  https://github.com/wilx/apg\n"
  },
  {
    "path": "package/apg/apg.hash",
    "content": "# Locally computed\nsha256  89539aa734a47d68124fca5ba7acbe559edc5003b6791f5200ef9e706dd00fe9  apg-2.3.0b.tar.gz\nsha256  5d0c892ea452c3828f1e311637cde4e3a04eb6431554308b3fcdac8c1b330168  COPYING\n"
  },
  {
    "path": "package/apg/apg.mk",
    "content": "################################################################################\n#\n# apg\n#\n################################################################################\n\nAPG_VERSION = 2.3.0b\nAPG_SITE = $(call github,wilx,apg,v$(APG_VERSION))\nAPG_LICENSE = BSD-3-Clause\nAPG_LICENSE_FILES = COPYING\n\ndefine APG_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) CFLAGS=\"$(APG_CFLAGS)\" \\\n\t\t-C $(@D)\nendef\n\ndefine APG_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/apg $(TARGET_DIR)/usr/bin/apg\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/apitrace/0001-thirdparty-libbacktrace-backtrace-h-include-config.h.patch",
    "content": "From 36ff87a927092b4d62c587736d7684dea9c82e63 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 19 Jul 2021 08:27:48 +0200\nSubject: [PATCH] thirdparty/libbacktrace/backtrace/h: include config.h\n\nBuild on musl is broken since version 10.0 because the include on\nconfig.h was removed by\nhttps://github.com/apitrace/apitrace/commit/1544abf59d68d74977b8b692bea4d7468d65547b:\n\nIn file included from /home/buildroot/autobuild/instance-3/output-1/build/apitrace-10.0/thirdparty/libbacktrace/testlib.c:40:\n/home/buildroot/autobuild/instance-3/output-1/build/apitrace-10.0/thirdparty/libbacktrace/backtrace.h:53:10: fatal error: gstdint.h: No such file or directory\n   53 | #include \"gstdint.h\"\n      |          ^~~~~~~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/a10793d01efa3a1533ba37aa845b9ac2bb1dfb6b\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not needed\n(https://github.com/apitrace/apitrace/issues/755)]\n---\n thirdparty/libbacktrace/backtrace.h | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/thirdparty/libbacktrace/backtrace.h b/thirdparty/libbacktrace/backtrace.h\nindex 2814763f..ab7679a0 100644\n--- a/thirdparty/libbacktrace/backtrace.h\n+++ b/thirdparty/libbacktrace/backtrace.h\n@@ -33,6 +33,8 @@ POSSIBILITY OF SUCH DAMAGE.  */\n #ifndef BACKTRACE_H\n #define BACKTRACE_H\n \n+#include \"config.h\"\n+\n #include <stddef.h>\n #include <stdio.h>\n \n-- \n2.30.2\n\n"
  },
  {
    "path": "package/apitrace/0002-gltrace-Avoid-__libc_dlsym-and-__libc_dlopen_mode-on-GLIBC-2-34.patch",
    "content": "From d28a980802ad48568c87da02d630c8babfe163bb Mon Sep 17 00:00:00 2001\nFrom: Jose Fonseca <jfonseca@vmware.com>\nDate: Wed, 1 Sep 2021 16:34:54 +0100\nSubject: [PATCH] gltrace: Avoid __libc_dlsym and __libc_dlopen_mode on GLIBC\n 2.34.\n\nThese GLIBC_PRIVATE symbols are gone from GLIBC 2.34 due to the merge of\nlibdl.so onto libc.so.\n\nThis means apitrace can't defend against infinite recursion when\nused with Steam Overlay, but at least it should work otherwise.\n\nFixes https://github.com/apitrace/apitrace/issues/756\n\n[Retrieved from:\nhttps://github.com/apitrace/apitrace/commit/d28a980802ad48568c87da02d630c8babfe163bb]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n wrappers/dlsym.cpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/wrappers/dlsym.cpp b/wrappers/dlsym.cpp\nindex 5ab8465b0..5369af35a 100644\n--- a/wrappers/dlsym.cpp\n+++ b/wrappers/dlsym.cpp\n@@ -34,7 +34,7 @@\n #include \"os.hpp\"\n \n \n-#if defined(__GLIBC__) && !defined(__UCLIBC__)\n+#if defined(__GLIBC__) && !defined(__UCLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ < 34\n \n \n #include <dlfcn.h>\n"
  },
  {
    "path": "package/apitrace/Config.in",
    "content": "comment \"apitrace needs a toolchain w/ C++, wchar, dynamic library, threads, gcc >= 7\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\nconfig BR2_PACKAGE_APITRACE\n\tbool \"apitrace\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  Trace and replay OpenGL and OpenGL ES APIs calls to/from a\n\t  file. You may install apitrace GUI from your distribution to\n\t  inspect generated traces.\n\n\t  http://apitrace.github.io/\n"
  },
  {
    "path": "package/apitrace/apitrace.hash",
    "content": "# Locally calculated\nsha256  2e57d37af39369d7ce78666acb8afb1a49ec758f683a21077ec39eb0befae4ad  apitrace-10.0.tar.gz\nsha256  7066bb1b787519c42f8278b77757c21de522cd97755cb30a22759ac401c62260  LICENSE\n"
  },
  {
    "path": "package/apitrace/apitrace.mk",
    "content": "################################################################################\n#\n# apitrace\n#\n################################################################################\n\nAPITRACE_VERSION = 10.0\nAPITRACE_SITE = $(call github,apitrace,apitrace,$(APITRACE_VERSION))\nAPITRACE_LICENSE = MIT\nAPITRACE_LICENSE_FILES = LICENSE\n\nAPITRACE_DEPENDENCIES = host-python3 libpng\n\nifeq ($(BR2_PACKAGE_XORG7),y)\nAPITRACE_DEPENDENCIES += xlib_libX11\nAPITRACE_CONF_OPTS += -DENABLE_X11=ON\nelse\nAPITRACE_CONF_OPTS += -DENABLE_X11=OFF\nendif\n\n# Gui was never tested, so we prefer to explicitly disable it\nAPITRACE_CONF_OPTS += -DENABLE_GUI=false\n\nAPITRACE_CFLAGS = $(TARGET_CFLAGS)\nAPITRACE_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)\n# This works around embedded Brotli build failure\nAPITRACE_CFLAGS += -O0\n# CMakeLists.txt sets CMAKE_CXX_FLAGS_<BUILD_TYPE> depending on\n# BUILD_TYPE, and this comes after the generic CMAKE_CXX_FLAGS.\n# Override CMAKE_BUILD_TYPE so no overrides are applied.\nAPITRACE_CONF_OPTS += -DCMAKE_BUILD_TYPE=Buildroot\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\n# This works around Apitrace itself build failure\nAPITRACE_CXXFLAGS += -O0\nendif\n\nAPITRACE_CONF_OPTS += \\\n\t-DCMAKE_C_FLAGS=\"$(APITRACE_CFLAGS)\" \\\n\t-DCMAKE_CXX_FLAGS=\"$(APITRACE_CXXFLAGS)\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/apparmor/Config.in",
    "content": "config BR2_PACKAGE_APPARMOR\n\tbool \"apparmor\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libapparmor\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libapparmor\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 # libapparmor\n\tselect BR2_PACKAGE_LIBAPPARMOR\n\thelp\n\t  AppArmor is an effective and easy-to-use Linux application\n\t  security system. AppArmor proactively protects the operating\n\t  system and applications from external or internal threats,\n\t  even zero-day attacks, by enforcing good behavior and\n\t  preventing even unknown application flaws from being\n\t  exploited.\n\n\t  This package builds the parser (which can load profiles).\n\n\t  http://wiki.apparmor.net\n\nif BR2_PACKAGE_APPARMOR\n\nconfig BR2_PACKAGE_APPARMOR_BINUTILS\n\tbool \"binutils\"\n\thelp\n\t  A set of utilities (written in C):\n\t    aa-enabled    aa-exec\n\ncomment \"utils need python3\"\n\tdepends on !BR2_PACKAGE_PYTHON3\n\nconfig BR2_PACKAGE_APPARMOR_UTILS\n\tbool \"utils\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # net-tools\n\tselect BR2_PACKAGE_NET_TOOLS # runtime (aa-unconfined)\n\tselect BR2_PACKAGE_PYTHON3_READLINE\n\thelp\n\t  A set of utilities (written in python):\n\t    aa-audit          aa-disable      aa-logprof\n\t    aa-autodep        aa-easyprof     aa-mergeprof\n\t    aa-cleanprof      aa-enforce      aa-status\n\t    aa-complain       aa-genprof      aa-unconfined\n\nif BR2_PACKAGE_APPARMOR_UTILS\n\ncomment \"utils (extras) need bash and perl, and busybox or gawk\"\n\tdepends on !BR2_PACKAGE_BASH || !BR2_PACKAGE_PERL \\\n\t\t|| !(BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_GAWK)\n\nconfig BR2_PACKAGE_APPARMOR_UTILS_EXTRA\n\tbool \"utils (extras)\"\n\tdepends on BR2_PACKAGE_BASH\n\tdepends on BR2_PACKAGE_PERL\n\tdepends on BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_GAWK\n\thelp\n\t  An extra set of utilities (written in a mixture of sh,\n\t  bash, perl, and awk):\n\t    aa-decode          (bash + perl)\n\t    aa-notify          (perl)\n\t    aa-remove-unknown  (sh + awk)\n\nendif # BR2_PACKAGE_APPARMOR_UTILS\n\nconfig BR2_PACKAGE_APPARMOR_PROFILES\n\tbool \"profiles\"\n\thelp\n\t  Installs server-class profiles for a wide range of\n\t  usual programs and daemons.\n\nendif # BR2_PACKAGE_APPARMOR\n\ncomment \"apparmor needs a toolchain w/ headers >= 3.16, threads, C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16\n"
  },
  {
    "path": "package/apparmor/apparmor.hash",
    "content": "# From: https://gitlab.com/apparmor/apparmor/-/wikis/home#userspace\nsha256  153db05d8f491e0596022663c19fb1166806cb473b3c6f0a7279feda2ec25a59  apparmor-3.0.3.tar.gz\n\n# locally computed\nsha256  a7e0cdcbea5c14927cedfc600d46526bdcbb1eb0a4d951e2ea53c2a6de159cb4  LICENSE\nsha256  dd54950fa69a3096fe907a466a454d217ccca9bca77398d5232704766d5a0040  parser/COPYING.GPL\n"
  },
  {
    "path": "package/apparmor/apparmor.mk",
    "content": "################################################################################\n#\n# apparmor\n#\n################################################################################\n\n# When updating the version here, please also update the libapparmor package\nAPPARMOR_VERSION_MAJOR = 3.0\nAPPARMOR_VERSION = $(APPARMOR_VERSION_MAJOR).3\nAPPARMOR_SITE = https://launchpad.net/apparmor/$(APPARMOR_VERSION_MAJOR)/$(APPARMOR_VERSION)/+download\nAPPARMOR_DL_SUBDIR = libapparmor\nAPPARMOR_LICENSE = GPL-2.0\nAPPARMOR_LICENSE_FILES = LICENSE parser/COPYING.GPL\nAPPARMOR_CPE_ID_VENDOR = canonical\n\nAPPARMOR_DEPENDENCIES = libapparmor\n\nAPPARMOR_TOOLS = parser\nAPPARMOR_MAKE_OPTS = USE_SYSTEM=1 DISTRO=unknown POD2MAN=true POD2HTML=true\n\nifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y)\nAPPARMOR_DEPENDENCIES += gettext\nAPPARMOR_MAKE_OPTS += WITH_LIBINTL=1\nendif\n\nifeq ($(BR2_PACKAGE_APPARMOR_BINUTILS),y)\nAPPARMOR_TOOLS += binutils\nendif\n\nifeq ($(BR2_PACKAGE_APPARMOR_UTILS),y)\nAPPARMOR_DEPENDENCIES += host-python3 python3\nAPPARMOR_TOOLS += utils\nAPPARMOR_MAKE_OPTS += PYTHON=$(HOST_DIR)/bin/python3\n\nifeq ($(BR2_PACKAGE_APPARMOR_UTILS_EXTRA),)\ndefine APPARMOR_UTILS_NO_EXTRA\n\t$(Q)rm -f $(addprefix $(TARGET_DIR)/usr/sbin/,aa-decode aa-notify aa-remove-unknown)\nendef\nAPPARMOR_POST_INSTALL_TARGET_HOOKS += APPARMOR_UTILS_NO_EXTRA\nendif # BR2_PACKAGE_APPARMOR_UTILS_EXTRA\n\nendif # BR2_PACKAGE_APPARMOR_UTILS\n\nifeq ($(BR2_PACKAGE_APPARMOR_PROFILES),y)\nAPPARMOR_TOOLS += profiles\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nAPPARMOR_DEPENDENCIES += linux-pam\nAPPARMOR_TOOLS += changehat/pam_apparmor\nendif\n\nifeq ($(BR2_PACKAGE_APACHE),y)\nAPPARMOR_DEPENDENCIES += apache\nAPPARMOR_TOOLS += changehat/mod_apparmor\nAPPARMOR_MAKE_OPTS += APXS=$(STAGING_DIR)/usr/bin/apxs\n\nifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)\ndefine APPARMOR_FIXUP_APXS\n\t$(SED) \"s@$(PER_PACKAGE_DIR)/[^/]\\+/@$(PER_PACKAGE_DIR)/apparmor/@g\" \\\n\t\t$(STAGING_DIR)/usr/bin/apxs \\\n\t\t$(STAGING_DIR)/usr/build/config_vars.mk \\\n\t\t$(STAGING_DIR)/usr/build-1/libtool\nendef\nAPPARMOR_POST_CONFIGURE_HOOKS += APPARMOR_FIXUP_APXS\nendif\nendif\n\ndefine APPARMOR_BUILD_CMDS\n\t$(foreach tool,$(APPARMOR_TOOLS),\\\n\t\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \\\n\t\t$(MAKE) -C $(@D)/$(tool) $(APPARMOR_MAKE_OPTS)\n\t)\nendef\n\ndefine APPARMOR_INSTALL_TARGET_CMDS\n\t$(foreach tool,$(APPARMOR_TOOLS),\\\n\t\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \\\n\t\t$(MAKE) -C $(@D)/$(tool) $(APPARMOR_MAKE_OPTS) \\\n\t\t\tDESTDIR=$(TARGET_DIR) install\n\t)\nendef\n\n# Despite its name, apparmor.systemd is a sysv-init compatible startup script\ndefine APPARMOR_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 $(@D)/parser/apparmor.systemd \\\n\t\t$(TARGET_DIR)/etc/init.d/S00apparmor\nendef\n\ndefine APPARMOR_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0755 $(@D)/parser/apparmor.systemd \\\n\t\t$(TARGET_DIR)/lib/apparmor/apparmor.systemd\n\t$(INSTALL) -D -m 0644 $(@D)/parser/apparmor.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/apparmor.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/apr/0001-cross-compile.patch",
    "content": "Fix cross-compilation\n\nPatch was backported from Apache httpd:\nhttp://svn.apache.org/viewvc?view=revision&revision=1327907\nhttp://svn.apache.org/viewvc?view=revision&revision=1328390\nhttp://svn.apache.org/viewvc?view=revision&revision=1328714\n\nPatch submitted upstream:\nhttps://issues.apache.org/bugzilla/show_bug.cgi?id=57058\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr apr-1.5.1.org/configure.in apr-1.5.1/configure.in\n--- apr-1.5.1.org/configure.in\t2014-01-25 16:17:29.000000000 +0100\n+++ apr-1.5.1/configure.in\t2014-10-05 11:20:40.080746760 +0200\n@@ -118,6 +118,16 @@\n echo \"Configuring APR library\"\n echo \"Platform: $host\"\n \n+dnl In case of cross compilation we set CC_FOR_BUILD to cc unless\n+dnl we got already CC_FOR_BUILD from environment.\n+if test \"x${build_alias}\" != \"x${host_alias}\"; then\n+  if test \"x${CC_FOR_BUILD}\" = \"x\"; then\n+    CC_FOR_BUILD=cc\n+  fi\n+fi\n+AC_SUBST(CC_FOR_BUILD)\n+AC_SUBST(CFLAGS_FOR_BUILD)\n+\n dnl Some initial steps for configuration.  We setup the default directory\n dnl and which files are to be configured.\n \ndiff -uNr apr-1.5.1.org/Makefile.in apr-1.5.1/Makefile.in\n--- apr-1.5.1.org/Makefile.in\t2014-03-17 16:10:26.000000000 +0100\n+++ apr-1.5.1/Makefile.in\t2014-10-05 11:22:53.031070519 +0200\n@@ -8,6 +8,8 @@\n # APR (Apache Portable Runtime) library Makefile.\n #\n CPP = @CPP@\n+CC_FOR_BUILD = @CC_FOR_BUILD@\n+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@\n \n # get substituted into some targets\n APR_MAJOR_VERSION=@APR_MAJOR_VERSION@\n@@ -134,8 +134,13 @@\n \t$(APR_MKDIR) tools\n \t$(LT_COMPILE)\n \n+ifdef CC_FOR_BUILD\n+tools/gen_test_char@EXEEXT@: tools/gen_test_char.c $(LOCAL_LIBS)\n+\t$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $<\n+else\n tools/gen_test_char@EXEEXT@: $(OBJECTS_gen_test_char)\n \t$(LINK_PROG) $(OBJECTS_gen_test_char) $(ALL_LIBS)\n+endif\n \n include/private/apr_escape_test_char.h: tools/gen_test_char@EXEEXT@\n \t$(APR_MKDIR) include/private\n"
  },
  {
    "path": "package/apr/0002-sys-param-h.patch",
    "content": "Fix PATH_MAX detection by including sys/param.h if available\n\nPatch sent upstream:\nhttps://bz.apache.org/bugzilla/show_bug.cgi?id=63782\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr apr-1.7.0.orig/configure.in apr-1.7.0/configure.in\n--- apr-1.7.0.orig/configure.in\t2019-04-01 19:40:46.000000000 +0200\n+++ apr-1.7.0/configure.in\t2019-09-29 17:03:41.803326791 +0200\n@@ -1586,6 +1586,7 @@\n AC_SUBST(stringh)\n AC_SUBST(stringsh)\n AC_SUBST(sys_ioctlh)\n+AC_SUBST(sys_paramh)\n AC_SUBST(sys_sendfileh)\n AC_SUBST(sys_signalh)\n AC_SUBST(sys_socketh)\ndiff -uNr apr-1.7.0.orig/include/apr.h.in apr-1.7.0/include/apr.h.in\n--- apr-1.7.0.orig/include/apr.h.in\t2019-03-22 14:30:31.000000000 +0100\n+++ apr-1.7.0/include/apr.h.in\t2019-09-29 17:04:54.203815469 +0200\n@@ -95,6 +95,7 @@\n #define APR_HAVE_STRINGS_H       @stringsh@\n #define APR_HAVE_INTTYPES_H      @inttypesh@\n #define APR_HAVE_SYS_IOCTL_H     @sys_ioctlh@\n+#define APR_HAVE_SYS_PARAM_H     @sys_paramh@\n #define APR_HAVE_SYS_SENDFILE_H  @sys_sendfileh@\n #define APR_HAVE_SYS_SIGNAL_H    @sys_signalh@\n #define APR_HAVE_SYS_SOCKET_H    @sys_socketh@\n@@ -206,6 +207,9 @@\n #include <sys/syslimits.h>\n #endif\n #endif\n+#if APR_HAVE_SYS_PARAM_H\n+#include <sys/param.h>\n+#endif\n \n /* __APPLE__ is now the official pre-defined macro for macOS */\n #ifdef __APPLE__\n"
  },
  {
    "path": "package/apr/0003-Merge-r1887279-from-trunk.patch",
    "content": "From a15958a37a06f71c42c690278f9c958b93b7ee20 Mon Sep 17 00:00:00 2001\nFrom: Yann Ylavic <ylavic@apache.org>\nDate: Thu, 11 Mar 2021 14:10:21 +0000\nSubject: [PATCH] Merge r1887279 from trunk:\n\nbuild/apr_common.m4: avoid explicit inclusion of \"confdefs.h\"\n\nThe failure is observed on `autoconf-2.69d` (soon to be released\nas `autoconf-2.70`). There `int64_t` detection fails as:\n\n$ autoreconf && ./configure\nchecking whether int64_t and int use fmt %d... no\nchecking whether int64_t and long use fmt %ld... no\nchecking whether int64_t and long long use fmt %lld... no\nconfigure: error: could not determine the string function for int64_t\n```\n\nThis happens because `./configure` always stumbles on warning:\n\nconfigure:3350: gcc -c -g -O2 -Werror  conftest.c >&5\nIn file included from conftest.c:31:\nconfdefs.h:22: error: \"__STDC_WANT_IEC_60559_ATTRIBS_EXT__\" redefined [-Werror]\n   22 | #define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1\n      |\n\nIt's triggered by double inclusion of `\"confdefs.h\"` contents:\nexplicitly in `APR_TRY_COMPILE_NO_WARNING` macro and implicitly\nvia `AC_LANG_SOURCE` use.\n\nTo fix it and avoid having to define `main()` declaration the change\nuses `AC_LANG_PROGRAM` instead.\n\nTested on both `autoconf-2.69` and `autoconf-2.69d`.\n\n\nGithub: closes #25\nSubmitted by: Sergei Trofimovich <slyfox gentoo.org>\nReviewed by: ylavic\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/apr/apr/branches/1.7.x@1887485 13f79535-47bb-0310-9956-ffa450edef68\n\n[Retrieved from:\nhttps://github.com/apache/apr/commit/0a763c5e500f4304b7c534fae0fad430d64982e8]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n build/apr_common.m4 | 8 ++------\n 1 file changed, 2 insertions(+), 6 deletions(-)\n\ndiff --git a/build/apr_common.m4 b/build/apr_common.m4\nindex 297dd32cf75..b67a8608abe 100644\n--- a/build/apr_common.m4\n+++ b/build/apr_common.m4\n@@ -467,13 +467,9 @@ AC_DEFUN([APR_TRY_COMPILE_NO_WARNING],\n    CFLAGS=\"$CFLAGS -Werror\"\n  fi\n  AC_COMPILE_IFELSE(\n-  [AC_LANG_SOURCE(\n-   [#include \"confdefs.h\"\n-   ]\n-   [[$1]]\n-   [int main(int argc, const char *const *argv) {]\n+  [AC_LANG_PROGRAM(\n+   [[$1]],\n    [[$2]]\n-   [   return 0; }]\n   )], [CFLAGS=$apr_save_CFLAGS\n $3],  [CFLAGS=$apr_save_CFLAGS\n $4])\n"
  },
  {
    "path": "package/apr/Config.in",
    "content": "config BR2_PACKAGE_APR\n\tbool \"apr\"\n\t# apr really needs shared library support\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU # fork() in apr_proc_fork()\n\thelp\n\t  The mission of the Apache Portable Runtime (APR) project is to\n\t  create and maintain software libraries that provide a\n\t  predictable and consistent interface to underlying\n\t  platform-specific implementations\n\n\t  http://apr.apache.org/\n\ncomment \"apr needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/apr/apr.hash",
    "content": "# From http://archive.apache.org/dist/apr/apr-1.7.0.tar.bz2.sha256\nsha256 e2e148f0b2e99b8e5c6caa09f6d4fb4dd3e83f744aa72a952f94f5a14436f7ea  apr-1.7.0.tar.bz2\n# Locally calculated\nsha256 f854aeef66ecd55a126226e82b3f26793fc3b1c584647f6a0edc5639974c38ad  LICENSE\n"
  },
  {
    "path": "package/apr/apr.mk",
    "content": "################################################################################\n#\n# apr\n#\n################################################################################\n\nAPR_VERSION = 1.7.0\nAPR_SOURCE = apr-$(APR_VERSION).tar.bz2\nAPR_SITE = http://archive.apache.org/dist/apr\nAPR_LICENSE = Apache-2.0\nAPR_LICENSE_FILES = LICENSE\nAPR_CPE_ID_VENDOR = apache\nAPR_CPE_ID_PRODUCT = portable_runtime\nAPR_INSTALL_STAGING = YES\n# We have a patch touching configure.in and Makefile.in,\n# so we need to autoreconf:\nAPR_AUTORECONF = YES\n\n# avoid apr_hints.m4 by setting apr_preload_done=yes and set\n# the needed CFLAGS on our own (avoids '-D_REENTRANT' in case\n# not supported by toolchain and subsequent configure failure)\nAPR_CFLAGS = $(TARGET_CFLAGS) -DLINUX -D_GNU_SOURCE\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nAPR_CFLAGS += -D_REENTRANT\nendif\n\nAPR_CONF_ENV = \\\n\tCC_FOR_BUILD=\"$(HOSTCC)\" \\\n\tCFLAGS_FOR_BUILD=\"$(HOST_CFLAGS)\" \\\n\tCFLAGS=\"$(APR_CFLAGS)\" \\\n\tac_cv_file__dev_zero=yes \\\n\tac_cv_func_setpgrp_void=yes \\\n\tapr_cv_process_shared_works=yes \\\n\tapr_cv_mutex_robust_shared=no \\\n\tapr_cv_tcp_nodelay_with_cork=yes \\\n\tac_cv_sizeof_struct_iovec=8 \\\n\tac_cv_sizeof_pid_t=4 \\\n\tac_cv_struct_rlimit=yes \\\n\tac_cv_o_nonblock_inherited=no \\\n\tapr_cv_mutex_recursive=yes \\\n\tapr_cv_epoll=yes \\\n\tapr_cv_epoll_create1=yes \\\n\tapr_cv_dup3=yes \\\n\tapr_cv_sock_cloexec=yes \\\n\tapr_cv_accept4=yes \\\n\tapr_preload_done=yes\nAPR_CONFIG_SCRIPTS = apr-1-config\n\n# Doesn't even try to guess when cross compiling\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nAPR_CONF_ENV += apr_cv_pthreads_lib=\"-lpthread\"\nendif\n\n# Fix lfs detection when cross compiling\nAPR_CONF_ENV += apr_cv_use_lfs64=yes\n\n# Use non-portable atomics when available. We have to override\n# ap_cv_atomic_builtins because the test used to  check for atomic\n# builtins uses AC_TRY_RUN, which doesn't work when cross-compiling.\nifeq ($(BR2_TOOLCHAIN_HAS_SYNC_8),y)\nAPR_CONF_OPTS += --enable-nonportable-atomics\nAPR_CONF_ENV += ap_cv_atomic_builtins=yes\nelse\nAPR_CONF_OPTS += --disable-nonportable-atomics\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)\nAPR_DEPENDENCIES += util-linux\nendif\n\ndefine APR_CLEANUP_UNNEEDED_FILES\n\t$(RM) -rf $(TARGET_DIR)/usr/build-1/\nendef\n\nAPR_POST_INSTALL_TARGET_HOOKS += APR_CLEANUP_UNNEEDED_FILES\n\ndefine APR_FIXUP_RULES_MK\n\t$(SED) 's%apr_builddir=%apr_builddir=$(STAGING_DIR)%' \\\n\t\t$(STAGING_DIR)/usr/build-1/apr_rules.mk\n\t$(SED) 's%apr_builders=%apr_builders=$(STAGING_DIR)%' \\\n\t\t$(STAGING_DIR)/usr/build-1/apr_rules.mk\n\t$(SED) 's%top_builddir=%top_builddir=$(STAGING_DIR)%' \\\n\t\t$(STAGING_DIR)/usr/build-1/apr_rules.mk\nendef\n\nAPR_POST_INSTALL_STAGING_HOOKS += APR_FIXUP_RULES_MK\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/apr-util/0001-remove-checkapr.patch",
    "content": "remove check apr\n\nthis patch removes the check of apr which fails the build\n\nSigned-off-by: Rico Bachmann <bachmann-ahF9wiJNQgNBDgjK7y7TUQ@public.gmane.org>\n---\nv1: disable the check for APU_FIND_APR because the check only looks into folders\nnamed apr, and our source-tree is called apr-versionnumber (e.g. apr-1.4.6)\n\ndiff -rupN apr-util-1.4.1/configure.in apr-util-1.4.1-fix/configure.in\n--- apr-util-1.4.1/configure.in\t2009-12-17 20:15:19.000000000 +0100\n+++ apr-util-1.4.1-fix/configure.in\t2012-04-24 10:10:32.000000000 +0200\n@@ -99,7 +99,7 @@ fi\n dnl\n dnl Find the APR includes directory and (possibly) the source (base) dir.\n dnl\n-APU_FIND_APR\n+dnl APU_FIND_APR\n \n dnl\n dnl even though we use apr_rules.mk for building apr-util, we need\n"
  },
  {
    "path": "package/apr-util/Config.in",
    "content": "config BR2_PACKAGE_APR_UTIL\n\tbool \"apr-util\"\n\t# apr really needs shared library support\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU # apr\n\tselect BR2_PACKAGE_APR\n\tselect BR2_PACKAGE_EXPAT\n\thelp\n\t  The utility library for the apache runtime project\n\n\t  http://apr.apache.org/\n\ncomment \"apr-util needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/apr-util/apr-util.hash",
    "content": "# From http://www.apache.org/dist/apr/apr-util-1.6.1.tar.bz2.sha256\nsha256\td3e12f7b6ad12687572a3a39475545a072608f4ba03a6ce8a3778f607dd0035b\tapr-util-1.6.1.tar.bz2\n# Locally calculated\nsha256\tef5609d18601645ad6fe22c6c122094be40e976725c1d0490778abacc836e7a2\tLICENSE\n"
  },
  {
    "path": "package/apr-util/apr-util.mk",
    "content": "################################################################################\n#\n# apr-util\n#\n################################################################################\n\nAPR_UTIL_VERSION = 1.6.1\nAPR_UTIL_SOURCE = apr-util-$(APR_UTIL_VERSION).tar.bz2\nAPR_UTIL_SITE = http://archive.apache.org/dist/apr\nAPR_UTIL_LICENSE = Apache-2.0\nAPR_UTIL_LICENSE_FILES = LICENSE\nAPR_UTIL_CPE_ID_VENDOR = apache\nAPR_UTIL_CPE_ID_PRODUCT = portable_runtime_utility\nAPR_UTIL_INSTALL_STAGING = YES\nAPR_UTIL_DEPENDENCIES = apr expat\nAPR_UTIL_CONF_OPTS = \\\n\t--with-apr=$(STAGING_DIR)/usr/bin/apr-1-config\nAPR_UTIL_CONFIG_SCRIPTS = apu-1-config\n\nifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)\ndefine APR_UTIL_FIX_LIBTOOL\n\t$(SED) 's,$(PER_PACKAGE_DIR)/apr/,$(PER_PACKAGE_DIR)/apr-util/,g' \\\n\t\t$(STAGING_DIR)/usr/build-1/libtool\nendef\nAPR_UTIL_POST_PREPARE_HOOKS += APR_UTIL_FIX_LIBTOOL\n\ndefine APR_UTIL_FIX_RULES_MK\n\t$(SED) 's,$(PER_PACKAGE_DIR)/apr/,$(PER_PACKAGE_DIR)/apr-util/,g' \\\n\t\t$(@D)/build/rules.mk\nendef\nAPR_UTIL_POST_CONFIGURE_HOOKS += APR_UTIL_FIX_RULES_MK\nendif\n\n# When iconv is available, then use it to provide charset conversion\n# features.\nAPR_UTIL_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\nifeq ($(BR2_PACKAGE_BERKELEYDB),y)\nAPR_UTIL_CONF_OPTS += --with-dbm=db53 --with-berkeley-db=\"$(STAGING_DIR)/usr\"\nAPR_UTIL_DEPENDENCIES += berkeleydb\nelse\nAPR_UTIL_CONF_OPTS += --without-berkeley-db\nendif\n\nifeq ($(BR2_PACKAGE_GDBM),y)\nAPR_UTIL_CONF_OPTS += --with-gdbm=\"$(STAGING_DIR)/usr\"\nAPR_UTIL_DEPENDENCIES += gdbm\nelse\nAPR_UTIL_CONF_OPTS += --without-gdbm\nendif\n\nifeq ($(BR2_PACKAGE_MYSQL),y)\nAPR_UTIL_CONF_OPTS += --with-mysql=\"$(STAGING_DIR)/usr\"\nAPR_UTIL_DEPENDENCIES += mysql\nelse\nAPR_UTIL_CONF_OPTS += --without-mysql\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE),y)\nAPR_UTIL_CONF_OPTS += --with-sqlite3=\"$(STAGING_DIR)/usr\"\nAPR_UTIL_DEPENDENCIES += sqlite\nelse\nAPR_UTIL_CONF_OPTS += --without-sqlite3\nendif\n\nifeq ($(BR2_PACKAGE_OPENLDAP),y)\nAPR_UTIL_CONF_ENV += ac_cv_ldap_set_rebind_proc_style=three\nAPR_UTIL_CONF_OPTS += \\\n\t--with-ldap \\\n\t--with-ldap-include=\"$(STAGING_DIR)/usr/include/\" \\\n\t--with-ldap-lib=\"$(STAGING_DIR)/usr/lib\"\nAPR_UTIL_DEPENDENCIES += openldap\nelse\nAPR_UTIL_CONF_OPTS += --without-ldap\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nAPR_UTIL_CONF_OPTS += --with-crypto --with-openssl=\"$(STAGING_DIR)/usr\"\nAPR_UTIL_DEPENDENCIES += openssl\nelse\nAPR_UTIL_CONF_OPTS += --without-crypto\nendif\n\nifeq ($(BR2_PACKAGE_POSTGRESQL),y)\nAPR_UTIL_CONF_OPTS += --with-pgsql=\"$(STAGING_DIR)/usr\"\nAPR_UTIL_DEPENDENCIES += postgresql\nelse\nAPR_UTIL_CONF_OPTS += --without-pgsql\nendif\n\nifeq ($(BR2_PACKAGE_UNIXODBC),y)\nAPR_UTIL_CONF_OPTS += --with-odbc=\"$(STAGING_DIR)/usr\"\n# avoid using target binary $(STAGING_DIR)/usr/bin/odbc_config\nAPR_UTIL_CONF_ENV += ac_cv_path_ODBC_CONFIG=\"\"\nAPR_UTIL_DEPENDENCIES += unixodbc\nelse\nAPR_UTIL_CONF_OPTS += --without-odbc\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/argp-standalone/0001-throw-in-funcdef.patch",
    "content": "# --- T2-COPYRIGHT-NOTE-BEGIN ---\n# This copyright note is auto-generated by ./scripts/Create-CopyPatch.\n# \n# T2 SDE: package/.../rng-tools/throw-in-funcdef.patch.argp-standalone\n# Copyright (C) 2006 The T2 SDE Project\n# \n# More information can be found in the files COPYING and README.\n# \n# This patch file is dual-licensed. It is available under the license the\n# patched project is licensed under, as long as it is an OpenSource license\n# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms\n# of the GNU General Public License as published by the Free Software\n# Foundation; either version 2 of the License, or (at your option) any later\n# version.\n# --- T2-COPYRIGHT-NOTE-END ---\n\n\nNo __THROW in function implementation.\n\t--jsaw\n\n--- argp-standalone-1.4-test2/argp.h.orig\t2006-01-06 02:29:59.000000000 +0100\n+++ argp-standalone-1.4-test2/argp.h\t2006-01-06 02:41:10.000000000 +0100\n@@ -560,17 +560,17 @@\n # endif\n \n # ifndef ARGP_EI\n-#  define ARGP_EI extern __inline__\n+#  define ARGP_EI extern inline\n # endif\n \n ARGP_EI void\n-__argp_usage (__const struct argp_state *__state) __THROW\n+__argp_usage (__const struct argp_state *__state)\n {\n   __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE);\n }\n \n ARGP_EI int\n-__option_is_short (__const struct argp_option *__opt) __THROW\n+__option_is_short (__const struct argp_option *__opt)\n {\n   if (__opt->flags & OPTION_DOC)\n     return 0;\n@@ -582,7 +582,7 @@\n }\n \n ARGP_EI int\n-__option_is_end (__const struct argp_option *__opt) __THROW\n+__option_is_end (__const struct argp_option *__opt)\n {\n   return !__opt->key && !__opt->name && !__opt->doc && !__opt->group;\n }\n--- argp-standalone-1.4-test2/argp-parse.c.orig\t2006-01-06 02:47:48.000000000 +0100\n+++ argp-standalone-1.4-test2/argp-parse.c\t2006-01-06 02:48:16.000000000 +0100\n@@ -1290,13 +1290,13 @@\n /* Defined here, in case a user is not inlining the definitions in\n  * argp.h */\n void\n-__argp_usage (__const struct argp_state *__state) __THROW\n+__argp_usage (__const struct argp_state *__state)\n {\n   __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE);\n }\n \n int\n-__option_is_short (__const struct argp_option *__opt) __THROW\n+__option_is_short (__const struct argp_option *__opt) \n {\n   if (__opt->flags & OPTION_DOC)\n     return 0;\n@@ -1310,7 +1310,7 @@\n }\n \n int\n-__option_is_end (__const struct argp_option *__opt) __THROW\n+__option_is_end (__const struct argp_option *__opt) \n {\n   return !__opt->key && !__opt->name && !__opt->doc && !__opt->group;\n }\n"
  },
  {
    "path": "package/argp-standalone/0002-isprint.patch",
    "content": "Subject: restrict value range passed to isprint function\n\nAccording to C standards isprint argument shall be representable as an\nunsigned char or be equal to EOF, otherwise the behaviour is undefined.\n\nPassing arbitrary ints leads to segfault in nm program from elfutils.\n\nRestrict isprint argument range to values representable by unsigned char.\n\nSigned-off-by: Max Filippov <jcmvbkbc@gmail.com>\n---\nIndex: b/argp.h\n===================================================================\n--- a/argp.h\n+++ b/argp.h\n@@ -23,6 +23,7 @@\n \n #include <stdio.h>\n #include <ctype.h>\n+#include <limits.h>\n \n #define __need_error_t\n #include <errno.h>\n@@ -577,7 +578,7 @@\n   else\n     {\n       int __key = __opt->key;\n-      return __key > 0 && isprint (__key);\n+      return __key > 0 && __key <= UCHAR_MAX && isprint (__key);\n     }\n }\n \nIndex: b/argp-parse.c\n===================================================================\n--- a/argp-parse.c\n+++ b/argp-parse.c\n@@ -1292,7 +1292,7 @@\n       int __key = __opt->key;\n       /* FIXME: whether or not a particular key implies a short option\n        * ought not to be locale dependent. */\n-      return __key > 0 && isprint (__key);\n+      return __key > 0 && __key <= UCHAR_MAX && isprint (__key);\n     }\n }\n \n"
  },
  {
    "path": "package/argp-standalone/0003-fix_build_with_c99_compilers.patch",
    "content": "From b2dfa011a3fdcb7d22764d143517d0fbd1c2a201 Mon Sep 17 00:00:00 2001\nFrom: Emmanuel Dreyfus <manu@netbsd.org>\nDate: Wed, 22 Jan 2014 14:47:23 +0100\nSubject: [PATCH] Fix build with c99 compilers\n\nBUG: 764655\nChange-Id: If5dfdc9c7427bd3d39d8da8f79e33ae2da6a3137\nSigned-off-by: Emmanuel Dreyfus <manu@netbsd.org>\nReviewed-on: http://review.gluster.org/6034\nReviewed-by: Harshavardhana <harsha@harshavardhana.net>\nTested-by: Gluster Build System <jenkins@build.gluster.com>\n---\n\ndiff --git a/argp-fmtstream.c b/argp-fmtstream.c\nindex 7f79285..494b6b3 100644\n--- a/argp-fmtstream.c\n+++ b/argp-fmtstream.c\n@@ -389,6 +389,7 @@\n weak_alias (__argp_fmtstream_printf, argp_fmtstream_printf)\n #endif\n \n+#if __STDC_VERSION__ - 199900L < 1\n /* Duplicate the inline definitions in argp-fmtstream.h, for compilers\n  * that don't do inlining. */\n size_t\n@@ -471,5 +472,6 @@\n     __argp_fmtstream_update (__fs);\n   return __fs->point_col >= 0 ? __fs->point_col : 0;\n }\n+#endif /* __STDC_VERSION__ - 199900L < 1 */\n \n #endif /* !ARGP_FMTSTREAM_USE_LINEWRAP */\ndiff --git a/argp-fmtstream.h b/argp-fmtstream.h\nindex e797b11..828f435 100644\n--- a/argp-fmtstream.h\n+++ b/argp-fmtstream.h\n@@ -153,6 +153,7 @@\n \t\t\t\t      __const char *__fmt, ...)\n      PRINTF_STYLE(2,3);\n \n+#if __STDC_VERSION__ - 199900L < 1\n extern int __argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch);\n extern int argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch);\n \n@@ -163,6 +164,7 @@\n \t\t\t\t      __const char *__str, size_t __len);\n extern size_t argp_fmtstream_write (argp_fmtstream_t __fs,\n \t\t\t\t    __const char *__str, size_t __len);\n+#endif /* __STDC_VERSION__ - 199900L < 1 */\n \f\n /* Access macros for various bits of state.  */\n #define argp_fmtstream_lmargin(__fs) ((__fs)->lmargin)\n@@ -172,6 +174,7 @@\n #define __argp_fmtstream_rmargin argp_fmtstream_rmargin\n #define __argp_fmtstream_wmargin argp_fmtstream_wmargin\n \n+#if __STDC_VERSION__ - 199900L < 1\n /* Set __FS's left margin to LMARGIN and return the old value.  */\n extern size_t argp_fmtstream_set_lmargin (argp_fmtstream_t __fs,\n \t\t\t\t\t  size_t __lmargin);\n@@ -193,6 +196,7 @@\n /* Return the column number of the current output point in __FS.  */\n extern size_t argp_fmtstream_point (argp_fmtstream_t __fs);\n extern size_t __argp_fmtstream_point (argp_fmtstream_t __fs);\n+#endif /* __STDC_VERSION__ - 199900L < 1 */\n \n /* Internal routines.  */\n extern void _argp_fmtstream_update (argp_fmtstream_t __fs);\n"
  },
  {
    "path": "package/argp-standalone/Config.in",
    "content": "config BR2_PACKAGE_ARGP_STANDALONE\n\tbool \"argp-standalone\"\n\t# glibc provides its own argp implementation.\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  Glibc hierarchical argument parsing standalone library.\n\n\t  http://www.lysator.liu.se/~nisse/misc/\n"
  },
  {
    "path": "package/argp-standalone/argp-standalone.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  dec79694da1319acd2238ce95df57f3680fea2482096e483323fddf3d818d8be  argp-standalone-1.3.tar.gz\n\n# License file\nsha256  bbb8919aa520069b0234faf5e83a94052d278419ffe97ca8e843ecc9b212d1ab  argp.h\n"
  },
  {
    "path": "package/argp-standalone/argp-standalone.mk",
    "content": "################################################################################\n#\n# argp-standalone\n#\n################################################################################\n\nARGP_STANDALONE_VERSION = 1.3\nARGP_STANDALONE_SITE = http://www.lysator.liu.se/~nisse/archive\nARGP_STANDALONE_INSTALL_STAGING = YES\nARGP_STANDALONE_LICENSE = LGPL-2.0+\nARGP_STANDALONE_LICENSE_FILES = argp.h\n\nARGP_STANDALONE_CONF_ENV = \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -fPIC -fgnu89-inline\"\n\ndefine ARGP_STANDALONE_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D $(@D)/libargp.a $(STAGING_DIR)/usr/lib/libargp.a\n\t$(INSTALL) -D $(@D)/argp.h $(STAGING_DIR)/usr/include/argp.h\nendef\n\ndefine ARGP_STANDALONE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D $(@D)/libargp.a $(TARGET_DIR)/usr/lib/libargp.a\n\t$(INSTALL) -D $(@D)/argp.h $(TARGET_DIR)/usr/include/argp.h\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/argparse/Config.in",
    "content": "config BR2_PACKAGE_ARGPARSE\n\tbool \"argparse\"\n\thelp\n\t  Argparse is a feature-rich command line parser for Lua\n\t  inspired by argparse for Python. Argparse supports\n\t  positional arguments, options, flags, optional arguments,\n\t  subcommands and more. Argparse automatically generates\n\t  usage, help and error messages.\n\n\t  https://github.com/luarocks/argparse\n"
  },
  {
    "path": "package/argparse/argparse.hash",
    "content": "# computed by luarocks/buildroot\nsha256 ea30d0643586a20aeb6349ca8cb7db63aefc21d9aa007c7b7168a7c564817879  argparse-0.7.1-1.src.rock\nsha256 9a918f21485b2a4529c901491d9101392f03586d65ad5b024a4445ebc1dc37b4  argparse-0.7.1/LICENSE\n"
  },
  {
    "path": "package/argparse/argparse.mk",
    "content": "################################################################################\n#\n# argparse\n#\n################################################################################\n\nARGPARSE_VERSION = 0.7.1-1\nARGPARSE_LICENSE = MIT\nARGPARSE_LICENSE_FILES = $(ARGPARSE_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/argus/Config.in",
    "content": "config BR2_PACKAGE_ARGUS\n\tbool \"argus\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBPCAP\n\tselect BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  A Real Time Flow Monitor-based audit engine.\n\n\t  http://qosient.com/argus/\n\ncomment \"argus needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/argus/argus.hash",
    "content": "# From http://qosient.com/argus/src/argus-3.0.8.2.tar.gz.md5\nmd5\teaf5f5ec66569e556392802a70ef9ca5  argus-3.0.8.2.tar.gz\n\n# Locally computed\nsha256\tca4e3bd5b9d4a8ff7c01cc96d1bffd46dbd6321237ec94c52f8badd51032eeff  argus-3.0.8.2.tar.gz\nsha256\tc68221f7207486bfce863fada4ba9b2aaf4adc9e1c672f965ae98e88143e5f16  README\n"
  },
  {
    "path": "package/argus/argus.mk",
    "content": "################################################################################\n#\n# argus\n#\n################################################################################\n\nARGUS_VERSION = 3.0.8.2\nARGUS_SITE = http://qosient.com/argus/src\nARGUS_DEPENDENCIES = libpcap\nARGUS_CONF_ENV = arg_cv_sys_errlist=yes\n# Code is really v2+ though COPYING is v3 so ship README to avoid confusion\nARGUS_LICENSE = GPL-2.0+\nARGUS_LICENSE_FILES = README\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nARGUS_DEPENDENCIES += libtirpc host-pkgconf\nARGUS_CONF_ENV += \\\n\tCFLAGS=\"$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`\" \\\n\tLIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`\"\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/arm-gnu-a-toolchain/arm-gnu-a-toolchain.hash",
    "content": "# Locally calculated\nsha256 ac952d89ae0fc3543e81099e7d34917efc621f5def112eee843fd1ce755eca8c  gcc-arm-9.2-2019.12-x86_64-arm-none-eabi.tar.xz\n"
  },
  {
    "path": "package/arm-gnu-a-toolchain/arm-gnu-a-toolchain.mk",
    "content": "################################################################################\n#\n# arm-gnu-a-toolchain\n#\n################################################################################\n\nARM_GNU_A_TOOLCHAIN_VERSION = 9.2-2019.12\nARM_GNU_A_TOOLCHAIN_SITE = https://developer.arm.com/-/media/Files/downloads/gnu-a/$(ARM_GNU_A_TOOLCHAIN_VERSION)/binrel\nARM_GNU_A_TOOLCHAIN_SOURCE = gcc-arm-$(ARM_GNU_A_TOOLCHAIN_VERSION)-x86_64-arm-none-eabi.tar.xz\nARM_GNU_A_TOOLCHAIN_LICENSE = GPL-3.0+\n\nHOST_ARM_GNU_A_TOOLCHAIN_INSTALL_DIR = $(HOST_DIR)/opt/gcc-arm-none-eabi\n\ndefine HOST_ARM_GNU_A_TOOLCHAIN_INSTALL_CMDS\n\trm -rf $(HOST_ARM_GNU_A_TOOLCHAIN_INSTALL_DIR)\n\tmkdir -p $(HOST_ARM_GNU_A_TOOLCHAIN_INSTALL_DIR)\n\tcp -rf $(@D)/* $(HOST_ARM_GNU_A_TOOLCHAIN_INSTALL_DIR)/\n\n\tmkdir -p $(HOST_DIR)/bin\n\tcd $(HOST_DIR)/bin && \\\n\tfor i in ../opt/gcc-arm-none-eabi/bin/*; do \\\n\t\tln -sf $$i; \\\n\tdone\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/armadillo/Config.in",
    "content": "comment \"armadillo needs a toolchain w/ C++\"\n\tdepends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\ncomment \"armadillo needs a toolchain w/ fortran, C++\"\n\tdepends on !BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS # otherwise, see comment above\n\tdepends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_FORTRAN || !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_ARMADILLO\n\tbool \"armadillo\"\n\tdepends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS || \\\n\t\t(BR2_PACKAGE_LAPACK_ARCH_SUPPORTS && BR2_TOOLCHAIN_HAS_FORTRAN)\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Armadillo: An Open Source C++ Linear Algebra Library for\n\t  Fast Prototyping and Computationally Intensive Experiments.\n\n\t  http://arma.sourceforge.net/\n\nif BR2_PACKAGE_ARMADILLO\n\nchoice\n\tprompt \"BLAS implementation\"\n\nconfig BR2_PACKAGE_ARMADILLO_OPENBLAS\n\tbool \"openblas\"\n\tdepends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_OPENBLAS\n\nconfig BR2_PACKAGE_ARMADILLO_LAPACK\n\tbool \"lapack\"\n\tdepends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS && BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_PACKAGE_LAPACK\n\nendchoice\n\nendif\n"
  },
  {
    "path": "package/armadillo/armadillo.hash",
    "content": "# Locally computed:\nsha256  d78658c9442addf7f718eb05881150ee3ec25604d06dd3af4942422b3ce26d05  armadillo-9.900.2.tar.xz\n# License files, locally calculated\nsha256  3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5  LICENSE.txt\n"
  },
  {
    "path": "package/armadillo/armadillo.mk",
    "content": "################################################################################\n#\n# armadillo\n#\n################################################################################\n\nARMADILLO_VERSION = 9.900.2\nARMADILLO_SOURCE = armadillo-$(ARMADILLO_VERSION).tar.xz\nARMADILLO_SITE = https://downloads.sourceforge.net/project/arma\nARMADILLO_INSTALL_STAGING = YES\nARMADILLO_LICENSE = Apache-2.0\nARMADILLO_LICENSE_FILES = LICENSE.txt\n\nARMADILLO_CONF_OPTS = -DDETECT_HDF5=false\n\n# blas support may be provided by lapack (libblas.a) or openblas (libopenblas.a)\nARMADILLO_CONF_OPTS += -DBLAS_FOUND=ON\nifeq ($(BR2_PACKAGE_ARMADILLO_OPENBLAS),y)\nARMADILLO_CONF_OPTS += -DBLAS_LIBRARIES=-lopenblas\nARMADILLO_DEPENDENCIES += openblas\nelse\n# Since BR2_PACKAGE_LAPACK is selected in this case, the dependency on it is\n# added below.\nARMADILLO_CONF_OPTS += -DBLAS_LIBRARIES=-lblas\nendif\n\n# lapack support is optional and can only be provided by lapack, not openblas\nifeq ($(BR2_PACKAGE_LAPACK),y)\nARMADILLO_CONF_OPTS += -DLAPACK_FOUND=ON\nARMADILLO_DEPENDENCIES += lapack\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/armbian-firmware/Config.in",
    "content": "config BR2_PACKAGE_ARMBIAN_FIRMWARE\n\tbool \"armbian-firmware\"\n\thelp\n\t  This package enables access to various firmware\n\t  blobs from the Armbian firmware repository.\n\n\t  https://github.com/armbian/firmware\n\nif BR2_PACKAGE_ARMBIAN_FIRMWARE\n\nconfig BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6212\n\tbool \"AP6212 WiFi/BT\"\n\thelp\n\t  Firmware files for AP6212 WiFi/BT combo chip.\n\nconfig BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6256\n\tbool \"AP6256 WiFi/BT\"\n\thelp\n\t  Firmware files for AP6256 WiFi/BT combo chip.\n\nconfig BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6255\n\tbool \"AP6255 WiFi/BT\"\n\thelp\n\t  Firmware files for AP6255 WiFi/BT combo chip.\n\nconfig BR2_PACKAGE_ARMBIAN_FIRMWARE_RTL8822CS\n\tbool \"Realtek 8822CS SDIO WiFi/BT\"\n\thelp\n\t  Firmware files for Realtek 8822CS SDIO combo chip.\n\nconfig BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819\n\tbool \"XR819 WiFi\"\n\thelp\n\t  Firmware files for XR819 WiFi SDIO chip.\n\nendif\n"
  },
  {
    "path": "package/armbian-firmware/armbian-firmware.hash",
    "content": "# Locally calculated\nsha256  2e61dc5e43f6011868417504f6633e6de6c220ee48fba3b58823e4ce33a6b933  armbian-firmware-a1df8ab2ffbac51a8260905dd841bf825cf1bc53-br1.tar.gz\n"
  },
  {
    "path": "package/armbian-firmware/armbian-firmware.mk",
    "content": "################################################################################\n#\n# armbian-firmware\n#\n################################################################################\n\nARMBIAN_FIRMWARE_VERSION = a1df8ab2ffbac51a8260905dd841bf825cf1bc53\nARMBIAN_FIRMWARE_SITE = https://github.com/armbian/firmware\nARMBIAN_FIRMWARE_SITE_METHOD = git\n\n# AP6212 WiFi/BT combo firmware\nifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6212),y)\nARMBIAN_FIRMWARE_DIRS += ap6212\nendif\n\n# AP6256 WiFi/BT combo firmware\nifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6256),y)\nARMBIAN_FIRMWARE_FILES += \\\n\tbrcm/BCM4345C5.hcd \\\n\tbrcm/brcmfmac43456-sdio.bin \\\n\tbrcm/brcmfmac43456-sdio.txt\nendif\n\n# AP6255 WiFi/BT combo firmware\nifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6255),y)\nARMBIAN_FIRMWARE_FILES += \\\n\tBCM4345C0.hcd \\\n\tfw_bcm43455c0_ag.bin \\\n\tfw_bcm43455c0_ag_apsta.bin \\\n\tfw_bcm43455c0_ag_p2p.bin \\\n\tnvram_ap6255.txt \\\n\tbrcm/brcmfmac43455-sdio.bin \\\n\tbrcm/brcmfmac43455-sdio.clm_blob \\\n\tbrcm/brcmfmac43455-sdio.txt \\\n\tbrcm/config.txt\nendif\n\n# Realtek 8822CS SDIO WiFi/BT combo firmware\nifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_RTL8822CS),y)\nARMBIAN_FIRMWARE_FILES += \\\n\trtlbt/rtl8822cs_config \\\n\trtlbt/rtl8822cs_fw\nendif\n\n# XR819 WiFi firmware\nifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819),y)\nARMBIAN_FIRMWARE_FILES += \\\n\txr819/boot_xr819.bin \\\n\txr819/fw_xr819.bin \\\n\txr819/sdd_xr819.bin\nendif\n\nifneq ($(ARMBIAN_FIRMWARE_FILES),)\ndefine ARMBIAN_FIRMWARE_INSTALL_FILES\n\tcd $(@D) && \\\n\t\t$(TAR) cf install.tar $(sort $(ARMBIAN_FIRMWARE_FILES)) && \\\n\t\t$(TAR) xf install.tar -C $(TARGET_DIR)/lib/firmware\nendef\nendif\n\nifneq ($(ARMBIAN_FIRMWARE_DIRS),)\n# We need to rm -rf the destination directory to avoid copying\n# into it in itself, should we re-install the package.\ndefine ARMBIAN_FIRMWARE_INSTALL_DIRS\n\t$(foreach d,$(ARMBIAN_FIRMWARE_DIRS), \\\n\t\trm -rf $(TARGET_DIR)/lib/firmware/$(d); \\\n\t\tcp -a $(@D)/$(d) $(TARGET_DIR)/lib/firmware/$(d)$(sep))\nendef\nendif\n\nifneq ($(ARMBIAN_FIRMWARE_FILES)$(ARMBIAN_FIRMWARE_DIRS),)\nARMBIAN_FIRMWARE_LICENSE = PROPRIETARY\nARMBIAN_FIRMWARE_REDISTRIBUTE = NO\nendif\n\ndefine ARMBIAN_FIRMWARE_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/lib/firmware\n\t$(ARMBIAN_FIRMWARE_INSTALL_FILES)\n\t$(ARMBIAN_FIRMWARE_INSTALL_DIRS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/arp-scan/Config.in",
    "content": "config BR2_PACKAGE_ARP_SCAN\n\tbool \"arp-scan\"\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  The ARP scanner\n\n\t  arp-scan is a command-line tool that uses the ARP protocol to\n\t  discover and fingerprint IP hosts on the local network.\n\n\t  https://github.com/royhills/arp-scan\n"
  },
  {
    "path": "package/arp-scan/arp-scan.hash",
    "content": "# Locally calculated\nsha256  e03c36e4933c655bd0e4a841272554a347cd0136faf42c4a6564059e0761c039\tarp-scan-1.9.7.tar.gz\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\tCOPYING\n"
  },
  {
    "path": "package/arp-scan/arp-scan.mk",
    "content": "################################################################################\n#\n# arp-scan\n#\n################################################################################\n\nARP_SCAN_VERSION = 1.9.7\nARP_SCAN_SITE = $(call github,royhills,arp-scan,$(ARP_SCAN_VERSION))\nARP_SCAN_LICENSE = GPL-3.0+\nARP_SCAN_LICENSE_FILES = COPYING\nARP_SCAN_DEPENDENCIES = libpcap\nARP_SCAN_AUTORECONF = YES\n\nifeq ($(BR2_STATIC_LIBS),y)\nARP_SCAN_CONF_OPTS = LIBS=\"`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\"\nendif\n\nARP_SCAN_CONF_ENV = pgac_cv_snprintf_long_long_int_format='%lld'\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/arptables/0001-Fix-musl-build-issue.patch",
    "content": "From cbf84a0bc377c6a368d30571f37ebfab27784697 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Wed, 2 Dec 2015 04:57:33 +0100\nSubject: [PATCH 4/4] Fix musl build issue\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nDue to clashes in the namespace between the Linux Kernel headers and the\nnetinet headers building arptables with the musl C library fails.\n\nBest advice from the musl developers is to not include both headers in a\nuserspace tool (see the thread on the musl mailing list [1], especially [2]).\n\nSince arptables only requires a few definitions from the Linux Kernel headers\nwe opt-out the clashing header files and define the needed definitions.\n\n[1] http://www.openwall.com/lists/musl/2012/10/09/1\n[2] http://www.openwall.com/lists/musl/2012/10/11/1\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n extensions/arpt_CLASSIFY.c    |  7 +++++++\n include/linux/netfilter_arp.h | 11 +++++++++++\n 2 files changed, 18 insertions(+)\n\ndiff --git a/extensions/arpt_CLASSIFY.c b/extensions/arpt_CLASSIFY.c\nindex cb5770b..c58129f 100644\n--- a/extensions/arpt_CLASSIFY.c\n+++ b/extensions/arpt_CLASSIFY.c\n@@ -21,7 +21,14 @@\n #include <stdio.h>\n #include <getopt.h>\n #include <arptables.h>\n+\n+#ifdef __KERNEL__\n #include <linux/netfilter/xt_CLASSIFY.h>\n+#else\n+struct xt_classify_target_info {\n+\tuint32_t priority;\n+};\n+#endif\n \n #define TC_H_MAJ_MASK (0xFFFF0000U)\n #define TC_H_MIN_MASK (0x0000FFFFU)\ndiff --git a/include/linux/netfilter_arp.h b/include/linux/netfilter_arp.h\nindex 92bc6dd..2a63e82 100644\n--- a/include/linux/netfilter_arp.h\n+++ b/include/linux/netfilter_arp.h\n@@ -5,7 +5,18 @@\n  * (C)2002 Rusty Russell IBM -- This code is GPL.\n  */\n \n+#ifdef __KERNEL__\n #include <linux/netfilter.h>\n+#else\n+/* Responses from hook functions. */\n+#define NF_DROP 0\n+#define NF_ACCEPT 1\n+#define NF_STOLEN 2\n+#define NF_QUEUE 3\n+#define NF_REPEAT 4\n+#define NF_STOP 5\n+#define NF_MAX_VERDICT NF_STOP\n+#endif\n \n /* There is no PF_ARP. */\n #define NF_ARP\t\t0\n-- \n2.6.2\n\n"
  },
  {
    "path": "package/arptables/Config.in",
    "content": "config BR2_PACKAGE_ARPTABLES\n\tbool \"arptables-legacy\"\n\tdepends on BR2_USE_MMU # needs fork()\n\thelp\n\t  Legacy tool to set up, maintain, and inspect the tables of ARP\n\t  rules.\n\n\t  A more uptodate client of the arptables tool is provided in\n\t  the iptables package. The new tool was formerly known as\n\t  arptables-compat.\n\n\t  http://git.netfilter.org/arptables\n"
  },
  {
    "path": "package/arptables/arptables.hash",
    "content": "# From http://ftp.netfilter.org/pub/arptables/arptables-0.0.5.tar.gz.sha256sum\nsha256\t4f9a0656ce5c90868f551cd4deeb2d04f33899667e1fb2818b64e432fe8f629c\tarptables-0.0.5.tar.gz\n\n# Hash for license file\nsha256\tebdb8ae564c952792017ec680e2edd30443642216eb9f8a3d8fa166c0cb628c1\tCOPYING\n"
  },
  {
    "path": "package/arptables/arptables.mk",
    "content": "################################################################################\n#\n# arptables\n#\n################################################################################\n\nARPTABLES_VERSION = 0.0.5\nARPTABLES_SITE = http://ftp.netfilter.org/pub/arptables\nARPTABLES_LICENSE = GPL-2.0+\nARPTABLES_LICENSE_FILES = COPYING\n\ndefine ARPTABLES_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tCC=\"$(TARGET_CC)\" COPT_FLAGS=\"$(TARGET_CFLAGS)\"\nendef\n\ndefine ARPTABLES_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 -D $(@D)/arptables-legacy \\\n\t\t$(TARGET_DIR)/usr/sbin/arptables-legacy\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ascii-invaders/Config.in",
    "content": "config BR2_PACKAGE_ASCII_INVADERS\n\tbool \"ascii_invaders\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  An ASCII-art game like Space Invaders using ncurses.\n\n\t  https://github.com/macdice/ascii-invaders\n"
  },
  {
    "path": "package/ascii-invaders/ascii-invaders.hash",
    "content": "# Locally calculated\nsha512\t326708ffc2c277e04575920c58f6a267e0bf46f8d2a3dbca9b5c317fb01006d4f673ab35f92f292549cc52dbee4400a84c85478eb81b9bd7703689a705547bc7\tascii-invaders-1.0.1.tar.gz\n\n# Hash for license file\nsha512\t1e455684996d7733b2f1ccd4606d034694d16ceff6ede6125d7f1537d20dabe05976cca4cef5cbf6c31352cbd62a515fd8e34a2ffb54dae1181c1116b24c6cf7\tLICENSE\n"
  },
  {
    "path": "package/ascii-invaders/ascii-invaders.mk",
    "content": "################################################################################\n#\n# ASCII-Invaders\n#\n################################################################################\n\nASCII_INVADERS_VERSION = 1.0.1\nASCII_INVADERS_SITE = $(call github,macdice,ascii-invaders,v$(ASCII_INVADERS_VERSION))\nASCII_INVADERS_DEPENDENCIES = ncurses\nASCII_INVADERS_LICENSE = GPL-2.0+\nASCII_INVADERS_LICENSE_FILES = LICENSE\n\n# For compiling statically, libraries must be specified after the object file\ndefine ASCII_INVADERS_POST_EXTRACT_FIXUP\n\tsed -i 's/\\$$(LIBS) invaders.o/invaders.o \\$$(LIBS)/' $(@D)/Makefile\nendef\nASCII_INVADERS_POST_EXTRACT_HOOKS += ASCII_INVADERS_POST_EXTRACT_FIXUP\n\ndefine ASCII_INVADERS_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine ASCII_INVADERS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/ascii_invaders $(TARGET_DIR)/usr/bin/ascii_invaders\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/asn1c/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_ASN1C\n\tbool \"host asn1c\"\n\thelp\n\t  ASN.1 stands for Abstract Syntax Notation One and allows\n\t  to describe complex data structures independently of any\n\t  particular programming language.\n\n\t  The asn1c is a free, open source compiler of ASN.1\n\t  specifications into C source code.\n\n\t  http://lionet.info/asn1c\n"
  },
  {
    "path": "package/asn1c/asn1c.hash",
    "content": "# Locally computed:\nsha256  8007440b647ef2dd9fb73d931c33ac11764e6afb2437dbe638bb4e5fc82386b9  asn1c-0.9.28.tar.gz\n\n# Hash for license files:\nsha256  bcc636802a52ace2255212be15fb707084af87061b5cfd37eb84dcf6a02cc48b  LICENSE\n"
  },
  {
    "path": "package/asn1c/asn1c.mk",
    "content": "################################################################################\n#\n# asn1c\n#\n################################################################################\n\nASN1C_VERSION = 0.9.28\nASN1C_SITE = https://github.com/vlm/asn1c/releases/download/v$(ASN1C_VERSION)\nASN1C_LICENSE = BSD-2-Clause\nASN1C_LICENSE_FILES = LICENSE\nASN1C_CPE_ID_VENDOR = asn1c_project\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/assimp/0001-Fix-FBXConverter-use-proper-64-bit-constant.patch",
    "content": "From 30a2ecc7939449f235282eb6de42e367fc5b1867 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 14 Jan 2016 22:13:15 +0100\nSubject: [PATCH] Fix FBXConverter: use proper 64-bit constant\n\nUse proper 64-bit constant for CONVERT_FBX_TIME(time) conversion, fixes:\n\n  code/FBXConverter.cpp:2025: error: integer constant is too large for 'long' type\n  code/FBXConverter.cpp:2026: error: integer constant is too large for 'long' type\n  code/FBXConverter.cpp:2794: error: integer constant is too large for 'long' type\n  code/FBXConverter.cpp:2868: error: integer constant is too large for 'long' type\n  code/FBXConverter.cpp:2878: error: integer constant is too large for 'long' type\n  code/FBXConverter.cpp:2888: error: integer constant is too large for 'long' type\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n[Rebased on 5.0.1]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n code/FBX/FBXConverter.cpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/code/FBX/FBXConverter.cpp b/code/FBXConverter.cpp\nindex e0c6b9c..b1e9a71 100644\n--- a/code/FBX/FBXConverter.cpp\n+++ b/code/FBX/FBXConverter.cpp\n@@ -67,7 +67,7 @@ namespace FBX {\n \n #define MAGIC_NODE_TAG \"_$AssimpFbx$\"\n \n-#define CONVERT_FBX_TIME(time) static_cast<double>(time) / 46186158000L\n+#define CONVERT_FBX_TIME(time) static_cast<double>(time) / 46186158000LL\n \n     // XXX vc9's debugger won't step into anonymous namespaces\n //namespace {\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/assimp/0002-closes-2733-update-of-zlip-to-fix-gcc-build-for-v9-2-0-32-bit.patch",
    "content": "From f78446b14aff46db2ef27d062a275b6a01fd68b1 Mon Sep 17 00:00:00 2001\nFrom: Kim Kulling <kim.kulling@googlemail.com>\nDate: Tue, 19 Nov 2019 20:30:40 +0100\nSubject: [PATCH] closes https://github.com/assimp/assimp/issues/2733: update\n of zlip to fix gcc build for v9.2.0 32 bit\n\n[Retrieved (and updated to remove .gitignore and appveyor.yml) from:\nhttps://github.com/assimp/assimp/commit/f78446b14aff46db2ef27d062a275b6a01fd68b1]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n contrib/zip/.gitignore          |   2 +\n contrib/zip/CMakeLists.txt      |  83 +++++-\n contrib/zip/README.md           |  12 +-\n contrib/zip/appveyor.yml        |   2 +-\n contrib/zip/src/miniz.h         | 457 ++++++++++++++++++++++++++++----\n contrib/zip/src/zip.c           |  62 +++--\n contrib/zip/src/zip.h           | 457 ++++++++++++++++----------------\n contrib/zip/test/CMakeLists.txt |  27 +-\n contrib/zip/test/test.c         |  38 ++-\n contrib/zip/test/test_miniz.c   |  25 +-\n 10 files changed, 821 insertions(+), 344 deletions(-)\n\ndiff --git a/contrib/zip/CMakeLists.txt b/contrib/zip/CMakeLists.txt\nindex b46dbb1db0..77916d2e14 100644\n--- a/contrib/zip/CMakeLists.txt\n+++ b/contrib/zip/CMakeLists.txt\n@@ -1,10 +1,14 @@\n-cmake_minimum_required(VERSION 2.8)\n-project(zip)\n-enable_language(C)\n+cmake_minimum_required(VERSION 3.0)\n+\n+project(zip\n+  LANGUAGES C\n+  VERSION \"0.1.15\")\n set(CMAKE_MODULE_PATH \"${PROJECT_SOURCE_DIR}/cmake\" ${CMAKE_MODULE_PATH})\n \n+option(CMAKE_DISABLE_TESTING \"Disable test creation\" OFF)\n+\n if (MSVC)\n-  # Use secure functions by defaualt and suppress warnings about \"deprecated\" functions\n+  # Use secure functions by default and suppress warnings about \"deprecated\" functions\n   set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} /D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1\")\n   set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} /D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1\")\n   set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} /D _CRT_NONSTDC_NO_WARNINGS=1 /D _CRT_SECURE_NO_WARNINGS=1\")\n@@ -12,28 +16,80 @@ elseif (\"${CMAKE_C_COMPILER_ID}\" STREQUAL \"GNU\" OR\n         \"${CMAKE_C_COMPILER_ID}\" STREQUAL \"Clang\" OR\n         \"${CMAKE_C_COMPILER_ID}\" STREQUAL \"AppleClang\")\n   set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -std=c99 -Wall -Wextra -Werror -pedantic\")\n+  if(ENABLE_COVERAGE)\n+    set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage\")\n+    set(CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS} --coverage\")\n+  endif()\n endif (MSVC)\n \n # zip\n set(SRC src/miniz.h src/zip.h src/zip.c)\n add_library(${PROJECT_NAME} ${SRC})\n-target_include_directories(${PROJECT_NAME} INTERFACE src)\n+target_include_directories(${PROJECT_NAME} PUBLIC\n+  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>\n+  $<INSTALL_INTERFACE:include>\n+)\n \n # test\n if (NOT CMAKE_DISABLE_TESTING)\n   enable_testing()\n   add_subdirectory(test)\n   find_package(Sanitizers)\n-  add_sanitizers(${PROJECT_NAME} test.exe)\n-  add_sanitizers(${PROJECT_NAME} test_miniz.exe)\n+  add_sanitizers(${PROJECT_NAME} ${test_out} ${test_miniz_out})\n endif()\n \n+####\n+# Installation (https://github.com/forexample/package-example) {\n+\n+set(CONFIG_INSTALL_DIR \"lib/cmake/${PROJECT_NAME}\")\n+set(INCLUDE_INSTALL_DIR \"include\")\n+\n+set(GENERATED_DIR \"${CMAKE_CURRENT_BINARY_DIR}/generated\")\n+\n+# Configuration\n+set(VERSION_CONFIG \"${GENERATED_DIR}/${PROJECT_NAME}ConfigVersion.cmake\")\n+set(PROJECT_CONFIG \"${GENERATED_DIR}/${PROJECT_NAME}Config.cmake\")\n+set(TARGETS_EXPORT_NAME \"${PROJECT_NAME}Targets\")\n+set(NAMESPACE \"${PROJECT_NAME}::\")\n+\n+# Include module with fuction 'write_basic_package_version_file'\n+include(CMakePackageConfigHelpers)\n+\n+# Note: PROJECT_VERSION is used as a VERSION\n+write_basic_package_version_file(\n+    \"${VERSION_CONFIG}\" COMPATIBILITY SameMajorVersion\n+)\n+\n+# Use variables:\n+#   * TARGETS_EXPORT_NAME\n+#   * PROJECT_NAME\n+configure_package_config_file(\n+    \"cmake/Config.cmake.in\"\n+    \"${PROJECT_CONFIG}\"\n+    INSTALL_DESTINATION \"${CONFIG_INSTALL_DIR}\"\n+)\n+\n+install(\n+    FILES \"${PROJECT_CONFIG}\" \"${VERSION_CONFIG}\"\n+    DESTINATION \"${CONFIG_INSTALL_DIR}\"\n+)\n+\n+install(\n+    EXPORT \"${TARGETS_EXPORT_NAME}\"\n+    NAMESPACE \"${NAMESPACE}\"\n+    DESTINATION \"${CONFIG_INSTALL_DIR}\"\n+)\n+\n+# }\n+\n install(TARGETS ${PROJECT_NAME}\n+        EXPORT ${TARGETS_EXPORT_NAME}\n         RUNTIME DESTINATION bin\n         ARCHIVE DESTINATION lib\n         LIBRARY DESTINATION lib\n-        COMPONENT library)\n-install(FILES ${PROJECT_SOURCE_DIR}/src/zip.h DESTINATION include)\n+        INCLUDES DESTINATION ${INCLUDE_INSTALL_DIR}\n+)\n+install(FILES ${PROJECT_SOURCE_DIR}/src/zip.h DESTINATION ${INCLUDE_INSTALL_DIR}/zip)\n \n # uninstall target (https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake)\n if(NOT TARGET uninstall)\n@@ -45,3 +101,12 @@ if(NOT TARGET uninstall)\n     add_custom_target(uninstall\n         COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake)\n endif()\n+\n+find_package(Doxygen)\n+if(DOXYGEN_FOUND)\n+    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)\n+    add_custom_target(doc\n+        ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile\n+        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}\n+        COMMENT \"Generating API documentation with Doxygen\" VERBATIM)\n+endif()\ndiff --git a/contrib/zip/README.md b/contrib/zip/README.md\nindex d5fb8cd203..14eb9a34c8 100644\n--- a/contrib/zip/README.md\n+++ b/contrib/zip/README.md\n@@ -71,7 +71,7 @@ int arg = 2;\n zip_extract(\"foo.zip\", \"/tmp\", on_extract_entry, &arg);\n ```\n \n-*   Extract a zip entry into memory.\n+* Extract a zip entry into memory.\n ```c\n void *buf = NULL;\n size_t bufsize;\n@@ -89,7 +89,7 @@ zip_close(zip);\n free(buf);\n ```\n \n-*   Extract a zip entry into memory (no internal allocation).\n+* Extract a zip entry into memory (no internal allocation).\n ```c\n unsigned char *buf;\n size_t bufsize;\n@@ -110,7 +110,7 @@ zip_close(zip);\n free(buf);\n ```\n \n-*   Extract a zip entry into memory using callback.\n+* Extract a zip entry into memory using callback.\n ```c\n struct buffer_t {\n     char *data;\n@@ -144,7 +144,7 @@ free(buf.data);\n ```\n \n \n-*   Extract a zip entry into a file.\n+* Extract a zip entry into a file.\n ```c\n struct zip_t *zip = zip_open(\"foo.zip\", 0, 'r');\n {\n@@ -157,7 +157,7 @@ struct zip_t *zip = zip_open(\"foo.zip\", 0, 'r');\n zip_close(zip);\n ```\n \n-*   List of all zip entries\n+* List of all zip entries\n ```c\n struct zip_t *zip = zip_open(\"foo.zip\", 0, 'r');\n int i, n = zip_total_entries(zip);\n@@ -174,7 +174,7 @@ for (i = 0; i < n; ++i) {\n zip_close(zip);\n ```\n \n-## Bindings\n+# Bindings\n Compile zip library as a dynamic library.\n ```shell\n $ mkdir build\ndiff --git a/contrib/zip/src/miniz.h b/contrib/zip/src/miniz.h\nindex 2c27a94d8d..c4fcfb83e6 100644\n--- a/contrib/zip/src/miniz.h\n+++ b/contrib/zip/src/miniz.h\n@@ -221,6 +221,7 @@\n #ifndef MINIZ_HEADER_INCLUDED\n #define MINIZ_HEADER_INCLUDED\n \n+#include <stdint.h>\n #include <stdlib.h>\n \n // Defines to completely disable specific portions of miniz.c:\n@@ -284,7 +285,8 @@\n /* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES only if not set */\n #if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES)\n #if MINIZ_X86_OR_X64_CPU\n-/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */\n+/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient\n+ * integer loads and stores from unaligned addresses. */\n #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1\n #define MINIZ_UNALIGNED_USE_MEMCPY\n #else\n@@ -354,6 +356,44 @@ enum {\n   MZ_FIXED = 4\n };\n \n+/* miniz error codes. Be sure to update mz_zip_get_error_string() if you add or\n+ * modify this enum. */\n+typedef enum {\n+  MZ_ZIP_NO_ERROR = 0,\n+  MZ_ZIP_UNDEFINED_ERROR,\n+  MZ_ZIP_TOO_MANY_FILES,\n+  MZ_ZIP_FILE_TOO_LARGE,\n+  MZ_ZIP_UNSUPPORTED_METHOD,\n+  MZ_ZIP_UNSUPPORTED_ENCRYPTION,\n+  MZ_ZIP_UNSUPPORTED_FEATURE,\n+  MZ_ZIP_FAILED_FINDING_CENTRAL_DIR,\n+  MZ_ZIP_NOT_AN_ARCHIVE,\n+  MZ_ZIP_INVALID_HEADER_OR_CORRUPTED,\n+  MZ_ZIP_UNSUPPORTED_MULTIDISK,\n+  MZ_ZIP_DECOMPRESSION_FAILED,\n+  MZ_ZIP_COMPRESSION_FAILED,\n+  MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE,\n+  MZ_ZIP_CRC_CHECK_FAILED,\n+  MZ_ZIP_UNSUPPORTED_CDIR_SIZE,\n+  MZ_ZIP_ALLOC_FAILED,\n+  MZ_ZIP_FILE_OPEN_FAILED,\n+  MZ_ZIP_FILE_CREATE_FAILED,\n+  MZ_ZIP_FILE_WRITE_FAILED,\n+  MZ_ZIP_FILE_READ_FAILED,\n+  MZ_ZIP_FILE_CLOSE_FAILED,\n+  MZ_ZIP_FILE_SEEK_FAILED,\n+  MZ_ZIP_FILE_STAT_FAILED,\n+  MZ_ZIP_INVALID_PARAMETER,\n+  MZ_ZIP_INVALID_FILENAME,\n+  MZ_ZIP_BUF_TOO_SMALL,\n+  MZ_ZIP_INTERNAL_ERROR,\n+  MZ_ZIP_FILE_NOT_FOUND,\n+  MZ_ZIP_ARCHIVE_TOO_LARGE,\n+  MZ_ZIP_VALIDATION_FAILED,\n+  MZ_ZIP_WRITE_CALLBACK_FAILED,\n+  MZ_ZIP_TOTAL_ERRORS\n+} mz_zip_error;\n+\n // Method\n #define MZ_DEFLATED 8\n \n@@ -696,6 +736,7 @@ typedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs,\n                                     void *pBuf, size_t n);\n typedef size_t (*mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs,\n                                      const void *pBuf, size_t n);\n+typedef mz_bool (*mz_file_needs_keepalive)(void *pOpaque);\n \n struct mz_zip_internal_state_tag;\n typedef struct mz_zip_internal_state_tag mz_zip_internal_state;\n@@ -707,13 +748,27 @@ typedef enum {\n   MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED = 3\n } mz_zip_mode;\n \n-typedef struct mz_zip_archive_tag {\n+typedef enum {\n+  MZ_ZIP_TYPE_INVALID = 0,\n+  MZ_ZIP_TYPE_USER,\n+  MZ_ZIP_TYPE_MEMORY,\n+  MZ_ZIP_TYPE_HEAP,\n+  MZ_ZIP_TYPE_FILE,\n+  MZ_ZIP_TYPE_CFILE,\n+  MZ_ZIP_TOTAL_TYPES\n+} mz_zip_type;\n+\n+typedef struct {\n   mz_uint64 m_archive_size;\n   mz_uint64 m_central_directory_file_ofs;\n-  mz_uint m_total_files;\n+\n+  /* We only support up to UINT32_MAX files in zip64 mode. */\n+  mz_uint32 m_total_files;\n   mz_zip_mode m_zip_mode;\n+  mz_zip_type m_zip_type;\n+  mz_zip_error m_last_error;\n \n-  mz_uint m_file_offset_alignment;\n+  mz_uint64 m_file_offset_alignment;\n \n   mz_alloc_func m_pAlloc;\n   mz_free_func m_pFree;\n@@ -722,6 +777,7 @@ typedef struct mz_zip_archive_tag {\n \n   mz_file_read_func m_pRead;\n   mz_file_write_func m_pWrite;\n+  mz_file_needs_keepalive m_pNeeds_keepalive;\n   void *m_pIO_opaque;\n \n   mz_zip_internal_state *m_pState;\n@@ -1263,6 +1319,9 @@ mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits,\n                                                 int strategy);\n #endif // #ifndef MINIZ_NO_ZLIB_APIS\n \n+#define MZ_UINT16_MAX (0xFFFFU)\n+#define MZ_UINT32_MAX (0xFFFFFFFFU)\n+\n #ifdef __cplusplus\n }\n #endif\n@@ -1311,6 +1370,11 @@ typedef unsigned char mz_validate_uint64[sizeof(mz_uint64) == 8 ? 1 : -1];\n    ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U))\n #endif\n \n+#define MZ_READ_LE64(p)                                                        \\\n+  (((mz_uint64)MZ_READ_LE32(p)) |                                              \\\n+   (((mz_uint64)MZ_READ_LE32((const mz_uint8 *)(p) + sizeof(mz_uint32)))       \\\n+    << 32U))\n+\n #ifdef _MSC_VER\n #define MZ_FORCEINLINE __forceinline\n #elif defined(__GNUC__)\n@@ -4160,6 +4224,17 @@ enum {\n   MZ_ZIP_LOCAL_DIR_HEADER_SIZE = 30,\n   MZ_ZIP_CENTRAL_DIR_HEADER_SIZE = 46,\n   MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE = 22,\n+\n+  /* ZIP64 archive identifier and record sizes */\n+  MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06064b50,\n+  MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG = 0x07064b50,\n+  MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE = 56,\n+  MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE = 20,\n+  MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID = 0x0001,\n+  MZ_ZIP_DATA_DESCRIPTOR_ID = 0x08074b50,\n+  MZ_ZIP_DATA_DESCRIPTER_SIZE64 = 24,\n+  MZ_ZIP_DATA_DESCRIPTER_SIZE32 = 16,\n+\n   // Central directory header record offsets\n   MZ_ZIP_CDH_SIG_OFS = 0,\n   MZ_ZIP_CDH_VERSION_MADE_BY_OFS = 4,\n@@ -4199,6 +4274,31 @@ enum {\n   MZ_ZIP_ECDH_CDIR_SIZE_OFS = 12,\n   MZ_ZIP_ECDH_CDIR_OFS_OFS = 16,\n   MZ_ZIP_ECDH_COMMENT_SIZE_OFS = 20,\n+\n+  /* ZIP64 End of central directory locator offsets */\n+  MZ_ZIP64_ECDL_SIG_OFS = 0,                    /* 4 bytes */\n+  MZ_ZIP64_ECDL_NUM_DISK_CDIR_OFS = 4,          /* 4 bytes */\n+  MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS = 8,  /* 8 bytes */\n+  MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS = 16, /* 4 bytes */\n+\n+  /* ZIP64 End of central directory header offsets */\n+  MZ_ZIP64_ECDH_SIG_OFS = 0,                       /* 4 bytes */\n+  MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS = 4,            /* 8 bytes */\n+  MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS = 12,          /* 2 bytes */\n+  MZ_ZIP64_ECDH_VERSION_NEEDED_OFS = 14,           /* 2 bytes */\n+  MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS = 16,            /* 4 bytes */\n+  MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS = 20,            /* 4 bytes */\n+  MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 24, /* 8 bytes */\n+  MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS = 32,       /* 8 bytes */\n+  MZ_ZIP64_ECDH_CDIR_SIZE_OFS = 40,                /* 8 bytes */\n+  MZ_ZIP64_ECDH_CDIR_OFS_OFS = 48,                 /* 8 bytes */\n+  MZ_ZIP_VERSION_MADE_BY_DOS_FILESYSTEM_ID = 0,\n+  MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG = 0x10,\n+  MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED = 1,\n+  MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG = 32,\n+  MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION = 64,\n+  MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED = 8192,\n+  MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8 = 1 << 11\n };\n \n typedef struct {\n@@ -4211,7 +4311,24 @@ struct mz_zip_internal_state_tag {\n   mz_zip_array m_central_dir;\n   mz_zip_array m_central_dir_offsets;\n   mz_zip_array m_sorted_central_dir_offsets;\n+\n+  /* The flags passed in when the archive is initially opened. */\n+  uint32_t m_init_flags;\n+\n+  /* MZ_TRUE if the archive has a zip64 end of central directory headers, etc.\n+   */\n+  mz_bool m_zip64;\n+\n+  /* MZ_TRUE if we found zip64 extended info in the central directory (m_zip64\n+   * will also be slammed to true too, even if we didn't find a zip64 end of\n+   * central dir header, etc.) */\n+  mz_bool m_zip64_has_extended_info_fields;\n+\n+  /* These fields are used by the file, FILE, memory, and memory/heap read/write\n+   * helpers. */\n   MZ_FILE *m_pFile;\n+  mz_uint64 m_file_archive_start_ofs;\n+\n   void *m_pMem;\n   size_t m_mem_size;\n   size_t m_mem_capacity;\n@@ -4363,6 +4480,13 @@ static mz_bool mz_zip_set_file_times(const char *pFilename, time_t access_time,\n #endif /* #ifndef MINIZ_NO_STDIO */\n #endif /* #ifndef MINIZ_NO_TIME */\n \n+static MZ_FORCEINLINE mz_bool mz_zip_set_error(mz_zip_archive *pZip,\n+                                               mz_zip_error err_num) {\n+  if (pZip)\n+    pZip->m_last_error = err_num;\n+  return MZ_FALSE;\n+}\n+\n static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip,\n                                            mz_uint32 flags) {\n   (void)flags;\n@@ -4480,127 +4604,346 @@ mz_zip_reader_sort_central_dir_offsets_by_filename(mz_zip_archive *pZip) {\n   }\n }\n \n-static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip,\n-                                              mz_uint32 flags) {\n-  mz_uint cdir_size, num_this_disk, cdir_disk_index;\n-  mz_uint64 cdir_ofs;\n+static mz_bool mz_zip_reader_locate_header_sig(mz_zip_archive *pZip,\n+                                               mz_uint32 record_sig,\n+                                               mz_uint32 record_size,\n+                                               mz_int64 *pOfs) {\n   mz_int64 cur_file_ofs;\n-  const mz_uint8 *p;\n   mz_uint32 buf_u32[4096 / sizeof(mz_uint32)];\n   mz_uint8 *pBuf = (mz_uint8 *)buf_u32;\n-  mz_bool sort_central_dir =\n-      ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0);\n-  // Basic sanity checks - reject files which are too small, and check the first\n-  // 4 bytes of the file to make sure a local header is there.\n-  if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)\n+\n+  /* Basic sanity checks - reject files which are too small */\n+  if (pZip->m_archive_size < record_size)\n     return MZ_FALSE;\n-  // Find the end of central directory record by scanning the file from the end\n-  // towards the beginning.\n+\n+  /* Find the record by scanning the file from the end towards the beginning. */\n   cur_file_ofs =\n       MZ_MAX((mz_int64)pZip->m_archive_size - (mz_int64)sizeof(buf_u32), 0);\n   for (;;) {\n     int i,\n         n = (int)MZ_MIN(sizeof(buf_u32), pZip->m_archive_size - cur_file_ofs);\n+\n     if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, n) != (mz_uint)n)\n       return MZ_FALSE;\n-    for (i = n - 4; i >= 0; --i)\n-      if (MZ_READ_LE32(pBuf + i) == MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG)\n-        break;\n+\n+    for (i = n - 4; i >= 0; --i) {\n+      mz_uint s = MZ_READ_LE32(pBuf + i);\n+      if (s == record_sig) {\n+        if ((pZip->m_archive_size - (cur_file_ofs + i)) >= record_size)\n+          break;\n+      }\n+    }\n+\n     if (i >= 0) {\n       cur_file_ofs += i;\n       break;\n     }\n+\n+    /* Give up if we've searched the entire file, or we've gone back \"too far\"\n+     * (~64kb) */\n     if ((!cur_file_ofs) || ((pZip->m_archive_size - cur_file_ofs) >=\n-                            (0xFFFF + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)))\n+                            (MZ_UINT16_MAX + record_size)))\n       return MZ_FALSE;\n+\n     cur_file_ofs = MZ_MAX(cur_file_ofs - (sizeof(buf_u32) - 3), 0);\n   }\n-  // Read and verify the end of central directory record.\n+\n+  *pOfs = cur_file_ofs;\n+  return MZ_TRUE;\n+}\n+\n+static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip,\n+                                              mz_uint flags) {\n+  mz_uint cdir_size = 0, cdir_entries_on_this_disk = 0, num_this_disk = 0,\n+          cdir_disk_index = 0;\n+  mz_uint64 cdir_ofs = 0;\n+  mz_int64 cur_file_ofs = 0;\n+  const mz_uint8 *p;\n+\n+  mz_uint32 buf_u32[4096 / sizeof(mz_uint32)];\n+  mz_uint8 *pBuf = (mz_uint8 *)buf_u32;\n+  mz_bool sort_central_dir =\n+      ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0);\n+  mz_uint32 zip64_end_of_central_dir_locator_u32\n+      [(MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE + sizeof(mz_uint32) - 1) /\n+       sizeof(mz_uint32)];\n+  mz_uint8 *pZip64_locator = (mz_uint8 *)zip64_end_of_central_dir_locator_u32;\n+\n+  mz_uint32 zip64_end_of_central_dir_header_u32\n+      [(MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) /\n+       sizeof(mz_uint32)];\n+  mz_uint8 *pZip64_end_of_central_dir =\n+      (mz_uint8 *)zip64_end_of_central_dir_header_u32;\n+\n+  mz_uint64 zip64_end_of_central_dir_ofs = 0;\n+\n+  /* Basic sanity checks - reject files which are too small, and check the first\n+   * 4 bytes of the file to make sure a local header is there. */\n+  if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)\n+    return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);\n+\n+  if (!mz_zip_reader_locate_header_sig(\n+          pZip, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG,\n+          MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE, &cur_file_ofs))\n+    return mz_zip_set_error(pZip, MZ_ZIP_FAILED_FINDING_CENTRAL_DIR);\n+\n+  /* Read and verify the end of central directory record. */\n   if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf,\n                     MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) !=\n       MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)\n-    return MZ_FALSE;\n-  if ((MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) !=\n-       MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG) ||\n-      ((pZip->m_total_files =\n-            MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS)) !=\n-       MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS)))\n-    return MZ_FALSE;\n+    return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n+\n+  if (MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) !=\n+      MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG)\n+    return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);\n+\n+  if (cur_file_ofs >= (MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE +\n+                       MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE)) {\n+    if (pZip->m_pRead(pZip->m_pIO_opaque,\n+                      cur_file_ofs - MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE,\n+                      pZip64_locator,\n+                      MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) ==\n+        MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) {\n+      if (MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_SIG_OFS) ==\n+          MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG) {\n+        zip64_end_of_central_dir_ofs = MZ_READ_LE64(\n+            pZip64_locator + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS);\n+        if (zip64_end_of_central_dir_ofs >\n+            (pZip->m_archive_size - MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE))\n+          return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);\n+\n+        if (pZip->m_pRead(pZip->m_pIO_opaque, zip64_end_of_central_dir_ofs,\n+                          pZip64_end_of_central_dir,\n+                          MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) ==\n+            MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) {\n+          if (MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIG_OFS) ==\n+              MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG) {\n+            pZip->m_pState->m_zip64 = MZ_TRUE;\n+          }\n+        }\n+      }\n+    }\n+  }\n \n+  pZip->m_total_files = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS);\n+  cdir_entries_on_this_disk =\n+      MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS);\n   num_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_THIS_DISK_OFS);\n   cdir_disk_index = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS);\n+  cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS);\n+  cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS);\n+\n+  if (pZip->m_pState->m_zip64) {\n+    mz_uint32 zip64_total_num_of_disks =\n+        MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS);\n+    mz_uint64 zip64_cdir_total_entries = MZ_READ_LE64(\n+        pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS);\n+    mz_uint64 zip64_cdir_total_entries_on_this_disk = MZ_READ_LE64(\n+        pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS);\n+    mz_uint64 zip64_size_of_end_of_central_dir_record = MZ_READ_LE64(\n+        pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS);\n+    mz_uint64 zip64_size_of_central_directory =\n+        MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_SIZE_OFS);\n+\n+    if (zip64_size_of_end_of_central_dir_record <\n+        (MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE - 12))\n+      return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n+\n+    if (zip64_total_num_of_disks != 1U)\n+      return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);\n+\n+    /* Check for miniz's practical limits */\n+    if (zip64_cdir_total_entries > MZ_UINT32_MAX)\n+      return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);\n+\n+    pZip->m_total_files = (mz_uint32)zip64_cdir_total_entries;\n+\n+    if (zip64_cdir_total_entries_on_this_disk > MZ_UINT32_MAX)\n+      return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);\n+\n+    cdir_entries_on_this_disk =\n+        (mz_uint32)zip64_cdir_total_entries_on_this_disk;\n+\n+    /* Check for miniz's current practical limits (sorry, this should be enough\n+     * for millions of files) */\n+    if (zip64_size_of_central_directory > MZ_UINT32_MAX)\n+      return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE);\n+\n+    cdir_size = (mz_uint32)zip64_size_of_central_directory;\n+\n+    num_this_disk = MZ_READ_LE32(pZip64_end_of_central_dir +\n+                                 MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS);\n+\n+    cdir_disk_index = MZ_READ_LE32(pZip64_end_of_central_dir +\n+                                   MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS);\n+\n+    cdir_ofs =\n+        MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_OFS_OFS);\n+  }\n+\n+  if (pZip->m_total_files != cdir_entries_on_this_disk)\n+    return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);\n+\n   if (((num_this_disk | cdir_disk_index) != 0) &&\n       ((num_this_disk != 1) || (cdir_disk_index != 1)))\n-    return MZ_FALSE;\n+    return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);\n \n-  if ((cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS)) <\n-      pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)\n-    return MZ_FALSE;\n+  if (cdir_size < pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)\n+    return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n \n-  cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS);\n   if ((cdir_ofs + (mz_uint64)cdir_size) > pZip->m_archive_size)\n-    return MZ_FALSE;\n+    return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n \n   pZip->m_central_directory_file_ofs = cdir_ofs;\n \n   if (pZip->m_total_files) {\n     mz_uint i, n;\n-\n-    // Read the entire central directory into a heap block, and allocate another\n-    // heap block to hold the unsorted central dir file record offsets, and\n-    // another to hold the sorted indices.\n+    /* Read the entire central directory into a heap block, and allocate another\n+     * heap block to hold the unsorted central dir file record offsets, and\n+     * possibly another to hold the sorted indices. */\n     if ((!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir, cdir_size,\n                               MZ_FALSE)) ||\n         (!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir_offsets,\n                               pZip->m_total_files, MZ_FALSE)))\n-      return MZ_FALSE;\n+      return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n \n     if (sort_central_dir) {\n       if (!mz_zip_array_resize(pZip,\n                                &pZip->m_pState->m_sorted_central_dir_offsets,\n                                pZip->m_total_files, MZ_FALSE))\n-        return MZ_FALSE;\n+        return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n     }\n \n     if (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs,\n                       pZip->m_pState->m_central_dir.m_p,\n                       cdir_size) != cdir_size)\n-      return MZ_FALSE;\n+      return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n \n-    // Now create an index into the central directory file records, do some\n-    // basic sanity checking on each record, and check for zip64 entries (which\n-    // are not yet supported).\n+    /* Now create an index into the central directory file records, do some\n+     * basic sanity checking on each record */\n     p = (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p;\n     for (n = cdir_size, i = 0; i < pZip->m_total_files; ++i) {\n-      mz_uint total_header_size, comp_size, decomp_size, disk_index;\n+      mz_uint total_header_size, disk_index, bit_flags, filename_size,\n+          ext_data_size;\n+      mz_uint64 comp_size, decomp_size, local_header_ofs;\n+\n       if ((n < MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) ||\n           (MZ_READ_LE32(p) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG))\n-        return MZ_FALSE;\n+        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n+\n       MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32,\n                            i) =\n           (mz_uint32)(p - (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p);\n+\n       if (sort_central_dir)\n         MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_sorted_central_dir_offsets,\n                              mz_uint32, i) = i;\n+\n       comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS);\n       decomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS);\n-      if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) &&\n-           (decomp_size != comp_size)) ||\n-          (decomp_size && !comp_size) || (decomp_size == 0xFFFFFFFF) ||\n-          (comp_size == 0xFFFFFFFF))\n-        return MZ_FALSE;\n+      local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS);\n+      filename_size = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS);\n+      ext_data_size = MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS);\n+\n+      if ((!pZip->m_pState->m_zip64_has_extended_info_fields) &&\n+          (ext_data_size) &&\n+          (MZ_MAX(MZ_MAX(comp_size, decomp_size), local_header_ofs) ==\n+           MZ_UINT32_MAX)) {\n+        /* Attempt to find zip64 extended information field in the entry's extra\n+         * data */\n+        mz_uint32 extra_size_remaining = ext_data_size;\n+\n+        if (extra_size_remaining) {\n+          const mz_uint8 *pExtra_data;\n+          void *buf = NULL;\n+\n+          if (MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size + ext_data_size >\n+              n) {\n+            buf = MZ_MALLOC(ext_data_size);\n+            if (buf == NULL)\n+              return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n+\n+            if (pZip->m_pRead(pZip->m_pIO_opaque,\n+                              cdir_ofs + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE +\n+                                  filename_size,\n+                              buf, ext_data_size) != ext_data_size) {\n+              MZ_FREE(buf);\n+              return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n+            }\n+\n+            pExtra_data = (mz_uint8 *)buf;\n+          } else {\n+            pExtra_data = p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size;\n+          }\n+\n+          do {\n+            mz_uint32 field_id;\n+            mz_uint32 field_data_size;\n+\n+            if (extra_size_remaining < (sizeof(mz_uint16) * 2)) {\n+              MZ_FREE(buf);\n+              return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n+            }\n+\n+            field_id = MZ_READ_LE16(pExtra_data);\n+            field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16));\n+\n+            if ((field_data_size + sizeof(mz_uint16) * 2) >\n+                extra_size_remaining) {\n+              MZ_FREE(buf);\n+              return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n+            }\n+\n+            if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) {\n+              /* Ok, the archive didn't have any zip64 headers but it uses a\n+               * zip64 extended information field so mark it as zip64 anyway\n+               * (this can occur with infozip's zip util when it reads\n+               * compresses files from stdin). */\n+              pZip->m_pState->m_zip64 = MZ_TRUE;\n+              pZip->m_pState->m_zip64_has_extended_info_fields = MZ_TRUE;\n+              break;\n+            }\n+\n+            pExtra_data += sizeof(mz_uint16) * 2 + field_data_size;\n+            extra_size_remaining =\n+                extra_size_remaining - sizeof(mz_uint16) * 2 - field_data_size;\n+          } while (extra_size_remaining);\n+\n+          MZ_FREE(buf);\n+        }\n+      }\n+\n+      /* I've seen archives that aren't marked as zip64 that uses zip64 ext\n+       * data, argh */\n+      if ((comp_size != MZ_UINT32_MAX) && (decomp_size != MZ_UINT32_MAX)) {\n+        if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) &&\n+             (decomp_size != comp_size)) ||\n+            (decomp_size && !comp_size))\n+          return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n+      }\n+\n       disk_index = MZ_READ_LE16(p + MZ_ZIP_CDH_DISK_START_OFS);\n-      if ((disk_index != num_this_disk) && (disk_index != 1))\n-        return MZ_FALSE;\n-      if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) +\n-           MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size)\n-        return MZ_FALSE;\n+      if ((disk_index == MZ_UINT16_MAX) ||\n+          ((disk_index != num_this_disk) && (disk_index != 1)))\n+        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);\n+\n+      if (comp_size != MZ_UINT32_MAX) {\n+        if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) +\n+             MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size)\n+          return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n+      }\n+\n+      bit_flags = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS);\n+      if (bit_flags & MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED)\n+        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION);\n+\n       if ((total_header_size = MZ_ZIP_CENTRAL_DIR_HEADER_SIZE +\n                                MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) +\n                                MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS) +\n                                MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS)) >\n           n)\n-        return MZ_FALSE;\n+        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n+\n       n -= total_header_size;\n       p += total_header_size;\n     }\ndiff --git a/contrib/zip/src/zip.c b/contrib/zip/src/zip.c\nindex ff3a8fe1e6..1abcfd8fd1 100644\n--- a/contrib/zip/src/zip.c\n+++ b/contrib/zip/src/zip.c\n@@ -24,7 +24,6 @@\n   ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) &&   \\\n    (P)[1] == ':')\n #define FILESYSTEM_PREFIX_LEN(P) (HAS_DEVICE(P) ? 2 : 0)\n-#define ISSLASH(C) ((C) == '/' || (C) == '\\\\')\n \n #else\n \n@@ -48,7 +47,7 @@ int symlink(const char *target, const char *linkpath); // needed on Linux\n #endif\n \n #ifndef ISSLASH\n-#define ISSLASH(C) ((C) == '/')\n+#define ISSLASH(C) ((C) == '/' || (C) == '\\\\')\n #endif\n \n #define CLEANUP(ptr)                                                           \\\n@@ -78,26 +77,34 @@ static const char *base_name(const char *name) {\n   return base;\n }\n \n-static int mkpath(const char *path) {\n-  char const *p;\n+static int mkpath(char *path) {\n+  char *p;\n   char npath[MAX_PATH + 1];\n   int len = 0;\n   int has_device = HAS_DEVICE(path);\n \n   memset(npath, 0, MAX_PATH + 1);\n-\n-#ifdef _WIN32\n-  // only on windows fix the path\n-  npath[0] = path[0];\n-  npath[1] = path[1];\n-  len = 2;\n-#endif // _WIN32\n-    \n+  if (has_device) {\n+    // only on windows\n+    npath[0] = path[0];\n+    npath[1] = path[1];\n+    len = 2;\n+  }\n   for (p = path + len; *p && len < MAX_PATH; p++) {\n     if (ISSLASH(*p) && ((!has_device && len > 0) || (has_device && len > 2))) {\n-      if (MKDIR(npath) == -1)\n-        if (errno != EEXIST)\n+#if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER) ||              \\\n+    defined(__MINGW32__)\n+#else\n+      if ('\\\\' == *p) {\n+        *p = '/';\n+      }\n+#endif\n+\n+      if (MKDIR(npath) == -1) {\n+        if (errno != EEXIST) {\n           return -1;\n+        }\n+      }\n     }\n     npath[len++] = *p;\n   }\n@@ -279,7 +286,14 @@ int zip_entry_open(struct zip_t *zip, const char *entryname) {\n   zip->entry.header_offset = zip->archive.m_archive_size;\n   memset(zip->entry.header, 0, MZ_ZIP_LOCAL_DIR_HEADER_SIZE * sizeof(mz_uint8));\n   zip->entry.method = 0;\n+\n+  // UNIX or APPLE\n+#if MZ_PLATFORM == 3 || MZ_PLATFORM == 19\n+  // regular file with rw-r--r-- persmissions\n+  zip->entry.external_attr = (mz_uint32)(0100644) << 16;\n+#else\n   zip->entry.external_attr = 0;\n+#endif\n \n   num_alignment_padding_bytes =\n       mz_zip_writer_compute_padding_needed_for_file_alignment(pzip);\n@@ -660,7 +674,7 @@ ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize) {\n   }\n \n   if (!mz_zip_reader_extract_to_mem_no_alloc(pzip, (mz_uint)zip->entry.index,\n-  buf, bufsize, 0, NULL,  0)) {\n+                                             buf, bufsize, 0, NULL, 0)) {\n     return -1;\n   }\n \n@@ -670,10 +684,7 @@ ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize) {\n int zip_entry_fread(struct zip_t *zip, const char *filename) {\n   mz_zip_archive *pzip = NULL;\n   mz_uint idx;\n-#if defined(_MSC_VER)\n-#else\n   mz_uint32 xattr = 0;\n-#endif\n   mz_zip_archive_file_stat info;\n \n   if (!zip) {\n@@ -875,12 +886,19 @@ int zip_extract(const char *zipname, const char *dir,\n       goto out;\n     }\n \n-    if ((((info.m_version_made_by >> 8) == 3) || ((info.m_version_made_by >> 8) == 19)) // if zip is produced on Unix or macOS (3 and 19 from section 4.4.2.2 of zip standard)\n-        && info.m_external_attr & (0x20 << 24)) { // and has sym link attribute (0x80 is file, 0x40 is directory)\n+    if ((((info.m_version_made_by >> 8) == 3) ||\n+         ((info.m_version_made_by >> 8) ==\n+          19)) // if zip is produced on Unix or macOS (3 and 19 from\n+               // section 4.4.2.2 of zip standard)\n+        && info.m_external_attr &\n+               (0x20 << 24)) { // and has sym link attribute (0x80 is file, 0x40\n+                               // is directory)\n #if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER) ||              \\\n     defined(__MINGW32__)\n-#else      \n-      if (info.m_uncomp_size > MAX_PATH || !mz_zip_reader_extract_to_mem_no_alloc(&zip_archive, i, symlink_to, MAX_PATH, 0, NULL, 0)) {\n+#else\n+      if (info.m_uncomp_size > MAX_PATH ||\n+          !mz_zip_reader_extract_to_mem_no_alloc(&zip_archive, i, symlink_to,\n+                                                 MAX_PATH, 0, NULL, 0)) {\n         goto out;\n       }\n       symlink_to[info.m_uncomp_size] = '\\0';\ndiff --git a/contrib/zip/src/zip.h b/contrib/zip/src/zip.h\nindex 5f39df50ad..a48d64d6de 100644\n--- a/contrib/zip/src/zip.h\n+++ b/contrib/zip/src/zip.h\n@@ -20,241 +20,240 @@ extern \"C\" {\n #endif\n \n #if !defined(_SSIZE_T_DEFINED) && !defined(_SSIZE_T_DEFINED_) &&               \\\n-    !defined(_SSIZE_T) && !defined(_SSIZE_T_) && !defined(__ssize_t_defined)\n-#define _SSIZE_T\n+    !defined(__DEFINED_ssize_t) && !defined(__ssize_t_defined) &&              \\\n+    !defined(_SSIZE_T) && !defined(_SSIZE_T_)\n+\n // 64-bit Windows is the only mainstream platform\n // where sizeof(long) != sizeof(void*)\n #ifdef _WIN64\n-typedef long long  ssize_t;  /* byte count or error */\n+typedef long long ssize_t; /* byte count or error */\n #else\n-typedef long  ssize_t;  /* byte count or error */\n+typedef long ssize_t; /* byte count or error */\n #endif\n+\n+#define _SSIZE_T_DEFINED\n+#define _SSIZE_T_DEFINED_\n+#define __DEFINED_ssize_t\n+#define __ssize_t_defined\n+#define _SSIZE_T\n+#define _SSIZE_T_\n+\n #endif\n \n #ifndef MAX_PATH\n #define MAX_PATH 32767 /* # chars in a path name including NULL */\n #endif\n \n+/**\n+ * @mainpage\n+ *\n+ * Documenation for @ref zip.\n+ */\n+\n+/**\n+ * @addtogroup zip\n+ * @{\n+ */\n+\n+/**\n+ * Default zip compression level.\n+ */\n+\n #define ZIP_DEFAULT_COMPRESSION_LEVEL 6\n \n-/*\n-  This data structure is used throughout the library to represent zip archive\n-  - forward declaration.\n-*/\n+/**\n+ * @struct zip_t\n+ *\n+ * This data structure is used throughout the library to represent zip archive -\n+ * forward declaration.\n+ */\n struct zip_t;\n \n-/*\n-  Opens zip archive with compression level using the given mode.\n-\n-  Args:\n-    zipname: zip archive file name.\n-    level: compression level (0-9 are the standard zlib-style levels).\n-    mode: file access mode.\n-        'r': opens a file for reading/extracting (the file must exists).\n-        'w': creates an empty file for writing.\n-        'a': appends to an existing archive.\n-\n-  Returns:\n-    The zip archive handler or NULL on error\n-*/\n+/**\n+ * Opens zip archive with compression level using the given mode.\n+ *\n+ * @param zipname zip archive file name.\n+ * @param level compression level (0-9 are the standard zlib-style levels).\n+ * @param mode file access mode.\n+ *        - 'r': opens a file for reading/extracting (the file must exists).\n+ *        - 'w': creates an empty file for writing.\n+ *        - 'a': appends to an existing archive.\n+ *\n+ * @return the zip archive handler or NULL on error\n+ */\n extern struct zip_t *zip_open(const char *zipname, int level, char mode);\n \n-/*\n-  Closes the zip archive, releases resources - always finalize.\n-\n-  Args:\n-    zip: zip archive handler.\n-*/\n+/**\n+ * Closes the zip archive, releases resources - always finalize.\n+ *\n+ * @param zip zip archive handler.\n+ */\n extern void zip_close(struct zip_t *zip);\n \n-/*\n-  Opens an entry by name in the zip archive.\n-  For zip archive opened in 'w' or 'a' mode the function will append\n-  a new entry. In readonly mode the function tries to locate the entry\n-  in global dictionary.\n-\n-  Args:\n-    zip: zip archive handler.\n-    entryname: an entry name in local dictionary.\n-\n-  Returns:\n-    The return code - 0 on success, negative number (< 0) on error.\n-*/\n+/**\n+ * Opens an entry by name in the zip archive.\n+ *\n+ * For zip archive opened in 'w' or 'a' mode the function will append\n+ * a new entry. In readonly mode the function tries to locate the entry\n+ * in global dictionary.\n+ *\n+ * @param zip zip archive handler.\n+ * @param entryname an entry name in local dictionary.\n+ *\n+ * @return the return code - 0 on success, negative number (< 0) on error.\n+ */\n extern int zip_entry_open(struct zip_t *zip, const char *entryname);\n \n-/*\n-  Opens a new entry by index in the zip archive.\n-  This function is only valid if zip archive was opened in 'r' (readonly) mode.\n-\n-  Args:\n-    zip: zip archive handler.\n-    index: index in local dictionary.\n-\n-  Returns:\n-    The return code - 0 on success, negative number (< 0) on error.\n-*/\n+/**\n+ * Opens a new entry by index in the zip archive.\n+ *\n+ * This function is only valid if zip archive was opened in 'r' (readonly) mode.\n+ *\n+ * @param zip zip archive handler.\n+ * @param index index in local dictionary.\n+ *\n+ * @return the return code - 0 on success, negative number (< 0) on error.\n+ */\n extern int zip_entry_openbyindex(struct zip_t *zip, int index);\n \n-/*\n-  Closes a zip entry, flushes buffer and releases resources.\n-\n-  Args:\n-    zip: zip archive handler.\n-\n-  Returns:\n-    The return code - 0 on success, negative number (< 0) on error.\n-*/\n+/**\n+ * Closes a zip entry, flushes buffer and releases resources.\n+ *\n+ * @param zip zip archive handler.\n+ *\n+ * @return the return code - 0 on success, negative number (< 0) on error.\n+ */\n extern int zip_entry_close(struct zip_t *zip);\n \n-/*\n-  Returns a local name of the current zip entry.\n-  The main difference between user's entry name and local entry name\n-  is optional relative path.\n-  Following .ZIP File Format Specification - the path stored MUST not contain\n-  a drive or device letter, or a leading slash.\n-  All slashes MUST be forward slashes '/' as opposed to backwards slashes '\\'\n-  for compatibility with Amiga and UNIX file systems etc.\n-\n-  Args:\n-    zip: zip archive handler.\n-\n-  Returns:\n-    The pointer to the current zip entry name, or NULL on error.\n-*/\n+/**\n+ * Returns a local name of the current zip entry.\n+ *\n+ * The main difference between user's entry name and local entry name\n+ * is optional relative path.\n+ * Following .ZIP File Format Specification - the path stored MUST not contain\n+ * a drive or device letter, or a leading slash.\n+ * All slashes MUST be forward slashes '/' as opposed to backwards slashes '\\'\n+ * for compatibility with Amiga and UNIX file systems etc.\n+ *\n+ * @param zip: zip archive handler.\n+ *\n+ * @return the pointer to the current zip entry name, or NULL on error.\n+ */\n extern const char *zip_entry_name(struct zip_t *zip);\n \n-/*\n-  Returns an index of the current zip entry.\n-\n-  Args:\n-    zip: zip archive handler.\n-\n-  Returns:\n-    The index on success, negative number (< 0) on error.\n-*/\n+/**\n+ * Returns an index of the current zip entry.\n+ *\n+ * @param zip zip archive handler.\n+ *\n+ * @return the index on success, negative number (< 0) on error.\n+ */\n extern int zip_entry_index(struct zip_t *zip);\n \n-/*\n-  Determines if the current zip entry is a directory entry.\n-\n-  Args:\n-    zip: zip archive handler.\n-\n-  Returns:\n-    The return code - 1 (true), 0 (false), negative number (< 0) on error.\n-*/\n+/**\n+ * Determines if the current zip entry is a directory entry.\n+ *\n+ * @param zip zip archive handler.\n+ *\n+ * @return the return code - 1 (true), 0 (false), negative number (< 0) on\n+ *         error.\n+ */\n extern int zip_entry_isdir(struct zip_t *zip);\n \n-/*\n-  Returns an uncompressed size of the current zip entry.\n-\n-  Args:\n-    zip: zip archive handler.\n-\n-  Returns:\n-    The uncompressed size in bytes.\n-*/\n+/**\n+ * Returns an uncompressed size of the current zip entry.\n+ *\n+ * @param zip zip archive handler.\n+ *\n+ * @return the uncompressed size in bytes.\n+ */\n extern unsigned long long zip_entry_size(struct zip_t *zip);\n \n-/*\n-  Returns CRC-32 checksum of the current zip entry.\n-\n-  Args:\n-    zip: zip archive handler.\n-\n-  Returns:\n-    The CRC-32 checksum.\n-*/\n+/**\n+ * Returns CRC-32 checksum of the current zip entry.\n+ *\n+ * @param zip zip archive handler.\n+ *\n+ * @return the CRC-32 checksum.\n+ */\n extern unsigned int zip_entry_crc32(struct zip_t *zip);\n \n-/*\n-  Compresses an input buffer for the current zip entry.\n-\n-  Args:\n-    zip: zip archive handler.\n-    buf: input buffer.\n-    bufsize: input buffer size (in bytes).\n-\n-  Returns:\n-    The return code - 0 on success, negative number (< 0) on error.\n-*/\n+/**\n+ * Compresses an input buffer for the current zip entry.\n+ *\n+ * @param zip zip archive handler.\n+ * @param buf input buffer.\n+ * @param bufsize input buffer size (in bytes).\n+ *\n+ * @return the return code - 0 on success, negative number (< 0) on error.\n+ */\n extern int zip_entry_write(struct zip_t *zip, const void *buf, size_t bufsize);\n \n-/*\n-  Compresses a file for the current zip entry.\n-\n-  Args:\n-    zip: zip archive handler.\n-    filename: input file.\n-\n-  Returns:\n-    The return code - 0 on success, negative number (< 0) on error.\n-*/\n+/**\n+ * Compresses a file for the current zip entry.\n+ *\n+ * @param zip zip archive handler.\n+ * @param filename input file.\n+ *\n+ * @return the return code - 0 on success, negative number (< 0) on error.\n+ */\n extern int zip_entry_fwrite(struct zip_t *zip, const char *filename);\n \n-/*\n-  Extracts the current zip entry into output buffer.\n-  The function allocates sufficient memory for a output buffer.\n-\n-  Args:\n-    zip: zip archive handler.\n-    buf: output buffer.\n-    bufsize: output buffer size (in bytes).\n-\n-  Note:\n-    - remember to release memory allocated for a output buffer.\n-    - for large entries, please take a look at zip_entry_extract function.\n-\n-  Returns:\n-    The return code - the number of bytes actually read on success.\n-    Otherwise a -1 on error.\n-*/\n+/**\n+ * Extracts the current zip entry into output buffer.\n+ *\n+ * The function allocates sufficient memory for a output buffer.\n+ *\n+ * @param zip zip archive handler.\n+ * @param buf output buffer.\n+ * @param bufsize output buffer size (in bytes).\n+ *\n+ * @note remember to release memory allocated for a output buffer.\n+ *       for large entries, please take a look at zip_entry_extract function.\n+ *\n+ * @return the return code - the number of bytes actually read on success.\n+ *         Otherwise a -1 on error.\n+ */\n extern ssize_t zip_entry_read(struct zip_t *zip, void **buf, size_t *bufsize);\n \n-/*\n-  Extracts the current zip entry into a memory buffer using no memory\n-  allocation.\n-\n-  Args:\n-    zip: zip archive handler.\n-    buf: preallocated output buffer.\n-    bufsize: output buffer size (in bytes).\n-\n-  Note:\n-    - ensure supplied output buffer is large enough.\n-    - zip_entry_size function (returns uncompressed size for the current entry)\n-      can be handy to estimate how big buffer is needed.\n-    - for large entries, please take a look at zip_entry_extract function.\n-\n-  Returns:\n-    The return code - the number of bytes actually read on success.\n-    Otherwise a -1 on error (e.g. bufsize is not large enough).\n-*/\n-extern ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize);\n-\n-/*\n-  Extracts the current zip entry into output file.\n-\n-  Args:\n-    zip: zip archive handler.\n-    filename: output file.\n-\n-  Returns:\n-    The return code - 0 on success, negative number (< 0) on error.\n-*/\n+/**\n+ * Extracts the current zip entry into a memory buffer using no memory\n+ * allocation.\n+ *\n+ * @param zip zip archive handler.\n+ * @param buf preallocated output buffer.\n+ * @param bufsize output buffer size (in bytes).\n+ *\n+ * @note ensure supplied output buffer is large enough.\n+ *       zip_entry_size function (returns uncompressed size for the current\n+ *       entry) can be handy to estimate how big buffer is needed. for large\n+ * entries, please take a look at zip_entry_extract function.\n+ *\n+ * @return the return code - the number of bytes actually read on success.\n+ *         Otherwise a -1 on error (e.g. bufsize is not large enough).\n+ */\n+extern ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf,\n+                                     size_t bufsize);\n+\n+/**\n+ * Extracts the current zip entry into output file.\n+ *\n+ * @param zip zip archive handler.\n+ * @param filename output file.\n+ *\n+ * @return the return code - 0 on success, negative number (< 0) on error.\n+ */\n extern int zip_entry_fread(struct zip_t *zip, const char *filename);\n \n-/*\n-  Extracts the current zip entry using a callback function (on_extract).\n-\n-  Args:\n-    zip: zip archive handler.\n-    on_extract: callback function.\n-    arg: opaque pointer (optional argument,\n-                         which you can pass to the on_extract callback)\n-\n-   Returns:\n-    The return code - 0 on success, negative number (< 0) on error.\n+/**\n+ * Extracts the current zip entry using a callback function (on_extract).\n+ *\n+ * @param zip zip archive handler.\n+ * @param on_extract callback function.\n+ * @param arg opaque pointer (optional argument, which you can pass to the\n+ *        on_extract callback)\n+ *\n+ * @return the return code - 0 on success, negative number (< 0) on error.\n  */\n extern int\n zip_entry_extract(struct zip_t *zip,\n@@ -262,53 +261,49 @@ zip_entry_extract(struct zip_t *zip,\n                                        const void *data, size_t size),\n                   void *arg);\n \n-/*\n-  Returns the number of all entries (files and directories) in the zip archive.\n-\n-  Args:\n-    zip: zip archive handler.\n-\n-  Returns:\n-    The return code - the number of entries on success,\n-    negative number (< 0) on error.\n-*/\n+/**\n+ * Returns the number of all entries (files and directories) in the zip archive.\n+ *\n+ * @param zip zip archive handler.\n+ *\n+ * @return the return code - the number of entries on success, negative number\n+ *         (< 0) on error.\n+ */\n extern int zip_total_entries(struct zip_t *zip);\n \n-/*\n-  Creates a new archive and puts files into a single zip archive.\n-\n-  Args:\n-    zipname: zip archive file.\n-    filenames: input files.\n-    len: number of input files.\n-\n-  Returns:\n-    The return code - 0 on success, negative number (< 0) on error.\n-*/\n+/**\n+ * Creates a new archive and puts files into a single zip archive.\n+ *\n+ * @param zipname zip archive file.\n+ * @param filenames input files.\n+ * @param len: number of input files.\n+ *\n+ * @return the return code - 0 on success, negative number (< 0) on error.\n+ */\n extern int zip_create(const char *zipname, const char *filenames[], size_t len);\n \n-/*\n-  Extracts a zip archive file into directory.\n-\n-  If on_extract_entry is not NULL, the callback will be called after\n-  successfully extracted each zip entry.\n-  Returning a negative value from the callback will cause abort and return an\n-  error. The last argument (void *arg) is optional, which you can use to pass\n-  data to the on_extract_entry callback.\n-\n-  Args:\n-    zipname: zip archive file.\n-    dir: output directory.\n-    on_extract_entry: on extract callback.\n-    arg: opaque pointer.\n-\n-  Returns:\n-    The return code - 0 on success, negative number (< 0) on error.\n-*/\n+/**\n+ * Extracts a zip archive file into directory.\n+ *\n+ * If on_extract_entry is not NULL, the callback will be called after\n+ * successfully extracted each zip entry.\n+ * Returning a negative value from the callback will cause abort and return an\n+ * error. The last argument (void *arg) is optional, which you can use to pass\n+ * data to the on_extract_entry callback.\n+ *\n+ * @param zipname zip archive file.\n+ * @param dir output directory.\n+ * @param on_extract_entry on extract callback.\n+ * @param arg opaque pointer.\n+ *\n+ * @return the return code - 0 on success, negative number (< 0) on error.\n+ */\n extern int zip_extract(const char *zipname, const char *dir,\n                        int (*on_extract_entry)(const char *filename, void *arg),\n                        void *arg);\n \n+/** @} */\n+\n #ifdef __cplusplus\n }\n #endif\ndiff --git a/contrib/zip/test/CMakeLists.txt b/contrib/zip/test/CMakeLists.txt\nindex 9b2a8db106..cc060b00fe 100644\n--- a/contrib/zip/test/CMakeLists.txt\n+++ b/contrib/zip/test/CMakeLists.txt\n@@ -1,19 +1,16 @@\n cmake_minimum_required(VERSION 2.8)\n \n-if (\"${CMAKE_C_COMPILER_ID}\" STREQUAL \"GNU\" OR \"${CMAKE_C_COMPILER_ID}\" STREQUAL \"Clang\" OR \"${CMAKE_C_COMPILER_ID}\" STREQUAL \"AppleClang\")\n-  if(ENABLE_COVERAGE)\n-    set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -g \")\n-    set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -O0\")\n-    set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -fprofile-arcs\")\n-    set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -ftest-coverage\")\n-    set(CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS} --coverage\")\n-  endif()\n-endif ()\n-\n # test\n-include_directories(../src)\n-add_executable(test.exe test.c ../src/zip.c)\n-add_executable(test_miniz.exe test_miniz.c)\n+set(test_out test.out)\n+set(test_miniz_out test_miniz.out)\n+\n+add_executable(${test_out} test.c)\n+target_link_libraries(${test_out} zip)\n+add_executable(${test_miniz_out} test_miniz.c)\n+target_link_libraries(${test_miniz_out} zip)\n+\n+add_test(NAME ${test_out} COMMAND ${test_out})\n+add_test(NAME ${test_miniz_out} COMMAND ${test_miniz_out})\n \n-add_test(NAME test COMMAND test.exe)\n-add_test(NAME test_miniz COMMAND test_miniz.exe)\n+set(test_out ${test_out} PARENT_SCOPE)\n+set(test_miniz_out ${test_miniz_out} PARENT_SCOPE)\ndiff --git a/contrib/zip/test/test.c b/contrib/zip/test/test.c\nindex 454430533a..a9b2ddab1e 100644\n--- a/contrib/zip/test/test.c\n+++ b/contrib/zip/test/test.c\n@@ -29,6 +29,8 @@\n #define XFILE \"7.txt\\0\"\n #define XMODE 0100777\n \n+#define UNIXMODE 0100644\n+\n #define UNUSED(x) (void)x\n \n static int total_entries = 0;\n@@ -102,7 +104,8 @@ static void test_read(void) {\n   assert(0 == zip_entry_close(zip));\n   free(buf);\n   buf = NULL;\n-  \n+  bufsize = 0;\n+\n   assert(0 == zip_entry_open(zip, \"test/test-2.txt\"));\n   assert(strlen(TESTDATA2) == zip_entry_size(zip));\n   assert(CRC32DATA2 == zip_entry_crc32(zip));\n@@ -131,7 +134,8 @@ static void test_read(void) {\n   assert(0 == zip_entry_close(zip));\n   free(buf);\n   buf = NULL;\n-  \n+  bufsize = 0;\n+\n   buftmp = strlen(TESTDATA1);\n   buf = calloc(buftmp, sizeof(char));\n   assert(0 == zip_entry_open(zip, \"test/test-1.txt\"));\n@@ -433,6 +437,35 @@ static void test_mtime(void) {\n   remove(ZIPNAME);\n }\n \n+static void test_unix_permissions(void) {\n+#if defined(_WIN64) || defined(_WIN32) || defined(__WIN32__)\n+#else\n+  // UNIX or APPLE\n+  struct MZ_FILE_STAT_STRUCT file_stats;\n+\n+  remove(ZIPNAME);\n+\n+  struct zip_t *zip = zip_open(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w');\n+  assert(zip != NULL);\n+\n+  assert(0 == zip_entry_open(zip, RFILE));\n+  assert(0 == zip_entry_write(zip, TESTDATA1, strlen(TESTDATA1)));\n+  assert(0 == zip_entry_close(zip));\n+\n+  zip_close(zip);\n+\n+  remove(RFILE);\n+\n+  assert(0 == zip_extract(ZIPNAME, \".\", NULL, NULL));\n+\n+  assert(0 == MZ_FILE_STAT(RFILE, &file_stats));\n+  assert(UNIXMODE == file_stats.st_mode);\n+\n+  remove(RFILE);\n+  remove(ZIPNAME);\n+#endif\n+}\n+\n int main(int argc, char *argv[]) {\n   UNUSED(argc);\n   UNUSED(argv);\n@@ -453,6 +486,7 @@ int main(int argc, char *argv[]) {\n   test_write_permissions();\n   test_exe_permissions();\n   test_mtime();\n+  test_unix_permissions();\n \n   remove(ZIPNAME);\n   return 0;\ndiff --git a/contrib/zip/test/test_miniz.c b/contrib/zip/test/test_miniz.c\nindex ebc0564dc3..babcaecdb6 100644\n--- a/contrib/zip/test/test_miniz.c\n+++ b/contrib/zip/test/test_miniz.c\n@@ -23,16 +23,39 @@ int main(int argc, char *argv[]) {\n   uint step = 0;\n   int cmp_status;\n   uLong src_len = (uLong)strlen(s_pStr);\n-  uLong cmp_len = compressBound(src_len);\n   uLong uncomp_len = src_len;\n+  uLong cmp_len;\n   uint8 *pCmp, *pUncomp;\n+  size_t sz;\n   uint total_succeeded = 0;\n   (void)argc, (void)argv;\n \n   printf(\"miniz.c version: %s\\n\", MZ_VERSION);\n \n   do {\n+    pCmp = (uint8 *)tdefl_compress_mem_to_heap(s_pStr, src_len, &cmp_len, 0);\n+    if (!pCmp) {\n+      printf(\"tdefl_compress_mem_to_heap failed\\n\");\n+      return EXIT_FAILURE;\n+    }\n+    if (src_len <= cmp_len) {\n+      printf(\"tdefl_compress_mem_to_heap failed: from %u to %u bytes\\n\",\n+             (mz_uint32)uncomp_len, (mz_uint32)cmp_len);\n+      free(pCmp);\n+      return EXIT_FAILURE;\n+    }\n+\n+    sz = tdefl_compress_mem_to_mem(pCmp, cmp_len, s_pStr, src_len, 0);\n+    if (sz != cmp_len) {\n+      printf(\"tdefl_compress_mem_to_mem failed: expected %u, got %u\\n\",\n+             (mz_uint32)cmp_len, (mz_uint32)sz);\n+      free(pCmp);\n+      return EXIT_FAILURE;\n+    }\n+\n     // Allocate buffers to hold compressed and uncompressed data.\n+    free(pCmp);\n+    cmp_len = compressBound(src_len);\n     pCmp = (mz_uint8 *)malloc((size_t)cmp_len);\n     pUncomp = (mz_uint8 *)malloc((size_t)src_len);\n     if ((!pCmp) || (!pUncomp)) {\n"
  },
  {
    "path": "package/assimp/0003-closes-2954-upgrade-to-latest-greatest.patch",
    "content": "From bb3db0ebaffc6b76de256e597ec1d1e4d2a6663f Mon Sep 17 00:00:00 2001\nFrom: kimkulling <kim.kulling@googlemail.com>\nDate: Mon, 9 Mar 2020 10:51:26 +0100\nSubject: [PATCH] closes https://github.com/assimp/assimp/issues/2954: upgrade\n to latest greatest.\n\n[Retrieved from:\nhttps://github.com/assimp/assimp/commit/bb3db0ebaffc6b76de256e597ec1d1e4d2a6663f]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n contrib/zip/CMakeLists.txt      |  8 ++----\n contrib/zip/README.md           | 51 +++++++++++++++++++++++++++++++--\n contrib/zip/src/zip.c           | 17 ++++++++++-\n contrib/zip/src/zip.h           | 13 ++++++++-\n contrib/zip/test/CMakeLists.txt |  5 ----\n contrib/zip/test/test.c         |  4 ++-\n 6 files changed, 81 insertions(+), 17 deletions(-)\n\ndiff --git a/contrib/zip/CMakeLists.txt b/contrib/zip/CMakeLists.txt\nindex 77916d2e14..f194649ede 100644\n--- a/contrib/zip/CMakeLists.txt\n+++ b/contrib/zip/CMakeLists.txt\n@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.0)\n \n project(zip\n   LANGUAGES C\n-  VERSION \"0.1.15\")\n+  VERSION \"0.1.18\")\n set(CMAKE_MODULE_PATH \"${PROJECT_SOURCE_DIR}/cmake\" ${CMAKE_MODULE_PATH})\n \n option(CMAKE_DISABLE_TESTING \"Disable test creation\" OFF)\n@@ -16,10 +16,6 @@ elseif (\"${CMAKE_C_COMPILER_ID}\" STREQUAL \"GNU\" OR\n         \"${CMAKE_C_COMPILER_ID}\" STREQUAL \"Clang\" OR\n         \"${CMAKE_C_COMPILER_ID}\" STREQUAL \"AppleClang\")\n   set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -std=c99 -Wall -Wextra -Werror -pedantic\")\n-  if(ENABLE_COVERAGE)\n-    set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage\")\n-    set(CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS} --coverage\")\n-  endif()\n endif (MSVC)\n \n # zip\n@@ -35,7 +31,7 @@ if (NOT CMAKE_DISABLE_TESTING)\n   enable_testing()\n   add_subdirectory(test)\n   find_package(Sanitizers)\n-  add_sanitizers(${PROJECT_NAME} ${test_out} ${test_miniz_out})\n+  add_sanitizers(${PROJECT_NAME} ${test_out})\n endif()\n \n ####\ndiff --git a/contrib/zip/README.md b/contrib/zip/README.md\nindex 14eb9a34c8..bdd0822b67 100644\n--- a/contrib/zip/README.md\n+++ b/contrib/zip/README.md\n@@ -1,10 +1,8 @@\n ### A portable (OSX/Linux/Windows), simple zip library written in C\n This is done by hacking awesome [miniz](https://code.google.com/p/miniz) library and layering functions on top of the miniz v1.15 API.\n \n-[![Windows](https://ci.appveyor.com/api/projects/status/bph8dr3jacgmjv32/branch/master?svg=true&label=windows)](https://ci.appveyor.com/project/kuba--/zip)\n-[![Linux](https://travis-ci.org/kuba--/zip.svg?branch=master&label=linux%2fosx)](https://travis-ci.org/kuba--/zip)\n+[![Build](https://github.com/kuba--/zip/workflows/build/badge.svg)](https://github.com/kuba--/zip/actions?query=workflow%3Abuild)\n [![Version](https://badge.fury.io/gh/kuba--%2Fzip.svg)](https://github.com/kuba--/zip/releases)\n-[![Codecov](https://codecov.io/gh/kuba--/zip/branch/master/graph/badge.svg)](https://codecov.io/gh/kuba--/zip)\n \n \n # The Idea\n@@ -213,6 +211,53 @@ func main() {\n }\n ```\n \n+### Rust (ffi)\n+```rust\n+extern crate libc;\n+use std::ffi::CString;\n+\n+#[repr(C)]\n+pub struct Zip {\n+    _private: [u8; 0],\n+}\n+\n+#[link(name = \"zip\")]\n+extern \"C\" {\n+    fn zip_open(path: *const libc::c_char, level: libc::c_int, mode: libc::c_char) -> *mut Zip;\n+    fn zip_close(zip: *mut Zip) -> libc::c_void;\n+\n+    fn zip_entry_open(zip: *mut Zip, entryname: *const libc::c_char) -> libc::c_int;\n+    fn zip_entry_close(zip: *mut Zip) -> libc::c_int;\n+    fn zip_entry_write(\n+        zip: *mut Zip,\n+        buf: *const libc::c_void,\n+        bufsize: libc::size_t,\n+    ) -> libc::c_int;\n+}\n+\n+fn main() {\n+    let path = CString::new(\"/tmp/test.zip\").unwrap();\n+    let mode: libc::c_char = 'w' as libc::c_char;\n+\n+    let entryname = CString::new(\"test.txt\").unwrap();\n+    let content = \"test content\\0\";\n+\n+    unsafe {\n+        let zip: *mut Zip = zip_open(path.as_ptr(), 5, mode);\n+        {\n+            zip_entry_open(zip, entryname.as_ptr());\n+            {\n+                let buf = content.as_ptr() as *const libc::c_void;\n+                let bufsize = content.len() as libc::size_t;\n+                zip_entry_write(zip, buf, bufsize);\n+            }\n+            zip_entry_close(zip);\n+        }\n+        zip_close(zip);\n+    }\n+}\n+```\n+\n ### Ruby (ffi)\n Install _ffi_ gem.\n ```shell\ndiff --git a/contrib/zip/src/zip.c b/contrib/zip/src/zip.c\nindex 1abcfd8fd1..3b2821e6a3 100644\n--- a/contrib/zip/src/zip.c\n+++ b/contrib/zip/src/zip.c\n@@ -222,6 +222,20 @@ void zip_close(struct zip_t *zip) {\n   }\n }\n \n+int zip_is64(struct zip_t *zip) {\n+  if (!zip) {\n+    // zip_t handler is not initialized\n+    return -1;\n+  }\n+\n+  if (!zip->archive.m_pState) {\n+    // zip state is not initialized\n+    return -1;\n+  }\n+\n+  return (int)zip->archive.m_pState->m_zip64;\n+}\n+\n int zip_entry_open(struct zip_t *zip, const char *entryname) {\n   size_t entrylen = 0;\n   mz_zip_archive *pzip = NULL;\n@@ -794,7 +808,8 @@ int zip_create(const char *zipname, const char *filenames[], size_t len) {\n \n     if (MZ_FILE_STAT(name, &file_stat) != 0) {\n       // problem getting information - check errno\n-      return -1;\n+      status = -1;\n+      break;\n     }\n \n     if ((file_stat.st_mode & 0200) == 0) {\ndiff --git a/contrib/zip/src/zip.h b/contrib/zip/src/zip.h\nindex a48d64d6de..cd3ab5cd00 100644\n--- a/contrib/zip/src/zip.h\n+++ b/contrib/zip/src/zip.h\n@@ -21,7 +21,7 @@ extern \"C\" {\n \n #if !defined(_SSIZE_T_DEFINED) && !defined(_SSIZE_T_DEFINED_) &&               \\\n     !defined(__DEFINED_ssize_t) && !defined(__ssize_t_defined) &&              \\\n-    !defined(_SSIZE_T) && !defined(_SSIZE_T_)\n+    !defined(_SSIZE_T) && !defined(_SSIZE_T_) && !defined(_SSIZE_T_DECLARED)\n \n // 64-bit Windows is the only mainstream platform\n // where sizeof(long) != sizeof(void*)\n@@ -37,6 +37,7 @@ typedef long ssize_t; /* byte count or error */\n #define __ssize_t_defined\n #define _SSIZE_T\n #define _SSIZE_T_\n+#define _SSIZE_T_DECLARED\n \n #endif\n \n@@ -90,6 +91,16 @@ extern struct zip_t *zip_open(const char *zipname, int level, char mode);\n  */\n extern void zip_close(struct zip_t *zip);\n \n+/**\n+ * Determines if the archive has a zip64 end of central directory headers.\n+ *\n+ * @param zip zip archive handler.\n+ *\n+ * @return the return code - 1 (true), 0 (false), negative number (< 0) on\n+ *         error.\n+ */\n+extern int zip_is64(struct zip_t *zip);\n+\n /**\n  * Opens an entry by name in the zip archive.\n  *\ndiff --git a/contrib/zip/test/CMakeLists.txt b/contrib/zip/test/CMakeLists.txt\nindex cc060b00fe..1224115858 100644\n--- a/contrib/zip/test/CMakeLists.txt\n+++ b/contrib/zip/test/CMakeLists.txt\n@@ -2,15 +2,10 @@ cmake_minimum_required(VERSION 2.8)\n \n # test\n set(test_out test.out)\n-set(test_miniz_out test_miniz.out)\n \n add_executable(${test_out} test.c)\n target_link_libraries(${test_out} zip)\n-add_executable(${test_miniz_out} test_miniz.c)\n-target_link_libraries(${test_miniz_out} zip)\n \n add_test(NAME ${test_out} COMMAND ${test_out})\n-add_test(NAME ${test_miniz_out} COMMAND ${test_miniz_out})\n \n set(test_out ${test_out} PARENT_SCOPE)\n-set(test_miniz_out ${test_miniz_out} PARENT_SCOPE)\ndiff --git a/contrib/zip/test/test.c b/contrib/zip/test/test.c\nindex a9b2ddab1e..9cc2248ac0 100644\n--- a/contrib/zip/test/test.c\n+++ b/contrib/zip/test/test.c\n@@ -47,7 +47,7 @@ static void test_write(void) {\n   assert(CRC32DATA1 == zip_entry_crc32(zip));\n   ++total_entries;\n   assert(0 == zip_entry_close(zip));\n-\n+  assert(0 == zip_is64(zip));\n   zip_close(zip);\n }\n \n@@ -92,6 +92,7 @@ static void test_read(void) {\n   size_t buftmp;\n   struct zip_t *zip = zip_open(ZIPNAME, 0, 'r');\n   assert(zip != NULL);\n+  assert(0 == zip_is64(zip));\n \n   assert(0 == zip_entry_open(zip, \"test\\\\test-1.txt\"));\n   assert(strlen(TESTDATA1) == zip_entry_size(zip));\n@@ -310,6 +311,7 @@ static void test_fwrite(void) {\n   assert(0 == zip_entry_open(zip, WFILE));\n   assert(0 == zip_entry_fwrite(zip, WFILE));\n   assert(0 == zip_entry_close(zip));\n+  assert(0 == zip_is64(zip));\n \n   zip_close(zip);\n   remove(WFILE);\n"
  },
  {
    "path": "package/assimp/Config.in",
    "content": "config BR2_PACKAGE_ASSIMP\n\tbool \"assimp\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_LIBZLIB\n\thelp\n\t  Open Asset Import Library (assimp) is a portable Open Source\n\t  library to import various well-known 3D model formats in a\n\t  uniform manner. The most recent version also knows how to\n\t  export 3d files and is therefore suitable as a general-purpose\n\t  3D model converter.\n\n\t  http://www.assimp.org\n\ncomment \"assimp needs a toolchain w/ C++, wchar\"\n\tdepends on BR2_PACKAGE_LIBZLIB\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR\n\ncomment \"assimp needs libzlib\"\n\tdepends on !BR2_PACKAGE_LIBZLIB\n"
  },
  {
    "path": "package/assimp/assimp.hash",
    "content": "# Locally calculated\nsha256  11310ec1f2ad2cd46b95ba88faca8f7aaa1efe9aa12605c55e3de2b977b3dbfc  assimp-5.0.1.tar.gz\nsha256  a26ccc3dbf2f58ea99c100945a8a126fa0f9f4d7fd2b49aa8bdb8e09355864d8  LICENSE\n"
  },
  {
    "path": "package/assimp/assimp.mk",
    "content": "################################################################################\n#\n# assimp\n#\n################################################################################\n\nASSIMP_VERSION = 5.0.1\nASSIMP_SITE = $(call github,assimp,assimp,v$(ASSIMP_VERSION))\nASSIMP_LICENSE = BSD-3-Clause\nASSIMP_LICENSE_FILES = LICENSE\nASSIMP_DEPENDENCIES = zlib\nASSIMP_INSTALL_STAGING = YES\n\n# relocation truncated to fit: R_68K_GOT16O. We also need to disable\n# optimizations to not run into \"Error: value -43420 out of range\"\n# assembler issues.\nifeq ($(BR2_m68k),y)\nASSIMP_CXXFLAGS += -mxgot -O0\nendif\n\n# just like m68k coldfire, mips64 also has some limitations on the GOT\n# size for large libraries, which can be overcome by passing\n# -mxgot. Solves \"relocation truncated to fit: R_MIPS_CALL16\" issues.\nifeq ($(BR2_mips64)$(BR2_mips64el),y)\nASSIMP_CXXFLAGS += -mxgot\nendif\n\n# workaround SuperH compiler failure when static linking (i.e -fPIC is\n# not passed) in gcc versions 5.x or older. The -Os optimization level\n# causes a \"unable to find a register to spill in class\n# 'GENERAL_REGS'\" error. -O2 works fine.\nifeq ($(BR2_sh):$(BR2_STATIC_LIBS):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:y:)\nASSIMP_CXXFLAGS += -O2\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nASSIMP_CXXFLAGS += -O0\nendif\n\nASSIMP_CONF_OPTS += -DASSIMP_BUILD_TESTS=OFF \\\n\t-DCMAKE_CXX_FLAGS=\"$(TARGET_CXXFLAGS) $(ASSIMP_CXXFLAGS)\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/asterisk/0001-sounds-do-not-download-and-check-sha1s.patch",
    "content": "From 3e8a9e9a1c7eae515eb628778c3c8a04338b3bb3 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Tue, 27 Dec 2016 11:21:09 +0100\nSubject: [PATCH] sounds: do not download and check sha1s\n\nTo validate the sound archives, the corresponding sha1s are also\ndownloaded from the same location, and that download is done at install\ntime.\n\nHowever, that poses at least two problems:\n\n  - in Buildroot, we already have validated the downloads with the sha1s\n    anyway, and trying to download anything at install time is not\n    always possible (e.g. for off-line builds);\n\n  - since the download scheme is not secured (plain http), a\n    man-in-the-middle for the sounds will also be able to MITM the\n    download of the sha1s, so there is absolutely no additional safety\n    in doing so.\n\nSo we just do without the sha1 download and checks.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n---\n sounds/Makefile | 10 ----------\n 1 file changed, 10 deletions(-)\n\ndiff --git a/sounds/Makefile b/sounds/Makefile\nindex 84d0f45..7a80d56 100644\n--- a/sounds/Makefile\n+++ b/sounds/Makefile\n@@ -100,17 +100,7 @@ ifneq ($(SOUNDS_CACHE_DIR),)\n \t  if test ! -f \"$$(SOUNDS_CACHE_DIR)/$$@\"; then \\\n \t    (cd \"$$(SOUNDS_CACHE_DIR)\"; $$(DOWNLOAD) $$(SOUNDS_URL)/$$@); \\\n \t  fi; \\\n-\t  if test ! -f \"$$(SOUNDS_CACHE_DIR)/$$@.sha1\"; then \\\n-\t    (cd \"$$(SOUNDS_CACHE_DIR)\"; $$(DOWNLOAD) $$(SOUNDS_URL)/$$@.sha1); \\\n-\t  fi; \\\n \t  $$(LN) -sf \"$$(SOUNDS_CACHE_DIR)/$$@\" .; \\\n-\t  $$(LN) -sf \"$$(SOUNDS_CACHE_DIR)/$$@.sha1\" .; \\\n-\t  $$(SHA1SUM) -c --status $$@.sha1 || \\\n-\t    ( \\\n-\t      rm -f \"$$(SOUNDS_CACHE_DIR)/$$@\" \"$$(SOUNDS_CACHE_DIR)/$$@.sha1\" $$@ $$@.sha1; \\\n-\t      echo \"Bad checksum: $$@\" 1>&2; \\\n-\t      exit 1; \\\n-\t    ) || exit 1; \\\n \tfi\n else\n \t$(CMD_PREFIX) \\\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/asterisk/0002-configure-fix-detection-of-libcrypt.patch",
    "content": "From 8996503f6c55e55f326ab11c18278954ad7abaf3 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Tue, 27 Dec 2016 11:21:57 +0100\nSubject: [PATCH] configure: fix detection of libcrypt\n\nThe crypt() function is searched in two locations: -lcrypt and the\nstandard C library.\n\nThe result of the former is stored in the LIBCRYPT 'scheme' while that\nof the latter is stored in the 'SYSCRYPT' scheme.\n\nHowever, the check for mandatory modules looks at the CRYPT 'scheme',\nand thus concludes that crypt is missing when it was successfully found.\n\nFix that by also storing the result of either check in the 'CRYPT'\nscheme.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n---\n configure    | 2 ++\n configure.ac | 2 ++\n 2 files changed, 4 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 121dd93..d459ff5 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2406,10 +2406,12 @@ AC_CHECK_FUNC([crypt], [SYSCRYPT=true], [SYSCRYPT=\"\"])\n if test \"x$LIBCRYPT_LIB\" != \"x\" ; then\n     CRYPT_LIB=\"$LIBCRYPT_LIB\"\n     CRYPT_INCLUDE=\"$LIBCRYPT_INCLUDE\"\n+    PBX_CRYPT=1\n     AC_DEFINE([HAVE_CRYPT], [1], [Define to 1 if you have the 'crypt' function.])\n elif test \"x$SYSCRYPT\" != \"x\" ; then\n     CRYPT_LIB=\"\"\n     CRYPT_INCLUDE=\"\"\n+    PBX_CRYPT=1\n     AC_DEFINE([HAVE_CRYPT], [1], [Define to 1 if you have the 'crypt' function.])\n fi\n \n-- \n2.7.4\n\n"
  },
  {
    "path": "package/asterisk/0003-build-ensure-target-directory-for-modules-exists.patch",
    "content": "From 933b2554a40f932571bdbdbb5217cda3e35fd61f Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Mon, 27 Nov 2017 12:52:52 +0100\nSubject: [PATCH] build: ensure target directory for modules exists\n\nCurrently, in highly-parallel builds, it is possible that installing\nmodules fails because the target directory does not exist yet.\n\nWe fix that by instructing $(INSTALL) to create the destination directory\nfirst.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n---\n Makefile.moddir_rules | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile.moddir_rules b/Makefile.moddir_rules\nindex 59190bece9..b73153a9a5 100644\n--- a/Makefile.moddir_rules\n+++ b/Makefile.moddir_rules\n@@ -110,7 +110,7 @@ clean::\n \n install:: all\n \t@echo \"Installing modules from `basename $(CURDIR)`...\"\n-\t@for x in $(LOADABLE_MODS:%=%.so); do $(INSTALL) -m 755 $$x \"$(DESTDIR)$(ASTMODDIR)\" ; done\n+\t@for x in $(LOADABLE_MODS:%=%.so); do $(INSTALL) -D -m 755 $$x \"$(DESTDIR)$(ASTMODDIR)\" ; done\n ifneq ($(findstring :,$(XMLSTARLET)$(BASH)),:)\n \t@if [ -f .moduleinfo ] ; then \\\n \t\tdeclare -A DISABLED_MODS ;\\\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/asterisk/0004-install-samples-need-the-data-files.patch",
    "content": "From 05680ea9899c2246c23d11860c2c8e10aa8f80c7 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Fri, 1 Dec 2017 11:08:16 +0100\nSubject: [PATCH] install: samples need the data files\n\nWhen installing samples, \"sample voicemail\" is generated from the\nalready-installed sound files.\n\nHowever, when doing the install and the samples at the same time in a\nparallel install, it is possible that the sound files are not already\ninstalled at the time we try to generate the voicemail data.\n\nEnsure the needed dependency.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex f29c07f680..b58f707b61 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -779,7 +779,7 @@ adsi:\n \t\t$(INSTALL) -m 644 \"$$x\" \"$(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x`\" ; \\\n \tdone\n \n-samples: adsi\n+samples: adsi datafiles\n \t@echo Installing other config files...\n \t$(call INSTALL_CONFIGS,samples,.sample)\n \t$(INSTALL) -d \"$(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX\"\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/asterisk/0005-configure-fix-detection-of-re-entrant-resolver-funct.patch",
    "content": "From 9b4070944578336506cd0a76de6f733c72d0ca74 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sat, 13 Oct 2018 11:11:15 +0200\nSubject: [PATCH] configure: fix detection of re-entrant resolver functions\n\nFixes https://issues.asterisk.org/jira/browse/ASTERISK-21795\n\nuClibc does not provide res_nsearch:\nasterisk-16.0.0/main/dns.c:506: undefined reference to `res_nsearch'\n\nPatch coded by Yann E. MORIN:\nhttp://lists.busybox.net/pipermail/buildroot/2018-October/232630.html\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n configure.ac | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex dd0c8edd13..ee1ca9ceb6 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1388,7 +1388,11 @@ AC_LINK_IFELSE(\n \t\t\t#include <arpa/nameser.h>\n \t\t\t#endif\n \t\t\t#include <resolv.h>],\n-\t\t\t[int foo = res_ninit(NULL);])],\n+\t\t\t[\n+\t\t\t\tint foo;\n+\t\t\t\tfoo = res_ninit(NULL);\n+\t\t\t\tfoo = res_nsearch(NULL, NULL, 0, 0, NULL, 0);\n+\t\t\t])],\n \tAC_MSG_RESULT(yes)\n \tAC_DEFINE([HAVE_RES_NINIT], 1, [Define to 1 if your system has the re-entrant resolver functions.])\n \tAC_SEARCH_LIBS(res_9_ndestroy, resolv)\n-- \n2.19.1\n\n"
  },
  {
    "path": "package/asterisk/Config.in",
    "content": "config BR2_PACKAGE_ASTERISK\n\tbool \"asterisk\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\tdepends on BR2_USE_MMU # libedit\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR # libedit\n\tselect BR2_PACKAGE_JANSSON\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBEDIT\n\tselect BR2_PACKAGE_LIBILBC\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Asterisk is an open source framework for building\n\t  communications applications. Asterisk turns an ordinary\n\t  computer into a communications server. Asterisk powers IP PBX\n\t  systems, VoIP gateways, conference servers and other custom\n\t  solutions. It is used by small businesses, large businesses,\n\t  call centers, carriers and government agencies, worldwide.\n\t  Asterisk is free and open source.\n\n\t  http://www.asterisk.org/\n\ncomment \"asterisk needs a glibc or uClibc toolchain w/ C++, dynamic library, threads, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_USES_MUSL || !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/asterisk/asterisk.hash",
    "content": "# Locally computed\nsha256  1ba86666072b903e24b5cfef3d6d607d0d090c0fd232429ed410496e8f93ac40  asterisk-16.21.1.tar.gz\n\n# sha1 from: http://downloads.asterisk.org/pub/telephony/sounds/releases\n# sha256 locally computed\nsha1    721c512feaea102700d5bdce952fdc0bb29dc640                          asterisk-core-sounds-en-gsm-1.6.1.tar.gz\nsha256  d79c3d2044d41da8f363c447dfccc140be86b4fcc41b1ca5a60a80da52f24f2d  asterisk-core-sounds-en-gsm-1.6.1.tar.gz\nsha1    f40fd6ea03dfe8d72ada2540b2288bfdc006381d                          asterisk-moh-opsound-wav-2.03.tar.gz\nsha256  449fb810d16502c3052fedf02f7e77b36206ac5a145f3dacf4177843a2fcb538  asterisk-moh-opsound-wav-2.03.tar.gz\n\n# License files, locally computed\nsha256  82af40ed7f49c08685360811993d9396320842f021df828801d733e8fdc0312f  COPYING\nsha256  ac5571f00e558e3b7c9b3f13f421b874cc12cf4250c4f70094c71544cf486312  main/sha1.c\nsha256  6215e3ed73c3982a5c6701127d681ec0b9f1121ac78a28805bd93f93c3eb84c0  codecs/speex/speex_resampler.h\nsha256  ea69cc96ab8a779c180a362377caeada71926897d1b55b980f04d74ba5aaa388  utils/db1-ast/include/db.h\n"
  },
  {
    "path": "package/asterisk/asterisk.mk",
    "content": "################################################################################\n#\n# asterisk\n#\n################################################################################\n\nASTERISK_VERSION = 16.21.1\n# Use the github mirror: it's an official mirror maintained by Digium, and\n# provides tarballs, which the main Asterisk git tree (behind Gerrit) does not.\nASTERISK_SITE = $(call github,asterisk,asterisk,$(ASTERISK_VERSION))\n\nASTERISK_SOUNDS_BASE_URL = http://downloads.asterisk.org/pub/telephony/sounds/releases\nASTERISK_EXTRA_DOWNLOADS = \\\n\t$(ASTERISK_SOUNDS_BASE_URL)/asterisk-core-sounds-en-gsm-1.6.1.tar.gz \\\n\t$(ASTERISK_SOUNDS_BASE_URL)/asterisk-moh-opsound-wav-2.03.tar.gz\n\nASTERISK_LICENSE = GPL-2.0, BSD-3-Clause (SHA1, resample), BSD-4-Clause (db1-ast)\nASTERISK_LICENSE_FILES = \\\n\tCOPYING \\\n\tmain/sha1.c \\\n\tcodecs/speex/speex_resampler.h \\\n\tutils/db1-ast/include/db.h\n\nASTERISK_CPE_ID_VENDOR = asterisk\nASTERISK_CPE_ID_PRODUCT = open_source\nASTERISK_SELINUX_MODULES = asterisk\n\n# For patches 0002, 0003 and 0005\nASTERISK_AUTORECONF = YES\nASTERISK_AUTORECONF_OPTS = -Iautoconf -Ithird-party -Ithird-party/pjproject -Ithird-party/jansson\n\nASTERISK_DEPENDENCIES = \\\n\thost-asterisk \\\n\tjansson \\\n\tlibcurl \\\n\tlibedit \\\n\tlibxml2 \\\n\tsqlite \\\n\tutil-linux\n\n# Asterisk wants to run its menuselect tool (a highly tweaked derivative of\n# kconfig), but builds it using the target tools. So we build it in the host\n# variant (see below), and copy the full build tree of menuselect.\ndefine ASTERISK_COPY_MENUSELECT\n\trm -rf $(@D)/menuselect\n\tcp -a $(HOST_ASTERISK_DIR)/menuselect $(@D)/menuselect\nendef\nASTERISK_PRE_CONFIGURE_HOOKS += ASTERISK_COPY_MENUSELECT\n\nASTERISK_CONF_OPTS = \\\n\t--disable-xmldoc \\\n\t--disable-internal-poll \\\n\t--disable-asteriskssl \\\n\t--disable-rpath \\\n\t--without-bfd \\\n\t--without-cap \\\n\t--without-cpg \\\n\t--without-curses \\\n\t--without-gtk2 \\\n\t--without-gmime \\\n\t--without-hoard \\\n\t--without-iconv \\\n\t--without-iksemel \\\n\t--without-imap \\\n\t--without-inotify \\\n\t--without-iodbc \\\n\t--without-isdnnet \\\n\t--without-jack \\\n\t--without-uriparser \\\n\t--without-kqueue \\\n\t--without-libedit \\\n\t--without-libxslt \\\n\t--without-lua \\\n\t--without-misdn \\\n\t--without-mysqlclient \\\n\t--without-nbs \\\n\t--without-neon29 \\\n\t--without-newt \\\n\t--without-openr2 \\\n\t--without-osptk \\\n\t--without-oss \\\n\t--without-postgres \\\n\t--without-pjproject \\\n\t--without-pjproject-bundled \\\n\t--without-popt \\\n\t--without-resample \\\n\t--without-sdl \\\n\t--without-SDL_image \\\n\t--without-sqlite \\\n\t--without-suppserv \\\n\t--without-tds \\\n\t--without-termcap \\\n\t--without-timerfd \\\n\t--without-tinfo \\\n\t--without-unbound \\\n\t--without-unixodbc \\\n\t--without-vpb \\\n\t--without-x11 \\\n\t--with-crypt \\\n\t--with-jansson \\\n\t--with-libcurl \\\n\t--with-ilbc \\\n\t--with-libxml2 \\\n\t--with-libedit=\"$(STAGING_DIR)/usr\" \\\n\t--with-sqlite3=\"$(STAGING_DIR)/usr\" \\\n\t--with-sounds-cache=$(ASTERISK_DL_DIR)\n\n# avcodec are from ffmpeg. There is virtually zero chance this could\n# even work; asterisk is looking for ffmpeg/avcodec.h which has not\n# been installed in this location since early 2007 (~10 years ago at\n# the time of this writing).\nASTERISK_CONF_OPTS += --without-avcodec\n\n# asterisk is not compatible with freeswitch spandsp\nASTERISK_CONF_OPTS += --without-spandsp\n\nASTERISK_CONF_ENV = \\\n\tac_cv_file_bridges_bridge_softmix_include_hrirs_h=true \\\n\tac_cv_path_CONFIG_LIBXML2=$(STAGING_DIR)/usr/bin/xml2-config\n\n# Uses __atomic_fetch_add_4\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nASTERISK_CONF_ENV += LIBS=\"-latomic\"\nendif\n\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)\nASTERISK_CONF_OPTS += --with-execinfo\nelse\nASTERISK_CONF_OPTS += --without-execinfo\nendif\n\nifeq ($(BR2_PACKAGE_LIBGSM),y)\nASTERISK_DEPENDENCIES += libgsm\nASTERISK_CONF_OPTS += --with-gsm\nelse\nASTERISK_CONF_OPTS += --without-gsm\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nASTERISK_DEPENDENCIES += alsa-lib\nASTERISK_CONF_OPTS += --with-asound\nelse\nASTERISK_CONF_OPTS += --without-asound\nendif\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y)\nASTERISK_DEPENDENCIES += bluez5_utils\nASTERISK_CONF_OPTS += --with-bluetooth\nelse\nASTERISK_CONF_OPTS += --without-bluetooth\nendif\n\nifeq ($(BR2_PACKAGE_LIBICAL),y)\nASTERISK_DEPENDENCIES += libical\nASTERISK_CONF_OPTS += --with-ical\nelse\nASTERISK_CONF_OPTS += --without-ical\nendif\n\nifeq ($(BR2_PACKAGE_OPENLDAP),y)\nASTERISK_DEPENDENCIES += openldap\nASTERISK_CONF_OPTS += --with-ldap\nelse\nASTERISK_CONF_OPTS += --without-ldap\nendif\n\nifeq ($(BR2_PACKAGE_NEON),y)\nASTERISK_DEPENDENCIES += neon\nASTERISK_CONF_OPTS += --with-neon\nASTERISK_CONF_ENV += \\\n\tac_cv_path_CONFIG_NEON=$(STAGING_DIR)/usr/bin/neon-config\nelse\nASTERISK_CONF_OPTS += --without-neon\nendif\n\nifeq ($(BR2_PACKAGE_NETSNMP),y)\nASTERISK_DEPENDENCIES += netsnmp\nASTERISK_CONF_OPTS += --with-netsnmp=$(STAGING_DIR)/usr\nelse\nASTERISK_CONF_OPTS += --without-netsnmp\nendif\n\nifeq ($(BR2_PACKAGE_LIBOGG),y)\nASTERISK_DEPENDENCIES += libogg\nASTERISK_CONF_OPTS += --with-ogg\nelse\nASTERISK_CONF_OPTS += --without-ogg\nendif\n\nifeq ($(BR2_PACKAGE_OPUS),y)\nASTERISK_DEPENDENCIES += opus\nASTERISK_CONF_OPTS += --with-opus\nelse\nASTERISK_CONF_OPTS += --without-opus\nendif\n\nifeq ($(BR2_PACKAGE_PORTAUDIO),y)\nASTERISK_DEPENDENCIES += portaudio\nASTERISK_CONF_OPTS += --with-portaudio\nelse\nASTERISK_CONF_OPTS += --without-portaudio\nendif\n\nifeq ($(BR2_PACKAGE_FREERADIUS_CLIENT),y)\nASTERISK_DEPENDENCIES += freeradius-client\nASTERISK_CONF_OPTS += --with-radius\nelse\nASTERISK_CONF_OPTS += --without-radius\nendif\n\nifeq ($(BR2_PACKAGE_DAHDI_LINUX)$(BR2_PACKAGE_DAHDI_TOOLS),yy)\nASTERISK_DEPENDENCIES += dahdi-linux dahdi-tools\nASTERISK_CONF_OPTS += --with-dahdi --with-tonezone\n\nifeq ($(BR2_PACKAGE_LIBPRI),y)\nASTERISK_DEPENDENCIES += libpri\nASTERISK_CONF_OPTS += --with-pri\nelse\nASTERISK_CONF_OPTS += --without-pri\nendif # PRI\n\nifeq ($(BR2_PACKAGE_LIBSS7),y)\nASTERISK_DEPENDENCIES += libss7\nASTERISK_CONF_OPTS += --with-ss7\nelse\nASTERISK_CONF_OPTS += --without-ss7\nendif # SS7\n\nelse\nASTERISK_CONF_OPTS += \\\n\t--without-dahdi --without-tonezone \\\n\t--without-pri --without-ss7\nendif # DAHDI\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nASTERISK_DEPENDENCIES += openssl\nASTERISK_CONF_OPTS += --with-ssl\nelse\nASTERISK_CONF_OPTS += --without-ssl\nendif\n\nifeq ($(BR2_PACKAGE_SPEEX)$(BR2_PACKAGE_SPEEXDSP),yy)\nASTERISK_DEPENDENCIES += speex\nASTERISK_CONF_OPTS += --with-speex --with-speexdsp\nelse\nASTERISK_CONF_OPTS += --without-speex --without-speexdsp\nendif\n\n# asterisk needs an openssl-enabled libsrtp\nifeq ($(BR2_PACKAGE_LIBSRTP)$(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yyx)\nASTERISK_DEPENDENCIES += libsrtp\nASTERISK_CONF_OPTS += --with-srtp\nelse\nASTERISK_CONF_OPTS += --without-srtp\nendif\n\nifeq ($(BR2_PACKAGE_LIBVORBIS),y)\nASTERISK_DEPENDENCIES += libvorbis\nASTERISK_CONF_OPTS += --with-vorbis\nelse\nASTERISK_CONF_OPTS += --without-vorbis\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nASTERISK_DEPENDENCIES += zlib\nASTERISK_CONF_OPTS += --with-z\nelse\nASTERISK_CONF_OPTS += --without-z\nendif\n\nASTERISK_DIRS = \\\n\tASTVARLIBDIR=\"/usr/lib/asterisk\" \\\n\tASTDATADIR=\"/usr/lib/asterisk\" \\\n\tASTKEYDIR=\"/usr/lib/asterisk\" \\\n\tASTDBDIR=\"/usr/lib/asterisk\"\n\nASTERISK_MAKE_OPTS = $(ASTERISK_DIRS)\n\n# Uses __atomic_fetch_add_4\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nASTERISK_MAKE_OPTS += ASTLDFLAGS=\"-latomic\"\nendif\n\n# Remove default -O3 optimization flag\nASTERISK_MAKE_OPTS += OPTIMIZE=\"\"\n\nASTERISK_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_93847),y)\nASTERISK_CFLAGS += -O0\nendif\n\nASTERISK_CONF_OPTS += CFLAGS=\"$(ASTERISK_CFLAGS)\"\n\n# We want to install sample configuration files, too.\nASTERISK_INSTALL_TARGET_OPTS = \\\n\t$(ASTERISK_DIRS) \\\n\tDESTDIR=$(TARGET_DIR) \\\n\tLDCONFIG=true \\\n\tinstall samples\n\n$(eval $(autotools-package))\n\n#-------------------------------------------------------------------------------\n# This part deals with building the menuselect tool as a host package\n\nHOST_ASTERISK_DEPENDENCIES = host-pkgconf host-libxml2 host-ncurses\nHOST_ASTERISK_SUBDIR = menuselect\n\nHOST_ASTERISK_LICENSE = GPL-2.0\nHOST_ASTERISK_LICENSE_FILES = COPYING\n\n# No need to autoreconf for the host variant,\n# so do not inherit the target setup.\nHOST_ASTERISK_AUTORECONF = NO\n\nHOST_ASTERISK_CONF_ENV = CONFIG_LIBXML2=$(HOST_DIR)/bin/xml2-config\n\nHOST_ASTERISK_CONF_OPTS = \\\n\t--without-newt \\\n\t--without-curses \\\n\t--with-ncurses=$(HOST_DIR)\n\n# Not an automake package, so does not inherit LDFLAGS et al. from\n# the configure run.\nHOST_ASTERISK_MAKE_ENV = $(HOST_CONFIGURE_OPTS)\n\n# Even though menuselect is an autotools package, it is not an automake\n# package and does not have an 'install' rule, as asterisk does expect\n# it to be in a sub-directory of its source tree. We do so by copying\n# the full menuselect build tree as a pre-configure hook in the target\n# variant.\n# However, the sanity checks on host packages are not run on menuselect.\n# But we still want to catch that menuselect has the proper rpath set,\n# for example, as it uses host libraries that we do build, like\n# host-libxml2.\n# So we do manually install the menuselect tool.\ndefine HOST_ASTERISK_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/menuselect/menuselect \\\n\t\t$(HOST_DIR)/bin/asterisk-menuselect\nendef\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/at/0001-Makefile.in-replace-IROOT-by-DESTDIR.patch",
    "content": "From cbfd3296d7d0742d9e35b01ec9e433afe2c36c63 Mon Sep 17 00:00:00 2001\nFrom: Marc Kleine-Budde <mkl@pengutronix.de>\nDate: Tue, 1 Dec 2009 20:57:45 +0100\nSubject: [PATCH] Makefile.in: replace IROOT by DESTDIR\n\nThis patch replaces IROOT by DESTDIR, which is the autotools standard\nvariable. For backwards compatibilty IROOT overwrites the DESTDIR.\n\nSigned-off-by: Marc Kleine-Budde <mkl@pengutronix.de>\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n[Vincent: tweak the patch for the new version]\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n[Giulio: convert patch to git format and rebase to version 3.2.2]\n---\n Makefile.in | 72 ++++++++++++++++++++++++++++-------------------------\n 1 file changed, 38 insertions(+), 34 deletions(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 3e8303c..a7197f2 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -20,6 +20,10 @@ etcdir\t\t= @ETCDIR@\n atjobdir\t= @ATJBD@\n systemdsystemunitdir = @systemdsystemunitdir@\n \n+ifdef IROOT\n+DESTDIR\t\t= $(DESTDIR)\n+endif\n+\n DAEMON_USERNAME\t= @DAEMON_USERNAME@\n DAEMON_GROUPNAME= @DAEMON_GROUPNAME@\n LOADAVG_MX\t= @LOADAVG_MX@\n@@ -95,43 +99,43 @@ atrun: atrun.in\n \t$(CC) -c $(CFLAGS) $(DEFS) $*.c\n \n install: all\n-\t$(INSTALL) -g root -o root -m 755 -d $(IROOT)$(etcdir)\n-\t$(INSTALL) -g root -o root -m 755 -d $(IROOT)$(bindir)\n-\t$(INSTALL) -g root -o root -m 755 -d $(IROOT)$(sbindir)\n-\t$(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdatadir)\n-\t$(INSTALL) -g root -o root -m 755 -d $(IROOT)$(docdir)\n-\t$(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdocdir)\n-\t$(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR)\n-\tchmod 1770 $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR)\n-\ttouch $(IROOT)$(LFILE)\n-\tchmod 600 $(IROOT)$(LFILE)\n-\tchown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(IROOT)$(LFILE)\n-\ttest -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(IROOT)$(etcdir)/\n-\t$(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(IROOT)$(bindir)\n-\t$(LN_S) -f at $(IROOT)$(bindir)/atq\n-\t$(LN_S) -f at $(IROOT)$(bindir)/atrm\n-\t$(INSTALL) -g root -o root -m 755 batch $(IROOT)$(bindir)\n-\t$(INSTALL) -g root -o root -m 755 batch-job $(IROOT)$(atdatadir)\n-\t$(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man1dir)\n-\t$(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man5dir)\n-\t$(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man8dir)\n-\t$(INSTALL) -g root -o root -m 755 atd $(IROOT)$(sbindir)\n-\t$(INSTALL) -g root -o root -m 755 atrun $(IROOT)$(sbindir)\n-\t$(INSTALL) -g root -o root -m 644 at.1 $(IROOT)$(man1dir)/\n-\tcd $(IROOT)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1\n-\t$(INSTALL) -g root -o root -m 644 atd.8 $(IROOT)$(man8dir)/\n+\t$(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(etcdir)\n+\t$(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(bindir)\n+\t$(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(sbindir)\n+\t$(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdatadir)\n+\t$(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(docdir)\n+\t$(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdocdir)\n+\t$(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR)\n+\tchmod 1770 $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR)\n+\ttouch $(DESTDIR)$(LFILE)\n+\tchmod 600 $(DESTDIR)$(LFILE)\n+\tchown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(LFILE)\n+\ttest -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(DESTDIR)$(etcdir)/\n+\t$(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(DESTDIR)$(bindir)\n+\t$(LN_S) -f at $(DESTDIR)$(bindir)/atq\n+\t$(LN_S) -f at $(DESTDIR)$(bindir)/atrm\n+\t$(INSTALL) -g root -o root -m 755 batch $(DESTDIR)$(bindir)\n+\t$(INSTALL) -g root -o root -m 755 batch-job $(DESTDIR)$(atdatadir)\n+\t$(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man1dir)\n+\t$(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man5dir)\n+\t$(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man8dir)\n+\t$(INSTALL) -g root -o root -m 755 atd $(DESTDIR)$(sbindir)\n+\t$(INSTALL) -g root -o root -m 755 atrun $(DESTDIR)$(sbindir)\n+\t$(INSTALL) -g root -o root -m 644 at.1 $(DESTDIR)$(man1dir)/\n+\tcd $(DESTDIR)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1\n+\t$(INSTALL) -g root -o root -m 644 atd.8 $(DESTDIR)$(man8dir)/\n \tsed \"s,\\$${exec_prefix},$(exec_prefix),g\" <atrun.8>tmpman\n-\t$(INSTALL) -g root -o root -m 644 tmpman $(IROOT)$(man8dir)/atrun.8\n+\t$(INSTALL) -g root -o root -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8\n \trm -f tmpman\n-\t$(INSTALL) -g root -o root -m 644 at.allow.5 $(IROOT)$(man5dir)/\n-\tcd $(IROOT)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5\n-\t$(INSTALL) -g root -o root -m 644 $(DOCS) $(IROOT)$(atdocdir)\n-\trm -f $(IROOT)$(mandir)/cat1/at.1* $(IROOT)$(mandir)/cat1/batch.1* \\\n-\t\t$(IROOT)$(mandir)/cat1/atq.1*\n-\trm -f $(IROOT)$(mandir)/cat1/atd.8*\n+\t$(INSTALL) -g root -o root -m 644 at.allow.5 $(DESTDIR)$(man5dir)/\n+\tcd $(DESTDIR)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5\n+\t$(INSTALL) -g root -o root -m 644 $(DOCS) $(DESTDIR)$(atdocdir)\n+\trm -f $(DESTDIR)$(mandir)/cat1/at.1* $(DESTDIR)$(mandir)/cat1/batch.1* \\\n+\t\t$(DESTDIR)$(mandir)/cat1/atq.1*\n+\trm -f $(DESTDIR)$(mandir)/cat1/atd.8*\n \tif test x\"$(systemdsystemunitdir)\" != xno; then \\\n-\t\t$(INSTALL) -o root -g root -m 755 -d $(IROOT)$(systemdsystemunitdir); \\\n-\t\t$(INSTALL) -o root -g root -m 644 atd.service $(IROOT)$(systemdsystemunitdir); \\\n+\t\t$(INSTALL) -o root -g root -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \\\n+\t\t$(INSTALL) -o root -g root -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \\\n \tfi\n \n dist: checkin $(DIST) $(LIST) Filelist.asc\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/at/0002-Makefile.in-fix-make-install-for-non-root-don-t-stri.patch",
    "content": "From 71d9a23ab6a73ec1287acc683716481090095de0 Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <jacmet@sunsite.dk>\nDate: Fri, 23 Jul 2021 16:47:56 +0200\nSubject: [PATCH] Makefile.in: fix make install for non-root, don't strip\n\nBuildroot will ensure all files are owned by root and stripped anyway\n(if needed) before the rootfs is created.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n[Vincent: tweak the patch for the new version]\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n[Giulio: convert patch to git format and rebase to version 3.2.2]\n---\n Makefile.in | 47 +++++++++++++++++++++++------------------------\n 1 file changed, 23 insertions(+), 24 deletions(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex a7197f2..0b35a67 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -99,43 +99,42 @@ atrun: atrun.in\n \t$(CC) -c $(CFLAGS) $(DEFS) $*.c\n \n install: all\n-\t$(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(etcdir)\n-\t$(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(bindir)\n-\t$(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(sbindir)\n-\t$(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdatadir)\n-\t$(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(docdir)\n-\t$(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdocdir)\n-\t$(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR)\n+\t$(INSTALL) -m 755 -d $(DESTDIR)$(etcdir)\n+\t$(INSTALL) -m 755 -d $(DESTDIR)$(bindir)\n+\t$(INSTALL) -m 755 -d $(DESTDIR)$(sbindir)\n+\t$(INSTALL) -m 755 -d $(DESTDIR)$(atdatadir)\n+\t$(INSTALL) -m 755 -d $(DESTDIR)$(docdir)\n+\t$(INSTALL) -m 755 -d $(DESTDIR)$(atdocdir)\n+\t$(INSTALL) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR)\n \tchmod 1770 $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR)\n \ttouch $(DESTDIR)$(LFILE)\n \tchmod 600 $(DESTDIR)$(LFILE)\n-\tchown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(LFILE)\n-\ttest -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(DESTDIR)$(etcdir)/\n-\t$(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(DESTDIR)$(bindir)\n+\ttest -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -m 640 at.deny $(DESTDIR)$(etcdir)/\n+\t$(INSTALL) -m 6755 at $(DESTDIR)$(bindir)\n \t$(LN_S) -f at $(DESTDIR)$(bindir)/atq\n \t$(LN_S) -f at $(DESTDIR)$(bindir)/atrm\n-\t$(INSTALL) -g root -o root -m 755 batch $(DESTDIR)$(bindir)\n-\t$(INSTALL) -g root -o root -m 755 batch-job $(DESTDIR)$(atdatadir)\n-\t$(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man1dir)\n-\t$(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man5dir)\n-\t$(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man8dir)\n-\t$(INSTALL) -g root -o root -m 755 atd $(DESTDIR)$(sbindir)\n-\t$(INSTALL) -g root -o root -m 755 atrun $(DESTDIR)$(sbindir)\n-\t$(INSTALL) -g root -o root -m 644 at.1 $(DESTDIR)$(man1dir)/\n+\t$(INSTALL) -m 755 batch $(DESTDIR)$(bindir)\n+\t$(INSTALL) -m 755 batch-job $(DESTDIR)$(atdatadir)\n+\t$(INSTALL) -d -m 755 $(DESTDIR)$(man1dir)\n+\t$(INSTALL) -d -m 755 $(DESTDIR)$(man5dir)\n+\t$(INSTALL) -d -m 755 $(DESTDIR)$(man8dir)\n+\t$(INSTALL) -m 755 atd $(DESTDIR)$(sbindir)\n+\t$(INSTALL) -m 755 atrun $(DESTDIR)$(sbindir)\n+\t$(INSTALL) -m 644 at.1 $(DESTDIR)$(man1dir)/\n \tcd $(DESTDIR)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1\n-\t$(INSTALL) -g root -o root -m 644 atd.8 $(DESTDIR)$(man8dir)/\n+\t$(INSTALL) -m 644 atd.8 $(DESTDIR)$(man8dir)/\n \tsed \"s,\\$${exec_prefix},$(exec_prefix),g\" <atrun.8>tmpman\n-\t$(INSTALL) -g root -o root -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8\n+\t$(INSTALL) -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8\n \trm -f tmpman\n-\t$(INSTALL) -g root -o root -m 644 at.allow.5 $(DESTDIR)$(man5dir)/\n+\t$(INSTALL) -m 644 at.allow.5 $(DESTDIR)$(man5dir)/\n \tcd $(DESTDIR)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5\n-\t$(INSTALL) -g root -o root -m 644 $(DOCS) $(DESTDIR)$(atdocdir)\n+\t$(INSTALL) -m 644 $(DOCS) $(DESTDIR)$(atdocdir)\n \trm -f $(DESTDIR)$(mandir)/cat1/at.1* $(DESTDIR)$(mandir)/cat1/batch.1* \\\n \t\t$(DESTDIR)$(mandir)/cat1/atq.1*\n \trm -f $(DESTDIR)$(mandir)/cat1/atd.8*\n \tif test x\"$(systemdsystemunitdir)\" != xno; then \\\n-\t\t$(INSTALL) -o root -g root -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \\\n-\t\t$(INSTALL) -o root -g root -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \\\n+\t\t$(INSTALL) -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \\\n+\t\t$(INSTALL) -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \\\n \tfi\n \n dist: checkin $(DIST) $(LIST) Filelist.asc\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/at/0003-getloadavg-fix-getloadavg.c-compilation-revert-to-3..patch",
    "content": "From 4eda31cea9fb3c77fe2748a65960f24ffb42f9ff Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <jacmet@sunsite.dk>\nDate: Fri, 23 Jul 2021 16:51:17 +0200\nSubject: [PATCH] getloadavg: fix getloadavg.c compilation, revert to 3.1.10\n version\n\ngetloadavg.c shipped with 3.1.13 doesn't compile because it references\nheaders not shipped. Fix it by simply reverting to the 3.1.10 version.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n[Giulio: convert patch to git format]\n---\n getloadavg.c | 7 ++++---\n 1 file changed, 4 insertions(+), 3 deletions(-)\n\ndiff --git a/getloadavg.c b/getloadavg.c\nindex cf5869f..23d18eb 100644\n--- a/getloadavg.c\n+++ b/getloadavg.c\n@@ -66,11 +66,12 @@ Boston, MA  02110-1301  USA */\n \n /* This should always be first.  */\n #ifdef HAVE_CONFIG_H\n-#include <config.h>\n+#include \"config.h\"\n #endif\n \n-#include \"lisp.h\"\n-#include \"sysfile.h\" /* for encapsulated open, close, read, write */\n+#include <sys/types.h>\n+#include <sys/stat.h>\n+#include <fcntl.h>\n \n #ifndef HAVE_GETLOADAVG\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/at/0004-Makefile-fix-parallel-build-failure.patch",
    "content": "From 3ace0b57e2aacb784c01a3c7694c6c92461937ff Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@benettiengineering.com>\nDate: Thu, 20 Feb 2020 22:00:11 +0100\nSubject: [PATCH] Makefile: fix parallel build failure\n\nAt the moment parallel build fails due to 2 causes:\n1) parsetime.l tries to include incomplete y.tab.h, since y.tab.h is the\nresult of yacc -d parsetime.y\n2) when compiling y.tab.c, y.tab.c itself is not complete, since it is\nthe result of yacc -d parsetime.y\n\nSo fix it by:\n1) making parsetime.l to wait for y.tab.h to be created by yacc\n2) waiting for y.tab.c and y.tab.h to be created before compile them\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n Makefile.in | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 4c11913..57c3a0c 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -83,6 +83,8 @@ y.tab.c y.tab.h: parsetime.y\n lex.yy.c: parsetime.l\n \t$(LEX) -i parsetime.l\n \n+parsetime.l: y.tab.h\n+\n atd.service: atd.service.in\n \tcat $< | sed -e 's![@]sbindir[@]!$(sbindir)!g' | sed -e 's![@]atjobdir[@]!$(atjobdir)!g' > $@\n \n@@ -173,3 +175,4 @@ perm.o: perm.c config.h privs.h at.h\n posixtm.o: posixtm.c posixtm.h\n daemon.o: daemon.c config.h daemon.h privs.h\n getloadavg.o: getloadavg.c config.h getloadavg.h\n+y.tab.o: y.tab.c y.tab.h\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/at/Config.in",
    "content": "config BR2_PACKAGE_AT\n\tbool \"at\"\n\tdepends on BR2_USE_MMU\n\thelp\n\t  At and batch read shell commands from standard input and\n\t  store them as jobs to be scheduled for execution in the\n\t  future.\n\n\t  at    - run the job at a specified time\n\t  batch - run the job when system load levels permit\n\n\t  https://salsa.debian.org/debian/at\n"
  },
  {
    "path": "package/at/S99at",
    "content": "#!/bin/sh\n#\n# Starts at daemon\n#\n\numask 077\n\nstart() {\n\t# Since /var/spool can be linked to /tmp (tmpfs)\n\t# /var/spool/cron/atjobs/.SEQ created could be not available\n\t# Check if not exists otherwise create it\n\tif [ ! -f /var/spool/cron/atjobs/.SEQ ]; then\n\t\tmkdir -p /var/spool/cron/atjobs/\n\t\ttouch /var/spool/cron/atjobs/.SEQ\n\t\tprintf \"atd: created missing .SEQ file (atjobs will be lost on reboot)\\n\"\n\tfi\n\n\tprintf \"Starting atd: \"\n\tstart-stop-daemon --start --quiet --make-pidfile --pidfile /var/run/atd.pid --background --exec /usr/sbin/atd -- -f\n\techo \"OK\"\n}\nstop() {\n\tprintf \"Stopping atd: \"\n\tstart-stop-daemon --stop --quiet --pidfile /var/run/atd.pid\n\techo \"OK\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/at/at.hash",
    "content": "# Locally calculated\nsha256  2211da14914fde1f9cc83592838fb6385a32fb11fcecb7816c77700df6559088  at_3.2.2.orig.tar.gz\n\nsha256  01dccc0975aa9ba1a9f83e7c5e04f16077353d3c72a0a759b8846ee7a5b2b616  Copyright\nsha256  c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42  COPYING\n"
  },
  {
    "path": "package/at/at.mk",
    "content": "################################################################################\n#\n# at\n#\n################################################################################\n\nAT_VERSION = 3.2.2\nAT_SOURCE = at_$(AT_VERSION).orig.tar.gz\nAT_SITE = http://software.calhariz.com/at\nAT_AUTORECONF = YES\nAT_DEPENDENCIES = $(if $(BR2_PACKAGE_FLEX),flex) host-bison host-flex\nAT_LICENSE = GPL-2.0+, GPL-3.0+, ISC\nAT_LICENSE_FILES = Copyright COPYING\n\nAT_CONF_OPTS = \\\n\t--with-jobdir=/var/spool/cron/atjobs \\\n\t--with-atspool=/var/spool/cron/atspool \\\n\t--with-daemon_username=root \\\n\t--with-daemon_groupname=root \\\n\tSENDMAIL=/usr/sbin/sendmail\n\ndefine AT_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/at/S99at $(TARGET_DIR)/etc/init.d/S99at\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/at-spi2-atk/0001-meson-add-tests-option.patch",
    "content": "From 466d04a57b32417dbf2d5e818af1b7593af5f802 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 3 May 2020 10:29:36 +0200\nSubject: [PATCH] meson: add tests option\n\nAdd tests option to allow the user to build at-spi2-atk without tests,\nit is especially useful as one of the test requires libxml-2.0\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.gnome.org/GNOME/at-spi2-atk/-/merge_requests/22]\n---\n meson.build       | 4 +++-\n meson_options.txt | 4 ++++\n 2 files changed, 7 insertions(+), 1 deletion(-)\n\ndiff --git a/meson.build b/meson.build\nindex 9fce5d6..61bc93d 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -61,4 +61,6 @@ install_data('at-spi2-atk.desktop',\n \n subdir('droute')\n subdir('atk-adaptor')\n-subdir('tests')\n+if get_option('tests')\n+  subdir('tests')\n+endif\ndiff --git a/meson_options.txt b/meson_options.txt\nindex 24c9228..a4abdc2 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -2,3 +2,7 @@ option('disable_p2p',\n        description: 'Disable peer-to-peer DBus connections',\n        type: 'boolean',\n        value: false)\n+option('tests',\n+       description: 'Whether to build tests',\n+       type: 'boolean',\n+       value: true)\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/at-spi2-atk/Config.in",
    "content": "config BR2_PACKAGE_AT_SPI2_ATK\n\tbool \"at-spi2-atk\"\n\tdepends on BR2_PACKAGE_XORG7 # at-spi2-core\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tdepends on BR2_USE_WCHAR # glib2\n\tselect BR2_PACKAGE_ATK\n\tselect BR2_PACKAGE_AT_SPI2_CORE\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  The At-Spi2 Atk package contains a library that bridges\n\t  ATK to At-Spi2 D-Bus service.\n\n\t  https://www.freedesktop.org/wiki/Accessibility/AT-SPI2/\n\ncomment \"at-spi2-atk needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\ncomment \"at-spi2-atk depends on X.org\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_XORG7\n"
  },
  {
    "path": "package/at-spi2-atk/at-spi2-atk.hash",
    "content": "# From http://ftp.acc.umu.se/pub/gnome/sources/at-spi2-atk/2.34/at-spi2-atk-2.34.2.sha256sum\nsha256  901323cee0eef05c01ec4dee06c701aeeca81a314a7d60216fa363005e27f4f0  at-spi2-atk-2.34.2.tar.xz\n\n# locally calculated\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/at-spi2-atk/at-spi2-atk.mk",
    "content": "################################################################################\n#\n# at-spi2-atk\n#\n################################################################################\n\nAT_SPI2_ATK_VERSION_MAJOR = 2.34\nAT_SPI2_ATK_VERSION = $(AT_SPI2_ATK_VERSION_MAJOR).2\nAT_SPI2_ATK_SOURCE = at-spi2-atk-$(AT_SPI2_ATK_VERSION).tar.xz\nAT_SPI2_ATK_SITE = \\\n\thttp://ftp.gnome.org/pub/gnome/sources/at-spi2-atk/$(AT_SPI2_ATK_VERSION_MAJOR)\nAT_SPI2_ATK_LICENSE = LGPL-2.1+\nAT_SPI2_ATK_LICENSE_FILES = COPYING\nAT_SPI2_ATK_CPE_ID_VENDOR = gnome\nAT_SPI2_ATK_INSTALL_STAGING = YES\nAT_SPI2_ATK_DEPENDENCIES = atk at-spi2-core libglib2 host-pkgconf\nAT_SPI2_ATK_CONF_OPTS = -Dtests=false\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/at-spi2-core/Config.in",
    "content": "config BR2_PACKAGE_AT_SPI2_CORE\n\tbool \"at-spi2-core\"\n\tdepends on BR2_PACKAGE_XORG7 # xlib-libxtst\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus, glib2\n\tdepends on BR2_USE_MMU # glib2\n\tdepends on BR2_USE_WCHAR # glib2\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_XLIB_LIBXTST\n\thelp\n\t  The At-Spi2 Core package is a part of the GNOME\n\t  Accessibility Project. It provides a Service Provider\n\t  Interface for the Assistive Technologies available on the\n\t  GNOME platform and a library against which applications\n\t  can be linked.\n\n\t  https://wiki.gnome.org/Accessibility\n\ncomment \"at-spi2-core needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\ncomment \"at-spi2-core depends on X.org\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_XORG7\n"
  },
  {
    "path": "package/at-spi2-core/at-spi2-core.hash",
    "content": "# From http://ftp.acc.umu.se/pub/gnome/sources/at-spi2-core/2.36/at-spi2-core-2.36.0.sha256sum\nsha256  88da57de0a7e3c60bc341a974a80fdba091612db3547c410d6deab039ca5c05a  at-spi2-core-2.36.0.tar.xz\n\n# locally calculated\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/at-spi2-core/at-spi2-core.mk",
    "content": "################################################################################\n#\n# at-spi2-core\n#\n################################################################################\n\nAT_SPI2_CORE_VERSION_MAJOR = 2.36\nAT_SPI2_CORE_VERSION = $(AT_SPI2_CORE_VERSION_MAJOR).0\nAT_SPI2_CORE_SOURCE = at-spi2-core-$(AT_SPI2_CORE_VERSION).tar.xz\nAT_SPI2_CORE_SITE = http://ftp.gnome.org/pub/gnome/sources/at-spi2-core/$(AT_SPI2_CORE_VERSION_MAJOR)\nAT_SPI2_CORE_LICENSE = LGPL-2.1+\nAT_SPI2_CORE_LICENSE_FILES = COPYING\nAT_SPI2_CORE_INSTALL_STAGING = YES\nAT_SPI2_CORE_DEPENDENCIES = host-pkgconf dbus libglib2 xlib_libXtst \\\n\t$(TARGET_NLS_DEPENDENCIES)\nAT_SPI2_CORE_CONF_OPTS = -Ddbus_daemon=/usr/bin/dbus-daemon\n\nAT_SPI2_CORE_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/atest/0001-seq.h-fix-build-with-gcc-10.patch",
    "content": "From fb374e0775fd9772a2cd7b99a5c21f96f7fe2a9a Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 10 Aug 2020 12:12:07 +0200\nSubject: [PATCH] seq.h: fix build with gcc 10\n\nRename state structure to avoid the following build failure with gcc\n10.0:\n\n/bin/bash ./libtool  --tag=CC   --mode=link /home/test/autobuild/run/instance-0/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -include config.h   -Wall -Wno-sign-compare -Wno-strict-aliasing  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os     -o atest atest.o seq.o alsa.o capture.o playback.o loopback_delay.o -L/home/test/autobuild/run/instance-0/output-1/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib -lasound -lev\nlibtool: link: /home/test/autobuild/run/instance-0/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -include config.h -Wall -Wno-sign-compare -Wno-strict-aliasing -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -o atest atest.o seq.o alsa.o capture.o playback.o loopback_delay.o  -L/home/test/autobuild/run/instance-0/output-1/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib /home/test/autobuild/run/instance-0/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libasound.so -ldl -lpthread -lrt /home/test/autobuild/run/instance-0/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libev.so -lm -Wl,-rpath -Wl,/home/test/autobuild/run/instance-0/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib -Wl,-rpath -Wl,/home/test/autobuild/run/instance-0/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib\n/home/test/autobuild/run/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: seq.o:(.bss+0x8): multiple definition of `state'; atest.o:(.bss+0xbc): first defined here\n/home/test/autobuild/run/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: capture.o:(.bss+0x0): multiple definition of `state'; atest.o:(.bss+0xbc): first defined here\n/home/test/autobuild/run/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: playback.o:(.bss+0x0): multiple definition of `state'; atest.o:(.bss+0xbc): first defined here\n/home/test/autobuild/run/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: loopback_delay.o:(.bss+0x0): multiple definition of `state'; atest.o:(.bss+0xbc): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/887c466b3703449239eedaf86f3f4dd2a2dc8afe\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/amouiche/atest/pull/3]\n---\n seq.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/seq.h b/seq.h\nindex 0fa1a95..b7ba8d1 100644\n--- a/seq.h\n+++ b/seq.h\n@@ -30,7 +30,7 @@ enum seq_stat_e {\n     NULL_FRAME = 0,\n     INVALID_FRAME,\n     VALID_FRAME,\n-} state;\n+};\n \n \n struct seq_info {\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/atest/Config.in",
    "content": "config BR2_PACKAGE_ATEST\n\tbool \"atest\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_LIBEV\n\thelp\n\t  atest is a test software for checking ALSA Asoc drivers\n\t  concerning the proper frame generation and capture.\n\n\t  https://github.com/amouiche/atest\n\ncomment \"atest needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/atest/atest.hash",
    "content": "# Locally computed\nsha256 91da5a6d4d0b0a8d4bae156a40e91a6dccf62863bfa7acae948efbbd2b4154ca  atest-895b0183a89c15f5e2305a6795bb1667753cd3f0.tar.gz\nsha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  COPYING\n"
  },
  {
    "path": "package/atest/atest.mk",
    "content": "################################################################################\n#\n# atest\n#\n################################################################################\n\nATEST_VERSION = 895b0183a89c15f5e2305a6795bb1667753cd3f0\nATEST_SITE = $(call github,amouiche,atest,$(ATEST_VERSION))\nATEST_LICENSE = GPL-2.0+\nATEST_LICENSE_FILES = COPYING\nATEST_DEPENDENCIES = host-pkgconf libev alsa-lib\n# Fetched from Github, with no configure script\nATEST_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/atf/Config.in",
    "content": "config BR2_PACKAGE_ATF\n\tbool \"atf\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  ATF, or Automated Testing Framework, is a collection of\n\t  libraries to write test programs in C, C++ and POSIX shell.\n\n\t  https://github.com/jmmv/atf\n\ncomment \"atf needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/atf/atf.hash",
    "content": "# Locally computed\nsha256 92bc64180135eea8fe84c91c9f894e678767764f6dbc8482021d4dde09857505  atf-0.21.tar.gz\nsha256 2a15172ddf6386297734c9800c899e6e8dc16c5a03931dcf95a9ab321a24cfe4  COPYING\n"
  },
  {
    "path": "package/atf/atf.mk",
    "content": "################################################################################\n#\n# atf\n#\n################################################################################\n\nATF_VERSION = 0.21\nATF_SITE = https://github.com/jmmv/atf/releases/download/atf-$(ATF_VERSION)\nATF_INSTALL_STAGING = YES\nATF_LICENSE = BSD-2-Clause, BSD-3-Clause\nATF_LICENSE_FILES = COPYING\n# Ships a beta libtool version hence our patch doesn't apply.\nATF_AUTORECONF = YES\n# Do not install precompiled tests.\nATF_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec\n\n# ATF_SHELL defaults to the host's bash\nATF_CONF_ENV = \\\n\tkyua_cv_getopt_plus=yes \\\n\tkyua_cv_attribute_noreturn=yes \\\n\tkyua_cv_getcwd_works=yes \\\n\tATF_SHELL=/bin/sh\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/atftp/Config.in",
    "content": "config BR2_PACKAGE_ATFTP\n\tbool \"atftp\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  atftp is a client/server implementation of the TFTP\n\t  protocol that implements RFCs 1350, 2090, 2347, 2348,\n\t  and 2349. The server is multi-threaded and the client\n\t  presents a friendly interface using libreadline\n\t  (if enabled).\n\n\t  http://sourceforge.net/projects/atftp/\n\ncomment \"atftp needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/atftp/atftp.hash",
    "content": "# Locally computed\nsha256  93c87a4fb18218414e008e01c995dadd231ba4c752d0f894b34416d1e6d3038a  atftp-0.7.5.tar.gz\nsha256  86dc744860e6dfacfeba2f33fea908db03fe67c7e37a878285b7aae8e4596735  LICENSE\n"
  },
  {
    "path": "package/atftp/atftp.mk",
    "content": "################################################################################\n#\n# atftp\n#\n################################################################################\n\nATFTP_VERSION = 0.7.5\nATFTP_SITE = http://sourceforge.net/projects/atftp/files\nATFTP_LICENSE = GPL-2.0+\nATFTP_LICENSE_FILES = LICENSE\nATFTP_CPE_ID_VENDOR = atftp_project\nATFTP_SELINUX_MODULES = tftp\nATFTP_CONF_OPTS = --disable-libwrap --disable-mtftp\n# For static we need to explicitly link against libpthread\nATFTP_LIBS = -lpthread\n# -fgnu89-inline is needed to avoid multiple definition error with gcc 5. See\n# https://gcc.gnu.org/gcc-5/porting_to.html.\nATFTP_CONF_ENV = LIBS=\"$(ATFTP_LIBS)\" \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -fgnu89-inline\"\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nATFTP_DEPENDENCIES += readline\nATFTP_CONF_OPTS += --enable-libreadline\n# For static, readline links with ncurses\nATFTP_LIBS += -lncurses\nelse\nATFTP_CONF_OPTS += --disable-libreadline\nendif\n\nifeq ($(BR2_PACKAGE_PCRE),y)\nATFTP_DEPENDENCIES += pcre\nATFTP_CONF_OPTS += --enable-libpcre\nelse\nATFTP_CONF_OPTS += --disable-libpcre\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/atk/Config.in",
    "content": "config BR2_PACKAGE_ATK\n\tbool \"atk\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  The ATK accessibility toolkit, needed to build GTK+-2.x.\n\n\t  https://gitlab.gnome.org/GNOME/atk\n\ncomment \"atk needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/atk/atk.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/atk/2.36/atk-2.36.0.sha256sum\nsha256  fb76247e369402be23f1f5c65d38a9639c1164d934e40f6a9cf3c9e96b652788  atk-2.36.0.tar.xz\n\n# Hash for license file\nsha256  d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5  COPYING\n"
  },
  {
    "path": "package/atk/atk.mk",
    "content": "################################################################################\n#\n# atk\n#\n################################################################################\n\nATK_VERSION_MAJOR = 2.36\nATK_VERSION = $(ATK_VERSION_MAJOR).0\nATK_SOURCE = atk-$(ATK_VERSION).tar.xz\nATK_SITE = http://ftp.gnome.org/pub/gnome/sources/atk/$(ATK_VERSION_MAJOR)\nATK_LICENSE = LGPL-2.0+\nATK_LICENSE_FILES = COPYING\nATK_INSTALL_STAGING = YES\nATK_DEPENDENCIES = libglib2 $(TARGET_NLS_DEPENDENCIES)\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nATK_CONF_OPTS += -Dintrospection=true\nATK_DEPENDENCIES += gobject-introspection\nelse\nATK_CONF_OPTS += -Dintrospection=false\nendif\n\nATK_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/atkmm/Config.in",
    "content": "config BR2_PACKAGE_ATKMM\n\tbool \"atkmm\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # glibmm\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # atk/glibmm -> libglib2\n\tdepends on BR2_USE_MMU # atk/glibmm -> libglib2\n\tdepends on BR2_USE_WCHAR # atk/glibmm -> libglib2\n\tselect BR2_PACKAGE_ATK\n\tselect BR2_PACKAGE_GLIBMM\n\tselect BR2_PACKAGE_LIBSIGC\n\n\thelp\n\t  The atkmm package is a set of C++ bindings for Atk.\n\n\t  http://www.gtkmm.org/\n\ncomment \"atkmm needs a toolchain w/ C++, wchar, threads, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/atkmm/atkmm.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/atkmm/2.24/atkmm-2.24.2.sha256sum\nsha256  ff95385759e2af23828d4056356f25376cfabc41e690ac1df055371537e458bd  atkmm-2.24.2.tar.xz\n# locally computed\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING.tools\n"
  },
  {
    "path": "package/atkmm/atkmm.mk",
    "content": "################################################################################\n#\n# atkmm\n#\n################################################################################\n\nATKMM_VERSION_MAJOR = 2.24\nATKMM_VERSION = $(ATKMM_VERSION_MAJOR).2\nATKMM_SOURCE = atkmm-$(ATKMM_VERSION).tar.xz\nATKMM_SITE = http://ftp.gnome.org/pub/gnome/sources/atkmm/$(ATKMM_VERSION_MAJOR)\nATKMM_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools)\nATKMM_LICENSE_FILES = COPYING COPYING.tools\nATKMM_INSTALL_STAGING = YES\nATKMM_DEPENDENCIES = atk glibmm libsigc host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/atop/0001-ifprop.c-fix-build-with-kernel-4.6.patch",
    "content": "From aff473ee28903775e1bb35793b9c4c50ee0c7270 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 22 Dec 2020 12:23:33 +0100\nSubject: [PATCH] ifprop.c: fix build with kernel < 4.6\n\nBuild fails with kernel headers < 4.6 since version 2.6.0 and\nhttps://github.com/Atoptool/atop/commit/08c622ecaa5bb0bb260984ceaddc4730d1b312a7\n\nIndeed, ethtool_link_settings and ETHTOOL_GLINKSETTINGS are only\navailable since\nhttps://github.com/torvalds/linux/commit/3f1ac7a700d039c61d8d8b99f28d605d489a60cf\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/Atoptool/atop/pull/142]\n---\n ifprop.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/ifprop.c b/ifprop.c\nindex 60fa3fa..63fce5a 100644\n--- a/ifprop.c\n+++ b/ifprop.c\n@@ -104,7 +104,9 @@ initifprop(void)\n \tchar \t\t\t\t*cp, linebuf[2048];\n \tint\t\t\t\ti=0, sockfd;\n \n+#ifdef ETHTOOL_GLINKSETTINGS\n \tstruct ethtool_link_settings \tethlink;\t// preferred!\n+#endif\n \tstruct ethtool_cmd \t\tethcmd;\t\t// deprecated\t\n \n \tstruct ifreq\t\t \tifreq;\n@@ -153,6 +155,7 @@ initifprop(void)\n \t\tstrncpy((void *)&ifreq.ifr_ifrn.ifrn_name, ifprops[i].name,\n \t\t\t\tsizeof ifreq.ifr_ifrn.ifrn_name-1);\n \n+#ifdef ETHTOOL_GLINKSETTINGS\n \t\tethlink.cmd              = ETHTOOL_GLINKSETTINGS;\n \t\tifreq.ifr_ifru.ifru_data = (void *)&ethlink;\n \n@@ -164,6 +167,7 @@ initifprop(void)\n \t\t\tphy_addr = ethlink.phy_address;\n \t\t}\n \t\telse\n+#endif\n \t\t{\n \t\t\tethcmd.cmd               = ETHTOOL_GSET;\n \t\t\tifreq.ifr_ifru.ifru_data = (void *)&ethcmd;\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/atop/0002-photosyst.c-fix-build-on-musl.patch",
    "content": "From 34996ad1eb6d295382e7737ef34bd362abdd4944 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 19 Jan 2021 22:15:45 +0100\nSubject: [PATCH] photosyst.c: fix build on musl\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nBuild on musl is broken since version 2.6.0 and\nhttps://github.com/Atoptool/atop/commit/e889c66fbe1d0b7ae38fbcbaa46cea749257f486\nbecause limits.h is not included:\n\nphotosyst.c: In function ‘lvmmapname’:\nphotosyst.c:1624:14: error: ‘PATH_MAX’ undeclared (first use in this function); did you mean ‘AF_MAX’?\n   char  path[PATH_MAX];\n              ^~~~~~~~\n              AF_MAX\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n photosyst.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/photosyst.c b/photosyst.c\nindex 3de874b..67ae92f 100644\n--- a/photosyst.c\n+++ b/photosyst.c\n@@ -165,6 +165,7 @@\n #include <dirent.h>\n #include <sys/ioctl.h>\n #include <sys/sysmacros.h>\n+#include <limits.h>\n \n #define SCALINGMAXCPU\t8\t// threshold for scaling info per CPU\n \n-- \n2.29.2\n\n"
  },
  {
    "path": "package/atop/Config.in",
    "content": "config BR2_PACKAGE_ATOP\n\tbool \"atop\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR # ncurses wchar\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 # PERF_FLAG_FD_CLOEXEC\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_NCURSES_WCHAR\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Atop is an ASCII full-screen performance monitor for Linux\n\t  that is capable of reporting the activity of all processes\n\t  (even if processes have finished during the interval), daily\n\t  logging of system and process activity for long-term analysis,\n\t  highlighting overloaded system resources by using colors, etc.\n\t  At regular intervals, it shows system-level activity related\n\t  to the CPU, memory, swap, disks (including LVM) and network\n\t  layers, and for every process (and thread) it shows e.g. the\n\t  CPU utilization, memory growth, disk utilization, priority,\n\t  username, state, and exit code.\n\n\t  http://www.atoptool.nl\n\ncomment \"atop needs a toolchain w/ wchar, headers >= 3.14\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n"
  },
  {
    "path": "package/atop/atop.hash",
    "content": "# Locally computed:\nsha256  9ec2ca3a571692f7efaa095f99a5106432bcb71cc22cd6c49597ef0481058f72  atop-2.6.0.tar.gz\n\n# Hash for license file:\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  COPYING\n"
  },
  {
    "path": "package/atop/atop.mk",
    "content": "################################################################################\n#\n# atop\n#\n################################################################################\n\nATOP_VERSION = 2.6.0\nATOP_SITE = http://www.atoptool.nl/download\nATOP_LICENSE = GPL-2.0+\nATOP_LICENSE_FILES = COPYING\nATOP_CPE_ID_VENDOR = atop_project\nATOP_DEPENDENCIES = ncurses zlib\n\nATOP_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nATOP_CFLAGS += -O0\nendif\n\ndefine ATOP_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) CFLAGS=\"$(ATOP_CFLAGS)\" \\\n\t\t-C $(@D)\nendef\n\ndefine ATOP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/atop $(TARGET_DIR)/usr/bin/atop\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/attr/0001-build-with-older-GCCs.patch",
    "content": "From 3ac428794ea0f95c854166c9c0cffb0267c5e98b Mon Sep 17 00:00:00 2001\nFrom: Hollis Blanchard <hollis_blanchard@mentor.com>\nDate: Mon, 30 Jul 2018 14:17:21 -0700\nSubject: [PATCH] Remove messages in \"deprecated\" gcc attributes\n\nGCC versions up through 4.4.7 (which is used in RHEL 6) do not accept\nany argument for the deprecated attribute. GCC 4.5 and later say the\n\"msg\" argument is optional. We don't need the messages during\nBuildroot builds anyways.\n\nSigned-off-by: Hollis Blanchard <hollis_blanchard@mentor.com>\n---\n include/attributes.h | 20 ++++++++++----------\n 1 file changed, 10 insertions(+), 10 deletions(-)\n\ndiff --git a/include/attributes.h b/include/attributes.h\nindex 14beb8f..23c39c8 100644\n--- a/include/attributes.h\n+++ b/include/attributes.h\n@@ -127,10 +127,10 @@ typedef struct attr_multiop {\n  */\n EXPORT int attr_get (const char *__path, const char *__attrname,\n \t\t\tchar *__attrvalue, int *__valuelength, int __flags)\n-\t__attribute__ ((deprecated (\"Use getxattr or lgetxattr instead\")));\n+\t__attribute__ ((deprecated));\n EXPORT int attr_getf (int __fd, const char *__attrname, char *__attrvalue,\n \t\t\tint *__valuelength, int __flags)\n-\t__attribute__ ((deprecated (\"Use fgetxattr instead\")));\n+\t__attribute__ ((deprecated));\n \n /*\n  * Set the value of an attribute, creating the attribute if necessary.\n@@ -139,11 +139,11 @@ EXPORT int attr_getf (int __fd, const char *__attrname, char *__attrvalue,\n EXPORT int attr_set (const char *__path, const char *__attrname,\n \t\t\tconst char *__attrvalue, const int __valuelength,\n \t\t\tint __flags)\n-\t__attribute__ ((deprecated (\"Use setxattr or lsetxattr instead\")));\n+\t__attribute__ ((deprecated));\n EXPORT int attr_setf (int __fd, const char *__attrname,\n \t\t\tconst char *__attrvalue, const int __valuelength,\n \t\t\tint __flags)\n-\t__attribute__ ((deprecated (\"Use fsetxattr instead\")));\n+\t__attribute__ ((deprecated));\n \n /*\n  * Remove an attribute.\n@@ -151,9 +151,9 @@ EXPORT int attr_setf (int __fd, const char *__attrname,\n  */\n EXPORT int attr_remove (const char *__path, const char *__attrname,\n \t\t\tint __flags)\n-\t__attribute__ ((deprecated (\"Use removexattr or lremovexattr instead\")));\n+\t__attribute__ ((deprecated));\n EXPORT int attr_removef (int __fd, const char *__attrname, int __flags)\n-\t__attribute__ ((deprecated (\"Use fremovexattr instead\")));\n+\t__attribute__ ((deprecated));\n \n /*\n  * List the names and sizes of the values of all the attributes of an object.\n@@ -164,10 +164,10 @@ EXPORT int attr_removef (int __fd, const char *__attrname, int __flags)\n  */\n EXPORT int attr_list(const char *__path, char *__buffer, const int __buffersize,\n \t\tint __flags, attrlist_cursor_t *__cursor)\n-\t__attribute__ ((deprecated (\"Use listxattr or llistxattr instead\")));\n+\t__attribute__ ((deprecated));\n EXPORT int attr_listf(int __fd, char *__buffer, const int __buffersize,\n \t\tint __flags, attrlist_cursor_t *__cursor)\n-\t__attribute__ ((deprecated (\"Use flistxattr instead\")));\n+\t__attribute__ ((deprecated));\n \n /*\n  * Operate on multiple attributes of the same object simultaneously.\n@@ -188,10 +188,10 @@ EXPORT int attr_listf(int __fd, char *__buffer, const int __buffersize,\n  */\n EXPORT int attr_multi (const char *__path, attr_multiop_t *__oplist,\n \t\t\tint __count, int __flags)\n-\t__attribute__ ((deprecated (\"Use getxattr, setxattr, listxattr, removexattr instead\")));\n+\t__attribute__ ((deprecated));\n EXPORT int attr_multif (int __fd, attr_multiop_t *__oplist,\n \t\t\tint __count, int __flags)\n-\t__attribute__ ((deprecated (\"Use getxattr, setxattr, listxattr, removexattr instead\")));\n+\t__attribute__ ((deprecated));\n \n #ifdef __cplusplus\n }\n-- \n2.13.0\n\n"
  },
  {
    "path": "package/attr/Config.in",
    "content": "config BR2_PACKAGE_ATTR\n\tbool \"attr\"\n\thelp\n\t  Commands for Manipulating Filesystem Extended Attributes.\n\t  This package also provides libattr.\n\n\t  http://savannah.nongnu.org/projects/attr\n"
  },
  {
    "path": "package/attr/attr.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  db448a626f9313a1a970d636767316a8da32aede70518b8050fa0de7947adc32  attr-2.5.1.tar.xz\n\n# Locally calculated\nsha256  98f318493be6b08bff3cd295791cde06c54e17882a3c74a1ed245eaa02533d52  doc/COPYING\nsha256  5decad7e58d90d44335bf2f45ce27563bd911065c6a1a02dfa7647c4efee75c8  doc/COPYING.LGPL\n"
  },
  {
    "path": "package/attr/attr.mk",
    "content": "################################################################################\n#\n# attr\n#\n################################################################################\n\nATTR_VERSION = 2.5.1\nATTR_SOURCE = attr-$(ATTR_VERSION).tar.xz\nATTR_SITE = http://download.savannah.gnu.org/releases/attr\nATTR_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries)\nATTR_LICENSE_FILES = doc/COPYING doc/COPYING.LGPL\nATTR_CPE_ID_VENDOR = attr_project\n\nATTR_INSTALL_STAGING = YES\n\nATTR_CONF_OPTS = --disable-nls\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/aubio/Config.in",
    "content": "config BR2_PACKAGE_AUBIO\n\tbool \"aubio\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  aubio is a tool designed for the extraction of annotations\n\t  from audio signals. Its features include segmenting a sound\n\t  file before each of its attacks, performing pitch detection,\n\t  tapping the beat and producing midi streams from live audio.\n\n\t  Because these tasks are difficult, we thought it was important\n\t  to gather them in a dedicated library. To increase the fun, we\n\t  have made these algorithms work in a causal way, so as to be\n\t  used in real time applications with as low delay as possible.\n\t  Functions can be used offline in sound editors and software\n\t  samplers, or online in audio effects and virtual instruments.\n\n\t  https://aubio.org\n\ncomment \"aubio needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/aubio/aubio.hash",
    "content": "# From https://aubio.org/pub/aubio-0.4.9.tar.bz2.sha256\nsha256 d48282ae4dab83b3dc94c16cf011bcb63835c1c02b515490e1883049c3d1f3da  aubio-0.4.9.tar.bz2\n\n# Hash for license file:\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/aubio/aubio.mk",
    "content": "################################################################################\n#\n# aubio\n#\n################################################################################\n\nAUBIO_VERSION = 0.4.9\nAUBIO_SITE = https://aubio.org/pub\nAUBIO_SOURCE = aubio-$(AUBIO_VERSION).tar.bz2\nAUBIO_LICENSE = GPL-3.0+\nAUBIO_LICENSE_FILES = COPYING\nAUBIO_INSTALL_STAGING = YES\n\nAUBIO_CONF_OPTS = \\\n\t--disable-docs \\\n\t--disable-atlas\n\n# Add --notests for each build step to avoid running unit tests on the\n# build machine.\nAUBIO_WAF_OPTS = --notests\n\nifeq ($(BR2_PACKAGE_LIBSNDFILE),y)\nAUBIO_DEPENDENCIES += libsndfile\nAUBIO_CONF_OPTS += --enable-sndfile\nelse\nAUBIO_CONF_OPTS += --disable-sndfile\nendif\n\n# Could not compile aubio in double precision mode with libsamplerate\nifeq ($(BR2_PACKAGE_LIBSAMPLERATE):$(BR2_PACKAGE_FFTW_DOUBLE),y:)\nAUBIO_DEPENDENCIES += libsamplerate\nAUBIO_CONF_OPTS += --enable-samplerate\nelse\nAUBIO_CONF_OPTS += --disable-samplerate\nendif\n\nifeq ($(BR2_PACKAGE_JACK2),y)\nAUBIO_DEPENDENCIES += jack2\nAUBIO_CONF_OPTS += --enable-jack\nelse\nAUBIO_CONF_OPTS += --disable-jack\nendif\n\n# fftw3 require double otherwise it will look for fftw3f\nifeq ($(BR2_PACKAGE_FFTW_DOUBLE),y)\nAUBIO_CONF_OPTS += --enable-fftw3 --enable-double\nAUBIO_DEPENDENCIES += fftw-double\nelse ifeq ($(BR2_PACKAGE_FFTW_SINGLE),y)\nAUBIO_CONF_OPTS += --enable-fftw3f --disable-double\nAUBIO_DEPENDENCIES += fftw-single\nelse\nAUBIO_CONF_OPTS += --disable-fftw3\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_AVRESAMPLE),y)\nAUBIO_DEPENDENCIES += ffmpeg\nAUBIO_CONF_OPTS += --enable-avcodec\nelse\nAUBIO_CONF_OPTS += --disable-avcodec\nendif\n\n$(eval $(waf-package))\n"
  },
  {
    "path": "package/audit/Config.in",
    "content": "# audit has some builtin per-architecture system call tables\nconfig BR2_PACKAGE_AUDIT_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64 || BR2_arm || BR2_armeb || \\\n\t\tBR2_i386 || BR2_powerpc || BR2_powerpc64 || \\\n\t\tBR2_x86_64\n\nconfig BR2_PACKAGE_AUDIT\n\tbool \"audit\"\n\tdepends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  The audit package contains the user space utilities for\n\t  storing and searching the audit records generated by\n\t  the audit subsystem in the Linux 2.6 kernel\n\n\t  Note: The z/OS remote plugin is disabled in this package\n\n\t  http://people.redhat.com/sgrubb/audit/\n\ncomment \"audit needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS\n"
  },
  {
    "path": "package/audit/S02auditd",
    "content": "#!/bin/sh\n#\n# auditd       This starts and stops auditd\n#\n# description: This starts the Linux Auditing System Daemon,\n#              which collects security related events in a dedicated\n#              audit log. If this daemon is turned off, audit events\n#              will be sent to syslog.\n#\n\nNAME=auditd\nDAEMON=/usr/sbin/${NAME}\nCONFIG=/etc/audit/auditd.conf\nPIDFILE=/var/run/${NAME}.pid\n\nstart(){\n\tprintf \"Starting ${NAME}: \"\n\n\t# Create dir to store log files in if one doesn't exist. Create\n\t# the directory with SELinux permissions if possible\n\tcommand -v selabel_lookup >/dev/null 2>&1\n\tif [ $? = 0 ]; then\n\t\tmkdir -p /var/log/audit -Z `selabel_lookup -b file -k /var/log/audit | cut -d ' ' -f 3`\n\telse\n\t\tmkdir -p /var/log/audit\n\tfi\n\n\t# Run audit daemon executable\n\tstart-stop-daemon -S -q -p ${PIDFILE} --exec ${DAEMON}\n\n\tif [ $? = 0 ]; then\n\t\t# Load the default rules\n\t\ttest -f /etc/audit/rules.d/audit.rules && /usr/sbin/auditctl -R /etc/audit/rules.d/audit.rules >/dev/null\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n}\n\nstop(){\n\tprintf \"Stopping ${NAME}: \"\n\n\tstart-stop-daemon -K -q -p ${PIDFILE}\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nreload(){\n\tprintf \"Reloading ${NAME} configuration: \"\n\tstart-stop-daemon --stop -s 1 -p ${PIDFILE} 1>/dev/null\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nrotate(){\n\tprintf \"Rotating ${NAME} logs: \"\n\tstart-stop-daemon --stop -s 10 -p ${PIDFILE} 1>/dev/null\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t\t;;\n\tstop)\n\t\tstop\n\t\t;;\n\trestart)\n\t\tstop\n\t\tstart\n\t\t;;\n\treload)\n\t\treload\n\t\t;;\n\trotate)\n\t\trotate\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload|rotate}\"\n\t\texit 1\n\t\t;;\nesac\n"
  },
  {
    "path": "package/audit/audit.hash",
    "content": "#Locally computed\nsha256  c3e44d77513a42401d417dd0ceb203cf23886cb89402dea7b9494faa3f4fcc5e  audit-3.0.6.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\nsha256  f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa  COPYING.LIB\n"
  },
  {
    "path": "package/audit/audit.mk",
    "content": "################################################################################\n#\n# audit\n#\n################################################################################\n\nAUDIT_VERSION = 3.0.6\nAUDIT_SITE = http://people.redhat.com/sgrubb/audit\nAUDIT_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries)\nAUDIT_LICENSE_FILES = COPYING COPYING.LIB\nAUDIT_CPE_ID_VENDOR = linux_audit_project\nAUDIT_CPE_ID_PRODUCT = linux_audit\n\nAUDIT_INSTALL_STAGING = YES\n\nAUDIT_CONF_OPTS = --without-python --without-python3 --disable-zos-remote\n\nifeq ($(BR2_PACKAGE_LIBCAP_NG),y)\nAUDIT_DEPENDENCIES += libcap-ng\nAUDIT_CONF_OPTS += --with-libcap-ng=yes\nelse\nAUDIT_CONF_OPTS += --with-libcap-ng=no\nendif\n\n# For i386, x86-64 and PowerPC, the system call tables are\n# unconditionally included. However, for ARM(eb) and AArch64, then\n# need to be explicitly enabled.\n\nifeq ($(BR2_arm)$(BR2_armeb),y)\nAUDIT_CONF_OPTS += --with-arm\nendif\nifeq ($(BR2_aarch64),y)\nAUDIT_CONF_OPTS += --with-aarch64\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nAUDIT_CONF_OPTS += --enable-systemd\nelse\nAUDIT_CONF_OPTS += --disable-systemd\nendif\n\ndefine AUDIT_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/audit/S02auditd $(TARGET_DIR)/etc/init.d/S02auditd\nendef\n\ndefine AUDIT_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/audit/audit_tmpfiles.conf \\\n\t\t$(TARGET_DIR)/usr/lib/tmpfiles.d/audit.conf\nendef\n\ndefine AUDIT_INSTALL_CLEANUP\n\t$(RM) $(TARGET_DIR)/etc/rc.d/init.d/auditd\n\t$(RM) $(TARGET_DIR)/etc/sysconfig/auditd\nendef\nAUDIT_POST_INSTALL_TARGET_HOOKS += AUDIT_INSTALL_CLEANUP\n\ndefine AUDIT_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NET)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_AUDIT)\nendef\n\nHOST_AUDIT_CONF_OPTS = \\\n\t--without-python \\\n\t--without-python3 \\\n\t--disable-zos-remote \\\n\t--without-libcap-ng\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/audit/audit_tmpfiles.conf",
    "content": "d /var/log/audit 0755 - -\n"
  },
  {
    "path": "package/aufs/Config.in",
    "content": "# Automatically selected by the corresponding linux extension\nconfig BR2_PACKAGE_AUFS\n\tbool\n\nif BR2_PACKAGE_AUFS\n\n# Both come from the selection of the linux extension.\nconfig BR2_PACKAGE_AUFS_SERIES\n\tint\n\tdefault BR2_LINUX_KERNEL_EXT_AUFS_SERIES\n\nconfig BR2_PACKAGE_AUFS_VERSION\n\tstring\n\tdefault BR2_LINUX_KERNEL_EXT_AUFS_VERSION\n\nendif\n"
  },
  {
    "path": "package/aufs/aufs.mk",
    "content": "################################################################################\n#\n# aufs\n#\n################################################################################\n\nAUFS_VERSION = $(call qstrip,$(BR2_PACKAGE_AUFS_VERSION))\nAUFS_LICENSE = GPL-2.0\nAUFS_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_AUFS_SERIES),3)\nAUFS_SITE = http://git.code.sf.net/p/aufs/aufs3-standalone\nAUFS_SITE_METHOD = git\nelse ifeq ($(BR2_PACKAGE_AUFS_SERIES),4)\nAUFS_SITE = $(call github,sfjro,aufs4-standalone,$(AUFS_VERSION))\nelse ifeq ($(BR2_PACKAGE_AUFS_SERIES),5)\nAUFS_SITE = $(call github,sfjro,aufs5-standalone,$(AUFS_VERSION))\nendif\n\nifeq ($(BR_BUILDING):$(BR2_PACKAGE_AUFS):$(AUFS_VERSION),y:y:)\n$(error No aufs version specified)\nendif\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/aufs-util/0001-remove-user-settings.patch",
    "content": "install: drop setting ownership\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff --git a/Makefile b/Makefile\n--- a/Makefile\n+++ b/Makefile\n@@ -21,7 +21,7 @@\n override CPPFLAGS += -DAUFHSM_CMD=\\\"/usr/bin/aufhsm\\\"\n override CFLAGS += -O -Wall\n INSTALL ?= install\n-Install = ${INSTALL} -o root -g root -p\n+Install = ${INSTALL} -p\n ManDir = /usr/share/man\n \n #\n"
  },
  {
    "path": "package/aufs-util/0002-no-check-ver.patch",
    "content": "Makefile: do not check version\n\nThe aufs-util package tries to ensure that its version is compatible\nwith the one in the running kernel. However, this test is flawed: the\nversion string in the aufs4x branch for aufs-util is aufs3.x, so it does\nnot match the version in the kernel when it is aufs4.x.\n\nDisengage this check, ion the assumption the user knows what he is\ndoing.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff --git a/Makefile b/Makefile\n--- a/Makefile\n+++ b/Makefile\n@@ -62,7 +62,7 @@\n $(foreach v, CPPFLAGS CFLAGS INSTALL Install ManDir LibUtilHdr, \\\n \t$(eval MAKE += ${v}=\"$${${v}}\"))\n \n-all: ver_test ${Man} ${Bin} ${Etc}\n+all: ${Man} ${Bin} ${Etc}\n \t${MAKE} -C libau $@\n \tln -sf ./libau/libau*.so .\n \t$(call MakeFHSM, $@)\n"
  },
  {
    "path": "package/aufs-util/0003-no-strip-lib.patch",
    "content": "install: do not strip libs when installing\n\nWe want unstripped binaries in staging; stripping is done by Buildroot\nas a whole in target-finalize if needed, anyway.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff --git a/libau/Makefile b/libau/Makefile\n--- a/libau/Makefile\n+++ b/libau/Makefile\n@@ -37,7 +37,6 @@\n \tln -sf $< $@\n ${LibSo}.${LibSoMajor}: ${LibSo}.${LibSoMajor}.${LibSoMinor}\n \tln -sf $< $@\n-${LibSo}.${LibSoMajor}.${LibSoMinor}: override LDFLAGS += -s\n ${LibSo}.${LibSoMajor}.${LibSoMinor}: override LDLIBS += -ldl -lpthread\n ${LibSo}.${LibSoMajor}.${LibSoMinor}: ${LibSoObj}\n \t${CC} --shared -Wl,-soname,${LibSo}.${LibSoMajor} ${LDFLAGS} \\\n"
  },
  {
    "path": "package/aufs-util/Config.in",
    "content": "comment \"aufs-util needs a linux kernel and a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_LINUX_KERNEL || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_AUFS_UTIL\n\tbool \"aufs-util\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Aufs command line utilities.\n\n\t  Needs a kernel with aufs support. A kernel\n\t  extension package is available.\n\n\t  http://sourceforge.net/p/aufs/aufs-util/\n\nif BR2_PACKAGE_AUFS_UTIL\n\nconfig BR2_PACKAGE_AUFS_UTIL_VERSION\n\tstring \"aufs-util version\"\n\tdefault \"\"\n\thelp\n\t  The version you choose must match that of the aufs support\n\t  in your kernel. Usually, this is aufs3.x for 3.x kernels and\n\t  aufs4.x for 4.x kernels.\n\n\t  Usually, the sha1 of the cset you want to use; avoid using a\n\t  branch name as this yields non-reproducible builds.\n\n\t  See the following resources to see what versions are\n\t  available:\n\n\t  https://sourceforge.net/p/aufs/aufs-util/ci/master/tree/\n\nendif\n"
  },
  {
    "path": "package/aufs-util/aufs-util.mk",
    "content": "################################################################################\n#\n# aufs-util\n#\n################################################################################\n\n# linux-headers\nAUFS_UTIL_VERSION = $(call qstrip,$(BR2_PACKAGE_AUFS_UTIL_VERSION))\nAUFS_UTIL_SITE = http://git.code.sf.net/p/aufs/aufs-util\nAUFS_UTIL_SITE_METHOD = git\nAUFS_UTIL_LICENSE = GPL-2.0\nAUFS_UTIL_LICENSE_FILES = COPYING\n\nAUFS_UTIL_DEPENDENCIES = linux\n\n# Building aufs-util requires access to the kernel headers of aufs,\n# which are only available in the kernel build directory, which is why\n# we add -I$(LINUX_DIR)/include/uapi. These headers have not been\n# prepared for usage by userspace, so to workaround this we have to\n# defined the \"__user\" macro as empty.\nAUFS_UTIL_HOST_CPPFLAGS = \\\n\t$(HOST_CPPFLAGS) \\\n\t-I$(LINUX_DIR)/include/uapi \\\n\t-D__user=\n\nAUFS_UTIL_CPPFLAGS = \\\n\t$(TARGET_CPPFLAGS) \\\n\t-I$(LINUX_DIR)/include/uapi \\\n\t-D__user=\n\n# rdu64 is supposed to provide the LFS variant of readdir(),\n# readdir64(). However, because Buildroot is always LFS-enabled,\n# readdir() is always the LFS variant. Drop rdu64 from the build, as\n# it causes build failures due to multiple implementations of\n# readdir64().\ndefine AUFS_UTIL_REMOVE_RDU64\n\t$(SED) 's% rdu64.o%%' $(@D)/libau/Makefile\nendef\n\nAUFS_UTIL_POST_PATCH_HOOKS += AUFS_UTIL_REMOVE_RDU64\n\n# First, we build the host tools, needed to build the target tools.\ndefine AUFS_UTIL_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(HOST_CONFIGURE_OPTS) \\\n\t\tCPPFLAGS=\"$(AUFS_UTIL_HOST_CPPFLAGS)\" \\\n\t\tHOSTCC=\"$(HOSTCC)\" HOSTLD=\"$(HOSTLD)\" \\\n\t\tINSTALL=\"$(INSTALL)\" c2sh c2tmac\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\tCPPFLAGS=\"$(AUFS_UTIL_CPPFLAGS)\" \\\n\t\tINSTALL=\"$(INSTALL)\" all\nendef\n\ndefine AUFS_UTIL_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) INSTALL=\"$(INSTALL)\" DESTDIR=\"$(TARGET_DIR)\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/augeas/Config.in",
    "content": "config BR2_PACKAGE_AUGEAS\n\tbool \"augeas\"\n\t# ARC toolchain issue:\n\t# https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/issues/108\n\tdepends on !BR2_arc\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  Augeas is a configuration editing tool. It parses\n\t  configuration files in their native formats and transforms\n\t  them into a tree. Configuration changes are made by\n\t  manipulating this tree and saving it back into native config\n\t  files.\n\n\t  http://augeas.net\n\ncomment \"augeas needs a toolchain w/ wchar\"\n\tdepends on !BR2_arc\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/augeas/augeas.hash",
    "content": "# Locally calculated after checking pgp signature from\n# http://download.augeas.net/augeas-1.12.0.tar.gz.sig\nsha256  321942c9cc32185e2e9cb72d0a70eea106635b50269075aca6714e3ec282cb87  augeas-1.12.0.tar.gz\nsha256  ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532  COPYING\n"
  },
  {
    "path": "package/augeas/augeas.mk",
    "content": "################################################################################\n#\n# augeas\n#\n################################################################################\n\nAUGEAS_VERSION = 1.12.0\nAUGEAS_SITE = http://download.augeas.net\nAUGEAS_INSTALL_STAGING = YES\nAUGEAS_LICENSE = LGPL-2.1+\nAUGEAS_LICENSE_FILES = COPYING\nAUGEAS_CPE_ID_VENDOR = augeas\nAUGEAS_DEPENDENCIES = host-pkgconf readline libxml2\n\nAUGEAS_CONF_OPTS = --disable-gnulib-tests\n\n# Remove the test lenses which occupy about 1.4 MB on the target\ndefine AUGEAS_REMOVE_TEST_LENSES\n\trm -rf $(TARGET_DIR)/usr/share/augeas/lenses/dist/tests\nendef\nAUGEAS_POST_INSTALL_TARGET_HOOKS += AUGEAS_REMOVE_TEST_LENSES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/aumix/0001-fix-incorrect-makefile-am.patch",
    "content": "Aumix's src/Makefile.am incorrect adds @includedir@ to the list of\ninclude paths and @libdir@ to the list of libraries paths. This is\nincorrect, as @includedir@ and @libdir@ are respectively /usr/include\nand /usr/lib, even in cross-compilation mode.\n\nAt the same time, use AM_CFLAGS instead of CFLAGS, as is done on the\nsimilar patch found in OpenEmbedded.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n src/Makefile.am |    5 ++---\n 1 file changed, 2 insertions(+), 3 deletions(-)\n\nIndex: aumix-2.8/src/Makefile.am\n===================================================================\n--- aumix-2.8.orig/src/Makefile.am\n+++ aumix-2.8/src/Makefile.am\n@@ -9,9 +9,8 @@\n \t\tmouse.c common.h curses.h gpm-xterm.h gtk.h interactive.h  \\\n \t\tmouse.h play.xpm record.xpm\n localedir\t= $(datadir)/locale\n-INCLUDES\t= -I../intl -DLOCALEDIR=\\\"$(localedir)\\\" -I@includedir@\n+INCLUDES\t= -I../intl -DLOCALEDIR=\\\"$(localedir)\\\"\n AM_CFLAGS\t= @CFLAGS@ @GLIB_CFLAGS@ @GTK_CFLAGS@\n-LDADD\t\t= -L@libdir@\n LIBS\t\t= @LIBS@ @GTK_LIBS@ @LIBINTL@\n DEFS\t\t= @DEFS@\n \n"
  },
  {
    "path": "package/aumix/Config.in",
    "content": "config BR2_PACKAGE_AUMIX\n\tbool \"aumix\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  aumix is a small, easy-to-use program to control the mixer\n\t  of your sound card. It runs in text mode using the ncurses\n\t  library, or from the command line (non-interactively).\n\t  It can read default settings from a file, and it can also\n\t  automatically save and restore the mixer settings at shutdown\n\t  and boot.\n\n\t  http://jpj.net/~trevor/aumix.html\n"
  },
  {
    "path": "package/aumix/aumix.hash",
    "content": "# Locally calculated\nsha256  d2ce43d532ef75072c8d4e7922e3bc06be6d97765a508d9ceb0d1766bbe70e29  aumix-2.9.1.tar.bz2\nsha256  1ca3e8f71b7de618968e7ea9fe47822d9e704dc476aef8544033abedec355225  COPYING\nsha256  3bfa74db4aeb68bfef7ee213bb1dbf236d784dea3d35a52f6e23a48c847375dd  19_no-common.patch\n"
  },
  {
    "path": "package/aumix/aumix.mk",
    "content": "################################################################################\n#\n# aumix\n#\n################################################################################\n\nAUMIX_VERSION = 2.9.1\nAUMIX_SOURCE = aumix-$(AUMIX_VERSION).tar.bz2\nAUMIX_SITE = http://jpj.net/~trevor/aumix/releases\nAUMIX_AUTORECONF = YES\nAUMIX_GETTEXTIZE = YES\nAUMIX_LICENSE = GPL-2.0+\nAUMIX_LICENSE_FILES = COPYING\n\nAUMIX_PATCH = \\\n\thttps://sources.debian.org/data/main/a/aumix/2.9.1-7/debian/patches/19_no-common.patch\n\nAUMIX_CONF_OPTS = \\\n\t--without-gtk \\\n\t--without-gtk1 \\\n\t--without-alsa \\\n\t--without-gpm \\\n\t--without-sysmouse\n\nAUMIX_DEPENDENCIES = host-gettext ncurses\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/autoconf/0001-dont-add-dirty-to-version.patch",
    "content": "autoconf: don't append -dirty to version\n\nDon't append -dirty to autoconf version number if the buildroot git tree\nhas uncommited changes.\n\nThis script is meant for the autoconf developers, but it also activates\nif you build autoconf in a subdirectory of a git tree (E.G. like how it's\ncommonly done in buildroot).\n\nThe affect is that autoconf gets built as being version 2.65-dirty, which\nbreaks programs (like Python) which explicitly checks for autoconf-2.65.\n\n[Gustavo: update for autoconf 2.69]\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura autoconf-2.69.orig/build-aux/git-version-gen autoconf-2.69/build-aux/git-version-gen\n--- autoconf-2.69.orig/build-aux/git-version-gen\t2013-06-27 11:31:02.340200154 -0300\n+++ autoconf-2.69/build-aux/git-version-gen\t2013-06-27 11:31:13.734577033 -0300\n@@ -203,7 +203,7 @@\n       *) # Append the suffix only if there isn't one already.\n           case $v in\n             *-dirty) ;;\n-            *) v=\"$v-dirty\" ;;\n+            #*) v=\"$v-dirty\" ;;\n           esac ;;\n   esac\n fi\n"
  },
  {
    "path": "package/autoconf/autoconf.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  f14c83cfebcc9427f2c3cea7258bd90df972d92eb26752da4ddad81c87a0faa4  autoconf-2.71.tar.xz\nsha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  COPYINGv3\nsha256  1f1cde9fb68b9b3cff18c420894bec5bd4defacd700b7d13df54a887301e5350  COPYING.EXCEPTION\n"
  },
  {
    "path": "package/autoconf/autoconf.mk",
    "content": "################################################################################\n#\n# autoconf\n#\n################################################################################\n\nAUTOCONF_VERSION = 2.71\nAUTOCONF_SOURCE = autoconf-$(AUTOCONF_VERSION).tar.xz\nAUTOCONF_SITE = $(BR2_GNU_MIRROR)/autoconf\n\nAUTOCONF_LICENSE = GPL-3.0+ with exceptions\nAUTOCONF_LICENSE_FILES = COPYINGv3 COPYING.EXCEPTION\n\nHOST_AUTOCONF_CONF_ENV = \\\n\tEMACS=\"no\" \\\n\tac_cv_path_M4=$(HOST_DIR)/bin/m4 \\\n\tac_cv_prog_gnu_m4_gnu=no\n\nHOST_AUTOCONF_DEPENDENCIES = host-m4 host-libtool\n\n$(eval $(host-autotools-package))\n\n# variables used by other packages\nAUTOCONF = $(HOST_DIR)/bin/autoconf -I \"$(ACLOCAL_DIR)\" -I \"$(ACLOCAL_HOST_DIR)\"\nAUTOHEADER = $(HOST_DIR)/bin/autoheader -I \"$(ACLOCAL_DIR)\" -I \"$(ACLOCAL_HOST_DIR)\"\nAUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL=\"$(ACLOCAL)\" AUTOCONF=\"$(AUTOCONF)\" AUTOHEADER=\"$(AUTOHEADER)\" AUTOMAKE=\"$(AUTOMAKE)\" AUTOPOINT=/bin/true GTKDOCIZE=/bin/true $(HOST_DIR)/bin/autoreconf -f -i\n"
  },
  {
    "path": "package/autoconf-archive/autoconf-archive.hash",
    "content": "# Computed locally\nsha256  e8a6eb9d28ddcba8ffef3fa211653239e9bf239aba6a01a6b7cfc7ceaec69cbd  autoconf-archive-2021.02.19.tar.xz\nsha256  e6037104443f9a7829b2aa7c5370d0789a7bda3ca65a0b904cdc0c2e285d9195  COPYING\nsha256  23ed0b84fa023bfa33433b498192cd08a3bfb1f4864a8ed791a84f3eb48b2dd2  COPYING.EXCEPTION\n"
  },
  {
    "path": "package/autoconf-archive/autoconf-archive.mk",
    "content": "################################################################################\n#\n# autoconf-archive\n#\n################################################################################\n\nAUTOCONF_ARCHIVE_VERSION = 2021.02.19\nAUTOCONF_ARCHIVE_SOURCE = autoconf-archive-$(AUTOCONF_ARCHIVE_VERSION).tar.xz\nAUTOCONF_ARCHIVE_SITE = $(BR2_GNU_MIRROR)/autoconf-archive\nAUTOCONF_ARCHIVE_LICENSE = GPL-3.0+ with exception\nAUTOCONF_ARCHIVE_LICENSE_FILES = COPYING COPYING.EXCEPTION\nHOST_AUTOCONF_ARCHIVE_INSTALL_OPTS = aclocaldir=$(HOST_DIR)/share/autoconf-archive install\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/autofs/0001-autofs-5-1-7-use-default-stack-size-for-threads.patch",
    "content": "From 91edcc55c681dac41d2213b498ec6450aee22d9f Mon Sep 17 00:00:00 2001\nFrom: Ian Kent <raven@themaw.net>\nDate: Mon, 26 Jul 2021 13:18:38 +0800\nSubject: autofs-5.1.7 - use default stack size for threads\n\nautofs uses PTHREAD_STACK_MIN to set the stack size for threads it\ncreates.\n\nIn two cases it is used to reduce the stack size for long running\nservice threads while it's used to allocate a larger stack for worker\nthreads that can have larger memory requirements.\n\nIn recent glibc releases PTHREAD_STACK_MIN is no longer a constant\nwhich can lead to unexpectedly different stack sizes on different\narchitectures and the autofs assumption it's a constant causes a\ncompile failure.\n\nThe need to alter the stack size was due to observed stack overflow\nwhich was thought to be due the thread stack being too small for autofs\nand glibc alloca(3) usage.\n\nQuite a bit of that alloca(3) usage has been eliminated from autofs now,\nparticularly those that might be allocating largish amounts of storage,\nand there has been a lot of change in glibc too so using the thread\ndefault stack should be ok.\n\nSigned-off-by: Ian Kent <raven@themaw.net>\n\n[Retrieved (and updated to drop CHANGELOG update) from:\nhttps://git.kernel.org/pub/scm/linux/storage/autofs/autofs.git/commit/?id=91edcc55c681dac41d2213b498ec6450aee22d9f]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n CHANGELOG          |  1 +\n daemon/automount.c | 29 -----------------------------\n daemon/state.c     |  6 +-----\n lib/alarm.c        |  6 +-----\n 4 files changed, 3 insertions(+), 39 deletions(-)\n\ndiff --git a/daemon/automount.c b/daemon/automount.c\nindex 23235a7..d743235 100644\n--- a/daemon/automount.c\n+++ b/daemon/automount.c\n@@ -84,7 +84,6 @@ static size_t kpkt_len;\n /* Attributes for creating detached and joinable threads */\n pthread_attr_t th_attr;\n pthread_attr_t th_attr_detached;\n-size_t detached_thread_stack_size = PTHREAD_STACK_MIN * 144;\n \n struct master_readmap_cond mrc = {\n \tPTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER, 0, NULL, 0, 0, 0, 0};\n@@ -2620,34 +2619,6 @@ int main(int argc, char *argv[])\n \t\texit(1);\n \t}\n \n-#ifdef _POSIX_THREAD_ATTR_STACKSIZE\n-\tif (pthread_attr_setstacksize(\n-\t\t\t&th_attr_detached, detached_thread_stack_size)) {\n-\t\tlogerr(\"%s: failed to set stack size thread attribute!\",\n-\t\t       program);\n-\t\tif (start_pipefd[1] != -1) {\n-\t\t\tres = write(start_pipefd[1], pst_stat, sizeof(*pst_stat));\n-\t\t\tclose(start_pipefd[1]);\n-\t\t}\n-\t\trelease_flag_file();\n-\t\tmacro_free_global_table();\n-\t\texit(1);\n-\t}\n-#endif\n-\n-\tif (pthread_attr_getstacksize(\n-\t\t\t&th_attr_detached, &detached_thread_stack_size)) {\n-\t\tlogerr(\"%s: failed to get detached thread stack size!\",\n-\t\t       program);\n-\t\tif (start_pipefd[1] != -1) {\n-\t\t\tres = write(start_pipefd[1], pst_stat, sizeof(*pst_stat));\n-\t\t\tclose(start_pipefd[1]);\n-\t\t}\n-\t\trelease_flag_file();\n-\t\tmacro_free_global_table();\n-\t\texit(1);\n-\t}\n-\n \tinfo(logging, \"Starting automounter version %s, master map %s\",\n \t\tversion, master_list->name);\n \tinfo(logging, \"using kernel protocol version %d.%02d\",\ndiff --git a/daemon/state.c b/daemon/state.c\nindex 5156bb2..5df0561 100644\n--- a/daemon/state.c\n+++ b/daemon/state.c\n@@ -1177,12 +1177,8 @@ int st_start_handler(void)\n \tstatus = pthread_attr_init(pattrs);\n \tif (status)\n \t\tpattrs = NULL;\n-\telse {\n+\telse\n \t\tpthread_attr_setdetachstate(pattrs, PTHREAD_CREATE_DETACHED);\n-#ifdef _POSIX_THREAD_ATTR_STACKSIZE\n-\t\tpthread_attr_setstacksize(pattrs, PTHREAD_STACK_MIN*4);\n-#endif\n-\t}\n \n \tstatus = pthread_create(&thid, pattrs, st_queue_handler, NULL);\n \ndiff --git a/lib/alarm.c b/lib/alarm.c\nindex f27e13c..1631a9b 100755\n--- a/lib/alarm.c\n+++ b/lib/alarm.c\n@@ -270,12 +270,8 @@ int alarm_start_handler(void)\n \tstatus = pthread_attr_init(pattrs);\n \tif (status)\n \t\tpattrs = NULL;\n-\telse {\n+\telse\n \t\tpthread_attr_setdetachstate(pattrs, PTHREAD_CREATE_DETACHED);\n-#ifdef _POSIX_THREAD_ATTR_STACKSIZE\n-\t\tpthread_attr_setstacksize(pattrs, PTHREAD_STACK_MIN*4);\n-#endif\n-\t}\n \n \tstatus = pthread_condattr_init(&condattrs);\n \tif (status)\n-- \ncgit 1.2.3-1.el7\n\n"
  },
  {
    "path": "package/autofs/Config.in",
    "content": "config BR2_PACKAGE_AUTOFS\n\tbool \"autofs\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS # dlfcn\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # nsswitch\n\tselect BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Autofs controls the operation of the automount daemons. The\n\t  automount daemons automatically mount filesystems when they\n\t  are used and unmount them after a period of inactivity based\n\t  on a set of pre-configured maps defined by default in\n\t  /etc/auto.master. The kernel automounter implements SunOS\n\t  style automounter under Linux and requires a kernel version\n\t  of at least 2.6.17 and the autofs4 kernel module.\n\n\t  http://www.linuxfromscratch.org/blfs/view/svn/general/autofs.html\n\ncomment \"autofs needs a glibc or uClibc toolchain w/ NPTL and dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \\\n\t\t|| BR2_TOOLCHAIN_USES_MUSL\n"
  },
  {
    "path": "package/autofs/autofs.hash",
    "content": "# From https://www.kernel.org/pub/linux/daemons/autofs/v5/sha256sums.asc\nsha256  a36b268611b79b07051749870ba540b139938efc84bc0293244c483e94f9ced7  autofs-5.1.7.tar.xz\n\n# Hash for license files\nsha256  458028929f712b4795bc5adc31a1d6a2151364ce1b372ac43f613f56c8448fed  COPYING\nsha256  26c826658dfa9e5ce5f182fbfbadf3fda2d184e78dba3d99da34c60113b2ce54  COPYRIGHT\n"
  },
  {
    "path": "package/autofs/autofs.mk",
    "content": "################################################################################\n#\n# autofs\n#\n################################################################################\n\nAUTOFS_VERSION = 5.1.7\nAUTOFS_SOURCE = autofs-$(AUTOFS_VERSION).tar.xz\nAUTOFS_SITE = $(BR2_KERNEL_MIRROR)/linux/daemons/autofs/v5\nAUTOFS_LICENSE = GPL-2.0+\nAUTOFS_LICENSE_FILES = COPYING COPYRIGHT\nAUTOFS_DEPENDENCIES = host-flex host-bison host-pkgconf host-nfs-utils\n\n# autofs looks on the build machine for the path of modprobe, mount,\n# umount and fsck programs so tell it explicitly where they will be\n# located on the target.\nAUTOFS_CONF_ENV = \\\n\tac_cv_path_E2FSCK=/sbin/fsck \\\n\tac_cv_path_E3FSCK=no \\\n\tac_cv_path_E4FSCK=no \\\n\tac_cv_path_KRB5_CONFIG=no \\\n\tac_cv_path_MODPROBE=/sbin/modprobe \\\n\tac_cv_path_MOUNT=/bin/mount \\\n\tac_cv_path_MOUNT_NFS=/usr/sbin/mount.nfs \\\n\tac_cv_path_UMOUNT=/bin/umount \\\n\tac_cv_linux_procfs=yes\n\n# instead of looking in the PATH like any reasonable package, autofs\n# configure looks only in an hardcoded search path for host tools,\n# which we have to override with --with-path.\nAUTOFS_CONF_OPTS = \\\n\t--disable-mount-locking \\\n\t--enable-ignore-busy \\\n\t--without-openldap \\\n\t--without-sasl \\\n\t--with-path=\"$(BR_PATH)\" \\\n\t--with-hesiod=no\n\nAUTOFS_MAKE_ENV = DONTSTRIP=1\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nAUTOFS_CONF_OPTS += --with-libtirpc\nAUTOFS_DEPENDENCIES += libtirpc\nelse\nAUTOFS_CONF_OPTS += --without-libtirpc\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/automake/0001-noman.patch",
    "content": "Disable manpages build and installation, seems the bundled version of\nhelp2man is somewhat old and breaks on modern distributions such as\nFedora 20, as reported by Kanibal on IRC.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura automake-1.14.1.orig/Makefile.in automake-1.14.1/Makefile.in\n--- automake-1.14.1.orig/Makefile.in\t2014-09-10 18:40:57.554164448 -0300\n+++ automake-1.14.1/Makefile.in\t2014-09-10 18:42:01.050348068 -0300\n@@ -3387,7 +3387,7 @@\n check-am: all-am\n \t$(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local\n check: check-am\n-all-am: Makefile $(INFO_DEPS) $(SCRIPTS) $(MANS) $(DATA)\n+all-am: Makefile $(INFO_DEPS) $(SCRIPTS) $(DATA)\n installdirs:\n \tfor 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 \\\n \t  test -z \"$$dir\" || $(MKDIR_P) \"$$dir\"; \\\n@@ -3454,7 +3454,7 @@\n \tinstall-dist_automake_internal_acDATA install-dist_docDATA \\\n \tinstall-dist_perllibDATA install-dist_pkgvdataDATA \\\n \tinstall-dist_scriptDATA install-dist_system_acDATA \\\n-\tinstall-info-am install-man install-nodist_perllibDATA\n+\tinstall-info-am install-nodist_perllibDATA\n \t@$(NORMAL_INSTALL)\n \t$(MAKE) $(AM_MAKEFLAGS) install-data-hook\n install-dvi: install-dvi-am\n"
  },
  {
    "path": "package/automake/automake.hash",
    "content": "# Locally calculated\nsha256  f01d58cd6d9d77fbdca9eb4bbd5ead1988228fdb73d6f7a201f5f8d6b118b469  automake-1.16.5.tar.xz\n# License files, locally calculated\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/automake/automake.mk",
    "content": "################################################################################\n#\n# automake\n#\n################################################################################\n\nAUTOMAKE_VERSION = 1.16.5\nAUTOMAKE_SOURCE = automake-$(AUTOMAKE_VERSION).tar.xz\nAUTOMAKE_SITE = $(BR2_GNU_MIRROR)/automake\nAUTOMAKE_LICENSE = GPL-2.0+\nAUTOMAKE_LICENSE_FILES = COPYING\nAUTOMAKE_CPE_ID_VENDOR = gnu\n\nHOST_AUTOMAKE_DEPENDENCIES = host-autoconf\n\nACLOCAL_HOST_DIR = $(HOST_DIR)/share/aclocal\n\ndefine HOST_AUTOMAKE_GTK_DOC_M4_INSTALL\n\t$(INSTALL) -D -m 0644 package/automake/gtk-doc.m4 \\\n\t\t$(ACLOCAL_HOST_DIR)/gtk-doc.m4\nendef\n\n# ensure staging aclocal dir exists\ndefine HOST_AUTOMAKE_MAKE_ACLOCAL\n\tmkdir -p $(ACLOCAL_DIR)\nendef\n\nHOST_AUTOMAKE_POST_INSTALL_HOOKS += HOST_AUTOMAKE_GTK_DOC_M4_INSTALL\nHOST_AUTOMAKE_POST_INSTALL_HOOKS += HOST_AUTOMAKE_MAKE_ACLOCAL\n\n$(eval $(host-autotools-package))\n\n# variables used by other packages\nAUTOMAKE = $(HOST_DIR)/bin/automake\nACLOCAL_DIR = $(STAGING_DIR)/usr/share/aclocal\nACLOCAL = $(HOST_DIR)/bin/aclocal\nACLOCAL_PATH = $(ACLOCAL_DIR):$(ACLOCAL_HOST_DIR)\nexport ACLOCAL_PATH\n"
  },
  {
    "path": "package/automake/gtk-doc.m4",
    "content": "dnl -*- mode: autoconf -*-\n\n# serial 2\n\ndnl Usage:\ndnl   GTK_DOC_CHECK([minimum-gtk-doc-version])\nAC_DEFUN([GTK_DOC_CHECK],\n[\n  AC_REQUIRE([PKG_PROG_PKG_CONFIG])\n  AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first\n  AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first\n\n  ifelse([$1],[],[gtk_doc_requires=\"gtk-doc\"],[gtk_doc_requires=\"gtk-doc >= $1\"])\n  AC_MSG_CHECKING([for gtk-doc])\n  PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no])\n  AC_MSG_RESULT($have_gtk_doc)\n\n  if test \"$have_gtk_doc\" = \"no\"; then\n      AC_MSG_WARN([\n  You will not be able to create source packages with 'make dist'\n  because $gtk_doc_requires is not found.])\n  fi\n\n  dnl check for tools we added during development\n  dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that\n  dnl may not be writable by the user. Currently, automake requires that the\n  dnl test name must end in '.test'.\n  dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638\n  AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test])\n  AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check])\n  AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])\n  AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])\n\n  dnl for overriding the documentation installation directory\n  AC_ARG_WITH([html-dir],\n    AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,\n    [with_html_dir='${datadir}/gtk-doc/html'])\n  HTML_DIR=\"$with_html_dir\"\n  AC_SUBST([HTML_DIR])\n\n  dnl enable/disable documentation building\n  AC_ARG_ENABLE([gtk-doc],\n    AS_HELP_STRING([--enable-gtk-doc],\n                   [use gtk-doc to build documentation [[default=no]]]),,\n    [enable_gtk_doc=no])\n\n  AC_MSG_CHECKING([whether to build gtk-doc documentation])\n  AC_MSG_RESULT($enable_gtk_doc)\n\n  if test \"x$enable_gtk_doc\" = \"xyes\" && test \"$have_gtk_doc\" = \"no\"; then\n    AC_MSG_ERROR([\n  You must have $gtk_doc_requires installed to build documentation for\n  $PACKAGE_NAME. Please install gtk-doc or disable building the\n  documentation by adding '--disable-gtk-doc' to '[$]0'.])\n  fi\n\n  dnl don't check for glib if we build glib\n  if test \"x$PACKAGE_NAME\" != \"xglib\"; then\n    dnl don't fail if someone does not have glib\n    PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0  >= 2.10.0,,[:])\n  fi\n\n  dnl enable/disable output formats\n  AC_ARG_ENABLE([gtk-doc-html],\n    AS_HELP_STRING([--enable-gtk-doc-html],\n                   [build documentation in html format [[default=yes]]]),,\n    [enable_gtk_doc_html=yes])\n    AC_ARG_ENABLE([gtk-doc-pdf],\n      AS_HELP_STRING([--enable-gtk-doc-pdf],\n                     [build documentation in pdf format [[default=no]]]),,\n      [enable_gtk_doc_pdf=no])\n\n  if test -z \"$GTKDOC_MKPDF\"; then\n    enable_gtk_doc_pdf=no\n  fi\n\n  if test -z \"$AM_DEFAULT_VERBOSITY\"; then\n    AM_DEFAULT_VERBOSITY=1\n  fi\n  AC_SUBST([AM_DEFAULT_VERBOSITY])\n\n  AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes])\n  AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])\n  AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes])\n  AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes])\n  AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n \"$LIBTOOL\"])\n  AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n \"$GTKDOC_REBASE\"])\n])\n"
  },
  {
    "path": "package/autossh/Config.in",
    "content": "config BR2_PACKAGE_AUTOSSH\n\tbool \"autossh\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_DROPBEAR || BR2_PACKAGE_OPENSSH\n\thelp\n\t  autossh is a program to start a copy of ssh and monitor it,\n\t  restarting it as necessary should it die or stop passing\n\t  traffic.\n\n\t  http://www.harding.motd.ca/autossh/\n"
  },
  {
    "path": "package/autossh/autossh.hash",
    "content": "# From http://www.harding.motd.ca/autossh/autossh-1.4g.cksums\nsha256 5fc3cee3361ca1615af862364c480593171d0c54ec156de79fc421e31ae21277  autossh-1.4g.tgz\nsha1 bd88da0e296b8d85722ee9e7c314e9319e5b2db8  autossh-1.4g.tgz\nmd5 2b804bc1bf6d2f2afaa526d02df7c0a2  autossh-1.4g.tgz\n# Locally computed\nsha256 014ec5a85a8899d4ea0e0a886bb3fc4c72b4bbec6414093ba1fdac5b178c25b4  autossh.c\n"
  },
  {
    "path": "package/autossh/autossh.mk",
    "content": "################################################################################\n#\n# autossh\n#\n################################################################################\n\nAUTOSSH_VERSION = 1.4g\nAUTOSSH_SITE = http://www.harding.motd.ca/autossh\nAUTOSSH_SOURCE = autossh-$(AUTOSSH_VERSION).tgz\nAUTOSSH_LICENSE = Modified BSD\nAUTOSSH_LICENSE_FILES = autossh.c\n# Fix AC_ARG_WITH code generation for --with-ssh\nAUTOSSH_AUTORECONF = YES\n\nAUTOSSH_CONF_OPTS = --with-ssh=/usr/bin/ssh\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/avahi/0001-Fix-NULL-pointer-crashes-from-175.patch",
    "content": "From 9d31939e55280a733d930b15ac9e4dda4497680c Mon Sep 17 00:00:00 2001\nFrom: Tommi Rantala <tommi.t.rantala@nokia.com>\nDate: Mon, 8 Feb 2021 11:04:43 +0200\nSubject: [PATCH] Fix NULL pointer crashes from #175\n\navahi-daemon is crashing when running \"ping .local\".\nThe crash is due to failing assertion from NULL pointer.\nAdd missing NULL pointer checks to fix it.\n\nIntroduced in #175 - merge commit 8f75a045709a780c8cf92a6a21e9d35b593bdecd\n\n[Retrieved from:\nhttps://github.com/lathiat/avahi/commit/9d31939e55280a733d930b15ac9e4dda4497680c]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n avahi-core/browse-dns-server.c   | 5 ++++-\n avahi-core/browse-domain.c       | 5 ++++-\n avahi-core/browse-service-type.c | 3 +++\n avahi-core/browse-service.c      | 3 +++\n avahi-core/browse.c              | 3 +++\n avahi-core/resolve-address.c     | 5 ++++-\n avahi-core/resolve-host-name.c   | 5 ++++-\n avahi-core/resolve-service.c     | 5 ++++-\n 8 files changed, 29 insertions(+), 5 deletions(-)\n\ndiff --git a/avahi-core/browse-dns-server.c b/avahi-core/browse-dns-server.c\nindex 049752e9..c2d914fa 100644\n--- a/avahi-core/browse-dns-server.c\n+++ b/avahi-core/browse-dns-server.c\n@@ -343,7 +343,10 @@ AvahiSDNSServerBrowser *avahi_s_dns_server_browser_new(\n         AvahiSDNSServerBrowser* b;\n \n         b = avahi_s_dns_server_browser_prepare(server, interface, protocol, domain, type, aprotocol, flags, callback, userdata);\n+        if (!b)\n+            return NULL;\n+\n         avahi_s_dns_server_browser_start(b);\n \n         return b;\n-}\n\\ No newline at end of file\n+}\ndiff --git a/avahi-core/browse-domain.c b/avahi-core/browse-domain.c\nindex f145d56a..06fa70c0 100644\n--- a/avahi-core/browse-domain.c\n+++ b/avahi-core/browse-domain.c\n@@ -253,7 +253,10 @@ AvahiSDomainBrowser *avahi_s_domain_browser_new(\n         AvahiSDomainBrowser *b;\n \n         b = avahi_s_domain_browser_prepare(server, interface, protocol, domain, type, flags, callback, userdata);\n+        if (!b)\n+            return NULL;\n+\n         avahi_s_domain_browser_start(b);\n \n         return b;\n-}\n\\ No newline at end of file\n+}\ndiff --git a/avahi-core/browse-service-type.c b/avahi-core/browse-service-type.c\nindex fdd22dcd..b1fc7af8 100644\n--- a/avahi-core/browse-service-type.c\n+++ b/avahi-core/browse-service-type.c\n@@ -171,6 +171,9 @@ AvahiSServiceTypeBrowser *avahi_s_service_type_browser_new(\n         AvahiSServiceTypeBrowser *b;\n \n         b = avahi_s_service_type_browser_prepare(server, interface, protocol, domain, flags, callback, userdata);\n+        if (!b)\n+            return NULL;\n+\n         avahi_s_service_type_browser_start(b);\n \n         return b;\ndiff --git a/avahi-core/browse-service.c b/avahi-core/browse-service.c\nindex 5531360c..63e0275a 100644\n--- a/avahi-core/browse-service.c\n+++ b/avahi-core/browse-service.c\n@@ -184,6 +184,9 @@ AvahiSServiceBrowser *avahi_s_service_browser_new(\n         AvahiSServiceBrowser *b;\n \n         b = avahi_s_service_browser_prepare(server, interface, protocol, service_type, domain, flags, callback, userdata);\n+        if (!b)\n+            return NULL;\n+\n         avahi_s_service_browser_start(b);\n \n         return b;\ndiff --git a/avahi-core/browse.c b/avahi-core/browse.c\nindex 2941e579..e8a915e9 100644\n--- a/avahi-core/browse.c\n+++ b/avahi-core/browse.c\n@@ -634,6 +634,9 @@ AvahiSRecordBrowser *avahi_s_record_browser_new(\n         AvahiSRecordBrowser *b;\n \n         b = avahi_s_record_browser_prepare(server, interface, protocol, key, flags, callback, userdata);\n+        if (!b)\n+            return NULL;\n+\n         avahi_s_record_browser_start_query(b);\n \n         return b;\ndiff --git a/avahi-core/resolve-address.c b/avahi-core/resolve-address.c\nindex ac0b29b1..e61dd242 100644\n--- a/avahi-core/resolve-address.c\n+++ b/avahi-core/resolve-address.c\n@@ -286,7 +286,10 @@ AvahiSAddressResolver *avahi_s_address_resolver_new(\n         AvahiSAddressResolver *b;\n \n         b = avahi_s_address_resolver_prepare(server, interface, protocol, address, flags, callback, userdata);\n+        if (!b)\n+            return NULL;\n+\n         avahi_s_address_resolver_start(b);\n \n         return b;\n-}\n\\ No newline at end of file\n+}\ndiff --git a/avahi-core/resolve-host-name.c b/avahi-core/resolve-host-name.c\nindex 808b0e72..4e8e5973 100644\n--- a/avahi-core/resolve-host-name.c\n+++ b/avahi-core/resolve-host-name.c\n@@ -318,7 +318,10 @@ AvahiSHostNameResolver *avahi_s_host_name_resolver_new(\n         AvahiSHostNameResolver *b;\n \n         b = avahi_s_host_name_resolver_prepare(server, interface, protocol, host_name, aprotocol, flags, callback, userdata);\n+        if (!b)\n+            return NULL;\n+\n         avahi_s_host_name_resolver_start(b);\n \n         return b;\n-}\n\\ No newline at end of file\n+}\ndiff --git a/avahi-core/resolve-service.c b/avahi-core/resolve-service.c\nindex 66bf3cae..43771763 100644\n--- a/avahi-core/resolve-service.c\n+++ b/avahi-core/resolve-service.c\n@@ -519,7 +519,10 @@ AvahiSServiceResolver *avahi_s_service_resolver_new(\n         AvahiSServiceResolver *b;\n \n         b = avahi_s_service_resolver_prepare(server, interface, protocol, name, type, domain, aprotocol, flags, callback, userdata);\n+        if (!b)\n+            return NULL;\n+\n         avahi_s_service_resolver_start(b);\n \n         return b;\n-}\n\\ No newline at end of file\n+}\n"
  },
  {
    "path": "package/avahi/Config.in",
    "content": "config BR2_PACKAGE_AVAHI\n\tbool \"avahi\"\n\t# libdaemon uses fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Avahi is a system which facilitates service\n\t  discovery on a local network.\n\n\t  http://www.avahi.org/\n\nif BR2_PACKAGE_AVAHI\n\nconfig BR2_PACKAGE_AVAHI_AUTOIPD\n\tbool \"IPv4LL network address configuration daemon\"\n\tdefault y\n\tselect BR2_PACKAGE_LIBDAEMON\n\thelp\n\t  Avahi-autoipd implements IPv4LL, \"Dynamic Configuration of\n\t  IPv4 Link-Local Addresses\" (IETF RFC3927), a protocol for\n\t  automatic IP address configuration from the link-local\n\t  169.254.0.0/16 range without the need for a central server.\n\t  It is primarily intended to be used in ad-hoc networks which\n\t  lack a DHCP server.\n\nconfig BR2_PACKAGE_AVAHI_DAEMON\n\tbool \"mDNS/DNS-SD daemon\"\n\tselect BR2_PACKAGE_LIBDAEMON\n\tselect BR2_PACKAGE_EXPAT\n\thelp\n\t  The Avahi mDNS/DNS-SD daemon implementing Apple's ZeroConf\n\t  architecture (also known as \"Rendezvous\" or \"Bonjour\").\n\t  The daemon registers local IP addresses and services using\n\t  mDNS/DNS-SD.\n\nconfig BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY\n\tbool \"libdns_sd compatibility (Bonjour)\"\n\tdepends on BR2_PACKAGE_AVAHI_DAEMON\n\tselect BR2_PACKAGE_DBUS\n\thelp\n\t  Enable the libdns_sd (Bonjour) compatibility library support\n\t  for legacy applications.\n\nendif\n\ncomment \"avahi needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/avahi/S05avahi-setup.sh",
    "content": "#!/bin/sh\n\ncase \"$1\" in\n    start|\"\")\n\tif [ ! -d /tmp/avahi-autoipd ]; then\n\t    rm -rf /tmp/avahi-autoipd\n\t    mkdir /tmp/avahi-autoipd\n\t    chown avahi.avahi /tmp/avahi-autoipd\n\tfi\n\t;;\n    stop) ;;\n    *)\n\techo \"Usage: S05avahi-setup.sh {start|stop}\" >&2\n\texit 1\n\t;;\nesac\n"
  },
  {
    "path": "package/avahi/S50avahi-daemon",
    "content": "#!/bin/sh\n#\n# avahi-daemon init script\n\nDAEMON=/usr/sbin/avahi-daemon\ncase \"$1\" in\n    start)\n\t$DAEMON -c || $DAEMON -D\n\t;;\n    stop)\n\t$DAEMON -c && $DAEMON -k\n\t;;\n    reload)\n\t$DAEMON -c && $DAEMON -r\n\t;;\n    *)\n\techo \"Usage: S50avahi-daemon {start|stop|reload}\" >&2\n\texit 1\n\t;;\nesac\n"
  },
  {
    "path": "package/avahi/avahi.hash",
    "content": "# Locally calculated\nsha256 060309d7a333d38d951bc27598c677af1796934dbd98e1024e7ad8de798fedda  avahi-0.8.tar.gz\nsha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  LICENSE\n"
  },
  {
    "path": "package/avahi/avahi.mk",
    "content": "################################################################################\n#\n# avahi\n#\n################################################################################\n\nAVAHI_VERSION = 0.8\nAVAHI_SITE = https://github.com/lathiat/avahi/releases/download/v$(AVAHI_VERSION)\nAVAHI_LICENSE = LGPL-2.1+\nAVAHI_LICENSE_FILES = LICENSE\nAVAHI_CPE_ID_VENDOR = avahi\nAVAHI_SELINUX_MODULES = avahi\nAVAHI_INSTALL_STAGING = YES\n\n# CVE-2021-26720 is an issue in avahi-daemon-check-dns.sh, which is\n# part of the Debian packaging and not part of upstream avahi\nAVAHI_IGNORE_CVES += CVE-2021-26720\n\n# 0001-Fix-NULL-pointer-crashes-from-175.patch\nAVAHI_IGNORE_CVES += CVE-2021-36217\n\nAVAHI_CONF_ENV = \\\n\tavahi_cv_sys_cxx_works=yes \\\n\tDATADIRNAME=share\n\n# Note: even if we have Gtk2 and Gtk3 support in Buildroot, we\n# explicitly disable support for them, in order to avoid the following\n# circular dependencies:\n#\n#  avahi -> libglade -> libgtk2 -> cups -> avahi\n#  avahi -> libgtk3 -> cups -> avahi\n#\n# Since Gtk2 and Gtk3 in Avahi are only used for some example/demo\n# programs, we decided to disable their support to solve the circular\n# dependency.\nAVAHI_CONF_OPTS = \\\n\t--disable-qt3 \\\n\t--disable-qt4 \\\n\t--disable-qt5 \\\n\t--disable-gtk \\\n\t--disable-gtk3 \\\n\t--disable-gdbm \\\n\t--disable-pygobject \\\n\t--disable-mono \\\n\t--disable-monodoc \\\n\t--disable-stack-protector \\\n\t--disable-introspection \\\n\t--with-distro=none \\\n\t--disable-manpages \\\n\t$(if $(BR2_PACKAGE_AVAHI_AUTOIPD),--enable,--disable)-autoipd \\\n\t--with-avahi-user=avahi \\\n\t--with-avahi-group=avahi \\\n\t--with-autoipd-user=avahi \\\n\t--with-autoipd-group=avahi\n\nAVAHI_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES)\n\nAVAHI_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nAVAHI_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system\nelse\nAVAHI_CONF_OPTS += --with-systemdsystemunitdir=no\nAVAHI_CFLAGS += -DDISABLE_SYSTEMD\nendif\n\nifneq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_AVAHI_AUTOIPD),)\nAVAHI_DEPENDENCIES += libdaemon\nelse\nAVAHI_CONF_OPTS += --disable-libdaemon\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nAVAHI_DEPENDENCIES += libcap\nendif\n\nifeq ($(BR2_PACKAGE_AVAHI_DAEMON),y)\nAVAHI_DEPENDENCIES += expat\nAVAHI_CONF_OPTS += --with-xml=expat\nelse\nAVAHI_CONF_OPTS += --with-xml=none\nendif\n\nifeq ($(BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY),y)\nAVAHI_CONF_OPTS += --enable-compat-libdns_sd\nendif\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nAVAHI_DEPENDENCIES += dbus\nAVAHI_CONF_OPTS += --with-dbus-sys=/usr/share/dbus-1/system.d\nelse\nAVAHI_CONF_OPTS += --disable-dbus\nendif\n\nifeq ($(BR2_PACKAGE_LIBEVENT),y)\nAVAHI_DEPENDENCIES += libevent\nelse\nAVAHI_CONF_OPTS += --disable-libevent\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nAVAHI_DEPENDENCIES += libglib2\nelse\nAVAHI_CONF_OPTS += --disable-glib --disable-gobject\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\nAVAHI_CONF_ENV += \\\n\tam_cv_pathless_PYTHON=python \\\n\tam_cv_path_PYTHON=$(PYTHON_TARGET_BINARY) \\\n\tam_cv_python_version=$(PYTHON_VERSION) \\\n\tam_cv_python_platform=linux2 \\\n\tam_cv_python_pythondir=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \\\n\tam_cv_python_pyexecdir=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \\\n\tpy_cv_mod_socket_=yes\n\nAVAHI_DEPENDENCIES += python\nAVAHI_CONF_OPTS += --enable-python\nelse\nAVAHI_CONF_OPTS += --disable-python\nendif\n\nifeq ($(BR2_PACKAGE_DBUS_PYTHON),y)\nAVAHI_CONF_OPTS += --enable-python-dbus\nAVAHI_CONF_ENV += py_cv_mod_dbus_=yes\nAVAHI_DEPENDENCIES += dbus-python\nelse\nAVAHI_CONF_OPTS += --disable-python-dbus\nendif\n\nAVAHI_CONF_ENV += CFLAGS=\"$(AVAHI_CFLAGS)\"\n\nAVAHI_MAKE_OPTS += LIBS=$(TARGET_NLS_LIBS)\n\ndefine AVAHI_USERS\n\tavahi -1 avahi -1 * - - -\nendef\n\ndefine AVAHI_REMOVE_INITSCRIPT\n\trm -rf $(TARGET_DIR)/etc/init.d/avahi-*\nendef\n\nAVAHI_POST_INSTALL_TARGET_HOOKS += AVAHI_REMOVE_INITSCRIPT\n\nifeq ($(BR2_PACKAGE_AVAHI_AUTOIPD),y)\ndefine AVAHI_INSTALL_AUTOIPD\n\trm -f $(TARGET_DIR)/var/lib/avahi-autoipd\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/var/lib\n\tln -sf /tmp/avahi-autoipd $(TARGET_DIR)/var/lib/avahi-autoipd\nendef\n\ndefine AVAHI_INSTALL_AUTOIPD_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/avahi/S05avahi-setup.sh $(TARGET_DIR)/etc/init.d/S05avahi-setup.sh\nendef\n\nAVAHI_POST_INSTALL_TARGET_HOOKS += AVAHI_INSTALL_AUTOIPD\nendif\n\nifeq ($(BR2_PACKAGE_AVAHI_DAEMON),y)\n\nifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y)\ndefine AVAHI_INSTALL_SYSTEMD_SYSUSERS\n\t$(INSTALL) -D -m 644 package/avahi/avahi_sysusers.conf \\\n\t\t$(TARGET_DIR)/usr/lib/sysusers.d/avahi.conf\nendef\nendif\n\ndefine AVAHI_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/avahi/avahi_tmpfiles.conf \\\n\t\t$(TARGET_DIR)/usr/lib/tmpfiles.d/avahi.conf\n\n\t$(AVAHI_INSTALL_SYSTEMD_SYSUSERS)\nendef\n\ndefine AVAHI_INSTALL_DAEMON_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/avahi/S50avahi-daemon $(TARGET_DIR)/etc/init.d/S50avahi-daemon\nendef\n\nendif\n\ndefine AVAHI_INSTALL_INIT_SYSV\n\t$(AVAHI_INSTALL_AUTOIPD_INIT_SYSV)\n\t$(AVAHI_INSTALL_DAEMON_INIT_SYSV)\nendef\n\nifeq ($(BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY),y)\n# applications expects to be able to #include <dns_sd.h>\ndefine AVAHI_STAGING_INSTALL_LIBDNSSD_LINK\n\tln -sf avahi-compat-libdns_sd/dns_sd.h \\\n\t\t$(STAGING_DIR)/usr/include/dns_sd.h\nendef\n\nAVAHI_POST_INSTALL_STAGING_HOOKS += AVAHI_STAGING_INSTALL_LIBDNSSD_LINK\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/avahi/avahi_sysusers.conf",
    "content": "# sysusers.d snippet for creating the avahi system user automatically\n# at boot on systemd-based systems that ship with an unpopulated\n# /etc. See sysusers.d(5) for details.\n\nu avahi - \"Avahi mDNS/DNS-SD Stack\"\n"
  },
  {
    "path": "package/avahi/avahi_tmpfiles.conf",
    "content": "d /tmp/avahi-autoipd 0755 avahi avahi\n"
  },
  {
    "path": "package/avrdude/Config.in",
    "content": "config BR2_PACKAGE_AVRDUDE\n\tbool \"avrdude\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR # elfutils\n\tdepends on !BR2_STATIC_LIBS # elfutils\n\tdepends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_ELFUTILS\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  avrdude is a programmer for Atmel AVR microcontrollers\n\t  this package provides a version with new linuxspi driver\n\n\t  https://github.com/kcuzner/avrdude\n\nif BR2_PACKAGE_AVRDUDE\n\nconfig BR2_PACKAGE_AVRDUDE_SPI\n\tbool \"SPI support\"\n\tdefault y # Backward compatibility\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6\n\ncomment \"SPI support needs a toolchain w/ linux headers >= 4.6\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6\n\nendif\n\ncomment \"avrdude needs a uClibc or glibc toolchain w/ threads, wchar, dynamic library, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR \\\n\t\t|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)\n"
  },
  {
    "path": "package/avrdude/avrdude.hash",
    "content": "# Locally computed\nsha256  2a09913450c6457c3fe8d43d5141de579d4e57d67e593e7399a4cd3768cc60f9  avrdude-r1450-br2.tar.gz\nsha256  201babc7da198873304a77a30dbfc7ca449c9bba52df2dffa4cca0009dbdfcb2  avrdude/COPYING\n"
  },
  {
    "path": "package/avrdude/avrdude.mk",
    "content": "################################################################################\n#\n# avrdude\n#\n################################################################################\n\nAVRDUDE_VERSION = r1450\nAVRDUDE_SITE_METHOD = svn\nAVRDUDE_SITE = http://svn.savannah.nongnu.org/svn/avrdude/trunk\nAVRDUDE_LICENSE = GPL-2.0+\nAVRDUDE_LICENSE_FILES = avrdude/COPYING\nAVRDUDE_SUBDIR = avrdude\n# Sources coming from svn, without generated configure and Makefile.in\n# files.\nAVRDUDE_AUTORECONF = YES\nAVRDUDE_CONF_OPTS = --enable-linuxgpio\nAVRDUDE_DEPENDENCIES = elfutils libusb libusb-compat ncurses \\\n\thost-flex host-bison\n\nifeq ($(BR2_PACKAGE_AVRDUDE_SPI),y)\nAVRDUDE_CONF_OPTS += --enable-linuxspi\nelse\nAVRDUDE_CONF_OPTS += --disable-linuxspi\nendif\n\nifeq ($(BR2_PACKAGE_LIBFTDI1),y)\nAVRDUDE_DEPENDENCIES += libftdi1\nelse ifeq ($(BR2_PACKAGE_LIBFTDI),y)\nAVRDUDE_DEPENDENCIES += libftdi\nendif\n\n# if /etc/avrdude.conf exists, the installation process creates a\n# backup file, which we do not want in the context of Buildroot.\ndefine AVRDUDE_REMOVE_BACKUP_FILE\n\t$(RM) -f $(TARGET_DIR)/etc/avrdude.conf.bak\nendef\n\nAVRDUDE_POST_INSTALL_TARGET_HOOKS += AVRDUDE_REMOVE_BACKUP_FILE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/avro-c/0001-cmake-Build-failure-without-a-C-compiler-again.patch",
    "content": "From 8f5633a29b083a84876c00b88fba6d3e8dbbf1a8 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 19 Jul 2020 09:35:09 +0200\nSubject: [PATCH] cmake: Build failure without a C++ compiler (again)\n\navro-c fails to build (again) without a C++ compiler because commit\n664c2fc7fba19709c1f974055f9cf4c8a799e108 reverted the change made by\ncommit 414a51fdc1856083bb16851f09a4c61a48796132\n\nFixes:\n - http://autobuild.buildroot.org/results/cfa91db53cf5502cbb6f902d1e7ad6397c8d70fd\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://issues.apache.org/jira/browse/AVRO-2898]\n---\n CMakeLists.txt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 6c8d7aaf..aa923e18 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -17,7 +17,7 @@\n # under the License.\n #\n cmake_minimum_required(VERSION 3.1)\n-project(AvroC)\n+project(AvroC C)\n enable_testing()\n \n set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR})\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/avro-c/Config.in",
    "content": "comment \"avro-c needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\nconfig BR2_PACKAGE_AVRO_C\n\tbool \"avro-c\"\n\tdepends on !BR2_STATIC_LIBS  # Avro unconditionally compiles shared libs\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_JANSSON\n\thelp\n\t  Select this option to install the Avro C language bindings,\n\t  and the command line tools avroappend, avrocat, avromod and\n\t  avropipe.\n\n\t  Apache Avro is a data serialization system.\n\t  Avro provides:\n\t  - Rich data structures.\n\t  - A compact, fast, binary data format.\n\t  - A container file, to store persistent data.\n\t  - Remote procedure call (RPC).\n\t  - Simple integration with dynamic languages.\n\t  - Code generation is not required to read or write data\n\t    files nor to use or implement RPC protocols.\n\t  - Code generation as an optional optimization,\n\t    only worth implementing for statically typed languages.\n\n\t  http://avro.apache.org/\n"
  },
  {
    "path": "package/avro-c/avro-c.hash",
    "content": "# From https://downloads.apache.org/avro/avro-1.10.0/c/avro-c-1.10.0.tar.gz.sha512\nsha512  2e64926b214fd996abf0553572ec6f46b312cf84df17149d1a7e89f4033b63cc34fabef62b98d727799a8a5d452ac9254e275bdea4bf894e9e1e4588bc5dfc9b  avro-c-1.10.0.tar.gz\n\n# License files\nsha256  d62488d6ba17132e92c23c03c80bfedc848267f96ab36489fec860f76cf6819a  LICENSE\n"
  },
  {
    "path": "package/avro-c/avro-c.mk",
    "content": "################################################################################\n#\n# avro-c\n#\n################################################################################\n\nAVRO_C_VERSION = 1.10.0\nAVRO_C_SITE = https://www-eu.apache.org/dist/avro/avro-$(AVRO_C_VERSION)/c\nAVRO_C_LICENSE = Apache-2.0\nAVRO_C_LICENSE_FILES = LICENSE\nAVRO_C_INSTALL_STAGING = YES\nAVRO_C_DEPENDENCIES = host-pkgconf jansson\n\nifeq ($(BR2_PACKAGE_SNAPPY),y)\nAVRO_C_DEPENDENCIES += snappy\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nAVRO_C_DEPENDENCIES += zlib\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nAVRO_C_DEPENDENCIES += xz\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/axel/Config.in",
    "content": "config BR2_PACKAGE_AXEL\n\tbool \"axel\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  HTTP/FTP download accelerator.\n\n\t  https://github.com/axel-download-accelerator/axel/\n\ncomment \"axel needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/axel/axel.hash",
    "content": "sha256  46eb4f10a11c4e50320ae6a034ef03ffe59dc11c3c6542a9867a3e4dc0c4b44e  axel-2.17.10.tar.xz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/axel/axel.mk",
    "content": "################################################################################\n#\n# axel\n#\n################################################################################\n\nAXEL_VERSION = 2.17.10\nAXEL_SITE = https://github.com/axel-download-accelerator/axel/releases/download/v$(AXEL_VERSION)\nAXEL_SOURCE = axel-$(AXEL_VERSION).tar.xz\nAXEL_LICENSE = GPL-2.0+\nAXEL_LICENSE_FILES = COPYING\nAXEL_CPE_ID_VENDOR = axel_project\nAXEL_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES)\n\n# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test\n# provided by autoconf relies on wchar_t.\nAXEL_CONF_OPTS = \\\n\tac_cv_prog_cc_c99=-std=c99 \\\n\tCFLAGS=\"$(TARGET_CFLAGS)\"\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nAXEL_CONF_OPTS += --with-ssl\nAXEL_DEPENDENCIES += openssl\nelse\nAXEL_CONF_OPTS += --without-ssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/axfsutils/axfsutils.hash",
    "content": "# Locally calculated\nsha256  7d8c0febaf6f104c2b179475ea1ee6d361688ad7fa4c98dfdf7395fcff2be685  axfsutils-384a1ea214c8cf8359faba00a12513ee7ae1a9f5.tar.gz\nsha256  1929a1e67d189aa3a24de76255841b33818f7f65944b6e73a1568ba575ab54d5  mkfs.axfs-legacy/COPYING\n"
  },
  {
    "path": "package/axfsutils/axfsutils.mk",
    "content": "################################################################################\n#\n# axfsutils\n#\n################################################################################\n\nAXFSUTILS_VERSION = 384a1ea214c8cf8359faba00a12513ee7ae1a9f5\nAXFSUTILS_SITE = $(call github,jaredeh,axfs,$(AXFSUTILS_VERSION))\nAXFSUTILS_LICENSE = GPL-2.0\nAXFSUTILS_LICENSE_FILES = mkfs.axfs-legacy/COPYING\nHOST_AXFSUTILS_DEPENDENCIES = host-zlib\n\n# The 'new' mkfs.axfs version requires GNUstep which is not a buildroot\n# prerequisite. The 'legacy' one works just as well without that requirement.\ndefine HOST_AXFSUTILS_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)/mkfs.axfs-legacy\nendef\n\ndefine HOST_AXFSUTILS_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/mkfs.axfs-legacy/mkfs.axfs \\\n\t\t$(HOST_DIR)/bin/mkfs.axfs\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/azmq/0001-Conditionally-disable-test-and-doc-builds.patch",
    "content": "From d960f93fb52e373f76cfedbee5f4fb0c5276856a Mon Sep 17 00:00:00 2001\nFrom: RJ Ascani <rj.ascani@gmail.com>\nDate: Thu, 20 Jul 2017 15:53:40 -0700\nSubject: [PATCH] Conditionally disable test and doc builds\n\nSigned-off-by: RJ Ascani <rj.ascani@gmail.com>\n---\n CMakeLists.txt | 12 +++++++++---\n 1 file changed, 9 insertions(+), 3 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 5b5b9cc..97006a4 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -49,7 +49,9 @@ include_directories(${Boost_INCLUDE_DIRS}\n                     ${ZeroMQ_INCLUDE_DIRS}\n                     ${PROJECT_SOURCE_DIR})\n\n-enable_testing()\n+if (BUILD_TESTING)\n+    enable_testing()\n+endif()\n\n macro(add_catch_test name)\n     if (TEST_REPORT_FORMAT)\n@@ -59,8 +61,12 @@ macro(add_catch_test name)\n     endif()\n endmacro()\n\n-add_subdirectory(test)\n-add_subdirectory(doc)\n+if (BUILD_TESTING)\n+    add_subdirectory(test)\n+endif()\n+if (BUILD_DOC)\n+    add_subdirectory(doc)\n+endif()\n\n install(DIRECTORY ${PROJECT_SOURCE_DIR}/azmq\n         DESTINATION include)\n--\n2.13.3\n\n"
  },
  {
    "path": "package/azmq/Config.in",
    "content": "config BR2_PACKAGE_AZMQ\n\tbool \"azmq\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # boost-log\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_USE_WCHAR # boost\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr\n\tselect BR2_PACKAGE_ZEROMQ\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_CHRONO\n\tselect BR2_PACKAGE_BOOST_DATE_TIME\n\tselect BR2_PACKAGE_BOOST_LOG\n\tselect BR2_PACKAGE_BOOST_RANDOM\n\tselect BR2_PACKAGE_BOOST_REGEX\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_THREAD\n\thelp\n\t  This library provides Boost Asio style bindings for ZeroMQ.\n\n\t  https://github.com/zeromq/azmq\n\ncomment \"azmq needs a toolchain w/ C++11, wchar and NPTL\"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \\\n\t\t&& BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS_NPTL)\n\ncomment \"azmq needs exception_ptr\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/azmq/azmq.hash",
    "content": "# Locally calculated\n# https://github.com/zeromq/azmq/archive/v1.0.2.tar.gz\nsha256 25fa8b07756cffae95e25a55c7ea42efe02e8cd797552201aa771dd69cfc8fbf  azmq-1.0.2.tar.gz\nsha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566  LICENSE-BOOST_1_0\n"
  },
  {
    "path": "package/azmq/azmq.mk",
    "content": "################################################################################\n#\n# azmq\n#\n################################################################################\n\nAZMQ_VERSION = 1.0.2\nAZMQ_SITE = $(call github,zeromq,azmq,v$(AZMQ_VERSION))\nAZMQ_DEPENDENCIES = boost zeromq\nAZMQ_LICENSE = BSL-1.0\nAZMQ_LICENSE_FILES = LICENSE-BOOST_1_0\n\n# AZMQ is a header only library, so it does not need to be installed on the\n# target.\nAZMQ_INSTALL_STAGING = YES\nAZMQ_INSTALL_TARGET = NO\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/azure-iot-sdk-c/0001-hmac-c-fix-mismatching-function-prototype.patch",
    "content": "From 3a7997af72e7a4f70109d1639e6725b39046443e Mon Sep 17 00:00:00 2001\nFrom: Francesco Giancane <30423178+fgiancane8@users.noreply.github.com>\nDate: Fri, 2 Jul 2021 20:47:38 +0200\nSubject: [PATCH] hmac.c: fix mismatching function prototype (#537)\n\nThe reported function raises a warning when compilers assert the flag\n`-Warray-parameter=`, signaling that an array-type argument was promoted\nto a pointer-type argument.\n\nWhile in practice in most C implementations this is correct, fixing the\nwarning (and, in this case, indicating the maximum size for the array)\nwould represent a best-practice for finding out-of-bound accesses or\nidentifying wrongly-sized arrays passed in the function.\n\nSigned-off-by: Francesco Giancane <francesco.giancane@accenture.com>\n[Retrieved from:\nhttps://github.com/Azure/azure-c-shared-utility/commit/3a7997af72e7a4f70109d1639e6725b39046443e]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/hmac.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/hmac.c b/src/hmac.c\nindex 53f2411f8..160af9d2f 100644\n--- a/c-utility/src/hmac.c\n+++ b/c-utility/src/hmac.c\n@@ -208,7 +208,7 @@ int hmacFinalBits(HMACContext *ctx,\n *   sha Error Code.\n *\n */\n-int hmacResult(HMACContext *ctx, uint8_t *digest)\n+int hmacResult(HMACContext *ctx, uint8_t digest[USHAMaxHashSize])\n {\n     if (!ctx) return shaNull;\n \n"
  },
  {
    "path": "package/azure-iot-sdk-c/Config.in",
    "content": "config BR2_PACKAGE_AZURE_IOT_SDK_C\n\tbool \"azure-iot-sdk-c\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Microsoft Azure IoT Hub device SDK for C is used\n\t  to connect devices running C code to Azure IoT Hub.\n\n\t  https://github.com/Azure/azure-iot-sdk-c\n\ncomment \"azure-iot-sdk-c needs a toolchain w/ C++, NPTL and wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/azure-iot-sdk-c/azure-iot-sdk-c.hash",
    "content": "# Locally computed:\nsha256  987b469aa76d6c81e5dbcd62e81f4ece0620770930cf65722754c76aedd6049f  azure-iot-sdk-c-LTS_01_2021_Ref01-br1.tar.gz\n\n# Hash for license files:\nsha256  be2e9913fad9ff33607287c728f392579e2a6cc83e51b203ef6274c41db02ee7  LICENSE\n"
  },
  {
    "path": "package/azure-iot-sdk-c/azure-iot-sdk-c.mk",
    "content": "################################################################################\n#\n# azure-iot-sdk-c\n#\n################################################################################\n\nAZURE_IOT_SDK_C_VERSION = LTS_01_2021_Ref01\nAZURE_IOT_SDK_C_SITE = https://github.com/Azure/azure-iot-sdk-c\nAZURE_IOT_SDK_C_SITE_METHOD = git\nAZURE_IOT_SDK_C_GIT_SUBMODULES = YES\nAZURE_IOT_SDK_C_LICENSE = MIT\nAZURE_IOT_SDK_C_LICENSE_FILES = LICENSE\nAZURE_IOT_SDK_C_INSTALL_STAGING = YES\nAZURE_IOT_SDK_C_DEPENDENCIES = libxml2 openssl libcurl util-linux\nAZURE_IOT_SDK_C_CONF_OPTS = -Dskip_samples=ON\n\n# The project only supports building one kind of library.\n# Further the install target installs the wrong files, so we do it here:\nifeq ($(BR2_STATIC_LIBS),y)\nAZURE_IOT_SDK_C_LIBS += \\\n\tuamqp/libuamqp.a \\\n\tc-utility/libaziotsharedutil.a \\\n\tiothub_client/libiothub_client.a \\\n\tiothub_client/libiothub_client_mqtt_ws_transport.a \\\n\tiothub_client/libiothub_client_amqp_ws_transport.a \\\n\tiothub_client/libiothub_client_http_transport.a \\\n\tiothub_client/libiothub_client_amqp_transport.a \\\n\tiothub_client/libiothub_client_mqtt_transport.a \\\n\tiothub_service_client/libiothub_service_client.a \\\n\tserializer/libserializer.a \\\n\tumqtt/libumqtt.a \\\n\tdeps/uhttp/libuhttp.a \\\n\tdeps/umock-c/libumock_c.a \\\n\tlibparson.a\nelse\nAZURE_IOT_SDK_C_LIBS += \\\n\tuamqp/libuamqp.so \\\n\tc-utility/libaziotsharedutil.so \\\n\tiothub_client/libiothub_client.so \\\n\tiothub_client/libiothub_client_mqtt_ws_transport.so \\\n\tiothub_client/libiothub_client_amqp_ws_transport.so \\\n\tiothub_client/libiothub_client_http_transport.so \\\n\tiothub_client/libiothub_client_amqp_transport.so \\\n\tiothub_client/libiothub_client_mqtt_transport.so \\\n\tiothub_service_client/libiothub_service_client.so \\\n\tserializer/libserializer.so \\\n\tumqtt/libumqtt.so.1.1.12 \\\n\tdeps/uhttp/libuhttp.so \\\n\tdeps/umock-c/libumock_c.so \\\n\tlibparson.so\n\ndefine AZURE_IOT_SDK_C_CREATE_SYMLINKS\n\tln -sf libumqtt.so.1.1.12 $(1)/usr/lib/libumqtt.so.1\n\tln -sf libumqtt.so.1.1.12 $(1)/usr/lib/libumqtt.so\nendef\nendif\n\ndefine AZURE_IOT_SDK_C_INSTALL_LIBS\n\t$(foreach l,$(AZURE_IOT_SDK_C_LIBS), \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$(l) $(1)/usr/lib/$(notdir $(l))\n\t)\n\t$(call AZURE_IOT_SDK_C_CREATE_SYMLINKS,$(1))\nendef\n\ndefine AZURE_IOT_SDK_C_INSTALL_STAGING_CMDS\n\t$(call AZURE_IOT_SDK_C_INSTALL_LIBS,$(STAGING_DIR))\n\tcp -a $(@D)/c-utility/inc/* $(STAGING_DIR)/usr/include/\n\tcp -a $(@D)/iothub_client/inc/* $(STAGING_DIR)/usr/include/\nendef\n\ndefine AZURE_IOT_SDK_C_INSTALL_TARGET_CMDS\n\t$(call AZURE_IOT_SDK_C_INSTALL_LIBS,$(TARGET_DIR))\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/b43-firmware/Config.in",
    "content": "config BR2_PACKAGE_B43_FIRMWARE\n\tbool \"b43-firmware\"\n\thelp\n\t  Firmware for the Broadcom Wifi devices supported by the b43\n\t  kernel driver.\n\nif BR2_PACKAGE_B43_FIRMWARE\n\nchoice\n\tprompt \"Kernel version\"\n\tdefault BR2_PACKAGE_B43_FIRMWARE_KERNEL_AFTER_3_2\n\thelp\n\t  Select the kernel version you're using. The b43 driver in\n\t  kernel >= 3.2 need a different firmware than the b43 drivers\n\t  from kernel < 3.2.\n\nconfig BR2_PACKAGE_B43_FIRMWARE_KERNEL_AFTER_3_2\n\tbool \">= 3.2\"\n\nconfig BR2_PACKAGE_B43_FIRMWARE_KERNEL_BEFORE_3_2\n\tbool \"< 3.2\"\n\nendchoice\n\nendif\n"
  },
  {
    "path": "package/b43-firmware/b43-firmware.hash",
    "content": "# Locally computed:\nsha256 f1e7067aac5b62b67b8b6e4c517990277804339ac16065eb13c731ff909ae46f broadcom-wl-5.100.138.tar.bz2\nsha256 26a8c370f48fc129d0731cfd751c36cae1419b0bc8ca35781126744e60eae009 broadcom-wl-5.10.56.27.3_mipsel.tar.bz2\n"
  },
  {
    "path": "package/b43-firmware/b43-firmware.mk",
    "content": "################################################################################\n#\n# b43-firmware\n#\n################################################################################\n\nifeq ($(BR2_PACKAGE_B43_FIRMWARE_KERNEL_AFTER_3_2),y)\nB43_FIRMWARE_VERSION = 5.100.138\nB43_FIRMWARE_SITE = http://www.lwfinger.com/b43-firmware\nB43_FIRMWARE_SOURCE = broadcom-wl-$(B43_FIRMWARE_VERSION).tar.bz2\nB43_FIRMWARE_DRIVER_FILE = linux/wl_apsta.o\nelse ifeq ($(BR2_PACKAGE_B43_FIRMWARE_KERNEL_BEFORE_3_2),y)\nB43_FIRMWARE_VERSION = 5.10.56.27.3\nB43_FIRMWARE_SITE = http://mirror2.openwrt.org/sources\nB43_FIRMWARE_SOURCE = broadcom-wl-$(B43_FIRMWARE_VERSION)_mipsel.tar.bz2\nB43_FIRMWARE_DRIVER_FILE = driver/wl_apsta/wl_prebuilt.o\nendif\n\nB43_FIRMWARE_LICENSE = PROPRIETARY\nB43_FIRMWARE_REDISTRIBUTE = NO\n\nB43_FIRMWARE_DEPENDENCIES = host-b43-fwcutter\n\ndefine B43_FIRMWARE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/lib/firmware/\n\t$(HOST_DIR)/bin/b43-fwcutter -w $(TARGET_DIR)/lib/firmware/ $(@D)/$(B43_FIRMWARE_DRIVER_FILE)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/b43-fwcutter/b43-fwcutter.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\td6ea85310df6ae08e7f7e46d8b975e17fc867145ee249307413cfbe15d7121ce\tb43-fwcutter-019.tar.bz2\n\n# Hash for license file\nsha256\t6af9fc424d57f29b7e59b35e52d4a91aca80304506275f2c0c076317fc6eb583\tCOPYING\n"
  },
  {
    "path": "package/b43-fwcutter/b43-fwcutter.mk",
    "content": "################################################################################\n#\n# b43-fwcutter\n#\n################################################################################\n\nB43_FWCUTTER_VERSION = 019\nB43_FWCUTTER_SITE = http://bues.ch/b43/fwcutter\nB43_FWCUTTER_SOURCE = b43-fwcutter-$(B43_FWCUTTER_VERSION).tar.bz2\nB43_FWCUTTER_LICENSE = BSD-2-Clause\nB43_FWCUTTER_LICENSE_FILES = COPYING\n\ndefine HOST_B43_FWCUTTER_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_B43_FWCUTTER_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/b43-fwcutter $(HOST_DIR)/bin/b43-fwcutter\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/babeld/Config.in",
    "content": "config BR2_PACKAGE_BABELD\n\tbool \"babeld\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Babel is a loop-avoiding distance-vector routing protocol for\n\t  IPv6 and IPv4 with fast convergence properties.\n\n\t  http://www.pps.univ-paris-diderot.fr/~jch/software/babel/\n"
  },
  {
    "path": "package/babeld/S50babeld",
    "content": "#!/bin/sh\n#\n# Starts babeld.\n#\n\n# Allow a few customizations from a config file\ntest -r /etc/default/babeld && . /etc/default/babeld\n\nstart() {\n\tprintf \"Starting babeld: \"\n\tstart-stop-daemon -S -q -p /run/babeld.pid \\\n\t\t--exec /usr/sbin/babeld -- $DAEMON_ARGS\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping babeld: \"\n\tstart-stop-daemon -K -q -p /run/babeld.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/babeld/babeld.hash",
    "content": "# Locally computed\nsha256  154f00e0a8bf35d6ea9028886c3dc5c3c342dd1a367df55ef29a547b75867f07  babeld-1.9.2.tar.gz\nsha256  b415c41292cedef6c97b243609e50552887c29343566c639f23282d31efd2afd  LICENCE\n"
  },
  {
    "path": "package/babeld/babeld.mk",
    "content": "################################################################################\n#\n# babeld\n#\n################################################################################\n\nBABELD_VERSION = 1.9.2\nBABELD_SITE = http://www.pps.univ-paris-diderot.fr/~jch/software/files\nBABELD_LICENSE = MIT\nBABELD_LICENSE_FILES = LICENCE\n\ndefine BABELD_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine BABELD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/babeld $(TARGET_DIR)/usr/sbin/babeld\nendef\n\ndefine BABELD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/babeld/S50babeld \\\n\t\t$(TARGET_DIR)/etc/init.d/S50babeld\nendef\n\ndefine BABELD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/babeld/babeld.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/babeld.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/babeld/babeld.service",
    "content": "[Unit]\nDescription=Babel daemon\n\n[Service]\nEnvironmentFile=-/etc/default/babeld\nExecStart=/usr/sbin/babeld $DAEMON_ARGS\nExecReload=/bin/kill -HUP $MAINPID\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/babeltrace2/0001-configure-simplify-warning-flags-detection.patch",
    "content": "From 28ba44ad9ca14153e96c94a9100423ea224c1af3 Mon Sep 17 00:00:00 2001\nFrom: Simon Marchi <simon.marchi@efficios.com>\nDate: Tue, 18 Feb 2020 13:14:22 -0500\nSubject: [PATCH] configure: simplify warning flags detection\n\nWe currently use the AX_COMPILER_FLAGS macro to detect the warning flags\nthat the current compiler supports.  It works, but is quite invasive.\nIt unconditionally enables a bunch of warnings we don't want, which\nforces us to disable them with many -Wno-foo switches.\n\nInstead of using AX_COMPILER_FLAGS, we can use the slightly lower lever\nmacro AX_APPEND_COMPILE_FLAGS to achieve our goal of detecting which\nwarning flags are supported.  This is what we ended up using in\nlttng-tools (a completely unrelated project, but that has a suspiciously\nhigh ratio of contributors in common with Babeltrace).\n\nI looked in our git history to see which warning flags were mentioned in\ncommit messages.  I have added the flags that did find actual problems\nand are not enabled by default to the AX_APPEND_COMPILE_FLAGS invocation.\nI have also added the flags that AX_COMPILER_FLAGS did provide, which we\ndidn't need to disable.\n\nThe --{enable,disable}-Werror flag is added using an explicit\nAC_ARG_ENABLE.  In lttng-tools, it was decided to _not_ have -Werror by\ndefault, so I suggest we do the same in Babeltrace, for consistency\n(although it saddens me very much).  Developers who want to build with\n-Werror will need to pass --enable-Werror.\n\nNote that with this patch, we lose the following configure switch, that\nis provided by AX_COMPILER_FLAGS:\n\n  --enable-compile-warnings=[no/yes/error]\n\nChange-Id: If968f7385a7f5c48d27f402c76bc26241a8f505a\nSigned-off-by: Simon Marchi <simon.marchi@efficios.com>\nReviewed-on: https://review.lttng.org/c/babeltrace/+/3209\nTested-by: jenkins <jenkins@lttng.org>\nReviewed-by: Michael Jeanson <mjeanson@efficios.com>\n\n[Retrieved from:\nhttps://github.com/efficios/babeltrace/commit/28ba44ad9ca14153e96c94a9100423ea224c1af3]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac                    |  74 +++++++++------\n m4/ax_compiler_flags.m4         | 158 -------------------------------\n m4/ax_compiler_flags_cflags.m4  | 161 --------------------------------\n m4/ax_compiler_flags_gir.m4     |  60 ------------\n m4/ax_compiler_flags_ldflags.m4 | 111 ----------------------\n 5 files changed, 46 insertions(+), 518 deletions(-)\n delete mode 100644 m4/ax_compiler_flags.m4\n delete mode 100644 m4/ax_compiler_flags_cflags.m4\n delete mode 100644 m4/ax_compiler_flags_gir.m4\n delete mode 100644 m4/ax_compiler_flags_ldflags.m4\n\ndiff --git a/configure.ac b/configure.ac\nindex 055fba101..7ebcf2ad4 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -660,25 +660,35 @@ target.\n CFLAGS=${save_CFLAGS}\n \n # Detect C and LD warning flags supported by the compiler.\n-AX_COMPILER_FLAGS(\n-\t[WARN_CFLAGS], dnl CFLAGS variable name\n-\t[WARN_LDFLAGS], dnl LDFLAGS variable name (unused for now)\n-\t[], dnl is-release\n-\t[], dnl Extra base CFLAGS\n-\t[ dnl Extra \"yes\" CFLAGS\n-\t\tdnl Disable these flags, either because we don't want them\n-\t\tdnl or because we want them but are not ready to enable them\n-\t\tdnl yet.\n-\t\t-Wno-sign-compare dnl\n-\t\t-Wno-inline dnl\n-\t\t-Wno-declaration-after-statement dnl\n-\t\t-Wno-switch-enum dnl\n-\t\t-Wno-switch-default dnl\n-\t\t-Wno-packed dnl\n-\t\t-Wno-pointer-arith dnl\n+\n+# Detect warning flags supported by the compiler, append them to WARN_CFLAGS.\n+#\n+# Pass -Werror as an extra flag during the test: this is needed to make the\n+# -Wunknown-warning-option diagnostic fatal with clang.\n+AX_APPEND_COMPILE_FLAGS([ dnl\n+\t\t-Wall dnl\n+\t\t-Wextra dnl\n+\t\t-Wstrict-prototypes dnl\n+\t\t-Wmissing-prototypes dnl\n+\t\t-Wmissing-declarations dnl\n+\t\t-Wnull-dereference dnl\n+\t\t-Wundef dnl\n+\t\t-Wredundant-decls dnl\n+\t\t-Wshadow dnl\n+\t\t-Wjump-misses-init dnl\n+\t\t-Wtautological-constant-out-of-range-compare dnl\n+\t\t-Wnested-externs dnl\n+\t\t-Wwrite-strings dnl\n+\t\t-Wformat=2 dnl\n \t\t-Wno-format-nonliteral dnl\n-\t\t-Wno-double-promotion dnl\n-\t\t-Wno-cast-align dnl\n+\t\t-Wstrict-aliasing dnl\n+\t\t-Wmissing-noreturn dnl\n+\t\t-Winit-self dnl\n+\t\t-Wduplicated-cond dnl\n+\t\t-Wduplicated-branches dnl\n+\t\t-Wlogical-op dnl\n+\t\t-Wno-unused-parameter dnl\n+\t\t-Wno-sign-compare dnl\n \t\tdnl\n \t\tdnl Some versions of SWIG (like 3.0.12) generate code that produces\n \t\tdnl -Wcast-function-type warnings.  This warning is present in gcc >= 8.  This\n@@ -692,24 +702,32 @@ AX_COMPILER_FLAGS(\n \t\tdnl\n \t\tdnl Ref: https://github.com/swig/swig/issues/1259\n \t\t-Wno-cast-function-type dnl\n-\t])\n-\n-# CFLAGS from AX_COMPILER_FLAGS.\n-AM_CFLAGS=\"${AM_CFLAGS} ${WARN_CFLAGS}\"\n+\t\t-Wno-missing-field-initializers dnl\n+\t],\n+\t[WARN_CFLAGS],\n+\t[-Werror])\n+\n+# When given, add -Werror to WARN_CFLAGS.\n+AC_ARG_ENABLE([Werror],\n+\t[AS_HELP_STRING([--enable-Werror], [Treat compiler warnings as errors.])]\n+)\n+AS_IF([test \"x$enable_Werror\" = \"xyes\"],\n+\t[WARN_CFLAGS=\"${WARN_CFLAGS} -Werror\"]\n+)\n \n-# The test used in AX_COMPILER_FLAGS, generated using AC_LANG_PROGRAM, is\n+# The test used in AX_APPEND_COMPILE_FLAGS, generated using AC_LANG_PROGRAM, is\n # written in such a way that it triggers a -Wold-style-definition warning.  So\n-# if the user has -Werror in their CFLAGS, that warning flag will end up\n-# disabled, because the test program will not build.\n+# this warning always ends up disabled if we put it there, because the test\n+# program does not build.\n #\n # Enable it here unconditionally.  It is supported by GCC >= 4.8 and by Clang\n # (it is accepted for compatibility although it has no effect), and there is\n # not reason to not want it.\n \n-AM_CFLAGS=\"${AM_CFLAGS} -Wold-style-definition\"\n+WARN_CFLAGS=\"${WARN_CFLAGS} -Wold-style-definition\"\n \n-# We want this one to always be an error.\n-AM_CFLAGS=\"${AM_CFLAGS} -Werror=implicit-function-declaration\"\n+# CFLAGS from AX_APPEND_COMPILE_FLAGS.\n+AM_CFLAGS=\"${AM_CFLAGS} ${WARN_CFLAGS}\"\n \n # Done for AM_CFLAGS.\n AC_SUBST(AM_CFLAGS)\ndiff --git a/m4/ax_compiler_flags.m4 b/m4/ax_compiler_flags.m4\ndeleted file mode 100644\nindex ddb0456c4..000000000\n--- a/m4/ax_compiler_flags.m4\n+++ /dev/null\n@@ -1,158 +0,0 @@\n-# ===========================================================================\n-#    https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html\n-# ===========================================================================\n-#\n-# SYNOPSIS\n-#\n-#   AX_COMPILER_FLAGS([CFLAGS-VARIABLE], [LDFLAGS-VARIABLE], [IS-RELEASE], [EXTRA-BASE-CFLAGS], [EXTRA-YES-CFLAGS], [UNUSED], [UNUSED], [UNUSED], [EXTRA-BASE-LDFLAGS], [EXTRA-YES-LDFLAGS], [UNUSED], [UNUSED], [UNUSED])\n-#\n-# DESCRIPTION\n-#\n-#   Check for the presence of an --enable-compile-warnings option to\n-#   configure, defaulting to \"error\" in normal operation, or \"yes\" if\n-#   IS-RELEASE is equal to \"yes\".  Return the value in the variable\n-#   $ax_enable_compile_warnings.\n-#\n-#   Depending on the value of --enable-compile-warnings, different compiler\n-#   warnings are checked to see if they work with the current compiler and,\n-#   if so, are appended to CFLAGS-VARIABLE and LDFLAGS-VARIABLE.  This\n-#   allows a consistent set of baseline compiler warnings to be used across\n-#   a code base, irrespective of any warnings enabled locally by individual\n-#   developers.  By standardising the warnings used by all developers of a\n-#   project, the project can commit to a zero-warnings policy, using -Werror\n-#   to prevent compilation if new warnings are introduced.  This makes\n-#   catching bugs which are flagged by warnings a lot easier.\n-#\n-#   By providing a consistent --enable-compile-warnings argument across all\n-#   projects using this macro, continuous integration systems can easily be\n-#   configured the same for all projects.  Automated systems or build\n-#   systems aimed at beginners may want to pass the --disable-Werror\n-#   argument to unconditionally prevent warnings being fatal.\n-#\n-#   --enable-compile-warnings can take the values:\n-#\n-#    * no:      Base compiler warnings only; not even -Wall.\n-#    * yes:     The above, plus a broad range of useful warnings.\n-#    * error:   The above, plus -Werror so that all warnings are fatal.\n-#               Use --disable-Werror to override this and disable fatal\n-#               warnings.\n-#\n-#   The set of base and enabled flags can be augmented using the\n-#   EXTRA-*-CFLAGS and EXTRA-*-LDFLAGS variables, which are tested and\n-#   appended to the output variable if --enable-compile-warnings is not\n-#   \"no\". Flags should not be disabled using these arguments, as the entire\n-#   point of AX_COMPILER_FLAGS is to enforce a consistent set of useful\n-#   compiler warnings on code, using warnings which have been chosen for low\n-#   false positive rates.  If a compiler emits false positives for a\n-#   warning, a #pragma should be used in the code to disable the warning\n-#   locally. See:\n-#\n-#     https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas\n-#\n-#   The EXTRA-* variables should only be used to supply extra warning flags,\n-#   and not general purpose compiler flags, as they are controlled by\n-#   configure options such as --disable-Werror.\n-#\n-#   IS-RELEASE can be used to disable -Werror when making a release, which\n-#   is useful for those hairy moments when you just want to get the release\n-#   done as quickly as possible.  Set it to \"yes\" to disable -Werror. By\n-#   default, it uses the value of $ax_is_release, so if you are using the\n-#   AX_IS_RELEASE macro, there is no need to pass this parameter. For\n-#   example:\n-#\n-#     AX_IS_RELEASE([git-directory])\n-#     AX_COMPILER_FLAGS()\n-#\n-#   CFLAGS-VARIABLE defaults to WARN_CFLAGS, and LDFLAGS-VARIABLE defaults\n-#   to WARN_LDFLAGS.  Both variables are AC_SUBST-ed by this macro, but must\n-#   be manually added to the CFLAGS and LDFLAGS variables for each target in\n-#   the code base.\n-#\n-#   If C++ language support is enabled with AC_PROG_CXX, which must occur\n-#   before this macro in configure.ac, warning flags for the C++ compiler\n-#   are AC_SUBST-ed as WARN_CXXFLAGS, and must be manually added to the\n-#   CXXFLAGS variables for each target in the code base.  EXTRA-*-CFLAGS can\n-#   be used to augment the base and enabled flags.\n-#\n-#   Warning flags for g-ir-scanner (from GObject Introspection) are\n-#   AC_SUBST-ed as WARN_SCANNERFLAGS.  This variable must be manually added\n-#   to the SCANNERFLAGS variable for each GIR target in the code base.  If\n-#   extra g-ir-scanner flags need to be enabled, the AX_COMPILER_FLAGS_GIR\n-#   macro must be invoked manually.\n-#\n-#   AX_COMPILER_FLAGS may add support for other tools in future, in addition\n-#   to the compiler and linker.  No extra EXTRA-* variables will be added\n-#   for those tools, and all extra support will still use the single\n-#   --enable-compile-warnings configure option.  For finer grained control\n-#   over the flags for individual tools, use AX_COMPILER_FLAGS_CFLAGS,\n-#   AX_COMPILER_FLAGS_LDFLAGS and AX_COMPILER_FLAGS_* for new tools.\n-#\n-#   The UNUSED variables date from a previous version of this macro, and are\n-#   automatically appended to the preceding non-UNUSED variable. They should\n-#   be left empty in new uses of the macro.\n-#\n-# LICENSE\n-#\n-#   Copyright (c) 2014, 2015 Philip Withnall <philip@tecnocode.co.uk>\n-#   Copyright (c) 2015 David King <amigadave@amigadave.com>\n-#\n-#   Copying and distribution of this file, with or without modification, are\n-#   permitted in any medium without royalty provided the copyright notice\n-#   and this notice are preserved.  This file is offered as-is, without any\n-#   warranty.\n-\n-#serial 14\n-\n-# _AX_COMPILER_FLAGS_LANG([LANGNAME])\n-m4_defun([_AX_COMPILER_FLAGS_LANG],\n-[m4_ifdef([_AX_COMPILER_FLAGS_LANG_]$1[_enabled], [],\n-          [m4_define([_AX_COMPILER_FLAGS_LANG_]$1[_enabled], [])dnl\n-           AX_REQUIRE_DEFINED([AX_COMPILER_FLAGS_]$1[FLAGS])])dnl\n-])\n-\n-AC_DEFUN([AX_COMPILER_FLAGS],[\n-    # C support is enabled by default.\n-    _AX_COMPILER_FLAGS_LANG([C])\n-    # Only enable C++ support if AC_PROG_CXX is called. The redefinition of\n-    # AC_PROG_CXX is so that a fatal error is emitted if this macro is called\n-    # before AC_PROG_CXX, which would otherwise cause no C++ warnings to be\n-    # checked.\n-    AC_PROVIDE_IFELSE([AC_PROG_CXX],\n-                      [_AX_COMPILER_FLAGS_LANG([CXX])],\n-                      [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AX_COMPILER_FLAGS_LANG([CXX])])])\n-    AX_REQUIRE_DEFINED([AX_COMPILER_FLAGS_LDFLAGS])\n-\n-    # Default value for IS-RELEASE is $ax_is_release\n-    ax_compiler_flags_is_release=m4_tolower(m4_normalize(ifelse([$3],,\n-                                                                [$ax_is_release],\n-                                                                [$3])))\n-\n-    AC_ARG_ENABLE([compile-warnings],\n-                  AS_HELP_STRING([--enable-compile-warnings=@<:@no/yes/error@:>@],\n-                                 [Enable compiler warnings and errors]),,\n-                  [AS_IF([test \"$ax_compiler_flags_is_release\" = \"yes\"],\n-                         [enable_compile_warnings=\"yes\"],\n-                         [enable_compile_warnings=\"error\"])])\n-    AC_ARG_ENABLE([Werror],\n-                  AS_HELP_STRING([--disable-Werror],\n-                                 [Unconditionally make all compiler warnings non-fatal]),,\n-                  [enable_Werror=maybe])\n-\n-    # Return the user's chosen warning level\n-    AS_IF([test \"$enable_Werror\" = \"no\" -a \\\n-                \"$enable_compile_warnings\" = \"error\"],[\n-        enable_compile_warnings=\"yes\"\n-    ])\n-\n-    ax_enable_compile_warnings=$enable_compile_warnings\n-\n-    AX_COMPILER_FLAGS_CFLAGS([$1],[$ax_compiler_flags_is_release],\n-                             [$4],[$5 $6 $7 $8])\n-    m4_ifdef([_AX_COMPILER_FLAGS_LANG_CXX_enabled],\n-             [AX_COMPILER_FLAGS_CXXFLAGS([WARN_CXXFLAGS],\n-                                         [$ax_compiler_flags_is_release],\n-                                         [$4],[$5 $6 $7 $8])])\n-    AX_COMPILER_FLAGS_LDFLAGS([$2],[$ax_compiler_flags_is_release],\n-                              [$9],[$10 $11 $12 $13])\n-    AX_COMPILER_FLAGS_GIR([WARN_SCANNERFLAGS],[$ax_compiler_flags_is_release])\n-])dnl AX_COMPILER_FLAGS\ndiff --git a/m4/ax_compiler_flags_cflags.m4 b/m4/ax_compiler_flags_cflags.m4\ndeleted file mode 100644\nindex 916f91837..000000000\n--- a/m4/ax_compiler_flags_cflags.m4\n+++ /dev/null\n@@ -1,161 +0,0 @@\n-# =============================================================================\n-#  https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_cflags.html\n-# =============================================================================\n-#\n-# SYNOPSIS\n-#\n-#   AX_COMPILER_FLAGS_CFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])\n-#\n-# DESCRIPTION\n-#\n-#   Add warning flags for the C compiler to VARIABLE, which defaults to\n-#   WARN_CFLAGS.  VARIABLE is AC_SUBST-ed by this macro, but must be\n-#   manually added to the CFLAGS variable for each target in the code base.\n-#\n-#   This macro depends on the environment set up by AX_COMPILER_FLAGS.\n-#   Specifically, it uses the value of $ax_enable_compile_warnings to decide\n-#   which flags to enable.\n-#\n-# LICENSE\n-#\n-#   Copyright (c) 2014, 2015 Philip Withnall <philip@tecnocode.co.uk>\n-#   Copyright (c) 2017, 2018 Reini Urban <rurban@cpan.org>\n-#\n-#   Copying and distribution of this file, with or without modification, are\n-#   permitted in any medium without royalty provided the copyright notice\n-#   and this notice are preserved.  This file is offered as-is, without any\n-#   warranty.\n-\n-#serial 17\n-\n-AC_DEFUN([AX_COMPILER_FLAGS_CFLAGS],[\n-    AC_REQUIRE([AC_PROG_SED])\n-    AX_REQUIRE_DEFINED([AX_APPEND_COMPILE_FLAGS])\n-    AX_REQUIRE_DEFINED([AX_APPEND_FLAG])\n-    AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])\n-\n-    # Variable names\n-    m4_define([ax_warn_cflags_variable],\n-              [m4_normalize(ifelse([$1],,[WARN_CFLAGS],[$1]))])\n-\n-    AC_LANG_PUSH([C])\n-\n-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([\n-      [#ifndef __cplusplus\n-       #error \"no C++\"\n-       #endif]])],\n-      [ax_compiler_cxx=yes;],\n-      [ax_compiler_cxx=no;])\n-\n-    # Always pass -Werror=unknown-warning-option to get Clang to fail on bad\n-    # flags, otherwise they are always appended to the warn_cflags variable, and\n-    # Clang warns on them for every compilation unit.\n-    # If this is passed to GCC, it will explode, so the flag must be enabled\n-    # conditionally.\n-    AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],[\n-        ax_compiler_flags_test=\"-Werror=unknown-warning-option\"\n-    ],[\n-        ax_compiler_flags_test=\"\"\n-    ])\n-\n-    # Check that -Wno-suggest-attribute=format is supported\n-    AX_CHECK_COMPILE_FLAG([-Wno-suggest-attribute=format],[\n-        ax_compiler_no_suggest_attribute_flags=\"-Wno-suggest-attribute=format\"\n-    ],[\n-        ax_compiler_no_suggest_attribute_flags=\"\"\n-    ])\n-\n-    # Base flags\n-    AX_APPEND_COMPILE_FLAGS([ dnl\n-        -fno-strict-aliasing dnl\n-        $3 dnl\n-    ],ax_warn_cflags_variable,[$ax_compiler_flags_test])\n-\n-    AS_IF([test \"$ax_enable_compile_warnings\" != \"no\"],[\n-        if test \"$ax_compiler_cxx\" = \"no\" ; then\n-            # C-only flags. Warn in C++\n-            AX_APPEND_COMPILE_FLAGS([ dnl\n-                -Wnested-externs dnl\n-                -Wmissing-prototypes dnl\n-                -Wstrict-prototypes dnl\n-                -Wdeclaration-after-statement dnl\n-                -Wimplicit-function-declaration dnl\n-                -Wold-style-definition dnl\n-                -Wjump-misses-init dnl\n-            ],ax_warn_cflags_variable,[$ax_compiler_flags_test])\n-        fi\n-\n-        # \"yes\" flags\n-        AX_APPEND_COMPILE_FLAGS([ dnl\n-            -Wall dnl\n-            -Wextra dnl\n-            -Wundef dnl\n-            -Wwrite-strings dnl\n-            -Wpointer-arith dnl\n-            -Wmissing-declarations dnl\n-            -Wredundant-decls dnl\n-            -Wno-unused-parameter dnl\n-            -Wno-missing-field-initializers dnl\n-            -Wformat=2 dnl\n-            -Wcast-align dnl\n-            -Wformat-nonliteral dnl\n-            -Wformat-security dnl\n-            -Wsign-compare dnl\n-            -Wstrict-aliasing dnl\n-            -Wshadow dnl\n-            -Winline dnl\n-            -Wpacked dnl\n-            -Wmissing-format-attribute dnl\n-            -Wmissing-noreturn dnl\n-            -Winit-self dnl\n-            -Wredundant-decls dnl\n-            -Wmissing-include-dirs dnl\n-            -Wunused-but-set-variable dnl\n-            -Warray-bounds dnl\n-            -Wreturn-type dnl\n-            -Wswitch-enum dnl\n-            -Wswitch-default dnl\n-            -Wduplicated-cond dnl\n-            -Wduplicated-branches dnl\n-            -Wlogical-op dnl\n-            -Wrestrict dnl\n-            -Wnull-dereference dnl\n-            -Wdouble-promotion dnl\n-            $4 dnl\n-            $5 dnl\n-            $6 dnl\n-            $7 dnl\n-        ],ax_warn_cflags_variable,[$ax_compiler_flags_test])\n-    ])\n-    AS_IF([test \"$ax_enable_compile_warnings\" = \"error\"],[\n-        # \"error\" flags; -Werror has to be appended unconditionally because\n-        # it's not possible to test for\n-        #\n-        # suggest-attribute=format is disabled because it gives too many false\n-        # positives\n-        AX_APPEND_FLAG([-Werror],ax_warn_cflags_variable)\n-\n-        AX_APPEND_COMPILE_FLAGS([ dnl\n-            [$ax_compiler_no_suggest_attribute_flags] dnl\n-        ],ax_warn_cflags_variable,[$ax_compiler_flags_test])\n-    ])\n-\n-    # In the flags below, when disabling specific flags, always add *both*\n-    # -Wno-foo and -Wno-error=foo. This fixes the situation where (for example)\n-    # we enable -Werror, disable a flag, and a build bot passes CFLAGS=-Wall,\n-    # which effectively turns that flag back on again as an error.\n-    for flag in $ax_warn_cflags_variable; do\n-        AS_CASE([$flag],\n-                [-Wno-*=*],[],\n-                [-Wno-*],[\n-                    AX_APPEND_COMPILE_FLAGS([-Wno-error=$(AS_ECHO([$flag]) | $SED 's/^-Wno-//')],\n-                                            ax_warn_cflags_variable,\n-                                            [$ax_compiler_flags_test])\n-                ])\n-    done\n-\n-    AC_LANG_POP([C])\n-\n-    # Substitute the variables\n-    AC_SUBST(ax_warn_cflags_variable)\n-])dnl AX_COMPILER_FLAGS\ndiff --git a/m4/ax_compiler_flags_gir.m4 b/m4/ax_compiler_flags_gir.m4\ndeleted file mode 100644\nindex 5b4924a20..000000000\n--- a/m4/ax_compiler_flags_gir.m4\n+++ /dev/null\n@@ -1,60 +0,0 @@\n-# ===========================================================================\n-#  https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_gir.html\n-# ===========================================================================\n-#\n-# SYNOPSIS\n-#\n-#   AX_COMPILER_FLAGS_GIR([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])\n-#\n-# DESCRIPTION\n-#\n-#   Add warning flags for the g-ir-scanner (from GObject Introspection) to\n-#   VARIABLE, which defaults to WARN_SCANNERFLAGS.  VARIABLE is AC_SUBST-ed\n-#   by this macro, but must be manually added to the SCANNERFLAGS variable\n-#   for each GIR target in the code base.\n-#\n-#   This macro depends on the environment set up by AX_COMPILER_FLAGS.\n-#   Specifically, it uses the value of $ax_enable_compile_warnings to decide\n-#   which flags to enable.\n-#\n-# LICENSE\n-#\n-#   Copyright (c) 2015 Philip Withnall <philip@tecnocode.co.uk>\n-#\n-#   Copying and distribution of this file, with or without modification, are\n-#   permitted in any medium without royalty provided the copyright notice\n-#   and this notice are preserved.  This file is offered as-is, without any\n-#   warranty.\n-\n-#serial 6\n-\n-AC_DEFUN([AX_COMPILER_FLAGS_GIR],[\n-    AX_REQUIRE_DEFINED([AX_APPEND_FLAG])\n-\n-    # Variable names\n-    m4_define([ax_warn_scannerflags_variable],\n-              [m4_normalize(ifelse([$1],,[WARN_SCANNERFLAGS],[$1]))])\n-\n-    # Base flags\n-    AX_APPEND_FLAG([$3],ax_warn_scannerflags_variable)\n-\n-    AS_IF([test \"$ax_enable_compile_warnings\" != \"no\"],[\n-        # \"yes\" flags\n-        AX_APPEND_FLAG([ dnl\n-            --warn-all dnl\n-            $4 dnl\n-            $5 dnl\n-            $6 dnl\n-            $7 dnl\n-        ],ax_warn_scannerflags_variable)\n-    ])\n-    AS_IF([test \"$ax_enable_compile_warnings\" = \"error\"],[\n-        # \"error\" flags\n-        AX_APPEND_FLAG([ dnl\n-            --warn-error dnl\n-        ],ax_warn_scannerflags_variable)\n-    ])\n-\n-    # Substitute the variables\n-    AC_SUBST(ax_warn_scannerflags_variable)\n-])dnl AX_COMPILER_FLAGS\ndiff --git a/m4/ax_compiler_flags_ldflags.m4 b/m4/ax_compiler_flags_ldflags.m4\ndeleted file mode 100644\nindex 976d1198d..000000000\n--- a/m4/ax_compiler_flags_ldflags.m4\n+++ /dev/null\n@@ -1,111 +0,0 @@\n-# ==============================================================================\n-#  https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_ldflags.html\n-# ==============================================================================\n-#\n-# SYNOPSIS\n-#\n-#   AX_COMPILER_FLAGS_LDFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])\n-#\n-# DESCRIPTION\n-#\n-#   Add warning flags for the linker to VARIABLE, which defaults to\n-#   WARN_LDFLAGS.  VARIABLE is AC_SUBST-ed by this macro, but must be\n-#   manually added to the LDFLAGS variable for each target in the code base.\n-#\n-#   This macro depends on the environment set up by AX_COMPILER_FLAGS.\n-#   Specifically, it uses the value of $ax_enable_compile_warnings to decide\n-#   which flags to enable.\n-#\n-# LICENSE\n-#\n-#   Copyright (c) 2014, 2015 Philip Withnall <philip@tecnocode.co.uk>\n-#   Copyright (c) 2017, 2018 Reini Urban <rurban@cpan.org>\n-#\n-#   Copying and distribution of this file, with or without modification, are\n-#   permitted in any medium without royalty provided the copyright notice\n-#   and this notice are preserved.  This file is offered as-is, without any\n-#   warranty.\n-\n-#serial 9\n-\n-AC_DEFUN([AX_COMPILER_FLAGS_LDFLAGS],[\n-    AX_REQUIRE_DEFINED([AX_APPEND_LINK_FLAGS])\n-    AX_REQUIRE_DEFINED([AX_APPEND_FLAG])\n-    AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])\n-    AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])\n-\n-    # Variable names\n-    m4_define([ax_warn_ldflags_variable],\n-              [m4_normalize(ifelse([$1],,[WARN_LDFLAGS],[$1]))])\n-\n-    # Always pass -Werror=unknown-warning-option to get Clang to fail on bad\n-    # flags, otherwise they are always appended to the warn_ldflags variable,\n-    # and Clang warns on them for every compilation unit.\n-    # If this is passed to GCC, it will explode, so the flag must be enabled\n-    # conditionally.\n-    AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],[\n-        ax_compiler_flags_test=\"-Werror=unknown-warning-option\"\n-    ],[\n-        ax_compiler_flags_test=\"\"\n-    ])\n-\n-    AX_CHECK_LINK_FLAG([-Wl,--as-needed], [\n-        AX_APPEND_LINK_FLAGS([-Wl,--as-needed],\n-          [AM_LDFLAGS],[$ax_compiler_flags_test])\n-    ])\n-    AX_CHECK_LINK_FLAG([-Wl,-z,relro], [\n-        AX_APPEND_LINK_FLAGS([-Wl,-z,relro],\n-          [AM_LDFLAGS],[$ax_compiler_flags_test])\n-    ])\n-    AX_CHECK_LINK_FLAG([-Wl,-z,now], [\n-        AX_APPEND_LINK_FLAGS([-Wl,-z,now],\n-          [AM_LDFLAGS],[$ax_compiler_flags_test])\n-    ])\n-    AX_CHECK_LINK_FLAG([-Wl,-z,noexecstack], [\n-        AX_APPEND_LINK_FLAGS([-Wl,-z,noexecstack],\n-          [AM_LDFLAGS],[$ax_compiler_flags_test])\n-    ])\n-    # textonly, retpolineplt not yet\n-\n-    # macOS and cygwin linker do not have --as-needed\n-    AX_CHECK_LINK_FLAG([-Wl,--no-as-needed], [\n-        ax_compiler_flags_as_needed_option=\"-Wl,--no-as-needed\"\n-    ], [\n-        ax_compiler_flags_as_needed_option=\"\"\n-    ])\n-\n-    # macOS linker speaks with a different accent\n-    ax_compiler_flags_fatal_warnings_option=\"\"\n-    AX_CHECK_LINK_FLAG([-Wl,--fatal-warnings], [\n-        ax_compiler_flags_fatal_warnings_option=\"-Wl,--fatal-warnings\"\n-    ])\n-    AX_CHECK_LINK_FLAG([-Wl,-fatal_warnings], [\n-        ax_compiler_flags_fatal_warnings_option=\"-Wl,-fatal_warnings\"\n-    ])\n-\n-    # Base flags\n-    AX_APPEND_LINK_FLAGS([ dnl\n-        $ax_compiler_flags_as_needed_option dnl\n-        $3 dnl\n-    ],ax_warn_ldflags_variable,[$ax_compiler_flags_test])\n-\n-    AS_IF([test \"$ax_enable_compile_warnings\" != \"no\"],[\n-        # \"yes\" flags\n-        AX_APPEND_LINK_FLAGS([$4 $5 $6 $7],\n-                                ax_warn_ldflags_variable,\n-                                [$ax_compiler_flags_test])\n-    ])\n-    AS_IF([test \"$ax_enable_compile_warnings\" = \"error\"],[\n-        # \"error\" flags; -Werror has to be appended unconditionally because\n-        # it's not possible to test for\n-        #\n-        # suggest-attribute=format is disabled because it gives too many false\n-        # positives\n-        AX_APPEND_LINK_FLAGS([ dnl\n-            $ax_compiler_flags_fatal_warnings_option dnl\n-        ],ax_warn_ldflags_variable,[$ax_compiler_flags_test])\n-    ])\n-\n-    # Substitute the variables\n-    AC_SUBST(ax_warn_ldflags_variable)\n-])dnl AX_COMPILER_FLAGS\n"
  },
  {
    "path": "package/babeltrace2/0002-tests-lib-test_trace_ir_ref.c-rename-user-structure.patch",
    "content": "From 7a27f13c192d15cae47740f3e884bba16f15ed41 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 26 Sep 2020 22:03:10 +0200\nSubject: [PATCH] tests/lib/test_trace_ir_ref.c: rename user structure\n\nRename user structure to bt_user to avoid the following build failure\nwith uclibc:\n\ntest_trace_ir_ref.c:41:8: error: redefinition of 'struct user'\n struct user {\n        ^\nIn file included from /home/naourr/work/instance-0/output-1/per-package/babeltrace2/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/sys/procfs.h:33,\n                 from /home/naourr/work/instance-0/output-1/per-package/babeltrace2/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/sys/ucontext.h:25,\n                 from /home/naourr/work/instance-0/output-1/per-package/babeltrace2/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/signal.h:329,\n                 from /home/naourr/work/instance-0/output-1/per-package/babeltrace2/host/bin/../arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/glib-2.0/glib/gbacktrace.h:36,\n                 from /home/naourr/work/instance-0/output-1/per-package/babeltrace2/host/bin/../arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/glib-2.0/glib.h:34,\n                 from ../../src/common/assert.h:28,\n                 from ../../src/lib/object.h:28,\n                 from test_trace_ir_ref.c:25:\n/home/naourr/work/instance-0/output-1/per-package/babeltrace2/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/sys/user.h:48:8: note: originally defined here\n struct user\n        ^~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/e4229e2b9c892b419a9d2eaa6929b80ea62dd130\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/efficios/babeltrace/pull/115]\n---\n tests/lib/test_trace_ir_ref.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/tests/lib/test_trace_ir_ref.c b/tests/lib/test_trace_ir_ref.c\nindex d5dfa9cf..70caf29c 100644\n--- a/tests/lib/test_trace_ir_ref.c\n+++ b/tests/lib/test_trace_ir_ref.c\n@@ -25,7 +25,7 @@\n \n #define NR_TESTS 37\n \n-struct user {\n+struct bt_user {\n \tbt_trace_class *tc;\n \tbt_stream_class *sc;\n \tbt_event_class *ec;\n@@ -265,7 +265,7 @@ static void test_example_scenario(bt_self_component_source *self_comp)\n \tbt_stream_class *weak_sc1 = NULL, *weak_sc2 = NULL;\n \tbt_event_class *weak_ec1 = NULL, *weak_ec2 = NULL,\n \t\t\t*weak_ec3 = NULL;\n-\tstruct user user_a = { 0 }, user_b = { 0 }, user_c = { 0 };\n+\tstruct bt_user user_a = { 0 }, user_b = { 0 }, user_c = { 0 };\n \n \t/* The only reference which exists at this point is on TC1. */\n \ttc1 = create_tc1(self_comp);\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/babeltrace2/Config.in",
    "content": "config BR2_PACKAGE_BABELTRACE2\n\tbool \"babeltrace2\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Babeltrace 2 is an open-source trace manipulation toolkit.\n\n\t  The Babeltrace 2 project offers a library with a C API,\n\t  Python 3 bindings, and a command-line tool which makes it\n\t  very easy for mere mortals to view, convert, transform, and\n\t  analyze traces.\n\n\t  Babeltrace 2 is also the reference parser implementation of\n\t  the Common Trace Format (CTF), a very versatile trace format\n\t  followed by various tracers and tools such as LTTng and\n\t  barectf. The Babeltrace 2 library and its Python bindings\n\t  can read and write CTF traces.\n\n\t  To get support for the debugging information filter\n\t  component class, enable the elfutils package\n\t  (BR2_PACKAGE_ELFUTILS).\n\n\t  https://babeltrace.org/\n\ncomment \"babeltrace2 needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/babeltrace2/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_BABELTRACE2\n\tbool \"host babeltrace2\"\n\thelp\n\t  Babeltrace 2 is an open-source trace manipulation toolkit.\n\n\t  The Babeltrace 2 project offers a library with a C API,\n\t  Python 3 bindings, and a command-line tool which makes it\n\t  very easy for mere mortals to view, convert, transform, and\n\t  analyze traces.\n\n\t  Babeltrace 2 is also the reference parser implementation of\n\t  the Common Trace Format (CTF), a very versatile trace format\n\t  followed by various tracers and tools such as LTTng and\n\t  barectf. The Babeltrace 2 library and its Python bindings\n\t  can read and write CTF traces.\n\n\t  https://babeltrace.org/\n"
  },
  {
    "path": "package/babeltrace2/babeltrace2.hash",
    "content": "# From https://www.efficios.com/files/babeltrace/babeltrace2-2.0.3.tar.bz2.sha256\nsha256 a53625152554102d868ba8395347d0daba0bec9c4b854c3e9bd97c77b0bf04a0  babeltrace2-2.0.3.tar.bz2\n\n# Hash for license files\nsha256 d919c6347409efde6dea63c6f349fb06bc060a2b721fc3df07b5f720b5f1d60e  LICENSE\nsha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  gpl-2.0.txt\nsha256 c68fd1ffc1623ea0dace21abf57305818e4998a4ae0c79010aaaa943eb660b55  lgpl-2.1.txt\nsha256 2f801b7c2494850c3d91da820eb230502dc0192c9d0db024db37ec08d0be1434  mit-license.txt\n"
  },
  {
    "path": "package/babeltrace2/babeltrace2.mk",
    "content": "################################################################################\n#\n# babeltrace2\n#\n################################################################################\n\nBABELTRACE2_SITE = https://www.efficios.com/files/babeltrace\nBABELTRACE2_VERSION = 2.0.3\nBABELTRACE2_SOURCE = babeltrace2-$(BABELTRACE2_VERSION).tar.bz2\nBABELTRACE2_LICENSE = MIT, LGPL-2.1 (src/common/list.h), GPL-2.0 (test code)\nBABELTRACE2_LICENSE_FILES = mit-license.txt lgpl-2.1.txt gpl-2.0.txt LICENSE\n# We're patching configure.ac\nBABELTRACE2_AUTORECONF = YES\nBABELTRACE2_CONF_OPTS = --disable-man-pages\nBABELTRACE2_DEPENDENCIES = libglib2 host-pkgconf\n# The host-elfutils dependency is optional, but since we don't have\n# options for host packages, just build support for it\n# unconditionally.\nHOST_BABELTRACE2_DEPENDENCIES = host-libglib2 host-pkgconf host-elfutils\nHOST_BABELTRACE2_CONF_OPTS += --enable-debug-info\n\nifeq ($(BR2_PACKAGE_ELFUTILS),y)\nBABELTRACE2_DEPENDENCIES += elfutils\nBABELTRACE2_CONF_OPTS += --enable-debug-info\nBABELTRACE2_CONF_ENV += bt_cv_lib_elfutils=yes\nelse\nBABELTRACE2_CONF_OPTS += --disable-debug-info\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nBABELTRACE2_CONF_ENV += LIBS=-latomic\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/balena-engine/Config.in",
    "content": "config BR2_PACKAGE_BALENA_ENGINE\n\tbool \"balena-engine\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_USES_UCLIBC # no fexecve\n\tdepends on BR2_USE_MMU # util-linux\n\tselect BR2_PACKAGE_CGROUPFS_MOUNT if !BR2_PACKAGE_SYSTEMD # runtime\n\tselect BR2_PACKAGE_IPTABLES # runtime\n\tselect BR2_PACKAGE_SQLITE # runtime\n\tselect BR2_PACKAGE_UTIL_LINUX # runtime\n\tselect BR2_PACKAGE_UTIL_LINUX_BINARIES # runtime\n\tselect BR2_PACKAGE_UTIL_LINUX_MOUNT # runtime\n\tselect BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT # runtime\n\tselect BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT # runtime\n\thelp\n\t  balenaEngine is a new container engine purpose-built for\n\t  embedded and IoT use cases and compatible with Docker\n\t  containers.\n\n\t  https://github.com/balena-os/balena-engine\n\ncomment \"balena-engine needs a glibc or musl toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/balena-engine/balena-engine.hash",
    "content": "# Locally computed\nsha256  389282706562118608b6ac580e7beacd6a43f0bb3481c69fb1856bed9ac49b85  balena-engine-19.03.14.tar.gz\nsha256  7c87873291f289713ac5df48b1f2010eb6963752bbd6b530416ab99fc37914a8  LICENSE\n"
  },
  {
    "path": "package/balena-engine/balena-engine.mk",
    "content": "################################################################################\n#\n# balena-engine\n#\n################################################################################\n\nBALENA_ENGINE_VERSION = 19.03.14\nBALENA_ENGINE_SITE = $(call github,balena-os,balena-engine,v$(BALENA_ENGINE_VERSION))\n\nBALENA_ENGINE_LICENSE = Apache-2.0\nBALENA_ENGINE_LICENSE_FILES = LICENSE\n\nBALENA_ENGINE_DEPENDENCIES = host-pkgconf\nBALENA_ENGINE_GOMOD = github.com/docker/docker\n\nBALENA_ENGINE_LDFLAGS = \\\n\t-X github.com/docker/cli/cli/version.Version=N/A \\\n\t-X github.com/docker/cli/cli/version.GitCommit= \\\n\t-X github.com/docker/cli/cli/version.BuildTime= \\\n\t-X github.com/containerd/containerd/version.Version=N/A \\\n\t-X github.com/opencontainers/runc.version=N/A\n\nBALENA_ENGINE_TAGS = \\\n\tcgo \\\n\texclude_graphdriver_zfs \\\n\tautogen \\\n\tno_buildkit \\\n\tno_btrfs \\\n\tno_cri \\\n\tno_devmapper \\\n\tno_zfs \\\n\texclude_disk_quota \\\n\texclude_graphdriver_btrfs \\\n\texclude_graphdriver_devicemapper\n\nBALENA_ENGINE_BUILD_TARGETS = cmd/balena-engine\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nBALENA_ENGINE_DEPENDENCIES += systemd\nBALENA_ENGINE_TAGS += journald\nendif\n\ndefine BALENA_ENGINE_RUN_AUTOGEN\n\tcd $(@D) && \\\n\t\tVERSION=$(BALENA_ENGINE_VERSION) \\\n\t\tPKG_CONFIG=$(PKG_CONFIG_HOST_BINARY) \\\n\t\t$(TARGET_MAKE_ENV) \\\n\t\t$(SHELL) hack/make/.go-autogen\nendef\n\nBALENA_ENGINE_POST_CONFIGURE_HOOKS += BALENA_ENGINE_RUN_AUTOGEN\n\ndefine BALENA_ENGINE_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(@D)/contrib/init/systemd/balena-engine.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/balena-engine.service\n\t$(INSTALL) -D -m 644 $(@D)/contrib/init/systemd/balena-engine.socket \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/balena-engine.socket\nendef\n\ndefine BALENA_ENGINE_USERS\n\t- - balena-engine -1 * - - - balenaEngine daemon\nendef\n\ndefine BALENA_ENGINE_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_POSIX_MQUEUE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_MEMCG)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_SCHED)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_FREEZER)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CPUSETS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_DEVICE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_CPUACCT)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NAMESPACES)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_UTS_NS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IPC_NS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_PID_NS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NET_NS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_ADVANCED)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_BRIDGE_NETFILTER)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_ADDRTYPE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_CONNTRACK)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_IPVS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_NAT)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_MASQUERADE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_BRIDGE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_DUMMY)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_MACVLAN)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_VXLAN)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_VETH)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_OVERLAY_FS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_KEYS)\nendef\n\ndefine BALENA_ENGINE_INSTALL_SYMLINK\n\tln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-daemon\n\tln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-containerd\n\tln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-containerd-shim\n\tln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-containerd-ctr\n\tln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-runc\n\tln -f -s balena-engine $(TARGET_DIR)/usr/bin/balena-engine-proxy\n\t$(if $(BR2_PACKAGE_TINI),ln -f -s tini $(TARGET_DIR)/usr/bin/balena-engine-init)\nendef\nBALENA_ENGINE_POST_INSTALL_TARGET_HOOKS += BALENA_ENGINE_INSTALL_SYMLINK\n\n$(eval $(golang-package))\n"
  },
  {
    "path": "package/bandwidthd/0001-src-bandwidthd.h-fix-build-with-gcc-10.patch",
    "content": "From dde68ed77114d7b19bfed3068edefc9dc0644445 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 16 Aug 2020 10:21:46 +0200\nSubject: [PATCH] src/bandwidthd.h: fix build with gcc 10\n\nRemove SubnetTable[SUBNET_NUM] and IpTable[IP_NUM] from bandwidthd.h as\nthey are already in bandwidthd.c otherwise the build with gcc 10 will\nfail on:\n\n/home/buildroot/autobuild/instance-2/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os     -o bandwidthd bandwidthd.o graph.o extensions.o sqlight.o parser.o lexer.o pgsql.o  -lpcap -lgd -lm -lresolv  -L/home/buildroot/autobuild/instance-2/output-1/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib -lpng16 -lz  -L/home/buildroot/autobuild/instance-2/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/usr/bin/../../../../arm-buildroot-linux-gnueabihf/sysroot/usr/lib/.libs -lnl-genl-3 -lnl-3\n/home/buildroot/autobuild/instance-2/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: graph.o:(.bss+0x4b0): multiple definition of `IpTable'; bandwidthd.o:(.bss+0x3e0): first defined here\n/home/buildroot/autobuild/instance-2/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: graph.o:(.bss+0x18c): multiple definition of `SubnetTable'; bandwidthd.o:(.bss+0x88): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/6308c8ee38b6017215038d47c009b238113bd36f\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/nroach44/bandwidthd/pull/1]\n---\n src/bandwidthd.h | 4 ++--\n src/graph.c      | 1 +\n 2 files changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/src/bandwidthd.h b/src/bandwidthd.h\nindex 870fdf7..eb4c830 100644\n--- a/src/bandwidthd.h\n+++ b/src/bandwidthd.h\n@@ -134,7 +134,7 @@ struct SubnetData\n {\n   uint32_t ip;\n   uint32_t mask;\n-} SubnetTable[SUBNET_NUM];\n+};\n \n struct Statistics\n {\n@@ -157,7 +157,7 @@ struct IPData\n   uint32_t ip;\t\t\t// Host byte order\n   struct Statistics Send;\n   struct Statistics Receive;\n-} IpTable[IP_NUM];\n+};\n \n struct SummaryData\n {\ndiff --git a/src/graph.c b/src/graph.c\nindex b4b68f0..058e8c7 100644\n--- a/src/graph.c\n+++ b/src/graph.c\n@@ -18,6 +18,7 @@\n #include <resolv.h>\n #endif\n \n+extern struct SubnetData SubnetTable[SUBNET_NUM];\n extern unsigned int SubnetCount;\n extern struct config config;\n \n-- \n2.27.0\n\n"
  },
  {
    "path": "package/bandwidthd/Config.in",
    "content": "config BR2_PACKAGE_BANDWIDTHD\n\tbool \"bandwidthd\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_LIBPCAP\n\tselect BR2_PACKAGE_GD\n\thelp\n\t  BandwidthD - Bandwidth monitoring\n\n\t  Provides a method to measure the bandwidth that travels\n\t  through the machine, grouped by subnet and IP. This\n\t  information can be stored locally in /var/lib/bandwidthd and\n\t  can be configured to generate static HTML pages which can be\n\t  hosted by a web server.\n\n\t  It is highly recommended that the target has some way of\n\t  retaining the time between reboots. (e.g. NTP on boot or an\n\t  RTC)\n\n\t  It is suggested to use sqlite for logfile storage but works\n\t  fine without, and can be completely ignored if the\n\t  postgresql portion is used.\n\n\t  As upstream is no longer actively maintained, a fork is\n\t  available on github that works on making BandwidthD's build\n\t  process more compatible with buildroot's.\n\n\t  Upstream:\n\t  http://bandwidthd.sourceforge.net/\n\t  Github fork:\n\t  http://github.com/nroach44/bandwidthd\n\nif BR2_PACKAGE_BANDWIDTHD\n\nconfig BR2_PACKAGE_BANDWIDTHD_POSTGRESQL\n\tbool \"enable postgresql log target support\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR # postgresql\n\tselect BR2_PACKAGE_POSTGRESQL\n\thelp\n\t  Enable support for logging the bandwidthd data to a remote\n\t  (or local) postgresql server. This data can then be viewed\n\t  through a php site. See README in the source code\n\t  (github.com/nroach44/bandwidthd) for more information.\n\ncomment \"postgresql support needs a toolchain w/ dynamic library, wchar\"\n\tdepends on BR2_STATIC_LIBS || !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_BANDWIDTHD_SQLITE3\n\tbool \"enable sqlite3 log storage\"\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  Enable support for storing the aggregated data in an sqlite\n\t  db instead of a plain text file.\n\nendif\n"
  },
  {
    "path": "package/bandwidthd/bandwidthd.hash",
    "content": "# Locally calculated\nsha256  0270d0def6cc53c8d47d59a9dd093d51fbca1620adeef85c15e35a32010e26ab  bandwidthd-2.0.1-auto-r11.tar.gz\nsha256  58573c40770e0c0b91f3eef8192952832321a344f66a4fb2d966095cbbfc86c2  README\n"
  },
  {
    "path": "package/bandwidthd/bandwidthd.mk",
    "content": "################################################################################\n#\n# bandwidthd\n#\n################################################################################\n\nBANDWIDTHD_VERSION = 2.0.1-auto-r11\nBANDWIDTHD_SITE = $(call github,nroach44,bandwidthd,v$(BANDWIDTHD_VERSION))\n\n# Specified as \"any version of the GPL that is current as of your\n# download\" by upstream.\nBANDWIDTHD_LICENSE = GPL\nBANDWIDTHD_LICENSE_FILES = README\n\nBANDWIDTHD_DEPENDENCIES = gd libpng libpcap host-pkgconf\n\nBANDWIDTHD_AUTORECONF = YES\n\nBANDWIDTHD_CONF_OPTS += --with-pcap-config=$(STAGING_DIR)/usr/bin/pcap-config\n\nifeq ($(BR2_PACKAGE_BANDWIDTHD_POSTGRESQL),y)\nBANDWIDTHD_DEPENDENCIES += postgresql\nBANDWIDTHD_CONF_OPTS += --with-postgresql-logging=true\nelse\nBANDWIDTHD_CONF_OPTS += --with-postgresql-logging=false\nendif\n\nifeq ($(BR2_PACKAGE_BANDWIDTHD_SQLITE3),y)\nBANDWIDTHD_DEPENDENCIES += sqlite\nBANDWIDTHD_CONF_OPTS += --with-sqlite-storage=true\nelse\nBANDWIDTHD_CONF_OPTS += --with-sqlite-storage=false\nendif\n\ndefine BANDWIDTHD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/bandwidthd/bandwidthd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/bandwidthd.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bandwidthd/bandwidthd.service",
    "content": "[Unit]\nDescription=Bandwidth usage monitor and reporter\nAfter=network.target\n\n[Service]\nType=forking\nExecStart=/usr/bin/bandwidthd\nPIDFile=/run/bandwidthd.pid\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/bash/0001-input.h-add-missing-include-on-stdio.h.patch",
    "content": "From 4fa85c85b9a76afd3b19ed75bf17ccd2940f1f55 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 16 Feb 2020 16:18:48 +0100\nSubject: [PATCH] input.h: add missing include on stdio.h\n\nThis will fix the following build failure on uclibc:\n\ntest -n \"/usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-2/output/host/bin/arm-linux-ranlib\" && /usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-2/output/host/bin/arm-linux-ranlib libsh.a\nIn file included from ./exec.def:71:\n../input.h:76:3: error: unknown type name 'FILE'\n   FILE *file;\n   ^~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/bfca306868df54c567215c45c8cdac838d02f567\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://savannah.gnu.org/support/?110196]\n---\n input.h | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/input.h b/input.h\nindex 6aef1269..08b0fdea 100644\n--- a/input.h\n+++ b/input.h\n@@ -21,6 +21,8 @@\n #if !defined (_INPUT_H_)\n #define _INPUT_H_\n \n+#include <stdio.h>\n+\n #include \"stdc.h\"\n \n /* Function pointers can be declared as (Function *)foo. */\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/bash/0002-locale-fix-typo-local_shiftstates-vs.-locale_shiftst.patch",
    "content": "From 3d6b9e18506ad9daf4ec7b7d406b38d58ec88009 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 11 Mar 2021 20:48:36 +0100\nSubject: [PATCH] locale: fix typo local_shiftstates vs. locale_shiftstates\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes:\n\n  locale.c:94:3: error: ‘local_shiftstates’ undeclared (first use in this function); did you mean ‘locale_shiftstates’?\n     94 |   local_shiftstates = 0;\n        |   ^~~~~~~~~~~~~~~~~\n        |   locale_shiftstates\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n locale.c | 10 +++++-----\n 1 file changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/locale.c b/locale.c\nindex 17ccc58..d6dd95a 100644\n--- a/locale.c\n+++ b/locale.c\n@@ -91,7 +91,7 @@ set_default_locale ()\n #if defined (HANDLE_MULTIBYTE)\n   locale_shiftstates = mblen ((char *)NULL, 0);\n #else\n-  local_shiftstates = 0;\n+  locale_shiftstates = 0;\n #endif\n }\n \n@@ -117,7 +117,7 @@ set_default_locale_vars ()\n #    if defined (HANDLE_MULTIBYTE)\n       locale_shiftstates = mblen ((char *)NULL, 0);\n #    else\n-      local_shiftstates = 0;\n+      locale_shiftstates = 0;\n #    endif\n \n       u32reset ();\n@@ -226,7 +226,7 @@ set_locale_var (var, value)\n #  if defined (HANDLE_MULTIBYTE)\n       locale_shiftstates = mblen ((char *)NULL, 0);\n #  else\n-      local_shiftstates = 0;\n+      locale_shiftstates = 0;\n #  endif\n       u32reset ();\n       return r;\n@@ -250,7 +250,7 @@ set_locale_var (var, value)\n #if defined (HANDLE_MULTIBYTE)\n \t  locale_shiftstates = mblen ((char *)NULL, 0);\n #else\n-\t  local_shiftstates = 0;\n+\t  locale_shiftstates = 0;\n #endif\n \t  u32reset ();\n \t}\n@@ -391,7 +391,7 @@ reset_locale_vars ()\n #  if defined (HANDLE_MULTIBYTE)\n   locale_shiftstates = mblen ((char *)NULL, 0);\n #  else\n-  local_shiftstates = 0;\n+  locale_shiftstates = 0;\n #  endif\n   u32reset ();\n #endif\n-- \n2.30.1\n\n"
  },
  {
    "path": "package/bash/0003-glob-fix-dequote_pathname-vs.-udequote_pathname.patch",
    "content": "From a60ab1e5e88863acf9b0e9bcaa7919bbf093da05 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 11 Mar 2021 20:55:52 +0100\nSubject: [PATCH] glob: fix dequote_pathname vs. udequote_pathname\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes:\n\n  glob.c:123:28: error: static declaration of ‘udequote_pathname’ follows non-static declaration\n    123 | #  define dequote_pathname udequote_pathname\n        |                            ^~~~~~~~~~~~~~~~~\n  glob.c:125:13: note: in expansion of macro ‘dequote_pathname’\n    125 | static void dequote_pathname PARAMS((char *));\n        |             ^~~~~~~~~~~~~~~~\n  glob.c:118:6: note: previous declaration of ‘udequote_pathname’ was here\n    118 | void udequote_pathname PARAMS((char *));\n        |      ^~~~~~~~~~~~~~~~~\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n lib/glob/glob.c | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/lib/glob/glob.c b/lib/glob/glob.c\nindex eb6277f..c903b15 100644\n--- a/lib/glob/glob.c\n+++ b/lib/glob/glob.c\n@@ -117,6 +117,5 @@ static int mbskipname PARAMS((char *, char *, int));\n #else\n #  define dequote_pathname udequote_pathname\n #endif\n-static void dequote_pathname PARAMS((char *));\n static int glob_testdir PARAMS((char *, int));\n static char **glob_dir_to_array PARAMS((char *, char **, int));\n \n-- \n2.30.1\n\n"
  },
  {
    "path": "package/bash/Config.in",
    "content": "config BR2_PACKAGE_BASH\n\tbool \"bash\"\n\t# uses fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  The standard GNU Bourne again shell.\n\n\t  http://tiswww.case.edu/php/chet/bash/bashtop.html\n\nif BR2_PACKAGE_BASH\n\nconfig BR2_PACKAGE_BASH_LOADABLE_EXAMPLES\n\tbool \"loadable examples\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  This option will enable the installation of the \"loadable\"\n\t  examples, which are dynamically loadable extension providing\n\t  additional built-ins commands to bash. There are typically\n\t  not needed as they are provided as regular, external\n\t  commands.\n\nendif\n"
  },
  {
    "path": "package/bash/bash.hash",
    "content": "# Locally calculated after checking pgp signature from\n# https://ftp.gnu.org/gnu/bash/bash-5.1.16.tar.gz.sig\nsha256  5bac17218d3911834520dad13cd1f85ab944e1c09ae1aba55906be1f8192f558  bash-5.1.16.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/bash/bash.mk",
    "content": "################################################################################\n#\n# bash\n#\n################################################################################\n\nBASH_VERSION = 5.1.16\nBASH_SITE = $(BR2_GNU_MIRROR)/bash\nBASH_DEPENDENCIES = ncurses readline host-bison\nBASH_LICENSE = GPL-3.0+\nBASH_LICENSE_FILES = COPYING\nBASH_CPE_ID_VENDOR = gnu\n\n# We want the bash binary in /bin\nBASH_CONF_OPTS = \\\n\t--bindir=/bin \\\n\t--with-installed-readline \\\n\t--without-bash-malloc\n\nBASH_CONF_ENV += \\\n\tac_cv_rl_prefix=\"$(STAGING_DIR)\" \\\n\tac_cv_rl_version=\"$(READLINE_VERSION)\" \\\n\tbash_cv_getcwd_malloc=yes \\\n\tbash_cv_job_control_missing=present \\\n\tbash_cv_sys_named_pipes=present \\\n\tbash_cv_func_sigsetjmp=present \\\n\tbash_cv_printf_a_format=yes\n\n# The static build needs some trickery\nifeq ($(BR2_STATIC_LIBS),y)\nBASH_CONF_OPTS += --enable-static-link\n# bash wants to redefine the getenv() function. To check whether this is\n# possible, AC_TRY_RUN is used which is not possible in\n# cross-compilation.\n# On uClibc, redefining getenv is not possible; on glibc and musl it is.\n# Related:\n# http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00052.html\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\nBASH_CONF_ENV += bash_cv_getenv_redef=no\nelse\nBASH_CONF_ENV += bash_cv_getenv_redef=yes\nendif\nendif\n\ndefine BASH_REMOVE_UNUSED_FILES\n\trm -f $(TARGET_DIR)/bin/bashbug\nendef\nBASH_POST_INSTALL_TARGET_HOOKS += BASH_REMOVE_UNUSED_FILES\n\nifeq ($(BR2_PACKAGE_BASH_LOADABLE_EXAMPLES),y)\ndefine BASH_REMOVE_LOADABLE_UNUSED_FILES\n\trm -f $(TARGET_DIR)/usr/lib/bash/Makefile.inc\n\trm -f $(TARGET_DIR)/usr/lib/bash/loadables.h\nendef\nBASH_POST_INSTALL_TARGET_HOOKS += BASH_REMOVE_LOADABLE_UNUSED_FILES\nelse\ndefine BASH_REMOVE_LOADABLE_EXAMPLES\n\trm -rf $(TARGET_DIR)/usr/lib/bash\nendef\nBASH_POST_INSTALL_TARGET_HOOKS += BASH_REMOVE_LOADABLE_EXAMPLES\nendif\n\n# Add /bin/bash to /etc/shells otherwise some login tools like dropbear\n# can reject the user connection. See man shells.\ndefine BASH_ADD_MKSH_TO_SHELLS\n\tgrep -qsE '^/bin/bash$$' $(TARGET_DIR)/etc/shells \\\n\t\t|| echo \"/bin/bash\" >> $(TARGET_DIR)/etc/shells\nendef\nBASH_TARGET_FINALIZE_HOOKS += BASH_ADD_MKSH_TO_SHELLS\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bash-completion/Config.in",
    "content": "config BR2_PACKAGE_BASH_COMPLETION\n\tbool \"bash completion\"\n\tdepends on BR2_PACKAGE_BASH\n\thelp\n\t  Add bash completion infrastructure.\n\n\t  The bash completion infrastructure is enabled by\n\t  /etc/profile.d/bash_completion.sh, which is normally\n\t  sourced by /etc/profile.\n\n\t  If the system does not use the /etc/profile.d directory\n\t  mechanism, the /etc/profile.d/bash_completion.sh script can\n\t  be sourced from /etc/bashrc or ~/.bashrc.\n\n\t  https://github.com/scop/bash-completion\n"
  },
  {
    "path": "package/bash-completion/bash-completion.hash",
    "content": "# Locally calculated\nsha256  73a8894bad94dee83ab468fa09f628daffd567e8bef1a24277f1e9a0daf911ac  bash-completion-2.11.tar.xz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/bash-completion/bash-completion.mk",
    "content": "################################################################################\n#\n# bash-completion\n#\n################################################################################\n\nBASH_COMPLETION_VERSION = 2.11\nBASH_COMPLETION_SITE = https://github.com/scop/bash-completion/releases/download/$(BASH_COMPLETION_VERSION)\nBASH_COMPLETION_SOURCE = bash-completion-$(BASH_COMPLETION_VERSION).tar.xz\nBASH_COMPLETION_LICENSE = GPL-2.0\nBASH_COMPLETION_LICENSE_FILES = COPYING\n\n# Install bash-completion.pc file\nBASH_COMPLETION_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/batctl/Config.in",
    "content": "config BR2_PACKAGE_BATCTL\n\tbool \"batctl\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tselect BR2_PACKAGE_LIBNL\n\thelp\n\t  Batctl is the configuration and debugging tool for batman-adv.\n\n\t  http://www.open-mesh.org/projects/batman-adv/wiki/Using-batctl\n\ncomment \"batctl needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/batctl/batctl.hash",
    "content": "# From https://downloads.open-mesh.org/batman/releases/batman-adv-2021.0/batctl-2021.0.tar.gz.sha1\nsha1  87d0bb34950cb70578a0ca5ce706513a8279a01c  batctl-2021.0.tar.gz\n# Locally calculated\nsha256  9cec8bf1952f885192749a9dc0318a54633b717aaf05c438d504efd83f5201e4  batctl-2021.0.tar.gz\nsha256  cecbf53d1148e13256ac29f8b900655b7fc8dc12d59939a95bc2323ea1747025  LICENSES/preferred/GPL-2.0\nsha256  323c587d0ccf10e376f8bf9a7f31fb4ca6078105194b42e0b1e0ee2bc9bde71f  LICENSES/preferred/MIT\n"
  },
  {
    "path": "package/batctl/batctl.mk",
    "content": "################################################################################\n#\n# batctl\n#\n################################################################################\n\nBATCTL_VERSION = 2021.0\nBATCTL_SITE = http://downloads.open-mesh.org/batman/releases/batman-adv-$(BATCTL_VERSION)\nBATCTL_LICENSE = GPL-2.0, MIT (batman_adv.h, list.h)\nBATCTL_LICENSE_FILES = LICENSES/preferred/GPL-2.0 LICENSES/preferred/MIT\nBATCTL_DEPENDENCIES = libnl host-pkgconf\n\ndefine BATCTL_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) all\nendef\n\ndefine BATCTL_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tPREFIX=/usr DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/batman-adv/Config.in",
    "content": "comment \"batman-adv needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_BATMAN_ADV\n\tbool \"batman-adv\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  batman-adv mesh networking kernel module\n\t  Note: batman-adv is part of the linux mainline\n\t  kernel since version 2.6.38\n\n\t  https://www.open-mesh.org/projects/batman-adv/\n\nif BR2_PACKAGE_BATMAN_ADV\n\nconfig BR2_PACKAGE_BATMAN_ADV_DEBUG\n\tbool \"enable debugging\"\n\thelp\n\t  Enables B.A.T.M.A.N. debugging.\n\nconfig BR2_PACKAGE_BATMAN_ADV_NC\n\tbool \"enable network coding\"\n\thelp\n\t  Enables B.A.T.M.A.N. network coding.\n\t  Note: this requires promiscuous mode on ALL nodes!\n\n\t  https://www.open-mesh.org/projects/batman-adv/wiki/NetworkCoding\n\nconfig BR2_PACKAGE_BATMAN_ADV_BATMAN_V\n\tbool \"enable B.A.T.M.A.N. V protocol (experimental)\"\n\thelp\n\t  Enables B.A.T.M.A.N. V network protocol.\n\t  This is the next-gen protocol and is experimental at this\n\t  time.\n\n\t  https://www.open-mesh.org/projects/batman-adv/wiki/BATMAN_V\n\nendif\n"
  },
  {
    "path": "package/batman-adv/batman-adv.hash",
    "content": "# From https://downloads.open-mesh.org/batman/releases/batman-adv-2021.1/batman-adv-2021.1.tar.gz.sha1\nsha1  27a0dc7cb74b868bc0ab52794ecedd0448f0fb61  batman-adv-2021.1.tar.gz\n\n# Hash for license files\nsha256  5a989ba580897268373bd516b87b588061f344af773a0f6b038a3d8d2af028a1  batman-adv-2021.0.tar.gz\nsha256  cecbf53d1148e13256ac29f8b900655b7fc8dc12d59939a95bc2323ea1747025  LICENSES/preferred/GPL-2.0\nsha256  323c587d0ccf10e376f8bf9a7f31fb4ca6078105194b42e0b1e0ee2bc9bde71f  LICENSES/preferred/MIT\n"
  },
  {
    "path": "package/batman-adv/batman-adv.mk",
    "content": "################################################################################\n#\n# batman-adv\n#\n################################################################################\n\nBATMAN_ADV_VERSION = 2021.1\nBATMAN_ADV_SITE = https://downloads.open-mesh.org/batman/stable/sources/batman-adv\nBATMAN_ADV_LICENSE = GPL-2.0, MIT (batman_adv.h)\nBATMAN_ADV_LICENSE_FILES = LICENSES/preferred/GPL-2.0 LICENSES/preferred/MIT\n\nBATMAN_ADV_CFLAGS = \\\n\t-I$(@D)/compat-include/ \\\n\t-I$(@D)/include/ \\\n\t-include $(@D)/compat.h \\\n\t-DBATADV_SOURCE_VERSION=\\\"\\\\\\\"$(BATMAN_ADV_VERSION)\\\\\\\"\\\"\n\n# Bridge Loop Avoidance, Distributed Arp Table are always enabled\nBATMAN_ADV_MODULE_MAKE_OPTS = \\\n\tKVER=$(LINUX_VERSION_PROBED) \\\n\tINSTALL_MOD_DIR=updates/net/batman-adv \\\n\tNOSTDINC_FLAGS=\"$(BATMAN_ADV_CFLAGS)\" \\\n\tCONFIG_BATMAN_ADV=m \\\n\tCONFIG_BATMAN_ADV_BLA=y \\\n\tCONFIG_BATMAN_ADV_DAT=y \\\n\tCONFIG_BATMAN_ADV_MCAST=y \\\n\tCONFIG_BATMAN_ADV_BATMAN_V=$(if $(BR2_PACKAGE_BATMAN_ADV_BATMAN_V),y,n) \\\n\tCONFIG_BATMAN_ADV_DEBUG=$(if $(BR2_PACKAGE_BATMAN_ADV_DEBUG),y,n) \\\n\tCONFIG_BATMAN_ADV_NC=$(if $(BR2_PACKAGE_BATMAN_ADV_NC),y,n)\n\nBATMAN_ADV_MODULE_SUBDIRS = net/batman-adv\n\ndefine BATMAN_ADV_CONFIGURE_CMDS\n\t$(BATMAN_ADV_MODULE_MAKE_OPTS) $(@D)/gen-compat-autoconf.sh $(@D)/compat-autoconf.h\nendef\n\ndefine BATMAN_ADV_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_LIBCRC32C)\nendef\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/bats-core/Config.in",
    "content": "config BR2_PACKAGE_BATS_CORE\n\tbool \"bats\"\n\tdepends on BR2_PACKAGE_BASH # runtime\n\thelp\n\t  Bats: Bash Automated Testing System\n\n\t  Bats is a TAP-compliant testing framework for Bash. It\n\t  provides a simple way to verify that the UNIX programs you\n\t  write behave as expected.\n\n\t  https://github.com/bats-core/bats-core\n"
  },
  {
    "path": "package/bats-core/bats-core.hash",
    "content": "# Locally calculated\nsha256  bff517da043ae24440ec8272039f396c2a7907076ac67693c0f18d4a17c08f7d  bats-core-1.4.1.tar.gz\n\n# License files\nsha256  55074b2b3b87809105034e1468e59076554d76a80c67bcc592000cc3d929852d  LICENSE.md\n"
  },
  {
    "path": "package/bats-core/bats-core.mk",
    "content": "################################################################################\n#\n# bats-core\n#\n################################################################################\n\nBATS_CORE_VERSION = 1.4.1\nBATS_CORE_SITE = $(call github,bats-core,bats-core,v$(BATS_CORE_VERSION))\nBATS_CORE_LICENSE = MIT\nBATS_CORE_LICENSE_FILES = LICENSE.md\n\ndefine BATS_CORE_INSTALL_TARGET_CMDS\n\t$(@D)/install.sh $(TARGET_DIR)/usr\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/bayer2rgb-neon/Config.in",
    "content": "config BR2_PACKAGE_BAYER2RGB_NEON\n\tbool \"bayer2rgb-neon\"\n\tdepends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\thelp\n\t  bayer2rgb-neon is a library which allows\n\t  to decode raw camera bayer to RGB using\n\t  NEON hardware acceleration.\n\n\t  https://gitlab-ext.sigma-chemnitz.de/ensc/bayer2rgb\n\ncomment \"bayer2rgb-neon needs a toolchain w/ C++, dynamic library, gcc >= 4.9\"\n\tdepends on BR2_arm && BR2_ARM_CPU_HAS_NEON\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/bayer2rgb-neon/bayer2rgb-neon.hash",
    "content": "# Locally calculated\nsha256  edf451dbb52ad67eb35f9043390bd75ea7228d493c99184aae80b3bd27beab62  bayer2rgb-neon-15feb1115b4828488cc36d09f625e23e8b6a0ec5-br1.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/bayer2rgb-neon/bayer2rgb-neon.mk",
    "content": "################################################################################\n#\n# bayer2rgb-neon\n#\n################################################################################\n\nBAYER2RGB_NEON_VERSION = 15feb1115b4828488cc36d09f625e23e8b6a0ec5\nBAYER2RGB_NEON_SITE = https://gitlab-ext.sigma-chemnitz.de/ensc/bayer2rgb.git\nBAYER2RGB_NEON_SITE_METHOD = git\nBAYER2RGB_NEON_LICENSE = GPL-3.0\nBAYER2RGB_NEON_LICENSE_FILES = COPYING\nBAYER2RGB_NEON_INSTALL_STAGING = YES\nBAYER2RGB_NEON_DEPENDENCIES = host-pkgconf host-gengetopt\nBAYER2RGB_NEON_AUTORECONF = YES\n\nBAYER2RGB_NEON_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_arm),y)\nBAYER2RGB_NEON_CFLAGS += -mfpu=neon\nendif\n\nBAYER2RGB_NEON_CONF_ENV = CFLAGS=\"$(BAYER2RGB_NEON_CFLAGS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bc/0001-bc-use-MAKEINFO-variable-for-docs.patch",
    "content": "From 7dc22308b2974fd093b6a564b7b28ddc20ddf4a6 Mon Sep 17 00:00:00 2001\nFrom: Matt Weber <matthew.weber@rockwellcollins.com>\nDate: Fri, 13 Sep 2019 13:45:02 -0500\nSubject: [PATCH] bc: use MAKEINFO variable for docs\n\nUse the appropiate MAKEINFO variable rather than the hardcoded makeinfo\ncommand directly, otherwise missing logic never works.\n\nFixes:\nhttp://autobuild.buildroot.net/results/b0b/b0b9dced0014a5a8026fa972f95085e8bd16a07b/\n\n[Recreated for 1.0.7.1 by Matt W and applied to Makefile.am instead of\n Makefile.in]\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n doc/Makefile.am | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/doc/Makefile.am b/doc/Makefile.am\nindex 1bdc478..f873b6a 100644\n--- a/doc/Makefile.am\n+++ b/doc/Makefile.am\n@@ -1,7 +1,7 @@\n ## Process this file with automake to produce Makefile.in\n \n info_TEXINFOS = bc.texi dc.texi\n-MAKEINFO = makeinfo --no-split\n+MAKEINFO = @MAKEINFO@ --no-split\n \n MAINTAINERCLEANFILES = Makefile.in\n \n-- \n2.17.1\n\n"
  },
  {
    "path": "package/bc/0002-notice-read-and-write-errors-on-input-and-output.patch",
    "content": "From af96fb92052c307818eefa4b687f964f1e3f542e Mon Sep 17 00:00:00 2001\nFrom: Matt Weber <matthew.weber@rockwellcollins.com>\nDate: Thu, 12 Sep 2019 15:04:35 -0500\nSubject: [PATCH] notice read and write errors on input and output\n\nQuoting from the bug report:\n   bc (1.06-19ubuntu1) dapper; urgency=low\n   * Make dc notice read and write errors on its input and output.\n     I grepped for mentions of the strings `putc', `print', `getc',\n     `FILE', `stdin', `stdout' and `stderr' and added calls to new\n     error-checking functions unless it was clear from the\n     immediately-surrounding code that the program was exiting\n     nonzero, or would exit nonzero if the call failed.  I ignored\n     hits in lib/getopt*, which seems to pervasively ignore write\n     errors when printing usage messages, in the hope that these\n     were correct.  I _think_ I got them all.  -iwj.\n     -- Ian Jackson <iwj@ubuntu.com>  Tue,  4 Apr 2006 17:21:02 +0100\n\nUpsteam:\nhttps://sources.debian.org/patches/bc/1.07.1-2/05_notice_read_write_errors.diff/\n\n[Reformatted to GIT for 1.0.7.1 by Matt W]\nUpdated by Ryan Kavanagh <rak@debian.org> for 1.0.7.1 on 26 July 2017.\nAuthor: Ian Jackson <iwj@ubuntu.com>\nOrigin: other\nBug-Debian: http://bugs.debian.org/488735\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n bc/execute.c | 10 +++++++++-\n bc/main.c    |  3 +++\n bc/sbc.y     |  2 ++\n bc/scan.c    |  2 ++\n bc/scan.l    |  3 +++\n bc/util.c    | 15 ++++++++++++--\n dc/dc.c      |  3 +++\n dc/eval.c    | 55 +++++++++++++++++++++++++++++++++++++++-------------\n dc/misc.c    |  1 +\n dc/numeric.c |  9 +++++++++\n dc/stack.c   | 11 ++++++++++-\n dc/string.c  |  2 ++\n h/number.h   | 11 +++++++----\n lib/number.c | 24 +++++++++++++++++++++++\n 14 files changed, 129 insertions(+), 22 deletions(-)\n\ndiff --git a/bc/execute.c b/bc/execute.c\nindex 256e4b7..50eac49 100644\n--- a/bc/execute.c\n+++ b/bc/execute.c\n@@ -104,6 +104,7 @@ execute (void)\n \t      }\n \t    out_char ('\\n');\n \t  }\n+\tcheckferror_output(stdout);\n       }\n #endif\n \n@@ -224,6 +225,7 @@ execute (void)\n \t\t}\n \t    }\n \tfflush (stdout);\n+\tcheckferror_output(stdout);\n \tbreak;\n \n       case 'R' : /* Return from function */\n@@ -259,6 +261,7 @@ execute (void)\n \tif (inst == 'W') out_char ('\\n');\n \tstore_var (4);  /* Special variable \"last\". */\n \tfflush (stdout);\n+\tcheckferror_output(stdout);\n \tpop ();\n \tbreak;\n \n@@ -342,6 +345,7 @@ execute (void)\n       case 'w' : /* Write a string to the output. */\n \twhile ((ch = byte(&pc)) != '\"') out_schar (ch);\n \tfflush (stdout);\n+\tcheckferror_output(stdout);\n \tbreak;\n \t\t   \n       case 'x' : /* Exchange Top of Stack with the one under the tos. */\n@@ -549,7 +553,10 @@ execute (void)\n     {\n       signal (SIGINT, use_quit);\n       if (had_sigint)\n-\tprintf (\"\\ninterrupted execution.\\n\");\n+\t{\n+\t  printf (\"\\ninterrupted execution.\\n\");\n+\t  checkferror_output(stdout);\n+\t}\n     }\n }\n \n@@ -584,6 +591,7 @@ input_char (void)\n \t  out_col = 0;  /* Saw a new line */\n \t}\n     }\n+  checkferror_input(stdin);\n \n   /* Classify and preprocess the input character. */\n   if (isdigit(in_ch))\ndiff --git a/bc/main.c b/bc/main.c\nindex 012075c..c96207b 100644\n--- a/bc/main.c\n+++ b/bc/main.c\n@@ -353,6 +353,9 @@ use_quit (int sig)\n   errno = save;\n #else\n   write (1, \"\\n(interrupt) Exiting bc.\\n\", 26);\n+#ifdef READLINE\n+  rl_initialize (); /* Clear readline buffer */\n+#endif\n   bc_exit(0);\n #endif\n }\ndiff --git a/bc/sbc.y b/bc/sbc.y\nindex 586686b..921ab1e 100644\n--- a/bc/sbc.y\n+++ b/bc/sbc.y\n@@ -86,7 +86,9 @@ program\t\t\t: /* empty */\n \t\t\t      if (interactive && !quiet)\n \t\t\t\t{\n \t\t\t\t  show_bc_version ();\n+\t\t\t\t  checkferror_output(stdout);\n \t\t\t\t  welcome ();\n+\t\t\t\t  checkferror_output(stdout);\n \t\t\t\t}\n \t\t\t    }\n \t\t\t| program input_item\ndiff --git a/bc/scan.c b/bc/scan.c\nindex b237f55..8dee4e9 100644\n--- a/bc/scan.c\n+++ b/bc/scan.c\n@@ -791,6 +791,7 @@ bcel_input (char *buf, yy_size_t  *result, int max)\n       if (bcel_len != 0)\n \thistory (hist, &histev, H_ENTER, bcel_line); \n       fflush (stdout);\n+      checkferror_output(stdout);\n     }\n \n   if (bcel_len <= max)\n@@ -863,6 +864,7 @@ rl_input (char *buf, int *result, int max)\n \tadd_history (rl_line); \n       rl_line[rl_len-1] = '\\n';\n       fflush (stdout);\n+      checkferror_output(stdout);\n     }\n \n   if (rl_len <= max)\ndiff --git a/bc/scan.l b/bc/scan.l\nindex eb2e2dd..79186bb 100644\n--- a/bc/scan.l\n+++ b/bc/scan.l\n@@ -99,6 +99,7 @@ bcel_input (char *buf, yy_size_t  *result, int max)\n       if (bcel_len != 0)\n \thistory (hist, &histev, H_ENTER, bcel_line); \n       fflush (stdout);\n+      checkferror_output(stdout);\n     }\n \n   if (bcel_len <= max)\n@@ -171,6 +172,7 @@ rl_input (char *buf, int *result, int max)\n \tadd_history (rl_line); \n       rl_line[rl_len-1] = '\\n';\n       fflush (stdout);\n+      checkferror_output(stdout);\n     }\n \n   if (rl_len <= max)\n@@ -295,6 +297,7 @@ limits return(Limits);\n \t    if (c == EOF)\n \t      {\n \t\tfprintf (stderr,\"EOF encountered in a comment.\\n\");\n+                checkferror_output(stderr);\n \t\tbreak;\n \t      }\n \t  }\ndiff --git a/bc/util.c b/bc/util.c\nindex 8eba093..cacd796 100644\n--- a/bc/util.c\n+++ b/bc/util.c\n@@ -247,9 +247,10 @@ init_gen (void)\n   continue_label = 0;\n   next_label  = 1;\n   out_count = 2;\n-  if (compile_only) \n+  if (compile_only) {\n     printf (\"@i\");\n-  else\n+    checkferror_output(stdout);\n+  } else\n     init_load ();\n   had_error = FALSE;\n   did_gen = FALSE;\n@@ -272,6 +273,7 @@ generate (const char *str)\n \t  printf (\"\\n\");\n \t  out_count = 0;\n \t}\n+      checkferror_output(stdout);\n     }\n   else\n     load_code (str);\n@@ -289,6 +291,7 @@ run_code(void)\n       if (compile_only)\n \t{\n \t  printf (\"@r\\n\"); \n+\t  checkferror_output(stdout);\n \t  out_count = 0;\n \t}\n       else\n@@ -326,6 +329,7 @@ out_char (int ch)\n \t}\n       putchar (ch);\n     }\n+  checkferror_output(stdout);\n }\n \n /* Output routines: Write a character CH to the standard output.\n@@ -355,6 +359,7 @@ out_schar (int ch)\n \t}\n       putchar (ch);\n     }\n+  checkferror_output(stdout);\n }\n \n \n@@ -639,6 +644,7 @@ limits(void)\n #ifdef OLD_EQ_OP\n   printf (\"Old assignment operatiors are valid. (=-, =+, ...)\\n\");\n #endif \n+  checkferror_output(stdout);\n }\n \n /* bc_malloc will check the return value so all other places do not\n@@ -703,6 +709,7 @@ yyerror (str, va_alist)\n   fprintf (stderr,\"%s %d: \",name,line_no);\n   vfprintf (stderr, str, args);\n   fprintf (stderr, \"\\n\");\n+  checkferror_output(stderr);\n   had_error = TRUE;\n   va_end (args);\n }\n@@ -743,6 +750,7 @@ ct_warn (mesg, va_alist)\n       fprintf (stderr,\"%s %d: Error: \",name,line_no);\n       vfprintf (stderr, mesg, args);\n       fprintf (stderr, \"\\n\");\n+      checkferror_output(stderr);\n       had_error = TRUE;\n     }\n   else\n@@ -755,6 +763,7 @@ ct_warn (mesg, va_alist)\n \tfprintf (stderr,\"%s %d: (Warning) \",name,line_no);\n \tvfprintf (stderr, mesg, args);\n \tfprintf (stderr, \"\\n\");\n+\tcheckferror_output(stderr);\n       }\n   va_end (args);\n }\n@@ -789,6 +798,7 @@ rt_error (mesg, va_alist)\n   va_end (args);\n   \n   fprintf (stderr, \"\\n\");\n+  checkferror_output(stderr);\n   runtime_error = TRUE;\n }\n \n@@ -823,6 +833,7 @@ rt_warn (const char *mesg)\n   va_end (args);\n \n   fprintf (stderr, \"\\n\");\n+  checkferror_output(stderr);\n }\n \n /* bc_exit: Make sure to reset the edit state. */\ndiff --git a/dc/dc.c b/dc/dc.c\nindex 6a2bb26..ccdb1c2 100644\n--- a/dc/dc.c\n+++ b/dc/dc.c\n@@ -59,6 +59,7 @@ static void\n bug_report_info DC_DECLVOID()\n {\n \tprintf(\"Email bug reports to:  bug-dc@gnu.org .\\n\");\n+\tcheckferror_output(stdout);\n }\n \n static void\n@@ -69,6 +70,7 @@ show_version DC_DECLVOID()\n This is free software; see the source for copying conditions.  There is NO\\n\\\n warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\\n\\\n to the extent permitted by law.\\n\", DC_COPYRIGHT);\n+\tcheckferror_output(stdout);\n }\n \n /* your generic usage function */\n@@ -85,6 +87,7 @@ Usage: %s [OPTION] [file ...]\\n\\\n \\n\\\n \", progname);\n \tbug_report_info();\n+\tcheckferror_output(f);\n }\n \n /* returns a pointer to one past the last occurance of c in s,\ndiff --git a/dc/eval.c b/dc/eval.c\nindex 05a3d9e..6c54e61 100644\n--- a/dc/eval.c\n+++ b/dc/eval.c\n@@ -97,12 +97,15 @@ static int input_pushback;\n static int\n input_fil DC_DECLVOID()\n {\n+\t\tint c;\n \tif (input_pushback != EOF){\n-\t\tint c = input_pushback;\n+\t\tc = input_pushback;\n \t\tinput_pushback = EOF;\n \t\treturn c;\n \t}\n-\treturn getc(input_fil_fp);\n+\tc = getc(input_fil_fp);\n+\tcheckferror_input(input_fil_fp);\n+\treturn c;\n }\n \n /* passed as an argument to dc_getnum */\n@@ -301,11 +304,13 @@ dc_func DC_DECLARG((c, peekc, negcmp))\n \t\t\t\ttmpint = dc_num2int(datum.v.number, DC_TOSS);\n \t\t\tif (2 <= tmpint  &&  tmpint <= DC_IBASE_MAX)\n \t\t\t\tdc_ibase = tmpint;\n-\t\t\telse\n+\t\t\telse {\n \t\t\t\tfprintf(stderr,\n \t\t\t\t\t\t\"%s: input base must be a number \\\n between 2 and %d (inclusive)\\n\",\n \t\t\t\t\t\tprogname, DC_IBASE_MAX);\n+\t\t\t\tcheckferror_output(stderr);\n+\t\t\t}\n \t\t}\n \t\tbreak;\n \tcase 'k':\t/* set scale to value on top of stack */\n@@ -313,11 +318,12 @@ between 2 and %d (inclusive)\\n\",\n \t\t\ttmpint = -1;\n \t\t\tif (datum.dc_type == DC_NUMBER)\n \t\t\t\ttmpint = dc_num2int(datum.v.number, DC_TOSS);\n-\t\t\tif ( ! (tmpint >= 0) )\n+\t\t\tif ( ! (tmpint >= 0) ) {\n \t\t\t\tfprintf(stderr,\n \t\t\t\t\t\t\"%s: scale must be a nonnegative number\\n\",\n \t\t\t\t\t\tprogname);\n-\t\t\telse\n+\t\t\t\tcheckferror_output(stderr);\n+\t\t\t} else\n \t\t\t\tdc_scale = tmpint;\n \t\t}\n \t\tbreak;\n@@ -341,11 +347,12 @@ between 2 and %d (inclusive)\\n\",\n \t\t\ttmpint = 0;\n \t\t\tif (datum.dc_type == DC_NUMBER)\n \t\t\t\ttmpint = dc_num2int(datum.v.number, DC_TOSS);\n-\t\t\tif ( ! (tmpint > 1) )\n+\t\t\tif ( ! (tmpint > 1) ) {\n \t\t\t\tfprintf(stderr,\n \t\t\t\t\t\t\"%s: output base must be a number greater than 1\\n\",\n \t\t\t\t\t\tprogname);\n-\t\t\telse\n+\t\t\t\tcheckferror_output(stderr);\n+\t\t\t} else\n \t\t\t\tdc_obase = tmpint;\n \t\t}\n \t\tbreak;\n@@ -378,6 +385,7 @@ between 2 and %d (inclusive)\\n\",\n \t\t\t\tfprintf(stderr,\n \t\t\t\t\t\t\"%s: square root of nonnumeric attempted\\n\",\n \t\t\t\t\t\tprogname);\n+\t\t\t\tcheckferror_output(stderr);\n \t\t\t}else if (dc_sqrt(datum.v.number, dc_scale, &tmpnum) == DC_SUCCESS){\n \t\t\t\tdc_free_num(&datum.v.number);\n \t\t\t\tdatum.v.number = tmpnum;\n@@ -424,6 +432,7 @@ between 2 and %d (inclusive)\\n\",\n \t\t\t\tdc_garbage(\"at top of stack\", -1);\n \t\t}\n \t\tfflush(stdout);\n+\t\tcheckferror_output(stdout);\n \t\tbreak;\n \tcase 'Q':\t/* quit out of top-of-stack nested evals;\n \t\t\t\t * pops value from stack;\n@@ -440,6 +449,7 @@ between 2 and %d (inclusive)\\n\",\n \t\t\tfprintf(stderr,\n \t\t\t\t\t\"%s: Q command requires a number >= 1\\n\",\n \t\t\t\t\tprogname);\n+\t\t\tcheckferror_output(stderr);\n \t\t}\n \t\tbreak;\n \tcase 'R':\t/* pop a value off of the evaluation stack,;\n@@ -483,11 +493,12 @@ between 2 and %d (inclusive)\\n\",\n \t\t\tif (datum.dc_type == DC_NUMBER)\n \t\t\t\ttmpint = dc_num2int(datum.v.number, DC_TOSS);\n \t\t\tif (dc_pop(&datum) == DC_SUCCESS){\n-\t\t\t\tif (tmpint < 0)\n+\t\t\t\tif (tmpint < 0) {\n \t\t\t\t\tfprintf(stderr,\n \t\t\t\t\t\t\t\"%s: array index must be a nonnegative integer\\n\",\n \t\t\t\t\t\t\tprogname);\n-\t\t\t\telse\n+\t\t\t\t\tcheckferror_output(stderr);\n+\t\t\t\t} else\n \t\t\t\t\tdc_array_set(peekc, tmpint, datum);\n \t\t\t}\n \t\t}\n@@ -499,18 +510,21 @@ between 2 and %d (inclusive)\\n\",\n \t\t\ttmpint = -1;\n \t\t\tif (datum.dc_type == DC_NUMBER)\n \t\t\t\ttmpint = dc_num2int(datum.v.number, DC_TOSS);\n-\t\t\tif (tmpint < 0)\n+\t\t\tif (tmpint < 0) {\n \t\t\t\tfprintf(stderr,\n \t\t\t\t\t\t\"%s: array index must be a nonnegative integer\\n\",\n \t\t\t\t\t\tprogname);\n-\t\t\telse\n+\t\t\t\tcheckferror_output(stderr);\n+\t\t\t} else\n \t\t\t\tdc_push(dc_array_get(peekc, tmpint));\n \t\t}\n \t\treturn DC_EATONE;\n \n \tdefault:\t/* What did that user mean? */\n \t\tfprintf(stderr, \"%s: \", progname);\n+\t\tcheckferror_output(stderr);\n \t\tdc_show_id(stdout, c, \" unimplemented\\n\");\n+\t\tcheckferror_output(stdout);\n \t\tbreak;\n \t}\n \treturn DC_OKAY;\n@@ -538,6 +552,7 @@ evalstr DC_DECLARG((string))\n \t\tfprintf(stderr,\n \t\t\t\t\"%s: eval called with non-string argument\\n\",\n \t\t\t\tprogname);\n+\t\tcheckferror_output(stderr);\n \t\treturn DC_OKAY;\n \t}\n \tinterrupt_seen = 0;\n@@ -635,6 +650,7 @@ evalstr DC_DECLARG((string))\n \t\t\t\treturn DC_FAIL;\n \t\t\t}\n \t\t\tfprintf(stderr, \"%s: unexpected EOS\\n\", progname);\n+\t\t\tcheckferror_output(stderr);\n \t\t\treturn DC_OKAY;\n \t\t}\n \t}\n@@ -692,6 +708,7 @@ dc_evalfile DC_DECLARG((fp))\n \tstdin_lookahead = EOF;\n \tfor (c=getc(fp); c!=EOF; c=peekc){\n \t\tpeekc = getc(fp);\n+\t\tcheckferror_input(stdin);\n \t\t/*\n \t\t * The following if() is the only place where ``stdin_lookahead''\n \t\t * might be set to other than EOF:\n@@ -717,24 +734,30 @@ dc_evalfile DC_DECLARG((fp))\n \t\tsignal(SIGINT, sigint_handler);\n \t\tswitch (dc_func(c, peekc, negcmp)){\n \t\tcase DC_OKAY:\n-\t\t\tif (stdin_lookahead != peekc  &&  fp == stdin)\n+\t\t\tif (stdin_lookahead != peekc  &&  fp == stdin) {\n \t\t\t\tpeekc = getc(fp);\n+\t\t\t\tcheckferror_input(stdin);\n+\t\t\t}\n \t\t\tbreak;\n \t\tcase DC_EATONE:\n \t\t\tpeekc = getc(fp);\n+\t\t\tcheckferror_input(fp);\n \t\t\tbreak;\n \t\tcase DC_EVALREG:\n \t\t\t/*commands which send us here shall guarantee that peekc!=EOF*/\n \t\t\tc = peekc;\n \t\t\tpeekc = getc(fp);\n+\t\t\tcheckferror_input(fp);\n \t\t\tstdin_lookahead = peekc;\n \t\t\tif (dc_register_get(c, &datum) != DC_SUCCESS)\n \t\t\t\tbreak;\n \t\t\tdc_push(datum);\n \t\t\t/*@fallthrough@*/\n \t\tcase DC_EVALTOS:\n-\t\t\tif (stdin_lookahead != peekc  &&  fp == stdin)\n+\t\t\tif (stdin_lookahead != peekc  &&  fp == stdin) {\n \t\t\t\tpeekc = getc(fp);\n+\t\t\t\tcheckferror_input(stdin);\n+\t\t\t}\n \t\t\tif (dc_pop(&datum) == DC_SUCCESS){\n \t\t\t\tif (datum.dc_type == DC_NUMBER){\n \t\t\t\t\tdc_push(datum);\n@@ -744,6 +767,7 @@ dc_evalfile DC_DECLARG((fp))\n \t\t\t\t\t\t\tgoto reset_and_exit_quit;\n \t\t\t\t\t\tfprintf(stderr, \"%s: Q command argument exceeded \\\n string execution depth\\n\", progname);\n+\t\t\t\t\t\tcheckferror_output(stderr);\n \t\t\t\t\t}\n \t\t\t\t}else{\n \t\t\t\t\tdc_garbage(\"at top of stack\", -1);\n@@ -756,8 +780,11 @@ string execution depth\\n\", progname);\n \t\t\tfprintf(stderr,\n \t\t\t\t\t\"%s: Q command argument exceeded string execution depth\\n\",\n \t\t\t\t\tprogname);\n-\t\t\tif (stdin_lookahead != peekc  &&  fp == stdin)\n+\t\t\tcheckferror_output(stderr);\n+\t\t\tif (stdin_lookahead != peekc  &&  fp == stdin) {\n \t\t\t\tpeekc = getc(fp);\n+\t\t\t\tcheckferror_input(stdin);\n+\t\t\t}\n \t\t\tbreak;\n \n \t\tcase DC_INT:\ndiff --git a/dc/misc.c b/dc/misc.c\nindex cd23602..cd910b8 100644\n--- a/dc/misc.c\n+++ b/dc/misc.c\n@@ -89,6 +89,7 @@ dc_show_id DC_DECLARG((fp, id, suffix))\n \t\tfprintf(fp, \"'%c' (%#o)%s\", (unsigned int) id, id, suffix);\n \telse\n \t\tfprintf(fp, \"%#o%s\", (unsigned int) id, suffix);\n+\tcheckferror_output(fp);\n }\n \n \f\ndiff --git a/dc/numeric.c b/dc/numeric.c\nindex 37759de..60cfb85 100644\n--- a/dc/numeric.c\n+++ b/dc/numeric.c\n@@ -133,6 +133,7 @@ dc_div DC_DECLARG((a, b, kscale, result))\n \tbc_init_num(CastNumPtr(result));\n \tif (bc_divide(CastNum(a), CastNum(b), CastNumPtr(result), kscale)){\n \t\tfprintf(stderr, \"%s: divide by zero\\n\", progname);\n+\t\tcheckferror_output(stderr);\n \t\treturn DC_DOMAIN_ERROR;\n \t}\n \treturn DC_SUCCESS;\n@@ -155,6 +156,7 @@ dc_divrem DC_DECLARG((a, b, kscale, quotient, remainder))\n \tif (bc_divmod(CastNum(a), CastNum(b),\n \t\t\t\t\t\tCastNumPtr(quotient), CastNumPtr(remainder), kscale)){\n \t\tfprintf(stderr, \"%s: divide by zero\\n\", progname);\n+\t\tcheckferror_output(stderr);\n \t\treturn DC_DOMAIN_ERROR;\n \t}\n \treturn DC_SUCCESS;\n@@ -173,6 +175,7 @@ dc_rem DC_DECLARG((a, b, kscale, result))\n \tbc_init_num(CastNumPtr(result));\n \tif (bc_modulo(CastNum(a), CastNum(b), CastNumPtr(result), kscale)){\n \t\tfprintf(stderr, \"%s: remainder by zero\\n\", progname);\n+\t\tcheckferror_output(stderr);\n \t\treturn DC_DOMAIN_ERROR;\n \t}\n \treturn DC_SUCCESS;\n@@ -225,6 +228,7 @@ dc_sqrt DC_DECLARG((value, kscale, result))\n \ttmp = bc_copy_num(CastNum(value));\n \tif (!bc_sqrt(&tmp, kscale)){\n \t\tfprintf(stderr, \"%s: square root of negative number\\n\", progname);\n+\t\tcheckferror_output(stderr);\n \t\tbc_free_num(&tmp);\n \t\treturn DC_DOMAIN_ERROR;\n \t}\n@@ -470,6 +474,7 @@ dc_dump_num DC_DECLARG((dcvalue, discard_p))\n \n \tfor (cur=top_of_stack; cur; cur=next) {\n \t\tputchar(cur->digit);\n+\t\tcheckferror_output(stdout);\n \t\tnext = cur->link;\n \t\tfree(cur);\n \t}\n@@ -587,6 +592,8 @@ out_char (ch)\n \t\t\tout_col = 1;\n \t\t}\n \t\tputchar(ch);\n+                checkferror_output(stdout);\n+\t\tcheckferror_output(stderr);\n \t}\n }\n \n@@ -626,6 +633,7 @@ rt_error (mesg, va_alist)\n \tvfprintf (stderr, mesg, args);\n \tva_end (args);\n \tfprintf (stderr, \"\\n\");\n+\tcheckferror_output(stderr);\n }\n \n \n@@ -659,6 +667,7 @@ rt_warn (mesg, va_alist)\n \tvfprintf (stderr, mesg, args);\n \tva_end (args);\n \tfprintf (stderr, \"\\n\");\n+\tcheckferror_output(stderr);\n }\n \n \f\ndiff --git a/dc/stack.c b/dc/stack.c\nindex 49422df..174411d 100644\n--- a/dc/stack.c\n+++ b/dc/stack.c\n@@ -35,7 +35,10 @@\n #include \"dc-regdef.h\"\n \n /* an oft-used error message: */\n-#define Empty_Stack\tfprintf(stderr, \"%s: stack empty\\n\", progname)\n+#define Empty_Stack do{\t\t\t\t\t\\\n+    fprintf(stderr, \"%s: stack empty\\n\", progname);\t\\\n+    checkferror_output(stderr);\t\t\t\t\\\n+  }while(0)\n \n \n /* simple linked-list implementation suffices: */\n@@ -91,6 +94,7 @@ dc_binop DC_DECLARG((op, kscale))\n \tif (dc_stack->value.dc_type!=DC_NUMBER\n \t\t\t|| dc_stack->link->value.dc_type!=DC_NUMBER){\n \t\tfprintf(stderr, \"%s: non-numeric value\\n\", progname);\n+\t\tcheckferror_output(stderr);\n \t\treturn;\n \t}\n \t(void)dc_pop(&b);\n@@ -131,6 +135,7 @@ dc_binop2 DC_DECLARG((op, kscale))\n \tif (dc_stack->value.dc_type!=DC_NUMBER\n \t\t\t|| dc_stack->link->value.dc_type!=DC_NUMBER){\n \t\tfprintf(stderr, \"%s: non-numeric value\\n\", progname);\n+\t\tcheckferror_output(stderr);\n \t\treturn;\n \t}\n \t(void)dc_pop(&b);\n@@ -169,6 +174,7 @@ dc_cmpop DC_DECLVOID()\n \tif (dc_stack->value.dc_type!=DC_NUMBER\n \t\t\t|| dc_stack->link->value.dc_type!=DC_NUMBER){\n \t\tfprintf(stderr, \"%s: non-numeric value\\n\", progname);\n+\t\tcheckferror_output(stderr);\n \t\treturn 0;\n \t}\n \t(void)dc_pop(&b);\n@@ -206,6 +212,7 @@ dc_triop DC_DECLARG((op, kscale))\n \t\t\t|| dc_stack->link->value.dc_type!=DC_NUMBER\n \t\t\t|| dc_stack->link->link->value.dc_type!=DC_NUMBER){\n \t\tfprintf(stderr, \"%s: non-numeric value\\n\", progname);\n+\t\tcheckferror_output(stderr);\n \t\treturn;\n \t}\n \t(void)dc_pop(&c);\n@@ -327,6 +334,7 @@ dc_register_get DC_DECLARG((regid, result))\n \t\t*result = dc_int2data(0);\n \t}else if (r->value.dc_type==DC_UNINITIALIZED){\n \t\tfprintf(stderr, \"%s: BUG: register \", progname);\n+\t\tcheckferror_output(stderr);\n \t\tdc_show_id(stderr, regid, \" exists but is uninitialized?\\n\");\n \t\treturn DC_FAIL;\n \t}else{\n@@ -402,6 +410,7 @@ dc_register_pop DC_DECLARG((stackid, result))\n \tr = dc_register[stackid];\n \tif (r==NULL || r->value.dc_type==DC_UNINITIALIZED){\n \t\tfprintf(stderr, \"%s: stack register \", progname);\n+\t\tcheckferror_output(stderr);\n \t\tdc_show_id(stderr, stackid, \" is empty\\n\");\n \t\treturn DC_FAIL;\n \t}\ndiff --git a/dc/string.c b/dc/string.c\nindex dee9169..389d899 100644\n--- a/dc/string.c\n+++ b/dc/string.c\n@@ -94,6 +94,7 @@ dc_out_str DC_DECLARG((value, discard_flag))\n \tdc_discard discard_flag DC_DECLEND\n {\n \tfwrite(value->s_ptr, value->s_len, sizeof *value->s_ptr, stdout);\n+        checkferror_output(stdout);\n \tif (discard_flag == DC_TOSS)\n \t\tdc_free_str(&value);\n }\n@@ -169,6 +170,7 @@ dc_readstring DC_DECLARG((fp, ldelim, rdelim))\n \t\t}\n \t\t*p++ = c;\n \t}\n+\tcheckferror_input(fp);\n \treturn dc_makestring(line_buf, (size_t)(p-line_buf));\n }\n \ndiff --git a/h/number.h b/h/number.h\nindex abf6332..1983ab4 100644\n--- a/h/number.h\n+++ b/h/number.h\n@@ -23,10 +23,10 @@\n     You may contact the author by:\n        e-mail:  philnelson@acm.org\n       us-mail:  Philip A. Nelson\n-                Computer Science Department, 9062\n-                Western Washington University\n-                Bellingham, WA 98226-9062\n-       \n+\t\tComputer Science Department, 9062\n+\t\tWestern Washington University\n+\t\tBellingham, WA 98226-9062\n+\n *************************************************************************/\n \n #ifndef _NUMBER_H_\n@@ -140,4 +140,7 @@ void bc_out_num (bc_num num, int o_base, void (* out_char)(int),\n \t\t\t     int leading_zero);\n \n void bc_out_long (long val, int size, int space, void (*out_char)(int));\n+\n+void checkferror_input (FILE*);\n+void checkferror_output (FILE*);\n #endif\ndiff --git a/lib/number.c b/lib/number.c\nindex f394e92..80b33e3 100644\n--- a/lib/number.c\n+++ b/lib/number.c\n@@ -1713,6 +1713,7 @@ static void\n out_char (int c)\n {\n   putchar(c);\n+  checkferror_output(stdout);\n }\n \n \n@@ -1721,6 +1722,7 @@ pn (bc_num num)\n {\n   bc_out_num (num, 10, out_char, 0);\n   out_char ('\\n');\n+  checkferror_output(stdout);\n }\n \n \n@@ -1732,6 +1734,28 @@ pv (char *name, unsigned char *num, int len)\n   printf (\"%s=\", name);\n   for (i=0; i<len; i++) printf (\"%c\",BCD_CHAR(num[i]));\n   printf (\"\\n\");\n+  checkferror_output(stdout);\n }\n \n #endif\n+\f\n+/* check ferror() status and if so die */\n+void\n+checkferror_input (fp)\n+\tFILE *fp;\n+{\n+\tif (ferror(fp)) {\n+\t\tperror(\"dc: could not read input file\");\n+\t\texit(EXIT_FAILURE);\n+\t}\n+}\n+\n+void\n+checkferror_output (fp)\n+\tFILE *fp;\n+{\n+\tif (ferror(fp)) {\n+\t\tperror(\"dc: could not write output file\");\n+\t\texit(EXIT_FAILURE);\n+\t}\n+}\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/bc/0003-dc-fix-exit-code-of-q-command.patch",
    "content": "From 7243037e63bff34b08bb1c993787b98dee585b2f Mon Sep 17 00:00:00 2001\nFrom: Li Zhou <li.zhou@windriver.com>\nDate: Thu, 27 Jun 2019 13:10:47 +0800\nSubject: [PATCH] dc: fix exit code of q command\n\nThe exit code for \"echo q | dc\" is 1 for dc-1.4.1;\nwhile the exit code for \"echo q | dc\" is 0 for dc-1.4.\n\nHere is the answer from ken@gnu.org:\ndc-1.4 was right.  There was a rewrite of a chunk of code for 1.4.1 to\nfix a corner case in the Q command, and somehow the placement of the\nclean-up label for the 'q' command got misplaced on the error-handling\nbranch instead of the clean-exit branch.  The patch below fixes this\n(it is committed for whenever the next bc/dc release gets made).\n\nThanks for the report,\n        --Ken Pizzini\n\nUpstream:\nhttps://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-extended/bc/bc/0001-dc-fix-exit-code-of-q-command.patch\n\nSigned-off-by: Li Zhou <li.zhou@windriver.com>\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n dc/eval.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/dc/eval.c b/dc/eval.c\nindex 6c54e61..9c28f18 100644\n--- a/dc/eval.c\n+++ b/dc/eval.c\n@@ -841,10 +841,10 @@ error_fail:\n \tfprintf(stderr, \"%s: \", progname);\n \tperror(\"error reading input\");\n \treturn DC_FAIL;\n-reset_and_exit_quit:\n reset_and_exit_fail:\n \tsignal(SIGINT, sigint_default);\n \treturn DC_FAIL;\n+reset_and_exit_quit:\n reset_and_exit_success:\n \tsignal(SIGINT, sigint_default);\n \treturn DC_SUCCESS;\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/bc/0004-no-gen-libmath.patch",
    "content": "From a543af443c5f86b24ca89a994b75b6ef4751ac66 Mon Sep 17 00:00:00 2001\nFrom: Matt Weber <matthew.weber@rockwellcollins.com>\nDate: Thu, 12 Sep 2019 15:12:40 -0500\nSubject: [PATCH] no gen libmath\n\nThese rules are not cross-friendly so delete them.  libmath has been\ngenerated offline and included as part of this patch as the fbc tool\nused to generate that header is assuming the cross archtecture and\ncan't execute.\n\nUpstream:\nhttps://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-extended/bc/bc/no-gen-libmath.patch\nhttps://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-extended/bc/bc/libmath.h\n\n[Reformatted to GIT for 1.0.7.1 by Matt W]\nSigned-off-by: Ross Burton <ross.burton@intel.com>\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n bc/Makefile.am |  8 --------\n bc/libmath.h   | 46 ++++++++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 46 insertions(+), 8 deletions(-)\n create mode 100644 bc/libmath.h\n\ndiff --git a/bc/Makefile.am b/bc/Makefile.am\nindex d9d412e..f244241 100644\n--- a/bc/Makefile.am\n+++ b/bc/Makefile.am\n@@ -31,14 +31,6 @@ global.o: libmath.h\n \n fbcOBJ = main.o bc.o scan.o execute.o load.o storage.o util.o warranty.o\n \n-libmath.h: libmath.b $(fbcOBJ) $(LIBBC)\n-\techo '{0}' > libmath.h\n-\t$(MAKE) global.o\n-\t$(LINK) -o fbc $(fbcOBJ) global.o $(LIBBC) $(LIBL) $(READLINELIB) $(LIBS)\n-\t./fbc -c $(srcdir)/libmath.b </dev/null >libmath.h\n-\t$(srcdir)/fix-libmath_h\n-\trm -f ./fbc ./global.o\n-\n sbcOBJ = main.o sbc.o scan.o execute.o global.o load.o storage.o util.o \\\n          warranty.o\n sbc.o: sbc.c\ndiff --git a/bc/libmath.h b/bc/libmath.h\nnew file mode 100644\nindex 0000000..63e1acb\n--- /dev/null\n+++ b/bc/libmath.h\n@@ -0,0 +1,46 @@\n+{\"@iK20:s2:p@r\",\n+\"@iF1,5.6,7,8,9,10,11,12,13,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:C1,0:\",\n+\"s14:pl7:s0:pl14:RN1:l5:0<Z2:1s12:pl5:ns5:pN2:l2:s15:pK6:l15:+\",\n+\"K.44:l5:*+s13:pl5:cS1+s2:pN3:l5:1>Z4:l10:1+s10:pl5:K2:/s5:pl2:\",\n+\"1+s2:pJ3:N4:l13:s2:p1l5:+s14:pl5:s6:p1s8:pK2:s11:pN6:1B7:J5:N8:\",\n+\"l11:i11:pJ6:N7:l6:l5:*s6:l8:l11:*s8:/s9:pl9:0=Z9:l10:0>Z10:N11:\",\n+\"l10:d10:Z12:l14:l14:*s14:pJ11:N12:N10:l15:s2:pl12:Z13:1l14:/R\",\n+\"N13:l14:1/RN9:l14:l9:+s14:pJ8:N5:0R]@r\",\n+\"@iF2,5.7,9,10,11,12,13,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:C2,0:\",\n+\"s14:pl7:s0:pl14:RN1:l5:0{Z2:1K10:l2:^-1/RN2:l2:s15:pK6:l2:+s2:\",\n+\"pK2:s10:p0s11:pN3:l5:K2:}Z4:l10:K2:*s10:pl5:cRs5:pJ3:N4:N5:l5:\",\n+\"K.5:{Z6:l10:K2:*s10:pl5:cRs5:pJ5:N6:l5:1-l5:1+/s13:s14:pl13:l13:\",\n+\"*s12:pK3:s11:pN8:1B9:J7:N10:l11:K2:+s11:pJ8:N9:l13:l12:*s13:l11:\",\n+\"/s9:pl9:0=Z11:l10:l14:*s14:pl15:s2:pl14:1/RN11:l14:l9:+s14:pJ10:N7:\",\n+\"0R]@r\",\n+\"@iF3,5.7,9,11,12,13,16,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:C3,0:\",\n+\"s14:pl7:s0:pl14:RN1:l2:s15:pK1.1:l15:*K2:+s2:p1C4,0:s14:pl5:0\",\n+\"<Z2:1s12:pl5:ns5:pN2:0s2:pl5:l14:/K2:+K4:/s13:pl5:K4:l13:*l14:\",\n+\"*-s5:pl13:K2:%Z3:l5:ns5:pN3:l15:K2:+s2:pl5:s9:s14:pl5:nl5:*s16:\",\n+\"pK3:s11:pN5:1B6:J4:N7:l11:K2:+s11:pJ5:N6:l9:l16:l11:l11:1-*/*\",\n+\"s9:pl9:0=Z8:l15:s2:pl12:Z9:l14:n1/RN9:l14:1/RN8:l14:l9:+s14:p\",\n+\"J7:N4:0R]@r\",\n+\"@iF5,5.7,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:C5,0:s14:pl7:s0:pl14:\",\n+\"RN1:l2:s15:pl2:K1.2:*s2:pl5:1C4,0:K2:*+C3,0:s14:pl15:s2:pl14:\",\n+\"1/R0R]@r\",\n+\"@iF4,5.6,7,9,10,11,12,13,16,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl5:\",\n+\"C4,0:s14:pl7:s0:pl14:RN1:1s12:pl5:0<Z2:1ns12:pl5:ns5:pN2:l5:1\",\n+\"=Z3:l2:K25:{Z4:K.7853981633974483096156608:l12:/RN4:l2:K40:{Z5:\",\n+\"K.7853981633974483096156608458198757210492:l12:/RN5:l2:K60:{Z6:\",\n+\"K.785398163397448309615660845819875721049292349843776455243736\",\n+\":l12:/RN6:N3:l5:K.2:=Z7:l2:K25:{Z8:K.1973955598498807583700497\",\n+\":l12:/RN8:l2:K40:{Z9:K.1973955598498807583700497651947902934475\",\n+\":l12:/RN9:l2:K60:{Z10:K.197395559849880758370049765194790293447585103787852101517688\",\n+\":l12:/RN10:N7:l2:s15:pl5:K.2:>Z11:l15:K5:+s2:pK.2:C4,0:s6:pN11:\",\n+\"l15:K3:+s2:pN12:l5:K.2:>Z13:l10:1+s10:pl5:K.2:-1l5:K.2:*+/s5:\",\n+\"pJ12:N13:l5:s13:s14:pl5:nl5:*s16:pK3:s11:pN15:1B16:J14:N17:l11:\",\n+\"K2:+s11:pJ15:N16:l13:l16:*s13:l11:/s9:pl9:0=Z18:l15:s2:pl10:l6:\",\n+\"*l14:+l12:/RN18:l14:l9:+s14:pJ17:N14:0R]@r\",\n+\"@iF6,13,5.6,7,8,9,10,11,12,16,14,15[l0:KA:#Z1:l0:s7:pKA:s0:pl13:\",\n+\"l5:C6,00:s14:pl7:s0:pl14:RN1:l2:s15:p0s2:pl13:1/s13:pl13:0<Z2:\",\n+\"l13:ns13:pl13:K2:%1=Z3:1s12:pN3:N2:1s10:pK2:s11:pN5:l11:l13:{\",\n+\"B6:J4:N7:l11:i11:pJ5:N6:l10:l11:*s10:pJ7:N4:K1.5:l15:*s2:pl5:\",\n+\"l13:^K2:l13:^/l10:/s10:p1s9:s14:pl5:nl5:*K4:/s16:pK1.5:l15:*l10:\",\n+\"cL+l10:cS-s2:p1s11:pN9:1B10:J8:N11:l11:i11:pJ9:N10:l9:l16:*l11:\",\n+\"/l13:l11:+/s9:pl9:0=Z12:l15:s2:pl12:Z13:l10:nl14:*1/RN13:l10:\",\n+\"l14:*1/RN12:l14:l9:+s14:pJ11:N8:0R]@r\",0}\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/bc/Config.in",
    "content": "config BR2_PACKAGE_BC\n\tbool \"bc\"\n\thelp\n\t  'bc' is an arbitrary precision numeric processing language\n\t  Its syntax is similar to C, but differs in many substantial\n\t  areas. It supports interactive execution of statements. 'Bc'\n\t  is a utility included in the POSIX P1003.2/D11 draft standard.\n\t  This version does not use the historical method of having bc\n\t  be a compiler for the dc calculator (the POSIX document\n\t  doesn't specify how bc must be implemented).\n\t  This version has a single executable that both compiles the\n\t  language and runs the resulting 'byte code.' The byte code is\n\t  not the dc language.\n\n\t  http://www.gnu.org/software/bc\n"
  },
  {
    "path": "package/bc/bc.hash",
    "content": "# Locally calculated\nsha256\t62adfca89b0a1c0164c2cdca59ca210c1d44c3ffc46daf9931cf4942664cb02a  bc-1.07.1.tar.gz\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\nsha256\ta853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c  COPYING.LIB\n"
  },
  {
    "path": "package/bc/bc.mk",
    "content": "################################################################################\n#\n# bc\n#\n################################################################################\n\nBC_VERSION = 1.07.1\nBC_SITE = http://ftp.gnu.org/gnu/bc\nBC_DEPENDENCIES = host-flex\nBC_LICENSE = GPL-2.0+, LGPL-2.1+\nBC_LICENSE_FILES = COPYING COPYING.LIB\nBC_CPE_ID_VENDOR = gnu\nBC_CONF_ENV = MAKEINFO=true\n\n# 0001-bc-use-MAKEINFO-variable-for-docs.patch and 0004-no-gen-libmath.patch\n# are patching doc/Makefile.am and Makefile.am respectively\nBC_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bcache-tools/0001-Don-t-inline-crc64-for-gcc-5-compatability.patch",
    "content": "Don't inline crc64 for gcc-5 compatability\n\nThis patch is backported from Debian and it fixes the following error:\n\nbcache.c:125:9: warning: 'crc_table' is static but used in inline\nfunction 'crc64' which is not static\n...\nmake-bcache.c:277: undefined reference to `crc64'\n\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n\nFrom: David Mohr <david@mcbf.net>\nDate: Tue, 26 May 2015 20:34:31 -0600\nSubject: Don't inline crc64 for gcc-5 compatability\n\nForwarded: http://article.gmane.org/gmane.linux.kernel.bcache.devel/2919\n\nBy James Cowgill, see Debian bug #777798\n---\n bcache.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/bcache.c b/bcache.c\nindex 8f37445..8b4b986 100644\n--- a/bcache.c\n+++ b/bcache.c\n@@ -115,7 +115,7 @@ static const uint64_t crc_table[256] = {\n \t0x9AFCE626CE85B507ULL\n };\n \n-inline uint64_t crc64(const void *_data, size_t len)\n+uint64_t crc64(const void *_data, size_t len)\n {\n \tuint64_t crc = 0xFFFFFFFFFFFFFFFFULL;\n \tconst unsigned char *data = _data;\n"
  },
  {
    "path": "package/bcache-tools/Config.in",
    "content": "config BR2_PACKAGE_BCACHE_TOOLS\n\tbool \"bcache tools\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tdepends on BR2_USE_MMU # util-linux (libblkid)\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\thelp\n\t  Bcache is a Linux kernel block layer cache. It allows one or\n\t  more fast disk drives such as flash-based solid state drives\n\t  (SSDs) to act as a cache for one or more slower hard disk\n\t  drives.\n\n\t  http://bcache.evilpiepirate.org/\n\n\t  This is the user space bcache tools, required to setup the\n\t  linux bcache feature of the Linux kernel.\n\ncomment \"bcache-tools needs udev /dev management\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n"
  },
  {
    "path": "package/bcache-tools/bcache-tools.hash",
    "content": "# Locally calculated\nsha256 d56923936f37287efc57a46315679102ef2c86cd0be5874590320acd48c1201c  bcache-tools-1.0.8.tar.gz\nsha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING\n"
  },
  {
    "path": "package/bcache-tools/bcache-tools.mk",
    "content": "################################################################################\n#\n# bcache-tools\n#\n################################################################################\n\nBCACHE_TOOLS_VERSION = 1.0.8\nBCACHE_TOOLS_SITE = $(call github,g2p,bcache-tools,v$(BCACHE_TOOLS_VERSION))\nBCACHE_TOOLS_LICENSE = GPL-2.0\nBCACHE_TOOLS_LICENSE_FILES = COPYING\nBCACHE_TOOLS_DEPENDENCIES = host-pkgconf util-linux\n\n# We pass $(TARGET_CONFIGURE_OPTS) as environment variable to allow\n# the bcache-tools Makefile to alter CFLAGS\ndefine BCACHE_TOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\n# The bcache-tools Makefile expects the man8 directory to exist\n# expects the /lib/udev/rules.d directory to exist.\ndefine BCACHE_TOOLS_CREATE_MISSING_DIRS\n\t$(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/share/man/man8\n\t$(INSTALL) -m 0755 -d $(TARGET_DIR)/lib/udev/rules.d\nendef\n\nBCACHE_TOOLS_PRE_INSTALL_TARGET_HOOKS += BCACHE_TOOLS_CREATE_MISSING_DIRS\n\ndefine BCACHE_TOOLS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tDESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/bcg729/Config.in",
    "content": "config BR2_PACKAGE_BCG729\n\tbool \"bcg729\"\n\thelp\n\t  Bcg729 is an opensource implementation of both encoder and\n\t  decoder of the ITU G729 Annex A/B speech codec.\n\n\t  https://www.linphone.org/technical-corner/bcg729\n"
  },
  {
    "path": "package/bcg729/bcg729.hash",
    "content": "# Locally computed\nsha256 94b3542a06cbd96306efc19f959f9febae62806a22599063f82a8c33e989d48b  bcg729-1.0.4.tar.gz\nsha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/bcg729/bcg729.mk",
    "content": "################################################################################\n#\n# bcg729\n#\n################################################################################\n\nBCG729_VERSION = 1.0.4\nBCG729_SITE = $(call github,BelledonneCommunications,bcg729,$(BCG729_VERSION))\nBCG729_LICENSE = GPL-2.0+\nBCG729_LICENSE_FILES = COPYING\nBCG729_INSTALL_STAGING = YES\n\nifeq ($(BR2_STATIC_LIBS),y)\nBCG729_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nBCG729_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nBCG729_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/bcm2835/Config.in",
    "content": "config BR2_PACKAGE_BCM2835\n\tbool \"bcm2835\"\n\tdepends on BR2_arm\n\thelp\n\t  C library for Broadcom BCM 2835 as used in Raspberry Pi.\n\t  It provides access to GPIO and other IO functions on the\n\t  Broadcom BCM 2835 chip, allowing access to the GPIO pins\n\t  on the 26 pin IDE plug on the RPi board so you can control\n\t  and interface with various external devices.\n\n\t  WARNING: the opinion of the Buildroot developers is that\n\t  such library is a complete abomination as it entirely works\n\t  around the standard Linux interfaces to access GPIOs, I2C,\n\t  SPI busses or other IOs. The library directly remaps the\n\t  hardware registers in user-space, completely bypassing what\n\t  the kernel drivers are doing, and potentially conflicting\n\t  with them.\n\n\t  http://www.airspayce.com/mikem/bcm2835\n"
  },
  {
    "path": "package/bcm2835/bcm2835.hash",
    "content": "# Locally computed:\nsha256  c062a8a1cf1dc1ba1ca3978451d2f668b66f7ce5548200a0f4a8bb2117b1b2c9  bcm2835-1.70.tar.gz\nsha256  8b1ba204bb69a0ade2bfcf65ef294a920f6bb361b317dba43c7ef29d96332b9b  COPYING\n"
  },
  {
    "path": "package/bcm2835/bcm2835.mk",
    "content": "################################################################################\n#\n# bcm2835\n#\n################################################################################\n\nBCM2835_VERSION = 1.70\nBCM2835_SITE = http://www.airspayce.com/mikem/bcm2835\nBCM2835_LICENSE = GPL-3.0\nBCM2835_LICENSE_FILES = COPYING\nBCM2835_INSTALL_STAGING = YES\n\n# disable doxygen doc generation\nBCM2835_CONF_ENV = ac_cv_prog_DOXYGEN=/bin/true\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch",
    "content": "From b7f14a800bbdad193f45695bc5b8c5173f3882ba Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 10 Feb 2019 17:51:05 +0100\nSubject: [PATCH] CMakeLists.txt: fix mbedtls libraries in bctoolbox.pc\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nbctoolbox.pc should not contain the full libraries path, path should be\ngiven by -L and library names by -l\nSo sent back the fix already suggested by Jörg Krause in\nhttps://github.com/BelledonneCommunications/bctoolbox/pull/4\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://github.com/BelledonneCommunications/bctoolbox/pull/7]\n---\n CMakeLists.txt | 5 ++---\n 1 file changed, 2 insertions(+), 3 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 29f3eb6..b2f26c2 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -101,9 +101,8 @@ else()\n endif()\n \n if(MBEDTLS_FOUND)\n-\tget_filename_component(mbedtls_library_path \"${MBEDTLS_LIBRARIES}\" PATH)\n-\tstring(REPLACE \";\" \" \" MBEDTLS_LIBRARIES_STR \"${MBEDTLS_LIBRARIES}\")\n-\tset(LIBS_PRIVATE \"${LIBS_PRIVATE} ${MBEDTLS_LIBRARIES_STR}\")\n+\tget_filename_component(mbedtls_library_path \"${MBEDTLS_LIBRARY}\" PATH)\n+\tset(LIBS_PRIVATE \"${LIBS_PRIVATE} -L${mbedtls_library_path} -lmbedtls -lmbedcrypto -lmbedx509\")\n endif()\n if(POLARSSL_FOUND)\n \tget_filename_component(polarssl_library_path \"${POLARSSL_LIBRARIES}\" PATH)\n"
  },
  {
    "path": "package/bctoolbox/Config.in",
    "content": "config BR2_PACKAGE_BCTOOLBOX\n\tbool \"bctoolbox\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Utilities library used by Belledonne Communications\n\t  softwares like belle-sip, mediastreamer2 and linphone.\n\n\t  Select BR2_PACKAGE_MBEDTLS for crypto support.\n\n\t  https://github.com/BelledonneCommunications/bctoolbox\n\ncomment \"bctoolbox needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n\ncomment \"bctoolbox needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/bctoolbox/bctoolbox.hash",
    "content": "# Locally calculated\nsha256  446b60e81a79b11e8212c44e312aeb0ce46e9ecf0269a35c492ecdca3e7428c3  bctoolbox-4.4.8.tar.gz\nsha256  1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68  LICENSE.txt\n"
  },
  {
    "path": "package/bctoolbox/bctoolbox.mk",
    "content": "################################################################################\n#\n# bctoolbox\n#\n################################################################################\n\nBCTOOLBOX_VERSION = 4.4.8\nBCTOOLBOX_SITE = $(call github,BelledonneCommunications,bctoolbox,$(BCTOOLBOX_VERSION))\nBCTOOLBOX_LICENSE = GPL-3.0+\nBCTOOLBOX_LICENSE_FILES = LICENSE.txt\nBCTOOLBOX_INSTALL_STAGING = YES\n\n# Set CMAKE_SKIP_RPATH to prevent bctoolbox from adding the rpath to\n# shared library.\nBCTOOLBOX_CONF_OPTS = \\\n\t-DENABLE_POLARSSL=OFF \\\n\t-DENABLE_STRICT=OFF \\\n\t-DENABLE_TESTS_COMPONENT=OFF \\\n\t-DENABLE_TESTS=OFF \\\n\t-DCMAKE_SKIP_RPATH=ON\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nBCTOOLBOX_DEPENDENCIES += libiconv\nBCTOOLBOX_CONF_OPTS += -DCMAKE_CXX_FLAGS=\"$(TARGET_CXXFLAGS) -liconv\"\nendif\n\nifeq ($(BR2_PACKAGE_MBEDTLS),y)\nBCTOOLBOX_DEPENDENCIES += mbedtls\nBCTOOLBOX_CONF_OPTS += -DENABLE_MBEDTLS=ON\nelse\nBCTOOLBOX_CONF_OPTS += -DENABLE_MBEDTLS=OFF\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nBCTOOLBOX_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nBCTOOLBOX_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nBCTOOLBOX_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/bcusdk/0001-fd_set-requires-inclusion-of-sys-select.h.patch",
    "content": "From 2541ee3d709803096b17e45610ccc1404e2e5eee Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 8 Aug 2015 17:46:34 +0200\nSubject: [PATCH] fd_set requires inclusion of <sys/select.h>\n\nAccording to POSIX.1-2001, the definition fd_set and related macros is\nin <sys/select.h>, so it should be included in files using fd_set to\nmake the code compatible with all standard C libraries.\n\nSubmitted upstream: https://sourceforge.net/p/bcusdk/patches/3/\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n eibd/examples/common.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/eibd/examples/common.h b/eibd/examples/common.h\nindex 51fc514..f038da1 100644\n--- a/eibd/examples/common.h\n+++ b/eibd/examples/common.h\n@@ -20,6 +20,7 @@\n #include <stdlib.h>\n #include <errno.h>\n #include <unistd.h>\n+#include <sys/select.h>\n #include \"eibclient.h\"\n \n /** unsigned char*/\n-- \n2.5.0\n\n"
  },
  {
    "path": "package/bcusdk/0002-eibd-fix-endless-recursion-when-using-USB-backends.patch",
    "content": "From 6bd1b4958e949d83468e053c34bf6c89d14d687a Mon Sep 17 00:00:00 2001\nFrom: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>\nDate: Fri, 25 Aug 2017 23:01:14 +0200\nSubject: [PATCH] eibd: drop local clock_gettime in USB backends\n\nclock_gettime is defined locally, and calls pth_int_time, which\nin turn calls clock_gettime.\nThe USB backend shouldn't overrule clock_gettime in the first place.\nThis patch fixes this endless recursion by removing the local defition.\n\nSigned-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>\n---\n eibd/usb/linux_usbfs.c | 6 ------\n 1 file changed, 6 deletions(-)\n\ndiff --git a/eibd/usb/linux_usbfs.c b/eibd/usb/linux_usbfs.c\nindex c3ec410..957b908 100644\n--- a/eibd/usb/linux_usbfs.c\n+++ b/eibd/usb/linux_usbfs.c\n@@ -52,12 +52,6 @@ int pthread_mutex_trylock(pthread_mutex_t *mutex)\n \treturn 0;\n }\n \n-int clock_gettime(clockid_t clk_id, struct timespec *tp)\n-{\n-\tpth_int_time (tp);\n-\treturn 0;\n-}\n-\n /* sysfs vs usbfs:\n  * opening a usbfs node causes the device to be resumed, so we attempt to\n  * avoid this during enumeration.\n-- \n1.8.5.rc3\n\n"
  },
  {
    "path": "package/bcusdk/Config.in",
    "content": "config BR2_PACKAGE_BCUSDK\n\tbool \"bcusdk\"\n\tdepends on BR2_USE_MMU # libpthsem\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_LIBPTHSEM\n\tselect BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  A free development environment for the Bus Coupling Units of\n\t  the European Installation Bus.\n\n\t  The European Installation Bus EIB is a home and building\n\t  automation bus system. It is optimized for low-speed control\n\t  applications like lighting and blinds control.\n\n\t  BCUs (Bus Coupling Units) are standardized, generic\n\t  platforms for embedded EIB devices. They include the entire\n\t  physical layer network interface, power supply and a\n\t  microcontroller with an implementation of the EIB protocol\n\t  stack stored in the ROM.\n\n\t  http://www.auto.tuwien.ac.at/~mkoegler/eib/\n\ncomment \"bcusdk needs a toolchain w/ C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/bcusdk/bcusdk.hash",
    "content": "# Locally calculated\nsha256  014cdaafc36f223c584b39ae5d698dd037a8e15aba4e78a2e531b51ff1331304  bcusdk_0.0.5.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/bcusdk/bcusdk.mk",
    "content": "################################################################################\n#\n# bcusdk\n#\n################################################################################\n\nBCUSDK_VERSION = 0.0.5\nBCUSDK_SOURCE = bcusdk_$(BCUSDK_VERSION).tar.gz\nBCUSDK_SITE = http://www.auto.tuwien.ac.at/~mkoegler/eib\nBCUSDK_LICENSE = GPL-2.0+\nBCUSDK_LICENSE_FILES = COPYING\nBCUSDK_INSTALL_STAGING = YES\nBCUSDK_CONF_OPTS = \\\n\t--enable-onlyeibd \\\n\t--enable-ft12 \\\n\t--enable-pei16 \\\n\t--enable-tpuarts \\\n\t--enable-eibnetip \\\n\t--enable-eibnetipserver \\\n\t--enable-eibnetiptunnel \\\n\t--without-pth-test \\\n\t--with-pth=$(STAGING_DIR)/usr\n\nBCUSDK_DEPENDENCIES = \\\n\tlibpthsem \\\n\t$(if $(BR2_PACKAGE_ARGP_STANDALONE),argp-standalone)\n\ndefine BCUSDK_REMOVE_EXAMPLES\n\t$(RM) -rf $(TARGET_DIR)/usr/share/bcusdk\nendef\n\nBCUSDK_POST_INSTALL_TARGET_HOOKS += BCUSDK_REMOVE_EXAMPLES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bdwgc/0001-Fix-undefined-reference-to-__data_start-linker-error.patch",
    "content": "From 301ef15aefa6764466c374d07efb511b1c3862cc Mon Sep 17 00:00:00 2001\nFrom: Nikita Ermakov <coffe92@gmail.com>\nDate: Wed, 20 May 2020 17:57:17 +0300\nSubject: [PATCH] Fix 'undefined reference to __data_start' linker error on\n RISC-V\n\nIssue #294 (bdwgc).\n\n* include/private/gcconfig.h [RISCV && LINUX] (__data_start): Add\nattribute(weak).\n\n(cherry picked from commit 538562ad01b181f4cc3913da1ac06a77945cd9b9)\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n include/private/gcconfig.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/include/private/gcconfig.h b/include/private/gcconfig.h\nindex d9d45da1..d6cefa6f 100644\n--- a/include/private/gcconfig.h\n+++ b/include/private/gcconfig.h\n@@ -2943,7 +2943,7 @@ EXTERN_C_BEGIN\n #   define ALIGNMENT (CPP_WORDSZ/8)\n #   ifdef LINUX\n #     define OS_TYPE \"LINUX\"\n-      extern int __data_start[];\n+      extern int __data_start[] __attribute__((__weak__));\n #     define DATASTART ((ptr_t)__data_start)\n #     define LINUX_STACKBOTTOM\n #     define DYNAMIC_LOADING\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/bdwgc/Config.in",
    "content": "config BR2_PACKAGE_BDWGC\n\tbool \"bdwgc\"\n\tdepends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_LIBATOMIC_OPS\n\thelp\n\t  The Boehm-Demers-Weiser conservative garbage collector can\n\t  be used as a garbage collecting replacement for C 'malloc'\n\t  or C++ 'new'.\n\n\t  http://www.hboehm.info/gc/\n"
  },
  {
    "path": "package/bdwgc/bdwgc.hash",
    "content": "# Locally computed\nsha256 436a0ddc67b1ac0b0405b61a9675bca9e075c8156f4debd1d06f3a56c7cd289d  gc-8.0.4.tar.gz\nsha256 aeeaabbf44e67d413e18719f0c6ac9c23387ab0b33e7a15ee46cf59ddef12cc7  README.QUICK\n"
  },
  {
    "path": "package/bdwgc/bdwgc.mk",
    "content": "################################################################################\n#\n# bdwgc\n#\n################################################################################\n\nBDWGC_VERSION = 8.0.4\nBDWGC_SOURCE = gc-$(BDWGC_VERSION).tar.gz\nBDWGC_SITE = http://www.hboehm.info/gc/gc_source\nBDWGC_INSTALL_STAGING = YES\nBDWGC_LICENSE = bdwgc license\nBDWGC_LICENSE_FILES = README.QUICK\nBDWGC_CPE_ID_VENDOR = bdwgc_project\nBDWGC_DEPENDENCIES = libatomic_ops host-pkgconf\nHOST_BDWGC_DEPENDENCIES = host-libatomic_ops host-pkgconf\n\nBDWGC_CONF_OPTS = CFLAGS_EXTRA=\"$(BDWGC_CFLAGS_EXTRA)\"\nifeq ($(BR2_sparc),y)\nBDWGC_CFLAGS_EXTRA += -DAO_NO_SPARC_V9\nendif\nifeq ($(BR2_STATIC_LIBS),y)\nBDWGC_CFLAGS_EXTRA += -DGC_NO_DLOPEN\nendif\n\n# Ensure we use the system libatomic_ops, and not the internal one.\nBDWGC_CONF_OPTS += --with-libatomic-ops=yes\nHOST_BDWGC_CONF_OPTS = --with-libatomic-ops=yes\n\nifeq ($(BR2_INSTALL_LIBSTDCPP),y)\nBDWGC_CONF_OPTS += --enable-cplusplus\nelse\nBDWGC_CONF_OPTS += --disable-cplusplus\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/bearssl/Config.in",
    "content": "config BR2_PACKAGE_BEARSSL\n\tbool \"bearssl\"\n\thelp\n\t  BearSSL is an implementation of the SSL/TLS protocol\n\t  (RFC 5246) written in C.\n\n\t  https://bearssl.org\n"
  },
  {
    "path": "package/bearssl/bearssl.hash",
    "content": "# Locally computed:\nsha256  6705bba1714961b41a728dfc5debbe348d2966c117649392f8c8139efc83ff14  bearssl-0.6.tar.gz\nsha256  771bf18c8633ea69ec9b07d2e604c4b99b7bef41b0f5ce6385d24df4448f61ca  LICENSE.txt\n"
  },
  {
    "path": "package/bearssl/bearssl.mk",
    "content": "################################################################################\n#\n# bearssl\n#\n################################################################################\n\nBEARSSL_VERSION = 0.6\nBEARSSL_SITE = https://bearssl.org\nBEARSSL_LICENSE = MIT\nBEARSSL_LICENSE_FILES = LICENSE.txt\nBEARSSL_INSTALL_STAGING = YES\n\nBEARSSL_MAKE_OPTS = \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tLDDLL=$(TARGET_CC)\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nBEARSSL_TARGETS += dll\nBEARSSL_MAKE_OPTS += CFLAGS=\"$(TARGET_CFLAGS) -fPIC\"\nendif\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nBEARSSL_TARGETS += lib\nendif\n\ndefine BEARSSL_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(BEARSSL_MAKE_OPTS) -C $(@D) \\\n\t\t$(BEARSSL_TARGETS)\nendef\n\ndefine BEARSSL_INSTALL_STAGING_CMDS\n\tmkdir -p $(STAGING_DIR)/usr/include\n\tcp -dpfr $(@D)/inc/*.h $(STAGING_DIR)/usr/include\n\tmkdir -p $(STAGING_DIR)/usr/lib\n\tcp -dpfr $(@D)/build/lib* $(STAGING_DIR)/usr/lib\nendef\n\ndefine BEARSSL_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/lib\n\tcp -dpfr $(@D)/build/lib* $(TARGET_DIR)/usr/lib\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/beecrypt/0001-cppglue.cxx-cplusplus-only.patch",
    "content": "Makefile.am: Only compile/link cppglue.cxx if --with-cplusplus is used\n\nBloats libbeecrypt for no use and breaks build on systems without a C++\ncompiler.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n---\n Makefile.am |    7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)\n\nIndex: beecrypt-4.2.1/Makefile.am\n===================================================================\n--- beecrypt-4.2.1.orig/Makefile.am\n+++ beecrypt-4.2.1/Makefile.am\n@@ -62,7 +62,12 @@\n \n lib_LTLIBRARIES = libbeecrypt.la\n \n-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\n+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\n+\n+if WITH_CPLUSPLUS\n+libbeecrypt_la_SOURCES += cppglue.cxx\n+endif\n+\n libbeecrypt_la_DEPENDENCIES = $(BEECRYPT_OBJECTS)\n libbeecrypt_la_LIBADD = blowfishopt.lo mpopt.lo sha1opt.lo $(OPENMP_LIBS)\n libbeecrypt_la_LDFLAGS = -no-undefined -version-info $(LIBBEECRYPT_LT_CURRENT):$(LIBBEECRYPT_LT_REVISION):$(LIBBEECRYPT_LT_AGE)\n"
  },
  {
    "path": "package/beecrypt/0002-build-system.patch",
    "content": "Fix build with BR2_ENABLE_DEBUG=yes, no need for expert mode anymore\n\nOtherwise configure issues this error message:\nconfigure: error: --enable-debug cannot be used in conjunction with --enable-expert-mode\n\nDownloaded from Gentoo:\nhttp://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\n\nThis patch also removes the hard-coded CFLAGS provided by beecrypt in favour\nof the CFLAGS provided by buildroot.\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- beecrypt-4.2.1/configure.ac\n+++ beecrypt-4.2.1/configure.ac\n@@ -11,7 +11,7 @@\n \n # Checks for package options\n AC_ARG_ENABLE(expert-mode, [  --enable-expert-mode      follow user-defined CFLAGS settings [[default=no]]],[\n-  ac_enable_expert_mode=yes\n+  ac_enable_expert_mode=$enableval\n   ],[\n   if test \"X$CFLAGS\" != \"X\"; then\n     echo \"enabling expert mode\"\n@@ -25,7 +25,7 @@\n   if test \"$ac_enable_expert_mode\" = yes; then\n     AC_MSG_ERROR([--enable-debug cannot be used in conjunction with --enable-expert-mode])\n   fi\n-  ac_enable_debug=yes\n+  ac_enable_debug=$enableval\n   ],[\n   ac_enable_debug=no\n   ])\n@@ -456,7 +456,7 @@\n       ac_cv_python_include=\"-I`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc()'`\"\n     ])\n     AC_CACHE_CHECK([where to install python libraries], ac_cv_python_libdir, [\n-      ac_cv_python_libdir=`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib()'`\n+      ac_cv_python_libdir=`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib(1, 0)'`\n     ])\n   fi\n fi\n--- beecrypt-4.2.1/acinclude.m4\n+++ beecrypt-4.2.1/acinclude.m4\n@@ -498,15 +498,6 @@ AC_DEFUN([BEE_GNU_CC],[\n     AC_SUBST(OPENMP_LIBS,\"-lgomp\")\n   fi\n   case $bc_target_arch in\n-  x86_64 | athlon64 | athlon-fx | k8 | opteron | em64t | nocona)\n-    CC=\"$CC -m64\"\n-    ;;\n-  i[[3456]]86 | \\\n-  pentium* | \\\n-  athlon*)\n-    CC=\"$CC -m32\"\n-    CCAS=\"$CCAS -m32\"\n-    ;;\n   ia64)\n     case $target_os in\n     # HP/UX on Itanium needs to be told that a long is 64-bit!\n@@ -525,17 +516,8 @@ AC_DEFUN([BEE_GNU_CC],[\n     aix*)\n       CC=\"$CC -maix64\"\n       ;;\n-    linux*)\n-      CC=\"$CC -m64\"\n-      ;;\n     esac\n     ;;\n-  sparc | sparcv8*)\n-    CC=\"$CC -m32\"\n-    ;;\n-  sparc64 | sparcv9*)\n-    CC=\"$CC -m64\"\n-    ;;\n   esac\n   # Certain platforms needs special flags for multi-threaded code\n   if test \"$ac_enable_threads\" = yes; then\n@@ -646,14 +646,6 @@ dnl  BEE_GNU_CXX\n AC_DEFUN([BEE_GNU_CXX],[\n   AC_REQUIRE([AC_PROG_CXX])\n   case $bc_target_arch in\n-  x86_64 | athlon64 | athlon-fx | k8 | opteron | em64t | nocona | core2)\n-    CXX=\"$CXX -m64\"\n-    ;;\n-  i[[3456]]86 | \\\n-  pentium* | \\\n-  athlon*)\n-    CXX=\"$CXX -m32\"\n-    ;;\n   ia64)\n     case $target_os in\n     # HP/UX on Itanium needs to be told that a long is 64-bit!\n@@ -672,17 +664,8 @@ AC_DEFUN([BEE_GNU_CXX],[\n     aix*)\n       CXX=\"$CXX -maix64\"\n       ;;\n-    linux*)\n-      CXX=\"$CXX -m64\"\n-      ;;\n     esac\n     ;;\n-  sparc | sparcv8*)\n-    CXX=\"$CXX -m32\"\n-    ;;\n-  sparc64 | sparcv9*)\n-    CXX=\"$CXX -m64\"\n-    ;;\n   esac\n   # Certain platforms needs special flags for multi-threaded code\n   if test \"$ac_enable_threads\" = yes; then\n--- beecrypt-4.2.1/java/Makefile.am\n+++ beecrypt-4.2.1/java/Makefile.am\n@@ -26,7 +26,7 @@\n \n INCLUDES = -I$(top_srcdir)/include\n \n-libaltdir=$(prefix)/lib@LIBALT@\n+libaltdir=$(libdir)\n \n libalt_LTLIBRARIES = libbeecrypt_java.la\n \n--- beecrypt-4.2.1/acinclude.m4\n+++ beecrypt-4.2.1/acinclude.m4\n@@ -1589,20 +1589,5 @@\n   AC_SUBST(TYPEDEF_BC_THREADID_T,$bc_typedef_bc_threadid_t)\n   ])\n-\n-AH_BOTTOM([\n-#if ENABLE_THREADS\n-# ifndef _REENTRANT\n-#  define _REENTRANT\n-# endif\n-# if LINUX\n-#  define _LIBC_REENTRANT\n-# endif\n-#else\n-# ifdef _REENTRANT\n-#  undef _REENTRANT\n-# endif\n-#endif\n-])\n \n \n dnl  BEE_THREAD_LOCAL_STORAGE\n@@ -1623,7 +1609,5 @@\n   ])\n \n AH_BOTTOM([\n-#if !ENABLE_THREAD_LOCAL_STORAGE\n-# define __thread\n-#endif\n+#include \"config.threads.h\"\n ])\n--- beecrypt-4.2.1/config.threads.h\n+++ beecrypt-4.2.1/config.threads.h\n@@ -0,0 +1,16 @@\n+#if ENABLE_THREADS\n+# ifndef _REENTRANT\n+#  define _REENTRANT\n+# endif\n+# if LINUX\n+#  define _LIBC_REENTRANT\n+# endif\n+#else\n+# ifdef _REENTRANT\n+#  undef _REENTRANT\n+# endif\n+#endif\n+\n+#if !ENABLE_THREAD_LOCAL_STORAGE\n+# define __thread\n+#endif\n"
  },
  {
    "path": "package/beecrypt/0003-don-t-check-for-cplusplus-compiler.patch",
    "content": "configure.ac: don't check for C++ compiler\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -durN beecrypt-4.2.1-orig/configure.ac beecrypt-4.2.1/configure.ac\n--- beecrypt-4.2.1-orig/configure.ac\t2019-03-01 19:58:16.516117640 +0100\n+++ beecrypt-4.2.1/configure.ac\t2019-03-01 21:10:17.707391803 +0100\n@@ -119,9 +119,6 @@\n \n # Checks for C compiler and preprocessor\n AC_PROG_CC\n-AC_PROG_CPP\n-AC_PROG_CXX\n-AC_PROG_CXXCPP\n AM_PROG_AS\n AC_PROG_LD\n AC_PROG_LN_S\n@@ -133,9 +130,6 @@\n AC_LANG_PUSH(C)\n AC_OPENMP\n AC_LANG_POP(C)\n-AC_LANG_PUSH(C++)\n-AC_OPENMP\n-AC_LANG_POP(C++)\n \n # Checks for compiler characteristics and flags\n if test \"$ac_enable_expert_mode\" = no; then\n"
  },
  {
    "path": "package/beecrypt/Config.in",
    "content": "comment \"beecrypt needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_BEECRYPT\n\tbool \"beecrypt\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Beecrypt is a general-purpose cryptography library.\n\n\t  http://beecrypt.sf.net\n"
  },
  {
    "path": "package/beecrypt/beecrypt.hash",
    "content": "# Locally computed:\nsha256  286f1f56080d1a6b1d024003a5fa2158f4ff82cae0c6829d3c476a4b5898c55d  beecrypt-4.2.1.tar.gz\nsha256  512d2d21b6b3384ba64781abb0208a1b87740bc31e2df48e2b206ddb7e4d5779  COPYING.LIB\n"
  },
  {
    "path": "package/beecrypt/beecrypt.mk",
    "content": "################################################################################\n#\n# beecrypt\n#\n################################################################################\n\nBEECRYPT_VERSION = 4.2.1\nBEECRYPT_SITE = http://downloads.sourceforge.net/project/beecrypt/beecrypt/$(BEECRYPT_VERSION)\nBEECRYPT_AUTORECONF = YES\nBEECRYPT_INSTALL_STAGING = YES\nBEECRYPT_LICENSE = LGPL-2.1+\nBEECRYPT_LICENSE_FILES = COPYING.LIB\nBEECRYPT_CPE_ID_VENDOR = beecrypt_project\n\nBEECRYPT_CONF_OPTS = \\\n\t--disable-expert-mode \\\n\t--without-java \\\n\t--without-python \\\n\t--disable-openmp \\\n\t--without-cplusplus\n\n# disable optimized m68k assembly as it doesn't compile for coldfire\nifeq ($(BR2_m68k_cf),y)\nBEECRYPT_CONF_OPTS += --enable-debug\nendif\n\n# arm asm optimization doesn't work for thumb-only\nifeq ($(BR2_arm):$(BR2_ARM_CPU_HAS_ARM),y:)\nBEECRYPT_CONF_OPTS += --enable-debug\nendif\n\n# automake/libtool uses the C++ compiler to link libbeecrypt because of\n# (the optional) cppglue.cxx. Force it to use the C compiler instead.\ndefine BEECRYPT_LINK_WITH_CC\n\t$(SED) 's/--tag=CXX/--tag=CC/g' $(@D)/Makefile\nendef\nBEECRYPT_POST_CONFIGURE_HOOKS += BEECRYPT_LINK_WITH_CC\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/belle-sip/Config.in",
    "content": "config BR2_PACKAGE_BELLE_SIP\n\tbool \"belle-sip\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # bctoolbox\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_BCTOOLBOX\n\t# needs crypto support in bctoolbox\n\tselect BR2_PACKAGE_MBEDTLS\n\thelp\n\t  Belle-sip is a modern library implementing SIP (RFC 3261)\n\t  transport, transaction and dialog layers.\n\n\t  http://www.linphone.org/technical-corner/belle-sip\n\ncomment \"belle-sip needs a toolchain w/ threads, C++, dynamic library, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n\ncomment \"belle-sip needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/belle-sip/belle-sip.hash",
    "content": "# Locally calculated\nsha256  eabba615c97080572c1b9d3c76f8f9cf6a7432eedf37482672e5fa178a688f72  belle-sip-4.4.8.tar.gz\nsha256  1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68  LICENSE.txt\n"
  },
  {
    "path": "package/belle-sip/belle-sip.mk",
    "content": "################################################################################\n#\n# belle-sip\n#\n################################################################################\n\nBELLE_SIP_VERSION = 4.4.8\nBELLE_SIP_SITE = \\\n\thttps://gitlab.linphone.org/BC/public/belle-sip/-/archive/$(BELLE_SIP_VERSION)\nBELLE_SIP_LICENSE = GPL-3.0+\nBELLE_SIP_LICENSE_FILES = LICENSE.txt\nBELLE_SIP_CPE_ID_VENDOR = linphone\nBELLE_SIP_INSTALL_STAGING = YES\nBELLE_SIP_DEPENDENCIES = \\\n\tbctoolbox \\\n\t$(if $(BR2_PACKAGE_ZLIB),zlib)\nBELLE_SIP_CONF_OPTS = \\\n\t-DENABLE_STRICT=OFF \\\n\t-DENABLE_TESTS=OFF\n\nifeq ($(BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY),y)\nBELLE_SIP_CONF_OPTS += -DENABLE_MDNS=ON\nBELLE_SIP_DEPENDENCIES += avahi\nelse\nBELLE_SIP_CONF_OPTS += -DENABLE_MDNS=OFF\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nBELLE_SIP_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nBELLE_SIP_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nBELLE_SIP_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF\nendif\n\nBELLE_SIP_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_99140),y)\nBELLE_SIP_CFLAGS += -O0\nendif\n\nBELLE_SIP_CONF_OPTS += -DCMAKE_C_FLAGS=\"$(BELLE_SIP_CFLAGS)\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/belr/Config.in",
    "content": "config BR2_PACKAGE_BELR\n\tbool \"belr\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # bctoolbox\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # bctoolbox\n\tselect BR2_PACKAGE_BCTOOLBOX\n\thelp\n\t  Belr is Belledonne Communications' language recognition\n\t  library, written in C++11. It parses text inputs formatted\n\t  according to a language defined by an ABNF grammar, such as\n\t  the protocols standardized at IETF.\n\n\t  https://gitlab.linphone.org/BC/public/belr\n\ncomment \"belr needs a toolchain w/ threads, C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n\ncomment \"belr needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/belr/belr.hash",
    "content": "# Locally calculated\nsha256  6358aa680193d972c831d677da1652c7f57d7e00649b971d4d9fbdebf4331b48  belr-4.4.8.tar.gz\nsha256  1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68  LICENSE.txt\n"
  },
  {
    "path": "package/belr/belr.mk",
    "content": "################################################################################\n#\n# belr\n#\n################################################################################\n\nBELR_VERSION = 4.4.8\nBELR_SITE = https://gitlab.linphone.org/BC/public/belr/-/archive/$(BELR_VERSION)\nBELR_LICENSE = GPL-3.0+\nBELR_LICENSE_FILES = LICENSE.txt\nBELR_INSTALL_STAGING = YES\nBELR_DEPENDENCIES = bctoolbox\nBELR_CONF_OPTS = \\\n\t-DENABLE_STRICT=OFF \\\n\t-DENABLE_TESTS=OFF \\\n\t-DENABLE_TOOLS=OFF\n\nifeq ($(BR2_STATIC_LIBS),y)\nBELR_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nBELR_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nBELR_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/benejson/0001-c-std.patch",
    "content": "Some older toolchains do not recognize c11 as a valid standard.\nSince the code actually builds well with c99, use that instead.\n\nThe only two non-standard features used are // comments\nand for(int i ...) declarations in C.\n\nSigned-off-by: Alex Suykov <alex.suykov@gmail.com>\n\n--- a/SConstruct\n+++ b/SConstruct\n@@ -9,9 +9,8 @@ mydir = os.getcwd()\n #Set default C++ building flags for both libraries and executables\n default_env = Environment(ENV = os.environ)\n default_env.Append(CPPPATH = [mydir + '/include'])\n-default_env.Append(CCFLAGS = ' -Wall -pedantic')\n-default_env.Append(CFLAGS = ' -std=c11')\n-default_env.Append(CXXFLAGS = ' -std=c++11')\n+default_env.Append(CFLAGS = ' -Wall')\n+default_env.Append(CFLAGS = ' -std=c99')\n #default_env.Append(CCFLAGS = ' -O2 -fomit-frame-pointer')\n default_env.Append(CCFLAGS = ' -O0 -g')\n \n"
  },
  {
    "path": "package/benejson/0002-Use-print-as-a-function-for-Py3-compatibility.patch",
    "content": "Use print as a function in SConstruct build file for Py3 compatibility.\nThis allow to run SCons on Python 3\n\n[Upstream status: https://github.com/codehero/benejson/pull/12]\n\nSigned-off-by: Titouan Christophe <titouan.christophe@railnova.eu>\n---\n benejson/SConscript | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/benejson/SConscript b/benejson/SConscript\nindex b7c5d10..80b4875 100644\n--- a/benejson/SConscript\n+++ b/benejson/SConscript\n@@ -9,11 +9,11 @@ lib_env = lib_env.Clone()\n conf = Configure(lib_env)\n \n if not conf.CheckFunc(\"stpcpy\"):\n-\tprint \"Did not find stpcpy(), using bnj local version\"\n+\tprint(\"Did not find stpcpy(), using bnj local version\")\n \tconf.env.Append(CPPDEFINES = [\"-Dstpcpy=bnj_local_stpcpy\"])\n \n if not conf.CheckFunc(\"stpncpy\"):\n-\tprint \"Did not find stpncpy(), using bnj local version\"\n+\tprint(\"Did not find stpncpy(), using bnj local version\")\n \tconf.env.Append(CPPDEFINES = [\"-Dstpncpy=bnj_local_stpncpy\"])\n lib_env = conf.Finish()\n \n-- \n2.21.0\n\n"
  },
  {
    "path": "package/benejson/Config.in",
    "content": "config BR2_PACKAGE_BENEJSON\n\tbool \"benejson\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  benejson is a buffering SAX-style JSON parser library.\n\t  The library package contains 3 major components:\n\n\t  - benejson.js: SAX-style parser written in Javascript\n\t  - PullParser: A C++ class for JSON pull parsing\n\t  - Core: The parsing core with minimal dependencies\n\n\t  https://codehero.github.io/benejson/\n\ncomment \"benejson needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/benejson/benejson.hash",
    "content": "# Locally computed\nsha256  2ce5f3c2323500bdf651e7fcaecbd1011997141e6067567b8d2caa4cf7182f4a  benejson-0.9.7.tar.gz\nsha256  d0b7dae881fcb18c4dddfd8b0c1643ae671d5f356d14ba5b4e95ca889cc9ec32  LICENSE\n"
  },
  {
    "path": "package/benejson/benejson.mk",
    "content": "################################################################################\n#\n# benejson\n#\n################################################################################\n\nBENEJSON_VERSION = 0.9.7\nBENEJSON_SITE = $(call github,codehero,benejson,$(BENEJSON_VERSION))\nBENEJSON_LICENSE = MIT\nBENEJSON_LICENSE_FILES = LICENSE\nBENEJSON_INSTALL_STAGING = YES\nBENEJSON_DEPENDENCIES = host-python3 host-scons\n\n# wchar support needs to be manually disabled\nifeq ($(BR2_USE_WCHAR),)\ndefine BENEJSON_DISABLE_WCHAR\n\t$(SED) 's,^#define BNJ_WCHAR_SUPPORT,#undef BNJ_WCHAR_SUPPORT,' \\\n\t\t$(@D)/benejson/benejson.h\nendef\nBENEJSON_POST_PATCH_HOOKS += BENEJSON_DISABLE_WCHAR\nendif\n\nBENEJSON_SCONS_TARGETS = include\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nBENEJSON_SCONS_TARGETS += lib/libbenejson.a\ndefine BENEJSON_INSTALL_STATIC_LIB\n\t$(INSTALL) -D -m 0644 $(@D)/lib/libbenejson.a \\\n\t\t$(1)/usr/lib/libbenejson.a\nendef\nendif # Static enabled\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nBENEJSON_SCONS_TARGETS += lib/libbenejson.so\ndefine BENEJSON_INSTALL_SHARED_LIB\n\t$(INSTALL) -D -m 0644 $(@D)/lib/libbenejson.so \\\n\t\t$(1)/usr/lib/libbenejson.so\nendef\nendif # Shared enabled\n\ndefine BENEJSON_BUILD_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_CONFIGURE_OPTS) CROSS=$(TARGET_CROSS) \\\n\t\t$(HOST_DIR)/bin/python3 $(SCONS) $(BENEJSON_SCONS_TARGETS))\nendef\n\ndefine BENEJSON_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/include/benejson/benejson.h \\\n\t\t$(STAGING_DIR)/usr/include/benejson/benejson.h; \\\n\t$(INSTALL) -D -m 0644 $(@D)/include/benejson/pull.hh \\\n\t\t$(STAGING_DIR)/usr/include/benejson/pull.hh\n\t$(call BENEJSON_INSTALL_STATIC_LIB,$(STAGING_DIR))\n\t$(call BENEJSON_INSTALL_SHARED_LIB,$(STAGING_DIR))\nendef\n\ndefine BENEJSON_INSTALL_TARGET_CMDS\n\t$(call BENEJSON_INSTALL_SHARED_LIB,$(TARGET_DIR))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/berkeleydb/0001-cwd-db_config.patch",
    "content": "Do not access DB_CONFIG when db_home is not set\n\nFixes CVE-2017-10140:\nhttps://bugzilla.redhat.com/show_bug.cgi?id=1464032#c9\n\nDownloaded from\nhttp://pkgs.fedoraproject.org/cgit/rpms/libdb.git/commit/?id=8047fa8580659fcae740c25e91b490539b8453eb\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- db-5.3.28/src/env/env_open.c.old\t2017-06-26 10:32:11.011419981 +0200\n+++ db-5.3.28/src/env/env_open.c\t2017-06-26 10:32:46.893721233 +0200\n@@ -473,7 +473,7 @@\n \tenv->db_mode = mode == 0 ? DB_MODE_660 : mode;\n \n \t/* Read the DB_CONFIG file. */\n-\tif ((ret = __env_read_db_config(env)) != 0)\n+\tif (env->db_home != NULL && (ret = __env_read_db_config(env)) != 0)\n \t\treturn (ret);\n \n \t/*\n"
  },
  {
    "path": "package/berkeleydb/0002-atomic_compare_exchange.patch",
    "content": "Rename __atomic_compare_exchange to not clash with gcc built-in\n\nDownloaded from\nhttps://src.fedoraproject.org/cgit/rpms/libdb.git/commit/?id=d6841b3b46a51db98c162347211a5a64d154ea37\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- db-5.3.28/src/dbinc/atomic.h.old\t2018-05-23 09:20:04.216914922 +0200\n+++ db-5.3.28/src/dbinc/atomic.h\t2018-05-23 09:20:49.510057897 +0200\n@@ -144,7 +144,7 @@\n #define\tatomic_inc(env, p)\t__atomic_inc(p)\n #define\tatomic_dec(env, p)\t__atomic_dec(p)\n #define\tatomic_compare_exchange(env, p, o, n)\t\\\n-\t__atomic_compare_exchange((p), (o), (n))\n+\t__db_atomic_compare_exchange((p), (o), (n))\n static inline int __atomic_inc(db_atomic_t *p)\n {\n \tint\ttemp;\n@@ -176,7 +176,7 @@\n  * http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html\n  * which configure could be changed to use.\n  */\n-static inline int __atomic_compare_exchange(\n+static inline int __db_atomic_compare_exchange(\n \tdb_atomic_t *p, atomic_value_t oldval, atomic_value_t newval)\n {\n \tatomic_value_t was;\n"
  },
  {
    "path": "package/berkeleydb/Config.in",
    "content": "config BR2_PACKAGE_BERKELEYDB\n\tbool \"berkeleydb\"\n\thelp\n\t  The Berkeley database. A very common library for\n\t  database applications.\n\n\t  http://www.sleepycat.com/products/db.shtml\n\nif BR2_PACKAGE_BERKELEYDB\n\nconfig BR2_PACKAGE_BERKELEYDB_COMPAT185\n\tbool \"DB 1.85 compatibility\"\n\thelp\n\t  Build and install DB 1.85 compatibility API.\n\nconfig BR2_PACKAGE_BERKELEYDB_TOOLS\n\tbool \"install tools\"\n\thelp\n\t  Install berkeleydb tools, mostly useful for debugging\n\t  purposes.\n\nendif\n"
  },
  {
    "path": "package/berkeleydb/berkeleydb.hash",
    "content": "# Locally calculated\nsha256\t76a25560d9e52a198d37a31440fd07632b5f1f8f9f2b6d5438f4bc3e7c9013ef  db-5.3.28.NC.tar.gz\nsha256\tb78815181a53241f9347c6b47d1031fd669946f863e1edc807a291354cec024b  LICENSE\n"
  },
  {
    "path": "package/berkeleydb/berkeleydb.mk",
    "content": "################################################################################\n#\n# berkeleydb\n#\n################################################################################\n\n# Since BerkeleyDB version 6 and above are licensed under the Affero\n# GPL (AGPL), we want to keep this 'bdb' package at version 5.x to\n# avoid licensing issues.\n# BerkeleyDB version 6 or above should be provided by a dedicated\n# package instead.\nBERKELEYDB_VERSION = 5.3.28\nBERKELEYDB_SITE = http://download.oracle.com/berkeley-db\nBERKELEYDB_SOURCE = db-$(BERKELEYDB_VERSION).NC.tar.gz\nBERKELEYDB_SUBDIR = build_unix\nBERKELEYDB_LICENSE = BerkeleyDB License\nBERKELEYDB_LICENSE_FILES = LICENSE\nBERKELEYDB_CPE_ID_VENDOR = oracle\nBERKELEYDB_CPE_ID_PRODUCT = berkeley_db\nBERKELEYDB_INSTALL_STAGING = YES\nBERKELEYDB_BINARIES = db_archive db_checkpoint db_deadlock db_dump \\\n\tdb_hotbackup db_load db_log_verify db_printlog db_recover db_replicate \\\n\tdb_stat db_tuner db_upgrade db_verify\n\n# build directory can't be the directory where configure are there, so..\ndefine BERKELEYDB_CONFIGURE_CMDS\n\t(cd $(@D)/build_unix; rm -rf config.cache; \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(TARGET_CONFIGURE_ARGS) \\\n\t\t../dist/configure $(QUIET) \\\n\t\t--target=$(GNU_TARGET_NAME) \\\n\t\t--host=$(GNU_TARGET_NAME) \\\n\t\t--build=$(GNU_HOST_NAME) \\\n\t\t--prefix=/usr \\\n\t\t--exec-prefix=/usr \\\n\t\t--sysconfdir=/etc \\\n\t\t--with-gnu-ld \\\n\t\t$(if $(BR2_INSTALL_LIBSTDCPP),--enable-cxx,--disable-cxx) \\\n\t\t--disable-java \\\n\t\t--disable-tcl \\\n\t\t$(if $(BR2_PACKAGE_BERKELEYDB_COMPAT185),--enable-compat185,--disable-compat185) \\\n\t\t$(SHARED_STATIC_LIBS_OPTS) \\\n\t\t--with-pic \\\n\t\t--enable-o_direct \\\n\t\t$(if $(BR2_TOOLCHAIN_HAS_THREADS),--enable-mutexsupport,--disable-mutexsupport) \\\n\t)\nendef\n\ndefine HOST_BERKELEYDB_CONFIGURE_CMDS\n\t(cd $(@D)/build_unix; rm -rf config.cache; \\\n\t\t$(HOST_CONFIGURE_OPTS) \\\n\t\t../dist/configure $(QUIET) \\\n\t\t--prefix=$(HOST_DIR) \\\n\t\t--with-gnu-ld \\\n\t\t--disable-cxx \\\n\t\t--disable-java \\\n\t\t--disable-tcl \\\n\t\t--disable-compat185 \\\n\t\t--with-pic \\\n\t\t--enable-o_direct \\\n\t\t--disable-mutexsupport \\\n\t)\nendef\n\nifneq ($(BR2_PACKAGE_BERKELEYDB_TOOLS),y)\n\ndefine BERKELEYDB_REMOVE_TOOLS\n\trm -f $(addprefix $(TARGET_DIR)/usr/bin/, $(BERKELEYDB_BINARIES))\nendef\n\nBERKELEYDB_POST_INSTALL_TARGET_HOOKS += BERKELEYDB_REMOVE_TOOLS\n\nendif\n\ndefine BERKELEYDB_REMOVE_DOCS\n\trm -rf $(TARGET_DIR)/usr/docs\nendef\n\nBERKELEYDB_POST_INSTALL_TARGET_HOOKS += BERKELEYDB_REMOVE_DOCS\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/bind/0001-cross.patch",
    "content": "From 505cc9fcadda5607dc4c5bacb03928c0b35162a8 Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Wed, 4 Nov 2020 17:51:38 +0100\nSubject: [PATCH] Use host compiler to build 'gen' since it's run when\n building.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n[Fabrice: updated for 9.11.10]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n---\n lib/dns/Makefile.in | 6 ++----\n 1 file changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/lib/dns/Makefile.in b/lib/dns/Makefile.in\nindex 8fc4e94f26..4ac92857e0 100644\n--- a/lib/dns/Makefile.in\n+++ b/lib/dns/Makefile.in\n@@ -184,10 +184,8 @@ code.h:\tgen\n \t./gen -s ${srcdir} > code.h || { rm -f $@ ; exit 1; }\n \n gen: gen.c\n-\t${BUILD_CC} ${BUILD_CFLAGS} -I${top_srcdir}/lib/isc/include \\\n-\t${LFS_CFLAGS} ${LFS_LDFLAGS} \\\n-\t${BUILD_CPPFLAGS} ${BUILD_LDFLAGS} -o $@ ${srcdir}/gen.c \\\n-\t${BUILD_LIBS} ${LFS_LIBS}\n+\t${HOSTCC} ${HOST_CFLAGS} -I${top_srcdir}/lib/isc/include \\\n+\t${HOST_LDFLAGS} -o $@ ${srcdir}/gen.c\n \n timestamp: include libdns.@A@\n \ttouch timestamp\n-- \n2.29.1\n\n"
  },
  {
    "path": "package/bind/Config.in",
    "content": "config BR2_PACKAGE_BIND\n\tbool \"bind\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  BIND (Berkeley Internet Name Domain) is an\n\t  implementation of the Domain Name System (DNS) protocols\n\t  and provides an openly redistributable reference\n\t  implementation of the major components of the Domain\n\t  Name System, including:\n\n\t    * a Domain Name System server (named)\n\t    * a Domain Name System resolver library\n\t    * tools for verifying the proper operation of the DNS\n\t      server\n\n\t  The BIND DNS Server is used on the vast majority of name\n\t  serving machines on the Internet, providing a robust and\n\t  stable architecture on top of which an organization's naming\n\t  architecture can be built. The resolver library included in\n\t  the BIND distribution provides the standard APIs for\n\t  translation between domain names and Internet addresses and is\n\t  intended to be linked with applications requiring name\n\t  service.\n\n\t  https://www.isc.org/bind/\n\nif BR2_PACKAGE_BIND\n\nconfig BR2_PACKAGE_BIND_SERVER\n\tbool \"Install server components\"\n\thelp\n\t  Install server components (named, lwresd)\n\nconfig BR2_PACKAGE_BIND_TOOLS\n\tbool \"Install tools\"\n\thelp\n\t  Install tools (dig, host, nslookup, nsupdate)\n\nendif\n"
  },
  {
    "path": "package/bind/S81named",
    "content": "#!/bin/sh\n\nCONFIG=/etc/bind/named.conf\nDAEMON=/usr/sbin/named\n\n[ -f $CONFIG ] || exit 0\n\ncase \"$1\" in\n\tstart)\n\t\tif [ ! -f /etc/rndc.key ]; then\n\t\t    printf \"Initializing bind control key: \"\n                    # if rndc.key is a symlink, the target must exist\n\t\t    touch /etc/rndc.key\n\t\t    rndc-confgen -a -r /dev/urandom 2>/dev/null && echo \"OK\" || echo \"FAIL\"\n\t\tfi\n\t\tprintf \"Starting domain name daemon: \"\n\t\tstart-stop-daemon -S -x $DAEMON -- -c $CONFIG -u named\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping domain name daemon: \"\n\t\trndc stop || start-stop-daemon -K -x $DAEMON\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\trestart)\n\t\t$0 stop || true\n\t\tsleep 1\n\t\t$0 start\n\t\t;;\n\treload|force-reload)\n\t\trndc reload || $0 restart\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload|force-reload}\"\n\t\texit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "package/bind/bind.hash",
    "content": "# Verified from https://ftp.isc.org/isc/bind9/9.11.36/bind-9.11.36.tar.gz.asc\n# with key AADBBA5074F1402F7B69D56BC5B4EE931A9F9DFD\nsha256  c953fcb6703b395aaa53e65ff8b2869b69a5303dd60507cba2201305e1811681  bind-9.11.36.tar.gz\nsha256  cad49daa42654bc241762cd998630168a2542c8fd6fad3881e2eac1510bb6fcd  COPYRIGHT\n"
  },
  {
    "path": "package/bind/bind.mk",
    "content": "################################################################################\n#\n# bind\n#\n################################################################################\n\nBIND_VERSION = 9.11.36\nBIND_SITE = https://ftp.isc.org/isc/bind9/$(BIND_VERSION)\n# bind does not support parallel builds.\nBIND_MAKE = $(MAKE1)\nBIND_INSTALL_STAGING = YES\nBIND_CONFIG_SCRIPTS = bind9-config isc-config.sh\nBIND_LICENSE = MPL-2.0\nBIND_LICENSE_FILES = COPYRIGHT\nBIND_CPE_ID_VENDOR = isc\nBIND_SELINUX_MODULES = bind\n# Only applies to RHEL6.x with DNSSEC validation on\nBIND_IGNORE_CVES = CVE-2017-3139\n# Library CVE and not used by bind but used by ISC DHCP\nBIND_IGNORE_CVES += CVE-2019-6470\nBIND_TARGET_SERVER_SBIN = arpaname ddns-confgen dnssec-checkds dnssec-coverage\nBIND_TARGET_SERVER_SBIN += dnssec-importkey dnssec-keygen dnssec-revoke\nBIND_TARGET_SERVER_SBIN += dnssec-settime dnssec-verify genrandom\nBIND_TARGET_SERVER_SBIN += isc-hmac-fixup named-journalprint nsec3hash\nBIND_TARGET_SERVER_SBIN += lwresd named named-checkconf named-checkzone\nBIND_TARGET_SERVER_SBIN += named-compilezone rndc rndc-confgen dnssec-dsfromkey\nBIND_TARGET_SERVER_SBIN += dnssec-keyfromlabel dnssec-signzone tsig-keygen\nBIND_TARGET_TOOLS_BIN = dig host nslookup nsupdate\nBIND_CONF_ENV = \\\n\tBUILD_CC=\"$(TARGET_CC)\" \\\n\tBUILD_CFLAGS=\"$(TARGET_CFLAGS)\"\nBIND_CONF_OPTS = \\\n\t$(if $(BR2_TOOLCHAIN_HAS_THREADS),--enable-threads,--disable-threads) \\\n\t--without-lmdb \\\n\t--with-libjson=no \\\n\t--with-randomdev=/dev/urandom \\\n\t--enable-epoll \\\n\t--with-gssapi=no \\\n\t--enable-filter-aaaa \\\n\t--disable-backtrace\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nBIND_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr\nBIND_DEPENDENCIES += zlib\nelse\nBIND_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nBIND_CONF_OPTS += --enable-linux-caps\nBIND_DEPENDENCIES += libcap\nelse\nBIND_CONF_OPTS += --disable-linux-caps\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nBIND_CONF_OPTS += --with-libxml2=$(STAGING_DIR)/usr\nBIND_DEPENDENCIES += libxml2\nelse\nBIND_CONF_OPTS += --with-libxml2=no\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nBIND_DEPENDENCIES += host-pkgconf openssl\nBIND_CONF_OPTS += \\\n\t--with-openssl=$(STAGING_DIR)/usr \\\n\t--with-ecdsa=yes \\\n\t--with-eddsa=no \\\n\t--with-aes=yes\nBIND_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`\n# GOST cipher support requires openssl extra engines\nifeq ($(BR2_PACKAGE_OPENSSL_ENGINES),y)\nBIND_CONF_OPTS += --with-gost=yes\nelse\nBIND_CONF_OPTS += --with-gost=no\nendif\nelse\nBIND_CONF_OPTS += --with-openssl=no\nendif\n\n# Used by dnssec-keymgr\nifeq ($(BR2_PACKAGE_PYTHON_PLY),y)\nBIND_DEPENDENCIES += host-python-ply\nBIND_CONF_OPTS += --with-python=$(HOST_DIR)/usr/bin/python\nelse\nBIND_CONF_OPTS += --with-python=no\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nBIND_DEPENDENCIES += readline\nelse\nBIND_CONF_OPTS += --with-readline=no\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nBIND_CONF_OPTS += \\\n\t--without-dlopen \\\n\t--without-libtool\nelse\nBIND_CONF_OPTS += \\\n\t--with-dlopen \\\n\t--with-libtool\nendif\n\ndefine BIND_TARGET_REMOVE_SERVER\n\trm -rf $(addprefix $(TARGET_DIR)/usr/sbin/, $(BIND_TARGET_SERVER_SBIN))\nendef\n\ndefine BIND_TARGET_REMOVE_TOOLS\n\trm -rf $(addprefix $(TARGET_DIR)/usr/bin/, $(BIND_TARGET_TOOLS_BIN))\nendef\n\nifeq ($(BR2_PACKAGE_BIND_SERVER),y)\ndefine BIND_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D $(BIND_PKGDIR)/S81named \\\n\t\t$(TARGET_DIR)/etc/init.d/S81named\nendef\ndefine BIND_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(BIND_PKGDIR)/named.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/named.service\nendef\nelse\nBIND_POST_INSTALL_TARGET_HOOKS += BIND_TARGET_REMOVE_SERVER\nendif\n\nifeq ($(BR2_PACKAGE_BIND_TOOLS),)\nBIND_POST_INSTALL_TARGET_HOOKS += BIND_TARGET_REMOVE_TOOLS\nendif\n\ndefine BIND_USERS\n\tnamed -1 named -1 * /etc/bind - - BIND daemon\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bind/named.service",
    "content": "[Unit]\nDescription=BIND Domain Name Server\nDocumentation=man:named(8)\nAfter=network.target\n\n[Service]\nExecStart=/usr/sbin/named -f -u named\nExecReload=/usr/sbin/rndc reload\nExecStop=/usr/sbin/rndc stop\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/binutils/2.32/0001-sh-conf.patch",
    "content": "From 98b2acf2bd3a527d114a9f8931083c2617a2daa9 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 25 Dec 2015 11:38:13 +0100\nSubject: [PATCH] sh-conf\n\nLikewise, binutils has no idea about any of these new targets either, so we\nfix that up too.. now we're able to actually build a real toolchain for\nsh2a_nofpu- and other more ineptly named toolchains (and yes, there are more\ninept targets than that one, really. Go look, I promise).\n\n[Romain: rebase on top of 2.32]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n[Thomas: rebase on top of 2.29, in which sh64 support was removed.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure    | 2 +-\n configure.ac | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/configure b/configure\nindex 37476459612..66fbc19f9ff 100755\n--- a/configure\n+++ b/configure\n@@ -3861,7 +3861,7 @@ case \"${target}\" in\n   nvptx*-*-*)\n     noconfigdirs=\"$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc\"\n     ;;\n-  sh-*-*)\n+  sh*-*-*)\n     case \"${target}\" in\n       sh*-*-elf)\n          ;;\ndiff --git a/configure.ac b/configure.ac\nindex 46501c28826..6c731930884 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1158,7 +1158,7 @@ case \"${target}\" in\n   nvptx*-*-*)\n     noconfigdirs=\"$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc\"\n     ;;\n-  sh-*-*)\n+  sh*-*-*)\n     case \"${target}\" in\n       sh*-*-elf)\n          ;;\n-- \n2.14.5\n\n"
  },
  {
    "path": "package/binutils/2.32/0002-poison-system-directories.patch",
    "content": "From f559402ea868d370ddf25089c68cda2600db3bfa Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 25 Dec 2015 11:45:38 +0100\nSubject: [PATCH] poison-system-directories\n\nPatch adapted to binutils 2.23.2 and extended to use\nBR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni.\n\n[Romain: rebase on top of 2.32]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n[Gustavo: adapt to binutils 2.25]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\nUpstream-Status: Inappropriate [distribution: codesourcery]\n\nPatch originally created by Mark Hatle, forward-ported to\nbinutils 2.21 by Scott Garman.\n\npurpose:  warn for uses of system directories when cross linking\n\nCode Merged from Sourcery G++ binutils 2.19 - 4.4-277\n\n2008-07-02  Joseph Myers  <joseph@codesourcery.com>\n\n    ld/\n    * ld.h (args_type): Add error_poison_system_directories.\n    * ld.texinfo (--error-poison-system-directories): Document.\n    * ldfile.c (ldfile_add_library_path): Check\n    command_line.error_poison_system_directories.\n    * ldmain.c (main): Initialize\n    command_line.error_poison_system_directories.\n    * lexsup.c (enum option_values): Add\n    OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.\n    (ld_options): Add --error-poison-system-directories.\n    (parse_args): Handle new option.\n\n2007-06-13  Joseph Myers  <joseph@codesourcery.com>\n\n    ld/\n    * config.in: Regenerate.\n    * ld.h (args_type): Add poison_system_directories.\n    * ld.texinfo (--no-poison-system-directories): Document.\n    * ldfile.c (ldfile_add_library_path): Check\n    command_line.poison_system_directories.\n    * ldmain.c (main): Initialize\n    command_line.poison_system_directories.\n    * lexsup.c (enum option_values): Add\n    OPTION_NO_POISON_SYSTEM_DIRECTORIES.\n    (ld_options): Add --no-poison-system-directories.\n    (parse_args): Handle new option.\n\n2007-04-20  Joseph Myers  <joseph@codesourcery.com>\n\n    Merge from Sourcery G++ binutils 2.17:\n\n    2007-03-20  Joseph Myers  <joseph@codesourcery.com>\n    Based on patch by Mark Hatle <mark.hatle@windriver.com>.\n    ld/\n    * configure.ac (--enable-poison-system-directories): New option.\n    * configure, config.in: Regenerate.\n    * ldfile.c (ldfile_add_library_path): If\n    ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,\n    /usr/lib, /usr/local/lib or /usr/X11R6/lib.\n\nSigned-off-by: Mark Hatle <mark.hatle@windriver.com>\nSigned-off-by: Scott Garman <scott.a.garman@intel.com>\n---\n ld/config.in    |  3 +++\n ld/configure    | 14 ++++++++++++++\n ld/configure.ac | 10 ++++++++++\n ld/ld.h         |  8 ++++++++\n ld/ld.texi      | 12 ++++++++++++\n ld/ldfile.c     | 17 +++++++++++++++++\n ld/ldlex.h      |  2 ++\n ld/ldmain.c     |  2 ++\n ld/lexsup.c     | 21 +++++++++++++++++++++\n 9 files changed, 89 insertions(+)\n\ndiff --git a/ld/config.in b/ld/config.in\nindex d93c9b08300..5da2742beac 100644\n--- a/ld/config.in\n+++ b/ld/config.in\n@@ -31,6 +31,9 @@\n    language is requested. */\n #undef ENABLE_NLS\n \n+/* Define to warn for use of native system library directories */\n+#undef ENABLE_POISON_SYSTEM_DIRECTORIES\n+\n /* Additional extension a shared object might have. */\n #undef EXTRA_SHLIB_EXTENSION\n \ndiff --git a/ld/configure b/ld/configure\nindex 18ada7808f5..7e7d2f97809 100755\n--- a/ld/configure\n+++ b/ld/configure\n@@ -822,6 +822,7 @@ with_lib_path\n enable_targets\n enable_64_bit_bfd\n with_sysroot\n+enable_poison_system_directories\n enable_gold\n enable_got\n enable_compressed_debug_sections\n@@ -1486,6 +1487,8 @@ Optional Features:\n   --disable-largefile     omit support for large files\n   --enable-targets        alternative target configurations\n   --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)\n+  --enable-poison-system-directories\n+                          warn for use of native system library directories\n   --enable-gold[=ARG]     build gold [ARG={default,yes,no}]\n   --enable-got=<type>     GOT handling scheme (target, single, negative,\n                           multigot)\n@@ -15803,7 +15806,18 @@ else\n fi\n \n \n+# Check whether --enable-poison-system-directories was given.\n+if test \"${enable_poison_system_directories+set}\" = set; then :\n+  enableval=$enable_poison_system_directories;\n+else\n+  enable_poison_system_directories=no\n+fi\n+\n+if test \"x${enable_poison_system_directories}\" = \"xyes\"; then\n \n+$as_echo \"#define ENABLE_POISON_SYSTEM_DIRECTORIES 1\" >>confdefs.h\n+\n+fi\n \n # Check whether --enable-got was given.\n if test \"${enable_got+set}\" = set; then :\ndiff --git a/ld/configure.ac b/ld/configure.ac\nindex d335f210917..7f692d93873 100644\n--- a/ld/configure.ac\n+++ b/ld/configure.ac\n@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot)\n AC_SUBST(TARGET_SYSTEM_ROOT)\n AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)\n \n+AC_ARG_ENABLE([poison-system-directories],\n+         AS_HELP_STRING([--enable-poison-system-directories],\n+                [warn for use of native system library directories]),,\n+         [enable_poison_system_directories=no])\n+if test \"x${enable_poison_system_directories}\" = \"xyes\"; then\n+  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],\n+       [1],\n+       [Define to warn for use of native system library directories])\n+fi\n+\n dnl Use --enable-gold to decide if this linker should be the default.\n dnl \"install_as_default\" is set to false if gold is the default linker.\n dnl \"installed_linker\" is the installed BFD linker name.\ndiff --git a/ld/ld.h b/ld/ld.h\nindex b97d977f37b..f3bbd2d55d4 100644\n--- a/ld/ld.h\n+++ b/ld/ld.h\n@@ -180,6 +180,14 @@ typedef struct\n      in the linker script.  */\n   bfd_boolean force_group_allocation;\n \n+  /* If TRUE (the default) warn for uses of system directories when\n+     cross linking.  */\n+  bfd_boolean poison_system_directories;\n+\n+  /* If TRUE (default FALSE) give an error for uses of system\n+     directories when cross linking instead of a warning.  */\n+  bfd_boolean error_poison_system_directories;\n+\n   /* Big or little endian as set on command line.  */\n   enum endian_enum endian;\n \ndiff --git a/ld/ld.texi b/ld/ld.texi\nindex 5179af3e0e1..f78bf746822 100644\n--- a/ld/ld.texi\n+++ b/ld/ld.texi\n@@ -2524,6 +2524,18 @@ string identifying the original linked file does not change.\n \n Passing @code{none} for @var{style} disables the setting from any\n @code{--build-id} options earlier on the command line.\n+\n+@kindex --no-poison-system-directories\n+@item --no-poison-system-directories\n+Do not warn for @option{-L} options using system directories such as\n+@file{/usr/lib} when cross linking.  This option is intended for use\n+in chroot environments when such directories contain the correct\n+libraries for the target system rather than the host.\n+\n+@kindex --error-poison-system-directories\n+@item --error-poison-system-directories\n+Give an error instead of a warning for @option{-L} options using\n+system directories when cross linking.\n @end table\n \n @c man end\ndiff --git a/ld/ldfile.c b/ld/ldfile.c\nindex fcadc08c73f..63e295ce8ae 100644\n--- a/ld/ldfile.c\n+++ b/ld/ldfile.c\n@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline)\n     new_dirs->name = concat (ld_sysroot, name + strlen (\"$SYSROOT\"), (const char *) NULL);\n   else\n     new_dirs->name = xstrdup (name);\n+\n+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES\n+  if (command_line.poison_system_directories\n+  && ((!strncmp (name, \"/lib\", 4))\n+      || (!strncmp (name, \"/usr/lib\", 8))\n+      || (!strncmp (name, \"/usr/local/lib\", 14))\n+      || (!strncmp (name, \"/usr/X11R6/lib\", 14))))\n+   {\n+     if (command_line.error_poison_system_directories)\n+       einfo (_(\"%X%P: error: library search path \\\"%s\\\" is unsafe for \"\n+            \"cross-compilation\\n\"), name);\n+     else\n+       einfo (_(\"%P: warning: library search path \\\"%s\\\" is unsafe for \"\n+            \"cross-compilation\\n\"), name);\n+   }\n+#endif\n+\n }\n \n /* Try to open a BFD for a lang_input_statement.  */\ndiff --git a/ld/ldlex.h b/ld/ldlex.h\nindex 32853debe45..8135361c498 100644\n--- a/ld/ldlex.h\n+++ b/ld/ldlex.h\n@@ -148,6 +148,8 @@ enum option_values\n   OPTION_REQUIRE_DEFINED_SYMBOL,\n   OPTION_ORPHAN_HANDLING,\n   OPTION_FORCE_GROUP_ALLOCATION,\n+  OPTION_NO_POISON_SYSTEM_DIRECTORIES,\n+  OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,\n };\n \n /* The initial parser states.  */\ndiff --git a/ld/ldmain.c b/ld/ldmain.c\nindex 77cdbd0dd29..725512f1260 100644\n--- a/ld/ldmain.c\n+++ b/ld/ldmain.c\n@@ -269,6 +269,8 @@ main (int argc, char **argv)\n   command_line.warn_mismatch = TRUE;\n   command_line.warn_search_mismatch = TRUE;\n   command_line.check_section_addresses = -1;\n+  command_line.poison_system_directories = TRUE;\n+  command_line.error_poison_system_directories = FALSE;\n \n   /* We initialize DEMANGLING based on the environment variable\n      COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the\ndiff --git a/ld/lexsup.c b/ld/lexsup.c\nindex 88e85c73f49..be4cd492d14 100644\n--- a/ld/lexsup.c\n+++ b/ld/lexsup.c\n@@ -543,6 +543,14 @@ static const struct ld_option ld_options[] =\n   { {\"orphan-handling\", required_argument, NULL, OPTION_ORPHAN_HANDLING},\n     '\\0', N_(\"=MODE\"), N_(\"Control how orphan sections are handled.\"),\n     TWO_DASHES },\n+  { {\"no-poison-system-directories\", no_argument, NULL,\n+    OPTION_NO_POISON_SYSTEM_DIRECTORIES},\n+    '\\0', NULL, N_(\"Do not warn for -L options using system directories\"),\n+    TWO_DASHES },\n+  { {\"error-poison-system-directories\", no_argument, NULL,\n+    OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},\n+    '\\0', NULL, N_(\"Give an error for -L options using system directories\"),\n+    TWO_DASHES },\n };\n \n #define OPTION_COUNT ARRAY_SIZE (ld_options)\n@@ -555,6 +563,7 @@ parse_args (unsigned argc, char **argv)\n   int ingroup = 0;\n   char *default_dirlist = NULL;\n   char *shortopts;\n+  char *BR_paranoid_env;\n   struct option *longopts;\n   struct option *really_longopts;\n   int last_optind;\n@@ -1543,6 +1552,14 @@ parse_args (unsigned argc, char **argv)\n \t  }\n \t  break;\n \n+\tcase OPTION_NO_POISON_SYSTEM_DIRECTORIES:\n+\t  command_line.poison_system_directories = FALSE;\n+\t  break;\n+\n+\tcase OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:\n+\t  command_line.error_poison_system_directories = TRUE;\n+\t  break;\n+\n \tcase OPTION_PUSH_STATE:\n \t  input_flags.pushed = xmemdup (&input_flags,\n \t\t\t\t\tsizeof (input_flags),\n@@ -1586,6 +1603,10 @@ parse_args (unsigned argc, char **argv)\n       command_line.soname = NULL;\n     }\n \n+  BR_paranoid_env = getenv(\"BR_COMPILER_PARANOID_UNSAFE_PATH\");\n+  if (BR_paranoid_env && strlen(BR_paranoid_env) > 0)\n+    command_line.error_poison_system_directories = TRUE;\n+\n   while (ingroup)\n     {\n       lang_leave_group ();\n-- \n2.14.5\n\n"
  },
  {
    "path": "package/binutils/2.32/0003-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch",
    "content": "From 278989f23735aa501be1052e085540c75c126dbb Mon Sep 17 00:00:00 2001\nFrom: Max Filippov <jcmvbkbc@gmail.com>\nDate: Thu, 28 Mar 2019 17:03:57 -0700\nSubject: [PATCH] bfd: xtensa: fix shrink_dynamic_reloc_sections for\n export-dynamic\n\nshrink_dynamic_reloc_sections must remove PLT entry that was created for\nan undefined weak symbol in the presence of --export-dynamic option when\nrelaxation coalesces literals pointing to that symbol. This fixes the\nfollowing assertion:\n\n  ld: BFD (GNU Binutils) 2.31.1 internal error, aborting at\n  elf32-xtensa.c:3292 in elf_xtensa_finish_dynamic_sections\n\n2019-03-28  Max Filippov  <jcmvbkbc@gmail.com>\nbfd/\n\t* elf32-xtensa.c (shrink_dynamic_reloc_sections): Add\n\tinfo->export_dynamic to the conditional.\n\nSigned-off-by: Max Filippov <jcmvbkbc@gmail.com>\n---\n bfd/elf32-xtensa.c                                         |  3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c\nindex c3df3d6db756..37ea200eea74 100644\n--- a/bfd/elf32-xtensa.c\n+++ b/bfd/elf32-xtensa.c\n@@ -10083,7 +10083,8 @@ shrink_dynamic_reloc_sections (struct bfd_link_info *info,\n       && (input_section->flags & SEC_ALLOC) != 0\n       && (dynamic_symbol || bfd_link_pic (info))\n       && (!h || h->root.type != bfd_link_hash_undefweak\n-\t  || (dynamic_symbol && bfd_link_dll (info))))\n+\t  || (dynamic_symbol\n+\t      && (bfd_link_dll (info) || info->export_dynamic))))\n     {\n       asection *srel;\n       bfd_boolean is_plt = FALSE;\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/binutils/2.32/0004-gas-use-literals-const16-for-xtensa-loop-relaxation.patch",
    "content": "From 0dbdfb7918d0b0cfcb8883b24c1291574bf5bb7c Mon Sep 17 00:00:00 2001\nFrom: Max Filippov <jcmvbkbc@gmail.com>\nDate: Tue, 2 Apr 2019 14:32:42 -0700\nSubject: [PATCH] gas: use literals/const16 for xtensa loop relaxation\n\nLoop opcode relaxation that uses addi/addmi doesn't work well with other\nrelaxations that may cause code movement. Instead of encoding fixed loop\nend offset in the relaxed sequence use l32r or a pair of const16 to load\nloop end address. This way the address of the loop end gets a relocation\nrecord and it gets updated appropriately.\n\ngas/\n2019-04-02  Max Filippov  <jcmvbkbc@gmail.com>\n\n\t* config/tc-xtensa.c (convert_frag_immed): Drop\n\tconvert_frag_immed_finish_loop invocation.\n\t(convert_frag_immed_finish_loop): Drop declaration and\n\tdefinition.\n\t* config/xtensa-relax.c (widen_spec_list): Replace loop\n\twidening that uses addi/addmi with widening that uses l32r\n\tand const16.\n\nSigned-off-by: Max Filippov <jcmvbkbc@gmail.com>\n---\n gas/config/tc-xtensa.c    | 120 ----------------------------------------------\n gas/config/xtensa-relax.c |  77 ++++++++++++++++++++---------\n 2 files changed, 55 insertions(+), 142 deletions(-)\n\ndiff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c\nindex 3bdbbc931cfc..0cc06361cf6f 100644\n--- a/gas/config/tc-xtensa.c\n+++ b/gas/config/tc-xtensa.c\n@@ -10668,7 +10668,6 @@ convert_frag_fill_nop (fragS *fragP)\n static fixS *fix_new_exp_in_seg\n   (segT, subsegT, fragS *, int, int, expressionS *, int,\n    bfd_reloc_code_real_type);\n-static void convert_frag_immed_finish_loop (segT, fragS *, TInsn *);\n \n static void\n convert_frag_immed (segT segP,\n@@ -10910,9 +10909,6 @@ convert_frag_immed (segT segP,\n \t}\n     }\n \n-  if (expanded && xtensa_opcode_is_loop (isa, orig_tinsn.opcode) == 1)\n-    convert_frag_immed_finish_loop (segP, fragP, &orig_tinsn);\n-\n   if (expanded && is_direct_call_opcode (orig_tinsn.opcode))\n     {\n       /* Add an expansion note on the expanded instruction.  */\n@@ -10949,122 +10945,6 @@ fix_new_exp_in_seg (segT new_seg,\n }\n \n \n-/* Relax a loop instruction so that it can span loop >256 bytes.\n-\n-                  loop    as, .L1\n-          .L0:\n-                  rsr     as, LEND\n-                  wsr     as, LBEG\n-                  addi    as, as, lo8 (label-.L1)\n-                  addmi   as, as, mid8 (label-.L1)\n-                  wsr     as, LEND\n-                  isync\n-                  rsr     as, LCOUNT\n-                  addi    as, as, 1\n-          .L1:\n-                  <<body>>\n-          label:\n-*/\n-\n-static void\n-convert_frag_immed_finish_loop (segT segP, fragS *fragP, TInsn *tinsn)\n-{\n-  TInsn loop_insn;\n-  TInsn addi_insn;\n-  TInsn addmi_insn;\n-  unsigned long target;\n-  static xtensa_insnbuf insnbuf = NULL;\n-  unsigned int loop_length, loop_length_hi, loop_length_lo;\n-  xtensa_isa isa = xtensa_default_isa;\n-  addressT loop_offset;\n-  addressT addi_offset = 9;\n-  addressT addmi_offset = 12;\n-  fragS *next_fragP;\n-  int target_count;\n-\n-  if (!insnbuf)\n-    insnbuf = xtensa_insnbuf_alloc (isa);\n-\n-  /* Get the loop offset.  */\n-  loop_offset = get_expanded_loop_offset (tinsn->opcode);\n-\n-  /* Validate that there really is a LOOP at the loop_offset.  Because\n-     loops are not bundleable, we can assume that the instruction will be\n-     in slot 0.  */\n-  tinsn_from_chars (&loop_insn, fragP->fr_opcode + loop_offset, 0);\n-  tinsn_immed_from_frag (&loop_insn, fragP, 0);\n-\n-  gas_assert (xtensa_opcode_is_loop (isa, loop_insn.opcode) == 1);\n-  addi_offset += loop_offset;\n-  addmi_offset += loop_offset;\n-\n-  gas_assert (tinsn->ntok == 2);\n-  if (tinsn->tok[1].X_op == O_constant)\n-    target = tinsn->tok[1].X_add_number;\n-  else if (tinsn->tok[1].X_op == O_symbol)\n-    {\n-      /* Find the fragment.  */\n-      symbolS *sym = tinsn->tok[1].X_add_symbol;\n-      gas_assert (S_GET_SEGMENT (sym) == segP\n-\t      || S_GET_SEGMENT (sym) == absolute_section);\n-      target = (S_GET_VALUE (sym) + tinsn->tok[1].X_add_number);\n-    }\n-  else\n-    {\n-      as_bad (_(\"invalid expression evaluation type %d\"), tinsn->tok[1].X_op);\n-      target = 0;\n-    }\n-\n-  loop_length = target - (fragP->fr_address + fragP->fr_fix);\n-  loop_length_hi = loop_length & ~0x0ff;\n-  loop_length_lo = loop_length & 0x0ff;\n-  if (loop_length_lo >= 128)\n-    {\n-      loop_length_lo -= 256;\n-      loop_length_hi += 256;\n-    }\n-\n-  /* Because addmi sign-extends the immediate, 'loop_length_hi' can be at most\n-     32512.  If the loop is larger than that, then we just fail.  */\n-  if (loop_length_hi > 32512)\n-    as_bad_where (fragP->fr_file, fragP->fr_line,\n-\t\t  _(\"loop too long for LOOP instruction\"));\n-\n-  tinsn_from_chars (&addi_insn, fragP->fr_opcode + addi_offset, 0);\n-  gas_assert (addi_insn.opcode == xtensa_addi_opcode);\n-\n-  tinsn_from_chars (&addmi_insn, fragP->fr_opcode + addmi_offset, 0);\n-  gas_assert (addmi_insn.opcode == xtensa_addmi_opcode);\n-\n-  set_expr_const (&addi_insn.tok[2], loop_length_lo);\n-  tinsn_to_insnbuf (&addi_insn, insnbuf);\n-\n-  fragP->tc_frag_data.is_insn = TRUE;\n-  xtensa_insnbuf_to_chars\n-    (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addi_offset, 0);\n-\n-  set_expr_const (&addmi_insn.tok[2], loop_length_hi);\n-  tinsn_to_insnbuf (&addmi_insn, insnbuf);\n-  xtensa_insnbuf_to_chars\n-    (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addmi_offset, 0);\n-\n-  /* Walk through all of the frags from here to the loop end\n-     and mark them as no_transform to keep them from being modified\n-     by the linker.  If we ever have a relocation for the\n-     addi/addmi of the difference of two symbols we can remove this.  */\n-\n-  target_count = 0;\n-  for (next_fragP = fragP; next_fragP != NULL;\n-       next_fragP = next_fragP->fr_next)\n-    {\n-      next_fragP->tc_frag_data.is_no_transform = TRUE;\n-      if (next_fragP->tc_frag_data.is_loop_target)\n-\ttarget_count++;\n-      if (target_count == 2)\n-\tbreak;\n-    }\n-}\n-\n \f\n /* A map that keeps information on a per-subsegment basis.  This is\n    maintained during initial assembly, but is invalid once the\ndiff --git a/gas/config/xtensa-relax.c b/gas/config/xtensa-relax.c\nindex cb296ed85ed2..daf15d52c259 100644\n--- a/gas/config/xtensa-relax.c\n+++ b/gas/config/xtensa-relax.c\n@@ -87,13 +87,7 @@\n    when the first and second operands are not the same as specified\n    by the \"| %at!=%as\" precondition clause.\n    {\"l32i %at,%as,%imm | %at!=%as\",\n-   \"LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0\"}\n-\n-   There is special case for loop instructions here, but because we do\n-   not currently have the ability to represent the difference of two\n-   symbols, the conversion requires special code in the assembler to\n-   write the operands of the addi/addmi pair representing the\n-   difference of the old and new loop end label.  */\n+   \"LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0\"}  */\n \n #include \"as.h\"\n #include \"xtensa-isa.h\"\n@@ -306,44 +300,83 @@ static string_pattern_pair widen_spec_list[] =\n   {\"l32i %at,%as,%imm | %at!=%as ? IsaUseConst16\",\n    \"const16 %at,HI16U(%imm); const16 %at,LOW16U(%imm); add %at,%at,%as; l32i %at,%at,0\"},\n \n-  /* This is only PART of the loop instruction.  In addition,\n-     hardcoded into its use is a modification of the final operand in\n-     the instruction in bytes 9 and 12.  */\n-  {\"loop %as,%label | %as!=1 ? IsaUseLoops\",\n+  /* Widening loops with literals.  */\n+  {\"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R\",\n+   \"loop %as,%LABEL;\"\n+   \"rsr.lend    %as;\"\t\t/* LEND */\n+   \"wsr.lbeg    %as;\"\t\t/* LBEG */\n+   \"LITERAL     %label;\"\n+   \"l32r        %as, %LITERAL;\"\n+   \"nop;\"\n+   \"wsr.lend    %as;\"\n+   \"isync;\"\n+   \"rsr.lcount    %as;\"\t\t/* LCOUNT */\n+   \"addi    %as, %as, 1;\"\n+   \"LABEL\"},\n+  {\"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R\",\n+   \"beqz    %as,%label;\"\n+   \"bltz    %as,%label;\"\n+   \"loopgtz %as,%LABEL;\"\n+   \"rsr.lend    %as;\"\t\t/* LEND */\n+   \"wsr.lbeg    %as;\"\t\t/* LBEG */\n+   \"LITERAL     %label;\"\n+   \"l32r        %as, %LITERAL;\"\n+   \"nop;\"\n+   \"wsr.lend    %as;\"\n+   \"isync;\"\n+   \"rsr.lcount    %as;\"\t\t/* LCOUNT */\n+   \"addi    %as, %as, 1;\"\n+   \"LABEL\"},\n+  {\"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R\",\n+   \"beqz     %as,%label;\"\n+   \"loopnez %as,%LABEL;\"\n+   \"rsr.lend    %as;\"\t\t/* LEND */\n+   \"wsr.lbeg    %as;\"\t\t/* LBEG */\n+   \"LITERAL     %label;\"\n+   \"l32r        %as, %LITERAL;\"\n+   \"nop;\"\n+   \"wsr.lend    %as;\"\n+   \"isync;\"\n+   \"rsr.lcount    %as;\"\t\t/* LCOUNT */\n+   \"addi    %as, %as, 1;\"\n+   \"LABEL\"},\n+\n+  /* Widening loops with const16.  */\n+  {\"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16\",\n    \"loop %as,%LABEL;\"\n    \"rsr.lend    %as;\"\t\t/* LEND */\n    \"wsr.lbeg    %as;\"\t\t/* LBEG */\n-   \"addi    %as, %as, 0;\"\t/* lo8(%label-%LABEL1) */\n-   \"addmi   %as, %as, 0;\"\t/* mid8(%label-%LABEL1) */\n+   \"const16     %as,HI16U(%label);\"\n+   \"const16     %as,LOW16U(%label);\"\n    \"wsr.lend    %as;\"\n    \"isync;\"\n    \"rsr.lcount    %as;\"\t\t/* LCOUNT */\n-   \"addi    %as, %as, 1;\"\t/* density -> addi.n %as, %as, 1 */\n+   \"addi    %as, %as, 1;\"\n    \"LABEL\"},\n-  {\"loopgtz %as,%label | %as!=1 ? IsaUseLoops\",\n+  {\"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16\",\n    \"beqz    %as,%label;\"\n    \"bltz    %as,%label;\"\n    \"loopgtz %as,%LABEL;\"\n    \"rsr.lend    %as;\"\t\t/* LEND */\n    \"wsr.lbeg    %as;\"\t\t/* LBEG */\n-   \"addi    %as, %as, 0;\"\t/* lo8(%label-%LABEL1) */\n-   \"addmi   %as, %as, 0;\"\t/* mid8(%label-%LABEL1) */\n+   \"const16     %as,HI16U(%label);\"\n+   \"const16     %as,LOW16U(%label);\"\n    \"wsr.lend    %as;\"\n    \"isync;\"\n    \"rsr.lcount    %as;\"\t\t/* LCOUNT */\n-   \"addi    %as, %as, 1;\"\t/* density -> addi.n %as, %as, 1 */\n+   \"addi    %as, %as, 1;\"\n    \"LABEL\"},\n-  {\"loopnez %as,%label | %as!=1 ? IsaUseLoops\",\n+  {\"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16\",\n    \"beqz     %as,%label;\"\n    \"loopnez %as,%LABEL;\"\n    \"rsr.lend    %as;\"\t\t/* LEND */\n    \"wsr.lbeg    %as;\"\t\t/* LBEG */\n-   \"addi    %as, %as, 0;\"\t/* lo8(%label-%LABEL1) */\n-   \"addmi   %as, %as, 0;\"\t/* mid8(%label-%LABEL1) */\n+   \"const16     %as,HI16U(%label);\"\n+   \"const16     %as,LOW16U(%label);\"\n    \"wsr.lend    %as;\"\n    \"isync;\"\n    \"rsr.lcount    %as;\"\t\t/* LCOUNT */\n-   \"addi    %as, %as, 1;\"\t/* density -> addi.n %as, %as, 1 */\n+   \"addi    %as, %as, 1;\"\n    \"LABEL\"},\n \n   /* Relaxing to wide branches.  Order is important here.  With wide\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/binutils/2.32/0005-xtensa-gas-put-.literal_position-at-section-start.patch",
    "content": "From 471702ac4a57878a06e8167f063274cf413e548d Mon Sep 17 00:00:00 2001\nFrom: Max Filippov <jcmvbkbc@gmail.com>\nDate: Mon, 8 Apr 2019 13:47:18 -0700\nSubject: [PATCH] xtensa: gas: put .literal_position at section start\n\nProvide literal position at the beginning of each section for literal\nspace reserved by relaxations when text-section-literals or\nauto-litpools options are used. Remove code that adds fill frag to the\nliteral section for every .literal_position directive to avoid creation\nof empty literal sections.\n\nFix auto-litpools tests that got literal pool address changes.\n\ngas/\n2019-04-11  Max Filippov  <jcmvbkbc@gmail.com>\n\n\t* config/tc-xtensa.c (xtensa_is_init_fini): Add declaration.\n\t(xtensa_mark_literal_pool_location): Don't add fill frag to literal\n\tsection that records literal pool location.\n\t(md_begin): Call xtensa_mark_literal_pool_location when text\n\tsection literals or auto litpools are used.\n\t(xtensa_elf_section_change_hook): Call\n\txtensa_mark_literal_pool_location when text section literals or\n\tauto litpools are used, there's no literal pool location defined\n\tfor the current section and it's not .init or .fini.\n\nSigned-off-by: Max Filippov <jcmvbkbc@gmail.com>\n---\n gas/config/tc-xtensa.c                          | 22 +++++++++-------------\n 1 file changed, 9 insertions(+), 13 deletions(-)\n\ndiff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c\nindex 0cc06361cf6f..6a80e76fed8c 100644\n--- a/gas/config/tc-xtensa.c\n+++ b/gas/config/tc-xtensa.c\n@@ -497,6 +497,7 @@ static fixS *xg_append_jump (fragS *fragP, symbolS *sym, offsetT offset);\n static void xtensa_maybe_create_literal_pool_frag (bfd_boolean, bfd_boolean);\n static bfd_boolean auto_litpools = FALSE;\n static int auto_litpool_limit = 0;\n+static bfd_boolean xtensa_is_init_fini (segT seg);\n \n /* Alignment Functions.  */\n \n@@ -4797,7 +4798,6 @@ xtensa_mark_literal_pool_location (void)\n {\n   /* Any labels pointing to the current location need\n      to be adjusted to after the literal pool.  */\n-  emit_state s;\n   fragS *pool_location;\n \n   if (use_literal_section)\n@@ -4818,19 +4818,7 @@ xtensa_mark_literal_pool_location (void)\n \t\tRELAX_LITERAL_POOL_END, NULL, 0, NULL);\n   xtensa_set_frag_assembly_state (frag_now);\n \n-  /* Now put a frag into the literal pool that points to this location.  */\n   set_literal_pool_location (now_seg, pool_location);\n-  xtensa_switch_to_non_abs_literal_fragment (&s);\n-  frag_align (2, 0, 0);\n-  record_alignment (now_seg, 2);\n-\n-  /* Close whatever frag is there.  */\n-  frag_variant (rs_fill, 0, 0, 0, NULL, 0, NULL);\n-  xtensa_set_frag_assembly_state (frag_now);\n-  frag_now->tc_frag_data.literal_frag = pool_location;\n-  frag_variant (rs_fill, 0, 0, 0, NULL, 0, NULL);\n-  xtensa_restore_emit_state (&s);\n-  xtensa_set_frag_assembly_state (frag_now);\n }\n \n \n@@ -5334,6 +5322,9 @@ md_begin (void)\n   /* Set up the assembly state.  */\n   if (!frag_now->tc_frag_data.is_assembly_state_set)\n     xtensa_set_frag_assembly_state (frag_now);\n+\n+  if (!use_literal_section)\n+    xtensa_mark_literal_pool_location ();\n }\n \n \n@@ -5933,6 +5924,11 @@ xtensa_elf_section_change_hook (void)\n   /* Set up the assembly state.  */\n   if (!frag_now->tc_frag_data.is_assembly_state_set)\n     xtensa_set_frag_assembly_state (frag_now);\n+\n+  if (!use_literal_section\n+      && seg_info (now_seg)->tc_segment_info_data.literal_pool_loc == NULL\n+      && !xtensa_is_init_fini (now_seg))\n+    xtensa_mark_literal_pool_location ();\n }\n \n \n-- \n2.11.0\n\n"
  },
  {
    "path": "package/binutils/2.32/0006-or1k-Fix-incorrect-value-in-PLT-GOT-entries-causing-.patch",
    "content": "From b17678f639f953d687d96cd52690e7cbfae50f91 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Fri, 23 Aug 2019 22:25:55 +0900\nSubject: [PATCH] or1k: Fix incorrect value in PLT GOT entries, causing\n infinite loop\n\nThe PLT GOT entry should point to the first PLT entry which contains the\nruntime linker function.  It was pointing back to the symbol PLT entry\ncausing an infinite loop.\n\nI found this when testing the OpenRISC glibc port which uses the runtime\ndynamic linker.  It seems other libc's we use so far have not been\nmaking use of the initial PLT GOT entries.\n\nbfd/ChangeLog:\n\n\t* elf32-or1k.c (or1k_elf_finish_dynamic_symbol): Use correct value for\n\tPLT GOT entries.\n\n(cherry picked from commit 09f7b0de537d465fc8ed9f9433e348c1bc78aab2)\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n bfd/elf32-or1k.c | 7 +++++--\n 1 file changed, 5 insertions(+), 2 deletions(-)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 2f200b197b8..32839cfa7b6 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -2379,8 +2379,11 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n       or1k_write_plt_entry (output_bfd, splt->contents + h->plt.offset,\n \t\t\t    plt0, plt1, plt2, OR1K_JR(12));\n \n-      /* Fill in the entry in the global offset table.  */\n-      bfd_put_32 (output_bfd, plt_addr, sgot->contents + got_offset);\n+      /* Fill in the entry in the global offset table.  We initialize it to\n+\t point to the top of the plt.  This is done to lazy lookup the actual\n+\t symbol as the first plt entry will be setup by libc to call the\n+\t runtime dynamic linker.  */\n+      bfd_put_32 (output_bfd, plt_base_addr, sgot->contents + got_offset);\n \n       /* Fill in the entry in the .rela.plt section.  */\n       rela.r_offset = got_addr;\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/binutils/2.32/0007-bfd-xtensa-fix-PR-ld-25630.patch",
    "content": "From 85dcca5997cf3822d6456a5c9c59c46b56adfbb8 Mon Sep 17 00:00:00 2001\nFrom: Max Filippov <jcmvbkbc@gmail.com>\nDate: Wed, 4 Mar 2020 14:54:27 -0800\nSubject: [PATCH] bfd: xtensa: fix PR ld/25630\n\nbfd/\n2020-03-05  Max Filippov  <jcmvbkbc@gmail.com>\n\n\t* elf32-xtensa.c (shrink_dynamic_reloc_sections): Shrink dynamic\n\trelocation sections for any removed reference to a dynamic symbol.\n\nSigned-off-by: Max Filippov <jcmvbkbc@gmail.com>\n---\n bfd/elf32-xtensa.c | 7 +++----\n 1 file changed, 3 insertions(+), 4 deletions(-)\n\ndiff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c\nindex 12ff9f772aaf..65e14d87940c 100644\n--- a/bfd/elf32-xtensa.c\n+++ b/bfd/elf32-xtensa.c\n@@ -10148,10 +10148,9 @@ shrink_dynamic_reloc_sections (struct bfd_link_info *info,\n \n   if ((r_type == R_XTENSA_32 || r_type == R_XTENSA_PLT)\n       && (input_section->flags & SEC_ALLOC) != 0\n-      && (dynamic_symbol || bfd_link_pic (info))\n-      && (!h || h->root.type != bfd_link_hash_undefweak\n-\t  || (dynamic_symbol\n-\t      && (bfd_link_dll (info) || info->export_dynamic))))\n+      && (dynamic_symbol\n+\t  || (bfd_link_pic (info)\n+\t      && (!h || h->root.type != bfd_link_hash_undefweak))))\n     {\n       asection *srel;\n       bfd_boolean is_plt = FALSE;\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/binutils/2.32/0008-xtensa-fix-PR-ld-25861.patch",
    "content": "From c7a1d1f656c717394937a92cb970f0f4cecce128 Mon Sep 17 00:00:00 2001\nFrom: Max Filippov <jcmvbkbc@gmail.com>\nDate: Sun, 19 Apr 2020 19:04:41 -0700\nSubject: [PATCH] xtensa: fix PR ld/25861\n\nIntroduce new relaxations XTENSA_PDIFF{8,16,32} for positive differences\n(subtracted symbol precedes diminished symbol) and XTENSA_NDIFF{8,16,32}\nfor negative differences (subtracted symbol follows diminished symbol).\nDon't generate XTENSA_DIFF relocations in the assembler, generate\nXTENSA_PDIFF or XTENSA_NDIFF based on relative symbol position.\n\nHandle XTENSA_DIFF in BFD for compatibility with old object files.\nHandle XTENSA_PDIFF and XTENSA_NDIFF in BFD, treating difference value\nas unsigned.\n\n2020-04-22  Max Filippov  <jcmvbkbc@gmail.com>\nbfd/\n\t* bfd-in2.h: Regenerated.\n\t* elf32-xtensa.c (elf_howto_table): New entries for\n\tR_XTENSA_PDIFF{8,16,32} and R_XTENSA_NDIFF{8,16,32}.\n\t(elf_xtensa_reloc_type_lookup, elf_xtensa_do_reloc)\n\t(relax_section): Add cases for R_XTENSA_PDIFF{8,16,32} and\n\tR_XTENSA_NDIFF{8,16,32}.\n\t* libbfd.h (bfd_reloc_code_real_names): Add names for\n\tBFD_RELOC_XTENSA_PDIFF{8,16,32} and\n\tBFD_RELOC_XTENSA_NDIFF{8,16,32}.\n\t* reloc.c: Add documentation for BFD_RELOC_XTENSA_PDIFF{8,16,32}\n\tand BFD_RELOC_XTENSA_NDIFF{8,16,32}.\n\nbinutils/\n\t* readelf.c (is_none_reloc): Recognize\n\tBFD_RELOC_XTENSA_PDIFF{8,16,32} and\n\tBFD_RELOC_XTENSA_NDIFF{8,16,32}.\n\ngas/\n\t* config/tc-xtensa.c (md_apply_fix): Replace\n\tBFD_RELOC_XTENSA_DIFF{8,16,32} generation with\n\tBFD_RELOC_XTENSA_PDIFF{8,16,32} and\n\tBFD_RELOC_XTENSA_NDIFF{8,16,32} generation.\n\t* testsuite/gas/xtensa/loc.d: Replace BFD_RELOC_XTENSA_DIFF16\n\twith BFD_RELOC_XTENSA_PDIFF16 in the expected output.\n\ninclude/\n\t* elf/xtensa.h (elf_xtensa_reloc_type): New entries for\n\tR_XTENSA_PDIFF{8,16,32} and R_XTENSA_NDIFF{8,16,32}.\n\nld/\n\t* testsuite/ld-xtensa/relax-loc.d: New test definition.\n\t* testsuite/ld-xtensa/relax-loc.s: New test source.\n\t* testsuite/ld-xtensa/xtensa.exp (relax-loc): New test.\n\nSigned-off-by: Max Filippov <jcmvbkbc@gmail.com>\n---\nBackported from: 30ce8e47fad9b057b6d7af9e1d43061126d34d20\n\n bfd/bfd-in2.h                      | 20 ++++++-\n bfd/elf32-xtensa.c                 | 89 +++++++++++++++++++++++++++++-\n bfd/libbfd.h                       |  6 ++\n bfd/reloc.c                        | 24 ++++++++\n binutils/readelf.c                 |  8 ++-\n gas/config/tc-xtensa.c             | 12 +++-\n gas/testsuite/gas/xtensa/loc.d     |  2 +-\n include/elf/xtensa.h               |  6 ++\n ld/testsuite/ld-xtensa/relax-loc.d |  7 +++\n ld/testsuite/ld-xtensa/relax-loc.s | 15 +++++\n ld/testsuite/ld-xtensa/xtensa.exp  |  1 +\n 11 files changed, 183 insertions(+), 7 deletions(-)\n create mode 100644 ld/testsuite/ld-xtensa/relax-loc.d\n create mode 100644 ld/testsuite/ld-xtensa/relax-loc.s\n\ndiff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h\nindex 37114607b515..be6a30f57955 100644\n--- a/bfd/bfd-in2.h\n+++ b/bfd/bfd-in2.h\n@@ -5217,7 +5217,9 @@ to one of its own internal functions or data structures.  */\n PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */\n   BFD_RELOC_XTENSA_PLT,\n \n-/* Xtensa relocations to mark the difference of two local symbols.\n+/* Xtensa relocations for backward compatibility.  These have been replaced\n+by BFD_RELOC_XTENSA_PDIFF and BFD_RELOC_XTENSA_NDIFF.\n+Xtensa relocations to mark the difference of two local symbols.\n These are only needed to support linker relaxation and can be ignored\n when not relaxing.  The field is set to the value of the difference\n assuming no relaxation.  The relocation encodes the position of the\n@@ -5291,6 +5293,22 @@ BFD_RELOC_XTENSA_ASM_EXPAND.  */\n   BFD_RELOC_XTENSA_TLS_ARG,\n   BFD_RELOC_XTENSA_TLS_CALL,\n \n+/* Xtensa relocations to mark the difference of two local symbols.\n+These are only needed to support linker relaxation and can be ignored\n+when not relaxing.  The field is set to the value of the difference\n+assuming no relaxation.  The relocation encodes the position of the\n+subtracted symbol so the linker can determine whether to adjust the field\n+value.  PDIFF relocations are used for positive differences, NDIFF\n+relocations are used for negative differences.  The difference value\n+is treated as unsigned with these relocation types, giving full\n+8/16 value ranges.  */\n+  BFD_RELOC_XTENSA_PDIFF8,\n+  BFD_RELOC_XTENSA_PDIFF16,\n+  BFD_RELOC_XTENSA_PDIFF32,\n+  BFD_RELOC_XTENSA_NDIFF8,\n+  BFD_RELOC_XTENSA_NDIFF16,\n+  BFD_RELOC_XTENSA_NDIFF32,\n+\n /* 8 bit signed offset in (ix+d) or (iy+d).  */\n   BFD_RELOC_Z80_DISP8,\n \ndiff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c\nindex 473a9d76f289..fded42d52a9a 100644\n--- a/bfd/elf32-xtensa.c\n+++ b/bfd/elf32-xtensa.c\n@@ -325,6 +325,20 @@ static reloc_howto_type elf_howto_table[] =\n   HOWTO (R_XTENSA_TLS_CALL, 0, 0, 0, FALSE, 0, complain_overflow_dont,\n \t bfd_elf_xtensa_reloc, \"R_XTENSA_TLS_CALL\",\n \t FALSE, 0, 0, FALSE),\n+\n+  HOWTO (R_XTENSA_PDIFF8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield,\n+\t bfd_elf_xtensa_reloc, \"R_XTENSA_PDIFF8\", FALSE, 0, 0xff, FALSE),\n+  HOWTO (R_XTENSA_PDIFF16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield,\n+\t bfd_elf_xtensa_reloc, \"R_XTENSA_PDIFF16\", FALSE, 0, 0xffff, FALSE),\n+  HOWTO (R_XTENSA_PDIFF32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,\n+\t bfd_elf_xtensa_reloc, \"R_XTENSA_PDIFF32\", FALSE, 0, 0xffffffff, FALSE),\n+\n+  HOWTO (R_XTENSA_NDIFF8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield,\n+\t bfd_elf_xtensa_reloc, \"R_XTENSA_NDIFF8\", FALSE, 0, 0xff, FALSE),\n+  HOWTO (R_XTENSA_NDIFF16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield,\n+\t bfd_elf_xtensa_reloc, \"R_XTENSA_NDIFF16\", FALSE, 0, 0xffff, FALSE),\n+  HOWTO (R_XTENSA_NDIFF32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,\n+\t bfd_elf_xtensa_reloc, \"R_XTENSA_NDIFF32\", FALSE, 0, 0xffffffff, FALSE),\n };\n \n #if DEBUG_GEN_RELOC\n@@ -364,6 +378,30 @@ elf_xtensa_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,\n       TRACE (\"BFD_RELOC_XTENSA_DIFF32\");\n       return &elf_howto_table[(unsigned) R_XTENSA_DIFF32 ];\n \n+    case BFD_RELOC_XTENSA_PDIFF8:\n+      TRACE (\"BFD_RELOC_XTENSA_PDIFF8\");\n+      return &elf_howto_table[(unsigned) R_XTENSA_PDIFF8 ];\n+\n+    case BFD_RELOC_XTENSA_PDIFF16:\n+      TRACE (\"BFD_RELOC_XTENSA_PDIFF16\");\n+      return &elf_howto_table[(unsigned) R_XTENSA_PDIFF16 ];\n+\n+    case BFD_RELOC_XTENSA_PDIFF32:\n+      TRACE (\"BFD_RELOC_XTENSA_PDIFF32\");\n+      return &elf_howto_table[(unsigned) R_XTENSA_PDIFF32 ];\n+\n+    case BFD_RELOC_XTENSA_NDIFF8:\n+      TRACE (\"BFD_RELOC_XTENSA_NDIFF8\");\n+      return &elf_howto_table[(unsigned) R_XTENSA_NDIFF8 ];\n+\n+    case BFD_RELOC_XTENSA_NDIFF16:\n+      TRACE (\"BFD_RELOC_XTENSA_NDIFF16\");\n+      return &elf_howto_table[(unsigned) R_XTENSA_NDIFF16 ];\n+\n+    case BFD_RELOC_XTENSA_NDIFF32:\n+      TRACE (\"BFD_RELOC_XTENSA_NDIFF32\");\n+      return &elf_howto_table[(unsigned) R_XTENSA_NDIFF32 ];\n+\n     case BFD_RELOC_XTENSA_RTLD:\n       TRACE (\"BFD_RELOC_XTENSA_RTLD\");\n       return &elf_howto_table[(unsigned) R_XTENSA_RTLD ];\n@@ -1851,6 +1889,12 @@ elf_xtensa_do_reloc (reloc_howto_type *howto,\n     case R_XTENSA_DIFF8:\n     case R_XTENSA_DIFF16:\n     case R_XTENSA_DIFF32:\n+    case R_XTENSA_PDIFF8:\n+    case R_XTENSA_PDIFF16:\n+    case R_XTENSA_PDIFF32:\n+    case R_XTENSA_NDIFF8:\n+    case R_XTENSA_NDIFF16:\n+    case R_XTENSA_NDIFF32:\n     case R_XTENSA_TLS_FUNC:\n     case R_XTENSA_TLS_ARG:\n     case R_XTENSA_TLS_CALL:\n@@ -9604,7 +9648,13 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info)\n \n \t      if (r_type == R_XTENSA_DIFF8\n \t\t  || r_type == R_XTENSA_DIFF16\n-\t\t  || r_type == R_XTENSA_DIFF32)\n+\t\t  || r_type == R_XTENSA_DIFF32\n+\t\t  || r_type == R_XTENSA_PDIFF8\n+\t\t  || r_type == R_XTENSA_PDIFF16\n+\t\t  || r_type == R_XTENSA_PDIFF32\n+\t\t  || r_type == R_XTENSA_NDIFF8\n+\t\t  || r_type == R_XTENSA_NDIFF16\n+\t\t  || r_type == R_XTENSA_NDIFF32)\n \t\t{\n \t\t  bfd_signed_vma diff_value = 0;\n \t\t  bfd_vma new_end_offset, diff_mask = 0;\n@@ -9631,8 +9681,27 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info)\n \t\t      diff_value =\n \t\t\tbfd_get_signed_32 (abfd, &contents[old_source_offset]);\n \t\t      break;\n+\t\t    case R_XTENSA_PDIFF8:\n+\t\t    case R_XTENSA_NDIFF8:\n+\t\t      diff_value =\n+\t\t\tbfd_get_8 (abfd, &contents[old_source_offset]);\n+\t\t      break;\n+\t\t    case R_XTENSA_PDIFF16:\n+\t\t    case R_XTENSA_NDIFF16:\n+\t\t      diff_value =\n+\t\t\tbfd_get_16 (abfd, &contents[old_source_offset]);\n+\t\t      break;\n+\t\t    case R_XTENSA_PDIFF32:\n+\t\t    case R_XTENSA_NDIFF32:\n+\t\t      diff_value =\n+\t\t\tbfd_get_32 (abfd, &contents[old_source_offset]);\n+\t\t      break;\n \t\t    }\n \n+\t\t  if (r_type >= R_XTENSA_NDIFF8\n+\t\t      && r_type <= R_XTENSA_NDIFF32)\n+\t\t    diff_value = -diff_value;\n+\n \t\t  new_end_offset = offset_with_removed_text_map\n \t\t    (&target_relax_info->action_list,\n \t\t     r_rel.target_offset + diff_value);\n@@ -9655,6 +9724,24 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info)\n \t\t      bfd_put_signed_32 (abfd, diff_value,\n \t\t\t\t  &contents[old_source_offset]);\n \t\t      break;\n+\t\t    case R_XTENSA_PDIFF8:\n+\t\t    case R_XTENSA_NDIFF8:\n+\t\t      diff_mask = 0xff;\n+\t\t      bfd_put_8 (abfd, diff_value,\n+\t\t\t\t &contents[old_source_offset]);\n+\t\t      break;\n+\t\t    case R_XTENSA_PDIFF16:\n+\t\t    case R_XTENSA_NDIFF16:\n+\t\t      diff_mask = 0xffff;\n+\t\t      bfd_put_16 (abfd, diff_value,\n+\t\t\t\t  &contents[old_source_offset]);\n+\t\t      break;\n+\t\t    case R_XTENSA_PDIFF32:\n+\t\t    case R_XTENSA_NDIFF32:\n+\t\t      diff_mask = 0xffffffff;\n+\t\t      bfd_put_32 (abfd, diff_value,\n+\t\t\t\t  &contents[old_source_offset]);\n+\t\t      break;\n \t\t    }\n \n \t\t  /* Check for overflow. Sign bits must be all zeroes or all ones */\ndiff --git a/bfd/libbfd.h b/bfd/libbfd.h\nindex 3c184fcadadf..989f4bc0b595 100644\n--- a/bfd/libbfd.h\n+++ b/bfd/libbfd.h\n@@ -2919,6 +2919,12 @@ static const char *const bfd_reloc_code_real_names[] = { \"@@uninitialized@@\",\n   \"BFD_RELOC_XTENSA_TLS_FUNC\",\n   \"BFD_RELOC_XTENSA_TLS_ARG\",\n   \"BFD_RELOC_XTENSA_TLS_CALL\",\n+  \"BFD_RELOC_XTENSA_PDIFF8\",\n+  \"BFD_RELOC_XTENSA_PDIFF16\",\n+  \"BFD_RELOC_XTENSA_PDIFF32\",\n+  \"BFD_RELOC_XTENSA_NDIFF8\",\n+  \"BFD_RELOC_XTENSA_NDIFF16\",\n+  \"BFD_RELOC_XTENSA_NDIFF32\",\n   \"BFD_RELOC_Z80_DISP8\",\n   \"BFD_RELOC_Z80_BYTE0\",\n   \"BFD_RELOC_Z80_BYTE1\",\ndiff --git a/bfd/reloc.c b/bfd/reloc.c\nindex c4dec86d1d46..f5df8e2ab3eb 100644\n--- a/bfd/reloc.c\n+++ b/bfd/reloc.c\n@@ -6556,6 +6556,8 @@ ENUMX\n ENUMX\n   BFD_RELOC_XTENSA_DIFF32\n ENUMDOC\n+  Xtensa relocations for backward compatibility.  These have been replaced\n+  by BFD_RELOC_XTENSA_PDIFF and BFD_RELOC_XTENSA_NDIFF.\n   Xtensa relocations to mark the difference of two local symbols.\n   These are only needed to support linker relaxation and can be ignored\n   when not relaxing.  The field is set to the value of the difference\n@@ -6668,6 +6670,28 @@ ENUMX\n   BFD_RELOC_XTENSA_TLS_CALL\n ENUMDOC\n   Xtensa TLS relocations.\n+ENUM\n+  BFD_RELOC_XTENSA_PDIFF8\n+ENUMX\n+  BFD_RELOC_XTENSA_PDIFF16\n+ENUMX\n+  BFD_RELOC_XTENSA_PDIFF32\n+ENUMX\n+  BFD_RELOC_XTENSA_NDIFF8\n+ENUMX\n+  BFD_RELOC_XTENSA_NDIFF16\n+ENUMX\n+  BFD_RELOC_XTENSA_NDIFF32\n+ENUMDOC\n+  Xtensa relocations to mark the difference of two local symbols.\n+  These are only needed to support linker relaxation and can be ignored\n+  when not relaxing.  The field is set to the value of the difference\n+  assuming no relaxation.  The relocation encodes the position of the\n+  subtracted symbol so the linker can determine whether to adjust the field\n+  value.  PDIFF relocations are used for positive differences, NDIFF\n+  relocations are used for negative differences.  The difference value\n+  is treated as unsigned with these relocation types, giving full\n+  8/16 value ranges.\n \n ENUM\n   BFD_RELOC_Z80_DISP8\ndiff --git a/binutils/readelf.c b/binutils/readelf.c\nindex d4756c93b345..800918f901c8 100644\n--- a/binutils/readelf.c\n+++ b/binutils/readelf.c\n@@ -13262,7 +13262,13 @@ is_none_reloc (Filedata * filedata, unsigned int reloc_type)\n       return (reloc_type == 0      /* R_XTENSA_NONE.  */\n \t      || reloc_type == 17  /* R_XTENSA_DIFF8.  */\n \t      || reloc_type == 18  /* R_XTENSA_DIFF16.  */\n-\t      || reloc_type == 19  /* R_XTENSA_DIFF32.  */);\n+\t      || reloc_type == 19  /* R_XTENSA_DIFF32.  */\n+\t      || reloc_type == 57  /* R_XTENSA_PDIFF8.  */\n+\t      || reloc_type == 58  /* R_XTENSA_PDIFF16.  */\n+\t      || reloc_type == 59  /* R_XTENSA_PDIFF32.  */\n+\t      || reloc_type == 60  /* R_XTENSA_NDIFF8.  */\n+\t      || reloc_type == 61  /* R_XTENSA_NDIFF16.  */\n+\t      || reloc_type == 62  /* R_XTENSA_NDIFF32.  */);\n     }\n   return FALSE;\n }\ndiff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c\nindex 71d4d94a8d7d..ee75c13548ff 100644\n--- a/gas/config/tc-xtensa.c\n+++ b/gas/config/tc-xtensa.c\n@@ -5974,18 +5974,24 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg)\n     case BFD_RELOC_8:\n       if (fixP->fx_subsy)\n \t{\n+\t  bfd_boolean neg = S_GET_VALUE (fixP->fx_addsy) + fixP->fx_offset\n+\t    < S_GET_VALUE (fixP->fx_subsy);\n+\n \t  switch (fixP->fx_r_type)\n \t    {\n \t    case BFD_RELOC_8:\n-\t      fixP->fx_r_type = BFD_RELOC_XTENSA_DIFF8;\n+\t      fixP->fx_r_type = neg\n+\t\t? BFD_RELOC_XTENSA_NDIFF8 : BFD_RELOC_XTENSA_PDIFF8;\n \t      fixP->fx_signed = 0;\n \t      break;\n \t    case BFD_RELOC_16:\n-\t      fixP->fx_r_type = BFD_RELOC_XTENSA_DIFF16;\n+\t      fixP->fx_r_type = neg\n+\t\t? BFD_RELOC_XTENSA_NDIFF16 : BFD_RELOC_XTENSA_PDIFF16;\n \t      fixP->fx_signed = 0;\n \t      break;\n \t    case BFD_RELOC_32:\n-\t      fixP->fx_r_type = BFD_RELOC_XTENSA_DIFF32;\n+\t      fixP->fx_r_type = neg\n+\t\t? BFD_RELOC_XTENSA_NDIFF32 : BFD_RELOC_XTENSA_PDIFF32;\n \t      fixP->fx_signed = 0;\n \t      break;\n \t    default:\ndiff --git a/gas/testsuite/gas/xtensa/loc.d b/gas/testsuite/gas/xtensa/loc.d\nindex 71983cc90055..8fb3425999d5 100644\n--- a/gas/testsuite/gas/xtensa/loc.d\n+++ b/gas/testsuite/gas/xtensa/loc.d\n@@ -6,5 +6,5 @@\n \n RELOCATION RECORDS FOR \\[\\.debug_line\\]:\n #...\n-.*R_XTENSA_DIFF16.*\\.text\\+0x00009c42\n+.*R_XTENSA_PDIFF16.*\\.text\\+0x00009c42\n #...\ndiff --git a/include/elf/xtensa.h b/include/elf/xtensa.h\nindex 2eb5e4e52941..bd5c80d13777 100644\n--- a/include/elf/xtensa.h\n+++ b/include/elf/xtensa.h\n@@ -87,6 +87,12 @@ START_RELOC_NUMBERS (elf_xtensa_reloc_type)\n      RELOC_NUMBER (R_XTENSA_TLS_FUNC, 54)\n      RELOC_NUMBER (R_XTENSA_TLS_ARG, 55)\n      RELOC_NUMBER (R_XTENSA_TLS_CALL, 56)\n+     RELOC_NUMBER (R_XTENSA_PDIFF8, 57)\n+     RELOC_NUMBER (R_XTENSA_PDIFF16, 58)\n+     RELOC_NUMBER (R_XTENSA_PDIFF32, 59)\n+     RELOC_NUMBER (R_XTENSA_NDIFF8, 60)\n+     RELOC_NUMBER (R_XTENSA_NDIFF16, 61)\n+     RELOC_NUMBER (R_XTENSA_NDIFF32, 62)\n END_RELOC_NUMBERS (R_XTENSA_max)\n \n /* Processor-specific flags for the ELF header e_flags field.  */\ndiff --git a/ld/testsuite/ld-xtensa/relax-loc.d b/ld/testsuite/ld-xtensa/relax-loc.d\nnew file mode 100644\nindex 000000000000..3c8d673732ff\n--- /dev/null\n+++ b/ld/testsuite/ld-xtensa/relax-loc.d\n@@ -0,0 +1,7 @@\n+#as: --text-section-literals\n+#ld:\n+#objdump: --dwarf=decodedline\n+#...\n+relax-loc.s[ \t]+1[ \t]+0x400054[ \t]+.*\n+relax-loc.s[ \t]+2[ \t]+0x40005c[ \t]+.*\n+#...\ndiff --git a/ld/testsuite/ld-xtensa/relax-loc.s b/ld/testsuite/ld-xtensa/relax-loc.s\nnew file mode 100644\nindex 000000000000..d768470e287a\n--- /dev/null\n+++ b/ld/testsuite/ld-xtensa/relax-loc.s\n@@ -0,0 +1,15 @@\n+\t.file\t1 \"relax-loc.s\"\n+\t.globl\t_start\n+\t.globl\t_ResetVector\n+\t.text\n+_ResetVector:\n+_start:\n+\t.loc\t1 1\n+\tj\t1f\n+\t.literal_position\n+1:\n+\t.loc\t1 2\n+\n+\t.rep\t10000\n+\tmovi\ta2, 0x12345678\n+\t.endr\ndiff --git a/ld/testsuite/ld-xtensa/xtensa.exp b/ld/testsuite/ld-xtensa/xtensa.exp\nindex 9b2235b2151b..de39887936ad 100644\n--- a/ld/testsuite/ld-xtensa/xtensa.exp\n+++ b/ld/testsuite/ld-xtensa/xtensa.exp\n@@ -27,6 +27,7 @@ run_dump_test \"call_overflow\"\n run_dump_test \"coalesce\"\n run_dump_test \"diff_overflow\"\n run_dump_test \"lcall\"\n+run_dump_test \"relax-loc\"\n \n run_dump_test \"relax-static-pie\"\n run_dump_test \"relax-static-local-pie\"\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/binutils/2.32/0009-xtensa-fix-XTENSA_NDIFF-handling-for-PR-ld-25861.patch",
    "content": "From 735321812435ae278d3766a3371f55937dc776d6 Mon Sep 17 00:00:00 2001\nFrom: Max Filippov <jcmvbkbc@gmail.com>\nDate: Sat, 25 Apr 2020 00:40:25 -0700\nSubject: [PATCH] xtensa: fix XTENSA_NDIFF handling for PR ld/25861\n\nFields marked with XTENSA_NDIFF relocations are not negated, they only\nhave sign bits removed. Don't negate their values when relaxation is\nperformed. Don't add sign bits when the value is zero. Report overflow\nwhen the result has negative sign but all significant bits are zero.\n\n2020-04-29  Max Filippov  <jcmvbkbc@gmail.com>\nbfd/\n\t* elf32-xtensa.c (relax_section): Don't negate diff_value for\n\tXTENSA_NDIFF relocations. Don't add sign bits whe diff_value\n\tequals 0. Report overflow when the result has negative sign but\n\tall significant bits are zero.\n\nSigned-off-by: Max Filippov <jcmvbkbc@gmail.com>\nBackported from: d548f47df4d2e3d117d504a4c9977982c78a0556\n---\n\n bfd/elf32-xtensa.c                   | 26 +++++++++++++++-----------\n 1 file changed, 15 insertions(+), 11 deletions(-)\n\ndiff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c\nindex fded42d52a9a..4327b027911f 100644\n--- a/bfd/elf32-xtensa.c\n+++ b/bfd/elf32-xtensa.c\n@@ -9670,37 +9670,44 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info)\n \t\t  switch (r_type)\n \t\t    {\n \t\t    case R_XTENSA_DIFF8:\n+\t\t      diff_mask = 0x7f;\n \t\t      diff_value =\n \t\t\tbfd_get_signed_8 (abfd, &contents[old_source_offset]);\n \t\t      break;\n \t\t    case R_XTENSA_DIFF16:\n+\t\t      diff_mask = 0x7fff;\n \t\t      diff_value =\n \t\t\tbfd_get_signed_16 (abfd, &contents[old_source_offset]);\n \t\t      break;\n \t\t    case R_XTENSA_DIFF32:\n+\t\t      diff_mask = 0x7fffffff;\n \t\t      diff_value =\n \t\t\tbfd_get_signed_32 (abfd, &contents[old_source_offset]);\n \t\t      break;\n \t\t    case R_XTENSA_PDIFF8:\n \t\t    case R_XTENSA_NDIFF8:\n+\t\t      diff_mask = 0xff;\n \t\t      diff_value =\n \t\t\tbfd_get_8 (abfd, &contents[old_source_offset]);\n \t\t      break;\n \t\t    case R_XTENSA_PDIFF16:\n \t\t    case R_XTENSA_NDIFF16:\n+\t\t      diff_mask = 0xffff;\n \t\t      diff_value =\n \t\t\tbfd_get_16 (abfd, &contents[old_source_offset]);\n \t\t      break;\n \t\t    case R_XTENSA_PDIFF32:\n \t\t    case R_XTENSA_NDIFF32:\n+\t\t      diff_mask = 0xffffffff;\n \t\t      diff_value =\n \t\t\tbfd_get_32 (abfd, &contents[old_source_offset]);\n \t\t      break;\n \t\t    }\n \n \t\t  if (r_type >= R_XTENSA_NDIFF8\n-\t\t      && r_type <= R_XTENSA_NDIFF32)\n-\t\t    diff_value = -diff_value;\n+\t\t      && r_type <= R_XTENSA_NDIFF32\n+\t\t      && diff_value)\n+\t\t    diff_value |= ~diff_mask;\n \n \t\t  new_end_offset = offset_with_removed_text_map\n \t\t    (&target_relax_info->action_list,\n@@ -9710,43 +9717,40 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info)\n \t\t  switch (r_type)\n \t\t    {\n \t\t    case R_XTENSA_DIFF8:\n-\t\t      diff_mask = 0x7f;\n \t\t      bfd_put_signed_8 (abfd, diff_value,\n \t\t\t\t &contents[old_source_offset]);\n \t\t      break;\n \t\t    case R_XTENSA_DIFF16:\n-\t\t      diff_mask = 0x7fff;\n \t\t      bfd_put_signed_16 (abfd, diff_value,\n \t\t\t\t  &contents[old_source_offset]);\n \t\t      break;\n \t\t    case R_XTENSA_DIFF32:\n-\t\t      diff_mask = 0x7fffffff;\n \t\t      bfd_put_signed_32 (abfd, diff_value,\n \t\t\t\t  &contents[old_source_offset]);\n \t\t      break;\n \t\t    case R_XTENSA_PDIFF8:\n \t\t    case R_XTENSA_NDIFF8:\n-\t\t      diff_mask = 0xff;\n \t\t      bfd_put_8 (abfd, diff_value,\n \t\t\t\t &contents[old_source_offset]);\n \t\t      break;\n \t\t    case R_XTENSA_PDIFF16:\n \t\t    case R_XTENSA_NDIFF16:\n-\t\t      diff_mask = 0xffff;\n \t\t      bfd_put_16 (abfd, diff_value,\n \t\t\t\t  &contents[old_source_offset]);\n \t\t      break;\n \t\t    case R_XTENSA_PDIFF32:\n \t\t    case R_XTENSA_NDIFF32:\n-\t\t      diff_mask = 0xffffffff;\n \t\t      bfd_put_32 (abfd, diff_value,\n \t\t\t\t  &contents[old_source_offset]);\n \t\t      break;\n \t\t    }\n \n-\t\t  /* Check for overflow. Sign bits must be all zeroes or all ones */\n-\t\t  if ((diff_value & ~diff_mask) != 0 &&\n-\t\t      (diff_value & ~diff_mask) != (-1 & ~diff_mask))\n+\t\t  /* Check for overflow. Sign bits must be all zeroes or\n+\t\t     all ones.  When sign bits are all ones diff_value\n+\t\t     may not be zero.  */\n+\t\t  if (((diff_value & ~diff_mask) != 0\n+\t\t       && (diff_value & ~diff_mask) != ~diff_mask)\n+\t\t      || (diff_value && (bfd_vma) diff_value == ~diff_mask))\n \t\t    {\n \t\t      (*link_info->callbacks->reloc_dangerous)\n \t\t\t(link_info, _(\"overflow after relaxation\"),\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/binutils/2.32/0010-or1k-Fix-issue-with-plt-link-failure-for-local-calls.patch",
    "content": "From 788cda9f9447e0fe67e582e8fb5adafd678d08b2 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:02:14 +0900\nSubject: [PATCH] or1k: Fix issue with plt link failure for local calls\n\nWhen building protobuf we were seeing the assert failure:\n\n    /home/giuliobenetti/git/upstream/or1k-binutils-2.36.1/host/lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld:\n    BFD (GNU Binutils) 2.36.1 assertion fail elf32-or1k.c:2377\n    /home/giuliobenetti/git/upstream/or1k-binutils-2.36.1/host/lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld:\n    BFD (GNU Binutils) 2.36.1 assertion fail elf32-or1k.c:2377\n    /home/giuliobenetti/git/upstream/or1k-binutils-2.36.1/host/lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld:\n    BFD (GNU Binutils) 2.36.1 assertion fail elf32-or1k.c:2377\n    collect2: error: ld returned 1 exit status\n\nThis failure happens while writing out PLT entries, there is a check\n\"BFD_ASSERT (h->dynindx != -1)\" to confirm all plt entries have dynamic\nsymbol attributes.  This was failing for symbols that were\n\"forced_local\" in previous linking code.\n\nThe fix adds logic to or1k_elf_adjust_dynamic_symbol to identify\n\"forced_local\" symbols and exclude them from the the PLT.\n\nbfd/ChangeLog:\n\n\tPR 27624\n\t* elf32-or1k.c (or1k_elf_adjust_dynamic_symbol): Change\n\tcondition used to cleanup plt entries to cleanup forced local\n\tentries.\n\nCc: Giulio Benetti <giulio.benetti@benettiengineering.com>\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 9 ++++-----\n 1 file changed, 4 insertions(+), 5 deletions(-)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 2f200b197b8..1f2c88b0b3a 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -2535,11 +2535,10 @@ or1k_elf_adjust_dynamic_symbol (struct bfd_link_info *info,\n   if (h->type == STT_FUNC\n       || h->needs_plt)\n     {\n-      if (! bfd_link_pic (info)\n-\t  && !h->def_dynamic\n-\t  && !h->ref_dynamic\n-\t  && h->root.type != bfd_link_hash_undefweak\n-\t  && h->root.type != bfd_link_hash_undefined)\n+      if (h->plt.refcount <= 0\n+\t  || (SYMBOL_CALLS_LOCAL (info, h)\n+\t  || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT\n+\t      && h->root.type == bfd_link_hash_undefweak)))\n \t{\n \t  /* This case can occur if we saw a PLT reloc in an input\n \t     file, but the symbol was never referred to by a dynamic\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.32/0011-or1k-Implement-relocation-R_OR1K_GOT_AHI16-for-gotha.patch",
    "content": "From b10e6230dea0015bf3b7748580b82c551f9a3a4a Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:02:15 +0900\nSubject: [PATCH] or1k: Implement relocation R_OR1K_GOT_AHI16 for gotha()\n\nThe gotha() relocation mnemonic will be outputted by OpenRISC GCC when\nusing the -mcmodel=large option.  This relocation is used along with\ngot() to generate 32-bit GOT offsets.  This increases the previous GOT\noffset limit from the previous 16-bit (64K) limit.\n\nThis is needed on large binaries where the GOT grows larger than 64k.\n\nbfd/ChangeLog:\n\n\tPR 21464\n\t* bfd-in2.h: Add BFD_RELOC_OR1K_GOT_AHI16 relocation.\n\t* elf32-or1k.c (or1k_elf_howto_table, or1k_reloc_map): Likewise.\n\t(or1k_final_link_relocate, or1k_elf_relocate_section,\n\tor1k_elf_check_relocs): Likewise.\n\t* libbfd.h (bfd_reloc_code_real_names): Likewise.\n\t* reloc.c: Likewise.\n\ncpu/ChangeLog:\n\n\tPR 21464\n\t* or1k.opc (or1k_imm16_relocs, parse_reloc): Define parse logic\n\tfor gotha() relocation.\n\ninclude/ChangeLog:\n\n\tPR 21464\n\t* elf/or1k.h (elf_or1k_reloc_type): Define R_OR1K_GOT_AHI16 number.\n\nopcodes/ChangeLog:\n\n\tPR 21464\n\t* or1k-asm.c: Regenerate.\n\ngas/ChangeLog:\n\n\tPR 21464\n\t* testsuite/gas/or1k/reloc-1.s: Add test for new relocation.\n\t* testsuite/gas/or1k/reloc-1.d: Add test result for new\n\trelocation.\n\nCc: Giulio Benetti <giulio.benetti@benettiengineering.com>\n\nfixup reloc, add tests\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/bfd-in2.h                    |  1 +\n bfd/elf32-or1k.c                 | 21 ++++++++++++++++++++-\n bfd/libbfd.h                     |  1 +\n bfd/reloc.c                      |  2 ++\n cpu/or1k.opc                     |  7 ++++++-\n gas/testsuite/gas/or1k/reloc-1.d |  4 +++-\n gas/testsuite/gas/or1k/reloc-1.s |  4 ++++\n include/elf/or1k.h               |  1 +\n opcodes/or1k-asm.c               |  7 ++++++-\n 9 files changed, 44 insertions(+), 4 deletions(-)\n\ndiff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h\nindex e25da50aafb..530a41fca43 100644\n--- a/bfd/bfd-in2.h\n+++ b/bfd/bfd-in2.h\n@@ -5517,6 +5517,7 @@ then it may be truncated to 8 bits.  */\n   BFD_RELOC_OR1K_TLS_TPOFF,\n   BFD_RELOC_OR1K_TLS_DTPOFF,\n   BFD_RELOC_OR1K_TLS_DTPMOD,\n+  BFD_RELOC_OR1K_GOT_AHI16,\n \n /* H8 elf Relocations.  */\n   BFD_RELOC_H8_DIR16A8,\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 1f2c88b0b3a..a4a64f73b7c 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -808,6 +808,20 @@ static reloc_howto_type or1k_elf_howto_table[] =\n \t 0,\t\t\t/* Source Mask.  */\n \t 0x03ffffff,\t\t/* Dest Mask.  */\n \t TRUE),\t\t\t/* PC relative offset?  */\n+\n+  HOWTO (R_OR1K_GOT_AHI16,     /* type */\n+\t16,                    /* rightshift */\n+\t2,                     /* size (0 = byte, 1 = short, 2 = long) */\n+\t16,                    /* bitsize */\n+\tFALSE,                 /* pc_relative */\n+\t0,                     /* bitpos */\n+\tcomplain_overflow_signed, /* complain_on_overflow */\n+\tbfd_elf_generic_reloc, /* special_function */\n+\t\"R_OR1K_GOT_AHI16\",    /* name */\n+\tFALSE,                 /* partial_inplace */\n+\t0,                     /* src_mask */\n+\t0xffff,                /* dst_mask */\n+\tFALSE),                /* pcrel_offset */\n };\n \n /* Map BFD reloc types to Or1k ELF reloc types.  */\n@@ -871,6 +885,7 @@ static const struct or1k_reloc_map or1k_reloc_map[] =\n   { BFD_RELOC_OR1K_TLS_IE_LO13,\tR_OR1K_TLS_IE_LO13 },\n   { BFD_RELOC_OR1K_SLO13,\tR_OR1K_SLO13 },\n   { BFD_RELOC_OR1K_PLTA26,\tR_OR1K_PLTA26 },\n+  { BFD_RELOC_OR1K_GOT_AHI16,\tR_OR1K_GOT_AHI16 },\n };\n \n #define TLS_UNKNOWN    0\n@@ -1080,6 +1095,7 @@ or1k_final_link_relocate (reloc_howto_type *howto, bfd *input_bfd,\n   switch (howto->type)\n     {\n     case R_OR1K_AHI16:\n+    case R_OR1K_GOT_AHI16:\n     case R_OR1K_GOTOFF_AHI16:\n     case R_OR1K_TLS_IE_AHI16:\n     case R_OR1K_TLS_LE_AHI16:\n@@ -1344,6 +1360,7 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t    }\n \t  break;\n \n+\tcase R_OR1K_GOT_AHI16:\n \tcase R_OR1K_GOT16:\n \tcase R_OR1K_GOT_PG21:\n \tcase R_OR1K_GOT_LO13:\n@@ -1435,7 +1452,8 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t    /* The GOT_PG21 and GOT_LO13 relocs are pc-relative,\n \t       while the GOT16 reloc is GOT relative.  */\n \t    relocation = got_base + off;\n-\t    if (r_type == R_OR1K_GOT16)\n+\t    if (r_type == R_OR1K_GOT16\n+\t\t|| r_type == R_OR1K_GOT_AHI16)\n \t      relocation -= got_sym_value;\n \n \t  /* Addend should be zero.  */\n@@ -1945,6 +1963,7 @@ or1k_elf_check_relocs (bfd *abfd,\n \t    }\n \t  break;\n \n+\tcase R_OR1K_GOT_AHI16:\n \tcase R_OR1K_GOT16:\n \tcase R_OR1K_GOT_PG21:\n \tcase R_OR1K_GOT_LO13:\ndiff --git a/bfd/libbfd.h b/bfd/libbfd.h\nindex 36284d71a9b..6e9e3190bb8 100644\n--- a/bfd/libbfd.h\n+++ b/bfd/libbfd.h\n@@ -2702,6 +2702,7 @@ static const char *const bfd_reloc_code_real_names[] = { \"@@uninitialized@@\",\n   \"BFD_RELOC_OR1K_TLS_TPOFF\",\n   \"BFD_RELOC_OR1K_TLS_DTPOFF\",\n   \"BFD_RELOC_OR1K_TLS_DTPMOD\",\n+  \"BFD_RELOC_OR1K_GOT_AHI16\",\n   \"BFD_RELOC_H8_DIR16A8\",\n   \"BFD_RELOC_H8_DIR16R8\",\n   \"BFD_RELOC_H8_DIR24A8\",\ndiff --git a/bfd/reloc.c b/bfd/reloc.c\nindex e6446a78098..b0003ab1175 100644\n--- a/bfd/reloc.c\n+++ b/bfd/reloc.c\n@@ -6164,6 +6164,8 @@ ENUMX\n   BFD_RELOC_OR1K_GOTPC_HI16\n ENUMX\n   BFD_RELOC_OR1K_GOTPC_LO16\n+ENUMX\n+  BFD_RELOC_OR1K_GOT_AHI16\n ENUMX\n   BFD_RELOC_OR1K_GOT16\n ENUMX\ndiff --git a/cpu/or1k.opc b/cpu/or1k.opc\nindex 5082a30cee1..85163fc96c9 100644\n--- a/cpu/or1k.opc\n+++ b/cpu/or1k.opc\n@@ -173,7 +173,7 @@ static const bfd_reloc_code_real_type or1k_imm16_relocs[][6] = {\n     BFD_RELOC_OR1K_GOT_LO13,\n     BFD_RELOC_UNUSED,\n     BFD_RELOC_UNUSED,\n-    BFD_RELOC_UNUSED },\n+    BFD_RELOC_OR1K_GOT_AHI16 },\n   { BFD_RELOC_OR1K_GOTPC_LO16,\n     BFD_RELOC_UNUSED,\n     BFD_RELOC_UNUSED,\n@@ -276,6 +276,11 @@ parse_reloc (const char **strp)\n \tstr += 5;\n \tcls = RCLASS_TPOFF;\n       }\n+    else if (strncasecmp (str, \"got\", 3) == 0)\n+      {\n+\tstr += 3;\n+\tcls = RCLASS_GOT;\n+      }\n \n     if (strncasecmp (str, \"hi(\", 3) == 0)\n       {\ndiff --git a/gas/testsuite/gas/or1k/reloc-1.d b/gas/testsuite/gas/or1k/reloc-1.d\nindex d1bcf5608bb..3a001c4ed99 100644\n--- a/gas/testsuite/gas/or1k/reloc-1.d\n+++ b/gas/testsuite/gas/or1k/reloc-1.d\n@@ -68,5 +68,7 @@ OFFSET   TYPE              VALUE\n 000000ec R_OR1K_LO13       x\n 000000f0 R_OR1K_GOT_LO13   x\n 000000f4 R_OR1K_SLO13      x\n-\n+000000f8 R_OR1K_GOT_AHI16  x\n+000000fc R_OR1K_GOT_AHI16  x\n+00000100 R_OR1K_GOT_AHI16  x\n \ndiff --git a/gas/testsuite/gas/or1k/reloc-1.s b/gas/testsuite/gas/or1k/reloc-1.s\nindex e76abef6532..562609aa869 100644\n--- a/gas/testsuite/gas/or1k/reloc-1.s\n+++ b/gas/testsuite/gas/or1k/reloc-1.s\n@@ -74,3 +74,7 @@\n \tl.lbz\tr5,po(x)(r3)\n \tl.lbz\tr5,gotpo(x)(r3)\n \tl.sb\tpo(x)(r3),r6\n+\n+\tl.movhi\tr4,gotha(x)\n+\tl.ori\tr3,r4,gotha(x)\n+\tl.addi\tr3,r4,gotha(x)\ndiff --git a/include/elf/or1k.h b/include/elf/or1k.h\nindex 0abef046202..7db3cad18eb 100644\n--- a/include/elf/or1k.h\n+++ b/include/elf/or1k.h\n@@ -77,6 +77,7 @@ START_RELOC_NUMBERS (elf_or1k_reloc_type)\n   RELOC_NUMBER (R_OR1K_TLS_IE_LO13,   51)\n   RELOC_NUMBER (R_OR1K_SLO13,         52)\n   RELOC_NUMBER (R_OR1K_PLTA26,        53)\n+  RELOC_NUMBER (R_OR1K_GOT_AHI16,     54)\n END_RELOC_NUMBERS (R_OR1K_max)\n \n #define EF_OR1K_NODELAY (1UL << 0)\ndiff --git a/opcodes/or1k-asm.c b/opcodes/or1k-asm.c\nindex 7d058d03f5f..332f4b7a9b5 100644\n--- a/opcodes/or1k-asm.c\n+++ b/opcodes/or1k-asm.c\n@@ -177,7 +177,7 @@ static const bfd_reloc_code_real_type or1k_imm16_relocs[][6] = {\n     BFD_RELOC_OR1K_GOT_LO13,\n     BFD_RELOC_UNUSED,\n     BFD_RELOC_UNUSED,\n-    BFD_RELOC_UNUSED },\n+    BFD_RELOC_OR1K_GOT_AHI16 },\n   { BFD_RELOC_OR1K_GOTPC_LO16,\n     BFD_RELOC_UNUSED,\n     BFD_RELOC_UNUSED,\n@@ -280,6 +280,11 @@ parse_reloc (const char **strp)\n \tstr += 5;\n \tcls = RCLASS_TPOFF;\n       }\n+    else if (strncasecmp (str, \"got\", 3) == 0)\n+      {\n+\tstr += 3;\n+\tcls = RCLASS_GOT;\n+      }\n \n     if (strncasecmp (str, \"hi(\", 3) == 0)\n       {\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.32/0012-or1k-Avoid-R_OR1K_GOT16-overflow-failures-in-presenc.patch",
    "content": "From 0f61f76454a9420f158f626cb09a4fbc08c3709e Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:02:16 +0900\nSubject: [PATCH] or1k: Avoid R_OR1K_GOT16 overflow failures in presence\n of R_OR1K_GOT_AHI16\n\nNow that we support R_OR1K_GOT_AHI16 we can relax the R_OR1K_GOT16\noverflow validation check if the section has R_OR1K_GOT_AHI16.\n\nWe cannot simple disable R_OR1K_GOT16 overflow validation as there will\nstill be binaries that will have only R_OR1K_GOT16.  The\nR_OR1K_GOT_AHI16 relocation will only be added by GCC when building with\nthe option -mcmodel=large.\n\nThis assumes that R_OR1K_GOT_AHI16 will come before R_OR1K_GOT16, which\nis the code pattern that will be emitted by GCC.\n\nbfd/ChangeLog:\n\n\tPR 21464\n\t* elf32-or1k.c (or1k_elf_relocate_section): Relax R_OR1K_GOT16\n\toverflow check if we have R_OR1K_GOT_AHI16 followed by\n\tR_OR1K_GOT16.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 11 +++++++++++\n 1 file changed, 11 insertions(+)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex a4a64f73b7c..07fff3602a3 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -1248,6 +1248,7 @@ or1k_elf_relocate_section (bfd *output_bfd,\n   asection *sgot, *splt;\n   bfd_vma plt_base, got_base, got_sym_value;\n   bfd_boolean ret_val = TRUE;\n+  bfd_boolean saw_gotha = FALSE;\n \n   if (htab == NULL)\n     return FALSE;\n@@ -1456,6 +1457,16 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t\t|| r_type == R_OR1K_GOT_AHI16)\n \t      relocation -= got_sym_value;\n \n+\t    if (r_type == R_OR1K_GOT_AHI16)\n+\t      saw_gotha = TRUE;\n+\n+\t    /* If we have a R_OR1K_GOT16 followed by a R_OR1K_GOT_AHI16\n+\t       relocation we assume the code is doing the right thing to avoid\n+\t       overflows.  Here we mask the lower 16-bit of the relocation to\n+\t       avoid overflow validation failures.  */\n+\t    if (r_type == R_OR1K_GOT16 && saw_gotha)\n+\t      relocation &= 0xffff;\n+\n \t  /* Addend should be zero.  */\n \t  if (rel->r_addend != 0)\n \t    {\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.32/0013-or1k-Support-large-plt_relocs-when-generating-plt-en.patch",
    "content": "From 36c7de7ef77ab0c30cb33e2c7ea7a6f4e3052c73 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:02:17 +0900\nSubject: [PATCH] or1k: Support large plt_relocs when generating plt\n entries\n\nThe current PLT generation code will generate invalid code when the PLT\nrelocation offset exceeds 64k.  This fixes the issue by detecting large\nplt_reloc offsets and generare code sequences to create larger plt\nrelocations.\n\nThe \"large\" plt code needs 2 extra instructions to create 32-bit offsets.\n\nbfd/ChangeLog:\n\n\tPR 27746\n\t* elf32-or1k.c (PLT_ENTRY_SIZE_LARGE, PLT_MAX_INSN_COUNT,\n\tOR1K_ADD, OR1K_ORI): New macros to help with plt creation.\n\t(elf_or1k_link_hash_table): New field plt_count.\n\t(elf_or1k_link_hash_entry): New field plt_index.\n\t(elf_or1k_plt_entry_size): New function.\n\t(or1k_write_plt_entry): Update to support variable size PLTs.\n\t(or1k_elf_finish_dynamic_sections): Use new or1k_write_plt_entry\n\tAPI.\n\t(or1k_elf_finish_dynamic_symbol): Update to write large PLTs\n\twhen needed.\n\t(allocate_dynrelocs): Use elf_or1k_plt_entry_size to account for\n\tPLT size.\n\nld/ChangeLog:\n\n\tPR 27746\n\ttestsuite/ld-or1k/or1k.exp (or1kplttests): Add tests for linking\n\talong with gotha() relocations.\n\ttestsuite/ld-or1k/gotha1.dd: New file.\n\ttestsuite/ld-or1k/gotha1.s: New file.\n\ttestsuite/ld-or1k/gotha2.dd: New file.\n\ttestsuite/ld-or1k/gotha2.s: New file\n\ttestsuite/ld-or1k/pltlib.s (x): Define size to avoid link\n\tfailure.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c               | 149 ++++++++++++++++++++++++---------\n ld/testsuite/ld-or1k/gotha1.dd |  34 ++++++++\n ld/testsuite/ld-or1k/gotha1.s  |  24 ++++++\n ld/testsuite/ld-or1k/gotha2.dd |  21 +++++\n ld/testsuite/ld-or1k/gotha2.s  |  22 +++++\n ld/testsuite/ld-or1k/or1k.exp  |   8 ++\n ld/testsuite/ld-or1k/pltlib.s  |   1 +\n 7 files changed, 220 insertions(+), 39 deletions(-)\n create mode 100644 ld/testsuite/ld-or1k/gotha1.dd\n create mode 100644 ld/testsuite/ld-or1k/gotha1.s\n create mode 100644 ld/testsuite/ld-or1k/gotha2.dd\n create mode 100644 ld/testsuite/ld-or1k/gotha2.s\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 07fff3602a3..fcebbe5f23a 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -30,10 +30,14 @@\n #define N_ONES(X)\t(((bfd_vma)2 << (X)) - 1)\n \n #define PLT_ENTRY_SIZE 16\n+#define PLT_ENTRY_SIZE_LARGE (6*4)\n+#define PLT_MAX_INSN_COUNT 6\n \n #define OR1K_MOVHI(D)\t\t(0x18000000 | (D << 21))\n #define OR1K_ADRP(D)\t\t(0x08000000 | (D << 21))\n #define OR1K_LWZ(D,A)\t\t(0x84000000 | (D << 21) | (A << 16))\n+#define OR1K_ADD(D,A,B)\t\t(0xE0000000 | (D << 21) | (A << 16) | (B << 11))\n+#define OR1K_ORI(D,A)\t\t(0xA8000000 | (D << 21) | (A << 16))\n #define OR1K_ORI0(D)\t\t(0xA8000000 | (D << 21))\n #define OR1K_JR(B)\t\t(0x44000000 | (B << 11))\n #define OR1K_NOP\t\t0x15000000\n@@ -903,6 +907,8 @@ struct elf_or1k_link_hash_entry\n   /* Track dynamic relocs copied for this symbol.  */\n   struct elf_dyn_relocs *dyn_relocs;\n \n+  /* For calculating PLT size.  */\n+  bfd_vma plt_index;\n   /* Track type of TLS access.  */\n   unsigned char tls_type;\n };\n@@ -930,9 +936,20 @@ struct elf_or1k_link_hash_table\n   /* Small local sym to section mapping cache.  */\n   struct sym_cache sym_sec;\n \n+  bfd_vma plt_count;\n   bfd_boolean saw_plta;\n };\n \n+static size_t\n+elf_or1k_plt_entry_size (bfd_vma plt_index)\n+{\n+  bfd_vma plt_reloc;\n+\n+  plt_reloc = plt_index * sizeof (Elf32_External_Rela);\n+\n+  return (plt_reloc > 0xffff) ? PLT_ENTRY_SIZE_LARGE : PLT_ENTRY_SIZE;\n+}\n+\n /* Get the ELF linker hash table from a link_info structure.  */\n #define or1k_elf_hash_table(p) \\\n   (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \\\n@@ -2176,33 +2193,46 @@ or1k_elf_check_relocs (bfd *abfd,\n }\n \n static void\n-or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insn1,\n-\t\t      unsigned insn2, unsigned insn3, unsigned insnj)\n+or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,\n+\t\t      unsigned insns[], size_t insn_count)\n {\n   unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY;\n-  unsigned insn4;\n+  unsigned output_insns[PLT_MAX_INSN_COUNT];\n+\n+  /* Copy instructions into the output buffer.  */\n+  for (size_t i = 0; i < insn_count; i++)\n+    output_insns[i] = insns[i];\n \n   /* Honor the no-delay-slot setting.  */\n-  if (insn3 == OR1K_NOP)\n+  if (insns[insn_count-1] == OR1K_NOP)\n     {\n-      insn4 = insn3;\n+      unsigned slot1, slot2;\n+\n       if (nodelay)\n-\tinsn3 = insnj;\n+\tslot1 = insns[insn_count-2], slot2 = insnj;\n       else\n-\tinsn3 = insn2, insn2 = insnj;\n+\tslot1 = insnj, slot2 = insns[insn_count-2];\n+\n+      output_insns[insn_count-2] = slot1;\n+      output_insns[insn_count-1] = slot2;\n+      output_insns[insn_count]   = OR1K_NOP;\n     }\n   else\n     {\n+      unsigned slot1, slot2;\n+\n       if (nodelay)\n-\tinsn4 = insnj;\n+\tslot1 = insns[insn_count-1], slot2 = insnj;\n       else\n-\tinsn4 = insn3, insn3 = insnj;\n+\tslot1 = insnj, slot2 = insns[insn_count-1];\n+\n+      output_insns[insn_count-1] = slot1;\n+      output_insns[insn_count]   = slot2;\n     }\n \n-  bfd_put_32 (output_bfd, insn1, contents);\n-  bfd_put_32 (output_bfd, insn2, contents + 4);\n-  bfd_put_32 (output_bfd, insn3, contents + 8);\n-  bfd_put_32 (output_bfd, insn4, contents + 12);\n+  /* Write out the output buffer.  */\n+  for (size_t i = 0; i < (insn_count+1); i++)\n+    bfd_put_32 (output_bfd, output_insns[i], contents + (i*4));\n }\n \n /* Finish up the dynamic sections.  */\n@@ -2269,7 +2299,8 @@ or1k_elf_finish_dynamic_sections (bfd *output_bfd,\n       splt = htab->root.splt;\n       if (splt && splt->size > 0)\n \t{\n-\t  unsigned plt0, plt1, plt2;\n+\t  unsigned plt[PLT_MAX_INSN_COUNT];\n+\t  size_t plt_insn_count = 3;\n \t  bfd_vma got_addr = sgot->output_section->vma + sgot->output_offset;\n \n \t  /* Note we force 16 byte alignment on the .got, so that\n@@ -2280,27 +2311,27 @@ or1k_elf_finish_dynamic_sections (bfd *output_bfd,\n \t      bfd_vma pc = splt->output_section->vma + splt->output_offset;\n \t      unsigned pa = ((got_addr >> 13) - (pc >> 13)) & 0x1fffff;\n \t      unsigned po = got_addr & 0x1fff;\n-\t      plt0 = OR1K_ADRP(12) | pa;\n-\t      plt1 = OR1K_LWZ(15,12) | (po + 8);\n-\t      plt2 = OR1K_LWZ(12,12) | (po + 4);\n+\t      plt[0] = OR1K_ADRP(12) | pa;\n+\t      plt[1] = OR1K_LWZ(15,12) | (po + 8);\n+\t      plt[2] = OR1K_LWZ(12,12) | (po + 4);\n \t    }\n \t  else if (bfd_link_pic (info))\n \t    {\n-\t      plt0 = OR1K_LWZ(15, 16) | 8;\t/* .got+8 */\n-\t      plt1 = OR1K_LWZ(12, 16) | 4;\t/* .got+4 */\n-\t      plt2 = OR1K_NOP;\n+\t      plt[0] = OR1K_LWZ(15, 16) | 8;\t/* .got+8 */\n+\t      plt[1] = OR1K_LWZ(12, 16) | 4;\t/* .got+4 */\n+\t      plt[2] = OR1K_NOP;\n \t    }\n \t  else\n \t    {\n \t      unsigned ha = ((got_addr + 0x8000) >> 16) & 0xffff;\n \t      unsigned lo = got_addr & 0xffff;\n-\t      plt0 = OR1K_MOVHI(12) | ha;\n-\t      plt1 = OR1K_LWZ(15,12) | (lo + 8);\n-\t      plt2 = OR1K_LWZ(12,12) | (lo + 4);\n+\t      plt[0] = OR1K_MOVHI(12) | ha;\n+\t      plt[1] = OR1K_LWZ(15,12) | (lo + 8);\n+\t      plt[2] = OR1K_LWZ(12,12) | (lo + 4);\n \t    }\n \n-\t  or1k_write_plt_entry (output_bfd, splt->contents,\n-\t\t\t\tplt0, plt1, plt2, OR1K_JR(15));\n+\t  or1k_write_plt_entry (output_bfd, splt->contents, OR1K_JR(15),\n+\t\t\t\tplt, plt_insn_count);\n \n \t  elf_section_data (splt->output_section)->this_hdr.sh_entsize = 4;\n \t}\n@@ -2343,7 +2374,8 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n \n   if (h->plt.offset != (bfd_vma) -1)\n     {\n-      unsigned int plt0, plt1, plt2;\n+      unsigned int plt[PLT_MAX_INSN_COUNT];\n+      size_t plt_insn_count = 3;\n       asection *splt;\n       asection *sgot;\n       asection *srela;\n@@ -2355,6 +2387,7 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n       bfd_vma got_offset;\n       bfd_vma got_addr;\n       Elf_Internal_Rela rela;\n+      bfd_boolean large_plt_entry;\n \n       /* This symbol has an entry in the procedure linkage table.  Set\n \t it up.  */\n@@ -2372,10 +2405,13 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n \t corresponds to this symbol.  This is the index of this symbol\n \t in all the symbols for which we are making plt entries.  The\n \t first entry in the procedure linkage table is reserved.  */\n-      plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1;\n+      plt_index = ((struct elf_or1k_link_hash_entry *) h)->plt_index;\n       plt_addr = plt_base_addr + h->plt.offset;\n       plt_reloc = plt_index * sizeof (Elf32_External_Rela);\n \n+      large_plt_entry = (elf_or1k_plt_entry_size (plt_index)\n+\t\t\t == PLT_ENTRY_SIZE_LARGE);\n+\n       /* Get the offset into the .got table of the entry that\n \tcorresponds to this function.  Each .got entry is 4 bytes.\n \tThe first three are reserved.  */\n@@ -2387,27 +2423,57 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n \t{\n \t  unsigned pa = ((got_addr >> 13) - (plt_addr >> 13)) & 0x1fffff;\n \t  unsigned po = (got_addr & 0x1fff);\n-\t  plt0 = OR1K_ADRP(12) | pa;\n-\t  plt1 = OR1K_LWZ(12,12) | po;\n-\t  plt2 = OR1K_ORI0(11) | plt_reloc;\n+\t  plt[0] = OR1K_ADRP(12) | pa;\n+\t  plt[1] = OR1K_LWZ(12,12) | po;\n+\t  plt[2] = OR1K_ORI0(11) | plt_reloc;\n \t}\n       else if (bfd_link_pic (info))\n \t{\n-\t  plt0 = OR1K_LWZ(12,16) | got_offset;\n-\t  plt1 = OR1K_ORI0(11) | plt_reloc;\n-\t  plt2 = OR1K_NOP;\n+\t  if (large_plt_entry)\n+\t    {\n+\t      unsigned gotha = ((got_offset + 0x8000) >> 16) & 0xffff;\n+\t      unsigned got = got_offset & 0xffff;\n+\t      unsigned pltrelhi = (plt_reloc >> 16) & 0xffff;\n+\t      unsigned pltrello = plt_reloc & 0xffff;\n+\n+\t      plt[0] = OR1K_MOVHI(12) | gotha;\n+\t      plt[1] = OR1K_ADD(12,12,16);\n+\t      plt[2] = OR1K_LWZ(12,12) | got;\n+\t      plt[3] = OR1K_MOVHI(11) | pltrelhi;\n+\t      plt[4] = OR1K_ORI(11,11) | pltrello;\n+\t      plt_insn_count = 5;\n+\t    }\n+\t  else\n+\t    {\n+\t      plt[0] = OR1K_LWZ(12,16) | got_offset;\n+\t      plt[1] = OR1K_ORI0(11) | plt_reloc;\n+\t      plt[2] = OR1K_NOP;\n+\t    }\n \t}\n       else\n \t{\n \t  unsigned ha = ((got_addr + 0x8000) >> 16) & 0xffff;\n \t  unsigned lo = got_addr & 0xffff;\n-\t  plt0 = OR1K_MOVHI(12) | ha;\n-\t  plt1 = OR1K_LWZ(12,12) | lo;\n-\t  plt2 = OR1K_ORI0(11) | plt_reloc;\n+\t  plt[0] = OR1K_MOVHI(12) | ha;\n+\t  plt[1] = OR1K_LWZ(12,12) | lo;\n+\t  plt[2] = OR1K_ORI0(11) | plt_reloc;\n+\t}\n+\n+      /* For large code model we fixup the non-PIC PLT relocation instructions\n+\t here.  */\n+      if (large_plt_entry && !bfd_link_pic (info))\n+\t{\n+\t  unsigned pltrelhi = (plt_reloc >> 16) & 0xffff;\n+\t  unsigned pltrello = plt_reloc & 0xffff;\n+\n+\t  plt[2] = OR1K_MOVHI(11) | pltrelhi;\n+\t  plt[3] = OR1K_ORI(11,11) | pltrello;\n+\t  plt[4] = OR1K_NOP;\n+\t  plt_insn_count = 5;\n \t}\n \n       or1k_write_plt_entry (output_bfd, splt->contents + h->plt.offset,\n-\t\t\t    plt0, plt1, plt2, OR1K_JR(12));\n+\t\t\t    OR1K_JR(12), plt, plt_insn_count);\n \n       /* Fill in the entry in the global offset table.  */\n       bfd_put_32 (output_bfd, plt_addr, sgot->contents + got_offset);\n@@ -2699,11 +2765,16 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)\n       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))\n \t{\n \t  asection *s = htab->root.splt;\n+\t  bfd_vma plt_index;\n+\n+\t  /* Track the index of our plt entry for use in calculating size.  */\n+\t  plt_index = htab->plt_count++;\n+\t  ((struct elf_or1k_link_hash_entry *) h)->plt_index = plt_index;\n \n \t  /* If this is the first .plt entry, make room for the special\n \t     first entry.  */\n \t  if (s->size == 0)\n-\t    s->size = PLT_ENTRY_SIZE;\n+\t    s->size = elf_or1k_plt_entry_size (plt_index);\n \n \t  h->plt.offset = s->size;\n \n@@ -2720,7 +2791,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)\n \t    }\n \n \t  /* Make room for this entry.  */\n-\t  s->size += PLT_ENTRY_SIZE;\n+\t  s->size += elf_or1k_plt_entry_size (plt_index);\n \n \t  /* We also need to make an entry in the .got.plt section, which\n \t     will be placed in the .got section by the linker script.  */\ndiff --git a/ld/testsuite/ld-or1k/gotha1.dd b/ld/testsuite/ld-or1k/gotha1.dd\nnew file mode 100644\nindex 00000000000..0ad1f8f5399\n--- /dev/null\n+++ b/ld/testsuite/ld-or1k/gotha1.dd\n@@ -0,0 +1,34 @@\n+\n+.*\\.x:     file format elf32-or1k\n+\n+\n+Disassembly of section \\.plt:\n+\n+[0-9a-f]+ <\\.plt>:\n+ +[0-9a-f]+:\t19 80 00 00 \tl\\.movhi r12,0x0\n+ +[0-9a-f]+:\t85 ec [0-9a-f]+ [0-9a-f]+ \tl\\.lwz r15,[0-9]+\\(r12\\)\n+ +[0-9a-f]+:\t44 00 78 00 \tl\\.jr r15\n+ +[0-9a-f]+:\t85 8c [0-9a-f]+ [0-9a-f]+ \tl\\.lwz r12,[0-9]+\\(r12\\)\n+ +[0-9a-f]+:\t19 80 00 00 \tl\\.movhi r12,0x0\n+ +[0-9a-f]+:\t85 8c [0-9a-f]+ [0-9a-f]+ \tl\\.lwz r12,[0-9]+\\(r12\\)\n+ +[0-9a-f]+:\t44 00 60 00 \tl\\.jr r12\n+ +[0-9a-f]+:\ta9 60 00 00 \tl\\.ori r11,r0,0x0\n+\n+Disassembly of section \\.text:\n+\n+[0-9a-f]+ <_start>:\n+ +[0-9a-f]+:\t9c 21 ff fc \tl\\.addi r1,r1,-4\n+ +[0-9a-f]+:\td4 01 48 00 \tl\\.sw 0\\(r1\\),r9\n+ +[0-9a-f]+:\t04 00 00 02 \tl\\.jal [0-9a-f]+ <_start\\+0x10>\n+ +[0-9a-f]+:\t1a 60 00 00 \tl\\.movhi r19,0x0\n+ +[0-9a-f]+:\taa 73 [0-9a-f]+ [0-9a-f]+ \tl\\.ori r19,r19,0x[0-9a-f]+\n+ +[0-9a-f]+:\te2 73 48 00 \tl\\.add r19,r19,r9\n+ +[0-9a-f]+:\t1a 20 00 00 \tl\\.movhi r17,0x0\n+ +[0-9a-f]+:\te2 31 98 00 \tl\\.add r17,r17,r19\n+ +[0-9a-f]+:\t86 31 00 10 \tl\\.lwz r17,16\\(r17\\)\n+ +[0-9a-f]+:\t84 71 00 00 \tl\\.lwz r3,0\\(r17\\)\n+ +[0-9a-f]+:\t07 ff ff f2 \tl\\.jal [0-9a-f]+ <\\.plt\\+0x10>\n+ +[0-9a-f]+:\t15 00 00 00 \tl\\.nop 0x0\n+ +[0-9a-f]+:\t85 21 00 00 \tl\\.lwz r9,0\\(r1\\)\n+ +[0-9a-f]+:\t44 00 48 00 \tl\\.jr r9\n+ +[0-9a-f]+:\t9c 21 00 04 \tl\\.addi r1,r1,4\ndiff --git a/ld/testsuite/ld-or1k/gotha1.s b/ld/testsuite/ld-or1k/gotha1.s\nnew file mode 100644\nindex 00000000000..42b16db425c\n--- /dev/null\n+++ b/ld/testsuite/ld-or1k/gotha1.s\n@@ -0,0 +1,24 @@\n+\t.data\n+\t.p2align 16\n+\n+\t.text\n+\t.globl\t_start\n+_start:\n+\tl.addi\tr1, r1, -4\n+\tl.sw\t0(r1), r9\n+\n+\tl.jal\t8\n+\t l.movhi\tr19, gotpchi(_GLOBAL_OFFSET_TABLE_-4)\n+\tl.ori\tr19, r19, gotpclo(_GLOBAL_OFFSET_TABLE_+0)\n+\tl.add\tr19, r19, r9\n+\n+\tl.movhi\tr17, gotha(x)\n+\tl.add\tr17, r17, r19\n+\tl.lwz\tr17, got(x)(r17)\n+\tl.lwz\tr3, 0(r17)\n+\n+\tl.jal\tplt(func)\n+\t l.nop\n+\tl.lwz\tr9, 0(r1)\n+\tl.jr\tr9\n+\t l.addi\tr1, r1, 4\ndiff --git a/ld/testsuite/ld-or1k/gotha2.dd b/ld/testsuite/ld-or1k/gotha2.dd\nnew file mode 100644\nindex 00000000000..fe09da5466b\n--- /dev/null\n+++ b/ld/testsuite/ld-or1k/gotha2.dd\n@@ -0,0 +1,21 @@\n+\n+.*\\.x:     file format elf32-or1k\n+\n+\n+Disassembly of section \\.text:\n+\n+[0-9a-f]+ <test>:\n+ +[0-9a-f]+:\t9c 21 ff f8 \tl\\.addi r1,r1,-8\n+ +[0-9a-f]+:\td4 01 80 00 \tl\\.sw 0\\(r1\\),r16\n+ +[0-9a-f]+:\td4 01 48 04 \tl\\.sw 4\\(r1\\),r9\n+ +[0-9a-f]+:\t04 00 [0-9a-f]+ [0-9a-f]+ \tl\\.jal [0-9a-f]+ <test\\+0x14>\n+ +[0-9a-f]+:\t1a 00 00 00 \tl\\.movhi r16,0x0\n+ +[0-9a-f]+:\taa 10 [0-9a-f]+ [0-9a-f]+ \tl\\.ori r16,r16,0x[0-9a-f]+\n+ +[0-9a-f]+:\te2 10 48 00 \tl\\.add r16,r16,r9\n+ +[0-9a-f]+:\t1a 20 00 00 \tl\\.movhi r17,0x0\n+ +[0-9a-f]+:\te2 31 80 00 \tl\\.add r17,r17,r16\n+ +[0-9a-f]+:\t86 31 00 0c \tl\\.lwz r17,12\\(r17\\)\n+ +[0-9a-f]+:\t85 21 00 04 \tl\\.lwz r9,4\\(r1\\)\n+ +[0-9a-f]+:\t86 01 00 00 \tl\\.lwz r16,0\\(r1\\)\n+ +[0-9a-f]+:\t44 00 48 00 \tl\\.jr r9\n+ +[0-9a-f]+:\t9c 21 00 08 \tl\\.addi r1,r1,8\ndiff --git a/ld/testsuite/ld-or1k/gotha2.s b/ld/testsuite/ld-or1k/gotha2.s\nnew file mode 100644\nindex 00000000000..164b282f2dd\n--- /dev/null\n+++ b/ld/testsuite/ld-or1k/gotha2.s\n@@ -0,0 +1,22 @@\n+\t.section\t.text\n+\t.align 4\n+\t.global\ttest\n+\t.type\ttest, @function\n+test:\n+\tl.addi\tr1, r1, -8\n+\tl.sw\t0(r1), r16\n+\tl.sw\t4(r1), r9\n+\n+\tl.jal\t8\n+\t l.movhi\tr16, gotpchi(_GLOBAL_OFFSET_TABLE_-4)\n+\tl.ori\tr16, r16, gotpclo(_GLOBAL_OFFSET_TABLE_+0)\n+\tl.add\tr16, r16, r9\n+\n+\tl.movhi\tr17, gotha(i)\n+\tl.add\tr17, r17, r16\n+\tl.lwz\tr17, got(i)(r17)\n+\n+\tl.lwz\tr9, 4(r1)\n+\tl.lwz\tr16, 0(r1)\n+\tl.jr\tr9\n+\t l.addi\tr1, r1, 8\ndiff --git a/ld/testsuite/ld-or1k/or1k.exp b/ld/testsuite/ld-or1k/or1k.exp\nindex 24cdbe5fbf3..9cebc49b946 100644\n--- a/ld/testsuite/ld-or1k/or1k.exp\n+++ b/ld/testsuite/ld-or1k/or1k.exp\n@@ -53,6 +53,14 @@ set or1kplttests {\n      \"\" {plt1.s}\n      {{objdump -dr plt1.x.dd}}\n      \"plt1.x\"}\n+    {\"gotha exec plt\" \"tmpdir/libpltlib.so\" \"\"\n+     \"\" {gotha1.s}\n+     {{objdump -dr gotha1.dd}}\n+     \"gotha1.x\"}\n+    {\"gotha -fpic -shared\" \"-fpic -shared\" \"\"\n+     \"\" {gotha2.s}\n+     {{objdump -dr gotha2.dd}}\n+     \"gotha2.x\"}\n }\n \n # Not implemented yet\ndiff --git a/ld/testsuite/ld-or1k/pltlib.s b/ld/testsuite/ld-or1k/pltlib.s\nindex baf76ca1af7..8b4d7ba48fd 100644\n--- a/ld/testsuite/ld-or1k/pltlib.s\n+++ b/ld/testsuite/ld-or1k/pltlib.s\n@@ -1,5 +1,6 @@\n \t.section .data\n \t.globl x, y\n+\t.size x, 4\n x:\t.long 33\n y:\t.long 44\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.32/0014-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch",
    "content": "From c3003947e4bad18faea4337fd2073feeb30ee078 Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@benettiengineering.com>\nDate: Wed, 9 Jun 2021 17:28:27 +0200\nSubject: [PATCH] bfd/elf32-or1k: fix building with gcc version < 5\n\nGcc version >= 5 has standard C mode not set to -std=gnu11, so if we use\nan old compiler(i.e. gcc 4.9) build fails on:\n```\nelf32-or1k.c:2251:3: error: 'for' loop initial declarations are only allowed in\nC99 or C11 mode\n    for (size_t i = 0; i < insn_count; i++)\n    ^\n```\n\nSo let's declare `size_t i` at the top of the function instead of inside\nfor loop.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 4ae7f324d33..32063ab0289 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -2244,9 +2244,10 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,\n {\n   unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY;\n   unsigned output_insns[PLT_MAX_INSN_COUNT];\n+  size_t i;\n \n   /* Copy instructions into the output buffer.  */\n-  for (size_t i = 0; i < insn_count; i++)\n+  for (i = 0; i < insn_count; i++)\n     output_insns[i] = insns[i];\n \n   /* Honor the no-delay-slot setting.  */\n@@ -2277,7 +2278,7 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,\n     }\n \n   /* Write out the output buffer.  */\n-  for (size_t i = 0; i < (insn_count+1); i++)\n+  for (i = 0; i < (insn_count+1); i++)\n     bfd_put_32 (output_bfd, output_insns[i], contents + (i*4));\n }\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.32/0015-or1k-fix-pc-relative-relocation-against-dynamic-on-P.patch",
    "content": "From 9af93e143a7fbdb75aa1ed37277f9250eb111628 Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@benettiengineering.com>\nDate: Sat, 10 Jul 2021 17:57:34 +0200\nSubject: [PATCH] or1k: fix pc-relative relocation against dynamic on PC\n relative 26 bit relocation\n\nWhen building openal we were seeing the assert failure:\n\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourcePausev\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourceStopv\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourceRewindv\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourcePlayv\ncollect2: error: ld returned 1 exit status\n\nThis happens because in R_OR1K_INSN_REL_26 case we can't reference local\nsymbol as previously done but we need to make sure that calls to actual\nsymbol always call the version of current object.\n\nbfd/Changelog:\n\n\t* elf32-or1k.c (or1k_elf_relocate_section): use a separate entry\n\t  in switch case R_OR1K_INSN_REL_26 where we need to check for\n\t  !SYMBOL_CALLS_LOCAL() instead of !SYMBOL_REFERENCES_LOCAL().\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 12 ++++++++++++\n 1 file changed, 12 insertions(+)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 4ae7f324d33..4f9092539f5 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -1543,6 +1543,18 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t  break;\n \n \tcase R_OR1K_INSN_REL_26:\n+\t  /* For a non-shared link, these will reference plt or call the\n+\t     version of actual object.  */\n+\t  if (bfd_link_pic (info) && !SYMBOL_CALLS_LOCAL (info, h))\n+\t    {\n+\t      _bfd_error_handler\n+\t\t(_(\"%pB: pc-relative relocation against dynamic symbol %s\"),\n+\t\t input_bfd, name);\n+\t      ret_val = FALSE;\n+\t      bfd_set_error (bfd_error_bad_value);\n+\t    }\n+\t  break;\n+\n \tcase R_OR1K_PCREL_PG21:\n \tcase R_OR1K_LO13:\n \tcase R_OR1K_SLO13:\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.35.2/0001-sh-conf.patch",
    "content": "From ae50e875f4292c99b859cded1d036e401b6ddaec Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 25 Dec 2015 11:38:13 +0100\nSubject: [PATCH] sh-conf\n\nLikewise, binutils has no idea about any of these new targets either, so we\nfix that up too.. now we're able to actually build a real toolchain for\nsh2a_nofpu- and other more ineptly named toolchains (and yes, there are more\ninept targets than that one, really. Go look, I promise).\n\n[Romain: rebase on top of 2.32]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n[Thomas: rebase on top of 2.29, in which sh64 support was removed.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure    | 2 +-\n configure.ac | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/configure b/configure\nindex 54d0339ab9e..c2f51ffcebb 100755\n--- a/configure\n+++ b/configure\n@@ -3937,7 +3937,7 @@ case \"${target}\" in\n   nvptx*-*-*)\n     noconfigdirs=\"$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc\"\n     ;;\n-  sh-*-*)\n+  sh*-*-*)\n     case \"${target}\" in\n       sh*-*-elf)\n          ;;\ndiff --git a/configure.ac b/configure.ac\nindex a910c4fd6ba..a93d93c81c3 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1178,7 +1178,7 @@ case \"${target}\" in\n   nvptx*-*-*)\n     noconfigdirs=\"$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc\"\n     ;;\n-  sh-*-*)\n+  sh*-*-*)\n     case \"${target}\" in\n       sh*-*-elf)\n          ;;\n-- \n2.25.4\n\n"
  },
  {
    "path": "package/binutils/2.35.2/0002-poison-system-directories.patch",
    "content": "From db405d1bc5607892ddb25433354b46d78e23b343 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 25 Dec 2015 11:45:38 +0100\nSubject: [PATCH] poison-system-directories\n\nPatch adapted to binutils 2.23.2 and extended to use\nBR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni.\n\n[Romain: rebase on top of 2.33.1]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n[Gustavo: adapt to binutils 2.25]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\nUpstream-Status: Inappropriate [distribution: codesourcery]\n\nPatch originally created by Mark Hatle, forward-ported to\nbinutils 2.21 by Scott Garman.\n\npurpose:  warn for uses of system directories when cross linking\n\nCode Merged from Sourcery G++ binutils 2.19 - 4.4-277\n\n2008-07-02  Joseph Myers  <joseph@codesourcery.com>\n\n    ld/\n    * ld.h (args_type): Add error_poison_system_directories.\n    * ld.texinfo (--error-poison-system-directories): Document.\n    * ldfile.c (ldfile_add_library_path): Check\n    command_line.error_poison_system_directories.\n    * ldmain.c (main): Initialize\n    command_line.error_poison_system_directories.\n    * lexsup.c (enum option_values): Add\n    OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.\n    (ld_options): Add --error-poison-system-directories.\n    (parse_args): Handle new option.\n\n2007-06-13  Joseph Myers  <joseph@codesourcery.com>\n\n    ld/\n    * config.in: Regenerate.\n    * ld.h (args_type): Add poison_system_directories.\n    * ld.texinfo (--no-poison-system-directories): Document.\n    * ldfile.c (ldfile_add_library_path): Check\n    command_line.poison_system_directories.\n    * ldmain.c (main): Initialize\n    command_line.poison_system_directories.\n    * lexsup.c (enum option_values): Add\n    OPTION_NO_POISON_SYSTEM_DIRECTORIES.\n    (ld_options): Add --no-poison-system-directories.\n    (parse_args): Handle new option.\n\n2007-04-20  Joseph Myers  <joseph@codesourcery.com>\n\n    Merge from Sourcery G++ binutils 2.17:\n\n    2007-03-20  Joseph Myers  <joseph@codesourcery.com>\n    Based on patch by Mark Hatle <mark.hatle@windriver.com>.\n    ld/\n    * configure.ac (--enable-poison-system-directories): New option.\n    * configure, config.in: Regenerate.\n    * ldfile.c (ldfile_add_library_path): If\n    ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,\n    /usr/lib, /usr/local/lib or /usr/X11R6/lib.\n\nSigned-off-by: Mark Hatle <mark.hatle@windriver.com>\nSigned-off-by: Scott Garman <scott.a.garman@intel.com>\n---\n ld/config.in    |  3 +++\n ld/configure    | 14 ++++++++++++++\n ld/configure.ac | 10 ++++++++++\n ld/ld.h         |  8 ++++++++\n ld/ld.texi      | 12 ++++++++++++\n ld/ldfile.c     | 17 +++++++++++++++++\n ld/ldlex.h      |  2 ++\n ld/ldmain.c     |  2 ++\n ld/lexsup.c     | 21 +++++++++++++++++++++\n 9 files changed, 89 insertions(+)\n\ndiff --git a/ld/config.in b/ld/config.in\nindex 2f4e5ea33e3..8fbb29682b2 100644\n--- a/ld/config.in\n+++ b/ld/config.in\n@@ -40,6 +40,9 @@\n    language is requested. */\n #undef ENABLE_NLS\n \n+/* Define to warn for use of native system library directories */\n+#undef ENABLE_POISON_SYSTEM_DIRECTORIES\n+\n /* Additional extension a shared object might have. */\n #undef EXTRA_SHLIB_EXTENSION\n \ndiff --git a/ld/configure b/ld/configure\nindex 6be5280621f..d62e7b12382 100755\n--- a/ld/configure\n+++ b/ld/configure\n@@ -826,6 +826,7 @@ with_lib_path\n enable_targets\n enable_64_bit_bfd\n with_sysroot\n+enable_poison_system_directories\n enable_gold\n enable_got\n enable_compressed_debug_sections\n@@ -1493,6 +1494,8 @@ Optional Features:\n   --disable-largefile     omit support for large files\n   --enable-targets        alternative target configurations\n   --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)\n+  --enable-poison-system-directories\n+                          warn for use of native system library directories\n   --enable-gold[=ARG]     build gold [ARG={default,yes,no}]\n   --enable-got=<type>     GOT handling scheme (target, single, negative,\n                           multigot)\n@@ -15814,7 +15817,18 @@ else\n fi\n \n \n+# Check whether --enable-poison-system-directories was given.\n+if test \"${enable_poison_system_directories+set}\" = set; then :\n+  enableval=$enable_poison_system_directories;\n+else\n+  enable_poison_system_directories=no\n+fi\n+\n+if test \"x${enable_poison_system_directories}\" = \"xyes\"; then\n \n+$as_echo \"#define ENABLE_POISON_SYSTEM_DIRECTORIES 1\" >>confdefs.h\n+\n+fi\n \n # Check whether --enable-got was given.\n if test \"${enable_got+set}\" = set; then :\ndiff --git a/ld/configure.ac b/ld/configure.ac\nindex 172398ff847..b77f8510ca6 100644\n--- a/ld/configure.ac\n+++ b/ld/configure.ac\n@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot)\n AC_SUBST(TARGET_SYSTEM_ROOT)\n AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)\n \n+AC_ARG_ENABLE([poison-system-directories],\n+         AS_HELP_STRING([--enable-poison-system-directories],\n+                [warn for use of native system library directories]),,\n+         [enable_poison_system_directories=no])\n+if test \"x${enable_poison_system_directories}\" = \"xyes\"; then\n+  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],\n+       [1],\n+       [Define to warn for use of native system library directories])\n+fi\n+\n dnl Use --enable-gold to decide if this linker should be the default.\n dnl \"install_as_default\" is set to false if gold is the default linker.\n dnl \"installed_linker\" is the installed BFD linker name.\ndiff --git a/ld/ld.h b/ld/ld.h\nindex 1790dc81a66..73f832eb169 100644\n--- a/ld/ld.h\n+++ b/ld/ld.h\n@@ -166,6 +166,14 @@ typedef struct\n      in the linker script.  */\n   bfd_boolean force_group_allocation;\n \n+  /* If TRUE (the default) warn for uses of system directories when\n+     cross linking.  */\n+  bfd_boolean poison_system_directories;\n+\n+  /* If TRUE (default FALSE) give an error for uses of system\n+     directories when cross linking instead of a warning.  */\n+  bfd_boolean error_poison_system_directories;\n+\n   /* Big or little endian as set on command line.  */\n   enum endian_enum endian;\n \ndiff --git a/ld/ld.texi b/ld/ld.texi\nindex 2a93e9456ac..3eeb70607fd 100644\n--- a/ld/ld.texi\n+++ b/ld/ld.texi\n@@ -2655,6 +2655,18 @@ string identifying the original linked file does not change.\n \n Passing @code{none} for @var{style} disables the setting from any\n @code{--build-id} options earlier on the command line.\n+\n+@kindex --no-poison-system-directories\n+@item --no-poison-system-directories\n+Do not warn for @option{-L} options using system directories such as\n+@file{/usr/lib} when cross linking.  This option is intended for use\n+in chroot environments when such directories contain the correct\n+libraries for the target system rather than the host.\n+\n+@kindex --error-poison-system-directories\n+@item --error-poison-system-directories\n+Give an error instead of a warning for @option{-L} options using\n+system directories when cross linking.\n @end table\n \n @c man end\ndiff --git a/ld/ldfile.c b/ld/ldfile.c\nindex e39170b5d94..fadc248a140 100644\n--- a/ld/ldfile.c\n+++ b/ld/ldfile.c\n@@ -117,6 +117,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline)\n     new_dirs->name = concat (ld_sysroot, name + strlen (\"$SYSROOT\"), (const char *) NULL);\n   else\n     new_dirs->name = xstrdup (name);\n+\n+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES\n+  if (command_line.poison_system_directories\n+  && ((!strncmp (name, \"/lib\", 4))\n+      || (!strncmp (name, \"/usr/lib\", 8))\n+      || (!strncmp (name, \"/usr/local/lib\", 14))\n+      || (!strncmp (name, \"/usr/X11R6/lib\", 14))))\n+   {\n+     if (command_line.error_poison_system_directories)\n+       einfo (_(\"%X%P: error: library search path \\\"%s\\\" is unsafe for \"\n+            \"cross-compilation\\n\"), name);\n+     else\n+       einfo (_(\"%P: warning: library search path \\\"%s\\\" is unsafe for \"\n+            \"cross-compilation\\n\"), name);\n+   }\n+#endif\n+\n }\n \n /* Try to open a BFD for a lang_input_statement.  */\ndiff --git a/ld/ldlex.h b/ld/ldlex.h\nindex 5ea083ebeb3..417f9b858ce 100644\n--- a/ld/ldlex.h\n+++ b/ld/ldlex.h\n@@ -155,6 +155,8 @@ enum option_values\n   OPTION_NON_CONTIGUOUS_REGIONS,\n   OPTION_NON_CONTIGUOUS_REGIONS_WARNINGS,\n   OPTION_DEPENDENCY_FILE,\n+  OPTION_NO_POISON_SYSTEM_DIRECTORIES,\n+  OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,\n };\n \n /* The initial parser states.  */\ndiff --git a/ld/ldmain.c b/ld/ldmain.c\nindex 08be9030cb5..92dc16399eb 100644\n--- a/ld/ldmain.c\n+++ b/ld/ldmain.c\n@@ -321,6 +321,8 @@ main (int argc, char **argv)\n   command_line.warn_mismatch = TRUE;\n   command_line.warn_search_mismatch = TRUE;\n   command_line.check_section_addresses = -1;\n+  command_line.poison_system_directories = TRUE;\n+  command_line.error_poison_system_directories = FALSE;\n \n   /* We initialize DEMANGLING based on the environment variable\n      COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the\ndiff --git a/ld/lexsup.c b/ld/lexsup.c\nindex 6cab41cf5df..c497f36b148 100644\n--- a/ld/lexsup.c\n+++ b/ld/lexsup.c\n@@ -572,6 +572,14 @@ static const struct ld_option ld_options[] =\n   { {\"no-print-map-discarded\", no_argument, NULL, OPTION_NO_PRINT_MAP_DISCARDED},\n     '\\0', NULL, N_(\"Do not show discarded sections in map file output\"),\n     TWO_DASHES },\n+  { {\"no-poison-system-directories\", no_argument, NULL,\n+    OPTION_NO_POISON_SYSTEM_DIRECTORIES},\n+    '\\0', NULL, N_(\"Do not warn for -L options using system directories\"),\n+    TWO_DASHES },\n+  { {\"error-poison-system-directories\", no_argument, NULL,\n+    OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},\n+    '\\0', NULL, N_(\"Give an error for -L options using system directories\"),\n+    TWO_DASHES },\n };\n \n #define OPTION_COUNT ARRAY_SIZE (ld_options)\n@@ -584,6 +592,7 @@ parse_args (unsigned argc, char **argv)\n   int ingroup = 0;\n   char *default_dirlist = NULL;\n   char *shortopts;\n+  char *BR_paranoid_env;\n   struct option *longopts;\n   struct option *really_longopts;\n   int last_optind;\n@@ -1591,6 +1600,14 @@ parse_args (unsigned argc, char **argv)\n \t  }\n \t  break;\n \n+\tcase OPTION_NO_POISON_SYSTEM_DIRECTORIES:\n+\t  command_line.poison_system_directories = FALSE;\n+\t  break;\n+\n+\tcase OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:\n+\t  command_line.error_poison_system_directories = TRUE;\n+\t  break;\n+\n \tcase OPTION_PUSH_STATE:\n \t  input_flags.pushed = xmemdup (&input_flags,\n \t\t\t\t\tsizeof (input_flags),\n@@ -1681,6 +1698,10 @@ parse_args (unsigned argc, char **argv)\n       command_line.soname = NULL;\n     }\n \n+  BR_paranoid_env = getenv(\"BR_COMPILER_PARANOID_UNSAFE_PATH\");\n+  if (BR_paranoid_env && strlen(BR_paranoid_env) > 0)\n+    command_line.error_poison_system_directories = TRUE;\n+\n   while (ingroup)\n     {\n       einfo (_(\"%P: missing --end-group; added as last command line option\\n\"));\n-- \n2.25.4\n\n"
  },
  {
    "path": "package/binutils/2.35.2/0003-or1k-Fix-issue-with-plt-link-failure-for-local-calls.patch",
    "content": "From baf313f84b106a5a29f01796afd857e69abf8b08 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:02:14 +0900\nSubject: [PATCH] or1k: Fix issue with plt link failure for local calls\n\nWhen building protobuf we were seeing the assert failure:\n\n    /home/giuliobenetti/git/upstream/or1k-binutils-2.36.1/host/lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld:\n    BFD (GNU Binutils) 2.36.1 assertion fail elf32-or1k.c:2377\n    /home/giuliobenetti/git/upstream/or1k-binutils-2.36.1/host/lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld:\n    BFD (GNU Binutils) 2.36.1 assertion fail elf32-or1k.c:2377\n    /home/giuliobenetti/git/upstream/or1k-binutils-2.36.1/host/lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld:\n    BFD (GNU Binutils) 2.36.1 assertion fail elf32-or1k.c:2377\n    collect2: error: ld returned 1 exit status\n\nThis failure happens while writing out PLT entries, there is a check\n\"BFD_ASSERT (h->dynindx != -1)\" to confirm all plt entries have dynamic\nsymbol attributes.  This was failing for symbols that were\n\"forced_local\" in previous linking code.\n\nThe fix adds logic to or1k_elf_adjust_dynamic_symbol to identify\n\"forced_local\" symbols and exclude them from the the PLT.\n\nbfd/ChangeLog:\n\n\tPR 27624\n\t* elf32-or1k.c (or1k_elf_adjust_dynamic_symbol): Change\n\tcondition used to cleanup plt entries to cleanup forced local\n\tentries.\n\nCc: Giulio Benetti <giulio.benetti@benettiengineering.com>\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 9 ++++-----\n 1 file changed, 4 insertions(+), 5 deletions(-)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 7c02d004cc7..bbfa2bfe614 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -2568,11 +2568,10 @@ or1k_elf_adjust_dynamic_symbol (struct bfd_link_info *info,\n   if (h->type == STT_FUNC\n       || h->needs_plt)\n     {\n-      if (! bfd_link_pic (info)\n-\t  && !h->def_dynamic\n-\t  && !h->ref_dynamic\n-\t  && h->root.type != bfd_link_hash_undefweak\n-\t  && h->root.type != bfd_link_hash_undefined)\n+      if (h->plt.refcount <= 0\n+\t  || (SYMBOL_CALLS_LOCAL (info, h)\n+\t  || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT\n+\t      && h->root.type == bfd_link_hash_undefweak)))\n \t{\n \t  /* This case can occur if we saw a PLT reloc in an input\n \t     file, but the symbol was never referred to by a dynamic\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.35.2/0004-or1k-Implement-relocation-R_OR1K_GOT_AHI16-for-gotha.patch",
    "content": "From c67656e248d6dadaa2729975a17c8dd03afe48d0 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:02:15 +0900\nSubject: [PATCH] or1k: Implement relocation R_OR1K_GOT_AHI16 for gotha()\n\nThe gotha() relocation mnemonic will be outputted by OpenRISC GCC when\nusing the -mcmodel=large option.  This relocation is used along with\ngot() to generate 32-bit GOT offsets.  This increases the previous GOT\noffset limit from the previous 16-bit (64K) limit.\n\nThis is needed on large binaries where the GOT grows larger than 64k.\n\nbfd/ChangeLog:\n\n\tPR 21464\n\t* bfd-in2.h: Add BFD_RELOC_OR1K_GOT_AHI16 relocation.\n\t* elf32-or1k.c (or1k_elf_howto_table, or1k_reloc_map): Likewise.\n\t(or1k_final_link_relocate, or1k_elf_relocate_section,\n\tor1k_elf_check_relocs): Likewise.\n\t* libbfd.h (bfd_reloc_code_real_names): Likewise.\n\t* reloc.c: Likewise.\n\ncpu/ChangeLog:\n\n\tPR 21464\n\t* or1k.opc (or1k_imm16_relocs, parse_reloc): Define parse logic\n\tfor gotha() relocation.\n\ninclude/ChangeLog:\n\n\tPR 21464\n\t* elf/or1k.h (elf_or1k_reloc_type): Define R_OR1K_GOT_AHI16 number.\n\nopcodes/ChangeLog:\n\n\tPR 21464\n\t* or1k-asm.c: Regenerate.\n\ngas/ChangeLog:\n\n\tPR 21464\n\t* testsuite/gas/or1k/reloc-1.s: Add test for new relocation.\n\t* testsuite/gas/or1k/reloc-1.d: Add test result for new\n\trelocation.\n\nCc: Giulio Benetti <giulio.benetti@benettiengineering.com>\n\nfixup reloc, add tests\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/bfd-in2.h                    |  1 +\n bfd/elf32-or1k.c                 | 21 ++++++++++++++++++++-\n bfd/libbfd.h                     |  1 +\n bfd/reloc.c                      |  2 ++\n cpu/or1k.opc                     |  7 ++++++-\n gas/testsuite/gas/or1k/reloc-1.d |  4 +++-\n gas/testsuite/gas/or1k/reloc-1.s |  4 ++++\n include/elf/or1k.h               |  1 +\n opcodes/or1k-asm.c               |  7 ++++++-\n 9 files changed, 44 insertions(+), 4 deletions(-)\n\ndiff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h\nindex df6f9f45673..ab861395e93 100644\n--- a/bfd/bfd-in2.h\n+++ b/bfd/bfd-in2.h\n@@ -5041,6 +5041,7 @@ then it may be truncated to 8 bits.  */\n   BFD_RELOC_OR1K_TLS_TPOFF,\n   BFD_RELOC_OR1K_TLS_DTPOFF,\n   BFD_RELOC_OR1K_TLS_DTPMOD,\n+  BFD_RELOC_OR1K_GOT_AHI16,\n \n /* H8 elf Relocations.  */\n   BFD_RELOC_H8_DIR16A8,\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex bbfa2bfe614..8e395827123 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -808,6 +808,20 @@ static reloc_howto_type or1k_elf_howto_table[] =\n \t 0,\t\t\t/* Source Mask.  */\n \t 0x03ffffff,\t\t/* Dest Mask.  */\n \t TRUE),\t\t\t/* PC relative offset?  */\n+\n+  HOWTO (R_OR1K_GOT_AHI16,     /* type */\n+\t16,                    /* rightshift */\n+\t2,                     /* size (0 = byte, 1 = short, 2 = long) */\n+\t16,                    /* bitsize */\n+\tFALSE,                 /* pc_relative */\n+\t0,                     /* bitpos */\n+\tcomplain_overflow_signed, /* complain_on_overflow */\n+\tbfd_elf_generic_reloc, /* special_function */\n+\t\"R_OR1K_GOT_AHI16\",    /* name */\n+\tFALSE,                 /* partial_inplace */\n+\t0,                     /* src_mask */\n+\t0xffff,                /* dst_mask */\n+\tFALSE),                /* pcrel_offset */\n };\n \n /* Map BFD reloc types to Or1k ELF reloc types.  */\n@@ -871,6 +885,7 @@ static const struct or1k_reloc_map or1k_reloc_map[] =\n   { BFD_RELOC_OR1K_TLS_IE_LO13,\tR_OR1K_TLS_IE_LO13 },\n   { BFD_RELOC_OR1K_SLO13,\tR_OR1K_SLO13 },\n   { BFD_RELOC_OR1K_PLTA26,\tR_OR1K_PLTA26 },\n+  { BFD_RELOC_OR1K_GOT_AHI16,\tR_OR1K_GOT_AHI16 },\n };\n \n /* tls_type is a mask used to track how each symbol is accessed,\n@@ -1113,6 +1128,7 @@ or1k_final_link_relocate (reloc_howto_type *howto, bfd *input_bfd,\n   switch (howto->type)\n     {\n     case R_OR1K_AHI16:\n+    case R_OR1K_GOT_AHI16:\n     case R_OR1K_GOTOFF_AHI16:\n     case R_OR1K_TLS_IE_AHI16:\n     case R_OR1K_TLS_LE_AHI16:\n@@ -1375,6 +1391,7 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t    }\n \t  break;\n \n+\tcase R_OR1K_GOT_AHI16:\n \tcase R_OR1K_GOT16:\n \tcase R_OR1K_GOT_PG21:\n \tcase R_OR1K_GOT_LO13:\n@@ -1466,7 +1483,8 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t    /* The GOT_PG21 and GOT_LO13 relocs are pc-relative,\n \t       while the GOT16 reloc is GOT relative.  */\n \t    relocation = got_base + off;\n-\t    if (r_type == R_OR1K_GOT16)\n+\t    if (r_type == R_OR1K_GOT16\n+\t\t|| r_type == R_OR1K_GOT_AHI16)\n \t      relocation -= got_sym_value;\n \n \t  /* Addend should be zero.  */\n@@ -1992,6 +2010,7 @@ or1k_elf_check_relocs (bfd *abfd,\n \t    }\n \t  break;\n \n+\tcase R_OR1K_GOT_AHI16:\n \tcase R_OR1K_GOT16:\n \tcase R_OR1K_GOT_PG21:\n \tcase R_OR1K_GOT_LO13:\ndiff --git a/bfd/libbfd.h b/bfd/libbfd.h\nindex b97534fc9fe..795c9b9d27f 100644\n--- a/bfd/libbfd.h\n+++ b/bfd/libbfd.h\n@@ -2755,6 +2755,7 @@ static const char *const bfd_reloc_code_real_names[] = { \"@@uninitialized@@\",\n   \"BFD_RELOC_OR1K_TLS_TPOFF\",\n   \"BFD_RELOC_OR1K_TLS_DTPOFF\",\n   \"BFD_RELOC_OR1K_TLS_DTPMOD\",\n+  \"BFD_RELOC_OR1K_GOT_AHI16\",\n   \"BFD_RELOC_H8_DIR16A8\",\n   \"BFD_RELOC_H8_DIR16R8\",\n   \"BFD_RELOC_H8_DIR24A8\",\ndiff --git a/bfd/reloc.c b/bfd/reloc.c\nindex 9aba84ca81e..1e021febef2 100644\n--- a/bfd/reloc.c\n+++ b/bfd/reloc.c\n@@ -6175,6 +6175,8 @@ ENUMX\n   BFD_RELOC_OR1K_GOTPC_HI16\n ENUMX\n   BFD_RELOC_OR1K_GOTPC_LO16\n+ENUMX\n+  BFD_RELOC_OR1K_GOT_AHI16\n ENUMX\n   BFD_RELOC_OR1K_GOT16\n ENUMX\ndiff --git a/cpu/or1k.opc b/cpu/or1k.opc\nindex f0adcbb00a5..5d20a1f33a7 100644\n--- a/cpu/or1k.opc\n+++ b/cpu/or1k.opc\n@@ -193,7 +193,7 @@ static const bfd_reloc_code_real_type or1k_imm16_relocs[][6] = {\n     BFD_RELOC_OR1K_GOT_LO13,\n     BFD_RELOC_UNUSED,\n     BFD_RELOC_UNUSED,\n-    BFD_RELOC_UNUSED },\n+    BFD_RELOC_OR1K_GOT_AHI16 },\n   { BFD_RELOC_OR1K_GOTPC_LO16,\n     BFD_RELOC_UNUSED,\n     BFD_RELOC_UNUSED,\n@@ -296,6 +296,11 @@ parse_reloc (const char **strp)\n \tstr += 5;\n \tcls = RCLASS_TPOFF;\n       }\n+    else if (strncasecmp (str, \"got\", 3) == 0)\n+      {\n+\tstr += 3;\n+\tcls = RCLASS_GOT;\n+      }\n \n     if (strncasecmp (str, \"hi(\", 3) == 0)\n       {\ndiff --git a/gas/testsuite/gas/or1k/reloc-1.d b/gas/testsuite/gas/or1k/reloc-1.d\nindex d1bcf5608bb..3a001c4ed99 100644\n--- a/gas/testsuite/gas/or1k/reloc-1.d\n+++ b/gas/testsuite/gas/or1k/reloc-1.d\n@@ -68,5 +68,7 @@ OFFSET   TYPE              VALUE\n 000000ec R_OR1K_LO13       x\n 000000f0 R_OR1K_GOT_LO13   x\n 000000f4 R_OR1K_SLO13      x\n-\n+000000f8 R_OR1K_GOT_AHI16  x\n+000000fc R_OR1K_GOT_AHI16  x\n+00000100 R_OR1K_GOT_AHI16  x\n \ndiff --git a/gas/testsuite/gas/or1k/reloc-1.s b/gas/testsuite/gas/or1k/reloc-1.s\nindex e76abef6532..562609aa869 100644\n--- a/gas/testsuite/gas/or1k/reloc-1.s\n+++ b/gas/testsuite/gas/or1k/reloc-1.s\n@@ -74,3 +74,7 @@\n \tl.lbz\tr5,po(x)(r3)\n \tl.lbz\tr5,gotpo(x)(r3)\n \tl.sb\tpo(x)(r3),r6\n+\n+\tl.movhi\tr4,gotha(x)\n+\tl.ori\tr3,r4,gotha(x)\n+\tl.addi\tr3,r4,gotha(x)\ndiff --git a/include/elf/or1k.h b/include/elf/or1k.h\nindex a215ef5c17e..dff37d875f2 100644\n--- a/include/elf/or1k.h\n+++ b/include/elf/or1k.h\n@@ -77,6 +77,7 @@ START_RELOC_NUMBERS (elf_or1k_reloc_type)\n   RELOC_NUMBER (R_OR1K_TLS_IE_LO13,   51)\n   RELOC_NUMBER (R_OR1K_SLO13,         52)\n   RELOC_NUMBER (R_OR1K_PLTA26,        53)\n+  RELOC_NUMBER (R_OR1K_GOT_AHI16,     54)\n END_RELOC_NUMBERS (R_OR1K_max)\n \n #define EF_OR1K_NODELAY (1UL << 0)\ndiff --git a/opcodes/or1k-asm.c b/opcodes/or1k-asm.c\nindex 5f3c6c74b12..e0c49b3b8cd 100644\n--- a/opcodes/or1k-asm.c\n+++ b/opcodes/or1k-asm.c\n@@ -177,7 +177,7 @@ static const bfd_reloc_code_real_type or1k_imm16_relocs[][6] = {\n     BFD_RELOC_OR1K_GOT_LO13,\n     BFD_RELOC_UNUSED,\n     BFD_RELOC_UNUSED,\n-    BFD_RELOC_UNUSED },\n+    BFD_RELOC_OR1K_GOT_AHI16 },\n   { BFD_RELOC_OR1K_GOTPC_LO16,\n     BFD_RELOC_UNUSED,\n     BFD_RELOC_UNUSED,\n@@ -280,6 +280,11 @@ parse_reloc (const char **strp)\n \tstr += 5;\n \tcls = RCLASS_TPOFF;\n       }\n+    else if (strncasecmp (str, \"got\", 3) == 0)\n+      {\n+\tstr += 3;\n+\tcls = RCLASS_GOT;\n+      }\n \n     if (strncasecmp (str, \"hi(\", 3) == 0)\n       {\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.35.2/0005-or1k-Avoid-R_OR1K_GOT16-overflow-failures-in-presenc.patch",
    "content": "From 097b83a1c9c694a14e6081cee034bf24f16875c1 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:02:16 +0900\nSubject: [PATCH] or1k: Avoid R_OR1K_GOT16 overflow failures in presence of\n R_OR1K_GOT_AHI16\n\nNow that we support R_OR1K_GOT_AHI16 we can relax the R_OR1K_GOT16\noverflow validation check if the section has R_OR1K_GOT_AHI16.\n\nWe cannot simple disable R_OR1K_GOT16 overflow validation as there will\nstill be binaries that will have only R_OR1K_GOT16.  The\nR_OR1K_GOT_AHI16 relocation will only be added by GCC when building with\nthe option -mcmodel=large.\n\nThis assumes that R_OR1K_GOT_AHI16 will come before R_OR1K_GOT16, which\nis the code pattern that will be emitted by GCC.\n\nbfd/ChangeLog:\n\n\tPR 21464\n\t* elf32-or1k.c (or1k_elf_relocate_section): Relax R_OR1K_GOT16\n\toverflow check if we have R_OR1K_GOT_AHI16 followed by\n\tR_OR1K_GOT16.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 11 +++++++++++\n 1 file changed, 11 insertions(+)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 8e395827123..9f315bfda99 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -1280,6 +1280,7 @@ or1k_elf_relocate_section (bfd *output_bfd,\n   asection *sgot, *splt;\n   bfd_vma plt_base, got_base, got_sym_value;\n   bfd_boolean ret_val = TRUE;\n+  bfd_boolean saw_gotha = FALSE;\n \n   if (htab == NULL)\n     return FALSE;\n@@ -1487,6 +1488,16 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t\t|| r_type == R_OR1K_GOT_AHI16)\n \t      relocation -= got_sym_value;\n \n+\t    if (r_type == R_OR1K_GOT_AHI16)\n+\t      saw_gotha = TRUE;\n+\n+\t    /* If we have a R_OR1K_GOT16 followed by a R_OR1K_GOT_AHI16\n+\t       relocation we assume the code is doing the right thing to avoid\n+\t       overflows.  Here we mask the lower 16-bit of the relocation to\n+\t       avoid overflow validation failures.  */\n+\t    if (r_type == R_OR1K_GOT16 && saw_gotha)\n+\t      relocation &= 0xffff;\n+\n \t  /* Addend should be zero.  */\n \t  if (rel->r_addend != 0)\n \t    {\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.35.2/0006-or1k-Support-large-plt_relocs-when-generating-plt-en.patch",
    "content": "From c87692eb894b4b86eced7b7ba205f9bf27c2c213 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:02:17 +0900\nSubject: [PATCH] or1k: Support large plt_relocs when generating plt\n entries\n\nThe current PLT generation code will generate invalid code when the PLT\nrelocation offset exceeds 64k.  This fixes the issue by detecting large\nplt_reloc offsets and generare code sequences to create larger plt\nrelocations.\n\nThe \"large\" plt code needs 2 extra instructions to create 32-bit offsets.\n\nbfd/ChangeLog:\n\n\tPR 27746\n\t* elf32-or1k.c (PLT_ENTRY_SIZE_LARGE, PLT_MAX_INSN_COUNT,\n\tOR1K_ADD, OR1K_ORI): New macros to help with plt creation.\n\t(elf_or1k_link_hash_table): New field plt_count.\n\t(elf_or1k_link_hash_entry): New field plt_index.\n\t(elf_or1k_plt_entry_size): New function.\n\t(or1k_write_plt_entry): Update to support variable size PLTs.\n\t(or1k_elf_finish_dynamic_sections): Use new or1k_write_plt_entry\n\tAPI.\n\t(or1k_elf_finish_dynamic_symbol): Update to write large PLTs\n\twhen needed.\n\t(allocate_dynrelocs): Use elf_or1k_plt_entry_size to account for\n\tPLT size.\n\nld/ChangeLog:\n\n\tPR 27746\n\ttestsuite/ld-or1k/or1k.exp (or1kplttests): Add tests for linking\n\talong with gotha() relocations.\n\ttestsuite/ld-or1k/gotha1.dd: New file.\n\ttestsuite/ld-or1k/gotha1.s: New file.\n\ttestsuite/ld-or1k/gotha2.dd: New file.\n\ttestsuite/ld-or1k/gotha2.s: New file\n\ttestsuite/ld-or1k/pltlib.s (x): Define size to avoid link\n\tfailure.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c               | 149 ++++++++++++++++++++++++---------\n ld/testsuite/ld-or1k/gotha1.dd |  34 ++++++++\n ld/testsuite/ld-or1k/gotha1.s  |  24 ++++++\n ld/testsuite/ld-or1k/gotha2.dd |  21 +++++\n ld/testsuite/ld-or1k/gotha2.s  |  22 +++++\n ld/testsuite/ld-or1k/or1k.exp  |   8 ++\n ld/testsuite/ld-or1k/pltlib.s  |   1 +\n 7 files changed, 220 insertions(+), 39 deletions(-)\n create mode 100644 ld/testsuite/ld-or1k/gotha1.dd\n create mode 100644 ld/testsuite/ld-or1k/gotha1.s\n create mode 100644 ld/testsuite/ld-or1k/gotha2.dd\n create mode 100644 ld/testsuite/ld-or1k/gotha2.s\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 9f315bfda99..7a14eaa3a46 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -30,10 +30,14 @@\n #define N_ONES(X)\t(((bfd_vma)2 << (X)) - 1)\n \n #define PLT_ENTRY_SIZE 16\n+#define PLT_ENTRY_SIZE_LARGE (6*4)\n+#define PLT_MAX_INSN_COUNT 6\n \n #define OR1K_MOVHI(D)\t\t(0x18000000 | (D << 21))\n #define OR1K_ADRP(D)\t\t(0x08000000 | (D << 21))\n #define OR1K_LWZ(D,A)\t\t(0x84000000 | (D << 21) | (A << 16))\n+#define OR1K_ADD(D,A,B)\t\t(0xE0000000 | (D << 21) | (A << 16) | (B << 11))\n+#define OR1K_ORI(D,A)\t\t(0xA8000000 | (D << 21) | (A << 16))\n #define OR1K_ORI0(D)\t\t(0xA8000000 | (D << 21))\n #define OR1K_JR(B)\t\t(0x44000000 | (B << 11))\n #define OR1K_NOP\t\t0x15000000\n@@ -907,6 +911,8 @@ struct elf_or1k_link_hash_entry\n {\n   struct elf_link_hash_entry root;\n \n+  /* For calculating PLT size.  */\n+  bfd_vma plt_index;\n   /* Track type of TLS access.  */\n   unsigned char tls_type;\n };\n@@ -934,9 +940,20 @@ struct elf_or1k_link_hash_table\n   /* Small local sym to section mapping cache.  */\n   struct sym_cache sym_sec;\n \n+  bfd_vma plt_count;\n   bfd_boolean saw_plta;\n };\n \n+static size_t\n+elf_or1k_plt_entry_size (bfd_vma plt_index)\n+{\n+  bfd_vma plt_reloc;\n+\n+  plt_reloc = plt_index * sizeof (Elf32_External_Rela);\n+\n+  return (plt_reloc > 0xffff) ? PLT_ENTRY_SIZE_LARGE : PLT_ENTRY_SIZE;\n+}\n+\n /* Get the ELF linker hash table from a link_info structure.  */\n #define or1k_elf_hash_table(p) \\\n   (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \\\n@@ -2224,33 +2241,46 @@ or1k_elf_check_relocs (bfd *abfd,\n }\n \n static void\n-or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insn1,\n-\t\t      unsigned insn2, unsigned insn3, unsigned insnj)\n+or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,\n+\t\t      unsigned insns[], size_t insn_count)\n {\n   unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY;\n-  unsigned insn4;\n+  unsigned output_insns[PLT_MAX_INSN_COUNT];\n+\n+  /* Copy instructions into the output buffer.  */\n+  for (size_t i = 0; i < insn_count; i++)\n+    output_insns[i] = insns[i];\n \n   /* Honor the no-delay-slot setting.  */\n-  if (insn3 == OR1K_NOP)\n+  if (insns[insn_count-1] == OR1K_NOP)\n     {\n-      insn4 = insn3;\n+      unsigned slot1, slot2;\n+\n       if (nodelay)\n-\tinsn3 = insnj;\n+\tslot1 = insns[insn_count-2], slot2 = insnj;\n       else\n-\tinsn3 = insn2, insn2 = insnj;\n+\tslot1 = insnj, slot2 = insns[insn_count-2];\n+\n+      output_insns[insn_count-2] = slot1;\n+      output_insns[insn_count-1] = slot2;\n+      output_insns[insn_count]   = OR1K_NOP;\n     }\n   else\n     {\n+      unsigned slot1, slot2;\n+\n       if (nodelay)\n-\tinsn4 = insnj;\n+\tslot1 = insns[insn_count-1], slot2 = insnj;\n       else\n-\tinsn4 = insn3, insn3 = insnj;\n+\tslot1 = insnj, slot2 = insns[insn_count-1];\n+\n+      output_insns[insn_count-1] = slot1;\n+      output_insns[insn_count]   = slot2;\n     }\n \n-  bfd_put_32 (output_bfd, insn1, contents);\n-  bfd_put_32 (output_bfd, insn2, contents + 4);\n-  bfd_put_32 (output_bfd, insn3, contents + 8);\n-  bfd_put_32 (output_bfd, insn4, contents + 12);\n+  /* Write out the output buffer.  */\n+  for (size_t i = 0; i < (insn_count+1); i++)\n+    bfd_put_32 (output_bfd, output_insns[i], contents + (i*4));\n }\n \n /* Finish up the dynamic sections.  */\n@@ -2317,7 +2347,8 @@ or1k_elf_finish_dynamic_sections (bfd *output_bfd,\n       splt = htab->root.splt;\n       if (splt && splt->size > 0)\n \t{\n-\t  unsigned plt0, plt1, plt2;\n+\t  unsigned plt[PLT_MAX_INSN_COUNT];\n+\t  size_t plt_insn_count = 3;\n \t  bfd_vma got_addr = sgot->output_section->vma + sgot->output_offset;\n \n \t  /* Note we force 16 byte alignment on the .got, so that\n@@ -2328,27 +2359,27 @@ or1k_elf_finish_dynamic_sections (bfd *output_bfd,\n \t      bfd_vma pc = splt->output_section->vma + splt->output_offset;\n \t      unsigned pa = ((got_addr >> 13) - (pc >> 13)) & 0x1fffff;\n \t      unsigned po = got_addr & 0x1fff;\n-\t      plt0 = OR1K_ADRP(12) | pa;\n-\t      plt1 = OR1K_LWZ(15,12) | (po + 8);\n-\t      plt2 = OR1K_LWZ(12,12) | (po + 4);\n+\t      plt[0] = OR1K_ADRP(12) | pa;\n+\t      plt[1] = OR1K_LWZ(15,12) | (po + 8);\n+\t      plt[2] = OR1K_LWZ(12,12) | (po + 4);\n \t    }\n \t  else if (bfd_link_pic (info))\n \t    {\n-\t      plt0 = OR1K_LWZ(15, 16) | 8;\t/* .got+8 */\n-\t      plt1 = OR1K_LWZ(12, 16) | 4;\t/* .got+4 */\n-\t      plt2 = OR1K_NOP;\n+\t      plt[0] = OR1K_LWZ(15, 16) | 8;\t/* .got+8 */\n+\t      plt[1] = OR1K_LWZ(12, 16) | 4;\t/* .got+4 */\n+\t      plt[2] = OR1K_NOP;\n \t    }\n \t  else\n \t    {\n \t      unsigned ha = ((got_addr + 0x8000) >> 16) & 0xffff;\n \t      unsigned lo = got_addr & 0xffff;\n-\t      plt0 = OR1K_MOVHI(12) | ha;\n-\t      plt1 = OR1K_LWZ(15,12) | (lo + 8);\n-\t      plt2 = OR1K_LWZ(12,12) | (lo + 4);\n+\t      plt[0] = OR1K_MOVHI(12) | ha;\n+\t      plt[1] = OR1K_LWZ(15,12) | (lo + 8);\n+\t      plt[2] = OR1K_LWZ(12,12) | (lo + 4);\n \t    }\n \n-\t  or1k_write_plt_entry (output_bfd, splt->contents,\n-\t\t\t\tplt0, plt1, plt2, OR1K_JR(15));\n+\t  or1k_write_plt_entry (output_bfd, splt->contents, OR1K_JR(15),\n+\t\t\t\tplt, plt_insn_count);\n \n \t  elf_section_data (splt->output_section)->this_hdr.sh_entsize = 4;\n \t}\n@@ -2391,7 +2422,8 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n \n   if (h->plt.offset != (bfd_vma) -1)\n     {\n-      unsigned int plt0, plt1, plt2;\n+      unsigned int plt[PLT_MAX_INSN_COUNT];\n+      size_t plt_insn_count = 3;\n       asection *splt;\n       asection *sgot;\n       asection *srela;\n@@ -2403,6 +2435,7 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n       bfd_vma got_offset;\n       bfd_vma got_addr;\n       Elf_Internal_Rela rela;\n+      bfd_boolean large_plt_entry;\n \n       /* This symbol has an entry in the procedure linkage table.  Set\n \t it up.  */\n@@ -2420,10 +2453,13 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n \t corresponds to this symbol.  This is the index of this symbol\n \t in all the symbols for which we are making plt entries.  The\n \t first entry in the procedure linkage table is reserved.  */\n-      plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1;\n+      plt_index = ((struct elf_or1k_link_hash_entry *) h)->plt_index;\n       plt_addr = plt_base_addr + h->plt.offset;\n       plt_reloc = plt_index * sizeof (Elf32_External_Rela);\n \n+      large_plt_entry = (elf_or1k_plt_entry_size (plt_index)\n+\t\t\t == PLT_ENTRY_SIZE_LARGE);\n+\n       /* Get the offset into the .got table of the entry that\n \tcorresponds to this function.  Each .got entry is 4 bytes.\n \tThe first three are reserved.  */\n@@ -2435,27 +2471,57 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n \t{\n \t  unsigned pa = ((got_addr >> 13) - (plt_addr >> 13)) & 0x1fffff;\n \t  unsigned po = (got_addr & 0x1fff);\n-\t  plt0 = OR1K_ADRP(12) | pa;\n-\t  plt1 = OR1K_LWZ(12,12) | po;\n-\t  plt2 = OR1K_ORI0(11) | plt_reloc;\n+\t  plt[0] = OR1K_ADRP(12) | pa;\n+\t  plt[1] = OR1K_LWZ(12,12) | po;\n+\t  plt[2] = OR1K_ORI0(11) | plt_reloc;\n \t}\n       else if (bfd_link_pic (info))\n \t{\n-\t  plt0 = OR1K_LWZ(12,16) | got_offset;\n-\t  plt1 = OR1K_ORI0(11) | plt_reloc;\n-\t  plt2 = OR1K_NOP;\n+\t  if (large_plt_entry)\n+\t    {\n+\t      unsigned gotha = ((got_offset + 0x8000) >> 16) & 0xffff;\n+\t      unsigned got = got_offset & 0xffff;\n+\t      unsigned pltrelhi = (plt_reloc >> 16) & 0xffff;\n+\t      unsigned pltrello = plt_reloc & 0xffff;\n+\n+\t      plt[0] = OR1K_MOVHI(12) | gotha;\n+\t      plt[1] = OR1K_ADD(12,12,16);\n+\t      plt[2] = OR1K_LWZ(12,12) | got;\n+\t      plt[3] = OR1K_MOVHI(11) | pltrelhi;\n+\t      plt[4] = OR1K_ORI(11,11) | pltrello;\n+\t      plt_insn_count = 5;\n+\t    }\n+\t  else\n+\t    {\n+\t      plt[0] = OR1K_LWZ(12,16) | got_offset;\n+\t      plt[1] = OR1K_ORI0(11) | plt_reloc;\n+\t      plt[2] = OR1K_NOP;\n+\t    }\n \t}\n       else\n \t{\n \t  unsigned ha = ((got_addr + 0x8000) >> 16) & 0xffff;\n \t  unsigned lo = got_addr & 0xffff;\n-\t  plt0 = OR1K_MOVHI(12) | ha;\n-\t  plt1 = OR1K_LWZ(12,12) | lo;\n-\t  plt2 = OR1K_ORI0(11) | plt_reloc;\n+\t  plt[0] = OR1K_MOVHI(12) | ha;\n+\t  plt[1] = OR1K_LWZ(12,12) | lo;\n+\t  plt[2] = OR1K_ORI0(11) | plt_reloc;\n+\t}\n+\n+      /* For large code model we fixup the non-PIC PLT relocation instructions\n+\t here.  */\n+      if (large_plt_entry && !bfd_link_pic (info))\n+\t{\n+\t  unsigned pltrelhi = (plt_reloc >> 16) & 0xffff;\n+\t  unsigned pltrello = plt_reloc & 0xffff;\n+\n+\t  plt[2] = OR1K_MOVHI(11) | pltrelhi;\n+\t  plt[3] = OR1K_ORI(11,11) | pltrello;\n+\t  plt[4] = OR1K_NOP;\n+\t  plt_insn_count = 5;\n \t}\n \n       or1k_write_plt_entry (output_bfd, splt->contents + h->plt.offset,\n-\t\t\t    plt0, plt1, plt2, OR1K_JR(12));\n+\t\t\t    OR1K_JR(12), plt, plt_insn_count);\n \n       /* Fill in the entry in the global offset table.  We initialize it to\n \t point to the top of the plt.  This is done to lazy lookup the actual\n@@ -2779,11 +2845,16 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)\n       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))\n \t{\n \t  asection *splt = htab->root.splt;\n+\t  bfd_vma plt_index;\n+\n+\t  /* Track the index of our plt entry for use in calculating size.  */\n+\t  plt_index = htab->plt_count++;\n+\t  ((struct elf_or1k_link_hash_entry *) h)->plt_index = plt_index;\n \n \t  /* If this is the first .plt entry, make room for the special\n \t     first entry.  */\n \t  if (splt->size == 0)\n-\t    splt->size = PLT_ENTRY_SIZE;\n+\t    splt->size = elf_or1k_plt_entry_size (plt_index);\n \n \t  h->plt.offset = splt->size;\n \n@@ -2800,7 +2871,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)\n \t    }\n \n \t  /* Make room for this entry.  */\n-\t  splt->size += PLT_ENTRY_SIZE;\n+\t  splt->size += elf_or1k_plt_entry_size (plt_index);\n \n \t  /* We also need to make an entry in the .got.plt section, which\n \t     will be placed in the .got section by the linker script.  */\ndiff --git a/ld/testsuite/ld-or1k/gotha1.dd b/ld/testsuite/ld-or1k/gotha1.dd\nnew file mode 100644\nindex 00000000000..0ad1f8f5399\n--- /dev/null\n+++ b/ld/testsuite/ld-or1k/gotha1.dd\n@@ -0,0 +1,34 @@\n+\n+.*\\.x:     file format elf32-or1k\n+\n+\n+Disassembly of section \\.plt:\n+\n+[0-9a-f]+ <\\.plt>:\n+ +[0-9a-f]+:\t19 80 00 00 \tl\\.movhi r12,0x0\n+ +[0-9a-f]+:\t85 ec [0-9a-f]+ [0-9a-f]+ \tl\\.lwz r15,[0-9]+\\(r12\\)\n+ +[0-9a-f]+:\t44 00 78 00 \tl\\.jr r15\n+ +[0-9a-f]+:\t85 8c [0-9a-f]+ [0-9a-f]+ \tl\\.lwz r12,[0-9]+\\(r12\\)\n+ +[0-9a-f]+:\t19 80 00 00 \tl\\.movhi r12,0x0\n+ +[0-9a-f]+:\t85 8c [0-9a-f]+ [0-9a-f]+ \tl\\.lwz r12,[0-9]+\\(r12\\)\n+ +[0-9a-f]+:\t44 00 60 00 \tl\\.jr r12\n+ +[0-9a-f]+:\ta9 60 00 00 \tl\\.ori r11,r0,0x0\n+\n+Disassembly of section \\.text:\n+\n+[0-9a-f]+ <_start>:\n+ +[0-9a-f]+:\t9c 21 ff fc \tl\\.addi r1,r1,-4\n+ +[0-9a-f]+:\td4 01 48 00 \tl\\.sw 0\\(r1\\),r9\n+ +[0-9a-f]+:\t04 00 00 02 \tl\\.jal [0-9a-f]+ <_start\\+0x10>\n+ +[0-9a-f]+:\t1a 60 00 00 \tl\\.movhi r19,0x0\n+ +[0-9a-f]+:\taa 73 [0-9a-f]+ [0-9a-f]+ \tl\\.ori r19,r19,0x[0-9a-f]+\n+ +[0-9a-f]+:\te2 73 48 00 \tl\\.add r19,r19,r9\n+ +[0-9a-f]+:\t1a 20 00 00 \tl\\.movhi r17,0x0\n+ +[0-9a-f]+:\te2 31 98 00 \tl\\.add r17,r17,r19\n+ +[0-9a-f]+:\t86 31 00 10 \tl\\.lwz r17,16\\(r17\\)\n+ +[0-9a-f]+:\t84 71 00 00 \tl\\.lwz r3,0\\(r17\\)\n+ +[0-9a-f]+:\t07 ff ff f2 \tl\\.jal [0-9a-f]+ <\\.plt\\+0x10>\n+ +[0-9a-f]+:\t15 00 00 00 \tl\\.nop 0x0\n+ +[0-9a-f]+:\t85 21 00 00 \tl\\.lwz r9,0\\(r1\\)\n+ +[0-9a-f]+:\t44 00 48 00 \tl\\.jr r9\n+ +[0-9a-f]+:\t9c 21 00 04 \tl\\.addi r1,r1,4\ndiff --git a/ld/testsuite/ld-or1k/gotha1.s b/ld/testsuite/ld-or1k/gotha1.s\nnew file mode 100644\nindex 00000000000..42b16db425c\n--- /dev/null\n+++ b/ld/testsuite/ld-or1k/gotha1.s\n@@ -0,0 +1,24 @@\n+\t.data\n+\t.p2align 16\n+\n+\t.text\n+\t.globl\t_start\n+_start:\n+\tl.addi\tr1, r1, -4\n+\tl.sw\t0(r1), r9\n+\n+\tl.jal\t8\n+\t l.movhi\tr19, gotpchi(_GLOBAL_OFFSET_TABLE_-4)\n+\tl.ori\tr19, r19, gotpclo(_GLOBAL_OFFSET_TABLE_+0)\n+\tl.add\tr19, r19, r9\n+\n+\tl.movhi\tr17, gotha(x)\n+\tl.add\tr17, r17, r19\n+\tl.lwz\tr17, got(x)(r17)\n+\tl.lwz\tr3, 0(r17)\n+\n+\tl.jal\tplt(func)\n+\t l.nop\n+\tl.lwz\tr9, 0(r1)\n+\tl.jr\tr9\n+\t l.addi\tr1, r1, 4\ndiff --git a/ld/testsuite/ld-or1k/gotha2.dd b/ld/testsuite/ld-or1k/gotha2.dd\nnew file mode 100644\nindex 00000000000..fe09da5466b\n--- /dev/null\n+++ b/ld/testsuite/ld-or1k/gotha2.dd\n@@ -0,0 +1,21 @@\n+\n+.*\\.x:     file format elf32-or1k\n+\n+\n+Disassembly of section \\.text:\n+\n+[0-9a-f]+ <test>:\n+ +[0-9a-f]+:\t9c 21 ff f8 \tl\\.addi r1,r1,-8\n+ +[0-9a-f]+:\td4 01 80 00 \tl\\.sw 0\\(r1\\),r16\n+ +[0-9a-f]+:\td4 01 48 04 \tl\\.sw 4\\(r1\\),r9\n+ +[0-9a-f]+:\t04 00 [0-9a-f]+ [0-9a-f]+ \tl\\.jal [0-9a-f]+ <test\\+0x14>\n+ +[0-9a-f]+:\t1a 00 00 00 \tl\\.movhi r16,0x0\n+ +[0-9a-f]+:\taa 10 [0-9a-f]+ [0-9a-f]+ \tl\\.ori r16,r16,0x[0-9a-f]+\n+ +[0-9a-f]+:\te2 10 48 00 \tl\\.add r16,r16,r9\n+ +[0-9a-f]+:\t1a 20 00 00 \tl\\.movhi r17,0x0\n+ +[0-9a-f]+:\te2 31 80 00 \tl\\.add r17,r17,r16\n+ +[0-9a-f]+:\t86 31 00 0c \tl\\.lwz r17,12\\(r17\\)\n+ +[0-9a-f]+:\t85 21 00 04 \tl\\.lwz r9,4\\(r1\\)\n+ +[0-9a-f]+:\t86 01 00 00 \tl\\.lwz r16,0\\(r1\\)\n+ +[0-9a-f]+:\t44 00 48 00 \tl\\.jr r9\n+ +[0-9a-f]+:\t9c 21 00 08 \tl\\.addi r1,r1,8\ndiff --git a/ld/testsuite/ld-or1k/gotha2.s b/ld/testsuite/ld-or1k/gotha2.s\nnew file mode 100644\nindex 00000000000..164b282f2dd\n--- /dev/null\n+++ b/ld/testsuite/ld-or1k/gotha2.s\n@@ -0,0 +1,22 @@\n+\t.section\t.text\n+\t.align 4\n+\t.global\ttest\n+\t.type\ttest, @function\n+test:\n+\tl.addi\tr1, r1, -8\n+\tl.sw\t0(r1), r16\n+\tl.sw\t4(r1), r9\n+\n+\tl.jal\t8\n+\t l.movhi\tr16, gotpchi(_GLOBAL_OFFSET_TABLE_-4)\n+\tl.ori\tr16, r16, gotpclo(_GLOBAL_OFFSET_TABLE_+0)\n+\tl.add\tr16, r16, r9\n+\n+\tl.movhi\tr17, gotha(i)\n+\tl.add\tr17, r17, r16\n+\tl.lwz\tr17, got(i)(r17)\n+\n+\tl.lwz\tr9, 4(r1)\n+\tl.lwz\tr16, 0(r1)\n+\tl.jr\tr9\n+\t l.addi\tr1, r1, 8\ndiff --git a/ld/testsuite/ld-or1k/or1k.exp b/ld/testsuite/ld-or1k/or1k.exp\nindex 7592e8307c1..8e19ec6c31a 100644\n--- a/ld/testsuite/ld-or1k/or1k.exp\n+++ b/ld/testsuite/ld-or1k/or1k.exp\n@@ -53,6 +53,14 @@ set or1kplttests {\n      \"\" {plt1.s}\n      {{objdump -dr plt1.x.dd}}\n      \"plt1.x\"}\n+    {\"gotha exec plt\" \"tmpdir/libpltlib.so\" \"\"\n+     \"\" {gotha1.s}\n+     {{objdump -dr gotha1.dd}}\n+     \"gotha1.x\"}\n+    {\"gotha -fpic -shared\" \"-fpic -shared\" \"\"\n+     \"\" {gotha2.s}\n+     {{objdump -dr gotha2.dd}}\n+     \"gotha2.x\"}\n }\n \n # Not implemented yet\ndiff --git a/ld/testsuite/ld-or1k/pltlib.s b/ld/testsuite/ld-or1k/pltlib.s\nindex baf76ca1af7..8b4d7ba48fd 100644\n--- a/ld/testsuite/ld-or1k/pltlib.s\n+++ b/ld/testsuite/ld-or1k/pltlib.s\n@@ -1,5 +1,6 @@\n \t.section .data\n \t.globl x, y\n+\t.size x, 4\n x:\t.long 33\n y:\t.long 44\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.35.2/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch",
    "content": "From c3003947e4bad18faea4337fd2073feeb30ee078 Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@benettiengineering.com>\nDate: Wed, 9 Jun 2021 17:28:27 +0200\nSubject: [PATCH] bfd/elf32-or1k: fix building with gcc version < 5\n\nGcc version >= 5 has standard C mode not set to -std=gnu11, so if we use\nan old compiler(i.e. gcc 4.9) build fails on:\n```\nelf32-or1k.c:2251:3: error: 'for' loop initial declarations are only allowed in\nC99 or C11 mode\n    for (size_t i = 0; i < insn_count; i++)\n    ^\n```\n\nSo let's declare `size_t i` at the top of the function instead of inside\nfor loop.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 4ae7f324d33..32063ab0289 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -2244,9 +2244,10 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,\n {\n   unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY;\n   unsigned output_insns[PLT_MAX_INSN_COUNT];\n+  size_t i;\n \n   /* Copy instructions into the output buffer.  */\n-  for (size_t i = 0; i < insn_count; i++)\n+  for (i = 0; i < insn_count; i++)\n     output_insns[i] = insns[i];\n \n   /* Honor the no-delay-slot setting.  */\n@@ -2277,7 +2278,7 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,\n     }\n \n   /* Write out the output buffer.  */\n-  for (size_t i = 0; i < (insn_count+1); i++)\n+  for (i = 0; i < (insn_count+1); i++)\n     bfd_put_32 (output_bfd, output_insns[i], contents + (i*4));\n }\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.35.2/0008-or1k-fix-pc-relative-relocation-against-dynamic-on-P.patch",
    "content": "From 9af93e143a7fbdb75aa1ed37277f9250eb111628 Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@benettiengineering.com>\nDate: Sat, 10 Jul 2021 17:57:34 +0200\nSubject: [PATCH] or1k: fix pc-relative relocation against dynamic on PC\n relative 26 bit relocation\n\nWhen building openal we were seeing the assert failure:\n\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourcePausev\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourceStopv\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourceRewindv\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourcePlayv\ncollect2: error: ld returned 1 exit status\n\nThis happens because in R_OR1K_INSN_REL_26 case we can't reference local\nsymbol as previously done but we need to make sure that calls to actual\nsymbol always call the version of current object.\n\nbfd/Changelog:\n\n\t* elf32-or1k.c (or1k_elf_relocate_section): use a separate entry\n\t  in switch case R_OR1K_INSN_REL_26 where we need to check for\n\t  !SYMBOL_CALLS_LOCAL() instead of !SYMBOL_REFERENCES_LOCAL().\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 12 ++++++++++++\n 1 file changed, 12 insertions(+)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 4ae7f324d33..4f9092539f5 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -1543,6 +1543,18 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t  break;\n \n \tcase R_OR1K_INSN_REL_26:\n+\t  /* For a non-shared link, these will reference plt or call the\n+\t     version of actual object.  */\n+\t  if (bfd_link_pic (info) && !SYMBOL_CALLS_LOCAL (info, h))\n+\t    {\n+\t      _bfd_error_handler\n+\t\t(_(\"%pB: pc-relative relocation against dynamic symbol %s\"),\n+\t\t input_bfd, name);\n+\t      ret_val = FALSE;\n+\t      bfd_set_error (bfd_error_bad_value);\n+\t    }\n+\t  break;\n+\n \tcase R_OR1K_PCREL_PG21:\n \tcase R_OR1K_LO13:\n \tcase R_OR1K_SLO13:\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.36.1/0001-sh-conf.patch",
    "content": "From f88f4c77266b9669b285ab64386cf39e183661bb Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 25 Dec 2015 11:38:13 +0100\nSubject: [PATCH] sh-conf\n\nLikewise, binutils has no idea about any of these new targets either, so we\nfix that up too.. now we're able to actually build a real toolchain for\nsh2a_nofpu- and other more ineptly named toolchains (and yes, there are more\ninept targets than that one, really. Go look, I promise).\n\n[Romain: rebase on top of 2.32]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n[Thomas: rebase on top of 2.29, in which sh64 support was removed.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure    | 2 +-\n configure.ac | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/configure b/configure\nindex 68779feb42b..8b4333b2c15 100755\n--- a/configure\n+++ b/configure\n@@ -3887,7 +3887,7 @@ case \"${target}\" in\n   nvptx*-*-*)\n     noconfigdirs=\"$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc\"\n     ;;\n-  sh-*-*)\n+  sh*-*-*)\n     case \"${target}\" in\n       sh*-*-elf)\n          ;;\ndiff --git a/configure.ac b/configure.ac\nindex d16a2757689..035854759ed 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1177,7 +1177,7 @@ case \"${target}\" in\n   nvptx*-*-*)\n     noconfigdirs=\"$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc\"\n     ;;\n-  sh-*-*)\n+  sh*-*-*)\n     case \"${target}\" in\n       sh*-*-elf)\n          ;;\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/binutils/2.36.1/0002-poison-system-directories.patch",
    "content": "From a9652a60af6254d07066f08377415f05e3a9462e Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 25 Dec 2015 11:45:38 +0100\nSubject: [PATCH] poison-system-directories\n\nPatch adapted to binutils 2.23.2 and extended to use\nBR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni.\n\n[Romain: rebase on top of 2.33.1]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n[Gustavo: adapt to binutils 2.25]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\nUpstream-Status: Inappropriate [distribution: codesourcery]\n\nPatch originally created by Mark Hatle, forward-ported to\nbinutils 2.21 by Scott Garman.\n\npurpose:  warn for uses of system directories when cross linking\n\nCode Merged from Sourcery G++ binutils 2.19 - 4.4-277\n\n2008-07-02  Joseph Myers  <joseph@codesourcery.com>\n\n    ld/\n    * ld.h (args_type): Add error_poison_system_directories.\n    * ld.texinfo (--error-poison-system-directories): Document.\n    * ldfile.c (ldfile_add_library_path): Check\n    command_line.error_poison_system_directories.\n    * ldmain.c (main): Initialize\n    command_line.error_poison_system_directories.\n    * lexsup.c (enum option_values): Add\n    OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.\n    (ld_options): Add --error-poison-system-directories.\n    (parse_args): Handle new option.\n\n2007-06-13  Joseph Myers  <joseph@codesourcery.com>\n\n    ld/\n    * config.in: Regenerate.\n    * ld.h (args_type): Add poison_system_directories.\n    * ld.texinfo (--no-poison-system-directories): Document.\n    * ldfile.c (ldfile_add_library_path): Check\n    command_line.poison_system_directories.\n    * ldmain.c (main): Initialize\n    command_line.poison_system_directories.\n    * lexsup.c (enum option_values): Add\n    OPTION_NO_POISON_SYSTEM_DIRECTORIES.\n    (ld_options): Add --no-poison-system-directories.\n    (parse_args): Handle new option.\n\n2007-04-20  Joseph Myers  <joseph@codesourcery.com>\n\n    Merge from Sourcery G++ binutils 2.17:\n\n    2007-03-20  Joseph Myers  <joseph@codesourcery.com>\n    Based on patch by Mark Hatle <mark.hatle@windriver.com>.\n    ld/\n    * configure.ac (--enable-poison-system-directories): New option.\n    * configure, config.in: Regenerate.\n    * ldfile.c (ldfile_add_library_path): If\n    ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,\n    /usr/lib, /usr/local/lib or /usr/X11R6/lib.\n\nSigned-off-by: Mark Hatle <mark.hatle@windriver.com>\nSigned-off-by: Scott Garman <scott.a.garman@intel.com>\n---\n ld/config.in    |  3 +++\n ld/configure    | 14 ++++++++++++++\n ld/configure.ac | 10 ++++++++++\n ld/ld.h         |  8 ++++++++\n ld/ld.texi      | 12 ++++++++++++\n ld/ldfile.c     | 17 +++++++++++++++++\n ld/ldlex.h      |  2 ++\n ld/ldmain.c     |  2 ++\n ld/lexsup.c     | 21 +++++++++++++++++++++\n 9 files changed, 89 insertions(+)\n\ndiff --git a/ld/config.in b/ld/config.in\nindex 7b60d778587..37b8e9b6f6c 100644\n--- a/ld/config.in\n+++ b/ld/config.in\n@@ -40,6 +40,9 @@\n    language is requested. */\n #undef ENABLE_NLS\n \n+/* Define to warn for use of native system library directories */\n+#undef ENABLE_POISON_SYSTEM_DIRECTORIES\n+\n /* Additional extension a shared object might have. */\n #undef EXTRA_SHLIB_EXTENSION\n \ndiff --git a/ld/configure b/ld/configure\nindex a8d248eab58..f52e1f3c18f 100755\n--- a/ld/configure\n+++ b/ld/configure\n@@ -828,6 +828,7 @@ with_lib_path\n enable_targets\n enable_64_bit_bfd\n with_sysroot\n+enable_poison_system_directories\n enable_gold\n enable_got\n enable_compressed_debug_sections\n@@ -1496,6 +1497,8 @@ Optional Features:\n   --disable-largefile     omit support for large files\n   --enable-targets        alternative target configurations\n   --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)\n+  --enable-poison-system-directories\n+                          warn for use of native system library directories\n   --enable-gold[=ARG]     build gold [ARG={default,yes,no}]\n   --enable-got=<type>     GOT handling scheme (target, single, negative,\n                           multigot)\n@@ -15841,7 +15844,18 @@ else\n fi\n \n \n+# Check whether --enable-poison-system-directories was given.\n+if test \"${enable_poison_system_directories+set}\" = set; then :\n+  enableval=$enable_poison_system_directories;\n+else\n+  enable_poison_system_directories=no\n+fi\n+\n+if test \"x${enable_poison_system_directories}\" = \"xyes\"; then\n \n+$as_echo \"#define ENABLE_POISON_SYSTEM_DIRECTORIES 1\" >>confdefs.h\n+\n+fi\n \n # Check whether --enable-got was given.\n if test \"${enable_got+set}\" = set; then :\ndiff --git a/ld/configure.ac b/ld/configure.ac\nindex c9c69ab9245..59dab0a6ac4 100644\n--- a/ld/configure.ac\n+++ b/ld/configure.ac\n@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot)\n AC_SUBST(TARGET_SYSTEM_ROOT)\n AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)\n \n+AC_ARG_ENABLE([poison-system-directories],\n+         AS_HELP_STRING([--enable-poison-system-directories],\n+                [warn for use of native system library directories]),,\n+         [enable_poison_system_directories=no])\n+if test \"x${enable_poison_system_directories}\" = \"xyes\"; then\n+  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],\n+       [1],\n+       [Define to warn for use of native system library directories])\n+fi\n+\n dnl Use --enable-gold to decide if this linker should be the default.\n dnl \"install_as_default\" is set to false if gold is the default linker.\n dnl \"installed_linker\" is the installed BFD linker name.\ndiff --git a/ld/ld.h b/ld/ld.h\nindex 93f5af92c7d..ff7f71a7b66 100644\n--- a/ld/ld.h\n+++ b/ld/ld.h\n@@ -166,6 +166,14 @@ typedef struct\n      in the linker script.  */\n   bfd_boolean force_group_allocation;\n \n+  /* If TRUE (the default) warn for uses of system directories when\n+     cross linking.  */\n+  bfd_boolean poison_system_directories;\n+\n+  /* If TRUE (default FALSE) give an error for uses of system\n+     directories when cross linking instead of a warning.  */\n+  bfd_boolean error_poison_system_directories;\n+\n   /* Big or little endian as set on command line.  */\n   enum endian_enum endian;\n \ndiff --git a/ld/ld.texi b/ld/ld.texi\nindex 7a602b9c6ab..cccbfbab3bb 100644\n--- a/ld/ld.texi\n+++ b/ld/ld.texi\n@@ -2810,6 +2810,18 @@ string identifying the original linked file does not change.\n \n Passing @code{none} for @var{style} disables the setting from any\n @code{--build-id} options earlier on the command line.\n+\n+@kindex --no-poison-system-directories\n+@item --no-poison-system-directories\n+Do not warn for @option{-L} options using system directories such as\n+@file{/usr/lib} when cross linking.  This option is intended for use\n+in chroot environments when such directories contain the correct\n+libraries for the target system rather than the host.\n+\n+@kindex --error-poison-system-directories\n+@item --error-poison-system-directories\n+Give an error instead of a warning for @option{-L} options using\n+system directories when cross linking.\n @end table\n \n @c man end\ndiff --git a/ld/ldfile.c b/ld/ldfile.c\nindex 81cb86d51e2..cd5c2752679 100644\n--- a/ld/ldfile.c\n+++ b/ld/ldfile.c\n@@ -117,6 +117,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline)\n     new_dirs->name = concat (ld_sysroot, name + strlen (\"$SYSROOT\"), (const char *) NULL);\n   else\n     new_dirs->name = xstrdup (name);\n+\n+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES\n+  if (command_line.poison_system_directories\n+  && ((!strncmp (name, \"/lib\", 4))\n+      || (!strncmp (name, \"/usr/lib\", 8))\n+      || (!strncmp (name, \"/usr/local/lib\", 14))\n+      || (!strncmp (name, \"/usr/X11R6/lib\", 14))))\n+   {\n+     if (command_line.error_poison_system_directories)\n+       einfo (_(\"%X%P: error: library search path \\\"%s\\\" is unsafe for \"\n+            \"cross-compilation\\n\"), name);\n+     else\n+       einfo (_(\"%P: warning: library search path \\\"%s\\\" is unsafe for \"\n+            \"cross-compilation\\n\"), name);\n+   }\n+#endif\n+\n }\n \n /* Try to open a BFD for a lang_input_statement.  */\ndiff --git a/ld/ldlex.h b/ld/ldlex.h\nindex b0101028321..77f5accb5d9 100644\n--- a/ld/ldlex.h\n+++ b/ld/ldlex.h\n@@ -161,6 +161,8 @@ enum option_values\n   OPTION_CTF_VARIABLES,\n   OPTION_NO_CTF_VARIABLES,\n   OPTION_CTF_SHARE_TYPES,\n+  OPTION_NO_POISON_SYSTEM_DIRECTORIES,\n+  OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,\n };\n \n /* The initial parser states.  */\ndiff --git a/ld/ldmain.c b/ld/ldmain.c\nindex 863df0293ea..f06f2546ef5 100644\n--- a/ld/ldmain.c\n+++ b/ld/ldmain.c\n@@ -323,6 +323,8 @@ main (int argc, char **argv)\n   command_line.warn_mismatch = TRUE;\n   command_line.warn_search_mismatch = TRUE;\n   command_line.check_section_addresses = -1;\n+  command_line.poison_system_directories = TRUE;\n+  command_line.error_poison_system_directories = FALSE;\n \n   /* We initialize DEMANGLING based on the environment variable\n      COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the\ndiff --git a/ld/lexsup.c b/ld/lexsup.c\nindex f005a58a045..eb383d3755b 100644\n--- a/ld/lexsup.c\n+++ b/ld/lexsup.c\n@@ -591,6 +591,14 @@ static const struct ld_option ld_options[] =\n \t\t   \"                                <method> is: share-unconflicted (default),\\n\"\n \t\t   \"                                             share-duplicated\"),\n     TWO_DASHES },\n+  { {\"no-poison-system-directories\", no_argument, NULL,\n+    OPTION_NO_POISON_SYSTEM_DIRECTORIES},\n+    '\\0', NULL, N_(\"Do not warn for -L options using system directories\"),\n+    TWO_DASHES },\n+  { {\"error-poison-system-directories\", no_argument, NULL,\n+    OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},\n+    '\\0', NULL, N_(\"Give an error for -L options using system directories\"),\n+    TWO_DASHES },\n };\n \n #define OPTION_COUNT ARRAY_SIZE (ld_options)\n@@ -603,6 +611,7 @@ parse_args (unsigned argc, char **argv)\n   int ingroup = 0;\n   char *default_dirlist = NULL;\n   char *shortopts;\n+  char *BR_paranoid_env;\n   struct option *longopts;\n   struct option *really_longopts;\n   int last_optind;\n@@ -1633,6 +1642,14 @@ parse_args (unsigned argc, char **argv)\n \t  }\n \t  break;\n \n+\tcase OPTION_NO_POISON_SYSTEM_DIRECTORIES:\n+\t  command_line.poison_system_directories = FALSE;\n+\t  break;\n+\n+\tcase OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:\n+\t  command_line.error_poison_system_directories = TRUE;\n+\t  break;\n+\n \tcase OPTION_PUSH_STATE:\n \t  input_flags.pushed = xmemdup (&input_flags,\n \t\t\t\t\tsizeof (input_flags),\n@@ -1778,6 +1795,10 @@ parse_args (unsigned argc, char **argv)\n       command_line.soname = NULL;\n     }\n \n+  BR_paranoid_env = getenv(\"BR_COMPILER_PARANOID_UNSAFE_PATH\");\n+  if (BR_paranoid_env && strlen(BR_paranoid_env) > 0)\n+    command_line.error_poison_system_directories = TRUE;\n+\n   while (ingroup)\n     {\n       einfo (_(\"%P: missing --end-group; added as last command line option\\n\"));\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/binutils/2.36.1/0003-or1k-Fix-issue-with-plt-link-failure-for-local-calls.patch",
    "content": "From b5fdaa85790dff45fd2c3fd15405c16dbc50a074 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:02:14 +0900\nSubject: [PATCH] or1k: Fix issue with plt link failure for local calls\n\nWhen building protobuf we were seeing the assert failure:\n\n    /home/giuliobenetti/git/upstream/or1k-binutils-2.36.1/host/lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld:\n    BFD (GNU Binutils) 2.36.1 assertion fail elf32-or1k.c:2377\n    /home/giuliobenetti/git/upstream/or1k-binutils-2.36.1/host/lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld:\n    BFD (GNU Binutils) 2.36.1 assertion fail elf32-or1k.c:2377\n    /home/giuliobenetti/git/upstream/or1k-binutils-2.36.1/host/lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld:\n    BFD (GNU Binutils) 2.36.1 assertion fail elf32-or1k.c:2377\n    collect2: error: ld returned 1 exit status\n\nThis failure happens while writing out PLT entries, there is a check\n\"BFD_ASSERT (h->dynindx != -1)\" to confirm all plt entries have dynamic\nsymbol attributes.  This was failing for symbols that were\n\"forced_local\" in previous linking code.\n\nThe fix adds logic to or1k_elf_adjust_dynamic_symbol to identify\n\"forced_local\" symbols and exclude them from the the PLT.\n\nbfd/ChangeLog:\n\n\tPR 27624\n\t* elf32-or1k.c (or1k_elf_adjust_dynamic_symbol): Change\n\tcondition used to cleanup plt entries to cleanup forced local\n\tentries.\n\nCc: Giulio Benetti <giulio.benetti@benettiengineering.com>\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 9 ++++-----\n 1 file changed, 4 insertions(+), 5 deletions(-)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 65938e51378..4f82cc4c667 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -2566,11 +2566,10 @@ or1k_elf_adjust_dynamic_symbol (struct bfd_link_info *info,\n   if (h->type == STT_FUNC\n       || h->needs_plt)\n     {\n-      if (! bfd_link_pic (info)\n-\t  && !h->def_dynamic\n-\t  && !h->ref_dynamic\n-\t  && h->root.type != bfd_link_hash_undefweak\n-\t  && h->root.type != bfd_link_hash_undefined)\n+      if (h->plt.refcount <= 0\n+\t  || (SYMBOL_CALLS_LOCAL (info, h)\n+\t  || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT\n+\t      && h->root.type == bfd_link_hash_undefweak)))\n \t{\n \t  /* This case can occur if we saw a PLT reloc in an input\n \t     file, but the symbol was never referred to by a dynamic\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.36.1/0004-or1k-Implement-relocation-R_OR1K_GOT_AHI16-for-gotha.patch",
    "content": "From 141dee7402871c7b3994838c3eddf64a92d67be7 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:02:15 +0900\nSubject: [PATCH] or1k: Implement relocation R_OR1K_GOT_AHI16 for gotha()\n\nThe gotha() relocation mnemonic will be outputted by OpenRISC GCC when\nusing the -mcmodel=large option.  This relocation is used along with\ngot() to generate 32-bit GOT offsets.  This increases the previous GOT\noffset limit from the previous 16-bit (64K) limit.\n\nThis is needed on large binaries where the GOT grows larger than 64k.\n\nbfd/ChangeLog:\n\n\tPR 21464\n\t* bfd-in2.h: Add BFD_RELOC_OR1K_GOT_AHI16 relocation.\n\t* elf32-or1k.c (or1k_elf_howto_table, or1k_reloc_map): Likewise.\n\t(or1k_final_link_relocate, or1k_elf_relocate_section,\n\tor1k_elf_check_relocs): Likewise.\n\t* libbfd.h (bfd_reloc_code_real_names): Likewise.\n\t* reloc.c: Likewise.\n\ncpu/ChangeLog:\n\n\tPR 21464\n\t* or1k.opc (or1k_imm16_relocs, parse_reloc): Define parse logic\n\tfor gotha() relocation.\n\ninclude/ChangeLog:\n\n\tPR 21464\n\t* elf/or1k.h (elf_or1k_reloc_type): Define R_OR1K_GOT_AHI16 number.\n\nopcodes/ChangeLog:\n\n\tPR 21464\n\t* or1k-asm.c: Regenerate.\n\ngas/ChangeLog:\n\n\tPR 21464\n\t* testsuite/gas/or1k/reloc-1.s: Add test for new relocation.\n\t* testsuite/gas/or1k/reloc-1.d: Add test result for new\n\trelocation.\n\nCc: Giulio Benetti <giulio.benetti@benettiengineering.com>\n\nfixup reloc, add tests\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/bfd-in2.h                    |  1 +\n bfd/elf32-or1k.c                 | 21 ++++++++++++++++++++-\n bfd/libbfd.h                     |  1 +\n bfd/reloc.c                      |  2 ++\n cpu/or1k.opc                     |  7 ++++++-\n gas/testsuite/gas/or1k/reloc-1.d |  4 +++-\n gas/testsuite/gas/or1k/reloc-1.s |  4 ++++\n include/elf/or1k.h               |  1 +\n opcodes/or1k-asm.c               |  7 ++++++-\n 9 files changed, 44 insertions(+), 4 deletions(-)\n\ndiff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h\nindex 7eff85b7eaa..e76b9e7a319 100644\n--- a/bfd/bfd-in2.h\n+++ b/bfd/bfd-in2.h\n@@ -5048,6 +5048,7 @@ then it may be truncated to 8 bits.  */\n   BFD_RELOC_OR1K_TLS_TPOFF,\n   BFD_RELOC_OR1K_TLS_DTPOFF,\n   BFD_RELOC_OR1K_TLS_DTPMOD,\n+  BFD_RELOC_OR1K_GOT_AHI16,\n \n /* H8 elf Relocations.  */\n   BFD_RELOC_H8_DIR16A8,\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 4f82cc4c667..48461854a96 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -808,6 +808,20 @@ static reloc_howto_type or1k_elf_howto_table[] =\n \t 0,\t\t\t/* Source Mask.  */\n \t 0x03ffffff,\t\t/* Dest Mask.  */\n \t TRUE),\t\t\t/* PC relative offset?  */\n+\n+  HOWTO (R_OR1K_GOT_AHI16,     /* type */\n+\t16,                    /* rightshift */\n+\t2,                     /* size (0 = byte, 1 = short, 2 = long) */\n+\t16,                    /* bitsize */\n+\tFALSE,                 /* pc_relative */\n+\t0,                     /* bitpos */\n+\tcomplain_overflow_signed, /* complain_on_overflow */\n+\tbfd_elf_generic_reloc, /* special_function */\n+\t\"R_OR1K_GOT_AHI16\",    /* name */\n+\tFALSE,                 /* partial_inplace */\n+\t0,                     /* src_mask */\n+\t0xffff,                /* dst_mask */\n+\tFALSE),                /* pcrel_offset */\n };\n \n /* Map BFD reloc types to Or1k ELF reloc types.  */\n@@ -871,6 +885,7 @@ static const struct or1k_reloc_map or1k_reloc_map[] =\n   { BFD_RELOC_OR1K_TLS_IE_LO13,\tR_OR1K_TLS_IE_LO13 },\n   { BFD_RELOC_OR1K_SLO13,\tR_OR1K_SLO13 },\n   { BFD_RELOC_OR1K_PLTA26,\tR_OR1K_PLTA26 },\n+  { BFD_RELOC_OR1K_GOT_AHI16,\tR_OR1K_GOT_AHI16 },\n };\n \n /* tls_type is a mask used to track how each symbol is accessed,\n@@ -1111,6 +1126,7 @@ or1k_final_link_relocate (reloc_howto_type *howto, bfd *input_bfd,\n   switch (howto->type)\n     {\n     case R_OR1K_AHI16:\n+    case R_OR1K_GOT_AHI16:\n     case R_OR1K_GOTOFF_AHI16:\n     case R_OR1K_TLS_IE_AHI16:\n     case R_OR1K_TLS_LE_AHI16:\n@@ -1373,6 +1389,7 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t    }\n \t  break;\n \n+\tcase R_OR1K_GOT_AHI16:\n \tcase R_OR1K_GOT16:\n \tcase R_OR1K_GOT_PG21:\n \tcase R_OR1K_GOT_LO13:\n@@ -1464,7 +1481,8 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t    /* The GOT_PG21 and GOT_LO13 relocs are pc-relative,\n \t       while the GOT16 reloc is GOT relative.  */\n \t    relocation = got_base + off;\n-\t    if (r_type == R_OR1K_GOT16)\n+\t    if (r_type == R_OR1K_GOT16\n+\t\t|| r_type == R_OR1K_GOT_AHI16)\n \t      relocation -= got_sym_value;\n \n \t  /* Addend should be zero.  */\n@@ -1990,6 +2008,7 @@ or1k_elf_check_relocs (bfd *abfd,\n \t    }\n \t  break;\n \n+\tcase R_OR1K_GOT_AHI16:\n \tcase R_OR1K_GOT16:\n \tcase R_OR1K_GOT_PG21:\n \tcase R_OR1K_GOT_LO13:\ndiff --git a/bfd/libbfd.h b/bfd/libbfd.h\nindex 7271a2ad5a1..e0ee2dafc07 100644\n--- a/bfd/libbfd.h\n+++ b/bfd/libbfd.h\n@@ -2757,6 +2757,7 @@ static const char *const bfd_reloc_code_real_names[] = { \"@@uninitialized@@\",\n   \"BFD_RELOC_OR1K_TLS_TPOFF\",\n   \"BFD_RELOC_OR1K_TLS_DTPOFF\",\n   \"BFD_RELOC_OR1K_TLS_DTPMOD\",\n+  \"BFD_RELOC_OR1K_GOT_AHI16\",\n   \"BFD_RELOC_H8_DIR16A8\",\n   \"BFD_RELOC_H8_DIR16R8\",\n   \"BFD_RELOC_H8_DIR24A8\",\ndiff --git a/bfd/reloc.c b/bfd/reloc.c\nindex 4f4b95a0b7f..fe94e0d8f91 100644\n--- a/bfd/reloc.c\n+++ b/bfd/reloc.c\n@@ -6204,6 +6204,8 @@ ENUMX\n   BFD_RELOC_OR1K_GOTPC_HI16\n ENUMX\n   BFD_RELOC_OR1K_GOTPC_LO16\n+ENUMX\n+  BFD_RELOC_OR1K_GOT_AHI16\n ENUMX\n   BFD_RELOC_OR1K_GOT16\n ENUMX\ndiff --git a/cpu/or1k.opc b/cpu/or1k.opc\nindex f0adcbb00a5..5d20a1f33a7 100644\n--- a/cpu/or1k.opc\n+++ b/cpu/or1k.opc\n@@ -193,7 +193,7 @@ static const bfd_reloc_code_real_type or1k_imm16_relocs[][6] = {\n     BFD_RELOC_OR1K_GOT_LO13,\n     BFD_RELOC_UNUSED,\n     BFD_RELOC_UNUSED,\n-    BFD_RELOC_UNUSED },\n+    BFD_RELOC_OR1K_GOT_AHI16 },\n   { BFD_RELOC_OR1K_GOTPC_LO16,\n     BFD_RELOC_UNUSED,\n     BFD_RELOC_UNUSED,\n@@ -296,6 +296,11 @@ parse_reloc (const char **strp)\n \tstr += 5;\n \tcls = RCLASS_TPOFF;\n       }\n+    else if (strncasecmp (str, \"got\", 3) == 0)\n+      {\n+\tstr += 3;\n+\tcls = RCLASS_GOT;\n+      }\n \n     if (strncasecmp (str, \"hi(\", 3) == 0)\n       {\ndiff --git a/gas/testsuite/gas/or1k/reloc-1.d b/gas/testsuite/gas/or1k/reloc-1.d\nindex d1bcf5608bb..3a001c4ed99 100644\n--- a/gas/testsuite/gas/or1k/reloc-1.d\n+++ b/gas/testsuite/gas/or1k/reloc-1.d\n@@ -68,5 +68,7 @@ OFFSET   TYPE              VALUE\n 000000ec R_OR1K_LO13       x\n 000000f0 R_OR1K_GOT_LO13   x\n 000000f4 R_OR1K_SLO13      x\n-\n+000000f8 R_OR1K_GOT_AHI16  x\n+000000fc R_OR1K_GOT_AHI16  x\n+00000100 R_OR1K_GOT_AHI16  x\n \ndiff --git a/gas/testsuite/gas/or1k/reloc-1.s b/gas/testsuite/gas/or1k/reloc-1.s\nindex e76abef6532..562609aa869 100644\n--- a/gas/testsuite/gas/or1k/reloc-1.s\n+++ b/gas/testsuite/gas/or1k/reloc-1.s\n@@ -74,3 +74,7 @@\n \tl.lbz\tr5,po(x)(r3)\n \tl.lbz\tr5,gotpo(x)(r3)\n \tl.sb\tpo(x)(r3),r6\n+\n+\tl.movhi\tr4,gotha(x)\n+\tl.ori\tr3,r4,gotha(x)\n+\tl.addi\tr3,r4,gotha(x)\ndiff --git a/include/elf/or1k.h b/include/elf/or1k.h\nindex 7f281481061..69ab90584a2 100644\n--- a/include/elf/or1k.h\n+++ b/include/elf/or1k.h\n@@ -77,6 +77,7 @@ START_RELOC_NUMBERS (elf_or1k_reloc_type)\n   RELOC_NUMBER (R_OR1K_TLS_IE_LO13,   51)\n   RELOC_NUMBER (R_OR1K_SLO13,         52)\n   RELOC_NUMBER (R_OR1K_PLTA26,        53)\n+  RELOC_NUMBER (R_OR1K_GOT_AHI16,     54)\n END_RELOC_NUMBERS (R_OR1K_max)\n \n #define EF_OR1K_NODELAY (1UL << 0)\ndiff --git a/opcodes/or1k-asm.c b/opcodes/or1k-asm.c\nindex 045ab6230b6..fdccf67f9e1 100644\n--- a/opcodes/or1k-asm.c\n+++ b/opcodes/or1k-asm.c\n@@ -177,7 +177,7 @@ static const bfd_reloc_code_real_type or1k_imm16_relocs[][6] = {\n     BFD_RELOC_OR1K_GOT_LO13,\n     BFD_RELOC_UNUSED,\n     BFD_RELOC_UNUSED,\n-    BFD_RELOC_UNUSED },\n+    BFD_RELOC_OR1K_GOT_AHI16 },\n   { BFD_RELOC_OR1K_GOTPC_LO16,\n     BFD_RELOC_UNUSED,\n     BFD_RELOC_UNUSED,\n@@ -280,6 +280,11 @@ parse_reloc (const char **strp)\n \tstr += 5;\n \tcls = RCLASS_TPOFF;\n       }\n+    else if (strncasecmp (str, \"got\", 3) == 0)\n+      {\n+\tstr += 3;\n+\tcls = RCLASS_GOT;\n+      }\n \n     if (strncasecmp (str, \"hi(\", 3) == 0)\n       {\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.36.1/0005-or1k-Avoid-R_OR1K_GOT16-overflow-failures-in-presenc.patch",
    "content": "From de914df5f2ba23a9f6f1fbf6efdc22e1b045901c Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:02:16 +0900\nSubject: [PATCH] or1k: Avoid R_OR1K_GOT16 overflow failures in presence of\n R_OR1K_GOT_AHI16\n\nNow that we support R_OR1K_GOT_AHI16 we can relax the R_OR1K_GOT16\noverflow validation check if the section has R_OR1K_GOT_AHI16.\n\nWe cannot simple disable R_OR1K_GOT16 overflow validation as there will\nstill be binaries that will have only R_OR1K_GOT16.  The\nR_OR1K_GOT_AHI16 relocation will only be added by GCC when building with\nthe option -mcmodel=large.\n\nThis assumes that R_OR1K_GOT_AHI16 will come before R_OR1K_GOT16, which\nis the code pattern that will be emitted by GCC.\n\nbfd/ChangeLog:\n\n\tPR 21464\n\t* elf32-or1k.c (or1k_elf_relocate_section): Relax R_OR1K_GOT16\n\toverflow check if we have R_OR1K_GOT_AHI16 followed by\n\tR_OR1K_GOT16.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 11 +++++++++++\n 1 file changed, 11 insertions(+)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 48461854a96..44e67f2b84b 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -1278,6 +1278,7 @@ or1k_elf_relocate_section (bfd *output_bfd,\n   asection *sgot, *splt;\n   bfd_vma plt_base, got_base, got_sym_value;\n   bfd_boolean ret_val = TRUE;\n+  bfd_boolean saw_gotha = FALSE;\n \n   if (htab == NULL)\n     return FALSE;\n@@ -1485,6 +1486,16 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t\t|| r_type == R_OR1K_GOT_AHI16)\n \t      relocation -= got_sym_value;\n \n+\t    if (r_type == R_OR1K_GOT_AHI16)\n+\t      saw_gotha = TRUE;\n+\n+\t    /* If we have a R_OR1K_GOT16 followed by a R_OR1K_GOT_AHI16\n+\t       relocation we assume the code is doing the right thing to avoid\n+\t       overflows.  Here we mask the lower 16-bit of the relocation to\n+\t       avoid overflow validation failures.  */\n+\t    if (r_type == R_OR1K_GOT16 && saw_gotha)\n+\t      relocation &= 0xffff;\n+\n \t  /* Addend should be zero.  */\n \t  if (rel->r_addend != 0)\n \t    {\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.36.1/0006-or1k-Support-large-plt_relocs-when-generating-plt-en.patch",
    "content": "From 4a7b357d0c802685bee7706bafb9702c821286e1 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:02:17 +0900\nSubject: [PATCH] or1k: Support large plt_relocs when generating plt\n entries\n\nThe current PLT generation code will generate invalid code when the PLT\nrelocation offset exceeds 64k.  This fixes the issue by detecting large\nplt_reloc offsets and generare code sequences to create larger plt\nrelocations.\n\nThe \"large\" plt code needs 2 extra instructions to create 32-bit offsets.\n\nbfd/ChangeLog:\n\n\tPR 27746\n\t* elf32-or1k.c (PLT_ENTRY_SIZE_LARGE, PLT_MAX_INSN_COUNT,\n\tOR1K_ADD, OR1K_ORI): New macros to help with plt creation.\n\t(elf_or1k_link_hash_table): New field plt_count.\n\t(elf_or1k_link_hash_entry): New field plt_index.\n\t(elf_or1k_plt_entry_size): New function.\n\t(or1k_write_plt_entry): Update to support variable size PLTs.\n\t(or1k_elf_finish_dynamic_sections): Use new or1k_write_plt_entry\n\tAPI.\n\t(or1k_elf_finish_dynamic_symbol): Update to write large PLTs\n\twhen needed.\n\t(allocate_dynrelocs): Use elf_or1k_plt_entry_size to account for\n\tPLT size.\n\nld/ChangeLog:\n\n\tPR 27746\n\ttestsuite/ld-or1k/or1k.exp (or1kplttests): Add tests for linking\n\talong with gotha() relocations.\n\ttestsuite/ld-or1k/gotha1.dd: New file.\n\ttestsuite/ld-or1k/gotha1.s: New file.\n\ttestsuite/ld-or1k/gotha2.dd: New file.\n\ttestsuite/ld-or1k/gotha2.s: New file\n\ttestsuite/ld-or1k/pltlib.s (x): Define size to avoid link\n\tfailure.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c               | 149 ++++++++++++++++++++++++---------\n ld/testsuite/ld-or1k/gotha1.dd |  34 ++++++++\n ld/testsuite/ld-or1k/gotha1.s  |  24 ++++++\n ld/testsuite/ld-or1k/gotha2.dd |  21 +++++\n ld/testsuite/ld-or1k/gotha2.s  |  22 +++++\n ld/testsuite/ld-or1k/or1k.exp  |   8 ++\n ld/testsuite/ld-or1k/pltlib.s  |   1 +\n 7 files changed, 220 insertions(+), 39 deletions(-)\n create mode 100644 ld/testsuite/ld-or1k/gotha1.dd\n create mode 100644 ld/testsuite/ld-or1k/gotha1.s\n create mode 100644 ld/testsuite/ld-or1k/gotha2.dd\n create mode 100644 ld/testsuite/ld-or1k/gotha2.s\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 44e67f2b84b..3da68e52425 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -30,10 +30,14 @@\n #define N_ONES(X)\t(((bfd_vma)2 << (X)) - 1)\n \n #define PLT_ENTRY_SIZE 16\n+#define PLT_ENTRY_SIZE_LARGE (6*4)\n+#define PLT_MAX_INSN_COUNT 6\n \n #define OR1K_MOVHI(D)\t\t(0x18000000 | (D << 21))\n #define OR1K_ADRP(D)\t\t(0x08000000 | (D << 21))\n #define OR1K_LWZ(D,A)\t\t(0x84000000 | (D << 21) | (A << 16))\n+#define OR1K_ADD(D,A,B)\t\t(0xE0000000 | (D << 21) | (A << 16) | (B << 11))\n+#define OR1K_ORI(D,A)\t\t(0xA8000000 | (D << 21) | (A << 16))\n #define OR1K_ORI0(D)\t\t(0xA8000000 | (D << 21))\n #define OR1K_JR(B)\t\t(0x44000000 | (B << 11))\n #define OR1K_NOP\t\t0x15000000\n@@ -907,6 +911,8 @@ struct elf_or1k_link_hash_entry\n {\n   struct elf_link_hash_entry root;\n \n+  /* For calculating PLT size.  */\n+  bfd_vma plt_index;\n   /* Track type of TLS access.  */\n   unsigned char tls_type;\n };\n@@ -931,9 +937,20 @@ struct elf_or1k_link_hash_table\n {\n   struct elf_link_hash_table root;\n \n+  bfd_vma plt_count;\n   bfd_boolean saw_plta;\n };\n \n+static size_t\n+elf_or1k_plt_entry_size (bfd_vma plt_index)\n+{\n+  bfd_vma plt_reloc;\n+\n+  plt_reloc = plt_index * sizeof (Elf32_External_Rela);\n+\n+  return (plt_reloc > 0xffff) ? PLT_ENTRY_SIZE_LARGE : PLT_ENTRY_SIZE;\n+}\n+\n /* Get the ELF linker hash table from a link_info structure.  */\n #define or1k_elf_hash_table(p) \\\n   ((is_elf_hash_table ((p)->hash)\t\t\t\t\t\\\n@@ -2222,33 +2239,46 @@ or1k_elf_check_relocs (bfd *abfd,\n }\n \n static void\n-or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insn1,\n-\t\t      unsigned insn2, unsigned insn3, unsigned insnj)\n+or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,\n+\t\t      unsigned insns[], size_t insn_count)\n {\n   unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY;\n-  unsigned insn4;\n+  unsigned output_insns[PLT_MAX_INSN_COUNT];\n+\n+  /* Copy instructions into the output buffer.  */\n+  for (size_t i = 0; i < insn_count; i++)\n+    output_insns[i] = insns[i];\n \n   /* Honor the no-delay-slot setting.  */\n-  if (insn3 == OR1K_NOP)\n+  if (insns[insn_count-1] == OR1K_NOP)\n     {\n-      insn4 = insn3;\n+      unsigned slot1, slot2;\n+\n       if (nodelay)\n-\tinsn3 = insnj;\n+\tslot1 = insns[insn_count-2], slot2 = insnj;\n       else\n-\tinsn3 = insn2, insn2 = insnj;\n+\tslot1 = insnj, slot2 = insns[insn_count-2];\n+\n+      output_insns[insn_count-2] = slot1;\n+      output_insns[insn_count-1] = slot2;\n+      output_insns[insn_count]   = OR1K_NOP;\n     }\n   else\n     {\n+      unsigned slot1, slot2;\n+\n       if (nodelay)\n-\tinsn4 = insnj;\n+\tslot1 = insns[insn_count-1], slot2 = insnj;\n       else\n-\tinsn4 = insn3, insn3 = insnj;\n+\tslot1 = insnj, slot2 = insns[insn_count-1];\n+\n+      output_insns[insn_count-1] = slot1;\n+      output_insns[insn_count]   = slot2;\n     }\n \n-  bfd_put_32 (output_bfd, insn1, contents);\n-  bfd_put_32 (output_bfd, insn2, contents + 4);\n-  bfd_put_32 (output_bfd, insn3, contents + 8);\n-  bfd_put_32 (output_bfd, insn4, contents + 12);\n+  /* Write out the output buffer.  */\n+  for (size_t i = 0; i < (insn_count+1); i++)\n+    bfd_put_32 (output_bfd, output_insns[i], contents + (i*4));\n }\n \n /* Finish up the dynamic sections.  */\n@@ -2315,7 +2345,8 @@ or1k_elf_finish_dynamic_sections (bfd *output_bfd,\n       splt = htab->root.splt;\n       if (splt && splt->size > 0)\n \t{\n-\t  unsigned plt0, plt1, plt2;\n+\t  unsigned plt[PLT_MAX_INSN_COUNT];\n+\t  size_t plt_insn_count = 3;\n \t  bfd_vma got_addr = sgot->output_section->vma + sgot->output_offset;\n \n \t  /* Note we force 16 byte alignment on the .got, so that\n@@ -2326,27 +2357,27 @@ or1k_elf_finish_dynamic_sections (bfd *output_bfd,\n \t      bfd_vma pc = splt->output_section->vma + splt->output_offset;\n \t      unsigned pa = ((got_addr >> 13) - (pc >> 13)) & 0x1fffff;\n \t      unsigned po = got_addr & 0x1fff;\n-\t      plt0 = OR1K_ADRP(12) | pa;\n-\t      plt1 = OR1K_LWZ(15,12) | (po + 8);\n-\t      plt2 = OR1K_LWZ(12,12) | (po + 4);\n+\t      plt[0] = OR1K_ADRP(12) | pa;\n+\t      plt[1] = OR1K_LWZ(15,12) | (po + 8);\n+\t      plt[2] = OR1K_LWZ(12,12) | (po + 4);\n \t    }\n \t  else if (bfd_link_pic (info))\n \t    {\n-\t      plt0 = OR1K_LWZ(15, 16) | 8;\t/* .got+8 */\n-\t      plt1 = OR1K_LWZ(12, 16) | 4;\t/* .got+4 */\n-\t      plt2 = OR1K_NOP;\n+\t      plt[0] = OR1K_LWZ(15, 16) | 8;\t/* .got+8 */\n+\t      plt[1] = OR1K_LWZ(12, 16) | 4;\t/* .got+4 */\n+\t      plt[2] = OR1K_NOP;\n \t    }\n \t  else\n \t    {\n \t      unsigned ha = ((got_addr + 0x8000) >> 16) & 0xffff;\n \t      unsigned lo = got_addr & 0xffff;\n-\t      plt0 = OR1K_MOVHI(12) | ha;\n-\t      plt1 = OR1K_LWZ(15,12) | (lo + 8);\n-\t      plt2 = OR1K_LWZ(12,12) | (lo + 4);\n+\t      plt[0] = OR1K_MOVHI(12) | ha;\n+\t      plt[1] = OR1K_LWZ(15,12) | (lo + 8);\n+\t      plt[2] = OR1K_LWZ(12,12) | (lo + 4);\n \t    }\n \n-\t  or1k_write_plt_entry (output_bfd, splt->contents,\n-\t\t\t\tplt0, plt1, plt2, OR1K_JR(15));\n+\t  or1k_write_plt_entry (output_bfd, splt->contents, OR1K_JR(15),\n+\t\t\t\tplt, plt_insn_count);\n \n \t  elf_section_data (splt->output_section)->this_hdr.sh_entsize = 4;\n \t}\n@@ -2389,7 +2420,8 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n \n   if (h->plt.offset != (bfd_vma) -1)\n     {\n-      unsigned int plt0, plt1, plt2;\n+      unsigned int plt[PLT_MAX_INSN_COUNT];\n+      size_t plt_insn_count = 3;\n       asection *splt;\n       asection *sgot;\n       asection *srela;\n@@ -2401,6 +2433,7 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n       bfd_vma got_offset;\n       bfd_vma got_addr;\n       Elf_Internal_Rela rela;\n+      bfd_boolean large_plt_entry;\n \n       /* This symbol has an entry in the procedure linkage table.  Set\n \t it up.  */\n@@ -2418,10 +2451,13 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n \t corresponds to this symbol.  This is the index of this symbol\n \t in all the symbols for which we are making plt entries.  The\n \t first entry in the procedure linkage table is reserved.  */\n-      plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1;\n+      plt_index = ((struct elf_or1k_link_hash_entry *) h)->plt_index;\n       plt_addr = plt_base_addr + h->plt.offset;\n       plt_reloc = plt_index * sizeof (Elf32_External_Rela);\n \n+      large_plt_entry = (elf_or1k_plt_entry_size (plt_index)\n+\t\t\t == PLT_ENTRY_SIZE_LARGE);\n+\n       /* Get the offset into the .got table of the entry that\n \tcorresponds to this function.  Each .got entry is 4 bytes.\n \tThe first three are reserved.  */\n@@ -2433,27 +2469,57 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd,\n \t{\n \t  unsigned pa = ((got_addr >> 13) - (plt_addr >> 13)) & 0x1fffff;\n \t  unsigned po = (got_addr & 0x1fff);\n-\t  plt0 = OR1K_ADRP(12) | pa;\n-\t  plt1 = OR1K_LWZ(12,12) | po;\n-\t  plt2 = OR1K_ORI0(11) | plt_reloc;\n+\t  plt[0] = OR1K_ADRP(12) | pa;\n+\t  plt[1] = OR1K_LWZ(12,12) | po;\n+\t  plt[2] = OR1K_ORI0(11) | plt_reloc;\n \t}\n       else if (bfd_link_pic (info))\n \t{\n-\t  plt0 = OR1K_LWZ(12,16) | got_offset;\n-\t  plt1 = OR1K_ORI0(11) | plt_reloc;\n-\t  plt2 = OR1K_NOP;\n+\t  if (large_plt_entry)\n+\t    {\n+\t      unsigned gotha = ((got_offset + 0x8000) >> 16) & 0xffff;\n+\t      unsigned got = got_offset & 0xffff;\n+\t      unsigned pltrelhi = (plt_reloc >> 16) & 0xffff;\n+\t      unsigned pltrello = plt_reloc & 0xffff;\n+\n+\t      plt[0] = OR1K_MOVHI(12) | gotha;\n+\t      plt[1] = OR1K_ADD(12,12,16);\n+\t      plt[2] = OR1K_LWZ(12,12) | got;\n+\t      plt[3] = OR1K_MOVHI(11) | pltrelhi;\n+\t      plt[4] = OR1K_ORI(11,11) | pltrello;\n+\t      plt_insn_count = 5;\n+\t    }\n+\t  else\n+\t    {\n+\t      plt[0] = OR1K_LWZ(12,16) | got_offset;\n+\t      plt[1] = OR1K_ORI0(11) | plt_reloc;\n+\t      plt[2] = OR1K_NOP;\n+\t    }\n \t}\n       else\n \t{\n \t  unsigned ha = ((got_addr + 0x8000) >> 16) & 0xffff;\n \t  unsigned lo = got_addr & 0xffff;\n-\t  plt0 = OR1K_MOVHI(12) | ha;\n-\t  plt1 = OR1K_LWZ(12,12) | lo;\n-\t  plt2 = OR1K_ORI0(11) | plt_reloc;\n+\t  plt[0] = OR1K_MOVHI(12) | ha;\n+\t  plt[1] = OR1K_LWZ(12,12) | lo;\n+\t  plt[2] = OR1K_ORI0(11) | plt_reloc;\n+\t}\n+\n+      /* For large code model we fixup the non-PIC PLT relocation instructions\n+\t here.  */\n+      if (large_plt_entry && !bfd_link_pic (info))\n+\t{\n+\t  unsigned pltrelhi = (plt_reloc >> 16) & 0xffff;\n+\t  unsigned pltrello = plt_reloc & 0xffff;\n+\n+\t  plt[2] = OR1K_MOVHI(11) | pltrelhi;\n+\t  plt[3] = OR1K_ORI(11,11) | pltrello;\n+\t  plt[4] = OR1K_NOP;\n+\t  plt_insn_count = 5;\n \t}\n \n       or1k_write_plt_entry (output_bfd, splt->contents + h->plt.offset,\n-\t\t\t    plt0, plt1, plt2, OR1K_JR(12));\n+\t\t\t    OR1K_JR(12), plt, plt_insn_count);\n \n       /* Fill in the entry in the global offset table.  We initialize it to\n \t point to the top of the plt.  This is done to lazy lookup the actual\n@@ -2777,11 +2843,16 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)\n       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))\n \t{\n \t  asection *splt = htab->root.splt;\n+\t  bfd_vma plt_index;\n+\n+\t  /* Track the index of our plt entry for use in calculating size.  */\n+\t  plt_index = htab->plt_count++;\n+\t  ((struct elf_or1k_link_hash_entry *) h)->plt_index = plt_index;\n \n \t  /* If this is the first .plt entry, make room for the special\n \t     first entry.  */\n \t  if (splt->size == 0)\n-\t    splt->size = PLT_ENTRY_SIZE;\n+\t    splt->size = elf_or1k_plt_entry_size (plt_index);\n \n \t  h->plt.offset = splt->size;\n \n@@ -2798,7 +2869,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)\n \t    }\n \n \t  /* Make room for this entry.  */\n-\t  splt->size += PLT_ENTRY_SIZE;\n+\t  splt->size += elf_or1k_plt_entry_size (plt_index);\n \n \t  /* We also need to make an entry in the .got.plt section, which\n \t     will be placed in the .got section by the linker script.  */\ndiff --git a/ld/testsuite/ld-or1k/gotha1.dd b/ld/testsuite/ld-or1k/gotha1.dd\nnew file mode 100644\nindex 00000000000..0ad1f8f5399\n--- /dev/null\n+++ b/ld/testsuite/ld-or1k/gotha1.dd\n@@ -0,0 +1,34 @@\n+\n+.*\\.x:     file format elf32-or1k\n+\n+\n+Disassembly of section \\.plt:\n+\n+[0-9a-f]+ <\\.plt>:\n+ +[0-9a-f]+:\t19 80 00 00 \tl\\.movhi r12,0x0\n+ +[0-9a-f]+:\t85 ec [0-9a-f]+ [0-9a-f]+ \tl\\.lwz r15,[0-9]+\\(r12\\)\n+ +[0-9a-f]+:\t44 00 78 00 \tl\\.jr r15\n+ +[0-9a-f]+:\t85 8c [0-9a-f]+ [0-9a-f]+ \tl\\.lwz r12,[0-9]+\\(r12\\)\n+ +[0-9a-f]+:\t19 80 00 00 \tl\\.movhi r12,0x0\n+ +[0-9a-f]+:\t85 8c [0-9a-f]+ [0-9a-f]+ \tl\\.lwz r12,[0-9]+\\(r12\\)\n+ +[0-9a-f]+:\t44 00 60 00 \tl\\.jr r12\n+ +[0-9a-f]+:\ta9 60 00 00 \tl\\.ori r11,r0,0x0\n+\n+Disassembly of section \\.text:\n+\n+[0-9a-f]+ <_start>:\n+ +[0-9a-f]+:\t9c 21 ff fc \tl\\.addi r1,r1,-4\n+ +[0-9a-f]+:\td4 01 48 00 \tl\\.sw 0\\(r1\\),r9\n+ +[0-9a-f]+:\t04 00 00 02 \tl\\.jal [0-9a-f]+ <_start\\+0x10>\n+ +[0-9a-f]+:\t1a 60 00 00 \tl\\.movhi r19,0x0\n+ +[0-9a-f]+:\taa 73 [0-9a-f]+ [0-9a-f]+ \tl\\.ori r19,r19,0x[0-9a-f]+\n+ +[0-9a-f]+:\te2 73 48 00 \tl\\.add r19,r19,r9\n+ +[0-9a-f]+:\t1a 20 00 00 \tl\\.movhi r17,0x0\n+ +[0-9a-f]+:\te2 31 98 00 \tl\\.add r17,r17,r19\n+ +[0-9a-f]+:\t86 31 00 10 \tl\\.lwz r17,16\\(r17\\)\n+ +[0-9a-f]+:\t84 71 00 00 \tl\\.lwz r3,0\\(r17\\)\n+ +[0-9a-f]+:\t07 ff ff f2 \tl\\.jal [0-9a-f]+ <\\.plt\\+0x10>\n+ +[0-9a-f]+:\t15 00 00 00 \tl\\.nop 0x0\n+ +[0-9a-f]+:\t85 21 00 00 \tl\\.lwz r9,0\\(r1\\)\n+ +[0-9a-f]+:\t44 00 48 00 \tl\\.jr r9\n+ +[0-9a-f]+:\t9c 21 00 04 \tl\\.addi r1,r1,4\ndiff --git a/ld/testsuite/ld-or1k/gotha1.s b/ld/testsuite/ld-or1k/gotha1.s\nnew file mode 100644\nindex 00000000000..42b16db425c\n--- /dev/null\n+++ b/ld/testsuite/ld-or1k/gotha1.s\n@@ -0,0 +1,24 @@\n+\t.data\n+\t.p2align 16\n+\n+\t.text\n+\t.globl\t_start\n+_start:\n+\tl.addi\tr1, r1, -4\n+\tl.sw\t0(r1), r9\n+\n+\tl.jal\t8\n+\t l.movhi\tr19, gotpchi(_GLOBAL_OFFSET_TABLE_-4)\n+\tl.ori\tr19, r19, gotpclo(_GLOBAL_OFFSET_TABLE_+0)\n+\tl.add\tr19, r19, r9\n+\n+\tl.movhi\tr17, gotha(x)\n+\tl.add\tr17, r17, r19\n+\tl.lwz\tr17, got(x)(r17)\n+\tl.lwz\tr3, 0(r17)\n+\n+\tl.jal\tplt(func)\n+\t l.nop\n+\tl.lwz\tr9, 0(r1)\n+\tl.jr\tr9\n+\t l.addi\tr1, r1, 4\ndiff --git a/ld/testsuite/ld-or1k/gotha2.dd b/ld/testsuite/ld-or1k/gotha2.dd\nnew file mode 100644\nindex 00000000000..fe09da5466b\n--- /dev/null\n+++ b/ld/testsuite/ld-or1k/gotha2.dd\n@@ -0,0 +1,21 @@\n+\n+.*\\.x:     file format elf32-or1k\n+\n+\n+Disassembly of section \\.text:\n+\n+[0-9a-f]+ <test>:\n+ +[0-9a-f]+:\t9c 21 ff f8 \tl\\.addi r1,r1,-8\n+ +[0-9a-f]+:\td4 01 80 00 \tl\\.sw 0\\(r1\\),r16\n+ +[0-9a-f]+:\td4 01 48 04 \tl\\.sw 4\\(r1\\),r9\n+ +[0-9a-f]+:\t04 00 [0-9a-f]+ [0-9a-f]+ \tl\\.jal [0-9a-f]+ <test\\+0x14>\n+ +[0-9a-f]+:\t1a 00 00 00 \tl\\.movhi r16,0x0\n+ +[0-9a-f]+:\taa 10 [0-9a-f]+ [0-9a-f]+ \tl\\.ori r16,r16,0x[0-9a-f]+\n+ +[0-9a-f]+:\te2 10 48 00 \tl\\.add r16,r16,r9\n+ +[0-9a-f]+:\t1a 20 00 00 \tl\\.movhi r17,0x0\n+ +[0-9a-f]+:\te2 31 80 00 \tl\\.add r17,r17,r16\n+ +[0-9a-f]+:\t86 31 00 0c \tl\\.lwz r17,12\\(r17\\)\n+ +[0-9a-f]+:\t85 21 00 04 \tl\\.lwz r9,4\\(r1\\)\n+ +[0-9a-f]+:\t86 01 00 00 \tl\\.lwz r16,0\\(r1\\)\n+ +[0-9a-f]+:\t44 00 48 00 \tl\\.jr r9\n+ +[0-9a-f]+:\t9c 21 00 08 \tl\\.addi r1,r1,8\ndiff --git a/ld/testsuite/ld-or1k/gotha2.s b/ld/testsuite/ld-or1k/gotha2.s\nnew file mode 100644\nindex 00000000000..164b282f2dd\n--- /dev/null\n+++ b/ld/testsuite/ld-or1k/gotha2.s\n@@ -0,0 +1,22 @@\n+\t.section\t.text\n+\t.align 4\n+\t.global\ttest\n+\t.type\ttest, @function\n+test:\n+\tl.addi\tr1, r1, -8\n+\tl.sw\t0(r1), r16\n+\tl.sw\t4(r1), r9\n+\n+\tl.jal\t8\n+\t l.movhi\tr16, gotpchi(_GLOBAL_OFFSET_TABLE_-4)\n+\tl.ori\tr16, r16, gotpclo(_GLOBAL_OFFSET_TABLE_+0)\n+\tl.add\tr16, r16, r9\n+\n+\tl.movhi\tr17, gotha(i)\n+\tl.add\tr17, r17, r16\n+\tl.lwz\tr17, got(i)(r17)\n+\n+\tl.lwz\tr9, 4(r1)\n+\tl.lwz\tr16, 0(r1)\n+\tl.jr\tr9\n+\t l.addi\tr1, r1, 8\ndiff --git a/ld/testsuite/ld-or1k/or1k.exp b/ld/testsuite/ld-or1k/or1k.exp\nindex 8bb943aacc9..f10949e89aa 100644\n--- a/ld/testsuite/ld-or1k/or1k.exp\n+++ b/ld/testsuite/ld-or1k/or1k.exp\n@@ -53,6 +53,14 @@ set or1kplttests {\n      \"\" {plt1.s}\n      {{objdump -dr plt1.x.dd}}\n      \"plt1.x\"}\n+    {\"gotha exec plt\" \"tmpdir/libpltlib.so\" \"\"\n+     \"\" {gotha1.s}\n+     {{objdump -dr gotha1.dd}}\n+     \"gotha1.x\"}\n+    {\"gotha -fpic -shared\" \"-fpic -shared\" \"\"\n+     \"\" {gotha2.s}\n+     {{objdump -dr gotha2.dd}}\n+     \"gotha2.x\"}\n }\n \n # Not implemented yet\ndiff --git a/ld/testsuite/ld-or1k/pltlib.s b/ld/testsuite/ld-or1k/pltlib.s\nindex baf76ca1af7..8b4d7ba48fd 100644\n--- a/ld/testsuite/ld-or1k/pltlib.s\n+++ b/ld/testsuite/ld-or1k/pltlib.s\n@@ -1,5 +1,6 @@\n \t.section .data\n \t.globl x, y\n+\t.size x, 4\n x:\t.long 33\n y:\t.long 44\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.36.1/0007-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch",
    "content": "From c3003947e4bad18faea4337fd2073feeb30ee078 Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@benettiengineering.com>\nDate: Wed, 9 Jun 2021 17:28:27 +0200\nSubject: [PATCH] bfd/elf32-or1k: fix building with gcc version < 5\n\nGcc version >= 5 has standard C mode not set to -std=gnu11, so if we use\nan old compiler(i.e. gcc 4.9) build fails on:\n```\nelf32-or1k.c:2251:3: error: 'for' loop initial declarations are only allowed in\nC99 or C11 mode\n    for (size_t i = 0; i < insn_count; i++)\n    ^\n```\n\nSo let's declare `size_t i` at the top of the function instead of inside\nfor loop.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 4ae7f324d33..32063ab0289 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -2244,9 +2244,10 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,\n {\n   unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY;\n   unsigned output_insns[PLT_MAX_INSN_COUNT];\n+  size_t i;\n \n   /* Copy instructions into the output buffer.  */\n-  for (size_t i = 0; i < insn_count; i++)\n+  for (i = 0; i < insn_count; i++)\n     output_insns[i] = insns[i];\n \n   /* Honor the no-delay-slot setting.  */\n@@ -2277,7 +2278,7 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,\n     }\n \n   /* Write out the output buffer.  */\n-  for (size_t i = 0; i < (insn_count+1); i++)\n+  for (i = 0; i < (insn_count+1); i++)\n     bfd_put_32 (output_bfd, output_insns[i], contents + (i*4));\n }\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.36.1/0008-or1k-fix-pc-relative-relocation-against-dynamic-on-P.patch",
    "content": "From 9af93e143a7fbdb75aa1ed37277f9250eb111628 Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@benettiengineering.com>\nDate: Sat, 10 Jul 2021 17:57:34 +0200\nSubject: [PATCH] or1k: fix pc-relative relocation against dynamic on PC\n relative 26 bit relocation\n\nWhen building openal we were seeing the assert failure:\n\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourcePausev\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourceStopv\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourceRewindv\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourcePlayv\ncollect2: error: ld returned 1 exit status\n\nThis happens because in R_OR1K_INSN_REL_26 case we can't reference local\nsymbol as previously done but we need to make sure that calls to actual\nsymbol always call the version of current object.\n\nbfd/Changelog:\n\n\t* elf32-or1k.c (or1k_elf_relocate_section): use a separate entry\n\t  in switch case R_OR1K_INSN_REL_26 where we need to check for\n\t  !SYMBOL_CALLS_LOCAL() instead of !SYMBOL_REFERENCES_LOCAL().\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 12 ++++++++++++\n 1 file changed, 12 insertions(+)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 4ae7f324d33..4f9092539f5 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -1543,6 +1543,18 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t  break;\n \n \tcase R_OR1K_INSN_REL_26:\n+\t  /* For a non-shared link, these will reference plt or call the\n+\t     version of actual object.  */\n+\t  if (bfd_link_pic (info) && !SYMBOL_CALLS_LOCAL (info, h))\n+\t    {\n+\t      _bfd_error_handler\n+\t\t(_(\"%pB: pc-relative relocation against dynamic symbol %s\"),\n+\t\t input_bfd, name);\n+\t      ret_val = FALSE;\n+\t      bfd_set_error (bfd_error_bad_value);\n+\t    }\n+\t  break;\n+\n \tcase R_OR1K_PCREL_PG21:\n \tcase R_OR1K_LO13:\n \tcase R_OR1K_SLO13:\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/binutils/2.37/0001-sh-conf.patch",
    "content": "From 33f3c1f804efc2e4f97849081589efb70cda31e5 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 25 Dec 2015 11:38:13 +0100\nSubject: [PATCH] sh-conf\n\nLikewise, binutils has no idea about any of these new targets either, so we\nfix that up too.. now we're able to actually build a real toolchain for\nsh2a_nofpu- and other more ineptly named toolchains (and yes, there are more\ninept targets than that one, really. Go look, I promise).\n\n[Romain: rebase on top of 2.32]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n[Thomas: rebase on top of 2.29, in which sh64 support was removed.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure    | 2 +-\n configure.ac | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/configure b/configure\nindex 3dd206525a7..6881ce632f5 100755\n--- a/configure\n+++ b/configure\n@@ -3892,7 +3892,7 @@ case \"${target}\" in\n   nvptx*-*-*)\n     noconfigdirs=\"$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc\"\n     ;;\n-  sh-*-*)\n+  sh*-*-*)\n     case \"${target}\" in\n       sh*-*-elf)\n          ;;\ndiff --git a/configure.ac b/configure.ac\nindex 797a624621e..1f9256bbf18 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1175,7 +1175,7 @@ case \"${target}\" in\n   nvptx*-*-*)\n     noconfigdirs=\"$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc\"\n     ;;\n-  sh-*-*)\n+  sh*-*-*)\n     case \"${target}\" in\n       sh*-*-elf)\n          ;;\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/binutils/2.37/0002-poison-system-directories.patch",
    "content": "From 4d8705ddb55897e8a74b617ab95736d520d9e1ea Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 25 Dec 2015 11:45:38 +0100\nSubject: [PATCH] poison-system-directories\n\nPatch adapted to binutils 2.23.2 and extended to use\nBR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni.\n\n[Romain: rebase on top of 2.33.1]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n[Gustavo: adapt to binutils 2.25]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\nUpstream-Status: Inappropriate [distribution: codesourcery]\n\nPatch originally created by Mark Hatle, forward-ported to\nbinutils 2.21 by Scott Garman.\n\npurpose:  warn for uses of system directories when cross linking\n\nCode Merged from Sourcery G++ binutils 2.19 - 4.4-277\n\n2008-07-02  Joseph Myers  <joseph@codesourcery.com>\n\n    ld/\n    * ld.h (args_type): Add error_poison_system_directories.\n    * ld.texinfo (--error-poison-system-directories): Document.\n    * ldfile.c (ldfile_add_library_path): Check\n    command_line.error_poison_system_directories.\n    * ldmain.c (main): Initialize\n    command_line.error_poison_system_directories.\n    * lexsup.c (enum option_values): Add\n    OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.\n    (ld_options): Add --error-poison-system-directories.\n    (parse_args): Handle new option.\n\n2007-06-13  Joseph Myers  <joseph@codesourcery.com>\n\n    ld/\n    * config.in: Regenerate.\n    * ld.h (args_type): Add poison_system_directories.\n    * ld.texinfo (--no-poison-system-directories): Document.\n    * ldfile.c (ldfile_add_library_path): Check\n    command_line.poison_system_directories.\n    * ldmain.c (main): Initialize\n    command_line.poison_system_directories.\n    * lexsup.c (enum option_values): Add\n    OPTION_NO_POISON_SYSTEM_DIRECTORIES.\n    (ld_options): Add --no-poison-system-directories.\n    (parse_args): Handle new option.\n\n2007-04-20  Joseph Myers  <joseph@codesourcery.com>\n\n    Merge from Sourcery G++ binutils 2.17:\n\n    2007-03-20  Joseph Myers  <joseph@codesourcery.com>\n    Based on patch by Mark Hatle <mark.hatle@windriver.com>.\n    ld/\n    * configure.ac (--enable-poison-system-directories): New option.\n    * configure, config.in: Regenerate.\n    * ldfile.c (ldfile_add_library_path): If\n    ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,\n    /usr/lib, /usr/local/lib or /usr/X11R6/lib.\n\nSigned-off-by: Mark Hatle <mark.hatle@windriver.com>\nSigned-off-by: Scott Garman <scott.a.garman@intel.com>\n---\n ld/config.in    |  3 +++\n ld/configure    | 14 ++++++++++++++\n ld/configure.ac | 10 ++++++++++\n ld/ld.h         |  8 ++++++++\n ld/ld.texi      | 12 ++++++++++++\n ld/ldfile.c     | 17 +++++++++++++++++\n ld/ldlex.h      |  2 ++\n ld/ldmain.c     |  2 ++\n ld/lexsup.c     | 21 +++++++++++++++++++++\n 9 files changed, 89 insertions(+)\n\ndiff --git a/ld/config.in b/ld/config.in\nindex 26d55a00d47..ffad464783c 100644\n--- a/ld/config.in\n+++ b/ld/config.in\n@@ -43,6 +43,9 @@\n    language is requested. */\n #undef ENABLE_NLS\n \n+/* Define to warn for use of native system library directories */\n+#undef ENABLE_POISON_SYSTEM_DIRECTORIES\n+\n /* Additional extension a shared object might have. */\n #undef EXTRA_SHLIB_EXTENSION\n \ndiff --git a/ld/configure b/ld/configure\nindex c197aaef3cb..882263aa43f 100755\n--- a/ld/configure\n+++ b/ld/configure\n@@ -829,6 +829,7 @@ with_lib_path\n enable_targets\n enable_64_bit_bfd\n with_sysroot\n+enable_poison_system_directories\n enable_gold\n enable_got\n enable_compressed_debug_sections\n@@ -1498,6 +1499,8 @@ Optional Features:\n   --enable-checking       enable run-time checks\n   --enable-targets        alternative target configurations\n   --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)\n+  --enable-poison-system-directories\n+                          warn for use of native system library directories\n   --enable-gold[=ARG]     build gold [ARG={default,yes,no}]\n   --enable-got=<type>     GOT handling scheme (target, single, negative,\n                           multigot)\n@@ -15236,7 +15239,18 @@ else\n fi\n \n \n+# Check whether --enable-poison-system-directories was given.\n+if test \"${enable_poison_system_directories+set}\" = set; then :\n+  enableval=$enable_poison_system_directories;\n+else\n+  enable_poison_system_directories=no\n+fi\n+\n+if test \"x${enable_poison_system_directories}\" = \"xyes\"; then\n \n+$as_echo \"#define ENABLE_POISON_SYSTEM_DIRECTORIES 1\" >>confdefs.h\n+\n+fi\n \n # Check whether --enable-got was given.\n if test \"${enable_got+set}\" = set; then :\ndiff --git a/ld/configure.ac b/ld/configure.ac\nindex 8ea97c43cd4..0f246db67d8 100644\n--- a/ld/configure.ac\n+++ b/ld/configure.ac\n@@ -106,6 +106,16 @@ AC_SUBST(use_sysroot)\n AC_SUBST(TARGET_SYSTEM_ROOT)\n AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)\n \n+AC_ARG_ENABLE([poison-system-directories],\n+         AS_HELP_STRING([--enable-poison-system-directories],\n+                [warn for use of native system library directories]),,\n+         [enable_poison_system_directories=no])\n+if test \"x${enable_poison_system_directories}\" = \"xyes\"; then\n+  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],\n+       [1],\n+       [Define to warn for use of native system library directories])\n+fi\n+\n dnl Use --enable-gold to decide if this linker should be the default.\n dnl \"install_as_default\" is set to false if gold is the default linker.\n dnl \"installed_linker\" is the installed BFD linker name.\ndiff --git a/ld/ld.h b/ld/ld.h\nindex 35fafebfaed..74e66405de6 100644\n--- a/ld/ld.h\n+++ b/ld/ld.h\n@@ -162,6 +162,14 @@ typedef struct\n      in the linker script.  */\n   bool force_group_allocation;\n \n+  /* If TRUE (the default) warn for uses of system directories when\n+     cross linking.  */\n+  bool poison_system_directories;\n+\n+  /* If TRUE (default FALSE) give an error for uses of system\n+     directories when cross linking instead of a warning.  */\n+  bool error_poison_system_directories;\n+\n   /* Big or little endian as set on command line.  */\n   enum endian_enum endian;\n \ndiff --git a/ld/ld.texi b/ld/ld.texi\nindex dd8f571d4e4..3ab210b41b9 100644\n--- a/ld/ld.texi\n+++ b/ld/ld.texi\n@@ -2863,6 +2863,18 @@ string identifying the original linked file does not change.\n \n Passing @code{none} for @var{style} disables the setting from any\n @code{--build-id} options earlier on the command line.\n+\n+@kindex --no-poison-system-directories\n+@item --no-poison-system-directories\n+Do not warn for @option{-L} options using system directories such as\n+@file{/usr/lib} when cross linking.  This option is intended for use\n+in chroot environments when such directories contain the correct\n+libraries for the target system rather than the host.\n+\n+@kindex --error-poison-system-directories\n+@item --error-poison-system-directories\n+Give an error instead of a warning for @option{-L} options using\n+system directories when cross linking.\n @end table\n \n @c man end\ndiff --git a/ld/ldfile.c b/ld/ldfile.c\nindex 9d0af06f1f6..7cdd3b1c1b1 100644\n--- a/ld/ldfile.c\n+++ b/ld/ldfile.c\n@@ -117,6 +117,23 @@ ldfile_add_library_path (const char *name, bool cmdline)\n     new_dirs->name = concat (ld_sysroot, name + strlen (\"$SYSROOT\"), (const char *) NULL);\n   else\n     new_dirs->name = xstrdup (name);\n+\n+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES\n+  if (command_line.poison_system_directories\n+  && ((!strncmp (name, \"/lib\", 4))\n+      || (!strncmp (name, \"/usr/lib\", 8))\n+      || (!strncmp (name, \"/usr/local/lib\", 14))\n+      || (!strncmp (name, \"/usr/X11R6/lib\", 14))))\n+   {\n+     if (command_line.error_poison_system_directories)\n+       einfo (_(\"%X%P: error: library search path \\\"%s\\\" is unsafe for \"\n+            \"cross-compilation\\n\"), name);\n+     else\n+       einfo (_(\"%P: warning: library search path \\\"%s\\\" is unsafe for \"\n+            \"cross-compilation\\n\"), name);\n+   }\n+#endif\n+\n }\n \n /* Try to open a BFD for a lang_input_statement.  */\ndiff --git a/ld/ldlex.h b/ld/ldlex.h\nindex 9e8bf5fb835..2f0fadfe0a3 100644\n--- a/ld/ldlex.h\n+++ b/ld/ldlex.h\n@@ -163,6 +163,8 @@ enum option_values\n   OPTION_CTF_VARIABLES,\n   OPTION_NO_CTF_VARIABLES,\n   OPTION_CTF_SHARE_TYPES,\n+  OPTION_NO_POISON_SYSTEM_DIRECTORIES,\n+  OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,\n };\n \n /* The initial parser states.  */\ndiff --git a/ld/ldmain.c b/ld/ldmain.c\nindex 42660eb9a3c..1aef9387f93 100644\n--- a/ld/ldmain.c\n+++ b/ld/ldmain.c\n@@ -321,6 +321,8 @@ main (int argc, char **argv)\n   command_line.warn_mismatch = true;\n   command_line.warn_search_mismatch = true;\n   command_line.check_section_addresses = -1;\n+  command_line.poison_system_directories = true;\n+  command_line.error_poison_system_directories = false;\n \n   /* We initialize DEMANGLING based on the environment variable\n      COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the\ndiff --git a/ld/lexsup.c b/ld/lexsup.c\nindex 00274c500d0..4f23b3a2da2 100644\n--- a/ld/lexsup.c\n+++ b/ld/lexsup.c\n@@ -595,6 +595,14 @@ static const struct ld_option ld_options[] =\n \t\t   \"                                <method> is: share-unconflicted (default),\\n\"\n \t\t   \"                                             share-duplicated\"),\n     TWO_DASHES },\n+  { {\"no-poison-system-directories\", no_argument, NULL,\n+    OPTION_NO_POISON_SYSTEM_DIRECTORIES},\n+    '\\0', NULL, N_(\"Do not warn for -L options using system directories\"),\n+    TWO_DASHES },\n+  { {\"error-poison-system-directories\", no_argument, NULL,\n+    OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},\n+    '\\0', NULL, N_(\"Give an error for -L options using system directories\"),\n+    TWO_DASHES },\n };\n \n #define OPTION_COUNT ARRAY_SIZE (ld_options)\n@@ -607,6 +615,7 @@ parse_args (unsigned argc, char **argv)\n   int ingroup = 0;\n   char *default_dirlist = NULL;\n   char *shortopts;\n+  char *BR_paranoid_env;\n   struct option *longopts;\n   struct option *really_longopts;\n   int last_optind;\n@@ -1643,6 +1652,14 @@ parse_args (unsigned argc, char **argv)\n \t  }\n \t  break;\n \n+\tcase OPTION_NO_POISON_SYSTEM_DIRECTORIES:\n+\t  command_line.poison_system_directories = false;\n+\t  break;\n+\n+\tcase OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:\n+\t  command_line.error_poison_system_directories = true;\n+\t  break;\n+\n \tcase OPTION_PUSH_STATE:\n \t  input_flags.pushed = xmemdup (&input_flags,\n \t\t\t\t\tsizeof (input_flags),\n@@ -1788,6 +1805,10 @@ parse_args (unsigned argc, char **argv)\n       command_line.soname = NULL;\n     }\n \n+  BR_paranoid_env = getenv(\"BR_COMPILER_PARANOID_UNSAFE_PATH\");\n+  if (BR_paranoid_env && strlen(BR_paranoid_env) > 0)\n+    command_line.error_poison_system_directories = true;\n+\n   while (ingroup)\n     {\n       einfo (_(\"%P: missing --end-group; added as last command line option\\n\"));\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/binutils/2.37/0003-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch",
    "content": "From ef4ba1da823e8366ea4f126f50885a44ebf4dcf0 Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@benettiengineering.com>\nDate: Wed, 9 Jun 2021 17:28:27 +0200\nSubject: [PATCH] bfd/elf32-or1k: fix building with gcc version < 5\n\nGcc version >= 5 has standard C mode not set to -std=gnu11, so if we use\nan old compiler(i.e. gcc 4.9) build fails on:\n```\nelf32-or1k.c:2251:3: error: 'for' loop initial declarations are only allowed in\nC99 or C11 mode\n    for (size_t i = 0; i < insn_count; i++)\n    ^\n```\n\nSo let's declare `size_t i` at the top of the function instead of inside\nfor loop.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 4ae7f324d33..32063ab0289 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -2244,9 +2244,10 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,\n {\n   unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY;\n   unsigned output_insns[PLT_MAX_INSN_COUNT];\n+  size_t i;\n \n   /* Copy instructions into the output buffer.  */\n-  for (size_t i = 0; i < insn_count; i++)\n+  for (i = 0; i < insn_count; i++)\n     output_insns[i] = insns[i];\n \n   /* Honor the no-delay-slot setting.  */\n@@ -2277,7 +2278,7 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,\n     }\n \n   /* Write out the output buffer.  */\n-  for (size_t i = 0; i < (insn_count+1); i++)\n+  for (i = 0; i < (insn_count+1); i++)\n     bfd_put_32 (output_bfd, output_insns[i], contents + (i*4));\n }\n \n-- \n2.31.1\n\n"
  },
  {
    "path": "package/binutils/2.37/0004-or1k-fix-pc-relative-relocation-against-dynamic-on-P.patch",
    "content": "From 203b80f8dbdd3ddb860114b03351a0dea28c978f Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@benettiengineering.com>\nDate: Sat, 10 Jul 2021 17:57:34 +0200\nSubject: [PATCH] or1k: fix pc-relative relocation against dynamic on PC\n relative 26 bit relocation\n\nWhen building openal we were seeing the assert failure:\n\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourcePausev\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourceStopv\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourceRewindv\n/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o:\npc-relative relocation against dynamic symbol alSourcePlayv\ncollect2: error: ld returned 1 exit status\n\nThis happens because in R_OR1K_INSN_REL_26 case we can't reference local\nsymbol as previously done but we need to make sure that calls to actual\nsymbol always call the version of current object.\n\nbfd/Changelog:\n\n\t* elf32-or1k.c (or1k_elf_relocate_section): use a separate entry\n\t  in switch case R_OR1K_INSN_REL_26 where we need to check for\n\t  !SYMBOL_CALLS_LOCAL() instead of !SYMBOL_REFERENCES_LOCAL().\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n bfd/elf32-or1k.c | 12 ++++++++++++\n 1 file changed, 12 insertions(+)\n\ndiff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c\nindex 32063ab0289..67252394173 100644\n--- a/bfd/elf32-or1k.c\n+++ b/bfd/elf32-or1k.c\n@@ -1543,6 +1543,18 @@ or1k_elf_relocate_section (bfd *output_bfd,\n \t  break;\n \n \tcase R_OR1K_INSN_REL_26:\n+\t  /* For a non-shared link, these will reference plt or call the\n+\t     version of actual object.  */\n+\t  if (bfd_link_pic (info) && !SYMBOL_CALLS_LOCAL (info, h))\n+\t    {\n+\t      _bfd_error_handler\n+\t\t(_(\"%pB: pc-relative relocation against dynamic symbol %s\"),\n+\t\t input_bfd, name);\n+\t      ret_val = FALSE;\n+\t      bfd_set_error (bfd_error_bad_value);\n+\t    }\n+\t  break;\n+\n \tcase R_OR1K_PCREL_PG21:\n \tcase R_OR1K_LO13:\n \tcase R_OR1K_SLO13:\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/binutils/Config.in",
    "content": "config BR2_PACKAGE_BINUTILS\n\tbool \"binutils\"\n\tdepends on !BR2_nios2\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Install binutils on the target\n\nif BR2_PACKAGE_BINUTILS\n\nconfig BR2_PACKAGE_BINUTILS_TARGET\n\tbool \"binutils binaries\"\n\thelp\n\t  The GNU Binutils are a collection of binary tools:\n\n\t  ld - the GNU linker.\n\t  as - the GNU assembler.\n\t  and others...\n\n\t  http://www.gnu.org/software/binutils/\n\nendif\n\ncomment \"binutils needs a toolchain w/ wchar\"\n\tdepends on !BR2_nios2\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/binutils/Config.in.host",
    "content": "comment \"Binutils Options\"\n\nconfig BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI\n\tbool\n\tdefault y\n\tdepends on !BR2_microblaze\n\nchoice\n\tprompt \"Binutils Version\"\n\tdefault BR2_BINUTILS_VERSION_2_36_X if !BR2_arc && !BR2_csky\n\tdefault BR2_BINUTILS_VERSION_ARC if BR2_arc\n\thelp\n\t  Select the version of binutils you wish to use.\n\nconfig BR2_BINUTILS_VERSION_2_32_X\n\tbool \"binutils 2.32\"\n\tdepends on !BR2_csky\n\nconfig BR2_BINUTILS_VERSION_2_35_X\n\tbool \"binutils 2.35.2\"\n\tdepends on !BR2_csky\n\t# https://github.com/uclinux-dev/elf2flt/pull/16\n\t# https://github.com/uclinux-dev/elf2flt/issues/12\n\tdepends on !BR2_BINFMT_FLAT\n\nconfig BR2_BINUTILS_VERSION_2_36_X\n\tbool \"binutils 2.36.1\"\n\tdepends on !BR2_csky\n\t# https://github.com/uclinux-dev/elf2flt/pull/16\n\t# https://github.com/uclinux-dev/elf2flt/issues/12\n\tdepends on !BR2_BINFMT_FLAT\n\nconfig BR2_BINUTILS_VERSION_2_37_X\n\tbool \"binutils 2.37\"\n\t# https://github.com/uclinux-dev/elf2flt/pull/16\n\t# https://github.com/uclinux-dev/elf2flt/issues/12\n\tdepends on !BR2_BINFMT_FLAT\n\nconfig BR2_BINUTILS_VERSION_ARC\n\tbool \"binutils arc (2.34.50)\"\n\tdepends on BR2_arc\n\nendchoice\n\nconfig BR2_BINUTILS_VERSION\n\tstring\n\tdefault \"arc-2020.09-release\"\tif BR2_BINUTILS_VERSION_ARC\n\tdefault \"2.32\"\t\tif BR2_BINUTILS_VERSION_2_32_X\n\tdefault \"2.35.2\"\tif BR2_BINUTILS_VERSION_2_35_X\n\tdefault \"2.36.1\"\tif BR2_BINUTILS_VERSION_2_36_X\n\tdefault \"2.37\"\t\tif BR2_BINUTILS_VERSION_2_37_X\n\nconfig BR2_BINUTILS_ENABLE_LTO\n\tbool\n\nconfig BR2_BINUTILS_EXTRA_CONFIG_OPTIONS\n\tstring \"Additional binutils options\"\n\tdefault \"\"\n\thelp\n\t  Any additional binutils options you may want to include.\n"
  },
  {
    "path": "package/binutils/arc-2020.09-release/0001-poison-system-directories.patch",
    "content": "From 5f62ad7ce534e3384d6ed8892614979da297bd70 Mon Sep 17 00:00:00 2001\nFrom: Evgeniy Didin <Evgeniy.Didin@synopsys.com>\nDate: Mon, 14 Oct 2019 16:45:15 +0300\nSubject: [PATCH] [PATCH] poison-system-directories\n\nPatch adapted to arc-binutils-gdb-2019.09\nSigned-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>\n\nPatch adapted to binutils 2.23.2 and extended to use\nBR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni.\n\n[Romain: rebase on top of 2.26]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n[Gustavo: adapt to binutils 2.25]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\nUpstream-Status: Inappropriate [distribution: codesourcery]\n\nPatch originally created by Mark Hatle, forward-ported to\nbinutils 2.21 by Scott Garman.\n\npurpose:  warn for uses of system directories when cross linking\n\nCode Merged from Sourcery G++ binutils 2.19 - 4.4-277\n\n2008-07-02  Joseph Myers  <joseph@codesourcery.com>\n\n    ld/\n    * ld.h (args_type): Add error_poison_system_directories.\n    * ld.texinfo (--error-poison-system-directories): Document.\n    * ldfile.c (ldfile_add_library_path): Check\n    command_line.error_poison_system_directories.\n    * ldmain.c (main): Initialize\n    command_line.error_poison_system_directories.\n    * lexsup.c (enum option_values): Add\n    OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.\n    (ld_options): Add --error-poison-system-directories.\n    (parse_args): Handle new option.\n\n2007-06-13  Joseph Myers  <joseph@codesourcery.com>\n\n    ld/\n    * config.in: Regenerate.\n    * ld.h (args_type): Add poison_system_directories.\n    * ld.texinfo (--no-poison-system-directories): Document.\n    * ldfile.c (ldfile_add_library_path): Check\n    command_line.poison_system_directories.\n    * ldmain.c (main): Initialize\n    command_line.poison_system_directories.\n    * lexsup.c (enum option_values): Add\n    OPTION_NO_POISON_SYSTEM_DIRECTORIES.\n    (ld_options): Add --no-poison-system-directories.\n    (parse_args): Handle new option.\n\n2007-04-20  Joseph Myers  <joseph@codesourcery.com>\n\n    Merge from Sourcery G++ binutils 2.17:\n\n    2007-03-20  Joseph Myers  <joseph@codesourcery.com>\n    Based on patch by Mark Hatle <mark.hatle@windriver.com>.\n    ld/\n    * configure.ac (--enable-poison-system-directories): New option.\n    * configure, config.in: Regenerate.\n    * ldfile.c (ldfile_add_library_path): If\n    ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,\n    /usr/lib, /usr/local/lib or /usr/X11R6/lib.\n\nSigned-off-by: Mark Hatle <mark.hatle@windriver.com>\nSigned-off-by: Scott Garman <scott.a.garman@intel.com>\n---\n ld/config.in    |  3 +++\n ld/configure    | 14 ++++++++++++++\n ld/configure.ac | 10 ++++++++++\n ld/ld.h         |  8 ++++++++\n ld/ld.texi      | 12 ++++++++++++\n ld/ldfile.c     | 17 +++++++++++++++++\n ld/ldlex.h      |  2 ++\n ld/ldmain.c     |  2 ++\n ld/lexsup.c     | 21 +++++++++++++++++++++\n 9 files changed, 89 insertions(+)\n\ndiff --git a/ld/config.in b/ld/config.in\nindex d93c9b08300..5da2742beac 100644\n--- a/ld/config.in\n+++ b/ld/config.in\n@@ -31,6 +31,9 @@\n    language is requested. */\n #undef ENABLE_NLS\n \n+/* Define to warn for use of native system library directories */\n+#undef ENABLE_POISON_SYSTEM_DIRECTORIES\n+\n /* Additional extension a shared object might have. */\n #undef EXTRA_SHLIB_EXTENSION\n \ndiff --git a/ld/configure b/ld/configure\nindex 2d6ca5c0445..563f9921f7f 100755\n--- a/ld/configure\n+++ b/ld/configure\n@@ -823,6 +823,7 @@ with_lib_path\n enable_targets\n enable_64_bit_bfd\n with_sysroot\n+enable_poison_system_directories\n enable_gold\n enable_got\n enable_compressed_debug_sections\n@@ -1487,6 +1488,8 @@ Optional Features:\n   --disable-largefile     omit support for large files\n   --enable-targets        alternative target configurations\n   --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)\n+  --enable-poison-system-directories\n+                          warn for use of native system library directories\n   --enable-gold[=ARG]     build gold [ARG={default,yes,no}]\n   --enable-got=<type>     GOT handling scheme (target, single, negative,\n                           multigot)\n@@ -15804,7 +15807,18 @@ else\n fi\n \n \n+# Check whether --enable-poison-system-directories was given.\n+if test \"${enable_poison_system_directories+set}\" = set; then :\n+  enableval=$enable_poison_system_directories;\n+else\n+  enable_poison_system_directories=no\n+fi\n+\n+if test \"x${enable_poison_system_directories}\" = \"xyes\"; then\n \n+$as_echo \"#define ENABLE_POISON_SYSTEM_DIRECTORIES 1\" >>confdefs.h\n+\n+fi\n \n # Check whether --enable-got was given.\n if test \"${enable_got+set}\" = set; then :\ndiff --git a/ld/configure.ac b/ld/configure.ac\nindex 41a51bbb7e9..dbaa98a9e17 100644\n--- a/ld/configure.ac\n+++ b/ld/configure.ac\n@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot)\n AC_SUBST(TARGET_SYSTEM_ROOT)\n AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)\n \n+AC_ARG_ENABLE([poison-system-directories],\n+         AS_HELP_STRING([--enable-poison-system-directories],\n+                [warn for use of native system library directories]),,\n+         [enable_poison_system_directories=no])\n+if test \"x${enable_poison_system_directories}\" = \"xyes\"; then\n+  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],\n+       [1],\n+       [Define to warn for use of native system library directories])\n+fi\n+\n dnl Use --enable-gold to decide if this linker should be the default.\n dnl \"install_as_default\" is set to false if gold is the default linker.\n dnl \"installed_linker\" is the installed BFD linker name.\ndiff --git a/ld/ld.h b/ld/ld.h\nindex 55078a9637b..511e9bc34b7 100644\n--- a/ld/ld.h\n+++ b/ld/ld.h\n@@ -180,6 +180,14 @@ typedef struct\n      in the linker script.  */\n   bfd_boolean force_group_allocation;\n \n+  /* If TRUE (the default) warn for uses of system directories when\n+     cross linking.  */\n+  bfd_boolean poison_system_directories;\n+\n+  /* If TRUE (default FALSE) give an error for uses of system\n+     directories when cross linking instead of a warning.  */\n+  bfd_boolean error_poison_system_directories;\n+\n   /* Big or little endian as set on command line.  */\n   enum endian_enum endian;\n \ndiff --git a/ld/ld.texi b/ld/ld.texi\nindex fcbc335c95e..6ba7ebdb32a 100644\n--- a/ld/ld.texi\n+++ b/ld/ld.texi\n@@ -2557,6 +2557,18 @@ string identifying the original linked file does not change.\n \n Passing @code{none} for @var{style} disables the setting from any\n @code{--build-id} options earlier on the command line.\n+\n+@kindex --no-poison-system-directories\n+@item --no-poison-system-directories\n+Do not warn for @option{-L} options using system directories such as\n+@file{/usr/lib} when cross linking.  This option is intended for use\n+in chroot environments when such directories contain the correct\n+libraries for the target system rather than the host.\n+\n+@kindex --error-poison-system-directories\n+@item --error-poison-system-directories\n+Give an error instead of a warning for @option{-L} options using\n+system directories when cross linking.\n @end table\n \n @c man end\ndiff --git a/ld/ldfile.c b/ld/ldfile.c\nindex 7f60319390e..0bcc06db964 100644\n--- a/ld/ldfile.c\n+++ b/ld/ldfile.c\n@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline)\n     new_dirs->name = concat (ld_sysroot, name + strlen (\"$SYSROOT\"), (const char *) NULL);\n   else\n     new_dirs->name = xstrdup (name);\n+\n+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES\n+  if (command_line.poison_system_directories\n+  && ((!strncmp (name, \"/lib\", 4))\n+      || (!strncmp (name, \"/usr/lib\", 8))\n+      || (!strncmp (name, \"/usr/local/lib\", 14))\n+      || (!strncmp (name, \"/usr/X11R6/lib\", 14))))\n+   {\n+     if (command_line.error_poison_system_directories)\n+       einfo (_(\"%X%P: error: library search path \\\"%s\\\" is unsafe for \"\n+            \"cross-compilation\\n\"), name);\n+     else\n+       einfo (_(\"%P: warning: library search path \\\"%s\\\" is unsafe for \"\n+            \"cross-compilation\\n\"), name);\n+   }\n+#endif\n+\n }\n \n /* Try to open a BFD for a lang_input_statement.  */\ndiff --git a/ld/ldlex.h b/ld/ldlex.h\nindex 32a7a6409e8..c02b64bf92f 100644\n--- a/ld/ldlex.h\n+++ b/ld/ldlex.h\n@@ -152,6 +152,8 @@ enum option_values\n   OPTION_NO_PRINT_MAP_DISCARDED,\n   OPTION_NON_CONTIGUOUS_REGIONS,\n   OPTION_NON_CONTIGUOUS_REGIONS_WARNINGS,\n+  OPTION_NO_POISON_SYSTEM_DIRECTORIES,\n+  OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,\n };\n\n \n /* The initial parser states.  */\ndiff --git a/ld/ldmain.c b/ld/ldmain.c\nindex 34c19223137..66d2c3f4bcf 100644\n--- a/ld/ldmain.c\n+++ b/ld/ldmain.c\n@@ -270,6 +270,8 @@ main (int argc, char **argv)\n   command_line.warn_mismatch = TRUE;\n   command_line.warn_search_mismatch = TRUE;\n   command_line.check_section_addresses = -1;\n+  command_line.poison_system_directories = TRUE;\n+  command_line.error_poison_system_directories = FALSE;\n \n   /* We initialize DEMANGLING based on the environment variable\n      COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the\ndiff --git a/ld/lexsup.c b/ld/lexsup.c\nindex 1c15ac29c0c..8b714e10a40 100644\n--- a/ld/lexsup.c\n+++ b/ld/lexsup.c\n@@ -549,6 +549,14 @@ static const struct ld_option ld_options[] =\n   { {\"no-print-map-discarded\", no_argument, NULL, OPTION_NO_PRINT_MAP_DISCARDED},\n     '\\0', NULL, N_(\"Do not show discarded sections in map file output\"),\n     TWO_DASHES },\n+  { {\"no-poison-system-directories\", no_argument, NULL,\n+    OPTION_NO_POISON_SYSTEM_DIRECTORIES},\n+    '\\0', NULL, N_(\"Do not warn for -L options using system directories\"),\n+    TWO_DASHES },\n+  { {\"error-poison-system-directories\", no_argument, NULL,\n+    OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},\n+    '\\0', NULL, N_(\"Give an error for -L options using system directories\"),\n+    TWO_DASHES },\n };\n \n #define OPTION_COUNT ARRAY_SIZE (ld_options)\n@@ -561,6 +569,7 @@ parse_args (unsigned argc, char **argv)\n   int ingroup = 0;\n   char *default_dirlist = NULL;\n   char *shortopts;\n+  char *BR_paranoid_env;\n   struct option *longopts;\n   struct option *really_longopts;\n   int last_optind;\n@@ -1549,6 +1558,14 @@ parse_args (unsigned argc, char **argv)\n \t  }\n \t  break;\n \n+\tcase OPTION_NO_POISON_SYSTEM_DIRECTORIES:\n+\t  command_line.poison_system_directories = FALSE;\n+\t  break;\n+\n+\tcase OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:\n+\t  command_line.error_poison_system_directories = TRUE;\n+\t  break;\n+\n \tcase OPTION_PUSH_STATE:\n \t  input_flags.pushed = xmemdup (&input_flags,\n \t\t\t\t\tsizeof (input_flags),\n@@ -1600,6 +1617,10 @@ parse_args (unsigned argc, char **argv)\n       command_line.soname = NULL;\n     }\n \n+  BR_paranoid_env = getenv(\"BR_COMPILER_PARANOID_UNSAFE_PATH\");\n+  if (BR_paranoid_env && strlen(BR_paranoid_env) > 0)\n+    command_line.error_poison_system_directories = TRUE;\n+\n   while (ingroup)\n     {\n       einfo (_(\"%P: missing --end-group; added as last command line option\\n\"));\n-- \n2.16.2\n\n"
  },
  {
    "path": "package/binutils/binutils.hash",
    "content": "# From ftp://gcc.gnu.org/pub/binutils/releases/sha512.sum\nsha512  d326408f12a03d9a61a9de56584c2af12f81c2e50d2d7e835d51565df8314df01575724afa1e43bd0db45cfc9916b41519b67dfce03232aa4978704492a6994a  binutils-2.32.tar.xz\nsha512  9974ede5978d32e0d68fef23da48fa00bd06b0bff7ec45b00ca075c126d6bbe0cf2defc03ecc3f17bc6cc85b64271a13009c4049d7ba17de26e84e3a6e2c0348  binutils-2.35.2.tar.xz\nsha512  cc24590bcead10b90763386b6f96bb027d7594c659c2d95174a6352e8b98465a50ec3e4088d0da038428abe059bbc4ae5f37b269f31a40fc048072c8a234f4e9  binutils-2.36.1.tar.xz\nsha512  5c11aeef6935860a6819ed3a3c93371f052e52b4bdc5033da36037c1544d013b7f12cb8d561ec954fe7469a68f1b66f1a3cd53d5a3af7293635a90d69edd15e7  binutils-2.37.tar.xz\n\n# Locally calculated (fetched from Github)\nsha512  76a8227a19218435319c660e4983ea17985194b7f496f163e97543e7f6fd3e9249241fdc05a16ba512fba96a1d846c1f7b080983404d821d6215f10e7f11e238  binutils-gdb-arc-2020.09-release.tar.gz\n\n# locally computed\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING3\nsha256  56bdea73b6145ef6ac5259b3da390b981d840c24cb03b8e1cbc678de7ecfa18d  COPYING.LIB\n"
  },
  {
    "path": "package/binutils/binutils.mk",
    "content": "################################################################################\n#\n# binutils\n#\n################################################################################\n\n# Version is set when using buildroot toolchain.\n# If not, we do like other packages\nBINUTILS_VERSION = $(call qstrip,$(BR2_BINUTILS_VERSION))\nifeq ($(BINUTILS_VERSION),)\nifeq ($(BR2_arc),y)\nBINUTILS_VERSION = arc-2020.09-release\nelse\nBINUTILS_VERSION = 2.36.1\nendif\nendif # BINUTILS_VERSION\n\nifeq ($(BINUTILS_VERSION),arc-2020.09-release)\nBINUTILS_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(BINUTILS_VERSION))\nBINUTILS_SOURCE = binutils-gdb-$(BINUTILS_VERSION).tar.gz\nBINUTILS_FROM_GIT = y\nendif\n\nBINUTILS_SITE ?= $(BR2_GNU_MIRROR)/binutils\nBINUTILS_SOURCE ?= binutils-$(BINUTILS_VERSION).tar.xz\nBINUTILS_EXTRA_CONFIG_OPTIONS = $(call qstrip,$(BR2_BINUTILS_EXTRA_CONFIG_OPTIONS))\nBINUTILS_INSTALL_STAGING = YES\nBINUTILS_DEPENDENCIES = zlib $(TARGET_NLS_DEPENDENCIES)\nBINUTILS_MAKE_OPTS = LIBS=$(TARGET_NLS_LIBS)\nBINUTILS_LICENSE = GPL-3.0+, libiberty LGPL-2.1+\nBINUTILS_LICENSE_FILES = COPYING3 COPYING.LIB\nBINUTILS_CPE_ID_VENDOR = gnu\n\nifeq ($(BINUTILS_FROM_GIT),y)\nBINUTILS_DEPENDENCIES += host-flex host-bison\nHOST_BINUTILS_DEPENDENCIES += host-flex host-bison\nendif\n\n# When binutils sources are fetched from the binutils-gdb repository,\n# they also contain the gdb sources, but gdb shouldn't be built, so we\n# disable it.\nBINUTILS_DISABLE_GDB_CONF_OPTS = \\\n\t--disable-sim \\\n\t--disable-gdb\n\n# We need to specify host & target to avoid breaking ARM EABI\nBINUTILS_CONF_OPTS = \\\n\t--disable-multilib \\\n\t--disable-werror \\\n\t--host=$(GNU_TARGET_NAME) \\\n\t--target=$(GNU_TARGET_NAME) \\\n\t--enable-install-libiberty \\\n\t--enable-build-warnings=no \\\n\t--with-system-zlib \\\n\t$(BINUTILS_DISABLE_GDB_CONF_OPTS) \\\n\t$(BINUTILS_EXTRA_CONFIG_OPTIONS)\n\nifeq ($(BR2_STATIC_LIBS),y)\nBINUTILS_CONF_OPTS += --disable-plugins\nendif\n\n# Don't build documentation. It takes up extra space / build time,\n# and sometimes needs specific makeinfo versions to work\nBINUTILS_CONF_ENV += MAKEINFO=true\nBINUTILS_MAKE_OPTS += MAKEINFO=true\nBINUTILS_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MAKEINFO=true install\nHOST_BINUTILS_CONF_ENV += MAKEINFO=true\nHOST_BINUTILS_MAKE_OPTS += MAKEINFO=true\nHOST_BINUTILS_INSTALL_OPTS += MAKEINFO=true install\n\n# Workaround a build issue with -Os for ARM Cortex-M cpus.\n# (Binutils 2.25.1 and 2.26.1)\n# https://sourceware.org/bugzilla/show_bug.cgi?id=20552\nifeq ($(BR2_ARM_CPU_ARMV7M)$(BR2_OPTIMIZE_S),yy)\nBINUTILS_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -O2\"\nendif\n\n# \"host\" binutils should actually be \"cross\"\n# We just keep the convention of \"host utility\" for now\nHOST_BINUTILS_CONF_OPTS = \\\n\t--disable-multilib \\\n\t--disable-werror \\\n\t--target=$(GNU_TARGET_NAME) \\\n\t--disable-shared \\\n\t--enable-static \\\n\t--with-sysroot=$(STAGING_DIR) \\\n\t--enable-poison-system-directories \\\n\t--without-debuginfod \\\n\t$(BINUTILS_DISABLE_GDB_CONF_OPTS) \\\n\t$(BINUTILS_EXTRA_CONFIG_OPTIONS)\n\n# binutils run configure script of subdirs at make time, so ensure\n# our TARGET_CONFIGURE_ARGS are taken into consideration for those\nBINUTILS_MAKE_ENV = $(TARGET_CONFIGURE_ARGS)\n\n# We just want libbfd, libiberty and libopcodes,\n# not the full-blown binutils in staging\ndefine BINUTILS_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/bfd DESTDIR=$(STAGING_DIR) install\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/opcodes DESTDIR=$(STAGING_DIR) install\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libiberty DESTDIR=$(STAGING_DIR) install\nendef\n\n# If we don't want full binutils on target\nifneq ($(BR2_PACKAGE_BINUTILS_TARGET),y)\ndefine BINUTILS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/bfd DESTDIR=$(TARGET_DIR) install\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/opcodes DESTDIR=$(TARGET_DIR) install\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libiberty DESTDIR=$(STAGING_DIR) install\nendef\nendif\n\nifneq ($(ARCH_XTENSA_OVERLAY_FILE),)\ndefine BINUTILS_XTENSA_OVERLAY_EXTRACT\n\t$(call arch-xtensa-overlay-extract,$(@D),binutils)\nendef\nBINUTILS_POST_EXTRACT_HOOKS += BINUTILS_XTENSA_OVERLAY_EXTRACT\nBINUTILS_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL)\nHOST_BINUTILS_POST_EXTRACT_HOOKS += BINUTILS_XTENSA_OVERLAY_EXTRACT\nHOST_BINUTILS_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL)\nendif\n\nifeq ($(BR2_BINUTILS_ENABLE_LTO),y)\nHOST_BINUTILS_CONF_OPTS += --enable-plugins --enable-lto\nendif\n\n# Hardlinks between binaries in different directories cause a problem\n# with rpath fixup, so we de-hardlink those binaries, and replace them\n# with copies instead.\nBINUTILS_TOOLS = ar as ld ld.bfd nm objcopy objdump ranlib readelf strip\ndefine HOST_BINUTILS_FIXUP_HARDLINKS\n\t$(foreach tool,$(BINUTILS_TOOLS),\\\n\t\trm -f $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) && \\\n\t\tcp -a $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-$(tool) \\\n\t\t\t$(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool)\n\t)\nendef\nHOST_BINUTILS_POST_INSTALL_HOOKS += HOST_BINUTILS_FIXUP_HARDLINKS\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/biosdevname/Config.in",
    "content": "config BR2_PACKAGE_BIOSDEVNAME\n\tbool \"biosdevname\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_PCIUTILS\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Biosdevname is a udev helper that looks at various BIOS tables\n\t  to figure out what the actual hardware names are for Ethernet\n\t  ports and renames the ports accordingly. This has the\n\t  advantage of always referring to the same port regardless of\n\t  system or hardware changes that might otherwise alter the\n\t  typical ethX naming.\n\n\t  https://github.com/dell/biosdevname/\n"
  },
  {
    "path": "package/biosdevname/biosdevname.hash",
    "content": "# Locally computed hashes, not provided by upstream\nsha256 3a67fee0c315996bbba586c1c077e57625382d38dc48fb3c9e84d56a7a5effad  biosdevname-0.7.3.tar.gz\nsha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/biosdevname/biosdevname.mk",
    "content": "################################################################################\n#\n# biosdevname\n#\n################################################################################\n\nBIOSDEVNAME_VERSION = 0.7.3\nBIOSDEVNAME_SITE = $(call github,dell,biosdevname,v$(BIOSDEVNAME_VERSION))\nBIOSDEVNAME_LICENSE = GPL\nBIOSDEVNAME_LICENSE_FILES = COPYING\nBIOSDEVNAME_CONF_OPTS = --exec-prefix=/\nBIOSDEVNAME_DEPENDENCIES = pciutils udev zlib\nBIOSDEVNAME_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bird/Config.in",
    "content": "config BR2_PACKAGE_BIRD\n\tbool \"bird\"\n\tdepends on !BR2_nios2 # relocations don't fit\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  BIRD Internet Routing Daemon\n\n\t  The BIRD project aims to develop a dynamic IP routing daemon\n\t  with full support of all modern routing protocols, easy to\n\t  use configuration interface and powerful route filtering\n\t  language\n\n\t  http://bird.network.cz/\n\nif BR2_PACKAGE_BIRD\n\nconfig BR2_PACKAGE_BIRD_CLIENT\n\tbool \"birdc\"\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  Enable the BIRD client\n\ncomment \"protocol support\"\n\nconfig BR2_PACKAGE_BIRD_BABEL\n\tbool \"babel\"\n\thelp\n\t  Enable Babel protocol.\n\nconfig BR2_PACKAGE_BIRD_BFD\n\tbool \"bfd\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\thelp\n\t  Enable BFD protocol.\n\ncomment \"BFD protocol needs a toolchain w/ NPTL\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\nconfig BR2_PACKAGE_BIRD_BGP\n\tbool \"bgp\"\n\tdefault y\n\thelp\n\t  Enable BGP protocol.\n\nconfig BR2_PACKAGE_BIRD_MRT\n\tbool \"mrt\"\n\thelp\n\t  Enable MRT protocol.\n\nconfig BR2_PACKAGE_BIRD_OSPF\n\tbool \"ospf\"\n\thelp\n\t  Enable OSPFv2 and OSPFv3 protocol.\n\nconfig BR2_PACKAGE_BIRD_PERF\n\tbool \"perf\"\n\thelp\n\t  Enable Perf protocol.\n\nconfig BR2_PACKAGE_BIRD_PIPE\n\tbool \"pipe\"\n\thelp\n\t  Enable Pipe protocol.\n\nconfig BR2_PACKAGE_BIRD_RADV\n\tbool \"radv\"\n\thelp\n\t  Enable RAdv protocol.\n\nconfig BR2_PACKAGE_BIRD_RIP\n\tbool \"rip\"\n\thelp\n\t  Enable RIP protocol.\n\nconfig BR2_PACKAGE_BIRD_RPKI\n\tbool \"rpki\"\n\thelp\n\t  Enable RPKI protocol.\n\nconfig BR2_PACKAGE_BIRD_STATIC\n\tbool \"static\"\n\thelp\n\t  Enable Static protocol.\n\nendif\n"
  },
  {
    "path": "package/bird/bird.hash",
    "content": "sha256  19d2de83ee25a307b9e5b9e58797dd68766d439bcee33e3ac617ed502370e7f6  bird-2.0.8.tar.gz\nsha256  94c53c84320078920ac1f0d49c81a4e9004512f534521a58bdf145acbcbc2cd2  README\n"
  },
  {
    "path": "package/bird/bird.mk",
    "content": "################################################################################\n#\n# bird\n#\n################################################################################\n\nBIRD_VERSION = 2.0.8\nBIRD_SITE = ftp://bird.network.cz/pub/bird\nBIRD_LICENSE = GPL-2.0+\nBIRD_LICENSE_FILES = README\nBIRD_CPE_ID_VENDOR = nic\nBIRD_SELINUX_MODULES = bird\nBIRD_DEPENDENCIES = host-flex host-bison\nBIRD_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_BIRD_CLIENT),y)\nBIRD_CONF_OPTS += --enable-client\nBIRD_DEPENDENCIES += ncurses readline\nelse\nBIRD_CONF_OPTS += --disable-client\nendif\n\nifeq ($(BR2_PACKAGE_LIBSSH),y)\nBIRD_CONF_OPTS += --enable-libssh\nBIRD_DEPENDENCIES += libssh\nelse\nBIRD_CONF_OPTS += --disable-libssh\nendif\n\nBIRD_PROTOCOLS = \\\n\t$(if $(BR2_PACKAGE_BIRD_BFD),bfd) \\\n\t$(if $(BR2_PACKAGE_BIRD_BABEL),babel) \\\n\t$(if $(BR2_PACKAGE_BIRD_BGP),bgp) \\\n\t$(if $(BR2_PACKAGE_BIRD_MRT),mrt) \\\n\t$(if $(BR2_PACKAGE_BIRD_OSPF),ospf) \\\n\t$(if $(BR2_PACKAGE_BIRD_PERF),perf) \\\n\t$(if $(BR2_PACKAGE_BIRD_PIPE),pipe) \\\n\t$(if $(BR2_PACKAGE_BIRD_RADV),radv) \\\n\t$(if $(BR2_PACKAGE_BIRD_RIP),rip) \\\n\t$(if $(BR2_PACKAGE_BIRD_RPKI),rpki) \\\n\t$(if $(BR2_PACKAGE_BIRD_STATIC),static)\n\nBIRD_CONF_OPTS += --with-protocols=$(subst $(space),$(comma),$(strip $(BIRD_PROTOCOLS)))\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bison/bison.hash",
    "content": "# Locally calculated after checking pgp signature from\n# http://mirror.keystealth.org/gnu/bison/bison-3.8.2.tar.xz.sig\nsha256  9bba0214ccf7f1079c5d59210045227bcf619519840ebfa80cd3849cff5a5bf2  bison-3.8.2.tar.xz\n# License files, locally calculated\nsha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  COPYING\n"
  },
  {
    "path": "package/bison/bison.mk",
    "content": "################################################################################\n#\n# bison\n#\n################################################################################\n\nBISON_VERSION = 3.8.2\nBISON_SOURCE = bison-$(BISON_VERSION).tar.xz\nBISON_SITE = $(BR2_GNU_MIRROR)/bison\nBISON_LICENSE = GPL-3.0+\nBISON_LICENSE_FILES = COPYING\nBISON_CPE_ID_VENDOR = gnu\n# parallel build issue in examples/c/reccalc/\nBISON_MAKE = $(MAKE1)\nHOST_BISON_DEPENDENCIES = host-m4\nHOST_BISON_CONF_OPTS = --enable-relocatable\nHOST_BISON_CONF_ENV = ac_cv_libtextstyle=no\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/bitcoin/0001-src-randomenv.cpp-fix-build-on-uclibc.patch",
    "content": "From 330cb33985d0ce97c20f4a0f0bbda0fbffe098d4 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 9 Nov 2020 21:18:40 +0100\nSubject: [PATCH] src/randomenv.cpp: fix build on uclibc\n\nCheck for HAVE_STRONG_GETAUXVAL or HAVE_WEAK_GETAUXVAL before using\ngetauxval to avoid a build failure on uclibc\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/bitcoin/bitcoin/pull/20358]\n---\n src/randomenv.cpp | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/src/randomenv.cpp b/src/randomenv.cpp\nindex 07122b7f6..5e07c3db4 100644\n--- a/src/randomenv.cpp\n+++ b/src/randomenv.cpp\n@@ -53,7 +53,7 @@\n #include <sys/vmmeter.h>\n #endif\n #endif\n-#ifdef __linux__\n+#if defined(HAVE_STRONG_GETAUXVAL) || defined(HAVE_WEAK_GETAUXVAL)\n #include <sys/auxv.h>\n #endif\n \n@@ -326,7 +326,7 @@ void RandAddStaticEnv(CSHA512& hasher)\n     // Bitcoin client version\n     hasher << CLIENT_VERSION;\n \n-#ifdef __linux__\n+#if defined(HAVE_STRONG_GETAUXVAL) || defined(HAVE_WEAK_GETAUXVAL)\n     // Information available through getauxval()\n #  ifdef AT_HWCAP\n     hasher << getauxval(AT_HWCAP);\n@@ -346,7 +346,7 @@ void RandAddStaticEnv(CSHA512& hasher)\n     const char* exec_str = (const char*)getauxval(AT_EXECFN);\n     if (exec_str) hasher.Write((const unsigned char*)exec_str, strlen(exec_str) + 1);\n #  endif\n-#endif // __linux__\n+#endif // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL\n \n #ifdef HAVE_GETCPUID\n     AddAllCPUID(hasher);\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/bitcoin/Config.in",
    "content": "config BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_TOOLCHAIN_HAS_ATOMIC\n\t# bitcoin uses 8-byte __atomic intrinsics, which are not\n\t# available on ARM noMMU platforms that we\n\t# support. BR2_TOOLCHAIN_HAS_ATOMIC does not provide a\n\t# size-level granularity to express this dependency.\n\tdepends on !(BR2_arm || BR2_armeb) || BR2_USE_MMU\n\nconfig BR2_PACKAGE_BITCOIN\n\tbool \"bitcoin\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread, boost-filesystem\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future\n\tdepends on BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # boost\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\tselect BR2_PACKAGE_BOOST_THREAD\n\tselect BR2_PACKAGE_LIBEVENT\n\thelp\n\t  Bitcoin Core is an open source project which maintains and\n\t  releases Bitcoin client software called “Bitcoin Core”.\n\n\t  It is a direct descendant of the original Bitcoin software\n\t  client released by Satoshi Nakamoto after he published the\n\t  famous Bitcoin whitepaper.\n\n\t  Bitcoin Core consists of both \"full-node\" software for fully\n\t  validating the blockchain as well as a bitcoin wallet. The\n\t  project also currently maintains related software such as\n\t  the cryptography library libsecp256k1 and others located at\n\t  GitHub.\n\n\t  https://bitcoincore.org\n\ncomment \"bitcoin needs a toolchain w/ C++, threads, wchar\"\n\tdepends on BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n\ncomment \"bitcoin needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/bitcoin/bitcoin.hash",
    "content": "# From https://bitcoincore.org/bin/bitcoin-core-0.21.2/SHA256SUMS.asc\nsha256  4146f751fc5691bdcf911cbdb8d32d8d25c297d29d58173227ae1ae6438edb9e  bitcoin-0.21.2.tar.gz\n\n# Hash for license file\nsha256  96fe807030b21f88305adc32af62f9aa19915f2783509fd6f52aea02cf83f644  COPYING\n"
  },
  {
    "path": "package/bitcoin/bitcoin.mk",
    "content": "################################################################################\n#\n# bitcoin\n#\n################################################################################\n\nBITCOIN_VERSION = 0.21.2\nBITCOIN_SITE = https://bitcoincore.org/bin/bitcoin-core-$(BITCOIN_VERSION)\nBITCOIN_AUTORECONF = YES\nBITCOIN_LICENSE = MIT\nBITCOIN_LICENSE_FILES = COPYING\nBITCOIN_CPE_ID_VENDOR = bitcoin\nBITCOIN_CPE_ID_PRODUCT = bitcoin_core\nBITCOIN_DEPENDENCIES = host-pkgconf boost libevent\nBITCOIN_MAKE_ENV = BITCOIN_GENBUILD_NO_GIT=1\nBITCOIN_CONF_OPTS = \\\n\t--disable-bench \\\n\t--disable-wallet \\\n\t--disable-tests \\\n\t--with-boost-libdir=$(STAGING_DIR)/usr/lib/ \\\n\t--disable-hardening \\\n\t--without-gui\n\nifeq ($(BR2_PACKAGE_LIBMINIUPNPC),y)\nBITCOIN_DEPENDENCIES += libminiupnpc\nBITCOIN_CONF_OPTS += --with-miniupnpc\nelse\nBITCOIN_CONF_OPTS += --without-miniupnpc\nendif\n\nifeq ($(BR2_PACKAGE_ZEROMQ),y)\nBITCOIN_DEPENDENCIES += zeromq\nBITCOIN_CONF_OPTS += --with-zmq\nelse\nBITCOIN_CONF_OPTS += --without-zmq\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bitstream/Config.in",
    "content": "config BR2_PACKAGE_BITSTREAM\n\tbool \"bitstream\"\n\thelp\n\t  biTStream is a set of C headers allowing a simpler access to\n\t  binary structures such as specified by MPEG, DVB, IETF,\n\t  SMPTE, IEEE, SCTE, etc.\n\n\t  http://www.videolan.org/developers/bitstream.html\n"
  },
  {
    "path": "package/bitstream/bitstream.hash",
    "content": "# From https://get.videolan.org/bitstream/1.5/bitstream-1.5.tar.bz2.md5\nmd5 34630d13332fd1575bcc8531b0a596be  bitstream-1.5.tar.bz2\n# From https://get.videolan.org/bitstream/1.5/bitstream-1.5.tar.bz2.sha256\nsha256 45fc5a5a6e4537a69fa8440821e87b76252135180a3070c631b0b36ce0a3b90a  bitstream-1.5.tar.bz2\n# Locally computed\nsha256 9644a812f9a8377a59acb7092a36ce8882a39743425d9171a8fb84637e2f6e04  COPYING\n"
  },
  {
    "path": "package/bitstream/bitstream.mk",
    "content": "################################################################################\n#\n# bitstream\n#\n################################################################################\n\nBITSTREAM_VERSION = 1.5\nBITSTREAM_SOURCE = bitstream-$(BITSTREAM_VERSION).tar.bz2\nBITSTREAM_SITE = https://get.videolan.org/bitstream/$(BITSTREAM_VERSION)\nBITSTREAM_LICENSE = MIT\nBITSTREAM_LICENSE_FILES = COPYING\n\n# package consists of header files only\nBITSTREAM_INSTALL_STAGING = YES\nBITSTREAM_INSTALL_TARGET = NO\n\ndefine BITSTREAM_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) PREFIX=/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/bitstream-vera/Config.in",
    "content": "config BR2_PACKAGE_BITSTREAM_VERA\n\tbool \"Bitstream Vera\"\n\thelp\n\t  Bitstream Vera font family.\n\n\t  https://www.gnome.org/fonts/\n"
  },
  {
    "path": "package/bitstream-vera/bitstream-vera.hash",
    "content": "# From http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/ttf-bitstream-vera-1.10.tar.bz2.sha256sum\nsha256  db5b27df7bbb318036ebdb75acd3e98f1bd6eb6608fb70a67d478cd243d178dc  ttf-bitstream-vera-1.10.tar.bz2\n# locally computed\nsha256  3361d054759a2fc686a2c058be82deaf9c2e6fe549be9004d7935a6c1736315d  COPYRIGHT.TXT\n"
  },
  {
    "path": "package/bitstream-vera/bitstream-vera.mk",
    "content": "################################################################################\n#\n# bitstream-vera\n#\n################################################################################\n\nBITSTREAM_VERA_VERSION = 1.10\nBITSTREAM_VERA_SITE = http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/$(BITSTREAM_VERA_VERSION)\nBITSTREAM_VERA_SOURCE = ttf-bitstream-vera-$(BITSTREAM_VERA_VERSION).tar.bz2\nBITSTREAM_VERA_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/ttf-bitstream-vera\nBITSTREAM_VERA_LICENSE = BitstreamVera\nBITSTREAM_VERA_LICENSE_FILES = COPYRIGHT.TXT\n\ndefine BITSTREAM_VERA_INSTALL_TARGET_CMDS\n\tmkdir -p $(BITSTREAM_VERA_TARGET_DIR)\n\t$(INSTALL) -m 644 $(@D)/*.ttf $(BITSTREAM_VERA_TARGET_DIR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/bitwise/Config.in",
    "content": "config BR2_PACKAGE_BITWISE\n\tbool \"bitwise\"\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  Bitwise is multi base interactive calculator\n\t  supporting dynamic base conversion and bit manipulation.\n\t  It's a handy tool for low level hackers,\n\t  kernel developers and device drivers developers.\n\n\t  https://github.com/mellowcandle/bitwise\n"
  },
  {
    "path": "package/bitwise/bitwise.hash",
    "content": "# Locally calculated\nsha256  d3d43cef47bf8f49e85f7ed381c3eaf1df921ca51805e0962f1a97a517e1d1d2  bitwise-v0.42.tar.gz\nsha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  COPYING\n"
  },
  {
    "path": "package/bitwise/bitwise.mk",
    "content": "################################################################################\n#\n# bitwise\n#\n################################################################################\n\nBITWISE_VERSION = 0.42\nBITWISE_SITE = https://github.com/mellowcandle/bitwise/releases/download/v$(BITWISE_VERSION)\nBITWISE_SOURCE = bitwise-v$(BITWISE_VERSION).tar.gz\nBITWISE_DEPENDENCIES = ncurses readline\nBITWISE_LICENSE = GPL-3.0\nBITWISE_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/blktrace/Config.in",
    "content": "config BR2_PACKAGE_BLKTRACE\n\tbool \"blktrace\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # system()\n\tselect BR2_PACKAGE_LIBAIO\n\thelp\n\t  blktrace is a block layer IO tracing mechanism which provides\n\t  detailed information about request queue operations\n\t  up to user space.\n\n\t  http://git.kernel.dk/?p=blktrace.git;a=summary\n\ncomment \"blktrace needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/blktrace/blktrace.hash",
    "content": "# From http://brick.kernel.dk/snaps/MD5SUMS\nmd5  aa9bc7d76870d8dae56aa816527e8e15  blktrace-1.3.0.tar.bz2\n\n# Locally computed\nsha256  d6deda03862de2bd1b1b9fba729bbb862d9bca795e6aa7f7ca86b656811a70d6  blktrace-1.3.0.tar.bz2\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  COPYING\n"
  },
  {
    "path": "package/blktrace/blktrace.mk",
    "content": "################################################################################\n#\n# blktrace\n#\n################################################################################\n\nBLKTRACE_VERSION = 1.3.0\nBLKTRACE_SOURCE = blktrace-$(BLKTRACE_VERSION).tar.bz2\nBLKTRACE_SITE = http://brick.kernel.dk/snaps\nBLKTRACE_DEPENDENCIES = libaio\nBLKTRACE_LICENSE = GPL-2.0+\nBLKTRACE_LICENSE_FILES = COPYING\nBLKTRACE_CPE_ID_VENDOR = blktrace_project\n\ndefine BLKTRACE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine BLKTRACE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(TARGET_CONFIGURE_OPTS) install \\\n\t\tDESTDIR=$(TARGET_DIR) prefix=/usr\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/bluez-alsa/Config.in",
    "content": "config BR2_PACKAGE_BLUEZ_ALSA\n\tbool \"bluez-alsa\"\n\tdepends on !BR2_STATIC_LIBS # bluez5\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5\n\tdepends on BR2_USE_MMU # bluez5 -> dbus\n\tdepends on BR2_USE_WCHAR # libglib2\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_BLUEZ5_UTILS\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_SBC\n\thelp\n\t  Bluetooth Audio ALSA Backend.\n\n\t  https://github.com/Arkq/bluez-alsa\n\nif BR2_PACKAGE_BLUEZ_ALSA\n\nconfig BR2_PACKAGE_BLUEZ_ALSA_HCITOP\n\tbool \"hcitop\"\n\tdepends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_LIBBSD\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Enable top-like monitoring tool for HCI.\n\nconfig BR2_PACKAGE_BLUEZ_ALSA_RFCOMM\n\tbool \"rfcomm\"\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  Simple tool for sending RFCOMM commands.\n\nendif\n\ncomment \"bluez-alsa needs a toolchain w/ wchar, NPTL, headers >= 3.4, dynamic library, gcc >= 4.9\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/bluez-alsa/bluez-alsa.hash",
    "content": "# Locally calculated:\nsha256  d9a878d9fd7f18842c9c8ed83bc96cab684753c90f2751d575a3cdd776ec78a5  bluez-alsa-3.1.0.tar.gz\nsha256  60253922a459245128c34eb379cbda7c76936636d4c10edc576663a0f560dd4d  LICENSE\n"
  },
  {
    "path": "package/bluez-alsa/bluez-alsa.mk",
    "content": "################################################################################\n#\n# bluez-alsa\n#\n################################################################################\n\nBLUEZ_ALSA_VERSION = 3.1.0\nBLUEZ_ALSA_SITE = $(call github,Arkq,bluez-alsa,v$(BLUEZ_ALSA_VERSION))\nBLUEZ_ALSA_LICENSE = MIT\nBLUEZ_ALSA_LICENSE_FILES = LICENSE\nBLUEZ_ALSA_DEPENDENCIES = alsa-lib bluez5_utils libglib2 sbc host-pkgconf\n\n# git repo, no configure\nBLUEZ_ALSA_AUTORECONF = YES\n\nBLUEZ_ALSA_CONF_OPTS = \\\n\t--enable-a2dpconf \\\n\t--enable-aplay \\\n\t--disable-debug-time \\\n\t--with-alsaplugindir=/usr/lib/alsa-lib \\\n\t--with-alsaconfdir=/etc/alsa/conf.d\n\nifeq ($(BR2_PACKAGE_FDK_AAC),y)\nBLUEZ_ALSA_DEPENDENCIES += fdk-aac\nBLUEZ_ALSA_CONF_OPTS += --enable-aac\nelse\nBLUEZ_ALSA_CONF_OPTS += --disable-aac\nendif\n\nifeq ($(BR2_PACKAGE_LAME),y)\nBLUEZ_ALSA_DEPENDENCIES += lame\nBLUEZ_ALSA_CONF_OPTS += --enable-mp3lame\nelse\nBLUEZ_ALSA_CONF_OPTS += --disable-mp3lame\nendif\n\nifeq ($(BR2_PACKAGE_MPG123),y)\nBLUEZ_ALSA_DEPENDENCIES += mpg123\nBLUEZ_ALSA_CONF_OPTS += --enable-mpg123\nelse\nBLUEZ_ALSA_CONF_OPTS += --disable-mpg123\nendif\n\n# no build dependency, disables internal HFP in favor of oFonos HFP profile\nifeq ($(BR2_PACKAGE_OFONO),y)\nBLUEZ_ALSA_CONF_OPTS += --enable-ofono\nelse\nBLUEZ_ALSA_CONF_OPTS += --disable-ofono\nendif\n\n# no build dependency, enables integration with UPower D-Bus service\nifeq ($(BR2_PACKAGE_UPOWER),y)\nBLUEZ_ALSA_CONF_OPTS += --enable-upower\nelse\nBLUEZ_ALSA_CONF_OPTS += --disable-upower\nendif\n\nifeq ($(BR2_PACKAGE_BLUEZ_ALSA_HCITOP),y)\nBLUEZ_ALSA_DEPENDENCIES += libbsd ncurses\nBLUEZ_ALSA_CONF_OPTS += --enable-hcitop\nelse\nBLUEZ_ALSA_CONF_OPTS += --disable-hcitop\nendif\n\nifeq ($(BR2_PACKAGE_BLUEZ_ALSA_RFCOMM),y)\nBLUEZ_ALSA_DEPENDENCIES += readline\nBLUEZ_ALSA_CONF_OPTS += --enable-rfcomm\nelse\nBLUEZ_ALSA_CONF_OPTS += --disable-rfcomm\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bluez-tools/Config.in",
    "content": "config BR2_PACKAGE_BLUEZ_TOOLS\n\tbool \"bluez-tools\"\n\tdepends on BR2_PACKAGE_BLUEZ5_UTILS\n\tdepends on BR2_USE_MMU # dbus, libglib2\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_DBUS_GLIB\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_READLINE if BR2_PACKAGE_BLUEZ5_UTILS\n\thelp\n\t  A set of tools to manage bluetooth devices for linux\n\n\t  https://github.com/khvzak/bluez-tools\n\ncomment \"bluez-tools needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_PACKAGE_BLUEZ5_UTILS\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/bluez-tools/bluez-tools.hash",
    "content": "# Locally computed\nsha256  dd5acf9e501514f4ad1136af966d2723f3270e0e2fffd6d29da93fa76c9fafa3  bluez-tools-f65321736475429316f07ee94ec0deac8e46ec4a.tar.gz\nsha256  b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259  COPYING\n"
  },
  {
    "path": "package/bluez-tools/bluez-tools.mk",
    "content": "################################################################################\n#\n# bluez-tools\n#\n################################################################################\n\nBLUEZ_TOOLS_VERSION = f65321736475429316f07ee94ec0deac8e46ec4a\nBLUEZ_TOOLS_SITE = $(call github,khvzak,bluez-tools,$(BLUEZ_TOOLS_VERSION))\n\n# sources fetched from github, no configure script)\nBLUEZ_TOOLS_AUTORECONF = YES\nBLUEZ_TOOLS_DEPENDENCIES = host-pkgconf dbus dbus-glib bluez5_utils readline\nBLUEZ_TOOLS_LICENSE = GPL-2.0+\nBLUEZ_TOOLS_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bluez5_utils/0001-tools-mesh-cfgtest-include-limits.h.patch",
    "content": "From 5158827fded7cb4daf550a5956aff0c74f6c38fc Mon Sep 17 00:00:00 2001\nFrom: Michael Nosthoff <bluez@heine.tech>\nDate: Thu, 22 Jul 2021 21:36:13 +0200\nSubject: [PATCH BlueZ] tools/mesh-cfgtest: include limits.h\n\nmesh-cfgtest.c uses PATH_MAX so it should include limits.h.\n\nfixes compilation error when enabling mesh support with musl-based\ntoolchains observed in buildroot autobuilders.\n\nhttp://autobuild.buildroot.net/results/20cc47f54de0b0d4bdf108c3715c590ae8ab476f/\nhttp://autobuild.buildroot.net/results/003968b25906579dbcf5a95d1e43fec0ab504ef5/\n\nSigned-off-by: Michael Nosthoff <buildroot@heine.tech>\n---\n tools/mesh-cfgtest.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/tools/mesh-cfgtest.c b/tools/mesh-cfgtest.c\nindex fa0474faa..116ab7f16 100644\n--- a/tools/mesh-cfgtest.c\n+++ b/tools/mesh-cfgtest.c\n@@ -21,6 +21,7 @@\n #include <ftw.h>\n #include <getopt.h>\n #include <libgen.h>\n+#include <limits.h>\n #include <signal.h>\n #include <stdio.h>\n #include <time.h>\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/bluez5_utils/0005-build-Fix-errors-with-glibc-2-25.patch",
    "content": "From fb57ad9b9d107856e5f1c8135da04ffa2f7a11ac Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 14 Feb 2022 21:17:39 +0100\nSubject: build: Fix errors with glibc < 2.25\n\ngetrandom and sys/random.h are only available since glibc 2.25:\nhttps://www.gnu.org/software/gnulib/manual/html_node/sys_002frandom_002eh.html\nresulting in the following build failures since version 5.63 and\nhttps://git.kernel.org/pub/scm/bluetooth/bluez.git/log/?qt=grep&q=getrandom:\n\nplugins/autopair.c:20:24: fatal error: sys/random.h: No such file or directory\n #include <sys/random.h>\n                        ^\n\nTo fix this build failure, add util_getrandom and a fallback (borrowed\nfrom pipewire and licensed under MIT):\nhttps://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/src/pipewire/utils.c\n\nFixes:\n - http://autobuild.buildroot.org/results/6b8870d12e0804d6154230a7322c49416c1dc0e2\n\n[Retrieved from:\nhttps://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=fb57ad9b9d107856e5f1c8135da04ffa2f7a11ac]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac           |  4 +++-\n emulator/le.c          |  3 +--\n emulator/phy.c         |  3 +--\n peripheral/main.c      |  4 ++--\n plugins/autopair.c     |  4 ++--\n profiles/health/hdp.c  |  4 ++--\n profiles/health/mcap.c |  6 +++---\n src/shared/util.c      | 25 +++++++++++++++++++++++++\n src/shared/util.h      |  2 ++\n tools/btgatt-server.c  |  3 +--\n 10 files changed, 42 insertions(+), 16 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 07d068a4d..441bd5f29 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -54,6 +54,8 @@ AC_ARG_ENABLE(threads, AS_HELP_STRING([--enable-threads],\n \n AC_CHECK_FUNCS(explicit_bzero)\n \n+AC_CHECK_FUNCS(getrandom)\n+\n AC_CHECK_FUNCS(rawmemchr)\n \n AC_CHECK_FUNC(signalfd, dummy=yes,\n@@ -68,7 +70,7 @@ AC_CHECK_LIB(pthread, pthread_create, dummy=yes,\n AC_CHECK_LIB(dl, dlopen, dummy=yes,\n \t\t\tAC_MSG_ERROR(dynamic linking loader is required))\n \n-AC_CHECK_HEADERS(linux/types.h linux/if_alg.h linux/uinput.h linux/uhid.h)\n+AC_CHECK_HEADERS(linux/types.h linux/if_alg.h linux/uinput.h linux/uhid.h sys/random.h)\n \n PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.28, dummy=yes,\n \t\t\t\tAC_MSG_ERROR(GLib >= 2.28 is required))\ndiff --git a/emulator/le.c b/emulator/le.c\nindex f8f313f2c..7656a657c 100644\n--- a/emulator/le.c\n+++ b/emulator/le.c\n@@ -20,7 +20,6 @@\n #include <sys/socket.h>\n #include <sys/un.h>\n #include <sys/uio.h>\n-#include <sys/random.h>\n #include <time.h>\n \n #include \"lib/bluetooth.h\"\n@@ -509,7 +508,7 @@ static unsigned int get_adv_delay(void)\n \t/* The advertising delay is a pseudo-random value with a range\n \t * of 0 ms to 10 ms generated for each advertising event.\n \t */\n-\tif (getrandom(&val, sizeof(val), 0) < 0) {\n+\tif (util_getrandom(&val, sizeof(val), 0) < 0) {\n \t\t/* If it fails to get the random number, use a static value */\n \t\tval = 5;\n \t}\ndiff --git a/emulator/phy.c b/emulator/phy.c\nindex 44cace438..7de85fb05 100644\n--- a/emulator/phy.c\n+++ b/emulator/phy.c\n@@ -19,7 +19,6 @@\n #include <stdlib.h>\n #include <string.h>\n #include <sys/socket.h>\n-#include <sys/random.h>\n #include <netinet/in.h>\n #include <netinet/ip.h>\n #include <time.h>\n@@ -174,7 +173,7 @@ struct bt_phy *bt_phy_new(void)\n \tmainloop_add_fd(phy->rx_fd, EPOLLIN, phy_rx_callback, phy, NULL);\n \n \tif (!get_random_bytes(&phy->id, sizeof(phy->id))) {\n-\t\tif (getrandom(&phy->id, sizeof(phy->id), 0) < 0) {\n+\t\tif (util_getrandom(&phy->id, sizeof(phy->id), 0) < 0) {\n \t\t\tmainloop_remove_fd(phy->rx_fd);\n \t\t\tclose(phy->tx_fd);\n \t\t\tclose(phy->rx_fd);\ndiff --git a/peripheral/main.c b/peripheral/main.c\nindex 91adb45fc..b82d7caf6 100644\n--- a/peripheral/main.c\n+++ b/peripheral/main.c\n@@ -25,13 +25,13 @@\n #include <sys/stat.h>\n #include <sys/types.h>\n #include <sys/mount.h>\n-#include <sys/random.h>\n \n #ifndef WAIT_ANY\n #define WAIT_ANY (-1)\n #endif\n \n #include \"src/shared/mainloop.h\"\n+#include \"src/shared/util.h\"\n #include \"peripheral/efivars.h\"\n #include \"peripheral/attach.h\"\n #include \"peripheral/gap.h\"\n@@ -192,7 +192,7 @@ int main(int argc, char *argv[])\n \t\t\t\t\t\t\taddr, 6) < 0) {\n \t\t\tprintf(\"Generating new persistent static address\\n\");\n \n-\t\t\tif (getrandom(addr, sizeof(addr), 0) < 0) {\n+\t\t\tif (util_getrandom(addr, sizeof(addr), 0) < 0) {\n \t\t\t\tperror(\"Failed to get random static address\");\n \t\t\t\treturn EXIT_FAILURE;\n \t\t\t}\ndiff --git a/plugins/autopair.c b/plugins/autopair.c\nindex a75ecebe4..0b09e893f 100644\n--- a/plugins/autopair.c\n+++ b/plugins/autopair.c\n@@ -17,7 +17,6 @@\n #include <fcntl.h>\n #include <unistd.h>\n #include <errno.h>\n-#include <sys/random.h>\n \n #include <glib.h>\n \n@@ -29,6 +28,7 @@\n #include \"src/device.h\"\n #include \"src/log.h\"\n #include \"src/storage.h\"\n+#include \"src/shared/util.h\"\n \n /*\n  * Plugin to handle automatic pairing of devices with reduced user\n@@ -131,7 +131,7 @@ static ssize_t autopair_pincb(struct btd_adapter *adapter,\n \t\t\tif (attempt >= 4)\n \t\t\t\treturn 0;\n \n-\t\t\tif (getrandom(&val, sizeof(val), 0) < 0) {\n+\t\t\tif (util_getrandom(&val, sizeof(val), 0) < 0) {\n \t\t\t\terror(\"Failed to get a random pincode\");\n \t\t\t\treturn 0;\n \t\t\t}\ndiff --git a/profiles/health/hdp.c b/profiles/health/hdp.c\nindex 9d9d1e824..b6590cd3a 100644\n--- a/profiles/health/hdp.c\n+++ b/profiles/health/hdp.c\n@@ -16,7 +16,6 @@\n #include <stdint.h>\n #include <stdbool.h>\n #include <unistd.h>\n-#include <sys/random.h>\n \n #include <glib.h>\n \n@@ -33,6 +32,7 @@\n #include \"src/device.h\"\n #include \"src/sdpd.h\"\n #include \"src/shared/timeout.h\"\n+#include \"src/shared/util.h\"\n #include \"btio/btio.h\"\n \n #include \"hdp_types.h\"\n@@ -1490,7 +1490,7 @@ static void *generate_echo_packet(void)\n \tif (!buf)\n \t\treturn NULL;\n \n-\tif (getrandom(buf, HDP_ECHO_LEN, 0) < 0) {\n+\tif (util_getrandom(buf, HDP_ECHO_LEN, 0) < 0) {\n \t\tg_free(buf);\n \t\treturn NULL;\n \t}\ndiff --git a/profiles/health/mcap.c b/profiles/health/mcap.c\nindex aad0a08a3..5d2bac3d9 100644\n--- a/profiles/health/mcap.c\n+++ b/profiles/health/mcap.c\n@@ -19,7 +19,6 @@\n #include <errno.h>\n #include <unistd.h>\n #include <time.h>\n-#include <sys/random.h>\n \n #include <glib.h>\n \n@@ -28,6 +27,7 @@\n #include \"btio/btio.h\"\n #include \"src/log.h\"\n #include \"src/shared/timeout.h\"\n+#include \"src/shared/util.h\"\n \n #include \"mcap.h\"\n \n@@ -1905,7 +1905,7 @@ gboolean mcap_create_mcl(struct mcap_instance *mi,\n \t\tmcl->state = MCL_IDLE;\n \t\tbacpy(&mcl->addr, addr);\n \t\tset_default_cb(mcl);\n-\t\tif (getrandom(&val, sizeof(val), 0) < 0) {\n+\t\tif (util_getrandom(&val, sizeof(val), 0) < 0) {\n \t\t\tmcap_instance_unref(mcl->mi);\n \t\t\tg_free(mcl);\n \t\t\treturn FALSE;\n@@ -2049,7 +2049,7 @@ static void connect_mcl_event_cb(GIOChannel *chan, GError *gerr,\n \t\tmcl->mi = mcap_instance_ref(mi);\n \t\tbacpy(&mcl->addr, &dst);\n \t\tset_default_cb(mcl);\n-\t\tif (getrandom(&val, sizeof(val), 0) < 0) {\n+\t\tif (util_getrandom(&val, sizeof(val), 0) < 0) {\n \t\t\tmcap_instance_unref(mcl->mi);\n \t\t\tg_free(mcl);\n \t\t\tgoto drop;\ndiff --git a/src/shared/util.c b/src/shared/util.c\nindex 6e1c83057..33196bf8b 100644\n--- a/src/shared/util.c\n+++ b/src/shared/util.c\n@@ -13,6 +13,7 @@\n #endif\n \n #define _GNU_SOURCE\n+#include <fcntl.h>\n #include <stdio.h>\n #include <ctype.h>\n #include <stdbool.h>\n@@ -23,6 +24,10 @@\n #include <limits.h>\n #include <string.h>\n \n+#ifdef HAVE_SYS_RANDOM_H\n+#include <sys/random.h>\n+#endif\n+\n #include \"src/shared/util.h\"\n \n void *util_malloc(size_t size)\n@@ -138,6 +143,26 @@ unsigned char util_get_dt(const char *parent, const char *name)\n \treturn DT_UNKNOWN;\n }\n \n+/* Helper for getting a random in case getrandom unavailable (glibc < 2.25) */\n+ssize_t util_getrandom(void *buf, size_t buflen, unsigned int flags)\n+{\n+#ifdef HAVE_GETRANDOM\n+\treturn getrandom(buf, buflen, flags);\n+#else\n+\tint fd;\n+\tssize_t bytes;\n+\n+\tfd = open(\"/dev/urandom\", O_CLOEXEC);\n+\tif (fd < 0)\n+\t\treturn -1;\n+\n+\tbytes = read(fd, buf, buflen);\n+\tclose(fd);\n+\n+\treturn bytes;\n+#endif\n+}\n+\n /* Helpers for bitfield operations */\n \n /* Find unique id in range from 1 to max but no bigger than 64. */\ndiff --git a/src/shared/util.h b/src/shared/util.h\nindex 8ef6132c4..c01eccf8a 100644\n--- a/src/shared/util.h\n+++ b/src/shared/util.h\n@@ -103,6 +103,8 @@ void util_hexdump(const char dir, const unsigned char *buf, size_t len,\n \n unsigned char util_get_dt(const char *parent, const char *name);\n \n+ssize_t util_getrandom(void *buf, size_t buflen, unsigned int flags);\n+\n uint8_t util_get_uid(uint64_t *bitmap, uint8_t max);\n void util_clear_uid(uint64_t *bitmap, uint8_t id);\n \ndiff --git a/tools/btgatt-server.c b/tools/btgatt-server.c\nindex 15d49a464..4a5d2b720 100644\n--- a/tools/btgatt-server.c\n+++ b/tools/btgatt-server.c\n@@ -20,7 +20,6 @@\n #include <getopt.h>\n #include <unistd.h>\n #include <errno.h>\n-#include <sys/random.h>\n \n #include \"lib/bluetooth.h\"\n #include \"lib/hci.h\"\n@@ -287,7 +286,7 @@ static bool hr_msrmt_cb(void *user_data)\n \tuint32_t cur_ee;\n \tuint32_t val;\n \n-\tif (getrandom(&val, sizeof(val), 0) < 0)\n+\tif (util_getrandom(&val, sizeof(val), 0) < 0)\n \t\treturn false;\n \n \tpdu[0] = 0x06;\n-- \ncgit \n\n"
  },
  {
    "path": "package/bluez5_utils/Config.in",
    "content": "config BR2_PACKAGE_BLUEZ5_UTILS\n\tbool \"bluez-utils\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2\n\tdepends on BR2_USE_MMU # dbus\n\tdepends on !BR2_STATIC_LIBS # uses dlfcn\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  BlueZ utils\n\n\t  Provides Stack, Library and Tooling for Bluetooth Classic\n\t  and Bluetooth LE.\n\n\t  BlueZ utils will use systemd and/or udev if enabled.\n\n\t  http://www.bluez.org\n\t  http://www.kernel.org/pub/linux/bluetooth\n\nif BR2_PACKAGE_BLUEZ5_UTILS\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_OBEX\n\tbool \"build OBEX support\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_LIBICAL\n\thelp\n\t  Enable OBEX support.\n\ncomment \"OBEX support needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_CLIENT\n\tbool \"build CLI client\"\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  Build the command line client \"bluetoothctl\".\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_MONITOR\n\tbool \"build monitor utility\"\n\thelp\n\t  Build monitor utility btmon.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_TOOLS\n\tbool \"build tools\"\n\thelp\n\t  Build tools like bluemoon, btattach, hex2hcd, l2test,\n\t  l2ping, mpris-proxy, rctest.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED\n\tbool \"install deprecated tools\"\n\tdepends on BR2_PACKAGE_BLUEZ5_UTILS_CLIENT || BR2_PACKAGE_BLUEZ5_UTILS_TOOLS\n\thelp\n\t  Build deprecated tools.\n\n\t  When \"build tools\" is selected these tools are installed:\n\t  hciattach, hciconfig, hcitool, hcidump, rfcomm, sdptool,\n\t  ciptool.\n\n\t  When CLI client is enabled \"gatttool\" is installed.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL\n\tbool \"build experimental tools\"\n\thelp\n\t  Build experimental tools. This is currently only the\n\t  \"Nokia OBEX PC Suite tool\". So, only if OBEX support is\n\t  enabled this option has an effect.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO\n\tbool \"build audio plugins (a2dp and avrcp)\"\n\thelp\n\t  Build plugins for audio profiles (for A2DP and AVRCP).\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH\n\tbool \"build health plugin\"\n\thelp\n\t  Build plugin for health profiles.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID\n\tbool \"build hid plugin\"\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HOG\n\thelp\n\t  Build plugin for HID (input) profiles.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HOG\n\tbool \"build hog plugin\"\n\thelp\n\t  Build plugin for HoG (input) profiles.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MESH\n\tbool \"build mesh plugin\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 # ell\n\tselect BR2_PACKAGE_ELL\n\tselect BR2_PACKAGE_JSON_C\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  Build plugin for Mesh support.\n\ncomment \"mesh profile needs a toolchain w/ headers >= 4.12\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI\n\tbool \"build midi plugin\"\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\thelp\n\t  Build MIDI support via ALSA sequencer.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NETWORK\n\tbool \"build network plugin\"\n\tdefault y\n\thelp\n\t  Build plugin for PANU, NAP, GN profiles.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC\n\tbool \"build nfc plugin\"\n\thelp\n\t  Build plugin for NFC pairing.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP\n\tbool \"build sap plugin\"\n\thelp\n\t  Build plugin for SAP profile.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS\n\tbool \"build sixaxis plugin\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID # runtime\n\thelp\n\t  Build sixaxis plugin (support Sony Dualshock\n\t  controller)\n\ncomment \"sixaxis plugin needs udev /dev management\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_TEST\n\tbool \"install test scripts\"\n\thelp\n\t  Install the python test scripts from the \"test\" directory.\n\nconfig BR2_PACKAGE_BLUEZ5_UTILS_TOOLS_HID2HCI\n\tbool \"build hid2hci tool\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID # runtime\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_TOOLS\n\thelp\n\t  Build hid2hci tool\n\ncomment \"hid2hci tool needs udev /dev management\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n\nendif\n\ncomment \"bluez5-utils needs a toolchain w/ wchar, threads, headers >= 3.4, dynamic library\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 || BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/bluez5_utils/S40bluetooth",
    "content": "#!/bin/sh\n\nDAEMON=\"bluetoothd\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nBLUETOOTHD_ARGS=\"-n\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -m -b -p \"$PIDFILE\" -x \"/usr/libexec/bluetooth/$DAEMON\" \\\n\t\t-- $BLUETOOTHD_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\nreload() {\n\tprintf 'Reloading %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -s HUP -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\ncase \"$1\" in\n\tstart|stop|restart|reload)\n\t\t\"$1\";;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/bluez5_utils/bluez5_utils.hash",
    "content": "# From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc:\nsha256  9349e11e8160bb3d720835d271250d8a7424d3690f5289e6db6fe07cc66c6d76  bluez-5.63.tar.xz\n# Locally computed\nsha256  b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259  COPYING\nsha256  ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5  COPYING.LIB\n"
  },
  {
    "path": "package/bluez5_utils/bluez5_utils.mk",
    "content": "################################################################################\n#\n# bluez5_utils\n#\n################################################################################\n\n# Keep the version and patches in sync with bluez5_utils-headers\nBLUEZ5_UTILS_VERSION = 5.63\nBLUEZ5_UTILS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz\nBLUEZ5_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth\nBLUEZ5_UTILS_INSTALL_STAGING = YES\nBLUEZ5_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+\nBLUEZ5_UTILS_LICENSE_FILES = COPYING COPYING.LIB\nBLUEZ5_UTILS_CPE_ID_VENDOR = bluez\nBLUEZ5_UTILS_CPE_ID_PRODUCT = bluez\n# We're patching Makefile.am and configure.ac\nBLUEZ5_UTILS_AUTORECONF = YES\n\nBLUEZ5_UTILS_DEPENDENCIES = \\\n\t$(if $(BR2_PACKAGE_BLUEZ5_UTILS_HEADERS),bluez5_utils-headers) \\\n\tdbus \\\n\tlibglib2\n\nBLUEZ5_UTILS_CONF_OPTS = \\\n\t--enable-library \\\n\t--disable-cups \\\n\t--disable-manpages \\\n\t--disable-asan \\\n\t--disable-lsan \\\n\t--disable-ubsan \\\n\t--disable-pie \\\n\t--with-dbusconfdir=/etc\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_OBEX),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-obex\nBLUEZ5_UTILS_DEPENDENCIES += libical\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-obex\nendif\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_CLIENT),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-client\nBLUEZ5_UTILS_DEPENDENCIES += readline\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-client\nendif\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_MONITOR),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-monitor\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-monitor\nendif\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_TOOLS),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-tools\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-tools\nendif\n\n# experimental plugins\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-experimental\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-experimental\nendif\n\n# enable audio plugins (a2dp and avrcp)\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-a2dp --enable-avrcp\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-a2dp --disable-avrcp\nendif\n\n# enable health plugin\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-health\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-health\nendif\n\n# enable hid plugin\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-hid\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-hid\nendif\n\n# enable hog plugin\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HOG),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-hog\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-hog\nendif\n\n# enable mesh profile\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MESH),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-external-ell --enable-mesh\nBLUEZ5_UTILS_DEPENDENCIES += ell json-c readline\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-external-ell --disable-mesh\nendif\n\n# enable midi profile\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-midi\nBLUEZ5_UTILS_DEPENDENCIES += alsa-lib\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-midi\nendif\n\n# enable network plugin\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NETWORK),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-network\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-network\nendif\n\n# enable nfc plugin\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-nfc\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-nfc\nendif\n\n# enable sap plugin\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-sap\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-sap\nendif\n\n# enable sixaxis plugin\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-sixaxis\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-sixaxis\nendif\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED),y)\n# install gatttool (For some reason upstream choose not to do it by default)\n# gattool depends on the client for readline\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_CLIENT),y)\ndefine BLUEZ5_UTILS_INSTALL_GATTTOOL\n\t$(INSTALL) -D -m 0755 $(@D)/attrib/gatttool $(TARGET_DIR)/usr/bin/gatttool\nendef\nBLUEZ5_UTILS_POST_INSTALL_TARGET_HOOKS += BLUEZ5_UTILS_INSTALL_GATTTOOL\nendif\n\n# hciattach_bcm43xx defines default firmware path in `/etc/firmware`, but\n# Broadcom firmware blobs are usually located in `/lib/firmware`.\nBLUEZ5_UTILS_CONF_ENV += \\\n\tCPPFLAGS='$(TARGET_CPPFLAGS) -DFIRMWARE_DIR=\\\"/lib/firmware\\\"'\nBLUEZ5_UTILS_CONF_OPTS += --enable-deprecated\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-deprecated\nendif\n\n# enable test\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_TEST),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-test\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-test\nendif\n\n# enable hid2hci tool\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_TOOLS_HID2HCI),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-hid2hci\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-hid2hci\nendif\n\n# use udev if available\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-udev\nBLUEZ5_UTILS_DEPENDENCIES += udev\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-udev\nendif\n\n# integrate with systemd if available\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nBLUEZ5_UTILS_CONF_OPTS += --enable-systemd\nBLUEZ5_UTILS_DEPENDENCIES += systemd\nelse\nBLUEZ5_UTILS_CONF_OPTS += --disable-systemd\nendif\n\ndefine BLUEZ5_UTILS_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/bluez5_utils/S40bluetooth \\\n\t\t$(TARGET_DIR)/etc/init.d/S40bluetooth\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bluez5_utils-headers/Config.in",
    "content": "config BR2_PACKAGE_BLUEZ5_UTILS_HEADERS\n\tbool\n\thelp\n\t  Header files from bluez utils version 5.x\n\n\t  http://www.bluez.org\n\t  http://www.kernel.org/pub/linux/bluetooth\n"
  },
  {
    "path": "package/bluez5_utils-headers/bluez5_utils-headers.mk",
    "content": "################################################################################\n#\n# bluez5_utils-headers\n#\n################################################################################\n\n# Keep the version and patches in sync with bluez5_utils\nBLUEZ5_UTILS_HEADERS_VERSION = 5.63\nBLUEZ5_UTILS_HEADERS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz\nBLUEZ5_UTILS_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth\nBLUEZ5_UTILS_HEADERS_DL_SUBDIR = bluez5_utils\nBLUEZ5_UTILS_HEADERS_LICENSE = GPL-2.0+, LGPL-2.1+\nBLUEZ5_UTILS_HEADERS_LICENSE_FILES = COPYING COPYING.LIB\nBLUEZ5_UTILS_HEADERS_CPE_ID_VENDOR = bluez\nBLUEZ5_UTILS_HEADERS_CPE_ID_PRODUCT = bluez\n\nBLUEZ5_UTILS_HEADERS_INSTALL_STAGING = YES\nBLUEZ5_UTILS_HEADERS_INSTALL_TARGET = NO\n\ndefine BLUEZ5_UTILS_HEADERS_INSTALL_STAGING_CMDS\n\t$(INSTALL) -d $(STAGING_DIR)/usr/include/bluetooth/\n\t$(INSTALL) -m 644 $(@D)/lib/*.h $(STAGING_DIR)/usr/include/bluetooth/\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/bmap-tools/Config.in",
    "content": "config BR2_PACKAGE_BMAP_TOOLS\n\tbool \"bmap-tools\"\n\tdepends on BR2_PACKAGE_PYTHON3 || BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime\n\tselect BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime, pkg_resources\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Tool to flash image files to block devices using the block map\n\t  bmaptool is a generic tool for creating the block map (bmap)\n\t  for a file, and copying files using the block map. The idea is\n\t  that large file containing unused blocks, like raw system\n\t  image files, can be copied or flashed a lot faster with\n\t  bmaptool than with traditional tools like \"dd\" or \"cp\".\n\n\t  Relevant optional dependencies:\n\n\t  - Busybox compiled with CONFIG_BZIP2, or BR2_PACKAGE_BZIP2,\n\t    to support bz2 compressed images\n\n\t  - BR2_PACKAGE_PIGZ for optimized gzip decompression\n\n\t  - Busybox compiled with CONFIG_LZOP, or BR2_PACKAGE_LZOP, to\n\t    support lzo compressed images.\n\n\t  - BR2_PACKAGE_ZIP to support zip compressed images\n\n\t  - BR2_PACKAGE_LZ4 to support lz4 compressed images\n\n\t  - BR2_PACKAGE_ZSTD to support zstd compressed images\n\n\t  - Busybox compiled CONFIG_FEATURE_SEAMLESS_* or\n\t    BR2_PACKAGE_TAR to support tar compressed images\n\n\t  - BR2_PACKAGE_OPENSSH to retrieve images over SSH.\n\n\t  - BR2_PACKAGE_SSHPASS to retrieve images over SSH if\n\t    password authentication is used.\n\n\t  Image signature verification is not supported as\n\t  python-gpgme is not available. Optimized bzip2 decompression\n\t  is not supported as pbzip2 is not available.\n\n\t  https://github.com/intel/bmap-tools\n"
  },
  {
    "path": "package/bmap-tools/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_BMAP_TOOLS\n\tbool \"host bmap-tools\"\n\tselect BR2_PACKAGE_HOST_PYTHON_SIX # runtime\n\thelp\n\t  Tool to flash image files to block devices using the block map\n\t  bmaptool is a generic tool for creating the block map (bmap)\n\t  for a file, and copying files using the block map. The idea is\n\t  that large file containing unused blocks, like raw system\n\t  image files, can be copied or flashed a lot faster with\n\t  bmaptool than with traditional tools like \"dd\" or \"cp\".\n\n\t  https://github.com/intel/bmap-tools\n"
  },
  {
    "path": "package/bmap-tools/bmap-tools.hash",
    "content": "# Locally calculated\nsha256  0658afb972e7221aa16fece3f84e29e5102e901c929253d7fb6040bde28243f7  bmap-tools-3.6.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/bmap-tools/bmap-tools.mk",
    "content": "################################################################################\n#\n# bmap-tools\n#\n################################################################################\n\nBMAP_TOOLS_VERSION = 3.6\nBMAP_TOOLS_SITE = $(call github,intel,bmap-tools,v$(BMAP_TOOLS_VERSION))\nBMAP_TOOLS_LICENSE = GPL-2.0\nBMAP_TOOLS_LICENSE_FILES = COPYING\nBMAP_TOOLS_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/bmon/Config.in",
    "content": "config BR2_PACKAGE_BMON\n\tbool \"bmon\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tselect BR2_PACKAGE_LIBCONFUSE\n\tselect BR2_PACKAGE_LIBNL\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  bmon is a bandwidth monitor capable of retrieving statistics\n\t  from various input modules. It provides various output methods\n\t  including a curses based interface.\n\n\t  https://github.com/tgraf/bmon/\n\ncomment \"bmon needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/bmon/bmon.hash",
    "content": "# Locally calculated\nsha256  02fdc312b8ceeb5786b28bf905f54328f414040ff42f45c83007f24b76cc9f7a  bmon-4.0.tar.gz\nsha256  59ae3d59c672bfb955917a8e32f5cacba7f8ce716c499a4c63dc8cd8cb5c4991  LICENSE.BSD\nsha256  a2a6760c2c6fa779a635e4a7ad00f668862ebcadb2a8a57d16662543e103e08c  LICENSE.MIT\n"
  },
  {
    "path": "package/bmon/bmon.mk",
    "content": "################################################################################\n#\n# bmon\n#\n################################################################################\n\nBMON_VERSION = 4.0\nBMON_SITE = https://github.com/tgraf/bmon/releases/download/v$(BMON_VERSION)\nBMON_DEPENDENCIES = host-pkgconf libconfuse libnl ncurses\nBMON_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'\nBMON_LICENSE = BSD-2-Clause, MIT\nBMON_LICENSE_FILES = LICENSE.BSD LICENSE.MIT\n\n# link dynamically unless explicitly requested otherwise\nifeq ($(BR2_STATIC_LIBS),)\nBMON_CONF_OPTS += --disable-static\nelse\n# forgets to explicitly link with pthread for libnl\nBMON_CONF_OPTS += LIBS=-lpthread\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/boinc/Config.in",
    "content": "config BR2_PACKAGE_BOINC\n\tbool \"boinc\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Open-source software for volunteer computing and grid\n\t  computing.\n\n\t  Use the idle time on your computer to cure diseases, study\n\t  global warming, discover pulsars, and do many other types of\n\t  scientific research.\n\n\t  https://boinc.berkeley.edu\n\ncomment \"boinc needs a toolchain w/ dynamic library, C++, threads, gcc >= 4.8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/boinc/S99boinc-client",
    "content": "#!/bin/sh\n\nNAME=boinc_client\nPIDFILE=/var/run/$NAME.pid\nDAEMON=/usr/bin/$NAME\n\nstart() {\n\tprintf \"Starting $NAME: \"\n\tstart-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping $NAME: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart|reload}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/boinc/boinc.hash",
    "content": "# Locally computed:\nsha256  274388d9c49e488b6c8502ffc6eb605d5ceae391fb0c2fc56dbb0254d0ceb27e  boinc-7.18.1.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\nsha256  a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c  COPYING.LESSER\n"
  },
  {
    "path": "package/boinc/boinc.mk",
    "content": "################################################################################\n#\n# boinc\n#\n################################################################################\n\nBOINC_VERSION_MAJOR = 7.18\nBOINC_VERSION = $(BOINC_VERSION_MAJOR).1\nBOINC_SITE = \\\n\t$(call github,BOINC,boinc,client_release/$(BOINC_VERSION_MAJOR)/$(BOINC_VERSION))\nBOINC_LICENSE = LGPL-3.0+\nBOINC_LICENSE_FILES = COPYING COPYING.LESSER\nBOINC_CPE_ID_VENDOR = rom_walton\nBOINC_SELINUX_MODULES = boinc\nBOINC_DEPENDENCIES = host-pkgconf libcurl openssl\nBOINC_AUTORECONF = YES\n# The ac_cv_c_undeclared_builtin_options value is to help\n# AC_CHECK_DECLS realize that it doesn't need any particular compiler\n# option to get an error when building a program that uses undeclared\n# symbols. Otherwise, AC_CHECK_DECLS is confused by the configure\n# script unconditionally passing -mavx, which only exists on x86, and\n# therefore causes a failure on all other architectures.\nBOINC_CONF_ENV = \\\n\tac_cv_c_undeclared_builtin_options='none needed' \\\n\tac_cv_path__libcurl_config=$(STAGING_DIR)/usr/bin/curl-config\nBOINC_CONF_OPTS = \\\n\t--disable-apps \\\n\t--disable-boinczip \\\n\t--disable-manager \\\n\t--disable-server \\\n\t--enable-client \\\n\t--enable-dynamic-client-linkage \\\n\t--enable-libraries \\\n\t--with-pkg-config=$(PKG_CONFIG_HOST_BINARY) \\\n\t--with-libcurl=$(STAGING_DIR)/usr\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nBOINC_DEPENDENCIES += freetype\nendif\n\nifeq ($(BR2_PACKAGE_LIBFCGI),y)\nBOINC_DEPENDENCIES += libfcgi\nBOINC_CONF_OPTS += --enable-fcgi\nelse\nBOINC_CONF_OPTS += --disable-fcgi\nendif\n\nBOINC_MAKE_OPTS = CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\n\n# Remove boinc-client because it is incompatible with buildroot\ndefine BOINC_REMOVE_UNNEEDED_FILE\n\t$(RM) $(TARGET_DIR)/etc/init.d/boinc-client\nendef\n\nBOINC_POST_INSTALL_TARGET_HOOKS += BOINC_REMOVE_UNNEEDED_FILE\n\ndefine BOINC_USERS\n\tboinc -1 boinc -1 * /var/lib/boinc - BOINC user\nendef\n\ndefine BOINC_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/boinc/S99boinc-client \\\n\t\t$(TARGET_DIR)/etc/init.d/S99boinc-client\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bonnie/Config.in",
    "content": "config BR2_PACKAGE_BONNIE\n\tbool \"bonnie++\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  A benchmark suite that is aimed at performing a number of\n\t  simple tests of hard drive and file system performance.\n\n\t  http://www.coker.com.au/bonnie++/\n\ncomment \"bonnie++ needs a toolchain w/ C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/bonnie/bonnie.hash",
    "content": "# Locally calculated\nsha256\tcb3866116634bf65760b6806be4afa7e24a1cad6f145c876df8721f01ba2e2cb  bonnie++-1.03e.tgz\nsha256  bdfeef85436885bc317fdbae3732b17a39e7910eb855553a83b4d2cf9032e773  copyright.txt\n"
  },
  {
    "path": "package/bonnie/bonnie.mk",
    "content": "################################################################################\n#\n# bonnie\n#\n################################################################################\n\nBONNIE_VERSION = 1.03e\nBONNIE_SOURCE = bonnie++-$(BONNIE_VERSION).tgz\nBONNIE_SITE = http://www.coker.com.au/bonnie++\nBONNIE_LICENSE = GPL-2.0\nBONNIE_LICENSE_FILES = copyright.txt\n\ndefine BONNIE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/bonnie++ $(TARGET_DIR)/usr/sbin/bonnie++\n\t$(INSTALL) -D -m 755 $(@D)/zcav $(TARGET_DIR)/usr/sbin/zcav\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/boost/0001-added-missing-brackets.patch",
    "content": "From 1be0e4a2d8db15a405f64a6f65507b87c1be7e1a Mon Sep 17 00:00:00 2001\nFrom: tkoecker <tkoecker@gmx.net>\nDate: Fri, 21 May 2021 16:31:11 +0200\nSubject: [PATCH] added missing brackets (#118)\n\n[Retrieved from:\nhttps://github.com/boostorg/predef/commit/1be0e4a2d8db15a405f64a6f65507b87c1be7e1a]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/boost/predef/architecture/sparc.h | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/boost/predef/architecture/sparc.h b/boost/predef/architecture/sparc.h\nindex d7b94f0..d01605e 100644\n--- a/boost/predef/architecture/sparc.h\n+++ b//boost/predef/architecture/sparc.h\n@@ -34,10 +34,10 @@ Distributed under the Boost Software License, Version 1.0.\n \n #if defined(__sparc__) || defined(__sparc)\n #   undef BOOST_ARCH_SPARC\n-#   if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv9) || defined(__sparc_v9__)\n+#   if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv9) || defined(__sparc_v9__))\n #       define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(9,0,0)\n #   endif\n-#   if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv8) || defined(__sparc_v8__)\n+#   if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv8) || defined(__sparc_v8__))\n #       define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(8,0,0)\n #   endif\n #   if !defined(BOOST_ARCH_SPARC)\n"
  },
  {
    "path": "package/boost/0002-math-allow-definition-of-boost_math_no_atomic_int-on-the-command-line.patch",
    "content": "From 32bd6197353f6ea8e5bef01f09e25c944141acfc Mon Sep 17 00:00:00 2001\nFrom: jzmaddock <john@johnmaddock.co.uk>\nDate: Wed, 1 Sep 2021 18:54:54 +0100\nSubject: [PATCH] Allow definition of BOOST_MATH_NO_ATOMIC_INT on the command\n line. Allows us to test/emulate platforms with no atomic integers.\n\n[buildroot@heine.tech:\n  - backport from boostorg/math 32bd6197353f6ea8e5bef01f09e25c944141acfc\n  - alter path to match boost release\n]\nSigned-off-by: Michael Nosthoff <buildroot@heine.tech>\n---\n boost/math/tools/atomic.hpp | 10 +++++-----\n 1 file changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/boost/math/tools/atomic.hpp b/boost/math/tools/atomic.hpp\nindex cc76ed269f..e3cbf5db89 100644\n--- a/boost/math/tools/atomic.hpp\n+++ b/boost/math/tools/atomic.hpp\n@@ -16,27 +16,27 @@\n namespace boost {\n    namespace math {\n       namespace detail {\n-#if ATOMIC_INT_LOCK_FREE == 2\n+#if (ATOMIC_INT_LOCK_FREE == 2) && !defined(BOOST_MATH_NO_ATOMIC_INT)\n          typedef std::atomic<int> atomic_counter_type;\n          typedef std::atomic<unsigned> atomic_unsigned_type;\n          typedef int atomic_integer_type;\n          typedef unsigned atomic_unsigned_integer_type;\n-#elif ATOMIC_SHORT_LOCK_FREE == 2\n+#elif (ATOMIC_SHORT_LOCK_FREE == 2) && !defined(BOOST_MATH_NO_ATOMIC_INT)\n          typedef std::atomic<short> atomic_counter_type;\n          typedef std::atomic<unsigned short> atomic_unsigned_type;\n          typedef short atomic_integer_type;\n          typedef unsigned short atomic_unsigned_type;\n-#elif ATOMIC_LONG_LOCK_FREE == 2\n+#elif (ATOMIC_LONG_LOCK_FREE == 2) && !defined(BOOST_MATH_NO_ATOMIC_INT)\n          typedef std::atomic<long> atomic_unsigned_integer_type;\n          typedef std::atomic<unsigned long> atomic_unsigned_type;\n          typedef unsigned long atomic_unsigned_type;\n          typedef long atomic_integer_type;\n-#elif ATOMIC_LLONG_LOCK_FREE == 2\n+#elif (ATOMIC_LLONG_LOCK_FREE == 2) && !defined(BOOST_MATH_NO_ATOMIC_INT)\n          typedef std::atomic<long long> atomic_unsigned_integer_type;\n          typedef std::atomic<unsigned long long> atomic_unsigned_type;\n          typedef long long atomic_integer_type;\n          typedef unsigned long long atomic_unsigned_integer_type;\n-#else\n+#elif !defined(BOOST_MATH_NO_ATOMIC_INT)\n #  define BOOST_MATH_NO_ATOMIC_INT\n #endif\n       } // Namespace detail\n"
  },
  {
    "path": "package/boost/0003-math-make-no-atomics-a-soft-failure-in-bernoulli_details_hpp.patch",
    "content": "From 7d482f6ebc356e6ec455ccb5f51a23971bf6ce5b Mon Sep 17 00:00:00 2001\nFrom: jzmaddock <john@johnmaddock.co.uk>\nDate: Wed, 1 Sep 2021 20:31:53 +0100\nSubject: [PATCH] Make no atomics a soft failure in bernoulli_details.hpp.\n Include an \"escape macro\" so thread safety can be disabled if certain\n bernoulli features are to be used in a no-atomics environment. Fixes\n https://github.com/boostorg/math/issues/673.\n\n[buildroot@heine.tech:\n  - backport from boostorg/math 7d482f6ebc356e6ec455ccb5f51a23971bf6ce5b\n  - alter path to match boost release\n]\nSigned-off-by: Michael Nosthoff <buildroot@heine.tech>\n---\n .../detail/bernoulli_details.hpp                 | 10 +++++++---\n libs/math/test/Jamfile.v2                        |  3 +++\n test/compile_test/bernoulli_no_atomic_d.cpp      | 14 ++++++++++++++\n test/compile_test/bernoulli_no_atomic_fail.cpp   | 15 +++++++++++++++\n test/compile_test/bernoulli_no_atomic_mp.cpp     | 16 ++++++++++++++++\n 5 files changed, 55 insertions(+), 3 deletions(-)\n create mode 100644 test/compile_test/bernoulli_no_atomic_d.cpp\n create mode 100644 test/compile_test/bernoulli_no_atomic_fail.cpp\n create mode 100644 test/compile_test/bernoulli_no_atomic_mp.cpp\n\ndiff --git a/boost/math/special_functions/detail/bernoulli_details.hpp b/boost/math/special_functions/detail/bernoulli_details.hpp\nindex cf35545264..8519b7c89c 100644\n--- a/boost/math/special_functions/detail/bernoulli_details.hpp\n+++ b/boost/math/special_functions/detail/bernoulli_details.hpp\n@@ -360,7 +360,7 @@ class bernoulli_numbers_cache\n          return out;\n       }\n \n-      #ifndef BOOST_HAS_THREADS\n+      #if !defined(BOOST_HAS_THREADS) || defined(BOOST_MATH_BERNOULLI_UNTHREADED)\n       //\n       // Single threaded code, very simple:\n       //\n@@ -382,6 +382,8 @@ class bernoulli_numbers_cache\n          *out = (i >= m_overflow_limit) ? policies::raise_overflow_error<T>(\"boost::math::bernoulli_b2n<%1%>(std::size_t)\", 0, T(i), pol) : bn[i];\n          ++out;\n       }\n+      #elif defined(BOOST_MATH_NO_ATOMIC_INT)\n+      static_assert(sizeof(T) == 1, \"Unsupported configuration: your platform appears to have no atomic integers.  If you are happy with thread-unsafe code, then you may define BOOST_MATH_BERNOULLI_UNTHREADED to suppress this error.\");\n       #else\n       //\n       // Double-checked locking pattern, lets us access cached already cached values\n@@ -464,7 +466,7 @@ class bernoulli_numbers_cache\n          return out;\n       }\n \n-      #ifndef BOOST_HAS_THREADS\n+      #if !defined(BOOST_HAS_THREADS) || defined(BOOST_MATH_BERNOULLI_UNTHREADED)\n       //\n       // Single threaded code, very simple:\n       //\n@@ -494,6 +496,8 @@ class bernoulli_numbers_cache\n          }\n          ++out;\n       }\n+      #elif defined(BOOST_MATH_NO_ATOMIC_INT)\n+      static_assert(sizeof(T) == 1, \"Unsupported configuration: your platform appears to have no atomic integers.  If you are happy with thread-unsafe code, then you may define BOOST_MATH_BERNOULLI_UNTHREADED to suppress this error.\");\n       #else\n       //\n       // Double-checked locking pattern, lets us access cached already cached values\n@@ -555,7 +559,7 @@ class bernoulli_numbers_cache\n    // The value at which we know overflow has already occurred for the Bn:\n    std::size_t m_overflow_limit;\n \n-   #ifdef BOOST_HAS_THREADS\n+   #if defined(BOOST_HAS_THREADS) && !defined(BOOST_MATH_NO_ATOMIC_INT)\n    std::mutex m_mutex;\n    atomic_counter_type m_counter, m_current_precision;\n    #else\ndiff --git a/libs/math/test/Jamfile.v2 b/libs/math/test/Jamfile.v2\nindex 52fb87f5e5..3ac63f9279 100644\n--- a/libs/math/test/Jamfile.v2\n+++ b/libs/math/test/Jamfile.v2\n@@ -1137,6 +1137,9 @@ test-suite misc :\n \n #   [ run __temporary_test.cpp test_instances//test_instances : : : <test-info>always_show_run_output <pch>off ]\n    [ compile test_no_long_double_policy.cpp ]\n+   [ compile compile_test/bernoulli_no_atomic_d.cpp ]\n+   [ compile compile_test/bernoulli_no_atomic_mp.cpp ]\n+   [ compile-fail compile_test/bernoulli_no_atomic_fail.cpp ]\n ;\n \n test-suite interpolators :\ndiff --git a/test/compile_test/bernoulli_no_atomic_d.cpp b/test/compile_test/bernoulli_no_atomic_d.cpp\nnew file mode 100644\nindex 0000000000..61926f7e1f\n--- /dev/null\n+++ b/test/compile_test/bernoulli_no_atomic_d.cpp\n@@ -0,0 +1,14 @@\n+//  (C) Copyright John Maddock 2021.\n+//  Use, modification and distribution are subject to the\n+//  Boost Software License, Version 1.0. (See accompanying file\n+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n+\n+#define BOOST_MATH_NO_ATOMIC_INT\n+\n+#include <boost/math/special_functions/bernoulli.hpp>\n+#include \"test_compile_result.hpp\"\n+\n+void compile_and_link_test()\n+{\n+   check_result<double>(boost::math::bernoulli_b2n<double>(4));\n+}\ndiff --git a/test/compile_test/bernoulli_no_atomic_fail.cpp b/test/compile_test/bernoulli_no_atomic_fail.cpp\nnew file mode 100644\nindex 0000000000..bbd7152412\n--- /dev/null\n+++ b/test/compile_test/bernoulli_no_atomic_fail.cpp\n@@ -0,0 +1,15 @@\n+//  (C) Copyright John Maddock 2021.\n+//  Use, modification and distribution are subject to the\n+//  Boost Software License, Version 1.0. (See accompanying file\n+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n+\n+#define BOOST_MATH_NO_ATOMIC_INT\n+\n+#include <boost/math/special_functions/bernoulli.hpp>\n+#include <boost/multiprecision/cpp_bin_float.hpp>\n+#include \"test_compile_result.hpp\"\n+\n+void compile_and_link_test()\n+{\n+   check_result<boost::multiprecision::cpp_bin_float_50>(boost::math::bernoulli_b2n<boost::multiprecision::cpp_bin_float_50>(4));\n+}\ndiff --git a/test/compile_test/bernoulli_no_atomic_mp.cpp b/test/compile_test/bernoulli_no_atomic_mp.cpp\nnew file mode 100644\nindex 0000000000..8d5a6e78e6\n--- /dev/null\n+++ b/test/compile_test/bernoulli_no_atomic_mp.cpp\n@@ -0,0 +1,16 @@\n+//  (C) Copyright John Maddock 2021.\n+//  Use, modification and distribution are subject to the\n+//  Boost Software License, Version 1.0. (See accompanying file\n+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n+\n+#define BOOST_MATH_NO_ATOMIC_INT\n+#define BOOST_MATH_BERNOULLI_UNTHREADED\n+\n+#include <boost/math/special_functions/bernoulli.hpp>\n+#include <boost/multiprecision/cpp_bin_float.hpp>\n+#include \"test_compile_result.hpp\"\n+\n+void compile_and_link_test()\n+{\n+   check_result<boost::multiprecision::cpp_bin_float_50>(boost::math::bernoulli_b2n<boost::multiprecision::cpp_bin_float_50>(4));\n+}\n"
  },
  {
    "path": "package/boost/Config.in",
    "content": "comment \"boost needs a toolchain w/ C++, threads, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_BOOST\n\tbool \"boost\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\t# Boost could theorically be built with threading=single, but\n\t# that unfortunately doesn't work. Until someone fixes that,\n\t# let's depend on threads.\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  A general purpose C++ library\n\n\t  http://www.boost.org/\n\nif BR2_PACKAGE_BOOST\n\nchoice\n\tprompt \"Layout\"\n\tdefault BR2_PACKAGE_BOOST_LAYOUT_SYSTEM\n\thelp\n\t  Selects the layout of Boost binary names\n\nconfig BR2_PACKAGE_BOOST_LAYOUT_SYSTEM\n\tbool \"system\"\n\thelp\n\t  Boost binary names do not include the Boost version number\n\t  or the name and version number of the compiler.\n\nconfig BR2_PACKAGE_BOOST_LAYOUT_TAGGED\n\tbool \"tagged\"\n\thelp\n\t  Boost binary names include the encoded build properties such\n\t  as variant and threading, but do not include compiler name\n\t  and version, or Boost version. This option is useful if you\n\t  build several variants of Boost, using the same compiler.\n\nconfig BR2_PACKAGE_BOOST_LAYOUT_VERSIONED\n\tbool \"versioned\"\n\thelp\n\t  Boost binary names include the Boost version number, name\n\t  and version of the compiler and encoded build properties.\n\nendchoice\n\nconfig BR2_PACKAGE_BOOST_LAYOUT\n\tstring\n\tdefault \"system\" if BR2_PACKAGE_BOOST_LAYOUT_SYSTEM\n\tdefault \"tagged\" if BR2_PACKAGE_BOOST_LAYOUT_TAGGED\n\tdefault \"versioned\" if BR2_PACKAGE_BOOST_LAYOUT_VERSIONED\n\nconfig BR2_PACKAGE_BOOST_ATOMIC\n\tbool \"boost-atomic\"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\thelp\n\t  C++11-style atomic<>.\n\nconfig BR2_PACKAGE_BOOST_CHRONO\n\tbool \"boost-chrono\"\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\thelp\n\t  Useful time utilities. C++11.\n\nconfig BR2_PACKAGE_BOOST_CONTAINER\n\tbool \"boost-container\"\n\thelp\n\t  Standard library containers and extensions.\n\n# see\n# http://www.boost.org/doc/libs/1_59_0/libs/context/doc/html/context/architectures.html\n# for the list of supported architectures. Sparc pretends to be\n# supported, but it doesn't build.\nconfig BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS\n\tbool\n\tdefault y if ((BR2_arm || BR2_armeb) && BR2_ARM_CPU_HAS_ARM)\n\tdefault y if BR2_i386\n\tdefault y if BR2_mips\n\tdefault y if BR2_mipsel\n\tdefault y if BR2_powerpc\n\tdefault y if BR2_x86_64\n\nconfig BR2_PACKAGE_BOOST_CONTEXT\n\tbool \"boost-context\"\n\tdepends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS \\\n\t\t|| BR2_TOOLCHAIN_GCC_AT_LEAST_6 # boost-thread\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\tselect BR2_PACKAGE_BOOST_THREAD if !BR2_TOOLCHAIN_GCC_AT_LEAST_6\n\thelp\n\t  C++11 context switching library.\n\nconfig BR2_PACKAGE_BOOST_CONTRACT\n\tbool \"boost-contract\"\n\t# pthread_condattr_setclock\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\thelp\n\t  Contract programming for C++.\n\ncomment \"boost-contract needs a toolchain w/ NPTL\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\nconfig BR2_PACKAGE_BOOST_COROUTINE\n\tbool \"boost-coroutine\"\n\tdepends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context, boost-thread\n\tselect BR2_PACKAGE_BOOST_CHRONO\n\tselect BR2_PACKAGE_BOOST_CONTEXT\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_THREAD\n\thelp\n\t  deprecated coroutine library, the non-depricated coroutine2\n\t  library is a header-only library and does not need to be\n\t  selected.\n\ncomment \"boost-coroutine needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nconfig BR2_PACKAGE_BOOST_DATE_TIME\n\tbool \"boost-date_time\"\n\thelp\n\t  A set of date-time libraries based on generic programming\n\t  concepts.\n\nconfig BR2_PACKAGE_BOOST_EXCEPTION\n\tbool \"boost-exception\"\n\thelp\n\t  The Boost Exception library supports transporting of arbitrary\n\t  data in exception objects, and transporting of exceptions\n\t  between threads.\n\nconfig BR2_PACKAGE_BOOST_FIBER\n\tbool \"boost-fiber\"\n\tdepends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\t# mips support uses the \"pause\" instruction, only available\n\t# since mips32r2/mips64r2.\n\tdepends on !BR2_MIPS_CPU_MIPS32 && !BR2_MIPS_CPU_MIPS64\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context\n\tselect BR2_PACKAGE_BOOST_CONTEXT\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\thelp\n\t  C++11 userland threads library.\n\ncomment \"boost-fiber needs a toolchain w/ NPTL\"\n\tdepends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\ncomment \"boost-fiber needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_PACKAGE_BOOST_CONTEXT_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS \\\n\t\t|| BR2_TOOLCHAIN_GCC_AT_LEAST_6\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nconfig BR2_PACKAGE_BOOST_FILESYSTEM\n\tbool \"boost-filesystem\"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic\n\tselect BR2_PACKAGE_BOOST_ATOMIC\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\thelp\n\t  The Boost Filesystem Library provides portable facilities to\n\t  query and manipulate paths, files, and directories.\n\nconfig BR2_PACKAGE_BOOST_GRAPH\n\tbool \"boost-graph\"\n\tselect BR2_PACKAGE_BOOST_REGEX\n\thelp\n\t  The BGL graph interface and graph components are generic, in\n\t  the same sense as the the Standard Template Library (STL).\n\nconfig BR2_PACKAGE_BOOST_GRAPH_PARALLEL\n\tbool \"boost-graph_parallel\"\n\thelp\n\t  The PBGL graph interface and graph components are generic, in\n\t  the same sense as the the Standard Template Library (STL).\n\nconfig BR2_PACKAGE_BOOST_IOSTREAMS\n\tbool \"boost-iostreams\"\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Boost.IOStreams provides a framework for defining streams,\n\t  stream buffers and i/o filters.\n\nconfig BR2_PACKAGE_BOOST_JSON\n\tbool \"boost-json\"\n\tselect BR2_PACKAGE_BOOST_CONTAINER\n\thelp\n\t  Boost.JSON is a portable C++ library which provides containers\n\t  and algorithms that implement JavaScript Object Notation, or\n\t  simply \"JSON\", a lightweight data-interchange format.\n\n\t  To use the library \"header-only\" this option is not needed.\n\nconfig BR2_PACKAGE_BOOST_LOCALE\n\tbool \"boost-locale\"\n\t# When boost-locale is enabled with icu support, Boost no\n\t# longer supports building the libboost_* libraries as static\n\t# libraries, causing build failures when other boost features\n\t# than boost-locale are enabled. To work around this, we\n\t# prevent using boost-locale on static linking configurations\n\t# with icu enabled. See\n\t# https://svn.boost.org/trac/boost/ticket/9685 for more\n\t# details.\n\tdepends on !(BR2_STATIC_LIBS && BR2_PACKAGE_ICU)\n\tdepends on !(BR2_TOOLCHAIN_HAS_GCC_BUG_64735 && BR2_PACKAGE_ICU) # boost-thread\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS \\\n\t\t|| !BR2_PACKAGE_ICU # boost-thread\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_THREAD if BR2_PACKAGE_ICU\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Provide localization and Unicode handling tools for C++.\n\ncomment \"boost-locale needs a toolchain w/ dynamic library\"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on BR2_PACKAGE_ICU\n\tdepends on BR2_STATIC_LIBS\n\ncomment \"boost-locale needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on BR2_PACKAGE_ICU\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nconfig BR2_PACKAGE_BOOST_LOG\n\tbool \"boost-log\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread\n\tselect BR2_PACKAGE_BOOST_ATOMIC\n\tselect BR2_PACKAGE_BOOST_DATE_TIME\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\tselect BR2_PACKAGE_BOOST_REGEX\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_THREAD\n\thelp\n\t  Logging library.\n\ncomment \"boost-log needs a toolchain w/ NPTL\"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\ncomment \"boost-log needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nconfig BR2_PACKAGE_BOOST_MATH\n\tbool \"boost-math\"\n\thelp\n\t  Boost.Math includes several contributions in the domain of\n\t  mathematics:\n\n\t  The Greatest Common Divisor and Least Common\n\t  Multiple library provides run-time and compile-time evaluation\n\t  of the greatest common divisor (GCD) or least common multiple\n\t  (LCM) of two integers.\n\n\t  The Special Functions library currently provides eight\n\t  templated special functions, in namespace boost.\n\n\t  The Complex Number Inverse Trigonometric Functions are the\n\t  inverses of trigonometric functions currently present in the\n\t  C++ standard.\n\n\t  Quaternions are a relative of complex numbers often used to\n\t  parameterise rotations in three dimentional space.\n\n\t  Octonions, like quaternions, are a relative of complex\n\t  numbers.\n\nconfig BR2_PACKAGE_BOOST_MPI\n\tbool \"boost-mpi\"\n\thelp\n\t  Message Passing Interface library, for use in\n\t  distributed-memory parallel application programming.\n\nconfig BR2_PACKAGE_BOOST_NOWIDE\n\tbool \"boost-nowide\"\n\thelp\n\t  Library for cross-platform, unicode aware programming.\n\nconfig BR2_PACKAGE_BOOST_PROGRAM_OPTIONS\n\tbool \"boost-program_options\"\n\thelp\n\t  The program_options library allows program developers to\n\t  obtain program options, that is (name, value) pairs from the\n\t  user, via conventional methods such as command line and config\n\t  file.\n\nconfig BR2_PACKAGE_BOOST_PYTHON\n\tbool \"boost-python\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\thelp\n\t  The Boost Python Library is a framework for interfacing Python\n\t  and C++. It allows you to quickly and seamlessly expose C++\n\t  classes functions and objects to Python, and vice-versa,\n\t  using no special tools -- just your C++ compiler.\n\nconfig BR2_PACKAGE_BOOST_RANDOM\n\tbool \"boost-random\"\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\thelp\n\t  A complete system for random number generation.\n\nconfig BR2_PACKAGE_BOOST_REGEX\n\tbool \"boost-regex\"\n\thelp\n\t  A new infrastructure for generic algorithms that builds on top\n\t  of the new iterator concepts.\n\nconfig BR2_PACKAGE_BOOST_SERIALIZATION\n\tbool \"boost-serialization\"\n\thelp\n\t  Serialization for persistence and marshalling.\n\nconfig BR2_PACKAGE_BOOST_STACKTRACE\n\tbool \"boost-stacktrace\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Gather, store, copy and print backtraces.\n\ncomment \"boost-stacktrace needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_BOOST_SYSTEM\n\tbool \"boost-system\"\n\thelp\n\t  Operating system support, including the diagnostics support\n\t  that will be part of the C++0x standard library.\n\nconfig BR2_PACKAGE_BOOST_TEST\n\tbool \"boost-test\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_TIMER\n\thelp\n\t  Support for simple program testing, full unit testing, and for\n\t  program execution monitoring.\n\nconfig BR2_PACKAGE_BOOST_THREAD\n\tbool \"boost-thread\"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::current_exception\n\tselect BR2_PACKAGE_BOOST_CHRONO\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\thelp\n\t  Portable C++ multi-threading. C++11, C++14.\n\ncomment \"boost-thread needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nconfig BR2_PACKAGE_BOOST_TIMER\n\tbool \"boost-timer\"\n\tselect BR2_PACKAGE_BOOST_CHRONO\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\thelp\n\t  Event timer, progress timer, and progress display classes.\n\nconfig BR2_PACKAGE_BOOST_TYPE_ERASURE\n\tbool \"boost-type_erasure\"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_THREAD\n\thelp\n\t  Runtime polymorphism based on concepts.\n\ncomment \"boost-type_erasure needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nconfig BR2_PACKAGE_BOOST_WAVE\n\tbool \"boost-wave\"\n\t# limitation of assembler for coldfire\n\t# error: Tried to convert PC relative branch to absolute jump\n\tdepends on !BR2_m68k_cf\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread\n\tselect BR2_PACKAGE_BOOST_DATE_TIME\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_THREAD\n\thelp\n\t  The Boost.Wave library is a Standards conformant, and highly\n\t  configurable implementation of the mandated C99/C++\n\t  preprocessor functionality packed behind an easy to use\n\t  iterator interface.\n\ncomment \"boost-wave needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nendif\n"
  },
  {
    "path": "package/boost/boost.hash",
    "content": "# From https://www.boost.org/users/history/version_1_77_0.html\nsha256  fc9f85fc030e233142908241af7a846e60630aa7388de9a5fafb1f3a26840854  boost_1_77_0.tar.bz2\n\n# Locally computed\nsha256  c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566  LICENSE_1_0.txt\n"
  },
  {
    "path": "package/boost/boost.mk",
    "content": "################################################################################\n#\n# boost\n#\n################################################################################\n\nBOOST_VERSION = 1.77.0\nBOOST_SOURCE = boost_$(subst .,_,$(BOOST_VERSION)).tar.bz2\nBOOST_SITE = https://boostorg.jfrog.io/artifactory/main/release/$(BOOST_VERSION)/source\nBOOST_INSTALL_STAGING = YES\nBOOST_LICENSE = BSL-1.0\nBOOST_LICENSE_FILES = LICENSE_1_0.txt\nBOOST_CPE_ID_VENDOR = boost\n\n# keep host variant as minimal as possible\nHOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \\\n\t--without-libraries=$(subst $(space),$(comma),atomic chrono context \\\n\tcontract container coroutine date_time exception fiber filesystem graph \\\n\tgraph_parallel iostreams json locale log math mpi nowide program_options \\\n\tpython random regex serialization stacktrace system test thread timer \\\n\ttype_erasure wave)\n\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_ATOMIC),,atomic)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTAINER),,container)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTEXT),,context)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTRACT),,contract)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_COROUTINE),,coroutine)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_DATE_TIME),,date_time)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_EXCEPTION),,exception)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FIBER),,fiber)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FILESYSTEM),,filesystem)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH),,graph)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH_PARALLEL),,graph_parallel)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_IOSTREAMS),,iostreams)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_JSON),,json)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOCALE),,locale)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOG),,log)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MATH),,math)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MPI),,mpi)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_NOWIDE),,nowide)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PROGRAM_OPTIONS),,program_options)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PYTHON),,python)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_RANDOM),,random)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_REGEX),,regex)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SERIALIZATION),,serialization)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_STACKTRACE),,stacktrace)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SYSTEM),,system)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TEST),,test)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_THREAD),,thread)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TIMER),,timer)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TYPE_ERASURE),,type_erasure)\nBOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_WAVE),,wave)\n\nBOOST_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nBOOST_FLAGS = --with-toolset=gcc\n\nifeq ($(BR2_PACKAGE_ICU),y)\nBOOST_FLAGS += --with-icu=$(STAGING_DIR)/usr\nBOOST_DEPENDENCIES += icu\nelse\nBOOST_FLAGS += --without-icu\nendif\n\nifeq ($(BR2_PACKAGE_BOOST_IOSTREAMS),y)\nBOOST_DEPENDENCIES += bzip2 zlib\nendif\n\nifeq ($(BR2_PACKAGE_BOOST_PYTHON),y)\nBOOST_FLAGS += --with-python-root=$(HOST_DIR)\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nBOOST_FLAGS += --with-python=$(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR)\nBOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR)\nBOOST_DEPENDENCIES += python3\nelse\nBOOST_FLAGS += --with-python=$(HOST_DIR)/bin/python$(PYTHON_VERSION_MAJOR)\nBOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)\nBOOST_DEPENDENCIES += python\nendif\nendif\n\nHOST_BOOST_OPTS += --no-cmake-config toolset=gcc threading=multi \\\n\tvariant=release link=shared runtime-link=shared\n\nifeq ($(BR2_MIPS_OABI32),y)\nBOOST_ABI = o32\nelse ifeq ($(BR2_arm),y)\nBOOST_ABI = aapcs\nelse\nBOOST_ABI = sysv\nendif\n\nBOOST_OPTS += --no-cmake-config \\\n\ttoolset=gcc \\\n\tthreading=multi \\\n\tabi=$(BOOST_ABI) \\\n\tvariant=$(if $(BR2_ENABLE_RUNTIME_DEBUG),debug,release)\n\nifeq ($(BR2_sparc64),y)\nBOOST_OPTS += architecture=sparc instruction-set=ultrasparc\nendif\n\nifeq ($(BR2_sparc),y)\nBOOST_OPTS += architecture=sparc instruction-set=v8\nendif\n\n# By default, Boost build and installs both the shared and static\n# variants. Override that if we want static only or shared only.\nifeq ($(BR2_STATIC_LIBS),y)\nBOOST_OPTS += link=static runtime-link=static\nelse ifeq ($(BR2_SHARED_LIBS),y)\nBOOST_OPTS += link=shared runtime-link=shared\nendif\n\nifeq ($(BR2_PACKAGE_BOOST_LOCALE),y)\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\n# posix backend needs monetary.h which isn't available on uClibc\nBOOST_OPTS += boost.locale.posix=off\nendif\n\nBOOST_DEPENDENCIES += $(if $(BR2_ENABLE_LOCALE),,libiconv)\nendif\n\nBOOST_WITHOUT_FLAGS_COMMASEPARATED += $(subst $(space),$(comma),$(strip $(BOOST_WITHOUT_FLAGS)))\nBOOST_FLAGS += $(if $(BOOST_WITHOUT_FLAGS_COMMASEPARATED), --without-libraries=$(BOOST_WITHOUT_FLAGS_COMMASEPARATED))\nBOOST_LAYOUT = $(call qstrip, $(BR2_PACKAGE_BOOST_LAYOUT))\n\n# how verbose should the build be?\nBOOST_OPTS += $(if $(QUIET),-d,-d+1)\nHOST_BOOST_OPTS += $(if $(QUIET),-d,-d+1)\n\ndefine BOOST_CONFIGURE_CMDS\n\t(cd $(@D) && ./bootstrap.sh $(BOOST_FLAGS))\n\techo \"using gcc : `$(TARGET_CC) -dumpversion` : $(TARGET_CXX) : <cxxflags>\\\"$(BOOST_TARGET_CXXFLAGS)\\\" <linkflags>\\\"$(TARGET_LDFLAGS)\\\" ;\" > $(@D)/user-config.jam\n\techo \"\" >> $(@D)/user-config.jam\n\tsed -i \"s/: -O.* ;/: $(TARGET_OPTIMIZATION) ;/\" $(@D)/tools/build/src/tools/gcc.jam\nendef\n\ndefine BOOST_BUILD_CMDS\n\t(cd $(@D) && $(TARGET_MAKE_ENV) ./tools/build/src/engine/bjam -j$(PARALLEL_JOBS) -q \\\n\t--user-config=$(@D)/user-config.jam \\\n\t$(BOOST_OPTS) \\\n\t--ignore-site-config \\\n\t--layout=$(BOOST_LAYOUT))\nendef\n\ndefine BOOST_INSTALL_TARGET_CMDS\n\t(cd $(@D) && $(TARGET_MAKE_ENV) ./b2 -j$(PARALLEL_JOBS) -q \\\n\t--user-config=$(@D)/user-config.jam \\\n\t$(BOOST_OPTS) \\\n\t--prefix=$(TARGET_DIR)/usr \\\n\t--ignore-site-config \\\n\t--layout=$(BOOST_LAYOUT) install )\nendef\n\ndefine BOOST_INSTALL_STAGING_CMDS\n\t(cd $(@D) && $(TARGET_MAKE_ENV) ./tools/build/src/engine/bjam -j$(PARALLEL_JOBS) -q \\\n\t--user-config=$(@D)/user-config.jam \\\n\t$(BOOST_OPTS) \\\n\t--prefix=$(STAGING_DIR)/usr \\\n\t--ignore-site-config \\\n\t--layout=$(BOOST_LAYOUT) install)\nendef\n\n# These hooks will help us to detect missing select in Config.in\n# Indeed boost buildsystem can select a library even if the user has\n# disable it\ndefine BOOST_REMOVE_TARGET_LIBRARIES\n\trm -rf $(TARGET_DIR)/usr/lib/libboost_*\nendef\n\nBOOST_PRE_INSTALL_TARGET_HOOKS += BOOST_REMOVE_TARGET_LIBRARIES\n\ndefine BOOST_CHECK_TARGET_LIBRARIES\n\t@$(foreach disabled,$(BOOST_WITHOUT_FLAGS),\\\n\t\t! ls $(TARGET_DIR)/usr/lib/libboost_$(disabled)* 1>/dev/null 2>&1 || \\\n\t\t\t! echo \"libboost_$(disabled) shouldn't have been installed: missing select in boost/Config.in\" || \\\n\t\t\texit 1;)\nendef\n\nBOOST_POST_INSTALL_TARGET_HOOKS += BOOST_CHECK_TARGET_LIBRARIES\n\ndefine HOST_BOOST_CONFIGURE_CMDS\n\t(cd $(@D) && ./bootstrap.sh $(HOST_BOOST_FLAGS))\n\techo \"using gcc : `$(HOST_CC) -dumpversion` : $(HOSTCXX) : <cxxflags>\\\"$(HOST_CXXFLAGS)\\\" <linkflags>\\\"$(HOST_LDFLAGS)\\\" ;\" > $(@D)/user-config.jam\n\techo \"\" >> $(@D)/user-config.jam\nendef\n\ndefine HOST_BOOST_BUILD_CMDS\n\t(cd $(@D) && ./b2 -j$(PARALLEL_JOBS) -q \\\n\t--user-config=$(@D)/user-config.jam \\\n\t$(HOST_BOOST_OPTS) \\\n\t--ignore-site-config \\\n\t--prefix=$(HOST_DIR) )\nendef\n\ndefine HOST_BOOST_INSTALL_CMDS\n\t(cd $(@D) && ./b2 -j$(PARALLEL_JOBS) -q \\\n\t--user-config=$(@D)/user-config.jam \\\n\t$(HOST_BOOST_OPTS) \\\n\t--prefix=$(HOST_DIR) \\\n\t--ignore-site-config \\\n\t--layout=$(BOOST_LAYOUT) install )\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/bootstrap/Config.in",
    "content": "config BR2_PACKAGE_BOOTSTRAP\n\tbool \"bootstrap\"\n\thelp\n\t  Bootstrap is the most popular HTML, CSS, and JS framework\n\t  for developing responsive, mobile first projects on the web.\n\n\t  http://getbootstrap.com\n"
  },
  {
    "path": "package/bootstrap/bootstrap.hash",
    "content": "# Locally computed:\nsha256  888ffd30b7e192381e2f6a948ca04669fdcc2ccc2ba016de00d38c8e30793323  bootstrap-4.3.1-dist.zip\nsha256  35fbb6dc3891aacaf1ffa07abec2344fdbc454aab533a2a03bcf93577eb7837b  css/bootstrap.css\n"
  },
  {
    "path": "package/bootstrap/bootstrap.mk",
    "content": "################################################################################\n#\n# bootstrap\n#\n################################################################################\n\nBOOTSTRAP_VERSION = 4.3.1\nBOOTSTRAP_SITE = https://github.com/twbs/bootstrap/releases/download/v$(BOOTSTRAP_VERSION)\nBOOTSTRAP_SOURCE = bootstrap-$(BOOTSTRAP_VERSION)-dist.zip\nBOOTSTRAP_LICENSE = MIT\nBOOTSTRAP_LICENSE_FILES = css/bootstrap.css\nBOOTSTRAP_CPE_ID_VENDOR = getbootstrap\n\ndefine BOOTSTRAP_EXTRACT_CMDS\n\t$(UNZIP) $(BOOTSTRAP_DL_DIR)/$(BOOTSTRAP_SOURCE) -d $(@D)\n\tmv $(@D)/bootstrap-$(BOOTSTRAP_VERSION)-dist/* $(@D)\nendef\n\ndefine BOOTSTRAP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/css/bootstrap.min.css \\\n\t\t$(TARGET_DIR)/var/www/bootstrap/css/bootstrap.min.css\n\t$(INSTALL) -m 0644 -D $(@D)/css/bootstrap.min.css.map \\\n\t\t$(TARGET_DIR)/var/www/bootstrap/css/bootstrap.min.css.map\n\t$(INSTALL) -m 0644 -D $(@D)/js/bootstrap.min.js \\\n\t\t$(TARGET_DIR)/var/www/bootstrap/js/bootstrap.min.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/botan/0001-Revert-workaround-a-miscompilation-issue-in-clang-12.patch",
    "content": "From 372bdf0348fb86d671e73baab19daa34bd0cf73d Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 9 Nov 2021 19:01:20 +0100\nSubject: [PATCH] Revert \"workaround a miscompilation issue in clang 12\n (XCode 13)\"\n\nThis reverts commit 219329f8e777af54d785ae7259f8be32a714b751.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/randombit/botan/issues/2845]\n---\n src/lib/hash/sha3/sha3.cpp                | 46 ++++++-----------------\n src/lib/hash/sha3/sha3_bmi2/sha3_bmi2.cpp | 46 ++++++-----------------\n 2 files changed, 22 insertions(+), 70 deletions(-)\n\ndiff --git a/src/lib/hash/sha3/sha3.cpp b/src/lib/hash/sha3/sha3.cpp\nindex 289e451ff..690c2b264 100644\n--- a/src/lib/hash/sha3/sha3.cpp\n+++ b/src/lib/hash/sha3/sha3.cpp\n@@ -11,47 +11,23 @@\n #include <botan/exceptn.h>\n #include <botan/cpuid.h>\n \n-#include <tuple>\n-\n namespace Botan {\n \n namespace {\n \n-// This is a workaround for a suspected bug in clang 12 (and XCode 13)\n-// that caused a miscompile of the SHA3 implementation for optimization\n-// level -O2 and higher.\n-//\n-// For details, see: https://github.com/randombit/botan/issues/2802\n-#if    defined(__clang__) && \\\n-    (( defined(__apple_build_version__) && __clang_major__ == 13) || \\\n-     (!defined(__apple_build_version__) && __clang_major__ == 12))\n-#define BOTAN_WORKAROUND_MAYBE_INLINE __attribute__((noinline))\n-#else\n-#define BOTAN_WORKAROUND_MAYBE_INLINE inline\n-#endif\n-\n-BOTAN_WORKAROUND_MAYBE_INLINE std::tuple<uint64_t, uint64_t, uint64_t, uint64_t, uint64_t>\n-   xor_CNs(const uint64_t A[25])\n-   {\n-   return {\n-      A[0] ^ A[5] ^ A[10] ^ A[15] ^ A[20],\n-      A[1] ^ A[6] ^ A[11] ^ A[16] ^ A[21],\n-      A[2] ^ A[7] ^ A[12] ^ A[17] ^ A[22],\n-      A[3] ^ A[8] ^ A[13] ^ A[18] ^ A[23],\n-      A[4] ^ A[9] ^ A[14] ^ A[19] ^ A[24]};\n-   }\n-\n-#undef BOTAN_WORKAROUND_MAYBE_INLINE\n-\n inline void SHA3_round(uint64_t T[25], const uint64_t A[25], uint64_t RC)\n    {\n-   const auto Cs = xor_CNs(A);\n-\n-   const uint64_t D0 = rotl<1>(std::get<0>(Cs)) ^ std::get<3>(Cs);\n-   const uint64_t D1 = rotl<1>(std::get<1>(Cs)) ^ std::get<4>(Cs);\n-   const uint64_t D2 = rotl<1>(std::get<2>(Cs)) ^ std::get<0>(Cs);\n-   const uint64_t D3 = rotl<1>(std::get<3>(Cs)) ^ std::get<1>(Cs);\n-   const uint64_t D4 = rotl<1>(std::get<4>(Cs)) ^ std::get<2>(Cs);\n+   const uint64_t C0 = A[0] ^ A[5] ^ A[10] ^ A[15] ^ A[20];\n+   const uint64_t C1 = A[1] ^ A[6] ^ A[11] ^ A[16] ^ A[21];\n+   const uint64_t C2 = A[2] ^ A[7] ^ A[12] ^ A[17] ^ A[22];\n+   const uint64_t C3 = A[3] ^ A[8] ^ A[13] ^ A[18] ^ A[23];\n+   const uint64_t C4 = A[4] ^ A[9] ^ A[14] ^ A[19] ^ A[24];\n+\n+   const uint64_t D0 = rotl<1>(C0) ^ C3;\n+   const uint64_t D1 = rotl<1>(C1) ^ C4;\n+   const uint64_t D2 = rotl<1>(C2) ^ C0;\n+   const uint64_t D3 = rotl<1>(C3) ^ C1;\n+   const uint64_t D4 = rotl<1>(C4) ^ C2;\n \n    const uint64_t B00 =          A[ 0] ^ D1;\n    const uint64_t B01 = rotl<44>(A[ 6] ^ D2);\ndiff --git a/src/lib/hash/sha3/sha3_bmi2/sha3_bmi2.cpp b/src/lib/hash/sha3/sha3_bmi2/sha3_bmi2.cpp\nindex c7f1914a3..a9650ad9d 100644\n--- a/src/lib/hash/sha3/sha3_bmi2/sha3_bmi2.cpp\n+++ b/src/lib/hash/sha3/sha3_bmi2/sha3_bmi2.cpp\n@@ -8,47 +8,23 @@\n #include <botan/sha3.h>\n #include <botan/rotate.h>\n \n-#include <tuple>\n-\n namespace Botan {\n \n namespace {\n \n-// This is a workaround for a suspected bug in clang 12 (and XCode 13)\n-// that caused a miscompile of the SHA3 implementation for optimization\n-// level -O2 and higher.\n-//\n-// For details, see: https://github.com/randombit/botan/issues/2802\n-#if    defined(__clang__) && \\\n-    (( defined(__apple_build_version__) && __clang_major__ == 13) || \\\n-     (!defined(__apple_build_version__) && __clang_major__ == 12))\n-#define BOTAN_WORKAROUND_MAYBE_INLINE __attribute__((noinline))\n-#else\n-#define BOTAN_WORKAROUND_MAYBE_INLINE inline\n-#endif\n-\n-BOTAN_WORKAROUND_MAYBE_INLINE std::tuple<uint64_t, uint64_t, uint64_t, uint64_t, uint64_t>\n-   xor_CNs(const uint64_t A[25])\n-   {\n-   return {\n-      A[0] ^ A[5] ^ A[10] ^ A[15] ^ A[20],\n-      A[1] ^ A[6] ^ A[11] ^ A[16] ^ A[21],\n-      A[2] ^ A[7] ^ A[12] ^ A[17] ^ A[22],\n-      A[3] ^ A[8] ^ A[13] ^ A[18] ^ A[23],\n-      A[4] ^ A[9] ^ A[14] ^ A[19] ^ A[24]};\n-   }\n-\n-#undef BOTAN_WORKAROUND_MAYBE_INLINE\n-\n inline void SHA3_BMI2_round(uint64_t T[25], const uint64_t A[25], uint64_t RC)\n    {\n-   const auto Cs = xor_CNs(A);\n-\n-   const uint64_t D0 = rotl<1>(std::get<0>(Cs)) ^ std::get<3>(Cs);\n-   const uint64_t D1 = rotl<1>(std::get<1>(Cs)) ^ std::get<4>(Cs);\n-   const uint64_t D2 = rotl<1>(std::get<2>(Cs)) ^ std::get<0>(Cs);\n-   const uint64_t D3 = rotl<1>(std::get<3>(Cs)) ^ std::get<1>(Cs);\n-   const uint64_t D4 = rotl<1>(std::get<4>(Cs)) ^ std::get<2>(Cs);\n+   const uint64_t C0 = A[0] ^ A[5] ^ A[10] ^ A[15] ^ A[20];\n+   const uint64_t C1 = A[1] ^ A[6] ^ A[11] ^ A[16] ^ A[21];\n+   const uint64_t C2 = A[2] ^ A[7] ^ A[12] ^ A[17] ^ A[22];\n+   const uint64_t C3 = A[3] ^ A[8] ^ A[13] ^ A[18] ^ A[23];\n+   const uint64_t C4 = A[4] ^ A[9] ^ A[14] ^ A[19] ^ A[24];\n+\n+   const uint64_t D0 = rotl<1>(C0) ^ C3;\n+   const uint64_t D1 = rotl<1>(C1) ^ C4;\n+   const uint64_t D2 = rotl<1>(C2) ^ C0;\n+   const uint64_t D3 = rotl<1>(C3) ^ C1;\n+   const uint64_t D4 = rotl<1>(C4) ^ C2;\n \n    const uint64_t B00 =          A[ 0] ^ D1;\n    const uint64_t B01 = rotl<44>(A[ 6] ^ D2);\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/botan/Config.in",
    "content": "config BR2_PACKAGE_BOTAN_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\tdefault y if BR2_arm || BR2_armeb\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_m68k\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdefault y if BR2_riscv\n\tdefault y if BR2_sparc || BR2_sparc64\n\tdefault y if BR2_s390x\n\tdefault y if BR2_sh\n\nconfig BR2_PACKAGE_BOTAN\n\tbool \"botan\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM if BR2_PACKAGE_BOOST && BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tselect BR2_PACKAGE_BOOST_SYSTEM if BR2_PACKAGE_BOOST && BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Botan is a crypto library for C++\n\n\t  http://botan.randombit.net\n\ncomment \"botan needs a toolchain w/ C++, threads, gcc >= 4.8\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS\n\ncomment \"botan needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/botan/botan.hash",
    "content": "# From https://botan.randombit.net/releases/sha256sums.txt\nsha256  541a3b13f1b9d30f977c6c1ae4c7bfdfda763cda6e44de807369dce79f42307e  Botan-2.18.2.tar.xz\n# Locally computed\nsha256  fb7f0322d36fba55ca17d77bc203a9f09a40daa8a249b75cf8887aba36cec9d0  license.txt\n"
  },
  {
    "path": "package/botan/botan.mk",
    "content": "################################################################################\n#\n# botan\n#\n################################################################################\n\nBOTAN_VERSION = 2.18.2\nBOTAN_SOURCE = Botan-$(BOTAN_VERSION).tar.xz\nBOTAN_SITE = http://botan.randombit.net/releases\nBOTAN_LICENSE = BSD-2-Clause\nBOTAN_LICENSE_FILES = license.txt\nBOTAN_CPE_ID_VENDOR = botan_project\n\nBOTAN_INSTALL_STAGING = YES\n\nBOTAN_CONF_OPTS = \\\n\t--cpu=$(BR2_ARCH) \\\n\t--os=linux \\\n\t--cc=gcc \\\n\t--cc-bin=\"$(TARGET_CXX)\" \\\n\t--prefix=/usr \\\n\t--without-documentation\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nBOTAN_CONF_OPTS += --extra-libs=atomic\nendif\n\nifeq ($(BR2_SHARED_LIBS),y)\nBOTAN_CONF_OPTS += \\\n\t--disable-static-library \\\n\t--enable-shared-library\nelse ifeq ($(BR2_STATIC_LIBS),y)\nBOTAN_CONF_OPTS += \\\n\t--disable-shared-library \\\n\t--enable-static-library \\\n\t--no-autoload\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nBOTAN_CONF_OPTS += \\\n\t--enable-shared-library \\\n\t--enable-static-library\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_SSP),y)\nBOTAN_CONF_OPTS += --with-stack-protector\nelse\nBOTAN_CONF_OPTS += --without-stack-protector\nendif\n\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\nBOTAN_CONF_OPTS += --without-os-feature=getauxval\nendif\n\nifeq ($(BR2_PACKAGE_BOOST_FILESYSTEM)$(BR2_PACKAGE_BOOST_SYSTEM),yy)\nBOTAN_DEPENDENCIES += boost\nBOTAN_CONF_OPTS += --with-boost\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nBOTAN_DEPENDENCIES += bzip2\nBOTAN_CONF_OPTS += --with-bzip2\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nBOTAN_DEPENDENCIES += openssl\nBOTAN_CONF_OPTS += --with-openssl\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE),y)\nBOTAN_DEPENDENCIES += sqlite\nBOTAN_CONF_OPTS += --with-sqlite\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nBOTAN_DEPENDENCIES += xz\nBOTAN_CONF_OPTS += --with-lzma\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nBOTAN_DEPENDENCIES += zlib\nBOTAN_CONF_OPTS += --with-zlib\nendif\n\nifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),)\nBOTAN_CONF_OPTS += --disable-altivec\nendif\n\nifeq ($(BR2_ARM_CPU_HAS_NEON),)\nBOTAN_CONF_OPTS += --disable-neon\nendif\n\ndefine BOTAN_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_MAKE_ENV) ./configure.py $(BOTAN_CONF_OPTS))\nendef\n\ndefine BOTAN_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) AR=\"$(TARGET_AR)\"\nendef\n\ndefine BOTAN_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=\"$(STAGING_DIR)\" install\nendef\n\ndefine BOTAN_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=\"$(TARGET_DIR)\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/brcm-patchram-plus/Config.in",
    "content": "config BR2_PACKAGE_BRCM_PATCHRAM_PLUS\n\tbool \"brcm-patchram-plus\"\n\thelp\n\t  Broadcom utility to flash Bluetooth firmwares, extended with\n\t  per-device Low Power Mode configuration.\n\n\t  https://github.com/AsteroidOS/brcm-patchram-plus\n"
  },
  {
    "path": "package/brcm-patchram-plus/brcm-patchram-plus.hash",
    "content": "# locally computed\nsha256  febad69fbc9185b4c6a31188cf381fd280b88d93cb7f5a40dfdbab9c599c29a7  brcm-patchram-plus-95b7b6916d661a4da3f9c0adf52d5e1f4f8ab042.tar.gz\nsha256  26324f5c563b7e338c2876c8abe90c3681c1e9a6163fc59b494c94ad6493eda4  COPYING\n"
  },
  {
    "path": "package/brcm-patchram-plus/brcm-patchram-plus.mk",
    "content": "################################################################################\n#\n# brcm-patchram-plus\n#\n################################################################################\n\nBRCM_PATCHRAM_PLUS_VERSION = 95b7b6916d661a4da3f9c0adf52d5e1f4f8ab042\nBRCM_PATCHRAM_PLUS_SITE = $(call github,AsteroidOS,brcm-patchram-plus,$(BRCM_PATCHRAM_PLUS_VERSION))\nBRCM_PATCHRAM_PLUS_LICENSE = Apache-2.0\nBRCM_PATCHRAM_PLUS_LICENSE_FILES = COPYING\nBRCM_PATCHRAM_PLUS_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/brickd/Config.in",
    "content": "config BR2_PACKAGE_BRICKD\n\tbool \"brickd\"\n\tdepends on BR2_PACKAGE_HAS_UDEV # gudev\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_USE_MMU # glib2, gudev\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBGUDEV\n\thelp\n\t  Brick daemon for LEGO MINDSTORMS EV3 (and other LEGO-\n\t  compatible devices). This performs tasks like battery\n\t  management and controls device-specific hardware.\n\n\t  https://github.com/ev3dev/brickd\n\ncomment \"brickd needs udev /dev management, a toolchain w/ threads, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_USE_WCHAR\n"
  },
  {
    "path": "package/brickd/S70brickd",
    "content": "#!/bin/sh\n\nNAME=brickd\nPIDFILE=/var/run/$NAME.pid\nDAEMON=/usr/sbin/$NAME\n\nstart() {\n\tprintf \"Starting $NAME: \"\n\tstart-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping $NAME: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart|reload}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/brickd/brickd.hash",
    "content": "# Locally computed hash\nsha256  8469b6959a7e32c4b39a56e1a4f7479f785d83e6db3269487f5312f3cf1df382  brickd-v1.2.2-br1.tar.gz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.txt\n"
  },
  {
    "path": "package/brickd/brickd.mk",
    "content": "################################################################################\n#\n# brickd\n#\n################################################################################\n\nBRICKD_VERSION = v1.2.2\nBRICKD_SITE = https://github.com/ev3dev/brickd\nBRICKD_SITE_METHOD = git\nBRICKD_GIT_SUBMODULES = YES\n\nBRICKD_LICENSE = GPL-2.0\nBRICKD_LICENSE_FILES = LICENSE.txt\n\nBRICKD_INSTALL_STAGING = YES\nBRICKD_DEPENDENCIES = host-pkgconf host-vala libglib2 libgudev\n\ndefine BRICKD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/brickd/S70brickd $(TARGET_DIR)/etc/init.d/S70brickd\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/bridge-utils/0001-fix-build-on-musl.patch",
    "content": "From 1d5a2e0f88e0c53fede03632fa92ffade5e79ac5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 11 Apr 2021 10:04:59 +0200\nSubject: [PATCH] fix build on musl\n\nBuild on musl is broken since version 1.7.1 and commit\na1f20223cfcf7b9eae8c9e7e7a07e7bf1377f65b:\n\nlibbridge_devif.c: In function 'fpopen':\nlibbridge_devif.c:33:12: error: 'PATH_MAX' undeclared (first use in this function); did you mean 'AF_MAX'?\n   33 |  char path[PATH_MAX];\n      |            ^~~~~~~~\n      |            AF_MAX\n\nFixes:\n - http://autobuild.buildroot.org/results/0f080ff6913595ee2732b93206e5001c837c1bcc\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to Stephen Hemminger <sthemmin@microsoft.com>]\n---\n libbridge/libbridge_devif.c | 1 +\n libbridge/libbridge_init.c  | 1 +\n 2 files changed, 2 insertions(+)\n\ndiff --git a/libbridge/libbridge_devif.c b/libbridge/libbridge_devif.c\nindex 8b7d954..6c679f6 100644\n--- a/libbridge/libbridge_devif.c\n+++ b/libbridge/libbridge_devif.c\n@@ -21,6 +21,7 @@\n #include <stdlib.h>\n #include <unistd.h>\n #include <errno.h>\n+#include <limits.h>\n #include <string.h>\n #include <dirent.h>\n #include <fcntl.h>\ndiff --git a/libbridge/libbridge_init.c b/libbridge/libbridge_init.c\nindex c914971..83a97cd 100644\n--- a/libbridge/libbridge_init.c\n+++ b/libbridge/libbridge_init.c\n@@ -20,6 +20,7 @@\n #include <stdlib.h>\n #include <unistd.h>\n #include <errno.h>\n+#include <limits.h>\n #include <string.h>\n #include <dirent.h>\n #include <sys/types.h>\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/bridge-utils/Config.in",
    "content": "config BR2_PACKAGE_BRIDGE_UTILS\n\tbool \"bridge-utils\"\n\thelp\n\t  Manage ethernet bridging; a way to connect networks together\n\t  to form a larger network.\n\n\t  This utility is DEPRECATED. No new features will ever be\n\t  added. Instead use the bridge command from the iproute2\n\t  package which supports more features.\n\n\t  https://git.kernel.org/cgit/linux/kernel/git/shemminger/bridge-utils.git/\n"
  },
  {
    "path": "package/bridge-utils/bridge-utils.hash",
    "content": "# From https://mirrors.edge.kernel.org/pub/linux/utils/net/bridge-utils/sha256sums.asc\nsha256  a61d8be4f1a1405c60c8ef38d544f0c18c05b33b9b07e5b4b31033536165e60e  bridge-utils-1.7.1.tar.xz\n\n# locally computed\nsha256  995a31f60a9ddb4c609214cc7d17ca94cc3cbc7f37e1e64dba81e7f8ea9d4f91  COPYING\n"
  },
  {
    "path": "package/bridge-utils/bridge-utils.mk",
    "content": "################################################################################\n#\n# bridge-utils\n#\n################################################################################\n\nBRIDGE_UTILS_VERSION = 1.7.1\nBRIDGE_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/net/bridge-utils\nBRIDGE_UTILS_SOURCE = bridge-utils-$(BRIDGE_UTILS_VERSION).tar.xz\nBRIDGE_UTILS_AUTORECONF = YES\nBRIDGE_UTILS_LICENSE = GPL-2.0+\nBRIDGE_UTILS_LICENSE_FILES = COPYING\nBRIDGE_UTILS_CPE_ID_VENDOR = kernel\nBRIDGE_UTILS_SELINUX_MODULES = brctl\n\n# Avoid using the host's headers. Location is not important as\n# required headers will anyway be found from within the sysroot.\nBRIDGE_UTILS_CONF_OPTS = --with-linux-headers=$(STAGING_DIR)/usr/include\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/brltty/0001-Fix-linking-error-on-mips64el.patch",
    "content": "From ddb06335935ef1458fe98f99cdc5d5fe6757fd02 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 3 Oct 2018 19:06:40 +0200\nSubject: [PATCH] Fix linking error on mips64el\n\nPatch that was fixing build on mips64el was reverted:\nhttps://github.com/brltty/brltty/commit/9e7d62c869d3c1cbe12dda8b0291a4692c193416\n\nSo fix the issue again, this time by checking if $(GCC) is available as\nsuggested by Arnout during review of buildroot patch:\nhttps://patchwork.ozlabs.org/patch/972614\n\nFixes:\n - http://autobuild.buildroot.org/results/31f682838b3d3b2c7103b5c51f2aba0b89d4f630\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/brltty/brltty/pull/149]\n---\n configure.ac | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 1e2774abf..a488d3d52 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -481,7 +481,12 @@ AC_CACHE_CHECK([for make relocatable object command], [brltty_cv_prog_make_objec\n case \"${host_os}\"\n in\n    *)\n-      brltty_cv_prog_make_object_relocatable=\"\\$(LD) -r -o\"\n+      if test \"${GCC}\" = \"yes\"\n+      then\n+         brltty_cv_prog_make_object_relocatable=\"\\$(CC) -shared -o\"\n+      else\n+         brltty_cv_prog_make_object_relocatable=\"\\$(LD) -r -o\"\n+      fi\n       ;;\n esac])\n MKREL=\"${brltty_cv_prog_make_object_relocatable}\"\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/brltty/Config.in",
    "content": "config BR2_PACKAGE_BRLTTY\n\tbool \"brltty\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID if BR2_PACKAGE_BLUEZ5_UTILS # runtime\n\thelp\n\t  A daemon providing access to the Linux console for a blind\n\t  person using a refreshable braille display.\n\n\t  http://brltty.app/\n\nif BR2_PACKAGE_BRLTTY\n\nconfig BR2_PACKAGE_BRLTTY_TEXT_TABLE\n\tstring \"text-table\"\n\nendif\n\ncomment \"brltty needs a toolchain w/ dynamic lib, threads, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/brltty/S10brltty",
    "content": "#!/bin/sh\n#\n# brltty        Starts brltty.\n#\n\nstart() {\n\tprintf \"Starting brltty: \"\n\tstart-stop-daemon -S -q -p /var/run/brltty.pid \\\n\t\t--exec /usr/bin/brltty -- -P /var/run/brltty.pid \"$@\"\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping brltty: \"\n\tstart-stop-daemon -K -q -p /var/run/brltty.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart \"$@\"\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  force-reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart|force-reload}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/brltty/brltty.hash",
    "content": "# Locally computed\nsha256  bc7573b0d0ab865c36607945b64c209312405571788f3b409397726f6143eaa6  brltty-6.4.tar.xz\nsha256  d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f  LICENSE-LGPL\nsha256  429be921e6bf783303a1f94cbb7f29dc4f0839e47efe38150b808f886028f4df  README\n"
  },
  {
    "path": "package/brltty/brltty.mk",
    "content": "################################################################################\n#\n# brltty\n#\n################################################################################\n\nBRLTTY_VERSION = 6.4\nBRLTTY_SOURCE = brltty-$(BRLTTY_VERSION).tar.xz\nBRLTTY_SITE = http://brltty.com/archive\nBRLTTY_INSTALL_STAGING_OPTS = INSTALL_ROOT=$(STAGING_DIR) install\nBRLTTY_INSTALL_TARGET_OPTS = INSTALL_ROOT=$(TARGET_DIR) install\nBRLTTY_LICENSE = LGPL-2.1+\nBRLTTY_LICENSE_FILES = LICENSE-LGPL README\n\nBRLTTY_DEPENDENCIES = \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\thost-autoconf \\\n\thost-gawk \\\n\thost-pkgconf \\\n\t$(if $(BR2_PACKAGE_AT_SPI2_CORE),at-spi2-core)\n\nBRLTTY_CONF_ENV = \\\n\tPKG_CONFIG_FOR_BUILD=$(HOST_DIR)/bin/pkgconf\n\nBRLTTY_CONF_OPTS = \\\n\t--disable-java-bindings \\\n\t--disable-lisp-bindings \\\n\t--disable-ocaml-bindings \\\n\t--disable-python-bindings \\\n\t--disable-tcl-bindings \\\n\t--disable-x \\\n\t--without-espeak-ng \\\n\t--without-midi-package \\\n\t--without-mikropuhe --without-speechd --without-swift \\\n\t--without-theta\n\n# Autoreconf is needed because we're patching configure.ac in\n# 0001-Fix-linking-error-on-mips64el. However, a plain autoreconf doesn't work,\n# because this package is only autoconf-based.\ndefine BRLTTY_AUTOCONF\n\tcd $(BRLTTY_SRCDIR) && $(AUTOCONF)\nendef\n\nBRLTTY_PRE_CONFIGURE_HOOKS += BRLTTY_AUTOCONF\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y)\nBRLTTY_DEPENDENCIES += bluez5_utils\nBRLTTY_CONF_OPTS += --with-bluetooth-package\nelse\nBRLTTY_CONF_OPTS += --without-bluetooth-package\nendif\n\nifeq ($(BR2_PACKAGE_ESPEAK),y)\nBRLTTY_DEPENDENCIES += espeak\nBRLTTY_CONF_OPTS += --with-espeak=$(TARGET_DIR)/usr\nelse\nBRLTTY_CONF_OPTS += --without-espeak\nendif\n\nifeq ($(BR2_PACKAGE_EXPAT),y)\n# host-expat is needed by tbl2hex's host program\nBRLTTY_DEPENDENCIES += host-expat expat\nBRLTTY_CONF_OPTS += --enable-expat\nelse\nBRLTTY_CONF_OPTS += --disable-expat\nendif\n\nifeq ($(BR2_PACKAGE_FLITE),y)\nBRLTTY_DEPENDENCIES += flite\nBRLTTY_CONF_OPTS += --with-flite=$(STAGING_DIR)/usr\nelse\nBRLTTY_CONF_OPTS += --without-flite\nendif\n\nifeq ($(BR2_PACKAGE_ICU),y)\nBRLTTY_DEPENDENCIES += icu\nBRLTTY_CONF_OPTS += --enable-icu\nelse\nBRLTTY_CONF_OPTS += --disable-icu\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nBRLTTY_DEPENDENCIES += ncurses\nBRLTTY_CONF_OPTS += --with-curses\nelse\nBRLTTY_CONF_OPTS += --without-curses\nendif\n\nifeq ($(BR2_PACKAGE_PCRE2_32),y)\nBRLTTY_DEPENDENCIES += pcre2\nBRLTTY_CONF_OPTS += --with-rgx-package\nelse ifeq ($(BR2_PACKAGE_PCRE_32),y)\nBRLTTY_DEPENDENCIES += pcre\nBRLTTY_CONF_OPTS += --with-rgx-package\nelse\nBRLTTY_CONF_OPTS += --without-rgx-package\nendif\n\nifeq ($(BR2_PACKAGE_POLKIT),y)\nBRLTTY_DEPENDENCIES += polkit\nBRLTTY_CONF_OPTS += --enable-polkit\nelse\nBRLTTY_CONF_OPTS += --disable-polkit\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nBRLTTY_DEPENDENCIES += systemd\nBRLTTY_CONF_OPTS += --with-service-package\nelse\nBRLTTY_CONF_OPTS += --without-service-package\nendif\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nBRLTTY_CONF_OPTS += --enable-i18n\nelse\nBRLTTY_CONF_OPTS += --disable-i18n\nendif\n\nBRLTTY_TEXT_TABLE = $(call qstrip,$(BR2_PACKAGE_BRLTTY_TEXT_TABLE))\nifneq ($(BRLTTY_TEXT_TABLE),)\nBRLTTY_CONF_OPTS += --with-text-table=$(BRLTTY_TEXT_TABLE)\nendif\n\ndefine BRLTTY_INSTALL_CONF\n\t$(INSTALL) -D -m 644 $(@D)/Documents/brltty.conf $(TARGET_DIR)/etc/brltty.conf\nendef\n\nBRLTTY_POST_INSTALL_TARGET_HOOKS += BRLTTY_INSTALL_CONF\n\ndefine BRLTTY_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/brltty/S10brltty \\\n\t\t$(TARGET_DIR)/etc/init.d/S10brltty\nendef\n\ndefine BRLTTY_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/brltty/brltty.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/brltty.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/brltty/brltty.service",
    "content": "[Unit]\nDescription=Braille Device Support\nDocumentation=man:brltty(1)\nDocumentation=http://brltty.com/\n\nDefaultDependencies=no\nBefore=sysinit.target\nAfter=systemd-udev-settle.service\nWants=systemd-udev-settle.service\n\n[Service]\nType=simple\nExecStart=/usr/bin/brltty --no-daemon\nTimeoutStartSec=5\nTimeoutStopSec=10\nRestart=always\nRestartSec=30\nNice=-10\nOOMScoreAdjust=-900\n\n[Install]\nWantedBy=sysinit.target\n\n"
  },
  {
    "path": "package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch",
    "content": "From 6cb16322decd643fed9de332d9cda77f7738b7af Mon Sep 17 00:00:00 2001\nFrom: Adrian Perez de Castro <aperez@igalia.com>\nDate: Mon, 7 Sep 2020 12:14:22 +0300\nSubject: [PATCH] CMake: Allow using BUILD_SHARED_LIBS to choose static/shared\n libs\n\nBy convention projects using CMake which can build either static or\nshared libraries use a BUILD_SHARED_LIBS flag to allow selecting between\nboth: the add_library() command automatically switches between both using\nthis variable when the library kind is not passed to add_library(). It\nis also usual to expose the BUILD_SHARED_LIBS as an user-facing setting\nwith the option() command.\n\nThis way, the following will both work as expected:\n\n   % cmake -DBUILD_SHARED_LIBS=OFF ...\n   % cmake -DBUILS_SHARED_LIBS=ON ...\n\nThis is helpful for distributions which need (or want) to build only\nstatic libraries.\n\nSigned-off-by: Adrian Perez de Castro <aperez@igalia.com>\n[Upstream status: https://github.com/google/brotli/pull/655]\n---\n CMakeLists.txt        | 46 ++++++++++++++-----------------------------\n c/fuzz/test_fuzzer.sh |  6 +++---\n 2 files changed, 18 insertions(+), 34 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 4ff3401..f889311 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -6,6 +6,8 @@ cmake_minimum_required(VERSION 2.8.6)\n \n project(brotli C)\n \n+option(BUILD_SHARED_LIBS \"Build shared libraries\" ON)\n+\n if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)\n   message(STATUS \"Setting build type to Release as none was specified.\")\n   set(CMAKE_BUILD_TYPE \"Release\" CACHE STRING \"Choose the type of build.\" FORCE)\n@@ -137,10 +139,6 @@ set(BROTLI_LIBRARIES_CORE brotlienc brotlidec brotlicommon)\n set(BROTLI_LIBRARIES ${BROTLI_LIBRARIES_CORE} ${LIBM_LIBRARY})\n mark_as_advanced(BROTLI_LIBRARIES)\n \n-set(BROTLI_LIBRARIES_CORE_STATIC brotlienc-static brotlidec-static brotlicommon-static)\n-set(BROTLI_LIBRARIES_STATIC ${BROTLI_LIBRARIES_CORE_STATIC} ${LIBM_LIBRARY})\n-mark_as_advanced(BROTLI_LIBRARIES_STATIC)\n-\n if(${CMAKE_SYSTEM_NAME} MATCHES \"Linux\")\n   add_definitions(-DOS_LINUX)\n elseif(${CMAKE_SYSTEM_NAME} MATCHES \"FreeBSD\")\n@@ -161,29 +159,25 @@ transform_sources_list(\"scripts/sources.lst\" \"${CMAKE_CURRENT_BINARY_DIR}/source\n include(\"${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake\")\n \n if(BROTLI_EMSCRIPTEN)\n-  set(BROTLI_SHARED_LIBS \"\")\n-else()\n-  set(BROTLI_SHARED_LIBS brotlicommon brotlidec brotlienc)\n-  add_library(brotlicommon SHARED ${BROTLI_COMMON_C})\n-  add_library(brotlidec SHARED ${BROTLI_DEC_C})\n-  add_library(brotlienc SHARED ${BROTLI_ENC_C})\n+  set(BUILD_SHARED_LIBS OFF)\n endif()\n \n-set(BROTLI_STATIC_LIBS brotlicommon-static brotlidec-static brotlienc-static)\n-add_library(brotlicommon-static STATIC ${BROTLI_COMMON_C})\n-add_library(brotlidec-static STATIC ${BROTLI_DEC_C})\n-add_library(brotlienc-static STATIC ${BROTLI_ENC_C})\n+add_library(brotlicommon ${BROTLI_COMMON_C})\n+add_library(brotlidec ${BROTLI_DEC_C})\n+add_library(brotlienc ${BROTLI_ENC_C})\n \n # Older CMake versions does not understand INCLUDE_DIRECTORIES property.\n include_directories(${BROTLI_INCLUDE_DIRS})\n \n-foreach(lib IN LISTS BROTLI_SHARED_LIBS)\n-  target_compile_definitions(${lib} PUBLIC \"BROTLI_SHARED_COMPILATION\" )\n-  string(TOUPPER \"${lib}\" LIB)\n-  set_target_properties (${lib} PROPERTIES DEFINE_SYMBOL \"${LIB}_SHARED_COMPILATION\")\n-endforeach()\n+if(BUILD_SHARED_LIBS)\n+  foreach(lib brotlicommon brotlidec brotlienc)\n+    target_compile_definitions(${lib} PUBLIC \"BROTLI_SHARED_COMPILATION\" )\n+    string(TOUPPER \"${lib}\" LIB)\n+    set_target_properties (${lib} PROPERTIES DEFINE_SYMBOL \"${LIB}_SHARED_COMPILATION\")\n+  endforeach()\n+endif()\n \n-foreach(lib IN LISTS BROTLI_SHARED_LIBS BROTLI_STATIC_LIBS)\n+foreach(lib brotlicommon brotlidec brotlienc)\n   target_link_libraries(${lib} ${LIBM_LIBRARY})\n   set_property(TARGET ${lib} APPEND PROPERTY INCLUDE_DIRECTORIES ${BROTLI_INCLUDE_DIRS})\n   set_target_properties(${lib} PROPERTIES\n@@ -200,9 +194,6 @@ target_link_libraries(brotlidec brotlicommon)\n target_link_libraries(brotlienc brotlicommon)\n endif()\n \n-target_link_libraries(brotlidec-static brotlicommon-static)\n-target_link_libraries(brotlienc-static brotlicommon-static)\n-\n # For projects stuck on older versions of CMake, this will set the\n # BROTLI_INCLUDE_DIRS and BROTLI_LIBRARIES variables so they still\n # have a relatively easy way to use Brotli:\n@@ -216,7 +207,7 @@ endif()\n \n # Build the brotli executable\n add_executable(brotli ${BROTLI_CLI_C})\n-target_link_libraries(brotli ${BROTLI_LIBRARIES_STATIC})\n+target_link_libraries(brotli ${BROTLI_LIBRARIES})\n \n # Installation\n if(NOT BROTLI_EMSCRIPTEN)\n@@ -233,13 +224,6 @@ if(NOT BROTLI_BUNDLED_MODE)\n     RUNTIME DESTINATION \"${CMAKE_INSTALL_BINDIR}\"\n   )\n \n-  install(\n-    TARGETS ${BROTLI_LIBRARIES_CORE_STATIC}\n-    ARCHIVE DESTINATION \"${CMAKE_INSTALL_LIBDIR}\"\n-    LIBRARY DESTINATION \"${CMAKE_INSTALL_LIBDIR}\"\n-    RUNTIME DESTINATION \"${CMAKE_INSTALL_BINDIR}\"\n-  )\n-\n   install(\n     DIRECTORY ${BROTLI_INCLUDE_DIRS}/brotli\n     DESTINATION \"${CMAKE_INSTALL_INCLUDEDIR}\"\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/brotli/0002-Revert-Add-runtime-linker-path-to-pkg-config-files.patch",
    "content": "From 09b0992b6acb7faa6fd3b23f9bc036ea117230fc Mon Sep 17 00:00:00 2001\nFrom: Eugene Kliuchnikov <eustas.ru@gmail.com>\nDate: Wed, 2 Sep 2020 11:38:26 +0200\nSubject: [PATCH] Revert \"Add runtime linker path to pkg-config files (#740)\"\n (#838)\n\nThis reverts commit 31754d4ffce14153b5c2addf7a11019ec23f51c1.\n[Retrieved from:\nhttps://github.com/google/brotli/commit/09b0992b6acb7faa6fd3b23f9bc036ea117230fc]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n scripts/libbrotlicommon.pc.in | 2 +-\n scripts/libbrotlidec.pc.in    | 2 +-\n scripts/libbrotlienc.pc.in    | 2 +-\n 3 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/scripts/libbrotlicommon.pc.in b/scripts/libbrotlicommon.pc.in\nindex 10ca969e..2a8cf7a3 100644\n--- a/scripts/libbrotlicommon.pc.in\n+++ b/scripts/libbrotlicommon.pc.in\n@@ -7,5 +7,5 @@ Name: libbrotlicommon\n URL: https://github.com/google/brotli\n Description: Brotli common dictionary library\n Version: @PACKAGE_VERSION@\n-Libs: -L${libdir} -R${libdir} -lbrotlicommon\n+Libs: -L${libdir} -lbrotlicommon\n Cflags: -I${includedir}\ndiff --git a/scripts/libbrotlidec.pc.in b/scripts/libbrotlidec.pc.in\nindex e7c3124f..6f8ef2e4 100644\n--- a/scripts/libbrotlidec.pc.in\n+++ b/scripts/libbrotlidec.pc.in\n@@ -7,6 +7,6 @@ Name: libbrotlidec\n URL: https://github.com/google/brotli\n Description: Brotli decoder library\n Version: @PACKAGE_VERSION@\n-Libs: -L${libdir} -R${libdir} -lbrotlidec\n+Libs: -L${libdir} -lbrotlidec\n Requires.private: libbrotlicommon >= 1.0.2\n Cflags: -I${includedir}\ndiff --git a/scripts/libbrotlienc.pc.in b/scripts/libbrotlienc.pc.in\nindex 4dd0811b..2098afe2 100644\n--- a/scripts/libbrotlienc.pc.in\n+++ b/scripts/libbrotlienc.pc.in\n@@ -7,6 +7,6 @@ Name: libbrotlienc\n URL: https://github.com/google/brotli\n Description: Brotli encoder library\n Version: @PACKAGE_VERSION@\n-Libs: -L${libdir} -R${libdir} -lbrotlienc\n+Libs: -L${libdir} -lbrotlienc\n Requires.private: libbrotlicommon >= 1.0.2\n Cflags: -I${includedir}\n"
  },
  {
    "path": "package/brotli/Config.in",
    "content": "config BR2_PACKAGE_BROTLI\n\tbool \"brotli\"\n\thelp\n\t  Generic-purpose lossless compression library. The algorithm\n\t  compresses data using a combination of a modern variant of\n\t  the LZ77 algorithm, Huffman coding and 2nd order context\n\t  modeling, with a compression ratio comparable to the best\n\t  currently available general-purpose compression methods. It\n\t  is similar in speed with deflate but offers more dense\n\t  compression.\n\n\t  https://github.com/google/brotli\n"
  },
  {
    "path": "package/brotli/brotli.hash",
    "content": "# Locally generated:\nsha512  b8e2df955e8796ac1f022eb4ebad29532cb7e3aa6a4b6aee91dbd2c7d637eee84d9a144d3e878895bb5e62800875c2c01c8f737a1261020c54feacf9f676b5f5  v1.0.9.tar.gz\n\n# Hash for license files:\nsha512  bae78184c2f50f86d8c727826d3982c469454c42b9af81f4ef007e39036434fa894cf5be3bf5fc65b7de2301f0a72d067a8186e303327db8a96bd14867e0a3a8  LICENSE\n"
  },
  {
    "path": "package/brotli/brotli.mk",
    "content": "################################################################################\n#\n# brotli\n#\n################################################################################\n\nBROTLI_VERSION = 1.0.9\nBROTLI_SOURCE = v$(BROTLI_VERSION).tar.gz\nBROTLI_SITE = https://github.com/google/brotli/archive\nBROTLI_LICENSE = MIT\nBROTLI_LICENSE_FILES = LICENSE\nBROTLI_CPE_ID_VENDOR = google\nBROTLI_INSTALL_STAGING = YES\nBROTLI_CONF_OPTS = \\\n\t-DBROTLI_DISABLE_TESTS=ON \\\n\t-DBROTLI_BUNDLED_MODE=OFF\n\nBROTLI_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)\nBROTLI_CFLAGS += -O0\nendif\n\nBROTLI_CONF_OPTS += -DCMAKE_C_FLAGS=\"$(BROTLI_CFLAGS)\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/bsdiff/0001-Add-missing-header-for-u_char.patch",
    "content": "bspatch: Fix missing header <sys/types.h> for u_char\n\nFixes http://autobuild.buildroot.net/results/31a/31a837cf6e34b02dce498f2b12e40d6d16a5a8e6/\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n\ndiff -purN bsdiff-4.3.orig/bspatch.c bsdiff-4.3/bspatch.c\n--- bsdiff-4.3.orig/bspatch.c\t2015-04-30 13:47:26.485903359 +0200\n+++ bsdiff-4.3/bspatch.c\t2015-04-30 13:48:14.808908672 +0200\n@@ -35,6 +35,7 @@ __FBSDID(\"$FreeBSD: src/usr.bin/bsdiff/b\n #include <err.h>\n #include <unistd.h>\n #include <fcntl.h>\n+#include <sys/types.h>\n\n static off_t offtin(u_char *buf)\n {\n"
  },
  {
    "path": "package/bsdiff/Config.in",
    "content": "config BR2_PACKAGE_BSDIFF\n\tbool \"bsdiff\"\n\tselect BR2_PACKAGE_BZIP2\n\thelp\n\t  Binary patch/diff like xdelta but creates smaller diffs.\n\t  Needs bzip2 support.\n\n\t  http://www.daemonology.net/bsdiff/\n"
  },
  {
    "path": "package/bsdiff/bsdiff.hash",
    "content": "# From http://www.daemonology.net/bsdiff/:\nmd5\te6d812394f0e0ecc8d5df255aa1db22a  bsdiff-4.3.tar.gz\n# locally computed\nsha256  fc0a6e634ef77dcf14bf36c7b6d1e57ba1ac5c4809073dfaacb3b5f7ab277eb7  bsdiff.c\n"
  },
  {
    "path": "package/bsdiff/bsdiff.mk",
    "content": "################################################################################\n#\n# bsdiff\n#\n################################################################################\n\nBSDIFF_VERSION = 4.3\nBSDIFF_SITE = http://www.daemonology.net/bsdiff\nBSDIFF_DEPENDENCIES = bzip2\nBSDIFF_LICENSE = BSD-2-Clause\nBSDIFF_LICENSE_FILES = bsdiff.c\nBSDIFF_CPE_ID_VENDOR = daemonology\n\ndefine BSDIFF_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \\\n\t\t$(@D)/bsdiff.c -lbz2 -o $(@D)/bsdiff\n\t$(TARGET_MAKE_ENV) $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \\\n\t\t$(@D)/bspatch.c -lbz2 -o $(@D)/bspatch\nendef\n\ndefine BSDIFF_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/bsdiff $(TARGET_DIR)/usr/bin/bsdiff\n\t$(INSTALL) -D -m 755 $(@D)/bspatch $(TARGET_DIR)/usr/bin/bspatch\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/btrfs-progs/Config.in",
    "content": "config BR2_PACKAGE_BTRFS_PROGS\n\tbool \"btrfs-progs\"\n\tdepends on BR2_USE_MMU # util-linux\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LZO\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Btrfs filesystem utilities\n\n\t  https://btrfs.wiki.kernel.org/index.php/Main_Page\n\ncomment \"btrfs-progs needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/btrfs-progs/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_BTRFS_PROGS\n\tbool \"host btrfs-progs\"\n\thelp\n\t  Btrfs filesystem utilities\n\n\t  https://btrfs.wiki.kernel.org/index.php/Main_Page\n"
  },
  {
    "path": "package/btrfs-progs/btrfs-progs.hash",
    "content": "# From https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/sha256sums.asc\nsha256 d41961b0a92160c80f894ad9a1882822889c2e1d084cbf3e08b8c214a5cf0137  btrfs-progs-v5.11.tar.xz\n# Locally computed\nsha256 0d5bf346df9e635a29dcdddf832dc5b002ca6cdc1c5c9c6c567d2a61bb0c5c15  COPYING\nsha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  libbtrfsutil/COPYING\nsha256 e3a994d82e644b03a792a930f574002658412f62407f5fee083f2555c5f23118  libbtrfsutil/COPYING.LESSER\n"
  },
  {
    "path": "package/btrfs-progs/btrfs-progs.mk",
    "content": "################################################################################\n#\n# btrfs-progs\n#\n################################################################################\n\nBTRFS_PROGS_VERSION = 5.11\nBTRFS_PROGS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/people/kdave/btrfs-progs\nBTRFS_PROGS_SOURCE = btrfs-progs-v$(BTRFS_PROGS_VERSION).tar.xz\nBTRFS_PROGS_DEPENDENCIES = host-pkgconf lzo util-linux zlib\nBTRFS_PROGS_CONF_OPTS = --disable-backtrace --disable-zstd --disable-python\nBTRFS_PROGS_LICENSE = GPL-2.0, LGPL-3.0+ (libbtrfsutil)\nBTRFS_PROGS_LICENSE_FILES = COPYING libbtrfsutil/COPYING \\\n\tlibbtrfsutil/COPYING.LESSER\nBTRFS_PROGS_INSTALL_STAGING = YES\n\n# Doesn't autodetect static-only and tries to build both\nifeq ($(BR2_STATIC_LIBS),y)\nBTRFS_PROGS_MAKE_OPTS = static\nBTRFS_PROGS_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-static\nBTRFS_PROGS_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install-static\nendif\n\n# convert also supports conversion from reiserfs, which needs some\n# reiserfs libraries, but we have no package for them in Buildroot, so\n# we keep things simple and only handle ext2.\nifeq ($(BR2_PACKAGE_E2FSPROGS),y)\nBTRFS_PROGS_CONF_OPTS += --enable-convert --with-convert=ext2\nBTRFS_PROGS_DEPENDENCIES += e2fsprogs\nelse\nBTRFS_PROGS_CONF_OPTS += --disable-convert\nendif\n\nHOST_BTRFS_PROGS_DEPENDENCIES = host-util-linux host-lzo host-zlib\nHOST_BTRFS_PROGS_CONF_OPTS = \\\n\t--disable-backtrace \\\n\t--disable-zstd \\\n\t--disable-python \\\n\t--disable-convert\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/bubblewrap/Config.in",
    "content": "config BR2_PACKAGE_BUBBLEWRAP\n\tbool \"bubblewrap\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBCAP\n\thelp\n\t  Unprivileged sandbox tool based on Linux namespaces.\n\n\t  https://github.com/projectatomic/bubblewrap\n"
  },
  {
    "path": "package/bubblewrap/bubblewrap.hash",
    "content": "# From https://github.com/containers/bubblewrap/releases/tag/v0.5.0\nsha256  16fdaf33799d63104e347e0133f909196fe90d0c50515d010bcb422eb5a00818  bubblewrap-0.5.0.tar.xz\n\n# Hash for license files:\nsha256  b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c  COPYING\n"
  },
  {
    "path": "package/bubblewrap/bubblewrap.mk",
    "content": "################################################################################\n#\n# bubblewrap\n#\n################################################################################\n\nBUBBLEWRAP_VERSION = 0.5.0\nBUBBLEWRAP_SITE = https://github.com/containers/bubblewrap/releases/download/v$(BUBBLEWRAP_VERSION)\nBUBBLEWRAP_SOURCE = bubblewrap-$(BUBBLEWRAP_VERSION).tar.xz\nBUBBLEWRAP_DEPENDENCIES = host-pkgconf libcap\n\nBUBBLEWRAP_LICENSE = LGPL-2.0+\nBUBBLEWRAP_LICENSE_FILES = COPYING\nBUBBLEWRAP_CPE_ID_VENDOR = projectatomic\n\nBUBBLEWRAP_CONF_OPTS = \\\n\t--enable-require-userns=no \\\n\t--disable-man \\\n\t--disable-sudo \\\n\t--with-priv-mode=none\n\nifeq ($(BR2_PACKAGE_BASH_COMPLETION),y)\nBUBBLEWRAP_CONF_OPTS += --with-bash-completion-dir=/usr/share/bash-completion/completions\nelse\nBUBBLEWRAP_CONF_OPTS += --without-bash-completion-dir\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nBUBBLEWRAP_CONF_OPTS += --enable-selinux\nBUBBLEWRAP_DEPENDENCIES += libselinux\nelse\nBUBBLEWRAP_CONF_OPTS += --disable-selinux\nendif\n\n# We need to mark bwrap as setuid, in case the kernel\n# has user namespaces disabled for non-root users.\ndefine BUBBLEWRAP_PERMISSIONS\n\t/usr/bin/bwrap f 1755 0 0 - - - - -\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bullet/0001-Extras-VHACD-inc-vhacdMutex.h-fix-musl-build.patch",
    "content": "From dd37b97e79aea231ae026ac93c6ca4c7a2667582 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 7 Aug 2021 17:11:24 +0200\nSubject: [PATCH] Extras/VHACD/inc/vhacdMutex.h: fix musl build\n\nFix the following build failure on musl (which does not provide\nPTHREAD_MUTEX_RECURSIVE_NP):\n\nIn file included from /tmp/instance-5/output-1/build/bullet-3.09/src/LinearMath/btScalar.h:289,\n                 from /tmp/instance-5/output-1/build/bullet-3.09/src/LinearMath/btVector3.h:19,\n                 from /tmp/instance-5/output-1/build/bullet-3.09/src/LinearMath/btConvexHullComputer.h:18,\n                 from /tmp/instance-5/output-1/build/bullet-3.09/Extras/VHACD/src/VHACD.cpp:28:\n/tmp/instance-5/output-1/build/bullet-3.09/Extras/BulletRobotics/../../Extras/VHACD/inc/vhacdMutex.h: In constructor 'VHACD::Mutex::Mutex()':\n/tmp/instance-5/output-1/build/bullet-3.09/Extras/BulletRobotics/../../Extras/VHACD/inc/vhacdMutex.h:97:54: error: 'PTHREAD_MUTEX_RECURSIVE_NP' was not declared in this scope; did you mean 'PTHREAD_MUTEX_RECURSIVE'?\n   97 |   VHACD_VERIFY(pthread_mutexattr_settype(&mutexAttr, PTHREAD_MUTEX_RECURSIVE_NP) == 0);\n      |                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/79cd2024b3dfc8d3e896cdacf67fb891df81ca6e\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/bulletphysics/bullet3/pull/3930]\n---\n Extras/VHACD/inc/vhacdMutex.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Extras/VHACD/inc/vhacdMutex.h b/Extras/VHACD/inc/vhacdMutex.h\nindex 4d1ad2a7d..78c111383 100644\n--- a/Extras/VHACD/inc/vhacdMutex.h\n+++ b/Extras/VHACD/inc/vhacdMutex.h\n@@ -69,7 +69,7 @@\n #include <pthread.h>\n #endif\n \n-#if defined(__APPLE__)\n+#if defined(__APPLE__) || !defined(__GLIBC__)\n #define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE\n #endif\n \n-- \n2.30.2\n\n"
  },
  {
    "path": "package/bullet/Config.in",
    "content": "config BR2_PACKAGE_BULLET\n\tbool \"bullet\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Bullet is a Collision Detection and Rigid Body Dynamics\n\t  Library.\n\n\t  http://bulletphysics.org\n\ncomment \"bullet needs a toolchain w/ C++, dynamic library, threads, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/bullet/bullet.hash",
    "content": "# Locally calculated\nsha256 f2feef9322329c0571d9066fede2db0ede92b19f7f7fdf54def3b4651f02af03  bullet-3.09.tar.gz\nsha256 885cd516a8420acb7c3e0b1a7119913b686495001ae564e3229740460e8cff59  LICENSE.txt\n"
  },
  {
    "path": "package/bullet/bullet.mk",
    "content": "################################################################################\n#\n# bullet\n#\n################################################################################\n\nBULLET_VERSION = 3.09\nBULLET_SITE = $(call github,bulletphysics,bullet3,$(BULLET_VERSION))\nBULLET_INSTALL_STAGING = YES\nBULLET_LICENSE = Zlib\nBULLET_LICENSE_FILES = LICENSE.txt\n\n# Disable unit tests.\n# Don't disable demos apps and Bullet3 library to avoid a build failure:\n# https://github.com/bulletphysics/bullet3/issues/3143\nBULLET_CONF_OPTS = -DBUILD_UNIT_TESTS=OFF\n\n# extras needs dlfcn.h and NPTL (pthread_barrier_init)\nifeq ($(BR2_STATIC_LIBS):$(BR2_TOOLCHAIN_HAS_THREADS_NPTL),:y)\nBULLET_CONF_OPTS += -DBUILD_EXTRAS=ON\nelse\nBULLET_CONF_OPTS += -DBUILD_EXTRAS=OFF\nendif\n\nBULLET_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nifneq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180)$(BR2_TOOLCHAIN_HAS_GCC_BUG_101952),)\nBULLET_CXXFLAGS += -O0\nendif\n\nBULLET_CONF_OPTS += -DCMAKE_CXX_FLAGS=\"$(BULLET_CXXFLAGS)\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/bustle/Config.in",
    "content": "config BR2_PACKAGE_BUSTLE\n\tbool \"bustle\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_PACKAGE_DBUS # runtime\n\tselect BR2_PACKAGE_LIBPCAP\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Bustle is a better dbus-monitor! It records and draws\n\t  sequence diagrams of D-Bus activity, showing signal\n\t  emissions, method calls and their corresponding returns,\n\t  with timestamps for each individual event and the duration\n\t  of each method call. This can help you check for unwanted\n\t  D-Bus traffic, and pinpoint why your D-Bus-based application\n\t  isn't performing as well as you like.\n\n\t  This only installs the command line bustle-pcap tool, not\n\t  the graphical viewer.\n\n\t  https://gitlab.freedesktop.org/bustle/bustle/\n\ncomment \"bustle needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_DBUS\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/bustle/bustle.hash",
    "content": "# Locally calculated\nsha256  2fb3e9d9a97db3cd9a3ce763e86947b642bd7733b46206177a1677f08726573c  bustle-0.8.0.tar.gz\nsha256  ad168b537264fba8f94380cb10f60847da7db551fb4281bb6d4f24c74f652a1d  LICENSE\n"
  },
  {
    "path": "package/bustle/bustle.mk",
    "content": "################################################################################\n#\n# bustle\n#\n################################################################################\n\nBUSTLE_VERSION = 0.8.0\nBUSTLE_SITE = https://hackage.haskell.org/package/bustle-$(BUSTLE_VERSION)\nBUSTLE_LICENSE = LGPL-2.1+\nBUSTLE_LICENSE_FILES = LICENSE\nBUSTLE_DEPENDENCIES = libglib2 libpcap host-pkgconf\n\nifeq ($(BR2_STATIC_LIBS),y)\nBUSTLE_MAKE_OPTS += PCAP_CONFIG=\"$(STAGING_DIR)/usr/bin/pcap-config --static\"\nelse\nBUSTLE_MAKE_OPTS += PCAP_CONFIG=\"$(STAGING_DIR)/usr/bin/pcap-config\"\nendif\n\ndefine BUSTLE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\t$(BUSTLE_MAKE_OPTS) -C $(@D) dist/build/bustle-pcap\nendef\n\ndefine BUSTLE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/dist/build/bustle-pcap \\\n\t\t$(TARGET_DIR)/usr/bin/bustle-pcap\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/busybox/0001-networking-libiproute-use-linux-if_packet.h-instead-.patch",
    "content": "From 60da1d0763224698008d847eb8ad8d4d8c6f54ff Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 5 Oct 2013 15:55:06 +0200\nSubject: [PATCH] networking/libiproute: use <linux/if_packet.h> instead of\n <net/if_packet.h>\n\nThe musl C library doesn't provide the <net/if_packet.h> since the\ncorresponding kernel headers <linux/if_packet.h> already provides the\nnecessary definitions. Replacing <net/if_packet.h> by\n<linux/if_packet.h> also removes the need to include\n<netpacket/packet.h>\n\nThis commit fixes the build of iplink with the musl C library.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Gustavo: update for busybox 1.22.0]\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n---\n networking/libiproute/iplink.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/networking/libiproute/iplink.c b/networking/libiproute/iplink.c\nindex 1a1064bdc..a4c3ad307 100644\n--- a/networking/libiproute/iplink.c\n+++ b/networking/libiproute/iplink.c\n@@ -7,7 +7,7 @@\n  */\n #include <net/if.h>\n /*#include <net/if_packet.h> - not needed? */\n-#include <netpacket/packet.h>\n+#include <linux/if_packet.h>\n #include <netinet/if_ether.h>\n\n #include <linux/if_vlan.h>\n--\n2.33.0\n\n"
  },
  {
    "path": "package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch",
    "content": "From 59daea82e7b5abcdb42a4f97a0109f14d5a774ea Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Mon, 25 Nov 2013 22:51:53 +0100\nSubject: [PATCH] Makefile.flags: strip non -l arguments returned by\n pkg-config\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[yann.morin.1998@free.fr: refresh for 1.29.0]\n[petr.vorel@gmail.com: refresh for 1.32.0]\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n---\n Makefile.flags | 4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.flags b/Makefile.flags\nindex 667481983..88d76efec 100644\n--- a/Makefile.flags\n+++ b/Makefile.flags\n@@ -180,7 +180,9 @@ ifeq ($(CONFIG_SELINUX),y)\n SELINUX_PC_MODULES = libselinux libsepol\n $(eval $(call pkg_check_modules,SELINUX,$(SELINUX_PC_MODULES)))\n CPPFLAGS += $(SELINUX_CFLAGS)\n-LDLIBS += $(if $(SELINUX_LIBS),$(SELINUX_LIBS:-l%=%),$(SELINUX_PC_MODULES:lib%=%))\n+LDLIBS += $(if $(SELINUX_LIBS),\\\n+       $(patsubst -l%,%,$(filter -l%,$(SELINUX_LIBS))),\\\n+       $(SELINUX_PC_MODULES:lib%=%))\n endif\n\n ifeq ($(CONFIG_FEATURE_NSLOOKUP_BIG),y)\n--\n2.33.0\n\n"
  },
  {
    "path": "package/busybox/Config.in",
    "content": "config BR2_PACKAGE_BUSYBOX\n\tbool \"BusyBox\"\n\tdefault y\n\thelp\n\t  The Swiss Army Knife of embedded Linux. It slices, it dices,\n\t  it makes Julian Fries.\n\n\t  http://busybox.net/\n\n\t  Most people will answer Y.\n\nif BR2_PACKAGE_BUSYBOX\n\nconfig BR2_PACKAGE_BUSYBOX_CONFIG\n\tstring \"BusyBox configuration file to use?\"\n\tdefault \"package/busybox/busybox.config\"\n\thelp\n\t  Some people may wish to use their own modified BusyBox\n\t  configuration file, and will specify their config file\n\t  location with this option.\n\n\t  Most people will just use the default BusyBox configuration\n\t  file.\n\nconfig BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES\n\tstring \"Additional BusyBox configuration fragment files\"\n\thelp\n\t  A space-separated list of configuration fragment files,\n\t  that will be merged to the main BusyBox configuration file.\n\n# This option is not an option of Busybox, it can be selected even\n# if Busybox is not enabled.\nconfig BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tbool \"Show packages that are also provided by busybox\"\n\thelp\n\t  Show packages in menuconfig that are potentially also provided\n\t  by busybox.\n\nconfig BR2_PACKAGE_BUSYBOX_SELINUX\n\tbool \"Enable SELinux support\"\n\tdefault y\n\tdepends on BR2_PACKAGE_LIBSELINUX\n\tselect BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES\n\thelp\n\t  Enable SELinux support in BusyBox. Please note that\n\t  depending on your BusyBox configuration and the SELinux\n\t  policy implementation, you may want to also enable\n\t  BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES.\n\n\t  For instance, if your BusyBox configuration only uses a\n\t  couple of minor BusyBox features, such as simple command\n\t  line utilities, the symlinked version of BusyBox can be used\n\t  to save space. If BusyBox provides more features, such as\n\t  crond, then individual binaries have to be enabled for the\n\t  SELinux type transitions to occur properly.\n\nconfig BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES\n\tbool \"Individual binaries\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  By default (i.e with this option disabled), Busybox is\n\t  installed as a single binary in /bin/busybox and all applets\n\t  are a symbolic link to /bin/busybox.\n\n\t  With this option enabled, each applet is a separate binary,\n\t  which is needed for proper operation with SELinux.\n\ncomment \"Busybox individual binaries need a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_BUSYBOX_WATCHDOG\n\tbool \"Install the watchdog daemon startup script\"\n\thelp\n\t  Install the watchdog daemon startup script,\n\t  that just start at the boot the busybox watchdog daemon.\n\nif BR2_PACKAGE_BUSYBOX_WATCHDOG\n\nconfig BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD\n\tstring \"Delay between reset\"\n\tdefault \"5\"\n\thelp\n\t  Select the number of seconds between each\n\t  reset of the watchdog (default 5)\n\n\t  Use ms suffix to specify milliseconds (e.g. 500ms)\n\nendif\n\nendif\n\nif !BR2_PACKAGE_BUSYBOX # kconfig doesn't support else\n\ncomment \"You may need to enable other packages to get a working system\"\ncomment \"You better know what you're doing!\"\n\n# This option is not an option of Busybox, it can be selected even if\n# Busybox is not enabled. This dummy option ensures that packages that\n# depend on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS are visible when Busybox\n# is disabled.\nconfig BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tdefault y\nendif\n"
  },
  {
    "path": "package/busybox/S01syslogd",
    "content": "#!/bin/sh\n\nDAEMON=\"syslogd\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nSYSLOGD_ARGS=\"\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\n# BusyBox' syslogd does not create a pidfile, so pass \"-n\" in the command line\n# and use \"-m\" to instruct start-stop-daemon to create one.\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -b -m -S -q -p \"$PIDFILE\" -x \"/sbin/$DAEMON\" \\\n\t\t-- -n $SYSLOGD_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/busybox/S02klogd",
    "content": "#!/bin/sh\n\nDAEMON=\"klogd\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nKLOGD_ARGS=\"\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\n# BusyBox' klogd does not create a pidfile, so pass \"-n\" in the command line\n# and use \"-m\" to instruct start-stop-daemon to create one.\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -b -m -S -q -p \"$PIDFILE\" -x \"/sbin/$DAEMON\" \\\n\t\t-- -n $KLOGD_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/busybox/S10mdev",
    "content": "#!/bin/sh\n#\n# Run the mdev daemon\n#\n\nDAEMON=\"mdev\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\n\nstart() {\n\techo -n \"Starting $DAEMON... \"\n\tstart-stop-daemon -S -b -m -p $PIDFILE -x /sbin/mdev -- -df\n\t[ $? -eq 0 ] && echo \"OK\" || echo \"ERROR\"\n\n\t# coldplug modules\n\tfind /sys/ -name modalias -print0 | \\\n\t\txargs -0 sort -u | \\\n\t\ttr '\\n' '\\0' | \\\n\t\txargs -0 modprobe -abq\n}\n\nstop() {\n\techo -n \"Stopping $DAEMON... \"\n\tstart-stop-daemon -K -p $PIDFILE\n\t[ $? -eq 0 ] && echo \"OK\" || echo \"ERROR\"\n}\n\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start|stop|restart)\n\t\"$1\"\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/busybox/S15watchdog",
    "content": "#!/bin/sh\n#\n# Start watchdog\n#\n\ncase \"$1\" in\n start)\n\techo \"Starting watchdog...\"\n\twatchdog -t PERIOD /dev/watchdog\n\t;;\n  stop)\n\t;;\n  restart|reload)\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/busybox/S50telnet",
    "content": "#!/bin/sh\n#\n# Start telnet....\n#\n\nTELNETD_ARGS=-F\n[ -r /etc/default/telnet ] && . /etc/default/telnet\n\nstart() {\n      printf \"Starting telnetd: \"\n      start-stop-daemon -S -q -m -b -p /var/run/telnetd.pid \\\n\t\t\t-x /usr/sbin/telnetd -- $TELNETD_ARGS\n      [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n\tprintf \"Stopping telnetd: \"\n\tstart-stop-daemon -K -q -p /var/run/telnetd.pid \\\n\t\t\t  -x /usr/sbin/telnetd\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\ncase \"$1\" in\n    start)\n\tstart\n\t;;\n    stop)\n\tstop\n\t;;\n    restart|reload)\n\tstop\n\tstart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/busybox/busybox-minimal.config",
    "content": "#\n# Automatically generated make config: don't edit\n# Busybox version: 1.28.0\n# Wed Feb  7 09:47:09 2018\n#\nCONFIG_HAVE_DOT_CONFIG=y\n\n#\n# Settings\n#\n# CONFIG_DESKTOP is not set\n# CONFIG_EXTRA_COMPAT is not set\n# CONFIG_FEDORA_COMPAT is not set\nCONFIG_INCLUDE_SUSv2=y\nCONFIG_LONG_OPTS=y\n# CONFIG_SHOW_USAGE is not set\n# CONFIG_FEATURE_VERBOSE_USAGE is not set\n# CONFIG_FEATURE_COMPRESS_USAGE is not set\nCONFIG_LFS=y\n# CONFIG_PAM is not set\nCONFIG_FEATURE_DEVPTS=y\nCONFIG_FEATURE_UTMP=y\nCONFIG_FEATURE_WTMP=y\n# CONFIG_FEATURE_PIDFILE is not set\nCONFIG_PID_FILE_PATH=\"\"\nCONFIG_BUSYBOX=y\nCONFIG_FEATURE_INSTALLER=y\n# CONFIG_INSTALL_NO_USR is not set\nCONFIG_FEATURE_SUID=y\n# CONFIG_FEATURE_SUID_CONFIG is not set\n# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set\n# CONFIG_FEATURE_PREFER_APPLETS is not set\nCONFIG_BUSYBOX_EXEC_PATH=\"/proc/self/exe\"\n# CONFIG_SELINUX is not set\n# CONFIG_FEATURE_CLEAN_UP is not set\nCONFIG_FEATURE_SYSLOG=y\nCONFIG_PLATFORM_LINUX=y\n\n#\n# Build Options\n#\nCONFIG_STATIC=y\n# CONFIG_PIE is not set\n# CONFIG_NOMMU is not set\n# CONFIG_BUILD_LIBBUSYBOX is not set\n# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set\n# CONFIG_FEATURE_INDIVIDUAL is not set\n# CONFIG_FEATURE_SHARED_BUSYBOX is not set\nCONFIG_CROSS_COMPILER_PREFIX=\"\"\nCONFIG_SYSROOT=\"\"\nCONFIG_EXTRA_CFLAGS=\"\"\nCONFIG_EXTRA_LDFLAGS=\"\"\nCONFIG_EXTRA_LDLIBS=\"\"\n# CONFIG_USE_PORTABLE_CODE is not set\n\n#\n# Installation Options (\"make install\" behavior)\n#\nCONFIG_INSTALL_APPLET_SYMLINKS=y\n# CONFIG_INSTALL_APPLET_HARDLINKS is not set\n# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set\n# CONFIG_INSTALL_APPLET_DONT is not set\n# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set\n# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set\n# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set\nCONFIG_PREFIX=\"./_install\"\n\n#\n# Debugging Options\n#\n# CONFIG_DEBUG is not set\n# CONFIG_DEBUG_PESSIMIZE is not set\n# CONFIG_DEBUG_SANITIZE is not set\n# CONFIG_UNIT_TEST is not set\n# CONFIG_WERROR is not set\nCONFIG_NO_DEBUG_LIB=y\n# CONFIG_DMALLOC is not set\n# CONFIG_EFENCE is not set\n\n#\n# Library Tuning\n#\n# CONFIG_FEATURE_USE_BSS_TAIL is not set\nCONFIG_FEATURE_RTMINMAX=y\nCONFIG_FEATURE_BUFFERS_USE_MALLOC=y\n# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set\n# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set\nCONFIG_PASSWORD_MINLEN=6\nCONFIG_MD5_SMALL=1\nCONFIG_SHA3_SMALL=1\n# CONFIG_FEATURE_FAST_TOP is not set\n# CONFIG_FEATURE_ETC_NETWORKS is not set\nCONFIG_FEATURE_EDITING=y\nCONFIG_FEATURE_EDITING_MAX_LEN=1024\nCONFIG_FEATURE_EDITING_VI=y\nCONFIG_FEATURE_EDITING_HISTORY=999\nCONFIG_FEATURE_EDITING_SAVEHISTORY=y\n# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set\nCONFIG_FEATURE_REVERSE_SEARCH=y\nCONFIG_FEATURE_TAB_COMPLETION=y\n# CONFIG_FEATURE_USERNAME_COMPLETION is not set\nCONFIG_FEATURE_EDITING_FANCY_PROMPT=y\n# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set\n# CONFIG_LOCALE_SUPPORT is not set\n# CONFIG_UNICODE_SUPPORT is not set\n# CONFIG_UNICODE_USING_LOCALE is not set\n# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set\nCONFIG_SUBST_WCHAR=0\nCONFIG_LAST_SUPPORTED_WCHAR=0\n# CONFIG_UNICODE_COMBINING_WCHARS is not set\n# CONFIG_UNICODE_WIDE_WCHARS is not set\n# CONFIG_UNICODE_BIDI_SUPPORT is not set\n# CONFIG_UNICODE_NEUTRAL_TABLE is not set\n# CONFIG_UNICODE_PRESERVE_BROKEN is not set\nCONFIG_FEATURE_NON_POSIX_CP=y\n# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set\nCONFIG_FEATURE_USE_SENDFILE=y\nCONFIG_FEATURE_COPYBUF_KB=4\nCONFIG_FEATURE_SKIP_ROOTFS=y\nCONFIG_MONOTONIC_SYSCALL=y\nCONFIG_IOCTL_HEX2STR_ERROR=y\nCONFIG_FEATURE_HWIB=y\n\n#\n# Applets\n#\n\n#\n# Archival Utilities\n#\n# CONFIG_FEATURE_SEAMLESS_XZ is not set\n# CONFIG_FEATURE_SEAMLESS_LZMA is not set\n# CONFIG_FEATURE_SEAMLESS_BZ2 is not set\n# CONFIG_FEATURE_SEAMLESS_GZ is not set\n# CONFIG_FEATURE_SEAMLESS_Z is not set\n# CONFIG_AR is not set\n# CONFIG_FEATURE_AR_LONG_FILENAMES is not set\n# CONFIG_FEATURE_AR_CREATE is not set\n# CONFIG_UNCOMPRESS is not set\n# CONFIG_GUNZIP is not set\nCONFIG_ZCAT=y\n# CONFIG_FEATURE_GUNZIP_LONG_OPTIONS is not set\n# CONFIG_BUNZIP2 is not set\nCONFIG_BZCAT=y\n# CONFIG_UNLZMA is not set\nCONFIG_LZCAT=y\n# CONFIG_LZMA is not set\n# CONFIG_UNXZ is not set\nCONFIG_XZCAT=y\n# CONFIG_XZ is not set\n# CONFIG_BZIP2 is not set\nCONFIG_FEATURE_BZIP2_DECOMPRESS=y\n# CONFIG_CPIO is not set\n# CONFIG_FEATURE_CPIO_O is not set\n# CONFIG_FEATURE_CPIO_P is not set\n# CONFIG_DPKG is not set\n# CONFIG_DPKG_DEB is not set\n# CONFIG_GZIP is not set\n# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set\nCONFIG_GZIP_FAST=0\n# CONFIG_FEATURE_GZIP_LEVELS is not set\nCONFIG_FEATURE_GZIP_DECOMPRESS=y\n# CONFIG_LZOP is not set\nCONFIG_UNLZOP=y\nCONFIG_LZOPCAT=y\n# CONFIG_LZOP_COMPR_HIGH is not set\n# CONFIG_RPM is not set\n# CONFIG_RPM2CPIO is not set\n# CONFIG_TAR is not set\n# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set\n# CONFIG_FEATURE_TAR_CREATE is not set\n# CONFIG_FEATURE_TAR_AUTODETECT is not set\n# CONFIG_FEATURE_TAR_FROM is not set\n# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set\n# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set\n# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set\n# CONFIG_FEATURE_TAR_TO_COMMAND is not set\n# CONFIG_FEATURE_TAR_UNAME_GNAME is not set\n# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set\n# CONFIG_FEATURE_TAR_SELINUX is not set\n# CONFIG_UNZIP is not set\n# CONFIG_FEATURE_UNZIP_CDF is not set\n# CONFIG_FEATURE_UNZIP_BZIP2 is not set\n# CONFIG_FEATURE_UNZIP_LZMA is not set\n# CONFIG_FEATURE_UNZIP_XZ is not set\n# CONFIG_FEATURE_LZMA_FAST is not set\n\n#\n# Coreutils\n#\nCONFIG_BASENAME=y\nCONFIG_CAT=y\nCONFIG_FEATURE_CATN=y\nCONFIG_FEATURE_CATV=y\nCONFIG_CHGRP=y\nCONFIG_CHMOD=y\nCONFIG_CHOWN=y\n# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set\nCONFIG_CHROOT=y\nCONFIG_CKSUM=y\n# CONFIG_COMM is not set\nCONFIG_CP=y\n# CONFIG_FEATURE_CP_LONG_OPTIONS is not set\nCONFIG_CUT=y\nCONFIG_DATE=y\nCONFIG_FEATURE_DATE_ISOFMT=y\n# CONFIG_FEATURE_DATE_NANO is not set\nCONFIG_FEATURE_DATE_COMPAT=y\nCONFIG_DD=y\nCONFIG_FEATURE_DD_SIGNAL_HANDLING=y\n# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set\nCONFIG_FEATURE_DD_IBS_OBS=y\nCONFIG_FEATURE_DD_STATUS=y\nCONFIG_DF=y\n# CONFIG_FEATURE_DF_FANCY is not set\nCONFIG_DIRNAME=y\nCONFIG_DOS2UNIX=y\nCONFIG_UNIX2DOS=y\nCONFIG_DU=y\nCONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y\nCONFIG_ECHO=y\nCONFIG_FEATURE_FANCY_ECHO=y\nCONFIG_ENV=y\n# CONFIG_EXPAND is not set\n# CONFIG_UNEXPAND is not set\nCONFIG_EXPR=y\nCONFIG_EXPR_MATH_SUPPORT_64=y\nCONFIG_FACTOR=y\nCONFIG_FALSE=y\nCONFIG_FOLD=y\n# CONFIG_FSYNC is not set\nCONFIG_HEAD=y\nCONFIG_FEATURE_FANCY_HEAD=y\nCONFIG_HOSTID=y\nCONFIG_ID=y\n# CONFIG_GROUPS is not set\nCONFIG_INSTALL=y\nCONFIG_FEATURE_INSTALL_LONG_OPTIONS=y\nCONFIG_LINK=y\nCONFIG_LN=y\nCONFIG_LOGNAME=y\nCONFIG_LS=y\nCONFIG_FEATURE_LS_FILETYPES=y\nCONFIG_FEATURE_LS_FOLLOWLINKS=y\nCONFIG_FEATURE_LS_RECURSIVE=y\nCONFIG_FEATURE_LS_WIDTH=y\nCONFIG_FEATURE_LS_SORTFILES=y\nCONFIG_FEATURE_LS_TIMESTAMPS=y\nCONFIG_FEATURE_LS_USERNAME=y\nCONFIG_FEATURE_LS_COLOR=y\nCONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y\nCONFIG_MD5SUM=y\nCONFIG_SHA1SUM=y\nCONFIG_SHA256SUM=y\nCONFIG_SHA512SUM=y\nCONFIG_SHA3SUM=y\n\n#\n# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum\n#\nCONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y\nCONFIG_MKDIR=y\nCONFIG_MKFIFO=y\nCONFIG_MKNOD=y\n# CONFIG_MKTEMP is not set\nCONFIG_MV=y\nCONFIG_NICE=y\nCONFIG_NL=y\nCONFIG_NOHUP=y\nCONFIG_NPROC=y\nCONFIG_OD=y\nCONFIG_PASTE=y\nCONFIG_PRINTENV=y\nCONFIG_PRINTF=y\nCONFIG_PWD=y\nCONFIG_READLINK=y\nCONFIG_FEATURE_READLINK_FOLLOW=y\nCONFIG_REALPATH=y\nCONFIG_RM=y\nCONFIG_RMDIR=y\nCONFIG_SEQ=y\nCONFIG_SHRED=y\n# CONFIG_SHUF is not set\nCONFIG_SLEEP=y\nCONFIG_FEATURE_FANCY_SLEEP=y\nCONFIG_FEATURE_FLOAT_SLEEP=y\nCONFIG_SORT=y\nCONFIG_FEATURE_SORT_BIG=y\n# CONFIG_SPLIT is not set\n# CONFIG_FEATURE_SPLIT_FANCY is not set\n# CONFIG_STAT is not set\n# CONFIG_FEATURE_STAT_FORMAT is not set\n# CONFIG_FEATURE_STAT_FILESYSTEM is not set\nCONFIG_STTY=y\n# CONFIG_SUM is not set\nCONFIG_SYNC=y\n# CONFIG_FEATURE_SYNC_FANCY is not set\n# CONFIG_TAC is not set\nCONFIG_TAIL=y\nCONFIG_FEATURE_FANCY_TAIL=y\nCONFIG_TEE=y\nCONFIG_FEATURE_TEE_USE_BLOCK_IO=y\nCONFIG_TEST=y\nCONFIG_TEST1=y\nCONFIG_TEST2=y\nCONFIG_FEATURE_TEST_64=y\n# CONFIG_TIMEOUT is not set\nCONFIG_TOUCH=y\n# CONFIG_FEATURE_TOUCH_NODEREF is not set\nCONFIG_FEATURE_TOUCH_SUSV3=y\nCONFIG_TR=y\nCONFIG_FEATURE_TR_CLASSES=y\nCONFIG_FEATURE_TR_EQUIV=y\nCONFIG_TRUE=y\nCONFIG_TRUNCATE=y\nCONFIG_TTY=y\nCONFIG_UNAME=y\nCONFIG_UNAME_OSNAME=\"GNU/Linux\"\nCONFIG_BB_ARCH=y\nCONFIG_UNIQ=y\nCONFIG_UNLINK=y\nCONFIG_USLEEP=y\nCONFIG_UUDECODE=y\n# CONFIG_BASE64 is not set\nCONFIG_UUENCODE=y\nCONFIG_WC=y\n# CONFIG_FEATURE_WC_LARGE is not set\nCONFIG_WHOAMI=y\nCONFIG_WHO=y\nCONFIG_W=y\n# CONFIG_USERS is not set\nCONFIG_YES=y\n\n#\n# Common options\n#\nCONFIG_FEATURE_VERBOSE=y\n\n#\n# Common options for cp and mv\n#\nCONFIG_FEATURE_PRESERVE_HARDLINKS=y\n\n#\n# Common options for df, du, ls\n#\nCONFIG_FEATURE_HUMAN_READABLE=y\n\n#\n# Console Utilities\n#\n# CONFIG_CHVT is not set\n# CONFIG_CLEAR is not set\n# CONFIG_DEALLOCVT is not set\n# CONFIG_DUMPKMAP is not set\n# CONFIG_FGCONSOLE is not set\n# CONFIG_KBD_MODE is not set\n# CONFIG_LOADFONT is not set\n# CONFIG_SETFONT is not set\n# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set\nCONFIG_DEFAULT_SETFONT_DIR=\"\"\n# CONFIG_FEATURE_LOADFONT_PSF2 is not set\n# CONFIG_FEATURE_LOADFONT_RAW is not set\n# CONFIG_LOADKMAP is not set\n# CONFIG_OPENVT is not set\n# CONFIG_RESET is not set\n# CONFIG_RESIZE is not set\n# CONFIG_FEATURE_RESIZE_PRINT is not set\n# CONFIG_SETCONSOLE is not set\n# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set\n# CONFIG_SETKEYCODES is not set\n# CONFIG_SETLOGCONS is not set\n# CONFIG_SHOWKEY is not set\n\n#\n# Debian Utilities\n#\n# CONFIG_PIPE_PROGRESS is not set\nCONFIG_RUN_PARTS=y\nCONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y\nCONFIG_FEATURE_RUN_PARTS_FANCY=y\nCONFIG_START_STOP_DAEMON=y\nCONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y\nCONFIG_FEATURE_START_STOP_DAEMON_FANCY=y\nCONFIG_WHICH=y\n\n#\n# klibc-utils\n#\n# CONFIG_MINIPS is not set\nCONFIG_NUKE=y\nCONFIG_RESUME=y\nCONFIG_RUN_INIT=y\n\n#\n# Editors\n#\n# CONFIG_AWK is not set\n# CONFIG_FEATURE_AWK_LIBM is not set\n# CONFIG_FEATURE_AWK_GNU_EXTENSIONS is not set\n# CONFIG_CMP is not set\n# CONFIG_DIFF is not set\n# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set\n# CONFIG_FEATURE_DIFF_DIR is not set\n# CONFIG_ED is not set\n# CONFIG_PATCH is not set\nCONFIG_SED=y\n# CONFIG_VI is not set\nCONFIG_FEATURE_VI_MAX_LEN=0\n# CONFIG_FEATURE_VI_8BIT is not set\n# CONFIG_FEATURE_VI_COLON is not set\n# CONFIG_FEATURE_VI_YANKMARK is not set\n# CONFIG_FEATURE_VI_SEARCH is not set\n# CONFIG_FEATURE_VI_REGEX_SEARCH is not set\n# CONFIG_FEATURE_VI_USE_SIGNALS is not set\n# CONFIG_FEATURE_VI_DOT_CMD is not set\n# CONFIG_FEATURE_VI_READONLY is not set\n# CONFIG_FEATURE_VI_SETOPTS is not set\n# CONFIG_FEATURE_VI_SET is not set\n# CONFIG_FEATURE_VI_WIN_RESIZE is not set\n# CONFIG_FEATURE_VI_ASK_TERMINAL is not set\n# CONFIG_FEATURE_VI_UNDO is not set\n# CONFIG_FEATURE_VI_UNDO_QUEUE is not set\nCONFIG_FEATURE_VI_UNDO_QUEUE_MAX=0\n# CONFIG_FEATURE_ALLOW_EXEC is not set\n\n#\n# Finding Utilities\n#\n# CONFIG_FIND is not set\n# CONFIG_FEATURE_FIND_PRINT0 is not set\n# CONFIG_FEATURE_FIND_MTIME is not set\n# CONFIG_FEATURE_FIND_MMIN is not set\n# CONFIG_FEATURE_FIND_PERM is not set\n# CONFIG_FEATURE_FIND_TYPE is not set\n# CONFIG_FEATURE_FIND_XDEV is not set\n# CONFIG_FEATURE_FIND_MAXDEPTH is not set\n# CONFIG_FEATURE_FIND_NEWER is not set\n# CONFIG_FEATURE_FIND_INUM is not set\n# CONFIG_FEATURE_FIND_EXEC is not set\n# CONFIG_FEATURE_FIND_EXEC_PLUS is not set\n# CONFIG_FEATURE_FIND_USER is not set\n# CONFIG_FEATURE_FIND_GROUP is not set\n# CONFIG_FEATURE_FIND_NOT is not set\n# CONFIG_FEATURE_FIND_DEPTH is not set\n# CONFIG_FEATURE_FIND_PAREN is not set\n# CONFIG_FEATURE_FIND_SIZE is not set\n# CONFIG_FEATURE_FIND_PRUNE is not set\n# CONFIG_FEATURE_FIND_DELETE is not set\n# CONFIG_FEATURE_FIND_PATH is not set\n# CONFIG_FEATURE_FIND_REGEX is not set\n# CONFIG_FEATURE_FIND_CONTEXT is not set\n# CONFIG_FEATURE_FIND_LINKS is not set\nCONFIG_GREP=y\nCONFIG_EGREP=y\nCONFIG_FGREP=y\nCONFIG_FEATURE_GREP_CONTEXT=y\nCONFIG_XARGS=y\n# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set\nCONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y\nCONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y\nCONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y\nCONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y\nCONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y\nCONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y\n\n#\n# Init Utilities\n#\n# CONFIG_BOOTCHARTD is not set\n# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set\n# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set\nCONFIG_HALT=y\nCONFIG_POWEROFF=y\nCONFIG_REBOOT=y\n# CONFIG_FEATURE_CALL_TELINIT is not set\nCONFIG_TELINIT_PATH=\"\"\nCONFIG_INIT=y\nCONFIG_LINUXRC=y\nCONFIG_FEATURE_USE_INITTAB=y\nCONFIG_FEATURE_KILL_REMOVED=y\nCONFIG_FEATURE_KILL_DELAY=0\nCONFIG_FEATURE_INIT_SCTTY=y\nCONFIG_FEATURE_INIT_SYSLOG=y\nCONFIG_FEATURE_INIT_QUIET=y\n# CONFIG_FEATURE_INIT_COREDUMPS is not set\nCONFIG_INIT_TERMINAL_TYPE=\"linux\"\nCONFIG_FEATURE_INIT_MODIFY_CMDLINE=y\n\n#\n# Login/Password Management Utilities\n#\nCONFIG_FEATURE_SHADOWPASSWDS=y\n# CONFIG_USE_BB_PWD_GRP is not set\n# CONFIG_USE_BB_SHADOW is not set\nCONFIG_USE_BB_CRYPT=y\n# CONFIG_USE_BB_CRYPT_SHA is not set\n# CONFIG_ADDGROUP is not set\n# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set\n# CONFIG_ADD_SHELL is not set\n# CONFIG_REMOVE_SHELL is not set\nCONFIG_ADDUSER=y\n# CONFIG_FEATURE_CHECK_NAMES is not set\nCONFIG_LAST_ID=60000\nCONFIG_FIRST_SYSTEM_ID=100\nCONFIG_LAST_SYSTEM_ID=999\n# CONFIG_CHPASSWD is not set\nCONFIG_FEATURE_DEFAULT_PASSWD_ALGO=\"des\"\n# CONFIG_CRYPTPW is not set\n# CONFIG_MKPASSWD is not set\n# CONFIG_DELUSER is not set\n# CONFIG_DELGROUP is not set\n# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set\nCONFIG_GETTY=y\nCONFIG_LOGIN=y\n# CONFIG_LOGIN_SESSION_AS_CHILD is not set\n# CONFIG_LOGIN_SCRIPTS is not set\nCONFIG_FEATURE_NOLOGIN=y\nCONFIG_FEATURE_SECURETTY=y\nCONFIG_PASSWD=y\nCONFIG_FEATURE_PASSWD_WEAK_CHECK=y\n# CONFIG_SU is not set\n# CONFIG_FEATURE_SU_SYSLOG is not set\n# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set\n# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set\n# CONFIG_SULOGIN is not set\n# CONFIG_VLOCK is not set\n\n#\n# Linux Ext2 FS Progs\n#\n# CONFIG_CHATTR is not set\n# CONFIG_FSCK is not set\n# CONFIG_LSATTR is not set\n# CONFIG_TUNE2FS is not set\n\n#\n# Linux Module Utilities\n#\n# CONFIG_MODPROBE_SMALL is not set\n# CONFIG_DEPMOD is not set\n# CONFIG_INSMOD is not set\n# CONFIG_LSMOD is not set\n# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set\n# CONFIG_MODINFO is not set\n# CONFIG_MODPROBE is not set\n# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set\n# CONFIG_RMMOD is not set\n\n#\n# Options common to multiple modutils\n#\n# CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS is not set\n# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set\n# CONFIG_FEATURE_2_4_MODULES is not set\n# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set\n# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set\n# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set\n# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set\n# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set\n# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set\n# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set\n# CONFIG_FEATURE_MODUTILS_ALIAS is not set\n# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set\nCONFIG_DEFAULT_MODULES_DIR=\"\"\nCONFIG_DEFAULT_DEPMOD_FILE=\"\"\n\n#\n# Linux System Utilities\n#\n# CONFIG_ACPID is not set\n# CONFIG_FEATURE_ACPID_COMPAT is not set\n# CONFIG_BLKDISCARD is not set\n# CONFIG_BLKID is not set\n# CONFIG_FEATURE_BLKID_TYPE is not set\n# CONFIG_BLOCKDEV is not set\n# CONFIG_CAL is not set\n# CONFIG_CHRT is not set\nCONFIG_DMESG=y\nCONFIG_FEATURE_DMESG_PRETTY=y\n# CONFIG_EJECT is not set\n# CONFIG_FEATURE_EJECT_SCSI is not set\nCONFIG_FALLOCATE=y\n# CONFIG_FATATTR is not set\n# CONFIG_FBSET is not set\n# CONFIG_FEATURE_FBSET_FANCY is not set\n# CONFIG_FEATURE_FBSET_READMODE is not set\n# CONFIG_FDFORMAT is not set\n# CONFIG_FDISK is not set\n# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set\n# CONFIG_FEATURE_FDISK_WRITABLE is not set\n# CONFIG_FEATURE_AIX_LABEL is not set\n# CONFIG_FEATURE_SGI_LABEL is not set\n# CONFIG_FEATURE_SUN_LABEL is not set\n# CONFIG_FEATURE_OSF_LABEL is not set\n# CONFIG_FEATURE_GPT_LABEL is not set\n# CONFIG_FEATURE_FDISK_ADVANCED is not set\n# CONFIG_FINDFS is not set\n# CONFIG_FLOCK is not set\n# CONFIG_FDFLUSH is not set\nCONFIG_FREERAMDISK=y\n# CONFIG_FSCK_MINIX is not set\nCONFIG_FSFREEZE=y\n# CONFIG_FSTRIM is not set\nCONFIG_GETOPT=y\nCONFIG_FEATURE_GETOPT_LONG=y\n# CONFIG_HEXDUMP is not set\n# CONFIG_FEATURE_HEXDUMP_REVERSE is not set\n# CONFIG_HD is not set\nCONFIG_XXD=y\n# CONFIG_HWCLOCK is not set\n# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set\n# CONFIG_IONICE is not set\n# CONFIG_IPCRM is not set\n# CONFIG_IPCS is not set\n# CONFIG_LAST is not set\n# CONFIG_FEATURE_LAST_FANCY is not set\n# CONFIG_LOSETUP is not set\n# CONFIG_LSPCI is not set\n# CONFIG_LSUSB is not set\n# CONFIG_MDEV is not set\n# CONFIG_FEATURE_MDEV_CONF is not set\n# CONFIG_FEATURE_MDEV_RENAME is not set\n# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set\n# CONFIG_FEATURE_MDEV_EXEC is not set\n# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set\nCONFIG_MESG=y\nCONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y\nCONFIG_MKE2FS=y\n# CONFIG_MKFS_EXT2 is not set\n# CONFIG_MKFS_MINIX is not set\n# CONFIG_FEATURE_MINIX2 is not set\n# CONFIG_MKFS_REISER is not set\nCONFIG_MKDOSFS=y\n# CONFIG_MKFS_VFAT is not set\n# CONFIG_MKSWAP is not set\n# CONFIG_FEATURE_MKSWAP_UUID is not set\nCONFIG_MORE=y\nCONFIG_MOUNT=y\n# CONFIG_FEATURE_MOUNT_FAKE is not set\n# CONFIG_FEATURE_MOUNT_VERBOSE is not set\n# CONFIG_FEATURE_MOUNT_HELPERS is not set\n# CONFIG_FEATURE_MOUNT_LABEL is not set\n# CONFIG_FEATURE_MOUNT_NFS is not set\nCONFIG_FEATURE_MOUNT_CIFS=y\nCONFIG_FEATURE_MOUNT_FLAGS=y\nCONFIG_FEATURE_MOUNT_FSTAB=y\nCONFIG_FEATURE_MOUNT_OTHERTAB=y\n# CONFIG_MOUNTPOINT is not set\n# CONFIG_NSENTER is not set\n# CONFIG_PIVOT_ROOT is not set\n# CONFIG_RDATE is not set\n# CONFIG_RDEV is not set\n# CONFIG_READPROFILE is not set\n# CONFIG_RENICE is not set\n# CONFIG_REV is not set\n# CONFIG_RTCWAKE is not set\n# CONFIG_SCRIPT is not set\n# CONFIG_SCRIPTREPLAY is not set\n# CONFIG_SETARCH is not set\nCONFIG_LINUX32=y\nCONFIG_LINUX64=y\nCONFIG_SETPRIV=y\nCONFIG_FEATURE_SETPRIV_DUMP=y\nCONFIG_FEATURE_SETPRIV_CAPABILITIES=y\nCONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y\n# CONFIG_SETSID is not set\nCONFIG_SWAPON=y\n# CONFIG_FEATURE_SWAPON_DISCARD is not set\n# CONFIG_FEATURE_SWAPON_PRI is not set\nCONFIG_SWAPOFF=y\nCONFIG_FEATURE_SWAPONOFF_LABEL=y\n# CONFIG_SWITCH_ROOT is not set\n# CONFIG_TASKSET is not set\n# CONFIG_FEATURE_TASKSET_FANCY is not set\n# CONFIG_UEVENT is not set\nCONFIG_UMOUNT=y\nCONFIG_FEATURE_UMOUNT_ALL=y\n# CONFIG_UNSHARE is not set\n# CONFIG_WALL is not set\n\n#\n# Common options for mount/umount\n#\nCONFIG_FEATURE_MOUNT_LOOP=y\nCONFIG_FEATURE_MOUNT_LOOP_CREATE=y\n# CONFIG_FEATURE_MTAB_SUPPORT is not set\nCONFIG_VOLUMEID=y\n\n#\n# Filesystem/Volume identification\n#\n# CONFIG_FEATURE_VOLUMEID_BCACHE is not set\n# CONFIG_FEATURE_VOLUMEID_BTRFS is not set\n# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set\n# CONFIG_FEATURE_VOLUMEID_EXFAT is not set\n# CONFIG_FEATURE_VOLUMEID_EXT is not set\n# CONFIG_FEATURE_VOLUMEID_F2FS is not set\n# CONFIG_FEATURE_VOLUMEID_FAT is not set\n# CONFIG_FEATURE_VOLUMEID_HFS is not set\n# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set\n# CONFIG_FEATURE_VOLUMEID_JFS is not set\n# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set\n# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set\n# CONFIG_FEATURE_VOLUMEID_LUKS is not set\nCONFIG_FEATURE_VOLUMEID_MINIX=y\n# CONFIG_FEATURE_VOLUMEID_NILFS is not set\n# CONFIG_FEATURE_VOLUMEID_NTFS is not set\n# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set\n# CONFIG_FEATURE_VOLUMEID_REISERFS is not set\n# CONFIG_FEATURE_VOLUMEID_ROMFS is not set\n# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set\n# CONFIG_FEATURE_VOLUMEID_SYSV is not set\n# CONFIG_FEATURE_VOLUMEID_UBIFS is not set\n# CONFIG_FEATURE_VOLUMEID_UDF is not set\n# CONFIG_FEATURE_VOLUMEID_XFS is not set\n\n#\n# Miscellaneous Utilities\n#\n# CONFIG_ADJTIMEX is not set\n# CONFIG_BBCONFIG is not set\n# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set\n# CONFIG_BEEP is not set\nCONFIG_FEATURE_BEEP_FREQ=0\nCONFIG_FEATURE_BEEP_LENGTH_MS=0\n# CONFIG_CHAT is not set\n# CONFIG_FEATURE_CHAT_NOFAIL is not set\n# CONFIG_FEATURE_CHAT_TTY_HIFI is not set\n# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set\n# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set\n# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set\n# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set\n# CONFIG_FEATURE_CHAT_CLR_ABORT is not set\n# CONFIG_CONSPY is not set\n# CONFIG_CROND is not set\n# CONFIG_FEATURE_CROND_D is not set\n# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set\n# CONFIG_FEATURE_CROND_SPECIAL_TIMES is not set\nCONFIG_FEATURE_CROND_DIR=\"\"\n# CONFIG_CRONTAB is not set\n# CONFIG_DC is not set\n# CONFIG_FEATURE_DC_LIBM is not set\n# CONFIG_DEVFSD is not set\n# CONFIG_DEVFSD_MODLOAD is not set\n# CONFIG_DEVFSD_FG_NP is not set\n# CONFIG_DEVFSD_VERBOSE is not set\n# CONFIG_FEATURE_DEVFS is not set\n# CONFIG_DEVMEM is not set\n# CONFIG_FBSPLASH is not set\n# CONFIG_FLASHCP is not set\n# CONFIG_FLASH_ERASEALL is not set\n# CONFIG_FLASH_LOCK is not set\n# CONFIG_FLASH_UNLOCK is not set\n# CONFIG_HDPARM is not set\n# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set\n# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set\n# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set\n# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set\n# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set\n# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set\nCONFIG_HEXEDIT=y\n# CONFIG_I2CGET is not set\n# CONFIG_I2CSET is not set\n# CONFIG_I2CDUMP is not set\n# CONFIG_I2CDETECT is not set\n# CONFIG_INOTIFYD is not set\n# CONFIG_LESS is not set\nCONFIG_FEATURE_LESS_MAXLINES=0\n# CONFIG_FEATURE_LESS_BRACKETS is not set\n# CONFIG_FEATURE_LESS_FLAGS is not set\n# CONFIG_FEATURE_LESS_TRUNCATE is not set\n# CONFIG_FEATURE_LESS_MARKS is not set\n# CONFIG_FEATURE_LESS_REGEXP is not set\n# CONFIG_FEATURE_LESS_WINCH is not set\n# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set\n# CONFIG_FEATURE_LESS_DASHCMD is not set\n# CONFIG_FEATURE_LESS_LINENUMS is not set\nCONFIG_LSSCSI=y\n# CONFIG_MAKEDEVS is not set\n# CONFIG_FEATURE_MAKEDEVS_LEAF is not set\n# CONFIG_FEATURE_MAKEDEVS_TABLE is not set\n# CONFIG_MAN is not set\n# CONFIG_MICROCOM is not set\n# CONFIG_MT is not set\n# CONFIG_NANDWRITE is not set\n# CONFIG_NANDDUMP is not set\nCONFIG_PARTPROBE=y\n# CONFIG_RAIDAUTORUN is not set\n# CONFIG_READAHEAD is not set\n# CONFIG_RFKILL is not set\n# CONFIG_RUNLEVEL is not set\n# CONFIG_RX is not set\nCONFIG_SETFATTR=y\nCONFIG_SETSERIAL=y\n# CONFIG_STRINGS is not set\n# CONFIG_TIME is not set\n# CONFIG_TTYSIZE is not set\n# CONFIG_UBIRENAME is not set\n# CONFIG_UBIATTACH is not set\n# CONFIG_UBIDETACH is not set\n# CONFIG_UBIMKVOL is not set\n# CONFIG_UBIRMVOL is not set\n# CONFIG_UBIRSVOL is not set\n# CONFIG_UBIUPDATEVOL is not set\n# CONFIG_VOLNAME is not set\n# CONFIG_WATCHDOG is not set\n\n#\n# Networking Utilities\n#\n# CONFIG_FEATURE_IPV6 is not set\n# CONFIG_FEATURE_UNIX_LOCAL is not set\n# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set\n# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set\n# CONFIG_ARP is not set\n# CONFIG_ARPING is not set\n# CONFIG_BRCTL is not set\n# CONFIG_FEATURE_BRCTL_FANCY is not set\n# CONFIG_FEATURE_BRCTL_SHOW is not set\n# CONFIG_DNSD is not set\n# CONFIG_ETHER_WAKE is not set\n# CONFIG_FTPD is not set\n# CONFIG_FEATURE_FTPD_WRITE is not set\n# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set\n# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set\n# CONFIG_FTPGET is not set\n# CONFIG_FTPPUT is not set\n# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set\nCONFIG_HOSTNAME=y\nCONFIG_DNSDOMAINNAME=y\n# CONFIG_HTTPD is not set\n# CONFIG_FEATURE_HTTPD_RANGES is not set\n# CONFIG_FEATURE_HTTPD_SETUID is not set\n# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set\n# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set\n# CONFIG_FEATURE_HTTPD_CGI is not set\n# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set\n# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set\n# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set\n# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set\n# CONFIG_FEATURE_HTTPD_PROXY is not set\n# CONFIG_FEATURE_HTTPD_GZIP is not set\nCONFIG_IFCONFIG=y\nCONFIG_FEATURE_IFCONFIG_STATUS=y\n# CONFIG_FEATURE_IFCONFIG_SLIP is not set\n# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set\nCONFIG_FEATURE_IFCONFIG_HW=y\nCONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y\n# CONFIG_IFENSLAVE is not set\n# CONFIG_IFPLUGD is not set\nCONFIG_IFUP=y\nCONFIG_IFDOWN=y\nCONFIG_IFUPDOWN_IFSTATE_PATH=\"/var/run/ifstate\"\nCONFIG_FEATURE_IFUPDOWN_IP=y\nCONFIG_FEATURE_IFUPDOWN_IPV4=y\n# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set\n# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set\nCONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y\n# CONFIG_INETD is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set\n# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set\n# CONFIG_FEATURE_INETD_RPC is not set\nCONFIG_IP=y\nCONFIG_IPADDR=y\nCONFIG_IPLINK=y\nCONFIG_IPROUTE=y\n# CONFIG_IPTUNNEL is not set\n# CONFIG_IPRULE is not set\n# CONFIG_IPNEIGH is not set\nCONFIG_FEATURE_IP_ADDRESS=y\nCONFIG_FEATURE_IP_LINK=y\nCONFIG_FEATURE_IP_ROUTE=y\nCONFIG_FEATURE_IP_ROUTE_DIR=\"/etc/iproute2\"\n# CONFIG_FEATURE_IP_TUNNEL is not set\n# CONFIG_FEATURE_IP_RULE is not set\n# CONFIG_FEATURE_IP_NEIGH is not set\n# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set\n# CONFIG_IPCALC is not set\n# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set\n# CONFIG_FEATURE_IPCALC_FANCY is not set\n# CONFIG_FAKEIDENTD is not set\n# CONFIG_NAMEIF is not set\n# CONFIG_FEATURE_NAMEIF_EXTENDED is not set\n# CONFIG_NBDCLIENT is not set\nCONFIG_NC=y\n# CONFIG_NETCAT is not set\nCONFIG_NC_SERVER=y\n# CONFIG_NC_EXTRA is not set\n# CONFIG_NC_110_COMPAT is not set\nCONFIG_NETSTAT=y\n# CONFIG_FEATURE_NETSTAT_WIDE is not set\nCONFIG_FEATURE_NETSTAT_PRG=y\n# CONFIG_NSLOOKUP is not set\n# CONFIG_NTPD is not set\n# CONFIG_FEATURE_NTPD_SERVER is not set\n# CONFIG_FEATURE_NTPD_CONF is not set\nCONFIG_PING=y\n# CONFIG_PING6 is not set\n# CONFIG_FEATURE_FANCY_PING is not set\n# CONFIG_PSCAN is not set\nCONFIG_ROUTE=y\n# CONFIG_SLATTACH is not set\n# CONFIG_SSL_CLIENT is not set\n# CONFIG_TCPSVD is not set\n# CONFIG_UDPSVD is not set\nCONFIG_TELNET=y\nCONFIG_FEATURE_TELNET_TTYPE=y\nCONFIG_FEATURE_TELNET_AUTOLOGIN=y\nCONFIG_FEATURE_TELNET_WIDTH=y\n# CONFIG_TELNETD is not set\n# CONFIG_FEATURE_TELNETD_STANDALONE is not set\n# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set\n# CONFIG_TFTP is not set\n# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set\n# CONFIG_TFTPD is not set\n# CONFIG_FEATURE_TFTP_GET is not set\n# CONFIG_FEATURE_TFTP_PUT is not set\n# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set\n# CONFIG_TFTP_DEBUG is not set\n# CONFIG_TLS is not set\n# CONFIG_TRACEROUTE is not set\n# CONFIG_TRACEROUTE6 is not set\n# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set\n# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set\n# CONFIG_TUNCTL is not set\n# CONFIG_FEATURE_TUNCTL_UG is not set\n# CONFIG_VCONFIG is not set\nCONFIG_WGET=y\n# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set\n# CONFIG_FEATURE_WGET_STATUSBAR is not set\n# CONFIG_FEATURE_WGET_AUTHENTICATION is not set\n# CONFIG_FEATURE_WGET_TIMEOUT is not set\n# CONFIG_FEATURE_WGET_HTTPS is not set\n# CONFIG_FEATURE_WGET_OPENSSL is not set\n# CONFIG_WHOIS is not set\n# CONFIG_ZCIP is not set\n# CONFIG_UDHCPD is not set\n# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set\n# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set\nCONFIG_DHCPD_LEASES_FILE=\"\"\n# CONFIG_DUMPLEASES is not set\n# CONFIG_DHCPRELAY is not set\nCONFIG_UDHCPC=y\n# CONFIG_FEATURE_UDHCPC_ARPING is not set\nCONFIG_FEATURE_UDHCPC_SANITIZEOPT=y\nCONFIG_UDHCPC_DEFAULT_SCRIPT=\"/usr/share/udhcpc/default.script\"\n# CONFIG_UDHCPC6 is not set\n# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set\n# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set\n# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set\n\n#\n# Common options for DHCP applets\n#\n# CONFIG_FEATURE_UDHCP_PORT is not set\nCONFIG_UDHCP_DEBUG=9\nCONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80\n# CONFIG_FEATURE_UDHCP_RFC3397 is not set\n# CONFIG_FEATURE_UDHCP_8021Q is not set\nCONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=\"-R -n\"\n\n#\n# Print Utilities\n#\n# CONFIG_LPD is not set\n# CONFIG_LPR is not set\n# CONFIG_LPQ is not set\n\n#\n# Mail Utilities\n#\n# CONFIG_MAKEMIME is not set\n# CONFIG_POPMAILDIR is not set\n# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set\n# CONFIG_REFORMIME is not set\n# CONFIG_FEATURE_REFORMIME_COMPAT is not set\n# CONFIG_SENDMAIL is not set\nCONFIG_FEATURE_MIME_CHARSET=\"\"\n\n#\n# Process Utilities\n#\n# CONFIG_FREE is not set\n# CONFIG_FUSER is not set\n# CONFIG_IOSTAT is not set\nCONFIG_KILL=y\nCONFIG_KILLALL=y\nCONFIG_KILLALL5=y\n# CONFIG_LSOF is not set\n# CONFIG_MPSTAT is not set\n# CONFIG_NMETER is not set\n# CONFIG_PGREP is not set\n# CONFIG_PKILL is not set\n# CONFIG_PIDOF is not set\n# CONFIG_FEATURE_PIDOF_SINGLE is not set\n# CONFIG_FEATURE_PIDOF_OMIT is not set\n# CONFIG_PMAP is not set\n# CONFIG_POWERTOP is not set\n# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set\nCONFIG_PS=y\nCONFIG_FEATURE_PS_WIDE=y\nCONFIG_FEATURE_PS_LONG=y\n# CONFIG_FEATURE_PS_TIME is not set\n# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set\n# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set\n# CONFIG_PSTREE is not set\n# CONFIG_PWDX is not set\n# CONFIG_SMEMCAP is not set\n# CONFIG_BB_SYSCTL is not set\n# CONFIG_TOP is not set\n# CONFIG_FEATURE_TOP_INTERACTIVE is not set\n# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set\n# CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set\n# CONFIG_FEATURE_TOP_SMP_CPU is not set\n# CONFIG_FEATURE_TOP_DECIMALS is not set\n# CONFIG_FEATURE_TOP_SMP_PROCESS is not set\n# CONFIG_FEATURE_TOPMEM is not set\n# CONFIG_UPTIME is not set\n# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set\n# CONFIG_WATCH is not set\n# CONFIG_FEATURE_SHOW_THREADS is not set\n\n#\n# Runit Utilities\n#\n# CONFIG_CHPST is not set\n# CONFIG_SETUIDGID is not set\n# CONFIG_ENVUIDGID is not set\n# CONFIG_ENVDIR is not set\n# CONFIG_SOFTLIMIT is not set\n# CONFIG_RUNSV is not set\n# CONFIG_RUNSVDIR is not set\n# CONFIG_FEATURE_RUNSVDIR_LOG is not set\n# CONFIG_SV is not set\nCONFIG_SV_DEFAULT_SERVICE_DIR=\"\"\nCONFIG_SVC=y\n# CONFIG_SVLOGD is not set\n# CONFIG_CHCON is not set\n# CONFIG_GETENFORCE is not set\n# CONFIG_GETSEBOOL is not set\n# CONFIG_LOAD_POLICY is not set\n# CONFIG_MATCHPATHCON is not set\n# CONFIG_RUNCON is not set\n# CONFIG_SELINUXENABLED is not set\n# CONFIG_SESTATUS is not set\n# CONFIG_SETENFORCE is not set\n# CONFIG_SETFILES is not set\n# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set\n# CONFIG_RESTORECON is not set\n# CONFIG_SETSEBOOL is not set\n\n#\n# Shells\n#\n# CONFIG_SH_IS_ASH is not set\nCONFIG_SH_IS_HUSH=y\n# CONFIG_SH_IS_NONE is not set\n# CONFIG_BASH_IS_ASH is not set\n# CONFIG_BASH_IS_HUSH is not set\nCONFIG_BASH_IS_NONE=y\n# CONFIG_ASH is not set\n# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set\n# CONFIG_ASH_INTERNAL_GLOB is not set\n# CONFIG_ASH_BASH_COMPAT is not set\n# CONFIG_ASH_JOB_CONTROL is not set\n# CONFIG_ASH_ALIAS is not set\n# CONFIG_ASH_RANDOM_SUPPORT is not set\n# CONFIG_ASH_EXPAND_PRMT is not set\n# CONFIG_ASH_IDLE_TIMEOUT is not set\n# CONFIG_ASH_MAIL is not set\n# CONFIG_ASH_ECHO is not set\n# CONFIG_ASH_PRINTF is not set\n# CONFIG_ASH_TEST is not set\n# CONFIG_ASH_HELP is not set\n# CONFIG_ASH_GETOPTS is not set\n# CONFIG_ASH_CMDCMD is not set\n# CONFIG_CTTYHACK is not set\nCONFIG_HUSH=y\nCONFIG_HUSH_BASH_COMPAT=y\nCONFIG_HUSH_BRACE_EXPANSION=y\nCONFIG_HUSH_INTERACTIVE=y\nCONFIG_HUSH_SAVEHISTORY=y\nCONFIG_HUSH_JOB=y\nCONFIG_HUSH_TICK=y\nCONFIG_HUSH_IF=y\nCONFIG_HUSH_LOOPS=y\nCONFIG_HUSH_CASE=y\nCONFIG_HUSH_FUNCTIONS=y\nCONFIG_HUSH_LOCAL=y\nCONFIG_HUSH_RANDOM_SUPPORT=y\nCONFIG_HUSH_MODE_X=y\nCONFIG_HUSH_ECHO=y\nCONFIG_HUSH_PRINTF=y\nCONFIG_HUSH_TEST=y\nCONFIG_HUSH_HELP=y\nCONFIG_HUSH_EXPORT=y\nCONFIG_HUSH_EXPORT_N=y\nCONFIG_HUSH_READONLY=y\nCONFIG_HUSH_KILL=y\nCONFIG_HUSH_WAIT=y\nCONFIG_HUSH_TRAP=y\nCONFIG_HUSH_TYPE=y\nCONFIG_HUSH_TIMES=y\nCONFIG_HUSH_READ=y\nCONFIG_HUSH_SET=y\nCONFIG_HUSH_UNSET=y\nCONFIG_HUSH_ULIMIT=y\nCONFIG_HUSH_UMASK=y\nCONFIG_HUSH_GETOPTS=y\n# CONFIG_HUSH_MEMLEAK is not set\n\n#\n# Options common to all shells\n#\nCONFIG_FEATURE_SH_MATH=y\nCONFIG_FEATURE_SH_MATH_64=y\nCONFIG_FEATURE_SH_EXTRA_QUIET=y\n# CONFIG_FEATURE_SH_STANDALONE is not set\n# CONFIG_FEATURE_SH_NOFORK is not set\nCONFIG_FEATURE_SH_READ_FRAC=y\n# CONFIG_FEATURE_SH_HISTFILESIZE is not set\n\n#\n# System Logging Utilities\n#\n# CONFIG_KLOGD is not set\n# CONFIG_FEATURE_KLOGD_KLOGCTL is not set\n# CONFIG_LOGGER is not set\n# CONFIG_LOGREAD is not set\n# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set\n# CONFIG_SYSLOGD is not set\n# CONFIG_FEATURE_ROTATE_LOGFILE is not set\n# CONFIG_FEATURE_REMOTE_LOG is not set\n# CONFIG_FEATURE_SYSLOGD_DUP is not set\n# CONFIG_FEATURE_SYSLOGD_CFG is not set\nCONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0\n# CONFIG_FEATURE_IPC_SYSLOG is not set\nCONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0\n# CONFIG_FEATURE_KMSG_SYSLOG is not set\n"
  },
  {
    "path": "package/busybox/busybox.config",
    "content": "#\n# Automatically generated make config: don't edit\n# Busybox version: 1.28.0\n# Wed Feb  7 09:44:57 2018\n#\nCONFIG_HAVE_DOT_CONFIG=y\n\n#\n# Settings\n#\nCONFIG_DESKTOP=y\n# CONFIG_EXTRA_COMPAT is not set\n# CONFIG_FEDORA_COMPAT is not set\nCONFIG_INCLUDE_SUSv2=y\nCONFIG_LONG_OPTS=y\nCONFIG_SHOW_USAGE=y\nCONFIG_FEATURE_VERBOSE_USAGE=y\n# CONFIG_FEATURE_COMPRESS_USAGE is not set\nCONFIG_LFS=y\n# CONFIG_PAM is not set\nCONFIG_FEATURE_DEVPTS=y\nCONFIG_FEATURE_UTMP=y\nCONFIG_FEATURE_WTMP=y\n# CONFIG_FEATURE_PIDFILE is not set\nCONFIG_PID_FILE_PATH=\"\"\nCONFIG_BUSYBOX=y\nCONFIG_FEATURE_INSTALLER=y\n# CONFIG_INSTALL_NO_USR is not set\nCONFIG_FEATURE_SUID=y\n# CONFIG_FEATURE_SUID_CONFIG is not set\n# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set\n# CONFIG_FEATURE_PREFER_APPLETS is not set\nCONFIG_BUSYBOX_EXEC_PATH=\"/proc/self/exe\"\n# CONFIG_SELINUX is not set\n# CONFIG_FEATURE_CLEAN_UP is not set\nCONFIG_FEATURE_SYSLOG=y\nCONFIG_PLATFORM_LINUX=y\n\n#\n# Build Options\n#\n# CONFIG_STATIC is not set\n# CONFIG_PIE is not set\n# CONFIG_NOMMU is not set\n# CONFIG_BUILD_LIBBUSYBOX is not set\n# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set\n# CONFIG_FEATURE_INDIVIDUAL is not set\n# CONFIG_FEATURE_SHARED_BUSYBOX is not set\nCONFIG_CROSS_COMPILER_PREFIX=\"\"\nCONFIG_SYSROOT=\"\"\nCONFIG_EXTRA_CFLAGS=\"\"\nCONFIG_EXTRA_LDFLAGS=\"\"\nCONFIG_EXTRA_LDLIBS=\"\"\n# CONFIG_USE_PORTABLE_CODE is not set\n\n#\n# Installation Options (\"make install\" behavior)\n#\nCONFIG_INSTALL_APPLET_SYMLINKS=y\n# CONFIG_INSTALL_APPLET_HARDLINKS is not set\n# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set\n# CONFIG_INSTALL_APPLET_DONT is not set\n# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set\n# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set\n# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set\nCONFIG_PREFIX=\"./_install\"\n\n#\n# Debugging Options\n#\n# CONFIG_DEBUG is not set\n# CONFIG_DEBUG_PESSIMIZE is not set\n# CONFIG_DEBUG_SANITIZE is not set\n# CONFIG_UNIT_TEST is not set\n# CONFIG_WERROR is not set\nCONFIG_NO_DEBUG_LIB=y\n# CONFIG_DMALLOC is not set\n# CONFIG_EFENCE is not set\n\n#\n# Library Tuning\n#\n# CONFIG_FEATURE_USE_BSS_TAIL is not set\nCONFIG_FEATURE_RTMINMAX=y\nCONFIG_FEATURE_BUFFERS_USE_MALLOC=y\n# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set\n# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set\nCONFIG_PASSWORD_MINLEN=6\nCONFIG_MD5_SMALL=1\nCONFIG_SHA3_SMALL=1\n# CONFIG_FEATURE_FAST_TOP is not set\n# CONFIG_FEATURE_ETC_NETWORKS is not set\nCONFIG_FEATURE_EDITING=y\nCONFIG_FEATURE_EDITING_MAX_LEN=1024\nCONFIG_FEATURE_EDITING_VI=y\nCONFIG_FEATURE_EDITING_HISTORY=999\nCONFIG_FEATURE_EDITING_SAVEHISTORY=y\n# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set\nCONFIG_FEATURE_REVERSE_SEARCH=y\nCONFIG_FEATURE_TAB_COMPLETION=y\n# CONFIG_FEATURE_USERNAME_COMPLETION is not set\nCONFIG_FEATURE_EDITING_FANCY_PROMPT=y\n# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set\n# CONFIG_LOCALE_SUPPORT is not set\n# CONFIG_UNICODE_SUPPORT is not set\n# CONFIG_UNICODE_USING_LOCALE is not set\n# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set\nCONFIG_SUBST_WCHAR=0\nCONFIG_LAST_SUPPORTED_WCHAR=0\n# CONFIG_UNICODE_COMBINING_WCHARS is not set\n# CONFIG_UNICODE_WIDE_WCHARS is not set\n# CONFIG_UNICODE_BIDI_SUPPORT is not set\n# CONFIG_UNICODE_NEUTRAL_TABLE is not set\n# CONFIG_UNICODE_PRESERVE_BROKEN is not set\nCONFIG_FEATURE_NON_POSIX_CP=y\n# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set\nCONFIG_FEATURE_USE_SENDFILE=y\nCONFIG_FEATURE_COPYBUF_KB=4\nCONFIG_FEATURE_SKIP_ROOTFS=y\nCONFIG_MONOTONIC_SYSCALL=y\nCONFIG_IOCTL_HEX2STR_ERROR=y\nCONFIG_FEATURE_HWIB=y\n\n#\n# Applets\n#\n\n#\n# Archival Utilities\n#\n# CONFIG_FEATURE_SEAMLESS_XZ is not set\n# CONFIG_FEATURE_SEAMLESS_LZMA is not set\n# CONFIG_FEATURE_SEAMLESS_BZ2 is not set\n# CONFIG_FEATURE_SEAMLESS_GZ is not set\n# CONFIG_FEATURE_SEAMLESS_Z is not set\nCONFIG_AR=y\n# CONFIG_FEATURE_AR_LONG_FILENAMES is not set\nCONFIG_FEATURE_AR_CREATE=y\n# CONFIG_UNCOMPRESS is not set\nCONFIG_GUNZIP=y\nCONFIG_ZCAT=y\nCONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y\nCONFIG_BUNZIP2=y\nCONFIG_BZCAT=y\nCONFIG_UNLZMA=y\nCONFIG_LZCAT=y\nCONFIG_LZMA=y\nCONFIG_UNXZ=y\nCONFIG_XZCAT=y\nCONFIG_XZ=y\n# CONFIG_BZIP2 is not set\nCONFIG_FEATURE_BZIP2_DECOMPRESS=y\nCONFIG_CPIO=y\n# CONFIG_FEATURE_CPIO_O is not set\n# CONFIG_FEATURE_CPIO_P is not set\n# CONFIG_DPKG is not set\n# CONFIG_DPKG_DEB is not set\nCONFIG_GZIP=y\n# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set\nCONFIG_GZIP_FAST=0\n# CONFIG_FEATURE_GZIP_LEVELS is not set\nCONFIG_FEATURE_GZIP_DECOMPRESS=y\n# CONFIG_LZOP is not set\nCONFIG_UNLZOP=y\nCONFIG_LZOPCAT=y\n# CONFIG_LZOP_COMPR_HIGH is not set\n# CONFIG_RPM is not set\n# CONFIG_RPM2CPIO is not set\nCONFIG_TAR=y\nCONFIG_FEATURE_TAR_LONG_OPTIONS=y\nCONFIG_FEATURE_TAR_CREATE=y\n# CONFIG_FEATURE_TAR_AUTODETECT is not set\nCONFIG_FEATURE_TAR_FROM=y\n# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set\n# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set\nCONFIG_FEATURE_TAR_GNU_EXTENSIONS=y\nCONFIG_FEATURE_TAR_TO_COMMAND=y\n# CONFIG_FEATURE_TAR_UNAME_GNAME is not set\n# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set\n# CONFIG_FEATURE_TAR_SELINUX is not set\nCONFIG_UNZIP=y\nCONFIG_FEATURE_UNZIP_CDF=y\nCONFIG_FEATURE_UNZIP_BZIP2=y\nCONFIG_FEATURE_UNZIP_LZMA=y\nCONFIG_FEATURE_UNZIP_XZ=y\n# CONFIG_FEATURE_LZMA_FAST is not set\n\n#\n# Coreutils\n#\nCONFIG_BASENAME=y\nCONFIG_CAT=y\nCONFIG_FEATURE_CATN=y\nCONFIG_FEATURE_CATV=y\nCONFIG_CHGRP=y\nCONFIG_CHMOD=y\nCONFIG_CHOWN=y\n# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set\nCONFIG_CHROOT=y\nCONFIG_CKSUM=y\n# CONFIG_COMM is not set\nCONFIG_CP=y\n# CONFIG_FEATURE_CP_LONG_OPTIONS is not set\nCONFIG_CUT=y\nCONFIG_DATE=y\nCONFIG_FEATURE_DATE_ISOFMT=y\n# CONFIG_FEATURE_DATE_NANO is not set\nCONFIG_FEATURE_DATE_COMPAT=y\nCONFIG_DD=y\nCONFIG_FEATURE_DD_SIGNAL_HANDLING=y\n# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set\nCONFIG_FEATURE_DD_IBS_OBS=y\nCONFIG_FEATURE_DD_STATUS=y\nCONFIG_DF=y\n# CONFIG_FEATURE_DF_FANCY is not set\nCONFIG_DIRNAME=y\nCONFIG_DOS2UNIX=y\nCONFIG_UNIX2DOS=y\nCONFIG_DU=y\nCONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y\nCONFIG_ECHO=y\nCONFIG_FEATURE_FANCY_ECHO=y\nCONFIG_ENV=y\n# CONFIG_EXPAND is not set\n# CONFIG_UNEXPAND is not set\nCONFIG_EXPR=y\nCONFIG_EXPR_MATH_SUPPORT_64=y\nCONFIG_FACTOR=y\nCONFIG_FALSE=y\nCONFIG_FOLD=y\n# CONFIG_FSYNC is not set\nCONFIG_HEAD=y\nCONFIG_FEATURE_FANCY_HEAD=y\nCONFIG_HOSTID=y\nCONFIG_ID=y\n# CONFIG_GROUPS is not set\nCONFIG_INSTALL=y\nCONFIG_FEATURE_INSTALL_LONG_OPTIONS=y\nCONFIG_LINK=y\nCONFIG_LN=y\nCONFIG_LOGNAME=y\nCONFIG_LS=y\nCONFIG_FEATURE_LS_FILETYPES=y\nCONFIG_FEATURE_LS_FOLLOWLINKS=y\nCONFIG_FEATURE_LS_RECURSIVE=y\nCONFIG_FEATURE_LS_WIDTH=y\nCONFIG_FEATURE_LS_SORTFILES=y\nCONFIG_FEATURE_LS_TIMESTAMPS=y\nCONFIG_FEATURE_LS_USERNAME=y\nCONFIG_FEATURE_LS_COLOR=y\nCONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y\nCONFIG_MD5SUM=y\nCONFIG_SHA1SUM=y\nCONFIG_SHA256SUM=y\nCONFIG_SHA512SUM=y\nCONFIG_SHA3SUM=y\n\n#\n# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum\n#\nCONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y\nCONFIG_MKDIR=y\nCONFIG_MKFIFO=y\nCONFIG_MKNOD=y\nCONFIG_MKTEMP=y\nCONFIG_MV=y\nCONFIG_NICE=y\nCONFIG_NL=y\nCONFIG_NOHUP=y\nCONFIG_NPROC=y\nCONFIG_OD=y\nCONFIG_PASTE=y\nCONFIG_PRINTENV=y\nCONFIG_PRINTF=y\nCONFIG_PWD=y\nCONFIG_READLINK=y\nCONFIG_FEATURE_READLINK_FOLLOW=y\nCONFIG_REALPATH=y\nCONFIG_RM=y\nCONFIG_RMDIR=y\nCONFIG_SEQ=y\nCONFIG_SHRED=y\n# CONFIG_SHUF is not set\nCONFIG_SLEEP=y\nCONFIG_FEATURE_FANCY_SLEEP=y\nCONFIG_FEATURE_FLOAT_SLEEP=y\nCONFIG_SORT=y\nCONFIG_FEATURE_SORT_BIG=y\n# CONFIG_SPLIT is not set\n# CONFIG_FEATURE_SPLIT_FANCY is not set\n# CONFIG_STAT is not set\n# CONFIG_FEATURE_STAT_FORMAT is not set\n# CONFIG_FEATURE_STAT_FILESYSTEM is not set\nCONFIG_STTY=y\n# CONFIG_SUM is not set\nCONFIG_SYNC=y\n# CONFIG_FEATURE_SYNC_FANCY is not set\n# CONFIG_TAC is not set\nCONFIG_TAIL=y\nCONFIG_FEATURE_FANCY_TAIL=y\nCONFIG_TEE=y\nCONFIG_FEATURE_TEE_USE_BLOCK_IO=y\nCONFIG_TEST=y\nCONFIG_TEST1=y\nCONFIG_TEST2=y\nCONFIG_FEATURE_TEST_64=y\n# CONFIG_TIMEOUT is not set\nCONFIG_TOUCH=y\n# CONFIG_FEATURE_TOUCH_NODEREF is not set\nCONFIG_FEATURE_TOUCH_SUSV3=y\nCONFIG_TR=y\nCONFIG_FEATURE_TR_CLASSES=y\nCONFIG_FEATURE_TR_EQUIV=y\nCONFIG_TRUE=y\nCONFIG_TRUNCATE=y\nCONFIG_TTY=y\nCONFIG_UNAME=y\nCONFIG_UNAME_OSNAME=\"GNU/Linux\"\nCONFIG_BB_ARCH=y\nCONFIG_UNIQ=y\nCONFIG_UNLINK=y\nCONFIG_USLEEP=y\nCONFIG_UUDECODE=y\nCONFIG_BASE64=y\nCONFIG_UUENCODE=y\nCONFIG_WC=y\n# CONFIG_FEATURE_WC_LARGE is not set\nCONFIG_WHOAMI=y\nCONFIG_WHO=y\nCONFIG_W=y\n# CONFIG_USERS is not set\nCONFIG_YES=y\n\n#\n# Common options\n#\nCONFIG_FEATURE_VERBOSE=y\n\n#\n# Common options for cp and mv\n#\nCONFIG_FEATURE_PRESERVE_HARDLINKS=y\n\n#\n# Common options for df, du, ls\n#\nCONFIG_FEATURE_HUMAN_READABLE=y\n\n#\n# Console Utilities\n#\nCONFIG_CHVT=y\nCONFIG_CLEAR=y\nCONFIG_DEALLOCVT=y\nCONFIG_DUMPKMAP=y\n# CONFIG_FGCONSOLE is not set\n# CONFIG_KBD_MODE is not set\nCONFIG_LOADFONT=y\n# CONFIG_SETFONT is not set\n# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set\nCONFIG_DEFAULT_SETFONT_DIR=\"\"\n\n#\n# Common options for loadfont and setfont\n#\nCONFIG_FEATURE_LOADFONT_PSF2=y\nCONFIG_FEATURE_LOADFONT_RAW=y\nCONFIG_LOADKMAP=y\nCONFIG_OPENVT=y\nCONFIG_RESET=y\nCONFIG_RESIZE=y\nCONFIG_FEATURE_RESIZE_PRINT=y\nCONFIG_SETCONSOLE=y\n# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set\nCONFIG_SETKEYCODES=y\nCONFIG_SETLOGCONS=y\n# CONFIG_SHOWKEY is not set\n\n#\n# Debian Utilities\n#\nCONFIG_PIPE_PROGRESS=y\nCONFIG_RUN_PARTS=y\nCONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y\n# CONFIG_FEATURE_RUN_PARTS_FANCY is not set\nCONFIG_START_STOP_DAEMON=y\nCONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y\nCONFIG_FEATURE_START_STOP_DAEMON_FANCY=y\nCONFIG_WHICH=y\n\n#\n# klibc-utils\n#\n# CONFIG_MINIPS is not set\nCONFIG_NUKE=y\nCONFIG_RESUME=y\nCONFIG_RUN_INIT=y\n\n#\n# Editors\n#\nCONFIG_AWK=y\n# CONFIG_FEATURE_AWK_LIBM is not set\nCONFIG_FEATURE_AWK_GNU_EXTENSIONS=y\nCONFIG_CMP=y\nCONFIG_DIFF=y\n# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set\nCONFIG_FEATURE_DIFF_DIR=y\n# CONFIG_ED is not set\nCONFIG_PATCH=y\nCONFIG_SED=y\nCONFIG_VI=y\nCONFIG_FEATURE_VI_MAX_LEN=4096\nCONFIG_FEATURE_VI_8BIT=y\nCONFIG_FEATURE_VI_COLON=y\nCONFIG_FEATURE_VI_YANKMARK=y\nCONFIG_FEATURE_VI_SEARCH=y\n# CONFIG_FEATURE_VI_REGEX_SEARCH is not set\nCONFIG_FEATURE_VI_USE_SIGNALS=y\nCONFIG_FEATURE_VI_DOT_CMD=y\nCONFIG_FEATURE_VI_READONLY=y\nCONFIG_FEATURE_VI_SETOPTS=y\nCONFIG_FEATURE_VI_SET=y\nCONFIG_FEATURE_VI_WIN_RESIZE=y\nCONFIG_FEATURE_VI_ASK_TERMINAL=y\nCONFIG_FEATURE_VI_UNDO=y\nCONFIG_FEATURE_VI_UNDO_QUEUE=y\nCONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256\nCONFIG_FEATURE_ALLOW_EXEC=y\n\n#\n# Finding Utilities\n#\nCONFIG_FIND=y\nCONFIG_FEATURE_FIND_PRINT0=y\nCONFIG_FEATURE_FIND_MTIME=y\nCONFIG_FEATURE_FIND_MMIN=y\nCONFIG_FEATURE_FIND_PERM=y\nCONFIG_FEATURE_FIND_TYPE=y\nCONFIG_FEATURE_FIND_XDEV=y\nCONFIG_FEATURE_FIND_MAXDEPTH=y\nCONFIG_FEATURE_FIND_NEWER=y\n# CONFIG_FEATURE_FIND_INUM is not set\nCONFIG_FEATURE_FIND_EXEC=y\nCONFIG_FEATURE_FIND_EXEC_PLUS=y\nCONFIG_FEATURE_FIND_USER=y\nCONFIG_FEATURE_FIND_GROUP=y\nCONFIG_FEATURE_FIND_NOT=y\nCONFIG_FEATURE_FIND_DEPTH=y\nCONFIG_FEATURE_FIND_PAREN=y\nCONFIG_FEATURE_FIND_SIZE=y\nCONFIG_FEATURE_FIND_PRUNE=y\n# CONFIG_FEATURE_FIND_DELETE is not set\nCONFIG_FEATURE_FIND_PATH=y\nCONFIG_FEATURE_FIND_REGEX=y\n# CONFIG_FEATURE_FIND_CONTEXT is not set\n# CONFIG_FEATURE_FIND_LINKS is not set\nCONFIG_GREP=y\nCONFIG_EGREP=y\nCONFIG_FGREP=y\nCONFIG_FEATURE_GREP_CONTEXT=y\nCONFIG_XARGS=y\n# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set\nCONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y\nCONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y\nCONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y\nCONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y\nCONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y\nCONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y\n\n#\n# Init Utilities\n#\n# CONFIG_BOOTCHARTD is not set\n# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set\n# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set\nCONFIG_HALT=y\nCONFIG_POWEROFF=y\nCONFIG_REBOOT=y\n# CONFIG_FEATURE_CALL_TELINIT is not set\nCONFIG_TELINIT_PATH=\"\"\nCONFIG_INIT=y\nCONFIG_LINUXRC=y\nCONFIG_FEATURE_USE_INITTAB=y\nCONFIG_FEATURE_KILL_REMOVED=y\nCONFIG_FEATURE_KILL_DELAY=0\nCONFIG_FEATURE_INIT_SCTTY=y\nCONFIG_FEATURE_INIT_SYSLOG=y\nCONFIG_FEATURE_INIT_QUIET=y\n# CONFIG_FEATURE_INIT_COREDUMPS is not set\nCONFIG_INIT_TERMINAL_TYPE=\"linux\"\nCONFIG_FEATURE_INIT_MODIFY_CMDLINE=y\n\n#\n# Login/Password Management Utilities\n#\nCONFIG_FEATURE_SHADOWPASSWDS=y\n# CONFIG_USE_BB_PWD_GRP is not set\n# CONFIG_USE_BB_SHADOW is not set\nCONFIG_USE_BB_CRYPT=y\n# CONFIG_USE_BB_CRYPT_SHA is not set\nCONFIG_ADDGROUP=y\n# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set\n# CONFIG_ADD_SHELL is not set\n# CONFIG_REMOVE_SHELL is not set\nCONFIG_ADDUSER=y\n# CONFIG_FEATURE_CHECK_NAMES is not set\nCONFIG_LAST_ID=60000\nCONFIG_FIRST_SYSTEM_ID=100\nCONFIG_LAST_SYSTEM_ID=999\n# CONFIG_CHPASSWD is not set\nCONFIG_FEATURE_DEFAULT_PASSWD_ALGO=\"md5\"\n# CONFIG_CRYPTPW is not set\nCONFIG_MKPASSWD=y\nCONFIG_DELUSER=y\nCONFIG_DELGROUP=y\n# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set\nCONFIG_GETTY=y\nCONFIG_LOGIN=y\n# CONFIG_LOGIN_SESSION_AS_CHILD is not set\n# CONFIG_LOGIN_SCRIPTS is not set\nCONFIG_FEATURE_NOLOGIN=y\nCONFIG_FEATURE_SECURETTY=y\nCONFIG_PASSWD=y\nCONFIG_FEATURE_PASSWD_WEAK_CHECK=y\nCONFIG_SU=y\nCONFIG_FEATURE_SU_SYSLOG=y\nCONFIG_FEATURE_SU_CHECKS_SHELLS=y\n# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set\nCONFIG_SULOGIN=y\nCONFIG_VLOCK=y\n\n#\n# Linux Ext2 FS Progs\n#\nCONFIG_CHATTR=y\nCONFIG_FSCK=y\nCONFIG_LSATTR=y\n# CONFIG_TUNE2FS is not set\n\n#\n# Linux Module Utilities\n#\n# CONFIG_MODPROBE_SMALL is not set\n# CONFIG_DEPMOD is not set\nCONFIG_INSMOD=y\nCONFIG_LSMOD=y\nCONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y\n# CONFIG_MODINFO is not set\nCONFIG_MODPROBE=y\n# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set\nCONFIG_RMMOD=y\n\n#\n# Options common to multiple modutils\n#\nCONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y\n# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set\n# CONFIG_FEATURE_2_4_MODULES is not set\n# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set\n# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set\n# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set\n# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set\n# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set\nCONFIG_FEATURE_CHECK_TAINTED_MODULE=y\n# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set\nCONFIG_FEATURE_MODUTILS_ALIAS=y\nCONFIG_FEATURE_MODUTILS_SYMBOLS=y\nCONFIG_DEFAULT_MODULES_DIR=\"/lib/modules\"\nCONFIG_DEFAULT_DEPMOD_FILE=\"modules.dep\"\n\n#\n# Linux System Utilities\n#\n# CONFIG_ACPID is not set\n# CONFIG_FEATURE_ACPID_COMPAT is not set\n# CONFIG_BLKDISCARD is not set\nCONFIG_BLKID=y\n# CONFIG_FEATURE_BLKID_TYPE is not set\n# CONFIG_BLOCKDEV is not set\n# CONFIG_CAL is not set\nCONFIG_CHRT=y\nCONFIG_DMESG=y\nCONFIG_FEATURE_DMESG_PRETTY=y\nCONFIG_EJECT=y\n# CONFIG_FEATURE_EJECT_SCSI is not set\nCONFIG_FALLOCATE=y\n# CONFIG_FATATTR is not set\nCONFIG_FBSET=y\nCONFIG_FEATURE_FBSET_FANCY=y\nCONFIG_FEATURE_FBSET_READMODE=y\nCONFIG_FDFORMAT=y\nCONFIG_FDISK=y\n# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set\nCONFIG_FEATURE_FDISK_WRITABLE=y\n# CONFIG_FEATURE_AIX_LABEL is not set\n# CONFIG_FEATURE_SGI_LABEL is not set\n# CONFIG_FEATURE_SUN_LABEL is not set\n# CONFIG_FEATURE_OSF_LABEL is not set\nCONFIG_FEATURE_GPT_LABEL=y\nCONFIG_FEATURE_FDISK_ADVANCED=y\n# CONFIG_FINDFS is not set\nCONFIG_FLOCK=y\nCONFIG_FDFLUSH=y\nCONFIG_FREERAMDISK=y\n# CONFIG_FSCK_MINIX is not set\nCONFIG_FSFREEZE=y\nCONFIG_FSTRIM=y\nCONFIG_GETOPT=y\nCONFIG_FEATURE_GETOPT_LONG=y\nCONFIG_HEXDUMP=y\n# CONFIG_FEATURE_HEXDUMP_REVERSE is not set\n# CONFIG_HD is not set\nCONFIG_XXD=y\nCONFIG_HWCLOCK=y\nCONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y\n# CONFIG_IONICE is not set\nCONFIG_IPCRM=y\nCONFIG_IPCS=y\nCONFIG_LAST=y\n# CONFIG_FEATURE_LAST_FANCY is not set\nCONFIG_LOSETUP=y\nCONFIG_LSPCI=y\nCONFIG_LSUSB=y\nCONFIG_MDEV=y\nCONFIG_FEATURE_MDEV_CONF=y\nCONFIG_FEATURE_MDEV_RENAME=y\n# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set\nCONFIG_FEATURE_MDEV_EXEC=y\n# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set\nCONFIG_FEATURE_MDEV_DAEMON=y\nCONFIG_MESG=y\nCONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y\nCONFIG_MKE2FS=y\n# CONFIG_MKFS_EXT2 is not set\n# CONFIG_MKFS_MINIX is not set\n# CONFIG_FEATURE_MINIX2 is not set\n# CONFIG_MKFS_REISER is not set\nCONFIG_MKDOSFS=y\n# CONFIG_MKFS_VFAT is not set\nCONFIG_MKSWAP=y\n# CONFIG_FEATURE_MKSWAP_UUID is not set\nCONFIG_MORE=y\nCONFIG_MOUNT=y\n# CONFIG_FEATURE_MOUNT_FAKE is not set\n# CONFIG_FEATURE_MOUNT_VERBOSE is not set\n# CONFIG_FEATURE_MOUNT_HELPERS is not set\n# CONFIG_FEATURE_MOUNT_LABEL is not set\n# CONFIG_FEATURE_MOUNT_NFS is not set\nCONFIG_FEATURE_MOUNT_CIFS=y\nCONFIG_FEATURE_MOUNT_FLAGS=y\nCONFIG_FEATURE_MOUNT_FSTAB=y\nCONFIG_FEATURE_MOUNT_OTHERTAB=y\nCONFIG_MOUNTPOINT=y\n# CONFIG_NSENTER is not set\nCONFIG_PIVOT_ROOT=y\nCONFIG_RDATE=y\n# CONFIG_RDEV is not set\nCONFIG_READPROFILE=y\nCONFIG_RENICE=y\n# CONFIG_REV is not set\n# CONFIG_RTCWAKE is not set\n# CONFIG_SCRIPT is not set\n# CONFIG_SCRIPTREPLAY is not set\nCONFIG_SETARCH=y\nCONFIG_LINUX32=y\nCONFIG_LINUX64=y\nCONFIG_SETPRIV=y\nCONFIG_FEATURE_SETPRIV_DUMP=y\nCONFIG_FEATURE_SETPRIV_CAPABILITIES=y\nCONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y\nCONFIG_SETSID=y\nCONFIG_SWAPON=y\n# CONFIG_FEATURE_SWAPON_DISCARD is not set\n# CONFIG_FEATURE_SWAPON_PRI is not set\nCONFIG_SWAPOFF=y\nCONFIG_FEATURE_SWAPONOFF_LABEL=y\nCONFIG_SWITCH_ROOT=y\n# CONFIG_TASKSET is not set\n# CONFIG_FEATURE_TASKSET_FANCY is not set\nCONFIG_UEVENT=y\nCONFIG_UMOUNT=y\nCONFIG_FEATURE_UMOUNT_ALL=y\n# CONFIG_UNSHARE is not set\n# CONFIG_WALL is not set\n\n#\n# Common options for mount/umount\n#\nCONFIG_FEATURE_MOUNT_LOOP=y\nCONFIG_FEATURE_MOUNT_LOOP_CREATE=y\n# CONFIG_FEATURE_MTAB_SUPPORT is not set\nCONFIG_VOLUMEID=y\n\n#\n# Filesystem/Volume identification\n#\n# CONFIG_FEATURE_VOLUMEID_BCACHE is not set\n# CONFIG_FEATURE_VOLUMEID_BTRFS is not set\n# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set\nCONFIG_FEATURE_VOLUMEID_EXFAT=y\nCONFIG_FEATURE_VOLUMEID_EXT=y\nCONFIG_FEATURE_VOLUMEID_F2FS=y\nCONFIG_FEATURE_VOLUMEID_FAT=y\n# CONFIG_FEATURE_VOLUMEID_HFS is not set\n# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set\n# CONFIG_FEATURE_VOLUMEID_JFS is not set\n# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set\n# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set\n# CONFIG_FEATURE_VOLUMEID_LUKS is not set\nCONFIG_FEATURE_VOLUMEID_MINIX=y\n# CONFIG_FEATURE_VOLUMEID_NILFS is not set\n# CONFIG_FEATURE_VOLUMEID_NTFS is not set\n# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set\n# CONFIG_FEATURE_VOLUMEID_REISERFS is not set\n# CONFIG_FEATURE_VOLUMEID_ROMFS is not set\n# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set\n# CONFIG_FEATURE_VOLUMEID_SYSV is not set\nCONFIG_FEATURE_VOLUMEID_UBIFS=y\n# CONFIG_FEATURE_VOLUMEID_UDF is not set\n# CONFIG_FEATURE_VOLUMEID_XFS is not set\n\n#\n# Miscellaneous Utilities\n#\n# CONFIG_ADJTIMEX is not set\n# CONFIG_BBCONFIG is not set\n# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set\n# CONFIG_BEEP is not set\nCONFIG_FEATURE_BEEP_FREQ=0\nCONFIG_FEATURE_BEEP_LENGTH_MS=0\n# CONFIG_CHAT is not set\n# CONFIG_FEATURE_CHAT_NOFAIL is not set\n# CONFIG_FEATURE_CHAT_TTY_HIFI is not set\n# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set\n# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set\n# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set\n# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set\n# CONFIG_FEATURE_CHAT_CLR_ABORT is not set\n# CONFIG_CONSPY is not set\nCONFIG_CROND=y\n# CONFIG_FEATURE_CROND_D is not set\n# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set\nCONFIG_FEATURE_CROND_SPECIAL_TIMES=y\nCONFIG_FEATURE_CROND_DIR=\"/var/spool/cron\"\nCONFIG_CRONTAB=y\nCONFIG_DC=y\n# CONFIG_FEATURE_DC_LIBM is not set\n# CONFIG_DEVFSD is not set\n# CONFIG_DEVFSD_MODLOAD is not set\n# CONFIG_DEVFSD_FG_NP is not set\n# CONFIG_DEVFSD_VERBOSE is not set\n# CONFIG_FEATURE_DEVFS is not set\nCONFIG_DEVMEM=y\n# CONFIG_FBSPLASH is not set\n# CONFIG_FLASHCP is not set\n# CONFIG_FLASH_ERASEALL is not set\n# CONFIG_FLASH_LOCK is not set\n# CONFIG_FLASH_UNLOCK is not set\nCONFIG_HDPARM=y\nCONFIG_FEATURE_HDPARM_GET_IDENTITY=y\n# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set\n# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set\n# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set\n# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set\n# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set\nCONFIG_HEXEDIT=y\nCONFIG_I2CGET=y\nCONFIG_I2CSET=y\nCONFIG_I2CDUMP=y\nCONFIG_I2CDETECT=y\n# CONFIG_INOTIFYD is not set\nCONFIG_LESS=y\nCONFIG_FEATURE_LESS_MAXLINES=9999999\nCONFIG_FEATURE_LESS_BRACKETS=y\nCONFIG_FEATURE_LESS_FLAGS=y\nCONFIG_FEATURE_LESS_TRUNCATE=y\n# CONFIG_FEATURE_LESS_MARKS is not set\nCONFIG_FEATURE_LESS_REGEXP=y\n# CONFIG_FEATURE_LESS_WINCH is not set\n# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set\n# CONFIG_FEATURE_LESS_DASHCMD is not set\n# CONFIG_FEATURE_LESS_LINENUMS is not set\nCONFIG_LSSCSI=y\nCONFIG_MAKEDEVS=y\n# CONFIG_FEATURE_MAKEDEVS_LEAF is not set\nCONFIG_FEATURE_MAKEDEVS_TABLE=y\n# CONFIG_MAN is not set\nCONFIG_MICROCOM=y\nCONFIG_MT=y\n# CONFIG_NANDWRITE is not set\n# CONFIG_NANDDUMP is not set\nCONFIG_PARTPROBE=y\n# CONFIG_RAIDAUTORUN is not set\n# CONFIG_READAHEAD is not set\n# CONFIG_RFKILL is not set\nCONFIG_RUNLEVEL=y\n# CONFIG_RX is not set\nCONFIG_SETFATTR=y\nCONFIG_SETSERIAL=y\nCONFIG_STRINGS=y\nCONFIG_TIME=y\n# CONFIG_TTYSIZE is not set\nCONFIG_UBIRENAME=y\n# CONFIG_UBIATTACH is not set\n# CONFIG_UBIDETACH is not set\n# CONFIG_UBIMKVOL is not set\n# CONFIG_UBIRMVOL is not set\n# CONFIG_UBIRSVOL is not set\n# CONFIG_UBIUPDATEVOL is not set\n# CONFIG_VOLNAME is not set\nCONFIG_WATCHDOG=y\n\n#\n# Networking Utilities\n#\nCONFIG_FEATURE_IPV6=y\n# CONFIG_FEATURE_UNIX_LOCAL is not set\nCONFIG_FEATURE_PREFER_IPV4_ADDRESS=y\n# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set\nCONFIG_ARP=y\nCONFIG_ARPING=y\n# CONFIG_BRCTL is not set\n# CONFIG_FEATURE_BRCTL_FANCY is not set\n# CONFIG_FEATURE_BRCTL_SHOW is not set\nCONFIG_DNSD=y\nCONFIG_ETHER_WAKE=y\n# CONFIG_FTPD is not set\n# CONFIG_FEATURE_FTPD_WRITE is not set\n# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set\n# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set\n# CONFIG_FTPGET is not set\n# CONFIG_FTPPUT is not set\n# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set\nCONFIG_HOSTNAME=y\nCONFIG_DNSDOMAINNAME=y\n# CONFIG_HTTPD is not set\n# CONFIG_FEATURE_HTTPD_RANGES is not set\n# CONFIG_FEATURE_HTTPD_SETUID is not set\n# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set\n# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set\n# CONFIG_FEATURE_HTTPD_CGI is not set\n# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set\n# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set\n# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set\n# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set\n# CONFIG_FEATURE_HTTPD_PROXY is not set\n# CONFIG_FEATURE_HTTPD_GZIP is not set\nCONFIG_IFCONFIG=y\nCONFIG_FEATURE_IFCONFIG_STATUS=y\nCONFIG_FEATURE_IFCONFIG_SLIP=y\nCONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y\nCONFIG_FEATURE_IFCONFIG_HW=y\n# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set\n# CONFIG_IFENSLAVE is not set\n# CONFIG_IFPLUGD is not set\nCONFIG_IFUP=y\nCONFIG_IFDOWN=y\nCONFIG_IFUPDOWN_IFSTATE_PATH=\"/var/run/ifstate\"\nCONFIG_FEATURE_IFUPDOWN_IP=y\nCONFIG_FEATURE_IFUPDOWN_IPV4=y\nCONFIG_FEATURE_IFUPDOWN_IPV6=y\nCONFIG_FEATURE_IFUPDOWN_MAPPING=y\n# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set\nCONFIG_INETD=y\nCONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y\nCONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y\nCONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y\nCONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y\nCONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y\n# CONFIG_FEATURE_INETD_RPC is not set\nCONFIG_IP=y\nCONFIG_IPADDR=y\nCONFIG_IPLINK=y\nCONFIG_IPROUTE=y\nCONFIG_IPTUNNEL=y\nCONFIG_IPRULE=y\nCONFIG_IPNEIGH=y\nCONFIG_FEATURE_IP_ADDRESS=y\nCONFIG_FEATURE_IP_LINK=y\nCONFIG_FEATURE_IP_ROUTE=y\nCONFIG_FEATURE_IP_ROUTE_DIR=\"/etc/iproute2\"\nCONFIG_FEATURE_IP_TUNNEL=y\nCONFIG_FEATURE_IP_RULE=y\nCONFIG_FEATURE_IP_NEIGH=y\n# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set\n# CONFIG_IPCALC is not set\n# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set\n# CONFIG_FEATURE_IPCALC_FANCY is not set\n# CONFIG_FAKEIDENTD is not set\nCONFIG_NAMEIF=y\n# CONFIG_FEATURE_NAMEIF_EXTENDED is not set\n# CONFIG_NBDCLIENT is not set\n# CONFIG_NC is not set\n# CONFIG_NETCAT is not set\n# CONFIG_NC_SERVER is not set\n# CONFIG_NC_EXTRA is not set\n# CONFIG_NC_110_COMPAT is not set\nCONFIG_NETSTAT=y\n# CONFIG_FEATURE_NETSTAT_WIDE is not set\n# CONFIG_FEATURE_NETSTAT_PRG is not set\nCONFIG_NSLOOKUP=y\n# CONFIG_NTPD is not set\n# CONFIG_FEATURE_NTPD_SERVER is not set\n# CONFIG_FEATURE_NTPD_CONF is not set\nCONFIG_PING=y\n# CONFIG_PING6 is not set\nCONFIG_FEATURE_FANCY_PING=y\n# CONFIG_PSCAN is not set\nCONFIG_ROUTE=y\n# CONFIG_SLATTACH is not set\n# CONFIG_SSL_CLIENT is not set\n# CONFIG_TCPSVD is not set\n# CONFIG_UDPSVD is not set\nCONFIG_TELNET=y\nCONFIG_FEATURE_TELNET_TTYPE=y\nCONFIG_FEATURE_TELNET_AUTOLOGIN=y\nCONFIG_FEATURE_TELNET_WIDTH=y\n# CONFIG_TELNETD is not set\n# CONFIG_FEATURE_TELNETD_STANDALONE is not set\n# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set\nCONFIG_TFTP=y\n# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set\n# CONFIG_TFTPD is not set\n\n#\n# Common options for tftp/tftpd\n#\nCONFIG_FEATURE_TFTP_GET=y\nCONFIG_FEATURE_TFTP_PUT=y\nCONFIG_FEATURE_TFTP_BLOCKSIZE=y\n# CONFIG_TFTP_DEBUG is not set\n# CONFIG_TLS is not set\nCONFIG_TRACEROUTE=y\n# CONFIG_TRACEROUTE6 is not set\n# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set\n# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set\n# CONFIG_TUNCTL is not set\n# CONFIG_FEATURE_TUNCTL_UG is not set\nCONFIG_VCONFIG=y\nCONFIG_WGET=y\nCONFIG_FEATURE_WGET_LONG_OPTIONS=y\nCONFIG_FEATURE_WGET_STATUSBAR=y\nCONFIG_FEATURE_WGET_AUTHENTICATION=y\nCONFIG_FEATURE_WGET_TIMEOUT=y\n# CONFIG_FEATURE_WGET_HTTPS is not set\n# CONFIG_FEATURE_WGET_OPENSSL is not set\n# CONFIG_WHOIS is not set\n# CONFIG_ZCIP is not set\n# CONFIG_UDHCPD is not set\n# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set\n# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set\nCONFIG_DHCPD_LEASES_FILE=\"\"\n# CONFIG_DUMPLEASES is not set\n# CONFIG_DHCPRELAY is not set\nCONFIG_UDHCPC=y\nCONFIG_FEATURE_UDHCPC_ARPING=y\nCONFIG_FEATURE_UDHCPC_SANITIZEOPT=y\nCONFIG_UDHCPC_DEFAULT_SCRIPT=\"/usr/share/udhcpc/default.script\"\n# CONFIG_UDHCPC6 is not set\n# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set\n# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set\n# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set\n\n#\n# Common options for DHCP applets\n#\n# CONFIG_FEATURE_UDHCP_PORT is not set\nCONFIG_UDHCP_DEBUG=0\nCONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80\nCONFIG_FEATURE_UDHCP_RFC3397=y\nCONFIG_FEATURE_UDHCP_8021Q=y\nCONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=\"-R -n -O search\"\n\n#\n# Print Utilities\n#\n# CONFIG_LPD is not set\n# CONFIG_LPR is not set\n# CONFIG_LPQ is not set\n\n#\n# Mail Utilities\n#\n# CONFIG_MAKEMIME is not set\n# CONFIG_POPMAILDIR is not set\n# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set\n# CONFIG_REFORMIME is not set\n# CONFIG_FEATURE_REFORMIME_COMPAT is not set\n# CONFIG_SENDMAIL is not set\nCONFIG_FEATURE_MIME_CHARSET=\"\"\n\n#\n# Process Utilities\n#\nCONFIG_FREE=y\nCONFIG_FUSER=y\n# CONFIG_IOSTAT is not set\nCONFIG_KILL=y\nCONFIG_KILLALL=y\nCONFIG_KILLALL5=y\nCONFIG_LSOF=y\n# CONFIG_MPSTAT is not set\n# CONFIG_NMETER is not set\n# CONFIG_PGREP is not set\n# CONFIG_PKILL is not set\nCONFIG_PIDOF=y\nCONFIG_FEATURE_PIDOF_SINGLE=y\nCONFIG_FEATURE_PIDOF_OMIT=y\n# CONFIG_PMAP is not set\n# CONFIG_POWERTOP is not set\n# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set\nCONFIG_PS=y\n# CONFIG_FEATURE_PS_WIDE is not set\n# CONFIG_FEATURE_PS_LONG is not set\n# CONFIG_FEATURE_PS_TIME is not set\n# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set\n# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set\n# CONFIG_PSTREE is not set\n# CONFIG_PWDX is not set\n# CONFIG_SMEMCAP is not set\nCONFIG_BB_SYSCTL=y\nCONFIG_TOP=y\nCONFIG_FEATURE_TOP_INTERACTIVE=y\nCONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y\nCONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y\n# CONFIG_FEATURE_TOP_SMP_CPU is not set\n# CONFIG_FEATURE_TOP_DECIMALS is not set\n# CONFIG_FEATURE_TOP_SMP_PROCESS is not set\n# CONFIG_FEATURE_TOPMEM is not set\nCONFIG_UPTIME=y\n# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set\nCONFIG_WATCH=y\n# CONFIG_FEATURE_SHOW_THREADS is not set\n\n#\n# Runit Utilities\n#\n# CONFIG_CHPST is not set\n# CONFIG_SETUIDGID is not set\n# CONFIG_ENVUIDGID is not set\n# CONFIG_ENVDIR is not set\n# CONFIG_SOFTLIMIT is not set\n# CONFIG_RUNSV is not set\n# CONFIG_RUNSVDIR is not set\n# CONFIG_FEATURE_RUNSVDIR_LOG is not set\n# CONFIG_SV is not set\nCONFIG_SV_DEFAULT_SERVICE_DIR=\"\"\nCONFIG_SVC=y\n# CONFIG_SVLOGD is not set\n# CONFIG_CHCON is not set\n# CONFIG_GETENFORCE is not set\n# CONFIG_GETSEBOOL is not set\n# CONFIG_LOAD_POLICY is not set\n# CONFIG_MATCHPATHCON is not set\n# CONFIG_RUNCON is not set\n# CONFIG_SELINUXENABLED is not set\n# CONFIG_SESTATUS is not set\n# CONFIG_SETENFORCE is not set\n# CONFIG_SETFILES is not set\n# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set\n# CONFIG_RESTORECON is not set\n# CONFIG_SETSEBOOL is not set\n\n#\n# Shells\n#\nCONFIG_SH_IS_ASH=y\n# CONFIG_SH_IS_HUSH is not set\n# CONFIG_SH_IS_NONE is not set\n# CONFIG_BASH_IS_ASH is not set\n# CONFIG_BASH_IS_HUSH is not set\nCONFIG_BASH_IS_NONE=y\nCONFIG_ASH=y\nCONFIG_ASH_OPTIMIZE_FOR_SIZE=y\nCONFIG_ASH_INTERNAL_GLOB=y\nCONFIG_ASH_BASH_COMPAT=y\nCONFIG_ASH_JOB_CONTROL=y\nCONFIG_ASH_ALIAS=y\nCONFIG_ASH_RANDOM_SUPPORT=y\nCONFIG_ASH_EXPAND_PRMT=y\nCONFIG_ASH_IDLE_TIMEOUT=y\n# CONFIG_ASH_MAIL is not set\nCONFIG_ASH_ECHO=y\nCONFIG_ASH_PRINTF=y\nCONFIG_ASH_TEST=y\nCONFIG_ASH_HELP=y\nCONFIG_ASH_GETOPTS=y\nCONFIG_ASH_CMDCMD=y\n# CONFIG_CTTYHACK is not set\n# CONFIG_HUSH is not set\n# CONFIG_HUSH_BASH_COMPAT is not set\n# CONFIG_HUSH_BRACE_EXPANSION is not set\n# CONFIG_HUSH_INTERACTIVE is not set\n# CONFIG_HUSH_SAVEHISTORY is not set\n# CONFIG_HUSH_JOB is not set\n# CONFIG_HUSH_TICK is not set\n# CONFIG_HUSH_IF is not set\n# CONFIG_HUSH_LOOPS is not set\n# CONFIG_HUSH_CASE is not set\n# CONFIG_HUSH_FUNCTIONS is not set\n# CONFIG_HUSH_LOCAL is not set\n# CONFIG_HUSH_RANDOM_SUPPORT is not set\n# CONFIG_HUSH_MODE_X is not set\n# CONFIG_HUSH_ECHO is not set\n# CONFIG_HUSH_PRINTF is not set\n# CONFIG_HUSH_TEST is not set\n# CONFIG_HUSH_HELP is not set\n# CONFIG_HUSH_EXPORT is not set\n# CONFIG_HUSH_EXPORT_N is not set\n# CONFIG_HUSH_READONLY is not set\n# CONFIG_HUSH_KILL is not set\n# CONFIG_HUSH_WAIT is not set\n# CONFIG_HUSH_TRAP is not set\n# CONFIG_HUSH_TYPE is not set\n# CONFIG_HUSH_TIMES is not set\n# CONFIG_HUSH_READ is not set\n# CONFIG_HUSH_SET is not set\n# CONFIG_HUSH_UNSET is not set\n# CONFIG_HUSH_ULIMIT is not set\n# CONFIG_HUSH_UMASK is not set\n# CONFIG_HUSH_GETOPTS is not set\n# CONFIG_HUSH_MEMLEAK is not set\n\n#\n# Options common to all shells\n#\nCONFIG_FEATURE_SH_MATH=y\nCONFIG_FEATURE_SH_MATH_64=y\nCONFIG_FEATURE_SH_EXTRA_QUIET=y\n# CONFIG_FEATURE_SH_STANDALONE is not set\n# CONFIG_FEATURE_SH_NOFORK is not set\nCONFIG_FEATURE_SH_READ_FRAC=y\n# CONFIG_FEATURE_SH_HISTFILESIZE is not set\n\n#\n# System Logging Utilities\n#\nCONFIG_KLOGD=y\nCONFIG_FEATURE_KLOGD_KLOGCTL=y\nCONFIG_LOGGER=y\n# CONFIG_LOGREAD is not set\n# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set\nCONFIG_SYSLOGD=y\nCONFIG_FEATURE_ROTATE_LOGFILE=y\nCONFIG_FEATURE_REMOTE_LOG=y\n# CONFIG_FEATURE_SYSLOGD_DUP is not set\n# CONFIG_FEATURE_SYSLOGD_CFG is not set\nCONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256\n# CONFIG_FEATURE_IPC_SYSLOG is not set\nCONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0\n# CONFIG_FEATURE_KMSG_SYSLOG is not set\n"
  },
  {
    "path": "package/busybox/busybox.hash",
    "content": "# From https://busybox.net/downloads/busybox-1.34.1.tar.bz2.sha256\nsha256  415fbd89e5344c96acf449d94a6f956dbed62e18e835fc83e064db33a34bd549  busybox-1.34.1.tar.bz2\n# Locally computed\nsha256  bbfc9843646d483c334664f651c208b9839626891d8f17604db2146962f43548  LICENSE\nsha256  b5a136ed67798e51fe2e0ca0b2a21cb01b904ff0c9f7d563a6292e276607e58f  archival/libarchive/bz/LICENSE\n"
  },
  {
    "path": "package/busybox/busybox.mk",
    "content": "################################################################################\n#\n# busybox\n#\n################################################################################\n\nBUSYBOX_VERSION = 1.34.1\nBUSYBOX_SITE = https://www.busybox.net/downloads\nBUSYBOX_SOURCE = busybox-$(BUSYBOX_VERSION).tar.bz2\nBUSYBOX_LICENSE = GPL-2.0, bzip2-1.0.4\nBUSYBOX_LICENSE_FILES = LICENSE archival/libarchive/bz/LICENSE\nBUSYBOX_CPE_ID_VENDOR = busybox\n\nBUSYBOX_CFLAGS = \\\n\t$(TARGET_CFLAGS)\n\nBUSYBOX_LDFLAGS = \\\n\t$(TARGET_LDFLAGS)\n\n# Packages that provide commands that may also be busybox applets:\nBUSYBOX_DEPENDENCIES = \\\n\t$(if $(BR2_PACKAGE_ATTR),attr) \\\n\t$(if $(BR2_PACKAGE_BASH),bash) \\\n\t$(if $(BR2_PACKAGE_BC),bc) \\\n\t$(if $(BR2_PACKAGE_BINUTILS),binutils) \\\n\t$(if $(BR2_PACKAGE_COREUTILS),coreutils) \\\n\t$(if $(BR2_PACKAGE_CPIO),cpio) \\\n\t$(if $(BR2_PACKAGE_DCRON),dcron) \\\n\t$(if $(BR2_PACKAGE_DEBIANUTILS),debianutils) \\\n\t$(if $(BR2_PACKAGE_DIFFUTILS),diffutils) \\\n\t$(if $(BR2_PACKAGE_DOS2UNIX),dos2unix) \\\n\t$(if $(BR2_PACKAGE_DOSFSTOOLS),dosfstools) \\\n\t$(if $(BR2_PACKAGE_E2FSPROGS),e2fsprogs) \\\n\t$(if $(BR2_PACKAGE_FBSET),fbset) \\\n\t$(if $(BR2_PACKAGE_GAWK),gawk) \\\n\t$(if $(BR2_PACKAGE_GREP),grep) \\\n\t$(if $(BR2_PACKAGE_GZIP),gzip) \\\n\t$(if $(BR2_PACKAGE_I2C_TOOLS),i2c-tools) \\\n\t$(if $(BR2_PACKAGE_IFENSLAVE),ifenslave) \\\n\t$(if $(BR2_PACKAGE_IFPLUGD),ifplugd) \\\n\t$(if $(BR2_PACKAGE_IFUPDOWN),ifupdown) \\\n\t$(if $(BR2_PACKAGE_IPCALC),ipcalc) \\\n\t$(if $(BR2_PACKAGE_IPROUTE2),iproute2) \\\n\t$(if $(BR2_PACKAGE_IPUTILS),iputils) \\\n\t$(if $(BR2_PACKAGE_KMOD),kmod) \\\n\t$(if $(BR2_PACKAGE_LESS),less) \\\n\t$(if $(BR2_PACKAGE_LSOF),lsof) \\\n\t$(if $(BR2_PACKAGE_MTD),mtd) \\\n\t$(if $(BR2_PACKAGE_NET_TOOLS),net-tools) \\\n\t$(if $(BR2_PACKAGE_NETCAT),netcat) \\\n\t$(if $(BR2_PACKAGE_NETCAT_OPENSBSD),netcat-openbsd) \\\n\t$(if $(BR2_PACKAGE_NMAP),nmap) \\\n\t$(if $(BR2_PACKAGE_NTP),ntp) \\\n\t$(if $(BR2_PACKAGE_PCIUTILS),pciutils) \\\n\t$(if $(BR2_PACKAGE_PROCPS_NG),procps-ng) \\\n\t$(if $(BR2_PACKAGE_PSMISC),psmisc) \\\n\t$(if $(BR2_PACKAGE_START_STOP_DAEMON),start-stop-daemon) \\\n\t$(if $(BR2_PACKAGE_SYSKLOGD),sysklogd) \\\n\t$(if $(BR2_PACKAGE_SYSTEMD),systemd) \\\n\t$(if $(BR2_PACKAGE_SYSVINIT),sysvinit) \\\n\t$(if $(BR2_PACKAGE_TAR),tar) \\\n\t$(if $(BR2_PACKAGE_TFTPD),tftpd) \\\n\t$(if $(BR2_PACKAGE_TRACEROUTE),traceroute) \\\n\t$(if $(BR2_PACKAGE_UNZIP),unzip) \\\n\t$(if $(BR2_PACKAGE_USBUTILS),usbutils) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX),util-linux) \\\n\t$(if $(BR2_PACKAGE_VIM),vim) \\\n\t$(if $(BR2_PACKAGE_WATCHDOG),watchdog) \\\n\t$(if $(BR2_PACKAGE_WGET),wget) \\\n\t$(if $(BR2_PACKAGE_WHOIS),whois)\n\n# Link against libtirpc if available so that we can leverage its RPC\n# support for NFS mounting with BusyBox\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nBUSYBOX_DEPENDENCIES += libtirpc host-pkgconf\nBUSYBOX_CFLAGS += \"`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`\"\n# Don't use LDFLAGS for -ltirpc, because LDFLAGS is used for\n# the non-final link of modules as well.\nBUSYBOX_CFLAGS_busybox += \"`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`\"\nendif\n\n# Allows the build system to tweak CFLAGS\nBUSYBOX_MAKE_ENV = \\\n\t$(TARGET_MAKE_ENV) \\\n\tCFLAGS=\"$(BUSYBOX_CFLAGS)\" \\\n\tCFLAGS_busybox=\"$(BUSYBOX_CFLAGS_busybox)\"\n\nifeq ($(BR2_REPRODUCIBLE),y)\nBUSYBOX_MAKE_ENV += \\\n\tKCONFIG_NOTIMESTAMP=1\nendif\n\nBUSYBOX_MAKE_OPTS = \\\n\tCC=\"$(TARGET_CC)\" \\\n\tARCH=$(KERNEL_ARCH) \\\n\tPREFIX=\"$(TARGET_DIR)\" \\\n\tEXTRA_LDFLAGS=\"$(BUSYBOX_LDFLAGS)\" \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tCONFIG_PREFIX=\"$(TARGET_DIR)\" \\\n\tSKIP_STRIP=y\n\nifndef BUSYBOX_CONFIG_FILE\nBUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG))\nendif\n\nBUSYBOX_KCONFIG_SUPPORTS_DEFCONFIG = NO\nBUSYBOX_KCONFIG_FILE = $(BUSYBOX_CONFIG_FILE)\nBUSYBOX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES))\nBUSYBOX_KCONFIG_EDITORS = menuconfig xconfig gconfig\nBUSYBOX_KCONFIG_OPTS = $(BUSYBOX_MAKE_OPTS)\n\nifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y)\ndefine BUSYBOX_PERMISSIONS\n# Set permissions on all applets with BB_SUID_REQUIRE and BB_SUID_MAYBE.\n# 12 Applets are pulled from applets.h using grep command :\n#  grep -r -e \"APPLET.*BB_SUID_REQUIRE\\|APPLET.*BB_SUID_MAYBE\" \\\n#  $(@D)/include/applets.h\n# These applets are added to the device table and the makedev file\n# ignores the files with type 'F' ( optional files).\n\t/usr/bin/wall \t\t\t F 4755 0  0 - - - - -\n\t/bin/ping \t\t\t F 4755 0  0 - - - - -\n\t/bin/ping6 \t\t\t F 4755 0  0 - - - - -\n\t/usr/bin/crontab \t\t F 4755 0  0 - - - - -\n\t/sbin/findfs \t\t\t F 4755 0  0 - - - - -\n\t/bin/login \t\t\t F 4755 0  0 - - - - -\n\t/bin/mount \t\t\t F 4755 0  0 - - - - -\n\t/usr/bin/passwd \t\t F 4755 0  0 - - - - -\n\t/bin/su \t\t\t F 4755 0  0 - - - - -\n\t/usr/bin/traceroute \t\t F 4755 0  0 - - - - -\n\t/usr/bin/traceroute6 \t\t F 4755 0  0 - - - - -\n\t/usr/bin/vlock \t\t\t F 4755 0  0 - - - - -\nendef\nelse\ndefine BUSYBOX_PERMISSIONS\n\t/bin/busybox                     f 4755 0  0 - - - - -\nendef\nendif\n\n# If mdev will be used for device creation enable it and copy S10mdev to /etc/init.d\nifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV),y)\ndefine BUSYBOX_INSTALL_MDEV_SCRIPT\n\t$(INSTALL) -D -m 0755 package/busybox/S10mdev \\\n\t\t$(TARGET_DIR)/etc/init.d/S10mdev\nendef\ndefine BUSYBOX_INSTALL_MDEV_CONF\n\t$(INSTALL) -D -m 0644 package/busybox/mdev.conf \\\n\t\t$(TARGET_DIR)/etc/mdev.conf\nendef\ndefine BUSYBOX_SET_MDEV\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_MDEV)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_CONF)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_EXEC)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_LOAD_FIRMWARE)\nendef\nendif\n\n# sha passwords need USE_BB_CRYPT_SHA\nifeq ($(BR2_TARGET_GENERIC_PASSWD_SHA256)$(BR2_TARGET_GENERIC_PASSWD_SHA512),y)\ndefine BUSYBOX_SET_CRYPT_SHA\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_USE_BB_CRYPT_SHA)\nendef\nendif\n\nifeq ($(BR2_USE_MMU),y)\ndefine BUSYBOX_SET_MMU\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_NOMMU)\nendef\nelse\ndefine BUSYBOX_SET_MMU\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NOMMU)\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_SWAPON)\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_SWAPOFF)\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_ASH)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_BASH_COMPAT)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_BRACE_EXPANSION)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_HELP)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_INTERACTIVE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_SAVEHISTORY)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_JOB)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_TICK)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_IF)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_LOOPS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_CASE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_FUNCTIONS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_LOCAL)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_RANDOM_SUPPORT)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_EXPORT_N)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_MODE_X)\nendef\nendif\n\n# If we're using static libs do the same for busybox\nifeq ($(BR2_STATIC_LIBS),y)\ndefine BUSYBOX_PREFER_STATIC\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_STATIC)\nendef\nendif\n\ndefine BUSYBOX_INSTALL_UDHCPC_SCRIPT\n\tif grep -q CONFIG_UDHCPC=y $(@D)/.config; then \\\n\t\t$(INSTALL) -m 0755 -D package/busybox/udhcpc.script \\\n\t\t\t$(TARGET_DIR)/usr/share/udhcpc/default.script; \\\n\t\t$(INSTALL) -m 0755 -d \\\n\t\t\t$(TARGET_DIR)/usr/share/udhcpc/default.script.d; \\\n\tfi\nendef\n\ndefine BUSYBOX_INSTALL_ZCIP_SCRIPT\n\tif grep -q CONFIG_ZCIP=y $(@D)/.config; then \\\n\t\t$(INSTALL) -m 0755 -D $(@D)/examples/zcip.script \\\n\t\t\t$(TARGET_DIR)/usr/share/zcip/default.script; \\\n\tfi\nendef\n\nifeq ($(BR2_INIT_BUSYBOX),y)\n\ndefine BUSYBOX_SET_INIT\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_INIT)\nendef\n\nifeq ($(BR2_TARGET_GENERIC_GETTY),y)\ndefine BUSYBOX_SET_GETTY\n\t$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(SYSTEM_GETTY_PORT)::respawn:/sbin/getty -L $(SYSTEM_GETTY_OPTIONS) $(SYSTEM_GETTY_PORT) $(SYSTEM_GETTY_BAUDRATE) $(SYSTEM_GETTY_TERM) #~' \\\n\t\t$(TARGET_DIR)/etc/inittab\nendef\nelse\ndefine BUSYBOX_SET_GETTY\n\t$(SED) '/# GENERIC_SERIAL$$/s~^.*#~#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 #~' $(TARGET_DIR)/etc/inittab\nendef\nendif # BR2_TARGET_GENERIC_GETTY\nBUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_SET_GETTY\n\nBUSYBOX_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB\n\nendif # BR2_INIT_BUSYBOX\n\nifeq ($(BR2_PACKAGE_BUSYBOX_SELINUX),y)\nBUSYBOX_DEPENDENCIES += host-pkgconf libselinux libsepol\ndefine BUSYBOX_SET_SELINUX\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SELINUX)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SELINUXENABLED)\nendef\nendif\n\n# enable relevant options to allow the Busybox less applet to be used\n# as a systemd pager\nifeq ($(BR2_PACKAGE_SYSTEMD):$(BR2_PACKAGE_LESS),y:)\ndefine BUSYBOX_SET_LESS_FLAGS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_DASHCMD)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_RAW)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_TRUNCATE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_FLAGS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_LESS_ENV)\nendef\nendif\n\nifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y)\ndefine BUSYBOX_SET_INDIVIDUAL_BINARIES\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_BUILD_LIBBUSYBOX)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_INDIVIDUAL)\nendef\n\ndefine BUSYBOX_INSTALL_INDIVIDUAL_BINARIES\n\trm -f $(TARGET_DIR)/bin/busybox\nendef\nendif\n\n# Only install our logging scripts if no other package does it.\nifeq ($(BR2_PACKAGE_SYSKLOGD)$(BR2_PACKAGE_RSYSLOG)$(BR2_PACKAGE_SYSLOG_NG),)\ndefine BUSYBOX_INSTALL_LOGGING_SCRIPT\n\tif grep -q CONFIG_SYSLOGD=y $(@D)/.config; \\\n\tthen \\\n\t\t$(INSTALL) -m 0755 -D package/busybox/S01syslogd \\\n\t\t\t$(TARGET_DIR)/etc/init.d/S01syslogd; \\\n\tfi; \\\n\tif grep -q CONFIG_KLOGD=y $(@D)/.config; \\\n\tthen \\\n\t\t$(INSTALL) -m 0755 -D package/busybox/S02klogd \\\n\t\t\t$(TARGET_DIR)/etc/init.d/S02klogd; \\\n\tfi\nendef\nendif\n\n# Only install our sysctl scripts if no other package does it.\nifeq ($(BR2_PACKAGE_PROCPS_NG),)\ndefine BUSYBOX_INSTALL_SYSCTL_SCRIPT\n\tif grep -q CONFIG_BB_SYSCTL=y $(@D)/.config; \\\n\tthen \\\n\t\t$(INSTALL) -m 0755 -D package/busybox/S02sysctl \\\n\t\t\t$(TARGET_DIR)/etc/init.d/S02sysctl ; \\\n\tfi\nendef\nendif\n\nifeq ($(BR2_INIT_BUSYBOX),y)\ndefine BUSYBOX_INSTALL_INITTAB\n\tif test ! -e $(TARGET_DIR)/etc/inittab; then \\\n\t\t$(INSTALL) -D -m 0644 package/busybox/inittab $(TARGET_DIR)/etc/inittab; \\\n\tfi\nendef\nendif\n\nifeq ($(BR2_PACKAGE_BUSYBOX_WATCHDOG),y)\ndefine BUSYBOX_SET_WATCHDOG\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_WATCHDOG)\nendef\ndefine BUSYBOX_INSTALL_WATCHDOG_SCRIPT\n\t$(INSTALL) -D -m 0755 package/busybox/S15watchdog \\\n\t\t$(TARGET_DIR)/etc/init.d/S15watchdog\n\t$(SED) s/PERIOD/$(call qstrip,$(BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD))/ \\\n\t\t$(TARGET_DIR)/etc/init.d/S15watchdog\nendef\nendif\n\n# PAM support requires thread support in the toolchain\nifeq ($(BR2_PACKAGE_LINUX_PAM)$(BR2_TOOLCHAIN_HAS_THREADS),yy)\ndefine BUSYBOX_LINUX_PAM\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_PAM)\nendef\nBUSYBOX_DEPENDENCIES += linux-pam\nelse\ndefine BUSYBOX_LINUX_PAM\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_PAM)\nendef\nendif\n\n# Telnet support\ndefine BUSYBOX_INSTALL_TELNET_SCRIPT\n\tif grep -q CONFIG_FEATURE_TELNETD_STANDALONE=y $(@D)/.config; then \\\n\t\t$(INSTALL) -m 0755 -D package/busybox/S50telnet \\\n\t\t\t$(TARGET_DIR)/etc/init.d/S50telnet ; \\\n\tfi\nendef\ndefine BUSYBOX_INSTALL_TELNET_SERVICE\n\tif grep -q CONFIG_FEATURE_TELNETD_STANDALONE=y $(@D)/.config; then \\\n\t\t$(INSTALL) -D -m 0644 package/busybox/telnetd.service \\\n\t\t\t$(TARGET_DIR)/usr/lib/systemd/system/telnetd.service ; \\\n\tfi\nendef\n\n# Add /bin/{a,hu}sh to /etc/shells otherwise some login tools like dropbear\n# can reject the user connection. See man shells.\ndefine BUSYBOX_INSTALL_ADD_TO_SHELLS\n\tif grep -q CONFIG_ASH=y $(BUSYBOX_DIR)/.config; then \\\n\t\tgrep -qsE '^/bin/ash$$' $(TARGET_DIR)/etc/shells \\\n\t\t|| echo \"/bin/ash\" >> $(TARGET_DIR)/etc/shells; \\\n\tfi\n\tif grep -q CONFIG_HUSH=y $(BUSYBOX_DIR)/.config; then \\\n\t\tgrep -qsE '^/bin/hush$$' $(TARGET_DIR)/etc/shells \\\n\t\t|| echo \"/bin/hush\" >> $(TARGET_DIR)/etc/shells; \\\n\tfi\nendef\nBUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_INSTALL_ADD_TO_SHELLS\n\ndefine BUSYBOX_KCONFIG_FIXUP_CMDS\n\t$(BUSYBOX_SET_MMU)\n\t$(BUSYBOX_PREFER_STATIC)\n\t$(BUSYBOX_SET_MDEV)\n\t$(BUSYBOX_SET_CRYPT_SHA)\n\t$(BUSYBOX_LINUX_PAM)\n\t$(BUSYBOX_SET_INIT)\n\t$(BUSYBOX_SET_WATCHDOG)\n\t$(BUSYBOX_SET_SELINUX)\n\t$(BUSYBOX_SET_LESS_FLAGS)\n\t$(BUSYBOX_SET_INDIVIDUAL_BINARIES)\nendef\n\ndefine BUSYBOX_BUILD_CMDS\n\t$(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D)\nendef\n\ndefine BUSYBOX_INSTALL_TARGET_CMDS\n\t# Use the 'noclobber' install rule, to prevent BusyBox from overwriting\n\t# any full-blown versions of apps installed by other packages.\n\t$(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D) install-noclobber\n\t$(BUSYBOX_INSTALL_INDIVIDUAL_BINARIES)\n\t$(BUSYBOX_INSTALL_INITTAB)\n\t$(BUSYBOX_INSTALL_UDHCPC_SCRIPT)\n\t$(BUSYBOX_INSTALL_ZCIP_SCRIPT)\n\t$(BUSYBOX_INSTALL_MDEV_CONF)\nendef\n\n# Install the sysvinit scripts, for the moment, but not those that already\n# have a corresponding one in openrc.\ndefine BUSYBOX_INSTALL_INIT_OPENRC\n\t$(BUSYBOX_INSTALL_MDEV_SCRIPT)\n\t$(BUSYBOX_INSTALL_LOGGING_SCRIPT)\n\t$(BUSYBOX_INSTALL_WATCHDOG_SCRIPT)\n\t$(BUSYBOX_INSTALL_TELNET_SCRIPT)\nendef\n\ndefine BUSYBOX_INSTALL_INIT_SYSTEMD\n\t$(BUSYBOX_INSTALL_TELNET_SERVICE)\nendef\n\ndefine BUSYBOX_INSTALL_INIT_SYSV\n\t$(BUSYBOX_INSTALL_MDEV_SCRIPT)\n\t$(BUSYBOX_INSTALL_LOGGING_SCRIPT)\n\t$(BUSYBOX_INSTALL_WATCHDOG_SCRIPT)\n\t$(BUSYBOX_INSTALL_SYSCTL_SCRIPT)\n\t$(BUSYBOX_INSTALL_TELNET_SCRIPT)\nendef\n\n# Checks to give errors that the user can understand\n# Must be before we call to kconfig-package\nifeq ($(BR2_PACKAGE_BUSYBOX)$(BR_BUILDING),yy)\nifeq ($(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG)),)\n$(error No BusyBox configuration file specified, check your BR2_PACKAGE_BUSYBOX_CONFIG setting)\nendif\nendif\n\n$(eval $(kconfig-package))\n"
  },
  {
    "path": "package/busybox/inittab",
    "content": "# /etc/inittab\n#\n# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>\n#\n# Note: BusyBox init doesn't support runlevels.  The runlevels field is\n# completely ignored by BusyBox init. If you want runlevels, use\n# sysvinit.\n#\n# Format for each entry: <id>:<runlevels>:<action>:<process>\n#\n# id        == tty to run on, or empty for /dev/console\n# runlevels == ignored\n# action    == one of sysinit, respawn, askfirst, wait, and once\n# process   == program to run\n\n# Startup the system\n::sysinit:/bin/mount -t proc proc /proc\n::sysinit:/bin/mount -o remount,rw /\n::sysinit:/bin/mkdir -p /dev/pts /dev/shm\n::sysinit:/bin/mount -a\n::sysinit:/sbin/swapon -a\nnull::sysinit:/bin/ln -sf /proc/self/fd /dev/fd\nnull::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin\nnull::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout\nnull::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr\n::sysinit:/bin/hostname -F /etc/hostname\n# now run any rc scripts\n::sysinit:/etc/init.d/rcS\n\n# Put a getty on the serial port\n#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL\n\n# Stuff to do for the 3-finger salute\n#::ctrlaltdel:/sbin/reboot\n\n# Stuff to do before rebooting\n::shutdown:/etc/init.d/rcK\n::shutdown:/sbin/swapoff -a\n::shutdown:/bin/umount -a -r\n"
  },
  {
    "path": "package/busybox/mdev.conf",
    "content": "# null may already exist; therefore ownership has to be changed with command\nnull\t\troot:root 666 @chmod 666 $MDEV\nzero\t\troot:root 666\nfull\t\troot:root 666\nrandom\t\troot:root 444\nurandom\t\troot:root 444\nhwrandom\troot:root 444\ngrsec\t\troot:root 660\n\nkmem\t\troot:root 640\nmem\t\troot:root 640\nport\t\troot:root 640\n# console may already exist; therefore ownership has to be changed with command\nconsole\t\troot:tty 600 @chmod 600 $MDEV\nptmx\t\troot:tty 666\npty.*\t\troot:tty 660\n\n# Typical devices\ntty\t\troot:tty 666\ntty[0-9]*\troot:tty 660\nvcsa*[0-9]*\troot:tty 660\nttyS[0-9]*\troot:root 660\nttyUSB[0-9]*\troot:root 660\n\n# alsa sound devices\nsnd/pcm.*\troot:audio 660\nsnd/control.*\troot:audio 660\nsnd/midi.*\troot:audio 660\nsnd/seq\t\troot:audio 660\nsnd/timer\troot:audio 660\n\n# input stuff\ninput/event[0-9]+\troot:root 640\ninput/mice\t\troot:root 640\ninput/mouse[0-9]\troot:root 640\ninput/ts[0-9]\t\troot:root 600\n\n# load modules\n$MODALIAS=.*\troot:root 660 @modprobe \"$MODALIAS\"\n"
  },
  {
    "path": "package/busybox/telnetd.service",
    "content": "[Unit]\nDescription=Telnetd Service\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=/usr/sbin/telnetd -F\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/busybox/udhcpc.script",
    "content": "#!/bin/sh\n\n# udhcpc script edited by Tim Riker <Tim@Rikers.org>\n\n[ -z \"$1\" ] && echo \"Error: should be called from udhcpc\" && exit 1\n\nACTION=\"$1\"\nRESOLV_CONF=\"/etc/resolv.conf\"\n[ -e $RESOLV_CONF ] || touch $RESOLV_CONF\n[ -n \"$broadcast\" ] && BROADCAST=\"broadcast $broadcast\"\n[ -n \"$subnet\" ] && NETMASK=\"netmask $subnet\"\n# Handle stateful DHCPv6 like DHCPv4\n[ -n \"$ipv6\" ] && ip=\"$ipv6/128\"\n\nif [ -z \"${IF_WAIT_DELAY}\" ]; then\n\tIF_WAIT_DELAY=10\nfi\n\nwait_for_ipv6_default_route() {\n\tprintf \"Waiting for IPv6 default route to appear\"\n\twhile [ $IF_WAIT_DELAY -gt 0 ]; do\n\t\tif ip -6 route list | grep -q default; then\n\t\t\tprintf \"\\n\"\n\t\t\treturn\n\t\tfi\n\t\tsleep 1\n\t\tprintf \".\"\n\t\t: $((IF_WAIT_DELAY -= 1))\n\tdone\n\tprintf \" timeout!\\n\"\n}\n\ncase \"$ACTION\" in\n\tdeconfig)\n\t\t/sbin/ifconfig $interface up\n\t\t/sbin/ifconfig $interface 0.0.0.0\n\n\t\t# drop info from this interface\n\t\t# resolv.conf may be a symlink to /tmp/, so take care\n\t\tTMPFILE=$(mktemp)\n\t\tgrep -vE \"# $interface\\$\" $RESOLV_CONF > $TMPFILE\n\t\tcat $TMPFILE > $RESOLV_CONF\n\t\trm -f $TMPFILE\n\n\t\tif [ -x /usr/sbin/avahi-autoipd ]; then\n\t\t\t/usr/sbin/avahi-autoipd -c $interface && /usr/sbin/avahi-autoipd -k $interface\n\t\tfi\n\t\t;;\n\n\tleasefail|nak)\n\t\tif [ -x /usr/sbin/avahi-autoipd ]; then\n\t\t\t/usr/sbin/avahi-autoipd -c $interface || /usr/sbin/avahi-autoipd -wD $interface --no-chroot\n\t\tfi\n\t\t;;\n\n\trenew|bound)\n\t\tif [ -x /usr/sbin/avahi-autoipd ]; then\n\t\t\t/usr/sbin/avahi-autoipd -c $interface && /usr/sbin/avahi-autoipd -k $interface\n\t\tfi\n\t\t/sbin/ifconfig $interface $ip $BROADCAST $NETMASK\n\t\tif [ -n \"$ipv6\" ] ; then\n\t\t\twait_for_ipv6_default_route\n\t\tfi\n\n\t\t# RFC3442: If the DHCP server returns both a Classless\n\t\t# Static Routes option and a Router option, the DHCP\n\t\t# client MUST ignore the Router option.\n\t\tif [ -n \"$staticroutes\" ]; then\n\t\t\techo \"deleting routers\"\n\t\t\troute -n | while read dest gw mask flags metric ref use iface; do\n\t\t\t\t[ \"$iface\" != \"$interface\" -o \"$gw\" = \"0.0.0.0\" ] || \\\n\t\t\t\t\troute del -net \"$dest\" netmask \"$mask\" gw \"$gw\" dev \"$interface\"\n\t\t\tdone\n\n\t\t\t# format: dest1/mask gw1 ... destn/mask gwn\n\t\t\tset -- $staticroutes\n\t\t\twhile [ -n \"$1\" -a -n \"$2\" ]; do\n\t\t\t\troute add -net \"$1\" gw \"$2\" dev \"$interface\"\n\t\t\t\tshift 2\n\t\t\tdone\n\t\telif [ -n \"$router\" ] ; then\n\t\t\techo \"deleting routers\"\n\t\t\twhile route del default gw 0.0.0.0 dev $interface 2> /dev/null; do\n\t\t\t\t:\n\t\t\tdone\n\n\t\t\tfor i in $router ; do\n\t\t\t\troute add default gw $i dev $interface\n\t\t\tdone\n\t\tfi\n\n\t\t# drop info from this interface\n\t\t# resolv.conf may be a symlink to /tmp/, so take care\n\t\tTMPFILE=$(mktemp)\n\t\tgrep -vE \"# $interface\\$\" $RESOLV_CONF > $TMPFILE\n\t\tcat $TMPFILE > $RESOLV_CONF\n\t\trm -f $TMPFILE\n\n\t\t# prefer rfc3397 domain search list (option 119) if available\n\t\tif [ -n \"$search\" ]; then\n\t\t\tsearch_list=$search\n\t\telif [ -n \"$domain\" ]; then\n\t\t\tsearch_list=$domain\n\t\tfi\n\n\t\t[ -n \"$search_list\" ] &&\n\t\t\techo \"search $search_list # $interface\" >> $RESOLV_CONF\n\n\t\tfor i in $dns ; do\n\t\t\techo adding dns $i\n\t\t\techo \"nameserver $i # $interface\" >> $RESOLV_CONF\n\t\tdone\n\t\t;;\nesac\n\nHOOK_DIR=\"$0.d\"\nfor hook in \"${HOOK_DIR}/\"*; do\n    [ -f \"${hook}\" -a -x \"${hook}\" ] || continue\n    \"${hook}\" \"$ACTION\"\ndone\n\nexit 0\n"
  },
  {
    "path": "package/bwm-ng/Config.in",
    "content": "config BR2_PACKAGE_BWM_NG\n\tbool \"bwm-ng\"\n\thelp\n\t  Bandwidth Monitor NG is a small and console-based live\n\t  network and disk-io bandwidth monitor for Linux, BSD,\n\t  Solaris, Mac OS X and others.\n\n\t  http://www.gropp.org/?id=projects&sub=bwm-ng\n"
  },
  {
    "path": "package/bwm-ng/bwm-ng.hash",
    "content": "# Locally calculated\nsha256  c1a552b6ff48ea3e4e10110a7c188861abc4750befc67c6caaba8eb3ecf67f46  bwm-ng-0.6.3.tar.gz\nsha256  8556cc15ba3c0a411bf7d94bac5870829fb725f294b450c724c1e0856a601556  COPYING\n"
  },
  {
    "path": "package/bwm-ng/bwm-ng.mk",
    "content": "################################################################################\n#\n# bwm-ng\n#\n################################################################################\n\nBWM_NG_VERSION = 0.6.3\nBWM_NG_SITE = $(call github,vgropp,bwm-ng,v$(BWM_NG_VERSION))\nBWM_NG_CONF_OPTS = --with-procnetdev --with-diskstats\nBWM_NG_LICENSE = GPL-2.0+\nBWM_NG_LICENSE_FILES = COPYING\nBWM_NG_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nBWM_NG_CONF_OPTS += --with-ncurses\nBWM_NG_DEPENDENCIES += ncurses\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/bzip2/0001-build-objects-twice.patch",
    "content": "Build objects twice for shared and static libraries\n\nThe existing Makefile causes problems on MIPS because the same object\nfiles (not compiled with -fPIC) are used in static and shared libraries.\nMIPS will refuce to link non-pic objects in shared libraries.\nWe fix this problems by creating a new rule for the shared library\nand build the shared objects as *.sho instead of *.o.\nThen, we use these objects to create the shared library.\n\nSigned-off-by: Markos Chandras <markos.chandras@imgtec.com>\n\nIndex: bzip2-1.0.6/Makefile-libbz2_so\n===================================================================\n--- bzip2-1.0.6.orig/Makefile-libbz2_so\n+++ bzip2-1.0.6/Makefile-libbz2_so\n@@ -25,13 +25,13 @@ SHELL=/bin/sh\n CC=gcc\n override CFLAGS += -fpic -fPIC -Wall\n \n-OBJS= blocksort.o  \\\n-      huffman.o    \\\n-      crctable.o   \\\n-      randtable.o  \\\n-      compress.o   \\\n-      decompress.o \\\n-      bzlib.o\n+OBJS= blocksort.sho  \\\n+      huffman.sho    \\\n+      crctable.sho   \\\n+      randtable.sho  \\\n+      compress.sho   \\\n+      decompress.sho \\\n+      bzlib.sho\n \n all: $(OBJS)\n \t$(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 $(OBJS)\n@@ -45,17 +45,5 @@ install:\n clean: \n \trm -f $(OBJS) bzip2.o libbz2.so.1.0.6 libbz2.so.1.0 bzip2-shared\n \n-blocksort.o: blocksort.c\n-\t$(CC) $(CFLAGS) -c blocksort.c\n-huffman.o: huffman.c\n-\t$(CC) $(CFLAGS) -c huffman.c\n-crctable.o: crctable.c\n-\t$(CC) $(CFLAGS) -c crctable.c\n-randtable.o: randtable.c\n-\t$(CC) $(CFLAGS) -c randtable.c\n-compress.o: compress.c\n-\t$(CC) $(CFLAGS) -c compress.c\n-decompress.o: decompress.c\n-\t$(CC) $(CFLAGS) -c decompress.c\n-bzlib.o: bzlib.c\n-\t$(CC) $(CFLAGS) -c bzlib.c\n+%.sho: %.c\n+\t$(CC) $(CFLAGS) -o $@ -c $<\n"
  },
  {
    "path": "package/bzip2/0002-improve-build-system.patch",
    "content": "Improve bzip2 build system\n\nThis patch makes a number of improvements to the bzip2 build system:\n\n * Remove the BIGFILE variable that was used to force largefile\n   support. Now, the user of the Makefile is supposed to pass\n   -D_FILE_OFFSET_BITS=64 when largefile support is desired.\n\n * Use override CFLAGS += so that additional CFLAGS can be passed on\n   the command line.\n\n * Removed \"forced\" CFLAGS -O2, -g and -Winline. We don't want them by\n   default, and want the build system to use its own ones.\n\n * When creating the symbolic links bzegrep, bzfgrep, bzless and\n   bzcmp, don't link them to an absolute path, or they'll point to\n   some path on the build machine.\n\n * Provide an install target for the shared library, which creates the\n   appropriate symbolic links.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/Makefile\n===================================================================\n--- a/Makefile\n+++ b/Makefile\n@@ -20,8 +20,7 @@\n RANLIB=ranlib\n LDFLAGS=\n \n-BIGFILES=-D_FILE_OFFSET_BITS=64\n-CFLAGS=-Wall -Winline -O2 -g $(BIGFILES)\n+override CFLAGS += -Wall\n \n # Where you want it installed when you do 'make install'\n PREFIX=/usr/local\n@@ -90,14 +89,14 @@\n \tcp -f libbz2.a $(PREFIX)/lib\n \tchmod a+r $(PREFIX)/lib/libbz2.a\n \tcp -f bzgrep $(PREFIX)/bin/bzgrep\n-\tln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzegrep\n-\tln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzfgrep\n+\tln -s -f bzgrep $(PREFIX)/bin/bzegrep\n+\tln -s -f bzgrep $(PREFIX)/bin/bzfgrep\n \tchmod a+x $(PREFIX)/bin/bzgrep\n \tcp -f bzmore $(PREFIX)/bin/bzmore\n-\tln -s -f $(PREFIX)/bin/bzmore $(PREFIX)/bin/bzless\n+\tln -s -f bzmore $(PREFIX)/bin/bzless\n \tchmod a+x $(PREFIX)/bin/bzmore\n \tcp -f bzdiff $(PREFIX)/bin/bzdiff\n-\tln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp\n+\tln -s -f bzdiff $(PREFIX)/bin/bzcmp\n \tchmod a+x $(PREFIX)/bin/bzdiff\n \tcp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1\n \tchmod a+r $(PREFIX)/man/man1/bzgrep.1\nIndex: b/Makefile-libbz2_so\n===================================================================\n--- a/Makefile-libbz2_so\n+++ b/Makefile-libbz2_so\n@@ -23,8 +23,7 @@\n \n SHELL=/bin/sh\n CC=gcc\n-BIGFILES=-D_FILE_OFFSET_BITS=64\n-CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES)\n+override CFLAGS += -fpic -fPIC -Wall\n \n OBJS= blocksort.o  \\\n       huffman.o    \\\n@@ -37,8 +36,11 @@\n all: $(OBJS)\n \t$(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.8 $(OBJS)\n \t$(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.8\n-\trm -f libbz2.so.1.0\n-\tln -s libbz2.so.1.0.8 libbz2.so.1.0\n+\n+install:\n+\tinstall -m 0755 -D libbz2.so.1.0.8 $(PREFIX)/lib/libbz2.so.1.0.8\n+\tln -sf libbz2.so.1.0.8 $(PREFIX)/lib/libbz2.so\n+\tln -sf libbz2.so.1.0.8 $(PREFIX)/lib/libbz2.so.1.0\n \n clean: \n \trm -f $(OBJS) bzip2.o libbz2.so.1.0.8 libbz2.so.1.0 bzip2-shared\n"
  },
  {
    "path": "package/bzip2/Config.in",
    "content": "config BR2_PACKAGE_BZIP2\n\tbool \"bzip2\"\n\thelp\n\t  Freely available, patent free, high-quality data compressor.\n\t  It typically compresses files to within 10% to 15% of the best\n\t  available techniques, while being around twice as fast at\n\t  compression and six times faster at decompression.\n\n\t  https://sourceware.org/bzip2/\n"
  },
  {
    "path": "package/bzip2/bzip2.hash",
    "content": "# From https://sourceware.org/pub/bzip2/sha512.sum\nsha512 083f5e675d73f3233c7930ebe20425a533feedeaaa9d8cc86831312a6581cefbe6ed0d08d2fa89be81082f2a5abdabca8b3c080bf97218a1bd59dc118a30b9f3  bzip2-1.0.8.tar.gz\n# Locally calculated\nsha256 c6dbbf828498be844a89eaa3b84adbab3199e342eb5cb2ed2f0d4ba7ec0f38a3  LICENSE\n"
  },
  {
    "path": "package/bzip2/bzip2.mk",
    "content": "################################################################################\n#\n# bzip2\n#\n################################################################################\n\nBZIP2_VERSION = 1.0.8\nBZIP2_SITE = https://sourceware.org/pub/bzip2\nBZIP2_INSTALL_STAGING = YES\nBZIP2_LICENSE = bzip2 license\nBZIP2_LICENSE_FILES = LICENSE\nBZIP2_CPE_ID_VENDOR = bzip\n\nifeq ($(BR2_STATIC_LIBS),)\ndefine BZIP2_BUILD_SHARED_CMDS\n\t$(TARGET_MAKE_ENV) \\\n\t\t$(MAKE) -C $(@D) -f Makefile-libbz2_so $(TARGET_CONFIGURE_OPTS)\nendef\nendif\n\ndefine BZIP2_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) \\\n\t\t$(MAKE) -C $(@D) libbz2.a bzip2 bzip2recover $(TARGET_CONFIGURE_OPTS)\n\t$(BZIP2_BUILD_SHARED_CMDS)\nendef\n\nifeq ($(BR2_STATIC_LIBS),)\ndefine BZIP2_INSTALL_STAGING_SHARED_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\t\t-f Makefile-libbz2_so PREFIX=$(STAGING_DIR)/usr -C $(@D) install\nendef\nendif\n\ndefine BZIP2_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\t\tPREFIX=$(STAGING_DIR)/usr -C $(@D) install\n\t$(BZIP2_INSTALL_STAGING_SHARED_CMDS)\nendef\n\nifeq ($(BR2_STATIC_LIBS),)\ndefine BZIP2_INSTALL_TARGET_SHARED_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\t\t-f Makefile-libbz2_so PREFIX=$(TARGET_DIR)/usr -C $(@D) install\nendef\nendif\n\n# make sure busybox doesn't get overwritten by make install\ndefine BZIP2_INSTALL_TARGET_CMDS\n\trm -f $(addprefix $(TARGET_DIR)/usr/bin/,bzip2 bunzip2 bzcat)\n\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\t\tPREFIX=$(TARGET_DIR)/usr -C $(@D) install\n\t$(BZIP2_INSTALL_TARGET_SHARED_CMDS)\nendef\n\ndefine HOST_BZIP2_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \\\n\t\t$(MAKE) -C $(@D) -f Makefile-libbz2_so\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \\\n\t\t$(MAKE) -C $(@D) libbz2.a bzip2 bzip2recover\nendef\n\ndefine HOST_BZIP2_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) \\\n\t\t$(MAKE) PREFIX=$(HOST_DIR) -C $(@D) install\n\t$(HOST_MAKE_ENV) \\\n\t\t$(MAKE) -f Makefile-libbz2_so PREFIX=$(HOST_DIR) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/c-ares/Config.in",
    "content": "config BR2_PACKAGE_C_ARES\n\tbool \"c-ares\"\n\thelp\n\t  C library for asynchronous DNS requests.\n\n\t  http://c-ares.haxx.se/\n"
  },
  {
    "path": "package/c-ares/c-ares.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  1a7d52a8a84a9fbffb1be9133c0f6e17217d91ea5a6fa61f6b4729cda78ebbcf  c-ares-1.18.1.tar.gz\n\n# Hash for license file\nsha256  db4eb63fe09daebdf57d3f79b091bb5ee5070c0d761040e83264e648d307af4c  LICENSE.md\n"
  },
  {
    "path": "package/c-ares/c-ares.mk",
    "content": "################################################################################\n#\n# c-ares\n#\n################################################################################\n\nC_ARES_VERSION = 1.18.1\nC_ARES_SITE = http://c-ares.haxx.se/download\nC_ARES_INSTALL_STAGING = YES\nC_ARES_CONF_OPTS = --with-random=/dev/urandom\nC_ARES_LICENSE = MIT\nC_ARES_LICENSE_FILES = LICENSE.md\nC_ARES_CPE_ID_VENDOR = c-ares_project\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/c-capnproto/Config.in",
    "content": "config BR2_PACKAGE_C_CAPNPROTO\n\tbool \"c-capnproto\"\n\tdepends on BR2_USE_MMU # capnproto\n\tdepends on BR2_HOST_GCC_AT_LEAST_5 # capnproto\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # capnproto\n\tdepends on BR2_INSTALL_LIBSTDCPP # capnproto\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # capnproto\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC # capnproto\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # capnproto\n\tdepends on BR2_TOOLCHAIN_HAS_UCONTEXT # capnproto\n\tselect BR2_PACKAGE_CAPNPROTO\n\thelp\n\t  A C plugin for Cap'n Proto. Generates the code generator\n\t  plugin for C. Requires regular Cap'n Proto and only\n\t  provides serialization (no RPC).\n\n\t  https://github.com/opensourcerouting/c-capnproto\n\ncomment \"c-capnproto needs host and target gcc >= 5 w/ C++14, threads, atomic, ucontext and not gcc bug 64735\"\n\tdepends on BR2_USE_MMU\n\tdepends on!BR2_HOST_GCC_AT_LEAST_5 || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \\\n\t\t!BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_HAS_ATOMIC || \\\n\t\tBR2_TOOLCHAIN_HAS_GCC_BUG_64735 || \\\n\t\t!BR2_TOOLCHAIN_HAS_UCONTEXT\n"
  },
  {
    "path": "package/c-capnproto/c-capnproto.hash",
    "content": "# Locally calculated\nsha256  1e35ef786bd8e418ff04fccb20ac881a87fa2fa76df1cbddc4774e35423bafb8  c-capnproto-9053ebe6eeb2ae762655b982e27c341cb568366d-br1.tar.gz\nsha256  27797e6c7dce96675d79ed250584d157b7a86405db6eb6fba9644e6d96d42c57  COPYING\n"
  },
  {
    "path": "package/c-capnproto/c-capnproto.mk",
    "content": "################################################################################\n#\n# c-capnproto\n#\n################################################################################\n\nC_CAPNPROTO_VERSION = 9053ebe6eeb2ae762655b982e27c341cb568366d\nC_CAPNPROTO_SITE = https://github.com/opensourcerouting/c-capnproto.git\nC_CAPNPROTO_SITE_METHOD = git\nC_CAPNPROTO_GIT_SUBMODULES = YES\nC_CAPNPROTO_LICENSE = MIT\nC_CAPNPROTO_LICENSE_FILES = COPYING\nC_CAPNPROTO_INSTALL_STAGING = YES\n\n# Fetched from git with no configure script\nC_CAPNPROTO_AUTORECONF = YES\n\n# As a plugin for capnproto's capnpc, requires capnproto. Needs to be on the\n# host to generate C code from message definitions.\nC_CAPNPROTO_DEPENDENCIES = host-c-capnproto capnproto\nHOST_C_CAPNPROTO_DEPENDENCIES = host-capnproto\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/c-icap/0001-Required-fixes-to-compile-and-run-under-cygwin.patch",
    "content": "From 1631a6c1f50e152b8a45d8279c96086e5636795b Mon Sep 17 00:00:00 2001\nFrom: Christos Tsantilas <christos@chtsanti.net>\nDate: Fri, 25 Jan 2019 06:42:22 -0800\nSubject: [PATCH] Required fixes to compile and run under cygwin\n\n[Retrieved (and backported) from:\nhttps://github.com/c-icap/c-icap-server/commit/1631a6c1f50e152b8a45d8279c96086e5636795b,\nwhich has the side effect of fixing the build with the musl C library]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile.am                 |  2 +-\n configure.ac                | 10 +++++++---\n header.c                    | 34 ----------------------------------\n include/header.h            |  8 --------\n modules/Makefile.am         | 34 ++++++++++++++++++++--------------\n modules/bdb_tables.c        | 17 +++++++++++++++--\n modules/shared_cache.c      | 12 ++++++++++++\n modules/sys_logger.c        | 13 +++++++++++++\n services/echo/Makefile.am   | 10 ++++++++--\n services/ex-206/Makefile.am | 10 ++++++++--\n utils/c-icap-mkbdb.c        |  8 ++++----\n 11 files changed, 88 insertions(+), 70 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 4c34033..ab80f4f 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -53,7 +53,7 @@ c_icap_SOURCES = aserver.c request.c cfg_param.c \\\n libicapapi_la_CFLAGS= $(INVISIBILITY_CFLAG) -I$(srcdir)/include/ -Iinclude/ @ZLIB_ADD_FLAG@ @OPENSSL_ADD_FLAG@ @BZLIB_ADD_FLAG@ @BROTLI_ADD_FLAG@ @PCRE_ADD_FLAG@ -DCI_BUILD_LIB\n \n libicapapi_la_LIBADD = @ZLIB_ADD_LDADD@ @BZLIB_ADD_LDADD@ @BROTLI_ADD_LDADD@ @PCRE_ADD_LDADD@ @DL_ADD_FLAG@ @THREADS_LDADD@ @OPENSSL_ADD_LDADD@\n-libicapapi_la_LDFLAGS= -shared -version-info @CICAPLIB_VERSION@ @THREADS_LDFLAGS@\n+libicapapi_la_LDFLAGS= -shared -version-info @CICAPLIB_VERSION@ @LIBS_LDFLAGS@ @THREADS_LDFLAGS@\n \n export EXT_PROGRAMS_MKLIB = @ZLIB_LNDIR_LDADD@ @BZLIB_LNDIR_LDADD@ @BROTLI_LNDIR_LDADD@ @PCRE_LNDIR_LDADD@ @OPENSSL_LNDIR_LDADD@\n \ndiff --git a/configure.ac b/configure.ac\nindex 405571b..8059cb7 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -45,12 +45,14 @@ case \"$host_os\" in\n \tCFLAGS=\"-D_REENTRANT $CFLAGS\"\n \tTHREADS_LDADD=\"-lpthread\"\n \tTHREADS_LDFLAGS=\"\"\n+\tLIBS_LDFLAGS=\"\"\n      ;;\n      solaris2.*)\n      \t  CFLAGS=\"-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS $CFLAGS\"\n           LIBS=\"-lsocket -lnsl -lrt $LIBS\"\n \t  THREADS_LDADD=\"-lpthread\"\n \t  THREADS_LDFLAGS=\"\"\n+\t  LIBS_LDFLAGS=\"\"\n       ;;\n       freebsd5*)\n ## If I understand how all those threading models works correctly\n@@ -69,6 +71,7 @@ case \"$host_os\" in\n       \tCFLAGS=\"-pthread -D_THREAD_SAFE  $CFLAGS\"\n \tTHREADS_LDADD=\"-XCClinker -lc_r\"\n \tTHREADS_LDFLAGS=\"\"\n+\tLIBS_LDFLAGS=\"\"\n ## FreeBSD has pthreads rwlocks from version 3 (I think)\n #\tAC_DEFINE(HAVE_PTHREADS_RWLOCK,1,[Define HAVE_PTHREADS_RWLOCK if pthreads library supports rwlocks])\n ##   1:1 threads\n@@ -82,24 +85,28 @@ case \"$host_os\" in\n         CFLAGS=\"-D_THREAD_SAFE  $CFLAGS\"\n         THREADS_LDADD=\"-XCClinker -lthr\"\n         THREADS_LDFLAGS=\"\"\n+\tLIBS_LDFLAGS=\"\"\n       ;;\n \n       cygwin*)\n \tCFLAGS=\"-D_REENTRANT $CFLAGS\"\n \tTHREADS_LDADD=\"-lpthread\"\n \tTHREADS_LDFLAGS=\"\";\n+\tLIBS_LDFLAGS=\"-no-undefined\"\n \tiscygwin=\"yes\"\n       ;;\n       *)\n       \tCFLAGS=\"-D_REENTRANT $CFLAGS\"\n \tTHREADS_LDADD=\"-lpthread\"\n \tTHREADS_LDFLAGS=\"\"\n+\tLIBS_LDFLAGS=\"\"\n       ;;\n esac\n \n TEST_LIBS=\"$TEST_LIBS $THREADS_LDADD\"\n AC_SUBST(THREADS_LDADD)\n AC_SUBST(THREADS_LDFLAGS)\n+AC_SUBST(LIBS_LDFLAGS)\n \n AC_DEFINE_UNQUOTED(C_ICAP_CONFIGURE_OPTIONS, \"$ac_configure_args\",\n                    [configure command line used to configure c-icap])\n@@ -984,9 +991,6 @@ LIBS=\"$LIBS $EXTRALIBS\"\n \n #Configure common flags\n MODULES_LIBADD=\"\"\n-if test a\"$iscygwin\" != a; then\n-     MODULES_LIBADD=\"-L../../ -licapapi\"\n-fi\n MODULES_CFLAGS=\"$INVISIBILITY_CFLAG -DCI_BUILD_MODULE\"\n AC_SUBST(MODULES_LIBADD)\n AC_SUBST(MODULES_CFLAGS)\ndiff --git a/header.c b/header.c\nindex 807a2e0..266b958 100644\n--- a/header.c\n+++ b/header.c\n@@ -110,21 +110,6 @@ const struct ci_error_code ci_error_codes[] = {\n     {505, \"Unsupported version\"}       /*ICAP version not supported by server. */\n };\n \n-/*\n-#ifdef __CYGWIN__\n-int ci_error_code(int ec){\n-     return (ec >= EC_100 && ec < EC_MAX ? ci_error_codes[ec].code:1000);\n-}\n-\n-const char *unknownerrorcode = \"UNKNOWN ERROR CODE\";\n-\n-const char *ci_error_code_string(int ec){\n-     return (ec >= EC_100 && ec < EC_MAX?ci_error_codes[ec].str:unknownerrorcode);\n-}\n-#endif\n-*/\n-\n-\n const char *ci_encaps_entities[] = {\n     \"req-hdr\",\n     \"res-hdr\",\n@@ -134,25 +119,6 @@ const char *ci_encaps_entities[] = {\n     \"opt-body\"\n };\n \n-#ifdef __CYGWIN__\n-\n-const char *unknownentity = \"UNKNOWN\";\n-const char *unknownmethod = \"UNKNOWN\";\n-\n-const char *ci_method_string(int method)\n-{\n-    return (method <= ICAP_RESPMOD\n-            && method >= ICAP_OPTIONS ? CI_Methods[method] : unknownmethod);\n-}\n-\n-\n-const char *ci_encaps_entity_string(int e)\n-{\n-    return (e <= ICAP_OPT_BODY\n-            && e >= ICAP_REQ_HDR ? CI_EncapsEntities[e] : unknownentity);\n-}\n-#endif\n-\n ci_headers_list_t *ci_headers_create()\n {\n     ci_headers_list_t *h;\ndiff --git a/include/header.h b/include/header.h\nindex 4cab365..ed2de88 100644\n--- a/include/header.h\n+++ b/include/header.h\n@@ -52,16 +52,8 @@ enum ci_encapsulated_entities {ICAP_REQ_HDR, ICAP_RES_HDR,\n                               };\n CI_DECLARE_DATA extern const char *ci_encaps_entities[];\n \n-#ifdef __CYGWIN__\n-\n-const char *ci_encaps_entity_string(int e);\n-\n-#else\n-\n #define ci_encaps_entity_string(e) (e <= ICAP_OPT_BODY && e >= ICAP_REQ_HDR?ci_encaps_entities[e]:\"UNKNOWN\")\n \n-#endif\n-\n /**\n  \\typedef ci_headers_list_t\n  \\ingroup HEADERS\ndiff --git a/modules/Makefile.am b/modules/Makefile.am\nindex e6e9270..2d43a60 100644\n--- a/modules/Makefile.am\n+++ b/modules/Makefile.am\n@@ -21,38 +21,44 @@ endif\n \n AM_CPPFLAGS=-I$(top_srcdir)/ -I$(top_srcdir)/include/ -I$(top_builddir)/include/\n \n-sys_logger_la_LIBADD = @MODULES_LIBADD@\n+if ISCYGWIN\n+MODS_LIB_ADD=$(top_builddir)/libicapapi.la\n+else\n+MODS_LIB_ADD=\n+endif\n+\n+sys_logger_la_LIBADD = $(MODS_LIB_ADD)\n sys_logger_la_CFLAGS=  @MODULES_CFLAGS@ @OPENSSL_ADD_FLAG@\n-sys_logger_la_LDFLAGS= -module -avoid-version\n+sys_logger_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@\n sys_logger_la_SOURCES = sys_logger.c\n \n-dnsbl_tables_la_LIBADD = @MODULES_LIBADD@\n+dnsbl_tables_la_LIBADD = $(MODS_LIB_ADD)\n dnsbl_tables_la_CFLAGS=  @MODULES_CFLAGS@ @OPENSSL_ADD_FLAG@\n-dnsbl_tables_la_LDFLAGS= -module -avoid-version\n+dnsbl_tables_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@\n dnsbl_tables_la_SOURCES = dnsbl_tables.c\n \n-perl_handler_la_LIBADD = @MODULES_LIBADD@ @perllib@  -L@perlcore@ -lperl\n+perl_handler_la_LIBADD = $(MODS_LIB_ADD) @perllib@  -L@perlcore@ -lperl\n perl_handler_la_CFLAGS=  @MODULES_CFLAGS@ @perlccflags@ -I@perlcore@\n-perl_handler_la_LDFLAGS= -module -avoid-version @perlldflags@\n+perl_handler_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@ @perlldflags@\n perl_handler_la_SOURCES = perl_handler.c\n \n \n-bdb_tables_la_LIBADD = @MODULES_LIBADD@ @BDB_ADD_LDADD@\n+bdb_tables_la_LIBADD = $(MODS_LIB_ADD) @BDB_ADD_LDADD@\n bdb_tables_la_CFLAGS=  @MODULES_CFLAGS@ @BDB_ADD_FLAG@\n-bdb_tables_la_LDFLAGS= -module -avoid-version\n+bdb_tables_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@\n bdb_tables_la_SOURCES = bdb_tables.c\n \n-ldap_module_la_LIBADD = @MODULES_LIBADD@ @LDAP_ADD_LDADD@ $(top_builddir)/libicapapi.la\n+ldap_module_la_LIBADD = $(MODS_LIB_ADD) @LDAP_ADD_LDADD@\n ldap_module_la_CFLAGS=  @MODULES_CFLAGS@ @LDAP_ADD_FLAG@\n-ldap_module_la_LDFLAGS= -module -avoid-version\n+ldap_module_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@\n ldap_module_la_SOURCES = ldap_module.c\n \n-memcached_cache_la_LIBADD=  @MODULES_LIBADD@ @MEMCACHED_ADD_LDADD@\n+memcached_cache_la_LIBADD=  $(MODS_LIB_ADD) @MEMCACHED_ADD_LDADD@\n memcached_cache_la_CFLAGS=  @MODULES_CFLAGS@ @MEMCACHED_ADD_FLAG@\n-memcached_cache_la_LDFLAGS= -module -avoid-version\n+memcached_cache_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@\n memcached_cache_la_SOURCES= memcached.c\n \n-shared_cache_la_LIBADD= @MODULES_LIBADD@\n+shared_cache_la_LIBADD= $(MODS_LIB_ADD)\n shared_cache_la_CFLAGS= @OPENSSL_ADD_FLAG@\n-shared_cache_la_LDFLAGS= -module -avoid-version\n+shared_cache_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@\n shared_cache_la_SOURCES= shared_cache.c\ndiff --git a/modules/bdb_tables.c b/modules/bdb_tables.c\nindex b8459be..1e908a9 100644\n--- a/modules/bdb_tables.c\n+++ b/modules/bdb_tables.c\n@@ -176,8 +176,8 @@ void *bdb_table_open(struct ci_lookup_table *table)\n \n     /*We can not fork a Berkeley DB table, so we have to\n       open bdb tables for every child, on childs start-up procedure*/\n-    register_command_extend(\"openBDBtable\", CHILD_START_CMD, table,\n-                            command_real_open_table);\n+    ci_command_register_action(\"openBDBtable\", CHILD_START_CMD, table,\n+\t\t\t       command_real_open_table);\n \n     return table->data;\n }\n@@ -257,3 +257,16 @@ void  bdb_table_release_result(struct ci_lookup_table *table,void **val)\n {\n     ci_buffer_free(val);\n }\n+\n+ #ifdef __CYGWIN__\n+#include <w32api/windows.h>\n+void ci_command_register_action(const char *name, int type, void *data,\n+\t\t\t\tvoid (*command_action) (const char *name, int type, void *data))\n+ {\n+   typedef void (*RA)(const char *, int, void *, void(*)(const char *, int, void *));\n+   RA fn;\n+   fn = (RA)GetProcAddress(GetModuleHandle(NULL), \"ci_command_register_action\");\n+   if (fn)\n+     (*fn)(name, type, data, command_action);\n+ }\n+#endif\ndiff --git a/modules/shared_cache.c b/modules/shared_cache.c\nindex 103b760..a79d51a 100644\n--- a/modules/shared_cache.c\n+++ b/modules/shared_cache.c\n@@ -345,3 +345,15 @@ void ci_shared_cache_destroy(struct ci_cache *cache)\n         ci_shared_mem_detach(&data->id);\n }\n \n+#ifdef __CYGWIN__\n+#include <w32api/windows.h>\n+void ci_command_register_action(const char *name, int type, void *data,\n+\t\t\t\tvoid (*command_action) (const char *name, int type, void *data))\n+ {\n+   typedef void (*RA)(const char *, int, void *, void(*)(const char *, int, void *));\n+   RA fn;\n+   fn = (RA)GetProcAddress(GetModuleHandle(NULL), \"ci_command_register_action\");\n+   if (fn)\n+     (*fn)(name, type, data, command_action);\n+ }\n+#endif\ndiff --git a/modules/sys_logger.c b/modules/sys_logger.c\nindex 1c47753..1764b0d 100644\n--- a/modules/sys_logger.c\n+++ b/modules/sys_logger.c\n@@ -60,7 +60,20 @@ int cfg_syslog_access(const char *directive, const char **argv, void *setdata);\n    functions declared in log.c. This file is not included in c-icap library\n    but defined in primary c-icap binary.\n */\n+#ifdef __CYGWIN__\n+#include <w32api/windows.h>\n+char *logformat_fmt(const char *name)\n+{\n+  typedef char* (*LF_FMT)(const char *);\n+  LF_FMT fn;\n+  fn = (LF_FMT)GetProcAddress(GetModuleHandle(NULL), \"logformat_fmt\");\n+  if (fn)\n+    return (*fn)(name);\n+  return NULL;\n+}\n+#else\n extern char *logformat_fmt(const char *name);\n+#endif\n \n /*Configuration Table .....*/\n static struct ci_conf_entry conf_variables[] = {\ndiff --git a/services/echo/Makefile.am b/services/echo/Makefile.am\nindex 402c8f9..7d701b1 100644\n--- a/services/echo/Makefile.am\n+++ b/services/echo/Makefile.am\n@@ -3,9 +3,15 @@ pkglib_LTLIBRARIES=srv_echo.la\n \n AM_CPPFLAGS=-I$(top_srcdir)/ -I$(top_srcdir)/include/ -I$(top_builddir)/include/\n \n-srv_echo_la_LIBADD = @MODULES_LIBADD@\n+if ISCYGWIN\n+MODS_LIB_ADD=$(top_builddir)/libicapapi.la\n+else\n+MODS_LIB_ADD=\n+endif\n+\n+srv_echo_la_LIBADD = $(MODS_LIB_ADD)\n srv_echo_la_CFLAGS=  @MODULES_CFLAGS@ @OPENSSL_ADD_FLAG@\n-srv_echo_la_LDFLAGS= -module -avoid-version\n+srv_echo_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@\n srv_echo_la_SOURCES = srv_echo.c\n \n \ndiff --git a/services/ex-206/Makefile.am b/services/ex-206/Makefile.am\nindex 44bbf21..ff73399 100644\n--- a/services/ex-206/Makefile.am\n+++ b/services/ex-206/Makefile.am\n@@ -3,8 +3,14 @@ pkglib_LTLIBRARIES=srv_ex206.la\n \n AM_CPPFLAGS=-I$(top_srcdir)/ -I$(top_srcdir)/include/ -I$(top_builddir)/include/\n \n-srv_ex206_la_LIBADD = @MODULES_LIBADD@\n+if ISCYGWIN\n+MODS_LIB_ADD=$(top_builddir)/libicapapi.la\n+else\n+MODS_LIB_ADD=\n+endif\n+\n+srv_ex206_la_LIBADD = $(MODS_LIB_ADD)\n srv_ex206_la_CFLAGS=  @MODULES_CFLAGS@ @OPENSSL_ADD_FLAG@\n-srv_ex206_la_LDFLAGS= -module -avoid-version\n+srv_ex206_la_LDFLAGS= -module -avoid-version @LIBS_LDFLAGS@\n srv_ex206_la_SOURCES = srv_ex206.c\n \ndiff --git a/utils/c-icap-mkbdb.c b/utils/c-icap-mkbdb.c\nindex c29a46f..326ee1c 100644\n--- a/utils/c-icap-mkbdb.c\n+++ b/utils/c-icap-mkbdb.c\n@@ -23,7 +23,7 @@ char *dbfile = NULL;\n int DUMP_MODE = 0;\n int VERSION_MODE = 0;\n int USE_DBTREE = 0;\n-long int PAGE_SIZE;\n+long int DB_PAGE_SIZE;\n \n ci_mem_allocator_t *allocator = NULL;\n int cfg_set_type(const char *directive, const char **argv, void *setdata);\n@@ -52,7 +52,7 @@ static struct ci_options_entry options[] = {\n         \"The type of values\"\n     },\n     {\n-        \"-p\", \"page_size\", &PAGE_SIZE, ci_cfg_size_long,\n+        \"-p\", \"page_size\", &DB_PAGE_SIZE, ci_cfg_size_long,\n         \"The page size to use for the database\"\n     },\n     {\n@@ -107,8 +107,8 @@ int open_db(char *path)\n         return 0;\n     }\n \n-    if (PAGE_SIZE > 512 && PAGE_SIZE <= 64*1024)\n-        db->set_pagesize(db, (uint32_t)PAGE_SIZE);\n+    if (DB_PAGE_SIZE > 512 && DB_PAGE_SIZE <= 64*1024)\n+        db->set_pagesize(db, (uint32_t)DB_PAGE_SIZE);\n \n     if ((ret = db->open(db, NULL, path, NULL,\n                         (USE_DBTREE ? DB_BTREE : DB_HASH),\n"
  },
  {
    "path": "package/c-icap/Config.in",
    "content": "config BR2_PACKAGE_C_ICAP\n\tbool \"c-icap\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  c-icap is an implementation of an ICAP server. It can be\n\t  used with HTTP proxies that support the ICAP protocol to\n\t  implement content adaptation and filtering services.  Most\n\t  of the commercial HTTP proxies must support the ICAP\n\t  protocol.  The open source Squid 3.x proxy server supports\n\t  it.\n\n\t  http://c-icap.sourceforge.net/\n\ncomment \"c-icap needs a toolchain w/ threads and dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/c-icap/S96cicap",
    "content": "#!/bin/sh\n\n# (Re)create directories\nmkdir -p /var/run/c-icap\nmkdir -p /var/log/c-icap\n\ncase \"$1\" in\n    start)\n\tprintf \"Starting c-icap server: \"\n\tstart-stop-daemon -S -q -b -m -p /var/run/c-icap.pid \\\n\t\t\t  -x /usr/bin/c-icap -- -N\n\t[ $? == 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\n    stop)\n\tprintf \"Stopping c-icap server: \"\n\tstart-stop-daemon -K -q -p /var/run/c-icap.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\n    restart|reload)\n\t$0 stop\n\tsleep 1\n\t$0 start\n\t;;\n     *)\n\techo \"Usage: /etc/init.d/S96cicap {start|stop|restart|reload}\"\n\texit 1\nesac\n"
  },
  {
    "path": "package/c-icap/c-icap.hash",
    "content": "# Retrieved from https://sourceforge.net/projects/c-icap/files/c-icap/0.5.x/\nmd5  82fd2fba1a08a8a0cf3567fe24aa035d  c_icap-0.5.7.tar.gz\nsha1  3b2470e00abd1418bec3a440d3073d7a6231c4c1  c_icap-0.5.7.tar.gz\n# Locally calculated\nsha256  01ef17d7999d3476fe705abc56d0da562c2f180aafe08fc1269f419cad8521a9  c_icap-0.5.7.tar.gz\nsha256  36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89  COPYING\n"
  },
  {
    "path": "package/c-icap/c-icap.mk",
    "content": "################################################################################\n#\n# c-icap\n#\n################################################################################\n\nC_ICAP_VERSION = 0.5.7\nC_ICAP_SOURCE = c_icap-$(C_ICAP_VERSION).tar.gz\nC_ICAP_SITE = http://downloads.sourceforge.net/c-icap\nC_ICAP_LICENSE = LGPL-2.1+\nC_ICAP_LICENSE_FILES = COPYING\nC_ICAP_CPE_ID_VENDOR = c-icap_project\nC_ICAP_INSTALL_STAGING = YES\nC_ICAP_CONFIG_SCRIPTS = c-icap-config c-icap-libicapapi-config\nC_ICAP_CONF_OPTS = \\\n\t--without-perl \\\n\t--enable-large-files \\\n\t--enable-ipv6\n# Pre-seed cache variables for tests done with AC_TRY_RUN that are not\n# cross-compile friendly\nC_ICAP_CONF_ENV = ac_cv_10031b_ipc_sem=yes ac_cv_fcntl=yes\n# c-icap adds '-Wl,-rpath -Wl,/usr/lib' to the link command line. This\n# causes the linker to search for libraries that are listed as NEEDED\n# in the libicapapi.so ELF header in host libraries, which breaks the\n# build. The affected library is libz. Forcing AUTORECONF adds -lz to\n# the link command line, and that makes the linker look first in\n# sysroot, thus avoiding the build breakage.\nC_ICAP_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_BERKELEYDB),y)\nC_ICAP_CONF_OPTS += --with-bdb\nC_ICAP_DEPENDENCIES += berkeleydb\nelse\nC_ICAP_CONF_OPTS += --without-bdb\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nC_ICAP_CONF_OPTS += --with-bzlib\nC_ICAP_DEPENDENCIES += bzip2\nelse\nC_ICAP_CONF_OPTS += --without-bzlib\nendif\n\nifeq ($(BR2_PACKAGE_LIBMEMCACHED),y)\nC_ICAP_CONF_OPTS += --with-memcached\nC_ICAP_DEPENDENCIES += libmemcached\nelse\nC_ICAP_CONF_OPTS += --without-memcached\nendif\n\nifeq ($(BR2_PACKAGE_OPENLDAP),y)\nC_ICAP_CONF_OPTS += --with-ldap\nC_ICAP_DEPENDENCIES += openldap\nelse\nC_ICAP_CONF_OPTS += --without-ldap\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nC_ICAP_CONF_OPTS += --with-openssl\nC_ICAP_DEPENDENCIES += openssl\nelse\nC_ICAP_CONF_OPTS += --without-openssl\nendif\n\nifeq ($(BR2_PACKAGE_PCRE),y)\nC_ICAP_CONF_OPTS += --with-pcre\nC_ICAP_DEPENDENCIES += pcre\nelse\nC_ICAP_CONF_OPTS += --without-pcre\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nC_ICAP_CONF_OPTS += --with-zlib\nC_ICAP_DEPENDENCIES += zlib\nelse\nC_ICAP_CONF_OPTS += --without-zlib\nendif\n\ndefine C_ICAP_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/c-icap/S96cicap $(TARGET_DIR)/etc/init.d/S96cicap\nendef\n\n# Tweak the installation:\n#  - Removed unneeded sample configuration files (c-icap.*.default),\n#    since some real ones are also installed\n#  - Tweak some paths in the c-icap.conf configuration file\n#  - Tweak the -config scripts, because the generic\n#    <pkg>_CONFIG_SCRIPTS logic doesn't tweak them enough\ndefine C_ICAP_TUNE_INSTALLATION\n\t$(RM) -f $(TARGET_DIR)/etc/c-icap.*.default\n\t$(SED) 's%/usr/etc/%/etc/%' $(TARGET_DIR)/etc/c-icap.conf\n\t$(SED) 's%/usr/var/%/var/%' $(TARGET_DIR)/etc/c-icap.conf\n\t$(SED) 's%INCDIR=.*%INCDIR=$(STAGING_DIR)/usr/include%' \\\n\t\t$(STAGING_DIR)/usr/bin/{c-icap,c-icap-libicapapi}-config\n\t$(SED) 's%INCDIR2=.*%INCDIR2=$(STAGING_DIR)/usr/include/c_icap%' \\\n\t\t$(STAGING_DIR)/usr/bin/{c-icap,c-icap-libicapapi}-config\n\t$(SED) 's%-L$$LIBDIR %%' $(STAGING_DIR)/usr/bin/c-icap-libicapapi-config\nendef\n\nC_ICAP_POST_INSTALL_TARGET_HOOKS += C_ICAP_TUNE_INSTALLATION\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/c-icap-modules/Config.in",
    "content": "config BR2_PACKAGE_C_ICAP_MODULES\n\tbool \"c-icap-modules\"\n\tdepends on BR2_PACKAGE_C_ICAP\n\thelp\n\t  Additionals modules for c-icap server.\n\n\t  http://c-icap.sourceforge.net/\n"
  },
  {
    "path": "package/c-icap-modules/c-icap-modules.hash",
    "content": "# From http://sourceforge.net/projects/c-icap/files/c-icap-modules/0.5.x/\nmd5  2f8c174f7a5414616f5a0a976ac4a221  c_icap_modules-0.5.4.tar.gz\nsha1  ec7bb138d7775895cd8b2e12adc41dbf48eba1b7  c_icap_modules-0.5.4.tar.gz\n\n# Locally calculated\nsha256  87409920c66027204e9cca5f20e137b63cd12daf6dfcd85c1fa62ab2bd1c57cc  c_icap_modules-0.5.4.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/c-icap-modules/c-icap-modules.mk",
    "content": "################################################################################\n#\n# c-icap-modules\n#\n################################################################################\n\nC_ICAP_MODULES_VERSION = 0.5.4\nC_ICAP_MODULES_SOURCE = c_icap_modules-$(C_ICAP_MODULES_VERSION).tar.gz\nC_ICAP_MODULES_SITE = http://downloads.sourceforge.net/c-icap\nC_ICAP_MODULES_LICENSE = GPL-2.0+\nC_ICAP_MODULES_LICENSE_FILES = COPYING\nC_ICAP_MODULES_DEPENDENCIES = c-icap\n\nC_ICAP_MODULES_CONF_OPTS = \\\n\t--with-c-icap=$(STAGING_DIR)/usr/ \\\n\t--without-clamav\n\nifeq ($(BR2_PACKAGE_BERKELEYDB),y)\nC_ICAP_MODULES_CONF_OPTS += --with-bdb\nC_ICAP_MODULES_DEPENDENCIES += berkeleydb\nelse\nC_ICAP_MODULES_CONF_OPTS += --without-bdb\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/c-periphery/Config.in",
    "content": "config BR2_PACKAGE_C_PERIPHERY\n\tbool \"c-periphery\"\n\thelp\n\t  c-periphery is a set of C wrapper functions for GPIO, SPI,\n\t  I2C, MMIO, and Serial peripheral I/O interface access in\n\t  userspace Linux. The c-periphery wrappers simplify and\n\t  consolidate the native Linux APIs to these\n\t  interfaces. c-periphery is useful in embedded Linux\n\t  environments (including BeagleBone, Raspberry Pi,\n\t  etc. platforms) for interfacing with external\n\t  peripherals. c-periphery is re-entrant, uses static\n\t  allocations, has no dependencies outside the standard C\n\t  library and Linux, compiles into a static library for easy\n\t  integration with other projects, and is MIT licensed.\n\n\t  https://github.com/vsergeev/c-periphery\n"
  },
  {
    "path": "package/c-periphery/c-periphery.hash",
    "content": "# Locally calculated\nsha256  ba298aac5c1f6ebe2b89ed623a2f678bedfa3b9dc78aaf4f0534a1dd304629da  c-periphery-2.3.1.tar.gz\nsha256  7121a0a2ba36ed9388be2f1a916f0e3584d8e49cc7888fbcfcf83bab2a8bebef  LICENSE\n"
  },
  {
    "path": "package/c-periphery/c-periphery.mk",
    "content": "################################################################################\n#\n# c-periphery\n#\n################################################################################\n\nC_PERIPHERY_VERSION = 2.3.1\nC_PERIPHERY_SITE = $(call github,vsergeev,c-periphery,v$(C_PERIPHERY_VERSION))\nC_PERIPHERY_INSTALL_STAGING = YES\nC_PERIPHERY_LICENSE = MIT\nC_PERIPHERY_LICENSE_FILES = LICENSE\nC_PERIPHERY_CPE_ID_VENDOR = c-periphery_project\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/ca-certificates/0001-mozilla-certdata2pem.py-make-cryptography-module-opt.patch",
    "content": "From bf18b564122e8f976681a2398862fde1eafd84ba Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Thu, 6 Jan 2022 23:15:00 +0100\nSubject: [PATCH] mozilla/certdata2pem.py: make cryptography module optional\n\nThe Python cryptography module is only used to verify if trusted\ncertificates have expired, but this is only a warning. For some build\nsystems and distributions, providing Python cryptography is costly,\nespecially since it's now partly written in Rust.\n\nAs the check is only a warning, it's anyway going to be overlooked by\nmost people. This commit changes the check to be optional: if the\ncryptography Python module is there, we perform the check, otherwise\nthe check is skipped.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n mozilla/certdata2pem.py | 18 ++++++++++--------\n 1 file changed, 10 insertions(+), 8 deletions(-)\n\ndiff --git a/mozilla/certdata2pem.py b/mozilla/certdata2pem.py\nindex ede23d4..a6261f8 100644\n--- a/mozilla/certdata2pem.py\n+++ b/mozilla/certdata2pem.py\n@@ -28,9 +28,6 @@ import sys\n import textwrap\n import io\n \n-from cryptography import x509\n-\n-\n objects = []\n \n # Dirty file parser.\n@@ -122,11 +119,16 @@ for obj in objects:\n         if not obj['CKA_LABEL'] in trust or not trust[obj['CKA_LABEL']]:\n             continue\n \n-        cert = x509.load_der_x509_certificate(obj['CKA_VALUE'])\n-        if cert.not_valid_after < datetime.datetime.now():\n-            print('!'*74)\n-            print('Trusted but expired certificate found: %s' % obj['CKA_LABEL'])\n-            print('!'*74)\n+        try:\n+            from cryptography import x509\n+\n+            cert = x509.load_der_x509_certificate(obj['CKA_VALUE'])\n+            if cert.not_valid_after < datetime.datetime.now():\n+                print('!'*74)\n+                print('Trusted but expired certificate found: %s' % obj['CKA_LABEL'])\n+                print('!'*74)\n+        except ImportError:\n+            pass\n \n         bname = obj['CKA_LABEL'][1:-1].replace('/', '_')\\\n                                       .replace(' ', '_')\\\n-- \n2.33.1\n\n"
  },
  {
    "path": "package/ca-certificates/Config.in",
    "content": "config BR2_PACKAGE_CA_CERTIFICATES\n\tbool \"CA Certificates\"\n\thelp\n\t  This package includes PEM files of CA certificates to allow\n\t  SSL-based applications to check for the authenticity of SSL\n\t  connections.\n\n\t  It includes, among others, certificate authorities used by the\n\t  Debian infrastructure and those shipped with Mozilla's\n\t  browsers.\n\n\t  https://salsa.debian.org/debian/ca-certificates\n"
  },
  {
    "path": "package/ca-certificates/ca-certificates.hash",
    "content": "# hashes from: $(CA_CERTIFICATES_SITE)/ca-certificates_$(CA_CERTIFICATES_VERSION).dsc :\nsha1  bce5a8fac45456dbebf256f3a812c6cd0a853e3e  ca-certificates_20211016.tar.xz\nsha256  2ae9b6dc5f40c25d6d7fe55e07b54f12a8967d1955d3b7b2f42ee46266eeef88  ca-certificates_20211016.tar.xz\n\n# Locally computed\nsha256  e85e1bcad3a915dc7e6f41412bc5bdeba275cadd817896ea0451f2140a93967c  debian/copyright\n"
  },
  {
    "path": "package/ca-certificates/ca-certificates.mk",
    "content": "################################################################################\n#\n# ca-certificates\n#\n################################################################################\n\nCA_CERTIFICATES_VERSION = 20211016\nCA_CERTIFICATES_SOURCE = ca-certificates_$(CA_CERTIFICATES_VERSION).tar.xz\nCA_CERTIFICATES_SITE = https://snapshot.debian.org/archive/debian/20211022T144903Z/pool/main/c/ca-certificates\nCA_CERTIFICATES_DEPENDENCIES = host-openssl host-python3\nCA_CERTIFICATES_LICENSE = GPL-2.0+ (script), MPL-2.0 (data)\nCA_CERTIFICATES_LICENSE_FILES = debian/copyright\n\ndefine CA_CERTIFICATES_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) clean all\nendef\n\ndefine CA_CERTIFICATES_INSTALL_TARGET_CMDS\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/share/ca-certificates\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/ssl/certs\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install DESTDIR=$(TARGET_DIR)\n\trm -f $(TARGET_DIR)/usr/sbin/update-ca-certificates\n\n\t# Remove any existing certificates under /etc/ssl/certs\n\trm -f $(TARGET_DIR)/etc/ssl/certs/*\n\n\t# Create symlinks to certificates under /etc/ssl/certs\n\t# and generate the bundle\n\tcd $(TARGET_DIR) ;\\\n\tfor i in `find usr/share/ca-certificates -name \"*.crt\" | LC_COLLATE=C sort` ; do \\\n\t\tln -sf ../../../$$i etc/ssl/certs/`basename $${i} .crt`.pem ;\\\n\t\tcat $$i ;\\\n\tdone >$(@D)/ca-certificates.crt\n\n\t# Create symlinks to the certificates by their hash values\n\t$(HOST_DIR)/bin/c_rehash $(TARGET_DIR)/etc/ssl/certs\n\n\t# Install the certificates bundle\n\t$(INSTALL) -D -m 644 $(@D)/ca-certificates.crt \\\n\t\t$(TARGET_DIR)/etc/ssl/certs/ca-certificates.crt\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/cache-calibrator/0001-Fix-conflicting-round-function.patch",
    "content": "From 39ac7268c4350040976005da98daf10edf676d3e Mon Sep 17 00:00:00 2001\nFrom: Stephan Hoffmann <sho@relinux.de>\nDate: Mon, 28 Jan 2013 17:32:10 +0100\nSubject: [PATCH] Fix conflicting round() function\n\ncalibrator.c defines a local round() function that conflicts\nwith the one from the standard library.\n\nThis is fixed by renaming the local function.\n\nSigned-off-by: Stephan Hoffmann <sho@relinux.de>\n---\n calibrator.c |   30 +++++++++++++++---------------\n 1 files changed, 15 insertions(+), 15 deletions(-)\n\ndiff --git a/calibrator.c b/calibrator.c\nindex e045dfd..8471c04 100644\n--- a/calibrator.c\n+++ b/calibrator.c\n@@ -128,7 +128,7 @@ void ErrXit(char *format, ...) {\n \texit(1);\n }\n \n-lng round(dbl x)\n+lng lng_round(dbl x)\n {\n \treturn (lng)(x + 0.5);\n }\n@@ -890,16 +890,16 @@ void plotCache(cacheInfo *cache, lng **result, lng MHz, char *fn, FILE *fp, lng\n \tfprintf(fp, \")\\n\");\n \tfprintf(fp, \"set y2tics\");\n \tfor (l = 0, s = \" (\"; l <= cache->levels; l++, s = \", \") {\n-\t\tif (!delay)\tfprintf(fp, \"%s'(%ld)' %f\", s, round(CYperIt(cache->latency1[l] - delay)), NSperIt(cache->latency1[l] - delay));\n-\t\t\telse\tfprintf(fp, \"%s'(%ld)' %f\", s, round(CYperIt(cache->latency2[l] - delay)), NSperIt(cache->latency2[l] - delay));\n+\t\tif (!delay)\tfprintf(fp, \"%s'(%ld)' %f\", s, lng_round(CYperIt(cache->latency1[l] - delay)), NSperIt(cache->latency1[l] - delay));\n+\t\t\telse\tfprintf(fp, \"%s'(%ld)' %f\", s, lng_round(CYperIt(cache->latency2[l] - delay)), NSperIt(cache->latency2[l] - delay));\n \t}\n \tfor (y = 1; y <= yh; y *= 10) {\n \t\tfprintf(fp, \"%s'%1.3g' %ld\", s, (dbl)(y * MHz) / 1000.0, y);\n \t}\n \tfprintf(fp, \")\\n\");\n \tfor (l = 0; l <= cache->levels; l++) {\n-\t\tif (!delay)\tz = (dbl)round(CYperIt(cache->latency1[l] - delay)) * 1000.0 / (dbl)MHz;\n-\t\t\telse\tz = (dbl)round(CYperIt(cache->latency2[l] - delay)) * 1000.0 / (dbl)MHz;\n+\t\tif (!delay)\tz = (dbl)lng_round(CYperIt(cache->latency1[l] - delay)) * 1000.0 / (dbl)MHz;\n+\t\t\telse\tz = (dbl)lng_round(CYperIt(cache->latency2[l] - delay)) * 1000.0 / (dbl)MHz;\n \t\tfprintf(fp, \"set label %ld '(%1.3g)  ' at %f,%f right\\n\", l + 1, z, xl, z);\n \t\tfprintf(fp, \"set arrow %ld from %f,%f to %f,%f nohead lt 0\\n\", l + 1, xl, z, xh, z);\n \t}\n@@ -986,16 +986,16 @@ void plotTLB(TLBinfo *TLB, lng **result, lng MHz, char *fn, FILE *fp, lng delay)\n \tfprintf(fp, \"%s'<L1>' %ld)\\n\", s, TLB->mincachelines);\n \tfprintf(fp, \"set y2tics\");\n \tfor (l = 0, s = \" (\"; l <= TLB->levels; l++, s = \", \") {\n-\t\tif (!delay)\tfprintf(fp, \"%s'(%ld)' %f\", s, round(CYperIt(TLB->latency1[l] - delay)), NSperIt(TLB->latency1[l] - delay));\n-\t\t\telse\tfprintf(fp, \"%s'(%ld)' %f\", s, round(CYperIt(TLB->latency2[l] - delay)), NSperIt(TLB->latency2[l] - delay));\n+\t\tif (!delay)\tfprintf(fp, \"%s'(%ld)' %f\", s, lng_round(CYperIt(TLB->latency1[l] - delay)), NSperIt(TLB->latency1[l] - delay));\n+\t\t\telse\tfprintf(fp, \"%s'(%ld)' %f\", s, lng_round(CYperIt(TLB->latency2[l] - delay)), NSperIt(TLB->latency2[l] - delay));\n \t}\n \tfor (y = 1; y <= yh; y *= 10) {\n \t\tfprintf(fp, \"%s'%1.3g' %ld\", s, (dbl)(y * MHz) / 1000.0, y);\n \t}\n \tfprintf(fp, \")\\n\");\n \tfor (l = 0; l <= TLB->levels; l++) {\n-\t\tif (!delay)\tz = (dbl)round(CYperIt(TLB->latency1[l] - delay)) * 1000.0 / (dbl)MHz;\n-\t\t\telse\tz = (dbl)round(CYperIt(TLB->latency2[l] - delay)) * 1000.0 / (dbl)MHz;\n+\t\tif (!delay)\tz = (dbl)lng_round(CYperIt(TLB->latency1[l] - delay)) * 1000.0 / (dbl)MHz;\n+\t\t\telse\tz = (dbl)lng_round(CYperIt(TLB->latency2[l] - delay)) * 1000.0 / (dbl)MHz;\n \t\tfprintf(fp, \"set label %ld '(%1.3g)  ' at %f,%f right\\n\", l + 1, z, xl, z);\n \t\tfprintf(fp, \"set arrow %ld from %f,%f to %f,%f nohead lt 0\\n\", l + 1, xl, z, xh, z);\n \t}\n@@ -1023,9 +1023,9 @@ void printCPU(cacheInfo *cache, lng MHz, lng delay)\n \tFILE\t*fp = stdout;\n \t\t\n \tfprintf(fp, \"CPU loop + L1 access:    \");\n-\tfprintf(fp, \" %6.2f ns = %3ld cy\\n\", NSperIt(cache->latency1[0]), round(CYperIt(cache->latency1[0])));\n+\tfprintf(fp, \" %6.2f ns = %3ld cy\\n\", NSperIt(cache->latency1[0]), lng_round(CYperIt(cache->latency1[0])));\n \tfprintf(fp, \"             ( delay:    \");\n-\tfprintf(fp, \" %6.2f ns = %3ld cy )\\n\", NSperIt(delay),            round(CYperIt(delay)));\n+\tfprintf(fp, \" %6.2f ns = %3ld cy )\\n\", NSperIt(delay),            lng_round(CYperIt(delay)));\n \tfprintf(fp, \"\\n\");\n \tfflush(fp);\n }\n@@ -1047,8 +1047,8 @@ void printCache(cacheInfo *cache, lng MHz)\n \t\t\tfprintf(fp, \" %3ld KB \", cache->size[l] / 1024);\n \t\t}\n \t\tfprintf(fp, \" %3ld bytes \", cache->linesize[l + 1]);\n-\t\tfprintf(fp, \" %6.2f ns = %3ld cy \" , NSperIt(cache->latency2[l + 1] - cache->latency2[l]), round(CYperIt(cache->latency2[l + 1] - cache->latency2[l])));\n-\t\tfprintf(fp, \" %6.2f ns = %3ld cy\\n\", NSperIt(cache->latency1[l + 1] - cache->latency1[l]), round(CYperIt(cache->latency1[l + 1] - cache->latency1[l])));\n+\t\tfprintf(fp, \" %6.2f ns = %3ld cy \" , NSperIt(cache->latency2[l + 1] - cache->latency2[l]), lng_round(CYperIt(cache->latency2[l + 1] - cache->latency2[l])));\n+\t\tfprintf(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])));\n \t}\n \tfprintf(fp, \"\\n\");\n \tfflush(fp);\n@@ -1075,9 +1075,9 @@ void printTLB(TLBinfo *TLB, lng MHz)\n \t\t} else {\n \t\t\tfprintf(fp, \"  %3ld KB  \", TLB->pagesize[l + 1] / 1024);\n \t\t}\n-\t\tfprintf(fp, \" %6.2f ns = %3ld cy \", NSperIt(TLB->latency2[l + 1] - TLB->latency2[l]), round(CYperIt(TLB->latency2[l + 1] - TLB->latency2[l])));\n+\t\tfprintf(fp, \" %6.2f ns = %3ld cy \", NSperIt(TLB->latency2[l + 1] - TLB->latency2[l]), lng_round(CYperIt(TLB->latency2[l + 1] - TLB->latency2[l])));\n /*\n-\t\tfprintf(fp, \" %6.2f ns = %3ld cy\" , NSperIt(TLB->latency1[l + 1] - TLB->latency1[l]), round(CYperIt(TLB->latency1[l + 1] - TLB->latency1[l])));\n+\t\tfprintf(fp, \" %6.2f ns = %3ld cy\" , NSperIt(TLB->latency1[l + 1] - TLB->latency1[l]), lng_round(CYperIt(TLB->latency1[l + 1] - TLB->latency1[l])));\n */\n \t\tfprintf(fp, \"\\n\");\n \t}\n-- \n1.7.0.4\n\n"
  },
  {
    "path": "package/cache-calibrator/Config.in",
    "content": "config BR2_PACKAGE_CACHE_CALIBRATOR\n\tbool \"cache-calibrator\"\n\thelp\n\t  Cache calibrator is a small C program that is supposed to\n\t  analyze a computers (cache-) memory system and extract\n\t  useful information\n\n\t  http://homepages.cwi.nl/~manegold/Calibrator/\n\n\t  It is also recommended as a load generator for realtime\n\t  testing in:\n\n\t  https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO\n"
  },
  {
    "path": "package/cache-calibrator/cache-calibrator.hash",
    "content": "# Locally calculated\nsha256 2018ed8fa733155d44ceb1c0066c5cf8df7771cdf7cfca0a07b8dd9bebd9c221 calibrator.c\nsha256 a853663f5b4fb3ad77bf2790ab53146f456b8d9b9ddf83b99fe28c0bdec42514 calibrator.c.license\n"
  },
  {
    "path": "package/cache-calibrator/cache-calibrator.mk",
    "content": "################################################################################\n#\n# cache-calibrator\n#\n################################################################################\n\nCACHE_CALIBRATOR_SOURCE = calibrator.c\nCACHE_CALIBRATOR_SITE = http://homepages.cwi.nl/~manegold/Calibrator/src\nCACHE_CALIBRATOR_LICENSE = Cache calibrator license\nCACHE_CALIBRATOR_LICENSE_FILES = calibrator.c.license\n\ndefine CACHE_CALIBRATOR_EXTRACT_CMDS\n\tcp $(CACHE_CALIBRATOR_DL_DIR)/$(CACHE_CALIBRATOR_SOURCE) $(@D)\nendef\n\ndefine CACHE_CALIBRATOR_EXTRACT_LICENSE\n\thead -n 38 $(@D)/calibrator.c >$(@D)/calibrator.c.license\nendef\nCACHE_CALIBRATOR_PRE_PATCH_HOOKS += CACHE_CALIBRATOR_EXTRACT_LICENSE\n\ndefine CACHE_CALIBRATOR_BUILD_CMDS\n\t$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) $(@D)/calibrator.c -o $(@D)/cache_calibrator -lm\nendef\n\ndefine CACHE_CALIBRATOR_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/cache_calibrator $(TARGET_DIR)/usr/bin/cache_calibrator\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/cage/Config.in",
    "content": "comment \"cage needs udev, EGL w/ Wayland backend and OpenGL ES support\"\n\tdepends on !BR2_PACKAGE_HAS_LIBEGL || \\\n\t\t!BR2_PACKAGE_HAS_LIBEGL_WAYLAND || \\\n\t\t!BR2_PACKAGE_HAS_LIBGLES || \\\n\t\t!BR2_PACKAGE_HAS_UDEV\n\ncomment \"cage needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_CAGE\n\tbool \"cage\"\n\tdepends on !BR2_STATIC_LIBS # wlroots\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # wlroots\n\tdepends on BR2_PACKAGE_HAS_LIBEGL # wlroots\n\tdepends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND # wlroots\n\tdepends on BR2_PACKAGE_HAS_LIBGLES # wlroots\n\tdepends on BR2_PACKAGE_HAS_UDEV # wlroots\n\tselect BR2_PACKAGE_WLROOTS\n\thelp\n\t  Kiosk compositor for Wayland, which displays a single\n\t  maximized application at a time.\n\n\t  https://www.hjdskes.nl/projects/cage/\n"
  },
  {
    "path": "package/cage/cage.hash",
    "content": "# Generated locally after checking GPG signature\nsha256 dfe27fb0c7d43db72d6c82f01e2736580a0791a23ba69d7b56285d08af98ad90  cage-0.1.4.tar.gz\n\n# Hashes for license files:\nsha256 e117104073335dbaf78596fb1bedf89dda63c71f60f0b665947b2d369c77ecee  LICENSE\n"
  },
  {
    "path": "package/cage/cage.mk",
    "content": "################################################################################\n#\n# cage\n#\n################################################################################\n\nCAGE_VERSION = 0.1.4\nCAGE_SITE = https://github.com/Hjdskes/cage/releases/download/v$(CAGE_VERSION)\nCAGE_LICENSE = MIT\nCAGE_LICENSE_FILES = LICENSE\nCAGE_DEPENDENCIES = host-pkgconf wlroots\nCAGE_CONF_OPTS = -Dman-pages=disabled\n\nifeq ($(BR2_PACKAGE_XORG7),y)\nCAGE_CONF_OPTS += -Dxwayland=true\nelse\nCAGE_CONF_OPTS += -Dxwayland=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/cairo/0001-fix-nofork-build.patch",
    "content": "test: fix build when SHOULD_FORK is false\n\nThe code in test/cairo-test-runner.c properly takes into account\nplatforms that do have fork() support, and uses the SHOULD_FORK define\nto know whether fork is available or not.\n\nHowever, this SHOULD_FORK macro is used to guard the inclusion of\n<unistd.h>, which is needed to get the prototype of other functions\n(namely readlink and getppid), that are used in portions of this file\nnot guarded by SHOULD_FORK.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/test/cairo-test-runner.c\n===================================================================\n--- a/test/cairo-test-runner.c\n+++ b/test/cairo-test-runner.c\n@@ -36,10 +36,10 @@\n #include <pixman.h> /* for version information */\n \n #define SHOULD_FORK HAVE_FORK && HAVE_WAITPID\n-#if SHOULD_FORK\n #if HAVE_UNISTD_H\n #include <unistd.h>\n #endif\n+#if SHOULD_FORK\n #if HAVE_SIGNAL_H\n #include <signal.h>\n #endif\n"
  },
  {
    "path": "package/cairo/0002-ft-Use-FT_Done_MM_Var-instead-of-free-when-available-in-cairo_ft_apply_variation.patch",
    "content": "From 90e85c2493fdfa3551f202ff10282463f1e36645 Mon Sep 17 00:00:00 2001\nFrom: Carlos Garcia Campos <cgarcia@igalia.com>\nDate: Mon, 19 Nov 2018 12:33:07 +0100\nSubject: [PATCH] ft: Use FT_Done_MM_Var instead of free when available in\n cairo_ft_apply_variations\n\nFixes a crash when using freetype >= 2.9\n[Retrieved from:\nhttps://gitlab.freedesktop.org/cairo/cairo/-/commit/90e85c2493fdfa3551f202ff10282463f1e36645]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/cairo-ft-font.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c\nindex 325dd61b4..981973f78 100644\n--- a/src/cairo-ft-font.c\n+++ b/src/cairo-ft-font.c\n@@ -2393,7 +2393,11 @@ skip:\n done:\n         free (coords);\n         free (current_coords);\n+#if HAVE_FT_DONE_MM_VAR\n+        FT_Done_MM_Var (face->glyph->library, ft_mm_var);\n+#else\n         free (ft_mm_var);\n+#endif\n     }\n }\n \n-- \n2.24.1\n\n"
  },
  {
    "path": "package/cairo/Config.in",
    "content": "config BR2_PACKAGE_CAIRO\n\tbool \"cairo\"\n\tselect BR2_PACKAGE_PIXMAN\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7\n\thelp\n\t  Cairo is a 2D graphics library with support for multiple\n\t  output devices. Currently supported output targets include\n\t  the X Window System, Win32, image buffers, and PostScript,\n\t  PDF, and SVG file output. Experimental backends include\n\t  OpenGL (through glitz), Quartz, and XCB.\n\n\t  http://cairographics.org/\n\nif BR2_PACKAGE_CAIRO\n\nconfig BR2_PACKAGE_CAIRO_PS\n\tbool \"postscript support\"\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_CAIRO_PDF\n\nconfig BR2_PACKAGE_CAIRO_PDF\n\tbool \"pdf support\"\n\tselect BR2_PACKAGE_ZLIB\n\nconfig BR2_PACKAGE_CAIRO_PNG\n\tbool \"png support\"\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_ZLIB\n\nconfig BR2_PACKAGE_CAIRO_SCRIPT\n\tbool \"script support\"\n\tselect BR2_PACKAGE_CAIRO_PNG\n\nconfig BR2_PACKAGE_CAIRO_SVG\n\tbool \"svg support\"\n\tselect BR2_PACKAGE_CAIRO_PNG\n\tselect BR2_PACKAGE_CAIRO_PDF\n\nconfig BR2_PACKAGE_CAIRO_TEE\n\tbool \"tee support\"\n\nconfig BR2_PACKAGE_CAIRO_XML\n\tbool \"xml support\"\n\tselect BR2_PACKAGE_CAIRO_PNG\n\nendif\n"
  },
  {
    "path": "package/cairo/cairo.hash",
    "content": "# From https://www.cairographics.org/releases/cairo-1.16.0.tar.xz.sha1\nsha1 00e81842ae5e81bb0343108884eb5205be0eac14 cairo-1.16.0.tar.xz\n# Calculated based on the hash above\nsha256\t5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331\tcairo-1.16.0.tar.xz\n\n# Hash for license files:\nsha256\t67228a9f7c5f9b67c58f556f1be178f62da4d9e2e6285318d8c74d567255abdf\tCOPYING\nsha256\t9e9e8608c4cdda51a78cc3a385f4ec9a2e4c96d5ecad74ac8bca5fca3e563b7d\tCOPYING-LGPL-2.1\nsha256\t53692a2ed6c6a2c6ec9b32dd0b820dfae91e0a1fcdf625ca9ed0bdf8705fcc4f\tCOPYING-MPL-1.1\n"
  },
  {
    "path": "package/cairo/cairo.mk",
    "content": "################################################################################\n#\n# cairo\n#\n################################################################################\n\nCAIRO_VERSION = 1.16.0\nCAIRO_SOURCE = cairo-$(CAIRO_VERSION).tar.xz\nCAIRO_LICENSE = LGPL-2.1 or MPL-1.1 (library)\nCAIRO_LICENSE_FILES = COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1\nCAIRO_CPE_ID_VENDOR = cairographics\nCAIRO_SITE = http://cairographics.org/releases\nCAIRO_INSTALL_STAGING = YES\n\n# 0002-ft-Use-FT_Done_MM_Var-instead-of-free-when-available-in-cairo_ft_apply_variation.patch\nCAIRO_IGNORE_CVES += CVE-2018-19876\n\n# relocation truncated to fit: R_68K_GOT16O\nifeq ($(BR2_m68k_cf),y)\nCAIRO_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -mxgot\"\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),)\nCAIRO_CONF_ENV += CPPFLAGS=\"$(TARGET_CPPFLAGS) -DCAIRO_NO_MUTEX=1\"\nendif\n\n# cairo can use C++11 atomics when available, so we need to link with\n# libatomic for the architectures who need libatomic.\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nCAIRO_CONF_ENV += LIBS=\"-latomic\"\nendif\n\nCAIRO_CONF_OPTS = \\\n\t--enable-trace=no \\\n\t--enable-interpreter=no\n\nCAIRO_DEPENDENCIES = host-pkgconf fontconfig pixman\n\n# Just the bare minimum to make other host-* packages happy\nHOST_CAIRO_CONF_OPTS = \\\n\t--enable-trace=no \\\n\t--enable-interpreter=no \\\n\t--disable-directfb \\\n\t--enable-ft \\\n\t--enable-gobject \\\n\t--disable-glesv2 \\\n\t--disable-vg \\\n\t--disable-xlib \\\n\t--disable-xcb \\\n\t--without-x \\\n\t--disable-xlib-xrender \\\n\t--disable-ps \\\n\t--disable-pdf \\\n\t--enable-png \\\n\t--enable-script \\\n\t--disable-svg \\\n\t--disable-tee \\\n\t--disable-xml\nHOST_CAIRO_DEPENDENCIES = \\\n\thost-freetype \\\n\thost-fontconfig \\\n\thost-libglib2 \\\n\thost-libpng \\\n\thost-pixman \\\n\thost-pkgconf\n\n# DirectFB svg support rely on Cairo and Cairo DirectFB support depends on\n# DirectFB. Break circular dependency by disabling DirectFB support in Cairo\n# (which is experimental)\nifeq ($(BR2_PACKAGE_DIRECTFB)x$(BR2_PACKAGE_DIRECTFB_SVG),yx)\nCAIRO_CONF_OPTS += --enable-directfb\nCAIRO_DEPENDENCIES += directfb\nelse\nCAIRO_CONF_OPTS += --disable-directfb\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nCAIRO_CONF_OPTS += --enable-ft\nCAIRO_DEPENDENCIES += freetype\nelse\nCAIRO_CONF_OPTS += --disable-ft\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nCAIRO_CONF_OPTS += --enable-gobject\nCAIRO_DEPENDENCIES += libglib2\nelse\nCAIRO_CONF_OPTS += --disable-gobject\nendif\n\n# Can use GL or GLESv2 but not both\nifeq ($(BR2_PACKAGE_HAS_LIBGL),y)\nCAIRO_CONF_OPTS += --enable-gl --disable-glesv2\nCAIRO_DEPENDENCIES += libgl\nelse\nifeq ($(BR2_PACKAGE_HAS_LIBGLES),y)\nCAIRO_CONF_OPTS += --disable-gl --enable-glesv2\nCAIRO_DEPENDENCIES += libgles\nelse\nCAIRO_CONF_OPTS += --disable-gl --disable-glesv2\nendif\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBOPENVG),y)\nCAIRO_CONF_OPTS += --enable-vg\nCAIRO_DEPENDENCIES += libopenvg\nelse\nCAIRO_CONF_OPTS += --disable-vg\nendif\n\nifeq ($(BR2_PACKAGE_LZO),y)\nCAIRO_DEPENDENCIES += lzo\nendif\n\nifeq ($(BR2_PACKAGE_XORG7),y)\nCAIRO_CONF_OPTS += --enable-xlib --enable-xcb --with-x\nCAIRO_DEPENDENCIES += xlib_libX11 xlib_libXext\nelse\nCAIRO_CONF_OPTS += --disable-xlib --disable-xcb --without-x\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y)\nCAIRO_CONF_OPTS += --enable-xlib-xrender\nCAIRO_DEPENDENCIES += xlib_libXrender\nelse\nCAIRO_CONF_OPTS += --disable-xlib-xrender\nendif\n\nifeq ($(BR2_PACKAGE_CAIRO_PS),y)\nCAIRO_CONF_OPTS += --enable-ps\nCAIRO_DEPENDENCIES += zlib\nelse\nCAIRO_CONF_OPTS += --disable-ps\nendif\n\nifeq ($(BR2_PACKAGE_CAIRO_PDF),y)\nCAIRO_CONF_OPTS += --enable-pdf\nCAIRO_DEPENDENCIES += zlib\nelse\nCAIRO_CONF_OPTS += --disable-pdf\nendif\n\nifeq ($(BR2_PACKAGE_CAIRO_PNG),y)\nCAIRO_CONF_OPTS += --enable-png\nCAIRO_DEPENDENCIES += libpng\nelse\nCAIRO_CONF_OPTS += --disable-png\nendif\n\nifeq ($(BR2_PACKAGE_CAIRO_SCRIPT),y)\nCAIRO_CONF_OPTS += --enable-script\nelse\nCAIRO_CONF_OPTS += --disable-script\nendif\n\nifeq ($(BR2_PACKAGE_CAIRO_SVG),y)\nCAIRO_CONF_OPTS += --enable-svg\nelse\nCAIRO_CONF_OPTS += --disable-svg\nendif\n\nifeq ($(BR2_PACKAGE_CAIRO_TEE),y)\nCAIRO_CONF_OPTS += --enable-tee\nelse\nCAIRO_CONF_OPTS += --disable-tee\nendif\n\nifeq ($(BR2_PACKAGE_CAIRO_XML),y)\nCAIRO_CONF_OPTS += --enable-xml\nelse\nCAIRO_CONF_OPTS += --disable-xml\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/cairomm/Config.in",
    "content": "config BR2_PACKAGE_CAIROMM\n\tbool \"cairomm\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBSIGC\n\thelp\n\t  The cairomm package is a set of C++ bindings for Cairo.\n\n\t  http://www.gtkmm.org/\n\ncomment \"cairomm needs a toolchain w/ C++, wchar, threads, gcc >= 4.8\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_USE_WCHAR \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/cairomm/cairomm.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/cairomm/1.12/cairomm-1.12.0.sha256sum\nsha256\ta54ada8394a86182525c0762e6f50db6b9212a2109280d13ec6a0b29bfd1afe6\tcairomm-1.12.0.tar.xz\n# Locally computed\nsha256 bfe4a52dc4645385f356a8e83cc54216a293e3b6f1cb4f79f5fc0277abf937fd  COPYING\n"
  },
  {
    "path": "package/cairomm/cairomm.mk",
    "content": "################################################################################\n#\n# cairomm\n#\n################################################################################\n\nCAIROMM_VERSION_MAJOR = 1.12\nCAIROMM_VERSION = $(CAIROMM_VERSION_MAJOR).0\nCAIROMM_LICENSE = LGPL-2.0+\nCAIROMM_LICENSE_FILES = COPYING\nCAIROMM_SOURCE = cairomm-$(CAIROMM_VERSION).tar.xz\nCAIROMM_SITE = http://ftp.gnome.org/pub/gnome/sources/cairomm/$(CAIROMM_VERSION_MAJOR)\nCAIROMM_INSTALL_STAGING = YES\nCAIROMM_DEPENDENCIES = cairo libglib2 libsigc host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/can-utils/Config.in",
    "content": "config BR2_PACKAGE_CAN_UTILS\n\tbool \"can-utils\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  SocketCAN is a set of open source CAN drivers and a\n\t  networking stack.\n\t  This package provides various tools for this stack.\n\n\t  https://github.com/linux-can/can-utils\n"
  },
  {
    "path": "package/can-utils/can-utils.hash",
    "content": "# Locally computed\nsha256  c9b8f29515ad34af7f78450ec55c983abc5393e86b1f128a92ac0dfd141baaf7  can-utils-2021.08.0.tar.gz\nsha256  c3dc748f5e725cf5ed89784fe78e4ff1b05d309bf1e7ade4c572e8fde1b8406c  LICENSES/BSD-3-Clause\nsha256  995a31f60a9ddb4c609214cc7d17ca94cc3cbc7f37e1e64dba81e7f8ea9d4f91  LICENSES/GPL-2.0-only.txt\n"
  },
  {
    "path": "package/can-utils/can-utils.mk",
    "content": "################################################################################\n#\n# can-utils\n#\n################################################################################\n\nCAN_UTILS_VERSION = 2021.08.0\nCAN_UTILS_SITE = $(call github,linux-can,can-utils,v$(CAN_UTILS_VERSION))\nCAN_UTILS_LICENSE = BSD-3-Clause or GPL-2.0\nCAN_UTILS_LICENSE_FILES = LICENSES/BSD-3-Clause LICENSES/GPL-2.0-only.txt\nCAN_UTILS_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/cannelloni/Config.in",
    "content": "config BR2_PACKAGE_CANNELLONI\n\tbool \"cannelloni\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU # lksctp-tools\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # lksctp-tools\n\tdepends on !BR2_STATIC_LIBS # lksctp-tools\n\thelp\n\t  A SocketCAN over Ethernet tunnel. The tunnel supports both\n\t  UDP and SCTP protocols.\n\n\t  https://github.com/mguentner/cannelloni\n\ncomment \"cannelloni needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/cannelloni/cannelloni.hash",
    "content": "# Locally computed\nsha256  de44b7e327fbf38883f46e51a5afd07de5144f2e44c5f42b7f2f0741165f0b13  cannelloni-1.0.0.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  gpl-2.0.txt\n"
  },
  {
    "path": "package/cannelloni/cannelloni.mk",
    "content": "################################################################################\n#\n# cannelloni\n#\n################################################################################\n\nCANNELLONI_VERSION = 1.0.0\nCANNELLONI_SITE = $(call github,mguentner,cannelloni,v$(CANNELLONI_VERSION))\nCANNELLONI_LICENSE = GPL-2.0\nCANNELLONI_LICENSE_FILES = gpl-2.0.txt\nCANNELLONI_CONF_OPTS = -DCMAKE_CXX_FLAGS=\"-std=c++11\"\n\nifeq ($(BR2_PACKAGE_LKSCTP_TOOLS),y)\nCANNELLONI_CONF_OPTS += -DSCTP_SUPPORT=ON\nCANNELLONI_DEPENDENCIES += lksctp-tools\nelse\nCANNELLONI_CONF_OPTS += -DSCTP_SUPPORT=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/cantarell/Config.in",
    "content": "config BR2_PACKAGE_CANTARELL\n\tbool \"cantarell\"\n\thelp\n\t  The Cantarell font family is a contemporary Humanist\n\t  sans serif designed for on-screen reading.\n\n\t  https://wiki.gnome.org/Projects/CantarellFonts\n"
  },
  {
    "path": "package/cantarell/cantarell.hash",
    "content": "# From http://ftp.acc.umu.se/pub/gnome/sources/cantarell-fonts/0.0/cantarell-fonts-0.0.25.sha256sum\nsha256  14a228aa0b516dfc367b434a850f955a00c57fc549cbb05348e2b150196a737f  cantarell-fonts-0.0.25.tar.xz\n# locally computed\nsha256  79a9d6198c0d9192c1b0bf55bcbc404a39390bd0d8c650cf20d652c2eaa284d8  COPYING\n"
  },
  {
    "path": "package/cantarell/cantarell.mk",
    "content": "################################################################################\n#\n# cantarell\n#\n################################################################################\n\nCANTARELL_VERSION_MAJOR = 0.0\nCANTARELL_VERSION = $(CANTARELL_VERSION_MAJOR).25\nCANTARELL_SITE = http://ftp.gnome.org/pub/gnome/sources/cantarell-fonts/$(CANTARELL_VERSION_MAJOR)\nCANTARELL_SOURCE = cantarell-fonts-$(CANTARELL_VERSION).tar.xz\nCANTARELL_DEPENDENCIES = host-pkgconf\nCANTARELL_LICENSE = OFL-1.1\nCANTARELL_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/capnproto/0001-mutex-Fix-build-on-32-bit-architectures-using-64-bit-time_t.patch",
    "content": "From e2a05a19e9dc51287e19cc9f11fd91449219e361 Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Sun, 15 Nov 2020 12:10:28 -0800\nSubject: [PATCH] mutex: Fix build on 32-bit architectures using 64-bit time_t\n\nmutex code uses SYS_futex, which it expects from system C library.\nin glibc (/usr/include/bits/syscall.h defines it in terms of of NR_futex)\nrv32 is using 64bit time_t from get go unlike other 32bit architectures\nin glibc, therefore it wont have NR_futex defined but just NR_futex_time64\nthis aliases it to NR_futex so that SYS_futex is then defined for rv32\n\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\n[Retrieved from:\nhttps://github.com/capnproto/capnproto/commit/e2a05a19e9dc51287e19cc9f11fd91449219e361]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n c++/src/kj/mutex.c++ | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/c++/src/kj/mutex.c++ b/c++/src/kj/mutex.c++\nindex c81cead7b..e1594b117 100644\n--- a/c++/src/kj/mutex.c++\n+++ b/c++/src/kj/mutex.c++\n@@ -39,7 +39,13 @@\n \n #ifndef SYS_futex\n // Missing on Android/Bionic.\n+#ifdef __NR_futex\n #define SYS_futex __NR_futex\n+#elif defined(SYS_futex_time64)\n+#define SYS_futex SYS_futex_time64\n+#else\n+#error \"Need working SYS_futex\"\n+#endif\n #endif\n \n #ifndef FUTEX_WAIT_PRIVATE\n"
  },
  {
    "path": "package/capnproto/Config.in",
    "content": "config BR2_PACKAGE_CAPNPROTO\n\tbool \"capnproto\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_HOST_GCC_AT_LEAST_5 # C++14\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\tdepends on BR2_TOOLCHAIN_HAS_UCONTEXT\n\thelp\n\t  Cap'n Proto is an insanely fast data interchange format\n\t  and capability-based RPC system. Think JSON, except\n\t  binary. Or think Protocol Buffers, except faster. In\n\t  fact, in benchmarks, Cap'n Proto is INFINITY TIMES\n\t  faster than Protocol Buffers.\n\n\t  https://capnproto.org/index.html\n\ncomment \"capnproto needs host and target gcc >= 5 w/ C++14, threads, atomic, ucontext and not gcc bug 64735\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_HOST_GCC_AT_LEAST_5 || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \\\n\t\t!BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_HAS_ATOMIC || \\\n\t\tBR2_TOOLCHAIN_HAS_GCC_BUG_64735 || \\\n\t\t!BR2_TOOLCHAIN_HAS_UCONTEXT\n"
  },
  {
    "path": "package/capnproto/capnproto.hash",
    "content": "# Locally calculated\nsha256\t6d8b43a7ec2a764b4dfe4139a7cdd070ad9057f106898050d9f4db3754b98820  capnproto-0.8.0.tar.gz\nsha256\t9564998c8d7f270a61a8b89869a8d17a9d5e3783b64027788b5e339ec8479e10  LICENSE\n"
  },
  {
    "path": "package/capnproto/capnproto.mk",
    "content": "################################################################################\n#\n# capnproto\n#\n################################################################################\n\nCAPNPROTO_VERSION = 0.8.0\nCAPNPROTO_SITE = $(call github,capnproto,capnproto,v$(CAPNPROTO_VERSION))\nCAPNPROTO_LICENSE = MIT\nCAPNPROTO_LICENSE_FILES = LICENSE\nCAPNPROTO_CPE_ID_VENDOR = capnproto\nCAPNPROTO_INSTALL_STAGING = YES\n# Fetched from Github with no configure script\nCAPNPROTO_AUTORECONF = YES\nCAPNPROTO_CONF_OPTS = --with-external-capnp\n# Needs the capnproto compiler on the host to generate C++ code from message\n# definitions\nCAPNPROTO_DEPENDENCIES = host-autoconf host-capnproto\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nCAPNPROTO_CONF_ENV += LIBS=-latomic\nendif\n# The actual source to be compiled is within a 'c++' subdirectory\nCAPNPROTO_SUBDIR = c++\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nCAPNPROTO_CONF_OPTS += --with-openssl\nCAPNPROTO_DEPENDENCIES += openssl\nelse\nCAPNPROTO_CONF_OPTS += --without-openssl\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/caps/0001-Fix-stdint-types-with-musl.patch",
    "content": "From 626e60a82120961ccee117dfcb5c28f72f8a26e5 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Wed, 28 Aug 2019 11:25:49 +0200\nSubject: [PATCH] Fix stdint types with musl\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFetched from:\nhttps://github.com/dsacre/meta-lad/blob/master/recipes-multimedia/lv2/caps-lv2/fix-stdint-types-with-musl.patch\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n basics.h | 17 +++++++++--------\n 1 file changed, 9 insertions(+), 8 deletions(-)\n\ndiff --git a/basics.h b/basics.h\nindex 643d96e..34e5f63 100644\n--- a/basics.h\n+++ b/basics.h\n@@ -39,6 +39,7 @@\n #define _ISOC9X_SOURCE 1\n \n #include <stdlib.h>\n+#include <stdint.h>\n #include <string.h>\n \n #include <math.h>\n@@ -49,14 +50,14 @@\n \n #include \"ladspa.h\"\n \n-typedef __int8_t\t\t\tint8;\n-typedef __uint8_t\t\t\tuint8;\n-typedef __int16_t\t\t\tint16;\n-typedef __uint16_t\t\tuint16;\n-typedef __int32_t\t\t\tint32;\n-typedef __uint32_t\t\tuint32;\n-typedef __int64_t\t\t\tint64;\n-typedef __uint64_t\t\tuint64;\n+typedef int8_t\t\t\tint8;\n+typedef uint8_t\t\t\tuint8;\n+typedef int16_t\t\t\tint16;\n+typedef uint16_t\t\tuint16;\n+typedef int32_t\t\t\tint32;\n+typedef uint32_t\t\tuint32;\n+typedef int64_t\t\t\tint64;\n+typedef uint64_t\t\tuint64;\n \n #define MIN_GAIN 1e-6 /* -120 dB */\n /* smallest non-denormal 32 bit IEEE float is 1.18e-38 */\n-- \n2.22.0\n\n"
  },
  {
    "path": "package/caps/Config.in",
    "content": "config BR2_PACKAGE_CAPS\n\tbool \"caps\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  CAPS is a collection of audio plugins comprising virtual\n\t  guitar amplification and a small range of basic classic\n\t  effects, signal processors and generators of often\n\t  elementary and occasionally exotic nature.\n\n\t  The plugins aim to satisfy the highest demands in sound\n\t  quality with maximal computational efficiency and zero\n\t  latency.\n\n\t  http://quitte.de/dsp/caps.html\n\ncomment \"caps needs a toolchain w/ C++, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/caps/caps.hash",
    "content": "# Locally calculated\nsha256 e7496c5bce05abebe3dcb635926153bbb58a9337a6e423f048d3b61d8a4f98c9  caps_0.9.26.tar.bz2\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/caps/caps.mk",
    "content": "################################################################################\n#\n# caps\n#\n################################################################################\n\nCAPS_VERSION = 0.9.26\nCAPS_SOURCE = caps_$(CAPS_VERSION).tar.bz2\nCAPS_SITE = http://quitte.de/dsp\nCAPS_LICENSE = GPL-3.0+\nCAPS_LICENSE_FILES = COPYING\n\n# Need to pass TARGET_CONFIGURE_OPTS in the environment to not\n# override the LDFLAGS definition of the Makefile.\nCAPS_MAKE_ENV = \\\n\t$(TARGET_MAKE_ENV) \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tCFLAGS=\"$(TARGET_CXXFLAGS)\"\n\n# caps Makefile uses CC and CFLAGS, but for C++\nCAPS_MAKE_OPTS = \\\n\tCC=\"$(TARGET_CXX)\" \\\n\tSTRIP=/bin/true\n\ndefine CAPS_BUILD_CMDS\n\t$(CAPS_MAKE_ENV) $(MAKE) $(CAPS_MAKE_OPTS) all -C $(@D)\nendef\n\ndefine CAPS_INSTALL_TARGET_CMDS\n\t$(CAPS_MAKE_ENV) $(MAKE) $(CAPS_MAKE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) install -C $(@D)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/casync/0001-castore-fix-build-without-lzma-or-xz.patch",
    "content": "From 06b667de02df34e3efa1864b4031853bd4ee010d Mon Sep 17 00:00:00 2001\nFrom: Yair Ben-Avraham <yairba@protonmail.com>\nDate: Sun, 10 Jan 2021 06:34:58 +0100\nSubject: [PATCH] castore: fix build without lzma or xz\n\ncastore.c unconditioanlly includes lzma.h, but lzma support if optional.\nFurthermore, castore.c does not need anything from lzma.h.\n\nDrop the include altogether.\n\nSigned-off-by: Yair Ben-Avraham <yairba@protonmail.com>\n[yann.morin.1998@free.fr:\n  - lzma.h is not needed at all\n  - rewrite commit log accordingly\n]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n src/castore.c | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/src/castore.c b/src/castore.c\nindex c290dfd..b2e5320 100644\n--- a/src/castore.c\n+++ b/src/castore.c\n@@ -2,7 +2,6 @@\n \n #include <dirent.h>\n #include <fcntl.h>\n-#include <lzma.h>\n #include <sys/stat.h>\n #include <unistd.h>\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/casync/0002-build-don-t-install-udev-rules-without-udev-support.patch",
    "content": "From e3f683dc3013d14bddb9f9ec5bdc31367dc51a1c Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sun, 10 Jan 2021 10:44:39 +0100\nSubject: [PATCH] build: don't install udev rules without udev support\n\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n meson.build | 15 ++++++++-------\n 1 file changed, 8 insertions(+), 7 deletions(-)\n\ndiff --git a/meson.build b/meson.build\nindex aac7727..92be1ea 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -151,6 +151,11 @@ conf.set10('HAVE_SELINUX', get_option('selinux'))\n \n if get_option('udev')\n         libudev = dependency('libudev')\n+        udevrulesdir = get_option('udevrulesdir')\n+        if udevrulesdir == ''\n+                udev = dependency('udev', required : false)\n+                udevrulesdir = join_paths(udev.get_pkgconfig_variable('udevdir'), 'rules.d')\n+        endif\n else\n         libudev = []\n endif\n@@ -175,12 +180,6 @@ subdir('test')\n \n includes = include_directories('src')\n \n-udevrulesdir = get_option('udevrulesdir')\n-if udevrulesdir == ''\n-        udev = dependency('udev', required : false)\n-        udevrulesdir = join_paths(udev.get_pkgconfig_variable('udevdir'), 'rules.d')\n-endif\n-\n subdir('shell-completion/bash')\n subdir('doc')\n \n@@ -318,7 +317,9 @@ udev_rule = configure_file(\n           input : 'src/75-casync.rules.in',\n           configuration : substs)\n \n-install_data(udev_rule, install_dir : udevrulesdir)\n+if get_option('udev')\n+        install_data(udev_rule, install_dir : udevrulesdir)\n+endif\n \n ############################################################\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/casync/Config.in",
    "content": "config BR2_PACKAGE_CASYNC\n\tbool \"casync\"\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # scandirat() is not implemented by musl and uclibc-ng\n\tselect BR2_PACKAGE_ACL\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Content-Addressable Data Synchronization Tool\n\n\t  https://github.com/systemd/casync\n\ncomment \"casync needs a glibc toolchain\"\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/casync/casync.hash",
    "content": "# sha256 locally computed\nsha256  d07f43e70e3c466152033da4c55c065f815d3025234a046c2bce1cfe4ac7d273  casync-4ad9bcb94bc83ff36cfc65515107ea06a88c2dfc.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSE.LGPL2.1\n"
  },
  {
    "path": "package/casync/casync.mk",
    "content": "################################################################################\n#\n# casync\n#\n################################################################################\n\nCASYNC_VERSION = 4ad9bcb94bc83ff36cfc65515107ea06a88c2dfc\nCASYNC_SITE = $(call github,systemd,casync,$(CASYNC_VERSION))\nCASYNC_LICENSE = LGPL-2.1+\nCASYNC_LICENSE_FILES = LICENSE.LGPL2.1\nCASYNC_DEPENDENCIES = acl libcurl openssl\n\nCASYNC_CONF_OPTS = -Dman=false -Doss-fuzz=false -Dllvm-fuzz=false\n\nifeq ($(BR2_PACKAGE_BASH_COMPLETION),y)\nCASYNC_DEPENDENCIES += bash-completion\n# The default path is correct, leave it as-is\nelse\nCASYNC_CONF_OPTS += -Dbashcompletiondir=no\nendif\n\nifeq ($(BR2_PACKAGE_LIBFUSE),y)\nCASYNC_DEPENDENCIES += libfuse\nCASYNC_CONF_OPTS += -Dfuse=true\nelse\nCASYNC_CONF_OPTS += -Dfuse=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nCASYNC_DEPENDENCIES += libselinux\nCASYNC_CONF_OPTS += -Dselinux=true\nelse\nCASYNC_CONF_OPTS += -Dselinux=false\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nCASYNC_DEPENDENCIES += udev\nCASYNC_CONF_OPTS += -Dudev=true\nelse\nCASYNC_CONF_OPTS += -Dudev=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBZSTD),y)\nCASYNC_DEPENDENCIES += libzstd\nCASYNC_CONF_OPTS += -Dlibzstd=enabled\nelse\nCASYNC_CONF_OPTS += -Dlibzstd=disabled\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nCASYNC_DEPENDENCIES += xz\nCASYNC_CONF_OPTS += -Dliblzma=enabled\nelse\nCASYNC_CONF_OPTS += -Dliblzma=disabled\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nCASYNC_DEPENDENCIES += zlib\nCASYNC_CONF_OPTS += -Dlibz=enabled\nelse\nCASYNC_CONF_OPTS += -Dlibz=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/cbootimage/Config.in",
    "content": "config BR2_PACKAGE_CBOOTIMAGE\n\tbool \"cbootimage\"\n\tdepends on BR2_arm || BR2_armeb\n\thelp\n\t  This project provides a tool which compiles BCT (Boot\n\t  Configuration Table) images to place into the boot flash of\n\t  a Tegra-based device.\n\n\t  https://github.com/NVIDIA/cbootimage\n"
  },
  {
    "path": "package/cbootimage/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_CBOOTIMAGE\n\tbool \"host cbootimage\"\n\tdepends on BR2_arm || BR2_armeb\n\thelp\n\t  This project provides a tool which compiles BCT (Boot\n\t  Configuration Table) images to place into the boot flash of\n\t  a Tegra-based device.\n\n\t  https://github.com/NVIDIA/cbootimage\n"
  },
  {
    "path": "package/cbootimage/cbootimage.hash",
    "content": "# Locally computed\nsha256 46cce01f07df977668de9e1d49884d8ed539169994215606a9719d17b9db8804  cbootimage-1.8.tar.gz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/cbootimage/cbootimage.mk",
    "content": "################################################################################\n#\n# cbootimage\n#\n################################################################################\n\nCBOOTIMAGE_VERSION = 1.8\nCBOOTIMAGE_SITE = $(call github,NVIDIA,cbootimage,v$(CBOOTIMAGE_VERSION))\nCBOOTIMAGE_LICENSE = GPL-2.0\nCBOOTIMAGE_LICENSE_FILES = COPYING\nCBOOTIMAGE_AUTORECONF = YES\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/cc-tool/Config.in",
    "content": "config BR2_PACKAGE_CC_TOOL\n\tbool \"cc-tool\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem\n\tdepends on BR2_USE_WCHAR # boost-filesystem\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_PROGRAM_OPTIONS\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_REGEX\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\thelp\n\t  cc-tool provides support for Texas Instruments CC Debugger\n\t  for Linux OS in order to program 8051-based System-On-Chip\n\t  devices: CC254x CC253x CC243x CC251x CC111x\n\n\t  https://github.com/dashesy/cc-tool/\n\ncomment \"cc-tool needs a toolchain w/ C++, threads, wchar, gcc >= 4.9 \"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/cc-tool/cc-tool.hash",
    "content": "# Locally computed\nsha256  1d26be4446c68413a02bf3156e6434d7fe9ce76aa0a169464ca5d7b2a731610d  cc-tool-0.27.tar.gz\n\n# Hash for license file\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/cc-tool/cc-tool.mk",
    "content": "################################################################################\n#\n# cc-tool\n#\n################################################################################\n\nCC_TOOL_VERSION = 0.27\nCC_TOOL_SITE = $(call github,dashesy,cc-tool,v$(CC_TOOL_VERSION))\nCC_TOOL_LICENSE = GPL-2.0\nCC_TOOL_LICENSE_FILES = COPYING\nCC_TOOL_DEPENDENCIES = boost libusb\n\n# From git\nCC_TOOL_AUTORECONF = YES\n\n# Configure script \"discovers\" boost in /usr/local if not given explicitly\nCC_TOOL_CONF_OPTS = --with-boost=$(STAGING_DIR)/usr\nCC_TOOL_CONF_ENV = LIBS=\"$(CC_TOOL_LIBS)\"\n\n# Help boost.m4 find the Boost Regex library, which needs the pthread\n# library, but isn't detected using a modern (pkg-config) mechanism.\nifeq ($(BR2_STATIC_LIBS),y)\nCC_TOOL_LIBS += -lpthread\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nCC_TOOL_LIBS += -latomic\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ccache/ccache.hash",
    "content": "# sha256 computed locally\nsha256  a02f4e8360dc6618bc494ca35b0ae21cea080f804a4898eab1ad3fcd108eb400  ccache-3.7.12.tar.xz\nsha256  ec6b1a326ff93b2cc21df88a697ae470ff6927a55b8929e7e491b315e1563361  GPL-3.0.txt\nsha256  4f63223bcdee822d55a6768cc8399ffe06401d7a03cfe79e1dc305f50dc22c59  LICENSE.adoc\n"
  },
  {
    "path": "package/ccache/ccache.mk",
    "content": "################################################################################\n#\n# ccache\n#\n################################################################################\n\nCCACHE_VERSION = 3.7.12\nCCACHE_SITE = https://github.com/ccache/ccache/releases/download/v$(CCACHE_VERSION)\nCCACHE_SOURCE = ccache-$(CCACHE_VERSION).tar.xz\nCCACHE_LICENSE = GPL-3.0+, others\nCCACHE_LICENSE_FILES = LICENSE.adoc GPL-3.0.txt\n\n# Force ccache to use its internal zlib. The problem is that without\n# this, ccache would link against the zlib of the build system, but we\n# might build and install a different version of zlib in $(O)/host\n# afterwards, which ccache will pick up. This might break if there is\n# a version mismatch. A solution would be to add host-zlib has a\n# dependency of ccache, but it would require tuning the zlib .mk file\n# to use HOSTCC_NOCCACHE as the compiler. Instead, we take the easy\n# path: tell ccache to use its internal copy of zlib, so that ccache\n# has zero dependency besides the C library.\nHOST_CCACHE_CONF_OPTS += --with-bundled-zlib\n\n# We are ccache, so we can't use ccache\nHOST_CCACHE_CONF_ENV = \\\n\tCC=\"$(HOSTCC_NOCCACHE)\" \\\n\tCXX=\"$(HOSTCXX_NOCCACHE)\"\n\n# Patch host-ccache as follows:\n#  - Use BR_CACHE_DIR instead of CCACHE_DIR, because CCACHE_DIR\n#    is already used by autotargets for the ccache package.\n#    BR_CACHE_DIR is exported by Makefile based on config option\n#    BR2_CCACHE_DIR.\n#  - Change hard-coded last-ditch default to match path in .config, to avoid\n#    the need to specify BR_CACHE_DIR when invoking ccache directly.\n#    CCache replaces \"%s\" with the home directory of the current user,\n#    So rewrite BR_CACHE_DIR to take that into consideration for SDK purpose\nHOST_CCACHE_DEFAULT_CCACHE_DIR = $(patsubst $(HOME)/%,\\%s/%,$(BR_CACHE_DIR))\n\ndefine HOST_CCACHE_PATCH_CONFIGURATION\n\tsed -i 's,getenv(\"CCACHE_DIR\"),getenv(\"BR_CACHE_DIR\"),' $(@D)/src/ccache.c\n\tsed -i 's,\"%s/.ccache\",\"$(HOST_CCACHE_DEFAULT_CCACHE_DIR)\",' $(@D)/src/conf.c\nendef\n\nHOST_CCACHE_POST_PATCH_HOOKS += HOST_CCACHE_PATCH_CONFIGURATION\n\ndefine HOST_CCACHE_MAKE_CACHE_DIR\n\tmkdir -p $(BR_CACHE_DIR)\nendef\n\nHOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_MAKE_CACHE_DIR\n\n# Provide capability to do initial ccache setup (e.g. increase default size)\nBR_CCACHE_INITIAL_SETUP = $(call qstrip,$(BR2_CCACHE_INITIAL_SETUP))\nifneq ($(BR_CCACHE_INITIAL_SETUP),)\ndefine HOST_CCACHE_DO_INITIAL_SETUP\n\t@$(call MESSAGE,\"Applying initial settings\")\n\t$(CCACHE) $(BR_CCACHE_INITIAL_SETUP)\n\t$(CCACHE) -s\nendef\n\nHOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_DO_INITIAL_SETUP\nendif\n\n$(eval $(host-autotools-package))\n\nifeq ($(BR2_CCACHE),y)\nccache-stats: host-ccache\n\t$(Q)$(CCACHE) -s\n\nccache-options: host-ccache\nifeq ($(CCACHE_OPTIONS),)\n\t$(Q)echo \"Usage: make ccache-options CCACHE_OPTIONS=\\\"opts\\\"\"\n\t$(Q)echo \"where 'opts' corresponds to one or more valid ccache options\" \\\n\t\"(see ccache help text below)\"\n\t$(Q)echo\nendif\n\t$(Q)$(CCACHE) $(CCACHE_OPTIONS)\nendif\n"
  },
  {
    "path": "package/ccid/Config.in",
    "content": "config BR2_PACKAGE_CCID\n\tbool \"ccid\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tdepends on BR2_USE_MMU # pcsc-lite\n\tdepends on !BR2_STATIC_LIBS # pcsc-lite\n\tselect BR2_PACKAGE_PCSC_LITE\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  PC/SC driver for USB CCID smart card readers\n\n\t  https://ccid.apdu.fr/\n\ncomment \"ccid needs a toolchain w/ threads, dynamic library, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/ccid/ccid.hash",
    "content": "# Locally computed\nsha256  e6f7645b59a9a2844eb4b1a7eff512960d7f04a4654af02f7fd2f8aded5db40a  ccid-1.4.34.tar.bz2\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING\n"
  },
  {
    "path": "package/ccid/ccid.mk",
    "content": "################################################################################\n#\n# ccid\n#\n################################################################################\n\nCCID_VERSION = 1.4.34\nCCID_SOURCE = ccid-$(CCID_VERSION).tar.bz2\nCCID_SITE = https://ccid.apdu.fr/files\nCCID_LICENSE = LGPL-2.1+\nCCID_LICENSE_FILES = COPYING\nCCID_INSTALL_STAGING = YES\nCCID_DEPENDENCIES = pcsc-lite host-pkgconf libusb\nCCID_CONF_OPTS = --enable-usbdropdir=/usr/lib/pcsc/drivers\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\ndefine CCID_INSTALL_UDEV_RULES\n\tif test -d $(TARGET_DIR)/etc/udev/rules.d ; then \\\n\t\tcp $(@D)/src/92_pcscd_ccid.rules $(TARGET_DIR)/etc/udev/rules.d/ ; \\\n\tfi;\nendef\n\nCCID_POST_INSTALL_TARGET_HOOKS += CCID_INSTALL_UDEV_RULES\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ccrypt/Config.in",
    "content": "config BR2_PACKAGE_CCRYPT\n\tbool \"ccrypt\"\n\thelp\n\t  ccrypt is a utility for encrypting and decrypting files and\n\t  streams.\n\n\t  http://ccrypt.sourceforge.net/\n"
  },
  {
    "path": "package/ccrypt/ccrypt.hash",
    "content": "# Locally computed:\nsha256  b19c47500a96ee5fbd820f704c912f6efcc42b638c0a6aa7a4e3dc0a6b51a44f  ccrypt-1.11.tar.gz\nsha256  d48d3af3cf27b32106ee3418c7c892cae745ece26cd909e72aa59b08e3f9c93d  COPYING\n"
  },
  {
    "path": "package/ccrypt/ccrypt.mk",
    "content": "################################################################################\n#\n# ccrypt\n#\n################################################################################\n\nCCRYPT_VERSION = 1.11\nCCRYPT_SITE = http://ccrypt.sourceforge.net/download/$(CCRYPT_VERSION)\n\nCCRYPT_LICENSE = GPL-2.0+\nCCRYPT_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/cctz/Config.in",
    "content": "config BR2_PACKAGE_CCTZ\n\tbool \"cctz\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tselect BR2_TARGET_TZ_INFO # runtime dependency\n\thelp\n\t  CCTZ is a C++ library for translating between absolute\n\t  and civil times using the rules of a time zone.\n\n\t  https://github.com/google/cctz\n\nif BR2_PACKAGE_CCTZ\n\nconfig BR2_PACKAGE_CCTZ_INSTALL_TOOLS\n\tbool \"Install tools\"\n\thelp\n\t  This option allows installing CCTZ tools.\n\nconfig BR2_PACKAGE_CCTZ_INSTALL_EXAMPLES\n\tbool \"Install example programs\"\n\thelp\n\t  This option allows installing CCTZ example programs.\n\nendif\n\ncomment \"cctz needs a toolchain w/ C++, threads, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/cctz/cctz.hash",
    "content": "# locally computed\nsha256 8615b20d4e33e02a271c3b93a3b208e3d7d5d66880f5f6208b03426e448f32db cctz-2.3.tar.gz\nsha256 c79a7fea0e3cac04cd43f20e7b648e5a0ff8fa5344e644b0ee09ca1162b62747 LICENSE.txt\n"
  },
  {
    "path": "package/cctz/cctz.mk",
    "content": "################################################################################\n#\n# cctz\n#\n################################################################################\n\nCCTZ_VERSION = 2.3\nCCTZ_SITE = $(call github,google,cctz,v$(CCTZ_VERSION))\nCCTZ_LICENSE = Apache-2.0\nCCTZ_LICENSE_FILES = LICENSE.txt\nCCTZ_INSTALL_STAGING = YES\n\nCCTZ_CONF_OPTS = -DBUILD_TESTING=OFF\n\nifeq ($(BR2_PACKAGE_CCTZ_INSTALL_TOOLS),y)\nCCTZ_CONF_OPTS += -DBUILD_TOOLS=ON\nelse\nCCTZ_CONF_OPTS += -DBUILD_TOOLS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_CCTZ_INSTALL_EXAMPLES),y)\nCCTZ_CONF_OPTS += -DBUILD_EXAMPLES=ON\nelse\nCCTZ_CONF_OPTS += -DBUILD_EXAMPLES=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/cdrkit/0001-no-rcmd.patch",
    "content": "[PATCH] fix build with uClibc\n\ncdrkit unconditionally enables code using rcmd(3), which isn't available\non uClibc.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n---\n include/xconfig.h.in |    1 -\n 1 file changed, 1 deletion(-)\n\nIndex: cdrkit-1.1.10/include/xconfig.h.in\n===================================================================\n--- cdrkit-1.1.10.orig/include/xconfig.h.in\n+++ cdrkit-1.1.10/include/xconfig.h.in\n@@ -187,7 +187,6 @@\n  *\tthey are placed before the large file tests.\n  */\n \n-#define HAVE_RCMD 1\t\t/* rcmd() is present in libc/libsocket */\n #define HAVE_SOCKET 1\t\t/* socket() is present in libc/libsocket */\n #define HAVE_SOCKETPAIR 1\t\t/* socketpair() is present in libc/libsocket */\n #define HAVE_GETSERVBYNAME 1\t/* getservbyname() is present in libc/libsocket */\n"
  },
  {
    "path": "package/cdrkit/0002-define-__THROW-to-avoid-build-issue-with-musl.patch",
    "content": "From 9454ef47db30caa4359766c8730d9d92f65c64f7 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Sat, 8 Aug 2015 22:58:57 +0200\nSubject: [PATCH] define __THROW to avoid build issue with musl\n\nFixes:\nhttp://autobuild.buildroot.net/results/d27/d2781e70b04a207e2e9397d888032294c7285034/build-end.log\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n genisoimage/sha256.h | 4 ++++\n genisoimage/sha512.h | 4 ++++\n 2 files changed, 8 insertions(+)\n\ndiff --git a/genisoimage/sha256.h b/genisoimage/sha256.h\nindex e7f4cb9..bcae7ef 100644\n--- a/genisoimage/sha256.h\n+++ b/genisoimage/sha256.h\n@@ -29,6 +29,10 @@\n #include <stdint.h>\n #include <stdio.h>\n \n+/* define __THROW to avoid build issue when it's not available from the libc */\n+#ifndef __THROW\n+# define __THROW\n+#endif\n \n /* Structure to save state of computation between the single steps.  */\n struct sha256_ctx\ndiff --git a/genisoimage/sha512.h b/genisoimage/sha512.h\nindex 7298355..8cee8b0 100644\n--- a/genisoimage/sha512.h\n+++ b/genisoimage/sha512.h\n@@ -29,6 +29,10 @@\n #include <stdint.h>\n #include <stdio.h>\n \n+/* define __THROW to avoid build issue when it's not available from the libc */\n+#ifndef __THROW\n+# define __THROW\n+#endif\n \n /* Structure to save state of computation between the single steps.  */\n struct sha512_ctx\n-- \n2.4.3\n\n"
  },
  {
    "path": "package/cdrkit/0003-Add-extern-to-char-outfile-declaration-to-fix-build-.patch",
    "content": "From eabcc8a6e39dc3c28faee3e04aa56cc65a38d65a Mon Sep 17 00:00:00 2001\nFrom: Urja Rannikko <urjaman@gmail.com>\nDate: Sun, 19 Jul 2020 20:28:27 +0300\nSubject: [PATCH] Add extern to char* outfile declaration to fix build with gcc\n 10\n\nWithout this linking fails with a rather long spew of\n\"multiple definition of `outfile'\".\n\nSigned-off-by: Urja Rannikko <urjaman@gmail.com>\n---\n genisoimage/genisoimage.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/genisoimage/genisoimage.h b/genisoimage/genisoimage.h\nindex bbedfb0..82c859b 100644\n--- a/genisoimage/genisoimage.h\n+++ b/genisoimage/genisoimage.h\n@@ -376,7 +376,7 @@ extern int\tuse_fileversion;\n extern int\tsplit_SL_component;\n extern int\tsplit_SL_field;\n extern char\t*trans_tbl;\n-char\t\t*outfile;\n+extern char\t*outfile;\n \n #define\tJMAX\t\t64\t/* maximum Joliet file name length (spec) */\n #define\tJLONGMAX\t103\t/* out of spec Joliet file name length */\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/cdrkit/Config.in",
    "content": "config BR2_PACKAGE_CDRKIT\n\tbool \"cdrkit\"\n\tdepends on BR2_USE_MMU # fork\n\t# Needed for libbz\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_LIBCAP\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  cdrkit is a suite of programs for recording CDs and DVDs,\n\t  blanking CD-RW media, creating ISO-9660 filesystem images,\n\t  extracting audio CD data, and more.\n\n\t  http://www.cdrkit.org/\n"
  },
  {
    "path": "package/cdrkit/cdrkit.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit/cdrkit_1.1.11-3.dsc\nsha256  d1c030756ecc182defee9fe885638c1785d35a2c2a297b4604c0e0dcc78e47da  cdrkit_1.1.11.orig.tar.gz\n# locally computed\nsha256  90daae00475a992a367da5b0658469a5d1c4449dbbe964c5b7246e1aec92f491  COPYING\n"
  },
  {
    "path": "package/cdrkit/cdrkit.mk",
    "content": "################################################################################\n#\n# cdrkit\n#\n################################################################################\n\nCDRKIT_VERSION = 1.1.11\nCDRKIT_SOURCE = cdrkit_$(CDRKIT_VERSION).orig.tar.gz\nCDRKIT_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit\nCDRKIT_DEPENDENCIES = libcap bzip2 zlib\nHOST_CDRKIT_DEPENDENCIES = host-libcap host-bzip2 host-zlib\nCDRKIT_LICENSE = GPL-2.0\nCDRKIT_LICENSE_FILES = COPYING\n\nifeq ($(BR2_ENDIAN),\"BIG\")\nCDRKIT_CONF_OPTS += -DBITFIELDS_HTOL=1\nelse\nCDRKIT_CONF_OPTS += -DBITFIELDS_HTOL=0\nendif\n\nifeq ($(BR2_PACKAGE_FILE),y)\nCDRKIT_DEPENDENCIES += host-pkgconf file\nCDRKIT_CONF_OPTS += \\\n\t-DUSE_MAGIC=ON \\\n\t-DEXTRA_LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs libmagic`\"\nelse\nCDRKIT_CONF_OPTS += -DUSE_MAGIC=OFF\nendif\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/cegui/0001-XMLParser.cpp-include-string.h.patch",
    "content": "From b98ed87225fa3c0f156b0798ca5c285d8fa8fac1 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 15 Jun 2021 07:27:41 +0200\nSubject: [PATCH] XMLParser.cpp: include string.h\n\nInclude string.h to avoid the following build failure:\n\n/home/buildroot/autobuild/run/instance-3/output-1/build/cegui-00b4e1fe174da53b7ed726ab5970ba51bd5b5ee0/cegui/src/XMLParserModules/RapidXML/XMLParser.cpp:73:5: error: 'memcpy' was not declared in this scope\n   73 |     memcpy(buf, source.getDataPtr(), size);\n      |     ^~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/1cb09e5f52435efc505c61707b2d5d2ee871524b\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nUpstream: 628f7edf4b420f752f1965ea11e5e747e3ff93b0\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n cegui/src/XMLParserModules/RapidXML/XMLParser.cpp | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/cegui/src/XMLParserModules/RapidXML/XMLParser.cpp b/cegui/src/XMLParserModules/RapidXML/XMLParser.cpp\nindex 810ea6bbf..59822fc80 100644\n--- a/cegui/src/XMLParserModules/RapidXML/XMLParser.cpp\n+++ b/cegui/src/XMLParserModules/RapidXML/XMLParser.cpp\n@@ -38,6 +38,8 @@\n #include \"CEGUI/Logger.h\"\n #include \"CEGUI/Exceptions.h\"\n \n+#include <string.h>\n+\n // Start of CEGUI namespace section\n namespace CEGUI\n {\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/cegui/Config.in",
    "content": "comment \"cegui needs a toolchain w/ C++, threads, dynamic library, wchar, gcc >= 5\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \\\n\t\t\t|| BR2_STATIC_LIBS || !BR2_USE_WCHAR \\\n\t\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\nconfig BR2_PACKAGE_CEGUI\n\tbool \"cegui\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++11 PR59987\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_GLM\n\tselect BR2_PACKAGE_LIBGLFW if BR2_PACKAGE_HAS_LIBGL # SampleBrowser dependency\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Crazy Eddie's GUI System is a free library providing windowing\n\t  and widgets for graphics APIs / engines where such\n\t  functionality is not natively available, or severely lacking.\n\t  The library is object orientated, written in C++, and targeted\n\t  at games developers who should be spending their time creating\n\t  great games, not building GUI sub-systems!\n\n\t  http://www.cegui.org.uk/\n"
  },
  {
    "path": "package/cegui/cegui.hash",
    "content": "# Locally computed:\nsha256  5b6f9e209e8a29b2f30d6aef92efd125c8bedaab5be04b562208be51e5e7f04e  cegui-00b4e1fe174da53b7ed726ab5970ba51bd5b5ee0.tar.gz\nsha256  cc869e2ece8ad039f6d7fd17259db4ea0ae0a502d02a1bb506c0168deb12e40d  COPYING\n"
  },
  {
    "path": "package/cegui/cegui.mk",
    "content": "################################################################################\n#\n# cegui\n#\n################################################################################\n\nCEGUI_VERSION = 00b4e1fe174da53b7ed726ab5970ba51bd5b5ee0\nCEGUI_SITE = $(call github,cegui,cegui,$(CEGUI_VERSION))\nCEGUI_LICENSE = MIT\nCEGUI_LICENSE_FILES = COPYING\nCEGUI_INSTALL_STAGING = YES\nCEGUI_CONF_OPTS = \\\n\t-DCEGUI_HAS_MINIZIP_RESOURCE_PROVIDER=OFF \\\n\t-DCEGUI_BUILD_RENDERER_IRRLICHT=OFF \\\n\t-DCEGUI_BUILD_RENDERER_OGRE=OFF \\\n\t-DCEGUI_BUILD_RENDERER_OPENGLES=OFF \\\n\t-DCEGUI_BUILD_XMLPARSER_XERCES=OFF \\\n\t-DCEGUI_USE_FRIBIDI=OFF \\\n\t-DCEGUI_SAMPLES_ENABLED=OFF \\\n\t-DCEGUI_BUILD_APPLICATION_TEMPLATES=OFF \\\n\t-DCEGUI_BUILD_PYTHON_MODULES_SWIG=OFF\nCEGUI_DEPENDENCIES = glm \\\n\t$(if $(BR2_PACKAGE_LIBGLFW),libglfw) \\\n\t$(if $(BR2_PACKAGE_HAS_LIBGL),libgl) \\\n\t$(if $(BR2_PACKAGE_HAS_LIBGLES),libgles) \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\n# libepoxy support cannot be enabled together with libglew\nifeq ($(BR2_PACKAGE_LIBGLEW)$(BR2_PACKAGE_LIBGLU),yy)\nCEGUI_DEPENDENCIES += libglew libglu\nCEGUI_CONF_OPTS += -DCEGUI_USE_GLEW=ON -DCEGUI_USE_EPOXY=OFF \\\n\t-DCEGUI_BUILD_RENDERER_OPENGL=ON \\\n\t-DCEGUI_BUILD_RENDERER_OPENGL3=ON\nelse ifeq ($(BR2_PACKAGE_LIBEPOXY),y)\nCEGUI_DEPENDENCIES += libepoxy\n# old OpenGL renderer module is only supported using GLEW\nCEGUI_CONF_OPTS += -DCEGUI_USE_EPOXY=ON -DCEGUI_USE_GLEW=OFF \\\n\t-DCEGUI_BUILD_RENDERER_OPENGL=OFF \\\n\t-DCEGUI_BUILD_RENDERER_OPENGL3=ON\nelse\nCEGUI_CONF_OPTS += -DCEGUI_USE_EPOXY=OFF -DCEGUI_USE_GLEW=OFF \\\n\t-DCEGUI_BUILD_RENDERER_OPENGL=OFF \\\n\t-DCEGUI_BUILD_RENDERER_OPENGL3=OFF\nendif\n\nifeq ($(BR2_PACKAGE_EXPAT),y)\nCEGUI_DEPENDENCIES += expat\nCEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_EXPAT=ON\nelse\nCEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_EXPAT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SDL2)$(BR2_PACKAGE_SDL2_IMAGE),yy)\nCEGUI_DEPENDENCIES += sdl2 sdl2_image\nCEGUI_CONF_OPTS += -DCEGUI_BUILD_IMAGECODEC_SDL2=ON\nelse\nCEGUI_CONF_OPTS += -DCEGUI_BUILD_IMAGECODEC_SDL2=OFF\nendif\n\nifeq ($(BR2_PACKAGE_PCRE),y)\nCEGUI_DEPENDENCIES += pcre\nCEGUI_CONF_OPTS += -DCEGUI_HAS_PCRE_REGEX=ON\nelse\nCEGUI_CONF_OPTS += -DCEGUI_HAS_PCRE_REGEX=OFF\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nCEGUI_DEPENDENCIES += freetype\nCEGUI_CONF_OPTS += -DCEGUI_HAS_FREETYPE=ON\nelse\nCEGUI_CONF_OPTS += -DCEGUI_HAS_FREETYPE=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nCEGUI_DEPENDENCIES += libxml2\nCEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_LIBXML2=ON\nelse\nCEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_LIBXML2=OFF\nendif\n\nifeq ($(BR2_PACKAGE_RAPIDXML),y)\nCEGUI_DEPENDENCIES += rapidxml\nCEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_RAPIDXML=ON\nelse\nCEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_RAPIDXML=OFF\nendif\n\nifeq ($(BR2_PACKAGE_TINYXML),y)\nCEGUI_DEPENDENCIES += tinyxml\nCEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_TINYXML=ON\nelse\nCEGUI_CONF_OPTS += -DCEGUI_BUILD_XMLPARSER_TINYXML=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBFREEIMAGE),y)\nCEGUI_DEPENDENCIES += libfreeimage\nCEGUI_CONF_OPTS += -DCEGUI_BUILD_IMAGECODEC_FREEIMAGE=ON\nelse\nCEGUI_CONF_OPTS += -DCEGUI_BUILD_IMAGECODEC_FREEIMAGE=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/cereal/0001-Store-a-copy-of-each-serialized-shared_ptr-within-the-archive.patch",
    "content": "From f27c12d491955c94583512603bf32c4568f20929 Mon Sep 17 00:00:00 2001\nFrom: Michael Walz <code@serpedon.de>\nDate: Tue, 2 Feb 2021 00:50:29 +0100\nSubject: [PATCH] Store a copy of each serialized shared_ptr within the archive\n to prevent the shared_ptr to be freed to early. (#667)\n\nThe archives use the memory address pointed by the shared_ptr as a\nunique id which must not be reused during lifetime of the archive.\nTherefore, the archives stores a copy of it.\nThis problem was also reported as CVE-2020-11105.\n\n[Retrieved from:\nhttps://github.com/USCiLab/cereal/commit/f27c12d491955c94583512603bf32c4568f20929]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/cereal/cereal.hpp       | 13 +++++++++++--\n include/cereal/types/memory.hpp |  2 +-\n 2 files changed, 12 insertions(+), 3 deletions(-)\n\ndiff --git a/include/cereal/cereal.hpp b/include/cereal/cereal.hpp\nindex 99bed9d6..f0d15e8b 100644\n--- a/include/cereal/cereal.hpp\n+++ b/include/cereal/cereal.hpp\n@@ -369,12 +369,17 @@ namespace cereal\n           point to the same data.\n \n           @internal\n-          @param addr The address (see shared_ptr get()) pointed to by the shared pointer\n+          @param sharedPointer The shared pointer itself (the adress is taked via get()).\n+                               The archive takes a copy to prevent the memory location to be freed\n+                               as long as the address is used as id. This is needed to prevent CVE-2020-11105.\n           @return A key that uniquely identifies the pointer */\n-      inline std::uint32_t registerSharedPointer( void const * addr )\n+      inline std::uint32_t registerSharedPointer(const std::shared_ptr<const void>& sharedPointer)\n       {\n+        void const * addr = sharedPointer.get();\n+\n         // Handle null pointers by just returning 0\n         if(addr == 0) return 0;\n+        itsSharedPointerStorage.push_back(sharedPointer);\n \n         auto id = itsSharedPointerMap.find( addr );\n         if( id == itsSharedPointerMap.end() )\n@@ -645,6 +650,10 @@ namespace cereal\n       //! Maps from addresses to pointer ids\n       std::unordered_map<void const *, std::uint32_t> itsSharedPointerMap;\n \n+      //! Copy of shared pointers used in #itsSharedPointerMap to make sure they are kept alive\n+      //  during lifetime of itsSharedPointerMap to prevent CVE-2020-11105.\n+      std::vector<std::shared_ptr<const void>> itsSharedPointerStorage;\n+\n       //! The id to be given to the next pointer\n       std::uint32_t itsCurrentPointerId;\n \ndiff --git a/include/cereal/types/memory.hpp b/include/cereal/types/memory.hpp\nindex 59e9da9b..cac1f334 100644\n--- a/include/cereal/types/memory.hpp\n+++ b/include/cereal/types/memory.hpp\n@@ -263,7 +263,7 @@ namespace cereal\n   {\n     auto & ptr = wrapper.ptr;\n \n-    uint32_t id = ar.registerSharedPointer( ptr.get() );\n+    uint32_t id = ar.registerSharedPointer( ptr );\n     ar( CEREAL_NVP_(\"id\", id) );\n \n     if( id & detail::msb_32bit )\n"
  },
  {
    "path": "package/cereal/Config.in",
    "content": "config BR2_PACKAGE_CEREAL\n\tbool \"cereal\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\thelp\n\t  cereal is a header-only C++11 serialization library.\n\t  cereal takes arbitrary data types and reversibly turns them\n\t  into different representations, such as compact binary\n\t  encodings, XML or JSON. cereal was designed to be fast,\n\t  light-weight, and easy to extend - it has no external\n\t  dependencies and can be easily bundled with other code or used\n\t  standalone.\n\n\t  https://github.com/USCiLab/cereal\n\ncomment \"cereal needs a toolchain w/ C++, gcc >= 4.7, threads, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP  || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/cereal/cereal.hash",
    "content": "# Locally computed\nsha256 329ea3e3130b026c03a4acc50e168e7daff4e6e661bc6a7dfec0d77b570851d5  cereal-1.3.0.tar.gz\nsha256 18fd7618c44c9fe28b5f54cd19747df3c0472ed33e8507fea571e2acf6e72f34  LICENSE\nsha256 d9e523e8736ac0c68064c7ad312a222f285e82bf6c96a1b1c2cadaffff9fc64f  include/cereal/external/base64.hpp\nsha256 7fb69c707f0ed3a8b59b8f949f0928a9cc06d67bc15d599094693703ff70ea26  include/cereal/external/rapidjson/rapidjson.h\nsha256 794bf3b2ecf5cf0c740ac6c524d66ce6284c4b1de1f983d21a242b8abbeb9720  include/cereal/external/rapidxml/license.txt\n"
  },
  {
    "path": "package/cereal/cereal.mk",
    "content": "################################################################################\n#\n# cereal\n#\n################################################################################\n\nCEREAL_VERSION = 1.3.0\nCEREAL_SITE = $(call github,USCiLab,cereal,v$(CEREAL_VERSION))\n# For licensing, see also: https://github.com/USCiLab/cereal/issues/609\nCEREAL_LICENSE = BSD-3-Clause (cereal), Zlib (base64.hpp), MIT (rapidjson), BSL-1.0 or MIT (rapidxml)\nCEREAL_LICENSE_FILES = LICENSE include/cereal/external/base64.hpp include/cereal/external/rapidjson/rapidjson.h include/cereal/external/rapidxml/license.txt\nCEREAL_CPE_ID_VENDOR = usc\nCEREAL_INSTALL_STAGING = YES\nCEREAL_INSTALL_TARGET = NO\nCEREAL_CONF_OPTS = \\\n\t-DTHREAD_SAFE=ON \\\n\t-DJUST_INSTALL_CEREAL=ON\n\n# 0001-Store-a-copy-of-each-serialized-shared_ptr-within-the-archive.patch\nCEREAL_IGNORE_CVES += CVE-2020-11105\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/cgic/0001-prepare_makefile.patch",
    "content": "Makefile: fix for cross-compilation\n\nProbably-Signed-off-by: Dave Bender <bender@benegon.com>\n[yann.morin.1998@free.fr: patch was made by Dave, but he\n forgot his SoB line, so I added it]\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\ndiff -rupN cgic206/Makefile cgic206-br/Makefile\n--- cgic206/Makefile\t2014-03-16 18:17:11.000000000 -0400\n+++ cgic206-br/Makefile\t2015-01-16 11:18:03.714874000 -0500\n@@ -1,15 +1,14 @@\n-CFLAGS=-g -Wall\n-CC=gcc\n-AR=ar\n-RANLIB=ranlib\n LIBS=-L./ -lcgic\n \n all: libcgic.a cgictest.cgi capture\n \n install: libcgic.a\n-\tcp libcgic.a /usr/local/lib\n-\tcp cgic.h /usr/local/include\n-\t@echo libcgic.a is in /usr/local/lib. cgic.h is in /usr/local/include.\n+\tcp libcgic.a $(PREFIX)/usr/lib\n+\tcp cgic.h $(PREFIX)/usr/include\n+\t@echo libcgic.a is in $(PREFIX)/usr/lib. cgic.h is in $(PREFIX)/usr/include.\n+\n+cgi.o: cgic.c cgic.h\n+\t$(CC) $(CFLAGS) cgic.c -o cgic.o\n \n libcgic.a: cgic.o cgic.h\n \trm -f libcgic.a\n@@ -19,10 +18,10 @@ libcgic.a: cgic.o cgic.h\n #mingw32 and cygwin users: replace .cgi with .exe\n \n cgictest.cgi: cgictest.o libcgic.a\n-\tgcc cgictest.o -o cgictest.cgi ${LIBS}\n+\t$(CC) cgictest.o -o cgictest.cgi ${LIBS}\n \n capture: capture.o libcgic.a\n-\tgcc capture.o -o capture ${LIBS}\n+\t$(CC) capture.o -o capture ${LIBS}\n \n clean:\n \trm -f *.o *.a cgictest.cgi capture\n"
  },
  {
    "path": "package/cgic/0002-file_enhancements.patch",
    "content": "Create better temporary files.\n\nProbably-Signed-off-by: Dave Bender <bender@benegon.com>\n[yann.morin.1998@free.fr: patch was made by Dave, but he\n forgot his SoB line, so I added it; split the patch in two\n  independent fixes]\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -rupN cgic206/cgic.c cgic206_tempfile/cgic.c\n--- cgic206/cgic.c\t2014-03-16 18:17:11.000000000 -0400\n+++ cgic206_tempfile/cgic.c\t2015-01-21 11:58:45.436384908 -0500\n@@ -22,6 +22,8 @@\n #define CGICDEBUGEND\n #endif /* CGICDEBUG */\n \n+#define _GNU_SOURCE\n+\n #include <stdio.h>\n #include <string.h>\n #include <ctype.h>\n@@ -34,11 +36,11 @@\n #include <io.h>\n \n /* cgic 2.01 */\n-#include <fcntl.h>\n \n #else\n #include <unistd.h>\n #endif /* WIN32 */\n+#include <fcntl.h>\n #include \"cgic.h\"\n \n #define cgiStrEq(a, b) (!strcmp((a), (b)))\n@@ -636,16 +638,17 @@ static cgiParseResultType getTempFileNam\n \t\twindow between the file's creation and the\n \t\tchmod call (glibc 2.0.6 and lower might\n \t\totherwise have allowed this). */\n+\tmode_t umode;\n \tint outfd; \n+\tumode = umask(0600);\n \tstrcpy(tfileName, cgicTempDir \"/cgicXXXXXX\");\n-\toutfd = mkstemp(tfileName);\n+\toutfd = mkostemp(tfileName, O_CLOEXEC | O_NOATIME);\n+\tumask(umode);\n \tif (outfd == -1) {\n \t\treturn cgiParseIO;\n \t}\n-\tclose(outfd);\n-\t/* Fix the permissions */\n-\tif (chmod(tfileName, 0600) != 0) {\n-\t\tunlink(tfileName);\n+\n+\tif (close(outfd)) {\n \t\treturn cgiParseIO;\n \t}\n #else\n"
  },
  {
    "path": "package/cgic/0003-restore-cgiFormFileGetTempfileName.patch",
    "content": "Restore lost functionality\n\nProbably-Signed-off-by: Dave Bender <bender@benegon.com>\n[yann.morin.1998@free.fr: patch was made by Dave, but he\n forgot his SoB line, so I added it]\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -rupN cgic206/cgic.c cgic206_tempfile/cgic.c\n--- cgic206/cgic.c\t2014-03-16 18:17:11.000000000 -0400\n+++ cgic206_tempfile/cgic.c\t2015-01-21 11:58:45.436384908 -0500\n@@ -1278,6 +1278,20 @@ cgiFormResultType cgiFormFileContentType\n \t}\n }\n \n+const char* cgiFormFileGetTempfileName(\n+\tchar* name)\n+{\n+\tcgiFormEntry *e;\n+\te = cgiFormEntryFindFirst(name);\n+\tif (!e) {\n+\t\treturn NULL;\n+\t} else if (!strlen(e->tfileName)) {\n+\t\treturn NULL;\n+\t} else {\n+\t\treturn e->tfileName;\n+\t}\n+}\n+\n cgiFormResultType cgiFormFileSize(\n \tchar *name, int *sizeP)\n {\ndiff -rupN cgic206/cgic.h cgic206_tempfile/cgic.h\n--- cgic206/cgic.h\t2014-03-16 18:17:11.000000000 -0400\n+++ cgic206_tempfile/cgic.h\t2015-01-21 11:53:02.915148026 -0500\n@@ -141,6 +141,8 @@ extern cgiFormResultType cgiFormRadio(\n \tchar *name, char **valuesText, int valuesTotal, \n \tint *result, int defaultV);\t\n \n+extern const char* cgiFormFileGetTempfileName(char* name);\n+\n /* The paths returned by this function are the original names of files\n \tas reported by the uploading web browser and shoult NOT be\n \tblindly assumed to be \"safe\" names for server-side use! */\n"
  },
  {
    "path": "package/cgic/Config.in",
    "content": "config BR2_PACKAGE_CGIC\n\tbool \"cgic\"\n\thelp\n\t  C CGI library\n\n\t  http://www.boutell.com/cgic/\n"
  },
  {
    "path": "package/cgic/cgic.hash",
    "content": "# Locally computed\nsha256 1e8834642a4b89528bb7bde2f287e133c6b07e210e68681a34137c436d59d320  cgic207.tar.gz\nsha256 6a7de92593d64dbf7630d8f66f97e04a899769bef1e055f2434bc06b87b9de62  license.txt\n"
  },
  {
    "path": "package/cgic/cgic.mk",
    "content": "################################################################################\n#\n# cgic\n#\n################################################################################\n\nCGIC_VERSION = 2.07\nCGIC_SOURCE = cgic207.tar.gz\nCGIC_SITE = http://boutell.com/cgic\nCGIC_LICENSE = Custom\nCGIC_LICENSE_FILES = license.txt\n\n# Installs only a static library and a header file\nCGIC_INSTALL_STAGING = YES\nCGIC_INSTALL_TARGET = NO\n\ndefine CGIC_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) libcgic.a\nendef\n\ndefine CGIC_INSTALL_STAGING_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) PREFIX=$(STAGING_DIR) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/cgilua/Config.in",
    "content": "config BR2_PACKAGE_CGILUA\n\tbool \"cgilua\"\n\tselect BR2_PACKAGE_LUAFILESYSTEM # runtime\n\thelp\n\t  CGILua is a tool for creating dynamic HTML pages\n\t  and manipulating input data from Web forms.\n\n\t  http://keplerproject.github.com/cgilua\n"
  },
  {
    "path": "package/cgilua/cgilua.hash",
    "content": "# computed by luarocks/buildroot\nsha256 7bfb88c483136bca9b814316d7f9ff581a805d68d144c1eebdfda3e8dfb5eb3a  cgilua-6.0.2-0.src.rock\nsha256 b82f9b13f9b1a1387f53203a625612914630b520377731b0aab7ce93ad2b18c4  cgilua/doc/us/license.html\n"
  },
  {
    "path": "package/cgilua/cgilua.mk",
    "content": "################################################################################\n#\n# cgilua\n#\n################################################################################\n\nCGILUA_VERSION = 6.0.2-0\nCGILUA_SUBDIR = cgilua\nCGILUA_LICENSE = MIT\nCGILUA_LICENSE_FILES = $(CGILUA_SUBDIR)/doc/us/license.html\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/cgroupfs-mount/Config.in",
    "content": "config BR2_PACKAGE_CGROUPFS_MOUNT\n\tbool \"cgroupfs-mount\"\n\tdepends on !BR2_INIT_SYSTEMD\n\thelp\n\t  cgroupfs mount and umount scripts.\n\n\t  requires a Linux kernel >= 3.0 with the following options\n\t  enabled:\n\n\t  - CONFIG_BLK_CGROUP\n\t  - CONFIG_CGROUPS\n\t  - CONFIG_CGROUP_CPUACCT\n\t  - CONFIG_CGROUP_DEVICE\n\t  - CONFIG_CGROUP_FREEZER\n\t  - CONFIG_CGROUP_WRITEBACK\n\t  - CONFIG_CGROUP_SCHED\n\t  - CONFIG_CGROUP_PIDS\n\n\t  https://github.com/tianon/cgroupfs-mount\n"
  },
  {
    "path": "package/cgroupfs-mount/S30cgroupfs",
    "content": "#!/bin/sh\n#\n# Set up cgroupfs mounts.\n#\n\nstart() {\n\tprintf \"Mounting cgroupfs hierarchy: \"\n\t/usr/bin/cgroupfs-mount\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Unmounting cgroupfs hierarchy: \"\n\t/usr/bin/cgroupfs-umount\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n      start\n\t;;\n  stop)\n      stop\n\t;;\n  restart|reload)\n      restart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n"
  },
  {
    "path": "package/cgroupfs-mount/cgroupfs-mount.hash",
    "content": "# Locally calculated\nsha256  d6c8aff7af59c7d0082ee3018c97f73b0421e81a49bb28ad9f66a36da5cd6ec7  cgroupfs-mount-1.4.tar.gz\nsha256  e52f47a650734f70c40c8fd9318f85e42777bf3fba7ff1dfb72f845bb417f7e6  debian/copyright\n"
  },
  {
    "path": "package/cgroupfs-mount/cgroupfs-mount.mk",
    "content": "################################################################################\n#\n# cgroupfs-mount\n#\n################################################################################\n\nCGROUPFS_MOUNT_VERSION = 1.4\nCGROUPFS_MOUNT_SITE = $(call github,tianon,cgroupfs-mount,$(CGROUPFS_MOUNT_VERSION))\nCGROUPFS_MOUNT_LICENSE = GPL-3.0+\nCGROUPFS_MOUNT_LICENSE_FILES = debian/copyright\nCGROUPFS_MOUNT_CPE_ID_VENDOR = cgroupfs-mount_project\n\ndefine CGROUPFS_MOUNT_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/cgroupfs-mount $(TARGET_DIR)/usr/bin/cgroupfs-mount\n\t$(INSTALL) -D -m 0755 $(@D)/cgroupfs-umount $(TARGET_DIR)/usr/bin/cgroupfs-umount\nendef\n\ndefine CGROUPFS_MOUNT_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D $(CGROUPFS_MOUNT_PKGDIR)/S30cgroupfs \\\n\t\t$(TARGET_DIR)/etc/init.d/S30cgroupfs\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/chartjs/Config.in",
    "content": "config BR2_PACKAGE_CHARTJS\n\tbool \"chartjs\"\n\thelp\n\t  Chart.js, a simple yet flexible JavaScript charting library\n\t  for designers & developers\n\n\t  https://www.chartjs.org/\n"
  },
  {
    "path": "package/chartjs/chartjs.hash",
    "content": "# Locally computed:\nsha256\t9ef3697e279a585c79730f35dba16ad4e24ddeed49a150adb341c31f191fb78e  chartjs-2.9.4.tar.gz\nsha256\t7b43caae91f31b18dc81fae6e0f7aa1acbecaa6d84e3249905cbe15308307d67  LICENSE.md\n"
  },
  {
    "path": "package/chartjs/chartjs.mk",
    "content": "################################################################################\n#\n# chartjs\n#\n################################################################################\n\nCHARTJS_VERSION = 2.9.4\nCHARTJS_SITE = $(call github,chartjs,Chart.js,v$(CHARTJS_VERSION))\nCHARTJS_LICENSE = MIT\nCHARTJS_LICENSE_FILES = LICENSE.md\nCHARTJS_CPE_ID_VENDOR = chartjs\nCHARTJS_CPE_ID_PRODUCT = chart.js\n\ndefine CHARTJS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/dist/Chart.min.css \\\n\t\t$(TARGET_DIR)/var/www/chartjs/css/Chart.css\n\t$(INSTALL) -m 0644 -D $(@D)/dist/Chart.min.js \\\n\t\t$(TARGET_DIR)/var/www/chartjs/js/Chart.js\n\t$(INSTALL) -m 0644 -D $(@D)/dist/Chart.bundle.min.js \\\n\t\t$(TARGET_DIR)/var/www/chartjs/js/Chart.bundle.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/check/Config.in",
    "content": "config BR2_PACKAGE_CHECK\n\tbool \"check\"\n\thelp\n\t  Check is a unit testing framework for C.\n\n\t  https://libcheck.github.io/check/\n"
  },
  {
    "path": "package/check/check.hash",
    "content": "# Locally computed\nsha256  a8de4e0bacfb4d76dd1c618ded263523b53b85d92a146d8835eb1a52932fa20a  check-0.15.2.tar.gz\n# License files, locally calculated\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING.LESSER\n"
  },
  {
    "path": "package/check/check.mk",
    "content": "################################################################################\n#\n# check\n#\n################################################################################\n\nCHECK_VERSION = 0.15.2\nCHECK_SITE = https://github.com/libcheck/check/releases/download/$(CHECK_VERSION)\nCHECK_INSTALL_STAGING = YES\nCHECK_DEPENDENCIES = host-pkgconf\nCHECK_LICENSE = LGPL-2.1+\nCHECK_LICENSE_FILES = COPYING.LESSER\n\n# Having checkmk in the target makes no sense\ndefine CHECK_REMOVE_CHECKMK\n\trm -f $(TARGET_DIR)/usr/bin/checkmk\nendef\nCHECK_POST_INSTALL_TARGET_HOOKS += CHECK_REMOVE_CHECKMK\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/checkpolicy/Config.in",
    "content": "config BR2_PACKAGE_CHECKPOLICY\n\tbool \"checkpolicy\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libselinux\n\tdepends on !BR2_STATIC_LIBS # libselinux\n\tselect BR2_PACKAGE_LIBSELINUX\n\tselect BR2_PACKAGE_FLEX\n\thelp\n\t  checkpolicy is the SELinux policy compiler. It uses libsepol\n\t  to generate the binary policy. checkpolicy uses the static\n\t  libsepol since it deals with low level details of the policy\n\t  that have not been encapsulated/abstracted by a proper\n\t  shared library interface.\n\n\t  http://selinuxproject.org/page/Main_Page\n\ncomment \"checkpolicy needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/checkpolicy/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_CHECKPOLICY\n\tbool \"host checkpolicy\"\n\thelp\n\t  checkpolicy is the SELinux policy compiler. It uses libsepol\n\t  to generate the binary policy. checkpolicy uses the static\n\t  libsepol since it deals with low level details of the policy\n\t  that have not been encapsulated/abstracted by a proper\n\t  shared library interface.\n\n\t  http://selinuxproject.org/page/Main_Page\n"
  },
  {
    "path": "package/checkpolicy/checkpolicy.hash",
    "content": "# https://github.com/SELinuxProject/selinux/wiki/Releases\nsha256 9b1c81fa86fe3867842164448d90c8e7ea94b2987497809c65d4caa87a5c5bc8  checkpolicy-3.2.tar.gz\n\n# Hash for license file\nsha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  COPYING\n"
  },
  {
    "path": "package/checkpolicy/checkpolicy.mk",
    "content": "################################################################################\n#\n# checkpolicy\n#\n################################################################################\n\nCHECKPOLICY_VERSION = 3.2\nCHECKPOLICY_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(CHECKPOLICY_VERSION)\nCHECKPOLICY_LICENSE = GPL-2.0\nCHECKPOLICY_LICENSE_FILES = COPYING\n\nCHECKPOLICY_DEPENDENCIES = libselinux flex host-flex host-bison\n\nCHECKPOLICY_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) \\\n\tLEX=\"$(HOST_DIR)/bin/flex\" \\\n\tYACC=\"$(HOST_DIR)/bin/bison -y\"\n\n# DESTDIR is used at build time to find libselinux\ndefine CHECKPOLICY_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CHECKPOLICY_MAKE_OPTS) DESTDIR=$(STAGING_DIR)\nendef\n\ndefine CHECKPOLICY_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CHECKPOLICY_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install\n\nendef\n\ndefine CHECKPOLICY_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CHECKPOLICY_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install\nendef\n\nHOST_CHECKPOLICY_DEPENDENCIES = host-libselinux host-flex host-bison\n\n# PREFIX is used at build time to find host-libselinux\nHOST_CHECKPOLICY_MAKE_OPTS = \\\n\t$(HOST_CONFIGURE_OPTS) \\\n\tPREFIX=$(HOST_DIR) \\\n\tLEX=\"$(HOST_DIR)/bin/flex\" \\\n\tYACC=\"$(HOST_DIR)/bin/bison -y\"\n\ndefine HOST_CHECKPOLICY_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CHECKPOLICY_MAKE_OPTS)\nendef\n\ndefine HOST_CHECKPOLICY_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CHECKPOLICY_MAKE_OPTS) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/checksec/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_CHECKSEC\n\tbool \"host checksec\"\n\thelp\n\t  This tool provides a shell script to check the\n\t  properties of executables\n\t  (PIE,RELRO,Stack Canaries,Fortify Source).\n\t  It also has a kernel test mode that can run on target\n\t  for testing of PaX, ASLR, heap and config hardening.\n\n\t  NOTE: when using this tool as a host tool, the tool\n\t  can offline check a target folder of elf files for\n\t  hardening features enabled in those elf files.  There\n\t  are other features of this tool, like the kernel test\n\t  feature that are not functional offline, but require the\n\t  user to execute in a chroot or on target.\n\n\t  https://github.com/slimm609/checksec.sh.git\n"
  },
  {
    "path": "package/checksec/checksec.hash",
    "content": "# Locally calculated\nsha256 c5e2a8e188040fc34eb9362084778a2e25f8d1f888e47a2be09efa7cecd9c70d  LICENSE.txt\nsha256 d3c8e80bdd1cee0c2f0e60cb7a8a9482b82f651ea069e3a4453ae9a44072a632  checksec-2.2.2.tar.gz\n"
  },
  {
    "path": "package/checksec/checksec.mk",
    "content": "################################################################################\n#\n# checksec\n#\n################################################################################\n\nCHECKSEC_VERSION = 2.2.2\nCHECKSEC_SITE = $(call github,slimm609,checksec.sh,$(CHECKSEC_VERSION))\nCHECKSEC_LICENSE = BSD-3-Clause\nCHECKSEC_LICENSE_FILES = LICENSE.txt\n\ndefine HOST_CHECKSEC_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/checksec $(HOST_DIR)/bin/checksec\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/chipmunk/0001-Fix-build-failure-on-musl.patch",
    "content": "From 231c1fb97785290aaac89ed74d7cb24eaa74b363 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 2 Sep 2018 12:05:22 +0200\nSubject: [PATCH] Fix build failure on musl\n\nBuild fails on:\n/home/test/autobuild/run/instance-0/output/build/chipmunk-7.0.2/src/cpHastySpace.c:11:24: fatal error: sys/sysctl.h: No such file or directory\n\nIndeed, sys/sysctl.h is not available on musl so include this header\nonly if __APPLE__ is defined as sysctlbyname is only used in this case.\n\nFixes:\n - http://autobuild.buildroot.org/results/e5be2f8eb9315a9054e1c8d854dec37cbb28eed7\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/slembcke/Chipmunk2D/pull/171]\n---\n src/cpHastySpace.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/src/cpHastySpace.c b/src/cpHastySpace.c\nindex 8dca425..e087df8 100644\n--- a/src/cpHastySpace.c\n+++ b/src/cpHastySpace.c\n@@ -8,7 +8,9 @@\n \n //#include <sys/param.h >\n #ifndef _WIN32\n+#ifdef __APPLE__\n #include <sys/sysctl.h>\n+#endif\n #include <pthread.h>\n #else\n #ifndef WIN32_LEAN_AND_MEAN\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/chipmunk/Config.in",
    "content": "\ncomment \"chipmunk needs an OpenGL backend\"\n\tdepends on !BR2_PACKAGE_HAS_LIBGL\n\nconfig BR2_PACKAGE_CHIPMUNK\n\tbool \"chipmunk\"\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\thelp\n\t  Chipmunk2D is a simple, lightweight, fast and portable 2D\n\t  rigid body physics library written in C.\n\n\t  http://chipmunk-physics.net/\n"
  },
  {
    "path": "package/chipmunk/chipmunk.hash",
    "content": "# Locally calculated\nsha256\t1e6f093812d6130e45bdf4cb80280cb3c93d1e1833d8cf989d554d7963b7899a  Chipmunk-7.0.3.tar.gz\n\n# Hash for license file:\nsha256\t109cedb0301cba4e05fa99241f162bdad015c9541ae84b420b0148ac1ea588e2  LICENSE.txt\n"
  },
  {
    "path": "package/chipmunk/chipmunk.mk",
    "content": "################################################################################\n#\n# chipmunk\n#\n################################################################################\n\nCHIPMUNK_VERSION = 7.0.3\nCHIPMUNK_SITE = https://github.com/slembcke/Chipmunk2D/archive\nCHIPMUNK_SOURCE = Chipmunk-$(CHIPMUNK_VERSION).tar.gz\nCHIPMUNK_INSTALL_STAGING = YES\nCHIPMUNK_LICENSE = MIT\nCHIPMUNK_LICENSE_FILES = LICENSE.txt\nCHIPMUNK_DEPENDENCIES = libgl\nCHIPMUNK_CONF_OPTS = -DBUILD_DEMOS=OFF\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nCHIPMUNK_CONF_OPTS += -DBUILD_STATIC=ON -DINSTALL_STATIC=ON\nelse\nCHIPMUNK_CONF_OPTS += -DBUILD_STATIC=OFF -DINSTALL_STATIC=OFF\nendif\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nCHIPMUNK_CONF_OPTS += -DBUILD_SHARED=ON\nelse\nCHIPMUNK_CONF_OPTS += -DBUILD_SHARED=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/chirpstack-gateway-bridge/Config.in",
    "content": "config BR2_PACKAGE_CHIRPSTACK_GATEWAY_BRIDGE\n\tbool \"chirpstack-gateway-bridge\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\thelp\n\t  https://github.com/chirpstack/chirpstack-gateway-bridge\n"
  },
  {
    "path": "package/chirpstack-gateway-bridge/chirpstack-gateway-bridge.hash",
    "content": "sha256 c2d22950fae583ae70bd8f67fbfc24d6b79242b17c15c766b5e79cfecc70eb55  chirpstack-gateway-bridge-v3.14.2.tar.gz\n"
  },
  {
    "path": "package/chirpstack-gateway-bridge/chirpstack-gateway-bridge.mk",
    "content": "################################################################################\n#\n# chirpstack-gateway-bridge\n#\n################################################################################\n\nCHIRPSTACK_GATEWAY_BRIDGE_VERSION = v3.14.2\nCHIRPSTACK_GATEWAY_BRIDGE_SITE = $(call github,chirpstack,chirpstack-gateway-bridge,$(CHIRPSTACK_GATEWAY_BRIDGE_VERSION))\nCHIRPSTACK_GATEWAY_BRIDGE_LICENSE = MIT\nCHIRPSTACK_GATEWAY_BRIDGE_LICENSE_FILES = LICENSE\n\nCHIRPSTACK_GATEWAY_BRIDGE_LDFLAGS = -s -w -X main.version=$(CHIRPSTACK_GATEWAY_BRIDGE_VERSION)\nCHIRPSTACK_GATEWAY_BRIDGE_GO_ENV = CGO_ENABLED=0 GOPROXY=https://goproxy.io,direct\n\nCHIRPSTACK_GATEWAY_BRIDGE_POST_EXTRACT_HOOKS += CHIRPSTACK_GATEWAY_BRIDGE_INSTALL_DEPS\n\ndefine CHIRPSTACK_GATEWAY_BRIDGE_INSTALL_DEPS\n    (cd $(@D); \\\n        mkdir -p build; \\\n        $(HOST_GO_TARGET_ENV) $(CHIRPSTACK_GATEWAY_BRIDGE_GO_ENV) $(GO_BIN) install -mod=mod golang.org/x/lint/golint; \\\n    \t$(HOST_GO_TARGET_ENV) $(CHIRPSTACK_GATEWAY_BRIDGE_GO_ENV) $(GO_BIN) install -mod=mod github.com/goreleaser/goreleaser; \\\n\t    $(HOST_GO_TARGET_ENV) $(CHIRPSTACK_GATEWAY_BRIDGE_GO_ENV) $(GO_BIN) install -mod=mod github.com/goreleaser/nfpm \\\n    )\nendef\n\ndefine CHIRPSTACK_GATEWAY_BRIDGE_BUILD_CMDS\n    (cd $(@D); \\\n        mkdir -p build; \\\n        $(HOST_GO_TARGET_ENV) $(CHIRPSTACK_GATEWAY_BRIDGE_GO_ENV) $(GO_BIN) \\\n            build -a -installsuffix cgo -mod=mod -ldflags \"$(CHIRPSTACK_GATEWAY_BRIDGE_LDFLAGS)\" \\\n            -o build/chirpstack-gateway-bridge cmd/chirpstack-gateway-bridge/main.go \\\n    )\nendef\n\ndefine CHIRPSTACK_GATEWAY_BRIDGE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/build/chirpstack-gateway-bridge $(TARGET_DIR)/usr/bin/chirpstack-gateway-bridge\nendef\n\n\n$(eval $(golang-package))\n"
  },
  {
    "path": "package/chocolate-doom/0001-Remove-redundant-demoextend-definition.patch",
    "content": "From a8fd4b1f563d24d4296c3e8225c8404e2724d4c2 Mon Sep 17 00:00:00 2001\nFrom: Jordan Christiansen <xordspar0@gmail.com>\nDate: Sun, 15 Mar 2020 16:55:33 -0500\nSubject: [PATCH] Remove redundant demoextend definition\n\nGCC 10 enables -fno-common by default, which causes the linker to fail when\nthere are multple definitions of a global variable.\n\nSee https://gcc.gnu.org/gcc-10/porting_to.html\n\n[Retrieved from:\nhttps://github.com/chocolate-doom/chocolate-doom/commit/a8fd4b1f563d24d4296c3e8225c8404e2724d4c2]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/hexen/mn_menu.c | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/src/hexen/mn_menu.c b/src/hexen/mn_menu.c\nindex 059f45b3e..a97b7fcd1 100644\n--- a/src/hexen/mn_menu.c\n+++ b/src/hexen/mn_menu.c\n@@ -131,7 +131,6 @@ boolean MenuActive;\n int InfoType;\n int messageson = true;\n boolean mn_SuicideConsole;\n-boolean demoextend; // from h2def.h\n \n // PRIVATE DATA DEFINITIONS ------------------------------------------------\n \n"
  },
  {
    "path": "package/chocolate-doom/Config.in",
    "content": "config BR2_PACKAGE_CHOCOLATE_DOOM\n\tbool \"chocolate-doom\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # sdl2\n\tselect BR2_PACKAGE_SDL2\n\tselect BR2_PACKAGE_SDL2_MIXER\n\tselect BR2_PACKAGE_SDL2_NET\n\thelp\n\t  Chocolate Doom is a set of conservative source ports for Doom,\n\t  Heretic, Hexen and Strife, with a philosophy of preserving the\n\t  look, feel, and bugs of the vanilla versions of each.\n\n\t  http://www.chocolate-doom.org\n\ncomment \"chocolate-doom needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/chocolate-doom/chocolate-doom.hash",
    "content": "# Locally computed\nsha256  d435d6177423491d60be706da9f07d3ab4fabf3e077ec2a3fc216e394fcfc8c7  chocolate-doom-3.0.1.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/chocolate-doom/chocolate-doom.mk",
    "content": "################################################################################\n#\n# chocolate-doom\n#\n################################################################################\n\nCHOCOLATE_DOOM_VERSION = 3.0.1\nCHOCOLATE_DOOM_SITE = http://www.chocolate-doom.org/downloads/$(CHOCOLATE_DOOM_VERSION)\nCHOCOLATE_DOOM_LICENSE = GPL-2.0+\nCHOCOLATE_DOOM_LICENSE_FILES = COPYING\nCHOCOLATE_DOOM_DEPENDENCIES = host-pkgconf sdl2 sdl2_mixer sdl2_net\n\n# Avoid installing desktop entries, icons, etc.\nCHOCOLATE_DOOM_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec\n\nCHOCOLATE_DOOM_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nCHOCOLATE_DOOM_CFLAGS += -O0\nendif\n\nCHOCOLATE_DOOM_CONF_ENV += CFLAGS=\"$(CHOCOLATE_DOOM_CFLAGS)\"\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nCHOCOLATE_DOOM_DEPENDENCIES += libpng\nCHOCOLATE_DOOM_CONF_OPTS += --with-libpng\nelse\nCHOCOLATE_DOOM_CONF_OPTS += --without-libpng\nendif\n\nifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y)\nCHOCOLATE_DOOM_DEPENDENCIES += libsamplerate\nCHOCOLATE_DOOM_CONF_OPTS += --with-libsamplerate\nelse\nCHOCOLATE_DOOM_CONF_OPTS += --without-libsamplerate\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/chrony/0001-sys_linux-fix-build-with-older-kernel-headers.patch",
    "content": "From 5dab78341bd515692f1b9ff8716a911c3ebf9ee1 Mon Sep 17 00:00:00 2001\nMessage-Id: <5dab78341bd515692f1b9ff8716a911c3ebf9ee1.1611839550.git.baruch@tkos.co.il>\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Thu, 28 Jan 2021 15:02:40 +0200\nSubject: [PATCH] sys_linux: fix build with older kernel headers\n\nThe renameat2 system call was introduced in kernel version 3.15. Fix\nbuild against older headers.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: commit a2372b0c3abfc85d11c1684c0fb6370cc329e5c4\n\n sys_linux.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/sys_linux.c b/sys_linux.c\nindex 0b24445e173d..202da845edac 100644\n--- a/sys_linux.c\n+++ b/sys_linux.c\n@@ -547,7 +547,9 @@ SYS_Linux_EnableSystemCallFilter(int level, SYS_ProcessContext context)\n     SCMP_SYS(readlinkat),\n     SCMP_SYS(rename),\n     SCMP_SYS(renameat),\n+#ifdef __NR_renameat2\n     SCMP_SYS(renameat2),\n+#endif\n     SCMP_SYS(stat),\n     SCMP_SYS(stat64),\n     SCMP_SYS(statfs),\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/chrony/Config.in",
    "content": "config BR2_PACKAGE_CHRONY\n\tbool \"chrony\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Chrony is a pair of programs which are used to maintain the\n\t  accuracy of the system clock.\n\n\t  http://chrony.tuxfamily.org/\n\nconfig BR2_PACKAGE_CHRONY_DEBUG_LOGGING\n\tbool \"enable debug logging support\"\n\tdepends on BR2_PACKAGE_CHRONY\n\thelp\n\t  Enable support for debug logging output from Chrony when\n\t  enabled at runtime. If disabled, code for debug logging will\n\t  not be compiled in.\n"
  },
  {
    "path": "package/chrony/S49chrony",
    "content": "#!/bin/sh\n#\n# Start chrony\n\n[ -r /etc/default/chrony ] && . /etc/default/chrony\n\ncase \"$1\" in\n  start)\n\tprintf \"Starting chrony: \"\n\tchronyd $CHRONY_ARGS && echo \"OK\" || echo \"FAIL\"\n\t;;\n  stop)\n\tprintf \"Stopping chrony: \"\n\tkillall chronyd && echo \"OK\" || echo \"FAIL\"\n\t;;\n  restart|reload)\n\t\"$0\" stop\n\tsleep 1\n\t\"$0\" start\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/chrony/chrony.hash",
    "content": "# From https://listengine.tuxfamily.org/chrony.tuxfamily.org/chrony-announce/2020/10/msg00000.html\nsha256  be27ea14c55e7a4434b2fa51d53018c7051c42fa6a3198c9aa6a1658bae0c625  chrony-4.0.tar.gz\n# Locally calculated\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/chrony/chrony.mk",
    "content": "################################################################################\n#\n# chrony\n#\n################################################################################\n\nCHRONY_VERSION = 4.0\nCHRONY_SITE = http://download.tuxfamily.org/chrony\nCHRONY_LICENSE = GPL-2.0\nCHRONY_LICENSE_FILES = COPYING\nCHRONY_CPE_ID_VENDOR = tuxfamily\nCHRONY_SELINUX_MODULES = chronyd\nCHRONY_DEPENDENCIES = host-pkgconf\n\nCHRONY_CONF_OPTS = \\\n\t--host-system=Linux \\\n\t--host-machine=$(BR2_ARCH) \\\n\t--prefix=/usr \\\n\t--without-tomcrypt \\\n\t$(if $(BR2_PACKAGE_CHRONY_DEBUG_LOGGING),--enable-debug,--disable-debug)\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nCHRONY_DEPENDENCIES += libcap\nelse\nCHRONY_CONF_OPTS += --without-libcap\nendif\n\nifeq ($(BR2_PACKAGE_LIBNSS),y)\nCHRONY_DEPENDENCIES += libnss\nelse\nCHRONY_CONF_OPTS += --without-nss\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECCOMP),y)\nCHRONY_CONF_OPTS += --enable-scfilter\nCHRONY_DEPENDENCIES += libseccomp\nelse\nCHRONY_CONF_OPTS += --without-seccomp\nendif\n\nifeq ($(BR2_PACKAGE_LIBEDIT),y)\nCHRONY_DEPENDENCIES += libedit\nelse\nCHRONY_CONF_OPTS += --without-editline --disable-readline\nendif\n\n# If pps-tools is available, build it before so the package can use it\n# (HAVE_SYS_TIMEPPS_H).\nifeq ($(BR2_PACKAGE_PPS_TOOLS),y)\nCHRONY_DEPENDENCIES += pps-tools\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nCHRONY_DEPENDENCIES += gnutls\nelse\nCHRONY_CONF_OPTS += --without-gnutls\nendif\n\nifeq ($(BR2_PACKAGE_NETTLE),y)\nCHRONY_DEPENDENCIES += nettle\nelse\nCHRONY_CONF_OPTS += --without-nettle\nendif\n\ndefine CHRONY_CONFIGURE_CMDS\n\tcd $(@D) && $(TARGET_CONFIGURE_OPTS) ./configure $(CHRONY_CONF_OPTS)\nendef\n\ndefine CHRONY_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine CHRONY_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=\"$(TARGET_DIR)\" install\nendef\n\ndefine CHRONY_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/chrony/S49chrony $(TARGET_DIR)/etc/init.d/S49chrony\nendef\n\ndefine CHRONY_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/chrony/chrony.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/chrony.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/chrony/chrony.service",
    "content": "[Unit]\nDescription=Chrony Network Time Daemon\nAfter=syslog.target network.target\nConflicts=systemd-timesyncd.service\n\n[Service]\n# Turn off DNSSEC validation for hostname look-ups, since those need the\n# correct time to work, but we likely won't acquire that without NTP. Let's\n# break this chicken-and-egg cycle here.\nEnvironment=SYSTEMD_NSS_RESOLVE_VALIDATE=0\nExecStart=/usr/sbin/chronyd -n\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/cifs-utils/Config.in",
    "content": "config BR2_PACKAGE_CIFS_UTILS\n\tbool \"cifs-utils\"\n\t# uses fork()\n\tdepends on BR2_USE_MMU\n\thelp\n\t  The in-kernel CIFS filesystem is generally the preferred\n\t  method for mounting SMB/CIFS shares on Linux. The in-kernel\n\t  CIFS filesystem relies on a set of user-space tools. That\n\t  package of tools is called cifs-utils. Although not really\n\t  part of Samba proper, these tools were originally part of\n\t  the Samba package. For several reasons, shipping these tools\n\t  as part of Samba was problematic and it was deemed better to\n\t  split them off into their own package.\n\n\t  http://wiki.samba.org/index.php/LinuxCIFS_utils\n\nif BR2_PACKAGE_CIFS_UTILS\n\nconfig BR2_PACKAGE_CIFS_UTILS_SMBTOOLS\n\tbool \"smbtools\"\n\tdepends on BR2_USE_WCHAR # python3\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # python3\n\tdepends on !BR2_STATIC_LIBS # python3\n\tselect BR2_PACKAGE_PYTHON3 if !BR2_PACKAGE_PYTHON # runtime\n\thelp\n\t  Install the smb tools smbinfo and smb2-quota (python\n\t  implementations).\n\ncomment \"smbtools needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n\nendif\n"
  },
  {
    "path": "package/cifs-utils/cifs-utils.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  43d8786c8613caccfa84913081c1d62bc2409575854cf895b05b48af0863d056  cifs-utils-6.13.tar.bz2\n\n# Hash for license file:\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/cifs-utils/cifs-utils.mk",
    "content": "################################################################################\n#\n# cifs-utils\n#\n################################################################################\n\nCIFS_UTILS_VERSION = 6.13\nCIFS_UTILS_SOURCE = cifs-utils-$(CIFS_UTILS_VERSION).tar.bz2\nCIFS_UTILS_SITE = http://ftp.samba.org/pub/linux-cifs/cifs-utils\nCIFS_UTILS_LICENSE = GPL-3.0+\nCIFS_UTILS_LICENSE_FILES = COPYING\nCIFS_UTILS_CPE_ID_VENDOR = samba\n# Missing install-sh in release tarball\nCIFS_UTILS_AUTORECONF = YES\nCIFS_UTILS_DEPENDENCIES = host-pkgconf\n\n# Let's disable PIE unconditionally. We want PIE to be enabled only by\n# the global BR2_RELRO_FULL option.\nCIFS_UTILS_CONF_OPTS = --disable-pie --disable-man\n\n# uses C11 code in smbinfo.c and mtab.c\nCIFS_UTILS_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -std=gnu11\"\n\nifeq ($(BR2_PACKAGE_KEYUTILS),y)\nCIFS_UTILS_DEPENDENCIES += keyutils\nendif\n\ndefine CIFS_UTILS_NO_WERROR\n\t$(SED) 's/-Werror//' $(@D)/Makefile.in\nendef\n\nCIFS_UTILS_POST_PATCH_HOOKS += CIFS_UTILS_NO_WERROR\n\nifeq ($(BR2_PACKAGE_CIFS_UTILS_SMBTOOLS),)\ndefine CIFS_UTILS_REMOVE_SMBTOOLS\n\trm -f $(TARGET_DIR)/usr/bin/smbinfo\n\trm -f $(TARGET_DIR)/usr/bin/smb2-quota\nendef\nCIFS_UTILS_POST_INSTALL_TARGET_HOOKS += CIFS_UTILS_REMOVE_SMBTOOLS\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/circus/Config.in",
    "content": "config BR2_PACKAGE_CIRCUS\n\tbool \"circus\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-tornado\n\tdepends on BR2_INSTALL_LIBSTDCPP # pyzmq -> zeromq\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # pyzmq -> zeromq\n\tselect BR2_PACKAGE_PYTHON_IOWAIT # runtime\n\tselect BR2_PACKAGE_PYTHON_PSUTIL # runtime\n\tselect BR2_PACKAGE_PYTHON_PYZMQ # runtime\n\tselect BR2_PACKAGE_PYTHON_TORNADO # runtime\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\thelp\n\t  Circus is a program that will let you run and watch multiple\n\t  processes and sockets.\n\n\t  https://circus.readthedocs.org/en/latest/\n\ncomment \"circus needs Python 3 and a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_PACKAGE_PYTHON3\n"
  },
  {
    "path": "package/circus/circus.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/circus/json\nmd5  9887ddafebef7475c08ff2c8e5cc2fad  circus-0.16.1.tar.gz\nsha256  dd7c011eb67785a1c96a4db94a56a22810c6ed608cebf301152dabc771654c5d  circus-0.16.1.tar.gz\nsha256  3df739c05a4eed7efdf4987142658d2a4f1243e5f08e72a5ecedac5749c92a49  LICENSE\n"
  },
  {
    "path": "package/circus/circus.mk",
    "content": "################################################################################\n#\n# circus\n#\n################################################################################\n\nCIRCUS_VERSION = 0.16.1\nCIRCUS_SITE = https://files.pythonhosted.org/packages/09/8a/44a0b6b35ecf5dcf22bf51e4bcf188ec9e7ab9dd4c14330ba1b8bea51102\nCIRCUS_SETUP_TYPE = setuptools\nCIRCUS_LICENSE = Apache-2.0\nCIRCUS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/civetweb/Config.in",
    "content": "config BR2_PACKAGE_CIVETWEB\n\tbool \"civetweb\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_CIVETWEB_SERVER if !BR2_PACKAGE_CIVETWEB_LIB\n\thelp\n\t  Full featured embedded web server with Lua support.\n\n\t  https://sourceforge.net/projects/civetweb\n\nif BR2_PACKAGE_CIVETWEB\n\nconfig BR2_PACKAGE_CIVETWEB_SERVER\n\tbool \"enable the web server application\"\n\thelp\n\t  Include the web server and its config files.\n\nconfig BR2_PACKAGE_CIVETWEB_LIB\n\tbool \"enable library for embedding\"\n\thelp\n\t  Enable the civetweb library for embedding in another\n\t  application.\n\nconfig BR2_PACKAGE_CIVETWEB_WITH_LUA\n\tbool \"enable Lua support\"\n\t# required by the bundled Sqlite3 and Lua code\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Enable Lua support in Civetweb. Note that this will use a\n\t  version of Lua and Sqlite bundled within the Civetweb\n\t  sources, and not the packages from Buildroot.\n\ncomment \"lua support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nendif\n\ncomment \"civetweb needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/civetweb/civetweb.hash",
    "content": "# Locally calculated\nsha256  90a533422944ab327a4fbb9969f0845d0dba05354f9cacce3a5005fa59f593b9  civetweb-1.15.tar.gz\nsha256  24d3d2aee56ae3cddcdf3392c1250877818108314233cf15f2bc9eb3ac298934  LICENSE.md\n"
  },
  {
    "path": "package/civetweb/civetweb.mk",
    "content": "################################################################################\n#\n# civetweb\n#\n################################################################################\n\nCIVETWEB_VERSION = 1.15\nCIVETWEB_SITE = $(call github,civetweb,civetweb,v$(CIVETWEB_VERSION))\nCIVETWEB_LICENSE = MIT\nCIVETWEB_LICENSE_FILES = LICENSE.md\nCIVETWEB_CPE_ID_VENDOR = civetweb_project\n\nCIVETWEB_CONF_OPTS = TARGET_OS=LINUX WITH_IPV6=1 \\\n\t$(if $(BR2_INSTALL_LIBSTDCPP),WITH_CPP=1)\nCIVETWEB_COPT = -DHAVE_POSIX_FALLOCATE=0\nCIVETWEB_LIBS = -lpthread -lm\nCIVETWEB_SYSCONFDIR = /etc\nCIVETWEB_HTMLDIR = /var/www\nCIVETWEB_INSTALL_OPTS = \\\n\tDOCUMENT_ROOT=\"$(CIVETWEB_HTMLDIR)\" \\\n\tCONFIG_FILE2=\"$(CIVETWEB_SYSCONFDIR)/civetweb.conf\" \\\n\tHTMLDIR=\"$(TARGET_DIR)$(CIVETWEB_HTMLDIR)\" \\\n\tSYSCONFDIR=\"$(TARGET_DIR)$(CIVETWEB_SYSCONFDIR)\"\n\nifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),)\nCIVETWEB_COPT += -DNO_ATOMICS=1\nendif\n\nifeq ($(BR2_PACKAGE_CIVETWEB_WITH_LUA),y)\nCIVETWEB_CONF_OPTS += WITH_LUA=1\nCIVETWEB_LIBS += -ldl\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nCIVETWEB_COPT += -DNO_SSL_DL\nCIVETWEB_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nCIVETWEB_DEPENDENCIES += openssl host-pkgconf\nelse\nCIVETWEB_COPT += -DNO_SSL\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nCIVETWEB_CONF_OPTS += WITH_ZLIB=1\nCIVETWEB_LIBS += -lz\nCIVETWEB_DEPENDENCIES += zlib\nendif\n\nifeq ($(BR2_PACKAGE_CIVETWEB_SERVER),y)\nCIVETWEB_BUILD_TARGETS += build\nCIVETWEB_INSTALL_TARGETS += install\nendif\n\nifeq ($(BR2_PACKAGE_CIVETWEB_LIB),y)\nCIVETWEB_INSTALL_STAGING = YES\nCIVETWEB_INSTALL_TARGETS += install-headers\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_STATIC_SHARED_LIBS),y)\nCIVETWEB_BUILD_TARGETS += lib\nCIVETWEB_INSTALL_TARGETS += install-lib\nendif\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_STATIC_SHARED_LIBS),y)\nCIVETWEB_BUILD_TARGETS += slib\nCIVETWEB_INSTALL_TARGETS += install-slib\nendif\n\nendif # BR2_PACKAGE_CIVETWEB_LIB\n\ndefine CIVETWEB_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(CIVETWEB_BUILD_TARGETS) \\\n\t\t$(CIVETWEB_CONF_OPTS) \\\n\t\tCOPT=\"$(CIVETWEB_COPT)\" LIBS=\"$(CIVETWEB_LIBS)\"\nendef\n\ndefine CIVETWEB_INSTALL_STAGING_CMDS\n\tmkdir -p $(STAGING_DIR)/usr/include\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(CIVETWEB_INSTALL_TARGETS) \\\n\t\tPREFIX=\"$(STAGING_DIR)/usr\" \\\n\t\t$(CIVETWEB_INSTALL_OPTS) \\\n\t\t$(CIVETWEB_CONF_OPTS) \\\n\t\tCOPT='$(CIVETWEB_COPT)'\nendef\n\ndefine CIVETWEB_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/include\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(CIVETWEB_INSTALL_TARGETS) \\\n\t\tPREFIX=\"$(TARGET_DIR)/usr\" \\\n\t\t$(CIVETWEB_INSTALL_OPTS) \\\n\t\t$(CIVETWEB_CONF_OPTS) \\\n\t\tCOPT='$(CIVETWEB_COPT)'\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/cjson/Config.in",
    "content": "config BR2_PACKAGE_CJSON\n\tbool \"cJSON\"\n\thelp\n\t  An ultra-lightweight, portable, single-file, simple-as-can-be\n\t  ANSI-C compliant JSON parser, under MIT license.\n\n\t  https://github.com/DaveGamble/cJSON\n"
  },
  {
    "path": "package/cjson/cjson.hash",
    "content": "# Locally computed:\nsha256  5308fd4bd90cef7aa060558514de6a1a4a0819974a26e6ed13973c5f624c24b2  cjson-1.7.15.tar.gz\nsha256  a36dda207c36db5818729c54e7ad4e8b0c6fba847491ba64f372c1a2037b6d5c  LICENSE\n"
  },
  {
    "path": "package/cjson/cjson.mk",
    "content": "################################################################################\n#\n# cjson\n#\n################################################################################\n\nCJSON_VERSION = 1.7.15\nCJSON_SITE = $(call github,DaveGamble,cjson,v$(CJSON_VERSION))\nCJSON_INSTALL_STAGING = YES\nCJSON_LICENSE = MIT\nCJSON_LICENSE_FILES = LICENSE\nCJSON_CPE_ID_VENDOR = cjson_project\n# Set ENABLE_CUSTOM_COMPILER_FLAGS to OFF in particular to disable\n# -fstack-protector-strong which depends on BR2_TOOLCHAIN_HAS_SSP\nCJSON_CONF_OPTS += \\\n\t-DENABLE_CJSON_TEST=OFF \\\n\t-DENABLE_CUSTOM_COMPILER_FLAGS=OFF\n\n# If BUILD_SHARED_AND_STATIC_LIBS is set to OFF, cjson uses the\n# standard BUILD_SHARED_LIBS option which is passed by the\n# cmake-package infrastructure.\nifeq ($(BR2_SHARED_STATIC_LIBS),y)\nCJSON_CONF_OPTS += -DBUILD_SHARED_AND_STATIC_LIBS=ON\nelse\nCJSON_CONF_OPTS += -DBUILD_SHARED_AND_STATIC_LIBS=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/clamav/0001-clamdscan-proto.c-fix-build-error-due-to-missing-soc.patch",
    "content": "From 52fda6e6689e22866a39ec4273713fb6035c38b2 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Mon, 7 May 2018 23:14:46 +0200\nSubject: [PATCH] clamdscan/proto.c: fix build error due to missing sockaddr_un\n definition\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nproto.c: In function ‘dconnect’:\nproto.c:86:67: error: invalid application of ‘sizeof’ to incomplete type ‘struct sockaddr_un’\n             if (connect(sockd, (struct sockaddr *)&nixsock, sizeof(nixsock)) == 0)\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\nUpstream-status: http://lurker.clamav.net/message/20140928.130829.5494fd68.en.html\n---\n clamdscan/proto.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/clamdscan/proto.c b/clamdscan/proto.c\nindex 0205f6da0..d3396732f 100644\n--- a/clamdscan/proto.c\n+++ b/clamdscan/proto.c\n@@ -42,6 +42,7 @@\n #include <sys/stat.h>\n #include <fcntl.h>\n #include <sys/types.h>\n+#include <sys/un.h>\n #ifdef HAVE_SYS_SELECT_H\n #include <sys/select.h>\n #endif\n-- \n2.14.3\n\n"
  },
  {
    "path": "package/clamav/0002-mbox-do-not-use-backtrace-if-using-uClibc-without-ba.patch",
    "content": "From 053bac34b9f0f947c58fcdf80ac03d5a6b05aa12 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Mon, 7 May 2018 23:15:58 +0200\nSubject: [PATCH] mbox: do not use backtrace if using uClibc without backtrace\n support\n\nSince uClibc can be configured without support for backtrace, disable\nthe backtrace if we are building with a uClibc that was built without\nbacktrace.\n\nThis is a bit hacky, and would greatly benefit from a test in ./configure\ninstead, but does nicely as a quick fix for now.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Bernd: rebased for 0.103.0]\n---\n libclamav/mbox.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/libclamav/mbox.c b/libclamav/mbox.c\nindex 71f540c0a..4851297a9 100644\n--- a/libclamav/mbox.c\n+++ b/libclamav/mbox.c\n@@ -91,7 +91,7 @@\n #include <features.h>\n #endif\n \n-#if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1\n+#if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 && !defined(__UCLIBC__) || defined(__UCLIBC_HAS_BACKTRACE__)\n #define HAVE_BACKTRACE\n #endif\n #endif\n-- \n2.14.3\n\n"
  },
  {
    "path": "package/clamav/Config.in",
    "content": "config BR2_PACKAGE_CLAMAV\n\tbool \"clamav\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # dlopen\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBMSPACK\n\tselect BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  ClamAV is an open source antivirus engine for detecting\n\t  trojans, viruses, malware & other malicious threats.\n\n\t  http://www.clamav.net\n\ncomment \"clamav needs a toolchain w/ C++, dynamic library, threads, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/clamav/clamav.hash",
    "content": "# Locally calculated\nsha256  9f6e3d18449f3d1a3992771d696685249dfa12736fe2b2929858f2c7d8276ae9  clamav-0.103.3.tar.gz\nsha256  0c4fd2fa9733fc9122503797648710851e4ee6d9e4969dd33fcbd8c63cd2f584  COPYING\nsha256  d72a145c90918184a05ef65a04c9e6f7466faa59bc1b82c8f6a8ddc7ddcb9bed  COPYING.bzip2\nsha256  dfb818a0d41411c6fb1c193c68b73018ceadd1994bda41ad541cbff292894bc6  COPYING.file\nsha256  6dce638b76399e7521ad8e182d3e33e4496c85b3b69b6ff434b53017101e82ad  COPYING.getopt\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING.LGPL\nsha256  e3a9b913515a42f8ff3ef1551c3a2cdba383c39ed959729e0e2911219496ad74  COPYING.llvm\nsha256  d96d71b66aa32c4a2d1619b9ca3347dafa9460bcf0fb5ac2408916067ad31dfc  COPYING.lzma\nsha256  accdcf2455c07b99abea59016b3663eaef926a92092d103bfaa25fed27cf6b24  COPYING.pcre\nsha256  e2c1395a3d9fea6d5d25847c9d783db6e2cc8b085b4025861f459139c5dfd90b  COPYING.regex\nsha256  1faccc6b5c7b958fb807a3f573d5be9bf7889fe898f7e0617c544b05a81bfd00  COPYING.unrar\nsha256  a20d6317c5384e8d4c05f9c31097878675d9429ec46090656166039cc10bc957  COPYING.YARA\nsha256  c2f77553f8d870c5635b0dace0519253233f172b33ce1fdf6578610706294eee  COPYING.zlib\n"
  },
  {
    "path": "package/clamav/clamav.mk",
    "content": "################################################################################\n#\n# clamav\n#\n################################################################################\n\nCLAMAV_VERSION = 0.103.3\nCLAMAV_SITE = https://www.clamav.net/downloads/production\nCLAMAV_LICENSE = GPL-2.0\nCLAMAV_LICENSE_FILES = COPYING COPYING.bzip2 COPYING.file COPYING.getopt \\\n\tCOPYING.LGPL COPYING.llvm COPYING.lzma COPYING.pcre COPYING.regex \\\n\tCOPYING.unrar COPYING.zlib\nCLAMAV_CPE_ID_VENDOR = clamav\nCLAMAV_SELINUX_MODULES = clamav\nCLAMAV_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tlibcurl \\\n\tlibmspack \\\n\topenssl \\\n\tzlib \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\n# mmap cannot be detected when cross-compiling, needed for mempool support\nCLAMAV_CONF_ENV = \\\n\tac_cv_c_mmap_private=yes \\\n\thave_cv_ipv6=yes \\\n\tOBJC=$(TARGET_CC)\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nCLAMAV_LIBS += -latomic\nendif\n\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),)\nCLAMAV_DEPENDENCIES += musl-fts\nCLAMAV_LIBS += -lfts\nendif\n\nCLAMAV_CONF_ENV += LIBS=\"$(CLAMAV_LIBS)\"\n\nCLAMAV_CONF_OPTS = \\\n\t--with-dbdir=/var/lib/clamav \\\n\t--with-libcurl=$(STAGING_DIR)/usr \\\n\t--with-openssl=$(STAGING_DIR)/usr \\\n\t--with-system-libmspack=$(STAGING_DIR)/usr \\\n\t--with-zlib=$(STAGING_DIR)/usr \\\n\t--disable-zlib-vcheck \\\n\t--disable-rpath \\\n\t--disable-clamav \\\n\t--disable-milter \\\n\t--disable-llvm \\\n\t--disable-clamdtop \\\n\t--enable-mempool\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nCLAMAV_DEPENDENCIES += bzip2\n# autodetection gets confused if host has bzip2, so force it\nCLAMAV_CONF_ENV += \\\n\tac_cv_libbz2_libs=-lbz2 \\\n\tac_cv_libbz2_ltlibs=-lbz2\nelse\nCLAMAV_CONF_OPTS += --disable-bzip2\nendif\n\nifeq ($(BR2_PACKAGE_JSON_C),y)\nCLAMAV_CONF_OPTS += --with-libjson=$(STAGING_DIR)/usr\nCLAMAV_DEPENDENCIES += json-c\nelse\nCLAMAV_CONF_OPTS += --without-libjson\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nCLAMAV_CONF_OPTS += --with-xml=$(STAGING_DIR)/usr\nCLAMAV_DEPENDENCIES += libxml2\nelse\nCLAMAV_CONF_OPTS += --disable-xml\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nCLAMAV_CONF_OPTS += --with-iconv\nCLAMAV_DEPENDENCIES += libiconv\nelse\nCLAMAV_CONF_OPTS += --without-iconv\nendif\n\nifeq ($(BR2_PACKAGE_PCRE2),y)\nCLAMAV_CONF_OPTS += --with-pcre=$(STAGING_DIR)/usr\nCLAMAV_DEPENDENCIES += pcre2\nelse ifeq ($(BR2_PACKAGE_PCRE),y)\nCLAMAV_CONF_OPTS += --with-pcre=$(STAGING_DIR)/usr\nCLAMAV_DEPENDENCIES += pcre\nelse\nCLAMAV_CONF_OPTS += --without-pcre\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nCLAMAV_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system\nCLAMAV_DEPENDENCIES += systemd\nelse\nCLAMAV_CONF_OPTS += --with-systemdsystemunitdir=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/clang/Config.in",
    "content": "config BR2_PACKAGE_CLANG\n\tbool \"clang\"\n\tdepends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR # std::wstring\n\tselect BR2_PACKAGE_LLVM\n\thelp\n\t  Clang is a C/C++, Objective C/C++ and OpenCL C front-end\n\t  for the LLVM compiler.\n\n\t  http://clang.llvm.org\n\ncomment \"clang needs a toolchain w/ wchar, threads, C++, gcc >= 4.8, dynamic library\"\n\tdepends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \\\n\t\t|| BR2_STATIC_LIBS || !BR2_USE_WCHAR\n\ncomment \"clang needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/clang/clang.hash",
    "content": "# locally calculated\nsha256 5778512b2e065c204010f88777d44b95250671103e434f9dc7363ab2e3804253 clang-9.0.1.src.tar.xz\nsha256 ebcd9bbf783a73d05c53ba4d586b8d5813dcdf3bbec50265860ccc885e606f47 LICENSE.TXT\n"
  },
  {
    "path": "package/clang/clang.mk",
    "content": "################################################################################\n#\n# clang\n#\n################################################################################\n\n# LLVM, Clang and lld should be version bumped together\nCLANG_VERSION = 9.0.1\nCLANG_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(CLANG_VERSION)\nCLANG_SOURCE = clang-$(CLANG_VERSION).src.tar.xz\nCLANG_LICENSE = Apache-2.0 with exceptions\nCLANG_LICENSE_FILES = LICENSE.TXT\nCLANG_CPE_ID_VENDOR = llvm\nCLANG_SUPPORTS_IN_SOURCE_BUILD = NO\nCLANG_INSTALL_STAGING = YES\n\nHOST_CLANG_DEPENDENCIES = host-llvm host-libxml2\nCLANG_DEPENDENCIES = llvm host-clang\n\n# LLVM >= 9.0 will soon require C++14 support, building llvm 8.x using a\n# toolchain using gcc < 5.1 gives an error but actually still works. Setting\n# this option makes it still build with gcc >= 4.8.\n# https://reviews.llvm.org/D57264\nHOST_CLANG_CONF_OPTS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON\nCLANG_CONF_OPTS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON\n\n# This option is needed, otherwise multiple shared libs\n# (libclangAST.so, libclangBasic.so, libclangFrontend.so, etc.) will\n# be generated. As a final shared lib containing all these components\n# (libclang.so) is also generated, this resulted in the following\n# error when trying to use tools that use libclang:\n# $ CommandLine Error: Option 'track-memory' registered more than once!\n# $ LLVM ERROR: inconsistency in registered CommandLine options\n# By setting BUILD_SHARED_LIBS to OFF, we generate multiple static\n# libraries (the same way as host's clang build) and finally\n# libclang.so to be installed on the target.\nHOST_CLANG_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF\nCLANG_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF\n\n# Default is Debug build, which requires considerably more disk space\n# and build time. Release build is selected for host and target\n# because the linker can run out of memory in Debug mode.\nHOST_CLANG_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release\nCLANG_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release\n\nCLANG_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1\n\n# We need to build tools because libclang is a tool\nHOST_CLANG_CONF_OPTS += -DCLANG_BUILD_TOOLS=ON\nCLANG_CONF_OPTS += -DCLANG_BUILD_TOOLS=ON\n\nHOST_CLANG_CONF_OPTS += \\\n\t-DCLANG_BUILD_EXAMPLES=OFF \\\n\t-DCLANG_INCLUDE_DOCS=OFF \\\n\t-DCLANG_INCLUDE_TESTS=OFF\n\nCLANG_CONF_OPTS += \\\n\t-DCLANG_BUILD_EXAMPLES=OFF \\\n\t-DCLANG_INCLUDE_DOCS=OFF \\\n\t-DCLANG_INCLUDE_TESTS=OFF\n\nHOST_CLANG_CONF_OPTS += -DLLVM_DIR=$(HOST_DIR)/lib/cmake/llvm \\\n\t-DCLANG_DEFAULT_LINKER=$(TARGET_LD)\nCLANG_CONF_OPTS += -DLLVM_DIR=$(STAGING_DIR)/usr/lib/cmake/llvm \\\n\t-DCLANG_TABLEGEN:FILEPATH=$(HOST_DIR)/bin/clang-tblgen \\\n\t-DLLVM_TABLEGEN_EXE:FILEPATH=$(HOST_DIR)/bin/llvm-tblgen\n\n# Clang can't be used as compiler on the target since there are no\n# development files (headers) and other build tools. So remove clang\n# binaries and some other unnecessary files from target.\nCLANG_FILES_TO_REMOVE = \\\n\t/usr/bin/clang* \\\n\t/usr/bin/c-index-test \\\n\t/usr/bin/git-clang-format \\\n\t/usr/bin/scan-build \\\n\t/usr/bin/scan-view \\\n\t/usr/libexec/c++-analyzer \\\n\t/usr/libexec/ccc-analyzer \\\n\t/usr/share/clang \\\n\t/usr/share/opt-viewer \\\n\t/usr/share/scan-build \\\n\t/usr/share/scan-view \\\n\t/usr/share/man/man1/scan-build.1 \\\n\t/usr/lib/clang\n\ndefine CLANG_CLEANUP_TARGET\n\trm -rf $(addprefix $(TARGET_DIR),$(CLANG_FILES_TO_REMOVE))\nendef\nCLANG_POST_INSTALL_TARGET_HOOKS += CLANG_CLEANUP_TARGET\n\n# clang-tblgen is not installed by default, however it is necessary\n# for cross-compiling clang\ndefine HOST_CLANG_INSTALL_CLANG_TBLGEN\n\t$(INSTALL) -D -m 0755 $(HOST_CLANG_BUILDDIR)/bin/clang-tblgen \\\n\t\t$(HOST_DIR)/bin/clang-tblgen\nendef\nHOST_CLANG_POST_INSTALL_HOOKS = HOST_CLANG_INSTALL_CLANG_TBLGEN\n\n# This option must be enabled to link libclang dynamically against libLLVM.so\nHOST_CLANG_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON\nCLANG_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON\n\n# Prevent clang binaries from linking against LLVM static libs\nHOST_CLANG_CONF_OPTS += -DLLVM_DYLIB_COMPONENTS=all\nCLANG_CONF_OPTS += -DLLVM_DYLIB_COMPONENTS=all\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/clinfo/Config.in",
    "content": "config BR2_PACKAGE_CLINFO\n\tbool \"clinfo\"\n\tdepends on BR2_PACKAGE_HAS_LIBOPENCL\n\thelp\n\t  clinfo is a simple command-line application that enumerates\n\t  all possible (known) properties of the OpenCL platform and\n\t  devices available on the system.\n\n\t  https://github.com/Oblomov/clinfo\n\ncomment \"clinfo needs an OpenCL provider\"\n\tdepends on !BR2_PACKAGE_HAS_LIBOPENCL\n"
  },
  {
    "path": "package/clinfo/clinfo.hash",
    "content": "# locally calculated\nsha256  e52f5c374a10364999d57a1be30219b47fb0b4f090e418f2ca19a0c037c1e694  clinfo-3.0.21.02.21.tar.gz\nsha256  a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499  legalcode.txt\nsha256  2a7a9321be169ea6edbc6b1010e8f7bb0f4c1482a2f65c34a49e9719f129b79a  LICENSE\n"
  },
  {
    "path": "package/clinfo/clinfo.mk",
    "content": "################################################################################\n#\n# clinfo\n#\n################################################################################\n\nCLINFO_VERSION = 3.0.21.02.21\nCLINFO_SITE = $(call github,Oblomov,clinfo,$(CLINFO_VERSION))\nCLINFO_LICENSE = CC0-1.0\nCLINFO_LICENSE_FILES = legalcode.txt LICENSE\nCLINFO_DEPENDENCIES = libopencl\n\ndefine CLINFO_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine CLINFO_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/clinfo $(TARGET_DIR)/usr/bin/clinfo\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/cloop/cloop.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20200419T152225Z/pool/main/c/cloop/cloop_3.14.1.3.dsc\nsha256  e3079e70f9edae8ed1ac64694af08f6c7dc710ca65a56e4770dcb1325a293193  cloop_3.14.1.3.tar.xz\n\n# Hash for license files\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  advancecomp-1.15/COPYING\nsha256  1b1f89e94e131e259b9e334565c5c3500d4b8aa755b75c3f145ddcdff3b89124  README\n"
  },
  {
    "path": "package/cloop/cloop.mk",
    "content": "################################################################################\n#\n# cloop\n#\n################################################################################\n\nCLOOP_VERSION = 3.14.1.3\nCLOOP_SOURCE = cloop_$(CLOOP_VERSION).tar.xz\nCLOOP_SITE = http://snapshot.debian.org/archive/debian/20200419T152225Z/pool/main/c/cloop\nCLOOP_LICENSE = GPL-2.0 (module), GPL-2.0+ (advancecomp)\nCLOOP_LICENSE_FILES = README advancecomp-1.15/COPYING\n\nHOST_CLOOP_DEPENDENCIES = host-zlib\n\ndefine HOST_CLOOP_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE1) -C $(@D) APPSONLY=yes \\\n\t\tCFLAGS=\"$(HOST_CFLAGS) -D_GNU_SOURCE\"\nendef\n\ndefine HOST_CLOOP_INSTALL_CMDS\n\t$(INSTALL) -m 0755 -d $(HOST_DIR)/bin\n\t$(INSTALL) -m 755 $(@D)/create_compressed_fs $(HOST_DIR)/bin\n\t$(INSTALL) -m 755 $(@D)/extract_compressed_fs $(HOST_DIR)/bin\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/cmake/0001-rename-cmake-rootfile.patch",
    "content": "From 68d3b1dfbbd2f54bf81986d1d733deaf66658b15 Mon Sep 17 00:00:00 2001\nFrom: Davide Viti <zinosat@tiscali.it>\nDate: Thu, 14 Jul 2016 10:14:59 +0100\nSubject: [PATCH] rename cmake rootfile\n\nctest fails on the target, because it cannot find CMake.cmake inside\nCMAKE_DATA_DIR (typically set to \"/usr/share/cmake-3.0\"): all *.cmake\nfiles are removed at build time via the target-finalize rule.\n\nThis buildroot-specific patch makes sure ctest looks also for\n\"Modules/CMake.cmake.ctest\" before complaining\n\n[Vincent: tweak patch for 3.6.3]\n[James: tweak patch for 3.15.4]\n\nSigned-off-by: Davide Viti <zinosat@tiscali.it>\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n---\n Source/cmake.cxx | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/Source/cmake.cxx b/Source/cmake.cxx\nindex 3772f09985..c317e4af38 100644\n--- a/Source/cmake.cxx\n+++ b/Source/cmake.cxx\n@@ -1009,7 +1009,12 @@ int cmake::AddCMakePaths()\n     \"Path to cpack program executable.\", cmStateEnums::INTERNAL);\n #endif\n   if (!cmSystemTools::FileExists(\n-        (cmSystemTools::GetCMakeRoot() + \"/Modules/CMake.cmake\"))) {\n+        (cmSystemTools::GetCMakeRoot() + \"/Modules/CMake.cmake\")) &&\n+        !cmSystemTools::FileExists(\n+          (cmSystemTools::GetCMakeRoot()+\"/Modules/CMake.cmake.ctest\")\n+        )\n+     )\n+  {\n     // couldn't find modules\n     cmSystemTools::Error(\n       \"Could not find CMAKE_ROOT !!!\\n\"\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/cmake/Config.in",
    "content": "config BR2_PACKAGE_CMAKE_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on BR2_arm    || BR2_armeb       || BR2_aarch64  || \\\n\t\tBR2_m68k      || BR2_mips        || BR2_mips64   || \\\n\t\tBR2_mipsel    || BR2_mips64el    || BR2_powerpc  || \\\n\t\tBR2_powerpc64 || BR2_powerpc64le || BR2_sparc    || \\\n\t\tBR2_i386      || BR2_x86_64      || BR2_xtensa   || \\\n\t\tBR2_s390x\n\nconfig BR2_PACKAGE_CMAKE\n\tbool\n\nconfig BR2_PACKAGE_CMAKE_CTEST\n\tbool \"ctest\"\n\tdepends on BR2_PACKAGE_CMAKE_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # from jsoncpp\n\tdepends on BR2_USE_WCHAR # libarchive\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv\n\tdepends on BR2_USE_MMU # libuv\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv\n\tselect BR2_PACKAGE_CMAKE\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_JSONCPP\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBARCHIVE\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_XZ\n\tselect BR2_PACKAGE_LIBUV\n\tselect BR2_PACKAGE_RHASH\n\thelp\n\t  CTest is a testing tool distributed as a part of CMake. It\n\t  can be used to automate updating (using CVS for example),\n\t  configuring, building, testing, performing memory checking,\n\t  performing coverage, and submitting results to a CDash or\n\t  Dart dashboard system.\n\n\t  http://www.cmake.org/\n\ncomment \"ctest needs a toolchain w/ C++, wchar, dynamic library, gcc >= 4.7, NPTL\"\n\tdepends on BR2_PACKAGE_CMAKE_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/cmake/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_CMAKE\n\tbool \"host cmake\"\n\thelp\n\t  CMake is an open-source, cross-platform family of tools\n\t  designed to build, test and package software. CMake is used\n\t  to control the software compilation process using simple\n\t  platform and compiler independent configuration files, and\n\t  generate native makefiles and workspaces that can be used in\n\t  the compiler environment of your choice.\n\n\t  http://www.cmake.org/\n"
  },
  {
    "path": "package/cmake/cmake.hash",
    "content": "# From https://cmake.org/files/v3.16/cmake-3.16.9-SHA-256.txt\nsha256  1708361827a5a0de37d55f5c9698004c035abb1de6120a376d5d59a81630191f  cmake-3.16.9.tar.gz\n\n# Locally calculated\nsha256  dc628fb936a5d229296d42083f9a8218aa32204c016919e784404c9ec58776e9  Copyright.txt\n"
  },
  {
    "path": "package/cmake/cmake.mk",
    "content": "################################################################################\n#\n# cmake\n#\n################################################################################\n\nCMAKE_VERSION_MAJOR = 3.16\nCMAKE_VERSION = $(CMAKE_VERSION_MAJOR).9\nCMAKE_SITE = https://cmake.org/files/v$(CMAKE_VERSION_MAJOR)\nCMAKE_LICENSE = BSD-3-Clause\nCMAKE_LICENSE_FILES = Copyright.txt\nCMAKE_CPE_ID_VENDOR = cmake_project\n# Tool download MITM attack warning if using npm package to install cmake\nCMAKE_IGNORE_CVES = CVE-2016-10642\n\n# CMake is a particular package:\n# * CMake can be built using the generic infrastructure or the cmake one.\n#   Since Buildroot has no requirement regarding the host system cmake\n#   program presence, it uses the generic infrastructure to build the\n#   host-cmake package, then the (target-)cmake package can be built\n#   using the cmake infrastructure;\n# * CMake bundles its dependencies within its sources. This is the\n#   reason why the host-cmake package has no dependencies:, whereas\n#   the (target-)cmake package has a lot of dependencies, using only\n#   the system-wide libraries instead of rebuilding and statically\n#   linking with the ones bundled into the CMake sources.\n\nCMAKE_DEPENDENCIES = zlib jsoncpp libcurl libarchive expat bzip2 xz libuv rhash\n\nCMAKE_CONF_OPTS = \\\n\t-DKWSYS_LFS_WORKS=TRUE \\\n\t-DKWSYS_CHAR_IS_SIGNED=TRUE \\\n\t-DCMAKE_USE_SYSTEM_LIBRARIES=1 \\\n\t-DCTEST_USE_XMLRPC=OFF \\\n\t-DBUILD_CursesDialog=OFF\n\n# Get rid of -I* options from $(HOST_CPPFLAGS) to prevent that a\n# header available in $(HOST_DIR)/include is used instead of a\n# CMake internal header, e.g. lzma* headers of the xz package\nHOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed -r \"s%$(HOST_CPPFLAGS)%%\")\nHOST_CMAKE_CXXFLAGS = $(shell echo $(HOST_CXXFLAGS) | sed -r \"s%$(HOST_CPPFLAGS)%%\")\n\ndefine HOST_CMAKE_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(HOST_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(HOST_CMAKE_CFLAGS)\" \\\n\t\t./bootstrap --prefix=$(HOST_DIR) \\\n\t\t\t--parallel=$(PARALLEL_JOBS) -- \\\n\t\t\t-DCMAKE_C_FLAGS=\"$(HOST_CMAKE_CFLAGS)\" \\\n\t\t\t-DCMAKE_CXX_FLAGS=\"$(HOST_CMAKE_CXXFLAGS)\" \\\n\t\t\t-DCMAKE_EXE_LINKER_FLAGS=\"$(HOST_LDFLAGS)\" \\\n\t\t\t-DCMAKE_USE_OPENSSL:BOOL=OFF \\\n\t\t\t-DBUILD_CursesDialog=OFF \\\n\t)\nendef\n\ndefine HOST_CMAKE_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_CMAKE_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) install/fast\nendef\n\ndefine CMAKE_REMOVE_EXTRA_DATA\n\trm $(TARGET_DIR)/usr/bin/{cmake,cpack}\n\trm -fr $(TARGET_DIR)/usr/share/cmake-$(CMAKE_VERSION_MAJOR)/{completions,editors}\n\trm -fr $(TARGET_DIR)/usr/share/cmake-$(CMAKE_VERSION_MAJOR)/{Help,include}\nendef\n\ndefine CMAKE_INSTALL_CTEST_CFG_FILE\n\t$(INSTALL) -m 0644 -D $(@D)/Modules/CMake.cmake \\\n\t\t$(TARGET_DIR)/usr/share/cmake-$(CMAKE_VERSION_MAJOR)/Modules/CMake.cmake.ctest\nendef\n\nCMAKE_POST_INSTALL_TARGET_HOOKS += CMAKE_REMOVE_EXTRA_DATA\nCMAKE_POST_INSTALL_TARGET_HOOKS += CMAKE_INSTALL_CTEST_CFG_FILE\n\ndefine CMAKE_INSTALL_TARGET_CMDS\n\t(cd $(@D); \\\n\t\t$(HOST_MAKE_ENV) DESTDIR=$(TARGET_DIR) \\\n\t\tcmake -P cmake_install.cmake \\\n\t)\nendef\n\n$(eval $(cmake-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/cmocka/0001-Don-t-redefine-uintptr_t.patch",
    "content": "From 28ce16b29911e5adc60140b572dee177adc7a178 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 18 Nov 2019 18:56:46 +0100\nSubject: [PATCH] Don't redefine uintptr_t\n\nAdd a call to check_type_size in ConfigureChecks.cmake and use it in\ninclude/cmocka.h to avoid the following redefinition error on riscv64:\n\nIn file included from /data/buildroot/buildroot-test/instance-0/output/build/cmocka-1.1.5/src/cmocka.c:62:\n/data/buildroot/buildroot-test/instance-0/output/build/cmocka-1.1.5/include/cmocka.h:132:28: error: conflicting types for 'uintptr_t'\n       typedef unsigned int uintptr_t;\n                            ^~~~~~~~~\nIn file included from /data/buildroot/buildroot-test/instance-0/output/host/riscv64-buildroot-linux-musl/sysroot/usr/include/stdint.h:20,\n                 from /data/buildroot/buildroot-test/instance-0/output/host/riscv64-buildroot-linux-musl/sysroot/usr/include/inttypes.h:9,\n                 from /data/buildroot/buildroot-test/instance-0/output/build/cmocka-1.1.5/src/cmocka.c:27:\n/data/buildroot/buildroot-test/instance-0/output/host/riscv64-buildroot-linux-musl/sysroot/usr/include/bits/alltypes.h:104:24: note: previous declaration of 'uintptr_t' was here\n typedef unsigned _Addr uintptr_t;\n                        ^~~~~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/30922c18150ea62aefe123d1b7cd1444efab963f\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nReviewed-by: Andreas Schneider <asn@cryptomilk.org>\n[Retrieved from:\nhttps://gitlab.com/cmocka/cmocka/commit/28ce16b29911e5adc60140b572dee177adc7a178]\n---\n ConfigureChecks.cmake | 3 +++\n config.h.cmake        | 4 ++++\n include/cmocka.h      | 2 +-\n 3 files changed, 8 insertions(+), 1 deletion(-)\n\ndiff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake\nindex fe8da35..028774f 100644\n--- a/ConfigureChecks.cmake\n+++ b/ConfigureChecks.cmake\n@@ -70,6 +70,9 @@ if (HAVE_TIME_H)\n     check_struct_has_member(\"struct timespec\" tv_sec \"time.h\" HAVE_STRUCT_TIMESPEC)\n endif (HAVE_TIME_H)\n \n+# TYPES\n+check_type_size(uintptr_t UINTPTR_T)\n+\n # FUNCTIONS\n check_function_exists(calloc HAVE_CALLOC)\n check_function_exists(exit HAVE_EXIT)\ndiff --git a/config.h.cmake b/config.h.cmake\nindex f8d79da..55fc69f 100644\n--- a/config.h.cmake\n+++ b/config.h.cmake\n@@ -75,6 +75,10 @@\n \n #cmakedefine HAVE_STRUCT_TIMESPEC 1\n \n+/***************************** TYPES *****************************/\n+\n+#cmakedefine HAVE_UINTPTR_T 1\n+\n /*************************** FUNCTIONS ***************************/\n \n /* Define to 1 if you have the `calloc' function. */\ndiff --git a/include/cmocka.h b/include/cmocka.h\nindex 3e923dd..0aa557e 100644\n--- a/include/cmocka.h\n+++ b/include/cmocka.h\n@@ -120,7 +120,7 @@ typedef uintmax_t LargestIntegralType;\n     ((LargestIntegralType)(value))\n \n /* Smallest integral type capable of holding a pointer. */\n-#if !defined(_UINTPTR_T) && !defined(_UINTPTR_T_DEFINED)\n+#if !defined(_UINTPTR_T) && !defined(_UINTPTR_T_DEFINED) && !defined(HAVE_UINTPTR_T)\n # if defined(_WIN32)\n     /* WIN32 is an ILP32 platform */\n     typedef unsigned int uintptr_t;\n-- \n2.22.0\n\n"
  },
  {
    "path": "package/cmocka/Config.in",
    "content": "config BR2_PACKAGE_CMOCKA\n\tbool cmocka\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  cmocka is an elegant unit testing framework for C with support\n\t  for mock objects. It only requires the standard C library,\n\t  works on a range of computing platforms (including embedded)\n\t  and with different compilers. It is a fork of Google's very\n\t  popular cmockery unit testing framework to fix bugs and\n\t  support it in the future.\n\n\t  https://cmocka.org\n\ncomment \"cmocka needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/cmocka/cmocka.hash",
    "content": "# Locally computed:\nsha256 f0ccd8242d55e2fd74b16ba518359151f6f8383ff8aef4976e48393f77bba8b6 cmocka-1.1.5.tar.xz\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING\n"
  },
  {
    "path": "package/cmocka/cmocka.mk",
    "content": "################################################################################\n#\n# cmocka\n#\n################################################################################\n\nCMOCKA_VERSION = 1.1.5\nCMOCKA_SOURCE = cmocka-$(CMOCKA_VERSION).tar.xz\nCMOCKA_SITE = https://cmocka.org/files/1.1\nCMOCKA_LICENSE = Apache-2.0\nCMOCKA_LICENSE_FILES = COPYING\nCMOCKA_INSTALL_STAGING = YES\nCMOCKA_CONF_OPTS = -DWITH_EXAMPLES=OFF\n\n# cmocka only supports out of source builds\nCMOCKA_SUPPORTS_IN_SOURCE_BUILD = NO\n\n# cmocka always builds a shared library, but you can optionally build a static\n# library as well\nifeq ($(BR2_SHARED_STATIC_LIBS),y)\nCMOCKA_CONF_OPTS += -DWITH_STATIC_LIB=ON\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/cog/Config.in",
    "content": "comment \"cog needs wpewebkit and a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_WPEWEBKIT || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_COG\n\tbool \"cog\"\n\tdepends on BR2_PACKAGE_WPEWEBKIT\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus\n\tdepends on BR2_USE_MMU # dbus\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_WAYLAND\n\thelp\n\t  Single \"window\" launcher for the WebKit WPE port, and\n\t  helper library for implementing WPE launcher. It does\n\t  not provide any chrome, and is suitable to be used\n\t  as a Web application container.\n\n\t  https://github.com/Igalia/cog\n\nif BR2_PACKAGE_COG\n\nconfig BR2_PACKAGE_COG_PROGRAMS_HOME_URI\n\tstring \"home uri\"\n\tdefault \"https://wpewebkit.org\"\n\thelp\n\t  Default URI to open when \"cog\" is launched. If an empty\n\t  string is used, there is no default and the URI to open\n\t  must be always specified in the command line.\n\nconfig BR2_PACKAGE_COG_PLATFORM_FDO\n\tbool \"FreeDesktop.org backend\"\n\tdefault y\n\tselect BR2_PACKAGE_LIBXKBCOMMON\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS\n\thelp\n\t  Enable the FreeDesktop.org backend. Cog will interface with\n\t  a compositor over the Wayland protocol.\n\nconfig BR2_PACKAGE_COG_PLATFORM_DRM\n\tbool \"DRM backend\"\n\tdepends on BR2_PACKAGE_HAS_UDEV # libinput\n\tdepends on BR2_PACKAGE_MESA3D_OPENGL_EGL # gbm\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_LIBINPUT\n\thelp\n\t  Enable the DRM platform backend. Cog will interface directly\n\t  with video drivers that support kernel mode-setting (KMS)\n\t  via the DRM user-space API.\n\nconfig BR2_PACKAGE_COG_USE_SYSTEM_DBUS\n\tbool \"expose system D-Bus control interface\"\n\thelp\n\t  Expose remote control interface on system bus\n\ncomment \"DRM platform needs mesa3d w/ EGL driver and GBM\"\n\tdepends on !BR2_PACKAGE_MESA3D_OPENGL_EGL\n\nendif\n"
  },
  {
    "path": "package/cog/cog.hash",
    "content": "# From https://wpewebkit.org/releases/cog-0.10.1.tar.xz.sums\nmd5  b997da3c143bc34ec5e953eb7e7ccefc  cog-0.10.1.tar.xz\nsha1  f25312141de918f41add3e3c9984faa985cda0a9  cog-0.10.1.tar.xz\nsha256  aecf546d7b0645119d79559c5574cb5eb68364fc8409dfbd47a4920bd1f221bc  cog-0.10.1.tar.xz\n\n# Hashes for license files:\nsha256  e6c42d93c68b292bcccf6d2ec3e13da85df90b718ba27c2c2a01053a9d009252  COPYING\n"
  },
  {
    "path": "package/cog/cog.mk",
    "content": "################################################################################\n#\n# cog\n#\n################################################################################\n\nCOG_VERSION = 0.10.1\nCOG_SITE = https://wpewebkit.org/releases\nCOG_SOURCE = cog-$(COG_VERSION).tar.xz\nCOG_INSTALL_STAGING = YES\nCOG_DEPENDENCIES = dbus wpewebkit wpebackend-fdo wayland\nCOG_LICENSE = MIT\nCOG_LICENSE_FILES = COPYING\nCOG_CONF_OPTS = \\\n\t-DCOG_BUILD_PROGRAMS=ON \\\n\t-DCOG_PLATFORM_HEADLESS=ON \\\n\t-DCOG_WESTON_DIRECT_DISPLAY=OFF \\\n\t-DINSTALL_MAN_PAGES=OFF \\\n\t-DCOG_HOME_URI='$(call qstrip,$(BR2_PACKAGE_COG_PROGRAMS_HOME_URI))'\n\nifeq ($(BR2_PACKAGE_COG_PLATFORM_FDO),y)\nCOG_CONF_OPTS += -DCOG_PLATFORM_FDO=ON\nCOG_DEPENDENCIES += libxkbcommon wayland-protocols\nelse\nCOG_CONF_OPTS += -DCOG_PLATFORM_FDO=OFF\nendif\n\nifeq ($(BR2_PACKAGE_COG_PLATFORM_DRM),y)\nCOG_CONF_OPTS += -DCOG_PLATFORM_DRM=ON\nCOG_DEPENDENCIES += libdrm libinput\nelse\nCOG_CONF_OPTS += -DCOG_PLATFORM_DRM=OFF\nendif\n\nifeq ($(BR2_PACKAGE_COG_USE_SYSTEM_DBUS),y)\nCOG_CONF_OPTS += -DCOG_DBUS_SYSTEM_BUS=ON\nelse\nCOG_CONF_OPTS += -DCOG_DBUS_SYSTEM_BUS=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/collectd/0001-src-netlink.c-remove-REG_NOERROR.patch",
    "content": "From 5e600ae2ad370ddbb759e84ce55a7dfaa9a0bdd7 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 6 Sep 2020 14:17:23 +0200\nSubject: [PATCH] src/netlink.c: remove REG_NOERROR\n\nREG_NOERROR is used since version 5.12.0 and\nhttps://github.com/collectd/collectd/commit/f7fd32e5209e188db7985a42054252fc4cbfe7c1\n\nHowever, REG_NOERROR is not defined by musl, even GNU regex do not\nmention REG_NOERROR, so just remove it to avoid the following build\nfailure:\n\nsrc/netlink.c: In function 'check_ignorelist':\nsrc/netlink.c:243:51: error: 'REG_NOERROR' undeclared (first use in this function); did you mean 'REG_NOTBOL'?\n       if (regexec(i->rdevice, dev, 0, NULL, 0) != REG_NOERROR)\n                                                   ^~~~~~~~~~~\n                                                   REG_NOTBOL\n\nFixes:\n - http://autobuild.buildroot.org/results/cd4d75888b5259b028132dd224be34f69bcbb702\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/collectd/collectd/pull/3569]\n---\n src/netlink.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/netlink.c b/src/netlink.c\nindex 7a5da762..fac2fb1e 100644\n--- a/src/netlink.c\n+++ b/src/netlink.c\n@@ -240,7 +240,7 @@ static int check_ignorelist(const char *dev, const char *type,\n   for (ir_ignorelist_t *i = ir_ignorelist_head; i != NULL; i = i->next) {\n #if HAVE_REGEX_H\n     if (i->rdevice != NULL) {\n-      if (regexec(i->rdevice, dev, 0, NULL, 0) != REG_NOERROR)\n+      if (regexec(i->rdevice, dev, 0, NULL, 0))\n         continue;\n     } else\n #endif\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/collectd/Config.in",
    "content": "menuconfig BR2_PACKAGE_COLLECTD\n\tbool \"collectd\"\n\t# Uses fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  collectd is a daemon which collects system performance\n\t  statistics periodically and provides mechanisms to store\n\t  the values in a variety of ways, for example in RRD files.\n\n\t  http://collectd.org/\n\nif BR2_PACKAGE_COLLECTD\n\nmenu \"match plugins\"\n\nconfig BR2_PACKAGE_COLLECTD_EMPTY_COUNTER\n\tbool \"empty counter\"\n\thelp\n\t  Match counter values which are currently zero.\n\nconfig BR2_PACKAGE_COLLECTD_HASHED\n\tbool \"hashed\"\n\thelp\n\t  Match values using a hash function of the hostname.\n\nconfig BR2_PACKAGE_COLLECTD_REGEX\n\tbool \"regex\"\n\thelp\n\t  Match values by their identifier based on regular expressions.\n\nconfig BR2_PACKAGE_COLLECTD_TIMEDIFF\n\tbool \"timediff\"\n\thelp\n\t  Match values with an invalid timestamp.\n\nconfig BR2_PACKAGE_COLLECTD_VALUE\n\tbool \"value\"\n\thelp\n\t  Select values by their data sources' values.\n\nendmenu\n\nmenu \"misc plugins\"\n\nconfig BR2_PACKAGE_COLLECTD_AGGREGATION\n\tbool \"aggregation\"\n\thelp\n\t  The Aggregate plugin allows to aggregate multiple values into\n\t  a single value using one or several consolidation functions,\n\t  e.g. summation and average.\n\nconfig BR2_PACKAGE_COLLECTD_LOGFILE\n\tbool \"logfile\"\n\tdefault y\n\thelp\n\t  Writes log messages to a file or STDOUT/STDERR.\n\nconfig BR2_PACKAGE_COLLECTD_LOGSTASH\n\tbool \"logstash\"\n\tselect BR2_PACKAGE_YAJL\n\thelp\n\t  Writes log messages formatted as logstash JSON events.\n\nconfig BR2_PACKAGE_COLLECTD_LUA\n\tbool \"lua\"\n\tdepends on BR2_PACKAGE_HAS_LUAINTERPRETER\n\thelp\n\t  Embeds a Lua interpreter into collectd and provides an\n\t  interface to collectd's plugin system.\n\ncomment \"lua support needs a Lua interpreter\"\n\tdepends on !BR2_PACKAGE_HAS_LUAINTERPRETER\n\nconfig BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL\n\tbool \"notify_email\"\n\tdepends on !BR2_STATIC_LIBS # libesmtp\n\tselect BR2_PACKAGE_LIBESMTP\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Send an E-mail with the notification message to the\n\t  configured recipients.\n\ncomment \"notify_email needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_COLLECTD_NOTIFY_NAGIOS\n\tbool \"notify_nagios\"\n\thelp\n\t  Sends notifications to Nagios as a passive check result.\n\nconfig BR2_PACKAGE_COLLECTD_SYSLOG\n\tbool \"syslog\"\n\tdefault y\n\thelp\n\t  Logs to the standard UNIX logging mechanism.\n\nconfig BR2_PACKAGE_COLLECTD_THRESHOLD\n\tbool \"threshold\"\n\thelp\n\t  Checks values against configured thresholds and creates\n\t  notifications if values are out of bounds.\n\nendmenu\n\nmenu \"read plugins\"\n\ncomment \"Select at least one for collectd to be useful\"\n\nconfig BR2_PACKAGE_COLLECTD_APACHE\n\tbool \"apache\"\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  Collects Apache's mod_status information.\n\nconfig BR2_PACKAGE_COLLECTD_APCUPS\n\tbool \"apcups\"\n\thelp\n\t  Collects UPS statistics from apcupsd.\n\nconfig BR2_PACKAGE_COLLECTD_BATTERY\n\tbool \"battery\"\n\thelp\n\t  Collects the battery's charge, the drawn current and voltage.\n\nconfig BR2_PACKAGE_COLLECTD_BIND\n\tbool \"bind\"\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  Collects BIND DNS statistics.\n\nconfig BR2_PACKAGE_COLLECTD_BUDDYINFO\n\tbool \"buddyinfo\"\n\thelp\n\t  Statistics from buddyinfo file about memory fragmentation.\n\nconfig BR2_PACKAGE_COLLECTD_CAPABILITIES\n\tbool \"capabilities\"\n\tdepends on BR2_aarch64 || BR2_i386 || BR2_x86_64 # dmidecode\n\tselect BR2_PACKAGE_DMIDECODE # runtime\n\tselect BR2_PACKAGE_JANSSON\n\tselect BR2_PACKAGE_LIBMICROHTTPD\n\thelp\n\t  Collects selected static platform data using dmidecode and\n\t  expose it through micro embedded webserver.\n\nconfig BR2_PACKAGE_COLLECTD_CEPH\n\tbool \"ceph\"\n\tselect BR2_PACKAGE_YAJL\n\thelp\n\t  Statistics from the Ceph distributed storage system.\n\nconfig BR2_PACKAGE_COLLECTD_CHRONY\n\tbool \"chrony\"\n\thelp\n\t  Collects NTP data from the chrony NTP server.\n\nconfig BR2_PACKAGE_COLLECTD_CGROUPS\n\tbool \"cgroups\"\n\thelp\n\t  Collects CGroups CPU usage accounting.\n\nconfig BR2_PACKAGE_COLLECTD_CONNTRACK\n\tbool \"conntrack\"\n\thelp\n\t  Collects the number of entries in Linux's connection tracking\n\t  table.\n\nconfig BR2_PACKAGE_COLLECTD_CONTEXTSWITCH\n\tbool \"contextswitch\"\n\thelp\n\t  Collects the number of context switches done by the operating\n\t  system.\n\nconfig BR2_PACKAGE_COLLECTD_CPU\n\tbool \"cpu\"\n\thelp\n\t  Collects the amount of time spent by the CPU in various\n\t  states.\n\nconfig BR2_PACKAGE_COLLECTD_CPUFREQ\n\tbool \"cpufreq\"\n\thelp\n\t  Collects the current CPU's frequency.\n\nconfig BR2_PACKAGE_COLLECTD_CPUSLEEP\n\tbool \"cpusleep\"\n\thelp\n\t  Measures time spent by CPU in deep sleep mode.\n\nconfig BR2_PACKAGE_COLLECTD_CURL\n\tbool \"curl\"\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  Uses libcurl to read files and then parses them according\n\t  to the configuration.\n\nconfig BR2_PACKAGE_COLLECTD_CURL_JSON\n\tbool \"curl-json\"\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_YAJL\n\thelp\n\t  Queries JSON data using the cURL library and parses it\n\t  according to the user's configuration using YAJL.\n\nconfig BR2_PACKAGE_COLLECTD_CURL_XML\n\tbool \"curl-xml\"\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  Reads files using libcurl and parses it as XML.\n\nconfig BR2_PACKAGE_COLLECTD_DBI\n\tbool \"dbi\"\n\tselect BR2_PACKAGE_LIBDBI\n\thelp\n\t  Executes SQL statements on various databases and\n\t  interprets the returned data.\n\nconfig BR2_PACKAGE_COLLECTD_DF\n\tbool \"df\"\n\thelp\n\t  Collects file system usage information.\n\nconfig BR2_PACKAGE_COLLECTD_DISK\n\tbool \"disk\"\n\thelp\n\t  Collects performance statistics of hard-disks and partitions.\n\nconfig BR2_PACKAGE_COLLECTD_DNS\n\tbool \"dns\"\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  Collects statistics of DNS traffic using libpcap.\n\nconfig BR2_PACKAGE_COLLECTD_DPDK_TELEMETRY\n\tbool \"dpdk_telemetry\"\n\tselect BR2_PACKAGE_JANSSON\n\thelp\n\t  Collects DPDK ethernet device metrics via dpdk_telemetry\n\t  library.\n\nconfig BR2_PACKAGE_COLLECTD_DRBD\n\tbool \"drbd\"\n\thelp\n\t  Collect individual drbd resource statistics.\n\nconfig BR2_PACKAGE_COLLECTD_ENTROPY\n\tbool \"entropy\"\n\thelp\n\t  Collects the available entropy on a system.\n\nconfig BR2_PACKAGE_COLLECTD_ETHSTAT\n\tbool \"ethstat\"\n\thelp\n\t  Collects network interface card statistics.\n\nconfig BR2_PACKAGE_COLLECTD_EXEC\n\tbool \"exec\"\n\thelp\n\t  Executes scripts and reads values back that are printed\n\t  to STDOUT by that program.\n\nconfig BR2_PACKAGE_COLLECTD_FHCOUNT\n\tbool \"fhcount\"\n\thelp\n\t  File handles statistics.\n\nconfig BR2_PACKAGE_COLLECTD_FILECOUNT\n\tbool \"filecount\"\n\thelp\n\t  Counts the number of files in a directory and all its\n\t  subdirectories.\n\nconfig BR2_PACKAGE_COLLECTD_FSCACHE\n\tbool \"fscache\"\n\thelp\n\t  Collects information about the file-system based caching\n\t  infrastructure for network file-systems and other slow media.\n\nconfig BR2_PACKAGE_COLLECTD_GPS\n\tbool \"gps\"\n\tselect BR2_PACKAGE_GPSD\n\thelp\n\t  Reports the number of sattelites seen by and precision\n\t  of a GPS receiver.\n\nconfig BR2_PACKAGE_COLLECTD_HUGEPAGES\n\tbool \"hugepages\"\n\thelp\n\t  Reports the number of used and free hugepages on Linux.\n\nconfig BR2_PACKAGE_COLLECTD_INFINIBAND\n\tbool \"infiniband\"\n\thelp\n\t  Attributes and counters for each port on each IB device.\n\nconfig BR2_PACKAGE_COLLECTD_INTERFACE\n\tbool \"interface\"\n\thelp\n\t  Collects information about the traffic of network interfaces.\n\nconfig BR2_PACKAGE_COLLECTD_IPC\n\tbool \"ipc\"\n\thelp\n\t  IPC counters: semaphores used, number of allocated segments\n\t  in shared memory and more.\n\nconfig BR2_PACKAGE_COLLECTD_IPTABLES\n\tbool \"iptables\"\n\tselect BR2_PACKAGE_IPTABLES\n\thelp\n\t  Gather statistics from iptables packet filter.\n\nconfig BR2_PACKAGE_COLLECTD_IPVS\n\tbool \"ipvs\"\n\thelp\n\t  Extracts statistics from IP Virtual Server (IPVS), the\n\t  transport-layer load-balancer of the LVS project.\n\t  It stores traffic and connections history for each of the\n\t  Real Servers (RS) behind a local Virtual Server (VS).\n\t  Collectd must be run on Directors (in LVS jargon).\n\nconfig BR2_PACKAGE_COLLECTD_IRQ\n\tbool \"irq\"\n\thelp\n\t  Collects the number of interrupts.\n\nconfig BR2_PACKAGE_COLLECTD_LOAD\n\tbool \"load\"\n\thelp\n\t  Collects the system load.\n\nconfig BR2_PACKAGE_COLLECTD_LOGPARSER\n\tbool \"logparser\"\n\thelp\n\t  Plugin for filtering and parsing log messages.\n\nconfig BR2_PACKAGE_COLLECTD_MD\n\tbool \"md\"\n\thelp\n\t  Collects software-RAID device information.\n\nconfig BR2_PACKAGE_COLLECTD_MDEVENTS\n\tbool \"mdevents\"\n\thelp\n\t  Events from md (Linux Software RAID) devices.\n\nconfig BR2_PACKAGE_COLLECTD_MEMCACHEC\n\tbool \"memcachec\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_LIBMEMCACHED\n\thelp\n\t  Query and parse data from a memcache daemon.\n\ncomment \"memcachec needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_COLLECTD_MEMCACHED\n\tbool \"memcached\"\n\thelp\n\t  Collects statistics from a memcached daemon.\n\nconfig BR2_PACKAGE_COLLECTD_MEMORY\n\tbool \"memory\"\n\thelp\n\t  Collects physical memory utilization.\n\nconfig BR2_PACKAGE_COLLECTD_MODBUS\n\tbool \"modbus\"\n\tselect BR2_PACKAGE_LIBMODBUS\n\thelp\n\t  Reads register values from a modbus \"slave\" via Modbus/TCP.\n\nconfig BR2_PACKAGE_COLLECTD_MYSQL\n\tbool \"mysql\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # mysql\n\tdepends on BR2_USE_MMU # mysql\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # mysql\n\tselect BR2_PACKAGE_MYSQL\n\thelp\n\t  Connects to a MySQL database and issues a \"show status\"\n\t  command.\n\nconfig BR2_PACKAGE_COLLECTD_NETLINK\n\tbool \"netlink\"\n\tselect BR2_PACKAGE_LIBMNL\n\thelp\n\t  Get statistics for interfaces, qdiscs, classes, and filters.\n\nconfig BR2_PACKAGE_COLLECTD_NFS\n\tbool \"nfs\"\n\thelp\n\t  Collects information about the usage of the Network File\n\t  System.\n\nconfig BR2_PACKAGE_COLLECTD_NGINX\n\tbool \"nginx\"\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  Collects the number of requests handled by the nginx daemon\n\t  since startup and the number of current connections by state.\n\nconfig BR2_PACKAGE_COLLECTD_NTPD\n\tbool \"ntpd\"\n\thelp\n\t  Queries an NTP server and extracts parameters.\n\nconfig BR2_PACKAGE_COLLECTD_NUT\n\tbool \"nut\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_NUT\n\thelp\n\t  The NUT plugin collects uninterruptible power supply (UPS)\n\t  statistics using the Network UPS Tools (NUT).\n\ncomment \"nut needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_COLLECTD_OLSRD\n\tbool \"olsrd\"\n\thelp\n\t  Reads information about meshed networks from olsrd.\n\nconfig BR2_PACKAGE_COLLECTD_ONEWIRE\n\tbool \"onewire\"\n\tselect BR2_PACKAGE_OWFS\n\thelp\n\t  Collects temperature information from sensors connected over\n\t  the OneWire bus.\n\nconfig BR2_PACKAGE_COLLECTD_OPENLDAP\n\tbool \"openldap\"\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_OPENLDAP\n\thelp\n\t  Read monitoring information from OpenLDAP's cn=Monitor\n\t  subtree.\n\ncomment \"openldap support needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_COLLECTD_OPENVPN\n\tbool \"openvpn\"\n\thelp\n\t  Reads the status file of OpenVPN to collect statistics.\n\nconfig BR2_PACKAGE_COLLECTD_PING\n\tbool \"ping\"\n\tselect BR2_PACKAGE_LIBOPING\n\thelp\n\t  Mesures network latency using ICMP \"echo requests\".\n\nconfig BR2_PACKAGE_COLLECTD_POSTGRESQL\n\tbool \"postgresql\"\n\tdepends on BR2_USE_WCHAR # postgresql\n\tselect BR2_PACKAGE_POSTGRESQL\n\thelp\n\t  Connects to and executes SQL statements on a PostgreSQL\n\t  database. It then reads back the results and, depending on the\n\t  configuration, the returned values are then converted into\n\t  collectd 'value lists'.\n\ncomment \"postgresql support needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_COLLECTD_PROCESSES\n\tbool \"processes\"\n\thelp\n\t  Collects the number of processes gruped by state.\n\nconfig BR2_PACKAGE_COLLECTD_PROTOCOLS\n\tbool \"protocols\"\n\thelp\n\t  Collects information about the network protocols.\n\nconfig BR2_PACKAGE_COLLECTD_REDIS\n\tbool \"redis\"\n\tselect BR2_PACKAGE_HIREDIS\n\thelp\n\t  Connects to one or more instances of Redis.\n\nconfig BR2_PACKAGE_COLLECTD_SENSORS\n\tbool \"sensors\"\n\tselect BR2_PACKAGE_LM_SENSORS\n\thelp\n\t  Collects data from lm-sensors.\n\nconfig BR2_PACKAGE_COLLECTD_SERIAL\n\tbool \"serial\"\n\thelp\n\t  Collects the traffic on serial interfaces.\n\nconfig BR2_PACKAGE_COLLECTD_SMART\n\tbool \"SMART\"\n\tdepends on BR2_PACKAGE_HAS_UDEV # libatasmart\n\tselect BR2_PACKAGE_LIBATASMART\n\thelp\n\t  Collect SMART statistics, notably load cycle count,\n\t  temperature and bad sectors.\n\ncomment \"SMART requires udev to be enabled\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n\nconfig BR2_PACKAGE_COLLECTD_STATSD\n\tbool \"StatsD\"\n\thelp\n\t  StatsD network protocol to allow clients to report \"events\".\n\nconfig BR2_PACKAGE_COLLECTD_SNMP\n\tbool \"snmp\"\n\tselect BR2_PACKAGE_NETSNMP\n\thelp\n\t  Reads values from SNMP devices.\n\nconfig BR2_PACKAGE_COLLECTD_SWAP\n\tbool \"swap\"\n\thelp\n\t  Collects the amount of memory currently written to disk.\n\nconfig BR2_PACKAGE_COLLECTD_SYNPROXY\n\tbool \"synproxy\"\n\thelp\n\t  Synproxy stats plugin.\n\nconfig BR2_PACKAGE_COLLECTD_TABLE\n\tbool \"table\"\n\thelp\n\t  Parses table-like structured plain-text files.\n\nconfig BR2_PACKAGE_COLLECTD_TAIL\n\tbool \"tail\"\n\thelp\n\t  Tails log files and each line is given to one or more matches\n\t  which test if the line is relevant for any statistics.\n\nconfig BR2_PACKAGE_COLLECTD_TAIL_CSV\n\tbool \"tail csv\"\n\thelp\n\t  Follows (tails) files in CSV format, parses each line and\n\t  submits extracted values.\n\nconfig BR2_PACKAGE_COLLECTD_TCPCONNS\n\tbool \"tcpconns\"\n\thelp\n\t  Counts the number of TCP connections to/from a specified port.\n\nconfig BR2_PACKAGE_COLLECTD_THERMAL\n\tbool \"thermal\"\n\thelp\n\t  Reads ACPI thermal zone information.\n\nconfig BR2_PACKAGE_COLLECTD_UBI\n\tbool \"ubi\"\n\thelp\n\t  UBI (Unsorted Block Images) is an erase block management layer\n\t  for flash memory devices. UBI serves two purposes, tracking\n\t  NAND flash bad blocks and providing wear leveling.\n\t  This plugin collects some stats about UBI devices:\n\t   * bad physical underlying blocks (bad_peb_count)\n\t   * max erase counter value (max_ec)\n\nconfig BR2_PACKAGE_COLLECTD_UPTIME\n\tbool \"uptime\"\n\thelp\n\t  Keeps track of the system uptime.\n\nconfig BR2_PACKAGE_COLLECTD_USERS\n\tbool \"users\"\n\thelp\n\t  Counts the number of users currently logged in.\n\nconfig BR2_PACKAGE_COLLECTD_VMEM\n\tbool \"vmem\"\n\thelp\n\t  Collects information about the virtual memory subsystem.\n\nconfig BR2_PACKAGE_COLLECTD_WIRELESS\n\tbool \"wireless\"\n\thelp\n\t  Collects signal quality, power and noise ratio for WLAN cards.\n\nconfig BR2_PACKAGE_COLLECTD_ZOOKEEPER\n\tbool \"zookeeper\"\n\thelp\n\t  Read data from Zookeeper's MNTR command.\n\nendmenu\n\nmenu \"target plugins\"\n\nconfig BR2_PACKAGE_COLLECTD_NOTIFICATION\n\tbool \"notification\"\n\thelp\n\t  Create and dispatch a notification.\n\nconfig BR2_PACKAGE_COLLECTD_REPLACE\n\tbool \"replace\"\n\thelp\n\t  Replace parts of an identifier using regular expressions.\n\nconfig BR2_PACKAGE_COLLECTD_SCALE\n\tbool \"scale\"\n\thelp\n\t  Scale (multiply) values by an arbitrary number.\n\nconfig BR2_PACKAGE_COLLECTD_SET\n\tbool \"set\"\n\thelp\n\t  Set (overwrite) entire parts of an identifier.\n\nendmenu\n\nmenu \"write plugins\"\n\ncomment \"Select at least one for collectd to be useful\"\n\nconfig BR2_PACKAGE_COLLECTD_AMQP\n\tbool \"amqp\"\n\tselect BR2_PACKAGE_OPENSSL # needs rabbitmq-c with ssl support\n\tselect BR2_PACKAGE_RABBITMQ_C\n\thelp\n\t  Send/receive values via the Advanced Message Queuing Protocol\n\t  (AMQP).\n\nconfig BR2_PACKAGE_COLLECTD_CSV\n\tbool \"csv\"\n\thelp\n\t  Writes values to a plain-text file in Comma Separated Values\n\t  format.\n\nconfig BR2_PACKAGE_COLLECTD_GRAPHITE\n\tbool \"graphite\"\n\thelp\n\t  Writes data collected to Carbon (Graphite's) storage API.\n\t  http://graphite.wikidot.com/start\n\nconfig BR2_PACKAGE_COLLECTD_GRPC\n\tbool \"grpc\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC # grpc\n\tdepends on BR2_INSTALL_LIBSTDCPP # grpc -> protobuf\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # grpc -> protobuf\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # grpc -> libabseil-cpp\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # grpc -> host-libabseil-cpp\n\tdepends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS # grpc\n\tselect BR2_PACKAGE_GRPC\n\thelp\n\t  Send/receive values using the gRPC protocol.\n\ncomment \"grpc needs a toolchain w/ C++, gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t|| !BR2_HOST_GCC_AT_LEAST_4_9\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS # grpc\n\nconfig BR2_PACKAGE_COLLECTD_MQTT\n\tbool \"mqtt\"\n\tselect BR2_PACKAGE_MOSQUITTO\n\thelp\n\t  Sends metrics to and/or receives metrics from an MQTT broker.\n\nconfig BR2_PACKAGE_COLLECTD_NETWORK\n\tbool \"network\"\n\thelp\n\t  Send/receive values from other instances of collectd.\n\nconfig BR2_PACKAGE_COLLECTD_NETWORK_GCRYPT\n\tbool \"crypto support\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt\n\tdepends on BR2_PACKAGE_COLLECTD_NETWORK\n\tselect BR2_PACKAGE_LIBGCRYPT\n\thelp\n\t  Enable crypto support\n\nconfig BR2_PACKAGE_COLLECTD_RRDTOOL\n\tbool \"rrdtool\"\n\tdepends on BR2_USE_WCHAR # rrdtool\n\tselect BR2_PACKAGE_RRDTOOL\n\thelp\n\t  Writes values to RRD-files.\n\ncomment \"rrdtool support needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_COLLECTD_RIEMANN\n\tbool \"riemann\"\n\t# riemann-c-client -> protobuf-c\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tselect BR2_PACKAGE_RIEMANN_C_CLIENT\n\tselect BR2_PACKAGE_LIBTOOL\n\thelp\n\t  Sends data to Riemann, a stream processing and monitoring\n\t  system.\n\nconfig BR2_PACKAGE_COLLECTD_UNIXSOCK\n\tbool \"unixsock\"\n\thelp\n\t  Opens a UNIX domain socket and accepts connections.\n\t  One can send commands to the daemon and receive information.\n\nconfig BR2_PACKAGE_COLLECTD_WRITEHTTP\n\tbool \"write_http\"\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  Sends values collected to a web-server using HTTP POST and\n\t  PUTVAL.\n\nconfig BR2_PACKAGE_COLLECTD_WRITEINFLUXDBUDP\n\tbool \"write_influxdb_udp\"\n\thelp\n\t  Sends data to an instance of InfluxDB using the \"Line\n\t  Protocol\".\n\nconfig BR2_PACKAGE_COLLECTD_WRITELOG\n\tbool \"write_log\"\n\thelp\n\t  Writes data to the log.\n\nconfig BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS\n\tbool \"write_prometheus\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # protobuf-c\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\" # protobuf-c\n\tselect BR2_PACKAGE_LIBMICROHTTPD\n\tselect BR2_PACKAGE_PROTOBUF_C\n\thelp\n\t  Publishes values using an embedded HTTP server, in a format\n\t  compatible with Prometheus' collectd_exporter.\n\ncomment \"write_prometheus needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\nconfig BR2_PACKAGE_COLLECTD_WRITEREDIS\n\tbool \"write_redis\"\n\tselect BR2_PACKAGE_HIREDIS\n\thelp\n\t  Sends data to Redis.\n\nconfig BR2_PACKAGE_COLLECTD_WRITESENSU\n\tbool \"write_sensu\"\n\thelp\n\t  Sends data to Sensu, a stream processing and monitoring\n\t  system, via the Sensu client local TCP socket.\n\nconfig BR2_PACKAGE_COLLECTD_WRITETSDB\n\tbool \"write_tsdb\"\n\thelp\n\t  Sends data OpenTSDB, a scalable no master, no shared state\n\t  time series database.\n\nendmenu\n\nendif\n\ncomment \"collectd needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/collectd/S90collectd",
    "content": "#!/bin/sh\n\nDAEMON=\"collectd\"\nEXEC=\"/usr/sbin/$DAEMON\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\nCOLLECTD_ARGS=\"\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"$EXEC\" \\\n\t\t-- $COLLECTD_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/collectd/collectd.hash",
    "content": "# Locally computed checksums\nsha512\t7a15e4c0ae587db4987d673a790a4f3bea1cab29ce24a506fb21fa7bd2f60bfec70867eaa1c1395cb5b0e0ae81a024fb6109b064da0ef50e7c146d2198871c70\tcollectd-5.12.0.tar.bz2\nsha256\t5bae043042c19c31f77eb8464e56a01a5454e0b39fa07cf7ad0f1bfc9c3a09d6\tcollectd-5.12.0.tar.bz2\nsha1\taf36fe83e2995270b5632fc21e5a001e6702cdce\tcollectd-5.12.0.tar.bz2\nsha256\ted0409b2b1c30566dab5fcdaf46ee70e140c99788e22f0267645a9357b476ae4\tCOPYING\n"
  },
  {
    "path": "package/collectd/collectd.mk",
    "content": "################################################################################\n#\n# collectd\n#\n################################################################################\n\nCOLLECTD_VERSION = 5.12.0\nCOLLECTD_SITE = \\\n\thttps://github.com/collectd/collectd/releases/download/collectd-$(COLLECTD_VERSION)\nCOLLECTD_SOURCE = collectd-$(COLLECTD_VERSION).tar.bz2\nCOLLECTD_CONF_ENV = ac_cv_lib_yajl_yajl_alloc=yes\nCOLLECTD_INSTALL_STAGING = YES\nCOLLECTD_LICENSE = MIT (daemon, plugins), GPL-2.0 (plugins), LGPL-2.1 (plugins)\nCOLLECTD_LICENSE_FILES = COPYING\nCOLLECTD_CPE_ID_VENDOR = collectd\nCOLLECTD_SELINUX_MODULES = apache collectd\n\n# These require unmet dependencies, are fringe, pointless or deprecated\nCOLLECTD_PLUGINS_DISABLE = \\\n\tapple_sensors aquaero ascent barometer dpdkstat email \\\n\tgmond hddtemp intel_rdt ipmi java lpar \\\n\tmadwifi mbmon mic multimeter netapp notify_desktop numa \\\n\toracle perl pf pinba powerdns python routeros \\\n\trrdcached sigrok tape target_v5upgrade teamspeak2 ted \\\n\ttokyotyrant turbostat uuid varnish virt vserver write_kafka \\\n\twrite_mongodb xencpu xmms zfs_arc zone\n\nCOLLECTD_CONF_ENV += LIBS=\"-lm\"\n\n#\n# NOTE: There's also a third availible setting \"intswap\", which might\n# be needed on some old ARM hardware (see [2]), but is not being\n# accounted for as per discussion [1]\n#\n# [1] http://lists.busybox.net/pipermail/buildroot/2017-November/206100.html\n# [2] http://lists.busybox.net/pipermail/buildroot/2017-November/206251.html\n#\nifeq ($(BR2_ENDIAN),\"BIG\")\nCOLLECTD_FP_LAYOUT=endianflip\nelse\nCOLLECTD_FP_LAYOUT=nothing\nendif\n\nCOLLECTD_CONF_OPTS += \\\n\t--with-nan-emulation \\\n\t--with-fp-layout=$(COLLECTD_FP_LAYOUT) \\\n\t--with-perl-bindings=no \\\n\t--disable-werror \\\n\t$(foreach p, $(COLLECTD_PLUGINS_DISABLE), --disable-$(p)) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_AGGREGATION),--enable-aggregation,--disable-aggregation) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_AMQP),--enable-amqp,--disable-amqp) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_APACHE),--enable-apache,--disable-apache) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_APCUPS),--enable-apcups,--disable-apcups) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_BATTERY),--enable-battery,--disable-battery) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_BIND),--enable-bind,--disable-bind) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_BUDDYINFO),--enable-buddyinfo,--disable-buddyinfo) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CAPABILITIES),--enable-capabilities,--disable-capabilities) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CEPH),--enable-ceph,--disable-ceph) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CHRONY),--enable-chrony,--disable-chrony) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CGROUPS),--enable-cgroups,--disable-cgroups) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CONNTRACK),--enable-conntrack,--disable-conntrack) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CONTEXTSWITCH),--enable-contextswitch,--disable-contextswitch) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CPU),--enable-cpu,--disable-cpu) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CPUFREQ),--enable-cpufreq,--disable-cpufreq) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CPUSLEEP),--enable-cpusleep,--disable-cpusleep) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CSV),--enable-csv,--disable-csv) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CURL),--enable-curl,--disable-curl) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CURL_JSON),--enable-curl_json,--disable-curl_json) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CURL_XML),--enable-curl_xml,--disable-curl_xml) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_DBI),--enable-dbi,--disable-dbi) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_DF),--enable-df,--disable-df) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_DISK),--enable-disk,--disable-disk) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_DNS),--enable-dns,--disable-dns) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_DPDK_TELEMETRY),--enable-dpdk_telemetry,--disable-dpdk_telemetry) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_DRBD),--enable-drbd,--disable-drbd) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_EMPTY_COUNTER),--enable-match_empty_counter,--disable-match_empty_counter) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_ENTROPY),--enable-entropy,--disable-entropy) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_ETHSTAT),--enable-ethstat,--disable-ethstat) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_EXEC),--enable-exec,--disable-exec) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_FHCOUNT),--enable-fhcount,--disable-fhcount) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_FILECOUNT),--enable-filecount,--disable-filecount) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_FSCACHE),--enable-fscache,--disable-fscache) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_GPS),--enable-gps,--disable-gps) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_GRAPHITE),--enable-write_graphite,--disable-write_graphite) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_GRPC),--enable-grpc,--disable-grpc) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_HASHED),--enable-match_hashed,--disable-match_hashed) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_HUGEPAGES),--enable-hugepages,--disable-hugepages) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_INFINIBAND),--enable-infiniband,--disable-infiniband) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_INTERFACE),--enable-interface,--disable-interface) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_IPC),--enable-ipc,--disable-ipc) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_IPTABLES),--enable-iptables,--disable-iptables) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_IPVS),--enable-ipvs,--disable-ipvs) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_IRQ),--enable-irq,--disable-irq) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_LOAD),--enable-load,--disable-load) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_LOGFILE),--enable-logfile,--disable-logfile) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_LOGPARSER),--enable-logparser,--disable-logparser) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_LOGSTASH),--enable-log_logstash,--disable-log_logstash) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_LUA),--enable-lua,--disable-lua) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_MD),--enable-md,--disable-md) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_MDEVENTS),--enable-mdevents,--disable-mdevents) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_MEMCACHEC),--enable-memcachec,--disable-memcachec) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_MEMCACHED),--enable-memcached,--disable-memcached) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_MEMORY),--enable-memory,--disable-memory) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_MODBUS),--enable-modbus,--disable-modbus) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_MQTT),--enable-mqtt,--disable-mqtt) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_MYSQL),--enable-mysql,--disable-mysql) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NETLINK),--enable-netlink,--disable-netlink) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NETWORK),--enable-network,--disable-network) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NFS),--enable-nfs,--disable-nfs) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NGINX),--enable-nginx,--disable-nginx) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NOTIFICATION),--enable-target_notification,--disable-target_notification) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL),--enable-notify_email,--disable-notify_email) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NOTIFY_NAGIOS),--enable-notify_nagios,--disable-notify_nagios) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NTPD),--enable-ntpd,--disable-ntpd) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NUT),--enable-nut,--disable-nut) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_OLSRD),--enable-olsrd,--disable-olsrd) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_ONEWIRE),--enable-onewire,--disable-onewire) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_OPENLDAP),--enable-openldap,--disable-openldap) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_OPENVPN),--enable-openvpn,--disable-openvpn) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_PING),--enable-ping,--disable-ping) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_POSTGRESQL),--enable-postgresql,--disable-postgresql) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_PROCESSES),--enable-processes,--disable-processes) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_PROTOCOLS),--enable-protocols,--disable-protocols) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_REDIS),--enable-redis,--disable-redis) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_REGEX),--enable-match_regex,--disable-match-regex) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_REPLACE),--enable-target_replace,--disable-target_replace) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_RIEMANN),--enable-write_riemann,--disable-write_riemann) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_RRDTOOL),--enable-rrdtool,--disable-rrdtool) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_SCALE),--enable-target_scale,--disable-target_scale) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_SENSORS),--enable-sensors,--disable-sensors) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_SERIAL),--enable-serial,--disable-serial) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_STATSD),--enable-statsd,--disable-statsd) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_SET),--enable-target_set,--disable-target_set) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_SMART),--enable-smart,--disable-smart) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_SNMP),--enable-snmp,--disable-snmp) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_SWAP),--enable-swap,--disable-swap) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_SYNPROXY),--enable-synproxy,--disable-synproxy) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_SYSLOG),--enable-syslog,--disable-syslog) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_TABLE),--enable-table,--disable-table) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_TAIL),--enable-tail,--disable-tail) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_TAIL_CSV),--enable-tail_csv,--disable-tail_csv) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_TCPCONNS),--enable-tcpconns,--disable-tcpconns) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_THERMAL),--enable-thermal,--disable-thermal) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_THRESHOLD),--enable-threshold,--disable-threshold) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_TIMEDIFF),--enable-match_timediff,--disable-match_timediff) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_UBI),--enable-ubi,--disable-ubi) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_UNIXSOCK),--enable-unixsock,--disable-unixsock) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_UPTIME),--enable-uptime,--disable-uptime) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_USERS),--enable-users,--disable-users) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_VALUE),--enable-match_value,--disable-match_value) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_VMEM),--enable-vmem,--disable-vmem) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_WIRELESS),--enable-wireless,--disable-wireless) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_WRITEHTTP),--enable-write_http,--disable-write_http) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_WRITEINFLUXDBUDP),--enable-write_influxdb_udp,--disable-write_influxdb_udp) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_WRITELOG),--enable-write_log,--disable-write_log) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS),--enable-write_prometheus,--disable-write_prometheus) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_WRITEREDIS),--enable-write_redis,--disable-write_redis) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_WRITESENSU),--enable-write_sensu,--disable-write_sensu) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_WRITETSDB),--enable-write_tsdb,--disable-write_tsdb) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_ZOOKEEPER),--enable-zookeeper,--disable-zookeeper)\n\nCOLLECTD_DEPENDENCIES = \\\n\thost-pkgconf \\\n\t$(if $(BR2_PACKAGE_COLLECTD_AMQP),rabbitmq-c) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_APACHE),libcurl) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_BIND),libcurl libxml2) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CAPABILITIES),jansson libmicrohttpd) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CEPH),yajl) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CURL),libcurl) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CURL_JSON),libcurl yajl) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_CURL_XML),libcurl libxml2) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_DBI),libdbi) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_DNS),libpcap) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_DPDK_TELEMETRY),jansson) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_GPS),gpsd) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_GRPC),grpc) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_IPTABLES),iptables) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_LOGSTASH),yajl) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_LUA),luainterpreter) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_MEMCACHEC),libmemcached) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_MODBUS),libmodbus) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_MQTT),mosquitto) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_MYSQL),mysql) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NETLINK),libmnl) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NGINX),libcurl) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL),libesmtp) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_NUT),nut) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_ONEWIRE),owfs) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_OPENLDAP),openldap) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_PING),liboping) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_POSTGRESQL),postgresql) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_REDIS),hiredis) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_RIEMANN),libtool riemann-c-client) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_RRDTOOL),rrdtool) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_SENSORS),lm-sensors) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_SMART),libatasmart) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_SNMP),netsnmp) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_WRITEHTTP),libcurl) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS),libmicrohttpd protobuf-c) \\\n\t$(if $(BR2_PACKAGE_COLLECTD_WRITEREDIS),hiredis)\n\n# include/library fixups\nifeq ($(BR2_PACKAGE_JANSSON),y)\nCOLLECTD_CONF_OPTS += --with-libjansson=$(STAGING_DIR)/usr\nendif\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nCOLLECTD_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr\nendif\nifeq ($(BR2_PACKAGE_LUAJIT),y)\nCOLLECTD_CONF_ENV += LIBLUA_PKG_CONFIG_NAME=luajit\nendif\nifeq ($(BR2_PACKAGE_MYSQL),y)\nCOLLECTD_CONF_OPTS += --with-libmysql=$(STAGING_DIR)/usr\nendif\nifeq ($(BR2_PACKAGE_NETSNMP),y)\nCOLLECTD_CONF_OPTS += --with-libnetsnmp=$(STAGING_DIR)/usr\nendif\nifeq ($(BR2_PACKAGE_POSTGRESQL),y)\nCOLLECTD_CONF_OPTS += --with-libpq=$(STAGING_DIR)/usr/bin/pg_config\nCOLLECTD_CONF_ENV += LIBS=\"-lpthread -lm\"\nendif\nifeq ($(BR2_PACKAGE_YAJL),y)\nCOLLECTD_CONF_OPTS += --with-libyajl=$(STAGING_DIR)/usr\nendif\n\n# network can use libgcrypt\nifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nCOLLECTD_DEPENDENCIES += libgcrypt\nCOLLECTD_CONF_OPTS += --with-libgcrypt=$(STAGING_DIR)/usr/bin/libgcrypt-config\nelse\nCOLLECTD_CONF_OPTS += --with-libgcrypt=no\nendif\n\ndefine COLLECTD_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install\n\trm -f $(TARGET_DIR)/usr/bin/collectd-nagios\nendef\n\nifeq ($(BR2_PACKAGE_COLLECTD_POSTGRESQL),)\ndefine COLLECTD_REMOVE_UNNEEDED_POSTGRESQL_DEFAULT_CONF\n\trm -f $(TARGET_DIR)/usr/share/collectd/postgresql_default.conf\nendef\nCOLLECTD_POST_INSTALL_TARGET_HOOKS += COLLECTD_REMOVE_UNNEEDED_POSTGRESQL_DEFAULT_CONF\nendif\n\ndefine COLLECTD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/collectd/collectd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/collectd.service\nendef\n\ndefine COLLECTD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/collectd/S90collectd \\\n\t\t$(TARGET_DIR)/etc/init.d/S90collectd\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/collectd/collectd.service",
    "content": "[Unit]\nDescription=Statistics collection and monitoring daemon\nAfter=local-fs.target network.target\nRequires=local-fs.target network.target\nConditionPathExists=/etc/collectd.conf\n\n[Service]\nType=notify\nNotifyAccess=main\nEnvironmentFile=-/etc/default/collectd\nExecStartPre=/usr/sbin/collectd -t\nExecStart=/usr/sbin/collectd\nRestart=always\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/collectl/Config.in",
    "content": "config BR2_PACKAGE_COLLECTL\n\tbool \"collectl\"\n\tdepends on BR2_USE_MMU # perl\n\tselect BR2_PACKAGE_PERL # runtime\n\thelp\n\t  Collectl is a performance monitoring and benchmark tool that\n\t  tries to do it all. You can choose to monitor any of a broad\n\t  set of subsystems which currently include buddyinfo, cpu,\n\t  disk, inodes, infiniband, lustre, memory, network, nfs,\n\t  processes, quadrics, slabs, sockets and tcp.\n\n\t  http://collectl.sourceforge.net/\n"
  },
  {
    "path": "package/collectl/collectl.hash",
    "content": "# Locally calculated\nsha256 2187264d974b36a653c8a4b028ac6eeab23e1885f8b2563a33f06358f39889f1  collectl-4.3.1.src.tar.gz\nsha256 b92800d37afa2aa03c02817ff3b68efc7236436fe76af06ad9b1fc4682f59bcb  ARTISTIC\nsha256 264fe27852db5624e6a9a9845b4e14e91ee5007305b33e5556dfade394d578a8  COPYING\nsha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  GPL\n"
  },
  {
    "path": "package/collectl/collectl.mk",
    "content": "################################################################################\n#\n# collectl\n#\n################################################################################\n\nCOLLECTL_VERSION = 4.3.1\nCOLLECTL_SOURCE = collectl-$(COLLECTL_VERSION).src.tar.gz\nCOLLECTL_SITE = http://downloads.sourceforge.net/collectl/collectl\nCOLLECTL_LICENSE = Artistic or GPL-2.0\nCOLLECTL_LICENSE_FILES = COPYING ARTISTIC GPL\n\ndefine COLLECTL_INSTALL_TARGET_CMDS\n\t(cd $(@D); \\\n\t\tDESTDIR=$(TARGET_DIR) ./INSTALL)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/comix-cursors/Config.in",
    "content": "config BR2_PACKAGE_COMIX_CURSORS\n\tbool \"comix-cursors\"\n\thelp\n\t  X11 mouse theme with a comics feeling.\n\n\t  http://kde-look.org/content/show.php/ComixCursors?content=32627\n"
  },
  {
    "path": "package/comix-cursors/comix-cursors.hash",
    "content": "# Locally calculated\nsha256\t9e68ea8ff230dcc793528aa5da9a38b9bf61c478cd6868b4e4f5da659746a019\tComixCursors-0.9.1.tar.bz2\n"
  },
  {
    "path": "package/comix-cursors/comix-cursors.mk",
    "content": "################################################################################\n#\n# comix-cursors\n#\n################################################################################\n\nCOMIX_CURSORS_VERSION = 0.9.1\nCOMIX_CURSORS_SITE = https://limitland.gitlab.io/comixcursors\nCOMIX_CURSORS_SOURCE = ComixCursors-$(COMIX_CURSORS_VERSION).tar.bz2\nCOMIX_CURSORS_LICENSE = GPL-3.0\nCOMIX_CURSORS_STRIP_COMPONENTS = 0\n\ndefine COMIX_CURSORS_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/share/cursors/xorg-x11\n\tcp -a $(@D)/* \\\n\t\t$(TARGET_DIR)/usr/share/cursors/xorg-x11\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/connman/Config.in",
    "content": "config BR2_PACKAGE_CONNMAN\n\tbool \"connman\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2\n\tdepends on BR2_USE_MMU # dbus, libglib2\n\tdepends on !BR2_STATIC_LIBS # needs dlopen()\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # missing res_ninit()\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  The Connection Manager (ConnMan) project provides a daemon\n\t  for managing internet connections within embedded devices\n\t  running the Linux operating system.\n\n\t  https://01.org/connman\n\nif BR2_PACKAGE_CONNMAN\n\nchoice\n\tprompt \"Firewall type\"\n\tdefault BR2_PACKAGE_CONNMAN_IPTABLES\n\thelp\n\t  Select which firewall type is used.\n\nconfig BR2_PACKAGE_CONNMAN_IPTABLES\n\tbool \"iptables\"\n\tselect BR2_PACKAGE_IPTABLES\n\thelp\n\t  Use iptables as firewall.\n\nconfig BR2_PACKAGE_CONNMAN_NFTABLES\n\tbool \"nftables\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\tselect BR2_PACKAGE_LIBMNL\n\tselect BR2_PACKAGE_NFTABLES\n\thelp\n\t  Use nftables as firewall.\nendchoice\n\nconfig BR2_PACKAGE_CONNMAN_ETHERNET\n\tbool \"enable Ethernet support\"\n\tdefault y\n\nconfig BR2_PACKAGE_CONNMAN_WIFI\n\tbool \"enable WiFi support\"\n\tselect BR2_PACKAGE_WPA_SUPPLICANT # runtime\n\tselect BR2_PACKAGE_WPA_SUPPLICANT_DBUS # runtime\n\thelp\n\t  Enable WiFi support (scan and static/dhcp interface\n\t  setup). ConnMan detects the start of wpa_supplicant\n\t  automatically.\n\nconfig BR2_PACKAGE_CONNMAN_WIREGUARD\n\tbool \"enable wireguard support\"\n\tselect BR2_PACKAGE_LIBMNL\n\nconfig BR2_PACKAGE_CONNMAN_WISPR\n\tbool \"enable WISPr support\"\n\tdepends on !BR2_STATIC_LIBS # gnutls\n\tselect BR2_PACKAGE_GNUTLS\n\thelp\n\t  Enable support for Wireless Internet Service Provider\n\t  roaming (WISPr). A RADIUS server is used to authenticate the\n\t  subscriber's credentials.\n\ncomment \"connman WISPr needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_CONNMAN_BLUETOOTH\n\tbool \"enable Bluetooth support\"\n\thelp\n\t  Enable Bluetooth support. The start of bluetoothd is\n\t  automatically detected and only a runtime dependency.\n\nconfig BR2_PACKAGE_CONNMAN_LOOPBACK\n\tbool \"enable loopback support\"\n\nconfig BR2_PACKAGE_CONNMAN_NEARD\n\tbool \"enable neard support\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # neard\n\tselect BR2_PACKAGE_NEARD\n\nconfig BR2_PACKAGE_CONNMAN_OFONO\n\tbool \"enable ofono support\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # ofono\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 # ofono\n\tselect BR2_PACKAGE_OFONO\n\ncomment \"ofono support needs a toolchain w/ headers >= 4.12\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n\nconfig BR2_PACKAGE_CONNMAN_DEBUG\n\tbool \"enable compiling with debugging information\"\n\nconfig BR2_PACKAGE_CONNMAN_CLIENT\n\tbool \"enable command line client\"\n\tselect BR2_PACKAGE_READLINE\n\nendif # BR2_PACKAGE_CONNMAN\n\ncomment \"connman needs a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \\\n\t\t|| BR2_TOOLCHAIN_USES_MUSL\n"
  },
  {
    "path": "package/connman/S45connman",
    "content": "#!/bin/sh\n\nDAEMON=\"connmand\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nCONNMAND_ARGS=\"-n\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -m -b -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \\\n\t\t-- $CONNMAND_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/connman/connman.hash",
    "content": "# From https://www.kernel.org/pub/linux/network/connman/sha256sums.asc\nsha256  1a57ae7ce234aa3a1744aac3be5c2121d98dce999440ef8ab9cc4edfd5edcb12  connman-1.40.tar.xz\n# Locally computed\nsha256  b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259  COPYING\n"
  },
  {
    "path": "package/connman/connman.mk",
    "content": "################################################################################\n#\n# connman\n#\n################################################################################\n\nCONNMAN_VERSION = 1.40\nCONNMAN_SOURCE = connman-$(CONNMAN_VERSION).tar.xz\nCONNMAN_SITE = $(BR2_KERNEL_MIRROR)/linux/network/connman\nCONNMAN_DEPENDENCIES = libglib2 dbus iptables\nCONNMAN_INSTALL_STAGING = YES\nCONNMAN_LICENSE = GPL-2.0\nCONNMAN_LICENSE_FILES = COPYING\nCONNMAN_CPE_ID_VENDOR = intel\n\nCONNMAN_CONF_OPTS = --with-dbusconfdir=/etc\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nCONNMAN_CONF_OPTS += --with-systemdunitdir=/usr/lib/systemd/system\nendif\n\nifeq ($(BR2_PACKAGE_CONNMAN_BLUETOOTH),y)\nCONNMAN_CONF_OPTS += --enable-bluetooth\nelse\nCONNMAN_CONF_OPTS += --disable-bluetooth\nendif\n\nifeq ($(BR2_PACKAGE_CONNMAN_DEBUG),y)\nCONNMAN_CONF_OPTS += --enable-debug\nelse\nCONNMAN_CONF_OPTS += --disable-debug\nendif\n\nifeq ($(BR2_PACKAGE_CONNMAN_ETHERNET),y)\nCONNMAN_CONF_OPTS += --enable-ethernet\nelse\nCONNMAN_CONF_OPTS += --disable-ethernet\nendif\n\nifeq ($(BR2_PACKAGE_CONNMAN_IPTABLES),y)\nCONNMAN_CONF_OPTS += --with-firewall=iptables\nCONNMAN_DEPENDENCIES += iptables\nelse ifeq ($(BR2_PACKAGE_CONNMAN_NFTABLES),y)\nCONNMAN_CONF_OPTS += --with-firewall=nftables\nCONNMAN_DEPENDENCIES += libmnl nftables\nendif\n\nifeq ($(BR2_PACKAGE_CONNMAN_LOOPBACK),y)\nCONNMAN_CONF_OPTS += --enable-loopback\nelse\nCONNMAN_CONF_OPTS += --disable-loopback\nendif\n\nifeq ($(BR2_PACKAGE_CONNMAN_NEARD),y)\nCONNMAN_CONF_OPTS += --enable-neard\nCONNMAN_DEPENDENCIES += neard\nelse\nCONNMAN_CONF_OPTS += --disable-neard\nendif\n\nifeq ($(BR2_PACKAGE_CONNMAN_OFONO),y)\nCONNMAN_CONF_OPTS += --enable-ofono\nCONNMAN_DEPENDENCIES += ofono\nelse\nCONNMAN_CONF_OPTS += --disable-ofono\nendif\n\nifeq ($(BR2_PACKAGE_CONNMAN_WIFI),y)\nCONNMAN_CONF_OPTS += --enable-wifi\nelse\nCONNMAN_CONF_OPTS += --disable-wifi\nendif\n\nifeq ($(BR2_PACKAGE_CONNMAN_WIREGUARD),y)\nCONNMAN_CONF_OPTS += --enable-wireguard\nCONNMAN_DEPENDENCIES += libmnl\nelse\nCONNMAN_CONF_OPTS += --disable-wireguard\nendif\n\nifeq ($(BR2_PACKAGE_CONNMAN_WISPR),y)\nCONNMAN_CONF_OPTS += --enable-wispr\nCONNMAN_DEPENDENCIES += gnutls\nelse\nCONNMAN_CONF_OPTS += --disable-wispr\nendif\n\ndefine CONNMAN_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/connman/S45connman $(TARGET_DIR)/etc/init.d/S45connman\nendef\n\nifeq ($(BR2_PACKAGE_CONNMAN_CLIENT),y)\nCONNMAN_LICENSE += , GPL-2.0+ (client)\nCONNMAN_CONF_OPTS += --enable-client\nCONNMAN_DEPENDENCIES += readline\n\ndefine CONNMAN_INSTALL_CM\n\t$(INSTALL) -m 0755 -D $(@D)/client/connmanctl $(TARGET_DIR)/usr/bin/connmanctl\nendef\n\nCONNMAN_POST_INSTALL_TARGET_HOOKS += CONNMAN_INSTALL_CM\nelse\nCONNMAN_CONF_OPTS += --disable-client\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/connman-gtk/Config.in",
    "content": "comment \"connman-gtk needs libgtk3 and a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS || !BR2_PACKAGE_LIBGTK3 || \\\n\t\tBR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_CONNMAN_GTK\n\tbool \"connman-gtk\"\n\tdepends on BR2_USE_WCHAR # libglib2, connman\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, connman\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on !BR2_STATIC_LIBS # connman\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # connman\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # connman\n\tdepends on BR2_PACKAGE_LIBGTK3\n\tselect BR2_PACKAGE_CONNMAN\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  GTK GUI for ConnMan.\n\n\t  https://github.com/jgke/connman-gtk\n"
  },
  {
    "path": "package/connman-gtk/connman-gtk.hash",
    "content": "# Locally calculated\nsha256\t49bdc4769a7c508b0130e4705eef21aec9df1ea4f5c29fee48a0cae8db828fca\tconnman-gtk-1.1.1.tar.bz2\nsha256\t8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\tCOPYING\n"
  },
  {
    "path": "package/connman-gtk/connman-gtk.mk",
    "content": "################################################################################\n#\n# connman-gtk\n#\n################################################################################\n\nCONNMAN_GTK_VERSION = 1.1.1\nCONNMAN_GTK_SITE = https://github.com/jgke/connman-gtk/releases/download/v$(CONNMAN_GTK_VERSION)\nCONNMAN_GTK_SOURCE = connman-gtk-$(CONNMAN_GTK_VERSION).tar.bz2\nCONNMAN_GTK_INSTALL_STAGING = YES\nCONNMAN_GTK_DEPENDENCIES = host-intltool connman libglib2 libgtk3 \\\n\t$(TARGET_NLS_DEPENDENCIES)\nCONNMAN_GTK_LICENSE = GPL-2.0+\nCONNMAN_GTK_LICENSE_FILES = COPYING\nCONNMAN_GTK_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/conntrack-tools/Config.in",
    "content": "config BR2_PACKAGE_CONNTRACK_TOOLS\n\tbool \"conntrack-tools\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\tselect BR2_PACKAGE_LIBNETFILTER_CONNTRACK\n\tselect BR2_PACKAGE_LIBNETFILTER_CTHELPER\n\tselect BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT\n\tselect BR2_PACKAGE_LIBNETFILTER_QUEUE\n\tselect BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  The conntrack-tools are a set of tools targeted at\n\t  system administrators.\n\t  They are conntrack, the userspace command line interface,\n\t  and conntrackd, the userspace daemon.\n\n\t  http://www.netfilter.org/projects/conntrack-tools/\n\ncomment \"conntrack-tools needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/conntrack-tools/conntrack-tools.hash",
    "content": "# From https://netfilter.org/projects/conntrack-tools/downloads.html\nsha256 590859cc848245dbfd9c6487761dd303b3a1771e007f4f42213063ca56205d5f  conntrack-tools-1.4.6.tar.bz2\n# Locally calculated\nsha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/conntrack-tools/conntrack-tools.mk",
    "content": "################################################################################\n#\n# conntrack-tools\n#\n################################################################################\n\nCONNTRACK_TOOLS_VERSION = 1.4.6\nCONNTRACK_TOOLS_SOURCE = conntrack-tools-$(CONNTRACK_TOOLS_VERSION).tar.bz2\nCONNTRACK_TOOLS_SITE = http://www.netfilter.org/projects/conntrack-tools/files\nCONNTRACK_TOOLS_DEPENDENCIES = host-pkgconf \\\n\tlibnetfilter_conntrack libnetfilter_cthelper libnetfilter_cttimeout \\\n\tlibnetfilter_queue host-bison host-flex\nCONNTRACK_TOOLS_LICENSE = GPL-2.0+\nCONNTRACK_TOOLS_LICENSE_FILES = COPYING\nCONNTRACK_TOOLS_CPE_ID_VENDOR = netfilter\n\nCONNTRACK_TOOLS_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nCONNTRACK_TOOLS_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`\nCONNTRACK_TOOLS_DEPENDENCIES += libtirpc host-pkgconf\nendif\n\nCONNTRACK_TOOLS_CONF_ENV = CFLAGS=\"$(CONNTRACK_TOOLS_CFLAGS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/containerd/Config.in",
    "content": "config BR2_PACKAGE_CONTAINERD\n\tbool \"containerd\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_TOOLCHAIN_USES_UCLIBC # runc\n\tdepends on BR2_USE_MMU # util-linux\n\tselect BR2_PACKAGE_RUNC if !BR2_PACKAGE_CRUN # runtime dependency\n\tselect BR2_PACKAGE_UTIL_LINUX # runtime dependency\n\tselect BR2_PACKAGE_UTIL_LINUX_BINARIES\n\tselect BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT\n\tselect BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT\n\tselect BR2_PACKAGE_UTIL_LINUX_MOUNT\n\thelp\n\t  containerd is a daemon to control runC.\n\n\t  https://containerd.io/\n\nif BR2_PACKAGE_CONTAINERD\n\nconfig BR2_PACKAGE_CONTAINERD_DRIVER_BTRFS\n\tbool \"btrfs snapshot driver\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n\thelp\n\t  Build the btrfs snapshot driver for containerd.\n\ncomment \"brtfs snapshot driver needs headers >= 4.12\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n\nconfig BR2_PACKAGE_CONTAINERD_DRIVER_DEVMAPPER\n\tbool \"devmapper snapshot driver\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # lvm2\n\tdepends on BR2_USE_MMU # lvm2\n\tdepends on !BR2_STATIC_LIBS # lvm2\n\tselect BR2_PACKAGE_LVM2\n\thelp\n\t  Build the devmapper snapshot driver for containerd.\n\ncomment \"devmapper snapshot driver needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_CONTAINERD_DRIVER_ZFS\n\tbool \"zfs snapshot driver\"\n\tdepends on BR2_LINUX_KERNEL # zfs\n\tdepends on BR2_PACKAGE_HAS_UDEV # zfs\n\tdepends on BR2_USE_MMU  # zfs\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS  # zfs\n\tselect BR2_PACKAGE_ZFS\n\thelp\n\t  Build the zfs snapshot driver for containerd.\n\ncomment \"zfs snapshot driver needs a Linux kernel, udev, toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_LINUX_KERNEL || !BR2_PACKAGE_HAS_UDEV || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_CONTAINERD_CRI\n\tbool \"Kubernetes CRI support\"\n\thelp\n\t  Build containerd with Kubernetes CRI support.\n\nendif\n\ncomment \"containerd needs a glibc or musl toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC\n"
  },
  {
    "path": "package/containerd/containerd.hash",
    "content": "# Computed locally\nsha256  ae55b25fb04b45dfbbde8280b034783a48ae7c40350d17fd272be5cbf0284cf1  containerd-1.7.14.tar.gz\nsha256  4bbe3b885e8cd1907ab4cf9a41e862e74e24b5422297a4f2fe524e6a30ada2b4  LICENSE\n"
  },
  {
    "path": "package/containerd/containerd.mk",
    "content": "################################################################################\n#\n# containerd\n#\n################################################################################\n\nCONTAINERD_VERSION = 1.7.14\nCONTAINERD_SITE = $(call github,containerd,containerd,v$(CONTAINERD_VERSION))\nCONTAINERD_LICENSE = Apache-2.0\nCONTAINERD_LICENSE_FILES = LICENSE\nCONTAINERD_CPE_ID_VENDOR = linuxfoundation\n\nCONTAINERD_GOMOD = github.com/containerd/containerd\n\nCONTAINERD_LDFLAGS = \\\n\t-X $(CONTAINERD_GOMOD)/version.Version=$(CONTAINERD_VERSION)\n\nCONTAINERD_BUILD_TARGETS = \\\n\tcmd/containerd \\\n\tcmd/containerd-shim \\\n\tcmd/containerd-shim-runc-v1 \\\n\tcmd/containerd-shim-runc-v2 \\\n\tcmd/ctr\n\nCONTAINERD_INSTALL_BINS = $(notdir $(CONTAINERD_BUILD_TARGETS))\nCONTAINERD_TAGS = no_aufs\n\nifeq ($(BR2_PACKAGE_LIBAPPARMOR),y)\nCONTAINERD_DEPENDENCIES += libapparmor\nCONTAINERD_TAGS += apparmor\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECCOMP),y)\nCONTAINERD_DEPENDENCIES += libseccomp host-pkgconf\nCONTAINERD_TAGS += seccomp\nendif\n\nifneq ($(BR2_PACKAGE_CONTAINERD_DRIVER_BTRFS),y)\nCONTAINERD_TAGS += no_btrfs\nendif\n\nifneq ($(BR2_PACKAGE_CONTAINERD_DRIVER_DEVMAPPER),y)\nCONTAINERD_TAGS += no_devmapper\nendif\n\nifneq ($(BR2_PACKAGE_CONTAINERD_DRIVER_ZFS),y)\nCONTAINERD_TAGS += no_zfs\nendif\n\nifneq ($(BR2_PACKAGE_CONTAINERD_CRI),y)\nCONTAINERD_TAGS += no_cri\nendif\n\ndefine CONTAINERD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 $(@D)/containerd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/containerd.service\n\t$(SED) 's,/usr/local/bin,/usr/bin,g' $(TARGET_DIR)/usr/lib/systemd/system/containerd.service\nendef\n\n$(eval $(golang-package))\n"
  },
  {
    "path": "package/copas/0001-Do-not-load-coxpcall-for-LuaJIT.patch",
    "content": "From 8d1b5a9b973a9891d676dabf31807eb825d7f262 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Fran=C3=A7ois=20Perrad?= <francois.perrad@gadz.org>\nDate: Wed, 6 Sep 2017 00:00:56 +0200\nSubject: [PATCH] Do not load coxpcall for LuaJIT\n\n* coxpcall is only required with PUC Lua 5.1, but not with LuaJIT\n\nuse the same logic as in copas.lua.\nthis fixes issue #63.\n\nFetch from: https://github.com/keplerproject/copas/commit/8d1b5a9b973a9891d676dabf31807eb825d7f262\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n---\n doc/us/index.html   | 5 +++++\n src/copas/limit.lua | 2 +-\n 2 files changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/copas-2_0_2/doc/us/index.html b/doc/us/index.html\nindex 1d008c2..c4d85ef 100644\n--- a/copas-2_0_2/doc/us/index.html\n+++ b/copas-2_0_2/doc/us/index.html\n@@ -114,6 +114,11 @@ LuaSocket, <a href=\"http://keplerproject.github.io/coxpcall/\">Coxpcall</a> (only\n <h2><a name=\"history\"></a>History</h2>\n \n <dl class=\"history\">\n+    <dt><strong>Copas</strong> [unreleased]</dt>\n+\t<dd><ul>\n+                <li>Fixed: coxpcall dependency in limit.lua #63 (Francois Perrad)</li>\n+\t</ul></dd>\n+\n     <dt><strong>Copas 2.0.2</strong> [2017]</dt>\n \t<dd><ul>\n \t\t<li>Added: <code>copas.running</code> flag</li>\ndiff --git a/copas-2_0_2/src/copas/limit.lua b/src/copas/limit.lua\nindex ea178be..f0dfe17 100644\n--- a/copas-2_0_2/src/copas/limit.lua\n+++ b/copas-2_0_2/src/copas/limit.lua\n@@ -10,7 +10,7 @@ local pack = table.pack or function(...) return {n=select('#',...),...} end\n local unpack = function(t) return (table.unpack or unpack)(t, 1, t.n or #t) end\n \n local pcall = pcall\n-if _VERSION==\"Lua 5.1\" then     -- obsolete: only for Lua 5.1 compatibility\n+if _VERSION==\"Lua 5.1\" and not jit then     -- obsolete: only for Lua 5.1 compatibility\n   pcall = require(\"coxpcall\").pcall\n end\n \n-- \n2.17.1\n\n"
  },
  {
    "path": "package/copas/Config.in",
    "content": "config BR2_PACKAGE_COPAS\n\tbool \"copas\"\n\tselect BR2_PACKAGE_COXPCALL if BR2_PACKAGE_LUA_5_1 # runtime\n\tselect BR2_PACKAGE_LUASOCKET # runtime\n\thelp\n\t  Copas is a dispatcher based on coroutines that can be used\n\t  for asynchronous networking. For example TCP or UDP based\n\t  servers. But it also features timers and client support for\n\t  http(s), ftp and smtp requests.\n\n\t  http://keplerproject.github.io/copas/\n"
  },
  {
    "path": "package/copas/copas.hash",
    "content": "# computed by luarocks/buildroot\nsha256 efeded4f4633bc71551175b239199304640ef918ae8ea9dc9c5047359ae07107  copas-2.0.2-1.src.rock\nsha256 3f59cccf38e9397f6fb34dcff983a24d336df982edb5b0cde549d0c32c28c9c0  copas-2_0_2/LICENSE\n"
  },
  {
    "path": "package/copas/copas.mk",
    "content": "################################################################################\n#\n# copas\n#\n################################################################################\n\nCOPAS_VERSION = 2.0.2-1\nCOPAS_SUBDIR = copas-2_0_2\nCOPAS_LICENSE = MIT\nCOPAS_LICENSE_FILES = $(COPAS_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/coremark/Config.in",
    "content": "config BR2_PACKAGE_COREMARK\n\tbool \"coremark\"\n\thelp\n\t  CoreMark is a benchmark that measures the performance of\n\t  microcontrollers (MCUs) and central processing units (CPUs)\n\t  used in embedded systems\n\n\t  https://www.eembc.org/coremark/\n"
  },
  {
    "path": "package/coremark/coremark.hash",
    "content": "# Locally computed\nsha256  99c5a6d63af85a281b4e4d6ccb522c446653c435dfec9455ad73ef9e71f28bde  coremark-1.01.tar.gz\nsha256  d72094a3cb629dc7712ae09b7b777416903c6670930928b5530f2ddfb2296888  LICENSE.md\n"
  },
  {
    "path": "package/coremark/coremark.mk",
    "content": "################################################################################\n#\n# CoreMark\n#\n################################################################################\n\nCOREMARK_VERSION = 1.01\nCOREMARK_SITE = $(call github,eembc,coremark,v$(COREMARK_VERSION))\nCOREMARK_LICENSE = Apache-2.0\nCOREMARK_LICENSE_FILES = LICENSE.md\n\ndefine COREMARK_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" -C $(@D) \\\n\t\tPORT_DIR=linux$(if $(BR2_ARCH_IS_64),64) EXE= link\nendef\n\ndefine COREMARK_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D $(@D)/coremark $(TARGET_DIR)/usr/bin/coremark\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/coremark-pro/Config.in",
    "content": "config BR2_PACKAGE_COREMARK_PRO\n\tbool \"coremark-pro\"\n\tdepends on BR2_USE_MMU # perl uses fork()\n\tselect BR2_PACKAGE_PERL\n\thelp\n\t  CoreMark-PRO is a comprehensive, advanced processor benchmark.\n\n\t  https://www.eembc.org/coremark-pro/\n"
  },
  {
    "path": "package/coremark-pro/coremark-pro.hash",
    "content": "# Locally computed\nsha256  440223554134832efec4ad220795611769ded3869fbc3ce3c59b05b7ddeb9f6d  coremark-pro-1.1.2743.tar.gz\nsha256  0d7775bd793ea71fef3594c18164a08ed2f5f66c898958d0644f7a236a536f2b  LICENSE.md\n"
  },
  {
    "path": "package/coremark-pro/coremark-pro.mk",
    "content": "################################################################################\n#\n# CoreMark-PRO\n#\n################################################################################\n\nCOREMARK_PRO_VERSION = 1.1.2743\nCOREMARK_PRO_SITE = $(call github,eembc,coremark-pro,v$(COREMARK_PRO_VERSION))\nCOREMARK_PRO_LICENSE = Apache-2.0\nCOREMARK_PRO_LICENSE_FILES = LICENSE.md\nCOREMARK_PRO_DEPENDENCIES = perl\n\nCOREMARK_PRO_LDFLAGS = $(TARGET_LDFLAGS) -lm\n\nifeq ($(BR2_ENDIAN),\"BIG\")\nCOREMARK_PRO_DEFINES += \\\n\tEE_BIG_ENDIAN=1 \\\n\tEE_LITTLE_ENDIAN=0\nelse\nCOREMARK_PRO_DEFINES += \\\n\tEE_BIG_ENDIAN=0 \\\n\tEE_LITTLE_ENDIAN=1\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nCOREMARK_PRO_DEFINES += \\\n\tUSE_NATIVE_PTHREAD=1 \\\n\tUSE_SINGLE_CONTEXT=0\nCOREMARK_PRO_LDFLAGS += -lpthread\nelse\nCOREMARK_PRO_DEFINES += \\\n\tUSE_NATIVE_PTHREAD=0 \\\n\tUSE_SINGLE_CONTEXT=1\nendif\n\nCOREMARK_PRO_MAKE_OPTS += \\\n\tLINKER_LAST=\"$(COREMARK_PRO_LDFLAGS)\" \\\n\tPLATFORM_DEFINES=\"$(COREMARK_PRO_DEFINES)\" \\\n\tTARGET=linux$(if $(BR2_ARCH_IS_64),64) \\\n\tEXE=\n\ndefine COREMARK_PRO_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) CC=\"$(TARGET_CC)\" LD=\"$(TARGET_CC)\" -C $(@D) \\\n\t\t$(COREMARK_PRO_MAKE_OPTS) build\nendef\n\nCOREMARK_PRO_MARKS = cjpeg-rose7-preset core linear_alg-mid-100x100-sp loops-all-mid-10k-sp nnet_test parser-125k radix2-big-64k sha-test zip-test\nCOREMARK_PRO_SCRIPTS = results_parser.pl cert_median.pl cert_mark.pl headings.txt\n\ndefine COREMARK_PRO_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/share/coremark-pro/logs\n\t$(foreach m,$(COREMARK_PRO_MARKS),\\\n\t\t$(INSTALL) -D $(@D)/builds/linux$(if $(BR2_ARCH_IS_64),64)/gcc$(if $(BR2_ARCH_IS_64),64)/bin/$(m) $(TARGET_DIR)/usr/bin/$(m)$(sep) \\\n\t\tsize $(TARGET_DIR)/usr/bin/$(m) > $(TARGET_DIR)/usr/share/coremark-pro/logs/$(m).size.log$(sep))\n\t$(INSTALL) -D $(@D)/builds/linux$(if $(BR2_ARCH_IS_64),64)/gcc$(if $(BR2_ARCH_IS_64),64)/data/libbmp/Rose256.bmp $(TARGET_DIR)/usr/share/coremark-pro/Rose256.bmp\n\t$(foreach s,$(COREMARK_PRO_SCRIPTS),\\\n\t\t$(INSTALL) -D $(@D)/util/perl/$(s) $(TARGET_DIR)/usr/share/coremark-pro/util/perl/$(s)$(sep))\n\t$(Q)sed \"s/@COREMARK_PRO_MARKS@/$(COREMARK_PRO_MARKS)/\" \\\n\t\tpackage/coremark-pro/coremark-pro.sh.in >$(TARGET_DIR)/usr/bin/coremark-pro.sh\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/coremark-pro/coremark-pro.sh.in",
    "content": "#!/bin/sh\n# SPDX-License-Identifier: Apache-2.0\n\nworkloads=\"@COREMARK_PRO_MARKS@\"\n\nrm -rf /tmp/coremark-pro\nmkdir -p /tmp/coremark-pro\ncp /usr/share/coremark-pro/Rose256.bmp /tmp/coremark-pro\ncp /usr/share/coremark-pro/logs/*.size.log /tmp/coremark-pro\n\ncd /tmp/coremark-pro\n\nfor contype in single best; do\n    cat /usr/share/coremark-pro/util/perl/headings.txt >>result.log\n    for wld in $workloads; do\n        [ \"$contype\" = \"single\" ] && XCMD=\"-c1 -w1\"\n        [ \"$contype\" = \"best\" ] && XCMD=\"-c$(nproc) -w$(nproc)\"\n        echo \"#Results for verification run started at $(date +%x:%X) XCMD=$XCMD\" >$wld-$contype-result.log\n        echo \"Verification run for $wld\"\n        $wld $XCMD -v1 > $wld.run.log\n        LC_ALL=C perl /usr/share/coremark-pro/util/perl/results_parser.pl $wld-$contype-result.log $wld.run.log\n        echo \"#Results for performance runs started at $(date +%x:%X) XCMD=$XCMD\" >>$wld-$contype-result.log\n        echo \"Performance run for $wld\"\n        for i in 1 2 3; do\n            $wld $XCMD -v0 > $wld.run.log\n            LC_ALL=C perl /usr/share/coremark-pro/util/perl/results_parser.pl $wld-$contype-result.log $wld.run.log\n        done\n        echo \"#Median for final result $wld\" >>$wld-$contype-result.log\n        LC_ALL=C perl /usr/share/coremark-pro/util/perl/cert_median.pl $wld-$contype-result.log $contype >>$wld-$contype-result.log\n        cat $wld-$contype-result.log >>result.log\n    done\ndone\nLC_ALL=C perl /usr/share/coremark-pro/util/perl/cert_mark.pl -i result.log -s coremarkpro > result.mark\ncat result.mark\ncd - >/dev/null\n"
  },
  {
    "path": "package/coreutils/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch",
    "content": "From a0594387565e1e6b4a8a8ba04ad13b135cc1f0b5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 1 Apr 2021 07:49:46 +0200\nSubject: [PATCH] lib/getrandom.c: fix build with uclibc < 1.0.35\n\nFix the following build failure with uclibc < 1.0.35 which is raised\nsince the addition of getrandom module in\nhttps://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=682cc4e678aceff32dea2a84b6e5147bdf5a20a7:\n\nIn file included from ./sys/random.h:40,\n                 from getrandom.c:22:\n/home/fabrice/buildroot/output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name 'size_t'\n   27 | extern int getrandom(void *__buf, size_t count, unsigned int flags)\n      |                                   ^~~~~~\n/home/fabrice/buildroot/output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:8:1: note: 'size_t' is defined in header '<stddef.h>'; did you forget to '#include <stddef.h>'?\n    7 | #include <features.h>\n  +++ |+#include <stddef.h>\n    8 |\n\nThis patch is not upstreamable as it is only a workaround for\nuclibc < 1.0.35, upstream uclibc has been patched with\nhttps://github.com/wbx-github/uclibc-ng/commit/00972c02c2b6e0a95d5def4a71bdfb188e091782\n\nFixes:\n - http://autobuild.buildroot.org/results/c69f5c8b8e53ed3de753f0c6d2cdd99497504b49\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n lib/getrandom.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/lib/getrandom.c b/lib/getrandom.c\nindex 41212fb32..0ad3f9648 100644\n--- a/lib/getrandom.c\n+++ b/lib/getrandom.c\n@@ -19,6 +19,7 @@\n \n #include <config.h>\n \n+#include <stddef.h>\n #include <sys/random.h>\n \n #include <errno.h>\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/coreutils/Config.in",
    "content": "config BR2_PACKAGE_COREUTILS\n\tbool \"coreutils\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  All of the basic file/text/shell utilities. These are the\n\t  core utilities which are expected to exist on every system.\n\t  BusyBox implements many of the most common.\n\n\t  Things like:\n\t  - chmod, cp, dd, dir, ls, etc...\n\t  - sort, tr, head, tail, wc, etc...\n\t  - whoami, who, etc...\n\n\t  http://www.gnu.org/software/coreutils/\n\nif BR2_PACKAGE_COREUTILS\n\nconfig BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES\n\tbool \"Individual binaries\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  By default (i.e. with this option disabled), coreutils is\n\t  installed as a single binary (Busybox style) called\n\t  /usr/bin/coreutils, and all core utilities are symbolic\n\t  links to this binary.\n\n\t  With this option enabled, each utility is a separate binary.\n\ncomment \"coreutils individual binaries need a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nendif\n\ncomment \"coreutils needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/coreutils/coreutils.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256 ce30acdf4a41bc5bb30dd955e9eaa75fa216b4e3deb08889ed32433c7b3b97ce  coreutils-9.0.tar.xz\n# Locally computed\nsha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  COPYING\n"
  },
  {
    "path": "package/coreutils/coreutils.mk",
    "content": "################################################################################\n#\n# coreutils\n#\n################################################################################\n\nCOREUTILS_VERSION = 9.0\nCOREUTILS_SITE = $(BR2_GNU_MIRROR)/coreutils\nCOREUTILS_SOURCE = coreutils-$(COREUTILS_VERSION).tar.xz\nCOREUTILS_LICENSE = GPL-3.0+\nCOREUTILS_LICENSE_FILES = COPYING\nCOREUTILS_CPE_ID_VENDOR = gnu\n\nCOREUTILS_CONF_OPTS = --disable-rpath \\\n\t$(if $(BR2_TOOLCHAIN_USES_MUSL),--with-included-regex)\n\nifeq ($(BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES),y)\nCOREUTILS_CONF_OPTS += --disable-single-binary\nelse\nCOREUTILS_CONF_OPTS += --enable-single-binary=symlinks\nendif\n\nCOREUTILS_CONF_ENV = ac_cv_c_restrict=no \\\n\tac_cv_func_chown_works=yes \\\n\tac_cv_func_euidaccess=no \\\n\tac_cv_func_fstatat=yes \\\n\tac_cv_func_getdelim=yes \\\n\tac_cv_func_getgroups=yes \\\n\tac_cv_func_getgroups_works=yes \\\n\tac_cv_func_getloadavg=no \\\n\tac_cv_func_lstat_dereferences_slashed_symlink=yes \\\n\tac_cv_func_lstat_empty_string_bug=no \\\n\tac_cv_func_strerror_r_char_p=no \\\n\tac_cv_func_strnlen_working=yes \\\n\tac_cv_func_strtod=yes \\\n\tac_cv_func_working_mktime=yes \\\n\tac_cv_have_decl_strerror_r=yes \\\n\tac_cv_have_decl_strnlen=yes \\\n\tac_cv_lib_getloadavg_getloadavg=no \\\n\tac_cv_lib_util_getloadavg=no \\\n\tac_fsusage_space=yes \\\n\tac_use_included_regex=no \\\n\tam_cv_func_working_getline=yes \\\n\tfu_cv_sys_stat_statfs2_bsize=yes \\\n\tgl_cv_func_getcwd_null=yes \\\n\tgl_cv_func_getcwd_path_max=yes \\\n\tgl_cv_func_gettimeofday_clobber=no \\\n\tgl_cv_func_fstatat_zero_flag=no \\\n\tgl_cv_func_link_follows_symlink=no \\\n\tgl_cv_func_re_compile_pattern_working=yes \\\n\tgl_cv_func_svid_putenv=yes \\\n\tgl_cv_func_tzset_clobber=no \\\n\tgl_cv_func_working_mkstemp=yes \\\n\tgl_cv_func_working_utimes=yes \\\n\tgl_getline_needs_run_time_check=no \\\n\tgl_cv_have_proc_uptime=yes \\\n\tutils_cv_localtime_cache=no \\\n\tPERL=missing \\\n\tMAKEINFO=true \\\n\tINSTALL_PROGRAM=$(INSTALL)\n\nCOREUTILS_BIN_PROGS = base64 cat chgrp chmod chown cp date dd df dir echo false \\\n\tkill link ln ls mkdir mknod mktemp mv nice printenv pwd rm rmdir \\\n\tvdir sleep stty sync touch true uname join\n\nifeq ($(BR2_PACKAGE_ACL),y)\nCOREUTILS_DEPENDENCIES += acl\nelse\nCOREUTILS_CONF_OPTS += --disable-acl\nendif\n\nifeq ($(BR2_PACKAGE_ATTR),y)\nCOREUTILS_DEPENDENCIES += attr\nelse\nCOREUTILS_CONF_OPTS += --disable-xattr\nendif\n\nCOREUTILS_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES)\n\n# It otherwise fails to link properly, not mandatory though\nifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y)\nCOREUTILS_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr\nendif\n\nifeq ($(BR2_PACKAGE_GMP),y)\nCOREUTILS_DEPENDENCIES += gmp\nelse\nCOREUTILS_CONF_OPTS += --without-gmp\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nCOREUTILS_DEPENDENCIES += libcap\nelse\nCOREUTILS_CONF_OPTS += --disable-libcap\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nCOREUTILS_CONF_OPTS += --with-openssl=yes\nCOREUTILS_DEPENDENCIES += openssl\nendif\n\nifeq ($(BR2_ROOTFS_MERGED_USR),)\n# We want to move a few binaries from /usr/bin to /bin. In the case of\n# coreutils being built as multi-call binary, we do so by re-creating\n# the corresponding symlinks. If coreutils is built with individual\n# binaries, we actually move the binaries.\nifeq ($(BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES),y)\ndefine COREUTILS_FIX_BIN_LOCATION\n\t$(foreach f,$(COREUTILS_BIN_PROGS), \\\n\t\tmv $(TARGET_DIR)/usr/bin/$(f) $(TARGET_DIR)/bin\n\t)\nendef\nelse\ndefine COREUTILS_FIX_BIN_LOCATION\n\t# some things go in /bin rather than /usr/bin\n\t$(foreach f,$(COREUTILS_BIN_PROGS), \\\n\t\trm -f $(TARGET_DIR)/usr/bin/$(f) && \\\n\t\tln -sf ../usr/bin/coreutils $(TARGET_DIR)/bin/$(f)\n\t)\nendef\nendif\nCOREUTILS_POST_INSTALL_TARGET_HOOKS += COREUTILS_FIX_BIN_LOCATION\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nCOREUTILS_CONF_OPTS += --enable-no-install-program=stdbuf\nendif\n\n# link for archaic shells\ndefine COREUTILS_CREATE_TEST_SYMLINK\n\tln -fs test $(TARGET_DIR)/usr/bin/[\nendef\nCOREUTILS_POST_INSTALL_TARGET_HOOKS += COREUTILS_CREATE_TEST_SYMLINK\n\n# gnu thinks chroot is in bin, debian thinks it's in sbin\nifeq ($(BR2_PACKAGE_COREUTILS_INDIVIDUAL_BINARIES),y)\ndefine COREUTILS_FIX_CHROOT_LOCATION\n\tmv $(TARGET_DIR)/usr/bin/chroot $(TARGET_DIR)/usr/sbin\nendef\nelse\ndefine COREUTILS_FIX_CHROOT_LOCATION\n\trm -f $(TARGET_DIR)/usr/bin/chroot\n\tln -sf ../bin/coreutils $(TARGET_DIR)/usr/sbin/chroot\nendef\nendif\nCOREUTILS_POST_INSTALL_TARGET_HOOKS += COREUTILS_FIX_CHROOT_LOCATION\n\n# Explicitly install ln and realpath, which we *are* insterested in.\n# A lot of other programs still get installed, however, but disabling\n# them does not gain much at build time, and is a loooong list that is\n# difficult to maintain... Just avoid overwriting fakedate when creating\n# a reproducible build\nHOST_COREUTILS_CONF_OPTS = \\\n\t--disable-acl \\\n\t--disable-libcap \\\n\t--disable-rpath \\\n\t--disable-single-binary \\\n\t--disable-xattr \\\n\t--without-gmp \\\n\t--enable-install-program=ln,realpath \\\n\t--enable-no-install-program=date\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/corkscrew/Config.in",
    "content": "config BR2_PACKAGE_CORKSCREW\n\tbool \"corkscrew\"\n\thelp\n\t  Corkscrew is a tool for tunneling SSH through HTTP proxies,\n\t  but... you might find another use for it.\n\n\t  https://github.com/bryanpkc/corkscrew\n"
  },
  {
    "path": "package/corkscrew/corkscrew.hash",
    "content": "# sha256 locally computed\nsha256  09d70daaa3145070a1e463dbab6ae1cbc62449b1e09c94e158f6017e7c79c9f6  corkscrew-2.0.tar.gz\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  COPYING\n"
  },
  {
    "path": "package/corkscrew/corkscrew.mk",
    "content": "################################################################################\n#\n# corkscrew\n#\n################################################################################\n\nCORKSCREW_VERSION = 2.0\nCORKSCREW_SITE = $(call github,bryanpkc,corkscrew,v$(CORKSCREW_VERSION))\nCORKSCREW_LICENSE = GPL-2.0\nCORKSCREW_LICENSE_FILES = COPYING\nCORKSCREW_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/coxpcall/Config.in",
    "content": "config BR2_PACKAGE_COXPCALL\n\tbool \"coxpcall\"\n\thelp\n\t  Coxpcall encapsulates the protected calls with a coroutine\n\t  based loop, so errors can be handled without the usual\n\t  pcall/xpcall issues with coroutines for Lua 5.1.\n\n\t  http://keplerproject.github.io/coxpcall/\n"
  },
  {
    "path": "package/coxpcall/coxpcall.hash",
    "content": "# computed by luarocks/buildroot\nsha256 11feb07f08927c39b0b93e8c0bbaf15433f86155cba4820a31a09f4754ab3258  coxpcall-1.17.0-1.src.rock\nsha256 11f0f03dda1a28eca658d5e3361c15fd4d048371364aacc5f6870d77a66866c8  coxpcall/doc/license.html\n"
  },
  {
    "path": "package/coxpcall/coxpcall.mk",
    "content": "################################################################################\n#\n# coxpcall\n#\n################################################################################\n\nCOXPCALL_VERSION = 1.17.0-1\nCOXPCALL_SUBDIR = coxpcall\nCOXPCALL_LICENSE = MIT\nCOXPCALL_LICENSE_FILES = $(COXPCALL_SUBDIR)/doc/license.html\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/cpio/0001-Minor-fix.patch",
    "content": "From 641d3f489cf6238bb916368d4ba0d9325a235afb Mon Sep 17 00:00:00 2001\nFrom: Sergey Poznyakoff <gray@gnu.org>\nDate: Mon, 20 Jan 2020 07:45:39 +0200\nSubject: Minor fix * src/global.c: Remove superfluous declaration of\n program_name\n\n[Retrieved from:\nhttps://git.savannah.gnu.org/cgit/cpio.git/commit/?id=641d3f489cf6238bb916368d4ba0d9325a235afb]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/global.c | 3 ---\n 1 file changed, 3 deletions(-)\n\ndiff --git a/src/global.c b/src/global.c\nindex fb3abe9..acf92bc 100644\n--- a/src/global.c\n+++ b/src/global.c\n@@ -184,9 +184,6 @@ unsigned int warn_option = 0;\n /* Extract to standard output? */\n bool to_stdout_option = false;\n \n-/* The name this program was run with.  */\n-char *program_name;\n-\n /* A pointer to either lstat or stat, depending on whether\n    dereferencing of symlinks is done for input files.  */\n int (*xstat) ();\n-- \ncgit v1.2.1\n\n"
  },
  {
    "path": "package/cpio/0002-Rewrite-dynamic-string-support.patch",
    "content": "From dd96882877721703e19272fe25034560b794061b Mon Sep 17 00:00:00 2001\nFrom: Sergey Poznyakoff <gray@gnu.org>\nDate: Sat, 7 Aug 2021 12:52:21 +0300\nSubject: Rewrite dynamic string support.\n\n* src/dstring.c (ds_init): Take a single argument.\n(ds_free): New function.\n(ds_resize): Take a single argument.  Use x2nrealloc to expand\nthe storage.\n(ds_reset,ds_append,ds_concat,ds_endswith): New function.\n(ds_fgetstr): Rewrite.  In particular, this fixes integer overflow.\n* src/dstring.h (dynamic_string): Keep both the allocated length\n(ds_size) and index of the next free byte in the string (ds_idx).\n(ds_init,ds_resize): Change signature.\n(ds_len): New macro.\n(ds_free,ds_reset,ds_append,ds_concat,ds_endswith): New protos.\n* src/copyin.c: Use new ds_ functions.\n* src/copyout.c: Likewise.\n* src/copypass.c: Likewise.\n* src/util.c: Likewise.\n\n[Retrieved from:\nhttps://git.savannah.gnu.org/cgit/cpio.git/commit/?id=dd96882877721703e19272fe25034560b794061b]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/copyin.c   | 40 +++++++++++++-------------\n src/copyout.c  | 16 ++++-------\n src/copypass.c | 34 +++++++++++------------\n src/dstring.c  | 88 ++++++++++++++++++++++++++++++++++++++++++----------------\n src/dstring.h  | 31 ++++++++++-----------\n src/util.c     |  6 ++--\n 6 files changed, 123 insertions(+), 92 deletions(-)\n\ndiff --git a/src/copyin.c b/src/copyin.c\nindex a096048..4fb14af 100644\n--- a/src/copyin.c\n+++ b/src/copyin.c\n@@ -55,11 +55,12 @@ query_rename(struct cpio_file_stat* file_hdr, FILE *tty_in, FILE *tty_out,\n   char *str_res;\t\t/* Result for string function.  */\n   static dynamic_string new_name;\t/* New file name for rename option.  */\n   static int initialized_new_name = false;\n+\n   if (!initialized_new_name)\n-  {\n-    ds_init (&new_name, 128);\n-    initialized_new_name = true;\n-  }\n+    {\n+      ds_init (&new_name);\n+      initialized_new_name = true;\n+    }\n \n   if (rename_flag)\n     {\n@@ -780,37 +781,36 @@ long_format (struct cpio_file_stat *file_hdr, char const *link_name)\n    already in `save_patterns' (from the command line) are preserved.  */\n \n static void\n-read_pattern_file ()\n+read_pattern_file (void)\n {\n-  int max_new_patterns;\n-  char **new_save_patterns;\n-  int new_num_patterns;\n+  char **new_save_patterns = NULL;\n+  size_t max_new_patterns;\n+  size_t new_num_patterns;\n   int i;\n-  dynamic_string pattern_name;\n+  dynamic_string pattern_name = DYNAMIC_STRING_INITIALIZER;\n   FILE *pattern_fp;\n \n   if (num_patterns < 0)\n     num_patterns = 0;\n-  max_new_patterns = 1 + num_patterns;\n-  new_save_patterns = (char **) xmalloc (max_new_patterns * sizeof (char *));\n   new_num_patterns = num_patterns;\n-  ds_init (&pattern_name, 128);\n+  max_new_patterns = num_patterns;\n+  new_save_patterns = xcalloc (max_new_patterns, sizeof (new_save_patterns[0]));\n \n   pattern_fp = fopen (pattern_file_name, \"r\");\n   if (pattern_fp == NULL)\n     open_fatal (pattern_file_name);\n   while (ds_fgetstr (pattern_fp, &pattern_name, '\\n') != NULL)\n     {\n-      if (new_num_patterns >= max_new_patterns)\n-\t{\n-\t  max_new_patterns += 1;\n-\t  new_save_patterns = (char **)\n-\t    xrealloc ((char *) new_save_patterns,\n-\t\t      max_new_patterns * sizeof (char *));\n-\t}\n+      if (new_num_patterns == max_new_patterns)\n+\tnew_save_patterns = x2nrealloc (new_save_patterns,\n+\t\t\t\t\t&max_new_patterns,\n+\t\t\t\t\tsizeof (new_save_patterns[0]));\n       new_save_patterns[new_num_patterns] = xstrdup (pattern_name.ds_string);\n       ++new_num_patterns;\n     }\n+\n+  ds_free (&pattern_name);\n+  \n   if (ferror (pattern_fp) || fclose (pattern_fp) == EOF)\n     close_error (pattern_file_name);\n \n@@ -1210,7 +1210,7 @@ swab_array (char *ptr, int count)\n    in the file system.  */\n \n void\n-process_copy_in ()\n+process_copy_in (void)\n {\n   FILE *tty_in = NULL;\t\t/* Interactive file for rename option.  */\n   FILE *tty_out = NULL;\t\t/* Interactive file for rename option.  */\ndiff --git a/src/copyout.c b/src/copyout.c\nindex 5ca587f..ca6798c 100644\n--- a/src/copyout.c\n+++ b/src/copyout.c\n@@ -594,9 +594,10 @@ assign_string (char **pvar, char *value)\n    The format of the header depends on the compatibility (-c) flag.  */\n \n void\n-process_copy_out ()\n+process_copy_out (void)\n {\n-  dynamic_string input_name;\t/* Name of file read from stdin.  */\n+  dynamic_string input_name = DYNAMIC_STRING_INITIALIZER;\n+                                /* Name of file read from stdin.  */\n   struct stat file_stat;\t/* Stat record for file.  */\n   struct cpio_file_stat file_hdr = CPIO_FILE_STAT_INITIALIZER;\n                                 /* Output header information.  */\n@@ -605,7 +606,6 @@ process_copy_out ()\n   char *orig_file_name = NULL;\n \n   /* Initialize the copy out.  */\n-  ds_init (&input_name, 128);\n   file_hdr.c_magic = 070707;\n \n   /* Check whether the output file might be a tape.  */\n@@ -657,14 +657,9 @@ process_copy_out ()\n \t    {\n \t      if (file_hdr.c_mode & CP_IFDIR)\n \t\t{\n-\t\t  int len = strlen (input_name.ds_string);\n \t\t  /* Make sure the name ends with a slash */\n-\t\t  if (input_name.ds_string[len-1] != '/')\n-\t\t    {\n-\t\t      ds_resize (&input_name, len + 2);\n-\t\t      input_name.ds_string[len] = '/';\n-\t\t      input_name.ds_string[len+1] = 0;\n-\t\t    }\n+\t\t  if (!ds_endswith (&input_name, '/'))\n+\t\t    ds_append (&input_name, '/');\n \t\t}\n \t    }\n \t  \n@@ -875,6 +870,7 @@ process_copy_out ()\n \t\t\t (unsigned long) blocks), (unsigned long) blocks);\n     }\n   cpio_file_stat_free (&file_hdr);\n+  ds_free (&input_name);\n }\n \n \ndiff --git a/src/copypass.c b/src/copypass.c\nindex 5d5e939..23ee687 100644\n--- a/src/copypass.c\n+++ b/src/copypass.c\n@@ -48,10 +48,12 @@ set_copypass_perms (int fd, const char *name, struct stat *st)\n    If `link_flag', link instead of copying.  */\n \n void\n-process_copy_pass ()\n+process_copy_pass (void)\n {\n-  dynamic_string input_name;\t/* Name of file from stdin.  */\n-  dynamic_string output_name;\t/* Name of new file.  */\n+  dynamic_string input_name = DYNAMIC_STRING_INITIALIZER;\n+                                /* Name of file from stdin.  */\n+  dynamic_string output_name = DYNAMIC_STRING_INITIALIZER;\n+                                /* Name of new file.  */\n   size_t dirname_len;\t\t/* Length of `directory_name'.  */\n   int res;\t\t\t/* Result of functions.  */\n   char *slash;\t\t\t/* For moving past slashes in input name.  */\n@@ -65,25 +67,18 @@ process_copy_pass ()\n \t\t\t\t   created files  */\n \n   /* Initialize the copy pass.  */\n-  ds_init (&input_name, 128);\n   \n   dirname_len = strlen (directory_name);\n   if (change_directory_option && !ISSLASH (directory_name[0]))\n     {\n       char *pwd = xgetcwd ();\n-\n-      dirname_len += strlen (pwd) + 1;\n-      ds_init (&output_name, dirname_len + 2);\n-      strcpy (output_name.ds_string, pwd);\n-      strcat (output_name.ds_string, \"/\");\n-      strcat (output_name.ds_string, directory_name);\n+      \n+      ds_concat (&output_name, pwd);\n+      ds_append (&output_name, '/');\n     }\n-  else\n-    {\n-      ds_init (&output_name, dirname_len + 2);\n-      strcpy (output_name.ds_string, directory_name);\n-    }\n-  output_name.ds_string[dirname_len] = '/';\n+  ds_concat (&output_name, directory_name);\n+  ds_append (&output_name, '/');\n+  dirname_len = ds_len (&output_name);\n   output_is_seekable = true;\n \n   change_dir ();\n@@ -116,8 +111,8 @@ process_copy_pass ()\n       /* Make the name of the new file.  */\n       for (slash = input_name.ds_string; *slash == '/'; ++slash)\n \t;\n-      ds_resize (&output_name, dirname_len + strlen (slash) + 2);\n-      strcpy (output_name.ds_string + dirname_len + 1, slash);\n+      ds_reset (&output_name, dirname_len);\n+      ds_concat (&output_name, slash);\n \n       existing_dir = false;\n       if (lstat (output_name.ds_string, &out_file_stat) == 0)\n@@ -333,6 +328,9 @@ process_copy_pass ()\n \t\t\t (unsigned long) blocks),\n \t       (unsigned long) blocks);\n     }\n+\n+  ds_free (&input_name);\n+  ds_free (&output_name);\n }\n \f\n /* Try and create a hard link from FILE_NAME to another file \ndiff --git a/src/dstring.c b/src/dstring.c\nindex b261d5a..692d3e7 100644\n--- a/src/dstring.c\n+++ b/src/dstring.c\n@@ -20,8 +20,8 @@\n #if defined(HAVE_CONFIG_H)\n # include <config.h>\n #endif\n-\n #include <stdio.h>\n+#include <stdlib.h>\n #if defined(HAVE_STRING_H) || defined(STDC_HEADERS)\n #include <string.h>\n #else\n@@ -33,24 +33,41 @@\n /* Initialiaze dynamic string STRING with space for SIZE characters.  */\n \n void\n-ds_init (dynamic_string *string, int size)\n+ds_init (dynamic_string *string)\n+{\n+  memset (string, 0, sizeof *string);\n+}\n+\n+/* Free the dynamic string storage. */\n+\n+void\n+ds_free (dynamic_string *string)\n {\n-  string->ds_length = size;\n-  string->ds_string = (char *) xmalloc (size);\n+  free (string->ds_string);\n }\n \n-/* Expand dynamic string STRING, if necessary, to hold SIZE characters.  */\n+/* Expand dynamic string STRING, if necessary.  */\n \n void\n-ds_resize (dynamic_string *string, int size)\n+ds_resize (dynamic_string *string)\n {\n-  if (size > string->ds_length)\n+  if (string->ds_idx == string->ds_size)\n     {\n-      string->ds_length = size;\n-      string->ds_string = (char *) xrealloc ((char *) string->ds_string, size);\n+      string->ds_string = x2nrealloc (string->ds_string, &string->ds_size,\n+\t\t\t\t      1);\n     }\n }\n \n+/* Reset the index of the dynamic string S to LEN. */\n+\n+void\n+ds_reset (dynamic_string *s, size_t len)\n+{\n+  while (len > s->ds_size)\n+    ds_resize (s);\n+  s->ds_idx = len;\n+}\n+\n /* Dynamic string S gets a string terminated by the EOS character\n    (which is removed) from file F.  S will increase\n    in size during the function if the string from F is longer than\n@@ -61,34 +78,50 @@ ds_resize (dynamic_string *string, int size)\n char *\n ds_fgetstr (FILE *f, dynamic_string *s, char eos)\n {\n-  int insize;\t\t\t/* Amount needed for line.  */\n-  int strsize;\t\t\t/* Amount allocated for S.  */\n   int next_ch;\n \n   /* Initialize.  */\n-  insize = 0;\n-  strsize = s->ds_length;\n+  s->ds_idx = 0;\n \n   /* Read the input string.  */\n-  next_ch = getc (f);\n-  while (next_ch != eos && next_ch != EOF)\n+  while ((next_ch = getc (f)) != eos && next_ch != EOF)\n     {\n-      if (insize >= strsize - 1)\n-\t{\n-\t  ds_resize (s, strsize * 2 + 2);\n-\t  strsize = s->ds_length;\n-\t}\n-      s->ds_string[insize++] = next_ch;\n-      next_ch = getc (f);\n+      ds_resize (s);\n+      s->ds_string[s->ds_idx++] = next_ch;\n     }\n-  s->ds_string[insize++] = '\\0';\n+  ds_resize (s);\n+  s->ds_string[s->ds_idx] = '\\0';\n \n-  if (insize == 1 && next_ch == EOF)\n+  if (s->ds_idx == 0 && next_ch == EOF)\n     return NULL;\n   else\n     return s->ds_string;\n }\n \n+void\n+ds_append (dynamic_string *s, int c)\n+{\n+  ds_resize (s);\n+  s->ds_string[s->ds_idx] = c;\n+  if (c)\n+    {\n+      s->ds_idx++;\n+      ds_resize (s);\n+      s->ds_string[s->ds_idx] = 0;\n+    }      \n+}\n+\n+void\n+ds_concat (dynamic_string *s, char const *str)\n+{\n+  size_t len = strlen (str);\n+  while (len + 1 > s->ds_size)\n+    ds_resize (s);\n+  memcpy (s->ds_string + s->ds_idx, str, len);\n+  s->ds_idx += len;\n+  s->ds_string[s->ds_idx] = 0;\n+}\n+\n char *\n ds_fgets (FILE *f, dynamic_string *s)\n {\n@@ -100,3 +133,10 @@ ds_fgetname (FILE *f, dynamic_string *s)\n {\n   return ds_fgetstr (f, s, '\\0');\n }\n+\n+/* Return true if the dynamic string S ends with character C. */\n+int\n+ds_endswith (dynamic_string *s, int c)\n+{\n+  return (s->ds_idx > 0 && s->ds_string[s->ds_idx - 1] == c);\n+}\ndiff --git a/src/dstring.h b/src/dstring.h\nindex 5d24181..ca7a5f1 100644\n--- a/src/dstring.h\n+++ b/src/dstring.h\n@@ -17,10 +17,6 @@\n    Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n    Boston, MA 02110-1301 USA.  */\n \n-#ifndef NULL\n-#define NULL 0\n-#endif\n-\n /* A dynamic string consists of record that records the size of an\n    allocated string and the pointer to that string.  The actual string\n    is a normal zero byte terminated string that can be used with the\n@@ -30,22 +26,25 @@\n \n typedef struct\n {\n-  int ds_length;\t\t/* Actual amount of storage allocated.  */\n-  char *ds_string;\t\t/* String.  */\n+  size_t ds_size;   /* Actual amount of storage allocated.  */\n+  size_t ds_idx;    /* Index of the next free byte in the string. */\n+  char *ds_string;  /* String storage. */\n } dynamic_string;\n \n+#define DYNAMIC_STRING_INITIALIZER { 0, 0, NULL }\n \n-/* Macros that look similar to the original string functions.\n-   WARNING:  These macros work only on pointers to dynamic string records.\n-   If used with a real record, an \"&\" must be used to get the pointer.  */\n-#define ds_strlen(s)\t\tstrlen ((s)->ds_string)\n-#define ds_strcmp(s1, s2)\tstrcmp ((s1)->ds_string, (s2)->ds_string)\n-#define ds_strncmp(s1, s2, n)\tstrncmp ((s1)->ds_string, (s2)->ds_string, n)\n-#define ds_index(s, c)\t\tindex ((s)->ds_string, c)\n-#define ds_rindex(s, c)\t\trindex ((s)->ds_string, c)\n+void ds_init (dynamic_string *string);\n+void ds_free (dynamic_string *string);\n+void ds_reset (dynamic_string *s, size_t len);\n \n-void ds_init (dynamic_string *string, int size);\n-void ds_resize (dynamic_string *string, int size);\n+/* All functions below guarantee that s->ds_string[s->ds_idx] == '\\0' */\n char *ds_fgetname (FILE *f, dynamic_string *s);\n char *ds_fgets (FILE *f, dynamic_string *s);\n char *ds_fgetstr (FILE *f, dynamic_string *s, char eos);\n+void ds_append (dynamic_string *s, int c);\n+void ds_concat (dynamic_string *s, char const *str);\n+\n+#define ds_len(s) ((s)->ds_idx)\n+\n+int ds_endswith (dynamic_string *s, int c);\n+\ndiff --git a/src/util.c b/src/util.c\nindex 996d4fa..ff2746d 100644\n--- a/src/util.c\n+++ b/src/util.c\n@@ -846,11 +846,9 @@ get_next_reel (int tape_des)\n   FILE *tty_out;\t\t/* File for interacting with user.  */\n   int old_tape_des;\n   char *next_archive_name;\n-  dynamic_string new_name;\n+  dynamic_string new_name = DYNAMIC_STRING_INITIALIZER;\n   char *str_res;\n \n-  ds_init (&new_name, 128);\n-\n   /* Open files for interactive communication.  */\n   tty_in = fopen (TTY_NAME, \"r\");\n   if (tty_in == NULL)\n@@ -925,7 +923,7 @@ get_next_reel (int tape_des)\n     error (PAXEXIT_FAILURE, 0, _(\"internal error: tape descriptor changed from %d to %d\"),\n \t   old_tape_des, tape_des);\n \n-  free (new_name.ds_string);\n+  ds_free (&new_name);\n   fclose (tty_in);\n   fclose (tty_out);\n }\n-- \ncgit v1.2.1\n\n"
  },
  {
    "path": "package/cpio/0003-Fix-previous-commit.patch",
    "content": "From dfc801c44a93bed7b3951905b188823d6a0432c8 Mon Sep 17 00:00:00 2001\nFrom: Sergey Poznyakoff <gray@gnu.org>\nDate: Wed, 11 Aug 2021 18:10:38 +0300\nSubject: Fix previous commit\n\n* src/dstring.c (ds_reset,ds_concat): Don't call ds_resize in a\nloop.\n\n[Retrieved from:\nhttps://git.savannah.gnu.org/cgit/cpio.git/commit/?id=dfc801c44a93bed7b3951905b188823d6a0432c8]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/dstring.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/src/dstring.c b/src/dstring.c\nindex 692d3e7..b7e0bb5 100644\n--- a/src/dstring.c\n+++ b/src/dstring.c\n@@ -64,7 +64,7 @@ void\n ds_reset (dynamic_string *s, size_t len)\n {\n   while (len > s->ds_size)\n-    ds_resize (s);\n+    s->ds_string = x2nrealloc (s->ds_string, &s->ds_size, 1);\n   s->ds_idx = len;\n }\n \n@@ -116,7 +116,7 @@ ds_concat (dynamic_string *s, char const *str)\n {\n   size_t len = strlen (str);\n   while (len + 1 > s->ds_size)\n-    ds_resize (s);\n+    s->ds_string = x2nrealloc (s->ds_string, &s->ds_size, 1);\n   memcpy (s->ds_string + s->ds_idx, str, len);\n   s->ds_idx += len;\n   s->ds_string[s->ds_idx] = 0;\n-- \ncgit v1.2.1\n\n"
  },
  {
    "path": "package/cpio/Config.in",
    "content": "config BR2_PACKAGE_CPIO\n\tbool \"cpio\"\n\tdepends on BR2_USE_WCHAR\n\t# Need argp.h support\n\tselect BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  cpio archive utility for creation and extraction.\n\n\t  https://www.gnu.org/software/cpio/\n\ncomment \"cpio needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/cpio/cpio.hash",
    "content": "# From https://lists.gnu.org/archive/html/info-gnu/2019-11/msg00002.html\nmd5 f3438e672e3fa273a7dc26339dd1eed6  cpio-2.13.tar.bz2\nsha1 4dcefc0e1bc36b11506a354768d82b15e3fe6bb8  cpio-2.13.tar.bz2\n# Locally calculated after checking pgp signature\nsha256 eab5bdc5ae1df285c59f2a4f140a98fc33678a0bf61bdba67d9436ae26b46f6d  cpio-2.13.tar.bz2\n# Locally calculated\nsha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7  COPYING\n"
  },
  {
    "path": "package/cpio/cpio.mk",
    "content": "################################################################################\n#\n# cpio\n#\n################################################################################\n\nCPIO_VERSION = 2.13\nCPIO_SOURCE = cpio-$(CPIO_VERSION).tar.bz2\nCPIO_SITE = $(BR2_GNU_MIRROR)/cpio\nCPIO_CONF_OPTS = --bindir=/bin\nCPIO_LICENSE = GPL-3.0+\nCPIO_LICENSE_FILES = COPYING\nCPIO_CPE_ID_VENDOR = gnu\n\n# 0002-Rewrite-dynamic-string-support.patch\n# 0003-Fix-previous-commit.patch\nCPIO_IGNORE_CVES += CVE-2021-38185\n\n# cpio uses argp.h which is not provided by uclibc or musl by default.\n# Use the argp-standalone package to provide this.\nifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y)\nCPIO_DEPENDENCIES += argp-standalone\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/cppcms/Config.in",
    "content": "config BR2_PACKAGE_CPPCMS\n\tbool \"cppcms\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_LIBGCRYPT\n\thelp\n\t  CppCMS is a Free High Performance Web Development Framework\n\t  (not a CMS) aimed for Rapid Web Application Development. It\n\t  differs from most of other web development frameworks like:\n\t  Python Django or Java Servlets on  the following aspects:\n\n\t   - It is designed and tuned to handle extremely high loads.\n\t   - It uses modern C++ as primary development language in\n\t     order to achieve the above goal.\n\t   - It is aimed on development of both Web Sites and Web\n\t     Services.\n\n\t  http://cppcms.com\n\nif BR2_PACKAGE_CPPCMS\n\nconfig BR2_PACKAGE_CPPCMS_ICU\n\tbool \"enable icu support\"\n\tdepends on !BR2_BINFMT_FLAT # icu\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # icu\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # icu\n\tselect BR2_PACKAGE_ICU\n\thelp\n\t  Using ICU allows advanced localization features into CppCMS,\n\t  in another hand ICU is heavier than iconv.\n\ncomment \"icu support needs a toolchain w/ gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n\nendif\n\ncomment \"cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\t!BR2_USE_WCHAR || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/cppcms/cppcms.hash",
    "content": "# From http://sourceforge.net/projects/cppcms/files/cppcms/1.2.1/\nsha1\t9cb25cc5d507d2f4235326ba3815eba252b4ac77\tcppcms-1.2.1.tar.bz2\nmd5\t2bb259fefb86532e404207c71c094a0c\tcppcms-1.2.1.tar.bz2\n# Locally computed:\nsha256  10fec7710409c949a229b9019ea065e25ff5687103037551b6f05716bf6cac52\tcppcms-1.2.1.tar.bz2\nsha256  fb7c15ddf590037d4cd18ebd61148a2304b9243369d238a64f599182377e32db\tCOPYING.TXT\nsha256\t3e4012cc5950e05bedfdd2f00ceffe1ef71c46ac8c79f07e237ecb23c773f65f\tMIT.TXT\nsha256\td6ce062e5cf4f7e3c536d7d2fee84c882c45245f1848ed3162401f2b29fa2b4b\tTHIRD_PARTY_SOFTWARE.TXT\n"
  },
  {
    "path": "package/cppcms/cppcms.mk",
    "content": "################################################################################\n#\n# cppcms\n#\n################################################################################\n\nCPPCMS_VERSION = 1.2.1\nCPPCMS_SOURCE = cppcms-$(CPPCMS_VERSION).tar.bz2\nCPPCMS_LICENSE = MIT, BSL-1.0 (boost), Public Domain (json2.js), Zlib (md5)\nCPPCMS_LICENSE_FILES = COPYING.TXT MIT.TXT THIRD_PARTY_SOFTWARE.TXT\nCPPCMS_SITE = http://downloads.sourceforge.net/project/cppcms/cppcms/$(CPPCMS_VERSION)\nCPPCMS_INSTALL_STAGING = YES\nCPPCMS_CXXFLAGS = $(TARGET_CXXFLAGS)\n\n# disable rpath to avoid getting /usr/lib added to the link search\n# path\nCPPCMS_CONF_OPTS = \\\n\t-DCMAKE_SKIP_RPATH=ON \\\n\t-DCMAKE_CXX_FLAGS=\"$(CPPCMS_CXXFLAGS)\"\n\nCPPCMS_DEPENDENCIES = zlib pcre libgcrypt\n\nifeq ($(BR2_PACKAGE_CPPCMS_ICU),y)\nCPPCMS_CONF_OPTS += -DDISABLE_ICU_LOCALE=OFF\nCPPCMS_DEPENDENCIES += icu\nCPPCMS_CXXFLAGS += \"`$(STAGING_DIR)/usr/bin/icu-config --cxxflags`\"\nelse\nCPPCMS_CONF_OPTS += -DDISABLE_ICU_LOCALE=ON\nendif\n\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\n# posix backend needs monetary.h which isn't available on uClibc\nCPPCMS_CONF_OPTS += -DDISABLE_POSIX_LOCALE=on\nendif\n\n# We copy cppcms_tmpl_cc from staging to host because this file can be\n# needed for compiling packages using cppcms. And it is not worth\n# creating a host package just for a python script.\ndefine CPPCMS_INSTALL_HOST_TOOLS\n\tcp $(STAGING_DIR)/usr/bin/cppcms_tmpl_cc $(HOST_DIR)/bin/cppcms_tmpl_cc\nendef\nCPPCMS_POST_INSTALL_STAGING_HOOKS += CPPCMS_INSTALL_HOST_TOOLS\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/cppdb/0001-mysql-library-suffix.patch",
    "content": "Add mysql/ to PATH_SUFFIXES for the library search for mysql.\n\nOn common distros libmysqlclient* is installed and/or symlinked\ninto /usr/lib.\nSince we install the libraries into /usr/lib/mysql alone cppdb\nfails to properly link to it giving runtime errors.\n\nStatus: https://sourceforge.net/p/cppcms/bugs/135/\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura cppdb-0.3.1.orig/CMakeLists.txt cppdb-0.3.1/CMakeLists.txt\n--- cppdb-0.3.1.orig/CMakeLists.txt\t2014-10-17 11:05:57.875429748 -0300\n+++ cppdb-0.3.1/CMakeLists.txt\t2014-10-17 11:12:57.486775484 -0300\n@@ -196,7 +196,7 @@\n endif()\n \n if(NOT DISABLE_MYSQL)\n-\tfind_library(MYSQL_LIB mysqlclient)\n+\tfind_library(MYSQL_LIB mysqlclient PATH_SUFFIXES mysql)\n \tfind_path(MYSQL_PATH mysql.h PATH_SUFFIXES mysql)\n \tif(MYSQL_LIB AND MYSQL_PATH)\n \t\tinclude_directories(${MYSQL_PATH})\n"
  },
  {
    "path": "package/cppdb/Config.in",
    "content": "config BR2_PACKAGE_CPPDB\n\tbool \"cppdb\"\n\t# dlfcn.h\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# Can be built without them but it's useless\n\tdepends on BR2_PACKAGE_MYSQL || BR2_PACKAGE_POSTGRESQL || BR2_PACKAGE_SQLITE\n\thelp\n\t  CppDB is an SQL connectivity library that is designed to\n\t  provide platform and Database independent connectivity API\n\t  similarly to what JDBC, ODBC and other connectivity libraries\n\t  do.\n\n\t  http://cppcms.com/sql/cppdb/\n\ncomment \"cppdb needs a toolchain w/ C++, threads, dynamic library\"\n\tdepends on BR2_PACKAGE_MYSQL || BR2_PACKAGE_POSTGRESQL || BR2_PACKAGE_SQLITE\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/cppdb/cppdb.hash",
    "content": "# From http://sourceforge.net/projects/cppcms/files/cppdb/0.3.1/\nmd5\t129f1d75f46114b79160b93807d5223f\tcppdb-0.3.1.tar.bz2\nsha1\tc0410dcc482d71696ac9206044b3a3ac03d31f96\tcppdb-0.3.1.tar.bz2\n# locally computed\nsha256  c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566  LICENSE_1_0.txt\nsha256  503ed52ef942d44bb26bd47dd5c6765927b198624e4f375e32cc660dfc2a0981  MIT.txt\n"
  },
  {
    "path": "package/cppdb/cppdb.mk",
    "content": "################################################################################\n#\n# cppdb\n#\n################################################################################\n\nCPPDB_VERSION = 0.3.1\nCPPDB_SOURCE = cppdb-$(CPPDB_VERSION).tar.bz2\nCPPDB_SITE = http://downloads.sourceforge.net/project/cppcms/cppdb/$(CPPDB_VERSION)\nCPPDB_INSTALL_STAGING = YES\nCPPDB_DEPENDENCIES = $(if $(BR2_PACKAGE_SQLITE),sqlite)\nCPPDB_LICENSE = BSL-1.0 or MIT\nCPPDB_LICENSE_FILES = LICENSE_1_0.txt MIT.txt\n\nifeq ($(BR2_PACKAGE_MYSQL),y)\nCPPDB_DEPENDENCIES += mysql\nelse\nCPPDB_CONF_OPTS += -DDISABLE_MYSQL=ON\nendif\n\nifeq ($(BR2_PACKAGE_POSTGRESQL),y)\nCPPDB_DEPENDENCIES += postgresql\nelse\nCPPDB_CONF_OPTS += -DDISABLE_PQ=ON\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE),)\nCPPDB_CONF_OPTS += -DDISABLE_SQLITE=ON\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/cppunit/Config.in",
    "content": "config BR2_PACKAGE_CPPUNIT\n\tbool \"cppunit\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\t# currently the static situation is not correctly detected.\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  CppUnit is the C++ port of the famous JUnit framework for\n\t  unit testing. Test output is in XML or text format for\n\t  automatic testing and GUI based for supervised tests.\n\n\t  http://www.freedesktop.org/wiki/Software/cppunit/\n\ncomment \"cppunit needs a toolchain w/ C++, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/cppunit/cppunit.hash",
    "content": "# hash from: http://www.freedesktop.org/wiki/Software/cppunit/:\nmd5\t9dc669e6145cadd9674873e24943e6dd  cppunit-1.15.1.tar.gz\nsha256\t89c5c6665337f56fd2db36bc3805a5619709d51fb136e51937072f63fcc717a7  cppunit-1.15.1.tar.gz\n\n# Locally calculated:\nsha256\tbadf14d0aa3eaf1a7ae5f19a47a8ef2fc71a96802c4bc3d354535693c389f4e5  COPYING\n"
  },
  {
    "path": "package/cppunit/cppunit.mk",
    "content": "################################################################################\n#\n# cppunit\n#\n################################################################################\n\nCPPUNIT_VERSION = 1.15.1\nCPPUNIT_SITE = http://dev-www.libreoffice.org/src\nCPPUNIT_INSTALL_STAGING = YES\nCPPUNIT_LICENSE = LGPL-2.1\nCPPUNIT_LICENSE_FILES = COPYING\nCPPUNIT_CONF_OPTS = --disable-doxygen\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/cppzmq/Config.in",
    "content": "config BR2_PACKAGE_CPPZMQ\n\tbool \"cppzmq\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # zeromq\n\tselect BR2_PACKAGE_ZEROMQ\n\thelp\n\t  C++ binding for zeromq (ZeroMQ, 0MQ, zmq).\n\n\t  http://github.com/zeromq/cppzmq\n\ncomment \"cppzmq needs a toolchain w/ C++, threads\"\n\tdepends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS)\n"
  },
  {
    "path": "package/cppzmq/cppzmq.hash",
    "content": "# Locally calculated\nsha256  7a23639a45f3a0049e11a188e29aaedd10b2f4845f0000cf3e22d6774ebde0af  cppzmq-4.8.1.tar.gz\nsha256  7e6db90e2e805c72b3daa77849d1cb5f1f92da0e69750c8a4aa1d86d70704748  LICENSE\n"
  },
  {
    "path": "package/cppzmq/cppzmq.mk",
    "content": "################################################################################\n#\n# cppzmq\n#\n################################################################################\n\nCPPZMQ_VERSION = 4.8.1\nCPPZMQ_SITE = $(call github,zeromq,cppzmq,v$(CPPZMQ_VERSION))\nCPPZMQ_INSTALL_STAGING = YES\nCPPZMQ_DEPENDENCIES = host-pkgconf zeromq\nCPPZMQ_LICENSE = MIT\nCPPZMQ_LICENSE_FILES = LICENSE\nCPPZMQ_CONF_OPTS = -DCPPZMQ_BUILD_TESTS=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/cpuburn-arm/Config.in",
    "content": "config BR2_PACKAGE_CPUBURN_ARM_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_cortex_a7\n\tdefault y if BR2_cortex_a8\n\tdefault y if BR2_cortex_a9\n\tdefault y if BR2_cortex_a53\n\nconfig BR2_PACKAGE_CPUBURN_ARM\n\tbool \"cpuburn-arm\"\n\tdepends on BR2_PACKAGE_CPUBURN_ARM_ARCH_SUPPORTS\n\thelp\n\t  Make ARM cores generate as much heat as possible. Supports\n\t  Cortex A7/A8/A9/A53.\n\n\t  https://github.com/ssvb/cpuburn-arm\n"
  },
  {
    "path": "package/cpuburn-arm/cpuburn-arm.hash",
    "content": "# Locally calculated\nsha256 354381ec8c352e6c84875ac034004df44b0ed0ac097c400b8d2e47652815c3a2  cpuburn-arm-ad7e646700d14b81413297bda02fb7fe96613c3f.tar.gz\nsha256 47f10095a04d16c8d8d52598371fa01b6a6e87134083b9ec3c43d83ff8576f55  cpuburn-a7.S\n"
  },
  {
    "path": "package/cpuburn-arm/cpuburn-arm.mk",
    "content": "################################################################################\n#\n# cpuburn-arm\n#\n################################################################################\n\nCPUBURN_ARM_VERSION = ad7e646700d14b81413297bda02fb7fe96613c3f\nCPUBURN_ARM_SITE = $(call github,ssvb,cpuburn-arm,$(CPUBURN_ARM_VERSION))\nCPUBURN_ARM_LICENSE = MIT\nCPUBURN_ARM_LICENSE_FILES = cpuburn-a7.S\n\nifeq ($(BR2_cortex_a7),y)\nCPUBURN_ARM_SRC = cpuburn-a7.S\nelse ifeq ($(BR2_cortex_a8),y)\nCPUBURN_ARM_SRC = cpuburn-a8.S\nelse ifeq ($(BR2_cortex_a9),y)\nCPUBURN_ARM_SRC = cpuburn-a9.S\nelse ifeq ($(BR2_cortex_a53),y)\nCPUBURN_ARM_SRC = cpuburn-a53.S\nendif\n\ndefine CPUBURN_ARM_BUILD_CMDS\n\t$(TARGET_CC) $(TARGET_CFLAGS) -o $(@D)/cpuburn \\\n\t\t$(@D)/$(CPUBURN_ARM_SRC)\nendef\n\ndefine CPUBURN_ARM_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 $(@D)/cpuburn $(TARGET_DIR)/usr/bin/cpuburn\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/cpuload/Config.in",
    "content": "config BR2_PACKAGE_CPULOAD\n\tbool \"cpuload\"\n\thelp\n\t  cpuload is a simple tool to obtain intuitive vision of CPU\n\t  load (including total, user, system, irq and softirq) within a\n\t  certain time, which is especially useful for embedded system\n\t  without GUI.\n\n\t  https://github.com/kelvincheung/cpuload\n"
  },
  {
    "path": "package/cpuload/cpuload.hash",
    "content": "# Locally calculated\nsha256 1d61f4776dc3e2746343d68b2ea2faf138e54666b630a6060df4f3945badbcae  cpuload-0.3.tar.gz\nsha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/cpuload/cpuload.mk",
    "content": "################################################################################\n#\n# cpuload\n#\n################################################################################\n\nCPULOAD_VERSION = 0.3\nCPULOAD_SITE = $(call github,kelvincheung,cpuload,v$(CPULOAD_VERSION))\nCPULOAD_LICENSE = GPL-2.0\nCPULOAD_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/cracklib/0001-Force-grep-to-treat-the-input-as-text-when-formattin.patch",
    "content": "From d27062fe7a520d5791f7a56d175a5cb6a39bae61 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Stefan=20S=C3=B8rensen?= <stefan.sorensen@spectralink.com>\nDate: Tue, 18 Apr 2017 12:00:39 +0200\nSubject: [PATCH] Force grep to treat the input as text when formatting word\n files.\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n util/cracklib-format | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/util/cracklib-format b/util/cracklib-format\nindex 1d7be5b..b1de8e8 100644\n--- a/util/cracklib-format\n+++ b/util/cracklib-format\n@@ -4,7 +4,7 @@\n # into cracklib-packer\n #\n gzip -cdf \"$@\" |\n-    grep -v '^\\(#\\|$\\)' |\n+    grep -a -v '^\\(#\\|$\\)' |\n     tr '[A-Z]' '[a-z]' |\n     tr -cd '\\012[a-z][0-9]' |\n     env LC_ALL=C sort -u\n-- \n2.9.3\n\n"
  },
  {
    "path": "package/cracklib/Config.in",
    "content": "config BR2_PACKAGE_CRACKLIB\n\tbool \"cracklib\"\n\thelp\n\t  CrackLib tests passwords to determine whether they match\n\t  certain security-oriented characteristics, with the purpose\n\t  of stopping users from choosing passwords that are easy to\n\t  guess. CrackLib performs several tests on passwords: it\n\t  tries to generate words from a username and gecos entry and\n\t  checks those words against the password; it checks for\n\t  simplistic patterns in passwords; and it checks for the\n\t  password in a dictionary.\n\n\t  https://github.com/cracklib/cracklib\n\nif BR2_PACKAGE_CRACKLIB\n\nconfig BR2_PACKAGE_CRACKLIB_TOOLS\n\tbool \"install tools\"\n\thelp\n\t  Install cracklib command line tools for creating dicts.\n\nconfig BR2_PACKAGE_CRACKLIB_FULL_DICT\n\tbool \"full dict\"\n\thelp\n\t  Install the full cracklib dict (requires about 8Mb extra\n\t  target space).\n\nendif\n"
  },
  {
    "path": "package/cracklib/cracklib.hash",
    "content": "# Locally calculated\nsha256\t8b6fd202f3f1d8fa395d3b7a5d821227cfd8bb4a9a584a7ae30cf62cea6287dd\tcracklib-2.9.7.tar.gz\nsha256\t7f0c45faf84a2494f15d1e2720394aca4a379163a70c4acad948186c0047d389\tcracklib-words-2.9.7.gz\nsha256\tf18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa\tCOPYING.LIB\n"
  },
  {
    "path": "package/cracklib/cracklib.mk",
    "content": "################################################################################\n#\n# cracklib\n#\n################################################################################\n\nCRACKLIB_VERSION = 2.9.7\nCRACKLIB_SITE = https://github.com/cracklib/cracklib/releases/download/v$(CRACKLIB_VERSION)\nCRACKLIB_LICENSE = LGPL-2.1\nCRACKLIB_LICENSE_FILES = COPYING.LIB\nCRACKLIB_CPE_ID_VENDOR = cracklib_project\nCRACKLIB_INSTALL_STAGING = YES\nCRACKLIB_DEPENDENCIES = host-cracklib $(TARGET_NLS_DEPENDENCIES)\nCRACKLIB_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nCRACKLIB_CONF_OPTS += --with-zlib\nCRACKLIB_DEPENDENCIES += zlib\nelse\nCRACKLIB_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\nCRACKLIB_CONF_OPTS += --with-python\nCRACKLIB_DEPENDENCIES += python\nelse\nCRACKLIB_CONF_OPTS += --without-python\nendif\n\nHOST_CRACKLIB_CONF_OPTS += --without-python --without-zlib\n\nifeq ($(BR2_PACKAGE_CRACKLIB_FULL_DICT),y)\nCRACKLIB_EXTRA_DOWNLOADS = cracklib-words-$(CRACKLIB_VERSION).gz\nCRACKLIB_DICT_SOURCE = $(CRACKLIB_DL_DIR)/cracklib-words-$(CRACKLIB_VERSION).gz\nelse\nCRACKLIB_DICT_SOURCE = $(@D)/dicts/cracklib-small\nendif\n\nifeq ($(BR2_PACKAGE_CRACKLIB_TOOLS),)\ndefine CRACKLIB_REMOVE_TOOLS\n\trm -f $(TARGET_DIR)/usr/sbin/*cracklib*\nendef\nCRACKLIB_POST_INSTALL_TARGET_HOOKS += CRACKLIB_REMOVE_TOOLS\nendif\n\ndefine CRACKLIB_BUILD_DICT\n\t$(HOST_MAKE_ENV) cracklib-format $(CRACKLIB_DICT_SOURCE) | \\\n\t\t$(HOST_MAKE_ENV) cracklib-packer $(TARGET_DIR)/usr/share/cracklib/pw_dict\n\trm $(TARGET_DIR)/usr/share/cracklib/cracklib-small\nendef\nCRACKLIB_POST_INSTALL_TARGET_HOOKS += CRACKLIB_BUILD_DICT\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/cramfs/Config.in",
    "content": "config BR2_PACKAGE_CRAMFS\n\tbool \"cramfs\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  cramfs is a compressed read-only filesystem. This package\n\t  contains the tools to generate and check a cramfs filesystem.\n\n\t  https://github.com/npitre/cramfs-tools\n"
  },
  {
    "path": "package/cramfs/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_CRAMFS\n\tbool \"host cramfs\"\n\thelp\n\t  cramfs is a compressed read-only filesystem. This package\n\t  contains the tools to generate and check a cramfs filesystem.\n\n\t  https://github.com/npitre/cramfs-tools\n"
  },
  {
    "path": "package/cramfs/cramfs.hash",
    "content": "# Locally computed:\nsha256  cdb7a4ecad034f063b6456b37cdf653ae31758a224c32161e54712a9d7f01cc3  cramfs-2.1.tar.gz\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  COPYING\n"
  },
  {
    "path": "package/cramfs/cramfs.mk",
    "content": "################################################################################\n#\n# cramfs\n#\n################################################################################\n\nCRAMFS_VERSION = 2.1\nCRAMFS_SITE = $(call github,npitre,cramfs-tools,v$(CRAMFS_VERSION))\nCRAMFS_LICENSE = GPL-2.0+\nCRAMFS_LICENSE_FILES = COPYING\n\nCRAMFS_DEPENDENCIES = zlib\nHOST_CRAMFS_DEPENDENCIES = host-zlib\n\ndefine CRAMFS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" CFLAGS=\"$(TARGET_CFLAGS)\" LDFLAGS=\"$(TARGET_LDFLAGS)\" -C $(@D)\nendef\n\ndefine CRAMFS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/mkcramfs $(TARGET_DIR)/usr/bin/mkcramfs\n\t$(INSTALL) -D -m 755 $(@D)/cramfsck $(TARGET_DIR)/usr/bin/cramfsck\nendef\n\ndefine HOST_CRAMFS_BUILD_CMDS\n\t$(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)\nendef\n\ndefine HOST_CRAMFS_INSTALL_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/mkcramfs $(HOST_DIR)/bin/mkcramfs\n\t$(INSTALL) -D -m 755 $(@D)/cramfsck $(HOST_DIR)/bin/cramfsck\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/crda/0001-crda-support-python-3-in-utils-key2pub.py.patch",
    "content": "From 8228c484a1533ff904b276c342adcb6310abe272 Mon Sep 17 00:00:00 2001\nFrom: Taahir Ahmed <ahmed.taahir@gmail.com>\nDate: Wed, 30 Mar 2016 11:23:54 -0300\nSubject: [PATCH] crda: support python 3 in utils/key2pub.py\n\nutils/key2pub.py can now be run under either python 2.7 or python 3.x.\nThis required some minor syntactical changes as well as switching from\nM2Crypto to pycryptodomex, since M2Crypto doesn't support python 3.x.\n\nIn addition, some errors in the generated source file keys-ssl.h are\nfixed:\n\n  * The correct OpenSSL header for BN_ULONG is included.\n\n  * The generated constants are given the 'ull' suffix to prevent\n    warnings about constants that are too large.\n\n[Gustavo: don't call /utils/key2pub.py since that doesn't compute]\n\nUse pycryptodomex insdead of pycrypto\n\nFrom [1]:\n\"PyCryptodome is a fork of PyCrypto, which is not maintained any more\n(the last release dates back to 2013 [2]). It exposes almost the same\nAPI, but there are a few incompatibilities [3].\"\n\n[1] https://github.com/OP-TEE/optee_os/commit/90ad2450436fdd9fc0d28a3f92f3fbcfd89a38f0\n[2] https://pypi.org/project/pycrypto/#history\n[3] https://pycryptodome.readthedocs.io/en/latest/src/vs_pycrypto.html\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n[Rebased against crda-4.14]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n[Romain: Use pycryptodomex]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n Makefile         |   2 +-\n utils/key2pub.py | 146 ++++++++++++++++++++++++-----------------------\n 2 files changed, 75 insertions(+), 73 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex a3ead30..8da38d0 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -112,7 +112,7 @@ $(REG_BIN):\n keys-%.c: utils/key2pub.py $(wildcard $(PUBKEY_DIR)/*.pem)\n \t$(NQ) '  GEN ' $@\n \t$(NQ) '  Trusted pubkeys:' $(wildcard $(PUBKEY_DIR)/*.pem)\n-\t$(Q)./utils/key2pub.py --$* $(wildcard $(PUBKEY_DIR)/*.pem) $@\n+\t$(Q) python utils/key2pub.py --$* $(wildcard $(PUBKEY_DIR)/*.pem) $@\n \n $(LIBREG): regdb.h reglib.h reglib.c\n \t$(NQ) '  CC  ' $@\ndiff --git a/utils/key2pub.py b/utils/key2pub.py\nindex 9bb04cd..8a0ba2a 100755\n--- a/utils/key2pub.py\n+++ b/utils/key2pub.py\n@@ -1,126 +1,128 @@\n #!/usr/bin/env python\n \n+import io\n import sys\n try:\n-       from M2Crypto import RSA\n-except ImportError, e:\n-       sys.stderr.write('ERROR: Failed to import the \"M2Crypto\" module: %s\\n' % e.message)\n-       sys.stderr.write('Please install the \"M2Crypto\" Python module.\\n')\n-       sys.stderr.write('On Debian GNU/Linux the package is called \"python-m2crypto\".\\n')\n-       sys.exit(1)\n+    from Cryptodome.PublicKey import RSA\n+except ImportError as e:\n+    sys.stderr.write('ERROR: Failed to import the \"Cryptodome.PublicKey\" module: %s\\n' % e.message)\n+    sys.stderr.write('Please install the \"Cryptodome.PublicKey\" Python module.\\n')\n+    sys.stderr.write('On Debian GNU/Linux the package is called \"python-cryptodomex\".\\n')\n+    sys.exit(1)\n+\n+def bitwise_collect(value, radix_bits):\n+    words = []\n+    radix_mask = (1 << radix_bits) - 1\n+    while value != 0:\n+        words.append(value & radix_mask)\n+        value >>= radix_bits\n+    return words\n \n def print_ssl_64(output, name, val):\n-    while val[0] == '\\0':\n-        val = val[1:]\n-    while len(val) % 8:\n-        val = '\\0' + val\n-    vnew = []\n-    while len(val):\n-        vnew.append((val[0], val[1], val[2], val[3], val[4], val[5], val[6], val[7]))\n-        val = val[8:]\n-    vnew.reverse()\n-    output.write('static BN_ULONG %s[%d] = {\\n' % (name, len(vnew)))\n+    # OpenSSL expects 64-bit words given least-significant-word first.\n+    vwords = bitwise_collect(val, 64)\n+\n+    output.write(u'static BN_ULONG {}[] = {{\\n'.format(name))\n     idx = 0\n-    for v1, v2, v3, v4, v5, v6, v7, v8 in vnew:\n+    for vword in vwords:\n         if not idx:\n-            output.write('\\t')\n-        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)))\n+            output.write(u'\\t')\n+        output.write(u'0x{:016x}ULL, '.format(vword))\n         idx += 1\n         if idx == 2:\n             idx = 0\n-            output.write('\\n')\n+            output.write(u'\\n')\n     if idx:\n-        output.write('\\n')\n-    output.write('};\\n\\n')\n+        output.write(u'\\n')\n+    output.write(u'};\\n\\n')\n \n def print_ssl_32(output, name, val):\n-    while val[0] == '\\0':\n-        val = val[1:]\n-    while len(val) % 4:\n-        val = '\\0' + val\n-    vnew = []\n-    while len(val):\n-        vnew.append((val[0], val[1], val[2], val[3], ))\n-        val = val[4:]\n-    vnew.reverse()\n-    output.write('static BN_ULONG %s[%d] = {\\n' % (name, len(vnew)))\n+    # OpenSSL expects 32-bit words given least-significant-word first.\n+    vwords = bitwise_collect(val, 32)\n+\n+    output.write(u'static BN_ULONG {}[] = {{\\n'.format(name))\n     idx = 0\n-    for v1, v2, v3, v4 in vnew:\n+    for vword in vwords:\n         if not idx:\n-            output.write('\\t')\n-        output.write('0x%.2x%.2x%.2x%.2x, ' % (ord(v1), ord(v2), ord(v3), ord(v4)))\n+            output.write(u'\\t')\n+        output.write(u'0x{:08x}, '.format(vword))\n         idx += 1\n         if idx == 4:\n             idx = 0\n-            output.write('\\n')\n+            output.write(u'\\n')\n     if idx:\n-        output.write('\\n')\n-    output.write('};\\n\\n')\n+        output.write(u'\\n')\n+    output.write(u'};\\n\\n')\n \n def print_ssl(output, name, val):\n+\n+    output.write(u'#include <stdint.h>\\n')\n+    output.write(u'#include <openssl/bn.h>\\n')\n+\n     import struct\n-    output.write('#include <stdint.h>\\n')\n     if len(struct.pack('@L', 0)) == 8:\n         return print_ssl_64(output, name, val)\n     else:\n         return print_ssl_32(output, name, val)\n \n def print_ssl_keys(output, n):\n-    output.write(r'''\n+    output.write(u'''\n struct pubkey {\n \tstruct bignum_st e, n;\n };\n \n-#define KEY(data) {\t\t\t\t\\\n-\t.d = data,\t\t\t\t\\\n-\t.top = sizeof(data)/sizeof(data[0]),\t\\\n+#define KEY(data) {                          \\\\\n+\t.d = data,                           \\\\\n+\t.top = sizeof(data)/sizeof(data[0]), \\\\\n }\n \n-#define KEYS(e,n)\t{ KEY(e), KEY(n), }\n+#define KEYS(e,n)    { KEY(e), KEY(n), }\n \n static struct pubkey keys[] = {\n ''')\n     for n in xrange(n + 1):\n-        output.write('\tKEYS(e_%d, n_%d),\\n' % (n, n))\n-    output.write('};\\n')\n+        output.write(u'\tKEYS(e_{0}, n_{0}),\\n'.format(n))\n+    output.write(u'};\\n')\n     pass\n \n def print_gcrypt(output, name, val):\n-    output.write('#include <stdint.h>\\n')\n-    while val[0] == '\\0':\n-        val = val[1:]\n-    output.write('static const uint8_t %s[%d] = {\\n' % (name, len(val)))\n+    # gcrypt expects 8-bit words most-significant-word first\n+    vwords = bitwise_collect(val, 8)\n+    vwords.reverse()\n+\n+    output.write(u'#include <stdint.h>\\n')\n+    output.write(u'static const uint8_t %s[%d] = {\\n' % (name, len(vwords)))\n     idx = 0\n-    for v in val:\n+    for vword in vwords:\n         if not idx:\n-            output.write('\\t')\n-        output.write('0x%.2x, ' % ord(v))\n+            output.write(u'\\t')\n+        output.write(u'0x{:02x}, '.format(vword))\n         idx += 1\n         if idx == 8:\n             idx = 0\n-            output.write('\\n')\n+            output.write(u'\\n')\n     if idx:\n-        output.write('\\n')\n-    output.write('};\\n\\n')\n+        output.write(u'\\n')\n+    output.write(u'};\\n\\n')\n \n def print_gcrypt_keys(output, n):\n-    output.write(r'''\n+    output.write(u'''\n struct key_params {\n \tconst uint8_t *e, *n;\n \tuint32_t len_e, len_n;\n };\n \n-#define KEYS(_e, _n) {\t\t\t\\\n-\t.e = _e, .len_e = sizeof(_e),\t\\\n-\t.n = _n, .len_n = sizeof(_n),\t\\\n+#define KEYS(_e, _n) {                \\\\\n+\t.e = _e, .len_e = sizeof(_e), \\\\\n+\t.n = _n, .len_n = sizeof(_n), \\\\\n }\n \n static const struct key_params __attribute__ ((unused)) keys[] = {\n ''')\n-    for n in xrange(n + 1):\n-        output.write('\tKEYS(e_%d, n_%d),\\n' % (n, n))\n-    output.write('};\\n')\n-    \n+    for n in range(n + 1):\n+        output.write(u'\tKEYS(e_{0}, n_{0}),\\n'.format(n))\n+    output.write(u'};\\n')\n+\n \n modes = {\n     '--ssl': (print_ssl, print_ssl_keys),\n@@ -135,21 +137,21 @@ except IndexError:\n     mode = None\n \n if not mode in modes:\n-    print 'Usage: %s [%s] input-file... output-file' % (sys.argv[0], '|'.join(modes.keys()))\n+    print('Usage: {} [{}] input-file... output-file'.format(sys.argv[0], '|'.join(modes.keys())))\n     sys.exit(2)\n \n-output = open(outfile, 'w')\n+output = io.open(outfile, 'w')\n \n # load key\n idx = 0\n for f in files:\n-    try:\n-        key = RSA.load_pub_key(f)\n-    except RSA.RSAError:\n-        key = RSA.load_key(f)\n \n-    modes[mode][0](output, 'e_%d' % idx, key.e[4:])\n-    modes[mode][0](output, 'n_%d' % idx, key.n[4:])\n+    key_contents = io.open(f, 'rb').read()\n+    key = RSA.importKey(key_contents)\n+\n+    modes[mode][0](output, 'e_{}'.format(idx), key.e)\n+    modes[mode][0](output, 'n_{}'.format(idx), key.n)\n+\n     idx += 1\n \n modes[mode][1](output, idx - 1)\n-- \n2.25.3\n\n"
  },
  {
    "path": "package/crda/0002-drop-ldconfig-call.patch",
    "content": "Drop ldconfig call, it's useless for cross-compiling.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura crda-3.18.orig/Makefile crda-3.18/Makefile\n--- crda-3.18.orig/Makefile\t2015-02-18 10:34:23.841259401 -0300\n+++ crda-3.18/Makefile\t2015-02-18 10:35:10.524201452 -0300\n@@ -127,7 +127,6 @@\n \t$(NQ) '  INSTALL  libreg'\n \t$(Q)mkdir -p $(DESTDIR)/$(LIBDIR)\n \t$(Q)cp $(LIBREG) $(DESTDIR)/$(LIBDIR)/\n-\t$(Q)ldconfig\n \n %.o: %.c regdb.h $(LIBREG)\n \t$(NQ) '  CC  ' $@\n"
  },
  {
    "path": "package/crda/0003-drop-werror.patch",
    "content": "From f38253e066dee96b148be1b79a6b4a696ee0ae0b Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Sun, 1 May 2016 10:05:48 +0200\nSubject: [PATCH] drop werror\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nBuilding crda with GCC 6 fails because of all compiler warnings are treated as\nerrors. Disable the compiler option '-Werror':\n\nkeys-gcrypt.c:94:32: error: ‘keys’ defined but not used [-Werror=unused-const-variable=]\n static const struct key_params keys[] = {\n                                ^~~~\ncc1: all warnings being treated as errors\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 74f1172..e9b417f 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -26,7 +26,7 @@ PUBKEY_DIR?=pubkeys\n RUNTIME_PUBKEY_DIR?=/etc/wireless-regdb/pubkeys\n \n CFLAGS += -O2 -fpic\n-CFLAGS += -std=gnu99 -Wall -Werror -pedantic\n+CFLAGS += -std=gnu99 -Wall -pedantic\n CFLAGS += -Wall -g\n LDLIBREG += -lreg\n LDLIBS += $(LDLIBREG)\n-- \n2.8.2\n\n"
  },
  {
    "path": "package/crda/Config.in",
    "content": "config BR2_PACKAGE_CRDA\n\tbool \"crda\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_LIBNL\n\t# regdb is a runtime dependency\n\tselect BR2_PACKAGE_WIRELESS_REGDB\n\thelp\n\t  Central Regulatory Domain Agent.\n\n\t  This package provides a Central Regulatory Domain Agent (CRDA)\n\t  to be used by the Linux kernel cf80211 wireless subsystem to\n\t  query and apply the regulatory domain settings wireless\n\t  devices may operate within for a given location.\n\n\t  https://wireless.wiki.kernel.org/en/developers/regulatory/crda\n\ncomment \"crda needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/crda/crda.hash",
    "content": "# Locally computed\nsha256  5a8f35bb8b27474f466b0e75d451ba917433d8aab1889678a64d9c4e72a8b8c2  crda-4.14.tar.gz\nsha256  c16224b376128b589eea69a8fdd1f09818b8cb995e10d1e37f72dff22233d7b0  LICENSE\n"
  },
  {
    "path": "package/crda/crda.mk",
    "content": "################################################################################\n#\n# crda\n#\n################################################################################\n\nCRDA_VERSION = 4.14\nCRDA_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/crda.git/snapshot\nCRDA_DEPENDENCIES = host-pkgconf host-python-pycryptodomex libnl libgcrypt\nCRDA_LICENSE = ISC\nCRDA_LICENSE_FILES = LICENSE\nCRDA_CPE_ID_VENDOR = kernel\n\ndefine CRDA_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(MAKE) all_noverify -C $(@D)\nendef\n\ndefine CRDA_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) install -C $(@D) DESTDIR=$(TARGET_DIR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/crudini/Config.in",
    "content": "config BR2_PACKAGE_CRUDINI\n\tbool \"crudini\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_INIPARSE # runtime\n\thelp\n\t  A utility for handling ini files from the command line and\n\t  shell scripts\n\n\t  https://pypi.python.org/pypi/crudini\n"
  },
  {
    "path": "package/crudini/crudini.hash",
    "content": "# locally computed\nsha256  e1b8125ac4373ece3bb0bb047ba9336e5bd55ed5d56b9729968058c9385ab546  crudini-0.9.3.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/crudini/crudini.mk",
    "content": "################################################################################\n#\n# crudini\n#\n################################################################################\n\nCRUDINI_VERSION = 0.9.3\nCRUDINI_SITE = $(call github,pixelb,crudini,$(CRUDINI_VERSION))\nCRUDINI_SETUP_TYPE = setuptools\nCRUDINI_LICENSE = GPL-2.0\nCRUDINI_LICENSE_FILES = COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/cryptodev/Config.in",
    "content": "comment \"cryptodev needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_CRYPTODEV\n\tbool \"cryptodev\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  Select the desired cryptodev implementation.\n\nif BR2_PACKAGE_CRYPTODEV\n\nchoice\n\tprompt \"cryptodev variant\"\n\tdefault BR2_PACKAGE_CRYPTODEV_LINUX if !BR2_microblaze\n\thelp\n\t  Select the cryptodev implementation.\n\nconfig BR2_PACKAGE_CRYPTODEV_LINUX\n\tbool \"cryptodev-linux\"\n\tdepends on !BR2_microblaze\n\tselect BR2_PACKAGE_HAS_CRYPTODEV\n\thelp\n\t  Cryptodev-linux is a device that allows access to Linux kernel\n\t  cryptographic drivers; thus allowing userspace applications\n\t  to take advantage of hardware accelerators.\n\n\t  http://cryptodev-linux.org/index.html\n\nconfig BR2_PACKAGE_OCF_LINUX\n\tbool \"ocf-linux\"\n\tselect BR2_PACKAGE_HAS_CRYPTODEV\n\thelp\n\t  OCF-Linux is a Linux port of the OpenBSD/FreeBSD Cryptographic\n\t  Framework (OCF). This port aims to bring full asynchronous\n\t  HW/SW crypto acceleration to the Linux kernel and applications\n\t  running under Linux.\n\n\t  http://ocf-linux.sourceforge.net/\n\nendchoice\n\nconfig BR2_PACKAGE_HAS_CRYPTODEV\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_CRYPTODEV\n\tstring\n\tdefault \"cryptodev-linux\" if BR2_PACKAGE_CRYPTODEV_LINUX\n\tdefault \"ocf-linux\"       if BR2_PACKAGE_OCF_LINUX\n\nendif\n"
  },
  {
    "path": "package/cryptodev/cryptodev.mk",
    "content": "################################################################################\n#\n# cryptodev\n#\n################################################################################\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "package/cryptodev-linux/cryptodev-linux.hash",
    "content": "# Locally calculated\nsha256  f51c2254749233b1b1d7ec9445158bd709f124f88e1c650fe2faac83c3a81938  cryptodev-linux-1.12.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/cryptodev-linux/cryptodev-linux.mk",
    "content": "################################################################################\n#\n# cryptodev-linux\n#\n################################################################################\n\nCRYPTODEV_LINUX_VERSION = 1.12\nCRYPTODEV_LINUX_SITE = $(call github,cryptodev-linux,cryptodev-linux,cryptodev-linux-$(CRYPTODEV_LINUX_VERSION))\nCRYPTODEV_LINUX_INSTALL_STAGING = YES\nCRYPTODEV_LINUX_LICENSE = GPL-2.0+\nCRYPTODEV_LINUX_LICENSE_FILES = COPYING\nCRYPTODEV_LINUX_CPE_ID_VENDOR = cryptodev-linux\n\nCRYPTODEV_LINUX_PROVIDES = cryptodev\n\ndefine CRYPTODEV_LINUX_MODULE_GEN_VERSION_H\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) version.h\nendef\nCRYPTODEV_LINUX_PRE_BUILD_HOOKS += CRYPTODEV_LINUX_MODULE_GEN_VERSION_H\n\ndefine CRYPTODEV_LINUX_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 644 $(@D)/crypto/cryptodev.h \\\n\t\t$(STAGING_DIR)/usr/include/crypto/cryptodev.h\nendef\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/cryptopp/cryptopp.hash",
    "content": "# Hash from: https://www.cryptopp.com/release860.html:\nsha512  e7773f5e4a7dc7e8e735b1702524bee56ba38e5211544c9c9778bc51ed8dc7b376c17f2e406410043b636312336f26f76dc963f298872f8c13933e88c232fc03  cryptopp860.zip\n\n# Hash for license file:\nsha256  e668af8c73a38a66a1e8951d14ec24e7582fee5254dd6c3dae488a416d105d5f  License.txt\n"
  },
  {
    "path": "package/cryptopp/cryptopp.mk",
    "content": "################################################################################\n#\n# cryptopp\n#\n################################################################################\n\nCRYPTOPP_VERSION = 8.6.0\nCRYPTOPP_SOURCE = cryptopp$(subst .,,$(CRYPTOPP_VERSION)).zip\nCRYPTOPP_SITE = https://cryptopp.com\nCRYPTOPP_LICENSE = BSL-1.0, BSD-3-Clause (CRYPTOGAMS), Public domain (ChaCha SSE2 and AVX)\nCRYPTOPP_LICENSE_FILES = License.txt\nCRYPTOPP_CPE_ID_VENDOR = cryptopp\nCRYPTOPP_CPE_ID_PRODUCT = crypto\\+\\+\nCRYPTOPP_INSTALL_STAGING = YES\n\ndefine HOST_CRYPTOPP_EXTRACT_CMDS\n\t$(UNZIP) $(HOST_CRYPTOPP_DL_DIR)/$(CRYPTOPP_SOURCE) -d $(@D)\nendef\n\nHOST_CRYPTOPP_CXXFLAGS = $(HOST_CFLAGS) -fPIC\n\n# _mm256_broadcastsi128_si256 has been added only in gcc 4.9\nifneq ($(BR2_HOST_GCC_AT_LEAST_4_9),y)\nHOST_CRYPTOPP_CXXFLAGS += -DCRYPTOPP_DISABLE_AVX2\nendif\n\nHOST_CRYPTOPP_MAKE_OPTS = \\\n\t$(HOST_CONFIGURE_OPTS) \\\n\tCXXFLAGS=\"$(HOST_CRYPTOPP_CXXFLAGS)\"\n\ndefine HOST_CRYPTOPP_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CRYPTOPP_MAKE_OPTS) shared\nendef\n\ndefine HOST_CRYPTOPP_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install-lib\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/cryptsetup/0001-Remove-json_object-typedef.patch",
    "content": "From 567e7f8664c621f8aeaa95d9f4ab4b590574f572 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Wed, 15 Aug 2018 14:13:46 +0300\nSubject: [PATCH] Remove json_object typedef\n\nThe json-c header already defines the same typedef. While C11 allows\ntypedef redefinition to the same type, older versions of gcc disallow\nthat.\n\nIn file included from lib/luks2/luks2_internal.h:32,\n                 from lib/luks2/luks2_disk_metadata.c:24:\nlib/luks2/luks2.h:86: error: redefinition of typedef 'json_object'\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n[Upstream status:\nhttps://gitlab.com/cryptsetup/cryptsetup/-/merge_requests/91]\n---\n lib/luks2/luks2.h | 1 -\n lib/setup.c       | 1 +\n 2 files changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/lib/luks2/luks2.h b/lib/luks2/luks2.h\nindex ee57b41ba974..25e36190da45 100644\n--- a/lib/luks2/luks2.h\n+++ b/lib/luks2/luks2.h\n@@ -83,7 +83,6 @@ struct luks2_hdr_disk {\n /*\n  * LUKS2 header in-memory.\n  */\n-typedef struct json_object json_object;\n struct luks2_hdr {\n \tsize_t\t\thdr_size;\n \tuint64_t\tseqid;\ndiff --git a/lib/setup.c b/lib/setup.c\nindex fddbe7ef7897..856f6e80f465 100644\n--- a/lib/setup.c\n+++ b/lib/setup.c\n@@ -28,6 +28,7 @@\n #include <sys/utsname.h>\n #include <fcntl.h>\n #include <errno.h>\n+#include <json-c/json.h>\n \n #include \"libcryptsetup.h\"\n #include \"luks.h\"\n-- \n2.18.0\n\n"
  },
  {
    "path": "package/cryptsetup/Config.in",
    "content": "config BR2_PACKAGE_CRYPTSETUP\n\tbool \"cryptsetup\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # lvm2\n\tdepends on BR2_USE_MMU # lvm2, libargon2\n\tdepends on !BR2_STATIC_LIBS # lvm2, libargon2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c\n\tselect BR2_PACKAGE_POPT\n\tselect BR2_PACKAGE_LVM2\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_JSON_C\n\tselect BR2_PACKAGE_LIBARGON2\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  This tool helps manipulate dm-crypt and luks partitions for\n\t  on-disk encryption.\n\n\t  https://gitlab.com/cryptsetup/cryptsetup\n\ncomment \"cryptsetup needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/cryptsetup/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_CRYPTSETUP\n\tbool \"host cryptsetup\"\n\tselect BR2_PACKAGE_HOST_UTIL_LINUX\n\thelp\n\t  This tool helps manipulate dm-crypt and luks partitions for\n\t  on-disk encryption.\n\n\t  https://gitlab.com/cryptsetup/cryptsetup\n"
  },
  {
    "path": "package/cryptsetup/cryptsetup.hash",
    "content": "# From https://www.kernel.org/pub/linux/utils/cryptsetup/v2.3/sha256sums.asc\nsha256  b296b7a21ea576c2b180611ccb19d06aec8dddaedf7c704b0c6a81210c25635f  cryptsetup-2.3.6.tar.xz\nsha256  45670cce8b6a0ddd66c8016cd8ccef6cd71f35717cbacc7f1e895b3855207b33  COPYING\nsha256  8c33cc37871654ec7ed87e6fbb896c8cf33ef5ef05b1611a5aed857596ffafa5  COPYING.LGPL\n"
  },
  {
    "path": "package/cryptsetup/cryptsetup.mk",
    "content": "################################################################################\n#\n# cryptsetup\n#\n################################################################################\n\nCRYPTSETUP_VERSION_MAJOR = 2.3\nCRYPTSETUP_VERSION = $(CRYPTSETUP_VERSION_MAJOR).6\nCRYPTSETUP_SOURCE = cryptsetup-$(CRYPTSETUP_VERSION).tar.xz\nCRYPTSETUP_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/cryptsetup/v$(CRYPTSETUP_VERSION_MAJOR)\nCRYPTSETUP_DEPENDENCIES = \\\n\tlvm2 popt host-pkgconf json-c libargon2 \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS),util-linux-libs,util-linux) \\\n\t$(TARGET_NLS_DEPENDENCIES)\nCRYPTSETUP_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (library)\nCRYPTSETUP_LICENSE_FILES = COPYING COPYING.LGPL\nCRYPTSETUP_CPE_ID_VENDOR = cryptsetup_project\nCRYPTSETUP_INSTALL_STAGING = YES\nCRYPTSETUP_CONF_ENV += LDFLAGS=\"$(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\"\nCRYPTSETUP_CONF_OPTS += --enable-blkid --enable-libargon2\n\n# cryptsetup uses libgcrypt by default, but can be configured to use OpenSSL\n# or kernel crypto modules instead\nifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nCRYPTSETUP_DEPENDENCIES += libgcrypt\nCRYPTSETUP_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config\nCRYPTSETUP_CONF_OPTS += --with-crypto_backend=gcrypt\nelse ifeq ($(BR2_PACKAGE_OPENSSL),y)\nCRYPTSETUP_DEPENDENCIES += openssl\nCRYPTSETUP_CONF_OPTS += --with-crypto_backend=openssl\nelse\nCRYPTSETUP_CONF_OPTS += --with-crypto_backend=kernel\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_TMPFILES),y)\nCRYPTSETUP_CONF_OPTS += --with-tmpfilesdir=/usr/lib/tmpfiles.d\nelse\nCRYPTSETUP_CONF_OPTS += --without-tmpfilesdir\nendif\n\nHOST_CRYPTSETUP_DEPENDENCIES = \\\n\thost-pkgconf \\\n\thost-lvm2 \\\n\thost-popt \\\n\thost-util-linux \\\n\thost-json-c \\\n\thost-openssl\n\nHOST_CRYPTSETUP_CONF_OPTS = --with-crypto_backend=openssl \\\n\t--disable-kernel_crypto \\\n\t--enable-blkid \\\n\t--with-tmpfilesdir=no\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/ctorrent/0001-fix-musl-build.patch",
    "content": "[PATCH] Fix compilation on musl\n\nUsing the ssize_t typedef requires including <unistd.h>. \n\nSee : https://sourceforge.net/p/dtorrent/patches/3/\n\nSigned-off-by: Brendan Heading <brendanheading@gmail.com>\nUpstream-status: submitted\n---\ndiff -Nur a/compat.c b/compat.c\n--- a/compat.c\t2015-07-29 18:22:24.658415171 +0100\n+++ b/compat.c\t2015-07-29 18:36:21.752576311 +0100\n@@ -63,6 +63,7 @@\n \n #ifndef HAVE_STRNSTR\n #include <string.h>\n+#include <unistd.h>\n /* FUNCTION PROGRAMER: Siberiaic Sang */\n char *strnstr(const char *haystack, const char *needle, size_t haystacklen)\n {\n"
  },
  {
    "path": "package/ctorrent/Config.in",
    "content": "comment \"ctorrent needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_CTORRENT\n\tbool \"ctorrent\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  CTorrent is a BitTorrent client implemented in C++\n\t  to be lightweight and quick.\n\t  http://ctorrent.sourceforge.net/\n\n\t  This is the enhanced version from\n\t  http://www.rahul.net/dholmes/ctorrent/\n"
  },
  {
    "path": "package/ctorrent/ctorrent.hash",
    "content": "# From http://sourceforge.net/projects/dtorrent/files/dtorrent/3.3.2/\nsha1\td4e221f0292268f80e2430ce9d451dd64cf1ffaa\tctorrent-dnh3.3.2.tar.gz\n\n# locally calculated\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/ctorrent/ctorrent.mk",
    "content": "################################################################################\n#\n# ctorrent\n#\n################################################################################\n\nCTORRENT_VERSION = dnh3.3.2\nCTORRENT_SITE = http://www.rahul.net/dholmes/ctorrent\nCTORRENT_LICENSE = GPL-2.0\nCTORRENT_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nCTORRENT_CONF_OPTS += --with-ssl=yes\nCTORRENT_DEPENDENCIES += openssl\nelse\nCTORRENT_CONF_OPTS += --with-ssl=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/cukinia/Config.in",
    "content": "config BR2_PACKAGE_CUKINIA\n\tbool \"cukinia\"\n\tdepends on BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_GAWK\n\thelp\n\t  Cukinia is designed to help Linux-based embedded firmware\n\t  developers run system-level validation tests on their product.\n\t  It provides a simple POSIX shell overlay, and primitives to\n\t  make sure system integrations and features keep behaving the\n\t  way they should.\n\n\t  By default, cukinia reports colorized test results on stdout,\n\t  but can also report them as CSV and JUnit-XML for easy\n\t  integration with CI systems such as Jenkins.\n\n\t  https://github.com/savoirfairelinux/cukinia\n\ncomment \"cukinia needs busybox or gawk\"\n\tdepends on !(BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_GAWK)\n"
  },
  {
    "path": "package/cukinia/cukinia.conf",
    "content": "# Note: Cukinia will produce colorized output if the TERM environment\n# variable matches vt220, xterm or linux.\ncukinia_log $(_colorize blue \"############# Cukinia tests ##############\")\ncukinia_user root\n"
  },
  {
    "path": "package/cukinia/cukinia.hash",
    "content": "# locally computed\nsha256  b867ec63e448e7fa0a9276f6844a8b3a8f92d99e63e8518fe24e9debd32679b5  cukinia-0.5.1.tar.gz\nsha256  b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1  LICENSE\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPLv3\n"
  },
  {
    "path": "package/cukinia/cukinia.mk",
    "content": "################################################################################\n#\n# cukinia\n#\n################################################################################\n\nCUKINIA_VERSION = 0.5.1\nCUKINIA_SITE = $(call github,savoirfairelinux,cukinia,v$(CUKINIA_VERSION))\nCUKINIA_LICENSE = Apache-2.0 or GPL-3.0\nCUKINIA_LICENSE_FILES = LICENSE LICENSE.GPLv3\n\ndefine CUKINIA_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/cukinia $(TARGET_DIR)/usr/bin/cukinia\n\t$(INSTALL) -D -m 0644 $(CUKINIA_PKGDIR)/cukinia.conf \\\n\t\t$(TARGET_DIR)/etc/cukinia/cukinia.conf\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/cunit/Config.in",
    "content": "config BR2_PACKAGE_CUNIT\n\tbool \"cunit\"\n\thelp\n\t  An automated testing framework in 'C'.\n\n\t  http://cunit.sourceforge.net/\n"
  },
  {
    "path": "package/cunit/cunit.hash",
    "content": "# Locally calculated:\nsha256 f5b29137f845bb08b77ec60584fdb728b4e58f1023e6f249a464efa49a40f214  CUnit-2.1-3.tar.bz2\nsha256 5d9d73d41a57dd2f34487ef3978a2c13cdb97294baeeb81fcd274796399eb15f  COPYING\n"
  },
  {
    "path": "package/cunit/cunit.mk",
    "content": "################################################################################\n#\n# cunit\n#\n################################################################################\n\nCUNIT_VERSION = 2.1-3\nCUNIT_SITE = http://downloads.sourceforge.net/project/cunit/CUnit/$(CUNIT_VERSION)\nCUNIT_SOURCE = CUnit-$(CUNIT_VERSION).tar.bz2\nCUNIT_INSTALL_STAGING = YES\nCUNIT_LICENSE = LGPL-2.0+\nCUNIT_LICENSE_FILES = COPYING\n\n# The source archive does not have the autoconf/automake material generated.\nCUNIT_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/cups/0001-Remove-man-from-BUILDDIRS-in-configure.patch",
    "content": "From 6bc1d15250841cf17d307cfb4f35c960c23d8797 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sun, 29 May 2016 19:31:50 +0200\nSubject: [PATCH] Remove man from BUILDDIRS in configure\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Fabrice: updated for 2.3.0]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Michael: updated for 2.3.3]\nSigned-off-by: Michael Trimarchi <michael@amarulasolutions.com>\n---\n config-scripts/cups-common.m4 | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/config-scripts/cups-common.m4 b/config-scripts/cups-common.m4\nindex a460a73..d427acb 100644\n--- a/config-scripts/cups-common.m4\n+++ b/config-scripts/cups-common.m4\n@@ -434,7 +434,7 @@ LIBHEADERSPRIV=\"\\$(COREHEADERSPRIV) \\$(DRIVERHEADERSPRIV)\"\n \n case \"$COMPONENTS\" in\n \tall)\n-\t\tBUILDDIRS=\"tools filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates\"\n+\t\tBUILDDIRS=\"tools filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale doc examples templates\"\n \t\t;;\n \n \tcore)\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/cups/0002-Do-not-use-genstrings.patch",
    "content": "From 193c8d8c55a3478ca5c9e161ce581e5794098c6d Mon Sep 17 00:00:00 2001\nFrom: Olivier Schonken <olivier.schonken@gmail.com>\nDate: Thu, 21 Jan 2016 23:04:49 +0100\nSubject: [PATCH] Do not use genstrings\n\nUsing cross compiled genstrings while cross-compiling will break\ncompilation.  Genstrings is still compiled because some power users\nmight want to do ppd compilation on their target machine, and for that\nthey would need to use the native compiled genstrings binary, to\ngenerate a sample.c file for their target\n\nSigned-off-by: Olivier Schonken <olivier.schonken@gmail.com>\n[Thomas: completely remove call to genstrings rather than commenting\nit, remove useless and potentially confusing 'echo' before the\ngenstrings call.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Fabrice: updated for 2.3.0]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Michael: updated for 2.3.3]\nSigned-off-by: Michael Trimarchi <michael@amarulasolutions.com>\n---\n ppdc/Makefile | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/ppdc/Makefile b/ppdc/Makefile\nindex 32e2e0b..7b18879 100644\n--- a/ppdc/Makefile\n+++ b/ppdc/Makefile\n@@ -186,8 +186,6 @@ genstrings:\t\tgenstrings.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) \\\n \t$(LD_CXX) $(ARCHFLAGS) $(ALL_LDFLAGS) -o genstrings genstrings.o \\\n \t\tlibcupsppdc.a $(LINKCUPSSTATIC)\n \t$(CODE_SIGN) -s \"$(CODE_SIGN_IDENTITY)\" $@\n-\techo Generating localization strings...\n-\t./genstrings >sample.c\n \n \n #\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/cups/0003-Sanitize-the-installation-process.patch",
    "content": "From e35f809c435c224954a5c7bff3f5729c5b3bc0ba Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Thu, 21 Jan 2016 23:21:06 +0100\nSubject: [PATCH] Sanitize the installation process\n\nThe installation process does two things that are not convenient when\ncross-compiling:\n\n - It uses install's -s option to strip binaries, but this option uses\n   the host strip and not the cross strip, which fails at stripping\n   binaries. In addition, we do not necessarily want cups to strip its\n   binaries, we may want to keep the debugging symbols.\n\n - It enforces ownership (user, group) which isn't possible since\n   \"make install\" isn't executed as root when cross-compiling.\n\n - It installs many files and directories with permissions that\n   prevent overwriting those files/directories, which meant calling\n   \"make install\" twice was failing.\n\n[Olivier: tweak the patch for 2.2.4 release]\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Olivier Schonken <olivier.schonken@gmail.com>\n---\n Makedefs.in        | 12 ++++++------\n conf/Makefile      |  6 +++---\n notifier/Makefile  |  2 +-\n scheduler/Makefile | 15 +++++++--------\n 4 files changed, 17 insertions(+), 18 deletions(-)\n\ndiff --git a/Makedefs.in b/Makedefs.in\nindex 3afef0a..3e4f1bd 100644\n--- a/Makedefs.in\n+++ b/Makedefs.in\n@@ -40,14 +40,14 @@ SHELL\t\t=\t/bin/sh\n # Installation programs...\n #\n \n-INSTALL_BIN\t=\t@LIBTOOL_INSTALL@ $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@ @INSTALL_STRIP@\n-INSTALL_COMPDATA =\t$(INSTALL) -c -m 444 @INSTALL_GZIP@\n+INSTALL_BIN\t=\t@LIBTOOL_INSTALL@ $(INSTALL) -c -m 755\n+INSTALL_COMPDATA =\t$(INSTALL) -c -m 644 @INSTALL_GZIP@\n INSTALL_CONFIG\t=\t$(INSTALL) -c -m @CUPS_CONFIG_FILE_PERM@\n-INSTALL_DATA\t=\t$(INSTALL) -c -m 444\n+INSTALL_DATA\t=\t$(INSTALL) -c -m 644\n INSTALL_DIR\t=\t$(INSTALL) -d\n-INSTALL_LIB\t=\t@LIBTOOL_INSTALL@ $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@ @INSTALL_STRIP@\n-INSTALL_MAN\t=\t$(INSTALL) -c -m 444\n-INSTALL_SCRIPT\t=\t$(INSTALL) -c -m @CUPS_EXE_FILE_PERM@\n+INSTALL_LIB\t=\t@LIBTOOL_INSTALL@ $(INSTALL) -c -m 755\n+INSTALL_MAN\t=\t$(INSTALL) -c -m 644\n+INSTALL_SCRIPT\t=\t$(INSTALL) -c -m 755\n \n #\n # Default user, group, and system groups for the scheduler...\ndiff --git a/conf/Makefile b/conf/Makefile\nindex 933d7d9..6ac5e19 100644\n--- a/conf/Makefile\n+++ b/conf/Makefile\n@@ -72,11 +72,11 @@ install:\tall install-data install-headers install-libs install-exec\n install-data:\n \tfor file in $(KEEP); do \\\n \t\tif test -r $(SERVERROOT)/$$file ; then \\\n-\t\t\t$(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT)/$$file.N ; \\\n+\t\t\t$(INSTALL_CONFIG) $$file $(SERVERROOT)/$$file.N ; \\\n \t\telse \\\n-\t\t\t$(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT) ; \\\n+\t\t\t$(INSTALL_CONFIG) $$file $(SERVERROOT) ; \\\n \t\tfi ; \\\n-\t\t$(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT)/$$file.default; \\\n+\t\t$(INSTALL_CONFIG) $$file $(SERVERROOT)/$$file.default; \\\n \tdone\n \t$(INSTALL_DIR) -m 755 $(DATADIR)/mime\n \tfor file in $(REPLACE); do \\\ndiff --git a/notifier/Makefile b/notifier/Makefile\nindex 3206dd0..c34a4d7 100644\n--- a/notifier/Makefile\n+++ b/notifier/Makefile\n@@ -62,7 +62,7 @@ install:\tall install-data install-headers install-libs install-exec\n #\n \n install-data:\n-\t$(INSTALL_DIR) -m 775 -g $(CUPS_GROUP) $(CACHEDIR)/rss\n+\t$(INSTALL_DIR) -m 775 $(CACHEDIR)/rss\n \n \n #\ndiff --git a/scheduler/Makefile b/scheduler/Makefile\nindex 251f017..25f2f5f 100644\n--- a/scheduler/Makefile\n+++ b/scheduler/Makefile\n@@ -146,28 +146,27 @@ install-data:\n \techo Creating $(SERVERBIN)/driver...\n \t$(INSTALL_DIR) -m 755 $(SERVERBIN)/driver\n \techo Creating $(SERVERROOT)...\n-\t$(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT)\n+\t$(INSTALL_DIR) -m 755 $(SERVERROOT)\n \techo Creating $(SERVERROOT)/ppd...\n-\t$(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT)/ppd\n+\t$(INSTALL_DIR) -m 755 $(SERVERROOT)/ppd\n \tif test \"x`uname`\" != xDarwin; then \\\n \t\techo Creating $(SERVERROOT)/ssl...; \\\n-\t\t$(INSTALL_DIR) -m 700 -g $(CUPS_GROUP) $(SERVERROOT)/ssl; \\\n+\t\t$(INSTALL_DIR) -m 700 $(SERVERROOT)/ssl; \\\n \tfi\n \tif test \"$(STATEDIR)\" != \"$(SERVERROOT)\"; then \\\n \t\techo Creating $(STATEDIR)...; \\\n \t\t$(INSTALL_DIR) -m 755 $(STATEDIR); \\\n \tfi\n \techo Creating $(STATEDIR)/certs...\n-\t$(INSTALL_DIR) -m 511 -o $(CUPS_USER) -g $(CUPS_PRIMARY_SYSTEM_GROUP) \\\n-\t\t$(STATEDIR)/certs\n+\t$(INSTALL_DIR) -m 711 $(STATEDIR)/certs\n \techo Creating $(LOGDIR)...\n \t$(INSTALL_DIR) -m 755 $(LOGDIR)\n \techo Creating $(REQUESTS)...\n-\t$(INSTALL_DIR) -m 710 -g $(CUPS_GROUP) $(REQUESTS)\n+\t$(INSTALL_DIR) -m 710 $(REQUESTS)\n \techo Creating $(REQUESTS)/tmp...\n-\t$(INSTALL_DIR) -m 1770 -g $(CUPS_GROUP) $(REQUESTS)/tmp\n+\t$(INSTALL_DIR) -m 1770 $(REQUESTS)/tmp\n \techo Creating $(CACHEDIR)...\n-\t$(INSTALL_DIR) -m 770 -g $(CUPS_GROUP) $(CACHEDIR)\n+\t$(INSTALL_DIR) -m 770 $(CACHEDIR)\n \tif test \"x$(INITDIR)\" != x; then \\\n \t\techo Installing init scripts...; \\\n \t\t$(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/init.d; \\\n-- \n2.6.4\n\n"
  },
  {
    "path": "package/cups/0004-Remove-PIE-flags-from-the-build.patch",
    "content": "From b341a1e1fce48012fc5bcf39337488fd33210616 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sun, 3 Jul 2016 12:20:21 +0200\nSubject: [PATCH] Remove PIE flags from the build\n\nGenerating a statically linked binary built with PIE requires the\nScrt1.o file, which isn't part of Buildroot uClibc toolchains. To\nsolve this, we simply disable the PIE flags.\n\n[olivier tweak patch for 2.2.4]\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Olivier Schonken <olivier.schonken@gmail.com>\n[Fabrice: updated for 2.3.0]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Michael: updated for 2.3.3]\nSigned-off-by: Michael Trimarchi <michael@amarulasolutions.com>\n---\n Makedefs.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makedefs.in b/Makedefs.in\nindex 5f1d32f..d669ea8 100644\n--- a/Makedefs.in\n+++ b/Makedefs.in\n@@ -155,7 +155,7 @@ ALL_CXXFLAGS\t=\t-I.. -D_CUPS_SOURCE $(CXXFLAGS) \\\n \t\t\t$(ONDEMANDFLAGS) $(OPTIONS)\n ALL_DSOFLAGS\t=\t-L../cups @ARCHFLAGS@ @RELROFLAGS@ $(DSOFLAGS) $(OPTIM)\n ALL_LDFLAGS\t=\t-L../cups @LDARCHFLAGS@ @RELROFLAGS@ $(LDFLAGS)  \\\n-\t\t\t@PIEFLAGS@ $(OPTIM)\n+\t\t\t$(OPTIM)\n ARCHFLAGS\t=\t@ARCHFLAGS@\n ARFLAGS\t\t=\t@ARFLAGS@\n BACKLIBS\t=\t@BACKLIBS@\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/cups/70-usb-printers.rules",
    "content": "# Allow USB printers in the lp group\n# Match rules converted from usblp.c driver's usblp_ids\nACTION==\"add\", SUBSYSTEM==\"usb\", ATTR{bInterfaceClass}==\"07\", ATTR{bInterfaceSubClass}==\"01\", GROUP=\"lp\"\n"
  },
  {
    "path": "package/cups/Config.in",
    "content": "config BR2_PACKAGE_CUPS\n\tbool \"cups\"\n\t# needs libstdcpp for ppdc\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\t# needs threads for ippserver\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# needs fork()\n\tdepends on BR2_USE_MMU\n\thelp\n\t  The Common Unix Printing System\n\n\t  http://www.cups.org\n\ncomment \"cups needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/cups/S81cupsd",
    "content": "#!/bin/sh\n\nDAEMON=\"cupsd\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -b -m -S -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \\\n\t\t-- -C /etc/cups/cupsd.conf -s /etc/cups/cups-files\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/cups/cups.hash",
    "content": "# Locally calculated:\nsha256  deb3575bbe79c0ae963402787f265bfcf8d804a71fc2c94318a74efec86f96df  cups-2.3.3op2-source.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\nsha256  1f8e5879fb8b15e3ee5111809fd3ca22c606d0897d6b5e74329e480c348e034d  NOTICE\n"
  },
  {
    "path": "package/cups/cups.mk",
    "content": "################################################################################\n#\n# cups\n#\n################################################################################\n\nCUPS_VERSION = 2.3.3op2\nCUPS_SOURCE = cups-$(CUPS_VERSION)-source.tar.gz\nCUPS_SITE = https://github.com/OpenPrinting/cups/releases/download/v$(CUPS_VERSION)\nCUPS_LICENSE = Apache-2.0 with GPL-2.0/LGPL-2.0 exception\nCUPS_LICENSE_FILES = LICENSE NOTICE\nCUPS_CPE_ID_VENDOR = cups\nCUPS_SELINUX_MODULES = cups\nCUPS_INSTALL_STAGING = YES\n\n# Using autoconf, not autoheader, so we cannot use AUTORECONF = YES.\ndefine CUPS_RUN_AUTOCONF\n\tcd $(@D); $(AUTOCONF) -f\nendef\nCUPS_PRE_CONFIGURE_HOOKS += CUPS_RUN_AUTOCONF\n\nCUPS_CONF_OPTS = \\\n\t--with-docdir=/usr/share/cups/doc-root \\\n\t--disable-gssapi \\\n\t--disable-pam \\\n\t--libdir=/usr/lib \\\n\t--with-cups-user=lp \\\n\t--with-cups-group=lp \\\n\t--with-system-groups=\"lpadmin sys root\" \\\n\t--without-rcdir\nCUPS_CONFIG_SCRIPTS = cups-config\nCUPS_DEPENDENCIES = \\\n\thost-autoconf \\\n\thost-pkgconf \\\n\t$(if $(BR2_PACKAGE_ZLIB),zlib)\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nCUPS_CONF_OPTS += --with-systemd=/usr/lib/systemd/system \\\n\t--enable-systemd\nCUPS_DEPENDENCIES += systemd\nelse\nCUPS_CONF_OPTS += --disable-systemd\nendif\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nCUPS_CONF_OPTS += --enable-dbus\nCUPS_DEPENDENCIES += dbus\nelse\nCUPS_CONF_OPTS += --disable-dbus\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nCUPS_CONF_OPTS += --enable-gnutls\nCUPS_DEPENDENCIES += gnutls\nelse\nCUPS_CONF_OPTS += --disable-gnutls\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nCUPS_CONF_OPTS += --enable-libusb\nCUPS_DEPENDENCIES += libusb\nelse\nCUPS_CONF_OPTS += --disable-libusb\nendif\n\nifeq ($(BR2_PACKAGE_LIBPAPER),y)\nCUPS_CONF_OPTS += --enable-libpaper\nCUPS_DEPENDENCIES += libpaper\nelse\nCUPS_CONF_OPTS += --disable-libpaper\nendif\n\nifeq ($(BR2_PACKAGE_AVAHI),y)\nCUPS_DEPENDENCIES += avahi\nCUPS_CONF_OPTS += --enable-avahi\nelse\nCUPS_CONF_OPTS += --disable-avahi\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\ndefine CUPS_INSTALL_UDEV_RULES\n\t$(INSTALL) -D -m 0644 package/cups/70-usb-printers.rules \\\n\t\t$(TARGET_DIR)/lib/udev/rules.d/70-usb-printers.rules\nendef\n\nCUPS_POST_INSTALL_TARGET_HOOKS += CUPS_INSTALL_UDEV_RULES\nendif\n\ndefine CUPS_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/cups/S81cupsd \\\n\t\t$(TARGET_DIR)/etc/init.d/S81cupsd\nendef\n\n# lp user is needed to run cups spooler\n# lpadmin group membership grants administrative privileges\ndefine CUPS_USERS\n\tlp -1 lp -1 * /var/spool/lpd /bin/false - lp\n\t- - lpadmin -1 * - - - Printers admin group.\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/cups-filters/Config.in",
    "content": "config BR2_PACKAGE_CUPS_FILTERS\n\tbool \"cups-filters\"\n\t# needs fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_INSTALL_LIBSTDCPP # qpdf\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR # libglib2, qpdf\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_PACKAGE_CUPS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_LCMS2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_QPDF\n\thelp\n\t  This project provides backends, filters, and other software\n\t  that was once part of the core CUPS distribution but is no\n\t  longer maintained by Apple Inc. In addition it contains\n\t  additional filters and software developed independently of\n\t  Apple, especially filters for the PDF-centric printing\n\t  workflow introduced by OpenPrinting and a daemon to browse\n\t  Bonjour broadcasts of remote CUPS printers to make these\n\t  printers available locally and to provide backward\n\t  compatibility to the old CUPS broadcasting and browsing of\n\t  CUPS 1.5.x and older.  From CUPS 1.6.0 on, this package is\n\t  required for using printer drivers with CUPS under Linux.\n\t  With CUPS 1.5.x and earlier this package can be used\n\t  optionally to switch over to PDF-based printing.\n\n\t  http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters\n\ncomment \"cups-filters needs a toolchain w/ wchar, C++, threads and dynamic library, gcc >= 4.8\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_USE_WCHAR || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/cups-filters/S82cups-browsed",
    "content": "#!/bin/sh\n\nDAEMON=\"cups-browsed\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -b -m -S -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \\\n\t\t-- -c /etc/cups/cups-browsed.conf\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/cups-filters/cups-filters.hash",
    "content": "# Locally computed:\nsha256 5bad0b931f8293082f8773b34d5c4fed66415d2bf268b0798889e5f593c0ba61  cups-filters-1.28.9.tar.gz\nsha256 38192ffdaca98b718f78b2d4abc38bb087f0bbcc9a16d212c98b903b985f900f  COPYING\n"
  },
  {
    "path": "package/cups-filters/cups-filters.mk",
    "content": "################################################################################\n#\n# cups-filters\n#\n################################################################################\n\nCUPS_FILTERS_VERSION = 1.28.9\nCUPS_FILTERS_SITE = http://openprinting.org/download/cups-filters\nCUPS_FILTERS_LICENSE = GPL-2.0, GPL-2.0+, GPL-3.0, GPL-3.0+, LGPL-2, LGPL-2.1+, MIT, BSD-4-Clause\nCUPS_FILTERS_LICENSE_FILES = COPYING\nCUPS_FILTERS_CPE_ID_VENDOR = linuxfoundation\n\nCUPS_FILTERS_DEPENDENCIES = cups libglib2 lcms2 qpdf fontconfig freetype jpeg\n\nCUPS_FILTERS_CONF_OPTS = \\\n\t--disable-mutool \\\n\t--disable-foomatic \\\n\t--disable-braille \\\n\t--enable-imagefilters \\\n\t--with-cups-config=$(STAGING_DIR)/usr/bin/cups-config \\\n\t--with-sysroot=$(STAGING_DIR) \\\n\t--with-pdftops=pdftops \\\n\t--with-jpeg \\\n\t--with-test-font-path=/dev/null \\\n\t--without-rcdir\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nCUPS_FILTERS_CONF_OPTS += --with-png\nCUPS_FILTERS_DEPENDENCIES += libpng\nelse\nCUPS_FILTERS_CONF_OPTS += --without-png\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nCUPS_FILTERS_CONF_OPTS += --with-tiff\nCUPS_FILTERS_DEPENDENCIES += tiff\nelse\nCUPS_FILTERS_CONF_OPTS += --without-tiff\nendif\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nCUPS_FILTERS_CONF_OPTS += --enable-dbus\nCUPS_FILTERS_DEPENDENCIES += dbus\nelse\nCUPS_FILTERS_CONF_OPTS += --disable-dbus\nendif\n\n# avahi support requires avahi-client, which needs avahi-daemon and dbus\nifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy)\nCUPS_FILTERS_DEPENDENCIES += avahi\nCUPS_FILTERS_CONF_OPTS += --enable-avahi\nelse\nCUPS_FILTERS_CONF_OPTS += --disable-avahi\nendif\n\nifeq ($(BR2_PACKAGE_GHOSTSCRIPT),y)\nCUPS_FILTERS_DEPENDENCIES += ghostscript\nCUPS_FILTERS_CONF_OPTS += --enable-ghostscript\nelse\nCUPS_FILTERS_CONF_OPTS += --disable-ghostscript\nendif\n\nifeq ($(BR2_PACKAGE_IJS),y)\nCUPS_FILTERS_DEPENDENCIES += ijs\nCUPS_FILTERS_CONF_OPTS += --enable-ijs\nelse\nCUPS_FILTERS_CONF_OPTS += --disable-ijs\nendif\n\nifeq ($(BR2_PACKAGE_POPPLER),y)\nCUPS_FILTERS_DEPENDENCIES += poppler\nCUPS_FILTERS_CONF_OPTS += --enable-poppler\nelse\nCUPS_FILTERS_CONF_OPTS += --disable-poppler\nendif\n\ndefine CUPS_FILTERS_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/cups-filters/S82cups-browsed \\\n\t\t$(TARGET_DIR)/etc/init.d/S82cups-browsed\nendef\n\ndefine CUPS_FILTERS_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0755 $(@D)/utils/cups-browsed.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/cups-browsed.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/curlftpfs/0001-fix-CURLOPT_INFILESIZE.patch",
    "content": "Borrowed from the curlftpfs_0.9.2-5 Debian package.\n\nCURLOPT_INFILESIZE does not support -1 arg. This fix bug #556012.\n--- curlftpfs-0.9.2/ftpfs.c.old\t2009-12-13 14:12:25.000000000 +0100\n+++ curlftpfs-0.9.2/ftpfs.c\t2009-12-13 14:12:32.000000000 +0100\n@@ -503,7 +503,6 @@\n   \n   curl_easy_setopt_or_die(fh->write_conn, CURLOPT_URL, fh->full_path);\n   curl_easy_setopt_or_die(fh->write_conn, CURLOPT_UPLOAD, 1);\n-  curl_easy_setopt_or_die(fh->write_conn, CURLOPT_INFILESIZE, -1);\n   curl_easy_setopt_or_die(fh->write_conn, CURLOPT_READFUNCTION, write_data_bg);\n   curl_easy_setopt_or_die(fh->write_conn, CURLOPT_READDATA, fh);\n   curl_easy_setopt_or_die(fh->write_conn, CURLOPT_LOW_SPEED_LIMIT, 1);\n"
  },
  {
    "path": "package/curlftpfs/0002-free_ftpfs_file-memleak-fix.patch",
    "content": "Borrowed from the curlftpfs_0.9.2-5 Debian package.\n\nFix a memory leak. See Bug #587250.\n--- a/ftpfs.c\t2008-04-30 01:05:47.000000000 +0200\n+++ a/ftpfs.c.slesimple\t2010-01-01 22:12:10.000000000 +0100\n@@ -615,6 +615,8 @@ static void free_ftpfs_file(struct ftpfs\n   sem_destroy(&fh->data_need);\n   sem_destroy(&fh->data_written);\n   sem_destroy(&fh->ready);\n+  if (fh->buf.size) { buf_free(&fh->buf); }\n+  if (fh->stream_buf.size) { buf_free(&fh->stream_buf); }\n   free(fh);\n }\n \n"
  },
  {
    "path": "package/curlftpfs/0003-nocache-memleak-fix.patch",
    "content": "Borrowed from the curlftpfs_0.9.2-5 Debian package.\n\nFix a memory leak when cache is disabled. Closes: #614347.\ndiff -ur curlftpfs-0.9.2/cache.c curlftpfs-0.9.2-olexat/cache.c\n--- curlftpfs-0.9.2/cache.c\t2008-04-30 01:03:09.000000000 +0200\n+++ curlftpfs-0.9.2-olexat/cache.c\t2011-02-04 16:43:05.000000000 +0100\n@@ -25,7 +25,7 @@\n     time_t last_cleaned;\n };\n \n-static struct cache cache;\n+struct cache cache;\n \n struct node {\n     struct stat stat;\ndiff -ur curlftpfs-0.9.2/ftpfs-ls.c curlftpfs-0.9.2-olexat/ftpfs-ls.c\n--- curlftpfs-0.9.2/ftpfs-ls.c\t2008-04-23 12:55:41.000000000 +0200\n+++ curlftpfs-0.9.2-olexat/ftpfs-ls.c\t2011-02-07 17:23:37.000000000 +0100\n@@ -25,6 +25,13 @@\n #include \"charset_utils.h\"\n #include \"ftpfs-ls.h\"\n \n+struct cache {\n+    int on;\n+    char incomplete[];\n+};\n+\n+extern struct cache cache;\n+\n static int parse_dir_unix(const char *line,\n                           struct stat *sbuf,\n                           char *file,\n@@ -243,8 +256,10 @@\n           reallink = g_strdup(link);\n         }\n         int linksize = strlen(reallink);\n-        cache_add_link(full_path, reallink, linksize+1);\n-        DEBUG(1, \"cache_add_link: %s %s\\n\", full_path, reallink);\n+        if (cache.on) {\n+          cache_add_link(full_path, reallink, linksize+1);\n+          DEBUG(1, \"cache_add_link: %s %s\\n\", full_path, reallink);\n+        }\n         if (linkbuf && linklen) {\n           if (linksize > linklen) linksize = linklen - 1;\n           strncpy(linkbuf, reallink, linksize);\n@@ -257,8 +272,10 @@\n         DEBUG(1, \"filler: %s\\n\", file);\n         filler(h, file, &stat_buf);\n       } else {\n-        DEBUG(1, \"cache_add_attr: %s\\n\", full_path);\n-        cache_add_attr(full_path, &stat_buf);\n+        if (cache.on) {\n+          DEBUG(1, \"cache_add_attr: %s\\n\", full_path);\n+          cache_add_attr(full_path, &stat_buf);\n+        }\n       }\n \n       DEBUG(2, \"comparing %s %s\\n\", name, file);\n\n"
  },
  {
    "path": "package/curlftpfs/0004-fix-musl-build-off-t.patch",
    "content": "Use off_t instead of __off_t\n\n__off_t is an internal C library type, which shouldn't be used by\napplications. It is not defined by the musl C library, so use the\npublic off_t type instead.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/ftpfs.c\n===================================================================\n--- a/ftpfs.c\n+++ b/ftpfs.c\n@@ -687,7 +687,7 @@\n \treturn ftpfs_getattr(path, &sbuf);\n }\n \n-static __off_t test_size(const char* path)\n+static off_t test_size(const char* path)\n {\n \tstruct stat sbuf;\n \tint err = ftpfs_getattr(path, &sbuf);\n@@ -950,7 +950,7 @@\n \n   /* fix openoffice problem, truncating exactly to file length */\n   \n-  __off_t size = (long long int)test_size(path); \n+  off_t size = (long long int)test_size(path); \n   DEBUG(1, \"ftpfs_truncate: %s check filesize=%lld\\n\", path, (long long int)size);\n   \n   if (offset == size)  \n@@ -978,7 +978,7 @@\n   }\n   /* fix openoffice problem, truncating exactly to file length */\n   \n-  __off_t size = test_size(path); \n+  off_t size = test_size(path); \n   DEBUG(1, \"ftpfs_ftruncate: %s check filesize=%lld\\n\", path, (long long int)size);\n   \n   if (offset == size)  \n"
  },
  {
    "path": "package/curlftpfs/Config.in",
    "content": "config BR2_PACKAGE_CURLFTPFS\n\tbool \"curlftpfs (FUSE)\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libfuse, glib2\n\tdepends on BR2_USE_MMU # libfuse, glib2\n\tdepends on !BR2_STATIC_LIBS # libfuse\n\tselect BR2_PACKAGE_LIBFUSE\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  CurlFtpFS is a filesystem for accessing FTP hosts based on\n\t  FUSE and libcurl.\n\n\t  http://curlftpfs.sourceforge.net/\n\ncomment \"curlftpfs needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/curlftpfs/curlftpfs.hash",
    "content": "# Locally computed:\nsha256  4eb44739c7078ba0edde177bdd266c4cfb7c621075f47f64c85a06b12b3c6958  curlftpfs-0.9.2.tar.gz\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/curlftpfs/curlftpfs.mk",
    "content": "################################################################################\n#\n# curlftpfs\n#\n################################################################################\n\nCURLFTPFS_VERSION = 0.9.2\nCURLFTPFS_SITE = http://downloads.sourceforge.net/project/curlftpfs/curlftpfs/$(CURLFTPFS_VERSION)\nCURLFTPFS_CONF_ENV = ac_cv_path__libcurl_config=$(STAGING_DIR)/usr/bin/curl-config\nCURLFTPFS_LICENSE = GPL-2.0\nCURLFTPFS_LICENSE_FILES = COPYING\nCURLFTPFS_DEPENDENCIES = \\\n\tlibglib2 libfuse openssl libcurl \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\t$(if $(BR2_ENABLE_LOCALE),,libiconv)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/curlpp/Config.in",
    "content": "config BR2_PACKAGE_CURLPP\n\tbool \"curlpp\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  cURLpp is a C++ wrapper for libcURL.\n\n\t  http://www.curlpp.org/\n\ncomment \"curlpp needs a toolchain w/ C++, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/curlpp/curlpp.hash",
    "content": "# Locally computed:\nsha256 97e3819bdcffc3e4047b6ac57ca14e04af85380bd93afe314bee9dd5c7f46a0a  v0.8.1.tar.gz\n\n# Hash for license files:\nsha256 8b9e3afd4d06ad3c169e788e5187a3e9f4f35671e9a7322f7e74bea9643b5b5a  doc/LICENSE\n"
  },
  {
    "path": "package/curlpp/curlpp.mk",
    "content": "################################################################################\n#\n# curlpp\n#\n################################################################################\n\nCURLPP_VERSION = 0.8.1\nCURLPP_SITE = https://github.com/jpbarrette/curlpp/archive\nCURLPP_SOURCE = v$(CURLPP_VERSION).tar.gz\nCURLPP_LICENSE = MIT\nCURLPP_LICENSE_FILES = doc/LICENSE\nCURLPP_INSTALL_STAGING = YES\nCURLPP_DEPENDENCIES = libcurl\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/cutelyst/0001-server-CMakeLists.txt-don-t-override-CMAKE_EXE_LINKE.patch",
    "content": "From c347aeb43775109cbc2824b99cb10b1b3440c191 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 17 May 2021 21:27:11 +0200\nSubject: [PATCH] server/CMakeLists.txt: don't override CMAKE_EXE_LINKER_FLAGS\n\nDon't override CMAKE_EXE_LINKER_FLAGS as this could break the build if\nCMAKE_EXE_LINKER_FLAGS is already set by the user (for example to pass\n-latomic)\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/cutelyst/cutelyst/pull/312]\n---\n wsgi/CMakeLists.txt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/server/CMakeLists.txt b/server/CMakeLists.txt\nindex ec5689f7..1ed56859 100644\n--- a/wsgi/CMakeLists.txt\n+++ b/wsgi/CMakeLists.txt\n@@ -95,7 +95,7 @@ install(TARGETS Cutelyst${PROJECT_VERSION_MAJOR}Qt${QT_VERSION_MAJOR}Server\n     cxx_generalized_initializers\n )\n if (JEMALLOC_FOUND)\n-    set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} \" -Wl,--no-as-needed\")\n+    set(CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-as-needed\")\n     target_link_libraries(cutelyst-wsgi2 PRIVATE ${JEMALLOC_LIBRARIES})\n endif()\n \n-- \n2.30.2\n\n"
  },
  {
    "path": "package/cutelyst/Config.in",
    "content": "config BR2_PACKAGE_CUTELYST\n\tbool \"cutelyst\"\n\tdepends on BR2_PACKAGE_QT5\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\thelp\n\t  A C++ Web Framework built on top of Qt, using\n\t  the simple approach of Catalyst (Perl) framework.\n\n\t  https://cutelyst.org\n\ncomment \"cutelyst needs a toolchain w/ C++, gcc >= 4.8, headers >= 3.3\"\n\tdepends on BR2_PACKAGE_QT5\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3\n"
  },
  {
    "path": "package/cutelyst/cutelyst.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  b0e3d658a60d68906f7255b78bad64af1aa07cb3b785fbf61629b7355f089baa  cutelyst-2.11.0.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/cutelyst/cutelyst.mk",
    "content": "################################################################################\n#\n# cutelyst\n#\n################################################################################\n\nCUTELYST_VERSION = 2.11.0\nCUTELYST_SITE = https://github.com/cutelyst/cutelyst/archive/v$(CUTELYST_VERSION)\nCUTELYST_INSTALL_STAGING = YES\nCUTELYST_SUPPORTS_IN_SOURCE_BUILD = NO\nCUTELYST_LICENSE = LGPL-2.1+\nCUTELYST_LICENSE_FILES = COPYING\nCUTELYST_DEPENDENCIES = qt5base\n\nCUTELYST_CONF_OPTS += \\\n\t-DPLUGIN_CSRFPROTECTION=ON \\\n\t-DPLUGIN_VIEW_GRANTLEE=OFF\n\n# Qt 5.8 needs atomics, which on various architectures are in -latomic\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nCUTELYST_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\nifeq ($(BR2_PACKAGE_LIBPWQUALITY),y)\nCUTELYST_CONF_OPTS += -DPLUGIN_VALIDATOR_PWQUALITY=ON\nCUTELYST_DEPENDENCIES += libpwquality\nelse\nCUTELYST_CONF_OPTS += -DPLUGIN_VALIDATOR_PWQUALITY=OFF\nendif\n\nifeq ($(BR2_PACKAGE_JEMALLOC),y)\nCUTELYST_CONF_OPTS += -DUSE_JEMALLOC=ON\nCUTELYST_DEPENDENCIES += jemalloc\nelse\nCUTELYST_CONF_OPTS += -DUSE_JEMALLOC=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/cvs/Config.in",
    "content": "config BR2_PACKAGE_CVS\n\tbool \"cvs\"\n\tdepends on BR2_USE_WCHAR\n\t# needs fork()\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Concurrent Versions System - source code revision control\n\t  tools.\n\n\t  http://www.nongnu.org/cvs/\n\nif BR2_PACKAGE_CVS\n\nconfig BR2_PACKAGE_CVS_SERVER\n\tbool \"server support\"\n\thelp\n\t  Enable cvs server code\n\nendif\n\ncomment \"cvs needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/cvs/cvs.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cvs/cvs_1.12.13-12%2Bsqueeze1.dsc\nsha256  b5961c2476b996e5758fa5e22b60af085adca41164cac0d8f68a1d3b49d4e4f1  cvs_1.12.13.orig.tar.gz\nsha256  d52a9232d9cf36302a150d782fc7e5b6f92f8115505ae8a7dc6acfc83e809d2f  cvs_1.12.13-12+squeeze1.diff.gz\n\n# Hash for license files, locally computed\nsha256  569c5b876327d899cf444b2277fe910128a38ca71d90755fe4125dd44f8ece02  COPYING\nsha256  da0e282103fb508894e78db519aab255e36971ce0bc87de585e3b05014b83b1e  COPYING.LIB\nsha256  ee9a2fbdb626c0ac57fd8e569f357eb2e6d6c80cc6f41efa8bd126d5ea589d72  lib/glob-libc.h\n"
  },
  {
    "path": "package/cvs/cvs.mk",
    "content": "################################################################################\n#\n# cvs\n#\n################################################################################\n\nCVS_VERSION = 1.12.13\nCVS_SOURCE = cvs_$(CVS_VERSION).orig.tar.gz\nCVS_PATCH = cvs_$(CVS_VERSION)-12+squeeze1.diff.gz\nCVS_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cvs\nCVS_LICENSE = GPL-1.0+, LGPL-2.0+, LGPL-2.1+ (glob)\nCVS_LICENSE_FILES = COPYING COPYING.LIB lib/glob-libc.h\nCVS_CPE_ID_VENDOR = gnu\nCVS_SELINUX_MODULES = apache cvs\nCVS_DEPENDENCIES = ncurses\n\nCVS_CONF_ENV = \\\n\tac_cv_func_working_mktime=yes \\\n\tcvs_cv_func_printf_ptr=yes\n\nCVS_CONFIGURE_ARGS = --disable-old-info-format-support\nifeq ($(BR2_PACKAGE_CVS_SERVER),y)\nCVS_CONFIGURE_ARGS += --enable-server\nelse\nCVS_CONFIGURE_ARGS += --disable-server\nendif\nifeq ($(BR2_PACKAGE_ZLIB),y)\nCVS_CONFIGURE_ARGS += --with-external-zlib\nendif\n\nCVS_CONF_OPTS = $(CVS_CONFIGURE_ARGS)\n\ndefine CVS_BZIP_UNPACK\n\t$(BZCAT) $(@D)/cvs-$(CVS_VERSION).tar.bz2 | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -\n\trm -f $(@D)/cvs-$(CVS_VERSION).tar.bz2\nendef\n\nCVS_POST_PATCH_HOOKS += CVS_BZIP_UNPACK\n\nifneq ($(CVS_PATCH),)\ndefine CVS_DEBIAN_PATCHES\n\tif [ -d $(@D)/debian/patches ]; then \\\n\t\t(cd $(@D)/debian/patches && for i in *; \\\n\t\t do $(SED) 's,^\\+\\+\\+ .*cvs-$(CVS_VERSION)/,+++ cvs-$(CVS_VERSION)/,' $$i; \\\n\t\t done; \\\n\t\t); \\\n\t\t$(APPLY_PATCHES) $(@D) $(@D)/debian/patches \\*; \\\n\tfi\nendef\nendif\n\nCVS_POST_PATCH_HOOKS += CVS_DEBIAN_PATCHES\n\ndefine CVS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D $(@D)/src/cvs $(TARGET_DIR)/usr/bin/cvs\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/cwiid/0001-wmdemo-fix-linking-by-adding-the-missing-lbluetooth-.patch",
    "content": "From af6bffb5b8b71e99e0f9bbbd2cf1fbd695a643c2 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Sat, 8 Dec 2012 13:32:40 +0100\nSubject: [PATCH 1/2] wmdemo: fix linking by adding the missing -lbluetooth to\n LDLIBS\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n---\n wmdemo/Makefile.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/wmdemo/Makefile.in b/wmdemo/Makefile.in\nindex 56aed58..1eccc02 100644\n--- a/wmdemo/Makefile.in\n+++ b/wmdemo/Makefile.in\n@@ -8,7 +8,7 @@ SOURCES = wmdemo.c\n \n CFLAGS += -I@top_builddir@/libcwiid\n LDFLAGS += -L@top_builddir@/libcwiid\n-LDLIBS += -lcwiid\n+LDLIBS += -lcwiid -lbluetooth\n INST_DIR = @bindir@\n \n include $(COMMON)/include/app.mak\n-- \n1.8.5.2\n\n"
  },
  {
    "path": "package/cwiid/0002-configure-make-wmgui-build-optional.patch",
    "content": "From dbb578450974db5decc24560da4aeaed838849a1 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Thu, 2 Jan 2014 14:03:07 +0100\nSubject: [PATCH 2/2] configure: make wmgui build optional\n\nSo, make gtk-2 and glib2 dependencies optional (only needed by wmgui)\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n---\n Makefile.in  |  2 +-\n configure.ac | 17 +++++++++++++----\n 2 files changed, 14 insertions(+), 5 deletions(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 6d3ac98..3d2fb45 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -3,7 +3,7 @@\n include @top_builddir@/defs.mak\n \n LIB_DIRS = libcwiid\n-BIN_DIRS = wmgui wminput lswm\n+BIN_DIRS = @WMGUI@ wminput lswm\n DOC_DIRS = man doc\n ifdef PYTHON\n BIND_DIRS = python\ndiff --git a/configure.ac b/configure.ac\nindex 82ca3e1..d146cb6 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -15,6 +15,11 @@ if test \"$YACC\" != \"bison -y\"; then\n \tAC_MSG_ERROR([bison not found])\n fi\n \n+AC_ARG_ENABLE(\n+\t[wmgui],\n+\t[AS_HELP_STRING([--disable-wmgui],[Do not build wmgui binary (also drop the gtk-2/glib2 dependency)])],\n+\t[ENABLE_WMGUI=\"$enableval\"],[ENABLE_WMGUI=yes])\n+\n AC_ARG_WITH(\n \t[python],\n \t[AS_HELP_STRING([--without-python],[compile without python support])],\n@@ -98,10 +103,14 @@ else\n fi\n AC_SUBST(LDCONFIG)\n \n-pkg_modules=\"gtk+-2.0 >= 2.0.0 gthread-2.0\"\n-PKG_CHECK_MODULES([GTK], [$pkg_modules])\n-AC_SUBST(GTK_CFLAGS)\n-AC_SUBST(GTK_LIBS)\n+AS_IF(\n+\t[test \"x$ENABLE_WMGUI\" = xyes],\n+\t[pkg_modules=\"gtk+-2.0 >= 2.0.0 gthread-2.0\" ;\n+\tPKG_CHECK_MODULES([GTK], [$pkg_modules])\n+\tAC_SUBST(GTK_CFLAGS)\n+\tAC_SUBST(GTK_LIBS)\n+\tAC_SUBST(WMGUI, wmgui)]\n+)\n \n AC_OUTPUT(\n \t[Makefile]\n-- \n1.8.5.2\n\n"
  },
  {
    "path": "package/cwiid/Config.in",
    "content": "config BR2_PACKAGE_CWIID\n\tbool \"cwiid\"\n\tdepends on !BR2_STATIC_LIBS # bluez5_utils\n\tdepends on BR2_USE_WCHAR # bluez5_utils -> libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # bluez5_utils -> dbus, alsa-lib, libglib2\n\tdepends on BR2_USE_MMU # bluez5_utils -> dbus, libglib2\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5_utils\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5_utils\n\tselect BR2_PACKAGE_BLUEZ5_UTILS\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID # runtime\n\thelp\n\t  A collection of Linux tools written in C for interfacing to\n\t  the Nintendo Wiimote.\n\n\t  https://github.com/abstrakraft/cwiid\n\nif BR2_PACKAGE_CWIID\nconfig BR2_PACKAGE_CWIID_WMGUI\n\tbool \"wmgui\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # libgtk2 -> pango -> harfbuzz\n\tdepends on BR2_PACKAGE_XORG7 # libgtk2\n\tdepends on BR2_USE_WCHAR # libgtk2 -> libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libgtk2 -> libglib2\n\tdepends on BR2_USE_MMU # libgtk2 -> libglib2\n\tdepends on BR2_INSTALL_LIBSTDCPP # libgtk2 -> pango\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBGTK2\nendif\n\ncomment \"cwiid needs a toolchain w/ dynamic lib, threads, wchar, headers >= 3.4\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4\n\tdepends on !BR2_USE_MMU\n"
  },
  {
    "path": "package/cwiid/cwiid.hash",
    "content": "# Locally calculated\nsha256 3adf3bf018721dee3c47e12ba4dd71810a239918dce925aa4079cb2a98bca5fe  cwiid-fadf11e89b579bcc0336a0692ac15c93785f3f82.tar.gz\n# License files, locally calculated\nsha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/cwiid/cwiid.mk",
    "content": "################################################################################\n#\n# cwiid\n#\n################################################################################\n\nCWIID_VERSION = fadf11e89b579bcc0336a0692ac15c93785f3f82\nCWIID_SITE = $(call github,abstrakraft,cwiid,$(CWIID_VERSION))\nCWIID_LICENSE = GPL-2.0+\nCWIID_LICENSE_FILES = COPYING\n\nCWIID_AUTORECONF = YES\nCWIID_INSTALL_STAGING = YES\n\nCWIID_DEPENDENCIES = host-pkgconf host-bison host-flex bluez5_utils\n\n# Disable python support. This disables the 2 following things:\n#   - wminput Python plugin support\n#   - cwiid Python module\nCWIID_CONF_OPTS = --without-python --disable-ldconfig\n\nifeq ($(BR2_PACKAGE_CWIID_WMGUI),y)\nCWIID_DEPENDENCIES += libgtk2 libglib2\nCWIID_CONF_OPTS += --enable-wmgui\nelse\nCWIID_CONF_OPTS += --disable-wmgui\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/cxxtest/Config.in",
    "content": "config BR2_PACKAGE_CXXTEST\n\tbool \"cxxtest\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  CxxTest is a unit testing framework for C++\n\n\t  http://cxxtest.com/\n\ncomment \"cxxtest needs a toolchain w/ C++ support\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/cxxtest/cxxtest.hash",
    "content": "# Locally computed:\nsha256\t1c154fef91c65dbf1cd4519af7ade70a61d85a923b6e0c0b007dc7f4895cf7d8\tcxxtest-4.4.tar.gz\n\n# Hash for license file:\nsha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING\n"
  },
  {
    "path": "package/cxxtest/cxxtest.mk",
    "content": "################################################################################\n#\n# cxxtest\n#\n################################################################################\n\nCXXTEST_VERSION = 4.4\nCXXTEST_SITE = https://github.com/CxxTest/cxxtest/releases/download/$(CXXTEST_VERSION)\nCXXTEST_LICENSE = LGPL-3.0\nCXXTEST_LICENSE_FILES = COPYING\nCXXTEST_INSTALL_STAGING = YES\nCXXTEST_INSTALL_TARGET = NO\nCXXTEST_DEPENDENCIES = host-cxxtest\nHOST_CXXTEST_SETUP_TYPE = setuptools\nHOST_CXXTEST_SUBDIR = python\n\n# Copy CxxTest header files to staging directory\ndefine CXXTEST_INSTALL_STAGING_CMDS\n\t$(INSTALL) -m 755 -d $(STAGING_DIR)/usr/include/cxxtest\n\t$(INSTALL) -m 644 -t $(STAGING_DIR)/usr/include/cxxtest $(@D)/cxxtest/*\nendef\n\n# CxxTest uses python infrastructure as the build system. It consists of two parts:\n# 1. cxxtestgen tool to process tests defined in header files to generate C++ source\n# files. cxxtestgen is built as a host package, so that it can be used natively.\n# 2. A set of header files which are installed in staging directory. This will be\n# used in cross-compiling test harness to generate executable which will run on target.\n\n$(eval $(generic-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/czmq/Config.in",
    "content": "config BR2_PACKAGE_CZMQ\n\tbool \"czmq\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP # zeromq\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # zeromq\n\tselect BR2_PACKAGE_ZEROMQ\n\thelp\n\t  High-level C Binding for 0MQ\n\n\t  http://czmq.zeromq.org/\n\ncomment \"czmq needs a toolchain w/ C++, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS)\n"
  },
  {
    "path": "package/czmq/czmq.hash",
    "content": "# From https://github.com/zeromq/czmq/releases\nmd5 471e9ec120fc66a2fe2aae14359e3cfa czmq-4.2.1.tar.gz\nsha1 75ced09c143f93fae65238375e3a799c40eaed4c czmq-4.2.1.tar.gz\n# Locally calculated\nsha256 5d720a204c2a58645d6f7643af15d563a712dad98c9d32c1ed913377daa6ac39 czmq-4.2.1.tar.gz\nsha256 1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5 LICENSE\n"
  },
  {
    "path": "package/czmq/czmq.mk",
    "content": "################################################################################\n#\n# czmq\n#\n################################################################################\n\nCZMQ_VERSION = 4.2.1\nCZMQ_SITE = https://github.com/zeromq/czmq/releases/download/v$(CZMQ_VERSION)\n\nCZMQ_INSTALL_STAGING = YES\nCZMQ_DEPENDENCIES = zeromq host-pkgconf\nCZMQ_LICENSE = MPL-2.0\nCZMQ_LICENSE_FILES = LICENSE\n\nCZMQ_CONF_OPTS = --disable-Werror --without-docs\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dacapo/Config.in",
    "content": "config BR2_PACKAGE_DACAPO\n\tbool \"dacapo\"\n\tdepends on BR2_PACKAGE_OPENJDK\n\thelp\n\t  The DaCapo benchmark suite is intended as a tool for Java\n\t  benchmarking by the programming language, memory\n\t  management and computer architecture communities.\n\n\t  http://dacapobench.org/\n\ncomment \"dacapo needs OpenJDK\"\n\tdepends on !BR2_PACKAGE_OPENJDK\n"
  },
  {
    "path": "package/dacapo/dacapo.hash",
    "content": "# Locally computed\nsha256 be3db084adcb2867760e1197b3ccf541c3213d918daa19386d8e236648d24be8  dacapo-9.12-MR1-bach.jar\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/dacapo/dacapo.mk",
    "content": "################################################################################\n#\n# dacapo\n#\n################################################################################\n\nDACAPO_VERSION = 9.12-MR1-bach\nDACAPO_SOURCE = dacapo-$(DACAPO_VERSION).jar\nDACAPO_SITE = http://sourceforge.net/projects/dacapobench/files/9.12-bach-MR1\nDACAPO_LICENSE = Apache-2.0\nDACAPO_LICENSE_FILES = LICENSE\n\ndefine DACAPO_EXTRACT_CMDS\n\tunzip $(DACAPO_DL_DIR)/$(DACAPO_SOURCE) LICENSE -d $(@D)\nendef\n\ndefine DACAPO_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(DACAPO_DL_DIR)/$(DACAPO_SOURCE) $(TARGET_DIR)/usr/bin/$(DACAPO_SOURCE)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dado/Config.in",
    "content": "config BR2_PACKAGE_DADO\n\tbool \"dado\"\n\thelp\n\t  Database Facilities for LuaSQL.\n\n\t  http://www.ccpa.puc-rio.br/software/dado/\n"
  },
  {
    "path": "package/dado/dado.hash",
    "content": "# computed by luarocks/buildroot\nsha256 5a10ed7ff7be34ac004d10d6ea62ee8efc2b594c50ffc93e840e7fb7a2e6b4d0  dado-1.8.3-1.src.rock\nsha256 141953aa7714e3145a6adfd71d6acbbe377e07ab920bc8ec4039394774da8a6e  dado-1.8.3/doc/license.html\n"
  },
  {
    "path": "package/dado/dado.mk",
    "content": "################################################################################\n#\n# dado\n#\n################################################################################\n\nDADO_VERSION = 1.8.3-1\nDADO_LICENSE = MIT\nDADO_LICENSE_FILES = $(DADO_SUBDIR)/doc/license.html\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/daemon/0001-daemon-fix-build-with-musl-libc-again.patch",
    "content": "From b879e6886498fdd147287bffdf5867378c7f3299 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Thu, 24 Jun 2021 14:28:10 +0300\nSubject: [PATCH] daemon: fix build with musl libc (again)\n\nCommit 6b28c54dd95b3 added HAVE_SYS_TTYDEFAULTS_H to guard\nsys/ttydefaults.h include. This breaks musl libc build because\nHAVE_SYS_TTYDEFAULTS_H is not defined until config.h is included.\n\nMove sys/ttydefaults.h include below config.h\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: https://github.com/raforg/daemon/pull/4\n\n daemon.c | 7 ++++---\n 1 file changed, 4 insertions(+), 3 deletions(-)\n\ndiff --git a/daemon.c b/daemon.c\nindex 5c5ef2cb86df..f88a0d49bf84 100644\n--- a/daemon.c\n+++ b/daemon.c\n@@ -1011,9 +1011,6 @@ I<elogind(8)>\n #ifdef _RESTORE_POSIX_SOURCE\n #define _POSIX_SOURCE\n #endif\n-#ifdef HAVE_SYS_TTYDEFAULTS_H /* For CEOF in musl libc (Linux only) */\n-#include <sys/ttydefaults.h>\n-#endif\n #include <dirent.h>\n #include <sys/wait.h>\n #include <sys/stat.h>\n@@ -1037,6 +1034,10 @@ I<elogind(8)>\n #include <systemd/sd-login.h>\n #endif\n \n+#ifdef HAVE_SYS_TTYDEFAULTS_H /* For CEOF in musl libc (Linux only) */\n+#include <sys/ttydefaults.h>\n+#endif\n+\n /* Configuration file entries */\n \n typedef struct Config Config;\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/daemon/0002-Fix-build-with-NDEBUG-defined.patch",
    "content": "From fc84d8d572ffcecb533fd6d6d025abea12ce027e Mon Sep 17 00:00:00 2001\nMessage-Id: <fc84d8d572ffcecb533fd6d6d025abea12ce027e.1622722814.git.baruch@tkos.co.il>\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Thu, 3 Jun 2021 15:01:10 +0300\nSubject: [PATCH] Fix build with NDEBUG defined\n\nBuild with NDEBUG fails because the debug() macro becomes empty. This\ncreates invalid syntax with the debug() call is the only statement in\nthe body of a 'for' loop.\n\nThis fixes build failures like:\n\ndaemon.c: In function 'show':\ndaemon.c:3607:2: error: expected expression before '}' token\n  }\n  ^\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: https://github.com/raforg/daemon/pull/3\n\n libslack/err.h | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/libslack/err.h b/libslack/err.h\nindex 106bdb01e074..7acfbe46d60a 100644\n--- a/libslack/err.h\n+++ b/libslack/err.h\n@@ -40,10 +40,10 @@\n #undef check\n \n #ifdef NDEBUG\n-#define debug(args)\n-#define vdebug(args)\n-#define debugsys(args)\n-#define vdebugsys(args)\n+#define debug(args) do {} while (0);\n+#define vdebug(args) do {} while (0);\n+#define debugsys(args) do {} while (0);\n+#define vdebugsys(args) do {} while (0);\n #define check(cond, mesg) (void_cast(0))\n #else\n #define debug(args) debugf args;\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/daemon/Config.in",
    "content": "config BR2_PACKAGE_DAEMON\n\tbool \"daemon\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Daemon turns other process into daemons.\n\n\t  http://www.libslack.org/daemon/\n\ncomment \"daemon needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/daemon/daemon.hash",
    "content": "# From http://www.libslack.org/daemon/\nsha256  74f12e6d4b3c85632489bd08431d3d997bc17264bf57b7202384f2e809cff596  daemon-0.8.tar.gz\n# Locally calculated\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  LICENSE\nsha256  91329bb9be4ae0b7800081fa054e9bb760c60005b26958c1fb8461bc66bcd998  COPYING\n"
  },
  {
    "path": "package/daemon/daemon.mk",
    "content": "################################################################################\n#\n# daemon\n#\n################################################################################\n\nDAEMON_VERSION = 0.8\nDAEMON_SITE = http://libslack.org/daemon/download\nDAEMON_LICENSE = GPL-2.0+\nDAEMON_LICENSE_FILES = LICENSE COPYING\n\ndefine DAEMON_CONFIGURE_CMDS\n\t(cd $(@D); ./configure)\nendef\n\ndefine DAEMON_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine DAEMON_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) DEB_BUILD_OPTIONS=nostrip \\\n\t\t$(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) \\\n\t\tinstall-daemon-bin\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dahdi-linux/0001-drivers-dahdi-Kbuild-fix-HOTPLUG_FIRMWARE-definition.patch",
    "content": "From dc0a646a460e6da10ddbe7bf02794051d76f8751 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 4 Nov 2021 17:30:06 +0100\nSubject: [PATCH] drivers/dahdi/Kbuild: fix HOTPLUG_FIRMWARE definition\n\nHOTPLUG_FIRMWARE is used before being defined resulting in the following\nbuild failure since version 2.7.0 and\nhttps://git.asterisk.org/gitweb/?p=dahdi/linux.git;a=commit;h=e2f492595c9191ba6d556ccac1bde4c1bb892938:\n\n  MODPOST /home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/Module.symvers\nERROR: modpost: \"_binary_dahdi_fw_oct6114_032_bin_start\" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/wcaxx.ko] undefined!\nERROR: modpost: \"_binary_dahdi_fw_oct6114_032_bin_size\" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/wcaxx.ko] undefined!\nERROR: modpost: \"_binary_dahdi_fw_oct6114_128_bin_start\" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/wcte43x.ko] undefined!\nERROR: modpost: \"_binary_dahdi_fw_oct6114_064_bin_start\" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/wcte43x.ko] undefined!\nERROR: modpost: \"_binary_dahdi_fw_oct6114_128_bin_size\" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/wcte43x.ko] undefined!\nERROR: modpost: \"_binary_dahdi_fw_oct6114_064_bin_size\" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/wcte43x.ko] undefined!\nERROR: modpost: \"_binary_dahdi_fw_oct6114_032_bin_start\" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/wcte13xp.ko] undefined!\nERROR: modpost: \"_binary_dahdi_fw_oct6114_032_bin_size\" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/wcte13xp.ko] undefined!\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to \"Shaun Ruffell <sruffell@sruffell.net>\"]\n---\n drivers/dahdi/Kbuild | 18 +++++++++---------\n 1 file changed, 9 insertions(+), 9 deletions(-)\n\ndiff --git a/drivers/dahdi/Kbuild b/drivers/dahdi/Kbuild\nindex 855e5bf..b1a8481 100644\n--- a/drivers/dahdi/Kbuild\n+++ b/drivers/dahdi/Kbuild\n@@ -13,6 +13,15 @@ obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTC4XXP)\t\t+= wctc4xxp/\n obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTDM24XXP)\t+= wctdm24xxp/\n obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE13XP)\t\t+= wcte13xp.o\n \n+ifndef HOTPLUG_FIRMWARE\n+ifneq (,$(filter y m,$(CONFIG_FW_LOADER)))\n+HOTPLUG_FIRMWARE := yes\n+else\n+HOTPLUG_FIRMWARE := no\n+endif\n+export HOTPLUG_FIRMWARE\n+endif\n+\n wcte13xp-objs := wcte13xp-base.o wcxb_spi.o wcxb.o wcxb_flash.o\n CFLAGS_wcte13xp-base.o += -I$(src)/oct612x -I$(src)/oct612x/include -I$(src)/oct612x/octdeviceapi -I$(src)/oct612x/octdeviceapi/oct6100api\n ifeq ($(HOTPLUG_FIRMWARE),yes)\n@@ -61,15 +70,6 @@ endif\n \n CFLAGS_MODULE += -I$(DAHDI_INCLUDE) -I$(src) -Wno-format-truncation\n \n-ifndef HOTPLUG_FIRMWARE\n-ifneq (,$(filter y m,$(CONFIG_FW_LOADER)))\n-HOTPLUG_FIRMWARE := yes\n-else\n-HOTPLUG_FIRMWARE := no\n-endif\n-export HOTPLUG_FIRMWARE\n-endif\n-\n # fix typo present in CentOS and RHEL 2.6.9 kernels\n BAD_KERNELS_VERS := 22 34 34.0.1 34.0.2\n BAD_KERNELS := $(foreach ver,$(BAD_KERNELS_VERS),2.6.9-$(ver).EL 2.6.9-$(ver).ELsmp)\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/dahdi-linux/0002-fix-build-with-32-bits-kernel.patch",
    "content": "From aa74fa2fb5acf54bd46ad4c1b10e0a23a2cb3d25 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 4 Nov 2021 18:45:11 +0100\nSubject: [PATCH] fix build with 32-bits kernel\n\nUse div_s64 or div_s64_rem to fix the following build failure on 32-bits\nkernels:\n\nERROR: modpost: \"__divdi3\" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/xpp/xpp_usb.ko] undefined!\nERROR: modpost: \"__udivdi3\" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/xpp/xpp_usb.ko] undefined!\nERROR: modpost: \"__moddi3\" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/xpp/xpp.ko] undefined!\nERROR: modpost: \"__divdi3\" [/home/fabrice/buildroot/output/build/dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8/drivers/dahdi/xpp/xpp.ko] undefined!\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n drivers/dahdi/xpp/xbus-core.c    |  9 ++++++---\n drivers/dahdi/xpp/xbus-pcm.c     |  4 ++--\n drivers/dahdi/xpp/xbus-sysfs.c   |  2 +-\n drivers/dahdi/xpp/xframe_queue.c | 15 ++++++++++-----\n drivers/dahdi/xpp/xpp_usb.c      |  2 +-\n 5 files changed, 20 insertions(+), 12 deletions(-)\n\ndiff --git a/drivers/dahdi/xpp/xbus-core.c b/drivers/dahdi/xpp/xbus-core.c\nindex fc4ce7b..b1d1fd7 100644\n--- a/drivers/dahdi/xpp/xbus-core.c\n+++ b/drivers/dahdi/xpp/xbus-core.c\n@@ -1754,11 +1754,14 @@ out:\n \n static void xbus_fill_proc_queue(struct seq_file *sfile, struct xframe_queue *q)\n {\n+\ts64 msec = 0;\n+\ts32 rem = 0;\n+\n+\tmsec = div_s64_rem(q->worst_lag_usec, 1000, &rem);\n \tseq_printf(sfile,\n-\t\t\"%-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%lld ms\\n\",\n+\t\t\"%-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%d ms\\n\",\n \t\tq->name, q->steady_state_count, q->count, q->max_count,\n-\t\tq->worst_count, q->overflows, q->worst_lag_usec / 1000,\n-\t\tq->worst_lag_usec % 1000);\n+\t\tq->worst_count, q->overflows, msec, rem);\n \txframe_queue_clearstats(q);\n }\n \ndiff --git a/drivers/dahdi/xpp/xbus-pcm.c b/drivers/dahdi/xpp/xbus-pcm.c\nindex 8bb2fe7..e690ce7 100644\n--- a/drivers/dahdi/xpp/xbus-pcm.c\n+++ b/drivers/dahdi/xpp/xbus-pcm.c\n@@ -129,7 +129,7 @@ static int xpp_ticker_step(struct xpp_ticker *ticker, const ktime_t t)\n \t\tusec = ktime_us_delta(ticker->last_sample,\n \t\t\t\t\tticker->first_sample);\n \t\tticker->first_sample = ticker->last_sample;\n-\t\tticker->tick_period = usec / ticker->cycle;\n+\t\tticker->tick_period = div_s64(usec, ticker->cycle);\n \t\tcycled = 1;\n \t}\n \tticker->count++;\n@@ -497,7 +497,7 @@ static void send_drift(xbus_t *xbus, int drift)\n \tXBUS_DBG(SYNC, xbus,\n \t\t \"%sDRIFT adjust %s (%d) (last update %lld seconds ago)\\n\",\n \t\t (disable_pll_sync) ? \"Fake \" : \"\", msg, drift,\n-\t\t msec_delta / MSEC_PER_SEC);\n+\t\t div_s64(msec_delta, MSEC_PER_SEC));\n \tif (!disable_pll_sync)\n \t\tCALL_PROTO(GLOBAL, SYNC_SOURCE, xbus, NULL, SYNC_MODE_PLL,\n \t\t\t   drift);\ndiff --git a/drivers/dahdi/xpp/xbus-sysfs.c b/drivers/dahdi/xpp/xbus-sysfs.c\nindex d8c11dc..35180d9 100644\n--- a/drivers/dahdi/xpp/xbus-sysfs.c\n+++ b/drivers/dahdi/xpp/xbus-sysfs.c\n@@ -249,7 +249,7 @@ static DEVICE_ATTR_READER(driftinfo_show, dev, buf)\n \t/*\n \t * Calculate lost ticks time\n \t */\n-\tseconds = ktime_ms_delta(now, di->last_lost_tick) / 1000;\n+\tseconds = div_s64(ktime_ms_delta(now, di->last_lost_tick), 1000);\n \tminutes = seconds / 60;\n \tseconds = seconds % 60;\n \thours = minutes / 60;\ndiff --git a/drivers/dahdi/xpp/xframe_queue.c b/drivers/dahdi/xpp/xframe_queue.c\nindex e986083..8e5e508 100644\n--- a/drivers/dahdi/xpp/xframe_queue.c\n+++ b/drivers/dahdi/xpp/xframe_queue.c\n@@ -35,15 +35,18 @@ static void __xframe_dump_queue(struct xframe_queue *q)\n \tint i = 0;\n \tchar prefix[30];\n \tktime_t now = ktime_get();\n+\ts64 msec = 0;\n+\ts32 rem = 0;\n \n \tprintk(KERN_DEBUG \"%s: dump queue '%s' (first packet in each frame)\\n\",\n \t       THIS_MODULE->name, q->name);\n \tlist_for_each_entry_reverse(xframe, &q->head, frame_list) {\n \t\txpacket_t *pack = (xpacket_t *)&xframe->packets[0];\n \t\ts64 usec = ktime_us_delta(now, xframe->kt_queued);\n+\t\tmsec = div_s64_rem(usec, 1000, &rem);\n \n-\t\tsnprintf(prefix, ARRAY_SIZE(prefix), \"  %3d> %5lld.%03lld msec\",\n-\t\t\t i++, usec / 1000, usec % 1000);\n+\t\tsnprintf(prefix, ARRAY_SIZE(prefix), \"  %3d> %5lld.%03d msec\",\n+\t\t\t i++, msec, rem);\n \t\tdump_packet(prefix, pack, 1);\n \t}\n }\n@@ -52,6 +55,8 @@ static bool __xframe_enqueue(struct xframe_queue *q, xframe_t *xframe)\n {\n \tint ret = 1;\n \tstatic int overflow_cnt;\n+\ts64 msec = 0;\n+\ts32 rem = 0;\n \n \tif (unlikely(q->disabled)) {\n \t\tret = 0;\n@@ -60,11 +65,11 @@ static bool __xframe_enqueue(struct xframe_queue *q, xframe_t *xframe)\n \tif (q->count >= q->max_count) {\n \t\tq->overflows++;\n \t\tif ((overflow_cnt++ % 1000) < 5) {\n-\t\t\tNOTICE(\"Overflow of %-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%lld ms\\n\",\n+\t\t\tmsec = div_s64_rem(q->worst_lag_usec, 1000, &rem);\n+\t\t\tNOTICE(\"Overflow of %-15s: counts %3d, %3d, %3d worst %3d, overflows %3d worst_lag %02lld.%d ms\\n\",\n \t\t\t     q->name, q->steady_state_count, q->count,\n \t\t\t     q->max_count, q->worst_count, q->overflows,\n-\t\t\t     q->worst_lag_usec / 1000,\n-\t\t\t     q->worst_lag_usec % 1000);\n+\t\t\t     msec, rem);\n \t\t\t__xframe_dump_queue(q);\n \t\t}\n \t\tret = 0;\ndiff --git a/drivers/dahdi/xpp/xpp_usb.c b/drivers/dahdi/xpp/xpp_usb.c\nindex 1a591b1..3741457 100644\n--- a/drivers/dahdi/xpp/xpp_usb.c\n+++ b/drivers/dahdi/xpp/xpp_usb.c\n@@ -882,7 +882,7 @@ static void xpp_send_callback(struct urb *urb)\n \t\tusec = 0; /* System clock jumped */\n \tif (usec > xusb->max_tx_delay)\n \t\txusb->max_tx_delay = usec;\n-\ti = usec / USEC_BUCKET;\n+\ti = div_s64(usec, USEC_BUCKET);\n \tif (i >= NUM_BUCKETS)\n \t\ti = NUM_BUCKETS - 1;\n \txusb->usb_tx_delay[i]++;\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/dahdi-linux/Config.in",
    "content": "config BR2_PACKAGE_DAHDI_LINUX\n\tbool \"dahdi-linux\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  DAHDI (Digium/Asterisk Hardware Device Interface) is the open\n\t  source device interface technology used to control Digium and\n\t  other legacy telephony interface cards.\n\n\t  DAHDI Linux is the open source device driver framework used to\n\t  interface Asterisk with telephony hardware.\n\n\t  http://www.asterisk.org/downloads/dahdi\n\ncomment \"dahdi-linux needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/dahdi-linux/dahdi-linux.hash",
    "content": "# Locally computed\nsha256  3faf127ee3f1fad0195c56d00b7bf2708ec8a54bf3c31edd827fd9beb47e0a51  dahdi-linux-5c840cf43838e0690873e73409491c392333b3b8-br1.tar.gz\n\n# Firmware files have no upstream hash, so sha56 locally computed\nsha256  3ff26cf80555fd7470b43a87c51d03c1db2a75abcd4561d79f69b6c48298e4a1  dahdi-fwload-vpmadt032-1.25.0.tar.gz\nsha256  d5b6ab6851e431afcfec2ecc39d95fa88fe3939ffdb2e3d4f28a43cabf30e95b  dahdi-fw-a4a-a0017.tar.gz\nsha256  e039af8bec36407b74e1dd9ebdd49ba077469eda79d4e6093721ed2836d4536f  dahdi-fw-a4b-d001e.tar.gz\nsha256  5064f9877b8aec99b19fd57988216fe1a9c0b7c07853dd3b32b5a55ab7b418e6  dahdi-fw-a8a-1d0017.tar.gz\nsha256  09a8992786309e025aa60b400a2c7d21226ac9bb6f1b66f562a5e7e9dc892b03  dahdi-fw-a8b-1f001e.tar.gz\nsha256  449ab3fd03d55d808e999efb7677cd04de202b92c9fcb039539a7e48a39a80f5  dahdi-fw-hx8-2.06.tar.gz\nsha256  7a006073202d67e45f1d5ff1e9c6e8663e6056cef9dc4c5abae86a1018db349c  dahdi-fw-oct6114-032-1.05.01.tar.gz\nsha256  56bac1f2024c76ecf9b6f40992eeea29a1fbee676bb2a37a058179bacfbb1c91  dahdi-fw-oct6114-064-1.05.01.tar.gz\nsha256  e1146749d205c41603b9b76852c3f8104dac233d0025d700db24504d10c99775  dahdi-fw-oct6114-128-1.05.01.tar.gz\nsha256  5fe5036a2766cf0e8a968b0c58b700507d86e1cde9296ca437170cc626a9c79c  dahdi-fw-oct6114-256-1.05.01.tar.gz\nsha256  11dd8d009809e41fc9a3a36766f59ff73d29075eede5b8724331d9a6e5259774  dahdi-fw-tc400m-MR6.12.tar.gz\nsha256  511c1966295a20df673bb87af30245f0ad165efd6ccb92b4d8ed535ca7f5ac65  dahdi-fw-te133-7a001e.tar.gz\nsha256  99f7c410bf47d2a5ae687d717e51448ce5b52aca902830bf39bffe683150fa2d  dahdi-fw-te134-780017.tar.gz\nsha256  c8f55d57cc0bf332e8d96cdf9ff6dd0e322f33581e1efc24c2b9a0e0c5eb7ee4  dahdi-fw-te435-13001e.tar.gz\nsha256  0980f4a8d191c6872aa27d971758046f0e7827ac161549f2cc1b0eeab0ae9333  dahdi-fw-te436-10017.tar.gz\nsha256  5b823e25828e2c1c6548886ad408b2e31dbc8cd17170c52592792d9c754a199c  dahdi-fw-te820-1.76.tar.gz\nsha256  6b199cf836f150f9cb35f763f0f502fb52cfa2724a449b500429c746973904ad  dahdi-fw-vpmoct032-1.12.0.tar.gz\n\n# License files, locally computed\nsha256  fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7  LICENSE\nsha256  ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5  LICENSE.LGPL\n"
  },
  {
    "path": "package/dahdi-linux/dahdi-linux.mk",
    "content": "################################################################################\n#\n# dahdi-linux\n#\n################################################################################\n\nDAHDI_LINUX_VERSION = 5c840cf43838e0690873e73409491c392333b3b8\nDAHDI_LINUX_SITE = git://git.asterisk.org/dahdi/linux.git\n\n# We need to download all those firmware blobs ourselves, otherwise\n# dahdi-linux will try to download them at install time.\nDAHDI_LINUX_FW_SITE = http://downloads.digium.com/pub/telephony/firmware/releases\nDAHDI_LINUX_FW_FILES = \\\n\tdahdi-fwload-vpmadt032-1.25.0.tar.gz \\\n\tdahdi-fw-oct6114-032-1.05.01.tar.gz \\\n\tdahdi-fw-oct6114-064-1.05.01.tar.gz \\\n\tdahdi-fw-oct6114-128-1.05.01.tar.gz \\\n\tdahdi-fw-oct6114-256-1.05.01.tar.gz \\\n\tdahdi-fw-tc400m-MR6.12.tar.gz \\\n\tdahdi-fw-hx8-2.06.tar.gz \\\n\tdahdi-fw-vpmoct032-1.12.0.tar.gz \\\n\tdahdi-fw-te820-1.76.tar.gz \\\n\tdahdi-fw-te133-7a001e.tar.gz \\\n\tdahdi-fw-te134-780017.tar.gz \\\n\tdahdi-fw-a8b-1f001e.tar.gz \\\n\tdahdi-fw-a8a-1d0017.tar.gz \\\n\tdahdi-fw-a4b-d001e.tar.gz \\\n\tdahdi-fw-a4a-a0017.tar.gz \\\n\tdahdi-fw-te435-13001e.tar.gz \\\n\tdahdi-fw-te436-10017.tar.gz\n\nDAHDI_LINUX_EXTRA_DOWNLOADS = \\\n\t$(patsubst %,$(DAHDI_LINUX_FW_SITE)/%,$(DAHDI_LINUX_FW_FILES))\n\n# dahdi-linux claims to be GPLv2 with parts LGPLv2.1 (not 'or later'),\n# but there are the so-called firmware files (downloaded above) for\n# which the license is unclear: the header claims to be GPLv2, the\n# 'loader-wrapper' claims to be GPLv2, but there are two so-called\n# 'firmware' binary-only .o blobs for which the license is not\n# explicited, which look like they end up as part of a kernel module,\n# and for which the source is nowhere to be found on the upstream site\n# (they are only for x86/x86_64, but we still list them unconditionally).\nDAHDI_LINUX_LICENSE = GPL-2.0, LGPL-2.1, unknown (firmware files)\nDAHDI_LINUX_LICENSE_FILES = LICENSE LICENSE.LGPL\n\nDAHDI_LINUX_INSTALL_STAGING = YES\n\nDAHDI_LINUX_MODULE_SUBDIRS = drivers/dahdi\n\nDAHDI_LINUX_MODULE_MAKE_OPTS = \\\n\tKSRC=$(LINUX_DIR) \\\n\tKVERS=$(LINUX_VERSION_PROBED) \\\n\tDAHDI_BUILD_ALL=m \\\n\tDAHDI_INCLUDE=$(@D)/include \\\n\tINSTALL_MOD_DIR=dahdi\n\ndefine DAHDI_LINUX_EXTRACT_FW\n\t$(foreach f,$(DAHDI_LINUX_FW_FILES),\\\n\t\tcp $(DAHDI_LINUX_DL_DIR)/$(f) $(@D)/drivers/dahdi/firmware/$(f)$(sep))\nendef\nDAHDI_LINUX_POST_EXTRACT_HOOKS += DAHDI_LINUX_EXTRACT_FW\n\ndefine DAHDI_LINUX_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CRC_CCITT)\nendef\n\n# Need to pass the same options as for building the modules, because\n# it wants to scan Linux' .config file to check whether some options\n# are set or not (like CONFIG_FW_LOADER).\ndefine DAHDI_LINUX_CONFIGURE_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(DAHDI_LINUX_MODULE_MAKE_OPTS) \\\n\t\tprereq\nendef\n\ndefine DAHDI_LINUX_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(DAHDI_LINUX_MODULE_MAKE_OPTS) \\\n\t\tDESTDIR=$(STAGING_DIR) \\\n\t\tinstall-include\nendef\n\ndefine DAHDI_LINUX_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(DAHDI_LINUX_MODULE_MAKE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tinstall-firmware \\\n\t\tinstall-xpp-firm\nendef\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dahdi-tools/0001-no-build-docs.patch",
    "content": "Do not build the documentation.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN dahdi-tools-2.11.0.orig/Makefile.am dahdi-tools-2.11.0/Makefile.am\n--- dahdi-tools-2.11.0.orig/Makefile.am\t2015-12-22 21:19:12.000000000 +0100\n+++ dahdi-tools-2.11.0/Makefile.am\t2016-01-04 23:23:34.201304133 +0100\n@@ -17,7 +17,7 @@\n \t#-Wformat=2\n endif\n \n-SUBDIRS\t= xpp doc hotplug\n+SUBDIRS\t= xpp hotplug\n \n if PPPD\n SUBDIRS\t+= ppp\n"
  },
  {
    "path": "package/dahdi-tools/0002-no-perl-manpages.patch",
    "content": "xpp: do not try to install the manpages for the perl tools\n\nThe man pages are generated neither at build time nor at install time,\nso the install step fails.\n\nJust disable them.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN dahdi-tools-2.11.0.orig/xpp/Makefile.am dahdi-tools-2.11.0/xpp/Makefile.am\n--- dahdi-tools-2.11.0.orig/xpp/Makefile.am\t2015-12-22 21:19:12.000000000 +0100\n+++ dahdi-tools-2.11.0/xpp/Makefile.am\t2016-01-04 23:56:31.851820973 +0100\n@@ -3,7 +3,6 @@\n \n SUBDIRS\t\t=\n \n-man_MANS\t=\n \n \n # FIXME: try to improve code, so we can use $(PEDANTIC)\n@@ -59,7 +58,6 @@\n udevrules_DATA\t= xpp.rules\n \n dist_sbin_SCRIPTS\t= $(perl_scripts)\n-man_MANS\t\t+= $(perl_mans)\n CLEANFILES\t\t= $(perl_checks) $(perl_mans)\n \n if\tPBX_USB\n@@ -147,8 +145,6 @@\n \t\tastribank_allow.8 \\\n \t\tastribank_is_starting.8\n \n-man_MANS\t+= $(man_pages)\n-\n endif\n \n EXTRA_DIST\t= \\\n"
  },
  {
    "path": "package/dahdi-tools/Config.in",
    "content": "config BR2_PACKAGE_DAHDI_TOOLS\n\tbool \"dahdi-tools\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_LINUX_KERNEL # dahdi-linux\n\tdepends on BR2_USE_MMU # perl\n\tselect BR2_PACKAGE_DAHDI_LINUX\n\tselect BR2_PACKAGE_PERL\n\thelp\n\t  DAHDI (Digium/Asterisk Hardware Device Interface) is the open\n\t  source device interface technology used to control Digium and\n\t  other legacy telephony interface cards.\n\n\t  DAHDI Tools is a package of utilities for managing and\n\t  monitoring DAHDI devices.\n\n\t  http://www.asterisk.org/downloads/dahdi\n\ncomment \"dahdi-tools needs a toolchain w/ threads and a Linux kernel to be built\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/dahdi-tools/dahdi-tools.hash",
    "content": "# sha1 from http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases\n# sha256 locally computed\nsha1    3e988256aae4b6a6ed8efb3ecc07753779f54823                          dahdi-tools-3.0.0.tar.gz\nsha256  5bebb20d5ae13fa13f0e2075603013954b962be477db02271eef44b3e41557c5  dahdi-tools-3.0.0.tar.gz\n\n# License files, locally computed\nsha256  fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7  LICENSE\nsha256  ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5  LICENSE.LGPL\n"
  },
  {
    "path": "package/dahdi-tools/dahdi-tools.mk",
    "content": "################################################################################\n#\n# dahdi-tools\n#\n################################################################################\n\nDAHDI_TOOLS_VERSION = 3.0.0\nDAHDI_TOOLS_SITE = http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases\n\nDAHDI_TOOLS_LICENSE = GPLv2, LGPLv2.1\nDAHDI_TOOLS_LICENSE_FILES = LICENSE LICENSE.LGPL\n\nDAHDI_TOOLS_DEPENDENCIES = dahdi-linux perl\n\nDAHDI_TOOLS_INSTALL_STAGING = YES\nDAHDI_TOOLS_AUTORECONF = YES\n\n# Buildroot globally exports PERL with the value it has on the host, so we need\n# to override it with the location where it will be on the target.\nDAHDI_TOOLS_CONF_ENV = PERL=/usr/bin/perl\n\nDAHDI_TOOLS_CONF_OPTS = \\\n\t--without-newt \\\n\t--without-usb \\\n\t--without-pcap \\\n\t--without-libusbx \\\n\t--without-libusb \\\n\t--without-selinux \\\n\t--without-ppp \\\n\t--with-perllib=/usr/lib/perl5/$(PERL_VERSION)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dante/0001-fix-sparc-compile.patch",
    "content": "Signal handling for sparc is broken, fix it.\n\nSigned-off-by: Waldemar Brodkorb <wbx@openadk.org>\n\n--- dante-1.4.1.orig/lib/tostring.c\t2014-08-21 18:21:50.000000000 +0200\n+++ dante-1.4.1/lib/tostring.c\t2016-07-10 10:08:39.785662622 +0200\n@@ -1526,7 +1526,7 @@ signal2string(sig)\n          return \"SIGKILL\";\n #endif /* SIGKILL */\n \n-#if (defined SIGLOST) && (!defined SIGABRT || SIGLOST != SIGABRT)\n+#if (defined SIGLOST) && (!defined SIGABRT || SIGLOST != SIGABRT || SIGLOST != SIGPWR)\n       case SIGLOST:\n          return \"SIGLOST\";\n #endif /* SIGLOST */\n@@ -1551,7 +1551,7 @@ signal2string(sig)\n          return \"SIGPROF\";\n #endif /* SIGPROF */\n \n-#ifdef SIGPWR\n+#if (defined SIGPWR) && SIGPWR != SIGLOST\n       case SIGPWR:\n          return \"SIGPWR\";\n #endif /* SIGPWR */\n"
  },
  {
    "path": "package/dante/0002-osdep-m4-Remove-getaddrinfo-too-low-checks.patch",
    "content": "osdep.m4: Remove getaddrinfo() too low checks\n\ndante runs AC_PREPROC_IFELSE then it fills $ERRVALFILE by running the\nfollowing command:\n\ncat conftest.i | grep gaierrval: >>$2\n\nAs a result, $ERRVALFILE does not contain the expected values because\nthe expected value is not on the same line than gaierrval:\n\n gaierrval: \n # 130 \"conftest.c\" 3 4\n           -3\n\nSo drop these checks\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -Nuar dante-1.4.2-orig/osdep.m4 dante-1.4.2/osdep.m4\n--- dante-1.4.2-orig/osdep.m4\t2019-12-09 21:28:38.936003218 +0100\n+++ dante-1.4.2/osdep.m4\t2019-12-09 21:49:48.764019371 +0100\n@@ -956,13 +956,7 @@\n unset UNIQUEVALS UNIQUESYMBOLS\n if test -s $ERRVALFILE; then\n     UNIQUEVALS=`sort $ERRVALFILE | uniq | wc -l | awk '{ print $1 }'`\n-    if test $UNIQUEVALS -le 1; then\n-        AC_MSG_FAILURE([error: getaddrinfo() error value count too low])\n-    fi\n     UNIQUESYMBOLS=`cat $ERRVALFILE | wc -l | awk '{ print $1 }'`\n-    if test $UNIQUESYMBOLS -le 1; then\n-        AC_MSG_FAILURE([error: getaddrinfo() error symbol count too low])\n-    fi\n \n     if test $ERRNOCNT -ne $UNIQUESYMBOLS; then\n \tAC_MSG_FAILURE([internal error: errno symbol count mismatch])\n"
  },
  {
    "path": "package/dante/Config.in",
    "content": "config BR2_PACKAGE_DANTE\n\tbool \"dante\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Dante is a product developed by Inferno Nettverk A/S. It\n\t  consists of a SOCKS server and a SOCKS client, implementing\n\t  RFC 1928 and related standards. It is a flexible product\n\t  that can be used to provide convenient and secure network\n\t  connectivity.\n\n\t  http://www.inet.no/dante/\n"
  },
  {
    "path": "package/dante/S50dante",
    "content": "#!/bin/sh\n#\n# Starts dante\n#\n\n# Allow a few customizations from a config file\ntest -r /etc/default/dante && . /etc/default/dante\n\nstart() {\n\tprintf \"Starting dante: \"\n\tstart-stop-daemon -S -q -p /var/run/dante.pid \\\n\t\t--exec /usr/sbin/sockd -- $DAEMON_ARGS\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping dante: \"\n\tstart-stop-daemon -K -q -p /var/run/dante.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/dante/dante.hash",
    "content": "# From https://www.inet.no/dante/download.html\nsha256  418a065fe1a4b8ace8fbf77c2da269a98f376e7115902e76cda7e741e4846a5d  dante-1.4.3.tar.gz\n\n# Hash for license file\nsha256  05e2db26147a8575005f090aada119ea6cb40a4382164929d647f00abef3bdfd  LICENSE\n"
  },
  {
    "path": "package/dante/dante.mk",
    "content": "################################################################################\n#\n# dante\n#\n################################################################################\n\nDANTE_VERSION = 1.4.3\nDANTE_SITE = http://www.inet.no/dante/files\nDANTE_LICENSE = BSD-3-Clause\nDANTE_LICENSE_FILES = LICENSE\nDANTE_SELINUX_MODULES = dante\n\n# Needed so that our libtool patch applies properly\nDANTE_AUTORECONF = YES\n\nDANTE_CONF_OPTS += --disable-client --disable-preload\n\nifeq ($(BR2_PACKAGE_LIBMINIUPNPC),y)\nDANTE_DEPENDENCIES += libminiupnpc\nDANTE_CONF_OPTS += --with-upnp\nelse\nDANTE_CONF_OPTS += --without-upnp\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nDANTE_DEPENDENCIES += linux-pam\nDANTE_CONF_OPTS += --with-pam\nelse\nDANTE_CONF_OPTS += --without-pam\nendif\n\ndefine DANTE_INSTALL_CONFIG_FILE\n\t$(INSTALL) -D -m 644 $(@D)/example/sockd.conf \\\n\t\t$(TARGET_DIR)/etc/sockd.conf\nendef\n\nDANTE_POST_INSTALL_TARGET_HOOKS += DANTE_INSTALL_CONFIG_FILE\n\ndefine DANTE_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/dante/dante.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/dante.service\nendef\n\ndefine DANTE_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/dante/S50dante \\\n\t\t$(TARGET_DIR)/etc/init.d/S50dante\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dante/dante.service",
    "content": "[Unit]\nDescription=SOCKS v4 and v5 compatible proxy server and client\nRequires=network.target\nAfter=network.target\n\n[Service]\nType=forking\nEnvironmentFile=-/etc/default/dante\nPIDFile=/run/dante.pid\nExecStart=/usr/sbin/sockd -D -p /run/dante.pid $DAEMON_ARGS\nExecReload=/bin/kill -HUP $MAINPID\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/daq/0001-Fix-build-against-the-musl-C-library.patch",
    "content": "From 42efa6d76a3b52f35e576a6b941a9afb5b3879e9 Mon Sep 17 00:00:00 2001\nFrom: Sergio Prado <sergio.prado@e-labworks.com>\nDate: Tue, 9 Jan 2018 21:39:27 -0200\nSubject: [PATCH] Fix build against the musl C library\n\nSigned-off-by: Sergio Prado <sergio.prado@e-labworks.com>\n---\n os-daq-modules/daq_ipfw.c | 2 +-\n os-daq-modules/daq_ipq.c  | 2 +-\n os-daq-modules/daq_nfq.c  | 2 +-\n 3 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/os-daq-modules/daq_ipfw.c b/os-daq-modules/daq_ipfw.c\nindex 016beb06ad61..98f67717f646 100644\n--- a/os-daq-modules/daq_ipfw.c\n+++ b/os-daq-modules/daq_ipfw.c\n@@ -26,7 +26,7 @@\n \n #include <sys/types.h>\n #include <sys/time.h>\n-#include <sys/unistd.h>\n+#include <unistd.h>\n \n #include <netinet/in.h>\n #include <sys/socket.h>\ndiff --git a/os-daq-modules/daq_ipq.c b/os-daq-modules/daq_ipq.c\nindex 77ec6e9505e5..b15e5cf82af0 100644\n--- a/os-daq-modules/daq_ipq.c\n+++ b/os-daq-modules/daq_ipq.c\n@@ -27,7 +27,7 @@\n \n #include <sys/types.h>\n #include <sys/time.h>\n-#include <sys/unistd.h>\n+#include <unistd.h>\n \n #include <netinet/ip.h>\n \ndiff --git a/os-daq-modules/daq_nfq.c b/os-daq-modules/daq_nfq.c\nindex 33021c0ec991..0df1e61c74c4 100644\n--- a/os-daq-modules/daq_nfq.c\n+++ b/os-daq-modules/daq_nfq.c\n@@ -27,7 +27,7 @@\n \n #include <sys/types.h>\n #include <sys/time.h>\n-#include <sys/unistd.h>\n+#include <unistd.h>\n \n #include <netinet/ip.h>\n \n-- \n1.9.1\n\n"
  },
  {
    "path": "package/daq/0002-parallel-grammar.patch",
    "content": "Fix parallel build\n\nhttps://bugs.gentoo.org/673390\n\nDownloaded from\nhttps://gitweb.gentoo.org/repo/gentoo.git/tree/net-libs/daq/files/daq-2.0.6-parallel-grammar.patch\n\nPatch was sent upstream: https://seclists.org/snort/2014/q3/1016\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- a/sfbpf/Makefile.am\n+++ b/sfbpf/Makefile.am\n@@ -43,13 +43,14 @@\n libsfbpf_la_LDFLAGS = -version-info 0:1:0 @XCCFLAGS@\n \n # use of $@ and $< here is a GNU idiom that borks BSD\n-sf_scanner.c: $(srcdir)/scanner.l\n+sf_scanner.c: $(srcdir)/scanner.l tokdefs.h\n \t@rm -f $(srcdir)/sf_scanner.c\n \t$(srcdir)/runlex.sh $(V_LEX) -osf_scanner.c $(srcdir)/scanner.l\n \n sf_scanner.o: sf_scanner.c tokdefs.h\n \n tokdefs.h: sf_grammar.c\n+\n sf_grammar.c: $(srcdir)/grammar.y\n \t@rm -f sf_grammar.c tokdefs.h\n \t$(V_YACC) -d $(srcdir)/grammar.y\n"
  },
  {
    "path": "package/daq/Config.in",
    "content": "config BR2_PACKAGE_DAQ\n\tbool \"daq\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\thelp\n\t  DAQ is a Data Acquisition library for packet I/O from the\n\t  Snort project.\n\n\t  https://www.snort.org\n\ncomment \"daq needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/daq/daq.hash",
    "content": "# From https://www.snort.org/downloads/snort/md5s\nmd5  ea796f001d1b00302e4e69e337ab2460  daq-2.0.7.tar.gz\n# Locally computed:\nsha256  bdc4e5a24d1ea492c39ee213a63c55466a2e8114b6a9abed609927ae13a7705e  daq-2.0.7.tar.gz\n\n# Hash for license files:\nsha256  07f28289c09fd9eb5a6ff7bc710ff40363601b1bbc6f3637d8ed412150e90819  COPYING\n"
  },
  {
    "path": "package/daq/daq.mk",
    "content": "################################################################################\n#\n# daq\n#\n################################################################################\n\nDAQ_VERSION = 2.0.7\nDAQ_SITE = https://www.snort.org/downloads/snort\nDAQ_LICENSE = GPL-2.0\nDAQ_LICENSE_FILES = COPYING\nDAQ_INSTALL_STAGING = YES\nDAQ_DEPENDENCIES = host-bison host-flex\n# 0002-parallel-grammar.patch\n# 2.0.7 needs autoreconf due to configure being older than configure.ac\nDAQ_AUTORECONF = YES\n\n# disable ipq module as libipq is deprecated\nDAQ_CONF_OPTS += --disable-ipq-module\n\n# Set --with-dnet-{includes,libraries} even if ipq and nfq modules are disabled\n# otherwise daq will call 'dnet-config --cflags' and 'dnet-config --libs' which\n# will result in a build failure if libdnet is installed on host\nDAQ_CONF_OPTS += \\\n\t--with-dnet-includes=$(STAGING_DIR)/usr/include \\\n\t--with-dnet-libraries=$(STAGING_DIR)/usr/lib\n\nifeq ($(BR2_PACKAGE_LIBDNET)$(BR2_PACKAGE_LIBNETFILTER_QUEUE),yy)\nDAQ_DEPENDENCIES += libdnet libnetfilter_queue\nDAQ_CONF_OPTS += --enable-nfq-module\nelse\nDAQ_CONF_OPTS += --disable-nfq-module\nendif\n\nifeq ($(BR2_PACKAGE_LIBPCAP),y)\nDAQ_DEPENDENCIES += libpcap\n# assume these flags are available to prevent configure from running\n# test programs while cross compiling\nDAQ_CONF_ENV += \\\n\tac_cv_lib_pcap_pcap_lib_version=yes \\\n\tdaq_cv_libpcap_version_1x=yes\nDAQ_CONF_OPTS += --enable-pcap-module\nelse\nDAQ_CONF_OPTS += --disable-pcap-module\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/daq3/Config.in",
    "content": "config BR2_PACKAGE_DAQ3\n\tbool \"daq3\"\n\tdepends on !BR2_PACKAGE_DAQ\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  DAQ is a Data Acquisition library for packet I/O from the\n\t  Snort project.\n\n\t  https://www.snort.org\n\ncomment \"daq3 needs a toolchain w/ dynamic library, gcc >= 4.9, threads\"\n\tdepends on !BR2_PACKAGE_DAQ\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/daq3/daq3.hash",
    "content": "# Locally computed:\nsha256  a376c7625d1442ddb7e3c75954c910cc9d64440e2f8f345981aa5fa6999ea206  daq3-3.0.4.tar.gz\n\n# Hash for license files:\nsha256  64601289158eddad72cb4de72652f9e64dc886942c910b38ddee93ba13b0db26  COPYING\nsha256  64601289158eddad72cb4de72652f9e64dc886942c910b38ddee93ba13b0db26  LICENSE\n"
  },
  {
    "path": "package/daq3/daq3.mk",
    "content": "################################################################################\n#\n# daq3\n#\n################################################################################\n\nDAQ3_VERSION = 3.0.4\nDAQ3_SITE = $(call github,snort3,libdaq,v$(DAQ3_VERSION))\nDAQ3_LICENSE = GPL-2.0\nDAQ3_LICENSE_FILES = COPYING LICENSE\nDAQ3_INSTALL_STAGING = YES\nDAQ3_DEPENDENCIES = host-pkgconf\n# From git\nDAQ3_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_LIBNETFILTER_QUEUE),y)\nDAQ3_DEPENDENCIES += libnetfilter_queue\nDAQ3_CONF_OPTS += --enable-nfq-module\nelse\nDAQ3_CONF_OPTS += --disable-nfq-module\nendif\n\nifeq ($(BR2_PACKAGE_LIBPCAP),y)\nDAQ3_DEPENDENCIES += libpcap\nDAQ3_CONF_OPTS += --enable-pcap-module\nelse\nDAQ3_CONF_OPTS += --disable-pcap-module\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/darkhttpd/0001-Declare-vars-outside-of-for-loop-for-std-c90.patch",
    "content": "From 81b491e60affd67f4ec2feccbee1cdf98dc57b81 Mon Sep 17 00:00:00 2001\nFrom: Emil Mikulic <emikulic@gmail.com>\nDate: Sun, 21 Mar 2021 15:03:14 +1100\nSubject: [PATCH] Declare vars outside of for() loop for -std=c90.\n\nFixes #2.\n\n[Retrieved from:\nhttps://github.com/emikulic/darkhttpd/commit/81b491e60affd67f4ec2feccbee1cdf98dc57b81]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n darkhttpd.c | 7 ++++---\n 1 file changed, 4 insertions(+), 3 deletions(-)\n\ndiff --git a/darkhttpd.c b/darkhttpd.c\nindex 219a8a3..268628a 100644\n--- a/darkhttpd.c\n+++ b/darkhttpd.c\n@@ -966,8 +966,9 @@ static char *base64_encode(char *str) {\n     char *encoded_data = malloc(output_length+1);\n     if (encoded_data == NULL) return NULL;\n \n-    for (int i = 0, j = 0; i < input_length;) {\n-\n+    int i;\n+    int j;\n+    for (i = 0, j = 0; i < input_length;) {\n         uint32_t octet_a = i < input_length ? (unsigned char)str[i++] : 0;\n         uint32_t octet_b = i < input_length ? (unsigned char)str[i++] : 0;\n         uint32_t octet_c = i < input_length ? (unsigned char)str[i++] : 0;\n@@ -981,7 +982,7 @@ static char *base64_encode(char *str) {\n     }\n \n     const int mod_table[] = {0, 2, 1};\n-    for (int i = 0; i < mod_table[input_length % 3]; i++)\n+    for (i = 0; i < mod_table[input_length % 3]; i++)\n         encoded_data[output_length - 1 - i] = '=';\n     encoded_data[output_length] = '\\0';\n \n"
  },
  {
    "path": "package/darkhttpd/Config.in",
    "content": "config BR2_PACKAGE_DARKHTTPD\n\tbool \"darkhttpd\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Darkhttpd is a simple, fast HTTP 1.1 web server which only\n\t  serves static content. It does not support PHP or CGI.\n\n\t  The behavior of darkhttpd can be altered by setting some\n\t  variables in /etc/default/darkhttpd:\n\n\t  - DARKHTTPD_ROOT: path to the server document root.\n\t  - DARKHTTPD_FLAGS: options to pass to darkhttpd.\n\n\t  https://unix4lyfe.org/darkhttpd/\n"
  },
  {
    "path": "package/darkhttpd/S50darkhttpd",
    "content": "#!/bin/sh\n#\n# Starts darkhttpd.\n#\n\n# Allow a few customizations from a config file\ntest -r /etc/default/darkhttpd && . /etc/default/darkhttpd\n\nDARKHTTPD_PROG=/usr/sbin/darkhttpd\nDARKHTTPD_PIDFILE=/var/run/darkhttpd.pid\nDARKHTTPD_ARGS=\"${DARKHTTPD_ROOT:-/var/www} --log /var/log/darkhttpd.log $DARKHTTPD_FLAGS --chroot --uid nobody --gid www-data\"\n\nstart() {\n    printf \"Starting darkhttpd: \"\n    start-stop-daemon -S -q -b -p $DARKHTTPD_PIDFILE -m --exec $DARKHTTPD_PROG -- $DARKHTTPD_ARGS\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n    printf \"Stopping darkhttpd: \"\n    start-stop-daemon -K -q -p $DARKHTTPD_PIDFILE\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nrestart() {\n    stop\n    start\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n    stop)\n        stop\n        ;;\n    restart|reload)\n        restart\n        ;;\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/darkhttpd/darkhttpd.hash",
    "content": "# Locally generated\nsha256  1d88c395ac79ca9365aa5af71afe4ad136a4ed45099ca398168d4a2014dc0fc2  darkhttpd-1.13.tar.gz\nsha256  44e784df460954c7760e2eeae69aecb12a3d23ca1c0a4f6047c3c6452b2e2f49  darkhttpd.c\n"
  },
  {
    "path": "package/darkhttpd/darkhttpd.mk",
    "content": "################################################################################\n#\n# darkhttpd\n#\n################################################################################\n\nDARKHTTPD_VERSION = 1.13\nDARKHTTPD_SITE = $(call github,emikulic,darkhttpd,v$(DARKHTTPD_VERSION))\nDARKHTTPD_LICENSE = MIT\nDARKHTTPD_LICENSE_FILES = darkhttpd.c\n\ndefine DARKHTTPD_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine DARKHTTPD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/darkhttpd \\\n\t\t$(TARGET_DIR)/usr/sbin/darkhttpd\nendef\n\ndefine DARKHTTPD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/darkhttpd/darkhttpd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/darkhttpd.service\nendef\n\ndefine DARKHTTPD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/darkhttpd/S50darkhttpd \\\n\t\t$(TARGET_DIR)/etc/init.d/S50darkhttpd\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/darkhttpd/darkhttpd.service",
    "content": "[Unit]\nDescription=Darkhttpd Web Server\nAfter=syslog.target network.target auditd.service\n\n[Service]\nEnvironment=\"DARKHTTPD_ROOT=/var/www\"\nEnvironmentFile=-/etc/default/darkhttpd\nExecStart=/usr/sbin/darkhttpd $DARKHTTPD_ROOT $DARKHTTPD_FLAGS --chroot --uid nobody --gid www-data\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/dash/Config.in",
    "content": "config BR2_PACKAGE_DASH\n\tbool \"dash\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  DASH is a POSIX-compliant implementation of /bin/sh that\n\t  aims to be as small as possible. It does this without\n\t  sacrificing speed where possible. In fact, it is\n\t  significantly faster than bash (the GNU Bourne-Again SHell)\n\t  for most tasks.\n\n\t  http://gondor.apana.org.au/~herbert/dash\n"
  },
  {
    "path": "package/dash/dash.hash",
    "content": "# From http://gondor.apana.org.au/~herbert/dash/files/dash-0.5.11.5.tar.gz.sha512sum\nsha512  5387e213820eeb44d812bb4697543023fd4662b51a9ffd52a702810fed8b28d23fbe35a7f371e6686107de9f81902eff109458964b4622f4c5412d60190a66bf  dash-0.5.11.5.tar.gz\n# Locally calculated\nsha256  254a7894923ff62e69184a991dcbccae97edee58a1105e8efbe78caf10595d72  COPYING\n"
  },
  {
    "path": "package/dash/dash.mk",
    "content": "################################################################################\n#\n# dash\n#\n################################################################################\n\nDASH_VERSION = 0.5.11.5\nDASH_SITE = http://gondor.apana.org.au/~herbert/dash/files\nDASH_LICENSE = BSD-3-Clause, GPL-2.0+ (mksignames.c)\nDASH_LICENSE_FILES = COPYING\n\n# dash does not build in parallel\nDASH_MAKE = $(MAKE1)\n\nifeq ($(BR2_PACKAGE_LIBEDIT),y)\nDASH_DEPENDENCIES += libedit host-pkgconf\nDASH_CONF_OPTS += --with-libedit\nDASH_CONF_ENV += LIBS=`pkg-config --libs libedit`\n\n# Enable line editing, Emacs style\ndefine DASH_INSTALL_PROFILE\n\tmkdir -p $(TARGET_DIR)/etc/profile.d\n\techo 'set -E' > $(TARGET_DIR)/etc/profile.d/dash.sh\nendef\nDASH_POST_INSTALL_TARGET_HOOKS += DASH_INSTALL_PROFILE\nelse\nDASH_CONF_OPTS += --without-libedit\nendif\n\ndefine DASH_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/src/dash $(TARGET_DIR)/bin/dash\nendef\n\n# Add /bin/dash to /etc/shells otherwise some login tools like dropbear\n# can reject the user connection. See man shells.\ndefine DASH_ADD_DASH_TO_SHELLS\n\tgrep -qsE '^/bin/dash$$' $(TARGET_DIR)/etc/shells \\\n\t\t|| echo \"/bin/dash\" >> $(TARGET_DIR)/etc/shells\nendef\nDASH_TARGET_FINALIZE_HOOKS += DASH_ADD_DASH_TO_SHELLS\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/datatables/Config.in",
    "content": "config BR2_PACKAGE_DATATABLES\n\tbool \"datatables\"\n\thelp\n\t  Javascript library providing advanced interaction controls\n\t  for your HTML tables.\n\n\t  https://datatables.net\n"
  },
  {
    "path": "package/datatables/datatables.hash",
    "content": "# Locally computed:\nsha256\te2c79dd9d02caa04130ce888061bc922e18561e72e842ba0cb657d1812d9f1bf  DataTables-1.10.20.zip\nsha256\tc6a873f21550ed804f76013c36e14225704c1aa551fdb870e0c626eb91c19247  license.txt\n"
  },
  {
    "path": "package/datatables/datatables.mk",
    "content": "################################################################################\n#\n# datatables\n#\n################################################################################\n\nDATATABLES_VERSION = 1.10.20\nDATATABLES_SITE = https://datatables.net/releases\nDATATABLES_SOURCE = DataTables-$(DATATABLES_VERSION).zip\nDATATABLES_LICENSE = MIT\nDATATABLES_LICENSE_FILES = license.txt\n\ndefine DATATABLES_EXTRACT_CMDS\n\t$(UNZIP) $(DATATABLES_DL_DIR)/$(DATATABLES_SOURCE) -d $(@D)\n\tmv $(@D)/DataTables-$(DATATABLES_VERSION)/* $(@D)\n\trmdir $(@D)/DataTables-$(DATATABLES_VERSION)\nendef\n\ndefine DATATABLES_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/datatables/css $(TARGET_DIR)/var/www/datatables/js\n\t$(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables/css $(@D)/media/css/*.min.css\n\t$(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables/js $(@D)/media/js/*.min.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/datatables-buttons/Config.in",
    "content": "config BR2_PACKAGE_DATATABLES_BUTTONS\n\tbool \"datatables-buttons\"\n\tdepends on BR2_PACKAGE_DATATABLES\n\tselect BR2_PACKAGE_JSZIP\n\thelp\n\t  The Buttons library for DataTables provides a framework with\n\t  common options and API that can be used with DataTables, but\n\t  is also very extensible, recognising that you will likely want\n\t  to use buttons which perform an action unique to your\n\t  applications.\n\n\t  https://datatables.net/extensions/buttons\n"
  },
  {
    "path": "package/datatables-buttons/datatables-buttons.hash",
    "content": "# Locally computed:\nsha256\t427632c0245f488328edab83b53294545744c8de621a5eaa9dd3d257d7ed7775  Buttons-1.6.1.zip\nsha256\t21fa7cbc3c00bcad1e0f3417d465e702bd470d7dc446a6deff80c8fc5eda9148  License.txt\n"
  },
  {
    "path": "package/datatables-buttons/datatables-buttons.mk",
    "content": "################################################################################\n#\n# datatables-buttons\n#\n################################################################################\n\nDATATABLES_BUTTONS_VERSION = 1.6.1\nDATATABLES_BUTTONS_SITE = https://datatables.net/releases\nDATATABLES_BUTTONS_SOURCE = Buttons-$(DATATABLES_BUTTONS_VERSION).zip\nDATATABLES_BUTTONS_LICENSE = MIT\nDATATABLES_BUTTONS_LICENSE_FILES = License.txt\n\ndefine DATATABLES_BUTTONS_EXTRACT_CMDS\n\t$(UNZIP) $(DATATABLES_BUTTONS_DL_DIR)/$(DATATABLES_BUTTONS_SOURCE) -d $(@D)\n\tmv $(@D)/Buttons-$(DATATABLES_BUTTONS_VERSION)/* $(@D)\n\trmdir $(@D)/Buttons-$(DATATABLES_BUTTONS_VERSION)\nendef\n\ndefine DATATABLES_BUTTONS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/datatables-buttons/css $(TARGET_DIR)/var/www/datatables-buttons/js\n\t$(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables-buttons/css $(@D)/css/*.min.css\n\t$(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables-buttons/js $(@D)/js/*.min.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/datatables-fixedcolumns/Config.in",
    "content": "config BR2_PACKAGE_DATATABLES_FIXEDCOLUMNS\n\tbool \"datatables-fixedcolumns\"\n\tdepends on BR2_PACKAGE_DATATABLES\n\thelp\n\t  When making use of DataTables' x-axis scrolling feature\n\t  (scrollX), you may wish to fix the left or right most columns\n\t  in place. This extension for DataTables provides exactly this\n\t  option.\n\n\t  https://datatables.net/extensions/fixedcolumns\n"
  },
  {
    "path": "package/datatables-fixedcolumns/datatables-fixedcolumns.hash",
    "content": "# Locally computed:\nsha256\t53a7b20ea9dbb6498137cb7260bde8605989ec578e4b71787f5ebc4ef9910bd9  FixedColumns-3.3.0.zip\nsha256\te8e92f97216f9ea00cb2735b933a91ec8e3869bed37b6d63a90f76f41508f2de  License.txt\n"
  },
  {
    "path": "package/datatables-fixedcolumns/datatables-fixedcolumns.mk",
    "content": "################################################################################\n#\n# datatables-fixedcolumns\n#\n################################################################################\n\nDATATABLES_FIXEDCOLUMNS_VERSION = 3.3.0\nDATATABLES_FIXEDCOLUMNS_SITE = https://datatables.net/releases\nDATATABLES_FIXEDCOLUMNS_SOURCE = FixedColumns-$(DATATABLES_FIXEDCOLUMNS_VERSION).zip\nDATATABLES_FIXEDCOLUMNS_LICENSE = MIT\nDATATABLES_FIXEDCOLUMNS_LICENSE_FILES = License.txt\n\ndefine DATATABLES_FIXEDCOLUMNS_EXTRACT_CMDS\n\t$(UNZIP) $(DATATABLES_FIXEDCOLUMNS_DL_DIR)/$(DATATABLES_FIXEDCOLUMNS_SOURCE) -d $(@D)\n\tmv $(@D)/FixedColumns-$(DATATABLES_FIXEDCOLUMNS_VERSION)/* $(@D)\n\trmdir $(@D)/FixedColumns-$(DATATABLES_FIXEDCOLUMNS_VERSION)\nendef\n\ndefine DATATABLES_FIXEDCOLUMNS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/datatables-fixedcolumns/css $(TARGET_DIR)/var/www/datatables-fixedcolumns/js\n\t$(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables-fixedcolumns/css $(@D)/css/*.min.css\n\t$(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables-fixedcolumns/js $(@D)/js/*.min.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/datatables-responsive/Config.in",
    "content": "config BR2_PACKAGE_DATATABLES_RESPONSIVE\n\tbool \"datatables-responsive\"\n\tdepends on BR2_PACKAGE_DATATABLES\n\thelp\n\t  In the modern world of responsive web design tables can often\n\t  cause a particular problem for designers due to their row\n\t  based layout.  Responsive is an extension for DataTables that\n\t  resolves that problem by optimising the table's layout for\n\t  different screen sizes through the dynamic insertion and\n\t  removal of columns from the table.\n\n\t  https://datatables.net/extensions/responsive\n"
  },
  {
    "path": "package/datatables-responsive/datatables-responsive.hash",
    "content": "# Locally computed:\nsha256\t47caf3b753dd2c537b8834816eaf38c4df214cb4e6a97144e0de4cf82ad24d02  Responsive-2.2.3.zip\nsha256\tda4e1020ae97c095a14d7830c1a8a793e080c062e22d749ecd3fc3c075673dbf  License.txt\n"
  },
  {
    "path": "package/datatables-responsive/datatables-responsive.mk",
    "content": "################################################################################\n#\n# datatables-responsive\n#\n################################################################################\n\nDATATABLES_RESPONSIVE_VERSION = 2.2.3\nDATATABLES_RESPONSIVE_SITE = https://datatables.net/releases\nDATATABLES_RESPONSIVE_SOURCE = Responsive-$(DATATABLES_RESPONSIVE_VERSION).zip\nDATATABLES_RESPONSIVE_LICENSE = MIT\nDATATABLES_RESPONSIVE_LICENSE_FILES = License.txt\n\ndefine DATATABLES_RESPONSIVE_EXTRACT_CMDS\n\t$(UNZIP) $(DATATABLES_RESPONSIVE_DL_DIR)/$(DATATABLES_RESPONSIVE_SOURCE) -d $(@D)\n\tmv $(@D)/Responsive-$(DATATABLES_RESPONSIVE_VERSION)/* $(@D)\n\trmdir $(@D)/Responsive-$(DATATABLES_RESPONSIVE_VERSION)\nendef\n\ndefine DATATABLES_RESPONSIVE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/datatables-responsive/css $(TARGET_DIR)/var/www/datatables-responsive/js\n\t$(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables-responsive/css $(@D)/css/*.min.css\n\t$(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/datatables-responsive/js $(@D)/js/*.min.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dav1d/Config.in",
    "content": "config BR2_PACKAGE_DAV1D\n\tbool \"dav1d\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # pthread\n\thelp\n\t  dav1d is a new AV1 cross-platform decoder, open-source, and\n\t  focused on speed and correctness.\n\n\t  https://code.videolan.org/videolan/dav1d\n\ncomment \"dav1d needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/dav1d/dav1d.hash",
    "content": "# Locally computed\nsha256  0d198c4fe63fe7f0395b1b17de75b21c8c4508cd3204996229355759efa30ef8  dav1d-0.9.2.tar.bz2\nsha256  b327887de263238deaa80c34cdd2ff3e0ba1d35db585ce14a37ce3e74ee389e9  COPYING\n"
  },
  {
    "path": "package/dav1d/dav1d.mk",
    "content": "################################################################################\n#\n# dav1d\n#\n################################################################################\n\nDAV1D_VERSION = 0.9.2\nDAV1D_SOURCE = dav1d-$(DAV1D_VERSION).tar.bz2\nDAV1D_SITE = https://code.videolan.org/videolan/dav1d/-/archive/$(DAV1D_VERSION)\nDAV1D_LICENSE = BSD-2-Clause\nDAV1D_LICENSE_FILES = COPYING\nDAV1D_INSTALL_STAGING = YES\nDAV1D_CONF_OPTS = \\\n\t-Denable_tests=false \\\n\t-Denable_tools=false\n\nifeq ($(BR2_i386)$(BR2_x86_64),y)\nDAV1D_DEPENDENCIES += host-nasm\nendif\n\n# ARM assembly requires v6+ ISA\nifeq ($(BR2_ARM_CPU_ARMV4)$(BR2_ARM_CPU_ARMV5)$(BR2_ARM_CPU_ARMV7M),y)\nDAV1D_CONF_OPTS += -Denable_asm=false\nendif\n\n# Uses __atomic_fetch_add_4\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nDAV1D_LDFLAGS += -latomic\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/davfs2/0001-src-Makefile.am-do-not-hardcode-fstack-protector-str.patch",
    "content": "From d209ef650cf2f760ef8217748ab10716bd22d60d Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <peter@korsgaard.com>\nDate: Sun, 24 Jun 2018 10:35:37 +0200\nSubject: [PATCH] src/Makefile.am: do not hardcode -fstack-protector-strong\n\ndavfs2 does not truly require -fstack-protector-strong, so do not hardcode\nit.\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n src/Makefile.am | 3 +--\n src/Makefile.in | 3 +--\n 2 files changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/src/Makefile.am b/src/Makefile.am\nindex f083462..ed6b682 100644\n--- a/src/Makefile.am\n+++ b/src/Makefile.am\n@@ -32,8 +32,7 @@ mount_davfs_SOURCES = cache.c dav_coda.c \\\n         kernel_interface.h mount_davfs.h webdav.h\n umount_davfs_SOURCES = umount_davfs.c defaults.h\n \n-AM_CFLAGS = -Wall -Werror=format-security \\\n-        -fstack-protector-strong --param=ssp-buffer-size=4\n+AM_CFLAGS = -Wall -Werror=format-security\n DEFS = -DPROGRAM_NAME=\\\"mount.davfs\\\" \\\n        -DDAV_SYS_CONF_DIR=\\\"$(pkgsysconfdir)\\\" \\\n        -DDAV_LOCALSTATE_DIR=\\\"$(dav_localstatedir)\\\" \\\ndiff --git a/src/Makefile.in b/src/Makefile.in\nindex 9fee542..e98758d 100644\n--- a/src/Makefile.in\n+++ b/src/Makefile.in\n@@ -315,8 +315,7 @@ mount_davfs_SOURCES = cache.c dav_coda.c \\\n         kernel_interface.h mount_davfs.h webdav.h\n \n umount_davfs_SOURCES = umount_davfs.c defaults.h\n-AM_CFLAGS = -Wall -Werror=format-security \\\n-        -fstack-protector-strong --param=ssp-buffer-size=4\n+AM_CFLAGS = -Wall -Werror=format-security\n \n all: all-am\n \n-- \n2.11.0\n\n"
  },
  {
    "path": "package/davfs2/Config.in",
    "content": "comment \"davfs2 needs a glibc or uClibc toolchain\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_DAVFS2\n\tbool \"davfs2\"\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # error.h\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_NEON\n\tselect BR2_PACKAGE_NEON_XML\n\thelp\n\t  davfs2 is a Linux file system driver that allows to\n\t  mount a WebDAV resource. WebDAV is an extension to HTTP/1.1\n\t  that allows remote collaborative authoring of Web resources.\n\t  To use davfs2 via /etc/fstab, FEATURE_MOUNT_HELPERS\n\t  must be selected in busybox configuration.\n\n\t  http://savannah.nongnu.org/projects/davfs2\n"
  },
  {
    "path": "package/davfs2/davfs2.hash",
    "content": "# Locally calculated\nsha256  2e6b675685bd917772be60f0999ae098c80f79ff20dc131e8fec4547cbb63b50  davfs2-1.6.0.tar.gz\n# License file, locally calculated\nsha256  0ae0485a5bd37a63e63603596417e4eb0e653334fa6c7f932ca3a0e85d4af227  COPYING\n"
  },
  {
    "path": "package/davfs2/davfs2.mk",
    "content": "################################################################################\n#\n# davfs2\n#\n################################################################################\n\nDAVFS2_VERSION = 1.6.0\nDAVFS2_SITE = http://download.savannah.nongnu.org/releases/davfs2\nDAVFS2_LICENSE = GPL-3.0+\nDAVFS2_LICENSE_FILES = COPYING\nDAVFS2_CPE_ID_VENDOR = werner_baumann\n\nDAVFS2_DEPENDENCIES = \\\n\tneon \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv) \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nDAVFS2_CONF_ENV += \\\n\tac_cv_path_NEON_CONFIG=$(STAGING_DIR)/usr/bin/neon-config \\\n\tLIBS=$(TARGET_NLS_LIBS)\n\ndefine DAVFS2_USERS\n\tdavfs2 -1 davfs2 -1 * - - - davfs user\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/davici/Config.in",
    "content": "comment \"davici needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_DAVICI\n\tbool \"davici\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_STRONGSWAN\n\thelp\n\t  davici is an alternative implementation of the VICI\n\t  client protocol, targeting better integration in other\n\t  software stacks.\n\n\t  https://github.com/strongswan/davici\n"
  },
  {
    "path": "package/davici/davici.hash",
    "content": "# Locally calculated\nsha256  b03c5a1aad905e962271d70246d6af6c337ffd00449d990082ea02161327bde8  davici-1.4.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/davici/davici.mk",
    "content": "################################################################################\n#\n# davici\n#\n################################################################################\n\nDAVICI_VERSION = 1.4\nDAVICI_SITE = $(call github,strongswan,davici,v$(DAVICI_VERSION))\nDAVICI_LICENSE = LGPL-2.1+\nDAVICI_LICENSE_FILES = COPYING\nDAVICI_CPE_ID_VENDOR = strongswan\nDAVICI_DEPENDENCIES = strongswan\nDAVICI_INSTALL_STAGING = YES\nDAVICI_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dawgdic/Config.in",
    "content": "config BR2_PACKAGE_DAWGDIC\n\tbool \"dawgdic\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\t# needs std::strtoll\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6\n\thelp\n\t  dawgdic provides a library for building and accessing\n\t  dictionaries implemented with directed acyclic word graphs\n\t  (DAWG). A dawg is constructed by minimizing a trie as a\n\t  deterministic finite automaton (DFA), and thus the dawg has\n\t  an advantage in memory usage. In addition, dawgdic uses a\n\t  double-array as a base data structure, so its retrieval\n\t  speed is as fast as that of Darts, a library for building\n\t  and accessing double-array tries.\n\n\t  https://github.com/stil/dawgdic\n\ncomment \"dawgdic needs a toolchain w/ C++, gcc >= 4.6\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_6\n"
  },
  {
    "path": "package/dawgdic/dawgdic.hash",
    "content": "# Locally calculated\nsha256  54622a3e79ff3ad2c01a830ec52b997b42ead468b18af5acebab3a4ff32a5ad6  dawgdic-16ac537ba9883ff01b63b6d1fdc3072150c68fee.tar.gz\nsha256  3059f68686f1c5bc6ed0e9db415fc257c4e7618b6ac58ecce83986eb8a7cf501  COPYING\n"
  },
  {
    "path": "package/dawgdic/dawgdic.mk",
    "content": "################################################################################\n#\n# dawgdic\n#\n################################################################################\n\nDAWGDIC_VERSION = 16ac537ba9883ff01b63b6d1fdc3072150c68fee\nDAWGDIC_SITE = $(call github,stil,dawgdic,$(DAWGDIC_VERSION))\nDAWGDIC_LICENSE = BSD-3-Clause\nDAWGDIC_LICENSE_FILES = COPYING\nDAWGDIC_AUTORECONF = YES\nDAWGDIC_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dbus/Config.in",
    "content": "config BR2_PACKAGE_DBUS\n\tbool \"dbus\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# uses fork()\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_EXPAT\n\thelp\n\t  The D-Bus message bus system.\n\n\t  https://www.freedesktop.org/wiki/Software/dbus\n\ncomment \"dbus needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/dbus/S30dbus",
    "content": "#!/bin/sh\n#\n# messagebus:   The D-BUS systemwide message bus\n#\n# chkconfig: 345 97 03\n# description:  This is a daemon which broadcasts notifications of system events \\\n#               and other messages. See http://www.freedesktop.org/software/dbus/\n#\n# processname: dbus-daemon\n# pidfile: /run/messagebus.pid\n#\n\n# Create needed directories.\n[ -d /run/dbus ] || mkdir -p /run/dbus\n[ -d /var/lock/subsys ] || mkdir -p /var/lock/subsys\n[ -d /tmp/dbus ] || mkdir -p /tmp/dbus\n\nRETVAL=0\n\nstart() {\n    printf \"Starting system message bus: \"\n\n    dbus-uuidgen --ensure\n    dbus-daemon --system\n    RETVAL=$?\n    echo \"done\"\n    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dbus-daemon\n}\n\nstop() {\n    printf \"Stopping system message bus: \"\n\n    ## we don't want to kill all the per-user $processname, we want\n    ## to use the pid file *only*; because we use the fake nonexistent \n    ## program name \"$servicename\" that should be safe-ish\n    killall dbus-daemon\n    RETVAL=$?\n    echo \"done\"\n    if [ $RETVAL -eq 0 ]; then\n        rm -f /var/lock/subsys/dbus-daemon\n        rm -f /run/messagebus.pid\n    fi\n}\n\n# See how we were called.\ncase \"$1\" in\n    start)\n        start\n        ;;\n    stop)\n        stop\n        ;;\n    restart)\n        stop\n        start\n        ;;\n    condrestart)\n        if [ -f /var/lock/subsys/$servicename ]; then\n            stop\n            start\n        fi\n        ;;\n    reload)\n        echo \"Message bus can't reload its configuration, you have to restart it\"\n        RETVAL=$?\n        ;;\n    *)\n        echo \"Usage: $0 {start|stop|restart|condrestart|reload}\"\n        ;;\nesac\nexit $RETVAL\n"
  },
  {
    "path": "package/dbus/dbus.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://dbus.freedesktop.org/releases/dbus/dbus-1.12.20.tar.gz.asc\n# using key 36EC5A6448A4F5EF79BEFE98E05AE1478F814C4F\nsha256  f77620140ecb4cdc67f37fb444f8a6bea70b5b6461f12f1cbe2cec60fa7de5fe  dbus-1.12.20.tar.gz\n\n# Locally calculated\nsha256  0e46f54efb12d04ab5c33713bacd0e140c9a35b57ae29e03c853203266e8f3a1  COPYING\n"
  },
  {
    "path": "package/dbus/dbus.mk",
    "content": "################################################################################\n#\n# dbus\n#\n################################################################################\n\nDBUS_VERSION = 1.12.20\nDBUS_SITE = https://dbus.freedesktop.org/releases/dbus\nDBUS_LICENSE = AFL-2.1 or GPL-2.0+ (library, tools), GPL-2.0+ (tools)\nDBUS_LICENSE_FILES = COPYING\nDBUS_CPE_ID_VENDOR = d-bus_project\nDBUS_CPE_ID_PRODUCT = d-bus\nDBUS_INSTALL_STAGING = YES\n\ndefine DBUS_PERMISSIONS\n\t/usr/libexec/dbus-daemon-launch-helper f 4750 0 dbus - - - - -\nendef\n\ndefine DBUS_USERS\n\tdbus -1 dbus -1 * /run/dbus - dbus DBus messagebus user\nendef\n\nDBUS_DEPENDENCIES = host-pkgconf expat\n\nDBUS_SELINUX_MODULES = dbus\n\nDBUS_CONF_OPTS = \\\n\t--with-dbus-user=dbus \\\n\t--disable-tests \\\n\t--disable-asserts \\\n\t--disable-xml-docs \\\n\t--disable-doxygen-docs \\\n\t--with-system-socket=/run/dbus/system_bus_socket \\\n\t--with-system-pid-file=/run/messagebus.pid\n\nifeq ($(BR2_STATIC_LIBS),y)\nDBUS_CONF_OPTS += LIBS='-pthread'\nendif\n\nifeq ($(BR2_microblaze),y)\n# microblaze toolchain doesn't provide inotify_rm_* but does have sys/inotify.h\nDBUS_CONF_OPTS += --disable-inotify\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nDBUS_CONF_OPTS += --enable-selinux\nDBUS_DEPENDENCIES += libselinux\nelse\nDBUS_CONF_OPTS += --disable-selinux\nendif\n\nifeq ($(BR2_PACKAGE_AUDIT)$(BR2_PACKAGE_LIBCAP_NG),yy)\nDBUS_CONF_OPTS += --enable-libaudit\nDBUS_DEPENDENCIES += audit libcap-ng\nelse\nDBUS_CONF_OPTS += --disable-libaudit\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)\nDBUS_CONF_OPTS += --with-x\nDBUS_DEPENDENCIES += xlib_libX11\nifeq ($(BR2_PACKAGE_XLIB_LIBSM),y)\nDBUS_DEPENDENCIES += xlib_libSM\nendif\nelse\nDBUS_CONF_OPTS += --without-x\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nDBUS_CONF_OPTS += \\\n\t--enable-systemd \\\n\t--with-systemdsystemunitdir=/usr/lib/systemd/system\nDBUS_DEPENDENCIES += systemd\nelse\nDBUS_CONF_OPTS += --disable-systemd\nendif\n\n# fix rebuild (dbus makefile errors out if /var/lib/dbus is a symlink)\ndefine DBUS_REMOVE_VAR_LIB_DBUS\n\trm -rf $(TARGET_DIR)/var/lib/dbus\nendef\n\nDBUS_PRE_INSTALL_TARGET_HOOKS += DBUS_REMOVE_VAR_LIB_DBUS\n\ndefine DBUS_REMOVE_DEVFILES\n\trm -rf $(TARGET_DIR)/usr/lib/dbus-1.0\nendef\n\nDBUS_POST_INSTALL_TARGET_HOOKS += DBUS_REMOVE_DEVFILES\n\ndefine DBUS_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/dbus/S30dbus \\\n\t\t$(TARGET_DIR)/etc/init.d/S30dbus\n\n\tmkdir -p $(TARGET_DIR)/var/lib\n\trm -rf $(TARGET_DIR)/var/lib/dbus\n\tln -sf /tmp/dbus $(TARGET_DIR)/var/lib/dbus\nendef\n\ndefine DBUS_INSTALL_INIT_SYSTEMD\n\tmkdir -p $(TARGET_DIR)/var/lib/dbus\n\tln -sf /etc/machine-id $(TARGET_DIR)/var/lib/dbus/machine-id\nendef\n\nHOST_DBUS_DEPENDENCIES = host-pkgconf host-expat\nHOST_DBUS_CONF_OPTS = \\\n\t--with-dbus-user=dbus \\\n\t--disable-tests \\\n\t--disable-asserts \\\n\t--disable-selinux \\\n\t--disable-xml-docs \\\n\t--disable-doxygen-docs \\\n\t--disable-systemd \\\n\t--without-x\n\n# dbus for the host\nDBUS_HOST_INTROSPECT = $(HOST_DBUS_DIR)/introspect.xml\n\nHOST_DBUS_GEN_INTROSPECT = \\\n\t$(HOST_DIR)/bin/dbus-daemon --introspect > $(DBUS_HOST_INTROSPECT)\n\nHOST_DBUS_POST_INSTALL_HOOKS += HOST_DBUS_GEN_INTROSPECT\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/dbus-cpp/0001-gcc4.7.patch",
    "content": "Fix build failure with gcc 4.7+\nFrom bugtracker: http://sourceforge.net/p/dbus-cplusplus/patches/13/\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff --git a/include/dbus-c++/eventloop-integration.h b/include/dbus-c++/eventloop-integration.h\nindex 1b0302e..3e44304 100644\n--- a/include/dbus-c++/eventloop-integration.h\n+++ b/include/dbus-c++/eventloop-integration.h\n@@ -26,6 +26,7 @@\n #define __DBUSXX_EVENTLOOP_INTEGRATION_H\n \n #include <errno.h>\n+#include <unistd.h>\n #include \"api.h\"\n #include \"dispatcher.h\"\n #include \"util.h\"\n"
  },
  {
    "path": "package/dbus-cpp/0002-cross-compile-tools.patch",
    "content": "tools: just do proper cross-compile\n\nThose tools are not used during the build; besides, they are installed.\n\nSo they don't need to not be cross-compiled.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\n---\nUpstream status: not submitted, upstream is dead.\n\ndiff -durN dbus-cpp-0.9.0.orig/tools/Makefile.am dbus-cpp-0.9.0/tools/Makefile.am\n--- dbus-cpp-0.9.0.orig/tools/Makefile.am\t2017-03-21 21:48:57.013409423 +0100\n+++ dbus-cpp-0.9.0/tools/Makefile.am\t2017-03-21 21:49:35.329979798 +0100\n@@ -1,7 +1,3 @@\n-# hacky, but ...\n-\n-CXX = $(CXX_FOR_BUILD)\n-\n AM_CPPFLAGS = \\\n \t$(dbus_CFLAGS) \\\n \t$(xml_CFLAGS) \\\n@@ -9,11 +3,7 @@\n \t-I$(top_builddir)/include \\\n \t-Wall\n \n-if CROSS_COMPILING\n-libdbus_cxx_la = $(BUILD_LIBDBUS_CXX_DIR)/src/libdbus-c++-1.la\n-else\n libdbus_cxx_la = $(top_builddir)/src/libdbus-c++-1.la\n-endif\n \n bin_PROGRAMS = dbusxx-xml2cpp dbusxx-introspect\n \n"
  },
  {
    "path": "package/dbus-cpp/0003-src-pipe.c-fix-build-error-with-gcc-7.x.patch",
    "content": "From 167042116f523f90911f3a28c4ec065918d56cc9 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 22 Aug 2017 00:02:52 +0200\nSubject: [PATCH] src/pipe.c: fix build error with gcc 7.x\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe write function takes a char* as argument, not a char.\n\nFixes:\n\npipe.cpp: In member function ‘void DBus::Pipe::signal()’:\npipe.cpp:86:29: error: invalid conversion from ‘char’ to ‘const void*’ [-fpermissive]\n   ::write(_fd_write, '\\0', 1);\n                             ^\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n src/pipe.cpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/pipe.cpp b/src/pipe.cpp\nindex 01211b3..d0572c7 100644\n--- a/src/pipe.cpp\n+++ b/src/pipe.cpp\n@@ -83,5 +83,5 @@ ssize_t Pipe::read(void *buffer, unsigned int &nbytes)\n void Pipe::signal()\n {\n   // TODO: ignoring return of read/write generates warning; maybe relevant for eventloop work...\n-  ::write(_fd_write, '\\0', 1);\n+  ::write(_fd_write, \"\\0\", 1);\n }\n-- \n2.9.4\n\n"
  },
  {
    "path": "package/dbus-cpp/Config.in",
    "content": "config BR2_PACKAGE_DBUS_CPP\n\tbool \"dbus-c++\"\n\tdepends on BR2_PACKAGE_DBUS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus\n\tdepends on BR2_USE_MMU # dbus\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # no PTHREAD_RECURSIVE_MUTEX_*\n\tselect BR2_PACKAGE_EXPAT\n\thelp\n\t  dbus-c++ attempts to provide a C++ API for D-BUS.\n\t  The library has a glib/gtk and an Ecore mainloop integration.\n\t  It also offers an optional own main loop.\n\n\t  http://sourceforge.net/projects/dbus-cplusplus/\n\ncomment \"dbus-c++ needs a uClibc or glibc toolchain w/ C++, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_DBUS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| BR2_TOOLCHAIN_USES_MUSL\n"
  },
  {
    "path": "package/dbus-cpp/dbus-cpp.hash",
    "content": "# Locally computed:\nsha256  bc11ac297b3cb010be904c72789695543ee3fdf3d75cdc8225fd371385af4e61  libdbus-c++-0.9.0.tar.gz\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING\n"
  },
  {
    "path": "package/dbus-cpp/dbus-cpp.mk",
    "content": "################################################################################\n#\n# dbus-cpp\n#\n################################################################################\n\nDBUS_CPP_VERSION = 0.9.0\nDBUS_CPP_SITE = http://downloads.sourceforge.net/project/dbus-cplusplus/dbus-c++/$(DBUS_CPP_VERSION)\nDBUS_CPP_SOURCE = libdbus-c++-$(DBUS_CPP_VERSION).tar.gz\nDBUS_CPP_INSTALL_STAGING = YES\n# expat is required for the tools irrespective of dbus xml backend\nDBUS_CPP_DEPENDENCIES = host-dbus-cpp host-pkgconf dbus expat\nHOST_DBUS_CPP_DEPENDENCIES = host-pkgconf host-dbus host-expat\nDBUS_CPP_CONF_OPTS = \\\n\t--disable-examples \\\n\t--disable-tests \\\n\t--disable-doxygen-docs \\\n\t--with-build-libdbus-cxx=$(HOST_DBUS_CPP_BUILDDIR)\nHOST_DBUS_CPP_CONF_OPTS = \\\n\t--disable-examples \\\n\t--disable-tests \\\n\t--disable-doxygen-docs \\\n\t--disable-ecore \\\n\t--disable-glib\nDBUS_CPP_AUTORECONF = YES\nDBUS_CPP_LICENSE = LGPL-2.1+\nDBUS_CPP_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_EFL),y)\nDBUS_CPP_CONF_OPTS += --enable-ecore\nDBUS_CPP_DEPENDENCIES += efl\nelse\nDBUS_CPP_CONF_OPTS += --disable-ecore\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nDBUS_CPP_CONF_OPTS += --enable-glib\nDBUS_CPP_DEPENDENCIES += libglib2\nelse\nDBUS_CPP_CONF_OPTS += --disable-glib\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/dbus-glib/Config.in",
    "content": "config BR2_PACKAGE_DBUS_GLIB\n\tbool \"dbus-glib\"\n\tdepends on BR2_PACKAGE_DBUS\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  GLib bindings for D-Bus.\n\n\t  http://www.freedesktop.org/software/dbus\n\ncomment \"dbus-glib needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_DBUS\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/dbus-glib/dbus-glib.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  7d550dccdfcd286e33895501829ed971eeb65c614e73aadb4a08aeef719b143a  dbus-glib-0.112.tar.gz\n\n# Locally calculated\nsha256  589bc300214a8b9ecd121f51570fe6342617487fd8fc0fb1f4ec26a13d5b96f8  COPYING\n"
  },
  {
    "path": "package/dbus-glib/dbus-glib.mk",
    "content": "################################################################################\n#\n# dbus-glib\n#\n################################################################################\n\nDBUS_GLIB_VERSION = 0.112\nDBUS_GLIB_SITE = http://dbus.freedesktop.org/releases/dbus-glib\nDBUS_GLIB_INSTALL_STAGING = YES\nDBUS_GLIB_LICENSE = AFL-2.1 or GPL-2.0+\nDBUS_GLIB_LICENSE_FILES = COPYING\nDBUS_GLIB_CPE_ID_VENDOR = freedesktop\n\nDBUS_GLIB_CONF_ENV = \\\n\tac_cv_have_abstract_sockets=yes \\\n\tac_cv_func_posix_getpwnam_r=yes \\\n\thave_abstract_sockets=yes\n\nDBUS_GLIB_CONF_OPTS = \\\n\t--disable-tests \\\n\t--disable-xml-docs \\\n\t--with-introspect-xml=$(DBUS_HOST_INTROSPECT) \\\n\t--with-dbus-binding-tool=$(DBUS_GLIB_HOST_BINARY) \\\n\t--disable-bash-completion \\\n\t--disable-doxygen-docs \\\n\t--enable-asserts=yes\n\nDBUS_GLIB_DEPENDENCIES = host-pkgconf dbus host-dbus host-dbus-glib libglib2 expat\n\nHOST_DBUS_GLIB_DEPENDENCIES = host-dbus host-expat host-libglib2\n\nHOST_DBUS_GLIB_CONF_OPTS = \\\n\t--disable-tests \\\n\t--disable-xml-docs \\\n\t--disable-bash-completion \\\n\t--disable-doxygen-docs \\\n\t--enable-asserts=yes\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n\n# dbus-glib for the host\nDBUS_GLIB_HOST_BINARY = $(HOST_DIR)/bin/dbus-binding-tool\n"
  },
  {
    "path": "package/dbus-python/Config.in",
    "content": "config BR2_PACKAGE_DBUS_PYTHON\n\tbool \"dbus-python\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_PACKAGE_DBUS\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_LIBGLIB2\n\t# pyexpat: runtime dependency only\n\tselect BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3\n\thelp\n\t  Python bindings for D-Bus\n\n\t  http://dbus.freedesktop.org/doc/dbus-python/\n\ncomment \"dbus-python needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_PACKAGE_DBUS && (BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3)\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/dbus-python/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_DBUS_PYTHON\n\tbool \"host dbus-python\"\n\thelp\n\t  Python bindings for D-Bus\n\n\t  http://dbus.freedesktop.org/doc/dbus-python/\n"
  },
  {
    "path": "package/dbus-python/dbus-python.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  92bdd1e68b45596c833307a5ff4b217ee6929a1502f5341bae28fd120acf7260  dbus-python-1.2.18.tar.gz\n\n# Locally calculated\nsha256  1e4562245383fdb5203b1769789e5b28bba21af4923aea7e8b2614f7f93623c0  COPYING\nsha256  064523e3ab64d6f03904132b2cc4a1bd8500586edb4cd050c2ff2b96aed4c33b  dbus-gmain/COPYING\n"
  },
  {
    "path": "package/dbus-python/dbus-python.mk",
    "content": "################################################################################\n#\n# dbus-python\n#\n################################################################################\n\nDBUS_PYTHON_VERSION = 1.2.18\nDBUS_PYTHON_SITE = http://dbus.freedesktop.org/releases/dbus-python\nDBUS_PYTHON_INSTALL_STAGING = YES\nDBUS_PYTHON_LICENSE = MIT (dbus-python), AFL-2.1 or GPL-2.0+ (dbus-gmain)\nDBUS_PYTHON_LICENSE_FILES = COPYING dbus-gmain/COPYING\nDBUS_PYTHON_DEPENDENCIES = dbus libglib2\nHOST_DBUS_PYTHON_DEPENDENCIES = host-dbus host-libglib2\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\nDBUS_PYTHON_DEPENDENCIES += python host-python\n\nDBUS_PYTHON_CONF_ENV += \\\n\tPYTHON=$(HOST_DIR)/bin/python2 \\\n\tPYTHON_INCLUDES=\"`$(STAGING_DIR)/usr/bin/python2-config --includes`\" \\\n\tPYTHON_LIBS=\"`$(STAGING_DIR)/usr/bin/python2-config --ldflags`\"\n\nHOST_DBUS_PYTHON_DEPENDENCIES += host-python\n\nHOST_DBUS_PYTHON_CONF_ENV += \\\n\tPYTHON=$(HOST_DIR)/bin/python2 \\\n\tPYTHON_INCLUDES=\"`$(HOST_DIR)/usr/bin/python2-config --includes`\" \\\n\tPYTHON_LIBS=\"`$(HOST_DIR)/usr/bin/python2-config --ldflags`\"\nelse\nDBUS_PYTHON_DEPENDENCIES += python3 host-python3\n\nDBUS_PYTHON_CONF_ENV += \\\n\tPYTHON=$(HOST_DIR)/bin/python3 \\\n\tPYTHON_INCLUDES=\"`$(STAGING_DIR)/usr/bin/python3-config --includes`\" \\\n\tPYTHON_LIBS=\"`$(STAGING_DIR)/usr/bin/python3-config --ldflags`\" \\\n\tPYTHON_EXTRA_LIBS=\"`$(STAGING_DIR)/usr/bin/python3-config --libs --embed`\"\n\nHOST_DBUS_PYTHON_DEPENDENCIES += host-python3\n\nHOST_DBUS_PYTHON_CONF_ENV += \\\n\tPYTHON=$(HOST_DIR)/bin/python3 \\\n\tPYTHON_INCLUDES=\"`$(HOST_DIR)/usr/bin/python3-config --includes`\" \\\n\tPYTHON_LIBS=\"`$(HOST_DIR)/usr/bin/python3-config --ldflags`\" \\\n\tPYTHON_EXTRA_LIBS=\"`$(HOST_DIR)/usr/bin/python3-config --libs --embed`\"\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/dbus-triggerd/Config.in",
    "content": "config BR2_PACKAGE_DBUS_TRIGGERD\n\tbool \"dbus-triggerd\"\n\tdepends on BR2_USE_MMU # fork(), dbus\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus\n\tdepends on BR2_PACKAGE_DBUS\n\thelp\n\t  dbus-triggerd is a tool to trigger shell-commands upon\n\t  receiving a given dbus-signal.\n\n\t  http://gareus.org/oss/dbustriggerd/start\n\ncomment \"dbus-triggerd needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_DBUS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/dbus-triggerd/dbus-triggerd.hash",
    "content": "# Locally computed\nsha256  930cccfe8bdff98cab0cff003d90f9421858850d2d00143108191b62b4ef5e5a  dbus-triggerd-ba3dbec805cb707c94c54de21666bf18b79bcc09-br1.tar.gz\nsha256  30d135650639af9019633690fc1aecbfc150aeeef9446347d4286a58338d10b0  dbus-triggerd.c\n"
  },
  {
    "path": "package/dbus-triggerd/dbus-triggerd.mk",
    "content": "################################################################################\n#\n# dbus-triggerd\n#\n################################################################################\n\nDBUS_TRIGGERD_VERSION = ba3dbec805cb707c94c54de21666bf18b79bcc09\nDBUS_TRIGGERD_SITE = git://rg42.org/dbustriggerd.git\nDBUS_TRIGGERD_LICENSE = GPL-2.0+\nDBUS_TRIGGERD_LICENSE_FILES = dbus-triggerd.c\nDBUS_TRIGGERD_DEPENDENCIES = host-pkgconf dbus\n\ndefine DBUS_TRIGGERD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) all\nendef\n\ndefine DBUS_TRIGGERD_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=\"$(TARGET_DIR)\" -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dc3dd/0001-no_man.patch",
    "content": "Remove the man directory to the subdirs to prevent building the man pages\n\nSigned-off-by: Benoît Allard <benoit.allard@greenbone.net>\n\n--- a/Makefile.am\t2017-03-27 09:53:19.988820588 +0200\n+++ b/Makefile.am\t2017-03-27 09:54:14.325817466 +0200\n@@ -15,7 +15,7 @@\n # You should have received a copy of the GNU General Public License\n # along with this program.  If not, see <http://www.gnu.org/licenses/>.\n \n-SUBDIRS = lib src man po\n+SUBDIRS = lib src po\n EXTRA_DIST = cfg.mk maint.mk \\\n   .prev-version THANKS-to-translators THANKStt.in \\\n   .version \\\n"
  },
  {
    "path": "package/dc3dd/0002-fix-autoreconf.patch",
    "content": "Remove use of AM_C_PROTOTYPES to fix autoreconf\n\nThe AM_C_PROTOTYPES macro no longer exists since automake 1.12. It\nexisted to support de-ANSI-fication of code using ansi2knr. It was\nsimply removed from coreutils m4/jm-macros.m4 in commit\n88873501cff9ed937edf969cedd693517ab0a293, but this change was not\npropagated to dc3dd, causing an autoreconf failure:\n\nconfigure.ac:45: error: automatic de-ANSI-fication support has been removed\n/home/peko/autobuild/instance-0/output/host/usr/share/aclocal-1.15/obsolete.m4:26: AM_C_PROTOTYPES is expanded from...\nm4/jm-macros.m4:124: gl_CHECK_ALL_TYPES is expanded from...\nm4/jm-macros.m4:22: coreutils_MACROS is expanded from...\nconfigure.ac:45: the top level\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/m4/jm-macros.m4\n===================================================================\n--- a/m4/jm-macros.m4\n+++ b/m4/jm-macros.m4\n@@ -128,11 +128,6 @@\n   dnl whether functions and headers are available, whether they work, etc.\n   AC_REQUIRE([AC_SYS_LARGEFILE])\n \n-  dnl This test must precede tests of compiler characteristics like\n-  dnl that for the inline keyword, since it may change the degree to\n-  dnl which the compiler supports such features.\n-  AC_REQUIRE([AM_C_PROTOTYPES])\n-\n   dnl Checks for typedefs, structures, and compiler characteristics.\n   AC_REQUIRE([AC_C_BIGENDIAN])\n   AC_REQUIRE([AC_C_VOLATILE])\n"
  },
  {
    "path": "package/dc3dd/0003-fix-for-glibc-2.28.patch",
    "content": "Fix build with glibc 2.28\n\nglibc 2.28 hides a number of internal macros that used to be visible. gnulib\nrelied on these macros. Add a patch based on upstream gnulib commit\n4af4a4a71827c0 (fflush: adjust to glibc 2.28 libio.h removal) to fix the\nbuild.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: gnulib commit 4af4a4a7182\n\ndiff -Nuar dc3dd-7.2.641.orig/lib/freadahead.c dc3dd-7.2.641/lib/freadahead.c\n--- dc3dd-7.2.641.orig/lib/freadahead.c\t2012-11-06 23:42:58.000000000 +0200\n+++ dc3dd-7.2.641/lib/freadahead.c\t2018-10-26 08:46:36.612492230 +0300\n@@ -24,7 +24,7 @@\n size_t\n freadahead (FILE *fp)\n {\n-#if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */\n+#if defined _IO_EOF_SEEN || defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */\n   if (fp->_IO_write_ptr > fp->_IO_write_base)\n     return 0;\n   return (fp->_IO_read_end - fp->_IO_read_ptr)\ndiff -Nuar dc3dd-7.2.641.orig/lib/freadptr.c dc3dd-7.2.641/lib/freadptr.c\n--- dc3dd-7.2.641.orig/lib/freadptr.c\t2012-11-06 23:42:58.000000000 +0200\n+++ dc3dd-7.2.641/lib/freadptr.c\t2018-10-26 08:36:53.965310494 +0300\n@@ -29,7 +29,7 @@\n   size_t size;\n \n   /* Keep this code in sync with freadahead!  */\n-#if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */\n+#if defined _IO_EOF_SEEN || defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */\n   if (fp->_IO_write_ptr > fp->_IO_write_base)\n     return NULL;\n   size = fp->_IO_read_end - fp->_IO_read_ptr;\ndiff -Nuar dc3dd-7.2.641.orig/lib/freadseek.c dc3dd-7.2.641/lib/freadseek.c\n--- dc3dd-7.2.641.orig/lib/freadseek.c\t2012-11-06 23:42:58.000000000 +0200\n+++ dc3dd-7.2.641/lib/freadseek.c\t2018-10-26 08:49:35.387912087 +0300\n@@ -34,7 +34,7 @@\n freadptrinc (FILE *fp, size_t increment)\n {\n   /* Keep this code in sync with freadptr!  */\n-#if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */\n+#if defined _IO_EOF_SEEN || defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */\n   fp->_IO_read_ptr += increment;\n #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */\n   fp_->_p += increment;\ndiff -Nuar dc3dd-7.2.641.orig/lib/fseeko.c dc3dd-7.2.641/lib/fseeko.c\n--- dc3dd-7.2.641.orig/lib/fseeko.c\t2012-11-06 23:42:58.000000000 +0200\n+++ dc3dd-7.2.641/lib/fseeko.c\t2018-10-26 08:51:02.841583936 +0300\n@@ -44,7 +44,7 @@\n #endif\n \n   /* These tests are based on fpurge.c.  */\n-#if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */\n+#if defined _IO_EOF_SEEN || defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */\n   if (fp->_IO_read_end == fp->_IO_read_ptr\n       && fp->_IO_write_ptr == fp->_IO_write_base\n       && fp->_IO_save_base == NULL)\ndiff -Nuar dc3dd-7.2.641.orig/lib/fseterr.c dc3dd-7.2.641/lib/fseterr.c\n--- dc3dd-7.2.641.orig/lib/fseterr.c\t2012-11-06 23:42:58.000000000 +0200\n+++ dc3dd-7.2.641/lib/fseterr.c\t2018-10-26 08:47:51.209919605 +0300\n@@ -29,7 +29,7 @@\n   /* Most systems provide FILE as a struct and the necessary bitmask in\n      <stdio.h>, because they need it for implementing getc() and putc() as\n      fast macros.  */\n-#if defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */\n+#if defined _IO_EOF_SEEN || defined _IO_ferror_unlocked || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Linux libc5 */\n   fp->_flags |= _IO_ERR_SEEN;\n #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, MacOS X, Cygwin */\n   fp_->_flags |= __SERR;\ndiff -Nuar dc3dd-7.2.641.orig/lib/stdio-impl.h dc3dd-7.2.641/lib/stdio-impl.h\n--- dc3dd-7.2.641.orig/lib/stdio-impl.h\t2012-11-06 23:42:58.000000000 +0200\n+++ dc3dd-7.2.641/lib/stdio-impl.h\t2018-10-26 08:46:26.136291709 +0300\n@@ -18,6 +18,12 @@\n    the same implementation of stdio extension API, except that some fields\n    have different naming conventions, or their access requires some casts.  */\n \n+/* Glibc 2.28 made _IO_IN_BACKUP private.  For now, work around this\n+   problem by defining it ourselves.  FIXME: Do not rely on glibc\n+   internals.  */\n+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN\n+# define _IO_IN_BACKUP 0x100\n+#endif\n \n /* BSD stdio derived implementations.  */\n \n"
  },
  {
    "path": "package/dc3dd/Config.in",
    "content": "config BR2_PACKAGE_DC3DD\n\tbool \"dc3dd\"\n\tdepends on !BR2_RISCV_32\n\tdepends on !BR2_arc\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  dc3dd is a patch to the GNU dd program, this version has\n\t  several features intended for forensic acquisition of data.\n\t  Highlights include hashing on-the-fly, split output files,\n\t  pattern writing, a progress meter, and file verification.\n\n\t  https://sourceforge.net/projects/dc3dd/\n\ncomment \"dc3dd needs a glibc or uClibc toolchain w/ threads\"\n\tdepends on !BR2_RISCV_32\n\tdepends on !BR2_arc\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_TOOLCHAIN_USES_MUSL\n"
  },
  {
    "path": "package/dc3dd/dc3dd.hash",
    "content": "# From https://sourceforge.net/projects/dc3dd/files/dc3dd/7.2/\nsha1 1bfe81a921a8473a6ecb46f328ecaab761afb55d dc3dd-7.2.641.tar.xz\n# Locally computed\nsha256  7f50aadc38649845ab11014d11013928411c9d2128c941e9630939d4c28cae6d  dc3dd-7.2.641.tar.xz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/dc3dd/dc3dd.mk",
    "content": "################################################################################\n#\n# dc3dd\n#\n################################################################################\n\nDC3DD_VERSION_MAJOR = 7.2\nDC3DD_VERSION = $(DC3DD_VERSION_MAJOR).641\nDC3DD_SOURCE = dc3dd-$(DC3DD_VERSION).tar.xz\nDC3DD_SITE = https://downloads.sourceforge.net/project/dc3dd/dc3dd/$(DC3DD_VERSION_MAJOR)\nDC3DD_LICENSE = GPL-3.0+\nDC3DD_LICENSE_FILES = COPYING\n# We are patching Makefile.am, so we need to autoreconf. We also need to\n# enable gettextize as dc3dd comes with an old gettext infra.\nDC3DD_AUTORECONF = YES\nDC3DD_GETTEXTIZE = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dcron/0001-main.c-add-newline-to-logfile-openning-error-message.patch",
    "content": "From 2710bc67cd920323da9b23a3d60193577bd43d71 Mon Sep 17 00:00:00 2001\nFrom: Carlos Santos <unixmania@gmail.com>\nDate: Sat, 20 Jul 2019 00:27:31 -0300\nSubject: [PATCH] main.c: add newline to logfile openning error message\n\nSigned-off-by: Carlos Santos <unixmania@gmail.com>\n[Upstream status: https://github.com/dubiousjim/dcron/pull/22]\n---\n main.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/main.c b/main.c\nindex 0eba280..2606db8 100644\n--- a/main.c\n+++ b/main.c\n@@ -261,7 +261,7 @@ main(int ac, char **av)\n \t\t\t\tdup2(fd, 2);\n \t\t\t} else {\n \t\t\t\tint n = errno;\n-\t\t\t\tfdprintf(2, \"failed to open logfile '%s', reason: %s\", LogFile, strerror(n));\n+\t\t\t\tfdprintf(2, \"failed to open logfile '%s', reason: %s\\n\", LogFile, strerror(n));\n \t\t\t\texit(n);\n \t\t\t}\n \t\t}\n-- \n2.18.1\n\n"
  },
  {
    "path": "package/dcron/Config.in",
    "content": "config BR2_PACKAGE_DCRON\n\tbool \"dcron\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  dcron is a time-based job scheduler with anacron-like\n\t  features. It works as a background daemon that parses\n\t  individual crontab files and executes commands on behalf of\n\t  the users in question.\n\n\t  Upon installation, this package will enable a system level\n\t  cron daemon with hourly, daily, weekly and monthly crontabs.\n\n\t  However, it doesn't allow non root users to create their own\n\t  crontab file. This is because /var/spool/cron/crontabs is\n\t  non user writable.\n\n\t  Typically, a crontab group is created on the system and\n\t  users allowed to create crontab entries are added into this\n\t  group, while crontab executable is owned by root:crontab\n\t  with sgid bit enabled.\n\n\t  http://www.jimpryor.net/linux/dcron.html\n"
  },
  {
    "path": "package/dcron/S90dcron",
    "content": "#!/bin/sh\n\ncase \"$1\" in\n\tstart)\n\t\tprintf \"Starting cron ... \"\n\t\tstart-stop-daemon -S -q -m -b -p /var/run/dcron.pid --exec /usr/sbin/crond -- -f\n\t\techo \"done.\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping cron ...\"\n\t\tstart-stop-daemon -K -q -p /var/run/dcron.pid\n\t\techo \"done.\"\n\t\t;;\n\trestart)\n\t\t$0 stop\n\t\tsleep 1\n\t\t$0 start\n\t\t;;\n\t*)\n\t\techo \"usage: $0 {start|stop|restart}\"\n\t\t;;\nesac\n"
  },
  {
    "path": "package/dcron/dcron.hash",
    "content": "# Locally calculated\nsha256  5a53930ba27b57c06c3b03635788cf569990283bde8ea9c1ee820e13f988288d  dcron-1ba33c3325df48de46263276a43ed76cf9d81518.tar.gz\nsha256  640d90f6ee401241ff62834d0d1b33f83049e99b8bfdfa04ed1b0a1635dde3e7  COPYING\n"
  },
  {
    "path": "package/dcron/dcron.mk",
    "content": "################################################################################\n#\n# dcron\n#\n################################################################################\n\nDCRON_VERSION = 1ba33c3325df48de46263276a43ed76cf9d81518\nDCRON_SITE = $(call github,dubiousjim,dcron,$(DCRON_VERSION))\nDCRON_LICENSE = GPL-2.0+\nDCRON_LICENSE_FILES = COPYING\n\ndefine DCRON_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine DCRON_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m0700 $(@D)/crond $(TARGET_DIR)/usr/sbin/crond\n\t$(INSTALL) -D -m4755 $(@D)/crontab $(TARGET_DIR)/usr/bin/crontab\n\t$(INSTALL) -D -m0644 $(@D)/extra/root.crontab $(TARGET_DIR)/etc/cron.d/system\n\t# Busybox provides run-parts, so there is no need to use nor install provided run-cron\n\t$(SED) 's#/usr/sbin/run-cron#/bin/run-parts#g' $(TARGET_DIR)/etc/cron.d/system\n\t$(INSTALL) -d -m0755 $(TARGET_DIR)/var/spool/cron/crontabs \\\n\t\t$(TARGET_DIR)/etc/cron.daily $(TARGET_DIR)/etc/cron.hourly \\\n\t\t$(TARGET_DIR)/etc/cron.monthly $(TARGET_DIR)/etc/cron.weekly\nendef\n\ndefine DCRON_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/dcron/S90dcron $(TARGET_DIR)/etc/init.d/S90dcron\nendef\n\ndefine DCRON_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/dcron/dcron.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/dcron.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dcron/dcron.service",
    "content": "[Unit]\nDescription=Task scheduler daemon\nAfter=syslog.target\n\n[Service]\nExecStart=/usr/sbin/crond -S\nType=forking\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/ddrescue/Config.in",
    "content": "config BR2_PACKAGE_DDRESCUE\n\tbool \"ddrescue\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  GNU ddrescue is a data recovery tool. It copies data from one\n\t  file or block device (hard disc, cdrom, etc) to another,\n\t  trying to rescue the good parts first in case of read errors.\n\n\t  http://www.gnu.org/software/ddrescue/ddrescue.html\n\ncomment \"ddrescue needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/ddrescue/ddrescue.hash",
    "content": "# From https://lists.gnu.org/archive/html/info-gnu/2020-03/msg00002.html\nsha256  ce538ebd26a09f45da67d3ad3f7431932428231ceec7a2d255f716fa231a1063  ddrescue-1.25.tar.lz\n# Locally computed\nsha256  3d77c1a58fbde5ddba612d1fe09965e20a3804953eca12e8c1892298bb8a5eef  COPYING\n"
  },
  {
    "path": "package/ddrescue/ddrescue.mk",
    "content": "################################################################################\n#\n# ddrescue\n#\n################################################################################\n\nDDRESCUE_VERSION = 1.25\nDDRESCUE_SOURCE = ddrescue-$(DDRESCUE_VERSION).tar.lz\nDDRESCUE_SITE = http://download.savannah.gnu.org/releases/ddrescue\nDDRESCUE_LICENSE = GPL-2.0+\nDDRESCUE_LICENSE_FILES = COPYING\n\ndefine DDRESCUE_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_MAKE_ENV) ./configure \\\n\t\t--prefix=/usr \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t)\nendef\n\nDDRESCUE_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nDDRESCUE_CXXFLAGS += -O0\nendif\n\ndefine DDRESCUE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CXXFLAGS=\"$(DDRESCUE_CXXFLAGS)\" -C $(@D)\nendef\n\ndefine DDRESCUE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=\"$(TARGET_DIR)\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/debianutils/Config.in",
    "content": "config BR2_PACKAGE_DEBIANUTILS\n\tbool \"debianutils\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  Miscellaneous utilities specific to Debian.\n\n\t  The specific utilities included are: add-shell installkernel\n\t  ischroot remove-shell run-parts savelog tempfile which.\n\n\t  https://tracker.debian.org/pkg/debianutils\n"
  },
  {
    "path": "package/debianutils/debianutils.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20200525T145753Z/pool/main/d/debianutils/debianutils_4.11.dsc\nsha256 bb5ce6290696b0d623377521ed217f484aa98f7346c5f7c48f9ae3e1acfb7151 debianutils_4.11.tar.xz\n# Locally calculated\nsha256 3c8b5112cb8f74ba959233291908d73f527afa6f1d96f93649aeb912b5884567 debian/copyright\n"
  },
  {
    "path": "package/debianutils/debianutils.mk",
    "content": "################################################################################\n#\n# debianutils\n#\n################################################################################\n\nDEBIANUTILS_VERSION = 4.11\nDEBIANUTILS_SOURCE = debianutils_$(DEBIANUTILS_VERSION).tar.xz\nDEBIANUTILS_SITE = http://snapshot.debian.org/archive/debian/20200525T145753Z/pool/main/d/debianutils\nDEBIANUTILS_CONF_OPTS = --exec-prefix=/\nDEBIANUTILS_LICENSE = GPL-2.0+, SMAIL (savelog)\nDEBIANUTILS_LICENSE_FILES = debian/copyright\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dehydrated/Config.in",
    "content": "config BR2_PACKAGE_DEHYDRATED\n\tbool \"dehydrated\"\n\tdepends on BR2_USE_MMU # bash\n\tselect BR2_PACKAGE_BASH\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBCURL_CURL\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_BIN if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBRESSL_BIN if BR2_PACKAGE_LIBRESSL\n\thelp\n\t  Dehydrated is a client for signing certificates with an\n\t  ACME-server (e.g. Let's Encrypt) implemented as a relatively\n\t  simple (zsh-compatible) bash-script. This client supports\n\t  both ACME v1 and the new ACME v2 including support for\n\t  wildcard certificates!\n\n\t  To use this script in Buildroot:\n\t    - Create /etc/dehydrated/domains.txt\n\t    - Make sure that \"dehydrated -c\" is called regularly, e.g.\n\t      from cron.\n\t    - Make sure /etc/dehydrated is writable.\n\t    - Configure the webserver to export the WELLKNOWN directory\n\t      (/var/www/dehydrated) as /.well-known/acme-challenge\n\t    - Configure the webserver to use the certificates under\n\t      /etc/dehydrated/certs/<domain>\n\t    - Register a HOOK to reload the webserver after the\n\t      certificates have been renewed.\n\n\t  You probably need to install a custom /etc/dehydrated/config\n\t  with the rootfs overlay.\n\n\t  https://github.com/lukas2511/dehydrated\n"
  },
  {
    "path": "package/dehydrated/dehydrated.hash",
    "content": "# Locally computed after verifying\n# https://github.com/lukas2511/dehydrated/releases/download/v0.6.5/dehydrated-0.6.5.tar.gz.asc\n# with key 3C2F2605E078A1E18F4793909C4DBE6CF438F333 from https://keybase.io/lukas2511\nsha256  10aabd0027450bc70a18e49acaca7a9697e0cfb92368d3e508b7a4d6d69bfa35 dehydrated-0.6.5.tar.gz\n# License, locally computed\nsha256  b4583b7dd07e3e2a08906de38e7e329d41f921ed9dcb6310b3886e013a6b8723  LICENSE\n"
  },
  {
    "path": "package/dehydrated/dehydrated.mk",
    "content": "################################################################################\n#\n# dehydrated\n#\n################################################################################\n\nDEHYDRATED_VERSION = 0.6.5\nDEHYDRATED_SITE = https://github.com/lukas2511/dehydrated/releases/download/v$(DEHYDRATED_VERSION)\n\nDEHYDRATED_LICENSE = MIT\nDEHYDRATED_LICENSE_FILES = LICENSE\n\ndefine DEHYDRATED_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/dehydrated $(TARGET_DIR)/usr/bin/dehydrated\n\t$(INSTALL) -D -m 0644 $(@D)/docs/examples/config $(TARGET_DIR)/etc/dehydrated/config\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dejavu/Config.in",
    "content": "config BR2_PACKAGE_DEJAVU\n\tbool \"DejaVu fonts\"\n\thelp\n\t  The DejaVu fonts are a font family based on the Vera Fonts.\n\t  Its purpose is to provide a wider range of characters while\n\t  maintaining the original look and feel through the process\n\t  of collaborative development, under a Free license.\n\n\t  http://dejavu-fonts.org\n\nif BR2_PACKAGE_DEJAVU\n\nconfig BR2_PACKAGE_DEJAVU_MONO\n\tbool \"mono fonts\"\n\tdefault y\n\nconfig BR2_PACKAGE_DEJAVU_SANS\n\tbool \"sans fonts\"\n\tdefault y\n\nconfig BR2_PACKAGE_DEJAVU_SERIF\n\tbool \"serif fonts\"\n\tdefault y\n\nconfig BR2_PACKAGE_DEJAVU_SANS_CONDENSED\n\tbool \"sans condensed fonts\"\n\tdefault y\n\nconfig BR2_PACKAGE_DEJAVU_SERIF_CONDENSED\n\tbool \"serif condensed fonts\"\n\tdefault y\n\nendif\n"
  },
  {
    "path": "package/dejavu/dejavu.hash",
    "content": "# From https://dejavu-fonts.github.io/Download.html\nsha256  fa9ca4d13871dd122f61258a80d01751d603b4d3ee14095d65453b4e846e17d7  dejavu-fonts-ttf-2.37.tar.bz2\n\n# locally computed\nsha256  7a083b136e64d064794c3419751e5c7dd10d2f64c108fe5ba161eae5e5958a93  LICENSE\n"
  },
  {
    "path": "package/dejavu/dejavu.mk",
    "content": "################################################################################\n#\n# dejavu\n#\n################################################################################\n\nDEJAVU_VERSION = 2.37\nDEJAVU_SITE = https://sourceforge.net/projects/dejavu/files/dejavu/$(DEJAVU_VERSION)\nDEJAVU_SOURCE = dejavu-fonts-ttf-$(DEJAVU_VERSION).tar.bz2\nDEJAVU_LICENSE_FILES = LICENSE\n\nDEJAVU_FONTS_INSTALL =\nDEJAVU_FONTCONFIG_CONF_INSTALL =\n\nifeq ($(BR2_PACKAGE_DEJAVU_MONO),y)\nDEJAVU_FONTS_INSTALL += DejaVuSansMono*.ttf\nDEJAVU_FONTCONFIG_CONF_INSTALL += \\\n\t20-unhint-small-dejavu-sans-mono.conf \\\n\t57-dejavu-sans-mono.conf\nendif\n\nifeq ($(BR2_PACKAGE_DEJAVU_SANS),y)\nDEJAVU_FONTS_INSTALL += DejaVuSans.ttf DejaVuSans-*.ttf\nDEJAVU_FONTCONFIG_CONF_INSTALL += \\\n\t20-unhint-small-dejavu-sans.conf \\\n\t57-dejavu-sans.conf\nendif\n\nifeq ($(BR2_PACKAGE_DEJAVU_SERIF),y)\nDEJAVU_FONTS_INSTALL += DejaVuSerif.ttf DejaVuSerif-*.ttf\nDEJAVU_FONTCONFIG_CONF_INSTALL += \\\n\t20-unhint-small-dejavu-serif.conf \\\n\t57-dejavu-serif.conf\nendif\n\nifeq ($(BR2_PACKAGE_DEJAVU_SANS_CONDENSED),y)\nDEJAVU_FONTS_INSTALL += DejaVuSansCondensed*.ttf\nendif\n\nifeq ($(BR2_PACKAGE_DEJAVU_SERIF_CONDENSED),y)\nDEJAVU_FONTS_INSTALL += DejaVuSerifCondensed*.ttf\nendif\n\nifeq ($(BR2_PACKAGE_FONTCONFIG),y)\ndefine DEJAVU_FONTCONFIG_CONF_INSTALL_CMDS\n\tfor i in $(DEJAVU_FONTCONFIG_CONF_INSTALL) ; do \\\n\t\t$(INSTALL) -D -m 0644 $(@D)/fontconfig/$$i \\\n\t\t\t$(TARGET_DIR)/usr/share/fontconfig/conf.avail/$$i || exit 1 ; \\\n\tdone\nendef\nendif\n\ndefine DEJAVU_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/share/fonts/dejavu/\n\tfor i in $(DEJAVU_FONTS_INSTALL) ; do \\\n\t\t$(INSTALL) -m 0644 $(@D)/ttf/$$i \\\n\t\t\t$(TARGET_DIR)/usr/share/fonts/dejavu/ || exit 1 ; \\\n\tdone\n\t$(DEJAVU_FONTCONFIG_CONF_INSTALL_CMDS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/delve/Config.in",
    "content": "# Supported architectures are listed in\n# pkg/proc/native/support_sentinel.go\nconfig BR2_PACKAGE_DELVE_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_i386\n\tdefault y if BR2_x86_64\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\nconfig BR2_PACKAGE_DELVE\n\tbool \"delve\"\n\tdepends on BR2_PACKAGE_DELVE_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Delve is a debugger for the Go programming language.\n\n\t  https://github.com/go-delve/delve\n\ncomment \"delve needs a toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_DELVE_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/delve/delve.hash",
    "content": "# Locally calculated\nsha256  e73f7fc063632268d3bdf53486aeafd98cceb8f86f4af56903dedfebaefe690d  delve-1.6.1.tar.gz\nsha256  778864b990007e8cef6633f8c372dd05bac1fada6cf67b008afb1483f83b38f5  LICENSE\n"
  },
  {
    "path": "package/delve/delve.mk",
    "content": "################################################################################\n#\n# delve\n#\n################################################################################\n\nDELVE_VERSION = 1.6.1\nDELVE_SITE = $(call github,go-delve,delve,v$(DELVE_VERSION))\nDELVE_LICENSE = MIT\nDELVE_LICENSE_FILES = LICENSE\nDELVE_DEPENDENCIES = host-pkgconf\n\nDELVE_TAGS = cgo\nDELVE_BUILD_TARGETS = cmd/dlv\nDELVE_INSTALL_BINS = $(notdir $(DELVE_BUILD_TARGETS))\n\n$(eval $(golang-package))\n"
  },
  {
    "path": "package/desktop-file-utils/desktop-file-utils.hash",
    "content": "# Locally calculated:\nsha256  b26dbde79ea72c8c84fb7f9d870ffd857381d049a86d25e0038c4cef4c747309  desktop-file-utils-0.26.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/desktop-file-utils/desktop-file-utils.mk",
    "content": "################################################################################\n#\n# desktop-file-utils\n#\n################################################################################\n\nDESKTOP_FILE_UTILS_VERSION = 0.26\nDESKTOP_FILE_UTILS_SOURCE = desktop-file-utils-$(DESKTOP_FILE_UTILS_VERSION).tar.xz\nDESKTOP_FILE_UTILS_SITE = https://www.freedesktop.org/software/desktop-file-utils/releases\nDESKTOP_FILE_UTILS_LICENSE = GPL-2.0+\nDESKTOP_FILE_UTILS_LICENSE_FILES = COPYING\nHOST_DESKTOP_FILE_UTILS_DEPENDENCIES = host-libglib2\n\n$(eval $(host-meson-package))\n"
  },
  {
    "path": "package/dfu-util/Config.in",
    "content": "config BR2_PACKAGE_DFU_UTIL\n\tbool \"dfu-util\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Dfu-util is the host side implementation of the DFU 1.0 and\n\t  DFU 1.1 specification of the USB forum.\n\t  DFU is intended to download and upload firmware to devices\n\t  connected over USB.\n\n\t  http://dfu-util.sourceforge.net/\n\ncomment \"dfu-util needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/dfu-util/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_DFU_UTIL\n\tbool \"host dfu-util\"\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb\n\thelp\n\t  Dfu-util is the host side implementation of the DFU 1.0 and\n\t  DFU 1.1 specification of the USB forum.\n\t  DFU is intended to download and upload firmware to devices\n\t  connected over USB.\n\n\t  http://dfu-util.sourceforge.net/\n\ncomment \"host dfu-util needs a toolchain w/ host gcc >= 4.9\"\n\tdepends on !BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/dfu-util/dfu-util.hash",
    "content": "# From http://dfu-util.sourceforge.net/releases/dfu-util-0.11.tar.gz.md5\nmd5  31c983543a1fe8f03260ca4d56ad4f43  dfu-util-0.11.tar.gz\n\n# Locally computed\nsha256  b4b53ba21a82ef7e3d4c47df2952adf5fa494f499b6b0b57c58c5d04ae8ff19e  dfu-util-0.11.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/dfu-util/dfu-util.mk",
    "content": "################################################################################\n#\n# dfu-util\n#\n################################################################################\n\nDFU_UTIL_VERSION = 0.11\nDFU_UTIL_SITE = http://dfu-util.sourceforge.net/releases\nDFU_UTIL_LICENSE = GPL-2.0+, LGPL-3.0\nDFU_UTIL_LICENSE_FILES = COPYING\n\nDFU_UTIL_DEPENDENCIES = libusb\nHOST_DFU_UTIL_DEPENDENCIES = host-libusb\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/dhcp/0001-WIP-Resolve-ISC-DHCP-does-not-build-with-gcc10.patch",
    "content": "From 129b7e402bd6e7278854e5a8935fce460552b5f4 Mon Sep 17 00:00:00 2001\nFrom: Thomas Markwalder <tmark@isc.org>\nDate: Thu, 30 Jul 2020 10:01:36 -0400\nSubject: [PATCH] [#117] Fixed gcc 10 compilation issues\n\nclient/dhclient.c\nrelay/dhcrelay.c\n    extern'ed local_port,remote_port\n\ncommon/discover.c\n    init local_port,remote_port to 0\n\nserver/mdb.c\n    extern'ed dhcp_type_host\n\nserver/mdb6.c\n    create_prefix6() - eliminated memcpy string overflow error\n\n[Retrieved from:\nhttps://gitlab.isc.org/isc-projects/dhcp/-/merge_requests/60/diffs?commit_id=129b7e402bd6e7278854e5a8935fce460552b5f4]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n RELNOTES          | 5 +++++\n client/dhclient.c | 5 +++--\n common/discover.c | 4 ++--\n relay/dhcrelay.c  | 4 ++--\n server/mdb.c      | 2 +-\n server/mdb6.c     | 2 +-\n 6 files changed, 14 insertions(+), 8 deletions(-)\n\ndiff --git a/RELNOTES b/RELNOTES\nindex 9d0a0414..6919dba7 100644\n--- a/RELNOTES\n+++ b/RELNOTES\n@@ -103,6 +103,11 @@ ISC DHCP is open source software maintained by Internet Systems\n Consortium.  This product includes cryptographic software written\n by Eric Young (eay@cryptsoft.com).\n \n+\t\tChanges since 4.4.2 (Bug Fixes)\n+\n+- Minor corrections to allow compilation under gcc 10.\n+  [Gitlab #117]\n+\n \t\tChanges since 4.4.2b1 (Bug Fixes)\n \n - Added a clarification on DHCPINFORMs and server authority to\ndiff --git a/client/dhclient.c b/client/dhclient.c\nindex 189e5270..7a7837cb 100644\n--- a/client/dhclient.c\n+++ b/client/dhclient.c\n@@ -83,8 +83,9 @@ static const char message [] = \"Internet Systems Consortium DHCP Client\";\n static const char url [] = \"For info, please visit https://www.isc.org/software/dhcp/\";\n #endif /* UNIT_TEST */\n \n-u_int16_t local_port = 0;\n-u_int16_t remote_port = 0;\n+extern u_int16_t local_port;\n+extern u_int16_t remote_port;\n+\n #if defined(DHCPv6) && defined(DHCP4o6)\n int dhcp4o6_state = -1; /* -1 = stopped, 0 = polling, 1 = started */\n #endif\ndiff --git a/common/discover.c b/common/discover.c\nindex ca4f4d55..22f09767 100644\n--- a/common/discover.c\n+++ b/common/discover.c\n@@ -45,8 +45,8 @@ struct interface_info *fallback_interface = 0;\n \n int interfaces_invalidated;\n int quiet_interface_discovery;\n-u_int16_t local_port;\n-u_int16_t remote_port;\n+u_int16_t local_port = 0;\n+u_int16_t remote_port = 0;\n u_int16_t relay_port = 0;\n int dhcpv4_over_dhcpv6 = 0;\n int (*dhcp_interface_setup_hook) (struct interface_info *, struct iaddr *);\ndiff --git a/relay/dhcrelay.c b/relay/dhcrelay.c\nindex 883d5058..7211e3bb 100644\n--- a/relay/dhcrelay.c\n+++ b/relay/dhcrelay.c\n@@ -95,8 +95,8 @@ enum { forward_and_append,\t/* Forward and append our own relay option. */\n        forward_untouched,\t/* Forward without changes. */\n        discard } agent_relay_mode = forward_and_replace;\n \n-u_int16_t local_port;\n-u_int16_t remote_port;\n+extern u_int16_t local_port;\n+extern u_int16_t remote_port;\n \n /* Relay agent server list. */\n struct server_list {\ndiff --git a/server/mdb.c b/server/mdb.c\nindex ff8a707f..8266d764 100644\n--- a/server/mdb.c\n+++ b/server/mdb.c\n@@ -67,7 +67,7 @@ static host_id_info_t *host_id_info = NULL;\n \n int numclasseswritten;\n \n-omapi_object_type_t *dhcp_type_host;\n+extern omapi_object_type_t *dhcp_type_host;\n \n isc_result_t enter_class(cd, dynamicp, commit)\n \tstruct class *cd;\ndiff --git a/server/mdb6.c b/server/mdb6.c\nindex da7baf6e..ebe01e56 100644\n--- a/server/mdb6.c\n+++ b/server/mdb6.c\n@@ -1945,7 +1945,7 @@ create_prefix6(struct ipv6_pool *pool, struct iasubopt **pref,\n \t\t}\n \t\tnew_ds.data = new_ds.buffer->data;\n \t\tmemcpy(new_ds.buffer->data, ds.data, ds.len);\n-\t\tmemcpy(new_ds.buffer->data + ds.len, &tmp, sizeof(tmp));\n+\t\tmemcpy(&new_ds.buffer->data[0] + ds.len, &tmp, sizeof(tmp));\n \t\tdata_string_forget(&ds, MDL);\n \t\tdata_string_copy(&ds, &new_ds, MDL);\n \t\tdata_string_forget(&new_ds, MDL);\n-- \nGitLab\n\n"
  },
  {
    "path": "package/dhcp/Config.in",
    "content": "config BR2_PACKAGE_DHCP\n\tbool \"dhcp (ISC)\"\n\t# fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_BIND\n\thelp\n\t  DHCP relay agent from the ISC DHCP distribution.\n\n\t  https://www.isc.org/downloads/dhcp/\n\nif BR2_PACKAGE_DHCP\n\nconfig BR2_PACKAGE_DHCP_SERVER\n\tbool \"dhcp server\"\n\tselect BR2_PACKAGE_SYSTEMD_TMPFILES if BR2_PACKAGE_SYSTEMD\n\thelp\n\t  DHCP server from the ISC DHCP distribution.\n\n\t  This also installs omshell, an interactive tool to connect to,\n\t  query, and possibly change, the server's state via the Object\n\t  Management API (OMAPI).\n\nconfig BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK\n\tbool \"Enable delayed ACK feature\"\n\tdepends on BR2_PACKAGE_DHCP_SERVER\n\thelp\n\t  Enable delayed ACK feature in the ISC DHCP server.\n\nconfig BR2_PACKAGE_DHCP_RELAY\n\tbool \"dhcp relay\"\n\thelp\n\t  DHCP relay agent from the ISC DHCP distribution.\n\nconfig BR2_PACKAGE_DHCP_CLIENT\n\tbool \"dhcp client\"\n\thelp\n\t  DHCP client from the ISC DHCP distribution.\n\nendif\n"
  },
  {
    "path": "package/dhcp/S80dhcp-relay",
    "content": "#!/bin/sh\n#\n# $Id: dhcp3-relay,v 1.1 2004/04/16 15:41:08 ml Exp $\n#\n\n# What servers should the DHCP relay forward requests to?\n# e.g: SERVERS=\"192.168.0.1\"\nSERVERS=\"\"\n\n# On what interfaces should the DHCP relay (dhrelay) serve DHCP requests?\nINTERFACES=\"\"\n\n# Additional options that are passed to the DHCP relay daemon?\nOPTIONS=\"\"\n\n# Read configuration variable file if it is present\nCFG_FILE=\"/etc/default/dhcrelay\"\n[ -r \"${CFG_FILE}\" ] && . \"${CFG_FILE}\"\n\n# Sanity checks\ntest -f /usr/sbin/dhcrelay || exit 0\ntest -n \"$INTERFACES\" || exit 0\ntest -n \"$SERVERS\" || exit 0\n\n# Build command line for interfaces (will be passed to dhrelay below.)\nIFCMD=\"\"\nfor I in $INTERFACES; do\n\tIFCMD=${IFCMD}\"-i \"${I}\" \"\ndone\n\nDHCRELAYPID=/var/run/dhcrelay.pid\n\ncase \"$1\" in\n\tstart)\n\t\tprintf \"Starting DHCP relay: \"\n\t\tstart-stop-daemon -S -q -x /usr/sbin/dhcrelay -- -q $OPTIONS $IFCMD $SERVERS\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping DHCP relay: \"\n\t\tstart-stop-daemon -K -q -x /usr/sbin/dhcrelay\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\trestart | force-reload)\n\t\t$0 stop\n\t\t$0 start\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|force-reload}\"\n\t\texit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "package/dhcp/S80dhcp-server",
    "content": "#!/bin/sh\n#\n# $Id: dhcp3-server.init.d,v 1.4 2003/07/13 19:12:41 mdz Exp $\n#\n\n# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?\n#       Separate multiple interfaces with spaces, e.g. \"eth0 eth1\".\nINTERFACES=\"\"\n\n# Additional options that are passed to the DHCP server daemon?\nOPTIONS=\"\"\n\nNAME=\"dhcpd\"\nDAEMON=\"/usr/sbin/${NAME}\"\nCFG_FILE=\"/etc/default/${NAME}\"\n\n# Read configuration variable file if it is present\n[ -r \"${CFG_FILE}\" ] && . \"${CFG_FILE}\"\n\n# Sanity checks\ntest -f /usr/sbin/dhcpd || exit 0\ntest -f /etc/dhcp/dhcpd.conf || exit 0\n\ncase \"$1\" in\n\tstart)\n\t\tprintf \"Starting DHCP server: \"\n\t\ttest -d /var/lib/dhcp/ || mkdir -p /var/lib/dhcp/\n\t\ttest -f /var/lib/dhcp/dhcpd.leases || touch /var/lib/dhcp/dhcpd.leases\n\t\tstart-stop-daemon -S -q -x ${DAEMON} -- -q $OPTIONS $INTERFACES\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping DHCP server: \"\n\t\tstart-stop-daemon -K -q -x ${DAEMON}\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\trestart | force-reload)\n\t\t$0 stop\n\t\t$0 start\n\t\tif [ \"$?\" != \"0\" ]; then\n\t\t\texit 1\n\t\tfi\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|force-reload}\"\n\t\texit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "package/dhcp/dhclient-script",
    "content": "#!/bin/sh\n\n# dhclient-script from OpenWRT project\n# http://git.openwrt.org/?p=packages.git;a=blob;f=net/isc-dhcp/files/dhclient-script;h=4afebc0ad20ebac51c5baae5ed01c6713e3a0fd0;hb=HEAD\n\nmake_resolv_conf() {\n  if [ x\"$new_domain_name_servers\" != x ]; then\n    cat /dev/null > /etc/resolv.conf.dhclient\n    chmod 644 /etc/resolv.conf.dhclient\n    if [ x\"$new_domain_search\" != x ]; then\n      echo search $new_domain_search >> /etc/resolv.conf.dhclient\n    elif [ x\"$new_domain_name\" != x ]; then\n      # Note that the DHCP 'Domain Name Option' is really just a domain\n      # name, and that this practice of using the domain name option as\n      # a search path is both nonstandard and deprecated.\n      echo search $new_domain_name >> /etc/resolv.conf.dhclient\n    fi\n    for nameserver in $new_domain_name_servers; do\n      echo nameserver $nameserver >>/etc/resolv.conf.dhclient\n    done\n\n  elif [ \"x${new_dhcp6_name_servers}\" != x ] ; then\n    cat /dev/null > /etc/resolv.conf.dhclient6\n    chmod 644 /etc/resolv.conf.dhclient6\n\n    if [ \"x${new_dhcp6_domain_search}\" != x ] ; then\n      echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6\n    fi\n    for nameserver in ${new_dhcp6_name_servers} ; do\n      echo nameserver ${nameserver} >> /etc/resolv.conf.dhclient6\n    done\n  fi\n\n  # if both v4 and v6 clients are running, concatenate results\n  cat /etc/resolv.conf.* > /etc/resolv.conf\n}\n\n# Must be used on exit.   Invokes the local dhcp client exit hooks, if any.\nexit_with_hooks() {\n  exit_status=$1\n  if [ -f /etc/dhclient-exit-hooks ]; then\n    . /etc/dhclient-exit-hooks\n  fi\n# probably should do something with exit status of the local script\n  exit $exit_status\n}\n\n# Invoke the local dhcp client enter hooks, if they exist.\nif [ -f /etc/dhclient-enter-hooks ]; then\n  exit_status=0\n  . /etc/dhclient-enter-hooks\n  # allow the local script to abort processing of this state\n  # local script must set exit_status variable to nonzero.\n  if [ $exit_status -ne 0 ]; then\n    exit $exit_status\n  fi\nfi\n\n###\n### DHCPv4 Handlers\n###\n\nif [ x$new_broadcast_address != x ]; then\n  new_broadcast_arg=\"broadcast $new_broadcast_address\"\nfi\nif [ x$new_subnet_mask != x ]; then\n  new_subnet_arg=\"netmask $new_subnet_mask\"\nfi\nif [ x$alias_subnet_mask != x ]; then\n  alias_subnet_arg=\"netmask $alias_subnet_mask\"\nfi\n\nif [ x$reason = xMEDIUM ]; then\n  # Linux doesn't do mediums (ok, ok, media).\n  exit_with_hooks 0\nfi\n\nif [ x$reason = xPREINIT ]; then\n  if [ x$alias_ip_address != x ]; then\n    # Bring down alias interface. Its routes will disappear too.\n    ifconfig $interface:0- 0.0.0.0\n  fi\n  ifconfig $interface 0.0.0.0 up\n\n  # We need to give the kernel some time to get the interface up.\n  sleep 1\n\n  exit_with_hooks 0\nfi\n\nif [ x$reason = xARPCHECK ] || [ x$reason = xARPSEND ]; then\n  exit_with_hooks 0\nfi\n  \nif [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \\\n   [ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then\n  current_hostname=`hostname`\n  if [ x$current_hostname = x ] || \\\n     [ x$current_hostname = x$old_host_name ]; then\n    if [ x$current_hostname = x ] || \\\n       [ x$new_host_name != x$old_host_name ]; then\n      hostname $new_host_name\n    fi\n  fi\n    \n  if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \\\n\t\t[ x$alias_ip_address != x$old_ip_address ]; then\n    # Possible new alias. Remove old alias.\n    ifconfig $interface:0- 0.0.0.0\n  fi\n  if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then\n    # IP address changed. Bringing down the interface will delete all routes,\n    # and clear the ARP cache.\n    ifconfig $interface 0.0.0.0 down\n\n  fi\n  if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \\\n     [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then\n\n    ifconfig $interface $new_ip_address $new_subnet_arg \\\n\t\t\t\t\t\t\t$new_broadcast_arg\n    for router in $new_routers; do\n      if [ \"x$new_subnet_mask\" = \"x255.255.255.255\" ] ; then\n\troute add -host $router dev $interface\n      fi\n      route add default gw $router\n    done\n  fi\n  if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ];\n   then\n    ifconfig $interface:0- 0.0.0.0\n    ifconfig $interface:0 $alias_ip_address $alias_subnet_arg\n    route add -host $alias_ip_address $interface:0\n  fi\n  make_resolv_conf\n  exit_with_hooks 0\nfi\n\nif [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ] || [ x$reason = xRELEASE ] \\\n   || [ x$reason = xSTOP ]; then\n  if [ x$alias_ip_address != x ]; then\n    # Turn off alias interface.\n    ifconfig $interface:0- 0.0.0.0\n  fi\n  if [ x$old_ip_address != x ]; then\n    # Shut down interface, which will delete routes and clear arp cache.\n    ifconfig $interface 0.0.0.0 down\n  fi\n  if [ x$alias_ip_address != x ]; then\n    ifconfig $interface:0 $alias_ip_address $alias_subnet_arg\n    route add -host $alias_ip_address $interface:0\n  fi\n\n  # remove v4 dns configuration for this interface\n  rm /etc/resolv.conf.dhclient\n  cat /etc/resolv.conf.* > /etc/resolv.conf\n\n  exit_with_hooks 0\nfi\n\nif [ x$reason = xTIMEOUT ]; then\n  if [ x$alias_ip_address != x ]; then\n    ifconfig $interface:0- 0.0.0.0\n  fi\n  ifconfig $interface $new_ip_address $new_subnet_arg \\\n\t\t\t\t\t$new_broadcast_arg\n  set $new_routers\n  if ping -q -c 1 $1; then\n    if [ x$new_ip_address != x$alias_ip_address ] && \\\n\t\t\t[ x$alias_ip_address != x ]; then\n      ifconfig $interface:0 $alias_ip_address $alias_subnet_arg\n      route add -host $alias_ip_address dev $interface:0\n    fi\n    for router in $new_routers; do\n      if [ \"x$new_subnet_mask\" = \"x255.255.255.255\" ] ; then\n\troute add -host $router dev $interface\n      fi\n      route add default gw $router\n    done\n    make_resolv_conf\n    exit_with_hooks 0\n  fi\n  ifconfig $interface 0.0.0.0 down\n  exit_with_hooks 1\nfi\n\n###\n### DHCPv6 Handlers\n###\n\nif [ x$reason = xPREINIT6 ]; then\n  # Ensure interface is up.\n  ifconfig ${interface} up\n\n  # Remove any stale addresses from aborted clients.\n  ip -f inet6 addr flush dev ${interface} scope global\n\n  exit_with_hooks 0\nfi\n\nif [ x${old_ip6_prefix} != x ] || [ x${new_ip6_prefix} != x ] ; then\n    echo Prefix ${reason} old=${old_ip6_prefix} new=${new_ip6_prefix}\n\n    exit_with_hooks 0\nfi\n\nif [ x$reason = xBOUND6 ]; then\n  if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then\n    exit_with_hooks 2;\n  fi\n\n  ifconfig ${interface} add ${new_ip6_address}/${new_ip6_prefixlen}\n\n  # Check for nameserver options.\n  make_resolv_conf\n\n### <<\n  # Set up softwire tunnel\n  if [ x${new_dhcp6_softwire} != x ] ; then\n    /etc/init.d/dhclient stop\n    ifconfig ${interface} 0.0.0.0\n    ip -6 tunnel add tun0 mode ipip6 \\\n\tremote ${new_dhcp6_softwire} \\\n\tlocal ${new_ip6_address} \\\n\tdev ${interface} encaplimit none\n    ip link set tun0 up\n    ip route add default dev tun0\n  fi\n### >>\n\n  exit_with_hooks 0\nfi\n\nif [ x$reason = xRENEW6 ] || [ x$reason = xREBIND6 ]; then\n  if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then\n    exit_with_hooks 2;\n  fi\n\n  ifconfig ${interface} add ${new_ip6_address}/${new_ip6_prefixlen}\n\n  # Make sure nothing has moved around on us.\n\n  # Nameservers/domains/etc.\n  if [ \"x${new_dhcp6_name_servers}\" != \"x${old_dhcp6_name_servers}\" ] ||\n     [ \"x${new_dhcp6_domain_search}\" != \"x${old_dhcp6_domain_search}\" ] ; then\n    make_resolv_conf\n  fi\n\n  exit_with_hooks 0\nfi\n\nif [ x$reason = xDEPREF6 ]; then\n  if [ x${new_ip6_address} = x ] ; then\n    exit_with_hooks 2;\n  fi\n\n  # Busybox ifconfig has no way to communicate this to the kernel, so ignore it\n\n  exit_with_hooks 0\nfi\n\nif [ x$reason = xEXPIRE6 -o x$reason = xRELEASE6 -o x$reason = xSTOP6 ]; then\n  if [ x${old_ip6_address} = x ] || [ x${old_ip6_prefixlen} = x ] ; then\n    exit_with_hooks 2;\n  fi\n\n  ifconfig ${interface} del ${old_ip6_address}/${old_ip6_prefixlen}\n\n  # remove v6 dns configuration for this interface\n  rm /etc/resolv.conf.dhclient6\n  cat /etc/resolv.conf.* > /etc/resolv.conf\n\n### <<\n  # Tear down softwire tunnel\n  if [ x${old_dhcp6_softwire} != x ] ; then\n    ip link set tun0 down\n    ip tunnel del tun0\n  fi\n### >>\n\n  exit_with_hooks 0\nfi\n\nexit_with_hooks 0\n"
  },
  {
    "path": "package/dhcp/dhclient.conf",
    "content": "# Configuration file for /sbin/dhclient, which is included in Debian's\n#\tdhcp3-client package.\n#\n# This is a sample configuration file for dhclient. See dhclient.conf's\n#\tman page for more information about the syntax of this file\n#\tand a more comprehensive list of the parameters understood by\n#\tdhclient.\n#\n# Normally, if the DHCP server provides reasonable information and does\n#\tnot leave anything out (like the domain name, for example), then\n#\tfew changes must be made to this file, if any.\n#\n\n#send host-name \"andare.fugue.com\";\n#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;\n#send dhcp-lease-time 3600;\n#supersede domain-name \"fugue.com home.vix.com\";\n#prepend domain-name-servers 127.0.0.1;\nrequest subnet-mask, broadcast-address, time-offset, routers,\n\tdomain-name, domain-name-servers, host-name,\n\tnetbios-name-servers, netbios-scope;\n#require subnet-mask, domain-name-servers;\n#timeout 60;\n#retry 60;\n#reboot 10;\n#select-timeout 5;\n#initial-interval 2;\n#script \"/etc/dhcp3/dhclient-script\";\n#media \"-link0 -link1 -link2\", \"link0 link1\";\n#reject 192.33.137.209;\n\n#alias {\n#  interface \"eth0\";\n#  fixed-address 192.5.5.213;\n#  option subnet-mask 255.255.255.255;\n#}\n\n#lease {\n#  interface \"eth0\";\n#  fixed-address 192.33.137.200;\n#  medium \"link0 link1\";\n#  option host-name \"andare.swiftmedia.com\";\n#  option subnet-mask 255.255.255.0;\n#  option broadcast-address 192.33.137.255;\n#  option routers 192.33.137.250;\n#  option domain-name-servers 127.0.0.1;\n#  renew 2 2000/1/12 00:00:01;\n#  rebind 2 2000/1/12 00:00:01;\n#  expire 2 2000/1/12 00:00:01;\n#}\n"
  },
  {
    "path": "package/dhcp/dhcp.hash",
    "content": "# Verified from https://ftp.isc.org/isc/dhcp/4.4.2-P1/dhcp-4.4.2-P1.tar.gz.sha256.asc\nsha256  b05e04337539545a8faa0d6ac518defc61a07e5aec66a857f455e7f218c85a1a  dhcp-4.4.2-P1.tar.gz\n# Locally calculated\nsha256  9961fce0d83a6229b9084cdadedfa723a53274c63af610c9adb61b607e0f5a76  LICENSE\n"
  },
  {
    "path": "package/dhcp/dhcp.mk",
    "content": "################################################################################\n#\n# dhcp\n#\n################################################################################\n\nDHCP_VERSION = 4.4.2-P1\nDHCP_SITE = http://ftp.isc.org/isc/dhcp/$(DHCP_VERSION)\nDHCP_INSTALL_STAGING = YES\nDHCP_LICENSE = MPL-2.0\nDHCP_LICENSE_FILES = LICENSE\nDHCP_DEPENDENCIES = bind host-gawk\nDHCP_CPE_ID_VENDOR = isc\n\n# use libtool-enabled configure.ac\ndefine DHCP_LIBTOOL_AUTORECONF\n\tcp $(@D)/configure.ac+lt $(@D)/configure.ac\nendef\n\nDHCP_CONF_ENV = \\\n\tCPPFLAGS='-D_PATH_DHCPD_CONF=\\\"/etc/dhcp/dhcpd.conf\\\" \\\n\t\t-D_PATH_DHCLIENT_CONF=\\\"/etc/dhcp/dhclient.conf\\\"' \\\n\tCFLAGS='$(TARGET_CFLAGS) -DISC_CHECK_NONE=1'\n\nDHCP_CONF_ENV += ac_cv_prog_AWK=$(HOST_DIR)/bin/gawk\n\nDHCP_CONF_OPTS = \\\n\t--with-libbind=$(STAGING_DIR)/usr \\\n\t--with-randomdev=/dev/random \\\n\t--with-srv-lease-file=/var/lib/dhcp/dhcpd.leases \\\n\t--with-srv6-lease-file=/var/lib/dhcp/dhcpd6.leases \\\n\t--with-cli-lease-file=/var/lib/dhcp/dhclient.leases \\\n\t--with-cli6-lease-file=/var/lib/dhcp/dhclient6.leases \\\n\t--with-srv-pid-file=/var/run/dhcpd.pid \\\n\t--with-srv6-pid-file=/var/run/dhcpd6.pid \\\n\t--with-cli-pid-file=/var/run/dhclient.pid \\\n\t--with-cli6-pid-file=/var/run/dhclient6.pid \\\n\t--with-relay-pid-file=/var/run/dhcrelay.pid \\\n\t--with-relay6-pid-file=/var/run/dhcrelay6.pid\n\nifeq ($(BR2_STATIC_LIBS),y)\nDHCP_CONF_ENV += LIBS=\"`$(STAGING_DIR)/usr/bin/bind9-config --libs bind9`\"\nDHCP_CONF_OPTS += --disable-libtool\nelse\nDHCP_POST_EXTRACT_HOOKS += DHCP_LIBTOOL_AUTORECONF\nDHCP_AUTORECONF = YES\nDHCP_CONF_OPTS += --enable-libtool\nendif\n\nifeq ($(BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK),y)\nDHCP_CONF_OPTS += --enable-delayed-ack\nendif\n\ndefine DHCP_INSTALL_LIBS\n\t$(MAKE) -C $(@D)/common install-exec DESTDIR=$(TARGET_DIR)\n\t$(MAKE) -C $(@D)/omapip install-exec DESTDIR=$(TARGET_DIR)\nendef\n\nifeq ($(BR2_PACKAGE_DHCP_SERVER),y)\ndefine DHCP_INSTALL_CTL_LIBS\n\t$(MAKE) -C $(@D)/dhcpctl install-exec DESTDIR=$(TARGET_DIR)\nendef\ndefine DHCP_INSTALL_SERVER\n\tmkdir -p $(TARGET_DIR)/var/lib\n\t(cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)\n\t$(MAKE) -C $(@D)/server DESTDIR=$(TARGET_DIR) install-sbinPROGRAMS\n\t$(INSTALL) -m 0644 -D package/dhcp/dhcpd.conf \\\n\t\t$(TARGET_DIR)/etc/dhcp/dhcpd.conf\nendef\nendif\n\nifeq ($(BR2_PACKAGE_DHCP_RELAY),y)\ndefine DHCP_INSTALL_RELAY\n\tmkdir -p $(TARGET_DIR)/var/lib\n\t(cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)\n\t$(MAKE) -C $(@D)/relay DESTDIR=$(TARGET_DIR) install-sbinPROGRAMS\nendef\nendif\n\nifeq ($(BR2_PACKAGE_DHCP_CLIENT),y)\ndefine DHCP_INSTALL_CLIENT\n\tmkdir -p $(TARGET_DIR)/var/lib\n\t(cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)\n\t$(MAKE) -C $(@D)/client DESTDIR=$(TARGET_DIR) sbindir=/sbin \\\n\t\tinstall-sbinPROGRAMS\n\t$(INSTALL) -m 0644 -D package/dhcp/dhclient.conf \\\n\t\t$(TARGET_DIR)/etc/dhcp/dhclient.conf\n\t$(INSTALL) -m 0755 -D package/dhcp/dhclient-script \\\n\t\t$(TARGET_DIR)/sbin/dhclient-script\nendef\nendif\n\n# Options don't matter, scripts won't start if binaries aren't there\ndefine DHCP_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/dhcp/S80dhcp-server \\\n\t\t$(TARGET_DIR)/etc/init.d/S80dhcp-server\n\t$(INSTALL) -m 0755 -D package/dhcp/S80dhcp-relay \\\n\t\t$(TARGET_DIR)/etc/init.d/S80dhcp-relay\nendef\n\nifeq ($(BR2_PACKAGE_DHCP_SERVER),y)\ndefine DHCP_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/dhcp/dhcpd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/dhcpd.service\n\n\tmkdir -p $(TARGET_DIR)/usr/lib/tmpfiles.d\n\techo \"d /var/lib/dhcp 0755 - - - -\" > \\\n\t\t$(TARGET_DIR)/usr/lib/tmpfiles.d/dhcpd.conf\n\techo \"f /var/lib/dhcp/dhcpd.leases - - - - -\" >> \\\n\t\t$(TARGET_DIR)/usr/lib/tmpfiles.d/dhcpd.conf\nendef\nendif\n\ndefine DHCP_INSTALL_TARGET_CMDS\n\t$(DHCP_INSTALL_LIBS)\n\t$(DHCP_INSTALL_CTL_LIBS)\n\t$(DHCP_INSTALL_RELAY)\n\t$(DHCP_INSTALL_SERVER)\n\t$(DHCP_INSTALL_CLIENT)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dhcp/dhcpd.conf",
    "content": "#\n# Sample configuration file for ISC dhcpd for Debian\n#\n# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $\n#\n\n# The ddns-updates-style parameter controls whether or not the server will\n# attempt to do a DNS update when a lease is confirmed. We default to the\n# behavior of the version 2 packages ('none', since DHCP v2 didn't\n# have support for DDNS.)\nddns-update-style none;\n\n# option definitions common to all supported networks...\noption domain-name \"example.org\";\noption domain-name-servers ns1.example.org, ns2.example.org;\n\ndefault-lease-time 600;\nmax-lease-time 7200;\n\n# If this DHCP server is the official DHCP server for the local\n# network, the authoritative directive should be uncommented.\n#authoritative;\n\n# Use this to send dhcp log messages to a different log file (you also\n# have to hack syslog.conf to complete the redirection).\nlog-facility local7;\n\n# No service will be given on this subnet, but declaring it helps the \n# DHCP server to understand the network topology.\n\n#subnet 10.152.187.0 netmask 255.255.255.0 {\n#}\n\n# This is a very basic subnet declaration.\n\n#subnet 10.254.239.0 netmask 255.255.255.224 {\n#  range 10.254.239.10 10.254.239.20;\n#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;\n#}\n\n# This declaration allows BOOTP clients to get dynamic addresses,\n# which we don't really recommend.\n\n#subnet 10.254.239.32 netmask 255.255.255.224 {\n#  range dynamic-bootp 10.254.239.40 10.254.239.60;\n#  option broadcast-address 10.254.239.31;\n#  option routers rtr-239-32-1.example.org;\n#}\n\n# A slightly different configuration for an internal subnet.\n#subnet 10.5.5.0 netmask 255.255.255.224 {\n#  range 10.5.5.26 10.5.5.30;\n#  option domain-name-servers ns1.internal.example.org;\n#  option domain-name \"internal.example.org\";\n#  option routers 10.5.5.1;\n#  option broadcast-address 10.5.5.31;\n#  default-lease-time 600;\n#  max-lease-time 7200;\n#}\n\n# Hosts which require special configuration options can be listed in\n# host statements.   If no address is specified, the address will be\n# allocated dynamically (if possible), but the host-specific information\n# will still come from the host declaration.\n\n#host passacaglia {\n#  hardware ethernet 0:0:c0:5d:bd:95;\n#  filename \"vmunix.passacaglia\";\n#  server-name \"toccata.fugue.com\";\n#}\n\n# Fixed IP addresses can also be specified for hosts.   These addresses\n# should not also be listed as being available for dynamic assignment.\n# Hosts for which fixed IP addresses have been specified can boot using\n# BOOTP or DHCP.   Hosts for which no fixed address is specified can only\n# be booted with DHCP, unless there is an address range on the subnet\n# to which a BOOTP client is connected which has the dynamic-bootp flag\n# set.\n#host fantasia {\n#  hardware ethernet 08:00:07:26:c0:a5;\n#  fixed-address fantasia.fugue.com;\n#}\n\n# You can declare a class of clients and then do address allocation\n# based on that.   The example below shows a case where all clients\n# in a certain class get addresses on the 10.17.224/24 subnet, and all\n# other clients get addresses on the 10.0.29/24 subnet.\n\n#class \"foo\" {\n#  match if substring (option vendor-class-identifier, 0, 4) = \"SUNW\";\n#}\n\n#shared-network 224-29 {\n#  subnet 10.17.224.0 netmask 255.255.255.0 {\n#    option routers rtr-224.example.org;\n#  }\n#  subnet 10.0.29.0 netmask 255.255.255.0 {\n#    option routers rtr-29.example.org;\n#  }\n#  pool {\n#    allow members of \"foo\";\n#    range 10.17.224.10 10.17.224.250;\n#  }\n#  pool {\n#    deny members of \"foo\";\n#    range 10.0.29.10 10.0.29.230;\n#  }\n#}\n"
  },
  {
    "path": "package/dhcp/dhcpd.service",
    "content": "[Unit]\nDescription=DHCP server\nAfter=network.target\n\n[Service]\nType=forking\nPIDFile=/run/dhcpd.pid\nExecStart=/usr/sbin/dhcpd -q -pf /run/dhcpd.pid $OPTIONS $INTERFACES\nKillSignal=SIGINT\nEnvironmentFile=-/etc/default/dhcpd\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/dhcpcd/Config.in",
    "content": "comment \"dhcpcd needs a toolchain w/ headers >= 3.1\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1\n\nconfig BR2_PACKAGE_DHCPCD\n\tbool \"dhcpcd\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 # sa_family_t in linux/socket.h\n\thelp\n\t  An RFC2131 compliant DHCP client\n\n\t  http://roy.marples.name/projects/dhcpcd/\n"
  },
  {
    "path": "package/dhcpcd/S41dhcpcd",
    "content": "#!/bin/sh\n#\n# Start/stop dhcpcd\n#\n\nDAEMON=/sbin/dhcpcd\nCONFIG=/etc/dhcpcd.conf\nPIDFILE=/var/run/dhcpcd.pid\n\n[ -f $CONFIG ] || exit 0\n\ncase \"$1\" in\n  start)\n\techo \"Starting dhcpcd...\"\n\tstart-stop-daemon -S -x \"$DAEMON\" -p \"$PIDFILE\" -- -f \"$CONFIG\"\n\t;;\n  stop)\n\techo \"Stopping dhcpcd...\"\n\tstart-stop-daemon -K -x \"$DAEMON\" -p \"$PIDFILE\" -o\n\t;;\n  reload|force-reload)\n\techo \"Reloading dhcpcd configuration...\"\n\t\"$DAEMON\" -s reload\n\t;;\n  restart)\n\t\"$0\" stop\n\tsleep 1 # Prevent race condition: ensure dhcpcd stops before start.\n\t\"$0\" start\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart|reload|force-reload}\"\n\texit 1\nesac\n"
  },
  {
    "path": "package/dhcpcd/dhcpcd.hash",
    "content": "# sha256 from ftp://roy.marples.name/pub/dhcpcd/dhcpcd-9.4.1.tar.xz.distinfo\nsha256  819357634efed1ea5cf44ec01b24d3d3f8852fec8b4249925dcc5667c54e376c  dhcpcd-9.4.1.tar.xz\n# Locally calculated\nsha256  4f21ce186859516dcab9b3197f3e9533a9bd1b87932015c87f539af4a48cd592  LICENSE\n"
  },
  {
    "path": "package/dhcpcd/dhcpcd.mk",
    "content": "################################################################################\n#\n# dhcpcd\n#\n################################################################################\n\nDHCPCD_VERSION = 9.4.1\nDHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.xz\nDHCPCD_SITE = http://roy.marples.name/downloads/dhcpcd\nDHCPCD_DEPENDENCIES = host-pkgconf\nDHCPCD_LICENSE = BSD-2-Clause\nDHCPCD_LICENSE_FILES = LICENSE\nDHCPCD_CPE_ID_VENDOR = dhcpcd_project\n\nDHCPCD_CONFIG_OPTS = \\\n\t--libexecdir=/lib/dhcpcd \\\n\t--os=linux \\\n\t--privsepuser=dhcpcd\n\n# AUDIT_ARCH_{OPENRISC,SH,SHEL,SH64,SHEL64} are only available with kernel >= 3.7\nifeq ($(BR2_or1k)$(BR2_sh):$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7),y:)\nDHCPCD_CONFIG_OPTS += --disable-privsep\nendif\n\n# AUDIT_ARCH_MICROBLAZE is only available with kernel >= 3.18\nifeq ($(BR2_microblazeel)$(BR2_microblazebe):$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18),y:)\nDHCPCD_CONFIG_OPTS += --disable-privsep\nendif\n\n# AUDIT_ARCH_XTENSA is only available with kernel >= 5.0\nifeq ($(BR2_xtensa):$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0),y:)\nDHCPCD_CONFIG_OPTS += --disable-privsep\nendif\n\n# AUDIT_ARCH_{ARCOMPACT,ARCV2,NDS32,NIOS2} are only available with kernel >= 5.2\nifeq ($(BR2_arceb)$(BR2_arcle)$(BR2_nds32)$(BR2_nios2):$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2),y:)\nDHCPCD_CONFIG_OPTS += --disable-privsep\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nDHCPCD_CONFIG_OPTS += --with-udev\nDHCPCD_DEPENDENCIES += udev\nelse\nDHCPCD_CONFIG_OPTS += --without-udev\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nDHCPCD_CONFIG_OPTS += --enable-static\nendif\n\nifeq ($(BR2_USE_MMU),)\nDHCPCD_CONFIG_OPTS += --disable-fork --disable-privsep\nendif\n\ndefine DHCPCD_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(DHCPCD_CONFIG_OPTS))\nendef\n\ndefine DHCPCD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) all\nendef\n\ndefine DHCPCD_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install DESTDIR=$(TARGET_DIR)\nendef\n\n# When network-manager is enabled together with dhcpcd, it will use\n# dhcpcd as a DHCP client, and will be in charge of running, so we\n# don't want the init script or service file to be installed.\nifeq ($(BR2_PACKAGE_NETWORK_MANAGER),)\ndefine DHCPCD_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/dhcpcd/S41dhcpcd \\\n\t\t$(TARGET_DIR)/etc/init.d/S41dhcpcd\nendef\n\ndefine DHCPCD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/dhcpcd/dhcpcd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/dhcpcd.service\nendef\nendif\n\ndefine DHCPCD_USERS\n\tdhcpcd -1 dhcpcd -1 * - - - dhcpcd user\nendef\n\n# NOTE: Even though this package has a configure script, it is not generated\n# using the autotools, so we have to use the generic package infrastructure.\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dhcpcd/dhcpcd.service",
    "content": "[Unit]\nDescription=DHCP client\nAfter=network.target\n\n[Service]\nType=forking\nEnvironmentFile=-/etc/default/dhcpcd\nPIDFile=/run/dhcpcd.pid\nExecStart=/sbin/dhcpcd $DAEMON_ARGS\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/dhcpdump/0001-use-non-bsd-structures.patch",
    "content": "The udphdr structure has uh_* fields when _FAVOR_BSD is\ndefined. Otherwise, the fields are just named source, dest, len and\ncheck. See <netinet/udp.h>.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: dhcpdump-1.8/dhcpdump.c\n===================================================================\n--- dhcpdump-1.8.orig/dhcpdump.c\t2011-05-17 20:20:46.506980003 +0200\n+++ dhcpdump-1.8/dhcpdump.c\t2011-05-17 20:20:59.338979999 +0200\n@@ -163,10 +163,10 @@\n \tstrcpy(ip_origin, (u_char *)inet_ntoa(ip->ip_src));\n \tstrcpy(ip_destination, (u_char *)inet_ntoa(ip->ip_dst));\n \n-\tif (hmask && check_ch((u_char *)(sp + offset), ntohs(udp->uh_ulen)))\n+\tif (hmask && check_ch((u_char *)(sp + offset), ntohs(udp->len)))\n \t\treturn;\n \n-\tprintdata((u_char *)(sp + offset), ntohs(udp->uh_ulen));\n+\tprintdata((u_char *)(sp + offset), ntohs(udp->len));\n }\n \n // check for matching CHADDR (Peter Apian-Bennewitz <apian@ise.fhg.de>)\n"
  },
  {
    "path": "package/dhcpdump/Config.in",
    "content": "config BR2_PACKAGE_DHCPDUMP\n\tbool \"dhcpdump\"\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  A tool for monitoring dhcp requests using tcpdump.\n\n\t  http://www.mavetju.org/unix/general.php\n"
  },
  {
    "path": "package/dhcpdump/dhcpdump.hash",
    "content": "# Locally calculated\nsha256 6d5eb9418162fb738bc56e4c1682ce7f7392dd96e568cc996e44c28de7f77190  dhcpdump-1.8.tar.gz\nsha256 bab6ca76b7e93885396513689b1248dfb0e8fd662695b8bd1b26784ef71a0192  LICENSE\n"
  },
  {
    "path": "package/dhcpdump/dhcpdump.mk",
    "content": "################################################################################\n#\n# dhcpdump\n#\n################################################################################\n\nDHCPDUMP_VERSION = 1.8\nDHCPDUMP_SITE = http://www.mavetju.org/download\nDHCPDUMP_DEPENDENCIES = libpcap\nDHCPDUMP_LICENSE = BSD-2-Clause\nDHCPDUMP_LICENSE_FILES = LICENSE\n\nDHCPDUMP_LIBS = -lpcap\nifeq ($(BR2_STATIC_LIBS),y)\nDHCPDUMP_LIBS += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\nendif\n\n# glibc, uclibc and musl have strsep()\nDHCPDUMP_CFLAGS = $(TARGET_CFLAGS) -DHAVE_STRSEP\n\ndefine DHCPDUMP_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC=\"$(TARGET_CC) $(DHCPDUMP_CFLAGS) \\\n\t\t-D_GNU_SOURCE\" LIBS=\"$(DHCPDUMP_LIBS)\" dhcpdump\nendef\n\ndefine DHCPDUMP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/dhcpdump $(TARGET_DIR)/usr/bin/dhcpdump\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dhrystone/0001-cmdline-nruns.patch",
    "content": "let people specify the number of runs on the command line\n\nPatch by Vivi Li <vivi.li@analog.com>\n\n--- a/dhry_1.c\n+++ b/dhry_1.c\n@@ -66,7 +70,7 @@\n /* end of variables for time measurement */\n \n \n-main ()\n+main(int argc, char *argv[])\n /*****/\n \n   /* main program, corresponds to procedures        */\n@@ -101,6 +105,13 @@\n         /* Warning: With 16-Bit processors and Number_Of_Runs > 32000,  */\n         /* overflow may occur for this array element.                   */\n \n+  Number_Of_Runs = 0;\n+  if ( argc == 2 ) {\n+      if (atoi(argv[1]) > 0) {\n+          Number_Of_Runs = atoi(argv[1]);\n+      }\n+  }\n+\n   printf (\"\\n\");\n   printf (\"Dhrystone Benchmark, Version 2.1 (Language: C)\\n\");\n   printf (\"\\n\");\n@@ -114,13 +125,17 @@\n     printf (\"Program compiled without 'register' attribute\\n\");\n     printf (\"\\n\");\n   }\n-  printf (\"Please give the number of runs through the benchmark: \");\n-  {\n-    int n;\n-    scanf (\"%d\", &n);\n-    Number_Of_Runs = n;\n+\n+  if (!Number_Of_Runs) {\n+      printf (\"Please give the number of runs through the benchmark: \");\n+      fflush (stdout);\n+      {\n+          int n;\n+          scanf (\"%d\", &n);\n+          Number_Of_Runs = n;\n+      }\n+      printf (\"\\n\");\n   }\n-  printf (\"\\n\");\n \n   printf (\"Execution starts, %d runs through Dhrystone\\n\", Number_Of_Runs);\n \n"
  },
  {
    "path": "package/dhrystone/0002-HZ.patch",
    "content": "Get HZ value from system rather than requiring via CPPFLAGS\n\nPatch by Robin Getz <rgetz@blackfin.uclinux.org>\n\n--- a/dhry.h\n+++ b/dhry.h\n@@ -359,6 +359,10 @@\n                 /* for \"times\" */\n #endif\n \n+#ifndef HZ\n+#include <sys/param.h>\n+#endif\n+\n #define Mic_secs_Per_Second     1000000.0\n                 /* Berkeley UNIX C returns process times in seconds/HZ */\n \n"
  },
  {
    "path": "package/dhrystone/0003-exit.patch",
    "content": "trust the exit status of the program\n\nPatch by Robin Getz <rgetz@blackfin.uclinux.org>\n\n--- a/dhry_1.c\n+++ b/dhry_1.c\n@@ -274,6 +289,7 @@\n     printf (\"\\n\");\n   }\n   \n+  exit(0);\n }\n \n \n"
  },
  {
    "path": "package/dhrystone/0004-headers.patch",
    "content": "get prototypes for malloc/exit/strcpy\n\nPatch by Mike Frysinger <vapier@gentoo.org>\n\n--- a/dhry.h\n+++ b/dhry.h\n@@ -388,6 +388,8 @@\n /* General definitions: */\n \n #include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n                 /* for strcpy, strcmp */\n \n #define Null 0 \n"
  },
  {
    "path": "package/dhrystone/0005-prototypes.patch",
    "content": "Avoid collision with C library using NO_PROTOTYPES found in code already\n\nPatch by Robin Getz <rgetz@blackfin.uclinux.org>\n\n--- a/dhry_1.c\n+++ b/dhry_1.c\n@@ -28,7 +28,9 @@\n int             Arr_1_Glob [50];\n int             Arr_2_Glob [50] [50];\n \n+#ifndef NO_PROTOTYPES\n extern char     *malloc ();\n+#endif\n Enumeration     Func_1 ();\n   /* forward declaration necessary since Enumeration may not simply be int */\n \n@@ -45,14 +45,18 @@\n \n #ifdef TIMES\n struct tms      time_info;\n+#ifndef NO_PROTOTYPES\n extern  int     times ();\n                 /* see library function \"times\" */\n+#endif\n #define Too_Small_Time 120\n                 /* Measurements should last at least about 2 seconds */\n #endif\n #ifdef TIME\n+#ifndef NO_PROTOTYPES\n extern long     time();\n                 /* see library function \"time\"  */\n+#endif\n #define Too_Small_Time 2\n                 /* Measurements should last at least 2 seconds */\n #endif\n"
  },
  {
    "path": "package/dhrystone/Config.in",
    "content": "config BR2_PACKAGE_DHRYSTONE\n\tbool \"dhrystone\"\n\thelp\n\t  easy-to-use integer benchmark\n\n\t  http://www.netlib.org/benchmark/dhry-c\n"
  },
  {
    "path": "package/dhrystone/Makefile",
    "content": "CPPFLAGS += -DNO_PROTOTYPES=1 -DHZ=100\nLDLIBS += -lm\n\nall: dhrystone\n\ndhrystone: dhry_1.o dhry_2.o\n\t$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)\n\nclean:\n\trm -f *.o dhrystone\n\n.PHONY: all clean\n"
  },
  {
    "path": "package/dhrystone/dhrystone.hash",
    "content": "# Locally calculated\nsha256 038a7e9169787125c3451a6c941f3aca5db2d2f3863871afcdce154ef17f4e3e  dhry-c\n"
  },
  {
    "path": "package/dhrystone/dhrystone.mk",
    "content": "################################################################################\n#\n# dhrystone\n#\n################################################################################\n\nDHRYSTONE_VERSION = 2\nDHRYSTONE_SOURCE = dhry-c\nDHRYSTONE_SITE = http://www.netlib.org/benchmark\n\ndefine DHRYSTONE_EXTRACT_CMDS\n\t(cd $(@D) && $(SHELL) $(DHRYSTONE_DL_DIR)/$($(PKG)_SOURCE))\n\t$(Q)cp package/dhrystone/Makefile $(@D)/\nendef\n\ndefine DHRYSTONE_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine DHRYSTONE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D $(@D)/dhrystone $(TARGET_DIR)/usr/bin/dhrystone\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dialog/Config.in",
    "content": "config BR2_PACKAGE_DIALOG\n\tbool \"dialog\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  dialog - display dialog boxes from shell scripts\n\n\t  This application provides a method of displaying several\n\t  different types of dialog boxes from shell scripts. This\n\t  allows a developer of a script to interact with the user in a\n\t  much friendlier manner.\n\n\t  http://invisible-island.net/dialog/dialog.html\n"
  },
  {
    "path": "package/dialog/dialog.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  466163e8b97c2b7709d00389199add3156bd813f60ccb0335d0a30f2d4a17f99  dialog-1.3-20200327.tgz\n# Locally computed\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  COPYING\n"
  },
  {
    "path": "package/dialog/dialog.mk",
    "content": "################################################################################\n#\n# dialog\n#\n################################################################################\n\nDIALOG_VERSION = 1.3-20200327\nDIALOG_SOURCE = dialog-$(DIALOG_VERSION).tgz\nDIALOG_SITE = https://invisible-mirror.net/archives/dialog\nDIALOG_CONF_OPTS = --with-ncurses --with-curses-dir=$(STAGING_DIR)/usr \\\n\t--disable-rpath-hack\nDIALOG_DEPENDENCIES = host-pkgconf ncurses $(TARGET_NLS_DEPENDENCIES)\nDIALOG_LICENSE = LGPL-2.1\nDIALOG_LICENSE_FILES = COPYING\n\nifneq ($(BR2_ENABLE_LOCALE),y)\nDIALOG_DEPENDENCIES += libiconv\nendif\n\nDIALOG_CONF_OPTS += NCURSES_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dieharder/0001-Do-not-use-includedir-as-include-search-path-for-bui.patch",
    "content": "From fbc9b7c3b83a99ac996c0a268487d1f800630328 Mon Sep 17 00:00:00 2001\nFrom: Julien Viard de Galbert <julien@vdg.name>\nDate: Wed, 8 Feb 2017 21:26:58 +0100\nSubject: [PATCH] Do not use includedir as include search path for build\n\n--includedir is not used to specify where a program should\nlook for headers of libraries, but to tell where it should\ninstall its own headers.\n\nSigned-off-by: Julien Viard de Galbert <julien@vdg.name>\n---\n configure.ac             | 6 +++---\n dieharder/Makefile.am    | 2 +-\n libdieharder/Makefile.am | 2 +-\n 3 files changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex b336115..91f7c64 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -96,9 +96,9 @@ AC_TYPE_SIZE_T\n AC_C_VOLATILE\n AC_C_INLINE\n \n-DIEHARDER_CFLAGS=\"-I$includedir\"\n-dieharder_CFLAGS=\"-std=c99 -Wall -pedantic -I$includedir\"\n-libdieharder_lo_CFLAGS=\"-Wall -pedantic -I$includedir\"\n+DIEHARDER_CFLAGS=\"\"\n+dieharder_CFLAGS=\"-std=c99 -Wall -pedantic\"\n+libdieharder_lo_CFLAGS=\"-Wall -pedantic\"\n DIEHARDER_LIBS=\"-L$libdir -ldieharder\"\n ACLOCAL_AMFLAGS=\"-I m4\"\n \ndiff --git a/dieharder/Makefile.am b/dieharder/Makefile.am\nindex e6fbff2..7bdac5c 100644\n--- a/dieharder/Makefile.am\n+++ b/dieharder/Makefile.am\n@@ -64,7 +64,7 @@ DEFINES = -DVERSION=$(VERSION)\n # CC = gcc\n \n # Compile flags (use fairly standard -O3 as default)\n-AM_CPPFLAGS = -I ${top_srcdir}/include $(DEFINES) -I ${includedir}\n+AM_CPPFLAGS = -I ${top_srcdir}/include $(DEFINES)\n AM_CFLAGS = -O3\n \n # Load flags (optional)\ndiff --git a/libdieharder/Makefile.am b/libdieharder/Makefile.am\nindex 5fd3396..0873f9c 100644\n--- a/libdieharder/Makefile.am\n+++ b/libdieharder/Makefile.am\n@@ -114,7 +114,7 @@ DEFINES = -DVERSION=$(VERSION) -DLITTLE_ENDIAN=$(LITTLE_ENDIAN)\n # CC = gcc\n \n # Compile flags (use fairly standard -O3 as default)\n-AM_CPPFLAGS = $(DEFINES) -I ${top_srcdir}/include -I ${includedir}\n+AM_CPPFLAGS = $(DEFINES) -I ${top_srcdir}/include\n AM_CFLAGS = -O3 -Wall -pedantic -Wno-unused-variable \n \n #========================================================================\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/dieharder/0002-Fix-missing-type-intptr_t.patch",
    "content": "From 6f550841943f19612af064b3d3a1db134078e03c Mon Sep 17 00:00:00 2001\nFrom: Julien Viard de Galbert <julien@vdg.name>\nDate: Sat, 14 Jan 2017 14:18:10 +0100\nSubject: [PATCH] Fix missing type intptr_t\n\nWith glibc-2.23 unistd.h need intptr_t when __USE_MISC is defined.\n\nSigned-off-by: Julien Viard de Galbert <julien@vdg.name>\n---\n include/dieharder/libdieharder.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/include/dieharder/libdieharder.h b/include/dieharder/libdieharder.h\nindex 2138ebf..d98b758 100644\n--- a/include/dieharder/libdieharder.h\n+++ b/include/dieharder/libdieharder.h\n@@ -17,6 +17,7 @@\n \n /* This turns on uint macro in c99 */\n #define __USE_MISC 1\n+#include <stdint.h>\n #include <sys/types.h>\n #include <sys/stat.h>\n #include <unistd.h>\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/dieharder/0003-Add-_GNU_SOURCE-for-uint-and-M_PI-with-musl-libc.patch",
    "content": "From 526510a27ef47a16699dd34a2373ad9b6bb5e8f3 Mon Sep 17 00:00:00 2001\nFrom: Julien Viard de Galbert <julien@vdg.name>\nDate: Sat, 14 Jan 2017 14:19:47 +0100\nSubject: [PATCH] Add _GNU_SOURCE for uint and M_PI with musl libc\n\nWhen building with musl libc _GNU_SOURCE need to be defined\nto provide uint type and M_PI macro\n\nSigned-off-by: Julien Viard de Galbert <julien@vdg.name>\n---\n include/dieharder/libdieharder.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/include/dieharder/libdieharder.h b/include/dieharder/libdieharder.h\nindex d98b758..c1a5023 100644\n--- a/include/dieharder/libdieharder.h\n+++ b/include/dieharder/libdieharder.h\n@@ -17,6 +17,7 @@\n \n /* This turns on uint macro in c99 */\n #define __USE_MISC 1\n+#define _GNU_SOURCE 1\n #include <stdint.h>\n #include <sys/types.h>\n #include <sys/stat.h>\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/dieharder/0004-Add-static-to-inline-functions.patch",
    "content": "From 9c71a211dcf20f53f747326f5bc3fee9fabe3f52 Mon Sep 17 00:00:00 2001\nFrom: Julien Viard de Galbert <julien@vdg.name>\nDate: Tue, 27 Jun 2017 00:16:11 +0200\nSubject: [PATCH] Add static to inline functions\n\nThis is needed to avoid a link error where the inline functions appear\nmissing at link time.\nFrom c99 standard inline function should either be declared static or\nhave an extern instance in a c file for linking.\nThis fix is necessary to build with gcc 7; for some reason it was not\ntrigerred before.\n\nSigned-off-by: Julien Viard de Galbert <julien@vdg.name>\n---\n libdieharder/dab_filltree.c  | 4 ++--\n libdieharder/dab_filltree2.c | 4 ++--\n 2 files changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/libdieharder/dab_filltree.c b/libdieharder/dab_filltree.c\nindex 9cc5ce7..a377c3d 100644\n--- a/libdieharder/dab_filltree.c\n+++ b/libdieharder/dab_filltree.c\n@@ -34,7 +34,7 @@ static double targetData[] = {\n 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\n };\n \n-inline int insert(double x, double *array, unsigned int startVal);\n+static inline int insert(double x, double *array, unsigned int startVal);\n \n int dab_filltree(Test **test,int irun) {\n  int size = (ntuple == 0) ? 32 : ntuple;\n@@ -105,7 +105,7 @@ int dab_filltree(Test **test,int irun) {\n }\n \n \n-inline int insert(double x, double *array, unsigned int startVal) {\n+static inline int insert(double x, double *array, unsigned int startVal) {\n  uint d = (startVal + 1) / 2;\n  uint i = startVal;\n  while (d > 0) {\ndiff --git a/libdieharder/dab_filltree2.c b/libdieharder/dab_filltree2.c\nindex 1e33af2..59cbd52 100644\n--- a/libdieharder/dab_filltree2.c\n+++ b/libdieharder/dab_filltree2.c\n@@ -92,7 +92,7 @@ static double targetData[128] = {  // size=128, generated from 6e9 samples\n 0.00000000000e+00,0.00000000000e+00,0.00000000000e+00,0.00000000000e+00,\n };\n \n-inline int insertBit(uint x, uchar *array, uint *i, uint *d);\n+static inline int insertBit(uint x, uchar *array, uint *i, uint *d);\n \n int dab_filltree2(Test **test, int irun) {\n  int size = (ntuple == 0) ? 128 : ntuple;\n@@ -181,7 +181,7 @@ int dab_filltree2(Test **test, int irun) {\n  * The function returns >= 0 if the path went too deep; the\n  * returned value is the last position of the path.\n  */\n-inline int insertBit(uint x, uchar *array, uint *i, uint *d) {\n+static inline int insertBit(uint x, uchar *array, uint *i, uint *d) {\n  if (x != 0) {\n    *i += *d;\n  } else {\n-- \n2.13.2\n\n"
  },
  {
    "path": "package/dieharder/Config.in",
    "content": "config BR2_PACKAGE_DIEHARDER\n\tbool \"dieharder\"\n\tselect BR2_PACKAGE_GSL\n\thelp\n\t  dieharder is a fairly involved random number/uniform deviate\n\t  generator tester. It is thus suitable for use in testing\n\t  both software RNG's and hardware RNG's.\n\n\t  http://www.phy.duke.edu/~rgb/General/dieharder.php\n"
  },
  {
    "path": "package/dieharder/dieharder.hash",
    "content": "# Locally computed:\nsha256 6cff0ff8394c553549ac7433359ccfc955fb26794260314620dfa5e4cd4b727f  dieharder-3.31.1.tgz\nsha256 c475bcd1afa6fc15a65174e31c599c0d23706a34e4b9f2fcb03a4dad5438d53f  COPYING\n"
  },
  {
    "path": "package/dieharder/dieharder.mk",
    "content": "################################################################################\n#\n# dieharder\n#\n################################################################################\n\nDIEHARDER_VERSION = 3.31.1\nDIEHARDER_SITE = http://www.phy.duke.edu/~rgb/General/dieharder\nDIEHARDER_SOURCE = dieharder-$(DIEHARDER_VERSION).tgz\nDIEHARDER_STRIP_COMPONENTS = 2\nDIEHARDER_LICENSE = GPL-2.0 with beverage clause\nDIEHARDER_LICENSE_FILES = COPYING\nDIEHARDER_DEPENDENCIES = gsl\n\n# The original configure does not use variables provided in the\n# environment so _CONF_ENV does not work. (_CONF_OPTS does).\n#\n# Finally, we patch configure.ac and some Makefile.am so we need to\n# autoreconf anyway\nDIEHARDER_AUTORECONF = YES\n\n# The m4/*.m4 files are symlinks to /usr/share, which clearly doesn't\n# work, and doing an autoreconf does not replace them.\ndefine DIEHARDER_M4_CLEAN\n\trm -f $(@D)/m4/*.m4\nendef\nDIEHARDER_POST_PATCH_HOOKS += DIEHARDER_M4_CLEAN\n\n# fix endianness detection\nifeq ($(BR2_ENDIAN),\"BIG\")\nDIEHARDER_CONF_ENV = ac_cv_c_endian=big\nelse\nDIEHARDER_CONF_ENV = ac_cv_c_endian=little\nendif\n\n# parallel build fail, disable it\nDIEHARDER_MAKE = $(MAKE1)\n\n# Too many fixes needed to build with -fno-common which is default since gcc 10\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_10),y)\nDIEHARDER_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -fcommon\"\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/diffutils/0001-m4-stack-direction.m4-fix-build-on-microblazeel.patch",
    "content": "From 7fd9de7f12718db0ace575c15c3a0e061ef6c542 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 11 Nov 2021 09:46:41 +0100\nSubject: [PATCH] m4/stack-direction.m4: fix build on microblazeel\n\nFix the following build failure on microblazeel with diffutils raised\nsince version 3.8 and\nhttps://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=e54aa6196947ed22ff66bcd714e4fc7bd0c5c3b4\n\nsigsegv.c: In function 'sigsegv_handler':\nsigsegv.c:979:28: error: 'struct vma_struct' has no member named 'is_near_this'\n  979 |                       : vma.is_near_this (addr, &vma))\n      |                            ^\n\nFixes:\n - http://autobuild.buildroot.org/results/5ecd55b7c72f9630a7acc72341ccb60e94ddb574\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to bug-gnulib@gnu.org]\n---\n m4/stack-direction.m4 | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/m4/stack-direction.m4 b/m4/stack-direction.m4\nindex c90d69733..70286c8f5 100644\n--- a/m4/stack-direction.m4\n+++ b/m4/stack-direction.m4\n@@ -37,7 +37,7 @@ AC_DEFUN([SV_STACK_DIRECTION],\n       m68* | \\\n       m88k | \\\n       mcore | \\\n-      microblaze | \\\n+      microblaze* | \\\n       mips* | \\\n       mmix | \\\n       mn10200 | \\\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/diffutils/0002-sigsegv-fix-build-on-or1k.patch",
    "content": "From 496c1740e5475be85b65fdb2b143771f09ed27cb Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 11 Nov 2021 10:06:31 +0100\nSubject: sigsegv: fix build on or1k\n\nFix the following build failure on or1k with diffutils 3.8\nhttps://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=e54aa6196947ed22ff66bcd714e4fc7bd0c5c3b4\nsigsegv.c:979:28: error: 'struct vma_struct' has no member named 'is_near_this'\nhttp://autobuild.buildroot.org/results/5427e52489d29ed4f18b4a70b3c36f0f7bb0ddd9\n\n[Retrieved from:\nhttps://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=496c1740e5475be85b65fdb2b143771f09ed27cb]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n m4/stack-direction.m4 | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/m4/stack-direction.m4 b/m4/stack-direction.m4\nindex 70286c8f5..29e398d77 100644\n--- a/m4/stack-direction.m4\n+++ b/m4/stack-direction.m4\n@@ -45,6 +45,7 @@ AC_DEFUN([SV_STACK_DIRECTION],\n       nios2 | \\\n       nds32* | \\\n       ns32k | \\\n+      or1k | \\\n       pdp11 | \\\n       pj* | \\\n       powerpc* | rs6000 | \\\n-- \ncgit v1.2.1\n\n"
  },
  {
    "path": "package/diffutils/0003-sys_random-port-better-to-uClibc-1-0-35.patch",
    "content": "From 135414a7f543e4d40ad0a7cbd51885e159a6e0f4 Mon Sep 17 00:00:00 2001\nFrom: Paul Eggert <eggert@cs.ucla.edu>\nDate: Tue, 30 Nov 2021 17:50:01 -0800\nSubject: sys_random: port better to uClibc < 1.0.35\n\nProblem reported by Fabrice Fontaine in:\nhttps://lists.gnu.org/r/bug-gnulib/2021-11/msg00043.html\n* lib/sys_random.in.h [HAVE_SYS_RANDOM_H && !__GLIBC__ && __UCLIBC__]:\nInclude <stddef.h>, in case this file is included before\n__UCLIBC__ is defined.\n\n[Retrieved (and backported to remove ChangeLog update) from:\nhttps://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=135414a7f543e4d40ad0a7cbd51885e159a6e0f4]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n ChangeLog           | 9 +++++++++\n lib/sys_random.in.h | 6 ++++--\n 2 files changed, 13 insertions(+), 2 deletions(-)\n\ndiff --git a/lib/sys_random.in.h b/lib/sys_random.in.h\nindex 1abd6c544..8b4b934a1 100644\n--- a/lib/sys_random.in.h\n+++ b/lib/sys_random.in.h\n@@ -23,8 +23,10 @@\n \n #if @HAVE_SYS_RANDOM_H@\n \n-/* On uClibc, <sys/random.h> assumes prior inclusion of <stddef.h>.  */\n-# if defined __UCLIBC__\n+/* On uClibc < 1.0.35, <sys/random.h> assumes prior inclusion of <stddef.h>.\n+   Do not use __UCLIBC__ here, as it might not be defined yet.\n+   But avoid namespace pollution on glibc systems.  */\n+# ifndef __GLIBC__\n #  include <stddef.h>\n # endif\n /* On Mac OS X 10.5, <sys/random.h> assumes prior inclusion of <sys/types.h>.\n-- \ncgit v1.2.1\n\n"
  },
  {
    "path": "package/diffutils/Config.in",
    "content": "config BR2_PACKAGE_DIFFUTILS\n\tbool \"diffutils\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  GNU diff. Compare files per line.\n\n\t  http://www.gnu.org/software/diffutils/diffutils.html\n\ncomment \"diffutils needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/diffutils/diffutils.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  a6bdd7d1b31266d11c4f4de6c1b748d4607ab0231af5188fc2533d0ae2438fec  diffutils-3.8.tar.xz\n# Locally calculated\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/diffutils/diffutils.mk",
    "content": "################################################################################\n#\n# diffutils\n#\n################################################################################\n\nDIFFUTILS_VERSION = 3.8\nDIFFUTILS_SOURCE = diffutils-$(DIFFUTILS_VERSION).tar.xz\nDIFFUTILS_SITE = $(BR2_GNU_MIRROR)/diffutils\nDIFFUTILS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\nDIFFUTILS_LICENSE = GPL-3.0+\nDIFFUTILS_LICENSE_FILES = COPYING\n# We're patching m4/stack-direction.m4\nDIFFUTILS_AUTORECONF = YES\n\n# Since glibc >= 2.26, don't try to use getopt_long replacement bundled\n# with diffutils. It will conflict with the one from glibc.\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)\nDIFFUTILS_CONF_ENV += gl_cv_func_getopt_gnu=yes\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/dillo/0001-usr-local-include.patch",
    "content": "Do not add (possibly poisoned) /usr/local/include and /usr/local/lib\nto gcc and ld search paths in configure.\n\nWith BR2_COMPILER_PARANOID_UNSAFE_PATH enabled, poisoned paths result\nin hard errors, failing affected configure tests.\n\nSigned-off-by: Alex Suykov <alex.suykov@gmail.com>\n\n--- a/configure.ac\n+++ b/configure.ac\n@@ -57,16 +57,6 @@\n AC_TYPE_INT32_T\n AC_TYPE_UINT32_T\n \n-dnl --------------------------------------\n-dnl Check whether to add /usr/local or not\n-dnl (this is somewhat a religious problem)\n-dnl --------------------------------------\n-dnl\n-if test \"`$CPP -v < /dev/null 2>&1 | grep '/usr/local/include' 2>&1`\" = \"\"; then\n-  CPPFLAGS=\"$CPPFLAGS -I/usr/local/include\"\n-  LDFLAGS=\"$LDFLAGS -L/usr/local/lib\"\n-fi\n-\n dnl ------------------------------------\n dnl Check for socket libs (AIX, Solaris)\n dnl ------------------------------------\n"
  },
  {
    "path": "package/dillo/0002-Fix-openssl-detection.patch",
    "content": "From 96dde9dedf806256cdc6cbf5cacbd5c8d74e6288 Mon Sep 17 00:00:00 2001\nFrom: Jonathan Kimmitt <jrrk2@cam.ac.uk>\nDate: Thu, 9 Jan 2020 22:01:42 +0100\nSubject: [PATCH] Fix openssl detection\n\nSSL_library_init is now a define, use OPENSSL_init_ssl instead.\n\nSigned-off-by: Jonathan Kimmitt <jrrk2@cam.ac.uk>\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 66b5e9f..206fd53 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -276,7 +276,7 @@ if test \"x$enable_ssl\" = \"xyes\"; then\n \n   if test \"x$ssl_ok\" = \"xyes\"; then\n     old_libs=\"$LIBS\"\n-    AC_CHECK_LIB(ssl, SSL_library_init, ssl_ok=yes, ssl_ok=no, -lcrypto)\n+    AC_CHECK_LIB(ssl, OPENSSL_init_ssl, ssl_ok=yes, ssl_ok=no, -lcrypto)\n     LIBS=\"$old_libs\"\n   fi\n \n-- \n2.24.1\n\n"
  },
  {
    "path": "package/dillo/0003-Support-OpenSSL-1.1.0.patch",
    "content": "From ff44d8b2d5211a502afdb3e612dae0e8133b5124 Mon Sep 17 00:00:00 2001\nFrom: Johannes Hofmann <Johannes.Hofmann@gmx.de>\nDate: Thu, 9 Jan 2020 22:07:15 +0100\nSubject: [PATCH] Support OpenSSL 1.1.0\n\ntaken-from: pkgsrc (Ryo ONODERA)\nsubmitted-by: Jun Ebihara <jun@soum.co.jp>\n\nUpstream: https://hg.dillo.org/dillo/rev/b171b8610400\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n dpi/https.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/dpi/https.c b/dpi/https.c\nindex 766b3af..025cfc4 100644\n--- a/dpi/https.c\n+++ b/dpi/https.c\n@@ -476,7 +476,11 @@ static int handle_certificate_problem(SSL * ssl_connection)\n       case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:\n          /*Either self signed and untrusted*/\n          /*Extract CN from certificate name information*/\n+#if OPENSSL_VERSION_NUMBER < 0x10100000L\n          if ((cn = strstr(remote_cert->name, \"/CN=\")) == NULL) {\n+#else\n+         if ((cn = strstr(X509_get_subject_name(remote_cert), \"/CN=\")) == NULL) {\n+#endif\n             strcpy(buf, \"(no CN given)\");\n          } else {\n             char *cn_end;\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/dillo/0004-fix-build-with-gcc-10.patch",
    "content": "fix build with gcc 10\n\ngcc 10 is now defaulting to -fno-common resulting in the following build\nfailures:\n\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os -g2 -D_FORTIFY_SOURCE=1 -DENABLE_IPV6 -DD_DNS_THREADED -D_REENTRANT -D_THREAD_SAFE -Wall -W -Wno-unused-parameter -Waggregate-return   -o dpid dpi.o dpi_socket_dir.o dpid.o dpid_common.o main.o misc_new.o ../dpip/libDpip.a ../dlib/libDlib.a \n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: dpi_socket_dir.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: dpid_common.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:64: multiple definition of `sock_set'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:64: first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:61: multiple definition of `services_list'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:61: first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:58: multiple definition of `dpi_attr_list'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:58: first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:55: multiple definition of `numsocks'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:55: first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:52: multiple definition of `numdpis'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:52: first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:31: multiple definition of `srs_fd'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:31: first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:28: multiple definition of `srs_name'; dpid.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid.h:28: first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: main.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: misc_new.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: multiple definition of `dpi_errno'; dpi.o:/nvme/rc-buildroot-test/scripts/instance-0/output-1/build/dillo-3.0.5/dpid/dpid_common.h:44: first defined here\n\nSo add missing extern for srs_fd, numdpis, numsocks, dpi_attr_list,\nservices_list and sock_set\n\nAlso remove srs_name which is never used and give a name to dpi_errno\nenum\n\nFixes:\n - http://autobuild.buildroot.org/results/9c777af97fe50143c6a68f0170fc86c87d8ead3f\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to jcid@dillo.org]\n\ndiff -r f60d55c02567 dpid/dpid.c\n--- a/dpid/dpid.c\tFri Oct 05 22:05:08 2018 +0200\n+++ b/dpid/dpid.c\tThu Aug 27 18:16:50 2020 +0200\n@@ -38,6 +38,12 @@\n \n #define QUEUE 5\n \n+int srs_fd;\n+int numdpis;\n+int numsocks;\n+struct dp *dpi_attr_list;\n+Dlist *services_list;\n+fd_set sock_set;\n volatile sig_atomic_t caught_sigchld = 0;\n char *SharedKey = NULL;\n \ndiff -r f60d55c02567 dpid/dpid.h\n--- a/dpid/dpid.h\tFri Oct 05 22:05:08 2018 +0200\n+++ b/dpid/dpid.h\tThu Aug 27 18:16:50 2020 +0200\n@@ -25,10 +25,9 @@\n \n /*! \\TODO: Should read this from dillorc */\n #define SRS_NAME \"dpid.srs\"\n-char *srs_name;\n \n /*! dpid's service request socket file descriptor */\n-int srs_fd;\n+extern int srs_fd;\n \n /*! plugin state information\n  */\n@@ -49,19 +48,19 @@\n };\n \n /*! Number of available plugins */\n-int numdpis;\n+extern int numdpis;\n \n /*! Number of sockets being watched */\n-int numsocks;\n+extern int numsocks;\n \n /*! State information for each plugin. */\n-struct dp *dpi_attr_list;\n+extern struct dp *dpi_attr_list;\n \n /*! service served for each plugin  */\n-Dlist *services_list;\n+extern Dlist *services_list;\n \n /*! Set of sockets watched for connections */\n-fd_set sock_set;\n+extern fd_set sock_set;\n \n /*! Set to 1 by the SIGCHLD handler dpi_sigchld */\n extern volatile sig_atomic_t caught_sigchld;\ndiff -r f60d55c02567 dpid/dpid_common.h\n--- a/dpid/dpid_common.h\tFri Oct 05 22:05:08 2018 +0200\n+++ b/dpid/dpid_common.h\tThu Aug 27 18:16:50 2020 +0200\n@@ -37,10 +37,10 @@\n \n \n /*! Error codes for dpid */\n-enum {\n+enum dpi_errno {\n    no_errors,\n    dpid_srs_addrinuse /* dpid service request socket address already in use */\n-} dpi_errno;\n+};\n \n /*! Intended for identifying dillo plugins\n  * and related files\ndiff -r f60d55c02567 dpid/main.c\n--- a/dpid/main.c\tFri Oct 05 22:05:08 2018 +0200\n+++ b/dpid/main.c\tThu Aug 27 18:16:50 2020 +0200\n@@ -231,7 +231,7 @@\n    /* this sleep used to unmask a race condition */\n    // sleep(2);\n \n-   dpi_errno = no_errors;\n+   enum dpi_errno error_code = no_errors;\n \n    /* Get list of available dpis */\n    numdpis = register_all(&dpi_attr_list);\n@@ -254,7 +254,7 @@\n \n    /* Initialise sockets */\n    if ((numsocks = init_ids_srs_socket()) == -1) {\n-      switch (dpi_errno) {\n+      switch (error_code) {\n       case dpid_srs_addrinuse:\n          MSG_ERR(\"dpid refuses to start, possibly because:\\n\");\n          MSG_ERR(\"\\t1) An instance of dpid is already running.\\n\");\n"
  },
  {
    "path": "package/dillo/Config.in",
    "content": "config BR2_PACKAGE_DILLO\n\tbool \"dillo\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU # fltk fork()\n\tselect BR2_PACKAGE_FLTK\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Dillo is a multi-platform graphical web browser known\n\t  for its speed and small footprint.\n\n\t  Enable openssl package to gain https support.\n\n\t  http://www.dillo.org\n\ncomment \"dillo needs a toolchain w/ C++\"\n\tdepends on BR2_PACKAGE_XORG7 && BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/dillo/dillo.hash",
    "content": "# Locally calculated\nsha256  db1be16c1c5842ebe07b419aa7c6ef11a45603a75df2877f99635f4f8345148b  dillo-3.0.5.tar.bz2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/dillo/dillo.mk",
    "content": "################################################################################\n#\n# dillo\n#\n################################################################################\n\nDILLO_VERSION = 3.0.5\nDILLO_SOURCE = dillo-$(DILLO_VERSION).tar.bz2\nDILLO_SITE = http://www.dillo.org/download\nDILLO_LICENSE = GPL-3.0+\nDILLO_LICENSE_FILES = COPYING\n# configure.ac gets patched, so autoreconf is necessary\nDILLO_AUTORECONF = YES\nDILLO_DEPENDENCIES = fltk zlib \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv)\nDILLO_CONF_ENV = ac_cv_path_FLTK_CONFIG=$(STAGING_DIR)/usr/bin/fltk-config\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nDILLO_CONF_OPTS += --enable-ssl\nDILLO_DEPENDENCIES += openssl\nelse\nDILLO_CONF_OPTS += --disable-ssl\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nDILLO_CONF_OPTS += --enable-png\nDILLO_DEPENDENCIES += libpng\nDILLO_CONF_ENV += PNG_CONFIG=$(STAGING_DIR)/usr/bin/libpng-config\nelse\nDILLO_CONF_OPTS += --disable-png\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nDILLO_CONF_OPTS += --enable-jpeg\nDILLO_DEPENDENCIES += jpeg\nelse\nDILLO_CONF_OPTS += --disable-jpeg\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nDILLO_CONF_OPTS += --enable-threaded-dns\nelse\nDILLO_CONF_OPTS += --disable-threaded-dns\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ding-libs/Config.in",
    "content": "config BR2_PACKAGE_DING_LIBS\n\tbool \"ding-libs\"\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  The ding-libs packages contain a set of libraries used by\n\t  the System Security Services Daemon (SSSD) and other\n\t  projects and provide functions to manipulate filesystem\n\t  pathnames (libpath_utils), a hash table to manage storage\n\t  and access time properties (libdhash), a data type to\n\t  collect data in a hierarchical structure (libcollection), a\n\t  dynamically growing, reference-counted array (libref_array),\n\t  and a library to process configuration files in\n\t  initialization format (INI) into a library collection data\n\t  structure (libini_config).\n\n\t  https://pagure.io/SSSD/ding-libs\n"
  },
  {
    "path": "package/ding-libs/ding-libs.hash",
    "content": "# Locally computed\nsha256 ad3c573641701f67d4b6bd8a5a71f0b65d45fd39fe961495ef5f5d3c57fc0963 ding-libs-ding_libs-0_6_1.tar.gz\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING\nsha256 6c57f43c939054fd4b831f271a14c97a488c38f98cdda5e887c5d396e3b3bc58 COPYING.LESSER\n"
  },
  {
    "path": "package/ding-libs/ding-libs.mk",
    "content": "################################################################################\n#\n# ding-libs\n#\n################################################################################\n\nDING_LIBS_VERSION = 0.6.1\nDING_LIBS_SOURCE = ding-libs-ding_libs-$(subst .,_,$(DING_LIBS_VERSION)).tar.gz\nDING_LIBS_SITE = \\\n\thttps://pagure.io/SSSD/ding-libs/archive/ding_libs-$(subst .,_,$(DING_LIBS_VERSION))\nDING_LIBS_DEPENDENCIES = host-pkgconf \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv)\nDING_LIBS_INSTALL_STAGING = YES\nDING_LIBS_LICENSE = LGPL-3.0+ (library),GPL-3.0+ (test programs)\nDING_LIBS_LICENSE_FILES = COPYING COPYING.LESSER\n\n# autoconf/automake generated files not present in tarball\nDING_LIBS_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/directfb/0001-fix-missing-davinci-voodoo-header.patch",
    "content": "The archive of directfb-1.6.3 is still missing some header files against\nthe tagged git tree of directfb. The following files are missing.\n\ngfxdrivers/davinci/davinci_c64x.h\ngfxdrivers/davinci/davincifb.h\ngfxdrivers/davinci/davinci_gfxdriver.h\ntests/voodoo/voodoo_test.h\n\nThe headers of course are needed to be able to build every module of\ndirectfb. The headers are taken from the git tree of directfb\nhttp://git.directfb.org/?p=core/DirectFB.git;a=commit;h=38b784549bc59bb07c58bb29667cb658695d39a7,\ntag DIRECTFB_1_6_3, SHA1ID 38b784549bc59bb07c58bb29667cb658695d39a7.\n\nSigned-off-by: Carsten Schoenert <c.schoenert@gmail.com>\n\ndiff -puNr -Naur directfb-1.6.3-orig/gfxdrivers/davinci/davinci_c64x.h directfb-1.6.3/gfxdrivers/davinci/davinci_c64x.h\n--- directfb-1.6.3-orig/gfxdrivers/davinci/davinci_c64x.h\t1970-01-01 01:00:00.000000000 +0100\n+++ directfb-1.6.3/gfxdrivers/davinci/davinci_c64x.h\t2013-04-07 21:33:25.928530187 +0200\n@@ -0,0 +1,935 @@\n+/*\n+   TI Davinci driver - C64X+ DSP Library\n+\n+   (c) Copyright 2008  directfb.org\n+   (c) Copyright 2007  Telio AG\n+\n+   Written by Denis Oliver Kropp <dok@directfb.org> and\n+              Olaf Dreesen <olaf@directfb.org>.\n+\n+   All rights reserved.\n+\n+   This library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU General Public License\n+   version 2 as published by the Free Software Foundation.\n+\n+   This library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   General Public License for more details.\n+\n+   You should have received a copy of the GNU General Public\n+   License along with this library; if not, write to the\n+   Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+   Boston, MA 02111-1307, USA.\n+*/\n+\n+#ifndef __DAVINCI_C64X_H__\n+#define __DAVINCI_C64X_H__\n+\n+#include <unistd.h>\n+\n+#include <directfb.h>\n+\n+#include <direct/messages.h>\n+#include <direct/trace.h>\n+\n+#include <linux/c64x.h>\n+\n+#define mb() __asm__ __volatile__ (\"\" : : : \"memory\")\n+\n+/**********************************************************************************************************************/\n+\n+typedef struct {\n+     int                 magic;\n+\n+     int                 fd;\n+     c64xTaskControl    *ctl;\n+     void               *mem;\n+\n+     c64xTask           *QueueL;\n+} DavinciC64x;\n+\n+typedef struct {\n+     int                 magic;\n+     unsigned int        max_tasks;\n+     unsigned int        num_tasks;\n+     c64xTask           *tasks;\n+} DavinciC64xTasks;\n+\n+typedef enum {\n+     C64X_TEF_NONE       = 0x0000,\n+     C64X_TEF_RESET      = 0x0001\n+} DavinciC64xEmitFlags;\n+\n+/**********************************************************************************************************************/\n+\n+DFBResult davinci_c64x_open    ( DavinciC64x *c64x );\n+\n+DFBResult davinci_c64x_close   ( DavinciC64x *c64x );\n+\n+DFBResult davinci_c64x_wait_low( DavinciC64x *c64x );\n+\n+/**********************************************************************************************************************/\n+\n+DFBResult davinci_c64x_tasks_init   ( DavinciC64xTasks *tasks,\n+                                      unsigned int      size );\n+\n+DFBResult davinci_c64x_tasks_destroy( DavinciC64xTasks *tasks );\n+\n+/**********************************************************************************************************************/\n+\n+DFBResult davinci_c64x_emit_tasks( DavinciC64x          *c64x,\n+                                   DavinciC64xTasks     *tasks,\n+                                   DavinciC64xEmitFlags  flags );\n+\n+/**********************************************************************************************************************/\n+\n+static const char *state_names[] = { \"DONE\", \"ERROR\", \"TODO\", \"RUNNING\" };\n+\n+static inline c64xTask *\n+c64x_get_task( DavinciC64x *c64x )\n+{\n+     c64xTaskControl *ctl   = c64x->ctl;\n+     uint32_t         idx   = ctl->QL_arm;\n+     uint32_t         next  = (idx + 1) & C64X_QUEUE_MASK;\n+     c64xTask        *task  = &c64x->QueueL[idx];\n+     int              loops = 0;\n+     uint32_t         idle  = 0;\n+\n+     /* Wait for the entry (and next) to be processed by the DSP (rare case). */\n+     while (task->c64x_flags & C64X_FLAG_TODO || ctl->QL_dsp == next) {\n+          if (loops > 666 || (idle && ctl->idlecounter - idle > 666)) {\n+               c64xTask *dsp_task = &c64x->QueueL[ctl->QL_dsp];\n+\n+               D_PERROR( \"Davinci/C64X+: Blocked! [DSP %d / %d (%s), ARM %d / %d (%s)]\\n\",\n+                         ctl->QL_dsp,\n+                         (dsp_task->c64x_function >> 2) & 0x3fff,\n+                         state_names[dsp_task->c64x_function & 3],\n+                         ctl->QL_arm,\n+                         (task->c64x_function >> 2) & 0x3fff,\n+                         state_names[task->c64x_function & 3] );\n+\n+               break;\n+          }\n+\n+          idle = ctl->idlecounter;\n+\n+          /* Queue is full, waiting 10-20ms should not be too bad. */\n+          if (loops++ > 10)\n+               usleep( 5000 );\n+     }\n+\n+     return task;\n+}\n+\n+static inline void\n+c64x_submit_task( DavinciC64x *c64x, c64xTask *task )\n+{\n+     c64xTaskControl *ctl  = c64x->ctl;\n+     uint32_t         idx  = ctl->QL_arm;\n+     uint32_t         next = (idx + 1) & C64X_QUEUE_MASK;\n+\n+     mb();\n+\n+     ctl->QL_arm = next;\n+\n+     mb();\n+}\n+\n+/**********************************************************************************************************************/\n+\n+static inline void\n+davinci_c64x_wb_inv_range( DavinciC64x   *c64x,\n+                           unsigned long  start,\n+                           u32            length,\n+                           u32            func )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = start;\n+     task->c64x_arg[1] = length;\n+     task->c64x_arg[2] = func;\n+\n+     task->c64x_function = C64X_WB_INV_RANGE | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_write_back_all( DavinciC64x *c64x )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_function = C64X_WRITE_BACK_ALL | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+/**********************************************************************************************************************/\n+\n+static inline void\n+davinci_c64x_load_block__L( DavinciC64xTasks *tasks,\n+                            unsigned long     words,\n+                            u32               num,\n+                            u32               flags )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = words;\n+     task->c64x_arg[1] = num;\n+     task->c64x_arg[2] = flags;\n+\n+     task->c64x_function = C64X_LOAD_BLOCK | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_load_block( DavinciC64x   *c64x,\n+                         unsigned long  words,\n+                         u32            num,\n+                         u32            flags )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = words;\n+     task->c64x_arg[1] = num;\n+     task->c64x_arg[2] = flags;\n+\n+     task->c64x_function = C64X_LOAD_BLOCK | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_fetch_uyvy( DavinciC64x   *c64x,\n+                         unsigned long  dest,\n+                         unsigned long  source,\n+                         u32            pitch,\n+                         u32            height,\n+                         u32            flags )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = source;\n+     task->c64x_arg[2] = pitch;\n+     task->c64x_arg[3] = height;\n+     task->c64x_arg[4] = flags;\n+\n+     task->c64x_function = C64X_FETCH_UYVY | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_mc( DavinciC64x   *c64x,\n+                 unsigned long  dest,\n+                 u32            dpitch,\n+                 unsigned long  source0,\n+                 unsigned long  source1,\n+                 u32            spitch,\n+                 u32            height,\n+                 int            func )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = dpitch;\n+     task->c64x_arg[2] = source0;\n+     task->c64x_arg[3] = source1;\n+     task->c64x_arg[4] = spitch;\n+     task->c64x_arg[5] = height;\n+\n+     task->c64x_function = func | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_put_idct_uyvy_16x16__L( DavinciC64xTasks *tasks,\n+                                     unsigned long     dest,\n+                                     u32               pitch,\n+                                     u32               flags )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = pitch;\n+     task->c64x_arg[2] = flags;\n+\n+     task->c64x_function = C64X_PUT_IDCT_UYVY_16x16 | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_put_idct_uyvy_16x16( DavinciC64x   *c64x,\n+                                  unsigned long  dest,\n+                                  u32            pitch,\n+                                  u32            flags )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = pitch;\n+     task->c64x_arg[2] = flags;\n+\n+     task->c64x_function = C64X_PUT_IDCT_UYVY_16x16 | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_put_mc_uyvy_16x16__L( DavinciC64xTasks *tasks,\n+                                   unsigned long     dest,\n+                                   u32               pitch,\n+                                   u32               flags )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = pitch;\n+     task->c64x_arg[2] = flags;\n+\n+     task->c64x_function = C64X_PUT_MC_UYVY_16x16 | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_put_mc_uyvy_16x16( DavinciC64x   *c64x,\n+                                unsigned long  dest,\n+                                u32            pitch,\n+                                u32            flags )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = pitch;\n+     task->c64x_arg[2] = flags;\n+\n+     task->c64x_function = C64X_PUT_MC_UYVY_16x16 | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_put_sum_uyvy_16x16__L( DavinciC64xTasks *tasks,\n+                                    unsigned long     dest,\n+                                    u32               pitch,\n+                                    u32               flags )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = pitch;\n+     task->c64x_arg[2] = flags;\n+\n+     task->c64x_function = C64X_PUT_SUM_UYVY_16x16 | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_put_sum_uyvy_16x16( DavinciC64x   *c64x,\n+                                 unsigned long  dest,\n+                                 u32            pitch,\n+                                 u32            flags )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = pitch;\n+     task->c64x_arg[2] = flags;\n+\n+     task->c64x_function = C64X_PUT_SUM_UYVY_16x16 | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_dva_begin_frame__L( DavinciC64xTasks *tasks,\n+                                 u32               pitch,\n+                                 unsigned long     current,\n+                                 unsigned long     past,\n+                                 unsigned long     future,\n+                                 u32               flags )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = pitch;\n+     task->c64x_arg[1] = current;\n+     task->c64x_arg[2] = past;\n+     task->c64x_arg[3] = future;\n+     task->c64x_arg[4] = flags;\n+\n+     task->c64x_function = C64X_DVA_BEGIN_FRAME | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_dva_begin_frame( DavinciC64x   *c64x,\n+                              u32            pitch,\n+                              unsigned long  current,\n+                              unsigned long  past,\n+                              unsigned long  future,\n+                              u32            flags )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = pitch;\n+     task->c64x_arg[1] = current;\n+     task->c64x_arg[2] = past;\n+     task->c64x_arg[3] = future;\n+     task->c64x_arg[4] = flags;\n+\n+     task->c64x_function = C64X_DVA_BEGIN_FRAME | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_dva_motion_block__L( DavinciC64xTasks *tasks,\n+                                  unsigned long     macroblock )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = macroblock;\n+\n+     task->c64x_function = C64X_DVA_MOTION_BLOCK | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_dva_motion_block( DavinciC64x   *c64x,\n+                               unsigned long  macroblock )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = macroblock;\n+\n+     task->c64x_function = C64X_DVA_MOTION_BLOCK | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+/**********************************************************************************************************************/\n+\n+static inline void\n+davinci_c64x_dva_idct( DavinciC64x   *c64x,\n+\t\t\t\t   unsigned long  dest,\n+\t\t\t\t   u32            pitch,\n+\t\t\t\t   unsigned long  source )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = pitch;\n+     task->c64x_arg[2] = source;\n+\n+     task->c64x_function = C64X_DVA_IDCT | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+/**********************************************************************************************************************/\n+\n+static inline void\n+davinci_c64x_put_uyvy_16x16( DavinciC64x   *c64x,\n+                             unsigned long  dest,\n+                             u32            pitch,\n+                             unsigned long  source,\n+                             u32            flags )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = pitch;\n+     task->c64x_arg[2] = source;\n+     task->c64x_arg[3] = flags;\n+\n+     task->c64x_function = C64X_PUT_UYVY_16x16 | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_dither_argb__L( DavinciC64xTasks *tasks,\n+                             unsigned long     dst_rgb,\n+                             unsigned long     dst_alpha,\n+                             u32               dst_pitch,\n+                             unsigned long     source,\n+                             u32               src_pitch,\n+                             u32               width,\n+                             u32               height )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = dst_rgb;\n+     task->c64x_arg[1] = dst_alpha;\n+     task->c64x_arg[2] = dst_pitch;\n+     task->c64x_arg[3] = source;\n+     task->c64x_arg[4] = src_pitch;\n+     task->c64x_arg[5] = width;\n+     task->c64x_arg[6] = height;\n+\n+     task->c64x_function = C64X_DITHER_ARGB | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_dither_argb( DavinciC64x   *c64x,\n+                          unsigned long  dst_rgb,\n+                          unsigned long  dst_alpha,\n+                          u32            dst_pitch,\n+                          unsigned long  source,\n+                          u32            src_pitch,\n+                          u32            width,\n+                          u32            height )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dst_rgb;\n+     task->c64x_arg[1] = dst_alpha;\n+     task->c64x_arg[2] = dst_pitch;\n+     task->c64x_arg[3] = source;\n+     task->c64x_arg[4] = src_pitch;\n+     task->c64x_arg[5] = width;\n+     task->c64x_arg[6] = height;\n+\n+     task->c64x_function = C64X_DITHER_ARGB | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_fill_16__L( DavinciC64xTasks *tasks,\n+                         unsigned long     dest,\n+                         u32               pitch,\n+                         u32               width,\n+                         u32               height,\n+                         u32               value )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = pitch;\n+     task->c64x_arg[2] = width;\n+     task->c64x_arg[3] = height;\n+     task->c64x_arg[4] = value;\n+\n+     task->c64x_function = C64X_FILL_16 | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_fill_16( DavinciC64x   *c64x,\n+                      unsigned long  dest,\n+                      u32            pitch,\n+                      u32            width,\n+                      u32            height,\n+                      u32            value )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = pitch;\n+     task->c64x_arg[2] = width;\n+     task->c64x_arg[3] = height;\n+     task->c64x_arg[4] = value;\n+\n+     task->c64x_function = C64X_FILL_16 | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_fill_32__L( DavinciC64xTasks *tasks,\n+                         unsigned long     dest,\n+                         u32               pitch,\n+                         u32               width,\n+                         u32               height,\n+                         u32               value )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = pitch;\n+     task->c64x_arg[2] = width;\n+     task->c64x_arg[3] = height;\n+     task->c64x_arg[4] = value;\n+\n+     task->c64x_function = C64X_FILL_32 | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_fill_32( DavinciC64x   *c64x,\n+                      unsigned long  dest,\n+                      u32            pitch,\n+                      u32            width,\n+                      u32            height,\n+                      u32            value )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = pitch;\n+     task->c64x_arg[2] = width;\n+     task->c64x_arg[3] = height;\n+     task->c64x_arg[4] = value;\n+\n+     task->c64x_function = C64X_FILL_32 | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_blit_16__L( DavinciC64xTasks *tasks,\n+                         unsigned long     dest,\n+                         u32               dpitch,\n+                         unsigned long     src,\n+                         u32               spitch,\n+                         u32               width,\n+                         u32               height )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = dpitch;\n+     task->c64x_arg[2] = src;\n+     task->c64x_arg[3] = spitch;\n+     task->c64x_arg[4] = width;\n+     task->c64x_arg[5] = height;\n+\n+     task->c64x_function = C64X_COPY_16 | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_blit_16( DavinciC64x   *c64x,\n+                      unsigned long  dest,\n+                      u32            dpitch,\n+                      unsigned long  src,\n+                      u32            spitch,\n+                      u32            width,\n+                      u32            height )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = dpitch;\n+     task->c64x_arg[2] = src;\n+     task->c64x_arg[3] = spitch;\n+     task->c64x_arg[4] = width;\n+     task->c64x_arg[5] = height;\n+\n+     task->c64x_function = C64X_COPY_16 | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_blit_32__L( DavinciC64xTasks *tasks,\n+                         unsigned long     dest,\n+                         u32               dpitch,\n+                         unsigned long     src,\n+                         u32               spitch,\n+                         u32               width,\n+                         u32               height )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = dpitch;\n+     task->c64x_arg[2] = src;\n+     task->c64x_arg[3] = spitch;\n+     task->c64x_arg[4] = width;\n+     task->c64x_arg[5] = height;\n+\n+     task->c64x_function = C64X_COPY_32 | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_blit_32( DavinciC64x   *c64x,\n+                      unsigned long  dest,\n+                      u32            dpitch,\n+                      unsigned long  src,\n+                      u32            spitch,\n+                      u32            width,\n+                      u32            height )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = dpitch;\n+     task->c64x_arg[2] = src;\n+     task->c64x_arg[3] = spitch;\n+     task->c64x_arg[4] = width;\n+     task->c64x_arg[5] = height;\n+\n+     task->c64x_function = C64X_COPY_32 | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_stretch_32__L( DavinciC64xTasks *tasks,\n+                            unsigned long     dest,\n+                            u32               dpitch,\n+                            unsigned long     src,\n+                            u32               spitch,\n+                            u32               dw,\n+                            u32               dh,\n+                            u32               sw,\n+                            u32               sh,\n+                            const DFBRegion  *clip )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = src;\n+     task->c64x_arg[2] = dpitch   | (spitch   << 16);\n+     task->c64x_arg[3] = dh       | (dw       << 16);\n+     task->c64x_arg[4] = sh       | (sw       << 16);\n+     task->c64x_arg[5] = clip->x2 | (clip->y2 << 16);\n+     task->c64x_arg[6] = clip->x1 | (clip->y1 << 16);\n+\n+     if (sw > dw && sh > dh)\n+          task->c64x_function = C64X_STRETCH_32_down | C64X_FLAG_TODO;\n+     else\n+          task->c64x_function = C64X_STRETCH_32_up | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_stretch_32( DavinciC64x     *c64x,\n+                         unsigned long    dest,\n+                         u32              dpitch,\n+                         unsigned long    src,\n+                         u32              spitch,\n+                         u32              dw,\n+                         u32              dh,\n+                         u32              sw,\n+                         u32              sh,\n+                         const DFBRegion *clip )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = src;\n+     task->c64x_arg[2] = dpitch   | (spitch   << 16);\n+     task->c64x_arg[3] = dh       | (dw       << 16);\n+     task->c64x_arg[4] = sh       | (sw       << 16);\n+     task->c64x_arg[5] = clip->x2 | (clip->y2 << 16);\n+     task->c64x_arg[6] = clip->x1 | (clip->y1 << 16);\n+\n+     if (sw > dw && sh > dh)\n+          task->c64x_function = C64X_STRETCH_32_down | C64X_FLAG_TODO;\n+     else\n+          task->c64x_function = C64X_STRETCH_32_up | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_blit_blend_32__L( DavinciC64xTasks *tasks,\n+                               u32               sub_func,\n+                               unsigned long     dest,\n+                               u32               dpitch,\n+                               unsigned long     src,\n+                               u32               spitch,\n+                               u32               width,\n+                               u32               height,\n+                               u32               argb,\n+                               u8                alpha )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = dpitch;\n+     task->c64x_arg[2] = src;\n+     task->c64x_arg[3] = spitch;\n+     task->c64x_arg[4] = width | (height << 16);\n+     task->c64x_arg[5] = argb;\n+     task->c64x_arg[6] = alpha;\n+\n+     task->c64x_function = (sub_func << 16) | C64X_BLEND_32 | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_blit_blend_32( DavinciC64x   *c64x,\n+                            u32            sub_func,\n+                            unsigned long  dest,\n+                            u32            dpitch,\n+                            unsigned long  src,\n+                            u32            spitch,\n+                            u32            width,\n+                            u32            height,\n+                            u32            argb,\n+                            u8             alpha )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = dpitch;\n+     task->c64x_arg[2] = src;\n+     task->c64x_arg[3] = spitch;\n+     task->c64x_arg[4] = width | (height << 16);\n+     task->c64x_arg[5] = argb;\n+     task->c64x_arg[6] = alpha;\n+\n+     task->c64x_function = (sub_func << 16) | C64X_BLEND_32 | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_blit_keyed_16__L( DavinciC64xTasks *tasks,\n+                               unsigned long     dest,\n+                               u32               dpitch,\n+                               unsigned long     src,\n+                               u32               spitch,\n+                               u32               width,\n+                               u32               height,\n+                               u32               key,\n+                               u32               mask )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff);\n+     task->c64x_arg[2] = src;\n+     task->c64x_arg[3] = width;\n+     task->c64x_arg[4] = height;\n+     task->c64x_arg[5] = key;\n+     task->c64x_arg[6] = mask;\n+\n+     task->c64x_function = C64X_COPY_KEYED_16 | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_blit_keyed_16( DavinciC64x   *c64x,\n+                            unsigned long  dest,\n+                            u32            dpitch,\n+                            unsigned long  src,\n+                            u32            spitch,\n+                            u32            width,\n+                            u32            height,\n+                            u32            key,\n+                            u32            mask )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff);\n+     task->c64x_arg[2] = src;\n+     task->c64x_arg[3] = width;\n+     task->c64x_arg[4] = height;\n+     task->c64x_arg[5] = key;\n+     task->c64x_arg[6] = mask;\n+\n+     task->c64x_function = C64X_COPY_KEYED_16 | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+static inline void\n+davinci_c64x_blit_keyed_32__L( DavinciC64xTasks *tasks,\n+                               unsigned long     dest,\n+                               u32               dpitch,\n+                               unsigned long     src,\n+                               u32               spitch,\n+                               u32               width,\n+                               u32               height,\n+                               u32               key,\n+                               u32               mask )\n+{\n+     c64xTask *task = &tasks->tasks[tasks->num_tasks];\n+\n+     D_ASSERT( tasks->num_tasks < tasks->max_tasks );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff);\n+     task->c64x_arg[2] = src;\n+     task->c64x_arg[3] = width;\n+     task->c64x_arg[4] = height;\n+     task->c64x_arg[5] = key;\n+     task->c64x_arg[6] = mask;\n+\n+     task->c64x_function = C64X_COPY_KEYED_32 | C64X_FLAG_TODO;\n+\n+     tasks->num_tasks++;\n+}\n+\n+static inline void\n+davinci_c64x_blit_keyed_32( DavinciC64x   *c64x,\n+                            unsigned long  dest,\n+                            u32            dpitch,\n+                            unsigned long  src,\n+                            u32            spitch,\n+                            u32            width,\n+                            u32            height,\n+                            u32            key,\n+                            u32            mask )\n+{\n+     c64xTask *task = c64x_get_task( c64x );\n+\n+     task->c64x_arg[0] = dest;\n+     task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff);\n+     task->c64x_arg[2] = src;\n+     task->c64x_arg[3] = width;\n+     task->c64x_arg[4] = height;\n+     task->c64x_arg[5] = key;\n+     task->c64x_arg[6] = mask;\n+\n+     task->c64x_function = C64X_COPY_KEYED_32 | C64X_FLAG_TODO;\n+\n+     c64x_submit_task( c64x, task );\n+}\n+\n+#endif\n+\ndiff -puNr -Naur directfb-1.6.3-orig/gfxdrivers/davinci/davincifb.h directfb-1.6.3/gfxdrivers/davinci/davincifb.h\n--- directfb-1.6.3-orig/gfxdrivers/davinci/davincifb.h\t1970-01-01 01:00:00.000000000 +0100\n+++ directfb-1.6.3/gfxdrivers/davinci/davincifb.h\t2013-04-07 21:33:21.488622184 +0200\n@@ -0,0 +1,581 @@\n+/* \n+ * Copyright (C) 2006 Texas Instruments Inc\n+ *\n+ * This program is free software; you can redistribute it and/or modify\n+ * it under the terms of the GNU General Public License as published by\n+ * the Free Software Foundation; either version 2 of the License, or\n+ * (at your option)any later version.\n+ *\n+ * This program is distributed in the hope that it will be useful,\n+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n+ * GNU General Public License for more details.\n+ *\n+ * You should have received a copy of the GNU General Public License\n+ * along with this program; if not, write to the Free Software\n+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n+ *\n+ * File: davincifb.h\t\n+ */\n+\n+#ifndef DAVINVI_VPBE_H\n+#define DAVINVI_VPBE_H\n+\n+/* include Linux files */\n+#include <linux/fb.h>\n+\n+/* define the custom FBIO_WAITFORVSYNC ioctl */\n+#define FBIO_WAITFORVSYNC\t_IOW('F', 0x20, u_int32_t)\n+#define FBIO_SETATTRIBUTE       _IOW('F', 0x21, struct fb_fillrect)\n+\n+/* Backported IOCTLS. */\n+#define FBIO_SETPOSX                            _IOW('F', 0x22, u_int32_t)\n+#define FBIO_SETPOSY                            _IOW('F', 0x23, u_int32_t)\n+#define FBIO_SETZOOM            \t\t_IOW('F', 0x24, struct zoom_params)\n+#define FBIO_GETSTD                             _IOR('F', 0x25, u_int32_t)\n+#define FBIO_RESIZER\t\t                _IOW('F', 0x26, struct vpfe_resizer_params)\n+#define FBIO_SYNC\t\t                _IOW('F', 0x27, u_int32_t)\n+\n+typedef struct zoom_params {\n+\tu_int32_t window_id;\n+\tu_int32_t zoom_h;\n+\tu_int32_t zoom_v;\n+} zoom_params_t;\n+\n+typedef struct vpfe_resizer_params\n+{\n+\tu_int32_t rsz_cnt;\t//busy-lock\n+\tu_int32_t out_size;\t//busy-lock\n+\tu_int32_t in_start;\t//busy-lock\n+\tu_int32_t in_size;\t//busy-lock\n+\tu_int32_t sdr_inadd;\t//shadowed\n+\tu_int32_t sdr_inoff;\t//shadowed\n+\tu_int32_t sdr_outadd;\t//shadowed\n+\tu_int32_t sdr_outoff;\t//shadowed\n+\tu_int32_t hfilt[16];\t//busy-lock\n+\tu_int32_t vfilt[16];\t//busy-lock\n+\tu_int32_t yenh;\t\t//busy-lock\n+} vpfe_resizer_params_t;\n+\n+typedef struct fb_set_start {\n+\tint\t\toffset;\t\t/* offset from smem_start */\n+\tunsigned long\tphysical;\t/* absolute physical address when offset < 0 */\n+\n+\tu_int64_t\tsync;\t\t/* input:  target sync counter for change or 0 for no sync at all,\n+\t\t\t\t\t   output: sync counter of actual change or 0 if still pending */\n+} fb_set_start_t;\n+\n+\n+#ifdef _IOC_TYPECHECK\n+#undef _IOC_TYPECHECK\n+#define _IOC_TYPECHECK(x)     (sizeof(x))\n+#endif\n+\n+#define\tRAM_CLUT_SIZE\t256*3\n+#define FBIO_ENABLE_DISABLE_WIN\t\t\\\n+\t_IOW('F', 0x30, unsigned char)\n+#define FBIO_SET_BITMAP_BLEND_FACTOR\t\\\n+\t_IOW('F', 0x31, vpbe_bitmap_blend_params_t)\n+#define FBIO_SET_BITMAP_WIN_RAM_CLUT    \\\n+\t_IOW('F', 0x32, unsigned char)*RAM_CLUT_SIZE)\n+#define FBIO_ENABLE_DISABLE_ATTRIBUTE_WIN \\\n+\t_IOW('F', 0x33, unsigned int)\n+#define FBIO_GET_BLINK_INTERVAL\t\t\\\n+\t_IOR('F', 0x34, vpbe_blink_option_t)\n+#define FBIO_SET_BLINK_INTERVAL         \\\n+\t_IOW('F', 0x35, vpbe_blink_option_t)\n+#define FBIO_GET_VIDEO_CONFIG_PARAMS    \\\n+\t_IOR('F', 0x36, vpbe_video_config_params_t)\n+#define FBIO_SET_VIDEO_CONFIG_PARAMS    \\\n+\t_IOW('F', 0x37, vpbe_video_config_params_t)\n+#define FBIO_GET_BITMAP_CONFIG_PARAMS   \\\n+\t_IOR('F', 0x38, vpbe_bitmap_config_params_t)\n+#define FBIO_SET_BITMAP_CONFIG_PARAMS   \\\n+\t_IOW('F', 0x39, vpbe_bitmap_config_params_t)\n+#define FBIO_SET_DCLK                   \\\n+\t_IOW('F', 0x40, vpbe_dclk_t)\n+#define FBIO_SET_INTERFACE\t\t\\\n+\t_IOW('F', 0x41, unsigned char)\n+#define FBIO_GET_INTERFACE\t\t\\\n+\t_IOR('F', 0x42, unsigned char)\n+#define FBIO_QUERY_TIMING\t\t\\\n+\t_IOWR('F', 0x43, struct vpbe_mode_info)\n+#define FBIO_SET_TIMING\t\t\t\\\n+\t_IOW('F', 0x44, struct vpbe_fb_videomode)\n+#define FBIO_GET_TIMING                 \\\n+\t_IOR('F', 0x45, struct vpbe_fb_videomode)\n+#define FBIO_SET_VENC_CLK_SOURCE\t\\\n+\t_IOW('F', 0x46, unsigned char)\n+#define FBIO_SET_BACKG_COLOR            \\\n+\t_IOW('F', 0x47, vpbe_backg_color_t)\n+#define FBIO_ENABLE_DISPLAY\t\t\\\n+\t_IOW('F', 0x48, unsigned char)\n+#define FBIO_SETPOS            \t\t\\\n+\t_IOW('F', 0x49, u_int32_t)\n+#define FBIO_SET_CURSOR         \t\\\n+\t_IOW('F', 0x50, struct fb_cursor)\n+#define FBIO_SET_START     \t\t\\\n+\t_IOW('F', 0x66, struct fb_set_start)\n+\n+/* \n+ * Defines and Constants\n+ */\n+#ifdef __KERNEL__\n+#define DAVINCIFB_DEVICE \"davincifb\"\n+#define DAVINCIFB_DRIVER \"davincifb\"\n+\n+#define MULTIPLE_BUFFERING      1\n+\n+#ifdef MULTIPLE_BUFFERING\n+#define DOUBLE_BUF      2\n+#define TRIPLE_BUF      3\n+#else\n+#define DOUBLE_BUF      1\n+#define TRIPLE_BUF      1\n+#endif\n+\n+/* usage:\tif (is_win(info->fix.id, OSD0)) ... */\n+#define is_win(name, x) ((strcmp(name, x ## _FBNAME) == 0) ? 1 : 0)\n+\n+/*\n+ * display controller register I/O routines\n+ */\n+u32 dispc_reg_in(u32 offset);\n+u32 dispc_reg_out(u32 offset, u32 val);\n+u32 dispc_reg_merge(u32 offset, u32 val, u32 mask);\n+\n+#endif\t\t\t\t/*__KERNEL__*/\n+\n+/*  Error return codes  */\n+#define VPBE_INVALID_PARA_VALUE         700\n+#define VPBE_WRONG_WINDOW_ID            701\n+#define VPBE_CURRENTLY_IN_REQUIRED_MODE 702\n+#define VPBE_INSUFFICIENT_CLUT_VALUES   703\n+#define VPBE_CLUT_WRITE_TIMEOUT         704\n+#define VPBE_VID0_BUF_ADR_NULL          705\n+#define VPBE_WINDOW_NOT_DISABLED        706\n+#define VPBE_WINDOW_NOT_ENABLED         707\n+\n+#ifndef __KERNEL__\n+/*  Window ID definations */\n+#define OSD0      0\n+#define VID0      1\n+#define OSD1      2\n+#define VID1      3\n+#endif\n+\n+/* There are 4 framebuffers, each represented by an fb_info and\n+ * a dm_win_info structure */\n+#define OSD0_FBNAME \"dm_osd0_fb\"\n+#define OSD1_FBNAME \"dm_osd1_fb\"\n+#define VID0_FBNAME \"dm_vid0_fb\"\n+#define VID1_FBNAME \"dm_vid1_fb\"\n+\n+/*  FIXME: Digital LCD RGB matrix coefficients */\n+#define DLCD_DGY_VAL    0\n+#define DLCD_DRV_VAL    0\n+#define DLCD_DGU_VAL    0\n+#define DLCD_DBU_VAL\t\t0\n+\n+/* Defines for bitmap format */\n+#define VPBE_BITMAP_BIT_1\t1\n+#define VPBE_BITMAP_BIT_2\t2\n+#define VPBE_BITMAP_BIT_4\t4\n+#define VPBE_BITMAP_BIT_8\t8\n+#define VPBE_BITMAP_RGB565\t16\n+#define VPBE_VIDEO_YUV422 \t16\n+#define VPBE_VIDEO_RGB888 \t24\n+\n+/* Defines foe cursor parameter validation*/\n+#define MAX_CURSOR_WIDTH\t0x3FF\n+#define MAX_CURSOR_HEIGHT\t0x1FF\n+#define MAX_CURSOR_LINEWIDTH    7\n+\n+#define BASEX\t\t0x80\n+#define BASEY\t\t0x12\n+#define BASEX_DLCD\t\t0x59\n+#define BASEY_DLCD\t\t0x22\n+\n+/*\n+ * Enumerations \n+ */\n+/*  Enum for blending factor  */\n+typedef enum vpbe_blend_factor {\n+\tOSD_CONTRIBUTION_ZERO = 0,\n+\tOSD_CONTRIBUTION_1_BY_8 = 1,\n+\tOSD_CONTRIBUTION_2_BY_8 = 2,\n+\tOSD_CONTRIBUTION_3_BY_8 = 3,\n+\tOSD_CONTRIBUTION_4_BY_8 = 4,\n+\tOSD_CONTRIBUTION_5_BY_8 = 5,\n+\tOSD_CONTRIBUTION_6_BY_8 = 6,\n+\tOSD_CONTRIBUTION_ONE = 7\n+} vpbe_blend_factor_t;\n+\n+/*  Enum for Boolean variables  */\n+typedef enum {\n+\tSET_0 = 0,\n+\tSET_1 = 1\n+} CB_CR_ORDER, ATTRIBUTE, ROM_RAM_CLUT;\n+\n+/*  Defines for Display Interface */\n+#define  PRGB\t\t0\n+#define  COMPOSITE      1\n+#define  SVIDEO    \t2\n+#define  COMPONENT \t3\n+#define  RGB       \t4\n+#define  YCC16     \t5\n+#define  YCC8      \t6\n+#define  SRGB      \t7\n+#define  EPSON     \t8\n+#define  CASIO1G   \t9\n+#define  UDISP     \t10\n+#define  STN       \t11\n+#define VPBE_MAX_INTERFACES\t12\n+\n+/*  Defines for Display Mode */\n+#define  LCD    0\n+#define  NTSC\t1\n+#define  PAL    2\n+#define  P525   3\n+#define  P625   4\n+\n+#define DEFAULT_MODE 0\n+#define  P480   0\n+#define  P400   1\n+#define  P350   2\n+#define NON_EXISTING_MODE 255\n+/*  Enable/Disable enum */\n+typedef enum {\n+\tVPBE_DISABLE = 0,\n+\tVPBE_ENABLE = 1\n+} ATTENUATION, TRANSPARENCY, EXPANSION, BLINKING;\n+\n+typedef enum clk_source {\n+\tCLK_SOURCE_CLK27 = 0,\n+\tCLK_SOURCE_CLK54 = 1,\n+\tCLK_SOURCE_VPBECLK = 2\n+} CLK_SOURCE;\n+\n+/*\n+ * Structures and Union Definitions\n+ */\n+\n+/*  Structure for transparency and the blending factor for the bitmap window  */\n+typedef struct vpbe_bitmap_blend_params {\n+\tunsigned int colorkey;\t/* color key to be blend */\n+\tunsigned int enable_colorkeying;\t/* enable color keying */\n+\tunsigned int bf;\t/* valid range from 0 to 7 only. */\n+} vpbe_bitmap_blend_params_t;\n+\n+/*  Structure for window expansion  */\n+typedef struct vpbe_win_expansion {\n+\tEXPANSION horizontal;\n+\tEXPANSION vertical;\t/* 1: Enable 0:disable */\n+} vpbe_win_expansion_t;\n+\n+/*  Structure for OSD window blinking options */\n+typedef struct vpbe_blink_option {\n+\tBLINKING blinking;\t/* 1: Enable blinking 0: Disable */\n+\tunsigned int interval;\t/* Valid only if blinking is 1 */\n+} vpbe_blink_option_t;\n+\n+/*  Structure for DCLK parameters */\n+typedef struct vpbe_dclk {\n+\tunsigned char dclk_pattern_width;\n+\tunsigned int dclk_pattern0;\n+\tunsigned int dclk_pattern1;\n+\tunsigned int dclk_pattern2;\n+\tunsigned int dclk_pattern3;\n+} vpbe_dclk_t;\n+\n+/*  Structure for display format  */\n+typedef struct vpbe_display_format {\n+\tunsigned char interface;\t/* Output interface type */\n+\tunsigned char mode;\t/* output mode */\n+} vpbe_display_format_t;\n+\n+/*  Structure for background color  */\n+typedef struct vpbe_backg_color {\n+\tunsigned char clut_select;\t/* 2: RAM CLUT 1:ROM1 CLUT 0:ROM0 CLUT */\n+\tunsigned char color_offset;\t/* index of color */\n+} vpbe_backg_color_t;\n+\n+/*  Structure for Video window configurable parameters  */\n+typedef struct vpbe_video_config_params {\n+\tCB_CR_ORDER cb_cr_order;\t/*Cb/Cr order in input data for a pixel. */\n+\t/*    0: cb cr  1:  cr cb */\n+\tvpbe_win_expansion_t exp_info;\t/* HZ/VT Expansion enable disable */\n+} vpbe_video_config_params_t;\n+\n+/*Union of structures giving the CLUT index for the 1, 2, 4 bit bitmap values.*/\n+typedef union vpbe_clut_idx {\n+\tstruct _for_4bit_bimap {\n+\t\tunsigned char bitmap_val_0;\n+\t\tunsigned char bitmap_val_1;\n+\t\tunsigned char bitmap_val_2;\n+\t\tunsigned char bitmap_val_3;\n+\t\tunsigned char bitmap_val_4;\n+\t\tunsigned char bitmap_val_5;\n+\t\tunsigned char bitmap_val_6;\n+\t\tunsigned char bitmap_val_7;\n+\t\tunsigned char bitmap_val_8;\n+\t\tunsigned char bitmap_val_9;\n+\t\tunsigned char bitmap_val_10;\n+\t\tunsigned char bitmap_val_11;\n+\t\tunsigned char bitmap_val_12;\n+\t\tunsigned char bitmap_val_13;\n+\t\tunsigned char bitmap_val_14;\n+\t\tunsigned char bitmap_val_15;\n+\t} for_4bit_bimap;\n+\tstruct _for_2bit_bimap {\n+\t\tunsigned char bitmap_val_0;\n+\t\tunsigned char dummy0[4];\n+\t\tunsigned char bitmap_val_1;\n+\t\tunsigned char dummy1[4];\n+\t\tunsigned char bitmap_val_2;\n+\t\tunsigned char dummy2[4];\n+\t\tunsigned char bitmap_val_3;\n+\t} for_2bit_bimap;\n+\tstruct _for_1bit_bimap {\n+\t\tunsigned char bitmap_val_0;\n+\t\tunsigned char dummy0[14];\n+\t\tunsigned char bitmap_val_1;\n+\t} for_1bit_bimap;\n+} vpbe_clut_idx_t;\n+\n+/*  Structure for bitmap window configurable parameters */\n+typedef struct vpbe_bitmap_config_params {\n+\t/* Only for bitmap width = 1,2,4 bits */\n+\tvpbe_clut_idx_t clut_idx;\n+\t/* Attenuation value for YUV o/p for bitmap window */\n+\tunsigned char attenuation_enable;\n+\t/* 0: ROM DM270, 1:ROM DM320, 2:RAM CLUT */\n+\tunsigned char clut_select;\n+} vpbe_bitmap_config_params_t;\n+\n+/*  Unioun for video/OSD configuration parameters  */\n+typedef union vpbe_conf_params {\n+\n+\tstruct vpbe_video_params {\n+\t\tCB_CR_ORDER cb_cr_order;\n+\t\t/* HZ/VT Expansion enable disable */\n+\t\tvpbe_win_expansion_t exp_info;\n+\t} video_params;\n+\n+\tstruct vpbe_bitmap_params {\n+\t\t/* Attenuation value for YUV o/p */\n+\t\tATTENUATION attenuation_enable;\n+\t\t/* 0: ROM DM270, 1: ROM DM320, 2:RAM CLUT */\n+\t\tunsigned char clut_select;\n+\t\t/* Only for bitmap width = 1,2,4 bits */\n+\t\tvpbe_clut_idx_t clut_idx;\n+\t\t/* 0: OSD window is bitmap window */\n+\t\t/* 1: OSD window is attribute window */\n+\t\tATTRIBUTE enable_attribute;\n+\t\t/* To hold bps value. \n+\t\t   Used to switch back from attribute to bitmap. */\n+\t\tunsigned int stored_bits_per_pixel;\n+\t\t/* Blending information */\n+\t\tvpbe_bitmap_blend_params_t blend_info;\n+\t\t/* OSD Blinking information */\n+\t\tvpbe_blink_option_t blink_info;\n+\t} bitmap_params;\n+\n+} vpbe_conf_params_t;\n+\n+typedef struct vpbe_video_params vpbe_video_params_t;\n+typedef struct vpbe_bitmap_params vpbe_bitmap_params_t;\n+\n+/* Structure to hold window position */\n+typedef struct vpbe_window_position {\n+\tunsigned int xpos;\t/* X position of the window */\n+\tunsigned int ypos;\t/* Y position of the window */\n+} vpbe_window_position_t;\n+\n+#ifdef __KERNEL__\n+/*  Structure for each window */\n+typedef struct vpbe_dm_win_info {\n+\tstruct fb_info info;\n+\tvpbe_window_position_t win_pos;\t/* X,Y position of window */\n+\t/* Size of window is already there in var_info structure. */\n+\n+\tdma_addr_t fb_base_phys;\t/*framebuffer area */\n+\tunsigned int fb_base;\t/*window memory pointer */\n+\tunsigned int fb_size;\t/*memory size */\n+\tunsigned int pseudo_palette[17];\n+\tint alloc_fb_mem;\n+\t/*flag to identify if framebuffer area is fixed or not */\n+\tunsigned long sdram_address;\n+\tstruct vpbe_dm_info *dm;\n+\tunsigned char window_enable;\t/*Additions for all windows */\n+\tzoom_params_t zoom;\t/*Zooming parameters */\n+\tunsigned char field_frame_select;\t/*To select Field or frame */\n+\tunsigned char numbufs;\t/*Number of buffers valid 2 or 3 */\n+\tvpbe_conf_params_t conf_params;\n+\t/*window configuration parameter union pointer */\n+} vpbe_dm_win_info_t;\n+#endif\t\t\t\t/*__KERNEL__*/\n+\n+/*\n+ *  Videmode structure for display interface and mode settings\n+ */\n+typedef struct vpbe_fb_videomode {\n+\tunsigned char name[10];\t/* Mode name ( NTSC , PAL) */\n+\tunsigned int vmode;\t/* FB_MODE_INTERLACED or FB_MODE_NON_INTERLACED */\n+\tunsigned int xres;\t/* X Resolution of the display */\n+\tunsigned int yres;\t/* Y Resolution of the display */\n+\tunsigned int fps;\t/* frames per second */\n+\t/* Timing Parameters applicable for std = 0 only */\n+\tunsigned int left_margin;\n+\tunsigned int right_margin;\n+\tunsigned int upper_margin;\n+\tunsigned int lower_margin;\n+\tunsigned int hsync_len;\n+\tunsigned int vsync_len;\n+\tunsigned int sync;\t/* 0: hsync -ve/vsync -ve */\n+\t/*1: hsync -ve/vsync +ve */\n+\t/*2: hsync +ve/vsync -ve */\n+\t/*3: hsync +ve/vsync +ve */\n+\tunsigned int basepx;\t/* Display x,y start position */\n+\tunsigned int basepy;\n+/*  1= Mode s available in modelist 0=Mode is not available in modelist */\n+\tunsigned int std;\n+} vpbe_fb_videomode_t;\n+\n+/* Structure to interface videomode to application*/\n+typedef struct vpbe_mode_info {\n+\tvpbe_fb_videomode_t vid_mode;\n+\tunsigned char interface;\n+\tunsigned char mode_idx;\n+} vpbe_mode_info_t;\n+\n+#ifdef __KERNEL__\n+/* \n+ * Structure for the driver holding information of windows, \n+ *  memory base addresses etc.\n+ */\n+typedef struct vpbe_dm_info {\n+\tvpbe_dm_win_info_t *osd0;\n+\tvpbe_dm_win_info_t *osd1;\n+\tvpbe_dm_win_info_t *vid0;\n+\tvpbe_dm_win_info_t *vid1;\n+\n+/* to map the registers */\n+\tdma_addr_t mmio_base_phys;\n+\tunsigned int mmio_base;\n+\tunsigned int mmio_size;\n+\n+\twait_queue_head_t vsync_wait;\n+\tunsigned int vsync_cnt;\n+\tint timeout;\n+\n+\t/* this is the function that configures the output device (NTSC/PAL/LCD)\n+\t * for the required output format (composite/s-video/component/rgb)\n+\t */\n+\tvoid (*output_device_config) (void);\n+\n+\tstruct device *dev;\n+\n+\tvpbe_backg_color_t backg;\t/* background color */\n+\tvpbe_dclk_t dclk;\t/*DCLK parameters */\n+\tvpbe_display_format_t display;\t/*Display interface and mode */\n+\tvpbe_fb_videomode_t videomode;\t/*Cuurent videomode */\n+\tchar ram_clut[256][3];\t/*RAM CLUT array */\n+\tstruct fb_cursor cursor;\t/* cursor config params from fb.h */\n+/*Flag that indicates whether any of the display is enabled or not*/\n+\tint display_enable;\n+} vpbe_dm_info_t;\n+\n+/*\n+ * Functions Definitions for 'davincifb' module\n+ */\n+int vpbe_mem_alloc_window_buf(vpbe_dm_win_info_t *);\n+int vpbe_mem_release_window_buf(vpbe_dm_win_info_t *);\n+void init_display_function(vpbe_display_format_t *);\n+int vpbe_mem_alloc_struct(vpbe_dm_win_info_t **);\n+void set_vid0_default_conf(void);\n+void set_vid1_default_conf(void);\n+void set_osd0_default_conf(void);\n+void set_osd1_default_conf(void);\n+void set_cursor_default_conf(void);\n+void set_dm_default_conf(void);\n+void set_win_enable(char *, unsigned int);\n+int within_vid0_limits(u32, u32, u32, u32);\n+void vpbe_set_display_default(void);\n+#ifdef __KERNEL__\n+void set_win_position(char *, u32, u32, u32, u32);\n+void change_win_param(int);\n+void set_interlaced(char *, unsigned int);\n+#endif /* __KERNEL__ */\n+\n+/*\n+ *\tFunction definations for 'osd' module\n+ */\n+\n+int vpbe_enable_window(vpbe_dm_win_info_t *);\n+int vpbe_disable_window(vpbe_dm_win_info_t *);\n+int vpbe_vid_osd_select_field_frame(u8 *, u8);\n+int vpbe_bitmap_set_blend_factor(u8 *, vpbe_bitmap_blend_params_t *);\n+int vpbe_bitmap_set_ram_clut(void);\n+int vpbe_enable_disable_attribute_window(u32);\n+int vpbe_get_blinking(u8 *, vpbe_blink_option_t *);\n+int vpbe_set_blinking(u8 *, vpbe_blink_option_t *);\n+int vpbe_set_vid_params(u8 *, vpbe_video_config_params_t *);\n+int vpbe_get_vid_params(u8 *, vpbe_video_config_params_t *);\n+int vpbe_bitmap_get_params(u8 *, vpbe_bitmap_config_params_t *);\n+int vpbe_bitmap_set_params(u8 *, vpbe_bitmap_config_params_t *);\n+int vpbe_set_cursor_params(struct fb_cursor *);\n+int vpbe_set_vid_expansion(vpbe_win_expansion_t *);\n+int vpbe_set_dclk(vpbe_dclk_t *);\n+int vpbe_set_display_format(vpbe_display_format_t *);\n+int vpbe_set_backg_color(vpbe_backg_color_t *);\n+int vpbe_set_interface(u8);\n+int vpbe_query_mode(vpbe_mode_info_t *);\n+int vpbe_set_mode(struct vpbe_fb_videomode *);\n+int vpbe_set_venc_clk_source(u8);\n+void set_vid0_default_conf(void);\n+void set_osd0_default_conf(void);\n+void set_vid1_default_conf(void);\n+void set_osd1_default_conf(void);\n+void set_cursor_default_conf(void);\n+void set_dm_default_conf(void);\n+/*\n+ * Function definations for 'venc' module\n+ */\n+\n+void davincifb_ntsc_composite_config(void);\n+void davincifb_ntsc_svideo_config(void);\n+void davincifb_ntsc_component_config(void);\n+void davincifb_pal_composite_config(void);\n+void davincifb_pal_svideo_config(void);\n+void davincifb_pal_component_config(void);\n+\n+void vpbe_davincifb_ntsc_rgb_config(void);\n+void vpbe_davincifb_pal_rgb_config(void);\n+void vpbe_davincifb_525p_component_config(void);\n+void vpbe_davincifb_625p_component_config(void);\n+\n+void vpbe_enable_venc(int);\n+void vpbe_enable_dacs(int);\n+/*\n+ * Function definations for 'dlcd' module\n+ */\n+void vpbe_davincifb_480p_prgb_config(void);\n+void vpbe_davincifb_400p_prgb_config(void);\n+void vpbe_davincifb_350p_prgb_config(void);\n+void vpbe_set_display_timing(struct vpbe_fb_videomode *);\n+\n+void vpbe_enable_lcd(int);\n+/*\n+ * Following functions are not implemented\n+ */\n+void vpbe_davincifb_default_ycc16_config(void);\n+void vpbe_davincifb_default_ycc8_config(void);\n+void vpbe_davincifb_default_srgb_config(void);\n+void vpbe_davincifb_default_epson_config(void);\n+void vpbe_davincifb_default_casio_config(void);\n+void vpbe_davincifb_default_UDISP_config(void);\n+void vpbe_davincifb_default_STN_config(void);\n+#endif\t\t\t\t/*__KERNEL__*/\n+\n+#endif\t\t\t\t/* End of #ifndef DAVINCI_VPBE_H */\ndiff -puNr -Naur directfb-1.6.3-orig/gfxdrivers/davinci/davinci_gfxdriver.h directfb-1.6.3/gfxdrivers/davinci/davinci_gfxdriver.h\n--- directfb-1.6.3-orig/gfxdrivers/davinci/davinci_gfxdriver.h\t1970-01-01 01:00:00.000000000 +0100\n+++ directfb-1.6.3/gfxdrivers/davinci/davinci_gfxdriver.h\t2013-04-07 21:33:19.560662133 +0200\n@@ -0,0 +1,169 @@\n+/*\n+   TI Davinci driver - Graphics Driver\n+\n+   (c) Copyright 2007  Telio AG\n+\n+   Written by Denis Oliver Kropp <dok@directfb.org>\n+\n+   Code is derived from VMWare driver.\n+\n+   (c) Copyright 2001-2009  The world wide DirectFB Open Source Community (directfb.org)\n+   (c) Copyright 2000-2004  Convergence (integrated media) GmbH\n+\n+   All rights reserved.\n+\n+   This library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2 of the License, or (at your option) any later version.\n+\n+   This library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with this library; if not, write to the\n+   Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+   Boston, MA 02111-1307, USA.\n+*/\n+\n+#ifndef __DAVINCI_GFXDRIVER_H__\n+#define __DAVINCI_GFXDRIVER_H__\n+\n+#include <sys/ioctl.h>\n+#include <davincifb.h>\n+\n+#include <core/surface_buffer.h>\n+\n+#include \"davincifb.h\"\n+\n+#include \"davinci_c64x.h\"\n+\n+\n+typedef struct {\n+     /* validation flags */\n+     int                       v_flags;\n+\n+     /* cached/computed values */\n+     void                     *dst_addr;\n+     unsigned long             dst_phys;\n+     unsigned int              dst_size;\n+     unsigned long             dst_pitch;\n+     DFBSurfacePixelFormat     dst_format;\n+     unsigned long             dst_bpp;\n+\n+     void                     *src_addr;\n+     unsigned long             src_phys;\n+     unsigned long             src_pitch;\n+     DFBSurfacePixelFormat     src_format;\n+     unsigned long             src_bpp;\n+\n+     unsigned long             source_mult;\n+\n+     unsigned long             fillcolor;\n+\n+     int                       blit_blend_sub_function;\n+     int                       draw_blend_sub_function;\n+\n+     DFBColor                  color;\n+     unsigned long             color_argb;\n+     unsigned long             colorkey;\n+\n+     DFBSurfaceBlittingFlags   blitting_flags;\n+\n+     DFBRegion                 clip;\n+\n+     /** Add shared data here... **/\n+     struct fb_fix_screeninfo  fix[4];\n+\n+     CoreSurfacePool          *osd_pool;\n+     CoreSurfacePool          *video_pool;\n+\n+     bool                      synced;\n+} DavinciDeviceData;\n+\n+\n+typedef struct {\n+     int                       num;\n+     int                       fd;\n+     void                     *mem;\n+     int                       size;\n+} DavinciFB;\n+\n+typedef struct {\n+     DavinciDeviceData        *ddev;\n+\n+     CoreDFB                  *core;\n+\n+     CoreScreen               *screen;\n+     CoreLayer                *osd;\n+     CoreLayer                *video;\n+\n+     DavinciFB                 fb[4];\n+\n+     DavinciC64x               c64x;\n+     bool                      c64x_present;\n+\n+     DavinciC64xTasks          tasks;\n+} DavinciDriverData;\n+\n+\n+static inline DFBResult\n+davincifb_pan_display( const DavinciFB             *fb,\n+                       struct fb_var_screeninfo    *var,\n+                       const CoreSurfaceBufferLock *lock,\n+                       DFBSurfaceFlipFlags          flags,\n+                       int                          x,\n+                       int                          y )\n+{\n+     int ret;\n+\n+     if (lock) {\n+#ifdef FBIO_SET_START\n+          CoreSurfaceBuffer   *buffer = lock->buffer;\n+          struct fb_set_start  set_start;\n+\n+          /* physical mode */\n+          set_start.offset   = -1;\n+          set_start.sync     = (flags & DSFLIP_ONSYNC) ? 1 : 0;\n+\n+          /* life's so easy */\n+          set_start.physical = lock->phys + DFB_BYTES_PER_LINE( buffer->format, x ) + y * lock->pitch;\n+\n+          ret = ioctl( fb->fd, FBIO_SET_START, &set_start );\n+          if (ret < 0)\n+               D_DEBUG( \"FBIO_SET_START (0x%08lx, sync %llu) failed!\\n\",\n+                         set_start.physical, set_start.sync );\n+\n+          if (ret == 0) {\n+               if (flags & DSFLIP_WAIT)\n+                    ioctl( fb->fd, FBIO_WAITFORVSYNC );\n+\n+               return DFB_OK;\n+          }\n+\n+          /* fallback */\n+#endif\n+          var->xoffset = x;                  /* poor version */\n+          var->yoffset = y + lock->offset / lock->pitch;\n+     }\n+     else {\n+          var->xoffset = x;\n+          var->yoffset = y;\n+     }\n+\n+     var->activate = /*(flags & DSFLIP_ONSYNC) ? FB_ACTIVATE_VBL :*/ FB_ACTIVATE_NOW;\n+\n+     ret = ioctl( fb->fd, FBIOPAN_DISPLAY, var );\n+     if (ret)\n+          D_PERROR( \"Davinci/FB: FBIOPAN_DISPLAY (fb%d - %d,%d) failed!\\n\",\n+                    fb->num, var->xoffset, var->yoffset );\n+\n+     if (flags & DSFLIP_WAIT)\n+          ioctl( fb->fd, FBIO_WAITFORVSYNC );\n+\n+     return DFB_OK;\n+}\n+\n+#endif\ndiff -puNr -Naur directfb-1.6.3-orig/tests/voodoo/voodoo_test.h directfb-1.6.3/tests/voodoo/voodoo_test.h\n--- directfb-1.6.3-orig/tests/voodoo/voodoo_test.h\t1970-01-01 01:00:00.000000000 +0100\n+++ directfb-1.6.3/tests/voodoo/voodoo_test.h\t2013-04-07 21:33:31.824408024 +0200\n@@ -0,0 +1,10 @@\n+#ifndef __VOODOO_TEST_H__\n+#define __VOODOO_TEST_H__\n+\n+typedef enum {\n+     VOODOO_TEST_INCREASE,\n+     VOODOO_TEST_QUERY\n+} VoodooTestCall;\n+\n+#endif\n+\n"
  },
  {
    "path": "package/directfb/0002-imlib2-config.patch",
    "content": "From 8352c434e515f19dd1ba36256bfcc3ec9480838d Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 5 Mar 2015 22:38:52 +0100\nSubject: [PATCH] imlib2 config\n\nCall the imlib2-conf variable that are set by ac_cv_path_IMLIB2_CONFIG\nwith the absolute path because the imlib2-config file is not covered\nby the PATH variable.\nThis is important for cross compiler that need to get the staging settings\ninstead of the host settings.\n\nSigned-off-by: Carsten Schoenert <c.schoenert@gmail.com>\n[ patch configure.in instead of configure to survive autoreconf ]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n configure.in | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/configure.in b/configure.in\nindex 38d7e78..fa5e87f 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -1094,8 +1094,8 @@ if test \"x$enable_imlib2\" = \"xyes\"; then\n     AC_MSG_WARN([*** Imlib2 library not found, building without Imlib2 support ***])\n     imlib2=\"no\"\n   else\n-    IMLIB2_CFLAGS=`imlib2-config --cflags`\n-    IMLIB2_LIBS=`imlib2-config --libs`\n+    IMLIB2_CFLAGS=`$IMLIB2_CONFIG --cflags`\n+    IMLIB2_LIBS=`$IMLIB2_CONFIG --libs`\n     imlib2=\"yes\"\n   fi\n fi\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/directfb/0003-setregion-lock.patch",
    "content": "This patch fixes builderrors while using '--with-gfxdrivers' and\n'--with-inputdrivers' with the current DirectFB version 1.6.3.\n\nPatch is taken from\nhttp://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/DirectFB/files/DirectFB-1.6.3-setregion.patch\n\nSigned-off-by: Carsten Schoenert <c.schoenert@gmail.com>\n\nIndex: b/gfxdrivers/cyber5k/cyber5k.c\n===================================================================\n--- a/gfxdrivers/cyber5k/cyber5k.c\n+++ b/gfxdrivers/cyber5k/cyber5k.c\n@@ -640,7 +640,8 @@\n               CoreLayerRegionConfigFlags  updated,\n               CoreSurface                *surface,\n               CorePalette                *palette,\n-              CoreSurfaceBufferLock      *lock )\n+              CoreSurfaceBufferLock      *left_lock,\n+              CoreSurfaceBufferLock      *right_lock )\n {\n      DFBResult ret;\n \n@@ -648,7 +649,7 @@\n      ret = oldPrimaryFuncs.SetRegion( layer, oldPrimaryDriverData,\n                                       layer_data, region_data,\n                                       config, updated, surface,\n-                                      palette, lock );\n+                                      palette, left_lock, right_lock );\n      if (ret)\n           return ret;\n \nIndex: b/gfxdrivers/radeon/radeon_crtc1.c\n===================================================================\n--- a/gfxdrivers/radeon/radeon_crtc1.c\n+++ b/gfxdrivers/radeon/radeon_crtc1.c\n@@ -147,14 +147,15 @@\n                 CoreLayerRegionConfigFlags  updated,\n                 CoreSurface                *surface,\n                 CorePalette                *palette,\n-                CoreSurfaceBufferLock      *lock )\n+                CoreSurfaceBufferLock      *left_lock,\n+                CoreSurfaceBufferLock      *right_lock )\n {\n      \n      if (updated & ~CLRCF_OPTIONS) {\n           return OldPrimaryLayerFuncs.SetRegion( layer,\n                                                  OldPrimaryLayerDriverData,\n                                                  layer_data, region_data,\n-                                                 config, updated, surface, palette, lock );\n+                                                 config, updated, surface, palette, left_lock, right_lock );\n      }\n \n      return DFB_OK;\nIndex: b/gfxdrivers/cle266/uc_primary.c\n===================================================================\n--- a/gfxdrivers/cle266/uc_primary.c\n+++ b/gfxdrivers/cle266/uc_primary.c\n@@ -142,7 +142,8 @@\n               CoreLayerRegionConfigFlags  updated,\n               CoreSurface                *surface,\n               CorePalette                *palette,\n-              CoreSurfaceBufferLock      *lock )\n+              CoreSurfaceBufferLock      *left_lock,\n+              CoreSurfaceBufferLock      *right_lock )\n {\n      DFBResult     ret;\n      UcDriverData *ucdrv = (UcDriverData*) driver_data;\n@@ -151,7 +152,7 @@\n      ret = ucOldPrimaryFuncs.SetRegion( layer, ucOldPrimaryDriverData,\n                                         layer_data, region_data,\n                                         config, updated, surface,\n-                                        palette, lock );\n+                                        palette, left_lock, right_lock );\n      if (ret)\n           return ret;\n \nIndex: b/gfxdrivers/unichrome/uc_primary.c\n===================================================================\n--- a/gfxdrivers/unichrome/uc_primary.c\n+++ b/gfxdrivers/unichrome/uc_primary.c\n@@ -139,7 +139,8 @@\n               CoreLayerRegionConfigFlags  updated,\n               CoreSurface                *surface,\n               CorePalette                *palette,\n-              CoreSurfaceBufferLock      *lock )\n+              CoreSurfaceBufferLock      *left_lock,\n+              CoreSurfaceBufferLock      *right_lock )\n {\n      DFBResult     ret;\n      UcDriverData *ucdrv = (UcDriverData*) driver_data;\n@@ -148,7 +149,7 @@\n      ret = ucOldPrimaryFuncs.SetRegion( layer, ucOldPrimaryDriverData,\n                                         layer_data, region_data,\n                                         config, updated, surface,\n-                                        palette, lock );\n+                                        palette, left_lock, right_lock );\n      if (ret)\n           return ret;\n \n"
  },
  {
    "path": "package/directfb/0004-use-gcc-link.patch",
    "content": "Add patch to use 'gcc' instead of 'ld' for linking\n\nThe patch has been sent upstream but it has not been merged yet\n\nSigned-off-by: Markos Chandras <markos.chandras@imgtec.com>\n\nFrom 176ce06b40897a357fe76a558af517197325f188 Mon Sep 17 00:00:00 2001\nFrom: Markos Chandras <markos.chandras@imgtec.com>\nDate: Wed, 28 Aug 2013 10:56:32 +0100\nSubject: [PATCH] rules/libobject.make: Use gcc for linking\n\nInvoking 'ld' directly may miss some necessary linker flags which\nare usually passed by gcc. Therefore, use gcc for linking.\n\nSigned-off-by: Markos Chandras <markos.chandras@imgtec.com>\n---\n rules/libobject.make | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/rules/libobject.make b/rules/libobject.make\nindex bc670da..2cba658 100644\n--- a/rules/libobject.make\n+++ b/rules/libobject.make\n@@ -3,7 +3,7 @@\n \tif test -d $<.tmp; then rmdir $<.tmp; fi\n \tmkdir $<.tmp\n \t(cd $<.tmp && $(AR) x ../../$<)\n-\t$(LD) -o $@ -r $<.tmp/*.o\n+\t$(CC) -nostdlib -o $@ -r $<.tmp/*.o\n \trm -f $<.tmp/*.o && rmdir $<.tmp\n \n .PHONY: $(LTLIBRARIES:%.la=.libs/%.a)\n-- \n1.8.3.2\n\n"
  },
  {
    "path": "package/directfb/0005-add-missing-idivine-header.patch",
    "content": "Add idivine.h, which is missing from DirectFB tarballs\n\nThe idivine.h file was taken from the DirectFB Git repository.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/lib/divine/idivine.h\n===================================================================\n--- /dev/null\n+++ b/lib/divine/idivine.h\n@@ -0,0 +1,54 @@\n+/*\n+   (c) Copyright 2012-2013  DirectFB integrated media GmbH\n+   (c) Copyright 2001-2013  The world wide DirectFB Open Source Community (directfb.org)\n+   (c) Copyright 2000-2004  Convergence (integrated media) GmbH\n+\n+   All rights reserved.\n+\n+   Written by Denis Oliver Kropp <dok@directfb.org>,\n+              Andreas Shimokawa <andi@directfb.org>,\n+              Marek Pikarski <mass@directfb.org>,\n+              Sven Neumann <neo@directfb.org>,\n+              Ville SyrjÃ¤lÃ¤ <syrjala@sci.fi> and\n+              Claudio Ciccani <klan@users.sf.net>.\n+\n+   This library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2 of the License, or (at your option) any later version.\n+\n+   This library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with this library; if not, write to the\n+   Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n+   Boston, MA 02111-1307, USA.\n+*/\n+\n+\n+\n+#ifndef __IDIVINE_H__\n+#define __IDIVINE_H__\n+\n+#include <divine.h>\n+\n+/*\n+ * private data struct of IDiVine\n+ */\n+typedef struct {\n+     int                         ref;      /* reference counter */\n+\n+     DiVine                     *divine;\n+} IDiVine_data;\n+\n+/*\n+ * IDiVine constructor/destructor\n+ */\n+DFBResult IDiVine_Construct( IDiVine *thiz );\n+\n+void      IDiVine_Destruct ( IDiVine *thiz );\n+\n+#endif\n"
  },
  {
    "path": "package/directfb/0006-fix-client-gfx_state-initialisation.patch",
    "content": "From 8e53c0b9cedb62b82e2b7680d793d433b647ae20 Mon Sep 17 00:00:00 2001\nFrom: Andre McCurdy <armccurdy@gmail.com>\nDate: Mon, 13 Jun 2016 13:32:44 -0700\nSubject: [PATCH] fix client->gfx_state initialisation\n\nShortly before the DirectFB 1.7.7 release, an optimisation was added\nto CoreGraphicsStateClient_Init() to avoid creating an extended\nGraphics State object if it will not later be required:\n\n  4d422fb Client: Create extended Graphics State object when needed for later usage\n\nUnfortunately the client->gfx_state variable used to track the\nextended Graphics State object is not initialised, which can lead to\ncrashes etc due to creation of the Graphics State object erroneously\nbeing skipped.\n\nUpstream-Status: Pending\n\nSigned-off-by: Andre McCurdy <armccurdy@gmail.com>\nSigned-off-by: Philippe Reynes <philippe.reynes@sagemcom.com>\n---\n src/core/CoreGraphicsStateClient.cpp | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/core/CoreGraphicsStateClient.cpp b/src/core/CoreGraphicsStateClient.cpp\nindex 5d46f0e..5007755 100644\n--- a/src/core/CoreGraphicsStateClient.cpp\n+++ b/src/core/CoreGraphicsStateClient.cpp\n@@ -364,6 +364,7 @@ CoreGraphicsStateClient_Init( CoreGraphicsStateClient *client,\n      client->renderer  = NULL;\n      client->requestor = NULL;\n      client->throttle  = NULL;\n+     client->gfx_state = NULL;\n \n      if (dfb_config->task_manager) {\n           if (dfb_config->call_nodirect) {\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/directfb/Config.in",
    "content": "config BR2_PACKAGE_DIRECTFB\n\tbool \"directfb\"\n\tdepends on !BR2_RISCV_32\n\tdepends on !BR2_STATIC_LIBS # static link issues\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # sigval_t issue\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  DirectFB (Direct Frame Buffer) is a set of graphics APIs\n\t  implemented on top of the Linux Frame Buffer (fbdev)\n\t  abstraction layer. It is an alternative to X11 with a smaller\n\t  memory footprint that still has an integrated windowing\n\t  system. As of 4 October 2015, DirectFB's website\n\t  http://www.directfb.org/ is down. See alternative site listed\n\t  below.\n\n\t  http://elinux.org/DirectFB\n\nif BR2_PACKAGE_DIRECTFB\n\nconfig BR2_PACKAGE_DIRECTFB_MULTI\n\tbool \"directfb multi application\"\n\tdepends on BR2_USE_MMU # madvise()\n\tdepends on BR2_LINUX_KERNEL\n\tselect BR2_PACKAGE_LINUX_FUSION\n\thelp\n\t  Enable use of multiple concurrent DirectFB applications\n\ncomment \"directfb multi application needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_DIRECTFB_DEBUG_SUPPORT\n\tbool \"directfb debugging support\"\n\tdefault y\n\thelp\n\t  Compile DirectFB with debugging support. It provides\n\t  functions to print debug information, for DirectFB as well as\n\t  external DirectFB drivers.\n\n\t  When disabled, DirectFB does not print any debug information.\n\t  The drivers will be installed to and loaded from\n\t  /usr/lib/directfb-<version>-pure instead of\n\t  /usr/lib/directfb-<version>.\n\nconfig BR2_PACKAGE_DIRECTFB_DEBUG\n\tbool \"directfb debugging\"\n\tdepends on BR2_PACKAGE_DIRECTFB_DEBUG_SUPPORT\n\thelp\n\t  Compile DirectFB with lots of debug output\n\nconfig BR2_PACKAGE_DIRECTFB_TRACE\n\tbool \"directfb call trace support\"\n\thelp\n\t  Enable call tracing for DirectFB applications\n\nconfig BR2_PACKAGE_DIRECTFB_DIVINE\n\tbool \"divine\"\n\thelp\n\t  Enable the DiVine feature (virtual input)\n\nconfig BR2_PACKAGE_DIRECTFB_SAWMAN\n\tbool \"sawman\"\n\thelp\n\t  Enable the SawMan feature (window manager)\n\nconfig BR2_PACKAGE_DIRECTFB_ATI128\n\tbool \"compile ati128 graphics driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\nconfig BR2_PACKAGE_DIRECTFB_MATROX\n\tbool \"compile matrox graphics driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\nconfig BR2_PACKAGE_DIRECTFB_PXA3XX\n\tbool \"compile pxa3xx graphics driver\"\n\tdepends on BR2_arm\n\thelp\n\t  The Marvell PXA3xx Processor Family is a system-on-chip based\n\t  on XScale® microarchitecture. This option enables the graphic\n\t  driver support for the PXA3xx processor family.\n\n\t  http://www.marvell.com/application-processors/pxa-family/\n\nconfig BR2_PACKAGE_DIRECTFB_EP9X\n\tbool \"compile ep9x graphics driver\"\n\tdepends on BR2_arm\n\thelp\n\t  Enable the graphic driver support for the EP93xx ARMv9 based\n\t  processors from Cirrus Logic.\n\n\t  http://cirrus.com/en/products/arm9.html\n\nconfig BR2_PACKAGE_DIRECTFB_I830\n\tbool \"compile i830 graphics driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\nconfig BR2_PACKAGE_DIRECTFB_LINUXINPUT\n\tbool \"compile /dev/input/eventX input driver\"\n\tdefault y\n\nconfig BR2_PACKAGE_DIRECTFB_KEYBOARD\n\tbool \"compile keyboard input driver\"\n\tdefault y\n\nconfig BR2_PACKAGE_DIRECTFB_PS2MOUSE\n\tbool \"compile PS2 mouse input driver\"\n\tdefault y\n\nconfig BR2_PACKAGE_DIRECTFB_SERIALMOUSE\n\tbool \"compile serial mouse input driver\"\n\tdefault y\n\nconfig BR2_PACKAGE_DIRECTFB_TSLIB\n\tbool \"enable touchscreen support\"\n\tdefault y\n\tselect BR2_PACKAGE_TSLIB\n\nconfig BR2_PACKAGE_DIRECTFB_GIF\n\tbool \"enable GIF support\"\n\tdefault y\n\nconfig BR2_PACKAGE_DIRECTFB_TIFF\n\tbool \"enable TIFF support\"\n\tselect BR2_PACKAGE_TIFF\n\nconfig BR2_PACKAGE_DIRECTFB_IMLIB2\n\tbool \"enable IMLIB2 support\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_IMLIB2\n\ncomment \"imlib2 support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_DIRECTFB_JPEG\n\tbool \"enable JPEG support\"\n\tdefault y\n\tselect BR2_PACKAGE_JPEG\n\nconfig BR2_PACKAGE_DIRECTFB_PNG\n\tbool \"enable PNG support\"\n\tdefault y\n\tselect BR2_PACKAGE_LIBPNG\n\nconfig BR2_PACKAGE_DIRECTFB_SVG\n\tbool \"enable SVG support\"\n\tdefault y\n\tselect BR2_PACKAGE_LIBSVG_CAIRO\n\nconfig BR2_PACKAGE_DIRECTFB_DITHER_RGB16\n\tbool \"enable advanced dithering of RGB16 surfaces\"\n\thelp\n\t  Enable dithering when loading images to RGB16 surfaces.\n\t  This increases the data section by 64 KBytes.\n\nconfig BR2_PACKAGE_DIRECTFB_TESTS\n\tbool \"build directfb tests\"\n\nendif # BR2_PACKAGE_DIRECTFB\n\ncomment \"directfb needs a glibc or uClibc toolchain w/ C++, NPTL, gcc >= 4.5, dynamic library\"\n\tdepends on !BR2_RISCV_32\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 || BR2_TOOLCHAIN_USES_MUSL || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/directfb/directfb.hash",
    "content": "# Locally computed\nsha256  b785c638dc31b8fe3a7c81be1475c89b2255ab3d67b777c747d3fbc52f8027a3  DirectFB-1.7.7.tar.gz\nsha256  512d2d21b6b3384ba64781abb0208a1b87740bc31e2df48e2b206ddb7e4d5779  COPYING\n"
  },
  {
    "path": "package/directfb/directfb.mk",
    "content": "################################################################################\n#\n# directfb\n#\n################################################################################\n\nDIRECTFB_VERSION_MAJOR = 1.7\nDIRECTFB_VERSION = $(DIRECTFB_VERSION_MAJOR).7\nDIRECTFB_SITE = http://www.directfb.org/downloads/Core/DirectFB-$(DIRECTFB_VERSION_MAJOR)\nDIRECTFB_SOURCE = DirectFB-$(DIRECTFB_VERSION).tar.gz\nDIRECTFB_LICENSE = LGPL-2.1+\nDIRECTFB_LICENSE_FILES = COPYING\nDIRECTFB_INSTALL_STAGING = YES\nDIRECTFB_AUTORECONF = YES\n\nDIRECTFB_CONF_OPTS = \\\n\t--enable-zlib \\\n\t--enable-freetype \\\n\t--enable-fbdev \\\n\t--disable-sdl \\\n\t--disable-vnc \\\n\t--disable-osx \\\n\t--disable-video4linux \\\n\t--disable-video4linux2 \\\n\t--without-tools \\\n\t--disable-x11\n\nifeq ($(BR2_STATIC_LIBS),y)\nDIRECTFB_CONF_OPTS += --disable-dynload\nendif\n\nDIRECTFB_CONFIG_SCRIPTS = directfb-config\n\nDIRECTFB_DEPENDENCIES = freetype zlib\n\nifeq ($(BR2_PACKAGE_DIRECTFB_MULTI),y)\nDIRECTFB_CONF_OPTS += --enable-multi --enable-multi-kernel\nDIRECTFB_DEPENDENCIES += linux-fusion\nelse\nDIRECTFB_CONF_OPTS += --disable-multi --disable-multi-kernel\nendif\n\nifeq ($(BR2_PACKAGE_DIRECTFB_DEBUG_SUPPORT),y)\nDIRECTFB_CONF_OPTS += --enable-debug-support\nifeq ($(BR2_PACKAGE_DIRECTFB_DEBUG),y)\nDIRECTFB_CONF_OPTS += --enable-debug\nendif\nelse\nDIRECTFB_CONF_OPTS += --disable-debug-support\nendif\n\nifeq ($(BR2_PACKAGE_DIRECTFB_TRACE),y)\nDIRECTFB_CONF_OPTS += --enable-trace\nendif\n\nifeq ($(BR2_PACKAGE_DIRECTFB_DIVINE),y)\nDIRECTFB_CONF_OPTS += --enable-divine\nelse\nDIRECTFB_CONF_OPTS += --disable-divine\nendif\n\nifeq ($(BR2_PACKAGE_DIRECTFB_SAWMAN),y)\nDIRECTFB_CONF_OPTS += --enable-sawman\nelse\nDIRECTFB_CONF_OPTS += --disable-sawman\nendif\n\nDIRECTFB_GFX = \\\n\t$(if $(BR2_PACKAGE_DIRECTFB_ATI128),ati128) \\\n\t$(if $(BR2_PACKAGE_DIRECTFB_CYBER5K),cyber5k) \\\n\t$(if $(BR2_PACKAGE_DIRECTFB_MATROX),matrox) \\\n\t$(if $(BR2_PACKAGE_DIRECTFB_PXA3XX),pxa3xx) \\\n\t$(if $(BR2_PACKAGE_DIRECTFB_I830),i830) \\\n\t$(if $(BR2_PACKAGE_DIRECTFB_EP9X),ep9x)\n\nifeq ($(strip $(DIRECTFB_GFX)),)\nDIRECTFB_CONF_OPTS += --with-gfxdrivers=none\nelse\nDIRECTFB_CONF_OPTS += \\\n\t--with-gfxdrivers=$(subst $(space),$(comma),$(strip $(DIRECTFB_GFX)))\nendif\n\nDIRECTFB_INPUT = \\\n\t$(if $(BR2_PACKAGE_DIRECTFB_LINUXINPUT),linuxinput) \\\n\t$(if $(BR2_PACKAGE_DIRECTFB_KEYBOARD),keyboard) \\\n\t$(if $(BR2_PACKAGE_DIRECTFB_PS2MOUSE),ps2mouse) \\\n\t$(if $(BR2_PACKAGE_DIRECTFB_SERIALMOUSE),serialmouse) \\\n\t$(if $(BR2_PACKAGE_DIRECTFB_TSLIB),tslib)\n\nifeq ($(BR2_PACKAGE_DIRECTFB_TSLIB),y)\nDIRECTFB_DEPENDENCIES += tslib\nendif\n\nifeq ($(strip $(DIRECTFB_INPUT)),)\nDIRECTFB_CONF_OPTS += --with-inputdrivers=none\nelse\nDIRECTFB_CONF_OPTS += \\\n\t--with-inputdrivers=$(subst $(space),$(comma),$(strip $(DIRECTFB_INPUT)))\nendif\n\nifeq ($(BR2_PACKAGE_DIRECTFB_GIF),y)\nDIRECTFB_CONF_OPTS += --enable-gif\nelse\nDIRECTFB_CONF_OPTS += --disable-gif\nendif\n\nifeq ($(BR2_PACKAGE_DIRECTFB_TIFF),y)\nDIRECTFB_CONF_OPTS += --enable-tiff\nDIRECTFB_DEPENDENCIES += tiff\nelse\nDIRECTFB_CONF_OPTS += --disable-tiff\nendif\n\nifeq ($(BR2_PACKAGE_DIRECTFB_PNG),y)\nDIRECTFB_CONF_OPTS += --enable-png\nDIRECTFB_DEPENDENCIES += libpng\nDIRECTFB_CONF_ENV += ac_cv_path_LIBPNG_CONFIG=$(STAGING_DIR)/usr/bin/libpng-config\nelse\nDIRECTFB_CONF_OPTS += --disable-png\nendif\n\nifeq ($(BR2_PACKAGE_DIRECTFB_JPEG),y)\nDIRECTFB_CONF_OPTS += --enable-jpeg\nDIRECTFB_DEPENDENCIES += jpeg\nelse\nDIRECTFB_CONF_OPTS += --disable-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_DIRECTFB_SVG),y)\nDIRECTFB_CONF_OPTS += --enable-svg\n# needs some help to find cairo includes\nDIRECTFB_CONF_ENV += CPPFLAGS=\"$(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/cairo\"\nDIRECTFB_DEPENDENCIES += libsvg-cairo\nelse\nDIRECTFB_CONF_OPTS += --disable-svg\nendif\n\nifeq ($(BR2_PACKAGE_DIRECTFB_IMLIB2),y)\nDIRECTFB_CONF_OPTS += --enable-imlib2\nDIRECTFB_DEPENDENCIES += imlib2\nDIRECTFB_CONF_ENV += ac_cv_path_IMLIB2_CONFIG=$(STAGING_DIR)/usr/bin/imlib2-config\nelse\nDIRECTFB_CONF_OPTS += --disable-imlib2\nendif\n\nifeq ($(BR2_PACKAGE_DIRECTFB_DITHER_RGB16),y)\nDIRECTFB_CONF_OPTS += --with-dither-rgb16=advanced\nelse\nDIRECTFB_CONF_OPTS += --with-dither-rgb16=none\nendif\n\nifeq ($(BR2_PACKAGE_DIRECTFB_TESTS),y)\nDIRECTFB_CONF_OPTS += --with-tests\nendif\n\nHOST_DIRECTFB_DEPENDENCIES = host-pkgconf host-libpng\nHOST_DIRECTFB_CONF_OPTS = \\\n\t--disable-multi \\\n\t--enable-png \\\n\t--with-gfxdrivers=none \\\n\t--with-inputdrivers=none\n\nHOST_DIRECTFB_BUILD_CMDS = \\\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/tools directfb-csource\n\nHOST_DIRECTFB_INSTALL_CMDS = \\\n\t$(INSTALL) -m 0755 $(@D)/tools/directfb-csource $(HOST_DIR)/bin\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n\n# directfb-csource for the host\nDIRECTFB_HOST_BINARY = $(HOST_DIR)/bin/directfb-csource\n"
  },
  {
    "path": "package/directfb-examples/0001-remove-bzero.patch",
    "content": "---\n src/df_knuckles/matrix.c |    2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\nIndex: directfb-examples-1.2.0/src/df_knuckles/matrix.c\n===================================================================\n--- directfb-examples-1.2.0.orig/src/df_knuckles/matrix.c\n+++ directfb-examples-1.2.0/src/df_knuckles/matrix.c\n@@ -19,7 +19,7 @@\n static float Cosine[3600];\n static float Sine[3600];\n \n-#define M_CLEAR(m) bzero(m, MATRIX_SIZE)\n+#define M_CLEAR(m) memset(m, 0, MATRIX_SIZE)\n #define M_IDENTITY(m) memcpy(m, IdentityMatrix, MATRIX_SIZE)\n \n static void MultiplyMatrix(float *A, float *B)\n"
  },
  {
    "path": "package/directfb-examples/Config.in",
    "content": "config BR2_PACKAGE_DIRECTFB_EXAMPLES\n\tbool \"directfb examples\"\n\tdepends on BR2_PACKAGE_DIRECTFB\n\thelp\n\t  The DirectFB-examples package contains a set of simple\n\t  DirectFB applications that can be used to test and demonstrate\n\t  various DirectFB features.\n\n\t  http://directfb.org/downloads/Extras/README.DirectFB-examples\n"
  },
  {
    "path": "package/directfb-examples/directfb-examples.hash",
    "content": "# Locally computed\nsha256  9a2104cc4da8123c8371813551b66b943198979f745cbebc034bb5e10844122a  DirectFB-examples-1.7.0.tar.gz\nsha256  f91483684678e8aa8ccc4ee0ede3140b0494f8305e162695c7e6e3f83e54f236  COPYING\n"
  },
  {
    "path": "package/directfb-examples/directfb-examples.mk",
    "content": "################################################################################\n#\n# directfb-examples\n#\n################################################################################\n\nDIRECTFB_EXAMPLES_VERSION = 1.7.0\nDIRECTFB_EXAMPLES_SITE = http://www.directfb.org/downloads/Extras\nDIRECTFB_EXAMPLES_SOURCE = DirectFB-examples-$(DIRECTFB_EXAMPLES_VERSION).tar.gz\nDIRECTFB_EXAMPLES_LICENSE = MIT\nDIRECTFB_EXAMPLES_LICENSE_FILES = COPYING\nDIRECTFB_EXAMPLES_DEPENDENCIES = directfb\n\nifeq ($(BR2_STATIC_LIBS),y)\nDIRECTFB_EXAMPLES_CONF_OPTS += LIBS=-lstdc++\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dmalloc/0001-mips.patch",
    "content": "--- a/configure\n+++ b/configure\n@@ -7107,7 +7107,7 @@\n echo $ECHO_N \"checking return.h macros work... $ECHO_C\" >&6\n if test \"$cross_compiling\" = yes; then\n    cat >>confdefs.h <<\\_ACEOF\n-#define RETURN_MACROS_WORK 0\n+#define RETURN_MACROS_WORK 1\n _ACEOF\n  echo \"$as_me:$LINENO: result: no\" >&5\n echo \"${ECHO_T}no\" >&6\n--- a/return.h\n+++ b/return.h\n@@ -106,26 +106,16 @@\n /*************************************/\n \n /*\n- * For DEC Mips machines running Ultrix\n+ * For Mips machines running Linux\n  */\n #if __mips\n \n /*\n- * I have no idea how to get inline assembly with the default cc.\n- * Anyone know how?\n- */\n-\n-#if 0\n-\n-/*\n  * NOTE: we assume here that file is global.\n  *\n- * $31 is the frame pointer.  $2 looks to be the return address but maybe\n- * not consistently.\n+ * $31 is the return address.\n  */\n-#define GET_RET_ADDR(file)\tasm(\"sw $2, file\")\n-\n-#endif\n+#define GET_RET_ADDR(file)\tasm(\"sw $31, %0\" : \"=m\" (file))\n \n #endif /* __mips */\n \n"
  },
  {
    "path": "package/dmalloc/0002-fix-parallel-build.patch",
    "content": "Fix parallel build issue\n\nMissing dmallocc.o <- dmalloc.h dependency may break parallel builds.\ndmalloc.h is generated,and may not be around by the time gcc starts\nparsing dmallocc.cc.\n\nSigned-off-by: Alex Suykov <alex.suykov@gmail.com>\n\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -401,6 +401,7 @@\n compat.o: compat.c conf.h settings.h dmalloc.h compat.h dmalloc_loc.h\n dmalloc.o: dmalloc.c conf.h settings.h dmalloc_argv.h dmalloc.h compat.h \\\n   debug_tok.h dmalloc_loc.h env.h error_val.h version.h\n+dmallocc.o: dmallocc.cc dmalloc.h return.h conf.h settings.h\n dmalloc_argv.o: dmalloc_argv.c conf.h settings.h dmalloc_argv.h \\\n   dmalloc_argv_loc.h compat.h\n dmalloc_fc_t.o: dmalloc_fc_t.c conf.h settings.h dmalloc.h dmalloc_argv.h \\\n"
  },
  {
    "path": "package/dmalloc/0003-fix-shlibs.patch",
    "content": "Fix shared library rules\n\ndmalloc uses ld -shared --whole-archive -o lib.so lib.a,\nbut for some reason lists regular objects in addition\nto the archive, ending up with two copies of each symbol.\n\nSigned-off-by: Alex Suykov <alex.suykov@gmail.com>\n\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -257,7 +257,7 @@ shlib : $(BUILD_SL)\n # via: http://256.com/gray/email.html\n $(LIB_SL) : $(LIBRARY)\n \trm -f $@ $@.t\n-\t@shlinkargs@ $(LIBRARY) $(OBJS) $(NORMAL_OBJS)\n+\t@shlinkargs@ $(LIBRARY)\n \tmv $@.t $@\n \n $(LIBRARY) : $(OBJS) $(NORMAL_OBJS)\n@@ -270,7 +270,7 @@ $(LIB_TH) : $(OBJS) $(THREAD_OBJS)\n \n $(LIB_TH_SL) : $(LIB_TH)\n \trm -f $@ $@.t\n-\t@shlinkargs@ $(LIB_TH) $(OBJS) $(THREAD_OBJS)\n+\t@shlinkargs@ $(LIB_TH)\n \tmv $@.t $@\n \n $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)\n@@ -279,7 +279,7 @@ $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)\n \n $(LIB_CXX_SL) : $(LIB_CXX)\n \trm -f $@ $@.t\n-\t@shlinkargs@ $(LIB_CXX) $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)\n+\t@shlinkargs@ $(LIB_CXX)\n \tmv $@.t $@\n \n $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)\n@@ -288,7 +288,7 @@ $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)\n \n $(LIB_TH_CXX_SL) : $(LIB_TH_CXX)\n \trm -f $@ $@.t\n-\t@shlinkargs@ $(LIB_TH_CXX) $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)\n+\t@shlinkargs@ $(LIB_TH_CXX)\n \tmv $@.t $@\n \n threadssl : $(LIB_TH_SL)\n"
  },
  {
    "path": "package/dmalloc/0004-fix-strdup.patch",
    "content": "From 59d73a473f1c1a31bcba90d314f956d0bcc3de95 Mon Sep 17 00:00:00 2001\nFrom: Siana Gearz <siana.sg@live.de>\nDate: Sat, 8 Sep 2012 22:55:17 +0200\nSubject: [PATCH] Fix strdup\n\n[Retrieved from:\nhttps://github.com/siana/dmalloc/commit/59d73a473f1c1a31bcba90d314f956d0bcc3de95]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n dmalloc.h.3 | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/dmalloc.h.3 b/dmalloc.h.3\nindex d3d1c13..3fc573a 100644\n--- a/dmalloc.h.3\n+++ b/dmalloc.h.3\n@@ -459,6 +459,7 @@ DMALLOC_PNT\tvalloc(DMALLOC_SIZE size);\n  *\n  * string -> String we are duplicating.\n  */\n+#undef strdup\n extern\n char\t*strdup(const char *string);\n #endif /* ifndef DMALLOC_STRDUP_MACRO */\n"
  },
  {
    "path": "package/dmalloc/0005-fix-strndup.patch",
    "content": "From 005d92c2cebbde5c8623daa29725f7a62b18df7c Mon Sep 17 00:00:00 2001\nFrom: Siana Gearz <siana.sg@live.de>\nDate: Sat, 8 Sep 2012 22:44:35 +0200\nSubject: [PATCH] Fix strndup\n\n[Retrieved from:\nhttps://github.com/siana/dmalloc/commit/005d92c2cebbde5c8623daa29725f7a62b18df7c]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n dmalloc.h.3 | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/dmalloc.h.3 b/dmalloc.h.3\nindex 8bda997..fb538a8 100644\n--- a/dmalloc.h.3\n+++ b/dmalloc.h.3\n@@ -429,6 +429,7 @@ char\t*strdup(const char *string);\n  *\n  * len -> Length of the string to duplicate.\n  */\n+#undef strndup\n extern\n char\t*strndup(const char *string, const DMALLOC_SIZE len);\n \n"
  },
  {
    "path": "package/dmalloc/Config.in",
    "content": "config BR2_PACKAGE_DMALLOC\n\tbool \"dmalloc\"\n\thelp\n\t  A debug memory allocation library which is a drop in\n\t  replacement for the system's malloc, realloc, calloc, free and\n\t  other memory management routines while providing powerful\n\t  debugging facilities configurable at runtime.\n\n\t  http://dmalloc.com/\n"
  },
  {
    "path": "package/dmalloc/dmalloc.hash",
    "content": "# Locally computed:\nsha256  d3be5c6eec24950cb3bd67dbfbcdf036f1278fae5fd78655ef8cdf9e911e428a  dmalloc-5.5.2.tgz\nsha256  8659d49ceeeb006288ad246164e504ccfe33f7a4c1680439fb6ff6a393b0722b  dmalloc.h.1\n"
  },
  {
    "path": "package/dmalloc/dmalloc.mk",
    "content": "################################################################################\n#\n# dmalloc\n#\n################################################################################\n\nDMALLOC_VERSION = 5.5.2\nDMALLOC_SOURCE = dmalloc-$(DMALLOC_VERSION).tgz\nDMALLOC_SITE = http://dmalloc.com/releases\n\nDMALLOC_LICENSE = MIT-like\n# license is in each file, dmalloc.h.1 is the smallest one\nDMALLOC_LICENSE_FILES = dmalloc.h.1\n\nDMALLOC_INSTALL_STAGING = YES\nDMALLOC_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_STATIC_LIBS),y)\nDMALLOC_CONF_OPTS += --disable-shlib\nelse\nDMALLOC_CONF_OPTS += --enable-shlib\nDMALLOC_CFLAGS += -fPIC\nendif\n\nifeq ($(BR2_INSTALL_LIBSTDCPP),y)\nDMALLOC_CONF_OPTS += --enable-cxx\nelse\nDMALLOC_CONF_OPTS += --disable-cxx\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nDMALLOC_CONF_OPTS += --enable-threads\nelse\nDMALLOC_CONF_OPTS += --disable-threads\nendif\n\n# dmalloc has some assembly function that are not present in thumb1 mode:\n# Error: lo register required -- `str lr,[sp,#4]'\n# so, we desactivate thumb mode\nifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)\nDMALLOC_CFLAGS += -marm\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_63261),y)\nDMALLOC_CFLAGS += -O0\nendif\n\nDMALLOC_CONF_ENV = CFLAGS=\"$(DMALLOC_CFLAGS)\"\n\ndefine DMALLOC_POST_PATCH\n\t$(SED) 's/^ac_cv_page_size=0$$/ac_cv_page_size=12/' $(@D)/configure\n\t$(SED) 's/(ld -/($${LD-ld} -/' $(@D)/configure\n\t$(SED) 's/'\\''ld -/\"$${LD-ld}\"'\\'' -/' $(@D)/configure\n\t$(SED) 's/ar cr/$$(AR) cr/' $(@D)/Makefile.in\nendef\n\nDMALLOC_POST_PATCH_HOOKS += DMALLOC_POST_PATCH\n\n# both DESTDIR and PREFIX are ignored..\ndefine DMALLOC_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) includedir=\"$(STAGING_DIR)/usr/include\" \\\n\t\tbindir=\"$(STAGING_DIR)/usr/bin\" \\\n\t\tlibdir=\"$(STAGING_DIR)/usr/lib\" \\\n\t\tshlibdir=\"$(STAGING_DIR)/usr/lib\" \\\n\t\tinfodir=\"$(STAGING_DIR)/usr/share/info/\" \\\n\t\t-C $(@D) install\nendef\n\nifeq ($(BR2_STATIC_LIBS),)\ndefine DMALLOC_INSTALL_SHARED_LIB\n\tcp -dpf $(STAGING_DIR)/usr/lib/libdmalloc*.so $(TARGET_DIR)/usr/lib\nendef\nendif\n\ndefine DMALLOC_INSTALL_TARGET_CMDS\n\t$(DMALLOC_INSTALL_SHARED_LIB)\n\tcp -dpf $(STAGING_DIR)/usr/bin/dmalloc $(TARGET_DIR)/usr/bin/dmalloc\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dmidecode/Config.in",
    "content": "config BR2_PACKAGE_DMIDECODE\n\tbool \"dmidecode\"\n\tdepends on BR2_aarch64 || BR2_i386 || BR2_x86_64\n\thelp\n\t  Dmidecode reports information about your system's hardware\n\t  as described in your system BIOS according to the SMBIOS/DMI\n\t  standard.\n\n\t  http://www.nongnu.org/dmidecode/\n"
  },
  {
    "path": "package/dmidecode/dmidecode.hash",
    "content": "# Locally computed\nsha256  82c737a780614c38a783e8055340d295e332fb12c7f418b5d21a0797d3fb1455  dmidecode-3.3.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/dmidecode/dmidecode.mk",
    "content": "################################################################################\n#\n# dmidecode\n#\n################################################################################\n\nDMIDECODE_VERSION = 3.3\nDMIDECODE_SOURCE = dmidecode-$(DMIDECODE_VERSION).tar.xz\nDMIDECODE_SITE = http://download.savannah.gnu.org/releases/dmidecode\nDMIDECODE_LICENSE = GPL-2.0+\nDMIDECODE_LICENSE_FILES = LICENSE\nDMIDECODE_SELINUX_MODULES = dmidecode\n\ndefine DMIDECODE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine DMIDECODE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) prefix=/usr DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dmraid/0001-fix-compilation-under-musl.patch",
    "content": "From 89c7fc15e064dd407e6d5ccefe78985b86b8a036 Mon Sep 17 00:00:00 2001\nFrom: Brendan Heading <brendanheading@gmail.com>\nDate: Tue, 1 Sep 2015 12:26:36 +0100\nSubject: [PATCH 1/1] fix compilation under musl\n\nPatch borrowed from Void Linux :\n\nhttps://github.com/voidlinux/void-packages/blob/master/srcpkgs/dmraid/patches/25_musl-libc.patch\n\nUpstream package appears dormant, no mailing list and no\nmaintainence releases since Nov 2010.\n\nUpstream-Status: dormant\nSigned-off-by: Brendan Heading <brendanheading@gmail.com>\n\n---\n 1.0.0.rc16-3/dmraid/include/dmraid/misc.h | 1 +\n 1.0.0.rc16-3/dmraid/lib/device/scan.c     | 1 +\n 2 files changed, 2 insertions(+)\n\ndiff --git a/1.0.0.rc16-3/dmraid/include/dmraid/misc.h b/1.0.0.rc16-3/dmraid/include/dmraid/misc.h\nindex 247a68e..1b1dfdf 100644\n--- a/1.0.0.rc16-3/dmraid/include/dmraid/misc.h\n+++ b/1.0.0.rc16-3/dmraid/include/dmraid/misc.h\n@@ -10,6 +10,7 @@\n \n #ifndef _MISC_H_\n #define _MISC_H_\n+#include <fcntl.h>\n \n #define DM_ASSERT(__cond) do { if (!(__cond)) { printf(\"ASSERT file:%s line:%d fuction:%s cond: %s\\n\", __FILE__, __LINE__, __FUNCTION__, #__cond); } } while(0);\n \ndiff --git a/1.0.0.rc16-3/dmraid/lib/device/scan.c b/1.0.0.rc16-3/dmraid/lib/device/scan.c\nindex a040d53..6897146 100644\n--- a/1.0.0.rc16-3/dmraid/lib/device/scan.c\n+++ b/1.0.0.rc16-3/dmraid/lib/device/scan.c\n@@ -10,6 +10,7 @@\n # include <dirent.h>\n # include <paths.h>\n #else\n+# include <paths.h>\n # include <dirent.h>\n # include <mntent.h>\n #endif\n-- \n2.4.3\n\n"
  },
  {
    "path": "package/dmraid/Config.in",
    "content": "config BR2_PACKAGE_DMRAID\n\tbool \"dmraid\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # lvm2\n\tdepends on BR2_USE_MMU # lvm2\n\tdepends on !BR2_STATIC_LIBS # lvm2\n\tselect BR2_PACKAGE_LVM2\n\thelp\n\t  dmraid discovers, activates, deactivates and displays\n\t  properties of software RAID sets (eg, ATARAID) and contained\n\t  DOS partitions.\n\n\t  dmraid uses the Linux device-mapper to create devices with\n\t  respective mappings for the ATARAID sets discovered.\n\n\t  http://people.redhat.com/~heinzm/sw/dmraid/\n\ncomment \"dmraid needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/dmraid/S20dmraid",
    "content": "#!/bin/sh\n\nset -e\n\n# try to load module in case that hasn't been done yet\nmodprobe dm-mod >/dev/null 2>&1\n\ncase \"$1\" in\n\tstart|\"\")\n\t\techo \"Setting up DMRAID devices...\"\n\t\t/usr/sbin/dmraid --activate yes --ignorelocking --verbose\n\t\t;;\n\n\tstop)\n\t\techo \"Shutting down DMRAID devices... \"\n\t\t/usr/sbin/dmraid --activate no --ignorelocking --verbose\n\t\t;;\n\n\trestart|force-reload)\n\t\t$0 stop\n\t\tsleep 1\n\t\t$0 start\n\t\t;;\n\n\t*)\n\t\techo \"Usage: dmraid {start|stop|restart|force-reload}\"\n\t\texit 1\n\t\t;;\nesac\n"
  },
  {
    "path": "package/dmraid/dmraid.hash",
    "content": "# From http://people.redhat.com/~heinzm/sw/dmraid/src/dmraid-1.0.0.rc16-3.tar.bz2.md5.sum\nmd5\t819338fcef98e8e25819f0516722beeb dmraid-1.0.0.rc16-3.tar.bz2\n# locally computed\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  1.0.0.rc16-3/dmraid/LICENSE_GPL\nsha256  4bc391fcf852e03c3a7564cb146af6e47717562eed296b28bce123ee1b0396b8  1.0.0.rc16-3/dmraid/LICENSE\n"
  },
  {
    "path": "package/dmraid/dmraid.mk",
    "content": "################################################################################\n#\n# dmraid\n#\n################################################################################\n\nDMRAID_VERSION = 1.0.0.rc16-3\nDMRAID_SOURCE = dmraid-$(DMRAID_VERSION).tar.bz2\nDMRAID_SITE = http://people.redhat.com/~heinzm/sw/dmraid/src\nDMRAID_SUBDIR = $(DMRAID_VERSION)/dmraid\n# lib and tools race with parallel make\nDMRAID_MAKE = $(MAKE1)\nDMRAID_INSTALL_STAGING = YES\nDMRAID_LICENSE = GPL-2.0\nDMRAID_LICENSE_FILES = $(DMRAID_SUBDIR)/LICENSE_GPL $(DMRAID_SUBDIR)/LICENSE\n\nDMRAID_DEPENDENCIES = lvm2\n\ndefine DMRAID_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/dmraid/S20dmraid \\\n\t\t$(TARGET_DIR)/etc/init.d/S20dmraid\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dnsmasq/Config.in",
    "content": "config BR2_PACKAGE_DNSMASQ\n\tbool \"dnsmasq\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  A lightweight DNS and DHCP server. It is intended to provide\n\t  coupled DNS and DHCP service to a LAN.\n\n\t  http://www.thekelleys.org.uk/dnsmasq/doc.html\n\nif BR2_PACKAGE_DNSMASQ\n\nconfig BR2_PACKAGE_DNSMASQ_TFTP\n\tbool \"tftp support\"\n\tdefault y\n\thelp\n\t  Enable TFTP support in dnsmasq.\n\nconfig BR2_PACKAGE_DNSMASQ_DHCP\n\tbool \"dhcp support\"\n\tdefault y\n\thelp\n\t  Enable DHCP server support in dnsmasq.\n\nconfig BR2_PACKAGE_DNSMASQ_DNSSEC\n\tbool \"DNSSEC support\"\n\tselect BR2_PACKAGE_GMP\n\tselect BR2_PACKAGE_NETTLE\n\thelp\n\t  Enable DNSSEC validation and caching support.\n\nconfig BR2_PACKAGE_DNSMASQ_IDN\n\tbool \"IDN support\"\n\tselect BR2_PACKAGE_LIBIDN2 if !BR2_PACKAGE_LIBIDN\n\thelp\n\t  Enable IDN support in dnsmasq.\n\t  This option is a big space taker since it pulls in many\n\t  libraries.\n\nconfig BR2_PACKAGE_DNSMASQ_LUA\n\tbool \"Lua scripting support\"\n\tdepends on BR2_PACKAGE_LUA\n\thelp\n\t  Enable Lua scripting for dnsmasq\n\nconfig BR2_PACKAGE_DNSMASQ_CONNTRACK\n\tbool \"conntrack marking support\"\n\tselect BR2_PACKAGE_LIBNETFILTER_CONNTRACK\n\thelp\n\t  Enable DNS query connection marking in netfilter.\n\nendif\n"
  },
  {
    "path": "package/dnsmasq/S80dnsmasq",
    "content": "#!/bin/sh\n\n[ -f /etc/dnsmasq.conf ] || exit 0\n\ncase \"$1\" in\n\tstart)\n\t\tprintf \"Starting dnsmasq: \"\n\t\tstart-stop-daemon -S -x /usr/sbin/dnsmasq\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping dnsmasq: \"\n\t\tstart-stop-daemon -K -q -x /usr/sbin/dnsmasq\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\trestart|reload)\n\t\t$0 stop\n\t\t$0 start\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "package/dnsmasq/dnsmasq.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.85.tar.xz.asc\nsha256  ad98d3803df687e5b938080f3d25c628fe41c878752d03fbc6199787fee312fa  dnsmasq-2.85.tar.xz\n# Locally calculated\nsha256  dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa  COPYING\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING-v3\n"
  },
  {
    "path": "package/dnsmasq/dnsmasq.mk",
    "content": "################################################################################\n#\n# dnsmasq\n#\n################################################################################\n\nDNSMASQ_VERSION = 2.85\nDNSMASQ_SOURCE = dnsmasq-$(DNSMASQ_VERSION).tar.xz\nDNSMASQ_SITE = http://thekelleys.org.uk/dnsmasq\nDNSMASQ_MAKE_ENV = $(TARGET_MAKE_ENV) CC=\"$(TARGET_CC)\"\nDNSMASQ_MAKE_OPTS = COPTS=\"$(DNSMASQ_COPTS)\" PREFIX=/usr CFLAGS=\"$(TARGET_CFLAGS)\"\nDNSMASQ_MAKE_OPTS += DESTDIR=$(TARGET_DIR) LDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\tLIBS+=$(TARGET_NLS_LIBS)\nDNSMASQ_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES)\nDNSMASQ_LICENSE = GPL-2.0 or GPL-3.0\nDNSMASQ_LICENSE_FILES = COPYING COPYING-v3\nDNSMASQ_CPE_ID_VENDOR = thekelleys\nDNSMASQ_SELINUX_MODULES = dnsmasq\n\nDNSMASQ_I18N = $(if $(BR2_SYSTEM_ENABLE_NLS),-i18n)\n\nifneq ($(BR2_PACKAGE_DNSMASQ_DHCP),y)\nDNSMASQ_COPTS += -DNO_DHCP\nendif\n\nifeq ($(BR2_PACKAGE_DNSMASQ_DNSSEC),y)\nDNSMASQ_DEPENDENCIES += gmp nettle\nDNSMASQ_COPTS += -DHAVE_DNSSEC\nifeq ($(BR2_STATIC_LIBS),y)\nDNSMASQ_COPTS += -DHAVE_DNSSEC_STATIC\nendif\nendif\n\nifneq ($(BR2_PACKAGE_DNSMASQ_TFTP),y)\nDNSMASQ_COPTS += -DNO_TFTP\nendif\n\nifeq ($(BR2_PACKAGE_DNSMASQ_IDN),y)\nifeq ($(BR2_PACKAGE_LIBIDN2),y)\nDNSMASQ_DEPENDENCIES += libidn2\nDNSMASQ_COPTS += -DHAVE_LIBIDN2\nelse\nDNSMASQ_DEPENDENCIES += libidn\nDNSMASQ_COPTS += -DHAVE_IDN\nendif\nendif\n\nifeq ($(BR2_PACKAGE_DNSMASQ_CONNTRACK),y)\nDNSMASQ_DEPENDENCIES += libnetfilter_conntrack\nDNSMASQ_COPTS += -DHAVE_CONNTRACK\nendif\n\nifeq ($(BR2_PACKAGE_DNSMASQ_LUA),y)\nDNSMASQ_DEPENDENCIES += lua\nDNSMASQ_COPTS += -DHAVE_LUASCRIPT\n\n# liblua uses dlopen when dynamically linked\nifneq ($(BR2_STATIC_LIBS),y)\nDNSMASQ_MAKE_OPTS += LIBS+=\"-ldl\"\nendif\n\ndefine DNSMASQ_TWEAK_LIBLUA\n\t$(SED) 's/lua5.2/lua/g' $(DNSMASQ_DIR)/Makefile\nendef\nendif\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nDNSMASQ_DEPENDENCIES += dbus\nDNSMASQ_COPTS += -DHAVE_DBUS\n\ndefine DNSMASQ_INSTALL_DBUS\n\t$(INSTALL) -m 0644 -D $(@D)/dbus/dnsmasq.conf \\\n\t\t$(TARGET_DIR)/etc/dbus-1/system.d/dnsmasq.conf\nendef\nendif\n\nifeq ($(BR2_PACKAGE_UBUS),y)\nDNSMASQ_DEPENDENCIES += ubus\nDNSMASQ_COPTS += -DHAVE_UBUS\nendif\n\ndefine DNSMASQ_BUILD_CMDS\n\t$(DNSMASQ_TWEAK_LIBLUA)\n\t$(DNSMASQ_MAKE_ENV) $(MAKE) -C $(@D) $(DNSMASQ_MAKE_OPTS) all$(DNSMASQ_I18N)\nendef\n\ndefine DNSMASQ_INSTALL_TARGET_CMDS\n\t$(DNSMASQ_MAKE_ENV) $(MAKE) -C $(@D) $(DNSMASQ_MAKE_OPTS) install$(DNSMASQ_I18N)\n\tmkdir -p $(TARGET_DIR)/var/lib/misc/\n\t$(DNSMASQ_INSTALL_DBUS)\nendef\n\ndefine DNSMASQ_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/dnsmasq/S80dnsmasq \\\n\t\t$(TARGET_DIR)/etc/init.d/S80dnsmasq\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/doc-asciidoc.mk",
    "content": "# we can't use suitable-host-package here because that's not available in\n# the context of 'make release'\n.PHONY: asciidoc-check-dependencies\nasciidoc-check-dependencies:\n\t$(Q)if [ -z \"$(shell support/dependencies/check-host-asciidoc.sh)\" ]; then \\\n\t\techo \"You need a sufficiently recent asciidoc on your host\" \\\n\t\t\t\"to generate documents\"; \\\n\t\texit 1; \\\n\tfi\n\t$(Q)if [ -z \"`which w3m 2>/dev/null`\" ]; then \\\n\t\techo \"You need w3m on your host to generate documents\"; \\\n\t\texit 1; \\\n\tfi\n\nasciidoc-check-dependencies-pdf:\n\t$(Q)if [ -z \"`which dblatex 2>/dev/null`\" ]; then \\\n\t\techo \"You need dblatex on your host to generate PDF documents\"; \\\n\t\texit 1; \\\n\tfi\n\n# PDF generation is broken because of a bug in xsltproc program provided\n# by libxslt <=1.1.28, which does not honor an option we need to set.\n# Fortunately, this bug is already fixed upstream:\n#   https://gitorious.org/libxslt/libxslt/commit/5af7ad745323004984287e48b42712e7305de35c\n#\n# So, bail out when trying to build a PDF using a buggy version of the\n# xsltproc program.\n#\n# So, to overcome this issue and being able to build a PDF, you can\n# build xsltproc from its source repository, then run:\n#   $ PATH=/path/to/custom-xsltproc/bin:${PATH} make manual\nGENDOC_XSLTPROC_IS_BROKEN = \\\n\t$(shell xsltproc --maxvars 0 >/dev/null 2>/dev/null || echo y)\n\n# Apply this configuration to all documents\nBR_ASCIIDOC_CONF = docs/conf/asciidoc.conf\n\n################################################################################\n# ASCIIDOC_INNER -- generates the make targets needed to build a specific type of\n#                   asciidoc documentation.\n#\n#  argument 1 is the name of the document and the top-level asciidoc file must\n#             have the same name\n#  argument 2 is the uppercase name of the document\n#  argument 3 is the directory containing the document\n#  argument 4 is the type of document to generate (-f argument of a2x)\n#  argument 5 is the document type as used in the make target\n#  argument 6 is the output file extension for the document type\n#  argument 7 is the human text for the document type\n#  argument 8 (optional) are extra arguments for a2x\n#\n# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.\n#\n# Since this function will be called from within an $(eval ...)\n# all variable references except the arguments must be $$-quoted.\n################################################################################\ndefine ASCIIDOC_INNER\n$(1): $(1)-$(5)\n.PHONY: $(1)-$(5)\n$(1)-$(5): $$(O)/docs/$(1)/$(1).$(6)\n\nasciidoc-check-dependencies-$(5):\n.PHONY: $(1)-check-dependencies-$(5)\n# Single line, because splitting a foreach is not easy...\n$(1)-check-dependencies-$(5): asciidoc-check-dependencies-$(5)\n\t$$(Q)$$(foreach hook,$$($(2)_CHECK_DEPENDENCIES_$$(call UPPERCASE,$(5))_HOOKS),$$(call $$(hook))$$(sep))\n\n# Include Buildroot's AsciiDoc configuration first:\n#  - generic configuration,\n#  - then output-specific configuration\nifneq ($$(wildcard $$(BR_ASCIIDOC_CONF)),)\n$(2)_$(4)_ASCIIDOC_OPTS += -f $$(BR_ASCIIDOC_CONF)\nendif\nBR_$(4)_ASCIIDOC_CONF = docs/conf/asciidoc-$(4).conf\nifneq ($$(wildcard $$(BR_$(4)_ASCIIDOC_CONF)),)\n$(2)_$(4)_ASCIIDOC_OPTS += -f $$(BR_$(4)_ASCIIDOC_CONF)\nendif\n\n# Then include the document's AsciiDoc configuration:\n#  - generic configuration,\n#  - then output-specific configuration\nifneq ($$(wildcard $$($(2)_ASCIIDOC_CONF)),)\n$(2)_$(4)_ASCIIDOC_OPTS += -f $$($(2)_ASCIIDOC_CONF)\nendif\n$(2)_$(4)_ASCIIDOC_CONF = $(3)/asciidoc-$(4).conf\nifneq ($$(wildcard $$($(2)_$(4)_ASCIIDOC_CONF)),)\n$(2)_$(4)_ASCIIDOC_OPTS += -f $$($(2)_$(4)_ASCIIDOC_CONF)\nendif\n\n# Handle a2x warning about --destination-dir option only applicable to HTML\n# based outputs. So:\n# - use the --destination-dir option if possible (html and split-html),\n# - otherwise copy the generated document to the output directory\n$(2)_$(4)_A2X_OPTS =\nifneq ($$(filter $(5),html split-html),)\n$(2)_$(4)_A2X_OPTS += --destination-dir=\"$$(@D)\"\nelse\ndefine $(2)_$(4)_INSTALL_CMDS\n\t$$(Q)cp -f $$(BUILD_DIR)/docs/$(1)/$(1).$(6) $$(@D)\nendef\nendif\n\n$$(O)/docs/$(1)/$(1).$(6): export TZ=UTC\n\nifeq ($(6)-$$(GENDOC_XSLTPROC_IS_BROKEN),pdf-y)\n$$(O)/docs/$(1)/$(1).$(6):\n\t$$(warning PDF generation is disabled because of a bug in \\\n\t\txsltproc. To be able to generate a PDF, you should \\\n\t\tbuild xsltproc from the libxslt sources >=1.1.29 and pass it \\\n\t\tto make through the command line: \\\n\t\t'PATH=/path/to/custom-xsltproc/bin:$$$${PATH} make $(1)-pdf')\nelse\n# -r $(@D) is there for documents that use external filters; those filters\n# generate code at the same location it finds the document's source files.\n$$(O)/docs/$(1)/$(1).$(6): $$($(2)_SOURCES) \\\n\t\t\t   $(1)-check-dependencies \\\n\t\t\t   $(1)-check-dependencies-$(5) \\\n\t\t\t   $(1)-prepare-sources\n\t$$(Q)$$(call MESSAGE,\"Generating $(7) $(1)...\")\n\t$$(Q)mkdir -p $$(@D)\n\t$$(Q)a2x $(8) -f $(4) -d book -L \\\n\t\t$$(foreach r,$$($(2)_RESOURCES) $$(@D), \\\n\t\t\t--resource=\"$$(abspath $$(r))\") \\\n\t\t$$($(2)_$(4)_A2X_OPTS) \\\n\t\t--asciidoc-opts=\"$$($(2)_$(4)_ASCIIDOC_OPTS)\" \\\n\t\t$$(BUILD_DIR)/docs/$(1)/$(1).txt\n# install the generated document\n\t$$($(2)_$(4)_INSTALL_CMDS)\nendif\nendef\n\n################################################################################\n# ASCIIDOC -- generates the make targets needed to build asciidoc documentation.\n#\n# argument 1 is the lowercase name of the document; the document's main file\n#            must have the same name, with the .txt extension\n# argument 2 is the uppercase name of the document\n# argument 3 is the directory containing the document's sources\n#\n# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.\n# The variable <DOCUMENT_NAME>_RESOURCES defines where the document's\n# resources, such as images, are located; must be an absolute path.\n################################################################################\ndefine ASCIIDOC\n# Single line, because splitting a foreach is not easy...\n.PHONY: $(1)-check-dependencies\n$(1)-check-dependencies: asciidoc-check-dependencies $$($(2)_DEPENDENCIES)\n\t$$(Q)$$(foreach hook,$$($(2)_CHECK_DEPENDENCIES_HOOKS),$$(call $$(hook))$$(sep))\n\n# Single line, because splitting a foreach is not easy...\n# Do not touch the stamp file, so we get to rsync again every time we build\n# the document.\n$$(BUILD_DIR)/docs/$(1)/.stamp_doc_rsynced:\n\t$$(Q)$$(call MESSAGE,\"Preparing the $(1) sources...\")\n\t$$(Q)mkdir -p $$(@D)\n\t$$(Q)rsync -a $(3) $$(@D)\n\t$$(Q)$$(foreach hook,$$($(2)_POST_RSYNC_HOOKS),$$(call $$(hook))$$(sep))\n\n.PHONY: $(1)-prepare-sources\n$(1)-prepare-sources: $$(BUILD_DIR)/docs/$(1)/.stamp_doc_rsynced\n\n$(2)_ASCIIDOC_CONF = $(3)/asciidoc.conf\n\n$(call ASCIIDOC_INNER,$(1),$(2),$(3),xhtml,html,html,HTML,\\\n\t--xsltproc-opts \"--stringparam toc.section.depth 1\")\n\n$(call ASCIIDOC_INNER,$(1),$(2),$(3),chunked,split-html,chunked,split HTML,\\\n\t--xsltproc-opts \"--stringparam toc.section.depth 1\")\n\n# dblatex needs to pass the '--maxvars ...' option to xsltproc to prevent it\n# from reaching the template recursion limit when processing the (long) target\n# package table and bailing out.\n$(call ASCIIDOC_INNER,$(1),$(2),$(3),pdf,pdf,pdf,PDF,\\\n\t--dblatex-opts \"-P latex.output.revhistory=0 -x '--maxvars 100000'\")\n\n$(call ASCIIDOC_INNER,$(1),$(2),$(3),text,text,text,text)\n\n$(call ASCIIDOC_INNER,$(1),$(2),$(3),epub,epub,epub,ePUB)\n\nclean: $(1)-clean\n$(1)-clean:\n\t$$(Q)$$(RM) -rf $$(BUILD_DIR)/docs/$(1)\n.PHONY: $(1) $(1)-clean\nendef\n\n################################################################################\n# asciidoc-document -- the target generator macro for asciidoc documents\n################################################################################\n\nasciidoc-document = $(call ASCIIDOC,$(pkgname),$(call UPPERCASE,$(pkgname)),$(pkgdir))\n"
  },
  {
    "path": "package/docker/Config.in",
    "content": "config BR2_PACKAGE_DOCKER\n\tbool \"docker\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  a system tray dock for X\n\n\t  http://icculus.org/openbox/2/docker\n\ncomment \"docker needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/docker/docker.hash",
    "content": "# Locally calculated\nsha256  47629578e89d96d1541c91d040aec4316f03ad6d01dc3eecb8f82a33445c1e4e  docker-1.5.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\nsha256  fd82a1ac93bfe0a5afcf28cfb5342dd02015555fc23529a87bd77a7b271d3262  README\n"
  },
  {
    "path": "package/docker/docker.mk",
    "content": "################################################################################\n#\n# docker\n#\n################################################################################\n\nDOCKER_VERSION = 1.5\nDOCKER_SITE = http://icculus.org/openbox/2/docker\nDOCKER_DEPENDENCIES = host-pkgconf libglib2 xlib_libX11\n\nDOCKER_LICENSE = GPL-2.0+\n# The 'or later' is specified at the end of the README, so include that one too.\nDOCKER_LICENSE_FILES = COPYING README\n\ndefine DOCKER_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tXLIBPATH=$(STAGING_DIR)/usr/lib\nendef\n\ndefine DOCKER_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tXLIBPATH=$(STAGING_DIR)/usr/lib PREFIX=$(TARGET_DIR)/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/docker-cli/Config.in",
    "content": "config BR2_PACKAGE_DOCKER_CLI\n\tbool \"docker-cli\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Docker is a platform to build, ship,\n\t  and run applications as lightweight containers.\n\n\t  https://github.com/docker/cli\n\nif BR2_PACKAGE_DOCKER_CLI\n\nconfig BR2_PACKAGE_DOCKER_CLI_STATIC\n\tbool \"build static client\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Build a static docker client.\n\nendif\n\ncomment \"docker-cli needs a toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/docker-cli/docker-cli.hash",
    "content": "# Locally calculated\nsha256  37bc1c71a782fc10d35aa6708c1b3c90a71f3947c33665cb0de68df25dc14d94  docker-cli-23.0.1.tar.gz\nsha256  2d81ea060825006fc8f3fe28aa5dc0ffeb80faf325b612c955229157b8c10dc0  LICENSE\n"
  },
  {
    "path": "package/docker-cli/docker-cli.mk",
    "content": "################################################################################\n#\n# docker-cli\n#\n################################################################################\n\nDOCKER_CLI_VERSION = 23.0.1\nDOCKER_CLI_SITE = $(call github,docker,cli,v$(DOCKER_CLI_VERSION))\n\nDOCKER_CLI_LICENSE = Apache-2.0\nDOCKER_CLI_LICENSE_FILES = LICENSE\n\nDOCKER_CLI_DEPENDENCIES = host-pkgconf\n\nDOCKER_CLI_CPE_ID_VENDOR = docker\nDOCKER_CLI_CPE_ID_PRODUCT = docker\n\nDOCKER_CLI_TAGS = autogen\nDOCKER_CLI_BUILD_TARGETS = cmd/docker\nDOCKER_CLI_GOMOD = github.com/docker/cli\n\nDOCKER_CLI_LDFLAGS = \\\n\t-X $(DOCKER_CLI_GOMOD)/cli/version.GitCommit=$(DOCKER_CLI_VERSION) \\\n\t-X $(DOCKER_CLI_GOMOD)/cli/version.Version=$(DOCKER_CLI_VERSION)\n\nifeq ($(BR2_PACKAGE_DOCKER_CLI_STATIC),y)\nDOCKER_CLI_LDFLAGS += -extldflags '-static'\nDOCKER_CLI_TAGS += osusergo netgo\nDOCKER_CLI_GO_ENV = CGO_ENABLED=no\nendif\n\n# create the go.mod file with language version go1.19\n# remove the conflicting vendor/modules.txt\n# https://github.com/moby/moby/issues/44618#issuecomment-1343565705\ndefine DOCKER_CLI_FIX_VENDORING\n\tprintf \"module $(DOCKER_CLI_GOMOD)\\n\\ngo 1.19\\n\" > $(@D)/go.mod\n\trm -f $(@D)/vendor/modules.txt\nendef\nDOCKER_CLI_POST_EXTRACT_HOOKS += DOCKER_CLI_FIX_VENDORING\n\nDOCKER_CLI_INSTALL_BINS = $(notdir $(DOCKER_CLI_BUILD_TARGETS))\n\n$(eval $(golang-package))\n"
  },
  {
    "path": "package/docker-compose/Config.in",
    "content": "config BR2_PACKAGE_DOCKER_COMPOSE\n\tbool \"docker-compose\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_DOCKER_CLI\n\thelp\n\t  Multi-container applications with the Docker CLI.\n\n\t  https://github.com/docker/compose\n\ncomment \"docker-compose needs docker-cli and a toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_DOCKER_CLI\n"
  },
  {
    "path": "package/docker-compose/docker-compose.hash",
    "content": "# Locally computed\nsha256  105328838a48dad4a305903c5ae98b928e8a4ea3546e1711690e9eef7e0232be  docker-compose-2.26.1.tar.gz\nsha256  58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd  LICENSE\n"
  },
  {
    "path": "package/docker-compose/docker-compose.mk",
    "content": "################################################################################\n#\n# docker-compose\n#\n################################################################################\n\nDOCKER_COMPOSE_VERSION = 2.26.1\nDOCKER_COMPOSE_SITE = $(call github,docker,compose,v$(DOCKER_COMPOSE_VERSION))\nDOCKER_COMPOSE_LICENSE = Apache-2.0\nDOCKER_COMPOSE_LICENSE_FILES = LICENSE\n\nDOCKER_COMPOSE_BUILD_TARGETS = cmd\nDOCKER_COMPOSE_GOMOD = github.com/docker/compose/v2\nDOCKER_COMPOSE_LDFLAGS = \\\n\t-X github.com/docker/compose/v2/internal.Version=$(DOCKER_COMPOSE_VERSION)\n\ndefine DOCKER_COMPOSE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/bin/cmd \\\n\t\t$(TARGET_DIR)/usr/lib/docker/cli-plugins/docker-compose\nendef\n\n$(eval $(golang-package))\n"
  },
  {
    "path": "package/docker-engine/Config.in",
    "content": "config BR2_PACKAGE_DOCKER_ENGINE\n\tbool \"docker-engine\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_TOOLCHAIN_USES_UCLIBC # containerd -> runc\n\tdepends on BR2_USE_MMU # containerd\n\tdepends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # libseccomp\n\tselect BR2_PACKAGE_CGROUPFS_MOUNT if !BR2_PACKAGE_SYSTEMD # runtime dependency\n\tselect BR2_PACKAGE_CONTAINERD # runtime dependency\n\tselect BR2_PACKAGE_DOCKER_PROXY # runtime dependency\n\tselect BR2_PACKAGE_IPTABLES # runtime dependency\n\tselect BR2_PACKAGE_LIBSECCOMP\n\thelp\n\t  Docker is a platform to build, ship,\n\t  and run applications as lightweight containers.\n\n\t  https://github.com/docker/docker\n\nif BR2_PACKAGE_DOCKER_ENGINE\n\nconfig BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL\n\tbool \"build experimental features\"\n\nconfig BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS\n\tbool \"btrfs filesystem driver\"\n\tdepends on BR2_USE_MMU # btrfs-progs\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # btrfs-progs\n\tselect BR2_PACKAGE_BTRFS_PROGS\n\thelp\n\t  Build the btrfs filesystem driver for Docker.\n\nconfig BR2_PACKAGE_DOCKER_ENGINE_DRIVER_DEVICEMAPPER\n\tbool \"devicemapper filesystem driver\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # lvm2\n\tdepends on BR2_USE_MMU # lvm2\n\tdepends on !BR2_STATIC_LIBS # lvm2\n\tselect BR2_PACKAGE_LVM2\n\thelp\n\t  Build the devicemapper filesystem driver for Docker.\n\nconfig BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS\n\tbool \"vfs filesystem driver\"\n\tdepends on BR2_USE_WCHAR # gvfs\n\tdepends on BR2_USE_MMU # gvfs\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # gvfs\n\tdepends on !BR2_STATIC_LIBS # gvfs\n\tselect BR2_PACKAGE_GVFS\n\thelp\n\t  Build the vfs filesystem driver for Docker.\n\nendif\n\ncomment \"docker-engine needs a glibc or musl toolchain w/ threads, headers >= 3.17\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_TOOLCHAIN_USES_UCLIBC || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/docker-engine/S60dockerd",
    "content": "#!/bin/sh\n\nNAME=dockerd\nDAEMON=/usr/bin/$NAME\nPIDFILE=/var/run/$NAME.pid\nDAEMON_ARGS=\"\"\n\n[ -r /etc/default/$NAME ] && . /etc/default/$NAME $1\n\ndo_start() {\n        echo -n \"Starting $NAME: \"\n        start-stop-daemon --start --quiet --background --make-pidfile \\\n\t\t--pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS \\\n                && echo \"OK\" || echo \"FAIL\"\n}\n\ndo_stop() {\n        echo -n \"Stopping $NAME: \"\n        start-stop-daemon --stop --quiet --pidfile $PIDFILE \\\n                && echo \"OK\" || echo \"FAIL\"\n}\n\ncase \"$1\" in\n        start)\n                do_start\n                ;;\n        stop)\n                do_stop\n                ;;\n        restart)\n                do_stop\n                sleep 1\n                do_start\n                ;;\n\t*)\n                echo \"Usage: $0 {start|stop|restart}\"\n                exit 1\nesac\n"
  },
  {
    "path": "package/docker-engine/docker-engine.hash",
    "content": "# Locally calculated\nsha256  f502eba135828ae52cefb12f1c74092c8865e39cb94f5daed0f3f6717a8d50a3  docker-engine-23.0.5.tar.gz\nsha256  7c87873291f289713ac5df48b1f2010eb6963752bbd6b530416ab99fc37914a8  LICENSE\n"
  },
  {
    "path": "package/docker-engine/docker-engine.mk",
    "content": "################################################################################\n#\n# docker-engine\n#\n################################################################################\n\nDOCKER_ENGINE_VERSION = 23.0.5\nDOCKER_ENGINE_SITE = $(call github,moby,moby,v$(DOCKER_ENGINE_VERSION))\n\nDOCKER_ENGINE_LICENSE = Apache-2.0\nDOCKER_ENGINE_LICENSE_FILES = LICENSE\n\nDOCKER_ENGINE_DEPENDENCIES = host-pkgconf libseccomp\nDOCKER_ENGINE_GOMOD = github.com/docker/docker\n\nDOCKER_ENGINE_CPE_ID_VENDOR = docker\nDOCKER_ENGINE_CPE_ID_PRODUCT = docker\n\nDOCKER_ENGINE_LDFLAGS = \\\n\t-X $(DOCKER_ENGINE_GOMOD)/dockerversion.BuildTime=\"\" \\\n\t-X $(DOCKER_ENGINE_GOMOD)/dockerversion.GitCommit=\"buildroot\" \\\n\t-X $(DOCKER_ENGINE_GOMOD)/dockerversion.IAmStatic=\"false\" \\\n\t-X $(DOCKER_ENGINE_GOMOD)/dockerversion.InitCommitID=\"\" \\\n\t-X $(DOCKER_ENGINE_GOMOD)/dockerversion.Version=\"$(DOCKER_ENGINE_VERSION)\"\n\nDOCKER_ENGINE_TAGS = cgo exclude_graphdriver_zfs\nDOCKER_ENGINE_BUILD_TARGETS = cmd/dockerd\n\nifeq ($(BR2_PACKAGE_LIBAPPARMOR),y)\nDOCKER_ENGINE_DEPENDENCIES += libapparmor\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nDOCKER_ENGINE_DEPENDENCIES += systemd\nDOCKER_ENGINE_TAGS += systemd journald\nendif\nifeq ($(BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL),y)\nDOCKER_ENGINE_TAGS += experimental\nendif\n\nifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS),y)\nDOCKER_ENGINE_DEPENDENCIES += btrfs-progs\nelse\nDOCKER_ENGINE_TAGS += exclude_graphdriver_btrfs\nendif\n\nifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_DEVICEMAPPER),y)\nDOCKER_ENGINE_DEPENDENCIES += lvm2\nelse\nDOCKER_ENGINE_TAGS += exclude_graphdriver_devicemapper\nendif\n\nifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS),y)\nDOCKER_ENGINE_DEPENDENCIES += gvfs\nelse\nDOCKER_ENGINE_TAGS += exclude_graphdriver_vfs\nendif\n\n# create the go.mod file with language version go1.19\n# remove the conflicting vendor/modules.txt\n# https://github.com/moby/moby/issues/44618#issuecomment-1343565705\ndefine DOCKER_ENGINE_FIX_VENDORING\n\tprintf \"module $(DOCKER_ENGINE_GOMOD)\\n\\ngo 1.19\\n\" > $(@D)/go.mod\n\trm -f $(@D)/vendor/modules.txt\nendef\nDOCKER_ENGINE_POST_EXTRACT_HOOKS += DOCKER_ENGINE_FIX_VENDORING\n\nDOCKER_ENGINE_INSTALL_BINS = $(notdir $(DOCKER_ENGINE_BUILD_TARGETS))\n\ndefine DOCKER_ENGINE_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 $(@D)/contrib/init/systemd/docker.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/docker.service\n\t$(INSTALL) -D -m 0644 $(@D)/contrib/init/systemd/docker.socket \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/docker.socket\nendef\n\ndefine DOCKER_ENGINE_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/docker-engine/S60dockerd \\\n\t\t$(TARGET_DIR)/etc/init.d/S60dockerd\nendef\n\ndefine DOCKER_ENGINE_USERS\n\t- - docker -1 * - - - Docker Application Container Framework\nendef\n\nifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS),y)\ndefine DOCKER_ENGINE_DRIVER_BTRFS_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_BTRFS_FS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_BTRFS_FS_POSIX_ACL)\nendef\nendif\n\nifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_DEVICEMAPPER),y)\ndefine DOCKER_ENGINE_DRIVER_DM_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_MD)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_BLK_DEV_DM)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_MD_THIN_PROVISIONING)\nendef\nendif\n\n# based on contrib/check-config.sh\ndefine DOCKER_ENGINE_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_POSIX_MQUEUE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_MEMCG)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_SCHED)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_FREEZER)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CPUSETS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_DEVICE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUP_CPUACCT)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NAMESPACES)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_UTS_NS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IPC_NS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_PID_NS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NET_NS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_ADVANCED)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_BRIDGE_NETFILTER)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XTABLES)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_ADDRTYPE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_CONNTRACK)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XT_MATCH_IPVS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_NAT)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_TARGET_MASQUERADE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_BRIDGE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NET_CORE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_VETH)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_OVERLAY_FS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_KEYS)\n\t$(DOCKER_ENGINE_DRIVER_BTRFS_LINUX_CONFIG_FIXUPS)\n\t$(DOCKER_ENGINE_DRIVER_DM_LINUX_CONFIG_FIXUPS)\nendef\n\n$(eval $(golang-package))\n"
  },
  {
    "path": "package/docker-proxy/Config.in",
    "content": "config BR2_PACKAGE_DOCKER_PROXY\n\tbool \"docker-proxy\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Libnetwork is a Container Network Model that provides a\n\t  consistent programming interface and the required network\n\t  abstractions for applications.\n\n\t  This package provides docker-proxy, a run-time dependency of\n\t  Docker.\n\n\t  https://github.com/docker/libnetwork\n\ncomment \"docker-proxy needs a toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/docker-proxy/docker-proxy.hash",
    "content": "# Locally calculated\nsha256\t866c8d196b9396a383b437b0d775476459ed7c11f527c4f6bbf1fd08524b461d\tdocker-proxy-55685ba49593e67f5e1c8180539379b16736c25e.tar.gz\nsha256  cb5e8e7e5f4a3988e1063c142c60dc2df75605f4c46515e776e3aca6df976e14\tLICENSE\n"
  },
  {
    "path": "package/docker-proxy/docker-proxy.mk",
    "content": "################################################################################\n#\n# docker-proxy\n#\n################################################################################\n\nDOCKER_PROXY_VERSION = 55685ba49593e67f5e1c8180539379b16736c25e\nDOCKER_PROXY_SITE = $(call github,docker,libnetwork,$(DOCKER_PROXY_VERSION))\n\nDOCKER_PROXY_LICENSE = Apache-2.0\nDOCKER_PROXY_LICENSE_FILES = LICENSE\n\nDOCKER_PROXY_DEPENDENCIES = host-pkgconf\n\nDOCKER_PROXY_BUILD_TARGETS = cmd/proxy\n\ndefine DOCKER_PROXY_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/bin/proxy $(TARGET_DIR)/usr/bin/docker-proxy\nendef\n\n$(eval $(golang-package))\n"
  },
  {
    "path": "package/domoticz/Config.in",
    "content": "config BR2_PACKAGE_DOMOTICZ\n\tbool \"domoticz\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_6 # C++14\n\t# pthread_condattr_setclock\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # mosquitto\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_LUA_5_3\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_ATOMIC\n\tselect BR2_PACKAGE_BOOST_DATE_TIME\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_THREAD\n\tselect BR2_PACKAGE_CEREAL\n\tselect BR2_PACKAGE_FMT\n\tselect BR2_PACKAGE_JSONCPP\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_MOSQUITTO\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Domoticz is a Home Automation System that lets you monitor\n\t  and configure various devices like: Lights, Switches,\n\t  various sensors/meters like Temperature, Rain, Wind, UV,\n\t  Electra, Gas, Water and much more. Notifications/Alerts can\n\t  be sent to any mobile device.\n\n\t  http://domoticz.com\n\ncomment \"domoticz needs lua 5.3 and a toolchain w/ C++, gcc >= 6, NPTL, wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_6 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\t!BR2_USE_WCHAR || BR2_STATIC_LIBS || \\\n\t\t!BR2_PACKAGE_LUA_5_3\n\ncomment \"domoticz needs exception_ptr\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/domoticz/S99domoticz",
    "content": "#!/bin/sh\n\nDAEMON=\"domoticz\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nDOMOTICZ_ARGS=\"-daemon -www 8080 -sslwww 443\"\n\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\tstart-stop-daemon -b -m -S -q -p \"$PIDFILE\" -x \"/opt/domoticz/$DAEMON\" \\\n\t\t-- $DOMOTICZ_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/domoticz/domoticz.hash",
    "content": "# Locally computed:\nsha256  d8e99e0f96873aa105b57f73656ef7a14c89e0acf2649b2d4ef1167b14bab4b2  domoticz-2021.1-br1.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  License.txt\n"
  },
  {
    "path": "package/domoticz/domoticz.mk",
    "content": "################################################################################\n#\n# domoticz\n#\n################################################################################\n\nDOMOTICZ_VERSION = 2021.1\nDOMOTICZ_SITE = https://github.com/domoticz/domoticz\nDOMOTICZ_SITE_METHOD = git\nDOMOTICZ_GIT_SUBMODULES = YES\nDOMOTICZ_LICENSE = GPL-3.0\nDOMOTICZ_LICENSE_FILES = License.txt\nDOMOTICZ_CPE_ID_VENDOR = domoticz\nDOMOTICZ_DEPENDENCIES = \\\n\tboost \\\n\tcereal \\\n\tfmt \\\n\thost-pkgconf \\\n\tjsoncpp \\\n\tlibcurl \\\n\tlua \\\n\tmosquitto \\\n\topenssl \\\n\tsqlite \\\n\tzlib\n\n# Disable precompiled header as it needs cmake >= 3.16\nDOMOTICZ_CONF_OPTS = -DUSE_PRECOMPILED_HEADER=OFF\n\n# Due to the dependency on mosquitto, domoticz depends on\n# !BR2_STATIC_LIBS so set USE_STATIC_BOOST and USE_OPENSSL_STATIC to OFF\nDOMOTICZ_CONF_OPTS += \\\n\t-DUSE_STATIC_BOOST=OFF \\\n\t-DUSE_OPENSSL_STATIC=OFF\n\n# Do not use any built-in libraries which are enabled by default for\n# jsoncpp, fmt, sqlite and mqtt\nDOMOTICZ_CONF_OPTS += \\\n\t-DUSE_BUILTIN_JSONCPP=OFF \\\n\t-DUSE_BUILTIN_LIBFMT=OFF \\\n\t-DUSE_BUILTIN_SQLITE=OFF \\\n\t-DUSE_BUILTIN_MQTT=OFF\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nDOMOTICZ_DEPENDENCIES += libusb\nDOMOTICZ_CONF_OPTS += -DWITH_LIBUSB=ON\nelse\nDOMOTICZ_CONF_OPTS += -DWITH_LIBUSB=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENZWAVE),y)\nDOMOTICZ_DEPENDENCIES += openzwave\n\n# Due to the dependency on mosquitto, domoticz depends on\n# !BR2_STATIC_LIBS so set USE_STATIC_OPENZWAVE to OFF otherwise\n# domoticz will not find the openzwave library as it searches by\n# default a static library.\nDOMOTICZ_CONF_OPTS += -DUSE_STATIC_OPENZWAVE=OFF\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nDOMOTICZ_DEPENDENCIES += python3\nDOMOTICZ_CONF_OPTS += -DUSE_PYTHON=ON\nelse\nDOMOTICZ_CONF_OPTS += -DUSE_PYTHON=OFF\nendif\n\n# Install domoticz in a dedicated directory (/opt/domoticz) as\n# domoticz expects by default that all its subdirectories (www,\n# Config, scripts, ...) are in the binary directory.\nDOMOTICZ_TARGET_DIR = /opt/domoticz\nDOMOTICZ_CONF_OPTS += -DCMAKE_INSTALL_PREFIX=$(DOMOTICZ_TARGET_DIR)\n\n# Delete License.txt and updatedomo files installed by domoticz in target\n# directory\n# Do not delete History.txt as it is used in source code\ndefine DOMOTICZ_REMOVE_UNNEEDED_FILES\n\t$(RM) $(TARGET_DIR)/$(DOMOTICZ_TARGET_DIR)/License.txt\n\t$(RM) $(TARGET_DIR)/$(DOMOTICZ_TARGET_DIR)/updatedomo\nendef\n\nDOMOTICZ_POST_INSTALL_TARGET_HOOKS += DOMOTICZ_REMOVE_UNNEEDED_FILES\n\n# Use dedicated init scripts for systemV and systemd instead of using\n# domoticz.sh as it is not compatible with buildroot init system\ndefine DOMOTICZ_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/domoticz/S99domoticz \\\n\t\t$(TARGET_DIR)/etc/init.d/S99domoticz\nendef\n\ndefine DOMOTICZ_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/domoticz/domoticz.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/domoticz.service\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/domoticz/domoticz.service",
    "content": "[Unit]\nDescription=Domoticz Home Automation System\nAfter=network.target\n\n[Service]\nExecStart=/opt/domoticz/domoticz -daemon -www 8080 -sslwww 443\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/doom-wad/Config.in",
    "content": "config BR2_PACKAGE_DOOM_WAD\n\tbool \"shareware Doom WAD file\"\n\tdepends on BR2_PACKAGE_CHOCOLATE_DOOM || BR2_PACKAGE_PRBOOM\n\thelp\n\t  This will install the shareware wad data file for the doom\n\t  game.\n\n\t  The wad file will be placed in the /usr/share/games/doom\n\t  directory.\n\n\t  https://doomwiki.org/wiki/DOOM1.WAD\n"
  },
  {
    "path": "package/doom-wad/doom-wad.hash",
    "content": "# Locally computed\nsha256\tcacf0142b31ca1af00796b4a0339e07992ac5f21bc3f81e7532fe1b5e1b486e6\tdoom19s.zip\n"
  },
  {
    "path": "package/doom-wad/doom-wad.mk",
    "content": "################################################################################\n#\n# doom-wad\n#\n################################################################################\n\nDOOM_WAD_VERSION = 1.9\nDOOM_WAD_SOURCE = doom$(subst .,,$(DOOM_WAD_VERSION))s.zip\n# Official server currently unavailable\n# DOOM_WAD_SITE = ftp://ftp.idsoftware.com/idstuff/doom\nDOOM_WAD_SITE = http://www.jbserver.com/downloads/games/doom/misc/shareware\n\ndefine DOOM_WAD_EXTRACT_CMDS\n\t$(UNZIP) -p $(DOOM_WAD_DL_DIR)/$($(PKG)_SOURCE) 'DOOMS_19.[12]' > \\\n\t\t$(@D)/doom-$(DOOM_WAD_VERSION).zip\n\t$(UNZIP) -d $(@D) $(@D)/doom-$(DOOM_WAD_VERSION).zip DOOM1.WAD\nendef\n\ndefine DOOM_WAD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/DOOM1.WAD \\\n\t\t$(TARGET_DIR)/usr/share/games/doom/doom1.wad\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dos2unix/Config.in",
    "content": "config BR2_PACKAGE_DOS2UNIX\n\tbool \"dos2unix\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  dos2unix converts text file line endings between CRLF and LF\n\n\t  http://waterlan.home.xs4all.nl/dos2unix.html\n"
  },
  {
    "path": "package/dos2unix/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_DOS2UNIX\n\tbool \"host dos2unix\"\n\thelp\n\t  dos2unix converts text file line endings between CRLF and LF\n\n\t  http://waterlan.home.xs4all.nl/dos2unix.html\n"
  },
  {
    "path": "package/dos2unix/dos2unix.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://waterlan.home.xs4all.nl/dos2unix/dos2unix-7.4.2.tar.gz.asc\nsha256\t6035c58df6ea2832e868b599dfa0d60ad41ca3ecc8aa27822c4b7a9789d3ae01  dos2unix-7.4.2.tar.gz\nsha256\tdb8888b7d1454348aca0c6ca851327245ef60e57afa8a6555761c8b95d24af77  COPYING.txt\n"
  },
  {
    "path": "package/dos2unix/dos2unix.mk",
    "content": "################################################################################\n#\n# dos2unix\n#\n################################################################################\n\nDOS2UNIX_VERSION = 7.4.2\nDOS2UNIX_SITE = http://waterlan.home.xs4all.nl/dos2unix\nDOS2UNIX_LICENSE = BSD-2-Clause\nDOS2UNIX_LICENSE_FILES = COPYING.txt\nDOS2UNIX_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nDOS2UNIX_MAKE_OPTS += ENABLE_NLS=1\nDOS2UNIX_MAKE_OPTS += LIBS_EXTRA=$(TARGET_NLS_LIBS)\nelse\n# Should be defined to empty to disable NLS support\nDOS2UNIX_MAKE_OPTS += ENABLE_NLS=\nendif\n\nifeq ($(BR2_USE_WCHAR),)\nDOS2UNIX_MAKE_OPTS += UCS=\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nDOS2UNIX_MAKE_OPTS += LDFLAGS_USER=-static\nendif\n\ndefine DOS2UNIX_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(DOS2UNIX_MAKE_OPTS)\nendef\n\ndefine DOS2UNIX_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \\\n\t\t$(DOS2UNIX_MAKE_OPTS) install\nendef\n\ndefine HOST_DOS2UNIX_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) ENABLE_NLS=\nendef\n\ndefine HOST_DOS2UNIX_INSTALL_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) prefix=$(HOST_DIR) ENABLE_NLS= \\\n\t\tinstall\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/dosfstools/Config.in",
    "content": "config BR2_PACKAGE_DOSFSTOOLS\n\tbool \"dosfstools\"\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Tools for creating and checking DOS FAT filesystems.\n\n\t  https://github.com/dosfstools/dosfstools\n\nif BR2_PACKAGE_DOSFSTOOLS\n\nconfig BR2_PACKAGE_DOSFSTOOLS_FATLABEL\n\tbool \"fatlabel\"\n\thelp\n\t  Get or set the DOS FAT filesystem label.\n\nconfig BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT\n\tbool \"fsck.fat\"\n\thelp\n\t  Check a DOS FAT filesystem.\n\nconfig BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT\n\tbool \"mkfs.fat\"\n\thelp\n\t  Creates a DOS FAT filesystem on a device.\n\nendif\n\ncomment \"dosfstools needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/dosfstools/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_DOSFSTOOLS\n\tbool \"host dosfstools\"\n\thelp\n\t  Tools for creating and checking DOS FAT filesystems.\n\n\t  https://github.com/dosfstools/dosfstools\n"
  },
  {
    "path": "package/dosfstools/dosfstools.hash",
    "content": "# Locally calculated after checking pgp signature from\n# https://github.com/dosfstools/dosfstools/releases/download/v4.2/dosfstools-4.2.tar.gz.sig\nsha256  64926eebf90092dca21b14259a5301b7b98e7b1943e8a201c7d726084809b527  dosfstools-4.2.tar.gz\n\n# Locally calculated\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/dosfstools/dosfstools.mk",
    "content": "################################################################################\n#\n# dosfstools\n#\n################################################################################\n\nDOSFSTOOLS_VERSION = 4.2\nDOSFSTOOLS_SITE = https://github.com/dosfstools/dosfstools/releases/download/v$(DOSFSTOOLS_VERSION)\nDOSFSTOOLS_LICENSE = GPL-3.0+\nDOSFSTOOLS_LICENSE_FILES = COPYING\nDOSFSTOOLS_CPE_ID_VENDOR = dosfstools_project\nDOSFSTOOLS_CONF_OPTS = --enable-compat-symlinks --exec-prefix=/\nHOST_DOSFSTOOLS_CONF_OPTS = --enable-compat-symlinks\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nDOSFSTOOLS_CONF_OPTS += --with-udev\nDOSFSTOOLS_DEPENDENCIES += udev\nelse\nDOSFSTOOLS_CONF_OPTS += --without-udev\nendif\n\nifneq ($(BR2_ENABLE_LOCALE),y)\nDOSFSTOOLS_CONF_OPTS += LIBS=\"-liconv\"\nDOSFSTOOLS_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_PACKAGE_DOSFSTOOLS_FATLABEL),y)\ndefine DOSFSTOOLS_INSTALL_FATLABEL\n\t$(INSTALL) -D -m 0755 $(@D)/src/fatlabel $(TARGET_DIR)/sbin/fatlabel\n\tln -sf fatlabel $(TARGET_DIR)/sbin/dosfslabel\nendef\nendif\n\nifeq ($(BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT),y)\ndefine DOSFSTOOLS_INSTALL_FSCK_FAT\n\t$(INSTALL) -D -m 0755 $(@D)/src/fsck.fat $(TARGET_DIR)/sbin/fsck.fat\n\tln -sf fsck.fat $(TARGET_DIR)/sbin/fsck.vfat\n\tln -sf fsck.fat $(TARGET_DIR)/sbin/fsck.msdos\n\tln -sf fsck.fat $(TARGET_DIR)/sbin/dosfsck\nendef\nendif\n\nifeq ($(BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT),y)\ndefine DOSFSTOOLS_INSTALL_MKFS_FAT\n\t$(INSTALL) -D -m 0755 $(@D)/src/mkfs.fat $(TARGET_DIR)/sbin/mkfs.fat\n\tln -sf mkfs.fat $(TARGET_DIR)/sbin/mkdosfs\n\tln -sf mkfs.fat $(TARGET_DIR)/sbin/mkfs.msdos\n\tln -sf mkfs.fat $(TARGET_DIR)/sbin/mkfs.vfat\nendef\nendif\n\ndefine DOSFSTOOLS_INSTALL_TARGET_CMDS\n\t$(call DOSFSTOOLS_INSTALL_FATLABEL)\n\t$(call DOSFSTOOLS_INSTALL_FSCK_FAT)\n\t$(call DOSFSTOOLS_INSTALL_MKFS_FAT)\nendef\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/dovecot/Config.in",
    "content": "config BR2_PACKAGE_DOVECOT\n\tbool \"dovecot\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Dovecot is an open source IMAP and POP3 email server for\n\t  Linux/UNIX- like systems, written with security primarily in\n\t  mind. Dovecot is an excellent choice for both small and large\n\t  installations. It's fast, simple to set up, requires no\n\t  special administration and it uses very little memory.\n\n\t  http://www.dovecot.org\n\nif BR2_PACKAGE_DOVECOT\n\nconfig BR2_PACKAGE_DOVECOT_MYSQL\n\tbool \"mysql support\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # mysql\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # mysql\n\tselect BR2_PACKAGE_MYSQL\n\thelp\n\t  Enable MySQL support.\n\ncomment \"mysql support needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_DOVECOT_SQLITE\n\tbool \"sqlite support\"\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  Enable SQLite support.\n\nsource package/dovecot-pigeonhole/Config.in\n\nendif # BR2_PACKAGE_DOVECOT\n\ncomment \"dovecot needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/dovecot/dovecot.hash",
    "content": "# Locally computed after checking signature\nsha256  03a71d53055bd9ec528d55e07afaf15c09dec9856cba734904bfd05acbc6cf12  dovecot-2.3.16.tar.gz\nsha256  319a9830aab406109cd67cb45496587566a8123203d66d037b209ca3e13de02a  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LGPL\nsha256  52b8c95fabb19575281874b661ef7968ea47e8f5d74ba0dd40ce512e52b3fc97  COPYING.MIT\n"
  },
  {
    "path": "package/dovecot/dovecot.mk",
    "content": "################################################################################\n#\n# dovecot\n#\n################################################################################\n\nDOVECOT_VERSION_MAJOR = 2.3\nDOVECOT_VERSION = $(DOVECOT_VERSION_MAJOR).16\nDOVECOT_SITE = https://dovecot.org/releases/$(DOVECOT_VERSION_MAJOR)\nDOVECOT_INSTALL_STAGING = YES\nDOVECOT_LICENSE = LGPL-2.1, MIT, Public Domain, BSD-3-Clause, Unicode-DFS-2015\nDOVECOT_LICENSE_FILES = COPYING COPYING.LGPL COPYING.MIT\nDOVECOT_CPE_ID_VENDOR = dovecot\nDOVECOT_SELINUX_MODULES = dovecot\nDOVECOT_DEPENDENCIES = \\\n\thost-pkgconf \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv) \\\n\topenssl\n\n# CVE-2016-4983 is an issue in a postinstall script in the dovecot rpm, which\n# is part of the Red Hat packaging and not part of upstream dovecot\nDOVECOT_IGNORE_CVES += CVE-2016-4983\n\nDOVECOT_CONF_ENV = \\\n\tRPCGEN=__disable_RPCGEN_rquota \\\n\ti_cv_epoll_works=yes \\\n\ti_cv_inotify_works=yes \\\n\ti_cv_posix_fallocate_works=no \\\n\ti_cv_signed_size_t=no \\\n\ti_cv_gmtime_max_time_t=32 \\\n\ti_cv_signed_time_t=yes \\\n\ti_cv_mmap_plays_with_write=yes \\\n\ti_cv_fd_passing=yes \\\n\ti_cv_c99_vsnprintf=yes \\\n\tlib_cv_va_copy=yes \\\n\tlib_cv___va_copy=yes \\\n\tlib_cv_va_val_copy=yes\n\nDOVECOT_CONF_OPTS = --without-docs --with-ssl=openssl\n\nifeq ($(BR2_PACKAGE_DOVECOT_MYSQL)$(BR2_PACKAGE_DOVECOT_SQLITE),)\nDOVECOT_CONF_OPTS += --without-sql\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nDOVECOT_CONF_OPTS += --with-bzlib\nDOVECOT_DEPENDENCIES += bzip2\nelse\nDOVECOT_CONF_OPTS += --without-bzlib\nendif\n\nifeq ($(BR2_PACKAGE_ICU),y)\nDOVECOT_CONF_OPTS += --with-icu\nDOVECOT_DEPENDENCIES += icu\nelse\nDOVECOT_CONF_OPTS += --without-icu\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nDOVECOT_CONF_OPTS += --with-libcap\nDOVECOT_DEPENDENCIES += libcap\nelse\nDOVECOT_CONF_OPTS += --without-libcap\nendif\n\nifeq ($(BR2_PACKAGE_LIBSODIUM),y)\nDOVECOT_CONF_OPTS += --with-sodium\nDOVECOT_DEPENDENCIES += libsodium\nelse\nDOVECOT_CONF_OPTS += --without-sodium\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nDOVECOT_CONF_OPTS += --with-pam\nDOVECOT_DEPENDENCIES += linux-pam\nelse\nDOVECOT_CONF_OPTS += --without-pam\nendif\n\nifeq ($(BR2_PACKAGE_DOVECOT_MYSQL),y)\nDOVECOT_CONF_ENV += MYSQL_CONFIG=\"$(STAGING_DIR)/usr/bin/mysql_config\"\nDOVECOT_CONF_OPTS += --with-mysql\nDOVECOT_DEPENDENCIES += mysql\nelse\nDOVECOT_CONF_OPTS += --without-mysql\nendif\n\nifeq ($(BR2_PACKAGE_DOVECOT_SQLITE),y)\nDOVECOT_CONF_OPTS += --with-sqlite\nDOVECOT_DEPENDENCIES += sqlite\nelse\nDOVECOT_CONF_OPTS += --without-sqlite\nendif\n\nifeq ($(BR2_PACKAGE_LZ4),y)\nDOVECOT_CONF_OPTS += --with-lz4\nDOVECOT_DEPENDENCIES += lz4\nelse\nDOVECOT_CONF_OPTS += --without-lz4\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nDOVECOT_CONF_OPTS += --with-lzma\nDOVECOT_DEPENDENCIES += xz\nelse\nDOVECOT_CONF_OPTS += --without-lzma\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nDOVECOT_CONF_OPTS += --with-zlib\nDOVECOT_DEPENDENCIES += zlib\nelse\nDOVECOT_CONF_OPTS += --without-zlib\nendif\n\n# fix paths to avoid using /usr/lib/dovecot\ndefine DOVECOT_POST_CONFIGURE\n\tfor i in $$(find $(@D) -name \"Makefile\"); do \\\n\t\t$(SED) 's%^pkglibdir =.*%pkglibdir = \\$$(libdir)%' $$i; \\\n\t\t$(SED) 's%^pkglibexecdir =.*%pkglibexecdir = \\$$(libexecdir)%' $$i; \\\n\tdone\nendef\n\nDOVECOT_POST_CONFIGURE_HOOKS += DOVECOT_POST_CONFIGURE\n\n# dovecot installs dovecot-config in usr/lib/, therefore\n# DOVECOT_CONFIG_SCRIPTS can not be used to rewrite paths\ndefine DOVECOT_FIX_STAGING_DOVECOT_CONFIG\n\t$(SED) 's,^LIBDOVECOT_INCLUDE=.*$$,LIBDOVECOT_INCLUDE=\\\"-I$(STAGING_DIR)/usr/include/dovecot\\\",' $(STAGING_DIR)/usr/lib/dovecot-config\n\t$(SED) 's,^LIBDOVECOT=.*$$,LIBDOVECOT=\\\"-L$(STAGING_DIR)/usr/lib -ldovecot\\\",' $(STAGING_DIR)/usr/lib/dovecot-config\nendef\n\nDOVECOT_POST_INSTALL_STAGING_HOOKS += DOVECOT_FIX_STAGING_DOVECOT_CONFIG\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dovecot-pigeonhole/Config.in",
    "content": "config BR2_PACKAGE_DOVECOT_PIGEONHOLE\n\tbool \"dovecot-pigeonhole\"\n\thelp\n\t  Pigeonhole is the name of the project that adds support for\n\t  the Sieve language (RFC 5228) and the ManageSieve protocol\n\t  (RFC 5804) to the Dovecot Secure IMAP Server.\n\n\t  http://pigeonhole.dovecot.org\n"
  },
  {
    "path": "package/dovecot-pigeonhole/dovecot-pigeonhole.hash",
    "content": "# Locally computed after checking signature\nsha256  5ca36780e23b99e6206440f1b3fe3c6598eda5b699b99cebb15d418ba3c6e938  dovecot-2.3-pigeonhole-0.5.16.tar.gz\nsha256  fc9e9522216f2a9a28b31300e3c73c1df56acc27dfae951bf516e7995366b51a  COPYING\n"
  },
  {
    "path": "package/dovecot-pigeonhole/dovecot-pigeonhole.mk",
    "content": "################################################################################\n#\n# dovecot-pigeonhole\n#\n################################################################################\n\nDOVECOT_PIGEONHOLE_VERSION = 0.5.16\nDOVECOT_PIGEONHOLE_SOURCE = dovecot-2.3-pigeonhole-$(DOVECOT_PIGEONHOLE_VERSION).tar.gz\nDOVECOT_PIGEONHOLE_SITE = https://pigeonhole.dovecot.org/releases/2.3\nDOVECOT_PIGEONHOLE_LICENSE = LGPL-2.1\nDOVECOT_PIGEONHOLE_LICENSE_FILES = COPYING\nDOVECOT_PIGEONHOLE_CPE_ID_VENDOR = dovecot\nDOVECOT_PIGEONHOLE_CPE_ID_PRODUCT = pigeonhole\nDOVECOT_PIGEONHOLE_DEPENDENCIES = dovecot\n\nDOVECOT_PIGEONHOLE_CONF_OPTS = --with-dovecot=$(STAGING_DIR)/usr/lib\n\nifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)\ndefine DOVECOT_PIGEONHOLE_FIXUP_DOVECOT_CONFIG\n\t$(SED) 's,$(PER_PACKAGE_DIR)/dovecot/,$(PER_PACKAGE_DIR)/dovecot-pigeonhole/,g' \\\n\t\t$(STAGING_DIR)/usr/lib/dovecot-config\nendef\nDOVECOT_PIGEONHOLE_PRE_CONFIGURE_HOOKS = DOVECOT_PIGEONHOLE_FIXUP_DOVECOT_CONFIG\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/doxygen/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_DOXYGEN\n\tbool \"host doxygen\"\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # C++14\n\thelp\n\t  Doxygen is the de facto standard tool for generating\n\t  documentation from annotated C++ sources, but it also\n\t  supports other popular programming languages such as C,\n\t  Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft,\n\t  and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some\n\t  extent D.\n\n\t  http://www.doxygen.nl/\n"
  },
  {
    "path": "package/doxygen/doxygen.hash",
    "content": "# Computed locally\nsha256  18173d9edc46d2d116c1f92a95d683ec76b6b4b45b817ac4f245bb1073d00656  doxygen-1.8.18.src.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/doxygen/doxygen.mk",
    "content": "################################################################################\n#\n# doxygen\n#\n################################################################################\n\nDOXYGEN_VERSION = 1.8.18\nDOXYGEN_SOURCE = doxygen-$(DOXYGEN_VERSION).src.tar.gz\nDOXYGEN_SITE = http://doxygen.nl/files\nDOXYGEN_LICENSE = GPL-2.0\nDOXYGEN_LICENSE_FILES = LICENSE\nDOXYGEN_CPE_ID_VENDOR = doxygen\nHOST_DOXYGEN_DEPENDENCIES = host-flex host-bison\n\nHOST_DOXYGEN_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF\n\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/drbd-utils/Config.in",
    "content": "config BR2_PACKAGE_DRBD_UTILS\n\tbool \"drbd-utils\"\n\tdepends on BR2_USE_MMU # needs fork()\n\thelp\n\t  DRBD utilities to manage the DRBD kernel module.\n\n\t  http://oss.linbit.com/drbd/\n"
  },
  {
    "path": "package/drbd-utils/drbd-utils.hash",
    "content": "# Locally calculated\nsha256  3827bfed6630f8784ec558a8ac3de68175d544876d897c0810ad141a61487cad  drbd-utils-9.19.0.tar.gz\nsha256  1ca3e8f71b7de618968e7ea9fe47822d9e704dc476aef8544033abedec355225  COPYING\n"
  },
  {
    "path": "package/drbd-utils/drbd-utils.mk",
    "content": "################################################################################\n#\n# drbd-utils\n#\n################################################################################\n\nDRBD_UTILS_VERSION = 9.19.0\nDRBD_UTILS_SITE = http://pkg.linbit.com/downloads/drbd/utils\nDRBD_UTILS_LICENSE = GPL-2.0+\nDRBD_UTILS_LICENSE_FILES = COPYING\nDRBD_UTILS_SELINUX_MODULES = drbd\nDRBD_UTILS_DEPENDENCIES = host-flex\n\nDRBD_UTILS_CONF_OPTS = --with-distro=generic --without-manual\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nDRBD_UTILS_CONF_OPTS += --with-initscripttype=systemd\nDRBD_UTILS_DEPENDENCIES += systemd\nelse\nDRBD_UTILS_CONF_OPTS += --with-initscripttype=sysv\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nDRBD_UTILS_CONF_OPTS += --with-udev=yes\nDRBD_UTILS_DEPENDENCIES += udev\nelse\nDRBD_UTILS_CONF_OPTS += --with-udev=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dropbear/Config.in",
    "content": "config BR2_PACKAGE_DROPBEAR\n\tbool \"dropbear\"\n\tselect BR2_PACKAGE_ZLIB if !BR2_PACKAGE_DROPBEAR_SMALL\n\tselect BR2_PACKAGE_LIBTOMCRYPT if !BR2_PACKAGE_DROPBEAR_SMALL\n\thelp\n\t  A small SSH 2 server designed for small memory environments.\n\n\t  Note that dropbear requires a per-device unique host key. The\n\t  key will be generated when dropbear starts, but it is not\n\t  persistent over reboot (if you have a read-only rootfs) or\n\t  upgrade (if you have a read-write rootfs). To make the key\n\t  persistent, replace /etc/dropbear with a symlink to a\n\t  directory on a persistent, writeable filesystem.\n\t  Alternatively, mount a persistent unionfs over your root\n\t  filesystem.\n\n\t  https://matt.ucc.asn.au/dropbear/dropbear.html\n\nif BR2_PACKAGE_DROPBEAR\n\nconfig BR2_PACKAGE_DROPBEAR_CLIENT\n\tbool \"client programs\"\n\tdefault y\n\thelp\n\t  Provides the programs: dbclient, ssh\n\n\t  Note that the following programs are also used server-side\n\t  and are therefore always build regardless this setting:\n\t  dropbear, dropbearkey, dropbearconvert, scp\n\nconfig BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS\n\tbool \"disable reverse DNS lookups\"\n\thelp\n\t  Disable reverse DNS lookups on connection. This can be handy\n\t  on systems without working DNS, as connections otherwise\n\t  stall until DNS times out.\n\nconfig BR2_PACKAGE_DROPBEAR_SMALL\n\tbool \"optimize for size\"\n\tdefault y\n\thelp\n\t  Compile dropbear for the smallest possible binary size.\n\n\t  Tradeoffs are slower hashes and ciphers, and disabling of the\n\t  blowfish cipher and zlib.\n\nconfig BR2_PACKAGE_DROPBEAR_WTMP\n\tbool \"log dropbear access to wtmp\"\n\thelp\n\t  Enable logging of dropbear access to wtmp. Notice that\n\t  Buildroot does not generate wtmp by default.\n\nconfig BR2_PACKAGE_DROPBEAR_LASTLOG\n\tbool \"log dropbear access to lastlog\"\n\thelp\n\t  Enable logging of dropbear access to lastlog. Notice that\n\t  Buildroot does not generate lastlog by default.\n\nconfig BR2_PACKAGE_DROPBEAR_LEGACY_CRYPTO\n\tbool \"enable legacy crypto\"\n\thelp\n\t  Enable legacy and possibly insecure algorithms:\n\t    3DES encryption\n\t    SHA1-96 message integrity\n\t    CBC encryption mode\n\t    DSA public keys\n\t    Diffie-Hellman Group1 key exchange\n\nconfig BR2_PACKAGE_DROPBEAR_LOCALOPTIONS_FILE\n\tstring \"path to custom localoptions.h definitions file\"\n\thelp\n\t  Path to a file whose contents will be appended to Dropbear\n\t  localoptions.h. It can be used to tweak the Dropbear\n\t  configuration.\n\nendif\n"
  },
  {
    "path": "package/dropbear/S50dropbear",
    "content": "#!/bin/sh\n#\n# Starts dropbear sshd.\n#\n\n# Allow a few customizations from a config file\ntest -r /etc/default/dropbear && . /etc/default/dropbear\n\nstart() {\n\tDROPBEAR_ARGS=\"$DROPBEAR_ARGS -R\"\n\n\t# If /etc/dropbear is a symlink to /var/run/dropbear, and\n\t#   - the filesystem is RO (i.e. we can not rm the symlink),\n\t#     create the directory pointed to by the symlink.\n\t#   - the filesystem is RW (i.e. we can rm the symlink),\n\t#     replace the symlink with an actual directory\n\tif [ -L /etc/dropbear \\\n\t     -a \"$(readlink /etc/dropbear)\" = \"/var/run/dropbear\" ]\n\tthen\n\t\tif rm -f /etc/dropbear >/dev/null 2>&1; then\n\t\t\tmkdir -p /etc/dropbear\n\t\telse\n\t\t\techo \"No persistent location to store SSH host keys. New keys will be\"\n\t\t\techo \"generated at each boot. Are you sure this is what you want to do?\"\n\t\t\tmkdir -p \"$(readlink /etc/dropbear)\"\n\t\tfi\n\tfi\n\n\tprintf \"Starting dropbear sshd: \"\n\tumask 077\n\n\tstart-stop-daemon -S -q -p /var/run/dropbear.pid \\\n\t\t--exec /usr/sbin/dropbear -- $DROPBEAR_ARGS\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping dropbear sshd: \"\n\tstart-stop-daemon -K -q -p /var/run/dropbear.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n  \tstart\n\t;;\n  stop)\n  \tstop\n\t;;\n  restart|reload)\n  \trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/dropbear/dropbear.hash",
    "content": "# From https://matt.ucc.asn.au/dropbear/releases/SHA256SUM.asc\nsha256  48235d10b37775dbda59341ac0c4b239b82ad6318c31568b985730c788aac53b  dropbear-2020.81.tar.bz2\n\n# License file, locally computed\nsha256  a99ce657d790b761c132ee7e0de18edb437ae6361e536d991c6a12f36e770445  LICENSE\nsha256  8f196cb13afd271f5e267fd29543fc454596382ad580e7592709492843996ac8  libtomcrypt/LICENSE\nsha256  2fa64b163659f41965c9815882a8296d3d03ff546b76153e11445f9bdecf955a  libtommath/LICENSE\n"
  },
  {
    "path": "package/dropbear/dropbear.mk",
    "content": "################################################################################\n#\n# dropbear\n#\n################################################################################\n\nDROPBEAR_VERSION = 2020.81\nDROPBEAR_SITE = https://matt.ucc.asn.au/dropbear/releases\nDROPBEAR_SOURCE = dropbear-$(DROPBEAR_VERSION).tar.bz2\nDROPBEAR_LICENSE = MIT, BSD-2-Clause, Public domain\nDROPBEAR_LICENSE_FILES = LICENSE\nDROPBEAR_TARGET_BINS = dropbearkey dropbearconvert scp\nDROPBEAR_PROGRAMS = dropbear $(DROPBEAR_TARGET_BINS)\nDROPBEAR_CPE_ID_VENDOR = dropbear_ssh_project\nDROPBEAR_CPE_ID_PRODUCT = dropbear_ssh\n\n# Disable hardening flags added by dropbear configure.ac, and let\n# Buildroot add them when the relevant options are enabled. This\n# prevents dropbear from using SSP support when not available.\nDROPBEAR_CONF_OPTS = --disable-harden\n\nifeq ($(BR2_PACKAGE_DROPBEAR_CLIENT),y)\n# Build dbclient, and create a convenience symlink named ssh\nDROPBEAR_PROGRAMS += dbclient\nDROPBEAR_TARGET_BINS += dbclient ssh\nendif\n\nDROPBEAR_MAKE = \\\n\t$(MAKE) MULTI=1 SCPPROGRESS=1 \\\n\tPROGRAMS=\"$(DROPBEAR_PROGRAMS)\"\n\n# With BR2_SHARED_STATIC_LIBS=y the generic infrastructure adds a\n# --enable-static flags causing dropbear to be built as a static\n# binary. Adding a --disable-static reverts this\nifeq ($(BR2_SHARED_STATIC_LIBS),y)\nDROPBEAR_CONF_OPTS += --disable-static\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\ndefine DROPBEAR_SVR_PAM_AUTH\n\techo '#define DROPBEAR_SVR_PASSWORD_AUTH 0'     >> $(@D)/localoptions.h\n\techo '#define DROPBEAR_SVR_PAM_AUTH 1'          >> $(@D)/localoptions.h\nendef\ndefine DROPBEAR_INSTALL_PAM_CONF\n\t$(INSTALL) -D -m 644 package/dropbear/etc-pam.d-sshd $(TARGET_DIR)/etc/pam.d/sshd\nendef\nDROPBEAR_DEPENDENCIES += linux-pam\nDROPBEAR_CONF_OPTS += --enable-pam\nDROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_SVR_PAM_AUTH\nDROPBEAR_POST_INSTALL_TARGET_HOOKS += DROPBEAR_INSTALL_PAM_CONF\nelse\n# Ensure that dropbear doesn't use crypt() when it's not available\ndefine DROPBEAR_SVR_PASSWORD_AUTH\n\techo '#if !HAVE_CRYPT'                          >> $(@D)/localoptions.h\n\techo '#define DROPBEAR_SVR_PASSWORD_AUTH 0'     >> $(@D)/localoptions.h\n\techo '#endif'                                   >> $(@D)/localoptions.h\nendef\nDROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_SVR_PASSWORD_AUTH\nendif\n\nifeq ($(BR2_PACKAGE_DROPBEAR_LEGACY_CRYPTO),y)\ndefine DROPBEAR_ENABLE_LEGACY_CRYPTO\n\techo '#define DROPBEAR_3DES 1'                  >> $(@D)/localoptions.h\n\techo '#define DROPBEAR_ENABLE_CBC_MODE 1'       >> $(@D)/localoptions.h\n\techo '#define DROPBEAR_SHA1_96_HMAC 1'          >> $(@D)/localoptions.h\nendef\nDROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_ENABLE_LEGACY_CRYPTO\nelse\ndefine DROPBEAR_DISABLE_LEGACY_CRYPTO\n\techo '#define DROPBEAR_DSS 0'                   >> $(@D)/localoptions.h\n\techo '#define DROPBEAR_DH_GROUP1 0'             >> $(@D)/localoptions.h\nendef\nDROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_DISABLE_LEGACY_CRYPTO\nendif\n\nifeq ($(BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS),)\ndefine DROPBEAR_ENABLE_REVERSE_DNS\n\techo '#define DO_HOST_LOOKUP 1'                 >> $(@D)/localoptions.h\nendef\nDROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_ENABLE_REVERSE_DNS\nendif\n\nifeq ($(BR2_PACKAGE_DROPBEAR_SMALL),y)\nDROPBEAR_LICENSE += , Unlicense, WTFPL\nDROPBEAR_LICENSE_FILES += libtommath/LICENSE libtomcrypt/LICENSE\nDROPBEAR_CONF_OPTS += --disable-zlib --enable-bundled-libtom\nelse\ndefine DROPBEAR_BUILD_FEATURED\n\techo '#define DROPBEAR_SMALL_CODE 0'            >> $(@D)/localoptions.h\n\techo '#define DROPBEAR_TWOFISH128 1'            >> $(@D)/localoptions.h\n\techo '#define DROPBEAR_TWOFISH256 1'            >> $(@D)/localoptions.h\nendef\nDROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_BUILD_FEATURED\nDROPBEAR_DEPENDENCIES += zlib libtomcrypt\nDROPBEAR_CONF_OPTS += --disable-bundled-libtom\nendif\n\ndefine DROPBEAR_CUSTOM_PATH\n\techo '#define DEFAULT_PATH $(BR2_SYSTEM_DEFAULT_PATH)' >>$(@D)/localoptions.h\nendef\nDROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_CUSTOM_PATH\n\ndefine DROPBEAR_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/dropbear/dropbear.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/dropbear.service\nendef\n\nifeq ($(BR2_USE_MMU),y)\ndefine DROPBEAR_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/dropbear/S50dropbear \\\n\t\t$(TARGET_DIR)/etc/init.d/S50dropbear\nendef\nelse\ndefine DROPBEAR_DISABLE_STANDALONE\n\techo '#define NON_INETD_MODE 0'                 >> $(@D)/localoptions.h\nendef\nDROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_DISABLE_STANDALONE\nendif\n\nifneq ($(BR2_PACKAGE_DROPBEAR_WTMP),y)\nDROPBEAR_CONF_OPTS += --disable-wtmp\nendif\n\nifneq ($(BR2_PACKAGE_DROPBEAR_LASTLOG),y)\nDROPBEAR_CONF_OPTS += --disable-lastlog\nendif\n\nDROPBEAR_LOCALOPTIONS_FILE = $(call qstrip,$(BR2_PACKAGE_DROPBEAR_LOCALOPTIONS_FILE))\nifneq ($(DROPBEAR_LOCALOPTIONS_FILE),)\ndefine DROPBEAR_APPEND_LOCALOPTIONS_FILE\n\tcat $(DROPBEAR_LOCALOPTIONS_FILE) >> $(@D)/localoptions.h\nendef\nDROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_APPEND_LOCALOPTIONS_FILE\nendif\n\ndefine DROPBEAR_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 $(@D)/dropbearmulti $(TARGET_DIR)/usr/sbin/dropbear\n\tfor f in $(DROPBEAR_TARGET_BINS); do \\\n\t\tln -snf ../sbin/dropbear $(TARGET_DIR)/usr/bin/$$f ; \\\n\tdone\n\tln -snf /var/run/dropbear $(TARGET_DIR)/etc/dropbear\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dropbear/dropbear.service",
    "content": "[Unit]\nDescription=Dropbear SSH daemon\nAfter=syslog.target network.target auditd.service\n\n[Service]\n# If /etc/dropbear is a symlink to /var/run/dropbear, and\n#   - the filesystem is RO (i.e. we can not rm the symlink),\n#     create the directory pointed to by the symlink.\n#   - the filesystem is RW (i.e. we can rm the symlink),\n#     replace the symlink with an actual directory\nExecStartPre=/bin/sh -c '\\\nif [ -L /etc/dropbear \\\n     -a \"$(readlink /etc/dropbear)\" = \"/var/run/dropbear\" ]; then \\\n    if rm -f /etc/dropbear >/dev/null 2>&1; then \\\n        mkdir -p /etc/dropbear; \\\n    else \\\n        echo \"No persistent location to store SSH host keys. New keys will be\"; \\\n        echo \"generated at each boot. Are you sure this is what you want to do?\"; \\\n        mkdir -p \"$(readlink /etc/dropbear)\"; \\\n    fi; \\\nfi'\nEnvironmentFile=-/etc/default/dropbear\nExecStart=/usr/sbin/dropbear -F -R $DROPBEAR_ARGS\nExecReload=/bin/kill -HUP $MAINPID\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/dropbear/etc-pam.d-sshd",
    "content": "#%PAM-1.0\nauth       required     pam_unix.so shadow nodelay\naccount    required     pam_nologin.so\naccount    required     pam_unix.so\npassword   required     pam_unix.so shadow nullok use_authtok\nsession    required     pam_unix.so\nsession    required     pam_limits.so\n"
  },
  {
    "path": "package/dropwatch/Config.in",
    "content": "config BR2_PACKAGE_DROPWATCH\n\tbool \"dropwatch\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tselect BR2_PACKAGE_READLINE\n\tselect BR2_PACKAGE_LIBNL\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  Dropwatch is an interactive utility for monitoring and\n\t  recording packets that are dropped by the kernel\n\n\t  https://github.com/nhorman/dropwatch\n\ncomment \"dropwatch needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/dropwatch/dropwatch.hash",
    "content": "# Locally calculated\nsha256  b748b66a816c1f94531446c0451da5461a4a31b0949244bb867d741c6ac0148b  dropwatch-1.5.3.tar.gz\nsha256  e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING\n"
  },
  {
    "path": "package/dropwatch/dropwatch.mk",
    "content": "################################################################################\n#\n# dropwatch\n#\n################################################################################\n\nDROPWATCH_VERSION = 1.5.3\nDROPWATCH_SITE = $(call github,nhorman,dropwatch,v$(DROPWATCH_VERSION))\nDROPWATCH_DEPENDENCIES = libnl readline libpcap host-pkgconf $(TARGET_NLS_DEPENDENCIES)\nDROPWATCH_LICENSE = GPL-2.0+\nDROPWATCH_LICENSE_FILES = COPYING\n# From git\nDROPWATCH_AUTORECONF = YES\n\nDROPWATCH_CONF_OPTS = --without-bfd\nDROPWATCH_MAKE_OPTS = LIBS=$(TARGET_NLS_LIBS)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dstat/Config.in",
    "content": "config BR2_PACKAGE_DSTAT\n\tbool \"dstat\"\n\tdepends on BR2_USE_WCHAR # python\n\tdepends on BR2_USE_MMU # python\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # python\n\tdepends on !BR2_STATIC_LIBS # python\n\tselect BR2_PACKAGE_PYTHON3 if !BR2_PACKAGE_PYTHON\n\thelp\n\t  Dstat, written in Python, is a versatile replacement for\n\t  vmstat, iostat, netstat and ifstat. Dstat overcomes some of\n\t  their limitations and adds some extra features, more counters\n\t  and flexibility. Dstat is handy for monitoring systems during\n\t  performance tuning tests, benchmarks or troubleshooting.\n\t  Dstat allows you to view all of your system resources in\n\t  real-time, you can e.g. compare disk utilization in\n\t  combination with interrupts from your IDE controller, or\n\t  compare the network bandwidth numbers directly with the disk\n\t  throughput (in the same interval).\n\n\t  Note that to get proper output, your terminal size should be\n\t  known by the termios subsystem. This can be done by running\n\t  the 'resize' utility of busybox.\n\n\t  http://dag.wieers.com/home-made/dstat/\n\ncomment \"dstat needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/dstat/dstat.hash",
    "content": "# Locally computed:\nsha256  4fbd58f3461c86d09a3ab97472aa204de37aa33d31a0493a3e5ed86a2045abea  dstat-0.7.4.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/dstat/dstat.mk",
    "content": "################################################################################\n#\n# dstat\n#\n################################################################################\n\nDSTAT_VERSION = 0.7.4\nDSTAT_SITE = $(call github,dagwieers,dstat,v$(DSTAT_VERSION))\nDSTAT_LICENSE = GPL-2.0\nDSTAT_LICENSE_FILES = COPYING\n\ndefine DSTAT_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dt/0001-adjust-os-symlink.patch",
    "content": "Don't force build-dir-in-build-dir logic, symlink the os-specific SCSI\nsupport file in place.\n\nStatus: not suitable for upstream.\n\nSigned-off-by: Gustavo Zacarias <gustavo.zacarias@free-electrons.com>\n\ndiff -Nura Makefile.linux Makefile.linux\n--- a/Makefile.linux\t2016-01-26 09:10:03.939963780 -0300\n+++ b/Makefile.linux\t2016-01-26 09:10:27.140763863 -0300\n@@ -129,7 +129,7 @@\n \t    echo \"Please specify OS={aix,linux,hpux,solaris,windows}\"; \\\n \t    exit 1; \\\n \tfi; \\\n-\tln -sf ../scsilib-$(OS).c scsilib.c\n+\tln -sf scsilib-$(OS).c scsilib.c\n \n print:;\n \t\t@$(PRINTER) $(PRINTFLAGS) $(ALL_CFILES)\n"
  },
  {
    "path": "package/dt/0002-dt-default-source-define.patch",
    "content": "Patch taken from Fedora:\nhttp://pkgs.fedoraproject.org/cgit/rpms/dt.git/commit/dt-default-source-define.patch?id=a3107b34a3efc6af66a5f892514f233bb66eb6b5\n\n_BSD_SOURCE was deprecated, hence switch to use _DEFAULT_SOURCE as well\nto avoid the build from breaking on newer toolchains.\n\nSigned-off-by: Gustavo Zacarias <gustavo.zacarias@free-electrons.com>\n\ndiff -rupN dt.v18.32.old/common.h dt.v18.32/common.h\n--- dt.v18.32.old/common.h\t2013-03-01 23:52:30.000000000 +0100\n+++ dt.v18.32/common.h\t2014-09-24 17:41:40.777604710 +0200\n@@ -127,7 +127,7 @@ typedef volatile slarge_t\tv_slarge;\n \n #endif /* defined(_WIN64) */\n \n-#elif defined(__GNUC__) && defined(_BSD_SOURCE) || defined(SCO) || defined(__QNXNTO__) || defined(SOLARIS) || defined(HP_UX) || defined(AIX) || defined(_NT_SOURCE) \n+#elif defined(__GNUC__) && defined(_BSD_SOURCE) || defined (_DEFAULT_SOURCE) ||  defined(SCO) || defined(__QNXNTO__) || defined(SOLARIS) || defined(HP_UX) || defined(AIX) || defined(_NT_SOURCE) \n \n #define QuadIsLongLong\n typedef unsigned long long int\tlarge_t;\n"
  },
  {
    "path": "package/dt/Config.in",
    "content": "comment \"dt needs a glibc or uClibc toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_DT\n\tbool \"dt\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# Build fails because of several BSDisms\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  dt is a generic data test program used to verify proper\n\t  operation of peripherals, file systems, device drivers,\n\t  or any data stream supported by the operating system.\n\t  In its' simplest mode of operation, dt writes and then\n\t  verifys its' default data pattern, then displays\n\t  performance statisics and other test parameters\n\t  before exiting. Since verification of data is performed,\n\t  dt can be thought of as a generic diagnostic tool.\n\n\t  http://www.scsifaq.org/RMiller_Tools/dt.html\n"
  },
  {
    "path": "package/dt/dt.hash",
    "content": "# From http://pkgs.fedoraproject.org/repo/pkgs/dt/dt-source-v18.32.tar.gz\n# (directory name is md5 hash)\nmd5\t3054aeaaba047a1dbe90c2132a382ee2\tdt-source-v18.32.tar.gz\n\n# Locally calculated\nsha256\t10d164676e918a4d07f233bcd11e4cb6bfd1052c996182cd1827ccd0c063fcc6\tdt-source-v18.32.tar.gz\nsha256  49f47f20de4b44dc3505ed0cc55bfbfe0fc3e41956ab546f1eeedcf554def54c\tLICENSE\n"
  },
  {
    "path": "package/dt/dt.mk",
    "content": "################################################################################\n#\n# dt\n#\n################################################################################\n\nDT_VERSION = 18.32\nDT_SITE = http://pkgs.fedoraproject.org/repo/pkgs/dt/$(DT_SOURCE)/3054aeaaba047a1dbe90c2132a382ee2\nDT_SOURCE = dt-source-v$(DT_VERSION).tar.gz\nDT_STRIP_COMPONENTS = 2\nDT_LICENSE = ISC-like\nDT_LICENSE_FILES = LICENSE\n\nDT_CFLAGS = \\\n\t-std=c99 \\\n\t-DMMAP \\\n\t-D__linux__ \\\n\t-D_GNU_SOURCE \\\n\t-D_FILE_OFFSET_BITS=64 \\\n\t-DTHREADS \\\n\t-DSCSI\n\n# uClibc doesn't provide POSIX AIO\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),)\nDT_CFLAGS += -DAIO\nendif\n\ndefine DT_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) -f Makefile.linux \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) $(DT_CFLAGS)\" \\\n\t\tOS=linux\nendef\n\ndefine DT_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/dt $(TARGET_DIR)/usr/bin/dt\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dt-utils/Config.in",
    "content": "config BR2_PACKAGE_DT_UTILS\n\tbool \"dt-utils\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\thelp\n\t  Tools for flattened device-tree dumping and barebox state\n\t  manipulation.\n\n\t  https://git.pengutronix.de/cgit/tools/dt-utils/\n\ncomment \"dt-utils needs udev /dev management\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n"
  },
  {
    "path": "package/dt-utils/dt-utils.hash",
    "content": "# Locally computed\nsha256  8b29d3a8799170afdb1b077e655528bf4e6afe0c789107b1eec8fff9d4482771  dt-utils-v2021.03.0-br1.tar.gz\nsha256  a45932c79317d15116eadbf1c9c6fc59117ec3c4621db3a876066defa723963b  COPYING\n"
  },
  {
    "path": "package/dt-utils/dt-utils.mk",
    "content": "################################################################################\n#\n# dt-utils\n#\n################################################################################\n\nDT_UTILS_VERSION = v2021.03.0\nDT_UTILS_SITE = https://git.pengutronix.de/git/tools/dt-utils\nDT_UTILS_SITE_METHOD = git\nDT_UTILS_LICENSE = GPL-2.0\nDT_UTILS_LICENSE_FILES = COPYING\nDT_UTILS_DEPENDENCIES = udev\nDT_UTILS_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dtach/Config.in",
    "content": "config BR2_PACKAGE_DTACH\n\tbool \"dtach\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  dtach is a tiny program that emulates the detach feature of\n\t  screen, allowing you to run a program in an environment that\n\t  is protected from the controlling terminal and attach to it\n\t  later.\n\n\t  http://dtach.sourceforge.net/\n"
  },
  {
    "path": "package/dtach/dtach.hash",
    "content": "# Locally computed:\nsha256  5f7e8c835ee49a9e6dcf89f4e8ccbe724b061c0fc8565b504dd8b3e67ab79f82  dtach-0.9.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/dtach/dtach.mk",
    "content": "################################################################################\n#\n# dtach\n#\n################################################################################\n\nDTACH_VERSION = 0.9\nDTACH_SITE = $(call github,crigler,dtach,v$(DTACH_VERSION))\nDTACH_LICENSE = GPL-2.0+\nDTACH_LICENSE_FILES = COPYING\n\n# The Makefile does not have an install target.\ndefine DTACH_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/dtach $(TARGET_DIR)/usr/bin/dtach\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dtbocfg/Config.in",
    "content": "config BR2_PACKAGE_DTBOCFG\n\tbool \"dtbocfg\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  dtbocfg, which stands for Device Tree Blob Overlay\n\t  Configuration File System, was developed to serve\n\t  as a userspace API of Device Tree Overlay.\n\n\t  https://github.com/ikwzm/dtbocfg\n\ncomment \"dtbocfg needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/dtbocfg/dtbocfg.hash",
    "content": "# Locally computed:\nsha256  faa53aefd7f7636c65e2b56bec223d2bc7676354e3ad9b5c1691aca349b9bbb8  dtbocfg-0.0.9.tar.gz\nsha256  e57cb9f2ed607cd95bf1b64371325c505c1ac8fe640a8c9933e7fe7637a38567  LICENSE\n"
  },
  {
    "path": "package/dtbocfg/dtbocfg.mk",
    "content": "################################################################################\n#\n# dtbocfg\n#\n################################################################################\n\nDTBOCFG_VERSION = 0.0.9\nDTBOCFG_SITE = $(call github,ikwzm,dtbocfg,v$(DTBOCFG_VERSION))\nDTBOCFG_LICENSE = BSD-2-Clause\nDTBOCFG_LICENSE_FILES = LICENSE\n\ndefine DTBOCFG_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_OF_OVERLAY)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CONFIGFS_FS)\nendef\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dtc/0001-Fix-include-guards-for-older-kernel-u-boot-sources.patch",
    "content": "From 086283ed7f1886de05407bc75dd4c070c78a6f50 Mon Sep 17 00:00:00 2001\nFrom: Lothar Felten <lothar.felten@gmail.com>\nDate: Mon, 8 Oct 2018 13:29:44 +0200\nSubject: [PATCH] Fix include guards for older kernel/u-boot sources\n\nLinux kernels before 4.17 and U-Boot versions before 2018.07 use libfdt\ninclude guards with leading underscores.\n\nThose have been removed in dtc-1.4.7.\n\nThis patch handles both include guard types and allows the compilation\nof older Linux kernel and u-boot sources.\n\nSigned-off-by: Lothar Felten <lothar.felten@gmail.com>\n[ThomasDS: also update fdt.h which has the same issue, seen on U-Boot\n2011.03]\nSigned-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\n[SB: Updated to match context change in v1.5.1]\nSigned-off-by: Sam Bobroff <sbobroff@linux.ibm.com>\n---\n libfdt/fdt.h        | 4 ++++\n libfdt/libfdt.h     | 4 ++++\n libfdt/libfdt_env.h | 4 ++++\n 3 files changed, 12 insertions(+)\n\ndiff --git a/libfdt/fdt.h b/libfdt/fdt.h\nindex f2e6880..0f1dc4d 100644\n--- a/libfdt/fdt.h\n+++ b/libfdt/fdt.h\n@@ -1,4 +1,8 @@\n /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */\n+#ifdef _FDT_H\n+#warning \"Please consider updating your kernel and/or u-boot version\"\n+#define FDT_H\n+#endif\n #ifndef FDT_H\n #define FDT_H\n /*\ndiff --git a/libfdt/libfdt.h b/libfdt/libfdt.h\nindex 8037f39..7668432 100644\n--- a/libfdt/libfdt.h\n+++ b/libfdt/libfdt.h\n@@ -1,4 +1,8 @@\n /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */\n+#ifdef _LIBFDT_H\n+#warning \"Please consider updating your kernel and/or u-boot version\"\n+#define LIBFDT_H\n+#endif\n #ifndef LIBFDT_H\n #define LIBFDT_H\n /*\ndiff --git a/libfdt/libfdt_env.h b/libfdt/libfdt_env.h\nindex 73b6d40..b95a287 100644\n--- a/libfdt/libfdt_env.h\n+++ b/libfdt/libfdt_env.h\n@@ -1,4 +1,8 @@\n /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */\n+#ifdef _LIBFDT_ENV_H\n+#warning \"Please consider updating your kernel and/or u-boot version\"\n+#define LIBFDT_ENV_H\n+#endif\n #ifndef LIBFDT_ENV_H\n #define LIBFDT_ENV_H\n /*\n-- \n2.22.0.216.g00a2a96fc9\n\n"
  },
  {
    "path": "package/dtc/Config.in",
    "content": "config BR2_PACKAGE_DTC\n\tbool \"dtc (libfdt)\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  The Device Tree Compiler, dtc, takes as input a device-tree in\n\t  a given format and outputs a device-tree in another format.\n\n\t  Note that only the library is installed.\n\t  If you want the programs, say 'y' here, and to \"dtc programs\",\n\t  below.\n\n\t  https://git.kernel.org/cgit/utils/dtc/dtc.git\n\nif BR2_PACKAGE_DTC\n\nconfig BR2_PACKAGE_DTC_PROGRAMS\n\tbool \"dtc programs\"\n\thelp\n\t  Say 'y' here if you also want the programs on the target:\n\t    - convert-dtsv0     convert from version 0 to version 1\n\t    - dtc               the device tree compiler\n\t    - dtdiff            compare two device trees (needs bash)\n\t    - fdtdump           print a readable version of a\n\t                        flat device tree\n\t    - fdtget            read values from device tree\n\t    - fdtput            write a property value to a device tree\n\n\t  Note: dtdiff requires bash, so if bash is not selected, dtdiff\n\t  will be removed from the target file system. Enable bash if\n\t  you need dtdiff on the target.\n\ncomment \"dtdiff will not be installed: it requires bash\"\n\tdepends on BR2_PACKAGE_DTC_PROGRAMS\n\tdepends on !BR2_PACKAGE_BASH\n\nendif\n\ncomment \"dtc needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/dtc/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_DTC\n\tbool \"host dtc\"\n\thelp\n\t  The Device Tree Compiler, dtc, takes as input a device-tree in\n\t  a given format and outputs a device-tree in another format.\n\n\t  Install host tools: dtc, convert-dtsv0, fdtdump, fdtget and\n\t  fdtput.\n\n\t  https://git.kernel.org/cgit/utils/dtc/dtc.git\n"
  },
  {
    "path": "package/dtc/dtc.hash",
    "content": "# from https://www.kernel.org/pub/software/utils/dtc/sha256sums.asc\nsha256  65cec529893659a49a89740bb362f507a3b94fc8cd791e76a8d6a2b6f3203473  dtc-1.6.1.tar.xz\n\n# Hash for license files\nsha256  78e1e1ce5728a990d59c7de61d4741c49185d5129daf783b386380a214328d68  README.license\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  GPL\nsha256  6313108c23efffa36948f8b2cff1560a5935373b527b0e1a837cc77e6ed1bacd  BSD-2-Clause\n"
  },
  {
    "path": "package/dtc/dtc.mk",
    "content": "################################################################################\n#\n# dtc\n#\n################################################################################\n\nDTC_VERSION = 1.6.1\nDTC_SOURCE = dtc-$(DTC_VERSION).tar.xz\nDTC_SITE = https://www.kernel.org/pub/software/utils/dtc\nDTC_LICENSE = GPL-2.0+ or BSD-2-Clause (library)\nDTC_LICENSE_FILES = README.license GPL BSD-2-Clause\nDTC_CPE_ID_VENDOR = dtc_project\nDTC_INSTALL_STAGING = YES\nDTC_DEPENDENCIES = host-bison host-flex host-pkgconf\nHOST_DTC_DEPENDENCIES = host-bison host-flex host-pkgconf\n\nDTC_MAKE_OPTS = \\\n\tPREFIX=/usr \\\n\tNO_PYTHON=1 \\\n\tNO_VALGRIND=1\n\n# For the host, we install headers in a special subdirectory to avoid\n# conflicts with the in-kernel libfdt copy.\nHOST_DTC_MAKE_OPTS = \\\n\tPREFIX=$(HOST_DIR) \\\n\tINCLUDEDIR=$(HOST_DIR)/include/libfdt \\\n\tNO_PYTHON=1 \\\n\tNO_VALGRIND=1 \\\n\tNO_YAML=1\n\nifeq ($(BR2_PACKAGE_LIBYAML),y)\nDTC_DEPENDENCIES += libyaml\nelse\nDTC_MAKE_OPTS += NO_YAML=1\nendif\n\ndefine DTC_POST_INSTALL_TARGET_RM_DTDIFF\n\trm -f $(TARGET_DIR)/usr/bin/dtdiff\nendef\n\nifeq ($(BR2_PACKAGE_DTC_PROGRAMS),y)\n\nDTC_LICENSE += , GPL-2.0+ (programs)\nDTC_INSTALL_GOAL = install\nifeq ($(BR2_PACKAGE_BASH),)\nDTC_POST_INSTALL_TARGET_HOOKS += DTC_POST_INSTALL_TARGET_RM_DTDIFF\nendif\n\nelse # $(BR2_PACKAGE_DTC_PROGRAMS) != y\n\nDTC_INSTALL_GOAL = install-lib\n\nendif # $(BR2_PACKAGE_DTC_PROGRAMS) != y\n\ndefine DTC_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) EXTRA_CFLAGS=\"$(TARGET_CFLAGS) -fPIC\" -C $(@D) $(DTC_MAKE_OPTS)\nendef\n\n# For staging, only the library is needed\ndefine DTC_INSTALL_STAGING_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) $(DTC_MAKE_OPTS) install-lib \\\n\t\tinstall-includes\nendef\n\ndefine DTC_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) $(DTC_MAKE_OPTS) $(DTC_INSTALL_GOAL)\nendef\n\n# host build\ndefine HOST_DTC_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) EXTRA_CFLAGS=\"$(HOST_CFLAGS) -fPIC\" -C $(@D) $(HOST_DTC_MAKE_OPTS)\nendef\n\ndefine HOST_DTC_INSTALL_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(HOST_DTC_MAKE_OPTS) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/dtv-scan-tables/Config.in",
    "content": "config BR2_PACKAGE_DTV_SCAN_TABLES\n\tbool \"dtv-scan-tables\"\n\thelp\n\t  The Digital TV scan tables.\n\n\t  http://git.linuxtv.org/dtv-scan-tables.git\n"
  },
  {
    "path": "package/dtv-scan-tables/dtv-scan-tables.hash",
    "content": "# Locally computed\nsha256  fc65b1f85195ab3d877f7ce802dc62b8c70b3a1815fa6e6a69de19a9d354c19a  dtv-scan-tables-6d019038cd04e837d9dd58701202c15924c1c654-br1.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\nsha256  4fd46f32582c29007657e2daad8d0a6d954cf4e9d2e47bae8f8d8c32765fc987  COPYING.LGPL\n"
  },
  {
    "path": "package/dtv-scan-tables/dtv-scan-tables.mk",
    "content": "################################################################################\n#\n# dtv-scan-tables\n#\n################################################################################\n\nDTV_SCAN_TABLES_VERSION = 6d019038cd04e837d9dd58701202c15924c1c654\nDTV_SCAN_TABLES_SITE = https://git.linuxtv.org/dtv-scan-tables.git\nDTV_SCAN_TABLES_SITE_METHOD = git\n\n# This package only contains the transponders data. This is not a 'work'\n# as per traditional copyright, but just a collection of 'facts', so there's\n# probably no license to apply to these data files.\n# However, the package prominently contains the COPYING and COPYING.LIB\n# license files (respectively for the GPL-2.0 and the LGPL-2.1), so we use\n# that as the licensing information.\nDTV_SCAN_TABLES_LICENSE = GPL-2.0, LGPL-2.1\nDTV_SCAN_TABLES_LICENSE_FILES = COPYING COPYING.LGPL\n\ndefine DTV_SCAN_TABLES_INSTALL_TARGET_CMDS\n\tfor f in atsc dvb-c dvb-s dvb-t; do \\\n\t\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/share/dvb/$$f; \\\n\t\t$(INSTALL) $(@D)/$$f/* $(TARGET_DIR)/usr/share/dvb/$$f; \\\n\tdone\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/duktape/Config.in",
    "content": "config BR2_PACKAGE_DUKTAPE\n\tbool \"duktape\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Duktape is an embeddable Javascript engine, with a focus on\n\t  portability and compact footprint.\n\n\t  Duktape is easy to integrate into a C/C++ project: add\n\t  duktape.c, duktape.h, and duk_config.h to your build, and use\n\t  the Duktape API to call Ecmascript functions from C code and\n\t  vice versa.\n\n\t  http://www.duktape.org\n\ncomment \"duktape needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/duktape/duktape.hash",
    "content": "# Locally computed:\nsha256  96f4a05a6c84590e53b18c59bb776aaba80a205afbbd92b82be609ba7fe75fa7  duktape-2.6.0.tar.xz\nsha256  5b42d02dbd084fd6d7e61d93f52e02b596f25400e54e0f86d5780045e5b754c8  LICENSE.txt\n"
  },
  {
    "path": "package/duktape/duktape.mk",
    "content": "################################################################################\n#\n# duktape\n#\n################################################################################\n\nDUKTAPE_VERSION = 2.6.0\nDUKTAPE_SOURCE = duktape-$(DUKTAPE_VERSION).tar.xz\nDUKTAPE_SITE = \\\n\thttps://github.com/svaarala/duktape/releases/download/v$(DUKTAPE_VERSION)\nDUKTAPE_LICENSE = MIT\nDUKTAPE_LICENSE_FILES = LICENSE.txt\nDUKTAPE_INSTALL_STAGING = YES\n\ndefine DUKTAPE_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f Makefile.sharedlibrary\nendef\n\ndefine DUKTAPE_INSTALL_STAGING_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f Makefile.sharedlibrary \\\n\t\tINSTALL_PREFIX=$(STAGING_DIR)/usr install\n\t$(INSTALL) -D -m 0644 $(DUKTAPE_PKGDIR)/duktape.pc.in \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/duktape.pc\n\t$(SED) 's/@VERSION@/$(DUKTAPE_VERSION)/g;' \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/duktape.pc\nendef\n\ndefine DUKTAPE_INSTALL_TARGET_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f Makefile.sharedlibrary \\\n\t\tINSTALL_PREFIX=$(TARGET_DIR)/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/duktape/duktape.pc.in",
    "content": "prefix=/usr\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: duktape\nDescription: Embeddable Javascript engine\nVersion: @VERSION@\nLibs: -L${libdir} -lduktape\nCflags: -I${includedir}/\n"
  },
  {
    "path": "package/duma/0001-fix-cross-compilation.patch",
    "content": "Allow cross compilation. Adapted from crosstool-ng.\n\nSigned-off-by: Baruch Siach <baruch at tkos.co.il>\n\nIndex: b/GNUmakefile\n===================================================================\n--- a/GNUmakefile\n+++ b/GNUmakefile\n@@ -93,10 +93,6 @@\n # also define 'WIN32'\n \n # some defaults:\n-CC=gcc\n-CXX=g++\n-AR=ar\n-RANLIB=ranlib\n INSTALL=install\n RM=rm\n RMFORCE=rm -f\n@@ -471,7 +467,7 @@\n \n createconf$(EXEPOSTFIX): createconf.o\n \t- $(RMFORCE) createconf$(EXEPOSTFIX)\n-\t$(CC) $(CFLAGS) $(DUMA_OPTIONS) createconf.o -o createconf$(EXEPOSTFIX)\n+\t$(CC_FOR_BUILD) $(HOST_CFLAGS) $(DUMA_OPTIONS) createconf.o -o createconf$(EXEPOSTFIX)\n \n tstheap$(EXEPOSTFIX): libduma.a tstheap.o\n \t- $(RMFORCE) tstheap$(EXEPOSTFIX)\n@@ -532,7 +528,7 @@\n # define rules how to build objects for createconf\n #\n createconf.o:\n-\t$(CC) $(CFLAGS) $(DUMA_OPTIONS) -c createconf.c -o $@\n+\t$(CC_FOR_BUILD) $(HOST_CFLAGS) $(DUMA_OPTIONS) -c createconf.c -o $@\n \n \n #\n"
  },
  {
    "path": "package/duma/0002-no-tests.patch",
    "content": "Do not build test programs\n\nBiulding test programs does not work when we want to do a static link,\nbecause duma.a redefines memcpy and strcpy, so the link fails.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN duma-2.5.15.orig/GNUmakefile duma-2.5.15/GNUmakefile\n--- duma-2.5.15.orig/GNUmakefile\t2014-11-16 14:47:05.874448560 +0100\n+++ duma-2.5.15/GNUmakefile\t2014-11-16 14:54:50.792048921 +0100\n@@ -294,7 +294,7 @@\n SO_OBJECTS=dumapp_so.o duma_so.o sem_inc_so.o print_so.o\n \n # Make all the top-level targets the makefile knows about.\n-all:\tlibduma.a tstheap$(EXEPOSTFIX) dumatest$(EXEPOSTFIX) thread-test$(EXEPOSTFIX) testmt$(EXEPOSTFIX) dumatestpp$(EXEPOSTFIX) testoperators$(EXEPOSTFIX) $(DUMA_DYN_DEPS)\n+all:\tlibduma.a $(DUMA_DYN_DEPS)\n \n # Perform self tests on the program this makefile builds.\n check test:\n"
  },
  {
    "path": "package/duma/0003-fix-C++14.patch",
    "content": "dumapp: fix for C++14\n\nWith C++14, the way exceptions are specified has changed (somehow, don't\nask me), thus causing build failures:\n\n    dumapp.cpp: In function ‘void* operator new(std::size_t)’:\n    dumapp.cpp:192:19: error: declaration of ‘void* operator new(std::size_t) throw (std::bad_alloc)’ has a different exception specifier\n     void * DUMA_CDECL operator new( DUMA_SIZE_T size )\n                       ^~~~~~~~\n    In file included from dumapp.cpp:39:0:\n    dumapp.h:91:23: note: from previous declaration ‘void* operator new(std::size_t)’\n     void * DUMA_CDECL operator new(DUMA_SIZE_T) throw(std::bad_alloc);\n                       ^~~~~~~~\n\nThis is most evident with gcc-6.x, since the default C++ standard has\nchanged from C++11 to C++14, thus exposing these new failures.\n\nFix that by guarding the exception handling, a bit like was done\nwith GRASS GIS (thanks DuckDuckGo):\n\n    https://trac.osgeo.org/grass/changeset?old_path=%2F&old=68817&new_path=%2F&new=68818&sfp_email=&sfph_mail=\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\n---\nNote: The last commit in DUMA's CVS repo was more than 7 years ago.\nI doubt it is still active, so the patch was not sent upstream. :-/\n\ndiff -durN duma-2.5.15.orig/dumapp.cpp duma-2.5.15/dumapp.cpp\n--- duma-2.5.15.orig/dumapp.cpp\t2008-08-03 22:46:06.000000000 +0200\n+++ duma-2.5.15/dumapp.cpp\t2016-07-10 21:55:22.670386099 +0200\n@@ -190,7 +190,9 @@\n  * (11) = (a) ; ASW\n  */\n void * DUMA_CDECL operator new( DUMA_SIZE_T size )\n+#ifdef DUMA_EXCEPTION_SPECS\n throw(std::bad_alloc)\n+#endif\n {\n   return duma_new_operator(size, EFA_NEW_ELEM, true  DUMA_PARAMS_UK);\n }\n@@ -254,7 +256,9 @@\n  * (21) = (a) ; AAW\n  */\n void * DUMA_CDECL operator new[]( DUMA_SIZE_T size )\n+#ifdef DUMA_EXCEPTION_SPECS\n throw(std::bad_alloc)\n+#endif\n {\n   return duma_new_operator(size, EFA_NEW_ARRAY, true  DUMA_PARAMS_UK);\n }\ndiff -durN duma-2.5.15.orig/dumapp.h duma-2.5.15/dumapp.h\n--- duma-2.5.15.orig/dumapp.h\t2009-04-11 14:41:44.000000000 +0200\n+++ duma-2.5.15/dumapp.h\t2016-07-10 21:55:22.670386099 +0200\n@@ -35,6 +35,10 @@\n \n #include \"duma.h\"\n \n+#if __cplusplus < 201103L\n+  #define DUMA_EXCEPTION_SPECS 1\n+#endif\n+\n /* remove previous macro definitions */\n #include \"noduma.h\"\n \n"
  },
  {
    "path": "package/duma/0004-Fix-build-with-latest-glibc.patch",
    "content": "Fix build with latest glibc\n\nFixes:\n - http://autobuild.buildroot.net/results/c7de1a1d01edced2098a804ad87dcb67b5dc6832\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -durN duma_2_5_15.orig/print.c duma_2_5_15/print.c\n--- duma_2_5_15.orig/print.c\t2019-10-28 10:21:14.080149620 +0100\n+++ duma_2_5_15/print.c\t2019-10-28 10:22:01.256151561 +0100\n@@ -326,9 +326,9 @@\n   if(DUMA_OUTPUT_FILE != NULL)\n   {\n #if defined(WIN32) && !defined(__CYGWIN__)\n-    fd = _open(DUMA_OUTPUT_FILE, _O_APPEND|_O_CREAT|_O_WRONLY);\n+    fd = _open(DUMA_OUTPUT_FILE, _O_APPEND|_O_CREAT|_O_WRONLY, 0600);\n #else\n-    fd = open(DUMA_OUTPUT_FILE, O_APPEND|O_CREAT|O_WRONLY);\n+    fd = open(DUMA_OUTPUT_FILE, O_APPEND|O_CREAT|O_WRONLY, 0600);\n #endif\n     if ( fd >= 0 )\n     {\n"
  },
  {
    "path": "package/duma/Config.in",
    "content": "config BR2_PACKAGE_DUMA\n\tbool \"duma\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# By design, duma uses page mapping to isolate\n\t# allocations. Non-MMU platforms cannot perform such\n\t# things.\n\tdepends on BR2_USE_MMU\n\t# duma works using LD_PRELOAD, so it always needs to build a\n\t# shared library\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  D.U.M.A. - Detect Unintended Memory Access. A fork of the\n\t  Electric Fence library. Detects buffer overflow and\n\t  underflow, and also memory leaks.\n\n\t  http://duma.sourceforge.net\n\nif BR2_PACKAGE_DUMA\n\nconfig BR2_PACKAGE_DUMA_NO_LEAKDETECTION\n\tbool \"disable memory leak detection\"\n\nendif # BR2_PACKAGE_DUMA\n\ncomment \"duma needs a toolchain w/ C++, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/duma/duma.hash",
    "content": "# Locally computed:\nsha256  baaf794854e3093ad1bddadbfb8ad4b220a7117d70359ee216bd59e353734e17  duma_2_5_15.tar.gz\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING-GPL\nsha256  a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7  COPYING-LGPL\n"
  },
  {
    "path": "package/duma/duma.mk",
    "content": "################################################################################\n#\n# duma\n#\n################################################################################\n\nDUMA_VERSION = 2.5.15\nDUMA_SOURCE = duma_$(subst .,_,$(DUMA_VERSION)).tar.gz\nDUMA_SITE = http://downloads.sourceforge.net/project/duma/duma/$(DUMA_VERSION)\nDUMA_LICENSE = GPL-2.0+, LGPL-2.1+\nDUMA_LICENSE_FILES = COPYING-GPL COPYING-LGPL\n\nDUMA_INSTALL_STAGING = YES\n\nDUMA_OPTIONS = \\\n\t$(if $(BR2_PACKAGE_DUMA_NO_LEAKDETECTION),-DDUMA_LIB_NO_LEAKDETECTION)\n\n# The dependency of some source files in duma_config.h, which is generated at\n# build time, is not specified in the Makefile. Force non-parallel build.\ndefine DUMA_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) \\\n\t\tOS=linux \\\n\t\tDUMA_OPTIONS=\"$(DUMA_OPTIONS)\" \\\n\t\tCPPFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\" -C $(@D)\nendef\n\ndefine DUMA_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) OS=linux prefix=$(STAGING_DIR)/usr install -C $(@D)\nendef\n\ndefine DUMA_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) OS=linux prefix=$(TARGET_DIR)/usr install -C $(@D)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dump1090/0001-dump1090.h-fix-build-with-gcc-10.patch",
    "content": "From 02153cb0b2d1083dcd587798d9ef7ce963739622 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 19 Aug 2020 18:46:17 +0200\nSubject: [PATCH] dump1090.h: fix build with gcc 10\n\nFix the following build failures on gcc 10 (where -fno-common is enabled\nby default):\n\n/home/test/autobuild/run/instance-0/output-1/per-package/dump1090/host/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: interactive.o:/home/test/autobuild/run/instance-0/output-1/build/dump1090-bff92c4ad772a0a8d433f788d39dae97e00e4dbe/dump1090.h:373: multiple definition of `Modes'; /home/test/autobuild/run/instance-0/output-1/per-package/dump1090/host/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: interactive.o:/home/test/autobuild/run/instance-0/output-1/build/dump1090-bff92c4ad772a0a8d433f788d39dae97e00e4dbe/dump1090.h:373: multiple definition of `Modes'; dump1090.o:/home/test/autobuild/run/instance-0/output-1/build/dump1090-bff92c4ad772a0a8d433f788d39dae97e00e4dbe/dump1090.h:373: first defined here\n\n/home/test/autobuild/run/instance-0/output-1/per-package/dump1090/host/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: interactive.o:/home/test/autobuild/run/instance-0/output-1/build/dump1090-bff92c4ad772a0a8d433f788d39dae97e00e4dbe/dump1090.h:238: multiple definition of `tDF'; dump1090.o:/home/test/autobuild/run/instance-0/output-1/build/dump1090-bff92c4ad772a0a8d433f788d39dae97e00e4dbe/dump1090.h:238: first defined here\n/home/test/autobuild/run/instance-0/output-1/per-package/dump1090/host/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: view1090.o:/home/test/autobuild/run/instance-0/output-1/build/dump1090-bff92c4ad772a0a8d433f788d39dae97e00e4dbe/dump1090.h:373: first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/88dc97fcaa649014edb3b54a5dd4bd8ec4715bbd\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/MalcolmRobb/dump1090/pull/96]\n---\n dump1090.c | 3 +++\n dump1090.h | 4 ++--\n view1090.c | 3 +++\n 3 files changed, 8 insertions(+), 2 deletions(-)\n\ndiff --git a/dump1090.c b/dump1090.c\nindex 60882fc..1482224 100644\n--- a/dump1090.c\n+++ b/dump1090.c\n@@ -29,6 +29,9 @@\n //\n #include \"coaa.h\"\n #include \"dump1090.h\"\n+\n+struct modes Modes;\n+\n //\n // ============================= Utility functions ==========================\n //\ndiff --git a/dump1090.h b/dump1090.h\nindex 9ad4de0..283e760 100644\n--- a/dump1090.h\n+++ b/dump1090.h\n@@ -235,10 +235,10 @@ struct stDF {\n     uint64_t         llTimestamp;                // Timestamp at which the this packet was received\n     uint32_t         addr;                       // Timestamp at which the this packet was received\n     unsigned char    msg[MODES_LONG_MSG_BYTES];  // the binary\n-} tDF;\n+};\n \n // Program global state\n-struct {                             // Internal state\n+extern struct modes {                             // Internal state\n     pthread_t       reader_thread;\n \n     pthread_mutex_t data_mutex;      // Mutex to synchronize buffer access\ndiff --git a/view1090.c b/view1090.c\nindex 0b9b8b9..cc072fc 100644\n--- a/view1090.c\n+++ b/view1090.c\n@@ -29,6 +29,9 @@\n //\n #include \"coaa.h\"\n #include \"view1090.h\"\n+\n+struct modes Modes;\n+\n //\n // ============================= Utility functions ==========================\n //\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/dump1090/Config.in",
    "content": "config BR2_PACKAGE_DUMP1090\n\tbool \"dump1090\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # librtlsdr\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # librtlsdr -> libusb\n\tselect BR2_PACKAGE_LIBRTLSDR\n\thelp\n\t  Dump1090 is a simple Mode S decoder for RTLSDR devices\n\n\t  https://github.com/MalcolmRobb/dump1090\n\ncomment \"dump1090 needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/dump1090/dump1090.hash",
    "content": "# Locally computed\nsha256 72c1a94f3e6788af1e72b8cac13bb53e0989fe02cd13e191133f5519d2a2fefb  dump1090-bff92c4ad772a0a8d433f788d39dae97e00e4dbe.tar.gz\nsha256 29046ef7ee0b7b127bcc64faf135035820906dea2b379b2efcfc119131a39f7a  anet.h\n"
  },
  {
    "path": "package/dump1090/dump1090.mk",
    "content": "################################################################################\n#\n# dump1090\n#\n################################################################################\n\nDUMP1090_VERSION = bff92c4ad772a0a8d433f788d39dae97e00e4dbe\nDUMP1090_SITE = $(call github,MalcolmRobb,dump1090,$(DUMP1090_VERSION))\nDUMP1090_LICENSE = BSD-3-Clause\n# no real license file\nDUMP1090_LICENSE_FILES = anet.h\nDUMP1090_DEPENDENCIES = host-pkgconf librtlsdr\n\ndefine DUMP1090_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) PREFIX=/usr -C $(@D)\nendef\n\ndefine DUMP1090_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/dump1090 $(TARGET_DIR)/usr/bin/dump1090\n\t$(INSTALL) -m 0755 -D $(@D)/view1090 $(TARGET_DIR)/usr/bin/view1090\n\t$(INSTALL) -d $(TARGET_DIR)/usr/share/dump1090\n\tcp -r $(@D)/public_html/* $(TARGET_DIR)/usr/share/dump1090\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dvb-apps/0001-Fix-generate-keynames.patch",
    "content": "Fix generate-keynames.sh script for cross-compilation\n\ngenerate-keynames.sh reads /usr/include/linux to find the keyname\nsymbols. However, when cross-compiling, the include path points\nsomewhere else. Allow the user to pass CROSS_ROOT to point to the\nroot of the cross-compilation environment.\n\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n---\ndiff -rup dvb-apps-83c746462ccb.orig/util/av7110_loadkeys/generate-keynames.sh dvb-apps-83c746462ccb/util/av7110_loadkeys/generate-keynames.sh\n--- dvb-apps-83c746462ccb.orig/util/av7110_loadkeys/generate-keynames.sh\t2012-12-06 10:38:07.000000000 +0100\n+++ dvb-apps-83c746462ccb/util/av7110_loadkeys/generate-keynames.sh\t2013-08-29 21:47:09.717991439 +0200\n@@ -18,7 +18,7 @@ echo \"};\" >> $1\n echo >> $1\n echo >> $1\n echo \"static struct input_key_name key_name [] = {\" >> $1\n-for x in $(cat /usr/include/linux/input.h input_fake.h | \\\n+for x in $(cat ${CROSS_ROOT}/usr/include/linux/input.h input_fake.h | \\\n            egrep \"#define[ \\t]+KEY_\" | grep -v KEY_MAX | \\\n            cut -f 1 | cut -f 2 -d \" \" | sort -u) ; do\n     echo \"        { \\\"$(echo $x | cut -b 5-)\\\", $x },\" >> $1\n@@ -26,7 +26,7 @@ done\n echo \"};\" >> $1\n echo >> $1\n echo \"static struct input_key_name btn_name [] = {\" >> $1\n-for x in $(cat /usr/include/linux/input.h input_fake.h | \\\n+for x in $(cat ${CROSS_ROOT}/usr/include/linux/input.h input_fake.h | \\\n            egrep \"#define[ \\t]+BTN_\" | \\\n            cut -f 1 | cut -f 2 -d \" \" | sort -u) ; do\n      echo \"        { \\\"$(echo $x | cut -b 5-)\\\", $x },\" >> $1\n"
  },
  {
    "path": "package/dvb-apps/0002-Fix-compiler-warning-flags.patch",
    "content": "From 9b8f1df41f7579da63c27763ff184d351e4c7fef Mon Sep 17 00:00:00 2001\nFrom: Simon Dawson <spdawson@gmail.com>\nDate: Sun, 4 Jan 2015 12:06:18 +0100\nSubject: [PATCH] Fix compiler warning flags\n\n  When building for bfin, the build fails as follows.\n\n  cc1: error: unrecognized command line option \"-Wno-packed-bitfield-compat\"\n\nAn example of an autobuild failure arising from this is the following.\n\n  http://autobuild.buildroot.net/results/92e/92e472004812a3616f62d766a9ea07a997a66e89/\n  http://autobuild.buildroot.net/results/6e7/6e7b48ad9768349d983985c3067c4267cde80541/\n\nClearly, not all toolchains provide a gcc that understands\nthe -Wno-packed-bitfield-compat flag; remove usage of this flag.\n\nWno-packed-bitfield-compat option was added in gcc 4.4.\n\n[Romain:\n  - This patch is also needed for bfin toolchains which use gcc 4.3.5\n  - Add a link to bfin build failure]\nSigned-off-by: Simon Dawson <spdawson@gmail.com>\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n util/scan/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/util/scan/Makefile b/util/scan/Makefile\nindex d48c478..88667c5 100644\n--- a/util/scan/Makefile\n+++ b/util/scan/Makefile\n@@ -14,7 +14,7 @@ inst_bin = $(binaries)\n \n removing = atsc_psip_section.c atsc_psip_section.h\n \n-CPPFLAGS += -Wno-packed-bitfield-compat -D__KERNEL_STRICT_NAMES\n+CPPFLAGS += -D__KERNEL_STRICT_NAMES\n \n .PHONY: all\n \n-- \n1.9.3\n\n"
  },
  {
    "path": "package/dvb-apps/0003-handle-static-shared-only-build.patch",
    "content": "From a826c7c722db40bfedf00e51ce38411550ae8216 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Thu, 25 Dec 2014 19:22:16 +0100\nSubject: [PATCH] Make.rules: Handle static/shared only build\n\nDo not build .a library when enable_static is set to \"no\"\nDo not build .so library when enable_shared is set to \"no\"\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n Make.rules | 10 ++++++++--\n 1 file changed, 8 insertions(+), 2 deletions(-)\n\ndiff --git a/Make.rules b/Make.rules\nindex 3410d7b..d274e16 100644\n--- a/Make.rules\n+++ b/Make.rules\n@@ -9,7 +9,13 @@ ifneq ($(lib_name),)\n CFLAGS_LIB ?= -fPIC\n CFLAGS += $(CFLAGS_LIB)\n \n-libraries = $(lib_name).so $(lib_name).a\n+ifneq ($(enable_static),no)\n+libraries += $(lib_name).a\n+endif\n+\n+ifneq ($(enable_shared),no)\n+libraries += $(lib_name).so\n+endif\n \n .PHONY: library\n \n@@ -23,7 +29,7 @@ prerequisites = $(subst .o,.d,$(objects)) $(addsuffix .d,$(binaries))\n \n .PHONY: clean install\n \n-ifeq ($(static),1)\n+ifneq ($(enable_static),no)\n LDFLAGS += -static\n endif\n \n-- \n1.9.3\n\n"
  },
  {
    "path": "package/dvb-apps/0004-Makefile-remove-test.patch",
    "content": "From c578772d6abc5fdf3ec83f632c371373e5baf9f1 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Fri, 26 Dec 2014 01:04:58 +0100\nSubject: [PATCH] Makefile: remove test\n\nTests needs static libraries, remove them for shared only build.\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n Makefile | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 65a2273..105c460 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -10,7 +10,6 @@ DVB_API_MINOR := $(word 3, $(shell grep -m1 \"DVB_API_VERSION_MINOR\" $(VERSION_FI\n \n all clean install:\n \t$(MAKE) -C lib $@\n-\t$(MAKE) -C test $@\n \t$(MAKE) -C util $@\n \n update:\n-- \n1.9.3\n\n"
  },
  {
    "path": "package/dvb-apps/0005-utils-fix-build-with-kernel-headers-4.14.patch",
    "content": "# HG changeset patch\n# User \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n# Date 1511772629 -3600\n#      Mon Nov 27 09:50:29 2017 +0100\n# Branch yem/fixes\n# Node ID 0848fa96c6eb13cf37249d317eff12cbd2f59ff7\n# Parent  3d43b280298c39a67d1d889e01e173f52c12da35\nutils: fix build with kernel headers >= 4.14\n\nIn kernel 4.14, CA_SET_PID was removed, in commit 833ff5e7feda (media:\nca.h: get rid of CA_SET_PID).\n\nFix dst-util to not fail the build when this is missing.\n\nFiuxes build failures such as:\n    http://autobuild.buildroot.org/results/708/708f11809b2cafc2a3375dc515803c87b376ed4d/build-end.log\n    http://autobuild.buildroot.org/results/e39/e3939d44376e92e8a35fb179d9890510334d8304/build-end.log\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff --git a/util/dst-utils/dst_test.c b/util/dst-utils/dst_test.c\n--- a/util/dst-utils/dst_test.c\n+++ b/util/dst-utils/dst_test.c\n@@ -111,6 +111,7 @@\n \treturn 0;\n }\n \n+#if defined CA_SET_PID\n static int dst_set_pid(int cafd)\n {\n \tif ((ioctl(cafd, CA_SET_PID)) < 0) {\n@@ -120,6 +121,7 @@\n \n \treturn 0;\n }\n+#endif\n \n static int dst_get_descr(int cafd)\n {\n@@ -230,8 +232,12 @@\n \t\t\t\tdst_reset(cafd);\n \t\t\t\tbreak;\n \t\t\tcase 'p':\n+#if defined CA_SET_PID\n \t\t\t\tprintf(\"%s: PID\\n\", __FUNCTION__);\n \t\t\t\tdst_set_pid(cafd);\n+#else\n+\t\t\t\tprintf(\"%s: PID not supported\\n\", __FUNCTION__);\n+#endif\n \t\t\t\tbreak;\n \t\t\tcase 'g':\n \t\t\t\tprintf(\"%s: Get Desc\\n\", __FUNCTION__);\n"
  },
  {
    "path": "package/dvb-apps/0006-fix-glibc-2.31.patch",
    "content": "dvbdate: fix compilation error with glibc 2.31\n\nas stime func doesn't exists anymore in newer versions of glibc >= 2.31 due\nto obseletion, a replacment with clock_settime is inorder to fix the issue.\n\nSigned-off-by: Dagg Stompler <daggs@gmx.com>\n\n--- a/util/dvbdate/dvbdate.c\n+++ b/util/dvbdate/dvbdate.c\n@@ -309,7 +309,10 @@\n  */\n int set_time(time_t * new_time)\n {\n-\tif (stime(new_time)) {\n+\tstruct timespec s = {0};\n+\ts.tv_sec = new_time;\n+\n+\tif (clock_settime(CLOCK_REALTIME, &s)) {\n \t\tperror(\"Unable to set time\");\n \t\treturn -1;\n \t}\n"
  },
  {
    "path": "package/dvb-apps/Config.in",
    "content": "config BR2_PACKAGE_DVB_APPS\n\tbool \"dvb-apps\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Install a small number of DVB test and utility programs,\n\t  including szap and dvbscan.\n\n\t  http://linuxtv.org/projects.php\n\t  http://linuxtv.org/hg/dvb-apps\n\ncomment \"dvb-apps utils needs a toolchain w/ threads, headers >= 3.3\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3\n"
  },
  {
    "path": "package/dvb-apps/dvb-apps.hash",
    "content": "# Locally computed:\nsha256  926208b7e711b4bab1a909ff9bf4e6ae54acdd30a46f5d5bd700ecb088fe1f57  dvb-apps-3d43b280298c39a67d1d889e01e173f52c12da35.tar.gz\n\n# Hash for license files:\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\nsha256  4fd46f32582c29007657e2daad8d0a6d954cf4e9d2e47bae8f8d8c32765fc987  COPYING.LGPL\n"
  },
  {
    "path": "package/dvb-apps/dvb-apps.mk",
    "content": "################################################################################\n#\n# dvb-apps\n#\n################################################################################\n\nDVB_APPS_VERSION = 3d43b280298c39a67d1d889e01e173f52c12da35\nDVB_APPS_SITE = http://linuxtv.org/hg/dvb-apps\nDVB_APPS_SITE_METHOD = hg\nDVB_APPS_LICENSE = GPL-2.0, GPL-2.0+, LGPL-2.1+\nDVB_APPS_LICENSE_FILES = COPYING COPYING.LGPL\n\nifeq ($(BR2_ENABLE_LOCALE),)\nDVB_APPS_DEPENDENCIES += libiconv\nDVB_APPS_LDLIBS += -liconv\nendif\n\nDVB_APPS_MAKE_OPTS = PERL5LIB=$(@D)/util/scan\n\nifeq ($(BR2_STATIC_LIBS),y)\nDVB_APPS_MAKE_OPTS += enable_shared=no\nelse ifeq ($(BR2_SHARED_LIBS),y)\nDVB_APPS_MAKE_OPTS += enable_static=no\nendif\n\nDVB_APPS_INSTALL_STAGING = YES\n\ndefine DVB_APPS_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) LDLIBS=\"$(DVB_APPS_LDLIBS)\" \\\n\t\t$(MAKE1) -C $(@D) CROSS_ROOT=$(STAGING_DIR) \\\n\t\t$(DVB_APPS_MAKE_OPTS)\nendef\n\ndefine DVB_APPS_INSTALL_STAGING_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(DVB_APPS_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install\nendef\n\ndefine DVB_APPS_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(DVB_APPS_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dvblast/0001-missing-lm.patch",
    "content": "dvblast: fix static linking\n\ndvblast links to -lev, wihch uses functions from the maths library,\nlike floor().\n\nWhen linking to a shared libev.so, that dependency is automatically\npulled in because libev as a DT_NEEDED ELF tag on libm.so.\n\nBut when lnking to the static libev.a, since there is no way to express\nsuch dependencies in static libraries, libm is not pulled in, which\nleads to build failures such as;\n    http://autobuild.buildroot.org/results/1f0/1f02f84fb926839a1adbe3af457bb909fdc44433/build-end.log\n\nFix that by always linking to -lm (which must come *after* -lev).\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN dvblast-3.0.orig/Makefile dvblast-3.0/Makefile\n--- dvblast-3.0.orig/Makefile\t2015-10-05 17:51:14.000000000 +0200\n+++ dvblast-3.0/Makefile\t2015-10-30 15:57:19.547123894 +0100\n@@ -28,7 +28,7 @@\n LDLIBS += -lstreammaster\n endif\n \n-LDLIBS_DVBLAST += -lpthread -lev\n+LDLIBS_DVBLAST += -lpthread -lev -lm\n \n 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\n OBJ_DVBLASTCTL = util.o dvblastctl.o\n"
  },
  {
    "path": "package/dvblast/0002-fix-int-types.patch",
    "content": "Standard integer types are uintXX_t not u_intXX_t\n\nThis fixes the build with the musl C library.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN dvblast-3.0.orig/dvblast.h dvblast-3.0/dvblast.h\n--- dvblast-3.0.orig/dvblast.h\t2015-10-05 17:51:14.000000000 +0200\n+++ dvblast-3.0/dvblast.h\t2015-10-30 16:29:25.586125193 +0100\n@@ -49,10 +49,10 @@\n  * Raw udp packet structure with flexible-array payload\n  *****************************************************************************/\n struct udpheader { // FAVOR_BSD hell ...\n-  u_int16_t source;\n-  u_int16_t dest;\n-  u_int16_t len;\n-  u_int16_t check;\n+  uint16_t source;\n+  uint16_t dest;\n+  uint16_t len;\n+  uint16_t check;\n };\n \n #if defined(__FreeBSD__) || defined(__APPLE__)\n"
  },
  {
    "path": "package/dvblast/Config.in",
    "content": "config BR2_PACKAGE_DVBLAST\n\tbool \"dvblast\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_BITSTREAM\n\tselect BR2_PACKAGE_LIBEV\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  DVBlast is a simple and powerful MPEG-2/TS demux and\n\t  streaming application.\n\n\t  http://www.videolan.org/projects/dvblast.html\n\ncomment \"dvblast needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/dvblast/dvblast.hash",
    "content": "# From https://get.videolan.org/dvblast/3.4/dvblast-3.4.tar.bz2.md5\nmd5 148a26e1207e111f905461cfb1cd106a  dvblast-3.4.tar.bz2\n# From https://get.videolan.org/dvblast/3.4/dvblast-3.4.tar.bz2.sha256\nsha256 7abd45aff738544017350af87ec7ebad00fcfb4e4effd04f35023d504d9b6f44  dvblast-3.4.tar.bz2\n# Locally computed\nsha256 94f68aec169fb6c9937eade757251714d38a56812be5dbfc3973914a71ad8d2d  COPYING\nsha256 2c1bea2f338d46ee6f2712f2c2bf05b874327ca0bec5eb0b7b4fbe208a23677f  COPYING.WTFPL\n"
  },
  {
    "path": "package/dvblast/dvblast.mk",
    "content": "################################################################################\n#\n# dvblast\n#\n################################################################################\n\nDVBLAST_VERSION = 3.4\nDVBLAST_SOURCE = dvblast-$(DVBLAST_VERSION).tar.bz2\nDVBLAST_SITE = https://get.videolan.org/dvblast/$(DVBLAST_VERSION)\nDVBLAST_LICENSE = GPL-2.0+, WTFPL\nDVBLAST_LICENSE_FILES = COPYING COPYING.WTFPL\nDVBLAST_DEPENDENCIES = bitstream libev\n\nDVBLAST_MAKE_ENV = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS)\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nDVBLAST_DEPENDENCIES += libiconv\nDVBLAST_MAKE_ENV += LDLIBS=-liconv\nendif\n\ndefine DVBLAST_BUILD_CMDS\n\t$(DVBLAST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine DVBLAST_INSTALL_TARGET_CMDS\n\t$(DVBLAST_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) PREFIX=/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/dvbsnoop/0001-musl-types-h.patch",
    "content": "Fix musl build\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr dvbsnoop-1.4.50.org/src/misc/helper.h dvbsnoop-1.4.50/src/misc/helper.h\n--- dvbsnoop-1.4.50.org/src/misc/helper.h\t2006-01-02 20:04:56.000000000 +0100\n+++ dvbsnoop-1.4.50/src/misc/helper.h\t2016-01-24 14:35:02.000000000 +0100\n@@ -16,6 +16,7 @@\n #ifndef __HELPER_H\n #define __HELPER_H\n \n+#include <sys/types.h>\n \n u_long outBit_Sx (int verbosity, const char *text, u_char *buf, int startbit, int bitlen);\n u_long outBit_Sx_NL (int verbosity, const char *text, u_char *buf, int startbit, int bitlen);\n"
  },
  {
    "path": "package/dvbsnoop/Config.in",
    "content": "config BR2_PACKAGE_DVBSNOOP\n\tbool \"dvbsnoop\"\n\thelp\n\t  Dvbsnoop is just a simple tool to analyze, view or debug a\n\t  transport stream (TS), program elementary stream (PES) or even\n\t  a program stream (PS). Dvbsnoop is trying to get input mostly\n\t  direct from a frontend (satellite or cable tuner inside a\n\t  set-top box for example) via DVB APIv3 to view into a TS, or a\n\t  demux to view PES or PS (also mostly inside the set-top box or\n\t  even PCI Card or USB Plug) but also from a file (recorded TS).\n\t  Dvbsnoop is working well on SD transport streams but may have\n\t  some limited functionality on HD transport streams\n\t  (DVB-{C,S,T}2 because of missing knowledge how to handle it.\n\n\t  Dvbsnoop itself doesn't do the tuning on the frontend, this\n\t  has to be done by external helpers or manually driver call.\n\t  The dvbsnoop tool was written while developing the software\n\t  Neutrino on the set-top box DBox2.\n\n\t  http://dvbsnoop.sourceforge.net\n\t  http://en.wikipedia.org/wiki/DBox2\n"
  },
  {
    "path": "package/dvbsnoop/dvbsnoop.hash",
    "content": "# Locally computed:\nsha256  7658498b26a5d2a0242e81f0cfafa0e43a2bec56f8674e7ac197dfc310866ec6  dvbsnoop-1.4.50.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/dvbsnoop/dvbsnoop.mk",
    "content": "################################################################################\n#\n# dvbsnoop\n#\n################################################################################\n\nDVBSNOOP_VERSION = 1.4.50\nDVBSNOOP_SITE = http://downloads.sourceforge.net/project/dvbsnoop/dvbsnoop/dvbsnoop-$(DVBSNOOP_VERSION)\nDVBSNOOP_LICENSE = GPL-2.0\nDVBSNOOP_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dvdauthor/Config.in",
    "content": "config BR2_PACKAGE_DVDAUTHOR\n\tbool \"dvdauthor\"\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  DVDAuthor is a set of tools to help you author the file and\n\t  directory structure of a DVD-Video disc, including\n\t  programmatic commands for implementing interactive behaviour.\n\t  It is driven by command lines and XML control files, though\n\t  there are other programs that provide GUI-based front ends\n\t  if you prefer\n\n\t  http://dvdauthor.sourceforge.net\n\nif BR2_PACKAGE_DVDAUTHOR\n\nconfig BR2_PACKAGE_DVDAUTHOR_DVDUNAUTHOR\n\tbool \"dvdunauthor\"\n\tselect BR2_PACKAGE_LIBDVDREAD\n\thelp\n\t  This option enables the dvdunauthor program, which requires\n\t  libdvdread.\n\nendif\n"
  },
  {
    "path": "package/dvdauthor/dvdauthor.hash",
    "content": "# From https://sourceforge.net/projects/dvdauthor/files\nmd5 1173dcb8d40e74fc90c0f3a25dbd642d  dvdauthor-0.7.2.tar.gz\nsha1 0e605642140576bfb3e963414d77630d1c073a51  dvdauthor-0.7.2.tar.gz\n# Locally computed\nsha256  3020a92de9f78eb36f48b6f22d5a001c47107826634a785a62dfcd080f612eb7  dvdauthor-0.7.2.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/dvdauthor/dvdauthor.mk",
    "content": "################################################################################\n#\n# dvdauthor\n#\n################################################################################\n\nDVDAUTHOR_VERSION = 0.7.2\nDVDAUTHOR_SITE = https://sourceforge.net/projects/dvdauthor/files\nDVDAUTHOR_DEPENDENCIES = host-pkgconf libxml2 freetype libpng\nDVDAUTHOR_LICENSE = GPL-2.0+\nDVDAUTHOR_LICENSE_FILES = COPYING\nDVDAUTHOR_CONF_ENV = \\\n\tac_cv_prog_FREETYPECONFIG=$(STAGING_DIR)/usr/bin/freetype-config \\\n\tac_cv_path_XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config \\\n\tac_cv_prog_GMAGICKCONFIG=\n\nifeq ($(BR2_PACKAGE_IMAGEMAGICK),y)\nDVDAUTHOR_DEPENDENCIES += imagemagick\nDVDAUTHOR_CONF_ENV += \\\n\tac_cv_prog_MAGICKCONFIG=$(STAGING_DIR)/usr/bin/Magick-config\nelse\nDVDAUTHOR_CONF_ENV += \\\n\tac_cv_prog_MAGICKCONFIG=\nendif\n\n# Automatically detected by dvdauthor configure script, no way to\n# disable.\nifeq ($(BR2_PACKAGE_FONTCONFIG),y)\nDVDAUTHOR_DEPENDENCIES += fontconfig\nendif\n\nifeq ($(BR2_PACKAGE_LIBFRIBIDI),y)\nDVDAUTHOR_DEPENDENCIES += libfribidi\nendif\n\nifeq ($(BR2_PACKAGE_DVDAUTHOR_DVDUNAUTHOR),y)\nDVDAUTHOR_DEPENDENCIES += libdvdread\n# dvdauthor configure does not use pkg-config to detect libdvdread\nifeq ($(BR2_PACKAGE_LIBDVDCSS)$(BR2_STATIC_LIBS),yy)\nDVDAUTHOR_CONF_ENV += LIBS=\"-ldvdcss\"\nendif\nDVDAUTHOR_CONF_OPTS += --enable-dvdunauthor\nelse\nDVDAUTHOR_CONF_OPTS += --disable-dvdunauthor\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/dvdrw-tools/0001-limits.h.patch",
    "content": "transport.hxx: add limits.h include now needed because of kernel changes\n\nSigned-off-by: Steve Kenton <skenton@ou.edu>\n\ndiff -pruN dvd+rw-tools-7.1.ori/transport.hxx dvd+rw-tools-7.1/transport.hxx\n--- dvd+rw-tools-7.1.ori/transport.hxx\t2008-03-01 04:34:43.000000000 -0600\n+++ dvd+rw-tools-7.1/transport.hxx\t2015-01-18 15:47:24.245863631 -0600\n@@ -9,6 +9,7 @@\n #if defined(__unix) || defined(__unix__)\n #include <stdio.h>\n #include <stdlib.h>\n+#include <limits.h>\n #include <unistd.h>\n #include <string.h>\n #include <sys/types.h>\n@@ -40,6 +41,7 @@ inline long getmsecs()\n #include <stddef.h>\n #include <stdio.h>\n #include <stdlib.h>\n+#include <limits.h>\n #define ssize_t\t\tLONG_PTR\n #define off64_t\t\t__int64\n \n"
  },
  {
    "path": "package/dvdrw-tools/0002-Include-sysmacros.h-to-compile-with-newer-gcc.patch",
    "content": "growisofs.c: include sysmacros.h to compile with glibc-2.28\n\nSigned-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>\n\ndiff -urpN dvd+rw-tools-7.1.orig/growisofs.c dvd+rw-tools-7.1/growisofs.c\n--- dvd+rw-tools-7.1.orig/growisofs.c\t2018-09-08 01:56:11.686656819 +0200\n+++ dvd+rw-tools-7.1/growisofs.c\t2018-09-08 02:11:45.868778471 +0200\n@@ -441,6 +441,7 @@\n #include <fcntl.h>\n #include <sys/types.h>\n #include <sys/stat.h>\n+#include <sys/sysmacros.h>\n #include <assert.h>\n #include \"mp.h\"\n"
  },
  {
    "path": "package/dvdrw-tools/Config.in",
    "content": "comment \"dvdrw-tools needs a toolchain w/ threads, C++, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_DVDRW_TOOLS\n\tbool \"dvdrw-tools\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  The dvd+rw-tools are used to master Blu-ray Disc\n\t  and DVD Disc media, both +RW/+R and -RW/-R. Note:\n\t  The +RW in the name is a historical artifact. This\n\t  package contains the widely used growisofs program.\n\n\t  Buildroot does not support packages with a '+' sign\n\t  in their name, which explains why it is named\n\t  dvdrw-tools and not dvd+rw-tools.\n\n\t  Because dvd+rw-tools does not directly interact with\n\t  disc media it uses a separate media backend program.\n\t  The usual backend is mkisofs from the cdrtools package.\n\t  However, cdrtools is not currently part of buildroot.\n\n\t  The Linux From Scratch project uses uses xorriso for the\n\t  media backend and Ubuntu uses cdrkit for the backend.\n\t  Choose the one which seems most appropriate for your use.\n\t  NOTE: xorriso does not currently support UDF.\n\n\t  http://fy.chalmers.se/~appro/linux/DVD+RW/tools\n\nif BR2_PACKAGE_DVDRW_TOOLS\nchoice\n\tprompt \"Media Backend\"\n\thelp\n\t  Choose which media backend program to use.\n\nconfig BR2_PACKAGE_DVDRW_TOOLS_CDRKIT_BACKEND\n\tbool \"cdrkit\"\n\tselect BR2_PACKAGE_CDRKIT\n\thelp\n\t  Symlink mkisofs to genisoimage from the cdrkit package.\n\nconfig BR2_PACKAGE_DVDRW_TOOLS_XORRISO_BACKEND\n\tbool \"xorriso\"\n\tselect BR2_PACKAGE_XORRISO\n\thelp\n\t  Symlink mkisofs to xorrisofs from the xorriso package.\n\nendchoice\nendif\n"
  },
  {
    "path": "package/dvdrw-tools/dvdrw-tools.hash",
    "content": "# Locally computed using sha256sum\nsha256  f8d60f822e914128bcbc5f64fbe3ed131cbff9045dca7e12c5b77b26edde72ca  dvd+rw-tools-7.1.tar.gz\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  LICENSE\n"
  },
  {
    "path": "package/dvdrw-tools/dvdrw-tools.mk",
    "content": "################################################################################\n#\n# dvdrw-tools\n#\n################################################################################\n\nDVDRW_TOOLS_VERSION = 7.1\nDVDRW_TOOLS_SOURCE = dvd+rw-tools-$(DVDRW_TOOLS_VERSION).tar.gz\nDVDRW_TOOLS_SITE = http://fy.chalmers.se/~appro/linux/DVD+RW/tools\nDVDRW_TOOLS_LICENSE = GPL-2.0\nDVDRW_TOOLS_LICENSE_FILES = LICENSE\nDVDRW_TOOLS_DEPENDENCIES = host-m4\n\ndefine DVDRW_TOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\nifeq ($(BR2_PACKAGE_DVDRW_TOOLS_CDRKIT_BACKEND),y)\nDVDRW_TOOLS_BACKEND = genisoimage\nDVDRW_TOOLS_DEPENDENCIES += cdrkit\nelse ifeq ($(BR2_PACKAGE_DVDRW_TOOLS_XORRISO_BACKEND),y)\nDVDRW_TOOLS_BACKEND = xorrisofs\nDVDRW_TOOLS_DEPENDENCIES += xorriso\nendif\n\ndefine DVDRW_TOOLS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/dvd-ram-control $(TARGET_DIR)/usr/bin/dvd-ram-control\n\t$(INSTALL) -m 0755 -D $(@D)/dvd+rw-booktype $(TARGET_DIR)/usr/bin/dvd+rw-booktype\n\t$(INSTALL) -m 0755 -D $(@D)/dvd+rw-format $(TARGET_DIR)/usr/bin/dvd+rw-format\n\t$(INSTALL) -m 0755 -D $(@D)/dvd+rw-mediainfo $(TARGET_DIR)/usr/bin/dvd+rw-mediainfo\n\t$(INSTALL) -m 0755 -D $(@D)/growisofs $(TARGET_DIR)/usr/bin/growisofs\n\tln -s -f $(DVDRW_TOOLS_BACKEND) $(TARGET_DIR)/usr/bin/mkisofs\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/e2fsprogs/Config.in",
    "content": "menuconfig BR2_PACKAGE_E2FSPROGS\n\tbool \"e2fsprogs\"\n\tdepends on BR2_USE_MMU # util-linux/libblkid\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  The EXT2 file system utilities.\n\n\t  The following programs are always built and installed:\n\t  badblocks chattr debugfs dumpe2fs e2freefrag e2fsck e2image\n\t  e2undo e4crypt e4defrag filefrag fsck fuse2fs logsave lsattr\n\t  mke2fs mklost+found resize2fs tune2fs\n\n\t  The uuid utilities (uuidd, uuidgen) are not built. Use the\n\t  ones from util-linux, instead.\n\n\t  Other programs can be selected individually.\n\n\t  http://e2fsprogs.sourceforge.net\n\nif BR2_PACKAGE_E2FSPROGS\n\nconfig BR2_PACKAGE_E2FSPROGS_DEBUGFS\n\tbool \"debugfs\"\n\thelp\n\t  ext2/ext3/ext4 file system debugger\n\nconfig BR2_PACKAGE_E2FSPROGS_E2IMAGE\n\tbool \"e2image\"\n\thelp\n\t  Save critical ext2/ext3/ext4 filesystem metadata to a file\n\nconfig BR2_PACKAGE_E2FSPROGS_E2SCRUB\n\tbool \"e2scrub\"\n\tdepends on BR2_PACKAGE_BASH  # runtime\n\tdepends on BR2_PACKAGE_COREUTILS  # runtime\n\tdepends on BR2_PACKAGE_LVM2  # runtime\n\tdepends on BR2_PACKAGE_UTIL_LINUX  # runtime\n\thelp\n\t  Check the contents of a mounted ext[234] filesystem\n\ncomment \"e2scrub needs bash, coreutils, lvm2, and util-linux\"\n\tdepends on !BR2_PACKAGE_BASH || !BR2_PACKAGE_COREUTILS \\\n\t\t|| !BR2_PACKAGE_LVM2 || !BR2_PACKAGE_UTIL_LINUX\n\nconfig BR2_PACKAGE_E2FSPROGS_E4DEFRAG\n\tbool \"e4defrag\"\n\tdepends on !BR2_nios2 # fallocate not implemented\n\tdepends on !BR2_TOOLCHAIN_USES_UCLIBC # sync_file_range not impl\n\thelp\n\t  Online defragmenter for ext4 filesystem\n\ncomment \"e4defrag needs a glibc or musl toolchain\"\n\tdepends on !BR2_nios2\n\tdepends on BR2_TOOLCHAIN_USES_UCLIBC\n\nconfig BR2_PACKAGE_E2FSPROGS_FSCK\n\tbool \"fsck\"\n\tdefault y\n\tdepends on !BR2_PACKAGE_UTIL_LINUX_FSCK\n\thelp\n\t  Check and repair a Linux file system. This is a wrapper around\n\t  the filesystem-specific fsck tools.\n\nconfig BR2_PACKAGE_E2FSPROGS_FUSE2FS\n\tbool \"fuse2fs\"\n\tdepends on !BR2_STATIC_LIBS # libfuse\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libfuse\n\tselect BR2_PACKAGE_LIBFUSE\n\thelp\n\t  FUSE file system client for ext2/ext3/ext4 file systems\n\ncomment \"fuse2fs needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_E2FSPROGS_RESIZE2FS\n\tbool \"resize2fs\"\n\thelp\n\t  ext2/ext3/ext4 file system resizer\n\nendif\n"
  },
  {
    "path": "package/e2fsprogs/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_E2FSPROGS\n\tbool \"host e2fsprogs\"\n\tselect BR2_PACKAGE_HOST_UTIL_LINUX\n\thelp\n\t  The EXT2/3/4 file system utilities.\n\n\t  http://e2fsprogs.sourceforge.net\n"
  },
  {
    "path": "package/e2fsprogs/e2fsprogs.hash",
    "content": "# From https://mirrors.edge.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.46.3/sha256sums.asc\nsha256  b11042533c1b1dcf17512f0da48e05b0c573dada1dd8b762864d10f4dc399713  e2fsprogs-1.46.4.tar.xz\n# Locally calculated\nsha256  5da5ef153e559c1d990d4c3eedbedd4442db892d37eae1f35fff069de8ec9020  NOTICE\nsha256  032989b508f1a72ebee5b3417e55d06d473f9ee203e45ab11864a7e49cdec63d  lib/ss/mit-sipb-copyright.h\nsha256  47182fe6631a32f271a15bbe210751b3825b7199f588879aac7d4804fc8b4b8f  lib/et/internal.h\n"
  },
  {
    "path": "package/e2fsprogs/e2fsprogs.mk",
    "content": "################################################################################\n#\n# e2fsprogs\n#\n################################################################################\n\nE2FSPROGS_VERSION = 1.46.4\nE2FSPROGS_SOURCE = e2fsprogs-$(E2FSPROGS_VERSION).tar.xz\nE2FSPROGS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/people/tytso/e2fsprogs/v$(E2FSPROGS_VERSION)\nE2FSPROGS_LICENSE = GPL-2.0, MIT-like with advertising clause (libss and libet)\nE2FSPROGS_LICENSE_FILES = NOTICE lib/ss/mit-sipb-copyright.h lib/et/internal.h\nE2FSPROGS_CPE_ID_VENDOR = e2fsprogs_project\nE2FSPROGS_INSTALL_STAGING = YES\n\n# Use libblkid and libuuid from util-linux for host and target packages.\n# This prevents overriding them with e2fsprogs' ones, which may cause\n# problems for other packages.\nE2FSPROGS_DEPENDENCIES = host-pkgconf util-linux\nHOST_E2FSPROGS_DEPENDENCIES = host-pkgconf host-util-linux\n\nE2FSPROGS_SELINUX_MODULES = fstools\n\n# e4defrag doesn't build on older systems like RHEL5.x, and we don't\n# need it on the host anyway.\n# Disable fuse2fs as well to avoid carrying over deps, and it's unused\nHOST_E2FSPROGS_CONF_OPTS = \\\n\t--disable-defrag \\\n\t--disable-e2initrd-helper \\\n\t--disable-fuse2fs \\\n\t--disable-fsck \\\n\t--disable-libblkid \\\n\t--disable-libuuid \\\n\t--disable-testio-debug \\\n\t--enable-symlink-install \\\n\t--enable-elf-shlibs \\\n\t--with-crond-dir=no \\\n\t--with-udev-rules-dir=no \\\n\t--with-systemd-unit-dir=no\n\n# Set the binary directories to \"/bin\" and \"/sbin\", as busybox does,\n# so that we do not end up with two versions of e2fs tools.\nE2FSPROGS_CONF_OPTS = \\\n\t--bindir=/bin \\\n\t--sbindir=/sbin \\\n\t$(if $(BR2_STATIC_LIBS),--disable-elf-shlibs,--enable-elf-shlibs) \\\n\t$(if $(BR2_PACKAGE_E2FSPROGS_DEBUGFS),--enable-debugfs,--disable-debugfs) \\\n\t$(if $(BR2_PACKAGE_E2FSPROGS_E2IMAGE),--enable-imager,--disable-imager) \\\n\t$(if $(BR2_PACKAGE_E2FSPROGS_E4DEFRAG),--enable-defrag,--disable-defrag) \\\n\t$(if $(BR2_PACKAGE_E2FSPROGS_FSCK),--enable-fsck,--disable-fsck) \\\n\t$(if $(BR2_PACKAGE_E2FSPROGS_RESIZE2FS),--enable-resizer,--disable-resizer) \\\n\t--disable-uuidd \\\n\t--disable-libblkid \\\n\t--disable-libuuid \\\n\t--disable-e2initrd-helper \\\n\t--disable-testio-debug \\\n\t--disable-rpath \\\n\t--enable-symlink-install\n\nifeq ($(BR2_PACKAGE_E2FSPROGS_FUSE2FS),y)\nE2FSPROGS_CONF_OPTS += --enable-fuse2fs\nE2FSPROGS_DEPENDENCIES += libfuse\nelse\nE2FSPROGS_CONF_OPTS += --disable-fuse2fs\nendif\n\nifeq ($(BR2_nios2),y)\nE2FSPROGS_CONF_ENV += ac_cv_func_fallocate=no\nendif\n\nE2FSPROGS_CONF_ENV += ac_cv_path_LDCONFIG=true\n\nHOST_E2FSPROGS_CONF_ENV += ac_cv_path_LDCONFIG=true\n\nE2FSPROGS_INSTALL_STAGING_OPTS = \\\n\tDESTDIR=$(STAGING_DIR) \\\n\tinstall-libs\n\n# e2scrub has no associated --enable/disable option\nifneq ($(BR2_PACKAGE_E2FSPROGS_E2SCRUB),y)\nE2FSPROGS_MAKE_OPTS += E2SCRUB_DIR=\nendif\n\nE2FSPROGS_INSTALL_TARGET_OPTS = \\\n\t$(E2FSPROGS_MAKE_OPTS) \\\n\tDESTDIR=$(TARGET_DIR) \\\n\tinstall\n\n# Package does not build in parallel due to improper make rules\ndefine HOST_E2FSPROGS_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE1) -C $(@D) install install-libs\nendef\n\n# Remove compile_et which raises a build failure with samba4\ndefine HOST_E2FSPROGS_REMOVE_COMPILE_ET\n\t$(RM) $(HOST_DIR)/bin/compile_et\nendef\nHOST_E2FSPROGS_POST_INSTALL_HOOKS += HOST_E2FSPROGS_REMOVE_COMPILE_ET\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/e2tools/Config.in",
    "content": "config BR2_PACKAGE_E2TOOLS\n\tbool \"e2tools\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR # uses wchar_t\n\tdepends on BR2_USE_MMU # e2fsprogs\n\tselect BR2_PACKAGE_E2FSPROGS\n\thelp\n\t  E2tools is a simple set of GPL'ed utilities to read, write,\n\t  and manipulate files in an ext2/ext3 filesystem. These\n\t  utilities access a filesystem directly using the ext2fs\n\t  library.\n\n\t  https://github.com/ndim/e2tools\n\ncomment \"e2tools needs a toolchain w/ threads, wchar\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/e2tools/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_E2TOOLS\n\tbool \"host e2tools\"\n\tselect BR2_PACKAGE_HOST_E2FSPROGS\n\thelp\n\t  E2tools is a simple set of GPL'ed utilities to read, write,\n\t  and manipulate files in an ext2/ext3 filesystem.  These\n\t  utilities access a filesystem directly using the ext2fs\n\t  library.\n\n\t  https://github.com/ndim/e2tools\n"
  },
  {
    "path": "package/e2tools/e2tools.hash",
    "content": "# Locally calculated\nsha256 1d06ca71f01483ad6d9a514e31466e7d2357b3465de2813d667a8b2f9638544e  e2tools-0.0.16.4.tar.gz\nsha256 0e79fd282723e1eb3f7381d41233a83ed20cf3e8c83aa53e6847bf7ffe781583  COPYING\n"
  },
  {
    "path": "package/e2tools/e2tools.mk",
    "content": "################################################################################\n#\n# e2tools\n#\n################################################################################\n\nE2TOOLS_VERSION = 0.0.16.4\nE2TOOLS_SITE = $(call github,ndim,e2tools,v$(E2TOOLS_VERSION))\n\n# Source coming from GitHub, no configure included.\nE2TOOLS_AUTORECONF = YES\nE2TOOLS_LICENSE = GPL-2.0\nE2TOOLS_LICENSE_FILES = COPYING\nE2TOOLS_DEPENDENCIES = e2fsprogs\nE2TOOLS_CONF_ENV = LIBS=\"-lpthread\"\nHOST_E2TOOLS_DEPENDENCIES = host-e2fsprogs\nHOST_E2TOOLS_CONF_ENV = LIBS=\"-lpthread\"\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/earlyoom/Config.in",
    "content": "config BR2_PACKAGE_EARLYOOM\n\tbool \"earlyoom\"\n\tdepends on BR2_USE_MMU\n\thelp\n\t  Early OOM daemon for Linux.\n\n\t  User space daemon for triggering Linux OOM killer\n\t  before running out of memory, avoiding situations\n\t  where the machine becomes unresponsive from out of\n\t  control swapping.\n\n\t  https://github.com/rfjakob/earlyoom\n"
  },
  {
    "path": "package/earlyoom/S02earlyoom",
    "content": "#!/bin/sh\n\nDAEMON=\"earlyoom\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nEARLYOOM_ARGS=\"\"\n\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf() 'Starting %s: ' \"$DAEMON\"\n\tstart-stop-daemon -b -m -S -q -p \"$PIDFILE\" -x \"/bin/$DAEMON\" \\\n\t       -- $EARLYOOM_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/earlyoom/earlyoom.hash",
    "content": "# locally calculated\nsha256  227234cf9e77831c21c748bd361e1a7c415e158b96034eacd59e70586779bb6c  earlyoom-1.6.2.tar.gz\n# License files, locally calculated\nsha256  e730b3ec729de46d987ae73f30ed337e4cbe832f09205330acfa71848c6e0087  LICENSE\n"
  },
  {
    "path": "package/earlyoom/earlyoom.mk",
    "content": "################################################################################\n#\n# earlyoom\n#\n################################################################################\n\nEARLYOOM_VERSION = 1.6.2\nEARLYOOM_SITE = $(call github,rfjakob,earlyoom,v$(EARLYOOM_VERSION))\nEARLYOOM_LICENSE = MIT\nEARLYOOM_LICENSE_FILES = LICENSE\n\nEARLYOOM_BUILD_TARGETS = earlyoom.service earlyoom\nEARLYOOM_INSTALL_TARGETS = install-default install-bin\nEARLYOOM_CFLAGS = '$(TARGET_CFLAGS) -std=gnu99 -DVERSION=\\\"1.6\\\"'\n\nEARLYOOM_MAKE_OPTS = \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tPREFIX=/usr\n\ndefine EARLYOOM_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(EARLYOOM_MAKE_OPTS) -C $(@D) \\\n\t\t$(EARLYOOM_BUILD_TARGETS) CFLAGS=$(EARLYOOM_CFLAGS)\nendef\n\ndefine EARLYOOM_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(EARLYOOM_MAKE_OPTS) -C $(@D) \\\n\t\t$(EARLYOOM_INSTALL_TARGETS) DESTDIR=$(TARGET_DIR)\nendef\n\ndefine EARLYOOM_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 $(EARLYOOM_PKGDIR)/S02earlyoom \\\n\t\t$(TARGET_DIR)/etc/init.d/S02earlyoom\nendef\n\ndefine EARLYOOM_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(@D)/earlyoom.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/earlyoom.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/easy-rsa/Config.in",
    "content": "config BR2_PACKAGE_EASY_RSA\n\tbool \"easy-rsa\"\n\tselect BR2_PACKAGE_OPENSSL # runtime\n\tselect BR2_PACKAGE_LIBOPENSSL_BIN if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBRESSL_BIN if BR2_PACKAGE_LIBRESSL\n\thelp\n\t  Simple shell based CA utility\n\n\t  This package eases the creation of certificates, for example\n\t  for openvpn clients.\n\n\t  This was formerly part of the openvpn package.\n\n\t  easy-rsa is a wrapper script around OpenSSL binaries.\n\n\t  https://github.com/OpenVPN/easy-rsa\n"
  },
  {
    "path": "package/easy-rsa/easy-rsa.hash",
    "content": "# Locally computed: (after verifying gpg sig)\nsha512  fd2cde4725cffd60c6af1b6aeaff0dbf15f31f0f322c9df75c22838e2297ba9dc3bba610d956464c8227bd74b3e63840e2a3da41fbc5ee1c79c1e7f5350adc94  EasyRSA-3.0.8.tgz\n\n# Hash for license files\nsha256  7c4a4fc71745d93a87278801f1bca555562ca23f21e18293add64b9e6f6b7bf1  COPYING.md\nsha256  640d90f6ee401241ff62834d0d1b33f83049e99b8bfdfa04ed1b0a1635dde3e7  gpl-2.0.txt\n"
  },
  {
    "path": "package/easy-rsa/easy-rsa.mk",
    "content": "################################################################################\n#\n# easy-rsa\n#\n################################################################################\n\nEASY_RSA_VERSION = 3.0.8\nEASY_RSA_SOURCE = EasyRSA-$(EASY_RSA_VERSION).tgz\nEASY_RSA_SITE = https://github.com/OpenVPN/easy-rsa/releases/download/v$(EASY_RSA_VERSION)\nEASY_RSA_LICENSE = GPL-2.0\nEASY_RSA_LICENSE_FILES = COPYING.md gpl-2.0.txt\n\n# shell script, so no build step\n\ndefine EASY_RSA_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/easyrsa $(TARGET_DIR)/usr/bin/easyrsa\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/easy-rsa/x509-types\n\t$(INSTALL) -m 0644 -t $(TARGET_DIR)/etc/easy-rsa/x509-types $(@D)/x509-types/*\n\t$(INSTALL) -D -m 0644 $(@D)/openssl-easyrsa.cnf $(TARGET_DIR)/etc/easy-rsa/openssl-easyrsa.cnf\n\t$(INSTALL) -D -m 0644 $(@D)/vars.example $(TARGET_DIR)/etc/easy-rsa/vars\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/easydbus/Config.in",
    "content": "config BR2_PACKAGE_EASYDBUS\n\tbool \"easydbus\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on !BR2_PACKAGE_LUA_5_4\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Easy to use DBus library for Lua.\n\n\t  https://github.com/mniestroj/easydbus\n\ncomment \"easydbus needs a toolchain w/ wchar, threads, Lua <= 5.3\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_PACKAGE_LUA_5_4\n"
  },
  {
    "path": "package/easydbus/easydbus.hash",
    "content": "# Locally calculated\nsha256  8cec24bff40f056d4874ed9d6fb73c9f1efbc5eff14528e1b49f1a162b197f26  easydbus-0.1.0.tar.gz\nsha256  dec3b3103cd6889045da86fc7da22bd25545966e5bd7c214791b922dec19588b  LICENSE\n"
  },
  {
    "path": "package/easydbus/easydbus.mk",
    "content": "################################################################################\n#\n# easydbus\n#\n################################################################################\n\nEASYDBUS_VERSION = 0.1.0\nEASYDBUS_SITE = $(call github,mniestroj,easydbus,v$(EASYDBUS_VERSION))\nEASYDBUS_DEPENDENCIES = luainterpreter libglib2\nEASYDBUS_LICENSE = MIT\nEASYDBUS_LICENSE_FILES = LICENSE\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/easyframes/0001-CMakesLists.txt-fix-static-build-with-pcap.patch",
    "content": "From 89ad9c143825b13d028c2f1713d55e83135d5c0f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 5 Sep 2020 15:38:33 +0200\nSubject: [PATCH] CMakesLists.txt: fix static build with pcap\n\nUse pkg-config to find the dependencies of pcap such as libnl otherwise\na static-only build will fail on:\n\n[100%] Linking C executable ef\n/srv/storage/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /srv/storage/autobuild/run/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libpcap.a(pcap-linux.o): in function `nl80211_init':\npcap-linux.c:(.text+0x460): undefined reference to `nl_socket_alloc'\n/srv/storage/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: pcap-linux.c:(.text+0x498): undefined reference to `genl_connect'\n\nFixes:\n - http://autobuild.buildroot.org/results/99062bfc8c21c32bc835acae675aede7c9cf0c90\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/microchip-ung/easyframes/pull/2]\n---\n CMakeLists.txt | 20 ++++++++++++++------\n 1 file changed, 14 insertions(+), 6 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex a62a950..5be128c 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -7,13 +7,21 @@ include_directories(src)\n \n \n set(_LIBPCAP \"\")\n-FIND_PATH(PCAP_INCLUDE_DIR NAMES pcap/pcap.h)\n-FIND_LIBRARY(PCAP_LIBRARY NAMES pcap)\n-\n-if (PCAP_LIBRARY)\n+find_package(PkgConfig)\n+pkg_check_modules(PCAP libpcap)\n+if (PCAP_FOUND)\n     add_definitions(-DHAS_LIBPCAP)\n-    include_directories(${PCAP_INCLUDE_DIR})\n-    set(_LIBPCAP ${PCAP_LIBRARY})\n+    include_directories(${PCAP_INCLUDE_DIRS})\n+    set(_LIBPCAP ${PCAP_LIBRARIES})\n+else()\n+    FIND_PATH(PCAP_INCLUDE_DIR NAMES pcap/pcap.h)\n+    FIND_LIBRARY(PCAP_LIBRARY NAMES pcap)\n+\n+    if (PCAP_LIBRARY)\n+        add_definitions(-DHAS_LIBPCAP)\n+        include_directories(${PCAP_INCLUDE_DIR})\n+        set(_LIBPCAP ${PCAP_LIBRARY})\n+    endif()\n endif()\n \n add_library(libef STATIC\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/easyframes/0002-Fix-different-compiling-issues.patch",
    "content": "From d3d179c3c39ec10ec636b325325ad8e18ae9542f Mon Sep 17 00:00:00 2001\nFrom: Horatiu Vultur <horatiu.vultur@microchip.com>\nDate: Tue, 1 Sep 2020 13:03:47 +0200\nSubject: [PATCH] Fix different compiling issues\n\n[Retrieved from:\nhttps://github.com/microchip-ung/easyframes/commit/d3d179c3c39ec10ec636b325325ad8e18ae9542f]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/ef-exec.c        | 4 ++--\n src/ef-parse-bytes.c | 8 ++++++--\n src/ef.h             | 4 ++--\n 3 files changed, 10 insertions(+), 6 deletions(-)\n\ndiff --git a/src/ef-exec.c b/src/ef-exec.c\nindex 3d184a0..824164e 100644\n--- a/src/ef-exec.c\n+++ b/src/ef-exec.c\n@@ -108,7 +108,7 @@ int ring_wait_for_init(tpacket_ring *ring) {\n \n \n int raw_socket(cmd_socket_t *cmd_socket) {\n-    int s, res, val, ifidx;\n+    int s, res, val, ifidx, i;\n     struct sockaddr_ll sa = {};\n     struct packet_mreq mr = {};\n \n@@ -194,7 +194,7 @@ int raw_socket(cmd_socket_t *cmd_socket) {\n     //\n     // TODO: This does not seem to be needed, if we uses a RX ring buffer\n     // instead (atleast that seems to work for libpcap)\n-    for (int i = 0; i < 10000; ++i) {\n+    for (i = 0; i < 10000; ++i) {\n         struct msghdr msg = { 0 };\n         int res = recvmsg(s, &msg, MSG_DONTWAIT);\n         if (res < 0)\ndiff --git a/src/ef-parse-bytes.c b/src/ef-parse-bytes.c\nindex 1dd590f..1785f45 100644\n--- a/src/ef-parse-bytes.c\n+++ b/src/ef-parse-bytes.c\n@@ -2,6 +2,7 @@\n #include <errno.h>\n #include <stdio.h>\n #include <stdlib.h>\n+#include <endian.h>\n #include <arpa/inet.h>\n \n struct start_with {\n@@ -212,7 +213,9 @@ buf_t *parse_bytes(const char *s, int bytes) {\n     for (s = data_begin; *s; ++s) {\n         int match_found = 0;\n         for (i = 0; i < sizeof(has_chars)/sizeof(has_chars[0]); ++i) {\n-            for (const char *set_i = has_chars[i].char_set; *set_i; ++set_i) {\n+            const char *set_i;\n+\n+            for (set_i = has_chars[i].char_set; *set_i; ++set_i) {\n                 if (*s == *set_i) {\n                     has_mask |= has_chars[i].mask;\n                     match_found = 1;\n@@ -313,6 +316,7 @@ buf_t *parse_bytes(const char *s, int bytes) {\n                ((has_mask & ~(HAS_HEX_COL)) == 0) && (has_mask & HAS_COLON)) {\n         // This will be treated as a mac-address\n         uint8_t m[6] = {};\n+        const char *x;\n \n         // We want to be able to write something like this (like we RFC2373\n         // specifies for IPv6):\n@@ -334,7 +338,7 @@ buf_t *parse_bytes(const char *s, int bytes) {\n \n         //po(\"line: %d data_begin: %s\\n\", __LINE__, data_begin);\n \n-        for (const char *x = data_begin; *x; ++x) {\n+        for (x = data_begin; *x; ++x) {\n             int colon = 0;\n             int val = 0;\n \ndiff --git a/src/ef.h b/src/ef.h\nindex 8926c25..f4c1629 100644\n--- a/src/ef.h\n+++ b/src/ef.h\n@@ -59,8 +59,8 @@ void bl_check(buf_list_t *b);\n void bl_reset(buf_list_t *b);\n void bset_value(buf_t *b, uint8_t v);\n \n-inline void bl_init(buf_list_t *b) { bl_reset(b); }\n-inline void bl_destroy(buf_list_t *b) { bl_reset(b); }\n+static inline void bl_init(buf_list_t *b) { bl_reset(b); }\n+static inline void bl_destroy(buf_list_t *b) { bl_reset(b); }\n \n int bl_printf_append(buf_list_t *b, const char *format, ...)\n     __attribute__ ((format (printf, 2, 3)));\n"
  },
  {
    "path": "package/easyframes/Config.in",
    "content": "config BR2_PACKAGE_EASYFRAMES\n\tbool \"easyframes\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  This is a small and simple command-line tool for network\n\t  testing.  The tool makes it simple to compose a frame,\n\t  inject and express what and where frames are expected to be\n\t  received.\n\n\t  https://github.com/microchip-ung/easyframes\n"
  },
  {
    "path": "package/easyframes/easyframes.hash",
    "content": "# locally calculated\nsha256 3c0449b3129c29b5ecf67b689f1a75ffc65fde3c5f62811e2f0439ce4f4af392 easyframes-0.3.tar.gz\nsha256 24f37598e822a1411fb7164ce7eb3ef120aea8279016399abc282c2381ce3f57 COPYING\n"
  },
  {
    "path": "package/easyframes/easyframes.mk",
    "content": "################################################################################\n#\n# easyframes\n#\n################################################################################\n\nEASYFRAMES_VERSION = 0.3\nEASYFRAMES_SITE = $(call github,microchip-ung,easyframes,v$(EASYFRAMES_VERSION))\nEASYFRAMES_DEPENDENCIES = host-pkgconf libpcap\nEASYFRAMES_LICENSE = MIT\nEASYFRAMES_LICENSE_FILES = COPYING\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/ebtables/0001-replace-ebtables-save-perl-script-with-bash.patch",
    "content": "From 73536d15c80be96049289d96fc32122467c56b1d Mon Sep 17 00:00:00 2001\nFrom: Matt Weber <matthew.weber@rockwellcollins.com>\nDate: Mon, 16 Dec 2019 13:27:30 -0600\nSubject: [PATCH] ebtables: replace ebtables-save perl script with bash rewrite\n\nFedora provides a bash replacement for the default ebtables-save perl\nscript. Using it allows the ebtables run-time dependency on perl to\nbe replaced with a runtime dependency on bash - which is lower\noverhead and more likely to be present on typical embedded systems\nalready.\n\n  https://bugzilla.redhat.com/show_bug.cgi?id=746040\n  http://pkgs.fedoraproject.org/cgit/rpms/ebtables.git/tree/ebtables-save\n\nUpstream:\nhttps://github.com/openembedded/meta-openembedded/commit/7f723007364ba79de05447671e83d4eefb3097dc\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n[ryanbarnett3@gmail.com:\n - changed EBTABLES executable to /usr/sbin/ebtables-legacy\n]\nSigned-off-by: Ryan Barnett <ryanbarnett3@gmail.com>\n---\n ebtables-save.sh | 43 +++++++++++++++++++++++++++++++++++++++++++\n 1 file changed, 43 insertions(+)\n create mode 100644 ebtables-save.sh\n\ndiff --git a/ebtables-save.sh b/ebtables-save.sh\nnew file mode 100644\nindex 0000000..2d7fc4e\n--- /dev/null\n+++ b/ebtables-save.sh\n@@ -0,0 +1,43 @@\n+#!/bin/bash\n+\n+EBTABLES=\"/usr/sbin/ebtables-legacy\"\n+\n+[ -x \"$EBTABLES\" ] || exit 1\n+\n+echo \"# Generated by ebtables-save v1.0 on $(date)\"\n+\n+cnt=\"\"\n+[ \"x$EBTABLES_SAVE_COUNTER\" = \"xyes\" ] && cnt=\"--Lc\"\n+\n+for table_name in $(grep -E '^ebtable_' /proc/modules | cut -f1 -d' ' | sed s/ebtable_//); do\n+    table=$($EBTABLES -t $table_name -L $cnt)\n+    [ $? -eq 0 ] || { echo \"$table\"; exit -1; }\n+\n+    chain=\"\"\n+    rules=\"\"\n+    while read line; do\n+\t[ -z \"$line\" ] && continue\n+\n+\tcase \"$line\" in \n+\t    Bridge\\ table:\\ *)\n+\t\techo \"*${line:14}\"\n+\t\t;;\n+\t    Bridge\\ chain:\\ *)\n+\t\tchain=\"${line:14}\"\n+\t\tchain=\"${chain%%,*}\"\n+\t\tpolicy=\"${line##*policy: }\"\n+\t\techo \":$chain $policy\"\n+\t\t;;\n+\t    *)\n+\t\tif [ \"$cnt\" = \"--Lc\" ]; then\n+\t\t    line=${line/, pcnt \\=/ -c}\n+\t\t    line=${line/-- bcnt \\=/}\n+\t\tfi\n+\t\trules=\"$rules-A $chain $line\\n\"\n+\t\t;;\n+\tesac\n+    done <<EOF\n+$table\n+EOF\n+    echo -e $rules\n+done\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/ebtables/0002-ebtables.h-restore-KERNEL_64_USERSPACE_32-checks.patch",
    "content": "From 7297a8ef3cab3b0faf1426622ee902a2144e2e89 Mon Sep 17 00:00:00 2001\nFrom: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\nDate: Wed, 24 Mar 2021 11:27:14 +0100\nSubject: [PATCH] ebtables.h: restore KERNEL_64_USERSPACE_32 checks\n\nCommit e6359eedfbf497e52d52451072aea4713ed80a88 replaced the file ebtables.h\nbut removed the usage of KERNEL_64_USERSPACE_32. This breaks boards where\nsuch flag is relevant, with following messages:\n\n[ 6364.971346] kernel msg: ebtables bug: please report to author: Standard target size too big\n\nUnable to update the kernel. Two possible causes:\n1. Multiple ebtables programs were executing simultaneously. The ebtables\n   userspace tool doesn't by default support multiple ebtables programs running\n   concurrently. The ebtables option --concurrent or a tool like flock can be\n   used to support concurrent scripts that update the ebtables kernel tables.\n2. The kernel doesn't support a certain ebtables extension, consider\n   recompiling your kernel or insmod the extension.\n\nAnalysis shows that the structure 'ebt_replace' passed from userspace\nebtables to the kernel, is too small, i.e 80 bytes instead of 120 in case of\n64-bit kernel.\n\nNote that the ebtables build system seems to assume that 'sparc64' is the\nonly case where KERNEL_64_USERSPACE_32 is relevant, but this is not true.\nThis situation can happen on many architectures, especially in embedded\nsystems. For example, an Aarch64 processor with kernel in 64-bit but\nuserland build for 32-bit Arm. Or a 64-bit MIPS Octeon III processor, with\nuserland running in the 'n32' ABI.\n\nSigned-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\nUpstream-Status: http://patchwork.ozlabs.org/project/netfilter-devel/patch/20210518181730.13436-1-patrickdepinguin@gmail.com/\n---\n include/linux/netfilter_bridge/ebtables.h | 21 +++++++++++++++++++++\n 1 file changed, 21 insertions(+)\n\ndiff --git a/include/linux/netfilter_bridge/ebtables.h b/include/linux/netfilter_bridge/ebtables.h\nindex 5be75f2..3c2b61e 100644\n--- a/include/linux/netfilter_bridge/ebtables.h\n+++ b/include/linux/netfilter_bridge/ebtables.h\n@@ -49,12 +49,21 @@ struct ebt_replace {\n \t/* total size of the entries */\n \tunsigned int entries_size;\n \t/* start of the chains */\n+#ifdef KERNEL_64_USERSPACE_32\n+\tuint64_t hook_entry[NF_BR_NUMHOOKS];\n+#else\n \tstruct ebt_entries *hook_entry[NF_BR_NUMHOOKS];\n+#endif\n \t/* nr of counters userspace expects back */\n \tunsigned int num_counters;\n \t/* where the kernel will put the old counters */\n+#ifdef KERNEL_64_USERSPACE_32\n+\tuint64_t counters;\n+\tuint64_t entries;\n+#else\n \tstruct ebt_counter *counters;\n \tchar *entries;\n+#endif\n };\n \n struct ebt_replace_kernel {\n@@ -129,6 +138,9 @@ struct ebt_entry_match {\n \t} u;\n \t/* size of data */\n \tunsigned int match_size;\n+#ifdef KERNEL_64_USERSPACE_32\n+\tunsigned int pad;\n+#endif\n \tunsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));\n };\n \n@@ -142,6 +154,9 @@ struct ebt_entry_watcher {\n \t} u;\n \t/* size of data */\n \tunsigned int watcher_size;\n+#ifdef KERNEL_64_USERSPACE_32\n+\tunsigned int pad;\n+#endif\n \tunsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));\n };\n \n@@ -155,6 +170,9 @@ struct ebt_entry_target {\n \t} u;\n \t/* size of data */\n \tunsigned int target_size;\n+#ifdef KERNEL_64_USERSPACE_32\n+\tunsigned int pad;\n+#endif\n \tunsigned char data[0] __attribute__ ((aligned (__alignof__(struct ebt_replace))));\n };\n \n@@ -162,6 +180,9 @@ struct ebt_entry_target {\n struct ebt_standard_target {\n \tstruct ebt_entry_target target;\n \tint verdict;\n+#ifdef KERNEL_64_USERSPACE_32\n+\tunsigned int pad;\n+#endif\n };\n \n /* one entry */\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/ebtables/0003-configure.ac-add-option-enable-kernel-64-userland-32.patch",
    "content": "From ebf0236270b977a62c522bc32810bc9f8edc72d1 Mon Sep 17 00:00:00 2001\nFrom: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\nDate: Wed, 24 Mar 2021 13:40:14 +0100\nSubject: [PATCH] configure.ac: add option --enable-kernel-64-userland-32\n\nThe ebtables build system seems to assume that 'sparc64' is the\nonly case where KERNEL_64_USERSPACE_32 is relevant, but this is not true.\nThis situation can happen on many architectures, especially in embedded\nsystems. For example, an Aarch64 processor with kernel in 64-bit but\nuserland build for 32-bit Arm. Or a 64-bit MIPS Octeon III processor, with\nuserland running in the 'n32' ABI.\n\nWhile it is possible to set CFLAGS in the environment when calling the\nconfigure script, the caller would need to know to not only specify\nKERNEL_64_USERSPACE_32 but also the EBT_MIN_ALIGN value.\n\nInstead, add a configure option. All internal details can then be handled by\nthe configure script.\n\nSigned-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\nUpstream-Status: http://patchwork.ozlabs.org/project/netfilter-devel/patch/20210518181730.13436-2-patrickdepinguin@gmail.com/\n---\n configure.ac | 9 ++++++++-\n 1 file changed, 8 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex c24ede3..3e89c0c 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -15,10 +15,17 @@ AS_IF([test \"x$LOCKFILE\" = x], [LOCKFILE=\"/var/lib/ebtables/lock\"])\n \n regular_CFLAGS=\"-Wall -Wunused\"\n regular_CPPFLAGS=\"\"\n+\n case \"$host\" in\n \tsparc64-*)\n-\t\tregular_CPPFLAGS=\"$regular_CPPFLAGS -DEBT_MIN_ALIGN=8 -DKERNEL_64_USERSPACE_32\";;\n+\t\tenable_kernel_64_userland_32=yes ;;\n esac\n+AC_ARG_ENABLE([kernel-64-userland-32],\n+    AC_HELP_STRING([--enable-kernel-64-userland-32], [indicate that ebtables will be built as a 32-bit application but run under a 64-bit kernel])\n+)\n+AS_IF([test \"x$enable_kernel_64_userland_32\" = xyes],\n+    [regular_CPPFLAGS=\"$regular_CPPFLAGS -DEBT_MIN_ALIGN=8 -DKERNEL_64_USERSPACE_32\"]\n+)\n \n AC_SUBST([regular_CFLAGS])\n AC_SUBST([regular_CPPFLAGS])\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/ebtables/Config.in",
    "content": "config BR2_PACKAGE_EBTABLES\n\tbool \"ebtables\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Ethernet bridge frame table administration\n\n\t  http://ebtables.netfilter.org/\n\nif BR2_PACKAGE_EBTABLES\n\nconfig BR2_PACKAGE_EBTABLES_UTILS_SAVE\n\tbool \"ebtables save\"\n\tselect BR2_PACKAGE_BASH # runtime\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash\n\thelp\n\t  Install the ebtables-legacy-save tool\n\nconfig BR2_PACKAGE_EBTABLES_UTILS_RESTORE\n\tbool \"ebtables restore\"\n\thelp\n\t  Install the ebtables-legacy-restore tool\n\nendif\n"
  },
  {
    "path": "package/ebtables/ebtables.hash",
    "content": "# ftp://ftp.netfilter.org/pub/ebtables/ebtables-2.0.11.tar.gz.sha256sum\nsha256  b71f654784a726329f88b412ef7b96b4e5d786ed2bd28193ed7b4c0d677dfd2a  ebtables-2.0.11.tar.gz\n# Locally computed\nsha256  ebdb8ae564c952792017ec680e2edd30443642216eb9f8a3d8fa166c0cb628c1  COPYING\n"
  },
  {
    "path": "package/ebtables/ebtables.mk",
    "content": "################################################################################\n#\n# ebtables\n#\n################################################################################\n\nEBTABLES_VERSION = 2.0.11\nEBTABLES_SITE = http://ftp.netfilter.org/pub/ebtables\nEBTABLES_LICENSE = GPL-2.0+\nEBTABLES_LICENSE_FILES = COPYING\nEBTABLES_CPE_ID_VENDOR = netfilter\nEBTABLES_SELINUX_MODULES = iptables\n\n# for 0003-configure.ac-add-option-enable-kernel-64-userland-32.patch\nEBTABLES_AUTORECONF = YES\nifeq ($(BR2_KERNEL_64_USERLAND_32),y)\nEBTABLES_CONF_OPTS += --enable-kernel-64-userland-32\nendif\n\nifeq ($(BR2_PACKAGE_EBTABLES_UTILS_SAVE),y)\ndefine EBTABLES_INSTALL_TARGET_UTILS_SAVE\n\t$(INSTALL) -m 0755 -D $(@D)/ebtables-save.sh $(TARGET_DIR)/usr/sbin/ebtables-legacy-save\nendef\nEBTABLES_POST_INSTALL_TARGET_HOOKS += EBTABLES_INSTALL_TARGET_UTILS_SAVE\nelse\n# ebtables-legacy-save is installed by default, thus remove it from target\ndefine EBTABLES_REMOVE_UTILS_SAVE\n\t$(RM) -f $(TARGET_DIR)/usr/sbin/ebtables-legacy-save\nendef\nEBTABLES_POST_INSTALL_TARGET_HOOKS += EBTABLES_REMOVE_UTILS_SAVE\nendif\n\n# ebtables-legacy-restore is installed by default, thus remove it if not\n# selected\nifeq ($(BR2_PACKAGE_EBTABLES_UTILS_RESTORE),)\ndefine EBTABLES_REMOVE_UTILS_RESTORE\n\t$(RM) -f $(TARGET_DIR)/usr/sbin/ebtables-legacy-restore\nendef\nEBTABLES_POST_INSTALL_TARGET_HOOKS += EBTABLES_REMOVE_UTILS_RESTORE\nendif\n\nifeq ($(BR2_PACKAGE_IPTABLES_NFTABLES),)\ndefine EBTABLES_INSTALL_LEGACY_SYMLINK\n\tln -sf /usr/sbin/ebtables-legacy $(TARGET_DIR)/sbin/ebtables\nendef\nEBTABLES_POST_INSTALL_TARGET_HOOKS += EBTABLES_INSTALL_LEGACY_SYMLINK\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ecryptfs-utils/0001-musl.patch",
    "content": "fix musl build\n\nPatch inspired by\nhttps://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\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr ecryptfs-utils-109.org/src/utils/mount.ecryptfs_private.c ecryptfs-utils-109/src/utils/mount.ecryptfs_private.c\n--- ecryptfs-utils-109.org/src/utils/mount.ecryptfs_private.c\t2016-01-22 17:04:52.000000000 +0100\n+++ ecryptfs-utils-109/src/utils/mount.ecryptfs_private.c\t2016-01-24 16:52:37.000000000 +0100\n@@ -224,6 +224,7 @@\n \n static int check_cwd_f_type()\n {\n+\tstruct statfs buf;\n \t/**\n \t * This is *not* a list of compatible lower filesystems list for\n \t * eCryptfs. This is a list of filesystems that we reasonably expect to\n@@ -235,7 +236,7 @@\n \t * deceive other programs with a crafted /proc/self/*. See\n \t * https://launchpad.net/bugs/1530566 for more details.\n \t */\n-\t__SWORD_TYPE f_type_whitelist[] = {\n+\ttypeof(buf.f_type) f_type_whitelist[] = {\n \t\t0x61756673 /* AUFS_SUPER_MAGIC */,\n \t\t0x9123683E /* BTRFS_SUPER_MAGIC */,\n \t\t0x00C36400 /* CEPH_SUPER_MAGIC */,\n@@ -259,7 +260,6 @@\n \t\t0x58465342 /* XFS_SB_MAGIC */,\n \t\t0x2FC12FC1 /* ZFS_SUPER_MAGIC */,\n \t};\n-\tstruct statfs buf;\n \tsize_t i, whitelist_len;\n \n \tif (statfs(\".\", &buf) != 0) {\n"
  },
  {
    "path": "package/ecryptfs-utils/0002-openssl110.patch",
    "content": "Fix build with OpenSSL 1.1.x\n\nDownloaded from upstream commit\nhttps://code.launchpad.net/~jelle-vdwaa/ecryptfs/ecryptfs/+merge/319746\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n=== modified file 'src/key_mod/ecryptfs_key_mod_openssl.c'\n--- a/src/key_mod/ecryptfs_key_mod_openssl.c\t2013-10-25 19:45:09 +0000\n+++ b/src/key_mod/ecryptfs_key_mod_openssl.c\t2017-06-02 18:27:28 +0000\n@@ -41,6 +41,7 @@\n #include <stdlib.h>\n #include <unistd.h>\n #include <libgen.h>\n+#include <openssl/bn.h>\n #include <openssl/pem.h>\n #include <openssl/rsa.h>\n #include <openssl/err.h>\n@@ -55,6 +56,19 @@\n \tchar *passphrase;\n };\n \n+#if OPENSSL_VERSION_NUMBER < 0x10100000L\n+static void RSA_get0_key(const RSA *r,\n+                 const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)\n+{\n+   if (n != NULL)\n+       *n = r->n;\n+   if (e != NULL)\n+       *e = r->e;\n+   if (d != NULL)\n+       *d = r->d;\n+}\n+#endif\n+\n static void\n ecryptfs_openssl_destroy_openssl_data(struct openssl_data *openssl_data)\n {\n@@ -142,6 +156,7 @@\n {\n \tint len, nbits, ebits, i;\n \tint nbytes, ebytes;\n+\tconst BIGNUM *key_n, *key_e;\n \tunsigned char *hash;\n \tunsigned char *data = NULL;\n \tint rc = 0;\n@@ -152,11 +167,13 @@\n \t\trc = -ENOMEM;\n \t\tgoto out;\n \t}\n-\tnbits = BN_num_bits(key->n);\n+\tRSA_get0_key(key, &key_n, NULL, NULL);\n+\tnbits = BN_num_bits(key_n);\n \tnbytes = nbits / 8;\n \tif (nbits % 8)\n \t\tnbytes++;\n-\tebits = BN_num_bits(key->e);\n+\tRSA_get0_key(key, NULL, &key_e, NULL);\n+\tebits = BN_num_bits(key_e);\n \tebytes = ebits / 8;\n \tif (ebits % 8)\n \t\tebytes++;\n@@ -179,11 +196,13 @@\n \tdata[i++] = '\\02';\n \tdata[i++] = (nbits >> 8);\n \tdata[i++] = nbits;\n-\tBN_bn2bin(key->n, &(data[i]));\n+\tRSA_get0_key(key, &key_n, NULL, NULL);\n+\tBN_bn2bin(key_n, &(data[i]));\n \ti += nbytes;\n \tdata[i++] = (ebits >> 8);\n \tdata[i++] = ebits;\n-\tBN_bn2bin(key->e, &(data[i]));\n+\tRSA_get0_key(key, NULL, &key_e, NULL);\n+\tBN_bn2bin(key_e, &(data[i]));\n \ti += ebytes;\n \tSHA1(data, len + 3, hash);\n \tto_hex(sig, (char *)hash, ECRYPTFS_SIG_SIZE);\n@@ -278,7 +297,9 @@\n \tBIO *in = NULL;\n \tint rc;\n \n+\t#if OPENSSL_VERSION_NUMBER < 0x10100000L\n \tCRYPTO_malloc_init();\n+\t#endif\n \tERR_load_crypto_strings();\n \tOpenSSL_add_all_algorithms();\n \tENGINE_load_builtin_engines();\n\n=== modified file 'src/key_mod/ecryptfs_key_mod_pkcs11_helper.c'\n--- a/src/key_mod/ecryptfs_key_mod_pkcs11_helper.c\t2013-10-25 19:45:09 +0000\n+++ b/src/key_mod/ecryptfs_key_mod_pkcs11_helper.c\t2017-06-02 18:27:28 +0000\n@@ -41,6 +41,7 @@\n #include <errno.h>\n #include <stdlib.h>\n #include <unistd.h>\n+#include <openssl/bn.h>\n #include <openssl/err.h>\n #include <openssl/pem.h>\n #include <openssl/x509.h>\n@@ -77,6 +78,19 @@\n typedef const unsigned char *__pkcs11_openssl_d2i_t;\n #endif\n \n+#if OPENSSL_VERSION_NUMBER < 0x10100000L\n+static void RSA_get0_key(const RSA *r,\n+                 const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)\n+{\n+   if (n != NULL)\n+       *n = r->n;\n+   if (e != NULL)\n+       *e = r->e;\n+   if (d != NULL)\n+       *d = r->d;\n+}\n+#endif\n+\n /**\n  * ecryptfs_pkcs11h_deserialize\n  * @pkcs11h_data: The deserialized version of the key module data;\n@@ -282,7 +296,11 @@\n \t\tgoto out;\n \t}\n \t\n+\t#if OPENSSL_VERSION_NUMBER < 0x10100000L\n \tif (pubkey->type != EVP_PKEY_RSA) {\n+\t#else\n+\tif (EVP_PKEY_base_id(pubkey) != EVP_PKEY_RSA) {\n+\t#endif\n \t\tsyslog(LOG_ERR, \"PKCS#11: Invalid public key algorithm\");\n \t\trc = -EIO;\n \t\tgoto out;\n@@ -318,6 +336,7 @@\n \tint nbytes, ebytes;\n \tchar *hash = NULL;\n \tchar *data = NULL;\n+\tconst BIGNUM *rsa_n, *rsa_e;\n \tint rc;\n \n \tif ((rc = ecryptfs_pkcs11h_get_public_key(&rsa, blob))) {\n@@ -331,11 +350,13 @@\n \t\trc = -ENOMEM;\n \t\tgoto out;\n \t}\n-\tnbits = BN_num_bits(rsa->n);\n+\tRSA_get0_key(rsa, &rsa_n, NULL, NULL);\n+\tnbits = BN_num_bits(rsa_n);\n \tnbytes = nbits / 8;\n \tif (nbits % 8)\n \t\tnbytes++;\n-\tebits = BN_num_bits(rsa->e);\n+\tRSA_get0_key(rsa, NULL, &rsa_e, NULL);\n+\tebits = BN_num_bits(rsa_e);\n \tebytes = ebits / 8;\n \tif (ebits % 8)\n \t\tebytes++;\n@@ -358,11 +379,13 @@\n \tdata[i++] = '\\02';\n \tdata[i++] = (char)(nbits >> 8);\n \tdata[i++] = (char)nbits;\n-\tBN_bn2bin(rsa->n, &(data[i]));\n+\tRSA_get0_key(rsa, &rsa_n, NULL, NULL);\n+\tBN_bn2bin(rsa_n, &(data[i]));\n \ti += nbytes;\n \tdata[i++] = (char)(ebits >> 8);\n \tdata[i++] = (char)ebits;\n-\tBN_bn2bin(rsa->e, &(data[i]));\n+\tRSA_get0_key(rsa, NULL, &rsa_e, NULL);\n+\tBN_bn2bin(rsa_e, &(data[i]));\n \ti += ebytes;\n \tSHA1(data, len + 3, hash);\n \tto_hex(sig, hash, ECRYPTFS_SIG_SIZE);\n\n"
  },
  {
    "path": "package/ecryptfs-utils/0003-fix-parallel-build-issue.patch",
    "content": "fix parallel build issue\n\nBuild randomly fails since December 2017 on buildroot\n(http://autobuild.buildroot.org/?reason=ecryptfs-utils-111):\n\nmake[5]: Entering directory '/home/buildroot/autobuild/instance-2/output-1/build/ecryptfs-utils-111/src/utils'\n  /bin/mkdir -p '/home/buildroot/autobuild/instance-2/output-1/target/sbin'\n  /bin/bash ../../libtool   --mode=install /usr/bin/install -c mount.ecryptfs umount.ecryptfs mount.ecryptfs_private '/home/buildroot/autobuild/instance-2/output-1/target/sbin'\nlibtool: install: /usr/bin/install -c mount.ecryptfs /home/buildroot/autobuild/instance-2/output-1/target/sbin/mount.ecryptfs\n/usr/bin/install: cannot create regular file '/home/buildroot/autobuild/instance-2/output-1/target/sbin/mount.ecryptfs': File exists\nMakefile:832: recipe for target 'install-rootsbinPROGRAMS' failed\nmake[5]: *** [install-rootsbinPROGRAMS] Error 1\n\nAs spotted by Thomas Petazzoni, build failure happens because of the\nfollowing line in src/utils/Makefile.am:\n\ninstall-exec-hook:      install-rootsbinPROGRAMS\n        -rm -f \"$(DESTDIR)/$(rootsbindir)/umount.ecryptfs_private\"\n        $(LN_S) \"mount.ecryptfs_private\" \"$(DESTDIR)/$(rootsbindir)/umount.ecryptfs_private\"\n\nThe install-exec-hook target should not have a dependency on\ninstall-rootsbinPROGRAMS.\n\nFrom https://www.gnu.org/software/automake/manual/html_node/Extending.html#Extending:\n\n\"\"\"\nIn contrast, some rules also have a way to run another rule, called a\nhook; hooks are always executed after the main rule’s work is done. The\nhook is named after the principal target, with ‘-hook’ appended. The\ntargets allowing hooks are install-data, install-exec, uninstall, dist,\nand distcheck.\n\nFor instance, here is how to create a hard link to an installed program:\n\ninstall-exec-hook:\n        ln $(DESTDIR)$(bindir)/program$(EXEEXT) \\\n           $(DESTDIR)$(bindir)/proglink$(EXEEXT)\n\n\"\"\"\n\nSo, they explicitly say that these hooks are run after the main rule\nwork is done, which means the dependency on install-rootsbinPROGRAMS is\nnot needed. And the example they use to illustrate is *exactly* the\nsituation of ecryptfs-utils: creating a link to a program that was\ninstalled.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://bugs.launchpad.net/ecryptfs/+bug/1857622]\n\ndiff -Nuar ecryptfs-utils-111-orig/src/utils/Makefile.in ecryptfs-utils-111/src/utils/Makefile.in\n--- ecryptfs-utils-111-orig/src/utils/Makefile.in\t2019-12-26 15:14:16.656146065 +0100\n+++ ecryptfs-utils-111/src/utils/Makefile.in\t2019-12-26 17:36:07.108496164 +0100\n@@ -1522,7 +1522,7 @@\n .PRECIOUS: Makefile\n \n \n-install-exec-hook:\tinstall-rootsbinPROGRAMS\n+install-exec-hook:\n \t-rm -f \"$(DESTDIR)/$(rootsbindir)/umount.ecryptfs_private\"\n \t$(LN_S) \"mount.ecryptfs_private\" \"$(DESTDIR)/$(rootsbindir)/umount.ecryptfs_private\"\n \n"
  },
  {
    "path": "package/ecryptfs-utils/Config.in",
    "content": "config BR2_PACKAGE_ECRYPTFS_UTILS\n\tbool \"ecryptfs-utils\"\n\tdepends on BR2_USE_WCHAR # gettext\n\tdepends on BR2_USE_MMU # keyutils\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnss -> libnspr\n\tdepends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT # libnss -> libnspr\n\tdepends on !BR2_MIPS_NABI32 # libnss\n\tdepends on !BR2_STATIC_LIBS # libnss, keyutils\n\tselect BR2_PACKAGE_KEYUTILS\n\tselect BR2_PACKAGE_LIBNSS\n\t# runtime dependency only, some scripts are using the\n\t# 'gettext' program to get translations\n\tselect BR2_PACKAGE_GETTEXT\n\t# runtime dependency only\n\tselect BR2_PACKAGE_GETENT\n\thelp\n\t  eCryptfs is a POSIX-compliant enterprise cryptographic\n\t  filesystem for Linux. It is stacked on top of any other\n\t  Linux filesystem, it stores cryptographic metadata in the\n\t  header of each file written.\n\n\t  The eCryptfs kernel module is available in all Linux kernels\n\t  since version 2.6.19. This package provides userspace\n\t  utilities needed to mount eCryptfs.\n\n\t  Files are encrypted using a passphrase. Consider building\n\t  openssl for another method.\n\n\t  http://ecryptfs.org\n\ncomment \"ecryptfs-utils needs a toolchain w/ threads, wchar, dynamic library\"\n\tdepends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/ecryptfs-utils/ecryptfs-utils.hash",
    "content": "# From https://launchpad.net/ecryptfs/trunk/111/+download/ecryptfs-utils_111.orig.tar.gz/+md5\nmd5 83513228984f671930752c3518cac6fd  ecryptfs-utils_111.orig.tar.gz\n# Locally computed\nsha256 112cb3e37e81a1ecd8e39516725dec0ce55c5f3df6284e0f4cc0f118750a987f  ecryptfs-utils_111.orig.tar.gz\nsha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/ecryptfs-utils/ecryptfs-utils.mk",
    "content": "################################################################################\n#\n# ecryptfs-utils\n#\n################################################################################\n\nECRYPTFS_UTILS_VERSION = 111\nECRYPTFS_UTILS_SOURCE = ecryptfs-utils_$(ECRYPTFS_UTILS_VERSION).orig.tar.gz\nECRYPTFS_UTILS_SITE = https://launchpad.net/ecryptfs/trunk/$(ECRYPTFS_UTILS_VERSION)/+download\nECRYPTFS_UTILS_LICENSE = GPL-2.0+\nECRYPTFS_UTILS_LICENSE_FILES = COPYING\nECRYPTFS_UTILS_CPE_ID_VENDOR = ecryptfs\n\nECRYPTFS_UTILS_DEPENDENCIES = keyutils libnss host-intltool\nECRYPTFS_UTILS_CONF_OPTS = --disable-pywrap\n\n#Needed for build system to find pk11func.h and libnss3.so\nECRYPTFS_UTILS_CONF_ENV = \\\n\tac_cv_path_POD2MAN=true \\\n\tNSS_CFLAGS=\"-I$(STAGING_DIR)/usr/include/nss -I$(STAGING_DIR)/usr/include/nspr\" \\\n\tNSS_LIBS=\"-lnss3\"\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nECRYPTFS_UTILS_CONF_OPTS += --enable-pam\nECRYPTFS_UTILS_DEPENDENCIES += linux-pam\nelse\nECRYPTFS_UTILS_CONF_OPTS += --disable-pam\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nECRYPTFS_UTILS_CONF_OPTS += --enable-openssl\nECRYPTFS_UTILS_DEPENDENCIES += openssl\nelse\nECRYPTFS_UTILS_CONF_OPTS += --disable-openssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ed/Config.in",
    "content": "config BR2_PACKAGE_ED\n\tbool \"ed\"\n\thelp\n\t  A line-oriented text editor. Used to create, display, modify,\n\t  and otherwise manipulate text files. Often used in scripts\n\t  rather than invoked directly.\n\n\t  http://www.gnu.org/software/ed/\n"
  },
  {
    "path": "package/ed/ed.hash",
    "content": "# From https://lists.gnu.org/archive/html/bug-ed/2020-02/msg00002.html\nsha256  cfc07a14ab048a758473ce222e784fbf031485bcd54a76f74acfee1f390d8b2c  ed-1.16.tar.lz\n# Locally calculated\nsha256  f03a12bef9dfb7281864a0dd965166d4f4ec7a66633df2bc72fa4363e57de02c  COPYING\n"
  },
  {
    "path": "package/ed/ed.mk",
    "content": "################################################################################\n#\n# ed\n#\n################################################################################\n\nED_VERSION = 1.16\nED_SITE = $(BR2_GNU_MIRROR)/ed\nED_SOURCE = ed-$(ED_VERSION).tar.lz\nED_LICENSE = GPL-3.0+\nED_LICENSE_FILES = COPYING\nED_CPE_ID_VENDOR = gnu\n\ndefine ED_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_MAKE_ENV) ./configure \\\n\t\t--prefix=/usr \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t)\nendef\n\ndefine ED_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine ED_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=\"$(TARGET_DIR)\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/edid-decode/Config.in",
    "content": "config BR2_PACKAGE_EDID_DECODE\n\tbool \"edid-decode\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\thelp\n\t  Decode EDID data in human-readable format.\n\n\t  https://git.linuxtv.org/edid-decode.git/\n\ncomment \"edid-decode needs a toolchain w/ C++, gcc >= 4.7\"\n\tdepends on !!BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/edid-decode/edid-decode.hash",
    "content": "# Locally computed\nsha256  c1a6222083c59f0499b3e43c159aee7e4c6c07d33b790d490a13fd62942fa9b5  edid-decode-188950472c19492547e298b27f9da0d72cf826df-br1.tar.gz\nsha256  9bc7ab961e9a07dc84eaa0210af388def56d024357e79671fb89fe27d073eed7  LICENSE\n"
  },
  {
    "path": "package/edid-decode/edid-decode.mk",
    "content": "################################################################################\n#\n# edid-decode\n#\n################################################################################\n\nEDID_DECODE_VERSION = 188950472c19492547e298b27f9da0d72cf826df\nEDID_DECODE_SITE = git://linuxtv.org/edid-decode.git\nEDID_DECODE_LICENSE = MIT\nEDID_DECODE_LICENSE_FILES = LICENSE\n\ndefine EDID_DECODE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tCFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\nendef\n\ndefine EDID_DECODE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tDESTDIR=\"$(TARGET_DIR)\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/edk2-platforms/Config.in",
    "content": "config BR2_PACKAGE_EDK2_PLATFORMS\n\tbool\n\thelp\n\t  EDK2 description files for all supported platforms.\n\t  The main EDK2 bootloader package will depend on these\n\t  description files while building firmware for some platforms.\n\n\t  https://github.com/tianocore/edk2-platforms\n"
  },
  {
    "path": "package/edk2-platforms/edk2-platforms.hash",
    "content": "# Locally calculated\nsha256  dfdc34fea86e5037a3a6cbd2a83b1f655f16b4c9ab4f5ff9da91e45a358c9a14  edk2-platforms-db922e1253cb6f1fc456805bc42fb7d401eed5c2.tar.gz\nsha256  50ce20c9cfdb0e19ee34fe0a51fc0afe961f743697b068359ab2f862b494df80  License.txt\n"
  },
  {
    "path": "package/edk2-platforms/edk2-platforms.mk",
    "content": "################################################################################\n#\n# edk2-platforms\n#\n################################################################################\n\n# Keep in sync with latest commit as of the release date for boot/edk2\nEDK2_PLATFORMS_VERSION = db922e1253cb6f1fc456805bc42fb7d401eed5c2\nEDK2_PLATFORMS_SITE = $(call github,tianocore,edk2-platforms,$(EDK2_PLATFORMS_VERSION))\nEDK2_PLATFORMS_LICENSE = BSD-2-Clause\nEDK2_PLATFORMS_LICENSE_FILE = License.txt\nEDK2_PLATFORMS_INSTALL_TARGET = NO\nEDK2_PLATFORMS_INSTALL_STAGING = YES\n\n# There is nothing to build for edk2-platforms. All we need to do is to copy\n# all description files to staging, for other packages to build with.\ndefine EDK2_PLATFORMS_INSTALL_STAGING_CMDS\n\tmkdir -p $(STAGING_DIR)/usr/share/edk2-platforms\n\tcp -rf $(@D)/*/ $(STAGING_DIR)/usr/share/edk2-platforms/\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/efibootmgr/0001-Allow-build-with-uClibc.patch",
    "content": "From bbfcc60497c326576bb23cb01d90115ef3cf6947 Mon Sep 17 00:00:00 2001\nFrom: Andy Shevchenko <andriy.shevchenko@linux.intel.com>\nDate: Fri, 25 Nov 2016 20:26:52 +0200\nSubject: [PATCH] Remove unneeded <uchar.h> include\n\nThis fixes the build with uClibc.\n\nSigned-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>\n---\n src/efibootdump.c | 1 -\n src/eficonman.c   | 1 -\n 2 files changed, 2 deletions(-)\n\ndiff --git a/src/efibootdump.c b/src/efibootdump.c\nindex 6ff8360..7c5a1c5 100644\n--- a/src/efibootdump.c\n+++ b/src/efibootdump.c\n@@ -19,7 +19,6 @@\n #include <stdint.h>\n #include <stdio.h>\n #include <stdlib.h>\n-#include <uchar.h>\n #include <unistd.h>\n \n #include \"error.h\"\ndiff --git a/src/eficonman.c b/src/eficonman.c\nindex 2c2be38..9bfae79 100644\n--- a/src/eficonman.c\n+++ b/src/eficonman.c\n@@ -17,7 +17,6 @@\n #include <stdint.h>\n #include <stdio.h>\n #include <stdlib.h>\n-#include <uchar.h>\n #include <unistd.h>\n \n #define  _(String) gettext (String)\n-- \n2.10.2\n\n"
  },
  {
    "path": "package/efibootmgr/0002-remove-extra-decl.patch",
    "content": "From 99b578501643377e0b1994b2a068b790d189d5ad Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Wed, 13 Jun 2018 09:41:01 -0400\nSubject: [PATCH] remove extra decl\n\nDownloaded from upstream commit\nhttps://github.com/rhboot/efibootmgr/commit/99b578501643377e0b1994b2a068b790d189d5ad\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n src/efibootmgr.c | 3 ---\n 1 file changed, 3 deletions(-)\n\ndiff --git a/src/efibootmgr.c b/src/efibootmgr.c\nindex de38f01..4e1a680 100644\n--- a/src/efibootmgr.c\n+++ b/src/efibootmgr.c\n@@ -1536,9 +1536,6 @@ parse_opts(int argc, char **argv)\n \t\t\t\t\t       \"invalid numeric value %s\\n\",\n \t\t\t\t\t       optarg);\n \t\t\t}\n-                        /* XXX efivar-36 accidentally doesn't have a public\n-                         * header for this */\n-\t\t\textern int efi_set_verbose(int verbosity, FILE *errlog);\n \t\t\tefi_set_verbose(opts.verbose - 2, stderr);\n \t\t\tbreak;\n \t\tcase 'V':\n"
  },
  {
    "path": "package/efibootmgr/Config.in",
    "content": "config BR2_PACKAGE_EFIBOOTMGR\n\tbool \"efibootmgr\"\n\tdepends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS # efivar\n\tdepends on !BR2_STATIC_LIBS # efivar\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # efivar\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # efivar\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS\n\tselect BR2_PACKAGE_EFIVAR\n\tselect BR2_PACKAGE_POPT\n\thelp\n\t  A Linux user-space application to modify the Intel Extensible\n\t  Firmware Interface (EFI) Boot Manager. This application can\n\t  create and destroy boot entries, change the boot order, change\n\t  the next running boot option, and more.\n\n\t  https://github.com/rhboot/efibootmgr\n\ncomment \"efibootmgr needs a toolchain w/ dynamic library, headers >= 3.12, gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS\n\tdepends on BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS\n"
  },
  {
    "path": "package/efibootmgr/efibootmgr.hash",
    "content": "# locally computed hash\nsha256  22a95ebe0d5c9fb2915b3a100450f8f37484d1dbb8b296f55b343cc84f10397d  efibootmgr-17.tar.gz\nsha256  dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa  COPYING\n"
  },
  {
    "path": "package/efibootmgr/efibootmgr.mk",
    "content": "################################################################################\n#\n# efibootmgr\n#\n################################################################################\n\nEFIBOOTMGR_VERSION = 17\nEFIBOOTMGR_SITE = $(call github,rhboot,efibootmgr,$(EFIBOOTMGR_VERSION))\nEFIBOOTMGR_LICENSE = GPL-2.0+\nEFIBOOTMGR_LICENSE_FILES = COPYING\nEFIBOOTMGR_DEPENDENCIES = host-pkgconf efivar popt $(TARGET_NLS_DEPENDENCIES)\nEFIBOOTMGR_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\nEFIBOOTMGR_MAKE_ARGS = EFIDIR=buildroot\n\ndefine EFIBOOTMGR_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \\\n\t\tLDFLAGS=\"$(EFIBOOTMGR_LDFLAGS)\" $(MAKE1) -C $(@D) \\\n\t\t$(EFIBOOTMGR_MAKE_ARGS)\nendef\n\ndefine EFIBOOTMGR_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(EFIBOOTMGR_MAKE_ARGS) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/efivar/0001-Allow-build-with-uClibc.patch",
    "content": "From f1f24eb486c4376066884bae3c31f1c455a79836 Mon Sep 17 00:00:00 2001\nFrom: Andy Shevchenko <andriy.shevchenko@linux.intel.com>\nDate: Fri, 25 Nov 2016 19:42:27 +0200\nSubject: [PATCH] Allow build with uClibc\n\nBasically this replaces type definitions in <uchar.h>.\n\nSigned-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>\n---\n src/export.c | 8 +++++++-\n 1 file changed, 7 insertions(+), 1 deletion(-)\n\ndiff --git a/src/export.c b/src/export.c\nindex 8321bd3..ef36add 100644\n--- a/src/export.c\n+++ b/src/export.c\n@@ -23,10 +23,16 @@\n #include <inttypes.h>\n #include <stdint.h>\n #include <stdlib.h>\n-#include <uchar.h>\n \n #include \"efivar.h\"\n \n+#ifdef __UCLIBC__\n+typedef int_least16_t char16_t;\n+typedef int_least32_t char32_t;\n+#else\n+#include <uchar.h>\n+#endif\n+\n #define EFIVAR_MAGIC 0xf3df1597\n \n #define ATTRS_UNSET 0xa5a5a5a5a5a5a5a5\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/efivar/0002-dp.h-make-format_guid-handle-misaligned-guid-pointer.patch",
    "content": "From b98ba8921010d03f46704a476c69861515deb1ca Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Mon, 7 Jan 2019 10:30:59 -0500\nSubject: [PATCH] dp.h: make format_guid() handle misaligned guid pointers\n safely.\n\nGCC 9 adds -Werror=address-of-packed-member, which causes us to see the\nbuild error reported at\n https://bugzilla.opensuse.org/show_bug.cgi?id=1120862 .\n\nThat bug report shows us the following:\n\nIn file included from dp.c:26:\ndp.h: In function 'format_vendor_helper':\ndp.h:120:37: error: taking address of packed member of 'struct <anonymous>' may result in an unaligned pointer value [-Werror=address-of-packed-member]\n  120 |  format_guid(buf, size, off, label, &dp->hw_vendor.vendor_guid);\n      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~\ndp.h:74:25: note: in definition of macro 'format_guid'\n   74 |   _rc = efi_guid_to_str(guid, &_guidstr);   \\\n      |                         ^~~~\ncc1: all warnings being treated as errors\n\nThis patch makes format_guid() use a local variable as a bounce buffer\nin the case that the guid we're passed is aligned as chaotic neutral.\n\nNote that this only fixes this instance and there may be others that bz\ndidn't show because it exited too soon, and I don't have a gcc 9 build\nin front of me right now.\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\n[james.hilliard1@gmail.com: backport from upstream commit\nb98ba8921010d03f46704a476c69861515deb1ca]\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n---\n src/dp.h | 11 +++++++++--\n 1 file changed, 9 insertions(+), 2 deletions(-)\n\ndiff --git a/src/dp.h b/src/dp.h\nindex aa4e390..20cb608 100644\n--- a/src/dp.h\n+++ b/src/dp.h\n@@ -70,8 +70,15 @@\n #define format_guid(buf, size, off, dp_type, guid) ({\t\t\t\\\n \t\tint _rc;\t\t\t\t\t\t\\\n \t\tchar *_guidstr = NULL;\t\t\t\t\t\\\n-\t\t\t\t\t\t\t\t\t\\\n-\t\t_rc = efi_guid_to_str(guid, &_guidstr);\t\t\t\\\n+\t\tefi_guid_t _guid;\t\t\t\t\t\\\n+\t\tconst efi_guid_t * const _guid_p =\t\t\t\\\n+\t\t\tlikely(__alignof__(guid) == sizeof(guid))\t\\\n+\t\t\t\t? guid\t\t\t\t\t\\\n+\t\t\t\t: &_guid;\t\t\t\t\\\n+\t\t\t\t\t\t\t\t        \\\n+\t\tif (unlikely(__alignof__(guid) == sizeof(guid)))\t\\\n+\t\t\tmemmove(&_guid, guid, sizeof(_guid));\t\t\\\n+\t\t_rc = efi_guid_to_str(_guid_p, &_guidstr);\t\t\\\n \t\tif (_rc < 0) {\t\t\t\t\t\t\\\n \t\t\tefi_error(\"could not build %s GUID DP string\",\t\\\n \t\t\t\t  dp_type);\t\t\t\t\\\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/efivar/0003-Fix-all-the-places-Werror-address-of-packed-member-c.patch",
    "content": "From c3c553db85ff10890209d0fe48fb4856ad68e4e0 Mon Sep 17 00:00:00 2001\nFrom: Peter Jones <pjones@redhat.com>\nDate: Thu, 21 Feb 2019 15:20:12 -0500\nSubject: [PATCH] Fix all the places -Werror=address-of-packed-member catches.\n\nThis gets rid of all the places GCC 9's -Werror=address-of-packed-member\nflags as problematic.\n\nFixes github issue #123\n\nSigned-off-by: Peter Jones <pjones@redhat.com>\n[james.hilliard1@gmail.com: backport from upstream commit\nc3c553db85ff10890209d0fe48fb4856ad68e4e0]\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n---\n src/dp-message.c            |  6 ++++--\n src/dp.h                    | 12 ++++--------\n src/guid.c                  |  2 +-\n src/include/efivar/efivar.h |  2 +-\n src/ucs2.h                  | 27 +++++++++++++++++++--------\n 5 files changed, 29 insertions(+), 20 deletions(-)\n\ndiff --git a/src/dp-message.c b/src/dp-message.c\nindex 3724e5f..9f96466 100644\n--- a/src/dp-message.c\n+++ b/src/dp-message.c\n@@ -620,11 +620,13 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)\n \t\t\t  ) / sizeof(efi_ip_addr_t);\n \t\tformat(buf, size, off, \"Dns\", \"Dns(\");\n \t\tfor (int i=0; i < end; i++) {\n-\t\t\tconst efi_ip_addr_t *addr = &dp->dns.addrs[i];\n+\t\t\tefi_ip_addr_t addr;\n+\n+\t\t\tmemcpy(&addr, &dp->dns.addrs[i], sizeof(addr));\n \t\t\tif (i != 0)\n \t\t\t\tformat(buf, size, off, \"Dns\", \",\");\n \t\t\tformat_ip_addr(buf, size, off, \"Dns\",\n-\t\t\t\t       dp->dns.is_ipv6, addr);\n+\t\t\t\t       dp->dns.is_ipv6, &addr);\n \t\t}\n \t\tformat(buf, size, off, \"Dns\", \")\");\n \t\tbreak;\ndiff --git a/src/dp.h b/src/dp.h\nindex 20cb608..1f921d5 100644\n--- a/src/dp.h\n+++ b/src/dp.h\n@@ -71,13 +71,9 @@\n \t\tint _rc;\t\t\t\t\t\t\\\n \t\tchar *_guidstr = NULL;\t\t\t\t\t\\\n \t\tefi_guid_t _guid;\t\t\t\t\t\\\n-\t\tconst efi_guid_t * const _guid_p =\t\t\t\\\n-\t\t\tlikely(__alignof__(guid) == sizeof(guid))\t\\\n-\t\t\t\t? guid\t\t\t\t\t\\\n-\t\t\t\t: &_guid;\t\t\t\t\\\n-\t\t\t\t\t\t\t\t        \\\n-\t\tif (unlikely(__alignof__(guid) == sizeof(guid)))\t\\\n-\t\t\tmemmove(&_guid, guid, sizeof(_guid));\t\t\\\n+\t\tconst efi_guid_t * const _guid_p = &_guid;\t\t\\\n+\t\t\t\t\t\t\t\t\t\\\n+\t\tmemmove(&_guid, guid, sizeof(_guid));\t\t\t\\\n \t\t_rc = efi_guid_to_str(_guid_p, &_guidstr);\t\t\\\n \t\tif (_rc < 0) {\t\t\t\t\t\t\\\n \t\t\tefi_error(\"could not build %s GUID DP string\",\t\\\n@@ -86,7 +82,7 @@\n \t\t\t_guidstr = onstack(_guidstr,\t\t\t\\\n \t\t\t\t\t   strlen(_guidstr)+1);\t\t\\\n \t\t\t_rc = format(buf, size, off, dp_type, \"%s\",\t\\\n-\t\t\t\t     _guidstr);\t\\\n+\t\t\t\t     _guidstr);\t\t\t\t\\\n \t\t}\t\t\t\t\t\t\t\\\n \t\t_rc;\t\t\t\t\t\t\t\\\n \t})\ndiff --git a/src/guid.c b/src/guid.c\nindex 306c9ff..3156b3b 100644\n--- a/src/guid.c\n+++ b/src/guid.c\n@@ -31,7 +31,7 @@\n extern const efi_guid_t efi_guid_zero;\n \n int NONNULL(1, 2) PUBLIC\n-efi_guid_cmp(const efi_guid_t *a, const efi_guid_t *b)\n+efi_guid_cmp(const void * const a, const void * const b)\n {\n \treturn memcmp(a, b, sizeof (efi_guid_t));\n }\ndiff --git a/src/include/efivar/efivar.h b/src/include/efivar/efivar.h\nindex 316891c..ad6449d 100644\n--- a/src/include/efivar/efivar.h\n+++ b/src/include/efivar/efivar.h\n@@ -128,7 +128,7 @@ extern int efi_symbol_to_guid(const char *symbol, efi_guid_t *guid)\n \n extern int efi_guid_is_zero(const efi_guid_t *guid);\n extern int efi_guid_is_empty(const efi_guid_t *guid);\n-extern int efi_guid_cmp(const efi_guid_t *a, const efi_guid_t *b);\n+extern int efi_guid_cmp(const void * const a, const void * const b);\n \n /* import / export functions */\n typedef struct efi_variable efi_variable_t;\ndiff --git a/src/ucs2.h b/src/ucs2.h\nindex dbb5900..edd8367 100644\n--- a/src/ucs2.h\n+++ b/src/ucs2.h\n@@ -23,16 +23,21 @@\n \t(((val) & ((mask) << (shift))) >> (shift))\n \n static inline size_t UNUSED\n-ucs2len(const uint16_t * const s, ssize_t limit)\n+ucs2len(const void *vs, ssize_t limit)\n {\n \tssize_t i;\n-\tfor (i = 0; i < (limit >= 0 ? limit : i+1) && s[i] != (uint16_t)0; i++)\n+\tconst uint16_t *s = vs;\n+\tconst uint8_t *s8 = vs;\n+\n+\tfor (i = 0;\n+\t     i < (limit >= 0 ? limit : i+1) && s8[0] != 0 && s8[1] != 0;\n+\t     i++, s8 += 2, s++)\n \t\t;\n \treturn i;\n }\n \n static inline size_t UNUSED\n-ucs2size(const uint16_t * const s, ssize_t limit)\n+ucs2size(const void *s, ssize_t limit)\n {\n \tsize_t rc = ucs2len(s, limit);\n \trc *= sizeof (uint16_t);\n@@ -69,10 +74,11 @@ utf8size(uint8_t *s, ssize_t limit)\n }\n \n static inline unsigned char * UNUSED\n-ucs2_to_utf8(const uint16_t * const chars, ssize_t limit)\n+ucs2_to_utf8(const void * const voidchars, ssize_t limit)\n {\n \tssize_t i, j;\n \tunsigned char *ret;\n+\tconst uint16_t * const chars = voidchars;\n \n \tif (limit < 0)\n \t\tlimit = ucs2len(chars, -1);\n@@ -124,10 +130,12 @@ ucs2_to_utf8(const uint16_t * const chars, ssize_t limit)\n }\n \n static inline ssize_t UNUSED NONNULL(4)\n-utf8_to_ucs2(uint16_t *ucs2, ssize_t size, int terminate, uint8_t *utf8)\n+utf8_to_ucs2(void *ucs2void, ssize_t size, int terminate, uint8_t *utf8)\n {\n \tssize_t req;\n \tssize_t i, j;\n+\tuint16_t *ucs2 = ucs2void;\n+\tuint16_t val16;\n \n \tif (!ucs2 && size > 0) {\n \t\terrno = EINVAL;\n@@ -162,10 +170,13 @@ utf8_to_ucs2(uint16_t *ucs2, ssize_t size, int terminate, uint8_t *utf8)\n \t\t\tval = utf8[i] & 0x7f;\n \t\t\ti += 1;\n \t\t}\n-\t\tucs2[j] = val;\n+\t\tval16 = val;\n+\t\tucs2[j] = val16;\n+\t}\n+\tif (terminate) {\n+\t\tval16 = 0;\n+\t\tucs2[j++] = val16;\n \t}\n-\tif (terminate)\n-\t\tucs2[j++] = (uint16_t)0;\n \treturn j;\n };\n \n-- \n2.20.1\n\n"
  },
  {
    "path": "package/efivar/0004-Fix-another-error-of-Werror-address-of-packed-member.patch",
    "content": "From 0dad6d78a7fb5f6c5fb4a1d646040539db6cf865 Mon Sep 17 00:00:00 2001\nFrom: Chih-Wei Huang <cwhuang@linux.org.tw>\nDate: Tue, 26 Feb 2019 18:42:20 +0800\nSubject: [PATCH] Fix another error of -Werror=address-of-packed-member\n\nAndroid 9 clang complains:\n\nexternal/efivar/src/dp-message.c:367:24: error: taking address of packed member '' of class or structure 'efidp_infiniband' may result in an unaligned pointer value [-Werror,-Waddress-of-packed-member]\n                                    (efi_guid_t *)&dp->infiniband.ioc_guid);\n                                                   ^~~~~~~~~~~~~~~~~~~~~~~\nexternal/efivar/src/dp.h:76:19: note: expanded from macro 'format_guid'\n                memmove(&_guid, guid, sizeof(_guid));                   \\\n                                ^~~~\n1 error generated.\n\nSince commit c3c553d the fifth parameter of format_guid() is treated as\na const void *. The casting is unnecessary.\n\nSigned-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>\n[james.hilliard1@gmail.com: backport from upstream commit\n0dad6d78a7fb5f6c5fb4a1d646040539db6cf865]\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n---\n src/dp-media.c   | 3 +--\n src/dp-message.c | 2 +-\n 2 files changed, 2 insertions(+), 3 deletions(-)\n\ndiff --git a/src/dp-media.c b/src/dp-media.c\nindex 96a576f..be691c4 100644\n--- a/src/dp-media.c\n+++ b/src/dp-media.c\n@@ -46,8 +46,7 @@ _format_media_dn(char *buf, size_t size, const_efidp dp)\n \t\t\tbreak;\n \t\tcase EFIDP_HD_SIGNATURE_GUID:\n \t\t\tformat(buf, size, off, \"HD\", \"GPT,\");\n-\t\t\tformat_guid(buf, size, off, \"HD\",\n-\t\t\t\t    (efi_guid_t *)dp->hd.signature);\n+\t\t\tformat_guid(buf, size, off, \"HD\", dp->hd.signature);\n \t\t\tformat(buf, size, off, \"HD\",\n \t\t\t       \",0x%\"PRIx64\",0x%\"PRIx64\")\",\n \t\t\t       dp->hd.start, dp->hd.size);\ndiff --git a/src/dp-message.c b/src/dp-message.c\nindex 9f96466..6b8e907 100644\n--- a/src/dp-message.c\n+++ b/src/dp-message.c\n@@ -364,7 +364,7 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)\n \t\t\t       dp->infiniband.port_gid[1],\n \t\t\t       dp->infiniband.port_gid[0]);\n \t\t\tformat_guid(buf, size, off, \"Infiniband\",\n-\t\t\t\t    (efi_guid_t *)&dp->infiniband.ioc_guid);\n+\t\t\t\t    &dp->infiniband.ioc_guid);\n \t\t\tformat(buf, size, off, \"Infiniband\",\n \t\t\t       \",%\"PRIu64\",%\"PRIu64\")\",\n \t\t\t       dp->infiniband.target_port_id,\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/efivar/0005-ucs2.h-remove-unused-variable.patch",
    "content": "From fdb803402fb32fa6d020bac57a40c7efe4aabb7d Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Tue, 5 Mar 2019 17:23:24 +0100\nSubject: [PATCH] ucs2.h: remove unused variable\n\nThe const uint16_t pointer is not used since now the two bytes of the\nUCS-2 chars are checked to know if is the termination of the string.\n\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n src/ucs2.h | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/src/ucs2.h b/src/ucs2.h\nindex edd8367..e0390c3 100644\n--- a/src/ucs2.h\n+++ b/src/ucs2.h\n@@ -26,12 +26,11 @@ static inline size_t UNUSED\n ucs2len(const void *vs, ssize_t limit)\n {\n \tssize_t i;\n-\tconst uint16_t *s = vs;\n \tconst uint8_t *s8 = vs;\n \n \tfor (i = 0;\n \t     i < (limit >= 0 ? limit : i+1) && s8[0] != 0 && s8[1] != 0;\n-\t     i++, s8 += 2, s++)\n+\t     i++, s8 += 2)\n \t\t;\n \treturn i;\n }\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/efivar/0006-ucs2.h-fix-logic-that-checks-for-UCS-2-string-termin.patch",
    "content": "From 4e04afc2df9bbc26e5ab524b53a6f4f1e61d7c9e Mon Sep 17 00:00:00 2001\nFrom: Javier Martinez Canillas <javierm@redhat.com>\nDate: Tue, 5 Mar 2019 17:23:32 +0100\nSubject: [PATCH] ucs2.h: fix logic that checks for UCS-2 string termination\n\nCurrently the loop to count the lenght of the UCS-2 string ends if either\nof the two bytes are 0, but 0 is a valid value for UCS-2 character codes.\n\nSo only break the loop when 0 is the value for both UCS-2 char bytes.\n\nSigned-off-by: Javier Martinez Canillas <javierm@redhat.com>\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n src/ucs2.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/ucs2.h b/src/ucs2.h\nindex e0390c3..fd8b056 100644\n--- a/src/ucs2.h\n+++ b/src/ucs2.h\n@@ -29,7 +29,7 @@ ucs2len(const void *vs, ssize_t limit)\n \tconst uint8_t *s8 = vs;\n \n \tfor (i = 0;\n-\t     i < (limit >= 0 ? limit : i+1) && s8[0] != 0 && s8[1] != 0;\n+\t     i < (limit >= 0 ? limit : i+1) && !(s8[0] == 0 && s8[1] == 0);\n \t     i++, s8 += 2)\n \t\t;\n \treturn i;\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/efivar/0007-gcc.specs-drop-Werror.patch",
    "content": "From 8d5cf3347cce9d644f670ffd1d48e71d74635481 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 22 Mar 2021 07:52:34 +0100\nSubject: [PATCH] gcc.specs: drop -Werror\n\nBuild with -Werror raises the following build failure with gcc 10:\n\n/home/buildroot/autobuild/run/instance-1/output-1/host/bin/aarch64-none-linux-gnu-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -O2   -I/home/buildroot/autobuild/run/instance-1/output-1/build/efivar-37/src/include/   -specs=/home/buildroot/autobuild/run/instance-1/output-1/build/efivar-37/gcc.specs  -L.  -fPIC -Wl,-z,muldefs     -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o efivar efivar.c -lefivar -ldl\nIn file included from efivar.h:28,\n                 from efivar.c:40:\nIn function 'text_to_guid',\n    inlined from 'parse_name.constprop' at efivar.c:157:8:\nguid.h:106:2: error: 'strncpy' output may be truncated copying 8 bytes from a string of length 38 [-Werror=stringop-truncation]\n  106 |  strncpy(eightbytes, text, 8);\n      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\ncc1: all warnings being treated as errors\n\nFixes:\n - http://autobuild.buildroot.org/results/fcba72d359f4128515560e9105384cd4deff5043\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not upstreamable as Makefiles were reworked and a new\nERRORS parameter was added:\nhttps://github.com/rhboot/efivar/commit/998f617cec92d526e1fadb745673ceef63fa1483]\n---\n gcc.specs | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/gcc.specs b/gcc.specs\nindex 45d43d1..1baf11a 100644\n--- a/gcc.specs\n+++ b/gcc.specs\n@@ -2,7 +2,7 @@\n + -D_GNU_SOURCE\n \n *efivar_cpp_options:\n- -Werror -Wall -std=gnu11 -Wextra\n+ -Wall -std=gnu11 -Wextra\n \n *cpp_options:\n + %(efivar_cpp_options)\n-- \n2.30.1\n\n"
  },
  {
    "path": "package/efivar/Config.in",
    "content": "config BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 \\\n\t\t|| BR2_powerpc64le || BR2_mipsel || BR2_mips64el\n\nconfig BR2_PACKAGE_EFIVAR\n\tbool \"efivar\"\n\tdepends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # linux/nvme.h\n\t# linux/nvme.h has been renamed to linux/nvme_ioctl.h since 4.4,\n\t# and the efivar source handles that situation. However, some\n\t# Sourcery CodeBench toolchains use 4.4 kernel headers but they\n\t# don't have that header file renamed, and that is causing build\n\t# failures. So, prevent this package to be built using those\n\t# toolchains.\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\thelp\n\t  Tools and libraries to manipulate EFI variables\n\n\t  https://github.com/rhboot/efivar\n\ncomment \"efivar needs a toolchain w/ dynamic library, headers >= 3.12, gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS\n\tdepends on BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS\n"
  },
  {
    "path": "package/efivar/efivar.hash",
    "content": "# locally computed hash\nsha256 74c52b4f479120fb6639e753e71163ba3f557a7a67c0be225593f9f05b253f36  efivar-37.tar.gz\nsha256 91df770634adc2755e78cae33a0d01e702ce2f69046408ae93d0d934ff29691b  COPYING\n"
  },
  {
    "path": "package/efivar/efivar.mk",
    "content": "################################################################################\n#\n# efivar\n#\n################################################################################\n\nEFIVAR_VERSION = 37\nEFIVAR_SITE = $(call github,rhboot,efivar,$(EFIVAR_VERSION))\nEFIVAR_LICENSE = LGPL-2.1\nEFIVAR_LICENSE_FILES = COPYING\nEFIVAR_INSTALL_STAGING = YES\n\n# -fPIC is needed at least on MIPS, otherwise fails to build shared\n# -library.\nEFIVAR_MAKE_OPTS = \\\n\tlibdir=/usr/lib \\\n\tLDFLAGS=\"$(TARGET_LDFLAGS) -fPIC\"\n\ndefine EFIVAR_BUILD_CMDS\n\t# makeguids is an internal host tool and must be built separately with\n\t# $(HOST_CC), otherwise it gets cross-built.\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(HOST_CFLAGS) -std=gnu99\" \\\n\t\t$(MAKE) -C $(@D)/src gcc_cflags=  makeguids\n\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) \\\n\t\tAR=$(TARGET_AR) NM=$(TARGET_NM) RANLIB=$(TARGET_RANLIB) \\\n\t\t$(EFIVAR_MAKE_OPTS) \\\n\t\tall\nendef\n\ndefine EFIVAR_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) \\\n\t\t$(EFIVAR_MAKE_OPTS) \\\n\t\tDESTDIR=\"$(STAGING_DIR)\" \\\n\t\tinstall\nendef\n\ndefine EFIVAR_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) \\\n\t\t$(EFIVAR_MAKE_OPTS) \\\n\t\tDESTDIR=\"$(TARGET_DIR)\" \\\n\t\tinstall\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/efl/0001-ecore_evas-engines-drm-meson.build-use-gl_deps-as-en.patch",
    "content": "From 51dfe1863ddc8c5dd576405a9bbb8bca875c1142 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sat, 1 Aug 2020 02:25:47 +0200\nSubject: [PATCH] ecore_evas/engines/drm/meson.build: use \"gl_deps\" as engine\n dependencies\n\nMeson trigger an error since \"engine_gl_drm\" variable doesn't exist.\n\nsrc/modules/ecore_evas/engines/drm/meson.build:10:2: ERROR: Unknown variable \"engine_gl_drm\".\n\nInstead use \"gl_deps\" as engine dependencies.\n\nUpstream status:\nhttps://sourceforge.net/p/enlightenment/mailman/message/37075016/\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n src/modules/ecore_evas/engines/drm/meson.build | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/modules/ecore_evas/engines/drm/meson.build b/src/modules/ecore_evas/engines/drm/meson.build\nindex 58071010d0..0741d7fccd 100644\n--- a/src/modules/ecore_evas/engines/drm/meson.build\n+++ b/src/modules/ecore_evas/engines/drm/meson.build\n@@ -3,7 +3,7 @@ engine_deps = [ecore_drm2, ecore_input, eeze, elput, libdrm, engine_drm]\n \n if get_option('opengl') != 'none'\n   config_h.set('BUILD_ECORE_EVAS_GL_DRM', '1')\n-  engine_deps += [engine_gl_drm]\n+  engine_deps += [gl_deps]\n endif\n \n engine_include_dir += include_directories(join_paths('..', '..', '..', 'evas', 'engines', 'drm'))\n-- \n2.25.4\n\n"
  },
  {
    "path": "package/efl/0002-ecore_evas-engines-drm-meson.build-fix-gl_drm-includ.patch",
    "content": "From 8548b02c487ba7e9d78489c6db58812ee5cfb197 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sat, 1 Aug 2020 01:01:00 +0200\nSubject: [PATCH] ecore_evas/engines/drm/meson.build: fix \"gl_drm\" include\n directory\n\nThe Evas_Engine_GL_Drm.h file is in \"gl_drm\" directory, not \"drm\".\n\n../src/modules/ecore_evas/engines/drm/ecore_evas_drm.c:23:11: fatal error: Evas_Engine_GL_Drm.h: No such file or directory\n   23 | # include <Evas_Engine_GL_Drm.h>\n      |           ^~~~~~~~~~~~~~~~~~~~~~\ncompilation terminated.\n\nUpstream status:\nhttps://sourceforge.net/p/enlightenment/mailman/message/37075004/\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n src/modules/ecore_evas/engines/drm/meson.build | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/modules/ecore_evas/engines/drm/meson.build b/src/modules/ecore_evas/engines/drm/meson.build\nindex 0741d7fccd..edda1abd71 100644\n--- a/src/modules/ecore_evas/engines/drm/meson.build\n+++ b/src/modules/ecore_evas/engines/drm/meson.build\n@@ -6,7 +6,7 @@ if get_option('opengl') != 'none'\n   engine_deps += [gl_deps]\n endif\n \n-engine_include_dir += include_directories(join_paths('..', '..', '..', 'evas', 'engines', 'drm'))\n+engine_include_dir += include_directories(join_paths('..', '..', '..', 'evas', 'engines', 'gl_drm'))\n \n shared_module(mod_full_name, engine_src,\n   include_directories : config_dir + [engine_include_dir],\n-- \n2.25.4\n\n"
  },
  {
    "path": "package/efl/0003-ecore_fb-fix-build-with-tslib.patch",
    "content": "From 9a785396a7940ec541cf4793f9c9f92548c99d4c Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 10 Jul 2021 22:38:03 +0200\nSubject: [PATCH] ecore_fb: fix build with tslib\n\nBuild with tslib is broken since version 1.25.0 and\nhttps://git.enlightenment.org/core/efl.git/commit/?id=8e3606698eb439eecd7302a885504365aca7e564:\n\n/data/buildroot-autobuilder/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/powerpc-buildroot-linux-uclibc/9.3.0/../../../../powerpc-buildroot-linux-uclibc/bin/ld: src/lib/ecore_fb/libecore_fb.so.1.25.1.p/ecore_fb_ts.c.o: in function `_ecore_fb_ts_fd_handler':\necore_fb_ts.c:(.text+0x4c): undefined reference to `ts_read_raw'\n\nFixes:\n - http://autobuild.buildroot.org/results/fa111306b95316eed54771550474dae804fa261e\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/lib/ecore_fb/meson.build | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/lib/ecore_fb/meson.build b/src/lib/ecore_fb/meson.build\nindex 6d50e0f146..7c7f6786c3 100644\n--- a/src/lib/ecore_fb/meson.build\n+++ b/src/lib/ecore_fb/meson.build\n@@ -22,7 +22,7 @@ ecore_fb_src = files([\n ecore_fb_lib = library('ecore_fb',\n     ecore_fb_src, pub_eo_file_target,\n     c_args : package_c_args,\n-    dependencies: ecore_fb_pub_deps + ecore_fb_deps,\n+    dependencies: ecore_fb_pub_deps + ecore_fb_deps + ecore_fb_ext_deps,\n     include_directories : config_dir,\n     install: true,\n     version : meson.project_version()\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/efl/Config.in",
    "content": "config BR2_PACKAGE_EFL\n\tbool \"efl\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # host-efl\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # untested without threads\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_USE_WCHAR # use wchar_t\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\t# https://phab.enlightenment.org/T2728\n\tdepends on BR2_PACKAGE_LUAJIT\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_GIFLIB\n\tselect BR2_PACKAGE_JPEG # Emile needs libjpeg\n\tselect BR2_PACKAGE_LIBCURL # Ecore_con_url, runtime dependency\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_OPENSSL if !(BR2_PACKAGE_GNUTLS && BR2_PACKAGE_LIBGCRYPT)\n\tselect BR2_PACKAGE_LZ4\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Enlightenment Foundation Libraries\n\n\t  https://enlightenment.org\n\nif BR2_PACKAGE_EFL\n\nconfig BR2_PACKAGE_EFL_BULLET\n\tbool \"Enable bullet support\"\n\tselect BR2_PACKAGE_BULLET\n\thelp\n\t  If you have chosen to disable physics support, this disables\n\t  lots of core functionality and is effectively never\n\t  tested. You are going to find features that suddenly don't\n\t  work and as a result cause a series of breakages. This is\n\t  simply not tested so you are on your own in terms of\n\t  ensuring everything works if you do this.\n\nconfig BR2_PACKAGE_EFL_EEZE\n\tbool \"Enable eeze (udev) support (recommended)\"\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_UDEV # libudev\n\thelp\n\t  Eeze is EFL's hardware abstraction layer on top of udev.\n\t  Having it off will disable some hardware detection, such as\n\t  'drm' graphics engine or 'elput', as well as mounting\n\t  removable media.\n\ncomment \"eeze needs udev /dev management\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n\nconfig BR2_PACKAGE_EFL_FONTCONFIG\n\tbool \"Enable fontconfig support (recommended)\"\n\tdefault y\n\tselect BR2_PACKAGE_FONTCONFIG\n\thelp\n\t  If fontconfig is disabled, this is going to make general\n\t  font searching not work, and only some very direct 'load\n\t  /path/file.ttf' will work alongside some old-school ttf file\n\t  path searching. This is very likely not what you want, so\n\t  highly reconsider turning fontconfig off. Having it off will\n\t  lead to visual problems like missing text in many UI areas\n\t  etc...\n\nconfig BR2_PACKAGE_EFL_GSTREAMER1\n\tbool \"Enable gstreamer1 support (recommended)\"\n\tdefault y\n\tselect BR2_PACKAGE_GSTREAMER1\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\thelp\n\t  If Gstreamer 1.x support is disabled, it will heavily limit\n\t  your media support options and render some functionality as\n\t  useless, leading to visible application bugs.\n\nconfig BR2_PACKAGE_EFL_LIBFRIBIDI\n\tbool \"Enable libfribidi support (recommended)\"\n\tdefault y\n\tselect BR2_PACKAGE_LIBFRIBIDI\n\thelp\n\t  Fribidi is used for handling right-to-left text (like\n\t  Arabic, Hebrew, Farsi, Persian etc.) and is very likely not\n\t  a feature you want to disable unless you know for absolute\n\t  certain you will never encounter and have to display such\n\t  scripts. Also note that we don't test with fribidi disabled\n\t  so you may also trigger code paths with bugs that are never\n\t  normally used.\n\nconfig BR2_PACKAGE_EFL_LIBSNDFILE\n\tbool \"Enable libsndfile support (recommended)\"\n\tdefault y\n\tselect BR2_PACKAGE_LIBSNDFILE\n\thelp\n\t  If you disabled audio support in Ecore, this is not tested\n\t  and may create bugs for you due to it creating untested code\n\t  paths.  Reconsider disabling audio.\n\nconfig BR2_PACKAGE_EFL_PULSEAUDIO\n\tbool \"Enable pulseaudio support (recommended)\"\n\tdefault y\n\tdepends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_PULSEAUDIO\n\thelp\n\t  The only audio output method supported by Ecore right now is\n\t  via Pulseaudio. You have disabled that and likely have\n\t  broken a whole bunch of things in the process. Reconsider\n\t  your configure options.\n\n\t  NOTE: multisense support is automatically enabled with\n\t  pulseaudio.\n\nconfig BR2_PACKAGE_EFL_UTIL_LINUX_LIBMOUNT\n\tbool \"Enable libmount support (recommended)\"\n\tdefault y\n\tdepends on BR2_PACKAGE_EFL_EEZE\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBMOUNT\n\t# libblkid is part of required tools, see EFL's README.\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\thelp\n\t  Libmount is used heavily inside Eeze for support of removable\n\t  devices etc... and disabling this will hurt support for\n\t  Enlightenment and its filemanager.\n\ncomment \"efl's libmount support needs udev /dev management (eeze)\"\n\tdepends on !BR2_PACKAGE_EFL_EEZE\n\nconfig BR2_PACKAGE_EFL_HAS_RECOMMENDED_CONFIG\n\tbool\n\tdefault y if BR2_PACKAGE_EFL_EEZE && \\\n\t\tBR2_PACKAGE_EFL_FONTCONFIG && \\\n\t\tBR2_PACKAGE_EFL_GSTREAMER1 && \\\n\t\tBR2_PACKAGE_EFL_LIBFRIBIDI && \\\n\t\tBR2_PACKAGE_EFL_LIBSNDFILE && \\\n\t\tBR2_PACKAGE_EFL_PULSEAUDIO && \\\n\t\tBR2_PACKAGE_EFL_UTIL_LINUX_LIBMOUNT\n\ncomment \"Warning: one of the recommended option for EFL is not enabled\"\n\tdepends on !BR2_PACKAGE_EFL_HAS_RECOMMENDED_CONFIG\n\nconfig BR2_PACKAGE_EFL_EOLIAN_CPP\n\tbool \"Enable Eolian C++ bindings\"\n\thelp\n\t  Eolian is an EO object parser and code generator.\n\t  With this option enabled Eolian will handle automatic\n\t  generation of EFL bindings for the C++11 language.\n\ncomment \"libecore video support\"\n\nconfig BR2_PACKAGE_EFL_FB\n\tbool \"FB support\"\n\nconfig BR2_PACKAGE_EFL_X_XLIB\n\tbool \"X11 support (xlib)\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXCOMPOSITE\n\tselect BR2_PACKAGE_XLIB_LIBXCURSOR\n\tselect BR2_PACKAGE_XLIB_LIBXDAMAGE\n\tselect BR2_PACKAGE_XLIB_LIBXINERAMA\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\tselect BR2_PACKAGE_XLIB_LIBXSCRNSAVER\n\tselect BR2_PACKAGE_XLIB_LIBXTST\n\tselect BR2_PACKAGE_XORGPROTO\n\nconfig BR2_PACKAGE_EFL_WAYLAND\n\tbool \"Wayland support\"\n\tdepends on BR2_PACKAGE_WAYLAND\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # Evas DRM Engine -> libdrm\n\tdepends on BR2_PACKAGE_MESA3D_OPENGL_EGL # Evas DRM Engine\n\tdepends on BR2_PACKAGE_EFL_EEZE # efl drm\n\tdepends on BR2_PACKAGE_EFL_OPENGLES # OpenGL ES with EGL support only\n\tdepends on BR2_ENABLE_LOCALE # efl-drm <- efl-elput <- linput\n\tselect BR2_PACKAGE_EFL_DRM\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS\n\ncomment \"Wayland support needs udev /dev management (eeze), OpenGL ES w/ EGL, threads, locales\"\n\tdepends on BR2_PACKAGE_WAYLAND\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_MESA3D_OPENGL_EGL \\\n\t\t|| !BR2_PACKAGE_EFL_OPENGLES || !BR2_PACKAGE_EFL_EEZE \\\n\t\t|| !BR2_ENABLE_LOCALE\n\nchoice\n\tbool \"OpenGL support\"\n\thelp\n\t  libevas can be configured to use HW acceleration with OpenGL\n\t  or OpenGL ES.\n\nconfig BR2_PACKAGE_EFL_OPENGL\n\tbool \"OpenGL\"\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_EFL_X_XLIB\n\ncomment \"OpenGL support needs X11 and an OpenGL provider\"\n\tdepends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7\n\nconfig BR2_PACKAGE_EFL_OPENGLES\n\tbool \"OpenGL ES (w/ EGL)\"\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n\ncomment \"OpenGL ES support needs an OpenGL ES w/ EGL provider\"\n\tdepends on !BR2_PACKAGE_HAS_LIBGLES || !BR2_PACKAGE_HAS_LIBEGL\n\nconfig BR2_PACKAGE_EFL_OPENGL_NONE\n\tbool \"none\"\n\nendchoice # OpenGL support\n\nconfig BR2_PACKAGE_EFL_DRM\n\tbool \"Evas DRM Engine\"\n\tdepends on BR2_PACKAGE_EFL_EEZE\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libdrm\n\tdepends on BR2_PACKAGE_MESA3D_OPENGL_EGL # require libgbm from mesa3d\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_LIBINPUT # For elput\n\tselect BR2_PACKAGE_LIBXKBCOMMON\n\thelp\n\t  This option enable building support for the Evas DRM Engine.\n\n\t  Since efl 1.23.x, the drm option enable the elput library\n\t  which is an efl abstraction for the libinput library which\n\t  can be used by various other subsystems (ecore_fb, ecore_drm,\n\t  etc) to handle interfacing with libinput without having to\n\t  duplicate the code in each subsystem.\n\ncomment \"Evas DRM Engine needs udev /dev management (eeze), mesa3d w/ EGL support, threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_MESA3D_OPENGL_EGL \\\n\t\t|| !BR2_PACKAGE_EFL_EEZE\n\ncomment \"libevas loaders\"\n\nconfig BR2_PACKAGE_EFL_JPEG\n\tbool \"libevas jpeg loader\"\n\tselect BR2_PACKAGE_OPENJPEG\n\thelp\n\t  This enables the loader code that loads jpeg files using\n\t  libjpeg.\n\nconfig BR2_PACKAGE_EFL_TIFF\n\tbool \"libevas tiff loader\"\n\tselect BR2_PACKAGE_TIFF\n\thelp\n\t  This enables the loader code that loads tiff files.\n\nconfig BR2_PACKAGE_EFL_WEBP\n\tbool \"libevas webp image loader\"\n\tselect BR2_PACKAGE_WEBP\n\tselect BR2_PACKAGE_WEBP_DEMUX\n\thelp\n\t  This enables the loader code that loads images using WebP.\n\nconfig BR2_PACKAGE_EFL_LIBRAW\n\tbool \"libraw loader\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libraw\n\tselect BR2_PACKAGE_LIBRAW\n\thelp\n\t  This option enables the Evas generic Libraw loader\n\nconfig BR2_PACKAGE_EFL_SVG\n\tbool \"SVG loader\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # librsvg\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # librsvg -> pango -> harfbuzz\n\tselect BR2_PACKAGE_LIBRSVG\n\tselect BR2_PACKAGE_CAIRO\n\thelp\n\t  This option enables the Evas generic SVG loader\n\nendif # BR2_PACKAGE_EFL\n\ncomment \"efl needs a toolchain w/ C++, dynamic library, gcc >= 4.9, host gcc >= 4.9, threads, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t|| !BR2_HOST_GCC_AT_LEAST_4_9 || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/efl/efl.hash",
    "content": "# From https://download.enlightenment.org/rel/libs/efl/efl-1.25.1.tar.xz.sha256sum\nsha256  351ca0211ca000234527a503585f039f985607ec9439e34b49d8b8bbf35a7e6b  efl-1.25.1.tar.xz\n\nsha256  d666b6b2df9f5b791f85c299c65516cb55528b02a807603de246f65f4918ae22  COMPLIANCE\nsha256  5bceb52d65debe420bc520f2992807740dc928b7fdc3c2e9a74b5889177ddf4c  COPYING\nsha256  e5133b4034a4749a781e2220ffb230b60a282b88861f1124d69a58abd5143994  COPYING.images\nsha256  c95bae1d1ce0235ecccd3560b772ec1efb97f348a79f0fbe0a634f0c2ccefe2c  licenses/COPYING.ASL\nsha256  af4ffe7ed1795a6e9cd3b3ce8747fdc45da449ff58cf35b8027c0699a66fd5cf  licenses/COPYING.BSD\nsha256  e60d07dfb2c5264f9f405fa52bf0d4f85429dd9ae1bc2ffcff8af1924ef720d1  licenses/COPYING.FTL\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  licenses/COPYING.GPL\nsha256  ae2d99bf2a8e8310281bdbe5e8b78cbe5e89bfead8c01e67a8c68b530efcf25a  licenses/COPYING.LGPL\nsha256  2996a1c43ee757f9c997a829d82bdd584052323e73cf02ff8126c6fbd95c2d87  licenses/COPYING.NGINX-MIT\nsha256  d847c749aa38b8d864665fc4e5c80e2f2a505e414fafe9712e85b5154e908218  licenses/COPYING.SMALL\n"
  },
  {
    "path": "package/efl/efl.mk",
    "content": "################################################################################\n#\n# efl\n#\n################################################################################\n\nEFL_VERSION = 1.25.1\nEFL_SOURCE = efl-$(EFL_VERSION).tar.xz\nEFL_SITE = http://download.enlightenment.org/rel/libs/efl\nEFL_LICENSE = BSD-2-Clause, LGPL-2.1+, GPL-2.0+, FTL, MIT\nEFL_LICENSE_FILES = \\\n\tCOMPLIANCE \\\n\tCOPYING \\\n\tCOPYING.images \\\n\tlicenses/COPYING.ASL \\\n\tlicenses/COPYING.BSD \\\n\tlicenses/COPYING.FTL \\\n\tlicenses/COPYING.GPL \\\n\tlicenses/COPYING.LGPL \\\n\tlicenses/COPYING.NGINX-MIT \\\n\tlicenses/COPYING.SMALL\n\nEFL_INSTALL_STAGING = YES\n\nEFL_DEPENDENCIES = host-pkgconf host-efl host-luajit dbus freetype \\\n\tgiflib jpeg libpng luajit lz4 zlib $(TARGET_NLS_DEPENDENCIES)\n\n# Configure options:\n# elua=true: build elua for the target.\n# sdl=false: disable sdl2 support.\n# embedded-lz4=false: use liblz4 from lz4 package.\n# native-arch-optimization=false: avoid optimization flags added by meson.\n# network-backend=none: disable connman networkmanager.\nEFL_CONF_OPTS = \\\n\t-Davahi=false \\\n\t-Dbuild-examples=false \\\n\t-Dbuild-tests=false \\\n\t-Ddotnet=false \\\n\t-Decore-imf-loaders-disabler=ibus,scim,xim \\\n\t-Delua=true \\\n\t-Dembedded-lz4=false \\\n\t-Dlua-interpreter=luajit \\\n\t-Dnative-arch-optimization=false \\\n\t-Dnetwork-backend=none \\\n\t-Dpixman=false \\\n\t-Dsdl=false \\\n\t-Dvnc-server=false\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nEFL_CONF_OPTS += -Dnls=true\nelse\nEFL_CONF_OPTS += -Dnls=false\nendif\n\nEFL_BINDINGS = lua\n\nifeq ($(BR2_PACKAGE_EFL_EOLIAN_CPP),y)\nEFL_BINDINGS += cxx\nendif\n\nEFL_CONF_OPTS += -Dbindings=$(subst $(space),$(comma),$(EFL_BINDINGS))\n\nifeq ($(BR2_PACKAGE_EFL_EEZE),y)\nEFL_DEPENDENCIES += udev\nEFL_CONF_OPTS += -Deeze=true\nelse\nEFL_CONF_OPTS += -Deeze=false\nendif\n\nifeq ($(BR2_PACKAGE_EFL_UTIL_LINUX_LIBMOUNT),y)\nEFL_DEPENDENCIES += util-linux\nEFL_CONF_OPTS += -Dlibmount=true\nelse\nEFL_CONF_OPTS += -Dlibmount=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nEFL_CONF_OPTS += -Dsystemd=true\nEFL_DEPENDENCIES += systemd\nelse\nEFL_CONF_OPTS += -Dsystemd=false\nendif\n\nifeq ($(BR2_PACKAGE_FONTCONFIG),y)\nEFL_CONF_OPTS += -Dfontconfig=true\nEFL_DEPENDENCIES += fontconfig\nelse\nEFL_CONF_OPTS += -Dfontconfig=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBFRIBIDI),y)\nEFL_CONF_OPTS += -Dfribidi=true\nEFL_DEPENDENCIES += libfribidi\nelse\nEFL_CONF_OPTS += -Dfribidi=false\nendif\n\nifeq ($(BR2_PACKAGE_GSTREAMER1)$(BR2_PACKAGE_GST1_PLUGINS_BASE),yy)\nEFL_CONF_OPTS += -Dgstreamer=true\nEFL_DEPENDENCIES += gstreamer1 gst1-plugins-base\nelse\nEFL_CONF_OPTS += -Dgstreamer=false\nendif\n\nifeq ($(BR2_PACKAGE_BULLET),y)\nEFL_CONF_OPTS += -Dphysics=true\nEFL_DEPENDENCIES += bullet\nelse\nEFL_CONF_OPTS += -Dphysics=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBSNDFILE),y)\nEFL_CONF_OPTS += -Daudio=true\nEFL_DEPENDENCIES += libsndfile\nelse\nEFL_CONF_OPTS += -Daudio=false\nendif\n\nifeq ($(BR2_PACKAGE_PULSEAUDIO),y)\nEFL_CONF_OPTS += -Dpulseaudio=true\nEFL_DEPENDENCIES += pulseaudio\nelse\nEFL_CONF_OPTS += -Dpulseaudio=false\nendif\n\nifeq ($(BR2_PACKAGE_HARFBUZZ),y)\nEFL_DEPENDENCIES += harfbuzz\nEFL_CONF_OPTS += -Dharfbuzz=true\nelse\nEFL_CONF_OPTS += -Dharfbuzz=false\nendif\n\nifeq ($(BR2_PACKAGE_TSLIB),y)\nEFL_DEPENDENCIES += tslib\nEFL_CONF_OPTS += -Dtslib=true\nelse\nEFL_CONF_OPTS += -Dtslib=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nEFL_DEPENDENCIES += libglib2\nEFL_CONF_OPTS += -Dglib=true\nelse\nEFL_CONF_OPTS += -Dglib=false\nendif\n\n# Prefer openssl (the default) over gnutls.\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nEFL_DEPENDENCIES += openssl\nEFL_CONF_OPTS += -Dcrypto=openssl\nelse\nEFL_DEPENDENCIES += gnutls libgcrypt\nEFL_CONF_OPTS += -Dcrypto=gnutls\nendif\n\nifeq ($(BR2_PACKAGE_EFL_FB),y)\nEFL_CONF_OPTS += -Dfb=true\nelse\nEFL_CONF_OPTS += -Dfb=false\nendif\n\nifeq ($(BR2_PACKAGE_EFL_X_XLIB),y)\nEFL_CONF_OPTS += -Dx11=true \\\n\t-Dxinput2=true \\\n\t-Dxinput22=true\n\nEFL_DEPENDENCIES += \\\n\txlib_libX11 \\\n\txlib_libXcomposite \\\n\txlib_libXcursor \\\n\txlib_libXdamage \\\n\txlib_libXext \\\n\txlib_libXinerama \\\n\txlib_libXrandr \\\n\txlib_libXrender \\\n\txlib_libXScrnSaver \\\n\txlib_libXtst\nelse\nEFL_CONF_OPTS += -Dx11=false\nendif\n\nifeq ($(BR2_PACKAGE_EFL_OPENGL),y)\nEFL_CONF_OPTS += -Dopengl=full\nEFL_DEPENDENCIES += libgl\n# OpenGL ES requires EGL\nelse ifeq ($(BR2_PACKAGE_EFL_OPENGLES),y)\nEFL_CONF_OPTS += -Dopengl=es-egl\nEFL_DEPENDENCIES += libegl libgles\nelse ifeq ($(BR2_PACKAGE_EFL_OPENGL_NONE),y)\nEFL_CONF_OPTS += -Dopengl=none\nendif\n\nifeq ($(BR2_PACKAGE_EFL_DRM),y)\nEFL_CONF_OPTS += -Ddrm=true\nEFL_DEPENDENCIES += libdrm libegl libinput mesa3d\nelse\nEFL_CONF_OPTS += -Ddrm=false\nendif\n\nifeq ($(BR2_PACKAGE_EFL_WAYLAND),y)\nEFL_DEPENDENCIES += wayland wayland-protocols\nEFL_CONF_OPTS += -Dwl=true\nelse\nEFL_CONF_OPTS += -Dwl=false\nendif\n\nEFL_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBXKBCOMMON),libxkbcommon)\n\n# json evas loader is disabled by default by upstream.\n# Disable libspectre (ps).\n# Keep all other evas loader enabled or handled below.\nEFL_EVAS_LOADERS_DISABLER = avif gst json ps\n\n# efl already depends on jpeg.\nifeq ($(BR2_PACKAGE_EFL_JPEG),y)\nEFL_DEPENDENCIES += openjpeg\nelse\nEFL_EVAS_LOADERS_DISABLER += jp2k\nendif\n\nifeq ($(BR2_PACKAGE_EFL_TIFF),y)\nEFL_DEPENDENCIES += tiff\nelse\nEFL_EVAS_LOADERS_DISABLER += tiff\nendif\n\nifeq ($(BR2_PACKAGE_EFL_WEBP),y)\nEFL_DEPENDENCIES += webp\nelse\nEFL_EVAS_LOADERS_DISABLER += webp\nendif\n\nifeq ($(BR2_PACKAGE_POPPLER),y)\n# poppler needs c++11\nEFL_CONF_ENV += CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\nEFL_DEPENDENCIES += poppler\nelse\nEFL_EVAS_LOADERS_DISABLER += pdf\nendif\n\nifeq ($(BR2_PACKAGE_EFL_LIBRAW),y)\nEFL_DEPENDENCIES += libraw\nelse\nEFL_EVAS_LOADERS_DISABLER += raw\nendif\n\nifeq ($(BR2_PACKAGE_EFL_SVG),y)\nEFL_DEPENDENCIES += librsvg cairo\nelse\nEFL_EVAS_LOADERS_DISABLER += rsvg\nendif\n\nEFL_CONF_OPTS += -Devas-loaders-disabler=$(subst $(space),$(comma),$(EFL_EVAS_LOADERS_DISABLER))\n\nifeq ($(BR2_PACKAGE_UPOWER),)\n# upower ecore system module is only useful if upower\n# dbus service is available.\n# It's not essential, only used to notify applications\n# of power state, such as low battery or AC power, so\n# they can adapt their power consumption.\ndefine EFL_HOOK_REMOVE_UPOWER\n\trm -fr $(TARGET_DIR)/usr/lib/ecore/system/upower\nendef\nEFL_POST_INSTALL_TARGET_HOOKS = EFL_HOOK_REMOVE_UPOWER\nendif\n\nifeq ($(BR2_PACKAGE_LIBUNWIND),y)\nEFL_DEPENDENCIES += libunwind\nendif\n\n$(eval $(meson-package))\n\n################################################################################\n#\n# host-efl\n#\n################################################################################\n\n# We want to build only some host tools used later in the build.\n# Actually we want: edje_cc, eet and embryo_cc. eolian_cxx is built only\n# if selected for the target.\n\n# Host dependencies:\n# * host-dbus: for Eldbus\n# * host-freetype: for libevas\n# * host-libglib2: for libecore\n# * host-giflib, host-libjpeg, host-libpng: for libevas image loader\n# * host-luajit for Elua tool for the host\n# * host-openssl: cryptography backends.\nHOST_EFL_DEPENDENCIES = \\\n\thost-pkgconf \\\n\thost-dbus \\\n\thost-freetype \\\n\thost-giflib \\\n\thost-libglib2 \\\n\thost-libjpeg \\\n\thost-libpng \\\n\thost-luajit \\\n\thost-openssl \\\n\thost-zlib\n\n# Configure options:\n# audio=false: remove libsndfile dependency.\n# eeze=false: remove libudev dependency.\n# libmount=false: remove dependency on host-util-linux libmount.\n# elua=true: build elua for the host.\n# physics=false: remove Bullet dependency.\n# network-backend=none: remove network-backend (connman).\n# embedded-lz4=true: use lz4 bundled in efl.\nHOST_EFL_CONF_OPTS += \\\n\t-Daudio=false \\\n\t-Davahi=false \\\n\t-Dbuild-examples=false \\\n\t-Dbuild-tests=false \\\n\t-Dcrypto=openssl \\\n\t-Ddotnet=false \\\n\t-Decore-imf-loaders-disabler=ibus,scim,xim \\\n\t-Dedje-sound-and-video=false \\\n\t-Deeze=false \\\n\t-Delua=true \\\n\t-Dembedded-lz4=true \\\n\t-Dfontconfig=false \\\n\t-Dfribidi=false \\\n\t-Dglib=true \\\n\t-Dgstreamer=false \\\n\t-Dharfbuzz=false \\\n\t-Dlibmount=false \\\n\t-Dlua-interpreter=luajit \\\n\t-Dnetwork-backend=none \\\n\t-Dnls=false \\\n\t-Dopengl=none \\\n\t-Dphysics=false \\\n\t-Dpixman=false \\\n\t-Dpulseaudio=false \\\n\t-Dsdl=false \\\n\t-Dsystemd=false \\\n\t-Dv4l2=false \\\n\t-Dvnc-server=false \\\n\t-Dx11=false \\\n\t-Dxinput22=false\n\n# List of modular image/vector loaders to disable in efl\nHOST_EFL_EVAS_LOADERS_DISABLER = avif bmp dds eet generic gst ico json \\\n\tjp2k pdf pmaps ps psd raw rsvg tga tgv tiff wbmp webp xcf xpm\n\nHOST_EFL_CONF_OPTS += -Devas-loaders-disabler=$(subst $(space),$(comma),$(HOST_EFL_EVAS_LOADERS_DISABLER))\n\nHOST_EFL_BINDINGS = lua\n\n# Enable Eolian language bindings to provide eolian_cxx tool for the\n# host which is required to build Eolian language bindings for the\n# target.\nifeq ($(BR2_PACKAGE_EFL_EOLIAN_CPP),y)\nHOST_EFL_BINDINGS += cxx\nendif\nHOST_EFL_CONF_OPTS += -Dbindings=$(subst $(space),$(comma),$(HOST_EFL_BINDINGS))\n\n# Always disable upower system module from host as it's\n# not useful and would try to use the output/host/var\n# system bus which is non-existent and does not contain\n# any upower service in it.\ndefine HOST_EFL_HOOK_REMOVE_UPOWER\n\trm -fr $(HOST_DIR)/lib/ecore/system/upower\nendef\nHOST_EFL_POST_INSTALL_HOOKS = HOST_EFL_HOOK_REMOVE_UPOWER\n\n$(eval $(host-meson-package))\n"
  },
  {
    "path": "package/eigen/Config.in",
    "content": "config BR2_PACKAGE_EIGEN\n\tbool \"eigen\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Eigen is a C++ template library for linear algebra: vectors,\n\t  matrices, and related algorithms. It is versatile, fast,\n\t  elegant and works on many platforms (OS/Compilers).\n\n\t  This package only installs header files to the include path.\n\t  If you just want to use Eigen, you can use the header files\n\t  right away. There is no binary to link to. Eigen is a pure\n\t  template library defined in the headers.\n\n\t  http://eigen.tuxfamily.org/\n\ncomment \"eigen needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/eigen/eigen.hash",
    "content": "# Locally computed\nsha256  685adf14bd8e9c015b78097c1dc22f2f01343756f196acdc76a678e1ae352e11  eigen-3.3.7.tar.bz2\nsha256  4f877e5ae4672568ef82cfd0023e2cef4a7cf55d867ab249efc9569a7eb9e5b1  COPYING.BSD\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING.GPL\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LGPL\nsha256  f5b330efdad110cdd84d585ec61220b0650461fa599e36b13e1726c9346dcfb9  COPYING.MINPACK\nsha256  fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85  COPYING.MPL2\nsha256  c83230b770f17ef1386ea1fd3681271dd98aa93646bdbfb5bff3a1b7050fff9d  COPYING.README\n"
  },
  {
    "path": "package/eigen/eigen.mk",
    "content": "################################################################################\n#\n# eigen\n#\n################################################################################\n\nEIGEN_VERSION = 3.3.7\nEIGEN_SOURCE = eigen-$(EIGEN_VERSION).tar.bz2\nEIGEN_SITE = $(call gitlab,libeigen,eigen,$(EIGEN_VERSION))\nEIGEN_LICENSE = MPL2, BSD-3-Clause, LGPL-2.1\nEIGEN_LICENSE_FILES = COPYING.MPL2 COPYING.BSD COPYING.LGPL COPYING.README\nEIGEN_INSTALL_STAGING = YES\nEIGEN_INSTALL_TARGET = NO\nEIGEN_SUPPORTS_IN_SOURCE_BUILD = NO\n\n# Default Eigen CMake installs .pc file in /usr/share/pkgconfig\n# change it to /usr/lib/pkgconfig, to be consistent with other packages.\nEIGEN_CONF_OPTS = -DPKGCONFIG_INSTALL_DIR=/usr/lib/pkgconfig \\\n\t-DCMAKE_Fortran_COMPILER=$(TARGET_FC)\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/ejabberd/0001-Makefile.in-do-not-download-or-compile-dependencies.patch",
    "content": "From cb583beba1acba55112fbb4636c1c73d9ae691a0 Mon Sep 17 00:00:00 2001\nFrom: Johan Oudinet <johan.oudinet@gmail.com>\nDate: Fri, 20 Nov 2020 00:33:30 +0100\nSubject: [PATCH] Makefile.in: do not download or compile dependencies\n\nSigned-off-by: Johan Oudinet <johan.oudinet@gmail.com>\n---\n Makefile.in | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex abd64835..06f876bb 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -97,7 +97,7 @@ ifneq ($(INSTALLGROUP),)\n   G_USER=-g $(INSTALLGROUP)\n endif\n \n-all: deps src\n+all: src\n \n deps: deps/.got\n \n@@ -111,7 +111,7 @@ deps/.built: deps/.got\n \t$(REBAR) configure-deps\n \t$(REBAR) compile && :> deps/.built\n \n-src: deps/.built\n+src:\n \t$(REBAR) skip_deps=true compile\n \n update:\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/ejabberd/0002-fix-ejabberdctl.patch",
    "content": "From 4283f675f21d3923e200092cec6418014a03ad52 Mon Sep 17 00:00:00 2001\nFrom: Johan Oudinet <johan.oudinet@gmail.com>\nDate: Thu, 26 Dec 2019 17:06:34 +0100\nSubject: [PATCH] fix ejabberdctl\n\nChange default values so ejabberdctl run commands as ejabberd user.\n\nSigned-off-by: Johan Oudinet <johan.oudinet@gmail.com>\n---\n ejabberdctl.template | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/ejabberdctl.template b/ejabberdctl.template\nindex a940c3df7..5166e5a27 100755\n--- a/ejabberdctl.template\n+++ b/ejabberdctl.template\n@@ -15,7 +15,7 @@ SCRIPT_DIR=$(cd \"${0%/*}\" && pwd)\n ERL=\"{{erl}}\"\n IEX=\"{{bindir}}/iex\"\n EPMD=\"{{epmd}}\"\n-INSTALLUSER=\"{{installuser}}\"\n+INSTALLUSER=ejabberd\n \n # check the proper system user is used\n case $(id -un) in\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/ejabberd/Config.in",
    "content": "config BR2_PACKAGE_EJABBERD\n\tbool \"ejabberd\"\n\tdepends on BR2_PACKAGE_ERLANG\n\tdepends on BR2_INSTALL_LIBSTDCPP # jiffy, stringprep\n\tselect BR2_PACKAGE_ERLANG_EIMP\n\tselect BR2_PACKAGE_ERLANG_IDNA # runtime\n\tselect BR2_PACKAGE_ERLANG_JIFFY # runtime\n\tselect BR2_PACKAGE_ERLANG_JOSE # runtime\n\tselect BR2_PACKAGE_ERLANG_LAGER\n\tselect BR2_PACKAGE_ERLANG_P1_ACME # runtime\n\tselect BR2_PACKAGE_ERLANG_P1_CACHE_TAB\n\tselect BR2_PACKAGE_ERLANG_P1_MQTREE # runtime\n\tselect BR2_PACKAGE_ERLANG_P1_OAUTH2 # runtime\n\tselect BR2_PACKAGE_ERLANG_P1_PKIX # runtime\n\tselect BR2_PACKAGE_ERLANG_P1_SIP\n\tselect BR2_PACKAGE_ERLANG_P1_STRINGPREP\n\tselect BR2_PACKAGE_ERLANG_P1_STUN\n\tselect BR2_PACKAGE_ERLANG_P1_TLS\n\tselect BR2_PACKAGE_ERLANG_P1_UTILS\n\tselect BR2_PACKAGE_ERLANG_P1_XML\n\tselect BR2_PACKAGE_ERLANG_P1_XMPP\n\tselect BR2_PACKAGE_ERLANG_P1_YAML\n\tselect BR2_PACKAGE_ERLANG_P1_YCONF # runtime\n\tselect BR2_PACKAGE_ERLANG_P1_ZLIB\n\tselect BR2_PACKAGE_GETENT\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Ejabberd is a Jabber/XMPP instant messaging server, written\n\t  in Erlang/OTP. Among other features, ejabberd is\n\t  cross-platform, fault-tolerant, clusterable and modular.\n\n\t  http://www.ejabberd.im\n\ncomment \"ejabberd needs erlang, toolchain w/ C++\"\n\tdepends on !BR2_PACKAGE_ERLANG || !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/ejabberd/S50ejabberd",
    "content": "#!/bin/sh\n#\n# Start/stop ejabberd\n#\n\nCTL=/usr/sbin/ejabberdctl\nDEFAULT=/etc/ejabberd/ejabberdctl.cfg\nINSTALLUSER=ejabberd\nRUNDIR=/var/run/ejabberd\n\n# Read default configuration file if present.\n[ -r \"$DEFAULT\" ] && . \"$DEFAULT\"\n\n# Create RUNDIR.\nmkrundir() {\n    install -d -o \"$INSTALLUSER\" -g \"$INSTALLUSER\" \"$RUNDIR\"\n}\n\ncase \"$1\" in\n    start)\n        mkrundir || exit 1\n        printf \"Starting ejabberd... \"\n        \"$CTL\" start\n        # Wait until ejabberd is up and running.\n        if \"$CTL\" started; then\n            echo \"done\"\n        else\n            echo \"failed\"\n        fi\n        ;;\n    stop)\n        printf \"Stopping ejabberd... \"\n        \"$CTL\" stop > /dev/null\n        if [ $? -eq 3 ] || \"$CTL\" stopped; then\n            echo \"OK\"\n        else\n            echo \"failed\"\n        fi\n        ;;\n    status)\n        \"$CTL\" status\n        ;;\n    restart|force-reload)\n        \"$0\" stop || true\n        \"$0\" start\n        ;;\n    live)\n        mkrundir || exit 1\n        \"$CTL\" live\n        ;;\n    *)\n        echo \"Usage: $0 {start|stop|status|restart|force-reload|live}\"\n        exit 1\nesac\n"
  },
  {
    "path": "package/ejabberd/check-erlang-lib",
    "content": "#!/bin/sh -e\n# Helper to bypass AC_ERLANG_CHECK_LIB\n#\n# Ejabberd releases do not download specific versions of its erlang\n# dependencies.  Instead, it clones the master branch of a git\n# repository and asks erl to provide the library version.  However,\n# the target erl program cannot be called from the host. So, this\n# script aims at finding the library version installed on the target,\n# without calling erlang.\n\nusage() {\n    cat <<EOF\nUsage:\n        $0 library\nLook for Erlang's library in TARGET_DIR/usr/lib/erlang/lib.\n\nIf the library is found, it returns the path to the latest version,\nrelative to TARGET_DIR. Otherwise, it returns \"not found\".\n\nIf there are several versions, it returns an error because it does not\nknow which one Erlang uses.\n\nEOF\n}\n\ndie () {\n    echo \"$@\" >&2\n    exit 1\n}\n\nif [ $# -ne 1 ]; then\n    usage\n    exit 0\nelse\n    library=\"$1\"\nfi\n\ntarget_dir=\"${TARGET_DIR:-output/target}\"\n\n[ -d \"$target_dir\" ] || die \"TARGET_DIR is not a directory. Please \\\nspecify the TARGET_DIR environment variable.\"\n\ncase \"$(ls -1d -- \"$target_dir/usr/lib/erlang/lib/$library-\"* | wc -l)\" in\n    0)\n        echo \"not found\"\n        ;;\n    1)\n        echo \"$target_dir/usr/lib/erlang/lib/$library-\"* \\\n            | sed -e \"s,^$target_dir,,\"\n        ;;\n    *)\n        die \"Several versions of $library have been found. Please \\\n        remove the unused ones.\"\n        ;;\nesac\n"
  },
  {
    "path": "package/ejabberd/ejabberd.hash",
    "content": "# Locally computed\nsha256  9e922b938458ae9d72d4e5fdd2d08a1fbad651aae47c9a9d15b79d0bbd1e11f8  ejabberd-20.07.tgz\nsha256  469bb8cfa3ef22c102875ff31932450c075e6908ff3f7d36893485c0c30898eb  COPYING\n"
  },
  {
    "path": "package/ejabberd/ejabberd.mk",
    "content": "################################################################################\n#\n# ejabberd\n#\n################################################################################\n\nEJABBERD_VERSION = 20.07\nEJABBERD_SOURCE = ejabberd-$(EJABBERD_VERSION).tgz\nEJABBERD_SITE = https://static.process-one.net/ejabberd/downloads/$(EJABBERD_VERSION)\nEJABBERD_LICENSE = GPL-2.0+ with OpenSSL exception\nEJABBERD_LICENSE_FILES = COPYING\nEJABBERD_CPE_ID_VENDOR = process-one\nEJABBERD_DEPENDENCIES = getent openssl erlang-eimp host-erlang-lager \\\n\terlang-lager erlang-p1-cache-tab erlang-p1-sip \\\n\terlang-p1-stringprep erlang-p1-stun erlang-p1-tls \\\n\terlang-p1-utils erlang-p1-xml erlang-p1-xmpp erlang-p1-yaml \\\n\terlang-p1-zlib host-erlang-p1-utils host-erlang-p1-xmpp\n\n# 0001-remove-make-targets-for-deps.patch updates Makefile.in\nEJABBERD_USE_AUTOCONF = YES\nEJABBERD_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nEJABBERD_DEPENDENCIES += linux-pam\nendif\n\nEJABBERD_ERLANG_LIBS = sasl public_key mnesia inets compiler\n\n# Guess answers for these tests, configure will bail out otherwise\n# saying error: cannot run test program while cross compiling.\nEJABBERD_CHECK_LIB = $(TOPDIR)/$(EJABBERD_PKGDIR)/check-erlang-lib\nEJABBERD_CONF_ENV = \\\n\tac_cv_erlang_root_dir=\"$(HOST_DIR)/lib/erlang\" \\\n\t$(foreach lib,$(EJABBERD_ERLANG_LIBS), \\\n\t\tac_cv_erlang_lib_dir_$(lib)=\"`$(EJABBERD_CHECK_LIB) $(lib)`\")\n\nEJABBERD_CONF_OPTS = \\\n\t--enable-system-deps \\\n\t--disable-erlang-version-check\n\ndefine EJABBERD_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) install -C $(@D)\nendef\n\n# Replace HOST_DIR prefix to /usr in environment variables of\n# ejabberctl script.\ndefine EJABBERD_FIX_EJABBERDCTL\n\t$(SED) 's,=\"$(HOST_DIR),=\"/usr,' '$(TARGET_DIR)/usr/sbin/ejabberdctl'\nendef\n\nEJABBERD_POST_INSTALL_TARGET_HOOKS += EJABBERD_FIX_EJABBERDCTL\n\ndefine EJABBERD_USERS\n\tejabberd -1 ejabberd -1 * /var/lib/ejabberd /bin/sh - ejabberd daemon\nendef\n\ndefine EJABBERD_PERMISSIONS\n\t/etc/ejabberd r 750 root ejabberd - - - - -\n\t/usr/sbin/ejabberdctl f 750 root ejabberd - - - - -\nendef\n\ndefine EJABBERD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/ejabberd/S50ejabberd \\\n\t\t$(TARGET_DIR)/etc/init.d/S50ejabberd\nendef\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/elf2flt/0001-ld-elf2flt-behave-properly-when-called-with-a-name-d.patch",
    "content": "From b31e9b1bff6832063816b972395179859d1d4619 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sun, 13 Aug 2017 16:03:20 +0200\nSubject: [PATCH] ld-elf2flt: behave properly when called with a name different\n from TARGET_ALIAS\n\nld-elf2flt currently handles two cases:\n\n 1 It is called as the wrapper for <TARGET_ALIAS>-ld, generally\n   installed in the bin/ directory of a toolchain.\n\n 2 It is called as the wrapper for \"ld\", generally installed in the\n   TARGET_ALIAS/bin/ directory of a toolchain.\n\nUnfortunately, if for some reason it gets called using a FOOBAR-ld\nname that is different from <TARGET_ALIAS>-ld, it assumes it is in\ncase (2), while it really is in case (1). Due to this, the path\nmangling logic doesn't work, and it doesn't find ld.real.\n\nThis happens for example when the binary program in bin/ is named\narm-buildroot-uclinux-uclibcgnueabi-ld, but also has a simpler symlink\nnamed arm-linux-ld. In this case,\narm-buildroot-uclinux-uclibcgnueabi-ld is recognized by ld-elf2flt as\ncontaining TARGET_ALIAS, and therefore the proper logic to find\nld.real is applied. However, when arm-linux-ld is used, ld-elf2flt\ndoesn't find TARGET_ALIAS, and therefore assumes we're being called as\nTARGET_ALIAS/bin/ld.. and searches for a program called ld.real in\nbin/, which doesn't exist.\n\nSee:\n\n$ ./output/host/bin/arm-buildroot-uclinux-uclibcgnueabi-ld\n/home/thomas/buildroot/buildroot/output/host/bin/../arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: no input files\n\n$ ./output/host/bin/arm-linux-ld\narm-linux-ld (ld-elf2flt): error trying to exec '/home/thomas/buildroot/buildroot/output/host/bin/ld.real': execvp: No such file or directory\n\n$ ./output/host/arm-buildroot-uclinux-uclibcgnueabi/bin/ld\n/home/thomas/buildroot/buildroot/output/host/arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: no input files\n\nThis commit fixes that by inverting the logic: if we're being called\nas just \"ld\", then we assume it's the program in\nTARGET_ALIAS/bin/. Otherwise, we're called through some variant of\nTARGET-ld.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSubmitted-upstream: https://github.com/uclinux-dev/elf2flt/pull/8\n---\n ld-elf2flt.c | 10 +++++-----\n 1 file changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/ld-elf2flt.c b/ld-elf2flt.c\nindex de39fe0..c187c2e 100644\n--- a/ld-elf2flt.c\n+++ b/ld-elf2flt.c\n@@ -506,15 +506,15 @@ int main(int argc, char *argv[])\n \t   the host while those in <TARGET_ALIAS>/lib are for the target.\n \t   Make bindir point to the bin dir for bin/<TARGET_ALIAS>-foo.\n \t   Make tooldir point to the bin dir for <TARGET_ALIAS>/bin/foo.  */\n-\tif (streqn(elf2flt_progname, TARGET_ALIAS)) {\n-\t\ttmp = concat(argv0_dir, \"../\" TARGET_ALIAS \"/bin\", NULL);\n+\tif (streqn(elf2flt_progname, \"ld\")) {\n+\t\ttmp = concat(argv0_dir, \"../../bin\", NULL);\n \t\tif (stat(tmp, &buf) == 0 && S_ISDIR(buf.st_mode)) {\n-\t\t\ttooldir = concat(tmp, \"/\", NULL);\n+\t\t\tbindir = concat(tmp, \"/\", NULL);\n \t\t}\n \t} else {\n-\t\ttmp = concat(argv0_dir, \"../../bin\", NULL);\n+\t\ttmp = concat(argv0_dir, \"../\" TARGET_ALIAS \"/bin\", NULL);\n \t\tif (stat(tmp, &buf) == 0 && S_ISDIR(buf.st_mode)) {\n-\t\t\tbindir = concat(tmp, \"/\", NULL);\n+\t\t\ttooldir = concat(tmp, \"/\", NULL);\n \t\t}\n \t}\n \n-- \n2.9.4\n\n"
  },
  {
    "path": "package/elf2flt/0002-elf2flt.c-add-new-relocation-types-for-xtensa.patch",
    "content": "From d7eb73163bcea31168c438fc132a0967ac172e3d Mon Sep 17 00:00:00 2001\nFrom: Max Filippov <jcmvbkbc@gmail.com>\nDate: Thu, 7 May 2020 21:11:43 -0700\nSubject: [PATCH] elf2flt.c: add new relocation types for xtensa\n\nXtensa have added new relocation types R_XTENSA_[NP]DIFF{8,16,32} with\nthe same properties as the existing types R_XTENSA_DIFF{8,16,32}.\nAdd them to the list of ignored relocation types.\n\nThis fixes the following error when invoking elf2flt on xtensa binaries\nbuilt with the recent binutils:\n\n  ERROR: reloc type R_XTENSA_PDIFF32 unsupported in this context\n\nReported-by: Romain Naour <romain.naour@gmail.com>\nSigned-off-by: Max Filippov <jcmvbkbc@gmail.com>\nBackported from: d7eb73163bcea31168c438fc132a0967ac172e3d\n---\n Makefile.in  |  3 ++-\n configure    | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++\n configure.ac | 14 ++++++++++++\n elf2flt.c    |  8 +++++++\n 4 files changed, 88 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 52b3347d7f43..0529c7f0a25a 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -30,7 +30,8 @@ DEFS = @DEFS@ \\\n \t-DNO_GOT_CHECK=@got_check@ \\\n \t-DUSE_EMIT_RELOCS=@emit_relocs@ \\\n \t-DEMIT_CTOR_DTOR=@emit_ctor_dtor@ \\\n-\t-DALWAYS_RELOC_TEXT=@always_reloc_text@\n+\t-DALWAYS_RELOC_TEXT=@always_reloc_text@ \\\n+\t-DHAVE_BFD_XTENSA_PDIFF_RELOCS=@HAVE_BFD_XTENSA_PDIFF_RELOCS@\n EXEEXT = @EXEEXT@\n OBJEXT = @OBJEXT@\n \ndiff --git a/configure b/configure\nindex bb8e33f9cb28..bca38c34247e 100755\n--- a/configure\n+++ b/configure\n@@ -621,6 +621,7 @@ ac_includes_default=\"\\\n \n ac_subst_vars='LTLIBOBJS\n LIBOBJS\n+HAVE_BFD_XTENSA_PDIFF_RELOCS\n SYMBOL_PREFIX\n always_reloc_text\n emit_ctor_dtor\n@@ -1729,6 +1730,52 @@ fi\n \n } # ac_fn_c_try_link\n \n+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES\n+# ---------------------------------------------\n+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR\n+# accordingly.\n+ac_fn_c_check_decl ()\n+{\n+  as_lineno=${as_lineno-\"$1\"} as_lineno_stack=as_lineno_stack=$as_lineno_stack\n+  as_decl_name=`echo $2|sed 's/ *(.*//'`\n+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`\n+  { $as_echo \"$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared\" >&5\n+$as_echo_n \"checking whether $as_decl_name is declared... \" >&6; }\n+if eval \\${$3+:} false; then :\n+  $as_echo_n \"(cached) \" >&6\n+else\n+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext\n+/* end confdefs.h.  */\n+$4\n+int\n+main ()\n+{\n+#ifndef $as_decl_name\n+#ifdef __cplusplus\n+  (void) $as_decl_use;\n+#else\n+  (void) $as_decl_name;\n+#endif\n+#endif\n+\n+  ;\n+  return 0;\n+}\n+_ACEOF\n+if ac_fn_c_try_compile \"$LINENO\"; then :\n+  eval \"$3=yes\"\n+else\n+  eval \"$3=no\"\n+fi\n+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext\n+fi\n+eval ac_res=\\$$3\n+\t       { $as_echo \"$as_me:${as_lineno-$LINENO}: result: $ac_res\" >&5\n+$as_echo \"$ac_res\" >&6; }\n+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno\n+\n+} # ac_fn_c_check_decl\n+\n # ac_fn_c_check_func LINENO FUNC VAR\n # ----------------------------------\n # Tests whether FUNC exists, setting the cache variable VAR accordingly\n@@ -4272,6 +4319,22 @@ $as_echo \"#define const /**/\" >>confdefs.h\n fi\n \n \n+HAVE_BFD_XTENSA_PDIFF_RELOCS=0\n+case $target in\n+\txtensa*)\n+\t\tOLD_CPPFLAGS=$CPPFLAGS\n+\t\tCPPFLAGS=\"-I$bfd_include_dir -I$binutils_include_dir $CPPFLAGS\"\n+\t\tac_fn_c_check_decl \"$LINENO\" \"R_XTENSA_PDIFF8\" \"ac_cv_have_decl_R_XTENSA_PDIFF8\" \"#include \\\"bfd.h\\\"\n+\t\t\t       #include \\\"elf/xtensa.h\\\"\n+\"\n+if test \"x$ac_cv_have_decl_R_XTENSA_PDIFF8\" = xyes; then :\n+  HAVE_BFD_XTENSA_PDIFF_RELOCS=1\n+fi\n+\n+\t\tCPPFLAGS=$OLD_CPPFLAGS\n+\t\t;;\n+esac\n+\n for ac_func in vprintf\n do :\n   ac_fn_c_check_func \"$LINENO\" \"vprintf\" \"ac_cv_func_vprintf\"\n@@ -4333,6 +4396,7 @@ fi\n \n \n \n+\n ac_config_files=\"$ac_config_files ld-elf2flt.sh:ld-elf2flt.in Makefile elf2flt.ld\"\n \n cat >confcache <<\\_ACEOF\ndiff --git a/configure.ac b/configure.ac\nindex d6b4119eb18a..19969b1045f6 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -202,6 +202,19 @@ AC_CHECK_HEADERS(fcntl.h unistd.h bfd.h)\n dnl Checks for typedefs, structures, and compiler characteristics.\n AC_C_CONST\n \n+HAVE_BFD_XTENSA_PDIFF_RELOCS=0\n+case $target in\n+\txtensa*)\n+\t\tAS_VAR_COPY([OLD_CPPFLAGS], [CPPFLAGS])\n+\t\tAS_VAR_SET([CPPFLAGS], [\"-I$bfd_include_dir -I$binutils_include_dir $CPPFLAGS\"])\n+\t\tAC_CHECK_DECL([R_XTENSA_PDIFF8],\n+\t\t\t      [HAVE_BFD_XTENSA_PDIFF_RELOCS=1],,\n+\t\t\t      [#include \"bfd.h\"\n+\t\t\t       #include \"elf/xtensa.h\"])\n+\t\tAS_VAR_COPY([CPPFLAGS], [OLD_CPPFLAGS])\n+\t\t;;\n+esac\n+\n dnl Checks for library functions.\n AC_FUNC_VPRINTF\n \n@@ -235,6 +248,7 @@ AC_SUBST(emit_relocs)\n AC_SUBST(emit_ctor_dtor)\n AC_SUBST(always_reloc_text)\n AC_SUBST(SYMBOL_PREFIX)\n+AC_SUBST(HAVE_BFD_XTENSA_PDIFF_RELOCS)\n \n AC_OUTPUT(ld-elf2flt.sh:ld-elf2flt.in Makefile elf2flt.ld)\n \ndiff --git a/elf2flt.c b/elf2flt.c\nindex b7c4a490df02..961534973f56 100644\n--- a/elf2flt.c\n+++ b/elf2flt.c\n@@ -776,6 +776,14 @@ output_relocs (\n \t\t\t\tcase R_XTENSA_DIFF8:\n \t\t\t\tcase R_XTENSA_DIFF16:\n \t\t\t\tcase R_XTENSA_DIFF32:\n+#if HAVE_BFD_XTENSA_PDIFF_RELOCS\n+\t\t\t\tcase R_XTENSA_PDIFF8:\n+\t\t\t\tcase R_XTENSA_PDIFF16:\n+\t\t\t\tcase R_XTENSA_PDIFF32:\n+\t\t\t\tcase R_XTENSA_NDIFF8:\n+\t\t\t\tcase R_XTENSA_NDIFF16:\n+\t\t\t\tcase R_XTENSA_NDIFF32:\n+#endif\n \t\t\t\tcase R_XTENSA_32_PCREL:\n \t\t\t\t\tcontinue;\n \t\t\t\tcase R_XTENSA_32:\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/elf2flt/0003-elf2flt-handle-binutils-2.34.patch",
    "content": "From 26165906f85d82f0a4456f34b5c60fcaaef48535 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@smile.fr>\nDate: Wed, 5 Feb 2020 10:31:32 +0100\nSubject: [PATCH] elf2flt: handle binutils >= 2.34\n\nThe latest Binutils release (2.34) is not compatible with elf2flt due\nto a change in bfd_section_* macros [1]. The issue has been reported\nto the Binutils mailing list but Alan Modra recommend to bundle\nlibbfd library sources into each projects using it [2]. That's\nbecause the API is not stable over the time without any backward\ncompatibility guaranties.\n\nOn the other hand, the elf2flt tools needs to support modified\nversion of binutils for specific arch/target [3].\n\nAdd two tests in the configure script to detect this API change\nin order to support binutils < 2.34 and binutils >= 2.34.\n\nUpstream status: [4]\n\n[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=fd3619828e94a24a92cddec42cbc0ab33352eeb4\n[2] https://sourceware.org/ml/binutils/2020-02/msg00044.html\n[3] https://github.com/uclinux-dev/elf2flt/issues/14\n[4] https://github.com/uclinux-dev/elf2flt/pull/15\n\nSigned-off-by: Romain Naour <romain.naour@smile.fr>\n---\n configure.ac | 16 +++++++++++\n elf2flt.c    | 81 +++++++++++++++++++++++++++++-----------------------\n 2 files changed, 61 insertions(+), 36 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex e82eb1d..cf7dea8 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -229,6 +229,22 @@ AC_CHECK_FUNCS([ \\\n \tstrsignal \\\n ])\n \n+dnl Various bfd section macros and functions like bfd_section_size() have been\n+dnl modified starting with binutils >= 2.34.\n+dnl Check if the prototypes take a bfd argument.\n+if test \"$binutils_build_dir\" != \"NONE\"; then\n+    CFLAGS=\"-I$binutils_include_dir -I$bfd_include_dir $CFLAGS\"\n+fi\n+\n+AC_TRY_COMPILE([#include <bfd.h>],\n+ [const asection *sec; bfd_section_size(sec);],\n+ bfd_section_api_takes_bfd=no,\n+ bfd_section_api_takes_bfd=yes)\n+if test \"$bfd_section_api_takes_bfd\" = \"yes\" ; then\n+  AC_DEFINE(HAVE_BFD_SECTION_API_TAKES_BFD, 1,\n+   [define to 1 for binutils < 2.34])\n+fi\n+\n if test \"$GCC\" = yes ; then\n \tCFLAGS=\"-Wall $CFLAGS\"\n \tif test \"$werror\" = 1 ; then\ndiff --git a/elf2flt.c b/elf2flt.c\nindex b93aecd..3bcf4fe 100644\n--- a/elf2flt.c\n+++ b/elf2flt.c\n@@ -149,6 +149,17 @@ const char *elf2flt_progname;\n #define O_BINARY 0\n #endif\n \n+/*\n+ * The bfd parameter isn't actually used by any of the bfd_section funcs and\n+ * have been removed since binutils 2.34.\n+ */\n+#ifdef HAVE_BFD_SECTION_API_TAKES_BFD\n+#define elf2flt_bfd_section_size(s) bfd_section_size(NULL, s)\n+#define elf2flt_bfd_section_vma(s)  bfd_section_vma(NULL, s)\n+#else\n+#define elf2flt_bfd_section_size(s) bfd_section_size(s)\n+#define elf2flt_bfd_section_vma(s)  bfd_section_vma(s)\n+#endif\n \n /* Extra output when running.  */\n static int verbose = 0;\n@@ -323,10 +334,8 @@ compare_relocs (const void *pa, const void *pb)\n \telse if (!rb->sym_ptr_ptr || !*rb->sym_ptr_ptr)\n \t\treturn 1;\n \n-\ta_vma = bfd_section_vma(compare_relocs_bfd,\n-\t\t\t\t(*(ra->sym_ptr_ptr))->section);\n-\tb_vma = bfd_section_vma(compare_relocs_bfd,\n-\t\t\t\t(*(rb->sym_ptr_ptr))->section);\n+\ta_vma = elf2flt_bfd_section_vma((*(ra->sym_ptr_ptr))->section);\n+\tb_vma = elf2flt_bfd_section_vma((*(rb->sym_ptr_ptr))->section);\n \tva = (*(ra->sym_ptr_ptr))->value + a_vma + ra->addend;\n \tvb = (*(rb->sym_ptr_ptr))->value + b_vma + rb->addend;\n \treturn va - vb;\n@@ -403,7 +412,7 @@ output_relocs (\n   }\n \n   for (a = abs_bfd->sections; (a != (asection *) NULL); a = a->next) {\n-  \tsection_vma = bfd_section_vma(abs_bfd, a);\n+\tsection_vma = elf2flt_bfd_section_vma(a);\n \n \tif (verbose)\n \t\tprintf(\"SECTION: %s [%p]: flags=0x%x vma=0x%\"PRIx32\"\\n\",\n@@ -442,7 +451,7 @@ output_relocs (\n \t  continue;\n \tif (verbose)\n \t  printf(\" RELOCS: %s [%p]: flags=0x%x vma=0x%\"BFD_VMA_FMT\"x\\n\",\n-\t\t\tr->name, r, r->flags, bfd_section_vma(abs_bfd, r));\n+\t\t\tr->name, r, r->flags, elf2flt_bfd_section_vma(r));\n   \tif ((r->flags & SEC_RELOC) == 0)\n   \t  continue;\n \trelsize = bfd_get_reloc_upper_bound(rel_bfd, r);\n@@ -694,7 +703,7 @@ output_relocs (\n \t\t\t\tcase R_BFIN_RIMM16:\n \t\t\t\tcase R_BFIN_LUIMM16:\n \t\t\t\tcase R_BFIN_HUIMM16:\n-\t\t\t\t    sym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t    sym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t    sym_addr += sym_vma + q->addend;\n \n \t\t\t\t    if (weak_und_symbol(sym_section->name, (*(q->sym_ptr_ptr))))\n@@ -727,7 +736,7 @@ output_relocs (\n \t\t\t\t    break;\n \n \t\t\t\tcase R_BFIN_BYTE4_DATA:\n-\t\t\t\t    sym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t    sym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t    sym_addr += sym_vma + q->addend;\n \n \t\t\t\t    if (weak_und_symbol (sym_section->name, (*(q->sym_ptr_ptr))))\n@@ -885,7 +894,7 @@ output_relocs (\n #if defined(TARGET_m68k)\n \t\t\t\tcase R_68K_32:\n \t\t\t\t\trelocation_needed = 1;\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\tbreak;\n \t\t\t\tcase R_68K_PC16:\n@@ -910,7 +919,7 @@ output_relocs (\n \t\t\t\t\t\t\tq->address, sym_addr,\n \t\t\t\t\t\t\t(*p)->howto->rightshift,\n \t\t\t\t\t\t\t*(uint32_t *)r_mem);\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\tbreak;\n \t\t\t\tcase R_ARM_GOT32:\n@@ -938,7 +947,7 @@ output_relocs (\n #ifdef TARGET_v850\n \t\t\t\tcase R_V850_ABS32:\n \t\t\t\t\trelocation_needed = 1;\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\tbreak;\n \t\t\t\tcase R_V850_ZDA_16_16_OFFSET:\n@@ -960,7 +969,7 @@ output_relocs (\n \t\t\t\t\tsym_addr = (*(q->sym_ptr_ptr))->value;\n \t\t\t\t\tq->address -= 1;\n \t\t\t\t\tr_mem -= 1; /* tracks q->address */\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\tsym_addr |= (*(unsigned char *)r_mem<<24);\n \t\t\t\t\tbreak;\n@@ -973,7 +982,7 @@ output_relocs (\n \t\t\t\t\t/* Absolute symbol done not relocation */\n \t\t\t\t\trelocation_needed = !bfd_is_abs_section(sym_section);\n \t\t\t\t\tsym_addr = (*(q->sym_ptr_ptr))->value;\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\tbreak;\n \t\t\t\tcase R_H8_DIR32:\n@@ -986,7 +995,7 @@ output_relocs (\n \t\t\t\t\t}\n \t\t\t\t\trelocation_needed = 1;\n \t\t\t\t\tsym_addr = (*(q->sym_ptr_ptr))->value;\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\tbreak;\n \t\t\t\tcase R_H8_PCREL16:\n@@ -1012,7 +1021,7 @@ output_relocs (\n #ifdef TARGET_microblaze\n \t\t\t\tcase R_MICROBLAZE_64:\n \t\t\t\t\t/* work out the relocation */\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\t/* Write relocated pointer back */\n \t\t\t\t\tr_mem[2] = (sym_addr >> 24) & 0xff;\n@@ -1026,7 +1035,7 @@ output_relocs (\n \t\t\t\t\tpflags = 0x80000000;\n \t\t\t\t\tbreak;\n \t\t\t\tcase R_MICROBLAZE_32:\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\trelocation_needed = 1;\n \t\t\t\t\tbreak;\n@@ -1058,7 +1067,7 @@ output_relocs (\n \t\t\t\tcase R_NIOS2_BFD_RELOC_32:\n \t\t\t\t\trelocation_needed = 1;\n \t\t\t\t\tpflags = (FLAT_NIOS2_R_32 << 28);\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\t/* modify target, in target order */\n \t\t\t\t\t*(unsigned long *)r_mem = htoniosl(sym_addr);\n@@ -1068,7 +1077,7 @@ output_relocs (\n \t\t\t\t\tunsigned long exist_val;\n \t\t\t\t\trelocation_needed = 1;\n \t\t\t\t\tpflags = (FLAT_NIOS2_R_CALL26 << 28);\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\t\n \t\t\t\t\t/* modify target, in target order */\n@@ -1099,7 +1108,7 @@ output_relocs (\n \t\t\t\t\t\t\t\t? FLAT_NIOS2_R_HIADJ_LO : FLAT_NIOS2_R_HI_LO;\n \t\t\t\t\t\t\tpflags <<= 28;\n \t\t\t\t\t\t\n-\t\t\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\t\t\tsym_addr += sym_vma + q->addend;\n \n \t\t\t\t\t\t\t/* modify high 16 bits, in target order */\n@@ -1132,7 +1141,7 @@ output_relocs (\n \t\t\t\t\t\tgoto NIOS2_RELOC_ERR;\n \t\t\t\t\t}\n \t\t\t\t\t/* _gp holds a absolute value, otherwise the ld cannot generate correct code */\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\t//printf(\"sym=%x, %d, _gp=%x, %d\\n\", sym_addr+sym_vma, sym_addr+sym_vma, gp, gp);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\tsym_addr -= gp;\n@@ -1213,7 +1222,7 @@ NIOS2_RELOC_ERR:\n \t\t\t\tcase R_SPARC_32:\n \t\t\t\tcase R_SPARC_UA32:\n \t\t\t\t\trelocation_needed = 1;\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\tbreak;\n \t\t\t\tcase R_SPARC_PC22:\n@@ -1232,7 +1241,7 @@ NIOS2_RELOC_ERR:\n \t\t\t\tcase R_SPARC_HI22:\n \t\t\t\t\trelocation_needed = 1;\n \t\t\t\t\tpflags = 0x80000000;\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\tsym_addr |= (\n \t\t\t\t\t\thtonl(*(uint32_t *)r_mem)\n@@ -1242,7 +1251,7 @@ NIOS2_RELOC_ERR:\n \t\t\t\tcase R_SPARC_LO10:\n \t\t\t\t\trelocation_needed = 1;\n \t\t\t\t\tpflags = 0x40000000;\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\tsym_addr &= 0x000003ff;\n \t\t\t\t\tsym_addr |= (\n@@ -1256,7 +1265,7 @@ NIOS2_RELOC_ERR:\n #ifdef TARGET_sh\n \t\t\t\tcase R_SH_DIR32:\n \t\t\t\t\trelocation_needed = 1;\n-\t\t\t\t\tsym_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\tsym_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\tsym_addr += sym_vma + q->addend;\n \t\t\t\t\tbreak;\n \t\t\t\tcase R_SH_REL32:\n@@ -1288,7 +1297,7 @@ NIOS2_RELOC_ERR:\n \t\t\t\tcase R_E1_CONST31:\n \t\t\t\t\t\trelocation_needed = 1;\n \t\t\t\t\t\tDBG_E1(\"Handling Reloc <CONST31>\\n\");\n-\t\t\t\t\t\tsec_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\t\tsec_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\t\tDBG_E1(\"sec_vma : [0x%x], sym_addr : [0x%x], q->address : [0x%x]\\n\",\n \t\t\t\t\t\t\t\t\t\tsec_vma, sym_addr, q->address);\n \t\t\t\t\t\tsym_addr = sec_vma + sym_addr;\n@@ -1303,7 +1312,7 @@ NIOS2_RELOC_ERR:\n \t\t\t\t\t\trelocation_needed = 0;\n \t\t\t\t\t\tDBG_E1(\"Handling Reloc <CONST31_PCREL>\\n\");\n \t\t\t\t\t\tDBG_E1(\"DONT RELOCATE AT LOADING\\n\");\n-\t\t\t\t\t\tsec_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\t\tsec_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\t\tDBG_E1(\"sec_vma : [0x%x], sym_addr : [0x%x], q->address : [0x%x]\\n\",\n \t\t\t\t\t\t\t\t\t\tsec_vma, sym_addr, q->address);\n \t\t\t\t\t\tsym_addr =  sec_vma + sym_addr;\n@@ -1330,7 +1339,7 @@ NIOS2_RELOC_ERR:\n \t\t\t\t\t\trelocation_needed = 0;\n \t\t\t\t\t\tDBG_E1(\"Handling Reloc <DIS29W_PCREL>\\n\");\n \t\t\t\t\t\tDBG_E1(\"DONT RELOCATE AT LOADING\\n\");\n-\t\t\t\t\t\tsec_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\t\tsec_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\t\tDBG_E1(\"sec_vma : [0x%x], sym_addr : [0x%x], q->address : [0x%x]\\n\",\n \t\t\t\t\t\t\t\t\t\tsec_vma, sym_addr, q->address);\n \t\t\t\t\t\tsym_addr =  sec_vma + sym_addr;\n@@ -1363,7 +1372,7 @@ NIOS2_RELOC_ERR:\n \t\t\t\t\t\tDBG_E1(\"Handling Reloc <DIS29B>\\n\");\n DIS29_RELOCATION:\n \t\t\t\t\t\trelocation_needed = 1;\n-\t\t\t\t\t\tsec_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\t\tsec_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\t\tDBG_E1(\"sec_vma : [0x%x], sym_addr : [0x%08x]\\n\",\n \t\t\t\t\t\t\t\t\t\tsec_vma, sym_addr);\n \t\t\t\t\t\tsym_addr =  sec_vma + sym_addr;\n@@ -1380,7 +1389,7 @@ DIS29_RELOCATION:\n \t\t\t\t\t\trelocation_needed = 0;\n \t\t\t\t\t\tDBG_E1(\"Handling Reloc <IMM32_PCREL>\\n\");\n \t\t\t\t\t\tDBG_E1(\"DONT RELOCATE AT LOADING\\n\");\n-\t\t\t\t\t\tsec_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\t\tsec_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\t\tDBG_E1(\"sec_vma : [0x%x], sym_addr : [0x%x]\\n\",\n \t\t\t\t\t\t\t\t\t\tsec_vma, sym_addr);\n \t\t\t\t\t\tsym_addr =  sec_vma + sym_addr;\n@@ -1406,7 +1415,7 @@ DIS29_RELOCATION:\n \t\t\t\tcase R_E1_IMM32:\n \t\t\t\t\t\trelocation_needed = 1;\n \t\t\t\t\t\tDBG_E1(\"Handling Reloc <IMM32>\\n\");\n-\t\t\t\t\t\tsec_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\t\tsec_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\t\tDBG_E1(\"sec_vma : [0x%x], sym_addr : [0x%x]\\n\",\n \t\t\t\t\t\t\t\t\t\tsec_vma, sym_addr);\n \t\t\t\t\t\tsym_addr =  sec_vma + sym_addr;\n@@ -1422,7 +1431,7 @@ DIS29_RELOCATION:\n \t\t\t\tcase R_E1_WORD:\n \t\t\t\t\t\trelocation_needed = 1;\n \t\t\t\t\t\tDBG_E1(\"Handling Reloc <WORD>\\n\");\n-\t\t\t\t\t\tsec_vma = bfd_section_vma(abs_bfd, sym_section);\n+\t\t\t\t\t\tsec_vma = elf2flt_bfd_section_vma(sym_section);\n \t\t\t\t\t\tDBG_E1(\"sec_vma : [0x%x], sym_addr : [0x%x]\\n\",\n \t\t\t\t\t\t\t\t\t\tsec_vma, sym_addr);\n \t\t\t\t\t\tsym_addr =  sec_vma + sym_addr;\n@@ -1449,7 +1458,7 @@ DIS29_RELOCATION:\n \t\t\t}\n \n \t\t\tsprintf(&addstr[0], \"+0x%lx\", sym_addr - (*(q->sym_ptr_ptr))->value -\n-\t\t\t\t\t bfd_section_vma(abs_bfd, sym_section));\n+\t\t\t\t\t elf2flt_bfd_section_vma(sym_section));\n \n \n \t\t\t/*\n@@ -1887,8 +1896,8 @@ int main(int argc, char *argv[])\n     } else\n       continue;\n \n-    sec_size = bfd_section_size(abs_bfd, s);\n-    sec_vma  = bfd_section_vma(abs_bfd, s);\n+    sec_size = elf2flt_bfd_section_size(s);\n+    sec_vma  = elf2flt_bfd_section_vma(s);\n \n     if (sec_vma < *vma) {\n       if (*len > 0)\n@@ -1913,7 +1922,7 @@ int main(int argc, char *argv[])\n     if (s->flags & SEC_CODE) \n       if (!bfd_get_section_contents(abs_bfd, s,\n \t\t\t\t   text + (s->vma - text_vma), 0,\n-\t\t\t\t   bfd_section_size(abs_bfd, s)))\n+\t\t\t\t   elf2flt_bfd_section_size(s)))\n       {\n \tfatal(\"read error section %s\", s->name);\n       }\n@@ -1939,7 +1948,7 @@ int main(int argc, char *argv[])\n     if (s->flags & SEC_DATA) \n       if (!bfd_get_section_contents(abs_bfd, s,\n \t\t\t\t   data + (s->vma - data_vma), 0,\n-\t\t\t\t   bfd_section_size(abs_bfd, s)))\n+\t\t\t\t   elf2flt_bfd_section_size(s)))\n       {\n \tfatal(\"read error section %s\", s->name);\n       }\n-- \n2.25.4\n\n"
  },
  {
    "path": "package/elf2flt/0004-elf2flt-add-riscv-64-bits-support.patch",
    "content": "From 1dea576eac4289602adc4a37f48c80330bf82e63 Mon Sep 17 00:00:00 2001\nFrom: Damien Le Moal <damien.lemoal@wdc.com>\nDate: Wed, 9 Sep 2020 17:31:33 +0900\nSubject: [PATCH] elf2flt: add riscv 64-bits support\n\nAdd support for riscv 64bits ISA by defining the relocation types\nR_RISCV_32_PCREL, R_RISCV_ADD32, R_RISCV_SUB32, R_RISCV_32 and\nR_RISCV_64. riscv64 support also needs the __global_pointer$ symbol to\nbe defined right after the relocation tables in the data section.\nFurthermore, the .got and .got.plt sections must be reversed. These 2\nrequirements are handled with runtime modifications of the default\nlinker script using the append_sed() function.\n(1) For the .got.plt and .got sections order swap, append_sed() is used\nto rename \"(.got.plt)\" to \"(.got.tmp)\" and to rename \"(.got)\" to\n\"(.got.plt)\". A last call finalize the name swap by replacing\n\"(.got.tmp)\" with \"(.got)\"\n(2) For the global pointer synbol, a definition line starting with\n\"RISCV_GP\" is added. The \"RISCV_GP\" string is removed if the target CPU\ntype is riscv64. The definition line is dropped for other CPU types.\n\nWith these changes, buildroot/busybox builds and run on NOMMU\nsystems with kernel 5.13. Tested on Canaan Kendryte K210 boards.\n\nThis patch is based on earlier work by Christoph Hellwig <hch@lst.de>.\n\nSigned-off-by: Damien Le Moal <damien.lemoal@wdc.com>\n---\n elf2flt.c     | 23 +++++++++++++++++++++++\n elf2flt.ld.in |  9 +++++----\n ld-elf2flt.c  | 16 ++++++++++++++++\n 3 files changed, 44 insertions(+), 4 deletions(-)\n\ndiff --git a/elf2flt.c b/elf2flt.c\nindex f87f1fc..dbce467 100644\n--- a/elf2flt.c\n+++ b/elf2flt.c\n@@ -80,6 +80,8 @@ const char *elf2flt_progname;\n #include <elf/v850.h>\n #elif defined(TARGET_xtensa)\n #include <elf/xtensa.h>\n+#elif defined(TARGET_riscv64)\n+#include <elf/riscv.h>\n #endif\n \n #if defined(__MINGW32__)\n@@ -122,6 +124,8 @@ const char *elf2flt_progname;\n #define ARCH\t\"nios2\"\n #elif defined(TARGET_xtensa)\n #define ARCH\t\"xtensa\"\n+#elif defined(TARGET_riscv64)\n+#define ARCH\t\"riscv64\"\n #else\n #error \"Don't know how to support your CPU architecture??\"\n #endif\n@@ -797,6 +801,16 @@ output_relocs (\n \t\t\t\t\tgoto good_32bit_resolved_reloc;\n \t\t\t\tdefault:\n \t\t\t\t\tgoto bad_resolved_reloc;\n+#elif defined(TARGET_riscv64)\n+\t\t\t\tcase R_RISCV_32_PCREL:\n+\t\t\t\tcase R_RISCV_ADD32:\n+\t\t\t\tcase R_RISCV_SUB32:\n+\t\t\t\t\tcontinue;\n+\t\t\t\tcase R_RISCV_32:\n+\t\t\t\tcase R_RISCV_64:\n+\t\t\t\t\tgoto good_32bit_resolved_reloc;\n+\t\t\t\tdefault:\n+\t\t\t\t\tgoto bad_resolved_reloc;\n #else\n \t\t\t\tdefault:\n \t\t\t\t\t/* The default is to assume that the\n@@ -1806,6 +1820,15 @@ int main(int argc, char *argv[])\n   if (!load_to_ram && !pfile)\n     load_to_ram = 1;\n \n+#if defined(TARGET_riscv64)\n+  /*\n+   * riscv only supports loading text and data contiguously.\n+   * So fail if load_to_ram is false.\n+   */\n+  if (!load_to_ram)\n+    fatal(\"Loading to RAM ('-r' option) is required\");\n+#endif\n+\n   fname = argv[argc-1];\n \n   if (pfile) {\ndiff --git a/elf2flt.ld.in b/elf2flt.ld.in\nindex ec1fe6f..c0c44b8 100644\n--- a/elf2flt.ld.in\n+++ b/elf2flt.ld.in\n@@ -70,10 +70,11 @@ W_RODAT\t\t*(.gnu.linkonce.r*)\n \t\t. = ALIGN(0x20) ;\n \t\tLONG(-1)\n \t\t. = ALIGN(0x20) ;\n-R_RODAT\t\t*(.rodata)\n-R_RODAT\t\t*(.rodata1)\n-R_RODAT\t\t*(.rodata.*)\n-R_RODAT\t\t*(.gnu.linkonce.r*)\n+RISCV_GP:\t__global_pointer$ = . + 0x800 ;\n+R_RODAT \t*(.rodata)\n+R_RODAT \t*(.rodata1)\n+R_RODAT \t*(.rodata.*)\n+R_RODAT \t*(.gnu.linkonce.r*)\n \t\t*(.data)\n \t\t*(.data1)\n \t\t*(.data.*)\ndiff --git a/ld-elf2flt.c b/ld-elf2flt.c\nindex e5de506..31b565f 100644\n--- a/ld-elf2flt.c\n+++ b/ld-elf2flt.c\n@@ -324,6 +324,22 @@ static int do_final_link(void)\n \t\tappend_option(&other_options, concat(got_offset, \"=\", buf, NULL));\n \t}\n \n+\tif (streq(TARGET_CPU, \"riscv64\")) {\n+\t\t/*\n+\t\t * The .got section must come before the .got.plt section\n+\t\t * (gcc/ld bug ?).\n+\t\t */\n+\t\tappend_sed(&sed, \"(.got.plt)\", \"(.got.tmp)\");\n+\t\tappend_sed(&sed, \"(.got.plt)\", \"(.got)\");\n+\t\tappend_sed(&sed, \"(.got.tmp)\", \"(.got.plt)\");\n+\n+\t\t/* The global pointer symbol is defined after the GOT. */\n+\t\tappend_sed(&sed, \"^RISCV_GP:\", \"\");\n+\t} else {\n+\t\t/* Get rid of the global pointer definition. */\n+\t\tappend_sed(&sed, \"^RISCV_GP:\", NULL);\n+\t}\n+\n \t/* Locate the default linker script, if we don't have one provided. */\n \tif (!linker_script)\n \t\tlinker_script = concat(ldscriptpath, \"/elf2flt.ld\", NULL);\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/elf2flt/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_ELF2FLT\n\tbool \"Enable elf2flt support?\"\n\tdepends on BR2_arm || BR2_sh || BR2_sparc || BR2_xtensa || BR2_RISCV_64\n\tdepends on !BR2_USE_MMU\n\thelp\n\t  uCLinux uses a Binary Flat format commonly known as BFLT. It\n\t  is a relatively simple and lightweight executable format\n\t  based on the original a.out format.\n\n\t  This option compiles the required tools and makes the required\n\t  modifications on your toolchain (linker).\n\n\t  https://github.com/uclinux-dev/elf2flt\n"
  },
  {
    "path": "package/elf2flt/elf2flt.hash",
    "content": "# Locally calculated\nsha256  d63baae6fe0d7fcc50a635be151a6f9e1e83dba30568046a869a395c15bf6284  elf2flt-7e33f28df198c46764021ed14408bd262751e148.tar.gz\nsha256  f20bc5007904094e3a4e9fbcc3526cdd40893f91d458c3139b308e5c4c0899c6  LICENSE.TXT\n"
  },
  {
    "path": "package/elf2flt/elf2flt.mk",
    "content": "################################################################################\n#\n# elf2flt\n#\n################################################################################\n\nELF2FLT_VERSION = 7e33f28df198c46764021ed14408bd262751e148\nELF2FLT_SITE = $(call github,uclinux-dev,elf2flt,$(ELF2FLT_VERSION))\nELF2FLT_LICENSE = GPL-2.0+\nELF2FLT_LICENSE_FILES = LICENSE.TXT\n\nHOST_ELF2FLT_DEPENDENCIES = host-binutils host-zlib\n\n# 0003-elf2flt-handle-binutils-2.34.patch\nHOST_ELF2FLT_AUTORECONF = YES\n\n# It is not exactly a host variant, but more a cross variant, which is\n# why we pass a special --target option.\nHOST_ELF2FLT_CONF_OPTS = \\\n\t--with-bfd-include-dir=$(HOST_BINUTILS_DIR)/bfd/ \\\n\t--with-binutils-include-dir=$(HOST_BINUTILS_DIR)/include/ \\\n\t--with-libbfd=$(HOST_BINUTILS_DIR)/bfd/libbfd.a \\\n\t--with-libiberty=$(HOST_BINUTILS_DIR)/libiberty/libiberty.a \\\n\t--target=$(GNU_TARGET_NAME) \\\n\t--disable-werror\n\nHOST_ELF2FLT_LIBS = -lz\n\nifeq ($(BR2_GCC_ENABLE_LTO),y)\nHOST_ELF2FLT_LIBS += -ldl\nendif\n\nHOST_ELF2FLT_CONF_ENV = LIBS=\"$(HOST_ELF2FLT_LIBS)\"\n\n# Hardlinks between binaries in different directories cause a problem\n# with rpath fixup, so we de-hardlink those binaries, and replace them\n# with copies instead. Note that elf2flt will rename ld to ld.real\n# before installing its own ld, but we already took care of the\n# original ld from binutils so that it is already de-hardlinked. So\n# ld is now the one from elf2flt, and we want to de-hardlinke it.\nELF2FLT_TOOLS = elf2flt flthdr ld\ndefine HOST_ELF2FLT_FIXUP_HARDLINKS\n\t$(foreach tool,$(ELF2FLT_TOOLS),\\\n\t\trm -f $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) && \\\n\t\tcp -a $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-$(tool) \\\n\t\t\t$(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool)\n\t)\nendef\nHOST_ELF2FLT_POST_INSTALL_HOOKS += HOST_ELF2FLT_FIXUP_HARDLINKS\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/elftosb/0001-fixes-includes.patch",
    "content": "This patch uses system include files instead of a hard coded system path to fixe\npotential compilation failure on systems that do not populate system header\nfiles in /usr/include/..\n\nSigned-off-by: Eric Jarrige <eric.jarrige@armadeus.org>\n---\nIndex: host-elftosb-10.12.01/common/stdafx.h\n===================================================================\n--- host-elftosb-10.12.01.orig/common/stdafx.h\t2012-01-30 12:43:35.000000000 +0100\n+++ host-elftosb-10.12.01/common/stdafx.h\t2012-01-30 12:43:54.000000000 +0100\n@@ -27,7 +27,7 @@\n // For Linux systems only, types.h only defines the signed\n // integer types.  This is not professional code.\n // Update: They are defined in the header files in the more recent version of redhat enterprise gcc.\n-#include \"/usr/include/sys/types.h\"\n+#include <sys/types.h>\n #include <stdint.h>\n //typedef unsigned long uint32_t;\n //typedef unsigned short uint16_t;\n"
  },
  {
    "path": "package/elftosb/0002-force-cxx-compiler.patch",
    "content": "Subject: [PATCH 1/1] elftosb: force host C++ compiler\n\nBecause Freescale provides *.cpp sources and elftosb links again libstdc++,\nforce to use the host c++ compiler.\n\nThis patch avoids the following error occurs:\n\ngcc 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\n/usr/bin/ld: ElftosbAST.o: undefined reference to symbol 'powf@@GLIBC_2.2.5'\n/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\n/lib64/libm.so.6: could not read symbols: Invalid operation\ncollect2: error: ld returned 1 exit status\n\nWhen compiling with gcc and linking against libstdc++, ld uses libc instead of\nlibstdc++.\nHowever, libc does not provide all functions libstdc++ does.\nIndeed, maths functions are provided by libm, not libc.\nThus, elftosb should either:\n- use gcc and link against libc and libm;\n- or use g++ and link against libstdc++.\n\nBecause elftosb is written in C++, this patch implement the sencond option, using\ng++ and linking against libstdc++.\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n\n---\nIndex: host-elftosb-10.12.01/makefile.rules\n===================================================================\n--- host-elftosb-10.12.01.orig/makefile.rules\t2012-06-09 21:12:23.557526100 +0200\n+++ host-elftosb-10.12.01/makefile.rules\t2012-06-09 21:15:21.659894571 +0200\n@@ -15,6 +15,8 @@\n # UNAMES is going to be set to either \"Linux\" or \"CYGWIN_NT-5.1\"\n UNAMES = $(shell uname -s)\n\n+CXX ?= g++\n+\n #*******************************************************************************\n #                               Directories\n\n@@ -37,9 +39,9 @@\n #*******************************************************************************\n #                               Build flags\n-# gcc Compiler flags\n+# Compiler flags\n #    -g\t\t\t\t\t\t: Produce debugging information.\n\n-CFLAGS\t    = -g $(INC_PATH) -D${UNAMES}\n+CXXFLAGS\t= -g $(INC_PATH) -D${UNAMES}\n\n #*******************************************************************************\n #                               File lists\n@@ -137,13 +139,13 @@ clean:\n \t\t${EXEC_FILE_ELFTOSB2} ${EXEC_FILE_SBTOOL} ${EXEC_FILE_KEYGEN}\n\n elftosb: ${OBJ_FILES_ELFTOSB2}\n-\tgcc ${OBJ_FILES_ELFTOSB2} ${LIBS} -o ${EXEC_FILE_ELFTOSB2}\n+\t$(CXX) ${OBJ_FILES_ELFTOSB2} ${LIBS} -o ${EXEC_FILE_ELFTOSB2}\n\n sbtool: ${OBJ_FILES_SBTOOL}\n-\tgcc ${OBJ_FILES_SBTOOL} ${LIBS} -o ${EXEC_FILE_SBTOOL}\n+\t$(CXX) ${OBJ_FILES_SBTOOL} ${LIBS} -o ${EXEC_FILE_SBTOOL}\n\n keygen: ${OBJ_FILES_KEYGEN}\n-\tgcc ${OBJ_FILES_KEYGEN} ${LIBS} -o ${EXEC_FILE_KEYGEN}\n+\t$(CXX) ${OBJ_FILES_KEYGEN} ${LIBS} -o ${EXEC_FILE_KEYGEN}\n\n\n #ifeq (\"${UNAMES}\", \"Linux\")\n@@ -153,10 +155,10 @@ keygen: ${OBJ_FILES_KEYGEN}\n .SUFFIXES : .c .cpp\n\n .c.o :\n-\tgcc ${CFLAGS} -c $<\n+\t$(CC) ${CXXFLAGS} -c $<\n\n .cpp.o :\n-\tgcc ${CFLAGS} -c $<\n+\t$(CXX) ${CXXFLAGS} -c $<\n\n #endif\n\n@@ -165,13 +167,13 @@ keygen: ${OBJ_FILES_KEYGEN}\n\n %.d: %.c\n \t@set -e; \\\n-\t$(CC) -MM $(CFLAGS) $< | \\\n+\t$(CC) -MM $(CXXFLAGS) $< | \\\n \tsed 's/\\($*\\)\\.o[ :]*/\\1.o $@ : /g' > $@; \\\n \t[ -s $@ ]  || rm -f $@\n\n %.d: %.cpp\n \t@set -e; \\\n-\t$(CC) -MM $(CFLAGS) $< | \\\n+\t$(CXX) -MM $(CXXFLAGS) $< | \\\n \tsed 's/\\($*\\)\\.o[ :]*/\\1.o $@ : /g' > $@; \\\n \t[ -s $@ ]  || rm -f $@\n\n"
  },
  {
    "path": "package/elftosb/elftosb.hash",
    "content": "# From http://repository.timesys.com/buildsources/e/elftosb/elftosb-10.12.01/elftosb-10.12.01.tar.gz.md5sum\nmd5\te8005d606c1e0bb3507c82f6eceb3056\telftosb-10.12.01.tar.gz\n# locally computed\nsha256  c861c25936b7bc0cf180023d540f2b0d0f5892edd27fd00efef4b6234c1df27a  COPYING\n"
  },
  {
    "path": "package/elftosb/elftosb.mk",
    "content": "################################################################################\n#\n# elftosb\n#\n################################################################################\n\nELFTOSB_VERSION = 10.12.01\nELFTOSB_SITE = http://repository.timesys.com/buildsources/e/elftosb/elftosb-$(ELFTOSB_VERSION)\nELFTOSB_LICENSE = BSD-3-Clause\nELFTOSB_LICENSE_FILES = COPYING\n\ndefine HOST_ELFTOSB_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) all\nendef\n\ndefine HOST_ELFTOSB_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/bld/linux/elftosb $(HOST_DIR)/bin/elftosb\n\t$(INSTALL) -D -m 0755 $(@D)/bld/linux/keygen $(HOST_DIR)/bin/keygen\n\t$(INSTALL) -D -m 0755 $(@D)/bld/linux/sbtool $(HOST_DIR)/bin/sbtool\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/elfutils/0001-Add-a-enable-disable-progs-configure-option.patch",
    "content": "From 73e4da5ca780196d23db8029dcd28f87a0402711 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Mon, 29 May 2017 23:03:48 +0300\nSubject: [PATCH] Add a --{enable,disable}-progs configure option\n\nAdd a --{enable,disable}-progs configuration option to elfutils. This\nallows to selectively disable the compilation of the elfutils programs\n(in which case only the libraries are built and installed). This is\nuseful because the programs are often not needed, and also because\nbuilding the programs against uClibc causes several issues (lack of\nobstack_printf() in uClibc for example).\n\nBased on the former patch by Thomas Petazzoni.\n\n[Vincent: tweak patch for 0.166]\n[Bernd: rebased patch for 0.177]\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Rebased on 0.183]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n[Fabrice: don't error out if obstack is not found]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile.am  | 6 +++++-\n configure.ac | 6 ++++++\n 2 files changed, 11 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 9c47afa..edf8dfc 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -26,8 +26,12 @@ AM_MAKEFLAGS = --no-print-directory\n \n pkginclude_HEADERS = version.h\n \n+if ENABLE_PROGS\n+PROGS_SUBDIR = src\n+endif\n+\n SUBDIRS = config lib libelf libcpu backends libebl libdwelf libdwfl libdw \\\n-\t  libasm debuginfod src po doc tests\n+\t  libasm debuginfod $(PROGS_SUBDIR) po doc tests\n \n EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \\\n \t     COPYING COPYING-GPLV2 COPYING-LGPLV3\ndiff --git a/configure.ac b/configure.ac\nindex d345495..0dd4b1e 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -393,6 +393,12 @@ AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),\n \t       [tests_use_rpath=$enableval], [tests_use_rpath=no])\n AM_CONDITIONAL(TESTS_RPATH, test \"$tests_use_rpath\" = yes)\n \n+AC_ARG_ENABLE([progs],\n+\tAS_HELP_STRING([--enable-progs], [enable progs]),\n+\tenable_progs=$enableval,\n+\tenable_progs=yes)\n+AM_CONDITIONAL(ENABLE_PROGS, test \"$enable_progs\" = yes)\n+\n dnl zlib is mandatory.\n save_LIBS=\"$LIBS\"\n LIBS=\n@@ -579,7 +585,7 @@ saved_LIBS=\"$LIBS\"\n AC_SEARCH_LIBS([_obstack_free], [obstack])\n LIBS=\"$saved_LIBS\"\n case \"$ac_cv_search__obstack_free\" in\n-        no) AC_MSG_FAILURE([failed to find _obstack_free]) ;;\n+        no) obstack_LIBS= ;;\n         -l*) obstack_LIBS=\"$ac_cv_search__obstack_free\" ;;\n         *) obstack_LIBS= ;;\n esac\n-- \n2.30.1\n\n"
  },
  {
    "path": "package/elfutils/0002-Really-make-Werror-conditional-to-BUILD_WERROR.patch",
    "content": "From 2688a0238eaf825d6659c16c012db0c16f07e197 Mon Sep 17 00:00:00 2001\nFrom: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\nDate: Mon, 29 May 2017 23:24:42 +0300\nSubject: [PATCH] Really make -Werror conditional to BUILD_WERROR\n\nOtherwise it will fail with an error message like this one:\n\nelf_getarsym.c:290:9: error: 'n' may be used uninitialized in this\nfunction [-Werror=maybe-uninitialized]\n    arsym[n].as_name = NULL;\n\t ^\ncc1: all warnings being treated as errors\n\n[Vincent: tweak patch for 0.166]\n[Bernd: rebased patch for 0.177]\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n config/eu.am | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/config/eu.am b/config/eu.am\nindex c2cc349ce876..99b368e09060 100644\n--- a/config/eu.am\n+++ b/config/eu.am\n@@ -73,7 +73,6 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \\\n \t    -Wold-style-definition -Wstrict-prototypes -Wtrampolines \\\n \t    $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \\\n \t    $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \\\n-\t    $(if $($(*F)_no_Werror),,-Werror) \\\n \t    $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \\\n \t    $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \\\n \t    $(if $($(*F)_no_Wpacked_not_aligned),-Wno-packed-not-aligned,) \\\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/elfutils/Config.in",
    "content": "comment \"elfutils needs a uClibc or glibc toolchain w/ wchar, dynamic library, threads\"\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)\n\nconfig BR2_PACKAGE_ELFUTILS\n\tbool \"elfutils\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# Only glibc and uClibc implement the myriad of required GNUisms\n\tdepends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC\n\tselect BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  Libraries/utilities to handle ELF objects (drop in\n\t  replacement for libelf).\n\n\t  Note that this option only installs the libraries, and not\n\t  the programs.\n\n\t  https://sourceware.org/elfutils/\n\nif BR2_PACKAGE_ELFUTILS\n\nconfig BR2_PACKAGE_ELFUTILS_PROGS\n\tbool \"Install programs\"\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  This option tells elfutils to not only install the libelf\n\t  libraries, but also the elfutils programs.\n\nendif\n"
  },
  {
    "path": "package/elfutils/elfutils.hash",
    "content": "# From https://sourceware.org/elfutils/ftp/0.184/sha512.sum\nsha512  5920c354edd6b28bb7e713d674bf6f2221e8ee91b90d582de39b1f45446aea1e7e3d4b6671024c391675b5e7530fe952c1320d730bb625c02d4c647ceb938bc8  elfutils-0.184.tar.bz2\n# Locally calculated\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING-GPLV2\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING-LGPLV3\n"
  },
  {
    "path": "package/elfutils/elfutils.mk",
    "content": "################################################################################\n#\n# elfutils\n#\n################################################################################\n\nELFUTILS_VERSION = 0.184\nELFUTILS_SOURCE = elfutils-$(ELFUTILS_VERSION).tar.bz2\nELFUTILS_SITE = https://sourceware.org/elfutils/ftp/$(ELFUTILS_VERSION)\nELFUTILS_INSTALL_STAGING = YES\nELFUTILS_LICENSE = GPL-2.0+ or LGPL-3.0+ (library)\nELFUTILS_LICENSE_FILES = COPYING COPYING-GPLV2 COPYING-LGPLV3\nELFUTILS_CPE_ID_VENDOR = elfutils_project\nELFUTILS_DEPENDENCIES = host-pkgconf zlib $(TARGET_NLS_DEPENDENCIES)\nHOST_ELFUTILS_DEPENDENCIES = host-pkgconf host-zlib host-bzip2 host-xz\n\n# We patch configure.ac\nELFUTILS_AUTORECONF = YES\nHOST_ELFUTILS_AUTORECONF = YES\n\n# Pass a custom program prefix to avoid a naming conflict between\n# elfutils binaries and binutils binaries.\nELFUTILS_CONF_OPTS += \\\n\t--program-prefix=\"eu-\"\n\nHOST_ELFUTILS_CONF_OPTS = \\\n\t--with-bzlib \\\n\t--with-lzma \\\n\t--without-zstd \\\n\t--disable-progs\n\n# elfutils gets confused when lfs mode is forced, so don't\nELFUTILS_CFLAGS = $(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CFLAGS))\nELFUTILS_CPPFLAGS = $(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CPPFLAGS))\n\n# sparc64 needs -fPIC instead of -fpic\nifeq ($(BR2_sparc64),y)\nELFUTILS_CFLAGS += -fPIC\nendif\n\nELFUTILS_CONF_ENV += \\\n\tCFLAGS=\"$(ELFUTILS_CFLAGS)\" \\\n\tCPPFLAGS=\"$(ELFUTILS_CPPFLAGS)\"\n\nELFUTILS_LDFLAGS = $(TARGET_LDFLAGS) \\\n\t$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nELFUTILS_LDFLAGS += -latomic\nendif\n\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),)\nELFUTILS_DEPENDENCIES += musl-fts\nELFUTILS_LDFLAGS += -lfts\nendif\n\n# disable for now, needs \"distro\" support\nELFUTILS_CONF_OPTS += --disable-libdebuginfod --disable-debuginfod\nHOST_ELFUTILS_CONF_OPTS += --disable-libdebuginfod --disable-debuginfod\n\nELFUTILS_CONF_ENV += \\\n\tLDFLAGS=\"$(ELFUTILS_LDFLAGS)\"\n\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\nELFUTILS_DEPENDENCIES += argp-standalone\nELFUTILS_CONF_OPTS += --disable-symbol-versioning\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nELFUTILS_DEPENDENCIES += bzip2\nELFUTILS_CONF_OPTS += --with-bzlib\nelse\nELFUTILS_CONF_OPTS += --without-bzlib\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nELFUTILS_DEPENDENCIES += xz\nELFUTILS_CONF_OPTS += --with-lzma\nelse\nELFUTILS_CONF_OPTS += --without-lzma\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nELFUTILS_DEPENDENCIES += zstd\nELFUTILS_CONF_OPTS += --with-zstd\nelse\nELFUTILS_CONF_OPTS += --without-zstd\nendif\n\nifeq ($(BR2_PACKAGE_ELFUTILS_PROGS),y)\nELFUTILS_CONF_OPTS += --enable-progs\nELFUTILS_LICENSE += , GPL-3.0+ (programs)\nELFUTILS_LICENSE_FILES += COPYING\nelse\nELFUTILS_CONF_OPTS += --disable-progs\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/elixir/elixir.hash",
    "content": "# Computed locally\nsha256 f3465d8a8e386f3e74831bf9594ee39e6dfde6aa430fe9260844cfe46aa10139  elixir-1.9.4.tar.gz\nsha256 a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9  LICENSE\n"
  },
  {
    "path": "package/elixir/elixir.mk",
    "content": "################################################################################\n#\n# elixir\n#\n################################################################################\n\nELIXIR_VERSION = 1.9.4\nELIXIR_SITE = $(call github,elixir-lang,elixir,v$(ELIXIR_VERSION))\nELIXIR_LICENSE = Apache-2.0\nELIXIR_LICENSE_FILES = LICENSE\nHOST_ELIXIR_DEPENDENCIES = host-erlang\n\ndefine HOST_ELIXIR_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) compile\nendef\n\ndefine HOST_ELIXIR_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) PREFIX=\"$(HOST_DIR)\" -C $(@D) install\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/ell/Config.in",
    "content": "config BR2_PACKAGE_ELL\n\tbool \"ell\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Embedded Linux library (ell)\n\n\t  https://01.org/ell\n\ncomment \"ell needs a toolchain w/ wchar, headers >= 4.12\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n"
  },
  {
    "path": "package/ell/ell.hash",
    "content": "# From https://mirrors.edge.kernel.org/pub/linux/libs/ell/sha256sums.asc\nsha256  41a6f8fa4d285b52cb7a5a87bda3e7370ecaac02d94aaa7ec1a23f0480b8bc3f  ell-0.44.tar.xz\n\n# License files\nsha256  ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5  COPYING\n"
  },
  {
    "path": "package/ell/ell.mk",
    "content": "################################################################################\n#\n# ell\n#\n################################################################################\n\nELL_VERSION = 0.44\nELL_SOURCE = ell-$(ELL_VERSION).tar.xz\nELL_SITE = $(BR2_KERNEL_MIRROR)/linux/libs/ell\nELL_LICENSE = LGPL-2.1+\nELL_LICENSE_FILES = COPYING\nELL_INSTALL_STAGING = YES\n\nELL_DEPENDENCIES = host-pkgconf\n\n# disable ell/glib main loop example\nELL_CONF_OPTS = --disable-glib\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/emlog/Config.in",
    "content": "config BR2_PACKAGE_EMLOG\n\tbool \"emlog\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  emlog is a Linux kernel module that makes it easy to access\n\t  the most recent (and only the most recent) output from a\n\t  process. It works just like \"tail -f\" on a log file, except\n\t  that the storage required never grows. This can be useful in\n\t  embedded systems where there isn't enough memory or disk\n\t  space for keeping complete log files, but the most recent\n\t  debugging messages are sometimes needed (e.g., after an\n\t  error is observed).\n\n\t  https://github.com/nicupavel/emlog\n\ncomment \"emlog needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/emlog/emlog.hash",
    "content": "# Locally calculated\nsha256 76082cf981b0865c8a1b300d4641c790a6556461901bbb63700df38300277271  emlog-0.70.tar.gz\nsha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/emlog/emlog.mk",
    "content": "################################################################################\n#\n# emlog\n#\n################################################################################\n\nEMLOG_VERSION = 0.70\nEMLOG_SITE = $(call github,nicupavel,emlog,emlog-$(EMLOG_VERSION))\nEMLOG_LICENSE = GPL-2.0\nEMLOG_LICENSE_FILES = COPYING\n\n# CVE-2019-16868 and CVE-2019-17073 are misclassified (by our CVE tracker) as\n# affecting emlog, while in fact it affects http://www.emlog.net.\nEMLOG_IGNORE_CVES += CVE-2019-16868 CVE-2019-17073\n\ndefine EMLOG_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) nbcat\nendef\n\n# make install tries to strip, so install manually.\ndefine EMLOG_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/nbcat $(TARGET_DIR)/usr/bin/nbcat\nendef\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/empty/0001-respect-LDFLAGS.patch",
    "content": "downloaded from\nhttp://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/app-misc/empty/files/empty-respect-LDFLAGS.patch?view=markup\n\nReported on the Gentoo bug tracker\nhttps://bugs.gentoo.org/show_bug.cgi?id=429664\n\nand reported upstream\nhttps://sourceforge.net/tracker/?func=detail&aid=3554236&group_id=136798&atid=736886\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- empty-0.6.18b/Makefile\n+++ empty-0.6.18b/Makefile\n@@ -16,7 +16,7 @@\n PREFIX = /usr/local\n \n all:\n-\t${CC} ${CFLAGS} -Wall ${LIBS} -o empty empty.c\n+\t${CC} ${CFLAGS} ${LDFLAGS} empty.c ${LIBS} -o empty\n \n FreeBSD:\tall\n NetBSD:\t\tall\n"
  },
  {
    "path": "package/empty/Config.in",
    "content": "config BR2_PACKAGE_EMPTY\n\tbool \"empty\"\n\tdepends on BR2_USE_MMU # uses fork()\n\thelp\n\t  Run processes and applications under pseudo-terminal (PTY)\n\t  sessions.\n\n\t  http://empty.sourceforge.net/\n"
  },
  {
    "path": "package/empty/empty.hash",
    "content": "# Locally computed:\nsha256  2fccd0faa1b3deaec1add679cbde3f34250e45872ad5df463badd4bb4edeb797  empty-0.6.21b.tgz\nsha256  f01dbe3c624084900b9df1393d9062518b2bc0487acd6a3300ebd6e71352d112  COPYRIGHT\n"
  },
  {
    "path": "package/empty/empty.mk",
    "content": "################################################################################\n#\n# empty\n#\n################################################################################\n\nEMPTY_VERSION = 0.6.21b\nEMPTY_SOURCE = empty-$(EMPTY_VERSION).tgz\nEMPTY_SITE = http://downloads.sourceforge.net/project/empty/empty/empty-$(EMPTY_VERSION)\nEMPTY_LICENSE = BSD-3-Clause\nEMPTY_LICENSE_FILES = COPYRIGHT\nEMPTY_STRIP_COMPONENTS = 0\n\ndefine EMPTY_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all\nendef\n\ndefine EMPTY_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/empty $(TARGET_DIR)/usr/bin/empty\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/enchant/Config.in",
    "content": "config BR2_PACKAGE_ENCHANT\n\tbool \"enchant\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Enchant is a spell-checking library that provides a consistent\n\t  API across a number of spell-checking system backends.\n\n\t  https://abiword.github.io/enchant/\n\ncomment \"enchant needs a toolchain w/ C++, threads, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/enchant/enchant.hash",
    "content": "# locally computed\nsha256  3b0f2215578115f28e2a6aa549b35128600394304bd79d6f28b0d3b3d6f46c03  enchant-2.2.15.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\n"
  },
  {
    "path": "package/enchant/enchant.mk",
    "content": "################################################################################\n#\n# enchant\n#\n################################################################################\n\nENCHANT_VERSION = 2.2.15\nENCHANT_SITE = \\\n\thttps://github.com/AbiWord/enchant/releases/download/v$(ENCHANT_VERSION)\nENCHANT_INSTALL_STAGING = YES\nENCHANT_DEPENDENCIES = libglib2 host-pkgconf\nENCHANT_LICENSE = LGPL-2.1+\nENCHANT_LICENSE_FILES = COPYING.LIB\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/enet/Config.in",
    "content": "config BR2_PACKAGE_ENET\n\tbool \"enet\"\n\thelp\n\t  ENet's purpose is to provide a relatively thin, simple\n\t  and robust network communication layer on top of UDP\n\t  (User Datagram Protocol).The primary feature it\n\t  provides is optional reliable, in-order delivery of\n\t  packets.\n\n\t  ENet omits certain higher level networking features\n\t  such as authentication, lobbying, server discovery,\n\t  encryption, or other similar tasks that are\n\t  particularly application specific so that the library\n\t  remains flexible, portable, and easily embeddable.\n\n\t  http://enet.bespin.org\n"
  },
  {
    "path": "package/enet/enet.hash",
    "content": "# Locally computed\nsha256  a38f0f194555d558533b8b15c0c478e946310022d0ec7b34334e19e4574dcedc  enet-1.3.17.tar.gz\nsha256  77f94e3be39938801163844b8bf9a4f12badcc0da136e9886e7da14a816d74d3  LICENSE\n"
  },
  {
    "path": "package/enet/enet.mk",
    "content": "################################################################################\n#\n# enet\n#\n################################################################################\n\nENET_VERSION = 1.3.17\nENET_SITE = http://enet.bespin.org/download\nENET_LICENSE = MIT\nENET_LICENSE_FILES = LICENSE\n\nENET_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/enlightenment/Config.in",
    "content": "config BR2_PACKAGE_ENLIGHTENMENT\n\tbool \"enlightenment\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # efl svg -> librsvg\n\t# libevas-generic-loaders-svg -> librsvg -> glib2 / pango\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\t# libedbus -> dbus\n\t# libedbus -> glib2, libevas\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# libedbus -> dbus, efl libraries\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_EFL\n\tdepends on BR2_PACKAGE_HAS_UDEV # efl (eeze) -> libudev\n\tdepends on BR2_PACKAGE_XORG7\n\t# libevas-generic-loaders-svg -> librsvg -> pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tselect BR2_PACKAGE_EFL_X_XLIB\n\tselect BR2_PACKAGE_EFL_EEZE\n\tselect BR2_PACKAGE_EFL_JPEG # needed at runtime by enlightenment_start\n\tselect BR2_PACKAGE_EFL_SVG\n\tselect BR2_PACKAGE_XCB_UTIL_KEYSYMS\n\thelp\n\t  Enlightenment, also known simply as E, is a stacking window\n\t  manager for the X Window System which can be used alone or\n\t  in conjunction with a desktop environment such as GNOME or\n\t  KDE. Enlightenment can be used as a substitute for a full\n\t  desktop environment.\n\n\t  http://www.enlightenment.org/\n\ncomment \"enlightenment needs udev /dev management and a toolchain w/ wchar, C++, threads, gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_EFL && BR2_PACKAGE_XORG7 && BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \\\n\t\t!BR2_PACKAGE_HAS_UDEV\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n"
  },
  {
    "path": "package/enlightenment/enlightenment.hash",
    "content": "# From https://www.enlightenment.org/news/e24.2\nsha256  be18e2f18d6c0b058f633e769863d3cbc4c07b629058ae670dec74cd7906dff1  enlightenment-0.24.2.tar.xz\nsha256  17dda7902d3e1a743f91cf2545f474be93f612768a9e9022593d788ecc83935a  COPYING\nsha256  f4ba47ef8f4ff588202e721ab10f0208a3fa678147e7f928e6b2820f2e646e13  src/modules/wl_weekeyboard/themes/default/fonts/LICENSE.txt\n"
  },
  {
    "path": "package/enlightenment/enlightenment.mk",
    "content": "################################################################################\n#\n# enlightenment\n#\n################################################################################\n\nENLIGHTENMENT_VERSION = 0.24.2\nENLIGHTENMENT_SOURCE = enlightenment-$(ENLIGHTENMENT_VERSION).tar.xz\nENLIGHTENMENT_SITE = http://download.enlightenment.org/rel/apps/enlightenment\nENLIGHTENMENT_LICENSE = BSD-2-Clause, OFL-1.1 (font)\nENLIGHTENMENT_LICENSE_FILES = COPYING \\\n\tsrc/modules/wl_weekeyboard/themes/default/fonts/LICENSE.txt\nENLIGHTENMENT_CPE_ID_VENDOR = enlightenment\n\nENLIGHTENMENT_DEPENDENCIES = \\\n\thost-pkgconf \\\n\thost-efl \\\n\tefl \\\n\txcb-util-keysyms\n\nENLIGHTENMENT_CONF_OPTS = \\\n\t-Dedje-cc=$(HOST_DIR)/bin/edje_cc \\\n\t-Deet=$(HOST_DIR)/bin/eet \\\n\t-Deldbus-codegen=$(HOST_DIR)/bin/eldbus-codegen \\\n\t-Dpam=false \\\n\t-Dpolkit=false\n\n# enlightenment.pc and /usr/lib/enlightenment/modules/*.so\nENLIGHTENMENT_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nENLIGHTENMENT_CONF_OPTS += -Dsystemd=true\nENLIGHTENMENT_DEPENDENCIES += systemd\nelse\nENLIGHTENMENT_CONF_OPTS += -Dsystemd=false\nendif\n\n# alsa backend needs mixer support\nifeq ($(BR2_PACKAGE_ALSA_LIB)$(BR2_PACKAGE_ALSA_LIB_MIXER),yy)\nENLIGHTENMENT_CONF_OPTS += -Dmixer=true\nENLIGHTENMENT_DEPENDENCIES += alsa-lib\nelse\nENLIGHTENMENT_CONF_OPTS += -Dmixer=false\nendif\n\nifeq ($(BR2_PACKAGE_XKEYBOARD_CONFIG),y)\nENLIGHTENMENT_DEPENDENCIES += xkeyboard-config\nendif\n\ndefine ENLIGHTENMENT_REMOVE_DOCUMENTATION\n\trm -rf $(TARGET_DIR)/usr/share/enlightenment/doc/\n\trm -f $(TARGET_DIR)/usr/share/enlightenment/COPYING\n\trm -f $(TARGET_DIR)/usr/share/enlightenment/AUTHORS\nendef\nENLIGHTENMENT_POST_INSTALL_TARGET_HOOKS += ENLIGHTENMENT_REMOVE_DOCUMENTATION\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/enscript/Config.in",
    "content": "config BR2_PACKAGE_ENSCRIPT\n\tbool \"enscript\"\n\thelp\n\t  GNU Enscript is a free replacement for Adobe's enscript\n\t  program.\n\n\t  GNU Enscript converts ASCII files to PostScript, HTML, or RTF\n\t  and stores generated output to a file or sends it directly to\n\t  the printer. It includes features for `pretty-printing'\n\t  (language-sensitive code highlighting) in several programming\n\t  languages.\n\n\t  http://www.gnu.org/software/enscript\n"
  },
  {
    "path": "package/enscript/enscript.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\t6d56bada6934d055b34b6c90399aa85975e66457ac5bf513427ae7fc77f5c0bb\tenscript-1.6.6.tar.gz\n# Locally computed\nsha256\tfc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7\tCOPYING\n"
  },
  {
    "path": "package/enscript/enscript.mk",
    "content": "################################################################################\n#\n# enscript\n#\n################################################################################\n\nENSCRIPT_VERSION = 1.6.6\nENSCRIPT_SITE = $(BR2_GNU_MIRROR)/enscript\nENSCRIPT_LICENSE = GPL-3.0+\nENSCRIPT_LICENSE_FILES = COPYING\nENSCRIPT_CPE_ID_VENDOR = gnu\n\n# Enable pthread threads if toolchain supports threads\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nENSCRIPT_CONF_OPTS += --enable-threads=pth\nelse\nENSCRIPT_CONF_OPTS += --disable-threads\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/environment-setup/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_ENVIRONMENT_SETUP\n\tbool \"host environment-setup\"\n\thelp\n\t  Install an helper script to setup a build environment\n\t  based on Buildroot. It's useful when you export an sdk\n\t  and want to use Buildroot to build an external project.\n"
  },
  {
    "path": "package/environment-setup/environment-setup",
    "content": "cat <<'EOF'\n _           _ _     _                 _\n| |__  _   _(_) | __| |_ __ ___   ___ | |_\n| '_ \\| | | | | |/ _` | '__/ _ \\ / _ \\| __|\n| |_) | |_| | | | (_| | | | (_) | (_) | |_\n|_.__/ \\__,_|_|_|\\__,_|_|  \\___/ \\___/ \\__|\n\n       Making embedded Linux easy!\n\nSome tips:\n* PATH now contains the SDK utilities\n* Standard autotools variables (CC, LD, CFLAGS) are exported\n* Kernel compilation variables (ARCH, CROSS_COMPILE, KERNELDIR) are exported\n* To configure do \"./configure $CONFIGURE_FLAGS\" or use\n  the \"configure\" alias\n* To build CMake-based projects, use the \"cmake\" alias\n\nEOF\nif [ x\"$BASH_VERSION\" != x\"\" ] ; then\n\tSDK_PATH=$(dirname $(realpath \"${BASH_SOURCE[0]}\"))\nelif [ x\"$ZSH_VERSION\" != x\"\" ] ; then\n\tSDK_PATH=$(dirname $(realpath $0))\nelse\n\techo \"unsupported shell\"\nfi\n"
  },
  {
    "path": "package/environment-setup/environment-setup.mk",
    "content": "################################################################################\n#\n# environment-setup\n#\n################################################################################\n\nENVIRONMENT_SETUP_FILE = $(HOST_DIR)/environment-setup\n\ndefine HOST_ENVIRONMENT_SETUP_INSTALL_CMDS\n\tcp package/environment-setup/environment-setup $(ENVIRONMENT_SETUP_FILE)\n\tfor var in $(TARGET_CONFIGURE_OPTS); do \\\n\t\tprintf \"export \\\"$$var\\\"\\n\" >> $(ENVIRONMENT_SETUP_FILE); \\\n\tdone\n\tprintf \"export \\\"ARCH=$(KERNEL_ARCH)\\\"\\n\" >> $(ENVIRONMENT_SETUP_FILE)\n\tprintf \"export \\\"CROSS_COMPILE=$(TARGET_CROSS)\\\"\\n\" >> $(ENVIRONMENT_SETUP_FILE)\n\tprintf \"export \\\"CONFIGURE_FLAGS=--target=$(GNU_TARGET_NAME) \\\n\t\t--host=$(GNU_TARGET_NAME) \\\n\t\t--build=$(GNU_HOST_NAME) \\\n\t\t--prefix=/usr \\\n\t\t--exec-prefix=/usr \\\n\t\t--sysconfdir=/etc \\\n\t\t--localstatedir=/var \\\n\t\t--program-prefix=\\\"\\n\" >> $(ENVIRONMENT_SETUP_FILE)\n\tprintf \"alias configure=\\\"./configure \\$${CONFIGURE_FLAGS}\\\"\\n\" \\\n\t\t>> $(ENVIRONMENT_SETUP_FILE)\n\tprintf \"alias cmake=\\\"cmake \\\n\t\t-DCMAKE_TOOLCHAIN_FILE=$(HOST_DIR)/share/buildroot/toolchainfile.cmake \\\n\t\t-DCMAKE_INSTALL_PREFIX=/usr\\\"\\n\" >> $(ENVIRONMENT_SETUP_FILE)\n\t$(SED) 's%$(HOST_DIR)/bin/%%g' \\\n\t\t-e 's%$(HOST_DIR)%\\$$SDK_PATH%g' \\\n\t\t-e '/^export \"PATH=/c\\' \\\n\t\t$(ENVIRONMENT_SETUP_FILE)\n\tprintf \"export \\\"PATH=\\$$SDK_PATH/bin:\\$$SDK_PATH/sbin:\\$$PATH\\\"\\n\" \\\n\t\t>> $(ENVIRONMENT_SETUP_FILE)\n\n\t$(if $(BR2_LINUX_KERNEL),\\\n\t\tprintf \"export \\\"KERNELDIR=$(LINUX_BUILDDIR)\\\"\\n\" \\\n\t\t\t>> $(ENVIRONMENT_SETUP_FILE),)\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch",
    "content": "From 439fa2eae78a8900bda120072335be19d626498c Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sun, 28 Dec 2014 23:39:40 +0100\nSubject: [PATCH] erts/ethread: instruct libatomic_ops we do require CAS\n\nWe do require compare-and-swap (CAS), so we must instruct libatomic_ops\nto provide it, even if the architecture does not have instructions for\nit.\n\nFor example, on ARM, LDREX is required for fast CAS. But LDREX is only\navailable on ARMv6, so by default libatomic_ops will not have CAS for\nanything below, like ARMv5. But ARMv5 is always UP, so using an\nemulated CAS (that is signal-asyn-safe) is still possible (albeit much\nslower).\n\nTell libatomic_ops to provide CAS, even if the hardware is not capable\nof it, by using emulated CAS, as per libatomic_ops dosc:\n    https://github.com/ivmai/libatomic_ops/blob/master/doc/README.txt#L28\n\n    If this is included after defining AO_REQUIRE_CAS, then the package\n    will make an attempt to emulate compare-and-swap in a way that (at\n    least on Linux) should still be async-signal-safe.\n\nThanks go to Thomas for all this insight! :-)\nThanks go to Frank for reporting the issue! :-)\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nCc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nCc: Frank Hunleth <fhunleth@troodon-software.com>\n---\n erts/include/internal/libatomic_ops/ethread.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/erts/include/internal/libatomic_ops/ethread.h b/erts/include/internal/libatomic_ops/ethread.h\nindex d65ee19..71d3598 100644\n--- a/erts/include/internal/libatomic_ops/ethread.h\n+++ b/erts/include/internal/libatomic_ops/ethread.h\n@@ -35,6 +35,7 @@\n \n #define ETHR_NATIVE_IMPL__ \"libatomic_ops\"\n \n+#define AO_REQUIRE_CAS\n #include \"atomic_ops.h\"\n #include \"ethr_membar.h\"\n #include \"ethr_atomic.h\"\ndiff --git a/erts/aclocal.m4 b/erts/aclocal.m4\nindex d65ee19..71d3598 100644\n--- a/erts/aclocal.m4\n+++ b/erts/aclocal.m4\n@@ -1414,7 +1414,8 @@\n \t    \t    fi;;\n \t    esac\n \t    ethr_have_libatomic_ops=no\n-\t    AC_TRY_LINK([#include \"atomic_ops.h\"],\n+\t    AC_TRY_LINK([#define AO_REQUIRE_CAS\n+                    #include \"atomic_ops.h\"],\n \t    \t        [\n \t    \t    \t    volatile AO_t x;\n \t    \t    \t    AO_t y;\n@@ -1455,6 +1455,7 @@\n \t        AC_CHECK_SIZEOF(AO_t, ,\n \t    \t    \t        [\n \t    \t    \t    \t    #include <stdio.h>\n+\t    \t    \t    \t    #define AO_REQUIRE_CAS\n \t    \t    \t    \t    #include \"atomic_ops.h\"\n \t    \t    \t        ])\n \t        AC_DEFINE_UNQUOTED(ETHR_SIZEOF_AO_T, $ac_cv_sizeof_AO_t, [Define to the size of AO_t if libatomic_ops is used])\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch",
    "content": "From 85a3e5b4f65e5284e59dcdd90e92ea7d50ef6907 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Sun, 8 Feb 2015 17:23:13 +0100\nSubject: [PATCH] erts/emulator: reorder inclued headers paths\n\nIf the Perl Compatible Regular Expressions is installed on the\nhost and the path to the headers is added to the CFLAGS, the\npcre.h from the host is used instead of the one provided by\nerlang.\n\nErlang use an old version of this file which is incompatible\nwith the upstream one.\n\nMove INCLUDES before CFLAGS to use pcre.h from erlang.\n\nhttp://autobuild.buildroot.net/results/cbd/cbd8b54eef535f19d7d400fd269af1b3571d6143/build-end.log\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n[Bernd: rebased for erlang-21.0]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n erts/emulator/Makefile.in | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in\nindex 7145824..d079487 100644\n--- a/erts/emulator/Makefile.in\n+++ b/erts/emulator/Makefile.in\n@@ -712,7 +712,7 @@\n # Usually the same as the default rule, but certain platforms (e.g. win32) mix\n # different compilers\n $(OBJDIR)/beam_emu.o: beam/beam_emu.c\n-\t$(V_EMU_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@\n+\t$(V_EMU_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@\n \n $(OBJDIR)/beam_emu.S: beam/beam_emu.c\n \t$(V_EMU_CC) -S -fverbose-asm $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@\n@@ -765,7 +765,7 @@\n # General targets\n #\n $(OBJDIR)/%.o: beam/%.c\n-\t$(V_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@\n+\t$(V_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@\n \n $(OBJDIR)/%.o: $(TARGET)/%.c\n \t$(V_CC) $(CFLAGS) $(INCLUDES) -Idrivers/common -c $< -o $@\n"
  },
  {
    "path": "package/erlang/Config.in",
    "content": "config BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_HOSTARCH = \"x86_64\"\n\tdefault y if BR2_HOSTARCH = \"x86\"\n\nconfig BR2_PACKAGE_ERLANG_ARCH_SUPPORTS\n\tbool\n\t# see HOWTO/INSTALL.md for Erlang's supported platforms\n\t# when using its native atomic ops implementation or gcc's\n\t# __atomic_* builtins\n\tdefault y if BR2_i386 || BR2_x86_64 || BR2_powerpc || \\\n\t\tBR2_sparc_v9 || BR2_arm || BR2_aarch64 || BR2_mipsel || \\\n\t\tBR2_RISCV_64\n\t# erlang needs host-erlang\n\tdepends on BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS\n\ncomment \"erlang needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_ERLANG_ARCH_SUPPORTS\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_ERLANG\n\tbool \"erlang\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_ERLANG_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Erlang is a programming language used to build massively\n\t  scalable soft real-time systems with requirements on high\n\t  availability. Some of its uses are in telecoms, banking,\n\t  e-commerce, computer telephony and instant messaging.\n\t  Erlang's runtime system has built-in support for\n\t  concurrency, distribution and fault tolerance.\n\n\t  http://www.erlang.org\n\nif BR2_PACKAGE_ERLANG\n\nconfig BR2_PACKAGE_ERLANG_MEGACO\n\tbool \"install megaco application\"\n\thelp\n\t  The Megaco application is a framework for building\n\t  applications on top of the Megaco/H.248 protocol. It is\n\t  approximately 14MB in size so if you do not need it then\n\t  it is recommended not to enable it.\n\nendif # BR2_PACKAGE_ERLANG\n"
  },
  {
    "path": "package/erlang/erlang.hash",
    "content": "# md5 from http://www.erlang.org/download/MD5, sha256 locally computed\nmd5 d6660705f01afbe3466c0a5de21ab361  otp_src_23.3.tar.gz\nsha256 3c888d8f46124e134b75a9ba5d845f079020b7198ed2de64411e183d07e9002a  otp_src_23.3.tar.gz\nsha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0  LICENSE.txt\n"
  },
  {
    "path": "package/erlang/erlang.mk",
    "content": "################################################################################\n#\n# erlang\n#\n################################################################################\n\n# See note below when updating Erlang\nERLANG_VERSION = 23.3\nERLANG_SITE = http://www.erlang.org/download\nERLANG_SOURCE = otp_src_$(ERLANG_VERSION).tar.gz\nERLANG_DEPENDENCIES = host-erlang\n\nERLANG_LICENSE = Apache-2.0\nERLANG_LICENSE_FILES = LICENSE.txt\nERLANG_CPE_ID_VENDOR = erlang\nERLANG_CPE_ID_PRODUCT = erlang\\/otp\nERLANG_INSTALL_STAGING = YES\n\n# windows specific issue: https://nvd.nist.gov/vuln/detail/CVE-2021-29221\nERLANG_IGNORE_CVES += CVE-2021-29221\n\n# Remove the leftover deps directory from the ssl app\n# See https://bugs.erlang.org/browse/ERL-1168\ndefine ERLANG_REMOVE_SSL_DEPS\n\trm -rf $(@D)/lib/ssl/src/deps\nendef\nERLANG_POST_PATCH_HOOKS += ERLANG_REMOVE_SSL_DEPS\n\n# Patched erts/aclocal.m4\ndefine ERLANG_RUN_AUTOCONF\n\tcd $(@D) && PATH=$(BR_PATH) ./otp_build autoconf\nendef\nERLANG_DEPENDENCIES += host-autoconf\nERLANG_PRE_CONFIGURE_HOOKS += ERLANG_RUN_AUTOCONF\nHOST_ERLANG_DEPENDENCIES += host-autoconf\nHOST_ERLANG_PRE_CONFIGURE_HOOKS += ERLANG_RUN_AUTOCONF\n\n# Whenever updating Erlang, this value should be updated as well, to the\n# value of EI_VSN in the file lib/erl_interface/vsn.mk\nERLANG_EI_VSN = 4.0.2\n\n# The configure checks for these functions fail incorrectly\nERLANG_CONF_ENV = ac_cv_func_isnan=yes ac_cv_func_isinf=yes\n\n# Set erl_xcomp variables. See xcomp/erl-xcomp.conf.template\n# for documentation.\nERLANG_CONF_ENV += erl_xcomp_sysroot=$(STAGING_DIR)\n\nERLANG_CONF_OPTS = --without-javac\n\n# Force ERL_TOP to the downloaded source directory. This prevents\n# Erlang's configure script from inadvertantly using files from\n# a version of Erlang installed on the host.\nERLANG_CONF_ENV += ERL_TOP=$(@D)\nHOST_ERLANG_CONF_ENV += ERL_TOP=$(@D)\n\n# erlang uses openssl for all things crypto. Since the host tools (such as\n# rebar) uses crypto, we need to build host-erlang with support for openssl.\nHOST_ERLANG_DEPENDENCIES += host-openssl\nHOST_ERLANG_CONF_OPTS = --without-javac --with-ssl=$(HOST_DIR)\n\nHOST_ERLANG_CONF_OPTS += --without-termcap\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nERLANG_CONF_OPTS += --with-termcap\nERLANG_DEPENDENCIES += ncurses\nelse\nERLANG_CONF_OPTS += --without-termcap\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nERLANG_CONF_OPTS += --with-ssl\nERLANG_DEPENDENCIES += openssl\nelse\nERLANG_CONF_OPTS += --without-ssl\nendif\n\nifeq ($(BR2_PACKAGE_UNIXODBC),y)\nERLANG_DEPENDENCIES += unixodbc\nERLANG_CONF_OPTS += --with-odbc\nelse\nERLANG_CONF_OPTS += --without-odbc\nendif\n\n# Always use Buildroot's zlib\nERLANG_CONF_OPTS += --disable-builtin-zlib\nERLANG_DEPENDENCIES += zlib\n\n# Remove source, example, gs and wx files from staging and target.\nERLANG_REMOVE_PACKAGES = gs wx\n\nifneq ($(BR2_PACKAGE_ERLANG_MEGACO),y)\nERLANG_REMOVE_PACKAGES += megaco\nendif\n\ndefine ERLANG_REMOVE_STAGING_UNUSED\n\tfor package in $(ERLANG_REMOVE_PACKAGES); do \\\n\t\trm -rf $(STAGING_DIR)/usr/lib/erlang/lib/$${package}-*; \\\n\tdone\nendef\n\ndefine ERLANG_REMOVE_TARGET_UNUSED\n\tfind $(TARGET_DIR)/usr/lib/erlang -type d -name src -prune -exec rm -rf {} \\;\n\tfind $(TARGET_DIR)/usr/lib/erlang -type d -name examples -prune -exec rm -rf {} \\;\n\tfor package in $(ERLANG_REMOVE_PACKAGES); do \\\n\t\trm -rf $(TARGET_DIR)/usr/lib/erlang/lib/$${package}-*; \\\n\tdone\nendef\n\nERLANG_POST_INSTALL_STAGING_HOOKS += ERLANG_REMOVE_STAGING_UNUSED\nERLANG_POST_INSTALL_TARGET_HOOKS += ERLANG_REMOVE_TARGET_UNUSED\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/erlang-base64url/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_BASE64URL\n\tbool \"erlang-base64url\"\n\thelp\n\t  URL safe base64-compatible codec.\n\n\t  https://github.com/dvv/base64url\n"
  },
  {
    "path": "package/erlang-base64url/erlang-base64url.hash",
    "content": "# Locally calculated\nsha256 7ef7210effd25ac1f82f190fcfaef53e49d7bc40bb94112c4aa07266c32a851b erlang-base64url-1.0.1.tar.gz\nsha256 d59dff2fa4c39f05188ee533fbf06479eef1b47f8cad6353f8ab3726cc6923bc LICENSE.txt\n"
  },
  {
    "path": "package/erlang-base64url/erlang-base64url.mk",
    "content": "################################################################################\n#\n# erlang-base64url\n#\n################################################################################\n\nERLANG_BASE64URL_VERSION = 1.0.1\nERLANG_BASE64URL_SITE = $(call github,dvv,base64url,$(ERLANG_BASE64URL_VERSION))\nERLANG_BASE64URL_LICENSE = MIT\nERLANG_BASE64URL_LICENSE_FILES = LICENSE.txt\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-eimp/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_EIMP\n\tbool \"erlang-eimp\"\n\tselect BR2_PACKAGE_ERLANG_P1_UTILS\n\tselect BR2_PACKAGE_GD\n\tselect BR2_PACKAGE_GD_WEBPNG\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_WEBP\n\thelp\n\t  Erlang Image Manipulation Process\n\n\t  https://github.com/processone/eimp\n"
  },
  {
    "path": "package/erlang-eimp/erlang-eimp.hash",
    "content": "# Locally calculated\nsha256  1a529fa6e8264d3cad43861db417a1e841b28c0601aa847857fa0d6a81935922  erlang-eimp-1.0.17.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/erlang-eimp/erlang-eimp.mk",
    "content": "################################################################################\n#\n# erlang-eimp\n#\n################################################################################\n\nERLANG_EIMP_VERSION = 1.0.17\nERLANG_EIMP_SITE = $(call github,processone,eimp,$(ERLANG_EIMP_VERSION))\nERLANG_EIMP_LICENSE = Apache-2.0\nERLANG_EIMP_LICENSE_FILES = LICENSE.txt\nERLANG_EIMP_DEPENDENCIES = erlang-p1-utils gd jpeg libpng webp\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-goldrush/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_GOLDRUSH\n\tbool \"erlang-goldrush\"\n\thelp\n\t  Goldrush is a small Erlang app that provides fast event\n\t  stream processing.\n\n\t  https://github.com/DeadZen/goldrush\n"
  },
  {
    "path": "package/erlang-goldrush/erlang-goldrush.hash",
    "content": "# Locally calculated\nsha256 6fb8ac6345d940396ecf89d4ce6b9b809039f336d85d7a54239e85106a807612 erlang-goldrush-0.1.9.tar.gz\nsha256 335dd315c1bf12bd9bde777666c45e92652c9fe633101b12fc6f927b88433b6f LICENSE\n"
  },
  {
    "path": "package/erlang-goldrush/erlang-goldrush.mk",
    "content": "################################################################################\n#\n# erlang-goldrush\n#\n################################################################################\n\nERLANG_GOLDRUSH_VERSION = 0.1.9\nERLANG_GOLDRUSH_SITE = $(call github,DeadZen,goldrush,$(ERLANG_GOLDRUSH_VERSION))\nERLANG_GOLDRUSH_LICENSE = ISC\nERLANG_GOLDRUSH_LICENSE_FILES = LICENSE\nERLANG_GOLDRUSH_INSTALL_STAGING = YES\n\n$(eval $(rebar-package))\n$(eval $(host-rebar-package))\n"
  },
  {
    "path": "package/erlang-idna/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_IDNA\n\tbool \"erlang-idna\"\n\thelp\n\t  A pure Erlang IDNA implementation that follows RFC5891.\n\n\t  https://github.com/benoitc/erlang-idna\n"
  },
  {
    "path": "package/erlang-idna/erlang-idna.hash",
    "content": "# Locally calculated\nsha256 d57e20ee88018ff0431e0275e91ada5915782870c9981fc798bcd05589031d6f erlang-idna-6.0.0.tar.gz\nsha256 95f5c9410a95332b0833c4606028ee00008cd8c497336e230df3144d1a720bda LICENSE\n"
  },
  {
    "path": "package/erlang-idna/erlang-idna.mk",
    "content": "################################################################################\n#\n# erlang-idna\n#\n################################################################################\n\nERLANG_IDNA_VERSION = 6.0.0\nERLANG_IDNA_SITE = $(call github,benoitc,erlang-idna,$(ERLANG_IDNA_VERSION))\nERLANG_IDNA_LICENSE = MIT\nERLANG_IDNA_LICENSE_FILES = LICENSE\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-jiffy/Config.in",
    "content": "comment \"erlang-jiffy needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_ERLANG_JIFFY\n\tbool \"erlang-jiffy\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  JSON NIFs for Erlang.\n\n\t  https://github.com/davisp/jiffy\n"
  },
  {
    "path": "package/erlang-jiffy/erlang-jiffy.hash",
    "content": "# Locally computed\nsha256  7cf67840c58b8732e12c84c8a3b714774da2601ae5e6a57f286273e25b205516  erlang-jiffy-1.0.6.tar.gz\nsha256  0fa8afad2f02c08850a16e36fe55376ee19732b3a116a0207f2a73c857777a49  LICENSE\n"
  },
  {
    "path": "package/erlang-jiffy/erlang-jiffy.mk",
    "content": "################################################################################\n#\n# erlang-jiffy\n#\n################################################################################\n\nERLANG_JIFFY_VERSION = 1.0.6\nERLANG_JIFFY_SITE = $(call github,davisp,jiffy,$(ERLANG_JIFFY_VERSION))\nERLANG_JIFFY_LICENSE = MIT (core), \\\n\tBSD-3-Clause (Google double conversion library), \\\n\tBSD-3-Clause (tests)\nERLANG_JIFFY_LICENSE_FILES = LICENSE\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-jose/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_JOSE\n\tbool \"erlang-jose\"\n\tselect BR2_PACKAGE_ERLANG_BASE64URL\n\thelp\n\t  JSON Object Signing and Encryption (JOSE) for Erlang and\n\t  Elixir.\n\n\t  https://github.com/potatosalad/erlang-jose\n"
  },
  {
    "path": "package/erlang-jose/erlang-jose.hash",
    "content": "# Locally calculated\nsha256 d55a9d3a1697833fed555a21f1aeb2727af88193995cb6ffa945d4b6749d0e8d erlang-jose-1.9.0.tar.gz\nsha256 6397e2bd9a35a64c1bb798b937071fbe49d90667f717e65c74a0d0fe93d5c1be LICENSE.md\n"
  },
  {
    "path": "package/erlang-jose/erlang-jose.mk",
    "content": "################################################################################\n#\n# erlang-jose\n#\n################################################################################\n\nERLANG_JOSE_VERSION = 1.9.0\nERLANG_JOSE_SITE = $(call github,potatosalad,erlang-jose,$(ERLANG_JOSE_VERSION))\nERLANG_JOSE_LICENSE = MIT\nERLANG_JOSE_LICENSE_FILES = LICENSE.md\nERLANG_JOSE_DEPENDENCIES = erlang-base64url\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-lager/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_LAGER\n\tbool \"erlang-lager\"\n\tselect BR2_PACKAGE_ERLANG_GOLDRUSH\n\thelp\n\t  Lager (as in the beer) is a logging framework for\n\t  Erlang. Its purpose is to provide a more traditional way to\n\t  perform logging in an erlang application that plays nicely\n\t  with traditional UNIX logging tools like logrotate and\n\t  syslog.\n\n\t  https://github.com/basho/lager\n"
  },
  {
    "path": "package/erlang-lager/erlang-lager.hash",
    "content": "# Locally calculated\nsha256 c5bb4ba6f918e90d2e6671c3996d72c61f2a589b65c151b3df8011d046362981 erlang-lager-3.6.10.tar.gz\nsha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0 LICENSE\n"
  },
  {
    "path": "package/erlang-lager/erlang-lager.mk",
    "content": "################################################################################\n#\n# erlang-lager\n#\n################################################################################\n\nERLANG_LAGER_VERSION = 3.6.10\nERLANG_LAGER_SITE = $(call github,erlang-lager,lager,$(ERLANG_LAGER_VERSION))\nERLANG_LAGER_LICENSE = Apache-2.0\nERLANG_LAGER_LICENSE_FILES = LICENSE\nERLANG_LAGER_DEPENDENCIES = erlang-goldrush\nHOST_ERLANG_LAGER_DEPENDENCIES = host-erlang-goldrush\n\n$(eval $(rebar-package))\n$(eval $(host-rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-acme/0001-rebar.config.script-remove-extra-dependency-to-base6.patch",
    "content": "From a2422fdf4097d1f5f8c8f88bbe08b9a0f3c35fe6 Mon Sep 17 00:00:00 2001\nFrom: Johan Oudinet <johan.oudinet@gmail.com>\nDate: Wed, 25 Nov 2020 22:38:22 +0100\nSubject: [PATCH] rebar.config.script: remove extra dependency to base64url\n\nSigned-off-by: Johan Oudinet <johan.oudinet@gmail.com>\n---\n rebar.config.script | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/rebar.config.script b/rebar.config.script\nindex a63895e..41b2970 100644\n--- a/rebar.config.script\n+++ b/rebar.config.script\n@@ -62,7 +62,7 @@ Cfg2 = case IsRebar3 of\n                [{plugin_dir, filename:join([filename:dirname(SCRIPT),\"plugins\"])},\n                 {plugins, [override_deps_versions]}] ++\n                 ModCfg(CONFIG, [deps], fun(V) ->\n-                   V ++ [{base64url, \".*\", {git, \"git://github.com/dvv/base64url.git\", {tag, \"v1.0\"}}}]\n+                   V\n                 end, [])\n        end,\n \n-- \n2.29.2\n\n"
  },
  {
    "path": "package/erlang-p1-acme/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_ACME\n\tbool \"erlang-p1-acme\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # erlang-jiffy\n\tselect BR2_PACKAGE_ERLANG_IDNA\n\tselect BR2_PACKAGE_ERLANG_JIFFY\n\tselect BR2_PACKAGE_ERLANG_JOSE\n\tselect BR2_PACKAGE_ERLANG_P1_YCONF\n\thelp\n\t  ACME client library for Erlang.\n\n\t  https://github.com/processone/p1_acme\n\ncomment \"erlang-p1-acme needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/erlang-p1-acme/erlang-p1-acme.hash",
    "content": "# Locally calculated\nsha256  e17ba49f45b72200470bc2f176b315bec1028d07a4817859052f98c0a7259632  erlang-p1-acme-1.0.9.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/erlang-p1-acme/erlang-p1-acme.mk",
    "content": "################################################################################\n#\n# erlang-p1-acme\n#\n################################################################################\n\nERLANG_P1_ACME_VERSION = 1.0.9\nERLANG_P1_ACME_SITE = $(call github,processone,p1_acme,$(ERLANG_P1_ACME_VERSION))\nERLANG_P1_ACME_LICENSE = Apache-2.0\nERLANG_P1_ACME_LICENSE_FILES = LICENSE.txt\nERLANG_P1_ACME_DEPENDENCIES = erlang-idna erlang-jiffy erlang-jose erlang-p1-yconf\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-cache-tab/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_CACHE_TAB\n\tbool \"erlang-p1-cache-tab\"\n\tselect BR2_PACKAGE_ERLANG_P1_UTILS\n\thelp\n\t  Erlang library implementing cache tables\n\n\t  https://github.com/processone/cache_tab\n"
  },
  {
    "path": "package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash",
    "content": "# Locally calculated\nsha256  32cb3a3017f53e66bd1c2b75f60a2c4a14f00f375582a3c511ea39266b2385b9  erlang-p1-cache-tab-1.0.25.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk",
    "content": "################################################################################\n#\n# erlang-p1-cache-tab\n#\n################################################################################\n\nERLANG_P1_CACHE_TAB_VERSION = 1.0.25\nERLANG_P1_CACHE_TAB_SITE = $(call github,processone,cache_tab,$(ERLANG_P1_CACHE_TAB_VERSION))\nERLANG_P1_CACHE_TAB_LICENSE = Apache-2.0\nERLANG_P1_CACHE_TAB_LICENSE_FILES = LICENSE.txt\nERLANG_P1_CACHE_TAB_DEPENDENCIES = erlang-p1-utils\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-mqtree/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_MQTREE\n\tbool \"erlang-p1-mqtree\"\n\tselect BR2_PACKAGE_ERLANG_P1_UTILS\n\thelp\n\t  Index tree for MQTT topic filters.\n\n\t  https://github.com/processone/mqtree\n"
  },
  {
    "path": "package/erlang-p1-mqtree/erlang-p1-mqtree.hash",
    "content": "# Locally calculated\nsha256  4f86e272a97152d3f5166dad583dc1b5bda9582f6777f6294fb8328def8b2189  erlang-p1-mqtree-1.0.10.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/erlang-p1-mqtree/erlang-p1-mqtree.mk",
    "content": "################################################################################\n#\n# erlang-p1-mqtree\n#\n################################################################################\n\nERLANG_P1_MQTREE_VERSION = 1.0.10\nERLANG_P1_MQTREE_SITE = $(call github,processone,mqtree,$(ERLANG_P1_MQTREE_VERSION))\nERLANG_P1_MQTREE_LICENSE = Apache-2.0\nERLANG_P1_MQTREE_LICENSE_FILES = LICENSE\nERLANG_P1_MQTREE_DEPENDENCIES = erlang-p1-utils\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-oauth2/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_OAUTH2\n\tbool \"erlang-p1-oauth2\"\n\thelp\n\t  OAuth2 library for Erlang\n\n\t  https://github.com/processone/p1_oauth2\n"
  },
  {
    "path": "package/erlang-p1-oauth2/erlang-p1-oauth2.hash",
    "content": "# Locally calculated\nsha256  c5cf0d2a9f5874c289cc6044945f4771a79007bda812e5269dea3a4c92fc8811  erlang-p1-oauth2-0.6.7.tar.gz\nsha256  0ecddd0a5e35b7fcdab451f54c5bb688fac8365cdf6b0da0ac64b7895a0770f3  LICENSE\n"
  },
  {
    "path": "package/erlang-p1-oauth2/erlang-p1-oauth2.mk",
    "content": "################################################################################\n#\n# erlang-p1-oauth2\n#\n################################################################################\n\nERLANG_P1_OAUTH2_VERSION = 0.6.7\nERLANG_P1_OAUTH2_SITE = $(call github,processone,p1_oauth2,$(ERLANG_P1_OAUTH2_VERSION))\nERLANG_P1_OAUTH2_LICENSE = MIT\nERLANG_P1_OAUTH2_LICENSE_FILES = LICENSE\nERLANG_P1_OAUTH2_INSTALL_STAGING = YES\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-pkix/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_PKIX\n\tbool \"erlang-p1-pkix\"\n\thelp\n\t  PKIX certificates management library for Erlang.\n\n\t  https://github.com/processone/pkix\n"
  },
  {
    "path": "package/erlang-p1-pkix/erlang-p1-pkix.hash",
    "content": "# Locally calculated\nsha256  3a39c4ca74f93efa0e4de4c37f9e4d073b1aeb142ad669f12588ad2b3c39724e  erlang-p1-pkix-1.0.6.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/erlang-p1-pkix/erlang-p1-pkix.mk",
    "content": "################################################################################\n#\n# erlang-p1-pkix\n#\n################################################################################\n\nERLANG_P1_PKIX_VERSION = 1.0.6\nERLANG_P1_PKIX_SITE = $(call github,processone,pkix,$(ERLANG_P1_PKIX_VERSION))\nERLANG_P1_PKIX_LICENSE = Apache-2.0\nERLANG_P1_PKIX_LICENSE_FILES = LICENSE\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-sip/0001-correct-include.patch",
    "content": "From 5ad4f871df7cbbc973708cb7380c3410b20bde1c Mon Sep 17 00:00:00 2001\nFrom: Philipp Huebner <debalance@debian.org>\nDate: Tue, 1 Dec 2020 23:07:51 +0100\nSubject: [PATCH] correct include\n\nThis part of the code was moved into it's own project and was packaged\nseparately by me. To make the build process work, this small fix is\nnecessary.\n\nAuthor: Philipp Huebner <debalance@debian.org>\nSigned-off-by: Johan Oudinet <johan.oudinet@gmail.com>\n---\n src/esip_socket.erl | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/esip_socket.erl b/src/esip_socket.erl\nindex 4154faa..db5fa92 100644\n--- a/src/esip_socket.erl\n+++ b/src/esip_socket.erl\n@@ -37,7 +37,7 @@\n \n -include(\"esip.hrl\").\n -include(\"esip_lib.hrl\").\n--include_lib(\"stun/include/stun.hrl\").\n+-include_lib(\"p1_stun/include/stun.hrl\").\n \n -define(TCP_SEND_TIMEOUT, 15000).\n -define(CONNECT_TIMEOUT, 20000).\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/erlang-p1-sip/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_SIP\n\tbool \"erlang-p1-sip\"\n\tselect BR2_PACKAGE_ERLANG_P1_STUN\n\tselect BR2_PACKAGE_ERLANG_P1_TLS\n\tselect BR2_PACKAGE_ERLANG_P1_UTILS\n\thelp\n\t  SIP library for Erlang\n\n\t  https://github.com/processone/p1_sip\n"
  },
  {
    "path": "package/erlang-p1-sip/erlang-p1-sip.hash",
    "content": "# Locally calculated\nsha256  b46349a7077d8e5f36a216ada4a5c0b51ef3d66005606beb0ea3962069f215a7  erlang-p1-sip-1.0.38.tar.gz\nsha256  6cd4871db940d055cf272c12c10e0c08febdc94362e404390758fde34b4ce01a  LICENSE.txt\n"
  },
  {
    "path": "package/erlang-p1-sip/erlang-p1-sip.mk",
    "content": "################################################################################\n#\n# erlang-p1-sip\n#\n################################################################################\n\nERLANG_P1_SIP_VERSION = 1.0.38\nERLANG_P1_SIP_SITE = $(call github,processone,esip,$(ERLANG_P1_SIP_VERSION))\nERLANG_P1_SIP_LICENSE = Apache-2.0\nERLANG_P1_SIP_LICENSE_FILES = LICENSE.txt\nERLANG_P1_SIP_DEPENDENCIES = erlang-p1-stun erlang-p1-tls erlang-p1-utils\nERLANG_P1_SIP_INSTALL_STAGING = YES\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-stringprep/Config.in",
    "content": "comment \"erlang-p1-stringprep needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_ERLANG_P1_STRINGPREP\n\tbool \"erlang-p1-stringprep\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_ERLANG_P1_UTILS\n\thelp\n\t  Erlang interface to stringprep\n\n\t  https://github.com/processone/stringprep\n"
  },
  {
    "path": "package/erlang-p1-stringprep/erlang-p1-stringprep.hash",
    "content": "# Locally calculated\nsha256  47f9f8ee901f47b7f62c5140ea09f113efe7fedd5e8ffb92d50f51c5e11fb67f  erlang-p1-stringprep-1.0.23.tar.gz\nsha256  f44415631770cb818de6d92f3961fdfe6e407a5154f84b87cc06ac27323e919c  LICENSE.ALL\nsha256  42aef2a1337ef1f45ae2832aa5aa268c79b2560fb1f3ebab519629372cb24ffe  LICENSE.TCL\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/erlang-p1-stringprep/erlang-p1-stringprep.mk",
    "content": "################################################################################\n#\n# erlang-p1-stringprep\n#\n################################################################################\n\nERLANG_P1_STRINGPREP_VERSION = 1.0.23\nERLANG_P1_STRINGPREP_SITE = $(call github,processone,stringprep,$(ERLANG_P1_STRINGPREP_VERSION))\nERLANG_P1_STRINGPREP_LICENSE = TCL (tools/*.tcl), Apache-2.0 (rest)\nERLANG_P1_STRINGPREP_LICENSE_FILES = LICENSE.ALL LICENSE.TCL LICENSE.txt\nERLANG_P1_STRINGPREP_DEPENDENCIES = erlang-p1-utils\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-stun/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_STUN\n\tbool \"erlang-p1-stun\"\n\tselect BR2_PACKAGE_ERLANG_P1_TLS\n\tselect BR2_PACKAGE_ERLANG_P1_UTILS\n\thelp\n\t  STUN library for Erlang\n\n\t  https://github.com/processone/stun\n"
  },
  {
    "path": "package/erlang-p1-stun/erlang-p1-stun.hash",
    "content": "# Locally calculated\nsha256  05d2f31f172883d2301a93cd141e6b930dfdd01e10b6aacf806becc3674973d8  erlang-p1-stun-1.0.39.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/erlang-p1-stun/erlang-p1-stun.mk",
    "content": "################################################################################\n#\n# erlang-p1-stun\n#\n################################################################################\n\nERLANG_P1_STUN_VERSION = 1.0.39\nERLANG_P1_STUN_SITE = $(call github,processone,stun,$(ERLANG_P1_STUN_VERSION))\nERLANG_P1_STUN_LICENSE = Apache-2.0\nERLANG_P1_STUN_LICENSE_FILES = LICENSE.txt\nERLANG_P1_STUN_DEPENDENCIES = erlang-p1-tls erlang-p1-utils\nERLANG_P1_STUN_INSTALL_STAGING = YES\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-tls/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_TLS\n\tbool \"erlang-p1-tls\"\n\tselect BR2_PACKAGE_ERLANG_P1_UTILS\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Erlang interface to OpenSSL\n\n\t  https://github.com/processone/tls\n"
  },
  {
    "path": "package/erlang-p1-tls/erlang-p1-tls.hash",
    "content": "# Locally calculated\nsha256  97fd0a398751fc63b28df016e92a08ea98d083f7d5e3f32380a92de1ee86ca0e  erlang-p1-tls-1.1.9.tar.gz\nsha256  6cd4871db940d055cf272c12c10e0c08febdc94362e404390758fde34b4ce01a  LICENSE.txt\n"
  },
  {
    "path": "package/erlang-p1-tls/erlang-p1-tls.mk",
    "content": "################################################################################\n#\n# erlang-p1-tls\n#\n################################################################################\n\nERLANG_P1_TLS_VERSION = 1.1.9\nERLANG_P1_TLS_SITE = $(call github,processone,fast_tls,$(ERLANG_P1_TLS_VERSION))\nERLANG_P1_TLS_LICENSE = Apache-2.0\nERLANG_P1_TLS_LICENSE_FILES = LICENSE.txt\nERLANG_P1_TLS_INSTALL_STAGING = YES\nERLANG_P1_TLS_DEPENDENCIES = openssl erlang-p1-utils\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-utils/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_UTILS\n\tbool \"erlang-p1-utils\"\n\thelp\n\t  Set of small Erlang libraries\n\n\t  https://github.com/processone/p1_utils\n"
  },
  {
    "path": "package/erlang-p1-utils/erlang-p1-utils.hash",
    "content": "# Locally calculated\nsha256  234b88227f61ef03a6177d97ed062c62a22760b6fd189a5a24d2fd1599d95ac9  erlang-p1-utils-1.0.20.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/erlang-p1-utils/erlang-p1-utils.mk",
    "content": "################################################################################\n#\n# erlang-p1-utils\n#\n################################################################################\n\nERLANG_P1_UTILS_VERSION = 1.0.20\nERLANG_P1_UTILS_SITE = $(call github,processone,p1_utils,$(ERLANG_P1_UTILS_VERSION))\nERLANG_P1_UTILS_LICENSE = Apache-2.0\nERLANG_P1_UTILS_LICENSE_FILES = LICENSE.txt\nERLANG_P1_UTILS_INSTALL_STAGING = YES\n\n$(eval $(rebar-package))\n$(eval $(host-rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-xml/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_XML\n\tbool \"erlang-p1-xml\"\n\tselect BR2_PACKAGE_ERLANG_P1_UTILS\n\tselect BR2_PACKAGE_EXPAT\n\thelp\n\t  XML utilities for Erlang\n\n\t  https://github.com/processone/xml\n"
  },
  {
    "path": "package/erlang-p1-xml/erlang-p1-xml.hash",
    "content": "# Locally calculated\nsha256  739f37a161a570071469ab1f3d8fc232f004ea616700fe7e46b6d8afa9d03a60  erlang-p1-xml-1.1.44.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/erlang-p1-xml/erlang-p1-xml.mk",
    "content": "################################################################################\n#\n# erlang-p1-xml\n#\n################################################################################\n\nERLANG_P1_XML_VERSION = 1.1.44\nERLANG_P1_XML_SITE = $(call github,processone,fast_xml,$(ERLANG_P1_XML_VERSION))\nERLANG_P1_XML_LICENSE = Apache-2.0\nERLANG_P1_XML_LICENSE_FILES = LICENSE.txt\nERLANG_P1_XML_DEPENDENCIES = expat erlang-p1-utils\nHOST_ERLANG_P1_XML_DEPENDENCIES = host-expat host-erlang-p1-utils\nERLANG_P1_XML_INSTALL_STAGING = YES\n\nERLANG_P1_XML_USE_AUTOCONF = YES\n\n$(eval $(rebar-package))\n$(eval $(host-rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-xmpp/0001-fix-includes.patch",
    "content": "Without this patch, rebar fails to find include file fxml.hrl.\n\nSigned-off-by: Christophe Romain <cromain@process-one.net>\n\ndiff --git a/include/xmpp.hrl b/include/xmpp.hrl\nindex afa5f61..678858e 100644\n--- a/include/xmpp.hrl\n+++ b/include/xmpp.hrl\n@@ -25,7 +25,7 @@\n -include(\"ns.hrl\").\n -include(\"jid.hrl\").\n -include(\"xmpp_codec.hrl\").\n--include_lib(\"fast_xml/include/fxml.hrl\").\n+-include_lib(\"p1_xml/include/fxml.hrl\").\n\n -type stanza() :: iq() | presence() | message().\n"
  },
  {
    "path": "package/erlang-p1-xmpp/Config.in",
    "content": "comment \"erlang-p1-xmpp needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_ERLANG_P1_XMPP\n\tbool \"erlang-p1-xmpp\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # erlang-p1-stringprep\n\tselect BR2_PACKAGE_ERLANG_P1_XML\n\tselect BR2_PACKAGE_ERLANG_P1_STRINGPREP\n\tselect BR2_PACKAGE_ERLANG_P1_TLS\n\tselect BR2_PACKAGE_ERLANG_P1_UTILS\n\tselect BR2_PACKAGE_ERLANG_P1_ZLIB\n\thelp\n\t  XMPP library for Erlang.\n\n\t  https://github.com/processone/xmpp\n"
  },
  {
    "path": "package/erlang-p1-xmpp/erlang-p1-xmpp.hash",
    "content": "# Locally calculated\nsha256  65c73ffaf8faab5d6fc7d42ada0b5a380f20f3e46056ad98614d81922322d9a2  erlang-p1-xmpp-1.4.10.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/erlang-p1-xmpp/erlang-p1-xmpp.mk",
    "content": "################################################################################\n#\n# erlang-p1-xmpp\n#\n################################################################################\n\nERLANG_P1_XMPP_VERSION = 1.4.10\nERLANG_P1_XMPP_SITE = $(call github,processone,xmpp,$(ERLANG_P1_XMPP_VERSION))\nERLANG_P1_XMPP_LICENSE = Apache-2.0\nERLANG_P1_XMPP_LICENSE_FILES = LICENSE.txt\nERLANG_P1_XMPP_INSTALL_STAGING = YES\nERLANG_P1_XMPP_DEPENDENCIES = erlang-p1-xml erlang-p1-stringprep \\\n\terlang-p1-tls erlang-p1-utils erlang-p1-zlib host-erlang-p1-xml\nHOST_ERLANG_P1_XMPP_DEPENDENCIES = host-erlang-p1-xml\n\n$(eval $(rebar-package))\n$(eval $(host-rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-yaml/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_YAML\n\tbool \"erlang-p1-yaml\"\n\tselect BR2_PACKAGE_ERLANG_P1_UTILS\n\tselect BR2_PACKAGE_LIBYAML\n\thelp\n\t  Erlang wrapper for libyaml C library\n\n\t  https://github.com/processone/p1_yaml\n"
  },
  {
    "path": "package/erlang-p1-yaml/erlang-p1-yaml.hash",
    "content": "# Locally calculated\nsha256  8f53308438e4d1613562acb586b4c4540569d8305097508c40e6f261fe4216cd  erlang-p1-yaml-1.0.28.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/erlang-p1-yaml/erlang-p1-yaml.mk",
    "content": "################################################################################\n#\n# erlang-p1-yaml\n#\n################################################################################\n\nERLANG_P1_YAML_VERSION = 1.0.28\nERLANG_P1_YAML_SITE = $(call github,processone,fast_yaml,$(ERLANG_P1_YAML_VERSION))\nERLANG_P1_YAML_LICENSE = Apache-2.0\nERLANG_P1_YAML_LICENSE_FILES = LICENSE.txt\nERLANG_P1_YAML_DEPENDENCIES = libyaml erlang-p1-utils\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-yconf/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_YCONF\n\tbool \"erlang-p1-yconf\"\n\tselect BR2_PACKAGE_ERLANG_P1_YAML\n\thelp\n\t  YAML configuration processor.\n"
  },
  {
    "path": "package/erlang-p1-yconf/erlang-p1-yconf.hash",
    "content": "# Locally calculated\nsha256  ab0f7462b8d03d18be1587fa9cfb227923055f765fca4459b4bb42ccef971329  erlang-p1-yconf-1.0.8.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/erlang-p1-yconf/erlang-p1-yconf.mk",
    "content": "################################################################################\n#\n# erlang-p1-yconf\n#\n################################################################################\n\nERLANG_P1_YCONF_VERSION = 1.0.8\nERLANG_P1_YCONF_SITE = $(call github,processone,yconf,$(ERLANG_P1_YCONF_VERSION))\nERLANG_P1_YCONF_LICENSE = Apache-2.0\nERLANG_P1_YCONF_LICENSE_FILES = LICENSE\nERLANG_P1_YCONF_DEPENDENCIES = erlang-p1-yaml\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-p1-zlib/Config.in",
    "content": "config BR2_PACKAGE_ERLANG_P1_ZLIB\n\tbool \"erlang-p1-zlib\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Erlang interface to zlib\n\n\t  https://github.com/processone/zlib\n"
  },
  {
    "path": "package/erlang-p1-zlib/erlang-p1-zlib.hash",
    "content": "# Locally calculated\nsha256  f0ac60336b2ddf55ac4f58934580cb8f02dba440d68feb607be312dd35d91269  erlang-p1-zlib-1.0.9.tar.gz\nsha256  6cd4871db940d055cf272c12c10e0c08febdc94362e404390758fde34b4ce01a  LICENSE.txt\n"
  },
  {
    "path": "package/erlang-p1-zlib/erlang-p1-zlib.mk",
    "content": "################################################################################\n#\n# erlang-p1-zlib\n#\n################################################################################\n\nERLANG_P1_ZLIB_VERSION = 1.0.9\nERLANG_P1_ZLIB_SITE = $(call github,processone,ezlib,$(ERLANG_P1_ZLIB_VERSION))\nERLANG_P1_ZLIB_LICENSE = Apache-2.0\nERLANG_P1_ZLIB_LICENSE_FILES = LICENSE.txt\nERLANG_P1_ZLIB_DEPENDENCIES = zlib\n\n$(eval $(rebar-package))\n"
  },
  {
    "path": "package/erlang-rebar/erlang-rebar.hash",
    "content": "# Locally calculated\nsha256 577246bafa2eb2b2c3f1d0c157408650446884555bf87901508ce71d5cc0bd07 erlang-rebar-2.6.4.tar.gz\nsha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0 LICENSE\n"
  },
  {
    "path": "package/erlang-rebar/erlang-rebar.mk",
    "content": "################################################################################\n#\n# erlang-rebar\n#\n################################################################################\n\nERLANG_REBAR_VERSION = 2.6.4\n\n# Upstream publishes a release, but we can not use it as it is a release of\n# a generated rebar script, when we want the sources. So we have to use the\n# gihub helper in this case.\nERLANG_REBAR_SITE = $(call github,rebar,rebar,$(ERLANG_REBAR_VERSION))\n\n# Although the file LICENSE state Apache-2.0, a lot (if not all) the files\n# in src/ bear the MIT licence.\nERLANG_REBAR_LICENSE = Apache-2.0, MIT\nERLANG_REBAR_LICENSE_FILES = LICENSE\n\n# We do not have a target variant, so just define the dependencies,\n# configure and build commands for the host variant.\nHOST_ERLANG_REBAR_DEPENDENCIES = host-erlang\n\ndefine HOST_ERLANG_REBAR_BUILD_CMDS\n\tcd $(@D) && $(HOST_MAKE_ENV) $(MAKE)\nendef\n\ndefine HOST_ERLANG_REBAR_INSTALL_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/rebar $(HOST_DIR)/bin/rebar\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/erofs-utils/0001-erofs-utils-manpage-only-install-erofsfuse.1-with-th.patch",
    "content": "From 7ab34000c672adca90388a8fcb1f70a7d391d35c Mon Sep 17 00:00:00 2001\nFrom: David Michael <fedora.dm0@gmail.com>\nDate: Thu, 3 Jun 2021 16:18:57 -0400\nSubject: [PATCH] erofs-utils: manpage: only install erofsfuse.1 with the\n command\n\nLink: https://lore.kernel.org/r/87lf7q3dn2.fsf@gmail.com\nReviewed-by: Gao Xiang <xiang@kernel.org>\nSigned-off-by: David Michael <fedora.dm0@gmail.com>\nSigned-off-by: Gao Xiang <xiang@kernel.org>\n---\n man/Makefile.am | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/man/Makefile.am b/man/Makefile.am\nindex ffcf6f81c255..0df947b6fbf7 100644\n--- a/man/Makefile.am\n+++ b/man/Makefile.am\n@@ -1,5 +1,9 @@\n # SPDX-License-Identifier: GPL-2.0+\n # Makefile.am\n \n-dist_man_MANS = mkfs.erofs.1 erofsfuse.1\n+dist_man_MANS = mkfs.erofs.1\n \n+EXTRA_DIST = erofsfuse.1\n+if ENABLE_FUSE\n+man_MANS = erofsfuse.1\n+endif\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/erofs-utils/Config.in",
    "content": "config BR2_PACKAGE_EROFS_UTILS\n\tbool \"erofs-utils\"\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Userspace utilities for EROFS filesystem\n\n\t  https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git\n\nif BR2_PACKAGE_EROFS_UTILS\n\nconfig BR2_PACKAGE_EROFS_UTILS_LZ4\n\tbool \"lz4 support\"\n\tselect BR2_PACKAGE_LZ4\n\thelp\n\t  Support LZ4 compression algorithm\n\nconfig BR2_PACKAGE_EROFS_UTILS_EROFSFUSE\n\tbool \"erofsfuse support\"\n\tdepends on BR2_USE_MMU # libfuse\n\tdepends on !BR2_STATIC_LIBS # libfuse\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libfuse\n\tselect BR2_PACKAGE_LIBFUSE\n\thelp\n\t  FUSE file system client for EROFS\n\ncomment \"erofsfuse needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nendif\n"
  },
  {
    "path": "package/erofs-utils/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_EROFS_UTILS\n\tbool \"host erofs-utils\"\n\tselect BR2_PACKAGE_HOST_UTIL_LINUX\n\thelp\n\t  Userspace utilities for EROFS filesystem\n\n\t  https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git\n"
  },
  {
    "path": "package/erofs-utils/erofs-utils.hash",
    "content": "# Locally computed\nsha256  132635740039bbe76d743aea72378bfae30dbf034e123929f5d794198d4c0b12  erofs-utils-1.3.tar.gz\nsha256  feee3b3157dcdf78d4f50edefbd5dd7adf8b6d52c11bfaaa746a85a373256713  COPYING\n"
  },
  {
    "path": "package/erofs-utils/erofs-utils.mk",
    "content": "################################################################################\n#\n# erofs-utils\n#\n################################################################################\n\nEROFS_UTILS_VERSION = 1.3\nEROFS_UTILS_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/snapshot\nEROFS_UTILS_LICENSE = GPL-2.0+\nEROFS_UTILS_LICENSE_FILES = COPYING\n\n# From a git tree: no generated autotools files\nEROFS_UTILS_AUTORECONF = YES\n\nEROFS_UTILS_DEPENDENCIES = host-pkgconf util-linux\n\nifeq ($(BR2_PACKAGE_EROFS_UTILS_LZ4),y)\nEROFS_UTILS_DEPENDENCIES += lz4\nEROFS_UTILS_CONF_OPTS += --enable-lz4\nelse\nEROFS_UTILS_CONF_OPTS += --disable-lz4\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nEROFS_UTILS_CONF_OPTS += --with-selinux\nEROFS_UTILS_DEPENDENCIES += libselinux\nelse\nEROFS_UTILS_CONF_OPTS += --without-selinux\nendif\n\nifeq ($(BR2_PACKAGE_EROFS_UTILS_EROFSFUSE),y)\nEROFS_UTILS_CONF_OPTS += --enable-fuse\nEROFS_UTILS_DEPENDENCIES += libfuse\nelse\nEROFS_UTILS_CONF_OPTS += --disable-fuse\nendif\n\nHOST_EROFS_UTILS_DEPENDENCIES = host-pkgconf host-util-linux host-lz4\nHOST_EROFS_UTILS_CONF_OPTS += --enable-lz4 --disable-fuse --without-selinux\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/espeak/0001-Fix-build-of-shared-library-on-architectures-needing.patch",
    "content": "From 08a464e2b6bd31bb2bf4e258ebfa9b9d65805abf Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Fri, 27 Nov 2015 15:17:02 +0100\nSubject: [PATCH] Fix build of shared library on architectures needing -fPIC\n\nCertain architectures, like Sparc and Sparc64 require objects to be\nbuilt with -fPIC (and not just -fpic) to be usable in shared\nlibraries. On other architectures, -fPIC is the same as -fpic so this\npatch doesn't affect such architectures.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n src/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/Makefile b/src/Makefile\nindex 95fe549..c293611 100755\n--- a/src/Makefile\n+++ b/src/Makefile\n@@ -110,7 +110,7 @@ $(BIN2_NAME): $(OBJS3) $(LIB_NAME)\n \n \n x_%.o: %.cpp\n-\t$(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\\\"$(DATADIR)\\\" -Wall -fpic -fvisibility=hidden -pedantic \\\n+\t$(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\\\"$(DATADIR)\\\" -Wall -fPIC -fvisibility=hidden -pedantic \\\n \t-I. -D LIBRARY -c -fno-exceptions  $<  -o x_$*.o\n \n $(LIB_NAME): $(OBJS2)\n-- \n2.6.3\n\n"
  },
  {
    "path": "package/espeak/0002-tr_languages-cast-string_ordinal-init-values.patch",
    "content": "From 451330d09a6a3500b40bc4f5896ba790ab46cd6c Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sun, 15 Jan 2017 19:37:31 +0100\nSubject: [PATCH 2/2] tr_languages: cast string_ordinal init values\n\nOn some architecture, \"char\" is signed (x86_64, nios2...) so the\ncompiler try to convert int 0xc2 and 0xba to a signed char.\nThis is an error since gcc6 (Wnarrowing).\n\nFixes:\nhttp://autobuild.buildroot.net/results/bae/baef9888b1979d18171668a675985e3f3b45fda6\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n src/tr_languages.cpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/tr_languages.cpp b/src/tr_languages.cpp\nindex 5c80286..dbc6e36 100644\n--- a/src/tr_languages.cpp\n+++ b/src/tr_languages.cpp\n@@ -200,7 +200,7 @@ static const unsigned short chars_ignore_zwnj_hyphen[] = {\n \t0x200d,  1, // zero width joiner\n \t0, 0 };\n \n-const char string_ordinal[] = {0xc2,0xba,0};  // masculine ordinal character, UTF-8\n+const char string_ordinal[] = {(char)0xc2,(char)0xba,0};  // masculine ordinal character, UTF-8\n \n \n static Translator* NewTranslator(void)\n-- \n2.9.3\n\n"
  },
  {
    "path": "package/espeak/Config.in",
    "content": "comment \"espeak needs a toolchain w/ C++, wchar, threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\nconfig BR2_PACKAGE_ESPEAK\n\tbool \"espeak\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\t# does not properly support building only a static version\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  espeak is a speech synthesizer software for English and\n\t  other languages.\n\n\t  http://espeak.sourceforge.net/\n\nif BR2_PACKAGE_ESPEAK\n\nchoice\n\tprompt \"choose audio backend\"\n\tdefault BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_NONE\n\nconfig BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_NONE\n\tbool \"No sound backend, only produce wav files\"\n\nconfig BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_ALSA\n\tbool \"alsa via portaudio\"\n\t# Selecting portaudio generates spurious \"unmet dependencies\"\n\t# warnings. Unless you are changing the dependencies of espeak\n\t# or portaudio, just ignore those spurious warnings.\n\tselect BR2_PACKAGE_PORTAUDIO\n\tselect BR2_PACKAGE_PORTAUDIO_CXX\n\nconfig BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_PULSEAUDIO\n\tbool \"pulseaudio\"\n\tdepends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC\n\tselect BR2_PACKAGE_PULSEAUDIO\n\nendchoice\n\nendif # BR2_PACKAGE_ESPEAK\n"
  },
  {
    "path": "package/espeak/espeak.hash",
    "content": "# Locally computed:\nsha256  bf9a17673adffcc28ff7ea18764f06136547e97bbd9edf2ec612f09b207f0659  espeak-1.48.04-source.zip\nsha256  0bbca7a0ad5da4a6b0677f90d17817984edce7e42d300cae94ae93e4ccba9df7  License.txt\n"
  },
  {
    "path": "package/espeak/espeak.mk",
    "content": "################################################################################\n#\n# espeak\n#\n################################################################################\n\nESPEAK_VERSION_MAJOR = 1.48\nESPEAK_VERSION = $(ESPEAK_VERSION_MAJOR).04\nESPEAK_SOURCE = espeak-$(ESPEAK_VERSION)-source.zip\nESPEAK_SITE = http://downloads.sourceforge.net/project/espeak/espeak/espeak-$(ESPEAK_VERSION_MAJOR)\nESPEAK_LICENSE = GPL-3.0+\nESPEAK_LICENSE_FILES = License.txt\n\nifeq ($(BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_ALSA),y)\nESPEAK_AUDIO_BACKEND = portaudio\nESPEAK_DEPENDENCIES += portaudio\nendif\nifeq ($(BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_PULSEAUDIO),y)\nESPEAK_AUDIO_BACKEND = pulseaudio\nESPEAK_DEPENDENCIES += pulseaudio\nendif\n\ndefine ESPEAK_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(ESPEAK_DL_DIR)/$(ESPEAK_SOURCE)\n\tmv $(@D)/espeak-$(ESPEAK_VERSION)-source/* $(@D)\n\t$(RM) -r $(@D)/espeak-$(ESPEAK_VERSION)-source\nendef\n\ndefine ESPEAK_CONFIGURE_CMDS\n\t# Buildroot provides portaudio V19, see ReadMe file for more details.\n\tcp $(@D)/src/portaudio19.h $(@D)/src/portaudio.h\nendef\n\ndefine ESPEAK_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src $(TARGET_CONFIGURE_OPTS) \\\n\t\tAUDIO=\"$(ESPEAK_AUDIO_BACKEND)\" all\nendef\n\ndefine ESPEAK_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src DESTDIR=\"$(TARGET_DIR)\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ethtool/Config.in",
    "content": "config BR2_PACKAGE_ETHTOOL\n\tbool \"ethtool\"\n\thelp\n\t  ethtool is a small utility for examining and tuning your\n\t  ethernet-based network interface.\n\n\t  https://www.kernel.org/pub/software/network/ethtool/\n\nconfig BR2_PACKAGE_ETHTOOL_PRETTY_PRINT\n\tbool \"enable pretty printing\"\n\tdefault y\n\tdepends on BR2_PACKAGE_ETHTOOL\n\thelp\n\t  Enables ethtool's pretty printing for drivers\n\t  and SFP modules.\n"
  },
  {
    "path": "package/ethtool/ethtool.hash",
    "content": "# From https://www.kernel.org/pub/software/network/ethtool/sha256sums.asc\nsha256  f5ddfa9c75053d8011b8c8c99ec4e2d3c83cd1972f638692d62e37fa3ef36f07  ethtool-5.12.tar.xz\n# Locally calculated\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  5d632934396f90c82dfebe3c9512648bbb6333b406113d0cd331b0e0aa2d34a1  LICENSE\n"
  },
  {
    "path": "package/ethtool/ethtool.mk",
    "content": "################################################################################\n#\n# ethtool\n#\n################################################################################\n\nETHTOOL_VERSION = 5.12\nETHTOOL_SOURCE = ethtool-$(ETHTOOL_VERSION).tar.xz\nETHTOOL_SITE = $(BR2_KERNEL_MIRROR)/software/network/ethtool\nETHTOOL_LICENSE = GPL-2.0\nETHTOOL_LICENSE_FILES = LICENSE COPYING\nETHTOOL_CPE_ID_VENDOR = kernel\nETHTOOL_CONF_OPTS = \\\n\t$(if $(BR2_PACKAGE_ETHTOOL_PRETTY_PRINT),--enable-pretty-dump,--disable-pretty-dump)\n\nifeq ($(BR2_PACKAGE_LIBMNL),y)\nETHTOOL_DEPENDENCIES += host-pkgconf libmnl\nETHTOOL_CONF_OPTS += --enable-netlink\nelse\nETHTOOL_CONF_OPTS += --disable-netlink\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/eudev/0001-Only-use-pragma-for-ignoring-diagnostics-if-.patch",
    "content": "From dc8aa43b7b6d0cead7d8a0c1a151d289a5233a10 Mon Sep 17 00:00:00 2001\nFrom: Eric Le Bihan <eric.le.bihan.dev@free.fr>\nDate: Wed, 2 Apr 2014 12:36:52 +0200\nSubject: [PATCH] libudev: Only use #pragma for ignoring diagnostics if GCC\n version supports it.\n\n[Peter: update for 2.1.1, fix shared_assert issue]\nSigned-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr>\n---\n src/shared/macro.h |    8 +++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/src/shared/macro.h b/src/shared/macro.h\n--- a/src/shared/macro.h\n+++ b/src/shared/macro.h\n@@ -38,6 +38,7 @@\n #define _cleanup_(x) __attribute__((cleanup(x)))\n \n /* Temporarily disable some warnings */\n+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)\n #define DISABLE_WARNING_DECLARATION_AFTER_STATEMENT                     \\\n         _Pragma(\"GCC diagnostic push\");                                 \\\n         _Pragma(\"GCC diagnostic ignored \\\"-Wdeclaration-after-statement\\\"\")\n@@ -48,6 +49,13 @@\n \n #define REENABLE_WARNING                                                \\\n         _Pragma(\"GCC diagnostic pop\")\n+#else\n+#define DISABLE_WARNING_DECLARATION_AFTER_STATEMENT\n+#define DISABLE_WARNING_FORMAT_NONLITERAL\n+#define REENABLE_WARNING\n+/* glibc unconditionally defines this, but it needs GCC 4.6+ */\n+#undef static_assert\n+#endif\n \n #define XCONCATENATE(x, y) x ## y\n #define CONCATENATE(x, y) XCONCATENATE(x, y)\n-- \n1.7.9.5\n"
  },
  {
    "path": "package/eudev/Config.in",
    "content": "config BR2_PACKAGE_EUDEV\n\tbool \"eudev\"\n\tdepends on BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV\n\tdepends on BR2_USE_MMU # uses fork()\n\tdepends on BR2_USE_WCHAR # needs C99 compiler\n\tdepends on !BR2_STATIC_LIBS # kmod\n\tselect BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_UDEV_GENTOO_SCRIPTS if BR2_INIT_OPENRC\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBS\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_KMOD\n\thelp\n\t  eudev is a fork of systemd-udev with the goal of obtaining\n\t  better compatibility with existing software such as OpenRC and\n\t  Upstart, older kernels, various toolchains and anything else\n\t  required by users and various distributions.\n\n\t  https://wiki.gentoo.org/wiki/Project:Eudev\n\nif BR2_PACKAGE_EUDEV\n\nconfig BR2_PACKAGE_PROVIDES_UDEV\n\tdefault \"eudev\"\n\nconfig BR2_PACKAGE_EUDEV_RULES_GEN\n\tbool \"enable rules generator\"\n\thelp\n\t  Enable persistent rules generator\n\nconfig BR2_PACKAGE_EUDEV_ENABLE_HWDB\n\tbool \"enable hwdb installation\"\n\tdefault y\n\tselect BR2_PACKAGE_HOST_EUDEV # for udevadm, during target-finalize\n\thelp\n\t  Enables hardware database installation to /etc/udev/hwdb.bin\n\nendif\n\ncomment \"eudev needs eudev /dev management\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV\n\ncomment \"eudev needs a toolchain w/ wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/eudev/Config.in.host",
    "content": "# Select this if you need host eudev tools (e.g. udevadm)\nconfig BR2_PACKAGE_HOST_EUDEV\n\tbool\n"
  },
  {
    "path": "package/eudev/S10udev",
    "content": "#!/bin/sh\n#\n# udev\tThis is a minimal non-LSB version of a UDEV startup script.  It\n#\twas derived by stripping down the udev-058 LSB version for use\n#\twith buildroot on embedded hardware using Linux 2.6.34+ kernels.\n#\n#\tYou may need to customize this for your system's resource limits\n#\t(including startup time!) and administration.  For example, if\n#\tyour early userspace has a custom initramfs or initrd you might\n#\tneed /dev much earlier; or without hotpluggable busses (like USB,\n#\tPCMCIA, MMC/SD, and so on) your /dev might be static after boot.\n#\n#\tThis script assumes your system boots right into the eventual root\n#\tfilesystem, and that init runs this udev script before any programs\n#\tneeding more device nodes than the bare-bones set -- /dev/console,\n#\t/dev/zero, /dev/null -- that's needed to boot and run this script.\n#\n\n# Check for config file and read it\nUDEV_CONFIG=/etc/udev/udev.conf\ntest -r $UDEV_CONFIG || exit 6\n. $UDEV_CONFIG\n\ncase \"$1\" in\n    start)\n        printf \"Populating %s using udev: \" \"${udev_root:-/dev}\"\n        [ -e /proc/sys/kernel/hotplug ] && printf '\\000\\000\\000\\000' > /proc/sys/kernel/hotplug\n        /sbin/udevd -d || { echo \"FAIL\"; exit 1; }\n        udevadm trigger --type=subsystems --action=add\n        udevadm trigger --type=devices --action=add\n        udevadm settle --timeout=30 || echo \"udevadm settle failed\"\n        echo \"done\"\n        ;;\n    stop)\n        # Stop execution of events\n        udevadm control --stop-exec-queue\n        killall udevd\n        ;;\n    *)\n        echo \"Usage: $0 {start|stop}\"\n        exit 1\n        ;;\nesac\n\n\nexit 0\n"
  },
  {
    "path": "package/eudev/eudev.hash",
    "content": "# From http://dev.gentoo.org/~blueness/eudev/\nmd5  60b135a189523f333cea5f71a3345c8d  eudev-3.2.10.tar.gz\n# Locally calculated\nsha256  87bb028d470fd1b85169349b44c55d5b733733dc2d50ddf1196e026725ead034  eudev-3.2.10.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/eudev/eudev.mk",
    "content": "################################################################################\n#\n# eudev\n#\n################################################################################\n\nEUDEV_VERSION = 3.2.10\nEUDEV_SITE = http://dev.gentoo.org/~blueness/eudev\nEUDEV_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries)\nEUDEV_LICENSE_FILES = COPYING\nEUDEV_INSTALL_STAGING = YES\n\nEUDEV_CONF_OPTS = \\\n\t--disable-manpages \\\n\t--sbindir=/sbin \\\n\t--libexecdir=/lib \\\n\t--disable-introspection \\\n\t--enable-kmod \\\n\t--enable-blkid\n\n# eudev requires only the util-linux libraries at build time\nEUDEV_DEPENDENCIES = host-gperf host-pkgconf util-linux-libs kmod\nEUDEV_PROVIDES = udev\n\nifeq ($(BR2_ROOTFS_MERGED_USR),)\nEUDEV_CONF_OPTS += --with-rootlibdir=/lib --enable-split-usr\nendif\n\nifeq ($(BR2_PACKAGE_EUDEV_RULES_GEN),y)\nEUDEV_CONF_OPTS += --enable-rule-generator\nelse\nEUDEV_CONF_OPTS += --disable-rule-generator\nendif\n\nifeq ($(BR2_PACKAGE_EUDEV_ENABLE_HWDB),y)\nEUDEV_CONF_OPTS += --enable-hwdb\nelse\nEUDEV_CONF_OPTS += --disable-hwdb\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nEUDEV_CONF_OPTS += --enable-selinux\nEUDEV_DEPENDENCIES += libselinux\nelse\nEUDEV_CONF_OPTS += --disable-selinux\nendif\n\ndefine EUDEV_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/eudev/S10udev $(TARGET_DIR)/etc/init.d/S10udev\nendef\n\n# Avoid installing S10udev with openrc, as the service is started by a unit\n# from the udev-gentoo-scripts package.\ndefine EUDEV_INSTALL_INIT_OPENRC\n\t@:\nendef\n\nHOST_EUDEV_DEPENDENCIES = host-gperf host-pkgconf\n\nHOST_EUDEV_SYSCONFDIR = $(if $(BR2_PACKAGE_SYSTEMD),/usr/lib,/etc)\nHOST_EUDEV_CONF_OPTS = \\\n\t--prefix=/usr \\\n\t--sbindir=/sbin \\\n\t--libexecdir=/lib \\\n\t--with-rootlibdir=/lib \\\n\t--sysconfdir=$(HOST_EUDEV_SYSCONFDIR) \\\n\t--disable-blkid \\\n\t--disable-introspection \\\n\t--disable-kmod \\\n\t--disable-manpages \\\n\t--disable-rule-generator \\\n\t--disable-selinux \\\n\t--enable-hwdb\n\ndefine HOST_EUDEV_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/src/udev/udevadm \\\n\t\t$(HOST_DIR)/bin/udevadm\nendef\n\ndefine HOST_EUDEV_BUILD_HWDB\n\t$(HOST_DIR)/bin/udevadm hwdb --update --root $(TARGET_DIR)\nendef\nHOST_EUDEV_TARGET_FINALIZE_HOOKS += HOST_EUDEV_BUILD_HWDB\n\n# Note: this will run in the filesystem context, so will use a copy\n# of tharget/, not the real one, so the files are still available on\n# re-builds (foo-rebuild, etc...)\ndefine HOST_EUDEV_RM_HWDB_SRC\n\trm -rf $(TARGET_DIR)/$(HOST_EUDEV_SYSCONFDIR)/udev/hwdb.d/\nendef\nHOST_EUDEV_ROOTFS_PRE_CMD_HOOKS += HOST_EUDEV_RM_HWDB_SRC\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/ev3dev-linux-drivers/Config.in",
    "content": "# Prompt-less option, because this package is not doing anything except\n# downloading the ev3dev driver sources. The real work is done by a Linux\n# extension.\nconfig BR2_PACKAGE_EV3DEV_LINUX_DRIVERS\n\tbool\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  Linux drivers for LEGO MINDSTORMS EV3\n\n\t  This is only the download helper for the kernel patch.\n\n\t  https://github.com/ev3dev/lego-linux-drivers\n"
  },
  {
    "path": "package/ev3dev-linux-drivers/ev3dev-linux-drivers.mk",
    "content": "################################################################################\n#\n# ev3dev Linux drivers\n#\n################################################################################\n\nEV3DEV_LINUX_DRIVERS_VERSION = 0e551eb25ae8600c1f178814781bfb42dc835496\nEV3DEV_LINUX_DRIVERS_SITE = $(call github,ev3dev,lego-linux-drivers,$(EV3DEV_LINUX_DRIVERS_VERSION))\nEV3DEV_LINUX_DRIVERS_LICENSE = GPL-2.0\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ev3dev-linux-drivers/lego-linux-drivers.hash",
    "content": "# locally computed\nsha256  9d2740b348c8d43e7e15fedc4cec99bf351a3a2ba8691f2a07c439a9c034bc04  lego-linux-drivers-0e551eb25ae8600c1f178814781bfb42dc835496.tar.gz\n"
  },
  {
    "path": "package/evemu/0001-Include-limits.h-for-PATH_MAX.patch",
    "content": "From e80a13776e6d6df29fd704cd63e0744200c3df1b Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Sun, 1 Oct 2017 19:54:53 +0200\nSubject: [PATCH] Include limits.h for PATH_MAX.\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes the following compile failure when building with musl:\n\n  find_event_devices.c: In function ‘find_event_devices’:\n  find_event_devices.c:60:14: error: ‘PATH_MAX’ undeclared (first use in this function)\n     char fname[PATH_MAX];\n                ^~~~~~~~\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n tools/find_event_devices.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/tools/find_event_devices.c b/tools/find_event_devices.c\nindex 2a43d54..3a74096 100644\n--- a/tools/find_event_devices.c\n+++ b/tools/find_event_devices.c\n@@ -24,6 +24,7 @@\n \n #define _GNU_SOURCE\n #include <linux/input.h>\n+#include <limits.h>\n #include <dirent.h>\n #include <string.h>\n #include <stdio.h>\n-- \n2.14.2\n\n"
  },
  {
    "path": "package/evemu/0002-evemu-Update-struct-input_event.patch",
    "content": "From 30973c0bc053b2198cafb1899a0843688d5bb541 Mon Sep 17 00:00:00 2001\nFrom: Deepa Dinamani <deepa.kernel@gmail.com>\nDate: Mon, 15 Jan 2018 17:18:49 -0800\nSubject: [PATCH] evemu: Update struct input_event\n\nThe struct input_event is not y2038 safe.\nUpdate the struct according to the kernel patch:\nhttps://lkml.org/lkml/2018/1/6/324\n\nSigned-off-by: Deepa Dinamani <deepa.kernel@gmail.com>\nSigned-off-by: Peter Hutterer <peter.hutterer@who-t.net>\n[Retrieved from:\nhttps://gitlab.freedesktop.org/libevdev/evemu/-/commit/30973c0bc053b2198cafb1899a0843688d5bb541]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/evemu.c | 35 +++++++++++++++++++++++------------\n 1 file changed, 23 insertions(+), 12 deletions(-)\n\ndiff --git a/src/evemu.c b/src/evemu.c\nindex a8a949b..c7ff561 100644\n--- a/src/evemu.c\n+++ b/src/evemu.c\n@@ -771,7 +771,7 @@ int evemu_write_event(FILE *fp, const struct input_event *ev)\n {\n \tint rc;\n \trc = fprintf(fp, \"E: %lu.%06u %04x %04x %04d\t\",\n-\t\t     ev->time.tv_sec, (unsigned)ev->time.tv_usec,\n+\t\t     ev->input_event_sec, (unsigned)ev->input_event_usec,\n \t\t     ev->type, ev->code, ev->value);\n \trc += write_event_desc(fp, ev);\n \treturn rc;\n@@ -800,13 +800,19 @@ int evemu_record(FILE *fp, int fd, int ms)\n \t\tif (ret < 0)\n \t\t\treturn ret;\n \t\tif (ret == sizeof(ev)) {\n+\t\t\tstruct timeval tv;\n \t\t\tlong time;\n \n+\t\t\ttv.tv_sec = ev.input_event_sec;\n+\t\t\ttv.tv_usec = ev.input_event_usec;\n+\n \t\t\tif (offset == 0)\n-\t\t\t\toffset = time_to_long(&ev.time) - 1;\n+\t\t\t\toffset = time_to_long(&tv) - 1;\n \n-\t\t\ttime = time_to_long(&ev.time);\n-\t\t\tev.time = long_to_time(time - offset);\n+\t\t\ttime = time_to_long(&tv);\n+\t\t\ttv = long_to_time(time - offset);\n+\t\t\tev.input_event_sec = tv.tv_sec;\n+\t\t\tev.input_event_usec = tv.tv_usec;\n \t\t\tevemu_write_event(fp, &ev);\n \t\t\tfflush(fp);\n \t\t}\n@@ -839,8 +845,8 @@ int evemu_read_event(FILE *fp, struct input_event *ev)\n \t\treturn -1;\n \t}\n \n-\tev->time.tv_sec = sec;\n-\tev->time.tv_usec = usec;\n+\tev->input_event_sec = sec;\n+\tev->input_event_usec = usec;\n \tev->type = type;\n \tev->code = code;\n \tev->value = value;\n@@ -852,8 +858,8 @@ out:\n \n int evemu_create_event(struct input_event *ev, int type, int code, int value)\n {\n-\tev->time.tv_sec = 0;\n-\tev->time.tv_usec = 0;\n+\tev->input_event_sec = 0;\n+\tev->input_event_usec = 0;\n \tev->type = type;\n \tev->code = code;\n \tev->value = value;\n@@ -873,6 +879,7 @@ static inline unsigned long us2s(unsigned long us)\n int evemu_read_event_realtime(FILE *fp, struct input_event *ev,\n \t\t\t      struct timeval *evtime)\n {\n+\tstruct timeval tv;\n \tunsigned long usec;\n \tconst unsigned long ERROR_MARGIN = 150; /* µs */\n \tint ret;\n@@ -882,14 +889,18 @@ int evemu_read_event_realtime(FILE *fp, struct input_event *ev,\n \t\treturn ret;\n \n \tif (evtime) {\n-\t\tif (evtime->tv_sec == 0 && evtime->tv_usec == 0)\n-\t\t\t*evtime = ev->time;\n-\t\tusec = time_to_long(&ev->time) - time_to_long(evtime);\n+\t\tif (evtime->tv_sec == 0 && evtime->tv_usec == 0) {\n+\t\t\tevtime->tv_sec = ev->input_event_sec;\n+\t\t\tevtime->tv_usec = ev->input_event_usec;\n+\t\t}\n+\t\ttv.tv_sec = ev->input_event_sec;\n+\t\ttv.tv_usec = ev->input_event_usec;\n+\t\tusec = time_to_long(&tv) - time_to_long(evtime);\n \t\tif (usec > ERROR_MARGIN * 2) {\n \t\t\tif (usec > s2us(10))\n \t\t\t\terror(INFO, \"Sleeping for %lds.\\n\", us2s(usec));\n \t\t\tusleep(usec - ERROR_MARGIN);\n-\t\t\t*evtime = ev->time;\n+\t\t\t*evtime = tv;\n \t\t}\n \t}\n \n-- \n2.24.1\n\n"
  },
  {
    "path": "package/evemu/0003-src-evemu.c-fix-build-with-kernels-4.16.patch",
    "content": "From fd204f628021c9bb13870a8c983d9c63e1a53ebb Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 23 Mar 2020 11:04:11 +0100\nSubject: [PATCH] src/evemu.c: fix build with kernels >= 4.16\n\nCommit 30973c0b forgot to update all occurences of input_event, this\nwill result in the following build failure with kernel >= 4.16:\n\nevemu.c: In function 'write_event_desc':\nevemu.c:753:23: error: 'const struct input_event' has no member named 'time'; did you mean 'type'?\n    time = millis(&ev->time);\n                       ^~~~\n                       type\n\nFixes:\n - http://autobuild.buildroot.org/results/487dd5056ec0a977d55b23417d5db2664dcc91fa\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://gitlab.freedesktop.org/libevdev/evemu/-/commit/fd204f628021c9bb13870a8c983d9c63e1a53ebb]\n---\n src/evemu.c | 7 +------\n 1 file changed, 1 insertion(+), 6 deletions(-)\n\ndiff --git a/src/evemu.c b/src/evemu.c\nindex c7ff561..42dbe1d 100644\n--- a/src/evemu.c\n+++ b/src/evemu.c\n@@ -733,11 +733,6 @@ out:\n \treturn rc;\n }\n \n-static inline unsigned long millis(const struct timeval *tv)\n-{\n-\treturn tv->tv_sec * 1000 + tv->tv_usec/1000;\n-}\n-\n static int write_event_desc(FILE *fp, const struct input_event *ev)\n {\n \tint rc;\n@@ -750,7 +745,7 @@ static int write_event_desc(FILE *fp, const struct input_event *ev)\n \t\t\t\t     libevdev_event_code_get_name(ev->type, ev->code),\n \t\t\t\t     ev->value);\n \t\t} else {\n-\t\t\ttime = millis(&ev->time);\n+\t\t\ttime = ev->input_event_sec * 1000 + ev->input_event_usec/1000;\n \t\t\tdt = time - last_ms;\n \t\t\tlast_ms = time;\n \t\t\trc = fprintf(fp, \"# ------------ %s (%d) ---------- %+ldms\\n\",\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/evemu/0004-src-evemu.c-fix-build-with-kernels-4.16.patch",
    "content": "From 1babf63444b7b7f3c84e2561fbdecd5fd5a0e36f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 24 Mar 2020 09:06:29 +0100\nSubject: [PATCH] src/evemu.c: fix build with kernels < 4.16\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nCommit 30973c0b fixed the build with kernels >= 4.16 but as a side\neffect, build with kernels < 4.16 is now failing on:\n\nevemu.c:892:18: error: ‘struct input_event’ has no member named ‘input_event_usec’\n   tv.tv_usec = ev->input_event_usec;\n                  ^~\n\nFix this error by defining input_event_sec and input_event_usec if\nneeded\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://gitlab.freedesktop.org/libevdev/evemu/-/commit/1babf63444b7b7f3c84e2561fbdecd5fd5a0e36f]\n---\n src/evemu.c | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/src/evemu.c b/src/evemu.c\nindex 42dbe1d..2f457c1 100644\n--- a/src/evemu.c\n+++ b/src/evemu.c\n@@ -63,6 +63,14 @@\n \n #define SYSCALL(call) while (((call) == -1) && (errno == EINTR))\n \n+#ifndef input_event_sec\n+#define input_event_sec time.tv_sec\n+#endif\n+\n+#ifndef input_event_usec\n+#define input_event_usec time.tv_usec\n+#endif\n+\n enum error_level {\n \tINFO,\n \tWARNING,\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/evemu/Config.in",
    "content": "config BR2_PACKAGE_EVEMU\n\tbool \"evemu\"\n\tselect BR2_PACKAGE_LIBEVDEV\n\thelp\n\t  evemu records and replays device descriptions and events\n\n\t  http://www.freedesktop.org/wiki/Evemu/\n"
  },
  {
    "path": "package/evemu/evemu.hash",
    "content": "# From https://lists.freedesktop.org/archives/input-tools/2017-September/001416.html\nsha256  78c9400d55eeeb5ab75161360543f9376438c4da4934cb34cdda5b46021ae379  evemu-2.7.0.tar.xz\n# locally computed\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING\n"
  },
  {
    "path": "package/evemu/evemu.mk",
    "content": "################################################################################\n#\n# evemu\n#\n################################################################################\n\nEVEMU_VERSION = 2.7.0\nEVEMU_SITE = http://www.freedesktop.org/software/evemu\nEVEMU_SOURCE = evemu-$(EVEMU_VERSION).tar.xz\nEVEMU_LICENSE = LGPL-3.0 (library), GPL-3.0 (tools)\nEVEMU_LICENSE_FILES = COPYING\n\n# asciidoc used to generate manpages, which we don't need, and if it's\n# present on the build host, it ends getting called with our host-python\n# which doesn't have all the needed modules enabled, breaking the build\nEVEMU_CONF_ENV = ac_cv_path_ASCIIDOC=\"\"\n\n# disable tests generation because of C++ dependency\nEVEMU_CONF_OPTS += --disable-tests\n\n# Uses PKG_CHECK_MODULES() in configure.ac\nEVEMU_DEPENDENCIES = host-pkgconf libevdev\n\n# Check for target python\nifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)\nEVEMU_CONF_OPTS += --enable-python-bindings\nEVEMU_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON3),python3,python)\nelse\nEVEMU_CONF_OPTS += --disable-python-bindings\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/evtest/0001-Add-missing-limits.h-include.patch",
    "content": "From 7d7c5a81b0e2f3321d269b7acc450d1eec7a910b Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Sun, 18 Aug 2019 09:57:23 +0300\nSubject: [PATCH] Add missing limits.h include\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes build with musl libc that does not include limits.h indirectly via\nother headers.\n\nevtest.c: In function ‘scan_devices’:\nevtest.c:886:14: error: ‘PATH_MAX’ undeclared (first use in this function); did you mean  INT8_MAX’?\n   char fname[PATH_MAX];\n              ^~~~~~~~\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: sent to input-tools@lists.freedesktop.org (moderated)\n\n evtest.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/evtest.c b/evtest.c\nindex 37d4f8540333..548c203564d3 100644\n--- a/evtest.c\n+++ b/evtest.c\n@@ -56,6 +56,7 @@\n #include <getopt.h>\n #include <ctype.h>\n #include <signal.h>\n+#include <limits.h>\n #include <sys/time.h>\n #include <sys/types.h>\n #include <unistd.h>\n-- \n2.23.0.rc1\n\n"
  },
  {
    "path": "package/evtest/0002-Fix-build-on-32bit-arches-with-64bit-time_t.patch",
    "content": "From 70c5dd9e858ed577a4bbe7ec8920934c89df08fc Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Sat, 30 Nov 2019 11:58:58 -0800\nSubject: [PATCH] Fix build on 32bit arches with 64bit time_t\n\ntime element is deprecated on new input_event structure in kernel's\ninput.h [1]\n\n[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f\n\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: commit 648f5c1a9e0\n\n evtest.c | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/evtest.c b/evtest.c\nindex 548c203564d3..8d592f42bdca 100644\n--- a/evtest.c\n+++ b/evtest.c\n@@ -61,6 +61,11 @@\n #include <sys/types.h>\n #include <unistd.h>\n \n+#ifndef input_event_sec\n+#define input_event_sec time.tv_sec\n+#define input_event_usec time.tv_usec\n+#endif\n+\n #define BITS_PER_LONG (sizeof(long) * 8)\n #define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)\n #define OFF(x)  ((x)%BITS_PER_LONG)\n@@ -1140,7 +1145,7 @@ static int print_events(int fd)\n \t\t\ttype = ev[i].type;\n \t\t\tcode = ev[i].code;\n \n-\t\t\tprintf(\"Event: time %ld.%06ld, \", ev[i].time.tv_sec, ev[i].time.tv_usec);\n+\t\t\tprintf(\"Event: time %ld.%06ld, \", ev[i].input_event_sec, ev[i].input_event_usec);\n \n \t\t\tif (type == EV_SYN) {\n \t\t\t\tif (code == SYN_MT_REPORT)\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/evtest/Config.in",
    "content": "config BR2_PACKAGE_EVTEST\n\tbool \"evtest\"\n\thelp\n\t  evtest displays information on the input device specified on\n\t  the command line, including all the events supported by the\n\t  device. It then monitors the device and displays all the\n\t  events layer events generated.\n\n\t  https://gitlab.freedesktop.org/libevdev/evtest\n"
  },
  {
    "path": "package/evtest/evtest.hash",
    "content": "# locally computed\nsha256 0e7a2eeff380af796e5e9b21b6f48fd706c58c931162c151c2c1074bdfeb85c6 evtest-evtest-1.34.tar.gz\n\n# License files\nsha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING\n"
  },
  {
    "path": "package/evtest/evtest.mk",
    "content": "################################################################################\n#\n# evtest\n#\n################################################################################\n\nEVTEST_VERSION = 1.34\nEVTEST_SOURCE = evtest-evtest-$(EVTEST_VERSION).tar.gz\nEVTEST_SITE = https://gitlab.freedesktop.org/libevdev/evtest/-/archive/evtest-$(EVTEST_VERSION)\nEVTEST_LICENSE = GPL-2.0+\nEVTEST_LICENSE_FILES = COPYING\nEVTEST_DEPENDENCIES = host-pkgconf\n# needed because source package contains no generated files\nEVTEST_AUTORECONF = YES\n\n# asciidoc used to generate manpages, which we don't need, and if it's\n# present on the build host, it ends getting called with our host-python\n# which doesn't have all the needed modules enabled, breaking the build\nEVTEST_CONF_ENV = ac_cv_path_ASCIIDOC=\"\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/execline/Config.in",
    "content": "config BR2_PACKAGE_EXECLINE\n\tbool \"execline\"\n\tdepends on BR2_USE_MMU # skalibs\n\tselect BR2_PACKAGE_SKALIBS\n\thelp\n\t  execline is a (non-interactive) scripting language, like sh;\n\t  but its syntax is quite different from a traditional shell\n\t  syntax. The execlineb program is meant to be used as an\n\t  interpreter for a text file; the other commands are\n\t  essentially useful inside an execlineb script.\n\n\t  http://skarnet.org/software/execline/\n"
  },
  {
    "path": "package/execline/execline.hash",
    "content": "# Locally generated\nsha256  a373f497d2335905d750e2f3be2ba47a028c11c4a7d5595dca9965c161e53aed  execline-2.8.0.1.tar.gz\nsha256  adecb8bedfaae27fcfe65ecb3ef0e2e71aa2a2b49dc21886a200bc677d93e6ec  COPYING\n"
  },
  {
    "path": "package/execline/execline.mk",
    "content": "################################################################################\n#\n# execline\n#\n################################################################################\n\nEXECLINE_VERSION = 2.8.0.1\nEXECLINE_SITE = http://skarnet.org/software/execline\nEXECLINE_LICENSE = ISC\nEXECLINE_LICENSE_FILES = COPYING\nEXECLINE_INSTALL_STAGING = YES\nEXECLINE_DEPENDENCIES = skalibs\n\nEXECLINE_CONF_OPTS = \\\n\t--prefix=/ \\\n\t--with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \\\n\t--with-include=$(STAGING_DIR)/include \\\n\t--with-dynlib=$(STAGING_DIR)/lib \\\n\t--with-lib=$(STAGING_DIR)/lib/skalibs \\\n\t$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \\\n\t$(SHARED_STATIC_LIBS_OPTS)\n\ndefine EXECLINE_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(EXECLINE_CONF_OPTS))\nendef\n\ndefine EXECLINE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine EXECLINE_REMOVE_STATIC_LIB_DIR\n\trm -rf $(TARGET_DIR)/usr/lib/execline\nendef\n\nEXECLINE_POST_INSTALL_TARGET_HOOKS += EXECLINE_REMOVE_STATIC_LIB_DIR\n\ndefine EXECLINE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\ndefine EXECLINE_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\nHOST_EXECLINE_DEPENDENCIES = host-skalibs\n\n# Set --shebangdir to /usr/bin, as this value is used by the host variant of\n# s6-rc when generating execline scripts for the target.\nHOST_EXECLINE_CONF_OPTS = \\\n\t--prefix=$(HOST_DIR) \\\n\t--shebangdir=/usr/bin \\\n\t--with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \\\n\t--with-include=$(HOST_DIR)/include \\\n\t--with-dynlib=$(HOST_DIR)/lib \\\n\t--disable-static \\\n\t--enable-shared \\\n\t--disable-allstatic\n\ndefine HOST_EXECLINE_CONFIGURE_CMDS\n\t(cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_EXECLINE_CONF_OPTS))\nendef\n\ndefine HOST_EXECLINE_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_EXECLINE_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/exempi/Config.in",
    "content": "config BR2_PACKAGE_EXEMPI\n\tbool \"exempi\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Exempi is an implementation of XMP (Extensible Metadata\n\t  Platform). Version 2.x is based on Adobe XMP SDK.\n\n\t  http://libopenraw.freedesktop.org/wiki/Exempi\n\ncomment \"exempi needs a toolchain w/ C++, dynamic library, threads, wchar\"\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/exempi/exempi.hash",
    "content": "# Locally calculated\nsha256  52f54314aefd45945d47a6ecf4bd21f362e6467fa5d0538b0d45a06bc6eaaed5  exempi-2.5.2.tar.bz2\nsha256  3d3c3593c15e0d35bdae0df7c642106250f6be3adc61477419413900f23ae607  COPYING\n"
  },
  {
    "path": "package/exempi/exempi.mk",
    "content": "################################################################################\n#\n# exempi\n#\n################################################################################\n\nEXEMPI_VERSION = 2.5.2\nEXEMPI_SOURCE = exempi-$(EXEMPI_VERSION).tar.bz2\nEXEMPI_SITE = https://libopenraw.freedesktop.org/download\nEXEMPI_INSTALL_STAGING = YES\nEXEMPI_CONF_OPTS = --disable-unittest\nEXEMPI_DEPENDENCIES = host-pkgconf expat zlib \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv)\nEXEMPI_LICENSE = BSD-3-Clause\nEXEMPI_LICENSE_FILES = COPYING\nEXEMPI_CPE_ID_VENDOR = exempi_project\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/exfat/Config.in",
    "content": "config BR2_PACKAGE_EXFAT\n\tbool \"exFAT (FUSE)\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libfuse\n\tdepends on BR2_USE_MMU # libfuse\n\tdepends on BR2_USE_WCHAR\n\tdepends on !BR2_STATIC_LIBS # libfuse\n\tselect BR2_PACKAGE_LIBFUSE\n\thelp\n\t  A full-featured exFAT file system implementation for GNU/Linux\n\t  and other Unix-like systems as a FUSE module.\n\n\t  https://github.com/relan/exfat\n\ncomment \"exfat needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/exfat/exfat.hash",
    "content": "# Locally calculated\nsha256 07652136064da5e4d32df5555f88c138ffa4835a23b88a5bae2015f21006e0d3  fuse-exfat-1.3.0.tar.gz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/exfat/exfat.mk",
    "content": "################################################################################\n#\n# exfat\n#\n################################################################################\n\nEXFAT_VERSION = 1.3.0\nEXFAT_SITE = https://github.com/relan/exfat/releases/download/v$(EXFAT_VERSION)\nEXFAT_SOURCE = fuse-exfat-$(EXFAT_VERSION).tar.gz\nEXFAT_DEPENDENCIES = libfuse host-pkgconf\nEXFAT_LICENSE = GPL-2.0+\nEXFAT_LICENSE_FILES = COPYING\nEXFAT_CPE_ID_VENDOR = exfat_project\nEXFAT_CFLAGS = $(TARGET_CFLAGS) -std=c99\n\nEXFAT_CONF_OPTS += --exec-prefix=/\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/exfat-utils/Config.in",
    "content": "config BR2_PACKAGE_EXFAT_UTILS\n\tbool \"exfat-utils\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  exFAT filesystem utilities.\n\n\t  This is the set of user-space utilities that go together\n\t  with the FUSE-based exfat driver from package/exfat.\n\n\t  If you're using the exfat driver from the official Linux\n\t  kernel (merged as of Linux 5.7), you must use the user-space\n\t  utilities from package/exfatprogs.\n\n\t  https://github.com/relan/exfat\n\ncomment \"exfat-utils needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/exfat-utils/exfat-utils.hash",
    "content": "# Locally calculated\nsha256 dfebd07a7b907e2d603d3a9626e6440bd43ec6c4e8c07ccfc57ce9502b724835  exfat-utils-1.3.0.tar.gz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/exfat-utils/exfat-utils.mk",
    "content": "################################################################################\n#\n# exfat-utils\n#\n################################################################################\n\nEXFAT_UTILS_VERSION = 1.3.0\nEXFAT_UTILS_SITE = https://github.com/relan/exfat/releases/download/v$(EXFAT_UTILS_VERSION)\nEXFAT_UTILS_LICENSE = GPL-2.0+\nEXFAT_UTILS_LICENSE_FILES = COPYING\n\nEXFAT_UTILS_CONF_OPTS += --exec-prefix=/\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/exfatprogs/Config.in",
    "content": "config BR2_PACKAGE_EXFATPROGS\n\tbool \"exfatprogs\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  exFAT filesystem userspace utilities.\n\n\t  This is the set of tools that works together with the exfat\n\t  driver in the official Linux kernel (merged in Linux 5.7).\n\n\t  If you're using the FUSE-based exfat support (from\n\t  package/exfat), you must use the corresponding user-space\n\t  programs in package/exfat-utils.\n\n\t  https://github.com/exfatprogs/exfatprogs\n\ncomment \"exfatprogs needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/exfatprogs/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_EXFATPROGS\n\tbool \"host exfatprogs\"\n\thelp\n\t  exFAT filesystem userspace utilities\n\n\t  This is the set of tools that works together with the exfat\n\t  driver in the official Linux kernel (merged in Linux 5.7).\n\n\t  If you're using the FUSE-based exfat support (from\n\t  package/exfat), you must use the corresponding user-space\n\t  programs in package/exfat-utils.\n\n\t  https://github.com/exfatprogs/exfatprogs\n"
  },
  {
    "path": "package/exfatprogs/exfatprogs.hash",
    "content": "# From https://github.com/exfatprogs/exfatprogs/releases/download/1.1.0/exfatprogs-1.1.0.tar.xz.sha256\nsha256  69e2cf6430fc1d083c6ae0aea5eb80bf1b8e9775ed833bcd8331aef0fcacaf85  exfatprogs-1.1.0.tar.xz\n\n# Hash for license file\nsha256  576540abf5e95029ad4ad90e32071385a5e95b2c30708c706116f3eb87b9a3de  COPYING\n"
  },
  {
    "path": "package/exfatprogs/exfatprogs.mk",
    "content": "################################################################################\n#\n# exfatprogs\n#\n################################################################################\n\nEXFATPROGS_VERSION = 1.1.0\nEXFATPROGS_SOURCE = exfatprogs-$(EXFATPROGS_VERSION).tar.xz\nEXFATPROGS_SITE = https://github.com/exfatprogs/exfatprogs/releases/download/$(EXFATPROGS_VERSION)\nEXFATPROGS_LICENSE = GPL-2.0+\nEXFATPROGS_LICENSE_FILES = COPYING\nEXFATPROGS_DEPENDENCIES = host-pkgconf\nHOST_EXFATPROGS_DEPENDENCIES = host-pkgconf\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/exim/0001-Build-buildconfig-for-the-host.patch",
    "content": "buildconfig is meant to be executed on the host, so it has to be compiled\nusing $(HOSTCC), not $(CC).\n\nSigned-off-by: Luca Ceresoli <luca@lucaceresoli.net>\n---\n OS/Makefile-Base |    4 ++--\n 1 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/OS/Makefile-Base b/OS/Makefile-Base\nindex 29a6ad3..420ba60 100644\n--- a/OS/Makefile-Base\n+++ b/OS/Makefile-Base\n@@ -114,8 +114,8 @@ allexim: config.h $(EXIM_MONITOR) exicyclog exinext exiwhat \\\n \n # Targets for special-purpose configuration header builders\n buildconfig: buildconfig.c\n-\t@echo \"$(CC) buildconfig.c\"\n-\t$(FE)$(CC) $(CFLAGS) $(INCLUDE) -o buildconfig buildconfig.c $(LIBS)\n+\t@echo \"$(HOSTCC) buildconfig.c\"\n+\t$(FE)$(HOSTCC) $(HOSTCFLAGS) $(INCLUDE) -o buildconfig buildconfig.c\n \n \n # Target for the exicyclog utility script\n"
  },
  {
    "path": "package/exim/0002-Don-t-make-backup-copies-of-installed-files.patch",
    "content": "If exim had already been installed, the install script makes backup\ncopies of the pre-existing executables with a \".0\" suffix.\n\nThis leads to useless duplicated files on the target, so disable this\npiece of code.\n\nSigned-off-by: Luca Ceresoli <luca@lucaceresoli.net>\n---\n scripts/exim_install |   18 +++++++++---------\n 1 files changed, 9 insertions(+), 9 deletions(-)\n\ndiff --git a/scripts/exim_install b/scripts/exim_install\nindex 616ab3c..e68e7d5 100755\n--- a/scripts/exim_install\n+++ b/scripts/exim_install\n@@ -344,15 +344,15 @@ while [ $# -gt 0 ]; do\n \n   else\n     if ../scripts/newer ${name} ${BIN_DIRECTORY}/${name}; then\n-      if [ -f ${BIN_DIRECTORY}/${name} ]; then\n-        echo ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O\n-        ${real} ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O\n-        if [ $? -ne 0 ]; then\n-          echo $com \"\"\n-          echo $com \"*** Exim installation ${ver}failed ***\"\n-          exit 1\n-        fi\n-      fi\n+#      if [ -f ${BIN_DIRECTORY}/${name} ]; then\n+#        echo ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O\n+#        ${real} ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O\n+#        if [ $? -ne 0 ]; then\n+#          echo $com \"\"\n+#          echo $com \"*** Exim installation ${ver}failed ***\"\n+#          exit 1\n+#        fi\n+#      fi\n       echo ${CP} ${name} ${BIN_DIRECTORY}\n       ${real} ${CP} ${name} ${BIN_DIRECTORY}\n       if [ $? -ne 0 ]; then\n"
  },
  {
    "path": "package/exim/0003-Skip-version-check-and-symlink-installation.patch",
    "content": "The exim install script installs a binary named exim-<version>, plus a symlink\nto it named exim.\nIn order to achieve this \"feature\" (of dubious usefulness) it runs the\nexecutable (on the host) and then filters its output to grab the version number.\nThis clearly cannot work if the executable is cross-compiled, so get rid of all\nof it and just install an executable file called exim.\n\nInspired by:\nhttp://patch-tracker.debian.org/patch/series/view/exim4/4.76-2/35_install.dpatch\n\nSigned-off-by: Luca Ceresoli <luca@lucaceresoli.net>\n(rebased against exim 4.89)\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n scripts/exim_install |    7 +++++--\n 1 files changed, 5 insertions(+), 2 deletions(-)\n\ndiff --git a/scripts/exim_install b/scripts/exim_install\nindex e68e7d5..487a4e1 100755\n--- a/scripts/exim_install\n+++ b/scripts/exim_install\n@@ -58,6 +58,8 @@\n   shift\n done\n \n+do_symlink=no\n+\n # Get the values of BIN_DIRECTORY, CONFIGURE_FILE, INFO_DIRECTORY, NO_SYMLINK,\n # SYSTEM_ALIASES_FILE, and EXE from the global Makefile (in the build\n # directory). EXE is empty except in the Cygwin environment. In each case, keep\n@@ -217,9 +219,7 @@\n   # The exim binary is handled specially\n \n   if [ $name = exim${EXE} ]; then\n-    exim=\"./exim -bV -C /dev/null\"\n-    version=exim-`$exim 2>/dev/null | \\\n-      awk '/Exim version/ { OFS=\"\"; print $3,\"-\",substr($4,2,length($4)-1) }'`${EXE}\n+    version=exim\n \n     if [ \"${version}\" = \"exim-${EXE}\" ]; then\n       echo $com \"\"\n"
  },
  {
    "path": "package/exim/0004-Fix-uClibc-build.patch",
    "content": "From 68ea4fc7ca53bf010e5ec738ad078452f0eaa639 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Tue, 23 Jul 2019 18:48:06 +0200\nSubject: [PATCH] Fix uClibc build\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nstructs.h:757:18: error: ‘NS_MAXMSG’ undeclared here (not in a function); did you mean ‘N_MASC’?\n   uschar  answer[NS_MAXMSG];      /* the answer itself */\n\nPatch sent upstream: https://github.com/Exim/exim/pull/70\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n OS/os.h-Linux | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/OS/os.h-Linux b/OS/os.h-Linux\nindex 63cf9babd..1d82e9bad 100644\n--- a/OS/os.h-Linux\n+++ b/OS/os.h-Linux\n@@ -87,5 +87,9 @@ then change the 0 to 1 in the next block. */\n # define TCPI_OPT_SYN_DATA 32\n #endif\n \n+/* Needed for uClibc */\n+#ifndef NS_MAXMSG\n+# define NS_MAXMSG 65535\n+#endif\n \n /* End */\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/exim/0005-exim_lock-fix-lstat-related-build-errors.patch",
    "content": "From bbcf4320134efd8a01ce5a02bb9af62019ca05f6 Mon Sep 17 00:00:00 2001\nFrom: Luca Ceresoli <luca@lucaceresoli.net>\nDate: Tue, 4 Feb 2020 15:57:48 +0100\nSubject: [PATCH] exim_lock: fix lstat-related build errors\n\nexim_lock fails to cross-compile with the Sourcery CodeBench ARM 2014.05\ntoolchain due the a missing include of sys/types.h, needed for the\nconstants used by fstat() and lstat().\n\nDiscovered when cross-compiling with the Buildroot embedded Linux\nbuildsystem.\n\nFixes:\n\n  exim_lock.c:427:30: error: 'S_IFMT' undeclared (first use in this function)\n         if ((statbuf.st_mode & S_IFMT) == S_IFLNK)\n                                ^\n  exim_lock.c:427:30: note: each undeclared identifier is reported only once for each function it appears in\n  exim_lock.c:427:41: error: 'S_IFLNK' undeclared (first use in this function)\n         if ((statbuf.st_mode & S_IFMT) == S_IFLNK)\n                                           ^\n\nSigned-off-by: Luca Ceresoli <luca@lucaceresoli.net>\nUpstream-status: https://bugs.exim.org/show_bug.cgi?id=2523\n---\n src/exim_lock.c | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/src/exim_lock.c b/src/exim_lock.c\nindex 068216816054..cb140aff6436 100644\n--- a/src/exim_lock.c\n+++ b/src/exim_lock.c\n@@ -13,6 +13,8 @@ Argument: the name of the lock file\n Copyright (c) The Exim Maintainers 2016\n */\n\n+#define _XOPEN_SOURCE\n+\n #include \"os.h\"\n\n #include <stdio.h>\n@@ -26,6 +28,7 @@ Copyright (c) The Exim Maintainers 2016\n #include <unistd.h>\n #include <utime.h>\n #include <sys/utsname.h>\n+#include <sys/types.h>\n #include <sys/stat.h>\n #include <sys/file.h>\n #include <pwd.h>\n--\n2.25.0\n"
  },
  {
    "path": "package/exim/0006-sieve-fix-build-errors.patch",
    "content": "From e9d0b5b022df172d3615e9e2875506c74e6d7cd1 Mon Sep 17 00:00:00 2001\nFrom: Luca Ceresoli <luca@lucaceresoli.net>\nDate: Wed, 5 Feb 2020 17:13:57 +0100\nSubject: [PATCH] sieve: fix build errors\n\nsieve fails to cross-compile with the Sourcery CodeBench ARM 2014.05\ntoolchain with a huge number of errors, including:\n\n  .../sysroot/usr/include/arpa/nameser.h:115:2: error: unknown type name 'u_char'\n    const u_char *_msg, *_eom;\n    ^\n  .../sysroot/usr/include/arpa/nameser.h:474:1: error: unknown type name 'u_long'\n   u_long  ns_get32 (const u_char *) __THROW;\n   ^\n  .../sysroot/usr/include/arpa/nameser.h:475:31: error: expected ')' before '*' token\n   void  ns_put16 (u_int, u_char *) __THROW;\n                                 ^\n\nDiscovered when cross-compiling with the Buildroot embedded Linux\nbuildsystem.\n\nSigned-off-by: Luca Ceresoli <luca@lucaceresoli.net>\nUpstream-status: https://bugs.exim.org/show_bug.cgi?id=2523\n---\n src/sieve.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/src/sieve.c b/src/sieve.c\nindex 5e8d1e6f4776..9632f2d43810 100644\n--- a/src/sieve.c\n+++ b/src/sieve.c\n@@ -12,6 +12,8 @@\n\n /* Sieve mail filter. */\n\n+#define _BSD_SOURCE\n+\n #include <ctype.h>\n #include <errno.h>\n #include <limits.h>\n--\n2.25.0\n"
  },
  {
    "path": "package/exim/Config.in",
    "content": "comment \"exim needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_EXIM\n\tbool \"exim\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_BERKELEYDB\n\thelp\n\t  Exim is a message transfer agent (MTA) developed at the\n\t  University of Cambridge for use on Unix systems connected to\n\t  the Internet.\n\n\t  http://www.exim.org/\n\nif BR2_PACKAGE_EXIM\n\nconfig BR2_PACKAGE_EXIM_CUSTOM_CONFIG_FILE\n\tstring \"Custom configuration file\"\n\thelp\n\t  By default, when this option is left empty, Buildroot\n\t  generates a configuration file for exim with reasonable\n\t  settings.\n\n\t  If you want to override the configuration file generated by\n\t  Buildroot with a customized file, set here the path to your\n\t  configuration file with this option.\n\n\t  This file shall comply with the syntax defined in the exim\n\t  documentation (http://www.exim.org/docs.html).\n\t  Buildroot will generate a configuration file composed of the\n\t  content of the file you provide plus the toolchain-related\n\t  settings needed for cross-compilation.\n\nendif\n"
  },
  {
    "path": "package/exim/S86exim",
    "content": "#!/bin/sh\n#\n# Start/stop exim\n#\n\nPIDFILE=/var/run/exim/exim.pid\n\ncase \"$1\" in\n  start)\n\techo \"Starting exim...\"\n\tif [ ! -d /var/log/exim ]; then\n\t  mkdir -p /var/log/exim\n\t  chown exim:mail /var/log/exim\n\tfi\n\tif [ ! -d /var/run/exim ]; then\n\t  mkdir -p /var/run/exim\n\t  chown root:mail /var/run/exim\n\tfi\n\tstart-stop-daemon -S -x exim -- -bd\n\t;;\n  stop)\n\tprintf \"Stopping exim...\"\n\tstart-stop-daemon -K -o -p $PIDFILE\n\t;;\n  restart|reload)\n\t\"$0\" stop\n\t\"$0\" start\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/exim/exim.hash",
    "content": "# From https://ftp.exim.org/pub/exim/exim4/00-sha256sums.txt\nsha256  cc9cb653fff2ea947c3702680b59c99ac0bd1bbf19976d37e22a463cd804f167  exim-4.95.tar.xz\n# From https://ftp.exim.org/pub/exim/exim4/00-sha512sums.txt\nsha512  93d09c20d99f27da5edbe3e6dc7d25aa4548faa2b67ca26f2cc0b4aeaf58398dd468e0263714fcf0df97531f05d16fcd3f1f0e9d0656ead7858a66b248a44a65  exim-4.95.tar.xz\n# Locally calculated\nsha256  49240db527b7e55b312a46fc59794fde5dd006422e422257f4f057bfd27b3c8f  LICENCE\n"
  },
  {
    "path": "package/exim/exim.mk",
    "content": "################################################################################\n#\n# exim\n#\n################################################################################\n\nEXIM_VERSION = 4.95\nEXIM_SOURCE = exim-$(EXIM_VERSION).tar.xz\nEXIM_SITE = https://ftp.exim.org/pub/exim/exim4\nEXIM_LICENSE = GPL-2.0+\nEXIM_LICENSE_FILES = LICENCE\nEXIM_CPE_ID_VENDOR = exim\nEXIM_SELINUX_MODULES = exim mta\nEXIM_DEPENDENCIES = host-berkeleydb host-pcre pcre berkeleydb host-pkgconf\n\n# Modify a variable value. It must already exist in the file, either\n# commented or not.\ndefine exim-config-change # variable-name, variable-value\n\t$(SED) 's,^[#[:space:]]*$1[[:space:]]*=.*$$,$1=$2,' \\\n\t\t$(@D)/Local/Makefile\nendef\n\n# Comment-out a variable. Has no effect if it does not exits.\ndefine exim-config-unset # variable-name\n\t$(SED) 's,^\\([[:space:]]*$1[[:space:]]*=.*$$\\),# \\1,' \\\n\t\t$(@D)/Local/Makefile\nendef\n\n# Add a variable definition. It must not already exist in the file,\n# otherwise it would be defined twice with potentially different values.\ndefine exim-config-add # variable-name, variable-value\n\techo \"$1=$2\" >>$(@D)/Local/Makefile\nendef\n\ndefine EXIM_USE_CUSTOM_CONFIG_FILE\n\t$(INSTALL) -m 0644 $(BR2_PACKAGE_EXIM_CUSTOM_CONFIG_FILE) \\\n\t\t$(@D)/Local/Makefile\nendef\n\ndefine EXIM_USE_DEFAULT_CONFIG_FILE\n\t$(INSTALL) -m 0644 $(@D)/src/EDITME $(@D)/Local/Makefile\n\t$(call exim-config-change,BIN_DIRECTORY,/usr/sbin)\n\t$(call exim-config-change,CONFIGURE_FILE,/etc/exim/configure)\n\t$(call exim-config-change,LOG_FILE_PATH,/var/log/exim/exim_%slog)\n\t$(call exim-config-change,PID_FILE_PATH,/var/run/exim/exim.pid)\n\t$(call exim-config-change,EXIM_USER,ref:exim)\n\t$(call exim-config-change,EXIM_GROUP,mail)\n\t$(call exim-config-change,TRANSPORT_LMTP,yes)\n\t$(call exim-config-change,PCRE_LIBS,-lpcre)\n\t$(call exim-config-change,PCRE_CONFIG,no)\n\t$(call exim-config-change,HAVE_ICONV,no)\n\t$(call exim-config-unset,EXIM_MONITOR)\n\t$(call exim-config-change,AUTH_PLAINTEXT,yes)\n\t$(call exim-config-change,AUTH_CRAM_MD5,yes)\n\t$(call exim-config-unset,SUPPORT_DANE)\nendef\n\nifeq ($(BR2_PACKAGE_DOVECOT),y)\nEXIM_DEPENDENCIES += dovecot\ndefine EXIM_USE_DEFAULT_CONFIG_FILE_DOVECOT\n\t$(call exim-config-change,AUTH_DOVECOT,yes)\nendef\nendif\n\nifeq ($(BR2_PACKAGE_CLAMAV),y)\nEXIM_DEPENDENCIES += clamav\ndefine EXIM_USE_DEFAULT_CONFIG_FILE_CLAMAV\n\t$(call exim-config-change,WITH_CONTENT_SCAN,yes)\nendef\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nEXIM_DEPENDENCIES += host-openssl openssl\ndefine EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL\n\t$(call exim-config-change,USE_OPENSSL,yes)\n\t$(call exim-config-change,USE_OPENSSL_PC,openssl)\nendef\nelse\ndefine EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL\n\t$(call exim-config-change,DISABLE_TLS,yes)\nendef\nendif\n\n# musl does not provide struct ip_options nor struct ip_opts (but it is\n# available with both glibc and uClibc)\nifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)\ndefine EXIM_FIX_IP_OPTIONS_FOR_MUSL\n\t$(SED) 's/#define GLIBC_IP_OPTIONS/#define DARWIN_IP_OPTIONS/' \\\n\t\t$(@D)/OS/os.h-Linux\nendef\nendif\n\ndefine EXIM_CONFIGURE_TOOLCHAIN\n\t$(call exim-config-add,CC,$(TARGET_CC))\n\t$(call exim-config-add,CFLAGS,$(TARGET_CFLAGS))\n\t$(call exim-config-add,AR,$(TARGET_AR) cq)\n\t$(call exim-config-add,RANLIB,$(TARGET_RANLIB))\n\t$(call exim-config-add,HOSTCC,$(HOSTCC))\n\t$(call exim-config-add,HOSTCFLAGS,$(HOSTCFLAGS))\n\t$(EXIM_FIX_IP_OPTIONS_FOR_MUSL)\nendef\n\nifneq ($(call qstrip,$(BR2_PACKAGE_EXIM_CUSTOM_CONFIG_FILE)),)\ndefine EXIM_CONFIGURE_CMDS\n\t$(EXIM_USE_CUSTOM_CONFIG_FILE)\n\t$(EXIM_CONFIGURE_TOOLCHAIN)\nendef\nelse # CUSTOM_CONFIG\ndefine EXIM_CONFIGURE_CMDS\n\t$(EXIM_USE_DEFAULT_CONFIG_FILE)\n\t$(EXIM_USE_DEFAULT_CONFIG_FILE_DOVECOT)\n\t$(EXIM_USE_DEFAULT_CONFIG_FILE_CLAMAV)\n\t$(EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL)\n\t$(EXIM_CONFIGURE_TOOLCHAIN)\nendef\nendif # CUSTOM_CONFIG\n\n# exim needs a bit of love to build statically\nifeq ($(BR2_STATIC_LIBS),y)\nEXIM_STATIC_FLAGS = LFLAGS=\"-pthread --static\"\nendif\n\n# We need the host version of macro_predef during the build, before\n# building it we need to prepare the makefile.\ndefine EXIM_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) build=br $(MAKE) -C $(@D) makefile\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/build-br macro_predef \\\n\t\tCC=\"$(HOSTCC)\" \\\n\t\tLNCC=\"$(HOSTCC)\" \\\n\t\tCFLAGS=\"-std=c99 $(HOST_CFLAGS)\" \\\n\t\tLFLAGS=\"-fPIC $(HOST_LDFLAGS)\"\n\t$(TARGET_MAKE_ENV) build=br $(MAKE) -C $(@D) $(EXIM_STATIC_FLAGS) \\\n\t\tCFLAGS=\"-std=c99 $(TARGET_CFLAGS)\"\nendef\n\n# Need to replicate the LFLAGS in install, as exim still wants to build\n# something when installing...\ndefine EXIM_INSTALL_TARGET_CMDS\n\tDESTDIR=$(TARGET_DIR) INSTALL_ARG=\"-no_chown -no_symlink\" build=br \\\n\t  $(MAKE) -C $(@D) $(EXIM_STATIC_FLAGS) \\\n\t\tCFLAGS=\"-std=c99 $(TARGET_CFLAGS)\" \\\n\t\tinstall\n\tchmod u+s $(TARGET_DIR)/usr/sbin/exim\nendef\n\ndefine EXIM_USERS\n\texim 88 mail 8 * - - - exim\nendef\n\ndefine EXIM_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/exim/S86exim \\\n\t\t$(TARGET_DIR)/etc/init.d/S86exim\nendef\n\ndefine EXIM_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/exim/exim.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/exim.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/exim/exim.service",
    "content": "[Unit]\nDescription=Exim MTA\nAfter=syslog.target network.target\n\n[Service]\nUser=exim\nGroup=mail\nLogsDirectory=exim\nRuntimeDirectory=exim\nExecStart=/usr/sbin/exim -bdf\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/exiv2/0001-add-BUILD_WITH_STACK_PROTECTOR-option.patch",
    "content": "From 4bb57da5fb0bb0d7e747b9e325e9ec0876ffc1f9 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 31 Jul 2021 16:36:50 +0200\nSubject: [PATCH] add BUILD_WITH_STACK_PROTECTOR option\n\nAdd BUILD_WITH_STACK_PROTECTOR to avoid the following build failure with\ntoolchains that don't support stack-protector:\n\n/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mipsel-buildroot-linux-uclibc/9.3.0/../../../../mipsel-buildroot-linux-uclibc/bin/ld: utils.cpp:(.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag]+0xd0): undefined reference to `__stack_chk_fail'\n\nIndeed, support for -fstack-protector-strong can't be detected through\ncheck_cxx_compiler_flag as some toolchains need to link with -lssp to\nenable SSP support\n\nFixes:\n - http://autobuild.buildroot.org/results/ae4635899124c602c70d2b342a76f95c34aa4a3d\n\nUpstream: https://github.com/Exiv2/exiv2/commit/f31c0eba098889899d29b7b0da830aee2b62a7b8\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n CMakeLists.txt            | 1 +\n cmake/compilerFlags.cmake | 4 ++--\n 2 files changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 6f0da06a..0746ee14 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -47,6 +47,7 @@ mark_as_advanced(\n     EXIV2_TEAM_USE_SANITIZERS\n )\n \n+option( BUILD_WITH_STACK_PROTECTOR    \"Build with stack protector\"                            ON )\n option( BUILD_WITH_CCACHE             \"Use ccache to speed up compilations\"                   OFF )\n option( BUILD_WITH_COVERAGE           \"Add compiler flags to generate coverage stats\"         OFF )\n \ndiff --git a/cmake/compilerFlags.cmake b/cmake/compilerFlags.cmake\nindex 35faf501..0a646e50 100644\n--- a/cmake/compilerFlags.cmake\n+++ b/cmake/compilerFlags.cmake\n@@ -33,8 +33,8 @@ if ( MINGW OR UNIX OR MSYS ) # MINGW, Linux, APPLE, CYGWIN\n             endif()\r\n             if(HAS_FCF_PROTECTION)\r\n                 add_compile_options(-fcf-protection)\r\n-            endif()\r\n-            if(HAS_FSTACK_PROTECTOR_STRONG)\r\n+              endif()\r\n+\t    if(BUILD_WITH_STACK_PROTECTOR AND HAS_FSTACK_PROTECTOR_STRONG)\r\n                 add_compile_options(-fstack-protector-strong)\r\n             endif()\r\n         endif()\r\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/exiv2/Config.in",
    "content": "comment \"exiv2 needs a uClibc or glibc toolchain w/ C++, wchar, dynamic library, threads\"\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| BR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_EXIV2\n\tbool \"exiv2\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Exiv2 is a C++ library and a command line utility to manage\n\t  image metadata. It provides fast and easy read and write\n\t  access to the Exif, IPTC and XMP metadata of images in\n\t  various formats.\n\n\t  http://www.exiv2.org/\n\nif BR2_PACKAGE_EXIV2\n\nconfig BR2_PACKAGE_EXIV2_PNG\n\tbool \"PNG image support\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Build with PNG image support\n\nconfig BR2_PACKAGE_EXIV2_XMP\n\tbool \"XMP support\"\n\tselect BR2_PACKAGE_EXPAT\n\thelp\n\t  Build with XMP support\n\nconfig BR2_PACKAGE_EXIV2_LENSDATA\n\tbool \"Nikon lens name database\"\n\thelp\n\t  Integrate Nikon lens name database.\n\n\t  This database comes from a thirdparty and is free to use in\n\t  non-commercial, GPL or open source software only.\n\t  For more informations src/nikonmn_int.cpp.\n\nendif\n"
  },
  {
    "path": "package/exiv2/exiv2.hash",
    "content": "# Locally calculated\nsha256  35a58618ab236a901ca4928b0ad8b31007ebdc0386d904409d825024e45ea6e2  exiv2-0.27.5-Source.tar.gz\nsha256  a7ba75cb966aca374711e2af49e5f3aea6a4443a803440f5d93e73a5a1222f66  COPYING\n"
  },
  {
    "path": "package/exiv2/exiv2.mk",
    "content": "################################################################################\n#\n# exiv2\n#\n################################################################################\n\nEXIV2_VERSION = 0.27.5\nEXIV2_SOURCE = exiv2-$(EXIV2_VERSION)-Source.tar.gz\nEXIV2_SITE = https://exiv2.org/builds\nEXIV2_INSTALL_STAGING = YES\nEXIV2_LICENSE = GPL-2.0+\nEXIV2_LICENSE_FILES = COPYING\nEXIV2_CPE_ID_VENDOR = exiv2\n\nEXIV2_CONF_OPTS += \\\n\t-DBUILD_WITH_STACK_PROTECTOR=OFF \\\n\t-DEXIV2_BUILD_SAMPLES=OFF\n\nifeq ($(BR2_PACKAGE_EXIV2_LENSDATA),y)\nEXIV2_CONF_OPTS += -DEXIV2_ENABLE_LENSDATA=ON\nelse\nEXIV2_CONF_OPTS += -DEXIV2_ENABLE_LENSDATA=OFF\nendif\n\nifeq ($(BR2_PACKAGE_EXIV2_PNG),y)\nEXIV2_CONF_OPTS += -DEXIV2_ENABLE_PNG=ON\nEXIV2_DEPENDENCIES += zlib\nelse\nEXIV2_CONF_OPTS += -DEXIV2_ENABLE_PNG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_EXIV2_XMP),y)\nEXIV2_CONF_OPTS += -DEXIV2_ENABLE_XMP=ON\nEXIV2_DEPENDENCIES += expat\nelse\nEXIV2_CONF_OPTS += -DEXIV2_ENABLE_XMP=OFF\nendif\n\nEXIV2_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES)\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nEXIV2_CONF_OPTS += -DEXIV2_ENABLE_NLS=ON\nelse\nEXIV2_CONF_OPTS += -DEXIV2_ENABLE_NLS=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/expat/Config.in",
    "content": "config BR2_PACKAGE_EXPAT\n\tbool \"expat\"\n\thelp\n\t  The Expat XML Parser.\n\n\t  http://expat.sourceforge.net\n"
  },
  {
    "path": "package/expat/expat.hash",
    "content": "# From https://sourceforge.net/projects/expat/files/expat/2.4.1/\nmd5  a4fb91a9441bcaec576d4c4a56fa3aa6  expat-2.4.1.tar.xz\nsha1  7988e4df355162500f09837aa95cbb48e6754420  expat-2.4.1.tar.xz\n\n# Locally calculated\nsha256  cf032d0dba9b928636548e32b327a2d66b1aab63c4f4a13dd132c2d1d2f2fb6a  expat-2.4.1.tar.xz\nsha256  8c6b5b6de8fae20b317f4992729abc0e520bfba4c7606cd1e9eeb87418eebdec  COPYING\n"
  },
  {
    "path": "package/expat/expat.mk",
    "content": "################################################################################\n#\n# expat\n#\n################################################################################\n\nEXPAT_VERSION = 2.4.1\nEXPAT_SITE = http://downloads.sourceforge.net/project/expat/expat/$(EXPAT_VERSION)\nEXPAT_SOURCE = expat-$(EXPAT_VERSION).tar.xz\nEXPAT_INSTALL_STAGING = YES\nEXPAT_DEPENDENCIES = host-pkgconf\nHOST_EXPAT_DEPENDENCIES = host-pkgconf\nEXPAT_LICENSE = MIT\nEXPAT_LICENSE_FILES = COPYING\nEXPAT_CPE_ID_VENDOR = libexpat_project\nEXPAT_CPE_ID_PRODUCT = libexpat\n\nEXPAT_CONF_OPTS = --without-docbook\nHOST_EXPAT_CONF_OPTS = --without-docbook\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/expect/0001-enable-cross-compilation.patch",
    "content": "From: Andrew Ruder <andrew.ruder@elecsyscorp.com>\nSubject: [PATCH] enable cross compilation for expect\n\nThis patch was created by running ./configure on a modern Linux machine\nand inserting the results into the cross compilation section of\neach AC_MSG_CHECKING that bombed out with an error.\n\nSigned-off-by: Andrew Ruder <andrew.ruder@elecsyscorp.com>\n---\n\nIndex: expect-5.45/configure.in\n===================================================================\n--- expect-5.45.orig/configure.in\t2013-11-14 07:59:58.732100595 -0600\n+++ expect-5.45/configure.in\t2013-11-14 07:59:58.732100595 -0600\n@@ -481,7 +481,7 @@\n ,\n \tAC_MSG_RESULT(no)\n ,\n-\tAC_MSG_ERROR([Expect can't be cross compiled])\n+\tAC_MSG_RESULT(no)\n )\n \n AC_MSG_CHECKING([if any value exists for WNOHANG])\n@@ -506,7 +506,8 @@\n \tAC_MSG_RESULT(no)\n \tAC_DEFINE(WNOHANG_BACKUP_VALUE, 1)\n ,\n-\tAC_MSG_ERROR([Expect can't be cross compiled])\n+\tAC_MSG_RESULT(yes)\n+\tAC_DEFINE(WNOHANG_BACKUP_VALUE, 1)\n )\n \n #\n@@ -574,7 +575,7 @@\n \tAC_DEFINE(REARM_SIG)\n ,\n \tAC_MSG_RESULT(no)\n-, AC_MSG_WARN([Expect can't be cross compiled])\n+, AC_MSG_RESULT(no)\n )\n \n # HPUX7 has trouble with the big cat so split it\n@@ -725,7 +726,7 @@\n ,\n         AC_MSG_RESULT(no)\n ,\n-\tAC_MSG_ERROR([Expect can't be cross compiled])\n+\tAC_MSG_RESULT(no)\n )\n \n # mach systems have include files for unimplemented features\n@@ -749,7 +750,9 @@\n ,\n         AC_MSG_RESULT(no)\n ,\n-\tAC_MSG_ERROR([Expect can't be cross compiled])\n+    AC_DEFINE(HAVE_TERMIO)\n+    PTY_TYPE=termios\n+\tAC_MSG_RESULT(yes)\n )\n \n   # now check for the new style ttys (not yet posix)\n@@ -771,7 +774,9 @@\n   ,\n         AC_MSG_RESULT(no)\n   ,\n-\tAC_MSG_ERROR([Expect can't be cross compiled])\n+        AC_DEFINE(HAVE_TERMIOS)\n+        PTY_TYPE=termios\n+        AC_MSG_RESULT(yes)\n   )\n fi\n \n@@ -794,7 +799,7 @@\n ,\n \tAC_MSG_RESULT(no)\n ,\n-\tAC_MSG_ERROR([Expect can't be cross compiled])\n+\tAC_MSG_RESULT(no)\n )\n \n AC_MSG_CHECKING([if TIOCGWINSZ in termios.h])\n@@ -816,7 +821,7 @@\n ,\n \tAC_MSG_RESULT(no)\n ,\n-\tAC_MSG_ERROR([Expect can't be cross compiled])\n+\tAC_MSG_RESULT(no)\n )\n \n # finally check for Cray style ttys\n@@ -837,7 +842,7 @@\n ,\n \tAC_MSG_RESULT(no)\n ,\n-\tAC_MSG_ERROR([Expect can't be cross compiled])\n+\tAC_MSG_RESULT(no)\n )\n \n #\n@@ -869,7 +874,9 @@\n AC_HAVE_FUNCS(getpty)\n \n # following test sets SETPGRP_VOID if setpgrp takes 0 args, else takes 2\n-AC_FUNC_SETPGRP\n+cat >>expect_cf.h <<\\_ACEOF\n+#define SETPGRP_VOID 1\n+_ACEOF\n \n #\n # check for timezones\n@@ -889,7 +896,7 @@\n \tAC_MSG_RESULT(yes),\n \tAC_MSG_RESULT(no)\n ,\n-\tAC_MSG_ERROR([Expect can't be cross compiled])\n+\tAC_MSG_RESULT(yes)\n )\n \n \n"
  },
  {
    "path": "package/expect/0002-allow-tcl-build-directory.patch",
    "content": "From: Andrew Ruder <andrew.ruder@elecsyscorp.com>\nSubject: [PATCH] Allow tcl build directory for linking\n\nSome small changes to use TCL_BUILD_LIB_SPEC instead of TCL_LIB_SPEC for\nlinking against tcl directly out of its build directory.\n\nSigned-off-by: Andrew Ruder <andrew.ruder@elecsyscorp.com>\n---\n\nIndex: expect-5.45/Makefile.in\n===================================================================\n--- expect-5.45.orig/Makefile.in\t2013-11-14 07:59:58.732100595 -0600\n+++ expect-5.45/Makefile.in\t2013-11-14 07:59:58.732100595 -0600\n@@ -393,7 +393,7 @@\n \t\t@LDFLAGS_DEFAULT@ \\\n \t\t-o expect exp_main_exp.o \\\n \t\t@EXP_BUILD_LIB_SPEC@ \\\n-\t\t@TCL_LIB_SPEC@ \\\n+\t\t@TCL_BUILD_LIB_SPEC@ \\\n \t\t@TCL_DL_LIBS@ @PKG_LIBS@ @MATH_LIBS@ \\\n \t\t@TCL_CC_SEARCH_FLAGS@ \\\n \t\t@EXP_CC_SEARCH_FLAGS@\nIndex: expect-5.45/tclconfig/tcl.m4\n===================================================================\n--- expect-5.45.orig/tclconfig/tcl.m4\t2010-11-09 13:42:10.000000000 -0600\n+++ expect-5.45/tclconfig/tcl.m4\t2013-11-14 08:02:08.424100580 -0600\n@@ -412,6 +412,7 @@\n     AC_SUBST(TCL_LIB_FILE)\n     AC_SUBST(TCL_LIB_FLAG)\n     AC_SUBST(TCL_LIB_SPEC)\n+    AC_SUBST(TCL_BUILD_LIB_SPEC)\n \n     AC_SUBST(TCL_STUB_LIB_FILE)\n     AC_SUBST(TCL_STUB_LIB_FLAG)\n"
  },
  {
    "path": "package/expect/Config.in",
    "content": "config BR2_PACKAGE_EXPECT\n\tbool \"expect\"\n\thelp\n\t  Expect is a tool for automating interactive applications\n\t  such as telnet, ftp, passwd, fsck, rlogin, ssh, tip, etc.\n\n\t  http://expect.sourceforge.net/\n"
  },
  {
    "path": "package/expect/expect.hash",
    "content": "# From https://sourceforge.net/projects/expect/files/Expect/5.45.4/expect5.45.4.tar.gz.SHA256\nsha256  49a7da83b0bdd9f46d04a04deec19c7767bb9a323e40c4781f89caf760b92c34  expect5.45.4.tar.gz\n# Locally calculated\nsha256  b2415b17dc8d9a287f4509047ef5ac3436baef7ba7c50faef5222dcdf61a2bab  README\n"
  },
  {
    "path": "package/expect/expect.mk",
    "content": "################################################################################\n#\n# expect\n#\n################################################################################\n\nEXPECT_VERSION = 5.45.4\nEXPECT_SITE = https://sourceforge.net/projects/expect/files/Expect/$(EXPECT_VERSION)\nEXPECT_SOURCE = expect$(EXPECT_VERSION).tar.gz\nEXPECT_LICENSE = Public domain\nEXPECT_LICENSE_FILES = README\n\n# 0001-enable-cross-compilation.patch\nEXPECT_AUTORECONF = YES\nEXPECT_DEPENDENCIES = tcl\nEXPECT_CONF_OPTS = --with-tcl=$(BUILD_DIR)/tcl-$(TCL_VERSION)/unix\n\n# Since we don't want examples installed\nEXPECT_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-binaries\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/explorercanvas/Config.in",
    "content": "config BR2_PACKAGE_EXPLORERCANVAS\n\tbool \"explorercanvas\"\n\thelp\n\t  Modern browsers like Firefox, Safari, Chrome and Opera\n\t  support the HTML5 canvas tag to allow 2D command-based\n\t  drawing. ExplorerCanvas brings the same functionality to\n\t  Internet Explorer (<v9). To use, web developers only need to\n\t  include a single script tag in their existing web pages.\n\n\t  http://excanvas.sf.net/\n"
  },
  {
    "path": "package/explorercanvas/explorercanvas.hash",
    "content": "# Locally calculated\nsha256  7b8f597b5d3a2f71e87aac413e12e03d852df3dd3ac39f70e1615c9c850217ec  explorercanvas-aa989ea9d9bac748638f7c66b0fc88e619715da6.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  COPYING\n"
  },
  {
    "path": "package/explorercanvas/explorercanvas.mk",
    "content": "################################################################################\n#\n# explorercanvas\n#\n################################################################################\n\nEXPLORERCANVAS_VERSION = aa989ea9d9bac748638f7c66b0fc88e619715da6\nEXPLORERCANVAS_SITE = $(call github,arv,ExplorerCanvas,$(EXPLORERCANVAS_VERSION))\nEXPLORERCANVAS_LICENSE = Apache-2.0\nEXPLORERCANVAS_LICENSE_FILES = COPYING\n\ndefine EXPLORERCANVAS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D $(@D)/excanvas.js $(TARGET_DIR)/var/www/excanvas.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/f2fs-tools/Config.in",
    "content": "config BR2_PACKAGE_F2FS_TOOLS\n\tbool \"f2fs-tools\"\n\tdepends on BR2_USE_WCHAR # uses wchar_t\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Tools for Flash-Friendly File System (F2FS)\n\n\t  https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git\n\ncomment \"f2fs-tools needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/f2fs-tools/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_F2FS_TOOLS\n\tbool \"host f2fs-tools\"\n\tselect BR2_PACKAGE_HOST_UTIL_LINUX\n\thelp\n\t  Tools for Flash-Friendly File System (F2FS)\n\n\t  https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git\n"
  },
  {
    "path": "package/f2fs-tools/f2fs-tools.hash",
    "content": "# Locally computed\nsha256 619263d4e2022152a1472c1d912eaae104f20bd227ce0bb9d41d1d6608094bd1  f2fs-tools-1.14.0.tar.gz\nsha256 662abb3a8a80b36ae7036c289dd1e03b361ee5dd2e6fd5211d0d8d029146449f  COPYING\n"
  },
  {
    "path": "package/f2fs-tools/f2fs-tools.mk",
    "content": "################################################################################\n#\n# f2fs-tools\n#\n################################################################################\n\nF2FS_TOOLS_VERSION = 1.14.0\nF2FS_TOOLS_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git/snapshot\nF2FS_TOOLS_CONF_ENV = ac_cv_file__git=no\nF2FS_TOOLS_DEPENDENCIES = host-pkgconf util-linux\nHOST_F2FS_TOOLS_DEPENDENCIES = host-pkgconf host-util-linux\n# GIT version, shipped without configure\nF2FS_TOOLS_AUTORECONF = YES\nF2FS_TOOLS_INSTALL_STAGING = YES\nF2FS_TOOLS_LICENSE = GPL-2.0\nF2FS_TOOLS_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nF2FS_TOOLS_CONF_OPTS += --with-selinux\nF2FS_TOOLS_DEPENDENCIES += libselinux\nelse\nF2FS_TOOLS_CONF_OPTS += --without-selinux\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y)\n# util-linux is a dependency already, no need to list it again\nF2FS_TOOLS_CONF_OPTS += --with-blkid\nelse\nF2FS_TOOLS_CONF_OPTS += --without-blkid\nendif\n\n# blkid is only used to detect if we're overwriting a filesystem\n# during mkfs, which only makes sense on the target, so we disable\n# blkid support even if we have host-util-linux\nHOST_F2FS_TOOLS_CONF_OPTS = \\\n\t--without-selinux \\\n\t--without-blkid\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/faad2/Config.in",
    "content": "config BR2_PACKAGE_FAAD2\n\tbool \"faad2\"\n\thelp\n\t  FAAD2 is an open source MPEG-4 and MPEG-2 AAC decoder,\n\n\t  http://www.audiocoding.com/faad2.html\n"
  },
  {
    "path": "package/faad2/faad2.hash",
    "content": "# Locally computed\nsha256  0c6d9636c96f95c7d736f097d418829ced8ec6dbd899cc6cc82b728480a84bfb  faad2-2.10.0.tar.gz\nsha256  d3baf3a54943cf12a994c85867a18dec84f810901b2f2878ddfd77efcc3c150f  COPYING\n"
  },
  {
    "path": "package/faad2/faad2.mk",
    "content": "################################################################################\n#\n# faad2\n#\n################################################################################\n\nFAAD2_VERSION = 2.10.0\nFAAD2_SITE = $(call github,knik0,faad2,$(subst .,_,$(FAAD2_VERSION)))\nFAAD2_LICENSE = GPL-2.0\nFAAD2_LICENSE_FILES = COPYING\nFAAD2_CPE_ID_VENDOR = audiocoding\nFAAD2_CPE_ID_PRODUCT = freeware_advanced_audio_decoder_2\n# frontend/faad calls frexp()\nFAAD2_CONF_ENV = LIBS=-lm\nFAAD2_INSTALL_STAGING = YES\n# From git\nFAAD2_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/faifa/0001-sha2.c-explicitly-include-endian.h-for-BYTE_ORDER-ma.patch",
    "content": "From bfe43f4b4f249cee8c77059d7c89ebbc521d4d93 Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <peter@korsgaard.com>\nDate: Mon, 14 Sep 2015 22:25:12 +0200\nSubject: [PATCH] sha2.c: explicitly include endian.h for BYTE_ORDER macro\n\nFixes a build issue with the musl C library, which doesn't indirectly\ninclude endian.h from any of the included system headers:\n\nhttp://autobuild.buildroot.net/results/17b/17bde543db253c008079b04c5e341f804160f59c/build-end.log\n\nUpstream-Status: submitted (https://github.com/ffainelli/faifa/pull/12)\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n sha2.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/sha2.c b/sha2.c\nindex f2f5132..4c8a72d 100644\n--- a/sha2.c\n+++ b/sha2.c\n@@ -40,6 +40,7 @@\n #include <inttypes.h>\n #include <string.h>\n \n+#include \"endian.h\"\n #include \"sha2.h\"\n \n /*\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/faifa/0002-hpav_cfg.c-do-not-include-linux-if_ether.h-for-musl-.patch",
    "content": "From 36eed08a3783df6bb8d92d3c80cd47d0660eeb12 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sat, 30 Jan 2016 16:27:37 +0100\nSubject: [PATCH 1/1] hpav_cfg.c: do not include linux/if_ether.h for musl\n compatibility\n\nFixes a build issue with the musl C library\nhttp://autobuild.buildroot.net/results/dc6/dc6e4d7327d2031ef921cccd814605dec73a0f9c/build-end.log\n\nPatch sent upstream: https://github.com/ffainelli/faifa/pull/13\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n hpav_cfg.c | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/hpav_cfg.c b/hpav_cfg.c\nindex 7cc53af..45d3f0a 100644\n--- a/hpav_cfg.c\n+++ b/hpav_cfg.c\n@@ -53,8 +53,6 @@\n #include <arpa/inet.h>\n #include <net/if.h>\n \n-#include <linux/if_ether.h>\n-\n #include \"homeplug_av.h\"\n #include \"crypto.h\"\n \n-- \n2.7.0.rc3\n\n"
  },
  {
    "path": "package/faifa/0003-Makefile.in-fix-asbolute-symlink-of-libfaifa.so.patch",
    "content": "From d16abf61049947c451a6411a13fc15dda32feb47 Mon Sep 17 00:00:00 2001\nFrom: Florian Fainelli <f.fainelli@gmail.com>\nDate: Sat, 6 Sep 2014 11:23:02 -0700\nSubject: [PATCH] Makefile.in: fix asbolute symlink of libfaifa.so\n\nFixes #7\n\nSigned-off-by: Florian Fainelli <f.fainelli@gmail.com>\n[Upstream: da2e279fd736d05bcd0ee6e4609c44fece017ba8]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n Makefile.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex ba65bee..9dec7ee 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -98,9 +98,9 @@ install: installman strip\n \t$(INSTALL) -m0755 hpav_cfg $(DESTDIR)$(sbindir)\n \t$(INSTALL) -d $(DESTDIR)$(libdir)\n \t$(INSTALL) -m0644 $(LIB_SONAME) $(DESTDIR)$(libdir)\n-\tln -sf $(DESTDIR)$(libdir)/$(LIB_SONAME) $(DESTDIR)$(libdir)/$(LIB_SHARED_SO)\n \t$(INSTALL) -d $(DESTDIR)$(includedir)/faifa\n \tcp $(HEADERS) $(DESTDIR)$(includedir)/faifa\n+\tcd $(DESTDIR)$(libdir) && ln -sf $(LIB_SONAME) $(LIB_SHARED_SO)\n \n strip:\n \t$(STRIP) $(APP)\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/faifa/Config.in",
    "content": "config BR2_PACKAGE_FAIFA\n\tbool \"faifa\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  Faifa can configure any Intellon-based Power Line\n\t  Communication device using Intellon INT5000 and INT6000\n\t  series chips (6000 and 6300 chips). It supports all\n\t  Intellon-specific management and control frames as well as\n\t  standard management frames.\n\n\t  https://github.com/ffainelli/faifa\n\ncomment \"faifa needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/faifa/faifa.hash",
    "content": "# locally computed\nsha256  6eada81f3d21f80b5848338b627784981064d728f8e377e5cf973d31640d4489  faifa-0.1.tar.gz\nsha256  9b62e4601b2b9cd5719a393e88ed71a8304048862502db765ed9d6ff8cf38c5e  COPYING\n"
  },
  {
    "path": "package/faifa/faifa.mk",
    "content": "################################################################################\n#\n# faifa\n#\n################################################################################\n\nFAIFA_VERSION = 0.1\nFAIFA_SITE = $(call github,ffainelli,faifa,v$(FAIFA_VERSION))\nFAIFA_INSTALL_STAGING = YES\nFAIFA_DEPENDENCIES = libpcap host-autoconf\nFAIFA_LICENSE = BSD-3-Clause\nFAIFA_LICENSE_FILES = COPYING\n\nFAIFA_MAKE_OPTS += GIT_REV=$(FAIFA_VERSION)\n\n# This package uses autoconf, but not automake, so we need to call\n# their special autogen.sh script, and have custom target and staging\n# installation commands.\n\ndefine FAIFA_RUN_AUTOGEN\n\tcd $(@D) && PATH=$(BR_PATH) ./autogen.sh\nendef\nFAIFA_PRE_CONFIGURE_HOOKS += FAIFA_RUN_AUTOGEN\n\ndefine FAIFA_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tPREFIX=/usr \\\n\t\tSTRIP=/bin/true \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tinstall\nendef\n\ndefine FAIFA_INSTALL_STAGING_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tPREFIX=/usr \\\n\t\tSTRIP=/bin/true \\\n\t\tDESTDIR=$(STAGING_DIR) \\\n\t\tinstall\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fail2ban/0001-fixed-possible-RCE-vulnerability-unset-escape-variable.patch",
    "content": "From 410a6ce5c80dd981c22752da034f2529b5eee844 Mon Sep 17 00:00:00 2001\nFrom: sebres <serg.brester@sebres.de>\nDate: Mon, 21 Jun 2021 17:12:53 +0200\nSubject: [PATCH] fixed possible RCE vulnerability, unset escape variable\n (default tilde) stops consider \"~\" char after new-line as composing escape\n sequence\n\n[Retrieved from:\nhttps://github.com/fail2ban/fail2ban/commit/410a6ce5c80dd981c22752da034f2529b5eee844]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n config/action.d/complain.conf         | 2 +-\n config/action.d/dshield.conf          | 2 +-\n config/action.d/mail-buffered.conf    | 8 ++++----\n config/action.d/mail-whois-lines.conf | 2 +-\n config/action.d/mail-whois.conf       | 6 +++---\n config/action.d/mail.conf             | 6 +++---\n 6 files changed, 13 insertions(+), 13 deletions(-)\n\ndiff --git a/config/action.d/complain.conf b/config/action.d/complain.conf\nindex 3a5f882c9f..4d73b05859 100644\n--- a/config/action.d/complain.conf\n+++ b/config/action.d/complain.conf\n@@ -102,7 +102,7 @@ logpath = /dev/null\n # Notes.:  Your system mail command. Is passed 2 args: subject and recipient\n # Values:  CMD\n #\n-mailcmd = mail -s\n+mailcmd = mail -E 'set escape' -s\n \n # Option:  mailargs\n # Notes.:  Additional arguments to mail command. e.g. for standard Unix mail:\ndiff --git a/config/action.d/dshield.conf b/config/action.d/dshield.conf\nindex c128bef348..3d5a7a53a9 100644\n--- a/config/action.d/dshield.conf\n+++ b/config/action.d/dshield.conf\n@@ -179,7 +179,7 @@ tcpflags =\n # Notes.:  Your system mail command. Is passed 2 args: subject and recipient\n # Values:  CMD\n #\n-mailcmd = mail -s\n+mailcmd = mail -E 'set escape' -s\n \n # Option:  mailargs\n # Notes.:  Additional arguments to mail command. e.g. for standard Unix mail:\ndiff --git a/config/action.d/mail-buffered.conf b/config/action.d/mail-buffered.conf\nindex 325f185b2f..79b841049c 100644\n--- a/config/action.d/mail-buffered.conf\n+++ b/config/action.d/mail-buffered.conf\n@@ -17,7 +17,7 @@ actionstart = printf %%b \"Hi,\\n\n               The jail <name> has been started successfully.\\n\n               Output will be buffered until <lines> lines are available.\\n\n               Regards,\\n\n-              Fail2Ban\"|mail -s \"[Fail2Ban] <name>: started on <fq-hostname>\" <dest>\n+              Fail2Ban\"|mail -E 'set escape' -s \"[Fail2Ban] <name>: started on <fq-hostname>\" <dest>\n \n # Option:  actionstop\n # Notes.:  command executed at the stop of jail (or at the end of Fail2Ban)\n@@ -28,13 +28,13 @@ actionstop = if [ -f <tmpfile> ]; then\n                  These hosts have been banned by Fail2Ban.\\n\n                  `cat <tmpfile>`\n                  Regards,\\n\n-                 Fail2Ban\"|mail -s \"[Fail2Ban] <name>: Summary from <fq-hostname>\" <dest>\n+                 Fail2Ban\"|mail -E 'set escape' -s \"[Fail2Ban] <name>: Summary from <fq-hostname>\" <dest>\n                  rm <tmpfile>\n              fi\n              printf %%b \"Hi,\\n\n              The jail <name> has been stopped.\\n\n              Regards,\\n\n-             Fail2Ban\"|mail -s \"[Fail2Ban] <name>: stopped on <fq-hostname>\" <dest>\n+             Fail2Ban\"|mail -E 'set escape' -s \"[Fail2Ban] <name>: stopped on <fq-hostname>\" <dest>\n \n # Option:  actioncheck\n # Notes.:  command executed once before each actionban command\n@@ -55,7 +55,7 @@ actionban = printf %%b \"`date`: <ip> (<failures> failures)\\n\" >> <tmpfile>\n                 These hosts have been banned by Fail2Ban.\\n\n                 `cat <tmpfile>`\n                 \\nRegards,\\n\n-                Fail2Ban\"|mail -s \"[Fail2Ban] <name>: Summary\" <dest>\n+                Fail2Ban\"|mail -E 'set escape' -s \"[Fail2Ban] <name>: Summary\" <dest>\n                 rm <tmpfile>\n             fi\n \ndiff --git a/config/action.d/mail-whois-lines.conf b/config/action.d/mail-whois-lines.conf\nindex 3a3e56b2c7..d2818cb9b9 100644\n--- a/config/action.d/mail-whois-lines.conf\n+++ b/config/action.d/mail-whois-lines.conf\n@@ -72,7 +72,7 @@ actionunban =\n # Notes.:  Your system mail command. Is passed 2 args: subject and recipient\n # Values:  CMD\n #\n-mailcmd = mail -s\n+mailcmd = mail -E 'set escape' -s\n \n # Default name of the chain\n #\ndiff --git a/config/action.d/mail-whois.conf b/config/action.d/mail-whois.conf\nindex 7fea34c40d..ab33b616dc 100644\n--- a/config/action.d/mail-whois.conf\n+++ b/config/action.d/mail-whois.conf\n@@ -20,7 +20,7 @@ norestored = 1\n actionstart = printf %%b \"Hi,\\n\n               The jail <name> has been started successfully.\\n\n               Regards,\\n\n-              Fail2Ban\"|mail -s \"[Fail2Ban] <name>: started on <fq-hostname>\" <dest>\n+              Fail2Ban\"|mail -E 'set escape' -s \"[Fail2Ban] <name>: started on <fq-hostname>\" <dest>\n \n # Option:  actionstop\n # Notes.:  command executed at the stop of jail (or at the end of Fail2Ban)\n@@ -29,7 +29,7 @@ actionstart = printf %%b \"Hi,\\n\n actionstop = printf %%b \"Hi,\\n\n              The jail <name> has been stopped.\\n\n              Regards,\\n\n-             Fail2Ban\"|mail -s \"[Fail2Ban] <name>: stopped on <fq-hostname>\" <dest>\n+             Fail2Ban\"|mail -E 'set escape' -s \"[Fail2Ban] <name>: stopped on <fq-hostname>\" <dest>\n \n # Option:  actioncheck\n # Notes.:  command executed once before each actionban command\n@@ -49,7 +49,7 @@ actionban = printf %%b \"Hi,\\n\n             Here is more information about <ip> :\\n\n             `%(_whois_command)s`\\n\n             Regards,\\n\n-            Fail2Ban\"|mail -s \"[Fail2Ban] <name>: banned <ip> from <fq-hostname>\" <dest>\n+            Fail2Ban\"|mail -E 'set escape' -s \"[Fail2Ban] <name>: banned <ip> from <fq-hostname>\" <dest>\n \n # Option:  actionunban\n # Notes.:  command executed when unbanning an IP. Take care that the\ndiff --git a/config/action.d/mail.conf b/config/action.d/mail.conf\nindex 5d8c0e154c..f4838ddcb6 100644\n--- a/config/action.d/mail.conf\n+++ b/config/action.d/mail.conf\n@@ -16,7 +16,7 @@ norestored = 1\n actionstart = printf %%b \"Hi,\\n\n               The jail <name> has been started successfully.\\n\n               Regards,\\n\n-              Fail2Ban\"|mail -s \"[Fail2Ban] <name>: started  on <fq-hostname>\" <dest>\n+              Fail2Ban\"|mail -E 'set escape' -s \"[Fail2Ban] <name>: started  on <fq-hostname>\" <dest>\n \n # Option:  actionstop\n # Notes.:  command executed at the stop of jail (or at the end of Fail2Ban)\n@@ -25,7 +25,7 @@ actionstart = printf %%b \"Hi,\\n\n actionstop = printf %%b \"Hi,\\n\n              The jail <name> has been stopped.\\n\n              Regards,\\n\n-             Fail2Ban\"|mail -s \"[Fail2Ban] <name>: stopped on <fq-hostname>\" <dest>\n+             Fail2Ban\"|mail -E 'set escape' -s \"[Fail2Ban] <name>: stopped on <fq-hostname>\" <dest>\n \n # Option:  actioncheck\n # Notes.:  command executed once before each actionban command\n@@ -43,7 +43,7 @@ actionban = printf %%b \"Hi,\\n\n             The IP <ip> has just been banned by Fail2Ban after\n             <failures> attempts against <name>.\\n\n             Regards,\\n\n-            Fail2Ban\"|mail -s \"[Fail2Ban] <name>: banned <ip> from <fq-hostname>\" <dest>\n+            Fail2Ban\"|mail -E 'set escape' -s \"[Fail2Ban] <name>: banned <ip> from <fq-hostname>\" <dest>\n \n # Option:  actionunban\n # Notes.:  command executed when unbanning an IP. Take care that the\n"
  },
  {
    "path": "package/fail2ban/Config.in",
    "content": "config BR2_PACKAGE_FAIL2BAN\n\tbool \"fail2ban\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SYSTEMD if BR2_PACKAGE_SYSTEMD\n\thelp\n\t  Fail2ban scans log files (e.g. /var/log/apache/error_log) and\n\t  bans IPs that show the malicious signs -- too many password\n\t  failures, seeking for exploits, etc. Out of the box Fail2Ban\n\t  comes with filters for various services (apache, courier,\n\t  ssh, etc).\n\n\t  Fail2Ban is able to reduce the rate of incorrect\n\t  authentications attempts however it cannot eliminate the risk\n\t  that weak authentication presents.\n\n\t  https://www.fail2ban.org\n"
  },
  {
    "path": "package/fail2ban/S60fail2ban",
    "content": "#!/bin/sh\n\ncase \"$1\" in\n\tstart)\n\t\tprintf \"Starting fail2ban: \"\n\t\tstart-stop-daemon -S -q -m -p /var/run/fail2ban.pid \\\n\t\t\t-b -x fail2ban-server -- -xf start\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping fail2ban: \"\n\t\tstart-stop-daemon -K -q -p /var/run/fail2ban.pid\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\trestart)\n\t\t\"$0\" stop\n\t\tsleep 1\n\t\t\"$0\" start\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\t;;\nesac\n"
  },
  {
    "path": "package/fail2ban/fail2ban.hash",
    "content": "# sha256 locally computed\nsha256  383108e5f8644cefb288537950923b7520f642e7e114efb843f6e7ea9268b1e0  fail2ban-0.11.2.tar.gz\nsha256  a75fec0260742fe6275d63ff6a5d97b924b28766558306b3fa4069763096929b  COPYING\n"
  },
  {
    "path": "package/fail2ban/fail2ban.mk",
    "content": "################################################################################\n#\n# fail2ban\n#\n################################################################################\n\nFAIL2BAN_VERSION = 0.11.2\nFAIL2BAN_SITE = $(call github,fail2ban,fail2ban,$(FAIL2BAN_VERSION))\nFAIL2BAN_LICENSE = GPL-2.0+\nFAIL2BAN_LICENSE_FILES = COPYING\nFAIL2BAN_CPE_ID_VENDOR = fail2ban\nFAIL2BAN_SELINUX_MODULES = fail2ban\nFAIL2BAN_SETUP_TYPE = distutils\n\n# 0001-fixed-possible-RCE-vulnerability-unset-escape-variable.patch\nFAIL2BAN_IGNORE_CVES += CVE-2021-32749\n\nifeq ($(BR2_PACKAGE_PYTHON3),y)\ndefine FAIL2BAN_PYTHON_2TO3\n\t$(HOST_DIR)/bin/2to3 --write --nobackups --no-diffs $(@D)/bin/* $(@D)/fail2ban\nendef\nFAIL2BAN_DEPENDENCIES += host-python3\n# We can't use _POST_PATCH_HOOKS because dependencies are not guaranteed\n# to build and install before _POST_PATCH_HOOKS run.\nFAIL2BAN_PRE_CONFIGURE_HOOKS += FAIL2BAN_PYTHON_2TO3\nendif\n\ndefine FAIL2BAN_FIX_DEFAULT_CONFIG\n\t$(SED) '/^socket/c\\socket = /run/fail2ban.sock' $(TARGET_DIR)/etc/fail2ban/fail2ban.conf\n\t$(SED) '/^pidfile/c\\pidfile = /run/fail2ban.pid' $(TARGET_DIR)/etc/fail2ban/fail2ban.conf\n\t$(SED) '/^dbfile/c\\dbfile = None' $(TARGET_DIR)/etc/fail2ban/fail2ban.conf\nendef\nFAIL2BAN_POST_INSTALL_TARGET_HOOKS += FAIL2BAN_FIX_DEFAULT_CONFIG\n\n# fail2ban-python points to host python\ndefine FAIL2BAN_FIX_FAIL2BAN_PYTHON_SYMLINK\n\tln -snf $(if $(BR2_PACKAGE_PYTHON),python,python3) \\\n\t\t$(TARGET_DIR)/usr/bin/fail2ban-python\nendef\nFAIL2BAN_POST_INSTALL_TARGET_HOOKS += FAIL2BAN_FIX_FAIL2BAN_PYTHON_SYMLINK\n\ndefine FAIL2BAN_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/fail2ban/S60fail2ban \\\n\t\t$(TARGET_DIR)/etc/init.d/S60fail2ban\nendef\n\ndefine FAIL2BAN_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 $(@D)/files/fail2ban.service.in \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/fail2ban.service\n\t$(SED) 's,@BINDIR@,/usr/bin,g' $(TARGET_DIR)/usr/lib/systemd/system/fail2ban.service\n\t$(SED) '/^PIDFile/c\\PIDFile=/run/fail2ban.pid' $(TARGET_DIR)/usr/lib/systemd/system/fail2ban.service\nendef\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/fakedate/fakedate",
    "content": "#!/bin/bash\n# vim: set sw=4 expandtab:\n#\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 2 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n# General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n#\n# Copyright (C) 2016 Jérôme Pouiller <jezz@sysmic.org>\n#\n\nDATE_BIN=false\n# Do not call any 'date' before us in the PATH, or that would create\n# an infinite recursion.\nfor date in $(which -a date |tac); do\n    if [ \"${date}\" -ef \"$0\" ]; then\n        break\n    fi\n    DATE_BIN=\"${date}\"\ndone\n\nif [ -n \"$SOURCE_DATE_EPOCH\" ]; then\n    FORCE_EPOCH=1\n    for i in \"$@\"; do\n        # Use of --date, --file and --reference (and their short option counter\n        # parts) is incompatible with SOURCE_DATE_EPOCH.\n        # -u and -R are the only short options without argument. So they could\n        # appear between '-' and option we want to match.\n        if echo \"$i\" | grep -qE '^-([uR]*d|-date|[uR]*f|-file|[uR]*r|--reference)'; then\n            FORCE_EPOCH=0\n            break;\n        fi\n    done\n    if [ $FORCE_EPOCH -eq 1 ]; then\n        echo \"date: Warning: using \\$SOURCE_DATE_EPOCH instead of true time\" >&2\n        ARGS=\"-d @$SOURCE_DATE_EPOCH\"\n    fi\nfi\n\nexec $DATE_BIN $ARGS \"$@\"\n"
  },
  {
    "path": "package/fakedate/fakedate.mk",
    "content": "################################################################################\n#\n# fakedate\n#\n################################################################################\n\n# source included in buildroot\nHOST_FAKEDATE_LICENSE = GPL-2.0+\n\ndefine HOST_FAKEDATE_INSTALL_CMDS\n\t$(INSTALL) -D -m 755 package/fakedate/fakedate $(HOST_DIR)/bin/date\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/fakeroot/fakeroot.hash",
    "content": "# From https://deb.debian.org/debian/pool/main/f/fakeroot/fakeroot_1.30.1-1.dsc\nsha256  32ebb1f421aca0db7141c32a8c104eb95d2b45c393058b9435fbf903dd2b6a75  fakeroot_1.30.1.orig.tar.gz\n# License files, locally calculated\nsha256  fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7  COPYING\n"
  },
  {
    "path": "package/fakeroot/fakeroot.mk",
    "content": "################################################################################\n#\n# fakeroot\n#\n################################################################################\n\nFAKEROOT_VERSION = 1.30.1\nFAKEROOT_SOURCE = fakeroot_$(FAKEROOT_VERSION).orig.tar.gz\nFAKEROOT_SITE = https://snapshot.debian.org/archive/debian/20221120T030258Z/pool/main/f/fakeroot\n\nHOST_FAKEROOT_DEPENDENCIES = host-acl\n# Force capabilities detection off\n# For now these are process capabilities (faked) rather than file\n# so they're of no real use\nHOST_FAKEROOT_CONF_ENV = \\\n\tac_cv_header_sys_capability_h=no \\\n\tac_cv_func_capset=no\nFAKEROOT_LICENSE = GPL-3.0+\nFAKEROOT_LICENSE_FILES = COPYING\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/faketime/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_FAKETIME\n\tbool \"host faketime\"\n\thelp\n\t  Faketime reports faked system time to programs without\n\t  having to change the system-wide time.\n\n\t  https://github.com/wolfcw/libfaketime\n"
  },
  {
    "path": "package/faketime/faketime.hash",
    "content": "# Locally calculated\nsha256  57d0181150361c0a9b5c8eef05b11392f6134ada2c2d998e92e63daed639647c  faketime-0.9.9.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/faketime/faketime.mk",
    "content": "################################################################################\n#\n# libfaketime\n#\n################################################################################\n\nFAKETIME_VERSION = 0.9.9\nFAKETIME_SITE = $(call github,wolfcw,libfaketime,v$(FAKETIME_VERSION))\nFAKETIME_LICENSE = GPL-2.0\nFAKETIME_LICENSE_FILES = COPYING\n\ndefine HOST_FAKETIME_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR)\nendef\n\ndefine HOST_FAKETIME_INSTALL_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/fan-ctrl/Config.in",
    "content": "config BR2_PACKAGE_FAN_CTRL\n\tbool \"fan-ctrl\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Fan-ctrl is a little daemon that controls the speed of one\n\t  or more system or CPU fans. It does so by monitoring\n\t  temperature inputs and selecting a fan speed from an array\n\t  of available speeds based on a set of temperature\n\t  thresholds.\n\n\t  http://fan-ctrl.sourceforge.net/\n"
  },
  {
    "path": "package/fan-ctrl/fan-ctrl.hash",
    "content": "# Locally computed\nsha1 d8ba5bac15e90c36a4e908ca1c98fac83bf702ea fan-ctrl.c?revision=1.3\n"
  },
  {
    "path": "package/fan-ctrl/fan-ctrl.mk",
    "content": "################################################################################\n#\n# fan-ctrl\n#\n################################################################################\n\n# no release, so grab .c file directly from viewvc\nFAN_CTRL_VERSION = 1.3\nFAN_CTRL_SOURCE = fan-ctrl.c?revision=$(FAN_CTRL_VERSION)\nFAN_CTRL_SITE = http://fan-ctrl.cvs.sourceforge.net/viewvc/fan-ctrl/fan-ctrl\nFAN_CTRL_LICENSE = GPL-2.0+\nFAN_CTRL_LICENSE_FILES = fan-ctrl.c\n\ndefine FAN_CTRL_EXTRACT_CMDS\n\tcp $(FAN_CTRL_DL_DIR)/$(FAN_CTRL_SOURCE) $(@D)/fan-ctrl.c\nendef\n\ndefine FAN_CTRL_BUILD_CMDS\n\t$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \\\n\t\t$(@D)/fan-ctrl.c -o $(@D)/fan-ctrl\nendef\n\ndefine FAN_CTRL_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/fan-ctrl $(TARGET_DIR)/usr/sbin/fan-ctrl\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fastd/Config.in",
    "content": "config BR2_PACKAGE_FASTD\n\tbool \"fastd\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS # libuecc\n\tselect BR2_PACKAGE_LIBUECC\n\tselect BR2_PACKAGE_LIBSODIUM\n\tselect BR2_PACKAGE_LIBSODIUM_FULL\n\thelp\n\t  Fast and Secure Tunneling Daemon\n\n\t  https://github.com/NeoRaider/fastd/wiki\n\nif BR2_PACKAGE_FASTD\n\nconfig BR2_PACKAGE_FASTD_STATUS_SOCKET\n\tbool \"status socket support\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c\n\tselect BR2_PACKAGE_JSON_C\n\thelp\n\t  Enable support for a socket to get fastd's status.\n\nconfig BR2_PACKAGE_FASTD_OFFLOAD_L2TP\n\tbool \"l2tp offload support\"\n\tselect BR2_PACKAGE_LIBMNL\n\thelp\n\t  L2TP can be offloaded to the Linux kernel, significantly\n\t  increasing throughput.\n\nendif\n\ncomment \"fastd needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/fastd/fastd.hash",
    "content": "# computed locally\nsha256  19750b88705d66811b7c21b672537909c19ae6b21350688cbd1a3a54d08a8951  fastd-22.tar.xz\nsha256  adf08b42f1b890b89e998360a864cb4f8441a0a57c9e95e2ce1bfdfc24c49976  COPYRIGHT\n"
  },
  {
    "path": "package/fastd/fastd.mk",
    "content": "################################################################################\n#\n# fastd\n#\n################################################################################\n\nFASTD_VERSION = 22\nFASTD_SITE = https://github.com/NeoRaider/fastd/releases/download/v$(FASTD_VERSION)\nFASTD_SOURCE = fastd-$(FASTD_VERSION).tar.xz\nFASTD_LICENSE = BSD-2-Clause\nFASTD_LICENSE_FILES = COPYRIGHT\nFASTD_CPE_ID_VERSION = $(FASTD_VERSION).0\nFASTD_DEPENDENCIES = host-bison host-pkgconf libuecc libsodium\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nFASTD_CONF_OPTS += -Dcapabilities=enabled\nFASTD_DEPENDENCIES += libcap\nelse\nFASTD_CONF_OPTS += -Dcapabilities=disabled\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nFASTD_CONF_OPTS += -Dcipher_aes128-ctr=enabled\nFASTD_DEPENDENCIES += openssl\nelse\nFASTD_CONF_OPTS += -Dcipher_aes128-ctr=disabled\nendif\n\nifeq ($(BR2_PACKAGE_FASTD_STATUS_SOCKET),y)\nFASTD_CONF_OPTS += -Dstatus_socket=enabled\nFASTD_DEPENDENCIES += json-c\nelse\nFASTD_CONF_OPTS += -Dstatus_socket=disabled\nendif\n\nifeq ($(BR2_PACKAGE_FASTD_OFFLOAD_L2TP),y)\nFASTD_CONF_OPTS += -Doffload_l2tp=enabled -Dlibmnl_builtin=false\nFASTD_DEPENDENCIES += libmnl\nelse\nFASTD_CONF_OPTS += -Doffload_l2tp=disabled\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nFASTD_CONF_OPTS += -Dsystemd=enabled\nelse\nFASTD_CONF_OPTS += -Dsystemd=disabled\nendif\n\nifeq ($(BR2_GCC_ENABLE_LTO),y)\nFASTD_CONF_OPTS += -Db_lto=true\nelse\nFASTD_CONF_OPTS += -Db_lto=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/fatcat/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_FATCAT\n\tbool \"host fatcat\"\n\thelp\n\t  Fatcat is designed to manipulate FAT filesystems, in order\n\t  to explore, extract, repair, recover and forensic them. It\n\t  currently supports FAT12, FAT16 and FAT32.\n\n\t  https://github.com/Gregwar/fatcat\n"
  },
  {
    "path": "package/fatcat/fatcat.hash",
    "content": "# Locally computed:\nsha256 303efe2aa73cbfe6fbc5d8af346d0f2c70b3f996fc891e8859213a58b95ad88c  fatcat-1.1.0.tar.gz\nsha256 3ea03755e32cf7f5b12981de92a0fdad396448195fe0024990c9cbc388e9866c  LICENSE\n"
  },
  {
    "path": "package/fatcat/fatcat.mk",
    "content": "################################################################################\n#\n# fatcat\n#\n################################################################################\n\nFATCAT_VERSION = 1.1.0\nFATCAT_SITE = $(call github,Gregwar,fatcat,v$(FATCAT_VERSION))\nFATCAT_LICENSE = MIT\nFATCAT_LICENSE_FILES = LICENSE\n\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/fb-test-app/Config.in",
    "content": "config BR2_PACKAGE_FB_TEST_APP\n\tbool \"fb-test-app\"\n\thelp\n\t  Test suite for Linux framebuffer.\n\n\t  https://github.com/prpplague/fb-test-app\n"
  },
  {
    "path": "package/fb-test-app/fb-test-app.hash",
    "content": "# Locally calculated\nsha256  45d490ed78a6e4425d9a760e81e99dc503af01704e17ab5bf186b87a31c5e3db  fb-test-app-1.1.1.tar.gz\nsha256  e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING\n"
  },
  {
    "path": "package/fb-test-app/fb-test-app.mk",
    "content": "################################################################################\n#\n# fb-test-app\n#\n################################################################################\n\nFB_TEST_APP_VERSION = 1.1.1\nFB_TEST_APP_SITE = $(call github,andy-shev,fb-test-app,rosetta-$(FB_TEST_APP_VERSION))\nFB_TEST_APP_LICENSE = GPL-2.0\nFB_TEST_APP_LICENSE_FILES = COPYING\n\ndefine FB_TEST_APP_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all\nendef\n\ndefine FB_TEST_APP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/perf $(TARGET_DIR)/usr/bin/fb-test-perf\n\t$(INSTALL) -D -m 0755 $(@D)/rect $(TARGET_DIR)/usr/bin/fb-test-rect\n\t$(INSTALL) -D -m 0755 $(@D)/fb-test $(TARGET_DIR)/usr/bin/fb-test\n\t$(INSTALL) -D -m 0755 $(@D)/offset $(TARGET_DIR)/usr/bin/fb-test-offset\n\t$(INSTALL) -D -m 0755 $(@D)/fb-string $(TARGET_DIR)/usr/bin/fb-test-string\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fbdump/Config.in",
    "content": "config BR2_PACKAGE_FBDUMP\n\tbool \"fbdump (Framebuffer Capture Tool)\"\n\thelp\n\t  fbdump is a simple tool to capture snapshots from the Linux\n\t  kernel framebuffer  device and write them out as a PPM file.\n\t  Currently, most packed-pixel framebuffer formats and the vga16\n\t  framebuffer are supported.\n\n\t  http://www.rcdrummond.net/fbdump\n"
  },
  {
    "path": "package/fbdump/fbdump.hash",
    "content": "# Locally calculated\nsha256\tc4d521a86229b3106cf69786008ad94f899da5288a19a067deae84951880722d\tfbdump-0.4.2.tar.gz\nsha256\t231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c\tCOPYING\n"
  },
  {
    "path": "package/fbdump/fbdump.mk",
    "content": "################################################################################\n#\n# fbdump\n#\n################################################################################\n\nFBDUMP_VERSION = 0.4.2\nFBDUMP_SITE = http://www.rcdrummond.net/fbdump\nFBDUMP_LICENSE = GPL-2.0\nFBDUMP_LICENSE_FILES = COPYING\n\n# The VGA16 specific feature of fbdump doesn't make much sense outside\n# of the x86/x86-64 architectures, and causes build problems on some\n# architectures as outw() is not always available.\nifeq ($(BR2_i386)$(BR2_x86_64),y)\nFBDUMP_CONF_OPTS += --enable-vga16fb\nelse\nFBDUMP_CONF_OPTS += --disable-vga16fb\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fbgrab/0001-fix-static-build.patch",
    "content": "Fix static build\n\nfbgrab links against libpng, which depends on libm. For shared library\nbuilds, there is nothing special to do about this, but for static\nlibrary builds, it is necessary to pass -lm when linking fbgrab.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/Makefile\n===================================================================\n--- a/Makefile\n+++ b/Makefile\n@@ -12,7 +12,7 @@\n all: fbgrab fbgrab.1.gz\n \n fbgrab: fbgrab.c\n-\t$(CC) -g -Wall $(CFLAGS) $(LDFLAGS) $< -lpng -lz -o $@\n+\t$(CC) -g -Wall $(CFLAGS) $(LDFLAGS) $< -lpng -lz -lm -o $@\n \n fbgrab.1.gz: fbgrab.1.man\n \t$(GZIP) $(GZIPFLAGS) $< > $@\n"
  },
  {
    "path": "package/fbgrab/Config.in",
    "content": "config BR2_PACKAGE_FBGRAB\n\tbool \"fbgrab\"\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  FBGrab is a framebuffer screenshot program, capturing the\n\t  linux frambuffer and converting it to a png-picture.\n\n\t  https://github.com/GunnarMonell/fbgrab\n"
  },
  {
    "path": "package/fbgrab/fbgrab.hash",
    "content": "# Locally calculated\nsha256  0202a9c4fb430eee4d8f566d09ab5f6e35c50804a192ba106046e54eb886f8f1  fbgrab-1.5.tar.gz\nsha256  fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7  COPYING\n"
  },
  {
    "path": "package/fbgrab/fbgrab.mk",
    "content": "################################################################################\n#\n# fbgrab\n#\n################################################################################\n\nFBGRAB_VERSION = 1.5\nFBGRAB_SITE = $(call github,GunnarMonell,fbgrab,$(FBGRAB_VERSION))\nFBGRAB_DEPENDENCIES = libpng\nFBGRAB_LICENSE = GPL-2.0\nFBGRAB_LICENSE_FILES = COPYING\n\ndefine FBGRAB_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) fbgrab\nendef\n\ndefine FBGRAB_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/fbgrab $(TARGET_DIR)/usr/bin/fbgrab\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fbset/0001-Fix-musl-compile.patch",
    "content": "From 6d42be24b62b94df8e2f01956842b7ee4b640e97 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Mon, 11 Jul 2016 22:07:42 +0200\nSubject: [PATCH] Fix musl compile.\n\nUnconditional include <asm/types.h> for __u32 type.\n\nFixes:\n\n  error: unknown type name '__u32'\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n fbset.h | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/fbset.h b/fbset.h\nindex 9b1d2ac..3c511e1 100644\n--- a/fbset.h\n+++ b/fbset.h\n@@ -15,9 +15,7 @@\n #include <stdio.h>\n #include <sys/types.h>\n \n-#ifdef __GLIBC__\n #include <asm/types.h>\n-#endif\n \n #define VERSION         \"Linux Frame Buffer Device Configuration \" \\\n \t\t\t\"Version 2.1 (23/06/1999)\\n\"  \\\n-- \n2.8.1\n\n"
  },
  {
    "path": "package/fbset/Config.in",
    "content": "config BR2_PACKAGE_FBSET\n\tbool \"fbset\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  Fbset is a system utility to show or change the settings of\n\t  the frame buffer device. The frame buffer device provides a\n\t  simple and unique interface to access different kinds of\n\t  graphic displays.\n\n\t  http://users.telenet.be/geertu/Linux/fbdev/\n"
  },
  {
    "path": "package/fbset/fbset.hash",
    "content": "# Locally calculated\nsha256  40ff4ab0247b75138a0887ed40f81c1a6184f340b77126c16d074b1075b41c20  fbset-2.1.tar.gz\nsha256  c3285709a0840899a789faefae1704e87f96f757e905a38a1931a9d4fde95ddd  fbset.c\n"
  },
  {
    "path": "package/fbset/fbset.mk",
    "content": "################################################################################\n#\n# fbset\n#\n################################################################################\n\nFBSET_VERSION = 2.1\nFBSET_SITE = http://users.telenet.be/geertu/Linux/fbdev\nFBSET_DEPENDENCIES = host-bison host-flex\nFBSET_LICENSE = GPL-2.0\nFBSET_LICENSE_FILES = fbset.c\n\ndefine FBSET_BUILD_CMDS\n\t$(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine FBSET_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/fbset $(TARGET_DIR)/usr/sbin/fbset\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fbterm/0001-fbio.cpp-improxy.cpp-fbterm.cpp-fix-musl-compile.patch",
    "content": "From 1072d60c6c8f1f51feb740527a8a056bfead9318 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 8 Oct 2015 19:53:47 +0200\nSubject: [PATCH] fbio.cpp, improxy.cpp, fbterm.cpp: fix musl compile\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\n- add missing include, fixes:\n\n  fbio.cpp:33:8: error: ‘fd_set’ does not name a type\n   static fd_set fds;\n\n  improxy.cpp:439:3: error: ‘fd_set’ was not declared in this scope\n\n- add missing WAIT_ANY define, fixes:\n\n  fbterm.cpp: In member function ‘void FbTerm::processSignal(u32)’:\n  fbterm.cpp:212:22: error: ‘WAIT_ANY’ was not declared in this scope\n      s32 pid = waitpid(WAIT_ANY, 0, WNOHANG);\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/fbio.cpp    | 1 +\n src/fbterm.cpp  | 4 ++++\n src/improxy.cpp | 1 +\n 3 files changed, 6 insertions(+)\n\ndiff --git a/src/fbio.cpp b/src/fbio.cpp\nindex e5afc44..88c632c 100644\n--- a/src/fbio.cpp\n+++ b/src/fbio.cpp\n@@ -30,6 +30,7 @@\n #define NR_EPOLL_FDS 10\n s32 epollFd;\n #else\n+#include <sys/select.h>\n static fd_set fds;\n static u32 maxfd = 0;\n #endif\ndiff --git a/src/fbterm.cpp b/src/fbterm.cpp\nindex 38d4014..60288e4 100644\n--- a/src/fbterm.cpp\n+++ b/src/fbterm.cpp\n@@ -37,6 +37,10 @@\n #include \"input_key.h\"\n #include \"mouse.h\"\n \n+#ifndef WAIT_ANY\n+#define WAIT_ANY (-1)\n+#endif\n+\n #ifdef HAVE_SIGNALFD\n // <sys/signalfd.h> offered by some systems has bug with g++\n #include \"signalfd.h\"\ndiff --git a/src/improxy.cpp b/src/improxy.cpp\nindex 3d03e66..4e046d2 100644\n--- a/src/improxy.cpp\n+++ b/src/improxy.cpp\n@@ -23,6 +23,7 @@\n #include <stdio.h>\n #include <string.h>\n #include <errno.h>\n+#include <sys/select.h>\n #include <sys/socket.h>\n #include \"improxy.h\"\n #include \"immessage.h\"\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/fbterm/0002-mouse.cpp-fix-musl-compile.patch",
    "content": "From a34dba99aff2994269ee347da67feb7ede9b1a67 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 18 Feb 2016 22:32:38 +0100\nSubject: [PATCH] mouse.cpp: fix musl compile\n\nAdd missing include, fixes:\n\n  mouse.cpp:58:37: error: 'memset' was not declared in this scope\n  mouse.cpp:60:64: error: 'strncpy' was not declared in this scope\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/mouse.cpp | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/mouse.cpp b/src/mouse.cpp\nindex 0435dd9..f173137 100644\n--- a/src/mouse.cpp\n+++ b/src/mouse.cpp\n@@ -27,6 +27,7 @@ DEFINE_INSTANCE(Mouse)\n #include <stddef.h>\n #include <unistd.h>\n #include <stdlib.h>\n+#include <string.h>\n #include <gpm.h>\n #include <sys/ioctl.h>\n #include <sys/types.h>\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/fbterm/0003-C++11-compliance.patch",
    "content": "lib/vterm_states: fix C++11 compliance\n\nIn C++11, narrowing a type is no longer allowed in structure\ninitializers:\n\n    struct foo { u16 u; };\n    foo f[] = { {0}, {-1} };\n\nresults in the gcc-6 to whine out loudly, and fail:\n\n    error: narrowing conversion of ‘-1’ from ‘int’ to ‘u16 {aka short unsigned int}’ inside { } [-Wnarrowing]\n     };\n     ^\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN fbterm-1.7.0.orig/src/lib/vterm_states.cpp fbterm-1.7.0/src/lib/vterm_states.cpp\n--- fbterm-1.7.0.orig/src/lib/vterm_states.cpp\t2010-10-06 06:23:08.000000000 +0200\n+++ fbterm-1.7.0/src/lib/vterm_states.cpp\t2016-08-13 16:54:29.495451127 +0200\n@@ -22,6 +22,7 @@\n #include \"vterm.h\"\n \n #define ADDSAME(len) ((len) << 8)\n+#define ENDSEQ  { ((u16)-1) }\n \n const VTerm::Sequence VTerm::control_sequences[] = {\n \t{ 0,\t0,\tESkeep },\n@@ -39,14 +40,14 @@\n \t{ 0x1B, 0,\tESesc },\n \t{ 0x7F, 0,\tESkeep },\n \t{ 0x9B, 0,\tESsquare },\n-\t{ -1}\n+\tENDSEQ\n };\n \n const VTerm::Sequence VTerm::escape_sequences[] = {\n \t{   0, 0, ESnormal },\n \n \t// ESnormal\n-\t{ -1 },\n+\tENDSEQ,\n \n \t// ESesc\n \t{ '[', &VTerm::clear_param,\tESsquare },\n@@ -65,7 +66,7 @@\n \t{ '8', &VTerm::restore_cursor,\tESnormal },\n \t{ '>', &VTerm::keypad_numeric,\tESnormal },\n \t{ '=', &VTerm::keypad_application,\tESnormal },\n-\t{ -1 },\n+\tENDSEQ,\n \n \t// ESsquare\n \t{ '[', 0,\tESfunckey },\n@@ -104,7 +105,7 @@\n \t{ '`', &VTerm::cursor_position_col,\tESnormal },\n \t{ ']', &VTerm::linux_specific, ESnormal },\n \t{ '}', &VTerm::fbterm_specific, ESnormal },\n-\t{ -1 },\n+\tENDSEQ,\n \n \t// ESnonstd\n \t{ '0' | ADDSAME(9), &VTerm::set_palette,    ESkeep },\n@@ -112,25 +113,25 @@\n \t{ 'a' | ADDSAME(5), &VTerm::set_palette,    ESkeep },\n \t{ 'P', &VTerm::begin_set_palette, ESkeep },\n \t{ 'R', &VTerm::reset_palette, ESnormal },\n-\t{ -1 },\n+\tENDSEQ,\n \n \t// ESpercent\n \t{ '@', &VTerm::clear_utf8,\tESnormal },\n \t{ 'G', &VTerm::set_utf8,\tESnormal },\n \t{ '8', &VTerm::set_utf8,\tESnormal },\n-\t{ -1 },\n+\tENDSEQ,\n \n \t// EScharset\n \t{ '0', &VTerm::set_charset, ESnormal },\n \t{ 'B', &VTerm::set_charset, ESnormal },\n \t{ 'U', &VTerm::set_charset, ESnormal },\n \t{ 'K', &VTerm::set_charset, ESnormal },\n-\t{ -1 },\n+\tENDSEQ,\n \n \t// EShash\n \t{ '8', &VTerm::screen_align,\tESnormal },\n-\t{ -1 },\n+\tENDSEQ,\n \n \t// ESfunckey\n-\t{ -1 },\n+\tENDSEQ,\n };\n"
  },
  {
    "path": "package/fbterm/0004-iconv.patch",
    "content": "Fix building against libiconv\n\nDownloaded from\nhttps://github.com/kyak/openwrt-packages/blob/master/fbterm/patches/001-iconv.patch\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- a/src/lib/io.cpp\n+++ b/src/lib/io.cpp\n@@ -119,10 +119,10 @@ void IoPipe::setCodec(const s8 *up, cons\n \tif (!strcasecmp(up, down)) return;\n \n \tmCodecRead = iconv_open(up, down);\n-\tif (mCodecRead == (void*)-1) mCodecRead = 0;\n+\tif (mCodecRead == (iconv_t)(-1)) mCodecRead = 0;\n \n \tmCodecWrite = iconv_open(down, up);\n-\tif (mCodecWrite == (void*)-1) mCodecWrite = 0;\n+\tif (mCodecWrite == (iconv_t)(-1)) mCodecWrite = 0;\n }\n \n #define BUF_SIZE 10240\n--- a/src/lib/io.h\n+++ b/src/lib/io.h\n@@ -23,6 +23,7 @@\n \n #include \"type.h\"\n #include \"instance.h\"\n+#include <iconv.h>\n \n class IoPipe {\n public:\n@@ -47,7 +48,7 @@ private:\n \tvoid writeIo(s8 *buf, u32 len);\n \n \ts32 mFd;\n-\tvoid *mCodecRead, *mCodecWrite;\n+\ticonv_t mCodecRead, mCodecWrite;\n \ts8 mBufRead[16], mBufWrite[16];\n \tu32 mBufLenRead, mBufLenWrite;\n };\n"
  },
  {
    "path": "package/fbterm/Config.in",
    "content": "config BR2_PACKAGE_FBTERM\n\tbool \"fbterm\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_ENABLE_LOCALE\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_LIBERATION\n\thelp\n\t  fbterm is a fast terminal emulator for Linux with frame buffer\n\t  device or VESA video card.\n\n\t  https://code.google.com/archive/p/fbterm/\n\ncomment \"fbterm needs a toolchain w/ C++, wchar, locale\"\n\tdepends on BR2_USE_MMU\n\tdepends on !(BR2_INSTALL_LIBSTDCPP && BR2_ENABLE_LOCALE && BR2_USE_WCHAR)\n"
  },
  {
    "path": "package/fbterm/fbterm.hash",
    "content": "# From http://code.google.com/p/fbterm/downloads/detail?name=fbterm-1.7.0.tar.gz&can=2&q=\nsha1\tdc7b7ff29212c1551f35bf7a50967454d3b8c67c\tfbterm-1.7.0.tar.gz\n# locally computed\nsha256  b2b961f07e97c4fb78074276da304ea36b85dc299aae5efb79080cedaea3d5ac  COPYING\n"
  },
  {
    "path": "package/fbterm/fbterm.mk",
    "content": "################################################################################\n#\n# fbterm\n#\n################################################################################\n\nFBTERM_VERSION = 1.7.0\nFBTERM_SITE = https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/fbterm\nFBTERM_LICENSE = GPL-2.0+\nFBTERM_LICENSE_FILES = COPYING\nFBTERM_DEPENDENCIES = fontconfig liberation\n\nifeq ($(BR2_PACKAGE_GPM),y)\nFBTERM_DEPENDENCIES += gpm\nFBTERM_CONF_OPTS += --enable-gpm\nelse\nFBTERM_CONF_OPTS += --disable-gpm\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fbtft/Config.in",
    "content": "# Prompt-less option, because this package is not doing anything\n# except downloading the FB TFT sources. The real work is done by a\n# Linux extension.\nconfig BR2_PACKAGE_FBTFT\n\tbool\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  Linux Framebuffer drivers for small TFT LCD display modules,\n\t  e.g. Adafruit PiTFT displays for Raspberry Pi.\n\n\t  This is only the download helper for the kernel patch.\n\n\t  https://github.com/notro/fbtft\n"
  },
  {
    "path": "package/fbtft/fbtft.hash",
    "content": "# locally computed\nsha256  0e81de89fdd7ab810716fc0549e767527f342e829309dee5c2cca1e9d1728770  fbtft-274035404701245e7491c0c6471c5b72ade4d491.tar.gz\nsha256  a9ca80d65a5ef10fe614a6c1e8c8d4d3b96637e8855a96c7cf0fa438526097a7  fbtft-core.c\n"
  },
  {
    "path": "package/fbtft/fbtft.mk",
    "content": "################################################################################\n#\n# fbtft\n#\n################################################################################\n\nFBTFT_VERSION = 274035404701245e7491c0c6471c5b72ade4d491\nFBTFT_SITE = $(call github,notro,fbtft,$(FBTFT_VERSION))\nFBTFT_LICENSE = GPL-2.0\nFBTFT_LICENSE_FILES = fbtft-core.c\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fbv/0002-cross.patch",
    "content": "diff -urpN fbv-1.0b.orig/configure fbv-1.0b/configure\n--- fbv-1.0b.orig/configure\t2004-09-07 13:29:27.000000000 +0200\n+++ fbv-1.0b/configure\t2008-04-24 10:52:37.000000000 +0200\n@@ -80,6 +80,7 @@ while true ; do\n \tesac\n done\n \n+[ -z \"$CC\" ] && CC=cc\n [ -z \"$prefix\" ] && prefix=\"/usr/local\"\n [ -z \"$bindir\" ] && bindir=\"${prefix}/bin\"\n [ -z \"$mandir\" ] && mandir=\"${prefix}/man\"\n@@ -106,12 +107,12 @@ xdir=\"/usr/X11R6\"\n ungif=\"no\"\n echo \"libungif check\" >>./config.log\n echo \"  1st:\" >>./config.log\n-cc 2>>./config.log >>./config.log -o \\$\\$~test \\$\\$~test.c -lungif $libs\n+$CC 2>>./config.log >>./config.log -o \\$\\$~test \\$\\$~test.c -lungif $libs\n if [ -e \\$\\$~test ]; then\n \tlibs=\"-lungif $libs\" ; ungif=\"yes\"\n else\n \techo \"  2nd: -lX11 -L$xdir/lib\" >>./config.log\n-\tcc 2>>./config.log >>./config.log -o \\$\\$~test \\$\\$~test.c -lungif -lX11 -L$xdir/lib $libs\n+\t$CC 2>>./config.log >>./config.log -o \\$\\$~test \\$\\$~test.c -lungif -lX11 -L$xdir/lib $libs\n \tif [ -e \\$\\$~test ]; then\n \tlibs=\"-lungif -lX11 -L$xdir/lib $libs\" ; ungif=\"yes\"\n \tfi\n@@ -124,7 +125,7 @@ echo \"libungif: $ungif\" >> ./config.log\n echo -n \"checking for libjpeg presence... \"\n if [ \"$jpeg\" != \"disabled\" ]; then\n jpeg=\"no\"\n-cc 2>>./config.log >>./config.log -o \\$\\$~test \\$\\$~test.c -ljpeg $libs\n+$CC 2>>./config.log >>./config.log -o \\$\\$~test \\$\\$~test.c -ljpeg $libs\n if [ -e \\$\\$~test ]; then\n \tlibs=\"-ljpeg $libs\" ; jpeg=\"yes\"\n fi\n@@ -135,7 +136,7 @@ echo \"libjpeg: $jpeg\" >> ./config.log\n echo -n \"checking for libpng presence... \"\n if [ \"$png\" != \"disabled\" ]; then\n png=\"no\"\n-cc 2>>./config.log >>./config.log -o \\$\\$~test \\$\\$~test.c -lpng $libs\n+$CC 2>>./config.log >>./config.log -o \\$\\$~test \\$\\$~test.c -lpng $libs\n if [ -e \\$\\$~test ]; then\n \tlibs=\"-lpng $libs\" ; png=\"yes\"\n fi\n"
  },
  {
    "path": "package/fbv/0003-fix-24bpp-support-on-big-endian.patch",
    "content": "diff -upr a/fb_display.c b/fb_display.c\n--- a/fb_display.c\t2007-06-01 16:52:45.000000000 +0200\n+++ b/fb_display.c\t2007-06-01 16:51:43.000000000 +0200\n@@ -307,7 +307,7 @@ void* convertRGB2FB(int fh, unsigned cha\n {\n     unsigned long i;\n     void *fbbuff = NULL;\n-\tu_int8_t  *c_fbbuff;\n+    u_int8_t  *c_fbbuff;\n     u_int16_t *s_fbbuff;\n     u_int32_t *i_fbbuff;\n \n@@ -335,6 +335,16 @@ void* convertRGB2FB(int fh, unsigned cha\n \t    fbbuff = (void *) s_fbbuff;\n \t    break;\n \tcase 24:\n+\t    *cpp = 3;\n+\t    c_fbbuff = (unsigned char *) malloc(count * 3 * sizeof(unsigned char));\n+\t    for(i = 0; i < (3 * count); i += 3) {\n+\t\t/* Big endian framebuffer. */\n+\t\tc_fbbuff[i] = rgbbuff[i+2];\n+\t\tc_fbbuff[i+1] = rgbbuff[i+1];\n+\t\tc_fbbuff[i+2] = rgbbuff[i];\n+\t    }\n+\t    fbbuff = (void *) c_fbbuff;\n+\t    break;\n \tcase 32:\n \t    *cpp = 4;\n \t    i_fbbuff = (unsigned int *) malloc(count * sizeof(unsigned int));\nOnly in build_avr32/fbv-1.0b-modified: .fb_display.c.swp\nBinary files build_avr32/fbv-1.0b/fb_display.o and build_avr32/fbv-1.0b-modified/fb_display.o differ\nBinary files build_avr32/fbv-1.0b/fbv and build_avr32/fbv-1.0b-modified/fbv differ\n"
  },
  {
    "path": "package/fbv/0004-fix-bgr555.patch",
    "content": "[PATCH] fbv: support bgr555 format\n\nSigned-off-by: Josh.Wu <josh.wu@atmel.com>\ndiff -Naur fbv-1.0b-ori/fb_display.c fbv-1.0b/fb_display.c\n--- fbv-1.0b-ori/fb_display.c\t2010-04-02 09:38:15.000000000 +0800\n+++ fbv-1.0b/fb_display.c\t2010-04-01 18:54:15.000000000 +0800\n@@ -297,6 +297,14 @@\n \t ((b >> 3) & 31)        );\n }\n \n+inline static unsigned short make15color_bgr(unsigned char r, unsigned char g, unsigned char b)\n+{\n+    return (\n+\t(((b >> 3) & 31) << 10) |\n+\t(((g >> 3) & 31) << 5)  |\n+\t ((r >> 3) & 31)        );\n+}\n+\n inline static unsigned short make16color(unsigned char r, unsigned char g, unsigned char b)\n {\n     return (\n@@ -313,6 +321,14 @@\n     u_int16_t *s_fbbuff;\n     u_int32_t *i_fbbuff;\n \n+    int is_bgr555 = 0;\n+    struct fb_var_screeninfo var;\n+    getVarScreenInfo(fh, &var);\n+    if(var.red.offset == 0 && \n+       var.green.offset == 5 && \n+       var.blue.offset == 10)\n+\tis_bgr555 = 1;\n+\n     switch(bpp)\n     {\n \tcase 8:\n@@ -325,15 +341,23 @@\n \tcase 15:\n \t    *cpp = 2;\n \t    s_fbbuff = (unsigned short *) malloc(count * sizeof(unsigned short));\n-\t    for(i = 0; i < count ; i++)\n-\t\ts_fbbuff[i] = make15color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);\n+\t    if(is_bgr555)\n+\t    \tfor(i = 0; i < count ; i++)\n+\t\t    s_fbbuff[i] = make15color_bgr(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);\n+\t    else\n+\t    \tfor(i = 0; i < count ; i++)\n+\t\t    s_fbbuff[i] = make15color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);\n \t    fbbuff = (void *) s_fbbuff;\n \t    break;\n \tcase 16:\n \t    *cpp = 2;\n \t    s_fbbuff = (unsigned short *) malloc(count * sizeof(unsigned short));\n-\t    for(i = 0; i < count ; i++)\n-\t\ts_fbbuff[i] = make16color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);\n+\t    if(is_bgr555)\n+\t    \tfor(i = 0; i < count ; i++)\n+\t\t    s_fbbuff[i] = make15color_bgr(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);\n+\t    else\n+\t    \tfor(i = 0; i < count ; i++)\n+\t\t    s_fbbuff[i] = make16color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);\n \t    fbbuff = (void *) s_fbbuff;\n \t    break;\n \tcase 24:\n"
  },
  {
    "path": "package/fbv/0005-giflib.patch",
    "content": "Adjust source code to work with giflib 5.1x\n\nDownloaded patch for gif.c from\nhttps://projects.archlinux.org/svntogit/community.git/plain/trunk/giflib-5.1.patch?h=packages/fbv\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -wbBur fbv-1.0b/gif.c fbv-1.0b.my/gif.c\n--- fbv-1.0b/gif.c\t2003-08-25 00:23:02.000000000 +0400\n+++ fbv-1.0b.my/gif.c\t2014-05-29 18:39:41.337332872 +0400\n@@ -31,10 +31,10 @@\n #include <string.h>\n #define min(a,b) ((a) < (b) ? (a) : (b))\n #define gflush return(FH_ERROR_FILE);\n-#define grflush { DGifCloseFile(gft); return(FH_ERROR_FORMAT); }\n-#define mgrflush { free(lb); free(slb); DGifCloseFile(gft); return(FH_ERROR_FORMAT); }\n+#define grflush { DGifCloseFile(gft, NULL); return(FH_ERROR_FORMAT); }\n+#define mgrflush { free(lb); free(slb); DGifCloseFile(gft, NULL); return(FH_ERROR_FORMAT); }\n #define agflush return(FH_ERROR_FORMAT);\n-#define agrflush { DGifCloseFile(gft); return(FH_ERROR_FORMAT); }\n+#define agrflush { DGifCloseFile(gft, NULL); return(FH_ERROR_FORMAT); }\n \n \n int fh_gif_id(char *name)\n@@ -81,7 +81,7 @@\n     ColorMapObject *cmap;\n     int cmaps;\n \n-    gft=DGifOpenFileName(name);\n+    gft=DGifOpenFileName(name, NULL);\n     if(gft==NULL){printf(\"err5\\n\"); gflush;} //////////\n     do\n     {\n@@ -170,7 +170,7 @@\n \t}\n     }\n     while( rt!= TERMINATE_RECORD_TYPE );\n-    DGifCloseFile(gft);\n+    DGifCloseFile(gft, NULL);\n     return(FH_ERROR_OK);\n }\n \n@@ -184,7 +184,7 @@\n     int extcode;\n     GifRecordType rt;\n \n-    gft=DGifOpenFileName(name);\n+    gft=DGifOpenFileName(name, NULL);\n     if(gft==NULL) gflush;\n     do\n     {\n@@ -197,7 +197,7 @@\n \t\tpx=gft->Image.Width;\n \t\tpy=gft->Image.Height;\n \t\t*x=px; *y=py;\n-\t\tDGifCloseFile(gft);\n+\t\tDGifCloseFile(gft, NULL);\n \t\treturn(FH_ERROR_OK);\n \t\tbreak;\n \t    case EXTENSION_RECORD_TYPE:\n@@ -210,7 +210,7 @@\n \t}  \n     }\n     while( rt!= TERMINATE_RECORD_TYPE );\n-    DGifCloseFile(gft);\n+    DGifCloseFile(gft, NULL);\n     return(FH_ERROR_FORMAT);\n }\n #endif\ndiff -uNr fbv-1.0b.org/configure fbv-1.0b/configure\n--- fbv-1.0b.org/configure\t2004-09-07 13:29:27.000000000 +0200\n+++ fbv-1.0b/configure\t2015-01-29 19:58:30.374599874 +0100\n@@ -106,9 +106,9 @@\n ungif=\"no\"\n echo \"libungif check\" >>./config.log\n echo \"  1st:\" >>./config.log\n-$CC 2>>./config.log >>./config.log -o \\$\\$~test \\$\\$~test.c -lungif $libs\n+$CC 2>>./config.log >>./config.log -o \\$\\$~test \\$\\$~test.c -lgif $libs\n if [ -e \\$\\$~test ]; then\n-\tlibs=\"-lungif $libs\" ; ungif=\"yes\"\n+\tlibs=\"-lgif $libs\" ; ungif=\"yes\"\n else\n \techo \"  2nd: -lX11 -L$xdir/lib\" >>./config.log\n \t$CC 2>>./config.log >>./config.log -o \\$\\$~test \\$\\$~test.c -lungif -lX11 -L$xdir/lib $libs\n"
  },
  {
    "path": "package/fbv/0006-include.patch",
    "content": "diff -urpN fbv-1.0b.orig/fb_display.c fbv-1.0b/fb_display.c\n--- fbv-1.0b.orig/fb_display.c\t2004-09-07 14:09:43.000000000 +0200\n+++ fbv-1.0b/fb_display.c\t2008-04-24 10:48:29.000000000 +0200\n@@ -18,8 +18,6 @@\n     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n */\n \n-#include <linux/fb.h>\n-\n #include <stdio.h>\n #include <stdlib.h>\n #include <sys/types.h>\n@@ -31,6 +29,7 @@\n #include <asm/types.h>\n #include <string.h>\n #include <errno.h>\n+#include <linux/fb.h>\n #include \"config.h\"\n /* Public Use Functions:\n  *\n"
  },
  {
    "path": "package/fbv/0007-libpng15.patch",
    "content": "Support for libpng 1.5+ shamelessly taken from Gentoo.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\n--- a/png.c\n+++ b/png.c\n@@ -69,7 +69,7 @@\n         fclose(fh); return(FH_ERROR_FORMAT);\n     }\n     rp=0;\n-    if (setjmp(png_ptr->jmpbuf))\n+    if (setjmp(png_jmpbuf(png_ptr)))\n     {\n \tpng_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);\n         if(rp) free(rp);\n@@ -161,7 +161,7 @@\n         fclose(fh); return(FH_ERROR_FORMAT);\n     }\n     rp=0;\n-    if (setjmp(png_ptr->jmpbuf))\n+    if (setjmp(png_jmpbuf(png_ptr)))\n     {\n \tpng_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);\n         if(rp) free(rp);\n"
  },
  {
    "path": "package/fbv/Config.in",
    "content": "config BR2_PACKAGE_FBV\n\tbool \"fbv\"\n\thelp\n\t  fbv is a very simple graphic file viewer for the framebuffer\n\t  console, capable of displaying GIF, JPEG, PNG and BMP files\n\t  using libungif, libjpeg and libpng.\n\n\t  http://freshmeat.net/projects/fbv/\n\nif BR2_PACKAGE_FBV\n\nconfig BR2_PACKAGE_FBV_PNG\n\tbool \"PNG support\"\n\tdefault y\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  Enable support for PNG using libpng.\n\nconfig BR2_PACKAGE_FBV_JPEG\n\tbool \"JPEG support\"\n\tdefault y\n\tselect BR2_PACKAGE_JPEG\n\thelp\n\t  Enable support for JPEG using IJG's libjpeg.\n\nconfig BR2_PACKAGE_FBV_GIF\n\tbool \"GIF support\"\n\tdefault y\n\tselect BR2_PACKAGE_GIFLIB\n\thelp\n\t  Enable support for GIF using giflib.\n\nendif # BR2_PACKAGE_FBV\n"
  },
  {
    "path": "package/fbv/fbv.hash",
    "content": "# Locally calculated\nsha256  9b55b9dafd5eb01562060d860e267e309a1876e8ba5ce4d3303484b94129ab3c  fbv-1.0b.tar.gz\nsha256  bf21d97bafcaacb5d6bc3d5502030c340f0e0593614078ab017af91e950083af  COPYING\n"
  },
  {
    "path": "package/fbv/fbv.mk",
    "content": "################################################################################\n#\n# fbv\n#\n################################################################################\n\nFBV_VERSION = 1.0b\nFBV_SITE = http://s-tech.elsat.net.pl/fbv\n\nFBV_LICENSE = GPL-2.0\nFBV_LICENSE_FILES = COPYING\n\n### image format dependencies and configure options\nFBV_DEPENDENCIES = # empty\nFBV_CONFIGURE_OPTS = # empty\nifeq ($(BR2_PACKAGE_FBV_PNG),y)\nFBV_DEPENDENCIES += libpng\n\n# libpng in turn depends on other libraries\nifeq ($(BR2_STATIC_LIBS),y)\nFBV_CONFIGURE_OPTS += \"--libs=`$(PKG_CONFIG_HOST_BINARY) --libs libpng`\"\nendif\n\nelse\nFBV_CONFIGURE_OPTS += --without-libpng\nendif\nifeq ($(BR2_PACKAGE_FBV_JPEG),y)\nFBV_DEPENDENCIES += jpeg\nelse\nFBV_CONFIGURE_OPTS += --without-libjpeg\nendif\nifeq ($(BR2_PACKAGE_FBV_GIF),y)\nFBV_DEPENDENCIES += giflib\nelse\nFBV_CONFIGURE_OPTS += --without-libungif\nendif\n\n#fbv doesn't support cross-compilation\ndefine FBV_CONFIGURE_CMDS\n\t(cd $(FBV_DIR); rm -f config.cache; \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(TARGET_CONFIGURE_ARGS) \\\n\t\t./configure \\\n\t\t--prefix=/usr \\\n\t\t$(FBV_CONFIGURE_OPTS) \\\n\t)\nendef\n\ndefine FBV_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine FBV_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D $(@D)/fbv $(TARGET_DIR)/usr/bin/fbv\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fcgiwrap/0001-use-LIBS-from-configure.patch",
    "content": "Makefile.in: Use LIBS from configure rather than specifying -lfcgi manually.\n\nlibfcgi needs libm and fcgiwrap does not use libtool or pkgconf to\ndetect libfcgi, so we need to add -lm explicitely when using static\nlibs.  Buildroot does this by providing LIBS=-lm to configure when\nneeded.  However fcgiwrap does not use Automake and its Makefile.in\nignores LIBS from configure.  Fix it with this patch.\n\nSigned-off-by: Thomas Claveirole <thomas.claveirole@green-communications.fr>\n\ndiff -ur a/Makefile.in b/Makefile.in\n--- a/Makefile.in\t2013-02-03 14:25:17.000000000 +0100\n+++ b/Makefile.in\t2015-05-29 16:33:23.895280138 +0200\n@@ -16,7 +16,7 @@\n \tinstall -m 644 systemd/fcgiwrap.service $(DESTDIR)@systemdsystemunitdir@\n endif\n\n-LDLIBS = -lfcgi @systemd_LIBS@\n+LDLIBS = @LIBS@ @systemd_LIBS@\n CFLAGS = @AM_CFLAGS@\n\n fcgiwrap: fcgiwrap.c\n"
  },
  {
    "path": "package/fcgiwrap/0002-link-with-libsystemd-instead-of-libsystemd-daemon.patch",
    "content": "configure.ac: Check for libsystemd, not libsystemd-daemon.\n\nNewer versions of systemd do not provide libsystemd-daemon anymore.\nTherefore, use libsystemd instead.\n\nSigned-off-by: Thomas Claveirole <thomas.claveirole@green-communications.fr>\n\ndiff --git a/configure.ac b/configure.ac\nindex bb3674e..2b02ef4 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -28,7 +28,7 @@ AC_ARG_WITH([systemd],\n   [], [with_systemd=check])\n have_systemd=no\n if test \"x$with_systemd\" != \"xno\"; then\n-  PKG_CHECK_MODULES(systemd, [libsystemd-daemon],\n+  PKG_CHECK_MODULES(systemd, [libsystemd],\n     [AC_DEFINE(HAVE_SYSTEMD, 1, [Define if systemd is available])\n     have_systemd=yes],\n   have_systemd=no)\n"
  },
  {
    "path": "package/fcgiwrap/Config.in",
    "content": "config BR2_PACKAGE_FCGIWRAP\n\tbool \"fcgiwrap\"\n\tdepends on BR2_USE_MMU # libfcgi\n\tselect BR2_PACKAGE_LIBFCGI\n\thelp\n\t  fcgiwrap is a simple server for running CGI applications\n\t  over FastCGI. It hopes to provide clean CGI support to Nginx\n\t  (and other web servers that may need it).\n\n\t  https://github.com/gnosek/fcgiwrap\n"
  },
  {
    "path": "package/fcgiwrap/fcgiwrap.hash",
    "content": "# Locally calculated\nsha256  c72f2933669ebd21605975c5a11f26b9739e32e4f9d324fb9e1a1925e9c2ae88  fcgiwrap-99c942c90063c73734e56bacaa65f947772d9186.tar.gz\nsha256  1504c301f6d417f2626085337e5c3bb3dc0282265089396ab36bfe1942feef1c  COPYING\n"
  },
  {
    "path": "package/fcgiwrap/fcgiwrap.mk",
    "content": "################################################################################\n#\n# fcgiwrap\n#\n################################################################################\n\nFCGIWRAP_VERSION = 99c942c90063c73734e56bacaa65f947772d9186\nFCGIWRAP_SITE = $(call github,gnosek,fcgiwrap,$(FCGIWRAP_VERSION))\nFCGIWRAP_DEPENDENCIES = host-pkgconf libfcgi\nFCGIWRAP_LICENSE = MIT\nFCGIWRAP_LICENSE_FILES = COPYING\nFCGIWRAP_AUTORECONF = YES\nFCGIWRAP_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -Wno-error\"\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nFCGIWRAP_DEPENDENCIES += systemd\nFCGIWRAP_CONF_OPTS += --with-systemd\nelse\nFCGIWRAP_CONF_OPTS += --without-systemd\nendif\n\n# libfcgi needs libm and fcgiwrap does not use libtool or pkgconf to\n# detect libfcgi, so we need to add -lm explicitely when using static\n# libs.\nifeq ($(BR2_STATIC_LIBS),y)\nFCGIWRAP_CONF_OPTS += LIBS=-lm\nendif\n\n# fcgiwrap uses Autoconf, but not Automake, so we need to provide\n# these to make.\nFCGIWRAP_MAKE_ENV = $(TARGET_CONFIGURE_OPTS)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fconfig/Config.in",
    "content": "config BR2_PACKAGE_FCONFIG\n\tbool \"fconfig\"\n\thelp\n\t  fconfig - get/set RedBoot configuration parameters from Linux.\n\n\t  http://andrzejekiert.ovh.org/software.html.en\n"
  },
  {
    "path": "package/fconfig/fconfig.hash",
    "content": "# Locally computed\nsha256  4ff0e8f07e35e46b705c0dbe9d9544ede01ea092a69e3f7db03e55a3f2bb8eb7  fconfig-20080329.tar.gz\nsha256  e698a9ea4d6dab0a15d3d6fd354b97b820629244f946529cc7f42b2b8e8f16d0  fconfig.c\n"
  },
  {
    "path": "package/fconfig/fconfig.mk",
    "content": "################################################################################\n#\n# fconfig\n#\n################################################################################\n\nFCONFIG_VERSION = 20080329\n# Real upstream location has been disabled\n# FCONFIG_SITE = http://andrzejekiert.ovh.org/software/fconfig\nFCONFIG_SITE = http://sources.buildroot.net\nFCONFIG_LICENSE = GPL-2.0+\nFCONFIG_LICENSE_FILES = fconfig.c\n\ndefine FCONFIG_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine FCONFIG_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/fconfig $(TARGET_DIR)/sbin/fconfig\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fdk-aac/Config.in",
    "content": "# These are the architectures supported by FDK AAC\nconfig BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_arm || BR2_armeb\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_powerpc\n\tdefault y if BR2_sh\n\nconfig BR2_PACKAGE_FDK_AAC\n\tbool \"fdk-aac\"\n\tdepends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  The Fraunhofer FDK AAC Codec Library for Android (\"FDK AAC\n\t  Codec\") is software that implements the MPEG Advanced Audio\n\t  Coding (\"AAC\") encoding and decoding scheme for digital audio\n\n\t  http://sourceforge.net/projects/opencore-amr/files/fdk-aac/\n\ncomment \"fdk-aac needs a toolchain w/ C++\"\n\tdepends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/fdk-aac/fdk-aac.hash",
    "content": "# From https://sourceforge.net/projects/opencore-amr/files/fdk-aac/\nsha1  579b34e8174b4feb21a9c598695f5ff4a7ceef8c  fdk-aac-2.0.2.tar.gz\nmd5  b41222194b31f570b3132bd622a9aef6  fdk-aac-2.0.2.tar.gz\n# Locally computed:\nsha256  c9e8630cf9d433f3cead74906a1520d2223f89bcd3fa9254861017440b8eb22f  fdk-aac-2.0.2.tar.gz\nsha256  95ec80da40b4af12ad4c4f3158c9cfb80f2479f3246e4260cb600827cc8c7836  NOTICE\n"
  },
  {
    "path": "package/fdk-aac/fdk-aac.mk",
    "content": "################################################################################\n#\n# fdk-aac\n#\n################################################################################\n\nFDK_AAC_VERSION = 2.0.2\nFDK_AAC_SITE = http://downloads.sourceforge.net/project/opencore-amr/fdk-aac\nFDK_AAC_LICENSE = fdk-aac license\nFDK_AAC_LICENSE_FILES = NOTICE\n\nFDK_AAC_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/feh/Config.in",
    "content": "config BR2_PACKAGE_FEH\n\tbool \"feh\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_IMLIB2\n\tselect BR2_PACKAGE_IMLIB2_PNG\n\tselect BR2_PACKAGE_IMLIB2_JPEG\n\tselect BR2_PACKAGE_IMLIB2_X\n\thelp\n\t  feh is an X11 image viewer aimed mostly at console users.\n\n\t  http://feh.finalrewind.org/\n"
  },
  {
    "path": "package/feh/feh.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256 57ab1ca61f57c96595878069f550d36f518530f88fa31b74cc39cd739f9258b6  feh-3.7.1.tar.bz2\nsha256 2c3a31327dc3cc3331aa6e759d378e4f66d0ece7174a0d5aa137f3cba4bf0509  COPYING\n"
  },
  {
    "path": "package/feh/feh.mk",
    "content": "################################################################################\n#\n# feh\n#\n################################################################################\n\nFEH_VERSION = 3.7.1\nFEH_SOURCE = feh-$(FEH_VERSION).tar.bz2\nFEH_SITE = http://feh.finalrewind.org\nFEH_DEPENDENCIES = imlib2 libpng xlib_libXt\nFEH_LICENSE = MIT\nFEH_LICENSE_FILES = COPYING\nFEH_CPE_ID_VENDOR = feh_project\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nFEH_DEPENDENCIES += libcurl\nFEH_MAKE_OPTS += curl=1\nelse\nFEH_MAKE_OPTS += curl=0\nendif\n\nifeq ($(BR2_PACKAGE_LIBEXIF),y)\nFEH_DEPENDENCIES += libexif\nFEH_MAKE_OPTS += exif=1\nelse\nFEH_MAKE_OPTS += exif=0\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nFEH_DEPENDENCIES += xlib_libXinerama\nFEH_MAKE_OPTS += xinerama=1\nelse\nFEH_MAKE_OPTS += xinerama=0\nendif\n\ndefine FEH_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) CFLAGS=\"$(TARGET_CFLAGS) -std=gnu99\" \\\n\t\t$(MAKE) $(FEH_MAKE_OPTS) -C $(@D) all\nendef\n\ndefine FEH_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(FEH_MAKE_OPTS) PREFIX=/usr \\\n\t\tDESTDIR=$(TARGET_DIR) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fetchmail/Config.in",
    "content": "config BR2_PACKAGE_FETCHMAIL\n\tbool \"fetchmail\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_CA_CERTIFICATES\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Fetchmail - the mail-retrieval daemon\n\t  Client daemon to move mail from POP and IMAP to your local\n\t  computer\n\n\t  http://www.fetchmail.info/\n"
  },
  {
    "path": "package/fetchmail/fetchmail.hash",
    "content": "# From https://sourceforge.net/p/fetchmail/mailman/message/37376434/\nsha256  5f7a5e13731431134a2ca535bbced7adc666d3aeb93169a0830945d91f492300  fetchmail-6.4.23.tar.xz\n# Locally computed:\nsha256  001d1b8d111a83e3bab8b4d511ea4767d37d3bd0583560fccece630df1ba8f3c  COPYING\n"
  },
  {
    "path": "package/fetchmail/fetchmail.mk",
    "content": "################################################################################\n#\n# fetchmail\n#\n################################################################################\n\nFETCHMAIL_VERSION_MAJOR = 6.4\nFETCHMAIL_VERSION = $(FETCHMAIL_VERSION_MAJOR).23\nFETCHMAIL_SOURCE = fetchmail-$(FETCHMAIL_VERSION).tar.xz\nFETCHMAIL_SITE = http://downloads.sourceforge.net/project/fetchmail/branch_$(FETCHMAIL_VERSION_MAJOR)\nFETCHMAIL_LICENSE = GPL-2.0; some exceptions are mentioned in COPYING\nFETCHMAIL_LICENSE_FILES = COPYING\nFETCHMAIL_CPE_ID_VENDOR = fetchmail\nFETCHMAIL_SELINUX_MODULES = fetchmail mta\n\nFETCHMAIL_CONF_OPTS = \\\n\t--with-ssl=$(STAGING_DIR)/usr\n\nFETCHMAIL_DEPENDENCIES = \\\n\tca-certificates \\\n\thost-pkgconf \\\n\topenssl \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ffmpeg/0001-swscale-x86-yuv2rgb-Fix-build-without-SSSE3.patch",
    "content": "From bf8eae2d30a205bb76ac625e04c0351106981b9e Mon Sep 17 00:00:00 2001\nFrom: Parker Ernest <@>\nDate: Sun, 23 Feb 2020 13:22:42 +0100\nSubject: [PATCH] swscale/x86/yuv2rgb: Fix build without SSSE3\n\ncommit fc6a5883d6af8cae0e96af84dda0ad74b360a084 breaks build on\nx86_64 CPUs which do not have SSSE3, e.g. AMD Phenom-II\n\nSigned-off-by: Michael Niedermayer <michael@niedermayer.cc>\n[bernd.kuhls@t-online.de:\n  - retrieved from upstream patchwork:\n    https://patchwork.ffmpeg.org/project/ffmpeg/patch/20200223122256.23402-1-michael@niedermayer.cc/\n]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[yann.morin.1998@free.fr: fix reference top patchwork and SoB order]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n libswscale/x86/yuv2rgb.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/libswscale/x86/yuv2rgb.c b/libswscale/x86/yuv2rgb.c\nindex c12e88cbb5..4791e5b93a 100644\n--- a/libswscale/x86/yuv2rgb.c\n+++ b/libswscale/x86/yuv2rgb.c\n@@ -83,6 +83,7 @@ av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c)\n #if HAVE_X86ASM\n     int cpu_flags = av_get_cpu_flags();\n \n+#if HAVE_SSSE3\n     if (EXTERNAL_SSSE3(cpu_flags)) {\n         switch (c->dstFormat) {\n         case AV_PIX_FMT_RGB32:\n@@ -111,6 +112,7 @@ av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c)\n             return yuv420_rgb15_ssse3;\n         }\n     }\n+#endif\n \n     if (EXTERNAL_MMXEXT(cpu_flags)) {\n         switch (c->dstFormat) {\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/ffmpeg/0002-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch",
    "content": "From 2c6b3f357331e203ad87214984661c40704aceb7 Mon Sep 17 00:00:00 2001\nFrom: Rainer Hochecker <fernetmenta@online.de>\nDate: Sat, 26 Jan 2019 19:48:35 +0100\nSubject: [PATCH] avcodec/vaapi_h264: skip decode if pic has no slices\n\nThis fixes / workarounds https://bugs.freedesktop.org/show_bug.cgi?id=105368.\nIt was hit frequently when watching h264 channels received via DVB-X.\nCorresponding kodi bug: https://github.com/xbmc/xbmc/issues/15704\n\nDownloaded from Kodi ffmpeg repo:\nhttps://github.com/xbmc/FFmpeg/commit/2c6b3f357331e203ad87214984661c40704aceb7\n\nPatch was sent upstream:\nhttp://ffmpeg.org/pipermail/ffmpeg-devel/2019-March/240863.html\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n libavcodec/vaapi_h264.c | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c\nindex dd2a6571604..e521a05c4ff 100644\n--- a/libavcodec/vaapi_h264.c\n+++ b/libavcodec/vaapi_h264.c\n@@ -314,6 +314,11 @@ static int vaapi_h264_end_frame(AVCodecContext *avctx)\n     H264SliceContext *sl = &h->slice_ctx[0];\n     int ret;\n \n+    if (pic->nb_slices == 0) {\n+        ret = AVERROR_INVALIDDATA;\n+        goto finish;\n+    }\n+\n     ret = ff_vaapi_decode_issue(avctx, pic);\n     if (ret < 0)\n         goto finish;\n"
  },
  {
    "path": "package/ffmpeg/0003-libavutil-Fix-mips-build.patch",
    "content": "From 6e8daf0d502a2a822f1f08f42368d7d676dc1a9e Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sun, 6 Jun 2021 08:54:53 +0200\nSubject: [PATCH] libavutil: Fix mips build\n\nCheck for sys/auxv.h because not all toolchains contain this header.\n\nFixes https://trac.ffmpeg.org/ticket/9138\n\nPatch sent upstream:\nhttp://ffmpeg.org/pipermail/ffmpeg-devel/2021-June/281272.html\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n configure            | 2 ++\n libavutil/mips/cpu.c | 6 +++---\n 2 files changed, 5 insertions(+), 3 deletions(-)\n\ndiff --git a/configure b/configure\nindex 6bfd98b384..773a7d516c 100755\n--- a/configure\n+++ b/configure\n@@ -2161,6 +2161,7 @@ HEADERS_LIST=\"\n     opencv2_core_core_c_h\n     OpenGL_gl3_h\n     poll_h\n+    sys_auxv_h\n     sys_param_h\n     sys_resource_h\n     sys_select_h\n@@ -6218,6 +6219,7 @@ check_func_headers VideoToolbox/VTCompressionSession.h VTCompressionSessionPrepa\n check_headers windows.h\n check_headers X11/extensions/XvMClib.h\n check_headers asm/types.h\n+check_headers sys/auxv.h\n \n # it seems there are versions of clang in some distros that try to use the\n # gcc headers, which explodes for stdatomic\ndiff --git a/libavutil/mips/cpu.c b/libavutil/mips/cpu.c\nindex 59619d54de..19196de50b 100644\n--- a/libavutil/mips/cpu.c\n+++ b/libavutil/mips/cpu.c\n@@ -19,7 +19,7 @@\n #include \"libavutil/cpu.h\"\n #include \"libavutil/cpu_internal.h\"\n #include \"config.h\"\n-#if defined __linux__ || defined __ANDROID__\n+#if (defined __linux__ || defined __ANDROID__) && HAVE_SYS_AUXV_H\n #include <stdint.h>\n #include <stdio.h>\n #include <string.h>\n@@ -28,7 +28,7 @@\n #include \"libavutil/avstring.h\"\n #endif\n \n-#if defined __linux__ || defined __ANDROID__\n+#if (defined __linux__ || defined __ANDROID__) && HAVE_SYS_AUXV_H\n \n #define HWCAP_LOONGSON_CPUCFG (1 << 14)\n \n@@ -105,7 +105,7 @@ static int cpu_flags_cpuinfo(void)\n \n int ff_get_cpu_flags_mips(void)\n {\n-#if defined __linux__ || defined __ANDROID__\n+#if (defined __linux__ || defined __ANDROID__) && HAVE_SYS_AUXV_H\n     if (cpucfg_available())\n         return cpu_flags_cpucfg();\n     else\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/ffmpeg/0004-configure-add-extralibs-to-extralibs_xxx.patch",
    "content": "From 0c288853630b7b4e004774c39945d4a804afcfa8 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 6 Aug 2021 09:17:20 +0200\nSubject: [PATCH] configure: add extralibs to extralibs_xxx\n\nAdd extralibs to extralibs_xxx (e.g. extralibs_avformat) to allow\napplications such as motion to retrieve ffmpeg dependencies such as\n-latomic through pkg-config\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not upstreamable]\n---\n configure | 18 +++++++++---------\n 1 file changed, 9 insertions(+), 9 deletions(-)\n\ndiff --git a/configure b/configure\nindex 0bb3a7cf2b..3bda99e415 100755\n--- a/configure\n+++ b/configure\n@@ -7602,15 +7602,15 @@ rpath=$(enabled rpath && echo \"-Wl,-rpath,\\${libdir}\")\n source_path=${source_path}\n LIBPREF=${LIBPREF}\n LIBSUF=${LIBSUF}\n-extralibs_avutil=\"$avutil_extralibs\"\n-extralibs_avcodec=\"$avcodec_extralibs\"\n-extralibs_avformat=\"$avformat_extralibs\"\n-extralibs_avdevice=\"$avdevice_extralibs\"\n-extralibs_avfilter=\"$avfilter_extralibs\"\n-extralibs_avresample=\"$avresample_extralibs\"\n-extralibs_postproc=\"$postproc_extralibs\"\n-extralibs_swscale=\"$swscale_extralibs\"\n-extralibs_swresample=\"$swresample_extralibs\"\n+extralibs_avutil=\"$avutil_extralibs $extralibs\"\n+extralibs_avcodec=\"$avcodec_extralibs $extralibs\"\n+extralibs_avformat=\"$avformat_extralibs $extralibs\"\n+extralibs_avdevice=\"$avdevice_extralibs $extralibs\"\n+extralibs_avfilter=\"$avfilter_extralibs $extralibs\"\n+extralibs_avresample=\"$avresample_extralibs $extralibs\"\n+extralibs_postproc=\"$postproc_extralibs $extralibs\"\n+extralibs_swscale=\"$swscale_extralibs $extralibs\"\n+extralibs_swresample=\"$swresample_extralibs $extralibs\"\n EOF\n \n for lib in $LIBRARY_LIST; do\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/ffmpeg/Config.in",
    "content": "config BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\t# fenv.h lacks FE_INVALID, FE_OVERFLOW & FE_UNDERFLOW on nios2\n\tdepends on !BR2_nios2\n\t# No support for ARMv7-M in the ARM assembly logic\n\tdepends on !BR2_ARM_CPU_ARMV7M\n\t# m68k coldfire causes a build failure, because the check for\n\t# atomics (atomic_store) succeeds, which causes ffmpeg to\n\t# think atomic intrinsics are available, while they are\n\t# not. See https://patchwork.ozlabs.org/patch/756664/ and\n\t# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68467 for more\n\t# details.\n\tdepends on !BR2_m68k_cf\n\t# assertion fail in binutils\n\tdepends on !(BR2_or1k && !BR2_TOOLCHAIN_GCC_AT_LEAST_9)\n\nmenuconfig BR2_PACKAGE_FFMPEG\n\tbool \"ffmpeg\"\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\thelp\n\t  FFmpeg is a complete, cross-platform solution to record,\n\t  convert and stream audio and video.\n\n\t  http://www.ffmpeg.org\n\nif BR2_PACKAGE_FFMPEG\n\nconfig BR2_PACKAGE_FFMPEG_GPL\n\tbool \"Enable GPL code\"\n\thelp\n\t  allow use of GPL code, the resulting libs and binaries will\n\t  be under GPL\n\nconfig BR2_PACKAGE_FFMPEG_NONFREE\n\tbool \"Enable nonfree code\"\n\thelp\n\t  allow use of nonfree code, the resulting libs and binaries\n\t  will be unredistributable\n\nconfig BR2_PACKAGE_FFMPEG_FFMPEG\n\tbool \"Build ffmpeg (the command line application)\"\n\tdefault y\n\thelp\n\t  FFmpeg is a very fast video and audio converter.\n\t  It can also grab from a live audio/video source.\n\n\t  It is not needed if you want to link the FFmpeg libraries\n\t  to your application.\n\nconfig BR2_PACKAGE_FFMPEG_FFPLAY\n\tbool \"Build ffplay\"\n\tdepends on !BR2_STATIC_LIBS # sdl2\n\tselect BR2_PACKAGE_FFMPEG_SWSCALE\n\tselect BR2_PACKAGE_SDL2\n\thelp\n\t  FFplay is a very simple and portable media player using the\n\t  FFmpeg libraries and the SDL library.\n\t  It is mostly used as a testbed for the various FFmpeg APIs.\n\ncomment \"ffplay needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_FFMPEG_FFPROBE\n\tbool \"Build ffprobe\"\n\thelp\n\t  FFprobe is a utility to determine the audio and video\n\t  characteristics of a container file.\n\nconfig BR2_PACKAGE_FFMPEG_XCBGRAB\n\tbool \"Build X11 screen grabbing\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_LIBXCB\n\thelp\n\t  X11 screen grabbing using libxcb.\n\nconfig BR2_PACKAGE_FFMPEG_AVRESAMPLE\n\tbool \"Build libavresample\"\n\thelp\n\t  Avresample is a audio conversion library for compatibility.\n\nconfig BR2_PACKAGE_FFMPEG_POSTPROC\n\tbool \"Build libpostproc\"\n\tdepends on BR2_PACKAGE_FFMPEG_GPL\n\thelp\n\t  Postproc is a library of video postprocessing routines.\n\nconfig BR2_PACKAGE_FFMPEG_SWSCALE\n\tbool \"Build libswscale\"\n\thelp\n\t  Swscale is a library of video scaling routines.\n\nconfig BR2_PACKAGE_FFMPEG_ENCODERS\n\tstring \"Enabled encoders\"\n\tdefault \"all\"\n\thelp\n\t  Space-separated list of encoders to build in FFmpeg,\n\t  or \"all\" to build all of them.\n\n\t  Run ./configure --list-encoders in the ffmpeg sources\n\t  directory to know the available options.\n\nconfig BR2_PACKAGE_FFMPEG_DECODERS\n\tstring \"Enabled decoders\"\n\tdefault \"all\"\n\thelp\n\t  Space-separated list of decoders to build in FFmpeg,\n\t  or \"all\" to build all of them.\n\n\t  Run ./configure --list-decoders in the ffmpeg sources\n\t  directory to know the available options.\n\nconfig BR2_PACKAGE_FFMPEG_MUXERS\n\tstring \"Enabled muxers\"\n\tdefault \"all\"\n\thelp\n\t  Space-separated list of muxers to build in FFmpeg,\n\t  or \"all\" to build all of them.\n\n\t  Run ./configure --list-muxers in the ffmpeg sources\n\t  directory to know the available options.\n\nconfig BR2_PACKAGE_FFMPEG_DEMUXERS\n\tstring \"Enabled demuxers\"\n\tdefault \"all\"\n\thelp\n\t  Space-separated list of demuxers to build in FFmpeg,\n\t  or \"all\" to build all of them.\n\n\t  Run ./configure --list-demuxers in the ffmpeg sources\n\t  directory to know the available options.\n\nconfig BR2_PACKAGE_FFMPEG_PARSERS\n\tstring \"Enabled parsers\"\n\tdefault \"all\"\n\thelp\n\t  Space-separated list of parsers to build in FFmpeg,\n\t  or \"all\" to build all of them.\n\n\t  Run ./configure --list-parsers in the ffmpeg sources\n\t  directory to know the available options.\n\nconfig BR2_PACKAGE_FFMPEG_BSFS\n\tstring \"Enabled bitstreams\"\n\tdefault \"all\"\n\thelp\n\t  Space-separated list of bitstream filters to build in FFmpeg,\n\t  or \"all\" to build all of them.\n\n\t  Run ./configure --list-bsfs in the ffmpeg sources\n\t  directory to know the available options.\n\nconfig BR2_PACKAGE_FFMPEG_PROTOCOLS\n\tstring \"Enabled protocols\"\n\tdefault \"all\"\n\thelp\n\t  Space-separated list of protocols to build in FFmpeg,\n\t  or \"all\" to build all of them.\n\n\t  Run ./configure --list-protocols in the ffmpeg sources\n\t  directory to know the available options.\n\nconfig BR2_PACKAGE_FFMPEG_FILTERS\n\tstring \"Enabled filters\"\n\tdefault \"all\"\n\thelp\n\t  Space-separated list of filters to build in FFmpeg,\n\t  or \"all\" to build all of them.\n\n\t  Run ./configure --list-filters in the ffmpeg sources\n\t  directory to know the available options.\n\nconfig BR2_PACKAGE_FFMPEG_INDEVS\n\tbool \"Enable input devices\"\n\tdefault y\n\nconfig BR2_PACKAGE_FFMPEG_OUTDEVS\n\tbool \"Enable output devices\"\n\tdefault y\n\nconfig BR2_PACKAGE_FFMPEG_EXTRACONF\n\tstring \"Additional parameters for ./configure\"\n\tdefault \"\"\n\thelp\n\t  Extra parameters that will be appended to FFmpeg's\n\t  ./configure commandline.\n\nendif\n"
  },
  {
    "path": "package/ffmpeg/ffmpeg.hash",
    "content": "# Locally calculated\nsha256  eadbad9e9ab30b25f5520fbfde99fae4a92a1ae3c0257a8d68569a4651e30e02  ffmpeg-4.4.1.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING.GPLv2\nsha256  b634ab5640e258563c536e658cad87080553df6f34f62269a21d554844e58bfe  COPYING.LGPLv2.1\nsha256  cb48bf09a11f5fb576cddb0431c8f5ed0a60157a9ec942adffc13907cbe083f2  LICENSE.md\n"
  },
  {
    "path": "package/ffmpeg/ffmpeg.mk",
    "content": "################################################################################\n#\n# ffmpeg\n#\n################################################################################\n\nFFMPEG_VERSION = 4.4.1\nFFMPEG_SOURCE = ffmpeg-$(FFMPEG_VERSION).tar.xz\nFFMPEG_SITE = http://ffmpeg.org/releases\nFFMPEG_INSTALL_STAGING = YES\n\nFFMPEG_LICENSE = LGPL-2.1+, libjpeg license\nFFMPEG_LICENSE_FILES = LICENSE.md COPYING.LGPLv2.1\nifeq ($(BR2_PACKAGE_FFMPEG_GPL),y)\nFFMPEG_LICENSE += and GPL-2.0+\nFFMPEG_LICENSE_FILES += COPYING.GPLv2\nendif\n\nFFMPEG_CPE_ID_VENDOR = ffmpeg\n\nFFMPEG_CONF_OPTS = \\\n\t--prefix=/usr \\\n\t--enable-avfilter \\\n\t--disable-version3 \\\n\t--enable-logging \\\n\t--enable-optimizations \\\n\t--disable-extra-warnings \\\n\t--enable-avdevice \\\n\t--enable-avcodec \\\n\t--enable-avformat \\\n\t--enable-network \\\n\t--disable-gray \\\n\t--enable-swscale-alpha \\\n\t--disable-small \\\n\t--enable-dct \\\n\t--enable-fft \\\n\t--enable-mdct \\\n\t--enable-rdft \\\n\t--disable-crystalhd \\\n\t--disable-dxva2 \\\n\t--enable-runtime-cpudetect \\\n\t--disable-hardcoded-tables \\\n\t--disable-mipsdsp \\\n\t--disable-mipsdspr2 \\\n\t--disable-msa \\\n\t--enable-hwaccels \\\n\t--disable-cuda \\\n\t--disable-cuvid \\\n\t--disable-nvenc \\\n\t--disable-avisynth \\\n\t--disable-frei0r \\\n\t--disable-libopencore-amrnb \\\n\t--disable-libopencore-amrwb \\\n\t--disable-libdc1394 \\\n\t--disable-libgsm \\\n\t--disable-libilbc \\\n\t--disable-libvo-amrwbenc \\\n\t--disable-symver \\\n\t--disable-doc\n\nFFMPEG_DEPENDENCIES += host-pkgconf\n\nifeq ($(BR2_PACKAGE_FFMPEG_GPL),y)\nFFMPEG_CONF_OPTS += --enable-gpl\nelse\nFFMPEG_CONF_OPTS += --disable-gpl\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_NONFREE),y)\nFFMPEG_CONF_OPTS += --enable-nonfree\nelse\nFFMPEG_CONF_OPTS += --disable-nonfree\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_FFMPEG),y)\nFFMPEG_CONF_OPTS += --enable-ffmpeg\nelse\nFFMPEG_CONF_OPTS += --disable-ffmpeg\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_FFPLAY),y)\nFFMPEG_DEPENDENCIES += sdl2\nFFMPEG_CONF_OPTS += --enable-ffplay\nFFMPEG_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl2-config\nelse\nFFMPEG_CONF_OPTS += --disable-ffplay\nendif\n\nifeq ($(BR2_PACKAGE_LIBV4L),y)\nFFMPEG_DEPENDENCIES += libv4l\nFFMPEG_CONF_OPTS += --enable-libv4l2\nelse\nFFMPEG_CONF_OPTS += --disable-libv4l2\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_AVRESAMPLE),y)\nFFMPEG_CONF_OPTS += --enable-avresample\nelse\nFFMPEG_CONF_OPTS += --disable-avresample\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_FFPROBE),y)\nFFMPEG_CONF_OPTS += --enable-ffprobe\nelse\nFFMPEG_CONF_OPTS += --disable-ffprobe\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_XCBGRAB),y)\nFFMPEG_CONF_OPTS += \\\n\t--enable-libxcb \\\n\t--enable-libxcb-shape \\\n\t--enable-libxcb-shm \\\n\t--enable-libxcb-xfixes\nFFMPEG_DEPENDENCIES += libxcb\nelse\nFFMPEG_CONF_OPTS += --disable-libxcb\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y)\nFFMPEG_CONF_OPTS += --enable-postproc\nelse\nFFMPEG_CONF_OPTS += --disable-postproc\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y)\nFFMPEG_CONF_OPTS += --enable-swscale\nelse\nFFMPEG_CONF_OPTS += --disable-swscale\nendif\n\nifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),all)\nFFMPEG_CONF_OPTS += --disable-encoders \\\n\t$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),--enable-encoder=$(x))\nendif\n\nifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),all)\nFFMPEG_CONF_OPTS += --disable-decoders \\\n\t$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),--enable-decoder=$(x))\nendif\n\nifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),all)\nFFMPEG_CONF_OPTS += --disable-muxers \\\n\t$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),--enable-muxer=$(x))\nendif\n\nifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),all)\nFFMPEG_CONF_OPTS += --disable-demuxers \\\n\t$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),--enable-demuxer=$(x))\nendif\n\nifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),all)\nFFMPEG_CONF_OPTS += --disable-parsers \\\n\t$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),--enable-parser=$(x))\nendif\n\nifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),all)\nFFMPEG_CONF_OPTS += --disable-bsfs \\\n\t$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),--enable-bsf=$(x))\nendif\n\nifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),all)\nFFMPEG_CONF_OPTS += --disable-protocols \\\n\t$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),--enable-protocol=$(x))\nendif\n\nifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),all)\nFFMPEG_CONF_OPTS += --disable-filters \\\n\t$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),--enable-filter=$(x))\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_INDEVS),y)\nFFMPEG_CONF_OPTS += --enable-indevs\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nFFMPEG_CONF_OPTS += --enable-alsa\nFFMPEG_DEPENDENCIES += alsa-lib\nelse\nFFMPEG_CONF_OPTS += --disable-alsa\nendif\nelse\nFFMPEG_CONF_OPTS += --disable-indevs\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_OUTDEVS),y)\nFFMPEG_CONF_OPTS += --enable-outdevs\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nFFMPEG_DEPENDENCIES += alsa-lib\nendif\nelse\nFFMPEG_CONF_OPTS += --disable-outdevs\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nFFMPEG_CONF_OPTS += --enable-pthreads\nelse\nFFMPEG_CONF_OPTS += --disable-pthreads\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nFFMPEG_CONF_OPTS += --enable-zlib\nFFMPEG_DEPENDENCIES += zlib\nelse\nFFMPEG_CONF_OPTS += --disable-zlib\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nFFMPEG_CONF_OPTS += --enable-bzlib\nFFMPEG_DEPENDENCIES += bzip2\nelse\nFFMPEG_CONF_OPTS += --disable-bzlib\nendif\n\nifeq ($(BR2_PACKAGE_FDK_AAC)$(BR2_PACKAGE_FFMPEG_NONFREE),yy)\nFFMPEG_CONF_OPTS += --enable-libfdk-aac\nFFMPEG_DEPENDENCIES += fdk-aac\nelse\nFFMPEG_CONF_OPTS += --disable-libfdk-aac\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_GPL)$(BR2_PACKAGE_LIBCDIO_PARANOIA),yy)\nFFMPEG_CONF_OPTS += --enable-libcdio\nFFMPEG_DEPENDENCIES += libcdio-paranoia\nelse\nFFMPEG_CONF_OPTS += --disable-libcdio\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nFFMPEG_CONF_OPTS += --enable-gnutls --disable-openssl\nFFMPEG_DEPENDENCIES += gnutls\nelse\nFFMPEG_CONF_OPTS += --disable-gnutls\nifeq ($(BR2_PACKAGE_OPENSSL),y)\n# openssl isn't license compatible with GPL\nifeq ($(BR2_PACKAGE_FFMPEG_GPL)x$(BR2_PACKAGE_FFMPEG_NONFREE),yx)\nFFMPEG_CONF_OPTS += --disable-openssl\nelse\nFFMPEG_CONF_OPTS += --enable-openssl\nFFMPEG_DEPENDENCIES += openssl\nendif\nelse\nFFMPEG_CONF_OPTS += --disable-openssl\nendif\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_GPL)$(BR2_PACKAGE_LIBEBUR128),yy)\nFFMPEG_DEPENDENCIES += libebur128\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM),y)\nFFMPEG_CONF_OPTS += --enable-libdrm\nFFMPEG_DEPENDENCIES += libdrm\nelse\nFFMPEG_CONF_OPTS += --disable-libdrm\nendif\n\nifeq ($(BR2_PACKAGE_LIBOPENH264),y)\nFFMPEG_CONF_OPTS += --enable-libopenh264\nFFMPEG_DEPENDENCIES += libopenh264\nelse\nFFMPEG_CONF_OPTS += --disable-libopenh264\nendif\n\nifeq ($(BR2_PACKAGE_LIBVORBIS),y)\nFFMPEG_DEPENDENCIES += libvorbis\nFFMPEG_CONF_OPTS += \\\n\t--enable-libvorbis \\\n\t--enable-muxer=ogg \\\n\t--enable-encoder=libvorbis\nendif\n\nifeq ($(BR2_PACKAGE_LIBVA),y)\nFFMPEG_CONF_OPTS += --enable-vaapi\nFFMPEG_DEPENDENCIES += libva\nelse\nFFMPEG_CONF_OPTS += --disable-vaapi\nendif\n\nifeq ($(BR2_PACKAGE_LIBVDPAU),y)\nFFMPEG_CONF_OPTS += --enable-vdpau\nFFMPEG_DEPENDENCIES += libvdpau\nelse\nFFMPEG_CONF_OPTS += --disable-vdpau\nendif\n\nifeq ($(BR2_PACKAGE_RPI_USERLAND),y)\nFFMPEG_CONF_OPTS += --enable-mmal --enable-omx --enable-omx-rpi \\\n\t--extra-cflags=-I$(STAGING_DIR)/usr/include/IL\nFFMPEG_DEPENDENCIES += rpi-userland\nelse\nFFMPEG_CONF_OPTS += --disable-mmal --disable-omx --disable-omx-rpi\nendif\n\n# To avoid a circular dependency only use opencv if opencv itself does\n# not depend on ffmpeg.\nifeq ($(BR2_PACKAGE_OPENCV3_LIB_IMGPROC)x$(BR2_PACKAGE_OPENCV3_WITH_FFMPEG),yx)\nFFMPEG_CONF_OPTS += --enable-libopencv\nFFMPEG_DEPENDENCIES += opencv3\nelse\nFFMPEG_CONF_OPTS += --disable-libopencv\nendif\n\nifeq ($(BR2_PACKAGE_OPUS),y)\nFFMPEG_CONF_OPTS += --enable-libopus\nFFMPEG_DEPENDENCIES += opus\nelse\nFFMPEG_CONF_OPTS += --disable-libopus\nendif\n\nifeq ($(BR2_PACKAGE_LIBVPX),y)\nFFMPEG_CONF_OPTS += --enable-libvpx\nFFMPEG_DEPENDENCIES += libvpx\nelse\nFFMPEG_CONF_OPTS += --disable-libvpx\nendif\n\nifeq ($(BR2_PACKAGE_LIBASS),y)\nFFMPEG_CONF_OPTS += --enable-libass\nFFMPEG_DEPENDENCIES += libass\nelse\nFFMPEG_CONF_OPTS += --disable-libass\nendif\n\nifeq ($(BR2_PACKAGE_LIBBLURAY),y)\nFFMPEG_CONF_OPTS += --enable-libbluray\nFFMPEG_DEPENDENCIES += libbluray\nelse\nFFMPEG_CONF_OPTS += --disable-libbluray\nendif\n\nifeq ($(BR2_PACKAGE_INTEL_MEDIASDK),y)\nFFMPEG_CONF_OPTS += --enable-libmfx\nFFMPEG_DEPENDENCIES += intel-mediasdk\nelse\nFFMPEG_CONF_OPTS += --disable-libmfx\nendif\n\nifeq ($(BR2_PACKAGE_RTMPDUMP),y)\nFFMPEG_CONF_OPTS += --enable-librtmp\nFFMPEG_DEPENDENCIES += rtmpdump\nelse\nFFMPEG_CONF_OPTS += --disable-librtmp\nendif\n\nifeq ($(BR2_PACKAGE_LAME),y)\nFFMPEG_CONF_OPTS += --enable-libmp3lame\nFFMPEG_DEPENDENCIES += lame\nelse\nFFMPEG_CONF_OPTS += --disable-libmp3lame\nendif\n\nifeq ($(BR2_PACKAGE_LIBMODPLUG),y)\nFFMPEG_CONF_OPTS += --enable-libmodplug\nFFMPEG_DEPENDENCIES += libmodplug\nelse\nFFMPEG_CONF_OPTS += --disable-libmodplug\nendif\n\nifeq ($(BR2_PACKAGE_SPEEX),y)\nFFMPEG_CONF_OPTS += --enable-libspeex\nFFMPEG_DEPENDENCIES += speex\nelse\nFFMPEG_CONF_OPTS += --disable-libspeex\nendif\n\nifeq ($(BR2_PACKAGE_LIBTHEORA),y)\nFFMPEG_CONF_OPTS += --enable-libtheora\nFFMPEG_DEPENDENCIES += libtheora\nelse\nFFMPEG_CONF_OPTS += --disable-libtheora\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nFFMPEG_CONF_OPTS += --enable-iconv\nFFMPEG_DEPENDENCIES += libiconv\nelse\nFFMPEG_CONF_OPTS += --disable-iconv\nendif\n\n# ffmpeg freetype support require fenv.h which is only\n# available/working on glibc.\n# The microblaze variant doesn't provide the needed exceptions\nifeq ($(BR2_PACKAGE_FREETYPE)$(BR2_TOOLCHAIN_USES_GLIBC)x$(BR2_microblaze),yyx)\nFFMPEG_CONF_OPTS += --enable-libfreetype\nFFMPEG_DEPENDENCIES += freetype\nelse\nFFMPEG_CONF_OPTS += --disable-libfreetype\nendif\n\nifeq ($(BR2_PACKAGE_FONTCONFIG),y)\nFFMPEG_CONF_OPTS += --enable-fontconfig\nFFMPEG_DEPENDENCIES += fontconfig\nelse\nFFMPEG_CONF_OPTS += --disable-fontconfig\nendif\n\nifeq ($(BR2_PACKAGE_OPENJPEG),y)\nFFMPEG_CONF_OPTS += --enable-libopenjpeg\nFFMPEG_DEPENDENCIES += openjpeg\nelse\nFFMPEG_CONF_OPTS += --disable-libopenjpeg\nendif\n\nifeq ($(BR2_PACKAGE_X264)$(BR2_PACKAGE_FFMPEG_GPL),yy)\nFFMPEG_CONF_OPTS += --enable-libx264\nFFMPEG_DEPENDENCIES += x264\nelse\nFFMPEG_CONF_OPTS += --disable-libx264\nendif\n\nifeq ($(BR2_PACKAGE_X265)$(BR2_PACKAGE_FFMPEG_GPL),yy)\nFFMPEG_CONF_OPTS += --enable-libx265\nFFMPEG_DEPENDENCIES += x265\nelse\nFFMPEG_CONF_OPTS += --disable-libx265\nendif\n\nifeq ($(BR2_PACKAGE_DAV1D),y)\nFFMPEG_CONF_OPTS += --enable-libdav1d\nFFMPEG_DEPENDENCIES += dav1d\nelse\nFFMPEG_CONF_OPTS += --disable-libdav1d\nendif\n\nifeq ($(BR2_X86_CPU_HAS_MMX),y)\nFFMPEG_CONF_OPTS += --enable-x86asm\nFFMPEG_DEPENDENCIES += host-nasm\nelse\nFFMPEG_CONF_OPTS += --disable-x86asm\nFFMPEG_CONF_OPTS += --disable-mmx\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE),y)\nFFMPEG_CONF_OPTS += --enable-sse\nelse\nFFMPEG_CONF_OPTS += --disable-sse\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE2),y)\nFFMPEG_CONF_OPTS += --enable-sse2\nelse\nFFMPEG_CONF_OPTS += --disable-sse2\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE3),y)\nFFMPEG_CONF_OPTS += --enable-sse3\nelse\nFFMPEG_CONF_OPTS += --disable-sse3\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSSE3),y)\nFFMPEG_CONF_OPTS += --enable-ssse3\nelse\nFFMPEG_CONF_OPTS += --disable-ssse3\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE4),y)\nFFMPEG_CONF_OPTS += --enable-sse4\nelse\nFFMPEG_CONF_OPTS += --disable-sse4\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE42),y)\nFFMPEG_CONF_OPTS += --enable-sse42\nelse\nFFMPEG_CONF_OPTS += --disable-sse42\nendif\n\nifeq ($(BR2_X86_CPU_HAS_AVX),y)\nFFMPEG_CONF_OPTS += --enable-avx\nelse\nFFMPEG_CONF_OPTS += --disable-avx\nendif\n\nifeq ($(BR2_X86_CPU_HAS_AVX2),y)\nFFMPEG_CONF_OPTS += --enable-avx2\nelse\nFFMPEG_CONF_OPTS += --disable-avx2\nendif\n\n# Explicitly disable everything that doesn't match for ARM\n# FFMPEG \"autodetects\" by compiling an extended instruction via AS\n# This works on compilers that aren't built for generic by default\nifeq ($(BR2_ARM_CPU_ARMV4),y)\nFFMPEG_CONF_OPTS += --disable-armv5te\nendif\nifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y)\nFFMPEG_CONF_OPTS += --enable-armv6\nelse\nFFMPEG_CONF_OPTS += --disable-armv6 --disable-armv6t2\nendif\nifeq ($(BR2_ARM_CPU_HAS_VFPV2),y)\nFFMPEG_CONF_OPTS += --enable-vfp\nelse\nFFMPEG_CONF_OPTS += --disable-vfp\nendif\nifeq ($(BR2_ARM_CPU_HAS_NEON),y)\nFFMPEG_CONF_OPTS += --enable-neon\nelse ifeq ($(BR2_aarch64),y)\nFFMPEG_CONF_OPTS += --enable-neon\nelse\nFFMPEG_CONF_OPTS += --disable-neon\nendif\n\nifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y)\nifeq ($(BR2_MIPS_SOFT_FLOAT),y)\nFFMPEG_CONF_OPTS += --disable-mipsfpu\nelse\nFFMPEG_CONF_OPTS += --enable-mipsfpu\nendif\n\n# Fix build failure on several missing assembly instructions\nFFMPEG_CONF_OPTS += --disable-asm\nendif # MIPS\n\nifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y)\nFFMPEG_CONF_OPTS += --enable-altivec\nelse\nFFMPEG_CONF_OPTS += --disable-altivec\nendif\n\n# Uses __atomic_fetch_add_4\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nFFMPEG_CONF_OPTS += --extra-libs=-latomic\nendif\n\nifeq ($(BR2_STATIC_LIBS),)\nFFMPEG_CONF_OPTS += --enable-pic\nelse\nFFMPEG_CONF_OPTS += --disable-pic\nendif\n\n# Default to --cpu=generic for MIPS architecture, in order to avoid a\n# warning from ffmpeg's configure script.\nifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y)\nFFMPEG_CONF_OPTS += --cpu=generic\nelse ifneq ($(GCC_TARGET_CPU),)\nFFMPEG_CONF_OPTS += --cpu=\"$(GCC_TARGET_CPU)\"\nelse ifneq ($(GCC_TARGET_ARCH),)\nFFMPEG_CONF_OPTS += --cpu=\"$(GCC_TARGET_ARCH)\"\nendif\n\nFFMPEG_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nFFMPEG_CONF_OPTS += --disable-optimizations\nFFMPEG_CFLAGS += -O0\nendif\n\nFFMPEG_CONF_ENV += CFLAGS=\"$(FFMPEG_CFLAGS)\"\nFFMPEG_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_FFMPEG_EXTRACONF))\n\n# Override FFMPEG_CONFIGURE_CMDS: FFmpeg does not support --target and others\ndefine FFMPEG_CONFIGURE_CMDS\n\t(cd $(FFMPEG_SRCDIR) && rm -rf config.cache && \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\t$(TARGET_CONFIGURE_ARGS) \\\n\t$(FFMPEG_CONF_ENV) \\\n\t./configure \\\n\t\t--enable-cross-compile \\\n\t\t--cross-prefix=$(TARGET_CROSS) \\\n\t\t--sysroot=$(STAGING_DIR) \\\n\t\t--host-cc=\"$(HOSTCC)\" \\\n\t\t--arch=$(BR2_ARCH) \\\n\t\t--target-os=\"linux\" \\\n\t\t--disable-stripping \\\n\t\t--pkg-config=\"$(PKG_CONFIG_HOST_BINARY)\" \\\n\t\t$(SHARED_STATIC_LIBS_OPTS) \\\n\t\t$(FFMPEG_CONF_OPTS) \\\n\t)\nendef\n\ndefine FFMPEG_REMOVE_EXAMPLE_SRC_FILES\n\trm -rf $(TARGET_DIR)/usr/share/ffmpeg/examples\nendef\nFFMPEG_POST_INSTALL_TARGET_HOOKS += FFMPEG_REMOVE_EXAMPLE_SRC_FILES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fftw/Config.in",
    "content": "config BR2_PACKAGE_FFTW\n\tbool \"fftw\"\n\tselect BR2_PACKAGE_FFTW_DOUBLE if !BR2_PACKAGE_FFTW_SINGLE \\\n\t\t&& !BR2_PACKAGE_FFTW_LONG_DOUBLE && !BR2_PACKAGE_FFTW_QUAD\n\thelp\n\t  Library for computing Fast Fourier Transforms.\n\n\t  This library computes Fast Fourier Transforms (FFT) in one\n\t  or more dimensions. It is extremely fast. This package\n\t  contains the shared library version of the fftw libraries in\n\t  double precision.\n\n\t  http://www.fftw.org\n\nif BR2_PACKAGE_FFTW\n\nsource \"package/fftw/fftw-single/Config.in\"\nsource \"package/fftw/fftw-double/Config.in\"\nsource \"package/fftw/fftw-long-double/Config.in\"\nsource \"package/fftw/fftw-quad/Config.in\"\n\nconfig BR2_PACKAGE_FFTW_FAST\n\tbool \"optimise for speed over accuracy\"\n\thelp\n\t  Optimise for fast math functions, at the expense of accuracy.\n\n\t  Say 'y' if you need speed and can live with inaccuracies in\n\t  the results. Say 'n' (the default) if accuracy is of utmost\n\t  importance.\n\n\t  This basically uses gcc's -Ofast optimisation level, which in\n\t  turn is basically using gcc's -ffast-math. See the gcc manual\n\t  for what this means.\n\nendif\n"
  },
  {
    "path": "package/fftw/fftw-double/Config.in",
    "content": "config BR2_PACKAGE_FFTW_DOUBLE\n\tbool \"fftw-double\"\n\thelp\n\t  Compile fftw in double precision (the default), i.e. use\n\t  'double' for floating point type.\n"
  },
  {
    "path": "package/fftw/fftw-double/fftw-double.mk",
    "content": "################################################################################\n#\n# fftw-double\n#\n################################################################################\n\nFFTW_DOUBLE_VERSION = $(FFTW_VERSION)\nFFTW_DOUBLE_SOURCE = fftw-$(FFTW_VERSION).tar.gz\nFFTW_DOUBLE_SITE = $(FFTW_SITE)\nFFTW_DOUBLE_DL_SUBDIR = fftw\nFFTW_DOUBLE_INSTALL_STAGING = $(FFTW_INSTALL_STAGING)\nFFTW_DOUBLE_LICENSE = $(FFTW_LICENSE)\nFFTW_DOUBLE_LICENSE_FILES = $(FFTW_LICENSE_FILES)\n\nFFTW_DOUBLE_CONF_ENV = $(FFTW_COMMON_CONF_ENV)\n\nFFTW_DOUBLE_CONF_OPTS = \\\n\t$(FFTW_COMMON_CONF_OPTS) \\\n\tCFLAGS=\"$(FFTW_COMMON_CFLAGS)\" \\\n\t$(if $(BR2_X86_CPU_HAS_SSE2),--enable,--disable)-sse2\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fftw/fftw-long-double/Config.in",
    "content": "config BR2_PACKAGE_FFTW_LONG_DOUBLE\n\tbool \"fftw-long-double\"\n\t# long-double precision require long-double trigonometric routines\n\tdepends on !(BR2_TOOLCHAIN_USES_UCLIBC && \\\n\t\t(BR2_arm || BR2_mips || BR2_mipsel))\n\thelp\n\t  Compile fftw in long double precision, i.e. use 'long double'\n\t  for floating point type.\n"
  },
  {
    "path": "package/fftw/fftw-long-double/fftw-long-double.mk",
    "content": "################################################################################\n#\n# fftw-long-double\n#\n################################################################################\n\nFFTW_LONG_DOUBLE_VERSION = $(FFTW_VERSION)\nFFTW_LONG_DOUBLE_SOURCE = fftw-$(FFTW_VERSION).tar.gz\nFFTW_LONG_DOUBLE_SITE = $(FFTW_SITE)\nFFTW_LONG_DOUBLE_DL_SUBDIR = fftw\nFFTW_LONG_DOUBLE_INSTALL_STAGING = $(FFTW_INSTALL_STAGING)\nFFTW_LONG_DOUBLE_LICENSE = $(FFTW_LICENSE)\nFFTW_LONG_DOUBLE_LICENSE_FILES = $(FFTW_LICENSE_FILES)\n\nFFTW_LONG_DOUBLE_CONF_ENV = $(FFTW_COMMON_CONF_ENV)\n\nFFTW_LONG_DOUBLE_CONF_OPTS = \\\n\t$(FFTW_COMMON_CONF_OPTS) \\\n\tCFLAGS=\"$(FFTW_COMMON_CFLAGS)\" \\\n\t--enable-long-double\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fftw/fftw-quad/Config.in",
    "content": "config BR2_PACKAGE_FFTW_QUAD\n\tbool \"fftw-quad\"\n\t# quad-precision needs to have a gcc with libquadmath\n\tdepends on BR2_TOOLCHAIN_HAS_LIBQUADMATH && BR2_USE_WCHAR\n\thelp\n\t  Compile fftw in quadruple precision, i.e. use '__float128' for\n\t  floating point type.\n"
  },
  {
    "path": "package/fftw/fftw-quad/fftw-quad.mk",
    "content": "################################################################################\n#\n# fftw-quad\n#\n################################################################################\n\nFFTW_QUAD_VERSION = $(FFTW_VERSION)\nFFTW_QUAD_SOURCE = fftw-$(FFTW_VERSION).tar.gz\nFFTW_QUAD_SITE = $(FFTW_SITE)\nFFTW_QUAD_DL_SUBDIR = fftw\nFFTW_QUAD_INSTALL_STAGING = $(FFTW_INSTALL_STAGING)\nFFTW_QUAD_LICENSE = $(FFTW_LICENSE)\nFFTW_QUAD_LICENSE_FILES = $(FFTW_LICENSE_FILES)\n\nFFTW_QUAD_CONF_ENV = $(FFTW_COMMON_CONF_ENV)\n\nFFTW_QUAD_CONF_OPTS = \\\n\t$(FFTW_COMMON_CONF_OPTS) \\\n\tCFLAGS=\"$(FFTW_COMMON_CFLAGS)\" \\\n\t--enable-quad-precision\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fftw/fftw-single/Config.in",
    "content": "config BR2_PACKAGE_FFTW_SINGLE\n\tbool \"fftw-single\"\n\thelp\n\t  Compile fftw in single precision, i.e. use 'float'\n\t  for floating point type.\n"
  },
  {
    "path": "package/fftw/fftw-single/fftw-single.mk",
    "content": "################################################################################\n#\n# fftw-single\n#\n################################################################################\n\nFFTW_SINGLE_VERSION = $(FFTW_VERSION)\nFFTW_SINGLE_SOURCE = fftw-$(FFTW_VERSION).tar.gz\nFFTW_SINGLE_SITE = $(FFTW_SITE)\nFFTW_SINGLE_DL_SUBDIR = fftw\nFFTW_SINGLE_INSTALL_STAGING = $(FFTW_INSTALL_STAGING)\nFFTW_SINGLE_LICENSE = $(FFTW_LICENSE)\nFFTW_SINGLE_LICENSE_FILES = $(FFTW_LICENSE_FILES)\n\nFFTW_SINGLE_CONF_ENV = $(FFTW_COMMON_CONF_ENV)\n\nFFTW_SINGLE_CONF_OPTS = \\\n\t$(FFTW_COMMON_CONF_OPTS) \\\n\tCFLAGS=\"$(FFTW_SINGLE_CFLAGS)\" \\\n\t--enable-single\n\nFFTW_SINGLE_CFLAGS = $(FFTW_COMMON_CFLAGS)\n\n# x86 optimisations\nFFTW_SINGLE_CONF_OPTS += \\\n\t$(if $(BR2_X86_CPU_HAS_SSE),--enable,--disable)-sse \\\n\t$(if $(BR2_X86_CPU_HAS_SSE2),--enable,--disable)-sse2\n\n# ARM optimisations\nifeq ($(BR2_ARM_CPU_HAS_NEON):$(BR2_ARM_SOFT_FLOAT),y:)\nFFTW_SINGLE_CONF_OPTS += --enable-neon\nFFTW_SINGLE_CFLAGS += -mfpu=neon\nelse\nFFTW_SINGLE_CONF_OPTS += --disable-neon\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fftw/fftw.hash",
    "content": "# From http://www.fftw.org/fftw-3.3.8.tar.gz.md5sum\nmd5 8aac833c943d8e90d51b697b27d4384d  fftw-3.3.8.tar.gz\n# Locally computed\nsha256 6113262f6e92c5bd474f2875fa1b01054c4ad5040f6b0da7c03c98821d9ae303\tfftw-3.3.7.tar.gz\nsha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c\tCOPYING\n"
  },
  {
    "path": "package/fftw/fftw.mk",
    "content": "################################################################################\n#\n# fftw\n#\n################################################################################\n\nFFTW_VERSION = 3.3.8\nFFTW_SITE = http://www.fftw.org\nFFTW_INSTALL_STAGING = YES\nFFTW_LICENSE = GPL-2.0+\nFFTW_LICENSE_FILES = COPYING\n\n# fortran support only enables generation and installation of fortran sources\nifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y)\nFFTW_COMMON_CONF_OPTS += --enable-fortran\nFFTW_COMMON_CONF_ENV += FLIBS=\"-lgfortran -lm\"\nelse\nFFTW_COMMON_CONF_OPTS += --disable-fortran\nendif\n\nFFTW_COMMON_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_PACKAGE_FFTW_FAST),y)\nFFTW_COMMON_CFLAGS += -O3 -ffast-math\nendif\n\n# Generic optimisations\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nFFTW_COMMON_CONF_OPTS += --enable-threads\nFFTW_COMMON_CONF_OPTS += $(if $(BR2_TOOLCHAIN_HAS_OPENMP),--without,--with)-combined-threads\nelse\nFFTW_COMMON_CONF_OPTS += --disable-threads\nendif\nFFTW_COMMON_CONF_OPTS += $(if $(BR2_TOOLCHAIN_HAS_OPENMP),--enable,--disable)-openmp\n\ninclude $(sort $(wildcard package/fftw/*/*.mk))\n"
  },
  {
    "path": "package/ficl/0001-fix-Makefile.patch",
    "content": "fix dependency in Makefiles\n\nthere is no longer a sysdep.h file.\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\ndiff --git a/Makefile b/Makefile\nindex 976d00a..7f73c44 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -29,7 +29,7 @@ libficl.so.$(MAJOR).$(MINOR): $(OBJECTS)\n \t-o libficl.so.$(MAJOR).$(MINOR) $(OBJECTS)\n \tln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so\n \n-main: main.o ficl.h sysdep.h libficl.so.$(MAJOR).$(MINOR)\n+main: main.o ficl.h libficl.so.$(MAJOR).$(MINOR)\n \t$(CC) $(CFLAGS) $(LDFLAGS) main.o -o main -L. -lficl -lm\n \tln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so.$(MAJOR)\n \ndiff --git a/Makefile.ansi b/Makefile.ansi\nindex e510fcd..170e6eb 100644\n--- a/Makefile.ansi\n+++ b/Makefile.ansi\n@@ -29,7 +29,7 @@ libficl.so.$(MAJOR).$(MINOR): $(OBJECTS)\n \t-o libficl.so.$(MAJOR).$(MINOR) $(OBJECTS)\n \tln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so\n \n-main: main.o ficl.h sysdep.h libficl.so.$(MAJOR).$(MINOR)\n+main: main.o ficl.h libficl.so.$(MAJOR).$(MINOR)\n \t$(CC) main.o -o main -L. -lficl -lm\n \tln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so.$(MAJOR)\n \ndiff --git a/Makefile.linux b/Makefile.linux\nindex d447e7e..7f2cdfe 100644\n--- a/Makefile.linux\n+++ b/Makefile.linux\n@@ -29,7 +29,7 @@ libficl.so.$(MAJOR).$(MINOR): $(OBJECTS)\n \t-o libficl.so.$(MAJOR).$(MINOR) $(OBJECTS)\n \tln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so\n \n-main: main.o ficl.h sysdep.h libficl.so.$(MAJOR).$(MINOR)\n+main: main.o ficl.h libficl.so.$(MAJOR).$(MINOR)\n \t$(CC) main.o -o main -L. -lficl -lm\n \tln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so.$(MAJOR)\n \n-- \n\n"
  },
  {
    "path": "package/ficl/Config.in",
    "content": "config BR2_PACKAGE_FICL\n\tbool \"ficl\"\n\thelp\n\t  Ficl is a programming language interpreter designed to be\n\t  embedded into other systems as a command, macro, and\n\t  development prototyping language.\n\t  Ficl is an acronym for \"Forth Inspired Command Language\".\n\n\t  http://ficl.sourceforge.net\n"
  },
  {
    "path": "package/ficl/ficl.hash",
    "content": "# Locally computed:\nsha256  4daf74f3d3d6f8b86ea7cb47bc24931d50b4809b50ba34ca32e0ca1e972bd3a3  ficl-4.1.0.tar.gz\nsha256  1d1dd1f1cde52e8b607c5ccb6a2e5de878fd1719b8c5a4d31b9cdb343c203d0d  ReadMe.txt\n"
  },
  {
    "path": "package/ficl/ficl.mk",
    "content": "################################################################################\n#\n# ficl\n#\n################################################################################\n\nFICL_VERSION_MAJOR = 4.1\nFICL_VERSION = $(FICL_VERSION_MAJOR).0\nFICL_SITE = http://downloads.sourceforge.net/project/ficl/ficl-all/ficl$(FICL_VERSION_MAJOR)\nFICL_LICENSE = BSD-2-Clause\nFICL_LICENSE_FILES = ReadMe.txt\nFICL_INSTALL_STAGING = YES\n\nifeq ($(BR2_STATIC_LIBS),y)\nFICL_BUILD_TARGETS += ficl\ndefine FICL_INSTALL_STATIC_BIN\n\t$(INSTALL) -D -m 0755 $(@D)/ficl $(TARGET_DIR)/usr/bin/ficl\nendef\nendif\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nFICL_BUILD_TARGETS += libficl.a\ndefine FICL_INSTALL_STATIC_LIB\n\t$(INSTALL) -D -m 0644 $(@D)/libficl.a $(STAGING_DIR)/usr/lib/libficl.a\nendef\nendif\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nFICL_BUILD_TARGETS += main libficl.so.$(FICL_VERSION)\ndefine FICL_INSTALL_SHARED_BIN\n\t$(INSTALL) -D -m 0755 $(@D)/main $(TARGET_DIR)/usr/bin/ficl\nendef\ndefine FICL_INSTALL_SHARED_LIB\n\t$(INSTALL) -D -m 0755 $(@D)/libficl.so.$(FICL_VERSION) $(1)/usr/lib/libficl.so.$(FICL_VERSION)\n\tln -sf libficl.so.$(FICL_VERSION) $(1)/usr/lib/libficl.so.4\n\tln -sf libficl.so.$(FICL_VERSION) $(1)/usr/lib/libficl.so\nendef\nendif\n\ndefine FICL_BUILD_CMDS\n\t$(MAKE) -C $(@D) -f Makefile.linux $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -fgnu89-inline -fPIC -I. -Dlinux\" CPPFLAGS=\"\" $(FICL_BUILD_TARGETS)\nendef\n\ndefine FICL_INSTALL_STAGING_CMDS\n\t$(FICL_INSTALL_STATIC_LIB)\n\t$(call FICL_INSTALL_SHARED_LIB,$(STAGING_DIR))\n\t$(INSTALL) -D -m 0644 $(@D)/ficl.h $(STAGING_DIR)/usr/include/ficl.h\n\t$(INSTALL) -D -m 0644 $(@D)/ficllocal.h $(STAGING_DIR)/usr/include/ficllocal.h\n\t$(INSTALL) -D -m 0644 $(@D)/ficlplatform/unix.h $(STAGING_DIR)/usr/include/ficlplatform/unix.h\nendef\n\ndefine FICL_INSTALL_TARGET_CMDS\n\t$(FICL_INSTALL_STATIC_BIN)\n\t$(FICL_INSTALL_SHARED_BIN)\n\t$(call FICL_INSTALL_SHARED_LIB,$(TARGET_DIR))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/file/0001-Add-libmagic.pc.patch",
    "content": "From d079cac1110cc2761417f0dcb0a142b217eb1eda Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 31 Jan 2020 20:26:29 +0100\nSubject: [PATCH] Add libmagic.pc\n\nlibmagic can optionally depends on xz (for lzma) or bzip2 since version\n5.38 and\nhttps://github.com/file/file/commit/b259a07ea95827f565faa20f0316e5b2704064f7\nso add libmagic.pc so package (such as gerbera) that links with libmagic\nwill be able to use pkg-config to retrieve those static dependencies\nFor example, this will avoid the following build failure:\n\n[100%] Linking CXX executable gerbera\n/home/br-user/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /home/br-user/autobuild/run/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libmagic.a(compress.o): in function `uncompressbuf':\ncompress.c:(.text+0x69c): undefined reference to `BZ2_bzDecompressInit'\n/home/br-user/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: compress.c:(.text+0x710): undefined reference to `BZ2_bzDecompress'\n/home/br-user/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: compress.c:(.text+0x730): undefined reference to `BZ2_bzDecompressEnd'\n/home/br-user/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: compress.c:(.text+0x7bc): undefined reference to `lzma_auto_decoder'\n/home/br-user/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: compress.c:(.text+0x828): undefined reference to `lzma_code'\n/home/br-user/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: compress.c:(.text+0x848): undefined reference to `lzma_end'\n\nFixes:\n - http://autobuild.buildroot.org/results/37b1ef54dc41100689f311fbc31fc9300dc6ae63\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://bugs.astron.com/view.php?id=136]\n---\n Makefile.am    |  5 +++++\n configure.ac   |  2 +-\n libmagic.pc.in | 10 ++++++++++\n 3 files changed, 16 insertions(+), 1 deletion(-)\n create mode 100644 libmagic.pc.in\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 8bd927d9..2ab67ed7 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -3,3 +3,8 @@ ACLOCAL_AMFLAGS = -I m4\n EXTRA_DIST = MAINT\n \n SUBDIRS = src magic tests doc python\n+\n+# This variable must have 'exec' in its name, in order to be installed\n+# by 'install-exec' target (instead of default 'install-data')\n+pkgconfigexecdir = $(libdir)/pkgconfig\n+pkgconfigexec_DATA = libmagic.pc\ndiff --git a/configure.ac b/configure.ac\nindex ac37fccd..b2e2e5b8 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -217,5 +217,5 @@ if  test \"$ac_cv_header_lzma_h$ac_cv_lib_lzma_lzma_stream_decoder\" = \"yesyes\"; t\n   AC_DEFINE([XZLIBSUPPORT], 1, [Enable xzlib compression support])\n fi\n \n-AC_CONFIG_FILES([Makefile src/Makefile magic/Makefile tests/Makefile doc/Makefile python/Makefile])\n+AC_CONFIG_FILES([Makefile src/Makefile magic/Makefile tests/Makefile doc/Makefile python/Makefile libmagic.pc])\n AC_OUTPUT\ndiff --git a/libmagic.pc.in b/libmagic.pc.in\nnew file mode 100644\nindex 00000000..3ad1290b\n--- /dev/null\n+++ b/libmagic.pc.in\n@@ -0,0 +1,10 @@\n+prefix=@prefix@\n+exec_prefix=@exec_prefix@\n+libdir=@libdir@\n+includedir=@includedir@\n+\n+Name: libmagic\n+Description: Magic number recognition library\n+Version: @VERSION@\n+Libs: -L${libdir} -lmagic\n+Libs.private: @LIBS@\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/file/Config.in",
    "content": "config BR2_PACKAGE_FILE\n\tbool \"file\"\n\thelp\n\t  Program to identify a file's format by scanning binary data\n\t  for known patterns.\n\n\t  http://www.darwinsys.com/file/\n"
  },
  {
    "path": "package/file/file.hash",
    "content": "# Locally calculated after verifying signature\n# ftp://ftp.astron.com/pub/file/file-5.38.tar.gz.asc\n# using key BE04995BA8F90ED0C0C176C471112AB16CB33B3A\nsha256 593c2ffc2ab349c5aea0f55fedfe4d681737b6b62376a9b3ad1e77b2cc19fa34  file-5.38.tar.gz\nsha256 0bfa856a9930bddadbef95d1be1cf4e163c0be618e76ea3275caaf255283e274  COPYING\nsha256 4ccb60d623884ef637af4a5bc16b2cb350163e2135e967655837336019a64462  src/mygetopt.h\nsha256 58b5932aca6c10f2194290a3b26088ec9ba07ef6b52cc9bb2dd638cc634db6f1  src/vasprintf.c\n"
  },
  {
    "path": "package/file/file.mk",
    "content": "################################################################################\n#\n# file\n#\n################################################################################\n\nFILE_VERSION = 5.38\nFILE_SITE = ftp://ftp.astron.com/pub/file\nFILE_DEPENDENCIES = host-file\nHOST_FILE_DEPENDENCIES = host-zlib\nFILE_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'\nFILE_INSTALL_STAGING = YES\nFILE_LICENSE = BSD-2-Clause, BSD-4-Clause (one file), BSD-3-Clause (one file)\nFILE_LICENSE_FILES = COPYING src/mygetopt.h src/vasprintf.c\nFILE_CPE_ID_VENDOR = file_project\n# We're patching configure.ac\nFILE_AUTORECONF = YES\nHOST_FILE_CONF_OPTS = --disable-libseccomp\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nFILE_CONF_OPTS += --enable-bzlib\nFILE_DEPENDENCIES += bzip2\nelse\nFILE_CONF_OPTS += --disable-bzlib\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECCOMP),y)\nFILE_CONF_OPTS += --enable-libseccomp\nFILE_DEPENDENCIES += libseccomp\nelse\nFILE_CONF_OPTS += --disable-libseccomp\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nFILE_CONF_OPTS += --enable-xzlib\nFILE_DEPENDENCIES += xz\nelse\nFILE_CONF_OPTS += --disable-xzlib\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nFILE_CONF_OPTS += --enable-zlib\nFILE_DEPENDENCIES += zlib\nelse\nFILE_CONF_OPTS += --disable-zlib\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/filemq/Config.in",
    "content": "config BR2_PACKAGE_FILEMQ\n\tbool \"filemq\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # zeromq\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # zeromq\n\tdepends on BR2_USE_MMU # czmq\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_CZMQ\n\tselect BR2_PACKAGE_ZEROMQ\n\thelp\n\t  FileMQ is a publish-subscribe file service based on 0MQ.\n\n\t  http://github.com/zeromq/filemq\n\ncomment \"filemq needs a toolchain w/ C++, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS)\n"
  },
  {
    "path": "package/filemq/filemq.hash",
    "content": "# Locally calculated\nsha256  bdec8584a181e1c9a1d9be567768bcf8c3f7132ea701dd1829f74370c6536991  filemq-af4768dcaf2fcb8083a32bad107a22ecb7a5d954.tar.gz\nsha256  60222c28c1a7f6a92c7df98e5c5f4459e624e6e285e0b9b94467af5f6ab3343d  LICENSE\n"
  },
  {
    "path": "package/filemq/filemq.mk",
    "content": "################################################################################\n#\n# filemq\n#\n################################################################################\n\nFILEMQ_VERSION = af4768dcaf2fcb8083a32bad107a22ecb7a5d954\nFILEMQ_SITE = $(call github,zeromq,filemq,$(FILEMQ_VERSION))\n\nFILEMQ_AUTORECONF = YES\nFILEMQ_CONF_ENV = filemq_have_asciidoc=no\nFILEMQ_INSTALL_STAGING = YES\nFILEMQ_DEPENDENCIES = czmq openssl zeromq\nFILEMQ_LICENSE = MPL-2.0\nFILEMQ_LICENSE_FILES = LICENSE\n\ndefine FILEMQ_CREATE_CONFIG_DIR\n\tmkdir -p $(@D)/config\nendef\n\nFILEMQ_POST_PATCH_HOOKS += FILEMQ_CREATE_CONFIG_DIR\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/findutils/Config.in",
    "content": "config BR2_PACKAGE_FINDUTILS\n\tbool \"findutils\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  Basic directory searching utilities. Provides the\n\t  common 'find', 'xargs', 'locate', and 'updatedb' binaries.\n\n\t  http://www.gnu.org/software/findutils/findutils.html\n\ncomment \"findutils needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/findutils/findutils.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  57127b7e97d91282c6ace556378d5455a9509898297e46e10443016ea1387164  findutils-4.8.0.tar.xz\n\n# Hash for license file\nsha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  COPYING\n"
  },
  {
    "path": "package/findutils/findutils.mk",
    "content": "################################################################################\n#\n# findutils\n#\n################################################################################\n\nFINDUTILS_VERSION = 4.8.0\nFINDUTILS_SOURCE = findutils-$(FINDUTILS_VERSION).tar.xz\nFINDUTILS_SITE = $(BR2_GNU_MIRROR)/findutils\nFINDUTILS_LICENSE = GPL-3.0+\nFINDUTILS_LICENSE_FILES = COPYING\nFINDUTILS_CPE_ID_VENDOR = gnu\nFINDUTILS_CONF_ENV = \\\n\tgl_cv_func_stdin=yes \\\n\tac_cv_func_working_mktime=yes \\\n\tgl_cv_func_wcwidth_works=yes\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fio/Config.in",
    "content": "config BR2_PACKAGE_FIO\n\tbool \"fio\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# fio uses fallocate() which becomes fallocate64() while compiling with\n\t# largefile support, but fallocate64() is not available on nios2\n\tdepends on !BR2_nios2\n\thelp\n\t  fio is an I/O tool meant to be used both for benchmark\n\t  and stress/hardware verification.\n\n\t  http://git.kernel.dk/?p=fio.git;a=summary\n\ncomment \"fio needs a toolchain w/ dynamic library, threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_nios2\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/fio/fio.hash",
    "content": "# Locally computed\nsha256  859dca5241e5494d86c4aa1531a984cc556789c78e56b30d6070acfbdd193a8c  fio-3.28.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  8a240c1ad13d1fe3e58588643d81d0695899be4a669fe6d8fafa76ca6a89db2c  MORAL-LICENSE\n"
  },
  {
    "path": "package/fio/fio.mk",
    "content": "################################################################################\n#\n# fio\n#\n################################################################################\n\nFIO_VERSION = 3.28\nFIO_SITE = http://brick.kernel.dk/snaps\nFIO_LICENSE = GPL-2.0\nFIO_LICENSE_FILES = COPYING MORAL-LICENSE\n\nifeq ($(BR2_PACKAGE_LIBAIO),y)\nFIO_DEPENDENCIES += libaio\nendif\n\nifeq ($(BR2_PACKAGE_LIBNFS),y)\nFIO_DEPENDENCIES += libnfs\nendif\n\nifeq ($(BR2_PACKAGE_NUMACTL),y)\nFIO_DEPENDENCIES += numactl\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nFIO_DEPENDENCIES += zlib\nendif\n\ndefine FIO_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_MAKE_ENV) ./configure --cc=\"$(TARGET_CC)\" --extra-cflags=\"$(TARGET_CFLAGS)\")\nendef\n\ndefine FIO_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine FIO_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D $(@D)/fio $(TARGET_DIR)/usr/bin/fio\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/firmware-utils/Config.in",
    "content": "config BR2_PACKAGE_FIRMWARE_UTILS\n\tbool \"firmware-utils\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Firmware utils are tools that can be used for managing\n\t  platform / device / vendor specific firmware images. Depending\n\t  on a specific tool it may be possible to read information,\n\t  extract data, modify or build an image from a scratch.\n\n\t  A common target usage of firmware utils is to upgrade kernel\n\t  and / or rootfs. Depending on device it may be required to\n\t  extract a part of firmware image and flash it.\n\n\t  https://git.openwrt.org/?p=project/firmware-utils.git;a=summary\n\ncomment \"firmware-utils needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/firmware-utils/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_FIRMWARE_UTILS\n\tbool \"host firmware-utils\"\n\thelp\n\t  Firmware utils are tools that can be used for managing\n\t  platform / device / vendor specific firmware images. Depending\n\t  on a specific tool it may be possible to read information,\n\t  extract data, modify or build an image from a scratch.\n\n\t  A common host usage of firmware utils is to build a bootloader\n\t  supported image.\n\n\t  https://git.openwrt.org/?p=project/firmware-utils.git;a=summary\n"
  },
  {
    "path": "package/firmware-utils/firmware-utils.hash",
    "content": "# Locally calculated\nsha256  0df1b7912d68822025f9bb6a7ddfdf9675e2116d34c3c74bbdc83defcefe203c  firmware-utils-86739f2b3ae9502368b89ef37fa6f31c42aad6f4-br1.tar.gz\n"
  },
  {
    "path": "package/firmware-utils/firmware-utils.mk",
    "content": "################################################################################\n#\n# firmware-utils\n#\n################################################################################\n\nFIRMWARE_UTILS_VERSION = 86739f2b3ae9502368b89ef37fa6f31c42aad6f4\nFIRMWARE_UTILS_SITE = git://git.openwrt.org/project/firmware-utils.git\nFIRMWARE_UTILS_LICENSE = \\\n\tBSD-2-Clause (tplink-safeloader), \\\n\tBSD-3-Clause (seama), \\\n\tGPL-2.0 (add_header, bcmalgo, buffalo-enc, buffalo-lib, buffalo-tag, \\\n\t\t buffalo-tftp, dgfirmware, dns313-header, edimax_fw_header, \\\n\t\t fix-u-media-header, hcsmakeimage, mkbrncmdline, mkbrnimg, \\\n\t\t mkbuffaloimg, mkcameofw, mkcasfw, mkdapimg, mkdapimg2, \\\n\t\t mkdhpimg, mkdniimg, mkhilinkfw, mkmerakifw-old, mkmerakifw, \\\n\t\t mkplanexfw, mkporayfw, mkrasimage, mkrtn56uimg, mksenaofw, \\\n\t\t mksercommfw, mktitanimg, mktplinkfw-lib, mktplinkfw, \\\n\t\t mktplinkfw2, mkwrggimg, mkwrgimg, mkzcfw, mkzynfw, \\\n\t\t mkzyxelzldfw osbridge-crc, pc1crypt, srec2bin, trx2edips, \\\n\t\t uimage_padhdr, wrt400n, zyimage, zytrx), \\\n\tGPL-2.0+ (addpattern, asustrx, bcm4908asus, bcm4908kernel, dgn3500sum, \\\n\t\t  encode_crc, jcgimage, lzma2eva, makeamitbin, mkchkimg, \\\n\t\t  mkcsysimg, mkdlinkfw-lib, mkdlinkfw, mkedimaximg, mkfwimage, \\\n\t\t  mkfwimage2, mkheader_gemtek, mkmylofw, motorola-bin, \\\n\t\t  nec-enc, oseama, otrx, ptgen, sign_dlink_ru, spw303v, trx, \\\n\t\t  uimage_sgehdr, xiaomifw, xorimage, zyxbcm), \\\n\tGPL-2.0 OR GPL-3.0 (nand_ecc), \\\n\tGPL-2.0+ OR MIT (lxlfw), \\\n\tUNKNOWN (imagetag, trx2usr)\n# No explicit license file. We could use the source files, but that would mean\n# we need to use all of them. If we need to do that, we can just as well leave\n# it to the integrator to get them from the sources\n\nFIRMWARE_UTILS_DEPENDENCIES = openssl zlib\nHOST_FIRMWARE_UTILS_DEPENDENCIES = host-openssl host-zlib\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/flac/0001-configure.ac-check-for-sys-auxv.h-before-defining-FL.patch",
    "content": "From 14a0713389fbfef59225d027ea466ebb478a8c6b Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 19 Sep 2019 21:18:04 +0200\nSubject: [PATCH] configure.ac: check for sys/auxv.h before defining FLAC__CPU_PPC\n\nUpstream: https://github.com/xiph/flac/pull/142\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n configure.ac | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 0228a12..64cb3f2 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -144,7 +144,7 @@ case \"$host_cpu\" in\n \tpowerpc64|powerpc64le)\n \t\tcpu_ppc64=true\n \t\tcpu_ppc=true\n-\t\tAC_DEFINE(FLAC__CPU_PPC)\n+\t\tAC_CHECK_HEADER(sys/auxv.h, AC_DEFINE(FLAC__CPU_PPC))\n \t\tAH_TEMPLATE(FLAC__CPU_PPC, [define if building for PowerPC])\n \t\tAC_DEFINE(FLAC__CPU_PPC64)\n \t\tAH_TEMPLATE(FLAC__CPU_PPC64, [define if building for PowerPC64])\n@@ -152,7 +152,7 @@ case \"$host_cpu\" in\n \t\t;;\n \tpowerpc|powerpcle)\n \t\tcpu_ppc=true\n-\t\tAC_DEFINE(FLAC__CPU_PPC)\n+\t\tAC_CHECK_HEADER(sys/auxv.h, AC_DEFINE(FLAC__CPU_PPC))\n \t\tAH_TEMPLATE(FLAC__CPU_PPC, [define if building for PowerPC])\n \t\tasm_optimisation=$asm_opt\n \t\t;;\n--\n2.23.0\n\n"
  },
  {
    "path": "package/flac/Config.in",
    "content": "config BR2_PACKAGE_FLAC\n\tbool \"flac\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  FLAC is an Open Source lossless audio codec.\n\n\t  http://flac.sourceforge.net/\n\ncomment \"flac needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/flac/flac.hash",
    "content": "# From https://ftp.osuosl.org/pub/xiph/releases/flac/MD5SUMS\nmd5 26703ed2858c1fc9ffc05136d13daa69  flac-1.3.3.tar.xz\n# From https://ftp.osuosl.org/pub/xiph/releases/flac/SHA1SUMS\nsha1 6ac2e8f1dd18c9b0214c4d81bd70cdc1e943cffe  flac-1.3.3.tar.xz\n# From http://downloads.xiph.org/releases/flac/SHA256SUMS.txt\nsha256 213e82bd716c9de6db2f98bcadbc4c24c7e2efe8c75939a1a84e28539c4e1748  flac-1.3.3.tar.xz\n# Locally computed\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING.GPL\nsha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING.LGPL\nsha256 fa27cb11f13f97b0c5f3ff363b1e2610c6efe87ed175779cb2a78e44eb19d34c  COPYING.Xiph\n"
  },
  {
    "path": "package/flac/flac.mk",
    "content": "################################################################################\n#\n# flac\n#\n################################################################################\n\nFLAC_VERSION = 1.3.3\nFLAC_SITE = http://downloads.xiph.org/releases/flac\nFLAC_SOURCE = flac-$(FLAC_VERSION).tar.xz\nFLAC_INSTALL_STAGING = YES\nFLAC_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv)\nFLAC_LICENSE = Xiph BSD-like (libFLAC), GPL-2.0+ (tools), LGPL-2.1+ (other libraries)\nFLAC_LICENSE_FILES = COPYING.Xiph COPYING.GPL COPYING.LGPL\nFLAC_CPE_ID_VENDOR = flac_project\n\n# patch touching configure.ac\nFLAC_AUTORECONF = YES\n\nFLAC_CONF_OPTS = \\\n\t$(if $(BR2_INSTALL_LIBSTDCPP),--enable-cpplibs,--disable-cpplibs) \\\n\t--disable-xmms-plugin \\\n\t--disable-altivec\n\nifeq ($(BR2_PACKAGE_LIBOGG),y)\nFLAC_CONF_OPTS += --with-ogg=$(STAGING_DIR)/usr\nFLAC_DEPENDENCIES += libogg\nelse\nFLAC_CONF_OPTS += --disable-ogg\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE),y)\nFLAC_DEPENDENCIES += host-nasm\nFLAC_CONF_OPTS += --enable-sse\nelse\nFLAC_CONF_OPTS += --disable-sse\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/flann/0001-src-cpp-fix-cmake-3.11-build.patch",
    "content": "From fa5ec96a94646492a3f908e12905b3e48a8e800b Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Wed, 18 Apr 2018 20:24:13 +0200\nSubject: [PATCH] src/cpp: fix cmake >= 3.11 build\n\nCMake < 3.11 doesn't support add_library() without any source file\n(i.e add_library(foo SHARED)). But flann CMake use a trick that use\nan empty string \"\" as source list (i.e add_library(foo SHARED \"\")).\nThis look like a bug in CMake < 3.11.\n\nWith CMake >= 3.11, the new behaviour of add_library() break the\nexisting flann CMake code.\n\nFrom CMake Changelog [1]:\n\"add_library() and add_executable() commands can now be called without\n any sources and will not complain as long as sources are added later\n via the target_sources() command.\"\n\nNote: flann CMake code doesn't use target_sources() since no source file\nare provided intentionally since the flann shared library is created by\nlinking with the flann_cpp_s static library with this line:\n\ntarget_link_libraries(flann_cpp -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive)\n\nIf you try to use \"add_library(flann_cpp SHARED ${CPP_SOURCES})\" (as it should\nbe normally done), the link fail due to already defined symbol.\n\nThey are building the shared version using the static library \"to speedup the\nbuild time\" [3]\n\nThis issue is already reported upstream [2] with a proposed solution.\n\nUpstream status: Pending\n\nFixes:\nhttp://autobuild.buildroot.net/results/b2f/b2febfaf8c44ce477b3e4a5b9b976fd25e8d7454\n\n[1] https://cmake.org/cmake/help/v3.11/release/3.11.html\n[2] https://github.com/mariusmuja/flann/issues/369\n[3] https://github.com/mariusmuja/flann/commit/0fd62b43be2fbb0b8d791ee36290791224dc030c\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n src/cpp/CMakeLists.txt | 4 ++--\n src/cpp/empty.cpp      | 1 +\n 2 files changed, 3 insertions(+), 2 deletions(-)\n create mode 100644 src/cpp/empty.cpp\n\ndiff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt\nindex b44a735..a816863 100644\n--- a/src/cpp/CMakeLists.txt\n+++ b/src/cpp/CMakeLists.txt\n@@ -29,7 +29,7 @@ if (BUILD_CUDA_LIB)\n endif()\n \n if(CMAKE_SYSTEM_NAME STREQUAL \"Linux\" AND CMAKE_COMPILER_IS_GNUCC)\n-    add_library(flann_cpp SHARED \"\")\n+    add_library(flann_cpp SHARED \"empty.cpp\")\n     set_target_properties(flann_cpp PROPERTIES LINKER_LANGUAGE CXX)\n     target_link_libraries(flann_cpp -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive)\n \n@@ -85,7 +85,7 @@ if (BUILD_C_BINDINGS)\n     set_property(TARGET flann_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC)\n \n     if(CMAKE_SYSTEM_NAME STREQUAL \"Linux\" AND CMAKE_COMPILER_IS_GNUCC)\n-        add_library(flann SHARED \"\")\n+        add_library(flann SHARED \"empty.cpp\")\n         set_target_properties(flann PROPERTIES LINKER_LANGUAGE CXX)\n         target_link_libraries(flann -Wl,-whole-archive flann_s -Wl,-no-whole-archive)\n     else()\ndiff --git a/src/cpp/empty.cpp b/src/cpp/empty.cpp\nnew file mode 100644\nindex 0000000..40a8c17\n--- /dev/null\n+++ b/src/cpp/empty.cpp\n@@ -0,0 +1 @@\n+/* empty */\n-- \n2.14.3\n\n"
  },
  {
    "path": "package/flann/Config.in",
    "content": "config BR2_PACKAGE_FLANN\n\tbool \"flann\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  FLANN is a library for performing fast approximate nearest\n\t  neighbor searches in high dimensional spaces. It contains a\n\t  collection of algorithms we found to work best for nearest\n\t  neighbor search and a system for automatically choosing the\n\t  best algorithm and optimum parameters depending on the\n\t  dataset.\n\n\t  http://www.cs.ubc.ca/research/flann/\n\nif BR2_PACKAGE_FLANN\n\nconfig BR2_PACKAGE_FLANN_EXAMPLES\n\tbool \"flann examples\"\n\thelp\n\t  Build and install flann example applications.\n\nendif\n\ncomment \"flann needs a toolchain w/ C++, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/flann/flann.hash",
    "content": "# Locally calculated\nsha256  b23b5f4e71139faa3bcb39e6bbcc76967fbaf308c4ee9d4f5bfbeceaa76cc5d3  flann-1.9.1.tar.gz\nsha256  3993f339cc56506c62aa1eb2fb76f240ee93b738d857832899c1e207b1dc069a  COPYING\n"
  },
  {
    "path": "package/flann/flann.mk",
    "content": "################################################################################\n#\n# flann\n#\n################################################################################\n\nFLANN_VERSION = 1.9.1\nFLANN_SITE = $(call github,mariusmuja,flann,$(FLANN_VERSION))\nFLANN_INSTALL_STAGING = YES\nFLANN_LICENSE = BSD-3-Clause\nFLANN_LICENSE_FILES = COPYING\nFLANN_CONF_OPTS = \\\n\t-DBUILD_C_BINDINGS=ON \\\n\t-DBUILD_PYTHON_BINDINGS=OFF \\\n\t-DBUILD_MATLAB_BINDINGS=OFF \\\n\t-DBUILD_EXAMPLES=$(if $(BR2_PACKAGE_FLANN_EXAMPLES),ON,OFF) \\\n\t-DUSE_OPENMP=$(if $(BR2_TOOLCHAIN_HAS_OPENMP),ON,OFF) \\\n\t-DPYTHON_EXECUTABLE=OFF \\\n\t-DCMAKE_DISABLE_FIND_PACKAGE_HDF5=TRUE\n\nFLANN_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)\nFLANN_CXXFLAGS += -O0\nendif\n\nFLANN_CONF_OPTS += -DCMAKE_CXX_FLAGS=\"$(FLANN_CXXFLAGS)\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/flannel/Config.in",
    "content": "comment \"flannel needs a toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_FLANNEL\n\tbool \"flannel\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Flannel is a virtual network that gives a subnet to each\n\t  host for use with container runtimes.\n\n\t  https://github.com/flannel-io/flannel\n"
  },
  {
    "path": "package/flannel/flannel.hash",
    "content": "# Locally computed:\nsha256 e17164db3b158d13ce5e40bb7b233790cb186762d929fa4f626baf586d4d63ca v0.14.0.tar.gz\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE\n"
  },
  {
    "path": "package/flannel/flannel.mk",
    "content": "################################################################################\n#\n# flannel\n#\n################################################################################\n\nFLANNEL_VERSION = 0.14.0\nFLANNEL_SITE = https://github.com/flannel-io/flannel/archive\nFLANNEL_SOURCE = v$(FLANNEL_VERSION).tar.gz\n\nFLANNEL_LICENSE = Apache-2.0\nFLANNEL_LICENSE_FILES = LICENSE\n\nFLANNEL_LDFLAGS = -X github.com/flannel-io/flannel/version.Version=$(FLANNEL_VERSION)\n\n# Install flannel to its well known location.\ndefine FLANNEL_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/bin/flannel $(TARGET_DIR)/opt/bin/flanneld\n\t$(INSTALL) -D -m 0755 $(@D)/dist/mk-docker-opts.sh $(TARGET_DIR)/opt/bin/mk-docker-opts.sh\nendef\n\n$(eval $(golang-package))\n"
  },
  {
    "path": "package/flare-engine/Config.in",
    "content": "config BR2_PACKAGE_FLARE_ENGINE\n\tbool \"flare-engine\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # SDL2\n\tselect BR2_PACKAGE_LIBPNG # SDL2_IMAGE needs libpng support\n\tselect BR2_PACKAGE_SDL2\n\tselect BR2_PACKAGE_SDL2_IMAGE\n\tselect BR2_PACKAGE_SDL2_MIXER\n\tselect BR2_PACKAGE_SDL2_TTF\n\thelp\n\t  Flare (Free Libre Action Roleplaying Engine) is a simple game\n\t  engine built to handle a very specific kind of game:\n\t  single-player 2D action RPGs.\n\t  Flare is not a reimplementation of an existing game or engine.\n\t  It is a tribute to and exploration of the action RPG genre.\n\n\t  http://flarerpg.org\n\ncomment \"flare-engine needs a toolchain w/ C++, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/flare-engine/flare-engine.hash",
    "content": "# Locally calculated\nsha256  035ffd936d9e120dc2eb792779a0b7ff64574d4a29a1124946deaf7946d1059d  flare-engine-1.11.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/flare-engine/flare-engine.mk",
    "content": "################################################################################\n#\n# flare-engine\n#\n################################################################################\n\nFLARE_ENGINE_VERSION = 1.11\nFLARE_ENGINE_SITE = $(call github,flareteam,flare-engine,v$(FLARE_ENGINE_VERSION))\nFLARE_ENGINE_LICENSE = GPL-3.0+\nFLARE_ENGINE_LICENSE_FILES = COPYING\n\nFLARE_ENGINE_DEPENDENCIES += sdl2 sdl2_image sdl2_mixer sdl2_ttf\n\n# Don't use /usr/games and /usr/share/games\nFLARE_ENGINE_CONF_OPTS += -DBINDIR=bin -DDATADIR=share/flare\n\n# CMAKE_BUILD_TYPE is only used to set optimization and debug flags, all of\n# which we want Buildroot to steer explicitly. Explicitly set a fake build type\n# to get this control.\nFLARE_ENGINE_CONF_OPTS += -DCMAKE_BUILD_TYPE=Buildroot\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nFLARE_ENGINE_CONF_OPTS += -DCMAKE_CXX_FLAGS=\"$(TARGET_CXXFLAGS) -O0\"\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/flare-game/Config.in",
    "content": "config BR2_PACKAGE_FLARE_GAME\n\tbool \"flare-game\"\n\tdepends on BR2_PACKAGE_FLARE_ENGINE\n\thelp\n\t  Flare is an open source, 2D action RPG licensed under the\n\t  GPL3 license. Its game play can be likened to the games in\n\t  the Diablo series.\n\n\t  This package, flare-game, only contains the game data. The\n\t  game engine itself is part of a separate package,\n\t  flame-engine.\n\n\t  http://flarerpg.org\n"
  },
  {
    "path": "package/flare-game/flare-game.hash",
    "content": "# Locally calculated\nsha256  c13231c7dd021252487f6cf117f7f2bb24bbda40af0a2b2902d72b5e2d4c242a  flare-game-1.11.tar.gz\nsha256  3f941b3b89cf7b8370ceb83cc76d2120d471b58735d8ca60238a751a48d7f72f  LICENSE.txt\n"
  },
  {
    "path": "package/flare-game/flare-game.mk",
    "content": "################################################################################\n#\n# flare-game\n#\n################################################################################\n\nFLARE_GAME_VERSION = 1.11\nFLARE_GAME_SITE = $(call github,flareteam,flare-game,v$(FLARE_GAME_VERSION))\nFLARE_GAME_LICENSE = CC-BY-SA-3.0 (data files), GPL-2.0 (GNU Unifont), \\\n\tOFL-1.1 (Liberation Sans)\nFLARE_GAME_LICENSE_FILES = README\n\nFLARE_GAME_DEPENDENCIES = flare-engine\n\n# Don't use /usr/share/games\nFLARE_GAME_CONF_OPTS += -DDATADIR=share/flare\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/flashbench/Config.in",
    "content": "config BR2_PACKAGE_FLASHBENCH\n\tbool \"flashbench\"\n\thelp\n\t  Flashbench - Identify characteristics of flash media.\n\n\t  This is the tool used to identify the properties of\n\t  SD cards and other media for the Linaro flash memory\n\t  survey.\n\n\t  https://git.linaro.org/people/arnd.bergmann/flashbench.git\n"
  },
  {
    "path": "package/flashbench/flashbench.hash",
    "content": "# Locally computed\nsha256  422860966ad3528a7fd1dc88e4aa0b2bd91f11fa6429523b9acd21dc5beb6a19  flashbench-2e30b1968a66147412f21002ea844122a0d5e2f0-br1.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/flashbench/flashbench.mk",
    "content": "################################################################################\n#\n# flashbench\n#\n################################################################################\n\nFLASHBENCH_VERSION = 2e30b1968a66147412f21002ea844122a0d5e2f0\nFLASHBENCH_SITE = git://git.linaro.org/people/arnd/flashbench.git\nFLASHBENCH_LICENSE = GPL-2.0\nFLASHBENCH_LICENSE_FILES = COPYING\n\ndefine FLASHBENCH_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS) -lrt\"\nendef\n\ndefine FLASHBENCH_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 -D $(@D)/flashbench $(TARGET_DIR)/usr/bin/flashbench\n\t$(INSTALL) -m 755 -D $(@D)/erase $(TARGET_DIR)/usr/bin/erase\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/flashrom/0001-Makefile-Fix-building-on-AArch64-NixOS.patch",
    "content": "From da6b3b70cb852dd8e9f9e21aef95fa83e7f7ab0d Mon Sep 17 00:00:00 2001\nFrom: Pyry Kontio <pyry.kontio@drasa.eu>\nDate: Mon, 6 Jul 2020 12:57:35 +0900\nSubject: [PATCH] Makefile: Fix building on AArch64 NixOS\n\nThe parsing of the output of archtest.c produced an unexpected\nvalue on AArch64 NixOS. For example, the make variable ARCH was set to:\n\n```\nbit outside of fd_set selected\narm\n```\n\nThis made the arch and OS checks fail.\n\nThis commit simplifies the parsing, making it more robust.\n\nThe C files archtest.c, endiantest.c and os.h used to set the\nTARGET_OS, ARCH and ENDIAN variables, respectively, output\nthe result of the test as the final line, so just extracting\nthe final line and removing double quoting is enough.\n\nThis commit also fixes a bug with debug_shell lacking escaping\nsingle quotes, which prevented using the single quote in the\ndebug_shell calls. It used to work by accident before this fix;\nthe line in the call happened to contain a balanced pair of double\nquotes and lacked other characters that needed escaping, which\ndidn't break the debug_shell, but this was accidental and very\nbrittle.\n\nSigned-off-by: Pyry Kontio <pyry.kontio@drasa.eu>\nChange-Id: Iaa4477a71e758cf9ecad2c22f3b77bc6508a3510\nReviewed-on: https://review.coreboot.org/c/flashrom/+/43140\nTested-by: build bot (Jenkins) <no-reply@coreboot.org>\nReviewed-by: Angel Pons <th3fanbus@gmail.com>\n\n[Retrieved from:\nhttps://github.com/flashrom/flashrom/commit/da6b3b70cb852dd8e9f9e21aef95fa83e7f7ab0d]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile | 16 ++++++++++------\n 1 file changed, 10 insertions(+), 6 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex f3f7717e2..e475cbdbd 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -83,7 +83,8 @@ dummy_for_make_3_80:=$(shell printf \"Build started on %s\\n\\n\" \"$$(date)\" >$(BUIL\n \n # Provide an easy way to execute a command, print its output to stdout and capture any error message on stderr\n # in the build details file together with the original stdout output.\n-debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(1) ; }' >&2;  { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE))\n+debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(subst ','\\'',$(1)) ; }' >&2; \\\n+    { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE))\n \n ###############################################################################\n # General OS-specific settings.\n@@ -106,7 +107,8 @@ endif\n # IMPORTANT: The following line must be placed before TARGET_OS is ever used\n # (of course), but should come after any lines setting CC because the line\n # below uses CC itself.\n-override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null | grep -v '^\\#' | grep '\"' | cut -f 2 -d'\"'))\n+override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null \\\n+    | tail -1 | cut -f 2 -d'\"'))\n \n ifeq ($(TARGET_OS), Darwin)\n override CPPFLAGS += -I/opt/local/include -I/usr/local/include\n@@ -490,8 +492,10 @@ endif\n # IMPORTANT: The following line must be placed before ARCH is ever used\n # (of course), but should come after any lines setting CC because the line\n # below uses CC itself.\n-override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null | grep -v '^\\#' | grep '\"' | cut -f 2 -d'\"'))\n-override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null | grep -v '^\\#'))\n+override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null \\\n+    | tail -1 | cut -f 2 -d'\"'))\n+override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null \\\n+    | tail -1))\n \n # Disable the internal programmer on unsupported architectures (everything but x86 and mipsel)\n ifneq ($(ARCH)-little, $(filter $(ARCH),x86 mips)-$(ENDIAN))\n@@ -1299,12 +1303,12 @@ compiler: featuresavailable\n \t@printf \"Target arch is \"\n \t@# FreeBSD wc will output extraneous whitespace.\n \t@echo $(ARCH)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' ||\t\\\n-\t\t( echo \"unknown. Aborting.\"; exit 1)\n+\t\t( echo \"unknown (\\\"$(ARCH)\\\"). Aborting.\"; exit 1)\n \t@printf \"%s\\n\" '$(ARCH)'\n \t@printf \"Target OS is \"\n \t@# FreeBSD wc will output extraneous whitespace.\n \t@echo $(TARGET_OS)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' ||\t\\\n-\t\t( echo \"unknown. Aborting.\"; exit 1)\n+\t\t( echo \"unknown (\\\"$(TARGET_OS)\\\"). Aborting.\"; exit 1)\n \t@printf \"%s\\n\" '$(TARGET_OS)'\n ifeq ($(TARGET_OS), libpayload)\n \t@$(CC) --version 2>&1 | grep -q coreboot || \\\n"
  },
  {
    "path": "package/flashrom/Config.in",
    "content": "config BR2_PACKAGE_FLASHROM_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\tdefault y if BR2_arc\n\tdefault y if BR2_arm || BR2_armeb\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_m68k\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdefault y if BR2_riscv\n\tdefault y if BR2_sh\n\tdefault y if BR2_sparc || BR2_sparc64\n\nconfig BR2_PACKAGE_FLASHROM\n\tbool \"flashrom\"\n\tdepends on BR2_PACKAGE_FLASHROM_ARCH_SUPPORTS\n\thelp\n\t  flashrom is a utility for identifying, reading, writing,\n\t  verifying and erasing flash chips. It is designed to flash\n\t  BIOS/EFI/coreboot/firmware/optionROM images on mainboards,\n\t  network/graphics/storage controller cards, and various other\n\t  programmer devices.\n\n\t  http://flashrom.org/\n"
  },
  {
    "path": "package/flashrom/flashrom.hash",
    "content": "# Locally computed after checking pgp signature\n# https://download.flashrom.org/releases/flashrom-v1.2.tar.bz2.asc\nsha256  e1f8d95881f5a4365dfe58776ce821dfcee0f138f75d0f44f8a3cd032d9ea42b  flashrom-v1.2.tar.bz2\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/flashrom/flashrom.mk",
    "content": "################################################################################\n#\n# flashrom\n#\n################################################################################\n\nFLASHROM_VERSION = 1.2\nFLASHROM_SOURCE = flashrom-v$(FLASHROM_VERSION).tar.bz2\nFLASHROM_SITE = https://download.flashrom.org/releases\nFLASHROM_LICENSE = GPL-2.0+\nFLASHROM_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_LIBFTDI),y)\nFLASHROM_DEPENDENCIES += host-pkgconf libftdi\nFLASHROM_MAKE_OPTS += \\\n\tCONFIG_FT2232_SPI=yes \\\n\tCONFIG_USBBLASTER_SPI=yes\nelse\nFLASHROM_MAKE_OPTS += \\\n\tCONFIG_FT2232_SPI=no \\\n\tCONFIG_USBBLASTER_SPI=no\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nFLASHROM_DEPENDENCIES += host-pkgconf libusb\nFLASHROM_MAKE_OPTS += CONFIG_ENABLE_LIBUSB1_PROGRAMMERS=yes\nelse\nFLASHROM_MAKE_OPTS += CONFIG_ENABLE_LIBUSB1_PROGRAMMERS=no\nendif\n\nifeq ($(BR2_PACKAGE_PCIUTILS),y)\nFLASHROM_DEPENDENCIES += pciutils\nFLASHROM_MAKE_OPTS += CONFIG_ENABLE_LIBPCI_PROGRAMMERS=yes\nelse\nFLASHROM_MAKE_OPTS += CONFIG_ENABLE_LIBPCI_PROGRAMMERS=no\nendif\n\ndefine FLASHROM_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -DHAVE_STRNLEN\" \\\n\t\t$(FLASHROM_MAKE_OPTS) -C $(@D)\nendef\n\ndefine FLASHROM_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/flashrom $(TARGET_DIR)/usr/sbin/flashrom\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/flatbuffers/0001-include-flatbuffers-base.h-fix-build-on-musl.patch",
    "content": "From 0315cef04a5a8a953072691faa48af9acb6009bd Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 10 Aug 2021 13:39:58 +0200\nSubject: [PATCH] include/flatbuffers/base.h: fix build on musl\n\nBuild of applications using flatbuffers such as snort3 are broken on\nmusl since version 1.11.0 and\nhttps://github.com/google/flatbuffers/commit/5f32f948102e65eaeea461b44f3b43f96c7a7a5a\nbecause strtoll_l (and strtoull_l) are not available on musl.\nflatbuffers checks for the availability of strtoull_l in CMakeLists.txt\nso flatbuffers builds successfully but for applications using\nflatbuffers, the result of this check is not available and\nFLATBUFFERS_LOCALE_INDEPENDENT is set to 1 resulting in the following\nbuild failure:\n\nIn file included from /tmp/instance-0/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/include/flatbuffers/flexbuffers.h:24,\n                 from /tmp/instance-0/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/include/flatbuffers/idl.h:26,\n                 from /tmp/instance-0/output-1/build/snort3-3.1.6.0/src/network_inspectors/perf_monitor/fbs_formatter.cc:29:\n/tmp/instance-0/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/include/flatbuffers/util.h: In function 'void flatbuffers::strtoval_impl(int64_t*, const char*, char**, int)':\n/tmp/instance-0/output-1/host/x86_64-buildroot-linux-musl/sysroot/usr/include/flatbuffers/util.h:258:12: error: 'strtoll_l' was not declared in this scope; did you mean 'strcoll_l'?\n  258 |     *val = __strtoll_impl(str, endptr, base);\n      |            ^~~~~~~~~~~~~~\n\nFix this failure by checking if __GNUC__ is defined before setting\nFLATBUFFERS_LOCALE_INDEPENDENT to 1.\n\nFixes:\n - http://autobuild.buildroot.org/results/68045b83e94f8caa337b1af7ed5f493ac1a55c47\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/google/flatbuffers/pull/6773]\n---\n include/flatbuffers/base.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/include/flatbuffers/base.h b/include/flatbuffers/base.h\nindex de7898dc..101c7598 100644\n--- a/include/flatbuffers/base.h\n+++ b/include/flatbuffers/base.h\n@@ -266,7 +266,7 @@ namespace flatbuffers {\n #ifndef FLATBUFFERS_LOCALE_INDEPENDENT\n   // Enable locale independent functions {strtof_l, strtod_l,strtoll_l, strtoull_l}.\n   #if ((defined(_MSC_VER) && _MSC_VER >= 1800)            || \\\n-       (defined(_XOPEN_VERSION) && (_XOPEN_VERSION>=700)) && (!defined(__ANDROID_API__) || (defined(__ANDROID_API__) && (__ANDROID_API__>=21))))\n+       (defined(__GLIBC__) && defined(_XOPEN_VERSION) && (_XOPEN_VERSION>=700)) && (!defined(__ANDROID_API__) || (defined(__ANDROID_API__) && (__ANDROID_API__>=21))))\n     #define FLATBUFFERS_LOCALE_INDEPENDENT 1\n   #else\n     #define FLATBUFFERS_LOCALE_INDEPENDENT 0\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/flatbuffers/Config.in",
    "content": "config BR2_PACKAGE_FLATBUFFERS\n\tbool \"flatbuffers\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  FlatBuffers is an efficient cross platform serialization\n\t  library for C++, C#, C, Go, Java, JavaScript, PHP, and\n\t  Python. It was originally created at Google for game\n\t  development and other performance-critical applications.\n\n\t  http://google.github.io/flatbuffers/\n\ncomment \"flatbuffers needs a toolchain w/ C++, gcc >= 4.7\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/flatbuffers/flatbuffers.hash",
    "content": "# Locally computed:\nsha256  9ddb9031798f4f8754d00fca2f1a68ecf9d0f83dfac7239af1311e4fd9a565c4  flatbuffers-2.0.0.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/flatbuffers/flatbuffers.mk",
    "content": "################################################################################\n#\n# flatbuffers\n#\n################################################################################\n\nFLATBUFFERS_VERSION = 2.0.0\nFLATBUFFERS_SITE = $(call github,google,flatbuffers,v$(FLATBUFFERS_VERSION))\nFLATBUFFERS_LICENSE = Apache-2.0\nFLATBUFFERS_LICENSE_FILES = LICENSE.txt\nFLATBUFFERS_CPE_ID_VENDOR = google\nFLATBUFFERS_INSTALL_STAGING = YES\n\nFLATBUFFERS_CONF_OPTS += \\\n\t-DCMAKE_CXX_FLAGS=\"-std=c++11\" \\\n\t-DFLATBUFFERS_BUILD_TESTS=OFF\n\nifeq ($(BR2_STATIC_LIBS),y)\nFLATBUFFERS_CONF_OPTS += -DFLATBUFFERS_BUILD_SHAREDLIB=OFF\nelse\nFLATBUFFERS_CONF_OPTS += -DFLATBUFFERS_BUILD_SHAREDLIB=ON\nendif\n\nHOST_FLATBUFFERS_CONF_OPTS += \\\n\t-DCMAKE_CXX_FLAGS=\"-std=c++11\" \\\n\t-DFLATBUFFERS_BUILD_FLATLIB=OFF \\\n\t-DFLATBUFFERS_BUILD_FLATC=ON \\\n\t-DFLATBUFFERS_BUILD_FLATHASH=OFF \\\n\t-DFLATBUFFERS_BUILD_GRPCTEST=OFF \\\n\t-DFLATBUFFERS_BUILD_SHAREDLIB=OFF \\\n\t-DFLATBUFFERS_BUILD_TESTS=OFF\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/flatcc/Config.in",
    "content": "config BR2_PACKAGE_FLATCC\n\tbool \"flatcc\"\n\thelp\n\t  flatcc is C language implementation of Google Flatbuffers. It\n\t  consists of both a library for the target as well as a\n\t  flatbuffer compiler tool for the host.\n\n\t  https://github.com/dvidelabs/flatcc\n"
  },
  {
    "path": "package/flatcc/flatcc.hash",
    "content": "# Locally calculated\nsha256\ta92da3566d11e19bb807a83554b1a2c644a5bd91c9d9b088514456bb56e1c666  flatcc-0.6.0.tar.gz\nsha256\tc8f0d9c1f92c658d87ebd854ee7447a3d3912d2c3a5c78c117787be5d5da8af3  LICENSE\n"
  },
  {
    "path": "package/flatcc/flatcc.mk",
    "content": "################################################################################\n#\n# FLATCC\n#\n################################################################################\n\nFLATCC_VERSION = 0.6.0\nFLATCC_SITE = $(call github,dvidelabs,flatcc,v$(FLATCC_VERSION))\nFLATCC_LICENSE = Apache-2.0\nFLATCC_LICENSE_FILES = LICENSE\nFLATCC_INSTALL_STAGING = YES\nFLATCC_DEPENDENCIES = host-flatcc\nFLATCC_CONF_OPTS = -DFLATCC_ALLOW_WERROR=OFF\nHOST_FLATCC_CONF_OPTS = -DFLATCC_ALLOW_WERROR=OFF\n\n# Disable build of tests and samples\nFLATCC_CONF_OPTS += -DFLATCC_TEST=OFF\nHOST_FLATCC_CONF_OPTS += -DFLATCC_TEST=OFF\n\n# Enable install targets\nFLATCC_CONF_OPTS += -DFLATCC_INSTALL=ON\nHOST_FLATCC_CONF_OPTS += -DFLATCC_INSTALL=ON\n\n# compiler is named flatcc or flatcc_d depending on BR2_ENABLE_DEBUG value\ndefine FLATCC_TARGET_REMOVE_FLATCC_COMPILER\n\trm $(TARGET_DIR)/usr/bin/flatcc*\nendef\n\nFLATCC_POST_INSTALL_TARGET_HOOKS += FLATCC_TARGET_REMOVE_FLATCC_COMPILER\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch",
    "content": "From ffa886a580929f26fd5e5a40c9c5334955c48553 Mon Sep 17 00:00:00 2001\nFrom: Explorer09 <explorer09@gmail.com>\nDate: Mon, 4 Sep 2017 10:47:33 +0800\nSubject: [PATCH] build: AC_USE_SYSTEM_EXTENSIONS in configure.ac.\n\nThis would, e.g. define _GNU_SOURCE in config.h, enabling the\nreallocarray() prototype in glibc 2.26+ on Linux systems with that\nversion of glibc.\n\nFixes #241.\n\nBackported from: 24fd0551333e7eded87b64dd36062da3df2f6380\nSigned-off-by: Adrian Perez de Castro <aperez@igalia.com>\n---\n configure.ac | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 55e774b..c879fe1 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -25,8 +25,10 @@\n # autoconf requirements and initialization\n \n AC_INIT([the fast lexical analyser generator],[2.6.4],[flex-help@lists.sourceforge.net],[flex])\n+AC_PREREQ([2.60])\n AC_CONFIG_SRCDIR([src/scan.l])\n AC_CONFIG_AUX_DIR([build-aux])\n+AC_USE_SYSTEM_EXTENSIONS\n LT_INIT\n AM_INIT_AUTOMAKE([1.11.3 -Wno-portability foreign check-news std-options dist-lzip parallel-tests subdir-objects])\n AC_CONFIG_HEADER([src/config.h])\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch",
    "content": "From da21733178b34eea303964db5a05e8a3ee4095b4 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 26 Aug 2017 15:17:06 +0200\nSubject: [PATCH] build: make it possible to disable the build of the flex\n program\n\nThe flex program uses fork(), which isn't available on noMMU\nsystems. However, the libfl library does not use fork(), and be used\nby other programs/libraries.\n\nTherefore, it makes sense to provide an option to disable the build of\nthe flex program.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\n---\nSubmitted-upstream: https://github.com/westes/flex/pull/256\nRefused. We'll have to adapt when they do a new release...\n---\n Makefile.am     | 2 ++\n configure.ac    | 6 ++++++\n doc/Makefile.am | 4 ++++\n src/Makefile.am | 3 +++\n 4 files changed, 15 insertions(+)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex e790e9d..8b57bc9 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -62,8 +62,10 @@ ChangeLog: $(srcdir)/tools/git2cl\n indent:\n \tcd src && $(MAKE) $(AM_MAKEFLAGS) indent\n \n+if ENABLE_PROGRAM\n install-exec-hook:\n \tcd $(DESTDIR)$(bindir) && \\\n \t\t$(LN_S) -f flex$(EXEEXT) flex++$(EXEEXT)\n+endif\n \n .PHONY: ChangeLog indent\ndiff --git a/configure.ac b/configure.ac\nindex 8882016..f49872b 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -75,6 +75,12 @@ AC_ARG_ENABLE([libfl],\n   [], [enable_libfl=yes])\n AM_CONDITIONAL([ENABLE_LIBFL], [test \"x$enable_libfl\" = xyes])\n \n+AC_ARG_ENABLE([program],\n+  [AS_HELP_STRING([--disable-program],\n+                  [do not build the flex program, only the libfl library])],\n+  [], [enable_program=yes])\n+AM_CONDITIONAL([ENABLE_PROGRAM], [test \"x$enable_program\" = xyes])\n+\n # --disable-bootstrap is intended only to workaround problems with bootstrap\n # (e.g. when cross-compiling flex or when bootstrapping has bugs).\n # Ideally we should be able to bootstrap even when cross-compiling.\ndiff --git a/src/Makefile.am b/src/Makefile.am\nindex 0d13a5a..c73bc17 100644\n--- a/src/Makefile.am\n+++ b/src/Makefile.am\n@@ -4,7 +4,10 @@ LIBS = @LIBS@\n \n m4 = @M4@\n \n+if ENABLE_PROGRAM\n bin_PROGRAMS = flex\n+endif\n+\n if ENABLE_BOOTSTRAP\n noinst_PROGRAMS = stage1flex\n endif\n-- \n2.9.4\n\n"
  },
  {
    "path": "package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch",
    "content": "From b89b8475a5b2f9444c32f7d254b35968da3c8a23 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Fri, 29 Sep 2017 18:03:51 +0200\nSubject: [PATCH] build: make it possible to disable the build of the\n documentation\n\nWhen targetting embedded evices, the documentation is not needed.\n\nBuilding the documentation default to whether the program is built.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nCc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n Makefile.am  | 8 +++++++-\n configure.ac | 6 ++++++\n 2 files changed, 13 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex fce30b2..ee75b64 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -41,9 +41,15 @@ EXTRA_DIST = \\\n \t.indent.pro \\\n \tautogen.sh\n \n+MAYBE_SUBDIRS =\n+\n+if ENABLE_DOC\n+MAYBE_SUBDIRS += doc\n+endif\n+\n SUBDIRS = \\\n \tsrc \\\n-\tdoc \\\n+\t$(MAYBE_SUBDIRS) \\\n \texamples \\\n \tpo \\\n \ttests \\\ndiff --git a/configure.ac b/configure.ac\nindex c54e98f..b3ae450 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -80,6 +80,12 @@ AC_ARG_ENABLE([program],\n   [], [enable_program=yes])\n AM_CONDITIONAL([ENABLE_PROGRAM], [test \"x$enable_program\" = xyes])\n \n+AC_ARG_ENABLE([doc],\n+  [AS_HELP_STRING([--disable-doc],\n+                  [do not build the documentation])],\n+  [], [enable_doc=${enable_program}])\n+AM_CONDITIONAL([ENABLE_DOC], [test \"x$enable_doc\" = xyes -a \"x$enable_program\" = xyes])\n+\n # --disable-bootstrap is intended only to workaround problems with bootstrap\n # (e.g. when cross-compiling flex or when bootstrapping has bugs).\n # Ideally we should be able to bootstrap even when cross-compiling.\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/flex/Config.in",
    "content": "config BR2_PACKAGE_FLEX\n\tbool \"flex\"\n\thelp\n\t  A fast lexical analyser generator. A tool for generating\n\t  programs that perform pattern-matching on text.\n\n\t  Only the library is available.\n\n\t  https://github.com/westes/flex/\n"
  },
  {
    "path": "package/flex/flex.hash",
    "content": "# Locally computed:\nsha256 e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995  flex-2.6.4.tar.gz\n# License files, locally calculated\nsha256 97fd685958d93be7f8dab939bb8161dbd6afb0718c63bfc337c24321aea44273  COPYING\n"
  },
  {
    "path": "package/flex/flex.mk",
    "content": "################################################################################\n#\n# flex\n#\n################################################################################\n\nFLEX_VERSION = 2.6.4\nFLEX_SITE = https://github.com/westes/flex/files/981163\nFLEX_INSTALL_STAGING = YES\nFLEX_LICENSE = FLEX\nFLEX_LICENSE_FILES = COPYING\nFLEX_CPE_ID_VENDOR = flex_project\n# bug does not cause stack overflows in the generated code and has been\n# noted upstream as a bug in the code generator\nFLEX_IGNORE_CVES = CVE-2019-6293\nFLEX_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-m4\nHOST_FLEX_DEPENDENCIES = host-m4\n\n# 0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch\n# 0002-build-make-it-possible-to-disable-the-build-of-the-f.patch\n# 0003-build-make-it-possible-to-disable-the-build-of-the-d.patch\nFLEX_AUTORECONF = YES\nFLEX_GETTEXTIZE = YES\nFLEX_CONF_ENV = ac_cv_path_M4=/usr/bin/m4 \\\n\tac_cv_func_reallocarray=no\n\n# Don't enable programs, they are not needed on the target, and\n# require MMU support.\n# Don't enable the doc, it's not needed on the target and requires\n# special tools (help2man) to build.\nFLEX_CONF_OPTS += --disable-program --disable-doc\nHOST_FLEX_CONF_OPTS = --disable-doc\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/flickcurl/Config.in",
    "content": "config BR2_PACKAGE_FLICKCURL\n\tbool \"flickcurl\"\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBXML2\n\t# Ensure that libcurl is built with crypto support, since\n\t# flickcurl must access https:// URLs.\n\tselect BR2_PACKAGE_OPENSSL if !(BR2_PACKAGE_GNUTLS || BR2_PACKAGE_LIBNSS)\n\tselect BR2_PACKAGE_CA_CERTIFICATES # runtime\n\thelp\n\t  Flickcurl is a C library for the Flickr API, handling\n\t  creating the requests, signing, token management, calling\n\t  the API, marshalling request parameters and decoding\n\t  responses.\n\n\t  http://librdf.org/flickcurl/\n\nconfig BR2_PACKAGE_FLICKCURL_UTILS\n\tbool \"flickcurl utilities\"\n\tdepends on BR2_PACKAGE_FLICKCURL\n\thelp\n\t  Install flickcurl utilites (flickcurl + flickrdf) to target.\n"
  },
  {
    "path": "package/flickcurl/flickcurl.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\tff42a36c7c1c7d368246f6bc9b7d792ed298348e5f0f5d432e49f6803562f5a3\tflickcurl-1.26.tar.gz\n# Locally computed\nsha256\tab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6\tCOPYING\nsha256\ta9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861\tCOPYING.LIB\nsha256\tcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30\tLICENSE-2.0.txt\nsha256\t3590f30b0fb9446a1f0a7ea5bcbb5786fa66fa362800f53d2575875d74b91909\tLICENSE.html\n"
  },
  {
    "path": "package/flickcurl/flickcurl.mk",
    "content": "################################################################################\n#\n# flickcurl\n#\n################################################################################\n\nFLICKCURL_VERSION = 1.26\nFLICKCURL_SITE = http://download.dajobe.org/flickcurl\nFLICKCURL_LICENSE = LGPL-2.1+ or GPL-2.0+ or Apache-2.0+\nFLICKCURL_LICENSE_FILES = COPYING COPYING.LIB LICENSE-2.0.txt LICENSE.html\nFLICKCURL_INSTALL_STAGING = YES\nFLICKCURL_CONFIG_SCRIPTS = flickcurl-config\nFLICKCURL_CONF_OPTS = --without-curl-config --without-xml2-config --without-raptor\nFLICKCURL_DEPENDENCIES = libcurl libxml2 host-pkgconf\n\nifeq ($(BR2_PACKAGE_FLICKCURL_UTILS),)\ndefine FLICKCURL_REMOVE_UTILS\n\trm -f $(TARGET_DIR)/usr/bin/flickcurl $(TARGET_DIR)/usr/bin/flickrdf\nendef\nFLICKCURL_POST_INSTALL_TARGET_HOOKS += FLICKCURL_REMOVE_UTILS\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/flite/0001-fix-alsa-static.patch",
    "content": "Use pkg-config to determine alsa link flags. This fixes static linking.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n\ndiff -Nuar flite-1.4-release.orig/configure.in flite-1.4-release/configure.in\n--- flite-1.4-release.orig/configure.in\t2009-08-14 23:46:38.000000000 +0300\n+++ flite-1.4-release/configure.in\t2014-04-30 18:52:33.253297236 +0300\n@@ -275,7 +275,10 @@\n                 #endif],\n               [AUDIODRIVER=\"alsa\"\n \t       AUDIODEFS=-DCST_AUDIO_ALSA\n-               AUDIOLIBS=-lasound])\n+               AUDIOLIBS=`pkg-config --libs alsa`\n+               if test \"$shared\" = false; then\n+                   AUDIOLIBS=`pkg-config --libs --static alsa`\n+               fi])\n AC_CHECK_HEADER(mmsystem.h,\n \t      [AUDIODRIVER=\"wince\"\n \t       AUDIODEFS=-DCST_AUDIO_WINCE\n"
  },
  {
    "path": "package/flite/Config.in",
    "content": "config BR2_PACKAGE_FLITE\n\tbool \"flite\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Flite: a small, fast run time synthesis engine.\n\n\t  Flite (festival-lite) is a small, fast run-time synthesis\n\t  engine developed at CMU and primarily designed for small\n\t  embedded machines and/or large servers. Flite is designed as\n\t  an alternative synthesis engine to Festival for voices built\n\t  using the FestVox suite of voice building tools.\n\n\t  http://www.festvox.org/flite\n\ncomment \"flite needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/flite/flite.hash",
    "content": "# locally computed hash\nsha256  ab1555fe5adc3f99f1d4a1a0eb1596d329fd6d74f1464a0097c81f53c0cf9e5c  flite-2.2.tar.gz\n# License files, locally calculated\nsha256  d31bceaf2823d56a8c9400f7bde3b17140e739e991eb4f203bdcf9827754ab59  COPYING\n"
  },
  {
    "path": "package/flite/flite.mk",
    "content": "################################################################################\n#\n# flite\n#\n################################################################################\n\nFLITE_VERSION = 2.2\nFLITE_SITE = $(call github,festvox,flite,v$(FLITE_VERSION))\nFLITE_LICENSE = BSD-4-Clause\nFLITE_LICENSE_FILES = COPYING\n\nFLITE_INSTALL_STAGING = YES\n# Patching configure.in\nFLITE_AUTORECONF = YES\nFLITE_DEPENDENCIES = host-pkgconf\n\n# Sadly, Flite does not support parallel build, especially when building its\n# shared libraries.\nFLITE_MAKE = $(MAKE1)\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nFLITE_DEPENDENCIES += alsa-lib\nFLITE_CONF_OPTS += --with-audio=alsa\nelse\nFLITE_CONF_OPTS += --with-audio=oss\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/flot/Config.in",
    "content": "config BR2_PACKAGE_FLOT\n\tbool \"flot\"\n\tselect BR2_PACKAGE_JQUERY\n\thelp\n\t  Flot is a pure Javascript plotting library for jQuery. It\n\t  produces graphical plots of arbitrary datasets on-the-fly\n\t  client-side.\n\n\t  The focus is on simple usage (all settings are optional),\n\t  attractive looks and interactive features like zooming and\n\t  mouse tracking.\n\n\t  The plugin works with Internet Explorer 6+, Firefox 2.x+,\n\t  Safari 3.0+, Opera 9.5+ and Konqueror 4.x+ with the HTML\n\t  canvas tag.\n\n\t  http://www.flotcharts.org/\n\nif BR2_PACKAGE_FLOT\n\ncomment \"flot plugins\"\n\nconfig BR2_PACKAGE_FLOT_CANVAS\n\tbool \"canvas\"\n\thelp\n\t  Flot plugin to render axis tick labels directly to the canvas\n\nconfig BR2_PACKAGE_FLOT_CATEGORIES\n\tbool \"categories\"\n\thelp\n\t  Flot plugin for plotting textual data or categories\n\nconfig BR2_PACKAGE_FLOT_CROSSHAIR\n\tbool \"crosshair\"\n\thelp\n\t  Flot plugin for showing crosshairs when the mouse hovers\n\t  over the plot\n\nconfig BR2_PACKAGE_FLOT_ERRORBARS\n\tbool \"errorbars\"\n\thelp\n\t  Flot plugin for plotting error bars\n\nconfig BR2_PACKAGE_FLOT_FILLBETWEEN\n\tbool \"fillbetween\"\n\thelp\n\t  Flot plugin for computing bottoms for filled line and bar\n\t  charts\n\nconfig BR2_PACKAGE_FLOT_IMAGE\n\tbool \"image\"\n\thelp\n\t  Flot plugin for plotting images\n\nconfig BR2_PACKAGE_FLOT_NAVIGATE\n\tbool \"navigate\"\n\thelp\n\t  Flot plugin for adding panning and zooming capabilities to a\n\t  plot\n\nconfig BR2_PACKAGE_FLOT_PIE\n\tbool \"pie\"\n\thelp\n\t  Flot plugin for rendering pie charts\n\nconfig BR2_PACKAGE_FLOT_RESIZE\n\tbool \"resize\"\n\thelp\n\t  Flot plugin for automatically redrawing plots when the\n\t  placeholder size changes.\n\nconfig BR2_PACKAGE_FLOT_SELECTION\n\tbool \"selection\"\n\thelp\n\t  Flot plugin for selecting regions\n\nconfig BR2_PACKAGE_FLOT_STACK\n\tbool \"stack\"\n\thelp\n\t  Flot plugin for stacking data sets\n\nconfig BR2_PACKAGE_FLOT_SYMBOL\n\tbool \"symbol\"\n\thelp\n\t  Flot plugin that adds some extra symbols for plotting points\n\nconfig BR2_PACKAGE_FLOT_THRESHOLD\n\tbool \"threshold\"\n\thelp\n\t  Flot plugin for thresholding data\n\nconfig BR2_PACKAGE_FLOT_TIME\n\tbool \"time\"\n\thelp\n\t  Flot plugin for handling time axes\n\nendif\n"
  },
  {
    "path": "package/flot/flot.hash",
    "content": "# Locally calculated\nsha256\tef9a873befe3ff5ea42ebf1c3657887265a1717744ca8ed0c2bd3dd736d16b21\tflot-0.8.3.tar.gz\nsha256\t52cb566b16d84314b92b91361ed072eaaf166e8d3dfa3d0fd3577613925f205c\tLICENSE.txt\n"
  },
  {
    "path": "package/flot/flot.mk",
    "content": "################################################################################\n#\n# flot\n#\n################################################################################\n\nFLOT_VERSION = 0.8.3\nFLOT_SITE = http://www.flotcharts.org/downloads\nFLOT_LICENSE = MIT\nFLOT_LICENSE_FILES = LICENSE.txt\nFLOT_FILES = jquery.flot $(addprefix jquery.flot.,\\\n\t$(if $(BR2_PACKAGE_FLOT_CANVAS),canvas) \\\n\t$(if $(BR2_PACKAGE_FLOT_CATEGORIES),categories) \\\n\t$(if $(BR2_PACKAGE_FLOT_CROSSHAIR),crosshair) \\\n\t$(if $(BR2_PACKAGE_FLOT_ERRORBARS),errorbars) \\\n\t$(if $(BR2_PACKAGE_FLOT_FILLBETWEEN),fillbetween) \\\n\t$(if $(BR2_PACKAGE_FLOT_IMAGE),image) \\\n\t$(if $(BR2_PACKAGE_FLOT_NAVIGATE),navigate) \\\n\t$(if $(BR2_PACKAGE_FLOT_PIE),pie) \\\n\t$(if $(BR2_PACKAGE_FLOT_RESIZE),resize) \\\n\t$(if $(BR2_PACKAGE_FLOT_SELECTION),selection) \\\n\t$(if $(BR2_PACKAGE_FLOT_STACK),stack) \\\n\t$(if $(BR2_PACKAGE_FLOT_SYMBOL),symbol) \\\n\t$(if $(BR2_PACKAGE_FLOT_THRESHOLD),threshold) \\\n\t$(if $(BR2_PACKAGE_FLOT_TIME),time) \\\n\t)\n\ndefine FLOT_INSTALL_TARGET_CMDS\n\tfor i in $(FLOT_FILES); do \\\n\t\t$(INSTALL) -m 0644 -D $(@D)/$$i.min.js $(TARGET_DIR)/var/www/$$i.js || exit 1; \\\n\tdone\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fltk/0001-disable-tests.patch",
    "content": "Disable tests, slower to build and would need host-fltk.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura fltk-1.3.2.orig/Makefile fltk-1.3.2/Makefile\n--- fltk-1.3.2.orig/Makefile\t2013-10-27 18:19:39.693208127 -0300\n+++ fltk-1.3.2/Makefile\t2013-10-27 18:20:08.032136885 -0300\n@@ -18,7 +18,7 @@\n \n include makeinclude\n \n-DIRS = $(IMAGEDIRS) src $(CAIRODIR) fluid test documentation\n+DIRS = $(IMAGEDIRS) src $(CAIRODIR) fluid documentation\n \n all: makeinclude fltk-config\n \tfor dir in $(DIRS); do\\\n"
  },
  {
    "path": "package/fltk/Config.in",
    "content": "config BR2_PACKAGE_FLTK\n\tbool \"fltk\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\thelp\n\t  A cross-platform C++ GUI toolkit for UNIX/Linux (X11),\n\t  Microsoft Windows, and MacOS X.\n\n\t  http://www.fltk.org/\n\ncomment \"fltk needs a toolchain w/ C++\"\n\tdepends on BR2_USE_MMU && BR2_PACKAGE_XORG7\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/fltk/fltk.hash",
    "content": "# From http://www.fltk.org/software.php?VERSION=1.3.7\nmd5  b28470d0509d00633d21bee9b65167f8  fltk-1.3.7-source.tar.bz2\n# Locally generated\nsha256  5ff1e90766ff4216e78e9a19a9bf527e6258f04accccd4429e9bb829b01d690d  fltk-1.3.7-source.tar.bz2\nsha256  57dd381e713fb309fb7dd85c3c38b274557ecb333475d0f1d65a5f06ad85c9a6  COPYING\n"
  },
  {
    "path": "package/fltk/fltk.mk",
    "content": "################################################################################\n#\n# fltk\n#\n################################################################################\n\nFLTK_VERSION = 1.3.7\nFLTK_SOURCE = fltk-$(FLTK_VERSION)-source.tar.bz2\nFLTK_SITE = http://fltk.org/pub/fltk/$(FLTK_VERSION)\nFLTK_INSTALL_STAGING = YES\n# We force --libdir=/usr/lib, because by default, it is set to\n# ${exec_prefix}/lib, which doesn't match the condition used by the\n# fltk build system to decide whether it should pass a -rpath,/usr/lib\n# or not. Since this rpath breaks the build, we want the fltk build\n# system to not pass it, which requires having --libdir set to\n# /usr/lib.\nFLTK_CONF_OPTS = --enable-threads --with-x --disable-gl \\\n\t--disable-localjpeg --disable-localpng --disable-localzlib \\\n\t--libdir=/usr/lib\nFLTK_DEPENDENCIES = jpeg libpng xlib_libX11 xlib_libXext xlib_libXt\nFLTK_CONFIG_SCRIPTS = fltk-config\nFLTK_LICENSE = LGPL-2.0 with exceptions\nFLTK_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_CAIRO),y)\nFLTK_CONF_OPTS += --enable-cairo\nFLTK_DEPENDENCIES += cairo\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y)\nFLTK_DEPENDENCIES += xlib_libXcursor\nFLTK_CONF_OPTS += --enable-xcursor\nelse\nFLTK_CONF_OPTS += --disable-xcursor\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y)\nFLTK_DEPENDENCIES += xlib_libXfixes\nFLTK_CONF_OPTS += --enable-xfixes\nelse\nFLTK_CONF_OPTS += --disable-xfixes\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y)\nFLTK_CONF_ENV += ac_cv_path_FTCONFIG=$(STAGING_DIR)/usr/bin/freetype-config\nFLTK_DEPENDENCIES += xlib_libXft\nelse\nFLTK_CONF_OPTS += --disable-xft\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nFLTK_DEPENDENCIES += xlib_libXinerama\nelse\nFLTK_CONF_OPTS += --disable-xinerama\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y)\nFLTK_DEPENDENCIES += xlib_libXrender\nFLTK_CONF_OPTS += --enable-xrender\nelse\nFLTK_CONF_OPTS += --disable-xrender\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fluid-soundfont/Config.in",
    "content": "config BR2_PACKAGE_FLUID_SOUNDFONT\n\tbool \"fluid-soundfont\"\n\thelp\n\t  FluidR3 is the third release of Frank Wen's pro-quality\n\t  GM/GS soundfont.  The soundfont has lots of excellent\n\t  samples, including all the GM instruments along side with\n\t  the GS instruments that are recycled and reprogrammed\n\t  versions of the GM presets.\n\n\t  This package contains Fluid General Midi (GM) soundfont in\n\t  soundfont 2.0 (.sf2) format.\n\n\t  This soundfont can be used with the FluidSynth real-time\n\t  software synthesizer.\n\n\t  http://www.hammersound.net\n"
  },
  {
    "path": "package/fluid-soundfont/fluid-soundfont.hash",
    "content": "# Locally calculated\nsha256 2621acaa1c78e4abdb24bdd163230cc577e61276936d6aa6e3180582142f0343  fluid-soundfont_3.1.orig.tar.gz\nsha256 8ef830b65c97a976b86e34bb5fde08d99dfb1db13c4149b5b20bc837ac6c4568  COPYING\n"
  },
  {
    "path": "package/fluid-soundfont/fluid-soundfont.mk",
    "content": "################################################################################\n#\n# fluid-soundfont\n#\n################################################################################\n\nFLUID_SOUNDFONT_VERSION = 3.1\nFLUID_SOUNDFONT_SOURCE = fluid-soundfont_$(FLUID_SOUNDFONT_VERSION).orig.tar.gz\n# The http://www.hammersound.net archive site seems unreliable (show HTTP 500\n# error), and also publish the file in the sfArk format, which is inconvenient\n# to be used in automated build. We use here the Debian mirror publishing the\n# file in a more convenient format (inative sf2 in a tar.gz archive).\nFLUID_SOUNDFONT_SITE = http://http.debian.net/debian/pool/main/f/fluid-soundfont\nFLUID_SOUNDFONT_LICENSE = MIT\nFLUID_SOUNDFONT_LICENSE_FILES = COPYING\n\ndefine FLUID_SOUNDFONT_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/FluidR3_GM.sf2 $(TARGET_DIR)/usr/share/soundfonts/FluidR3_GM.sf2\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fluidsynth/Config.in",
    "content": "config BR2_PACKAGE_FLUIDSYNTH\n\tbool \"fluidsynth\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\t# the .pc file installed by fluidsynth does not mention its\n\t# indirect dependencies in Libs.private.\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  FluidSynth is a real-time software synthesizer based on the\n\t  SoundFont 2 specifications and has reached widespread\n\t  distribution. FluidSynth itself does not have a graphical\n\t  user interface, but due to its powerful API several\n\t  applications utilize it and it has even found its way onto\n\t  embedded systems and is used in some mobile apps.\n\n\t  http://www.fluidsynth.org/\n\nif BR2_PACKAGE_FLUIDSYNTH\n\ncomment \"Output support\"\n\nconfig BR2_PACKAGE_FLUIDSYNTH_ALSA_LIB\n\tbool \"alsa\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_RAWMIDI\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\thelp\n\t  Enable alsa support.\n\ncomment \"alsa support needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_FLUIDSYNTH_JACK2\n\tbool \"jack2\"\n\t# See: https://sourceware.org/bugzilla/show_bug.cgi?id=19908\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # jack2\n\tdepends on BR2_USE_MMU # jack2\n\tdepends on BR2_INSTALL_LIBSTDCPP # jack2\n\tdepends on !BR2_STATIC_LIBS # jack2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # jack2\n\tselect BR2_PACKAGE_JACK2\n\thelp\n\t  Enable jack support.\n\ncomment \"jack support needs a toolchain w/ dynamic library, threads, C++\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_FLUIDSYNTH_LIBSNDFILE\n\tbool \"libsndfile\"\n\tselect BR2_PACKAGE_LIBSNDFILE\n\thelp\n\t  Enable libsndfile support, for writing output to WAV files.\n\nconfig BR2_PACKAGE_FLUIDSYNTH_PORTAUDIO\n\tbool \"portaudio\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_PORTAUDIO\n\thelp\n\t  Enable portaudio support.\n\ncomment \"portaudio support needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_FLUIDSYNTH_PULSEAUDIO\n\tbool \"pulseaudio\"\n\t# See: https://sourceware.org/bugzilla/show_bug.cgi?id=19908\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS\n\tdepends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC # pulseaudio\n\tdepends on BR2_USE_WCHAR # pulseaudio\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # pulseaudio\n\tdepends on !BR2_STATIC_LIBS # pulseaudio\n\tdepends on BR2_USE_MMU # pulseaudio\n\tselect BR2_PACKAGE_PULSEAUDIO\n\thelp\n\t  Enable PulseAudio support.\n\ncomment \"pulseaudio support needs a toolchain w/ dynamic library, wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS\n\tdepends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC\n\tdepends on BR2_STATIC_LIBS || !BR2_USE_MMU || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_FLUIDSYNTH_SDL2\n\tbool \"sdl2\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_SDL2\n\thelp\n\t  Enable SDL2 audio support.\n\ncomment \"SDL2 audio support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\ncomment \"Misc options\"\n\nconfig BR2_PACKAGE_FLUIDSYNTH_DBUS\n\tbool \"dbus\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_DBUS\n\thelp\n\t  Enable dbus support.\n\ncomment \"dbus support needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_FLUIDSYNTH_FLOATS\n\tbool \"32-bit single precision float\"\n\thelp\n\t  Enable 32-bit single precision float support, instead of\n\t  64-bit double precision floats for DSP samples.\n\nconfig BR2_PACKAGE_FLUIDSYNTH_READLINE\n\tbool \"readline\"\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  Enable readline support, for better line editing in FluidSynth\n\t  shell.\n\nendif # BR2_PACKAGE_FLUIDSYNTH\n\ncomment \"fluidsynth needs a toolchain w/ threads, wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/fluidsynth/fluidsynth.hash",
    "content": "# Locally computed\nsha256  b31807cb0f88e97f3096e2b378c9815a6acfdc20b0b14f97936d905b536965c4  fluidsynth-2.2.3.tar.gz\nsha256  9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9  LICENSE\n"
  },
  {
    "path": "package/fluidsynth/fluidsynth.mk",
    "content": "################################################################################\n#\n# fluidsynth\n#\n################################################################################\n\nFLUIDSYNTH_VERSION = 2.2.3\nFLUIDSYNTH_SITE = $(call github,FluidSynth,fluidsynth,v$(FLUIDSYNTH_VERSION))\nFLUIDSYNTH_LICENSE = LGPL-2.1+\nFLUIDSYNTH_LICENSE_FILES = LICENSE\nFLUIDSYNTH_CPE_ID_VENDOR = fluidsynth\nFLUIDSYNTH_INSTALL_STAGING = YES\nFLUIDSYNTH_DEPENDENCIES = libglib2\n\nifeq ($(BR2_PACKAGE_FLUIDSYNTH_ALSA_LIB),y)\nFLUIDSYNTH_CONF_OPTS += -Denable-alsa=1\nFLUIDSYNTH_DEPENDENCIES += alsa-lib\nelse\nFLUIDSYNTH_CONF_OPTS += -Denable-alsa=0\nendif\n\nifeq ($(BR2_PACKAGE_FLUIDSYNTH_DBUS),y)\nFLUIDSYNTH_CONF_OPTS += -Denable-dbus=1\nFLUIDSYNTH_DEPENDENCIES += dbus\nelse\nFLUIDSYNTH_CONF_OPTS += -Denable-dbus=0\nendif\n\nifeq ($(BR2_PACKAGE_FLUIDSYNTH_FLOATS),y)\nFLUIDSYNTH_CONF_OPTS += -Denable-floats=1\nelse\nFLUIDSYNTH_CONF_OPTS += -Denable-floats=0\nendif\n\nifeq ($(BR2_PACKAGE_FLUIDSYNTH_JACK2),y)\nFLUIDSYNTH_CONF_OPTS += -Denable-jack=1\nFLUIDSYNTH_DEPENDENCIES += jack2\nelse\nFLUIDSYNTH_CONF_OPTS += -Denable-jack=0\nendif\n\nifeq ($(BR2_PACKAGE_FLUIDSYNTH_LIBSNDFILE),y)\nFLUIDSYNTH_CONF_OPTS += -Denable-libsndfile=1\nFLUIDSYNTH_DEPENDENCIES += libsndfile\nelse\nFLUIDSYNTH_CONF_OPTS += -Denable-libsndfile=0\nendif\n\nifeq ($(BR2_PACKAGE_FLUIDSYNTH_PORTAUDIO),y)\nFLUIDSYNTH_CONF_OPTS += -Denable-portaudio=1\nFLUIDSYNTH_DEPENDENCIES += portaudio\nelse\nFLUIDSYNTH_CONF_OPTS += -Denable-portaudio=0\nendif\n\nifeq ($(BR2_PACKAGE_FLUIDSYNTH_PULSEAUDIO),y)\nFLUIDSYNTH_CONF_OPTS += -Denable-pulseaudio=1\nFLUIDSYNTH_DEPENDENCIES += pulseaudio\nelse\nFLUIDSYNTH_CONF_OPTS += -Denable-pulseaudio=0\nendif\n\nifeq ($(BR2_PACKAGE_FLUIDSYNTH_READLINE),y)\nFLUIDSYNTH_CONF_OPTS += -Denable-readline=1\nFLUIDSYNTH_DEPENDENCIES += readline\nelse\nFLUIDSYNTH_CONF_OPTS += -Denable-readline=0\nendif\n\nifeq ($(BR2_PACKAGE_FLUIDSYNTH_SDL2),y)\nFLUIDSYNTH_CONF_OPTS += -Denable-sdl2=1\nFLUIDSYNTH_DEPENDENCIES += sdl2\nelse\nFLUIDSYNTH_CONF_OPTS += -Denable-sdl2=0\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nFLUIDSYNTH_CONF_OPTS += -Denable-systemd=1\nFLUIDSYNTH_DEPENDENCIES += systemd\nelse\nFLUIDSYNTH_CONF_OPTS += -Denable-systemd=0\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/fluxbox/0001-fixes-bug-1138.patch",
    "content": "From 22866c4d30f5b289c429c5ca88d800200db4fc4f Mon Sep 17 00:00:00 2001\nFrom: John Sennesael <john@aminking.com>\nDate: Mon, 2 Nov 2015 15:14:32 -0600\nSubject: [PATCH] fixes bug #1138\n\n[Retrieved from:\nhttps://github.com/fluxbox/fluxbox/commit/22866c4d30f5b289c429c5ca88d800200db4fc4f]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n util/fluxbox-remote.cc | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/util/fluxbox-remote.cc b/util/fluxbox-remote.cc\nindex 59852e6a..504015b5 100644\n--- a/util/fluxbox-remote.cc\n+++ b/util/fluxbox-remote.cc\n@@ -73,7 +73,7 @@ int main(int argc, char **argv) {\n     if (strcmp(cmd, \"result\") == 0) {\n         XTextProperty text_prop;\n         if (XGetTextProperty(disp, root, &text_prop, atom_result) != 0\n-            && text_prop.value > 0\n+            && text_prop.value != 0\n             && text_prop.nitems > 0) {\n \n             printf(\"%s\", text_prop.value);\n"
  },
  {
    "path": "package/fluxbox/Config.in",
    "content": "config BR2_PACKAGE_FLUXBOX\n\tbool \"fluxbox\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\t# Runtime dependency, needed by startup script\n\tselect BR2_PACKAGE_XAPP_XMODMAP\n\thelp\n\t  The Fluxbox lightweight window manager for X\n\n\t  http://fluxbox.org\n\ncomment \"fluxbox needs a toolchain w/ C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_XORG7 && !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/fluxbox/fluxbox.hash",
    "content": "# Locally computed:\nsha256  fc8c75fe94c54ed5a5dd3fd4a752109f8949d6df67a48e5b11a261403c382ec0  fluxbox-1.3.7.tar.xz\nsha256  d445b8c8b3cedd8b9ebb7f450524cf658d4a199b3a89a9f2af4255cc589c6253  COPYING\n"
  },
  {
    "path": "package/fluxbox/fluxbox.mk",
    "content": "################################################################################\n#\n# fluxbox\n#\n################################################################################\n\nFLUXBOX_VERSION = 1.3.7\nFLUXBOX_SOURCE = fluxbox-$(FLUXBOX_VERSION).tar.xz\nFLUXBOX_SITE = http://downloads.sourceforge.net/project/fluxbox/fluxbox/$(FLUXBOX_VERSION)\nFLUXBOX_LICENSE = MIT\nFLUXBOX_LICENSE_FILES = COPYING\n\nFLUXBOX_CONF_OPTS = \\\n\t--x-includes=$(STAGING_DIR)/usr/include/X11 \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib\nFLUXBOX_DEPENDENCIES = xlib_libX11 $(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nFLUXBOX_CONF_OPTS += --enable-freetype2\nFLUXBOX_DEPENDENCIES += freetype\nelse\nFLUXBOX_CONF_OPTS += --disable-freetype2\nendif\n\nifeq ($(BR2_PACKAGE_IMLIB2_X),y)\nFLUXBOX_CONF_OPTS += --enable-imlib2\nFLUXBOX_DEPENDENCIES += imlib2\nelse\nFLUXBOX_CONF_OPTS += --disable-imlib2\nendif\n\nifeq ($(BR2_PACKAGE_LIBFRIBIDI),y)\nFLUXBOX_CONF_OPTS += --enable-fribidi\nFLUXBOX_DEPENDENCIES += libfribidi\nelse\nFLUXBOX_CONF_OPTS += --disable-fribidi\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y)\nFLUXBOX_CONF_OPTS += --enable-xft\nFLUXBOX_DEPENDENCIES += xlib_libXft\nelse\nFLUXBOX_CONF_OPTS += --disable-xft\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y)\nFLUXBOX_CONF_OPTS += --enable-xrender\nFLUXBOX_DEPENDENCIES += xlib_libXrender\nelse\nFLUXBOX_CONF_OPTS += --disable-xrender\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y)\nFLUXBOX_CONF_OPTS += --enable-xpm\nFLUXBOX_DEPENDENCIES += xlib_libXpm\nelse\nFLUXBOX_CONF_OPTS += --disable-xpm\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nFLUXBOX_CONF_OPTS += --enable-xinerama\nFLUXBOX_DEPENDENCIES += xlib_libXinerama\nelse\nFLUXBOX_CONF_OPTS += --disable-xinerama\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXEXT),y)\nFLUXBOX_CONF_OPTS += --enable-xext\nFLUXBOX_DEPENDENCIES += xlib_libXext\nelse\nFLUXBOX_CONF_OPTS += --disable-xext\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)\nFLUXBOX_CONF_OPTS += --enable-xrandr\nFLUXBOX_DEPENDENCIES += xlib_libXrandr\nelse\nFLUXBOX_CONF_OPTS += --disable-xrandr\nendif\n\ndefine FLUXBOX_INSTALL_XSESSION_FILE\n\t$(INSTALL) -m 0755 -D package/fluxbox/xsession \\\n\t\t$(TARGET_DIR)/root/.xsession\nendef\n\nFLUXBOX_POST_INSTALL_TARGET_HOOKS += FLUXBOX_INSTALL_XSESSION_FILE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fluxbox/xsession",
    "content": "#!/bin/sh\nexec startfluxbox\n"
  },
  {
    "path": "package/fmc/Config.in",
    "content": "comment \"fmc needs a toolchain w/ C++\"\n\tdepends on BR2_powerpc_e500mc || BR2_powerpc_e6500\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\ncomment \"fmc needs a Linux kernel to be built\"\n\tdepends on BR2_powerpc_e500mc || BR2_powerpc_e6500\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_FMC\n\tbool \"fmc\"\n\tdepends on BR2_powerpc_e500mc || BR2_powerpc_e6500\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_LINUX_KERNEL # fmlib\n\tselect BR2_PACKAGE_TCLAP\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_FMLIB\n\thelp\n\t  The Frame Manager Configuration tool is Freescale PowerPC\n\t  platform software package whose primary purpose is converting\n\t  Parse-Classify-Police-Distribute (PCD) descriptions of network\n\t  packets flow into hardware configuration. The tool provides an\n\t  abstraction layer between the end customer's vision of the PCD\n\t  task definition and real hardware implementation.\n\n\t  http://cache.freescale.com/files/32bit/doc/app_note/AN4760.pdf\n"
  },
  {
    "path": "package/fmc/fmc.hash",
    "content": "# Locally calculated\nsha256  cb896ec1fac2fe9a3a9bb8be2221b79acf5f9b75841609a681db0d9e7bec02a0  fmc-fsl-sdk-v2.0-br1.tar.gz\nsha256  f92862ceb95db5492f50a59d7c799c9395b714db88db92d11891dc0233e2ac42  COPYING\n"
  },
  {
    "path": "package/fmc/fmc.mk",
    "content": "################################################################################\n#\n# fmc\n#\n################################################################################\n\nFMC_VERSION = fsl-sdk-v2.0\nFMC_SITE = https://source.codeaurora.org/external/qoriq/qoriq-yocto-sdk/fmc\nFMC_SITE_METHOD = git\nFMC_LICENSE = MIT\nFMC_LICENSE_FILES = COPYING\nFMC_DEPENDENCIES = libxml2 tclap fmlib\n\nFMC_MAKE_OPTS = \\\n\tCC=\"$(TARGET_CC)\" \\\n\tCXX=\"$(TARGET_CXX)\" \\\n\tFMD_USPACE_HEADER_PATH=\"$(STAGING_DIR)/usr/include/fmd\" \\\n\tFMD_USPACE_LIB_PATH=\"$(STAGING_DIR)/usr/lib\" \\\n\tLIBXML2_HEADER_PATH=\"$(STAGING_DIR)/usr/include/libxml2\" \\\n\tTCLAP_HEADER_PATH=\"$(STAGING_DIR)/usr/include\"\n\nifeq ($(BR2_powerpc64),y)\nFMC_MAKE_OPTS += M64BIT=1\nendif\n\n# fmc's platform is the same as fmlib's.\nFMC_PLATFORM = $(call qstrip,$(BR2_PACKAGE_FMLIB_PLATFORM))\n\ndefine FMC_BUILD_CMDS\n\t$(SED) \"s:P4080:$(FMC_PLATFORM):g\" $(@D)/source/Makefile\n\t# The linking step has dependency issues so using MAKE1\n\t$(TARGET_MAKE_ENV) $(MAKE1) $(FMC_MAKE_OPTS) -C $(@D)/source\nendef\n\ndefine FMC_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/source/fmc $(TARGET_DIR)/usr/sbin/fmc\n\tcp -dpfr $(@D)/etc/fmc $(TARGET_DIR)/etc/\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fmlib/Config.in",
    "content": "comment \"fmlib needs a Linux kernel to be built\"\n\tdepends on BR2_powerpc_e500mc || BR2_powerpc_e6500\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_FMLIB\n\tbool \"fmlib\"\n\tdepends on BR2_powerpc_e500mc || BR2_powerpc_e6500\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  The Frame Manager library provides Freescale PowerPC platforms\n\t  an API on top of the Frame Manager driver ioctl calls, that\n\t  provides a user space application with a simple way to\n\t  configure driver parameters and PCD (parse - classify -\n\t  distribute) rules.\n\n\t  http://git.freescale.com/git/cgit.cgi/ppc/sdk/fmlib.git/tree/README\n\nif BR2_PACKAGE_FMLIB\nchoice\n\tprompt \"QorIQ Target Family\"\n\thelp\n\t  Select the family of QorIQ processor.\n\nconfig BR2_FMLIB_QORIQ_FAMILY_P4080\n\tbool \"p40xx\"\n\tdepends on BR2_powerpc_e500mc\n\nconfig BR2_FMLIB_QORIQ_FAMILY_T4240\n\tbool \"t42xx\"\n\tdepends on BR2_powerpc_e500mc\n\nconfig BR2_FMLIB_QORIQ_FAMILY_T2080\n\tbool \"t208x\"\n\tdepends on BR2_powerpc_e6500\n\nendchoice\n\nconfig BR2_PACKAGE_FMLIB_ARCHTYPE\n\tstring\n\tdefault \"e500mc\" if BR2_powerpc_e500mc\n\tdefault \"ppc64e6500\" if BR2_powerpc_e6500 && BR2_powerpc64\n\tdefault \"ppc32e6500\" if BR2_powerpc_e6500 && BR2_powerpc\n\nconfig BR2_PACKAGE_FMLIB_PLATFORM\n\tstring\n\tdefault \"P4080\" if BR2_FMLIB_QORIQ_FAMILY_P4080\n\tdefault \"T4240\" if BR2_FMLIB_QORIQ_FAMILY_T4240\n\tdefault \"FMAN_V3H\" if BR2_FMLIB_QORIQ_FAMILY_T2080\n\nendif\n"
  },
  {
    "path": "package/fmlib/fmlib.hash",
    "content": "# Locally computed\nsha256  59415d346af1d22f510f2785be4c7e3606dc3181476a666e832270550f7d44a6  fmlib-fsl-sdk-v2.0-br1.tar.gz\nsha256  837559e20d83910a005e7883b876cc5c42805fe4abcf7e5c5b3c8d036b7f61c8  COPYING\n"
  },
  {
    "path": "package/fmlib/fmlib.mk",
    "content": "################################################################################\n#\n# fmlib\n#\n################################################################################\n\nFMLIB_VERSION = fsl-sdk-v2.0\nFMLIB_SITE = https://source.codeaurora.org/external/qoriq/qoriq-yocto-sdk/fmlib\nFMLIB_SITE_METHOD = git\nFMLIB_LICENSE = BSD-3-Clause, GPL-2.0+\nFMLIB_LICENSE_FILES = COPYING\nFMLIB_DEPENDENCIES = linux\nFMLIB_INSTALL_STAGING = YES\n\n# This package installs a static library only, so there's\n# nothing to install to the target\nFMLIB_INSTALL_TARGET = NO\n\nFMLIB_MAKE_OPTS = \\\n\tCC=\"$(TARGET_CC)\" \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tKERNEL_SRC=\"$(LINUX_DIR)\" \\\n\tPREFIX=\"$(STAGING_DIR)/usr\"\n\nFMLIB_ARCHTYPE = $(call qstrip,$(BR2_PACKAGE_FMLIB_ARCHTYPE))\nFMLIB_PLATFORM = $(call qstrip,$(BR2_PACKAGE_FMLIB_PLATFORM))\n\ndefine FMLIB_BUILD_CMDS\n\t$(SED) \"s:P4080:$(FMLIB_PLATFORM):g\" $(@D)/Makefile\n\t$(TARGET_MAKE_ENV) $(MAKE) $(FMLIB_MAKE_OPTS) -C $(@D) libfm-$(FMLIB_ARCHTYPE).a\nendef\n\ndefine FMLIB_INSTALL_STAGING_CMDS\n\t$(RM) $(STAGING_DIR)/usr/lib/libfm.a\n\t$(TARGET_MAKE_ENV) $(MAKE) $(FMLIB_MAKE_OPTS) -C $(@D) install-libfm-$(FMLIB_ARCHTYPE)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fmt/Config.in",
    "content": "config BR2_PACKAGE_FMT\n\tbool \"fmt\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  fmt is an open-source formatting library for C++. It can be\n\t  used as a safe alternative to printf or as a fast alternative\n\t  to IOStreams.\n\n\t  https://fmt.dev\n\ncomment \"fmt needs a toolchain w/ C++, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/fmt/fmt.hash",
    "content": "# Locally calculated\nsha256  a627a56eab9554fc1e5dd9a623d0768583b3a383ff70a4312ba68f94c9d415bf  fmt-8.0.1.zip\nsha256  825c9324e70f8c839c8ba910543dd4a7daee243b86ef960594c11381a19980b8  LICENSE.rst\n"
  },
  {
    "path": "package/fmt/fmt.mk",
    "content": "################################################################################\n#\n# fmt\n#\n################################################################################\n\nFMT_VERSION = 8.0.1\nFMT_SITE = https://github.com/fmtlib/fmt/releases/download/$(FMT_VERSION)\nFMT_SOURCE = fmt-$(FMT_VERSION).zip\nFMT_LICENSE = MIT with exception\nFMT_LICENSE_FILES = LICENSE.rst\nFMT_CPE_ID_VENDOR = fmt\nFMT_INSTALL_STAGING = YES\n\nFMT_CONF_OPTS = \\\n\t-DFMT_INSTALL=ON \\\n\t-DFMT_TEST=OFF\n\ndefine FMT_EXTRACT_CMDS\n\t$(UNZIP) -d $(BUILD_DIR) $(FMT_DL_DIR)/$(FMT_SOURCE)\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/fmtools/Config.in",
    "content": "config BR2_PACKAGE_FMTOOLS\n\tbool \"fmtools\"\n\thelp\n\t  fmtools is a pair of simple command-line utilities for\n\t  \"video4linux2\" radio tuner cards under Linux. It includes\n\t  fm for power control, tuning, and volume and fmscan for\n\t  scanning for stations.\n\n\t  http://benpfaff.org/fmtools/\n"
  },
  {
    "path": "package/fmtools/fmtools.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  75174e07d8cde6d4a8a5d7bbaa3a3b0760a850e7f6840cb7c6246227b18f5a39  fmtools-2.0.7.tar.gz\n# locally computed\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  COPYING\n"
  },
  {
    "path": "package/fmtools/fmtools.mk",
    "content": "################################################################################\n#\n# fmtools\n#\n################################################################################\n\nFMTOOLS_VERSION = 2.0.7\nFMTOOLS_SITE = http://benpfaff.org/fmtools\nFMTOOLS_LICENSE = GPL-2.0+\nFMTOOLS_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/font-awesome/Config.in",
    "content": "config BR2_PACKAGE_FONT_AWESOME\n\tbool \"font-awesome\"\n\thelp\n\t  Font Awesome is a full suite of 605 pictographic icons for\n\t  easy scalable vector graphics on websites.\n\n\t  https://github.com/FortAwesome/Font-Awesome\n"
  },
  {
    "path": "package/font-awesome/font-awesome.hash",
    "content": "# Locally computed\nsha256 de512ba0e1dead382bbfce372cde74b3f18971d876fffb635ee9333f0db05d43  font-awesome-4.7.0.tar.gz\n"
  },
  {
    "path": "package/font-awesome/font-awesome.mk",
    "content": "################################################################################\n#\n# font-awesome\n#\n################################################################################\n\nFONT_AWESOME_VERSION = 4.7.0\nFONT_AWESOME_SITE = $(call github,FortAwesome,Font-Awesome,v$(FONT_AWESOME_VERSION))\nFONT_AWESOME_LICENSE = OFL-1.1 (font), MIT (CSS, LESS and Sass files)\nFONT_AWESOME_DIRECTORIES_LIST = css fonts less scss\n\ndefine FONT_AWESOME_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/share/font-awesome/\n\t$(foreach d,$(FONT_AWESOME_DIRECTORIES_LIST),\\\n\t\tcp -dpfr $(@D)/$(d) $(TARGET_DIR)/usr/share/font-awesome$(sep))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fontconfig/0001-Fix-the-build-issue-with-enable-static.patch",
    "content": "From 8208f99fa1676c42bfd8d74de3e9dac5366c150c Mon Sep 17 00:00:00 2001\nFrom: Akira TAGOH <akira@tagoh.org>\nDate: Mon, 3 Sep 2018 04:56:16 +0000\nSubject: [PATCH] Fix the build issue with --enable-static\n\nFixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/109\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://gitlab.freedesktop.org/fontconfig/fontconfig/commit/8208f99fa1676c42bfd8d74de3e9dac5366c150c]\n---\n doc/fcstring.fncs       | 12 ++++++++++++\n fontconfig/fontconfig.h |  4 ++++\n src/fcint.h             |  4 ----\n test/test-bz106632.c    | 35 ++++++++++++-----------------------\n 4 files changed, 28 insertions(+), 27 deletions(-)\n\ndiff --git a/doc/fcstring.fncs b/doc/fcstring.fncs\nindex 0412bbd..d5ec043 100644\n--- a/doc/fcstring.fncs\n+++ b/doc/fcstring.fncs\n@@ -223,6 +223,18 @@ This is just a wrapper around free(3) which helps track memory usage of\n strings within the fontconfig library.\n @@\n \n+@RET@\t\tFcChar8 *\n+@FUNC@\t\tFcStrBuildFilename\n+@TYPE1@\t\tconst FcChar8 *\t\t\t@ARG1@\t\tpath\n+@TYPE2@\t\t...\n+@PURPOSE@\tConcatenate strings as a file path\n+@DESC@\n+Creates a filename from the given elements of strings as file paths\n+and concatenate them with the appropriate file separator.\n+Arguments must be null-terminated.\n+This returns a newly-allocated memory which should be freed when no longer needed.\n+@@\n+\n @RET@\t\tFcChar8 *\n @FUNC@\t\tFcStrDirname\n @TYPE1@\t\tconst FcChar8 *\t\t\t@ARG1@\t\tfile\ndiff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h\nindex bac1dda..af870d0 100644\n--- a/fontconfig/fontconfig.h\n+++ b/fontconfig/fontconfig.h\n@@ -1076,6 +1076,10 @@ FcUtf16Len (const FcChar8   *string,\n \t    int\t\t    *nchar,\n \t    int\t\t    *wchar);\n \n+FcPublic FcChar8 *\n+FcStrBuildFilename (const FcChar8 *path,\n+\t\t    ...);\n+\n FcPublic FcChar8 *\n FcStrDirname (const FcChar8 *file);\n \ndiff --git a/src/fcint.h b/src/fcint.h\nindex de78cd8..a9d075a 100644\n--- a/src/fcint.h\n+++ b/src/fcint.h\n@@ -1282,10 +1282,6 @@ FcStrUsesHome (const FcChar8 *s);\n FcPrivate FcBool\n FcStrIsAbsoluteFilename (const FcChar8 *s);\n \n-FcPrivate FcChar8 *\n-FcStrBuildFilename (const FcChar8 *path,\n-\t\t    ...);\n-\n FcPrivate FcChar8 *\n FcStrLastSlash (const FcChar8  *path);\n \ndiff --git a/test/test-bz106632.c b/test/test-bz106632.c\nindex daa0c1e..2d67c2e 100644\n--- a/test/test-bz106632.c\n+++ b/test/test-bz106632.c\n@@ -25,25 +25,26 @@\n #ifdef HAVE_CONFIG_H\n #include \"config.h\"\n #endif\n+#include <stdio.h>\n #include <stdlib.h>\n+#include <string.h>\n #include <dirent.h>\n+#include <unistd.h>\n+#include <errno.h>\n #ifndef HAVE_STRUCT_DIRENT_D_TYPE\n #include <sys/types.h>\n #include <sys/stat.h>\n-#include <unistd.h>\n #endif\n-#include \"fcstr.c\"\n-#undef FcConfigBuildFonts\n-#undef FcConfigCreate\n-#undef FcConfigGetCurrent\n-#undef FcConfigParseAndLoadFromMemory\n-#undef FcConfigUptoDate\n-#undef FcFontList\n-#undef FcInitReinitialize\n-#undef FcPatternCreate\n-#undef FcPatternDestroy\n #include <fontconfig/fontconfig.h>\n \n+#ifdef _WIN32\n+#  define FC_DIR_SEPARATOR         '\\\\'\n+#  define FC_DIR_SEPARATOR_S       \"\\\\\"\n+#else\n+#  define FC_DIR_SEPARATOR         '/'\n+#  define FC_DIR_SEPARATOR_S       \"/\"\n+#endif\n+\n #ifdef HAVE_MKDTEMP\n #define fc_mkdtemp\tmkdtemp\n #else\n@@ -154,18 +155,6 @@ unlink_dirs (const char *dir)\n     return ret;\n }\n \n-FcChar8 *\n-FcLangNormalize (const FcChar8 *lang)\n-{\n-    return NULL;\n-}\n-\n-FcChar8 *\n-FcConfigHome (void)\n-{\n-    return NULL;\n-}\n-\n int\n main (void)\n {\n-- \n2.18.1\n\n"
  },
  {
    "path": "package/fontconfig/0002-add-pthread-as-a-dependency-of-a-static-lib.patch",
    "content": "From 40ec04a8bf36dd8d0aa3da98b167792ce2dcd114 Mon Sep 17 00:00:00 2001\nFrom: Silvan Scherrer <silvan.scherrer@aroa.ch>\nDate: Sun, 20 Sep 2020 12:52:08 +0200\nSubject: [PATCH] add pthread as a dependency of a static lib\n\nDownloaded from https://trac.netlabs.org/ports/changeset/2220\n\nPatch sent upstream:\nhttps://gitlab.freedesktop.org/fontconfig/fontconfig/-/merge_requests/121\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n configure.ac     | 2 ++\n fontconfig.pc.in | 4 ++--\n 2 files changed, 4 insertions(+), 2 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex f3189a7..594d6fd 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -690,6 +690,8 @@ fi\n have_pthread=false\n if test \"$os_win32\" = no; then\n \tAX_PTHREAD([have_pthread=true])\n+\tAC_SUBST(PTHREAD_CFLAGS)\n+\tAC_SUBST(PTHREAD_LIBS)\n fi\n if $have_pthread; then\n \tLIBS=\"$PTHREAD_LIBS $LIBS\"\ndiff --git a/fontconfig.pc.in b/fontconfig.pc.in\nindex 61b35fb..f823bac 100644\n--- a/fontconfig.pc.in\n+++ b/fontconfig.pc.in\n@@ -14,5 +14,5 @@ Version: @VERSION@\n Requires: @PKGCONFIG_REQUIRES@\n Requires.private: @PKGCONFIG_REQUIRES_PRIVATELY@\n Libs: -L${libdir} -lfontconfig\n-Libs.private: @ICONV_LIBS@ @PKG_EXPAT_LIBS@\n-Cflags: -I${includedir} @ICONV_CFLAGS@ @PKG_EXPAT_CFLAGS@\n+Libs.private: @ICONV_LIBS@ @PKG_EXPAT_LIBS@ @PTHREAD_LIBS@\n+Cflags: -I${includedir} @ICONV_CFLAGS@ @PKG_EXPAT_CFLAGS@ @PTHREAD_CFLAGS@\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/fontconfig/Config.in",
    "content": "config BR2_PACKAGE_FONTCONFIG\n\tbool \"fontconfig\"\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Fontconfig is a library for configuring and customizing font\n\t  access.\n\n\t  http://www.fontconfig.org/\n"
  },
  {
    "path": "package/fontconfig/fontconfig.hash",
    "content": "# From https://lists.freedesktop.org/archives/fontconfig/2018-August/006324.html\nsha256 f655dd2a986d7aa97e052261b36aa67b0a64989496361eca8d604e6414006741 fontconfig-2.13.1.tar.bz2\n\n# Locally calculated\nsha256 fa4cd9ab005185e10cd8f7504518856c7dd36c01e766c2bac87f4fc638e9f886 COPYING\n"
  },
  {
    "path": "package/fontconfig/fontconfig.mk",
    "content": "################################################################################\n#\n# fontconfig\n#\n################################################################################\n\nFONTCONFIG_VERSION = 2.13.1\nFONTCONFIG_SITE = http://fontconfig.org/release\nFONTCONFIG_SOURCE = fontconfig-$(FONTCONFIG_VERSION).tar.bz2\n# 0002-add-pthread-as-a-dependency-of-a-static-lib.patch\nFONTCONFIG_AUTORECONF = YES\nFONTCONFIG_INSTALL_STAGING = YES\nFONTCONFIG_DEPENDENCIES = freetype expat host-pkgconf host-gperf \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS),util-linux-libs,util-linux) \\\n\t$(TARGET_NLS_DEPENDENCIES)\nHOST_FONTCONFIG_DEPENDENCIES = \\\n\thost-freetype host-expat host-pkgconf host-gperf host-util-linux \\\n\thost-gettext\nFONTCONFIG_LICENSE = fontconfig license\nFONTCONFIG_LICENSE_FILES = COPYING\nFONTCONFIG_CPE_ID_VENDOR = fontconfig_project\n\nFONTCONFIG_CONF_OPTS = \\\n\t--with-arch=$(GNU_TARGET_NAME) \\\n\t--with-cache-dir=/var/cache/fontconfig \\\n\t--disable-docs\n\nHOST_FONTCONFIG_CONF_OPTS = \\\n\t--disable-static\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/fping/Config.in",
    "content": "config BR2_PACKAGE_FPING\n\tbool \"fping\"\n\thelp\n\t  fping is a program to send ICMP echo probes to network hosts,\n\t  similar to ping, but much better performing when pinging\n\t  multiple hosts.\n\n\t  http://fping.org/\n"
  },
  {
    "path": "package/fping/fping.hash",
    "content": "# Locally calculated\nsha256  ed38c0b9b64686a05d1b3bc1d66066114a492e04e44eef1821d43b1263cd57b8  fping-5.0.tar.gz\n\n# Hash for license file\nsha256  6051b27e4b4a648f7bc8b329024da53a6e95ce88fcf0ccc259c371a74b741757  COPYING\n"
  },
  {
    "path": "package/fping/fping.mk",
    "content": "################################################################################\n#\n# fping\n#\n################################################################################\n\nFPING_VERSION = 5.0\nFPING_SITE = http://fping.org/dist\nFPING_LICENSE = BSD-like\nFPING_LICENSE_FILES = COPYING\nFPING_SELINUX_MODULES = netutils\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/freeradius-client/0001-fix-for-nettle.patch",
    "content": "lib/rc-md5: fix build when nettle is enabled\n\nrc-md5 uses size_t, which is defined in string.h. This include is\nmissing when built against nettle.\n\nJust add it.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN freeradius-client-1.1.7.orig/lib/rc-md5.h freeradius-client-1.1.7/lib/rc-md5.h\n--- freeradius-client-1.1.7.orig/lib/rc-md5.h\t2015-01-19 17:18:26.000000000 +0100\n+++ freeradius-client-1.1.7/lib/rc-md5.h\t2015-01-25 22:56:07.815626476 +0100\n@@ -13,6 +13,7 @@\n \n #ifdef HAVE_NETTLE\n \n+#include <string.h> /* size_t */\n #include <nettle/md5-compat.h>\n \n #else\n"
  },
  {
    "path": "package/freeradius-client/Config.in",
    "content": "config BR2_PACKAGE_FREERADIUS_CLIENT\n\tbool \"freeradius-client\"\n\thelp\n\t  FreeRADIUS Client is a framework and library for\n\t  writing RADIUS Clients.\n\n\t  http://wiki.freeradius.org/project/Radiusclient\n"
  },
  {
    "path": "package/freeradius-client/freeradius-client.hash",
    "content": "# Locally computed\nsha256  eada2861b8f4928e3ac6b5bbfe11e92cd6cdcacfce40cae1085e77c1b6add0e9  freeradius-client-1.1.7.tar.gz\nsha256  e579878de7971b2224ae2263bbc61f6c465fe40e884a9068d5fa9d17fbfd2ebe  COPYRIGHT\n"
  },
  {
    "path": "package/freeradius-client/freeradius-client.mk",
    "content": "################################################################################\n#\n# freeradius-client\n#\n################################################################################\n\nFREERADIUS_CLIENT_VERSION = 1.1.7\nFREERADIUS_CLIENT_SITE = ftp://ftp.freeradius.org/pub/freeradius\nFREERADIUS_CLIENT_LICENSE = BSD-2-Clause\nFREERADIUS_CLIENT_LICENSE_FILES = COPYRIGHT\nFREERADIUS_CLIENT_INSTALL_STAGING = YES\n\nFREERADIUS_CLIENT_DEPENDENCIES = host-pkgconf\n\nifeq ($(BR2_PACKAGE_NETTLE),y)\nFREERADIUS_CLIENT_DEPENDENCIES += nettle\nFREERADIUS_CLIENT_CONF_OPTS += --with-nettle=yes\nelse\nFREERADIUS_CLIENT_CONF_OPTS += --with-nettle=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/freerdp/0001-Fix-variable-declaration-in-loop.patch",
    "content": "From ddde652460350b962d32036981ff8ed77ed2f1ed Mon Sep 17 00:00:00 2001\nFrom: Armin Novak <armin.novak@thincast.com>\nDate: Wed, 16 Sep 2020 09:30:37 +0200\nSubject: [PATCH] Fix variable declaration in loop\n\n[Retrieved from:\nhttps://github.com/FreeRDP/FreeRDP/commit/ddde652460350b962d32036981ff8ed77ed2f1ed]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n client/X11/xf_graphics.c | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/client/X11/xf_graphics.c b/client/X11/xf_graphics.c\nindex 76fbef5bd6..bf71b563c3 100644\n--- a/client/X11/xf_graphics.c\n+++ b/client/X11/xf_graphics.c\n@@ -386,6 +386,7 @@ static BOOL xf_Pointer_New(rdpContext* context, rdpPointer* pointer)\n static void xf_Pointer_Free(rdpContext* context, rdpPointer* pointer)\n {\n #ifdef WITH_XCURSOR\n+\tUINT32 i;\n \txfContext* xfc = (xfContext*)context;\n \txfPointer* xpointer = (xfPointer*)pointer;\n \n@@ -395,7 +396,7 @@ static void xf_Pointer_Free(rdpContext* context, rdpPointer* pointer)\n \tfree(xpointer->cursorWidths);\n \tfree(xpointer->cursorHeights);\n \n-\tfor (int i = 0; i < xpointer->nCursors; i++)\n+\tfor (i = 0; i < xpointer->nCursors; i++)\n \t{\n \t\tXFreeCursor(xfc->display, xpointer->cursors[i]);\n \t}\n"
  },
  {
    "path": "package/freerdp/0002-Fixed-variable-declaration-in-loop.patch",
    "content": "From 4f8a48d96e472e43a5f856c449f61669792ce9fa Mon Sep 17 00:00:00 2001\nFrom: akallabeth <akallabeth@posteo.net>\nDate: Tue, 22 Sep 2020 07:43:56 +0200\nSubject: [PATCH] Fixed variable declaration in loop\n\n[Retrieved from:\nhttps://github.com/FreeRDP/FreeRDP/commit/4f8a48d96e472e43a5f856c449f61669792ce9fa]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n client/X11/xf_graphics.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/client/X11/xf_graphics.c b/client/X11/xf_graphics.c\nindex bf71b563c3..c50726c8e4 100644\n--- a/client/X11/xf_graphics.c\n+++ b/client/X11/xf_graphics.c\n@@ -240,7 +240,7 @@ static BOOL _xf_Pointer_GetCursorForCurrentScale(rdpContext* context, const rdpP\n \tdouble xscale;\n \tdouble yscale;\n \tsize_t size;\n-\tint cursorIndex = -1;\n+\tint cursorIndex = -1, i;\n \n \tif (!context || !pointer || !context->gdi)\n \t\treturn FALSE;\n@@ -255,7 +255,7 @@ static BOOL _xf_Pointer_GetCursorForCurrentScale(rdpContext* context, const rdpP\n \txTargetSize = pointer->width * xscale;\n \tyTargetSize = pointer->height * yscale;\n \n-\tfor (int i = 0; i < xpointer->nCursors; i++)\n+\tfor (i = 0; i < xpointer->nCursors; i++)\n \t{\n \t\tif (xpointer->cursorWidths[i] == xTargetSize && xpointer->cursorHeights[i] == yTargetSize)\n \t\t{\n"
  },
  {
    "path": "package/freerdp/0003-winpr-include-winpr-file.h-fix-build-on-uclibc.patch",
    "content": "From 21036304f909eae9f7506f48703ba1c74724342b Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 31 Jul 2021 09:49:27 +0200\nSubject: [PATCH] winpr/include/winpr/file.h: fix build on uclibc\n\nInclude stdio.h to fix the following build failure with uclibc raised\nsince version 2.4.0 and\nhttps://github.com/FreeRDP/FreeRDP/commit/eb6777ea69b022c9e43a1576a2192a1cb807b1e6:\n\nIn file included from /tmp/instance-0/output-1/build/freerdp-2.4.0/winpr/libwinpr/utils/lodepng/lodepng.c:30:\n/tmp/instance-0/output-1/build/freerdp-2.4.0/winpr/include/winpr/file.h:524:11: error: unknown type name 'FILE'\n WINPR_API FILE* winpr_fopen(const char* path, const char* mode);\n           ^~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/31e770a330158035e24b7b952bec0030138482b7\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/FreeRDP/FreeRDP/pull/7205]\n---\n winpr/include/winpr/file.h | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/winpr/include/winpr/file.h b/winpr/include/winpr/file.h\nindex 48a29f9f5..79c9b392c 100644\n--- a/winpr/include/winpr/file.h\n+++ b/winpr/include/winpr/file.h\n@@ -30,6 +30,8 @@\n \n #ifndef _WIN32\n \n+#include <stdio.h>\n+\n #ifndef MAX_PATH\n #define MAX_PATH 260\n #endif\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/freerdp/Config.in",
    "content": "config BR2_PACKAGE_FREERDP\n\tbool \"freerdp\"\n\t# FreeRDP does not have a single C++ source file, however it\n\t# insists on having a C++ compiler. Removing that requirement\n\t# is a bit too much involving, so we just depend on it...\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on !BR2_STATIC_LIBS # uses dlfcn.h\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  FreeRDP is a free implementation of the Remote Desktop\n\t  Protocol (RDP), released under the Apache license\n\n\t  This only installs the freerdp libraries.\n\n\t  http://www.freerdp.com/\n\n\t  Note: this also installs a key and certificate in\n\t  /etc/freerdp/keys/ . These are publicly-known, as they\n\t  are present in FreeRDP's source tree. It is strongly\n\t  suggested that you overwrite them with your own set,\n\t  either in an overlay rootfs or in a post-build script.\n\nif BR2_PACKAGE_FREERDP\n\nconfig BR2_PACKAGE_FREERDP_GSTREAMER1\n\tbool \"gstreamer support\"\n\tdepends on BR2_PACKAGE_GSTREAMER1\n\tdepends on BR2_PACKAGE_XORG7 # xlib-libxrandr\n\t# gstreamer-1.x dependencies already dependencies of FreeRDP\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\ncomment \"gstreamer support needs X.Org\"\n\tdepends on !BR2_PACKAGE_XORG7\n\tdepends on BR2_PACKAGE_GSTREAMER1\n\nconfig BR2_PACKAGE_FREERDP_SERVER\n\tbool \"server\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXDAMAGE\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES\n\nconfig BR2_PACKAGE_FREERDP_CLIENT_X11\n\tbool \"X11 client\"\n\tdefault y\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\ncomment \"server and X11 client need X.Org\"\n\tdepends on !BR2_PACKAGE_XORG7\n\nconfig BR2_PACKAGE_FREERDP_CLIENT_WL\n\tbool \"wayland client\"\n\tdefault y\n\tdepends on BR2_PACKAGE_WAYLAND\n\tselect BR2_PACKAGE_LIBXKBCOMMON\n\nendif\n\ncomment \"freerdp needs a toolchain w/ wchar, dynamic library, threads, C++\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/freerdp/freerdp.hash",
    "content": "# From https://pub.freerdp.com/releases/freerdp-2.4.1.tar.gz.sha256\nsha256  ef75c87926643a0d0041f6556e343ac037380d4260c64885e7cdd20da0147edf  freerdp-2.4.1.tar.gz\n\n# Locally calculated\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/freerdp/freerdp.mk",
    "content": "################################################################################\n#\n# freerdp\n#\n################################################################################\n\nFREERDP_VERSION = 2.4.1\nFREERDP_SITE = https://pub.freerdp.com/releases\nFREERDP_DEPENDENCIES = libglib2 openssl zlib\nFREERDP_LICENSE = Apache-2.0\nFREERDP_LICENSE_FILES = LICENSE\nFREERDP_CPE_ID_VENDOR = freerdp\n\nFREERDP_INSTALL_STAGING = YES\n\nFREERDP_CONF_OPTS = -DWITH_MANPAGES=OFF -Wno-dev -DWITH_GSTREAMER_0_10=OFF\n\nifeq ($(BR2_PACKAGE_FREERDP_GSTREAMER1),y)\nFREERDP_CONF_OPTS += -DWITH_GSTREAMER_1_0=ON\nFREERDP_DEPENDENCIES += gstreamer1 gst1-plugins-base\nelse\nFREERDP_CONF_OPTS += -DWITH_GSTREAMER_1_0=OFF\nendif\n\nifeq ($(BR2_PACKAGE_CUPS),y)\nFREERDP_CONF_OPTS += -DWITH_CUPS=ON\nFREERDP_DEPENDENCIES += cups\nelse\nFREERDP_CONF_OPTS += -DWITH_CUPS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG),y)\nFREERDP_CONF_OPTS += -DWITH_FFMPEG=ON\nFREERDP_DEPENDENCIES += ffmpeg\nelse\nFREERDP_CONF_OPTS += -DWITH_FFMPEG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER),y)\nFREERDP_CONF_OPTS += -DWITH_ALSA=ON\nFREERDP_DEPENDENCIES += alsa-lib\nelse\nFREERDP_CONF_OPTS += -DWITH_ALSA=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nFREERDP_CONF_OPTS += -DCHANNEL_URBDRC=ON\nFREERDP_DEPENDENCIES += libusb\nelse\nFREERDP_CONF_OPTS += -DCHANNEL_URBDRC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_PULSEAUDIO),y)\nFREERDP_CONF_OPTS += -DWITH_PULSE=ON\nFREERDP_DEPENDENCIES += pulseaudio\nelse\nFREERDP_CONF_OPTS += -DWITH_PULSE=OFF\nendif\n\n# For the systemd journal\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nFREERDP_CONF_OPTS += -DWITH_LIBSYSTEMD=ON\nFREERDP_DEPENDENCIES += systemd\nelse\nFREERDP_CONF_OPTS += -DWITH_LIBSYSTEMD=OFF\nendif\n\nifeq ($(BR2_ARM_CPU_HAS_NEON),y)\nFREERDP_CONF_OPTS += -DWITH_NEON=ON\nelse\nFREERDP_CONF_OPTS += -DWITH_NEON=OFF\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE2),y)\nFREERDP_CONF_OPTS += -DWITH_SSE2=ON\nelse\nFREERDP_CONF_OPTS += -DWITH_SSE2=OFF\nendif\n\nifeq ($(BR2_arm)$(BR2_armeb),y)\nFREERDP_CONF_OPTS += -DARM_FP_ABI=$(GCC_TARGET_FLOAT_ABI)\nendif\n\n#---------------------------------------\n# Enabling server and/or client\n\n# Clients and server interface must always be enabled to build the\n# corresponding libraries.\nFREERDP_CONF_OPTS += -DWITH_SERVER_INTERFACE=ON\nFREERDP_CONF_OPTS += -DWITH_CLIENT_INTERFACE=ON\n\nifeq ($(BR2_PACKAGE_FREERDP_SERVER),y)\nFREERDP_CONF_OPTS += -DWITH_SERVER=ON\nendif\n\nifneq ($(BR2_PACKAGE_FREERDP_CLIENT_X11)$(BR2_PACKAGE_FREERDP_CLIENT_WL),)\nFREERDP_CONF_OPTS += -DWITH_CLIENT=ON\nendif\n\n#---------------------------------------\n# Libraries for client and/or server\n\n# The FreeRDP buildsystem uses non-orthogonal options. For example it\n# is not possible to build the server and the wayland client without\n# also building the X client. That's because the dependencies of the\n# server (the X libraries) are a superset of those of the X client.\n# So, as soon as FreeRDP is configured for the server and the wayland\n# client, it will believe it also has to build the X client, because\n# the libraries it needs are enabled.\n#\n# Furthermore, the shadow server is always built, even if there's nothing\n# it can serve (i.e. the X libs are disabled).\n#\n# So, we do not care whether we build too much; we remove, as\n# post-install hooks, whatever we do not want.\n\n# If Xorg is enabled, and the server or the X client are, then libX11\n# and libXext are forcibly enabled at the Kconfig level. However, if\n# Xorg is enabled but neither the server nor the X client are, then\n# there's nothing that guarantees those two libs are enabled. So we\n# really must check for them.\nifeq ($(BR2_PACKAGE_XLIB_LIBX11)$(BR2_PACKAGE_XLIB_LIBXEXT),yy)\nFREERDP_DEPENDENCIES += xlib_libX11 xlib_libXext\nFREERDP_CONF_OPTS += -DWITH_X11=ON\nelse\nFREERDP_CONF_OPTS += -DWITH_X11=OFF\nendif\n\n# The following libs are either optional or mandatory only for either\n# the server or the client. A mandatory library for either one is\n# selected from Kconfig, so we can make it conditional here\nifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y)\nFREERDP_CONF_OPTS += -DWITH_XCURSOR=ON\nFREERDP_DEPENDENCIES += xlib_libXcursor\nelse\nFREERDP_CONF_OPTS += -DWITH_XCURSOR=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y)\nFREERDP_CONF_OPTS += -DWITH_XDAMAGE=ON\nFREERDP_DEPENDENCIES += xlib_libXdamage\nelse\nFREERDP_CONF_OPTS += -DWITH_XDAMAGE=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y)\nFREERDP_CONF_OPTS += -DWITH_XFIXES=ON\nFREERDP_DEPENDENCIES += xlib_libXfixes\nelse\nFREERDP_CONF_OPTS += -DWITH_XFIXES=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXI),y)\nFREERDP_CONF_OPTS += -DWITH_XI=ON\nFREERDP_DEPENDENCIES += xlib_libXi\nelse\nFREERDP_CONF_OPTS += -DWITH_XI=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nFREERDP_CONF_OPTS += -DWITH_XINERAMA=ON\nFREERDP_DEPENDENCIES += xlib_libXinerama\nelse\nFREERDP_CONF_OPTS += -DWITH_XINERAMA=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXKBFILE),y)\nFREERDP_CONF_OPTS += -DWITH_XKBFILE=ON\nFREERDP_DEPENDENCIES += xlib_libxkbfile\nelse\nFREERDP_CONF_OPTS += -DWITH_XKBFILE=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)\nFREERDP_CONF_OPTS += -DWITH_XRANDR=ON\nFREERDP_DEPENDENCIES += xlib_libXrandr\nelse\nFREERDP_CONF_OPTS += -DWITH_XRANDR=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y)\nFREERDP_CONF_OPTS += -DWITH_XRENDER=ON\nFREERDP_DEPENDENCIES += xlib_libXrender\nelse\nFREERDP_CONF_OPTS += -DWITH_XRENDER=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXTST),y)\nFREERDP_CONF_OPTS += -DWITH_XTEST=ON\nFREERDP_DEPENDENCIES += xlib_libXtst\nelse\nFREERDP_CONF_OPTS += -DWITH_XTEST=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXV),y)\nFREERDP_CONF_OPTS += -DWITH_XV=ON\nFREERDP_DEPENDENCIES += xlib_libXv\nelse\nFREERDP_CONF_OPTS += -DWITH_XV=OFF\nendif\n\nifeq ($(BR2_PACKAGE_FREERDP_CLIENT_WL),y)\nFREERDP_DEPENDENCIES += wayland libxkbcommon\nFREERDP_CONF_OPTS += \\\n\t-DWITH_WAYLAND=ON \\\n\t-DWAYLAND_SCANNER=$(HOST_DIR)/bin/wayland-scanner\nelse\nFREERDP_CONF_OPTS += -DWITH_WAYLAND=OFF\nendif\n\n#---------------------------------------\n# Post-install hooks to cleanup and install missing stuff\n\n# Shadow server is always installed, no matter what, so we manually\n# remove it if the user does not want the server.\nifeq ($(BR2_PACKAGE_FREERDP_SERVER),)\ndefine FREERDP_RM_SHADOW_SERVER\n\trm -f $(TARGET_DIR)/usr/bin/freerdp-shadow\nendef\nFREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_RM_SHADOW_SERVER\nendif # ! server\n\n# X client is always built as soon as a client is enabled and the\n# necessary libs are enabled (e.g. because of the server), so manually\n# remove it if the user does not want it.\nifeq ($(BR2_PACKAGE_FREERDP_CLIENT_X11),)\ndefine FREERDP_RM_CLIENT_X11\n\trm -f $(TARGET_DIR)/usr/bin/xfreerdp\n\trm -f $(TARGET_DIR)/usr/lib/libxfreerdp-client*\nendef\nFREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_RM_CLIENT_X11\ndefine FREERDP_RM_CLIENT_X11_LIB\n\trm -f $(STAGING_DIR)/usr/lib/libxfreerdp-client*\nendef\nFREERDP_POST_INSTALL_STAGING_HOOKS += FREERDP_RM_CLIENT_X11_LIB\nendif # ! X client\n\n# Wayland client is always built as soon as wayland is enabled, so\n# manually remove it if the user does not want it.\nifeq ($(BR2_PACKAGE_FREERDP_CLIENT_WL),)\ndefine FREERDP_RM_CLIENT_WL\n\trm -f $(TARGET_DIR)/usr/bin/wlfreerdp\nendef\nFREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_RM_CLIENT_WL\nendif\n\n# Remove static libraries in unusual dir\ndefine FREERDP_CLEANUP\n\trm -rf $(TARGET_DIR)/usr/lib/freerdp\nendef\nFREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_CLEANUP\n\n# Install the server key and certificate, so that a client can connect.\n# A user can override them with its own in a post-build script, if needed.\n# We install them even if the server is not enabled, since another server\n# can be built and linked with libfreerdp (e.g. weston with the  RDP\n# backend). Key and cert are installed world-readable, so non-root users\n# can start a server.\ndefine FREERDP_INSTALL_KEYS\n\t$(INSTALL) -m 0644 -D $(@D)/server/Sample/server.key \\\n\t\t$(TARGET_DIR)/etc/freerdp/keys/server.key\n\t$(INSTALL) -m 0644 -D $(@D)/server/Sample/server.crt \\\n\t\t$(TARGET_DIR)/etc/freerdp/keys/server.crt\nendef\nFREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_INSTALL_KEYS\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/freescale-imx/Config.in",
    "content": "menuconfig BR2_PACKAGE_FREESCALE_IMX\n\tbool \"Freescale i.MX libraries\"\n\tdepends on BR2_arm || BR2_aarch64\n\thelp\n\t  Those packages provide hardware acceleration for GPU or VPU,\n\t  hardware optimization or some hardware tools for Freescale\n\t  i.MX platforms.\n\nif BR2_PACKAGE_FREESCALE_IMX\nchoice\n\tprompt \"i.MX platform\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX25_3STACK\n\tbool \"imx25-3stack\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX27ADS\n\tbool \"imx27ads\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX37_3STACK\n\tbool \"imx37-3stack\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX50\n\tbool \"imx50\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51\n\tbool \"imx51\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53\n\tbool \"imx53\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q\n\tbool \"imx6q/imx6dl\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S\n\tbool \"imx6sl/imx6sx\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6UL\n\tbool \"imx6ul/imx6ull\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7\n\tbool \"imx7d/imx7ulp\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8\n\tbool \"imx8\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M\n\tbool \"imx8m\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM\n\tbool \"imx8mm\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN\n\tbool \"imx8mn\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP\n\tbool \"imx8mp\"\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X\n\tbool \"imx8x\"\nendchoice\n\nconfig BR2_PACKAGE_FREESCALE_IMX_PLATFORM\n\tstring\n\tdefault \"IMX25_3STACK\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX25_3STACK\n\tdefault \"IMX27ADS\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX27ADS\n\tdefault \"IMX37_3STACK\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX37_3STACK\n\tdefault \"IMX50\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX50\n\tdefault \"IMX51\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51\n\tdefault \"IMX53\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53\n\tdefault \"IMX6Q\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q\n\tdefault \"IMX6S\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S\n\tdefault \"IMX6UL\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6UL\n\tdefault \"IMX7\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7\n\tdefault \"IMX8\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8\n\tdefault \"IMX8MQ\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M\n\tdefault \"IMX8MM\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM\n\tdefault \"IMX8MN\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN\n\tdefault \"IMX8MP\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP\n\nconfig BR2_PACKAGE_FREESCALE_IMX_HAS_VPU\n\tbool\n\tdefault y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX27ADS || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53 || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q\n\nconfig BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO\n\tbool\n\tdefault y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP\n\nconfig BR2_PACKAGE_FREESCALE_IMX_HAS_VIV_GPU\n\tbool\n\tdefault y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7 || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8 || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X\n\nsource \"package/freescale-imx/imx-alsa-plugins/Config.in\"\nsource \"package/freescale-imx/imx-codec/Config.in\"\nsource \"package/freescale-imx/imx-kobs/Config.in\"\nsource \"package/freescale-imx/imx-lib/Config.in\"\nsource \"package/freescale-imx/imx-m4fwloader/Config.in\"\nsource \"package/freescale-imx/imx-parser/Config.in\"\nsource \"package/freescale-imx/imx-uuc/Config.in\"\nsource \"package/freescale-imx/imx-vpu/Config.in\"\nsource \"package/freescale-imx/imx-vpu-hantro/Config.in\"\nsource \"package/freescale-imx/imx-vpuwrap/Config.in\"\nsource \"package/freescale-imx/firmware-imx/Config.in\"\nsource \"package/freescale-imx/imx-sc-firmware/Config.in\"\nsource \"package/freescale-imx/imx-seco/Config.in\"\nsource \"package/freescale-imx/imx-vpu-hantro-vc/Config.in\"\nif (BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 || BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53)\nsource \"package/freescale-imx/gpu-amd-bin-mx51/Config.in\"\nsource \"package/freescale-imx/libz160/Config.in\"\nendif\nif BR2_PACKAGE_FREESCALE_IMX_HAS_VIV_GPU\nsource \"package/freescale-imx/imx-gpu-g2d/Config.in\"\nsource \"package/freescale-imx/imx-gpu-viv/Config.in\"\nsource \"package/freescale-imx/kernel-module-imx-gpu-viv/Config.in\"\nendif\n\nendif\n"
  },
  {
    "path": "package/freescale-imx/firmware-imx/Config.in",
    "content": "config BR2_PACKAGE_FIRMWARE_IMX\n\tbool \"firmware-imx\"\n\tdepends on BR2_arm || BR2_aarch64 # Only relevant for i.MX\n\thelp\n\t  Firmware blobs for the Freescale i.MX SoCs.\n\n\t  It contains blobs for SDMA, VPU, HDMI, EDPC, and DDR\n\t  training.\n\n\t  This library is provided by Freescale as-is and doesn't have\n\t  an upstream.\n\nif BR2_PACKAGE_FIRMWARE_IMX\n\nconfig BR2_PACKAGE_FIRMWARE_IMX_SDMA_FW_NAME\n\tstring\n\tdefault \"imx25\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX25_3STACK\n\tdefault \"imx51\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51\n\tdefault \"imx53\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53\n\tdefault \"imx6q\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q\n\tdefault \"imx6q\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S\n\tdefault \"imx6q\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6UL\n\tdefault \"imx7d\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7\n\tdefault \"imx7d\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M\n\tdefault \"imx7d\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM\n\tdefault \"imx7d\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN\n\tdefault \"imx7d\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP\n\nconfig BR2_PACKAGE_FIRMWARE_IMX_VPU_FW_NAME\n\tstring\n\tdefault \"imx27\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX27ADS\n\tdefault \"imx51\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51\n\tdefault \"imx53\" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53\n\tdefault \"imx6\"  if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q\n\tdefault \"imx8\"  if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8\n\tdefault \"imx8\"  if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X\n\nconfig BR2_PACKAGE_FIRMWARE_IMX_NEEDS_HDMI_FW\n\tbool\n\tdefault y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M\n\nconfig BR2_PACKAGE_FIRMWARE_IMX_NEEDS_EPDC_FW\n\tbool\n\tdefault y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q\n\tdefault y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S\n\nconfig BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW\n\tbool\n\tdefault y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M\n\tdefault y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM\n\tdefault y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN\n\tdefault y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP\n\nif BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW\n\nchoice\n\tbool \"DDR training binaries\"\n\tdefault BR2_PACKAGE_FIRMWARE_IMX_LPDDR4\n\thelp\n\t  Choose the DDR training binaries to be used depending on the\n\t  kind of memory that is available on the target board (DDR4,\n\t  LPDDR4, etc...).\n\nconfig BR2_PACKAGE_FIRMWARE_IMX_LPDDR4\n\tbool \"lpddr4\"\n\thelp\n\t  Use LPDDR4 binaries (i.e.: lpddr4_pmu_train_*.bin)\n\nconfig BR2_PACKAGE_FIRMWARE_IMX_DDR4\n\tbool \"DDR4\"\n\thelp\n\t  Use DDR4 binaries (i.e.: ddr4_*_201810.bin).\n\nendchoice # DDR training FW\n\nconfig BR2_PACKAGE_FIRMWARE_IMX_IMEM_LEN\n\thex \"(LP)DDR IMEM padding length\"\n\tdefault 0x8000\n\thelp\n\t  The IMEM firmware will be padded to this length\n\nconfig BR2_PACKAGE_FIRMWARE_IMX_DMEM_LEN\n\thex \"(LP)DDR DMEM padding length\"\n\tdefault 0x4000\n\thelp\n\t  The DMEM firmware will be padded to this length\n\nendif # BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW\n\nendif # BR2_PACKAGE_FIRMWARE_IMX\n"
  },
  {
    "path": "package/freescale-imx/firmware-imx/firmware-imx.hash",
    "content": "# Locally calculated\nsha256  6b6747bf36ecc53e385234afdce01f69c5775adf0d6685c885281ca6e4e322ef  firmware-imx-8.12.bin\nsha256  ea58636bf34f589048fcd46e38497c47229fde8498df086ff5fb52f9ef8e15ee  COPYING\nsha256  50099e283cfd307f84f159aeb1a6f462351320273dbcdb80d7f2c9db0494b71c  EULA\n"
  },
  {
    "path": "package/freescale-imx/firmware-imx/firmware-imx.mk",
    "content": "################################################################################\n#\n# firmware-imx\n#\n################################################################################\n\nFIRMWARE_IMX_VERSION = 8.12\nFIRMWARE_IMX_SITE = $(FREESCALE_IMX_SITE)\nFIRMWARE_IMX_SOURCE = firmware-imx-$(FIRMWARE_IMX_VERSION).bin\n\nFIRMWARE_IMX_LICENSE = NXP Semiconductor Software License Agreement\nFIRMWARE_IMX_LICENSE_FILES = EULA COPYING\nFIRMWARE_IMX_REDISTRIBUTE = NO\n\nFIRMWARE_IMX_INSTALL_IMAGES = YES\n\ndefine FIRMWARE_IMX_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(FIRMWARE_IMX_DL_DIR)/$(FIRMWARE_IMX_SOURCE))\nendef\n\n#\n# DDR firmware\n#\n\ndefine FIRMWARE_IMX_PREPARE_DDR_FW\n\t$(TARGET_OBJCOPY) -I binary -O binary \\\n\t\t--pad-to $(BR2_PACKAGE_FIRMWARE_IMX_IMEM_LEN) --gap-fill=0x0 \\\n\t\t$(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(1)).bin \\\n\t\t$(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(1))_pad.bin\n\t$(TARGET_OBJCOPY) -I binary -O binary \\\n\t\t--pad-to $(BR2_PACKAGE_FIRMWARE_IMX_DMEM_LEN) --gap-fill=0x0 \\\n\t\t$(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(2)).bin \\\n\t\t$(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(2))_pad.bin\n\tcat $(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(1))_pad.bin \\\n\t\t$(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(2))_pad.bin > \\\n\t\t$(FIRMWARE_IMX_DDRFW_DIR)/$(strip $(3)).bin\nendef\n\nifeq ($(BR2_PACKAGE_FIRMWARE_IMX_LPDDR4),y)\nFIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys\n\ndefine FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW\n\t# Create padded versions of lpddr4_pmu_* and generate lpddr4_pmu_train_fw.bin.\n\t# lpddr4_pmu_train_fw.bin is needed when generating imx8-boot-sd.bin\n\t# which is done in post-image script.\n\t$(call FIRMWARE_IMX_PREPARE_DDR_FW, \\\n\t\tlpddr4_pmu_train_1d_imem,lpddr4_pmu_train_1d_dmem,lpddr4_pmu_train_1d_fw)\n\t$(call FIRMWARE_IMX_PREPARE_DDR_FW, \\\n\t\tlpddr4_pmu_train_2d_imem,lpddr4_pmu_train_2d_dmem,lpddr4_pmu_train_2d_fw)\n\tcat $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_1d_fw.bin \\\n\t\t$(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_2d_fw.bin > \\\n\t\t$(BINARIES_DIR)/lpddr4_pmu_train_fw.bin\n\tln -sf $(BINARIES_DIR)/lpddr4_pmu_train_fw.bin $(BINARIES_DIR)/ddr_fw.bin\n\n\t# U-Boot supports creation of the combined flash.bin image. To make\n\t# sure that U-Boot can access all available files copy them to\n\t# the binary dir.\n\tcp $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4*.bin $(BINARIES_DIR)/\nendef\nendif\n\nifeq ($(BR2_PACKAGE_FIRMWARE_IMX_DDR4),y)\nFIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys\n\ndefine FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW\n\t# Create padded versions of ddr4_* and generate ddr4_fw.bin.\n\t# ddr4_fw.bin is needed when generating imx8-boot-sd.bin\n\t# which is done in post-image script.\n\t$(call FIRMWARE_IMX_PREPARE_DDR_FW, \\\n\t\tddr4_imem_1d_201810,ddr4_dmem_1d_201810,ddr4_1d_201810_fw)\n\t$(call FIRMWARE_IMX_PREPARE_DDR_FW, \\\n\t\tddr4_imem_2d_201810,ddr4_dmem_2d_201810,ddr4_2d_201810_fw)\n\tcat $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_1d_201810_fw.bin \\\n\t\t$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_2d_201810_fw.bin > \\\n\t\t$(BINARIES_DIR)/ddr4_201810_fw.bin\n\tln -sf $(BINARIES_DIR)/ddr4_201810_fw.bin $(BINARIES_DIR)/ddr_fw.bin\n\n\t# U-Boot supports creation of the combined flash.bin image. To make\n\t# sure that U-Boot can access all available files copy them to\n\t# the binary dir.\n\tcp $(FIRMWARE_IMX_DDRFW_DIR)/ddr4*.bin $(BINARIES_DIR)/\nendef\nendif\n\n#\n# HDMI firmware\n#\n\nifeq ($(BR2_PACKAGE_FIRMWARE_IMX_NEEDS_HDMI_FW),y)\ndefine FIRMWARE_IMX_INSTALL_IMAGE_HDMI_FW\n\tcp $(@D)/firmware/hdmi/cadence/signed_hdmi_imx8m.bin \\\n\t\t$(BINARIES_DIR)/signed_hdmi_imx8m.bin\nendef\nendif\n\n#\n# EPDC firmware\n#\n\nifeq ($(BR2_PACKAGE_FIRMWARE_IMX_NEEDS_EPDC_FW),y)\ndefine FIRMWARE_IMX_INSTALL_TARGET_EPDC_FW\n\tmkdir -p $(TARGET_DIR)/lib/firmware/imx\n\tcp -r $(@D)/firmware/epdc $(TARGET_DIR)/lib/firmware/imx\n\tmv $(TARGET_DIR)/lib/firmware/imx/epdc/epdc_ED060XH2C1.fw.nonrestricted \\\n\t\t$(TARGET_DIR)/lib/firmware/imx/epdc/epdc_ED060XH2C1.fw\nendef\nendif\n\n#\n# SDMA firmware\n#\n\nFIRMWARE_IMX_SDMA_FW_NAME = $(call qstrip,$(BR2_PACKAGE_FIRMWARE_IMX_SDMA_FW_NAME))\nifneq ($(FIRMWARE_IMX_SDMA_FW_NAME),)\ndefine FIRMWARE_IMX_INSTALL_TARGET_SDMA_FW\n\tmkdir -p $(TARGET_DIR)/lib/firmware/imx/sdma\n\tcp -r $(@D)/firmware/sdma/sdma-$(FIRMWARE_IMX_SDMA_FW_NAME)*.bin \\\n\t       $(TARGET_DIR)/lib/firmware/imx/sdma/\nendef\nendif\n\n#\n# VPU firmware\n#\n\nFIRMWARE_IMX_VPU_FW_NAME = $(call qstrip,$(BR2_PACKAGE_FIRMWARE_IMX_VPU_FW_NAME))\nifneq ($(FIRMWARE_IMX_VPU_FW_NAME),)\ndefine FIRMWARE_IMX_INSTALL_TARGET_VPU_FW\n\tmkdir -p $(TARGET_DIR)/lib/firmware/vpu\n\tfor i in $$(find $(@D)/firmware/vpu/vpu_fw_$(FIRMWARE_IMX_VPU_FW_NAME)*.bin); do \\\n\t\tcp $$i $(TARGET_DIR)/lib/firmware/vpu/ ; \\\n\t\tln -sf vpu/$$(basename $$i) $(TARGET_DIR)/lib/firmware/$$(basename $$i) ; \\\n\tdone\nendef\nendif\n\ndefine FIRMWARE_IMX_INSTALL_IMAGES_CMDS\n\t$(FIRMWARE_IMX_INSTALL_IMAGE_DDR_FW)\n\t$(FIRMWARE_IMX_INSTALL_IMAGE_HDMI_FW)\nendef\n\ndefine FIRMWARE_IMX_INSTALL_TARGET_CMDS\n\t$(FIRMWARE_IMX_INSTALL_TARGET_EPDC_FW)\n\t$(FIRMWARE_IMX_INSTALL_TARGET_SDMA_FW)\n\t$(FIRMWARE_IMX_INSTALL_TARGET_VPU_FW)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/freescale-imx.mk",
    "content": "################################################################################\n#\n# freescale-imx\n#\n################################################################################\n\nFREESCALE_IMX_SITE = http://www.nxp.com/lgfiles/NMG/MAD/YOCTO\n\n# Helper for self-extracting binaries distributed by Freescale.\n#\n# The --force option makes sure it doesn't fail if the source\n# directory already exists. The --auto-accept skips the license check,\n# as it is not needed in Buildroot because we have legal-info. Since\n# there's a EULA in the binary file, we extract it in this macro, and\n# it should therefore be added to the LICENSE_FILES variable of\n# packages using this macro. Also, remember to set REDISTRIBUTE to\n# \"NO\". Indeed, this is a legal minefield: the EULA specifies that the\n# Board Support Package includes software and hardware (sic!) for\n# which a separate license is needed...\n#\n# $(1): full path to the archive file\n#\ndefine FREESCALE_IMX_EXTRACT_HELPER\n\tawk 'BEGIN      { start = 0; } \\\n\t     /^EOEULA/  { start = 0; } \\\n\t                { if (start) print; } \\\n\t     /<<EOEULA/ { start = 1; }' \\\n\t    $(1) > $(@D)/EULA\n\tcd $(@D) && sh $(1) --force --auto-accept\n\tfind $(@D)/$(basename $(notdir $(1))) -mindepth 1 -maxdepth 1 -exec mv {} $(@D) \\;\n\trmdir $(@D)/$(basename $(notdir $(1)))\nendef\n\ninclude $(sort $(wildcard package/freescale-imx/*/*.mk))\n"
  },
  {
    "path": "package/freescale-imx/gpu-amd-bin-mx51/Config.in",
    "content": "comment \"gpu-amd-bin-mx51 needs a glibc EABI toolchain w/ C++\"\n\tdepends on BR2_arm\n\tdepends on !BR2_ARM_EABI || !BR2_TOOLCHAIN_USES_GLIBC || \\\n\t\t!BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_GPU_AMD_BIN_MX51\n\tbool \"gpu-amd-bin-mx51 (also imx53)\"\n\tdepends on BR2_ARM_EABI\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_HAS_LIBEGL\n\tselect BR2_PACKAGE_HAS_LIBGLES\n\tselect BR2_PACKAGE_HAS_LIBOPENVG\n\thelp\n\t  Freescale libraries, headers and executables for the\n\t  AMD GPU on i.MX5x, containing OpenGL/ES, OpenVG\n\t  and EGL support.\n\nif BR2_PACKAGE_GPU_AMD_BIN_MX51\n\nchoice\n\tprompt \"Output option\"\n\thelp\n\t  There are two versions of this library: one for\n\t  direct framebuffer access, one for X11 rendering.\n\t  Choose here which version to install.\n\nconfig BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_X11\n\tbool \"X11\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_LIBXCB\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\tselect BR2_PACKAGE_XLIB_LIBXDMCP\n\tselect BR2_PACKAGE_XLIB_LIBXAU\n\ncomment \"X11 backend needs X.org enabled\"\n\tdepends on !BR2_PACKAGE_XORG7\n\nconfig BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_FB\n\tbool \"Framebuffer\"\n\nendchoice\n\nconfig BR2_PACKAGE_PROVIDES_LIBEGL\n\tdefault \"gpu-amd-bin-mx51\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBGLES\n\tdefault \"gpu-amd-bin-mx51\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBOPENVG\n\tdefault \"gpu-amd-bin-mx51\"\n\nconfig BR2_PACKAGE_GPU_AMD_BIN_MX51_EXAMPLES\n\tbool \"install examples\"\n\thelp\n\t  Copy the examples to the target.\n\nendif\n"
  },
  {
    "path": "package/freescale-imx/gpu-amd-bin-mx51/egl.pc",
    "content": "prefix=/usr\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: egl\nDescription: Freescale amd-gpu-bin-mx51 implementation of EGL\nVersion: 7.11.0\nLibs: -L${libdir} -lEGL\nCflags: -I${includedir}\n"
  },
  {
    "path": "package/freescale-imx/gpu-amd-bin-mx51/glesv2.pc",
    "content": "prefix=/usr\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: glesv2\nDescription: Freescale amd-gpu-bin-mx51 implementation of OpenGL ESv2\nVersion: 7.11.0\nLibs: -L${libdir} -lGLESv2\nCflags: -I${includedir}\n"
  },
  {
    "path": "package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.hash",
    "content": "# locally computed\nsha256  c7a6fa03b7aa2a375556c59908876554ba720c1e744baba2debb84a408f790db  amd-gpu-x11-bin-mx51-11.09.01.bin\nsha256  f0db68a764b5fb199729e7435f606b8d12b61ca97990336c647b7e81f4a584d9  amd-gpu-bin-mx51-11.09.01.bin\n"
  },
  {
    "path": "package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk",
    "content": "################################################################################\n#\n# gpu-amd-bin-mx51\n#\n################################################################################\n\nGPU_AMD_BIN_MX51_SITE = $(FREESCALE_IMX_SITE)\nGPU_AMD_BIN_MX51_BASE_VERSION = 11.09.01\nifeq ($(BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_FB),y)\nGPU_AMD_BIN_MX51_VERSION = $(GPU_AMD_BIN_MX51_BASE_VERSION)-fb\nGPU_AMD_BIN_MX51_SOURCE = amd-gpu-bin-mx51-$(GPU_AMD_BIN_MX51_BASE_VERSION).bin\nelse\nGPU_AMD_BIN_MX51_VERSION = $(GPU_AMD_BIN_MX51_BASE_VERSION)-x11\nGPU_AMD_BIN_MX51_SOURCE = amd-gpu-x11-bin-mx51-$(GPU_AMD_BIN_MX51_BASE_VERSION).bin\nGPU_AMD_BIN_MX51_DEPENDENCIES += libxcb xlib_libX11 xlib_libXext \\\n\txlib_libXrender xlib_libXau xlib_libXdmcp\nendif\nGPU_AMD_BIN_MX51_PROVIDES = libegl libgles libopenvg\nGPU_AMD_BIN_MX51_INSTALL_STAGING = YES\n\nGPU_AMD_BIN_MX51_LICENSE = Freescale Semiconductor Software License Agreement\nGPU_AMD_BIN_MX51_LICENSE_FILES = EULA\nGPU_AMD_BIN_MX51_REDISTRIBUTE = NO\n\ndefine GPU_AMD_BIN_MX51_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(GPU_AMD_BIN_MX51_DL_DIR)/$(GPU_AMD_BIN_MX51_SOURCE))\nendef\n\n# Upstream headers need to be compiled with -D_LINUX. It is more convenient\n# to rely on __linux__ which is defined in compiler itself\ndefine GPU_AMD_BIN_MX51_FIXUP_HEADERS\n\t$(SED) 's/_LINUX/__linux__/g' $(@D)/usr/include/*/*.h\nendef\nGPU_AMD_BIN_MX51_POST_PATCH_HOOKS += GPU_AMD_BIN_MX51_FIXUP_HEADERS\n\n# eglplatform_1.4.h contains X11 compatible headers\nifeq ($(BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_X11),y)\ndefine GPU_AMD_BIN_MX51_FIXUP_EGL_HEADERS\n\tmv $(STAGING_DIR)/usr/include/EGL/eglplatform_1.4.h $(STAGING_DIR)/usr/include/EGL/eglplatform.h\nendef\nendif\n\ndefine GPU_AMD_BIN_MX51_INSTALL_STAGING_CMDS\n\t$(INSTALL) -d $(STAGING_DIR)/usr/lib/pkgconfig\n\t$(INSTALL) -m 644 package/freescale-imx/gpu-amd-bin-mx51/*.pc $(STAGING_DIR)/usr/lib/pkgconfig/\n\t$(INSTALL) -m 755 $(@D)/usr/lib/lib* $(STAGING_DIR)/usr/lib/\n\tcp -r $(@D)/usr/include/* $(STAGING_DIR)/usr/include\n\t$(GPU_AMD_BIN_MX51_FIXUP_EGL_HEADERS)\nendef\n\nifeq ($(BR2_PACKAGE_GPU_AMD_BIN_MX51_EXAMPLES),y)\ndefine GPU_AMD_BIN_MX51_INSTALL_EXAMPLES\n\t$(INSTALL) -d $(TARGET_DIR)/usr/share/examples/gpu_amd_samples\n\t$(INSTALL) -m 755 $(@D)/usr/bin/* $(TARGET_DIR)/usr/share/examples/gpu_amd_samples\nendef\nendif\n\ndefine GPU_AMD_BIN_MX51_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 $(@D)/usr/lib/lib*so* $(TARGET_DIR)/usr/lib/\n\t$(GPU_AMD_BIN_MX51_INSTALL_EXAMPLES)\nendef\n\ndefine GPU_AMD_BIN_MX51_DEVICES\n\t/dev/gsl_kmod c 640 0 0 249 0 1 4\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/gpu-amd-bin-mx51/vg.pc",
    "content": "prefix=/usr\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: vg\nDescription: Freescale amd-gpu-bin-mx51 implementation of OpenVG\nVersion: 1.1\nLibs: -L${libdir} -lOpenVG\nCflags: -I${includedir}/\n"
  },
  {
    "path": "package/freescale-imx/imx-alsa-plugins/Config.in",
    "content": "config BR2_PACKAGE_IMX_ALSA_PLUGINS\n\tbool \"imx-alsa-plugins\"\n\tdepends on BR2_arm # Only relevant for i.MX\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib\n\tselect BR2_PACKAGE_ALSA_LIB\n\thelp\n\t  ALSA plugins specific for the Freescale i.MX platform. It\n\t  requires a kernel that includes the i.MX specific headers\n\t  to be built.\n\n\t  The following plugins are provided so far:\n\t    * Rate Converter Plugin Using Freescale ASRC Hardware\n\t      Resampler (i.MX53 and most i.MX6)\n\ncomment \"imx-alsa-libs needs an imx-specific Linux kernel to be built\"\n\tdepends on BR2_arm\n\tdepends on !BR2_LINUX_KERNEL\n\ncomment \"imx-alsa-libs needs a toolchain w/ threads\"\n\tdepends on BR2_arm\n\tdepends on BR2_LINUX_KERNEL && !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.hash",
    "content": "# Locally calculated:\nsha256  a9a5ef408a7329c2c5fa2a084ae7824afbfbebed68612bd72509488ccb0b94b3  imx-alsa-plugins-rel_imx_4.9.x_1.0.0_ga-br1.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING.GPL\n"
  },
  {
    "path": "package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.mk",
    "content": "################################################################################\n#\n# imx-alsa-plugins\n#\n################################################################################\n\nIMX_ALSA_PLUGINS_VERSION = rel_imx_4.9.x_1.0.0_ga\nIMX_ALSA_PLUGINS_SITE = https://source.codeaurora.org/external/imx/imx-alsa-plugins\nIMX_ALSA_PLUGINS_SITE_METHOD = git\nIMX_ALSA_PLUGINS_LICENSE = GPL-2.0+\nIMX_ALSA_PLUGINS_LICENSE_FILES = COPYING.GPL\nIMX_ALSA_PLUGINS_DEPENDENCIES = host-pkgconf alsa-lib\n\n# git, no configure\nIMX_ALSA_PLUGINS_AUTORECONF = YES\n\n# needs access to imx-specific kernel headers\nIMX_ALSA_PLUGINS_DEPENDENCIES += linux\nIMX_ALSA_PLUGINS_CONF_ENV += CPPFLAGS=\"$(TARGET_CPPFLAGS) -idirafter $(LINUX_DIR)/include/uapi\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-codec/Config.in",
    "content": "config BR2_PACKAGE_IMX_CODEC\n\tbool \"imx-codec\"\n\tdepends on BR2_arm || BR2_aarch64 # Only relevant for i.MX\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # prebuilt binaries\n\thelp\n\t  Binary codec libraries for the NXP i.MX SoCs.\n\n\t  This library is provided by NXP as-is and doesn't have\n\t  an upstream.\n\ncomment \"imx-codec needs a glibc toolchain\"\n\tdepends on BR2_arm || BR2_aarch64\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/freescale-imx/imx-codec/imx-codec.hash",
    "content": "# locally computed\nsha256  6bb54f91c3ca18567e14d95d3858022dc9be00dc86e9edfdb544d1240a3b2b04  imx-codec-4.3.5.bin\nsha256  78696664f7afe7f2b081c99af60082d6403fab935b1b10056ed41aec123ff7fa  COPYING\nsha256  fc93f26e4197b9240c327ce26ae6e02123f022423d4704c7b0448a37372cf2a2  EULA\n"
  },
  {
    "path": "package/freescale-imx/imx-codec/imx-codec.mk",
    "content": "################################################################################\n#\n# imx-codec\n#\n################################################################################\n\nIMX_CODEC_VERSION = 4.3.5\nIMX_CODEC_SITE = $(FREESCALE_IMX_SITE)\nIMX_CODEC_SOURCE = imx-codec-$(IMX_CODEC_VERSION).bin\nIMX_CODEC_INSTALL_STAGING = YES\n\nIMX_CODEC_LICENSE = NXP Semiconductor Software License Agreement, BSD-3-Clause (flac, ogg headers)\nIMX_CODEC_LICENSE_FILES = EULA COPYING\nIMX_CODEC_REDISTRIBUTE = NO\n\nifeq ($(BR2_aarch64),y)\nIMX_CODEC_CONF_OPTS += --enable-armv8\nendif\n\nifeq ($(BR2_ARM_EABIHF),y)\nIMX_CODEC_CONF_OPTS += --enable-fhw\nendif\n\nifeq ($(BR2_PACKAGE_IMX_VPU),y)\nIMX_CODEC_CONF_OPTS += --enable-vpu\nendif\n\ndefine IMX_CODEC_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_CODEC_DL_DIR)/$(IMX_CODEC_SOURCE))\nendef\n\n# FIXME The Makefile installs both the arm9 and arm11 versions of the\n# libraries, but we only need one of them.\n\n# Upstream installs libraries into usr/lib/imx-mm, but the dynamic\n# loader only looks in usr/lib, so move the libraries there\ndefine IMX_CODEC_FIXUP_TARGET_PATH\n\tfind $(TARGET_DIR)/usr/lib/imx-mm -not -type d \\\n\t\t-exec mv {} $(TARGET_DIR)/usr/lib \\;\n\trm -rf $(TARGET_DIR)/usr/lib/imx-mm\nendef\nIMX_CODEC_POST_INSTALL_TARGET_HOOKS += IMX_CODEC_FIXUP_TARGET_PATH\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-gpu-g2d/Config.in",
    "content": "comment \"imx-gpu-g2d needs a glibc toolchain with armhf enabled\"\n\tdepends on BR2_arm\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF\n\ncomment \"imx-gpu-g2d needs a glibc toolchain\"\n\tdepends on BR2_aarch64\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n\nconfig BR2_PACKAGE_IMX_GPU_G2D\n\tbool \"imx-gpu-g2d\"\n\t# Pre-built binaries only available for ARM EABIhf\n\tdepends on (BR2_arm && BR2_ARM_EABIHF) || BR2_aarch64\n\t# Library binaries are linked against libc.so.6\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tselect BR2_PACKAGE_IMX_GPU_VIV\n\thelp\n\t  Userspace 2D libraries for Vivante GPU on i.MX platforms.\n\n\t  This library is provided by NXP as-is and doesn't have an\n\t  upstream.\n\nif BR2_PACKAGE_IMX_GPU_G2D\n\nconfig BR2_PACKAGE_IMX_GPU_G2D_EXAMPLES\n\tbool \"install examples\"\n\thelp\n\t  Copy the Vivante G2D examples to the target.\n\nendif\n"
  },
  {
    "path": "package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.hash",
    "content": "# Locally calculated\nsha256  39fe307916e19a0892a514621121086e276a43858af90230372a1344852116a2  imx-gpu-g2d-6.4.3.p2.0-arm.bin\nsha256  2642a49e088daae4cf568a150d01e7c095995e8a6ff1883c02c3fa6d26d254b3  imx-gpu-g2d-6.4.3.p2.0-aarch64.bin\nsha256  ea58636bf34f589048fcd46e38497c47229fde8498df086ff5fb52f9ef8e15ee  COPYING\nsha256  50099e283cfd307f84f159aeb1a6f462351320273dbcdb80d7f2c9db0494b71c  EULA\n"
  },
  {
    "path": "package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk",
    "content": "################################################################################\n#\n# imx-gpu-g2d\n#\n################################################################################\n\nifeq ($(BR2_aarch64),y)\nIMX_GPU_G2D_VERSION = 6.4.3.p2.0-aarch64\nelse\nIMX_GPU_G2D_VERSION = 6.4.3.p2.0-arm\nendif\nIMX_GPU_G2D_SITE = $(FREESCALE_IMX_SITE)\nIMX_GPU_G2D_SOURCE = imx-gpu-g2d-$(IMX_GPU_G2D_VERSION).bin\nIMX_GPU_G2D_DEPENDENCIES = imx-gpu-viv\nIMX_GPU_G2D_INSTALL_STAGING = YES\n\nIMX_GPU_G2D_LICENSE = NXP Semiconductor Software License Agreement\nIMX_GPU_G2D_LICENSE_FILES = EULA COPYING\nIMX_GPU_G2D_REDISTRIBUTE = NO\n\ndefine IMX_GPU_G2D_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_GPU_G2D_DL_DIR)/$(IMX_GPU_G2D_SOURCE))\nendef\n\ndefine IMX_GPU_G2D_INSTALL_STAGING_CMDS\n\tcp -a $(@D)/g2d/usr/* $(STAGING_DIR)/usr\nendef\n\nifeq ($(BR2_PACKAGE_IMX_GPU_G2D_EXAMPLES),y)\ndefine IMX_GPU_G2D_INSTALL_EXAMPLES\n\tmkdir -p $(TARGET_DIR)/usr/share/examples/\n\tcp -a $(@D)/gpu-demos/opt/* $(TARGET_DIR)/usr/share/examples/\nendef\nendif\n\ndefine IMX_GPU_G2D_INSTALL_TARGET_CMDS\n\t$(IMX_GPU_G2D_INSTALL_EXAMPLES)\n\tcp -a $(@D)/g2d/usr/lib $(TARGET_DIR)/usr\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-gpu-viv/Config.in",
    "content": "comment \"imx-gpu-viv needs a glibc toolchain with armhf enabled\"\n\tdepends on BR2_arm\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF\n\ncomment \"imx-gpu-viv needs a glibc toolchain\"\n\tdepends on BR2_aarch64\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n\nconfig BR2_PACKAGE_IMX_GPU_VIV\n\tbool \"imx-gpu-viv\"\n\t# Pre-built binaries only available for ARM EABIhf\n\tdepends on (BR2_arm && BR2_ARM_EABIHF) || BR2_aarch64\n\t# Library binaries are linked against libc.so.6\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\t# Library binaries are linked against libdrm.so.2, except framebuffer\n\t# output on ARM\n\tselect BR2_PACKAGE_LIBDRM if !(BR2_arm && BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB)\n\tselect BR2_PACKAGE_HAS_LIBEGL\n\tselect BR2_PACKAGE_HAS_LIBGLES\n\tselect BR2_PACKAGE_HAS_LIBOPENCL\n\tselect BR2_PACKAGE_HAS_LIBOPENVG\n\thelp\n\t  Userspace libraries for Vivante GPU on i.MX platforms\n\n\t  It contains libraries and headers for GLES, OpenCL, and\n\t  OpenVG. It also contains a DRI plugin for X11. It also\n\t  contains a plugin for DirectFB-1.4.0, but that doesn't work\n\t  together with buildroot's DirectFB version.\n\n\t  This library is provided by Freescale as-is and doesn't have\n\t  an upstream.\n\nif BR2_PACKAGE_IMX_GPU_VIV\n\nchoice\n\tprompt \"Output option\"\n\thelp\n\t  There are two versions of this library: one for\n\t  direct framebuffer access, one for X11 rendering.\n\t  Choose here which version to install.\n\nconfig BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11\n\tbool \"X11\"\n\tdepends on BR2_PACKAGE_XORG7\n\t# The i.MX8 blob doesn't support X11 output\n\tdepends on !BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M\n\tselect BR2_PACKAGE_XLIB_LIBXDAMAGE\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES\n\ncomment \"X11 backend needs Xorg package\"\n\tdepends on !BR2_PACKAGE_XORG7\n\tdepends on !BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M\n\nconfig BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB\n\tbool \"Framebuffer\"\n\t# The i.MX8 blob doesn't support FB output\n\tdepends on !BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M\n\nconfig BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL\n\tbool \"Wayland\"\n\tselect BR2_PACKAGE_WAYLAND\n\tselect BR2_PACKAGE_HAS_LIBEGL_WAYLAND\n\nendchoice\n\nconfig BR2_PACKAGE_IMX_GPU_VIV_OUTPUT\n\tstring\n\tdefault \"x11\" if BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11\n\tdefault \"fb\" if BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB\n\tdefault \"wayland\" if BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL\n\nconfig BR2_PACKAGE_PROVIDES_LIBEGL\n\tdefault \"imx-gpu-viv\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBGLES\n\tdefault \"imx-gpu-viv\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBOPENCL\n\tdefault \"imx-gpu-viv\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBOPENVG\n\tdefault \"imx-gpu-viv\"\n\nconfig BR2_PACKAGE_IMX_GPU_VIV_EXAMPLES\n\tbool \"install examples\"\n\t# example binaries are linked against libstdc++.so.6\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Copy the Vivante examples to the target.\n\n\t  Warning: examples take approximately 150 MB of disk space.\n\ncomment \"imx-gpu-viv-examples need a toolchain w/ C++ support\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_IMX_GPU_VIV_GMEM_INFO\n\tbool \"install gmem_info tool\"\n\thelp\n\t  Copy the gmem_info tool to the target which provides\n\t  information about GPU memory consumption.\n\nendif\n"
  },
  {
    "path": "package/freescale-imx/imx-gpu-viv/imx-gpu-viv.hash",
    "content": "# Locally calculated\nsha256  1324b1aaf190110b80ad9a6f6533f4f50dce9e9ab8d49d8503f59764b151d219  imx-gpu-viv-6.4.3.p2.0-aarch32.bin\nsha256  003c30baefb1655790b475c3cdfa5cefbf81ea89ef37c6649b64f151dd23a52e  imx-gpu-viv-6.4.3.p2.0-aarch64.bin\nsha256  ea58636bf34f589048fcd46e38497c47229fde8498df086ff5fb52f9ef8e15ee  COPYING\nsha256  50099e283cfd307f84f159aeb1a6f462351320273dbcdb80d7f2c9db0494b71c  EULA\n"
  },
  {
    "path": "package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk",
    "content": "################################################################################\n#\n# imx-gpu-viv\n#\n################################################################################\n\nifeq ($(BR2_aarch64),y)\nIMX_GPU_VIV_VERSION = 6.4.3.p2.0-aarch64\nelse\nIMX_GPU_VIV_VERSION = 6.4.3.p2.0-aarch32\nendif\nIMX_GPU_VIV_SITE = $(FREESCALE_IMX_SITE)\nIMX_GPU_VIV_SOURCE = imx-gpu-viv-$(IMX_GPU_VIV_VERSION).bin\n\nIMX_GPU_VIV_INSTALL_STAGING = YES\n\nIMX_GPU_VIV_LICENSE = NXP Semiconductor Software License Agreement\nIMX_GPU_VIV_LICENSE_FILES = EULA COPYING\nIMX_GPU_VIV_REDISTRIBUTE = NO\n\nIMX_GPU_VIV_PROVIDES = libegl libgles libopencl libopenvg\nIMX_GPU_VIV_LIB_TARGET = $(call qstrip,$(BR2_PACKAGE_IMX_GPU_VIV_OUTPUT))\n\nifeq ($(IMX_GPU_VIV_LIB_TARGET),x11)\n# The libGAL.so library provided by imx-gpu-viv uses X functions. Packages\n# may want to link against libGAL.so (QT5 Base with OpenGL and X support\n# does so). For this to work we need build dependencies to libXdamage,\n# libXext and libXfixes so that X functions used in libGAL.so are referenced.\nIMX_GPU_VIV_DEPENDENCIES += xlib_libXdamage xlib_libXext xlib_libXfixes\nendif\n\n# Libraries are linked against libdrm, except framebuffer output on ARM\nifneq ($(IMX_GPU_VIV_LIB_TARGET)$(BR2_arm),fby)\nIMX_GPU_VIV_DEPENDENCIES += libdrm\nendif\n\nifeq ($(IMX_GPU_VIV_LIB_TARGET),wayland)\nIMX_GPU_VIV_DEPENDENCIES += wayland\nendif\n\ndefine IMX_GPU_VIV_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_GPU_VIV_DL_DIR)/$(IMX_GPU_VIV_SOURCE))\nendef\n\nifeq ($(IMX_GPU_VIV_LIB_TARGET),fb)\ndefine IMX_GPU_VIV_FIXUP_PKGCONFIG\n\tln -sf egl_linuxfb.pc $(@D)/gpu-core/usr/lib/pkgconfig/egl.pc\nendef\nelse ifeq ($(IMX_GPU_VIV_LIB_TARGET),wayland)\ndefine IMX_GPU_VIV_FIXUP_PKGCONFIG\n\tln -sf egl_wayland.pc $(@D)/gpu-core/usr/lib/pkgconfig/egl.pc\nendef\nelse ifeq ($(IMX_GPU_VIV_LIB_TARGET),x11)\ndefine IMX_GPU_VIV_FIXUP_PKGCONFIG\n\t$(foreach lib,egl gbm glesv1_cm glesv2 vg, \\\n\t\tln -sf $(lib)_x11.pc $(@D)/gpu-core/usr/lib/pkgconfig/$(lib).pc\n\t)\nendef\nendif\n\n# Instead of building, we fix up the inconsistencies that exist\n# in the upstream archive here. We also remove unused backend files.\n# Make sure these commands are idempotent.\ndefine IMX_GPU_VIV_BUILD_CMDS\n\tcp -dpfr $(@D)/gpu-core/usr/lib/$(IMX_GPU_VIV_LIB_TARGET)/* $(@D)/gpu-core/usr/lib/\n\t$(foreach backend,fb x11 wayland, \\\n\t\t$(RM) -r $(@D)/gpu-core/usr/lib/$(backend)\n\t)\n\t$(IMX_GPU_VIV_FIXUP_PKGCONFIG)\nendef\n\ndefine IMX_GPU_VIV_INSTALL_STAGING_CMDS\n\tcp -r $(@D)/gpu-core/usr/* $(STAGING_DIR)/usr\nendef\n\nifeq ($(BR2_PACKAGE_IMX_GPU_VIV_EXAMPLES),y)\ndefine IMX_GPU_VIV_INSTALL_EXAMPLES\n\tmkdir -p $(TARGET_DIR)/usr/share/examples/\n\tcp -r $(@D)/gpu-demos/opt/* $(TARGET_DIR)/usr/share/examples/\nendef\nendif\n\nifeq ($(BR2_PACKAGE_IMX_GPU_VIV_GMEM_INFO),y)\ndefine IMX_GPU_VIV_INSTALL_GMEM_INFO\n\tcp -dpfr $(@D)/gpu-tools/gmem-info/usr/bin/* $(TARGET_DIR)/usr/bin/\nendef\nendif\n\ndefine IMX_GPU_VIV_INSTALL_TARGET_CMDS\n\t$(IMX_GPU_VIV_INSTALL_EXAMPLES)\n\t$(IMX_GPU_VIV_INSTALL_GMEM_INFO)\n\tcp -a $(@D)/gpu-core/usr/lib $(TARGET_DIR)/usr\n\t$(INSTALL) -D -m 0644 $(@D)/gpu-core/etc/Vivante.icd $(TARGET_DIR)/etc/OpenCL/vendors/Vivante.icd\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-kobs/0001-Fix-musl-build.patch",
    "content": "[PATCH] Fix musl build\n\nSigned-off-by: Gary Bisson <gary.bisson@boundarydevices.com>\n---\n src/mtd.c | 1 +\n src/mtd.h | 5 +++++\n 2 files changed, 6 insertions(+)\n\ndiff --git a/src/mtd.c b/src/mtd.c\nindex 1edc441..6d2264c 100644\n--- a/src/mtd.c\n+++ b/src/mtd.c\n@@ -31,6 +31,7 @@\n #include <fcntl.h>\n #include <ctype.h>\n #include <errno.h>\n+#include <stddef.h>\n #include <sys/types.h>\n #include <sys/ioctl.h>\n \ndiff --git a/src/mtd.h b/src/mtd.h\nindex bd21add..debfc84 100644\n--- a/src/mtd.h\n+++ b/src/mtd.h\n@@ -31,6 +31,11 @@\n #include \"BootControlBlocks.h\"\n #include \"rom_nand_hamming_code_ecc.h\"\n \n+// musl library doesn't define loff_t\n+#if !defined(__GLIBC__) && !defined(__UCLIBC__)\n+#define loff_t off_t\n+#endif\n+\n //------------------------------------------------------------------------------\n // Re-definitions of true and false, because the standard ones aren't good\n // enough?\n-- \n2.5.1\n\n"
  },
  {
    "path": "package/freescale-imx/imx-kobs/0002-Fix-build-for-recent-toolchains.patch",
    "content": "[PATCH] Fix build for recent toolchains\n\nStarting with Linux 4.4 headers, mtd-user.h isn't including stdint.h\nanymore which breaks the build.\n\nSigned-off-by: Gary Bisson <gary.bisson@boundarydevices.com>\n---\n src/BootControlBlocks.h | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/src/BootControlBlocks.h b/src/BootControlBlocks.h\nindex 192eb61..aacdb64 100644\n--- a/src/BootControlBlocks.h\n+++ b/src/BootControlBlocks.h\n@@ -20,6 +20,8 @@\n #ifndef BOOTCONTROLBLOCKS_H_\n #define BOOTCONTROLBLOCKS_H_\n \n+#include <stdint.h>\n+\n #define NCB_FINGERPRINT1\t0x504d5453\t//!< 'STMP'\n #define NCB_FINGERPRINT2\t0x2042434e\t//!< 'NCB<space>' - NAND Control Block\n #define NCB_FINGERPRINT3\t0x4e494252\t//!< 'RBIN' - ROM Boot Image Block - N\n-- \n2.6.4\n\n"
  },
  {
    "path": "package/freescale-imx/imx-kobs/Config.in",
    "content": "config BR2_PACKAGE_IMX_KOBS\n\tbool \"imx-kobs\"\n\tdepends on BR2_arm # Only relevant for i.MX\n\thelp\n\t  The imx-kobs tool is used for writing images to NAND on i.MX\n\t  platforms.\n\n\t  This library is provided by Freescale as-is and doesn't have\n\t  an upstream.\n"
  },
  {
    "path": "package/freescale-imx/imx-kobs/imx-kobs.hash",
    "content": "# Locally computed\nsha256  5855c8964f908ad30e5d4500180ee57c51af68186289ef1bdf8553ee60d3b1f5  imx-kobs-a0e9adce2fb7fcd57e794d7f9a5deba0f94f521b.tar.gz\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  COPYING\n"
  },
  {
    "path": "package/freescale-imx/imx-kobs/imx-kobs.mk",
    "content": "################################################################################\n#\n# imx-kobs\n#\n################################################################################\n\nIMX_KOBS_VERSION = a0e9adce2fb7fcd57e794d7f9a5deba0f94f521b\nIMX_KOBS_SITE = $(call github,codeauroraforum,imx-kobs,$(IMX_KOBS_VERSION))\nIMX_KOBS_LICENSE = GPL-2.0+\nIMX_KOBS_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-lib/Config.in",
    "content": "comment \"imx-lib needs an imx-specific Linux kernel to be built\"\n\tdepends on BR2_arm && !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_IMX_LIB\n\tbool \"imx-lib\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_arm # Only relevant for i.MX\n\thelp\n\t  Library of userspace helpers specific for the Freescale i.MX\n\t  platform. It wraps the kernel interfaces for some i.MX\n\t  platform specific drivers. It requires a kernel that\n\t  includes the i.MX specific headers to be built.\n\n\t  This library is provided by Freescale as-is and doesn't have\n\t  an upstream.\n"
  },
  {
    "path": "package/freescale-imx/imx-lib/imx-lib.hash",
    "content": "# locally computed\nsha256  cad7823568cbd367ed8525e01c8c11a2393fc2dc481425273cb7919385367c61  imx-lib-3f777974c0c146817e2ff5cb0340ca66a1f99e57-br1.tar.gz\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING-LGPL-2.1\n"
  },
  {
    "path": "package/freescale-imx/imx-lib/imx-lib.mk",
    "content": "################################################################################\n#\n# imx-lib\n#\n################################################################################\n\nIMX_LIB_VERSION = 3f777974c0c146817e2ff5cb0340ca66a1f99e57\nIMX_LIB_SITE = https://source.codeaurora.org/external/imx/imx-lib\nIMX_LIB_SITE_METHOD = git\nIMX_LIB_LICENSE = LGPL-2.1+\nIMX_LIB_LICENSE_FILES = COPYING-LGPL-2.1\n\nIMX_LIB_INSTALL_STAGING = YES\n\n# imx-lib needs access to imx-specific kernel headers\nIMX_LIB_DEPENDENCIES += linux\nIMX_LIB_INCLUDE = \\\n\t-idirafter $(LINUX_DIR)/include/uapi\n\nIMX_LIB_MAKE_ENV = \\\n\t$(TARGET_MAKE_ENV) \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tPLATFORM=$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM) \\\n\tINCLUDE=\"$(IMX_LIB_INCLUDE)\"\n\ndefine IMX_LIB_BUILD_CMDS\n\t$(IMX_LIB_MAKE_ENV) $(MAKE1) -C $(@D)\nendef\n\ndefine IMX_LIB_INSTALL_STAGING_CMDS\n\t$(IMX_LIB_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(STAGING_DIR) install\nendef\n\ndefine IMX_LIB_INSTALL_TARGET_CMDS\n\t$(IMX_LIB_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-m4fwloader/Config.in",
    "content": "config BR2_PACKAGE_IMX_M4FWLOADER\n\tbool \"imx-m4fwloader\"\n\tdepends on BR2_arm # Only relevant for i.MX\n\thelp\n\t  This package provides a tool to load a firmware to the\n\t  Cortex-M4 core available in some i.MX processors.\n\n\t  https://github.com/codeauroraforum/imx-m4fwloader\n"
  },
  {
    "path": "package/freescale-imx/imx-m4fwloader/imx-m4fwloader.hash",
    "content": "# Locally computed\nsha256 fb6334900972fe389e808845417dd9045fb0f7eb47952fc22a00f4cdaf94af1a  imx-m4fwloader-8cf4d17a09ba23250d43381b49ba00d92406fad9.tar.gz\nsha256 c03cea027b4b40e4402fabd08557736727ec3d5bc54ad64ab6472de432198cad  LICENSE\n"
  },
  {
    "path": "package/freescale-imx/imx-m4fwloader/imx-m4fwloader.mk",
    "content": "################################################################################\n#\n# imx-m4fwloader\n#\n################################################################################\n\nIMX_M4FWLOADER_VERSION = 8cf4d17a09ba23250d43381b49ba00d92406fad9\nIMX_M4FWLOADER_SITE = $(call github,codeauroraforum,imx-m4fwloader,$(IMX_M4FWLOADER_VERSION))\nIMX_M4FWLOADER_LICENSE = GPL-2.0+\nIMX_M4FWLOADER_LICENSE_FILES = LICENSE\n\ndefine IMX_M4FWLOADER_BUILD_CMDS\n\t$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) -o $(@D)/imx-m4fwloader \\\n\t\t$(@D)/m4fwloader.c\nendef\n\ndefine IMX_M4FWLOADER_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/imx-m4fwloader \\\n\t\t$(TARGET_DIR)/usr/sbin/imx-m4fwloader\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-parser/Config.in",
    "content": "config BR2_PACKAGE_IMX_PARSER\n\tbool \"imx-parser\"\n\tdepends on BR2_arm || BR2_aarch64 # Only relevant for i.MX\n\thelp\n\t  Binary parser libraries for the NXP i.MX SoCs.\n\n\t  This library is provided by NXP as-is and doesn't have\n\t  an upstream.\n"
  },
  {
    "path": "package/freescale-imx/imx-parser/imx-parser.hash",
    "content": "# locally computed\nsha256  9cd8c49a0bb1050afcfbcc7a677a348443fda4ecacb621cc6e38897619e27c67  imx-parser-4.3.5.bin\nsha256  78696664f7afe7f2b081c99af60082d6403fab935b1b10056ed41aec123ff7fa  COPYING\nsha256  fc93f26e4197b9240c327ce26ae6e02123f022423d4704c7b0448a37372cf2a2  EULA\n"
  },
  {
    "path": "package/freescale-imx/imx-parser/imx-parser.mk",
    "content": "################################################################################\n#\n# imx-parser\n#\n################################################################################\n\nIMX_PARSER_VERSION = 4.3.5\nIMX_PARSER_SITE = $(FREESCALE_IMX_SITE)\nIMX_PARSER_SOURCE = imx-parser-$(IMX_PARSER_VERSION).bin\nIMX_PARSER_INSTALL_STAGING = YES\n\nIMX_PARSER_LICENSE = NXP Semiconductor Software License Agreement\nIMX_PARSER_LICENSE_FILES = EULA COPYING\nIMX_PARSER_REDISTRIBUTE = NO\n\nifeq ($(BR2_aarch64),y)\nIMX_PARSER_CONF_OPTS += --enable-armv8\nendif\n\nifeq ($(BR2_ARM_EABIHF),y)\nIMX_PARSER_CONF_OPTS += --enable-fhw\nelse\nIMX_PARSER_CONF_OPTS += --enable-fsw\nendif\n\ndefine IMX_PARSER_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_PARSER_DL_DIR)/$(IMX_PARSER_SOURCE))\nendef\n\n# The Makefile installs several versions of the libraries, but we only\n# need one of them, depending on the platform.\n\n# Upstream installs libraries into usr/lib/imx-mm, but the dynamic\n# loader only looks in usr/lib, so move the libraries there\ndefine IMX_PARSER_FIXUP_TARGET_PATH\n\tfind $(TARGET_DIR)/usr/lib/imx-mm -not -type d \\\n\t\t-exec mv {} $(TARGET_DIR)/usr/lib \\;\n\trm -rf $(TARGET_DIR)/usr/lib/imx-mm\nendef\nIMX_PARSER_POST_INSTALL_TARGET_HOOKS += IMX_PARSER_FIXUP_TARGET_PATH\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-sc-firmware/Config.in",
    "content": "config BR2_PACKAGE_IMX_SC_FIRMWARE\n\tbool \"imx-sc-firmware\"\n\tdepends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8 || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X\n\thelp\n\t  System Control Unit Firmware blobs for the Freescale i.MX8\n\t  SoCs.\n\n\t  This library is provided by Freescale as-is and doesn't have\n\t  an upstream.\n"
  },
  {
    "path": "package/freescale-imx/imx-sc-firmware/imx-sc-firmware.hash",
    "content": "# Locally calculated\nsha256  24a647237c0077ce0172563d67fcbc5e8f231bad7cf55a2436848c89579c5a06  imx-sc-firmware-1.8.0.bin\nsha256  a07e8df685161553d7e0b78b8b93ebe9086d95bb8635abff0ed3247992181e85  EULA\nsha256  4f3cc2dcbe3b7369bd4a51df749f432b69d8189fc2bde88f9fadbec73c686683  COPYING\n"
  },
  {
    "path": "package/freescale-imx/imx-sc-firmware/imx-sc-firmware.mk",
    "content": "################################################################################\n#\n# imx-sc-firmware\n#\n################################################################################\n\nIMX_SC_FIRMWARE_VERSION = 1.8.0\nIMX_SC_FIRMWARE_SITE = $(FREESCALE_IMX_SITE)\nIMX_SC_FIRMWARE_SOURCE = imx-sc-firmware-$(IMX_SC_FIRMWARE_VERSION).bin\n\nIMX_SC_FIRMWARE_LICENSE = NXP Semiconductor Software License Agreement\nIMX_SC_FIRMWARE_LICENSE_FILES = EULA COPYING\nIMX_SC_FIRMWARE_REDISTRIBUTE = NO\n\ndefine IMX_SC_FIRMWARE_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_SC_FIRMWARE_DL_DIR)/$(IMX_SC_FIRMWARE_SOURCE))\nendef\n\nIMX_SC_FIRMWARE_INSTALL_IMAGES = YES\n\n# SCFW firmware is needed when generating imx8-boot-sd.bin which is\n# done in post-image script.\nifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X),y)\ndefine IMX_SC_FIRMWARE_INSTALL_IMAGES_CMDS\n\tcp $(@D)/mx8qx-mek-scfw-tcm.bin $(BINARIES_DIR)/mx8qx-mek-scfw-tcm.bin\n\tcp $(@D)/mx8qx-val-scfw-tcm.bin $(BINARIES_DIR)/mx8qx-val-scfw-tcm.bin\nendef\nelse ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8),y)\ndefine IMX_SC_FIRMWARE_INSTALL_IMAGES_CMDS\n\tcp $(@D)/mx8qm-*-scfw-tcm.bin $(BINARIES_DIR)/\nendef\nendif\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-seco/Config.in",
    "content": "config BR2_PACKAGE_IMX_SECO\n\tbool \"imx-seco\"\n\tdepends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8 || \\\n\t\tBR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X\n\thelp\n\t  Firmware file for the i.MX8 and i.MX8X Security Controller.\n\n\t  This library is provided by Freescale as-is and doesn't have\n\t  an upstream.\n\nif BR2_PACKAGE_IMX_SECO\n\nchoice\n\tprompt \"i.MX Seco Firmware Release\"\n\tdefault BR2_PACKAGE_IMX_SECO_MX8QMB0 if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8\n\tdefault BR2_PACKAGE_IMX_SECO_MX8QXC0 if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X\n\thelp\n\t  Select the appropriate ahab container image to install\n\t  to match the iMX asics revision.\n\n\t  Note - mismatches result in a failure to boot\n\nconfig BR2_PACKAGE_IMX_SECO_MX8DXLA0\n\tbool \"imx-seco-mx8dxla0\"\n\tdepends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8\n\nconfig BR2_PACKAGE_IMX_SECO_MX8DXLA1\n\tbool \"imx-seco-mx8dxla1\"\n\tdepends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8\n\nconfig BR2_PACKAGE_IMX_SECO_MX8QMB0\n\tbool \"imx-seco-mx8qmb0\"\n\tdepends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8\n\nconfig BR2_PACKAGE_IMX_SECO_MX8QXB0\n\tbool \"imx-seco-mx8qxb0\"\n\tdepends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X\n\nconfig BR2_PACKAGE_IMX_SECO_MX8QXC0\n\tbool \"imx-seco-mx8qxc0\"\n\tdepends on BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X\n\nendchoice\n\nconfig BR2_PACKAGE_IMX_SECO_AHAB_CONTAINER_IMAGE\n\tstring\n\tdefault \"mx8dxla0-ahab-container.img\" if BR2_PACKAGE_IMX_SECO_MX8DXLA0\n\tdefault \"mx8dxla1-ahab-container.img\" if BR2_PACKAGE_IMX_SECO_MX8DXLA1\n\tdefault \"mx8qmb0-ahab-container.img\" if BR2_PACKAGE_IMX_SECO_MX8QMB0\n\tdefault \"mx8qxb0-ahab-container.img\" if BR2_PACKAGE_IMX_SECO_MX8QXB0\n\tdefault \"mx8qxc0-ahab-container.img\" if BR2_PACKAGE_IMX_SECO_MX8QXC0\n\nendif\n"
  },
  {
    "path": "package/freescale-imx/imx-seco/imx-seco.hash",
    "content": "# Locally calculated\nsha256  08cf25a4be6841ca7264a50b29c311b386eae1c02fced8a3b55fd04213acb4bc  imx-seco-3.7.5.bin\nsha256  72edc2072c86d93aa1993d15d4d19d96270af3749b0108995ad50c81d1461f52  EULA\nsha256  9c16421e7c702f56756650b8ac954d34556327e598a8666e6e8f4eb3a1aa95f1  COPYING\n"
  },
  {
    "path": "package/freescale-imx/imx-seco/imx-seco.mk",
    "content": "################################################################################\n#\n# imx-seco\n#\n################################################################################\n\nIMX_SECO_VERSION = 3.7.5\nIMX_SECO_SITE = $(FREESCALE_IMX_SITE)\nIMX_SECO_SOURCE = imx-seco-$(IMX_SECO_VERSION).bin\n\nIMX_SECO_LICENSE = NXP Semiconductor Software License Agreement\nIMX_SECO_LICENSE_FILES = EULA COPYING\nIMX_SECO_REDISTRIBUTE = NO\n\ndefine IMX_SECO_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_SECO_DL_DIR)/$(IMX_SECO_SOURCE))\nendef\n\nIMX_SECO_INSTALL_IMAGES = YES\n\n# SECO firmware is needed when generating imx8-boot-sd.bin which\n# is done in post-image script.\nIMX_SECO_AHAB_CONTAINER_IMAGE = $(call qstrip,$(BR2_PACKAGE_IMX_SECO_AHAB_CONTAINER_IMAGE))\n\ndefine IMX_SECO_INSTALL_IMAGES_CMDS\n\tcp $(@D)/firmware/seco/$(IMX_SECO_AHAB_CONTAINER_IMAGE) \\\n\t\t$(BINARIES_DIR)/ahab-container.img\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-uuc/Config.in",
    "content": "config BR2_PACKAGE_IMX_UUC\n\tbool \"imx-uuc\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_arm || BR2_aarch64 # Only relevant for i.MX\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # usb_functionfs_descs_head_v2\n\tselect BR2_PACKAGE_HOST_DOSFSTOOLS\n\thelp\n\t  This package provides the Universal Adapter user-space\n\t  utility that is used to receive commands from the\n\t  Manufacturing Tool using the Freescale UTP Protocol.\n\n\t  It requires a Freescale/NXP kernel whose configuration\n\t  contains the CONFIG_FSL_UTP option.\n\n\t  This package is provided by Freescale/NXP as-is and doesn't\n\t  have an upstream.\n\ncomment \"imx-uuc needs a toolchain w/ threads, headers >= 3.18\"\n\tdepends on BR2_arm\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18\n"
  },
  {
    "path": "package/freescale-imx/imx-uuc/S80imx-uuc",
    "content": "#!/bin/sh\n\nNAME=uuc\nDAEMON=/usr/bin/$NAME\n\ncase \"$1\" in\n    start)\n\tprintf \"Starting $NAME: \"\n\tstart-stop-daemon -S -q -b -m -p /var/run/${NAME}.pid -x $DAEMON\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\n    stop)\n\tprintf \"Stopping $NAME: \"\n\tstart-stop-daemon -K -q -p /var/run/${NAME}.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\n    restart|reload)\n\t$0 stop\n\tsleep 1\n\t$0 start\n\t;;\n    *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/freescale-imx/imx-uuc/imx-uuc.hash",
    "content": "# Locally computed\nsha256 7f4d4838d4bf489932ef4a242677db30ad8d9ffd76065e07f4ddee3e6c35db82  imx-uuc-d6afb27e55d73d7ad08cd2dd51c784d8ec9694dc.tar.gz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/freescale-imx/imx-uuc/imx-uuc.mk",
    "content": "################################################################################\n#\n# imx-uuc\n#\n################################################################################\n\nIMX_UUC_VERSION = d6afb27e55d73d7ad08cd2dd51c784d8ec9694dc\nIMX_UUC_SITE = $(call github,NXPmicro,imx-uuc,$(IMX_UUC_VERSION))\nIMX_UUC_LICENSE = GPL-2.0+\nIMX_UUC_LICENSE_FILES = COPYING\n\n# mkfs.vfat is needed to create a FAT partition used by g_mass_storage\n# so Windows do not offer to format the device when connected to the PC.\nIMX_UUC_DEPENDENCIES = host-dosfstools\n\ndefine IMX_UUC_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine IMX_UUC_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/uuc $(TARGET_DIR)/usr/bin/uuc\n\t$(INSTALL) -D -m 755 $(@D)/sdimage $(TARGET_DIR)/usr/bin/sdimage\n\t$(INSTALL) -D -m 755 $(@D)/ufb $(TARGET_DIR)/usr/bin/ufb\n\tdd if=/dev/zero of=$(TARGET_DIR)/fat bs=1M count=1\n\t$(HOST_DIR)/sbin/mkfs.vfat $(TARGET_DIR)/fat\nendef\n\ndefine IMX_UUC_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/freescale-imx/imx-uuc/S80imx-uuc \\\n\t\t$(TARGET_DIR)/etc/init.d/S80imx-uuc\nendef\n\ndefine IMX_UUC_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/freescale-imx/imx-uuc/imx-uuc.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/imx-uuc.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-uuc/imx-uuc.service",
    "content": "[Unit]\nDescription=i.MX Universal UTP Communication Service\nAfter=systemd-modules-load.service\n\n[Service]\nType=simple\nExecStart=/usr/bin/uuc\n\n[Install]\nWantedBy=multi-user.target\n\n"
  },
  {
    "path": "package/freescale-imx/imx-vpu/Config.in",
    "content": "comment \"imx-vpu needs an i.MX platform with VPU support\"\n\tdepends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU\n\nconfig BR2_PACKAGE_IMX_VPU\n\tbool \"imx-vpu\"\n\tdepends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU\n\tselect BR2_PACKAGE_FIRMWARE_IMX\n\thelp\n\t  Library of userspace helpers specific for the NXP i.MX SoC\n\t  integrating a Chips&Media CODA Video Processing Unit (VPU)\n\t  such as the i.MX27/i.MX5x/i.MX6x.\n\n\t  This library is provided by NXP as-is and doesn't have an\n\t  upstream.\n"
  },
  {
    "path": "package/freescale-imx/imx-vpu/imx-vpu.hash",
    "content": "# Locally computed\nsha256  87cb799a57df654db29403cb74a75ca5185a1517022d3a4a16b8d69056c36127  imx-vpu-5.4.39.3.bin\nsha256  2ceab29de5ea533b86f570bcc4e9ddbfb5fe85a1da4978a8613ff3fd9bed781d  COPYING\nsha256  7ffad92e72e5f6b23027e7cf93a770a4acef00a92dcf79f22701ed401c5478c0  EULA\n"
  },
  {
    "path": "package/freescale-imx/imx-vpu/imx-vpu.mk",
    "content": "################################################################################\n#\n# imx-vpu\n#\n################################################################################\n\nIMX_VPU_VERSION = 5.4.39.3\nIMX_VPU_SITE = $(FREESCALE_IMX_SITE)\nIMX_VPU_SOURCE = imx-vpu-$(IMX_VPU_VERSION).bin\n\nIMX_VPU_INSTALL_STAGING = YES\n\nIMX_VPU_MAKE_ENV = \\\n\t$(TARGET_MAKE_ENV) \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tPLATFORM=$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM)\n\nIMX_VPU_LICENSE = NXP Semiconductor Software License Agreement\nIMX_VPU_LICENSE_FILES = EULA COPYING\nIMX_VPU_REDISTRIBUTE = NO\n\ndefine IMX_VPU_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_VPU_DL_DIR)/$(IMX_VPU_SOURCE))\nendef\n\ndefine IMX_VPU_BUILD_CMDS\n\t$(IMX_VPU_MAKE_ENV) $(MAKE1) -C $(@D)\nendef\n\ndefine IMX_VPU_INSTALL_STAGING_CMDS\n\t$(IMX_VPU_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(STAGING_DIR) install\nendef\n\ndefine IMX_VPU_INSTALL_TARGET_CMDS\n\t$(IMX_VPU_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-vpu-hantro/0001-Fix-ion.h-header-inclusion-to-be-standard.patch",
    "content": "From dfe8ef9123936d2c1d5da34f63f661849171d5ef Mon Sep 17 00:00:00 2001\nFrom: Gary Bisson <gary.bisson@boundarydevices.com>\nDate: Sun, 3 Oct 2021 16:39:29 -0700\nSubject: [PATCH] Fix ion.h header inclusion to be standard\n\nNXP \"solution\" was to manually copy the header to include/linux.\nLet's point the Makefile to the proper (mainline) location instead:\nhttps://elixir.bootlin.com/linux/v4.17/source/drivers/staging/android/uapi/ion.h\n\nSigned-off-by: Gary Bisson <gary.bisson@boundarydevices.com>\nSigned-off-by: Chris Dimich <chris.dimich@boundarydevices.com>\n---\n Makefile_G1G2                                             | 4 ++--\n Makefile_H1                                               | 4 ++--\n decoder_sw/software/linux/dwl/dwl_linux.c                 | 2 +-\n h1_encoder/software/linux_reference/ewl/ewl_x280_common.c | 2 +-\n 4 files changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/Makefile_G1G2 b/Makefile_G1G2\nindex 8f83391..25884fa 100755\n--- a/Makefile_G1G2\n+++ b/Makefile_G1G2\n@@ -10,8 +10,8 @@ INCLUDE_HEADERS = -I./decoder_sw -I$(SOURCE_ROOT)/source/inc -I$(SOURCE_ROOT)/so\n \n INCLUDE_HEADERS += -I$(SOURCE_ROOT)/linux/memalloc\n #INCLUDE_HEADERS += -I$(SOURCE_ROOT)/linux/ldriver\n-#INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include\n-INCLUDE_HEADERS += -I$(SDKTARGETSYSROOT)/usr/include/imx\n+INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include\n+INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/drivers/staging/android/uapi\n \n CFLAGS += -DDEC_MODULE_PATH=\\\"/dev/mxc_hantro\\\" -DUSE_FAKE_RFC_TABLE -DFIFO_DATATYPE=void* -DNDEBUG -DDOWN_SCALER \\\n            -DUSE_EXTERNAL_BUFFER -DUSE_FAST_EC -DUSE_VP9_EC -DGET_FREE_BUFFER_NON_BLOCK \\\ndiff --git a/Makefile_H1 b/Makefile_H1\nindex 0979571..479940a 100755\n--- a/Makefile_H1\n+++ b/Makefile_H1\n@@ -17,8 +17,8 @@ ENV = -DENC_MODULE_PATH=\\\\\\\"/dev/mxc_hantro_h1\\\\\\\"\n #ENV += -DSDRAM_LM_BASE=0x00000000\n ENV += -DEWL_NO_HW_TIMEOUT\n ENV += -DUSE_ION\n-#ENV += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include\n-ENV += -I$(SDKTARGETSYSROOT)/usr/include/imx\n+ENV += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include\n+ENV += -I$(LINUX_KERNEL_ROOT)/drivers/staging/android/uapi\n \n ifeq ($(CFG_SECURE_DATA_PATH), y)\n ENV += -DCFG_SECURE_DATA_PATH\ndiff --git a/decoder_sw/software/linux/dwl/dwl_linux.c b/decoder_sw/software/linux/dwl/dwl_linux.c\nindex 7d5e33b..c0e5727 100755\n--- a/decoder_sw/software/linux/dwl/dwl_linux.c\n+++ b/decoder_sw/software/linux/dwl/dwl_linux.c\n@@ -50,7 +50,7 @@\n #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0)\n #include <linux/dma-heap.h>\n #else\n-#include <linux/ion.h>\n+#include <ion.h>\n #endif\n #ifdef ANDROID\n #include <linux/mxc_ion.h>\ndiff --git a/h1_encoder/software/linux_reference/ewl/ewl_x280_common.c b/h1_encoder/software/linux_reference/ewl/ewl_x280_common.c\nindex 312e4cc..70630c3 100755\n--- a/h1_encoder/software/linux_reference/ewl/ewl_x280_common.c\n+++ b/h1_encoder/software/linux_reference/ewl/ewl_x280_common.c\n@@ -52,7 +52,7 @@\n #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0)\n #include <linux/dma-heap.h>\n #else\n-#include <linux/ion.h>\n+#include <ion.h>\n #endif\n #include <linux/dma-buf.h>\n #include <linux/version.h>\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/freescale-imx/imx-vpu-hantro/0002-Fix-build-with-uclibc-toolchain.patch",
    "content": "From 4f51b0a6b9a36cc56fa06eb0f76596d8e387f980 Mon Sep 17 00:00:00 2001\nFrom: Gary Bisson <gary.bisson@boundarydevices.com>\nDate: Fri, 27 Mar 2020 23:17:30 +0100\nSubject: [PATCH] Fix build with uclibc toolchain\n\nFrom: Laurent Gauthier (OSS) <laurent.gauthier_1@oss.nxp.com>\n\nBy default, backtrace support is disabled in uclibc. In that case the\nexecinfo.h header file is missing, producing a build error.\n\nSigned-off-by: Laurent Gauthier (OSS) <laurent.gauthier_1@oss.nxp.com>\nSigned-off-by: Gary Bisson <gary.bisson@boundarydevices.com>\n---\n openmax_il/source/dbgmacros.h | 14 +++++++-------\n 1 file changed, 7 insertions(+), 7 deletions(-)\n\ndiff --git a/openmax_il/source/dbgmacros.h b/openmax_il/source/dbgmacros.h\nindex 3771c91..37ae09f 100755\n--- a/openmax_il/source/dbgmacros.h\n+++ b/openmax_il/source/dbgmacros.h\n@@ -50,13 +50,6 @@\n #    define __USE_GNU\n #endif\n \n-#ifndef ANDROID\n-#include <execinfo.h>\n-#include <link.h>\n-#endif\n-#include <dlfcn.h>\n-#include <elf.h>\n-\n /*****************\n  ** DEBUG FLAGS **\n  *****************/\n@@ -76,6 +69,13 @@\n #define TRACE_FILE \"trace.log\"\n #endif\n \n+#ifndef ANDROID\n+#include <execinfo.h>\n+#include <link.h>\n+#endif\n+#include <dlfcn.h>\n+#include <elf.h>\n+\n #ifdef LOG_IN_FILE\n #define TRACE(...)                                              \\\n     {                                                           \\\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/freescale-imx/imx-vpu-hantro/Config.in",
    "content": "comment \"imx-vpu-hantro needs an i.MX-specific Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\ncomment \"imx-vpu-hantro needs an i.MX platform with Hantro VPU\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO\n\nconfig BR2_PACKAGE_IMX_VPU_HANTRO\n\tbool \"imx-vpu-hantro\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO\n\thelp\n\t  Library of userspace helpers specific for the NXP i.MX SoC\n\t  integrating a Hantro Video Processing Unit (VPU) such as the\n\t  i.MX8MQ/i.MX8MM.\n\t  It requires a kernel that includes the i.MX specific headers\n\t  to be built.\n\n\t  This library is provided by NXP as-is and doesn't have an\n\t  upstream.\n"
  },
  {
    "path": "package/freescale-imx/imx-vpu-hantro/imx-vpu-hantro.hash",
    "content": "# Locally computed:\nsha256  03c61dfb268b31a0d25a4d1387cb3ad0261029ad5de801f72224602e2b37da00  imx-vpu-hantro-1.22.0.bin\nsha256  ea58636bf34f589048fcd46e38497c47229fde8498df086ff5fb52f9ef8e15ee  COPYING\nsha256  50099e283cfd307f84f159aeb1a6f462351320273dbcdb80d7f2c9db0494b71c  EULA\n"
  },
  {
    "path": "package/freescale-imx/imx-vpu-hantro/imx-vpu-hantro.mk",
    "content": "################################################################################\n#\n# imx-vpu-hantro\n#\n################################################################################\n\nIMX_VPU_HANTRO_VERSION = 1.22.0\nIMX_VPU_HANTRO_SITE = $(FREESCALE_IMX_SITE)\nIMX_VPU_HANTRO_SOURCE = imx-vpu-hantro-$(IMX_VPU_HANTRO_VERSION).bin\nIMX_VPU_HANTRO_DEPENDENCIES = linux\nIMX_VPU_HANTRO_INSTALL_STAGING = YES\n\nIMX_VPU_HANTRO_MAKE_ENV = \\\n\t$(TARGET_MAKE_ENV) \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tSDKTARGETSYSROOT=$(STAGING_DIR) \\\n\tLINUX_KERNEL_ROOT=$(LINUX_DIR) \\\n\tPLATFORM=$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM)\n\nIMX_VPU_HANTRO_LICENSE = NXP Semiconductor Software License Agreement\nIMX_VPU_HANTRO_LICENSE_FILES = EULA COPYING\nIMX_VPU_HANTRO_REDISTRIBUTE = NO\n\ndefine IMX_VPU_HANTRO_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_VPU_HANTRO_DL_DIR)/$(IMX_VPU_HANTRO_SOURCE))\nendef\n\ndefine IMX_VPU_HANTRO_BUILD_CMDS\n\t$(IMX_VPU_HANTRO_MAKE_ENV) $(MAKE1) -C $(@D)\nendef\n\ndefine IMX_VPU_HANTRO_INSTALL_STAGING_CMDS\n\t$(IMX_VPU_HANTRO_MAKE_ENV) $(MAKE1) -C $(@D) \\\n\t\tDEST_DIR=$(STAGING_DIR) libdir=/usr/lib install\nendef\n\ndefine IMX_VPU_HANTRO_INSTALL_TARGET_CMDS\n\t$(IMX_VPU_HANTRO_MAKE_ENV) $(MAKE1) -C $(@D) \\\n\t\tDEST_DIR=$(TARGET_DIR) libdir=/usr/lib install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-vpu-hantro-vc/Config.in",
    "content": "comment \"imx-vpu-hantro-vc needs an i.MX-specific Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\ncomment \"imx-vpu-hantro-vc needs an i.MX platform with Hantro VPU\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO\n\nconfig BR2_PACKAGE_IMX_VPU_HANTRO_VC\n\tbool \"imx-vpu-hantro-vc\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO\n\thelp\n\t  i.MX VC8000E Encoder library. Intended for the i.MX 8M Plus\n\t  processor.\n"
  },
  {
    "path": "package/freescale-imx/imx-vpu-hantro-vc/imx-vpu-hantro-vc.hash",
    "content": "# Locally computed:\nsha256  d5efae484c4271c098286d007590d6bf40c272d4f35702ff65625f2362715ab3  imx-vpu-hantro-vc-1.4.0.bin\nsha256  ea58636bf34f589048fcd46e38497c47229fde8498df086ff5fb52f9ef8e15ee  COPYING\nsha256  50099e283cfd307f84f159aeb1a6f462351320273dbcdb80d7f2c9db0494b71c  EULA\n"
  },
  {
    "path": "package/freescale-imx/imx-vpu-hantro-vc/imx-vpu-hantro-vc.mk",
    "content": "################################################################################\n#\n# imx-vpu-hantro-vc\n#\n################################################################################\n\nIMX_VPU_HANTRO_VC_VERSION = 1.4.0\nIMX_VPU_HANTRO_VC_SITE = $(FREESCALE_IMX_SITE)\nIMX_VPU_HANTRO_VC_SOURCE = imx-vpu-hantro-vc-$(IMX_VPU_HANTRO_VC_VERSION).bin\nIMX_VPU_HANTRO_VC_DEPENDENCIES = linux\n\nIMX_VPU_HANTRO_VC_LICENSE = NXP Semiconductor Software License Agreement\nIMX_VPU_HANTRO_VC_LICENSE_FILES = EULA COPYING\nIMX_VPU_HANTRO_VC_REDISTRIBUTE = NO\n\ndefine IMX_VPU_HANTRO_VC_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_VPU_HANTRO_VC_DL_DIR)/$(IMX_VPU_HANTRO_VC_SOURCE))\nendef\n\ndefine IMX_VPU_HANTRO_VC_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/usr/lib/libhantro_vc8000e.so $(TARGET_DIR)/usr/lib/libhantro_vc8000e.so\n\t$(INSTALL) -D -m 0755 $(@D)/usr/lib/libhantro_vc8000e.so.1 $(TARGET_DIR)/usr/lib/libhantro_vc8000e.so.1\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/imx-vpuwrap/Config.in",
    "content": "comment \"imx-vpuwrap needs an imx-specific Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\ncomment \"imx-vpuwrap needs an i.MX platform with VPU support\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU && !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO\n\nconfig BR2_PACKAGE_IMX_VPUWRAP\n\tbool \"imx-vpuwrap\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU || BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO\n\tselect BR2_PACKAGE_IMX_VPU if BR2_PACKAGE_FREESCALE_IMX_HAS_VPU\n\tselect BR2_PACKAGE_IMX_VPU_HANTRO if BR2_PACKAGE_FREESCALE_IMX_HAS_VPU_HANTRO\n\thelp\n\t  Wrapper library for the vpu library, giving it a different\n\t  API.\n\n\t  This library is provided by NXP as-is and doesn't have\n\t  an upstream.\n"
  },
  {
    "path": "package/freescale-imx/imx-vpuwrap/imx-vpuwrap.hash",
    "content": "# locally computed\nsha256  5c08b4b7c771404c998779f0e27a75564b57958d463e2df152c910d76cca9e44  imx-vpuwrap-4.3.5.bin\nsha256  78696664f7afe7f2b081c99af60082d6403fab935b1b10056ed41aec123ff7fa  COPYING\nsha256  fc93f26e4197b9240c327ce26ae6e02123f022423d4704c7b0448a37372cf2a2  EULA\n"
  },
  {
    "path": "package/freescale-imx/imx-vpuwrap/imx-vpuwrap.mk",
    "content": "################################################################################\n#\n# imx-vpuwrap\n#\n################################################################################\n\nIMX_VPUWRAP_VERSION = 4.3.5\nIMX_VPUWRAP_SITE = $(FREESCALE_IMX_SITE)\nIMX_VPUWRAP_SOURCE = imx-vpuwrap-$(IMX_VPUWRAP_VERSION).bin\nIMX_VPUWRAP_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_IMX_VPU),y)\nIMX_VPUWRAP_DEPENDENCIES += imx-vpu\nendif\n\nifeq ($(BR2_PACKAGE_IMX_VPU_HANTRO),y)\nIMX_VPUWRAP_DEPENDENCIES += imx-vpu-hantro\nendif\n\nIMX_VPUWRAP_LICENSE = NXP Semiconductor Software License Agreement\nIMX_VPUWRAP_LICENSE_FILES = EULA COPYING\nIMX_VPUWRAP_REDISTRIBUTE = NO\n\ndefine IMX_VPUWRAP_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_VPUWRAP_DL_DIR)/$(IMX_VPUWRAP_SOURCE))\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/freescale-imx/kernel-module-imx-gpu-viv/Config.in",
    "content": "comment \"kernel-module-imx-gpu-viv needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV\n\tbool \"kernel-module-imx-gpu-viv\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  Kernel loadable module for Vivante GPU.\n\n\t  This package uses an exact copy of the GPU kernel driver\n\t  source code of the same version as base and include fixes\n\t  and improvements developed by FSL Community.\n\n\t  This module is only meant for NXP-based kernel.\n\n\t  https://github.com/Freescale/kernel-module-imx-gpu-viv\n"
  },
  {
    "path": "package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.hash",
    "content": "# locally computed\nsha256  257c6cd8b01cfb6543827cbeb78409e6a2ad4ae321891751dcea1abc47d89379  kernel-module-imx-gpu-viv-ae0f3be0b7240f11cca191a3e2bdd4a445ee46e5.tar.gz\nsha256  b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259  COPYING\n"
  },
  {
    "path": "package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.mk",
    "content": "################################################################################\n#\n# kernel-module-imx-gpu-viv\n#\n################################################################################\n\nKERNEL_MODULE_IMX_GPU_VIV_VERSION = ae0f3be0b7240f11cca191a3e2bdd4a445ee46e5\nKERNEL_MODULE_IMX_GPU_VIV_SITE = \\\n\t$(call github,Freescale,kernel-module-imx-gpu-viv,$(KERNEL_MODULE_IMX_GPU_VIV_VERSION))\nKERNEL_MODULE_IMX_GPU_VIV_LICENSE = GPL-2.0\nKERNEL_MODULE_IMX_GPU_VIV_LICENSE_FILES = COPYING\n\nKERNEL_MODULE_IMX_GPU_VIV_MODULE_MAKE_OPTS = \\\n\tAQROOT=$(@D)/kernel-module-imx-gpu-viv-src \\\n\tKERNEL_DIR=$(LINUX_DIR)\n\nKERNEL_MODULE_IMX_GPU_VIV_MODULE_SUBDIRS = kernel-module-imx-gpu-viv-src\n\ndefine KERNEL_MODULE_IMX_GPU_VIV_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_MXC_GPU_VIV)\nendef\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freescale-imx/libz160/Config.in",
    "content": "config BR2_PACKAGE_LIBZ160\n\tbool \"libz160\"\n\tdepends on BR2_ARM_EABI\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  An API for user space programs to perform 2D accelerated\n\t  graphics operations on AMD GPU (included for examples in\n\t  iMX5x chipsets)\n\ncomment \"libz160 needs an EABI toolchain w/ glibc\"\n\tdepends on !BR2_ARM_EABI || !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/freescale-imx/libz160/libz160.hash",
    "content": "# locally computed\nsha256  08767eb269a0a30ca0aa3d3b5aa9a53a2d17ed1c24651b7e8cefc7704b883f19  libz160-bin-11.09.01.bin\nsha256  6d7a2fefc2f7ce888f9eb74919b852aed5a1087b2e84345be90cadbebe1b6578  EULA\n"
  },
  {
    "path": "package/freescale-imx/libz160/libz160.mk",
    "content": "################################################################################\n#\n# libz160\n#\n################################################################################\n\nLIBZ160_VERSION = 11.09.01\nLIBZ160_SOURCE = libz160-bin-$(LIBZ160_VERSION).bin\nLIBZ160_SITE = $(FREESCALE_IMX_SITE)\nLIBZ160_INSTALL_STAGING = YES\n\n# See freescale-imx\nLIBZ160_LICENSE = Freescale Semiconductor Software License Agreement\nLIBZ160_LICENSE_FILES = EULA\nLIBZ160_REDISTRIBUTE = NO\n\ndefine LIBZ160_EXTRACT_CMDS\n\t$(call FREESCALE_IMX_EXTRACT_HELPER,$(LIBZ160_DL_DIR)/$(LIBZ160_SOURCE))\nendef\n\ndefine LIBZ160_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/usr/lib/libz160.so $(STAGING_DIR)/usr/lib/libz160.so\n\t$(INSTALL) -D -m 644 $(@D)/usr/include/z160.h $(STAGING_DIR)/usr/include/z160.h\nendef\n\ndefine LIBZ160_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/usr/lib/libz160.so $(TARGET_DIR)/usr/lib/libz160.so\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freeswitch/0001-src-mod-applications-mod_cv-mod_cv.cpp-fix-build-wit.patch",
    "content": "From 575409a14e62f73e83309daf8ff6642a235f250c Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 16 Oct 2020 23:06:36 +0200\nSubject: [PATCH] src/mod/applications/mod_cv/mod_cv.cpp: fix build with opencv\n 3.4.9\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nUse cvScalar instead of CV_RGB to avoid the following build failure with\nopencv 3.4.9:\n\nmod_cv.cpp:693:24: error: conversion from ‘cv::Scalar {aka cv::Scalar_<double>}’ to non-scalar type ‘CvScalar’ requested\n         CvScalar col = CV_RGB((float)255 * object_neighbors / max_neighbors, 0, 0);\n                        ^\n\nIndeed, CV_RGB is defined as cv::Scalar instead of cvScalar since\nversion 3.4.2 and\nhttps://github.com/opencv/opencv/commit/7f9253ea0a9fe2635926379420002dbf0c3fce0f\n\nIt should be noted that CV_RGB(r,g,b) = cvScalar(b,g,r,0)\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/signalwire/freeswitch/pull/914]\n---\n src/mod/applications/mod_cv/mod_cv.cpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/mod/applications/mod_cv/mod_cv.cpp b/src/mod/applications/mod_cv/mod_cv.cpp\nindex 582f925abf..bbec755e91 100644\n--- a/src/mod/applications/mod_cv/mod_cv.cpp\n+++ b/src/mod/applications/mod_cv/mod_cv.cpp\n@@ -690,7 +690,7 @@ void detectAndDraw(cv_context_t *context)\n \t\t//printf(\"WTF %d\\n\", object_neighbors);\n         //cout << \"Detected \" << object_neighbors << \" object neighbors\" << endl;\n         const int rect_height = cvRound((float)img.rows * object_neighbors / max_neighbors);\n-        CvScalar col = CV_RGB((float)255 * object_neighbors / max_neighbors, 0, 0);\n+        CvScalar col = cvScalar(0, 0, (float)255 * object_neighbors / max_neighbors, 0);\n         rectangle(img, cvPoint(0, img.rows), cvPoint(img.cols/10, img.rows - rect_height), col, -1);\n \n         parse_stats(&context->nestDetected, nestedObjects.size(), context->skip);\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/freeswitch/Config.in",
    "content": "config BR2_PACKAGE_FREESWITCH\n\tbool \"freeswitch\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # apr, included in freeswitch source\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # apr, included in freeswitch source\n\tdepends on BR2_USE_WCHAR # uses wchar_t\n\tselect BR2_PACKAGE_FFMPEG_AVRESAMPLE if BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_FFMPEG_SWSCALE if BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_JPEG\n\t# src/mod/applications/mod_cv/mod_cv.cpp includes\n\t# highgui.h, imgproc.hpp & objdetect.hpp\n\tselect BR2_PACKAGE_OPENCV3_LIB_HIGHGUI if BR2_PACKAGE_OPENCV3\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC if BR2_PACKAGE_OPENCV3\n\tselect BR2_PACKAGE_OPENCV3_LIB_OBJDETECT if BR2_PACKAGE_OPENCV3\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_SOFIA_SIP\n\tselect BR2_PACKAGE_SPANDSP\n\tselect BR2_PACKAGE_SPEEX\n\tselect BR2_PACKAGE_SPEEXDSP\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_TIFF\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  FreeSWITCH is a scalable open source cross-platform\n\t  telephony platform designed to route and interconnect\n\t  popular communication protocols using audio, video, text or\n\t  any other form of media.\n\n\t  https://www.freeswitch.org\n\ncomment \"freeswitch needs a toolchain w/ C++, dynamic library, threads, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/freeswitch/freeswitch.hash",
    "content": "# From https://files.freeswitch.org/freeswitch-releases/freeswitch-1.10.6.-release.tar.xz.sha256\nsha256  9a08d4e184e6d715e1c12c43a0f901597151752ef236f0a37e40996272b5c38d  freeswitch-1.10.6.-release.tar.xz\n# Locally computed\nsha256  75c933202f40939cdc3827fce20a1efdaa38291e2b5a65d234eb16e2cffda66a  COPYING\nsha256  c3e3388768dae8bf4edcc4108f95be815b8a05c0b0aef6e4c3d8df81affdfa34  docs/OPENH264_BINARY_LICENSE.txt\nsha256  e8e26b16da14aa3e6ed5c22c705fdc1f45d6225fca461ea9f7314bcdfdc414c4  libs/apr/LICENSE\nsha256  1eefb2ea1db0af7729a9d8a27d7c65d8a37ab185393f935b029aac6828ce315a  libs/apr-util/LICENSE\nsha256  8267348d5af1262c11d1a08de2f5afc77457755f1ac658627dd9acf71011d615  libs/libvpx/LICENSE\nsha256  2b2cc1180c7e6988328ad2033b04b80117419db9c4c584918bbb3cfec7e9364f  libs/libyuv/LICENSE\nsha256  7d72a8aee2c4b1a084200487992a5d86f5df6b535727a14c1874918e99d24600  libs/libzrtp/src/zrtp_legal.c\nsha256  8e19d42a1eec9561f3f347253ddf2e385c55f392f025bb0fd41b88dbf38db5ae  libs/srtp/LICENSE\nsha256  ab00a482b6a3902e40211b43c5d0441962ea99b6cc7c25c0f243fa270b78d482  src/mod/codecs/mod_isac/LICENSE\n"
  },
  {
    "path": "package/freeswitch/freeswitch.mk",
    "content": "################################################################################\n#\n# freeswitch\n#\n################################################################################\n\nFREESWITCH_VERSION = 1.10.6\nFREESWITCH_SOURCE = freeswitch-$(FREESWITCH_VERSION).-release.tar.xz\nFREESWITCH_SITE = https://files.freeswitch.org/freeswitch-releases\n# External modules need headers/libs from staging\nFREESWITCH_INSTALL_STAGING = YES\nFREESWITCH_LICENSE = MPL-1.1, \\\n\tGPL-3.0+ with font exception (fonts), \\\n\tApache-2.0 (apr, apr-util), \\\n\tBSD-3-Clause (libsrtp)\n\nFREESWITCH_LICENSE_FILES = \\\n\tCOPYING \\\n\tlibs/apr/LICENSE \\\n\tlibs/apr-util/LICENSE \\\n\tlibs/srtp/LICENSE\n\nFREESWITCH_CPE_ID_VENDOR = freeswitch\n\n# required dependencies\nFREESWITCH_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tjpeg \\\n\tlibcurl \\\n\topenssl \\\n\tpcre \\\n\tspandsp \\\n\tsofia-sip \\\n\tspeex \\\n\tsqlite \\\n\ttiff \\\n\tutil-linux \\\n\tzlib\n\n# disable display of ClueCon banner in fs_cli\nFREESWITCH_CONF_ENV += \\\n\tdisable_cc=yes\n\n# we neither need host-perl nor host-php\nFREESWITCH_CONF_ENV += \\\n\tac_cv_prog_PERL=false \\\n\tac_cv_have_perl=no \\\n\tac_cv_prog_PHP=false \\\n\tac_cv_have_php=no \\\n\tac_cv_prog_PHP_CONFIG=false \\\n\tac_cv_have_php_config=no\n\n# copied from freeswitch/configure.ac, line 258+\nFREESWITCH_CONF_ENV += \\\n\tac_cv_file__dev_ptmx=yes \\\n\tac_cv_va_copy=yes \\\n\tac_cv_file__dev_urandom=yes \\\n\tac_cv_func_realloc_0_nonnull=yes \\\n\tac_cv_func_malloc_0_nonnull=yes \\\n\tac_cv_func_setpgrp_void=yes \\\n\tac_cv_file__dev_zero=yes \\\n\tapr_cv_tcp_nodelay_with_cork=yes \\\n\tac_cv_file_dbd_apr_dbd_mysql_c=no \\\n\tac_cv_sizeof_ssize_t=4 \\\n\tapr_cv_mutex_recursive=yes \\\n\tac_cv_func_pthread_rwlock_init=yes \\\n\tapr_cv_type_rwlock_t=yes \\\n\tapr_cv_process_shared_works=yes \\\n\tapr_cv_mutex_robust_shared=yes\n\n# build breaks with -Werror enabled\nFREESWITCH_CONF_ENV += \\\n\tac_cv_gcc_supports_w_no_unused_result=no\n\nFREESWITCH_CONF_OPTS = \\\n\t--without-erlang \\\n\t--enable-fhs \\\n\t--without-python \\\n\t--disable-system-xmlrpc-c\n\n# zrtp supports a limited set of archs, sparc support is also broken due\n# to a broken ld call by gcc, see libs/libzrtp/include/zrtp_config.h\nifeq ($(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)\nFREESWITCH_LICENSE_FILES += libs/libzrtp/src/zrtp_legal.c\nFREESWITCH_CONF_OPTS += --enable-zrtp\nelse\nFREESWITCH_CONF_OPTS += --disable-zrtp\nendif\n\n# Enable optional modules\nFREESWITCH_ENABLED_MODULES += \\\n\tapplications/mod_avmd \\\n\tapplications/mod_blacklist \\\n\tapplications/mod_callcenter \\\n\tapplications/mod_commands \\\n\tapplications/mod_conference \\\n\tapplications/mod_curl \\\n\tapplications/mod_db \\\n\tapplications/mod_directory \\\n\tapplications/mod_dptools \\\n\tapplications/mod_easyroute \\\n\tapplications/mod_esf \\\n\tapplications/mod_esl \\\n\tapplications/mod_expr \\\n\tapplications/mod_fifo \\\n\tapplications/mod_fsk \\\n\tapplications/mod_hash \\\n\tapplications/mod_httapi \\\n\tapplications/mod_lcr \\\n\tapplications/mod_sms \\\n\tapplications/mod_snom \\\n\tapplications/mod_spandsp \\\n\tapplications/mod_spy \\\n\tapplications/mod_valet_parking \\\n\tapplications/mod_voicemail \\\n\tcodecs/mod_g723_1 \\\n\tdialplans/mod_dialplan_asterisk \\\n\tdialplans/mod_dialplan_xml \\\n\tendpoints/mod_loopback \\\n\tendpoints/mod_rtc \\\n\tendpoints/mod_rtmp \\\n\tendpoints/mod_sofia \\\n\tendpoints/mod_verto \\\n\tevent_handlers/mod_cdr_csv \\\n\tevent_handlers/mod_cdr_sqlite \\\n\tevent_handlers/mod_event_socket \\\n\tformats/mod_local_stream \\\n\tformats/mod_native_file \\\n\tformats/mod_tone_stream \\\n\tloggers/mod_console \\\n\tloggers/mod_logfile \\\n\tloggers/mod_syslog \\\n\tsay/mod_say_de \\\n\tsay/mod_say_en \\\n\tsay/mod_say_es \\\n\tsay/mod_say_es_ar \\\n\tsay/mod_say_fa \\\n\tsay/mod_say_fr \\\n\tsay/mod_say_he \\\n\tsay/mod_say_hr \\\n\tsay/mod_say_hu \\\n\tsay/mod_say_it \\\n\tsay/mod_say_ja \\\n\tsay/mod_say_nl \\\n\tsay/mod_say_pl \\\n\tsay/mod_say_pt \\\n\tsay/mod_say_ru \\\n\tsay/mod_say_sv \\\n\tsay/mod_say_th \\\n\tsay/mod_say_zh \\\n\ttimers/mod_timerfd \\\n\txml_int/mod_xml_cdr \\\n\txml_int/mod_xml_rpc \\\n\txml_int/mod_xml_scgi\n\ndefine FREESWITCH_ENABLE_MODULES\n\t$(Q)echo $(FREESWITCH_ENABLED_MODULES) \\\n\t\t| tr ' ' '\\n' \\\n\t\t> $(@D)/modules.conf\nendef\nFREESWITCH_PRE_CONFIGURE_HOOKS += FREESWITCH_ENABLE_MODULES\n\n# mod_isac supports a limited set of archs\n# src/mod/codecs/mod_isac/typedefs.h\nifeq ($(BR2_i386)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_x86_64),y)\nFREESWITCH_LICENSE += , BSD-3-Clause (mod_isac)\nFREESWITCH_LICENSE_FILES += src/mod/codecs/mod_isac/LICENSE\nFREESWITCH_ENABLED_MODULES += codecs/mod_isac\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nFREESWITCH_DEPENDENCIES += alsa-lib\nFREESWITCH_ENABLED_MODULES += endpoints/mod_alsa\nendif\n\n# Use the pass-through g729 module provided by freeswitch instead of\n# the external mod_bcg729 provided by freeswitch-mod-bcg729.\nifeq ($(BR2_PACKAGE_FREESWITCH_MOD_BCG729),)\nFREESWITCH_ENABLED_MODULES += codecs/mod_g729\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nFREESWITCH_DEPENDENCIES += freetype\nendif\n\nifeq ($(BR2_PACKAGE_LIBBROADVOICE),y)\nFREESWITCH_DEPENDENCIES += libbroadvoice\nFREESWITCH_ENABLED_MODULES += codecs/mod_bv\nendif\n\nifeq ($(BR2_PACKAGE_LIBCODEC2),y)\nFREESWITCH_DEPENDENCIES += libcodec2\nFREESWITCH_ENABLED_MODULES += codecs/mod_codec2\nendif\n\nifeq ($(BR2_PACKAGE_LIBEDIT),y)\nFREESWITCH_DEPENDENCIES += libedit\nFREESWITCH_CONF_OPTS += --enable-core-libedit-support\nelse\nFREESWITCH_CONF_OPTS += --disable-core-libedit-support\nendif\n\nifeq ($(BR2_PACKAGE_LIBG7221),y)\nFREESWITCH_DEPENDENCIES += libg7221\nendif\n\nifeq ($(BR2_PACKAGE_LIBILBC),y)\nFREESWITCH_DEPENDENCIES += libilbc\nFREESWITCH_ENABLED_MODULES += codecs/mod_ilbc\nendif\n\nifeq ($(BR2_PACKAGE_LIBLDNS),y)\nFREESWITCH_DEPENDENCIES += libldns\nFREESWITCH_ENABLED_MODULES += applications/mod_enum\nendif\n\nifeq ($(BR2_PACKAGE_LIBMEMCACHED),y)\nFREESWITCH_DEPENDENCIES += libmemcached\nFREESWITCH_ENABLED_MODULES += applications/mod_memcache\nendif\n\nifeq ($(BR2_PACKAGE_LIBOPENH264),y)\nFREESWITCH_LICENSE += , BSD-2-Clause (libopenh264)\nFREESWITCH_LICENSE_FILES += docs/OPENH264_BINARY_LICENSE.txt\nFREESWITCH_DEPENDENCIES += libopenh264\nFREESWITCH_ENABLED_MODULES += codecs/mod_openh264\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nFREESWITCH_DEPENDENCIES += libpng\nFREESWITCH_ENABLED_MODULES += formats/mod_png\nendif\n\nifeq ($(BR2_PACKAGE_LIBYAML),y)\nFREESWITCH_DEPENDENCIES += libyaml\nFREESWITCH_ENABLED_MODULES += languages/mod_yaml\nendif\n\nifeq ($(BR2_PACKAGE_LUA),y)\nFREESWITCH_DEPENDENCIES += lua\nFREESWITCH_ENABLED_MODULES += languages/mod_lua\nendif\n\nifeq ($(BR2_PACKAGE_OPENLDAP),y)\nFREESWITCH_DEPENDENCIES += openldap\nFREESWITCH_ENABLED_MODULES += directories/mod_ldap xml_int/mod_xml_ldap\nendif\n\nifeq ($(BR2_PACKAGE_OPUS),y)\nFREESWITCH_DEPENDENCIES += opus\nFREESWITCH_ENABLED_MODULES += codecs/mod_opus\nendif\n\nifeq ($(BR2_PACKAGE_PORTAUDIO),y)\nFREESWITCH_DEPENDENCIES += portaudio\nFREESWITCH_ENABLED_MODULES += endpoints/mod_portaudio\nendif\n\nifeq ($(BR2_PACKAGE_LAME)$(BR2_PACKAGE_LIBSHOUT)$(BR2_PACKAGE_MPG123),yyy)\nFREESWITCH_DEPENDENCIES += lame libshout mpg123\nFREESWITCH_ENABLED_MODULES += formats/mod_shout\nendif\n\nifeq ($(BR2_PACKAGE_LIBSILK),y)\nFREESWITCH_DEPENDENCIES += libsilk\nFREESWITCH_ENABLED_MODULES += codecs/mod_silk\nendif\n\nifeq ($(BR2_PACKAGE_LIBSNDFILE),y)\nFREESWITCH_DEPENDENCIES += libsndfile\nFREESWITCH_ENABLED_MODULES += formats/mod_sndfile\nendif\n\nifeq ($(BR2_PACKAGE_LIBSOUNDTOUCH),y)\nFREESWITCH_DEPENDENCIES += libsoundtouch\nFREESWITCH_ENABLED_MODULES += applications/mod_soundtouch\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3),y)\nFREESWITCH_DEPENDENCIES += opencv3\nFREESWITCH_ENABLED_MODULES += applications/mod_cv\nendif\n\nifeq ($(BR2_PACKAGE_POSTGRESQL),y)\nFREESWITCH_CONF_ENV += \\\n\tac_cv_path_PG_CONFIG=$(STAGING_DIR)/usr/bin/pg_config\nFREESWITCH_DEPENDENCIES += postgresql\nFREESWITCH_ENABLED_MODULES += databases/mod_pgsql\nendif\n\nifeq ($(BR2_PACKAGE_UNIXODBC),y)\nFREESWITCH_DEPENDENCIES += unixodbc\nFREESWITCH_CONF_OPTS += \\\n\t--enable-core-odbc-support \\\n\t--with-odbc=$(STAGING_DIR)/usr\nelse\nFREESWITCH_CONF_OPTS += --disable-core-odbc-support\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nFREESWITCH_DEPENDENCIES += xz\nendif\n\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_8)$(BR2_PACKAGE_FFMPEG),yy)\nFREESWITCH_LICENSE += , BSD-3-Clause (libvpx, libyuv)\nFREESWITCH_LICENSE_FILES += libs/libvpx/LICENSE libs/libyuv/LICENSE\nFREESWITCH_CONF_OPTS += --enable-libvpx --enable-libyuv\nFREESWITCH_DEPENDENCIES += host-yasm ffmpeg\nFREESWITCH_ENABLED_MODULES += applications/mod_av applications/mod_fsv\nFREESWITCH_MAKE_ENV += CROSS=$(TARGET_CROSS)\n\n# Freeswitch's buildsystem forgets to pass important environment\n# variables and config options when it configures libvpx, so\n# pre-build libvpx manually, so Freeswitch does not attempt to run\n# its flawed commands...\n# Freeswitch only ever uses the static libtrary, that's hard-coded,\n# we can't do anything about that...\n# From package/libvpx/libvpx.mk:\n# - this is not a true autotools package.  It is based on the ffmpeg\n#   build system.\n# - ld is being used with cc options. therefore, pretend ld is cc.\ndefine FREESWITCH_BUILD_LIBVPX\n\tcd $(@D)/libs/libvpx && \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\t$(TARGET_CONFIGURE_ARGS) \\\n\tLD=\"$(TARGET_CC)\" \\\n\tCROSS=$(GNU_TARGET_NAME) \\\n\t./configure \\\n\t\t--target=generic-gnu \\\n\t\t--enable-pic \\\n\t\t--prefix=/usr \\\n\t\t--disable-shared --enable-static \\\n\t\t--disable-examples \\\n\t\t--disable-docs \\\n\t\t--disable-unit-tests && \\\n\t$(TARGET_MAKE_ENV) \\\n\t$(LIBVPX_MAKE_ENV) \\\n\t$(MAKE) \\\n\t\t-C $(@D)/libs/libvpx \\\n\t\tall\nendef\nFREESWITCH_PRE_BUILD_HOOKS += FREESWITCH_BUILD_LIBVPX\n\nelse\nFREESWITCH_CONF_OPTS += --disable-libvpx --disable-libyuv\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/freeswitch-mod-bcg729/Config.in",
    "content": "config BR2_PACKAGE_FREESWITCH_MOD_BCG729\n\tbool \"freeswitch-mod-bcg729\"\n\tdepends on BR2_PACKAGE_FREESWITCH\n\tdepends on !BR2_STATIC_LIBS # freeswitch\n\tselect BR2_PACKAGE_BCG729\n\thelp\n\t  FreeSWITCH G.729A module using the opensource bcg729\n\t  implementation by Belledonne Communications.\n\n\t  https://github.com/xadhoom/mod_bcg729\n"
  },
  {
    "path": "package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.hash",
    "content": "# Locally computed\nsha256  ada0640094b5b3b4a767ec360213bfed624e698c9932b2f9ceb76eb1c0f5a246  freeswitch-mod-bcg729-1.0.5.tar.gz\nsha256  bb4680b13c3190429464a8308a07d7d891e6454349fb7be856e02405b25b1195  LICENSE\n"
  },
  {
    "path": "package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.mk",
    "content": "################################################################################\n#\n# freeswitch-mod-bcg729\n#\n################################################################################\n\nFREESWITCH_MOD_BCG729_VERSION = 1.0.5\nFREESWITCH_MOD_BCG729_SITE = $(call github,xadhoom,mod_bcg729,v$(FREESWITCH_MOD_BCG729_VERSION))\nFREESWITCH_MOD_BCG729_LICENSE = MPL-1.1\nFREESWITCH_MOD_BCG729_LICENSE_FILES = LICENSE\nFREESWITCH_MOD_BCG729_DEPENDENCIES = freeswitch bcg729\n\n# instead of patching the not cross-compile friendly Makefile from\n# upstream we issue the necessary build commands ourselves\ndefine FREESWITCH_MOD_BCG729_BUILD_CMDS\n\t$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \\\n\t\t-I$(STAGING_DIR)/usr/include/freeswitch \\\n\t\t-fPIC -fomit-frame-pointer -fno-exceptions \\\n\t\t-c $(@D)/mod_bcg729.c -o $(@D)/mod_bcg729.o\n\t$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \\\n\t\t-fPIC -fomit-frame-pointer -fno-exceptions \\\n\t\t-shared -Xlinker -x -lm -lbcg729 -Wl,-Bdynamic \\\n\t\t-o $(@D)/mod_bcg729.so $(@D)/mod_bcg729.o\nendef\n\ndefine FREESWITCH_MOD_BCG729_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 $(@D)/mod_bcg729.so $(TARGET_DIR)/usr/lib/freeswitch/mod/mod_bcg729.so\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/freetype/Config.in",
    "content": "config BR2_PACKAGE_FREETYPE\n\tbool \"freetype\"\n\thelp\n\t  a free, high-quality and portable font engine.\n\n\t  https://www.freetype.org/\n"
  },
  {
    "path": "package/freetype/freetype.hash",
    "content": "# From https://sourceforge.net/projects/freetype/files/freetype2/2.10.4/\nsha1  0181862673f7216ad2b5074f95fc131209e30b27  freetype-2.10.4.tar.xz\n\n# Locally calculated\nsha256  86a854d8905b19698bbc8f23b860bc104246ce4854dcea8e3b0fb21284f75784  freetype-2.10.4.tar.xz\nsha256  fd056de4196903a676208ef58cfddafc7d583d1f28fa2e44c309cf84a59e62fb  docs/LICENSE.TXT\nsha256  08c135755dd589039470f1fdbb400daaabaaa50d0b366d19cebff4d22986baa1  docs/FTL.TXT\nsha256  c4120c6752c910c299e3bd9cb3a46ff262c268303ca2069b61f92f10a5656c18  docs/GPLv2.TXT\n"
  },
  {
    "path": "package/freetype/freetype.mk",
    "content": "################################################################################\n#\n# freetype\n#\n################################################################################\n\nFREETYPE_VERSION = 2.10.4\nFREETYPE_SOURCE = freetype-$(FREETYPE_VERSION).tar.xz\nFREETYPE_SITE = http://download.savannah.gnu.org/releases/freetype\nFREETYPE_INSTALL_STAGING = YES\nFREETYPE_MAKE_OPTS = CCexe=\"$(HOSTCC)\"\nFREETYPE_LICENSE = Dual FTL/GPL-2.0+\nFREETYPE_LICENSE_FILES = docs/LICENSE.TXT docs/FTL.TXT docs/GPLv2.TXT\nFREETYPE_CPE_ID_VENDOR = freetype\nFREETYPE_DEPENDENCIES = host-pkgconf\nFREETYPE_CONFIG_SCRIPTS = freetype-config\n\n# harfbuzz already depends on freetype so disable harfbuzz in freetype to avoid\n# a circular dependency\nFREETYPE_CONF_OPTS = --without-harfbuzz\n\nHOST_FREETYPE_DEPENDENCIES = host-pkgconf\nHOST_FREETYPE_CONF_OPTS = \\\n\t--without-brotli \\\n\t--without-bzip2 \\\n\t--without-harfbuzz \\\n\t--without-png \\\n\t--without-zlib\n\n# since 2.9.1 needed for freetype-config install\nFREETYPE_CONF_OPTS += --enable-freetype-config\nHOST_FREETYPE_CONF_OPTS += --enable-freetype-config\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nFREETYPE_DEPENDENCIES += zlib\nFREETYPE_CONF_OPTS += --with-zlib\nelse\nFREETYPE_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_BROTLI),y)\nFREETYPE_DEPENDENCIES += brotli\nFREETYPE_CONF_OPTS += --with-brotli\nelse\nFREETYPE_CONF_OPTS += --without-brotli\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nFREETYPE_DEPENDENCIES += bzip2\nFREETYPE_CONF_OPTS += --with-bzip2\nelse\nFREETYPE_CONF_OPTS += --without-bzip2\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nFREETYPE_DEPENDENCIES += libpng\nFREETYPE_CONF_OPTS += --with-png\nelse\nFREETYPE_CONF_OPTS += --without-png\nendif\n\n# Extra fixing since includedir and libdir are expanded from configure values\ndefine FREETYPE_FIX_CONFIG_FILE\n\t$(SED) 's:^includedir=.*:includedir=\"$${prefix}/include\":' \\\n\t\t-e 's:^libdir=.*:libdir=\"$${exec_prefix}/lib\":' \\\n\t\t$(STAGING_DIR)/usr/bin/freetype-config\nendef\nFREETYPE_POST_INSTALL_STAGING_HOOKS += FREETYPE_FIX_CONFIG_FILE\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/frotz/Config.in",
    "content": "config BR2_PACKAGE_FROTZ\n\tbool \"frotz\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Frotz is an interpreter for old Infocom adventure games and\n\t  other Z-code games. Note that frotz cannot be run as root.\n\t  You must add a normal user to your buildroot configuration to\n\t  be able to use it.\n\n\t  https://661.org/proj/if/frotz/\n"
  },
  {
    "path": "package/frotz/frotz.hash",
    "content": "# Locally calculated\nsha256  8da558828dd74d6d6ee30483bb32276ef918b8b72b7f6e89b4f7cb27e7abf58b  frotz-2.53.tar.bz2\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/frotz/frotz.mk",
    "content": "################################################################################\n#\n# Frotz\n#\n################################################################################\n\nFROTZ_VERSION = 2.53\nFROTZ_SOURCE = frotz-$(FROTZ_VERSION).tar.bz2\nFROTZ_SITE = $(call gitlab,DavidGriffith,frotz,$(FROTZ_VERSION))\nFROTZ_DEPENDENCIES = host-pkgconf ncurses\nFROTZ_LICENSE = GPL-2.0+\nFROTZ_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)\nFROTZ_CURSES=ncursesw\nFROTZ_UTF8=yes\nelse\nFROTZ_CURSES=ncurses\nendif\n\ndefine FROTZ_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) PREFIX=/usr CONFIG_DIR=/etc \\\n\t\tSOUND_TYPE=none CURSES=\"$(FROTZ_CURSES)\" USE_UTF8=$(FROTZ_UTF8) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -std=c99\"\nendef\n\ndefine FROTZ_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/frotz $(TARGET_DIR)/usr/bin/frotz\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/frr/Config.in",
    "content": "config BR2_PACKAGE_FRR\n\tbool \"frr\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS # libyang\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c\n\tselect BR2_PACKAGE_BASH\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash\n\tselect BR2_PACKAGE_C_ARES\n\tselect BR2_PACKAGE_LIBYANG\n\tselect BR2_PACKAGE_LIBNL\n\tselect BR2_PACKAGE_READLINE\n\tselect BR2_PACKAGE_JSON_C\n\thelp\n\t  The FRRouting Protocol Suite.\n\n\t  FRR is free software that implements and manages various\n\t  IPv4 and IPv6 routing protocols.\n\n\t  https://frrouting.org\n\ncomment \"frr needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/frr/S50frr",
    "content": "#!/bin/sh\n\nDAEMON=\"frr\"\n\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tinstall -m 755 -o frr -g frr -d /var/run/frr\n\tinstall -m 755 -o frr -g frr -d /var/log/frr\n\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t/usr/sbin/frrinit.sh start\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\t/usr/sbin/frrinit.sh stop\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/frr/frr.hash",
    "content": "# Locally calculated\nsha256 030d4e66f577726dfea13bd3a9c669fd41d8fd89b25953a36b5b0966d406ff28  frr-7.5.1.tar.gz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/frr/frr.mk",
    "content": "################################################################################\n#\n# frr\n#\n################################################################################\n\nFRR_VERSION = 7.5.1\nFRR_SITE = $(call github,FRRouting,frr,frr-$(FRR_VERSION))\nFRR_LICENSE = GPL-2.0\nFRR_LICENSE_FILES = COPYING\nFRR_CPE_ID_VENDOR = linuxfoundation\nFRR_CPE_ID_PRODUCT = free_range_routing\nFRR_AUTORECONF = YES\n\nFRR_DEPENDENCIES = host-frr readline json-c \\\n\tlibyang libnl c-ares\n\nHOST_FRR_DEPENDENCIES = host-flex host-bison host-python3\n\nFRR_CONF_OPTS = --with-clippy=$(HOST_DIR)/bin/clippy \\\n\t--sysconfdir=/etc/frr \\\n\t--localstatedir=/var/run/frr \\\n\t--with-moduledir=/usr/lib/frr/modules \\\n\t--enable-configfile-mask=0640 \\\n\t--enable-logfile-mask=0640 \\\n\t--enable-multipath=256 \\\n\t--disable-ospfclient \\\n\t--enable-shell-access \\\n\t--enable-user=frr \\\n\t--enable-group=frr \\\n\t--enable-vty-group=frrvty \\\n\t--disable-capabilities \\\n\t--enable-fpm\n\nHOST_FRR_CONF_OPTS = --enable-clippy-only\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nFRR_CONF_ENV += LIBS=-latomic\nendif\n\ndefine HOST_FRR_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/lib/clippy $(HOST_DIR)/bin/clippy\nendef\n\ndefine FRR_INSTALL_CONFIG_FILES\n\t$(foreach f,daemons daemons.conf frr.conf vtysh.conf support_bundle_commands.conf,\\\n\t\t$(INSTALL) -D -m 0640 $(@D)/tools/etc/frr/$(f) \\\n\t\t\t$(TARGET_DIR)/etc/frr/$(f)\n\t)\n\t$(RM) $(TARGET_DIR)/etc/frr/*.sample\nendef\nFRR_POST_INSTALL_TARGET_HOOKS += FRR_INSTALL_CONFIG_FILES\n\ndefine FRR_PERMISSIONS\n\t/etc/frr/daemons f 640 frr frr - - - - -\n\t/etc/frr/daemons.conf f 640 frr frr - - - - -\n\t/etc/frr/frr.conf f 640 frr frr - - - - -\n\t/etc/frr/vtysh.conf f 640 frr frrvty - - - - -\n\t/etc/frr/support_bundle_commands.conf f 640 frr frr\nendef\n\ndefine FRR_USERS\n\tfrr -1 frr -1 * /var/run/frr - frrvty FRR user priv\nendef\n\ndefine FRR_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 $(FRR_PKGDIR)/S50frr \\\n\t\t$(TARGET_DIR)/etc/init.d/S50frr\nendef\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/fscryptctl/Config.in",
    "content": "config BR2_PACKAGE_FSCRYPTCTL\n\tbool \"fscryptctl\"\n\thelp\n\t  fscryptctl is a low-level tool written in C that handles raw\n\t  keys and manages policies for Linux filesystem encryption.\n\n\t  Notice: Fscrypt support on EXT4 requires a kernel with\n\t  CONFIG_EXT4_ENCRYPTION=y and a file system with the\n\t  encryption option and block size equal to CPU page size\n\t  (BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS=\"-O encrypt -b 4096\")\n\n\t  https://github.com/google/fscryptctl\n"
  },
  {
    "path": "package/fscryptctl/fscryptctl.hash",
    "content": "# Locally calculated\nsha256 970a8febbcbf315313711d8a7ee3d954dea593d8087744d3cba65f6cb4bebcc1  fscryptctl-f037dcf4354ce8f25d0f371b58dfe7a7ac27576f.tar.gz\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/fscryptctl/fscryptctl.mk",
    "content": "################################################################################\n#\n# fscryptctl\n#\n################################################################################\n\nFSCRYPTCTL_VERSION = f037dcf4354ce8f25d0f371b58dfe7a7ac27576f\nFSCRYPTCTL_SITE = $(call github,google,fscryptctl,$(FSCRYPTCTL_VERSION))\nFSCRYPTCTL_LICENSE = Apache-2.0\nFSCRYPTCTL_LICENSE_FILES = LICENSE\n\ndefine FSCRYPTCTL_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) fscryptctl\nendef\n\ndefine FSCRYPTCTL_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/fscryptctl $(TARGET_DIR)/usr/bin/fscryptctl\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/fstrcmp/0001-disable-rpath.patch",
    "content": "Remove rpath from linking command\n\nFixes build error:\n\nlib/.libs/libfstrcmp.so: undefined reference to `__ctype_b_loc@GLIBC_2.3'\nlib/.libs/libfstrcmp.so: undefined reference to `mbstowcs@GLIBC_2.2.5'\nlib/.libs/libfstrcmp.so: undefined reference to `printf@GLIBC_2.2.5'\nlib/.libs/libfstrcmp.so: undefined reference to `readlink@GLIBC_2.2.5'\nlib/.libs/libfstrcmp.so: undefined reference to `malloc@GLIBC_2.2.5'\nlib/.libs/libfstrcmp.so: undefined reference to `memcmp@GLIBC_2.2.5'\nlib/.libs/libfstrcmp.so: undefined reference to `wcslen@GLIBC_2.2.5'\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- fstrcmp-0.7.D001/Makefile.in.orig\t2014-03-05 01:13:45.000000000 +0100\n+++ fstrcmp-0.7.D001/Makefile.in\t2019-04-07 13:55:07.817689231 +0200\n@@ -507,7 +507,7 @@\n lib/libfstrcmp.la: $(lib_obj)\n \trm -f $@\n \t$(LIBTOOL) --mode=link --tag=CC $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) \\\n-\t\t-o $@ $(lib_obj) $(LIBS) -rpath $(libdir) -version-info 6:0:6\n+\t\t-o $@ $(lib_obj) $(LIBS) -version-info 6:0:6\n \n #\n # The install of the *.la file automatically causes \"$(LIBTOOL) --mode=install\"\n"
  },
  {
    "path": "package/fstrcmp/Config.in",
    "content": "config BR2_PACKAGE_FSTRCMP\n\tbool \"fstrcmp\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  The fstrcmp project provides a library that is used to make\n\t  fuzzy comparisons of strings and byte arrays, including multi-\n\t  byte character strings.\n\n\t  http://fstrcmp.sourceforge.net/\n\ncomment \"fstrcmp needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/fstrcmp/fstrcmp.hash",
    "content": "# From https://sourceforge.net/projects/fstrcmp/files/fstrcmp/0.7/\nmd5 9c440bbdfcad9fd22e38f2388715b0cc  fstrcmp-0.7.D001.tar.gz\nsha1 bb848118fb157dc624ae9fac0566a64cc85f2ef2  fstrcmp-0.7.D001.tar.gz\n# Locally computed\nsha256 e4018e850f80700acee8da296e56e15b1eef711ab15157e542e7d7e1237c3476  fstrcmp-0.7.D001.tar.gz\nsha256 5352e426b563eda9252d76be92337b49f7b5cfdd1302a1e8d99389840c0e46be  LICENSE\n"
  },
  {
    "path": "package/fstrcmp/fstrcmp.mk",
    "content": "################################################################################\n#\n# fstrcmp\n#\n################################################################################\n\nFSTRCMP_VERSION_MAJOR = 0.7\nFSTRCMP_VERSION = $(FSTRCMP_VERSION_MAJOR).D001\nFSTRCMP_SITE = https://sourceforge.net/projects/fstrcmp/files/fstrcmp/$(FSTRCMP_VERSION_MAJOR)\nFSTRCMP_LICENSE = GPL-3.0+\nFSTRCMP_LICENSE_FILES = LICENSE\nFSTRCMP_INSTALL_STAGING = YES\nFSTRCMP_DEPENDENCIES = host-libtool\nFSTRCMP_CONF_ENV = LIBTOOL=\"$(HOST_DIR)/bin/libtool\"\n\nFSTRCMP_MAKE_OPTS = all-bin libdir/pkgconfig/fstrcmp.pc\n\n# We need to install the package files ourselves due to upstream trying\n# to install a .lai file which is missing because of rpath removal\ndefine FSTRCMP_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install-include\n\t$(INSTALL) -D -m 755 $(@D)/lib/.libs/libfstrcmp.a $(STAGING_DIR)/usr/lib/libfstrcmp.a\n\t$(INSTALL) -D -m 755 $(@D)/lib/libfstrcmp.la $(STAGING_DIR)/usr/lib/libfstrcmp.la\n\t$(INSTALL) -D -m 755 $(@D)/libdir/pkgconfig/fstrcmp.pc $(STAGING_DIR)/usr/lib/pkgconfig/fstrcmp.pc\nendef\n\ndefine FSTRCMP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/bin/fstrcmp $(TARGET_DIR)/usr/bin/fstrcmp\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fswebcam/Config.in",
    "content": "config BR2_PACKAGE_FSWEBCAM\n\tbool \"fswebcam\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_GD\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  fswebcam is a neat and simple webcam app. It captures images\n\t  from a V4L1/V4L2 compatible device or file, averages them to\n\t  reduce noise and draws a caption using the GD Graphics\n\t  Library which also handles compressing the image to PNG or\n\t  JPEG. The resulting image is saved to a file or sent to\n\t  stdio where it can be piped to something like ncftpput or\n\t  scp.\n\n\t  https://www.sanslogic.co.uk/fswebcam/\n\ncomment \"fswebcam needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/fswebcam/fswebcam.hash",
    "content": "# Locally calculated\nsha256  5702771cee6e3fa0f2bbbb72ecf3e5a253ff458c1f648f7e7c0d477e39f0ec80  fswebcam-e9f8094b6a3d1a49f99b2abec4e6ab4df33e2e33.tar.gz\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  LICENSE\n"
  },
  {
    "path": "package/fswebcam/fswebcam.mk",
    "content": "################################################################################\n#\n# fswebcam\n#\n################################################################################\n\nFSWEBCAM_VERSION = e9f8094b6a3d1a49f99b2abec4e6ab4df33e2e33\nFSWEBCAM_SITE = $(call github,fsphil,fswebcam,$(FSWEBCAM_VERSION))\nFSWEBCAM_LICENSE = GPL-2.0\nFSWEBCAM_LICENSE_FILES = LICENSE\n\nFSWEBCAM_DEPENDENCIES += freetype jpeg libpng gd\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ftop/0001-overflow.patch",
    "content": "Set tmp_buf and rate_buf to something ridiculously high to fix a buffer\noverflow when COLUMNS is large. - JeR\n\n(Taken from gentoo portage)\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\n--- a/src/ftop.c\t2009-02-16 07:00:00.000000000 +0100\n+++ b/src/ftop.c\t2013-09-06 14:42:41.788852952 +0200\n@@ -736,7 +736,7 @@\n {\n     size_t i, j, bytes, bar_total;\n     char more_procs_ch, more_files_ch, expanded_ch;\n-    char tmp_buf[80], rate_buf[80];\n+    char tmp_buf[2048], rate_buf[2048];\n     char *tmp_str;\n     snapshot *s, *s_prev;\n     file_info *tmp_file;\n"
  },
  {
    "path": "package/ftop/Config.in",
    "content": "config BR2_PACKAGE_FTOP\n\tbool \"ftop\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Ftop is to files what top is to processes.\n\t  The progress of all open files and file systems can be\n\t  monitored.\n\n\t  https://sourceforge.net/projects/ftop/\n"
  },
  {
    "path": "package/ftop/ftop.hash",
    "content": "# From https://sourceforge.net/projects/ftop/files/ftop/1.0/\nmd5 57c68b6e7431f4219d9eddaebcb395da ftop-1.0.tar.bz2\nsha1 d3ef1b74825f50c7c442d299b29d23c2478f199b ftop-1.0.tar.bz2\n# Locally computed\nsha256 3a705f4f291384344cd32c3dd5f5f6a7cd7cea7624c83cb7e923966dbcd47f82  ftop-1.0.tar.bz2\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/ftop/ftop.mk",
    "content": "################################################################################\n#\n# ftop\n#\n################################################################################\n\nFTOP_VERSION = 1.0\nFTOP_SOURCE = ftop-$(FTOP_VERSION).tar.bz2\nFTOP_SITE = https://sourceforge.net/projects/ftop/files/ftop/$(FTOP_VERSION)\nFTOP_DEPENDENCIES = ncurses\nFTOP_LICENSE = GPL-3.0+\nFTOP_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fuse-overlayfs/Config.in",
    "content": "config BR2_PACKAGE_FUSE_OVERLAYFS\n\tbool \"fuse-overlayfs\"\n\tdepends on BR2_USE_MMU # libfuse3\n\tdepends on !BR2_STATIC_LIBS # libfuse3\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libfuse3\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15\n\tselect BR2_PACKAGE_LIBFUSE3\n\thelp\n\t  FUSE-overlayfs is an implementation of overlay+shiftfs in\n\t  FUSE, intended to be used for rootless containers.\n\n\t  http://github.com/containers/fuse-overlayfs\n\ncomment \"fuse-overlayfs needs a toolchain w/ threads, dynamic library, headers >= 3.15\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15\n"
  },
  {
    "path": "package/fuse-overlayfs/fuse-overlayfs.hash",
    "content": "# Locally computed\nsha256  6c81b65b71067b303aaa9871f512c2cabc23e2b793f19c6c854d01a492b5a923  fuse-overlayfs-1.5.0.tar.gz\n# Locally computed\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/fuse-overlayfs/fuse-overlayfs.mk",
    "content": "################################################################################\n#\n# fuse-overlayfs\n#\n################################################################################\n\nFUSE_OVERLAYFS_VERSION = 1.5.0\nFUSE_OVERLAYFS_SITE = $(call github,containers,fuse-overlayfs,v$(FUSE_OVERLAYFS_VERSION))\nFUSE_OVERLAYFS_LICENSE = GPL-3.0\nFUSE_OVERLAYFS_LICENSE_FILES = COPYING\n\nFUSE_OVERLAYFS_AUTORECONF = YES\nFUSE_OVERLAYFS_DEPENDENCIES = libfuse3 host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fwts/0001-build-do-not-use-Werror.patch",
    "content": "From e481c2f990ffa71f205d4b9daf0823e71269a7f3 Mon Sep 17 00:00:00 2001\nFrom: Erico Nunes <nunes.erico@gmail.com>\nDate: Fri, 12 Aug 2016 23:11:56 +0200\nSubject: [PATCH] fwts: do not use -Werror\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nWarnings come and go with various compiler versions, so using -Werror is\nprone to cause build failures with various compiler versions, especially\nnewer versions that introduce new warnings.\n\nRemove use of -Werror.\n\nSigned-off-by: Erico Nunes <nunes.erico@gmail.com>\n[Fabrice: updated for 20.08.00]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Vincent: rebased onto V21.05.00]\nSigned-off-by: Vincent Stehlé <vincent.stehle@laposte.net>\n---\n configure.ac              | 2 +-\n src/Makefile.am           | 2 +-\n src/lib/src/Makefile.am   | 2 +-\n src/utilities/Makefile.am | 2 +-\n 4 files changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex f40c3678..0ff5025b 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1,5 +1,5 @@\n \t  AC_INIT([fwts],[0.1],[fwts-devel@lists.ubuntu.com])\n-          AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects])\n+          AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])\n           m4_ifdef([AM_PROG_AR], [AM_PROG_AR])\n \t  AC_CANONICAL_HOST\n \t  AC_CONFIG_MACRO_DIR([m4])\ndiff --git a/src/Makefile.am b/src/Makefile.am\nindex cdabb386..7c2e5730 100644\n--- a/src/Makefile.am\n+++ b/src/Makefile.am\n@@ -12,7 +12,7 @@ AM_CPPFLAGS = \\\n \t-I$(top_srcdir)/src/acpica/source/compiler\t\\\n \t-I$(top_srcdir)/efi_runtime\t\t\t\\\n \t-pthread `pkg-config --cflags glib-2.0 gio-2.0` \\\n-\t-Wall -Werror -Wextra\t\t\t\t\\\n+\t-Wall -Wextra\t\t\t\t\t\\\n \t-Wno-address-of-packed-member\t\t\t\\\n \t-Wfloat-equal -Wmissing-declarations\t\t\\\n \t-Wno-long-long -Wredundant-decls -Wshadow\t\\\ndiff --git a/src/lib/src/Makefile.am b/src/lib/src/Makefile.am\nindex 55c52b41..50efa97a 100644\n--- a/src/lib/src/Makefile.am\n+++ b/src/lib/src/Makefile.am\n@@ -25,7 +25,7 @@ AM_CPPFLAGS = \\\n \t`pkg-config --silence-errors --cflags json-c`\t\\\n \t`pkg-config --cflags glib-2.0 gio-2.0` \t\t\\\n \t-DDATAROOTDIR=\\\"$(datarootdir)\\\"\t\t\\\n-\t-Wall -Werror -Wextra\t\t\t\t\\\n+\t-Wall -Wextra\t\t\t\t\t\\\n \t-Wno-address-of-packed-member\n \n pkglib_LTLIBRARIES = libfwts.la\ndiff --git a/src/utilities/Makefile.am b/src/utilities/Makefile.am\nindex 1fc0fc02..53614e33 100644\n--- a/src/utilities/Makefile.am\n+++ b/src/utilities/Makefile.am\n@@ -16,7 +16,7 @@\n # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n #\n \n-AM_CPPFLAGS = -Wall -Werror -Wextra -DDATAROOTDIR=\\\"$(datarootdir)\\\" \t\\\n+AM_CPPFLAGS = -Wall -Wextra -DDATAROOTDIR=\\\"$(datarootdir)\\\" \t\\\n \t-I$(srcdir)/../lib/include\n \n bin_PROGRAMS = kernelscan\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/fwts/Config.in",
    "content": "config BR2_PACKAGE_FWTS\n\tbool \"fwts\"\n\tdepends on BR2_i386 || BR2_x86_64 || BR2_aarch64\n\tdepends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS # libbsd\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_USE_WCHAR # libglib2, libbsd\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, libbsd\n\tdepends on !BR2_STATIC_LIBS # libbsd\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # execinfo.h\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBBSD\n\thelp\n\t  Firmware Test Suite (FWTS) is a test suite that performs\n\t  sanity checks on firmware. It is intended to identify BIOS and\n\t  ACPI errors and if appropriate it will try to explain the\n\t  errors and give advice to help workaround or fix firmware\n\t  bugs.\n\n\t  dtc (libfdt) is an optional dependency for fdt related tests.\n\n\t  https://wiki.ubuntu.com/FirmwareTestSuite\n\nif BR2_PACKAGE_FWTS\nconfig BR2_PACKAGE_FWTS_EFI_RUNTIME_MODULE\n\tbool \"efi_runtime module\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  Firmware Test Suite (FWTS) provides a EFI runtime kernel\n\t  module required to run UEFI tests.\n\ncomment \"efi_runtime module needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\nendif\n\ncomment \"fwts needs a glibc toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_i386 || BR2_x86_64 || BR2_aarch64\n\tdepends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS # libbsd\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/fwts/fwts.hash",
    "content": "# Hash from: http://fwts.ubuntu.com/release/SHA256SUMS\nsha256  e2d6e8b0704eba859a567fb8764e5dc5385793fc26bd00ecc70e7af03fd2568d  fwts-V21.05.00.tar.gz\n\n# Hash for license file\nsha256  2003f5c8a1e40d7882f1499bd7adb7bc748c9656851abb28647a3d297c2e8e23  debian/copyright\n"
  },
  {
    "path": "package/fwts/fwts.mk",
    "content": "################################################################################\n#\n# fwts\n#\n################################################################################\n\nFWTS_VERSION = 21.05.00\nFWTS_SOURCE = fwts-V$(FWTS_VERSION).tar.gz\nFWTS_SITE = http://fwts.ubuntu.com/release\nFWTS_STRIP_COMPONENTS = 0\nFWTS_LICENSE = GPL-2.0, LGPL-2.1, Custom\nFWTS_LICENSE_FILES = debian/copyright\nFWTS_AUTORECONF = YES\nFWTS_DEPENDENCIES = host-bison host-flex host-pkgconf libglib2 libbsd \\\n\t$(if $(BR2_PACKAGE_BASH_COMPLETION),bash-completion) \\\n\t$(if $(BR2_PACKAGE_DTC),dtc)\n\nifdef BR2_PACKAGE_FWTS_EFI_RUNTIME_MODULE\nFWTS_MODULE_SUBDIRS = efi_runtime\n$(eval $(kernel-module))\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/fwup/Config.in",
    "content": "config BR2_PACKAGE_FWUP\n\tbool \"fwup\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_LIBARCHIVE\n\t# required by libarchive to include zip compression\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_LIBCONFUSE\n\thelp\n\t  Fwup is a scriptable embedded Linux firmware update creator\n\t  and runner.\n\n\t  https://github.com/fhunleth/fwup\n\ncomment \"fwup needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/fwup/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_FWUP\n\tbool \"host fwup\"\n\thelp\n\t  Fwup is a scriptable embedded Linux firmware update creator\n\t  and runner.\n\n\t  https://github.com/fhunleth/fwup\n"
  },
  {
    "path": "package/fwup/fwup.hash",
    "content": "# Locally calculated\nsha256  9890f0328796f4315e6c1188df5c103855c530fbc14fbc8c12f4b24066c975f1  fwup-1.8.0.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/fwup/fwup.mk",
    "content": "################################################################################\n#\n# fwup\n#\n################################################################################\n\nFWUP_VERSION = 1.8.0\nFWUP_SITE = $(call github,fhunleth,fwup,v$(FWUP_VERSION))\nFWUP_LICENSE = Apache-2.0\nFWUP_LICENSE_FILES = LICENSE\nFWUP_DEPENDENCIES = host-pkgconf libconfuse libarchive\nHOST_FWUP_DEPENDENCIES = host-pkgconf host-libconfuse host-libarchive\nFWUP_AUTORECONF = YES\nFWUP_CONF_ENV = ac_cv_path_HELP2MAN=\"\"\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/fxload/Config.in",
    "content": "config BR2_PACKAGE_FXLOAD\n\tbool \"fxload\"\n\thelp\n\t  This program is conveniently able to download firmware into\n\t  FX, FX2, and FX2LP EZ-USB devices, as well as the original\n\t  AnchorChips EZ-USB.\n\t  It is intended to be invoked by hotplug scripts when the\n\t  unprogrammed device appears on the bus.\n\n\t  http://sourceforge.net/projects/linux-hotplug/\n"
  },
  {
    "path": "package/fxload/fxload.hash",
    "content": "# Locally computed:\nsha256  0cc8bfd2a7cbba2f68e0c5767477634922287943c91dd9fcf029fc8b9d577858  fxload-2008_10_13.tar.gz\nsha256  dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa  COPYING\n"
  },
  {
    "path": "package/fxload/fxload.mk",
    "content": "################################################################################\n#\n# fxload\n#\n################################################################################\n\nFXLOAD_VERSION = 2008_10_13\nFXLOAD_SITE = http://downloads.sourceforge.net/project/linux-hotplug/fxload/$(FXLOAD_VERSION)\nFXLOAD_LICENSE = GPL-2.0+\nFXLOAD_LICENSE_FILES = COPYING\n\nFXLOAD_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_63261),y)\nFXLOAD_CFLAGS += -O0\nendif\n\ndefine FXLOAD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(FXLOAD_CFLAGS)\" -C $(@D) all\nendef\n\ndefine FXLOAD_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) prefix=$(TARGET_DIR) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/gamin/0001-no-abstract-sockets.patch",
    "content": "[PATCH]: Remove abstract socket namespace check breaking cross compilation\n\nTaken from openembedded:\n\nhttp://git.openembedded.org/cgit.cgi/openembedded/tree/recipes/gamin/files/no-abstract-sockets.patch\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n--- /tmp/configure.in\t2007-04-30 13:08:49.000000000 +0200\n+++ gamin-0.1.8/configure.in\t2007-04-30 13:10:53.285251000 +0200\n@@ -354,51 +354,6 @@\n     AC_DEFINE(HAVE_CMSGCRED,1,[Have cmsgcred structure])\n fi\n \n-#### Abstract sockets\n-\n-AC_MSG_CHECKING(abstract socket namespace)\n-AC_LANG_PUSH(C)\n-AC_RUN_IFELSE([AC_LANG_PROGRAM(\n-[[\n-#include <sys/types.h>\n-#include <stdlib.h>\n-#include <string.h>\n-#include <stdio.h>\n-#include <sys/socket.h>\n-#include <sys/un.h>\n-#include <errno.h>\n-]],\n-[[\n-  int listen_fd;\n-  struct sockaddr_un addr;\n-  \n-  listen_fd = socket (PF_UNIX, SOCK_STREAM, 0);\n-  \n-  if (listen_fd < 0)\n-    {\n-      fprintf (stderr, \"socket() failed: %s\\n\", strerror (errno));\n-      exit (1);\n-    }\n-\n-  memset (&addr, '\\0', sizeof (addr));\n-  addr.sun_family = AF_UNIX;\n-  strcpy (addr.sun_path, \"X/tmp/dbus-fake-socket-path-used-in-configure-test\");\n-  addr.sun_path[0] = '\\0'; /* this is what makes it abstract */\n-  \n-  if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0)\n-    {\n-       fprintf (stderr, \"Abstract socket namespace bind() failed: %s\\n\", \n-                strerror (errno));\n-       exit (1);\n-    }\n-  else \n-    exit (0);\n-]])],\n-              [have_abstract_sockets=yes],\n-              [have_abstract_sockets=no])\n-AC_LANG_POP(C)\n-AC_MSG_RESULT($have_abstract_sockets)\n-\n if test x$enable_abstract_sockets = xyes; then\n     if test x$have_abstract_sockets = xno; then\n \tAC_MSG_ERROR([Abstract sockets explicitly required, and support not detected.])\n"
  },
  {
    "path": "package/gamin/0002-no-const-return.patch",
    "content": "G_CONST_RETURN is deprecated in glib 2.30 so remove to to avoid\nbuild failures.\n\nUpstream-Status: Pending\n\nIndex: gamin-0.1.10/server/gam_node.c\n===================================================================\n--- gamin-0.1.10.orig/server/gam_node.c\t2011-10-12 15:25:45.217178314 +0100\n+++ gamin-0.1.10/server/gam_node.c\t2011-10-12 15:26:17.807178293 +0100\n@@ -122,7 +122,7 @@\n  * it has finished with the string.  If it must keep it longer, it\n  * should makes its own copy.  The returned string must not be freed.\n  */\n-G_CONST_RETURN char *\n+const char *\n gam_node_get_path(GamNode * node)\n {\n     g_assert(node);\nIndex: gamin-0.1.10/server/gam_node.h\n===================================================================\n--- gamin-0.1.10.orig/server/gam_node.h\t2011-10-12 15:25:46.857178269 +0100\n+++ gamin-0.1.10/server/gam_node.h\t2011-10-12 15:26:28.637178297 +0100\n@@ -58,7 +58,7 @@\n void                  gam_node_set_is_dir          (GamNode         *node,\n \t\t\t\t\t\t   gboolean        is_dir);\n \t\n-G_CONST_RETURN char  *gam_node_get_path            (GamNode         *node);\n+const char  *gam_node_get_path            (GamNode         *node);\n \n GList                *gam_node_get_subscriptions   (GamNode         *node);\n \nIndex: gamin-0.1.10/server/gam_subscription.c\n===================================================================\n--- gamin-0.1.10.orig/server/gam_subscription.c\t2011-10-12 15:25:40.497177525 +0100\n+++ gamin-0.1.10/server/gam_subscription.c\t2011-10-12 15:26:39.867178304 +0100\n@@ -141,7 +141,7 @@\n  * @param sub the GamSubscription\n  * @returns The path being monitored.  It should not be freed.\n  */\n-G_CONST_RETURN char *\n+const char *\n gam_subscription_get_path(GamSubscription * sub)\n {\n     if (sub == NULL)\nIndex: gamin-0.1.10/server/gam_subscription.h\n===================================================================\n--- gamin-0.1.10.orig/server/gam_subscription.h\t2011-10-12 15:25:28.507178266 +0100\n+++ gamin-0.1.10/server/gam_subscription.h\t2011-10-12 15:25:58.817178285 +0100\n@@ -21,7 +21,7 @@\n \n int                  gam_subscription_get_reqno    (GamSubscription *sub);\n \n-G_CONST_RETURN char *gam_subscription_get_path     (GamSubscription *sub);\n+const char *gam_subscription_get_path     (GamSubscription *sub);\n \n GamListener         *gam_subscription_get_listener (GamSubscription *sub);\n \n"
  },
  {
    "path": "package/gamin/0003-fix-missing-PTHREAD_MUTEX_RECURSIVE_NP.patch",
    "content": "Fix missing PTHREAD_MUTEX_RECURSIVE_NP\n\nThe musl C library does not provide the non portable\nPTHREAD_MUTEX_RECURSIVE_NP. In addition, uClibc does not define it as\na #define, but as an enum value, so doing a #if defined() check\ndoesn't work properly. Instead, add a AC_CHECK_DECL() autoconf check.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n[Thomas: switch to an autoconf check.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/configure.in\n===================================================================\n--- a/configure.in\n+++ b/configure.in\n@@ -294,6 +294,10 @@\n \t   AC_DEFINE([HAVE_LIBPTHREAD], [], [Define if pthread library is there (-lpthread)])\n \t   AC_DEFINE([HAVE_PTHREAD_H], [], [Define if <pthread.h> is there])\n \t   WITH_THREADS=\"1\"]))\n+\n+    AC_CHECK_DECL([PTHREAD_MUTEX_RECURSIVE_NP],\n+\t\t[AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE_NP], [], [whether HAVE_PTHREAD_MUTEX_RECURSIVE_NP is defined])],\n+\t\t[], [#include <pthread.h>])\n fi\n \n dnl Use weak symbols on linux/gcc to avoid imposing libpthreads to apps\nIndex: b/libgamin/gam_data.c\n===================================================================\n--- a/libgamin/gam_data.c\n+++ b/libgamin/gam_data.c\n@@ -470,7 +470,7 @@\n     }\n     if (is_threaded > 0) {\n \tpthread_mutexattr_init(&attr);\n-#if defined(linux) || defined(PTHREAD_MUTEX_RECURSIVE_NP)\n+#if defined(HAVE_PTHREAD_MUTEX_RECURSIVE_NP)\n \tpthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);\n #else\n \tpthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);\n"
  },
  {
    "path": "package/gamin/Config.in",
    "content": "config BR2_PACKAGE_GAMIN\n\tbool \"gamin\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  the File Alteration Monitor\n\n\t  http://www.gnome.org/~veillard/gamin/sources\n\ncomment \"gamin needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gamin/gamin.hash",
    "content": "# Locally calculated\nsha256  28085f0ae8be10eab582ff186af4fb0be92cc6c62b5cc19cd09b295c7c2899a1  gamin-0.1.10.tar.gz\nsha256  7f9ffc38883325f011f331a9d6074ffd0175fbcecd57f69c577fb3845f333876  COPYING\n"
  },
  {
    "path": "package/gamin/gamin.mk",
    "content": "################################################################################\n#\n# gamin\n#\n################################################################################\n\nGAMIN_VERSION = 0.1.10\nGAMIN_SITE = http://www.gnome.org/~veillard/gamin/sources\nGAMIN_AUTORECONF = YES\nGAMIN_INSTALL_STAGING = YES\nGAMIN_LICENSE = LGPL-2.0+\nGAMIN_LICENSE_FILES = COPYING\n\n# python support broken\nGAMIN_CONF_OPTS += --without-python\n\nGAMIN_CONF_ENV = have_abstract_sockets=no\n\nGAMIN_DEPENDENCIES = libglib2\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gauche/Config.in",
    "content": "# Architecture dependency from the bundled bdwgc.\nconfig BR2_PACKAGE_GAUCHE_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_arm || BR2_armeb || BR2_i386 || BR2_m68k || \\\n\t\tBR2_mips || BR2_mipsel || BR2_mips64 || \\\n\t\tBR2_mips64el || BR2_powerpc || BR2_powerpc64 || \\\n\t\tBR2_powerpc64le || BR2_sh || BR2_x86_64\n\nconfig BR2_PACKAGE_GAUCHE\n\tbool \"gauche\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_GAUCHE_ARCH_SUPPORTS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Gauche is an R7RS Scheme implementation developed to be a\n\t  handy script interpreter, which allows programmers and\n\t  system administrators to write small to large scripts for\n\t  their daily chores. Quick startup, built-in system\n\t  interface, native multilingual support are some of its\n\t  goals.\n\n\t  http://practical-scheme.net/gauche/\n\ncomment \"gauche needs a toolchain w/ NPTL, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_GAUCHE_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/gauche/gauche.hash",
    "content": "# From https://sourceforge.net/projects/gauche/files/Gauche/\nsha1  ad5e15021764b733ec913cca8b77c9a53d4ee997  Gauche-0.9.9.tgz\nmd5  20d8ed835ae0bc97cceed78a71f9857b  Gauche-0.9.9.tgz\n# Locally calculated\nsha256  4ca9325322a7efadb9680d156eb7b53521321c9ca4955c4cbe738bc2e1d7f7fb  Gauche-0.9.9.tgz\nsha256  13cb582677dbcdc5b34313c59b4a014e74ef2f5fd80e514a0bd98fd8a4e45bed  COPYING\n"
  },
  {
    "path": "package/gauche/gauche.mk",
    "content": "################################################################################\n#\n# gauche\n#\n################################################################################\n\nGAUCHE_VERSION = 0.9.9\nGAUCHE_SOURCE = Gauche-$(GAUCHE_VERSION).tgz\nGAUCHE_SITE = http://downloads.sourceforge.net/project/gauche/Gauche\nGAUCHE_LICENSE = BSD-3-Clause, Boehm-gc, SRFI (srfi-11.scm), reload (reload.scm)\nGAUCHE_LICENSE_FILES = COPYING\nGAUCHE_DEPENDENCIES = host-gauche\n# We're patching configure.ac\nGAUCHE_AUTORECONF = YES\n\nHOST_GAUCHE_CONF_OPTS = --without-zlib\nGAUCHE_CONF_OPTS = --without-libatomic-ops\n\n# Enable embedded axTLS\nGAUCHE_TLS_LIBS = axtls\n\nifeq ($(BR2_PACKAGE_MBEDTLS),y)\nGAUCHE_TLS_LIBS += mbedtls\nGAUCHE_DEPENDENCIES += mbedtls\nendif\n\nGAUCHE_CONF_OPTS += --with-tls=\"$(GAUCHE_TLS_LIBS)\"\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nGAUCHE_CONF_OPTS += --with-zlib=$(STAGING_DIR)\nGAUCHE_DEPENDENCIES += zlib\nelse\nGAUCHE_CONF_OPTS += --without-zlib\nendif\n\n# Detection of c99 support in configure fails without WCHAR. To enable\n# automatic detection of c99 support by configure, we need to enable\n# WCHAR in toolchain. But actually we do not need WCHAR at gauche\n# runtime. So reuesting WCHAR in toolchain just for automatic detection\n# will be overkill. To solve this, explicitly -std=gnu99 is specified\n# here.\nGAUCHE_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -std=gnu99\"\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/gawk/0001-no-versioned.patch",
    "content": "Disabled versioned installation of binaries to save space.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n[Gustavo: update for 4.1.2]\n\ndiff -Nura gawk-4.1.2.orig/Makefile.in gawk-4.1.2/Makefile.in\n--- gawk-4.1.2.orig/Makefile.in\t2015-04-29 16:11:09.367925925 -0300\n+++ gawk-4.1.2/Makefile.in\t2015-04-29 16:11:25.308466495 -0300\n@@ -1173,6 +1173,7 @@\n # (This is done universally, which may not always be right, but\n # there's no easy way to distinguish GNU from non-GNU systems.)\n install-exec-hook:\n+foo:\n \t(cd $(DESTDIR)$(bindir); \\\n \t$(LN) gawk$(EXEEXT) gawk-$(VERSION)$(EXEEXT) 2>/dev/null ; \\\n \tif [ ! -f awk$(EXEEXT) ]; \\\n"
  },
  {
    "path": "package/gawk/Config.in",
    "content": "config BR2_PACKAGE_GAWK\n\tbool \"gawk\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  A special-purpose programming language which is data driven\n\t  rather than procedural. Allows for simple data-reformatting\n\t  jobs with just a few lines of code.\n\n\t  http://www.gnu.org/software/gawk/\n\ncomment \"gawk needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/gawk/gawk.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://ftp.gnu.org/gnu/gawk/gawk-5.1.0.tar.xz.sig\n# Primary key fingerprint: D196 7C63 7887 1317 7D86  1ED7 DF59 7815 937E C0D2\nsha256  cf5fea4ac5665fd5171af4716baab2effc76306a9572988d5ba1078f196382bd  gawk-5.1.0.tar.xz\n# Locally calculated\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/gawk/gawk.mk",
    "content": "################################################################################\n#\n# gawk\n#\n################################################################################\n\nGAWK_VERSION = 5.1.0\nGAWK_SOURCE = gawk-$(GAWK_VERSION).tar.xz\nGAWK_SITE = $(BR2_GNU_MIRROR)/gawk\nGAWK_DEPENDENCIES = host-gawk\nGAWK_LICENSE = GPL-3.0+\nGAWK_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_LIBSIGSEGV),y)\nGAWK_DEPENDENCIES += libsigsegv\nendif\n\n# --with-mpfr requires an argument so just let\n# configure find it automatically\nifeq ($(BR2_PACKAGE_MPFR),y)\nGAWK_DEPENDENCIES += mpfr\nelse\nGAWK_CONF_OPTS += --without-mpfr\nendif\n\n# --with-readline requires an argument so just let\n# configure find it automatically\nifeq ($(BR2_PACKAGE_READLINE),y)\nGAWK_DEPENDENCIES += readline\nelse\nGAWK_CONF_OPTS += --without-readline\nendif\n\nHOST_GAWK_CONF_OPTS = --without-readline --without-mpfr\n\ndefine GAWK_CREATE_SYMLINK\n\tln -sf gawk $(TARGET_DIR)/usr/bin/awk\nendef\n\nGAWK_POST_INSTALL_TARGET_HOOKS += GAWK_CREATE_SYMLINK\n\ndefine HOST_GAWK_CREATE_SYMLINK\n\tln -sf gawk $(HOST_DIR)/usr/bin/awk\nendef\n\nHOST_GAWK_POST_INSTALL_HOOKS += HOST_GAWK_CREATE_SYMLINK\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/gcc/10.3.0/0001-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch",
    "content": "From 0824d6819857f306583592bce96315893f91bd84 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Wed, 20 Jan 2021 23:26:29 +0100\nSubject: [PATCH] Revert \"re PR target/92095 (internal error with -O1\n -mcpu=niagara2 -fPIE)\"\n\nThis reverts commit 0a83f1a441d7aaadecb368c237b6ee70bd7b91d6.\n\nBuilding the Buildroot defconfig qemu_sparc_ss10_defconfig using\ngcc 8.4, 9.3 and 10 produce a broken rootfs that trigger illegal\ninstruction messages.\n\ngcc 8.3, 9.2 are the latest working gcc version.\ngit bisect between gcc 8.4 and 8.4 allowed to identify\nthe commit that introcuce the regression.\n\nReverting this patch allowed to produce a working rootfs.\n\nReported to gcc:\nhttps://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\nCc: Eric Botcazou <ebotcazou@gcc.gnu.org>\n---\n gcc/config/sparc/sparc-protos.h               |   1 -\n gcc/config/sparc/sparc.c                      | 121 +++++++-----------\n gcc/config/sparc/sparc.md                     |   5 +-\n .../gcc.c-torture/compile/20191108-1.c        |  14 --\n gcc/testsuite/gcc.target/sparc/overflow-3.c   |   2 +-\n gcc/testsuite/gcc.target/sparc/overflow-4.c   |   2 +-\n gcc/testsuite/gcc.target/sparc/overflow-5.c   |   2 +-\n 7 files changed, 53 insertions(+), 94 deletions(-)\n delete mode 100644 gcc/testsuite/gcc.c-torture/compile/20191108-1.c\n\ndiff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h\nindex 5f9999a669c..37452b06415 100644\n--- a/gcc/config/sparc/sparc-protos.h\n+++ b/gcc/config/sparc/sparc-protos.h\n@@ -69,7 +69,6 @@ extern void sparc_split_reg_mem (rtx, rtx, machine_mode);\n extern void sparc_split_mem_reg (rtx, rtx, machine_mode);\n extern int sparc_split_reg_reg_legitimate (rtx, rtx);\n extern void sparc_split_reg_reg (rtx, rtx, machine_mode);\n-extern const char *output_load_pcrel_sym (rtx *);\n extern const char *output_ubranch (rtx, rtx_insn *);\n extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *);\n extern const char *output_return (rtx_insn *);\ndiff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c\nindex d0843102148..14d112d8ca8 100644\n--- a/gcc/config/sparc/sparc.c\n+++ b/gcc/config/sparc/sparc.c\n@@ -4157,6 +4157,13 @@ eligible_for_sibcall_delay (rtx_insn *trial)\n static bool\n sparc_cannot_force_const_mem (machine_mode mode, rtx x)\n {\n+  /* After IRA has run in PIC mode, it is too late to put anything into the\n+     constant pool if the PIC register hasn't already been initialized.  */\n+  if ((lra_in_progress || reload_in_progress)\n+      && flag_pic\n+      && !crtl->uses_pic_offset_table)\n+    return true;\n+\n   switch (GET_CODE (x))\n     {\n     case CONST_INT:\n@@ -4192,11 +4199,9 @@ sparc_cannot_force_const_mem (machine_mode mode, rtx x)\n }\n \f\n /* Global Offset Table support.  */\n-static GTY(()) rtx got_symbol_rtx = NULL_RTX;\n-static GTY(()) rtx got_register_rtx = NULL_RTX;\n static GTY(()) rtx got_helper_rtx = NULL_RTX;\n-\n-static GTY(()) bool got_helper_needed = false;\n+static GTY(()) rtx got_register_rtx = NULL_RTX;\n+static GTY(()) rtx got_symbol_rtx = NULL_RTX;\n \n /* Return the SYMBOL_REF for the Global Offset Table.  */\n \n@@ -4209,6 +4214,27 @@ sparc_got (void)\n   return got_symbol_rtx;\n }\n \n+#ifdef HAVE_GAS_HIDDEN\n+# define USE_HIDDEN_LINKONCE 1\n+#else\n+# define USE_HIDDEN_LINKONCE 0\n+#endif\n+\n+static void\n+get_pc_thunk_name (char name[32], unsigned int regno)\n+{\n+  const char *reg_name = reg_names[regno];\n+\n+  /* Skip the leading '%' as that cannot be used in a\n+     symbol name.  */\n+  reg_name += 1;\n+\n+  if (USE_HIDDEN_LINKONCE)\n+    sprintf (name, \"__sparc_get_pc_thunk.%s\", reg_name);\n+  else\n+    ASM_GENERATE_INTERNAL_LABEL (name, \"LADDPC\", regno);\n+}\n+\n /* Wrapper around the load_pcrel_sym{si,di} patterns.  */\n \n static rtx\n@@ -4228,78 +4254,30 @@ gen_load_pcrel_sym (rtx op0, rtx op1, rtx op2)\n   return insn;\n }\n \n-/* Output the load_pcrel_sym{si,di} patterns.  */\n-\n-const char *\n-output_load_pcrel_sym (rtx *operands)\n-{\n-  if (flag_delayed_branch)\n-    {\n-      output_asm_insn (\"sethi\\t%%hi(%a1-4), %0\", operands);\n-      output_asm_insn (\"call\\t%a2\", operands);\n-      output_asm_insn (\" add\\t%0, %%lo(%a1+4), %0\", operands);\n-    }\n-  else\n-    {\n-      output_asm_insn (\"sethi\\t%%hi(%a1-8), %0\", operands);\n-      output_asm_insn (\"add\\t%0, %%lo(%a1-4), %0\", operands);\n-      output_asm_insn (\"call\\t%a2\", operands);\n-      output_asm_insn (\" nop\", NULL);\n-    }\n-\n-  if (operands[2] == got_helper_rtx)\n-    got_helper_needed = true;\n-\n-  return \"\";\n-}\n-\n-#ifdef HAVE_GAS_HIDDEN\n-# define USE_HIDDEN_LINKONCE 1\n-#else\n-# define USE_HIDDEN_LINKONCE 0\n-#endif\n-\n /* Emit code to load the GOT register.  */\n \n void\n load_got_register (void)\n {\n-  rtx insn;\n+  if (!got_register_rtx)\n+    got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);\n \n   if (TARGET_VXWORKS_RTP)\n-    {\n-      if (!got_register_rtx)\n-\tgot_register_rtx = pic_offset_table_rtx;\n-\n-      insn = gen_vxworks_load_got ();\n-    }\n+    emit_insn (gen_vxworks_load_got ());\n   else\n     {\n-      if (!got_register_rtx)\n-\tgot_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);\n-\n       /* The GOT symbol is subject to a PC-relative relocation so we need a\n \t helper function to add the PC value and thus get the final value.  */\n       if (!got_helper_rtx)\n \t{\n \t  char name[32];\n-\n-\t  /* Skip the leading '%' as that cannot be used in a symbol name.  */\n-\t  if (USE_HIDDEN_LINKONCE)\n-\t    sprintf (name, \"__sparc_get_pc_thunk.%s\",\n-\t\t     reg_names[REGNO (got_register_rtx)] + 1);\n-\t  else\n-\t    ASM_GENERATE_INTERNAL_LABEL (name, \"LADDPC\",\n-\t\t\t\t\t REGNO (got_register_rtx));\n-\n+\t  get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM);\n \t  got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));\n \t}\n \n-      insn\n-\t= gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx);\n+      emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (),\n+\t\t\t\t     got_helper_rtx));\n     }\n-\n-  emit_insn (insn);\n }\n \n /* Ensure that we are not using patterns that are not OK with PIC.  */\n@@ -5464,7 +5442,7 @@ save_local_or_in_reg_p (unsigned int regno, int leaf_function)\n     return true;\n \n   /* GOT register (%l7) if needed.  */\n-  if (got_register_rtx && regno == REGNO (got_register_rtx))\n+  if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx)\n     return true;\n \n   /* If the function accesses prior frames, the frame pointer and the return\n@@ -12507,9 +12485,10 @@ static void\n sparc_file_end (void)\n {\n   /* If we need to emit the special GOT helper function, do so now.  */\n-  if (got_helper_needed)\n+  if (got_helper_rtx)\n     {\n       const char *name = XSTR (got_helper_rtx, 0);\n+      const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM];\n #ifdef DWARF2_UNWIND_INFO\n       bool do_cfi;\n #endif\n@@ -12546,22 +12525,17 @@ sparc_file_end (void)\n #ifdef DWARF2_UNWIND_INFO\n       do_cfi = dwarf2out_do_cfi_asm ();\n       if (do_cfi)\n-\toutput_asm_insn (\".cfi_startproc\", NULL);\n+\tfprintf (asm_out_file, \"\\t.cfi_startproc\\n\");\n #endif\n       if (flag_delayed_branch)\n-\t{\n-\t  output_asm_insn (\"jmp\\t%%o7+8\", NULL);\n-\t  output_asm_insn (\" add\\t%%o7, %0, %0\", &got_register_rtx);\n-\t}\n+\tfprintf (asm_out_file, \"\\tjmp\\t%%o7+8\\n\\t add\\t%%o7, %s, %s\\n\",\n+\t\t reg_name, reg_name);\n       else\n-\t{\n-\t  output_asm_insn (\"add\\t%%o7, %0, %0\", &got_register_rtx);\n-\t  output_asm_insn (\"jmp\\t%%o7+8\", NULL);\n-\t  output_asm_insn (\" nop\", NULL);\n-\t}\n+\tfprintf (asm_out_file, \"\\tadd\\t%%o7, %s, %s\\n\\tjmp\\t%%o7+8\\n\\t nop\\n\",\n+\t\t reg_name, reg_name);\n #ifdef DWARF2_UNWIND_INFO\n       if (do_cfi)\n-\toutput_asm_insn (\".cfi_endproc\", NULL);\n+\tfprintf (asm_out_file, \"\\t.cfi_endproc\\n\");\n #endif\n     }\n \n@@ -13056,10 +13030,7 @@ sparc_init_pic_reg (void)\n   edge entry_edge;\n   rtx_insn *seq;\n \n-  /* In PIC mode, we need to always initialize the PIC register if optimization\n-     is enabled, because we are called from IRA and LRA may later force things\n-     to the constant pool for optimization purposes.  */\n-  if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize))\n+  if (!crtl->uses_pic_offset_table)\n     return;\n \n   start_sequence ();\ndiff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md\nindex 6e9ccb4ecfd..8fb0fa11aed 100644\n--- a/gcc/config/sparc/sparc.md\n+++ b/gcc/config/sparc/sparc.md\n@@ -1601,7 +1601,10 @@\n    (clobber (reg:P O7_REG))]\n   \"REGNO (operands[0]) == INTVAL (operands[3])\"\n {\n-  return output_load_pcrel_sym (operands);\n+  if (flag_delayed_branch)\n+    return \"sethi\\t%%hi(%a1-4), %0\\n\\tcall\\t%a2\\n\\t add\\t%0, %%lo(%a1+4), %0\";\n+  else\n+    return \"sethi\\t%%hi(%a1-8), %0\\n\\tadd\\t%0, %%lo(%a1-4), %0\\n\\tcall\\t%a2\\n\\t nop\";\n }\n   [(set (attr \"type\") (const_string \"multi\"))\n    (set (attr \"length\")\ndiff --git a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c b/gcc/testsuite/gcc.c-torture/compile/20191108-1.c\ndeleted file mode 100644\nindex 7929751bb06..00000000000\n--- a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c\n+++ /dev/null\n@@ -1,14 +0,0 @@\n-/* PR target/92095 */\n-/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */\n-\n-typedef union {\n-  double a;\n-  int b[2];\n-} c;\n-\n-double d(int e)\n-{\n-  c f;\n-  (&f)->b[0] = 15728640;\n-  return e ? -(&f)->a : (&f)->a;\n-}\ndiff --git a/gcc/testsuite/gcc.target/sparc/overflow-3.c b/gcc/testsuite/gcc.target/sparc/overflow-3.c\nindex 52d6ab2b688..86dddfb09e6 100644\n--- a/gcc/testsuite/gcc.target/sparc/overflow-3.c\n+++ b/gcc/testsuite/gcc.target/sparc/overflow-3.c\n@@ -1,6 +1,6 @@\n /* { dg-do compile } */\n /* { dg-require-effective-target lp64 } */\n-/* { dg-options \"-O -fno-pie\" } */\n+/* { dg-options \"-O\" } */\n \n #include <stdbool.h>\n #include <stdint.h>\ndiff --git a/gcc/testsuite/gcc.target/sparc/overflow-4.c b/gcc/testsuite/gcc.target/sparc/overflow-4.c\nindex c6121b958c3..019feee335c 100644\n--- a/gcc/testsuite/gcc.target/sparc/overflow-4.c\n+++ b/gcc/testsuite/gcc.target/sparc/overflow-4.c\n@@ -1,6 +1,6 @@\n /* { dg-do compile } */\n /* { dg-require-effective-target lp64 } */\n-/* { dg-options \"-O -fno-pie -mno-vis3 -mno-vis4\" } */\n+/* { dg-options \"-O -mno-vis3 -mno-vis4\" } */\n \n #include <stdbool.h>\n #include <stdint.h>\ndiff --git a/gcc/testsuite/gcc.target/sparc/overflow-5.c b/gcc/testsuite/gcc.target/sparc/overflow-5.c\nindex f00283f6e7b..67d4ac38095 100644\n--- a/gcc/testsuite/gcc.target/sparc/overflow-5.c\n+++ b/gcc/testsuite/gcc.target/sparc/overflow-5.c\n@@ -1,6 +1,6 @@\n /* { dg-do compile } */\n /* { dg-require-effective-target lp64 } */\n-/* { dg-options \"-O -fno-pie -mvis3\" } */\n+/* { dg-options \"-O -mvis3\" } */\n \n #include <stdbool.h>\n #include <stdint.h>\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/gcc/10.3.0/0002-or1k-Add-mcmodel-option-to-handle-large-GOTs.patch",
    "content": "From 1dad3f95ffcd1871ca670a13a06fbedb1c3ce509 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:11:44 +0900\nSubject: [PATCH] or1k: Add mcmodel option to handle large GOTs\n\nWhen building libgeos we get an error with:\n\n    linux-uclibc/9.3.0/crtbeginS.o: in function `__do_global_dtors_aux':\n    crtstuff.c:(.text+0x118): relocation truncated to fit: R_OR1K_GOT16 against symbol `__cxa_finalize' defined in .text section in\n    /home/shorne/work/openrisc/3eb9f9d0f6d8274b2d19753c006bd83f7d536e3c/output/host/or1k-buildroot-linux-uclibc/sysroot/lib/libc.so.\n\nThis is caused by GOT code having a limit of 64k.  In OpenRISC this\nlooks to be the only relocation code pattern to be limited to 64k.\n\nThis patch allows specifying a new option -mcmodel=large which can be\nused to generate 2 more instructions to construct 32-bit addresses for\nup to 4G GOTs.\n\ngcc/ChangeLog:\n\n\tPR 99783\n\t* config/or1k/or1k-opts.h: New file.\n\t* config/or1k/or1k.c (or1k_legitimize_address_1, print_reloc):\n\tSupport generating gotha relocations if -mcmodel=large is\n\tspecified.\n\t* config/or1k/or1k.h (TARGET_CMODEL_SMALL, TARGET_CMODEL_LARGE):\n\tNew macros.\n\t* config/or1k/or1k.opt (mcmodel=): New option.\n\t* doc/invoke.text (OpenRISC Options): Document mcmodel.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n gcc/config/or1k/or1k-opts.h | 30 ++++++++++++++++++++++++++++++\n gcc/config/or1k/or1k.c      | 11 +++++++++--\n gcc/config/or1k/or1k.h      |  7 +++++++\n gcc/config/or1k/or1k.opt    | 19 +++++++++++++++++++\n gcc/doc/invoke.texi         | 12 +++++++++++-\n 5 files changed, 76 insertions(+), 3 deletions(-)\n create mode 100644 gcc/config/or1k/or1k-opts.h\n\ndiff --git a/gcc/config/or1k/or1k-opts.h b/gcc/config/or1k/or1k-opts.h\nnew file mode 100644\nindex 00000000000..f791b894fdd\n--- /dev/null\n+++ b/gcc/config/or1k/or1k-opts.h\n@@ -0,0 +1,30 @@\n+/* Definitions for option handling for OpenRISC.\n+   Copyright (C) 2021 Free Software Foundation, Inc.\n+   Contributed by Stafford Horne.\n+\n+   This file is part of GCC.\n+\n+   GCC is free software; you can redistribute it and/or modify it\n+   under the terms of the GNU General Public License as published\n+   by the Free Software Foundation; either version 3, or (at your\n+   option) any later version.\n+\n+   GCC is distributed in the hope that it will be useful, but WITHOUT\n+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public\n+   License for more details.\n+\n+   You should have received a copy of the GNU General Public License\n+   along with GCC; see the file COPYING3.  If not see\n+   <http://www.gnu.org/licenses/>.  */\n+\n+#ifndef GCC_OR1K_OPTS_H\n+#define GCC_OR1K_OPTS_H\n+\n+/* The OpenRISC code generation models available.  */\n+enum or1k_cmodel_type {\n+  CMODEL_SMALL,\n+  CMODEL_LARGE\n+};\n+\n+#endif /* GCC_OR1K_OPTS_H */\ndiff --git a/gcc/config/or1k/or1k.c b/gcc/config/or1k/or1k.c\nindex 5fa5425aa2b..88613f9596b 100644\n--- a/gcc/config/or1k/or1k.c\n+++ b/gcc/config/or1k/or1k.c\n@@ -750,7 +750,14 @@ or1k_legitimize_address_1 (rtx x, rtx scratch)\n \t    {\n \t      base = gen_sym_unspec (base, UNSPEC_GOT);\n \t      crtl->uses_pic_offset_table = 1;\n-\t      t2 = gen_rtx_LO_SUM (Pmode, pic_offset_table_rtx, base);\n+\t      if (TARGET_CMODEL_LARGE)\n+\t\t{\n+\t          emit_insn (gen_rtx_SET (t1, gen_rtx_HIGH (Pmode, base)));\n+\t          emit_insn (gen_add3_insn (t1, t1, pic_offset_table_rtx));\n+\t          t2 = gen_rtx_LO_SUM (Pmode, t1, base);\n+\t\t}\n+\t      else\n+\t        t2 = gen_rtx_LO_SUM (Pmode, pic_offset_table_rtx, base);\n \t      t2 = gen_const_mem (Pmode, t2);\n \t      emit_insn (gen_rtx_SET (t1, t2));\n \t      base = t1;\n@@ -1089,7 +1096,7 @@ print_reloc (FILE *stream, rtx x, HOST_WIDE_INT add, reloc_kind kind)\n      no special markup.  */\n   static const char * const relocs[RKIND_MAX][RTYPE_MAX] = {\n     { \"lo\", \"got\", \"gotofflo\", \"tpofflo\", \"gottpofflo\", \"tlsgdlo\" },\n-    { \"ha\", NULL,  \"gotoffha\", \"tpoffha\", \"gottpoffha\", \"tlsgdhi\" },\n+    { \"ha\", \"gotha\", \"gotoffha\", \"tpoffha\", \"gottpoffha\", \"tlsgdhi\" },\n   };\n   reloc_type type = RTYPE_DIRECT;\n \ndiff --git a/gcc/config/or1k/or1k.h b/gcc/config/or1k/or1k.h\nindex 23db771d8fb..f1646d16dfd 100644\n--- a/gcc/config/or1k/or1k.h\n+++ b/gcc/config/or1k/or1k.h\n@@ -21,6 +21,8 @@\n #ifndef GCC_OR1K_H\n #define GCC_OR1K_H\n \n+#include \"config/or1k/or1k-opts.h\"\n+\n /* Names to predefine in the preprocessor for this target machine.  */\n #define TARGET_CPU_CPP_BUILTINS()\t\t\\\n   do\t\t\t\t\t\t\\\n@@ -35,6 +37,11 @@\n     }\t\t\t\t\t\t\\\n   while (0)\n \n+#define TARGET_CMODEL_SMALL \\\n+  (or1k_code_model == CMODEL_SMALL)\n+#define TARGET_CMODEL_LARGE \\\n+  (or1k_code_model == CMODEL_LARGE)\n+\n /* Storage layout.  */\n \n #define DEFAULT_SIGNED_CHAR 1\ndiff --git a/gcc/config/or1k/or1k.opt b/gcc/config/or1k/or1k.opt\nindex 03c9b8d0bba..8e035075f8a 100644\n--- a/gcc/config/or1k/or1k.opt\n+++ b/gcc/config/or1k/or1k.opt\n@@ -21,6 +21,9 @@\n ; See the GCC internals manual (options.texi) for a description of\n ; this file's format.\n \n+HeaderInclude\n+config/or1k/or1k-opts.h\n+\n mhard-div\n Target RejectNegative InverseMask(SOFT_DIV)\n Enable generation of hardware divide (l.div, l.divu) instructions.  This is the\n@@ -63,6 +66,22 @@ When -mhard-float is selected, enables generation of unordered floating point\n compare and set flag (lf.sfun*) instructions.  By default functions from libgcc\n are used to perform unordered floating point compare and set flag operations.\n \n+mcmodel=\n+Target RejectNegative Joined Enum(or1k_cmodel_type) Var(or1k_code_model) Init(CMODEL_SMALL)\n+Specify the code model used for accessing memory addresses.  Specifying large\n+enables generating binaries with large global offset tables.  By default the\n+value is small.\n+\n+Enum\n+Name(or1k_cmodel_type) Type(enum or1k_cmodel_type)\n+Known code model types (for use with the -mcmodel= option):\n+\n+EnumValue\n+Enum(or1k_cmodel_type) String(small) Value(CMODEL_SMALL)\n+\n+EnumValue\n+Enum(or1k_cmodel_type) String(large) Value(CMODEL_LARGE)\n+\n mcmov\n Target RejectNegative Mask(CMOV)\n Enable generation of conditional move (l.cmov) instructions.  By default the\ndiff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi\nindex eabeec944e7..eda350c99ec 100644\n--- a/gcc/doc/invoke.texi\n+++ b/gcc/doc/invoke.texi\n@@ -1102,7 +1102,8 @@ Objective-C and Objective-C++ Dialects}.\n @gccoptlist{-mboard=@var{name}  -mnewlib  -mhard-mul  -mhard-div @gol\n -msoft-mul  -msoft-div @gol\n -msoft-float  -mhard-float  -mdouble-float -munordered-float @gol\n--mcmov  -mror  -mrori  -msext  -msfimm  -mshftimm}\n+-mcmov  -mror  -mrori  -msext  -msfimm  -mshftimm @gol\n+-mcmodel=@var{code-model}}\n \n @emph{PDP-11 Options}\n @gccoptlist{-mfpu  -msoft-float  -mac0  -mno-ac0  -m40  -m45  -m10 @gol\n@@ -25111,6 +25112,15 @@ Enable generation of shift with immediate (@code{l.srai}, @code{l.srli},\n @code{l.slli}) instructions.  By default extra instructions will be generated\n to store the immediate to a register first.\n \n+@item -mcmodel=small\n+@opindex mcmodel=small\n+Generate OpenRISC code for the small model: The GOT is limited to 64k. This is\n+the default model.\n+\n+@item -mcmodel=large\n+@opindex mcmodel=large\n+Generate OpenRISC code for the large model: The GOT may grow up to 4G in size.\n+\n \n @end table\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/gcc/10.3.0/0003-or1k-Use-cmodel-large-when-building-crtstuff.patch",
    "content": "From 0354e007a6235df81e208fa89cbf1571a8b56975 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:11:45 +0900\nSubject: [PATCH] or1k: Use cmodel=large when building crtstuff\n\nWhen linking gcc runtime objects into large binaries the link may fail\nwith the below errors.  This will happen even if we are building with\n-mcmodel=large.\n\n    /home/shorne/work/openrisc/output/host/lib/gcc/or1k-buildroot-linux-uclibc/10.3.0/crtbeginS.o: in function `deregister_tm_clones':\n    crtstuff.c:(.text+0x3c): relocation truncated to fit: R_OR1K_GOT16 against undefined symbol `_ITM_deregisterTMCloneTable'\n    /home/shorne/work/openrisc/output/host/lib/gcc/or1k-buildroot-linux-uclibc/10.3.0/crtbeginS.o: in function `register_tm_clones':\n    crtstuff.c:(.text+0xc0): relocation truncated to fit: R_OR1K_GOT16 against undefined symbol `_ITM_registerTMCloneTable'\n\nThis patch builds the gcc crtstuff binaries always with the\n-mcmodel=large option to ensure they can be linked into large binaries.\n\nlibgcc/ChangeLog:\n\n\tPR 99783\n\t* config.host (or1k-*, tmake_file): Add or1k/t-crtstuff.\n\t* config/or1k/t-crtstuff: New file.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n libgcc/config.host            | 4 ++--\n libgcc/config/or1k/t-crtstuff | 2 ++\n 2 files changed, 4 insertions(+), 2 deletions(-)\n create mode 100644 libgcc/config/or1k/t-crtstuff\n\ndiff --git a/libgcc/config.host b/libgcc/config.host\nindex c529cc40f0c..ddf0033e28c 100644\n--- a/libgcc/config.host\n+++ b/libgcc/config.host\n@@ -1127,12 +1127,12 @@ nios2-*-*)\n \textra_parts=\"$extra_parts crti.o crtn.o\"\n \t;;\n or1k-*-linux*)\n-\ttmake_file=\"$tmake_file or1k/t-or1k\"\n+\ttmake_file=\"$tmake_file or1k/t-or1k or1k/t-crtstuff\"\n \ttmake_file=\"$tmake_file t-softfp-sfdf t-softfp\"\n \tmd_unwind_header=or1k/linux-unwind.h\n \t;;\n or1k-*-*)\n-\ttmake_file=\"$tmake_file or1k/t-or1k\"\n+\ttmake_file=\"$tmake_file or1k/t-or1k or1k/t-crtstuff\"\n \ttmake_file=\"$tmake_file t-softfp-sfdf t-softfp\"\n \t;;\n pdp11-*-*)\ndiff --git a/libgcc/config/or1k/t-crtstuff b/libgcc/config/or1k/t-crtstuff\nnew file mode 100644\nindex 00000000000..dcae7f3498e\n--- /dev/null\n+++ b/libgcc/config/or1k/t-crtstuff\n@@ -0,0 +1,2 @@\n+# Compile crtbeginS.o and crtendS.o with -mcmodel=large\n+CRTSTUFF_T_CFLAGS_S += -mcmodel=large\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/gcc/10.3.0/0004-Remove-cyclades-from-libsanitizer.patch",
    "content": "From 745dae5923aba02982563481d75a21595df22ff8 Mon Sep 17 00:00:00 2001\nFrom: Tamar Christina <tamar.christina@arm.com>\nDate: Fri, 21 May 2021 10:30:59 +0100\nSubject: [PATCH] libsanitizer: Remove cyclades from libsanitizer\n\nThe Linux kernel has removed the interface to cyclades from\nthe latest kernel headers[1] due to them being orphaned for the\npast 13 years.\n\nlibsanitizer uses this header when compiling against glibc, but\nglibcs itself doesn't seem to have any references to cyclades.\n\nFurther more it seems that the driver is broken in the kernel and\nthe firmware doesn't seem to be available anymore.\n\nAs such since this is breaking the build of libsanitizer (and so the\nGCC bootstrap[2]) I propose to remove this.\n\n[1] https://lkml.org/lkml/2021/3/2/153\n[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379\n\n(cherry picked from commit f7c5351552387bd43f6ca3631016d7f0dfe0f135)\n\nlibsanitizer/ChangeLog:\n\n\tPR sanitizer/100379\n\t* sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Cherry-pick\n\tllvm-project revision f7c5351552387bd43f6ca3631016d7f0dfe0f135.\n\t* sanitizer_common/sanitizer_platform_limits_posix.cpp: Likewise.\n\t* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.\n\nSigned-off-by: Maxim Kochetkov <fido_max@inbox.ru>\n---\n .../sanitizer_common_interceptors_ioctl.inc           |  9 ---------\n .../sanitizer_platform_limits_posix.cpp               | 11 -----------\n .../sanitizer_platform_limits_posix.h                 | 10 ----------\n 3 files changed, 30 deletions(-)\n\ndiff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc\nindex 7f181258eab..b7da6598755 100644\n--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc\n+++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc\n@@ -370,15 +370,6 @@ static void ioctl_table_fill() {\n \n #if SANITIZER_GLIBC\n   // _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE\n-  _(CYGETDEFTHRESH, WRITE, sizeof(int));\n-  _(CYGETDEFTIMEOUT, WRITE, sizeof(int));\n-  _(CYGETMON, WRITE, struct_cyclades_monitor_sz);\n-  _(CYGETTHRESH, WRITE, sizeof(int));\n-  _(CYGETTIMEOUT, WRITE, sizeof(int));\n-  _(CYSETDEFTHRESH, NONE, 0);\n-  _(CYSETDEFTIMEOUT, NONE, 0);\n-  _(CYSETTHRESH, NONE, 0);\n-  _(CYSETTIMEOUT, NONE, 0);\n   _(EQL_EMANCIPATE, WRITE, struct_ifreq_sz);\n   _(EQL_ENSLAVE, WRITE, struct_ifreq_sz);\n   _(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz);\ndiff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp\nindex 35a690cba5c..6e5c330b98e 100644\n--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp\n+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp\n@@ -143,7 +143,6 @@ typedef struct user_fpregs elf_fpregset_t;\n # include <sys/procfs.h>\n #endif\n #include <sys/user.h>\n-#include <linux/cyclades.h>\n #include <linux/if_eql.h>\n #include <linux/if_plip.h>\n #include <linux/lp.h>\n@@ -460,7 +459,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);\n \n #if SANITIZER_GLIBC\n   unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);\n-  unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);\n #if EV_VERSION > (0x010000)\n   unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry);\n #else\n@@ -824,15 +822,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);\n #endif // SANITIZER_LINUX\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n-  unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;\n-  unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;\n-  unsigned IOCTL_CYGETMON = CYGETMON;\n-  unsigned IOCTL_CYGETTHRESH = CYGETTHRESH;\n-  unsigned IOCTL_CYGETTIMEOUT = CYGETTIMEOUT;\n-  unsigned IOCTL_CYSETDEFTHRESH = CYSETDEFTHRESH;\n-  unsigned IOCTL_CYSETDEFTIMEOUT = CYSETDEFTIMEOUT;\n-  unsigned IOCTL_CYSETTHRESH = CYSETTHRESH;\n-  unsigned IOCTL_CYSETTIMEOUT = CYSETTIMEOUT;\n   unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE;\n   unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE;\n   unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG;\ndiff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h\nindex ad358eef8b7..cba41ba5494 100644\n--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h\n+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h\n@@ -983,7 +983,6 @@ extern unsigned struct_vt_mode_sz;\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n extern unsigned struct_ax25_parms_struct_sz;\n-extern unsigned struct_cyclades_monitor_sz;\n extern unsigned struct_input_keymap_entry_sz;\n extern unsigned struct_ipx_config_data_sz;\n extern unsigned struct_kbdiacrs_sz;\n@@ -1328,15 +1327,6 @@ extern unsigned IOCTL_VT_WAITACTIVE;\n #endif  // SANITIZER_LINUX\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n-extern unsigned IOCTL_CYGETDEFTHRESH;\n-extern unsigned IOCTL_CYGETDEFTIMEOUT;\n-extern unsigned IOCTL_CYGETMON;\n-extern unsigned IOCTL_CYGETTHRESH;\n-extern unsigned IOCTL_CYGETTIMEOUT;\n-extern unsigned IOCTL_CYSETDEFTHRESH;\n-extern unsigned IOCTL_CYSETDEFTIMEOUT;\n-extern unsigned IOCTL_CYSETTHRESH;\n-extern unsigned IOCTL_CYSETTIMEOUT;\n extern unsigned IOCTL_EQL_EMANCIPATE;\n extern unsigned IOCTL_EQL_ENSLAVE;\n extern unsigned IOCTL_EQL_GETMASTRCFG;\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/gcc/11.2.0/0001-or1k-Add-mcmodel-option-to-handle-large-GOTs.patch",
    "content": "From eff8110674ef193481d3657456a262beeb9951ff Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Tue, 6 Apr 2021 05:47:17 +0900\nSubject: [PATCH] or1k: Add mcmodel option to handle large GOTs\n\nWhen building libgeos we get an error with:\n\n    linux-uclibc/9.3.0/crtbeginS.o: in function `__do_global_dtors_aux':\n    crtstuff.c:(.text+0x118): relocation truncated to fit: R_OR1K_GOT16 against symbol `__cxa_finalize' defined in .text section in\n    /home/shorne/work/openrisc/3eb9f9d0f6d8274b2d19753c006bd83f7d536e3c/output/host/or1k-buildroot-linux-uclibc/sysroot/lib/libc.so.\n\nThis is caused by GOT code having a limit of 64k.  In OpenRISC this\nlooks to be the only relocation code pattern to be limited to 64k.\n\nThis patch allows specifying a new option -mcmodel=large which can be\nused to generate 2 more instructions to construct 32-bit addresses for\nup to 4G GOTs.\n\ngcc/ChangeLog:\n\n\tPR target/99783\n\t* config/or1k/or1k-opts.h: New file.\n\t* config/or1k/or1k.c (or1k_legitimize_address_1, print_reloc):\n\tSupport generating gotha relocations if -mcmodel=large is\n\tspecified.\n\t* config/or1k/or1k.h (TARGET_CMODEL_SMALL, TARGET_CMODEL_LARGE):\n\tNew macros.\n\t* config/or1k/or1k.opt (mcmodel=): New option.\n\t* doc/invoke.texi (OpenRISC Options): Document mcmodel.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n gcc/config/or1k/or1k-opts.h | 30 ++++++++++++++++++++++++++++++\n gcc/config/or1k/or1k.c      | 11 +++++++++--\n gcc/config/or1k/or1k.h      |  7 +++++++\n gcc/config/or1k/or1k.opt    | 19 +++++++++++++++++++\n gcc/doc/invoke.texi         | 12 +++++++++++-\n 5 files changed, 76 insertions(+), 3 deletions(-)\n create mode 100644 gcc/config/or1k/or1k-opts.h\n\ndiff --git a/gcc/config/or1k/or1k-opts.h b/gcc/config/or1k/or1k-opts.h\nnew file mode 100644\nindex 00000000000..f791b894fdd\n--- /dev/null\n+++ b/gcc/config/or1k/or1k-opts.h\n@@ -0,0 +1,30 @@\n+/* Definitions for option handling for OpenRISC.\n+   Copyright (C) 2021 Free Software Foundation, Inc.\n+   Contributed by Stafford Horne.\n+\n+   This file is part of GCC.\n+\n+   GCC is free software; you can redistribute it and/or modify it\n+   under the terms of the GNU General Public License as published\n+   by the Free Software Foundation; either version 3, or (at your\n+   option) any later version.\n+\n+   GCC is distributed in the hope that it will be useful, but WITHOUT\n+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public\n+   License for more details.\n+\n+   You should have received a copy of the GNU General Public License\n+   along with GCC; see the file COPYING3.  If not see\n+   <http://www.gnu.org/licenses/>.  */\n+\n+#ifndef GCC_OR1K_OPTS_H\n+#define GCC_OR1K_OPTS_H\n+\n+/* The OpenRISC code generation models available.  */\n+enum or1k_cmodel_type {\n+  CMODEL_SMALL,\n+  CMODEL_LARGE\n+};\n+\n+#endif /* GCC_OR1K_OPTS_H */\ndiff --git a/gcc/config/or1k/or1k.c b/gcc/config/or1k/or1k.c\nindex e772a7addea..27d3fa17995 100644\n--- a/gcc/config/or1k/or1k.c\n+++ b/gcc/config/or1k/or1k.c\n@@ -750,7 +750,14 @@ or1k_legitimize_address_1 (rtx x, rtx scratch)\n \t    {\n \t      base = gen_sym_unspec (base, UNSPEC_GOT);\n \t      crtl->uses_pic_offset_table = 1;\n-\t      t2 = gen_rtx_LO_SUM (Pmode, pic_offset_table_rtx, base);\n+\t      if (TARGET_CMODEL_LARGE)\n+\t\t{\n+\t          emit_insn (gen_rtx_SET (t1, gen_rtx_HIGH (Pmode, base)));\n+\t          emit_insn (gen_add3_insn (t1, t1, pic_offset_table_rtx));\n+\t          t2 = gen_rtx_LO_SUM (Pmode, t1, base);\n+\t\t}\n+\t      else\n+\t        t2 = gen_rtx_LO_SUM (Pmode, pic_offset_table_rtx, base);\n \t      t2 = gen_const_mem (Pmode, t2);\n \t      emit_insn (gen_rtx_SET (t1, t2));\n \t      base = t1;\n@@ -1089,7 +1096,7 @@ print_reloc (FILE *stream, rtx x, HOST_WIDE_INT add, reloc_kind kind)\n      no special markup.  */\n   static const char * const relocs[RKIND_MAX][RTYPE_MAX] = {\n     { \"lo\", \"got\", \"gotofflo\", \"tpofflo\", \"gottpofflo\", \"tlsgdlo\" },\n-    { \"ha\", NULL,  \"gotoffha\", \"tpoffha\", \"gottpoffha\", \"tlsgdhi\" },\n+    { \"ha\", \"gotha\", \"gotoffha\", \"tpoffha\", \"gottpoffha\", \"tlsgdhi\" },\n   };\n   reloc_type type = RTYPE_DIRECT;\n \ndiff --git a/gcc/config/or1k/or1k.h b/gcc/config/or1k/or1k.h\nindex fe01ab81ead..669907e7e74 100644\n--- a/gcc/config/or1k/or1k.h\n+++ b/gcc/config/or1k/or1k.h\n@@ -21,6 +21,8 @@\n #ifndef GCC_OR1K_H\n #define GCC_OR1K_H\n \n+#include \"config/or1k/or1k-opts.h\"\n+\n /* Names to predefine in the preprocessor for this target machine.  */\n #define TARGET_CPU_CPP_BUILTINS()\t\t\\\n   do\t\t\t\t\t\t\\\n@@ -37,6 +39,11 @@\n     }\t\t\t\t\t\t\\\n   while (0)\n \n+#define TARGET_CMODEL_SMALL \\\n+  (or1k_code_model == CMODEL_SMALL)\n+#define TARGET_CMODEL_LARGE \\\n+  (or1k_code_model == CMODEL_LARGE)\n+\n /* Storage layout.  */\n \n #define DEFAULT_SIGNED_CHAR 1\ndiff --git a/gcc/config/or1k/or1k.opt b/gcc/config/or1k/or1k.opt\nindex 6bd0f3eee6d..cc23e3b8856 100644\n--- a/gcc/config/or1k/or1k.opt\n+++ b/gcc/config/or1k/or1k.opt\n@@ -21,6 +21,9 @@\n ; See the GCC internals manual (options.texi) for a description of\n ; this file's format.\n \n+HeaderInclude\n+config/or1k/or1k-opts.h\n+\n mhard-div\n Target RejectNegative InverseMask(SOFT_DIV)\n Enable generation of hardware divide (l.div, l.divu) instructions.  This is the\n@@ -63,6 +66,22 @@ When -mhard-float is selected, enables generation of unordered floating point\n compare and set flag (lf.sfun*) instructions.  By default functions from libgcc\n are used to perform unordered floating point compare and set flag operations.\n \n+mcmodel=\n+Target RejectNegative Joined Enum(or1k_cmodel_type) Var(or1k_code_model) Init(CMODEL_SMALL)\n+Specify the code model used for accessing memory addresses.  Specifying large\n+enables generating binaries with large global offset tables.  By default the\n+value is small.\n+\n+Enum\n+Name(or1k_cmodel_type) Type(enum or1k_cmodel_type)\n+Known code model types (for use with the -mcmodel= option):\n+\n+EnumValue\n+Enum(or1k_cmodel_type) String(small) Value(CMODEL_SMALL)\n+\n+EnumValue\n+Enum(or1k_cmodel_type) String(large) Value(CMODEL_LARGE)\n+\n mcmov\n Target RejectNegative Mask(CMOV)\n Enable generation of conditional move (l.cmov) instructions.  By default the\ndiff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi\nindex 57b97a0838c..d8a6b0b60c9 100644\n--- a/gcc/doc/invoke.texi\n+++ b/gcc/doc/invoke.texi\n@@ -1141,7 +1141,8 @@ Objective-C and Objective-C++ Dialects}.\n @gccoptlist{-mboard=@var{name}  -mnewlib  -mhard-mul  -mhard-div @gol\n -msoft-mul  -msoft-div @gol\n -msoft-float  -mhard-float  -mdouble-float -munordered-float @gol\n--mcmov  -mror  -mrori  -msext  -msfimm  -mshftimm}\n+-mcmov  -mror  -mrori  -msext  -msfimm  -mshftimm @gol\n+-mcmodel=@var{code-model}}\n \n @emph{PDP-11 Options}\n @gccoptlist{-mfpu  -msoft-float  -mac0  -mno-ac0  -m40  -m45  -m10 @gol\n@@ -26684,6 +26685,15 @@ Enable generation of shift with immediate (@code{l.srai}, @code{l.srli},\n @code{l.slli}) instructions.  By default extra instructions will be generated\n to store the immediate to a register first.\n \n+@item -mcmodel=small\n+@opindex mcmodel=small\n+Generate OpenRISC code for the small model: The GOT is limited to 64k. This is\n+the default model.\n+\n+@item -mcmodel=large\n+@opindex mcmodel=large\n+Generate OpenRISC code for the large model: The GOT may grow up to 4G in size.\n+\n \n @end table\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/gcc/11.2.0/0002-or1k-Use-cmodel-large-when-building-crtstuff.patch",
    "content": "From da8a9d695b3c4b9397b5d9a27660bfa48af8d707 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Wed, 21 Apr 2021 05:33:15 +0900\nSubject: [PATCH] or1k: Use cmodel=large when building crtstuff\n\nWhen linking gcc runtime objects into large binaries the link may fail\nwith the below errors.  This will happen even if we are building with\n-mcmodel=large.\n\n    /home/shorne/work/openrisc/output/host/lib/gcc/or1k-buildroot-linux-uclibc/10.3.0/crtbeginS.o: in function `deregister_tm_clones':\n    crtstuff.c:(.text+0x3c): relocation truncated to fit: R_OR1K_GOT16 against undefined symbol `_ITM_deregisterTMCloneTable'\n    /home/shorne/work/openrisc/output/host/lib/gcc/or1k-buildroot-linux-uclibc/10.3.0/crtbeginS.o: in function `register_tm_clones':\n    crtstuff.c:(.text+0xc0): relocation truncated to fit: R_OR1K_GOT16 against undefined symbol `_ITM_registerTMCloneTable'\n\nThis patch builds the gcc crtstuff binaries always with the\n-mcmodel=large option to ensure they can be linked into large binaries.\n\nlibgcc/ChangeLog:\n\n\tPR target/99783\n\t* config.host (or1k-*, tmake_file): Add or1k/t-crtstuff.\n\t* config/or1k/t-crtstuff: New file.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n libgcc/config.host            | 4 ++--\n libgcc/config/or1k/t-crtstuff | 2 ++\n 2 files changed, 4 insertions(+), 2 deletions(-)\n create mode 100644 libgcc/config/or1k/t-crtstuff\n\ndiff --git a/libgcc/config.host b/libgcc/config.host\nindex 50f00062232..8ca7a00082a 100644\n--- a/libgcc/config.host\n+++ b/libgcc/config.host\n@@ -1119,12 +1119,12 @@ nios2-*-*)\n \textra_parts=\"$extra_parts crti.o crtn.o\"\n \t;;\n or1k-*-linux*)\n-\ttmake_file=\"$tmake_file or1k/t-or1k\"\n+\ttmake_file=\"$tmake_file or1k/t-or1k or1k/t-crtstuff\"\n \ttmake_file=\"$tmake_file t-softfp-sfdf t-softfp\"\n \tmd_unwind_header=or1k/linux-unwind.h\n \t;;\n or1k-*-*)\n-\ttmake_file=\"$tmake_file or1k/t-or1k\"\n+\ttmake_file=\"$tmake_file or1k/t-or1k or1k/t-crtstuff\"\n \ttmake_file=\"$tmake_file t-softfp-sfdf t-softfp\"\n \t;;\n pdp11-*-*)\ndiff --git a/libgcc/config/or1k/t-crtstuff b/libgcc/config/or1k/t-crtstuff\nnew file mode 100644\nindex 00000000000..dcae7f3498e\n--- /dev/null\n+++ b/libgcc/config/or1k/t-crtstuff\n@@ -0,0 +1,2 @@\n+# Compile crtbeginS.o and crtendS.o with -mcmodel=large\n+CRTSTUFF_T_CFLAGS_S += -mcmodel=large\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/gcc/8.4.0/0001-xtensa-fix-PR-target-91880.patch",
    "content": "From 28623c81b50663e946790649352cb1b3ed23954d Mon Sep 17 00:00:00 2001\nFrom: Max Filippov <jcmvbkbc@gmail.com>\nDate: Tue, 24 Sep 2019 04:15:17 -0700\nSubject: [PATCH] xtensa: fix PR target/91880\n\nXtensa hwloop_optimize segfaults when zero overhead loop is about to be\ninserted as the first instruction of the function.\nInsert zero overhead loop instruction into new basic block before the\nloop when basic block that precedes the loop is empty.\n\n2019-09-26  Max Filippov  <jcmvbkbc@gmail.com>\ngcc/\n\t* config/xtensa/xtensa.c (hwloop_optimize): Insert zero overhead\n\tloop instruction into new basic block before the loop when basic\n\tblock that precedes the loop is empty.\n\nSigned-off-by: Max Filippov <jcmvbkbc@gmail.com>\n[Romain: rebase on gcc 8.4.0]\nSigned-off-by: Romain Naour <romain.naour@smile.fr>\n---\nBackported from: r276166\n\n gcc/config/xtensa/xtensa.c | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c\nindex 08f9f7c7a8f..de206527810 100644\n--- a/gcc/config/xtensa/xtensa.c\n+++ b/gcc/config/xtensa/xtensa.c\n@@ -4232,7 +4232,9 @@ hwloop_optimize (hwloop_info loop)\n \n   seq = get_insns ();\n \n-  if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1)\n+  entry_after = BB_END (entry_bb);\n+  if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1\n+      || !entry_after)\n     {\n       basic_block new_bb;\n       edge e;\n@@ -4253,7 +4255,6 @@ hwloop_optimize (hwloop_info loop)\n     }\n   else\n     {\n-      entry_after = BB_END (entry_bb);\n       while (DEBUG_INSN_P (entry_after)\n              || (NOTE_P (entry_after)\n \t\t && NOTE_KIND (entry_after) != NOTE_INSN_BASIC_BLOCK))\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch",
    "content": "From bb9b71752267444b4360442b89129bfc0ae938d3 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Wed, 20 Jan 2021 23:06:07 +0100\nSubject: [PATCH] Revert \"re PR target/92095 (internal error with -O1\n -mcpu=niagara2 -fPIE)\"\n\nThis reverts commit 3fcce773f0f914c0499b130c6e9efa0e45ee54a0.\n\nBuilding the Buildroot defconfig qemu_sparc_ss10_defconfig using\ngcc 8.4, 9.3 and 10 produce a broken rootfs that trigger illegal\ninstruction messages.\n\ngcc 8.3, 9.2 are the latest working gcc version.\ngit bisect between gcc 8.4 and 8.4 allowed to identify\nthe commit that introcuce the regression.\n\nReverting this patch allowed to produce a working rootfs.\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\nCc: Eric Botcazou <ebotcazou@gcc.gnu.org>\n---\n gcc/config/sparc/sparc-protos.h               |   1 -\n gcc/config/sparc/sparc.c                      | 121 +++++++-----------\n gcc/config/sparc/sparc.md                     |   5 +-\n .../gcc.c-torture/compile/20191108-1.c        |  14 --\n gcc/testsuite/gcc.target/sparc/overflow-3.c   |   2 +-\n gcc/testsuite/gcc.target/sparc/overflow-4.c   |   2 +-\n gcc/testsuite/gcc.target/sparc/overflow-5.c   |   2 +-\n 7 files changed, 53 insertions(+), 94 deletions(-)\n delete mode 100644 gcc/testsuite/gcc.c-torture/compile/20191108-1.c\n\ndiff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h\nindex b3f73c2f2bf..71a067e871c 100644\n--- a/gcc/config/sparc/sparc-protos.h\n+++ b/gcc/config/sparc/sparc-protos.h\n@@ -69,7 +69,6 @@ extern void sparc_split_reg_mem (rtx, rtx, machine_mode);\n extern void sparc_split_mem_reg (rtx, rtx, machine_mode);\n extern int sparc_split_reg_reg_legitimate (rtx, rtx);\n extern void sparc_split_reg_reg (rtx, rtx, machine_mode);\n-extern const char *output_load_pcrel_sym (rtx *);\n extern const char *output_ubranch (rtx, rtx_insn *);\n extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *);\n extern const char *output_return (rtx_insn *);\ndiff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c\nindex 73032d33596..db1b428db90 100644\n--- a/gcc/config/sparc/sparc.c\n+++ b/gcc/config/sparc/sparc.c\n@@ -4200,6 +4200,13 @@ eligible_for_sibcall_delay (rtx_insn *trial)\n static bool\n sparc_cannot_force_const_mem (machine_mode mode, rtx x)\n {\n+  /* After IRA has run in PIC mode, it is too late to put anything into the\n+     constant pool if the PIC register hasn't already been initialized.  */\n+  if ((lra_in_progress || reload_in_progress)\n+      && flag_pic\n+      && !crtl->uses_pic_offset_table)\n+    return true;\n+\n   switch (GET_CODE (x))\n     {\n     case CONST_INT:\n@@ -4235,11 +4242,9 @@ sparc_cannot_force_const_mem (machine_mode mode, rtx x)\n }\n \f\n /* Global Offset Table support.  */\n-static GTY(()) rtx got_symbol_rtx = NULL_RTX;\n-static GTY(()) rtx got_register_rtx = NULL_RTX;\n static GTY(()) rtx got_helper_rtx = NULL_RTX;\n-\n-static GTY(()) bool got_helper_needed = false;\n+static GTY(()) rtx got_register_rtx = NULL_RTX;\n+static GTY(()) rtx got_symbol_rtx = NULL_RTX;\n \n /* Return the SYMBOL_REF for the Global Offset Table.  */\n \n@@ -4252,6 +4257,27 @@ sparc_got (void)\n   return got_symbol_rtx;\n }\n \n+#ifdef HAVE_GAS_HIDDEN\n+# define USE_HIDDEN_LINKONCE 1\n+#else\n+# define USE_HIDDEN_LINKONCE 0\n+#endif\n+\n+static void\n+get_pc_thunk_name (char name[32], unsigned int regno)\n+{\n+  const char *reg_name = reg_names[regno];\n+\n+  /* Skip the leading '%' as that cannot be used in a\n+     symbol name.  */\n+  reg_name += 1;\n+\n+  if (USE_HIDDEN_LINKONCE)\n+    sprintf (name, \"__sparc_get_pc_thunk.%s\", reg_name);\n+  else\n+    ASM_GENERATE_INTERNAL_LABEL (name, \"LADDPC\", regno);\n+}\n+\n /* Wrapper around the load_pcrel_sym{si,di} patterns.  */\n \n static rtx\n@@ -4271,78 +4297,30 @@ gen_load_pcrel_sym (rtx op0, rtx op1, rtx op2)\n   return insn;\n }\n \n-/* Output the load_pcrel_sym{si,di} patterns.  */\n-\n-const char *\n-output_load_pcrel_sym (rtx *operands)\n-{\n-  if (flag_delayed_branch)\n-    {\n-      output_asm_insn (\"sethi\\t%%hi(%a1-4), %0\", operands);\n-      output_asm_insn (\"call\\t%a2\", operands);\n-      output_asm_insn (\" add\\t%0, %%lo(%a1+4), %0\", operands);\n-    }\n-  else\n-    {\n-      output_asm_insn (\"sethi\\t%%hi(%a1-8), %0\", operands);\n-      output_asm_insn (\"add\\t%0, %%lo(%a1-4), %0\", operands);\n-      output_asm_insn (\"call\\t%a2\", operands);\n-      output_asm_insn (\" nop\", NULL);\n-    }\n-\n-  if (operands[2] == got_helper_rtx)\n-    got_helper_needed = true;\n-\n-  return \"\";\n-}\n-\n-#ifdef HAVE_GAS_HIDDEN\n-# define USE_HIDDEN_LINKONCE 1\n-#else\n-# define USE_HIDDEN_LINKONCE 0\n-#endif\n-\n /* Emit code to load the GOT register.  */\n \n void\n load_got_register (void)\n {\n-  rtx insn;\n+  if (!got_register_rtx)\n+    got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);\n \n   if (TARGET_VXWORKS_RTP)\n-    {\n-      if (!got_register_rtx)\n-\tgot_register_rtx = pic_offset_table_rtx;\n-\n-      insn = gen_vxworks_load_got ();\n-    }\n+    emit_insn (gen_vxworks_load_got ());\n   else\n     {\n-      if (!got_register_rtx)\n-\tgot_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);\n-\n       /* The GOT symbol is subject to a PC-relative relocation so we need a\n \t helper function to add the PC value and thus get the final value.  */\n       if (!got_helper_rtx)\n \t{\n \t  char name[32];\n-\n-\t  /* Skip the leading '%' as that cannot be used in a symbol name.  */\n-\t  if (USE_HIDDEN_LINKONCE)\n-\t    sprintf (name, \"__sparc_get_pc_thunk.%s\",\n-\t\t     reg_names[REGNO (got_register_rtx)] + 1);\n-\t  else\n-\t    ASM_GENERATE_INTERNAL_LABEL (name, \"LADDPC\",\n-\t\t\t\t\t REGNO (got_register_rtx));\n-\n+\t  get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM);\n \t  got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));\n \t}\n \n-      insn\n-\t= gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx);\n+      emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (),\n+\t\t\t\t     got_helper_rtx));\n     }\n-\n-  emit_insn (insn);\n }\n \n /* Ensure that we are not using patterns that are not OK with PIC.  */\n@@ -5494,7 +5472,7 @@ save_local_or_in_reg_p (unsigned int regno, int leaf_function)\n     return true;\n \n   /* GOT register (%l7) if needed.  */\n-  if (got_register_rtx && regno == REGNO (got_register_rtx))\n+  if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx)\n     return true;\n \n   /* If the function accesses prior frames, the frame pointer and the return\n@@ -12475,9 +12453,10 @@ static void\n sparc_file_end (void)\n {\n   /* If we need to emit the special GOT helper function, do so now.  */\n-  if (got_helper_needed)\n+  if (got_helper_rtx)\n     {\n       const char *name = XSTR (got_helper_rtx, 0);\n+      const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM];\n #ifdef DWARF2_UNWIND_INFO\n       bool do_cfi;\n #endif\n@@ -12514,22 +12493,17 @@ sparc_file_end (void)\n #ifdef DWARF2_UNWIND_INFO\n       do_cfi = dwarf2out_do_cfi_asm ();\n       if (do_cfi)\n-\toutput_asm_insn (\".cfi_startproc\", NULL);\n+\tfprintf (asm_out_file, \"\\t.cfi_startproc\\n\");\n #endif\n       if (flag_delayed_branch)\n-\t{\n-\t  output_asm_insn (\"jmp\\t%%o7+8\", NULL);\n-\t  output_asm_insn (\" add\\t%%o7, %0, %0\", &got_register_rtx);\n-\t}\n+\tfprintf (asm_out_file, \"\\tjmp\\t%%o7+8\\n\\t add\\t%%o7, %s, %s\\n\",\n+\t\t reg_name, reg_name);\n       else\n-\t{\n-\t  output_asm_insn (\"add\\t%%o7, %0, %0\", &got_register_rtx);\n-\t  output_asm_insn (\"jmp\\t%%o7+8\", NULL);\n-\t  output_asm_insn (\" nop\", NULL);\n-\t}\n+\tfprintf (asm_out_file, \"\\tadd\\t%%o7, %s, %s\\n\\tjmp\\t%%o7+8\\n\\t nop\\n\",\n+\t\t reg_name, reg_name);\n #ifdef DWARF2_UNWIND_INFO\n       if (do_cfi)\n-\toutput_asm_insn (\".cfi_endproc\", NULL);\n+\tfprintf (asm_out_file, \"\\t.cfi_endproc\\n\");\n #endif\n     }\n \n@@ -13035,10 +13009,7 @@ sparc_init_pic_reg (void)\n   edge entry_edge;\n   rtx_insn *seq;\n \n-  /* In PIC mode, we need to always initialize the PIC register if optimization\n-     is enabled, because we are called from IRA and LRA may later force things\n-     to the constant pool for optimization purposes.  */\n-  if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize))\n+  if (!crtl->uses_pic_offset_table)\n     return;\n \n   start_sequence ();\ndiff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md\nindex 468e2cc5d3b..25134bd1148 100644\n--- a/gcc/config/sparc/sparc.md\n+++ b/gcc/config/sparc/sparc.md\n@@ -1601,7 +1601,10 @@\n    (clobber (reg:P O7_REG))]\n   \"REGNO (operands[0]) == INTVAL (operands[3])\"\n {\n-  return output_load_pcrel_sym (operands);\n+  if (flag_delayed_branch)\n+    return \"sethi\\t%%hi(%a1-4), %0\\n\\tcall\\t%a2\\n\\t add\\t%0, %%lo(%a1+4), %0\";\n+  else\n+    return \"sethi\\t%%hi(%a1-8), %0\\n\\tadd\\t%0, %%lo(%a1-4), %0\\n\\tcall\\t%a2\\n\\t nop\";\n }\n   [(set (attr \"type\") (const_string \"multi\"))\n    (set (attr \"length\")\ndiff --git a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c b/gcc/testsuite/gcc.c-torture/compile/20191108-1.c\ndeleted file mode 100644\nindex 7929751bb06..00000000000\n--- a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c\n+++ /dev/null\n@@ -1,14 +0,0 @@\n-/* PR target/92095 */\n-/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */\n-\n-typedef union {\n-  double a;\n-  int b[2];\n-} c;\n-\n-double d(int e)\n-{\n-  c f;\n-  (&f)->b[0] = 15728640;\n-  return e ? -(&f)->a : (&f)->a;\n-}\ndiff --git a/gcc/testsuite/gcc.target/sparc/overflow-3.c b/gcc/testsuite/gcc.target/sparc/overflow-3.c\nindex 18253bb6e5e..8cb24f52f7b 100644\n--- a/gcc/testsuite/gcc.target/sparc/overflow-3.c\n+++ b/gcc/testsuite/gcc.target/sparc/overflow-3.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O -fno-pie\" } */\n+/* { dg-options \"-O\" } */\n /* { dg-require-effective-target lp64 } */\n \n #include <stdbool.h>\ndiff --git a/gcc/testsuite/gcc.target/sparc/overflow-4.c b/gcc/testsuite/gcc.target/sparc/overflow-4.c\nindex fb30877efb9..868edea2b9e 100644\n--- a/gcc/testsuite/gcc.target/sparc/overflow-4.c\n+++ b/gcc/testsuite/gcc.target/sparc/overflow-4.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O -fno-pie -mno-vis3\" } */\n+/* { dg-options \"-O -mno-vis3\" } */\n /* { dg-require-effective-target lp64 } */\n \n #include <stdbool.h>\ndiff --git a/gcc/testsuite/gcc.target/sparc/overflow-5.c b/gcc/testsuite/gcc.target/sparc/overflow-5.c\nindex 509d957715d..501ce04f7a1 100644\n--- a/gcc/testsuite/gcc.target/sparc/overflow-5.c\n+++ b/gcc/testsuite/gcc.target/sparc/overflow-5.c\n@@ -1,5 +1,5 @@\n /* { dg-do compile } */\n-/* { dg-options \"-O -fno-pie -mvis3\" } */\n+/* { dg-options \"-O -mvis3\" } */\n /* { dg-require-effective-target lp64 } */\n \n #include <stdbool.h>\n-- \n2.25.4\n\n"
  },
  {
    "path": "package/gcc/8.4.0/0003-libsanitizer-Remove-cyclades-from-libsanitizer.patch",
    "content": "From 29210b168cc458480f71b242ad964ecd79214e38 Mon Sep 17 00:00:00 2001\nFrom: Tamar Christina <tamar.christina@arm.com>\nDate: Fri, 21 May 2021 12:16:56 +0100\nSubject: [PATCH] libsanitizer: Remove cyclades from libsanitizer\n\nThe Linux kernel has removed the interface to cyclades from\nthe latest kernel headers[1] due to them being orphaned for the\npast 13 years.\n\nlibsanitizer uses this header when compiling against glibc, but\nglibcs itself doesn't seem to have any references to cyclades.\n\nFurther more it seems that the driver is broken in the kernel and\nthe firmware doesn't seem to be available anymore.\n\nAs such since this is breaking the build of libsanitizer (and so the\nGCC bootstrap[2]) I propose to remove this.\n\n[1] https://lkml.org/lkml/2021/3/2/153\n[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379\n\nlibsanitizer/ChangeLog:\n\n\tPR sanitizer/100379\n\t* sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Cherry-pick\n\tllvm-project revision f7c5351552387bd43f6ca3631016d7f0dfe0f135.\n\t* sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise.\n\t* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.\n\nSigned-off-by: Maxim Kochetkov <fido_max@inbox.ru>\n---\n .../sanitizer_common_interceptors_ioctl.inc           |  9 ---------\n .../sanitizer_platform_limits_posix.cc                | 11 -----------\n .../sanitizer_platform_limits_posix.h                 | 10 ----------\n 3 files changed, 30 deletions(-)\n\ndiff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc\nindex a68534c5a0a..85ab53e7430 100755\n--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc\n+++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc\n@@ -361,15 +361,6 @@ static void ioctl_table_fill() {\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n   // _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE\n-  _(CYGETDEFTHRESH, WRITE, sizeof(int));\n-  _(CYGETDEFTIMEOUT, WRITE, sizeof(int));\n-  _(CYGETMON, WRITE, struct_cyclades_monitor_sz);\n-  _(CYGETTHRESH, WRITE, sizeof(int));\n-  _(CYGETTIMEOUT, WRITE, sizeof(int));\n-  _(CYSETDEFTHRESH, NONE, 0);\n-  _(CYSETDEFTIMEOUT, NONE, 0);\n-  _(CYSETTHRESH, NONE, 0);\n-  _(CYSETTIMEOUT, NONE, 0);\n   _(EQL_EMANCIPATE, WRITE, struct_ifreq_sz);\n   _(EQL_ENSLAVE, WRITE, struct_ifreq_sz);\n   _(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz);\ndiff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc\nindex 5c720b2e700..17f2c78b389 100644\n--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc\n+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc\n@@ -157,7 +157,6 @@ typedef struct user_fpregs elf_fpregset_t;\n # include <sys/procfs.h>\n #endif\n #include <sys/user.h>\n-#include <linux/cyclades.h>\n #include <linux/if_eql.h>\n #include <linux/if_plip.h>\n #include <linux/lp.h>\n@@ -464,7 +463,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n   unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);\n-  unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);\n #if EV_VERSION > (0x010000)\n   unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry);\n #else\n@@ -831,15 +829,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);\n #endif // SANITIZER_LINUX || SANITIZER_FREEBSD\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n-  unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;\n-  unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;\n-  unsigned IOCTL_CYGETMON = CYGETMON;\n-  unsigned IOCTL_CYGETTHRESH = CYGETTHRESH;\n-  unsigned IOCTL_CYGETTIMEOUT = CYGETTIMEOUT;\n-  unsigned IOCTL_CYSETDEFTHRESH = CYSETDEFTHRESH;\n-  unsigned IOCTL_CYSETDEFTIMEOUT = CYSETDEFTIMEOUT;\n-  unsigned IOCTL_CYSETTHRESH = CYSETTHRESH;\n-  unsigned IOCTL_CYSETTIMEOUT = CYSETTIMEOUT;\n   unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE;\n   unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE;\n   unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG;\ndiff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h\nindex 9c1429623ab..9f05c4e9ea7 100644\n--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h\n+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h\n@@ -1004,7 +1004,6 @@ struct __sanitizer_cookie_io_functions_t {\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n   extern unsigned struct_ax25_parms_struct_sz;\n-  extern unsigned struct_cyclades_monitor_sz;\n   extern unsigned struct_input_keymap_entry_sz;\n   extern unsigned struct_ipx_config_data_sz;\n   extern unsigned struct_kbdiacrs_sz;\n@@ -1349,15 +1348,6 @@ struct __sanitizer_cookie_io_functions_t {\n #endif  // SANITIZER_LINUX || SANITIZER_FREEBSD\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n-  extern unsigned IOCTL_CYGETDEFTHRESH;\n-  extern unsigned IOCTL_CYGETDEFTIMEOUT;\n-  extern unsigned IOCTL_CYGETMON;\n-  extern unsigned IOCTL_CYGETTHRESH;\n-  extern unsigned IOCTL_CYGETTIMEOUT;\n-  extern unsigned IOCTL_CYSETDEFTHRESH;\n-  extern unsigned IOCTL_CYSETDEFTIMEOUT;\n-  extern unsigned IOCTL_CYSETTHRESH;\n-  extern unsigned IOCTL_CYSETTIMEOUT;\n   extern unsigned IOCTL_EQL_EMANCIPATE;\n   extern unsigned IOCTL_EQL_ENSLAVE;\n   extern unsigned IOCTL_EQL_GETMASTRCFG;\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/gcc/9.4.0/0001-or1k-Fix-issue-with-set_got-clobbering-LR-r9.patch",
    "content": "From 014db5e5febec94e35c13ce89ee6b389328873a1 Mon Sep 17 00:00:00 2001\nFrom: shorne <shorne@138bc75d-0d04-0410-961f-82ee72b054a4>\nDate: Sat, 31 Aug 2019 06:00:56 +0000\nSubject: [PATCH] or1k: Fix issue with set_got clobbering LR (r9)\n\nWhen compiling glibc we found that the GOT register was being allocated\nr9 when the instruction was still set_got_tmp.  That is a problem\nbecause r9 is the Link Register (LR) in OpenRISC which is used/clobbered\nin set_got.  We cannot use r9 as the GOT register.  Also, we cannot\nsimply say set_got_tmp clobbers r9 as this is the reason for having the\ntemporary set_got_tmp.\n\nFix by using a register class constraint that does not allow r9 during\nregister allocation.\n\ngcc/ChangeLog:\n\n        * config/or1k/constraints.md (t): New constraint.\n        * config/or1k/or1k.h (GOT_REGS): New register class.\n        * config/or1k/or1k.md (set_got_tmp, set_got): Use t contraint.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@275242 138bc75d-0d04-0410-961f-82ee72b054a4\n(cherry picked from commit 5b9471ffca25d39635680516ba2ff85295480fc3)\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gcc/config/or1k/constraints.md | 4 ++++\n gcc/config/or1k/or1k.h         | 3 +++\n gcc/config/or1k/or1k.md        | 4 ++--\n 3 files changed, 9 insertions(+), 2 deletions(-)\n\ndiff --git a/gcc/config/or1k/constraints.md b/gcc/config/or1k/constraints.md\nindex 93da8c058c6..a16b749008f 100644\n--- a/gcc/config/or1k/constraints.md\n+++ b/gcc/config/or1k/constraints.md\n@@ -24,6 +24,7 @@\n \n ; We use:\n ;  c - sibcall registers\n+;  t - got address registers (excludes LR (r9) which is clobbered by set_got)\n ;  I - constant signed 16-bit\n ;  K - constant unsigned 16-bit\n ;  M - constant signed 16-bit shifted left 16-bits (l.movhi)\n@@ -32,6 +33,9 @@\n (define_register_constraint \"c\" \"SIBCALL_REGS\"\n   \"Registers which can hold a sibling call address\")\n \n+(define_register_constraint \"t\" \"GOT_REGS\"\n+  \"Registers which can be used to store the Global Offset Table (GOT) address.\")\n+\n ;; Immediates\n (define_constraint \"I\"\n   \"A signed 16-bit immediate in the range -32768 to 32767.\"\ndiff --git a/gcc/config/or1k/or1k.h b/gcc/config/or1k/or1k.h\nindex 6dda230f217..feee702d89c 100644\n--- a/gcc/config/or1k/or1k.h\n+++ b/gcc/config/or1k/or1k.h\n@@ -189,6 +189,7 @@ enum reg_class\n {\n   NO_REGS,\n   SIBCALL_REGS,\n+  GOT_REGS,\n   GENERAL_REGS,\n   FLAG_REGS,\n   ALL_REGS,\n@@ -200,6 +201,7 @@ enum reg_class\n #define REG_CLASS_NAMES {\t\\\n   \"NO_REGS\", \t\t\t\\\n   \"SIBCALL_REGS\",\t\t\\\n+  \"GOT_REGS\",\t\t\t\\\n   \"GENERAL_REGS\",\t\t\\\n   \"FLAG_REGS\",\t\t\t\\\n   \"ALL_REGS\" }\n@@ -212,6 +214,7 @@ enum reg_class\n #define REG_CLASS_CONTENTS      \\\n { { 0x00000000, 0x00000000 },\t\\\n   { SIBCALL_REGS_MASK,   0 },\t\\\n+  { 0xfffffdff, 0x00000000 },\t\\\n   { 0xffffffff, 0x00000003 },\t\\\n   { 0x00000000, 0x00000004 },\t\\\n   { 0xffffffff, 0x00000007 }\t\\\ndiff --git a/gcc/config/or1k/or1k.md b/gcc/config/or1k/or1k.md\nindex 2dad51cd46b..88f3f02630f 100644\n--- a/gcc/config/or1k/or1k.md\n+++ b/gcc/config/or1k/or1k.md\n@@ -595,7 +595,7 @@\n ;; set_got pattern below.  This works because the set_got_tmp insn is the\n ;; first insn in the stream and that it isn't moved during RA.\n (define_insn \"set_got_tmp\"\n-  [(set (match_operand:SI 0 \"register_operand\" \"=r\")\n+  [(set (match_operand:SI 0 \"register_operand\" \"=t\")\n \t(unspec_volatile:SI [(const_int 0)] UNSPECV_SET_GOT))]\n   \"\"\n {\n@@ -604,7 +604,7 @@\n \n ;; The insn to initialize the GOT.\n (define_insn \"set_got\"\n-  [(set (match_operand:SI 0 \"register_operand\" \"=r\")\n+  [(set (match_operand:SI 0 \"register_operand\" \"=t\")\n \t(unspec:SI [(const_int 0)] UNSPEC_SET_GOT))\n    (clobber (reg:SI LR_REGNUM))]\n   \"\"\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/gcc/9.4.0/0002-gcc-define-_REENTRANT-for-OpenRISC-when-pthread-is-p.patch",
    "content": "From f80e9941739fb3973b61fc6a5abddef5ad2faf73 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Fri, 27 Mar 2020 21:23:53 +0100\nSubject: [PATCH] gcc: define _REENTRANT for OpenRISC when -pthread is passed\n\nThe detection of pthread support fails on OpenRISC unless _REENTRANT\nis defined. Added the CPP_SPEC definition to correct this.\n\nPatch sent upstream: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94372\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n gcc/config/or1k/linux.h | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/gcc/config/or1k/linux.h b/gcc/config/or1k/linux.h\nindex cbdc781418f..36303af892c 100644\n--- a/gcc/config/or1k/linux.h\n+++ b/gcc/config/or1k/linux.h\n@@ -32,6 +32,8 @@\n #undef MUSL_DYNAMIC_LINKER\n #define MUSL_DYNAMIC_LINKER  \"/lib/ld-musl-or1k.so.1\"\n \n+#define CPP_SPEC \"%{pthread:-D_REENTRANT}\"\n+\n #undef LINK_SPEC\n #define LINK_SPEC \"%{h*}\t\t\t\\\n    %{static:-Bstatic}\t\t\t\t\\\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/gcc/9.4.0/0003-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch",
    "content": "From 1107ecc3e8af31adc7bbd4e08c0614836bd1cebd Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Wed, 20 Jan 2021 23:22:16 +0100\nSubject: [PATCH] Revert \"re PR target/92095 (internal error with -O1\n -mcpu=niagara2 -fPIE)\"\n\nThis reverts commit 6bf2990842388101897b6f465524cbc295ee8cf9.\n\nBuilding the Buildroot defconfig qemu_sparc_ss10_defconfig using\ngcc 8.4, 9.3 and 10 produce a broken rootfs that trigger illegal\ninstruction messages.\n\ngcc 8.3, 9.2 are the latest working gcc version.\ngit bisect between gcc 8.4 and 8.4 allowed to identify\nthe commit that introcuce the regression.\n\nReverting this patch allowed to produce a working rootfs.\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\nCc: Eric Botcazou <ebotcazou@gcc.gnu.org>\n---\n gcc/config/sparc/sparc-protos.h               |   1 -\n gcc/config/sparc/sparc.c                      | 121 +++++++-----------\n gcc/config/sparc/sparc.md                     |   5 +-\n .../gcc.c-torture/compile/20191108-1.c        |  14 --\n gcc/testsuite/gcc.target/sparc/overflow-3.c   |   2 +-\n gcc/testsuite/gcc.target/sparc/overflow-4.c   |   2 +-\n gcc/testsuite/gcc.target/sparc/overflow-5.c   |   2 +-\n 7 files changed, 53 insertions(+), 94 deletions(-)\n delete mode 100644 gcc/testsuite/gcc.c-torture/compile/20191108-1.c\n\ndiff --git a/gcc/config/sparc/sparc-protos.h b/gcc/config/sparc/sparc-protos.h\nindex f1c120c4860..f4b6f00a7b1 100644\n--- a/gcc/config/sparc/sparc-protos.h\n+++ b/gcc/config/sparc/sparc-protos.h\n@@ -69,7 +69,6 @@ extern void sparc_split_reg_mem (rtx, rtx, machine_mode);\n extern void sparc_split_mem_reg (rtx, rtx, machine_mode);\n extern int sparc_split_reg_reg_legitimate (rtx, rtx);\n extern void sparc_split_reg_reg (rtx, rtx, machine_mode);\n-extern const char *output_load_pcrel_sym (rtx *);\n extern const char *output_ubranch (rtx, rtx_insn *);\n extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *);\n extern const char *output_return (rtx_insn *);\ndiff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c\nindex 0553dc501e6..516dcf96d7b 100644\n--- a/gcc/config/sparc/sparc.c\n+++ b/gcc/config/sparc/sparc.c\n@@ -4170,6 +4170,13 @@ eligible_for_sibcall_delay (rtx_insn *trial)\n static bool\n sparc_cannot_force_const_mem (machine_mode mode, rtx x)\n {\n+  /* After IRA has run in PIC mode, it is too late to put anything into the\n+     constant pool if the PIC register hasn't already been initialized.  */\n+  if ((lra_in_progress || reload_in_progress)\n+      && flag_pic\n+      && !crtl->uses_pic_offset_table)\n+    return true;\n+\n   switch (GET_CODE (x))\n     {\n     case CONST_INT:\n@@ -4205,11 +4212,9 @@ sparc_cannot_force_const_mem (machine_mode mode, rtx x)\n }\n \f\n /* Global Offset Table support.  */\n-static GTY(()) rtx got_symbol_rtx = NULL_RTX;\n-static GTY(()) rtx got_register_rtx = NULL_RTX;\n static GTY(()) rtx got_helper_rtx = NULL_RTX;\n-\n-static GTY(()) bool got_helper_needed = false;\n+static GTY(()) rtx got_register_rtx = NULL_RTX;\n+static GTY(()) rtx got_symbol_rtx = NULL_RTX;\n \n /* Return the SYMBOL_REF for the Global Offset Table.  */\n \n@@ -4222,6 +4227,27 @@ sparc_got (void)\n   return got_symbol_rtx;\n }\n \n+#ifdef HAVE_GAS_HIDDEN\n+# define USE_HIDDEN_LINKONCE 1\n+#else\n+# define USE_HIDDEN_LINKONCE 0\n+#endif\n+\n+static void\n+get_pc_thunk_name (char name[32], unsigned int regno)\n+{\n+  const char *reg_name = reg_names[regno];\n+\n+  /* Skip the leading '%' as that cannot be used in a\n+     symbol name.  */\n+  reg_name += 1;\n+\n+  if (USE_HIDDEN_LINKONCE)\n+    sprintf (name, \"__sparc_get_pc_thunk.%s\", reg_name);\n+  else\n+    ASM_GENERATE_INTERNAL_LABEL (name, \"LADDPC\", regno);\n+}\n+\n /* Wrapper around the load_pcrel_sym{si,di} patterns.  */\n \n static rtx\n@@ -4241,78 +4267,30 @@ gen_load_pcrel_sym (rtx op0, rtx op1, rtx op2)\n   return insn;\n }\n \n-/* Output the load_pcrel_sym{si,di} patterns.  */\n-\n-const char *\n-output_load_pcrel_sym (rtx *operands)\n-{\n-  if (flag_delayed_branch)\n-    {\n-      output_asm_insn (\"sethi\\t%%hi(%a1-4), %0\", operands);\n-      output_asm_insn (\"call\\t%a2\", operands);\n-      output_asm_insn (\" add\\t%0, %%lo(%a1+4), %0\", operands);\n-    }\n-  else\n-    {\n-      output_asm_insn (\"sethi\\t%%hi(%a1-8), %0\", operands);\n-      output_asm_insn (\"add\\t%0, %%lo(%a1-4), %0\", operands);\n-      output_asm_insn (\"call\\t%a2\", operands);\n-      output_asm_insn (\" nop\", NULL);\n-    }\n-\n-  if (operands[2] == got_helper_rtx)\n-    got_helper_needed = true;\n-\n-  return \"\";\n-}\n-\n-#ifdef HAVE_GAS_HIDDEN\n-# define USE_HIDDEN_LINKONCE 1\n-#else\n-# define USE_HIDDEN_LINKONCE 0\n-#endif\n-\n /* Emit code to load the GOT register.  */\n \n void\n load_got_register (void)\n {\n-  rtx insn;\n+  if (!got_register_rtx)\n+    got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);\n \n   if (TARGET_VXWORKS_RTP)\n-    {\n-      if (!got_register_rtx)\n-\tgot_register_rtx = pic_offset_table_rtx;\n-\n-      insn = gen_vxworks_load_got ();\n-    }\n+    emit_insn (gen_vxworks_load_got ());\n   else\n     {\n-      if (!got_register_rtx)\n-\tgot_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);\n-\n       /* The GOT symbol is subject to a PC-relative relocation so we need a\n \t helper function to add the PC value and thus get the final value.  */\n       if (!got_helper_rtx)\n \t{\n \t  char name[32];\n-\n-\t  /* Skip the leading '%' as that cannot be used in a symbol name.  */\n-\t  if (USE_HIDDEN_LINKONCE)\n-\t    sprintf (name, \"__sparc_get_pc_thunk.%s\",\n-\t\t     reg_names[REGNO (got_register_rtx)] + 1);\n-\t  else\n-\t    ASM_GENERATE_INTERNAL_LABEL (name, \"LADDPC\",\n-\t\t\t\t\t REGNO (got_register_rtx));\n-\n+\t  get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM);\n \t  got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));\n \t}\n \n-      insn\n-\t= gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx);\n+      emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (),\n+\t\t\t\t     got_helper_rtx));\n     }\n-\n-  emit_insn (insn);\n }\n \n /* Ensure that we are not using patterns that are not OK with PIC.  */\n@@ -5477,7 +5455,7 @@ save_local_or_in_reg_p (unsigned int regno, int leaf_function)\n     return true;\n \n   /* GOT register (%l7) if needed.  */\n-  if (got_register_rtx && regno == REGNO (got_register_rtx))\n+  if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx)\n     return true;\n \n   /* If the function accesses prior frames, the frame pointer and the return\n@@ -12520,9 +12498,10 @@ static void\n sparc_file_end (void)\n {\n   /* If we need to emit the special GOT helper function, do so now.  */\n-  if (got_helper_needed)\n+  if (got_helper_rtx)\n     {\n       const char *name = XSTR (got_helper_rtx, 0);\n+      const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM];\n #ifdef DWARF2_UNWIND_INFO\n       bool do_cfi;\n #endif\n@@ -12559,22 +12538,17 @@ sparc_file_end (void)\n #ifdef DWARF2_UNWIND_INFO\n       do_cfi = dwarf2out_do_cfi_asm ();\n       if (do_cfi)\n-\toutput_asm_insn (\".cfi_startproc\", NULL);\n+\tfprintf (asm_out_file, \"\\t.cfi_startproc\\n\");\n #endif\n       if (flag_delayed_branch)\n-\t{\n-\t  output_asm_insn (\"jmp\\t%%o7+8\", NULL);\n-\t  output_asm_insn (\" add\\t%%o7, %0, %0\", &got_register_rtx);\n-\t}\n+\tfprintf (asm_out_file, \"\\tjmp\\t%%o7+8\\n\\t add\\t%%o7, %s, %s\\n\",\n+\t\t reg_name, reg_name);\n       else\n-\t{\n-\t  output_asm_insn (\"add\\t%%o7, %0, %0\", &got_register_rtx);\n-\t  output_asm_insn (\"jmp\\t%%o7+8\", NULL);\n-\t  output_asm_insn (\" nop\", NULL);\n-\t}\n+\tfprintf (asm_out_file, \"\\tadd\\t%%o7, %s, %s\\n\\tjmp\\t%%o7+8\\n\\t nop\\n\",\n+\t\t reg_name, reg_name);\n #ifdef DWARF2_UNWIND_INFO\n       if (do_cfi)\n-\toutput_asm_insn (\".cfi_endproc\", NULL);\n+\tfprintf (asm_out_file, \"\\t.cfi_endproc\\n\");\n #endif\n     }\n \n@@ -13080,10 +13054,7 @@ sparc_init_pic_reg (void)\n   edge entry_edge;\n   rtx_insn *seq;\n \n-  /* In PIC mode, we need to always initialize the PIC register if optimization\n-     is enabled, because we are called from IRA and LRA may later force things\n-     to the constant pool for optimization purposes.  */\n-  if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize))\n+  if (!crtl->uses_pic_offset_table)\n     return;\n \n   start_sequence ();\ndiff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md\nindex d9ef79c13cc..6dbd054f1c7 100644\n--- a/gcc/config/sparc/sparc.md\n+++ b/gcc/config/sparc/sparc.md\n@@ -1601,7 +1601,10 @@\n    (clobber (reg:P O7_REG))]\n   \"REGNO (operands[0]) == INTVAL (operands[3])\"\n {\n-  return output_load_pcrel_sym (operands);\n+  if (flag_delayed_branch)\n+    return \"sethi\\t%%hi(%a1-4), %0\\n\\tcall\\t%a2\\n\\t add\\t%0, %%lo(%a1+4), %0\";\n+  else\n+    return \"sethi\\t%%hi(%a1-8), %0\\n\\tadd\\t%0, %%lo(%a1-4), %0\\n\\tcall\\t%a2\\n\\t nop\";\n }\n   [(set (attr \"type\") (const_string \"multi\"))\n    (set (attr \"length\")\ndiff --git a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c b/gcc/testsuite/gcc.c-torture/compile/20191108-1.c\ndeleted file mode 100644\nindex 7929751bb06..00000000000\n--- a/gcc/testsuite/gcc.c-torture/compile/20191108-1.c\n+++ /dev/null\n@@ -1,14 +0,0 @@\n-/* PR target/92095 */\n-/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */\n-\n-typedef union {\n-  double a;\n-  int b[2];\n-} c;\n-\n-double d(int e)\n-{\n-  c f;\n-  (&f)->b[0] = 15728640;\n-  return e ? -(&f)->a : (&f)->a;\n-}\ndiff --git a/gcc/testsuite/gcc.target/sparc/overflow-3.c b/gcc/testsuite/gcc.target/sparc/overflow-3.c\nindex 52d6ab2b688..86dddfb09e6 100644\n--- a/gcc/testsuite/gcc.target/sparc/overflow-3.c\n+++ b/gcc/testsuite/gcc.target/sparc/overflow-3.c\n@@ -1,6 +1,6 @@\n /* { dg-do compile } */\n /* { dg-require-effective-target lp64 } */\n-/* { dg-options \"-O -fno-pie\" } */\n+/* { dg-options \"-O\" } */\n \n #include <stdbool.h>\n #include <stdint.h>\ndiff --git a/gcc/testsuite/gcc.target/sparc/overflow-4.c b/gcc/testsuite/gcc.target/sparc/overflow-4.c\nindex c6121b958c3..019feee335c 100644\n--- a/gcc/testsuite/gcc.target/sparc/overflow-4.c\n+++ b/gcc/testsuite/gcc.target/sparc/overflow-4.c\n@@ -1,6 +1,6 @@\n /* { dg-do compile } */\n /* { dg-require-effective-target lp64 } */\n-/* { dg-options \"-O -fno-pie -mno-vis3 -mno-vis4\" } */\n+/* { dg-options \"-O -mno-vis3 -mno-vis4\" } */\n \n #include <stdbool.h>\n #include <stdint.h>\ndiff --git a/gcc/testsuite/gcc.target/sparc/overflow-5.c b/gcc/testsuite/gcc.target/sparc/overflow-5.c\nindex f00283f6e7b..67d4ac38095 100644\n--- a/gcc/testsuite/gcc.target/sparc/overflow-5.c\n+++ b/gcc/testsuite/gcc.target/sparc/overflow-5.c\n@@ -1,6 +1,6 @@\n /* { dg-do compile } */\n /* { dg-require-effective-target lp64 } */\n-/* { dg-options \"-O -fno-pie -mvis3\" } */\n+/* { dg-options \"-O -mvis3\" } */\n \n #include <stdbool.h>\n #include <stdint.h>\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/gcc/9.4.0/0004-or1k-Add-mcmodel-option-to-handle-large-GOTs.patch",
    "content": "From 90b202b59fa2bdb68314a23471b32d3e16602bc8 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:11:44 +0900\nSubject: [PATCH] or1k: Add mcmodel option to handle large GOTs\n\nWhen building libgeos we get an error with:\n\n    linux-uclibc/9.3.0/crtbeginS.o: in function `__do_global_dtors_aux':\n    crtstuff.c:(.text+0x118): relocation truncated to fit: R_OR1K_GOT16 against symbol `__cxa_finalize' defined in .text section in\n    /home/shorne/work/openrisc/3eb9f9d0f6d8274b2d19753c006bd83f7d536e3c/output/host/or1k-buildroot-linux-uclibc/sysroot/lib/libc.so.\n\nThis is caused by GOT code having a limit of 64k.  In OpenRISC this\nlooks to be the only relocation code pattern to be limited to 64k.\n\nThis patch allows specifying a new option -mcmodel=large which can be\nused to generate 2 more instructions to construct 32-bit addresses for\nup to 4G GOTs.\n\ngcc/ChangeLog:\n\n\tPR 99783\n\t* config/or1k/or1k-opts.h: New file.\n\t* config/or1k/or1k.c (or1k_legitimize_address_1, print_reloc):\n\tSupport generating gotha relocations if -mcmodel=large is\n\tspecified.\n\t* config/or1k/or1k.h (TARGET_CMODEL_SMALL, TARGET_CMODEL_LARGE):\n\tNew macros.\n\t* config/or1k/or1k.opt (mcmodel=): New option.\n\t* doc/invoke.text (OpenRISC Options): Document mcmodel.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n gcc/config/or1k/or1k-opts.h | 30 ++++++++++++++++++++++++++++++\n gcc/config/or1k/or1k.c      | 11 +++++++++--\n gcc/config/or1k/or1k.h      |  7 +++++++\n gcc/config/or1k/or1k.opt    | 19 +++++++++++++++++++\n gcc/doc/invoke.texi         | 13 ++++++++++++-\n 5 files changed, 77 insertions(+), 3 deletions(-)\n create mode 100644 gcc/config/or1k/or1k-opts.h\n\ndiff --git a/gcc/config/or1k/or1k-opts.h b/gcc/config/or1k/or1k-opts.h\nnew file mode 100644\nindex 00000000000..f791b894fdd\n--- /dev/null\n+++ b/gcc/config/or1k/or1k-opts.h\n@@ -0,0 +1,30 @@\n+/* Definitions for option handling for OpenRISC.\n+   Copyright (C) 2021 Free Software Foundation, Inc.\n+   Contributed by Stafford Horne.\n+\n+   This file is part of GCC.\n+\n+   GCC is free software; you can redistribute it and/or modify it\n+   under the terms of the GNU General Public License as published\n+   by the Free Software Foundation; either version 3, or (at your\n+   option) any later version.\n+\n+   GCC is distributed in the hope that it will be useful, but WITHOUT\n+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public\n+   License for more details.\n+\n+   You should have received a copy of the GNU General Public License\n+   along with GCC; see the file COPYING3.  If not see\n+   <http://www.gnu.org/licenses/>.  */\n+\n+#ifndef GCC_OR1K_OPTS_H\n+#define GCC_OR1K_OPTS_H\n+\n+/* The OpenRISC code generation models available.  */\n+enum or1k_cmodel_type {\n+  CMODEL_SMALL,\n+  CMODEL_LARGE\n+};\n+\n+#endif /* GCC_OR1K_OPTS_H */\ndiff --git a/gcc/config/or1k/or1k.c b/gcc/config/or1k/or1k.c\nindex fc10fcfabde..df67d72b139 100644\n--- a/gcc/config/or1k/or1k.c\n+++ b/gcc/config/or1k/or1k.c\n@@ -750,7 +750,14 @@ or1k_legitimize_address_1 (rtx x, rtx scratch)\n \t    {\n \t      base = gen_sym_unspec (base, UNSPEC_GOT);\n \t      crtl->uses_pic_offset_table = 1;\n-\t      t2 = gen_rtx_LO_SUM (Pmode, pic_offset_table_rtx, base);\n+\t      if (TARGET_CMODEL_LARGE)\n+\t\t{\n+\t          emit_insn (gen_rtx_SET (t1, gen_rtx_HIGH (Pmode, base)));\n+\t          emit_insn (gen_add3_insn (t1, t1, pic_offset_table_rtx));\n+\t          t2 = gen_rtx_LO_SUM (Pmode, t1, base);\n+\t\t}\n+\t      else\n+\t        t2 = gen_rtx_LO_SUM (Pmode, pic_offset_table_rtx, base);\n \t      t2 = gen_const_mem (Pmode, t2);\n \t      emit_insn (gen_rtx_SET (t1, t2));\n \t      base = t1;\n@@ -1097,7 +1104,7 @@ print_reloc (FILE *stream, rtx x, HOST_WIDE_INT add, reloc_kind kind)\n      no special markup.  */\n   static const char * const relocs[RKIND_MAX][RTYPE_MAX] = {\n     { \"lo\", \"got\", \"gotofflo\", \"tpofflo\", \"gottpofflo\", \"tlsgdlo\" },\n-    { \"ha\", NULL,  \"gotoffha\", \"tpoffha\", \"gottpoffha\", \"tlsgdhi\" },\n+    { \"ha\", \"gotha\", \"gotoffha\", \"tpoffha\", \"gottpoffha\", \"tlsgdhi\" },\n   };\n   reloc_type type = RTYPE_DIRECT;\n \ndiff --git a/gcc/config/or1k/or1k.h b/gcc/config/or1k/or1k.h\nindex feee702d89c..dbaf0d0fe4c 100644\n--- a/gcc/config/or1k/or1k.h\n+++ b/gcc/config/or1k/or1k.h\n@@ -21,6 +21,8 @@\n #ifndef GCC_OR1K_H\n #define GCC_OR1K_H\n \n+#include \"config/or1k/or1k-opts.h\"\n+\n /* Names to predefine in the preprocessor for this target machine.  */\n #define TARGET_CPU_CPP_BUILTINS()\t\t\\\n   do\t\t\t\t\t\t\\\n@@ -35,6 +37,11 @@\n     }\t\t\t\t\t\t\\\n   while (0)\n \n+#define TARGET_CMODEL_SMALL \\\n+  (or1k_code_model == CMODEL_SMALL)\n+#define TARGET_CMODEL_LARGE \\\n+  (or1k_code_model == CMODEL_LARGE)\n+\n /* Storage layout.  */\n \n #define DEFAULT_SIGNED_CHAR 1\ndiff --git a/gcc/config/or1k/or1k.opt b/gcc/config/or1k/or1k.opt\nindex 7bdbd842dd4..116524c3441 100644\n--- a/gcc/config/or1k/or1k.opt\n+++ b/gcc/config/or1k/or1k.opt\n@@ -23,6 +23,9 @@\n \n ; Please try to keep this file in ASCII collating order.\n \n+HeaderInclude\n+config/or1k/or1k-opts.h\n+\n mhard-div\n Target RejectNegative InverseMask(SOFT_DIV)\n Use hardware divide instructions, use -msoft-div for emulation.\n@@ -31,6 +34,22 @@ mhard-mul\n Target RejectNegative InverseMask(SOFT_MUL).\n Use hardware multiply instructions, use -msoft-mul for emulation.\n \n+mcmodel=\n+Target RejectNegative Joined Enum(or1k_cmodel_type) Var(or1k_code_model) Init(CMODEL_SMALL)\n+Specify the code model used for accessing memory addresses.  Specifying large\n+enables generating binaries with large global offset tables.  By default the\n+value is small.\n+\n+Enum\n+Name(or1k_cmodel_type) Type(enum or1k_cmodel_type)\n+Known code model types (for use with the -mcmodel= option):\n+\n+EnumValue\n+Enum(or1k_cmodel_type) String(small) Value(CMODEL_SMALL)\n+\n+EnumValue\n+Enum(or1k_cmodel_type) String(large) Value(CMODEL_LARGE)\n+\n mcmov\n Target RejectNegative Mask(CMOV)\n Allows generation of binaries which use the l.cmov instruction.  If your target\ndiff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi\nindex 7b5f6e03d9f..683c64417af 100644\n--- a/gcc/doc/invoke.texi\n+++ b/gcc/doc/invoke.texi\n@@ -1032,7 +1032,9 @@ Objective-C and Objective-C++ Dialects}.\n @emph{OpenRISC Options}\n @gccoptlist{-mboard=@var{name}  -mnewlib  -mhard-mul  -mhard-div @gol\n -msoft-mul  -msoft-div @gol\n--mcmov  -mror  -msext  -msfimm  -mshftimm}\n+-mcmov  -mror  -mrori  -msext  -msfimm  -mshftimm @gol\n+-mcmodel=@var{code-model}}\n+\n \n @emph{PDP-11 Options}\n @gccoptlist{-mfpu  -msoft-float  -mac0  -mno-ac0  -m40  -m45  -m10 @gol\n@@ -27462,6 +27464,15 @@ MWAITX, SHA, CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A,\n SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, and 64-bit\n instruction set extensions.)\n \n+@item -mcmodel=small\n+@opindex mcmodel=small\n+Generate OpenRISC code for the small model: The GOT is limited to 64k. This is\n+the default model.\n+\n+@item -mcmodel=large\n+@opindex mcmodel=large\n+Generate OpenRISC code for the large model: The GOT may grow up to 4G in size.\n+\n \n @item btver1\n CPUs based on AMD Family 14h cores with x86-64 instruction set support.  (This\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/gcc/9.4.0/0005-or1k-Use-cmodel-large-when-building-crtstuff.patch",
    "content": "From d64a757040fe36b0d9dc65d24107c656f66bc8e5 Mon Sep 17 00:00:00 2001\nFrom: Stafford Horne <shorne@gmail.com>\nDate: Sun, 2 May 2021 06:11:45 +0900\nSubject: [PATCH] or1k: Use cmodel=large when building crtstuff\n\nWhen linking gcc runtime objects into large binaries the link may fail\nwith the below errors.  This will happen even if we are building with\n-mcmodel=large.\n\n    /home/shorne/work/openrisc/output/host/lib/gcc/or1k-buildroot-linux-uclibc/10.3.0/crtbeginS.o: in function `deregister_tm_clones':\n    crtstuff.c:(.text+0x3c): relocation truncated to fit: R_OR1K_GOT16 against undefined symbol `_ITM_deregisterTMCloneTable'\n    /home/shorne/work/openrisc/output/host/lib/gcc/or1k-buildroot-linux-uclibc/10.3.0/crtbeginS.o: in function `register_tm_clones':\n    crtstuff.c:(.text+0xc0): relocation truncated to fit: R_OR1K_GOT16 against undefined symbol `_ITM_registerTMCloneTable'\n\nThis patch builds the gcc crtstuff binaries always with the\n-mcmodel=large option to ensure they can be linked into large binaries.\n\nlibgcc/ChangeLog:\n\n\tPR 99783\n\t* config.host (or1k-*, tmake_file): Add or1k/t-crtstuff.\n\t* config/or1k/t-crtstuff: New file.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n libgcc/config.host            | 4 ++--\n libgcc/config/or1k/t-crtstuff | 2 ++\n 2 files changed, 4 insertions(+), 2 deletions(-)\n create mode 100644 libgcc/config/or1k/t-crtstuff\n\ndiff --git a/libgcc/config.host b/libgcc/config.host\nindex bdbf77a3e62..bfb45a90630 100644\n--- a/libgcc/config.host\n+++ b/libgcc/config.host\n@@ -1061,12 +1061,12 @@ nios2-*-*)\n \textra_parts=\"$extra_parts crti.o crtn.o\"\n \t;;\n or1k-*-linux*)\n-\ttmake_file=\"$tmake_file or1k/t-or1k\"\n+\ttmake_file=\"$tmake_file or1k/t-or1k or1k/t-crtstuff\"\n \ttmake_file=\"$tmake_file t-softfp-sfdf t-softfp\"\n \tmd_unwind_header=or1k/linux-unwind.h\n \t;;\n or1k-*-*)\n-\ttmake_file=\"$tmake_file or1k/t-or1k\"\n+\ttmake_file=\"$tmake_file or1k/t-or1k or1k/t-crtstuff\"\n \ttmake_file=\"$tmake_file t-softfp-sfdf t-softfp\"\n \t;;\n pdp11-*-*)\ndiff --git a/libgcc/config/or1k/t-crtstuff b/libgcc/config/or1k/t-crtstuff\nnew file mode 100644\nindex 00000000000..dcae7f3498e\n--- /dev/null\n+++ b/libgcc/config/or1k/t-crtstuff\n@@ -0,0 +1,2 @@\n+# Compile crtbeginS.o and crtendS.o with -mcmodel=large\n+CRTSTUFF_T_CFLAGS_S += -mcmodel=large\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/gcc/Config.in.host",
    "content": "comment \"GCC Options\"\n\nchoice\n\tprompt \"GCC compiler Version\"\n\tdefault BR2_GCC_VERSION_ARC if BR2_arc\n\tdefault BR2_GCC_VERSION_POWERPC_SPE if BR2_powerpc_SPE\n\tdefault BR2_GCC_VERSION_10_X\n\thelp\n\t  Select the version of gcc you wish to use.\n\nconfig BR2_GCC_VERSION_ARC\n\tbool \"gcc arc (10.x)\"\n\t# Only supported architecture\n\tdepends on BR2_arc\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\nconfig BR2_GCC_VERSION_POWERPC_SPE\n\tbool \"gcc powerpc spe\"\n\t# powerpc spe support has been deprecated since gcc 8.x.\n\t# https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html\n\tdepends on BR2_powerpc_SPE\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\nconfig BR2_GCC_VERSION_9_X\n\tbool \"gcc 9.x\"\n\tdepends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_10\n\t# powerpc spe support has been deprecated since gcc 8.x.\n\t# https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html\n\tdepends on !BR2_powerpc_SPE\n\t# C-SKY sk610 needs abiv1, which is not supported in\n\t# upstream gcc. C-SKY gcc upstream support not tested\n\t# with upstream binutils and glibc.\n\tdepends on !BR2_csky\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\nconfig BR2_GCC_VERSION_10_X\n\tbool \"gcc 10.x\"\n\tdepends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_11\n\t# powerpc spe support has been deprecated since gcc 8.x.\n\t# https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html\n\tdepends on !BR2_powerpc_SPE\n\t# C-SKY sk610 needs abiv1, which is not supported in\n\t# upstream gcc. C-SKY gcc upstream support not tested\n\t# with upstream binutils and glibc.\n\tdepends on !BR2_csky\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\nconfig BR2_GCC_VERSION_11_X\n\tbool \"gcc 11.x\"\n\t# powerpc spe support has been deprecated since gcc 8.x.\n\t# https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html\n\tdepends on !BR2_powerpc_SPE\n\t# uClibc-ng broken on sparc due to recent gcc changes\n\t# that need to be reverted since gcc 8.4, 9.3 and 10.1.\n\t# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98784\n\tdepends on !BR2_sparc\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_11\n\nendchoice\n\n# libcilkrts was introduced in gcc 4.9 and removed in gcc 8.x\nconfig BR2_GCC_SUPPORTS_LIBCILKRTS\n\tbool\n\tdefault y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\nconfig BR2_GCC_SUPPORTS_DLANG\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_arm\n\tdefault y if BR2_i386\n\tdefault y if BR2_mips || BR2_mipsel\n\tdefault y if BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdefault y if BR2_x86_64\n\tdefault y if BR2_riscv && !BR2_RISCV_64\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\nconfig BR2_GCC_VERSION\n\tstring\n\tdefault \"8.4.0\"     if BR2_GCC_VERSION_POWERPC_SPE\n\tdefault \"9.4.0\"     if BR2_GCC_VERSION_9_X\n\tdefault \"10.3.0\"    if BR2_GCC_VERSION_10_X\n\tdefault \"11.2.0\"    if BR2_GCC_VERSION_11_X\n\tdefault \"arc-2020.09-release\" if BR2_GCC_VERSION_ARC\n\nconfig BR2_EXTRA_GCC_CONFIG_OPTIONS\n\tstring \"Additional gcc options\"\n\tdefault \"\"\n\thelp\n\t  Any additional gcc configure options you may want to\n\t  include. Those options are applied for all of the gcc\n\t  initial, gcc intermediate and gcc final passes.\n\nconfig BR2_TOOLCHAIN_BUILDROOT_CXX\n\tbool \"Enable C++ support\"\n\tselect BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Enable this option if you want your toolchain to support the\n\t  C++ language and you want C++ libraries to be installed on\n\t  your target system.\n\ncomment \"Fortran support needs a toolchain w/ wchar\"\n\tdepends on BR2_TOOLCHAIN_HAS_LIBQUADMATH\n\tdepends on !BR2_USE_WCHAR # libquadmath\n\nconfig BR2_TOOLCHAIN_BUILDROOT_FORTRAN\n\tbool \"Enable Fortran support\"\n\t# on architecture building libquadmath, wchar is required\n\tdepends on !BR2_TOOLCHAIN_HAS_LIBQUADMATH || \\\n\t\t(BR2_TOOLCHAIN_HAS_LIBQUADMATH && BR2_USE_WCHAR)\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\thelp\n\t  Enable this option if you want your toolchain to support the\n\t  Fortran language and you want Fortran libraries to be\n\t  installed on your target system.\n\nconfig BR2_TOOLCHAIN_BUILDROOT_DLANG\n\tbool \"Enable D language support\"\n\tdepends on BR2_GCC_SUPPORTS_DLANG\n\tselect BR2_TOOLCHAIN_HAS_DLANG\n\thelp\n\t  Enable this option if you want your toolchain to support the\n\t  D language and you want D libraries to be installed on your\n\t  target system.\n\nconfig BR2_GCC_ENABLE_LTO\n\tbool \"Enable compiler link-time-optimization support\"\n\tselect BR2_BINUTILS_ENABLE_LTO\n\thelp\n\t  This option enables link-time optimization (LTO) support in\n\t  gcc.\n\nconfig BR2_GCC_ENABLE_OPENMP\n\tbool \"Enable compiler OpenMP support\"\n\tdepends on !BR2_PTHREADS_NONE && !BR2_arc && !BR2_microblaze\n\tselect BR2_TOOLCHAIN_HAS_OPENMP\n\thelp\n\t  Enable OpenMP support for the compiler\n\nconfig BR2_GCC_ENABLE_GRAPHITE\n\tbool \"Enable graphite support\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\thelp\n\t  This option enables the graphite optimizations in the\n\t  compiler.\n\ncomment \"graphite support needs gcc >= 5.x\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5\n"
  },
  {
    "path": "package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch",
    "content": "From b92c22b144d063c4436a6693045ceb57d344c495 Mon Sep 17 00:00:00 2001\nFrom: Claudiu Zissulescu <claziss@synopsys.com>\nDate: Wed, 11 Nov 2020 12:31:10 +0200\nSubject: [PATCH] arc: Refurbish adc/sbc patterns\n\nThe adc/sbc patterns were unecessary spliting, remove that and\nassociated functions.\n\ngcc/ChangeLog:\n\n2020-10-11  Claudiu Zissulescu  <claziss@synopsys.com>\n\n\t* config/arc/arc-protos.h (arc_scheduling_not_expected): Remove\n\tit.\n\t(arc_sets_cc_p): Likewise.\n\t(arc_need_delay): Likewise.\n\t* config/arc/arc.c (arc_sets_cc_p): Likewise.\n\t(arc_need_delay): Likewise.\n\t(arc_scheduling_not_expected): Likewise.\n\t* config/arc/arc.md: Convert adc/sbc patterns to simple\n\tinstruction definitions.\n\nSigned-off-by: Claudiu Zissulescu <claziss@synopsys.com>\n\nDownloaded from upstream commit\nhttps://github.com/foss-for-synopsys-dwc-arc-processors/gcc/commit/b92c22b144d063c4436a6693045ceb57d344c495\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n gcc/config/arc/arc-protos.h |  3 --\n gcc/config/arc/arc.c        | 53 ---------------------\n gcc/config/arc/arc.md       | 95 +++++++++++--------------------------\n 3 files changed, 29 insertions(+), 122 deletions(-)\n\ndiff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h\nindex c72d78e3b9e..de4cf47c818 100644\n--- a/gcc/config/arc/arc-protos.h\n+++ b/gcc/config/arc/arc-protos.h\n@@ -90,10 +90,7 @@ extern void split_subsi (rtx *);\n extern void arc_split_move (rtx *);\n extern const char *arc_short_long (rtx_insn *insn, const char *, const char *);\n extern rtx arc_regno_use_in (unsigned int, rtx);\n-extern bool arc_scheduling_not_expected (void);\n-extern bool arc_sets_cc_p (rtx_insn *insn);\n extern int arc_label_align (rtx_insn *label);\n-extern bool arc_need_delay (rtx_insn *insn);\n extern bool arc_text_label (rtx_insn *insn);\n \n extern bool arc_short_comparison_p (rtx, int);\ndiff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c\nindex 5a7b0cb6696..c3ee9181f93 100644\n--- a/gcc/config/arc/arc.c\n+++ b/gcc/config/arc/arc.c\n@@ -10341,59 +10341,6 @@ arc_attr_type (rtx_insn *insn)\n   return get_attr_type (insn);\n }\n \n-/* Return true if insn sets the condition codes.  */\n-\n-bool\n-arc_sets_cc_p (rtx_insn *insn)\n-{\n-  if (NONJUMP_INSN_P (insn))\n-    if (rtx_sequence *seq = dyn_cast <rtx_sequence *> (PATTERN (insn)))\n-      insn = seq->insn (seq->len () - 1);\n-  return arc_attr_type (insn) == TYPE_COMPARE;\n-}\n-\n-/* Return true if INSN is an instruction with a delay slot we may want\n-   to fill.  */\n-\n-bool\n-arc_need_delay (rtx_insn *insn)\n-{\n-  rtx_insn *next;\n-\n-  if (!flag_delayed_branch)\n-    return false;\n-  /* The return at the end of a function needs a delay slot.  */\n-  if (NONJUMP_INSN_P (insn) && GET_CODE (PATTERN (insn)) == USE\n-      && (!(next = next_active_insn (insn))\n-\t  || ((!NONJUMP_INSN_P (next) || GET_CODE (PATTERN (next)) != SEQUENCE)\n-\t      && arc_attr_type (next) == TYPE_RETURN))\n-      && (!TARGET_PAD_RETURN\n-\t  || (prev_active_insn (insn)\n-\t      && prev_active_insn (prev_active_insn (insn))\n-\t      && prev_active_insn (prev_active_insn (prev_active_insn (insn))))))\n-    return true;\n-  if (NONJUMP_INSN_P (insn)\n-      ? (GET_CODE (PATTERN (insn)) == USE\n-\t || GET_CODE (PATTERN (insn)) == CLOBBER\n-\t || GET_CODE (PATTERN (insn)) == SEQUENCE)\n-      : JUMP_P (insn)\n-      ? (GET_CODE (PATTERN (insn)) == ADDR_VEC\n-\t || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC)\n-      : !CALL_P (insn))\n-    return false;\n-  return num_delay_slots (insn) != 0;\n-}\n-\n-/* Return true if the scheduling pass(es) has/have already run,\n-   i.e. where possible, we should try to mitigate high latencies\n-   by different instruction selection.  */\n-\n-bool\n-arc_scheduling_not_expected (void)\n-{\n-  return cfun->machine->arc_reorg_started;\n-}\n-\n /* Code has a minimum p2 alignment of 1, which we must restore after\n    an ADDR_DIFF_VEC.  */\n \ndiff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md\nindex f91adbc0d94..c635b69ddd5 100644\n--- a/gcc/config/arc/arc.md\n+++ b/gcc/config/arc/arc.md\n@@ -2847,43 +2847,25 @@ archs4x, archs4xd\"\n    (set_attr \"type\" \"compare\")\n    (set_attr \"length\" \"4,4,8\")])\n \n-; w/c/c comes first (rather than w/0/C_0) to prevent the middle-end\n-; needlessly prioritizing the matching constraint.\n-; Rcw/0/C_0 comes before w/c/L so that the lower latency conditional\n-; execution is used where possible.\n-(define_insn_and_split \"adc\"\n-  [(set (match_operand:SI 0 \"dest_reg_operand\" \"=w,Rcw,w,Rcw,w\")\n-\t(plus:SI (plus:SI (ltu:SI (reg:CC_C CC_REG) (const_int 0))\n-\t\t\t  (match_operand:SI 1 \"nonmemory_operand\"\n-\t\t\t\t\t\t\t \"%c,0,c,0,cCal\"))\n-\t\t (match_operand:SI 2 \"nonmemory_operand\" \"c,C_0,L,I,cCal\")))]\n+(define_insn \"adc\"\n+  [(set (match_operand:SI 0 \"register_operand\"    \"=r,  r,r,r,  r,r\")\n+\t(plus:SI\n+\t (plus:SI\n+\t  (ltu:SI (reg:CC_C CC_REG) (const_int 0))\n+\t  (match_operand:SI 1 \"nonmemory_operand\" \"%r,  0,r,0,Cal,r\"))\n+\t (match_operand:SI 2 \"nonmemory_operand\"   \"r,C_0,L,I,  r,Cal\")))]\n   \"register_operand (operands[1], SImode)\n    || register_operand (operands[2], SImode)\"\n   \"@\n-\tadc %0,%1,%2\n-\tadd.cs %0,%1,1\n-\tadc %0,%1,%2\n-\tadc %0,%1,%2\n-\tadc %0,%1,%2\"\n-  ; if we have a bad schedule after sched2, split.\n-  \"reload_completed\n-   && !optimize_size && (!TARGET_ARC600_FAMILY)\n-   && arc_scheduling_not_expected ()\n-   && arc_sets_cc_p (prev_nonnote_insn (insn))\n-   /* If next comes a return or other insn that needs a delay slot,\n-      expect the adc to get into the delay slot.  */\n-   && next_nonnote_insn (insn)\n-   && !arc_need_delay (next_nonnote_insn (insn))\n-   /* Restore operands before emitting.  */\n-   && (extract_insn_cached (insn), 1)\"\n-  [(set (match_dup 0) (match_dup 3))\n-   (cond_exec\n-     (ltu (reg:CC_C CC_REG) (const_int 0))\n-     (set (match_dup 0) (plus:SI (match_dup 0) (const_int 1))))]\n-  \"operands[3] = simplify_gen_binary (PLUS, SImode, operands[1], operands[2]);\"\n+    adc\\\\t%0,%1,%2\n+    add.cs\\\\t%0,%1,1\n+    adc\\\\t%0,%1,%2\n+    adc\\\\t%0,%1,%2\n+    adc\\\\t%0,%1,%2\n+    adc\\\\t%0,%1,%2\"\n   [(set_attr \"cond\" \"use\")\n    (set_attr \"type\" \"cc_arith\")\n-   (set_attr \"length\" \"4,4,4,4,8\")])\n+   (set_attr \"length\" \"4,4,4,4,8,8\")])\n \n ; combiner-splitter cmp / scc -> cmp / adc\n (define_split\n@@ -3015,7 +2997,7 @@ archs4x, archs4xd\"\n       DONE;\n     }\n   emit_insn (gen_sub_f (l0, l1, l2));\n-  emit_insn (gen_sbc (h0, h1, h2, gen_rtx_REG (CCmode, CC_REG)));\n+  emit_insn (gen_sbc (h0, h1, h2));\n   DONE;\n   \")\n \n@@ -3030,44 +3012,25 @@ archs4x, archs4xd\"\n    (set_attr \"type\" \"cc_arith\")\n    (set_attr \"length\" \"4\")])\n \n-; w/c/c comes first (rather than Rcw/0/C_0) to prevent the middle-end\n-; needlessly prioritizing the matching constraint.\n-; Rcw/0/C_0 comes before w/c/L so that the lower latency conditional execution\n-; is used where possible.\n-(define_insn_and_split \"sbc\"\n-  [(set (match_operand:SI 0 \"dest_reg_operand\" \"=w,Rcw,w,Rcw,w\")\n-\t(minus:SI (minus:SI (match_operand:SI 1 \"nonmemory_operand\"\n-\t\t\t\t\t\t\"c,0,c,0,cCal\")\n-\t\t\t    (ltu:SI (match_operand:CC_C 3 \"cc_use_register\")\n-\t\t\t\t    (const_int 0)))\n-\t\t  (match_operand:SI 2 \"nonmemory_operand\" \"c,C_0,L,I,cCal\")))]\n+(define_insn \"sbc\"\n+  [(set (match_operand:SI 0 \"dest_reg_operand\"   \"=r,r,r,r,r,r\")\n+\t(minus:SI\n+\t (minus:SI\n+\t  (match_operand:SI 1 \"nonmemory_operand\" \"r,  0,r,0,  r,Cal\")\n+\t  (ltu:SI (reg:CC_C CC_REG) (const_int 0)))\n+\t (match_operand:SI 2 \"nonmemory_operand\"  \"r,C_0,L,I,Cal,r\")))]\n   \"register_operand (operands[1], SImode)\n    || register_operand (operands[2], SImode)\"\n   \"@\n-\tsbc %0,%1,%2\n-\tsub.cs %0,%1,1\n-\tsbc %0,%1,%2\n-\tsbc %0,%1,%2\n-\tsbc %0,%1,%2\"\n-  ; if we have a bad schedule after sched2, split.\n-  \"reload_completed\n-   && !optimize_size && (!TARGET_ARC600_FAMILY)\n-   && arc_scheduling_not_expected ()\n-   && arc_sets_cc_p (prev_nonnote_insn (insn))\n-   /* If next comes a return or other insn that needs a delay slot,\n-      expect the adc to get into the delay slot.  */\n-   && next_nonnote_insn (insn)\n-   && !arc_need_delay (next_nonnote_insn (insn))\n-   /* Restore operands before emitting.  */\n-   && (extract_insn_cached (insn), 1)\"\n-  [(set (match_dup 0) (match_dup 4))\n-   (cond_exec\n-     (ltu (reg:CC_C CC_REG) (const_int 0))\n-     (set (match_dup 0) (plus:SI (match_dup 0) (const_int -1))))]\n-  \"operands[4] = simplify_gen_binary (MINUS, SImode, operands[1], operands[2]);\"\n+    sbc\\\\t%0,%1,%2\n+    sub.cs\\\\t%0,%1,1\n+    sbc\\\\t%0,%1,%2\n+    sbc\\\\t%0,%1,%2\n+    sbc\\\\t%0,%1,%2\n+    sbc\\\\t%0,%1,%2\"\n   [(set_attr \"cond\" \"use\")\n    (set_attr \"type\" \"cc_arith\")\n-   (set_attr \"length\" \"4,4,4,4,8\")])\n+   (set_attr \"length\" \"4,4,4,4,8,8\")])\n \n (define_insn \"sub_f\"\n   [(set (reg:CC CC_REG)\n"
  },
  {
    "path": "package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch",
    "content": "From 1557c3d919623a95c2aa090d3018c31401f63f88 Mon Sep 17 00:00:00 2001\nFrom: Tamar Christina <tamar.christina@arm.com>\nDate: Fri, 21 May 2021 12:16:56 +0100\nSubject: [PATCH] libsanitizer: Remove cyclades from libsanitizer\n\nThe Linux kernel has removed the interface to cyclades from\nthe latest kernel headers[1] due to them being orphaned for the\npast 13 years.\n\nlibsanitizer uses this header when compiling against glibc, but\nglibcs itself doesn't seem to have any references to cyclades.\n\nFurther more it seems that the driver is broken in the kernel and\nthe firmware doesn't seem to be available anymore.\n\nAs such since this is breaking the build of libsanitizer (and so the\nGCC bootstrap[2]) I propose to remove this.\n\n[1] https://lkml.org/lkml/2021/3/2/153\n[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379\n\nlibsanitizer/ChangeLog:\n\n\tPR sanitizer/100379\n\t* sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Cherry-pick\n\tllvm-project revision f7c5351552387bd43f6ca3631016d7f0dfe0f135.\n\t* sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise.\n\t* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.\n---\n .../sanitizer_common_interceptors_ioctl.inc           |  9 ---------\n .../sanitizer_platform_limits_posix.cpp               | 11 -----------\n .../sanitizer_platform_limits_posix.h                 | 10 ----------\n 3 files changed, 30 deletions(-)\n\ndiff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc\nindex 490a04b2181..42e43a04441 100644\n--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc\n+++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc\n@@ -366,15 +366,6 @@ static void ioctl_table_fill() {\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n   // _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE\n-  _(CYGETDEFTHRESH, WRITE, sizeof(int));\n-  _(CYGETDEFTIMEOUT, WRITE, sizeof(int));\n-  _(CYGETMON, WRITE, struct_cyclades_monitor_sz);\n-  _(CYGETTHRESH, WRITE, sizeof(int));\n-  _(CYGETTIMEOUT, WRITE, sizeof(int));\n-  _(CYSETDEFTHRESH, NONE, 0);\n-  _(CYSETDEFTIMEOUT, NONE, 0);\n-  _(CYSETTHRESH, NONE, 0);\n-  _(CYSETTIMEOUT, NONE, 0);\n   _(EQL_EMANCIPATE, WRITE, struct_ifreq_sz);\n   _(EQL_ENSLAVE, WRITE, struct_ifreq_sz);\n   _(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz);\ndiff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp\nindex aa845df4dde..badf6a401cc 100644\n--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp\n+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp\n@@ -130,7 +130,6 @@ typedef struct user_fpregs elf_fpregset_t;\n # include <sys/procfs.h>\n #endif\n #include <sys/user.h>\n-#include <linux/cyclades.h>\n #include <linux/if_eql.h>\n #include <linux/if_plip.h>\n #include <linux/lp.h>\n@@ -443,7 +442,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n   unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);\n-  unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);\n #if EV_VERSION > (0x010000)\n   unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry);\n #else\n@@ -809,15 +807,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);\n #endif // SANITIZER_LINUX\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n-  unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;\n-  unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;\n-  unsigned IOCTL_CYGETMON = CYGETMON;\n-  unsigned IOCTL_CYGETTHRESH = CYGETTHRESH;\n-  unsigned IOCTL_CYGETTIMEOUT = CYGETTIMEOUT;\n-  unsigned IOCTL_CYSETDEFTHRESH = CYSETDEFTHRESH;\n-  unsigned IOCTL_CYSETDEFTIMEOUT = CYSETDEFTIMEOUT;\n-  unsigned IOCTL_CYSETTHRESH = CYSETTHRESH;\n-  unsigned IOCTL_CYSETTIMEOUT = CYSETTIMEOUT;\n   unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE;\n   unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE;\n   unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG;\ndiff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h\nindex d82fd5e4005..dc6423bc297 100644\n--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h\n+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h\n@@ -974,7 +974,6 @@ extern unsigned struct_vt_mode_sz;\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n extern unsigned struct_ax25_parms_struct_sz;\n-extern unsigned struct_cyclades_monitor_sz;\n extern unsigned struct_input_keymap_entry_sz;\n extern unsigned struct_ipx_config_data_sz;\n extern unsigned struct_kbdiacrs_sz;\n@@ -1319,15 +1318,6 @@ extern unsigned IOCTL_VT_WAITACTIVE;\n #endif  // SANITIZER_LINUX\n \n #if SANITIZER_LINUX && !SANITIZER_ANDROID\n-extern unsigned IOCTL_CYGETDEFTHRESH;\n-extern unsigned IOCTL_CYGETDEFTIMEOUT;\n-extern unsigned IOCTL_CYGETMON;\n-extern unsigned IOCTL_CYGETTHRESH;\n-extern unsigned IOCTL_CYGETTIMEOUT;\n-extern unsigned IOCTL_CYSETDEFTHRESH;\n-extern unsigned IOCTL_CYSETDEFTIMEOUT;\n-extern unsigned IOCTL_CYSETTHRESH;\n-extern unsigned IOCTL_CYSETTIMEOUT;\n extern unsigned IOCTL_EQL_EMANCIPATE;\n extern unsigned IOCTL_EQL_ENSLAVE;\n extern unsigned IOCTL_EQL_GETMASTRCFG;\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/gcc/arc-2020.09-release/0100-uclibc-conf.patch",
    "content": "From 326b880b20e5f8187dbda736b4c4c662cbfb00ca Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Tue, 2 May 2017 22:36:15 +0200\nSubject: [PATCH] uclibc-conf\n\n[Romain: convert to git patch]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n contrib/regression/objs-gcc.sh | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/contrib/regression/objs-gcc.sh b/contrib/regression/objs-gcc.sh\nindex 60b0497..6dc7ead 100755\n--- a/contrib/regression/objs-gcc.sh\n+++ b/contrib/regression/objs-gcc.sh\n@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ]\n  then\n   make all-gdb all-dejagnu all-ld || exit 1\n   make install-gdb install-dejagnu install-ld || exit 1\n+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]\n+ then\n+  make all-gdb all-dejagnu all-ld || exit 1\n+  make install-gdb install-dejagnu install-ld || exit 1\n elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then\n   make bootstrap || exit 1\n   make install || exit 1\n-- \n2.9.3\n\n"
  },
  {
    "path": "package/gcc/gcc-final/gcc-final.mk",
    "content": "################################################################################\n#\n# gcc-final\n#\n################################################################################\n\nGCC_FINAL_VERSION = $(GCC_VERSION)\nGCC_FINAL_SITE = $(GCC_SITE)\nGCC_FINAL_SOURCE = $(GCC_SOURCE)\n\nHOST_GCC_FINAL_DL_SUBDIR = gcc\n\nHOST_GCC_FINAL_DEPENDENCIES = \\\n\t$(HOST_GCC_COMMON_DEPENDENCIES) \\\n\t$(BR_LIBC)\n\nHOST_GCC_FINAL_EXCLUDES = $(HOST_GCC_EXCLUDES)\n\nifneq ($(ARCH_XTENSA_OVERLAY_FILE),)\nHOST_GCC_FINAL_POST_EXTRACT_HOOKS += HOST_GCC_XTENSA_OVERLAY_EXTRACT\nHOST_GCC_FINAL_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL)\nendif\n\nHOST_GCC_FINAL_POST_PATCH_HOOKS += HOST_GCC_APPLY_PATCHES\n\n# gcc doesn't support in-tree build, so we create a 'build'\n# subdirectory in the gcc sources, and build from there.\nHOST_GCC_FINAL_SUBDIR = build\n\nHOST_GCC_FINAL_PRE_CONFIGURE_HOOKS += HOST_GCC_CONFIGURE_SYMLINK\n\n# We want to always build the static variants of all the gcc libraries,\n# of which libstdc++, libgomp, libmudflap...\n# To do so, we can not just pass --enable-static to override the generic\n# --disable-static flag, otherwise gcc fails to build some of those\n# libraries, see;\n#   http://lists.busybox.net/pipermail/buildroot/2013-October/080412.html\n#\n# So we must completely override the generic commands and provide our own.\n#\ndefine HOST_GCC_FINAL_CONFIGURE_CMDS\n\t(cd $(HOST_GCC_FINAL_SRCDIR) && rm -rf config.cache; \\\n\t\t$(HOST_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(HOST_CFLAGS)\" \\\n\t\tLDFLAGS=\"$(HOST_LDFLAGS)\" \\\n\t\t$(HOST_GCC_FINAL_CONF_ENV) \\\n\t\t./configure \\\n\t\t--prefix=\"$(HOST_DIR)\" \\\n\t\t--sysconfdir=\"$(HOST_DIR)/etc\" \\\n\t\t--enable-static \\\n\t\t$(QUIET) $(HOST_GCC_FINAL_CONF_OPTS) \\\n\t)\nendef\n\n# Languages supported by the cross-compiler\nGCC_FINAL_CROSS_LANGUAGES-y = c\nGCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_LIBSTDCPP) += c++\nGCC_FINAL_CROSS_LANGUAGES-$(BR2_TOOLCHAIN_BUILDROOT_DLANG) += d\nGCC_FINAL_CROSS_LANGUAGES-$(BR2_TOOLCHAIN_BUILDROOT_FORTRAN) += fortran\nGCC_FINAL_CROSS_LANGUAGES = $(subst $(space),$(comma),$(GCC_FINAL_CROSS_LANGUAGES-y))\n\nHOST_GCC_FINAL_CONF_OPTS = \\\n\t$(HOST_GCC_COMMON_CONF_OPTS) \\\n\t--enable-languages=$(GCC_FINAL_CROSS_LANGUAGES) \\\n\t--with-build-time-tools=$(HOST_DIR)/$(GNU_TARGET_NAME)/bin\n\n# The kernel wants to use the -m4-nofpu option to make sure that it\n# doesn't use floating point operations.\nifeq ($(BR2_sh4)$(BR2_sh4eb),y)\nHOST_GCC_FINAL_CONF_OPTS += \"--with-multilib-list=m4,m4-nofpu\"\nHOST_GCC_FINAL_GCC_LIB_DIR = $(HOST_DIR)/$(GNU_TARGET_NAME)/lib/!m4*\nelse ifeq ($(BR2_sh4a)$(BR2_sh4aeb),y)\nHOST_GCC_FINAL_CONF_OPTS += \"--with-multilib-list=m4a,m4a-nofpu\"\nHOST_GCC_FINAL_GCC_LIB_DIR = $(HOST_DIR)/$(GNU_TARGET_NAME)/lib/!m4*\nelse\nHOST_GCC_FINAL_GCC_LIB_DIR = $(HOST_DIR)/$(GNU_TARGET_NAME)/lib*\nendif\n\nifeq ($(BR2_GCC_SUPPORTS_LIBCILKRTS),y)\n\n# libcilkrts does not support v8\nifeq ($(BR2_sparc),y)\nHOST_GCC_FINAL_CONF_OPTS += --disable-libcilkrts\nendif\n\n# Pthreads are required to build libcilkrts\nifeq ($(BR2_PTHREADS_NONE),y)\nHOST_GCC_FINAL_CONF_OPTS += --disable-libcilkrts\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\n# disable libcilkrts as there is no static version\nHOST_GCC_FINAL_CONF_OPTS += --disable-libcilkrts\nendif\n\nendif # BR2_GCC_SUPPORTS_LIBCILKRTS\n\n# Disable shared libs like libstdc++ if we do static since it confuses linking\nifeq ($(BR2_STATIC_LIBS),y)\nHOST_GCC_FINAL_CONF_OPTS += --disable-shared\nelse\nHOST_GCC_FINAL_CONF_OPTS += --enable-shared\nendif\n\nifeq ($(BR2_GCC_ENABLE_OPENMP),y)\nHOST_GCC_FINAL_CONF_OPTS += --enable-libgomp\nelse\nHOST_GCC_FINAL_CONF_OPTS += --disable-libgomp\nendif\n\n# End with user-provided options, so that they can override previously\n# defined options.\nHOST_GCC_FINAL_CONF_OPTS += \\\n\t$(call qstrip,$(BR2_EXTRA_GCC_CONFIG_OPTIONS))\n\nHOST_GCC_FINAL_CONF_ENV = \\\n\t$(HOST_GCC_COMMON_CONF_ENV)\n\nHOST_GCC_FINAL_MAKE_OPTS += $(HOST_GCC_COMMON_MAKE_OPTS)\n\n# Make sure we have 'cc'\ndefine HOST_GCC_FINAL_CREATE_CC_SYMLINKS\n\tif [ ! -e $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-cc ]; then \\\n\t\tln -f $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-gcc \\\n\t\t\t$(HOST_DIR)/bin/$(GNU_TARGET_NAME)-cc; \\\n\tfi\nendef\n\nHOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_CREATE_CC_SYMLINKS\n\nHOST_GCC_FINAL_TOOLCHAIN_WRAPPER_ARGS += $(HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS)\nHOST_GCC_FINAL_POST_BUILD_HOOKS += TOOLCHAIN_WRAPPER_BUILD\nHOST_GCC_FINAL_POST_INSTALL_HOOKS += TOOLCHAIN_WRAPPER_INSTALL\n# Note: this must be done after CREATE_CC_SYMLINKS, otherwise the\n# -cc symlink to the wrapper is not created.\nHOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_INSTALL_WRAPPER_AND_SIMPLE_SYMLINKS\n\n# coldfire is not working without removing these object files from libgcc.a\nifeq ($(BR2_m68k_cf),y)\ndefine HOST_GCC_FINAL_M68K_LIBGCC_FIXUP\n\tfind $(STAGING_DIR) -name libgcc.a -print | \\\n\t\twhile read t; do $(GNU_TARGET_NAME)-ar dv \"$t\" _ctors.o; done\nendef\nHOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_M68K_LIBGCC_FIXUP\nendif\n\n# Cannot use the HOST_GCC_FINAL_USR_LIBS mechanism below, because we want\n# libgcc_s to be installed in /lib and not /usr/lib.\ndefine HOST_GCC_FINAL_INSTALL_LIBGCC\n\t-cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/libgcc_s* \\\n\t\t$(STAGING_DIR)/lib/\n\t-cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/libgcc_s* \\\n\t\t$(TARGET_DIR)/lib/\nendef\n\nHOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_LIBGCC\n\ndefine HOST_GCC_FINAL_INSTALL_LIBATOMIC\n\t-cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/libatomic* \\\n\t\t$(STAGING_DIR)/lib/\n\t-cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/libatomic* \\\n\t\t$(TARGET_DIR)/lib/\nendef\n\nHOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_LIBATOMIC\n\n# Handle the installation of libraries in /usr/lib\nHOST_GCC_FINAL_USR_LIBS =\n\nifeq ($(BR2_INSTALL_LIBSTDCPP),y)\nHOST_GCC_FINAL_USR_LIBS += libstdc++\nendif\n\nifeq ($(BR2_TOOLCHAIN_BUILDROOT_DLANG),y)\nHOST_GCC_FINAL_USR_LIBS += libgdruntime libgphobos\nendif\n\nifeq ($(BR2_TOOLCHAIN_BUILDROOT_FORTRAN),y)\nHOST_GCC_FINAL_USR_LIBS += libgfortran\n# fortran needs quadmath on x86 and x86_64\nifeq ($(BR2_TOOLCHAIN_HAS_LIBQUADMATH),y)\nHOST_GCC_FINAL_USR_LIBS += libquadmath\nendif\nendif\n\nifeq ($(BR2_GCC_ENABLE_OPENMP),y)\nHOST_GCC_FINAL_USR_LIBS += libgomp\nendif\n\nHOST_GCC_FINAL_USR_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_LIBS))\n\nifneq ($(HOST_GCC_FINAL_USR_LIBS),)\ndefine HOST_GCC_FINAL_INSTALL_STATIC_LIBS\n\tfor i in $(HOST_GCC_FINAL_USR_LIBS) ; do \\\n\t\tcp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/$${i}.a \\\n\t\t\t$(STAGING_DIR)/usr/lib/ ; \\\n\tdone\nendef\n\nifeq ($(BR2_STATIC_LIBS),)\ndefine HOST_GCC_FINAL_INSTALL_SHARED_LIBS\n\tfor i in $(HOST_GCC_FINAL_USR_LIBS) ; do \\\n\t\tcp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/$${i}.so* \\\n\t\t\t$(STAGING_DIR)/usr/lib/ ; \\\n\t\tcp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/$${i}.so* \\\n\t\t\t$(TARGET_DIR)/usr/lib/ ; \\\n\tdone\nendef\nendif\n\ndefine HOST_GCC_FINAL_INSTALL_USR_LIBS\n\tmkdir -p $(TARGET_DIR)/usr/lib\n\t$(HOST_GCC_FINAL_INSTALL_STATIC_LIBS)\n\t$(HOST_GCC_FINAL_INSTALL_SHARED_LIBS)\nendef\nHOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_USR_LIBS\nendif\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/gcc/gcc-initial/gcc-initial.mk",
    "content": "################################################################################\n#\n# gcc-initial\n#\n################################################################################\n\nGCC_INITIAL_VERSION = $(GCC_VERSION)\nGCC_INITIAL_SITE = $(GCC_SITE)\nGCC_INITIAL_SOURCE = $(GCC_SOURCE)\n\n# We do not have a 'gcc' package per-se; we only have two incarnations,\n# gcc-initial and gcc-final. gcc-initial is just am internal step that\n# users should not care about, while gcc-final is the one they shall see.\nHOST_GCC_INITIAL_DL_SUBDIR = gcc\n\nHOST_GCC_INITIAL_DEPENDENCIES = $(HOST_GCC_COMMON_DEPENDENCIES)\n\nHOST_GCC_INITIAL_EXCLUDES = $(HOST_GCC_EXCLUDES)\n\nifneq ($(ARCH_XTENSA_OVERLAY_FILE),)\nHOST_GCC_INITIAL_POST_EXTRACT_HOOKS += HOST_GCC_XTENSA_OVERLAY_EXTRACT\nHOST_GCC_INITIAL_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL)\nendif\n\nHOST_GCC_INITIAL_POST_PATCH_HOOKS += HOST_GCC_APPLY_PATCHES\n\n# gcc doesn't support in-tree build, so we create a 'build'\n# subdirectory in the gcc sources, and build from there.\nHOST_GCC_INITIAL_SUBDIR = build\n\nHOST_GCC_INITIAL_PRE_CONFIGURE_HOOKS += HOST_GCC_CONFIGURE_SYMLINK\n\nHOST_GCC_INITIAL_CONF_OPTS = \\\n\t$(HOST_GCC_COMMON_CONF_OPTS) \\\n\t--enable-languages=c \\\n\t--disable-shared \\\n\t--without-headers \\\n\t--disable-threads \\\n\t--with-newlib \\\n\t--disable-largefile \\\n\t$(call qstrip,$(BR2_EXTRA_GCC_CONFIG_OPTIONS))\n\nHOST_GCC_INITIAL_CONF_ENV = \\\n\t$(HOST_GCC_COMMON_CONF_ENV)\n\nHOST_GCC_INITIAL_MAKE_OPTS = $(HOST_GCC_COMMON_MAKE_OPTS) all-gcc all-target-libgcc\nHOST_GCC_INITIAL_INSTALL_OPTS = install-gcc install-target-libgcc\n\nHOST_GCC_INITIAL_TOOLCHAIN_WRAPPER_ARGS += $(HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS)\nHOST_GCC_INITIAL_POST_BUILD_HOOKS += TOOLCHAIN_WRAPPER_BUILD\nHOST_GCC_INITIAL_POST_INSTALL_HOOKS += TOOLCHAIN_WRAPPER_INSTALL\nHOST_GCC_INITIAL_POST_INSTALL_HOOKS += HOST_GCC_INSTALL_WRAPPER_AND_SIMPLE_SYMLINKS\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/gcc/gcc.hash",
    "content": "# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-8.4.0/sha512.sum\nsha512  6de904f552a02de33b11ef52312bb664396efd7e1ce3bbe37bfad5ef617f133095b3767b4804bc7fe78df335cb53bc83f1ac055baed40979ce4c2c3e46b70280  gcc-8.4.0.tar.xz\n#  From ftp://gcc.gnu.org/pub/gcc/releases/gcc-9.4.0/sha512.sum\nsha512  dfd3500bf21784b8351a522d53463cf362ede66b0bc302edf350bb44e94418497a8b4b797b6af8ca9b2eeb746b3b115d9c3698381b989546e9151b4496415624  gcc-9.4.0.tar.xz\n# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-10.3.0/sha512.sum\nsha512  2b2dd7453d48a398c29eaebd1422b70341001b8c90a62aee51e83344e7fdd8a8e45f82a4a9165bd7edc76dada912c932f4b6632c5636760fec4c5d7e402b3f86  gcc-10.3.0.tar.xz\n# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-11.2.0/sha512.sum\nsha512  d53a0a966230895c54f01aea38696f818817b505f1e2bfa65e508753fcd01b2aedb4a61434f41f3a2ddbbd9f41384b96153c684ded3f0fa97c82758d9de5c7cf  gcc-11.2.0.tar.xz\n\n# Locally calculated (fetched from Github)\nsha512  b0853e2b1c5998044392023fa653e399e74118c46e616504ac59e1a2cf27620f94434767ce06b6cf4ca3dfb57f81d6eda92752befaf095ea5e564a9181b4659c  gcc-arc-2020.09-release.tar.gz\n# Locally calculated (fetched from Github)\nsha512  2de7cf47333a4092b02d3bb98f4206f14966f1d139a724d09cf3b22f8a43ae0c704f33e6477d6367a03c29b265480dc900169e9d417006c5d46f0ae446b8c6f1  gcc-or1k-musl-5.4.0-20170218.tar.gz\n"
  },
  {
    "path": "package/gcc/gcc.mk",
    "content": "################################################################################\n#\n# Common variables for the gcc-initial and gcc-final packages.\n#\n################################################################################\n\n#\n# Version, site and source\n#\n\nGCC_VERSION = $(call qstrip,$(BR2_GCC_VERSION))\n\nifeq ($(BR2_GCC_VERSION_ARC),y)\nGCC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,gcc,$(GCC_VERSION))\nGCC_SOURCE = gcc-$(GCC_VERSION).tar.gz\nelse\nGCC_SITE = $(BR2_GNU_MIRROR:/=)/gcc/gcc-$(GCC_VERSION)\nGCC_SOURCE = gcc-$(GCC_VERSION).tar.xz\nendif\n\n#\n# Xtensa special hook\n#\ndefine HOST_GCC_XTENSA_OVERLAY_EXTRACT\n\t$(call arch-xtensa-overlay-extract,$(@D),gcc)\nendef\n\n#\n# Apply patches\n#\n\n# gcc is a special package, not named gcc, but gcc-initial and\n# gcc-final, but patches are nonetheless stored in package/gcc in the\n# tree, and potentially in BR2_GLOBAL_PATCH_DIR directories as well.\ndefine HOST_GCC_APPLY_PATCHES\n\tfor patchdir in \\\n\t    package/gcc/$(GCC_VERSION) \\\n\t    $(addsuffix /gcc/$(GCC_VERSION),$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \\\n\t    $(addsuffix /gcc,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) ; do \\\n\t\tif test -d $${patchdir}; then \\\n\t\t\t$(APPLY_PATCHES) $(@D) $${patchdir} \\*.patch || exit 1; \\\n\t\tfi; \\\n\tdone\n\t$(HOST_GCC_APPLY_POWERPC_PATCH)\nendef\n\nHOST_GCC_EXCLUDES = \\\n\tlibjava/* libgo/*\n\n#\n# Create 'build' directory and configure symlink\n#\n\ndefine HOST_GCC_CONFIGURE_SYMLINK\n\tmkdir -p $(@D)/build\n\tln -sf ../configure $(@D)/build/configure\nendef\n\n#\n# Common configuration options\n#\n\nHOST_GCC_COMMON_DEPENDENCIES = \\\n\thost-binutils \\\n\thost-gmp \\\n\thost-mpc \\\n\thost-mpfr \\\n\t$(if $(BR2_BINFMT_FLAT),host-elf2flt)\n\nHOST_GCC_COMMON_CONF_OPTS = \\\n\t--target=$(GNU_TARGET_NAME) \\\n\t--with-sysroot=$(STAGING_DIR) \\\n\t--enable-__cxa_atexit \\\n\t--with-gnu-ld \\\n\t--disable-libssp \\\n\t--disable-multilib \\\n\t--disable-decimal-float \\\n\t--with-gmp=$(HOST_DIR) \\\n\t--with-mpc=$(HOST_DIR) \\\n\t--with-mpfr=$(HOST_DIR) \\\n\t--with-pkgversion=\"Buildroot $(BR2_VERSION_FULL)\" \\\n\t--with-bugurl=\"http://bugs.buildroot.net/\" \\\n\t--without-zstd\n\n# Don't build documentation. It takes up extra space / build time,\n# and sometimes needs specific makeinfo versions to work\nHOST_GCC_COMMON_CONF_ENV = \\\n\tMAKEINFO=missing\n\nGCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS)\nGCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS)\n\n# used to fix ../../../../libsanitizer/libbacktrace/../../libbacktrace/elf.c:772:21: error: 'st.st_mode' may be used uninitialized in this function [-Werror=maybe-uninitialized]\nifeq ($(BR2_ENABLE_DEBUG),y)\nGCC_COMMON_TARGET_CFLAGS += -Wno-error\nendif\n\n# Make sure libgcc & libstdc++ always get built with -matomic on ARC700\nifeq ($(GCC_TARGET_CPU):$(BR2_ARC_ATOMIC_EXT),arc700:y)\nGCC_COMMON_TARGET_CFLAGS += -matomic\nGCC_COMMON_TARGET_CXXFLAGS += -matomic\nendif\n\n# Propagate options used for target software building to GCC target libs\nHOST_GCC_COMMON_CONF_ENV += CFLAGS_FOR_TARGET=\"$(GCC_COMMON_TARGET_CFLAGS)\"\nHOST_GCC_COMMON_CONF_ENV += CXXFLAGS_FOR_TARGET=\"$(GCC_COMMON_TARGET_CXXFLAGS)\"\n\n# libitm needs sparc V9+\nifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)\nHOST_GCC_COMMON_CONF_OPTS += --disable-libitm\nendif\n\n# libmpx uses secure_getenv and struct _libc_fpstate not present in musl\nifeq ($(BR2_TOOLCHAIN_BUILDROOT_MUSL)$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),yy)\nHOST_GCC_COMMON_CONF_OPTS += --disable-libmpx\nendif\n\n# quadmath support requires wchar\nifeq ($(BR2_USE_WCHAR)$(BR2_TOOLCHAIN_HAS_LIBQUADMATH),yy)\nHOST_GCC_COMMON_CONF_OPTS += --enable-libquadmath\nelse\nHOST_GCC_COMMON_CONF_OPTS += --disable-libquadmath --disable-libquadmath-support\nendif\n\n# libsanitizer requires wordexp, not in default uClibc config. Also\n# doesn't build properly with musl.\nifeq ($(BR2_TOOLCHAIN_BUILDROOT_UCLIBC)$(BR2_TOOLCHAIN_BUILDROOT_MUSL),y)\nHOST_GCC_COMMON_CONF_OPTS += --disable-libsanitizer\nendif\n\n# libsanitizer is broken for SPARC\n# https://bugs.busybox.net/show_bug.cgi?id=7951\nifeq ($(BR2_sparc)$(BR2_sparc64),y)\nHOST_GCC_COMMON_CONF_OPTS += --disable-libsanitizer\nendif\n\n# The logic in libbacktrace/configure.ac to detect if __sync builtins\n# are available assumes they are as soon as target_subdir is not\n# empty, i.e when cross-compiling. However, some platforms do not have\n# __sync builtins, so help the configure script a bit.\nifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),)\nHOST_GCC_COMMON_CONF_ENV += target_configargs=\"libbacktrace_cv_sys_sync=no\"\nendif\n\n# TLS support is not needed on uClibc/no-thread and\n# uClibc/linux-threads, otherwise, for all other situations (glibc,\n# musl and uClibc/NPTL), we need it.\nifeq ($(BR2_TOOLCHAIN_BUILDROOT_UCLIBC)$(BR2_PTHREADS)$(BR2_PTHREADS_NONE),yy)\nHOST_GCC_COMMON_CONF_OPTS += --disable-tls\nelse\nHOST_GCC_COMMON_CONF_OPTS += --enable-tls\nendif\n\nifeq ($(BR2_GCC_ENABLE_LTO),y)\nHOST_GCC_COMMON_CONF_OPTS += --enable-plugins --enable-lto\nendif\n\nifeq ($(BR2_PTHREADS_NONE),y)\nHOST_GCC_COMMON_CONF_OPTS += \\\n\t--disable-threads \\\n\t--disable-libitm \\\n\t--disable-libatomic\nelse\nHOST_GCC_COMMON_CONF_OPTS += --enable-threads\nendif\n\n# gcc 5 doesn't need cloog any more, see\n# https://gcc.gnu.org/gcc-5/changes.html and we don't support graphite\n# on GCC 4.9.x, so only isl is needed.\nifeq ($(BR2_GCC_ENABLE_GRAPHITE),y)\nHOST_GCC_COMMON_DEPENDENCIES += host-isl\nHOST_GCC_COMMON_CONF_OPTS += --with-isl=$(HOST_DIR)\nelse\nHOST_GCC_COMMON_CONF_OPTS += --without-isl --without-cloog\nendif\n\nifeq ($(BR2_arc),y)\nHOST_GCC_COMMON_DEPENDENCIES += host-flex host-bison\nendif\n\nifeq ($(BR2_SOFT_FLOAT),y)\n# only mips*-*-*, arm*-*-* and sparc*-*-* accept --with-float\n# powerpc seems to be needing it as well\nifeq ($(BR2_arm)$(BR2_armeb)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_powerpc)$(BR2_sparc),y)\nHOST_GCC_COMMON_CONF_OPTS += --with-float=soft\nendif\nendif\n\n# Determine arch/tune/abi/cpu options\nifneq ($(GCC_TARGET_ARCH),)\nHOST_GCC_COMMON_CONF_OPTS += --with-arch=\"$(GCC_TARGET_ARCH)\"\nendif\nifneq ($(GCC_TARGET_ABI),)\nHOST_GCC_COMMON_CONF_OPTS += --with-abi=\"$(GCC_TARGET_ABI)\"\nendif\nifeq ($(BR2_TOOLCHAIN_HAS_MNAN_OPTION),y)\nifneq ($(GCC_TARGET_NAN),)\nHOST_GCC_COMMON_CONF_OPTS += --with-nan=\"$(GCC_TARGET_NAN)\"\nendif\nendif\nifneq ($(GCC_TARGET_FP32_MODE),)\nHOST_GCC_COMMON_CONF_OPTS += --with-fp-32=\"$(GCC_TARGET_FP32_MODE)\"\nendif\nifneq ($(GCC_TARGET_CPU),)\nHOST_GCC_COMMON_CONF_OPTS += --with-cpu=$(GCC_TARGET_CPU)\nendif\n\nifneq ($(GCC_TARGET_FPU),)\nHOST_GCC_COMMON_CONF_OPTS += --with-fpu=$(GCC_TARGET_FPU)\nendif\n\nifneq ($(GCC_TARGET_FLOAT_ABI),)\nHOST_GCC_COMMON_CONF_OPTS += --with-float=$(GCC_TARGET_FLOAT_ABI)\nendif\n\nifneq ($(GCC_TARGET_MODE),)\nHOST_GCC_COMMON_CONF_OPTS += --with-mode=$(GCC_TARGET_MODE)\nendif\n\n# Enable proper double/long double for SPE ABI\nifeq ($(BR2_powerpc_SPE),y)\nHOST_GCC_COMMON_CONF_OPTS += \\\n\t--enable-obsolete \\\n\t--enable-e500_double \\\n\t--with-long-double-128\nendif\n\n# Set default to Secure-PLT to prevent run-time\n# generation of PLT stubs (supports RELRO and\n# SELinux non-exemem capabilities)\nifeq ($(BR2_powerpc)$(BR2_powerpc64),y)\nHOST_GCC_COMMON_CONF_OPTS += --enable-secureplt\nendif\n\n# PowerPC64 big endian by default uses the elfv1 ABI, and PowerPC 64\n# little endian by default uses the elfv2 ABI. However, musl has\n# decided to use the elfv2 ABI for both, so we force the elfv2 ABI for\n# Power64 big endian when the selected C library is musl.\nifeq ($(BR2_TOOLCHAIN_USES_MUSL)$(BR2_powerpc64),yy)\nHOST_GCC_COMMON_CONF_OPTS += \\\n\t--with-abi=elfv2 \\\n\t--without-long-double-128\nendif\n\n# Since glibc >= 2.26, poerpc64le requires double/long double which\n# requires at least gcc 6.2.\n# See sysdeps/powerpc/powerpc64le/configure.ac\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC)$(BR2_TOOLCHAIN_GCC_AT_LEAST_6)$(BR2_powerpc64le),yyy)\nHOST_GCC_COMMON_CONF_OPTS += \\\n\t--with-long-double-128\nendif\n\nifeq ($(BR2_s390x),y)\nHOST_GCC_COMMON_CONF_OPTS += \\\n\t--with-long-double-128\nendif\n\nHOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CROSS_PATH_SUFFIX='\".br_real\"'\n\n# For gcc-initial, we need to tell gcc that the C library will be\n# providing the ssp support, as it can't guess it since the C library\n# hasn't been built yet.\n#\n# For gcc-final, the gcc logic to detect whether SSP support is\n# available or not in the C library is not working properly for\n# uClibc, so let's be explicit as well.\nHOST_GCC_COMMON_MAKE_OPTS = \\\n\tgcc_cv_libc_provides_ssp=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no)\n\nifeq ($(BR2_CCACHE),y)\nHOST_GCC_COMMON_CCACHE_HASH_FILES += $(GCC_DL_DIR)/$(GCC_SOURCE)\n\n# Cfr. PATCH_BASE_DIRS in .stamp_patched, but we catch both versioned\n# and unversioned patches unconditionally. Moreover, to facilitate the\n# addition of gcc patches in BR2_GLOBAL_PATCH_DIR, we allow them to be\n# stored in a sub-directory called 'gcc' even if it's not technically\n# the name of the package.\nHOST_GCC_COMMON_CCACHE_HASH_FILES += \\\n\t$(sort $(wildcard \\\n\t\tpackage/gcc/$(GCC_VERSION)/*.patch \\\n\t\t$(addsuffix /$($(PKG)_RAWNAME)/$(GCC_VERSION)/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \\\n\t\t$(addsuffix /$($(PKG)_RAWNAME)/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \\\n\t\t$(addsuffix /gcc/$(GCC_VERSION)/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \\\n\t\t$(addsuffix /gcc/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR)))))\nifeq ($(BR2_xtensa),y)\nHOST_GCC_COMMON_CCACHE_HASH_FILES += $(ARCH_XTENSA_OVERLAY_TAR)\nendif\n\n# _CONF_OPTS contains some references to the absolute path of $(HOST_DIR)\n# and a reference to the Buildroot git revision (BR2_VERSION_FULL),\n# so substitute those away.\nHOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE_HASH=\\\"`\\\n\tprintf '%s\\n' $(subst $(HOST_DIR),@HOST_DIR@,\\\n\t\t$(subst --with-pkgversion=\"Buildroot $(BR2_VERSION_FULL)\",,$($(PKG)_CONF_OPTS))) \\\n\t\t| sha256sum - $(HOST_GCC_COMMON_CCACHE_HASH_FILES) \\\n\t\t| cut -c -64 | tr -d '\\n'`\\\"\nendif # BR2_CCACHE\n\n# The LTO support in gcc creates wrappers for ar, ranlib and nm which load\n# the lto plugin. These wrappers are called *-gcc-ar, *-gcc-ranlib, and\n# *-gcc-nm and should be used instead of the real programs when -flto is\n# used. However, we should not add the toolchain wrapper for them, and they\n# match the *cc-* pattern. Therefore, an additional case is added for *-ar,\n# *-ranlib and *-nm.\n# According to gfortran manpage, it supports all options supported by gcc, so\n# add gfortran to the list of the program called via the Buildroot wrapper.\n# Avoid that a .br_real is symlinked a second time.\n# Also create <arch>-linux-<tool> symlinks.\ndefine HOST_GCC_INSTALL_WRAPPER_AND_SIMPLE_SYMLINKS\n\t$(Q)cd $(HOST_DIR)/bin; \\\n\tfor i in $(GNU_TARGET_NAME)-*; do \\\n\t\tcase \"$$i\" in \\\n\t\t*.br_real) \\\n\t\t\t;; \\\n\t\t*-ar|*-ranlib|*-nm) \\\n\t\t\tln -snf $$i $(ARCH)-linux$${i##$(GNU_TARGET_NAME)}; \\\n\t\t\t;; \\\n\t\t*cc|*cc-*|*++|*++-*|*cpp|*-gfortran|*-gdc) \\\n\t\t\trm -f $$i.br_real; \\\n\t\t\tmv $$i $$i.br_real; \\\n\t\t\tln -sf toolchain-wrapper $$i; \\\n\t\t\tln -sf toolchain-wrapper $(ARCH)-linux$${i##$(GNU_TARGET_NAME)}; \\\n\t\t\tln -snf $$i.br_real $(ARCH)-linux$${i##$(GNU_TARGET_NAME)}.br_real; \\\n\t\t\t;; \\\n\t\t*) \\\n\t\t\tln -snf $$i $(ARCH)-linux$${i##$(GNU_TARGET_NAME)}; \\\n\t\t\t;; \\\n\t\tesac; \\\n\tdone\n\nendef\n\ninclude $(sort $(wildcard package/gcc/*/*.mk))\n"
  },
  {
    "path": "package/gcnano-binaries/Config.in",
    "content": "comment \"gcnano-binaries needs a Linux kernel to be built\"\n\tdepends on BR2_arm\n\tdepends on !BR2_LINUX_KERNEL\n\ncomment \"gcnano-binaries needs a glibc toolchain w/ threads, dynamic library\"\n\tdepends on BR2_arm\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_GCNANO_BINARIES\n\tbool \"gcnano-binaries\"\n\tdepends on BR2_arm\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libdrm, wayland\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_HAS_LIBEGL\n\tselect BR2_PACKAGE_HAS_LIBGBM\n\tselect BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT\n\tselect BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF\n\tselect BR2_PACKAGE_HAS_LIBGLES\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_WAYLAND\n\thelp\n\t  Driver and libaries for stm vivante gcnano gpu.\n\t  https://github.com/STMicroelectronics/gcnano-binaries/\n\nif BR2_PACKAGE_GCNANO_BINARIES\n\nconfig BR2_PACKAGE_PROVIDES_LIBEGL\n\tdefault \"gcnano-binaries\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBGBM\n\tdefault \"gcnano-binaries\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBGLES\n\tdefault \"gcnano-binaries\"\n\nendif\n"
  },
  {
    "path": "package/gcnano-binaries/gcnano-binaries.hash",
    "content": "# Locally calculated\nsha256 afec2ba2f524821452d561b56afd2fc241293ea4a6e8598d1663f58e5d16800f  gcnano-binaries-1534c3eaabb5ae545a8f97e95f853531365a13fc.tar.gz\nsha256 7d209718473d18f69f75adb7caf9cb5d4b0a31da068756aa011bea617de3dc57  EULA\n"
  },
  {
    "path": "package/gcnano-binaries/gcnano-binaries.mk",
    "content": "################################################################################\n#\n# gcnano-binaries\n#\n################################################################################\n\nGCNANO_BINARIES_LIB_VERSION = 6.4\nGCNANO_BINARIES_LIB_REVISION = 3\nGCNANO_BINARIES_LIB_FULL_VERSION = $(GCNANO_BINARIES_LIB_VERSION).$(GCNANO_BINARIES_LIB_REVISION)\nGCNANO_BINARIES_DRIVER_VERSION = $(GCNANO_BINARIES_LIB_FULL_VERSION)\nGCNANO_BINARIES_USERLAND_VERSION = $(GCNANO_BINARIES_LIB_FULL_VERSION)-20200902\nGCNANO_BINARIES_VERSION = 1534c3eaabb5ae545a8f97e95f853531365a13fc\nGCNANO_BINARIES_SITE = $(call github,STMicroelectronics,gcnano-binaries,$(GCNANO_BINARIES_VERSION))\n\nGCNANO_BINARIES_LICENSE = MIT, Vivante End User Software License Terms\nGCNANO_BINARIES_LICENSE_FILES = EULA\nGCNANO_BINARIES_REDISTRIBUTE = NO\n\nGCNANO_BINARIES_DEPENDENCIES = linux wayland libdrm\n\nGCNANO_BINARIES_INSTALL_STAGING = YES\n\nGCNANO_BINARIES_PROVIDES = libegl libgles libgbm\n\n# The Github repository doesn't contain the source code as-is: it\n# contains a tarball with the kernel driver source code, and a\n# self-extractible binary for the user-space parts. So we extract both\n# below, and also extract the EULA text from the self-extractible binary\ndefine GCNANO_BINARIES_EXTRACT_HELPER\n\ttar --strip-components=1 -xJf $(@D)/gcnano-driver-$(GCNANO_BINARIES_DRIVER_VERSION).tar.xz -C $(@D)\n\tawk 'BEGIN      { start = 0; } \\\n\t\t/^EOEULA/  { start = 0; } \\\n\t\t\t{ if (start) print; } \\\n\t\t/<<EOEULA/ { start = 1; }' \\\n\t\t$(@D)/gcnano-userland-multi-$(GCNANO_BINARIES_USERLAND_VERSION).bin > $(@D)/EULA\n\tcd $(@D) && sh gcnano-userland-multi-$(GCNANO_BINARIES_USERLAND_VERSION).bin --auto-accept\nendef\n\nGCNANO_BINARIES_POST_EXTRACT_HOOKS += GCNANO_BINARIES_EXTRACT_HELPER\n\nGCNANO_BINARIES_MODULE_MAKE_OPTS = \\\n\tKERNEL_DIR=$(LINUX_DIR) \\\n\tSOC_PLATFORM=st-st \\\n\tAQROOT=$(@D) \\\n\tDEBUG=0\n\nGCNANO_BINARIES_LIBRARIES = \\\n\tlibgbm_viv libEGL libGAL libgbm libGLESv1_CM \\\n\tlibGLESv2 libGLSLC libOpenVG libVSC\n\nGCNANO_BINARIES_USERLAND_SUBDIR = gcnano-userland-multi-$(GCNANO_BINARIES_USERLAND_VERSION)\n\nGCNANO_BINARIES_PKG_CONFIGS = egl gbm glesv1_cm glesv2 vg\n\ndefine GCNANO_BINARIES_INSTALL\n\t$(foreach lib,$(GCNANO_BINARIES_LIBRARIES), \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/usr/lib/$(lib).$(GCNANO_BINARIES_LIB_VERSION).multi.release.so \\\n\t\t\t$(1)/usr/lib/$(lib).$(GCNANO_BINARIES_LIB_VERSION).multi.release.so ; \\\n\t\tcp -a $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/usr/lib/$(lib).so* $(1)/usr/lib\n\t)\n\tmkdir -p $(1)/usr/include\n\tcp -a $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/usr/include/* $(1)/usr/include/\n\t$(foreach pkgconfig,$(GCNANO_BINARIES_PKG_CONFIGS), \\\n\t\t$(INSTALL) -D -m 0644 $(@D)/$(GCNANO_BINARIES_USERLAND_SUBDIR)/usr/lib/pkgconfig/$(pkgconfig).pc \\\n\t\t\t$(1)/usr/lib/pkgconfig/$(pkgconfig).pc\n\t)\nendef\n\ndefine GCNANO_BINARIES_INSTALL_TARGET_CMDS\n\t$(call GCNANO_BINARIES_INSTALL,$(TARGET_DIR))\nendef\n\ndefine GCNANO_BINARIES_INSTALL_STAGING_CMDS\n\t$(call GCNANO_BINARIES_INSTALL,$(STAGING_DIR))\nendef\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/gconf/Config.in",
    "content": "config BR2_PACKAGE_GCONF\n\tbool \"gconf\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2\n\tdepends on BR2_USE_MMU # dbus, libglib2\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_DBUS_GLIB\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  GConf was a system used by the GNOME desktop environment for\n\t  storing configuration settings for the desktop and\n\t  applications. It is similar to the Windows Registry.\n\n\t  https://projects.gnome.org/gconf/\n\ncomment \"gconf needs a toolchain w/ threads, wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR \\\n\t\t|| BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/gconf/gconf.hash",
    "content": "# http://ftp.acc.umu.se/pub/gnome/sources/GConf/3.2/GConf-3.2.6.sha256sum\nsha256 1912b91803ab09a5eed34d364bf09fe3a2a9c96751fde03a4e0cfa51a04d784c  GConf-3.2.6.tar.xz\n# License files, locally calculated\nsha256 94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23  COPYING\n"
  },
  {
    "path": "package/gconf/gconf.mk",
    "content": "################################################################################\n#\n# gconf\n#\n################################################################################\n\nGCONF_VERSION = 3.2.6\nGCONF_SOURCE = GConf-$(GCONF_VERSION).tar.xz\nGCONF_SITE = http://ftp.gnome.org/pub/gnome/sources/GConf/3.2\nGCONF_CONF_OPTS = --disable-orbit\nGCONF_DEPENDENCIES = dbus dbus-glib libglib2 libxml2 \\\n\thost-intltool $(TARGET_NLS_DEPENDENCIES)\nGCONF_LICENSE = LGPL-2.0+\nGCONF_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nGCONF_CONF_OPTS += --enable-introspection\nGCONF_DEPENDENCIES += gobject-introspection\nelse\nGCONF_CONF_OPTS += --disable-introspection\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gcr/Config.in",
    "content": "config BR2_PACKAGE_GCR\n\tbool \"gcr\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # gnupg2\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on !BR2_STATIC_LIBS # p11-kit\n\tselect BR2_PACKAGE_GNUPG2 # runtime\n\tselect BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_P11_KIT\n\thelp\n\t  Library for cryptographic UIs and accessing PKCS#11 modules.\n\n\t  https://developer.gnome.org/gcr/\n\ncomment \"gcr needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/gcr/gcr.hash",
    "content": "# From http://ftp.acc.umu.se/pub/gnome/sources/gcr/3.40/gcr-3.40.0.sha256sum\nsha256  b9d3645a5fd953a54285cc64d4fc046736463dbd4dcc25caf5c7b59bed3027f5  gcr-3.40.0.tar.xz\nsha256  94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23  COPYING\n"
  },
  {
    "path": "package/gcr/gcr.mk",
    "content": "################################################################################\n#\n# gcr\n#\n################################################################################\n\nGCR_VERSION_MAJOR = 3.40\nGCR_VERSION = $(GCR_VERSION_MAJOR).0\nGCR_SITE = http://ftp.acc.umu.se/pub/gnome/sources/gcr/$(GCR_VERSION_MAJOR)\nGCR_SOURCE = gcr-$(GCR_VERSION).tar.xz\nGCR_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tlibgcrypt \\\n\tlibglib2 \\\n\tp11-kit \\\n\t$(TARGET_NLS_DEPENDENCIES)\nGCR_INSTALL_STAGING = YES\nGCR_CONF_OPTS = \\\n\t-Dgpg_path=/usr/bin/gpg2 \\\n\t-Dgtk_doc=false\n# Even though COPYING is v2 the code states v2.1+\nGCR_LICENSE = LGPL-2.1+\nGCR_LICENSE_FILES = COPYING\nGCR_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nGCR_DEPENDENCIES += gobject-introspection host-libxslt host-vala\nGCR_CONF_OPTS += -Dintrospection=true\nelse\nGCR_CONF_OPTS += -Dintrospection=false\nendif\n\n# Only the X11 backend is supported for the simple GUI\nifeq ($(BR2_PACKAGE_LIBGTK3_X11),y)\nGCR_DEPENDENCIES += libgtk3\nGCR_CONF_OPTS += -Dgtk=true\nelse\nGCR_CONF_OPTS += -Dgtk=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gd/Config.in",
    "content": "menuconfig BR2_PACKAGE_GD\n\tbool \"gd\"\n\thelp\n\t  GD is a graphics library. It allows your code to quickly\n\t  draw images complete with lines, arcs, text, multiple\n\t  colours, cut and paste from other images, flood fills, and\n\t  write out the result as a PNG file. This is particularly\n\t  useful in World Wide Web applications, where PNG is one of\n\t  the formats accepted for inline images by most browsers.\n\n\t  https://libgd.github.io/\n\nif BR2_PACKAGE_GD\n\nconfig BR2_PACKAGE_GD_ANNOTATE\n\tbool \"annotate\"\n\nconfig BR2_PACKAGE_GD_BDFTOGD\n\tbool \"bdftogd\"\n\tdepends on BR2_PACKAGE_PERL\n\nconfig BR2_PACKAGE_GD_GD2COPYPAL\n\tbool \"gd2copypal\"\n\nconfig BR2_PACKAGE_GD_GD2TOGIF\n\tbool \"gd2togif\"\n\nconfig BR2_PACKAGE_GD_GD2TOPNG\n\tbool \"gd2topng\"\n\tselect BR2_PACKAGE_LIBPNG\n\nconfig BR2_PACKAGE_GD_GDCMPGIF\n\tbool \"gdcmpgif\"\n\nconfig BR2_PACKAGE_GD_GDPARTTOPNG\n\tbool \"gdparttopng\"\n\tselect BR2_PACKAGE_LIBPNG\n\nconfig BR2_PACKAGE_GD_GDTOPNG\n\tbool \"gdtopng\"\n\tselect BR2_PACKAGE_LIBPNG\n\nconfig BR2_PACKAGE_GD_GIFTOGD2\n\tbool \"giftogd2\"\n\nconfig BR2_PACKAGE_GD_PNGTOGD\n\tbool \"pngtogd\"\n\tselect BR2_PACKAGE_LIBPNG\n\nconfig BR2_PACKAGE_GD_PNGTOGD2\n\tbool \"pngtogd2\"\n\tselect BR2_PACKAGE_LIBPNG\n\nconfig BR2_PACKAGE_GD_WEBPNG\n\tbool \"webpng\"\n\tselect BR2_PACKAGE_LIBPNG\n\nendif\n"
  },
  {
    "path": "package/gd/gd.hash",
    "content": "# Locally calculated\nsha256  3fe822ece20796060af63b7c60acb151e5844204d289da0ce08f8fdf131e5a61  libgd-2.3.3.tar.xz\nsha256  005f4b6b0141d1bd11d371bbf7d4f67947f85a4906b7f5465f942204cf918ba3  COPYING\n"
  },
  {
    "path": "package/gd/gd.mk",
    "content": "################################################################################\n#\n# gd\n#\n################################################################################\n\nGD_VERSION = 2.3.3\nGD_SOURCE = libgd-$(GD_VERSION).tar.xz\nGD_SITE = https://github.com/libgd/libgd/releases/download/gd-$(GD_VERSION)\nGD_INSTALL_STAGING = YES\nGD_LICENSE = GD license\nGD_LICENSE_FILES = COPYING\nGD_CPE_ID_VENDOR = libgd\nGD_CPE_ID_PRODUCT = libgd\nGD_CONF_OPTS = --without-x --disable-rpath --disable-werror\nGD_DEPENDENCIES = host-pkgconf\n\n# gd forgets to link utilities with -pthread even though it uses\n# pthreads, causing linking errors with static linking\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nGD_CONF_ENV += LDFLAGS=\"$(TARGET_LDFLAGS) -pthread\"\nendif\n\nifeq ($(BR2_PACKAGE_FONTCONFIG),y)\nGD_DEPENDENCIES += fontconfig\nGD_CONF_OPTS += --with-fontconfig\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nGD_DEPENDENCIES += freetype\nGD_CONF_OPTS += --with-freetype=$(STAGING_DIR)/usr\nelse\nGD_CONF_OPTS += --without-freetype\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nGD_DEPENDENCIES += libiconv\n# not strictly needed for gd, but ensures -liconv ends up in gdlib.pc\nGD_CONF_ENV += LIBS_PRIVATES=\"-liconv\"\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nGD_DEPENDENCIES += jpeg\nGD_CONF_OPTS += --with-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nGD_DEPENDENCIES += libpng\nGD_CONF_OPTS += --with-png\nelse\nGD_CONF_OPTS += --without-png\nendif\n\nifeq ($(BR2_PACKAGE_WEBP),y)\nGD_DEPENDENCIES += webp\nGD_CONF_OPTS += --with-webp\nelse\nGD_CONF_OPTS += --without-webp\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nGD_DEPENDENCIES += tiff\nGD_CONF_OPTS += --with-tiff\nelse\nGD_CONF_OPTS += --without-tiff\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y)\nGD_DEPENDENCIES += xlib_libXpm\nGD_CONF_OPTS += --with-xpm\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nGD_DEPENDENCIES += zlib\nendif\n\nGD_TOOLS_$(BR2_PACKAGE_GD_ANNOTATE)\t+= annotate\nGD_TOOLS_$(BR2_PACKAGE_GD_BDFTOGD)\t+= bdftogd\nGD_TOOLS_$(BR2_PACKAGE_GD_GD2COPYPAL)\t+= gd2copypal\nGD_TOOLS_$(BR2_PACKAGE_GD_GD2TOGIF)\t+= gd2togif\nGD_TOOLS_$(BR2_PACKAGE_GD_GD2TOPNG)\t+= gd2topng\nGD_TOOLS_$(BR2_PACKAGE_GD_GDCMPGIF)\t+= gdcmpgif\nGD_TOOLS_$(BR2_PACKAGE_GD_GDPARTTOPNG)\t+= gdparttopng\nGD_TOOLS_$(BR2_PACKAGE_GD_GDTOPNG)\t+= gdtopng\nGD_TOOLS_$(BR2_PACKAGE_GD_GIFTOGD2)\t+= giftogd2\nGD_TOOLS_$(BR2_PACKAGE_GD_PNGTOGD)\t+= pngtogd\nGD_TOOLS_$(BR2_PACKAGE_GD_PNGTOGD2)\t+= pngtogd2\nGD_TOOLS_$(BR2_PACKAGE_GD_WEBPNG)\t+= webpng\n\ndefine GD_REMOVE_TOOLS\n\trm -f $(addprefix $(TARGET_DIR)/usr/bin/,$(GD_TOOLS_))\nendef\n\nGD_POST_INSTALL_TARGET_HOOKS += GD_REMOVE_TOOLS\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gdb/10.2/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch",
    "content": "From 64b8ab56118d2fea027adfb7ebbc01668b29528e Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Sat, 6 Aug 2016 17:32:50 -0700\nSubject: [PATCH] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC systems\n\nUpstream-Status: Pending\n\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Rebase on gdb 8.3]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gdb/nat/ppc-linux.h        | 6 ++++++\n gdbserver/linux-ppc-low.cc | 6 ++++++\n 2 files changed, 12 insertions(+)\n\ndiff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h\nindex d937a65b69c..1fd54b4a0e0 100644\n--- a/gdb/nat/ppc-linux.h\n+++ b/gdb/nat/ppc-linux.h\n@@ -18,7 +18,13 @@\n #ifndef NAT_PPC_LINUX_H\n #define NAT_PPC_LINUX_H\n \n+#if !defined(__GLIBC__)\n+# define pt_regs uapi_pt_regs\n+#endif\n #include <asm/ptrace.h>\n+#if !defined(__GLIBC__)\n+# undef pt_regs\n+#endif\n #include <asm/cputable.h>\n \n /* This sometimes isn't defined.  */\ndiff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc\nindex 337d555aee7..5d518f37268 100644\n--- a/gdbserver/linux-ppc-low.cc\n+++ b/gdbserver/linux-ppc-low.cc\n@@ -23,7 +23,13 @@\n #include \"elf/common.h\"\n #include <sys/uio.h>\n #include <elf.h>\n+#if !defined(__GLIBC__)\n+# define pt_regs uapi_pt_regs\n+#endif\n #include <asm/ptrace.h>\n+#if !defined(__GLIBC__)\n+# undef pt_regs\n+#endif\n \n #include \"arch/ppc-linux-common.h\"\n #include \"arch/ppc-linux-tdesc.h\"\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/gdb/10.2/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch",
    "content": "From d205f398e1e36f9673f50f368a3f29fd1dfaa794 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 3 Jun 2017 21:23:52 +0200\nSubject: [PATCH] sh/ptrace: Define pt_{dsp,}regs uapi_pt_{dsp,}regs on !GLIBC\n systems\n\nFixes a pt_{dsp,}regs redefinition when building with the musl C library\non SuperH.\n\nInspired by\nhttp://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,\nadapted for SuperH.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Rebase\ton gdb 8.0]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gdbserver/linux-sh-low.cc | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/gdbserver/linux-sh-low.cc b/gdbserver/linux-sh-low.cc\nindex a6d3fc60047..b83cce6b9fe 100644\n--- a/gdbserver/linux-sh-low.cc\n+++ b/gdbserver/linux-sh-low.cc\n@@ -76,7 +76,15 @@ extern const struct target_desc *tdesc_sh;\n #include <sys/reg.h>\n #endif\n \n+#if !defined(__GLIBC__)\n+# define pt_regs uapi_pt_regs\n+# define pt_dspregs uapi_pt_dspregs\n+#endif\n #include <asm/ptrace.h>\n+#if !defined(__GLIBC__)\n+# undef pt_regs\n+# undef pt_dspregs\n+#endif\n \n #define sh_num_regs 41\n \n-- \n2.29.2\n\n"
  },
  {
    "path": "package/gdb/10.2/0003-use-asm-sgidefs.h.patch",
    "content": "From 65acc8800dba7e10da882871d4648241805c47ce Mon Sep 17 00:00:00 2001\nFrom: Andre McCurdy <amccurdy@gmail.com>\nDate: Sat, 30 Apr 2016 15:29:06 -0700\nSubject: [PATCH] use <asm/sgidefs.h>\n\nBuild fix for MIPS with musl libc\n\nThe MIPS specific header <sgidefs.h> is provided by glibc and uclibc\nbut not by musl. Regardless of the libc, the kernel headers provide\n<asm/sgidefs.h> which provides the same definitions, so use that\ninstead.\n\nUpstream-Status: Pending\n\n[Vincent:\nTaken from: https://sourceware.org/bugzilla/show_bug.cgi?id=21070]\n\nSigned-off-by: Andre McCurdy <armccurdy@gmail.com>\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n---\n gdb/mips-linux-nat.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c\nindex 38ff461a35b..b6cf194b2bf 100644\n--- a/gdb/mips-linux-nat.c\n+++ b/gdb/mips-linux-nat.c\n@@ -31,7 +31,7 @@\n #include \"gdb_proc_service.h\"\n #include \"gregset.h\"\n \n-#include <sgidefs.h>\n+#include <asm/sgidefs.h>\n #include \"nat/gdb_ptrace.h\"\n #include <asm/ptrace.h>\n #include \"inf-ptrace.h\"\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/gdb/10.2/0004-gdbserver-fix-build-for-m68k.patch",
    "content": "From 90ebe548922538b854de52e8b687384f44360984 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 22 Jun 2018 22:40:26 +0200\nSubject: [PATCH] gdbserver: fix build for m68k\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nAs for strace [1], when <sys/reg.h> is included after <linux/ptrace.h>,\nthe build fails on m68k with the following diagnostics:\n\nIn file included from ./../nat/linux-ptrace.h:28:0,\n                 from linux-low.h:27,\n                 from linux-m68k-low.c:20:\n[...]/usr/include/sys/reg.h:26:3: error: expected identifier before numeric constant\n   PT_D1 = 0,\n   ^\n[...]usr/include/sys/reg.h:26:3: error: expected « } » before numeric constant\n[...]usr/include/sys/reg.h:26:3: error: expected unqualified-id before numeric constant\nIn file included from linux-m68k-low.c:27:0:\n[...]usr/include/sys/reg.h:99:1: error: expected declaration before « } » token\n };\n ^\n\nFix this by moving <sys/reg.h> on top of \"linux-low.h\".\n\n[1] https://github.com/strace/strace/commit/6ebf6c4f9e5ebca123a5b5f24afe67cf0473cf92\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gdbserver/linux-m68k-low.cc | 9 +++++----\n 1 file changed, 5 insertions(+), 4 deletions(-)\n\ndiff --git a/gdbserver/linux-m68k-low.cc b/gdbserver/linux-m68k-low.cc\nindex 838ba353b0b..36679682b9a 100644\n--- a/gdbserver/linux-m68k-low.cc\n+++ b/gdbserver/linux-m68k-low.cc\n@@ -17,6 +17,11 @@\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */\n \n #include \"server.h\"\n+\n+#ifdef HAVE_SYS_REG_H\n+#include <sys/reg.h>\n+#endif\n+\n #include \"linux-low.h\"\n \n /* Linux target op definitions for the m68k architecture.  */\n@@ -80,10 +85,6 @@ m68k_target::low_decr_pc_after_break ()\n void init_registers_m68k (void);\n extern const struct target_desc *tdesc_m68k;\n \n-#ifdef HAVE_SYS_REG_H\n-#include <sys/reg.h>\n-#endif\n-\n #define m68k_num_regs 29\n #define m68k_num_gregs 18\n \n-- \n2.29.2\n\n"
  },
  {
    "path": "package/gdb/10.2/0005-nat-fork-inferior-include-linux-ptrace.h.patch",
    "content": "From c8454711eca2e79437e17ed1e1e68b48b4c8d927 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Sun, 24 Jun 2018 23:33:55 +0200\nSubject: [PATCH] nat/fork-inferior: include linux-ptrace.h\n\nTo decide whether fork() or vfork() should be used, fork-inferior.c\nuses the following test:\n\n  #if !(defined(__UCLIBC__) && defined(HAS_NOMMU))\n\nHowever, HAS_NOMMU is never defined, because it gets defined in\nlinux-ptrace.h, which is not included by fork-inferior.c. Due to this,\ngdbserver fails to build on noMMU architectures. This commit fixes\nthat by simply including linux-ptrace.h.\n\nThis bug was introduced by commit\n2090129c36c7e582943b7d300968d19b46160d84 (\"Share fork_inferior et al\nwith gdbserver\"). Indeed, the same fork()/vfork() selection was done,\nbut in another file where linux-ptrace.h was included.\n\nFixes the following build issue:\n\n../nat/fork-inferior.c: In function 'pid_t fork_inferior(const char*, const string&, char**, void (*)(), void (*)(int), void (*)(), const char*, void (*)(const char*, char* const*, char* const*))':\n../nat/fork-inferior.c:376:11: error: 'fork' was not declared in this scope\n     pid = fork ();\n           ^~~~\n../nat/fork-inferior.c:376:11: note: suggested alternative: 'vfork'\n     pid = fork ();\n           ^~~~\n           vfork\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n[Romain: rebase on gdb 8.3]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gdb/nat/fork-inferior.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c\nindex 7ba0126871d..53e1ec72f09 100644\n--- a/gdb/nat/fork-inferior.c\n+++ b/gdb/nat/fork-inferior.c\n@@ -27,6 +27,7 @@\n #include \"gdbsupport/pathstuff.h\"\n #include \"gdbsupport/signals-state-save-restore.h\"\n #include \"gdbsupport/gdb_tilde_expand.h\"\n+#include \"linux-ptrace.h\"\n #include <vector>\n \n extern char **environ;\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/gdb/10.2/0006-Fix-getrandom-compile-for-uclibc-v1.0.35.patch",
    "content": "From bb894a9cfb1c3cf0e0a174c496ad848f589ee7da Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Sat, 6 Nov 2021 10:06:25 +0100\nSubject: [PATCH] Fix getrandom compile for uclibc < v1.0.35\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\n- fix getrandom compile for uclibc < v1.0.35, add missing stddef.h\n  include (fixed in uclibc since v1.0.35, see [1])\n\nFixes:\n\n  .../host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name ‘size_t’\n     27 | extern int getrandom(void *__buf, size_t count, unsigned int flags)\n        |                                   ^~~~~~\n\n[1] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=00972c02c2b6e0a95d5def4a71bdfb188e091782t\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n gnulib/import/getrandom.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/gnulib/import/getrandom.c b/gnulib/import/getrandom.c\nindex 030a78b..7b24350 100644\n--- a/gnulib/import/getrandom.c\n+++ b/gnulib/import/getrandom.c\n@@ -19,6 +19,7 @@\n \n #include <config.h>\n \n+#include <stddef.h>\n #include <sys/random.h>\n \n #include <errno.h>\n-- \n2.33.1\n\n"
  },
  {
    "path": "package/gdb/10.2/0007-fix-musl-build-on-riscv.patch",
    "content": "From c3fdbc0a24c83246f951ba79c7167547da979ae5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 10 Nov 2021 23:14:54 +0100\nSubject: [PATCH] fix musl build on riscv\n\nFix the following build failure raised with musl:\n\n../../gdbserver/linux-riscv-low.cc: In function 'void riscv_fill_fpregset(regcache*, void*)':\n../../gdbserver/linux-riscv-low.cc:140:19: error: 'ELF_NFPREG' was not declared in this scope; did you mean 'ELF_NGREG'?\n  140 |   for (i = 0; i < ELF_NFPREG - 1; i++, regbuf += flen)\n      |                   ^~~~~~~~~~\n      |                   ELF_NGREG\n\nmusl fixed the issue with\nhttps://git.musl-libc.org/cgit/musl/commit/?id=e5d2823631bbfebacf48e1a34ed28f28d7cb2570\n\nFixes:\n - http://autobuild.buildroot.org/results/16b19198980ce9c81a618b3f6e8dc9fe28247a28\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n gdb/nat/riscv-linux-tdesc.c  | 5 +++++\n gdbserver/linux-riscv-low.cc | 5 +++++\n 2 files changed, 10 insertions(+)\n\ndiff --git a/gdb/nat/riscv-linux-tdesc.c b/gdb/nat/riscv-linux-tdesc.c\nindex 837b1707e0f..667c013006a 100644\n--- a/gdb/nat/riscv-linux-tdesc.c\n+++ b/gdb/nat/riscv-linux-tdesc.c\n@@ -31,6 +31,11 @@\n # define NFPREG 33\n #endif\n \n+/* Work around musl breakage since version 1.1.24.  */\n+#ifndef ELF_NFPREG\n+# define ELF_NFPREG 33\n+#endif\n+\n /* See nat/riscv-linux-tdesc.h.  */\n \n struct riscv_gdbarch_features\ndiff --git a/gdbserver/linux-riscv-low.cc b/gdbserver/linux-riscv-low.cc\nindex 8bf97ea4aa3..1142dbc7b16 100644\n--- a/gdbserver/linux-riscv-low.cc\n+++ b/gdbserver/linux-riscv-low.cc\n@@ -30,6 +30,11 @@\n # define NFPREG 33\n #endif\n \n+/* Work around musl breakage since version 1.1.24.  */\n+#ifndef ELF_NFPREG\n+# define ELF_NFPREG 33\n+#endif\n+\n /* Linux target op definitions for the RISC-V architecture.  */\n \n class riscv_target : public linux_process_target\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/gdb/10.2/0008-gdbserver-Makefile.in-fix-NLS-build.patch",
    "content": "From c098500aee945ee7a3021649eb0a2655b004103c Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 18 Nov 2021 22:52:08 +0100\nSubject: [PATCH] gdbserver/Makefile.in: fix NLS build\n\nFix the following build failure raised since gdb version 10.1 and\nhttps://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=9a665d62266e75f0519f3a663784c458885b5c63:\n\n  CXXLD  libinproctrace.so\n/home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/i586-buildroot-linux-musl/9.3.0/../../../../i586-buildroot-linux-musl/bin/ld: gdbsupport/tdesc-ipa.o: in function `print_xml_feature::visit(tdesc_type_builtin const*)':\n/home/buildroot/autobuild/instance-2/output-1/build/gdb-10.2/build/gdbserver/../../gdbserver/../gdbsupport/tdesc.cc:310: undefined reference to `libintl_gettext'\n\nFixes:\n - http://autobuild.buildroot.org/results/faacc874fe9d32b74cb3d3dea988ef661cb0e3d0\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://sourceware.org/pipermail/gdb-patches/2021-November/183580.html]\n---\n gdbserver/Makefile.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/gdbserver/Makefile.in b/gdbserver/Makefile.in\nindex 71c3c4ad959..e69fbc4dae4 100644\n--- a/gdbserver/Makefile.in\n+++ b/gdbserver/Makefile.in\n@@ -383,7 +383,7 @@ $(IPA_LIB): $(sort $(IPA_OBJS)) ${CDEPS}\n\t$(SILENCE) rm -f $(IPA_LIB)\n \t$(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \\\n \t\t-Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \\\n-\t\t-o $(IPA_LIB) ${IPA_OBJS} -ldl -pthread\n+\t\t-o $(IPA_LIB) ${IPA_OBJS} -ldl -pthread $(INTL)\n \n # Put the proper machine-specific files first, so M-. on a machine\n # specific routine gets the one for the correct machine.\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/gdb/11.1/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch",
    "content": "From 64b8ab56118d2fea027adfb7ebbc01668b29528e Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Sat, 6 Aug 2016 17:32:50 -0700\nSubject: [PATCH] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC systems\n\nUpstream-Status: Pending\n\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Rebase on gdb 8.3]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gdb/nat/ppc-linux.h        | 6 ++++++\n gdbserver/linux-ppc-low.cc | 6 ++++++\n 2 files changed, 12 insertions(+)\n\ndiff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h\nindex d937a65b69c..1fd54b4a0e0 100644\n--- a/gdb/nat/ppc-linux.h\n+++ b/gdb/nat/ppc-linux.h\n@@ -18,7 +18,13 @@\n #ifndef NAT_PPC_LINUX_H\n #define NAT_PPC_LINUX_H\n \n+#if !defined(__GLIBC__)\n+# define pt_regs uapi_pt_regs\n+#endif\n #include <asm/ptrace.h>\n+#if !defined(__GLIBC__)\n+# undef pt_regs\n+#endif\n #include <asm/cputable.h>\n \n /* This sometimes isn't defined.  */\ndiff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc\nindex 337d555aee7..5d518f37268 100644\n--- a/gdbserver/linux-ppc-low.cc\n+++ b/gdbserver/linux-ppc-low.cc\n@@ -23,7 +23,13 @@\n #include \"elf/common.h\"\n #include <sys/uio.h>\n #include <elf.h>\n+#if !defined(__GLIBC__)\n+# define pt_regs uapi_pt_regs\n+#endif\n #include <asm/ptrace.h>\n+#if !defined(__GLIBC__)\n+# undef pt_regs\n+#endif\n \n #include \"arch/ppc-linux-common.h\"\n #include \"arch/ppc-linux-tdesc.h\"\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/gdb/11.1/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch",
    "content": "From d205f398e1e36f9673f50f368a3f29fd1dfaa794 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 3 Jun 2017 21:23:52 +0200\nSubject: [PATCH] sh/ptrace: Define pt_{dsp,}regs uapi_pt_{dsp,}regs on !GLIBC\n systems\n\nFixes a pt_{dsp,}regs redefinition when building with the musl C library\non SuperH.\n\nInspired by\nhttp://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,\nadapted for SuperH.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Rebase\ton gdb 8.0]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gdbserver/linux-sh-low.cc | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/gdbserver/linux-sh-low.cc b/gdbserver/linux-sh-low.cc\nindex a6d3fc60047..b83cce6b9fe 100644\n--- a/gdbserver/linux-sh-low.cc\n+++ b/gdbserver/linux-sh-low.cc\n@@ -76,7 +76,15 @@ extern const struct target_desc *tdesc_sh;\n #include <sys/reg.h>\n #endif\n \n+#if !defined(__GLIBC__)\n+# define pt_regs uapi_pt_regs\n+# define pt_dspregs uapi_pt_dspregs\n+#endif\n #include <asm/ptrace.h>\n+#if !defined(__GLIBC__)\n+# undef pt_regs\n+# undef pt_dspregs\n+#endif\n \n #define sh_num_regs 41\n \n-- \n2.29.2\n\n"
  },
  {
    "path": "package/gdb/11.1/0003-use-asm-sgidefs.h.patch",
    "content": "From 65acc8800dba7e10da882871d4648241805c47ce Mon Sep 17 00:00:00 2001\nFrom: Andre McCurdy <amccurdy@gmail.com>\nDate: Sat, 30 Apr 2016 15:29:06 -0700\nSubject: [PATCH] use <asm/sgidefs.h>\n\nBuild fix for MIPS with musl libc\n\nThe MIPS specific header <sgidefs.h> is provided by glibc and uclibc\nbut not by musl. Regardless of the libc, the kernel headers provide\n<asm/sgidefs.h> which provides the same definitions, so use that\ninstead.\n\nUpstream-Status: Pending\n\n[Vincent:\nTaken from: https://sourceware.org/bugzilla/show_bug.cgi?id=21070]\n\nSigned-off-by: Andre McCurdy <armccurdy@gmail.com>\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n---\n gdb/mips-linux-nat.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c\nindex 38ff461a35b..b6cf194b2bf 100644\n--- a/gdb/mips-linux-nat.c\n+++ b/gdb/mips-linux-nat.c\n@@ -31,7 +31,7 @@\n #include \"gdb_proc_service.h\"\n #include \"gregset.h\"\n \n-#include <sgidefs.h>\n+#include <asm/sgidefs.h>\n #include \"nat/gdb_ptrace.h\"\n #include <asm/ptrace.h>\n #include \"inf-ptrace.h\"\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/gdb/11.1/0004-gdbserver-fix-build-for-m68k.patch",
    "content": "From 90ebe548922538b854de52e8b687384f44360984 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 22 Jun 2018 22:40:26 +0200\nSubject: [PATCH] gdbserver: fix build for m68k\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nAs for strace [1], when <sys/reg.h> is included after <linux/ptrace.h>,\nthe build fails on m68k with the following diagnostics:\n\nIn file included from ./../nat/linux-ptrace.h:28:0,\n                 from linux-low.h:27,\n                 from linux-m68k-low.c:20:\n[...]/usr/include/sys/reg.h:26:3: error: expected identifier before numeric constant\n   PT_D1 = 0,\n   ^\n[...]usr/include/sys/reg.h:26:3: error: expected « } » before numeric constant\n[...]usr/include/sys/reg.h:26:3: error: expected unqualified-id before numeric constant\nIn file included from linux-m68k-low.c:27:0:\n[...]usr/include/sys/reg.h:99:1: error: expected declaration before « } » token\n };\n ^\n\nFix this by moving <sys/reg.h> on top of \"linux-low.h\".\n\n[1] https://github.com/strace/strace/commit/6ebf6c4f9e5ebca123a5b5f24afe67cf0473cf92\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gdbserver/linux-m68k-low.cc | 9 +++++----\n 1 file changed, 5 insertions(+), 4 deletions(-)\n\ndiff --git a/gdbserver/linux-m68k-low.cc b/gdbserver/linux-m68k-low.cc\nindex 838ba353b0b..36679682b9a 100644\n--- a/gdbserver/linux-m68k-low.cc\n+++ b/gdbserver/linux-m68k-low.cc\n@@ -17,6 +17,11 @@\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */\n \n #include \"server.h\"\n+\n+#ifdef HAVE_SYS_REG_H\n+#include <sys/reg.h>\n+#endif\n+\n #include \"linux-low.h\"\n \n /* Linux target op definitions for the m68k architecture.  */\n@@ -80,10 +85,6 @@ m68k_target::low_decr_pc_after_break ()\n void init_registers_m68k (void);\n extern const struct target_desc *tdesc_m68k;\n \n-#ifdef HAVE_SYS_REG_H\n-#include <sys/reg.h>\n-#endif\n-\n #define m68k_num_regs 29\n #define m68k_num_gregs 18\n \n-- \n2.29.2\n\n"
  },
  {
    "path": "package/gdb/11.1/0005-nat-fork-inferior-include-linux-ptrace.h.patch",
    "content": "From c8454711eca2e79437e17ed1e1e68b48b4c8d927 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Sun, 24 Jun 2018 23:33:55 +0200\nSubject: [PATCH] nat/fork-inferior: include linux-ptrace.h\n\nTo decide whether fork() or vfork() should be used, fork-inferior.c\nuses the following test:\n\n  #if !(defined(__UCLIBC__) && defined(HAS_NOMMU))\n\nHowever, HAS_NOMMU is never defined, because it gets defined in\nlinux-ptrace.h, which is not included by fork-inferior.c. Due to this,\ngdbserver fails to build on noMMU architectures. This commit fixes\nthat by simply including linux-ptrace.h.\n\nThis bug was introduced by commit\n2090129c36c7e582943b7d300968d19b46160d84 (\"Share fork_inferior et al\nwith gdbserver\"). Indeed, the same fork()/vfork() selection was done,\nbut in another file where linux-ptrace.h was included.\n\nFixes the following build issue:\n\n../nat/fork-inferior.c: In function 'pid_t fork_inferior(const char*, const string&, char**, void (*)(), void (*)(int), void (*)(), const char*, void (*)(const char*, char* const*, char* const*))':\n../nat/fork-inferior.c:376:11: error: 'fork' was not declared in this scope\n     pid = fork ();\n           ^~~~\n../nat/fork-inferior.c:376:11: note: suggested alternative: 'vfork'\n     pid = fork ();\n           ^~~~\n           vfork\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n[Romain: rebase on gdb 8.3]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gdb/nat/fork-inferior.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c\nindex 7ba0126871d..53e1ec72f09 100644\n--- a/gdb/nat/fork-inferior.c\n+++ b/gdb/nat/fork-inferior.c\n@@ -27,6 +27,7 @@\n #include \"gdbsupport/pathstuff.h\"\n #include \"gdbsupport/signals-state-save-restore.h\"\n #include \"gdbsupport/gdb_tilde_expand.h\"\n+#include \"linux-ptrace.h\"\n #include <vector>\n \n extern char **environ;\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/gdb/11.1/0006-sim-filter-out-SIGSTKSZ-PR-sim-28302.patch",
    "content": "From 7b3df9b8938357c2b0dcf2624e599a76fc4edc02 Mon Sep 17 00:00:00 2001\nFrom: Mike Frysinger <vapier@gentoo.org>\nDate: Sun, 3 Oct 2021 12:02:53 -0400\nSubject: [PATCH] sim: filter out SIGSTKSZ [PR sim/28302]\n\nWe map target signals to host signals so we can propagate signals\nbetween the host & simulated worlds.  That means we need to know\nthe symbolic names & values of all signals that might be sent.\n\nThe tools that generate that list use signal.h and include all\nsymbols that start with \"SIG\" so as to automatically include any\nnew symbols that the C library might add.  Unfortunately, this\nalso picks up \"SIGSTKSZ\" which is not actually a signal itself,\nbut a signal related setting -- it's the size of the stack when\na signal is handled.\n\nBy itself this doesn't super matter as we will never see a signal\nwith that same value (since the range of valid signals tend to be\nway less than 1024, and the size of the default signal stack will\nnever be that small).  But with recent glibc changes that make this\ninto a dynamic value instead of a compile-time constant, some users\nsee build failures when building the sim.\n\nAs suggested by Adam Sampson, update our scripts to ignore this\nsymbol to simplify everything and avoid the build failure.\n\nBug: https://sourceware.org/PR28302\n\n[Upstream: https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=39d53d04357606a15efd400147fa7369d71baf2c]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n sim/bfin/linux-targ-map.h | 5 +----\n sim/common/gennltvals.py  | 6 ++++--\n sim/common/nltvals.def    | 1 -\n 3 files changed, 5 insertions(+), 7 deletions(-)\n\ndiff --git a/sim/bfin/linux-targ-map.h b/sim/bfin/linux-targ-map.h\nindex e9c8c8f..0340ed5 100644\n--- a/sim/bfin/linux-targ-map.h\n+++ b/sim/bfin/linux-targ-map.h\n@@ -30,6 +30,7 @@ echo\n # XXX: nothing uses this ?\n echo '#include <signal.h>' | \\\n bfin-uclinux-gcc -E -dD -P - | \\\n+grep -v SIGSTKSZ | \\\n sed -r -n \\\n     -e '1istatic CB_TARGET_DEFS_MAP cb_linux_signal_map[] = {' \\\n     -e '$i\\ \\ { 0, -1, -1 }\\n};' \\\n@@ -1987,10 +1988,6 @@ static CB_TARGET_DEFS_MAP cb_linux_signal_map[] =\n #ifdef SIG_SETMASK\n # define TARGET_LINUX_SIG_SETMASK 2\n   { \"SIG_SETMASK\", SIG_SETMASK, TARGET_LINUX_SIG_SETMASK },\n-#endif\n-#ifdef SIGSTKSZ\n-# define TARGET_LINUX_SIGSTKSZ 8192\n-  { \"SIGSTKSZ\", SIGSTKSZ, TARGET_LINUX_SIGSTKSZ },\n #endif\n   { 0, -1, -1 }\n };\ndiff --git a/sim/common/gennltvals.py b/sim/common/gennltvals.py\nindex b3e558d..bd4d7e9 100755\n--- a/sim/common/gennltvals.py\n+++ b/sim/common/gennltvals.py\n@@ -67,6 +67,7 @@ FILE_HEADER = f\"\"\"\\\n def gentvals(output: TextIO, cpp: str, srctype: str, srcdir: Path,\n              headers: Iterable[str],\n              pattern: str,\n+             filter: str = r'^$',\n              target: str = None):\n     \"\"\"Extract constants from the specified files using a regular expression.\n \n@@ -94,12 +95,13 @@ def gentvals(output: TextIO, cpp: str, srctype: str, srcdir: Path,\n     srcfile = ''.join(f'#include <{x}>\\n' for x in headers)\n     syms = set()\n     define_pattern = re.compile(r'^#\\s*define\\s+(' + pattern + ')')\n+    filter_pattern = re.compile(filter)\n     for header in headers:\n         with open(srcdir / header, 'r', encoding='utf-8') as fp:\n             data = fp.read()\n         for line in data.splitlines():\n             m = define_pattern.match(line)\n-            if m:\n+            if m and not filter_pattern.search(line):\n                 syms.add(m.group(1))\n     for sym in sorted(syms):\n         srcfile += f'#ifdef {sym}\\nDEFVAL {{ \"{sym}\", {sym} }},\\n#endif\\n'\n@@ -129,7 +131,7 @@ def gen_common(output: TextIO, newlib: Path, cpp: str):\n              ('errno.h', 'sys/errno.h'), 'E[A-Z0-9]*')\n \n     gentvals(output, cpp, 'signal', newlib / 'newlib/libc/include',\n-             ('signal.h', 'sys/signal.h'), r'SIG[A-Z0-9]*')\n+             ('signal.h', 'sys/signal.h'), r'SIG[A-Z0-9]*', filter=r'SIGSTKSZ')\n \n     gentvals(output, cpp, 'open', newlib / 'newlib/libc/include',\n              ('fcntl.h', 'sys/fcntl.h', 'sys/_default_fcntl.h'), r'O_[A-Z0-9]*')\ndiff --git a/sim/common/nltvals.def b/sim/common/nltvals.def\nindex 8ae8839..8bc6ae5 100644\n--- a/sim/common/nltvals.def\n+++ b/sim/common/nltvals.def\n@@ -116,7 +116,6 @@\n  { \"SIGPROF\", 27 },\n  { \"SIGQUIT\", 3 },\n  { \"SIGSEGV\", 11 },\n- { \"SIGSTKSZ\", 8192 },\n  { \"SIGSTOP\", 17 },\n  { \"SIGSYS\", 12 },\n  { \"SIGTERM\", 15 },\n-- \n2.33.1\n\n"
  },
  {
    "path": "package/gdb/11.1/0007-Fix-getrandom-compile-for-uclibc-v1.0.35.patch",
    "content": "From 879008ef9a48aa1363671f5c1736b49f30c5a379 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Sat, 6 Nov 2021 10:06:25 +0100\nSubject: [PATCH] Fix getrandom compile for uclibc < v1.0.35\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\n- fix getrandom compile for uclibc < v1.0.35, add missing stddef.h\n  include (fixed in uclibc since v1.0.35, see [1])\n\nFixes:\n\n  .../host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name ‘size_t’\n     27 | extern int getrandom(void *__buf, size_t count, unsigned int flags)\n        |                                   ^~~~~~\n\n[1] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=00972c02c2b6e0a95d5def4a71bdfb188e091782t\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n gnulib/import/getrandom.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/gnulib/import/getrandom.c b/gnulib/import/getrandom.c\nindex 41212fb..0ad3f96 100644\n--- a/gnulib/import/getrandom.c\n+++ b/gnulib/import/getrandom.c\n@@ -19,6 +19,7 @@\n \n #include <config.h>\n \n+#include <stddef.h>\n #include <sys/random.h>\n \n #include <errno.h>\n-- \n2.33.1\n\n"
  },
  {
    "path": "package/gdb/11.1/0007-fix-musl-build-on-riscv.patch",
    "content": "From c3fdbc0a24c83246f951ba79c7167547da979ae5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 10 Nov 2021 23:14:54 +0100\nSubject: [PATCH] fix musl build on riscv\n\nFix the following build failure raised with musl:\n\n../../gdbserver/linux-riscv-low.cc: In function 'void riscv_fill_fpregset(regcache*, void*)':\n../../gdbserver/linux-riscv-low.cc:140:19: error: 'ELF_NFPREG' was not declared in this scope; did you mean 'ELF_NGREG'?\n  140 |   for (i = 0; i < ELF_NFPREG - 1; i++, regbuf += flen)\n      |                   ^~~~~~~~~~\n      |                   ELF_NGREG\n\nmusl fixed the issue with\nhttps://git.musl-libc.org/cgit/musl/commit/?id=e5d2823631bbfebacf48e1a34ed28f28d7cb2570\n\nFixes:\n - http://autobuild.buildroot.org/results/16b19198980ce9c81a618b3f6e8dc9fe28247a28\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n gdb/nat/riscv-linux-tdesc.c  | 5 +++++\n gdbserver/linux-riscv-low.cc | 5 +++++\n 2 files changed, 10 insertions(+)\n\ndiff --git a/gdb/nat/riscv-linux-tdesc.c b/gdb/nat/riscv-linux-tdesc.c\nindex 837b1707e0f..667c013006a 100644\n--- a/gdb/nat/riscv-linux-tdesc.c\n+++ b/gdb/nat/riscv-linux-tdesc.c\n@@ -31,6 +31,11 @@\n # define NFPREG 33\n #endif\n \n+/* Work around musl breakage since version 1.1.24.  */\n+#ifndef ELF_NFPREG\n+# define ELF_NFPREG 33\n+#endif\n+\n /* See nat/riscv-linux-tdesc.h.  */\n \n struct riscv_gdbarch_features\ndiff --git a/gdbserver/linux-riscv-low.cc b/gdbserver/linux-riscv-low.cc\nindex 8bf97ea4aa3..1142dbc7b16 100644\n--- a/gdbserver/linux-riscv-low.cc\n+++ b/gdbserver/linux-riscv-low.cc\n@@ -30,6 +30,11 @@\n # define NFPREG 33\n #endif\n \n+/* Work around musl breakage since version 1.1.24.  */\n+#ifndef ELF_NFPREG\n+# define ELF_NFPREG 33\n+#endif\n+\n /* Linux target op definitions for the RISC-V architecture.  */\n \n class riscv_target : public linux_process_target\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/gdb/11.1/0008-Fix-build-on-rhES5.patch",
    "content": "From db3aaeda1d6b156100d969edb8c0e674bca6b201 Mon Sep 17 00:00:00 2001\nFrom: Tom Tromey <tromey@adacore.com>\nDate: Wed, 12 May 2021 12:39:22 -0600\nSubject: [PATCH] Fix build on rhES5\n\nThe rhES5 build failed due to an upstream import a while back.  The\nbug here is that, while the 'personality' function exists,\nADDR_NO_RANDOMIZE is only defined in <linux/personality.h>, not\n<sys/personality.h>.\n\nHowever, <linux/personality.h> does not declare the 'personality'\nfunction, and <sys/personality.h> and <linux/personality.h> cannot\nboth be included.\n\nThis patch restores one of the removed configure checks and updates\nthe code to check it.\n\nWe had this as a local patch at AdaCore, because it seemed like there\nwas no interest upstream.  However, now it turns out that this fixes\nPR build/28555, so I'm sending it now.\n\n[Upstream: https://sourceware.org/git?p=binutils-gdb.git;h=0b03c6f03d51f441d999e0cee92f81af543d9373]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n gdb/config.in               |  4 ++++\n gdb/configure               | 16 ++++++++++++++++\n gdb/nat/linux-personality.c |  4 ++++\n gdbserver/config.in         |  4 ++++\n gdbserver/configure         | 16 ++++++++++++++++\n gdbsupport/common.m4        |  5 +++++\n gdbsupport/config.in        |  4 ++++\n gdbsupport/configure        | 16 ++++++++++++++++\n 8 files changed, 69 insertions(+)\n\ndiff --git a/gdb/config.in b/gdb/config.in\nindex 2c30504..776bee9 100644\n--- a/gdb/config.in\n+++ b/gdb/config.in\n@@ -96,6 +96,10 @@\n /* define if the compiler supports basic C++11 syntax */\n #undef HAVE_CXX11\n \n+/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if\n+   you don't. */\n+#undef HAVE_DECL_ADDR_NO_RANDOMIZE\n+\n /* Define to 1 if you have the declaration of `asprintf', and to 0 if you\n    don't. */\n #undef HAVE_DECL_ASPRINTF\ndiff --git a/gdb/configure b/gdb/configure\nindex 5d89635..27e3194 100755\n--- a/gdb/configure\n+++ b/gdb/configure\n@@ -13838,6 +13838,22 @@ fi\n done\n \n \n+  # This is needed for RHEL 5 and uclibc-ng < 1.0.39.\n+  # These did not define ADDR_NO_RANDOMIZE in sys/personality.h,\n+  # only in linux/personality.h.\n+  ac_fn_c_check_decl \"$LINENO\" \"ADDR_NO_RANDOMIZE\" \"ac_cv_have_decl_ADDR_NO_RANDOMIZE\" \"#include <sys/personality.h>\n+\"\n+if test \"x$ac_cv_have_decl_ADDR_NO_RANDOMIZE\" = xyes; then :\n+  ac_have_decl=1\n+else\n+  ac_have_decl=0\n+fi\n+\n+cat >>confdefs.h <<_ACEOF\n+#define HAVE_DECL_ADDR_NO_RANDOMIZE $ac_have_decl\n+_ACEOF\n+\n+\n   ac_fn_c_check_decl \"$LINENO\" \"strstr\" \"ac_cv_have_decl_strstr\" \"$ac_includes_default\"\n if test \"x$ac_cv_have_decl_strstr\" = xyes; then :\n   ac_have_decl=1\ndiff --git a/gdb/nat/linux-personality.c b/gdb/nat/linux-personality.c\nindex 9ce345b..27999fd 100644\n--- a/gdb/nat/linux-personality.c\n+++ b/gdb/nat/linux-personality.c\n@@ -22,6 +22,10 @@\n \n #include <sys/personality.h>\n \n+# if !HAVE_DECL_ADDR_NO_RANDOMIZE\n+#  define ADDR_NO_RANDOMIZE 0x0040000\n+# endif /* ! HAVE_DECL_ADDR_NO_RANDOMIZE */\n+\n /* See comment on nat/linux-personality.h.  */\n \n maybe_disable_address_space_randomization::\ndiff --git a/gdbserver/config.in b/gdbserver/config.in\nindex cf06c56..c9258b3 100644\n--- a/gdbserver/config.in\n+++ b/gdbserver/config.in\n@@ -31,6 +31,10 @@\n /* define if the compiler supports basic C++11 syntax */\n #undef HAVE_CXX11\n \n+/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if\n+   you don't. */\n+#undef HAVE_DECL_ADDR_NO_RANDOMIZE\n+\n /* Define to 1 if you have the declaration of `asprintf', and to 0 if you\n    don't. */\n #undef HAVE_DECL_ASPRINTF\ndiff --git a/gdbserver/configure b/gdbserver/configure\nindex b227167..d399d71 100755\n--- a/gdbserver/configure\n+++ b/gdbserver/configure\n@@ -7131,6 +7131,22 @@ fi\n done\n \n \n+  # This is needed for RHEL 5 and uclibc-ng < 1.0.39.\n+  # These did not define ADDR_NO_RANDOMIZE in sys/personality.h,\n+  # only in linux/personality.h.\n+  ac_fn_c_check_decl \"$LINENO\" \"ADDR_NO_RANDOMIZE\" \"ac_cv_have_decl_ADDR_NO_RANDOMIZE\" \"#include <sys/personality.h>\n+\"\n+if test \"x$ac_cv_have_decl_ADDR_NO_RANDOMIZE\" = xyes; then :\n+  ac_have_decl=1\n+else\n+  ac_have_decl=0\n+fi\n+\n+cat >>confdefs.h <<_ACEOF\n+#define HAVE_DECL_ADDR_NO_RANDOMIZE $ac_have_decl\n+_ACEOF\n+\n+\n   ac_fn_c_check_decl \"$LINENO\" \"strstr\" \"ac_cv_have_decl_strstr\" \"$ac_includes_default\"\n if test \"x$ac_cv_have_decl_strstr\" = xyes; then :\n   ac_have_decl=1\ndiff --git a/gdbsupport/common.m4 b/gdbsupport/common.m4\nindex 901c454..56a355e 100644\n--- a/gdbsupport/common.m4\n+++ b/gdbsupport/common.m4\n@@ -55,6 +55,11 @@ AC_DEFUN([GDB_AC_COMMON], [\n \t\t  ptrace64 sbrk setns sigaltstack sigprocmask \\\n \t\t  setpgid setpgrp getrusage getauxval sigtimedwait])\n \n+  # This is needed for RHEL 5 and uclibc-ng < 1.0.39.\n+  # These did not define ADDR_NO_RANDOMIZE in sys/personality.h,\n+  # only in linux/personality.h.\n+  AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])\n+\n   AC_CHECK_DECLS([strstr])\n \n   # ----------------------- #\ndiff --git a/gdbsupport/config.in b/gdbsupport/config.in\nindex f46e261..6945a62 100644\n--- a/gdbsupport/config.in\n+++ b/gdbsupport/config.in\n@@ -28,6 +28,10 @@\n /* define if the compiler supports basic C++11 syntax */\n #undef HAVE_CXX11\n \n+/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if\n+   you don't. */\n+#undef HAVE_DECL_ADDR_NO_RANDOMIZE\n+\n /* Define to 1 if you have the declaration of `asprintf', and to 0 if you\n    don't. */\n #undef HAVE_DECL_ASPRINTF\ndiff --git a/gdbsupport/configure b/gdbsupport/configure\nindex a9dd02c..243a03f 100755\n--- a/gdbsupport/configure\n+++ b/gdbsupport/configure\n@@ -8144,6 +8144,22 @@ fi\n done\n \n \n+  # This is needed for RHEL 5 and uclibc-ng < 1.0.39.\n+  # These did not define ADDR_NO_RANDOMIZE in sys/personality.h,\n+  # only in linux/personality.h.\n+  ac_fn_c_check_decl \"$LINENO\" \"ADDR_NO_RANDOMIZE\" \"ac_cv_have_decl_ADDR_NO_RANDOMIZE\" \"#include <sys/personality.h>\n+\"\n+if test \"x$ac_cv_have_decl_ADDR_NO_RANDOMIZE\" = xyes; then :\n+  ac_have_decl=1\n+else\n+  ac_have_decl=0\n+fi\n+\n+cat >>confdefs.h <<_ACEOF\n+#define HAVE_DECL_ADDR_NO_RANDOMIZE $ac_have_decl\n+_ACEOF\n+\n+\n   ac_fn_c_check_decl \"$LINENO\" \"strstr\" \"ac_cv_have_decl_strstr\" \"$ac_includes_default\"\n if test \"x$ac_cv_have_decl_strstr\" = xyes; then :\n   ac_have_decl=1\n-- \n2.33.1\n\n"
  },
  {
    "path": "package/gdb/11.1/0009-gdbserver-Makefile.in-fix-NLS-build.patch",
    "content": "From c098500aee945ee7a3021649eb0a2655b004103c Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 18 Nov 2021 22:52:08 +0100\nSubject: [PATCH] gdbserver/Makefile.in: fix NLS build\n\nFix the following build failure raised since gdb version 10.1 and\nhttps://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=9a665d62266e75f0519f3a663784c458885b5c63:\n\n  CXXLD  libinproctrace.so\n/home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/i586-buildroot-linux-musl/9.3.0/../../../../i586-buildroot-linux-musl/bin/ld: gdbsupport/tdesc-ipa.o: in function `print_xml_feature::visit(tdesc_type_builtin const*)':\n/home/buildroot/autobuild/instance-2/output-1/build/gdb-10.2/build/gdbserver/../../gdbserver/../gdbsupport/tdesc.cc:310: undefined reference to `libintl_gettext'\n\nFixes:\n - http://autobuild.buildroot.org/results/faacc874fe9d32b74cb3d3dea988ef661cb0e3d0\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://sourceware.org/pipermail/gdb-patches/2021-November/183580.html]\n---\n gdbserver/Makefile.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/gdbserver/Makefile.in b/gdbserver/Makefile.in\nindex 71c3c4ad959..e69fbc4dae4 100644\n--- a/gdbserver/Makefile.in\n+++ b/gdbserver/Makefile.in\n@@ -383,7 +383,7 @@ $(IPA_LIB): $(sort $(IPA_OBJS)) ${CDEPS}\n \t$(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \\\n \t\t-Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \\\n \t\t $(CXXFLAGS) \\\n-\t\t-o $(IPA_LIB) ${IPA_OBJS} $(LIBIBERTY_FOR_SHLIB) -ldl -pthread\n+\t\t-o $(IPA_LIB) ${IPA_OBJS} $(LIBIBERTY_FOR_SHLIB) -ldl -pthread $(INTL)\n \n # Put the proper machine-specific files first, so M-. on a machine\n # specific routine gets the one for the correct machine.\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/gdb/4ecb98fbc2f94dbe01b69384afbc515107de73df/0001-Fix-Python3.9-related-runtime-problems.patch",
    "content": "From 8342feee01e4e8d38affcf35e47ad900567f42e0 Mon Sep 17 00:00:00 2001\nFrom: Kevin Buettner <kevinb@redhat.com>\nDate: Wed, 27 May 2020 20:05:40 -0700\nSubject: [PATCH] Fix Python3.9 related runtime problems\n\nPython3.9b1 is now available on Rawhide.  GDB w/ Python 3.9 support\ncan be built using the configure switch -with-python=/usr/bin/python3.9.\n\nAttempting to run gdb/Python3.9 segfaults on startup:\n\n    #0  0x00007ffff7b0582c in PyEval_ReleaseLock () from /lib64/libpython3.9.so.1.0\n    #1  0x000000000069ccbf in do_start_initialization ()\n\tat worktree-test1/gdb/python/python.c:1789\n    #2  _initialize_python ()\n\tat worktree-test1/gdb/python/python.c:1877\n    #3  0x00000000007afb0a in initialize_all_files () at init.c:237\n    ...\n\nConsulting the the documentation...\n\nhttps://docs.python.org/3/c-api/init.html\n\n...we find that PyEval_ReleaseLock() has been deprecated since version\n3.2.  It recommends using PyEval_SaveThread or PyEval_ReleaseThread()\ninstead.  In do_start_initialization, in gdb/python/python.c, we\ncan replace the calls to PyThreadState_Swap() and PyEval_ReleaseLock()\nwith a single call to PyEval_SaveThread.   (Thanks to Keith Seitz\nfor working this out.)\n\nWith that in place, GDB gets a little bit further.  It still dies\non startup, but the backtrace is different:\n\n    #0  0x00007ffff7b04306 in PyOS_InterruptOccurred ()\n       from /lib64/libpython3.9.so.1.0\n    #1  0x0000000000576e86 in check_quit_flag ()\n\tat worktree-test1/gdb/extension.c:776\n    #2  0x0000000000576f8a in set_active_ext_lang (now_active=now_active@entry=0x983c00 <extension_language_python>)\n\tat worktree-test1/gdb/extension.c:705\n    #3  0x000000000069d399 in gdbpy_enter::gdbpy_enter (this=0x7fffffffd2d0,\n\tgdbarch=0x0, language=0x0)\n\tat worktree-test1/gdb/python/python.c:211\n    #4  0x0000000000686e00 in python_new_inferior (inf=0xddeb10)\n\tat worktree-test1/gdb/python/py-inferior.c:251\n    #5  0x00000000005d9fb9 in std::function<void (inferior*)>::operator()(inferior*) const (__args#0=<optimized out>, this=0xccad20)\n\tat /usr/include/c++/10/bits/std_function.h:617\n    #6  gdb::observers::observable<inferior*>::notify (args#0=0xddeb10,\n\tthis=<optimized out>)\n\tat worktree-test1/gdb/../gdbsupport/observable.h:106\n    #7  add_inferior_silent (pid=0)\n\tat worktree-test1/gdb/inferior.c:113\n    #8  0x00000000005dbcb8 in initialize_inferiors ()\n\tat worktree-test1/gdb/inferior.c:947\n    ...\n\nWe checked with some Python Developers and were told that we should\nacquire the GIL prior to calling any Python C API function.  We\ndefinitely don't have the GIL for calls of PyOS_InterruptOccurred().\n\nI moved class_gdbpy_gil earlier in the file and use it in\ngdbpy_check_quit_flag() to acquire (and automatically release) the\nGIL.\n\nWith those changes in place, I was able to run to a GDB prompt.  But,\nwhen trying to quit, it segfaulted again due to due to some other\nproblems with gdbpy_check_quit_flag():\n\n    Thread 1 \"gdb\" received signal SIGSEGV, Segmentation fault.\n    0x00007ffff7bbab0c in new_threadstate () from /lib64/libpython3.9.so.1.0\n    (top-gdb) bt 8\n    #0  0x00007ffff7bbab0c in new_threadstate () from /lib64/libpython3.9.so.1.0\n    #1  0x00007ffff7afa5ea in PyGILState_Ensure.cold ()\n       from /lib64/libpython3.9.so.1.0\n    #2  0x000000000069b58c in gdbpy_gil::gdbpy_gil (this=<synthetic pointer>)\n\tat worktree-test1/gdb/python/python.c:278\n    #3  gdbpy_check_quit_flag (extlang=<optimized out>)\n\tat worktree-test1/gdb/python/python.c:278\n    #4  0x0000000000576e96 in check_quit_flag ()\n\tat worktree-test1/gdb/extension.c:776\n    #5  0x000000000057700c in restore_active_ext_lang (previous=0xe9c050)\n\tat worktree-test1/gdb/extension.c:729\n    #6  0x000000000088913a in do_my_cleanups (\n\tpmy_chain=0xc31870 <final_cleanup_chain>,\n\told_chain=0xae5720 <sentinel_cleanup>)\n\tat worktree-test1/gdbsupport/cleanups.cc:131\n    #7  do_final_cleanups ()\n\tat worktree-test1/gdbsupport/cleanups.cc:143\n\nIn this case, we're trying to call a Python C API function after\nPy_Finalize() has been called from finalize_python().  I made\nfinalize_python set gdb_python_initialized to false and then cause\ncheck_quit_flag() to return early when it's false.\n\nWith these changes in place, GDB seems to be working again with\nPython3.9b1.  I think it likely that there are other problems lurking.\nI wouldn't be surprised to find that there are other calls into Python\nwhere we don't first make sure that we have the GIL.  Further changes\nmay well be needed.\n\nI see no regressions testing on Rawhide using a GDB built with the\ndefault Python version (3.8.3) versus one built using Python 3.9b1.\n\nI've also tested on Fedora 28, 29, 30, 31, and 32 (all x86_64) using\nthe default (though updated) system installed versions of Python on\nthose OSes.  This means that I've tested against Python versions\n2.7.15, 2.7.17, 2.7.18, 3.7.7, 3.8.2, and 3.8.3.  In each case GDB\nstill builds without problem and shows no regressions after applying\nthis patch.\n\ngdb/ChangeLog:\n\n2020-MM-DD  Kevin Buettner  <kevinb@redhat.com>\n\t    Keith Seitz  <keiths@redhat.com>\n\n\t* python/python.c (do_start_initialization): For Python 3.9 and\n\tlater, call PyEval_SaveThread instead of PyEval_ReleaseLock.\n\t(class gdbpy_gil): Move to earlier in file.\n\t(finalize_python): Set gdb_python_initialized.\n\t(gdbpy_check_quit_flag): Acquire GIL via gdbpy_gil.  Return early\n\twhen not initialized.\n\n[import into Buildroot, removing ChangeLog change to avoid conflict]\nSigned-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\n---\n gdb/python/python.c | 32 ++++++++++++++++++++++++++++++--\n 1 file changed, 30 insertions(+), 2 deletions(-)\n\ndiff --git a/gdb/python/python.c b/gdb/python/python.c\nindex b00b70be85b..0eee3f0397c 100644\n--- a/gdb/python/python.c\n+++ b/gdb/python/python.c\n@@ -268,6 +268,30 @@ ensure_python_env (struct gdbarch *gdbarch,\n   return make_cleanup (restore_python_env, env);\n }\n \n+/* A helper class to save and restore the GIL, but without touching\n+   the other globals that are handled by gdbpy_enter.  */\n+\n+class gdbpy_gil\n+{\n+public:\n+\n+  gdbpy_gil ()\n+    : m_state (PyGILState_Ensure ())\n+  {\n+  }\n+\n+  ~gdbpy_gil ()\n+  {\n+    PyGILState_Release (m_state);\n+  }\n+\n+  DISABLE_COPY_AND_ASSIGN (gdbpy_gil);\n+\n+private:\n+\n+  PyGILState_STATE m_state;\n+};\n+\n /* Set the quit flag.  */\n \n static void\n@@ -281,6 +305,10 @@ gdbpy_set_quit_flag (const struct extension_language_defn *extlang)\n static int\n gdbpy_check_quit_flag (const struct extension_language_defn *extlang)\n {\n+  if (!gdb_python_initialized)\n+    return 0;\n+\n+  gdbpy_gil gil;\n   return PyOS_InterruptOccurred ();\n }\n \n@@ -1620,6 +1648,7 @@ finalize_python (void *ignore)\n \n   Py_Finalize ();\n \n+  gdb_python_initialized = false;\n   restore_active_ext_lang (previous_active);\n }\n #endif\n@@ -1854,8 +1883,7 @@ message == an error message without a stack will be printed.\"),\n     goto fail;\n \n   /* Release the GIL while gdb runs.  */\n-  PyThreadState_Swap (NULL);\n-  PyEval_ReleaseLock ();\n+  PyEval_SaveThread ();\n \n   make_final_cleanup (finalize_python, NULL);\n \n-- \n2.31.1\n\n"
  },
  {
    "path": "package/gdb/9.2/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch",
    "content": "From 72ee19f54fd35595465b2e35eccf1f3d65fe21c6 Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Sat, 6 Aug 2016 17:32:50 -0700\nSubject: [PATCH] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC systems\n\nUpstream-Status: Pending\n\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Rebase on gdb 8.3]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gdb/gdbserver/linux-ppc-low.c | 6 ++++++\n gdb/nat/ppc-linux.h           | 6 ++++++\n 2 files changed, 12 insertions(+)\n\ndiff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c\nindex 1b695e53fe9..1978347c02c 100644\n--- a/gdb/gdbserver/linux-ppc-low.c\n+++ b/gdb/gdbserver/linux-ppc-low.c\n@@ -23,7 +23,13 @@\n #include \"elf/common.h\"\n #include <sys/uio.h>\n #include <elf.h>\n+#if !defined(__GLIBC__)\n+# define pt_regs uapi_pt_regs\n+#endif\n #include <asm/ptrace.h>\n+#if !defined(__GLIBC__)\n+# undef pt_regs\n+#endif\n \n #include \"arch/ppc-linux-common.h\"\n #include \"arch/ppc-linux-tdesc.h\"\ndiff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h\nindex f1561b3b357..40399361c09 100644\n--- a/gdb/nat/ppc-linux.h\n+++ b/gdb/nat/ppc-linux.h\n@@ -18,7 +18,13 @@\n #ifndef NAT_PPC_LINUX_H\n #define NAT_PPC_LINUX_H\n \n+#if !defined(__GLIBC__)\n+# define pt_regs uapi_pt_regs\n+#endif\n #include <asm/ptrace.h>\n+#if !defined(__GLIBC__)\n+# undef pt_regs\n+#endif\n #include <asm/cputable.h>\n \n /* This sometimes isn't defined.  */\n-- \n2.21.0\n\n"
  },
  {
    "path": "package/gdb/9.2/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch",
    "content": "From ef630288fdc2d4d22651702672f9d5c9cd767e5b Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 3 Jun 2017 21:23:52 +0200\nSubject: [PATCH] sh/ptrace: Define pt_{dsp,}regs uapi_pt_{dsp,}regs on !GLIBC\n systems\n\nFixes a pt_{dsp,}regs redefinition when building with the musl C library\non SuperH.\n\nInspired by\nhttp://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,\nadapted for SuperH.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Rebase\ton gdb 8.0]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gdb/gdbserver/linux-sh-low.c | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/gdb/gdbserver/linux-sh-low.c b/gdb/gdbserver/linux-sh-low.c\nindex 0953721a190..c331c1382f7 100644\n--- a/gdb/gdbserver/linux-sh-low.c\n+++ b/gdb/gdbserver/linux-sh-low.c\n@@ -27,7 +27,15 @@ extern const struct target_desc *tdesc_sh;\n #include <sys/reg.h>\n #endif\n \n+#if !defined(__GLIBC__)\n+# define pt_regs uapi_pt_regs\n+# define pt_dspregs uapi_pt_dspregs\n+#endif\n #include <asm/ptrace.h>\n+#if !defined(__GLIBC__)\n+# undef pt_regs\n+# undef pt_dspregs\n+#endif\n \n #define sh_num_regs 41\n \n-- \n2.21.0\n\n"
  },
  {
    "path": "package/gdb/9.2/0003-use-asm-sgidefs.h.patch",
    "content": "From 19a0f664809b6858e69aa98188eb739415de044c Mon Sep 17 00:00:00 2001\nFrom: Andre McCurdy <amccurdy@gmail.com>\nDate: Sat, 30 Apr 2016 15:29:06 -0700\nSubject: [PATCH] use <asm/sgidefs.h>\n\nBuild fix for MIPS with musl libc\n\nThe MIPS specific header <sgidefs.h> is provided by glibc and uclibc\nbut not by musl. Regardless of the libc, the kernel headers provide\n<asm/sgidefs.h> which provides the same definitions, so use that\ninstead.\n\nUpstream-Status: Pending\n\n[Vincent:\nTaken from: https://sourceware.org/bugzilla/show_bug.cgi?id=21070]\n\nSigned-off-by: Andre McCurdy <armccurdy@gmail.com>\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n---\n gdb/mips-linux-nat.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c\nindex e68ed1e4da9..bc42aa59685 100644\n--- a/gdb/mips-linux-nat.c\n+++ b/gdb/mips-linux-nat.c\n@@ -31,7 +31,7 @@\n #include \"gdb_proc_service.h\"\n #include \"gregset.h\"\n \n-#include <sgidefs.h>\n+#include <asm/sgidefs.h>\n #include \"nat/gdb_ptrace.h\"\n #include <asm/ptrace.h>\n #include \"inf-ptrace.h\"\n-- \n2.21.0\n\n"
  },
  {
    "path": "package/gdb/9.2/0004-gdbserver-fix-build-for-m68k.patch",
    "content": "From 448e481aab86c823d908530038e20a14213db0a2 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 22 Jun 2018 22:40:26 +0200\nSubject: [PATCH] gdbserver: fix build for m68k\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nAs for strace [1], when <sys/reg.h> is included after <linux/ptrace.h>,\nthe build fails on m68k with the following diagnostics:\n\nIn file included from ./../nat/linux-ptrace.h:28:0,\n                 from linux-low.h:27,\n                 from linux-m68k-low.c:20:\n[...]/usr/include/sys/reg.h:26:3: error: expected identifier before numeric constant\n   PT_D1 = 0,\n   ^\n[...]usr/include/sys/reg.h:26:3: error: expected « } » before numeric constant\n[...]usr/include/sys/reg.h:26:3: error: expected unqualified-id before numeric constant\nIn file included from linux-m68k-low.c:27:0:\n[...]usr/include/sys/reg.h:99:1: error: expected declaration before « } » token\n };\n ^\n\nFix this by moving <sys/reg.h> on top of \"linux-low.h\".\n\n[1] https://github.com/strace/strace/commit/6ebf6c4f9e5ebca123a5b5f24afe67cf0473cf92\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gdb/gdbserver/linux-m68k-low.c | 9 +++++----\n 1 file changed, 5 insertions(+), 4 deletions(-)\n\ndiff --git a/gdb/gdbserver/linux-m68k-low.c b/gdb/gdbserver/linux-m68k-low.c\nindex 16f639d02fc..969d9973737 100644\n--- a/gdb/gdbserver/linux-m68k-low.c\n+++ b/gdb/gdbserver/linux-m68k-low.c\n@@ -17,16 +17,17 @@\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */\n \n #include \"server.h\"\n+\n+#ifdef HAVE_SYS_REG_H\n+#include <sys/reg.h>\n+#endif\n+\n #include \"linux-low.h\"\n \n /* Defined in auto-generated file reg-m68k.c.  */\n void init_registers_m68k (void);\n extern const struct target_desc *tdesc_m68k;\n \n-#ifdef HAVE_SYS_REG_H\n-#include <sys/reg.h>\n-#endif\n-\n #define m68k_num_regs 29\n #define m68k_num_gregs 18\n \n-- \n2.21.0\n\n"
  },
  {
    "path": "package/gdb/9.2/0005-nat-fork-inferior-include-linux-ptrace.h.patch",
    "content": "From d84ecfa3a8c8fbade89229ac66c09f2a97ab00fb Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Sun, 24 Jun 2018 23:33:55 +0200\nSubject: [PATCH] nat/fork-inferior: include linux-ptrace.h\n\nTo decide whether fork() or vfork() should be used, fork-inferior.c\nuses the following test:\n\n  #if !(defined(__UCLIBC__) && defined(HAS_NOMMU))\n\nHowever, HAS_NOMMU is never defined, because it gets defined in\nlinux-ptrace.h, which is not included by fork-inferior.c. Due to this,\ngdbserver fails to build on noMMU architectures. This commit fixes\nthat by simply including linux-ptrace.h.\n\nThis bug was introduced by commit\n2090129c36c7e582943b7d300968d19b46160d84 (\"Share fork_inferior et al\nwith gdbserver\"). Indeed, the same fork()/vfork() selection was done,\nbut in another file where linux-ptrace.h was included.\n\nFixes the following build issue:\n\n../nat/fork-inferior.c: In function 'pid_t fork_inferior(const char*, const string&, char**, void (*)(), void (*)(int), void (*)(), const char*, void (*)(const char*, char* const*, char* const*))':\n../nat/fork-inferior.c:376:11: error: 'fork' was not declared in this scope\n     pid = fork ();\n           ^~~~\n../nat/fork-inferior.c:376:11: note: suggested alternative: 'vfork'\n     pid = fork ();\n           ^~~~\n           vfork\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n[Romain: rebase on gdb 8.3]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n gdb/nat/fork-inferior.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/gdb/nat/fork-inferior.c b/gdb/nat/fork-inferior.c\nindex fe9360a5039..626fe7c1fbf 100644\n--- a/gdb/nat/fork-inferior.c\n+++ b/gdb/nat/fork-inferior.c\n@@ -27,6 +27,7 @@\n #include \"gdbsupport/pathstuff.h\"\n #include \"gdbsupport/signals-state-save-restore.h\"\n #include \"gdbsupport/gdb_tilde_expand.h\"\n+#include \"linux-ptrace.h\"\n #include <vector>\n \n extern char **environ;\n-- \n2.21.0\n\n"
  },
  {
    "path": "package/gdb/9.2/0006-sim-ppc-Fix-linker-error-with-fno-common.patch",
    "content": "From ad8464f799a4c96c7ab8bdfec3f95846cf54f9b0 Mon Sep 17 00:00:00 2001\nFrom: Sebastian Huber <sebastian.huber@embedded-brains.de>\nDate: Wed, 1 Jul 2020 19:29:55 +0200\nSubject: [PATCH] sim/ppc: Fix linker error with -fno-common\n\nGCC 10 enables -fno-common by default.  This resulted in a multiple\ndefinition linker error since global variables were declared and defined\nin a header file:\n\n  ld: ld-insn.o:sim/ppc/ld-insn.h:221: multiple definition of\n  `max_model_fields_len'; igen.o:sim/ppc/ld-insn.h:221: first defined here\n\nsim/ppc\n\n\t* ld-insn.h (last_model, last_model_data, last_model_function,\n\tlast_model_internal, last_model_macro, last_model_static):\n\tDelete.\n\t(max_model_fields_len, model_data, model_functions,\n\tmodel_internal, model_macros, model_static, models): Declare, but do not\n\tdefine.\n\t* ld-insn.c (last_model, last_model_data, last_model_function,\n\tlast_model_internal, last_model_macro, last_model_static,\n\tmax_model_fields_len, model_data, model_functions,\n\tmodel_internal, model_macros, model_static, models): Define.\n\nSigned-off-by: Maxim Kochetkov <fido_max@inbox.ru>\nFetch from: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=ad8464f799a4c96c7ab8bdfec3f95846cf54f9b0\n---\n sim/ppc/ld-insn.c | 18 ++++++++++++++++++\n sim/ppc/ld-insn.h | 24 +++++++-----------------\n 2 files changed, 25 insertions(+), 17 deletions(-)\n\ndiff --git a/sim/ppc/ld-insn.c b/sim/ppc/ld-insn.c\nindex e39131ca133..585071a861f 100644\n--- a/sim/ppc/ld-insn.c\n+++ b/sim/ppc/ld-insn.c\n@@ -28,6 +28,24 @@\n \n #include \"igen.h\"\n \n+static model *last_model;\n+\n+static insn *last_model_macro;\n+static insn *last_model_function;\n+static insn *last_model_internal;\n+static insn *last_model_static;\n+static insn *last_model_data;\n+\n+model *models;\n+\n+insn *model_macros;\n+insn *model_functions;\n+insn *model_internal;\n+insn *model_static;\n+insn *model_data;\n+\n+int max_model_fields_len;\n+\n static void\n update_depth(insn_table *entry,\n \t     lf *file,\ndiff --git a/sim/ppc/ld-insn.h b/sim/ppc/ld-insn.h\nindex 88318ffa2b3..52baeaa2d84 100644\n--- a/sim/ppc/ld-insn.h\n+++ b/sim/ppc/ld-insn.h\n@@ -200,25 +200,15 @@ extern insn_table *load_insn_table\n  table_include *includes,\n  cache_table **cache_rules);\n \n-model *models;\n-model *last_model;\n+extern model *models;\n \n-insn *model_macros;\n-insn *last_model_macro;\n+extern insn *model_macros;\n+extern insn *model_functions;\n+extern insn *model_internal;\n+extern insn *model_static;\n+extern insn *model_data;\n \n-insn *model_functions;\n-insn *last_model_function;\n-\n-insn *model_internal;\n-insn *last_model_internal;\n-\n-insn *model_static;\n-insn *last_model_static;\n-\n-insn *model_data;\n-insn *last_model_data;\n-\n-int max_model_fields_len;\n+extern int max_model_fields_len;\n \n extern void insn_table_insert_insn\n (insn_table *table,\n-- \n2.18.4\n\n"
  },
  {
    "path": "package/gdb/9.2/0007-Fix-Python3.9-related-runtime-problems.patch",
    "content": "From c47bae859a5af0d95224d90000df0e529f7c5aa0 Mon Sep 17 00:00:00 2001\nFrom: Kevin Buettner <kevinb@redhat.com>\nDate: Wed, 27 May 2020 20:05:40 -0700\nSubject: [PATCH] Fix Python3.9 related runtime problems\n\nPython3.9b1 is now available on Rawhide.  GDB w/ Python 3.9 support\ncan be built using the configure switch -with-python=/usr/bin/python3.9.\n\nAttempting to run gdb/Python3.9 segfaults on startup:\n\n    #0  0x00007ffff7b0582c in PyEval_ReleaseLock () from /lib64/libpython3.9.so.1.0\n    #1  0x000000000069ccbf in do_start_initialization ()\n\tat worktree-test1/gdb/python/python.c:1789\n    #2  _initialize_python ()\n\tat worktree-test1/gdb/python/python.c:1877\n    #3  0x00000000007afb0a in initialize_all_files () at init.c:237\n    ...\n\nConsulting the the documentation...\n\nhttps://docs.python.org/3/c-api/init.html\n\n...we find that PyEval_ReleaseLock() has been deprecated since version\n3.2.  It recommends using PyEval_SaveThread or PyEval_ReleaseThread()\ninstead.  In do_start_initialization, in gdb/python/python.c, we\ncan replace the calls to PyThreadState_Swap() and PyEval_ReleaseLock()\nwith a single call to PyEval_SaveThread.   (Thanks to Keith Seitz\nfor working this out.)\n\nWith that in place, GDB gets a little bit further.  It still dies\non startup, but the backtrace is different:\n\n    #0  0x00007ffff7b04306 in PyOS_InterruptOccurred ()\n       from /lib64/libpython3.9.so.1.0\n    #1  0x0000000000576e86 in check_quit_flag ()\n\tat worktree-test1/gdb/extension.c:776\n    #2  0x0000000000576f8a in set_active_ext_lang (now_active=now_active@entry=0x983c00 <extension_language_python>)\n\tat worktree-test1/gdb/extension.c:705\n    #3  0x000000000069d399 in gdbpy_enter::gdbpy_enter (this=0x7fffffffd2d0,\n\tgdbarch=0x0, language=0x0)\n\tat worktree-test1/gdb/python/python.c:211\n    #4  0x0000000000686e00 in python_new_inferior (inf=0xddeb10)\n\tat worktree-test1/gdb/python/py-inferior.c:251\n    #5  0x00000000005d9fb9 in std::function<void (inferior*)>::operator()(inferior*) const (__args#0=<optimized out>, this=0xccad20)\n\tat /usr/include/c++/10/bits/std_function.h:617\n    #6  gdb::observers::observable<inferior*>::notify (args#0=0xddeb10,\n\tthis=<optimized out>)\n\tat worktree-test1/gdb/../gdbsupport/observable.h:106\n    #7  add_inferior_silent (pid=0)\n\tat worktree-test1/gdb/inferior.c:113\n    #8  0x00000000005dbcb8 in initialize_inferiors ()\n\tat worktree-test1/gdb/inferior.c:947\n    ...\n\nWe checked with some Python Developers and were told that we should\nacquire the GIL prior to calling any Python C API function.  We\ndefinitely don't have the GIL for calls of PyOS_InterruptOccurred().\n\nI moved class_gdbpy_gil earlier in the file and use it in\ngdbpy_check_quit_flag() to acquire (and automatically release) the\nGIL.\n\nWith those changes in place, I was able to run to a GDB prompt.  But,\nwhen trying to quit, it segfaulted again due to due to some other\nproblems with gdbpy_check_quit_flag():\n\n    Thread 1 \"gdb\" received signal SIGSEGV, Segmentation fault.\n    0x00007ffff7bbab0c in new_threadstate () from /lib64/libpython3.9.so.1.0\n    (top-gdb) bt 8\n    #0  0x00007ffff7bbab0c in new_threadstate () from /lib64/libpython3.9.so.1.0\n    #1  0x00007ffff7afa5ea in PyGILState_Ensure.cold ()\n       from /lib64/libpython3.9.so.1.0\n    #2  0x000000000069b58c in gdbpy_gil::gdbpy_gil (this=<synthetic pointer>)\n\tat worktree-test1/gdb/python/python.c:278\n    #3  gdbpy_check_quit_flag (extlang=<optimized out>)\n\tat worktree-test1/gdb/python/python.c:278\n    #4  0x0000000000576e96 in check_quit_flag ()\n\tat worktree-test1/gdb/extension.c:776\n    #5  0x000000000057700c in restore_active_ext_lang (previous=0xe9c050)\n\tat worktree-test1/gdb/extension.c:729\n    #6  0x000000000088913a in do_my_cleanups (\n\tpmy_chain=0xc31870 <final_cleanup_chain>,\n\told_chain=0xae5720 <sentinel_cleanup>)\n\tat worktree-test1/gdbsupport/cleanups.cc:131\n    #7  do_final_cleanups ()\n\tat worktree-test1/gdbsupport/cleanups.cc:143\n\nIn this case, we're trying to call a Python C API function after\nPy_Finalize() has been called from finalize_python().  I made\nfinalize_python set gdb_python_initialized to false and then cause\ncheck_quit_flag() to return early when it's false.\n\nWith these changes in place, GDB seems to be working again with\nPython3.9b1.  I think it likely that there are other problems lurking.\nI wouldn't be surprised to find that there are other calls into Python\nwhere we don't first make sure that we have the GIL.  Further changes\nmay well be needed.\n\nI see no regressions testing on Rawhide using a GDB built with the\ndefault Python version (3.8.3) versus one built using Python 3.9b1.\n\nI've also tested on Fedora 28, 29, 30, 31, and 32 (all x86_64) using\nthe default (though updated) system installed versions of Python on\nthose OSes.  This means that I've tested against Python versions\n2.7.15, 2.7.17, 2.7.18, 3.7.7, 3.8.2, and 3.8.3.  In each case GDB\nstill builds without problem and shows no regressions after applying\nthis patch.\n\ngdb/ChangeLog:\n\n2020-MM-DD  Kevin Buettner  <kevinb@redhat.com>\n\t    Keith Seitz  <keiths@redhat.com>\n\n\t* python/python.c (do_start_initialization): For Python 3.9 and\n\tlater, call PyEval_SaveThread instead of PyEval_ReleaseLock.\n\t(class gdbpy_gil): Move to earlier in file.\n\t(finalize_python): Set gdb_python_initialized.\n\t(gdbpy_check_quit_flag): Acquire GIL via gdbpy_gil.  Return early\n\twhen not initialized.\n\n\n[import into Buildroot, removing ChangeLog change to avoid conflict]\nSigned-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\n\n---\n gdb/ChangeLog       | 10 ++++++++\n gdb/python/python.c | 56 ++++++++++++++++++++++++---------------------\n 2 files changed, 40 insertions(+), 26 deletions(-)\n\ndiff --git a/gdb/python/python.c b/gdb/python/python.c\nindex 67f362b852d..4bdd2201abc 100644\n--- a/gdb/python/python.c\n+++ b/gdb/python/python.c\n@@ -238,6 +238,30 @@ gdbpy_enter::~gdbpy_enter ()\n   PyGILState_Release (m_state);\n }\n \n+/* A helper class to save and restore the GIL, but without touching\n+   the other globals that are handled by gdbpy_enter.  */\n+\n+class gdbpy_gil\n+{\n+public:\n+\n+  gdbpy_gil ()\n+    : m_state (PyGILState_Ensure ())\n+  {\n+  }\n+\n+  ~gdbpy_gil ()\n+  {\n+    PyGILState_Release (m_state);\n+  }\n+\n+  DISABLE_COPY_AND_ASSIGN (gdbpy_gil);\n+\n+private:\n+\n+  PyGILState_STATE m_state;\n+};\n+\n /* Set the quit flag.  */\n \n static void\n@@ -251,6 +275,10 @@ gdbpy_set_quit_flag (const struct extension_language_defn *extlang)\n static int\n gdbpy_check_quit_flag (const struct extension_language_defn *extlang)\n {\n+  if (!gdb_python_initialized)\n+    return 0;\n+\n+  gdbpy_gil gil;\n   return PyOS_InterruptOccurred ();\n }\n \n@@ -943,30 +971,6 @@ gdbpy_source_script (const struct extension_language_defn *extlang,\n \n /* Posting and handling events.  */\n \n-/* A helper class to save and restore the GIL, but without touching\n-   the other globals that are handled by gdbpy_enter.  */\n-\n-class gdbpy_gil\n-{\n-public:\n-\n-  gdbpy_gil ()\n-    : m_state (PyGILState_Ensure ())\n-  {\n-  }\n-\n-  ~gdbpy_gil ()\n-  {\n-    PyGILState_Release (m_state);\n-  }\n-\n-  DISABLE_COPY_AND_ASSIGN (gdbpy_gil);\n-\n-private:\n-\n-  PyGILState_STATE m_state;\n-};\n-\n /* A single event.  */\n struct gdbpy_event\n {\n@@ -1616,6 +1620,7 @@ finalize_python (void *ignore)\n \n   Py_Finalize ();\n \n+  gdb_python_initialized = false;\n   restore_active_ext_lang (previous_active);\n }\n \n@@ -1785,8 +1790,7 @@ do_start_initialization ()\n     return false;\n \n   /* Release the GIL while gdb runs.  */\n-  PyThreadState_Swap (NULL);\n-  PyEval_ReleaseLock ();\n+  PyEval_SaveThread ();\n \n   make_final_cleanup (finalize_python, NULL);\n \n-- \n2.26.3\n\n"
  },
  {
    "path": "package/gdb/9.2/0007-gdb-configure.tgt-build-gdbserver-with-m68k-and-ucli.patch",
    "content": "From 808601f075fe3dd8ca101e31c9121a4e87f0bfc7 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 6 May 2021 07:45:00 +0200\nSubject: [PATCH] gdb/configure.tgt: build gdbserver with m68k and\n uclibc\n\nAllow to build gdbserver with m68k and uclibc:\n\nchecking whether gdbserver is supported on this host... no\nconfigure: error: Automatic gdbserver build is not supported for this configuration\n\nFixes:\n - http://autobuild.buildroot.org/results/f4d6d9d8418c0da48a3db4ad5a82e19bd16eae34\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n gdb/configure.tgt | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/gdb/configure.tgt b/gdb/configure.tgt\nindex caa42be1c01..8666bc5d0bf 100644\n--- a/gdb/configure.tgt\n+++ b/gdb/configure.tgt\n@@ -372,12 +372,12 @@ m68hc11*-*-*|m6811*-*-*)\n \tgdb_sim=../sim/m68hc11/libsim.a\n \t;;\n \n-m68*-*-aout* | m68*-*-coff* | m68*-*-elf* | m68*-*-rtems* | m68*-*-uclinux* | \\\n+m68*-*-aout* | m68*-*-coff* | m68*-*-elf* | m68*-*-rtems* | \\\n fido-*-elf*)\n \t# Target: Motorola m68k embedded\n \tgdb_target_obs=\"m68k-tdep.o\"\n \t;;\n-m68*-*-linux*)\n+m68*-*-*linux*)\n \t# Target: Motorola m68k with a.out and ELF\n \tgdb_target_obs=\"m68k-tdep.o m68k-linux-tdep.o solib-svr4.o \\\n \t\t\tlinux-tdep.o glibc-tdep.o symfile-mem.o\"\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/gdb/Config.in",
    "content": "config BR2_PACKAGE_GDB_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT)\n\tdepends on !BR2_microblaze\n\tdepends on !BR2_or1k\n\tdepends on !BR2_nds32\n\ncomment \"gdb/gdbserver needs a toolchain w/ threads, threads debug\"\n\tdepends on BR2_PACKAGE_GDB_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\ncomment \"gdb/gdbserver >= 8.x needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\nconfig BR2_PACKAGE_GDB\n\tbool \"gdb\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tdepends on BR2_PACKAGE_GDB_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\t# When the external toolchain gdbserver is copied to the\n\t# target, we don't allow building a separate gdbserver. The\n\t# one from the external toolchain should be used.\n\tselect BR2_PACKAGE_GDB_SERVER if \\\n\t\t(!BR2_PACKAGE_GDB_DEBUGGER && !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY)\n\thelp\n\t  GDB, the GNU Project debugger, allows you to see what is\n\t  going on `inside' another program while it executes -- or\n\t  what another program was doing at the moment it crashed.\n\n\t  This option allows to build gdbserver and/or the gdb\n\t  debugger for the target.\n\n\t  For embedded development, the most common solution is to\n\t  build only 'gdbserver' for the target, and use a cross-gdb\n\t  on the host. See BR2_PACKAGE_HOST_GDB in the Toolchain menu\n\t  to enable one. Notice that external toolchains often provide\n\t  their own pre-built cross-gdb and gdbserver binaries.\n\n\t  http://www.gnu.org/software/gdb/\n\nif BR2_PACKAGE_GDB\n\nconfig BR2_PACKAGE_GDB_SERVER\n\tbool \"gdbserver\"\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY\n\thelp\n\t  Build the gdbserver stub to run on the target.\n\t  A full gdb is needed to debug the progam.\n\nconfig BR2_PACKAGE_GDB_DEBUGGER\n\tbool \"full debugger\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on !BR2_sh\n\tdepends on !BR2_csky\n\tselect BR2_PACKAGE_GMP if BR2_GDB_VERSION_11\n\tselect BR2_PACKAGE_NCURSES\n\ncomment \"full gdb on target needs a toolchain w/ wchar\"\n\tdepends on !BR2_sh\n\tdepends on !BR2_USE_WCHAR\n\nif BR2_PACKAGE_GDB_DEBUGGER\n\nconfig BR2_PACKAGE_GDB_TUI\n\tbool \"TUI support\"\n\thelp\n\t  This option enables terminal user interface (TUI) for gdb\n\n\t  \"The GDB Text User Interface (TUI) is a terminal interface\n\t  which uses the curses library to show the source file, the\n\t  assembly output, the program registers and GDB commands in\n\t  separate text windows.\"\n\n\t  https://sourceware.org/gdb/current/onlinedocs/gdb/TUI.html\n\nconfig BR2_PACKAGE_GDB_PYTHON\n\tbool \"Python support\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\thelp\n\t  This option enables Python support in the target gdb.\n\nendif\n\nendif\n"
  },
  {
    "path": "package/gdb/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT)\n\tdepends on !BR2_microblaze\n\tdepends on !BR2_or1k\n\tdepends on !BR2_nds32\n\ncomment \"Host GDB Options\"\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY\n\tdepends on BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS\n\nconfig BR2_PACKAGE_HOST_GDB\n\tbool \"Build cross gdb for the host\"\n\t# When the external toolchain gdbserver is used, we shouldn't\n\t# allow to build a cross-gdb, as the one of the external\n\t# toolchain should be used.\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY\n\tdepends on BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS\n\thelp\n\t  Build a cross gdb that runs on the host machine and debugs\n\t  programs running on the target. It requires 'gdbserver'\n\t  installed on the target, see BR2_PACKAGE_GDB_SERVER to\n\t  enable it.\n\nif BR2_PACKAGE_HOST_GDB\n\nconfig BR2_PACKAGE_HOST_GDB_TUI\n\tbool \"TUI support\"\n\thelp\n\t  This option enables terminal user interface (TUI) for gdb\n\nchoice\n\tprompt \"Python support\"\n\tdefault BR2_PACKAGE_HOST_GDB_NOPYTHON\n\thelp\n\t  Select the version of Python you wish to use\n\nconfig BR2_PACKAGE_HOST_GDB_NOPYTHON\n\tbool \"None\"\n\thelp\n\t  This option disables Python support in the cross gdb.\n\nconfig BR2_PACKAGE_HOST_GDB_PYTHON\n\tbool \"Python 2\"\n\thelp\n\t  This option enables the Python 2 support in the cross gdb.\n\nconfig BR2_PACKAGE_HOST_GDB_PYTHON3\n\tbool \"Python 3\"\n\thelp\n\t  This option enables the Python 3 support in the cross gdb.\n\nendchoice\n\nconfig BR2_PACKAGE_HOST_GDB_SIM\n\tbool \"Simulator support\"\n\tdepends on !BR2_arc\n\thelp\n\t  This option enables the simulator support in the cross gdb.\n\nchoice\n\tprompt \"GDB debugger Version\"\n\tdefault BR2_GDB_VERSION_10\n\tdepends on !BR2_arc\n\tdepends on !BR2_csky\n\thelp\n\t  Select the version of gdb you wish to use.\n\nconfig BR2_GDB_VERSION_9_2\n\tbool \"gdb 9.2.x\"\n\t# gdbserver support missing\n\tdepends on !BR2_riscv\n\nconfig BR2_GDB_VERSION_10\n\tbool \"gdb 10.x\"\n\nconfig BR2_GDB_VERSION_11\n\tbool \"gdb 11.x\"\n\nendchoice\n\nendif\n\n# If cross-gdb is not enabled, the latest stable version is chosen.\nconfig BR2_GDB_VERSION\n\tstring\n\tdefault \"arc-2020.09-release-gdb\" if BR2_arc\n\tdefault \"4ecb98fbc2f94dbe01b69384afbc515107de73df\" if BR2_csky\n\tdefault \"9.2\"      if BR2_GDB_VERSION_9_2\n\tdefault \"10.2\"\t   if BR2_GDB_VERSION_10 || !BR2_PACKAGE_HOST_GDB\n\tdefault \"11.1\"     if BR2_GDB_VERSION_11\n\tdepends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB\n\n# recent gdb versions (>= 10) have gdbserver moved at the top-level,\n# which requires a different build logic.\nconfig BR2_PACKAGE_GDB_TOPLEVEL\n\tbool\n\tdefault y if BR2_arc\n\tdefault y if BR2_GDB_VERSION_10\n\tdefault y if BR2_GDB_VERSION_11\n\tdefault y if !BR2_PACKAGE_HOST_GDB\n\tdepends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB\n"
  },
  {
    "path": "package/gdb/gdb-python-config",
    "content": "#!/bin/sh\n\n# This shell script is used to fake Python. Gdb wants to be passed a\n# Python interpreter, to run its own python-config.py program, which\n# uses sysconfig. However, when cross-compiling, this doesn't work\n# well since we would have to use the host Python, whose sysconfig\n# module would return host values.\n#\n# As recommended at\n# https://sourceware.org/gdb/wiki/CrossCompilingWithPythonSupport,\n# this wrapper shell script can be used as a replacement. It ignores\n# the python-config.py script passed as first arguments, and\n# \"emulates\" its behavior.\n\nif [ $# -ne 2 ] ; then\n    echo \"Bad # args.\" >&2\n    exit 1\nfi\n\nif [ -z \"${BR_PYTHON_VERSION}\" ]; then\n    echo \"Environment variable BR_PYTHON_VERSION not set.\" >&2\n    exit 1\nfi\n\n# The first argument is the path to python-config.py, ignore it.\n\ncase \"$2\" in\n    --includes)\n        echo \"-I${STAGING_DIR}/usr/include/python${BR_PYTHON_VERSION}\"\n        ;;\n    --ldflags)\n        echo \"-lpthread -ldl -lutil -lm -lpython${BR_PYTHON_VERSION}\"\n        ;;\n    --exec-prefix)\n        echo \"/usr\"\n        ;;\n    *)\n        echo \"Bad arg $2.\" >&2\n        exit 1\n        ;;\nesac\n"
  },
  {
    "path": "package/gdb/gdb.hash",
    "content": "# From ftp://gcc.gnu.org/pub/gdb/releases/sha512.sum\nsha512  73635f00f343117aa5e2436f1e1597099e2bfb31ef7bb162b273fa1ea282c3fa9b0f52762e70bfc7ad0334addb8d159e9ac7cbe5998ca4f755ea8cf90714d274  gdb-9.2.tar.xz\nsha512  3653762ac008e065c37cd641653184c9ff7ce51ee2222ade1122bec9d6cc64dffd4fb74888ef11ac1942064a08910e96b7865112ad37f4602eb0a16bed074caa  gdb-10.2.tar.xz\nsha512  c40bf970e2f7c2107b29c5aa6a7150daa709d75ddadb73ac20742419d4637d158e3063a4c6ff6e47fae8ca8e1d36253973f85ea15445d004be6d5d7a2dd9bd46  gdb-11.1.tar.xz\n\n# Locally calculated (fetched from Github)\nsha512  5a2acf2fd33ab2ff589e1037ca40abda54328997dcff26b2b49b874bd3be980be5a63342962254f3c3bda98e32ce7a33af704d37353352833dee193135600458  gdb-arc-2020.09-release-gdb.tar.gz\n\n# Locally calculated (fetched from https://github.com/c-sky/binutils-gdb)\nsha512  c421e1f3c0d6cfb3c04544573c0c4b0075c8d8e3d563c6c234fcc1e4c2167ab203d1e57aec3b58abd348dc46f8cf9b47b753d3a43dba3ea970c9c9a6bd78c07b  gdb-4ecb98fbc2f94dbe01b69384afbc515107de73df.tar.gz\n"
  },
  {
    "path": "package/gdb/gdb.mk",
    "content": "################################################################################\n#\n# gdb\n#\n################################################################################\n\nGDB_VERSION = $(call qstrip,$(BR2_GDB_VERSION))\nGDB_SITE = $(BR2_GNU_MIRROR)/gdb\nGDB_SOURCE = gdb-$(GDB_VERSION).tar.xz\n\nifeq ($(BR2_arc),y)\nGDB_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(GDB_VERSION))\nGDB_SOURCE = gdb-$(GDB_VERSION).tar.gz\nGDB_FROM_GIT = y\nendif\n\nifeq ($(BR2_csky),y)\nGDB_SITE = $(call github,c-sky,binutils-gdb,$(GDB_VERSION))\nGDB_SOURCE = gdb-$(GDB_VERSION).tar.gz\nGDB_FROM_GIT = y\nendif\n\nGDB_LICENSE = GPL-2.0+, LGPL-2.0+, GPL-3.0+, LGPL-3.0+\nGDB_LICENSE_FILES = COPYING COPYING.LIB COPYING3 COPYING3.LIB\nGDB_CPE_ID_VENDOR = gnu\n\n# On gdb < 10, if you want to build only gdbserver, you need to\n# configure only gdb/gdbserver.\nifeq ($(BR2_PACKAGE_GDB_DEBUGGER)$(BR2_PACKAGE_GDB_TOPLEVEL),)\nGDB_SUBDIR = gdb/gdbserver\n\n# When we want to build the full gdb, or for very recent versions of\n# gdb with gdbserver at the top-level, out of tree build is mandatory,\n# so we create a 'build' subdirectory in the gdb sources, and build\n# from there.\nelse\nGDB_SUBDIR = build\ndefine GDB_CONFIGURE_SYMLINK\n\tmkdir -p $(@D)/$(GDB_SUBDIR)\n\tln -sf ../configure $(@D)/$(GDB_SUBDIR)/configure\nendef\nGDB_PRE_CONFIGURE_HOOKS += GDB_CONFIGURE_SYMLINK\nendif\n\n# For the host variant, we really want to build with XML support,\n# which is needed to read XML descriptions of target architectures. We\n# also need ncurses.\n# As for libiberty, gdb may use a system-installed one if present, so\n# we must ensure ours is installed first.\nHOST_GDB_DEPENDENCIES = host-expat host-libiberty host-ncurses\n\n# Disable building documentation\nGDB_MAKE_OPTS += MAKEINFO=true\nGDB_INSTALL_TARGET_OPTS += MAKEINFO=true DESTDIR=$(TARGET_DIR) install\nHOST_GDB_MAKE_OPTS += MAKEINFO=true\nHOST_GDB_INSTALL_OPTS += MAKEINFO=true install\n\n# Apply the Xtensa specific patches\nifneq ($(ARCH_XTENSA_OVERLAY_FILE),)\ndefine GDB_XTENSA_OVERLAY_EXTRACT\n\t$(call arch-xtensa-overlay-extract,$(@D),gdb)\nendef\nGDB_POST_EXTRACT_HOOKS += GDB_XTENSA_OVERLAY_EXTRACT\nGDB_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL)\nHOST_GDB_POST_EXTRACT_HOOKS += GDB_XTENSA_OVERLAY_EXTRACT\nHOST_GDB_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL)\nendif\n\nifeq ($(GDB_FROM_GIT),y)\nGDB_DEPENDENCIES += host-flex host-bison\nHOST_GDB_DEPENDENCIES += host-flex host-bison\nendif\n\n# When BR2_GDB_VERSION_11=y, we're going to build gdb 11.x for the\n# host (if enabled), so we add the necessary gmp dependency.\nifeq ($(BR2_GDB_VERSION_11),y)\nHOST_GDB_DEPENDENCIES += host-gmp\nendif\n\n# When BR2_GDB_VERSION_11=y (because it's enabled for the host) and\n# we're building the full gdb for the target, we need gmp as a\n# dependency. For now the default gdb version in Buildroot doesn't\n# require gmp.\nifeq ($(BR2_GDB_VERSION_11)$(BR2_PACKAGE_GDB_DEBUGGER),yy)\nGDB_DEPENDENCIES += gmp\nendif\n\n# When gdb sources are fetched from the binutils-gdb repository, they\n# also contain the binutils sources, but binutils shouldn't be built,\n# so we disable it (additionally the option --disable-install-libbfd\n# prevents the un-wanted installation of libobcodes.so and libbfd.so).\nGDB_DISABLE_BINUTILS_CONF_OPTS = \\\n\t--disable-binutils \\\n\t--disable-install-libbfd \\\n\t--disable-ld \\\n\t--disable-gas \\\n\t--disable-gprof\n\nGDB_CONF_ENV = \\\n\tac_cv_type_uintptr_t=yes \\\n\tgt_cv_func_gettext_libintl=yes \\\n\tac_cv_func_dcgettext=yes \\\n\tgdb_cv_func_sigsetjmp=yes \\\n\tbash_cv_func_strcoll_broken=no \\\n\tbash_cv_must_reinstall_sighandlers=no \\\n\tbash_cv_func_sigsetjmp=present \\\n\tbash_cv_have_mbstate_t=yes \\\n\tgdb_cv_func_sigsetjmp=yes\n\n# Starting with gdb 7.11, the bundled gnulib tries to use\n# rpl_gettimeofday (gettimeofday replacement) due to the code being\n# unable to determine if the replacement function should be used or\n# not when cross-compiling with uClibc or musl as C libraries. So use\n# gl_cv_func_gettimeofday_clobber=no to not use rpl_gettimeofday,\n# assuming musl and uClibc have a properly working gettimeofday\n# implementation. It needs to be passed to GDB_CONF_ENV to build\n# gdbserver only but also to GDB_MAKE_ENV, because otherwise it does\n# not get passed to the configure script of nested packages while\n# building gdbserver with full debugger.\nGDB_CONF_ENV += gl_cv_func_gettimeofday_clobber=no\nGDB_MAKE_ENV += gl_cv_func_gettimeofday_clobber=no\n\n# Similarly, starting with gdb 8.1, the bundled gnulib tries to use\n# rpl_strerror. Let's tell gnulib the C library implementation works\n# well enough.\nGDB_CONF_ENV += \\\n\tgl_cv_func_working_strerror=yes \\\n\tgl_cv_func_strerror_0_works=yes\nGDB_MAKE_ENV += \\\n\tgl_cv_func_working_strerror=yes \\\n\tgl_cv_func_strerror_0_works=yes\n\n# Starting with glibc 2.25, the proc_service.h header has been copied\n# from gdb to glibc so other tools can use it. However, that makes it\n# necessary to make sure that declaration of prfpregset_t declaration\n# is consistent between gdb and glibc. In gdb, however, there is a\n# workaround for a broken prfpregset_t declaration in glibc 2.3 which\n# uses AC_TRY_RUN to detect if it's needed, which doesn't work in\n# cross-compilation. So pass the cache option to configure.\n# It needs to be passed to GDB_CONF_ENV to build gdbserver only but\n# also to GDB_MAKE_ENV, because otherwise it does not get passed to the\n# configure script of nested packages while building gdbserver with full\n# debugger.\nGDB_CONF_ENV += gdb_cv_prfpregset_t_broken=no\nGDB_MAKE_ENV += gdb_cv_prfpregset_t_broken=no\n\n# The shared only build is not supported by gdb, so enable static build for\n# build-in libraries with --enable-static.\nGDB_CONF_OPTS = \\\n\t--without-uiout \\\n\t--disable-gdbtk \\\n\t--without-x \\\n\t--disable-sim \\\n\t$(GDB_DISABLE_BINUTILS_CONF_OPTS) \\\n\t--without-included-gettext \\\n\t--disable-werror \\\n\t--enable-static \\\n\t--without-mpfr\n\nifeq ($(BR2_PACKAGE_GDB_DEBUGGER),y)\nGDB_CONF_OPTS += \\\n\t--enable-gdb \\\n\t--with-curses\nGDB_DEPENDENCIES += ncurses \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv)\nelse\nGDB_CONF_OPTS += \\\n\t--disable-gdb \\\n\t--without-curses\nendif\n\nifeq ($(BR2_PACKAGE_GDB_SERVER),y)\nGDB_CONF_OPTS += --enable-gdbserver\nGDB_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES)\nelse\nGDB_CONF_OPTS += --disable-gdbserver\nendif\n\n# When gdb is built as C++ application for ARC it segfaults at runtime\n# So we pass --disable-build-with-cxx config option to force gdb not to\n# be built as C++ app.\nifeq ($(BR2_arc),y)\nGDB_CONF_OPTS += --disable-build-with-cxx\nendif\n\n# gdb 7.12+ by default builds with a C++ compiler, which doesn't work\n# when we don't have C++ support in the toolchain\nifneq ($(BR2_INSTALL_LIBSTDCPP),y)\nGDB_CONF_OPTS += --disable-build-with-cxx\nendif\n\n# inprocess-agent can't be built statically\nifeq ($(BR2_STATIC_LIBS),y)\nGDB_CONF_OPTS += --disable-inprocess-agent\nendif\n\nifeq ($(BR2_PACKAGE_GDB_TUI),y)\nGDB_CONF_OPTS += --enable-tui\nelse\nGDB_CONF_OPTS += --disable-tui\nendif\n\nifeq ($(BR2_PACKAGE_GDB_PYTHON),y)\nifeq ($(BR2_PACKAGE_PYTHON3),y)\n# CONF_ENV: for top-level configure; MAKE_ENV: for sub-projects' configure.\nGDB_CONF_ENV += BR_PYTHON_VERSION=$(PYTHON3_VERSION_MAJOR)\nGDB_MAKE_ENV += BR_PYTHON_VERSION=$(PYTHON3_VERSION_MAJOR)\nGDB_DEPENDENCIES += python3\nelse\n# CONF_ENV: for top-level configure; MAKE_ENV: for sub-projects' configure.\nGDB_CONF_ENV += BR_PYTHON_VERSION=$(PYTHON_VERSION_MAJOR)\nGDB_MAKE_ENV += BR_PYTHON_VERSION=$(PYTHON_VERSION_MAJOR)\nGDB_DEPENDENCIES += python\nendif\nGDB_CONF_OPTS += --with-python=$(TOPDIR)/package/gdb/gdb-python-config\nelse\nGDB_CONF_OPTS += --without-python\nendif\n\nifeq ($(BR2_PACKAGE_EXPAT),y)\nGDB_CONF_OPTS += --with-expat\nGDB_CONF_OPTS += --with-libexpat-prefix=$(STAGING_DIR)/usr\nGDB_DEPENDENCIES += expat\nelse\nGDB_CONF_OPTS += --without-expat\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nGDB_CONF_OPTS += --with-lzma\nGDB_CONF_OPTS += --with-liblzma-prefix=$(STAGING_DIR)/usr\nGDB_DEPENDENCIES += xz\nelse\nGDB_CONF_OPTS += --without-lzma\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nGDB_CONF_OPTS += --with-zlib\nGDB_DEPENDENCIES += zlib\nelse\nGDB_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_GDB_PYTHON),)\n# This removes some unneeded Python scripts and XML target description\n# files that are not useful for a normal usage of the debugger.\ndefine GDB_REMOVE_UNNEEDED_FILES\n\t$(RM) -rf $(TARGET_DIR)/usr/share/gdb\nendef\n\nGDB_POST_INSTALL_TARGET_HOOKS += GDB_REMOVE_UNNEEDED_FILES\nendif\n\n# This installs the gdbserver somewhere into the $(HOST_DIR) so that\n# it becomes an integral part of the SDK, if the toolchain generated\n# by Buildroot is later used as an external toolchain. We install it\n# in debug-root/usr/bin/gdbserver so that it matches what Crosstool-NG\n# does.\ndefine GDB_SDK_INSTALL_GDBSERVER\n\t$(INSTALL) -D -m 0755 $(TARGET_DIR)/usr/bin/gdbserver \\\n\t\t$(HOST_DIR)/$(GNU_TARGET_NAME)/debug-root/usr/bin/gdbserver\nendef\n\nifeq ($(BR2_PACKAGE_GDB_SERVER),y)\nGDB_POST_INSTALL_TARGET_HOOKS += GDB_SDK_INSTALL_GDBSERVER\nendif\n\n# A few notes:\n#  * --target, because we're doing a cross build rather than a real\n#    host build.\n#  * --enable-static because gdb really wants to use libbfd.a\nHOST_GDB_CONF_OPTS = \\\n\t--target=$(GNU_TARGET_NAME) \\\n\t--enable-static \\\n\t--without-uiout \\\n\t--disable-gdbtk \\\n\t--without-x \\\n\t--enable-threads \\\n\t--disable-werror \\\n\t--without-included-gettext \\\n\t--with-curses \\\n\t--without-mpfr \\\n\t$(GDB_DISABLE_BINUTILS_CONF_OPTS)\n\nifeq ($(BR2_PACKAGE_HOST_GDB_TUI),y)\nHOST_GDB_CONF_OPTS += --enable-tui\nelse\nHOST_GDB_CONF_OPTS += --disable-tui\nendif\n\nifeq ($(BR2_PACKAGE_HOST_GDB_PYTHON),y)\nHOST_GDB_CONF_OPTS += --with-python=$(HOST_DIR)/bin/python2\nHOST_GDB_DEPENDENCIES += host-python\nelse ifeq ($(BR2_PACKAGE_HOST_GDB_PYTHON3),y)\nHOST_GDB_CONF_OPTS += --with-python=$(HOST_DIR)/bin/python3\nHOST_GDB_DEPENDENCIES += host-python3\nelse\nHOST_GDB_CONF_OPTS += --without-python\nendif\n\nifeq ($(BR2_PACKAGE_HOST_GDB_SIM),y)\nHOST_GDB_CONF_OPTS += --enable-sim\nelse\nHOST_GDB_CONF_OPTS += --disable-sim\nendif\n\n# Since gdb 9, in-tree builds for GDB are not allowed anymore,\n# so we create a 'build' subdirectory in the gdb sources, and\n# build from there.\nHOST_GDB_SUBDIR = build\n\ndefine HOST_GDB_CONFIGURE_SYMLINK\n\tmkdir -p $(@D)/build\n\tln -sf ../configure $(@D)/build/configure\nendef\nHOST_GDB_PRE_CONFIGURE_HOOKS += HOST_GDB_CONFIGURE_SYMLINK\n\n# legacy $arch-linux-gdb symlink\ndefine HOST_GDB_ADD_SYMLINK\n\tcd $(HOST_DIR)/bin && \\\n\t\tln -snf $(GNU_TARGET_NAME)-gdb $(ARCH)-linux-gdb\nendef\n\nHOST_GDB_POST_INSTALL_HOOKS += HOST_GDB_ADD_SYMLINK\n\nHOST_GDB_POST_INSTALL_HOOKS += gen_gdbinit_file\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/gdbm/Config.in",
    "content": "config BR2_PACKAGE_GDBM\n\tbool \"gdbm\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  GNU dbm is a set of database routines that use extensible\n\t  hashing. It works similar to the standard UNIX dbm routines.\n\n\t  https://www.gnu.org/software/gdbm/gdbm.html\n\ncomment \"gdbm needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/gdbm/gdbm.hash",
    "content": "# From https://www.gnu.org.ua/software/gdbm/download.html\nmd5  a285c6e2dfed78668664c0555a7d202b  gdbm-1.21.tar.gz\nsha1  f6eec6113f04a4b5fd2c1cfead10e7d65c8f3d89  gdbm-1.21.tar.gz\n# Locally computed\nsha256  b0b7dbdefd798de7ddccdd8edf6693a30494f7789777838042991ef107339cc2  gdbm-1.21.tar.gz\nsha256  690d762f2e8e149ab1e2d6a409a3853b6151a2533b2382fae549a176d6bedecf  COPYING\n"
  },
  {
    "path": "package/gdbm/gdbm.mk",
    "content": "################################################################################\n#\n# gdbm\n#\n################################################################################\n\nGDBM_VERSION = 1.21\nGDBM_SITE = $(BR2_GNU_MIRROR)/gdbm\nGDBM_LICENSE = GPL-3.0+\nGDBM_LICENSE_FILES = COPYING\nGDBM_INSTALL_STAGING = YES\nGDBM_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nGDBM_CONF_OPTS += --with-readline\nGDBM_DEPENDENCIES += readline\nelse\nGDBM_CONF_OPTS += --without-readline\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gdk-pixbuf/Config.in",
    "content": "config BR2_PACKAGE_GDK_PIXBUF\n\tbool \"gdk-pixbuf\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Gdk-Pixbuf is an image loader and scaler. It uses GObject\n\t  and the GLib, to integrate well with GNOME applications.\n\n\t  https://www.gtk.org/\n\ncomment \"gdk-pixbuf needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gdk-pixbuf/gdk-pixbuf.hash",
    "content": "# From https://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.42/gdk-pixbuf-2.42.4.sha256sum\nsha256  fe9c5dd88f486194ea2bc09b8814c1ed895bb6c530f37cbbf259757c4e482e4d  gdk-pixbuf-2.42.4.tar.xz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/gdk-pixbuf/gdk-pixbuf.mk",
    "content": "################################################################################\n#\n# gdk-pixbuf\n#\n################################################################################\n\nGDK_PIXBUF_VERSION_MAJOR = 2.42\nGDK_PIXBUF_VERSION = $(GDK_PIXBUF_VERSION_MAJOR).4\nGDK_PIXBUF_SOURCE = gdk-pixbuf-$(GDK_PIXBUF_VERSION).tar.xz\nGDK_PIXBUF_SITE = http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/$(GDK_PIXBUF_VERSION_MAJOR)\nGDK_PIXBUF_LICENSE = LGPL-2.1+\nGDK_PIXBUF_LICENSE_FILES = COPYING\nGDK_PIXBUF_CPE_ID_VENDOR = gnome\nGDK_PIXBUF_INSTALL_STAGING = YES\nGDK_PIXBUF_DEPENDENCIES = \\\n\thost-gdk-pixbuf host-libglib2 host-pkgconf \\\n\tlibglib2 $(if $(BR2_ENABLE_LOCALE),,libiconv)\nHOST_GDK_PIXBUF_DEPENDENCIES = host-libpng host-pkgconf host-libglib2\n\nGDK_PIXBUF_CONF_OPTS = \\\n\t-Dgio_sniffing=false \\\n\t-Dinstalled_tests=false \\\n\t-Dman=false\n\nHOST_GDK_PIXBUF_CONF_OPTS = \\\n\t-Dgio_sniffing=false \\\n\t-Dinstalled_tests=false \\\n\t-Dintrospection=disabled \\\n\t-Dman=false\n\nifeq ($(BR2_STATIC_LIBS),y)\nGDK_PIXBUF_CONF_OPTS += -Dbuiltin_loaders=all\nendif\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nGDK_PIXBUF_CONF_OPTS += -Dintrospection=enabled\nGDK_PIXBUF_DEPENDENCIES += gobject-introspection\nelse\nGDK_PIXBUF_CONF_OPTS += -Dintrospection=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nGDK_PIXBUF_CONF_OPTS += -Dpng=true\nGDK_PIXBUF_DEPENDENCIES += libpng\nelse\nGDK_PIXBUF_CONF_OPTS += -Dpng=false\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nGDK_PIXBUF_CONF_OPTS += -Djpeg=true\nHOST_GDK_PIXBUF_CONF_OPTS += -Djpeg=true\nGDK_PIXBUF_DEPENDENCIES += jpeg\nHOST_GDK_PIXBUF_DEPENDENCIES += host-libjpeg\nelse\nGDK_PIXBUF_CONF_OPTS += -Djpeg=false\nHOST_GDK_PIXBUF_CONF_OPTS += -Djpeg=false\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nGDK_PIXBUF_CONF_OPTS += -Dtiff=true\nHOST_GDK_PIXBUF_CONF_OPTS += -Dtiff=true\nGDK_PIXBUF_DEPENDENCIES += tiff\nHOST_GDK_PIXBUF_DEPENDENCIES += host-tiff\nelse\nGDK_PIXBUF_CONF_OPTS += -Dtiff=false\nHOST_GDK_PIXBUF_CONF_OPTS += -Dtiff=false\nendif\n\n# gdk-pixbuf requires the loaders.cache file populated to work properly\n# Rather than doing so at runtime, since the fs can be read-only, do so\n# here after building and installing to target.\n# And since the cache file will contain absolute host directory names we\n# need to sanitize (strip) them.\nifeq ($(BR2_STATIC_LIBS),)\ndefine GDK_PIXBUF_UPDATE_CACHE\n\tGDK_PIXBUF_MODULEDIR=$(HOST_DIR)/lib/gdk-pixbuf-2.0/2.10.0/loaders \\\n\t\t$(HOST_DIR)/bin/gdk-pixbuf-query-loaders \\\n\t\t> $(TARGET_DIR)/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache\n\t$(SED) \"s,$(HOST_DIR)/lib,/usr/lib,g\" \\\n\t\t$(TARGET_DIR)/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache\nendef\nGDK_PIXBUF_POST_INSTALL_TARGET_HOOKS += GDK_PIXBUF_UPDATE_CACHE\nendif\n\n# Target gdk-pixbuf needs loaders.cache populated to build for the\n# thumbnailer. Use the host-built since it matches the target options\n# regarding mime types (which is the used information).\ndefine GDK_PIXBUF_COPY_LOADERS_CACHE\n\tcp -f $(HOST_DIR)/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache \\\n\t\t$(@D)/gdk-pixbuf\nendef\nGDK_PIXBUF_PRE_BUILD_HOOKS += GDK_PIXBUF_COPY_LOADERS_CACHE\n\n$(eval $(meson-package))\n$(eval $(host-meson-package))\n"
  },
  {
    "path": "package/genext2fs/Config.in",
    "content": "config BR2_PACKAGE_GENEXT2FS\n\tbool \"genext2fs\"\n\thelp\n\t  genext2fs generates an ext2 filesystem as a normal (non-root)\n\t  user. It does not require you to mount the image file to\n\t  copy files on it, nor does it require that you become the\n\t  superuser to make device nodes.\n\n\t  http://genext2fs.sourceforge.net/\n"
  },
  {
    "path": "package/genext2fs/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_GENEXT2FS\n\tbool \"host genext2fs\"\n\thelp\n\t  genext2fs generates an ext2 filesystem as a normal (non-root)\n\t  user.  It does not require you to mount the image file to\n\t  copy files on it, nor does it require that you become the\n\t  superuser to make device nodes.\n\n\t  http://genext2fs.sourceforge.net/\n"
  },
  {
    "path": "package/genext2fs/genext2fs.hash",
    "content": "# Locally computed:\nsha256  d3861e4fe89131bd21fbd25cf0b683b727b5c030c4c336fadcd738ada830aab0  genext2fs-1.5.0.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/genext2fs/genext2fs.mk",
    "content": "################################################################################\n#\n# genext2fs\n#\n################################################################################\n\nGENEXT2FS_VERSION = 1.5.0\nGENEXT2FS_SITE = $(call github,bestouff,genext2fs,v$(GENEXT2FS_VERSION))\nGENEXT2FS_LICENSE = GPL-2.0\nGENEXT2FS_LICENSE_FILES = COPYING\n# From git\nGENEXT2FS_AUTORECONF = YES\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/gengetopt/0001-configure.ac-add-disable-doc-option.patch",
    "content": "From 250bee9e02546846d70dbe88ac36bb83c6a7ebdf Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 22 Sep 2019 09:27:24 +0200\nSubject: [PATCH] configure.ac: add --disable-doc option\n\nAdd --disable-doc option to allow the user to disable documentation\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Sent upstream: https://savannah.gnu.org/bugs/index.php?56931]\n---\n Makefile.am  | 6 +++++-\n configure.ac | 7 +++++++\n 2 files changed, 12 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex dbb5719..2db307a 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -18,6 +18,10 @@\n ACLOCAL_AMFLAGS = -I m4 -I gl/m4\n \n EXTRA_DIST = configure TODO LICENSE gl/m4/gnulib-cache.m4\n-SUBDIRS = gl src doc tests\n+SUBDIRS = gl src tests\n+\n+if ENABLE_DOC\n+SUBDIRS += doc\n+endif\n \n gengetoptdoc_DATA = ChangeLog COPYING NEWS THANKS INSTALL README LICENSE\ndiff --git a/configure.ac b/configure.ac\nindex 0ee89db..915706c 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -61,6 +61,13 @@ AC_ARG_ENABLE(\n \tAC_COMPILE_WARNINGS\n )\n \n+AC_ARG_ENABLE(\n+\t[doc],\n+\t[--enable-doc\t\t\tenable documentation],\n+\t[enable_doc=$enableval],\n+\t[enable_doc=yes])\n+AM_CONDITIONAL(ENABLE_DOC, test x\"$enable_doc\" = xyes)\n+\n AC_ARG_WITH(\n \t[gengen],\n \t[  --with-gengen=mygengen       gengen to use],\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/gengetopt/gengetopt.hash",
    "content": "# Locally computed\nsha256 b941aec9011864978dd7fdeb052b1943535824169d2aa2b0e7eae9ab807584ac gengetopt-2.23.tar.xz\nsha256 afab96ff35204960631dc05506034f9efc01e6d696f0ac93718d6bd43512cda7 COPYING\nsha256 72a43351233d6a581f891cdfff78b7b7d5f2a12522523929c5f7e8f674c2f6fc LICENSE\n"
  },
  {
    "path": "package/gengetopt/gengetopt.mk",
    "content": "################################################################################\n#\n# gengetopt\n#\n################################################################################\n\nGENGETOPT_VERSION = 2.23\nGENGETOPT_SOURCE = gengetopt-$(GENGETOPT_VERSION).tar.xz\nGENGETOPT_SITE = $(BR2_GNU_MIRROR)/gengetopt\nGENGETOPT_LICENSE = GPL-3.0+\nGENGETOPT_LICENSE_FILES = COPYING LICENSE\n# We're patching configure.ac\nHOST_GENGETOPT_AUTORECONF = YES\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/genimage/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_GENIMAGE\n\tbool \"host genimage\"\n\thelp\n\t  genimage is a tool to generate multiple filesystem and flash\n\t  images from a given root filesystem tree. genimage is\n\t  intended to be run in a fakeroot environment.\n\n\t  Configuration is done in a config file parsed by\n\t  libconfuse. Options like the path to tools can be given in\n\t  environment variables, the config file or commandline\n\t  switches.\n\n\t  https://github.com/pengutronix/genimage\n"
  },
  {
    "path": "package/genimage/genimage.hash",
    "content": "# Locally calculated\nsha256  9d1d53b33309fe24ea367ea057eb689bdb8ea33cb99d796de31127ca44ccf44c  genimage-14.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/genimage/genimage.mk",
    "content": "################################################################################\n#\n# genimage\n#\n################################################################################\n\nGENIMAGE_VERSION = 14\nGENIMAGE_SOURCE = genimage-$(GENIMAGE_VERSION).tar.xz\nGENIMAGE_SITE = https://github.com/pengutronix/genimage/releases/download/v$(GENIMAGE_VERSION)\nHOST_GENIMAGE_DEPENDENCIES = host-pkgconf host-libconfuse\nGENIMAGE_LICENSE = GPL-2.0\nGENIMAGE_LICENSE_FILES = COPYING\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/genpart/0001-fix-return-code.patch",
    "content": "genpart: return 0 if partition writen OK, with no do_magic\n\nIf do_magic is false, we don't won't write the 0xaa55 magic.\nHowever, if we succesfully wrote the partition entry, we still\nwant to return 0 to indicate success.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nCc: Robert Schwebel <r.schwebel@pengutronix.de>\n\n--\nPatch sent upstream, but no mailing list.\nStatus: accepted upstream, not yet released.\n\ndiff -durN host-genpart-1.0.2.orig/src/genpart.c host-genpart-1.0.2/src/genpart.c\n--- host-genpart-1.0.2.orig/src/genpart.c\t2009-12-20 21:54:56.000000000 +0100\n+++ host-genpart-1.0.2/src/genpart.c\t2013-01-22 23:13:24.109752579 +0100\n@@ -92,6 +92,8 @@\n \t\tif (do_magic) {\n \t\t\tif (fwrite(&magic, 2, 1, stdout) > 0)\n \t\t\t\trc=0;\n+\t\t} else {\n+\t\t\trc=0;\n \t\t}\n \t}\n \treturn rc;\n"
  },
  {
    "path": "package/genpart/Config.in",
    "content": "config BR2_PACKAGE_GENPART\n\tbool \"genpart\"\n\thelp\n\t  Generate a 16 byte partition table entry defined by command\n\t  line arguments and dump it to stdout. No CHS magic is done,\n\t  only lba entries are filled out.\n\n\t  http://www.pengutronix.de/software/genpart/index_en.html\n"
  },
  {
    "path": "package/genpart/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_GENPART\n\tbool \"host genpart\"\n\thelp\n\t  Generate a 16 byte partition table entry defined by command\n\t  line arguments and dump it to stdout. No CHS magic is done,\n\t  only lba entries are filled out.\n\n\t  http://www.pengutronix.de/software/genpart/index_en.html\n"
  },
  {
    "path": "package/genpart/genpart.hash",
    "content": "# Locally calculated\nsha256\tbfb39434f31d10f1b8c7b6bc6ec612309838c2819022561541c4d2d5a424e3f2\tgenpart-1.0.2.tar.bz2\n"
  },
  {
    "path": "package/genpart/genpart.mk",
    "content": "################################################################################\n#\n# genpart\n#\n################################################################################\n\nGENPART_VERSION = 1.0.2\nGENPART_SOURCE = genpart-$(GENPART_VERSION).tar.bz2\nGENPART_SITE = http://www.pengutronix.de/software/genpart/download\n# genpart has no license embedded in its source release.\n# However, their project page mentions:\n#   > This community portal offers an overview about our own OSS\n#   > projects and projects Pengutronix is or was involved with.\n# We can thus assume genpart is under a FLOSS license.\n# So, until the authors have clarified the licensing terms:\nGENPART_LICENSE = Unknown (clarification has been asked to the authors)\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/genromfs/0001-build-system.patch",
    "content": "---\n Makefile |    4 +---\n 1 file changed, 1 insertion(+), 3 deletions(-)\n\nIndex: genromfs-0.5.2/Makefile\n===================================================================\n--- genromfs-0.5.2.orig/Makefile\n+++ genromfs-0.5.2/Makefile\n@@ -6,8 +6,6 @@\n PACKAGE = genromfs\n VERSION = 0.5.2\n CC = gcc\n-CFLAGS = -O2 -Wall -DVERSION=\\\"$(VERSION)\\\"#-g#\n-LDFLAGS = -s#-g\n \n DISTDIR = $(PACKAGE)-$(VERSION)\n \n@@ -24,7 +22,7 @@\n \t$(CC) $(LDFLAGS) genromfs.o -o genromfs\n \n .c.o:\n-\t$(CC) $(CFLAGS) $< -c -o $@\n+\t$(CC) $(CFLAGS) -DVERSION=\\\"$(VERSION)\\\" $< -c -o $@\n \n clean:\n \trm -f genromfs *.o\n"
  },
  {
    "path": "package/genromfs/Config.in",
    "content": "config BR2_PACKAGE_GENROMFS\n\tbool \"genromfs\"\n\thelp\n\t  Tool to generate a ROMFS filesystem.\n\n\t  http://romfs.sourceforge.net/\n"
  },
  {
    "path": "package/genromfs/genromfs.hash",
    "content": "# Locally computed:\nsha256  30f37fc734572c1dbaa2504585bc23ba6b8fd7df767ae7155995b2ca0ebed960  genromfs-0.5.2.tar.gz\nsha256  cc2a6651c315b233ebc110b49ea3c6452eff9a28f8bc051ffd2bb92a8dcfa3d2  COPYING\n"
  },
  {
    "path": "package/genromfs/genromfs.mk",
    "content": "################################################################################\n#\n# genromfs\n#\n################################################################################\n\nGENROMFS_VERSION = 0.5.2\nGENROMFS_SITE = http://downloads.sourceforge.net/project/romfs/genromfs/$(GENROMFS_VERSION)\nGENROMFS_LICENSE = GPL-2.0+\nGENROMFS_LICENSE_FILES = COPYING\n\ndefine GENROMFS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tCC=\"$(TARGET_CC)\" \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS)\"\nendef\n\n# \"PREFIX\" is the equivalent of DESTDIR in autotools, \"prefix\" is the\n# traditional prefix. \"prefix\" defaults to /usr so no need to set it.\ndefine GENROMFS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=$(TARGET_DIR) install\nendef\n\ndefine HOST_GENROMFS_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_GENROMFS_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) prefix=$(HOST_DIR) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/gensio/Config.in",
    "content": "config BR2_PACKAGE_GENSIO\n\tbool \"gensio\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  A library to abstract stream I/O like serial port, TCP,\n\t  telnet, UDP, SSL, IPMI SOL, etc.\n\n\t  https://github.com/cminyard/gensio\n"
  },
  {
    "path": "package/gensio/gensio.hash",
    "content": "# From https://sourceforge.net/projects/ser2net/files/ser2net/\nmd5  45cd3a4d9058816e50351b0700a035ad  gensio-2.2.9.tar.gz\nsha1  4bb34517931f5be4dc5982f6e7a567cf6fdc41b8  gensio-2.2.9.tar.gz\n# Locally computed:\nsha256  3609f66e61c98cce181ec1b37508b727b636d7cfffdb6edd4c254d2f6097a000  gensio-2.2.9.tar.gz\nsha256  501f3108e6c03e5a0a5585ebaaa369171aead5319cd0a7a4dc1f66211c1f09f1  COPYING\nsha256  dcac7d447dd81ab96d28dce00a07a6486e623f7ded94e2a2a8e83312405cdf89  COPYING.LIB\n"
  },
  {
    "path": "package/gensio/gensio.mk",
    "content": "################################################################################\n#\n# gensio\n#\n################################################################################\n\nGENSIO_VERSION = 2.2.9\nGENSIO_SITE = http://downloads.sourceforge.net/project/ser2net/ser2net\nGENSIO_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools)\nGENSIO_LICENSE_FILES = COPYING.LIB COPYING\nGENSIO_INSTALL_STAGING = YES\nGENSIO_CONF_OPTS = \\\n\t--without-openipmi \\\n\t--without-swig \\\n\t--without-python\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nGENSIO_DEPENDENCIES += host-pkgconf openssl\nGENSIO_CONF_OPTS += --with-openssl\nelse\nGENSIO_CONF_OPTS += --without-openssl\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nGENSIO_CONF_ENV += LIBS=-latomic\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nGENSIO_CONF_OPTS += --with-pthreads\nelse\nGENSIO_CONF_OPTS += --without-pthreads\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/geoip/Config.in",
    "content": "config BR2_PACKAGE_GEOIP\n\tbool \"geoip\"\n\thelp\n\t  GeoIP is a C library that enables the user to find\n\t  geographical and network information of an IP address.\n\n\t  To use this library, you need to download MaxMind's free\n\t  GeoLite or commercial GeoIP binary databases into the\n\t  target's /usr/share/GeoIP directory in uncompressed form.\n\n\t  Note that GeoIP2 / GeoLite2 are not supported by this\n\t  library.\n\n\t  https://github.com/maxmind/geoip-api-c\n"
  },
  {
    "path": "package/geoip/geoip.hash",
    "content": "# Locally calculated\nsha256 1dfb748003c5e4b7fd56ba8c4cd786633d5d6f409547584f6910398389636f80  GeoIP-1.6.12.tar.gz\nsha256 36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89  COPYING\n"
  },
  {
    "path": "package/geoip/geoip.mk",
    "content": "################################################################################\n#\n# geoip\n#\n################################################################################\n\nGEOIP_VERSION = 1.6.12\nGEOIP_SOURCE = GeoIP-$(GEOIP_VERSION).tar.gz\nGEOIP_SITE = https://github.com/maxmind/geoip-api-c/releases/download/v$(GEOIP_VERSION)\nGEOIP_INSTALL_STAGING = YES\nGEOIP_LICENSE = LGPL-2.1+\nGEOIP_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gerbera/Config.in",
    "content": "config BR2_PACKAGE_GERBERA\n\tbool \"gerbera\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++17 filesystem\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR # fmt\n\tselect BR2_PACKAGE_FMT\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_LIBUPNP if !BR2_PACKAGE_LIBNPUPNP\n\tselect BR2_PACKAGE_PUGIXML\n\tselect BR2_PACKAGE_PUGIXML_XPATH_SUPPORT\n\tselect BR2_PACKAGE_SPDLOG\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  A free media server.\n\t  Stream your media to devices on your home network.\n\n\t  Select BR2_PACKAGE_DUKTAPE if you want to enable JavaScript\n\t  for scripting.\n\n\t  https://gerbera.io\n\ncomment \"gerbera needs a toolchain w/ C++, dynamic library, threads, wchar, gcc >= 8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_8\n"
  },
  {
    "path": "package/gerbera/S99gerbera",
    "content": "#!/bin/sh\n\nDAEMON=\"gerbera\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nGERBERA_ARGS=\"-c /etc/gerbera/config.xml -l /var/log/gerbera.log\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\n# (Re)create home directory\nmkdir -p /var/lib/$DAEMON\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -m -b -p \"$PIDFILE\" -x \"/usr/bin/$DAEMON\" \\\n\t\t-- $GERBERA_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n        start|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n        *)\n                echo \"Usage: $0 {start|stop|restart|reload}\"\n                exit 1\nesac\n"
  },
  {
    "path": "package/gerbera/config.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<config version=\"2\" xmlns=\"http://mediatomb.cc/config/2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://mediatomb.cc/config/2 http://mediatomb.cc/config/2.xsd\">\n  <!--\n     See http://gerbera.io or read the docs for more\n     information on creating and using config.xml configuration files.\n    -->\n  <server>\n    <ui enabled=\"yes\" show-tooltips=\"yes\">\n      <accounts enabled=\"no\" session-timeout=\"30\">\n        <account user=\"gerbera\" password=\"gerbera\" />\n      </accounts>\n    </ui>\n    <name>Gerbera</name>\n    <udn>uuid:ac20d9b6-5c82-48e6-80de-436965fbe1d7</udn>\n    <home>/var/lib/gerbera</home>\n    <webroot>/usr/share/gerbera/web</webroot>\n    <!--\n        How frequently (in seconds) to send ssdp:alive advertisements.\n        Minimum alive value accepted is: 62\n\n        The advertisement will be sent every (A/2)-30 seconds,\n        and will have a cache-control max-age of A where A is\n        the value configured here. Ex: A value of 62 will result\n        in an SSDP advertisement being sent every second.\n    -->\n    <alive>1800</alive>\n    <storage>\n      <sqlite3 enabled=\"yes\">\n        <database-file>gerbera.db</database-file>\n      </sqlite3>\n    </storage>\n    <extended-runtime-options>\n      <mark-played-items enabled=\"no\" suppress-cds-updates=\"yes\">\n        <string mode=\"prepend\">*</string>\n        <mark>\n          <content>video</content>\n        </mark>\n      </mark-played-items>\n    </extended-runtime-options>\n  </server>\n  <import hidden-files=\"no\">\n    <scripting>\n      <virtual-layout type=\"builtin\" />\n    </scripting>\n    <mappings>\n      <extension-mimetype ignore-unknown=\"no\">\n        <map from=\"asf\" to=\"video/x-ms-asf\" />\n        <map from=\"asx\" to=\"video/x-ms-asf\" />\n        <map from=\"dff\" to=\"audio/x-dsd\" />\n        <map from=\"dsf\" to=\"audio/x-dsd\" />\n        <map from=\"flv\" to=\"video/x-flv\" />\n        <map from=\"m2ts\" to=\"video/mp2t\" />\n        <map from=\"m3u\" to=\"audio/x-mpegurl\" />\n        <map from=\"mka\" to=\"audio/x-matroska\" />\n        <map from=\"mkv\" to=\"video/x-matroska\" />\n        <map from=\"mp3\" to=\"audio/mpeg\" />\n        <map from=\"mts\" to=\"video/mp2t\" />\n        <map from=\"oga\" to=\"audio/ogg\" />\n        <map from=\"ogg\" to=\"audio/ogg\" />\n        <map from=\"ogm\" to=\"video/ogg\" />\n        <map from=\"ogv\" to=\"video/ogg\" />\n        <map from=\"ogx\" to=\"application/ogg\" />\n        <map from=\"pls\" to=\"audio/x-scpls\" />\n        <map from=\"ts\" to=\"video/mp2t\" />\n        <map from=\"tsa\" to=\"audio/mp2t\" />\n        <map from=\"tsv\" to=\"video/mp2t\" />\n        <map from=\"wax\" to=\"audio/x-ms-wax\" />\n        <map from=\"wm\" to=\"video/x-ms-wm\" />\n        <map from=\"wma\" to=\"audio/x-ms-wma\" />\n        <map from=\"wmv\" to=\"video/x-ms-wmv\" />\n        <map from=\"wmx\" to=\"video/x-ms-wmx\" />\n        <map from=\"wv\" to=\"audio/x-wavpack\" />\n        <map from=\"wvx\" to=\"video/x-ms-wvx\" />\n        <!-- Uncomment the line below for PS3 divx support -->\n        <!-- <map from=\"avi\" to=\"video/divx\" /> -->\n        <!-- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 -->\n        <!-- <map from=\"avi\" to=\"video/avi\" /> -->\n      </extension-mimetype>\n      <mimetype-upnpclass>\n        <map from=\"application/ogg\" to=\"object.item.audioItem.musicTrack\" />\n        <map from=\"audio/*\" to=\"object.item.audioItem.musicTrack\" />\n        <map from=\"image/*\" to=\"object.item.imageItem\" />\n        <map from=\"video/*\" to=\"object.item.videoItem\" />\n      </mimetype-upnpclass>\n      <mimetype-contenttype>\n        <treat mimetype=\"application/ogg\" as=\"ogg\" />\n        <treat mimetype=\"audio/L16\" as=\"pcm\" />\n        <treat mimetype=\"audio/flac\" as=\"flac\" />\n        <treat mimetype=\"audio/mp4\" as=\"mp4\" />\n        <treat mimetype=\"audio/mpeg\" as=\"mp3\" />\n        <treat mimetype=\"audio/ogg\" as=\"ogg\" />\n        <treat mimetype=\"audio/x-dsd\" as=\"dsd\" />\n        <treat mimetype=\"audio/x-flac\" as=\"flac\" />\n        <treat mimetype=\"audio/x-matroska\" as=\"mka\" />\n        <treat mimetype=\"audio/x-mpegurl\" as=\"playlist\" />\n        <treat mimetype=\"audio/x-ms-wma\" as=\"wma\" />\n        <treat mimetype=\"audio/x-scpls\" as=\"playlist\" />\n        <treat mimetype=\"audio/x-wav\" as=\"pcm\" />\n        <treat mimetype=\"audio/x-wavpack\" as=\"wv\" />\n        <treat mimetype=\"image/jpeg\" as=\"jpg\" />\n        <treat mimetype=\"video/mp4\" as=\"mp4\" />\n        <treat mimetype=\"video/x-matroska\" as=\"mkv\" />\n        <treat mimetype=\"video/x-msvideo\" as=\"avi\" />\n      </mimetype-contenttype>\n    </mappings>\n    <online-content>\n      <AppleTrailers enabled=\"no\" refresh=\"43200\" update-at-start=\"no\" resolution=\"640\" />\n    </online-content>\n  </import>\n  <transcoding enabled=\"no\">\n    <mimetype-profile-mappings>\n      <transcode mimetype=\"application/ogg\" using=\"vlcmpeg\" />\n      <transcode mimetype=\"audio/ogg\" using=\"ogg2mp3\" />\n      <transcode mimetype=\"video/x-flv\" using=\"vlcmpeg\" />\n    </mimetype-profile-mappings>\n    <profiles>\n      <profile name=\"ogg2mp3\" enabled=\"no\" type=\"external\">\n        <mimetype>audio/mpeg</mimetype>\n        <accept-url>no</accept-url>\n        <first-resource>yes</first-resource>\n        <accept-ogg-theora>no</accept-ogg-theora>\n        <agent command=\"ffmpeg\" arguments=\"-y -i %in -f mp3 %out\" />\n        <buffer size=\"1048576\" chunk-size=\"131072\" fill-size=\"262144\" />\n      </profile>\n      <profile name=\"vlcmpeg\" enabled=\"no\" type=\"external\">\n        <mimetype>video/mpeg</mimetype>\n        <accept-url>yes</accept-url>\n        <first-resource>yes</first-resource>\n        <accept-ogg-theora>yes</accept-ogg-theora>\n        <agent command=\"vlc\" arguments=\"-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit\" />\n        <buffer size=\"14400000\" chunk-size=\"512000\" fill-size=\"120000\" />\n      </profile>\n    </profiles>\n  </transcoding>\n</config>\n"
  },
  {
    "path": "package/gerbera/gerbera.hash",
    "content": "# Locally computed:\nsha256  dee562cc5d22e8442e2fe1620b073bda612c80f9c4a8333311c647db06c1c4cd  gerbera-1.9.2.tar.gz\nsha256  cae4138373be41fd2be75faf41ce7efbcf49fb17d0e05ad1c51cc01ac335b9b6  LICENSE.md\n"
  },
  {
    "path": "package/gerbera/gerbera.mk",
    "content": "################################################################################\n#\n# gerbera\n#\n################################################################################\n\nGERBERA_VERSION = 1.9.2\nGERBERA_SITE = $(call github,gerbera,gerbera,v$(GERBERA_VERSION))\nGERBERA_LICENSE = GPL-2.0\nGERBERA_LICENSE_FILES = LICENSE.md\nGERBERA_DEPENDENCIES = \\\n\tfmt \\\n\thost-pkgconf \\\n\tpugixml \\\n\tspdlog \\\n\tsqlite \\\n\tutil-linux \\\n\tzlib\nGERBERA_CONF_OPTS = -DWITH_DEBUG=OFF\n\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_9)$(BR2_OPTIMIZE_S),yy)\nGERBERA_CONF_OPTS += -DCMAKE_CXX_FLAGS=\"$(TARGET_CXXFLAGS) -O2\"\nendif\n\n# Uses __atomic_fetch_add_4\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nGERBERA_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\nifeq ($(BR2_PACKAGE_DUKTAPE),y)\nGERBERA_DEPENDENCIES += duktape\nGERBERA_CONF_OPTS += -DWITH_JS=ON\nelse\nGERBERA_CONF_OPTS += -DWITH_JS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_EXIV2),y)\nGERBERA_DEPENDENCIES += exiv2\nGERBERA_CONF_OPTS += -DWITH_EXIV2=ON\nelse\nGERBERA_CONF_OPTS += -DWITH_EXIV2=OFF\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG),y)\nGERBERA_DEPENDENCIES += ffmpeg\nGERBERA_CONF_OPTS += -DWITH_AVCODEC=ON\nelse\nGERBERA_CONF_OPTS += -DWITH_AVCODEC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_FILE),y)\nGERBERA_DEPENDENCIES += file\nGERBERA_CONF_OPTS += -DWITH_MAGIC=ON\nelse\nGERBERA_CONF_OPTS += -DWITH_MAGIC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nGERBERA_DEPENDENCIES += libcurl\nGERBERA_CONF_OPTS += -DWITH_CURL=ON\nelse\nGERBERA_CONF_OPTS += -DWITH_CURL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBEXIF),y)\nGERBERA_DEPENDENCIES += libexif\nGERBERA_CONF_OPTS += -DWITH_EXIF=ON\nelse\nGERBERA_CONF_OPTS += -DWITH_EXIF=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nGERBERA_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_PACKAGE_LIBMATROSKA),y)\nGERBERA_DEPENDENCIES += libmatroska\nGERBERA_CONF_OPTS += -DWITH_MATROSKA=ON\nelse\nGERBERA_CONF_OPTS += -DWITH_MATROSKA=OFF\nendif\n\n# Either libupnp or libnpupnp are guranteed to be enabled\nifeq ($(BR2_PACKAGE_LIBNPUPNP),y)\nGERBERA_DEPENDENCIES += libnpupnp\nGERBERA_CONF_OPTS += -DWITH_NPUPNP=ON\nelse\nGERBERA_DEPENDENCIES += libupnp\nGERBERA_CONF_OPTS += -DWITH_NPUPNP=OFF\nendif\n\nifeq ($(BR2_PACKAGE_MYSQL),y)\nGERBERA_DEPENDENCIES += mysql\nGERBERA_CONF_OPTS += -DWITH_MYSQL=ON\nelse\nGERBERA_CONF_OPTS += -DWITH_MYSQL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nGERBERA_DEPENDENCIES += systemd\nGERBERA_CONF_OPTS += -DWITH_SYSTEMD=ON\nelse\nGERBERA_CONF_OPTS += -DWITH_SYSTEMD=OFF\nendif\n\nifeq ($(BR2_PACKAGE_TAGLIB),y)\nGERBERA_DEPENDENCIES += taglib\nGERBERA_CONF_OPTS += -DWITH_TAGLIB=ON\nelse\nGERBERA_CONF_OPTS += -DWITH_TAGLIB=OFF\nendif\n\n# gerbera does not provide a default configuration file, it can be\n# created during run time through --create-config:\n# http://docs.gerbera.io/en/latest/config-overview.html#generating-configuration\n# However, to have a correct home directory and UDN, install it ourself\ndefine GERBERA_INSTALL_CONFIGURATION\n\t$(INSTALL) -D -m 0644 package/gerbera/config.xml \\\n\t\t$(TARGET_DIR)/etc/gerbera/config.xml\nendef\n\nGERBERA_POST_INSTALL_TARGET_HOOKS += GERBERA_INSTALL_CONFIGURATION\n\ndefine GERBERA_USERS\n\tgerbera -1 gerbera -1 * /var/lib/gerbera - - Gerbera user\nendef\n\ndefine GERBERA_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/gerbera/S99gerbera \\\n\t\t$(TARGET_DIR)/etc/init.d/S99gerbera\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/gesftpserver/0001-Change-order-of-v3-attributes-according-to-draft-iet.patch",
    "content": "From 4b5c7eb63894bd2b1fedeb2a8e9bd16bf3c8c555 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Bernd=20Holzm=C3=BCller?=\n <bernd.holzmueller@tiggerswelt.net>\nDate: Mon, 11 Feb 2019 23:57:01 +0100\nSubject: [PATCH] Change order of v3-attributes according to\n draft-ietf-secsh-filexfer-00/02\n\n[yann.morin.1998@free.fr: backport from upstream]\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n---\n v3.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/v3.c b/v3.c\nindex 57cc31e..1fd86ad 100644\n--- a/v3.c\n+++ b/v3.c\n@@ -121,8 +121,8 @@ static void v3_sendattrs(struct sftpjob *job, const struct sftpattr *attrs) {\n       fatal(\"sending out-of-range mtime\");\n     if(a != attrs->atime.seconds)\n       fatal(\"sending out-of-range mtime\");\n-    sftp_send_uint32(job->worker, m);\n     sftp_send_uint32(job->worker, a);\n+    sftp_send_uint32(job->worker, m);\n   }\n   /* Note that we just discard unknown bits rather than reporting errors. */\n }\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/gesftpserver/Config.in",
    "content": "config BR2_PACKAGE_GESFTPSERVER\n\tbool \"gesftpserver\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Green End SFTP Server\n\n\t  This is an SFTP server supporting up to protocol version 6.\n\t  It is possible to use it as a drop-in replacement for the\n\t  OpenSSH server, or to provide sftp support for Dropbear.\n\n\t  http://www.greenend.org.uk/rjk/sftpserver/\n\ncomment \"gesftpserver needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gesftpserver/gesftpserver.hash",
    "content": "# Locally calculated\nsha256  4963b85787de3485085a5356c671c58b8b33125f528ff1b2fe8b534ed8a0c1bd  sftpserver-1.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/gesftpserver/gesftpserver.mk",
    "content": "################################################################################\n#\n# gesftpserver\n#\n################################################################################\n\nGESFTPSERVER_VERSION = 1\nGESFTPSERVER_SOURCE = sftpserver-$(GESFTPSERVER_VERSION).tar.gz\nGESFTPSERVER_SITE = http://www.greenend.org.uk/rjk/sftpserver\nGESFTPSERVER_LICENSE = GPL-2.0+\nGESFTPSERVER_LICENSE_FILES = COPYING\n\n# \"Missing prototype\" warning treated as error\nGESFTPSERVER_CONF_OPTS = --disable-warnings-as-errors\nGESFTPSERVER_CPE_ID_VENDOR = green_end\nGESFTPSERVER_CPE_ID_PRODUCT = sftpserver\n\n# forgets to link against pthread when cross compiling\nGESFTPSERVER_CONF_ENV = LIBS=-lpthread\n\n# overwrite openssh version if enabled\nGESFTPSERVER_DEPENDENCIES += \\\n\t$(if $(BR2_ENABLE_LOCALE),,libiconv) \\\n\t$(if $(BR2_PACKAGE_OPENSSH),openssh)\n\n# Python on the host is only used for tests, which we don't use in\n# Buildroot\nGESFTPSERVER_CONF_ENV += rjk_cv_python24=false\n\n# openssh/dropbear looks here\ndefine GESFTPSERVER_ADD_SYMLINK\n\tln -sf gesftpserver $(TARGET_DIR)/usr/libexec/sftp-server\nendef\n\nGESFTPSERVER_POST_INSTALL_TARGET_HOOKS += GESFTPSERVER_ADD_SYMLINK\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/getent/Config.in",
    "content": "config BR2_PACKAGE_GETENT\n\tbool \"getent\"\n\thelp\n\t  This package installs the 'getent' utility, which allows to\n\t  get entries from Name Service Switch libraries. For glibc\n\t  toolchains, it's the real getent program from the C library\n\t  that gets installed, which is NSS-capable. For uclibc and\n\t  musl toolchains, it's a simple wrapper script that emulates\n\t  getent's behavior, since there is no NSS support in uclibc\n\t  and musl.\n"
  },
  {
    "path": "package/getent/getent",
    "content": "#!/bin/sh\n# $Header: /var/cvs/uClibc/extra/scripts/getent,v 1.2 2005/02/02 14:18:01 solar Exp $\n#\n# Closely (not perfectly) emulate the behavior of glibc's getent utility\n#\n#passwd|shadow|group|aliases|hosts|networks|ethers|netgroup|protocols|services|rpc\n# only returns the first match (by design)\n# dns based search is not supported (hosts,networks)\n# case-insensitive matches not supported (ethers; others?)\n# may return false-positives (hosts,protocols,rpc,services,ethers)\n#\n# Taken from uClibc 0.9.33.\n\nexport PATH=\"${PATH}:/bin:/usr/bin\"\n\nfile=\"/etc/$1\"\ncase $1 in\n\tpasswd|group)\n\t\tmatch=\"^$2:\\|^[^:]*:[^:]*:$2:\" ;;\n\tshadow)\n\t\tmatch=\"^$2:\" ;;\n\tnetworks|netgroup)\n\t\tmatch=\"^[[:space:]]*$2\\>\" ;;\n\thosts|protocols|rpc|services|ethers)\n\t\tmatch=\"\\<$2\\>\" ;;\n\taliases)\n\t\tmatch=\"^[[:space:]]*$2[[:space:]]*:\" ;;\n\t\"\"|-h|--help)\n\t\techo \"USAGE: $0 database [key]\"\n\t\texit 0 ;;\n\t*)\n\t\techo \"$0: Unknown database: $1\" 1>&2\n\t\texit 1 ;;\nesac\n\nif [ ! -f \"$file\" ] ; then\n\techo \"$0: Could not find database file for $1\" 1>&2\n\texit 1\nfi\n\nif [ $# -eq 1 ] ; then\n\texec cat \"$file\"\nelse\n\tsed \"s/#.*//; /$match/q; d\" \"$file\" | grep . || exit 2\nfi\n"
  },
  {
    "path": "package/getent/getent.mk",
    "content": "################################################################################\n#\n# getent\n#\n################################################################################\n\nGETENT_LICENSE = LGPL-2.1+\n\n# For glibc toolchains, we use the getent program built/installed by\n# the C library. For other toolchains, we use the wrapper script\n# included in this package.\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)\n# Sourcery toolchains install it in sysroot/usr/lib/bin\n# Buildroot toolchains install it in sysroot/usr/bin\nGETENT_LOCATION = $(firstword $(wildcard \\\n\t$(STAGING_DIR)/usr/bin/getent \\\n\t$(STAGING_DIR)/usr/lib/bin/getent))\nelse\nGETENT_LOCATION = package/getent/getent\nendif\n\ndefine GETENT_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(GETENT_LOCATION) $(TARGET_DIR)/usr/bin/getent\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/gettext/Config.in",
    "content": "config BR2_PACKAGE_GETTEXT\n\tbool \"gettext\"\n\tselect BR2_PACKAGE_GETTEXT_GNU if BR2_SYSTEM_ENABLE_NLS\n\tselect BR2_PACKAGE_GETTEXT_TINY if !BR2_SYSTEM_ENABLE_NLS\n\nconfig BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL\n\tbool\n\tdefault y if BR2_SYSTEM_ENABLE_NLS\n\tdepends on !BR2_TOOLCHAIN_HAS_FULL_GETTEXT\n\nconfig BR2_PACKAGE_HAS_GETTEXT\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_GETTEXT\n\tstring\n\nconfig BR2_PACKAGE_PROVIDES_HOST_GETTEXT\n\tstring\n"
  },
  {
    "path": "package/gettext/gettext.mk",
    "content": "################################################################################\n#\n# gettext\n#\n################################################################################\n\nGETTEXTIZE = $(HOST_CONFIGURE_OPTS) AUTOM4TE=$(HOST_DIR)/bin/autom4te $(HOST_DIR)/bin/gettextize -f\n\n$(eval $(virtual-package))\n$(eval $(host-virtual-package))\n"
  },
  {
    "path": "package/gettext-gnu/0001-error_print_progname.patch",
    "content": "[Updated to apply cleanly with 0.20.1]\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\n---\ndiff --git a/gettext-tools/gnulib-lib/error.h b/gettext-tools/gnulib-lib/error.h\nindex 61771cc..4221684 100644\n--- a/gettext-tools/gnulib-lib/error.h\n+++ b/gettext-tools/gnulib-lib/error.h\n@@ -68,7 +68,10 @@ extern void error_at_line (int __status, int __errnum, const char *__fname,\n /* If NULL, error will flush stdout, then print on stderr the program\n    name, a colon and a space.  Otherwise, error will call this\n    function without parameters instead.  */\n-extern DLL_VARIABLE void (*error_print_progname) (void);\n+#ifndef __UCLIBC__\n+extern DLL_VARIABLE\n+#endif\n+void (*error_print_progname) (void);\n \n /* This variable is incremented each time 'error' is called.  */\n extern DLL_VARIABLE unsigned int error_message_count;\n--\n"
  },
  {
    "path": "package/gettext-gnu/0002-restore-the-ability-to-buld-gettext-tools-seperately-part1.patch",
    "content": "From e4b3a3f56fa6fc2a51769e286545f0631bb4837c Mon Sep 17 00:00:00 2001\nFrom: Bruno Haible <bruno@clisp.org>\nDate: Sat, 18 May 2019 23:33:06 +0200\nSubject: [PATCH] build: Restore the ability to build gettext-tools separately, part 1.\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nReported by Hanspeter Niederstrasser <nieder@users.sourceforge.net>\nin <https://savannah.gnu.org/bugs/?56333>.\n\nCode based on patch by Miguel Ángel Arruga Vivas <rosen644835@gmail.com>.\n\n* autogen.sh: Copy libtextstyle.m4 for use by gettext-tools.\n* gettext-tools/configure.ac: New option --with-installed-libtextstyle.\n(USE_INSTALLED_LIBTEXTSTYLE): New conditional.\n* gettext-tools/src/Makefile.am (textstyle.h): Disable rule if\nUSE_INSTALLED_LIBTEXTSTYLE is true.\n(LT_LIBTEXTSTYLE): New variable.\n(libgettextsrc_la_LDFLAGS): Use it instead of hardcoding a relative filename of\nlibtextstyle.la.\n* configure.ac: Filter out --with-installed-libtextstyle from inherited --help\noutput.\n* Makefile.am (distcheck-hook): Compare different copies of libtextstyle.m4.\n* PACKAGING: Document that gettext-tools's configure needs to be invoked with\n--with-installed-libtextstyle.\n\nUpstream-status: committed.\nhttps://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commitdiff;h=e4b3a3f56fa6fc2a51769e286545f0631bb4837c\n\nSigned-off-by: Bruno Haible <bruno@clisp.org>\n[Backported to 0.20.1]\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\n---\n PACKAGING                     |  2 +-\n autogen.sh                    |  1 +\n configure.ac                  |  2 +-\n gettext-tools/configure.ac    | 16 ++++++++++++++++\n gettext-tools/src/Makefile.am |  8 +++++++-\n 5 files changed, 26 insertions(+), 3 deletions(-)\n\ndiff --git a/PACKAGING b/PACKAGING\nindex a8ce979..52b80ac 100644\n--- a/PACKAGING\n+++ b/PACKAGING\n@@ -42,7 +42,7 @@ The 'libtextstyle' binary package can be installed by doing\n The 'gettext-tools' binary package can be installed by doing\n \n       cd gettext-tools\n-      ./configure\n+      ./configure --with-installed-libtextstyle\n       make\n       make install\n \ndiff --git a/autogen.sh b/autogen.sh\nindex 5c28b6f..2ccf373 100755\n--- a/autogen.sh\n+++ b/autogen.sh\n@@ -268,6 +268,7 @@ if ! $skip_gnulib; then\n   $GNULIB_TOOL --dir=gettext-tools --lib=libgettextlib --source-base=gnulib-lib --m4-base=gnulib-m4 --tests-base=gnulib-tests --makefile-name=Makefile.gnulib --libtool --with-tests --local-dir=gnulib-local --local-symlink \\\n     --import --avoid=array-list-tests --avoid=linkedhash-list-tests --avoid=hash-tests --avoid=fdutimensat-tests --avoid=futimens-tests --avoid=utime-tests --avoid=utimens-tests --avoid=utimensat-tests \\\n     `for m in $GNULIB_MODULES_TOOLS_LIBUNISTRING_TESTS; do echo --avoid=$m; done` $GNULIB_MODULES_TOOLS_FOR_SRC $GNULIB_MODULES_TOOLS_FOR_SRC_COMMON_DEPENDENCIES $GNULIB_MODULES_TOOLS_OTHER || exit $?\n+  $GNULIB_TOOL --copy-file m4/libtextstyle.m4 gettext-tools/gnulib-m4/libtextstyle.m4 || exit $?\n   # In gettext-tools/libgrep:\n   GNULIB_MODULES_TOOLS_FOR_LIBGREP='\n     mbrlen\ndiff --git a/configure.ac b/configure.ac\nindex 38db6fd..0c84bdd 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -49,7 +49,7 @@ AC_CANONICAL_HOST\n dnl Optional Features: AC_ARG_ENABLE calls\n dnl Optional Packages: AC_ARG_WITH calls\n dnl Some influential environment variables: AC_ARG_VAR calls\n-esyscmd([{ cd gettext-runtime && autoconf --trace=AC_ARG_ENABLE:'$n([$1],[$2])' --trace=AC_ARG_WITH:'$n([$1],[$2])' --trace=AC_ARG_VAR:'$n($@)' && cd ..; cd libtextstyle && autoconf --trace=AC_ARG_ENABLE:'$n([$1],[$2])' --trace=AC_ARG_WITH:'$n([$1],[$2])' --trace=AC_ARG_VAR:'$n($@)' && cd ..; cd gettext-tools && autoconf --trace=AC_ARG_ENABLE:'$n([$1],[$2])' --trace=AC_ARG_WITH:'$n([$1],[$2])' --trace=AC_ARG_VAR:'$n($@)' && cd ..; } | sed -f build-aux/ac-help.sed ])\n+esyscmd([{ cd gettext-runtime && autoconf --trace=AC_ARG_ENABLE:'$n([$1],[$2])' --trace=AC_ARG_WITH:'$n([$1],[$2])' --trace=AC_ARG_VAR:'$n($@)' && cd ..; cd libtextstyle && autoconf --trace=AC_ARG_ENABLE:'$n([$1],[$2])' --trace=AC_ARG_WITH:'$n([$1],[$2])' --trace=AC_ARG_VAR:'$n($@)' && cd ..; { cd gettext-tools && autoconf --trace=AC_ARG_ENABLE:'$n([$1],[$2])' --trace=AC_ARG_WITH:'$n([$1],[$2])' --trace=AC_ARG_VAR:'$n($@)' && cd ..; } | grep -v installed.libtextstyle; } | sed -f build-aux/ac-help.sed ])\n \n AC_CONFIG_FILES([Makefile])\n \ndiff --git a/gettext-tools/configure.ac b/gettext-tools/configure.ac\nindex cf1dd73..a6816b8 100644\n--- a/gettext-tools/configure.ac\n+++ b/gettext-tools/configure.ac\n@@ -121,6 +121,22 @@ AM_CONDITIONAL([PACKAGE_IS_GETTEXT_TOOLS], [true])\n AM_CONDITIONAL([PRELOADABLE_LIBINTL],\n   [test $USE_INCLUDED_LIBINTL = no && test $GLIBC2 = yes])\n \n+dnl This option allows to build gettext-tools without (re)building libtextstyle.\n+AC_ARG_WITH([installed-libtextstyle],\n+  [AS_HELP_STRING([--with-installed-libtextstyle],\n+     [Use an already installed libtextstyle.])],\n+  [gt_use_installed_libtextstyle=$withval],\n+  [gt_use_installed_libtextstyle=no])\n+if test \"$gt_use_installed_libtextstyle\" != no; then\n+  gl_LIBTEXTSTYLE\n+else\n+  test -f ../libtextstyle/Makefile || {\n+    AC_MSG_ERROR([When building the gettext-tools package without building the entire gettext package, you need to pass the --with-installed-libtextstyle option to configure.])\n+  }\n+fi\n+AM_CONDITIONAL([USE_INSTALLED_LIBTEXTSTYLE],\n+  [test \"$gt_use_installed_libtextstyle\" != no])\n+\n dnl This line internationalizes the bison generated parsers.\n BISON_I18N\n \ndiff --git a/gettext-tools/src/Makefile.am b/gettext-tools/src/Makefile.am\nindex b98b7ab..af3dcee 100644\n--- a/gettext-tools/src/Makefile.am\n+++ b/gettext-tools/src/Makefile.am\n@@ -250,6 +250,9 @@ cldr_plurals_SOURCES = cldr-plural.y cldr-plural-exp.c cldr-plurals.c\n cldr_plurals_CFLAGS = $(AM_CFLAGS) $(INCXML)\n cldr_plurals_LDADD = libgettextsrc.la $(LDADD)\n \n+if USE_INSTALLED_LIBTEXTSTYLE\n+LT_LIBTEXTSTYLE = @LTLIBTEXTSTYLE@\n+else\n # How to get the include files of libtextstyle.\n textstyle.h textstyle/stdbool.h textstyle/version.h textstyle/woe32dll.h:\n \there=`pwd`; \\\n@@ -257,6 +260,9 @@ textstyle.h textstyle/stdbool.h textstyle/version.h textstyle/woe32dll.h:\n \t  $(MAKE) install-nobase_includeHEADERS install-nobase_nodist_includeHEADERS includedir=\"$$here\"\n BUILT_SOURCES    += textstyle.h textstyle/stdbool.h textstyle/version.h textstyle/woe32dll.h\n MOSTLYCLEANFILES += textstyle.h textstyle/stdbool.h textstyle/version.h textstyle/woe32dll.h\n+# Where to find the built libtextstyle library.\n+LT_LIBTEXTSTYLE = ../../libtextstyle/lib/libtextstyle.la\n+endif\n \n # How to build libgettextsrc.la.\n # Need ../gnulib-lib/libgettextlib.la.\n@@ -268,7 +274,7 @@ MOSTLYCLEANFILES += textstyle.h textstyle/stdbool.h textstyle/version.h textstyl\n # use iconv().\n libgettextsrc_la_LDFLAGS = \\\n   -release @VERSION@ \\\n-  ../gnulib-lib/libgettextlib.la $(LTLIBUNISTRING) ../../libtextstyle/lib/libtextstyle.la @LTLIBINTL@ @LTLIBICONV@ -lc -no-undefined\n+  ../gnulib-lib/libgettextlib.la $(LTLIBUNISTRING) $(LT_LIBTEXTSTYLE) @LTLIBINTL@ @LTLIBICONV@ -lc -no-undefined\n \n # OS/2 does not support a DLL name longer than 8 characters.\n if OS2\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/gettext-gnu/Config.in",
    "content": "config BR2_PACKAGE_GETTEXT_GNU\n\tbool\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_HAS_GETTEXT\n\thelp\n\t  The GNU `gettext' utilities are a set of tools that provide a\n\t  framework to help other GNU packages produce multi-lingual\n\t  messages.\n\n\t  Only the libintl library will be installed in the\n\t  target. The full gettext suite, including tools, will be\n\t  installed in the staging directory.\n\n\t  http://www.gnu.org/software/gettext/\n\nif BR2_PACKAGE_GETTEXT_GNU\n\nconfig BR2_PACKAGE_PROVIDES_GETTEXT\n\tdefault \"gettext-gnu\"\n\nendif\n\nconfig BR2_PACKAGE_PROVIDES_HOST_GETTEXT\n\tdefault \"host-gettext-gnu\" if BR2_SYSTEM_ENABLE_NLS\n"
  },
  {
    "path": "package/gettext-gnu/gettext-gnu.hash",
    "content": "# From https://lists.gnu.org/archive/html/info-gnu/2019-05/msg00011.html\nsha1  62f4a6a2fd5f80bfd0e66c497a04094fa3e07b90  gettext-0.20.1.tar.xz\n\n# Locally calculated\nsha256  53f02fbbec9e798b0faaf7c73272f83608e835c6288dd58be6c9bb54624a3800  gettext-0.20.1.tar.xz\nsha256  e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b  COPYING\nsha256  3fe5361f24b7c49ba12911c08f5a33f9cb18871d95d9fb881f5b8a4793e04288  gettext-runtime/intl/COPYING.LIB\n"
  },
  {
    "path": "package/gettext-gnu/gettext-gnu.mk",
    "content": "################################################################################\n#\n# gettext-gnu\n#\n################################################################################\n\n# Please keep in sync with package/libtextstyle/libtextstyle.mk\nGETTEXT_GNU_VERSION = 0.20.1\nGETTEXT_GNU_SITE = $(BR2_GNU_MIRROR)/gettext\nGETTEXT_GNU_SOURCE = gettext-$(GETTEXT_GNU_VERSION).tar.xz\nGETTEXT_GNU_INSTALL_STAGING = YES\nGETTEXT_GNU_LICENSE = LGPL-2.1+ (libintl), GPL-3.0+ (the rest)\nGETTEXT_GNU_LICENSE_FILES = COPYING gettext-runtime/intl/COPYING.LIB\nGETTEXT_GNU_CPE_ID_VENDOR = gnu\nGETTEXT_GNU_CPE_ID_PRODUCT = gettext\n# 0002-restore-the-ability-to-buld-gettext-tools-seperately-part1.patch\nGETTEXT_GNU_AUTORECONF = YES\nGETTEXT_GNU_PROVIDES = gettext\nGETTEXT_GNU_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\n# Avoid using the bundled subset of libxml2\nHOST_GETTEXT_GNU_DEPENDENCIES = host-libxml2 host-libtextstyle\n\nGETTEXT_GNU_CONF_OPTS += \\\n\t--disable-libasprintf \\\n\t--disable-acl \\\n\t--disable-openmp \\\n\t--disable-rpath \\\n\t--disable-java \\\n\t--disable-native-java \\\n\t--disable-csharp \\\n\t--disable-relocatable \\\n\t--without-emacs\n\nHOST_GETTEXT_GNU_CONF_OPTS = \\\n\t--disable-libasprintf \\\n\t--disable-acl \\\n\t--disable-openmp \\\n\t--disable-rpath \\\n\t--disable-java \\\n\t--disable-native-java \\\n\t--disable-csharp \\\n\t--disable-relocatable \\\n\t--without-emacs \\\n\t--with-installed-libtextstyle\n\n# Force the build of libintl, even if the C library provides a stub\n# gettext implementation\nifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y)\nGETTEXT_GNU_CONF_OPTS += --with-included-gettext\nelse\nGETTEXT_GNU_CONF_OPTS += --without-included-gettext\nendif\n\n# For the target version, we only need the runtime, and for the host\n# version, we only need the tools.\nGETTEXT_GNU_SUBDIR = gettext-runtime\nHOST_GETTEXT_GNU_SUBDIR = gettext-tools\n\n# Disable the build of documentation and examples of gettext-tools,\n# and the build of documentation and tests of gettext-runtime.\ndefine HOST_GETTEXT_GNU_DISABLE_UNNEEDED\n\t$(SED) '/^SUBDIRS/s/ doc //;/^SUBDIRS/s/examples$$//' $(@D)/gettext-tools/Makefile.in\n\t$(SED) '/^SUBDIRS/s/ doc //;/^SUBDIRS/s/tests$$//' $(@D)/gettext-runtime/Makefile.in\nendef\n\nGETTEXT_GNU_POST_PATCH_HOOKS += HOST_GETTEXT_GNU_DISABLE_UNNEEDED\nHOST_GETTEXT_GNU_POST_PATCH_HOOKS += HOST_GETTEXT_GNU_DISABLE_UNNEEDED\n\ndefine GETTEXT_GNU_REMOVE_UNNEEDED\n\t$(RM) -rf $(TARGET_DIR)/usr/share/gettext/ABOUT-NLS\n\trmdir --ignore-fail-on-non-empty $(TARGET_DIR)/usr/share/gettext\nendef\n\nGETTEXT_GNU_POST_INSTALL_TARGET_HOOKS += GETTEXT_GNU_REMOVE_UNNEEDED\n\n# Force build with NLS support, otherwise libintl is not built\n# This is needed because some packages (eg. libglib2) requires\n# locales, but do not properly depend on BR2_ENABLE_LOCALE, and\n# instead select BR2_PACKAGE_GETTEXT_GNU. Those packages need to be\n# fixed before we can remove the following 3 lines... :-(\nifeq ($(BR2_ENABLE_LOCALE),)\nGETTEXT_GNU_CONF_OPTS += --enable-nls\nendif\n\n# Disable interactive confirmation in host gettextize for package fixups\ndefine HOST_GETTEXT_GNU_GETTEXTIZE_CONFIRMATION\n\t$(SED) '/read dummy/d' $(HOST_DIR)/bin/gettextize\nendef\nHOST_GETTEXT_GNU_POST_INSTALL_HOOKS += HOST_GETTEXT_GNU_GETTEXTIZE_CONFIRMATION\n\n# autoreconf expects gettextize to install ABOUT-NLS, but it only gets\n# installed by gettext-runtime which we don't build/install for the\n# host, so do it manually\ndefine HOST_GETTEXT_GNU_ADD_ABOUT_NLS\n\t$(INSTALL) -m 0644 $(@D)/$(HOST_GETTEXT_GNU_SUBDIR)/ABOUT-NLS \\\n\t\t$(HOST_DIR)/share/gettext/ABOUT-NLS\nendef\n\nHOST_GETTEXT_GNU_POST_INSTALL_HOOKS += HOST_GETTEXT_GNU_ADD_ABOUT_NLS\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/gettext-tiny/Config.in",
    "content": "config BR2_PACKAGE_GETTEXT_TINY\n\tbool\n\tselect BR2_PACKAGE_HAS_GETTEXT\n\thelp\n\t  Stub and/or lightweight replacements of the gnu gettext\n\t  suite; because the GNU one takes ages to compile.\n\n\t  https://github.com/sabotage-linux/gettext-tiny\n\nif BR2_PACKAGE_GETTEXT_TINY\n\nconfig BR2_PACKAGE_PROVIDES_GETTEXT\n\tdefault \"gettext-tiny\"\n\nendif\n\nconfig BR2_PACKAGE_PROVIDES_HOST_GETTEXT\n\tdefault \"host-gettext-tiny\" if !BR2_SYSTEM_ENABLE_NLS\n"
  },
  {
    "path": "package/gettext-tiny/gettext-tiny.hash",
    "content": "# Locally Computed:\nsha256  29cc165e27e83d2bb3760118c2368eadab550830d962d758e51bd36eb860f383  gettext-tiny-0.3.2.tar.gz\nsha256  4c938aa3d8fa3c184bba5e87a8a2febc89560627c9d0567536879e3eca1a7b4f  LICENSE\nsha256  e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b  extra/COPYING\n# From https://lists.gnu.org/archive/html/info-gnu/2019-05/msg00011.html\nsha1  62f4a6a2fd5f80bfd0e66c497a04094fa3e07b90  gettext-0.20.1.tar.xz\n"
  },
  {
    "path": "package/gettext-tiny/gettext-tiny.mk",
    "content": "################################################################################\n#\n# gettext-tiny\n#\n################################################################################\n\nGETTEXT_TINY_VERSION = 0.3.2\nGETTEXT_TINY_SITE = $(call github,sabotage-linux,gettext-tiny,v$(GETTEXT_TINY_VERSION))\nGETTEXT_TINY_LICENSE = MIT, GPL-3.0+ (extra gettext)\nGETTEXT_TINY_INSTALL_STAGING = YES\nGETTEXT_TINY_LICENSE_FILES = LICENSE\nHOST_GETTEXT_TINY_LICENSE_FILES = LICENSE extra/COPYING\n\nGETTEXT_TINY_PROVIDES = gettext\n\n# needed for gettextize\nGETTEXT_TINY_ARCHIVE_VERSION = 0.20.1\n\nGETTEXT_TINY_EXTRA_GETTEXT_FILES = \\\n\tgettext-tools/misc/gettextize.in \\\n\tgettext-tools/po/Makevars.template \\\n\tgettext-runtime/po/boldquot.sed \\\n\tgettext-runtime/po/en@boldquot.header \\\n\tgettext-runtime/po/en@quot.header \\\n\tgettext-runtime/po/insert-header.sin \\\n\tgettext-runtime/po/quot.sed \\\n\tgettext-runtime/po/remove-potcdate.sin \\\n\tgettext-runtime/po/Rules-quot \\\n\tgettext-runtime/po/Makefile.in.in \\\n\tCOPYING\n\nHOST_GETTEXT_TINY_EXTRA_DOWNLOADS = $(GETTEXT_GNU_SITE)/$(GETTEXT_GNU_SOURCE)\n\ndefine HOST_GETTEXT_TINY_EXTRACT_GNU_GETTEXT\n\tmkdir -p $(@D)/gettext-gnu\n\t$(call suitable-extractor,$(GETTEXT_GNU_SOURCE)) \\\n\t\t$(GETTEXT_TINY_DL_DIR)/$(GETTEXT_GNU_SOURCE) | \\\n\t\t$(TAR) --strip-components=1 -C $(@D)/gettext-gnu $(TAR_OPTIONS) -\nendef\nHOST_GETTEXT_TINY_POST_EXTRACT_HOOKS += HOST_GETTEXT_TINY_EXTRACT_GNU_GETTEXT\n\ndefine HOST_GETTEXT_TINY_COPY_EXTRA_FILES\n\t$(foreach f,$(GETTEXT_TINY_EXTRA_GETTEXT_FILES),\\\n\t\t$(INSTALL) -D -m 0644 $(@D)/gettext-gnu/$(f) $(@D)/extra/$(notdir $(f))\n\t)\n\t$(INSTALL) -D -m 0755 $(@D)/gettext-gnu/build-aux/config.rpath \\\n\t\t$(@D)/build-aux/config.rpath\nendef\nHOST_GETTEXT_TINY_POST_PATCH_HOOKS += HOST_GETTEXT_TINY_COPY_EXTRA_FILES\n\ndefine HOST_GETTEXT_TINY_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(HOST_CONFIGURE_OPTS) \\\n\t\tprefix=$(HOST_DIR) \\\n\t\tCFLAGS=\"$(HOST_CFLAGS) -fPIC\" \\\n\t\tLIBINTL=NONE\n\n\tcp $(@D)/extra/gettextize.in $(@D)/gettextize\n\n\t$(SED) 's,@PACKAGE@,gettext-tools,g;' $(@D)/gettextize\n\t$(SED) 's,@VERSION@,$(GETTEXT_GNU_VERSION),g;' $(@D)/gettextize\n\t$(SED) 's,@ARCHIVE_VERSION@,$(GETTEXT_TINY_ARCHIVE_VERSION),' $(@D)/gettextize\n\t$(SED) 's,@prefix@,$(HOST_DIR),g;' $(@D)/gettextize\n\t$(SED) 's,@datarootdir@,$${prefix}/share,g;' $(@D)/gettextize\n\t$(SED) 's,@datadir@,$${prefix}/share,g;' $(@D)/gettextize\n\t$(SED) 's,@PATH_SEPARATOR@,:,g;' $(@D)/gettextize\n\t$(SED) 's,@RELOCATABLE@,no,g;' $(@D)/gettextize\n\t$(SED) 's,@exec_prefix@,$${prefix},g;' $(@D)/gettextize\n\t$(SED) 's,@bindir@,$${exec_prefix}/bin,g;' $(@D)/gettextize\nendef\n\ndefine HOST_GETTEXT_TINY_INSTALL_CMDS\n\t$(Q)mkdir -p $(HOST_DIR)/share/gettext-tiny/po\n\t$(Q)mkdir -p $(HOST_DIR)/share/gettext-tiny/m4\n\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(HOST_CONFIGURE_OPTS) \\\n\t\tprefix=$(HOST_DIR) \\\n\t\tLIBINTL=NONE install\n\n\t$(SED) '/read dummy/d' $(@D)/gettextize\n\n\t$(INSTALL) -m 0755 -D $(@D)/gettextize $(HOST_DIR)/bin/gettextize\n\t$(INSTALL) -m 0644 -D $(@D)/build-aux/config.rpath $(HOST_DIR)/share/gettext-tiny/config.rpath\n\t$(INSTALL) -m 0644 -D $(@D)/extra/Makefile.in.in $(HOST_DIR)/share/gettext-tiny/po/Makefile.in.in\n\t$(INSTALL) -m 0644 -D $(@D)/extra/boldquot.sed $(HOST_DIR)/share/gettext-tiny/po/boldquot.sed\n\t$(INSTALL) -m 0644 -D $(@D)/extra/en@boldquot.header $(HOST_DIR)/share/gettext-tiny/po/en@boldquot.header\n\t$(INSTALL) -m 0644 -D $(@D)/extra/en@quot.header $(HOST_DIR)/share/gettext-tiny/po/en@quot.header\n\t$(INSTALL) -m 0644 -D $(@D)/extra/insert-header.sin $(HOST_DIR)/share/gettext-tiny/po/insert-header.sin\n\t$(INSTALL) -m 0644 -D $(@D)/extra/quot.sed $(HOST_DIR)/share/gettext-tiny/po/quot.sed\n\t$(INSTALL) -m 0644 -D $(@D)/extra/remove-potcdate.sin $(HOST_DIR)/share/gettext-tiny/po/remove-potcdate.sin\n\t$(INSTALL) -m 0644 -D $(@D)/extra/Rules-quot $(HOST_DIR)/share/gettext-tiny/po/Rules-quot\n\t$(INSTALL) -m 0644 -D $(@D)/extra/Makevars.template $(HOST_DIR)/share/gettext-tiny/po/Makevars.template\n\n\t$(Q)touch $(HOST_DIR)/share/gettext-tiny/ABOUT-NLS\n\n\t# for gettextize\n\tln -sf $(HOST_DIR)/usr/share/gettext-tiny $(HOST_DIR)/usr/share/gettext\nendef\n\n# Install simple echo wrapper for gettext tool\ndefine GETTEXT_TINY_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(GETTEXT_TINY_PKGDIR)/gettext-wrapper $(TARGET_DIR)/usr/bin/gettext\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/gettext-tiny/gettext-wrapper",
    "content": "#!/bin/sh\n#\n# Thanks to \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n# for this gettext replacement.\n\nwhile [ ${#} -ne 0 ]; do\n    case \"${1}\" in\n        (-h)              printf \"no help\\n\"; return 0;;\n        (-V)              printf \"0.0.0\\n\"; return 0;;\n        (-d|--domain)     shift 2;;\n        (-d*|--domain=*)  shift 1;;\n        (-e|-E|-n)        shift 1;;\n        (-s)              shift 1;;  # Ignore?\n        (-*)              printf \"invalid option '%s'\\n\" \"${1}\" >&2; return 1;;\n        (*)               break;;\n    esac\ndone\n\ncase ${#} in\n    (0)   printf \"missing arguments\\n\" >&2; return 1;;\n    (1)   printf \"%s\" \"${1}\";;\n    (2)   printf \"%s\" \"${2}\";;\n    (*)   printf \"too many arguments\\n\" >&2; return 1;;\nesac\n"
  },
  {
    "path": "package/gflags/Config.in",
    "content": "config BR2_PACKAGE_GFLAGS\n\tbool \"gflags\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  The gflags package contains a C++ library that implements\n\t  commandline flags processing. It includes built-in support for\n\t  standard types such as string and the ability to define flags\n\t  in the source file in which they are used.\n\n\t  https://github.com/gflags/gflags\n\ncomment \"gflags needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/gflags/gflags.hash",
    "content": "# Locally computed\nsha256 34af2f15cf7367513b352bdcd2493ab14ce43692d2dcd9dfc499492966c64dcf gflags-2.2.2.tar.gz\n\n# Hash for license file:\nsha256 90d1f3701813c3cd65eee2dc736746fe46b465918f3f7d6d31463a2018b33fa5  COPYING.txt\n"
  },
  {
    "path": "package/gflags/gflags.mk",
    "content": "################################################################################\n#\n# gflags\n#\n################################################################################\n\nGFLAGS_VERSION = 2.2.2\nGFLAGS_SITE = $(call github,gflags,gflags,v$(GFLAGS_VERSION))\nGFLAGS_INSTALL_STAGING = YES\nGFLAGS_LICENSE = BSD-3-Clause\nGFLAGS_LICENSE_FILES = COPYING.txt\n\n# Force Release otherwise libraries will be suffixed by _debug which will raise\n# unexpected build failures with packages that use gflags (e.g. rocksdb)\nGFLAGS_CONF_OPTS = -DCMAKE_BUILD_TYPE=Release\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),)\nGFLAGS_CONF_OPTS += -DBUILD_gflags_LIB=OFF \\\n\t-DCMAKE_CXX_FLAGS=\"$(TARGET_CXXFLAGS) -DNO_THREADS\"\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/ghostscript/0001-bug-702985-drop-use-of-FT_CALLBACK_DEF.patch",
    "content": "From 41ef9a0bc36b9db7115fbe9623f989bfb47bbade Mon Sep 17 00:00:00 2001\nFrom: Chris Liddell <chris.liddell@artifex.com>\nDate: Tue, 20 Oct 2020 09:49:45 +0100\nSubject: [PATCH] Bug 702985: drop use of FT_CALLBACK_DEF() def\n\nFrom 2.10.3, Freetype disappeared the FT_CALLBACK_DEF() macro, which is what\nwe used when defining our callbacks from Freetype.\n\nNo guidance forthcoming from the Freetype developer who made those changes,\nso change to explicitly declaring the callbacks file static.\n\nShould fix the reported build failures.\n\nDownloaded from upstream commit:\nhttps://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=41ef9a0bc36b\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n base/fapi_ft.c | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/base/fapi_ft.c b/base/fapi_ft.c\nindex 65fa6dcf4..21aef2f06 100644\n--- a/base/fapi_ft.c\n+++ b/base/fapi_ft.c\n@@ -125,7 +125,7 @@ static void\n delete_inc_int_info(gs_fapi_server * a_server,\n                     FT_IncrementalRec * a_inc_int_info);\n \n-FT_CALLBACK_DEF(void *)\n+static void *\n FF_alloc(FT_Memory memory, long size)\n {\n     gs_memory_t *mem = (gs_memory_t *) memory->user;\n@@ -133,7 +133,7 @@ FF_alloc(FT_Memory memory, long size)\n     return (gs_malloc(mem, size, 1, \"FF_alloc\"));\n }\n \n-FT_CALLBACK_DEF(void *)\n+static void *\n     FF_realloc(FT_Memory memory, long cur_size, long new_size, void *block)\n {\n     gs_memory_t *mem = (gs_memory_t *) memory->user;\n@@ -153,7 +153,7 @@ FT_CALLBACK_DEF(void *)\n     return (tmp);\n }\n \n-FT_CALLBACK_DEF(void)\n+static void\n     FF_free(FT_Memory memory, void *block)\n {\n     gs_memory_t *mem = (gs_memory_t *) memory->user;\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/ghostscript/0002-Bug-704342-Include-device-specifier-strings-in-acces.patch",
    "content": "From a9bd3dec9fde03327a4a2c69dad1036bf9632e20 Mon Sep 17 00:00:00 2001\nFrom: Chris Liddell <chris.liddell@artifex.com>\nDate: Tue, 7 Sep 2021 20:36:12 +0100\nSubject: [PATCH] Bug 704342: Include device specifier strings in access\n validation\n\nfor the \"%pipe%\", %handle%\" and %printer% io devices.\n\nWe previously validated only the part after the \"%pipe%\" Postscript device\nspecifier, but this proved insufficient.\n\nThis rebuilds the original file name string, and validates it complete. The\nslight complication for \"%pipe%\" is it can be reached implicitly using\n\"|\" so we have to check both prefixes.\n\nAddresses CVE-2021-3781\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n base/gdevpipe.c | 22 +++++++++++++++-\n base/gp_mshdl.c | 11 +++++++-\n base/gp_msprn.c | 10 ++++++-\n base/gp_os2pr.c | 13 +++++++++-\n base/gslibctx.c | 69 ++++++++++---------------------------------------\n 5 files changed, 65 insertions(+), 60 deletions(-)\n\ndiff --git a/base/gdevpipe.c b/base/gdevpipe.c\nindex 96d71f5d8..5bdc485be 100644\n--- a/base/gdevpipe.c\n+++ b/base/gdevpipe.c\n@@ -72,8 +72,28 @@ pipe_fopen(gx_io_device * iodev, const char *fname, const char *access,\n #else\n     gs_lib_ctx_t *ctx = mem->gs_lib_ctx;\n     gs_fs_list_t *fs = ctx->core->fs;\n+    /* The pipe device can be reached in two ways, explicltly with %pipe%\n+       or implicitly with \"|\", so we have to check for both\n+     */\n+    char f[gp_file_name_sizeof];\n+    const char *pipestr = \"|\";\n+    const size_t pipestrlen = strlen(pipestr);\n+    const size_t preflen = strlen(iodev->dname);\n+    const size_t nlen = strlen(fname);\n+    int code1;\n+\n+    if (preflen + nlen >= gp_file_name_sizeof)\n+        return_error(gs_error_invalidaccess);\n+\n+    memcpy(f, iodev->dname, preflen);\n+    memcpy(f + preflen, fname, nlen + 1);\n+\n+    code1 = gp_validate_path(mem, f, access);\n+\n+    memcpy(f, pipestr, pipestrlen);\n+    memcpy(f + pipestrlen, fname, nlen + 1);\n \n-    if (gp_validate_path(mem, fname, access) != 0)\n+    if (code1 != 0 && gp_validate_path(mem, f, access) != 0 )\n         return gs_error_invalidfileaccess;\n \n     /*\ndiff --git a/base/gp_mshdl.c b/base/gp_mshdl.c\nindex 2b964ed74..8d87ceadc 100644\n--- a/base/gp_mshdl.c\n+++ b/base/gp_mshdl.c\n@@ -95,8 +95,17 @@ mswin_handle_fopen(gx_io_device * iodev, const char *fname, const char *access,\n     long hfile;\t/* Correct for Win32, may be wrong for Win64 */\n     gs_lib_ctx_t *ctx = mem->gs_lib_ctx;\n     gs_fs_list_t *fs = ctx->core->fs;\n+    char f[gp_file_name_sizeof];\n+    const size_t preflen = strlen(iodev->dname);\n+    const size_t nlen = strlen(fname);\n \n-    if (gp_validate_path(mem, fname, access) != 0)\n+    if (preflen + nlen >= gp_file_name_sizeof)\n+        return_error(gs_error_invalidaccess);\n+\n+    memcpy(f, iodev->dname, preflen);\n+    memcpy(f + preflen, fname, nlen + 1);\n+\n+    if (gp_validate_path(mem, f, access) != 0)\n         return gs_error_invalidfileaccess;\n \n     /* First we try the open_handle method. */\ndiff --git a/base/gp_msprn.c b/base/gp_msprn.c\nindex ed4827968..746a974f7 100644\n--- a/base/gp_msprn.c\n+++ b/base/gp_msprn.c\n@@ -168,8 +168,16 @@ mswin_printer_fopen(gx_io_device * iodev, const char *fname, const char *access,\n     uintptr_t *ptid = &((tid_t *)(iodev->state))->tid;\n     gs_lib_ctx_t *ctx = mem->gs_lib_ctx;\n     gs_fs_list_t *fs = ctx->core->fs;\n+    const size_t preflen = strlen(iodev->dname);\n+    const size_t nlen = strlen(fname);\n \n-    if (gp_validate_path(mem, fname, access) != 0)\n+    if (preflen + nlen >= gp_file_name_sizeof)\n+        return_error(gs_error_invalidaccess);\n+\n+    memcpy(pname, iodev->dname, preflen);\n+    memcpy(pname + preflen, fname, nlen + 1);\n+\n+    if (gp_validate_path(mem, pname, access) != 0)\n         return gs_error_invalidfileaccess;\n \n     /* First we try the open_printer method. */\ndiff --git a/base/gp_os2pr.c b/base/gp_os2pr.c\nindex f852c71fc..ba54cde66 100644\n--- a/base/gp_os2pr.c\n+++ b/base/gp_os2pr.c\n@@ -107,9 +107,20 @@ os2_printer_fopen(gx_io_device * iodev, const char *fname, const char *access,\n            FILE ** pfile, char *rfname, uint rnamelen)\n {\n     os2_printer_t *pr = (os2_printer_t *)iodev->state;\n-    char driver_name[256];\n+    char driver_name[gp_file_name_sizeof];\n     gs_lib_ctx_t *ctx = mem->gs_lib_ctx;\n     gs_fs_list_t *fs = ctx->core->fs;\n+    const size_t preflen = strlen(iodev->dname);\n+    const int size_t = strlen(fname);\n+\n+    if (preflen + nlen >= gp_file_name_sizeof)\n+        return_error(gs_error_invalidaccess);\n+\n+    memcpy(driver_name, iodev->dname, preflen);\n+    memcpy(driver_name + preflen, fname, nlen + 1);\n+\n+    if (gp_validate_path(mem, driver_name, access) != 0)\n+        return gs_error_invalidfileaccess;\n \n     /* First we try the open_printer method. */\n     /* Note that the loop condition here ensures we don't\ndiff --git a/base/gslibctx.c b/base/gslibctx.c\nindex 6dfed6cd5..318039fad 100644\n--- a/base/gslibctx.c\n+++ b/base/gslibctx.c\n@@ -655,82 +655,39 @@ rewrite_percent_specifiers(char *s)\n int\n gs_add_outputfile_control_path(gs_memory_t *mem, const char *fname)\n {\n-    char *fp, f[gp_file_name_sizeof];\n-    const int pipe = 124; /* ASCII code for '|' */\n-    const int len = strlen(fname);\n-    int i, code;\n+    char f[gp_file_name_sizeof];\n+    int code;\n \n     /* Be sure the string copy will fit */\n-    if (len >= gp_file_name_sizeof)\n+    if (strlen(fname) >= gp_file_name_sizeof)\n         return gs_error_rangecheck;\n     strcpy(f, fname);\n-    fp = f;\n     /* Try to rewrite any %d (or similar) in the string */\n     rewrite_percent_specifiers(f);\n-    for (i = 0; i < len; i++) {\n-        if (f[i] == pipe) {\n-           fp = &f[i + 1];\n-           /* Because we potentially have to check file permissions at two levels\n-              for the output file (gx_device_open_output_file and the low level\n-              fopen API, if we're using a pipe, we have to add both the full string,\n-              (including the '|', and just the command to which we pipe - since at\n-              the pipe_fopen(), the leading '|' has been stripped.\n-            */\n-           code = gs_add_control_path(mem, gs_permit_file_writing, f);\n-           if (code < 0)\n-               return code;\n-           code = gs_add_control_path(mem, gs_permit_file_control, f);\n-           if (code < 0)\n-               return code;\n-           break;\n-        }\n-        if (!IS_WHITESPACE(f[i]))\n-            break;\n-    }\n-    code = gs_add_control_path(mem, gs_permit_file_control, fp);\n+\n+    code = gs_add_control_path(mem, gs_permit_file_control, f);\n     if (code < 0)\n         return code;\n-    return gs_add_control_path(mem, gs_permit_file_writing, fp);\n+    return gs_add_control_path(mem, gs_permit_file_writing, f);\n }\n \n int\n gs_remove_outputfile_control_path(gs_memory_t *mem, const char *fname)\n {\n-    char *fp, f[gp_file_name_sizeof];\n-    const int pipe = 124; /* ASCII code for '|' */\n-    const int len = strlen(fname);\n-    int i, code;\n+    char f[gp_file_name_sizeof];\n+    int code;\n \n     /* Be sure the string copy will fit */\n-    if (len >= gp_file_name_sizeof)\n+    if (strlen(fname) >= gp_file_name_sizeof)\n         return gs_error_rangecheck;\n     strcpy(f, fname);\n-    fp = f;\n     /* Try to rewrite any %d (or similar) in the string */\n-    for (i = 0; i < len; i++) {\n-        if (f[i] == pipe) {\n-           fp = &f[i + 1];\n-           /* Because we potentially have to check file permissions at two levels\n-              for the output file (gx_device_open_output_file and the low level\n-              fopen API, if we're using a pipe, we have to add both the full string,\n-              (including the '|', and just the command to which we pipe - since at\n-              the pipe_fopen(), the leading '|' has been stripped.\n-            */\n-           code = gs_remove_control_path(mem, gs_permit_file_writing, f);\n-           if (code < 0)\n-               return code;\n-           code = gs_remove_control_path(mem, gs_permit_file_control, f);\n-           if (code < 0)\n-               return code;\n-           break;\n-        }\n-        if (!IS_WHITESPACE(f[i]))\n-            break;\n-    }\n-    code = gs_remove_control_path(mem, gs_permit_file_control, fp);\n+    rewrite_percent_specifiers(f);\n+\n+    code = gs_remove_control_path(mem, gs_permit_file_control, f);\n     if (code < 0)\n         return code;\n-    return gs_remove_control_path(mem, gs_permit_file_writing, fp);\n+    return gs_remove_control_path(mem, gs_permit_file_writing, f);\n }\n \n int\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/ghostscript/Config.in",
    "content": "config BR2_PACKAGE_GHOSTSCRIPT\n\tbool \"ghostscript\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_GHOSTSCRIPT_FONTS\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LCMS2\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_TIFF\n\thelp\n\t  Ghostscript is an interpreter for PostScript and Portable\n\t  Document Format (PDF) files.\n\n\t  http://ghostscript.com\n"
  },
  {
    "path": "package/ghostscript/ghostscript.hash",
    "content": "# From https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9533/SHA512SUMS\nsha512  c142ef9d83896aa8fd18c8e412220fe8f4950614be00d327d27ab051fe85e16524bf2ee00f46c2aca7a352ce47bc3acf2c4de0f7bbea7e4c55474b8af6cdc0a6  ghostscript-9.53.3.tar.gz\n\n# Hash for license file:\nsha256  6f852249f975287b3efd43a5883875e47fa9f3125e2f1b18b5c09517ac30ecf2  LICENSE\n"
  },
  {
    "path": "package/ghostscript/ghostscript.mk",
    "content": "################################################################################\n#\n# ghostscript\n#\n################################################################################\n\nGHOSTSCRIPT_VERSION = 9.53.3\nGHOSTSCRIPT_SITE = https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs$(subst .,,$(GHOSTSCRIPT_VERSION))\nGHOSTSCRIPT_LICENSE = AGPL-3.0\nGHOSTSCRIPT_LICENSE_FILES = LICENSE\nGHOSTSCRIPT_CPE_ID_VENDOR = artifex\nGHOSTSCRIPT_DEPENDENCIES = \\\n\thost-lcms2 \\\n\thost-libjpeg \\\n\thost-pkgconf \\\n\thost-zlib \\\n\tfontconfig \\\n\tghostscript-fonts \\\n\tjpeg \\\n\tlcms2 \\\n\tlibpng \\\n\ttiff\n\n# 0002-Bug-704342-Include-device-specifier-strings-in-acces.patch\nGHOSTSCRIPT_IGNORE_CVES += CVE-2021-3781\n\n# Ghostscript includes (old) copies of several libraries, delete them.\n# Inspired by linuxfromscratch:\n# http://www.linuxfromscratch.org/blfs/view/svn/pst/gs.html\ndefine GHOSTSCRIPT_REMOVE_LIBS\n\trm -rf $(@D)/freetype $(@D)/ijs $(@D)/jbig2dec $(@D)/jpeg \\\n\t\t$(@D)/lcms2mt $(@D)/libpng $(@D)/openjpeg $(@D)/tiff \\\n\t\t$(@D)/zlib\nendef\nGHOSTSCRIPT_POST_PATCH_HOOKS += GHOSTSCRIPT_REMOVE_LIBS\n\nGHOSTSCRIPT_CONF_ENV = \\\n\tCCAUX=\"$(HOSTCC)\" \\\n\tCFLAGSAUX=\"$(HOST_CFLAGS) $(HOST_LDFLAGS)\" \\\n\tPKGCONFIG=\"$(PKG_CONFIG_HOST_BINARY)\"\n\nGHOSTSCRIPT_CONF_OPTS = \\\n\t--disable-compile-inits \\\n\t--enable-fontconfig \\\n\t--with-fontpath=/usr/share/fonts \\\n\t--enable-freetype \\\n\t--disable-gtk \\\n\t--without-libpaper \\\n\t--with-system-libtiff\n\nifeq ($(BR2_PACKAGE_JBIG2DEC),y)\nGHOSTSCRIPT_DEPENDENCIES += jbig2dec\nGHOSTSCRIPT_CONF_OPTS += --with-jbig2dec\nelse\nGHOSTSCRIPT_CONF_OPTS += --without-jbig2dec\nendif\n\nifeq ($(BR2_PACKAGE_LIBIDN),y)\nGHOSTSCRIPT_DEPENDENCIES += libidn\nGHOSTSCRIPT_CONF_OPTS += --with-libidn\nelse\nGHOSTSCRIPT_CONF_OPTS += --without-libidn\nendif\n\nifeq ($(BR2_PACKAGE_OPENJPEG),y)\nGHOSTSCRIPT_DEPENDENCIES += openjpeg\nGHOSTSCRIPT_CONF_OPTS += --enable-openjpeg\nelse\nGHOSTSCRIPT_CONF_OPTS += --disable-openjpeg\nendif\n\nifeq ($(BR2_PACKAGE_CUPS),y)\nGHOSTSCRIPT_DEPENDENCIES += cups\nGHOSTSCRIPT_CONF_OPTS += \\\n\tCUPSCONFIG=$(STAGING_DIR)/usr/bin/cups-config \\\n\t--enable-cups\nelse\nGHOSTSCRIPT_CONF_OPTS += --disable-cups\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)\nGHOSTSCRIPT_DEPENDENCIES += xlib_libX11\nGHOSTSCRIPT_CONF_OPTS += --with-x\nelse\nGHOSTSCRIPT_CONF_OPTS += --without-x\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ghostscript-fonts/Config.in",
    "content": "config BR2_PACKAGE_GHOSTSCRIPT_FONTS\n\tbool \"ghostscript-fonts\"\n\thelp\n\t  Fonts and font metrics customarily distributed with\n\t  Ghostscript. Currently includes the 35 standard PostScript\n\t  fonts and a grab-bag of others.\n\n\t  http://sourceforge.net/projects/gs-fonts\n"
  },
  {
    "path": "package/ghostscript-fonts/ghostscript-fonts.hash",
    "content": "# From http://sourceforge.net/projects/gs-fonts/files/gs-fonts/8.11%20%28base%2035%2C%20GPL%29/\nsha1\t2a7198e8178b2e7dba87cb5794da515200b568f5\tghostscript-fonts-std-8.11.tar.gz\n# Locally computed\nsha256 0eb6f356119f2e49b2563210852e17f57f9dcc5755f350a69a46a0d641a0c401  ghostscript-fonts-std-8.11.tar.gz\nsha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/ghostscript-fonts/ghostscript-fonts.mk",
    "content": "################################################################################\n#\n# ghostscript-fonts\n#\n################################################################################\n\nGHOSTSCRIPT_FONTS_VERSION = 8.11\nGHOSTSCRIPT_FONTS_SITE = http://downloads.sourceforge.net/project/gs-fonts/gs-fonts/8.11%20%28base%2035%2C%20GPL%29\nGHOSTSCRIPT_FONTS_SOURCE = ghostscript-fonts-std-$(GHOSTSCRIPT_FONTS_VERSION).tar.gz\nGHOSTSCRIPT_FONTS_LICENSE = GPL-2.0\nGHOSTSCRIPT_FONTS_LICENSE_FILES = COPYING\n\nGHOSTSCRIPT_FONTS_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/gs\n\ndefine GHOSTSCRIPT_FONTS_INSTALL_TARGET_CMDS\n\tmkdir -p $(GHOSTSCRIPT_FONTS_TARGET_DIR)\n\t$(INSTALL) -m 644 $(@D)/*.afm $(GHOSTSCRIPT_FONTS_TARGET_DIR)\n\t$(INSTALL) -m 644 $(@D)/*.pfb $(GHOSTSCRIPT_FONTS_TARGET_DIR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/giblib/0001-fix-imlib2-detection.patch",
    "content": "configure.ac + Makefile.am: fix the imlib2 detection\n\nAlthough imlib2 is correctly checked for, the variables used to get\nthe CFLAGS and LIBS are wrong (perhaps a remnant of the pre-imlib2\nera, when giblib was using imlib).\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff --git a/configure.ac b/configure.ac\nindex 6807d86..c8874f0 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -18,16 +18,10 @@ AM_MAINTAINER_MODE\n AM_WITH_DMALLOC\n \n AC_PATH_GENERIC(imlib2, 1.0.0, [\n-  AC_SUBST(IMLIB_LIBS)\n-  AC_SUBST(IMLIB_CFLAGS) ],\n+  AC_SUBST(IMLIB2_LIBS)\n+  AC_SUBST(IMLIB2_CFLAGS) ],\n   AC_MSG_ERROR(Cannot find imlib2: Is imlib2-config in the path?) )\n \n-dnl the above doesn't work for some reason :/\n-IMLIB_LIBS=`imlib2-config --libs`\n-IMLIB_CFLAGS=`imlib2-config --cflags`\n-AC_SUBST(IMLIB_LIBS)\n-AC_SUBST(IMLIB_CFLAGS)\n-\n LIBS=\"$LIBS -lm\"\n CFLAGS=\"$CFLAGS -Wall\"\n \n@@ -48,7 +42,7 @@ $PACKAGE $VERSION\n Configuration:\n --------------\n \n-Imlib2 libs:\t$IMLIB_LIBS\n-Imlib2 cflags:  $IMLIB_CFLAGS\n+Imlib2 libs:\t$IMLIB2_LIBS\n+Imlib2 cflags:  $IMLIB2_CFLAGS\n CFLAGS:\t\t\t$CFLAGS\n \"\ndiff --git a/configure.in b/configure.in\nindex 432cb16..6999095 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -17,16 +17,10 @@ AM_MAINTAINER_MODE\n AM_WITH_DMALLOC\n \n AC_PATH_GENERIC(imlib2, 1.0.0, [\n-  AC_SUBST(IMLIB_LIBS)\n-  AC_SUBST(IMLIB_CFLAGS) ],\n+  AC_SUBST(IMLIB2_LIBS)\n+  AC_SUBST(IMLIB2_CFLAGS) ],\n   AC_MSG_ERROR(Cannot find imlib2: Is imlib2-config in the path?) )\n \n-dnl the above doesn't work for some reason :/\n-IMLIB_LIBS=`imlib2-config --libs`\n-IMLIB_CFLAGS=`imlib2-config --cflags`\n-AC_SUBST(IMLIB_LIBS)\n-AC_SUBST(IMLIB_CFLAGS)\n-\n LIBS=\"$LIBS -lm\"\n CFLAGS=\"$CFLAGS -Wall\"\n \n@@ -45,7 +39,7 @@ $PACKAGE $VERSION\n Configuration:\n --------------\n \n-Imlib2 libs:\t$IMLIB_LIBS\n-Imlib2 cflags:  $IMLIB_CFLAGS\n+Imlib2 libs:\t$IMLIB2_LIBS\n+Imlib2 cflags:  $IMLIB2_CFLAGS\n CFLAGS:\t\t\t$CFLAGS\n \"\ndiff --git a/giblib-config.in b/giblib-config.in\nindex f3a7db6..cef1620 100644\n--- a/giblib-config.in\n+++ b/giblib-config.in\n@@ -42,11 +42,11 @@ while test $# -gt 0; do\n       if test @includedir@ != /usr/include ; then\n         includes=-I@includedir@\n       fi\n-      echo $includes -I$prefix/include/giblib @IMLIB_CFLAGS@\n+      echo $includes -I$prefix/include/giblib @IMLIB2_CFLAGS@\n       ;;\n     --libs)\n       libdirs=-L@libdir@\n-      echo $libdirs -lgiblib @LDFLAGS@ @IMLIB_LIBS@\n+      echo $libdirs -lgiblib @LDFLAGS@ @IMLIB2_LIBS@\n       ;;\n     *)\n       echo \"${usage}\" 1>&2\ndiff --git a/giblib.pc.in b/giblib.pc.in\nindex df520ae..783e6e1 100644\n--- a/giblib.pc.in\n+++ b/giblib.pc.in\n@@ -6,6 +6,6 @@ includedir=@includedir@\n Name: giblib\n Description: wrapper library for imlib2, and other stuff\n Version: @VERSION@\n-Libs: -L${libdir} -lgiblib @LDFLAGS@ @IMLIB_LIBS@\n-Cflags: -I${includedir} -I${includedir}/giblib @IMLIB_CFLAGS@\n+Libs: -L${libdir} -lgiblib @LDFLAGS@ @IMLIB2_LIBS@\n+Cflags: -I${includedir} -I${includedir}/giblib @IMLIB2_CFLAGS@\n \ndiff --git a/giblib/Makefile.am b/giblib/Makefile.am\nindex d1edc09..49d8ac4 100644\n--- a/giblib/Makefile.am\n+++ b/giblib/Makefile.am\n@@ -3,7 +3,7 @@ MAINTAINERCLEANFILES = Makefile.in\n \n INCLUDES = \\\n -I. -I$(top_srcdir) \\\n--DPREFIX=\\\"\"$(prefix)\"\\\" @IMLIB_CFLAGS@\n+-DPREFIX=\\\"\"$(prefix)\"\\\" @IMLIB2_CFLAGS@\n \n lib_LTLIBRARIES = libgiblib.la\n \n@@ -24,7 +24,7 @@ libgiblib_la_SOURCES = \\\n     gib_utils.c gib_utils.h \\\n \tgib_queue.c gib_queue.h\n \n-libgiblib_la_LIBADD = @IMLIB_LIBS@\n+libgiblib_la_LIBADD = @IMLIB2_LIBS@\n libgiblib_la_DEPENDENCIES = giblib_config.h\n libgiblib_la_LDFLAGS = -version-info 1:6:0\n \n"
  },
  {
    "path": "package/giblib/Config.in",
    "content": "config BR2_PACKAGE_GIBLIB\n\tbool \"giblib\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_IMLIB2\n\tselect BR2_PACKAGE_IMLIB2_X\n\thelp\n\t  Giblib is a simple library which wraps imlib2.\n\n\t  http://linuxbrit.co.uk/giblib/\n\ncomment \"giblib support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/giblib/giblib.hash",
    "content": "# Locally calculated\nsha256  176611c4d88d742ea4013991ad54c2f9d2feefbc97a28434c0f48922ebaa8bac  giblib-1.2.4.tar.gz\nsha256  8601e2dacede853fe325f7fd3a11f93b1753d576db60426f1b0ff4e68f41ff07  COPYING\n"
  },
  {
    "path": "package/giblib/giblib.mk",
    "content": "################################################################################\n#\n# giblib\n#\n################################################################################\n\nGIBLIB_VERSION = 1.2.4\nGIBLIB_SITE = http://linuxbrit.co.uk/downloads\nGIBLIB_INSTALL_STAGING = YES\nGIBLIB_DEPENDENCIES = imlib2\nGIBLIB_AUTORECONF = YES\nGIBLIB_CONF_OPTS = \\\n\t--with-imlib2-prefix=$(STAGING_DIR)/usr \\\n\t--with-imlib2-exec-prefix=$(STAGING_DIR)/usr\nGIBLIB_CONFIG_SCRIPTS = giblib-config\nGIBLIB_LICENSE = MIT\nGIBLIB_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/giflib/0001-Makefile-add-targets-to-manage-static-building.patch",
    "content": "From 487407d722714f13e8a06d1a9d89f48a5738191e Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 12 Jul 2019 12:20:38 +0200\nSubject: [PATCH] Makefile: add targets to manage static building\n\nAdd static-lib, shared-lib, install-static-lib and install-shared-lib\ntargets to allow the user to build giflib when dynamic library support\nis not available or enable on the toolchain\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://sourceforge.net/p/giflib/code/merge-requests/7]\n---\n Makefile | 18 ++++++++++++++----\n 1 file changed, 14 insertions(+), 4 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex b2bf6de..111f52f 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -61,10 +61,17 @@ UTILS = $(INSTALLABLE) \\\n \n LDLIBS=libgif.a -lm\n \n-all: libgif.so libgif.a libutil.so libutil.a $(UTILS)\n+SHARED_LIBS = libgif.so libutil.so\n+STATIC_LIBS = libgif.a libutil.a\n+\n+all: shared-lib static-lib $(UTILS)\n \t$(MAKE) -C doc\n \n-$(UTILS):: libgif.a libutil.a\n+$(UTILS):: $(STATIC_LIBS)\n+\n+shared-lib: $(SHARED_LIBS)\n+\n+static-lib: $(STATIC_LIBS)\n \n libgif.so: $(OBJECTS) $(HEADERS)\n \t$(CC) $(CFLAGS) -shared $(LDFLAGS) -Wl,-soname -Wl,libgif.so.$(LIBMAJOR) -o libgif.so $(OBJECTS)\n@@ -79,7 +86,7 @@ libutil.a: $(UOBJECTS) $(UHEADERS)\n \t$(AR) rcs libutil.a $(UOBJECTS)\n \n clean:\n-\trm -f $(UTILS) $(TARGET) libgetarg.a libgif.a libgif.so libutil.a libutil.so *.o\n+\trm -f $(UTILS) $(TARGET) libgetarg.a $(SHARED_LIBS) $(STATIC_LIBS) *.o\n \trm -f libgif.so.$(LIBMAJOR).$(LIBMINOR).$(LIBPOINT)\n \trm -f libgif.so.$(LIBMAJOR)\n \trm -fr doc/*.1 *.html doc/staging\n@@ -96,12 +103,15 @@ install-bin: $(INSTALLABLE)\n install-include:\n \t$(INSTALL) -d \"$(DESTDIR)$(INCDIR)\"\n \t$(INSTALL) -m 644 gif_lib.h \"$(DESTDIR)$(INCDIR)\"\n-install-lib:\n+install-static-lib:\n \t$(INSTALL) -d \"$(DESTDIR)$(LIBDIR)\"\n \t$(INSTALL) -m 644 libgif.a \"$(DESTDIR)$(LIBDIR)/libgif.a\"\n+install-shared-lib:\n+\t$(INSTALL) -d \"$(DESTDIR)$(LIBDIR)\"\n \t$(INSTALL) -m 755 libgif.so \"$(DESTDIR)$(LIBDIR)/libgif.so.$(LIBVER)\"\n \tln -sf libgif.so.$(LIBVER) \"$(DESTDIR)$(LIBDIR)/libgif.so.$(LIBMAJOR)\"\n \tln -sf libgif.so.$(LIBMAJOR) \"$(DESTDIR)$(LIBDIR)/libgif.so\"\n+install-lib: install-static-lib install-shared-lib\n install-man:\n \t$(INSTALL) -d \"$(DESTDIR)$(MANDIR)/man1\"\n \t$(INSTALL) -m 644 doc/*.1 \"$(DESTDIR)$(MANDIR)/man1\"\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/giflib/Config.in",
    "content": "config BR2_PACKAGE_GIFLIB\n\tbool \"giflib\"\n\thelp\n\t  giflib is a library for reading and writing gif images.\n\n\t  http://sourceforge.net/projects/giflib\n"
  },
  {
    "path": "package/giflib/giflib.hash",
    "content": "# From http://sourceforge.net/projects/giflib/files\nmd5\t6f03aee4ebe54ac2cc1ab3e4b0a049e5\tgiflib-5.2.1.tar.gz\nsha1\tc3f774dcbdf26afded7788979c8081d33c6426dc\tgiflib-5.2.1.tar.gz\n# Locally computed\nsha256\t0c9b7990ecdca88b676db232c226548ac408b279f550d424d996f0d83591dd8e\tCOPYING\n"
  },
  {
    "path": "package/giflib/giflib.mk",
    "content": "################################################################################\n#\n# giflib\n#\n################################################################################\n\nGIFLIB_VERSION = 5.2.1\nGIFLIB_SITE = http://downloads.sourceforge.net/project/giflib\nGIFLIB_INSTALL_STAGING = YES\nGIFLIB_LICENSE = MIT\nGIFLIB_LICENSE_FILES = COPYING\nGIFLIB_CPE_ID_VENDOR = giflib_project\n\nifeq ($(BR2_STATIC_LIBS),y)\nGIFLIB_BUILD_LIBS = static-lib\nGIFLIB_INSTALL_LIBS = install-static-lib\nelse ifeq ($(BR2_SHARED_LIBS),y)\nGIFLIB_BUILD_LIBS = shared-lib\nGIFLIB_INSTALL_LIBS = install-shared-lib\nelse\nGIFLIB_BUILD_LIBS = static-lib shared-lib\nGIFLIB_INSTALL_LIBS = install-lib\nendif\n\ndefine GIFLIB_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(GIFLIB_BUILD_LIBS)\nendef\n\ndefine HOST_GIFLIB_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine GIFLIB_INSTALL_STAGING_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) \\\n\t\tPREFIX=/usr install-include $(GIFLIB_INSTALL_LIBS)\nendef\n\ndefine GIFLIB_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \\\n\t\tPREFIX=/usr install-include $(GIFLIB_INSTALL_LIBS)\nendef\n\ndefine HOST_GIFLIB_INSTALL_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(HOST_DIR) \\\n\t\tPREFIX=/usr install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/git/0001-Fix-build-without-threads.patch",
    "content": "From 07d66af3b0800764087c4151d4f6562d4f8cce05 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 14 Dec 2020 23:00:33 +0100\nSubject: [PATCH] Fix build without threads\n\nBuild without threads is broken since version 2.29.0 and\nhttps://github.com/git/git/commit/15b52a44e0c92a0658e891194a5b0610d1f53afc:\n\nIn file included from cache.h:4,\n                 from blame.c:1:\ngit-compat-util.h:1238:20: error: static declaration of 'flockfile' follows non-static declaration\n static inline void flockfile(FILE *fh)\n                    ^~~~~~~~~\nIn file included from git-compat-util.h:168,\n                 from cache.h:4,\n                 from blame.c:1:\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/include/stdio.h:806:13: note: previous declaration of 'flockfile' was here\n extern void flockfile (FILE *__stream) __THROW;\n             ^~~~~~~~~\nIn file included from cache.h:4,\n                 from blame.c:1:\ngit-compat-util.h:1242:20: error: static declaration of 'funlockfile' follows non-static declaration\n static inline void funlockfile(FILE *fh)\n                    ^~~~~~~~~~~\nIn file included from git-compat-util.h:168,\n                 from cache.h:4,\n                 from blame.c:1:\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/include/stdio.h:813:13: note: previous declaration of 'funlockfile' was here\n extern void funlockfile (FILE *__stream) __THROW;\n             ^~~~~~~~~~~\n\nTo avoid this build failure, check if flockfile is available before\ndefining flockfile, funlockfile and getc_unlocked\n\nFixes:\n - http://autobuild.buildroot.org/results/d41638d1ad8e78dd6f654367c905996b838ee649\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile          | 5 +++++\n configure.ac      | 6 ++++++\n git-compat-util.h | 2 +-\n 3 files changed, 12 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 6fb86c5862..58d0893a12 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -232,6 +232,8 @@ all::\n # Define NO_STRUCT_ITIMERVAL if you don't have struct itimerval\n # This also implies NO_SETITIMER\n #\n+# Define NO_FLOCKFILE if you don't have flockfile()\n+#\n # Define NO_FAST_WORKING_DIRECTORY if accessing objects in pack files is\n # generally faster on your platform than accessing the working directory.\n #\n@@ -1638,6 +1640,9 @@ endif\n ifdef NO_SETITIMER\n \tCOMPAT_CFLAGS += -DNO_SETITIMER\n endif\n+ifdef NO_FLOCKFILE\n+\tCOMPAT_CFLAGS += -DNO_FLOCKFILE\n+endif\n ifdef NO_PREAD\n \tCOMPAT_CFLAGS += -DNO_PREAD\n \tCOMPAT_OBJS += compat/pread.o\ndiff --git a/configure.ac b/configure.ac\nindex 66aedb9288..d4295b5c69 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1132,6 +1132,12 @@ GIT_CHECK_FUNC(setitimer,\n [NO_SETITIMER=YesPlease])\n GIT_CONF_SUBST([NO_SETITIMER])\n #\n+# Define NO_FLOCKFILE if you don't have flockfile.\n+GIT_CHECK_FUNC(flockfile,\n+[NO_FLOCKFILE=],\n+[NO_FLOCKFILE=YesPlease])\n+GIT_CONF_SUBST([NO_FLOCKFILE])\n+#\n # Define NO_STRCASESTR if you don't have strcasestr.\n GIT_CHECK_FUNC(strcasestr,\n [NO_STRCASESTR=],\ndiff --git a/git-compat-util.h b/git-compat-util.h\nindex 7d509c5022..279cdd941e 100644\n--- a/git-compat-util.h\n+++ b/git-compat-util.h\n@@ -1236,7 +1236,7 @@ int warn_on_fopen_errors(const char *path);\n # define SHELL_PATH \"/bin/sh\"\n #endif\n \n-#ifndef _POSIX_THREAD_SAFE_FUNCTIONS\n+#if !defined(_POSIX_THREAD_SAFE_FUNCTIONS) && defined(NO_FLOCKFILE)\n static inline void flockfile(FILE *fh)\n {\n \t; /* nothing */\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/git/Config.in",
    "content": "config BR2_PACKAGE_GIT\n\tbool \"git\"\n\tdepends on BR2_USE_MMU # uses fork()\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Git is a free and open source distributed version control\n\t  system designed to handle everything from small to very large\n\t  projects.\n\n\t  http://git-scm.com\n"
  },
  {
    "path": "package/git/git.hash",
    "content": "# From: https://www.kernel.org/pub/software/scm/git/sha256sums.asc\nsha256  9f61417a44d5b954a5012b6f34e526a3336dcf5dd720e2bb7ada92ad8b3d6680  git-2.31.1.tar.xz\n# Locally calculated\nsha256  5b2198d1645f767585e8a88ac0499b04472164c0d2da22e75ecf97ef443ab32e  COPYING\nsha256  1922f45d2c49e390032c9c0ba6d7cac904087f7cec51af30c2b2ad022ce0e76a  LGPL-2.1\n"
  },
  {
    "path": "package/git/git.mk",
    "content": "################################################################################\n#\n# git\n#\n################################################################################\n\nGIT_VERSION = 2.31.1\nGIT_SOURCE = git-$(GIT_VERSION).tar.xz\nGIT_SITE = $(BR2_KERNEL_MIRROR)/software/scm/git\nGIT_LICENSE = GPL-2.0, LGPL-2.1+\nGIT_LICENSE_FILES = COPYING LGPL-2.1\nGIT_CPE_ID_VENDOR = git-scm\nGIT_SELINUX_MODULES = apache git\nGIT_DEPENDENCIES = zlib $(TARGET_NLS_DEPENDENCIES)\n# We're patching configure.ac\nGIT_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nGIT_DEPENDENCIES += host-pkgconf openssl\nGIT_CONF_OPTS += --with-openssl\nGIT_MAKE_OPTS += LIB_4_CRYPTO=\"`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`\"\nelse\nGIT_CONF_OPTS += --without-openssl\nendif\n\nifeq ($(BR2_PACKAGE_PCRE2),y)\nGIT_DEPENDENCIES += pcre2\nGIT_CONF_OPTS += --with-libpcre2\nelse\nGIT_CONF_OPTS += --without-libpcre2\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nGIT_DEPENDENCIES += libcurl\nGIT_CONF_OPTS += --with-curl\nGIT_CONF_ENV += \\\n\tac_cv_prog_CURL_CONFIG=$(STAGING_DIR)/usr/bin/$(LIBCURL_CONFIG_SCRIPTS)\nelse\nGIT_CONF_OPTS += --without-curl\nendif\n\nifeq ($(BR2_PACKAGE_EXPAT),y)\nGIT_DEPENDENCIES += expat\nGIT_CONF_OPTS += --with-expat\nelse\nGIT_CONF_OPTS += --without-expat\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nGIT_DEPENDENCIES += libiconv\nGIT_CONF_ENV_LIBS += -liconv\nGIT_CONF_OPTS += --with-iconv=/usr/lib\nelse\nGIT_CONF_OPTS += --without-iconv\nendif\n\nifeq ($(BR2_PACKAGE_TCL),y)\nGIT_DEPENDENCIES += tcl\nGIT_CONF_OPTS += --with-tcltk\nelse\nGIT_CONF_OPTS += --without-tcltk\nendif\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),)\nGIT_MAKE_OPTS += NO_GETTEXT=1\nendif\n\nGIT_CFLAGS = $(TARGET_CFLAGS)\n\nifneq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180)$(BR2_TOOLCHAIN_HAS_GCC_BUG_93847),)\nGIT_CFLAGS += -O0\nendif\n\nGIT_CONF_OPTS += CFLAGS=\"$(GIT_CFLAGS)\"\n\nGIT_INSTALL_TARGET_OPTS = $(GIT_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install\n\n# assume yes for these tests, configure will bail out otherwise\n# saying error: cannot run test program while cross compiling\nGIT_CONF_ENV += \\\n\tac_cv_fread_reads_directories=yes \\\n\tac_cv_snprintf_returns_bogus=yes LIBS='$(GIT_CONF_ENV_LIBS)'\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/git-crypt/Config.in",
    "content": "config BR2_PACKAGE_GIT_CRYPT\n\tbool \"git-crypt\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr\n\tdepends on BR2_USE_MMU # git\n\tselect BR2_PACKAGE_GIT # runtime\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  git-crypt enables transparent encryption and decryption of\n\t  files in a git repository.\n\n\t  https://www.agwa.name/projects/git-crypt/\n\ncomment \"git-crypt needs a toolchain w/ C++, gcc >= 4.9\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_USE_MMU\n\ncomment \"git-crypt needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/git-crypt/git-crypt.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256 6d30fcd99442d50f4b3c8d554067ff1d980cdf9f3120ee774131172dba98fd6f  git-crypt-0.6.0.tar.gz\n# Locally calculated\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\nsha256 506657e7a381165550e6c33e35b3b03bbef3e1feb68ba5529e264bd75ed2dc64  parse_options.hpp\n"
  },
  {
    "path": "package/git-crypt/git-crypt.mk",
    "content": "################################################################################\n#\n# git-crypt\n#\n################################################################################\n\nGIT_CRYPT_VERSION = 0.6.0\nGIT_CRYPT_SITE = https://www.agwa.name/projects/git-crypt/downloads\nGIT_CRYPT_DEPENDENCIES = host-pkgconf openssl\nGIT_CRYPT_LICENSE = GPL-3.0+, MIT\nGIT_CRYPT_LICENSE_FILES = COPYING parse_options.hpp\n\nGIT_CRYPT_LIBS = `$(PKG_CONFIG_HOST_BINARY) --libs openssl`\n\ndefine GIT_CRYPT_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS) $(GIT_CRYPT_LIBS)\" \\\n\t\tCXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\" PREFIX=/usr\nendef\n\ndefine GIT_CRYPT_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \\\n\t\tPREFIX=/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/gkrellm/Config.in",
    "content": "config BR2_PACKAGE_GKRELLM\n\tbool \"gkrellm\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_GKRELLM_SERVER if !BR2_PACKAGE_GKRELLM_CLIENT\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  GKrellM is a single process stack of system monitors which\n\t  supports applying themes to match its appearance to your\n\t  window manager, Gtk, or any other theme.\n\n\t  http://gkrellm.srcbox.net/\n\nif BR2_PACKAGE_GKRELLM\n\nconfig BR2_PACKAGE_GKRELLM_SERVER\n\tbool \"server\"\n\thelp\n\t  Enable gkrellm server.\n\nconfig BR2_PACKAGE_GKRELLM_CLIENT\n\tbool \"client\"\n\tdepends on BR2_PACKAGE_XORG7 # libgtk2\n\tdepends on BR2_INSTALL_LIBSTDCPP # libgtk2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # libgtk2\n\tselect BR2_PACKAGE_LIBGTK2\n\tselect BR2_PACKAGE_XLIB_LIBSM\n\thelp\n\t  Enable gkrellm client.\n\ncomment \"client needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\nendif # BR2_PACKAGE_GKRELLM\n\ncomment \"gkrellm needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gkrellm/gkrellm.hash",
    "content": "# Locally computed\nsha256  1ee0643ed9ed99f88c1504c89d9ccb20780cf29319c904b68e80a8e7c8678c06  gkrellm-2.3.11.tar.bz2\nsha256  691de85c3c6eeda5b6982c751548575344739ce4b4418d78905e599359f6c435  COPYING\nsha256  b81e0c0c3fb2a58f25377388484a1f729abb367f5f2b43e335a6ed3272ce8536  COPYRIGHT\n"
  },
  {
    "path": "package/gkrellm/gkrellm.mk",
    "content": "################################################################################\n#\n# gkrellm\n#\n################################################################################\n\nGKRELLM_VERSION = 2.3.11\nGKRELLM_SITE = http://gkrellm.srcbox.net/releases\nGKRELLM_SOURCE = gkrellm-$(GKRELLM_VERSION).tar.bz2\nGKRELLM_LICENSE = GPL-3.0+\nGKRELLM_LICENSE_FILES = COPYING COPYRIGHT\nGKRELLM_DEPENDENCIES = host-pkgconf libglib2 $(TARGET_NLS_DEPENDENCIES)\nGKRELLM_BUILD_OPTS = \\\n\tSTRIP=\"\" \\\n\tSYS_LIBS=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_LM_SENSORS),y)\nGKRELLM_DEPENDENCIES += lm-sensors\nelse\nGKRELLM_BUILD_OPTS += without-libsensors=yes\nendif\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nGKRELLM_BUILD_OPTS += enable_nls=1\nelse\nGKRELLM_BUILD_OPTS += enable_nls=0\nendif\n\nifeq ($(BR2_PACKAGE_GKRELLM_SERVER)$(BR2_PACKAGE_GKRELLM_CLIENT),yy)\nGKRELLM_BUILD_DIR = $(@D)\nelse ifeq ($(BR2_PACKAGE_GKRELLM_SERVER),y)\nGKRELLM_BUILD_DIR = $(@D)/server\nelse\nGKRELLM_BUILD_DIR = $(@D)/src\nendif\n\nifeq ($(BR2_PACKAGE_GKRELLM_CLIENT),y)\nGKRELLM_DEPENDENCIES += libgtk2 xlib_libSM\nGKRELLM_BUILD_OPTS += X11_LIBS=\"-lX11 -lSM -lICE\"\nGKRELLM_LICENSE += GPL (base64.c), Public Domain (md5.h, md5c.c)\nendif\n\ndefine GKRELLM_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) \\\n\t\t-C $(GKRELLM_BUILD_DIR) $(GKRELLM_BUILD_OPTS)\nendef\n\ndefine GKRELLM_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) \\\n\t\t-C $(GKRELLM_BUILD_DIR) $(GKRELLM_BUILD_OPTS) \\\n\t\tINSTALLROOT=$(TARGET_DIR)/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/gli/0001-Optional-building-tests.patch",
    "content": "From 629fc81ce73114a5925484937df796467adbe8c7 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Jo=C3=A3o=20Pereira?= <pereira.john94@gmail.com>\nDate: Fri, 22 Mar 2019 22:58:17 +0000\nSubject: [PATCH] Optional building tests\n\n[Retrieved from:\nhttps://github.com/g-truc/gli/commit/629fc81ce73114a5925484937df796467adbe8c7]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n CMakeLists.txt      | 1 +\n test/CMakeLists.txt | 8 +++++---\n 2 files changed, 6 insertions(+), 3 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 6eb1a68b..bcff7ef0 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -13,6 +13,7 @@ include(GNUInstallDirs)\n include(CMakePackageConfigHelpers)\n \n enable_testing()\n+option(GLI_TEST_ENABLE \"Build unit tests\" ON)\n \n add_definitions(-D_CRT_SECURE_NO_WARNINGS)\n add_definitions(-DSOURCE_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}\")\ndiff --git a/test/CMakeLists.txt b/test/CMakeLists.txt\nindex 6b1d4826..e51a3181 100644\n--- a/test/CMakeLists.txt\n+++ b/test/CMakeLists.txt\n@@ -19,10 +19,12 @@ function(glmCreateTestGTC NAME)\n \tset(SAMPLE_NAME test-${NAME})\n \tadd_executable(${SAMPLE_NAME} ${NAME}.cpp)\n \ttarget_link_libraries(${SAMPLE_NAME} gli)\n-\tadd_test( \n+\tadd_test(\n \t\tNAME ${SAMPLE_NAME}\n \t\tCOMMAND $<TARGET_FILE:${SAMPLE_NAME}> )\n endfunction()\n \n-add_subdirectory(bug)\n-add_subdirectory(core)\n+if(GLI_TEST_ENABLE)\n+\tadd_subdirectory(bug)\n+\tadd_subdirectory(core)\n+endif()\n"
  },
  {
    "path": "package/gli/Config.in",
    "content": "config BR2_PACKAGE_GLI\n\tbool \"gli\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  OpenGL Image (GLI)\n\n\t  http://gli.g-truc.net\n\ncomment \"gli needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/gli/gli.hash",
    "content": "# Locally calculated\nsha256 9374f3cf6441dac0154f7e5ae9ad9ae99f4c4a36f8eb6de23f54a1996b9f2769  gli-559cbe1ec38878e182507d331e0780fbae5baf15.tar.gz\nsha256 e26459f62353e631d18379668c82b85f9fd2fd993f2818277e4fce21e957f87a  manual.md\n"
  },
  {
    "path": "package/gli/gli.mk",
    "content": "################################################################################\n#\n# gli\n#\n################################################################################\n\nGLI_VERSION = 559cbe1ec38878e182507d331e0780fbae5baf15\nGLI_SITE = $(call github,g-truc,gli,$(GLI_VERSION))\nGLI_LICENSE = MIT\nGLI_LICENSE_FILES = manual.md\n\n# GLI is a header-only library, it only makes sense\n# to have it installed into the staging directory.\nGLI_INSTALL_STAGING = YES\nGLI_INSTALL_TARGET = NO\n\nGLI_CONF_OPTS = -DGLI_TEST_ENABLE=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/glib-networking/Config.in",
    "content": "config BR2_PACKAGE_GLIB_NETWORKING\n\tbool \"glib-networking\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS\n\thelp\n\t  Network-related GIO modules for glib.\n\n\t  https://gitlab.gnome.org/GNOME/glib-networking\n\ncomment \"glib-networking needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/glib-networking/glib-networking.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/glib-networking/2.66/glib-networking-2.66.0.sha256sum\nsha256  c5d7be2437fdd196eebfb70c4517b96d3ba7ec13bd496318b8f02dea383e0099  glib-networking-2.66.0.tar.xz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/glib-networking/glib-networking.mk",
    "content": "################################################################################\n#\n# glib-networking\n#\n################################################################################\n\nGLIB_NETWORKING_VERSION_MAJOR = 2.66\nGLIB_NETWORKING_VERSION = $(GLIB_NETWORKING_VERSION_MAJOR).0\nGLIB_NETWORKING_SITE = http://ftp.gnome.org/pub/gnome/sources/glib-networking/$(GLIB_NETWORKING_VERSION_MAJOR)\nGLIB_NETWORKING_SOURCE = glib-networking-$(GLIB_NETWORKING_VERSION).tar.xz\nGLIB_NETWORKING_INSTALL_STAGING = YES\nGLIB_NETWORKING_DEPENDENCIES = \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\thost-pkgconf \\\n\tlibglib2\n\nGLIB_NETWORKING_CONF_OPTS = \\\n\t-Dlibproxy=disabled \\\n\t-Dgnome_proxy=disabled\n\nGLIB_NETWORKING_LICENSE = LGPL-2.0+\nGLIB_NETWORKING_LICENSE_FILES = COPYING\nGLIB_NETWORKING_CPE_ID_VENDOR = gnome\nGLIB_NETWORKING_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) \\\n\tGIO_MODULE_DIR=/usr/lib/gio/modules install\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nGLIB_NETWORKING_DEPENDENCIES += gnutls\nGLIB_NETWORKING_CONF_OPTS += -Dgnutls=enabled\nelse\nGLIB_NETWORKING_CONF_OPTS += -Dgnutls=disabled\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nGLIB_NETWORKING_DEPENDENCIES += openssl\nGLIB_NETWORKING_CONF_OPTS += -Dopenssl=enabled\nelse\nGLIB_NETWORKING_CONF_OPTS += -Dopenssl=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/glibc/2.34-9-g9acab0bba6a5a57323b1f94bf95b21618a9e5aa4/glibc.hash",
    "content": "# Locally calculated (fetched from Github)\nsha256  1c7ed0f69ed268bd66f9754d0cb8fb65e0dafc1f9a1048ea50d1e96d60399686  glibc-2.34-9-g9acab0bba6a5a57323b1f94bf95b21618a9e5aa4.tar.gz\n\n# Hashes for license files\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\nsha256  b33d0bd9f685b46853548814893a6135e74430d12f6d94ab3eba42fc591f83bc  LICENSES\n"
  },
  {
    "path": "package/glibc/Config.in",
    "content": "if BR2_TOOLCHAIN_BUILDROOT_GLIBC\n\ncomment \"Glibc Options\"\n\nconfig BR2_PACKAGE_GLIBC\n\tbool\n\tdefault y\n\tselect BR2_PACKAGE_LINUX_HEADERS\n\tselect BR2_TOOLCHAIN_HAS_SSP if BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI\n\thelp\n\t  https://www.gnu.org/software/libc/\n\nconfig BR2_PACKAGE_GLIBC_UTILS\n\tbool \"Install glibc utilities\"\n\thelp\n\t  Enabling this option will compile and install the getconf,\n\t  ldconfig, ldd and locale glibc utilities for the target.\n\nendif # BR2_TOOLCHAIN_BUILDROOT_GLIBC\n"
  },
  {
    "path": "package/glibc/glibc.hash",
    "content": "# This hash file is not used; instead, update the\n# hash files in the per-version sub-directories.\n"
  },
  {
    "path": "package/glibc/glibc.mk",
    "content": "################################################################################\n#\n# glibc\n#\n################################################################################\n\n# Generate version string using:\n#   git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master | cut -d '-' -f 2-\n# When updating the version, please also update localedef\nGLIBC_VERSION = 2.34-9-g9acab0bba6a5a57323b1f94bf95b21618a9e5aa4\n# Upstream doesn't officially provide an https download link.\n# There is one (https://sourceware.org/git/glibc.git) but it's not reliable,\n# sometimes the connection times out. So use an unofficial github mirror.\n# When updating the version, check it on the official repository;\n# *NEVER* decide on a version string by looking at the mirror.\n# Then check that the mirror has been synced already (happens once a day.)\nGLIBC_SITE = $(call github,bminor,glibc,$(GLIBC_VERSION))\n\nGLIBC_LICENSE = GPL-2.0+ (programs), LGPL-2.1+, BSD-3-Clause, MIT (library)\nGLIBC_LICENSE_FILES = COPYING COPYING.LIB LICENSES\nGLIBC_CPE_ID_VENDOR = gnu\n\n# glibc is part of the toolchain so disable the toolchain dependency\nGLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO\n\n# Before glibc is configured, we must have the first stage\n# cross-compiler and the kernel headers\nGLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-bison host-gawk \\\n\t$(BR2_MAKE_HOST_DEPENDENCY) $(BR2_PYTHON3_HOST_DEPENDENCY)\n\nGLIBC_SUBDIR = build\n\nGLIBC_INSTALL_STAGING = YES\n\nGLIBC_INSTALL_STAGING_OPTS = install_root=$(STAGING_DIR) install\n\n# Thumb build is broken, build in ARM mode\nifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)\nGLIBC_EXTRA_CFLAGS += -marm\nendif\n\n# MIPS64 defaults to n32 so pass the correct -mabi if\n# we are using a different ABI. OABI32 is also used\n# in MIPS so we pass -mabi=32 in this case as well\n# even though it's not strictly necessary.\nifeq ($(BR2_MIPS_NABI64),y)\nGLIBC_EXTRA_CFLAGS += -mabi=64\nelse ifeq ($(BR2_MIPS_OABI32),y)\nGLIBC_EXTRA_CFLAGS += -mabi=32\nendif\n\nifeq ($(BR2_ENABLE_DEBUG),y)\nGLIBC_EXTRA_CFLAGS += -g\nendif\n\n# The stubs.h header is not installed by install-headers, but is\n# needed for the gcc build. An empty stubs.h will work, as explained\n# in http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html. The same trick\n# is used by Crosstool-NG.\nifeq ($(BR2_TOOLCHAIN_BUILDROOT_GLIBC),y)\ndefine GLIBC_ADD_MISSING_STUB_H\n\tmkdir -p $(STAGING_DIR)/usr/include/gnu\n\ttouch $(STAGING_DIR)/usr/include/gnu/stubs.h\nendef\nendif\n\nGLIBC_CONF_ENV = \\\n\tac_cv_path_BASH_SHELL=/bin/$(if $(BR2_PACKAGE_BASH),bash,sh) \\\n\tlibc_cv_forced_unwind=yes \\\n\tlibc_cv_ssp=no\n\n# POSIX shell does not support localization, so remove the corresponding\n# syntax from ldd if bash is not selected.\nifeq ($(BR2_PACKAGE_BASH),)\ndefine GLIBC_LDD_NO_BASH\n\t$(SED) 's/$$\"/\"/g' $(@D)/elf/ldd.bash.in\nendef\nGLIBC_POST_PATCH_HOOKS += GLIBC_LDD_NO_BASH\nendif\n\n# Override the default library locations of /lib64/<abi> and\n# /usr/lib64/<abi>/ for RISC-V.\nifeq ($(BR2_riscv),y)\nifeq ($(BR2_RISCV_64),y)\nGLIBC_CONF_ENV += libc_cv_slibdir=/lib64 libc_cv_rtlddir=/lib\nelse\nGLIBC_CONF_ENV += libc_cv_slibdir=/lib32 libc_cv_rtlddir=/lib\nendif\nendif\n\n# glibc requires make >= 4.0 since 2.28 release.\n# https://www.sourceware.org/ml/libc-alpha/2018-08/msg00003.html\nGLIBC_MAKE = $(BR2_MAKE)\nGLIBC_CONF_ENV += ac_cv_prog_MAKE=\"$(BR2_MAKE)\"\n\n# Even though we use the autotools-package infrastructure, we have to\n# override the default configure commands for several reasons:\n#\n#  1. We have to build out-of-tree, but we can't use the same\n#     'symbolic link to configure' used with the gcc packages.\n#\n#  2. We have to execute the configure script with bash and not sh.\n#\n# Note that as mentionned in\n# http://patches.openembedded.org/patch/38849/, glibc must be\n# built with -O2, so we pass our own CFLAGS and CXXFLAGS below.\ndefine GLIBC_CONFIGURE_CMDS\n\tmkdir -p $(@D)/build\n\t# Do the configuration\n\t(cd $(@D)/build; \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"-O2 $(GLIBC_EXTRA_CFLAGS)\" CPPFLAGS=\"\" \\\n\t\tCXXFLAGS=\"-O2 $(GLIBC_EXTRA_CFLAGS)\" \\\n\t\t$(GLIBC_CONF_ENV) \\\n\t\t$(SHELL) $(@D)/configure \\\n\t\t--target=$(GNU_TARGET_NAME) \\\n\t\t--host=$(GNU_TARGET_NAME) \\\n\t\t--build=$(GNU_HOST_NAME) \\\n\t\t--prefix=/usr \\\n\t\t--enable-shared \\\n\t\t$(if $(BR2_x86_64),--enable-lock-elision) \\\n\t\t--with-pkgversion=\"Buildroot\" \\\n\t\t--disable-profile \\\n\t\t--disable-werror \\\n\t\t--without-gd \\\n\t\t--enable-kernel=$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)) \\\n\t\t--with-headers=$(STAGING_DIR)/usr/include)\n\t$(GLIBC_ADD_MISSING_STUB_H)\nendef\n\n#\n# We also override the install to target commands since we only want\n# to install the libraries, and nothing more.\n#\n\nGLIBC_LIBS_LIB = \\\n\tld*.so.* libanl.so.* libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* \\\n\tlibm.so.* libpthread.so.* libresolv.so.* librt.so.* \\\n\tlibutil.so.* libnss_files.so.* libnss_dns.so.* libmvec.so.*\n\nifeq ($(BR2_PACKAGE_GDB),y)\nGLIBC_LIBS_LIB += libthread_db.so.*\nendif\n\nifeq ($(BR2_PACKAGE_GLIBC_UTILS),y)\nGLIBC_TARGET_UTILS_USR_BIN = posix/getconf elf/ldd\nGLIBC_TARGET_UTILS_SBIN = elf/ldconfig\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nGLIBC_TARGET_UTILS_USR_BIN += locale/locale\nendif\nendif\n\ndefine GLIBC_INSTALL_TARGET_CMDS\n\tfor libpattern in $(GLIBC_LIBS_LIB); do \\\n\t\t$(call copy_toolchain_lib_root,$$libpattern) ; \\\n\tdone\n\t$(foreach util,$(GLIBC_TARGET_UTILS_USR_BIN), \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/build/$(util) $(TARGET_DIR)/usr/bin/$(notdir $(util))\n\t)\n\t$(foreach util,$(GLIBC_TARGET_UTILS_SBIN), \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/build/$(util) $(TARGET_DIR)/sbin/$(notdir $(util))\n\t)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/glibc/nsswitch.conf",
    "content": "# /etc/nsswitch.conf\n\npasswd:         files\ngroup:          files\nshadow:         files\n\nhosts:          files dns\nnetworks:       files dns\n\nprotocols:      files\nservices:       files\nethers:         files\nrpc:            files\n"
  },
  {
    "path": "package/glibmm/Config.in",
    "content": "config BR2_PACKAGE_GLIBMM\n\tbool \"glibmm\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # regex_replace\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBSIGC\n\thelp\n\t  The GLibmm package is a set of C++ bindings for GLib.\n\n\t  http://www.gtkmm.org/\n\ncomment \"glibmm needs a toolchain w/ C++, wchar, threads, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/glibmm/glibmm.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/glibmm/2.66/glibmm-2.66.0.sha256sum\nsha256  9e1db7d43d2e2d4dfa2771354e21a69a6beec7c446b711619cf8c779e13a581e  glibmm-2.66.0.tar.xz\n# License files, locally calculated\nsha256  3ea7fa7c5d9a3a113e950eca9cfb85107f096270d8e4dd99daa9d8abdebc60e7  COPYING\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING.tools\n"
  },
  {
    "path": "package/glibmm/glibmm.mk",
    "content": "################################################################################\n#\n# glibmm\n#\n################################################################################\n\nGLIBMM_VERSION_MAJOR = 2.66\nGLIBMM_VERSION = $(GLIBMM_VERSION_MAJOR).0\nGLIBMM_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools)\nGLIBMM_LICENSE_FILES = COPYING COPYING.tools\nGLIBMM_SOURCE = glibmm-$(GLIBMM_VERSION).tar.xz\nGLIBMM_SITE = http://ftp.gnome.org/pub/gnome/sources/glibmm/$(GLIBMM_VERSION_MAJOR)\nGLIBMM_INSTALL_STAGING = YES\nGLIBMM_DEPENDENCIES = libglib2 libsigc host-pkgconf\nGLIBMM_CONF_OPTS = -Dbuild-examples=false\n\nGLIBMM_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nGLIBMM_CXXFLAGS += -O0\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/glm/Config.in",
    "content": "config BR2_PACKAGE_GLM\n\tbool \"glm\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  OpenGL Mathematics (GLM)\n\n\t  http://glm.g-truc.net\n\ncomment \"glm needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/glm/glm.hash",
    "content": "# Locally calculated\nsha256 5e33b6131cea6a904339734b015110d4342b7dc02d995164fdb86332d28a5aa4  glm-0.9.9.5.tar.gz\nsha256 337130631a714eeae017556cad101d5324c2961214120b6214741d3d43667086  manual.md\n"
  },
  {
    "path": "package/glm/glm.mk",
    "content": "################################################################################\n#\n# glm\n#\n################################################################################\n\nGLM_VERSION = 0.9.9.5\nGLM_SITE = $(call github,g-truc,glm,$(GLM_VERSION))\nGLM_LICENSE = MIT\nGLM_LICENSE_FILES = manual.md\n\n# GLM is a header-only library, it only makes sense\n# to have it installed into the staging directory.\nGLM_INSTALL_STAGING = YES\nGLM_INSTALL_TARGET = NO\n\n# Don't build libraries as GLM is header-only\nGLM_CONF_OPTS = \\\n\t-DGLM_TEST_ENABLE=OFF \\\n\t-DBUILD_SHARED_LIBS=OFF \\\n\t-DBUILD_STATIC_LIBS=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/glmark2/0001-wscript-use-find_program-to-find-wayland-scanner.patch",
    "content": "From 303d5c4fef1760ede5786bc62c7012dd7ae93722 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 8 Nov 2020 23:46:49 +0100\nSubject: [PATCH] wscript: use find_program to find wayland-scanner\n\nUse find_program instead of check_cfg to find wayland-scanner. This will\nfix the following build failure when cross-compiling:\n\n[ 3/73] Compiling doc/glmark2.1.in\n/bin/sh: 1: /usr/bin/wayland-scanner: not found\n\nFixes:\n - http://autobuild.buildroot.org/results//361dc40e558e2646cb93f405c7b1f621d400fea3\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/wscript_build | 2 +-\n wscript           | 3 +--\n 2 files changed, 2 insertions(+), 3 deletions(-)\n\ndiff --git a/src/wscript_build b/src/wscript_build\nindex bbe7a77..ed3e8d6 100644\n--- a/src/wscript_build\n+++ b/src/wscript_build\n@@ -51,7 +51,7 @@ else:\n \n if 'WAYLAND_SCANNER_wayland_scanner' in bld.env.keys():\n     def wayland_scanner_cmd(arg, src):\n-        return '%s %s < %s > ${TGT}' % (bld.env['WAYLAND_SCANNER_wayland_scanner'], arg, src)\n+        return '%s %s < %s > ${TGT}' % (bld.env['WAYLAND_SCANNER_wayland_scanner'][0], arg, src)\n \n     def wayland_proto_src_path(proto, ver):\n         wp_dir = bld.env['WAYLAND_PROTOCOLS_pkgdatadir']\ndiff --git a/wscript b/wscript\nindex e09fa78..fe2494f 100644\n--- a/wscript\n+++ b/wscript\n@@ -227,8 +227,7 @@ def configure_linux(ctx):\n         # wayland-protocols >= 1.12 required for xdg-shell stable\n         ctx.check_cfg(package = 'wayland-protocols', atleast_version = '1.12',\n                       variables = ['pkgdatadir'], uselib_store = 'WAYLAND_PROTOCOLS')\n-        ctx.check_cfg(package = 'wayland-scanner', variables = ['wayland_scanner'],\n-                      uselib_store = 'WAYLAND_SCANNER')\n+        ctx.find_program('wayland-scanner', var = 'WAYLAND_SCANNER_wayland_scanner')\n \n     # Prepend CXX flags so that they can be overriden by the\n     # CXXFLAGS environment variable\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/glmark2/Config.in",
    "content": "config BR2_PACKAGE_GLMARK2_FLAVOR_ANY\n\tbool\n\nconfig BR2_PACKAGE_GLMARK2_FLAVOR_DRM_GLESV2\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tdepends on BR2_PACKAGE_HAS_LIBGBM\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS  # libpthread-stubs -> libdrm\n\tselect BR2_PACKAGE_GLMARK2_FLAVOR_ANY\n\nconfig BR2_PACKAGE_GLMARK2_FLAVOR_DRM_GL\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_GLMARK2_FLAVOR_ANY\n\nconfig BR2_PACKAGE_GLMARK2_FLAVOR_WAYLAND_GLESV2\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n\tdepends on BR2_PACKAGE_WAYLAND\n\tselect BR2_PACKAGE_GLMARK2_FLAVOR_ANY\n\nconfig BR2_PACKAGE_GLMARK2_FLAVOR_WAYLAND_GL\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tdepends on BR2_PACKAGE_WAYLAND\n\tselect BR2_PACKAGE_GLMARK2_FLAVOR_ANY\n\nconfig BR2_PACKAGE_GLMARK2_FLAVOR_X11_GLESV2\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n\tdepends on BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_GLMARK2_FLAVOR_ANY\n\nconfig BR2_PACKAGE_GLMARK2_FLAVOR_X11_GL\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tdepends on BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_GLMARK2_FLAVOR_ANY\n\ncomment \"glmark2 needs a toolchain w/ C++, gcc >= 4.9\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\ncomment \"glmark2 needs an OpenGL or an openGL ES and EGL backend\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 && BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_PACKAGE_GLMARK2_FLAVOR_ANY\n\nconfig BR2_PACKAGE_GLMARK2\n\tbool \"glmark2\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14\n\tdepends on BR2_PACKAGE_GLMARK2_FLAVOR_ANY\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBDRM if BR2_PACKAGE_GLMARK2_FLAVOR_DRM_GLESV2\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_GLMARK2_FLAVOR_WAYLAND_GL\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_GLMARK2_FLAVOR_WAYLAND_GLESV2\n\thelp\n\t  glmark2 is an OpenGL 2.0 and ES 2.0 benchmark.\n\n\t  https://github.com/glmark2/glmark2\n"
  },
  {
    "path": "package/glmark2/glmark2.hash",
    "content": "# Locally computed\nsha256  12aef3ce80406bc723542979b9818886a28d0a4c93f62379eaadfd830974790d  glmark2-06e78b67702b5413335ecdf1ae816da9c20f6ed9.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\nsha256  16fbc228292bd774b263b212ae422c524cbf3b2078bcf21b22f8bdd4373be617  COPYING.SGI\n"
  },
  {
    "path": "package/glmark2/glmark2.mk",
    "content": "################################################################################\n#\n# glmark2\n#\n################################################################################\n\nGLMARK2_VERSION = 06e78b67702b5413335ecdf1ae816da9c20f6ed9\nGLMARK2_SITE = $(call github,glmark2,glmark2,$(GLMARK2_VERSION))\nGLMARK2_LICENSE = GPL-3.0+, SGIv1\nGLMARK2_LICENSE_FILES = COPYING COPYING.SGI\nGLMARK2_DEPENDENCIES = host-pkgconf jpeg libegl libpng\n\nifeq ($(BR2_PACKAGE_GLMARK2_FLAVOR_DRM_GLESV2),y)\nGLMARK2_DEPENDENCIES += libdrm libgbm libgles udev\nGLMARK2_FLAVORS += drm-glesv2\nendif\n\nifeq ($(BR2_PACKAGE_GLMARK2_FLAVOR_DRM_GL),y)\nGLMARK2_DEPENDENCIES += libgl udev\nGLMARK2_FLAVORS += drm-gl\nendif\n\nifeq ($(BR2_PACKAGE_GLMARK2_FLAVOR_X11_GLESV2),y)\nGLMARK2_DEPENDENCIES += libgles xlib_libX11\nGLMARK2_FLAVORS += x11-glesv2\nendif\n\nifeq ($(BR2_PACKAGE_GLMARK2_FLAVOR_X11_GL),y)\nGLMARK2_DEPENDENCIES += libgl xlib_libX11\nGLMARK2_FLAVORS += x11-gl\nendif\n\nifeq ($(BR2_PACKAGE_GLMARK2_FLAVOR_WAYLAND_GLESV2),y)\nGLMARK2_DEPENDENCIES += libgles wayland wayland-protocols\nGLMARK2_FLAVORS += wayland-glesv2\nendif\n\nifeq ($(BR2_PACKAGE_GLMARK2_FLAVOR_WAYLAND_GL),y)\nGLMARK2_DEPENDENCIES += libgl wayland wayland-protocols\nGLMARK2_FLAVORS += wayland-gl\nendif\n\nGLMARK2_CONF_OPTS += \\\n\t--prefix=/usr \\\n\t--with-flavors=$(subst $(space),$(comma),$(GLMARK2_FLAVORS))\n\n$(eval $(waf-package))\n"
  },
  {
    "path": "package/glog/0001-src-symbolize.cc-fix-build-without-dlfcn.h.patch",
    "content": "From f71e0899439aaa0e6172243a0862bf8a72a241fc Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 28 Oct 2019 18:21:55 +0100\nSubject: [PATCH] src/symbolize.cc: fix build without dlfcn.h\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/google/glog/pull/475]\n---\n src/symbolize.cc | 4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/src/symbolize.cc b/src/symbolize.cc\nindex 1ffc607..ff027f2 100644\n--- a/src/symbolize.cc\n+++ b/src/symbolize.cc\n@@ -110,7 +110,9 @@ _END_GOOGLE_NAMESPACE_\n \n #if defined(__ELF__)\n \n+#if defined(HAVE_DLFCN_H)\n #include <dlfcn.h>\n+#endif\n #if defined(OS_OPENBSD)\n #include <sys/exec_elf.h>\n #else\n@@ -832,7 +834,7 @@ static ATTRIBUTE_NOINLINE bool SymbolizeAndDemangle(void *pc, char *out,\n \n _END_GOOGLE_NAMESPACE_\n \n-#elif defined(OS_MACOSX) && defined(HAVE_DLADDR)\n+#elif defined(OS_MACOSX) && defined(HAVE_DLADDR) && defined(HAVE_DLFCN_H)\n \n #include <dlfcn.h>\n #include <string.h>\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/glog/0002-src-utilities-fix-build-without-pthread.patch",
    "content": "From 9630e0e848da22e27b346c38d9b05f0a16cbf7b3 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 31 Oct 2019 19:27:16 +0100\nSubject: [PATCH] src/utilities: fix build without pthread\n\n- Remove is_default_thread function which is an internal and not used\n  function\n- Remove g_main_thread_id as it was used only by is_default_thread\n\nFixes:\n - http://autobuild.buildroot.net/results/5320bbe1205e782e3516d9bead8d1ed825bcbaad\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/google/glog/commit/9630e0e848da22e27b346c38d9b05f0a16cbf7b3]\n---\n src/utilities.cc | 16 +++-------------\n src/utilities.h  |  2 --\n 2 files changed, 3 insertions(+), 15 deletions(-)\n\ndiff --git a/src/utilities.cc b/src/utilities.cc\nindex d463b33b..9a1e35d0 100644\n--- a/src/utilities.cc\n+++ b/src/utilities.cc\n@@ -61,7 +61,6 @@ using std::string;\n _START_GOOGLE_NAMESPACE_\n \n static const char* g_program_invocation_short_name = NULL;\n-static pthread_t g_main_thread_id;\n \n _END_GOOGLE_NAMESPACE_\n \n@@ -181,16 +180,6 @@ bool IsGoogleLoggingInitialized() {\n   return g_program_invocation_short_name != NULL;\n }\n \n-bool is_default_thread() {\n-  if (g_program_invocation_short_name == NULL) {\n-    // InitGoogleLogging() not yet called, so unlikely to be in a different\n-    // thread\n-    return true;\n-  } else {\n-    return pthread_equal(pthread_self(), g_main_thread_id);\n-  }\n-}\n-\n #ifdef OS_WINDOWS\n struct timeval {\n   long tv_sec, tv_usec;\n@@ -276,9 +265,11 @@ pid_t GetTID() {\n   return getpid();  // Linux:  getpid returns thread ID when gettid is absent\n #elif defined OS_WINDOWS && !defined OS_CYGWIN\n   return GetCurrentThreadId();\n-#else\n+#elif defined(HAVE_PTHREAD)\n   // If none of the techniques above worked, we use pthread_self().\n   return (pid_t)(uintptr_t)pthread_self();\n+#else\n+  return -1;\n #endif\n }\n \n@@ -350,7 +341,6 @@ void InitGoogleLoggingUtilities(const char* argv0) {\n   if (!slash)  slash = strrchr(argv0, '\\\\');\n #endif\n   g_program_invocation_short_name = slash ? slash + 1 : argv0;\n-  g_main_thread_id = pthread_self();\n \n #ifdef HAVE_STACKTRACE\n   InstallFailureFunction(&DumpStackTraceAndExit);\ndiff --git a/src/utilities.h b/src/utilities.h\nindex ca21cfb3..c66f9146 100644\n--- a/src/utilities.h\n+++ b/src/utilities.h\n@@ -163,8 +163,6 @@ const char* ProgramInvocationShortName();\n \n bool IsGoogleLoggingInitialized();\n \n-bool is_default_thread();\n-\n int64 CycleClock_Now();\n \n int64 UsecToCycles(int64 usec);\n"
  },
  {
    "path": "package/glog/Config.in",
    "content": "config BR2_PACKAGE_GLOG\n\tbool \"glog\"\n\t# __ELF__ not defined on Microblaze\n\tdepends on !BR2_microblaze\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  C++ implementation of the Google logging module\n\n\t  https://github.com/google/glog\n\ncomment \"glog needs a toolchain w/ C++\"\n\tdepends on !BR2_microblaze\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/glog/glog.hash",
    "content": "# Locally computed\nsha256 f28359aeba12f30d73d9e4711ef356dc842886968112162bc73002645139c39c  glog-0.4.0.tar.gz\n\n# Hash for License file:\nsha256 0fc497129c5c69ff6f22da6933c7e4aaef082fde8437fd57680c2780100772a4  COPYING\n"
  },
  {
    "path": "package/glog/glog.mk",
    "content": "################################################################################\n#\n# glog\n#\n################################################################################\n\nGLOG_VERSION = 0.4.0\nGLOG_SITE = $(call github,google,glog,v$(GLOG_VERSION))\nGLOG_INSTALL_STAGING = YES\nGLOG_LICENSE = BSD-3-Clause\nGLOG_LICENSE_FILES = COPYING\nGLOG_CONF_OPTS = \\\n\t$(if $(BR2_TOOLCHAIN_HAS_THREADS),-DWITH_THREADS=ON, -DWITH_THREADS=OFF)\n\nifeq ($(BR2_PACKAGE_GFLAGS),y)\nGLOG_DEPENDENCIES += gflags\nGLOG_CONF_OPTS += -DWITH_GFLAGS=ON\nelse\nGLOG_CONF_OPTS += -DWITH_GFLAGS=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/gloox/0001-src-connectiontcpserver-cpp-fix-musl.patch",
    "content": "src/connectiontcpserver.cpp: fix musl build\n\nBuild on musl fails on:\n\nconnectiontcpserver.cpp:131:13: error: 'strerror' was not declared in this scope\n           + strerror( err ) + \" (errno: \" + util::int2string( err ) + \")\";\n             ^~~~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/a61a91bb6e1156eff5fb756f9dccfc2bb6c0f277\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://bugs.camaya.net/ticket/?id=291]\n\ndiff -Nuar gloox-1.0.23-orig/src/connectiontcpserver.cpp gloox-1.0.23/src/connectiontcpserver.cpp\n--- gloox-1.0.23-orig/src/connectiontcpserver.cpp\t2020-06-05 23:22:59.624018949 +0200\n+++ gloox-1.0.23/src/connectiontcpserver.cpp\t2020-06-05 23:26:20.708027221 +0200\n@@ -36,6 +36,7 @@\n # include <resolv.h>\n # include <netdb.h>\n # include <arpa/inet.h>\n+# include <string.h>\n # include <sys/socket.h>\n # include <sys/un.h>\n # include <sys/select.h>\n"
  },
  {
    "path": "package/gloox/Config.in",
    "content": "config BR2_PACKAGE_GLOOX\n\tbool \"gloox\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_MPC\n\thelp\n\t  gloox is a portable high-level Jabber/XMPP library for C++. It\n\t  is fully compliant with the XMPP RFCs, supports all of the\n\t  XMPP features (including SRV lookups, TLS, SASL, roster\n\t  management, and privacy lists), and implements several XEPs\n\t  that make it ideal for writing any kind of Jabber/XMPP client\n\t  or component.\n\n\t  https://camaya.net/gloox/\n\ncomment \"gloox needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/gloox/gloox.hash",
    "content": "# Locally calculated\nsha256  ae1462be2a2eb8fe5cd054825143617c53c2c9c7195606cb5a5ba68c0f68f9c9  gloox-1.0.24.tar.bz2\nsha256  40a20c41c8dabb8ba61bea983fa8f2f6989e67fac56bb62c2249053807fd26af  LICENSE\n"
  },
  {
    "path": "package/gloox/gloox.mk",
    "content": "################################################################################\n#\n# gloox\n#\n################################################################################\n\nGLOOX_VERSION = 1.0.24\nGLOOX_SOURCE = gloox-$(GLOOX_VERSION).tar.bz2\nGLOOX_SITE = https://camaya.net/download\nGLOOX_LICENSE = GPL-3.0 with OpenSSL exception\nGLOOX_LICENSE_FILES = LICENSE\nGLOOX_INSTALL_STAGING = YES\nGLOOX_DEPENDENCIES = mpc\nGLOOX_CONF_OPTS = \\\n\t--without-libidn \\\n\t--enable-getaddrinfo \\\n\t--without-examples \\\n\t--without-tests\n\nGLOOX_CXXFLAGS = $(TARGET_CXXFLAGS)\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nGLOOX_CXXFLAGS += -O0\nendif\nGLOOX_CONF_ENV += CXXFLAGS=\"$(GLOOX_CXXFLAGS)\"\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nGLOOX_CONF_ENV += LIBS=-latomic\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nGLOOX_CONF_OPTS += --with-zlib\nGLOOX_DEPENDENCIES += zlib\nelse\nGLOOX_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nGLOOX_CONF_OPTS += --with-openssl --without-gnutls\nGLOOX_DEPENDENCIES += openssl\nelse ifeq ($(BR2_PACKAGE_GNUTLS),y)\nGLOOX_CONF_OPTS += --with-gnutls --without-openssl\nGLOOX_DEPENDENCIES += gnutls\nelse\nGLOOX_CONF_OPTS += --without-gnutls --without-openssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/glorytun/Config.in",
    "content": "config BR2_PACKAGE_GLORYTUN\n\tbool \"glorytun\"\n\tselect BR2_PACKAGE_LIBSODIUM\n\thelp\n\t  A small, simple and secure VPN.\n\n\t  https://github.com/angt/glorytun\n"
  },
  {
    "path": "package/glorytun/glorytun.hash",
    "content": "sha256 137d9c525a05bb605163df0465367d36e943715ca773ce43d5ea66f0597600a3  glorytun-0.3.4.tar.gz\nsha256 3d9ddddb8807c305287d9dbab58473e5307e9c91651c43c654a0828855d2b373  LICENSE\n"
  },
  {
    "path": "package/glorytun/glorytun.mk",
    "content": "################################################################################\n#\n# glorytun\n#\n################################################################################\n\nGLORYTUN_VERSION = 0.3.4\nGLORYTUN_SITE = https://github.com/angt/glorytun/releases/download/v$(GLORYTUN_VERSION)\nGLORYTUN_DEPENDENCIES = libsodium host-pkgconf\nGLORYTUN_LICENSE = BSD-2-Clause\nGLORYTUN_LICENSE_FILES = LICENSE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/glslsandbox-player/Config.in",
    "content": "config BR2_PACKAGE_GLSLSANDBOX_PLAYER\n\tbool \"glslsandbox-player\"\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n\t# Doesn't really depend on threads, but this makes sure we have at least\n\t# one native windowing system available, and is good enough in practice.\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  GLSL Sandbox standalone player allow one to run and render\n\t  (most of) nice shaders available online on the\n\t  http://glslsandbox.com/ website, but without the need of an\n\t  Internet connection, a web browser or any of its\n\t  dependencies. Instead, the only requirement of\n\t  glslsandbox-player is a working EGL and GLESv2 libraries.\n\n\t  This package is useful for stressing and testing GLES shader\n\t  compiler in GPU drivers.\n\n\t  https://github.com/jolivain/glslsandbox-player\n\nif BR2_PACKAGE_GLSLSANDBOX_PLAYER\n\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_PNG\n\tbool \"Enable PNG support\"\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  Enable PNG texture loading support\n\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_TESTING\n\tbool \"Enable testing\"\n\thelp\n\t  Generate and install test suite on target\n\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_SCRIPTS\n\tbool \"Install scripts\"\n\tdepends on !BR2_PACKAGE_PYTHON # python3\n\tdepends on !BR2_STATIC_LIBS # python3\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # python3\n\tdepends on BR2_USE_MMU # bash, python3\n\tdepends on BR2_USE_WCHAR # python3\n\tselect BR2_PACKAGE_BASH # runtime\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS if BR2_PACKAGE_BUSYBOX # bash\n\tselect BR2_PACKAGE_COREUTILS # runtime (timeout)\n\tselect BR2_PACKAGE_LIBCURL_CURL # runtime\n\tselect BR2_PACKAGE_IMAGEMAGICK # runtime\n\tselect BR2_PACKAGE_JPEG # runtime\n\tselect BR2_PACKAGE_LIBCURL # runtime\n\tselect BR2_PACKAGE_LIBOPENSSL_BIN if BR2_PACKAGE_LIBOPENSSL # runtime\n\tselect BR2_PACKAGE_LIBRESSL_BIN if BR2_PACKAGE_LIBRESSL # runtime\n\tselect BR2_PACKAGE_MAKE # runtime\n\tselect BR2_PACKAGE_OPENSSL # runtime\n\tselect BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  Install additional helper scripts\n\nchoice\n\tprompt \"Native windowing system\"\n\tdefault BR2_PACKAGE_GLSLSANDBOX_PLAYER_MALI  if BR2_PACKAGE_SUNXI_MALI_MAINLINE\n\tdefault BR2_PACKAGE_GLSLSANDBOX_PLAYER_MALI_T76X if BR2_PACKAGE_MALI_T76X\n\tdefault BR2_PACKAGE_GLSLSANDBOX_PLAYER_RPI   if BR2_PACKAGE_RPI_USERLAND\n\tdefault BR2_PACKAGE_GLSLSANDBOX_PLAYER_SDL2  if BR2_PACKAGE_SDL2_OPENGLES\n\tdefault BR2_PACKAGE_GLSLSANDBOX_PLAYER_TISGX if BR2_PACKAGE_TI_SGX_UM\n\tdefault BR2_PACKAGE_GLSLSANDBOX_PLAYER_VIVFB if BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB\n\tdefault BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL    if BR2_PACKAGE_WAYLAND\n\tdefault BR2_PACKAGE_GLSLSANDBOX_PLAYER_X11   if BR2_PACKAGE_XORG7\n\thelp\n\t  Select the native windowing system you wish to use.\n\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_KMS\n\tbool \"KMS/DRM/GBM\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libdrm\n\tselect BR2_PACKAGE_LIBDRM\n\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_MALI\n\tbool \"Allwinner ARM/Mali Frame Buffer\"\n\tdepends on BR2_PACKAGE_SUNXI_MALI_MAINLINE\n\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_MALI_T76X\n\tbool \"ARM/Mali T76x Frame Buffer\"\n\tdepends on BR2_PACKAGE_MALI_T76X\n\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_RPI\n\tbool \"RaspberryPI Frame Buffer\"\n\tdepends on BR2_PACKAGE_RPI_USERLAND\n\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_SDL2\n\tbool \"SDL2\"\n\tdepends on BR2_PACKAGE_SDL2_OPENGLES\n\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_TISGX\n\tbool \"TI/SGX Frame Buffer\"\n\tdepends on BR2_PACKAGE_TI_SGX_UM\n\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_VIVFB\n\tbool \"Vivante Frame Buffer\"\n\tdepends on BR2_PACKAGE_IMX_GPU_VIV\n\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL\n\tbool \"Wayland\"\n\tdepends on BR2_PACKAGE_WAYLAND\n\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_X11\n\tbool \"X11\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\nendchoice\n\nif BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL\nconfig BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL_IVI\n\tbool \"Wayland IVI shell support\"\nendif\n\nendif\n\ncomment \"glslsandbox-player needs a toolchain w/ threads and an openGL ES and EGL driver\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_PACKAGE_HAS_LIBEGL || !BR2_PACKAGE_HAS_LIBGLES\n"
  },
  {
    "path": "package/glslsandbox-player/glslsandbox-player.hash",
    "content": "# Locally calculated\nsha256  b4af34889faa6d3a904e980f23aeb720dfb614d50aa01b9b1874fc2ae77dbcf4  glslsandbox-player-2021.08.24.tar.gz\nsha256  970d45d8a3dfd042d303008294f49db8c0c464f7687aa6e28a01b0926e74df85  LICENSE\n"
  },
  {
    "path": "package/glslsandbox-player/glslsandbox-player.mk",
    "content": "################################################################################\n#\n# glslsandbox-player\n#\n################################################################################\n\nGLSLSANDBOX_PLAYER_VERSION = 2021.08.24\nGLSLSANDBOX_PLAYER_SITE = $(call github,jolivain,glslsandbox-player,v$(GLSLSANDBOX_PLAYER_VERSION))\nGLSLSANDBOX_PLAYER_AUTORECONF = YES\nGLSLSANDBOX_PLAYER_DEPENDENCIES = libegl libgles host-pkgconf\n\nGLSLSANDBOX_PLAYER_LICENSE = BSD-2-Clause\nGLSLSANDBOX_PLAYER_LICENSE_FILES = LICENSE\n\nifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_PNG),y)\nGLSLSANDBOX_PLAYER_DEPENDENCIES += libpng\nGLSLSANDBOX_PLAYER_CONF_OPTS += --with-libpng\nelse\nGLSLSANDBOX_PLAYER_CONF_OPTS += --without-libpng\nendif\n\nifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_TESTING),y)\nGLSLSANDBOX_PLAYER_CONF_OPTS += \\\n\t--with-shader-list=shader-tests.list \\\n\t--enable-testing \\\n\t--enable-install-testsuite\nelse\nGLSLSANDBOX_PLAYER_CONF_OPTS += \\\n\t--with-shader-list=shader-local.list \\\n\t--disable-testing\nendif\n\nifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_SCRIPTS),y)\nGLSLSANDBOX_PLAYER_CONF_OPTS += --enable-install-scripts\nelse\nGLSLSANDBOX_PLAYER_CONF_OPTS += --disable-install-scripts\nendif\n\nifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_KMS),y)\n# gbm dependency is not needed, as it is normally packaged with\n# libegl/libgles drivers.\nGLSLSANDBOX_PLAYER_DEPENDENCIES += libdrm\nGLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=kms\nelse ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_MALI),y)\nGLSLSANDBOX_PLAYER_DEPENDENCIES += sunxi-mali-mainline\nGLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=mali\nelse ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_MALI_T76X),y)\nGLSLSANDBOX_PLAYER_DEPENDENCIES += mali-t76x\nGLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=nullws\nelse ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_RPI),y)\nGLSLSANDBOX_PLAYER_DEPENDENCIES += rpi-userland\nGLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=rpi\nelse ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_SDL2),y)\nGLSLSANDBOX_PLAYER_DEPENDENCIES += sdl2\nGLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=sdl2\nelse ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_TISGX),y)\nGLSLSANDBOX_PLAYER_DEPENDENCIES += ti-sgx-um\nGLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=tisgx\nelse ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_VIVFB),y)\nGLSLSANDBOX_PLAYER_DEPENDENCIES += imx-gpu-viv\nGLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=vivfb\nelse ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL),y)\nGLSLSANDBOX_PLAYER_DEPENDENCIES += wayland\nGLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=wl\nifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_WL_IVI),y)\nGLSLSANDBOX_PLAYER_CONF_OPTS += --enable-ivi\nelse\nGLSLSANDBOX_PLAYER_CONF_OPTS += --disable-ivi\nendif\nelse ifeq ($(BR2_PACKAGE_GLSLSANDBOX_PLAYER_X11),y)\nGLSLSANDBOX_PLAYER_DEPENDENCIES += xlib_libX11\nGLSLSANDBOX_PLAYER_CONF_OPTS += --with-native-gfx=x11\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gmp/0001-mpz-inp_raw.c-Avoid-bit-size-overflows.patch",
    "content": "# HG changeset patch\n# User Marco Bodrato <bodrato@mail.dm.unipi.it>\n# Date 1634836009 -7200\n# Node ID 561a9c25298e17bb01896801ff353546c6923dbd\n# Parent  e1fd9db13b475209a864577237ea4b9105b3e96e\nmpz/inp_raw.c: Avoid bit size overflows\n\n[Retrieved from: https://gmplib.org/repo/gmp-6.2/rev/561a9c25298e]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -r e1fd9db13b47 -r 561a9c25298e mpz/inp_raw.c\n--- a/mpz/inp_raw.c\tTue Dec 22 23:49:51 2020 +0100\n+++ b/mpz/inp_raw.c\tThu Oct 21 19:06:49 2021 +0200\n@@ -88,8 +88,11 @@\n \n   abs_csize = ABS (csize);\n \n+  if (UNLIKELY (abs_csize > ~(mp_bitcnt_t) 0 / 8))\n+    return 0; /* Bit size overflows */\n+\n   /* round up to a multiple of limbs */\n-  abs_xsize = BITS_TO_LIMBS (abs_csize*8);\n+  abs_xsize = BITS_TO_LIMBS ((mp_bitcnt_t) abs_csize * 8);\n \n   if (abs_xsize != 0)\n     {\n\n"
  },
  {
    "path": "package/gmp/Config.in",
    "content": "config BR2_PACKAGE_GMP\n\tbool \"gmp\"\n\thelp\n\t  GNU Multiple Precision Arithmetic Library.\n\n\t  http://gmplib.org/\n"
  },
  {
    "path": "package/gmp/gmp.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  fd4829912cddd12f84181c3451cc752be224643e87fac497b69edddadc49b4f2  gmp-6.2.1.tar.xz\n\n# Locally calculated\nsha256  a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c  COPYING.LESSERv3\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYINGv2\n"
  },
  {
    "path": "package/gmp/gmp.mk",
    "content": "################################################################################\n#\n# gmp\n#\n################################################################################\n\nGMP_VERSION = 6.2.1\nGMP_SITE = $(BR2_GNU_MIRROR)/gmp\nGMP_SOURCE = gmp-$(GMP_VERSION).tar.xz\nGMP_INSTALL_STAGING = YES\nGMP_LICENSE = LGPL-3.0+ or GPL-2.0+\nGMP_LICENSE_FILES = COPYING.LESSERv3 COPYINGv2\nGMP_CPE_ID_VENDOR = gmplib\nGMP_DEPENDENCIES = host-m4\nHOST_GMP_DEPENDENCIES = host-m4\n\n# 0001-mpz-inp_raw.c-Avoid-bit-size-overflows.patch\nGMP_IGNORE_CVES += CVE-2021-43618\n\n# GMP doesn't support assembly for coldfire or mips r6 ISA yet\n# Disable for ARM v7m since it has different asm constraints\nifeq ($(BR2_m68k_cf)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6)$(BR2_ARM_CPU_ARMV7M),y)\nGMP_CONF_OPTS += --disable-assembly\nendif\n\nifeq ($(BR2_INSTALL_LIBSTDCPP),y)\nGMP_CONF_OPTS += --enable-cxx\nelse\nGMP_CONF_OPTS += --disable-cxx\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/gmpc/Config.in",
    "content": "config BR2_PACKAGE_GMPC\n\tbool \"gmpc\"\n\tdepends on BR2_PACKAGE_LIBGTK2\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_LIBMPD\n\tselect BR2_PACKAGE_LIBSOUP\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_XLIB_LIBICE\n\tselect BR2_PACKAGE_XLIB_LIBSM\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  Gnome Music Player Client is a GNOME/GTK2.2 client for\n\t  Music Player Daemon.\n\n\t  http://gmpcwiki.sarine.nl/index.php?title=GMPC\n\ncomment \"gmpc needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_XORG7 && BR2_PACKAGE_LIBGTK2\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gmpc/gmpc.hash",
    "content": "# Locally calculated\nsha256  a69414f35396846733632ca9619921d7acda537ffd6d49bd84b444945cb76b2c  gmpc-11.8.16.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/gmpc/gmpc.mk",
    "content": "################################################################################\n#\n# gmpc\n#\n################################################################################\n\nGMPC_VERSION = 11.8.16\nGMPC_SITE = http://download.sarine.nl/Programs/gmpc/$(GMPC_VERSION)\nGMPC_CONF_ENV = ac_cv_path_GOB2=$(GOB2_HOST_BINARY)\nGMPC_CONF_OPTS = --disable-mmkeys --disable-unique\nGMPC_LICENSE = GPL-2.0+\nGMPC_LICENSE_FILES = COPYING\nGMPC_DEPENDENCIES = host-gob2 host-intltool host-pkgconf host-vala \\\n\tlibglib2 libgtk2 libmpd libsoup sqlite \\\n\txlib_libICE xlib_libSM xlib_libX11 \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gmrender-resurrect/0001-Drop-UpnpInit.patch",
    "content": "From dc8c4d4dc234311b3099e7f1efadf5d9733c81e9 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 21 Aug 2020 21:29:00 +0200\nSubject: [PATCH] Drop UpnpInit\n\nUpnpInit has been dropped from libupnp 1.14.x as it can't be fixed\nagainst CallStranger a.k.a. CVE-2020-12695 so replace it by UpnpInit2\nwhich is available since version 1.6.7 and\nhttps://github.com/pupnp/pupnp/commit/2bcbdffd89a70364147d345ec5e70a3fce5cbc29\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://github.com/hzeller/gmrender-resurrect/pull/214]\n---\n dist-scripts/centos7/README.md     |  2 +-\n dist-scripts/debian/gmediarender.1 |  8 ++------\n dist-scripts/fedora/README.md      |  2 +-\n src/main.c                         | 13 ++++---------\n src/upnp_device.c                  | 18 +++++++++---------\n src/upnp_device.h                  |  2 +-\n 6 files changed, 18 insertions(+), 27 deletions(-)\n\ndiff --git a/dist-scripts/centos7/README.md b/dist-scripts/centos7/README.md\nindex 278d777..ed82fb6 100644\n--- a/dist-scripts/centos7/README.md\n+++ b/dist-scripts/centos7/README.md\n@@ -45,7 +45,7 @@ Additional configuration is also recommended, sice there's no configuration file\n     # vi /etc/systemd/system/gmediarender.service.d/customize.conf   # or nano, or emacs, or whatever editor you like\n     [Service]\n     ExecStart=\n-    ExecStart=/usr/bin/gmediarender --port=49494 --ip-address=<your_IP_address> -f \"DLNA Renderer GMediaRender\"\n+    ExecStart=/usr/bin/gmediarender --port=49494 --interface-name=<your_interface_name> -f \"DLNA Renderer GMediaRender\"\n \n     # systemctl daemon-reload\n     # systemctl start gmediarender.service\ndiff --git a/dist-scripts/debian/gmediarender.1 b/dist-scripts/debian/gmediarender.1\nindex 96123ff..b2b1359 100644\n--- a/dist-scripts/debian/gmediarender.1\n+++ b/dist-scripts/debian/gmediarender.1\n@@ -50,12 +50,8 @@ Usually, it is desirable for the renderer\n to show up on controllers under a recognisable and unique name. This is \n the option to set that name.\n .TP\n-.B \\-I, \\-\\-ip\\-address \\fI\\<ip-address\\>\\fP\n-The local IP address the service is running and advertised on.  \n-\n-This can \n-only be a single address, and must be explicitly specified (i.e. not \n-0.0.0.0).\n+.B \\-I, \\-\\-interface\\-name \\fI\\<interface-name\\>\\fP\n+The local interface name the service is running and advertised on.\n .TP\n .B \\-p, \\-\\-port \\fI\\<port>\\fP\n Port to listen to. [49152..65535].\ndiff --git a/dist-scripts/fedora/README.md b/dist-scripts/fedora/README.md\nindex 7b9ea4b..45aa536 100644\n--- a/dist-scripts/fedora/README.md\n+++ b/dist-scripts/fedora/README.md\n@@ -43,7 +43,7 @@ Additional configuration is also recommended, sice there's no configuration file\n     # vi /etc/systemd/system/gmediarender.service.d/customize.conf   # or nano, or emacs, or whatever editor you like\n     [Service]\n     ExecStart=\n-    ExecStart=/usr/bin/gmediarender --port=49494 --ip-address=<your_IP_address> -f \"DLNA Renderer GMediaRender\"\n+    ExecStart=/usr/bin/gmediarender --port=49494 --interface-name=<your_interface_name> -f \"DLNA Renderer GMediaRender\"\n \n     # systemctl daemon-reload\n     # systemctl start gmediarender.service\ndiff --git a/src/main.c b/src/main.c\nindex ef720e3..2030c49 100644\n--- a/src/main.c\n+++ b/src/main.c\n@@ -69,11 +69,7 @@ static gboolean show_transport_scpd = FALSE;\n static gboolean show_outputs = FALSE;\n static gboolean daemon_mode = FALSE;\n \n-// IP-address seems strange in libupnp: they actually don't bind to\n-// that address, but to INADDR_ANY (miniserver.c in upnp library).\n-// Apparently they just use this for the advertisement ? Anyway, 0.0.0.0 would\n-// not work.\n-static const gchar *ip_address = NULL;\n+static const gchar *interface_name = NULL;\n static int listen_port = 49494;\n \n #ifdef GMRENDER_UUID\n@@ -92,9 +88,8 @@ static const gchar *mime_filter = NULL;\n static GOptionEntry option_entries[] = {\n \t{ \"version\", 0, 0, G_OPTION_ARG_NONE, &show_version,\n \t  \"Output version information and exit\", NULL },\n-\t{ \"ip-address\", 'I', 0, G_OPTION_ARG_STRING, &ip_address,\n-\t  \"The local IP address the service is running and advertised \"\n-\t  \"(only one, 0.0.0.0 won't work)\", NULL },\n+\t{ \"interface-name\", 'I', 0, G_OPTION_ARG_STRING, &interface_name,\n+\t  \"The local interface name the service is running and advertised\", NULL },\n \t// The following is not very reliable, as libupnp does not set\n \t// SO_REUSEADDR by default, so it might increment (sending patch).\n \t{ \"port\", 'p', 0, G_OPTION_ARG_INT, &listen_port,\n@@ -302,7 +297,7 @@ int main(int argc, char **argv)\n \t\t\t  listen_port);\n \t\treturn EXIT_FAILURE;\n \t}\n-\tdevice = upnp_device_init(upnp_renderer, ip_address, listen_port);\n+\tdevice = upnp_device_init(upnp_renderer, interface_name, listen_port);\n \tif (device == NULL) {\n \t\tLog_error(\"main\", \"ERROR: Failed to initialize UPnP device\");\n \t\treturn EXIT_FAILURE;\ndiff --git a/src/upnp_device.c b/src/upnp_device.c\nindex db65e4f..3151238 100644\n--- a/src/upnp_device.c\n+++ b/src/upnp_device.c\n@@ -416,13 +416,13 @@ static UPNP_CALLBACK(event_handler, EventType, event, userdata)\n \n static gboolean initialize_device(struct upnp_device_descriptor *device_def,\n \t\t\t\t  struct upnp_device *result_device,\n-\t\t\t\t  const char *ip_address,\n+\t\t\t\t  const char *interface_name,\n \t\t\t\t  unsigned short port)\n {\n \tint rc;\n \tchar *buf;\n \n-\trc = UpnpInit(ip_address, port);\n+\trc = UpnpInit2(interface_name, port);\n \t/* There have been situations reported in which UPNP had issues\n \t * initializing right after network came up. #129\n \t */\n@@ -430,13 +430,13 @@ static gboolean initialize_device(struct upnp_device_descriptor *device_def,\n \tstatic const int kRetryTimeMs = 1000;\n \twhile (rc != UPNP_E_SUCCESS && retries_left--) {\n \t\tusleep(kRetryTimeMs * 1000);\n-\t\tLog_error(\"upnp\", \"UpnpInit(ip=%s, port=%d) Error: %s (%d). Retrying... (%ds)\",\n-\t\t\t  ip_address, port, UpnpGetErrorMessage(rc), rc, retries_left);\n-\t\trc = UpnpInit(ip_address, port);\n+\t\tLog_error(\"upnp\", \"UpnpInit2(interface=%s, port=%d) Error: %s (%d). Retrying... (%ds)\",\n+\t\t\t  interface_name, port, UpnpGetErrorMessage(rc), rc, retries_left);\n+\t\trc = UpnpInit2(interface_name, port);\n \t}\n \tif (UPNP_E_SUCCESS != rc) {\n-\t\tLog_error(\"upnp\", \"UpnpInit(ip=%s, port=%d) Error: %s (%d). Giving up.\",\n-\t\t\t  ip_address, port, UpnpGetErrorMessage(rc), rc);\n+\t\tLog_error(\"upnp\", \"UpnpInit2(interface=%s, port=%d) Error: %s (%d). Giving up.\",\n+\t\t\t  interface_name, port, UpnpGetErrorMessage(rc), rc);\n \t\treturn FALSE;\n \t}\n \tLog_info(\"upnp\", \"Registered IP=%s port=%d\\n\",\n@@ -483,7 +483,7 @@ static gboolean initialize_device(struct upnp_device_descriptor *device_def,\n }\n \n struct upnp_device *upnp_device_init(struct upnp_device_descriptor *device_def,\n-\t\t\t\t     const char *ip_address,\n+\t\t\t\t     const char *interface_name,\n \t\t\t\t     unsigned short port)\n {\n \tint rc;\n@@ -516,7 +516,7 @@ struct upnp_device *upnp_device_init(struct upnp_device_descriptor *device_def,\n \t\twebserver_register_buf(srv->scpd_url, buf, \"text/xml\");\n \t}\n \n-\tif (!initialize_device(device_def, result_device, ip_address, port)) {\n+\tif (!initialize_device(device_def, result_device, interface_name, port)) {\n \t\tUpnpFinish();\n \t\tfree(result_device);\n \t\treturn NULL;\ndiff --git a/src/upnp_device.h b/src/upnp_device.h\nindex 3e635e1..8c8e783 100644\n--- a/src/upnp_device.h\n+++ b/src/upnp_device.h\n@@ -49,7 +49,7 @@ struct upnp_device;\n struct action_event;\n \n struct upnp_device *upnp_device_init(struct upnp_device_descriptor *device_def,\n-\t\t\t\t     const char *ip_address,\n+\t\t\t\t     const char *interface_name,\n \t\t\t\t     unsigned short port);\n \n void upnp_device_shutdown(struct upnp_device *device);\n"
  },
  {
    "path": "package/gmrender-resurrect/Config.in",
    "content": "config BR2_PACKAGE_GMRENDER_RESURRECT\n\tbool \"gmrender-resurrect\"\n\tdepends on BR2_USE_WCHAR # gstreamer1 -> libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # gstreamer1 -> libglib2, libupnp\n\tdepends on BR2_USE_MMU # gstreamer1\n\tselect BR2_PACKAGE_GSTREAMER1\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE # run-time only\n\tselect BR2_PACKAGE_LIBUPNP\n\thelp\n\t  UPnP (DLNA) media renderer based on gstreamer\n\n\t  https://github.com/hzeller/gmrender-resurrect\n\ncomment \"gmrender-resurrect needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gmrender-resurrect/gmrender-resurrect.hash",
    "content": "# Locally calculated\nsha256 1f0cef76e4543879c9cd31cad73d6c4f778b965884c586405efcf63f2bdbb06f  gmrender-resurrect-0.0.8.tar.gz\nsha256 c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42  COPYING\n"
  },
  {
    "path": "package/gmrender-resurrect/gmrender-resurrect.mk",
    "content": "################################################################################\n#\n# gmrender-resurrect\n#\n################################################################################\n\nGMRENDER_RESURRECT_VERSION = 0.0.8\nGMRENDER_RESURRECT_SITE = $(call github,hzeller,gmrender-resurrect,v$(GMRENDER_RESURRECT_VERSION))\n# Original distribution does not have default configure,\n# so we need to autoreconf:\nGMRENDER_RESURRECT_AUTORECONF = YES\nGMRENDER_RESURRECT_LICENSE = GPL-2.0+\nGMRENDER_RESURRECT_LICENSE_FILES = COPYING\nGMRENDER_RESURRECT_DEPENDENCIES = \\\n\tgstreamer1 \\\n\tlibupnp\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gnu-efi/0001-Make.defaults-don-t-override-ARCH-when-cross-compili.patch",
    "content": "From 3452721eafae90749f4af63264c412f398460b15 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 20 Jan 2019 21:07:11 +0100\nSubject: [PATCH] Make.defaults: don't override ARCH when cross-compiling\n\nDon't override the user-provided ARCH when cross-compiling otherwise\nARCH won't be correct for armv5, aarch64 and x86_64\n\nFixes:\n - http://autobuild.buildroot.org/results/2dfc0e10da25a8382a43557420d7dc3444c02dbb\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Make.defaults | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Make.defaults b/Make.defaults\nindex ba743f1..a0e5632 100755\n--- a/Make.defaults\n+++ b/Make.defaults\n@@ -67,7 +67,7 @@ ARCH         ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[345678\n \n # Get ARCH from the compiler if cross compiling \n ifneq ($(CROSS_COMPILE),)\n-  override ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d-| sed -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' )\n+  ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d-| sed -e s,i[3456789]86,ia32, -e 's,armv7.*,arm,' )\n endif\n \n # FreeBSD (and possibly others) reports amd64 instead of x86_64\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/gnu-efi/0002-Revert-efilink-fix-build-with-gcc-4.8.patch",
    "content": "From 1f7b2e5bd6603b30202a66b6317a41e2be85742b Mon Sep 17 00:00:00 2001\nFrom: Esben Haabendal <esben@haabendal.dk>\nDate: Tue, 26 Mar 2019 13:37:02 +0100\nSubject: [PATCH] Revert \"efilink: fix build with gcc 4.8\"\n\nThis reverts commit 6335e5c697c57d8b5854b8202de3733bcb151ca6, as it breaks\ngcc builds with '-nostdinc' flag.\n\nThe fix in 1a53d8f88a452847b25f9689f9a08dbcf82c86e4\n(Fix for problem with undeclared intptr_t type), which is also merged\nfixes the same problem, without causing breakage.\n\nSigned-off-by: Esben Haabendal <esben@haabendal.dk>\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[Upstream status:\nhttps://sourceforge.net/p/gnu-efi/code/merge-requests/6/]\n---\n inc/efilink.h | 4 ----\n 1 file changed, 4 deletions(-)\n\ndiff --git a/inc/efilink.h b/inc/efilink.h\nindex b69a6fd..cc5aa2d 100644\n--- a/inc/efilink.h\n+++ b/inc/efilink.h\n@@ -1,10 +1,6 @@\n #ifndef _EFI_LINK_H\n #define _EFI_LINK_H\n \n-#if defined(__GNUC__)\n-#include <stdint.h>\n-#endif\n-\n /*++\n \n Copyright (c) 1998  Intel Corporation\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/gnu-efi/Config.in",
    "content": "config BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_ARM_CPU_HAS_ARM\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_aarch64_be\n\tdefault y if BR2_i386\n\tdefault y if BR2_x86_64\n\nconfig BR2_PACKAGE_GNU_EFI\n\tbool \"gnu-efi\"\n\tdepends on BR2_PACKAGE_GNU_EFI_ARCH_SUPPORTS\n\thelp\n\t  Develop EFI applications for ARM-64, ARM-32, x86_64, IA-64\n\t  (IPF), IA-32 (x86), and MIPS platforms using the GNU toolchain\n\t  and the EFI development environment.\n\n\t  http://gnu-efi.sourceforge.net/\n"
  },
  {
    "path": "package/gnu-efi/gnu-efi.hash",
    "content": "# From http://sourceforge.net/projects/gnu-efi/files\nmd5 960a8379b6f95ee73d7778b70bf2a089 gnu-efi-3.0.10.tar.bz2\nsha1 a51b81eda97c0acbf3ac86123f298d3c0e396ce5 gnu-efi-3.0.10.tar.bz2\n# Locally computed\nsha256 f12082a3a5f0c3e38c67262a9f34245d139ac2cdfc0a0bdcf03c9b1f56fa4fed  gnu-efi-3.0.10.tar.bz2\nsha256 42d352e9c28dd446fd0209cd6f75588c8e41f0934540bb382bbd61c752360265  README.efilib\n"
  },
  {
    "path": "package/gnu-efi/gnu-efi.mk",
    "content": "################################################################################\n#\n# gnu-efi\n#\n################################################################################\n\nGNU_EFI_VERSION = 3.0.10\nGNU_EFI_SOURCE = gnu-efi-$(GNU_EFI_VERSION).tar.bz2\nGNU_EFI_SITE = http://downloads.sourceforge.net/project/gnu-efi\nGNU_EFI_INSTALL_STAGING = YES\nGNU_EFI_LICENSE = BSD-3-Clause and/or GPL-2.0+ (gnuefi), BSD-3-Clause (efilib)\nGNU_EFI_LICENSE_FILES = README.efilib\n\n# gnu-efi is a set of library and header files used to build\n# standalone EFI applications such as bootloaders. There is no point\n# in installing these libraries to the target.\nGNU_EFI_INSTALL_TARGET = NO\n\nifeq ($(BR2_i386),y)\nGNU_EFI_PLATFORM = ia32\nelse ifeq ($(BR2_x86_64),y)\nGNU_EFI_PLATFORM = x86_64\nelse ifeq ($(BR2_arm)$(BR2_armeb),y)\nGNU_EFI_PLATFORM = arm\nelse ifeq ($(BR2_aarch64)$(BR2_aarch64_be),y)\nGNU_EFI_PLATFORM = aarch64\nendif\n\nGNU_EFI_MAKE_OPTS = \\\n\tARCH=$(GNU_EFI_PLATFORM) \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tPREFIX=/usr\n\ndefine GNU_EFI_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(GNU_EFI_MAKE_OPTS)\nendef\n\ndefine GNU_EFI_INSTALL_STAGING_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(GNU_EFI_MAKE_OPTS) \\\n\t\tINSTALLROOT=$(STAGING_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/gnuchess/Config.in",
    "content": "config BR2_PACKAGE_GNUCHESS\n\tbool \"gnuchess\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_FLEX\n\thelp\n\t  GNU Chess lets most modern computers play a full game of\n\t  chess.\n\n\t  http://ftp.gnu.org/pub/gnu/chess\n\ncomment \"gnuchess needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gnuchess/gnuchess.hash",
    "content": "# sha256 locally computed\nsha256  d50446cda8012240321da39cddbb4df4d08458a8d538a4738882814139583847  gnuchess-6.2.8.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/gnuchess/gnuchess.mk",
    "content": "################################################################################\n#\n# gnuchess\n#\n################################################################################\n\nGNUCHESS_VERSION = 6.2.8\nGNUCHESS_SITE = $(BR2_GNU_MIRROR)/chess\nGNUCHESS_LICENSE = GPL-3.0+\nGNUCHESS_LICENSE_FILES = COPYING\nGNUCHESS_CPE_ID_VENDOR = gnu\nGNUCHESS_CPE_ID_PRODUCT = chess\n\nGNUCHESS_DEPENDENCIES = host-flex flex\nGNUCHESS_DEPENDENCIES += $(if $(BR2_PACKAGE_READLINE),readline) \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gnupg/0001-build-Always-use-EXTERN_UNLESS_MAIN_MODULE-pattern.patch",
    "content": "From 45ef4455a60929932d1499cf718c1c9f59af9f26 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Tue, 26 May 2020 22:57:05 +0200\nSubject: [PATCH] build: Always use EXTERN_UNLESS_MAIN_MODULE pattern\n\nThis patch is loosely based on upstream commit\n6aff8a132815a84bab69401c1e7de96ec549fbf2 (\"build: Always use\nEXTERN_UNLESS_MAIN_MODULE pattern.\"). However, this upstream commit\napplies to gnupg2, and the code base has changed quite significantly\ncompared to gnupg 1.x, so upstream's patch cannot be applied\nas-is. The goal of the patch is to make sure each variable is only\ndefined once, ass gcc 10 now default to -fno-common.\n\nEssentially, this patch mainly fixes the EXTERN_UNLESS_MAIN_MODULE\ndefine so that it really expands to \"extern\" when\nINCLUDED_BY_MAIN_MODULE is not defined, even on non-RiscOS\nsystems. Contrary to upstream's patch we however do not factorize the\nmultiple EXTERN_UNLESS_MAIN_MODULE definitions into a single place as\nit requires too many changes: instead we simply fix the few\ndefinitions of this macro.\n\nOnce the macro is fixed, two places need to define\nINCLUDED_BY_MAIN_MODULE: tools/bftest.c and tools/mpicalc.c so that\nwhen they include the common headers, their variables are at least\ndefined once.\n\nThe iobuf.{c,h} case is handled differently: iobuf.h gains an\nunconditional \"extern\", with the variable being added to iobuf.c. This\nis identical to what upstream's\n6aff8a132815a84bab69401c1e7de96ec549fbf2 is doing.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n g10/options.h    | 3 +--\n include/cipher.h | 2 +-\n include/iobuf.h  | 9 +--------\n include/memory.h | 2 +-\n include/mpi.h    | 2 +-\n tools/bftest.c   | 1 +\n tools/mpicalc.c  | 1 +\n util/iobuf.c     | 2 ++\n 8 files changed, 9 insertions(+), 13 deletions(-)\n\ndiff --git a/g10/options.h b/g10/options.h\nindex 0ac6e7755..bae19e9e3 100644\n--- a/g10/options.h\n+++ b/g10/options.h\n@@ -26,8 +26,7 @@\n #include \"packet.h\"\n \n #ifndef EXTERN_UNLESS_MAIN_MODULE\n-/* Norcraft can't cope with common symbols */\n-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)\n+#if !defined (INCLUDED_BY_MAIN_MODULE)\n #define EXTERN_UNLESS_MAIN_MODULE extern\n #else\n #define EXTERN_UNLESS_MAIN_MODULE\ndiff --git a/include/cipher.h b/include/cipher.h\nindex dd4af18cb..6ef6e6829 100644\n--- a/include/cipher.h\n+++ b/include/cipher.h\n@@ -115,7 +115,7 @@ struct gcry_md_context {\n typedef struct gcry_md_context *MD_HANDLE;\n \n #ifndef EXTERN_UNLESS_MAIN_MODULE\n-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)\n+#if !defined (INCLUDED_BY_MAIN_MODULE)\n #define EXTERN_UNLESS_MAIN_MODULE extern\n #else\n #define EXTERN_UNLESS_MAIN_MODULE\ndiff --git a/include/iobuf.h b/include/iobuf.h\nindex 030f8c8e9..b4d26b7e1 100644\n--- a/include/iobuf.h\n+++ b/include/iobuf.h\n@@ -69,14 +69,7 @@ struct iobuf_struct {\n     } unget;\n };\n \n-#ifndef EXTERN_UNLESS_MAIN_MODULE\n-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)\n-#define EXTERN_UNLESS_MAIN_MODULE extern\n-#else\n-#define EXTERN_UNLESS_MAIN_MODULE \n-#endif\n-#endif\n-EXTERN_UNLESS_MAIN_MODULE int iobuf_debug_mode;\n+extern int iobuf_debug_mode;\n \n void  iobuf_enable_special_filenames ( int yes );\n int   iobuf_is_pipe_filename (const char *fname);\ndiff --git a/include/memory.h b/include/memory.h\nindex d414a9b2e..6698337e3 100644\n--- a/include/memory.h\n+++ b/include/memory.h\n@@ -91,7 +91,7 @@ unsigned secmem_get_flags(void);\n #define DBG_MEMSTAT   memory_stat_debug_mode\n \n #ifndef EXTERN_UNLESS_MAIN_MODULE\n-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)\n+#if !defined (INCLUDED_BY_MAIN_MODULE)\n #define EXTERN_UNLESS_MAIN_MODULE extern\n #else\n #define EXTERN_UNLESS_MAIN_MODULE \ndiff --git a/include/mpi.h b/include/mpi.h\nindex a4c16f5af..7a45ff805 100644\n--- a/include/mpi.h\n+++ b/include/mpi.h\n@@ -36,7 +36,7 @@\n #include \"memory.h\"\n \n #ifndef EXTERN_UNLESS_MAIN_MODULE\n-#if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)\n+#if !defined (INCLUDED_BY_MAIN_MODULE)\n #define EXTERN_UNLESS_MAIN_MODULE extern\n #else\n #define EXTERN_UNLESS_MAIN_MODULE \ndiff --git a/tools/bftest.c b/tools/bftest.c\nindex 8a1572c2b..5afd7e125 100644\n--- a/tools/bftest.c\n+++ b/tools/bftest.c\n@@ -26,6 +26,7 @@\n #include <fcntl.h>\n #endif\n \n+#define INCLUDED_BY_MAIN_MODULE\n #include \"util.h\"\n #include \"cipher.h\"\n #include \"i18n.h\"\ndiff --git a/tools/mpicalc.c b/tools/mpicalc.c\nindex 46e5fc824..31acd82a4 100644\n--- a/tools/mpicalc.c\n+++ b/tools/mpicalc.c\n@@ -31,6 +31,7 @@\n #include <stdlib.h>\n #include <ctype.h>\n \n+#define INCLUDED_BY_MAIN_MODULE\n #include \"util.h\"\n #include \"mpi.h\"\n #include \"i18n.h\"\ndiff --git a/util/iobuf.c b/util/iobuf.c\nindex c8442929a..0d9ee4cec 100644\n--- a/util/iobuf.c\n+++ b/util/iobuf.c\n@@ -113,6 +113,8 @@ typedef struct {\n  static CLOSE_CACHE close_cache;\n #endif\n \n+int iobuf_debug_mode;\n+\n #ifdef _WIN32\n typedef struct {\n     int sock;\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/gnupg/Config.in",
    "content": "config BR2_PACKAGE_GNUPG\n\tbool \"gnupg\"\n\tdepends on !BR2_PACKAGE_GNUPG2\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  GnuPG is the GNU project's complete and free implementation\n\t  of the OpenPGP standard as defined by RFC4880. GnuPG allows\n\t  to encrypt and sign your data and communication, features a\n\t  versatile key management system as well as access modules\n\t  for all kinds of public key directories. GnuPG, also known\n\t  as GPG, is a command line tool with features for easy\n\t  integration with other applications.\n\n\t  http://gnupg.org/\n\nif BR2_PACKAGE_GNUPG\n\nconfig BR2_PACKAGE_GNUPG_AES\n\tbool \"AES support\"\n\thelp\n\t  Support for the AES cipher\n\nconfig BR2_PACKAGE_GNUPG_RSA\n\tbool \"RSA support\"\n\thelp\n\t  Support for RSA public key algorithm\n\nconfig BR2_PACKAGE_GNUPG_GPGV\n\tbool \"gpgv\"\n\thelp\n\t  gpgv is an OpenPGP signature verification tool.\n\n\t  This program is actually a stripped-down version of gpg\n\t  which is only able to check signatures. It is somewhat\n\t  smaller than the fully-blown gpg and uses a different (and\n\t  simpler) way to check that the public keys used to make the\n\t  signature are valid. There are no configuration files and\n\t  only a few options are implemented.\n\nconfig BR2_PACKAGE_GNUPG_GPGSPLIT\n\tbool \"gpgsplit\"\n\thelp\n\t  gpgsplit splits an OpenPGP message into packets.\n\nendif\n"
  },
  {
    "path": "package/gnupg/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_GNUPG\n\tbool \"host gnupg\"\n\thelp\n\t  GnuPG is the GNU project's complete and free implementation\n\t  of the OpenPGP standard as defined by RFC4880. GnuPG allows\n\t  to encrypt and sign your data and communication, features a\n\t  versatile key management system as well as access modules\n\t  for all kinds of public key directories. GnuPG, also known\n\t  as GPG, is a command line tool with features for easy\n\t  integration with other applications.\n\n\t  http://gnupg.org/\n"
  },
  {
    "path": "package/gnupg/gnupg.hash",
    "content": "# Locally computed based on signature\n# https://gnupg.org/ftp/gcrypt/gnupg/gnupg-1.4.23.tar.bz2.sig\nsha256  c9462f17e651b6507848c08c430c791287cd75491f8b5a8b50c6ed46b12678ba  gnupg-1.4.23.tar.bz2\n# locally computed\nsha256  fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7  COPYING\n"
  },
  {
    "path": "package/gnupg/gnupg.mk",
    "content": "################################################################################\n#\n# gnupg\n#\n################################################################################\n\nGNUPG_VERSION = 1.4.23\nGNUPG_SOURCE = gnupg-$(GNUPG_VERSION).tar.bz2\nGNUPG_SITE = https://gnupg.org/ftp/gcrypt/gnupg\nGNUPG_LICENSE = GPL-3.0+\nGNUPG_LICENSE_FILES = COPYING\nGNUPG_DEPENDENCIES = zlib $(if $(BR2_PACKAGE_LIBICONV),libiconv)\nGNUPG_CPE_ID_VENDOR = gnupg\nGNUPG_CONF_ENV = ac_cv_sys_symbol_underscore=no\nGNUPG_CONF_OPTS = \\\n\t--disable-rpath \\\n\t--enable-minimal \\\n\t--disable-regex \\\n\t--enable-sha256 \\\n\t--enable-sha512\n\nHOST_GNUPG_DEPENDENCIES = host-zlib\nHOST_GNUPG_CONF_OPTS = \\\n\t--disable-rpath \\\n\t--enable-minimal \\\n\t--disable-regex \\\n\t--enable-sha256 \\\n\t--enable-sha512 \\\n\t--enable-aes \\\n\t--enable-rsa \\\n\t--without-libcurl \\\n\t--without-readline\n\n# gnupg doesn't support assembly for coldfire\nifeq ($(BR2_m68k_cf),y)\nGNUPG_CONF_OPTS += --disable-asm\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nGNUPG_CONF_OPTS += --enable-bzip2\nGNUPG_DEPENDENCIES += bzip2\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nGNUPG_CONF_ENV += ac_cv_path__libcurl_config=$(STAGING_DIR)/usr/bin/curl-config\nGNUPG_DEPENDENCIES += libcurl\nelse\nGNUPG_CONF_OPTS += --without-libcurl\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nGNUPG_DEPENDENCIES += readline\nelse\nGNUPG_CONF_OPTS += --without-readline\nendif\n\nifeq ($(BR2_PACKAGE_GNUPG_AES),y)\nGNUPG_CONF_OPTS += --enable-aes\nelse\nGNUPG_CONF_OPTS += --disable-aes\nendif\n\nifeq ($(BR2_PACKAGE_GNUPG_RSA),y)\nGNUPG_CONF_OPTS += --enable-rsa\nelse\nGNUPG_CONF_OPTS += --disable-rsa\nendif\n\nifneq ($(BR2_PACKAGE_GNUPG_GPGV),y)\ndefine GNUPG_REMOVE_GPGV\n\trm -f $(TARGET_DIR)/usr/bin/gpgv\nendef\nGNUPG_POST_INSTALL_TARGET_HOOKS += GNUPG_REMOVE_GPGV\nendif\n\nifneq ($(BR2_PACKAGE_GNUPG_GPGSPLIT),y)\ndefine GNUPG_REMOVE_GPGSPLIT\n\trm -f $(TARGET_DIR)/usr/bin/gpgsplit\nendef\nGNUPG_POST_INSTALL_TARGET_HOOKS += GNUPG_REMOVE_GPGSPLIT\nendif\n\ndefine GNUPG_FIXUP_GPG_ZIP\n\ttest -f $(TARGET_DIR)/usr/bin/gpg-zip && \\\n\t\t$(SED) 's%^TAR=.*%TAR=/bin/tar%' $(TARGET_DIR)/usr/bin/gpg-zip\nendef\nGNUPG_POST_INSTALL_TARGET_HOOKS += GNUPG_FIXUP_GPG_ZIP\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/gnupg2/Config.in",
    "content": "comment \"gnupg2 needs a toolchain w/ threads and dynamic library support\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_GNUPG2\n\tbool \"gnupg2\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnpth\n\tdepends on BR2_USE_MMU # libassuan, libnpth\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_LIBGPG_ERROR\n\tselect BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_LIBASSUAN\n\tselect BR2_PACKAGE_LIBKSBA\n\tselect BR2_PACKAGE_LIBNPTH\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  GnuPG is the GNU project's complete and free implementation\n\t  of the OpenPGP standard as defined by RFC4880. GnuPG allows\n\t  to encrypt and sign your data and communication, features a\n\t  versatile key management system as well as access modules\n\t  for all kinds of public key directories. GnuPG, also known\n\t  as GPG, is a command line tool with features for easy\n\t  integration with other applications.\n\n\t  http://gnupg.org/\n\nif BR2_PACKAGE_GNUPG2\n\nconfig BR2_PACKAGE_GNUPG2_GPGV\n\tbool \"gpgv\"\n\thelp\n\t  gpgv is an OpenPGP signature verification tool.\n\n\t  This program is actually a stripped-down version of gpg\n\t  which is only able to check signatures. It is somewhat\n\t  smaller than the fully-blown gpg and uses a different (and\n\t  simpler) way to check that the public keys used to make the\n\t  signature are valid. There are no configuration files and\n\t  only a few options are implemented.\n\nendif\n"
  },
  {
    "path": "package/gnupg2/gnupg2.hash",
    "content": "# From https://lists.gnupg.org/pipermail/gnupg-announce/2021q2/000460.html\nsha1  81684626720c91060ae9920936c768df9fc8b2f6  gnupg-2.2.32.tar.bz2\n# Calculated based on the hash above and signature\n# https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.32.tar.bz2.sig\n# using key 6DAA6E64A76D2840571B4902528897B826403ADA\nsha256  b2571b35f82c63e7d278aa6a1add0d73453dc14d3f0854be490c844fca7e0614  gnupg-2.2.32.tar.bz2\nsha256  bc2d6664f6276fa0a72d57633b3ae68dc7dcb677b71018bf08c8e93e509f1357  COPYING\n"
  },
  {
    "path": "package/gnupg2/gnupg2.mk",
    "content": "################################################################################\n#\n# gnupg2\n#\n################################################################################\n\nGNUPG2_VERSION = 2.2.32\nGNUPG2_SOURCE = gnupg-$(GNUPG2_VERSION).tar.bz2\nGNUPG2_SITE = https://gnupg.org/ftp/gcrypt/gnupg\nGNUPG2_LICENSE = GPL-3.0+\nGNUPG2_LICENSE_FILES = COPYING\nGNUPG2_CPE_ID_VENDOR = gnupg\nGNUPG2_CPE_ID_PRODUCT = gnupg\nGNUPG2_DEPENDENCIES = zlib libgpg-error libgcrypt libassuan libksba libnpth \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv) host-pkgconf\n\nGNUPG2_CONF_OPTS = \\\n\t--disable-rpath --disable-regex \\\n\t--with-libgpg-error-prefix=$(STAGING_DIR)/usr \\\n\t--with-libgcrypt-prefix=$(STAGING_DIR)/usr \\\n\t--with-libassuan-prefix=$(STAGING_DIR)/usr \\\n\t--with-ksba-prefix=$(STAGING_DIR)/usr \\\n\t--with-npth-prefix=$(STAGING_DIR)/usr\n\nifneq ($(BR2_PACKAGE_GNUPG2_GPGV),y)\ndefine GNUPG2_REMOVE_GPGV\n\trm -f $(TARGET_DIR)/usr/bin/gpgv\nendef\nGNUPG2_POST_INSTALL_TARGET_HOOKS += GNUPG2_REMOVE_GPGV\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nGNUPG2_CONF_OPTS += --enable-bzip2 --with-bzip2=$(STAGING_DIR)\nGNUPG2_DEPENDENCIES += bzip2\nelse\nGNUPG2_CONF_OPTS += --disable-bzip2\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nGNUPG2_CONF_OPTS += --enable-gnutls\nGNUPG2_DEPENDENCIES += gnutls\nelse\nGNUPG2_CONF_OPTS += --disable-gnutls\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nGNUPG2_CONF_ENV += CPPFLAGS=\"$(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/libusb-1.0\"\nGNUPG2_CONF_OPTS += --enable-ccid-driver\nGNUPG2_DEPENDENCIES += libusb\nelse\nGNUPG2_CONF_OPTS += --disable-ccid-driver\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nGNUPG2_CONF_OPTS += --with-readline=$(STAGING_DIR)\nGNUPG2_DEPENDENCIES += readline\nelse\nGNUPG2_CONF_OPTS += --without-readline\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE),y)\nGNUPG2_CONF_OPTS += --enable-sqlite\nGNUPG2_DEPENDENCIES += sqlite\nelse\nGNUPG2_CONF_OPTS += --disable-sqlite\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gnuplot/0001-configure-add-without-demo-option.patch",
    "content": "Add options to enable/disable docs and demos\n\nOriginally written by Anthony Viallard\n<viallard@syscom-instruments.com>.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Vincent: adapt patch to 5.0.5 version]\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n[Michael: adapt patch to 5.4.0 version]\nSigned-off-by: Michael Fischer <mf@go-sys.de>\n\ndiff -Naur a/configure.ac b/configure.ac\n--- a/configure.ac\t2020-07-12 02:29:47.000000000 +0200\n+++ b/configure.ac\t2020-08-06 14:21:17.918756893 +0200\n@@ -713,6 +713,17 @@\n                [ Define if you want to read .gnuplot from current directory (SECURITY RISK!).])\n fi\n \n+dnl Whether we want to build the doc files\n+dnl Does nothing here, is passed on to the doc subdir\n+AC_ARG_ENABLE(doc,dnl\n+[  --disable-doc    do not build doc files])\n+\n+dnl Whether we want to build the demo files\n+dnl Does nothing here, is passed on to the demo subdir\n+AC_ARG_ENABLE(demo,dnl\n+[  --disable-demo    do not build demo files])\n+\n+\n dnl Sort help/subtopic tables by row or column\n AC_ARG_WITH(row-help,dnl\n [  --with-row-help         format help and subtopic tables by row (default)\n@@ -1095,6 +1106,24 @@\n   AC_DEFINE_UNQUOTED([DIST_CONTACT],[\"$DIST_CONTACT\"],[Contact address for modified and binary distributed gnuplot versions])\n fi\n \n+dnl build doc files\n+if test \"$enable_doc\" != no; then\n+  AC_CONFIG_SUBDIRS(docs)\n+  DOCSUBDIR=docs\n+else\n+  DOCSUBDIR=\n+fi\n+AC_SUBST(DOCSUBDIR)\n+\n+dnl build demo files\n+if test \"$enable_demo\" != no; then\n+  AC_CONFIG_SUBDIRS(demo)\n+  DEMOSUBDIR=demo\n+else\n+  DEMOSUBDIR=\n+fi\n+AC_SUBST(DEMOSUBDIR)\n+\n dnl Substitute variables\n AC_SUBST(PACKAGE)\n AC_SUBST(VERSION_MAJOR)\ndiff -Naur a/Makefile.am b/Makefile.am\n--- a/Makefile.am\t2020-03-31 19:28:16.000000000 +0200\n+++ b/Makefile.am\t2020-08-06 14:34:12.995097799 +0200\n@@ -1,7 +1,7 @@\n ## Process this file with automake to produce Makefile.in -*-Makefile-*-\n AUTOMAKE_OPTIONS = foreign\n \n-SUBDIRS = config m4 term src docs man demo share\n+SUBDIRS = config m4 term src $(DOCSUBDIR) man $(DEMOSUBDIR) share\n \n EXTRA_DIST = BUGS Copyright FAQ.pdf INSTALL INSTALL.gnu \\\n PATCHLEVEL PGPKEYS README RELEASE_NOTES \\\n"
  },
  {
    "path": "package/gnuplot/Config.in",
    "content": "config BR2_PACKAGE_GNUPLOT\n\tbool \"gnuplot\"\n\thelp\n\t  A portable command-line driven graphing utility.\n\n\t  http://www.gnuplot.info/\n"
  },
  {
    "path": "package/gnuplot/gnuplot.hash",
    "content": "# From https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.2/\nmd5  2050ca477199a591543bc968aba7d899  gnuplot-5.4.2.tar.gz\nsha1  2e076b29f38bfcb841cb5eb3377fd1a469ced1ac  gnuplot-5.4.2.tar.gz\n# Locally computed\nsha256  e57c75e1318133951d32a83bcdc4aff17fed28722c4e71f2305cfc2ae1cae7ba  gnuplot-5.4.2.tar.gz\nsha256  895928ec0735cca1c8cec42656c7e314a065d0242813bb8693c0c1bf61fd4e4d  Copyright\n"
  },
  {
    "path": "package/gnuplot/gnuplot.mk",
    "content": "################################################################################\n#\n# gnuplot\n#\n################################################################################\n\nGNUPLOT_VERSION = 5.4.2\nGNUPLOT_SITE = http://downloads.sourceforge.net/project/gnuplot/gnuplot/$(GNUPLOT_VERSION)\nGNUPLOT_LICENSE = gnuplot license (open source)\nGNUPLOT_LICENSE_FILES = Copyright\nGNUPLOT_CPE_ID_VENDOR = gnuplot_project\n\nGNUPLOT_AUTORECONF = YES\n\nGNUPLOT_CONF_OPTS = \\\n\t--without-x \\\n\t--disable-raise-console \\\n\t--disable-mouse \\\n\t--without-tutorial \\\n\t--disable-demo \\\n\t--without-row-help \\\n\t--disable-history-file \\\n\t--disable-wxwidgets \\\n\t--without-lua \\\n\t--without-latex \\\n\t--without-cairo\n\n# relocation truncated to fit: R_68K_GOT16O\nifeq ($(BR2_m68k_cf),y)\nGNUPLOT_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -mxgot\"\nendif\n\nifeq ($(BR2_PACKAGE_GD)$(BR2_PACKAGE_LIBPNG),yy)\nGNUPLOT_CONF_OPTS += --with-gd\nGNUPLOT_DEPENDENCIES += host-pkgconf gd\nelse\nGNUPLOT_CONF_OPTS += --without-gd\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nGNUPLOT_CONF_OPTS += --with-readline=gnu\nGNUPLOT_DEPENDENCIES += readline\nelse\nGNUPLOT_CONF_OPTS += --without-readline\nendif\n\n# Remove Javascript scripts, lua scripts, PostScript files\ndefine GNUPLOT_REMOVE_UNNEEDED_FILES\n\t$(RM) -rf $(TARGET_DIR)/usr/share/gnuplot\nendef\n\nGNUPLOT_POST_INSTALL_TARGET_HOOKS += GNUPLOT_REMOVE_UNNEEDED_FILES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gnuradio/0001-gr-digital-glfsr.h-drop-boost-cstdint.hpp-and-use-cs.patch",
    "content": "From f643bc12100c67288adda3699a9e61d6a66fb529 Mon Sep 17 00:00:00 2001\nFrom: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\nDate: Fri, 7 Feb 2020 16:49:30 +0100\nSubject: [PATCH] gr-digital:glfsr.h: drop boost/cstdint.hpp and use cstdint\n\ngr-digital/glfsr.h include boost/cstdint.hpp to have uintxx_t.\nThese types are in boost namespace but nor using namespace xxx, nor boost:: are used.\nThe result is :\nIn file included from /home/buildroot/autobuild/instance-0/output-1/build/gnuradio-3.8.0.0/gr-digital/lib/glfsr.cc:23:\n/home/buildroot/autobuild/instance-0/output-1/build/gnuradio-3.8.0.0/gr-digital/lib/../include/gnuradio/digital/glfsr.h:42:5: error: 'uint32_t' does not name a type; did you mean 'u_int32_t'?\nuint32_t d_shift_register;\n^~~~~~~~\nu_int32_t\n\nSince Gnuradio policy is Less boost == better and C++11 is used, use cstdint\ninstead of boost/cstdint.hpp.\n\n[backported from 475e4a156b516c089175afb998acdc80b740b437]\nSigned-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\n---\n gr-digital/include/gnuradio/digital/glfsr.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/gr-digital/include/gnuradio/digital/glfsr.h b/gr-digital/include/gnuradio/digital/glfsr.h\nindex 0b5141f1f..1003bcd01 100644\n--- a/gr-digital/include/gnuradio/digital/glfsr.h\n+++ b/gr-digital/include/gnuradio/digital/glfsr.h\n@@ -24,7 +24,7 @@\n #define INCLUDED_DIGITAL_GLFSR_H\n \n #include <gnuradio/digital/api.h>\n-#include <boost/cstdint.hpp>\n+#include <cstdint>\n \n namespace gr {\n namespace digital {\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/gnuradio/0002-boost_qualify_placeholders_with_their_full_namespace.patch",
    "content": "From 5d4c317a372c77aa70df6ab3403d161cd41a7d17 Mon Sep 17 00:00:00 2001\nFrom: ponce <matteo.bernardini@gmail.com>\nDate: Sun, 17 May 2020 14:02:57 +0200\nSubject: [PATCH] boost: qualify placeholders with their full namespace.\n\nThis is needed with boost >= 1.73.0.\n\n[Upstream status: https://github.com/gnuradio/gnuradio/pull/3566]\n\nSigned-off-by: ponce <matteo.bernardini@gmail.com>\nSigned-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\n---\n .../(exported from wiki) Message Passing.txt  |  8 +++---\n gnuradio-runtime/lib/block.cc                 |  3 ++-\n gr-blocks/lib/copy_impl.cc                    |  4 ++-\n gr-blocks/lib/message_debug_impl.cc           | 13 +++++++---\n gr-blocks/lib/message_strobe_impl.cc          |  5 ++--\n gr-blocks/lib/message_strobe_random_impl.cc   |  5 ++--\n gr-blocks/lib/multiply_matrix_impl.cc         | 11 +++++---\n gr-blocks/lib/mute_impl.cc                    |  5 ++--\n gr-blocks/lib/nop_impl.cc                     |  5 ++--\n gr-blocks/lib/pdu_filter_impl.cc              |  5 ++--\n gr-blocks/lib/pdu_remove_impl.cc              |  5 ++--\n gr-blocks/lib/pdu_set_impl.cc                 |  4 ++-\n gr-blocks/lib/random_pdu_impl.cc              |  5 ++--\n gr-blocks/lib/repeat_impl.cc                  |  5 ++--\n gr-blocks/lib/socket_pdu_impl.cc              | 18 ++++++++-----\n .../lib/tagged_stream_multiply_length_impl.cc |  7 +++---\n gr-blocks/lib/tuntap_pdu_impl.cc              |  3 ++-\n gr-digital/lib/chunks_to_symbols_impl.cc      |  5 ++--\n .../lib/constellation_receiver_cb_impl.cc     | 14 ++++++-----\n gr-digital/lib/costas_loop_cc_impl.cc         |  4 ++-\n gr-digital/lib/crc32_async_bb_impl.cc         |  8 ++++--\n gr-digital/lib/header_payload_demux_impl.cc   |  7 +++---\n .../lib/protocol_formatter_async_impl.cc      |  4 ++-\n gr-fec/lib/async_decoder_impl.cc              |  8 ++++--\n gr-fec/lib/async_encoder_impl.cc              |  8 ++++--\n gr-fec/lib/depuncture_bb_impl.cc              |  4 ++-\n gr-fec/lib/puncture_bb_impl.cc                |  4 ++-\n gr-fec/lib/puncture_ff_impl.cc                |  4 ++-\n gr-filter/lib/freq_xlating_fir_filter_impl.cc |  2 +-\n gr-filter/lib/mmse_resampler_cc_impl.cc       |  5 ++--\n gr-filter/lib/mmse_resampler_ff_impl.cc       |  5 ++--\n gr-qtgui/lib/const_sink_c_impl.cc             |  5 ++--\n gr-qtgui/lib/edit_box_msg_impl.cc             |  4 ++-\n gr-qtgui/lib/freq_sink_c_impl.cc              | 12 ++++++---\n gr-qtgui/lib/freq_sink_f_impl.cc              | 12 ++++++---\n gr-qtgui/lib/histogram_sink_f_impl.cc         |  5 ++--\n gr-qtgui/lib/sink_c_impl.cc                   |  4 ++-\n gr-qtgui/lib/sink_f_impl.cc                   |  4 ++-\n gr-qtgui/lib/time_raster_sink_b_impl.cc       |  4 ++-\n gr-qtgui/lib/time_raster_sink_f_impl.cc       |  4 ++-\n gr-qtgui/lib/time_sink_c_impl.cc              |  4 ++-\n gr-qtgui/lib/time_sink_f_impl.cc              |  4 ++-\n gr-qtgui/lib/waterfall_sink_c_impl.cc         | 13 +++++++---\n gr-qtgui/lib/waterfall_sink_f_impl.cc         | 13 +++++++---\n gr-uhd/lib/usrp_block_impl.cc                 | 25 ++++++++++++-------\n gr-uhd/lib/usrp_source_impl.cc                |  5 ++--\n gr-zeromq/lib/pub_msg_sink_impl.cc            |  4 ++-\n gr-zeromq/lib/push_msg_sink_impl.cc           |  4 ++-\n 48 files changed, 213 insertions(+), 106 deletions(-)\n\ndiff --git a/docs/usage-manual/(exported from wiki) Message Passing.txt b/docs/usage-manual/(exported from wiki) Message Passing.txt\nindex 4654bd5da..551e71022 100644\n--- a/docs/usage-manual/(exported from wiki) Message Passing.txt\t\n+++ b/docs/usage-manual/(exported from wiki) Message Passing.txt\t\n@@ -94,7 +94,7 @@ must then bind this port to the message handler. For this, we use\n Boost's 'bind' function:\n \n   set_msg_handler(pmt::pmt_t port_id,\n-    boost::bind(&block_class::message_handler_function, this, _1));\n+    boost::bind(&block_class::message_handler_function, this, boost::placeholders::_1));\n \n In Python:\n \n@@ -241,15 +241,15 @@ The constructor of this block looks like this:\n  {\n    message_port_register_in(pmt::mp(\"print\"));\n    set_msg_handler(pmt::mp(\"print\"),\n-     boost::bind(&message_debug_impl::print, this, _1));\n+     boost::bind(&message_debug_impl::print, this, boost::placeholders::_1));\n  \n    message_port_register_in(pmt::mp(\"store\"));\n    set_msg_handler(pmt::mp(\"store\"),\n-     boost::bind(&message_debug_impl::store, this, _1));\n+     boost::bind(&message_debug_impl::store, this, boost::placeholders::_1));\n  \n    message_port_register_in(pmt::mp(\"print_pdu\"));\n    set_msg_handler(pmt::mp(\"print_pdu\"),\n-     boost::bind(&message_debug_impl::print_pdu, this, _1));\n+     boost::bind(&message_debug_impl::print_pdu, this, boost::placeholders::_1));\n  }\n </syntaxhighlight>\n \ndiff --git a/gnuradio-runtime/lib/block.cc b/gnuradio-runtime/lib/block.cc\nindex 591428390..fca4cab97 100644\n--- a/gnuradio-runtime/lib/block.cc\n+++ b/gnuradio-runtime/lib/block.cc\n@@ -61,7 +61,8 @@ block::block(const std::string& name,\n {\n     global_block_registry.register_primitive(alias(), this);\n     message_port_register_in(d_system_port);\n-    set_msg_handler(d_system_port, boost::bind(&block::system_handler, this, _1));\n+    set_msg_handler(d_system_port,\n+                    boost::bind(&block::system_handler, this, boost::placeholders::_1));\n \n     configure_default_loggers(d_logger, d_debug_logger, symbol_name());\n }\ndiff --git a/gr-blocks/lib/copy_impl.cc b/gr-blocks/lib/copy_impl.cc\nindex c377e57b1..b55196c24 100644\n--- a/gr-blocks/lib/copy_impl.cc\n+++ b/gr-blocks/lib/copy_impl.cc\n@@ -44,7 +44,9 @@ copy_impl::copy_impl(size_t itemsize)\n       d_enabled(true)\n {\n     message_port_register_in(pmt::mp(\"en\"));\n-    set_msg_handler(pmt::mp(\"en\"), boost::bind(&copy_impl::handle_enable, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"en\"),\n+        boost::bind(&copy_impl::handle_enable, this, boost::placeholders::_1));\n }\n \n copy_impl::~copy_impl() {}\ndiff --git a/gr-blocks/lib/message_debug_impl.cc b/gr-blocks/lib/message_debug_impl.cc\nindex a8c84aa50..916f97ca3 100644\n--- a/gr-blocks/lib/message_debug_impl.cc\n+++ b/gr-blocks/lib/message_debug_impl.cc\n@@ -90,14 +90,19 @@ message_debug_impl::message_debug_impl()\n     : block(\"message_debug\", io_signature::make(0, 0, 0), io_signature::make(0, 0, 0))\n {\n     message_port_register_in(pmt::mp(\"print\"));\n-    set_msg_handler(pmt::mp(\"print\"), boost::bind(&message_debug_impl::print, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"print\"),\n+        boost::bind(&message_debug_impl::print, this, boost::placeholders::_1));\n \n     message_port_register_in(pmt::mp(\"store\"));\n-    set_msg_handler(pmt::mp(\"store\"), boost::bind(&message_debug_impl::store, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"store\"),\n+        boost::bind(&message_debug_impl::store, this, boost::placeholders::_1));\n \n     message_port_register_in(pmt::mp(\"print_pdu\"));\n-    set_msg_handler(pmt::mp(\"print_pdu\"),\n-                    boost::bind(&message_debug_impl::print_pdu, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"print_pdu\"),\n+        boost::bind(&message_debug_impl::print_pdu, this, boost::placeholders::_1));\n }\n \n message_debug_impl::~message_debug_impl() {}\ndiff --git a/gr-blocks/lib/message_strobe_impl.cc b/gr-blocks/lib/message_strobe_impl.cc\nindex 038eeae5a..d131b8166 100644\n--- a/gr-blocks/lib/message_strobe_impl.cc\n+++ b/gr-blocks/lib/message_strobe_impl.cc\n@@ -53,8 +53,9 @@ message_strobe_impl::message_strobe_impl(pmt::pmt_t msg, long period_ms)\n     message_port_register_out(d_port);\n \n     message_port_register_in(pmt::mp(\"set_msg\"));\n-    set_msg_handler(pmt::mp(\"set_msg\"),\n-                    boost::bind(&message_strobe_impl::set_msg, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"set_msg\"),\n+        boost::bind(&message_strobe_impl::set_msg, this, boost::placeholders::_1));\n }\n \n message_strobe_impl::~message_strobe_impl() {}\ndiff --git a/gr-blocks/lib/message_strobe_random_impl.cc b/gr-blocks/lib/message_strobe_random_impl.cc\nindex 0ab5d6adc..53e641fba 100644\n--- a/gr-blocks/lib/message_strobe_random_impl.cc\n+++ b/gr-blocks/lib/message_strobe_random_impl.cc\n@@ -74,8 +74,9 @@ message_strobe_random_impl::message_strobe_random_impl(\n         new gr::thread::thread(boost::bind(&message_strobe_random_impl::run, this)));\n \n     message_port_register_in(pmt::mp(\"set_msg\"));\n-    set_msg_handler(pmt::mp(\"set_msg\"),\n-                    boost::bind(&message_strobe_random_impl::set_msg, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"set_msg\"),\n+        boost::bind(&message_strobe_random_impl::set_msg, this, boost::placeholders::_1));\n }\n \n long message_strobe_random_impl::next_delay()\ndiff --git a/gr-blocks/lib/multiply_matrix_impl.cc b/gr-blocks/lib/multiply_matrix_impl.cc\nindex e1b9c746c..e38953bab 100644\n--- a/gr-blocks/lib/multiply_matrix_impl.cc\n+++ b/gr-blocks/lib/multiply_matrix_impl.cc\n@@ -235,9 +235,10 @@ multiply_matrix_impl<gr_complex>::multiply_matrix_impl(\n \n     pmt::pmt_t port_name = pmt::string_to_symbol(\"set_A\");\n     message_port_register_in(port_name);\n-    set_msg_handler(\n-        port_name,\n-        boost::bind(&multiply_matrix_impl<gr_complex>::msg_handler_A, this, _1));\n+    set_msg_handler(port_name,\n+                    boost::bind(&multiply_matrix_impl<gr_complex>::msg_handler_A,\n+                                this,\n+                                boost::placeholders::_1));\n }\n \n template <>\n@@ -257,7 +258,9 @@ multiply_matrix_impl<float>::multiply_matrix_impl(\n     pmt::pmt_t port_name = pmt::string_to_symbol(\"set_A\");\n     message_port_register_in(port_name);\n     set_msg_handler(port_name,\n-                    boost::bind(&multiply_matrix_impl<float>::msg_handler_A, this, _1));\n+                    boost::bind(&multiply_matrix_impl<float>::msg_handler_A,\n+                                this,\n+                                boost::placeholders::_1));\n }\n \n \ndiff --git a/gr-blocks/lib/mute_impl.cc b/gr-blocks/lib/mute_impl.cc\nindex bd65ce207..5c732f8f4 100644\n--- a/gr-blocks/lib/mute_impl.cc\n+++ b/gr-blocks/lib/mute_impl.cc\n@@ -47,8 +47,9 @@ mute_impl<T>::mute_impl(bool mute)\n       d_mute(mute)\n {\n     this->message_port_register_in(pmt::intern(\"set_mute\"));\n-    this->set_msg_handler(pmt::intern(\"set_mute\"),\n-                          boost::bind(&mute_impl<T>::set_mute_pmt, this, _1));\n+    this->set_msg_handler(\n+        pmt::intern(\"set_mute\"),\n+        boost::bind(&mute_impl<T>::set_mute_pmt, this, boost::placeholders::_1));\n }\n \n template <class T>\ndiff --git a/gr-blocks/lib/nop_impl.cc b/gr-blocks/lib/nop_impl.cc\nindex db216d97a..e9baee587 100644\n--- a/gr-blocks/lib/nop_impl.cc\n+++ b/gr-blocks/lib/nop_impl.cc\n@@ -44,8 +44,9 @@ nop_impl::nop_impl(size_t sizeof_stream_item)\n {\n     // Arrange to have count_received_msgs called when messages are received.\n     message_port_register_in(pmt::mp(\"port\"));\n-    set_msg_handler(pmt::mp(\"port\"),\n-                    boost::bind(&nop_impl::count_received_msgs, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"port\"),\n+        boost::bind(&nop_impl::count_received_msgs, this, boost::placeholders::_1));\n }\n \n nop_impl::~nop_impl() {}\ndiff --git a/gr-blocks/lib/pdu_filter_impl.cc b/gr-blocks/lib/pdu_filter_impl.cc\nindex b0748eec0..63cfe47e4 100644\n--- a/gr-blocks/lib/pdu_filter_impl.cc\n+++ b/gr-blocks/lib/pdu_filter_impl.cc\n@@ -44,8 +44,9 @@ pdu_filter_impl::pdu_filter_impl(pmt::pmt_t k, pmt::pmt_t v, bool invert)\n {\n     message_port_register_out(pdu::pdu_port_id());\n     message_port_register_in(pdu::pdu_port_id());\n-    set_msg_handler(pdu::pdu_port_id(),\n-                    boost::bind(&pdu_filter_impl::handle_msg, this, _1));\n+    set_msg_handler(\n+        pdu::pdu_port_id(),\n+        boost::bind(&pdu_filter_impl::handle_msg, this, boost::placeholders::_1));\n }\n \n void pdu_filter_impl::handle_msg(pmt::pmt_t pdu)\ndiff --git a/gr-blocks/lib/pdu_remove_impl.cc b/gr-blocks/lib/pdu_remove_impl.cc\nindex 19cc4dc76..2b97f827b 100644\n--- a/gr-blocks/lib/pdu_remove_impl.cc\n+++ b/gr-blocks/lib/pdu_remove_impl.cc\n@@ -42,8 +42,9 @@ pdu_remove_impl::pdu_remove_impl(pmt::pmt_t k)\n {\n     message_port_register_out(pdu::pdu_port_id());\n     message_port_register_in(pdu::pdu_port_id());\n-    set_msg_handler(pdu::pdu_port_id(),\n-                    boost::bind(&pdu_remove_impl::handle_msg, this, _1));\n+    set_msg_handler(\n+        pdu::pdu_port_id(),\n+        boost::bind(&pdu_remove_impl::handle_msg, this, boost::placeholders::_1));\n }\n \n void pdu_remove_impl::handle_msg(pmt::pmt_t pdu)\ndiff --git a/gr-blocks/lib/pdu_set_impl.cc b/gr-blocks/lib/pdu_set_impl.cc\nindex 40fbc3cd8..af59ef70f 100644\n--- a/gr-blocks/lib/pdu_set_impl.cc\n+++ b/gr-blocks/lib/pdu_set_impl.cc\n@@ -43,7 +43,9 @@ pdu_set_impl::pdu_set_impl(pmt::pmt_t k, pmt::pmt_t v)\n {\n     message_port_register_out(pdu::pdu_port_id());\n     message_port_register_in(pdu::pdu_port_id());\n-    set_msg_handler(pdu::pdu_port_id(), boost::bind(&pdu_set_impl::handle_msg, this, _1));\n+    set_msg_handler(\n+        pdu::pdu_port_id(),\n+        boost::bind(&pdu_set_impl::handle_msg, this, boost::placeholders::_1));\n }\n \n void pdu_set_impl::handle_msg(pmt::pmt_t pdu)\ndiff --git a/gr-blocks/lib/random_pdu_impl.cc b/gr-blocks/lib/random_pdu_impl.cc\nindex 75d825aef..6c142c353 100644\n--- a/gr-blocks/lib/random_pdu_impl.cc\n+++ b/gr-blocks/lib/random_pdu_impl.cc\n@@ -52,8 +52,9 @@ random_pdu_impl::random_pdu_impl(int min_items,\n {\n     message_port_register_out(pdu::pdu_port_id());\n     message_port_register_in(pmt::mp(\"generate\"));\n-    set_msg_handler(pmt::mp(\"generate\"),\n-                    boost::bind(&random_pdu_impl::generate_pdu, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"generate\"),\n+        boost::bind(&random_pdu_impl::generate_pdu, this, boost::placeholders::_1));\n     if (length_modulo < 1)\n         throw std::runtime_error(\"length_module must be >= 1\");\n     if (max_items < length_modulo)\ndiff --git a/gr-blocks/lib/repeat_impl.cc b/gr-blocks/lib/repeat_impl.cc\nindex 189fbc894..d6569625d 100644\n--- a/gr-blocks/lib/repeat_impl.cc\n+++ b/gr-blocks/lib/repeat_impl.cc\n@@ -44,8 +44,9 @@ repeat_impl::repeat_impl(size_t itemsize, int interp)\n       d_interp(interp)\n {\n     message_port_register_in(pmt::mp(\"interpolation\"));\n-    set_msg_handler(pmt::mp(\"interpolation\"),\n-                    boost::bind(&repeat_impl::msg_set_interpolation, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"interpolation\"),\n+        boost::bind(&repeat_impl::msg_set_interpolation, this, boost::placeholders::_1));\n }\n \n void repeat_impl::msg_set_interpolation(pmt::pmt_t msg)\ndiff --git a/gr-blocks/lib/socket_pdu_impl.cc b/gr-blocks/lib/socket_pdu_impl.cc\nindex df69f07ad..163eec3a6 100644\n--- a/gr-blocks/lib/socket_pdu_impl.cc\n+++ b/gr-blocks/lib/socket_pdu_impl.cc\n@@ -101,7 +101,9 @@ socket_pdu_impl::socket_pdu_impl(std::string type,\n         start_tcp_accept();\n \n         set_msg_handler(pdu::pdu_port_id(),\n-                        boost::bind(&socket_pdu_impl::tcp_server_send, this, _1));\n+                        boost::bind(&socket_pdu_impl::tcp_server_send,\n+                                    this,\n+                                    boost::placeholders::_1));\n     } else if (type == \"TCP_CLIENT\") {\n         boost::system::error_code error = boost::asio::error::host_not_found;\n         d_tcp_socket.reset(new boost::asio::ip::tcp::socket(d_io_service));\n@@ -111,7 +113,9 @@ socket_pdu_impl::socket_pdu_impl(std::string type,\n         d_tcp_socket->set_option(boost::asio::ip::tcp::no_delay(d_tcp_no_delay));\n \n         set_msg_handler(pdu::pdu_port_id(),\n-                        boost::bind(&socket_pdu_impl::tcp_client_send, this, _1));\n+                        boost::bind(&socket_pdu_impl::tcp_client_send,\n+                                    this,\n+                                    boost::placeholders::_1));\n \n         d_tcp_socket->async_read_some(\n             boost::asio::buffer(d_rxbuf),\n@@ -130,8 +134,9 @@ socket_pdu_impl::socket_pdu_impl(std::string type,\n                         boost::asio::placeholders::error,\n                         boost::asio::placeholders::bytes_transferred));\n \n-        set_msg_handler(pdu::pdu_port_id(),\n-                        boost::bind(&socket_pdu_impl::udp_send, this, _1));\n+        set_msg_handler(\n+            pdu::pdu_port_id(),\n+            boost::bind(&socket_pdu_impl::udp_send, this, boost::placeholders::_1));\n     } else if (type == \"UDP_CLIENT\") {\n         d_udp_socket.reset(\n             new boost::asio::ip::udp::socket(d_io_service, d_udp_endpoint));\n@@ -143,8 +148,9 @@ socket_pdu_impl::socket_pdu_impl(std::string type,\n                         boost::asio::placeholders::error,\n                         boost::asio::placeholders::bytes_transferred));\n \n-        set_msg_handler(pdu::pdu_port_id(),\n-                        boost::bind(&socket_pdu_impl::udp_send, this, _1));\n+        set_msg_handler(\n+            pdu::pdu_port_id(),\n+            boost::bind(&socket_pdu_impl::udp_send, this, boost::placeholders::_1));\n     } else\n         throw std::runtime_error(\"gr::blocks:socket_pdu: unknown socket type\");\n \ndiff --git a/gr-blocks/lib/tagged_stream_multiply_length_impl.cc b/gr-blocks/lib/tagged_stream_multiply_length_impl.cc\nindex 30f4c46dc..34b95d647 100644\n--- a/gr-blocks/lib/tagged_stream_multiply_length_impl.cc\n+++ b/gr-blocks/lib/tagged_stream_multiply_length_impl.cc\n@@ -49,9 +49,10 @@ tagged_stream_multiply_length_impl::tagged_stream_multiply_length_impl(\n     set_tag_propagation_policy(TPP_DONT);\n     set_relative_rate(1, 1);\n     message_port_register_in(pmt::intern(\"set_scalar\"));\n-    set_msg_handler(\n-        pmt::intern(\"set_scalar\"),\n-        boost::bind(&tagged_stream_multiply_length_impl::set_scalar_pmt, this, _1));\n+    set_msg_handler(pmt::intern(\"set_scalar\"),\n+                    boost::bind(&tagged_stream_multiply_length_impl::set_scalar_pmt,\n+                                this,\n+                                boost::placeholders::_1));\n }\n \n tagged_stream_multiply_length_impl::~tagged_stream_multiply_length_impl() {}\ndiff --git a/gr-blocks/lib/tuntap_pdu_impl.cc b/gr-blocks/lib/tuntap_pdu_impl.cc\nindex 4343ae1dc..0d9d7e28c 100644\n--- a/gr-blocks/lib/tuntap_pdu_impl.cc\n+++ b/gr-blocks/lib/tuntap_pdu_impl.cc\n@@ -96,7 +96,8 @@ tuntap_pdu_impl::tuntap_pdu_impl(std::string dev, int MTU, bool istunflag)\n \n     // set up input message port\n     message_port_register_in(pdu::pdu_port_id());\n-    set_msg_handler(pdu::pdu_port_id(), boost::bind(&tuntap_pdu_impl::send, this, _1));\n+    set_msg_handler(pdu::pdu_port_id(),\n+                    boost::bind(&tuntap_pdu_impl::send, this, boost::placeholders::_1));\n }\n \n int tuntap_pdu_impl::tun_alloc(char* dev, int flags)\ndiff --git a/gr-digital/lib/chunks_to_symbols_impl.cc b/gr-digital/lib/chunks_to_symbols_impl.cc\nindex 26d590a66..a6810a69e 100644\n--- a/gr-digital/lib/chunks_to_symbols_impl.cc\n+++ b/gr-digital/lib/chunks_to_symbols_impl.cc\n@@ -53,8 +53,9 @@ chunks_to_symbols_impl<IN_T, OUT_T>::chunks_to_symbols_impl(\n     this->message_port_register_in(pmt::mp(\"set_symbol_table\"));\n     this->set_msg_handler(\n         pmt::mp(\"set_symbol_table\"),\n-        boost::bind(\n-            &chunks_to_symbols_impl<IN_T, OUT_T>::handle_set_symbol_table, this, _1));\n+        boost::bind(&chunks_to_symbols_impl<IN_T, OUT_T>::handle_set_symbol_table,\n+                    this,\n+                    boost::placeholders::_1));\n }\n \n template <class IN_T, class OUT_T>\ndiff --git a/gr-digital/lib/constellation_receiver_cb_impl.cc b/gr-digital/lib/constellation_receiver_cb_impl.cc\nindex 7fb7559d5..7e216ece5 100644\n--- a/gr-digital/lib/constellation_receiver_cb_impl.cc\n+++ b/gr-digital/lib/constellation_receiver_cb_impl.cc\n@@ -61,14 +61,16 @@ constellation_receiver_cb_impl::constellation_receiver_cb_impl(\n             \"This receiver only works with constellations of dimension 1.\");\n \n     message_port_register_in(pmt::mp(\"set_constellation\"));\n-    set_msg_handler(\n-        pmt::mp(\"set_constellation\"),\n-        boost::bind(&constellation_receiver_cb_impl::handle_set_constellation, this, _1));\n+    set_msg_handler(pmt::mp(\"set_constellation\"),\n+                    boost::bind(&constellation_receiver_cb_impl::handle_set_constellation,\n+                                this,\n+                                boost::placeholders::_1));\n \n     message_port_register_in(pmt::mp(\"rotate_phase\"));\n-    set_msg_handler(\n-        pmt::mp(\"rotate_phase\"),\n-        boost::bind(&constellation_receiver_cb_impl::handle_rotate_phase, this, _1));\n+    set_msg_handler(pmt::mp(\"rotate_phase\"),\n+                    boost::bind(&constellation_receiver_cb_impl::handle_rotate_phase,\n+                                this,\n+                                boost::placeholders::_1));\n }\n \n constellation_receiver_cb_impl::~constellation_receiver_cb_impl() {}\ndiff --git a/gr-digital/lib/costas_loop_cc_impl.cc b/gr-digital/lib/costas_loop_cc_impl.cc\nindex c3b30834e..e1229e6f4 100644\n--- a/gr-digital/lib/costas_loop_cc_impl.cc\n+++ b/gr-digital/lib/costas_loop_cc_impl.cc\n@@ -82,7 +82,9 @@ costas_loop_cc_impl::costas_loop_cc_impl(float loop_bw, int order, bool use_snr)\n \n     message_port_register_in(pmt::mp(\"noise\"));\n     set_msg_handler(pmt::mp(\"noise\"),\n-                    boost::bind(&costas_loop_cc_impl::handle_set_noise, this, _1));\n+                    boost::bind(&costas_loop_cc_impl::handle_set_noise,\n+                                this,\n+                                boost::placeholders::_1));\n }\n \n costas_loop_cc_impl::~costas_loop_cc_impl() {}\ndiff --git a/gr-digital/lib/crc32_async_bb_impl.cc b/gr-digital/lib/crc32_async_bb_impl.cc\nindex bffbb2a73..66143866c 100644\n--- a/gr-digital/lib/crc32_async_bb_impl.cc\n+++ b/gr-digital/lib/crc32_async_bb_impl.cc\n@@ -48,9 +48,13 @@ crc32_async_bb_impl::crc32_async_bb_impl(bool check)\n     message_port_register_out(d_out_port);\n \n     if (check)\n-        set_msg_handler(d_in_port, boost::bind(&crc32_async_bb_impl::check, this, _1));\n+        set_msg_handler(\n+            d_in_port,\n+            boost::bind(&crc32_async_bb_impl::check, this, boost::placeholders::_1));\n     else\n-        set_msg_handler(d_in_port, boost::bind(&crc32_async_bb_impl::calc, this, _1));\n+        set_msg_handler(\n+            d_in_port,\n+            boost::bind(&crc32_async_bb_impl::calc, this, boost::placeholders::_1));\n }\n \n crc32_async_bb_impl::~crc32_async_bb_impl() {}\ndiff --git a/gr-digital/lib/header_payload_demux_impl.cc b/gr-digital/lib/header_payload_demux_impl.cc\nindex 98c805fb2..7cc1e0a4e 100644\n--- a/gr-digital/lib/header_payload_demux_impl.cc\n+++ b/gr-digital/lib/header_payload_demux_impl.cc\n@@ -150,9 +150,10 @@ header_payload_demux_impl::header_payload_demux_impl(\n     }\n     set_tag_propagation_policy(TPP_DONT);\n     message_port_register_in(msg_port_id());\n-    set_msg_handler(\n-        msg_port_id(),\n-        boost::bind(&header_payload_demux_impl::parse_header_data_msg, this, _1));\n+    set_msg_handler(msg_port_id(),\n+                    boost::bind(&header_payload_demux_impl::parse_header_data_msg,\n+                                this,\n+                                boost::placeholders::_1));\n     for (size_t i = 0; i < special_tags.size(); i++) {\n         d_special_tags.push_back(pmt::string_to_symbol(special_tags[i]));\n         d_special_tags_last_value.push_back(pmt::PMT_NIL);\ndiff --git a/gr-digital/lib/protocol_formatter_async_impl.cc b/gr-digital/lib/protocol_formatter_async_impl.cc\nindex 84b693745..c08bbb9ae 100644\n--- a/gr-digital/lib/protocol_formatter_async_impl.cc\n+++ b/gr-digital/lib/protocol_formatter_async_impl.cc\n@@ -55,7 +55,9 @@ protocol_formatter_async_impl::protocol_formatter_async_impl(\n     message_port_register_out(d_pld_port);\n \n     set_msg_handler(d_in_port,\n-                    boost::bind(&protocol_formatter_async_impl::append, this, _1));\n+                    boost::bind(&protocol_formatter_async_impl::append,\n+                                this,\n+                                boost::placeholders::_1));\n }\n \n protocol_formatter_async_impl::~protocol_formatter_async_impl() {}\ndiff --git a/gr-fec/lib/async_decoder_impl.cc b/gr-fec/lib/async_decoder_impl.cc\nindex e7a668c83..5d68d13ae 100644\n--- a/gr-fec/lib/async_decoder_impl.cc\n+++ b/gr-fec/lib/async_decoder_impl.cc\n@@ -65,10 +65,14 @@ async_decoder_impl::async_decoder_impl(generic_decoder::sptr my_decoder,\n     if (d_packed) {\n         d_pack = new blocks::kernel::pack_k_bits(8);\n         set_msg_handler(d_in_port,\n-                        boost::bind(&async_decoder_impl::decode_packed, this, _1));\n+                        boost::bind(&async_decoder_impl::decode_packed,\n+                                    this,\n+                                    boost::placeholders::_1));\n     } else {\n         set_msg_handler(d_in_port,\n-                        boost::bind(&async_decoder_impl::decode_unpacked, this, _1));\n+                        boost::bind(&async_decoder_impl::decode_unpacked,\n+                                    this,\n+                                    boost::placeholders::_1));\n     }\n \n     // The maximum frame size is set by the initial frame size of the decoder.\ndiff --git a/gr-fec/lib/async_encoder_impl.cc b/gr-fec/lib/async_encoder_impl.cc\nindex 811d55601..506ae5c7e 100644\n--- a/gr-fec/lib/async_encoder_impl.cc\n+++ b/gr-fec/lib/async_encoder_impl.cc\n@@ -64,7 +64,9 @@ async_encoder_impl::async_encoder_impl(generic_encoder::sptr my_encoder,\n \n     if (d_packed) {\n         set_msg_handler(d_in_port,\n-                        boost::bind(&async_encoder_impl::encode_packed, this, _1));\n+                        boost::bind(&async_encoder_impl::encode_packed,\n+                                    this,\n+                                    boost::placeholders::_1));\n \n         d_unpack = new blocks::kernel::unpack_k_bits(8);\n \n@@ -74,7 +76,9 @@ async_encoder_impl::async_encoder_impl(generic_encoder::sptr my_encoder,\n \n     } else {\n         set_msg_handler(d_in_port,\n-                        boost::bind(&async_encoder_impl::encode_unpacked, this, _1));\n+                        boost::bind(&async_encoder_impl::encode_unpacked,\n+                                    this,\n+                                    boost::placeholders::_1));\n     }\n \n     if (d_packed || (strncmp(d_encoder->get_input_conversion(), \"pack\", 4) == 0)) {\ndiff --git a/gr-fec/lib/depuncture_bb_impl.cc b/gr-fec/lib/depuncture_bb_impl.cc\nindex 27d00bb5b..f64dad45f 100644\n--- a/gr-fec/lib/depuncture_bb_impl.cc\n+++ b/gr-fec/lib/depuncture_bb_impl.cc\n@@ -74,7 +74,9 @@ depuncture_bb_impl::depuncture_bb_impl(int puncsize, int puncpat, int delay, cha\n     set_fixed_rate(true);\n     set_relative_rate((uint64_t)d_puncsize, (uint64_t)(d_puncsize - d_puncholes));\n     set_output_multiple(d_puncsize);\n-    // set_msg_handler(boost::bind(&depuncture_bb_impl::catch_msg, this, _1));\n+    // set_msg_handler(boost::bind(&depuncture_bb_impl::catch_msg,\n+    //                             this,\n+    //                             boost::placeholders::_1));\n }\n \n depuncture_bb_impl::~depuncture_bb_impl() {}\ndiff --git a/gr-fec/lib/puncture_bb_impl.cc b/gr-fec/lib/puncture_bb_impl.cc\nindex a365d6a69..f2078d8c5 100644\n--- a/gr-fec/lib/puncture_bb_impl.cc\n+++ b/gr-fec/lib/puncture_bb_impl.cc\n@@ -72,7 +72,9 @@ puncture_bb_impl::puncture_bb_impl(int puncsize, int puncpat, int delay)\n     set_fixed_rate(true);\n     set_relative_rate((uint64_t)(d_puncsize - d_puncholes), (uint64_t)d_puncsize);\n     set_output_multiple(d_puncsize - d_puncholes);\n-    // set_msg_handler(boost::bind(&puncture_bb_impl::catch_msg, this, _1));\n+    // set_msg_handler(boost::bind(&puncture_bb_impl::catch_msg,\n+    //                             this,\n+    //                             boost::placeholders::_1));\n }\n \n puncture_bb_impl::~puncture_bb_impl() {}\ndiff --git a/gr-fec/lib/puncture_ff_impl.cc b/gr-fec/lib/puncture_ff_impl.cc\nindex c95288d69..95fb649a8 100644\n--- a/gr-fec/lib/puncture_ff_impl.cc\n+++ b/gr-fec/lib/puncture_ff_impl.cc\n@@ -72,7 +72,9 @@ puncture_ff_impl::puncture_ff_impl(int puncsize, int puncpat, int delay)\n     set_fixed_rate(true);\n     set_relative_rate((uint64_t)(d_puncsize - d_puncholes), (uint64_t)d_puncsize);\n     set_output_multiple(d_puncsize - d_puncholes);\n-    // set_msg_handler(boost::bind(&puncture_ff_impl::catch_msg, this, _1));\n+    // set_msg_handler(boost::bind(&puncture_ff_impl::catch_msg,\n+    //                             this,\n+    //                             boost::placeholders::_1));\n }\n \n puncture_ff_impl::~puncture_ff_impl() {}\ndiff --git a/gr-filter/lib/freq_xlating_fir_filter_impl.cc b/gr-filter/lib/freq_xlating_fir_filter_impl.cc\nindex 8ddc967ba..50ec58947 100644\n--- a/gr-filter/lib/freq_xlating_fir_filter_impl.cc\n+++ b/gr-filter/lib/freq_xlating_fir_filter_impl.cc\n@@ -72,7 +72,7 @@ freq_xlating_fir_filter_impl<IN_T, OUT_T, TAP_T>::freq_xlating_fir_filter_impl(\n         boost::bind(\n             &freq_xlating_fir_filter_impl<IN_T, OUT_T, TAP_T>::handle_set_center_freq,\n             this,\n-            _1));\n+            boost::placeholders::_1));\n }\n \n template <class IN_T, class OUT_T, class TAP_T>\ndiff --git a/gr-filter/lib/mmse_resampler_cc_impl.cc b/gr-filter/lib/mmse_resampler_cc_impl.cc\nindex 59f9eacfa..bdce51716 100644\n--- a/gr-filter/lib/mmse_resampler_cc_impl.cc\n+++ b/gr-filter/lib/mmse_resampler_cc_impl.cc\n@@ -52,8 +52,9 @@ mmse_resampler_cc_impl::mmse_resampler_cc_impl(float phase_shift, float resamp_r\n \n     set_inverse_relative_rate(d_mu_inc);\n     message_port_register_in(pmt::intern(\"msg_in\"));\n-    set_msg_handler(pmt::intern(\"msg_in\"),\n-                    boost::bind(&mmse_resampler_cc_impl::handle_msg, this, _1));\n+    set_msg_handler(\n+        pmt::intern(\"msg_in\"),\n+        boost::bind(&mmse_resampler_cc_impl::handle_msg, this, boost::placeholders::_1));\n }\n \n mmse_resampler_cc_impl::~mmse_resampler_cc_impl() { delete d_resamp; }\ndiff --git a/gr-filter/lib/mmse_resampler_ff_impl.cc b/gr-filter/lib/mmse_resampler_ff_impl.cc\nindex 342d9f767..3d7272711 100644\n--- a/gr-filter/lib/mmse_resampler_ff_impl.cc\n+++ b/gr-filter/lib/mmse_resampler_ff_impl.cc\n@@ -53,8 +53,9 @@ mmse_resampler_ff_impl::mmse_resampler_ff_impl(float phase_shift, float resamp_r\n     set_inverse_relative_rate(d_mu_inc);\n \n     message_port_register_in(pmt::intern(\"msg_in\"));\n-    set_msg_handler(pmt::intern(\"msg_in\"),\n-                    boost::bind(&mmse_resampler_ff_impl::handle_msg, this, _1));\n+    set_msg_handler(\n+        pmt::intern(\"msg_in\"),\n+        boost::bind(&mmse_resampler_ff_impl::handle_msg, this, boost::placeholders::_1));\n }\n \n mmse_resampler_ff_impl::~mmse_resampler_ff_impl() { delete d_resamp; }\ndiff --git a/gr-qtgui/lib/const_sink_c_impl.cc b/gr-qtgui/lib/const_sink_c_impl.cc\nindex 852f6ee10..04d421d03 100644\n--- a/gr-qtgui/lib/const_sink_c_impl.cc\n+++ b/gr-qtgui/lib/const_sink_c_impl.cc\n@@ -69,8 +69,9 @@ const_sink_c_impl::const_sink_c_impl(int size,\n \n     // setup PDU handling input port\n     message_port_register_in(pmt::mp(\"in\"));\n-    set_msg_handler(pmt::mp(\"in\"),\n-                    boost::bind(&const_sink_c_impl::handle_pdus, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"in\"),\n+        boost::bind(&const_sink_c_impl::handle_pdus, this, boost::placeholders::_1));\n \n     for (int i = 0; i < d_nconnections; i++) {\n         d_residbufs_real.push_back(\ndiff --git a/gr-qtgui/lib/edit_box_msg_impl.cc b/gr-qtgui/lib/edit_box_msg_impl.cc\nindex 8713aa820..39546cbf3 100644\n--- a/gr-qtgui/lib/edit_box_msg_impl.cc\n+++ b/gr-qtgui/lib/edit_box_msg_impl.cc\n@@ -158,7 +158,9 @@ edit_box_msg_impl::edit_box_msg_impl(data_type_t type,\n     message_port_register_out(d_port);\n     message_port_register_in(pmt::mp(\"val\"));\n \n-    set_msg_handler(pmt::mp(\"val\"), boost::bind(&edit_box_msg_impl::set_value, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"val\"),\n+        boost::bind(&edit_box_msg_impl::set_value, this, boost::placeholders::_1));\n }\n \n edit_box_msg_impl::~edit_box_msg_impl()\ndiff --git a/gr-qtgui/lib/freq_sink_c_impl.cc b/gr-qtgui/lib/freq_sink_c_impl.cc\nindex 3a34df6ec..fe231699f 100644\n--- a/gr-qtgui/lib/freq_sink_c_impl.cc\n+++ b/gr-qtgui/lib/freq_sink_c_impl.cc\n@@ -82,17 +82,23 @@ freq_sink_c_impl::freq_sink_c_impl(int fftsize,\n \n     // setup bw input port\n     message_port_register_in(d_port_bw);\n-    set_msg_handler(d_port_bw, boost::bind(&freq_sink_c_impl::handle_set_bw, this, _1));\n+    set_msg_handler(\n+        d_port_bw,\n+        boost::bind(&freq_sink_c_impl::handle_set_bw, this, boost::placeholders::_1));\n \n     // setup output message port to post frequency when display is\n     // double-clicked\n     message_port_register_out(d_port);\n     message_port_register_in(d_port);\n-    set_msg_handler(d_port, boost::bind(&freq_sink_c_impl::handle_set_freq, this, _1));\n+    set_msg_handler(\n+        d_port,\n+        boost::bind(&freq_sink_c_impl::handle_set_freq, this, boost::placeholders::_1));\n \n     // setup PDU handling input port\n     message_port_register_in(pmt::mp(\"in\"));\n-    set_msg_handler(pmt::mp(\"in\"), boost::bind(&freq_sink_c_impl::handle_pdus, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"in\"),\n+        boost::bind(&freq_sink_c_impl::handle_pdus, this, boost::placeholders::_1));\n \n     d_main_gui = NULL;\n \ndiff --git a/gr-qtgui/lib/freq_sink_f_impl.cc b/gr-qtgui/lib/freq_sink_f_impl.cc\nindex c14bfc31f..7090d8699 100644\n--- a/gr-qtgui/lib/freq_sink_f_impl.cc\n+++ b/gr-qtgui/lib/freq_sink_f_impl.cc\n@@ -82,17 +82,23 @@ freq_sink_f_impl::freq_sink_f_impl(int fftsize,\n \n     // setup bw input port\n     message_port_register_in(d_port_bw);\n-    set_msg_handler(d_port_bw, boost::bind(&freq_sink_f_impl::handle_set_bw, this, _1));\n+    set_msg_handler(\n+        d_port_bw,\n+        boost::bind(&freq_sink_f_impl::handle_set_bw, this, boost::placeholders::_1));\n \n     // setup output message port to post frequency when display is\n     // double-clicked\n     message_port_register_out(d_port);\n     message_port_register_in(d_port);\n-    set_msg_handler(d_port, boost::bind(&freq_sink_f_impl::handle_set_freq, this, _1));\n+    set_msg_handler(\n+        d_port,\n+        boost::bind(&freq_sink_f_impl::handle_set_freq, this, boost::placeholders::_1));\n \n     // setup PDU handling input port\n     message_port_register_in(pmt::mp(\"in\"));\n-    set_msg_handler(pmt::mp(\"in\"), boost::bind(&freq_sink_f_impl::handle_pdus, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"in\"),\n+        boost::bind(&freq_sink_f_impl::handle_pdus, this, boost::placeholders::_1));\n \n     d_main_gui = NULL;\n \ndiff --git a/gr-qtgui/lib/histogram_sink_f_impl.cc b/gr-qtgui/lib/histogram_sink_f_impl.cc\nindex d16de932c..1602d1896 100644\n--- a/gr-qtgui/lib/histogram_sink_f_impl.cc\n+++ b/gr-qtgui/lib/histogram_sink_f_impl.cc\n@@ -81,8 +81,9 @@ histogram_sink_f_impl::histogram_sink_f_impl(int size,\n \n     // setup PDU handling input port\n     message_port_register_in(pmt::mp(\"in\"));\n-    set_msg_handler(pmt::mp(\"in\"),\n-                    boost::bind(&histogram_sink_f_impl::handle_pdus, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"in\"),\n+        boost::bind(&histogram_sink_f_impl::handle_pdus, this, boost::placeholders::_1));\n \n     // +1 for the PDU buffer\n     for (int i = 0; i < d_nconnections + 1; i++) {\ndiff --git a/gr-qtgui/lib/sink_c_impl.cc b/gr-qtgui/lib/sink_c_impl.cc\nindex d3feb9d16..73136e789 100644\n--- a/gr-qtgui/lib/sink_c_impl.cc\n+++ b/gr-qtgui/lib/sink_c_impl.cc\n@@ -96,7 +96,9 @@ sink_c_impl::sink_c_impl(int fftsize,\n     // double-clicked\n     message_port_register_out(d_port);\n     message_port_register_in(d_port);\n-    set_msg_handler(d_port, boost::bind(&sink_c_impl::handle_set_freq, this, _1));\n+    set_msg_handler(\n+        d_port,\n+        boost::bind(&sink_c_impl::handle_set_freq, this, boost::placeholders::_1));\n \n     d_main_gui = NULL;\n \ndiff --git a/gr-qtgui/lib/sink_f_impl.cc b/gr-qtgui/lib/sink_f_impl.cc\nindex 418b630b7..d31023a51 100644\n--- a/gr-qtgui/lib/sink_f_impl.cc\n+++ b/gr-qtgui/lib/sink_f_impl.cc\n@@ -95,7 +95,9 @@ sink_f_impl::sink_f_impl(int fftsize,\n     // double-clicked\n     message_port_register_out(d_port);\n     message_port_register_in(d_port);\n-    set_msg_handler(d_port, boost::bind(&sink_f_impl::handle_set_freq, this, _1));\n+    set_msg_handler(\n+        d_port,\n+        boost::bind(&sink_f_impl::handle_set_freq, this, boost::placeholders::_1));\n \n     d_main_gui = NULL;\n \ndiff --git a/gr-qtgui/lib/time_raster_sink_b_impl.cc b/gr-qtgui/lib/time_raster_sink_b_impl.cc\nindex 045c216b0..3aa503ccf 100644\n--- a/gr-qtgui/lib/time_raster_sink_b_impl.cc\n+++ b/gr-qtgui/lib/time_raster_sink_b_impl.cc\n@@ -84,7 +84,9 @@ time_raster_sink_b_impl::time_raster_sink_b_impl(double samp_rate,\n     // setup PDU handling input port\n     message_port_register_in(pmt::mp(\"in\"));\n     set_msg_handler(pmt::mp(\"in\"),\n-                    boost::bind(&time_raster_sink_b_impl::handle_pdus, this, _1));\n+                    boost::bind(&time_raster_sink_b_impl::handle_pdus,\n+                                this,\n+                                boost::placeholders::_1));\n \n     d_scale = 1.0f;\n \ndiff --git a/gr-qtgui/lib/time_raster_sink_f_impl.cc b/gr-qtgui/lib/time_raster_sink_f_impl.cc\nindex d186f319d..b3516e5be 100644\n--- a/gr-qtgui/lib/time_raster_sink_f_impl.cc\n+++ b/gr-qtgui/lib/time_raster_sink_f_impl.cc\n@@ -84,7 +84,9 @@ time_raster_sink_f_impl::time_raster_sink_f_impl(double samp_rate,\n     // setup PDU handling input port\n     message_port_register_in(pmt::mp(\"in\"));\n     set_msg_handler(pmt::mp(\"in\"),\n-                    boost::bind(&time_raster_sink_f_impl::handle_pdus, this, _1));\n+                    boost::bind(&time_raster_sink_f_impl::handle_pdus,\n+                                this,\n+                                boost::placeholders::_1));\n \n     d_icols = static_cast<int>(ceil(d_cols));\n     d_tmpflt = (float*)volk_malloc(d_icols * sizeof(float), volk_get_alignment());\ndiff --git a/gr-qtgui/lib/time_sink_c_impl.cc b/gr-qtgui/lib/time_sink_c_impl.cc\nindex b73a1c1ad..83fbda298 100644\n--- a/gr-qtgui/lib/time_sink_c_impl.cc\n+++ b/gr-qtgui/lib/time_sink_c_impl.cc\n@@ -80,7 +80,9 @@ time_sink_c_impl::time_sink_c_impl(int size,\n \n     // setup PDU handling input port\n     message_port_register_in(pmt::mp(\"in\"));\n-    set_msg_handler(pmt::mp(\"in\"), boost::bind(&time_sink_c_impl::handle_pdus, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"in\"),\n+        boost::bind(&time_sink_c_impl::handle_pdus, this, boost::placeholders::_1));\n \n     // +2 for the PDU message buffers\n     for (unsigned int n = 0; n < d_nconnections + 2; n++) {\ndiff --git a/gr-qtgui/lib/time_sink_f_impl.cc b/gr-qtgui/lib/time_sink_f_impl.cc\nindex df13998d7..dd5ed12c8 100644\n--- a/gr-qtgui/lib/time_sink_f_impl.cc\n+++ b/gr-qtgui/lib/time_sink_f_impl.cc\n@@ -80,7 +80,9 @@ time_sink_f_impl::time_sink_f_impl(int size,\n \n     // setup PDU handling input port\n     message_port_register_in(pmt::mp(\"in\"));\n-    set_msg_handler(pmt::mp(\"in\"), boost::bind(&time_sink_f_impl::handle_pdus, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"in\"),\n+        boost::bind(&time_sink_f_impl::handle_pdus, this, boost::placeholders::_1));\n \n     // +1 for the PDU buffer\n     for (unsigned int n = 0; n < d_nconnections + 1; n++) {\ndiff --git a/gr-qtgui/lib/waterfall_sink_c_impl.cc b/gr-qtgui/lib/waterfall_sink_c_impl.cc\nindex fcf2ed98b..da38d32ba 100644\n--- a/gr-qtgui/lib/waterfall_sink_c_impl.cc\n+++ b/gr-qtgui/lib/waterfall_sink_c_impl.cc\n@@ -118,19 +118,24 @@ waterfall_sink_c_impl::waterfall_sink_c_impl(int fftsize,\n     // setup bw input port\n     message_port_register_in(d_port_bw);\n     set_msg_handler(d_port_bw,\n-                    boost::bind(&waterfall_sink_c_impl::handle_set_bw, this, _1));\n+                    boost::bind(&waterfall_sink_c_impl::handle_set_bw,\n+                                this,\n+                                boost::placeholders::_1));\n \n     // setup output message port to post frequency when display is\n     // double-clicked\n     message_port_register_out(d_port);\n     message_port_register_in(d_port);\n     set_msg_handler(d_port,\n-                    boost::bind(&waterfall_sink_c_impl::handle_set_freq, this, _1));\n+                    boost::bind(&waterfall_sink_c_impl::handle_set_freq,\n+                                this,\n+                                boost::placeholders::_1));\n \n     // setup PDU handling input port\n     message_port_register_in(pmt::mp(\"in\"));\n-    set_msg_handler(pmt::mp(\"in\"),\n-                    boost::bind(&waterfall_sink_c_impl::handle_pdus, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"in\"),\n+        boost::bind(&waterfall_sink_c_impl::handle_pdus, this, boost::placeholders::_1));\n }\n \n waterfall_sink_c_impl::~waterfall_sink_c_impl()\ndiff --git a/gr-qtgui/lib/waterfall_sink_f_impl.cc b/gr-qtgui/lib/waterfall_sink_f_impl.cc\nindex aa1037a47..d4231a564 100644\n--- a/gr-qtgui/lib/waterfall_sink_f_impl.cc\n+++ b/gr-qtgui/lib/waterfall_sink_f_impl.cc\n@@ -116,19 +116,24 @@ waterfall_sink_f_impl::waterfall_sink_f_impl(int fftsize,\n     // setup bw input port\n     message_port_register_in(d_port_bw);\n     set_msg_handler(d_port_bw,\n-                    boost::bind(&waterfall_sink_f_impl::handle_set_bw, this, _1));\n+                    boost::bind(&waterfall_sink_f_impl::handle_set_bw,\n+                                this,\n+                                boost::placeholders::_1));\n \n     // setup output message port to post frequency when display is\n     // double-clicked\n     message_port_register_out(d_port);\n     message_port_register_in(d_port);\n     set_msg_handler(d_port,\n-                    boost::bind(&waterfall_sink_f_impl::handle_set_freq, this, _1));\n+                    boost::bind(&waterfall_sink_f_impl::handle_set_freq,\n+                                this,\n+                                boost::placeholders::_1));\n \n     // setup PDU handling input port\n     message_port_register_in(pmt::mp(\"in\"));\n-    set_msg_handler(pmt::mp(\"in\"),\n-                    boost::bind(&waterfall_sink_f_impl::handle_pdus, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"in\"),\n+        boost::bind(&waterfall_sink_f_impl::handle_pdus, this, boost::placeholders::_1));\n }\n \n waterfall_sink_f_impl::~waterfall_sink_f_impl()\ndiff --git a/gr-uhd/lib/usrp_block_impl.cc b/gr-uhd/lib/usrp_block_impl.cc\nindex 4f030159f..697d633c1 100644\n--- a/gr-uhd/lib/usrp_block_impl.cc\n+++ b/gr-uhd/lib/usrp_block_impl.cc\n@@ -137,12 +137,18 @@ usrp_block_impl::usrp_block_impl(const ::uhd::device_addr_t& device_addr,\n     // Set up message ports:\n     message_port_register_in(pmt::mp(\"command\"));\n     set_msg_handler(pmt::mp(\"command\"),\n-                    boost::bind(&usrp_block_impl::msg_handler_command, this, _1));\n+                    boost::bind(&usrp_block_impl::msg_handler_command,\n+                                this,\n+                                boost::placeholders::_1));\n \n // cuz we lazy:\n-#define REGISTER_CMD_HANDLER(key, _handler) \\\n-    register_msg_cmd_handler(key,           \\\n-                             boost::bind(&usrp_block_impl::_handler, this, _1, _2, _3))\n+#define REGISTER_CMD_HANDLER(key, _handler)                          \\\n+    register_msg_cmd_handler(key,                                    \\\n+                             boost::bind(&usrp_block_impl::_handler, \\\n+                                         this,                       \\\n+                                         boost::placeholders::_1,    \\\n+                                         boost::placeholders::_2,    \\\n+                                         boost::placeholders::_3))\n     // Register default command handlers:\n     REGISTER_CMD_HANDLER(cmd_freq_key(), _cmd_handler_freq);\n     REGISTER_CMD_HANDLER(cmd_gain_key(), _cmd_handler_gain);\n@@ -257,11 +263,12 @@ bool usrp_block_impl::_check_mboard_sensors_locked()\n         } else if (_dev->get_clock_source(mboard_index) == \"mimo\") {\n             sensor_name = \"mimo_locked\";\n         }\n-        if (not _wait_for_locked_sensor(\n-                get_mboard_sensor_names(mboard_index),\n-                sensor_name,\n-                boost::bind(\n-                    &usrp_block_impl::get_mboard_sensor, this, _1, mboard_index))) {\n+        if (not _wait_for_locked_sensor(get_mboard_sensor_names(mboard_index),\n+                                        sensor_name,\n+                                        boost::bind(&usrp_block_impl::get_mboard_sensor,\n+                                                    this,\n+                                                    boost::placeholders::_1,\n+                                                    mboard_index))) {\n             GR_LOG_WARN(\n                 d_logger,\n                 boost::format(\ndiff --git a/gr-uhd/lib/usrp_source_impl.cc b/gr-uhd/lib/usrp_source_impl.cc\nindex a2ff0821b..5e6bd4328 100644\n--- a/gr-uhd/lib/usrp_source_impl.cc\n+++ b/gr-uhd/lib/usrp_source_impl.cc\n@@ -57,8 +57,9 @@ usrp_source_impl::usrp_source_impl(const ::uhd::device_addr_t& device_addr,\n \n     _samp_rate = this->get_samp_rate();\n     _samps_per_packet = 1;\n-    register_msg_cmd_handler(cmd_tag_key(),\n-                             boost::bind(&usrp_source_impl::_cmd_handler_tag, this, _1));\n+    register_msg_cmd_handler(\n+        cmd_tag_key(),\n+        boost::bind(&usrp_source_impl::_cmd_handler_tag, this, boost::placeholders::_1));\n }\n \n usrp_source_impl::~usrp_source_impl() {}\ndiff --git a/gr-zeromq/lib/pub_msg_sink_impl.cc b/gr-zeromq/lib/pub_msg_sink_impl.cc\nindex b5da7421e..957cfa411 100644\n--- a/gr-zeromq/lib/pub_msg_sink_impl.cc\n+++ b/gr-zeromq/lib/pub_msg_sink_impl.cc\n@@ -62,7 +62,9 @@ pub_msg_sink_impl::pub_msg_sink_impl(char* address, int timeout, bool bind)\n     }\n \n     message_port_register_in(pmt::mp(\"in\"));\n-    set_msg_handler(pmt::mp(\"in\"), boost::bind(&pub_msg_sink_impl::handler, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"in\"),\n+        boost::bind(&pub_msg_sink_impl::handler, this, boost::placeholders::_1));\n }\n \n pub_msg_sink_impl::~pub_msg_sink_impl()\ndiff --git a/gr-zeromq/lib/push_msg_sink_impl.cc b/gr-zeromq/lib/push_msg_sink_impl.cc\nindex 4140781ab..7d07d3a30 100644\n--- a/gr-zeromq/lib/push_msg_sink_impl.cc\n+++ b/gr-zeromq/lib/push_msg_sink_impl.cc\n@@ -62,7 +62,9 @@ push_msg_sink_impl::push_msg_sink_impl(char* address, int timeout, bool bind)\n     }\n \n     message_port_register_in(pmt::mp(\"in\"));\n-    set_msg_handler(pmt::mp(\"in\"), boost::bind(&push_msg_sink_impl::handler, this, _1));\n+    set_msg_handler(\n+        pmt::mp(\"in\"),\n+        boost::bind(&push_msg_sink_impl::handler, this, boost::placeholders::_1));\n }\n \n push_msg_sink_impl::~push_msg_sink_impl()\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/gnuradio/0003-gnuradio-runtime_pmt-dont-hardcode-INTERFACE_INCLUDE_DIRECTORIES.patch",
    "content": "From 84dea8284c521f08508bb2dcbc99db3b5d3438fd Mon Sep 17 00:00:00 2001\nFrom: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\nDate: Thu, 27 Aug 2020 17:32:09 +0200\nSubject: [PATCH] gnuradio-runtime_pmt: dont hardcode\n INTERFACE_INCLUDE_DIRECTORIES\n\ngnuradio-runtimeTargets.cmake and gnuradio-pmtTargets.cmake are filled\nusing CMAKE_INSTALL_PREFIX for INSTALL_INTERFACE.\n\nSince CMAKE_INSTALL_PREFIX, in buildroot, is set to /usr, these files contains\npath to host system.\n\nWith BR2_COMPILER_PARANOID_UNSAFE_PATH package using gnuradio fails with:\narm-linux-gnueabihf-g++: ERROR: unsafe header/library path used in cross-compilation: '-isystem' '/usr/include'\n\nBy simply providing 'include', produced .cmake contains:\nINTERFACE_INCLUDE_DIRECTORIES \"${_IMPORT_PREFIX}/include\"\ninstead of\nINTERFACE_INCLUDE_DIRECTORIES \"/usr/include\"\n\n[Upstream status: https://github.com/gnuradio/gnuradio/pull/3737]\n\nSigned-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\n---\n gnuradio-runtime/lib/CMakeLists.txt     | 2 +-\n gnuradio-runtime/lib/pmt/CMakeLists.txt | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/gnuradio-runtime/lib/CMakeLists.txt b/gnuradio-runtime/lib/CMakeLists.txt\nindex 5aa90a5e1..fc32f473b 100644\n--- a/gnuradio-runtime/lib/CMakeLists.txt\n+++ b/gnuradio-runtime/lib/CMakeLists.txt\n@@ -214,7 +214,7 @@ target_link_libraries(gnuradio-runtime PUBLIC\n \n target_include_directories(gnuradio-runtime\n   PUBLIC\n-    $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>\n+    $<INSTALL_INTERFACE:include>\n     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>\n     $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/../include>\n   PRIVATE\ndiff --git a/gnuradio-runtime/lib/pmt/CMakeLists.txt b/gnuradio-runtime/lib/pmt/CMakeLists.txt\nindex 9fb98d0fc..6dfcd945c 100644\n--- a/gnuradio-runtime/lib/pmt/CMakeLists.txt\n+++ b/gnuradio-runtime/lib/pmt/CMakeLists.txt\n@@ -33,7 +33,7 @@ target_link_libraries(gnuradio-pmt\n \n target_include_directories(gnuradio-pmt\n   PUBLIC\n-  $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>\n+  $<INSTALL_INTERFACE:include>\n   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../../include>\n   PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/\n   )\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/gnuradio/0004-gr-qtgui-dont-t-add-examples-c-subdirectory-when-gr-.patch",
    "content": "From 268b1a599304f58bd56c86ff09041b5912c24a0c Mon Sep 17 00:00:00 2001\nFrom: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\nDate: Sun, 1 Nov 2020 17:24:36 +0100\nSubject: [PATCH] gr-qtgui: dont't add examples/c++ subdirectory when gr-analog\n is disabled\n\ngr-qtgui examples needs to have gr-analog enabled, without this dependency\ncompile crash with:\n\nIn file included from\n/x/output/build/gnuradio-3.8.1.0/gr-qtgui/examples/c++/display_qt.cc:22:\n/x/output/build/gnuradio-3.8.1.0/gr-qtgui/examples/c++/display_qt.h:24:10:\nfatal error: gnuradio/analog/noise_source.h: No such file or directory\n24 | #include <gnuradio/analog/noise_source.h>\n| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\ncompilation terminated.\nmake[3]: *** [gr-qtgui/examples/c++/CMakeFiles/display_qt.dir/build.make:67:\ngr-qtgui/examples/c++/CMakeFiles/display_qt.dir/display_qt.cc.o] Error 1\nmake[3]: *** Waiting for unfinished jobs....\nIn file included from\n/somewhere/gnuradio/build/gr-qtgui/examples/c++/moc_display_qt.cpp:10:\n/somewhere/gnuradio/build/gr-qtgui/examples/c++/../../../../gr-qtgui/examples/c++/display_qt.h:24:10:\nfatal error: gnuradio/analog/noise_source.h: No such file or directory\n24 | #include <gnuradio/analog/noise_source.h>\n| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\ncompilation terminated.\n\nGR_ANALOG is not an explicit dependency of GR_QTGUI, so disable c++ examples if\nuser has not selected this option.\n\n[backported from 7470a7a3771dd90defb826b464dfe62977cb1eb6]\n\nSigned-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\n---\n gr-qtgui/CMakeLists.txt | 4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/gr-qtgui/CMakeLists.txt b/gr-qtgui/CMakeLists.txt\nindex 8831f3ad9..561186fbd 100644\n--- a/gr-qtgui/CMakeLists.txt\n+++ b/gr-qtgui/CMakeLists.txt\n@@ -68,7 +68,9 @@ if(ENABLE_GR_QTGUI)\n add_subdirectory(include/gnuradio/qtgui)\n add_subdirectory(lib)\n add_subdirectory(docs)\n-add_subdirectory(examples/c++)\n+if (ENABLE_GR_ANALOG)\n+\tadd_subdirectory(examples/c++)\n+endif(ENABLE_GR_ANALOG)\n if(ENABLE_PYTHON)\n     add_subdirectory(swig)\n     add_subdirectory(python/qtgui)\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/gnuradio/0005-boost-remove-deprecated-math-common_factor.hpp.patch",
    "content": "From 2c767bb260a25b415e8c9c4b3ea37280b2127cec Mon Sep 17 00:00:00 2001\nFrom: japm48 <japm48@users.noreply.github.com>\nDate: Fri, 10 Apr 2020 23:35:30 +0200\nSubject: [PATCH] boost: remove deprecated math/common_factor.hpp\n\nRemove deprecation warning and prefer using std::{lcm,gcd} to Boost.\nFixes #2712.\n\n[Retrieved from:\nhttps://github.com/gnuradio/gnuradio/commit/2c767bb260a25b415e8c9c4b3ea37280b2127cec]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n .../include/gnuradio/CMakeLists.txt           |  1 +\n .../include/gnuradio/integer_math.h           | 35 +++++++++++++++++++\n gnuradio-runtime/lib/buffer.cc                | 19 ++--------\n gr-digital/lib/symbol_sync_cc_impl.cc         |  4 +--\n gr-digital/lib/symbol_sync_ff_impl.cc         |  4 +--\n 5 files changed, 43 insertions(+), 20 deletions(-)\n create mode 100644 gnuradio-runtime/include/gnuradio/integer_math.h\n\ndiff --git a/gnuradio-runtime/include/gnuradio/CMakeLists.txt b/gnuradio-runtime/include/gnuradio/CMakeLists.txt\nindex 8d718e87b5b..056af5d6f48 100644\n--- a/gnuradio-runtime/include/gnuradio/CMakeLists.txt\n+++ b/gnuradio-runtime/include/gnuradio/CMakeLists.txt\n@@ -31,6 +31,7 @@ install(FILES\n   gr_complex.h\n   hier_block2.h\n   high_res_timer.h\n+  integer_math.h\n   io_signature.h\n   logger.h\n   math.h\ndiff --git a/gnuradio-runtime/include/gnuradio/integer_math.h b/gnuradio-runtime/include/gnuradio/integer_math.h\nnew file mode 100644\nindex 00000000000..15141049fa4\n--- /dev/null\n+++ b/gnuradio-runtime/include/gnuradio/integer_math.h\n@@ -0,0 +1,35 @@\n+/* -*- c++ -*- */\n+/*\n+ * Copyright 2020 Free Software Foundation, Inc.\n+ *\n+ * This file is part of GNU Radio\n+ *\n+ * SPDX-License-Identifier: GPL-3.0-or-later\n+ *\n+ */\n+#ifndef INCLUDED_GR_INTEGER_MATH_H\n+#define INCLUDED_GR_INTEGER_MATH_H\n+\n+#if (__cplusplus >= 201703L)\n+\n+// Prefer C++17 goodness.\n+#include <numeric>\n+#define GR_GCD std::gcd\n+#define GR_LCM std::lcm\n+\n+#elif (BOOST_VERSION >= 105800)\n+\n+// Fallback: newer boost API (introduced in Boost 1.58.0).\n+#include <boost/integer/common_factor_rt.hpp>\n+#define GR_GCD boost::integer::gcd\n+#define GR_LCM boost::integer::lcm\n+\n+#else\n+\n+// Last resort: old deprecated boost API.\n+#include <boost/math/common_factor_rt.hpp>\n+#define GR_GCD boost::math::gcd\n+#define GR_LCM boost::math::lcm\n+\n+#endif /* __cplusplus >= 201703L */\n+#endif /* INCLUDED_GR_INTEGER_MATH_H */\ndiff --git a/gnuradio-runtime/lib/buffer.cc b/gnuradio-runtime/lib/buffer.cc\nindex 720c72c4ee8..46d704542b1 100644\n--- a/gnuradio-runtime/lib/buffer.cc\n+++ b/gnuradio-runtime/lib/buffer.cc\n@@ -13,22 +13,13 @@\n #endif\n #include \"vmcircbuf.h\"\n #include <gnuradio/buffer.h>\n+#include <gnuradio/integer_math.h>\n #include <gnuradio/math.h>\n #include <assert.h>\n #include <algorithm>\n #include <iostream>\n #include <stdexcept>\n \n-// the following header is deprecated as of Boost 1.66.0, and the\n-// other API was introduced in Boost 1.58.0. Since we still support\n-// Boost back to 1.54.0, use the older API if pre-1.5.80 and otherwise\n-// use the newer API.\n-#if (BOOST_VERSION < 105800)\n-#include <boost/math/common_factor_rt.hpp>\n-#else\n-#include <boost/integer/common_factor_rt.hpp>\n-#endif\n-\n namespace gr {\n \n static long s_buffer_count = 0; // counts for debugging storage mgmt\n@@ -68,13 +59,9 @@ static long s_buffer_reader_count = 0;\n  *\n  *     type_size * nitems == k * page_size\n  */\n-static long minimum_buffer_items(long type_size, long page_size)\n+static inline long minimum_buffer_items(long type_size, long page_size)\n {\n-#if (BOOST_VERSION < 105800)\n-    return page_size / boost::math::gcd(type_size, page_size);\n-#else\n-    return page_size / boost::integer::gcd(type_size, page_size);\n-#endif\n+    return page_size / GR_GCD(type_size, page_size);\n }\n \n \ndiff --git a/gr-digital/lib/symbol_sync_cc_impl.cc b/gr-digital/lib/symbol_sync_cc_impl.cc\nindex 55f85e7c6a7..55f162dc727 100644\n--- a/gr-digital/lib/symbol_sync_cc_impl.cc\n+++ b/gr-digital/lib/symbol_sync_cc_impl.cc\n@@ -13,9 +13,9 @@\n #endif\n \n #include \"symbol_sync_cc_impl.h\"\n+#include <gnuradio/integer_math.h>\n #include <gnuradio/io_signature.h>\n #include <gnuradio/math.h>\n-#include <boost/math/common_factor.hpp>\n #include <stdexcept>\n \n namespace gr {\n@@ -95,7 +95,7 @@ symbol_sync_cc_impl::symbol_sync_cc_impl(enum ted_type detector_type,\n         throw std::runtime_error(\"unable to create interpolating_resampler_ccf\");\n \n     // Block Internal Clocks\n-    d_interps_per_symbol_n = boost::math::lcm(d_ted->inputs_per_symbol(), d_osps_n);\n+    d_interps_per_symbol_n = GR_LCM(d_ted->inputs_per_symbol(), d_osps_n);\n     d_interps_per_ted_input_n = d_interps_per_symbol_n / d_ted->inputs_per_symbol();\n     d_interps_per_output_sample_n = d_interps_per_symbol_n / d_osps_n;\n \ndiff --git a/gr-digital/lib/symbol_sync_ff_impl.cc b/gr-digital/lib/symbol_sync_ff_impl.cc\nindex d0ec32ab192..1172c1b4f8a 100644\n--- a/gr-digital/lib/symbol_sync_ff_impl.cc\n+++ b/gr-digital/lib/symbol_sync_ff_impl.cc\n@@ -13,9 +13,9 @@\n #endif\n \n #include \"symbol_sync_ff_impl.h\"\n+#include <gnuradio/integer_math.h>\n #include <gnuradio/io_signature.h>\n #include <gnuradio/math.h>\n-#include <boost/math/common_factor.hpp>\n #include <stdexcept>\n \n namespace gr {\n@@ -97,7 +97,7 @@ symbol_sync_ff_impl::symbol_sync_ff_impl(enum ted_type detector_type,\n         throw std::runtime_error(\"unable to create interpolating_resampler_fff\");\n \n     // Block Internal Clocks\n-    d_interps_per_symbol_n = boost::math::lcm(d_ted->inputs_per_symbol(), d_osps_n);\n+    d_interps_per_symbol_n = GR_LCM(d_ted->inputs_per_symbol(), d_osps_n);\n     d_interps_per_ted_input_n = d_interps_per_symbol_n / d_ted->inputs_per_symbol();\n     d_interps_per_output_sample_n = d_interps_per_symbol_n / d_osps_n;\n \n"
  },
  {
    "path": "package/gnuradio/Config.in",
    "content": "comment \"gnuradio needs a toolchain w/ C++, NPTL, wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS\n\ncomment \"gnuradio needs a toolchain not affected by GCC bug 43744 and 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_43744\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nconfig BR2_PACKAGE_GNURADIO\n\tbool \"gnuradio\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_USE_MMU # use fork()\n\tdepends on BR2_USE_WCHAR # boost\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic, boost-filesystem\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_43744\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_ATOMIC\n\tselect BR2_PACKAGE_BOOST_DATE_TIME\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\tselect BR2_PACKAGE_BOOST_PROGRAM_OPTIONS\n\tselect BR2_PACKAGE_BOOST_REGEX\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_THREAD\n\tselect BR2_PACKAGE_LOG4CPP\n\tselect BR2_PACKAGE_GMP\n\thelp\n\t  GNU Radio is a free & open-source software development\n\t  toolkit that provides signal processing blocks to implement\n\t  software radios. It can be used with readily-available\n\t  low-cost external RF hardware to create software-defined\n\t  radios, or without hardware in a simulation-like\n\t  environment. It is widely used in hobbyist, academic and\n\t  commercial environments to support both wireless\n\t  communications research and real-world radio systems.\n\n\t  http://gnuradio.org/\n\nif BR2_PACKAGE_GNURADIO\n\nconfig BR2_PACKAGE_GNURADIO_AUDIO\n\tbool \"gr-audio\"\n\tselect BR2_PACKAGE_ALSA_LIB if !BR2_PACKAGE_PORTAUDIO\n\thelp\n\t  Add audio source/sink to GNU Radio\n\nconfig BR2_PACKAGE_GNURADIO_BLOCKS\n\tbool \"blocks support\"\n\thelp\n\t  GNU Radio basic block library\n\nconfig BR2_PACKAGE_GNURADIO_CTRLPORT\n\tbool \"ctrlport support\"\n\thelp\n\t  GNU Radio ctrlport block\n\nconfig BR2_PACKAGE_GNURADIO_DTV\n\tbool \"gr-dtv support\"\n\tselect BR2_PACKAGE_GNURADIO_ANALOG\n\tselect BR2_PACKAGE_GNURADIO_FEC\n\tselect BR2_PACKAGE_GNURADIO_FILTER\n\thelp\n\t  various digital television standards blocks\n\nconfig BR2_PACKAGE_GNURADIO_FEC\n\tbool \"gr-fec support\"\n\tselect BR2_PACKAGE_GNURADIO_BLOCKS\n\tselect BR2_PACKAGE_GSL\n\thelp\n\t  FEC signal processing blocks\n\nconfig BR2_PACKAGE_GNURADIO_PYTHON\n\tbool \"python support\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy\n\tselect BR2_PACKAGE_BOOST_PYTHON\n\tselect BR2_PACKAGE_PYTHON_NUMPY # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Enable python component\n\ncomment \"python support needs glibc or musl\"\n\tdepends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)\n\nconfig BR2_PACKAGE_GNURADIO_UTILS\n\tbool \"gr-utils support\"\n\tdepends on BR2_PACKAGE_GNURADIO_PYTHON\n\thelp\n\t  Misc python utilities\n\nconfig BR2_PACKAGE_GNURADIO_ZEROMQ\n\tbool \"gr-zeromq support\"\n\tselect BR2_PACKAGE_CPPZMQ\n\tselect BR2_PACKAGE_PYTHON_PYZMQ if BR2_PACKAGE_GNURADIO_PYTHON\n\thelp\n\t  zeromq communication support\n\nconfig BR2_PACKAGE_GNURADIO_ANALOG\n\tbool \"gr-analog support\"\n\tselect BR2_PACKAGE_GNURADIO_FILTER\n\thelp\n\t  Analog communications blocks\n\nconfig BR2_PACKAGE_GNURADIO_CHANNELS\n\tbool \"gr-channels support\"\n\tselect BR2_PACKAGE_GNURADIO_ANALOG\n\thelp\n\t  Channel model blocks\n\nconfig BR2_PACKAGE_GNURADIO_DIGITAL\n\tbool \"gr-digital support\"\n\tselect BR2_PACKAGE_GNURADIO_ANALOG\n\thelp\n\t  Digital communications blocks\n\nconfig BR2_PACKAGE_GNURADIO_FFT\n\tbool \"gr-fft support\"\n\tselect BR2_PACKAGE_FFTW\n\tselect BR2_PACKAGE_FFTW_SINGLE\n\tselect BR2_PACKAGE_GNURADIO_BLOCKS\n\thelp\n\t  FFT signal processing blocks\n\nconfig BR2_PACKAGE_GNURADIO_FILTER\n\tbool \"gr-filter support\"\n\tselect BR2_PACKAGE_GNURADIO_FFT\n\thelp\n\t  Filter signal processing blocks\n\nconfig BR2_PACKAGE_GNURADIO_QTGUI\n\tbool \"gr-qtgui\"\n\tdepends on BR2_PACKAGE_GNURADIO_PYTHON\n\tdepends on BR2_PACKAGE_QT5\n\tselect BR2_PACKAGE_GNURADIO_FFT\n\tselect BR2_PACKAGE_GNURADIO_FILTER\n\tselect BR2_PACKAGE_PYTHON_PYQT5\n\tselect BR2_PACKAGE_QT5BASE_FONTCONFIG # runtime\n\tselect BR2_PACKAGE_QT5BASE_GUI # runtime\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS # runtime\n\tselect BR2_PACKAGE_QWT\n\thelp\n\t  GNU Radio Qt scopes\n\nconfig BR2_PACKAGE_GNURADIO_TRELLIS\n\tbool \"gr-trellis support\"\n\tselect BR2_PACKAGE_GNURADIO_DIGITAL\n\thelp\n\t  Trellis coded modulation blocks\n\nconfig BR2_PACKAGE_GNURADIO_UHD\n\tbool \"gr-uhd support\"\n\tselect BR2_PACKAGE_UHD\n\tselect BR2_PACKAGE_GNURADIO_ANALOG\n\tselect BR2_PACKAGE_GNURADIO_BLOCKS\n\tselect BR2_PACKAGE_GNURADIO_FILTER\n\thelp\n\t  UHD support\n\nendif\n"
  },
  {
    "path": "package/gnuradio/gnuradio.hash",
    "content": "# Locally computed\nsha256 3e293541a9ac8d78660762bae8b80c0f6195b3494e1c50c01a9fd79cc60bb624  gnuradio-3.8.2.0.tar.gz\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/gnuradio/gnuradio.mk",
    "content": "################################################################################\n#\n# gnuradio\n#\n################################################################################\n\nGNURADIO_VERSION = 3.8.2.0\nGNURADIO_SITE = https://github.com/gnuradio/gnuradio/releases/download/v$(GNURADIO_VERSION)\nGNURADIO_LICENSE = GPL-3.0+\nGNURADIO_LICENSE_FILES = COPYING\n\nGNURADIO_SUPPORTS_IN_SOURCE_BUILD = NO\n\n# needed to determine site-packages path\nifeq ($(BR2_PACKAGE_PYTHON),y)\nGNURADIO_PYVER = $(PYTHON_VERSION_MAJOR)\nelse ifeq ($(BR2_PACKAGE_PYTHON3),y)\nGNURADIO_PYVER = $(PYTHON3_VERSION_MAJOR)\nendif\n\n# host-python-mako and host-python-six are needed for volk to compile\nGNURADIO_DEPENDENCIES = \\\n\thost-python3 \\\n\thost-python-mako \\\n\thost-python-six \\\n\thost-swig \\\n\tboost \\\n\tlog4cpp \\\n\tgmp\n\nGNURADIO_CONF_OPTS = \\\n\t-DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python \\\n\t-DENABLE_DEFAULT=OFF \\\n\t-DENABLE_VOLK=ON \\\n\t-DENABLE_GNURADIO_RUNTIME=ON \\\n\t-DENABLE_TESTING=OFF \\\n\t-DXMLTO_EXECUTABLE=NOTFOUND\n\n# For third-party blocks, the gnuradio libraries are mandatory at\n# compile time.\nGNURADIO_INSTALL_STAGING = YES\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nGNURADIO_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\nifeq ($(BR2_PACKAGE_ORC),y)\nGNURADIO_DEPENDENCIES += orc\nGNURADIO_CONF_OPTS += -DENABLE_ORC=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_ORC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_ANALOG),y)\nGNURADIO_CONF_OPTS += -DENABLE_GR_ANALOG=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_ANALOG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_AUDIO),y)\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nGNURADIO_DEPENDENCIES += alsa-lib\nendif\nifeq ($(BR2_PACKAGE_PORTAUDIO),y)\nGNURADIO_DEPENDENCIES += portaudio\nendif\nGNURADIO_CONF_OPTS += -DENABLE_GR_AUDIO=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_AUDIO=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_BLOCKS),y)\nGNURADIO_CONF_OPTS += -DENABLE_GR_BLOCKS=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_BLOCKS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_CHANNELS),y)\nGNURADIO_CONF_OPTS += -DENABLE_GR_CHANNELS=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_CHANNELS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_CTRLPORT),y)\nGNURADIO_CONF_OPTS += -DENABLE_GR_CTRLPORT=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_CTRLPORT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_DIGITAL),y)\nGNURADIO_CONF_OPTS += -DENABLE_GR_DIGITAL=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_DIGITAL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_DTV),y)\nGNURADIO_CONF_OPTS += -DENABLE_GR_DTV=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_DTV=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_FEC),y)\nGNURADIO_DEPENDENCIES += gsl\nGNURADIO_CONF_OPTS += -DENABLE_GR_FEC=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_FEC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_FFT),y)\nGNURADIO_DEPENDENCIES += fftw-single\nGNURADIO_CONF_OPTS += -DENABLE_GR_FFT=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_FFT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_FILTER),y)\nGNURADIO_CONF_OPTS += -DENABLE_GR_FILTER=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_FILTER=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y)\nGNURADIO_DEPENDENCIES += python3\nGNURADIO_CONF_OPTS += -DENABLE_PYTHON=ON\n# mandatory to install python modules in site-packages and to use\n# correct path for python libraries\nGNURADIO_CONF_OPTS += -DGR_PYTHON_RELATIVE=ON \\\n\t-DGR_PYTHON_DIR=lib/python$(GNURADIO_PYVER)/site-packages\nelse\nGNURADIO_CONF_OPTS += -DENABLE_PYTHON=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_QTGUI),y)\nGNURADIO_DEPENDENCIES += qt5base python-pyqt5 qwt\nGNURADIO_CONF_OPTS += -DENABLE_GR_QTGUI=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_QTGUI=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_TRELLIS),y)\nGNURADIO_CONF_OPTS += -DENABLE_GR_TRELLIS=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_TRELLIS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_UHD),y)\nGNURADIO_DEPENDENCIES += uhd\nGNURADIO_CONF_OPTS += -DENABLE_GR_UHD=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_UHD=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_UTILS),y)\nGNURADIO_CONF_OPTS += -DENABLE_GR_UTILS=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_UTILS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNURADIO_ZEROMQ),y)\nGNURADIO_DEPENDENCIES += cppzmq\nifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y)\nGNURADIO_DEPENDENCIES += python-pyzmq\nendif\nGNURADIO_CONF_OPTS += -DENABLE_GR_ZEROMQ=ON\nelse\nGNURADIO_CONF_OPTS += -DENABLE_GR_ZEROMQ=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/gnutls/Config.in",
    "content": "config BR2_PACKAGE_GNUTLS\n\tbool \"gnutls\"\n\t# https://gitlab.com/gnutls/gnutls/issues/203\n\tdepends on !BR2_STATIC_LIBS\n\t# gnulib requires a library that implements wctomb().\n\t# This is noticed only when linking with libgnutls.so.\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_LIBTASN1\n\tselect BR2_PACKAGE_NETTLE\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  GnuTLS is a secure communications library implementing the SSL\n\t  and TLS protocols and technologies around them.\n\n\t  https://www.gnutls.org/\n\nif BR2_PACKAGE_GNUTLS\n\nconfig BR2_PACKAGE_GNUTLS_OPENSSL\n\tbool \"OpenSSL compatibility library\"\n\thelp\n\t  Install OpenSSL compatibility library.\n\nconfig BR2_PACKAGE_GNUTLS_TOOLS\n\tbool \"install tools\"\n\thelp\n\t  Install GnuTLS command line tools for various cryptographic\n\t  tasks.\n\nendif\n\ncomment \"gnutls needs a toolchain w/ wchar, dynamic library\"\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/gnutls/gnutls.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.2.tar.xz.sig\nsha256  646e6c5a9a185faa4cea796d378a1ba8e1148dbb197ca6605f95986a25af2752  gnutls-3.7.2.tar.xz\n# Locally calculated\nsha256  e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b  doc/COPYING\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  doc/COPYING.LESSER\n"
  },
  {
    "path": "package/gnutls/gnutls.mk",
    "content": "################################################################################\n#\n# gnutls\n#\n################################################################################\n\nGNUTLS_VERSION_MAJOR = 3.7\nGNUTLS_VERSION = $(GNUTLS_VERSION_MAJOR).2\nGNUTLS_SOURCE = gnutls-$(GNUTLS_VERSION).tar.xz\nGNUTLS_SITE = https://www.gnupg.org/ftp/gcrypt/gnutls/v$(GNUTLS_VERSION_MAJOR)\nGNUTLS_LICENSE = LGPL-2.1+ (core library)\nGNUTLS_LICENSE_FILES = doc/COPYING.LESSER\n\nifeq ($(BR2_PACKAGE_GNUTLS_OPENSSL),y)\nGNUTLS_LICENSE += , GPL-3.0+ (gnutls-openssl library)\nGNUTLS_LICENSE_FILES += doc/COPYING\nendif\n\nGNUTLS_DEPENDENCIES = host-pkgconf libtasn1 nettle pcre\nGNUTLS_CPE_ID_VENDOR = gnu\nGNUTLS_CONF_OPTS = \\\n\t--disable-doc \\\n\t--disable-guile \\\n\t--disable-libdane \\\n\t--disable-rpath \\\n\t--disable-tests \\\n\t--enable-local-libopts \\\n\t--enable-openssl-compatibility \\\n\t--with-librt-prefix=$(STAGING_DIR) \\\n\t--without-tpm \\\n\t$(if $(BR2_PACKAGE_GNUTLS_OPENSSL),--enable,--disable)-openssl-compatibility \\\n\t$(if $(BR2_PACKAGE_GNUTLS_TOOLS),--enable-tools,--disable-tools)\nGNUTLS_CONF_ENV = gl_cv_socket_ipv6=yes \\\n\tac_cv_header_wchar_h=$(if $(BR2_USE_WCHAR),yes,no) \\\n\tgt_cv_c_wchar_t=$(if $(BR2_USE_WCHAR),yes,no) \\\n\tgt_cv_c_wint_t=$(if $(BR2_USE_WCHAR),yes,no) \\\n\tgl_cv_func_gettimeofday_clobber=no\nGNUTLS_INSTALL_STAGING = YES\n\n# libpthread autodetection poison the linkpath\nGNUTLS_CONF_OPTS += $(if $(BR2_TOOLCHAIN_HAS_THREADS),--with-libpthread-prefix=$(STAGING_DIR)/usr)\n\n# gnutls needs libregex, but pcre can be used too\n# The check isn't cross-compile friendly\nGNUTLS_CONF_ENV += libopts_cv_with_libregex=yes\nGNUTLS_CONF_OPTS += \\\n\t--with-regex-header=pcreposix.h \\\n\t--with-libregex-cflags=\"`$(PKG_CONFIG_HOST_BINARY) libpcreposix --cflags`\" \\\n\t--with-libregex-libs=\"`$(PKG_CONFIG_HOST_BINARY) libpcreposix --libs`\"\n\nifeq ($(BR2_PACKAGE_CRYPTODEV_LINUX),y)\nGNUTLS_CONF_OPTS += --enable-cryptodev\nGNUTLS_DEPENDENCIES += cryptodev-linux\nendif\n\nifeq ($(BR2_PACKAGE_LIBIDN2),y)\nGNUTLS_CONF_OPTS += --with-idn\nGNUTLS_DEPENDENCIES += libidn2\nelse\nGNUTLS_CONF_OPTS += --without-idn\nendif\n\nifeq ($(BR2_PACKAGE_P11_KIT),y)\nGNUTLS_CONF_OPTS += --with-p11-kit\nGNUTLS_DEPENDENCIES += p11-kit\nelse\nGNUTLS_CONF_OPTS += --without-p11-kit\nendif\n\nifeq ($(BR2_PACKAGE_LIBUNISTRING),y)\nGNUTLS_CONF_OPTS += --with-libunistring-prefix=$(STAGING_DIR)/usr\nGNUTLS_DEPENDENCIES += libunistring\nelse\nGNUTLS_CONF_OPTS += --with-included-unistring\nendif\n\n# Provide a default CA cert location\nifeq ($(BR2_PACKAGE_P11_KIT),y)\nGNUTLS_CONF_OPTS += --with-default-trust-store-pkcs11=pkcs11:model=p11-kit-trust\nelse ifeq ($(BR2_PACKAGE_CA_CERTIFICATES),y)\nGNUTLS_CONF_OPTS += --with-default-trust-store-file=/etc/ssl/certs/ca-certificates.crt\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nGNUTLS_LIBS += -latomic\nendif\n\nGNUTLS_CONF_ENV += LIBS=\"$(GNUTLS_LIBS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/go/0001-build.go-explicit-option-for-crosscompilation.patch",
    "content": "From 6aed475557032a7ff9009e9b4b691b40b561876a Mon Sep 17 00:00:00 2001\nFrom: Angelo Compagnucci <angelo@amarulasolutions.com>\nDate: Tue, 8 May 2018 16:08:44 +0200\nSubject: [PATCH] build.go: explicit option for crosscompilation\n\nActually if GOHOSTOS == GOOS || GOHOSTARCH == GOARCH the go build system\nassume it's not cross compiling and uses the same toolchain also for the\nbootstrap.  This is a problem in case the cross compilation mandates a\ndifferent toolchain for bootstrap and target.  This patch adds\nGO_ASSUME_CROSSCOMPILING varible to assure that in case of cross\ncompilation CC_FOR_TARGET can be different from CC.\n\nSigned-off-by: Angelo Compagnucci <angelo@amarulasolutions.com>\nSigned-off-by: Anisse Astier <anisse@astier.eu>\n---\n src/cmd/dist/build.go | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go\nindex 7c44c4a605..03500920c4 100644\n--- a/src/cmd/dist/build.go\n+++ b/src/cmd/dist/build.go\n@@ -286,12 +286,13 @@ func xinit() {\n // $CC_FOR_goos_goarch, if set, applies only to goos/goarch.\n func compilerEnv(envName, def string) map[string]string {\n \tm := map[string]string{\"\": def}\n+\tcrosscompiling := os.Getenv(\"GO_ASSUME_CROSSCOMPILING\")\n \n \tif env := os.Getenv(envName); env != \"\" {\n \t\tm[\"\"] = env\n \t}\n \tif env := os.Getenv(envName + \"_FOR_TARGET\"); env != \"\" {\n-\t\tif gohostos != goos || gohostarch != goarch {\n+\t\tif gohostos != goos || gohostarch != goarch || crosscompiling == \"1\" {\n \t\t\tm[gohostos+\"/\"+gohostarch] = m[\"\"]\n \t\t}\n \t\tm[\"\"] = env\n-- \n2.35.1\n\n"
  },
  {
    "path": "package/go/0002-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch",
    "content": "From 6b05378097c6a386ed9912d2471976dc39504e86 Mon Sep 17 00:00:00 2001\nFrom: Christian Stewart <christian@aperture.us>\nDate: Thu, 27 Jul 2023 21:28:47 -0700\nSubject: [PATCH] cmd/dist: set buildvcs=false when building go-bootstrap\n\nWhen building go-bootstrap as part of the make.bash process, the cmd/dist\ninvokes the bootstrap Go compiler to build the go_bootstrap tool:\n\n${GOROOT_BOOTSTRAP}/bin/go install -tags=math_big_pure_go compiler_bootstrap purego bootstrap/cmd/...\n\nIf there is an invalid .git directory in a parent of ${GOROOT_BOOTSTRAP},\nmake.bash will fail. Reproduction of the issue:\n\n  mkdir go-issue-61620\n  cd ./go-issue-61620\n  wget https://go.dev/dl/go1.19.11.src.tar.gz\n  mkdir go-bootstrap\n  tar -xf go1.19.11.src.tar.gz -C ./go-bootstrap --strip-components=1\n  cd ./go-bootstrap/src/\n  bash make.bash\n  cd ../../\n  wget https://go.dev/dl/go1.20.6.src.tar.gz\n  mkdir go\n  tar -xf go1.20.6.src.tar.gz -C ./go/ --strip-components=1\n  printf \"gitdir: ../../does/not/exist/.git\" > ./.git\n  cd ./go/src/\n  GOROOT_BOOTSTRAP=$(pwd)/../../go-bootstrap/ bash make.bash\n\nThe build fails with the following error:\n\n  Building Go toolchain1 using [snip]/go-1.19.10.\n  error obtaining VCS status: exit status 128\n    Use -buildvcs=false to disable VCS stamping.\n  go tool dist: FAILED: [snip]/go-1.19.10/bin/go install -tags=math_big_pure_go \\\n    compiler_bootstrap purego bootstrap/cmd/...: exit status 1\n\nThis change unconditionally sets -buildvcs=false when compiling go-bootstrap. We\ndon't need the revision information in those binaries anyway. Setting this flag\nwas previously not done as we were unsure if the go-bootstrap compiler would be\nnew enough to support the buildvcs build flag. Since Go 1.20.x, Go 1.19.x is the\nminimum version for go-bootstrap, and supports -buildvcs=false. We can now set\n-buildvcs=false without worrying about compatibility.\n\nRelated: https://github.com/golang/go/issues/54852\nFixes: https://github.com/golang/go/issues/61620\n\n---\n\nUpstream: https://github.com/golang/go/pull/61621\n\nSigned-off-by: Christian Stewart <christian@aperture.us>\n\n---\n src/cmd/dist/buildtool.go | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go\nindex a528d7aa76..3b411d6ebb 100644\n--- a/src/cmd/dist/buildtool.go\n+++ b/src/cmd/dist/buildtool.go\n@@ -221,6 +221,9 @@ func bootstrapBuildTools() {\n \tcmd := []string{\n \t\tpathf(\"%s/bin/go\", goroot_bootstrap),\n \t\t\"install\",\n+\t\t// Fixes cases where an invalid .git is present in a parent of GOROOT_BOOTSTRAP.\n+\t\t// See: https://github.com/golang/go/issues/61620\n+\t\t\"-buildvcs=false\",\n \t\t\"-tags=math_big_pure_go compiler_bootstrap purego\",\n \t}\n \tif vflag > 0 {\n-- \n2.41.0\n\n"
  },
  {
    "path": "package/go/Config.in.host",
    "content": "# Target go packages should depend on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\nconfig BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE2_ARCH_SUPPORTS\n\t# See https://go.dev/doc/install/source#environment\n\t# See src/go/build/syslist.go for the list of supported architectures\n\tdepends on (BR2_arm && BR2_TOOLCHAIN_SUPPORTS_PIE) || BR2_aarch64 \\\n\t\t|| BR2_i386 || BR2_x86_64 || BR2_powerpc64le \\\n\t\t|| BR2_mips64 || BR2_mips64el || BR2_riscv || BR2_s390x\n\tdepends on !BR2_ARM_CPU_ARMV4\n\t# MIPS R6 support in Go has not yet been developed.\n\tdepends on !BR2_MIPS_CPU_MIPS64R6\n\t# Go doesn't support Risc-v 32-bit.\n\tdepends on !BR2_RISCV_32\n\t# Go requires the following Risc-v General (G) features:\n\tdepends on !BR2_riscv || (BR2_RISCV_ISA_RVI && \\\n\t\tBR2_RISCV_ISA_RVM && BR2_RISCV_ISA_RVA && \\\n\t\tBR2_RISCV_ISA_RVF && BR2_RISCV_ISA_RVD)\n\nconfig BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\t# Go doesn't support CGO linking on MIPS64x platforms\n\t# See: https://github.com/karalabe/xgo/issues/46\n\tdepends on !BR2_mips64 && !BR2_mips64el\n\n# Host go packages should depend on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS\nconfig BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE2_ARCH_SUPPORTS\n"
  },
  {
    "path": "package/go/go.hash",
    "content": "# From https://go.dev/dl\nsha256  dc806cf75a87e1414b5b4c3dcb9dd3e9cc98f4cfccec42b7af617d5a658a3c43  go1.21.8.src.tar.gz\nsha256  2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067  LICENSE\n"
  },
  {
    "path": "package/go/go.mk",
    "content": "################################################################################\n#\n# go\n#\n################################################################################\n\nGO_VERSION = 1.21.8\nGO_SITE = https://storage.googleapis.com/golang\nGO_SOURCE = go$(GO_VERSION).src.tar.gz\n\nGO_LICENSE = BSD-3-Clause\nGO_LICENSE_FILES = LICENSE\nGO_CPE_ID_VENDOR = golang\n\nHOST_GO_DEPENDENCIES = host-go-bootstrap-stage2\nHOST_GO_GOPATH = $(HOST_DIR)/share/go-path\nHOST_GO_HOST_CACHE = $(HOST_DIR)/share/host-go-cache\nHOST_GO_ROOT = $(HOST_DIR)/lib/go\nHOST_GO_TARGET_CACHE = $(HOST_DIR)/share/go-cache\n\n# We pass an empty GOBIN, otherwise \"go install: cannot install\n# cross-compiled binaries when GOBIN is set\"\nHOST_GO_COMMON_ENV = \\\n\tGO111MODULE=on \\\n\tGOFLAGS=-mod=vendor \\\n\tGOROOT=\"$(HOST_GO_ROOT)\" \\\n\tGOPATH=\"$(HOST_GO_GOPATH)\" \\\n\tGOCACHE=\"$(HOST_GO_TARGET_CACHE)\" \\\n\tGOMODCACHE=\"$(HOST_GO_GOPATH)/pkg/mod\" \\\n\tGOPROXY=off \\\n\tGOTOOLCHAIN=local \\\n\tPATH=$(BR_PATH) \\\n\tGOBIN= \\\n\tCGO_ENABLED=$(HOST_GO_CGO_ENABLED)\n\nifeq ($(BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS),y)\n\nifeq ($(BR2_arm),y)\nGO_GOARCH = arm\nifeq ($(BR2_ARM_CPU_ARMV5),y)\nGO_GOARM = 5\nelse ifeq ($(BR2_ARM_CPU_ARMV6),y)\nGO_GOARM = 6\nelse ifeq ($(BR2_ARM_CPU_ARMV7A),y)\nGO_GOARM = 7\nelse ifeq ($(BR2_ARM_CPU_ARMV8A),y)\n# Go doesn't support 32-bit GOARM=8 (https://github.com/golang/go/issues/29373)\n# but can still benefit from armv7 optimisations\nGO_GOARM = 7\nendif\nelse ifeq ($(BR2_aarch64),y)\nGO_GOARCH = arm64\nelse ifeq ($(BR2_i386),y)\nGO_GOARCH = 386\n# i386: use softfloat if no SSE2: https://golang.org/doc/go1.16#386\nifneq ($(BR2_X86_CPU_HAS_SSE2),y)\nGO_GO386 = softfloat\nendif\nelse ifeq ($(BR2_x86_64),y)\nGO_GOARCH = amd64\nelse ifeq ($(BR2_powerpc64),y)\nGO_GOARCH = ppc64\nelse ifeq ($(BR2_powerpc64le),y)\nGO_GOARCH = ppc64le\nelse ifeq ($(BR2_mips64),y)\nGO_GOARCH = mips64\nelse ifeq ($(BR2_mips64el),y)\nGO_GOARCH = mips64le\nelse ifeq ($(BR2_riscv),y)\nGO_GOARCH = riscv64\nelse ifeq ($(BR2_s390x),y)\nGO_GOARCH = s390x\nendif\n\n# For the convienience of target packages.\nHOST_GO_TOOLDIR = $(HOST_GO_ROOT)/pkg/tool/linux_$(GO_GOARCH)\nHOST_GO_TARGET_ENV = \\\n\t$(HOST_GO_COMMON_ENV) \\\n\tGOOS=\"linux\" \\\n\tGOARCH=$(GO_GOARCH) \\\n\tCC=\"$(TARGET_CC)\" \\\n\tCXX=\"$(TARGET_CXX)\" \\\n\tCGO_CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\tCGO_CXXFLAGS=\"$(TARGET_CXXFLAGS)\" \\\n\tCGO_LDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\tGOTOOLDIR=\"$(HOST_GO_TOOLDIR)\"\n\n# The go compiler's cgo support uses threads.  If BR2_TOOLCHAIN_HAS_THREADS is\n# set, build in cgo support for any go programs that may need it.  Note that\n# any target package needing cgo support must include\n# 'depends on BR2_TOOLCHAIN_HAS_THREADS' in its config file.\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nHOST_GO_DEPENDENCIES += toolchain\nHOST_GO_CGO_ENABLED = 1\nelse\nHOST_GO_CGO_ENABLED = 0\nendif\n\nHOST_GO_CROSS_ENV = \\\n\tCC_FOR_TARGET=\"$(TARGET_CC)\" \\\n\tCXX_FOR_TARGET=\"$(TARGET_CXX)\" \\\n\tGOOS=\"linux\" \\\n\tGOARCH=$(GO_GOARCH) \\\n\t$(if $(GO_GO386),GO386=$(GO_GO386)) \\\n\t$(if $(GO_GOARM),GOARM=$(GO_GOARM)) \\\n\tGO_ASSUME_CROSSCOMPILING=1\n\nelse # !BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n# host-go can still be used to build packages for the host. No need to set all\n# the arch stuff since we will not be cross-compiling.\nHOST_GO_CGO_ENABLED = 1\nendif # BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\n# For the convenience of host golang packages\nHOST_GO_HOST_ENV = \\\n\t$(HOST_GO_COMMON_ENV) \\\n\tGOOS=\"\" \\\n\tGOARCH=\"\" \\\n\tGOCACHE=\"$(HOST_GO_HOST_CACHE)\" \\\n\tCC=\"$(HOSTCC_NOCCACHE)\" \\\n\tCXX=\"$(HOSTCXX_NOCCACHE)\" \\\n\tCGO_CFLAGS=\"$(HOST_CFLAGS)\" \\\n\tCGO_CXXFLAGS=\"$(HOST_CXXFLAGS)\" \\\n\tCGO_LDFLAGS=\"$(HOST_LDFLAGS)\"\n\n# The go build system is not compatible with ccache, so use\n# HOSTCC_NOCCACHE.  See https://github.com/golang/go/issues/11685.\nHOST_GO_MAKE_ENV = \\\n\tGO111MODULE=off \\\n\tGOCACHE=$(HOST_GO_HOST_CACHE) \\\n\tGOROOT_BOOTSTRAP=$(HOST_GO_BOOTSTRAP_STAGE2_ROOT) \\\n\tGOROOT_FINAL=$(HOST_GO_ROOT) \\\n\tGOROOT=\"$(@D)\" \\\n\tGOBIN=\"$(@D)/bin\" \\\n\tGOOS=linux \\\n\tCC=$(HOSTCC_NOCCACHE) \\\n\tCXX=$(HOSTCXX_NOCCACHE) \\\n\tCGO_ENABLED=$(HOST_GO_CGO_ENABLED) \\\n\t$(HOST_GO_CROSS_ENV)\n\ndefine HOST_GO_BUILD_CMDS\n\tcd $(@D)/src && \\\n\t\t$(HOST_GO_MAKE_ENV) ./make.bash $(if $(VERBOSE),-v)\nendef\n\ndefine HOST_GO_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/bin/go $(HOST_GO_ROOT)/bin/go\n\t$(INSTALL) -D -m 0755 $(@D)/bin/gofmt $(HOST_GO_ROOT)/bin/gofmt\n\n\tmkdir -p $(HOST_DIR)/bin\n\tln -sf ../lib/go/bin/go $(HOST_DIR)/bin/\n\tln -sf ../lib/go/bin/gofmt $(HOST_DIR)/bin/\n\n\tcp -a $(@D)/lib $(HOST_GO_ROOT)/\n\n\tmkdir -p $(HOST_GO_ROOT)/pkg\n\tcp -a $(@D)/pkg/include $(HOST_GO_ROOT)/pkg/\n\tcp -a $(@D)/pkg/tool $(HOST_GO_ROOT)/pkg/\n\n\t# The Go sources must be installed to the host/ tree for the Go stdlib.\n\tcp -a $(@D)/src $(HOST_GO_ROOT)/\n\n\t# Set file timestamps to prevent the Go compiler from rebuilding the stdlib\n\t# when compiling other programs.\n\tfind $(HOST_GO_ROOT) -type f -exec touch -r $(@D)/bin/go {} \\;\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/go-bootstrap-stage1/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE1_ARCH_SUPPORTS\n\tbool\n\t# See src/cmd/dist/unix.c for the list of supported architectures\n\tdefault y if BR2_HOSTARCH = \"x86\"\n\tdefault y if BR2_HOSTARCH = \"x86_64\"\n\tdefault y if BR2_HOSTARCH = \"arm\"\n"
  },
  {
    "path": "package/go-bootstrap-stage1/go-bootstrap-stage1.hash",
    "content": "# Locally computed:\nsha256  f4ff5b5eb3a3cae1c993723f3eab519c5bae18866b5e5f96fe1102f0cb5c3e52  go1.4-bootstrap-20171003.tar.gz\nsha256  dd26a7abddd02e2d0aba97805b31f248ef7835d9e10da289b22e3b8ab78b324d  LICENSE\n"
  },
  {
    "path": "package/go-bootstrap-stage1/go-bootstrap-stage1.mk",
    "content": "################################################################################\n#\n# go-bootstrap-stage1\n#\n################################################################################\n\n# Use last C-based Go compiler: v1.4.x\n# See https://golang.org/doc/install/source#bootstrapFromSource\nGO_BOOTSTRAP_STAGE1_VERSION = 1.4-bootstrap-20171003\nGO_BOOTSTRAP_STAGE1_SITE = https://dl.google.com/go\nGO_BOOTSTRAP_STAGE1_SOURCE = go$(GO_BOOTSTRAP_STAGE1_VERSION).tar.gz\n\nGO_BOOTSTRAP_STAGE1_LICENSE = BSD-3-Clause\nGO_BOOTSTRAP_STAGE1_LICENSE_FILES = LICENSE\n\nHOST_GO_BOOTSTRAP_STAGE1_ROOT = $(HOST_DIR)/lib/go-$(GO_BOOTSTRAP_STAGE1_VERSION)\n\n# The go build system is not compatible with ccache, so use\n# HOSTCC_NOCCACHE. See https://github.com/golang/go/issues/11685.\nHOST_GO_BOOTSTRAP_STAGE1_MAKE_ENV = \\\n\tGOOS=linux \\\n\tGOROOT_FINAL=\"$(HOST_GO_BOOTSTRAP_STAGE1_ROOT)\" \\\n\tGOROOT=\"$(@D)\" \\\n\tGOBIN=\"$(@D)/bin\" \\\n\tCC=$(HOSTCC_NOCCACHE) \\\n\tCGO_ENABLED=0\n\ndefine HOST_GO_BOOTSTRAP_STAGE1_BUILD_CMDS\n\tcd $(@D)/src && $(HOST_GO_BOOTSTRAP_STAGE1_MAKE_ENV) ./make.bash\nendef\n\ndefine HOST_GO_BOOTSTRAP_STAGE1_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/bin/go $(HOST_GO_BOOTSTRAP_STAGE1_ROOT)/bin/go\n\t$(INSTALL) -D -m 0755 $(@D)/bin/gofmt $(HOST_GO_BOOTSTRAP_STAGE1_ROOT)/bin/gofmt\n\n\tcp -a $(@D)/lib $(HOST_GO_BOOTSTRAP_STAGE1_ROOT)/\n\tcp -a $(@D)/pkg $(HOST_GO_BOOTSTRAP_STAGE1_ROOT)/\n\n\t# The Go sources must be installed to the host/ tree for the Go stdlib.\n\tcp -a $(@D)/src $(HOST_GO_BOOTSTRAP_STAGE1_ROOT)/\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/go-bootstrap-stage2/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE2_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE1_ARCH_SUPPORTS\n"
  },
  {
    "path": "package/go-bootstrap-stage2/go-bootstrap-stage2.hash",
    "content": "# From https://go.dev/dl\nsha256  13755bcce529747d5f2930dee034730c86d02bd3e521ab3e2bbede548d3b953f  go1.19.10.src.tar.gz\nsha256  2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067  LICENSE\n"
  },
  {
    "path": "package/go-bootstrap-stage2/go-bootstrap-stage2.mk",
    "content": "################################################################################\n#\n# go-bootstrap-stage2\n#\n################################################################################\n\n# Use last Go version that go-bootstrap-stage1 can build: v1.19.x\n# See https://golang.org/doc/install/source#bootstrapFromSource\nGO_BOOTSTRAP_STAGE2_VERSION = 1.19.10\nGO_BOOTSTRAP_STAGE2_SITE = https://storage.googleapis.com/golang\nGO_BOOTSTRAP_STAGE2_SOURCE = go$(GO_BOOTSTRAP_STAGE2_VERSION).src.tar.gz\n\nGO_BOOTSTRAP_STAGE2_LICENSE = BSD-3-Clause\nGO_BOOTSTRAP_STAGE2_LICENSE_FILES = LICENSE\n\n# Use go-bootstrap-stage1 to bootstrap.\nHOST_GO_BOOTSTRAP_STAGE2_DEPENDENCIES = host-go-bootstrap-stage1\n\nHOST_GO_BOOTSTRAP_STAGE2_ROOT = $(HOST_DIR)/lib/go-$(GO_BOOTSTRAP_STAGE2_VERSION)\n\n# The go build system is not compatible with ccache, so use\n# HOSTCC_NOCCACHE.  See https://github.com/golang/go/issues/11685.\nHOST_GO_BOOTSTRAP_STAGE2_MAKE_ENV = \\\n\tGO111MODULE=off \\\n\tGOROOT_BOOTSTRAP=$(HOST_GO_BOOTSTRAP_STAGE1_ROOT) \\\n\tGOROOT_FINAL=$(HOST_GO_BOOTSTRAP_STAGE2_ROOT) \\\n\tGOROOT=\"$(@D)\" \\\n\tGOBIN=\"$(@D)/bin\" \\\n\tGOOS=linux \\\n\tCC=$(HOSTCC_NOCCACHE) \\\n\tCXX=$(HOSTCXX_NOCCACHE) \\\n\tCGO_ENABLED=0\n\ndefine HOST_GO_BOOTSTRAP_STAGE2_BUILD_CMDS\n\tcd $(@D)/src && \\\n\t\t$(HOST_GO_BOOTSTRAP_STAGE2_MAKE_ENV) ./make.bash $(if $(VERBOSE),-v)\nendef\n\ndefine HOST_GO_BOOTSTRAP_STAGE2_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/bin/go $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/bin/go\n\t$(INSTALL) -D -m 0755 $(@D)/bin/gofmt $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/bin/gofmt\n\n\tcp -a $(@D)/lib $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/\n\n\tmkdir -p $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/pkg\n\tcp -a $(@D)/pkg/include $(@D)/pkg/linux_* $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/pkg/\n\tcp -a $(@D)/pkg/tool $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/pkg/\n\n\t# The Go sources must be installed to the host/ tree for the Go stdlib.\n\tcp -a $(@D)/src $(HOST_GO_BOOTSTRAP_STAGE2_ROOT)/\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/gob2/0001-dont-include-from-prefix.patch",
    "content": "[PATCH] Don't search $prefix/include for header files\n\nDon't add $prefix/include to the header file search path, as that breaks\ncross compilation (build $prefix/include isn't the same as target\n$prefix/include).\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n---\n src/Makefile.am |    3 +--\n src/Makefile.in |    3 +--\n 2 files changed, 2 insertions(+), 4 deletions(-)\n\nIndex: gob2-2.0.15/src/Makefile.am\n===================================================================\n--- gob2-2.0.15.orig/src/Makefile.am\n+++ gob2-2.0.15/src/Makefile.am\n@@ -17,8 +17,7 @@ INCLUDES = \\\n \t-I$(top_builddir)\t\\\n \t-I$(top_builddir)/src\t\\\n \t-I$(top_srcdir)\t\t\\\n-\t-I$(top_srcdir)/src\t\\\n-\t-I$(includedir)\n+\t-I$(top_srcdir)/src\n \n if NOINSTGOB\n noinst_PROGRAMS = @NOINSTGOB@\nIndex: gob2-2.0.15/src/Makefile.in\n===================================================================\n--- gob2-2.0.15.orig/src/Makefile.in\n+++ gob2-2.0.15/src/Makefile.in\n@@ -193,8 +193,7 @@ INCLUDES = \\\n \t-I$(top_builddir)\t\\\n \t-I$(top_builddir)/src\t\\\n \t-I$(top_srcdir)\t\t\\\n-\t-I$(top_srcdir)/src\t\\\n-\t-I$(includedir)\n+\t-I$(top_srcdir)/src\n \n @NOINSTGOB_TRUE@noinst_PROGRAMS = @NOINSTGOB@\n @NOINSTGOB_FALSE@bin_PROGRAMS = @INSTGOB@\n"
  },
  {
    "path": "package/gob2/gob2.hash",
    "content": "# Locally calculated\nsha256 f7ee84c07ca88ae96e5a60461957cc4dd0aa69d61804433d1c85de3d50be8026  gob2-2.0.20.tar.xz\nsha256 b8a2f73f743dc1a51aff23f1aacbca4b868564db52496fa3c0caba755bfd1eaf  COPYING\nsha256 7222386392eecf784e2f0c406f412f238cb6d25865a8447ae0947b32bb569889  COPYING.generated-code\n"
  },
  {
    "path": "package/gob2/gob2.mk",
    "content": "################################################################################\n#\n# gob2\n#\n################################################################################\n\nGOB2_VERSION = 2.0.20\nGOB2_SOURCE = gob2-$(GOB2_VERSION).tar.xz\nGOB2_SITE = http://ftp.5z.com/pub/gob\nGOB2_LICENSE = GPL-2.0+\nGOB2_LICENSE_FILES = COPYING COPYING.generated-code\nHOST_GOB2_DEPENDENCIES = host-bison host-flex host-libglib2\n\n$(eval $(host-autotools-package))\n\n# gob2 for the host\nGOB2_HOST_BINARY = $(HOST_DIR)/bin/gob2\n"
  },
  {
    "path": "package/gobject-introspection/0001-disable-tests.patch",
    "content": "From 473b4288d8f4e891d0d21f7b60ef8053c5cd7af9 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <aduskett@gmail.com>\nDate: Mon, 3 Feb 2020 10:07:15 -0800\nSubject: [PATCH] disable tests\n\nIf introspection data on the host is not built, meson throws the error:\n\"Unknown variable \"typelibs\". Because tests are not required, removing\nthe subdir tests alltogether fixes this issue.\n\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n meson.build | 6 ------\n 1 file changed, 6 deletions(-)\n\ndiff --git a/meson.build b/meson.build\nindex eed4d6b..5058664 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -222,12 +222,6 @@ if get_option('build_introspection_data') == true\n endif\n subdir('docs')\n \n-# The tests will also run, which is not possible if they\n-# were built for a different architecture.\n-if not meson.is_cross_build()\n-    subdir('tests')\n-endif\n-\n install_data('Makefile.introspection', install_dir: join_paths(get_option('datadir'), 'gobject-introspection-1.0'))\n install_data('m4/introspection.m4', install_dir: join_paths(get_option('datadir'), 'aclocal'))\n \n-- \n2.24.1\n\n"
  },
  {
    "path": "package/gobject-introspection/0002-Add-rpath-links-to-ccompiler.patch",
    "content": "From 72a427bc50daee8f1ded0e9221e53dbbf2a80f08 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <aduskett@gmail.com>\nDate: Wed, 14 Mar 2018 12:07:10 -0400\nSubject: [PATCH] Add rpath links to ccompiler\n\nThis patch allows gobject-introspection to process extra paths passed to the\ncompiler via the GIR_EXTRA_LIBS_PATH variable.\n\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n giscanner/ccompiler.py | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/giscanner/ccompiler.py b/giscanner/ccompiler.py\nindex a8bd5b1..51bb9bc 100644\n--- a/giscanner/ccompiler.py\n+++ b/giscanner/ccompiler.py\n@@ -231,6 +231,8 @@ class CCompiler(object):\n \n         for envvar in runtime_path_envvar:\n             if envvar in os.environ:\n+                for envvar_path in os.environ[envvar].split(':'):\n+                    args.append(\"-Wl,-rpath-link,\" + envvar_path)\n                 os.environ[envvar] = \\\n                     os.pathsep.join(runtime_paths + [os.environ[envvar]])\n             else:\n-- \n2.14.3\n\n"
  },
  {
    "path": "package/gobject-introspection/0003-ignore-error-return-codes-from-ldd-wrapper.patch",
    "content": "From f742da8b3913f4818d3f419117076afe62f4dbf4 Mon Sep 17 00:00:00 2001\nFrom: Alexander Kanavin <alex.kanavin@gmail.com>\nDate: Wed, 5 Sep 2018 16:46:52 +0200\nSubject: [PATCH] giscanner: ignore error return codes from ldd-wrapper\n\nprelink-rtld, which we use instead of ldd returns 127 when it can't find a library.\nIt is not an error per se, but it breaks subprocess.check_output().\n\nUpstream-Status: Inappropriate [oe-core specific]\nSigned-off-by: Alexander Kanavin <alex.kanavin@gmail.com>\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n giscanner/shlibs.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/giscanner/shlibs.py b/giscanner/shlibs.py\nindex d67df95..80352a6 100644\n--- a/giscanner/shlibs.py\n+++ b/giscanner/shlibs.py\n@@ -103,7 +103,7 @@ def _resolve_non_libtool(options, binary, libraries):\n             args.extend(['otool', '-L', binary.args[0]])\n         else:\n             args.extend(['ldd', binary.args[0]])\n-        output = subprocess.check_output(args)\n+        output = subprocess.run(args, check=False, stdout=subprocess.PIPE).stdout\n         if isinstance(output, bytes):\n             output = output.decode(\"utf-8\", \"replace\")\n \n"
  },
  {
    "path": "package/gobject-introspection/Config.in",
    "content": "config BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS\n\nconfig BR2_PACKAGE_GOBJECT_INTROSPECTION\n\tbool \"gobject-introspection\"\n\tdepends on BR2_USE_MMU # python3, libglib2\n\tdepends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS\n\t# While gcc 4.8 might be compatible with gobject-introspection,\n\t# The autobuilders use some toolchains from codesourcery which\n\t# have gcc 4.8 and a very old version of glibc, which will cause\n\t# compile errors with locale.c. As such, require 4.9 until this\n\t# can be verified.\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_HOST_GCC_AT_LEAST_8 # host-qemu\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\t# gobject-introspection does not require python3 to run on the\n\t# target; however, because the tools run in a qemu wrapper, a\n\t# cross-compiled python3 must be installed to staging. As there\n\t# is no current mechanism to tell Buildroot only to install\n\t# python to staging, then python must also be installed\n\t# unconditionally to the target when building\n\t# gobject-introspection.\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_HOST_QEMU\n\tselect BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE\n\tselect BR2_PACKAGE_LIBFFI\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  GObject introspection is a middleware layer between C\n\t  libraries (using GObject) and language bindings. The C library\n\t  can be scanned at compile time and generate a metadata file,\n\t  in addition to the actual native C library. Then at runtime,\n\t  language bindings can read this metadata and automatically\n\t  provide bindings to call into the C library.\n\n\t  https://wiki.gnome.org/action/show/Projects/GObjectIntrospection\n\ncomment \"gobject-introspection needs python3\"\n\tdepends on !BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS\n\ncomment \"gobject-introspection needs a glibc toolchain, gcc >= 4.9, host gcc >= 8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_8\n"
  },
  {
    "path": "package/gobject-introspection/g-ir-compiler.in",
    "content": "#!/usr/bin/env sh\n\n\"$(dirname \"$0\")\"/g-ir-scanner-qemuwrapper \"$(dirname \"$0\")\"/g-ir-compiler.real \"$@\"\n"
  },
  {
    "path": "package/gobject-introspection/g-ir-scanner-lddwrapper.in",
    "content": "#!/usr/bin/env sh\n\n\"${HOST_DIR}\"/sbin/prelink-rtld --root=\"$(dirname \"$0\")/../../\" \"$@\"\n"
  },
  {
    "path": "package/gobject-introspection/g-ir-scanner-qemuwrapper.in",
    "content": "#!/usr/bin/env sh\n\nGOI_LIBRARY_PATH=\"${GIR_EXTRA_LIBS_PATH:+${GIR_EXTRA_LIBS_PATH}:}.libs:$(dirname \"$0\")/../lib:$(dirname \"$0\")/../../lib\"\n\n# Pass -r to qemu-user as to trick glibc into not erroring out if the host kernel\n# is older than the target kernel.\n# Use a modules directory which does not exist so we don't load random things\n# which may then get deleted (or their dependencies) and potentially segfault\nGIO_MODULE_DIR=\"$(dirname \"$0\")/../lib/gio/modules-dummy\" \\\n@QEMU_USER@ -r @TOOLCHAIN_HEADERS_VERSION@ \\\n    @QEMU_USERMODE_ARGS@ \\\n    -L \"$(dirname \"$0\")/../../\" \\\n    -E LD_LIBRARY_PATH=\"${GOI_LIBRARY_PATH}\" \\\n    \"$@\"\n\n# shellcheck disable=SC2181\nif [ $? -ne 0 ]; then\n    echo \"If the above error message is about missing .so libraries, then setting up GIR_EXTRA_LIBS_PATH in the .mk file should help.\"\n    # shellcheck disable=SC2016\n    echo 'Typically like this: PKG_MAKE_ENV += GIR_EXTRA_LIBS_PATH=\"$(@D)/.libs\"'\n    exit 1\nfi\n"
  },
  {
    "path": "package/gobject-introspection/g-ir-scanner.in",
    "content": "#!/usr/bin/env sh\n\n# These environment variables are empty by default, and as such ccompiler.py\n# defaults to either using the system tools (CC, CXX, and CPP) or leaving\n# the variables blank (LDFLAGS, CFLAGS, and CPPFLAGS.)\n# Export these variables to ensure all build systems can generate .gir and\n# .typelib files properly.\nexport CPP=\"${CPP:-${HOST_DIR}/bin/@BASENAME_TARGET_CPP@}\"\nexport CC=\"${CC:-${HOST_DIR}/bin/@BASENAME_TARGET_CC@}\"\nexport CXX=\"${CXX:-${HOST_DIR}/bin/@BASENAME_TARGET_CXX@}\"\nexport CPPFLAGS=\"${CPPFLAGS:-@TARGET_CPPFLAGS@}\"\nexport CFLAGS=\"${CFLAGS:-@TARGET_CFLAGS@}\"\nexport CXXFLAGS=\"${CXXFLAGS:-@TARGET_CXXFLAGS@}\"\nexport LDFLAGS=\"${LDFLAGS:-@TARGET_LDFLAGS@}\"\n\nexport GI_SCANNER_DISABLE_CACHE=1\n\n\"${HOST_DIR}\"/bin/g-ir-scanner \\\n    --lib-dirs-envvar=GIR_EXTRA_LIBS_PATH \\\n    --use-binary-wrapper=\"$(dirname \"$0\")\"/g-ir-scanner-qemuwrapper \\\n    --use-ldd-wrapper=\"$(dirname \"$0\")\"/g-ir-scanner-lddwrapper \\\n    --add-include-path=\"$(dirname \"$0\")\"/../share/gir-1.0 \"$@\"\n"
  },
  {
    "path": "package/gobject-introspection/gobject-introspection.hash",
    "content": "#From http://ftp.gnome.org/pub/GNOME/sources/gobject-introspection/1.68/gobject-introspection-1.68.0.sha256sum\nsha256  d229242481a201b84a0c66716de1752bca41db4133672cfcfb37c93eb6e54a27  gobject-introspection-1.68.0.tar.xz\nsha256  d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5  COPYING.LGPL\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING.GPL\nsha256  ad35e98ae9342a3539c36f2171e84d175394ddcff625887290c751302cb02983  giscanner/scannerlexer.l\n"
  },
  {
    "path": "package/gobject-introspection/gobject-introspection.mk",
    "content": "################################################################################\n#\n# gobject-introspection\n#\n################################################################################\n\nGOBJECT_INTROSPECTION_VERSION_MAJOR = 1.68\nGOBJECT_INTROSPECTION_VERSION = $(GOBJECT_INTROSPECTION_VERSION_MAJOR).0\nGOBJECT_INTROSPECTION_SITE = http://ftp.gnome.org/pub/GNOME/sources/gobject-introspection/$(GOBJECT_INTROSPECTION_VERSION_MAJOR)\nGOBJECT_INTROSPECTION_SOURCE = gobject-introspection-$(GOBJECT_INTROSPECTION_VERSION).tar.xz\nGOBJECT_INTROSPECTION_INSTALL_STAGING = YES\nGOBJECT_INTROSPECTION_AUTORECONF = YES\nGOBJECT_INTROSPECTION_LICENSE = LGPL-2.0+, GPL-2.0+, BSD-2-Clause\nGOBJECT_INTROSPECTION_LICENSE_FILES = COPYING.LGPL COPYING.GPL giscanner/scannerlexer.l\n\nGOBJECT_INTROSPECTION_DEPENDENCIES = \\\n\thost-autoconf-archive \\\n\thost-gobject-introspection \\\n\thost-prelink-cross \\\n\thost-qemu \\\n\tlibffi \\\n\tlibglib2 \\\n\tpython3 \\\n\tzlib\n\nHOST_GOBJECT_INTROSPECTION_DEPENDENCIES = \\\n\thost-bison \\\n\thost-flex \\\n\thost-libglib2 \\\n\thost-python3\n\n# g-ir-scanner will default to /usr/bin/ld for linking if this is not set.\nGOBJECT_INTROSPECTION_NINJA_ENV += \\\n\tCC=\"$(TARGET_CC)\"\n\n# When building, gobject-introspection uses tools/g-ir-scanner to build several\n# .gir and .typelib files. g-ir-scanner does not use LDFLAGS, and by default,\n# links to the system-installed libglib2 path. To remedy this issue, defining\n# LD_LIBRARY_PATH forces g-ir-scanner to use our host installed libglib2 files.\nHOST_GOBJECT_INTROSPECTION_NINJA_ENV += \\\n\tLD_LIBRARY_PATH=\"$(if $(LD_LIBRARY_PATH),$(LD_LIBRARY_PATH):)$(HOST_DIR)/lib\"\n\n# Use the host gi-scanner to prevent the scanner from generating incorrect\n# elf classes.\nGOBJECT_INTROSPECTION_CONF_OPTS = \\\n\t-Dgi_cross_use_prebuilt_gi=true \\\n\t-Dgi_cross_binary_wrapper=\"$(STAGING_DIR)/usr/bin/g-ir-scanner-qemuwrapper\" \\\n\t-Dgi_cross_ldd_wrapper=\"$(STAGING_DIR)/usr/bin/g-ir-scanner-lddwrapper\" \\\n\t-Dbuild_introspection_data=true \\\n\t-Ddoctool=disabled\n\nifeq ($(BR2_PACKAGE_CAIRO),y)\nGOBJECT_INTROSPECTION_DEPENDENCIES += cairo\nGOBJECT_INTROSPECTION_CONF_OPTS += -Dcairo=enabled\nelse\nGOBJECT_INTROSPECTION_CONF_OPTS += -Dcairo=disabled\nendif\n\n# GI_SCANNER_DISABLE_CACHE=1 prevents g-ir-scanner from writing cache data to ${HOME}\nGOBJECT_INTROSPECTION_CONF_ENV = \\\n\tGI_SCANNER_DISABLE_CACHE=1\n\nHOST_GOBJECT_INTROSPECTION_CONF_ENV = \\\n\tGI_SCANNER_DISABLE_CACHE=1\n\n# Make sure g-ir-tool-template uses the host python.\ndefine GOBJECT_INTROSPECTION_FIX_TOOLS_PYTHON_PATH\n\t$(SED) '1s%#!.*%#!$(HOST_DIR)/bin/python3%' $(@D)/tools/g-ir-tool-template.in\nendef\nHOST_GOBJECT_INTROSPECTION_PRE_CONFIGURE_HOOKS += GOBJECT_INTROSPECTION_FIX_TOOLTEMPLATE_PYTHON_PATH\n\n# Perform the following:\n# - Just as above, Ensure that g-ir-tool-template.in uses the host python.\n# - Install all of the wrappers needed to build gobject-introspection.\n# - Create a safe modules directory which does not exist so we don't load random things\n#   which may then get deleted (or their dependencies) and potentially segfault\ndefine GOBJECT_INTROSPECTION_INSTALL_PRE_WRAPPERS\n\t$(SED) '1s%#!.*%#!$(HOST_DIR)/bin/python3%' $(@D)/tools/g-ir-tool-template.in\n\n\t$(INSTALL) -D -m 755 $(GOBJECT_INTROSPECTION_PKGDIR)/g-ir-scanner-lddwrapper.in \\\n\t\t$(STAGING_DIR)/usr/bin/g-ir-scanner-lddwrapper\n\n\t$(INSTALL) -D -m 755 $(GOBJECT_INTROSPECTION_PKGDIR)/g-ir-scanner-qemuwrapper.in \\\n\t\t$(STAGING_DIR)/usr/bin/g-ir-scanner-qemuwrapper\n\t$(SED) \"s%@QEMU_USER@%$(QEMU_USER)%g\" \\\n\t\t$(STAGING_DIR)/usr/bin/g-ir-scanner-qemuwrapper\n\t$(SED) \"s%@QEMU_USERMODE_ARGS@%$(call qstrip,$(BR2_PACKAGE_HOST_QEMU_USER_MODE_ARGS))%g\" \\\n\t\t$(STAGING_DIR)/usr/bin/g-ir-scanner-qemuwrapper\n\t$(SED) \"s%@TOOLCHAIN_HEADERS_VERSION@%$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)%g\" \\\n\t\t$(STAGING_DIR)/usr/bin/g-ir-scanner-qemuwrapper\n\n\t# Use a modules directory which does not exist so we don't load random things\n\t# which may then get deleted (or their dependencies) and potentially segfault\n\tmkdir -p $(STAGING_DIR)/usr/lib/gio/modules-dummy\nendef\nGOBJECT_INTROSPECTION_PRE_CONFIGURE_HOOKS += GOBJECT_INTROSPECTION_INSTALL_PRE_WRAPPERS\n\n# Move the real compiler and scanner to .real, and replace them with the wrappers.\n# Using .real has the following advantages:\n# - There is no need to change the logic for other packages.\n# - The wrappers call the .real files using qemu.\ndefine GOBJECT_INTROSPECTION_INSTALL_WRAPPERS\n\t# Move the real binaries to their names.real, then replace them with\n\t# the wrappers.\n\t$(foreach w,g-ir-compiler g-ir-scanner,\n\t\tmv $(STAGING_DIR)/usr/bin/$(w) $(STAGING_DIR)/usr/bin/$(w).real\n\t\t$(INSTALL) -D -m 755 \\\n\t\t\t$(GOBJECT_INTROSPECTION_PKGDIR)/$(w).in $(STAGING_DIR)/usr/bin/$(w)\n\t)\n\t$(SED) \"s%@BASENAME_TARGET_CPP@%$(notdir $(TARGET_CPP))%g\" \\\n\t\t-e \"s%@BASENAME_TARGET_CC@%$(notdir $(TARGET_CC))%g\" \\\n\t\t-e \"s%@BASENAME_TARGET_CXX@%$(notdir $(TARGET_CXX))%g\" \\\n\t\t-e \"s%@TARGET_CPPFLAGS@%$(TARGET_CPPFLAGS)%g\" \\\n\t\t-e \"s%@TARGET_CFLAGS@%$(TARGET_CFLAGS)%g\" \\\n\t\t-e \"s%@TARGET_CXXFLAGS@%$(TARGET_CXXFLAGS)%g\" \\\n\t\t-e \"s%@TARGET_LDFLAGS@%$(TARGET_LDFLAGS)%g\" \\\n\t\t$(STAGING_DIR)/usr/bin/g-ir-scanner\n\n\t# Gobject-introspection installs Makefile.introspection in\n\t# $(STAGING_DIR)/usr/share which is needed for autotools-based programs to\n\t# build .gir and .typelib files. Unfortunately, gobject-introspection-1.0.pc\n\t# uses $(prefix)/share as the directory, which\n\t# causes the host /usr/share being used instead of $(STAGING_DIR)/usr/share.\n\t# Change datadir to $(libdir)/../share which will prefix $(STAGING_DIR)\n\t# to the correct location.\n\t$(SED) \"s%^datadir=.*%datadir=\\$${libdir}/../share%g\" \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/gobject-introspection-1.0.pc\n\n\t# By default, girdir and typelibdir use datadir and libdir as their prefix,\n\t# of which pkg-config appends the sysroot directory. This results in files\n\t# being installed in $(STAGING_DIR)/$(STAGING_DIR)/path/to/files.\n\t# Changing the prefix to prefix prevents this error.\n\t$(SED) \"s%girdir=.*%girdir=\\$${prefix}/share/gir-1.0%g\" \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/gobject-introspection-1.0.pc\n\n\t$(SED) \"s%typelibdir=.*%typelibdir=\\$${prefix}/lib/girepository-1.0%g\" \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/gobject-introspection-1.0.pc\n\n\t# Set includedir to $(STAGING_DIR)/usr/share/gir-1.0 instead of . or\n\t# g-ir-compiler won't find .gir files resulting in a build failure for\n\t# autotools-based based programs\n\t$(SED) \"s%includedir=.%includedir=$(STAGING_DIR)/usr/share/gir-1.0%g\" \\\n\t\t$(STAGING_DIR)/usr/share/gobject-introspection-1.0/Makefile.introspection\nendef\nGOBJECT_INTROSPECTION_POST_INSTALL_STAGING_HOOKS += GOBJECT_INTROSPECTION_INSTALL_WRAPPERS\n\n# Only .typelib files are needed to run.\ndefine GOBJECT_INTROSPECTION_REMOVE_DEVELOPMENT_FILES\n\tfind $(TARGET_DIR)/usr/share \\( -iname \"*.gir\" -o -iname \\*.rnc \\) -delete\nendef\nGOBJECT_INTROSPECTION_TARGET_FINALIZE_HOOKS += GOBJECT_INTROSPECTION_REMOVE_DEVELOPMENT_FILES\n\n$(eval $(meson-package))\n$(eval $(host-meson-package))\n"
  },
  {
    "path": "package/google-breakpad/0001-add-missing-asm-ptrace-include.patch",
    "content": "Include <asm/ptrace.h> to get necessary definitions on AArch64\n\nIn glibc commit\nhttps://sourceware.org/git/?p=glibc.git;a=commit;h=7d05a8168b45c0580e1f9a79c2dd26c8f0d31fca,\nincluding <asm/ptrace.h> from <sys/user.h> on AArch64 has been\nremoved. So the Google Breakpad code, which used to build fine on\nglibc 2.18 (CodeSourcery toolchain for example), no longer builds with\nglibc 2.19 (Linaro toolchain for example).\n\nTo fix this, this patch adds the missing <asm/ptrace.h> include (for\nAArch64 only, to be conservative).\n\nThis patch has not been submitted upstream, since more recent versions\nof Google Breakpad have completely changed this part of the code.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/src/client/linux/minidump_writer/linux_dumper.h\n===================================================================\n--- a/src/client/linux/minidump_writer/linux_dumper.h\n+++ b/src/client/linux/minidump_writer/linux_dumper.h\n@@ -43,6 +43,9 @@\n #include <stdint.h>\n #include <sys/types.h>\n #include <sys/user.h>\n+#if defined(__aarch64__)\n+#include <asm/ptrace.h>\n+#endif\n \n #include \"common/memory.h\"\n #include \"google_breakpad/common/minidump_format.h\"\n"
  },
  {
    "path": "package/google-breakpad/0002-Replace-remaining-references-to-struct-ucontext-with.patch",
    "content": "From 7975a962e1d6dbad5a46792a54e647abd7caf5f1 Mon Sep 17 00:00:00 2001\nFrom: Mark Mentovai <mark@chromium.org>\nDate: Tue, 19 Sep 2017 22:48:30 -0400\nSubject: [PATCH] Replace remaining references to 'struct ucontext' with\n 'ucontext_t'\n\nThis relands\nhttps://chromium.googlesource.com/breakpad/breakpad/src/+/e3035bc406cee8a4d765e59ad46eb828705f17f4,\nwhich was accidentally committed to breakpad/breakpad/src, the read-only\nmirror of src in breakpad/breakpad. (Well, it should have been\nread-only.) See https://crbug.com/766164.\n\nThis fixes issues with glibc-2.26.\n\nSee https://bugs.gentoo.org/show_bug.cgi?id=628782 ,\nhttps://sourceware.org/git/?p=glibc.git;h=251287734e89a52da3db682a8241eb6bccc050c9 , and\nhttps://sourceware.org/ml/libc-alpha/2017-08/msg00010.html for context.\nChange-Id: Id66f474d636dd2afa450bab925c5514a800fdd6f\nReviewed-on: https://chromium-review.googlesource.com/674304\nReviewed-by: Mark Mentovai <mark@chromium.org>\n\n(cherry picked from commit bddcc58860f522a0d4cbaa7e9d04058caee0db9d)\n[Romain: backport from upstream]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n .../linux/dump_writer_common/ucontext_reader.cc    | 32 +++++++++++-----------\n .../linux/dump_writer_common/ucontext_reader.h     | 14 +++++-----\n src/client/linux/handler/exception_handler.cc      | 10 +++----\n src/client/linux/handler/exception_handler.h       |  6 ++--\n .../linux/microdump_writer/microdump_writer.cc     |  2 +-\n .../linux/minidump_writer/minidump_writer.cc       |  2 +-\n 6 files changed, 33 insertions(+), 33 deletions(-)\n\ndiff --git a/src/client/linux/dump_writer_common/ucontext_reader.cc b/src/client/linux/dump_writer_common/ucontext_reader.cc\nindex c80724d..052ce37 100644\n--- a/src/client/linux/dump_writer_common/ucontext_reader.cc\n+++ b/src/client/linux/dump_writer_common/ucontext_reader.cc\n@@ -36,19 +36,19 @@ namespace google_breakpad {\n \n // Minidump defines register structures which are different from the raw\n // structures which we get from the kernel. These are platform specific\n-// functions to juggle the ucontext and user structures into minidump format.\n+// functions to juggle the ucontext_t and user structures into minidump format.\n \n #if defined(__i386__)\n \n-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {\n+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {\n   return uc->uc_mcontext.gregs[REG_ESP];\n }\n \n-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {\n+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {\n   return uc->uc_mcontext.gregs[REG_EIP];\n }\n \n-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,\n+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,\n                                     const struct _libc_fpstate* fp) {\n   const greg_t* regs = uc->uc_mcontext.gregs;\n \n@@ -88,15 +88,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,\n \n #elif defined(__x86_64)\n \n-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {\n+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {\n   return uc->uc_mcontext.gregs[REG_RSP];\n }\n \n-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {\n+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {\n   return uc->uc_mcontext.gregs[REG_RIP];\n }\n \n-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,\n+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,\n                                     const struct _libc_fpstate* fpregs) {\n   const greg_t* regs = uc->uc_mcontext.gregs;\n \n@@ -145,15 +145,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,\n \n #elif defined(__ARM_EABI__)\n \n-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {\n+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {\n   return uc->uc_mcontext.arm_sp;\n }\n \n-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {\n+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {\n   return uc->uc_mcontext.arm_pc;\n }\n \n-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {\n+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) {\n   out->context_flags = MD_CONTEXT_ARM_FULL;\n \n   out->iregs[0] = uc->uc_mcontext.arm_r0;\n@@ -184,15 +184,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {\n \n #elif defined(__aarch64__)\n \n-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {\n+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {\n   return uc->uc_mcontext.sp;\n }\n \n-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {\n+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {\n   return uc->uc_mcontext.pc;\n }\n \n-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,\n+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc,\n                                     const struct fpsimd_context* fpregs) {\n   out->context_flags = MD_CONTEXT_ARM64_FULL;\n \n@@ -210,15 +210,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc,\n \n #elif defined(__mips__)\n \n-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) {\n+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {\n   return uc->uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP];\n }\n \n-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) {\n+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {\n   return uc->uc_mcontext.pc;\n }\n \n-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) {\n+void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) {\n #if _MIPS_SIM == _ABI64\n   out->context_flags = MD_CONTEXT_MIPS64_FULL;\n #elif _MIPS_SIM == _ABIO32\ndiff --git a/src/client/linux/dump_writer_common/ucontext_reader.h b/src/client/linux/dump_writer_common/ucontext_reader.h\nindex b6e77b4..2de80b7 100644\n--- a/src/client/linux/dump_writer_common/ucontext_reader.h\n+++ b/src/client/linux/dump_writer_common/ucontext_reader.h\n@@ -39,23 +39,23 @@\n \n namespace google_breakpad {\n \n-// Wraps platform-dependent implementations of accessors to ucontext structs.\n+// Wraps platform-dependent implementations of accessors to ucontext_t structs.\n struct UContextReader {\n-  static uintptr_t GetStackPointer(const struct ucontext* uc);\n+  static uintptr_t GetStackPointer(const ucontext_t* uc);\n \n-  static uintptr_t GetInstructionPointer(const struct ucontext* uc);\n+  static uintptr_t GetInstructionPointer(const ucontext_t* uc);\n \n-  // Juggle a arch-specific ucontext into a minidump format\n+  // Juggle a arch-specific ucontext_t into a minidump format\n   //   out: the minidump structure\n   //   info: the collection of register structures.\n #if defined(__i386__) || defined(__x86_64)\n-  static void FillCPUContext(RawContextCPU *out, const ucontext *uc,\n+  static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,\n                              const struct _libc_fpstate* fp);\n #elif defined(__aarch64__)\n-  static void FillCPUContext(RawContextCPU *out, const ucontext *uc,\n+  static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,\n                              const struct fpsimd_context* fpregs);\n #else\n-  static void FillCPUContext(RawContextCPU *out, const ucontext *uc);\n+  static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc);\n #endif\n };\n \ndiff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc\nindex b63f973..3d809b8 100644\n--- a/src/client/linux/handler/exception_handler.cc\n+++ b/src/client/linux/handler/exception_handler.cc\n@@ -439,9 +439,9 @@ bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) {\n   // Fill in all the holes in the struct to make Valgrind happy.\n   memset(&g_crash_context_, 0, sizeof(g_crash_context_));\n   memcpy(&g_crash_context_.siginfo, info, sizeof(siginfo_t));\n-  memcpy(&g_crash_context_.context, uc, sizeof(struct ucontext));\n+  memcpy(&g_crash_context_.context, uc, sizeof(ucontext_t));\n #if defined(__aarch64__)\n-  struct ucontext* uc_ptr = (struct ucontext*)uc;\n+  ucontext_t* uc_ptr = (ucontext_t*)uc;\n   struct fpsimd_context* fp_ptr =\n       (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved;\n   if (fp_ptr->head.magic == FPSIMD_MAGIC) {\n@@ -450,9 +450,9 @@ bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) {\n   }\n #elif !defined(__ARM_EABI__) && !defined(__mips__)\n   // FP state is not part of user ABI on ARM Linux.\n-  // In case of MIPS Linux FP state is already part of struct ucontext\n+  // In case of MIPS Linux FP state is already part of ucontext_t\n   // and 'float_state' is not a member of CrashContext.\n-  struct ucontext* uc_ptr = (struct ucontext*)uc;\n+  ucontext_t* uc_ptr = (ucontext_t*)uc;\n   if (uc_ptr->uc_mcontext.fpregs) {\n     memcpy(&g_crash_context_.float_state, uc_ptr->uc_mcontext.fpregs,\n            sizeof(g_crash_context_.float_state));\n@@ -476,7 +476,7 @@ bool ExceptionHandler::SimulateSignalDelivery(int sig) {\n   // ExceptionHandler::HandleSignal().\n   siginfo.si_code = SI_USER;\n   siginfo.si_pid = getpid();\n-  struct ucontext context;\n+  ucontext_t context;\n   getcontext(&context);\n   return HandleSignal(sig, &siginfo, &context);\n }\ndiff --git a/src/client/linux/handler/exception_handler.h b/src/client/linux/handler/exception_handler.h\nindex 591c310..42f4055 100644\n--- a/src/client/linux/handler/exception_handler.h\n+++ b/src/client/linux/handler/exception_handler.h\n@@ -191,11 +191,11 @@ class ExceptionHandler {\n   struct CrashContext {\n     siginfo_t siginfo;\n     pid_t tid;  // the crashing thread.\n-    struct ucontext context;\n+    ucontext_t context;\n #if !defined(__ARM_EABI__) && !defined(__mips__)\n     // #ifdef this out because FP state is not part of user ABI for Linux ARM.\n-    // In case of MIPS Linux FP state is already part of struct\n-    // ucontext so 'float_state' is not required.\n+    // In case of MIPS Linux FP state is already part of ucontext_t so\n+    // 'float_state' is not required.\n     fpstate_t float_state;\n #endif\n   };\ndiff --git a/src/client/linux/microdump_writer/microdump_writer.cc b/src/client/linux/microdump_writer/microdump_writer.cc\nindex 6f5b435..a508667 100644\n--- a/src/client/linux/microdump_writer/microdump_writer.cc\n+++ b/src/client/linux/microdump_writer/microdump_writer.cc\n@@ -571,7 +571,7 @@ class MicrodumpWriter {\n \n   void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); }\n \n-  const struct ucontext* const ucontext_;\n+  const ucontext_t* const ucontext_;\n #if !defined(__ARM_EABI__) && !defined(__mips__)\n   const google_breakpad::fpstate_t* const float_state_;\n #endif\ndiff --git a/src/client/linux/minidump_writer/minidump_writer.cc b/src/client/linux/minidump_writer/minidump_writer.cc\nindex 86009b9..f2aec73 100644\n--- a/src/client/linux/minidump_writer/minidump_writer.cc\n+++ b/src/client/linux/minidump_writer/minidump_writer.cc\n@@ -1248,7 +1248,7 @@ class MinidumpWriter {\n   const int fd_;  // File descriptor where the minidum should be written.\n   const char* path_;  // Path to the file where the minidum should be written.\n \n-  const struct ucontext* const ucontext_;  // also from the signal handler\n+  const ucontext_t* const ucontext_;  // also from the signal handler\n #if !defined(__ARM_EABI__) && !defined(__mips__)\n   const google_breakpad::fpstate_t* const float_state_;  // ditto\n #endif\n-- \n2.9.5\n\n"
  },
  {
    "path": "package/google-breakpad/0003-src-client-linux-handler-exception_handler.cc-rename.patch",
    "content": "From 2fa414c8655c421e7eb0bb1719928babb0ecf7c6 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Thu, 26 Dec 2019 22:21:33 +0100\nSubject: [PATCH] src/client/linux/handler/exception_handler.cc: rename tgkill\n to BreakpadTgkill()\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSince glibc 2.30, a tgkill() function was added in the C library, and\nits definition obviously conflicts with the internal definition of\ngoogle-breakpad, causing build failures:\n\nsrc/client/linux/handler/exception_handler.cc:109:12: error: ‘int tgkill(pid_t, pid_t, int)’ was declared ‘extern’ and later ‘static’ [-fpermissive]\n  109 | static int tgkill(pid_t tgid, pid_t tid, int sig) {\n      |            ^~~~~~\nIn file included from /usr/include/signal.h:374,\n                 from ./src/client/linux/handler/exception_handler.h:33,\n                 from src/client/linux/handler/exception_handler.cc:66:\n/usr/include/bits/signal_ext.h:29:12: note: previous declaration of ‘int tgkill(__pid_t, __pid_t, int)’\n   29 | extern int tgkill (__pid_t __tgid, __pid_t __tid, int __signal);\n      |            ^~~~~~\n\nUpstream google-breakpad simply dropped the use of the internal\ntgkill() in commit\nhttps://chromium.googlesource.com/breakpad/breakpad/+/7e3c165000d44fa153a3270870ed500bc8bbb461. However,\nthis is not realistic for Buildroot, since we do support old systems\nwhere the system C library will not necessarily provide tgkill().\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n src/client/linux/handler/exception_handler.cc | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc\nindex b63f973b..b4c279b8 100644\n--- a/src/client/linux/handler/exception_handler.cc\n+++ b/src/client/linux/handler/exception_handler.cc\n@@ -106,7 +106,7 @@\n #endif\n \n // A wrapper for the tgkill syscall: send a signal to a specific thread.\n-static int tgkill(pid_t tgid, pid_t tid, int sig) {\n+static int BreakpadTgkill(pid_t tgid, pid_t tid, int sig) {\n   return syscall(__NR_tgkill, tgid, tid, sig);\n   return 0;\n }\n@@ -387,7 +387,7 @@ void ExceptionHandler::SignalHandler(int sig, siginfo_t* info, void* uc) {\n     // In order to retrigger it, we have to queue a new signal by calling\n     // kill() ourselves.  The special case (si_pid == 0 && sig == SIGABRT) is\n     // due to the kernel sending a SIGABRT from a user request via SysRQ.\n-    if (tgkill(getpid(), syscall(__NR_gettid), sig) < 0) {\n+    if (BreakpadTgkill(getpid(), syscall(__NR_gettid), sig) < 0) {\n       // If we failed to kill ourselves (e.g. because a sandbox disallows us\n       // to do so), we instead resort to terminating our process. This will\n       // result in an incorrect exit code.\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/google-breakpad/0004-Fix-for-non-constant-SIGSTKSZ.patch",
    "content": "From 4a332d01186b09a9d46390b845024d914d9149cb Mon Sep 17 00:00:00 2001\nFrom: Michel Alexandre Salim <michel@michel-slm.name>\nDate: Sun, 21 Mar 2021 13:17:00 -0700\nSubject: [PATCH] Fix for non-constant SIGSTKSZ\n\nOn glibc > 2.33, `SIGSTKSZ` might not be constant (in which case\nit expands to a call to `sysconf` which returns a `long int`); see\nhttp://sourceware-org.1504.n7.nabble.com/PATCH-sysconf-Add-SC-MINSIGSTKSZ-SC-SIGSTKSZ-BZ-20305-td650948.html\n\nCast the two arguments to `max` to `unsigned`, which is the type of the variable\nwe're storing the result in anyway, so that it works both with the old-style constant\n`SIGSTKSZ` and the new configurable one.\n\nSigned-off-by: Michel Alexandre Salim <michel@michel-slm.name>\nChange-Id: I3d87048561a87c6b9fcdbb14b3d53dd45b0a00f0\n\n[Retrieved from:\nhttps://chromium-review.googlesource.com/c/breakpad/breakpad/+/2776379]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n\ndiff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc\nindex ca353c4..3788829 100644\n--- a/src/client/linux/handler/exception_handler.cc\n+++ b/src/client/linux/handler/exception_handler.cc\n@@ -138,7 +138,7 @@\n   // SIGSTKSZ may be too small to prevent the signal handlers from overrunning\n   // the alternative stack. Ensure that the size of the alternative stack is\n   // large enough.\n-  static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ);\n+  static const unsigned kSigStackSize = std::max((unsigned) 16384, (unsigned) SIGSTKSZ);\n \n   // Only set an alternative stack if there isn't already one, or if the current\n   // one is too small.\n"
  },
  {
    "path": "package/google-breakpad/Config.in",
    "content": "config BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_i386 || BR2_x86_64 || BR2_arm || BR2_aarch64 || \\\n\t\tBR2_mips || BR2_mipsel\n\nconfig BR2_PACKAGE_GOOGLE_BREAKPAD\n\tbool \"google-breakpad\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC)\n\tdepends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_LINUX_SYSCALL_SUPPORT\n\thelp\n\t  Google-Breakpad is a library and tool suite that allows you\n\t  to distribute an application to users with compiler-provided\n\t  debugging information removed, record crashes in compact\n\t  \"minidump\" files, send them back to your server, and produce\n\t  C and C++ stack traces from these minidumps. Breakpad can\n\t  also write minidumps on request for programs that have not\n\t  crashed.\n\n\t  You may want to set BR2_ENABLE_DEBUG, in order to get useful\n\t  results.\n\n\t  This target package installs a static library named\n\t  libbreakpad_client.a which should be linked into programs\n\t  willing to use Google Breakpad. A host variant of this\n\t  package is also available, and provides the different tools\n\t  needed to extract the debugging symbols from target\n\t  binaries.\n\n\t  https://chromium.googlesource.com/breakpad/breakpad\n\ncomment \"google-breakpad requires a glibc or uClibc toolchain w/ wchar, thread, C++, gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC) || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/google-breakpad/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_HOSTARCH = \"x86_64\"\n\tdefault y if BR2_HOSTARCH = \"x86\"\n\tdefault y if BR2_HOSTARCH = \"arm\"\n\tdefault y if BR2_HOSTARCH = \"aarch64\"\n\tdefault y if BR2_HOSTARCH = \"mips\"\n\tdefault y if BR2_HOSTARCH = \"mipsel\"\n"
  },
  {
    "path": "package/google-breakpad/gen-syms.sh",
    "content": "#!/bin/sh\nNAME=\"${0##*/}\"\nSTAGING_DIR=\"${1}\"\nTARGET_DIR=\"${2}\"\nshift 2\n\nSYMBOLS_DIR=\"${STAGING_DIR}/usr/share/google-breakpad-symbols\"\nrm -rf \"${SYMBOLS_DIR}\"\nmkdir -p \"${SYMBOLS_DIR}\"\n\nerror() {\n    fmt=\"${1}\"; shift\n    printf \"%s: ${fmt}\" \"${NAME}\" \"${@}\" >&2\n    exit 1\n}\n\nfor FILE in ${@}; do\n    f=\"${TARGET_DIR}${FILE}\"\n    if [ ! -e \"${f}\" ]; then\n        error \"%s: No such file or directory\\n\" \"${FILE}\"\n    fi\n\tif [ -d \"${f}\" ]; then\n\t\terror \"%s: Is a directory\\n\" \"${FILE}\"\n\tfi\n\tif dump_syms \"${f}\" > \"${SYMBOLS_DIR}/tmp.sym\" 2>/dev/null; then\n\t\thash=$(head -n1 \"${SYMBOLS_DIR}/tmp.sym\" | cut -d ' ' -f 4);\n\t\tfilename=$(basename \"${FILE}\");\n\t\tmkdir -p \"${SYMBOLS_DIR}/${filename}/${hash}\"\n\t\tmv \"${SYMBOLS_DIR}/tmp.sym\" \"${SYMBOLS_DIR}/${filename}/${hash}/${filename}.sym\";\n\telse\n\t\terror \"Error dumping symbols for: '%s'\\n\" \"${FILE}\"\n\tfi\ndone\nrm -rf \"${SYMBOLS_DIR}/tmp\"\n"
  },
  {
    "path": "package/google-breakpad/google-breakpad.hash",
    "content": "# Locally calculated\nsha256  3504639ee5d7536e7f7939b80520dfcb98863e9b50673dd577d0ab2a07105acb  google-breakpad-7515ab13768c7edc09f0f2ec2354dc6c928239a6-br1.tar.gz\nsha256  f9752a0a4ac5215eaa3a4f0ec29cd52563c883de5d7870525cc0bc3a21cb8e15  LICENSE\n"
  },
  {
    "path": "package/google-breakpad/google-breakpad.mk",
    "content": "################################################################################\n#\n# google-breakpad\n#\n################################################################################\n\nGOOGLE_BREAKPAD_VERSION = 7515ab13768c7edc09f0f2ec2354dc6c928239a6\nGOOGLE_BREAKPAD_SITE = https://chromium.googlesource.com/breakpad/breakpad\nGOOGLE_BREAKPAD_SITE_METHOD = git\nGOOGLE_BREAKPAD_CONF_OPTS = --disable-processor --disable-tools\n# Only a static library is installed\nGOOGLE_BREAKPAD_INSTALL_TARGET = NO\nGOOGLE_BREAKPAD_INSTALL_STAGING = YES\nGOOGLE_BREAKPAD_LICENSE = BSD-3-Clause\nGOOGLE_BREAKPAD_LICENSE_FILES = LICENSE\nGOOGLE_BREAKPAD_DEPENDENCIES = host-google-breakpad linux-syscall-support\n\nHOST_GOOGLE_BREAKPAD_DEPENDENCIES = host-linux-syscall-support\n\n# Avoid using depot-tools to download this file.\ndefine HOST_GOOGLE_BREAKPAD_LSS\n\t$(INSTALL) -D -m 0644 \\\n\t\t$(HOST_DIR)/include/linux_syscall_support.h \\\n\t\t$(@D)/src/third_party/lss/linux_syscall_support.h\nendef\nHOST_GOOGLE_BREAKPAD_PRE_CONFIGURE_HOOKS += HOST_GOOGLE_BREAKPAD_LSS\n\ndefine GOOGLE_BREAKPAD_LSS\n\t$(INSTALL) -D -m 0644 \\\n\t\t$(STAGING_DIR)/usr/include/linux_syscall_support.h \\\n\t\t$(@D)/src/third_party/lss/linux_syscall_support.h\nendef\nGOOGLE_BREAKPAD_PRE_CONFIGURE_HOOKS += GOOGLE_BREAKPAD_LSS\n\ndefine GOOGLE_BREAKPAD_EXTRACT_SYMBOLS\n\t$(EXTRA_ENV) package/google-breakpad/gen-syms.sh $(STAGING_DIR) \\\n\t\t$(TARGET_DIR) $(call qstrip,$(BR2_GOOGLE_BREAKPAD_INCLUDE_FILES))\nendef\nGOOGLE_BREAKPAD_TARGET_FINALIZE_HOOKS += GOOGLE_BREAKPAD_EXTRACT_SYMBOLS\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/google-material-design-icons/Config.in",
    "content": "config BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS\n\tbool \"google-material-design-icons\"\n\thelp\n\t  Material design icons are the official icon set from Google\n\t  that are designed under the material design guidelines.\n\n\t  https://github.com/google/material-design-icons\n\nif BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS\n\nconfig BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_TYPE_PNG\n\tbool \"Install PNG icons\"\n\thelp\n\t  Use PNG icon types.\n\n\t  The default. Traditional format; simplicity and compatibility.\n\nconfig BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_TYPE_SVG\n\tbool \"Install SVG icons\"\n\thelp\n\t  Use SVG icon types.\n\n\t  Vector format that is limitlessly scalable.\n\nconfig BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_FONT\n\tbool \"Install TrueType font\"\n\thelp\n\t  Install the Material TrueType font (ttf) on the target system.\n\nconfig BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_SPRITES_CSS\n\tbool \"Install CSS sprites\"\n\thelp\n\t  Install CSS (PNG) spritesheets.\n\nconfig BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_SPRITES_SVG\n\tbool \"Install SVG sprites\"\n\thelp\n\t  Install SVG spritesheets.\n\nendif\n"
  },
  {
    "path": "package/google-material-design-icons/google-material-design-icons.hash",
    "content": "# Locally calculated\nsha256  769547061a51f81623bf5174767c08fc587fd6946339592fbd6cd0dd45f56b4c  2.2.3.tar.gz\nsha256  8ae9438818c26e4873b91d8c6ad620526c011e27e125677f13031eda903f007c  LICENSE\n"
  },
  {
    "path": "package/google-material-design-icons/google-material-design-icons.mk",
    "content": "################################################################################\n#\n# google-material-design-icons\n#\n################################################################################\n\nGOOGLE_MATERIAL_DESIGN_ICONS_VERSION = 2.2.3\nGOOGLE_MATERIAL_DESIGN_ICONS_SOURCE = \\\n\t$(GOOGLE_MATERIAL_DESIGN_ICONS_VERSION).tar.gz\nGOOGLE_MATERIAL_DESIGN_ICONS_SITE = \\\n\thttps://github.com/google/material-design-icons/archive\nGOOGLE_MATERIAL_DESIGN_ICONS_LICENSE = CC-BY-4.0\nGOOGLE_MATERIAL_DESIGN_ICONS_LICENSE_FILES = LICENSE\n\nGOOGLE_MATERIAL_DESIGN_ICONS_LIST = \\\n\taction alert av communication content device editor file \\\n\thardware image maps navigation notification places social toggle\n\nifneq ($(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_TYPE_PNG)$(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_TYPE_SVG),)\ndefine GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_ICONS_IMAGES\n\t$(foreach family,$(GOOGLE_MATERIAL_DESIGN_ICONS_LIST),\\\n\t\t$(INSTALL) -d $(TARGET_DIR)/usr/share/google-material/$(family) \\\n\t\t\t|| exit 1; \\\n\t\t$(if $(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_TYPE_PNG), \\\n\t\t\t$(INSTALL) -D -m 0644 $(@D)/$(family)/1x_web/*.png \\\n\t\t\t\t$(TARGET_DIR)/usr/share/google-material/$(family) || exit 1;) \\\n\t\t$(if $(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_TYPE_SVG), \\\n\t\t\t$(INSTALL) -D -m 0644 $(@D)/$(family)/svg/production/*.svg \\\n\t\t\t\t$(TARGET_DIR)/usr/share/google-material/$(family) || exit 1;) \\\n\t)\nendef\nendif\n\nifeq ($(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_FONT),y)\ndefine GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_ICONS_FONT\n\t$(INSTALL) -D -m 0644 $(@D)/iconfont/MaterialIcons-Regular.ttf \\\n\t\t$(TARGET_DIR)/usr/share/fonts/google-material/MaterialIcons-Regular.ttf \\\n\t\t|| exit 1\nendef\nendif\n\ndefine GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_ICONS_SPRITES\n\t$(if $(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_SPRITES_CSS), \\\n\t\t$(INSTALL) -d $(TARGET_DIR)/usr/share/google-material/css-sprite \\\n\t\t\t|| exit 1; \\\n\t\t$(INSTALL) -D -m 0644 $(@D)/sprites/css-sprite/* \\\n\t\t\t$(TARGET_DIR)/usr/share/google-material/css-sprite || exit 1)\n\t$(if $(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_SPRITES_SVG), \\\n\t\t$(INSTALL) -d $(TARGET_DIR)/usr/share/google-material/svg-sprite \\\n\t\t\t|| exit 1; \\\n\t\t$(INSTALL) -D -m 0644 $(@D)/sprites/svg-sprite/* \\\n\t\t\t$(TARGET_DIR)/usr/share/google-material/svg-sprite || exit 1)\nendef\n\ndefine GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_TARGET_CMDS\n\t$(GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_ICONS_FONT)\n\t$(GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_ICONS_IMAGES)\n\t$(GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_ICONS_SPRITES)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/googlefontdirectory/Config.in",
    "content": "config BR2_PACKAGE_GOOGLEFONTDIRECTORY\n\tbool \"Google font directory\"\n\thelp\n\t  Font files available from Google Fonts\n\n\t  https://github.com/google/fonts\n\nif BR2_PACKAGE_GOOGLEFONTDIRECTORY\n\nconfig BR2_PACKAGE_GOOGLEFONTDIRECTORY_FONTS\n\tstring \"List of fonts to install\"\n\tdefault \"ufl/ubuntu\"\n\thelp\n\t  Specify a space-separated list of fonts to install. They\n\t  correspond to the path of the font directory within Google\n\t  Font directory code base. For example: ufl/ubuntu,\n\t  apache/kranky or ofl/gleego.\n\nendif\n"
  },
  {
    "path": "package/googlefontdirectory/googlefontdirectory.hash",
    "content": "# Locally calculated\nsha256 ec2ddbeee673cce1b0796e3b20fbff5fd836ce9ba6d88deed8b59154fa255f06  googlefontdirectory-94dff3eaa9301b6640cccc63c56d6ff33d82882c.tar.gz\n# Locally calculated with\n# for i in $(find apache/ ofl/ ufl/ -name 'LICENSE.txt' -o -name 'OFL.txt' -o -name 'LICENCE.txt') ; do printf \"sha256 %s\\n\" \"$(sha256sum $i)\" ; done\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/robotocondensed/LICENSE.txt\nsha256 3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5  apache/opensanscondensed/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/walterturncoat/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/fontdinerswanky/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/aclonica/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/sunshiney/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/ultra/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/unkempt/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/slackey/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/satisfy/LICENSE.txt\nsha256 3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5  apache/opensans/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/montez/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/kranky/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/arimo/LICENSE.txt\nsha256 3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5  apache/opensanshebrew/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/tinos/LICENSE.txt\nsha256 3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5  apache/opensanshebrewcondensed/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/justanotherhand/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/robotoslab/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/homemadeapple/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/craftygirls/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/crushed/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/robotomono/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/maidenorange/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/roboto/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/rochester/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/rocksalt/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/creepstercaps/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/nokora/LICENSE.txt\nsha256 3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5  apache/mountainsofchristmas/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/cousine/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/syncopate/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/specialelite/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/luckiestguy/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/rancho/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/smokum/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/redressed/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/irishgrover/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/comingsoon/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/cherrycreamsoda/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/schoolbell/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/yellowtail/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/calligraffitti/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/permanentmarker/LICENSE.txt\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache/chewy/LICENSE.txt\nsha256 0fc8e6675568c02aac6b41dd3cccaf2264fc5969601effe68e09b26635879b2c  ofl/ranchers/OFL.txt\nsha256 ff72e4d89860e64ee38ccf8a5a7e9dc085d5e36115b096a6c7f8bc988e9bec61  ofl/kumarone/OFL.txt\nsha256 643c63caf03855ae29be68035d8888e95eadc767a1d92f163d686da1b0a1cd3c  ofl/cantarell/OFL.txt\nsha256 1d242ab6fbb2dfbba2e7119b00a6328bc59cb2faf7299b844e9b92a2f12c0d8b  ofl/adventpro/OFL.txt\nsha256 01af2625d6247ecd2430d1d1603c579f85989d43b2d9129e08e0ac0df8909918  ofl/tienne/OFL.txt\nsha256 5fb0694694dc307d1eb0121689395e634b6329ff545acc53f55ad66a716b3cf1  ofl/baloobhaina/OFL.txt\nsha256 f3bc8767749fc133d9b35e84ca024b82f1ac4d1b38deca0adcf8300892303022  ofl/faustina/OFL.txt\nsha256 69c34ca1873308c667ddde663cbf59c0d1cf14cbb945ad010f71d21264249e24  ofl/aubrey/OFL.txt\nsha256 4febcc8d6e539db3e0c652da87bc8704f6d48e71e07f8ddb0974094a3de8da81  ofl/flavors/OFL.txt\nsha256 d24ff874133ecd133e55d7c4070d2edab14d3933477c2bccb3a0d8d1cc9c33bf  ofl/muktavaani/OFL.txt\nsha256 ab5499b975c2dc82f533c6f13c5fca589df4d57c7c400db5f6ca8565ad9c2fd3  ofl/butchermancaps/OFL.txt\nsha256 6a28d4d5d8b4d1ea89ace5a047ac6e0de182acdb8bfa22897bf7702102094f69  ofl/shadowsintolighttwo/OFL.txt\nsha256 7a1d085067cd589026b256dd85af1eaa1087fa0f3d468192724c5138cc14d894  ofl/copse/OFL.txt\nsha256 fd17f80dc48ff767d91d0dd9f821eebfd8b73ee82f55537a9052b6b0107622c8  ofl/voces/OFL.txt\nsha256 186d750eb496a4c17a76385f82be6aea2ac1cf2de074a811d63786cf374ea73f  ofl/barlowsemicondensed/OFL.txt\nsha256 4aa1da66597f4c5cfde67790992ee55926ef6aaa87b9a10d529ab35e8b91070c  ofl/asapcondensed/OFL.txt\nsha256 301f77908df2b00141b4dcea50cc1a586c3afcee78843bd811088e8263623f9d  ofl/amaticsc/OFL.txt\nsha256 6b6c6721a30480a323cf33acf6a7703dfce46b846827a65f8ee96230060e3c3e  ofl/homenaje/OFL.txt\nsha256 393d494f9ebb5db6a3552ffa03a4c6f3746c22808b40d011b391681da55ca3f6  ofl/kellyslab/OFL.txt\nsha256 ca19ac21c7656f493189093eca52b4239fcc5eacc15ab2e3d67cfbfc0e6e443b  ofl/sirinstencil/OFL.txt\nsha256 980c2b058d331f3c5ca4a1223e549511b71630e4f4a5533879d436d583cb5665  ofl/arbutus/OFL.txt\nsha256 2758cf7a872827f39661cf8cc24188113c030447aefb5ca7145993650076ca8c  ofl/ptsans/OFL.txt\nsha256 7527e73a61f742a0dd050ab2fc7333de71ac7886023c100bca66a0a93b37498e  ofl/headlandone/OFL.txt\nsha256 39b26527bf9ed27b4c85b86341eceea0579f3550bcf448cf06345eaadf947ec9  ofl/rugeboogie/OFL.txt\nsha256 2ac164969308ac200eefc516151934701044f0db5695ae2acc15df2a8d22e5cb  ofl/anaheim/OFL.txt\nsha256 88d3abd47414e7912d0d2eb44ca89e0b1bd7c43cc2ebe58a8a75281ad75a0f60  ofl/stardosstencil/OFL.txt\nsha256 01003114b77326df223f291c48cdf12e95f6a5937437f164347919f2bbde12d4  ofl/josefinslab/OFL.txt\nsha256 83aa5adca2418f091b732a19cc7c30dcb5c00c217051a58f34f5eecb19be0cd3  ofl/average/OFL.txt\nsha256 585c6d2da8bcd8ffa651e0016f2e992a6891b625143a46a1dacf00699a817d9a  ofl/monoton/OFL.txt\nsha256 96e65d9c227a972e38035b849bba1e8b7879eecbb52f278be1e71dd481187f02  ofl/domine/OFL.txt\nsha256 d1bf0acea511ad1f4de53e942cffb8ab0e67c03c6203d6f390d71105d52c33f0  ofl/missfajardose/OFL.txt\nsha256 131d19126a0e7ddd25540fd6bee219cebbc8aee7e8374882998ee6c2f4ff6cf4  ofl/mergeone/OFL.txt\nsha256 042a570b306ab893c6168be7e6e79bbceae46097141357ad0af7ef8bb179ed7b  ofl/goblinone/OFL.txt\nsha256 91c25c350d3cac39da2736d74f7ba37ef648f5237a4e330a240615bc8d8c4360  ofl/ibmplexserif/OFL.txt\nsha256 bc80ea18223ea0db2ed73ab5bfd0cd601906a2b7a163183c6c4ea333be309ce4  ofl/baumans/OFL.txt\nsha256 5f5dbf452c1657370d9280b50d647212a53c80acae6d78e0b5e8c2b26dc62b09  ofl/puritan/OFL.txt\nsha256 90bd333a5cf0ed09264fc3e559d44979373f6c3d983b0f65cc46e952b4eb61f0  ofl/contrailone/OFL.txt\nsha256 1d08c63944e639bbfe8a1b81e3c6a63836806c126b3573b9cda0db83fd27ffe9  ofl/taviraj/OFL.txt\nsha256 62fab0ba1d5593782cbf048da193f4b1edc16b817577a99d707827513ad80e9a  ofl/overlock/OFL.txt\nsha256 75798d56e448ba4d2aec3ef5f3c2d805d9c6fe2ba688cd3d7162b2dd31e9cf48  ofl/textmeone/OFL.txt\nsha256 eef925ad6afcbba33f7989f5ad826fd68d50cc1ab4d679c52927c8afd40bddf0  ofl/sedansc/OFL.txt\nsha256 466aaa3bbd245e4c91c4e82c0828efe9fcfd913f5b020d75f0918516c2540fa8  ofl/spicyrice/OFL.txt\nsha256 88ac81fcd30e64f6e6b91b61b159c9b700bb3dd59012b72ec61629abcfc7fba1  ofl/medulaone/OFL.txt\nsha256 1d567f7c5f579d9031ae5edfb0108b4681bdd2e036249b228cc2843d3f052a0f  ofl/redactedscript/OFL.txt\nsha256 ce78cc8de3f6edd2738e8c02f2079db7086c9a74314baa5854675f83c33954ff  ofl/kenia/OFL.txt\nsha256 76af3e9e5d8768b17647813a443fcf5df3eb3ced017ee285796625e714d5ea2c  ofl/ruslandisplay/OFL.txt\nsha256 6e54fc004ebeb61322ecab1d86334ebf69e7051632d48eca489beee505d70762  ofl/hermeneusone/OFL.txt\nsha256 8586a7e75681c7297af4cc0641eb2b29e882c5187fe189a1160eceb4e95d4163  ofl/fenix/OFL.txt\nsha256 d8eb8611f8c98d20cbf18a28425652d6022dc2a5cca15026b920f1f2bc92a612  ofl/deliusunicase/OFL.txt\nsha256 197c3f48cff4df3d768230e0bbdbc4305d8b8b9041ea6fb5e00872af66adc5ae  ofl/novamono/OFL.txt\nsha256 08fba9df5c9890f3ab00ee63f63e005ad93a23746f7484f5fe9501a1ad32730e  ofl/allerta/OFL.txt\nsha256 af88d31020bb48a1f78f4384249814d04a44d22feeede2ff4ae79fbb4fcf74da  ofl/rammettoone/OFL.txt\nsha256 397e83b05703a4240be51e2c3a2be1d0d7693d7a2d8b1ff367c26a2b9afc013e  ofl/singleday/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/cedarvillecursive/OFL.txt\nsha256 d416bc9437e1d7d8aba0613395ee49c95ce72d680672e910c6205b545cfcbad8  ofl/cherryswash/OFL.txt\nsha256 513346ac60af1dde9d4a7bcfad3f39909d5697373a8aa1a6ee4376e6d22d3cdf  ofl/niramit/OFL.txt\nsha256 0b1bada9befa95a40d55830fe83fc7f8064e245fea33bdf0f96f57848f3866fa  ofl/coda/OFL.txt\nsha256 2a7b0a41ef401e4e0e955280b07c0a2698932d56aad3181089bdbbaad5760491  ofl/habibi/OFL.txt\nsha256 2d62278530348951887211d79d1dba04acebd6ed3b1c413f6154702efea3ea62  ofl/iceberg/OFL.txt\nsha256 a20db45220b6c4dc9776f24c77dc9ec7a98977d8b3c65b03aabe66b2d08e0791  ofl/cabincondensed/OFL.txt\nsha256 fc1e501d419d84a8f1a800adae092045002d7141241f498237611dbb8ea763d7  ofl/stintultracondensed/OFL.txt\nsha256 9a51726e5f247cb1f07bb8f49c163bc3e9ddee5f367bb5a1871d09b854ed1b7c  ofl/basic/OFL.txt\nsha256 ce0023bc03e1428feb5abfaa939b601d2d827ee5a6c84a2657993a7b16c5290a  ofl/diplomatasc/OFL.txt\nsha256 e30f893523e50ebbe07acd783ae29c7d604e6208cae7646d993e8528ce13e35a  ofl/federo/OFL.txt\nsha256 9d96f445b6e9c701428811d0177f894874f8d6f07ecc30d568c506542368f3ff  ofl/sharetechmono/OFL.txt\nsha256 46239ba6485d28553fd944da4ad32a00d9c403aa1c3e111676b0b96fe458d1d4  ofl/averiasanslibre/OFL.txt\nsha256 5951473ab31533bfe1452bbcece47f237a5546c7e7d45ff1aec0289619623294  ofl/fugazone/OFL.txt\nsha256 aa5d677391db4e54ad324b6888792e533c5d800de7ab713302a2fc8bff2f4f6e  ofl/miltonian/OFL.txt\nsha256 e0cde1a4993ed689d463d5e2401f4a60c54cc48a14253ab0f8012d722c417038  ofl/mavenpro/OFL.txt\nsha256 c1eed37b6d213df4edf8f92ec7d1e972f751abd68ecd649b4f0b8e5d8e8561f6  ofl/yrsa/OFL.txt\nsha256 5bbeae56b9db61a9bf85b64d5ed9a74cfcf9ee3e9b005bc2906859ddecd5eaa1  ofl/esteban/OFL.txt\nsha256 7b826efb1b74a50b1c1aef0a1ba4530925b993ceadc3016d1d787c68a61649dd  ofl/tenorsans/OFL.txt\nsha256 28c6d2887c3dfa42488c5418c6c16ead580d33ff0afe60c05159689201f9ec63  ofl/jollylodger/OFL.txt\nsha256 ce0023bc03e1428feb5abfaa939b601d2d827ee5a6c84a2657993a7b16c5290a  ofl/diplomata/OFL.txt\nsha256 8f2e5a9b52cf355023104413827e17dd7126c5a3656492d45eaa1ceb270aa4f1  ofl/yantramanav/OFL.txt\nsha256 fe079cdbbad0f6520eb0a8235bce65b21596dd0c4c5a2694b3325cc87313b618  ofl/shortstack/OFL.txt\nsha256 018d17b5e04c0a217a21979fa6b6d77bd5a143a5f06ea2ea102e427abd1ebfa2  ofl/tradewinds/OFL.txt\nsha256 31c59bcdd538c113ef5c048f56827439facb12b7e5cfd158b04c83727edc453b  ofl/salsa/OFL.txt\nsha256 eeacf16032901d0ed0456876ec77b8f0fda6b3fecec7d972f8543eb602e6c30f  ofl/nanumpenscript/OFL.txt\nsha256 ddf311c28ddf5a5ad9747649837346b67bed9d356789c3072bb27dbce49e514d  ofl/ptserifcaption/OFL.txt\nsha256 c867d1a613bebc4932cf28c060fefb3bcfba3be56ed498b873c79f4eb786af1d  ofl/librebaskerville/OFL.txt\nsha256 694282197de3d750a43689dc64a8116cd19578cd516e7b2490c7b5362c064dbe  ofl/kameron/OFL.txt\nsha256 cb30d3086a8b3ce0b9e3690bf48d6620402b61160bc658076f95180ccd9e9dae  ofl/sourcecodepro/OFL.txt\nsha256 a40c3a6d0c968d3a10b17a2614606de6f20178deccc2447305f31fb106a57fb0  ofl/fresca/OFL.txt\nsha256 5d3457831b42632d958fe1a14a09706d8acb006486a5ca5b2b419cd61cb22e32  ofl/chelaone/OFL.txt\nsha256 6b53fb03a50914cc382f4d025ee595c17c43f24ae870f840bc51969d3e316c7e  ofl/limelight/OFL.txt\nsha256 574430e571a6928624f4bdf044420f7547a26309b7ebf6962296d33294e0a1e0  ofl/combo/OFL.txt\nsha256 fd20b82eb12d16ec31a58fc44f7e6c533b14b425b569d83f616a1f7a9a401e75  ofl/gochihand/OFL.txt\nsha256 0e74984817cdd51dbfbd8309022aa75f733e80dff0cb1d26ad2157e90446ba97  ofl/enriqueta/OFL.txt\nsha256 ddf311c28ddf5a5ad9747649837346b67bed9d356789c3072bb27dbce49e514d  ofl/ptserif/OFL.txt\nsha256 4e69611ba5017f1fde74c31d342f5c85604814b1b45387b9ab46205996dec38e  ofl/astloch/OFL.txt\nsha256 013e33b6b2919fd0ffbdde6080a1c0f4521689fdce0f4876a59cf49ff8ae31c0  ofl/geostarfill/OFL.txt\nsha256 14b3fbd06078a869cf2ba96e6dacb852d373703c86ca7ad54a4cdd6e20fbab19  ofl/knewave/OFL.txt\nsha256 a8103c045a88bf9b28dcd7eb60a6662008f49afc0f3721bc46aaf761fc0409e7  ofl/englebert/OFL.txt\nsha256 bd22e766af8f8e58eb520cb4fa73538826d04f7371b45e82295d22d1e32a4e58  ofl/gidugu/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/justmeagaindownhere/OFL.txt\nsha256 5fba78215eb4e42aed6cb0b5c5df52e0f71246281a866cd4493dfcfcbcab9518  ofl/playball/OFL.txt\nsha256 e75230ee246a04912366cd8d759d081200d80fb0756766c96dd52f73e8b40bed  ofl/romanesco/OFL.txt\nsha256 39de3de5f1873f89bca4af37823ab22e28e88d0d8f7fe2f07e82e9e6e9bf7b70  ofl/gamjaflower/OFL.txt\nsha256 244ca4ef7b106d8c660e9a00cecf5d581b6a222f447d7d59a8f61711b2ad3400  ofl/uncialantiqua/OFL.txt\nsha256 36e2f1debc9778bac79fac1a0cb5a5ef51c102f00b58ef7d8a05324144b68166  ofl/didactgothic/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/giveyouglory/OFL.txt\nsha256 638774cdf8233b5ddaf9ebee1821e9de1d5d59c335d8ee3ba0b47fb17833b502  ofl/glegoo/OFL.txt\nsha256 842b4f4605b32518a1269c4d030d719ea2c4c317d699fc4441d0219658e18893  ofl/seoulnamsan/OFL.txt\nsha256 a10a07aaa150c147fa3cb22e845013f38e6c2b45fe5ba32a74ed1be9d4c417ae  ofl/odormeanchey/OFL.txt\nsha256 a74380bba78a364ec70b3a5fb6a1161b83cb05cc3e75a0910afbd1b5aff4f9c8  ofl/jaldi/OFL.txt\nsha256 9b8405bf5f503f92401fc990f372b34d469670ab60041d5298d1015d3d0b45f8  ofl/thabit/OFL.txt\nsha256 7c05152b2380228795cb474819744653fb03ddbfe5990b912ec7d9a41387230d  ofl/asap/OFL.txt\nsha256 ca9fe3a0e10bbb082f83ecdc07f5f04845c4bd689c46456da3e6bae23e11aae2  ofl/inder/OFL.txt\nsha256 5b158abb3406e69b7408b562b7199f6ff55a41ea56e260b87176d693b0095e47  ofl/piedra/OFL.txt\nsha256 b7eae5e3c3447f70caa14e0c43f5e0d953f54ee59df406f6362863bcee1a0a95  ofl/almendradisplay/OFL.txt\nsha256 87b7d831a81fe8b37e7e6c672937493f710ff81883eee3adec7b5423297efd16  ofl/sharetech/OFL.txt\nsha256 4ec46c3e4469afa19f0156bac6917472974f9c85c189f9220cf8735d3e810401  ofl/kristi/OFL.txt\nsha256 93f60741563b4f51f2fcdb207fde72b2b23292a47022c729aecd998b360d8038  ofl/bilbo/OFL.txt\nsha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19  ofl/hindcolombo/OFL.txt\nsha256 afc1b710d644c1262e1765d2401abcf93a545a4cb051955e2243fbabb8164e25  ofl/carroisgothicsc/OFL.txt\nsha256 930fed5b06a415736dc3b4e5f4f01585523b672717564bf677f93966bcd57636  ofl/lustria/OFL.txt\nsha256 9a536e5a3b55c2605b0a553eed383cd3efa42ba48dc45cc6f0635b3c53ee791e  ofl/warnes/OFL.txt\nsha256 879ec56fcc9a961937fd24d542b3b7b3f2b8cb3236b7351e62d16719e25de14c  ofl/griffy/OFL.txt\nsha256 29cca754098468057880970c604e55c4e2bcb8479742e4130c94f2ddc0363f9c  ofl/sixcaps/OFL.txt\nsha256 67261c7ceb3e627da5c94d6617dac6da29bf36b910bee304a7680ad62e2c8b46  ofl/changaone/OFL.txt\nsha256 327bac41d89cf9f32e0efe353228018e1661cff458a5d4905714958514df7bd5  ofl/lalezar/OFL.txt\nsha256 525411e604e7a1d85a4cd42641869f94388f04a6ed77829d6c4edd7fd740ceab  ofl/ramaraja/OFL.txt\nsha256 3d08baba63f1f2427fd96dee8da30b1ef6c1421b3be0e1f07cc2a78abb27c91d  ofl/seaweedscript/OFL.txt\nsha256 4c0a1150a363b42bd8681ff4a00315ac49510a944c4c9978237ff8b90a8920a5  ofl/grandhotel/OFL.txt\nsha256 bc4c7eb365ea342b1a027fb8417fb0152f5d482a2e31c012fbfa29b668827b04  ofl/cutivemono/OFL.txt\nsha256 1818771d183d203703c4b134f028527b535810e2a0666c8fe2785354ddbef686  ofl/battambang/OFL.txt\nsha256 b7eae5e3c3447f70caa14e0c43f5e0d953f54ee59df406f6362863bcee1a0a95  ofl/almendra/OFL.txt\nsha256 9e0d3db586ba0abf5ca398683809dacdf4c81b2960f592bd085fbf206a67ddb0  ofl/sansitaone/OFL.txt\nsha256 fb1dbf3725bbdd389b2c569e0eed5091d8d10eed2833ec7efacfc3542e408615  ofl/scheherazade/OFL.txt\nsha256 9134ca6996bd33ea2022e109f13f20e29dee1dcd8b2e8878aad576d2ca334e9f  ofl/cormorant/OFL.txt\nsha256 156ea6985861158c7dea63ecaac4c78ab0ed737d168ddffc3e34c687985a033b  ofl/sansation/OFL.txt\nsha256 a9b3e7e1cf5735dc49d802b88b1858a2a50307ba2a877ddf3f0b27d8b1d0abc5  ofl/blackandwhitepicture/OFL.txt\nsha256 5fe7f3c9410c29534ddd9dfaf64d3994ed4236096d0d543ae69eacc3b25632b1  ofl/bitter/OFL.txt\nsha256 f6f60d5d4cf4f4b1fc4e41353c897a2f5a16e6396c0cd8fa8bdfd2f4586a9a68  ofl/alegreya/OFL.txt\nsha256 e88691a5e0a8a3f788f31db959701ec90a1d5e7505f1cc53c5663180a7d23c81  ofl/lohitbengali/OFL.txt\nsha256 ac55580be2df22a06d29a47501e2ae11e1d399620f5a779e17a66f016ba6d5ff  ofl/portersansblock/OFL.txt\nsha256 27d9af34210253e7ca1251fbace86c6f65b40031d6ce1a75493a1b2093631298  ofl/vt323/OFL.txt\nsha256 9452ef55386e77bd284ca466587d72802337621d7f10aa700e449753883b3397  ofl/trocchi/OFL.txt\nsha256 a9b3e7e1cf5735dc49d802b88b1858a2a50307ba2a877ddf3f0b27d8b1d0abc5  ofl/stylish/OFL.txt\nsha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19  ofl/hindkochi/OFL.txt\nsha256 3173acd82f8c6159b5b1037b539fcbd4edff68e65c2ea8b9412b5a5ca97b08ff  ofl/archivoblack/OFL.txt\nsha256 c832a4230a713d080aa2f2544d9a298ed911f689b2c48f7f276a0196b16d2b8a  ofl/cookie/OFL.txt\nsha256 ae28423a5e63cb65e651ccf62c9091b322fff1d2d4e87ad9f98b1096c2e7abb5  ofl/metrophobic/OFL.txt\nsha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19  ofl/hindsiliguri/OFL.txt\nsha256 8c22fb3866eaebd77a2cb8e8ecbb095381ff32300db57758326fef35a26132f5  ofl/ranga/OFL.txt\nsha256 d2875ded3e44e9ae53ea2b35e825dafffa19e82c5d14addb9f1150fcd7a3463d  ofl/mina/OFL.txt\nsha256 8242e7737bce317f7a7f2b887ac87f5bb21305ab96bee92aadc3febac16c35bf  ofl/voltaire/OFL.txt\nsha256 fca01a37b10879d7685c7d03fc5a04086b15cdb2cb4f870cb687aa5a9a0a1361  ofl/jimnightshade/OFL.txt\nsha256 2492bb8645caaf622bdc3e880cdc9b069921e7341346d7b193666c866a1935d0  ofl/condiment/OFL.txt\nsha256 e6ac721b16f309c89fb443680afda427ea34968bad190a80edf281d01d65fa99  ofl/andadasc/OFL.txt\nsha256 1e5d6660366ddcfca4f2fc10e2acfba9fa4d97d40aec80d7dbfd41d730a420ae  ofl/cinzeldecorative/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/coveredbyyourgrace/OFL.txt\nsha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19  ofl/hindvadodara/OFL.txt\nsha256 5c36e7ec460b285185ea23847aa1f508708d9ce15d5c055279defd022972f836  ofl/rakkas/OFL.txt\nsha256 0b7eae990329ac175a2e1c329060b3a4d6876e4e0cd7e5235511578352f7b191  ofl/biorhyme/OFL.txt\nsha256 c54957d55e7c9e66c28e474cd39de75dc044e8f69056788cae44eb78841ceef1  ofl/montserratsubrayada/OFL.txt\nsha256 fccf4916b5f84ef5f88d93fec464421aaf4121d11d4be8d74ee2d032f7661d6c  ofl/padauk/OFL.txt\nsha256 9ca8b9e5db7184105da255bb110023cf1cce6caa56186341bb7b09ba97b20ba5  ofl/prociono/OFL.txt\nsha256 0c3f4763f49c2cd37757a2856ad470aec6a416981ac6d6e3f900c1128be39de7  ofl/elsie/OFL.txt\nsha256 0d5fa0cce86012de872273700eef4fd162459e7c24a6a314911380627391071b  ofl/bigshotone/OFL.txt\nsha256 ca64dee162bf239c7b92d854d388bcd30552edc3ae1ef5e31714acda34c988db  ofl/jomhuria/OFL.txt\nsha256 bd77eae571de83ba3884c74c7983e8ac5cdf858badc36906179346dcd7e82454  ofl/gentiumbookbasic/OFL.txt\nsha256 2ce1c4fcf4ab9c8474d0824434497d4afa4425db4de5629103698b170ac4ee74  ofl/bungeehairline/OFL.txt\nsha256 9c56b4e2e4e922cc37e19e1a9e2e1128beaa17a812e1b67c8ac371b0fb57ae03  ofl/kopubbatang/OFL.txt\nsha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f  ofl/tillana/OFL.txt\nsha256 486c4d5b9baf0d0ba5546ef3c43fcfe22c062299ab6948045a43efffe4b0f74b  ofl/italiana/OFL.txt\nsha256 4539710406c656519f8ddc789056a7cd6f4fe66b44cc2f52ebca6e251bb26e13  ofl/imprima/OFL.txt\nsha256 7f55affd2bce8ed9be13297ba8df1a4a7e9835c2a006126dc2a1eb4ce75a7943  ofl/muli/OFL.txt\nsha256 867b506cb023eae20c1accde77b2e0abf7d8a9e2620da8dbebac9f7b1117ca0b  ofl/cantoraone/OFL.txt\nsha256 aa72b0185d828cb2fafa62a154e84bd3e20c88ada30326089bb20542b6363aaa  ofl/manuale/OFL.txt\nsha256 4664e83780a263c53dbab95d3590a5a9db914aeb9a3c78f7e7ad451f9151c998  ofl/spacemono/OFL.txt\nsha256 fc59ca3cd3bcb47bd4df597519111ec130c25cabcc57a8808dd2d243cdcec6ae  ofl/oldenburg/OFL.txt\nsha256 43c372f43d145c22e654781860506a75cb85b086dc76028a62a28a446506d253  ofl/italianno/OFL.txt\nsha256 a7fe1f3d23034092b015aaeb53d2ecbc9e592be96b10bdfbcf8700ec6a6ffc97  ofl/fascinateinline/OFL.txt\nsha256 d13a278247ce39695f5ea6b721103faa668083022c5280b78c6392263e473929  ofl/bonbon/OFL.txt\nsha256 f0be7437bbb8b91ad4a4f7a5f3d0020368e494a803d892df03e8886d51f2db3a  ofl/candal/OFL.txt\nsha256 a68d8ec6bea7f277053ae93bf563d4b97c233f09f8e79f86ffe5db66f31fdddf  ofl/prozalibre/OFL.txt\nsha256 b00c646b7d04a6da1665a148815b8c589c1e05ed7e1febf7ccbd91758747cb03  ofl/quattrocentosans/OFL.txt\nsha256 a3deaae17ab9a15dc3c2778126aa6f80d41d567741853f84b16a9e1318ed799a  ofl/koulen/OFL.txt\nsha256 50f7b09af5ff677f611a96cdf5eb916307c59b29f2e8144942718cb432a9bf6f  ofl/margarine/OFL.txt\nsha256 72a22b6dd29b6b0cdcc98de30701b46532c9f7314ee095df3063d10775dd70c3  ofl/trochut/OFL.txt\nsha256 325e890b8b26fe0a683c3ba24c506d902bdd7034d9c47bd7fa2bb72b5433b9c9  ofl/shrikhand/OFL.txt\nsha256 62fab0ba1d5593782cbf048da193f4b1edc16b817577a99d707827513ad80e9a  ofl/overlocksc/OFL.txt\nsha256 d941aa56e280b4f204272c4b1add01a8ebc7af3e8e69ba8ba9118aa2a5306dde  ofl/berkshireswash/OFL.txt\nsha256 9134ca6996bd33ea2022e109f13f20e29dee1dcd8b2e8878aad576d2ca334e9f  ofl/cormorantsc/OFL.txt\nsha256 36c285c5472c625901d4a13da7e31c5ea6126678d31d56cf95572c49f27c8950  ofl/passionone/OFL.txt\nsha256 fbc351e1b5428e4f45834647dc23a5f8aaa3e744e2f4117ca03c44f640b9a3a2  ofl/stintultraexpanded/OFL.txt\nsha256 021d5f1df697848da51620394659187be77cbe382ff2f896bc84ffb89c0c2d52  ofl/portlligatsans/OFL.txt\nsha256 85b700bfba1250a6f8bdf930cd7113faf3d8e9dc52cd89eb98c3ac8a038a4aa9  ofl/londrinasketch/OFL.txt\nsha256 c972795e48b096b6d4e3a947b0bb21c1baf1922a6e07ff9ada587c058f228740  ofl/coustard/OFL.txt\nsha256 eb4a7a082fb0e7dde0a8f975d33f02907ccbe40751c8115e790cf3679787d01c  ofl/strait/OFL.txt\nsha256 9b1cfccef4a7e19f90e2901f808f3aec4335d3cc81f978453ad0c8ded14447a0  ofl/novascript/OFL.txt\nsha256 43c89012c2b640187aae7e0c83d5ffa8381a0368c00e8426594358d44d3811e3  ofl/nunitosans/OFL.txt\nsha256 fdecdad755f4e5e95bee491c7521f31625dc08283562ea8579543c90430eb269  ofl/karlatamilinclined/OFL.txt\nsha256 5e80642a11aff2ead815949a8a929aff3fb7b9b6a24391406068a1b204dcc8ba  ofl/abeezee/OFL.txt\nsha256 bd77eae571de83ba3884c74c7983e8ac5cdf858badc36906179346dcd7e82454  ofl/gentiumbasic/OFL.txt\nsha256 f2fcbde4b8968400d661e7dcc23052b1885815c8e3b45323b26cbb833352f5de  ofl/timmana/OFL.txt\nsha256 c8af073a60e30b55ef5d0e4f80cea168e06dd65bdee7ec18c1ea8de8f7228780  ofl/strong/OFL.txt\nsha256 2ce1c4fcf4ab9c8474d0824434497d4afa4425db4de5629103698b170ac4ee74  ofl/bungeeinline/OFL.txt\nsha256 013e33b6b2919fd0ffbdde6080a1c0f4521689fdce0f4876a59cf49ff8ae31c0  ofl/geostar/OFL.txt\nsha256 e55c615ed00ce0054bd356041a41e5942b4a8cadceac1e32696ba2ef5f06f748  ofl/andika/OFL.txt\nsha256 4705fc9bceb299b2a951d23c321d31f3679871bb99ceadb978907704d211f4f2  ofl/pacifico/OFL.txt\nsha256 2887c5bb38abbde9ccc608c4dcc4b0dba0fefc0c74eec011033bcfbd3ffcb235  ofl/jacquesfrancois/OFL.txt\nsha256 99d67fff016522688b8f913377f8ae9f6da6ffeae42cf67c0e5e87cfb0928d33  ofl/unna/OFL.txt\nsha256 bba4a13f03d0fd5b476cc148feda6895dd8d65f34b2107ba9d010ad9539d6c0a  ofl/faunaone/OFL.txt\nsha256 842b4f4605b32518a1269c4d030d719ea2c4c317d699fc4441d0219658e18893  ofl/seoulhangang/OFL.txt\nsha256 58bbdbe5c48dd1d7cfd658425a455c29811181873d3a46a4932c29e5b0ec16e6  ofl/euphoriascript/OFL.txt\nsha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f  ofl/laila/OFL.txt\nsha256 17b90cece30db64934b7299fd76b033a3774c8a990e78badc74c59a5be8e0727  ofl/cairo/OFL.txt\nsha256 5f8ff4a3f951c104e99245bdb952be08c73369222048bbf19fa3bf7170d10949  ofl/sanchez/OFL.txt\nsha256 8eb1c1019fe7fe6d0b6e7d7bbbba1d9cbdd969d8c5f26455708f6cfb8a77284c  ofl/nanummyeongjo/OFL.txt\nsha256 942d51cf079299e83e9dd7a9a37eb92260524e8d1d576b2f0b3f7ca207c53f8e  ofl/newrocker/OFL.txt\nsha256 117fa195cff980e3b10fd8e8e21658c6ec954b0886647970a03c9694d3553b69  ofl/galindo/OFL.txt\nsha256 1d08c63944e639bbfe8a1b81e3c6a63836806c126b3573b9cda0db83fd27ffe9  ofl/athiti/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/annieuseyourtelescope/OFL.txt\nsha256 f2ab7e5c5c750fa03a8d8f64c72a089ed86fbd3dc172440fcc704b27816d5957  ofl/noticiatext/OFL.txt\nsha256 9a33b452a3107542c35fc5fcee80e4d8798c82aca071c2f6f58a0f8dc5ad61fe  ofl/cevicheone/OFL.txt\nsha256 5fb0694694dc307d1eb0121689395e634b6329ff545acc53f55ad66a716b3cf1  ofl/balootammudu/OFL.txt\nsha256 8f24842e9174beda18a556c2ae7d54f5dc444340c19a3a9ef77e23bca366adbd  ofl/firasansextracondensed/OFL.txt\nsha256 746b384383888d9325ed2fa9c40d2456b458aa190dd2b8c515ed4f02a1075bb7  ofl/magra/OFL.txt\nsha256 8f24842e9174beda18a556c2ae7d54f5dc444340c19a3a9ef77e23bca366adbd  ofl/firasanscondensed/OFL.txt\nsha256 fe9183a0b7c1ae626b14004cd533c89ec7c192aba017f81ab71ede910256abb2  ofl/abhayalibre/OFL.txt\nsha256 876db27db250a9b9c03fc2ef30a5efe1f37c2ed2686d368c3779583bdf746912  ofl/balthazar/OFL.txt\nsha256 4342add6f0f2261f8579f31c10a55938930559703eed18be4a33b74eb749d298  ofl/doppioone/OFL.txt\nsha256 d8eb8611f8c98d20cbf18a28425652d6022dc2a5cca15026b920f1f2bc92a612  ofl/deliusswashcaps/OFL.txt\nsha256 16a8be6ac4b009ba1dd1e17cea48762f4915609ea5dca1303f716cf63998739d  ofl/adamina/OFL.txt\nsha256 1d567f7c5f579d9031ae5edfb0108b4681bdd2e036249b228cc2843d3f052a0f  ofl/redacted/OFL.txt\nsha256 866669fde730bf2785f44905ec162f05f2b8d9f6dcf366aca99360fedbfe502c  ofl/dancingscript/OFL.txt\nsha256 008445a4d53fbd71bff9cf733bdfd841a1b15fb58ef3473f7bab4c456e3b2930  ofl/ovo/OFL.txt\nsha256 b7eae5e3c3447f70caa14e0c43f5e0d953f54ee59df406f6362863bcee1a0a95  ofl/almendrasc/OFL.txt\nsha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773  ofl/imfellgreatprimersc/OFL.txt\nsha256 95d23e4559ea8c6a36aa04fab56e1dca0780f5d93734072d4501023296543102  ofl/archivo/OFL.txt\nsha256 3747fdcbfe4f51d6a2f101c35105bacde3715b3c32b34b6b03e5fb37983f89fc  ofl/quando/OFL.txt\nsha256 38a83f1f8b6efc3ab354b8b6eed22e8524dc71280844dc24811d95ae27b34952  ofl/khyay/OFL.txt\nsha256 b8fb5cd1bafb52e652c733fdb75ee20c763e97acb0398f6b4bbe1d8ada0c07e5  ofl/misssaintdelafield/OFL.txt\nsha256 a3b0977c5c25101d45054cf9199b9127b05fddc79d4da7dcf400821824e5a6d0  ofl/radley/OFL.txt\nsha256 41f82bb4d24b304f30f7136bc47abdd083782e4265c984160f5649d1e78ea49c  ofl/montserratalternates/OFL.txt\nsha256 7c05152b2380228795cb474819744653fb03ddbfe5990b912ec7d9a41387230d  ofl/asapvfbeta/OFL.txt\nsha256 d3909465d5838d9d1c72b975ff1ed4f410a85dccd43801be525bf2b2bde89f92  ofl/snippet/OFL.txt\nsha256 2ee5e8e47cd7d08f60bb9555f72b25912c9e81b13f5bc9a0551ddf943da6ca98  ofl/mukta/OFL.txt\nsha256 f323edc1e5a6d8fa16120aa15367cdfb15468474cc621f9bda1a2f73c5d08d73  ofl/sedgwickavedisplay/OFL.txt\nsha256 eef925ad6afcbba33f7989f5ad826fd68d50cc1ab4d679c52927c8afd40bddf0  ofl/sedan/OFL.txt\nsha256 4281c00ab5b8f672fc8d686f48cb886ffbe900c8c9ee22473ca7e72e7cef8fbe  ofl/wellfleet/OFL.txt\nsha256 8b89f3af5fd02216793ff3dfe9a04dc22dfe5c213422ae21558ff1da6a1e94dd  ofl/cabinvfbeta/OFL.txt\nsha256 4bf7256c8ee73577ee5e26643d3247ec77017ca04489befd3e0f3412827729c7  ofl/laomuangdon/OFL.txt\nsha256 399b33eb38cdfc76b8665defa5f81d52e8193d630ad5858c893db6bc20031bc9  ofl/rye/OFL.txt\nsha256 aa5d677391db4e54ad324b6888792e533c5d800de7ab713302a2fc8bff2f4f6e  ofl/miltoniantattoo/OFL.txt\nsha256 8594350034ab1cb85a1946ef8852e69290255816c311450a66fed6eeda9d6292  ofl/anonymouspro/OFL.txt\nsha256 1e5d6660366ddcfca4f2fc10e2acfba9fa4d97d40aec80d7dbfd41d730a420ae  ofl/cinzel/OFL.txt\nsha256 351740da2d452b48193483f22f64918a6dfd64a7abe225c6187ad3f36e0d9cd8  ofl/postnobillsjaffna/OFL.txt\nsha256 64a73da7af818283168543e24bd214aded1bfec06f013bf9cebc20064a8560c5  ofl/elmessiri/OFL.txt\nsha256 4fece81b541808b40293b0cd3f5b1990274e1100e1c20455dc2987cd96639d3f  ofl/metamorphous/OFL.txt\nsha256 8d325681662a30f58f57c92ab656dcbc9679deb78a493e4c0eab75321b2df6c3  ofl/worksans/OFL.txt\nsha256 2887c5bb38abbde9ccc608c4dcc4b0dba0fefc0c74eec011033bcfbd3ffcb235  ofl/jacquesfrancoisshadow/OFL.txt\nsha256 aac8f0cda6159b7251d1034651bcb42e07611495bc8cd764c89d22f3123032f8  ofl/aladin/OFL.txt\nsha256 81d0973236b5b5709a80a217a330db36eabedf57bf4031de46b4660b69901234  ofl/leaguescript/OFL.txt\nsha256 5454dc5cf2f46a2005f42f13ee2a998c7d0afd7f556f32fda208c72b266f7adc  ofl/cambo/OFL.txt\nsha256 b2d4b0c773afce947728ab99fca43b242b7edb0da26fe29f60c7c2d5094ec23e  ofl/suwannaphum/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/labelleaurore/OFL.txt\nsha256 6939af7114f0a33c7e6142d4c1320d1bbde11aebe6d8f3c48fc5fb3e0f676a7b  ofl/jejumyeongjo/OFL.txt\nsha256 cbdf9d35f32a9a2f02fb23c8b89c115a5a8e45feaaa2266920c4594c83dd5ed4  ofl/tenaliramakrishna/OFL.txt\nsha256 95d23e4559ea8c6a36aa04fab56e1dca0780f5d93734072d4501023296543102  ofl/archivovfbeta/OFL.txt\nsha256 967d75b89eef1f8a0ba1f5ee7dfb13427621f9116c6e7878ca04da8c9aa8641b  ofl/mrssheppards/OFL.txt\nsha256 8af83da84dd4299842f871285a88049352ab301ffa1f233d2595b29506158635  ofl/blackopsone/OFL.txt\nsha256 548890e4083028f04e5feba04b6e00554654d840aab81c8664eb66c2216a571b  ofl/palanquin/OFL.txt\nsha256 c4cd9f38c3246ee6a68c264f017320dc1af09677d386166d8cda806d9a12e0d2  ofl/jockeyone/OFL.txt\nsha256 a36ab46c8b1a74a480a1c51d6a5af08b643e870c6d247f233bc97c97c8ad2098  ofl/tuffy/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/nothingyoucoulddo/OFL.txt\nsha256 b5c776129b160163c84620b35fd45dea45edf49789cda5a94c2290c230581e0b  ofl/scopeone/OFL.txt\nsha256 dd028a807788d5e22e9f8cc18f026cda23369954673658f2ecc7d30bdb364b89  ofl/sintony/OFL.txt\nsha256 8928e999ff156e35852ab41d7a906598a8285acd3bcd81dff67213a6cd98d43e  ofl/mallanna/OFL.txt\nsha256 473c5e3123102434d05c66a9fc8b19cf285a3bf71cd8a91a41acef44d1448e62  ofl/sevillana/OFL.txt\nsha256 22d1914919d3fe08b179dc31169fc743ca7eede7827b91a5d48c23c8cdc7cb81  ofl/anticslab/OFL.txt\nsha256 026610186158060ad351fb20cd1452def5d35b2531634c090ce8cd1d9e9aeaf2  ofl/michroma/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/shadowsintolight/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/architectsdaughter/OFL.txt\nsha256 61056041809e0ba18bf8b9d637a375ab1c725025428533d74d668d88b2cb8b89  ofl/simonetta/OFL.txt\nsha256 0a852a06f0256a6684662663ccb1d8e08d131abd1f70cf8d972a344cf31aa381  ofl/scada/OFL.txt\nsha256 f46c3ea04f38ea73c0731d73dfba3d7361d4b38970feb31a3558bd1b75e0656a  ofl/lobstertwo/OFL.txt\nsha256 f30a7045e4e21201182b2b9fc4e4b96189aaeaceb2c8e9b68d8bd3dc4e3c5a27  ofl/greatvibes/OFL.txt\nsha256 9bc1eb1c679510b32d2e3f5f4f3b47726b1657aa121494aa68ba0b124a3c3a53  ofl/ewert/OFL.txt\nsha256 1103d0731f1360eb156b0047a1337b2d62266fadcef1015d06f6263719c0200b  ofl/librebarcode39/OFL.txt\nsha256 359671bf16c00cae69cb66d041296b2adc7a4becd73a463cb8c5e101d97c7986  ofl/arvo/OFL.txt\nsha256 c09e3b81d9cfeec46bc29a3374000e8ad013d694bdf24a288088491dd4cd5c69  ofl/creepster/OFL.txt\nsha256 29bd0cfd0fb2a45f9b057c834a057724bae1f63b525a8ac83d3e7525706d9f80  ofl/inconsolata/OFL.txt\nsha256 85814924eca98e1fa530901cc5167d0012aaf31122f9570d7e9755443dd9335b  ofl/siamreap/OFL.txt\nsha256 223fa23e8419ee762c662e0faf912dfcf386fa7093ac9ff690e380ce1993ba55  ofl/asar/OFL.txt\nsha256 a0369b1d5f654110f2fe101db56a02d02806f1e609ab233368bc573ec45050e5  ofl/butcherman/OFL.txt\nsha256 4f8b437578b20bff261adfe6c02f63bcf7dbb6a45ab37804b3547e5d5f44927b  ofl/nosifercaps/OFL.txt\nsha256 793891edf1f4f4f35b52fcc9706b03f779c7ea18ab8e9e441242d63ef0279488  ofl/autourone/OFL.txt\nsha256 842b4f4605b32518a1269c4d030d719ea2c4c317d699fc4441d0219658e18893  ofl/seoulhangangcondensed/OFL.txt\nsha256 1c023b4aca0e441c55c45c86cdff57fa524a96778f291d9a29a4ad777b70e2e3  ofl/arbutusslab/OFL.txt\nsha256 de61c87e08286ad3215398340e9403125ab03c91b33bdf29de6d3e8a386d2d28  ofl/dangrek/OFL.txt\nsha256 53ad6a474f68ddfc3fe72449de3ede4d3f033b2f24b77833b1d56edf505486d2  ofl/sura/OFL.txt\nsha256 247edbf968c0a5b8defd6a9e420080a8bbca6ea002bfb326d12a472a6f95637b  ofl/cuprum/OFL.txt\nsha256 0623888cc2391c6c9853c04eafa7f687fef1a8328bbb848feab05d9e2a98764d  ofl/emilyscandy/OFL.txt\nsha256 1c43e70c49ef7a9b35fcb3758fec8ec5969ff1274c4834b4466b9014f3b9f55f  ofl/volkhov/OFL.txt\nsha256 cc31fe974951d56d542f33782d07b2d5577a4afdddba89744e6bd69bcbf3a853  ofl/karlatamilupright/OFL.txt\nsha256 cd354a6084383c50398fae709ebe3a5dd98b947c486c1fe9de5f89caf81f980c  ofl/snowburstone/OFL.txt\nsha256 8a59454b7f1cc0b1fa29805781769047e5c269aa629e3422c2d7fc04b89e5c1f  ofl/rosarivo/OFL.txt\nsha256 de71817dafdecfee21268b8c4f106146e1d00988c4fd6546b10445eb26b24cc0  ofl/expletussans/OFL.txt\nsha256 d1829ff3455bbf3b9d13dfb0a57758a863107c9108aab48558f26f37f1094180  ofl/firamono/OFL.txt\nsha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f  ofl/rajdhani/OFL.txt\nsha256 26e4c39c4905bd7f1068b0bab008f5a4a9b945e2d7fda31e52719fc5aa9655bf  ofl/vibur/OFL.txt\nsha256 49f2a11271968a2ce019a43bf5401d1593652a18f27ea59037ff5e39856d2df7  ofl/changa/OFL.txt\nsha256 1d08c63944e639bbfe8a1b81e3c6a63836806c126b3573b9cda0db83fd27ffe9  ofl/maitree/OFL.txt\nsha256 2758cf7a872827f39661cf8cc24188113c030447aefb5ca7145993650076ca8c  ofl/ptsanscaption/OFL.txt\nsha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19  ofl/hindmadurai/OFL.txt\nsha256 f354ef1e7256644b320c5e1d9a07a819c2e2b930166003c96680894f9fba81be  ofl/mrssaintdelafield/OFL.txt\nsha256 5c289da4a19f054ace8e31a144a6a254601898cd7faf9eaa301141afda0adbbe  ofl/coiny/OFL.txt\nsha256 0886960207bb5bcf81a46ce663bab6c52a742dad80ee2cff5cbcda6f1df88568  ofl/rhodiumlibre/OFL.txt\nsha256 8f94e5901c371537043e0c762c827ce33963e7bd186fbea0abafc035ef7120a7  ofl/emblemaone/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/gloriahallelujah/OFL.txt\nsha256 24af1fb3ab8dfeddc83162b7f3b6c1104149b6c3022f1aa948ef4f8ff7e6bf7c  ofl/poetsenone/OFL.txt\nsha256 f3ee3eb20a9d565bee2bbc0d616de382a113327d7506565b2f3d3bee5f489375  ofl/bowlbyone/OFL.txt\nsha256 70f664de65e7bb62e1ac728f20a9bb28de7fdc18be594186137a9e15ce9dcee5  ofl/niconne/OFL.txt\nsha256 e604b133509815768e6ec4738bb04844ce9a23e80099d2b61e5d75ef46acbeb0  ofl/ruluko/OFL.txt\nsha256 42ad5a49e171bec80308a1c9e8e66b03e638b3ea65af7fafa6fc0e42f45e7626  ofl/suravaram/OFL.txt\nsha256 4fe81901e6f84cfce1145c715e931352a9a12aa7ac75cc193eb523c0cb0e5eb5  ofl/lohitdevanagari/OFL.txt\nsha256 2937c7789b0e4fdeda6eafe93164a2ab36e20386704c4cb6f87b1deb620ec0da  ofl/leckerlione/OFL.txt\nsha256 91c25c350d3cac39da2736d74f7ba37ef648f5237a4e330a240615bc8d8c4360  ofl/ibmplexmono/OFL.txt\nsha256 fce9f9e2fb268507a89fceea0b3eccc044f39fc3492968a04fd9e04df5ae95fa  ofl/sourcesanspro/OFL.txt\nsha256 e12a3e737fa75c0ee072d965b6185710f35e38a4f7a0793ebc66ba14a216109b  ofl/meiescript/OFL.txt\nsha256 d2f9c74aba2716333b0a3d283083f9fdc93b2e060c5ae094c79e97e8cba9d7e6  ofl/squadaone/OFL.txt\nsha256 5d6517d497bea6116ed35079b30374043f6d90b19c8d97fc4e5ec48520d1e08b  ofl/zcoolkuaile/OFL.txt\nsha256 f8a20490ee8ad3adb2205ea44b279b19099a3a1d6b62849e90b4db20a77deeb8  ofl/brunoace/OFL.txt\nsha256 75b2a5f39a53b4cf9286eb3d2cc1f895a8f3442680013c77124121bc347a6448  ofl/lemonada/OFL.txt\nsha256 715ba72697e14daa9b29a333545f69bde7c497b9f77d0a2a4c4a5a752d961801  ofl/marcellus/OFL.txt\nsha256 1103d0731f1360eb156b0047a1337b2d62266fadcef1015d06f6263719c0200b  ofl/librebarcode128text/OFL.txt\nsha256 eba176d3ae86af6b41e9b744e4d18fb56e2a6ad671381bddb61fabb86b1d39c1  ofl/croissantone/OFL.txt\nsha256 12404fcefccc3cb964cb2406510ba679b30f7d7ae689db08df5b455ae24b3feb  ofl/paytoneone/OFL.txt\nsha256 e2a176ce310235bf281f1124454e21331390ae1b4c429a2d80ae642d333a5a7f  ofl/frankruhllibre/OFL.txt\nsha256 2d83a49d05906b5e23285168e72c0d019fc15e3ad110376f640feeeda34c27d1  ofl/hennypenny/OFL.txt\nsha256 d7d8074c2dd46804990c184e25849947ab76c5ac7607fbf3966543455769bb73  ofl/yeonsung/OFL.txt\nsha256 13831d02389d917d22fcfa6c79f98f8acbf61d230add0e73a4d4dc5f3bfb9e56  ofl/chakrapetch/OFL.txt\nsha256 c39e284759a441660d4c4d852c537e271d0fd5c301fe46d065a972b6ee144ba8  ofl/aksarabaligalang/OFL.txt\nsha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19  ofl/hindmysuru/OFL.txt\nsha256 0da6a3e5b24a9fa04085c20a2a1d3101eeb1e0bff56a2291f407187e1b2adcf2  ofl/mrdafoe/OFL.txt\nsha256 a815f65bc72d90494b01842d3171f7cb0f9f935e023d9cc260904d221ef1064a  ofl/b612/OFL.txt\nsha256 e2f2dc7a667954c16a919acff5351e8ea89813d10f5a7504e1f4668fffbfa14b  ofl/barrio/OFL.txt\nsha256 8c495ddd455def58a45310376a747bb61bf86e4b071cc527b3618bccd3ef00fa  ofl/chauphilomeneone/OFL.txt\nsha256 b687f920fe20fe48d8f7709421e5deeb4becea295c80ce62aadcffc54132fa1b  ofl/stalinone/OFL.txt\nsha256 a90a8ebe28f3c2905a44557166010a3d219ffcce1703c3c3280ea8728d5e2ebd  ofl/heebo/OFL.txt\nsha256 c267a00c9476c78a2336d7b372b536885b8b24173a29ed53496f67a742c14961  ofl/alefhebrew/OFL.txt\nsha256 2cd51b11e821dad2fb7acc54d68bd9a139fc7a1207e17c432ba9ce49bba3d493  ofl/fasterone/OFL.txt\nsha256 ca424122f42a8d8442bc4cfd902f5f027ea67b5417705f5af1d1235927781720  ofl/amethysta/OFL.txt\nsha256 bb8fac04b8535d39fb9851c9d886248d25bc0c82000066c92dd577c3369f512b  ofl/chenla/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/lovedbytheking/OFL.txt\nsha256 53a9ce47085d9fef613c7ecb3730dc80d25962510bbea231b89564f58240f251  ofl/gaegu/OFL.txt\nsha256 9d96f445b6e9c701428811d0177f894874f8d6f07ecc30d568c506542368f3ff  ofl/share/OFL.txt\nsha256 9465823369fbe1ae0b5a3065021d53ef8c56e113e664229455dc80b237fa6a07  ofl/nobile/OFL.txt\nsha256 0dd8e32457e18621737b593ab0fac49905cd948a078ed0e64f4890df714a1dfb  ofl/amita/OFL.txt\nsha256 791936b10381b512512317572fb5eee91bf503344d52c37335e402fc1cf19992  ofl/reemkufi/OFL.txt\nsha256 898a9cf80636e86d6b6009b96795fda29e431ee701c28c36f274a7e8a7d8246b  ofl/rubik/OFL.txt\nsha256 5fb0694694dc307d1eb0121689395e634b6329ff545acc53f55ad66a716b3cf1  ofl/baloothambi/OFL.txt\nsha256 382232d1add5623ba5b06394afa071f4eeecccb6d2b2bd02cfecff4a8a45065a  ofl/fondamento/OFL.txt\nsha256 0c3f4763f49c2cd37757a2856ad470aec6a416981ac6d6e3f900c1128be39de7  ofl/elsieswashcaps/OFL.txt\nsha256 d849309d514833fe3d7a610e10f6cd5d99b4f9552bfa304969acbf89c66e4422  ofl/smythe/OFL.txt\nsha256 53f9c99fa3d47f7d632a42ee7bab4a834a60a744f6026d676c3a223cef2b2ef3  ofl/vollkorn/OFL.txt\nsha256 a1077580b649c7b0e05ea0e9369d48687b4ab1c585573bf86b0dcce7dde177c0  ofl/junge/OFL.txt\nsha256 a9b40759b5821a0c2ad07cbd2c2a61dca4b3e222e6370a7d5bfb6b373bf4fb10  ofl/sunflower/OFL.txt\nsha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19  ofl/hindguntur/OFL.txt\nsha256 84b11cc0aac8fdb93af94872bc4b8f015caabf4919db63ab7f916ccff8e52f56  ofl/josefinsans/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/dawningofanewday/OFL.txt\nsha256 f27cbf1055db7b9dd80bce5cd12b462f2d9ed7313d84dd8bfef1ddd2b61bdfc5  ofl/chicle/OFL.txt\nsha256 aba8997e16b1e3888c6e855ba883c70d96bd4375bff8cb9c7ce0f097200f74b8  ofl/abrilfatface/OFL.txt\nsha256 8f24842e9174beda18a556c2ae7d54f5dc444340c19a3a9ef77e23bca366adbd  ofl/firasans/OFL.txt\nsha256 d484e0dce424a9e360adabb568b6773db5f1566df71ce3e9dcd66a6cc2c38d33  ofl/ericaone/OFL.txt\nsha256 1b3b78123c94dcbc9fd4ec174317336c8c93423da62dc946b8852553cb13ddee  ofl/economica/OFL.txt\nsha256 74584d937293a9cacdcd2eb05851b71aa1527901c18b87961d2f877c77a1b486  ofl/kanit/OFL.txt\nsha256 a6a74417db7c37f69495da556a3eb86a22a784ffb0131e3e0a5a47ce8d7fa5fb  ofl/shanti/OFL.txt\nsha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773  ofl/imfelldoublepicasc/OFL.txt\nsha256 963f283b5410c7df62067a35cd7def0802c583a880e7cd7e326832ec3985ec87  ofl/spectral/OFL.txt\nsha256 11bdf9c7abd81f46a88b0b017d78a0e51f451e9dc0c2272813aa9f456ee886ca  ofl/kiteone/OFL.txt\nsha256 6827fa45930d5847fca5b3d3898b3d87a229fba772a5b6c5bc33bf73ec83478d  ofl/khmer/OFL.txt\nsha256 5ae0cfa62a70251d9a2c3c5430ed3bafa480005f23e4b9525488f2318e5c10ca  ofl/mrbedfort/OFL.txt\nsha256 34b8afbcab7508bea23847288332a8c05a507364ca6f0c8756ce560d7d59d506  ofl/mada/OFL.txt\nsha256 b67eed9578defb59cc4ff4b58428fb816786e499e84cdeafca54723b055c169e  ofl/viga/OFL.txt\nsha256 afc1cda4eedcfe27c8cf30fe3e9879587cb43cc2882d4cb91dd3e3fc9eecd0bf  ofl/farsan/OFL.txt\nsha256 cc8c0c3e81cf543e190f128b83ba7c30959f15865c14dd972fca4917faeceec1  ofl/encodesanscondensed/OFL.txt\nsha256 9ca8b9e5db7184105da255bb110023cf1cce6caa56186341bb7b09ba97b20ba5  ofl/lindenhill/OFL.txt\nsha256 a89ac8075be60f2beba79bed3fa253415a373dbdc3bb108b23f4854d0dd495b8  ofl/pathwaygothicone/OFL.txt\nsha256 4b255eb44f613a8e426e195f0d0b7e10fcba1af7eb6047d9a7f4f3c449940e19  ofl/hindjalandhar/OFL.txt\nsha256 f22a2beea88d631a620b15683fd03e79f13ad3297ad97fa5e42283c0b1a3a038  ofl/marckscript/OFL.txt\nsha256 faf47a1ceab38b07205b9d58fbbf9ac39772ea47cc731aca7816276da7226a22  ofl/terminaldosis/OFL.txt\nsha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773  ofl/imfellgreatprimer/OFL.txt\nsha256 d2f87f90d108a947f98c030d9d8e4bf27e761ce83f222453b9a7230c5fb309e1  ofl/novaflat/OFL.txt\nsha256 2da0fa5707f1fab1c802969b098fd1b92ca0b3b233a80e27fca416647c064dfc  ofl/exo/OFL.txt\nsha256 f9e5dfcdb2947c0db70465668706b0617cd052b6f86e582dff8741d9e5cded0a  ofl/yinmar/OFL.txt\nsha256 bcb0bda74430ccc281a616a81d0a287fed5a423815b00b222e0b7f603f85b26f  ofl/caesardressing/OFL.txt\nsha256 a94cfd8d1f5c33f9a7506def359b907f3313f7008bb57fc893985963cd342f8f  ofl/arsenal/OFL.txt\nsha256 52caec7d90533523fa7da64e95faf90ea32a663ce21847a39234b61e18d25044  ofl/bokor/OFL.txt\nsha256 ef0bdccd20de76d517fb3939161d05ecd5808382fb8fa82cde5fcdb3adcb8029  ofl/engagement/OFL.txt\nsha256 0d75673e4c98de3e11337dbd90b05d0232edfcade5c1c02fbc0118c85aea25da  ofl/macondo/OFL.txt\nsha256 9cd20277e2c89d47e3997435e3a16539d20173d850fbb42474990f71642e473e  ofl/matesc/OFL.txt\nsha256 a7ba785ad99b6eae0444ab89910e512d4af9865937fddbcb5c72c4f59f55d6ad  ofl/merriweather/OFL.txt\nsha256 010cb216e8f3fbb2836fa3f38787a412b749352de546797f57c03c3bcfe46b1f  ofl/nunito/OFL.txt\nsha256 91c25c350d3cac39da2736d74f7ba37ef648f5237a4e330a240615bc8d8c4360  ofl/ibmplexsans/OFL.txt\nsha256 cb8bbf7a86eefa8c146f24ae5be74fffa887ba83719ab3c87036be8e3d0191e2  ofl/montaga/OFL.txt\nsha256 1103d0731f1360eb156b0047a1337b2d62266fadcef1015d06f6263719c0200b  ofl/librebarcode128/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/overtherainbow/OFL.txt\nsha256 3621f156cc7a26e0a9cb413332e0bb35a0e76b36dbfe0b1c885b565a7bf3051e  ofl/drsugiyama/OFL.txt\nsha256 fbb941b371c6348ee2572ce8c78fb66128a61885f960dec1906c4e44ca4b4d3c  ofl/reeniebeanie/OFL.txt\nsha256 9e19c0d2e7e7adcbe9dfd0749e34dda41e7e356e0f2cc082d61d2fc9b6e0cef7  ofl/gfsdidot/OFL.txt\nsha256 812fc4af0c63d31e0e81cc153af74e397407b0630e918b8b965bcbb192bc0656  ofl/artifika/OFL.txt\nsha256 e8ad3f3de5baeff6bac6e711d8c406e0a6b8a61d2944741532d8965d893a2681  ofl/pirataone/OFL.txt\nsha256 9134ca6996bd33ea2022e109f13f20e29dee1dcd8b2e8878aad576d2ca334e9f  ofl/cormorantupright/OFL.txt\nsha256 65f43260cf7e66b57ddca8d148384a6602e2c06edd389a8b3cf388045127b47d  ofl/lusitana/OFL.txt\nsha256 518962c41d4a5e96b0016bd8d8acc965413ea1a0102467e4955931e702b14a0d  ofl/iceland/OFL.txt\nsha256 2171558d2482764644a2f793696fa2e48c361730ecc87686b9a29082d6daeb10  ofl/khula/OFL.txt\nsha256 d336c098ea798bf14de111cd90dff7d6bc340852405246511345d0f8564fe76e  ofl/fingerpaint/OFL.txt\nsha256 ea274e87939d38032b31fb741af75bff9fa3f8d4a8b652265f9e0ce1ad7e9f80  ofl/asul/OFL.txt\nsha256 eb1992aec1cf892ec94ffc116d79b62c7cb03dc108141b94a57a4195d210b514  ofl/meddon/OFL.txt\nsha256 9b584984f9db0ee30347391a76eff9c0a6b03dc450c3c6afe3757a2cb3a4db87  ofl/tajawal/OFL.txt\nsha256 1dd84b611f4bed7f9ff9089e76a96337b187e6f283a4ab33bcb987f844f2c4db  ofl/parisienne/OFL.txt\nsha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f  ofl/hind/OFL.txt\nsha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773  ofl/imfelldwpica/OFL.txt\nsha256 de08ff7a460541753999b1208f1254f1d31f16b421312aca4d4b8179d997de38  ofl/aleo/OFL.txt\nsha256 7706a84d7e49e2273877106334a1eded8ae89fb5839fb81e0f2bb27c846f667e  ofl/lora/OFL.txt\nsha256 cc31fe974951d56d542f33782d07b2d5577a4afdddba89744e6bd69bcbf3a853  ofl/karla/OFL.txt\nsha256 0409c6582424508453ce41648067efaacf0c790622918493d8f1d934bc5329a0  ofl/bigelowrules/OFL.txt\nsha256 9e2d92fb24b4a548ab030c509ba88267e224f2523728ee9bb35cf334811106bd  ofl/exo2/OFL.txt\nsha256 f480fd19e7018942ecaf460f7a4ab9ccee0aec579abcb07d559dbede913864c6  ofl/alikeangular/OFL.txt\nsha256 6ea7a3ef1d07feb592693f3f22c26d0b09321ff81814292b49be99888d0da9d7  ofl/ponnala/OFL.txt\nsha256 0b7eae990329ac175a2e1c329060b3a4d6876e4e0cd7e5235511578352f7b191  ofl/biorhymeexpanded/OFL.txt\nsha256 21b54eb0d7513524798a00dfbaf99a02c003a0012a728cc5f0e02d24c50482fb  ofl/caveat/OFL.txt\nsha256 adadb8d5d34fe2218dca0f4a4919a9b6f81dfaebb289e5446ac7b3063d6965e9  ofl/tangerine/OFL.txt\nsha256 16741ac498178f645283cfb45b7a487b6d361b5de5730c5ea729f056f414f6b0  ofl/ropasans/OFL.txt\nsha256 1e5bf8207a40678bc401e2e5456d0db1f2a183b550a30976b48dcdd6a4e4c46c  ofl/caudex/OFL.txt\nsha256 6f9e3a1c51f617e7b110862426204ec7a56d8c6d2f731373b5de6b8d069099b6  ofl/ebgaramond/OFL.txt\nsha256 c2368518f12463a93cfed44e1460f36085dc60df06f415ee9b0319809987ccce  ofl/frijole/OFL.txt\nsha256 5f247fad3e8a86b6c0779dff09277047c1ce2b0b7580a1093347a8af755352ba  ofl/sawarabigothic/OFL.txt\nsha256 6627b9c2c8ff8e0c6ef23f1b0125dd5b293320c10c916d402fef64916c296d0e  ofl/kreon/OFL.txt\nsha256 723764a50d4e6985dfcbd75fcb40dbd3abab37ba25ae626486d4a32084854487  ofl/kdamthmor/OFL.txt\nsha256 846ce83956a732edd57b74d9ba988d58abc8c8e6d0926859559318ce6aed139d  ofl/mclaren/OFL.txt\nsha256 ba01480319f922ecebbc73f1a523e7f8876e92b16553a32c494bcd3f6f5a27fa  ofl/ledger/OFL.txt\nsha256 c3bfad2900a83f571d5c984d490d51c56aef14806c28dde38125593e1e71daca  ofl/mrdehaviland/OFL.txt\nsha256 12af42b715a3901bfa7add1351e45b6ce22f3061555d52db45e963274c349360  ofl/arimamadurai/OFL.txt\nsha256 aa8a8196a3e22c3bd985e33cd3245ae9a38accba5e79fc0e3b292612a8d6b337  ofl/miriamlibre/OFL.txt\nsha256 3169e7e0e87168908218f11d660a52c0b81b5952fd73918a596e70721d68d3e5  ofl/inika/OFL.txt\nsha256 e711c816f7de931244976f51166baa15446fc307e5d0ea04fdca1bc2c04afb1c  ofl/nixieone/OFL.txt\nsha256 1ba345a91338581e5f8fccc3e37e447ddea5b99ec9caec1b76c7c39492387d2f  ofl/signika/OFL.txt\nsha256 b01cec9e5e2035b70a6aeb61c673d1f6d5c91539845be07733bd9880fddeb9f0  ofl/kadwa/OFL.txt\nsha256 d7577acbab1d70f2e6bd1b21d8f61db189d6aabe6375bc2d96564b8d94031664  ofl/stalemate/OFL.txt\nsha256 5946eec3a7d3bda02825930156e4716198e7753641dd3303a3e8c386c8011909  ofl/eatercaps/OFL.txt\nsha256 ae6de2f6fc00f76cc7eb0d97c1ae5e0b7ec734f20ad7f58cf4c74738dc822d21  ofl/chelseamarket/OFL.txt\nsha256 860cbfdc9dbc3f0e8d35af80c31e8f20945bff393d4f483dfc157469e01d321c  ofl/gorditas/OFL.txt\nsha256 9a2d8c5a3de0a6e62432322115dce136139948411dba33cd86525c0a02749fb8  ofl/unicaone/OFL.txt\nsha256 4fe01b13ffb41faa8f030d84843a95dab32792dfeeca7c072abbfd3f4d6896ad  ofl/audiowide/OFL.txt\nsha256 173ea2d0bdda981829719623c35699e8c0e4aa508e0af12817ad7ccbfa4c6137  ofl/originalsurfer/OFL.txt\nsha256 1d08c63944e639bbfe8a1b81e3c6a63836806c126b3573b9cda0db83fd27ffe9  ofl/trirong/OFL.txt\nsha256 58bdc69f4c6177125c6e7cdbc78f710f5f9952f11bba7bd5b17bd7ef169d731f  ofl/goudybookletter1911/OFL.txt\nsha256 2950994bcfb8e903f0539d28a8ec4af077e0aa1fa7946c33c912d2d6969c2971  ofl/glassantiqua/OFL.txt\nsha256 7344b8b8c97c4f88c0ff8bb72bb024bba72f404be1c740b6596a73ed15d28df3  ofl/vampiroone/OFL.txt\nsha256 cacad5bf45bf5c81f4b6cbd114261bc8a08f6110b66a4c6fad8bbc16618a3096  ofl/daysone/OFL.txt\nsha256 0677891e6a143f297350d260ad766ad33bfc18ed5fa4f213acf648d6b597ec1a  ofl/alegreyasanssc/OFL.txt\nsha256 c8155eb9337078a9ea9f1e576ac813a03030ca43e2694593e90cd4fee6fce937  ofl/sumana/OFL.txt\nsha256 95803fae1b063e592c67b5867f1f36df1df526e5ebf33c6cd4d4afa31a9d5586  ofl/sitara/OFL.txt\nsha256 c254ae01c407f4a2bd0ad163e4c1a795d57ddfa8967c21b8a28c250b44d13963  ofl/sawarabimincho/OFL.txt\nsha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773  ofl/imfellfrenchcanon/OFL.txt\nsha256 25995bcf8e8ddea1aafa5449870567cbbeae7e26b27ba30aca5642f2c02e9757  ofl/quantico/OFL.txt\nsha256 455755e2e7ce9dbac6beb3729c97c57d6f74a638dcb5be548ec953021fbdbfb3  ofl/ntr/OFL.txt\nsha256 ad6f73fa3edb7aea340aadbc63c0d7ef7663abed82664432ae09a6b377fa313f  ofl/librefranklin/OFL.txt\nsha256 581f08727777cb2a1a1ec95c0f981ce64fb1ad4354f78a0ac4f3481afa605577  ofl/moulpali/OFL.txt\nsha256 4bf7256c8ee73577ee5e26643d3247ec77017ca04489befd3e0f3412827729c7  ofl/laomuangkhong/OFL.txt\nsha256 08fdc7cbd92b9bbc4d41d0945ae7f25450d91c5fc8c66c68df331af3505e4ec3  ofl/rougescript/OFL.txt\nsha256 694d5c15c1dac5e26653e18b94394d911e471549ec9b7d6247ade62e486b4915  ofl/asset/OFL.txt\nsha256 bddfe669338d0dbc24c15ccd31dbf5c101a213da38049c24baca9ccb7fde45a4  ofl/wallpoet/OFL.txt\nsha256 2758cf7a872827f39661cf8cc24188113c030447aefb5ca7145993650076ca8c  ofl/ptsansnarrow/OFL.txt\nsha256 3cbf579238e4eacd90ad67883d971aa346ce8990d658635f78f98d608a6830a2  ofl/zillaslabhighlight/OFL.txt\nsha256 87000f71a897c8c130c7777d058c5868f84316f99a32644b3bf595cd11edeb12  ofl/sancreek/OFL.txt\nsha256 08fba9df5c9890f3ab00ee63f63e005ad93a23746f7484f5fe9501a1ad32730e  ofl/allertastencil/OFL.txt\nsha256 9608d22ae5c586628c9904e773b7c6a6520fc16e1492ebcb5ea55d9523399964  ofl/anton/OFL.txt\nsha256 f3758ee70600ecd5450f01ea373204b202e048d0454c9db2d1175c5a5dd1e92f  ofl/vesperlibre/OFL.txt\nsha256 e43f121c788cca4a14049e58864e28021174b055710ba38e0964e816dbf905af  ofl/fruktur/OFL.txt\nsha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6  ofl/notoserif/OFL.txt\nsha256 a1580ba69a8d706bd95e1e72ee0b5cfda0a478fbbab6a4af13b4a9e1b28faac0  ofl/revalia/OFL.txt\nsha256 f323edc1e5a6d8fa16120aa15367cdfb15468474cc621f9bda1a2f73c5d08d73  ofl/sedgwickave/OFL.txt\nsha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773  ofl/imfellfrenchcanonsc/OFL.txt\nsha256 0836fd874230b17f840efcf7d3bb529f5a7b5befbfeef94478519cfe2d8551c2  ofl/courgette/OFL.txt\nsha256 e3ed3ad6cb257e16dc1789900707c5cd1cdef2d60d155389342604991cf693f9  ofl/bahiana/OFL.txt\nsha256 391ac3126dacc95b92a8f3408467879edb3245344bc411530a30d5aada52df92  ofl/gugi/OFL.txt\nsha256 88dcde7d08e509a3eec64886292a36cbd58ed9bb52f37f91f55656fb9d21ddb8  ofl/supermercadoone/OFL.txt\nsha256 41423e9e1d0ea79d0e78bd5fe9e0b27f4c23140706f5dfbfe116839c83aae91c  ofl/charm/OFL.txt\nsha256 43186c592361336474683e302dcc988831a53857bef188c4466f6b45dc238f84  ofl/fredokaone/OFL.txt\nsha256 a21fa252efb7a1ff84de6a36df4386959668aa046f28161b4047829f7d9cd1b5  ofl/damion/OFL.txt\nsha256 842b4f4605b32518a1269c4d030d719ea2c4c317d699fc4441d0219658e18893  ofl/seoulnamsancondensed/OFL.txt\nsha256 bfc205682f5454b42a732ec857b665293ab8bc6f0ee901a0967219ba7ffdb190  ofl/gfsneohellenic/OFL.txt\nsha256 59b91c9912b80714852a43897cbc9414d6457e22072dc99a4cea6e2bb4f3c65c  ofl/freehand/OFL.txt\nsha256 8b89f3af5fd02216793ff3dfe9a04dc22dfe5c213422ae21558ff1da6a1e94dd  ofl/cabin/OFL.txt\nsha256 b598b7fddfd578950aa1fe6e0e2607b779abfaa686b83af8ec65c860f646b2cd  ofl/rumraisin/OFL.txt\nsha256 2bd35914efa381c80f9fb62d6ea7d736d3c0739196a3783c3122593c3408392c  ofl/gurajada/OFL.txt\nsha256 5625e91bd7c2a45c8b9f59106d587bd025470b462ea901df691defe0099621e1  ofl/taprom/OFL.txt\nsha256 37d5360d8d2433689e78302a93cd88e9add8a2294046476625edada2d4328deb  ofl/averagesans/OFL.txt\nsha256 f8e2b58dd7a8c8e21e5d744b45876bce7e010a647c071c1ed42ff0e618d4ea59  ofl/frederickathegreat/OFL.txt\nsha256 5fb0694694dc307d1eb0121689395e634b6329ff545acc53f55ad66a716b3cf1  ofl/balootamma/OFL.txt\nsha256 09685e225ba9b697b2ccd2d4098cac5ecbed0679960605258a271af60749887b  ofl/francoisone/OFL.txt\nsha256 39de3de5f1873f89bca4af37823ab22e28e88d0d8f7fe2f07e82e9e6e9bf7b70  ofl/himelody/OFL.txt\nsha256 08a12877eda24767239f26b527bfce0c515efaf623c66da6baad92a6d5315e9a  ofl/content/OFL.txt\nsha256 0e2ccc5da1dd979f08ba82bca2fb61592506a1e58d3cbfc26d904f0db71bd812  ofl/saira/OFL.txt\nsha256 d8eb8611f8c98d20cbf18a28425652d6022dc2a5cca15026b920f1f2bc92a612  ofl/delius/OFL.txt\nsha256 1d08c63944e639bbfe8a1b81e3c6a63836806c126b3573b9cda0db83fd27ffe9  ofl/pridi/OFL.txt\nsha256 c1eed37b6d213df4edf8f92ec7d1e972f751abd68ecd649b4f0b8e5d8e8561f6  ofl/rasa/OFL.txt\nsha256 4e66943af352059c059dd658774f25fbc831f1ad478f9f0890c06ecc2dd324c7  ofl/metalmania/OFL.txt\nsha256 f5b03ea0b27c7f5afb9702771ee57679ae8ba6b471b6ba9e62d985d3256f1929  ofl/playfairdisplay/OFL.txt\nsha256 593f0bc55c75b673772b378eaee314f128283745c4bb1cfdb9b8012a3b6c46fe  ofl/skranji/OFL.txt\nsha256 46239ba6485d28553fd944da4ad32a00d9c403aa1c3e111676b0b96fe458d1d4  ofl/averiagruesalibre/OFL.txt\nsha256 14d28541780d90f6577bb7abcc6f005bf6969614294e75c82abb8758a696ad46  ofl/quicksand/OFL.txt\nsha256 5fb0694694dc307d1eb0121689395e634b6329ff545acc53f55ad66a716b3cf1  ofl/baloochettan/OFL.txt\nsha256 35dca6122235851d236bd861124f4a893d409eba021cd8c6a292a19df0f4640d  ofl/codystar/OFL.txt\nsha256 ab721b35816e470fb11619ad3705f75d08dccd0864505e3d782e94fd937f6620  ofl/allan/OFL.txt\nsha256 d9cdb075679d15a99bab2a8541b9c4fdc71347502111fbe9affd1d462219d96b  ofl/indieflower/OFL.txt\nsha256 1313ae342eae4e1810304b6cd32f6815dd11b8e45812a2af98e58b6960684fa0  ofl/petrona/OFL.txt\nsha256 1e4015251ca58d4f349b4ac930259c6f3d6381ce68f8b4b27d54d53f8f63f972  ofl/angkor/OFL.txt\nsha256 46239ba6485d28553fd944da4ad32a00d9c403aa1c3e111676b0b96fe458d1d4  ofl/averialibre/OFL.txt\nsha256 8e28b778b6e1a7ff9ca72f4dee2d53120aa2856dc1bfd0be44307e365b0e45bb  ofl/cardo/OFL.txt\nsha256 a02e8715fcdf3325c474b7209399f50230897bfa828fe4eea2639ced1a1d574b  ofl/blackhansans/OFL.txt\nsha256 d530c14e9cc263c567b47742ef20df2a41374f00732ba4f290f52adad428b1a2  ofl/meerainimai/OFL.txt\nsha256 2e2fe5f1d8916a5160060594a96c1a5116406d26847afdbd09618481e2abd6fc  ofl/denkone/OFL.txt\nsha256 56c4ff36faaaf336bc5fee659ff6fab2413d67499cc22acc29079b3892d8931b  ofl/miniver/OFL.txt\nsha256 0d75673e4c98de3e11337dbd90b05d0232edfcade5c1c02fbc0118c85aea25da  ofl/macondoswashcaps/OFL.txt\nsha256 742a6a4386db47a2987c7c3b4aeedfb5adedfb3356c118de450a664735686535  ofl/graduate/OFL.txt\nsha256 9e53298e3629e00ae4c31531cca09051ddaa654a5de4f7b55e596132fff86e1f  ofl/dhurjati/OFL.txt\nsha256 df9fcd8f62ae79aba7fa5b0563a08dfede1fa0909d668287d70c395d88f5fe02  ofl/fjordone/OFL.txt\nsha256 02faa476b17db0044d0c502a3ce12fdc81eeeb9bd618e6a005407c79d6081bbb  ofl/monofett/OFL.txt\nsha256 1edecf3f971a11dcfd777cbda6f08c0f9a77bf57a0a2a89d8142fb933894ce16  ofl/amiri/OFL.txt\nsha256 6e6efa9b0556d100cfe60690cff5d9be7144df77adabfd2c278dbfee451351ea  ofl/phetsarath/OFL.txt\nsha256 2348c4852e6322105d130aa2addbe24c962e330094ad6dfbfd9fbd2281d76b0b  ofl/bellefair/OFL.txt\nsha256 3bbcf1617d93d3a949a10da78ae91c58be536fb04567ab4b5b9fd207126f1db5  ofl/buenard/OFL.txt\nsha256 faf47a1ceab38b07205b9d58fbbf9ac39772ea47cc731aca7816276da7226a22  ofl/dosis/OFL.txt\nsha256 3ac1301549523d9861fedca12871f24e575fbd26d520632fc00ba849b471d275  ofl/russoone/OFL.txt\nsha256 44b51296985184d9b27fc2c8e5b317906c5d65d9dc834e81c07902d3e5e1cf1a  ofl/brawler/OFL.txt\nsha256 afb8c471158619593df0fb501453bd39fda42396e2cc3911e2a0a471c11b863c  ofl/sarala/OFL.txt\nsha256 de985adf63cff6b1bcb7c5cb55f1c5850fb1d36289d20a0e26d97a281bfcf956  ofl/aldrich/OFL.txt\nsha256 194e25172d0144f29aff4b6fb2931ff0be0139448a5cd867db37863c9179330a  ofl/stalinistone/OFL.txt\nsha256 ae05f8781a5ef38380ef3efe8cad86783610b6a780c6c278d7472f95310fccee  ofl/oswald/OFL.txt\nsha256 2dab153a33dcb2101bba3f194d27d953c848a0fabf2e336650a81f84a0c33b3f  ofl/pragatinarrow/OFL.txt\nsha256 9d61931b909f9a738964f8fb311eb8fa40dba1ef9f1688b36039ebb15ee1805e  ofl/questrial/OFL.txt\nsha256 e315abc82a78710c7242e2f2e6529651fd631d4d50e6ad98ea194f9b54c3d701  ofl/alfaslabone/OFL.txt\nsha256 4653c63a4bab99aa50de5190853fa21ea6c0a25d69d49f5a42cd51f0f67665e0  ofl/boogaloo/OFL.txt\nsha256 bd8323cd1d2b6bbdfbbf99cb41ec1156d0352ced170de4aa3a96d95e6e20bf5b  ofl/amiko/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/sueellenfrancisco/OFL.txt\nsha256 ed93e9833f18acc2775380a28139fd88d3ebf82df7cb814042498467be3463bb  ofl/lemon/OFL.txt\nsha256 1f00d1f970b4ea469b6936e599b599bb217edaab792e586658ef2e71cf438685  ofl/itim/OFL.txt\nsha256 fa28ba897eb819768d6bc00c30aa03ef560e80e5f6fb872eaea089c66992f502  ofl/notable/OFL.txt\nsha256 96199bf9ff12dd471a66911dee95440737b437e7f5a6fd30e9e950c16d66e8df  ofl/unifrakturmaguntia/OFL.txt\nsha256 36e2f1debc9778bac79fac1a0cb5a5ef51c102f00b58ef7d8a05324144b68166  ofl/judson/OFL.txt\nsha256 ad4f6ede2e8a017255822a6abee8d10717f1d34c20223de80285ff59e28a1cba  ofl/bangers/OFL.txt\nsha256 f8779e6871bbab04e0a1ddd9997f4d8173b56792a1e7f8b9d691d967a49c7dc3  ofl/andada/OFL.txt\nsha256 49b9214f7b40024abec2fc89a32bdda380f2174ba7005d7636e6ea340157c5a6  ofl/jomolhari/OFL.txt\nsha256 a815f65bc72d90494b01842d3171f7cb0f9f935e023d9cc260904d221ef1064a  ofl/b612mono/OFL.txt\nsha256 5eca89cdd576df5e4b7c694e0425b126a9ca839aa067df85fab33904a8187076  ofl/amaranth/OFL.txt\nsha256 e0cde1a4993ed689d463d5e2401f4a60c54cc48a14253ab0f8012d722c417038  ofl/mavenprovfbeta/OFL.txt\nsha256 eeacf16032901d0ed0456876ec77b8f0fda6b3fecec7d972f8543eb602e6c30f  ofl/nanumgothiccoding/OFL.txt\nsha256 0fbae33ac3aa455c8c0d598347c87f1abfac0d215483f40f5a0e8dd08076df1b  ofl/librebarcode39extended/OFL.txt\nsha256 3670ddaf348c62ada22a2f606158dedcd9ca5fd5422a6173d6593204a8f53d4f  ofl/varta/OFL.txt\nsha256 ab592d1abca19428b89d851706fa7815ec25139c6affb45d366577ca63fb91b7  ofl/yesevaone/OFL.txt\nsha256 e8dd8f53b2fa502ace0636debbe7e357c4888d8d02b8b41d6a9a22d3058a63dc  ofl/peralta/OFL.txt\nsha256 cdf5fc4014abe91588666a9592ec86200e5a4d743b4b6e05d28d47e850bbe5fa  ofl/digitalnumbers/OFL.txt\nsha256 f8c2225a5fdb50e2e75f98cf6e69f198571f605f1b7f6f7eacc0947e2fcdbe8d  ofl/sreekrushnadevaraya/OFL.txt\nsha256 a80ee908b60f5bec9c10b135d3da93730e2194107d1f7fd3f61bd8c1a97b3e0c  ofl/yesteryear/OFL.txt\nsha256 6d216cec166b6e139adaa599053dd49720c053e1f2adb4845de3cc9c3704344d  ofl/play/OFL.txt\nsha256 46751a31966477e3f038d1e5ff1146a33234a3a523a0e6a21be3221cba082a34  ofl/muktamahee/OFL.txt\nsha256 505bb8f3c30f2006b4e02d250fda31ed94b651a35f1124a201ca1c405ce989af  ofl/biryani/OFL.txt\nsha256 5641212407f956b828bf632afc4bbb3344f461f82255ab56756d9e3e8604c7b1  ofl/martelsans/OFL.txt\nsha256 1ed119b01f03187dbe2f5f89c95431b9a4ca46db604fd263164d8b4055189f46  ofl/lateef/OFL.txt\nsha256 4938e917ac54665be1dd862f54634d991b39c5d1eef69345d66a5089e401bfb4  ofl/creteround/OFL.txt\nsha256 9263f9488a9ed1d5f4218581b642e0f054f9a20d208f1a53c19c9f7dbd27eaf2  ofl/peddana/OFL.txt\nsha256 e75ed24435d1711de0bebfaa621c3eb5564798c88cc0c1d1f8d529bbaae703a9  ofl/yanonekaffeesatz/OFL.txt\nsha256 708e33bed791c40638926a7577bcef8ff8748f84045f3825277540cbb8d483ba  ofl/poiretone/OFL.txt\nsha256 f1d1a3536fa4b9c71d04fe4c8d8bbfc0cc5c457d6883f45086b04d0bc07ed12d  ofl/vastshadow/OFL.txt\nsha256 f9f28345ffcd6cea6e3c6699e4579cd1948053d80fe89a6a5a2ecb269afc95f8  ofl/nikukyu/OFL.txt\nsha256 c1bcd16ffc9d095822fd6b7fa1a24c7918b24815ed05711421f804293d2efa62  ofl/actor/OFL.txt\nsha256 ae629d13b06d9afc5cf3c07d585f3192b89b7decaffc5c4dfcfa7ce11a2a2b11  ofl/raviprakash/OFL.txt\nsha256 bdce62dd98db969b73f93f8e8e2151004c20ad871ceb15ad9bfcbdf2cf939dba  ofl/pompiere/OFL.txt\nsha256 39de3de5f1873f89bca4af37823ab22e28e88d0d8f7fe2f07e82e9e6e9bf7b70  ofl/poorstory/OFL.txt\nsha256 757f49d04406c93c40d1781e7867fd85a1f9fdfbfe03a5ae332900da802fffc6  ofl/harmattan/OFL.txt\nsha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f  ofl/khand/OFL.txt\nsha256 74ba064d03f1f1c4a952da936c3eb71866c34404916734de3cae73b34357e59e  ofl/lato/OFL.txt\nsha256 94625b91cba99cf9c8e580febf5e738b2e3c7cde9034a16bcfb7538b672137e5  ofl/zcoolxiaowei/OFL.txt\nsha256 3e908f3a95680bdf3c8456bfbf76392605b34cb3fba109e46441056ab966cb35  ofl/modernantiqua/OFL.txt\nsha256 6a809aeba8af2115ca4b4c3597b1fbeb836a45f0489070f330f9c2dff870da8d  ofl/galada/OFL.txt\nsha256 2c3737ea83b48d48624068d1bbd1d9f8049eb7cf2e1f67435e420375c42e0686  ofl/spirax/OFL.txt\nsha256 92f750829545386017c3418d890769778b76fd01dfb41c62fcbb0d42ba0303eb  ofl/dorsa/OFL.txt\nsha256 656a20870fbcb8f559f1c6308c1df90ac93d7cd0279aab49b43a43b5e58534e6  ofl/neucha/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/zeyada/OFL.txt\nsha256 4bf7256c8ee73577ee5e26643d3247ec77017ca04489befd3e0f3412827729c7  ofl/laosanspro/OFL.txt\nsha256 33e3a83e377c6a41149044bd919f50d9a971d801052d4e0c0a98cb417b42ae38  ofl/risque/OFL.txt\nsha256 b4fc1d55ce610f255c5712f8169543f9610536d002deb99bbc99bfbba9f8a560  ofl/pangolin/OFL.txt\nsha256 511125dc85198375795fdbc109d088654d3b7f9dbd3ccb7bf93d844aef0b153c  ofl/ptmono/OFL.txt\nsha256 819e3b25f9b50f12299a3db1638be3813efc6b938f2b86693a218d20ec4e3209  ofl/londrinashadow/OFL.txt\nsha256 e3ea566dbf689a9110b2094f9f2e5d16d7ec31720147651efc1005ca20420dd4  ofl/flamenco/OFL.txt\nsha256 186d750eb496a4c17a76385f82be6aea2ac1cf2de074a811d63786cf374ea73f  ofl/barlowcondensed/OFL.txt\nsha256 705960c3281a5765ecc0b59bd4ed7ca59eed165748076bc2fc3e8fdbfeb944b0  ofl/pressstart2p/OFL.txt\nsha256 7e896665d0863d2a17a671001dbe2528a5f9302f1dff9222af8b0834e9088d0c  ofl/kiranghaerang/OFL.txt\nsha256 5f1f5510eff7922864bf326ffa1d4a62f01add5193e9367b542378e5a808b500  ofl/handlee/OFL.txt\nsha256 3173acd82f8c6159b5b1037b539fcbd4edff68e65c2ea8b9412b5a5ca97b08ff  ofl/archivonarrow/OFL.txt\nsha256 82831e8f12ecb6deb2f4d9919a04049895b4619e0301fa6b699c861bd7311c54  ofl/kavoon/OFL.txt\nsha256 1a5e3792a425687a523fc7c0f8ab5d01d58bf853149d57f3dec4b4fc6932fcf6  ofl/hanuman/OFL.txt\nsha256 7f91d7d8854e5cb4fc630807c0f4d57c07777769dc597173fe0aef5e58f0992c  ofl/qwigley/OFL.txt\nsha256 354b4be0340cd58e381fdf58793a108897bf944a7f8faf9e877c476ed6c730d1  ofl/convergence/OFL.txt\nsha256 1e20933206ca06421c7c378184da5476d195314cf4bcda2bf122cd45d69a956e  ofl/oxygenmono/OFL.txt\nsha256 a7fe1f3d23034092b015aaeb53d2ecbc9e592be96b10bdfbcf8700ec6a6ffc97  ofl/fascinate/OFL.txt\nsha256 4dbbe5c21b46f2647d227dde69b971a1b46de1435e0752a9eda1ce120725a93c  ofl/norican/OFL.txt\nsha256 1f581506286e960436548dba0701aab278f7e67f2adc6bdae2958923867d1e64  ofl/hanalei/OFL.txt\nsha256 56edbe5fff7981dae6f6eff32f61ba04cd54324e5abfa44b1257b2a307ea561c  ofl/poly/OFL.txt\nsha256 59bda6b53e28d388de5eac7bbb8f3e65889dc8489be3d922f95a525354110c0e  ofl/tharlon/OFL.txt\nsha256 3fa0ceff4b9a2d28dde43bc63cde3acfb5e6e92d13a53e484ca0e501e18c7e2e  ofl/lekton/OFL.txt\nsha256 ad9ce814ff266b57d3c4698d3fadca4b41a6f942a0ddd215db5cc66abf92d668  ofl/mako/OFL.txt\nsha256 c4afe82f49c05689c40dd4e262803b29c6e611e7b4efd3a0418f574b2be79d9a  ofl/carterone/OFL.txt\nsha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f  ofl/karma/OFL.txt\nsha256 d38acce513eccb51d7ac34ca47be279e1fcfdeca1ed088bdd2d281dc6ca939ee  ofl/badscript/OFL.txt\nsha256 31eb7046f4c80e0f96944c4b40b0772de68b34783b794fc13aab3f54c2ef6d9b  ofl/thasadith/OFL.txt\nsha256 06c79c896894160a5810d869a822fa7d02a0e2ccffd97920b8cf3b880380f6e5  ofl/amstelvaralpha/OFL.txt\nsha256 4faa2d9e2ce0a4b5b37e62ee6fafe474a539b31578f7214ed97cc3503aeb8ebd  ofl/oldstandardtt/OFL.txt\nsha256 1e511bb01d29562932157365418c02d954d8faeef794bcd54729177fb2b03db0  ofl/istokweb/OFL.txt\nsha256 846e8cc6dc69bf685d2db14cfa758ff3d9d771d54c9e0d3b511f0ecb97ac0e8a  ofl/cambay/OFL.txt\nsha256 6c181f5a0045e8f414e1c232c35972ab83ea084ac44825f517ba001628d97b21  ofl/kronaone/OFL.txt\nsha256 d7f96801a28ea11eaa51bc4a9c87fd91f2133bc298068e6e2847a15ddda23089  ofl/librecaslontext/OFL.txt\nsha256 1f00d1f970b4ea469b6936e599b599bb217edaab792e586658ef2e71cf438685  ofl/sriracha/OFL.txt\nsha256 22c4588bdc14621220ba14515d52041d1312541e034a15d1f5c2a88fc6075276  ofl/merriweathersans/OFL.txt\nsha256 1103d0731f1360eb156b0047a1337b2d62266fadcef1015d06f6263719c0200b  ofl/librebarcode39text/OFL.txt\nsha256 5b26c88d163b1430561f53fd3d9021d6057f3c67d25534a5d8d232cfbf8ee2a4  ofl/wireone/OFL.txt\nsha256 57f8d60cfe9212b971f07253e303746128edd06b21e3a0e4e188308e569f03e5  ofl/orienta/OFL.txt\nsha256 c87702d8b70f714fbefb554660e8ca57a43ef62a59089d11cbf0c6bd51d56928  ofl/lohittamil/OFL.txt\nsha256 6939af7114f0a33c7e6142d4c1320d1bbde11aebe6d8f3c48fc5fb3e0f676a7b  ofl/jejuhallasan/OFL.txt\nsha256 9437c26410bcd543607a6775e7d0e359c1df3926d68c92dbaceb26ce79cc0fd3  ofl/bevan/OFL.txt\nsha256 50265d2b41f8ad2dd350532d2286509aa694021b4aa0490b06f0068e4ed78c27  ofl/herrvonmuellerhoff/OFL.txt\nsha256 9acc45e5ba18b5b38868fad1f51c03df4f5d7a43061d46314843de45c4444233  ofl/ribeyemarrow/OFL.txt\nsha256 1fac7a3e4e43b091c2d31aef7a375d2b969c42b2d5fce8e2d40b5f7b1233ddb7  ofl/moul/OFL.txt\nsha256 331c71cbd8f1d8a70cd6eec3d55553b64e6261a9bb0982fa12e6e48baca827c5  ofl/philosopher/OFL.txt\nsha256 1e20933206ca06421c7c378184da5476d195314cf4bcda2bf122cd45d69a956e  ofl/oxygen/OFL.txt\nsha256 89418a3c7b5726c3f8828a7b7c3f1cad661cf5b7a1be3d2bd9ea243f8d9890c8  ofl/sniglet/OFL.txt\nsha256 5fb0694694dc307d1eb0121689395e634b6329ff545acc53f55ad66a716b3cf1  ofl/balooda/OFL.txt\nsha256 89d9d01291eeb91074ccf1f7ce07e7a1d9d421ec1191f8e84d440cb50830ed92  ofl/purplepurse/OFL.txt\nsha256 5fb0694694dc307d1eb0121689395e634b6329ff545acc53f55ad66a716b3cf1  ofl/baloopaaji/OFL.txt\nsha256 9acc45e5ba18b5b38868fad1f51c03df4f5d7a43061d46314843de45c4444233  ofl/ribeye/OFL.txt\nsha256 f938d4076b66a13cf984ce88d92a07ff9802e8ae5e1f4a28cdc43fad122ae611  ofl/spinnaker/OFL.txt\nsha256 89bf0833b785c49b0f271273ab440bdc20c85bf0322537dc901df940bf1579da  ofl/amarante/OFL.txt\nsha256 377f4f9c19e935228552478eb68cc2ed82910988a60ba60e2ac73b09f32d02d1  ofl/patrickhand/OFL.txt\nsha256 684ef102ca4c5ff61cf1c1e5c2c6326f3c26f848446f98b8862dcca716a87601  ofl/quattrocento/OFL.txt\nsha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f  ofl/rozhaone/OFL.txt\nsha256 61be7c29f4835e2be7243db12213d75d53ff028f29f4b493212a1688b1d3a1ba  ofl/titanone/OFL.txt\nsha256 9df0700fcd0ef48abd74459a8650d35f59397fbaa00c5b00527e57cc155689c0  ofl/durusans/OFL.txt\nsha256 b1958132ff727bd74409aa37ec0abbe4be13b1b379e1210e6fb77fc608c607d5  ofl/kodchasan/OFL.txt\nsha256 f1888ed385b528866a472d02f4e06ef0873aca5b3c63ff1f6116cbb150dc9a13  ofl/metal/OFL.txt\nsha256 e36d420a3b382b337c386338d8abc3635e10de5dfca7f822fc63ac659a0dcfc3  ofl/amaticasc/OFL.txt\nsha256 8fbe530adcbe30c658393c3f2b5a4785d6765afcefdfe47f594730131f3a0abd  ofl/oleoscript/OFL.txt\nsha256 60ddc0ee6e443b78940b5f92bcbab76c98ec6965e0da9fbdaf267383ab72bba8  ofl/anticdidone/OFL.txt\nsha256 afc1b710d644c1262e1765d2401abcf93a545a4cb051955e2243fbabb8164e25  ofl/carroisgothic/OFL.txt\nsha256 3184f6a99f589c78740fbff6ddaaabb43b8cc2f3852da36e60aeb024ea8d6f00  ofl/eaglelake/OFL.txt\nsha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f  ofl/halant/OFL.txt\nsha256 9a9f089005f389717106bb3ba427cda9bd51b8a477078644566543f2a60ca85d  ofl/rambla/OFL.txt\nsha256 99d2f30e282d6174af8ff68597f58bb53c0dcb2b104a4c1b8d19da49021d00d3  ofl/unifrakturcook/OFL.txt\nsha256 2bb0c0200723d923f8e20d08b8bd1c7af7f5cef8bb2d63ce44bd268b54334621  ofl/fjallaone/OFL.txt\nsha256 72afba97d1ac9409a9fd3bb91a02a639427ca1988977909dad273e293a508d7e  ofl/staatliches/OFL.txt\nsha256 88aece7d90f2bb7049719f11619a560af22af3451af141f12aa4f46bb157a99b  ofl/lobster/OFL.txt\nsha256 955655cafa13f187f45a79dcf451942fd1118a8426abc5a25ffc5dbb00709da6  ofl/juliussansone/OFL.txt\nsha256 9e1c955538817c3fab7160cb3110501e73ce109eeb58c4992a14e8323d900849  ofl/pecita/OFL.txt\nsha256 96d82a96abc02fb457ddde0227833dbde9d1d02876c91f0a4e27845ca0d692fa  ofl/atomicage/OFL.txt\nsha256 7729f005b7a087368e2cf61fc4b65cdc85988e47d0e6e38c93a72de345e86b41  ofl/newscycle/OFL.txt\nsha256 336fab6956d78eb34b50cd7bc6b16116c44735fbd0bf9f4def769ca4d8e218a9  ofl/sofia/OFL.txt\nsha256 b26cae1321380296ba8311b632a397d5eac11b47197f9d0aa0b9310f1531ad60  ofl/sarabun/OFL.txt\nsha256 aa8a8196a3e22c3bd985e33cd3245ae9a38accba5e79fc0e3b292612a8d6b337  ofl/suezone/OFL.txt\nsha256 d3711c90a7deda6210d30e41b945f16bdaa00662b30ee0b7c36abfee82525bfe  ofl/kokoro/OFL.txt\nsha256 513b7871a360a6eccd426bab59743fbff36764588f47381423f04ad6b3d821d9  ofl/alexbrush/OFL.txt\nsha256 67f64c5509e5151796599e3ad47c3131cbe0c80c4f9430b90236a1249c2eacc9  ofl/roundedmplus1c/OFL.txt\nsha256 4a7d2f227b91046ef7a54f8f735668d86e45f4fd4089268de292a6e9de108253  ofl/bentham/OFL.txt\nsha256 3c187c861dc291b9f7f96f655656f9ac2d57b33da425bd5962810be728344f57  ofl/brunoacesc/OFL.txt\nsha256 869e4c29978c318b33c2e5c7c8f24d2e947f249071bb1471620036a9d1ba87ad  ofl/k2d/OFL.txt\nsha256 6383249ddffbd87f2bbd7878ceba2dee0f1a2193cd7a4f41c00aaceb8e6d8b5b  ofl/meriendaone/OFL.txt\nsha256 ed50ebe2fa922554980909192526fe94966556626d6d440a462c8e7eaed74cdc  ofl/sortsmillgoudy/OFL.txt\nsha256 d64c91b0306b53fabed08762068eea8b918d654fb0721c288f13cefa4aaf088c  ofl/butterflykids/OFL.txt\nsha256 bc1175730d609233043cde47e48f69831f012e85537c5ec1a2cf4836757c1540  ofl/mali/OFL.txt\nsha256 fe5e822667a4b2e083b8fdd7a37546163f26f6481b58742236abffdcfb3e6c71  ofl/baijamjuree/OFL.txt\nsha256 b0316f404a7b291e40921c605160181065791a5010a2d2d5691fc7e28cdbdff2  ofl/underdog/OFL.txt\nsha256 c026db4c1a557cae47e6930876965f9cbc05758eb1f5d6f59b6b61c8f342a57f  ofl/alice/OFL.txt\nsha256 aad1e82802172d4c1d22dd015a5b8b4275e5665a49c1df54ed64716fca7ae194  ofl/corben/OFL.txt\nsha256 878aec7282ab41d058cedbf90e14512bcb4fbd0658496de8c2dfc592ed1f0cd0  ofl/lilyscriptone/OFL.txt\nsha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773  ofl/imfellenglishsc/OFL.txt\nsha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f  ofl/sarpanch/OFL.txt\nsha256 aff3cea99bf300b4b29f4dc04867cf9b49d83de8c5ecaf991c446d506b56173e  ofl/wendyone/OFL.txt\nsha256 b054962de0af1397d5350fddb4d6bb20f5f2e073b543eeeb694c7c3b27144fc5  ofl/chivo/OFL.txt\nsha256 19849b33c59d0cffeaad0dbdc38db767e95e03cd36fbbfe6b67a9878aa5758df  ofl/fasthand/OFL.txt\nsha256 a57810cbca0b4715ae8610dd7a268260cebbdd4fd76d304e371517f828150669  ofl/stoke/OFL.txt\nsha256 47a0b7e315bc56ca0326fca46302d87d48a61e3528d4196e966b62f5bf0243f2  ofl/armata/OFL.txt\nsha256 eeacf16032901d0ed0456876ec77b8f0fda6b3fecec7d972f8543eb602e6c30f  ofl/nanumgothic/OFL.txt\nsha256 616e75d879831bedfa7725c078e09bb56f8a17f40b194e16691b12251bb42b3e  ofl/majormonodisplay/OFL.txt\nsha256 75c7ccf4f537a7a3ebbedd299c1d2542e13d3b27aaf76a0a2d9fa91a2a8fcd3a  ofl/felipa/OFL.txt\nsha256 ee2c069b30f3e9a5aaf52357117ee3443ee27f17c29a2ec68861db283379905c  ofl/dynalight/OFL.txt\nsha256 fbe0442a6b1ce162c95e241df76cab5ef2daf6a5ac84ae1a7a6749f32c051098  ofl/breeserif/OFL.txt\nsha256 43d530580461a574f6dfed9e15af6a74e95f7c04d9bfa1174a63ff036e8eee07  ofl/rubikmonoone/OFL.txt\nsha256 40bd3f35477284c021978816e9d3b8723ff2283fd7065fafaa5bb3004e41b237  ofl/songmyung/OFL.txt\nsha256 460966d12f306a007930575c3b8bc336fe0c32f880d622af6d3b745a06ca79a4  ofl/benchnine/OFL.txt\nsha256 f6f60d5d4cf4f4b1fc4e41353c897a2f5a16e6396c0cd8fa8bdfd2f4586a9a68  ofl/alegreyasc/OFL.txt\nsha256 0c922e2d65050677c26ae8dc501bc9ad3e0059c4b10df2fc9717d7bdacdfeb6d  ofl/ramabhadra/OFL.txt\nsha256 548890e4083028f04e5feba04b6e00554654d840aab81c8664eb66c2216a571b  ofl/palanquindark/OFL.txt\nsha256 e39d6ec64a37ed1523a59940695a61ea5e7882d9bbe0e7eb11653fda4b04fc79  ofl/kottaone/OFL.txt\nsha256 1bfe7d2aca99042eabf37079152fef8abdda2c36dad454ae89b858a3cb1078c5  ofl/forum/OFL.txt\nsha256 5505d1a010ee0f2eeecdf624984d2a6170480adab3091170abbcedd85361f1b9  ofl/novacut/OFL.txt\nsha256 715ba72697e14daa9b29a333545f69bde7c497b9f77d0a2a4c4a5a752d961801  ofl/marcellussc/OFL.txt\nsha256 0786594992757ea0290ae4a490ab9249728f372adb13959c0c8ae4fec83057ff  ofl/quintessential/OFL.txt\nsha256 ca13e9cd1faaa6afb9e43dcb534a8984cec3218993fb4b436468a79a1657ee19  ofl/keaniaone/OFL.txt\nsha256 760fb433c515570f6b77ebc60299c2c91d5f03848c659452a9d2458b28935768  ofl/numans/OFL.txt\nsha256 9134ca6996bd33ea2022e109f13f20e29dee1dcd8b2e8878aad576d2ca334e9f  ofl/cormorantunicase/OFL.txt\nsha256 1d1b7f3480c8d9b65c26d205e41dcbfa85731588d6ea50bccfa78e91f242d629  ofl/loversquarrel/OFL.txt\nsha256 1d08c63944e639bbfe8a1b81e3c6a63836806c126b3573b9cda0db83fd27ffe9  ofl/prompt/OFL.txt\nsha256 eb6c70cb6b575ad22df022d454df7a20582915e6e8da19b579c6cbef37a26bb5  ofl/gafata/OFL.txt\nsha256 93f60741563b4f51f2fcdb207fde72b2b23292a47022c729aecd998b360d8038  ofl/bilboswashcaps/OFL.txt\nsha256 4579982a484a9745864de2cda666fd7b5017f9182b74dbb4cd53d84c1d1b2231  ofl/gruppo/OFL.txt\nsha256 cd059851dc2abcd2865ae318e8b949736f958794210acb90316530fd100fc904  ofl/geo/OFL.txt\nsha256 af9b97696048d509e3d70f8108b7c4381084f95c8fedd97acaa76b0b287668be  ofl/molle/OFL.txt\nsha256 6958d8c61b6b223f81bdc2109941e5d0004996dde61e197d628e0293f4f1bc58  ofl/miama/OFL.txt\nsha256 7e98b49a12b51240c85b04eb0d9919a6fec7dbd491bef6cbddc22d3f851bd1f1  ofl/marmelad/OFL.txt\nsha256 b9d592c3bf421197d9b7e353416b8e2ec81584988824b43d38c86d997a08b868  ofl/myanmarsanspro/OFL.txt\nsha256 e414e07f7a4da16ed47ebec80d52dd79f21d3ca42bc92385a755d8078a038814  ofl/playfairdisplaysc/OFL.txt\nsha256 0e2ccc5da1dd979f08ba82bca2fb61592506a1e58d3cbfc26d904f0db71bd812  ofl/sairaextracondensed/OFL.txt\nsha256 bc85bae0b512b799bbfb2b916e4d0a34cfd963d09778cd783e248b479e67760a  ofl/comfortaa/OFL.txt\nsha256 caa697668c3cf3e622753fb202c6c2e29648b94a3499dc7b869a14192e38c553  ofl/sourceserifpro/OFL.txt\nsha256 81d6c3788a6b641cb9f543389d9d5c0cd3bf94fbb5639be19c102b9274c34291  ofl/mousememoirs/OFL.txt\nsha256 dd028a807788d5e22e9f8cc18f026cda23369954673658f2ecc7d30bdb364b89  ofl/arya/OFL.txt\nsha256 53f9c99fa3d47f7d632a42ee7bab4a834a60a744f6026d676c3a223cef2b2ef3  ofl/vollkornsc/OFL.txt\nsha256 6506b2fa2a14259a8859608a6148a4591d67bbaef4d8e1948b43c4078561b0e5  ofl/tauri/OFL.txt\nsha256 6cca1abc09d677cf00a55674ce2775e0eeb6dc5c0137b0401816680b9e500f81  ofl/marvel/OFL.txt\nsha256 e98ce988fba1c138f4e7c0c5120809706ab1b24a3c29638ca83ab2ff082e08db  ofl/chango/OFL.txt\nsha256 0e2ccc5da1dd979f08ba82bca2fb61592506a1e58d3cbfc26d904f0db71bd812  ofl/sairasemicondensed/OFL.txt\nsha256 42e7b456fee0d0dc86927579b3d2626d42bb0f4cc9778f3a92ca8ada4e46348e  ofl/novaslim/OFL.txt\nsha256 1b8eef90c567309fef17962cc969dd9ed1de69176517238e744018bb983e7c1c  ofl/mandali/OFL.txt\nsha256 9e262d6d7fb789aab6a8ecc53fc9c78387eeb9f935dcd289282d8e751b6bf743  ofl/antonio/OFL.txt\nsha256 07dbf75115edfc1fd75580aa19c4c730201a099e8f86a9869887dfbed0547266  ofl/offside/OFL.txt\nsha256 f177d98c67b84250ec87a03ca6ad161e84cab15b435e960039b971797a065f4a  ofl/martel/OFL.txt\nsha256 bb3e8082faf86b1474a6b042125ef0f83669d28110b72f70416a7587b7b9f144  ofl/unlock/OFL.txt\nsha256 c4955dfe15a5db10326aa58ef767460c42cd12a3acdb3e698eee2704eb373d94  ofl/electrolize/OFL.txt\nsha256 cf6dd07485d67d20f105afb9981dffdb6b180b59af45a228839cf3fb0277c9fb  ofl/arapey/OFL.txt\nsha256 87e8d9aca71dbe0481ba8611fc90d7e3aebfa3e2546420c403e7078898b0c484  ofl/allura/OFL.txt\nsha256 55e13d77a4457aa9c60f10c5b97baea3343d3bac30960d49554a033cb9eaff7c  ofl/sail/OFL.txt\nsha256 1c5bc055869d5e9151ec7774082727db720ec4293c65be67f91a4bdcaeb02998  ofl/righteous/OFL.txt\nsha256 de5ff32211a4340b01477af39ee339d639438955e409f79b666d4b9207f3c92c  ofl/dohyeon/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/waitingforthesunrise/OFL.txt\nsha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773  ofl/imfellenglish/OFL.txt\nsha256 44a7c6e4c5572392ae122d3b1d8c6ba6fd640a7797e675384585d947f2773e3c  ofl/jua/OFL.txt\nsha256 1ba345a91338581e5f8fccc3e37e447ddea5b99ec9caec1b76c7c39492387d2f  ofl/signikanegative/OFL.txt\nsha256 9134ca6996bd33ea2022e109f13f20e29dee1dcd8b2e8878aad576d2ca334e9f  ofl/cormorantgaramond/OFL.txt\nsha256 9ee6b2ec20a06c599a07412690876eb457bf192c10e886e60d8bdffb80bc21a3  ofl/sahitya/OFL.txt\nsha256 dcc832bd71ea62cbf97f06327a1b5442905b49ea446801421d71f7d1362db215  ofl/dokdo/OFL.txt\nsha256 8aa063e3a1299c5e1821f386f5ca8bc157ac561bd12c739ffa81c6f0821450c0  ofl/donegalone/OFL.txt\nsha256 e588abf45ca2b19c340c4b27349c9b6b6e5e198316fd965128ed9f4422942cbe  ofl/raleway/OFL.txt\nsha256 9860b97028024085855e503e32c1971bfd603374641cd018c136433ebcf5a338  ofl/gravitasone/OFL.txt\nsha256 ee9d043332991eb6bf2bd56fb04db3c558c1ee2f0cb9aa7b18366c77e34fef30  ofl/jura/OFL.txt\nsha256 15b1a21c3fa37a475ba6b0c0cfe289c7952548caf6e432068ddaf98d139ce419  ofl/belleza/OFL.txt\nsha256 c5a77946a56488790364d060628385d51226da62a18f30d2be0181d82ee62b00  ofl/suranna/OFL.txt\nsha256 36e2f1debc9778bac79fac1a0cb5a5ef51c102f00b58ef7d8a05324144b68166  ofl/megrim/OFL.txt\nsha256 0fbae33ac3aa455c8c0d598347c87f1abfac0d215483f40f5a0e8dd08076df1b  ofl/librebarcode39extendedtext/OFL.txt\nsha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f  ofl/teko/OFL.txt\nsha256 d324289a26909a519fb16c3d468a56ab909ad6d9070cac5742e5d59ad9bd9815  ofl/gildadisplay/OFL.txt\nsha256 c0bcb72e68dd416db0bb9fcec7a7fa62321b0147cde00d8c8f82748e33aefd34  ofl/novasquare/OFL.txt\nsha256 794d72ffdd25e8f7ca8e1d68db088c30ddbf2fdb369b6cc8217d4fa5fa6dc62f  ofl/adobeblank/OFL.txt\nsha256 806cb93632b8091cd36554642a96b2752bab50015da6a2b456d786c1f9aef5a5  ofl/carme/OFL.txt\nsha256 0677891e6a143f297350d260ad766ad33bfc18ed5fa4f213acf648d6b597ec1a  ofl/alegreyasans/OFL.txt\nsha256 08b6f5cceaefcf2881eb009adeb78edd0fabf9c8f0eaf8b88f07a690222227e6  ofl/varelaround/OFL.txt\nsha256 3f0f27931c92453994176af3b1e7954f9aac39fe145374d6d08c47c822e82e59  ofl/princesssofia/OFL.txt\nsha256 2ce1c4fcf4ab9c8474d0824434497d4afa4425db4de5629103698b170ac4ee74  ofl/bungeeoutline/OFL.txt\nsha256 455397ca15d39e9178bbbf4b485a29187751d60f7ceb7829980a521d5ab6848d  ofl/sofadione/OFL.txt\nsha256 b7574cd4c76770e5e3915d16bd93f09663bd77cb041a4ec09d824c52b540529a  ofl/germaniaone/OFL.txt\nsha256 39de3de5f1873f89bca4af37823ab22e28e88d0d8f7fe2f07e82e9e6e9bf7b70  ofl/eastseadokdo/OFL.txt\nsha256 520a0c239d39b379b61c4de5f8e3b02db20b0dfc137481843eac01f02c41f4a2  ofl/aguafinascript/OFL.txt\nsha256 ffaf7bc750bdaa0b95b09eb80e419748bfaf46268c6612860f0a5e19e17abb12  ofl/orbitron/OFL.txt\nsha256 c6b9c7322fe0203d4d8a0f98541136d8d76da76b92c79d206b09991b98338cc8  ofl/gemunulibre/OFL.txt\nsha256 2f871c2e81de6d0c72c981615002c30bc9f1637003d6d3d4c3f0149886b70569  ofl/mervalescript/OFL.txt\nsha256 5fb0694694dc307d1eb0121689395e634b6329ff545acc53f55ad66a716b3cf1  ofl/baloobhaijaan/OFL.txt\nsha256 842b4f4605b32518a1269c4d030d719ea2c4c317d699fc4441d0219658e18893  ofl/seoulnamsanvertical/OFL.txt\nsha256 00a6fe8dfdc48d6206bcc4f10a765515a73433dfba7255eff966963beb26facb  ofl/dhyana/OFL.txt\nsha256 cd2dea62cd4b0c5fb335cf07ff04fd5c4bacb49b8d6c2bbbef9766c663d79b1c  ofl/patuaone/OFL.txt\nsha256 c0a8947de199b422d30c16137e4decd5362e3a1d504422880d69c02bd6046dac  ofl/cagliostro/OFL.txt\nsha256 c267a00c9476c78a2336d7b372b536885b8b24173a29ed53496f67a742c14961  ofl/alef/OFL.txt\nsha256 2cc926050c4c6ccd9a0288b7792e2fcf93e5629ee6269e35986f092275e5a1b9  ofl/sarina/OFL.txt\nsha256 f1bce31b817dee01c1e4ef8bc45d8ecb95f01f4abbf0a985007cb3cd0fd8123d  ofl/zcoolqingkehuangyou/OFL.txt\nsha256 9788e3b3e67f22ab5846a0bb867a230e7df2468c3cd20f730a5d9c34e673d090  ofl/rubikone/OFL.txt\nsha256 f3bc8767749fc133d9b35e84ca024b82f1ac4d1b38deca0adcf8300892303022  ofl/faustinavfbeta/OFL.txt\nsha256 ee81f11dd1970e9749afd2a572256f8eefce65532872762a4d7a3d5daa0812c8  ofl/shojumaru/OFL.txt\nsha256 4f4bc3806a1e55789c6ef75ca5fc628297b05292f74966474dc0d40324abc609  ofl/abel/OFL.txt\nsha256 064539f87826887d2062b7823b2b97b7625d68b642f6c945c99c0b8dc8084195  ofl/rationale/OFL.txt\nsha256 a345b13576140008a697ac66ca8c76cd63b1dd076712bc30a0f5e97dcc53cc83  ofl/markoone/OFL.txt\nsha256 203693528d6d2e8dc5e639c6ea42b3e825b59dd6447294e37b306fe734650091  ofl/arizonia/OFL.txt\nsha256 9ca8b9e5db7184105da255bb110023cf1cce6caa56186341bb7b09ba97b20ba5  ofl/fanwoodtext/OFL.txt\nsha256 3997621a219c7758e31dbafdd3cbd2bcb0b6144a41d1ca068d04dbcc4bafcde6  ofl/milonga/OFL.txt\nsha256 2ce1c4fcf4ab9c8474d0824434497d4afa4425db4de5629103698b170ac4ee74  ofl/bungeeshade/OFL.txt\nsha256 162a3b5c72cba845280a6f887c11d02984540b924510138c8b1eb473bcdafb6a  ofl/concertone/OFL.txt\nsha256 21b54eb0d7513524798a00dfbaf99a02c003a0012a728cc5f0e02d24c50482fb  ofl/caveatbrush/OFL.txt\nsha256 186d750eb496a4c17a76385f82be6aea2ac1cf2de074a811d63786cf374ea73f  ofl/barlow/OFL.txt\nsha256 9551ade371e7bcb1f6d9959273bbf1fed3bdf398efb5c57cc1fd85d6a13e9e5e  ofl/londrinaoutline/OFL.txt\nsha256 f15a9a3a9a665c2d17655b8fedad86d9a8f30081d46bb91236beb1bc7294a589  ofl/akronim/OFL.txt\nsha256 76a55594c9a18b7d94b8119de838237eb834bae4e8c646d6d363aee587b7b427  ofl/slabo13px/OFL.txt\nsha256 0e2ccc5da1dd979f08ba82bca2fb61592506a1e58d3cbfc26d904f0db71bd812  ofl/sairacondensed/OFL.txt\nsha256 96b7bc175186cd0153a9682a1c9bb1da7103ab13a83abef8026bc64582ca616f  ofl/oregano/OFL.txt\nsha256 6fc386ac48a529b85c21f90a6c8d2111c6271b3063f9ddd78e92645db5259510  ofl/tulpenone/OFL.txt\nsha256 13e862ac3f67130f58bd4bebb61c588d147b5a555b1ac6959570799c4f648cd0  ofl/capriola/OFL.txt\nsha256 d24ff874133ecd133e55d7c4070d2edab14d3933477c2bccb3a0d8d1cc9c33bf  ofl/muktamalar/OFL.txt\nsha256 85814924eca98e1fa530901cc5167d0012aaf31122f9570d7e9755443dd9335b  ofl/siemreap/OFL.txt\nsha256 f76c1013cffb3e0de0e7dad19ee5b4b7849c7ab10b67218515e39cfd87e554a7  ofl/julee/OFL.txt\nsha256 c264f64bb2b91ca0dfdeab75d71719120271fa6a30035396416af235ef481c1e  ofl/merienda/OFL.txt\nsha256 d102f22055cfa31a9659228483de3c726010f0b3b416b78e3cbefcb54816e812  ofl/galdeano/OFL.txt\nsha256 2db02cb5d05d5f8a003ffefce36a32a16520ad4cab9ed90635ff953b583e4e82  ofl/sigmarone/OFL.txt\nsha256 cdcc959c42ab255b4cea4bd82f2db5c24a2da7ecabe615d02d5a5dba3716e446  ofl/racingsansone/OFL.txt\nsha256 c88333734ad7cd30540ec6614d12aa829a0395715de30e336d22ddfa3005db42  ofl/catamaran/OFL.txt\nsha256 26daffa24723bb188643085cfc5423f9d78d22a395df4a7928380e430545a201  ofl/bubblegumsans/OFL.txt\nsha256 de2246895f0ac21fe05b095d586d36cbc9f987ebcaed1e050c61e69667caf1c6  ofl/hannari/OFL.txt\nsha256 b54d54664cddcbf05f5b4ea3aec7e89317eb917cf465920969e7b22361e0f4a5  ofl/seymourone/OFL.txt\nsha256 46239ba6485d28553fd944da4ad32a00d9c403aa1c3e111676b0b96fe458d1d4  ofl/averiaseriflibre/OFL.txt\nsha256 91c25c350d3cac39da2736d74f7ba37ef648f5237a4e330a240615bc8d8c4360  ofl/ibmplexsanscondensed/OFL.txt\nsha256 5802c9e3509199c7aa9a13ea410ae27febbc0cdea184bf7d227170fac703bba8  ofl/passeroone/OFL.txt\nsha256 2400b30a72d2b1555255b81625576dfb552584a19a9c85ad8d43ff77bceab13b  ofl/plaster/OFL.txt\nsha256 4bed7eaae70cab1bdf2bcf9b1cb562fcd9cc26d1c3533c4ade0ec70516dfb3a4  ofl/trykker/OFL.txt\nsha256 45b1f44d2cb859ea4b7be2f322c57b8ff7be55075c336744e62b5550cd0a97eb  ofl/medievalsharp/OFL.txt\nsha256 19c6ecf65a6b0687dd324b093ced5f1020a1fcabfc8ddaaeca6906cd05153e23  ofl/overpass/OFL.txt\nsha256 ff1f38ac4e694a4ad5bd3d7a5146cd8bd73fd57aae794ced76a24b0d68e41206  ofl/pinyonscript/OFL.txt\nsha256 6aa923334ec515d26b1a61bb978a0bb5bd8884de7529add1625beef2f4a53f74  ofl/nicomoji/OFL.txt\nsha256 cc8c0c3e81cf543e190f128b83ba7c30959f15865c14dd972fca4917faeceec1  ofl/encodesansexpanded/OFL.txt\nsha256 38fab5a643fa935a4e11edae2d7b2bbe9866b4f4828c2be2f41451b3f27cb67a  ofl/paprika/OFL.txt\nsha256 a5fc033225d145b43fd7391482ae7689825414ce29a01614d651a3012b57c81e  ofl/monsieurladoulaise/OFL.txt\nsha256 ecc91fac753ad9ba5bb7e7819a5c59ee1e3cf89032133c6b4b0318d63c35933b  ofl/alike/OFL.txt\nsha256 6939af7114f0a33c7e6142d4c1320d1bbde11aebe6d8f3c48fc5fb3e0f676a7b  ofl/jejugothic/OFL.txt\nsha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773  ofl/imfelldoublepica/OFL.txt\nsha256 9cd20277e2c89d47e3997435e3a16539d20173d850fbb42474990f71642e473e  ofl/mate/OFL.txt\nsha256 351740da2d452b48193483f22f64918a6dfd64a7abe225c6187ad3f36e0d9cd8  ofl/postnobillscolombo/OFL.txt\nsha256 aa8a8196a3e22c3bd985e33cd3245ae9a38accba5e79fc0e3b292612a8d6b337  ofl/secularone/OFL.txt\nsha256 cc8c0c3e81cf543e190f128b83ba7c30959f15865c14dd972fca4917faeceec1  ofl/encodesans/OFL.txt\nsha256 136a256d6050ed32bbf96736d70b9099c6359e83dabeb6847cdf6b8ef84319cc  ofl/kantumruy/OFL.txt\nsha256 72060253bd481a8dc18664bb9117072dc07c0f0270a40617c230654821774850  ofl/pattaya/OFL.txt\nsha256 56d9c3529facf93873a2a1626dd038054d244b3af30a1e3ffe0e78bbda1c7622  ofl/preahvihear/OFL.txt\nsha256 1a2debd5ad8e656b26bb3b29213caa8f7e557a2f31454b11ebb6c3e3b59aa5d4  ofl/cutefont/OFL.txt\nsha256 f62ef357d3a1c3d27edd35a6e1ba350e8a8d13499797964eeadefbf0b3b15d1f  ofl/kalam/OFL.txt\nsha256 d941c5b788d47aa469ee54e30f4c12d6a43c45a295f10c568bdf9772f2893b7b  ofl/oranienbaum/OFL.txt\nsha256 5e0da210fb04058a8c0087985d2d456b931c2579811a49655721d3cf0c36b6d6  ofl/notosans/OFL.txt\nsha256 5ae0cfa62a70251d9a2c3c5430ed3bafa480005f23e4b9525488f2318e5c10ca  ofl/mrbedford/OFL.txt\nsha256 0acef93ca37cf19eeb83a1c6a29b78b08377a211c8d80cd27626e210176828da  ofl/kavivanar/OFL.txt\nsha256 c0562e066174197902a4a10606673d189f067970ef89c6013943b9cf182aadbc  ofl/titilliumweb/OFL.txt\nsha256 f8fbefb5b1004615e6d1e84b1c75e68520d91196f600cb1b07620dd2748eff64  ofl/cantataone/OFL.txt\nsha256 2e2cb5a98da665f2ab82a9fd01fb18c2337f845761b0c163f690ed65f3b94677  ofl/sacramento/OFL.txt\nsha256 251f65282ff48a7e8ef3fb661fc99254d9b3b0c368427c98b1edbfe4ca66e888  ofl/katibeh/OFL.txt\nsha256 31bc966c36352bfd33717382786d0458c38ecf540628ab134e0ce35fde801d28  ofl/poppins/OFL.txt\nsha256 f016385cb4b360e7698d22a48c6b58c0634b1ed5c9c17df78515d43887511df6  ofl/yaldevicolombo/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/swankyandmoomoo/OFL.txt\nsha256 b712dacdda5da76c0213f8478886f893b855665c1153ae438bc3e55a7dc525ef  ofl/kurale/OFL.txt\nsha256 74584d937293a9cacdcd2eb05851b71aa1527901c18b87961d2f877c77a1b486  ofl/chonburi/OFL.txt\nsha256 8f187da1eb4f23e3fe7ba68b1cb2e92881a415dd34c46489698454517e273c4f  ofl/krub/OFL.txt\nsha256 3336bf5d4e7eedba48ecb831f37bf676e901c39f2e6a422cceadd9d2ffa55be8  ofl/kaushanscript/OFL.txt\nsha256 bb655534b6c7bf3e547c1368a68a5b1032d0e96fd08b5cc75f3d7a78528784ef  ofl/novaoval/OFL.txt\nsha256 04b895d77ccec5034191e953e8e5884637269be15fe0675fc25039014eb46349  ofl/monda/OFL.txt\nsha256 d724dea493d89a7a9681186e2fb462b7cd551674960ee4142ae6b325261b5115  ofl/hanna/OFL.txt\nsha256 64ecb0c6bf5cd80c3da76035c00671272966afbd32ffbdbcad95a8b56501fb08  ofl/decovaralpha/OFL.txt\nsha256 0cf28cdcf1cdfd35054352816b2d8c81bd6d6f73632198b61507f26dd4dcbeea  ofl/sansita/OFL.txt\nsha256 d69bcd35f4a121b312a64f7e8eb15bed61c9056e9e9cdaa8d513366142c8e005  ofl/rosario/OFL.txt\nsha256 b4cff421cb89d1e32036e818f291f8ab0d3294ada70b5883d5bcc6470b869702  ofl/eczar/OFL.txt\nsha256 ecb52bab55d8d6185712fe8fd2fd98300f5c8c07fad0d0a97b1e579462b0dd3f  ofl/bayon/OFL.txt\nsha256 ed95c33f80ccca002e3a360b683c43368f9c5eb024e5b992abb51af3c10b59bc  ofl/gothica1/OFL.txt\nsha256 66b5c49d384cba754806a891ebd52f2ca08dd05c0eb3c56170192da466a00a20  ofl/londrinasolid/OFL.txt\nsha256 284a5a26e6db9a04259a5690ad57d52c56a4c515ca2ece1943d950f99e709dcd  ofl/belgrano/OFL.txt\nsha256 6cbe0f55c154b5dee71ca4f2418d69e4e916448ef2ab52dc4541197b292efa24  ofl/sonsieone/OFL.txt\nsha256 255d5debbb80eb2ea762644311f266a279e8778f00156655a516e2b7781a63e1  ofl/lilitaone/OFL.txt\nsha256 490b8f3acbce2331adc9b9d3e75ee6fe07946fb29af429a300c7d066b1250b2d  ofl/crimsontext/OFL.txt\nsha256 eeacf16032901d0ed0456876ec77b8f0fda6b3fecec7d972f8543eb602e6c30f  ofl/nanumbrushscript/OFL.txt\nsha256 f2c0dfa02d6f5c444b4babd7bc0b43be77ea85706e8524342516bc41e43c2f01  ofl/fahkwang/OFL.txt\nsha256 4398885e6b303830d81eea03444aae6fb08a44f41b6acd193c88a2f8cd17606e  ofl/srisakdi/OFL.txt\nsha256 c1f8e0feb0babaacf774b971bcfd791e44125b9d61ff074e4c20924e9661556e  ofl/antic/OFL.txt\nsha256 6a73f9541c2de74158c0e7cf6b0a58ef774f5a780bf191f2d7ec9cc53efe2bf2  ofl/notosanstamil/OFL.txt\nsha256 0b1bada9befa95a40d55830fe83fc7f8064e245fea33bdf0f96f57848f3866fa  ofl/codacaption/OFL.txt\nsha256 b41b99f35b507564e54f6b2f5162ad1c21f94a16837c632da6632b376a341f42  ofl/nosifer/OFL.txt\nsha256 e8d0118fa9d640543e7f6848d1d93f47313c7f56b64f73f37291d859cd5932bf  ofl/souliyo/OFL.txt\nsha256 bff4e5087ece354afccd073621197bbb7dd9349943b5ee6aa12b1adf0b133081  ofl/happymonkey/OFL.txt\nsha256 1f581506286e960436548dba0701aab278f7e67f2adc6bdae2958923867d1e64  ofl/hanaleifill/OFL.txt\nsha256 03082243ebc53e2090bc59987f693982ccee83b30516457b11f6a2349b78f5f8  ofl/rokkitt/OFL.txt\nsha256 1152ca18eaa6159634f1eb209c60df360c1c09a52991e392f8033702036634d4  ofl/assistant/OFL.txt\nsha256 012b1870f81b0d97ca756edd9eea315c7fc22657ac2f1cbdfcb6772fed3e20f3  ofl/bhavuka/OFL.txt\nsha256 ce1108854c91696a8549bb21459f1dc74e8a1ec11664d712c3868c40042f1a8a  ofl/rufina/OFL.txt\nsha256 bac36a7fcafc5702d9d928bb81c7de9f8739eaa820e546c3d2cc52730b652af4  ofl/devonshire/OFL.txt\nsha256 ac987f9cbc5b18d3239d88adb57a4e134049811d24ddda2f6383faa589fd2727  ofl/holtwoodonesc/OFL.txt\nsha256 f3ee3eb20a9d565bee2bbc0d616de382a113327d7506565b2f3d3bee5f489375  ofl/bowlbyonesc/OFL.txt\nsha256 965bd2c907f7bb6f36da4f85e83f29aea8b2f720783deebd7ed7b40678e67672  ofl/mysteryquest/OFL.txt\nsha256 cc8c0c3e81cf543e190f128b83ba7c30959f15865c14dd972fca4917faeceec1  ofl/encodesanssemiexpanded/OFL.txt\nsha256 19e186a088a50835b38b59409a76b8df2d0252ce114a99e79e306231bbe253b7  ofl/dellarespira/OFL.txt\nsha256 aa36087ecd7e9085e5a1439b0a6d0ee35966e8cd2ccaa649bebe62cae5815e82  ofl/lifesavers/OFL.txt\nsha256 2a3ca501fc4d5efcad9798531e3e06962b1e20c60e464f6cbd6c17630112c773  ofl/imfelldwpicasc/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/loveyalikeasister/OFL.txt\nsha256 a9ef1db03f660130790beeb3b5d91b68536a44a98ec2db3097d02a1c5f91c599  ofl/buda/OFL.txt\nsha256 de318dcb99e332a746edb9f83180ee206fc3bce74ff96ad7d1cb219967ec74af  ofl/pollerone/OFL.txt\nsha256 315a576cbc7ab61c9e347b5725893bc8498fdcb8fc10831793c6864bc2cefba8  ofl/gudea/OFL.txt\nsha256 41f82bb4d24b304f30f7136bc47abdd083782e4265c984160f5649d1e78ea49c  ofl/montserrat/OFL.txt\nsha256 5866fd437bf701cd93f2c41ca2a8b33786975c947bee27882d256b408c9b424a  ofl/podkovavfbeta/OFL.txt\nsha256 377f4f9c19e935228552478eb68cc2ed82910988a60ba60e2ac73b09f32d02d1  ofl/patrickhandsc/OFL.txt\nsha256 ec1d7de447a90e4b6d8f2b4f95c7f89a70e315fdb41969bc716059e4f2461fa4  ofl/clickerscript/OFL.txt\nsha256 7039124ec9c84f9d637637da9f80158f0d3681c82d4e6a811053467f7c33d587  ofl/prostoone/OFL.txt\nsha256 16f8621a8dda01f044b8a58489334dbaadfad44ef2fa1d5ce0864cc2f309df01  ofl/inknutantiqua/OFL.txt\nsha256 ae30055f1e31d12f6235802c25a8872bb7053fca8ed4a604c530f4b2ee83e572  ofl/pontanosans/OFL.txt\nsha256 f1ef4c3ef43322403f5c30e4fb46496969cb5c34a2a6e7247b507254b69caa6a  ofl/novaround/OFL.txt\nsha256 cf5c4103b0ecf3c38e7c26768b5caf05e1b3e16d4d87b32d859b3c19ce7c216c  ofl/petitformalscript/OFL.txt\nsha256 ed80dd9539708a531313f98fb081aeeaa395ab5726931a433845d667b019c855  ofl/abyssinicasil/OFL.txt\nsha256 1404cc9279d4ad713a372a5e1e1d20d7b9b000d2397c8529aeb3df5402446600  ofl/cutive/OFL.txt\nsha256 19c6ecf65a6b0687dd324b093ced5f1020a1fcabfc8ddaaeca6906cd05153e23  ofl/overpassmono/OFL.txt\nsha256 0878e7d6e842bc3c45154059a1c2812de0d31dca343fe6bc16abc9afdee3e3de  ofl/koho/OFL.txt\nsha256 636d62f04d7bda9fcf9354f258f6244e7e18288cae036b95122e204f1acbec80  ofl/neuton/OFL.txt\nsha256 5fb0694694dc307d1eb0121689395e634b6329ff545acc53f55ad66a716b3cf1  ofl/baloo/OFL.txt\nsha256 5866fd437bf701cd93f2c41ca2a8b33786975c947bee27882d256b408c9b424a  ofl/podkova/OFL.txt\nsha256 2ce1c4fcf4ab9c8474d0824434497d4afa4425db4de5629103698b170ac4ee74  ofl/bungee/OFL.txt\nsha256 dc35123e99a857674b3e8807e9d7df82220d298423d9fc50ce084fbcdecf602d  ofl/jotione/OFL.txt\nsha256 76a55594c9a18b7d94b8119de838237eb834bae4e8c646d6d363aee587b7b427  ofl/slabo27px/OFL.txt\nsha256 ed50ebe2fa922554980909192526fe94966556626d6d440a462c8e7eaed74cdc  ofl/oflsortsmillgoudytt/OFL.txt\nsha256 d7b108fc1f23fb016a47bb40c63d6f6e04cc35a1edfb991638d7f03621bf7f33  ofl/terminaldosislight/OFL.txt\nsha256 71e5222c549d85a1403b6e709b4328b81d7b51ba021b8bd20df89550da80c087  ofl/yatraone/OFL.txt\nsha256 f139d6f43d2a63a8fb3ded48b8ec747d9d59a7fbb13d077d9b96ac88580bc1ad  ofl/dekko/OFL.txt\nsha256 84b11cc0aac8fdb93af94872bc4b8f015caabf4919db63ab7f916ccff8e52f56  ofl/josefinsansstdlight/OFL.txt\nsha256 8fbe530adcbe30c658393c3f2b5a4785d6765afcefdfe47f594730131f3a0abd  ofl/oleoscriptswashcaps/OFL.txt\nsha256 64dc6a7e2a77aa340c49c3e0829703f540f8d64afa506f44eaa6741580716d0f  ofl/gabriela/OFL.txt\nsha256 17d7a7f5d9f0139535ecec516988c4c73a2ec0f225987288f3fd6ee2622d4450  ofl/federant/OFL.txt\nsha256 c0a7efe98e77cbfcf1a5ca43e874e25cf53d9185c56295bc3b5c407f95dae638  ofl/nats/OFL.txt\nsha256 2ee5e8e47cd7d08f60bb9555f72b25912c9e81b13f5bc9a0551ddf943da6ca98  ofl/ekmukta/OFL.txt\nsha256 e5ccbfc32e4d7fae98b467a9af310ac8d2efd5d90e684426cd24f3eb36090a2c  ofl/acme/OFL.txt\nsha256 5fb0694694dc307d1eb0121689395e634b6329ff545acc53f55ad66a716b3cf1  ofl/modak/OFL.txt\nsha256 75a77451968e55a1ab404bd953bd8778983e21116d507b890fbcf838e58c8e8b  ofl/pavanam/OFL.txt\nsha256 36931b77dd81fa96fffad91b6acb54931e600845eb81f91ecf1b4459012c621a  ofl/vidaloka/OFL.txt\nsha256 5fb0694694dc307d1eb0121689395e634b6329ff545acc53f55ad66a716b3cf1  ofl/baloobhai/OFL.txt\nsha256 1c45059cea5c6798c8591b0a17961a30328747d44214ff9b8f9c62a683bd6598  ofl/ruda/OFL.txt\nsha256 0e441ae9f18ad0c294cc5b6ae3974c2db1614cab220598578b1b58c4cc334485  ofl/thegirlnextdoor/OFL.txt\nsha256 4dee45deee99672fbe342b2f4b7aa75b0cd12de18a68f9732c77f096bab47e0e  ofl/molengo/OFL.txt\nsha256 5a5cf278190adf8be3e9905c2b21460241cb376c600bdfd6eb7aceb66036c4bf  ofl/telex/OFL.txt\nsha256 bb49cbf811dafcb11e0de081efcdc8385e45ccc85a5bfc3231ec4861d444dc42  ofl/ruthie/OFL.txt\nsha256 b5c3d12a3085b96011fee65555234bb9d31fa7444cf6f8d5ae6b1f5771394399  ofl/lakkireddy/OFL.txt\nsha256 23b896f4937eac954a383340c92dfcac1c6e05ec21cc08ec6de47d30ad8496a3  ofl/charmonman/OFL.txt\nsha256 39602407e30d466bf169f46d690aaae4f5f039258e5642f91a80bb132ce6e14a  ofl/bubblerone/OFL.txt\nsha256 e31de7000a2a13b2e54ad01e788fd29e979fe05ea1fded44d6e71cc06e33bb2b  ofl/ralewaydots/OFL.txt\nsha256 8218df19bcd9786311bf1126815e8d591027aaf7611ef031af5a31c3fd66e928  ofl/arefruqaa/OFL.txt\nsha256 e37fcc467040ecd81bf4cf59c99ef56b20f57918995e82b3de1d5b4e931bc2e6  ofl/portlligatslab/OFL.txt\nsha256 60fea3a0da19167a3efb9c3792a3a15dc9235405d01bbec1233fdf3e79c74296  ofl/freckleface/OFL.txt\nsha256 da15da6b1496d4de18f97e2ad1b722ef8a1c121149c2c93b2cf7eac6ac27b35c  ofl/mplus1p/OFL.txt\nsha256 d51f3341fd7b3dfa1114d3ef0bdabbe57f60eef86a1458019e0077d676fa1fcb  ofl/lancelot/OFL.txt\nsha256 9134ca6996bd33ea2022e109f13f20e29dee1dcd8b2e8878aad576d2ca334e9f  ofl/cormorantinfant/OFL.txt\nsha256 cc8c0c3e81cf543e190f128b83ba7c30959f15865c14dd972fca4917faeceec1  ofl/encodesanssemicondensed/OFL.txt\nsha256 5946eec3a7d3bda02825930156e4716198e7753641dd3303a3e8c386c8011909  ofl/eater/OFL.txt\nsha256 b43e2530c7af69fe1800f180d210b6d2745915ed4e0e404495038c861bb6dbf7  ofl/hammersmithone/OFL.txt\nsha256 5a8751bef5a4fc867ae015099267905034345260f14060fa276aac4051ddd8b4  ofl/varela/OFL.txt\nsha256 f6fc9fbae062e4efc1b0306e27715d43cd64a48b8ffba81c22034b8efee4fce2  ofl/cabinsketch/OFL.txt\nsha256 2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002  ufl/ubuntucondensed/LICENCE.txt\nsha256 2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002  ufl/ubuntumono/LICENCE.txt\nsha256 2f0015108d68627bd788d313f529c21ff4da2c2c42a5e1f3883acc83480f9002  ufl/ubuntu/LICENCE.txt\n"
  },
  {
    "path": "package/googlefontdirectory/googlefontdirectory.mk",
    "content": "################################################################################\n#\n# googlefontdirectory\n#\n################################################################################\n\nGOOGLEFONTDIRECTORY_VERSION = 94dff3eaa9301b6640cccc63c56d6ff33d82882c\nGOOGLEFONTDIRECTORY_SITE = $(call github,google,fonts,$(GOOGLEFONTDIRECTORY_VERSION))\n\nGOOGLEFONTDIRECTORY_FONTS = \\\n\t$(call qstrip,$(BR2_PACKAGE_GOOGLEFONTDIRECTORY_FONTS))\n\nifneq ($(filter apache/%,$(GOOGLEFONTDIRECTORY_FONTS)),)\nGOOGLEFONTDIRECTORY_ALL_LICENSES += Apache-2.0\nGOOGLEFONTDIRECTORY_LICENSE_FILES += $(addsuffix /LICENSE.txt,$(filter apache/%,$(GOOGLEFONTDIRECTORY_FONTS)))\nendif\n\nifneq ($(filter ofl/%,$(GOOGLEFONTDIRECTORY_FONTS)),)\nGOOGLEFONTDIRECTORY_ALL_LICENSES += OFL-1.1\nGOOGLEFONTDIRECTORY_LICENSE_FILES += $(addsuffix /OFL.txt,$(filter ofl/%,$(GOOGLEFONTDIRECTORY_FONTS)))\nendif\n\nifneq ($(filter ufl/%,$(GOOGLEFONTDIRECTORY_FONTS)),)\nGOOGLEFONTDIRECTORY_ALL_LICENSES += UFL-1.1\nGOOGLEFONTDIRECTORY_LICENSE_FILES += $(addsuffix /LICENCE.txt,$(filter ufl/%,$(GOOGLEFONTDIRECTORY_FONTS)))\nendif\n\nGOOGLEFONTDIRECTORY_LICENSE = $(subst $(space),$(comma)$(space),$(GOOGLEFONTDIRECTORY_ALL_LICENSES))\n\ndefine GOOGLEFONTDIRECTORY_INSTALL_TARGET_CMDS\n\t$(foreach d,$(GOOGLEFONTDIRECTORY_FONTS), \\\n\t\tmkdir -p $(TARGET_DIR)/usr/share/fonts/$(notdir $(d))\n\t\t$(INSTALL) -m 0644 -t $(TARGET_DIR)/usr/share/fonts/$(notdir $(d)) $(@D)/$(d)/*.ttf\n\t)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/gperf/Config.in",
    "content": "config BR2_PACKAGE_GPERF\n\tbool \"gperf\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  A 'perfect hash function' generator\n\n\t  http://www.gnu.org/software/gperf/\n\ncomment \"gperf needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/gperf/gperf.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz.sig\n# with key 93C08C88471097CD\nsha256\t588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2\tgperf-3.1.tar.gz\n\n# Locally calculated\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\tCOPYING\n"
  },
  {
    "path": "package/gperf/gperf.mk",
    "content": "################################################################################\n#\n# gperf\n#\n################################################################################\n\nGPERF_VERSION = 3.1\nGPERF_SITE = $(BR2_GNU_MIRROR)/gperf\nGPERF_LICENSE = GPL-3.0+\nGPERF_LICENSE_FILES = COPYING\nGPERF_CPE_ID_VENDOR = gperftools_project\nGPERF_CPE_ID_PRODUCT = gperftools\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch",
    "content": "From eb0e14f8a5c414603b2e882df54b9fec138104ec Mon Sep 17 00:00:00 2001\nFrom: Dima Krasner <dima@dimakrasner.com>\nDate: Wed, 12 Nov 2014 23:06:46 +0200\nSubject: [PATCH] Added musl support to libgpm and the daemon.\n\n[Upstream patch backported from the github repository,\nhttps://github.com/telmich/gpm/commit/d88fb1de5803c366ab62f7de9ee5d83207fb2afe.]\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n src/daemon/open_console.c  | 1 +\n src/prog/display-buttons.c | 1 +\n src/prog/display-coords.c  | 1 +\n src/prog/gpm-root.y        | 4 ++--\n 4 files changed, 5 insertions(+), 2 deletions(-)\n\ndiff --git a/src/daemon/open_console.c b/src/daemon/open_console.c\nindex 98297c9..4d6c0af 100644\n--- a/src/daemon/open_console.c\n+++ b/src/daemon/open_console.c\n@@ -21,6 +21,7 @@\n \n #include <fcntl.h>                  /* open and co.      */\n #include <sys/stat.h>               /* stat()            */\n+#include <sys/types.h>              /* major()           */\n #include <sys/ioctl.h>              /* ioctl             */\n \n /* Linux specific (to be outsourced in gpm2 */\ndiff --git a/src/prog/display-buttons.c b/src/prog/display-buttons.c\nindex de8e5b2..38d2f11 100644\n--- a/src/prog/display-buttons.c\n+++ b/src/prog/display-buttons.c\n@@ -36,6 +36,7 @@\n #include <stdio.h>            /* printf()             */\n #include <time.h>             /* time()               */\n #include <errno.h>            /* errno                */\n+#include <sys/select.h>       /* fd_set and FD_*      */\n #include <gpm.h>              /* gpm information      */\n \n /* display resulting data */\ndiff --git a/src/prog/display-coords.c b/src/prog/display-coords.c\nindex ed15c8a..411283a 100644\n--- a/src/prog/display-coords.c\n+++ b/src/prog/display-coords.c\n@@ -37,6 +37,7 @@\n #include <stdio.h>            /* printf()             */\n #include <time.h>             /* time()               */\n #include <errno.h>            /* errno                */\n+#include <sys/select.h>       /* fd_set and FD_*      */\n #include <gpm.h>              /* gpm information      */\n \n /* display resulting data */\ndiff --git a/src/prog/gpm-root.y b/src/prog/gpm-root.y\nindex 069d801..188ae35 100644\n--- a/src/prog/gpm-root.y\n+++ b/src/prog/gpm-root.y\n@@ -1199,9 +1199,9 @@ int main(int argc, char **argv)\n #if defined(__GLIBC__)\n    __sigemptyset(&childaction.sa_mask);\n #else /* __GLIBC__ */\n-   childaction.sa_mask=0;\n+   sigemptyset(&childaction.sa_mask);\n #endif /* __GLIBC__ */\n-   childaction.sa_flags=SA_INTERRUPT; /* need to break the select() call */\n+   childaction.sa_flags=0;\n    sigaction(SIGCHLD,&childaction,NULL);\n \n    /*....................................... Connect and get your buffer */\n-- \n2.1.0\n\n"
  },
  {
    "path": "package/gpm/0002-Install-unversioned-solibrary.patch",
    "content": "From 06b00d53d8bd513ad5d262dc94a016c6fbf2d3aa Mon Sep 17 00:00:00 2001\nFrom: Kamil Rytarowski <n54@gmx.com>\nDate: Sat, 4 May 2013 01:30:17 +0200\nSubject: [PATCH] Install unversioned solibrary\n\nUnversioned solibraries are shipped with -devel packages in Linux\ndistros. Generate and install it for the consistency.\n\n[Upstream patch backported from the github repository,\nhttps://github.com/telmich/gpm/commit/06b00d53d8bd513ad5d262dc94a016c6fbf2d3aa]\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n src/Makefile.in | 7 +++----\n 1 file changed, 3 insertions(+), 4 deletions(-)\n\ndiff --git a/src/Makefile.in b/src/Makefile.in\nindex 6b60ad3..7e9e2ef 100644\n--- a/src/Makefile.in\n+++ b/src/Makefile.in\n@@ -79,7 +79,7 @@ prog/%:\tprog/%.o\n #\t\t| $(SED) '\\''s/\\($*\\)\\.o\\([ :]*\\)/\\1.o \\1.lo\\2/g'\\'' > $(DEPDIR)/$@'\n \n # Do it all!\n-all:\tgpm lib/libgpm.so.@abi_lev@ @LIBGPM_A@ $(PROG)\n+all:\tgpm lib/libgpm.so.@abi_lev@ lib/libgpm.so @LIBGPM_A@ $(PROG)\n \n gpm:\t$(GOBJ)\n \t$(CC) @LDFLAGS@ $(LDFLAGS) -o $@ $(GOBJ) @LIBS@ $(LIBS) -lm\n@@ -168,9 +168,8 @@ lib/libgpm.so.@abi_full@:\t$(PICS)\n \t@LDFLAGS@ $(LDFLAGS) -o lib/libgpm.so.@abi_full@ $^ @LIBS@ @SHARED_LIBS@ $(LIBS)\t\n lib/libgpm.so.@abi_lev@:\tlib/libgpm.so.@abi_full@\n \t$(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so.@abi_lev@\n-# unneeded, isn't it?\n-#lib/libgpm.so:\tlib/libgpm.so.@abi_full@\n-#\t$(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so\n+lib/libgpm.so:\tlib/libgpm.so.@abi_full@\n+\t$(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so\n \n include $(DEPFILE)\n \n"
  },
  {
    "path": "package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch",
    "content": "From 445be05fba32c512fd87a0c98b4e9936629ef95e Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sat, 20 Feb 2016 17:59:52 +0100\nSubject: [PATCH 1/1] src/Makefile.in: Really install unversioned solibrary\n\nThis commit is a follow-up to\nhttps://github.com/telmich/gpm/commit/06b00d53d8bd513ad5d262dc94a016c6fbf2d3aa\nwhich created libgpm.so but failed to include it in the install target.\n\nPatch sent upstream: https://github.com/telmich/gpm/pull/11\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n src/Makefile.in | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/Makefile.in b/src/Makefile.in\nindex 7e9e2ef..bca226f 100644\n--- a/src/Makefile.in\n+++ b/src/Makefile.in\n@@ -115,6 +115,7 @@ install:\tcheck\n \tif test \"x@SHLIB@\" != \"x\" ; then \\\n \t\t$(INSTALL_DATA) -m 755 lib/libgpm.so.@abi_full@ $(libdir)/libgpm.so.@abi_full@\t;\t\\\n \t\tcd $(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so.@abi_lev@ \t\t\t\t\t;\t\\\n+\t\tcd $(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so \t\t\t\t\t;\t\\\n       echo \"WARNING: We installed a lib, you should now call ldconfig\" \t\t\t\t\t\t; \t\\\n       echo \"f.i.: ldconfig -n -l $(libdir)/libgpm.so.@abi_full@\" \t\t\t\t\t\t\t\t;\t\\\n       echo \"Or to update everything just type ldconfig\"\t\t\t\t\t\t\t\t\t\t\t;\t\\\n-- \n2.7.0\n\n"
  },
  {
    "path": "package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch",
    "content": "From fdc42770596e25749f7e2ce0ea97882177397167 Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Sun, 25 Jun 2017 07:25:33 -0700\nSubject: [PATCH] Use sigemptyset API instead of __sigemptyset\n\n__sigemptyset has been removed from glibc public\nAPI headers in upcoming (2.26) release onwards\n\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n---\n src/prog/gpm-root.y | 4 ----\n 1 file changed, 4 deletions(-)\n\ndiff --git a/src/prog/gpm-root.y b/src/prog/gpm-root.y\nindex 5126c65..76c896c 100644\n--- a/src/prog/gpm-root.y\n+++ b/src/prog/gpm-root.y\n@@ -1196,11 +1196,7 @@ int main(int argc, char **argv)\n                                                         LOG_DAEMON : LOG_USER);\n    /* reap your zombies */\n    childaction.sa_handler=reap_children;\n-#if defined(__GLIBC__)\n-   __sigemptyset(&childaction.sa_mask);\n-#else /* __GLIBC__ */\n    sigemptyset(&childaction.sa_mask);\n-#endif /* __GLIBC__ */\n    childaction.sa_flags=0;\n    sigaction(SIGCHLD,&childaction,NULL);\n \n-- \n2.14.2\n\n"
  },
  {
    "path": "package/gpm/0005-fix-building-w-newer-glibc.patch",
    "content": "From b350aee4ea5785a75cb6ad770f6b768c506ebb70 Mon Sep 17 00:00:00 2001\nFrom: Mike Frysinger <vapier@gentoo.org>\nDate: Mon, 14 Mar 2016 15:39:54 -0400\nSubject: [PATCH] fix building w/newer glibc\n\nLinux C libraries are looking to disentangle sysmacros.h from the\nsys/types.h include, so make sure we pull in the header when it is\nfound.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>\n---\n src/daemon/open_console.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/src/daemon/open_console.c b/src/daemon/open_console.c\nindex 4d6c0af..6dd43e6 100644\n--- a/src/daemon/open_console.c\n+++ b/src/daemon/open_console.c\n@@ -24,6 +24,10 @@\n #include <sys/types.h>              /* major()           */\n #include <sys/ioctl.h>              /* ioctl             */\n \n+#ifdef HAVE_SYS_SYSMACROS_H\n+#include <sys/sysmacros.h>          /* major() w/newer glibc */\n+#endif\n+\n /* Linux specific (to be outsourced in gpm2 */\n #include <linux/serial.h>           /* for serial console check */\n #include <asm/ioctls.h>            /* for serial console check */\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/gpm/0006-src-headers-daemon.h-avoid-redefinition-of-last_sele.patch",
    "content": "From f04f24dd5ca5c1c13608b144ab66e2ccd47f106a Mon Sep 17 00:00:00 2001\nFrom: Sergei Trofimovich <slyfox@gentoo.org>\nDate: Sun, 19 Jan 2020 19:53:41 +0000\nSubject: [PATCH] src/headers/daemon.h: avoid redefinition of\n 'last_selection_time'\n\nNoticed build failure on gcc-10 as:\n\n```\ngcc  -L/home/slyfox/dev/git/gpm/src  -o gpm mice.o ... report.o tools.o   -lm\nld: twiddler.o:gpm/src/headers/daemon.h:183:\n  multiple definition of `last_selection_time'; mice.o:gpm/src/headers/daemon.h:183: first defined here\nld: synaptics.o:git/gpm/src/headers/daemon.h:183:\n  multiple definition of `last_selection_time'; mice.o:git/gpm/src/headers/daemon.h:183: first defined here\n```\n\ngcc-10 will change the default from -fcommon to fno-common:\nhttps://gcc.gnu.org/PR85678.\n\nThe error also happens if CFLAGS=-fno-common passed explicitly.\n\nSigned-off-by: Sergei Trofimovich <slyfox@gentoo.org>\nSigned-off-by: Heiko Thiery <heiko.thiery@gmail.com>\n---\n src/headers/daemon.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/headers/daemon.h b/src/headers/daemon.h\nindex a8936ad..24a1a97 100644\n--- a/src/headers/daemon.h\n+++ b/src/headers/daemon.h\n@@ -180,7 +180,7 @@ extern struct mouse_features  mouse_table[3],\n extern Gpm_Type         mice[];\n extern Gpm_Type         *repeated_type;\n \n-time_t                  last_selection_time;\n+extern time_t           last_selection_time;\n \n \n \n-- \n2.20.1\n\n"
  },
  {
    "path": "package/gpm/Config.in",
    "content": "config BR2_PACKAGE_GPM\n\tbool \"gpm\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  \"gpm\" means general purpose mouse (server) and provides mouse\n\t  support for Linux virtual consoles.\n\t  gpm-root (to draw menus in current virtual console; config\n\t  file in /etc/gpm-root.conf) and disable-paste (to disable\n\t  paste buffer for security reasons), will also be installed.\n\n\t  http://www.nico.schottelius.org/software/gpm/\n\nif BR2_PACKAGE_GPM\n\nconfig BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS\n\tbool \"install test tools\"\n\thelp\n\t  Install gpm test tools (get-versions, mev, hltest, mouse-test,\n\t  display-buttons & display-coords).\n\nendif\n\ncomment \"gpm mouse server needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/gpm/gpm.hash",
    "content": "# Locally computed:\nsha256  a955053b36556ffa7c628ce18fd6de7d625966573fa412fb08869533d8f7385c  gpm-1.20.7.tar.lzma\nsha256  1b2a567f289f66a143c56353e7b3d4fa5862514a5e3c5cfdf8b02ee5e5aaa953  COPYING\n"
  },
  {
    "path": "package/gpm/gpm.mk",
    "content": "################################################################################\n#\n# gpm\n#\n################################################################################\n\nGPM_VERSION = 1.20.7\nGPM_SOURCE = gpm-$(GPM_VERSION).tar.lzma\nGPM_SITE = http://www.nico.schottelius.org/software/gpm/archives\nGPM_LICENSE = GPL-2.0+\nGPM_LICENSE_FILES = COPYING\nGPM_SELINUX_MODULES = gpm\nGPM_INSTALL_STAGING = YES\nGPM_DEPENDENCIES = host-bison\n\n# if not already installed in staging dir, gpm Makefile may fail to find some\n# of the headers needed to generate build dependencies, the first time it is\n# built. CPPFLAGS is used to pass the right include path to dependency rules.\nGPM_CONF_ENV = \\\n\tCPPFLAGS=\"$(TARGET_CPPFLAGS) -I$(@D)/src/headers/\" \\\n\tac_cv_path_emacs=no\n\n# For some reason, Microblaze gcc does not define __ELF__, which gpm\n# configure script uses to determine whether the architecture uses ELF\n# binaries and therefore can build shared libraries. We fix this by\n# telling GPM that ELF is used on Microblaze.\nifeq ($(BR2_microblaze),y)\nGPM_CONF_ENV += itz_cv_sys_elf=yes\nendif\n\n# gpm and ncurses have a circular dependency. As gpm function GPM_Wgetch()\n# (requiring ncurses) is not recommended for use by ncurses people themselves\n# and as it's better to have gpm support in ncurses that the contrary, we force\n# gpm to not look after ncurses explicitly.\n# http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib\nGPM_CONF_OPTS = --without-curses\n\n# configure is missing but gpm seems not compatible with our autoreconf\n# mechanism so we have to do it manually instead of using GPM_AUTORECONF = YES\ndefine GPM_RUN_AUTOGEN\n\tcd $(@D) && PATH=$(BR_PATH) ./autogen.sh\nendef\nGPM_PRE_CONFIGURE_HOOKS += GPM_RUN_AUTOGEN\n\nGPM_DEPENDENCIES += host-automake host-autoconf host-libtool\n\n# gpm tries to build/install .info doc even if makeinfo isn't installed on the\n# host, so we have to disable global doc installation to prevent autobuild\n# errors.\ndefine GPM_DISABLE_DOC_INSTALL\n\t$(SED) 's/SUBDIRS = src doc contrib/SUBDIRS = src contrib/' \\\n\t\t$(@D)/Makefile.in\nendef\nGPM_POST_PATCH_HOOKS += GPM_DISABLE_DOC_INSTALL\n\nifeq ($(BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS),)\ndefine GPM_REMOVE_TEST_TOOLS_FROM_TARGET\n\tfor tools in mev hltest mouse-test display-buttons \\\n\t\tget-versions display-coords; do \\\n\t\t\trm -f $(TARGET_DIR)/usr/bin/$$tools ; \\\n\tdone\nendef\nGPM_POST_INSTALL_TARGET_HOOKS += GPM_REMOVE_TEST_TOOLS_FROM_TARGET\nendif\n\ndefine GPM_INSTALL_GPM_ROOT_CONF_ON_TARGET\n\t$(INSTALL) -m 0644 -D $(@D)/conf/gpm-root.conf $(TARGET_DIR)/etc/\nendef\n\nGPM_POST_INSTALL_TARGET_HOOKS += GPM_INSTALL_GPM_ROOT_CONF_ON_TARGET\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gpsd/Config.in",
    "content": "comment \"gpsd needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nmenuconfig BR2_PACKAGE_GPSD\n\tbool \"gpsd\"\n\t# Uses fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# Always tries to build a shared library\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  gpsd is a service daemon that monitors one or more GPSes or\n\t  AIS receivers attached to a host computer through serial or\n\t  USB ports, making all data on the location/course/velocity of\n\t  the sensors available to be queried on TCP port 2947 of the\n\t  host computer.\n\n\t  The D-Bus interface is included if dbus-glib is enabled.\n\n\t  https://gpsd.gitlab.io/gpsd\n\nif BR2_PACKAGE_GPSD\n\nconfig BR2_PACKAGE_GPSD_DEVICES\n\tstring \"Where to look for GPSes\"\n\tdefault \"/dev/ttyS1\"\n\ncomment \"Features\"\n\nconfig BR2_PACKAGE_GPSD_CLIENT_DEBUG\n\tbool \"client debugging support\"\n\nconfig BR2_PACKAGE_GPSD_OLDSTYLE\n\tbool \"oldstyle (pre-JSON) protocol support\"\n\nconfig BR2_PACKAGE_GPSD_PROFILING\n\tbool \"profiling support\"\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on !BR2_aarch64\n\t# Needs glibc for ARC arc-2018.03-eng007+ for correct __mcount linking\n\tdepends on !BR2_arc\n\ncomment \"profiling support not available with uClibc-based toolchain\"\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n\nconfig BR2_PACKAGE_GPSD_USER\n\tbool \"GPSD privilege revocation user\"\n\nconfig BR2_PACKAGE_GPSD_USER_VALUE\n\tstring \"user to run as\"\n\tdefault \"nobody\"\n\tdepends on BR2_PACKAGE_GPSD_USER\n\nconfig BR2_PACKAGE_GPSD_GROUP\n\tbool \"GPSD privilege revocation group\"\n\nconfig BR2_PACKAGE_GPSD_GROUP_VALUE\n\tstring \"group to run as\"\n\tdefault \"nobody\"\n\tdepends on BR2_PACKAGE_GPSD_GROUP\n\nconfig BR2_PACKAGE_GPSD_MAX_CLIENT\n\tbool \"compile with limited maximum clients\"\n\nconfig BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE\n\tint \"maximum number of clients\"\n\tdefault \"10\"\n\tdepends on BR2_PACKAGE_GPSD_MAX_CLIENT\n\nconfig BR2_PACKAGE_GPSD_MAX_DEV\n\tbool \"compile with maximum allowed devices\"\n\nconfig BR2_PACKAGE_GPSD_MAX_DEV_VALUE\n\tint \"maximum allowed devices\"\n\tdefault \"2\"\n\tdepends on BR2_PACKAGE_GPSD_MAX_DEV\n\nconfig BR2_PACKAGE_GPSD_SQUELCH\n\tbool \"squelch gpsd_report and gpsd_hexdump to save cpu\"\n\nconfig BR2_PACKAGE_GPSD_PYTHON\n\tbool \"build Python support and modules\"\n\tdepends on BR2_USE_WCHAR # python\n\tselect BR2_PACKAGE_PYTHON3 if !BR2_PACKAGE_PYTHON\n\thelp\n\t  Python libraries and tools for the gpsd service daemon\n\t  including gpsfake test harness.\n\ncomment \"GPSD python support not available with toolchain w/o wide characters support\"\n\tdepends on !BR2_USE_WCHAR\n\ncomment \"Protocols\"\n\nconfig BR2_PACKAGE_GPSD_AIVDM\n\tbool \"Aivdm\"\n\thelp\n\t  Aivdm support\n\nconfig BR2_PACKAGE_GPSD_ASHTECH\n\tbool \"Ashtech\"\n\thelp\n\t  Ashtech support\n\nconfig BR2_PACKAGE_GPSD_EARTHMATE\n\tbool \"Earthmate\"\n\thelp\n\t  DeLorme EarthMate Zodiac support\n\nconfig BR2_PACKAGE_GPSD_EVERMORE\n\tbool \"EverMore\"\n\thelp\n\t  EverMore binary support\n\nconfig BR2_PACKAGE_GPSD_FURY\n\tbool \"Fury\"\n\thelp\n\t  Jackson Labs Fury and Firefly support\n\nconfig BR2_PACKAGE_GPSD_FV18\n\tbool \"FV-18\"\n\thelp\n\t  San Jose Navigation FV-18 support\n\nconfig BR2_PACKAGE_GPSD_GARMIN\n\tbool \"Garmin (kernel)\"\n\thelp\n\t  Garmin kernel driver support\n\nconfig BR2_PACKAGE_GPSD_GARMIN_SIMPLE_TXT\n\tbool \"Garmin (simple text)\"\n\thelp\n\t  Garmin Simple Text support\n\nconfig BR2_PACKAGE_GPSD_GEOSTAR\n\tbool \"Geostar\"\n\thelp\n\t  Geostar Protocol support\n\nconfig BR2_PACKAGE_GPSD_GPSCLOCK\n\tbool \"GPSClock\"\n\thelp\n\t  GPSClock support\n\nconfig BR2_PACKAGE_GPSD_GREIS\n\tbool \"Greis\"\n\thelp\n\t  Greis support\n\nconfig BR2_PACKAGE_GPSD_ISYNC\n\tbool \"iSync\"\n\thelp\n\t  Spectratime iSync LNRClok/GRCLOK support\n\nconfig BR2_PACKAGE_GPSD_ITRAX\n\tbool \"iTrax\"\n\thelp\n\t  iTrax support\n\nconfig BR2_PACKAGE_GPSD_MTK3301\n\tbool \"MTK-3301\"\n\thelp\n\t  Mediatek MTK-3301 support\n\nconfig BR2_PACKAGE_GPSD_NAVCOM\n\tbool \"Navcom\"\n\thelp\n\t  Navcom binary support\n\nconfig BR2_PACKAGE_GPSD_NMEA\n\tbool \"NMEA\"\n\tdefault y\n\thelp\n\t  Generic NMEA support\n\nconfig BR2_PACKAGE_GPSD_NMEA2000\n\tbool \"NMEA2000\"\n\tselect BR2_PACKAGE_GPSD_NAVCOM\n\tselect BR2_PACKAGE_GPSD_AIVDM\n\thelp\n\t  NMEA2000/CAN support\n\nconfig BR2_PACKAGE_GPSD_NTRIP\n\tbool \"NTRIP\"\n\thelp\n\t  NTRIP support\n\nconfig BR2_PACKAGE_GPSD_OCEANSERVER\n\tbool \"OceanServer\"\n\thelp\n\t  OceanServer Digital Compass support\n\nconfig BR2_PACKAGE_GPSD_ONCORE\n\tbool \"OnCore\"\n\thelp\n\t  OnCore support\n\nconfig BR2_PACKAGE_GPSD_RTCM104V2\n\tbool \"RTCM104 v2\"\n\thelp\n\t  RTCM104 v2 support\n\nconfig BR2_PACKAGE_GPSD_RTCM104V3\n\tbool \"RTCM104 v3\"\n\thelp\n\t  RTCM104 v3 support\n\nconfig BR2_PACKAGE_GPSD_SIRF\n\tbool \"SiRF\"\n\thelp\n\t  SiRF binary support\n\nconfig BR2_PACKAGE_GPSD_SKYTRAQ\n\tbool \"Skytraq\"\n\thelp\n\t  Skytraq support\n\nconfig BR2_PACKAGE_GPSD_SUPERSTAR2\n\tbool \"SuperStarII\"\n\thelp\n\t  Novatel SuperStarII binary support\n\nconfig BR2_PACKAGE_GPSD_TRIMBLE_TSIP\n\tbool \"Trimble TSIP\"\n\thelp\n\t  Trimble TSIP support\n\nconfig BR2_PACKAGE_GPSD_TRIPMATE\n\tbool \"TripMate\"\n\thelp\n\t  Delorme TripMate support\n\nconfig BR2_PACKAGE_GPSD_TRUE_NORTH\n\tbool \"True North Technologies\"\n\thelp\n\t  True North Technologies support\n\nconfig BR2_PACKAGE_GPSD_UBX\n\tbool \"UBX\"\n\thelp\n\t  uBlox UBX binary support\n\nendif\n"
  },
  {
    "path": "package/gpsd/S50gpsd",
    "content": "#!/bin/sh\n#\n# Starts the gps daemon.\n#\n\nNAME=gpsd\nDAEMON=/usr/sbin/$NAME\nDEVICES=/dev/ttyS1\nPIDFILE=/var/run/$NAME.pid\n\nstart() {\n        printf \"Starting $NAME: \"\n        start-stop-daemon -S -q -p $PIDFILE --exec $DAEMON -- -P $PIDFILE $DEVICES && echo \"OK\" || echo \"Failed\"\n}\nstop() {\n        printf \"Stopping $NAME: \"\n        start-stop-daemon -K -q -p $PIDFILE && echo \"OK\" || echo \"Failed\"\n        rm -f $PIDFILE\n}\nrestart() {\n        stop\n        start\n}\n\ncase \"$1\" in\n  start)\n        start\n        ;;\n  stop)\n        stop\n        ;;\n  restart|reload)\n        restart\n        ;;\n  *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/gpsd/gpsd.hash",
    "content": "# Locally calculated\nsha256  0b991ce9a46538c4ea450f7a8ee428ff44fb4f8d665fddf2ffe40fe0ae9a6c09  gpsd-3.23.1.tar.gz\nsha256  fdf339997bbca9eaf507476b82fbcac608fc39a3d89b86b51e16db4c9f933716  COPYING\n"
  },
  {
    "path": "package/gpsd/gpsd.mk",
    "content": "################################################################################\n#\n# gpsd\n#\n################################################################################\n\nGPSD_VERSION = 3.23.1\nGPSD_SITE = http://download-mirror.savannah.gnu.org/releases/gpsd\nGPSD_LICENSE = BSD-2-Clause\nGPSD_LICENSE_FILES = COPYING\nGPSD_CPE_ID_VENDOR = gpsd_project\nGPSD_SELINUX_MODULES = gpsd\nGPSD_INSTALL_STAGING = YES\n\nGPSD_DEPENDENCIES = host-python3 host-scons host-pkgconf\n\nGPSD_LDFLAGS = $(TARGET_LDFLAGS)\nGPSD_CFLAGS = $(TARGET_CFLAGS)\nGPSD_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nGPSD_SCONS_ENV = $(TARGET_CONFIGURE_OPTS)\n\nGPSD_SCONS_OPTS = \\\n\tarch=$(ARCH) \\\n\tmanbuild=no \\\n\tprefix=/usr \\\n\tsysroot=$(STAGING_DIR) \\\n\tstrip=no \\\n\tqt=no \\\n\tsystemd=$(if $(BR2_INIT_SYSTEMD),yes,no)\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nGPSD_DEPENDENCIES += ncurses\nelse\nGPSD_SCONS_OPTS += ncurses=no\nendif\n\n# Build libgpsmm if we've got C++\nifeq ($(BR2_INSTALL_LIBSTDCPP),y)\nGPSD_LDFLAGS += -lstdc++\nGPSD_CFLAGS += -std=gnu++98\nGPSD_CXXFLAGS += -std=gnu++98\nGPSD_SCONS_OPTS += libgpsmm=yes\nelse\nGPSD_SCONS_OPTS += libgpsmm=no\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)\nGPSD_CFLAGS += -O0\nGPSD_CXXFLAGS += -O0\nendif\n\n# If libusb is available build it before so the package can use it\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nGPSD_DEPENDENCIES += libusb\nelse\nGPSD_SCONS_OPTS += usb=no\nendif\n\n# If bluetooth is available build it before so the package can use it\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y)\nGPSD_DEPENDENCIES += bluez5_utils\nelse\nGPSD_SCONS_OPTS += bluez=no\nendif\n\n# If pps-tools is available, build it before so the package can use it\n# (HAVE_SYS_TIMEPPS_H).\nifeq ($(BR2_PACKAGE_PPS_TOOLS),y)\nGPSD_DEPENDENCIES += pps-tools\nendif\n\nifeq ($(BR2_PACKAGE_DBUS_GLIB),y)\nGPSD_SCONS_OPTS += dbus_export=yes\nGPSD_DEPENDENCIES += dbus-glib\nendif\n\n# Protocol support\nifneq ($(BR2_PACKAGE_GPSD_ASHTECH),y)\nGPSD_SCONS_OPTS += ashtech=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_AIVDM),y)\nGPSD_SCONS_OPTS += aivdm=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_EARTHMATE),y)\nGPSD_SCONS_OPTS += earthmate=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_EVERMORE),y)\nGPSD_SCONS_OPTS += evermore=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_FURY),y)\nGPSD_SCONS_OPTS += fury=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_FV18),y)\nGPSD_SCONS_OPTS += fv18=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_GARMIN),y)\nGPSD_SCONS_OPTS += garmin=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_GARMIN_SIMPLE_TXT),y)\nGPSD_SCONS_OPTS += garmintxt=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_GEOSTAR),y)\nGPSD_SCONS_OPTS += geostar=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_GPSCLOCK),y)\nGPSD_SCONS_OPTS += gpsclock=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_GREIS),y)\nGPSD_SCONS_OPTS += greis=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_ISYNC),y)\nGPSD_SCONS_OPTS += isync=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_ITRAX),y)\nGPSD_SCONS_OPTS += itrax=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_MTK3301),y)\nGPSD_SCONS_OPTS += mtk3301=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_NMEA),y)\nGPSD_SCONS_OPTS += nmea0183=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_NTRIP),y)\nGPSD_SCONS_OPTS += ntrip=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_NAVCOM),y)\nGPSD_SCONS_OPTS += navcom=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_NMEA2000),y)\nGPSD_SCONS_OPTS += nmea2000=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_OCEANSERVER),y)\nGPSD_SCONS_OPTS += oceanserver=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_ONCORE),y)\nGPSD_SCONS_OPTS += oncore=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_RTCM104V2),y)\nGPSD_SCONS_OPTS += rtcm104v2=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_RTCM104V3),y)\nGPSD_SCONS_OPTS += rtcm104v3=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_SIRF),y)\nGPSD_SCONS_OPTS += sirf=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_SKYTRAQ),y)\nGPSD_SCONS_OPTS += skytraq=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_SUPERSTAR2),y)\nGPSD_SCONS_OPTS += superstar2=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_TRIMBLE_TSIP),y)\nGPSD_SCONS_OPTS += tsip=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_TRIPMATE),y)\nGPSD_SCONS_OPTS += tripmate=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_TRUE_NORTH),y)\nGPSD_SCONS_OPTS += tnt=no\nendif\nifneq ($(BR2_PACKAGE_GPSD_UBX),y)\nGPSD_SCONS_OPTS += ublox=no\nendif\n\n# Features\nifeq ($(BR2_PACKAGE_GPSD_SQUELCH),y)\nGPSD_SCONS_OPTS += squelch=yes\nendif\nifneq ($(BR2_PACKAGE_GPSD_OLDSTYLE),y)\nGPSD_SCONS_OPTS += oldstyle=no\nendif\nifeq ($(BR2_PACKAGE_GPSD_PROFILING),y)\nGPSD_SCONS_OPTS += profiling=yes\nendif\nifneq ($(BR2_PACKAGE_GPSD_CLIENT_DEBUG),y)\nGPSD_SCONS_OPTS += clientdebug=no\nendif\nifeq ($(BR2_PACKAGE_GPSD_USER),y)\nGPSD_SCONS_OPTS += gpsd_user=$(BR2_PACKAGE_GPSD_USER_VALUE)\nendif\nifeq ($(BR2_PACKAGE_GPSD_GROUP),y)\nGPSD_SCONS_OPTS += gpsd_group=$(BR2_PACKAGE_GPSD_GROUP_VALUE)\nendif\nifeq ($(BR2_PACKAGE_GPSD_MAX_CLIENT),y)\nGPSD_SCONS_OPTS += max_clients=$(BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE)\nendif\nifeq ($(BR2_PACKAGE_GPSD_MAX_DEV),y)\nGPSD_SCONS_OPTS += max_devices=$(BR2_PACKAGE_GPSD_MAX_DEV_VALUE)\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nGPSD_SCONS_OPTS += \\\n\tpython=yes \\\n\tpython_libdir=\"/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages\"\nelse ifeq ($(BR2_PACKAGE_PYTHON),y)\nGPSD_SCONS_OPTS += \\\n\tpython=yes \\\n\tpython_libdir=\"/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages\"\nelse\nGPSD_SCONS_OPTS += python=no\nendif\n\nGPSD_SCONS_ENV += \\\n\tLDFLAGS=\"$(GPSD_LDFLAGS)\" \\\n\tCFLAGS=\"$(GPSD_CFLAGS)\" \\\n\tCCFLAGS=\"$(GPSD_CFLAGS)\" \\\n\tCXXFLAGS=\"$(GPSD_CXXFLAGS)\"\n\ndefine GPSD_BUILD_CMDS\n\t(cd $(@D); \\\n\t\t$(GPSD_SCONS_ENV) \\\n\t\t$(HOST_DIR)/bin/python3 $(SCONS) \\\n\t\t$(GPSD_SCONS_OPTS))\nendef\n\ndefine GPSD_INSTALL_TARGET_CMDS\n\t(cd $(@D); \\\n\t\t$(GPSD_SCONS_ENV) \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\t$(HOST_DIR)/bin/python3 $(SCONS) \\\n\t\t$(GPSD_SCONS_OPTS) \\\n\t\t$(if $(BR2_PACKAGE_HAS_UDEV),udev-install,install))\nendef\n\ndefine GPSD_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/gpsd/S50gpsd $(TARGET_DIR)/etc/init.d/S50gpsd\n\t$(SED) 's,^DEVICES=.*,DEVICES=$(BR2_PACKAGE_GPSD_DEVICES),' $(TARGET_DIR)/etc/init.d/S50gpsd\nendef\n\n# systemd unit files are installed automatically, but need to update the\n# /usr/local path references in the provided files to /usr.\ndefine GPSD_INSTALL_INIT_SYSTEMD\n\t$(SED) 's%/usr/local%/usr%' \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/gpsd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/gpsdctl@.service\nendef\n\ndefine GPSD_INSTALL_STAGING_CMDS\n\t(cd $(@D); \\\n\t\t$(GPSD_SCONS_ENV) \\\n\t\tDESTDIR=$(STAGING_DIR) \\\n\t\t$(HOST_DIR)/bin/python3 $(SCONS) \\\n\t\t$(GPSD_SCONS_OPTS) \\\n\t\tinstall)\nendef\n\n# After the udev rule is installed, make it writable so that this\n# package can be re-built/re-installed.\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\ndefine GPSD_INSTALL_UDEV_RULES\n\tchmod u+w $(TARGET_DIR)/lib/udev/rules.d/25-gpsd.rules\nendef\n\nGPSD_POST_INSTALL_TARGET_HOOKS += GPSD_INSTALL_UDEV_RULES\nendif\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/gptfdisk/0001-gptcurses-partially-revert-Tweaks-for-building-on-th.patch",
    "content": "From 22e69d77d745b42ca85fefdf8c9f7625b852b964 Mon Sep 17 00:00:00 2001\nFrom: Pierre-Jean Texier <pjtexier@koncepto.io>\nDate: Wed, 26 Feb 2020 22:08:28 +0100\nSubject: [PATCH] gptcurses: partially revert \"Tweaks for building on the\n latest XCode for macOS\"\n\nThis partially reverts commit bbd6b4cc67ffcdf7b2a6bd5008d28006cb147393.\n\nFixes:\n\n| gptcurses.cc:29:10: fatal error: ncursesw/ncurses.h: No such file or directory\n|    29 | #include <ncursesw/ncurses.h>\n|       |          ^~~~~~~~~~~~~~~~~~~~\n\nSigned-off-by: Pierre-Jean Texier <pjtexier@koncepto.io>\n[Retrieved from:\nhttps://sourceforge.net/u/texierp/gptfdisk/ci/22e69d77d745b42ca85fefdf8c9f7625b852b964\nUpstream status (with meson build system):\nhttps://sourceforge.net/p/gptfdisk/code/merge-requests/21]\n---\n gptcurses.cc | 4 ----\n 1 file changed, 4 deletions(-)\n\ndiff --git a/gptcurses.cc b/gptcurses.cc\nindex 1b18cf2..4ebfde1 100644\n--- a/gptcurses.cc\n+++ b/gptcurses.cc\n@@ -23,11 +23,7 @@\n #include <iostream>\n #include <string>\n #include <sstream>\n-#if defined (__APPLE__) || (__FreeBSD__)\n #include <ncurses.h>\n-#else\n-#include <ncursesw/ncurses.h>\n-#endif\n #include \"gptcurses.h\"\n #include \"support.h\"\n \n-- \n2.26.2\n\n"
  },
  {
    "path": "package/gptfdisk/Config.in",
    "content": "comment \"gptfdisk needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_GPTFDISK\n\tbool \"gptfdisk\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_GPTFDISK_GDISK if \\\n\t\t!(BR2_PACKAGE_GPTFDISK_SGDISK || BR2_PACKAGE_GPTFDISK_CGDISK)\n\thelp\n\t  GPT fdisk (consisting of the gdisk and sgdisk programs) is a\n\t  text-mode partitioning tool that works on Globally Unique\n\t  Identifier (GUID) Partition Table (GPT) disks, rather than on\n\t  the more common (through 2010) Master Boot Record (MBR)\n\t  partition tables.\n\n\t  http://www.rodsbooks.com/gdisk/\n\nif BR2_PACKAGE_GPTFDISK\n\nconfig BR2_PACKAGE_GPTFDISK_GDISK\n\tbool \"interactive gdisk\"\n\thelp\n\t  Install the interactive GUID partition table (GPT) manipulator\n\t  /usr/sbin/gdisk which is modelled after and quite similar in\n\t  use to the traditional MBR based fdisk tool.\n\nconfig BR2_PACKAGE_GPTFDISK_SGDISK\n\tbool \"command line sgdisk\"\n\tselect BR2_PACKAGE_POPT\n\thelp\n\t  Install the command-line GUID partition table (GPT)\n\t  manipulator /usr/sbin/sgdisk which is named after the\n\t  traditional MBR based sfdisk tool albeit with an entirely\n\t  different option syntax.\n\nconfig BR2_PACKAGE_GPTFDISK_CGDISK\n\tbool \"ncurses cgdisk\"\n\tdepends on BR2_USE_WCHAR # ncurses wchar\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_NCURSES_WCHAR # needed because of UTF-16\n\thelp\n\t  Install the ncurses-based GUID partition table (GPT)\n\t  manipulator /usr/sbin/cgdisk.\n\nendif\n"
  },
  {
    "path": "package/gptfdisk/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_GPTFDISK\n\tbool \"host gptfdisk\"\n\tselect BR2_PACKAGE_HOST_UTIL_LINUX\n\thelp\n\t  GPT fdisk (consisting of the gdisk and sgdisk programs) is a\n\t  text-mode partitioning tool that works on Globally Unique\n\t  Identifier (GUID) Partition Table (GPT) disks, rather than\n\t  on the more common (through 2010) Master Boot Record (MBR)\n\t  partition tables.\n\n\t  http://www.rodsbooks.com/gdisk/\n"
  },
  {
    "path": "package/gptfdisk/gptfdisk.hash",
    "content": "# From http://sourceforge.net/projects/gptfdisk/files/gptfdisk/1.0.8/\nsha1  c8824e779056158fa32887e415f5399a8646c3c5  gptfdisk-1.0.8.tar.gz\n# Locally computed\nsha256  95d19856f004dabc4b8c342b2612e8d0a9eebdd52004297188369f152e9dc6df  gptfdisk-1.0.8.tar.gz\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/gptfdisk/gptfdisk.mk",
    "content": "################################################################################\n#\n# gptfdisk\n#\n################################################################################\n\nGPTFDISK_VERSION = 1.0.8\nGPTFDISK_SITE = http://downloads.sourceforge.net/sourceforge/gptfdisk\nGPTFDISK_LICENSE = GPL-2.0+\nGPTFDISK_LICENSE_FILES = COPYING\n\nGPTFDISK_TARGETS_$(BR2_PACKAGE_GPTFDISK_GDISK) += gdisk\nGPTFDISK_TARGETS_$(BR2_PACKAGE_GPTFDISK_SGDISK) += sgdisk\nGPTFDISK_TARGETS_$(BR2_PACKAGE_GPTFDISK_CGDISK) += cgdisk\n\nGPTFDISK_DEPENDENCIES += util-linux\nifeq ($(BR2_PACKAGE_GPTFDISK_SGDISK),y)\nGPTFDISK_DEPENDENCIES += popt\nendif\nifeq ($(BR2_PACKAGE_GPTFDISK_CGDISK),y)\nGPTFDISK_DEPENDENCIES += ncurses\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\n# gptfdisk dependencies may link against libiconv, so we need to do so\n# as well when linking statically\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nGPTFDISK_DEPENDENCIES += libiconv\nGPTFDISK_LDLIBS += -liconv\nendif\nendif\n\ndefine GPTFDISK_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\tLDLIBS='$(GPTFDISK_LDLIBS)' $(GPTFDISK_TARGETS_y)\nendef\n\ndefine GPTFDISK_INSTALL_TARGET_CMDS\n\tfor i in $(GPTFDISK_TARGETS_y); do \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$$i $(TARGET_DIR)/usr/sbin/$$i || exit 1; \\\n\tdone\nendef\n\nHOST_GPTFDISK_DEPENDENCIES = host-util-linux host-popt\n\ndefine HOST_GPTFDISK_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) sgdisk\nendef\n\ndefine HOST_GPTFDISK_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/sgdisk $(HOST_DIR)/sbin/sgdisk\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/gqrx/Config.in",
    "content": "comment \"gqrx needs a toolchain w/ C++, threads, wchar, dynamic library\"\n\tdepends on BR2_USE_MMU # gnuradio\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_USE_WCHAR || BR2_STATIC_LIBS\n\ncomment \"gqrx needs qt5\"\n\tdepends on !BR2_PACKAGE_QT5\n\ncomment \"gqrx needs a toolchain not affected by GCC bug 43744 and 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_43744 || BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nconfig BR2_PACKAGE_GQRX\n\tbool \"gqrx\"\n\tdepends on BR2_USE_MMU # gnuradio\n\tdepends on !BR2_STATIC_LIBS # gnuradio\n\tdepends on BR2_INSTALL_LIBSTDCPP # boost\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # boost\n\tdepends on BR2_USE_WCHAR # boost\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_PACKAGE_QT5\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # gnuradio -> boost-atomic\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_43744 # gnuradio\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # gnuradio\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_PROGRAM_OPTIONS\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_GNURADIO\n\tselect BR2_PACKAGE_GNURADIO_ANALOG\n\tselect BR2_PACKAGE_GNURADIO_AUDIO\n\tselect BR2_PACKAGE_GNURADIO_BLOCKS\n\tselect BR2_PACKAGE_GNURADIO_DIGITAL\n\tselect BR2_PACKAGE_GNURADIO_FFT\n\tselect BR2_PACKAGE_GNURADIO_FILTER\n\tselect BR2_PACKAGE_GR_OSMOSDR\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\tselect BR2_PACKAGE_QT5SVG\n\thelp\n\t  Gqrx is an open source software defined radio (SDR) receiver\n\t  implemented using GNU Radio and the Qt GUI\n\t  toolkit. Currently it works on Linux and Mac with hardware\n\t  supported by gr-osmosdr, including Funcube Dongle, RTL-SDR,\n\t  Airspy, HackRF, BladeRF, RFSpace, USRP and SoapySDR.\n\n\t  Gqrx can operate as an AM/FM/SSB receiver with audio output\n\t  or as an FFT-only instrument. There are also various hooks\n\t  for interacting with external application using network\n\t  sockets.\n\n\t  http://gqrx.dk/\n"
  },
  {
    "path": "package/gqrx/gqrx.hash",
    "content": "# Locally calculated:\nsha256  aec35c77ebde9c71a5f973c509eec3d6aa2f18a6e052b180fcd9029d88273e5b  gqrx-2.14.4.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\nsha256  7cc22ce5ee61df62e427ec43b8130de149edee3cafb5af4f18d59b6dc3958faf  LICENSE-CTK\n"
  },
  {
    "path": "package/gqrx/gqrx.mk",
    "content": "################################################################################\n#\n# gqrx\n#\n################################################################################\n\nGQRX_VERSION = 2.14.4\nGQRX_SITE = $(call github,csete,gqrx,v$(GQRX_VERSION))\nGQRX_LICENSE = GPL-3.0+, Apache-2.0\nGQRX_LICENSE_FILES = COPYING LICENSE-CTK\nGQRX_DEPENDENCIES = boost gnuradio gr-osmosdr qt5base qt5svg\n\nGQRX_CONF_OPTS = -DLINUX_AUDIO_BACKEND=Gr-audio\n\n# gqrx can use __atomic builtins, so we need to link with\n# libatomic when available\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nGQRX_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/gr-osmosdr/Config.in",
    "content": "config BR2_PACKAGE_GR_OSMOSDR\n\tbool \"gr-osmosdr\"\n\tdepends on BR2_PACKAGE_GNURADIO\n\tselect BR2_PACKAGE_GNURADIO_BLOCKS\n\tselect BR2_PACKAGE_GNURADIO_FFT\n\tselect BR2_PACKAGE_GNURADIO_FILTER\n\thelp\n\t  GNU Radio block for interfacing with various radio hardware\n\n\t  http://osmocom.org/projects/osmosdr\n\nif BR2_PACKAGE_GR_OSMOSDR\n\nconfig BR2_PACKAGE_GR_OSMOSDR_PYTHON\n\tbool \"python support\"\n\tdepends on BR2_PACKAGE_GNURADIO_PYTHON\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Enable Python support\n\nconfig BR2_PACKAGE_GR_OSMOSDR_IQFILE\n\tbool \"IQ File Source support\"\n\thelp\n\t  Enable IQ File Source support\n\nconfig BR2_PACKAGE_GR_OSMOSDR_RTLSDR\n\tbool \"Osmocom RTLSDR support\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # librtlsdr -> libusb\n\tselect BR2_PACKAGE_LIBRTLSDR\n\thelp\n\t  Enable Osmocom RTLSDR support\n\ncomment \"Osmocom RTLSDR support needs a toolchain w/ gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_GR_OSMOSDR_RTLSDR_TCP\n\tbool \"RTLSDR TCP Client support\"\n\thelp\n\t  Enable RTLSDR TCP client support\n\nconfig BR2_PACKAGE_GR_OSMOSDR_RFSPACE\n\tbool \"RFSPACE Receivers support\"\n\thelp\n\t  Enable RFSPACE Receivers support\n\nendif\n"
  },
  {
    "path": "package/gr-osmosdr/gr-osmosdr.hash",
    "content": "# Locally calculated:\nsha256  11b1eb13725ced5ded9121a10aaf7bccf2430c5c69d020791408219968665b71  gr-osmosdr-0.2.3.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/gr-osmosdr/gr-osmosdr.mk",
    "content": "################################################################################\n#\n# gr-osmosdr\n#\n################################################################################\n\nGR_OSMOSDR_VERSION = 0.2.3\nGR_OSMOSDR_SITE = $(call github,osmocom,gr-osmosdr,v$(GR_OSMOSDR_VERSION))\nGR_OSMOSDR_LICENSE = GPL-3.0+\nGR_OSMOSDR_LICENSE_FILES = COPYING\n\n# gr-osmosdr prevents doing an in-source-tree build\nGR_OSMOSDR_SUPPORTS_IN_SOURCE_BUILD = NO\n\nGR_OSMOSDR_DEPENDENCIES = gnuradio host-python3\n\nGR_OSMOSDR_CONF_OPTS = \\\n\t-DENABLE_DEFAULT=OFF \\\n\t-DENABLE_DOXYGEN=OFF\n\n# For third-party blocks, the gr-osmosdr libraries are mandatory at\n# compile time.\nGR_OSMOSDR_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_GR_OSMOSDR_PYTHON),y)\nGR_OSMOSDR_CONF_OPTS += -DENABLE_PYTHON=ON\nGR_OSMOSDR_DEPENDENCIES += python3\nelse\nGR_OSMOSDR_CONF_OPTS += -DENABLE_PYTHON=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GR_OSMOSDR_IQFILE),y)\nGR_OSMOSDR_CONF_OPTS += -DENABLE_FILE=ON\nelse\nGR_OSMOSDR_CONF_OPTS += -DENABLE_FILE=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GR_OSMOSDR_RTLSDR),y)\nGR_OSMOSDR_CONF_OPTS += -DENABLE_RTL=ON\nGR_OSMOSDR_DEPENDENCIES += librtlsdr\nelse\nGR_OSMOSDR_CONF_OPTS += -DENABLE_RTL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GR_OSMOSDR_RTLSDR_TCP),y)\nGR_OSMOSDR_CONF_OPTS += -DENABLE_RTL_TCP=ON\nelse\nGR_OSMOSDR_CONF_OPTS += -DENABLE_RTL_TCP=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GR_OSMOSDR_RFSPACE),y)\nGR_OSMOSDR_CONF_OPTS += -DENABLE_RFSPACE=ON\nelse\nGR_OSMOSDR_CONF_OPTS += -DENABLE_RFSPACE=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/granite/Config.in",
    "content": "config BR2_PACKAGE_GRANITE\n\tbool \"granite\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_LIBGTK3\n\tselect BR2_PACKAGE_LIBGEE\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  An extension to GTK+ that provides several useful widgets and\n\t  classes to ease application development.\n\n\t  https://github.com/elementary/granite\n\ncomment \"granite needs libgtk3 and a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_LIBGTK3 || !BR2_USE_WCHAR \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/granite/granite.hash",
    "content": "# Locally computed\nsha256  c62d8d29e8bb59a5fa2d9006a9c13196aea9159410a7c86e3d51fa10d0f9dcc0  granite-6.0.0.tar.gz\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING\n"
  },
  {
    "path": "package/granite/granite.mk",
    "content": "################################################################################\n#\n# granite\n#\n################################################################################\n\nGRANITE_VERSION = 6.0.0\nGRANITE_SITE = $(call github,elementary,granite,$(GRANITE_VERSION))\nGRANITE_DEPENDENCIES = \\\n\thost-pkgconf \\\n\thost-vala \\\n\tlibgee \\\n\tlibglib2 \\\n\tlibgtk3 \\\n\t$(TARGET_NLS_DEPENDENCIES)\nGRANITE_INSTALL_STAGING = YES\nGRANITE_LICENSE = LGPL-3.0+\nGRANITE_LICENSE_FILES = COPYING\nGRANITE_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nGRANITE_CONF_OPTS += -Dintrospection=true\nGRANITE_DEPENDENCIES += gobject-introspection\nelse\nGRANITE_CONF_OPTS += -Dintrospection=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/grantlee/Config.in",
    "content": "config BR2_PACKAGE_GRANTLEE\n\tbool \"grantlee\"\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE && BR2_PACKAGE_QT5\n\tselect BR2_PACKAGE_QT5SCRIPT\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\thelp\n\t  Qt implementation of the Django template framework\n\n\t  http://www.grantlee.org\n"
  },
  {
    "path": "package/grantlee/grantlee.hash",
    "content": "# Locally calculated\nsha256  139acee5746b957bdf1327ec0d97c604d4c0b9be42aec5d584297cb5ed6a990a  grantlee-5.2.0.tar.gz\n\n# Hash for license file\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING.LIB\n"
  },
  {
    "path": "package/grantlee/grantlee.mk",
    "content": "################################################################################\n#\n# grantlee\n#\n################################################################################\n\nGRANTLEE_VERSION = 5.2.0\nGRANTLEE_SITE = $(call github,steveire,grantlee,v$(GRANTLEE_VERSION))\nGRANTLEE_INSTALL_STAGING = YES\nGRANTLEE_LICENSE = LGPL-2.1+\nGRANTLEE_LICENSE_FILES = COPYING.LIB\nGRANTLEE_DEPENDENCIES = qt5base qt5script\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/graphicsmagick/Config.in",
    "content": "config BR2_PACKAGE_GRAPHICSMAGICK\n\tbool \"graphicsmagick\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  GraphicsMagick is the swiss army knife of image processing.\n\t  It provides a robust and efficient collection of tools\n\t  and libraries which support reading, writing,\n\t  and manipulating an image in over 89 major formats\n\t  including important formats like DPX, GIF, JPEG, JPEG-2000,\n\t  PNG, PDF, PNM, TIFF, and WebP.\n\n\t  http://www.graphicsmagick.org/\n\ncomment \"graphicsmagick needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/graphicsmagick/graphicsmagick.hash",
    "content": "# Locally computed:\nsha256  5d5b3fde759cdfc307aaf21df9ebd8c752e3f088bb051dd5df8aac7ba7338f46  GraphicsMagick-1.3.36.tar.xz\nsha256  aed5bd8e28cbce601cbe2ca2267b663ccd63152965f2d5caea1311bf0039c325  Copyright.txt\n"
  },
  {
    "path": "package/graphicsmagick/graphicsmagick.mk",
    "content": "################################################################################\n#\n# graphicsmagick\n#\n################################################################################\n\nGRAPHICSMAGICK_VERSION = 1.3.36\nGRAPHICSMAGICK_SOURCE = GraphicsMagick-$(GRAPHICSMAGICK_VERSION).tar.xz\nGRAPHICSMAGICK_SITE = https://downloads.sourceforge.net/project/graphicsmagick/graphicsmagick/$(GRAPHICSMAGICK_VERSION)\nGRAPHICSMAGICK_LICENSE = MIT\nGRAPHICSMAGICK_LICENSE_FILES = Copyright.txt\nGRAPHICSMAGICK_CPE_ID_VENDOR = graphicsmagick\n\nGRAPHICSMAGICK_INSTALL_STAGING = YES\nGRAPHICSMAGICK_CONFIG_SCRIPTS = GraphicsMagick-config GraphicsMagickWand-config\n\nifeq ($(BR2_INSTALL_LIBSTDCPP),y)\nGRAPHICSMAGICK_CONFIG_SCRIPTS += GraphicsMagick++-config\nendif\n\nGRAPHICSMAGICK_CONF_OPTS = \\\n\t--without-dps \\\n\t--without-fpx \\\n\t--without-jbig \\\n\t--without-perl \\\n\t--without-trio \\\n\t--without-wmf \\\n\t--without-x \\\n\t--with-gs-font-dir=/usr/share/fonts/gs\n\nGRAPHICSMAGICK_DEPENDENCIES = host-pkgconf\n\nifeq ($(BR2_TOOLCHAIN_HAS_OPENMP),y)\nGRAPHICSMAGICK_CONF_OPTS += --enable-openmp\nelse\nGRAPHICSMAGICK_CONF_OPTS += --disable-openmp\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nGRAPHICSMAGICK_CONF_OPTS += --with-ttf\nGRAPHICSMAGICK_CONF_ENV += ac_cv_path_freetype_config=$(STAGING_DIR)/usr/bin/freetype-config\nGRAPHICSMAGICK_DEPENDENCIES += freetype\nelse\nGRAPHICSMAGICK_CONF_OPTS += --without-ttf\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nGRAPHICSMAGICK_CONF_OPTS += --with-jpeg\nGRAPHICSMAGICK_DEPENDENCIES += jpeg\nelse\nGRAPHICSMAGICK_CONF_OPTS += --without-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_OPENJPEG),y)\nGRAPHICSMAGICK_CONF_OPTS += --with-jp2\nGRAPHICSMAGICK_DEPENDENCIES += openjpeg\nelse\nGRAPHICSMAGICK_CONF_OPTS += --without-jp2\nendif\n\nifeq ($(BR2_PACKAGE_LCMS2),y)\nGRAPHICSMAGICK_CONF_OPTS += --with-lcms2\nGRAPHICSMAGICK_DEPENDENCIES += lcms2\nelse\nGRAPHICSMAGICK_CONF_OPTS += --without-lcms2\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nGRAPHICSMAGICK_CONF_OPTS += --with-png\nGRAPHICSMAGICK_DEPENDENCIES += libpng\nelse\nGRAPHICSMAGICK_CONF_OPTS += --without-png\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nGRAPHICSMAGICK_CONF_OPTS += --with-xml\nGRAPHICSMAGICK_CONF_ENV += ac_cv_path_xml2_config=$(STAGING_DIR)/usr/bin/xml2-config\nGRAPHICSMAGICK_DEPENDENCIES += libxml2\nelse\nGRAPHICSMAGICK_CONF_OPTS += --without-xml\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nGRAPHICSMAGICK_CONF_OPTS += --with-tiff\nGRAPHICSMAGICK_DEPENDENCIES += tiff\nelse\nGRAPHICSMAGICK_CONF_OPTS += --without-tiff\nendif\n\nifeq ($(BR2_PACKAGE_WEBP_MUX),y)\nGRAPHICSMAGICK_CONF_OPTS += --with-webp\nGRAPHICSMAGICK_DEPENDENCIES += webp\nelse\nGRAPHICSMAGICK_CONF_OPTS += --without-webp\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nGRAPHICSMAGICK_CONF_OPTS += --with-lzma\nGRAPHICSMAGICK_DEPENDENCIES += xz\nelse\nGRAPHICSMAGICK_CONF_OPTS += --without-lzma\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nGRAPHICSMAGICK_CONF_OPTS += --with-zlib\nGRAPHICSMAGICK_DEPENDENCIES += zlib\nelse\nGRAPHICSMAGICK_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nGRAPHICSMAGICK_CONF_OPTS += --with-bzlib\nGRAPHICSMAGICK_DEPENDENCIES += bzip2\nelse\nGRAPHICSMAGICK_CONF_OPTS += --without-bzlib\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nGRAPHICSMAGICK_CONF_OPTS += --with-zstd\nGRAPHICSMAGICK_DEPENDENCIES += zstd\nelse\nGRAPHICSMAGICK_CONF_OPTS += --without-zstd\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/graphite2/0001-don-t-install-a-libtool-file-with-static-library.patch",
    "content": "From 3edb88b55c0870989778c670d555aa159a2c3abc Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 31 Aug 2020 20:56:43 +0200\nSubject: [PATCH] don't install a libtool file with static library\n\nStatic library is supported since version 1.3.11 and\nhttps://github.com/silnrsi/graphite/commit/2f143c04da5caa43ddf4dba437b2f2bc26bf4238\n\nHowever, graphite2 is still installing libgraphite2.la which contains\nincorrect information (i.e. dlname set to libgraphite2.so and\nold_library set to ''):\n\ndlname='libgraphite2.so'\n\nlibrary_names='libgraphite2.so.3.2.1 libgraphite2.so.3 libgraphite2.so'\n\nold_library=''\n\ndependency_libs=''\n\nThis will result in the following build failure with any applications\nusing this file such as harfbuzz:\n\narm-linux-g++.br_real: error: /home/buildroot/autobuild/run/instance-3/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgraphite2.so: No such file or directory\nmake[5]: *** [main] Error 1\n\nInstead of trying to fix this libtool file, just disable it when\nbuilding a static library as it is not needed\n\nFixes:\n - http://autobuild.buildroot.org/results/9ebe1d11e80755d59190ef2aae82bbba5cc45e44\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/silnrsi/graphite/pull/65]\n---\n src/CMakeLists.txt | 8 ++++++--\n 1 file changed, 6 insertions(+), 2 deletions(-)\n\ndiff --git a/src/CMakeLists.txt b/src/CMakeLists.txt\nindex b6ac26bf..a7ace040 100644\n--- a/src/CMakeLists.txt\n+++ b/src/CMakeLists.txt\n@@ -131,7 +131,9 @@ if  (${CMAKE_SYSTEM_NAME} STREQUAL \"Linux\")\n         nolib_test(stdc++ $<TARGET_SONAME_FILE:graphite2>)\n     endif ()\n     set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES \"\")\n-    CREATE_LIBTOOL_FILE(graphite2 \"/lib${LIB_SUFFIX}\")\n+    if (BUILD_SHARED_LIBS)\n+        CREATE_LIBTOOL_FILE(graphite2 \"/lib${LIB_SUFFIX}\")\n+    endif()\n endif()\n \n if  (${CMAKE_SYSTEM_NAME} STREQUAL \"Darwin\")\n@@ -146,7 +148,9 @@ if  (${CMAKE_SYSTEM_NAME} STREQUAL \"Darwin\")\n     include(Graphite)\n     nolib_test(stdc++ $<TARGET_SONAME_FILE:graphite2>)\n     set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES \"\")\n-    CREATE_LIBTOOL_FILE(graphite2 \"/lib${LIB_SUFFIX}\")\n+    if (BUILD_SHARED_LIBS)\n+        CREATE_LIBTOOL_FILE(graphite2 \"/lib${LIB_SUFFIX}\")\n+    endif()\n endif()\n \n if  (${CMAKE_SYSTEM_NAME} STREQUAL \"Windows\")\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/graphite2/Config.in",
    "content": "config BR2_PACKAGE_GRAPHITE2\n\tbool \"graphite2\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Graphite is a project within SIL's scripts and software dev\n\t  groups to provide cross-platform rendering for complex\n\t  writing systems.\n\n\t  https://github.com/silnrsi/graphite\n\ncomment \"graphite2 needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/graphite2/graphite2.hash",
    "content": "# From https://github.com/silnrsi/graphite/releases/download/1.3.14/graphite2-1.3.14.sha256sum\nsha256  f99d1c13aa5fa296898a181dff9b82fb25f6cc0933dbaa7a475d8109bd54209d  graphite2-1.3.14.tgz\n# Locally computed\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  LICENSE\n"
  },
  {
    "path": "package/graphite2/graphite2.mk",
    "content": "################################################################################\n#\n# graphite2\n#\n################################################################################\n\nGRAPHITE2_VERSION = 1.3.14\nGRAPHITE2_SOURCE = graphite2-$(GRAPHITE2_VERSION).tgz\nGRAPHITE2_SITE = \\\n\thttps://github.com/silnrsi/graphite/releases/download/$(GRAPHITE2_VERSION)\nGRAPHITE2_INSTALL_STAGING = YES\nGRAPHITE2_LICENSE = LGPL-2.1+\nGRAPHITE2_LICENSE_FILES = LICENSE\nGRAPHITE2_CPE_ID_VENDOR = sil\n\n# Avoid building docs and tests to save time\ndefine GRAPHITE2_DISABLE_TESTS_DOC\n\t$(SED) '/^add_subdirectory(doc)/d' \\\n\t\t-e '/^add_subdirectory(tests)/d' \\\n\t\t-e '/add_subdirectory(gr2fonttest)/d' \\\n\t\t$(@D)/CMakeLists.txt\nendef\nGRAPHITE2_POST_PATCH_HOOKS += GRAPHITE2_DISABLE_TESTS_DOC\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/grep/Config.in",
    "content": "config BR2_PACKAGE_GREP\n\tbool \"grep\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  The GNU regular expression matcher.\n\n\t  egrep/fgrep aliases need /bin/sh to be available.\n\n\t  http://www.gnu.org/software/grep/grep.html\n\ncomment \"grep needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/grep/grep.hash",
    "content": "# Locally calculated after checking signature\n# http://ftp.gnu.org/gnu/grep/grep-3.6.tar.xz.sig\n# using key 155D3FC500C834486D1EEA677FD9FCCB000BEEEE\nsha256  667e15e8afe189e93f9f21a7cd3a7b3f776202f417330b248c2ad4f997d9373e  grep-3.6.tar.xz\nsha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  COPYING\n"
  },
  {
    "path": "package/grep/grep.mk",
    "content": "################################################################################\n#\n# grep\n#\n################################################################################\n\nGREP_VERSION = 3.6\nGREP_SITE = $(BR2_GNU_MIRROR)/grep\nGREP_SOURCE = grep-$(GREP_VERSION).tar.xz\nGREP_LICENSE = GPL-3.0+\nGREP_LICENSE_FILES = COPYING\nGREP_CPE_ID_VENDOR = gnu\nGREP_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\n# install into /bin like busybox grep\nGREP_CONF_OPTS = --exec-prefix=/\n\nifeq ($(BR2_SYSTEM_BIN_SH_NONE),y)\n\ndefine GREP_REMOVE_ALIAS\n\t$(RM) $(TARGET_DIR)/bin/[fe]grep\nendef\nGREP_POST_INSTALL_TARGET_HOOKS += GREP_REMOVE_ALIAS\n\nelse\n\n# ensure egrep/fgrep shell wrappers use #!/bin/sh\ndefine GREP_FIXUP_SHEBANG\n\t$(SED) 's/bash$$/sh/' $(TARGET_DIR)/bin/[fe]grep\nendef\nGREP_POST_INSTALL_TARGET_HOOKS += GREP_FIXUP_SHEBANG\n\nendif\n\n# link with iconv if enabled\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nGREP_CONF_ENV += LIBS=-liconv\nGREP_DEPENDENCIES += libiconv\nendif\n\n# link with pcre if enabled\nifeq ($(BR2_PACKAGE_PCRE),y)\nGREP_CONF_OPTS += --enable-perl-regexp\nGREP_DEPENDENCIES += pcre\nelse\nGREP_CONF_OPTS += --disable-perl-regexp\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/grpc/0001-Properly-detect-the-availability-of-pthread_setname_.patch",
    "content": "From 0dfb289a3b362b082ac3608d887e42f09dadc0d2 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Mon, 31 Dec 2018 16:22:07 +0100\nSubject: [PATCH] Properly detect the availability of pthread_setname_np()\n\nThis commit adds a CMake check for the availability of\npthread_setname_np(), and only uses it on Linux when available.\n\nIndeed, some C libraries, such as uClibc, do not provide this\nnon-POSIX function in all cases.\n\nUpstream: https://github.com/grpc/grpc/pull/17610\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n CMakeLists.txt                            | 6 ++++++\n include/grpc/impl/codegen/port_platform.h | 2 ++\n 2 files changed, 8 insertions(+)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 45c2fcb..0b2be4f 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -208,6 +208,12 @@ if (NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE)\n endif()\n list(APPEND CMAKE_MODULE_PATH \"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules\")\n \n+include(CheckSymbolExists)\n+check_symbol_exists(pthread_setname_np pthread.h HAVE_PTHREAD_SETNAME_NP)\n+if (HAVE_PTHREAD_SETNAME_NP)\n+  add_definitions(-DHAVE_PTHREAD_SETNAME_NP)\n+endif ()\n+\n if(MSVC)\n   include(cmake/msvc_static_runtime.cmake)\n   add_definitions(-D_WIN32_WINNT=0x600 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS)\ndiff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h\nindex 4f213ff..55ecd9d 100644\n--- a/include/grpc/impl/codegen/port_platform.h\n+++ b/include/grpc/impl/codegen/port_platform.h\n@@ -168,7 +168,9 @@\n #endif /* _LP64 */\n #ifdef __GLIBC__\n #define GPR_POSIX_CRASH_HANDLER 1\n+#if defined(HAVE_PTHREAD_SETNAME_NP)\n #define GPR_LINUX_PTHREAD_NAME 1\n+#endif /* HAVE_PTHREAD_SETNAME_NP */\n #include <linux/version.h>\n #else /* musl libc */\n #define GPR_MUSL_LIBC_COMPAT 1\n-- \n2.26.63\n"
  },
  {
    "path": "package/grpc/0002-wrap_memcpy.cc-add-GPR_DISABLE_WRAPPED_MEMCPY.patch",
    "content": "From be030314805137cd63b46ea6eaa702b608669910 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 2 Jun 2019 17:45:47 +0200\nSubject: [PATCH] wrap_memcpy.cc: add GPR_DISABLE_WRAPPED_MEMCPY\n\nAdd GPR_DISABLE_WRAPPED_MEMCPY to allow the user to disable wrapped\nmemcpy. This will fix build on x86_64 on musl/uclibc without changing\nthe cpu behavior.\n\nFixes:\n - http://autobuild.buildroot.org/results/20d6f2489a4e291a53bd514da66105eb607e1014\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/grpc/grpc/pull/19207]\n---\n src/core/lib/gpr/wrap_memcpy.cc | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/core/lib/gpr/wrap_memcpy.cc b/src/core/lib/gpr/wrap_memcpy.cc\nindex 9b8608e056..38b76acf95 100644\n--- a/src/core/lib/gpr/wrap_memcpy.cc\n+++ b/src/core/lib/gpr/wrap_memcpy.cc\n@@ -29,7 +29,7 @@\n extern \"C\" {\n #ifdef __linux__\n #if defined(__x86_64__) && !defined(GPR_MUSL_LIBC_COMPAT) && \\\n-    !defined(__ANDROID__)\n+    !defined(__ANDROID__) && !defined(GPR_DISABLE_WRAPPED_MEMCPY)\n __asm__(\".symver memcpy,memcpy@GLIBC_2.2.5\");\n void* __wrap_memcpy(void* destination, const void* source, size_t num) {\n   return memcpy(destination, source, num);\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/grpc/Config.in",
    "content": "config BR2_PACKAGE_GRPC\n\tbool \"grpc\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # protobuf, re2\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # protobuf, re2, libabseil-cpp\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libabseil-cpp\n\tdepends on !BR2_STATIC_LIBS # protobuf, libabseil-cpp\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_C_ARES\n\tselect BR2_PACKAGE_LIBABSEIL_CPP\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_PROTOBUF\n\tselect BR2_PACKAGE_RE2\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  A language-neutral, platform-neutral, open source, remote\n\t  procedure call (RPC) system initially developed at Google.\n\n\t  http://github.com/grpc/grpc\n\ncomment \"grpc needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t|| !BR2_HOST_GCC_AT_LEAST_4_9\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n"
  },
  {
    "path": "package/grpc/grpc.hash",
    "content": "# Locally computed\nsha256  e5fb30aae1fa1cffa4ce00aa0bbfab908c0b899fcf0bbc30e268367d660d8656  grpc-1.41.0.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/grpc/grpc.mk",
    "content": "################################################################################\n#\n# grpc\n#\n################################################################################\n\nGRPC_VERSION = 1.41.0\nGRPC_SITE = $(call github,grpc,grpc,v$(GRPC_VERSION))\nGRPC_LICENSE = Apache-2.0\nGRPC_LICENSE_FILES = LICENSE\nGRPC_CPE_ID_VENDOR = grpc\n\nGRPC_INSTALL_STAGING = YES\n\n# Need to use host grpc_cpp_plugin during cross compilation.\nGRPC_DEPENDENCIES = c-ares host-grpc libabseil-cpp openssl protobuf re2 zlib\nHOST_GRPC_DEPENDENCIES = host-c-ares host-libabseil-cpp host-openssl host-protobuf \\\n\thost-re2 host-zlib\n\n# gRPC_CARES_PROVIDER=package won't work because it requires c-ares to have\n# installed a cmake config file, but buildroot uses c-ares' autotools build,\n# which doesn't do this.  These CARES settings trick the gRPC cmake code into\n# not looking for c-ares at all and yet still linking with the library.\nGRPC_CONF_OPTS = \\\n\t-DgRPC_ABSL_PROVIDER=package \\\n\t-D_gRPC_CARES_LIBRARIES=cares \\\n\t-DgRPC_CARES_PROVIDER=none \\\n\t-DgRPC_PROTOBUF_PROVIDER=package \\\n\t-DgRPC_RE2_PROVIDER=package \\\n\t-DgRPC_SSL_PROVIDER=package \\\n\t-DgRPC_ZLIB_PROVIDER=package \\\n\t-DgRPC_BUILD_GRPC_CPP_PLUGIN=OFF \\\n\t-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF \\\n\t-DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF \\\n\t-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF \\\n\t-DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \\\n\t-DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF \\\n\t-DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF\n\n# grpc can use __atomic builtins, so we need to link with\n# libatomic when available\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nGRPC_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\nGRPC_CFLAGS = $(TARGET_CFLAGS)\nGRPC_CXXFLAGS = $(TARGET_CXXFLAGS)\n\n# Set GPR_DISABLE_WRAPPED_MEMCPY otherwise build will fail on x86_64 with uclibc\n# because grpc tries to link with memcpy@GLIBC_2.2.5\nifeq ($(BR2_x86_64):$(BR2_TOOLCHAIN_USES_GLIBC),y:)\nGRPC_CFLAGS += -DGPR_DISABLE_WRAPPED_MEMCPY\nGRPC_CXXFLAGS += -DGPR_DISABLE_WRAPPED_MEMCPY\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nGRPC_CFLAGS += -O0\nGRPC_CXXFLAGS += -O0\nendif\n\n# Toolchains older than gcc5 will fail to compile with -0s due to:\n# error: failure memory model cannot be stronger than success memory model for\n# '__atomic_compare_exchange', so we use -O2 in these cases\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_5):$(BR2_OPTIMIZE_S),:y)\nGRPC_CFLAGS += -O2\nGRPC_CXXFLAGS += -O2\nendif\n\nGRPC_CONF_OPTS += \\\n\t-DCMAKE_C_FLAGS=\"$(GRPC_CFLAGS)\" \\\n\t-DCMAKE_CXX_FLAGS=\"$(GRPC_CXXFLAGS)\"\n\nHOST_GRPC_CONF_OPTS = \\\n\t-DgRPC_ABSL_PROVIDER=package \\\n\t-D_gRPC_CARES_LIBRARIES=cares \\\n\t-DgRPC_CARES_PROVIDER=none \\\n\t-DgRPC_PROTOBUF_PROVIDER=package \\\n\t-DgRPC_RE2_PROVIDER=package \\\n\t-DgRPC_SSL_PROVIDER=package \\\n\t-DgRPC_ZLIB_PROVIDER=package\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/gsettings-desktop-schemas/Config.in",
    "content": "config BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS\n\tbool \"gsettings-desktop-schemas\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  gsettings-desktop-schemas contains a collection of GSettings\n\t  schemas for settings shared by various components of a\n\t  desktop.\n\n\t  https://github.com/GNOME/gsettings-desktop-schemas\n\ncomment \"gsettings-desktop-schemas needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gsettings-desktop-schemas/gsettings-desktop-schemas.hash",
    "content": "# From http://ftp.acc.umu.se/pub/gnome/sources/gsettings-desktop-schemas/3.36/gsettings-desktop-schemas-3.36.1.sha256sum\nsha256  004bdbe43cf8290f2de7d8537e14d8957610ca479a4fa368e34dbd03f03ec9d9  gsettings-desktop-schemas-3.36.1.tar.xz\n\n# Hash for license file\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/gsettings-desktop-schemas/gsettings-desktop-schemas.mk",
    "content": "################################################################################\n#\n# gsettings-desktop-schemas\n#\n################################################################################\n\nGSETTINGS_DESKTOP_SCHEMAS_VERSION_MAJOR = 3.36\nGSETTINGS_DESKTOP_SCHEMAS_VERSION = $(GSETTINGS_DESKTOP_SCHEMAS_VERSION_MAJOR).1\nGSETTINGS_DESKTOP_SCHEMAS_SOURCE = gsettings-desktop-schemas-$(GSETTINGS_DESKTOP_SCHEMAS_VERSION).tar.xz\nGSETTINGS_DESKTOP_SCHEMAS_SITE = http://ftp.gnome.org/pub/gnome/sources/gsettings-desktop-schemas/$(GSETTINGS_DESKTOP_SCHEMAS_VERSION_MAJOR)\nGSETTINGS_DESKTOP_SCHEMAS_INSTALL_STAGING = YES\nGSETTINGS_DESKTOP_SCHEMAS_DEPENDENCIES = host-pkgconf libglib2\nGSETTINGS_DESKTOP_SCHEMAS_LICENSE = LGPL-2.1+\nGSETTINGS_DESKTOP_SCHEMAS_LICENSE_FILES = COPYING\nGSETTINGS_DESKTOP_SCHEMAS_CONF_OPTS = -Dintrospection=false\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gsl/Config.in",
    "content": "config BR2_PACKAGE_GSL\n\tbool \"gsl\"\n\thelp\n\t  The GNU Scientific Library (GSL) is a numerical library for\n\t  C and C++ programmers. The library provides a wide range of\n\t  mathematical routines such as random number generators,\n\t  special functions and least-squares fitting. There are over\n\t  1000 functions in total with an extensive test suite.\n\n\t  http://www.gnu.org/software/gsl\n"
  },
  {
    "path": "package/gsl/gsl.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  b782339fc7a38fe17689cb39966c4d821236c28018b6593ddb6fd59ee40786a8  gsl-2.6.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/gsl/gsl.mk",
    "content": "################################################################################\n#\n# gsl\n#\n################################################################################\n\nGSL_VERSION = 2.6\nGSL_SITE = $(BR2_GNU_MIRROR)/gsl\nGSL_INSTALL_STAGING = YES\nGSL_LICENSE = GPL-3.0\nGSL_LICENSE_FILES = COPYING\nGSL_CONFIG_SCRIPTS = gsl-config\n\n# uClibc pretends to have fenv support as it installs <fenv.h>, but in\n# practice, it only implements it for i386. Problem reported upstream\n# at: http://lists.busybox.net/pipermail/uclibc/2012-October/047067.html.\n# So we tell gsl that fenv related functions are not available in this\n# case.\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\nifneq ($(BR2_i386),y)\nGSL_CONF_ENV = \\\n\tac_cv_have_decl_feenableexcept=no \\\n\tac_cv_have_decl_fesettrapenable=no\nendif\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gssdp/Config.in",
    "content": "config BR2_PACKAGE_GSSDP\n\tbool \"gssdp\"\n\tdepends on BR2_USE_WCHAR # glib2, libsoup\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2, libsoup\n\tdepends on BR2_USE_MMU # glib2, libsoup\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBSOUP\n\thelp\n\t  GSSDP implements resource discovery and announcement over\n\t  SSDP.\n\n\t  http://www.gupnp.org\n\ncomment \"gssdp needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gssdp/gssdp.hash",
    "content": "# Hash from: http://ftp.gnome.org/pub/gnome/sources/gssdp/1.3/gssdp-1.3.1.sha256sum:\nsha256  affbf145c26e02dda9d31f9da9fd5182bd2cc36565ab8ee2e877567b2fd206cd  gssdp-1.3.1.tar.xz\n\n# Hash for license file:\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/gssdp/gssdp.mk",
    "content": "################################################################################\n#\n# gssdp\n#\n################################################################################\n\nGSSDP_VERSION_MAJOR = 1.3\nGSSDP_VERSION = $(GSSDP_VERSION_MAJOR).1\nGSSDP_SOURCE = gssdp-$(GSSDP_VERSION).tar.xz\nGSSDP_SITE = http://ftp.gnome.org/pub/gnome/sources/gssdp/$(GSSDP_VERSION_MAJOR)\nGSSDP_LICENSE = LGPL-2.1+\nGSSDP_LICENSE_FILES = COPYING\nGSSDP_INSTALL_STAGING = YES\nGSSDP_DEPENDENCIES = host-pkgconf libglib2 libsoup\nGSSDP_CONF_OPTS = -Dexamples=false -Dgtk_doc=false -Dsniffer=false\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nGSSDP_CONF_OPTS += -Dintrospection=true -Dvapi=true\nGSSDP_DEPENDENCIES += host-vala gobject-introspection\nelse\nGSSDP_CONF_OPTS += -Dintrospection=false -Dvapi=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/Config.in",
    "content": "# Gstreamer 1.x & Plugins\nsource \"package/gstreamer1/gstreamer1/Config.in\"\n\nif BR2_PACKAGE_GSTREAMER1\nsource \"package/gstreamer1/gstreamer1-mm/Config.in\"\nsource \"package/gstreamer1/gst1-plugins-base/Config.in\"\nsource \"package/gstreamer1/gst1-plugins-bayer2rgb-neon/Config.in\"\nsource \"package/gstreamer1/gst1-plugins-good/Config.in\"\nsource \"package/gstreamer1/gst1-plugins-bad/Config.in\"\nsource \"package/gstreamer1/gst1-plugins-ugly/Config.in\"\nsource \"package/gstreamer1/gst1-devtools/Config.in\"\nsource \"package/gstreamer1/gst1-imx/Config.in\"\nsource \"package/gstreamer1/gst1-interpipe/Config.in\"\nsource \"package/gstreamer1/gst1-libav/Config.in\"\nsource \"package/gstreamer1/gst1-python/Config.in\"\nsource \"package/gstreamer1/gst1-rtsp-server/Config.in\"\nsource \"package/gstreamer1/gst1-shark/Config.in\"\nsource \"package/gstreamer1/gst1-vaapi/Config.in\"\nsource \"package/gstreamer1/gst-omx/Config.in\"\nsource \"package/gstreamer1/gstd/Config.in\"\nsource \"package/gstreamer1/gstreamer1-editing-services/Config.in\"\nendif\n"
  },
  {
    "path": "package/gstreamer1/gst-omx/Config.in",
    "content": "config BR2_PACKAGE_GST_OMX\n\tbool \"gst-omx\"\n\tdepends on BR2_PACKAGE_HAS_LIBOPENMAX\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\thelp\n\t  GStreamer plug-in to use OpenMAX API.\n\n\t  https://cgit.freedesktop.org/gstreamer/gst-omx\n\ncomment \"gst-omx requires a OpenMAX implementation\"\n\tdepends on !BR2_PACKAGE_HAS_LIBOPENMAX\n"
  },
  {
    "path": "package/gstreamer1/gst-omx/gst-omx.hash",
    "content": "# From https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-1.18.5.tar.xz.sha256sum\nsha256  2cd457c1e8deb1a9b39608048fb36a44f6c9a864a6b6115b1453a32e7be93b42  gst-omx-1.18.5.tar.xz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/gstreamer1/gst-omx/gst-omx.mk",
    "content": "################################################################################\n#\n# gst-omx\n#\n################################################################################\n\nGST_OMX_VERSION = 1.18.5\nGST_OMX_SOURCE = gst-omx-$(GST_OMX_VERSION).tar.xz\nGST_OMX_SITE = https://gstreamer.freedesktop.org/src/gst-omx\n\nGST_OMX_LICENSE = LGPL-2.1\nGST_OMX_LICENSE_FILES = COPYING\n\nGST_OMX_CONF_OPTS = \\\n\t-Dexamples=disabled \\\n\t-Dtests=disabled \\\n\t-Dtools=disabled \\\n\t-Ddoc=disabled\n\nifeq ($(BR2_PACKAGE_RPI_USERLAND),y)\nGST_OMX_VARIANT = rpi\nGST_OMX_CONF_OPTS += -Dheader_path=$(STAGING_DIR)/usr/include/IL\nelse\nGST_OMX_VARIANT = generic\nendif\n\nGST_OMX_CONF_OPTS += -Dtarget=$(GST_OMX_VARIANT)\n\nGST_OMX_DEPENDENCIES = gstreamer1 gst1-plugins-base libopenmax\n\n# adjust library paths to where buildroot installs them\ndefine GST_OMX_FIXUP_CONFIG_PATHS\n\tfind $(@D)/config -name gstomx.conf | \\\n\t\txargs $(SED) 's|/usr/local|/usr|g' -e 's|/opt/vc|/usr|g'\nendef\n\nGST_OMX_POST_PATCH_HOOKS += GST_OMX_FIXUP_CONFIG_PATHS\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-devtools/Config.in",
    "content": "config BR2_PACKAGE_GST1_DEVTOOLS\n\tbool \"gst1-devtools\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_GSTREAMER1_CHECK\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_JSON_GLIB\n\tselect BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3\n\t# cairo is autodetected but needs PNG support\n\tselect BR2_PACKAGE_CAIRO_PNG if BR2_PACKAGE_CAIRO\n\thelp\n\t  GStreamer development tools (gst-validate).\n\n\t  https://gstreamer.freedesktop.org\n\ncomment \"gst1-devtools depends on python\"\n\tdepends on !BR2_PACKAGE_PYTHON\n\tdepends on !BR2_PACKAGE_PYTHON3\n"
  },
  {
    "path": "package/gstreamer1/gst1-devtools/gst1-devtools.hash",
    "content": "# From https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-1.18.5.tar.xz.sha256sum\nsha256  fecffc86447daf5c2a06843c757a991d745caa2069446a0d746e99b13f7cb079  gst-devtools-1.18.5.tar.xz\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  validate/COPYING\n"
  },
  {
    "path": "package/gstreamer1/gst1-devtools/gst1-devtools.mk",
    "content": "################################################################################\n#\n# gst1-devtools\n#\n################################################################################\n\nGST1_DEVTOOLS_VERSION = 1.18.5\nGST1_DEVTOOLS_SOURCE = gst-devtools-$(GST1_DEVTOOLS_VERSION).tar.xz\nGST1_DEVTOOLS_SITE = https://gstreamer.freedesktop.org/src/gst-devtools\nGST1_DEVTOOLS_LICENSE = LGPL-2.1+\nGST1_DEVTOOLS_LICENSE_FILES = validate/COPYING\nGST1_DEVTOOLS_INSTALL_STAGING = YES\n\nGST1_DEVTOOLS_DEPENDENCIES = \\\n\tgstreamer1 \\\n\tgst1-plugins-base \\\n\tjson-glib \\\n\t$(if $(BR2_PACKAGE_CAIRO),cairo)\n\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nGST1_DEVTOOLS_DEPENDENCIES += host-python3 python3\nelse\nGST1_DEVTOOLS_DEPENDENCIES += host-python python\nendif\n\nifeq ($(BR2_PACKAGE_GST1_RTSP_SERVER),y)\nGST1_DEVTOOLS_DEPENDENCIES += gst1-rtsp-server\nendif\n\nGST1_DEVTOOLS_CONF_OPTS = \\\n\t-Dvalidate=enabled \\\n\t-Ddebug_viewer=disabled \\\n\t-Dintrospection=disabled \\\n\t-Dtests=disabled \\\n\t-Ddoc=disabled\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-imx/Config.in",
    "content": "comment \"gst1-imx needs a toolchain w/ dynamic library\"\n\tdepends on BR2_arm\n\tdepends on BR2_STATIC_LIBS\n\nmenuconfig BR2_PACKAGE_GST1_IMX\n\tbool \"gst1-imx\"\n\tdepends on BR2_arm # Only relevant for i.MX\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\thelp\n\t  This is a set of GStreamer 1.0 plugins for plugins for\n\t  Freescale's i.MX platforms, which make use of the i.MX\n\t  multimedia capabilities.\n\n\t  https://github.com/Freescale/gstreamer-imx\n\nif BR2_PACKAGE_GST1_IMX\n\nconfig BR2_PACKAGE_GST1_IMX_EGLVISINK\n\tbool \"imxeglvivsink\"\n\tdepends on BR2_PACKAGE_IMX_GPU_VIV\n\thelp\n\t  Elements leveraging the 3D GPU\n\ncomment \"imxeglvivsink needs the Vivante 3D libraries\"\n\tdepends on !BR2_PACKAGE_IMX_GPU_VIV\n\nconfig BR2_PACKAGE_GST1_IMX_G2D\n\tbool \"imxg2d\"\n\tdepends on BR2_PACKAGE_IMX_GPU_G2D\n\thelp\n\t  Elements leveraging the 2D GPU\n\ncomment \"imxg2d needs the G2D libraries\"\n\tdepends on !BR2_PACKAGE_IMX_GPU_G2D\n\nconfig BR2_PACKAGE_GST1_IMX_IPU\n\tbool \"imxipu\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  Elements leveraging the IPU\n\ncomment \"imxipu needs an imx-specific Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_GST1_IMX_MP3ENCODER\n\tbool \"mp3encoder\"\n\tdepends on BR2_PACKAGE_IMX_CODEC\n\thelp\n\t  Elements for MP3 encoding\n\ncomment \"mp3encoder needs the i.MX codec binaries\"\n\tdepends on !BR2_PACKAGE_IMX_CODEC\n\nconfig BR2_PACKAGE_GST1_IMX_PXP\n\tbool \"imxpxp\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  Elements leveraging the PXP\n\ncomment \"imxpxp needs an imx-specific Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_GST1_IMX_UNIAUDIODEC\n\tbool \"uniaudiodec\"\n\tdepends on BR2_PACKAGE_IMX_CODEC\n\thelp\n\t  Elements for audio decoding\n\ncomment \"uniaudiodec needs the i.MX codec binaries\"\n\tdepends on !BR2_PACKAGE_IMX_CODEC\n\nconfig BR2_PACKAGE_GST1_IMX_VPU\n\tbool \"imxvpu\"\n\tdepends on BR2_PACKAGE_LIBIMXVPUAPI\n\thelp\n\t  Elements leveraging the VPU\n\ncomment \"imxvpu needs the VPU imxvpuapi library\"\n\tdepends on !BR2_PACKAGE_LIBIMXVPUAPI\n\nconfig BR2_PACKAGE_GST1_IMX_V4L2VIDEOSRC\n\tbool \"imxv4l2videosrc\"\n\tselect BR2_PACKAGE_GST1_PLUGINS_BAD\n\thelp\n\t  Elements for V4L2 capture\n\nconfig BR2_PACKAGE_GST1_IMX_V4L2VIDEOSINK\n\tbool \"imxv4l2videosink\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 # V4L2_COLORSPACE_DEFAULT\n\tselect BR2_PACKAGE_GST1_PLUGINS_BAD\n\thelp\n\t  Elements for V4L2 output\n\ncomment \"imxv4l2videosink needs a toolchain w/ headers >= 4.2\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2\n\nendif\n"
  },
  {
    "path": "package/gstreamer1/gst1-imx/gst1-imx.hash",
    "content": "# locally computed hash\nsha256 21feb24130c18e4a1f8cc4f72d575903d1f9134dd0604e41e91b5e783d81e320  gst1-imx-0.13.1.tar.gz\nsha256 94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23  LICENSE\n"
  },
  {
    "path": "package/gstreamer1/gst1-imx/gst1-imx.mk",
    "content": "################################################################################\n#\n# gst1-imx\n#\n################################################################################\n\nGST1_IMX_VERSION = 0.13.1\nGST1_IMX_SITE = $(call github,Freescale,gstreamer-imx,$(GST1_IMX_VERSION))\n\nGST1_IMX_LICENSE = LGPL-2.0+\nGST1_IMX_LICENSE_FILES = LICENSE\n\nGST1_IMX_INSTALL_STAGING = YES\nGST1_IMX_NEEDS_EXTERNAL_WAF = YES\n\nGST1_IMX_DEPENDENCIES += \\\n\thost-pkgconf \\\n\tgstreamer1 \\\n\tgst1-plugins-base\n\nGST1_IMX_CONF_OPTS = --prefix=\"/usr\"\n\nifeq ($(BR2_LINUX_KERNEL),y)\n# IPU and PXP need access to imx-specific kernel headers\nGST1_IMX_DEPENDENCIES += linux\nGST1_IMX_CONF_OPTS += --kernel-headers=\"$(LINUX_DIR)/include\"\nendif\n\nifeq ($(BR2_PACKAGE_IMX_CODEC),y)\nGST1_IMX_DEPENDENCIES += imx-codec\nendif\n\nifeq ($(BR2_PACKAGE_IMX_GPU_VIV),y)\nGST1_IMX_DEPENDENCIES += imx-gpu-viv\nendif\n\nifeq ($(BR2_PACKAGE_IMX_GPU_G2D),y)\nGST1_IMX_DEPENDENCIES += imx-gpu-g2d\nendif\n\nifeq ($(BR2_PACKAGE_GST1_IMX_EGLVISINK),y)\n# There's no --enable-eglvivsink option\nifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)\nGST1_IMX_DEPENDENCIES += xlib_libX11\nGST1_IMX_CONF_OPTS += --egl-platform=x11\nelse\nifeq ($(BR2_PACKAGE_WAYLAND),y)\nGST1_IMX_DEPENDENCIES += wayland\nGST1_IMX_CONF_OPTS += --egl-platform=wayland\nelse\nGST1_IMX_CONF_OPTS += --egl-platform=fb\nendif\nendif\nelse\nGST1_IMX_CONF_OPTS += --disable-eglvivsink\nendif\n\n# There's no --enable-g2d option\nifeq ($(BR2_PACKAGE_GST1_IMX_G2D),)\nGST1_IMX_CONF_OPTS += --disable-g2d\nendif\n\n# There's no --enable-ipu option\nifeq ($(BR2_PACKAGE_GST1_IMX_IPU),)\nGST1_IMX_CONF_OPTS += --disable-ipu\nendif\n\n# There's no --enable-mp3encoder option\nifeq ($(BR2_PACKAGE_GST1_IMX_MP3ENCODER),)\nGST1_IMX_CONF_OPTS += --disable-mp3encoder\nendif\n\n# There's no --enable-pxp option\nifeq ($(BR2_PACKAGE_GST1_IMX_PXP),)\nGST1_IMX_CONF_OPTS += --disable-pxp\nendif\n\n# There's no --enable-uniaudiodec option\nifeq ($(BR2_PACKAGE_GST1_IMX_UNIAUDIODEC),)\nGST1_IMX_CONF_OPTS += --disable-uniaudiodec\nendif\n\nifeq ($(BR2_PACKAGE_GST1_IMX_VPU),y)\n# There's no --enable-vpu option\nGST1_IMX_DEPENDENCIES += libimxvpuapi\nelse\nGST1_IMX_CONF_OPTS += --disable-vpu\nendif\n\nifeq ($(BR2_PACKAGE_GST1_IMX_V4L2VIDEOSRC),y)\n# There's no --enable-imxv4l2videosrc option\nGST1_IMX_DEPENDENCIES += gst1-plugins-bad\nelse\nGST1_IMX_CONF_OPTS += --disable-imxv4l2videosrc\nendif\n\nifeq ($(BR2_PACKAGE_GST1_IMX_V4L2VIDEOSINK),y)\n# There's no --enable-imxv4l2videosink option\nGST1_IMX_DEPENDENCIES += gst1-plugins-bad\nelse\nGST1_IMX_CONF_OPTS += --disable-imxv4l2videosink\nendif\n\n$(eval $(waf-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-interpipe/Config.in",
    "content": "config BR2_PACKAGE_GST1_INTERPIPE\n\tbool \"gst1-interpipe\"\n\tselect BR2_PACKAGE_GSTREAMER1_CHECK\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP\n\thelp\n\t  GstInterpipe is a Gstreamer plug-in that allows communication\n\t  between two independent pipelines.\n\n\t  https://github.com/RidgeRun/gst-interpipe\n"
  },
  {
    "path": "package/gstreamer1/gst1-interpipe/gst1-interpipe.hash",
    "content": "# locally computed hash\nsha256  0fd29d3cba623163dd5852989d7ca21eee9033da9d14a467ccd5e527e3b4297b  gst1-interpipe-1.1.7-br1.tar.gz\n\n# Hashes for license files:\nsha256  16d7caa6cabbfd0ca47e064a7b48cb446d013e84ca88c854d6470851752136d5  COPYING\n"
  },
  {
    "path": "package/gstreamer1/gst1-interpipe/gst1-interpipe.mk",
    "content": "################################################################################\n#\n# gst1-interpipe\n#\n################################################################################\n\nGST1_INTERPIPE_VERSION = 1.1.7\nGST1_INTERPIPE_SITE = https://github.com/RidgeRun/gst-interpipe\nGST1_INTERPIPE_SITE_METHOD = git\n# fetch gst-interpipe/common sub module\nGST1_INTERPIPE_GIT_SUBMODULES = YES\n\nGST1_INTERPIPE_LICENSE = LGPL-2.1\nGST1_INTERPIPE_LICENSE_FILES = COPYING\n\nGST1_INTERPIPE_DEPENDENCIES = host-pkgconf gstreamer1 gst1-plugins-base\n\nGST1_INTERPIPE_CONF_OPTS = \\\n\t-Dtests=disabled \\\n\t-Denable-gtk-doc=false\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-libav/Config.in",
    "content": "config BR2_PACKAGE_GST1_LIBAV\n\tbool \"gst1-libav\"\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_FFMPEG_SWSCALE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\thelp\n\t  GStreamer plugin (formerly gst-ffmpeg).\n\n\t  This package contains GStreamer plugins based on\n\t  the libav project.\n\n\t  The codecs, muxers, bitstreams and filters to build can be\n\t  selected in the ffmpeg package.\n\n\t  https://gstreamer.freedesktop.org/\n"
  },
  {
    "path": "package/gstreamer1/gst1-libav/gst1-libav.hash",
    "content": "# From https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.18.5.tar.xz.sha256sum\nsha256  822e008a910e9dd13aedbdd8dc63fedef4040c0ee2e927bab3112e9de693a548  gst-libav-1.18.5.tar.xz\nsha256  f445dc78b88496f7e20c7a2a461b95baba5865c8919b8289ac24ac0a80c6ce7a  COPYING\n"
  },
  {
    "path": "package/gstreamer1/gst1-libav/gst1-libav.mk",
    "content": "################################################################################\n#\n# gst1-libav\n#\n################################################################################\n\nGST1_LIBAV_VERSION = 1.18.5\nGST1_LIBAV_SOURCE = gst-libav-$(GST1_LIBAV_VERSION).tar.xz\nGST1_LIBAV_SITE = https://gstreamer.freedesktop.org/src/gst-libav\nGST1_LIBAV_LICENSE = LGPL-2.0+\nGST1_LIBAV_LICENSE_FILES = COPYING\nGST1_LIBAV_DEPENDENCIES =  host-pkgconf ffmpeg gstreamer1 gst1-plugins-base\nGST1_LIBAV_CONF_OPTS = -Ddoc=disabled\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-bad/Config.in",
    "content": "menuconfig BR2_PACKAGE_GST1_PLUGINS_BAD\n\tbool \"gst1-plugins-bad\"\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\thelp\n\t  A set of plug-ins for GStreamer that may be of poor quality\n\t  or lacking some features.\n\n\t  https://gstreamer.freedesktop.org/\n\nif BR2_PACKAGE_GST1_PLUGINS_BAD\n\ncomment \"dependency-less plugins\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ACCURIP\n\tbool \"accurip\"\n\thelp\n\t  Accurip plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMDEC\n\tbool \"adpcmdec\"\n\thelp\n\t  ADPCM decoder\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMENC\n\tbool \"adpcmenc\"\n\thelp\n\t  ADPCM encoder\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AIFF\n\tbool \"aiff\"\n\thelp\n\t  Create and parse Audio interchange File Format (AIFF) files\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASFMUX\n\tbool \"asfmux\"\n\thelp\n\t  ASF Muxer Plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOBUFFERSPLIT\n\tbool \"audiobuffersplit\"\n\thelp\n\t  Audio buffersplit plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOFXBAD\n\tbool \"audiofxbad\"\n\thelp\n\t  Audio filters plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOLATENCY\n\tbool \"audiolatency\"\n\thelp\n\t  Audio latency plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXMATRIX\n\tbool \"audiomixmatrix\"\n\thelp\n\t  Audio N:M mixer plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOVISUALIZERS\n\tbool \"audiovisualizers\"\n\thelp\n\t  Creates video visualizations of audio input\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUTOCONVERT\n\tbool \"autoconvert\"\n\thelp\n\t  Selects convertor element based on caps\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BAYER\n\tbool \"bayer\"\n\thelp\n\t  Elements to convert Bayer images\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CAMERABIN2\n\tbool \"camerabin2\"\n\thelp\n\t  Take image snapshots and record movies from camera\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COLOREFFECTS\n\tbool \"coloreffects\"\n\thelp\n\t  Color Look-up Table filters\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DEBUGUTILS\n\tbool \"debugutils\"\n\thelp\n\t  Collection of elements that may or may not be useful for\n\t  debugging\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVBSUBENC\n\tbool \"dvbsubenc\"\n\thelp\n\t  DVB subpicture encoding support\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVBSUBOVERLAY\n\tbool \"dvbsuboverlay\"\n\thelp\n\t  DVB subtitle renderer plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVDSPU\n\tbool \"dvdspu\"\n\thelp\n\t  DVD Sub-picture Overlay element\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FACEOVERLAY\n\tbool \"faceoverlay\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FESTIVAL\n\tbool \"festival\"\n\thelp\n\t  Synthesizes plain text into audio\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FIELDANALYSIS\n\tbool \"fieldanalysis\"\n\thelp\n\t  Video field analysis\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREEVERB\n\tbool \"freeverb\"\n\thelp\n\t  Reverberation/room effect\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREI0R\n\tbool \"frei0r\"\n\thelp\n\t  frei0r plugin library\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GAUDIEFFECTS\n\tbool \"gaudieffects\"\n\thelp\n\t  Gaudi video effects\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GEOMETRICTRANSFORM\n\tbool \"geometrictransform\"\n\thelp\n\t  Various geometric image transform elements\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GDP\n\tbool \"gdp\"\n\thelp\n\t  Payload/depayload GDP packets\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ID3TAG\n\tbool \"id3tag\"\n\thelp\n\t  ID3 v1 and v2 muxing plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTER\n\tbool \"inter\"\n\thelp\n\t  plugin for inter-pipeline communication\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTERLACE\n\tbool \"interlace\"\n\thelp\n\t  Create an interlaced video stream\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IVFPARSE\n\tbool \"ivfparse\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IVTC\n\tbool \"ivtc\"\n\thelp\n\t  Inverse Telecine plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JP2KDECIMATOR\n\tbool \"jp2kdecimator\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JPEGFORMAT\n\tbool \"jpegformat\"\n\thelp\n\t  JPEG interchange format plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBRFB\n\tbool \"librfb\"\n\thelp\n\t  Connects to a VNC server and decodes RFB stream\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MIDI\n\tbool \"midi\"\n\thelp\n\t  MIDI plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGDEMUX\n\tbool \"mpegdemux\"\n\thelp\n\t  MPEG-PS demuxer\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX\n\tbool \"mpegtsdemux\"\n\thelp\n\t  MPEG TS demuxer\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSMUX\n\tbool \"mpegtsmux\"\n\thelp\n\t  MPEG-TS muxer\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGPSMUX\n\tbool \"mpegpsmux\"\n\thelp\n\t  MPEG-PS muxer\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MXF\n\tbool \"mxf\"\n\thelp\n\t  MXF plugin library\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NETSIM\n\tbool \"netsim\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ONVIF\n\tbool \"onvif\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PCAPPARSE\n\tbool \"pcapparse\"\n\thelp\n\t  Element parsing raw pcap streams\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PNM\n\tbool \"pnm\"\n\thelp\n\t  PNM plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PROXY\n\tbool \"proxy\"\n\thelp\n\t  Proxy plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RAWPARSE\n\tbool \"rawparse\"\n\thelp\n\t  Parses byte streams into raw frames\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REMOVESILENCE\n\tbool \"removesilence\"\n\thelp\n\t  Removes silence from an audio stream\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RIST\n\tbool \"rist\"\n\thelp\n\t  RIST streaming\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTMP2\n\tbool \"rtmp2\"\n\thelp\n\t  RTMP sink/source (rtmp2sink, rtmp2src)\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP2\n\tbool \"rtp\"\n\thelp\n\t  RTP (rtpsrc/rtpsink)\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTMP\n\tbool \"rtmp\"\n\tselect BR2_PACKAGE_RTMPDUMP\n\thelp\n\t  RTMP plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDP\n\tbool \"sdp\"\n\thelp\n\t  configure streaming sessions using SDP\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SEGMENTCLIP\n\tbool \"segmentclip\"\n\thelp\n\t  Segment clip elements\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SIREN\n\tbool \"siren\"\n\thelp\n\t  Siren encoder/decoder/payloader/depayloader plugins\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SMOOTH\n\tbool \"smooth\"\n\thelp\n\t  Apply a smooth filter to an image\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SPEED\n\tbool \"speed\"\n\thelp\n\t  Set speed/pitch on audio/raw streams (resampler)\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SUBENC\n\tbool \"subenc\"\n\thelp\n\t  subtitle encoders\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SWITCHBIN\n\tbool \"switchbin\"\n\thelp\n\t  Switching between paths based on input caps\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TIMECODE\n\tbool \"timecode\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFILTERS\n\tbool \"videofilters\"\n\thelp\n\t  Video filters in gst-plugins-bad\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFRAME_AUDIOLEVEL\n\tbool \"videoframe_audiolevel\"\n\thelp\n\t  videoframe_audiolevel\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS\n\tbool \"videoparsers\"\n\thelp\n\t  videoparsers\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOSIGNAL\n\tbool \"videosignal\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VMNC\n\tbool \"vmnc\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_Y4M\n\tbool \"y4m\"\n\thelp\n\t  Demuxes/decodes YUV4MPEG streams\n\ncomment \"plugins with external dependencies\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASSRENDER\n\tbool \"assrender\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # libass -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libass -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # libass -> harfbuzz\n\tselect BR2_PACKAGE_LIBASS\n\ncomment \"assrender plugin needs a toolchain w/ C++, gcc => 4.8\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BLUEZ\n\tbool \"bluez\"\n\tdepends on BR2_USE_WCHAR # bluez5_utils -> libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # bluez5_utils -> dbus, libglib2\n\tdepends on BR2_USE_MMU # bluez5_utils -> dbus\n\tdepends on !BR2_STATIC_LIBS # bluez5_utils -> uses dlfcn\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5_utils\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5_utils\n\tselect BR2_PACKAGE_BLUEZ5_UTILS\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO # runtime\n\thelp\n\t  Bluetooth audio A2DP/AVDTP sink, AVDTP source plugin\n\ncomment \"bluez plugin needs a toolchain w/ wchar, threads, headers >= 3.4, dynamic library\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 || BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_USE_MMU\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BZ2\n\tbool \"bz2\"\n\tselect BR2_PACKAGE_BZIP2\n\thelp\n\t  Compress or decompress streams\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CURL\n\tbool \"curl\"\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  libcurl-based elements\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DASH\n\tbool \"dash\"\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  DASH demuxer plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DECKLINK\n\tbool \"decklink\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # <dlfcn.h>\n\thelp\n\t  Blackmagic Decklink plugin\n\ncomment \"decklink needs a toolchain w/ C++, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP  || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DIRECTFB\n\tbool \"directfb\"\n\tdefault y\n\tdepends on BR2_PACKAGE_DIRECTFB\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVB\n\tbool \"dvb\"\n\t# FEC_2_5 / QAM_4_NR definitions\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7\n\tselect BR2_PACKAGE_DTV_SCAN_TABLES\n\thelp\n\t  DVB elements\n\ncomment \"dvb needs a toolchain w/ headers >= 3.7\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FAAD\n\tbool \"faad\"\n\tselect BR2_PACKAGE_FAAD2\n\thelp\n\t  Free AAC Decoder (FAAD)\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FBDEV\n\tbool \"fbdev\"\n\thelp\n\t  Linux framebuffer video sink\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FDK_AAC\n\tbool \"fdk-aac\"\n\tdepends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_FDK_AAC\n\thelp\n\t  MPEG AAC encoder/decoder\n\ncomment \"fdk-aac needs a toolchain w/ C++\"\n\tdepends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FLUIDSYNTH\n\tbool \"fluidsynth\"\n\tdepends on !BR2_STATIC_LIBS # fluidsynth\n\tdepends on BR2_USE_WCHAR # fluidsynth\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # fluidsynth\n\tdepends on BR2_USE_MMU # fluidsynth\n\tselect BR2_PACKAGE_FLUIDSYNTH\n\thelp\n\t  Fluidsynth MIDI decoder plugin\n\ncomment \"fluidsynth needs a toolchain w/ threads, wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GL\n\tbool \"gl\"\n\tdefault y\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL\n\ncomment \"gl needs the gst1-plugins-base opengl library\"\n\tdepends on !BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HLS\n\tbool \"hls\"\n\tselect BR2_PACKAGE_NETTLE if !(BR2_PACKAGE_LIBGCRYPT || BR2_PACKAGE_OPENSSL)\n\thelp\n\t  Fragmented streaming plugins\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_KMS\n\tbool \"kmssink\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS #  libdrm -> libpthread-stubs\n\tselect BR2_PACKAGE_LIBDRM\n\thelp\n\t  KMS video sink\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBMMS\n\tbool \"libmms\"\n\tdepends on BR2_USE_WCHAR # libmms -> libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libmms -> libglib2\n\tselect BR2_PACKAGE_LIBMMS\n\thelp\n\t  Microsoft Multi Media Server streaming protocol support\n\ncomment \"libmms needs a toolchain w/ wchar, threads\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DTLS\n\tbool \"dtls\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  DTLS plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTML\n\tbool \"ttml\"\n\tdepends on BR2_USE_WCHAR # pango -> glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # pango -> glib2\n\tdepends on BR2_INSTALL_LIBSTDCPP # pango -> freetype\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_PANGO\n\thelp\n\t  Timed Text Markup Language (TTML) subtitle plugin\n\ncomment \"ttml needs a toolchain w/ wchar, threads, C++\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEG2ENC\n\tbool \"mpeg2enc\"\n\tdepends on BR2_USE_MMU # fork\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBMPEG2\n\tselect BR2_PACKAGE_MJPEGTOOLS\n\thelp\n\t  High-quality MPEG-1/2 video encoder\n\ncomment \"mpeg2enc needs a toolchain w/ threads, C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MUSEPACK\n\tbool \"musepack\"\n\tselect BR2_PACKAGE_MUSEPACK\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NEON\n\tbool \"neon\"\n\tselect BR2_PACKAGE_NEON\n\thelp\n\t  lib neon http client src\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENAL\n\tbool \"openal\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_PAKCAGE_OPENAL_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_OPENAL\n\ncomment \"openal plugin needs a toolchain w/ NPTL, C++, gcc >= 4.9\"\n\tdepends on BR2_PAKCAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264\n\tbool \"openh264\"\n\tdepends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS\n\tdepends on BR2_INSTALL_LIBSTDCPP # libopenh264\n\tdepends on !BR2_STATIC_LIBS # libopenh264\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libopenh264\n\tselect BR2_PACKAGE_LIBOPENH264\n\thelp\n\t  OpenH264 based encoding/decoding plugin\n\ncomment \"openh264 plugin needs a toolchain w/ C++, dynamic library, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENJPEG\n\tbool \"openjpeg\"\n\tselect BR2_PACKAGE_OPENJPEG\n\thelp\n\t  GStreamer OpenJPEG plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPUS\n\tbool \"opus\"\n\tselect BR2_PACKAGE_OPUS\n\thelp\n\t  OPUS plugin library\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RSVG\n\tbool \"rsvg\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # librsvg\n\tdepends on BR2_INSTALL_LIBSTDCPP # librsvg -> pango\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # librsvg -> pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # librsvg -> pango -> harfbuzz\n\tselect BR2_PACKAGE_LIBRSVG\n\thelp\n\t  RSVG plugin library\n\ncomment \"rsvg plugin needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SBC\n\tbool \"sbc\"\n\tselect BR2_PACKAGE_SBC\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SCTP\n\tbool \"sctp\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_*_4 intrinsics\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SHM\n\tbool \"shm\"\n\thelp\n\t  shared memory sink source\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SNDFILE\n\tbool \"sndfile\"\n\tselect BR2_PACKAGE_LIBSNDFILE\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SRTP\n\tbool \"srtp\"\n\tselect BR2_PACKAGE_LIBSRTP\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VOAACENC\n\tbool \"voaacenc\"\n\tselect BR2_PACKAGE_VO_AACENC\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WAYLAND\n\tbool \"wayland\"\n\tdefault y\n\tdepends on BR2_PACKAGE_WAYLAND\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS #  libdrm -> libpthread-stubs\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS\n\thelp\n\t  Wayland Video Sink\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBP\n\tbool \"webp\"\n\tselect BR2_PACKAGE_WEBP\n\thelp\n\t  Webp image format plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTC\n\tbool \"webrtc\"\n\tdepends on !BR2_STATIC_LIBS # libnice -> gnutls\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE # libgstsdp\n\tselect BR2_PACKAGE_LIBNICE\n\thelp\n\t  WebRTC plugins (webrtcbin - a bin for webrtc connections)\n\ncomment \"webrtc needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTCDSP\n\tbool \"webrtcdsp\"\n\t# All depends from webrtc-audio-processing\n\tdepends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING\n\thelp\n\t  WebRTC echo-cancellation, gain control and noise suppression\n\ncomment \"webrtcdsp needs a toolchain w/ C++, NPTL, gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WPE\n\tbool \"wpe\"\n\tdefault y\n\tdepends on BR2_PACKAGE_WPEWEBKIT\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL\n\tdepends on !BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM\n\ncomment \"wpe needs the gst1-plugins-base opengl library and wpewebkit\"\n\tdepends on !BR2_PACKAGE_WPEWEBKIT \\\n\t\t|| !BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL\n\ncomment \"wpe is incompatible w/ wpewebkit media-stream support\"\n\tdepends on BR2_PACKAGE_WPEWEBKIT\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL\n\tdepends on BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_V4L2CODECS\n\tbool \"v4l2codecs\"\n\tdepends on BR2_PACKAGE_HAS_UDEV # libgudev\n\tselect BR2_PACKAGE_LIBGUDEV\n\thelp\n\t  Video4Linux Stateless CODECs support\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_X265\n\tbool \"x265\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # x265\n\tselect BR2_PACKAGE_X265\n\thelp\n\t  x265 encoding plugin\n\ncomment \"x265 needs a toolchain w/ C++, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BAD_ZBAR\n\tbool \"zbar\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # zbar-> libv4l\n\tdepends on BR2_USE_MMU # zbar-> libv4l\n\tdepends on BR2_INSTALL_LIBSTDCPP # zbar-> libv4l\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # zbar -> libv4l\n\tselect BR2_PACKAGE_ZBAR\n\ncomment \"zbar plugin needs a toolchain w/ threads, C++ and headers >= 3.0\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\nendif\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash",
    "content": "# From https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.18.5.tar.xz.sha256sum\nsha256  a164923b94f0d08578a6fcaeaac6e0c05da788a46903a1086870e9ca45ad678e  gst-plugins-bad-1.18.5.tar.xz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk",
    "content": "################################################################################\n#\n# gst1-plugins-bad\n#\n################################################################################\n\nGST1_PLUGINS_BAD_VERSION = 1.18.5\nGST1_PLUGINS_BAD_SOURCE = gst-plugins-bad-$(GST1_PLUGINS_BAD_VERSION).tar.xz\nGST1_PLUGINS_BAD_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-bad\nGST1_PLUGINS_BAD_INSTALL_STAGING = YES\n# Additional plugin licenses will be appended to GST1_PLUGINS_BAD_LICENSE and\n# GST1_PLUGINS_BAD_LICENSE_FILES if enabled.\nGST1_PLUGINS_BAD_LICENSE_FILES = COPYING\nGST1_PLUGINS_BAD_LICENSE = LGPL-2.0+\nGST1_PLUGINS_BAD_CPE_ID_VENDOR = freedesktop\nGST1_PLUGINS_BAD_CPE_ID_PRODUCT = gst-plugins-bad\n\nGST1_PLUGINS_BAD_CFLAGS = $(TARGET_CFLAGS) -std=c99 -D_GNU_SOURCE\nGST1_PLUGINS_BAD_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\nGST1_PLUGINS_BAD_CONF_OPTS = \\\n\t-Dexamples=disabled \\\n\t-Dtests=disabled \\\n\t-Ddirectsound=disabled \\\n\t-Dd3dvideosink=disabled \\\n\t-Dwinks=disabled \\\n\t-Dandroidmedia=disabled \\\n\t-Dapplemedia=disabled \\\n\t-Dgobject-cast-checks=disabled \\\n\t-Dglib-asserts=disabled \\\n\t-Dglib-checks=disabled \\\n\t-Dextra-checks=disabled \\\n\t-Ddoc=disabled\n\n# Options which require currently unpackaged libraries\nGST1_PLUGINS_BAD_CONF_OPTS += \\\n\t-Davtp=disabled \\\n\t-Dopensles=disabled \\\n\t-Duvch264=disabled \\\n\t-Dmsdk=disabled \\\n\t-Dvoamrwbenc=disabled \\\n\t-Dbs2b=disabled \\\n\t-Dchromaprint=disabled \\\n\t-Dd3d11=disabled \\\n\t-Ddc1394=disabled \\\n\t-Ddts=disabled \\\n\t-Dresindvd=disabled \\\n\t-Dfaac=disabled \\\n\t-Dflite=disabled \\\n\t-Dgsm=disabled \\\n\t-Dkate=disabled \\\n\t-Dladspa=disabled \\\n\t-Dlv2=disabled \\\n\t-Dmediafoundation=disabled \\\n\t-Dmicrodns=disabled \\\n\t-Dlibde265=disabled \\\n\t-Dmodplug=disabled \\\n\t-Dmplex=disabled \\\n\t-Dofa=disabled \\\n\t-Dopenexr=disabled \\\n\t-Dopenni2=disabled \\\n\t-Dteletext=disabled \\\n\t-Dwildmidi=disabled \\\n\t-Dsmoothstreaming=disabled \\\n\t-Dsoundtouch=disabled \\\n\t-Dgme=disabled \\\n\t-Dspandsp=disabled \\\n\t-Dsvthevcenc=disabled \\\n\t-Dtranscode=disabled \\\n\t-Dwasapi2=disabled \\\n\t-Dzxing=disabled \\\n\t-Dmagicleap=disabled \\\n\t-Diqa=disabled \\\n\t-Dopencv=disabled\n\nGST1_PLUGINS_BAD_DEPENDENCIES = gst1-plugins-base gstreamer1\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dintrospection=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += gobject-introspection\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dintrospection=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WAYLAND),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dwayland=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += libdrm wayland wayland-protocols\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dwayland=disabled\nendif\n\nifeq ($(BR2_PACKAGE_ORC),y)\nGST1_PLUGINS_BAD_DEPENDENCIES += orc\nGST1_PLUGINS_BAD_CONF_OPTS += -Dorc=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dorc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BLUEZ),y)\nGST1_PLUGINS_BAD_DEPENDENCIES += bluez5_utils\nGST1_PLUGINS_BAD_CONF_OPTS += -Dbluez=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dbluez=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ACCURIP),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Daccurip=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Daccurip=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMDEC),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dadpcmdec=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dadpcmdec=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMENC),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dadpcmenc=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dadpcmenc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AIFF),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Daiff=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Daiff=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASFMUX),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dasfmux=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dasfmux=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOBUFFERSPLIT),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Daudiobuffersplit=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Daudiobuffersplit=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOFXBAD),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Daudiofxbad=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Daudiofxbad=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOLATENCY),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Daudiolatency=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Daudiolatency=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXMATRIX),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Daudiomixmatrix=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Daudiomixmatrix=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOVISUALIZERS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Daudiovisualizers=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Daudiovisualizers=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUTOCONVERT),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dautoconvert=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dautoconvert=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BAYER),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dbayer=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dbayer=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CAMERABIN2),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dcamerabin2=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dcamerabin2=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COLOREFFECTS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dcoloreffects=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dcoloreffects=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DEBUGUTILS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddebugutils=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddebugutils=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVBSUBENC),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddvbsubenc=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddvbsubenc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVBSUBOVERLAY),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddvbsuboverlay=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddvbsuboverlay=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVDSPU),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddvdspu=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddvdspu=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FACEOVERLAY),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfaceoverlay=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfaceoverlay=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FESTIVAL),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfestival=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfestival=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FIELDANALYSIS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfieldanalysis=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfieldanalysis=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREEVERB),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfreeverb=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfreeverb=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREI0R),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfrei0r=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfrei0r=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GAUDIEFFECTS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dgaudieffects=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dgaudieffects=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GEOMETRICTRANSFORM),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dgeometrictransform=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dgeometrictransform=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GDP),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dgdp=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dgdp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ID3TAG),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Did3tag=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Did3tag=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTER),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dinter=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dinter=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTERLACE),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dinterlace=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dinterlace=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IVFPARSE),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Divfparse=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Divfparse=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IVTC),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Divtc=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Divtc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JP2KDECIMATOR),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Djp2kdecimator=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Djp2kdecimator=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JPEGFORMAT),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Djpegformat=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Djpegformat=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBRFB),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dlibrfb=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dlibrfb=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MIDI),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmidi=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmidi=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGDEMUX),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmpegdemux=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmpegdemux=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGPSMUX),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmpegpsmux=enabled\nGST1_PLUGINS_BAD_HAS_UNKNOWN_LICENSE = y\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmpegpsmux=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSMUX),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmpegtsmux=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmpegtsmux=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmpegtsdemux=enabled\nGST1_PLUGINS_BAD_HAS_UNKNOWN_LICENSE = y\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmpegtsdemux=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MXF),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmxf=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmxf=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NETSIM),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dnetsim=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dnetsim=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ONVIF),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Donvif=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Donvif=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PCAPPARSE),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dpcapparse=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dpcapparse=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PNM),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dpnm=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dpnm=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PROXY),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dproxy=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dproxy=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RAWPARSE),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Drawparse=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Drawparse=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REMOVESILENCE),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dremovesilence=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dremovesilence=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RIST),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Drist=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Drist=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTMP2),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Drtmp2=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Drtmp2=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP2),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Drtp=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Drtp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTMP),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Drtmp=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += rtmpdump\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Drtmp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDP),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsdp=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsdp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SEGMENTCLIP),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsegmentclip=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsegmentclip=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SIREN),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsiren=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsiren=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SMOOTH),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsmooth=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsmooth=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SPEED),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dspeed=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dspeed=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SUBENC),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsubenc=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsubenc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SWITCHBIN),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dswitchbin=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dswitchbin=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TIMECODE),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dtimecode=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dtimecode=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFILTERS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dvideofilters=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dvideofilters=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFRAME_AUDIOLEVEL),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dvideoframe_audiolevel=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dvideoframe_audiolevel=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dvideoparsers=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dvideoparsers=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOSIGNAL),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dvideosignal=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dvideosignal=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VMNC),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dvmnc=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dvmnc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_Y4M),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dy4m=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dy4m=disabled\nendif\n\n# Plugins with dependencies\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASSRENDER),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dassrender=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += libass\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dassrender=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BZ2),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dbz2=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += bzip2\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dbz2=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CURL),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dcurl=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += libcurl\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dcurl=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DASH),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddash=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += libxml2\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddash=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DECKLINK),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddecklink=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddecklink=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DIRECTFB),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddirectfb=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += directfb\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddirectfb=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVB),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddvb=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += dtv-scan-tables\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddvb=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FAAD),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfaad=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += faad2\nGST1_PLUGINS_BAD_HAS_GPL_LICENSE = y\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfaad=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FBDEV),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfbdev=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfbdev=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FDK_AAC),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfdkaac=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += fdk-aac\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfdkaac=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FLUIDSYNTH),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfluidsynth=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += fluidsynth\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dfluidsynth=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GL),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dgl=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dgl=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HLS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dhls=enabled\n\nifeq ($(BR2_PACKAGE_NETTLE),y)\nGST1_PLUGINS_BAD_DEPENDENCIES += nettle\nGST1_PLUGINS_BAD_CONF_OPTS += -Dhls-crypto='nettle'\nelse ifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nGST1_PLUGINS_BAD_DEPENDENCIES += libgcrypt\nGST1_PLUGINS_BAD_CONF_OPTS += -Dhls-crypto='libgcrypt'\nelse\nGST1_PLUGINS_BAD_DEPENDENCIES += openssl\nGST1_PLUGINS_BAD_CONF_OPTS += -Dhls-crypto='openssl'\nendif\n\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dhls=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_KMS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dkms=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += libdrm\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dkms=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBMMS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dlibmms=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += libmms\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dlibmms=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DTLS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddtls=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += openssl\nGST1_PLUGINS_BAD_HAS_BSD2C_LICENSE = y\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Ddtls=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTML),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dttml=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += cairo libxml2 pango\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dttml=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEG2ENC),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmpeg2enc=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += libmpeg2 mjpegtools\nGST1_PLUGINS_BAD_HAS_GPL_LICENSE = y\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmpeg2enc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MUSEPACK),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmusepack=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += musepack\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dmusepack=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NEON),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dneon=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += neon\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dneon=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENAL),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dopenal=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += openal\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dopenal=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dopenh264=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += libopenh264\nGST1_PLUGINS_BAD_HAS_BSD2C_LICENSE = y\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dopenh264=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENJPEG),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dopenjpeg=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += openjpeg\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dopenjpeg=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPUS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dopus=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += opus\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dopus=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RSVG),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Drsvg=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += librsvg\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Drsvg=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SBC),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsbc=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += sbc\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsbc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SCTP),y)\nGST1_PLUGINS_BAD_CONF_OPTS += \\\n\t-Dsctp=enabled \\\n\t-Dsctp-internal-usrsctp=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += \\\n\t-Dsctp=disabled \\\n\t-Dsctp-internal-usrsctp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SHM),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dshm=enabled\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dshm=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SNDFILE),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsndfile=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += libsndfile\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsndfile=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SRTP),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsrtp=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += libsrtp\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dsrtp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VOAACENC),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dvoaacenc=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += vo-aacenc\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dvoaacenc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBP),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dwebp=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += webp\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dwebp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTC),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dwebrtc=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += gst1-plugins-base libnice\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dwebrtc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTCDSP),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dwebrtcdsp=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += webrtc-audio-processing\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dwebrtcdsp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WPE),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dwpe=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += libwpe wpewebkit wpebackend-fdo\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dwpe=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_V4L2CODECS),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dv4l2codecs=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += libgudev\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dv4l2codecs=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_X265),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dx265=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += x265\nGST1_PLUGINS_BAD_HAS_GPL_LICENSE = y\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dx265=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_ZBAR),y)\nGST1_PLUGINS_BAD_CONF_OPTS += -Dzbar=enabled\nGST1_PLUGINS_BAD_DEPENDENCIES += zbar\nelse\nGST1_PLUGINS_BAD_CONF_OPTS += -Dzbar=disabled\nendif\n\n# Add GPL license if GPL licensed plugins enabled.\nifeq ($(GST1_PLUGINS_BAD_HAS_GPL_LICENSE),y)\nGST1_PLUGINS_BAD_LICENSE += , GPL-2.0+\nGST1_PLUGINS_BAD_LICENSE_FILES += COPYING\nendif\n\n# Add BSD license if BSD licensed plugins enabled.\nifeq ($(GST1_PLUGINS_BAD_HAS_BSD2C_LICENSE),y)\nGST1_PLUGINS_BAD_LICENSE += , BSD-2-Clause\nendif\n\n# Add Unknown license if Unknown licensed plugins enabled.\nifeq ($(GST1_PLUGINS_BAD_HAS_UNKNOWN_LICENSE),y)\nGST1_PLUGINS_BAD_LICENSE += , UNKNOWN\nendif\n\n# Use the following command to extract license info for plugins.\n# # find . -name 'plugin-*.xml' | xargs grep license\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-base/0001-gst-libs-gst-video-gstvideoaggregator.c-fix-build-wi.patch",
    "content": "From 012ca1bcd234ee02f576dd58b1f09baba18b89b0 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 14 Dec 2020 07:42:55 +0100\nSubject: [PATCH] gst-libs/gst/video/gstvideoaggregator.c: fix build with gcc\n 4.8\n\nFix the following build failure with gcc 4.8 which has been added with\nhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/commit/d268c193ad39fb970351ed62898be806ebd0a71e:\n\n../gst-libs/gst/video/gstvideoaggregator.c: In function 'gst_video_aggregator_init':\n../gst-libs/gst/video/gstvideoaggregator.c:2762:3: error: 'for' loop initial declarations are only allowed in C99 mode\n   for (gint i = 0; i < gst_caps_get_size (src_template); i++) {\n   ^\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/974]\n---\n gst-libs/gst/video/gstvideoaggregator.c | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/gst-libs/gst/video/gstvideoaggregator.c b/gst-libs/gst/video/gstvideoaggregator.c\nindex 2e3d813be..04dad6563 100644\n--- a/gst-libs/gst/video/gstvideoaggregator.c\n+++ b/gst-libs/gst/video/gstvideoaggregator.c\n@@ -2786,6 +2786,7 @@ gst_video_aggregator_init (GstVideoAggregator * vagg,\n {\n   GstCaps *src_template;\n   GstPadTemplate *pad_template;\n+  gint i;\n \n   vagg->priv = gst_video_aggregator_get_instance_private (vagg);\n   vagg->priv->current_caps = NULL;\n@@ -2800,7 +2801,7 @@ gst_video_aggregator_init (GstVideoAggregator * vagg,\n   pad_template =\n       gst_element_class_get_pad_template (GST_ELEMENT_CLASS (klass), \"src\");\n   src_template = gst_pad_template_get_caps (pad_template);\n-  for (gint i = 0; i < gst_caps_get_size (src_template); i++) {\n+  for (i = 0; i < gst_caps_get_size (src_template); i++) {\n     const GValue *v =\n         gst_structure_get_value (gst_caps_get_structure (src_template, i),\n         \"format\");\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-base/Config.in",
    "content": "menuconfig BR2_PACKAGE_GST1_PLUGINS_BASE\n\tbool \"gst1-plugins-base\"\n\tselect BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXV if BR2_PACKAGE_XORG7\n\thelp\n\t  A basic set of well-supported plug-ins for GStreamer.\n\n\t  https://gstreamer.freedesktop.org/\n\nif BR2_PACKAGE_GST1_PLUGINS_BASE\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_INSTALL_TOOLS\n\tbool \"install tools\"\n\thelp\n\t  Install the gst-discoverer, gst-device-monitor and gst-play\n\t  tools.\n\ncomment \"dependency-less plugins\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ADDER\n\tbool \"adder\"\n\thelp\n\t  Adds multiple streams\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP\n\tbool \"app\"\n\thelp\n\t  Elements used to communicate with applications\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT\n\tbool \"audioconvert (mandatory for audio playback)\"\n\tdefault y\n\thelp\n\t  Convert audio to different formats\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOMIXER\n\tbool \"audiomixer\"\n\thelp\n\t  Audio mixer plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORATE\n\tbool \"audiorate\"\n\thelp\n\t  Adjusts audio frames\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC\n\tbool \"audiotestsrc\"\n\thelp\n\t  Creates audio test signals of given frequency and volume\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_COMPOSITOR\n\tbool \"compositor\"\n\thelp\n\t  Video compositor plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ENCODING\n\tbool \"encoding\"\n\thelp\n\t  various encoding-related elements\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT\n\tbool \"videoconvert\"\n\thelp\n\t  Colorspace conversion\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_GIO\n\tbool \"gio\"\n\thelp\n\t  GIO elements\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_GIO_TYPEFINDER\n\tbool \"gio-typefinder\"\n\thelp\n\t  GIO typefinder elements\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OVERLAYCOMPOSITION\n\tbool \"overlaycomposition\"\n\thelp\n\t  Overlaycomposition plugin.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PLAYBACK\n\tbool \"playback\"\n\tdefault y\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TYPEFIND\n\thelp\n\t  various playback elements\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE\n\tbool \"audioresample (mandatory for audio playback)\"\n\tdefault y\n\thelp\n\t  Resamples audio\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_RAWPARSE\n\tbool \"rawparse\"\n\thelp\n\t  Parses byte streams into raw frames\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_SUBPARSE\n\tbool \"subparse\"\n\thelp\n\t  Subtitle parsing\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TCP\n\tbool \"tcp\"\n\thelp\n\t  transfer data over the network via TCP\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TYPEFIND\n\tbool \"typefind\"\n\tdefault y\n\thelp\n\t  default typefind functions\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC\n\tbool \"videotestsrc\"\n\thelp\n\t  Creates a test video stream\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEORATE\n\tbool \"videorate\"\n\thelp\n\t  Adjusts video frames\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE\n\tbool \"videoscale (mandatory for video playback)\"\n\tdefault y\n\thelp\n\t  Resizes video\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME\n\tbool \"volume (mandatory for audio playback)\"\n\tdefault y\n\thelp\n\t  plugin for controlling audio volume\n\ncomment \"plugins with external dependencies\"\n\nmenuconfig BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL\n\tbool \"opengl\"\n\tdepends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES\n\nif BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL\n\tdef_bool BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_WINDOW\n\ncomment \"The opengl library needs an API, a platform and a window system\"\n\tdepends on !BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL\n\ncomment \"APIs\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API\n\tbool\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL\n\tbool \"opengl\"\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_LIBGLU\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API\n\ncomment \"opengl needs an OpenGL backend\"\n\tdepends on !BR2_PACKAGE_HAS_LIBGL\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLES2\n\tbool \"gles2\"\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API\n\ncomment \"gles2 needs an OpenGL ES backend\"\n\tdepends on !BR2_PACKAGE_HAS_LIBGLES\n\ncomment \"Platforms\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM\n\tbool\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLX\n\tbool \"glx\"\n\tdefault y\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL\n\tdepends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR # mesa needs big X\n\tdepends on !BR2_PACKAGE_RPI_USERLAND # x11\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\tselect BR2_PACKAGE_XORGPROTO\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_X11\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM\n\thelp\n\t  OpenGL Extension to the X Window System\n\ncomment \"glx not supported with rpi-userland\"\n\tdepends on BR2_PACKAGE_RPI_USERLAND\n\ncomment \"glx needs the opengl API and modular X.org\"\n\tdepends on !BR2_PACKAGE_RPI_USERLAND && \\\n\t\t(!BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL || \\\n\t\t!BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR)\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL\n\tbool \"egl\"\n\tdefault y\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM\n\ncomment \"egl needs an API and an EGL backend\"\n\tdepends on !BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API || \\\n\t\t!BR2_PACKAGE_HAS_LIBEGL\n\ncomment \"Window systems\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_WINDOW\n\tbool\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_X11\n\tbool \"x11\"\n\tdefault y\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM\n\tdepends on !BR2_PACKAGE_RPI_USERLAND\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_WINDOW\n\ncomment \"x11 not supported with rpi-userland\"\n\tdepends on BR2_PACKAGE_RPI_USERLAND\n\ncomment \"x11 needs a platform and X.org\"\n\tdepends on !BR2_PACKAGE_RPI_USERLAND && \\\n\t\t(!BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM || \\\n\t\t!BR2_PACKAGE_XORG7)\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_WAYLAND\n\tbool \"wayland\"\n\tdefault y\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL\n\tdepends on BR2_PACKAGE_WAYLAND\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_WINDOW\n\ncomment \"wayland needs the egl platform and the wayland package\"\n\tdepends on !BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL || \\\n\t\t!BR2_PACKAGE_WAYLAND\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_DISPMANX\n\tbool \"dispmanx\"\n\tdefault y\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL\n\tdepends on BR2_PACKAGE_RPI_USERLAND\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_WINDOW\n\thelp\n\t  Raspberry Pi's Dispmanx windowing system\n\ncomment \"dispmanx needs the egl platform and rpi-userland\"\n\tdepends on !BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL || \\\n\t\t!BR2_PACKAGE_RPI_USERLAND\nendif\n\ncomment \"opengl needs an OpenGL or OpenGL ES backend\"\n\tdepends on !BR2_PACKAGE_HAS_LIBGL && !BR2_PACKAGE_HAS_LIBGLES\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA\n\tbool \"alsa (mandatory for audio playback)\"\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_MIXER\n\tselect BR2_PACKAGE_ALSA_LIB_PCM\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\thelp\n\t  ALSA plugin library\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TREMOR\n\tbool \"tremor\"\n\tselect BR2_PACKAGE_TREMOR\n\thelp\n\t  Vorbis Tremor decoder\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OGG\n\tbool \"ogg (*.ogg audio/video)\"\n\tselect BR2_PACKAGE_LIBOGG\n\thelp\n\t  ogg stream manipulation (info about ogg: http://xiph.org)\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OPUS\n\tbool \"opus\"\n\tselect BR2_PACKAGE_OPUS\n\thelp\n\t  Opus codec for speech and audio.\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PANGO\n\tbool \"pango font renderer\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # pango -> freetype\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # pango -> harfbuzz\n\tselect BR2_PACKAGE_PANGO\n\thelp\n\t  Pango-based text rendering and overlay\n\ncomment \"pango plugin needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_THEORA\n\tbool \"theora (*.ogg video)\"\n\tselect BR2_PACKAGE_LIBTHEORA\n\thelp\n\t  Theora plugin library\n\nconfig BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VORBIS\n\tbool \"vorbis (*.ogg audio)\"\n\tselect BR2_PACKAGE_LIBVORBIS\n\thelp\n\t  Vorbis plugin library\n\nendif\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash",
    "content": "# From https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.18.5.tar.xz.sha256sum\nsha256  960b7af4585700db0fdd5b843554e11e2564fed9e061f591fae88a7be6446fa3  gst-plugins-base-1.18.5.tar.xz\nsha256  f445dc78b88496f7e20c7a2a461b95baba5865c8919b8289ac24ac0a80c6ce7a  COPYING\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk",
    "content": "################################################################################\n#\n# gst1-plugins-base\n#\n################################################################################\n\nGST1_PLUGINS_BASE_VERSION = 1.18.5\nGST1_PLUGINS_BASE_SOURCE = gst-plugins-base-$(GST1_PLUGINS_BASE_VERSION).tar.xz\nGST1_PLUGINS_BASE_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-base\nGST1_PLUGINS_BASE_INSTALL_STAGING = YES\nGST1_PLUGINS_BASE_LICENSE_FILES = COPYING\nGST1_PLUGINS_BASE_LICENSE = LGPL-2.0+, LGPL-2.1+\n\nGST1_PLUGINS_BASE_CONF_OPTS = \\\n\t-Dexamples=disabled \\\n\t-Dtests=disabled \\\n\t-Dgobject-cast-checks=disabled \\\n\t-Dglib-asserts=disabled \\\n\t-Dglib-checks=disabled \\\n\t-Ddoc=disabled\n\n# Options which require currently unpackaged libraries\nGST1_PLUGINS_BASE_CONF_OPTS += \\\n\t-Dcdparanoia=disabled \\\n\t-Dlibvisual=disabled \\\n\t-Diso-codes=disabled\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_INSTALL_TOOLS),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dtools=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dtools=disabled\nendif\n\nGST1_PLUGINS_BASE_DEPENDENCIES = gstreamer1 $(TARGET_NLS_DEPENDENCIES)\n\nGST1_PLUGINS_BASE_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\n# These plugins are listed in the order from ./configure --help\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dintrospection=enabled\nGST1_PLUGINS_BASE_DEPENDENCIES += gobject-introspection\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dintrospection=disabled\nendif\n\nifeq ($(BR2_PACKAGE_ORC),y)\nGST1_PLUGINS_BASE_DEPENDENCIES += orc\nGST1_PLUGINS_BASE_CONF_OPTS += -Dorc=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dorc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_API)$(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM)$(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_WINDOW),yyy)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dgl=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dgl=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_OPENGL),y)\nGST1_PLUGINS_BASE_GL_API_LIST = opengl\nGST1_PLUGINS_BASE_DEPENDENCIES += libgl libglu\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLES2),y)\nGST1_PLUGINS_BASE_GL_API_LIST += gles2\nGST1_PLUGINS_BASE_DEPENDENCIES += libgles\nendif\n\nGST1_PLUGINS_BASE_CONF_OPTS += -Dgl_api='$(subst $(space),$(comma),$(GST1_PLUGINS_BASE_GL_API_LIST))'\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_GLX),y)\nGST1_PLUGINS_BASE_GL_PLATFORM_LIST += glx\nGST1_PLUGINS_BASE_DEPENDENCIES += xorgproto xlib_libXrender\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_EGL),y)\nGST1_PLUGINS_BASE_GL_PLATFORM_LIST += egl\nGST1_PLUGINS_BASE_DEPENDENCIES += libegl\nendif\nGST1_PLUGINS_BASE_CONF_OPTS += -Dgl_platform='$(subst $(space),$(comma),$(GST1_PLUGINS_BASE_GL_PLATFORM_LIST))'\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_X11),y)\nGST1_PLUGINS_BASE_WINSYS_LIST += x11\nGST1_PLUGINS_BASE_DEPENDENCIES += xlib_libX11 xlib_libXext\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_WAYLAND),y)\nGST1_PLUGINS_BASE_WINSYS_LIST += wayland\nGST1_PLUGINS_BASE_DEPENDENCIES += wayland wayland-protocols\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_DISPMANX),y)\nGST1_PLUGINS_BASE_WINSYS_LIST += dispmanx\nGST1_PLUGINS_BASE_DEPENDENCIES += rpi-userland\nendif\nGST1_PLUGINS_BASE_CONF_OPTS += -Dgl_winsys='$(subst $(space),$(comma),$(GST1_PLUGINS_BASE_WINSYS_LIST))'\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ADDER),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dadder=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dadder=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dapp=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dapp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Daudioconvert=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Daudioconvert=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOMIXER),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Daudiomixer=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Daudiomixer=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORATE),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Daudiorate=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Daudiorate=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Daudiotestsrc=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Daudiotestsrc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_COMPOSITOR),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dcompositor=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dcompositor=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ENCODING),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dencoding=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dencoding=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dvideoconvert=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dvideoconvert=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_GIO),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dgio=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dgio=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_GIO_TYPEFINDER),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dgio-typefinder=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dgio-typefinder=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OVERLAYCOMPOSITION),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Doverlaycomposition=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Doverlaycomposition=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PLAYBACK),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dplayback=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dplayback=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Daudioresample=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Daudioresample=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_RAWPARSE),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Drawparse=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Drawparse=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_SUBPARSE),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dsubparse=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dsubparse=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TCP),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dtcp=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dtcp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TYPEFIND),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dtypefind=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dtypefind=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dvideotestsrc=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dvideotestsrc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEORATE),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dvideorate=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dvideorate=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dvideoscale=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dvideoscale=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dvolume=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dvolume=disabled\nendif\n\n# Zlib is checked for headers and is not an option.\nifeq ($(BR2_PACKAGE_ZLIB),y)\nGST1_PLUGINS_BASE_DEPENDENCIES += zlib\nendif\n\nifeq ($(BR2_PACKAGE_XORG7),y)\nGST1_PLUGINS_BASE_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXv\nGST1_PLUGINS_BASE_CONF_OPTS += \\\n\t-Dx11=enabled \\\n\t-Dxshm=enabled \\\n\t-Dxvideo=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += \\\n\t-Dx11=disabled \\\n\t-Dxshm=disabled \\\n\t-Dxvideo=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA),y)\nGST1_PLUGINS_BASE_DEPENDENCIES += alsa-lib\nGST1_PLUGINS_BASE_CONF_OPTS += -Dalsa=enabled\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dalsa=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TREMOR),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dtremor=enabled\nGST1_PLUGINS_BASE_DEPENDENCIES += tremor\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dtremor=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OPUS),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dopus=enabled\nGST1_PLUGINS_BASE_DEPENDENCIES += opus\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dopus=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OGG),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dogg=enabled\nGST1_PLUGINS_BASE_DEPENDENCIES += libogg\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dogg=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PANGO),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dpango=enabled\nGST1_PLUGINS_BASE_DEPENDENCIES += pango\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dpango=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_THEORA),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dtheora=enabled\nGST1_PLUGINS_BASE_DEPENDENCIES += libtheora\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dtheora=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VORBIS),y)\nGST1_PLUGINS_BASE_CONF_OPTS += -Dvorbis=enabled\nGST1_PLUGINS_BASE_DEPENDENCIES += libvorbis\nelse\nGST1_PLUGINS_BASE_CONF_OPTS += -Dvorbis=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-bayer2rgb-neon/Config.in",
    "content": "menuconfig BR2_PACKAGE_GST1_PLUGINS_BAYER2RGB_NEON\n\tbool \"gst1-plugins-bayer2rgb-neon\"\n\tdepends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64 # bayer2rgb-neon\n\tdepends on !BR2_STATIC_LIBS # bayer2rgb-neon\n\tdepends on BR2_INSTALL_LIBSTDCPP # bayer2rgb-neon\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # bayer2rgb-neon\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_BAYER2RGB_NEON\n\thelp\n\t  gst1-plugins-bayer2rgb-neon is a gstreamer1\n\t  plugin which uses bayer2rgb-neon library to\n\t  decode raw camera bayer to RGB using\n\t  NEON hardware acceleration.\n\n\t  https://gitlab-ext.sigma-chemnitz.de/ensc/gst-bayer2rgb-neon\n\ncomment \"gst1-plugins-bayer2rgb-neon needs a toolchain w/ C++, dynamic library, gcc >= 4.9\"\n\tdepends on BR2_arm && BR2_ARM_CPU_HAS_NEON\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-bayer2rgb-neon/gst1-plugins-bayer2rgb-neon.hash",
    "content": "# Locally calculated\nsha256  76b2135a23f465f789ccb86bd3a8190a1e30f86cdb28abfac4d9a2cdece63fa2  gst1-plugins-bayer2rgb-neon-b630798efcd611879e7cb1c246052e5ba1acc41d-br1.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-bayer2rgb-neon/gst1-plugins-bayer2rgb-neon.mk",
    "content": "################################################################################\n#\n# gst1-plugins-bayer2rgb-neon\n#\n################################################################################\n\nGST1_PLUGINS_BAYER2RGB_NEON_VERSION = b630798efcd611879e7cb1c246052e5ba1acc41d\nGST1_PLUGINS_BAYER2RGB_NEON_SITE = https://gitlab-ext.sigma-chemnitz.de/ensc/gst-bayer2rgb-neon.git\nGST1_PLUGINS_BAYER2RGB_NEON_SITE_METHOD = git\nGST1_PLUGINS_BAYER2RGB_NEON_LICENSE = GPL-3.0\nGST1_PLUGINS_BAYER2RGB_NEON_LICENSE_FILES = COPYING\n\nGST1_PLUGINS_BAYER2RGB_NEON_INSTALL_STAGING = YES\n\nGST1_PLUGINS_BAYER2RGB_NEON_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tgstreamer1 \\\n\tgst1-plugins-base \\\n\tbayer2rgb-neon\n\nGST1_PLUGINS_BAYER2RGB_NEON_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-good/Config.in",
    "content": "menuconfig BR2_PACKAGE_GST1_PLUGINS_GOOD\n\tbool \"gst1-plugins-good\"\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXV if BR2_PACKAGE_XORG7\n\thelp\n\t  A set of well-supported plug-ins for GStreamer under the\n\t  preferred license.\n\n\t  https://gstreamer.freedesktop.org/\n\nif BR2_PACKAGE_GST1_PLUGINS_GOOD\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_JPEG\n\tbool \"jpeg (JPEG support)\"\n\tselect BR2_PACKAGE_JPEG\n\thelp\n\t  JPeg plugin library\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PNG\n\tbool \"png (PNG support)\"\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  PNG plugin library\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_BZ2\n\tbool \"bz2 support\"\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA\n\tselect BR2_PACKAGE_BZIP2\n\thelp\n\t  Enable bz2 support for the following plugins:\n\t  matroska\n\ncomment \"dependency-less plugins\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ALPHA\n\tbool \"alpha\"\n\thelp\n\t  adds an alpha channel to video - constant or via chroma-keying\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_APETAG\n\tbool \"apetag\"\n\thelp\n\t  APEv1/2 tag reader\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX\n\tbool \"audiofx\"\n\thelp\n\t  Audio effects plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOPARSERS\n\tbool \"audioparsers\"\n\thelp\n\t  Parsers for various audio formats\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUPARSE\n\tbool \"auparse\"\n\thelp\n\t  parses au streams\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT\n\tbool \"autodetect\"\n\thelp\n\t  Plugin contains auto-detection plugins for video/audio in-\n\t  and outputs\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AVI\n\tbool \"avi (*.avi video)\"\n\tdefault y\n\thelp\n\t  AVI stream handling\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CUTTER\n\tbool \"cutter\"\n\thelp\n\t  Audio Cutter to split audio into non-silent bits\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEBUGUTILS\n\tbool \"debugutils\"\n\thelp\n\t  elements for testing and debugging\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEINTERLACE\n\tbool \"deinterlace\"\n\thelp\n\t  Deinterlacer\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DTMF\n\tbool \"dtmf\"\n\thelp\n\t  DTMF plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EFFECTV\n\tbool \"effectv\"\n\thelp\n\t  effect plugins from the effectv project\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EQUALIZER\n\tbool \"equalizer\"\n\thelp\n\t  GStreamer audio equalizers\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLV\n\tbool \"flv\"\n\thelp\n\t  FLV muxing and demuxing plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLX\n\tbool \"flx\"\n\thelp\n\t  FLC/FLI/FLX video decoder\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM\n\tbool \"goom\"\n\thelp\n\t  GOOM visualization filter\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM2K1\n\tbool \"goom2k1\"\n\thelp\n\t  GOOM 2k1 visualization filter\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ICYDEMUX\n\tbool \"icydemux\"\n\thelp\n\t  Demux ICY tags from a stream\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ID3DEMUX\n\tbool \"id3demux (*.mp3 audio)\"\n\thelp\n\t  Demux ID3v1 and ID3v2 tags from a file\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE\n\tbool \"imagefreeze\"\n\thelp\n\t  Still frame stream generator\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_INTERLEAVE\n\tbool \"interleave\"\n\thelp\n\t  Audio interleaver/deinterleaver\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4\n\tbool \"isomp4\"\n\tdefault y\n\thelp\n\t  ISO base media file format support (mp4, 3gpp, qt, mj2)\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAW\n\tbool \"law\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LEVEL\n\tbool \"level\"\n\thelp\n\t  Audio level plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA\n\tbool \"matroska\"\n\thelp\n\t  Matroska and WebM stream handling\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MONOSCOPE\n\tbool \"monoscope\"\n\thelp\n\t  Monoscope visualization\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIFILE\n\tbool \"multifile\"\n\thelp\n\t  Reads/Writes buffers from/to sequentially named files\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIPART\n\tbool \"multipart\"\n\thelp\n\t  multipart stream manipulation\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_REPLAYGAIN\n\tbool \"replaygain\"\n\thelp\n\t  ReplayGain volume normalization\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP\n\tbool \"rtp\"\n\thelp\n\t  Real-time protocol plugins\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER\n\tbool \"rtpmanager\"\n\thelp\n\t  RTP session management plugin library\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP\n\tbool \"rtsp\"\n\thelp\n\t  transfer data via RTSP\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SHAPEWIPE\n\tbool \"shapewipe\"\n\thelp\n\t  Shape Wipe transition filter\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE\n\tbool \"smpte\"\n\thelp\n\t  Apply the standard SMPTE transitions on video images\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPECTRUM\n\tbool \"spectrum\"\n\thelp\n\t  Run an FFT on the audio signal, output spectrum data\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP\n\tbool \"udp\"\n\thelp\n\t  transfer data via UDP\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX\n\tbool \"videobox\"\n\thelp\n\t  resizes a video by adding borders or cropping\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP\n\tbool \"videocrop\"\n\thelp\n\t  Crops video into a user-defined region\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOFILTER\n\tbool \"videofilter\"\n\thelp\n\t  Video filters plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOMIXER\n\tbool \"videomixer\"\n\thelp\n\t  Video mixer\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVENC\n\tbool \"wavenc\"\n\thelp\n\t  Encode raw audio into WAV\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPARSE\n\tbool \"wavparse (*.wav audio)\"\n\tdefault y\n\thelp\n\t  Parse a .wav file into raw audio\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M\n\tbool \"y4m\"\n\thelp\n\t  Encodes a YUV frame into the yuv4mpeg format (mjpegtools)\n\ncomment \"plugins with external dependencies\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAME\n\tbool \"lame (*.mp3 audio encoder)\"\n\tselect BR2_PACKAGE_LAME\n\thelp\n\t  Encode MP3s with LAME\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MPG123\n\tbool \"mpg123 (*.mp3 audio)\"\n\tselect BR2_PACKAGE_MPG123\n\thelp\n\t  mp3 decoding based on the mpg123 library\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS\n\tbool \"ossaudio (OSS audio)\"\n\thelp\n\t  OSS (Open Sound System) support for GStreamer\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS4\n\tbool \"oss4 (Open Sound System 4)\"\n\thelp\n\t  Open Sound System (OSS) version 4 support for GStreamer\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_QMLGL\n\tbool \"qmlgl (qt5)\"\n\tdepends on BR2_PACKAGE_QT5\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\tselect BR2_PACKAGE_QT5DECLARATIVE\n\tselect BR2_PACKAGE_QT5DECLARATIVE_QUICK\n\tselect BR2_PACKAGE_QT5X11EXTRAS if BR2_PACKAGE_QT5BASE_XCB\n\thelp\n\t  QT5 plugin which includes elements qmlglsrc and qmlglsink\n\ncomment \"qmlgl (qt5) needs the gst1-plugins-base opengl library\"\n\tdepends on !BR2_PACKAGE_GST1_PLUGINS_BASE_HAS_LIB_OPENGL\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SHOUT2\n\tbool \"shout2\"\n\tselect BR2_PACKAGE_LIBSHOUT\n\thelp\n\t  Elements to send data to an icecast server using libshout2\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2\n\tbool \"v4l2\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # multi planar api\n\tselect BR2_PACKAGE_LIBGUDEV if BR2_PACKAGE_HAS_UDEV\n\thelp\n\t  elements for Video 4 Linux\n\ncomment \"v4l2 needs a toolchain w/ headers >= 3.0\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE\n\tbool \"v4l2-probe (m2m)\"\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2\n\thelp\n\t  Enables the V4L2 probe at plugin load time. This enables\n\t  support for v4l2 transform devices, such as m2m\n\t  devices. These plugins are registered as v4l2videoNconvert\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CAIRO\n\tbool \"cairo\"\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_CAIRO_PNG\n\thelp\n\t  Cairo-based elements\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLAC\n\tbool \"flac (libFLAC)\"\n\tdepends on BR2_USE_WCHAR # flac\n\tselect BR2_PACKAGE_FLAC\n\thelp\n\t  The FLAC Lossless compressor Codec\n\ncomment \"flac needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GDKPIXBUF\n\tbool \"gdkpixbuf\"\n\tdepends on BR2_USE_WCHAR # gdk-pixbuf -> libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # gdk-pixbuf -> libglib2\n\tselect BR2_PACKAGE_GDK_PIXBUF\n\thelp\n\t  GdkPixbuf-based image decoder, overlay and sink\n\ncomment \"gdkpixbuf needs a toolchain w/ wchar, threads\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_JACK\n\tbool \"jack\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_JACK2\n\thelp\n\t  JACK audio source/sink plugin\n\ncomment \"jack needs a toolchain w/ C++, dynamic library\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE\n\tbool \"pulseaudio\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # pulseaudio\n\tdepends on BR2_USE_MMU # pulseaudio\n\tdepends on !BR2_STATIC_LIBS # pulseaudio\n\tdepends on BR2_USE_WCHAR # pulseaudio\n\tdepends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC # pulseaudio\n\tselect BR2_PACKAGE_PULSEAUDIO\n\thelp\n\t  PulseAudio plugin library\n\ncomment \"pulseaudio support needs a toolchain w/ threads, wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SOUPHTTPSRC\n\tbool \"souphttpsrc (http client)\"\n\tdepends on BR2_USE_WCHAR # libsoup -> glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libsoup -> glib2\n\tselect BR2_PACKAGE_LIBSOUP\n\thelp\n\t  libsoup HTTP client src/sink\n\ncomment \"souphttpsrc needs a toolchain w/ wchar, threads\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPEEX\n\tbool \"speex\"\n\tselect BR2_PACKAGE_SPEEX\n\thelp\n\t  Speex plugin library\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_TAGLIB\n\tbool \"taglib\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_TAGLIB\n\thelp\n\t  Taglib tagging plugin library\n\ncomment \"taglib needs a toolchain w/ C++, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_TWOLAME\n\tbool \"twolame\"\n\tselect BR2_PACKAGE_TWOLAME\n\thelp\n\t  twolame mp2 audio encoder plugin\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX\n\tbool \"vpx (webm)\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libvpx\n\tselect BR2_PACKAGE_LIBVPX\n\thelp\n\t  VP8 plugin\n\ncomment \"libvpx needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPACK\n\tbool \"wavpack (*.wv audio)\"\n\tselect BR2_PACKAGE_WAVPACK\n\thelp\n\t  Wavpack lossless/lossy audio format handling\n\nendif\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash",
    "content": "# From https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.18.5.tar.xz.sha256sum\nsha256  3aaeeea7765fbf8801acce4a503a9b05f73f04e8a35352e9d00232cfd555796b  gst-plugins-good-1.18.5.tar.xz\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  COPYING\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk",
    "content": "################################################################################\n#\n# gst1-plugins-good\n#\n################################################################################\n\nGST1_PLUGINS_GOOD_VERSION = 1.18.5\nGST1_PLUGINS_GOOD_SOURCE = gst-plugins-good-$(GST1_PLUGINS_GOOD_VERSION).tar.xz\nGST1_PLUGINS_GOOD_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-good\nGST1_PLUGINS_GOOD_LICENSE_FILES = COPYING\nGST1_PLUGINS_GOOD_LICENSE = LGPL-2.1+\n\nGST1_PLUGINS_GOOD_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\nGST1_PLUGINS_GOOD_CONF_OPTS = \\\n\t-Dexamples=disabled \\\n\t-Dtests=disabled \\\n\t-Dgobject-cast-checks=disabled \\\n\t-Dglib-asserts=disabled \\\n\t-Dglib-checks=disabled \\\n\t-Dasm=disabled \\\n\t-Ddirectsound=disabled \\\n\t-Dwaveform=disabled \\\n\t-Drpicamsrc=disabled \\\n\t-Dosxaudio=disabled \\\n\t-Dosxvideo=disabled \\\n\t-Daalib=disabled \\\n\t-Dlibcaca=disabled \\\n\t-Ddoc=disabled\n\n# Options which require currently unpackaged libraries\nGST1_PLUGINS_GOOD_CONF_OPTS += \\\n\t-Ddv=disabled \\\n\t-Ddv1394=disabled\n\nGST1_PLUGINS_GOOD_DEPENDENCIES = \\\n\tgstreamer1 \\\n\tgst1-plugins-base \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_JACK),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Djack=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += jack2\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Djack=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBV4L),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2-libv4l2=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += libv4l\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2-libv4l2=disabled\nendif\n\nifeq ($(BR2_PACKAGE_ORC),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dorc=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += orc\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ALPHA),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dalpha=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dalpha=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_APETAG),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dapetag=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dapetag=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Daudiofx=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Daudiofx=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOPARSERS),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Daudioparsers=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Daudioparsers=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUPARSE),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dauparse=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dauparse=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dautodetect=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dautodetect=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AVI),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Davi=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Davi=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CUTTER),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dcutter=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dcutter=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEBUGUTILS),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Ddebugutils=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Ddebugutils=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEINTERLACE),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Ddeinterlace=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Ddeinterlace=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DTMF),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Ddtmf=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Ddtmf=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EFFECTV),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Deffectv=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Deffectv=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EQUALIZER),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dequalizer=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dequalizer=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLV),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dflv=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dflv=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLX),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dflx=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dflx=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dgoom=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dgoom=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM2K1),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dgoom2k1=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dgoom2k1=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ICYDEMUX),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dicydemux=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dicydemux=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ID3DEMUX),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Did3demux=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Did3demux=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dimagefreeze=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dimagefreeze=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_INTERLEAVE),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dinterleave=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dinterleave=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Disomp4=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Disomp4=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAME),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dlame=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += lame\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dlame=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MPG123),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dmpg123=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += mpg123\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dmpg123=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAW),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dlaw=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dlaw=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LEVEL),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dlevel=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dlevel=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dmatroska=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dmatroska=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MONOSCOPE),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dmonoscope=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dmonoscope=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIFILE),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dmultifile=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dmultifile=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIPART),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dmultipart=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dmultipart=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_REPLAYGAIN),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dreplaygain=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dreplaygain=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Drtp=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Drtp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Drtpmanager=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Drtpmanager=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Drtsp=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Drtsp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SHAPEWIPE),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dshapewipe=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dshapewipe=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dsmpte=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dsmpte=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPECTRUM),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dspectrum=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dspectrum=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dudp=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dudp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dvideobox=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dvideobox=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dvideocrop=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dvideocrop=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOFILTER),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dvideofilter=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dvideofilter=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOMIXER),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dvideomixer=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dvideomixer=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVENC),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dwavenc=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dwavenc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPARSE),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dwavparse=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dwavparse=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dy4m=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dy4m=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Doss=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Doss=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS4),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Doss4=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Doss4=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_QMLGL),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dqt5=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += qt5declarative\nifeq ($(BR2_PACKAGE_QT5BASE_XCB),y)\nGST1_PLUGINS_GOOD_DEPENDENCIES += qt5x11extras\nendif\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dqt5=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SHOUT2),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dshout2=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += libshout\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dshout2=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2=enabled\n# Enable use of gudev if available, for device probing and monitoring.\nifeq ($(BR2_PACKAGE_LIBGUDEV),y)\nGST1_PLUGINS_GOOD_DEPENDENCIES += libgudev\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2-gudev=enabled\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2-gudev=disabled\nendif\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2-probe=true\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dv4l2-probe=false\nendif\n\nifeq ($(BR2_PACKAGE_XORG7),y)\nGST1_PLUGINS_GOOD_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXv\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dximagesrc=enabled\nifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y)\nGST1_PLUGINS_GOOD_DEPENDENCIES += xlib_libXfixes\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dximagesrc-xfixes=enabled\nendif\nifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y)\nGST1_PLUGINS_GOOD_DEPENDENCIES += xlib_libXdamage\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dximagesrc-xdamage=enabled\nendif\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += \\\n\t-Dximagesrc=disabled \\\n\t-Dximagesrc-xfixes=disabled \\\n\t-Dximagesrc-xdamage=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CAIRO),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dcairo=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += cairo\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dcairo=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLAC),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dflac=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += flac\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dflac=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GDKPIXBUF),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dgdk-pixbuf=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += gdk-pixbuf\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dgdk-pixbuf=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_JPEG),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Djpeg=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += jpeg\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Djpeg=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PNG),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dpng=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += libpng\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dpng=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dpulse=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += pulseaudio\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dpulse=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SOUPHTTPSRC),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dsoup=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += libsoup\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dsoup=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPEEX),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dspeex=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += speex\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dspeex=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_TAGLIB),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dtaglib=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += taglib\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dtaglib=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_TWOLAME),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dtwolame=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += twolame\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dtwolame=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dvpx=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += libvpx\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dvpx=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPACK),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dwavpack=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += wavpack\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dwavpack=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_ZLIB),y)\nGST1_PLUGINS_GOOD_DEPENDENCIES += zlib\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_BZ2),y)\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dbz2=enabled\nGST1_PLUGINS_GOOD_DEPENDENCIES += bzip2\nelse\nGST1_PLUGINS_GOOD_CONF_OPTS += -Dbz2=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-ugly/Config.in",
    "content": "menuconfig BR2_PACKAGE_GST1_PLUGINS_UGLY\n\tbool \"gst1-plugins-ugly\"\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\thelp\n\t  A set of well-supported plug-ins for GStreamer, but might pose\n\t  problems for distributors.\n\n\t  https://gstreamer.freedesktop.org/\n\nif BR2_PACKAGE_GST1_PLUGINS_UGLY\n\ncomment \"dependency-less plugins\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_ASFDEMUX\n\tbool \"asfdemux\"\n\thelp\n\t  Demuxes and muxes audio and video in Microsofts ASF format\n\nconfig BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDLPCMDEC\n\tbool \"dvdlpcmdec\"\n\thelp\n\t  Decode DVD LPCM frames into standard PCM\n\nconfig BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDSUB\n\tbool \"dvdsub\"\n\thelp\n\t  DVD subtitle parser and decoder\n\nconfig BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_XINGMUX\n\tbool \"xingmux\"\n\thelp\n\t  Add XING tags to mpeg audio files\n\nconfig BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_REALMEDIA\n\tbool \"realmedia\"\n\thelp\n\t  RealMedia support plugins\n\ncomment \"plugins with external dependencies (there may be more available)\"\n\nconfig BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDREAD\n\tbool \"dvdread\"\n\tselect BR2_PACKAGE_LIBDVDREAD\n\thelp\n\t  Access a DVD with dvdread\n\nconfig BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPEG2DEC\n\tbool \"mpeg2dec\"\n\tselect BR2_PACKAGE_LIBMPEG2\n\thelp\n\t  LibMpeg2 decoder\n\nconfig BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_X264\n\tbool \"x264\"\n\tselect BR2_PACKAGE_X264\n\thelp\n\t  x264 encoder\n\n# Note: to get descriptions use the following.\n# # find . -name 'plugin-*.xml' | xargs grep -m 1 description\nendif\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash",
    "content": "# From https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.18.5.tar.xz.sha256sum\nsha256  df32803e98f8a9979373fa2ca7e05e62f977b1097576d3a80619d9f5c69f66d9  gst-plugins-ugly-1.18.5.tar.xz\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  COPYING\n"
  },
  {
    "path": "package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk",
    "content": "################################################################################\n#\n# gst1-plugins-ugly\n#\n################################################################################\n\nGST1_PLUGINS_UGLY_VERSION = 1.18.5\nGST1_PLUGINS_UGLY_SOURCE = gst-plugins-ugly-$(GST1_PLUGINS_UGLY_VERSION).tar.xz\nGST1_PLUGINS_UGLY_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-ugly\nGST1_PLUGINS_UGLY_LICENSE_FILES = COPYING\n# GPL licensed plugins will append to GST1_PLUGINS_UGLY_LICENSE if enabled.\nGST1_PLUGINS_UGLY_LICENSE = LGPL-2.1+\n\nGST1_PLUGINS_UGLY_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\nGST1_PLUGINS_UGLY_CONF_OPTS += \\\n\t-Dtests=disabled \\\n\t-Ddoc=disabled\n\nGST1_PLUGINS_UGLY_CONF_OPTS += \\\n\t-Da52dec=disabled \\\n\t-Damrnb=disabled \\\n\t-Damrwbdec=disabled \\\n\t-Dcdio=disabled \\\n\t-Dsidplay=disabled\n\nGST1_PLUGINS_UGLY_DEPENDENCIES = gstreamer1 gst1-plugins-base\n\nifeq ($(BR2_PACKAGE_ORC),y)\nGST1_PLUGINS_UGLY_CONF_OPTS += -Dorc=enabled\nGST1_PLUGINS_UGLY_DEPENDENCIES += orc\nelse\nGST1_PLUGINS_UGLY_CONF_OPTS += -Dorc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_ASFDEMUX),y)\nGST1_PLUGINS_UGLY_CONF_OPTS += -Dasfdemux=enabled\nelse\nGST1_PLUGINS_UGLY_CONF_OPTS += -Dasfdemux=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDLPCMDEC),y)\nGST1_PLUGINS_UGLY_CONF_OPTS += -Ddvdlpcmdec=enabled\nelse\nGST1_PLUGINS_UGLY_CONF_OPTS += -Ddvdlpcmdec=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDSUB),y)\nGST1_PLUGINS_UGLY_CONF_OPTS += -Ddvdsub=enabled\nelse\nGST1_PLUGINS_UGLY_CONF_OPTS += -Ddvdsub=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_XINGMUX),y)\nGST1_PLUGINS_UGLY_CONF_OPTS += -Dxingmux=enabled\nelse\nGST1_PLUGINS_UGLY_CONF_OPTS += -Dxingmux=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_REALMEDIA),y)\nGST1_PLUGINS_UGLY_CONF_OPTS += -Drealmedia=enabled\nelse\nGST1_PLUGINS_UGLY_CONF_OPTS += -Drealmedia=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDREAD),y)\nGST1_PLUGINS_UGLY_CONF_OPTS += -Ddvdread=enabled\nGST1_PLUGINS_UGLY_DEPENDENCIES += libdvdread\nGST1_PLUGINS_UGLY_HAS_GPL_LICENSE = y\nelse\nGST1_PLUGINS_UGLY_CONF_OPTS += -Ddvdread=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPEG2DEC),y)\nGST1_PLUGINS_UGLY_CONF_OPTS += -Dmpeg2dec=enabled\nGST1_PLUGINS_UGLY_DEPENDENCIES += libmpeg2\nGST1_PLUGINS_UGLY_HAS_GPL_LICENSE = y\nelse\nGST1_PLUGINS_UGLY_CONF_OPTS += -Dmpeg2dec=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_X264),y)\nGST1_PLUGINS_UGLY_CONF_OPTS += -Dx264=enabled\nGST1_PLUGINS_UGLY_DEPENDENCIES += x264\nGST1_PLUGINS_UGLY_HAS_GPL_LICENSE = y\nelse\nGST1_PLUGINS_UGLY_CONF_OPTS += -Dx264=disabled\nendif\n\n# Add GPL license if GPL plugins enabled.\nifeq ($(GST1_PLUGINS_UGLY_HAS_GPL_LICENSE),y)\nGST1_PLUGINS_UGLY_LICENSE += , GPL-2.0\nendif\n\n# Use the following command to extract license info for plugins.\n# # find . -name 'plugin-*.xml' | xargs grep license\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-python/Config.in",
    "content": "config BR2_PACKAGE_GST1_PYTHON\n\tbool \"gst1-python\"\n\tdepends on BR2_USE_MMU # libglib2, gobject-introspection\n\tdepends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # gobject-introspection\n\tdepends on BR2_HOST_GCC_AT_LEAST_8 # gobject-introspection -> host-qemu\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # gobject-introspection\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # gobject-introspection\n\tdepends on BR2_PACKAGE_PYTHON3 # gobject-introspection\n\tselect BR2_PACKAGE_GOBJECT_INTROSPECTION\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_PYTHON_GOBJECT\n\thelp\n\t  GStreamer python overrides for the gobject-introspection-based\n\t  pygst bindings.\n\n\t  https://gstreamer.freedesktop.org/modules/gst-python.html\n\ncomment \"gst1-python needs python3\"\n\tdepends on !BR2_PACKAGE_PYTHON3\n\ncomment \"gst1-python needs a glibc toolchain, gcc >= 4.9, host gcc >= 8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_HOST_GCC_AT_LEAST_8\n"
  },
  {
    "path": "package/gstreamer1/gst1-python/gst1-python.hash",
    "content": "# From https://gstreamer.freedesktop.org/src/gst-python/gst-python-1.18.5.tar.xz.sha256sum\nsha256  533685871305959d6db89507f3b3aa6c765c2f2b0dacdc32c5a6543e72e5bc52  gst-python-1.18.5.tar.xz\nsha256  ea3ad127610e5ded2210b3a86a46314f2b3b28e438eccffdae19a4d6fbcdb0c2  COPYING\n"
  },
  {
    "path": "package/gstreamer1/gst1-python/gst1-python.mk",
    "content": "################################################################################\n#\n# gst1-python\n#\n################################################################################\n\nGST1_PYTHON_VERSION = 1.18.5\nGST1_PYTHON_SOURCE = gst-python-$(GST1_PYTHON_VERSION).tar.xz\nGST1_PYTHON_SITE = https://gstreamer.freedesktop.org/src/gst-python\nGST1_PYTHON_INSTALL_STAGING = YES\nGST1_PYTHON_LICENSE_FILES = COPYING\nGST1_PYTHON_LICENSE = LGPL-2.1+\n\nGST1_PYTHON_DEPENDENCIES = \\\n\tgst1-plugins-base \\\n\tgstreamer1 \\\n\tpython-gobject\n\n# A sysconfigdata_name must be manually specified or the resulting .so\n# will have a x86_64 prefix, which causes \"from gi.repository import Gst\"\n# to fail. A pythonpath must be specified or the host python path will be\n# used resulting in a \"not a valid python\" error.\nGST1_PYTHON_CONF_ENV += \\\n\t_PYTHON_SYSCONFIGDATA_NAME=$(PKG_PYTHON_SYSCONFIGDATA_NAME) \\\n\tPYTHONPATH=$(PYTHON3_PATH)\n\n# Due to the CONF_ENV options, libpython-dir must be set manually\n# or else the error: \"Python dynamic library path could not be determined\"\n# occurs. We set the libpython-dir to /usr/lib as this path is hard-coded\n# into the resulting .so file as /usr/lib/python3.$(PYTHON3_VERSION_MAJOR).so.\n# Because we provide PYTHONPATH=$(PYTHON3_PATH) above, the logic in the meson\n# file uses the above python path to determine if /usr/lib/ has the proper .so\n# file. Because Buildroot provides the appropriate paths, the meson file finds\n# the correct .so file, and the resulting compiled library has the appropriate\n# path of /usr/lib/python3.$(PYTHON3_VERSION_MAJOR).so\nGST1_PYTHON_CONF_OPTS += \\\n\t-Dlibpython-dir=/usr/lib/\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-rtsp-server/Config.in",
    "content": "config BR2_PACKAGE_GST1_RTSP_SERVER\n\tbool \"gst1-rtsp-server\"\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP # runtime\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP # runtime\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER # runtime\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP # runtime\n\thelp\n\t  RTSP server library based on GStreamer.\n\n\t  https://gstreamer.freedesktop.org/\n"
  },
  {
    "path": "package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash",
    "content": "# From https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.18.5.tar.xz.sha256sum\nsha256  04d63bf48816c6f41c73f6de0f912a7cef0aab39c44162a7bcece1923dfc9d1f  gst-rtsp-server-1.18.5.tar.xz\nsha256  f445dc78b88496f7e20c7a2a461b95baba5865c8919b8289ac24ac0a80c6ce7a  COPYING\nsha256  f445dc78b88496f7e20c7a2a461b95baba5865c8919b8289ac24ac0a80c6ce7a  COPYING.LIB\n"
  },
  {
    "path": "package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk",
    "content": "################################################################################\n#\n# gst1-rtsp-server\n#\n################################################################################\n\nGST1_RTSP_SERVER_VERSION = 1.18.5\nGST1_RTSP_SERVER_SOURCE = gst-rtsp-server-$(GST1_RTSP_SERVER_VERSION).tar.xz\nGST1_RTSP_SERVER_SITE = http://gstreamer.freedesktop.org/src/gst-rtsp-server\nGST1_RTSP_SERVER_LICENSE = LGPL-2.0+\nGST1_RTSP_SERVER_LICENSE_FILES = COPYING COPYING.LIB\nGST1_RTSP_SERVER_CPE_ID_VENDOR = gstreamer_project\nGST1_RTSP_SERVER_CPE_ID_PRODUCT = gst-rtsp-server\nGST1_RTSP_SERVER_INSTALL_STAGING = YES\nGST1_RTSP_SERVER_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tgstreamer1 \\\n\tgst1-plugins-base \\\n\tgst1-plugins-good\n\nGST1_RTSP_SERVER_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\nGST1_RTSP_SERVER_CONF_OPTS = \\\n\t-Dexamples=disabled \\\n\t-Dtests=disabled \\\n\t-Ddoc=disabled\n\nGST1_RTSP_SERVER_CONF_OPTS += \\\n\t-Dexamples=disabled \\\n\t-Dtests=disabled \\\n\t-Dgobject-cast-checks=disabled \\\n\t-Dglib-asserts=disabled \\\n\t-Dglib-checks=disabled\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nGST1_RTSP_SERVER_CONF_OPTS += -Dintrospection=enabled\nGST1_RTSP_SERVER_DEPENDENCIES += gobject-introspection\nelse\nGST1_RTSP_SERVER_CONF_OPTS += -Dintrospection=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBCGROUP),y)\nGST1_RTSP_SERVER_DEPENDENCIES += libcgroup\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD),y)\nGST1_RTSP_SERVER_DEPENDENCIES += gst1-plugins-bad\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-shark/Config.in",
    "content": "config BR2_PACKAGE_GST1_SHARK\n\tbool \"gst1-shark\"\n\tselect BR2_PACKAGE_GSTREAMER1_CHECK\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP\n\tselect BR2_PACKAGE_GSTREAMER1_GST_DEBUG # gst_debug_log_valist, GST_CAT_STATES\n\thelp\n\t  GstShark leverages GStreamers newest instrumentation subsystem\n\t  by installing a set of custom hooks to the trace points. A\n\t  variety of data analytics are extracted and presented to the\n\t  user in a graphical, friendly way.\n\n\t  https://github.com/RidgeRun/gst-shark\n"
  },
  {
    "path": "package/gstreamer1/gst1-shark/gst1-shark.hash",
    "content": "# locally computed hash\nsha256  689e60b4e10635a4f3af795b53045c6e90643896fa07b61e164a96158a79bdcf  gst1-shark-v0.7.3-br1.tar.gz\n\n# Hashes for license files:\nsha256  6d191b8f1fa03cabced18b8e48fddbf960a19f965bed8491e76ed62238f92f0b  COPYING\n"
  },
  {
    "path": "package/gstreamer1/gst1-shark/gst1-shark.mk",
    "content": "################################################################################\n#\n# gst1-shark\n#\n################################################################################\n\nGST1_SHARK_VERSION = v0.7.3\nGST1_SHARK_SITE =  https://github.com/RidgeRun/gst-shark.git\nGST1_SHARK_SITE_METHOD = git\nGST1_SHARK_GIT_SUBMODULES = YES\n\nGST1_SHARK_LICENSE = LGPL-2.1+\nGST1_SHARK_LICENSE_FILES = COPYING\n\nGST1_SHARK_AUTORECONF = YES\nGST1_SHARK_DEPENDENCIES = host-pkgconf gstreamer1 gst1-plugins-base\nGST1_SHARK_CONF_OPTS = --disable-graphviz\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gstreamer1/gst1-vaapi/Config.in",
    "content": "config BR2_PACKAGE_GST1_VAAPI\n\tbool \"gst1-vaapi\"\n\tdepends on !BR2_STATIC_LIBS # dlopen(), libva\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libva, libdrm\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_LIBVA\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BAD # gstreamer-codecparsers\n\thelp\n\t  gstreamer-vaapi consists in a collection of VA-API based\n\t  plugins for GStreamer and helper libraries.\n\n\t  vaapi<CODEC>dec is used to decode JPEG, MPEG-2, MPEG-4:2,\n\t  H.264 AVC, H.264 MVC, VP8, VC-1, WMV3, HEVC videos to VA\n\t  surfaces, depending on the actual value of <CODEC> and the\n\t  underlying hardware capabilities.  This plugin is also able\n\t  to implicitly download the decoded surface to raw YUV\n\t  buffers.\n\n\t  vaapi<CODEC>enc is used to encode into MPEG-2, H.264 AVC,\n\t  H.264 MVC, JPEG, VP8, HEVC videos, depending on the actual\n\t  value of <CODEC> (mpeg2, h264, etc.) and the hardware\n\t  capabilities. By default, raw format bitstreams are\n\t  generated, so the result may be piped to a muxer, e.g. qtmux\n\t  for MP4 containers.\n\n\t  vaapipostproc is used to filter VA surfaces, for\n\t  e.g. scaling, deinterlacing (bob, motion-adaptive,\n\t  motion-compensated), noise reduction or sharpening. This\n\t  plugin is also used to upload raw YUV pixels into VA\n\t  surfaces.\n\n\t  vaapisink is used to render VA surfaces to an X11 or Wayland\n\t  display. This plugin also features a \"headless\" mode (DRM)\n\t  more suited to remote transcode scenarios, with faster\n\t  throughput.\n\n\t  https://cgit.freedesktop.org/gstreamer/gstreamer-vaapi\n\nif BR2_PACKAGE_GST1_VAAPI\n\nconfig BR2_PACKAGE_GST1_VAAPI_ENCODERS\n\tbool \"enable encoders\"\n\nendif\n\ncomment \"gst1-vaapi needs udev /dev management and a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_PACKAGE_HAS_UDEV\n"
  },
  {
    "path": "package/gstreamer1/gst1-vaapi/gst1-vaapi.hash",
    "content": "# From https://gstreamer.freedesktop.org/src/gstreamer-vaapi/gstreamer-vaapi-1.18.5.tar.xz.sha256sum\nsha256  4a460fb95559f41444eb24864ad2d9e37922b6eea941510310319fc3e0ba727b  gstreamer-vaapi-1.18.5.tar.xz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\n"
  },
  {
    "path": "package/gstreamer1/gst1-vaapi/gst1-vaapi.mk",
    "content": "################################################################################\n#\n# gst1-vaapi\n#\n################################################################################\n\nGST1_VAAPI_VERSION = 1.18.5\nGST1_VAAPI_SITE = https://gstreamer.freedesktop.org/src/gstreamer-vaapi\nGST1_VAAPI_SOURCE = gstreamer-vaapi-$(GST1_VAAPI_VERSION).tar.xz\nGST1_VAAPI_LICENSE = LGPL-2.1+\nGST1_VAAPI_LICENSE_FILES = COPYING.LIB\n\nGST1_VAAPI_DEPENDENCIES += \\\n\tgstreamer1 \\\n\tgst1-plugins-base \\\n\tgst1-plugins-bad \\\n\tlibva \\\n\tlibdrm\n\nGST1_VAAPI_CONF_OPTS += \\\n\t-Dwith_drm=yes \\\n\t-Dwith_x11=no \\\n\t-Dwith_glx=no \\\n\t-Dwith_wayland=no \\\n\t-Dwith_egl=no \\\n\t-Dexamples=disabled \\\n\t-Dtests=disabled \\\n\t-Ddoc=disabled\n\nifeq ($(BR2_PACKAGE_GST1_VAAPI_ENCODERS),y)\nGST1_VAAPI_CONF_OPTS += -Dwith_encoders=yes\nelse\nGST1_VAAPI_CONF_OPTS += -Dwith_encoders=no\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gstd/0001-Fix-gstd_chmod.sh-DESTDIR-path.patch",
    "content": "From f1c953b9077619a83ab21c24dc343c7e21cd220d Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Tue, 14 Sep 2021 01:46:25 -0600\nSubject: [PATCH] Fix gstd_chmod.sh DESTDIR path.\n\nThis should fix the chmod path when cross compiling.\n\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[Upstream status:\nhttps://github.com/RidgeRun/gstd-1.x/pull/247]\n---\n gstd/gstd_chmod.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/gstd/gstd_chmod.sh b/gstd/gstd_chmod.sh\nindex 8e58bce..fa7fa80 100755\n--- a/gstd/gstd_chmod.sh\n+++ b/gstd/gstd_chmod.sh\n@@ -3,4 +3,4 @@\n # $1 mode\n # $2 file\n \n-chmod $1 $2\n+chmod $1 ${DESTDIR}/$2\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/gstreamer1/gstd/0002-Don-t-require-gstreamer-check-1.0-unless-tests-are-e.patch",
    "content": "From 586bb97459e72da30bd9991c228b6b8e9251c68b Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Tue, 14 Sep 2021 01:49:49 -0600\nSubject: [PATCH] Don't require gstreamer-check-1.0 unless tests are enabled.\n\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[Upstream status:\nhttps://github.com/RidgeRun/gstd-1.x/pull/248]\n---\n meson.build | 4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/meson.build b/meson.build\nindex 1d9ce9d..76990a0 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -22,10 +22,12 @@ gio_unix_dep  = dependency('gio-unix-2.0',       version : '>=2.44.1')\n json_glib_dep = dependency('json-glib-1.0',      version : '>=0.16.2')\n libd_dep      = dependency('libdaemon',          version : '>=0.14')\n jansson_dep   = dependency('jansson',            version : '>=2.7')\n-gst_check_dep = dependency('gstreamer-check-1.0',version : '>=1.0.5')\n thread_dep    = dependency('threads')\n libsoup_dep = dependency('libsoup-2.4',\t\t       version : '>=2.4')\n \n+gst_check_required = get_option('enable-tests').enabled()\n+gst_check_dep = dependency('gstreamer-check-1.0', required : gst_check_required, version : '>=1.0.5')\n+\n systemd_required = get_option('enable-systemd').enabled()\n systemd_dep = dependency('systemd', required : systemd_required, version : '>=232')\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/gstreamer1/gstd/0003-Use-relative-symlink-for-gstd-gst-client-exe.patch",
    "content": "From a670beca8dcc76171dcfe3f10970d76c6f0439be Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Tue, 14 Sep 2021 02:49:10 -0600\nSubject: [PATCH] Use relative symlink for gstd/gst-client exe.\n\nThis should fix the symlink path when cross compiling.\n\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[Upstream status:\nhttps://github.com/RidgeRun/gstd-1.x/pull/249]\n---\n gst_client/gst_client_symbolic_link.sh | 2 +-\n gstd/gstd_symbolic_link.sh             | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/gst_client/gst_client_symbolic_link.sh b/gst_client/gst_client_symbolic_link.sh\nindex d8d7617..b87dd12 100755\n--- a/gst_client/gst_client_symbolic_link.sh\n+++ b/gst_client/gst_client_symbolic_link.sh\n@@ -4,4 +4,4 @@\n # $1: target\n # $2: link name\n rm -f ${DESTDIR}${MESON_INSTALL_PREFIX}/$2\n-ln -s ${DESTDIR}${MESON_INSTALL_PREFIX}/$1 ${DESTDIR}${MESON_INSTALL_PREFIX}/$2\n+ln -s --relative ${DESTDIR}${MESON_INSTALL_PREFIX}/$1 ${DESTDIR}${MESON_INSTALL_PREFIX}/$2\ndiff --git a/gstd/gstd_symbolic_link.sh b/gstd/gstd_symbolic_link.sh\nindex d8d7617..b87dd12 100755\n--- a/gstd/gstd_symbolic_link.sh\n+++ b/gstd/gstd_symbolic_link.sh\n@@ -4,4 +4,4 @@\n # $1: target\n # $2: link name\n rm -f ${DESTDIR}${MESON_INSTALL_PREFIX}/$2\n-ln -s ${DESTDIR}${MESON_INSTALL_PREFIX}/$1 ${DESTDIR}${MESON_INSTALL_PREFIX}/$2\n+ln -s --relative ${DESTDIR}${MESON_INSTALL_PREFIX}/$1 ${DESTDIR}${MESON_INSTALL_PREFIX}/$2\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/gstreamer1/gstd/0004-Don-t-require-gstd-check-user-xenv.sh-for-systemd-se.patch",
    "content": "From 05ae5237b1bc23399898f9c06463cfe2b5bba499 Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Tue, 14 Sep 2021 17:48:03 -0600\nSubject: [PATCH] Don't require gstd-check-user-xenv.sh for systemd service\n\nThe gstd-check-user-xenv.sh script does not appear to be required\nfor running the gstd service so we shouldn't require it for the\nservice to start.\n\nNote that the non-systemd init script already does not require this.\n\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[Upstream status:\nhttps://github.com/RidgeRun/gstd-1.x/pull/251]\n---\n init/gstd.service.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/init/gstd.service.in b/init/gstd.service.in\nindex 3d20ecd..9125983 100644\n--- a/init/gstd.service.in\n+++ b/init/gstd.service.in\n@@ -6,7 +6,7 @@ StartLimitIntervalSec=30\n [Service]\n Restart=on-failure\n RestartSec=5s\n-ExecStartPre=@GSTD_SYSTEMD_DIR@/gstd-check-user-xenv.sh\n+ExecStartPre=-@GSTD_SYSTEMD_DIR@/gstd-check-user-xenv.sh\n ExecStart=@prefix@/bin/gstd\n \n [Install]\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/gstreamer1/gstd/0005-Use-native-meson-python-module-for-python-install.patch",
    "content": "From 1067f6138e947d18fd835e4a39f229ae2293f864 Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Tue, 14 Sep 2021 23:37:03 -0600\nSubject: [PATCH] Use native meson python module for python install.\n\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[upstreeam: https://github.com/RidgeRun/gstd-1.x/pull/253]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n libgstc/meson.build        |  4 +++-\n libgstc/python/meson.build | 26 +++++++++++++++++++++++++-\n meson_options.txt          |  2 ++\n 3 files changed, 30 insertions(+), 2 deletions(-)\n\ndiff --git a/libgstc/meson.build b/libgstc/meson.build\nindex e94dcd1..582cbb8 100644\n--- a/libgstc/meson.build\n+++ b/libgstc/meson.build\n@@ -1,2 +1,4 @@\n subdir('c')\n-subdir('python')\n+if not get_option('enable-python').disabled()\n+  subdir('python')\n+endif\ndiff --git a/libgstc/python/meson.build b/libgstc/python/meson.build\nindex 057114b..24e3242 100644\n--- a/libgstc/python/meson.build\n+++ b/libgstc/python/meson.build\n@@ -1 +1,25 @@\n-run_command('pip3', 'install', '.')\n+pymod = import('python')\n+python = pymod.find_installation(\n+  get_option('with-python-version'),\n+  required : get_option('enable-python').enabled(),\n+  disabler : true\n+)\n+\n+pythonver = python.language_version()\n+if pythonver.version_compare('<3.7')\n+  error('Python @0@ is not supported anymore, please port your code to python3.7 or newer.'.format(python.language_version()))\n+endif\n+\n+pygstc_src_files = [\n+  'pygstc/__init__.py',\n+  'pygstc/gstc.py',\n+  'pygstc/gstcerror.py',\n+  'pygstc/logger.py',\n+  'pygstc/tcp.py'\n+]\n+\n+python.install_sources(\n+  pygstc_src_files,\n+  subdir : 'pygstc',\n+  pure : true\n+)\ndiff --git a/meson_options.txt b/meson_options.txt\nindex f50e540..25292e6 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -4,6 +4,7 @@ option('enable-examples', type : 'feature', value : 'auto', yield : true, descri\n option('enable-gtk-doc', type : 'boolean', value : false, description : 'Use gtk-doc to build documentation')\n option('enable-systemd', type : 'feature', value : 'auto', description : 'Enable systemd gstd.service install')\n option('enable-initd', type : 'feature', value : 'disabled', description : 'Enable init script install')\n+option('enable-python', type : 'feature', value : 'auto', description : 'Install the pygstc library')\n \n # String options\n option('with-gstd-runstatedir', type : 'string', value : '${prefix}/var/run/gstd', description : 'Specify the location of the gstd\\'s PID file')\n@@ -11,6 +12,7 @@ option('with-gstd-logstatedir', type : 'string', value : '${prefix}/var/log/gstd\n option('with-gstd-systemddir', type : 'string', value : 'Systemd default systemduserunitdir', description : 'Specify the location of gstd.service file')\n option('with-gstd-initddir', type : 'string', value : '${sysconfdir}/init.d', description : 'Specify the location of gstd init script')\n option('with-statedir-owner', type : 'string', value : 'root', description : 'Specify the owner of gstd\\'s run and log dirs created by the initd script')\n+option('with-python-version', type : 'string', value : 'python3', description : 'Specify the python version for pygstc installation')\n \n # Common options\n option('package-name', type : 'string', yield : true,\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/gstreamer1/gstd/Config.in",
    "content": "config BR2_PACKAGE_GSTD\n\tbool \"gstd\"\n\tdepends on BR2_USE_WCHAR # libglib2 -> gettext, libsoup\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, libsoup\n\tdepends on BR2_USE_MMU # libdaemon, libglib2\n\tselect BR2_PACKAGE_GSTREAMER1_GST_DEBUG # gst_debug_bin_to_dot_data\n\tselect BR2_PACKAGE_JANSSON\n\tselect BR2_PACKAGE_JSON_GLIB\n\tselect BR2_PACKAGE_LIBDAEMON\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBSOUP\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  GStreamer Daemon, also called gstd, is a GStreamer framework\n\t  for controlling audio and video streaming using an\n\t  InterProcess Communication protocol.\n\n\t  https://developer.ridgerun.com/wiki/index.php?title=GStreamer_Daemon\n"
  },
  {
    "path": "package/gstreamer1/gstd/gstd.hash",
    "content": "# Locally calculated\nsha256  94c10c798d3618b63cc68cbe053fabd19335a57f982a47b3d66c27c37d325da3  gstd-0.13.0.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/gstreamer1/gstd/gstd.mk",
    "content": "################################################################################\n#\n# gstd\n#\n################################################################################\n\nGSTD_VERSION = 0.13.0\nGSTD_SITE = $(call github,RidgeRun,gstd-1.x,v$(GSTD_VERSION))\nGSTD_LICENSE_FILES = COPYING\nGSTD_LICENSE = GPL-2.0+\n\nGSTD_DEPENDENCIES = \\\n\t$(BR2_COREUTILS_HOST_DEPENDENCY) \\\n\tgstreamer1 \\\n\tjansson \\\n\tjson-glib \\\n\tlibdaemon \\\n\tlibglib2 \\\n\tlibsoup \\\n\treadline\n\nGSTD_CONF_OPTS = \\\n\t-Denable-tests=disabled \\\n\t-Denable-examples=disabled \\\n\t-Denable-gtk-doc=false \\\n\t-Denable-python=disabled \\\n\t-Dwith-gstd-runstatedir=/var/run/gstd \\\n\t-Dwith-gstd-logstatedir=/var/log/gstd \\\n\t-Dwith-gstd-systemddir=/usr/lib/systemd/system\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nGSTD_CONF_OPTS += -Denable-systemd=enabled -Denable-initd=disabled\nGSTD_DEPENDENCIES += systemd\nelse\nGSTD_CONF_OPTS += -Denable-systemd=disabled -Denable-initd=enabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gstreamer1/Config.in",
    "content": "comment \"gstreamer 1.x needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_GSTREAMER1\n\tbool \"gstreamer 1.x\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  GStreamer is an open source multimedia framework. This 1.x\n\t  version of Gstreamer is incompatible with Gstreamer 0.10.x.\n\n\t  https://gstreamer.freedesktop.org/\n\nif BR2_PACKAGE_GSTREAMER1\n\nconfig BR2_PACKAGE_GSTREAMER1_CHECK\n\tbool \"enable unit test libraries\"\n\thelp\n\t  Enable building unit test libraries for gstreamer.\n\nconfig BR2_PACKAGE_GSTREAMER1_PARSE\n\tbool \"enable command-line parser\"\n\tdefault y\n\thelp\n\t  Enable command line parser for gstreamer. This may increase\n\t  the CPU overhead by a small amount.\n\nconfig BR2_PACKAGE_GSTREAMER1_TRACE\n\tbool \"enable tracing subsystem\"\n\tdefault y\n\thelp\n\t  Enable the tracing subsystem within gstreamer. This may\n\t  increase CPU overhead by a small amount.\n\nconfig BR2_PACKAGE_GSTREAMER1_GST_DEBUG\n\tbool \"enable gst-debug trace support\"\n\tdefault y\n\thelp\n\t  Enable support for the gst-debug tracing functionality in\n\t  gstreamer.  This has limited CPU overhead, but does increase\n\t  the rootfs size somewhat.\n\nconfig BR2_PACKAGE_GSTREAMER1_PLUGIN_REGISTRY\n\tbool \"enable plugin registry\"\n\tdefault y\n\thelp\n\t  Enable support for the GStreamer plugin registry. This may\n\t  increase the launch-time for a GStreamer application.\n\nconfig BR2_PACKAGE_GSTREAMER1_INSTALL_TOOLS\n\tbool \"install tools\"\n\tdefault y\n\thelp\n\t  Install the gst-inspect, gst-launch, gst-stats and\n\t  gst-typefind tools. This will take up additional space on\n\t  the target.\n\nendif\n"
  },
  {
    "path": "package/gstreamer1/gstreamer1/gstreamer1.hash",
    "content": "# From https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.18.5.tar.xz.sha256sum\nsha256  55862232a63459bbf56abebde3085ca9aec211b478e891dacea4d6df8cafe80a  gstreamer-1.18.5.tar.xz\nsha256  f445dc78b88496f7e20c7a2a461b95baba5865c8919b8289ac24ac0a80c6ce7a  COPYING\n"
  },
  {
    "path": "package/gstreamer1/gstreamer1/gstreamer1.mk",
    "content": "################################################################################\n#\n# gstreamer1\n#\n################################################################################\n\nGSTREAMER1_VERSION = 1.18.5\nGSTREAMER1_SOURCE = gstreamer-$(GSTREAMER1_VERSION).tar.xz\nGSTREAMER1_SITE = https://gstreamer.freedesktop.org/src/gstreamer\nGSTREAMER1_INSTALL_STAGING = YES\nGSTREAMER1_LICENSE_FILES = COPYING\nGSTREAMER1_LICENSE = LGPL-2.0+, LGPL-2.1+\nGSTREAMER1_CPE_ID_VENDOR = gstreamer_project\nGSTREAMER1_CPE_ID_PRODUCT = gstreamer\n\nGSTREAMER1_CONF_OPTS = \\\n\t-Dexamples=disabled \\\n\t-Dtests=disabled \\\n\t-Dbenchmarks=disabled \\\n\t-Dtools=$(if $(BR2_PACKAGE_GSTREAMER1_INSTALL_TOOLS),enabled,disabled) \\\n\t-Dgtk_doc=disabled \\\n\t-Dgobject-cast-checks=disabled \\\n\t-Dglib-asserts=disabled \\\n\t-Dglib-checks=disabled \\\n\t-Dextra-checks=disabled \\\n\t-Dcheck=$(if $(BR2_PACKAGE_GSTREAMER1_CHECK),enabled,disabled) \\\n\t-Dtracer_hooks=$(if $(BR2_PACKAGE_GSTREAMER1_TRACE),true,false) \\\n\t-Doption-parsing=$(if $(BR2_PACKAGE_GSTREAMER1_PARSE),true,false) \\\n\t-Dgst_debug=$(if $(BR2_PACKAGE_GSTREAMER1_GST_DEBUG),true,false) \\\n\t-Dgst_parse=true \\\n\t-Dregistry=$(if $(BR2_PACKAGE_GSTREAMER1_PLUGIN_REGISTRY),true,false) \\\n\t-Ddoc=disabled\n\nGSTREAMER1_DEPENDENCIES = \\\n\thost-bison \\\n\thost-flex \\\n\thost-pkgconf \\\n\tlibglib2 \\\n\t$(if $(BR2_PACKAGE_LIBUNWIND),libunwind) \\\n\t$(if $(BR2_PACKAGE_VALGRIND),valgrind) \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nGSTREAMER1_CONF_OPTS += -Dintrospection=enabled\nGSTREAMER1_DEPENDENCIES += gobject-introspection\nelse\nGSTREAMER1_CONF_OPTS += -Dintrospection=disabled\nendif\n\nGSTREAMER1_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\n# By default, girdir uses datadir as its prefix of which pkg-config will not\n# append the sysroot directory. This results in a build failure with\n# gst1-plugins-base. Changing prefix to ${libdir}/../share prevents this error.\ndefine GSTREAMER1_FIX_GIRDIR\n\t$(SED) \"s%girdir=.*%girdir=\\$${libdir}/../share/gir-1.0%g\" \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/gstreamer-1.0.pc \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/gstreamer-base-1.0.pc\nendef\nGSTREAMER1_POST_INSTALL_STAGING_HOOKS += GSTREAMER1_FIX_GIRDIR\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gstreamer1-editing-services/Config.in",
    "content": "config BR2_PACKAGE_GSTREAMER1_EDITING_SERVICES\n\tbool \"gstreamer1-editing-services\"\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT # runtime\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOMIXER # runtime\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE # runtime\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT # runtime\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC # runtime\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE # runtime\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME # runtime\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE # runtime\n\thelp\n\t  GStreamer Editing Services is a high-level library for\n\t  facilitating the creation of audio/video non-linear editors.\n\n\t  https://gstreamer.freedesktop.org\n"
  },
  {
    "path": "package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.hash",
    "content": "# From https://gstreamer.freedesktop.org/src/gstreamer-editing-services/gst-editing-services-1.18.5.tar.xz.sha256sum\nsha256  8af4a8394d051f3e18280686db49a6efaccc95c0c59a17f0f564e32000590df5  gst-editing-services-1.18.5.tar.xz\n\n# Hashes for license files:\nsha256  f445dc78b88496f7e20c7a2a461b95baba5865c8919b8289ac24ac0a80c6ce7a  COPYING\nsha256  f445dc78b88496f7e20c7a2a461b95baba5865c8919b8289ac24ac0a80c6ce7a  COPYING.LIB\n"
  },
  {
    "path": "package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.mk",
    "content": "################################################################################\n#\n# gstreamer1-editing-services\n#\n################################################################################\n\nGSTREAMER1_EDITING_SERVICES_VERSION = 1.18.5\nGSTREAMER1_EDITING_SERVICES_SOURCE = gst-editing-services-$(GSTREAMER1_EDITING_SERVICES_VERSION).tar.xz\nGSTREAMER1_EDITING_SERVICES_SITE = https://gstreamer.freedesktop.org/src/gstreamer-editing-services\nGSTREAMER1_EDITING_SERVICES_LICENSE = LGPL-2.0+\nGSTREAMER1_EDITING_SERVICES_LICENSE_FILES = COPYING COPYING.LIB\nGSTREAMER1_EDITING_SERVICES_INSTALL_STAGING = YES\nGSTREAMER1_EDITING_SERVICES_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tgstreamer1 \\\n\tgst1-plugins-base \\\n\tgst1-plugins-good \\\n\tlibxml2\n\nGSTREAMER1_EDITING_SERVICES_CONF_OPTS = \\\n\t-Ddoc=disabled \\\n\t-Dexamples=disabled \\\n\t-Dintrospection=disabled \\\n\t-Dtests=disabled \\\n\t-Dtools=enabled \\\n\t-Dbash-completion=disabled \\\n\t-Dxptv=disabled \\\n\t-Dpython=disabled\n\nifeq ($(BR2_PACKAGE_GST1_DEVTOOLS),y)\nGSTREAMER1_EDITING_SERVICES_DEPENDENCIES += gst1-devtools\nGSTREAMER1_EDITING_SERVICES_CONF_OPTS += -Dvalidate=enabled\nelse\nGSTREAMER1_EDITING_SERVICES_CONF_OPTS += -Dvalidate=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gstreamer1/gstreamer1-mm/0001-Fix-build-against-glib-2-68.patch",
    "content": "From 0c0b5f8cef3b1f0a06f56c34340e210e0f23d1b0 Mon Sep 17 00:00:00 2001\nFrom: Dominique Leuenberger <dimstar@opensuse.org>\nDate: Tue, 13 Jul 2021 10:32:30 +0000\nSubject: [PATCH] Fix build against glib 2.68\n\nvolatile has been misused in the past\n\n[Retrieved from:\nhttps://gitlab.gnome.org/GNOME/gstreamermm/-/merge_requests/4]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n gstreamer/gstreamermm/register.h                    | 2 +-\n tests/integration/test-integration-seekonstartup.cc | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/gstreamer/gstreamermm/register.h b/gstreamer/gstreamermm/register.h\nindex db66d172..a7ab3a63 100644\n--- a/gstreamer/gstreamermm/register.h\n+++ b/gstreamer/gstreamermm/register.h\n@@ -110,7 +110,7 @@ register_mm_type(const gchar * type_name)\n     /* The typedef for GType may be gulong or gsize, depending on the\n      * system and whether the compiler is c++ or not. The g_once_init_*\n      * functions always take a gsize * though ... */\n-    static volatile gsize gonce_data = 0;\n+    static gsize gonce_data = 0;\n     if (g_once_init_enter (&gonce_data)) {\n         GTypeInfo info;\n \ndiff --git a/tests/integration/test-integration-seekonstartup.cc b/tests/integration/test-integration-seekonstartup.cc\nindex 247ac499..cd43a125 100644\n--- a/tests/integration/test-integration-seekonstartup.cc\n+++ b/tests/integration/test-integration-seekonstartup.cc\n@@ -18,7 +18,7 @@ RefPtr<Glib::MainLoop> mainloop;\n RefPtr<Bus> bus;\n RefPtr<Pipeline> pipeline;\n RefPtr<Pad> sink_pad;\n-static volatile gint counter;\n+static gint counter;\n bool prerolled = false;\n gboolean was_check = 0;\n \n-- \nGitLab\n\n"
  },
  {
    "path": "package/gstreamer1/gstreamer1-mm/Config.in",
    "content": "config BR2_PACKAGE_GSTREAMER1_MM\n\tbool \"gstreamer1-mm\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # glibmm\n\tdepends on BR2_INSTALL_LIBSTDCPP # glibmm\n\tdepends on BR2_USE_WCHAR # glibmm -> libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # glibmm -> libglib2\n\tselect BR2_PACKAGE_GLIBMM\n\tselect BR2_PACKAGE_GSTREAMER1_CHECK\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\thelp\n\t  gstreamermm provides C++ bindings for the GStreamer streaming\n\t  multimedia library (http://gstreamer.freedesktop.org). With\n\t  gstreamermm it is possible to\tdevelop applications that work\n\t  with multimedia in C++.\n\n\t  gstreamermm is developed over glibmm, libsigc++ and libxml++\n\t  and the functionalities they provide. This means that, among\n\t  other things, referencing and unreferencing of GObjects is\n\t  handled automatically via glibmm's automatic pointer class,\n\t  Glib::RefPtr, and libsigc++'s slots are used for callbacks and\n\t  signals.\n\n\t  https://gstreamer.freedesktop.org/bindings/cplusplus.html\n\ncomment \"gstreamer1-mm needs a toolchain w/ C++, wchar, threads, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gstreamer1/gstreamer1-mm/gstreamer1-mm.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/gstreamermm/1.10/gstreamermm-1.10.0.sha256sum\nsha256 be58fe9ef7d7e392568ec85e80a84f4730adbf91fb0355ff7d7c616675ea8d60 gstreamermm-1.10.0.tar.xz\n\n# Locally computed\nsha256 7c78a8d7fc6781d51402d5a6036bedda9cffb0e5d28757e25d54d6eacbb1949f  COPYING\nsha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING.examples\n"
  },
  {
    "path": "package/gstreamer1/gstreamer1-mm/gstreamer1-mm.mk",
    "content": "################################################################################\n#\n# gstreamer1-mm\n#\n################################################################################\n\nGSTREAMER1_MM_VERSION_MAJOR = 1.10\nGSTREAMER1_MM_VERSION = $(GSTREAMER1_MM_VERSION_MAJOR).0\nGSTREAMER1_MM_SITE = http://ftp.gnome.org/pub/gnome/sources/gstreamermm/$(GSTREAMER1_MM_VERSION_MAJOR)\nGSTREAMER1_MM_SOURCE = gstreamermm-$(GSTREAMER1_MM_VERSION).tar.xz\nGSTREAMER1_MM_LICENSE = LGPL-2.1+ (library), GPL-2.0 (examples)\nGSTREAMER1_MM_LICENSE_FILES = COPYING COPYING.examples\nGSTREAMER1_MM_INSTALL_STAGING = YES\nGSTREAMER1_MM_DEPENDENCIES += \\\n\tglibmm \\\n\tgstreamer1 \\\n\tgst1-plugins-base\n\nGSTREAMER1_MM_CONF_OPTS += \\\n\t--disable-gl \\\n\t--enable-unittests=no \\\n\t--disable-deprecated-api\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gstreamer1/gstreamer1.mk",
    "content": "include $(sort $(wildcard package/gstreamer1/*/*.mk))\n"
  },
  {
    "path": "package/gtest/0001-pkg-config-fix-gtest.pc-gmock.pc-library-names-for-t.patch",
    "content": "From cf5a3177159ca832470e7f876cab0a1923fa666f Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Fri, 22 Oct 2021 20:17:36 +0200\nSubject: [PATCH] pkg-config: fix gtest.pc/gmock.pc library names for the debug\n build\n\nIn case CMAKE_BUILD_TYPE is set to Debug the gtest library is\nname libgtestd.a but the link command returned from gtest.pc is\n'-lgtest' (without the debug d) and so the linking of dependent\npackages fails (see [1] for a buildroot failure example).\n\nEnhance the gtest.pc ang gmock.pc generation to honour the debug 'd'.\n\n[1] http://lists.busybox.net/pipermail/buildroot/2021-October/626382.html\n\n[Upstream: https://github.com/google/googletest/pull/3625]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n googlemock/cmake/gmock.pc.in          | 2 +-\n googletest/cmake/gtest.pc.in          | 2 +-\n googletest/cmake/internal_utils.cmake | 3 +++\n 3 files changed, 5 insertions(+), 2 deletions(-)\n\ndiff --git a/googlemock/cmake/gmock.pc.in b/googlemock/cmake/gmock.pc.in\nindex 23c67b5c..0f469857 100644\n--- a/googlemock/cmake/gmock.pc.in\n+++ b/googlemock/cmake/gmock.pc.in\n@@ -6,5 +6,5 @@ Description: GoogleMock (without main() function)\n Version: @PROJECT_VERSION@\n URL: https://github.com/google/googletest\n Requires: gtest = @PROJECT_VERSION@\n-Libs: -L${libdir} -lgmock @CMAKE_THREAD_LIBS_INIT@\n+Libs: -L${libdir} -lgmock@DEBUG_POSTFIX@ @CMAKE_THREAD_LIBS_INIT@\n Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@\ndiff --git a/googletest/cmake/gtest.pc.in b/googletest/cmake/gtest.pc.in\nindex b4148fae..225bba81 100644\n--- a/googletest/cmake/gtest.pc.in\n+++ b/googletest/cmake/gtest.pc.in\n@@ -5,5 +5,5 @@ Name: gtest\n Description: GoogleTest (without main() function)\n Version: @PROJECT_VERSION@\n URL: https://github.com/google/googletest\n-Libs: -L${libdir} -lgtest @CMAKE_THREAD_LIBS_INIT@\n+Libs: -L${libdir} -lgtest@DEBUG_POSTFIX@ @CMAKE_THREAD_LIBS_INIT@\n Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@\ndiff --git a/googletest/cmake/internal_utils.cmake b/googletest/cmake/internal_utils.cmake\nindex 58fc9bfb..fd81b825 100644\n--- a/googletest/cmake/internal_utils.cmake\n+++ b/googletest/cmake/internal_utils.cmake\n@@ -335,6 +335,9 @@ function(install_project)\n     # Configure and install pkgconfig files.\n     foreach(t ${ARGN})\n       set(configured_pc \"${generated_dir}/${t}.pc\")\n+      if(CMAKE_BUILD_TYPE MATCHES Debug)\n+        set(DEBUG_POSTFIX \"d\")\n+      endif()\n       configure_file(\"${PROJECT_SOURCE_DIR}/cmake/${t}.pc.in\"\n         \"${configured_pc}\" @ONLY)\n       install(FILES \"${configured_pc}\"\n-- \n2.33.1\n\n"
  },
  {
    "path": "package/gtest/Config.in",
    "content": "config BR2_PACKAGE_GTEST\n\tbool \"gtest\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Google's framework for writing C++ tests on a variety of\n\t  platforms (Linux, Mac OS X, Windows, Cygwin, Windows CE, and\n\t  Symbian). Based on the xUnit architecture. Supports\n\t  automatic test discovery, a rich set of assertions,\n\t  user-defined assertions, death tests, fatal and non-fatal\n\t  failures, value- and type-parameterized tests, various\n\t  options for running the tests, and XML test report\n\t  generation.\n\n\t  Gtest also allows to easily build testsuites for C programs.\n\n\t  This package allows running testsuites on the target which\n\t  might be advantageous in certain cases.\n\n\t  https://github.com/google/googletest\n\nif BR2_PACKAGE_GTEST\n\nconfig BR2_PACKAGE_GTEST_GMOCK\n\tbool \"gmock\"\n\thelp\n\t  Inspired by jMock, EasyMock, and Hamcrest, and designed with\n\t  C++'s specifics in mind, Google C++ Mocking Framework (or\n\t  Google Mock for short) is a library for writing and using C++\n\t  mock classes.\n\n\t  Google Mock:\n\n\t    * lets you create mock classes trivially using simple\n\t      macros, supports a rich set of matchers and actions,\n\t    * handles unordered, partially ordered, or completely\n\t      ordered expectations,\n\t    * is extensible by users, and\n\t    * works on Linux, Mac OS X, Windows, Windows Mobile, minGW,\n\t      and Symbian.\n\n\t  There are both host and target packages. The target one has\n\t  include files required to compile the tests and the static\n\t  libraries required to link/run them. The host package installs\n\t  gmock_gen, a Python script used to generate code mocks.\n\nendif # BR2_PACKAGE_GTEST\n\ncomment \"gtest needs a toolchain w/ C++, wchar, threads, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/gtest/gtest.hash",
    "content": "# Locally computed:\nsha256  b4870bf121ff7795ba20d20bcdd8627b8e088f2d1dab299a031c1034eddc93d5  gtest-1.11.0.tar.gz\nsha256  9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138  LICENSE\n"
  },
  {
    "path": "package/gtest/gtest.mk",
    "content": "################################################################################\n#\n# gtest\n#\n################################################################################\n\nGTEST_VERSION = 1.11.0\nGTEST_SITE = $(call github,google,googletest,release-$(GTEST_VERSION))\nGTEST_INSTALL_STAGING = YES\nGTEST_INSTALL_TARGET = NO\nGTEST_LICENSE = BSD-3-Clause\nGTEST_LICENSE_FILES = LICENSE\nGTEST_CPE_ID_VENDOR = google\nGTEST_CPE_ID_PRODUCT = google_test\n\nifeq ($(BR2_PACKAGE_GTEST_GMOCK),y)\nGTEST_DEPENDENCIES += host-gtest\nendif\n\nHOST_GTEST_LICENSE = Apache-2.0\nHOST_GTEST_LICENSE_FILES = googlemock/scripts/generator/LICENSE\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nHOST_GTEST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR)\nHOST_GTEST_DEPENDENCIES += host-python3\nelse\nHOST_GTEST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR)\nHOST_GTEST_DEPENDENCIES += host-python\nendif\n\nHOST_GTEST_GMOCK_PYTHONPATH = \\\n\t$(HOST_DIR)/lib/python$(HOST_GTEST_PYTHON_VERSION)/site-packages\n\n# While it is possible to build gtest as shared library, using this gtest shared\n# library requires to set some special configure option in the project using\n# gtest.\n# So, force to build gtest as a static library.\n#\n# For further details, refer to the explaination given in the README file from\n# the gtest sources.\nGTEST_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF\n\n# Ensure that GTest is compiled with -fPIC to allow linking the static\n# libraries with dynamically linked programs. This is not a requirement\n# for most architectures but is mandatory for ARM.\nifeq ($(BR2_STATIC_LIBS),)\nGTEST_CONF_OPTS += -DCMAKE_POSITION_INDEPENDENT_CODE=ON\nendif\n\nifeq ($(BR2_PACKAGE_GTEST_GMOCK),y)\nGTEST_CONF_OPTS += -DBUILD_GMOCK=ON\nelse\nGTEST_CONF_OPTS += -DBUILD_GMOCK=OFF\nendif\n\ndefine HOST_GTEST_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/googlemock/scripts/generator/gmock_gen.py \\\n\t\t$(HOST_DIR)/bin/gmock_gen\n\tcp -rp $(@D)/googlemock/scripts/generator/cpp \\\n\t\t$(HOST_GTEST_GMOCK_PYTHONPATH)\nendef\n\n$(eval $(cmake-package))\n# The host package does not build anything, just installs gmock_gen stuff, so\n# it does not need to be a host-cmake-package.\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/gtk2-engines/Config.in",
    "content": "config BR2_PACKAGE_GTK2_ENGINES\n\tbool \"gtk engines\"\n\tdepends on BR2_PACKAGE_LIBGTK2\n\thelp\n\t  A collection of basic theme engines for GTK+.\n"
  },
  {
    "path": "package/gtk2-engines/gtk2-engines.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/gtk-engines/2.20/gtk-engines-2.20.2.sha256sum\nsha256  15b680abca6c773ecb85253521fa100dd3b8549befeecc7595b10209d62d66b5  gtk-engines-2.20.2.tar.bz2\n# Locally computed\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING\n"
  },
  {
    "path": "package/gtk2-engines/gtk2-engines.mk",
    "content": "################################################################################\n#\n# gtk2-engines\n#\n################################################################################\n\nGTK2_ENGINES_VERSION_MAJOR = 2.20\nGTK2_ENGINES_VERSION = $(GTK2_ENGINES_VERSION_MAJOR).2\nGTK2_ENGINES_SOURCE = gtk-engines-$(GTK2_ENGINES_VERSION).tar.bz2\nGTK2_ENGINES_SITE = http://ftp.gnome.org/pub/GNOME/sources/gtk-engines/$(GTK2_ENGINES_VERSION_MAJOR)\nGTK2_ENGINES_DEPENDENCIES = libgtk2 host-intltool\nGTK2_ENGINES_LICENSE = LGPL-2.1+\nGTK2_ENGINES_LICENSE_FILES = COPYING\n\nGTK2_ENGINES_CONF_ENV = \\\n\tac_cv_func_posix_getpwuid_r=yes \\\n\tglib_cv_stack_grows=no \\\n\tglib_cv_uscore=no \\\n\tac_cv_func_strtod=yes \\\n\tac_fsusage_space=yes \\\n\tfu_cv_sys_stat_statfs2_bsize=yes \\\n\tac_cv_func_closedir_void=no \\\n\tac_cv_func_getloadavg=no \\\n\tac_cv_lib_util_getloadavg=no \\\n\tac_cv_lib_getloadavg_getloadavg=no \\\n\tac_cv_func_getgroups=yes \\\n\tac_cv_func_getgroups_works=yes \\\n\tac_cv_func_chown_works=yes \\\n\tac_cv_have_decl_euidaccess=no \\\n\tac_cv_func_euidaccess=no \\\n\tac_cv_have_decl_strnlen=yes \\\n\tac_cv_func_strnlen_working=yes \\\n\tac_cv_func_lstat_dereferences_slashed_symlink=yes \\\n\tac_cv_func_lstat_empty_string_bug=no \\\n\tac_cv_func_stat_empty_string_bug=no \\\n\tvb_cv_func_rename_trailing_slash_bug=no \\\n\tac_cv_have_decl_nanosleep=yes \\\n\tjm_cv_func_nanosleep_works=yes \\\n\tgl_cv_func_working_utimes=yes \\\n\tac_cv_func_utime_null=yes \\\n\tac_cv_have_decl_strerror_r=yes \\\n\tac_cv_func_strerror_r_char_p=no \\\n\tjm_cv_func_svid_putenv=yes \\\n\tac_cv_func_getcwd_null=yes \\\n\tac_cv_func_getdelim=yes \\\n\tac_cv_func_mkstemp=yes \\\n\tutils_cv_func_mkstemp_limitations=no \\\n\tutils_cv_func_mkdir_trailing_slash_bug=no \\\n\tjm_cv_func_gettimeofday_clobber=no \\\n\tgl_cv_func_working_readdir=yes \\\n\tjm_ac_cv_func_link_follows_symlink=no \\\n\tutils_cv_localtime_cache=no \\\n\tac_cv_struct_st_mtim_nsec=no \\\n\tgl_cv_func_tzset_clobber=no \\\n\tgl_cv_func_getcwd_null=yes \\\n\tgl_cv_func_getcwd_path_max=yes \\\n\tac_cv_func_fnmatch_gnu=yes \\\n\tam_getline_needs_run_time_check=no \\\n\tam_cv_func_working_getline=yes \\\n\tgl_cv_func_mkdir_trailing_slash_bug=no \\\n\tgl_cv_func_mkstemp_limitations=no \\\n\tac_cv_func_working_mktime=yes \\\n\tjm_cv_func_working_re_compile_pattern=yes \\\n\tac_use_included_regex=no \\\n\tgl_cv_c_restrict=no \\\n\tac_cv_path_CUPS_CONFIG=no\n\nGTK2_ENGINES_CONF_OPTS = \\\n\t--with-x \\\n\t--x-includes=$(STAGING_DIR)/usr/include/X11 \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib \\\n\t--disable-glibtest \\\n\t--enable-explicit-deps=no \\\n\t--enable-clearlooks \\\n\t--disable-crux \\\n\t--disable-hc \\\n\t--disable-industrial \\\n\t--disable-mist \\\n\t--disable-redmond \\\n\t--disable-smooth \\\n\t--disable-glide \\\n\t--disable-thinice \\\n\t--enable-animation \\\n\t--disable-development \\\n\t--disable-paranoia \\\n\t--disable-deprecated\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gtkmm3/Config.in",
    "content": "comment \"gtkmm3 needs libgtk3 and a toolchain w/ C++, wchar, threads, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_LIBGTK3 \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_GTKMM3\n\tbool \"gtkmm3\"\n\t# Broken on existing external/internal nios2 toolchains,\n\t# revisit when they are upgraded with at least Binutils >= 2.26\n\t# and GCC >= 5.3.\n\t# https://sourceware.org/bugzilla/show_bug.cgi?id=19405\n\tdepends on !BR2_nios2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # pangomm, libgtk3 -> pango -> harfbuzz\n\tdepends on BR2_INSTALL_LIBSTDCPP # glibmm, libpangomm -> glibmm/pango\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # *mm/libgtk3 -> libglib2\n\tdepends on BR2_USE_MMU # *mm/libgtk3 -> libglib2\n\tdepends on BR2_USE_WCHAR # *mm/libgtk3 -> libglib2\n\tdepends on BR2_PACKAGE_LIBGTK3\n\tselect BR2_PACKAGE_ATKMM\n\tselect BR2_PACKAGE_CAIROMM\n\tselect BR2_PACKAGE_GLIBMM\n\tselect BR2_PACKAGE_LIBSIGC\n\tselect BR2_PACKAGE_PANGOMM\n\thelp\n\t  The gtkmm3 package is a set of C++ bindings for GTK 3.\n\n\t  http://www.gtkmm.org/\n"
  },
  {
    "path": "package/gtkmm3/gtkmm3.hash",
    "content": "# From http://ftp.gnome.org/pub/GNOME/sources/gtkmm/3.22/gtkmm-3.22.0.sha256sum\nsha256\t05da4d4b628fb20c8384630ddf478a3b5562952b2d6181fe28d58f6cbc0514f5\tgtkmm-3.22.0.tar.xz\n# Locally computed\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING.tools\n"
  },
  {
    "path": "package/gtkmm3/gtkmm3.mk",
    "content": "################################################################################\n#\n# gtkmm3\n#\n################################################################################\n\nGTKMM3_VERSION_MAJOR = 3.22\nGTKMM3_VERSION = $(GTKMM3_VERSION_MAJOR).0\nGTKMM3_SOURCE = gtkmm-$(GTKMM3_VERSION).tar.xz\nGTKMM3_SITE = http://ftp.gnome.org/pub/gnome/sources/gtkmm/$(GTKMM3_VERSION_MAJOR)\nGTKMM3_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools)\nGTKMM3_LICENSE_FILES = COPYING COPYING.tools\nGTKMM3_INSTALL_STAGING = YES\nGTKMM3_DEPENDENCIES = atkmm cairomm glibmm libgtk3 libsigc pangomm host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gtkperf/Config.in",
    "content": "config BR2_PACKAGE_GTKPERF\n\tbool \"gtkperf (performance test for GTK2)\"\n\tdepends on BR2_PACKAGE_LIBGTK2\n\thelp\n\t  GtkPerf is an application designed to test GTK+ performance.\n\t  The point is to create common testing platform to run\n\t  predefined GTK+ widgets\n\t  e.g. (opening comboboxes, toggling buttons, scrolling text\n\t  yms.) and this way define the speed of device/platform.\n\n\t  http://gtkperf.sourceforge.net/\n"
  },
  {
    "path": "package/gtkperf/gtkperf.hash",
    "content": "# Locally computed:\nsha256  9704344e732038eecbd007dd996a56293a6b027b5b76f3f036273a3fae1ab27b  gtkperf_0.40.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/gtkperf/gtkperf.mk",
    "content": "################################################################################\n#\n# gtkperf\n#\n################################################################################\n\nGTKPERF_VERSION = 0.40\nGTKPERF_SOURCE = gtkperf_$(GTKPERF_VERSION).tar.gz\nGTKPERF_SITE = http://downloads.sourceforge.net/project/gtkperf/gtkperf/$(GTKPERF_VERSION)\nGTKPERF_DEPENDENCIES = libgtk2 $(TARGET_NLS_DEPENDENCIES)\nGTKPERF_LICENSE = GPL-2.0\nGTKPERF_LICENSE_FILES = COPYING\nGTKPERF_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gtksourceview/Config.in",
    "content": "config BR2_PACKAGE_GTKSOURCEVIEW\n\tbool \"gtksourceview\"\n\tdepends on BR2_PACKAGE_LIBGTK3\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  GtkSourceView is a portable C library that extends the\n\t  standard GTK+ framework for multiline text editing with\n\t  support for configurable syntax highlighting, unlimited\n\t  undo/redo, search and replace, a completion framework,\n\t  printing and other features typical of a source code editor.\n\n\t  https://projects.gnome.org/gtksourceview\n"
  },
  {
    "path": "package/gtksourceview/gtksourceview.hash",
    "content": "# Hash from: http://ftp.gnome.org/pub/gnome/sources/gtksourceview/3.24/gtksourceview-3.24.7.sha256sum:\nsha256\ta5c20d3a6347533689358f3ea52486409f6dd41d5a69c65eab7570cfaffee8e6\tgtksourceview-3.24.7.tar.xz\n\n# Locally computed:\nsha256\t5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a\tCOPYING\n"
  },
  {
    "path": "package/gtksourceview/gtksourceview.mk",
    "content": "################################################################################\n#\n# gtksourceview\n#\n################################################################################\n\nGTKSOURCEVIEW_VERSION_MAJOR = 3.24\nGTKSOURCEVIEW_VERSION = $(GTKSOURCEVIEW_VERSION_MAJOR).7\nGTKSOURCEVIEW_SOURCE = gtksourceview-$(GTKSOURCEVIEW_VERSION).tar.xz\nGTKSOURCEVIEW_SITE = \\\n\thttp://ftp.gnome.org/pub/gnome/sources/gtksourceview/$(GTKSOURCEVIEW_VERSION_MAJOR)\nGTKSOURCEVIEW_LICENSE = LGPL-2.1+\nGTKSOURCEVIEW_LICENSE_FILES = COPYING\nGTKSOURCEVIEW_INSTALL_STAGING = YES\nGTKSOURCEVIEW_DEPENDENCIES = host-pkgconf libglib2 libxml2 libgtk3\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/guile/0001-fix_arm_endianness.patch",
    "content": "Fix support for ARM endianness, otherwise it gives the error\n\"unknown CPU endianness\"\n\nSigned-off-by: Pedro Aguilar <paguilar@paguilar.org>\n\ndiff -Nau guile-2.0.11.orig/module/system/base/target.scm guile-2.0.11/module/system/base/target.scm\n--- guile-2.0.11.orig/module/system/base/target.scm\t2013-02-28 09:42:45.000000000 +0100\n+++ guile-2.0.11/module/system/base/target.scm\t2014-11-03 23:05:01.789338997 +0100\n@@ -70,7 +70,15 @@\n             ((member cpu '(\"sparc\" \"sparc64\" \"powerpc\" \"powerpc64\" \"spu\"\n                            \"mips\" \"mips64\"))\n              (endianness big))\n-            ((string-match \"^arm.*el\" cpu)\n+            ((string-match \"^arm.*el\" cpu)\n+             (endianness little))\n+            ((string-match \"^arm.*eb\" cpu)\n+             (endianness big))\n+            ((string-prefix? \"arm\" cpu)          ;ARMs are LE by default\n+             (endianness little))\n+            ((string-match \"^aarch64.*be\" cpu)\n+             (endianness big))\n+            ((string=? \"aarch64\" cpu)\n              (endianness little))\n             (else\n              (error \"unknown CPU endianness\" cpu)))))\n"
  },
  {
    "path": "package/guile/0002-calculate-csqrt_manually.patch",
    "content": "Avoid using scm_from_complex_double(csqrt()) when building with uclibc.\n\nSigned-off-by: Pedro Aguilar <paguilar@paguilar.org>\n\ndiff -Nau guile-2.0.11.orig/configure.ac guile-2.0.11/configure.ac\n--- guile-2.0.11.orig/configure.ac\t2014-03-12 14:36:02.000000000 +0100\n+++ guile-2.0.11/configure.ac\t2014-11-03 23:59:51.897267207 +0100\n@@ -862,7 +862,7 @@\n }]])],\n     [guile_cv_use_csqrt=yes],\n     [guile_cv_use_csqrt=\"no, glibc 2.3 bug\"],\n-    [guile_cv_use_csqrt=\"yes, hopefully (cross-compiling)\"])])\n+    [guile_cv_use_csqrt=\"no (cross-compiling)\"])])\n   case $guile_cv_use_csqrt in\n     yes*)\n       AC_DEFINE([HAVE_USABLE_CSQRT], 1, [Define to 1 if csqrt is bug-free])\n"
  },
  {
    "path": "package/guile/0003-Makefile.am-fix-build-without-makeinfo.patch",
    "content": "From 9304ad88a5f4b083d348563c5de00da53b34cf46 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 6 Mar 2020 23:20:39 +0100\nSubject: [PATCH] Makefile.am: fix build without makeinfo\n\nDon't build doc subdir if makeinfo is not available otherwise build\nfails on:\n\nmake[4]: Entering directory '/nvmedata/autobuild/instance-7/output-1/build/host-guile-2.0.14/doc/ref'\n  MAKEINFO guile.info\n/nvmedata/autobuild/instance-7/output-1/build/host-guile-2.0.14/build-aux/missing: line 81: makeinfo: command not found\nWARNING: 'makeinfo' is missing on your system.\n         You should only need it if you modified a '.texi' file, or\n         any other file indirectly affecting the aspect of the manual.\n         You might want to install the Texinfo package:\n         <http://www.gnu.org/software/texinfo/>\n         The spurious makeinfo call might also be the consequence of\n         using a buggy 'make' (AIX, DU, IRIX), in which case you might\n         want to install GNU make:\n         <http://www.gnu.org/software/make/>\n\nFixes:\n - http://autobuild.buildroot.org/results/9605aac6f760bfff190d0ab95fa50f65486ffe90\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to bug-guile@gnu.org]\n---\n Makefile.am | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex ebbf6d476..2270afb9f 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -38,8 +38,12 @@ SUBDIRS =\t\t\t\t\t\\\n \ttest-suite\t\t\t\t\\\n \tbenchmark-suite\t\t\t\t\\\n \tgc-benchmarks\t\t\t\t\\\n-\tam\t\t\t\t\t\\\n+\tam\n+\n+if HAVE_MAKEINFO\n+SUBDIRS +=\t\t\t\t\t\\\n \tdoc\n+endif\n \n DIST_SUBDIRS = $(SUBDIRS) prebuilt\n \n-- \n2.25.0\n\n"
  },
  {
    "path": "package/guile/0004-module-system-base-target.scm-support-riscv32.patch",
    "content": "From 6142350d7c0562b0525462abdd41309ae0faa2eb Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 6 Aug 2021 19:49:37 +0200\nSubject: [PATCH] module/system/base/target.scm: support riscv32\n\nFix the following build failure on riscv32:\n\nsystem/base/target.scm:132:16: In procedure triplet-pointer-size:\nunknown CPU word size \"riscv32\"\n\nFixes:\n - http://autobuild.buildroot.org/results/6705630c1484239ec8b73d57ebc2e2570fbfc8f8\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n module/system/base/target.scm | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/module/system/base/target.scm b/module/system/base/target.scm\nindex 2088cd866..dba46664d 100644\n--- a/module/system/base/target.scm\n+++ b/module/system/base/target.scm\n@@ -116,6 +116,7 @@\n \n           ((string-match \"^x86_64-.*-gnux32\" triplet) 4)  ; x32\n \n+          ((string-match \"32$\" cpu) 4)\n           ((string-match \"64$\" cpu) 8)\n           ((string-match \"64_?[lbe][lbe]$\" cpu) 8)\n           ((member cpu '(\"sparc\" \"powerpc\" \"mips\" \"mipsel\" \"nios2\" \"m68k\" \"sh3\" \"sh4\")) 4)\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/guile/Config.in",
    "content": "config BR2_PACKAGE_GUILE\n\tbool \"guile\"\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # no strtol_l\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS # bdwgc\n\tdepends on BR2_USE_WCHAR # libunistring\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBUNISTRING\n\tselect BR2_PACKAGE_LIBFFI\n\tselect BR2_PACKAGE_GMP\n\tselect BR2_PACKAGE_BDWGC\n\tselect BR2_PACKAGE_LIBTOOL\n\thelp\n\t  Guile is an interpreter and compiler for the Scheme\n\t  programming language, a clean and elegant dialect of Lisp.\n\n\t  http://www.gnu.org/software/guile\n\ncomment \"guile needs a uClibc or glibc toolchain w/ threads, wchar, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \\\n\t\tBR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL\n"
  },
  {
    "path": "package/guile/guile.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  6b7947dc2e3d115983846a268b8f5753c12fd5547e42fbf2b97d75a3b79f0d31  guile-3.0.4.tar.xz\n# Locally computed\nsha256  b51c6f20e6d029cb5b3e5bf235ac562c9a188c5bdc4ffcdc663897772d6e0260  LICENSE\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\nsha256  9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1  COPYING.LESSER\n"
  },
  {
    "path": "package/guile/guile.mk",
    "content": "################################################################################\n#\n# guile\n#\n################################################################################\n\nGUILE_VERSION = 3.0.4\nGUILE_SOURCE = guile-$(GUILE_VERSION).tar.xz\nGUILE_SITE = $(BR2_GNU_MIRROR)/guile\nGUILE_INSTALL_STAGING = YES\n# For 0002-calculate-csqrt_manually.patch and\n# 0003-Makefile.am-fix-build-without-makeinfo.patch\nGUILE_AUTORECONF = YES\nGUILE_LICENSE = LGPL-3.0+\nGUILE_LICENSE_FILES = LICENSE COPYING COPYING.LESSER\nGUILE_CPE_ID_VENDOR = gnu\n\n# libtool dependency is needed because guile uses libltdl\nGUILE_DEPENDENCIES = host-guile libunistring libffi gmp bdwgc host-pkgconf libtool\nHOST_GUILE_DEPENDENCIES = host-libunistring host-libffi host-gmp host-bdwgc host-flex host-pkgconf host-gettext\n\n# The HAVE_GC* CFLAGS specify that we will use internal callbacks\n# instead of the ones provided by\n# bdwgc. Eg. HAVE_GC_SET_FINALIZER_NOTIFIER specifies that we won't\n# use bdwgc's GC_finalizer_notifier callback.  Trying to use these\n# specific bdwgc's callbacks breaks guile's building.\nGUILE_CFLAGS = \\\n\t-DHAVE_GC_SET_FINALIZER_NOTIFIER \\\n\t-DHAVE_GC_GET_HEAP_USAGE_SAFE \\\n\t-DHAVE_GC_GET_FREE_SPACE_DIVISOR \\\n\t-DHAVE_GC_SET_FINALIZE_ON_DEMAND\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nGUILE_CONF_ENV += LIBS=-latomic\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nGUILE_CFLAGS += -DGC_NO_DLOPEN\nendif\n\n# Triggers assembler error with -Os\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM)$(BR2_OPTIMIZE_S),yy)\nGUILE_CFLAGS += -O2\nendif\n\n# jit triggers build failures with gcc < 5\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_5),)\nGUILE_CONF_OPTS += --disable-jit\nendif\nifeq ($(BR2_HOST_GCC_AT_LEAST_5),)\nHOST_GUILE_CONF_OPTS += --disable-jit\nendif\n\n# It can use readline, but on the condition that it was build against\n# ncurses. If both aren't present disable readline support since the\n# host readline/ncurses support can poison the build.\nifeq ($(BR2_PACKAGE_NCURSES)$(BR2_PACKAGE_READLINE),yy)\nGUILE_CONF_OPTS += --with-libreadline-prefix=$(STAGING_DIR)/usr\nGUILE_DEPENDENCIES += readline\nelse\nGUILE_CONF_OPTS += --without-libreadline-prefix\nendif\n\nGUILE_CONF_ENV += GUILE_FOR_BUILD=$(HOST_DIR)/bin/guile \\\n\tCFLAGS=\"$(TARGET_CFLAGS) $(GUILE_CFLAGS)\"\n\nGUILE_CONF_OPTS += \\\n\t--with-libltdl-prefix=$(STAGING_DIR)/usr/lib \\\n\t--with-libgmp-prefix=$(STAGING_DIR)/usr/lib \\\n\t--with-libunistring-prefix=$(STAGING_DIR)/usr/lib\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/gumbo-parser/0001-configure.ac-fix-build-without-C.patch",
    "content": "From 968975107af5f4382e3e9410a635e32c14cea75f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 21 Jul 2021 23:47:26 +0200\nSubject: [PATCH] configure.ac: fix build without C++\n\nFix the following build failure raised on toolchains without C++:\n\nchecking whether the C++ compiler works... no\nconfigure: error: in `/home/buildroot/autobuild/run/instance-0/output-1/build/gumbo-parser-0.10.1':\nconfigure: error: C++ compiler cannot create executables\n\nFixes:\n - http://autobuild.buildroot.org/results/a32b5d3b959433fd5c3543661c37f80d27fbd010\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/google/gumbo-parser/pull/426]\n---\n Makefile.am  | 2 ++\n configure.ac | 6 +++++-\n 2 files changed, 7 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex cb62459..5bebd92 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -105,7 +105,9 @@ gumbo_test_DEPENDENCIES += check-local\n gumbo_test_LDADD += gtest/lib/libgtest.la gtest/lib/libgtest_main.la\n endif\n \n+if HAVE_EXAMPLES\n noinst_PROGRAMS = clean_text find_links get_title positions_of_class benchmark serialize prettyprint\n+endif\n LDADD = libgumbo.la\n AM_CPPFLAGS = -I\"$(srcdir)/src\"\n \ndiff --git a/configure.ac b/configure.ac\nindex 32dc9b9..172a36b 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -9,8 +9,8 @@ AC_CONFIG_SRCDIR([src/parser.c])\n AC_CONFIG_FILES([Makefile gumbo.pc])\n \n # Checks for programs.\n-AC_PROG_CXX\n AC_PROG_CC_C99\n+AC_PROG_CXX\n \n # Checks for libraries.\n \n@@ -27,6 +27,10 @@ AC_CHECK_LIB([gtest_main],\n              AM_CONDITIONAL(HAVE_SHARED_LIBGTEST, [true]),\n              AM_CONDITIONAL(HAVE_SHARED_LIBGTEST, [false]))\n \n+AC_ARG_ENABLE([examples],\n+              AS_HELP_STRING([--disable-examples], [Disable examples]))\n+AM_CONDITIONAL([HAVE_EXAMPLES], [test \"x$enable_examples\" != \"xno\"])\n+\n # Init Automake & libtool\n AM_INIT_AUTOMAKE([foreign subdir-objects])\n m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/gumbo-parser/Config.in",
    "content": "config BR2_PACKAGE_GUMBO_PARSER\n\tbool \"gumbo-parser\"\n\thelp\n\t  Gumbo is an implementation of the HTML5 parsing algorithm\n\t  implemented as a pure C99 library with no outside\n\t  dependencies. It's designed to serve as a building block for\n\t  other tools and libraries such as linters, validators,\n\t  templating languages, and refactoring and analysis tools.\n\n\t  https://github.com/google/gumbo-parser\n"
  },
  {
    "path": "package/gumbo-parser/gumbo-parser.hash",
    "content": "# Locally computed:\nsha256  28463053d44a5dfbc4b77bcf49c8cee119338ffa636cc17fc3378421d714efad  gumbo-parser-0.10.1.tar.gz\n\n# Hash for license files:\nsha256  c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4  COPYING\n"
  },
  {
    "path": "package/gumbo-parser/gumbo-parser.mk",
    "content": "################################################################################\n#\n# gumbo-parser\n#\n################################################################################\n\nGUMBO_PARSER_VERSION = 0.10.1\nGUMBO_PARSER_SITE = $(call github,google,gumbo-parser,v$(GUMBO_PARSER_VERSION))\nGUMBO_PARSER_LICENSE = Apache-2.0\nGUMBO_PARSER_LICENSE_FILES = COPYING\nGUMBO_PARSER_INSTALL_STAGING = YES\nGUMBO_PARSER_AUTORECONF = YES\nGUMBO_PARSER_CONF_OPTS = --disable-examples\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gupnp/Config.in",
    "content": "config BR2_PACKAGE_GUPNP\n\tbool \"gupnp\"\n\tdepends on BR2_USE_WCHAR # glib2, gssdp\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2, gssdp\n\tdepends on BR2_USE_MMU # glib2, gssdp\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_GSSDP\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  GUPnP implements the UPnP specification: resource announcement\n\t  and discovery, description, control, event notification, and\n\t  presentation.\n\n\t  http://www.gupnp.org/\n\ncomment \"gupnp needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gupnp/gupnp.hash",
    "content": "# Hash from: http://ftp.gnome.org/pub/gnome/sources/gupnp/1.3/gupnp-1.3.1.sha256sum:\nsha256  df70fe8321bfc53cadb6860edcff2e0dc456ec81899b463f41723684803d1408  gupnp-1.3.1.tar.xz\n\n# Hash for license file:\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/gupnp/gupnp.mk",
    "content": "################################################################################\n#\n# gupnp\n#\n################################################################################\n\nGUPNP_VERSION_MAJOR = 1.3\nGUPNP_VERSION = $(GUPNP_VERSION_MAJOR).1\nGUPNP_SOURCE = gupnp-$(GUPNP_VERSION).tar.xz\nGUPNP_SITE = http://ftp.gnome.org/pub/gnome/sources/gupnp/$(GUPNP_VERSION_MAJOR)\nGUPNP_LICENSE = LGPL-2.1+\nGUPNP_LICENSE_FILES = COPYING\nGUPNP_CPE_ID_VENDOR = gnome\nGUPNP_INSTALL_STAGING = YES\nGUPNP_DEPENDENCIES = host-pkgconf libglib2 libxml2 gssdp util-linux\nGUPNP_CONF_OPTS = -Dexamples=false\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nGUPNP_CONF_OPTS += -Dintrospection=true -Dvapi=true\nGUPNP_DEPENDENCIES += host-vala gobject-introspection\nelse\nGUPNP_CONF_OPTS += -Dintrospection=false -Dvapi=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gupnp-av/Config.in",
    "content": "config BR2_PACKAGE_GUPNP_AV\n\tbool \"gupnp-av\"\n\tdepends on BR2_USE_WCHAR # glib2, gupnp\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2, gupnp\n\tdepends on BR2_USE_MMU # glib2, gupnp\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_GUPNP\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  GUPnP-AV is a collection of helpers for building AV\n\t  (audio/video) applications using GUPnP.\n\n\t  http://www.gupnp.org/\n\ncomment \"gupnp-av needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gupnp-av/gupnp-av.hash",
    "content": "# Hash from: http://ftp.gnome.org/pub/gnome/sources/gupnp-av/0.13/gupnp-av-0.13.0.sha256sum:\nsha256  578b8f562b0f7e908416a41efbe2b7e6b892cd2ed7eac61ac63c48fdc8d7e6c8  gupnp-av-0.13.0.tar.xz\n\n# Hash for license file:\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/gupnp-av/gupnp-av.mk",
    "content": "################################################################################\n#\n# gupnp-av\n#\n################################################################################\n\nGUPNP_AV_VERSION_MAJOR = 0.13\nGUPNP_AV_VERSION = $(GUPNP_AV_VERSION_MAJOR).0\nGUPNP_AV_SOURCE = gupnp-av-$(GUPNP_AV_VERSION).tar.xz\nGUPNP_AV_SITE = http://ftp.gnome.org/pub/gnome/sources/gupnp-av/$(GUPNP_AV_VERSION_MAJOR)\nGUPNP_AV_LICENSE = LGPL-2.1+\nGUPNP_AV_LICENSE_FILES = COPYING\nGUPNP_AV_INSTALL_STAGING = YES\nGUPNP_AV_DEPENDENCIES = host-pkgconf libglib2 libxml2 gupnp\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nGUPNP_AV_CONF_OPTS += -Dintrospection=true -Dvapi=true\nGUPNP_AV_DEPENDENCIES += host-vala gobject-introspection\nelse\nGUPNP_AV_CONF_OPTS += -Dintrospection=false -Dvapi=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gupnp-dlna/Config.in",
    "content": "config BR2_PACKAGE_GUPNP_DLNA\n\tbool \"gupnp-dlna\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  GUPnP DLNA is a small utility library that aims to ease the\n\t  DLNA-related tasks such as media profile guessing, transcoding\n\t  to a given profile, etc.\n\n\t  http://www.gupnp.org/\n\ncomment \"gupnp-dlna needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/gupnp-dlna/gupnp-dlna.hash",
    "content": "# Hash from: http://ftp.gnome.org/pub/gnome/sources/gupnp-dlna/0.10/gupnp-dlna-0.10.5.sha256sum:\nsha256\t123e368227c11d5c17fc1aa76cbdaffa345355eb51d172cd39fc74a5b468ff6a\tgupnp-dlna-0.10.5.tar.xz\n\n# Locally computed:\nsha256\tdc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\tCOPYING\n"
  },
  {
    "path": "package/gupnp-dlna/gupnp-dlna.mk",
    "content": "################################################################################\n#\n# gupnp-dlna\n#\n################################################################################\n\nGUPNP_DLNA_VERSION_MAJOR = 0.10\nGUPNP_DLNA_VERSION = $(GUPNP_DLNA_VERSION_MAJOR).5\nGUPNP_DLNA_SOURCE = gupnp-dlna-$(GUPNP_DLNA_VERSION).tar.xz\nGUPNP_DLNA_SITE = \\\n\thttp://ftp.gnome.org/pub/gnome/sources/gupnp-dlna/$(GUPNP_DLNA_VERSION_MAJOR)\n# COPYING contains LGPL-2.1 but all source files contain LPGL-2.0+\nGUPNP_DLNA_LICENSE = LGPL-2.0+\nGUPNP_DLNA_LICENSE_FILES = COPYING\nGUPNP_DLNA_INSTALL_STAGING = YES\nGUPNP_DLNA_DEPENDENCIES = host-pkgconf libglib2 libxml2\n\nGUPNP_DLNA_CONF_OPTS = \\\n\t--disable-introspection \\\n\t--disable-legacy-gstreamer-metadata-backend\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y)\nGUPNP_DLNA_CONF_OPTS += --enable-gstreamer-metadata-backend\nGUPNP_DLNA_DEPENDENCIES += gstreamer1 gst1-plugins-base\nelse\nGUPNP_DLNA_CONF_OPTS += --disable-gstreamer-metadata-backend\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/gupnp-tools/0001-src-meson.build-upload-needs-gupnp-av.patch",
    "content": "From 0831f77e990e363f78e3f6a5c461084988824f7b Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 2 Jul 2019 23:48:12 +0200\nSubject: [PATCH] src/meson.build: upload needs gupnp-av\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.gnome.org/GNOME/gupnp-tools/merge_requests/3]\n---\n src/meson.build | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/meson.build b/src/meson.build\nindex 84b2ca2..6601f45 100644\n--- a/src/meson.build\n+++ b/src/meson.build\n@@ -2,9 +2,9 @@ subdir('common')\n \n if get_option('av-tools') and gupnp_av.found()\n     subdir('av-cp')\n+    subdir('upload')\n endif\n \n subdir('discover')\n subdir('network-light')\n subdir('universal-cp')\n-subdir('upload')\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/gupnp-tools/Config.in",
    "content": "config BR2_PACKAGE_GUPNP_TOOLS\n\tbool \"gupnp-tools\"\n\tdepends on BR2_PACKAGE_LIBGTK3\n\t# gssdp, gupnp, libsoup all select on libglib2, so they have\n\t# the same dependencies as libgtk3, which we depend on. So for\n\t# the same of simplicity, we don't replicate all those\n\t# (complex) dependencies.\n\tselect BR2_PACKAGE_GSSDP\n\tselect BR2_PACKAGE_GUPNP\n\tselect BR2_PACKAGE_LIBSOUP\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  GUPnP Tools are free replacements of Intel UPnP tools that\n\t  use GUPnP. They provides client and server side tools which\n\t  enable one to easily test and debug one's UPnP devices and\n\t  control points.\n\n\t  http://www.gupnp.org/\n\ncomment \"gupnp-tools needs libgtk3\"\n\tdepends on !BR2_PACKAGE_LIBGTK3\n"
  },
  {
    "path": "package/gupnp-tools/gupnp-tools.hash",
    "content": "# Hash from: http://ftp.gnome.org/pub/gnome/sources/gupnp-tools/0.10/gupnp-tools-0.10.0.sha256sum:\nsha256  41da7ff5ba8e2425adcb64ca5e04c81f57ca20ec6fdb84923939fdad42c6a18d  gupnp-tools-0.10.0.tar.xz\n\n# Locally computed:\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/gupnp-tools/gupnp-tools.mk",
    "content": "################################################################################\n#\n# gupnp-tools\n#\n################################################################################\n\nGUPNP_TOOLS_VERSION_MAJOR = 0.10\nGUPNP_TOOLS_VERSION = $(GUPNP_TOOLS_VERSION_MAJOR).0\nGUPNP_TOOLS_SOURCE = gupnp-tools-$(GUPNP_TOOLS_VERSION).tar.xz\nGUPNP_TOOLS_SITE = \\\n\thttp://ftp.gnome.org/pub/gnome/sources/gupnp-tools/$(GUPNP_TOOLS_VERSION_MAJOR)\nGUPNP_TOOLS_LICENSE = GPL-2.0+\nGUPNP_TOOLS_LICENSE_FILES = COPYING\nGUPNP_TOOLS_INSTALL_STAGING = YES\nGUPNP_TOOLS_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tlibglib2 \\\n\tlibxml2 \\\n\tgssdp \\\n\tgupnp \\\n\tlibsoup \\\n\tlibgtk3 \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nGUPNP_TOOLS_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_GUPNP_AV),y)\nGUPNP_TOOLS_CONF_OPTS += -Dav-tools=true\nGUPNP_TOOLS_DEPENDENCIES += gupnp-av\nelse\nGUPNP_TOOLS_CONF_OPTS += -Dav-tools=false\nendif\n\nifeq ($(BR2_PACKAGE_GTKSOURCEVIEW),y)\nGUPNP_TOOLS_DEPENDENCIES += gtksourceview\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gutenprint/0001-use-pregen-xmli18n-header.patch",
    "content": "src/xml: use preg-gen xmli18n_tmp.h if specified\n\nIdeally, the programs needed at build-time should be built with\nCC_FOR_BUILD, and not with CC_FOR_HOST.\n\nUnfortunately, this program wants to link against the gutenprint libs,\nso we would also need to build them with CC_FOR_HOST, that is build them\ntwice, once for build, once for host.\n\nInstead, in the Buildroot context, we first build gutenprint for the build\nsystem, use that to generate the incriminated header, and then re-use that\nheader to build the gutenprint for the host.\n\nIt is not possible to have such constructs in Makefile.am:\n    ifeq ($(FOO),)\n    bar: bla\n        cat $< >$@\n    else\n    bar:\n        echo $(FOO) >$@\n    endif\n\nas autoreconf will yell loudly that there is an 'endif' without an 'if'.\nSigh... :-(\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN gutenprint-5.2.9.orig/src/xml/Makefile.am gutenprint-5.2.9/src/xml/Makefile.am\n--- gutenprint-5.2.9.orig/src/xml/Makefile.am\t2011-03-30 02:43:24.000000000 +0200\n+++ gutenprint-5.2.9/src/xml/Makefile.am\t2013-03-24 17:08:08.435918773 +0100\n@@ -52,10 +52,13 @@\n \n \n xmli18n-tmp.h: xml-stamp extract-strings\n-\t-rm -f $@ $@.tmp\n-\t./extract-strings `cat xml-stamp | sed -e 's;^;$(srcdir)/;'` > $@.tmp\n-\tmv $@.tmp $@\n-\n+\tif [ -z \"$(BR2_USE_PREGEN_XMLI18N_TMP_H)\" ]; then \\\n+\t    rm -f $@ $@.tmp; \\\n+\t    ./extract-strings `cat xml-stamp | sed -e 's;^;$(srcdir)/;'` > $@.tmp; \\\n+\t    mv $@.tmp $@; \\\n+\telse \\\n+\t    cp $(BR2_USE_PREGEN_XMLI18N_TMP_H) $@; \\\n+\tfi\n \n dist-hook: xmli18n-tmp.h xml-stamp\n # xmli18n-tmp.h is needed by po/POTFILES.in at dist time\n"
  },
  {
    "path": "package/gutenprint/0002-cups-support-replaces-static-with-static-libtool-lib.patch",
    "content": "From 08a5d355160eb2ac8346ae1b94591418343217f9 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Sun, 17 Aug 2014 23:43:20 +0200\nSubject: [PATCH 1/1] cups support: replaces -static with -static-libtool-libs\n\ngutenprint rely on the original behaviour of -static, but since commit\nin buildroot \"support/libtool: make -static behave like -all-static\" [1],\nthe build of genppd is broken.\n\ngenppd need to be build statically otherwise the following warning appears:\n***WARNING: Use of --disable-static-genppd or --disable-static\n            when building CUPS is very dangerous.  The build may\n            fail when building the PPD files, or may *SILENTLY*\n            build incorrect PPD files or cause other problems.\n            Please review the README and release notes carefully!\n\n[1] http://git.buildroot.net/buildroot/commit/?id=97703978ac870ce2b14ad144f8e082de82aa2c64\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n src/cups/Makefile.am | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/cups/Makefile.am b/src/cups/Makefile.am\nindex 1e27ae0..d711b70 100644\n--- a/src/cups/Makefile.am\n+++ b/src/cups/Makefile.am\n@@ -84,7 +84,7 @@ noinst_SCRIPTS=test-rastertogutenprint\n endif\n \n if BUILD_GENPPD_STATIC\n-STATIC_LDOPTS=-static -export-dynamic\n+STATIC_LDOPTS=-static-libtool-libs -export-dynamic\n endif\n \n cups_calibrate_SOURCES = cups-calibrate.c\n-- \n1.9.3\n\n"
  },
  {
    "path": "package/gutenprint/Config.in",
    "content": "config BR2_PACKAGE_GUTENPRINT\n\tbool \"gutenprint\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_CUPS\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Gutenprint, formerly named Gimp-Print, is a suite of printer\n\t  drivers that may be used with most common UNIX print spooling\n\t  systems, including CUPS, lpr, LPRng, or others\n\n\t  http://gimp-print.sourceforge.net/\n\ncomment \"gutenprint needs a toolchain w/ C++\"\n\tdepends on BR2_PACKAGE_CUPS\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/gutenprint/gutenprint.hash",
    "content": "# Locally computed:\nsha256  45bf0766f196a764c113bfad7ab1ea748f1d5ff9ebb0d3a2206705fe52e82389  gutenprint-5.2.14.tar.bz2\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/gutenprint/gutenprint.mk",
    "content": "################################################################################\n#\n# gutenprint\n#\n################################################################################\n\nGUTENPRINT_VERSION_MAJOR = 5.2\nGUTENPRINT_VERSION = $(GUTENPRINT_VERSION_MAJOR).14\nGUTENPRINT_SITE = http://downloads.sourceforge.net/project/gimp-print/gutenprint-$(GUTENPRINT_VERSION_MAJOR)/$(GUTENPRINT_VERSION)\nGUTENPRINT_SOURCE = gutenprint-$(GUTENPRINT_VERSION).tar.bz2\nGUTENPRINT_LICENSE = GPL-2.0+\nGUTENPRINT_LICENSE_FILES = COPYING\nGUTENPRINT_CPE_ID_VENDOR = gutenprint_project\n\n# Needed, as we touch Makefile.am\nGUTENPRINT_AUTORECONF = YES\n\n# Needed by autoreconf\ndefine GUTENPRINT_CREATE_M4_DIR\n\tmkdir -p $(@D)/m4local\nendef\nGUTENPRINT_POST_PATCH_HOOKS += GUTENPRINT_CREATE_M4_DIR\nHOST_GUTENPRINT_POST_PATCH_HOOKS += GUTENPRINT_CREATE_M4_DIR\n\nGUTENPRINT_DEPENDENCIES = \\\n\tcups host-pkgconf \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv) \\\n\t$(if $(BR2_PACKAGE_LIBUSB),libusb)\n\n# host-gutenprint is needed to generate XML as part of compilation\n# the program that generates the xml also links against libgutenprint\n# so we need to build both a host package and a target package\nGUTENPRINT_DEPENDENCIES += host-gutenprint\n\nGUTENPRINT_CONF_ENV = \\\n\tac_cv_path_CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config \\\n\tac_cv_path_IJS_CONFIG=\"\"\n\nGUTENPRINT_CONF_OPTS = \\\n\t--disable-libgutenprintui2 \\\n\t--disable-samples \\\n\t--without-doc \\\n\t--without-gimp2 \\\n\t--disable-escputil \\\n\t--disable-test \\\n\t--disable-testpattern \\\n\t--with-cups=\"/usr\" \\\n\t--with-sysroot=\"$(STAGING_DIR)\" \\\n\t--disable-cups-ppds\n\n# USE_PREGEN_XMLI18N_TMP_H is added by our patch\nGUTENPRINT_MAKE_ENV = BR2_USE_PREGEN_XMLI18N_TMP_H=$(HOST_DIR)/include/xmli18n-tmp.h\n\nHOST_GUTENPRINT_DEPENDENCIES = host-pkgconf\n# The host-gutenprint shall create the required header\nHOST_GUTENPRINT_MAKE_ENV =\n\n# Even with --without-cups, gutenprint will still add the output of\n# cups-config --cflags / --ldflags to it's compiler/linker flags if\n# available on host.\n# Notice: Because of the configure logic, it needs to be set to the\n# empty string to to disable this, not just to /bin/false like elsewhere.\nHOST_GUTENPRINT_CONF_ENV = ac_cv_path_CUPS_CONFIG=''\n\nHOST_GUTENPRINT_CONF_OPTS = \\\n\t--disable-libgutenprintui2 \\\n\t--disable-samples \\\n\t--without-gimp2 \\\n\t--without-doc \\\n\t--without-foomatic \\\n\t--without-foomatic3 \\\n\t--disable-escputil \\\n\t--disable-test \\\n\t--disable-testpattern \\\n\t--without-cups\n\ndefine HOST_GUTENPRINT_POST_BUILD_INSTAL_TMP_HEADER\n\tcp $(@D)/src/xml/xmli18n-tmp.h $(HOST_DIR)/include\nendef\nHOST_GUTENPRINT_POST_BUILD_HOOKS += HOST_GUTENPRINT_POST_BUILD_INSTAL_TMP_HEADER\n\ndefine GUTENPRINT_POST_INSTALL_TARGET_FIXUP\n\tmkdir -p $(TARGET_DIR)/usr/share/gutenprint/5.2\n\tcp -rf $(HOST_DIR)/share/gutenprint/5.2/xml $(TARGET_DIR)/usr/share/gutenprint/5.2\nendef\nGUTENPRINT_POST_INSTALL_TARGET_HOOKS += GUTENPRINT_POST_INSTALL_TARGET_FIXUP\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/gvfs/0001-meson.build-fix-linking-with-libmetadata.patch",
    "content": "From 731256d7517f0d9cf0b999bb22f864080d5e8690 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 18 Jul 2020 10:00:50 +0200\nSubject: [PATCH] meson.build: fix linking with libmetadata\n\nlibmetadata is built as a static library and depends on libgvfscommon so\nchange the dependencies order to put libgvfscommon_dep after\nlibmetadata_dep or gvfsd-metadata will fail to link on:\n\nFAILED: metadata/gvfsd-metadata\n/home/naourr/work/instance-3/output-1/host/bin/arm-none-linux-gnueabi-gcc  -o metadata/gvfsd-metadata 'metadata/45447b7@@gvfsd-metadata@exe/meta-daemon.c.o' -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -Wl,--start-group common/libgvfscommon.so metadata/libmetadata.a /home/naourr/work/instance-3/output-1/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libgio-2.0.so /home/naourr/work/instance-3/output-1/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libgobject-2.0.so /home/naourr/work/instance-3/output-1/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libglib-2.0.so -Wl,--end-group '-Wl,-rpath,$ORIGIN/../common:$ORIGIN/' -Wl,-rpath-link,/home/naourr/work/instance-3/output-1/build/gvfs-1.44.1/build/common -Wl,-rpath-link,/home/naourr/work/instance-3/output-1/build/gvfs-1.44.1/build/metadata\nmetadata/libmetadata.a(metatree.c.o): In function `safe_open':\nmetatree.c:(.text+0x9c8): undefined reference to `gvfs_randomize_string'\ncollect2: error: ld returned 1 exit status\n\nApply this change in the whole source code and not only for\ngvfsd-metadata to avoid any other build failures.\n\nFixes:\n - http://autobuild.buildroot.org/results//fa892c41b6b9285839a0164b000e37fb04dcc194\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.gnome.org/GNOME/gvfs/-/merge_requests/92]\n---\n client/meson.build   | 2 +-\n metadata/meson.build | 5 +++--\n 2 files changed, 4 insertions(+), 3 deletions(-)\n\ndiff --git a/client/meson.build b/client/meson.build\nindex 8f57d0d3..1d251481 100644\n--- a/client/meson.build\n+++ b/client/meson.build\n@@ -33,8 +33,8 @@ sources = uri_parser_sources + uri_utils + files(\n \n deps = [\n   gio_unix_dep,\n-  libgvfscommon_dep,\n   libmetadata_dep,\n+  libgvfscommon_dep,\n ]\n \n cflags = [\ndiff --git a/metadata/meson.build b/metadata/meson.build\nindex 4e120d18..5699e6f2 100644\n--- a/metadata/meson.build\n+++ b/metadata/meson.build\n@@ -72,8 +72,8 @@ libmetadata_dep = declare_dependency(\n )\n \n deps = [\n-  libgvfscommon_dep,\n   libmetadata_dep,\n+  libgvfscommon_dep,\n ]\n \n if enable_gudev\n@@ -105,8 +105,8 @@ if enable_devel_utils\n       app + '.c',\n       include_directories: top_inc,\n       dependencies: [\n-        libgvfscommon_dep,\n         libmetadata_dep,\n+        libgvfscommon_dep,\n       ],\n       c_args: cflags,\n     )\n@@ -119,6 +119,7 @@ if enable_devel_utils\n       include_directories: top_inc,\n       dependencies: [\n         libmetadata_dep,\n+        libgvfscommon_dep,\n         libxml_dep,\n       ],\n       c_args: cflags,\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/gvfs/Config.in",
    "content": "config BR2_PACKAGE_GVFS\n\tbool \"gvfs\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_USE_MMU # dbus, glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus, glib2\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_SHARED_MIME_INFO\n\thelp\n\t  gvfs is a userspace virtual filesystem where mount runs as a\n\t  separate processes which you talk to via D-Bus. It also\n\t  contains a gio module that seamlessly adds gvfs support to\n\t  all applications using the gio API. It also supports exposing\n\t  the gvfs mounts to non-gio applications using fuse.\n\n\t  https://wiki.gnome.org/action/show/Projects/gvfs\n\ncomment \"gvfs needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/gvfs/gvfs.hash",
    "content": "# From http://ftp.gnome.org/pub/GNOME/sources/gvfs/1.44/gvfs-1.44.1.sha256sum\nsha256  50ef3245d1b03666a40455109169a2a1bd51419fd2d51f9fa6cfd4f89f04fb46  gvfs-1.44.1.tar.xz\n\n# Hash for license file\nsha256  45cf336e2e48176993babc5aabf44437390f40e6a86a472c6abfc7ce9c035db4  COPYING\n"
  },
  {
    "path": "package/gvfs/gvfs.mk",
    "content": "################################################################################\n#\n# gvfs\n#\n################################################################################\n\nGVFS_VERSION_MAJOR = 1.44\nGVFS_VERSION = $(GVFS_VERSION_MAJOR).1\nGVFS_SOURCE = gvfs-$(GVFS_VERSION).tar.xz\nGVFS_SITE = http://ftp.gnome.org/pub/GNOME/sources/gvfs/$(GVFS_VERSION_MAJOR)\nGVFS_INSTALL_STAGING = YES\nGVFS_DEPENDENCIES = \\\n\thost-pkgconf \\\n\thost-libglib2 \\\n\tdbus \\\n\tgsettings-desktop-schemas \\\n\tlibglib2 \\\n\tshared-mime-info \\\n\t$(TARGET_NLS_DEPENDENCIES)\nGVFS_LICENSE = LGPL-2.0+\nGVFS_LICENSE_FILES = COPYING\nGVFS_CPE_ID_VENDOR = gnome\n\nGVFS_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\n# Most of these are missing library support\nGVFS_CONF_OPTS = \\\n\t-Dafc=false \\\n\t-Dgoa=false \\\n\t-Dgoogle=false \\\n\t-Dmtp=false \\\n\t-Dsftp=false \\\n\t-Dudisks2=false\n\nifeq ($(BR2_PACKAGE_AVAHI),y)\nGVFS_DEPENDENCIES += avahi\nGVFS_CONF_OPTS += -Ddnssd=true\nelse\nGVFS_CONF_OPTS += -Ddnssd=false\nendif\n\nifeq ($(BR2_PACKAGE_GCR),y)\nGVFS_DEPENDENCIES += gcr\nGVFS_CONF_OPTS += -Dgcr=true\nelse\nGVFS_CONF_OPTS += -Dgcr=false\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nGVFS_DEPENDENCIES += udev\nendif\n\nifeq ($(BR2_PACKAGE_LIBGUDEV),y)\nGVFS_DEPENDENCIES += libgudev\nGVFS_CONF_OPTS += -Dgudev=true\nelse\nGVFS_CONF_OPTS += -Dgudev=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBARCHIVE),y)\nGVFS_DEPENDENCIES += libarchive\nGVFS_CONF_OPTS += -Darchive=true\nelse\nGVFS_CONF_OPTS += -Darchive=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBBLURAY),y)\nGVFS_DEPENDENCIES += libbluray\nGVFS_CONF_OPTS += -Dbluray=true\nelse\nGVFS_CONF_OPTS += -Dbluray=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP)$(BR2_PACKAGE_POLKIT),yy)\nGVFS_DEPENDENCIES += libcap polkit\nGVFS_CONF_OPTS += -Dadmin=true\nelse\nGVFS_CONF_OPTS += -Dadmin=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBCDIO_PARANOIA)$(BR2_PACKAGE_LIBGUDEV),yy)\nGVFS_DEPENDENCIES += libcdio-paranoia libgudev\nGVFS_CONF_OPTS += -Dcdda=true\nelse\nGVFS_CONF_OPTS += -Dcdda=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBFUSE3),y)\nGVFS_DEPENDENCIES += libfuse3\nGVFS_CONF_OPTS += -Dfuse=true\nelse\nGVFS_CONF_OPTS += -Dfuse=false\nendif\n\n# AFP support is anon-only without libgcrypt which isn't very useful\nifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nGVFS_CONF_OPTS += \\\n\t-Dafp=true \\\n\t-Dgcrypt=true\nGVFS_DEPENDENCIES += libgcrypt\nelse\nGVFS_CONF_OPTS += \\\n\t-Dafp=false \\\n\t-Dgcrypt=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBGPHOTO2)$(BR2_PACKAGE_LIBGUDEV),yy)\nGVFS_DEPENDENCIES += libgphoto2 libgudev\nGVFS_CONF_OPTS += -Dgphoto2=true\nelse\nGVFS_CONF_OPTS += -Dgphoto2=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBNFS),y)\nGVFS_CONF_OPTS += -Dnfs=true\nGVFS_DEPENDENCIES += libnfs\nelse\nGVFS_CONF_OPTS += -Dnfs=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECRET),y)\nGVFS_DEPENDENCIES += libsecret\nGVFS_CONF_OPTS += -Dkeyring=true\nelse\nGVFS_CONF_OPTS += -Dkeyring=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBSOUP)$(BR2_PACKAGE_LIBXML2),yy)\nGVFS_DEPENDENCIES += libsoup libxml2\nGVFS_CONF_OPTS += -Dhttp=true\nelse\nGVFS_CONF_OPTS += -Dhttp=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nGVFS_DEPENDENCIES += libusb\nGVFS_CONF_OPTS += -Dlibusb=true\nelse\nGVFS_CONF_OPTS += -Dlibusb=false\nendif\n\nifeq ($(BR2_PACKAGE_SAMBA4),y)\nGVFS_DEPENDENCIES += samba4\nGVFS_CONF_OPTS += -Dsmb=true\nelse\nGVFS_CONF_OPTS += -Dsmb=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nGVFS_DEPENDENCIES += systemd\nGVFS_CONF_OPTS += -Dlogind=true\nelse\nGVFS_CONF_OPTS += \\\n\t-Dlogind=false \\\n\t-Dsystemduserunitdir=no \\\n\t-Dtmpfilesdir=no\nendif\n\ndefine GVFS_REMOVE_TARGET_SCHEMAS\n\trm $(TARGET_DIR)/usr/share/glib-2.0/schemas/*.xml\nendef\n\ndefine GVFS_COMPILE_SCHEMAS\n\t$(HOST_DIR)/bin/glib-compile-schemas --targetdir=$(TARGET_DIR)/usr/share/glib-2.0/schemas $(STAGING_DIR)/usr/share/glib-2.0/schemas\nendef\n\nGVFS_POST_INSTALL_TARGET_HOOKS += \\\n\tGVFS_REMOVE_TARGET_SCHEMAS \\\n\tGVFS_COMPILE_SCHEMAS\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/gzip/Config.in",
    "content": "config BR2_PACKAGE_GZIP\n\tbool \"gzip\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  Standard GNU compressor. Provides things like gzip,\n\t  gunzip, gzcat, etc...\n\n\t  http://www.gnu.org/software/gzip/gzip.html\n\ncomment \"gzip needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/gzip/gzip.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://ftp.gnu.org/gnu/gzip/gzip-1.10.tar.xz.sig\n# using key 155D3FC500C834486D1EEA677FD9FCCB000BEEEE\nsha256 8425ccac99872d544d4310305f915f5ea81e04d0f437ef1a230dc9d1c819d7c0  gzip-1.10.tar.xz\n# Locally calculated\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/gzip/gzip.mk",
    "content": "################################################################################\n#\n# gzip\n#\n################################################################################\n\nGZIP_VERSION = 1.10\nGZIP_SOURCE = gzip-$(GZIP_VERSION).tar.xz\nGZIP_SITE = $(BR2_GNU_MIRROR)/gzip\n# Some other tools expect it to be in /bin\nGZIP_CONF_OPTS = --exec-prefix=/\nGZIP_LICENSE = GPL-3.0+\nGZIP_LICENSE_FILES = COPYING\nGZIP_CPE_ID_VENDOR = gnu\nGZIP_CONF_ENV += gl_cv_func_fflush_stdin=yes\nHOST_GZIP_CONF_ENV += gl_cv_func_fflush_stdin=yes\n# configure substitutes $(SHELL) for the shell shebang in scripts like\n# gzexe. Unfortunately, the same $(SHELL) variable will also be used by\n# make to run its commands. Fortunately, /bin/sh is always a POSIX shell\n# on both the target and host systems that we support. Even with this,\n# the configure check is slightly broken and prints a bogus warning:\n#  \"using /bin/sh, even though it may have file descriptor bugs\"\nGZIP_CONF_ENV += ac_cv_path_shell=/bin/sh\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/hackrf/0001-Don-t-require-a-C-compiler.patch",
    "content": "From 8b0a8b2be8cf2e4a76c03d3bcdf99bff5025ba22 Mon Sep 17 00:00:00 2001\nFrom: \"Arnout Vandecappelle (Essensium/Mind)\" <arnout@mind.be>\nDate: Sat, 31 Mar 2018 22:50:37 +0200\nSubject: [PATCH] Don't require a C++ compiler\n\nBy default, CMake assumes that the project is using both C and C++.  By\nexplicitly passing 'C' as argument of the project() macro, we tell CMake\nthat only C is used, which prevents CMake from erroring out if a C++\ncompiler doesn't exist.\n\nUpstream status: https://github.com/mossmann/hackrf/pull/469\n\nThis patch differs from upstream because:\n- project name upstream has been changed into HackRF;\n- in Buildroot, we are only interested in host, not firmware.\n\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n---\n host/CMakeLists.txt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/host/CMakeLists.txt b/host/CMakeLists.txt\nindex 874163f..d9cbe31 100644\n--- a/host/CMakeLists.txt\n+++ b/host/CMakeLists.txt\n@@ -1,7 +1,7 @@\n #top dir cmake project for libhackrf + tools\n \n cmake_minimum_required(VERSION 2.8)\n-project (hackrf_all)\n+project (hackrf_all C)\n \n add_subdirectory(libhackrf)\n add_subdirectory(hackrf-tools)\n-- \n2.16.3\n\n"
  },
  {
    "path": "package/hackrf/Config.in",
    "content": "config BR2_PACKAGE_HACKRF\n\tbool \"hackrf\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_FFTW\n\tselect BR2_PACKAGE_FFTW_SINGLE\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Library and tools for accessing HackRF SDR boards.\n\n\t  https://github.com/mossmann/hackrf/tree/master/host\n\ncomment \"hackrf needs a toolchain w/ threads, dynamic library, gcc >= 4.9\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/hackrf/hackrf.hash",
    "content": "# Locally calculated\nsha256  a89badc09a1d2fa18367b3b2c974580ad5f6ce93aaa4e54557dc3d013c029d14  hackrf-2018.01.1.tar.xz\nsha256  49b60a6288f90f49074228cc1fae0fb16871ba36b756013abdf7c2fc92f01fad  COPYING\n"
  },
  {
    "path": "package/hackrf/hackrf.mk",
    "content": "################################################################################\n#\n# hackrf\n#\n################################################################################\n\nHACKRF_VERSION = 2018.01.1\nHACKRF_SITE = https://github.com/mossmann/hackrf/releases/download/v$(HACKRF_VERSION)\nHACKRF_SOURCE = hackrf-$(HACKRF_VERSION).tar.xz\nHACKRF_LICENSE = GPL-2.0+ BSD-3-Clause\nHACKRF_LICENSE_FILES = COPYING\nHACKRF_DEPENDENCIES = fftw-single libusb\nHACKRF_SUBDIR = host\nHACKRF_INSTALL_STAGING = YES\n\nHACKRF_CONF_OPTS += -DBUILD_HACKRF_TOOLS=ON\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nHACKRF_CONF_OPTS += \\\n\t-DINSTALL_UDEV_RULES=ON \\\n\t-DUDEV_RULES_GROUP=plugdev\nelse\nHACKRF_CONF_OPTS += -DINSTALL_UDEV_RULES=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/hans/Config.in",
    "content": "comment \"hans needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_HANS\n\tbool \"hans\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Hans makes it possible to tunnel IPv4 through ICMP echo\n\t  packets, so you could call it a ping tunnel.\n\t  This can be useful when you find yourself in the situation\n\t  that your Internet access is firewalled, but pings are\n\t  allowed.\n\n\t  http://code.gerade.org/hans/\n"
  },
  {
    "path": "package/hans/hans.hash",
    "content": "# From http://sourceforge.net/projects/hanstunnel/files/source/\nmd5 8628393ec1b61a6c3a47a0a3dcb455b3  hans-1.0.tar.gz\nsha1 0bc857df109af222732cb95c861a0f0a6dd53dee  hans-1.0.tar.gz\n# Locally computed\nsha256  f8f70cf22ba14d9223695c9e9a2d75289d8360f61f533b83ee538836f29a458e  hans-1.0.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE\n"
  },
  {
    "path": "package/hans/hans.mk",
    "content": "################################################################################\n#\n# hans\n#\n################################################################################\n\nHANS_VERSION = 1.0\nHANS_SITE = http://downloads.sourceforge.net/project/hanstunnel/source\nHANS_LICENSE = GPL-3.0+\nHANS_LICENSE_FILES = LICENSE\n\ndefine HANS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) GCC=\"$(TARGET_CC)\" GPP=\"$(TARGET_CXX)\" -C $(@D)\nendef\n\ndefine HANS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 -D $(@D)/hans $(TARGET_DIR)/usr/sbin/hans\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/haproxy/Config.in",
    "content": "config BR2_PACKAGE_HAPROXY_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\t# src/proto_http.c:6330:1: internal compiler error: Segmentation fault\n\tdepends on !BR2_nios2\n\t# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60040\n\tdepends on !(BR2_sh4 && !BR2_TOOLCHAIN_GCC_AT_LEAST_7)\n\nconfig BR2_PACKAGE_HAPROXY\n\tbool \"haproxy\"\n\tdepends on BR2_PACKAGE_HAPROXY_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4\n\thelp\n\t  HAProxy is a free, very fast and reliable solution offering\n\t  high availability, load balancing, and proxying for TCP and\n\t  HTTP-based applications.\n\n\t  http://www.haproxy.org\n"
  },
  {
    "path": "package/haproxy/haproxy.hash",
    "content": "# From: http://www.haproxy.org/download/2.4/src/haproxy-2.4.7.tar.gz.sha256\nsha256  52af97f72f22ffd8a7a995fafc696291d37818feda50a23caef7dc0622421845  haproxy-2.4.7.tar.gz\n# Locally computed:\nsha256  0717ca51fceaa25ac9e5ccc62e0c727dcf27796057201fb5fded56a25ff6ca28  LICENSE\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  doc/lgpl.txt\nsha256  ddb9db7630752f8fdc6898f7c99a99eaeeac5213627ecb093df9c82f56175dc7  doc/gpl.txt\n"
  },
  {
    "path": "package/haproxy/haproxy.mk",
    "content": "################################################################################\n#\n# haproxy\n#\n################################################################################\n\nHAPROXY_VERSION_MAJOR = 2.4\nHAPROXY_VERSION = $(HAPROXY_VERSION_MAJOR).7\nHAPROXY_SITE = http://www.haproxy.org/download/$(HAPROXY_VERSION_MAJOR)/src\nHAPROXY_LICENSE = GPL-2.0+ and LGPL-2.1+ with exceptions\nHAPROXY_LICENSE_FILES = LICENSE doc/lgpl.txt doc/gpl.txt\nHAPROXY_CPE_ID_VENDOR = haproxy\n\nHAPROXY_MAKE_OPTS = \\\n\tLD=$(TARGET_CC) \\\n\tPREFIX=/usr \\\n\tTARGET=custom\n\nifeq ($(BR2_STATIC_LIBS),)\nHAPROXY_MAKE_OPTS += USE_DL=1\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nHAPROXY_LIBS += -latomic\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),y)\n# threads uses atomics on gcc >= 4.7 and sync otherwise (see\n# include/common/hathreads.h)\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_7):$(BR2_TOOLCHAIN_HAS_ATOMIC),y:y)\nHAPROXY_MAKE_OPTS += USE_THREAD=1\nelse ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_7):$(BR2_TOOLCHAIN_HAS_SYNC_4),:y)\nHAPROXY_MAKE_OPTS += USE_THREAD=1\nendif\nendif\n\nifeq ($(BR2_PACKAGE_LUA_5_3),y)\nHAPROXY_DEPENDENCIES += lua\nHAPROXY_MAKE_OPTS += \\\n\tLUA_LIB_NAME=lua \\\n\tUSE_LUA=1\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nHAPROXY_DEPENDENCIES += openssl\nHAPROXY_MAKE_OPTS += USE_OPENSSL=1\nifeq ($(BR2_STATIC_LIBS),y)\nHAPROXY_LIBS += -lz\nendif\nendif\n\n# pcre and pcre2 can't be enabled at the same time so prefer pcre2\nifeq ($(BR2_PACKAGE_PCRE2),y)\nHAPROXY_DEPENDENCIES += pcre2\nHAPROXY_MAKE_OPTS += \\\n\tPCRE2_CONFIG=$(STAGING_DIR)/usr/bin/pcre2-config \\\n\tUSE_PCRE2=1\nelse ifeq ($(BR2_PACKAGE_PCRE),y)\nHAPROXY_DEPENDENCIES += pcre\nHAPROXY_MAKE_OPTS += \\\n\tPCRE_CONFIG=$(STAGING_DIR)/usr/bin/pcre-config \\\n\tUSE_PCRE=1\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nHAPROXY_DEPENDENCIES += systemd\nHAPROXY_MAKE_OPTS += USE_SYSTEMD=1\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nHAPROXY_DEPENDENCIES += zlib\nHAPROXY_MAKE_OPTS += USE_ZLIB=1\nendif\n\nHAPROXY_MAKE_OPTS += ADDLIB=\"$(HAPROXY_LIBS)\"\n\nHAPROXY_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_90620),y)\nHAPROXY_CFLAGS += -O0\nendif\n\ndefine HAPROXY_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\t$(HAPROXY_MAKE_OPTS) CFLAGS=\"$(HAPROXY_CFLAGS)\" -C $(@D)\nendef\n\ndefine HAPROXY_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\t$(HAPROXY_MAKE_OPTS) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/harfbuzz/0001-meson.build-check-for-pthread.h.patch",
    "content": "From 96bbf3a3af45d86f790afdf91a6686c37421e92b Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 15 Nov 2020 10:57:37 +0100\nSubject: [PATCH] meson.build: check for pthread.h\n\nCheck for pthread.h otherwise the build will fail with some toolchains\nthat have libphtread.so but not pthread.h:\n\nRun-time dependency threads found: YES\n\n../src/hb-mutex.hh:53:10: fatal error: pthread.h: No such file or directory\n #include <pthread.h>\n          ^~~~~~~~~~~\n\nMoreover, fix detection of pthread fallback\n\nFixes:\n - http://autobuild.buildroot.org/results/70c98e89b1d5e5b651d1f6928dc53f465103f57a\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n meson.build | 6 ++++--\n 1 file changed, 4 insertions(+), 2 deletions(-)\n\ndiff --git a/meson.build b/meson.build\nindex bf3925db..6d263d48 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -281,7 +281,9 @@ endif\n # threads\n thread_dep = null_dep\n if host_machine.system() != 'windows'\n-  thread_dep = dependency('threads', required: false)\n+  if cpp.has_header('pthread.h')\n+    thread_dep = dependency('threads', required: false)\n+  endif\n \n   if thread_dep.found()\n     conf.set('HAVE_PTHREAD', 1)\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/harfbuzz/Config.in",
    "content": "config BR2_PACKAGE_HARFBUZZ\n\tbool \"harfbuzz\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\thelp\n\t  HarfBuzz is an OpenType text shaping engine\n\n\t  https://harfbuzz.github.io/\n\n\t  Harfbuzz can make optional use of cairo, freetype,\n\t  glib2 and icu packages if they are selected.\n\ncomment \"harfbuzz needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/harfbuzz/harfbuzz.hash",
    "content": "# Locally computed\nsha256  036b0ee118451539783ec7864148bb4106be42a2eb964df4e83e6703ec46f3d9  harfbuzz-3.0.0.tar.xz\nsha256  4345e1735f8bc6d812fed5180cabb5a5e88a4109d332652f2a45c13cfa5ee692  COPYING\n"
  },
  {
    "path": "package/harfbuzz/harfbuzz.mk",
    "content": "################################################################################\n#\n# harfbuzz\n#\n################################################################################\n\nHARFBUZZ_VERSION = 3.0.0\nHARFBUZZ_SITE = https://github.com/harfbuzz/harfbuzz/releases/download/$(HARFBUZZ_VERSION)\nHARFBUZZ_SOURCE = harfbuzz-$(HARFBUZZ_VERSION).tar.xz\nHARFBUZZ_LICENSE = MIT, ISC (ucdn library)\nHARFBUZZ_LICENSE_FILES = COPYING\nHARFBUZZ_CPE_ID_VENDOR = harfbuzz_project\nHARFBUZZ_INSTALL_STAGING = YES\nHARFBUZZ_CONF_OPTS = \\\n\t-Dgdi=disabled \\\n\t-Ddirectwrite=disabled \\\n\t-Dcoretext=disabled \\\n\t-Dtests=disabled \\\n\t-Ddocs=disabled \\\n\t-Dbenchmark=disabled \\\n\t-Dicu_builtin=false \\\n\t-Dexperimental_api=false \\\n\t-Dfuzzer_ldflags=\"\"\n\n# freetype & glib2 support required by host-pango\nHOST_HARFBUZZ_DEPENDENCIES = \\\n\thost-freetype \\\n\thost-libglib2\nHOST_HARFBUZZ_CONF_OPTS = \\\n\t-Dglib=enabled \\\n\t-Dgobject=disabled \\\n\t-Dcairo=disabled \\\n\t-Dicu=disabled \\\n\t-Dgraphite=disabled \\\n\t-Dfreetype=enabled \\\n\t-Dgdi=disabled \\\n\t-Ddirectwrite=disabled \\\n\t-Dcoretext=disabled \\\n\t-Dtests=disabled \\\n\t-Dintrospection=disabled \\\n\t-Ddocs=disabled \\\n\t-Dbenchmark=disabled \\\n\t-Dicu_builtin=false \\\n\t-Dexperimental_api=false \\\n\t-Dfuzzer_ldflags=\"\"\n\nifeq ($(BR2_PACKAGE_CAIRO),y)\nHARFBUZZ_DEPENDENCIES += cairo\nHARFBUZZ_CONF_OPTS += -Dcairo=enabled\nelse\nHARFBUZZ_CONF_OPTS += -Dcairo=disabled\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nHARFBUZZ_DEPENDENCIES += freetype\nHARFBUZZ_CONF_OPTS += -Dfreetype=enabled\nelse\nHARFBUZZ_CONF_OPTS += -Dfreetype=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nHARFBUZZ_DEPENDENCIES += gobject-introspection\nHARFBUZZ_CONF_OPTS += \\\n\t-Dgobject=enabled \\\n\t-Dintrospection=enabled\nelse\nHARFBUZZ_CONF_OPTS += \\\n\t-Dgobject=disabled \\\n\t-Dintrospection=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GRAPHITE2),y)\nHARFBUZZ_DEPENDENCIES += graphite2\nHARFBUZZ_CONF_OPTS += -Dgraphite=enabled\nelse\nHARFBUZZ_CONF_OPTS += -Dgraphite=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nHARFBUZZ_DEPENDENCIES += libglib2\nHARFBUZZ_CONF_OPTS += -Dglib=enabled\nelse\nHARFBUZZ_CONF_OPTS += -Dglib=disabled\nendif\n\nifeq ($(BR2_PACKAGE_ICU),y)\nHARFBUZZ_DEPENDENCIES += icu\nHARFBUZZ_CONF_OPTS += -Dicu=enabled\nelse\nHARFBUZZ_CONF_OPTS += -Dicu=disabled\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),)\nHARFBUZZ_CXXFLAGS += $(TARGET_CXXFLAGS) -DHB_NO_MT\nendif\n\nifeq ($(BR2_GCC_VERSION_ARC),y)\nHARFBUZZ_CXXFLAGS += -O0\nendif\n\n$(eval $(meson-package))\n$(eval $(host-meson-package))\n"
  },
  {
    "path": "package/haserl/0001-add-haserl_lualib.inc.patch",
    "content": "[HACK] add preprocessed lualib file so host-lua isn't needed\n\nHaserl no longer ships with haserl_lualib.inc, causing lua2c (which needs\nhost-lua support) to be built to generate it.\n\nRe-add .inc file from 0.9.33 so we don't need host-lua.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\nSigned-off-by: Max Filippov <jcmvbkbc@gmail.com>\n---\n src/Makefile.in       |    3 -\n src/haserl_lualib.inc |   97 ++++++++++++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 98 insertions(+), 2 deletions(-)\n\nIndex: haserl-0.9.33/src/haserl_lualib.inc\n===================================================================\n--- /dev/null\n+++ haserl-0.9.33/src/haserl_lualib.inc\n@@ -0,0 +1,109 @@\n+/* This file was automatically generated from haserl_lualib.lua. DO NOT EDIT */\n+\n+static const unsigned char haserl_lualib[] = { \n+   27, 76,117, 97, 81,  0,  1,  4,  8,  4,  8,  0, 19,  0,  0,  0,\n+    0,  0,  0,  0, 64,104, 97,115,101,114,108, 95,108,117, 97,108,\n+  105, 98, 46,108,117, 97,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n+    0,  2,  7, 24,  0,  0,  0, 10,  0,  0,  0, 74,  0,  0,  0,138,\n+    0,  0,  0,202,  0,  0,  0, 10,  1,  0,  0, 74,  1,  0,  0,138,\n+    1,  0,  0,135,129,  1,  0, 71, 65,  1,  0,  7,  1,  1,  0,199,\n+  192,  0,  0,135,128,  0,  0, 71, 64,  0,  0,  7,  0,  0,  0,  5,\n+    0,  0,  0,100,  0,  0,  0,  9, 64,128,131,  5,  0,  0,  0,100,\n+   64,  0,  0,  9, 64,  0,132,  5,  0,  0,  0,100,128,  0,  0,  9,\n+   64,128,132, 30,  0,128,  0, 10,  0,  0,  0,  4,  7,  0,  0,  0,\n+    0,  0,  0,  0,104, 97,115,101,114,108,  0,  4,  5,  0,  0,  0,\n+    0,  0,  0,  0, 70, 79, 82, 77,  0,  4,  4,  0,  0,  0,  0,  0,\n+    0,  0, 69, 78, 86,  0,  4,  7,  0,  0,  0,  0,  0,  0,  0, 67,\n+   79, 79, 75, 73, 69,  0,  4,  7,  0,  0,  0,  0,  0,  0,  0, 72,\n+   65, 83, 69, 82, 76,  0,  4,  4,  0,  0,  0,  0,  0,  0,  0, 71,\n+   69, 84,  0,  4,  5,  0,  0,  0,  0,  0,  0,  0, 80, 79, 83, 84,\n+    0,  4,  9,  0,  0,  0,  0,  0,  0,  0,115,101,116,102,105,101,\n+  108,100,  0,  4,  9,  0,  0,  0,  0,  0,  0,  0,103,101,116,102,\n+  105,101,108,100,  0,  4,  9,  0,  0,  0,  0,  0,  0,  0,109,121,\n+  112,117,116,101,110,118,  0,  3,  0,  0,  0,  0,  0,  0,  0,  0,\n+    0,  0,  0, 25,  0,  0,  0, 39,  0,  0,  0,  0,  2,  0, 10, 29,\n+    0,  0,  0,133,  0,  0,  0,197, 64,  0,  0,198,128,192,  1,  0,\n+    1,  0,  0, 65,193,  0,  0,220,  0,129,  1, 22,128,  4,128,  5,\n+    2,  1,  0, 64,  2,  0,  3, 28,130,  0,  1, 26,  2,  0,  0, 22,\n+  192,  0,128,  5,  2,  1,  0, 64,  2,  0,  3, 28,130,  0,  1,128,\n+    1,  0,  4, 23, 64,193,  3, 22,128,  1,128,  6,130,  1,  1, 26,\n+   66,  0,  0, 22,  0,  0,128, 10,  2,  0,  0,137,  0,  2,  3,134,\n+  128,  1,  1, 22,  0,  0,128,137, 64,  0,  3,225,128,  0,  0, 22,\n+  128,250,127, 30,  0,128,  0,  6,  0,  0,  0,  4,  3,  0,  0,  0,\n+    0,  0,  0,  0, 95, 71,  0,  4,  7,  0,  0,  0,  0,  0,  0,  0,\n+  115,116,114,105,110,103,  0,  4,  7,  0,  0,  0,  0,  0,  0,  0,\n+  103,109, 97,116, 99,104,  0,  4, 15,  0,  0,  0,  0,  0,  0,  0,\n+   40, 91, 37,119, 95, 37, 45, 93, 43, 41, 40, 46, 63, 41,  0,  4,\n+    9,  0,  0,  0,  0,  0,  0,  0,116,111,110,117,109, 98,101,114,\n+    0,  4,  2,  0,  0,  0,  0,  0,  0,  0, 46,  0,  0,  0,  0,  0,\n+   29,  0,  0,  0, 27,  0,  0,  0, 28,  0,  0,  0, 28,  0,  0,  0,\n+   28,  0,  0,  0, 28,  0,  0,  0, 28,  0,  0,  0, 28,  0,  0,  0,\n+   29,  0,  0,  0, 29,  0,  0,  0, 29,  0,  0,  0, 29,  0,  0,  0,\n+   29,  0,  0,  0, 30,  0,  0,  0, 30,  0,  0,  0, 30,  0,  0,  0,\n+   30,  0,  0,  0, 32,  0,  0,  0, 32,  0,  0,  0, 33,  0,  0,  0,\n+   33,  0,  0,  0, 33,  0,  0,  0, 33,  0,  0,  0, 33,  0,  0,  0,\n+   34,  0,  0,  0, 34,  0,  0,  0, 36,  0,  0,  0, 28,  0,  0,  0,\n+   37,  0,  0,  0, 39,  0,  0,  0,  8,  0,  0,  0,  2,  0,  0,  0,\n+    0,  0,  0,  0,102,  0,  0,  0,  0,  0, 28,  0,  0,  0,  2,  0,\n+    0,  0,  0,  0,  0,  0,118,  0,  0,  0,  0,  0, 28,  0,  0,  0,\n+    2,  0,  0,  0,  0,  0,  0,  0,116,  0,  1,  0,  0,  0, 28,  0,\n+    0,  0, 16,  0,  0,  0,  0,  0,  0,  0, 40,102,111,114, 32,103,\n+  101,110,101,114, 97,116,111,114, 41,  0,  6,  0,  0,  0, 28,  0,\n+    0,  0, 12,  0,  0,  0,  0,  0,  0,  0, 40,102,111,114, 32,115,\n+  116, 97,116,101, 41,  0,  6,  0,  0,  0, 28,  0,  0,  0, 14,  0,\n+    0,  0,  0,  0,  0,  0, 40,102,111,114, 32, 99,111,110,116,114,\n+  111,108, 41,  0,  6,  0,  0,  0, 28,  0,  0,  0,  2,  0,  0,  0,\n+    0,  0,  0,  0,119,  0,  7,  0,  0,  0, 26,  0,  0,  0,  2,  0,\n+    0,  0,  0,  0,  0,  0,100,  0,  7,  0,  0,  0, 26,  0,  0,  0,\n+    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 41,  0,  0,  0,\n+   47,  0,  0,  0,  0,  1,  0,  8, 12,  0,  0,  0, 69,  0,  0,  0,\n+  133, 64,  0,  0,134,128, 64,  1,192,  0,  0,  0,  1,193,  0,  0,\n+  156,  0,129,  1, 22,  0,  0,128, 70, 64,129,  0,161, 64,  0,  0,\n+   22,  0,255,127, 94,  0,  0,  1, 30,  0,128,  0,  4,  0,  0,  0,\n+    4,  3,  0,  0,  0,  0,  0,  0,  0, 95, 71,  0,  4,  7,  0,  0,\n+    0,  0,  0,  0,  0,115,116,114,105,110,103,  0,  4,  7,  0,  0,\n+    0,  0,  0,  0,  0,103,109, 97,116, 99,104,  0,  4,  7,  0,  0,\n+    0,  0,  0,  0,  0, 91, 37,119, 95, 93, 43,  0,  0,  0,  0,  0,\n+   12,  0,  0,  0, 42,  0,  0,  0, 43,  0,  0,  0, 43,  0,  0,  0,\n+   43,  0,  0,  0, 43,  0,  0,  0, 43,  0,  0,  0, 43,  0,  0,  0,\n+   44,  0,  0,  0, 43,  0,  0,  0, 44,  0,  0,  0, 46,  0,  0,  0,\n+   47,  0,  0,  0,  6,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,\n+  102,  0,  0,  0,  0,  0, 11,  0,  0,  0,  2,  0,  0,  0,  0,  0,\n+    0,  0,118,  0,  1,  0,  0,  0, 11,  0,  0,  0, 16,  0,  0,  0,\n+    0,  0,  0,  0, 40,102,111,114, 32,103,101,110,101,114, 97,116,\n+  111,114, 41,  0,  6,  0,  0,  0, 10,  0,  0,  0, 12,  0,  0,  0,\n+    0,  0,  0,  0, 40,102,111,114, 32,115,116, 97,116,101, 41,  0,\n+    6,  0,  0,  0, 10,  0,  0,  0, 14,  0,  0,  0,  0,  0,  0,  0,\n+   40,102,111,114, 32, 99,111,110,116,114,111,108, 41,  0,  6,  0,\n+    0,  0, 10,  0,  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,119,  0,\n+    7,  0,  0,  0,  8,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n+    0,  0,  0,  0, 49,  0,  0,  0, 55,  0,  0,  0,  0,  2,  0,  6,\n+   20,  0,  0,  0,133,  0,  0,  0,134, 64, 64,  1,192,  0,  0,  0,\n+    1,129,  0,  0, 65,193,  0,  0,156,128,  0,  2,  0,  0,  0,  1,\n+  133,  0,  0,  0,134, 64, 64,  1,192,  0,  0,  0,  1,  1,  1,  0,\n+   65,193,  0,  0,156,128,  0,  2,  0,  0,  0,  1,133, 64,  1,  0,\n+  134,128, 65,  1,192,  0,  0,  0,  0,  1,128,  0,156, 64,128,  1,\n+   30,  0,128,  0,  7,  0,  0,  0,  4,  7,  0,  0,  0,  0,  0,  0,\n+    0,115,116,114,105,110,103,  0,  4,  5,  0,  0,  0,  0,  0,  0,\n+    0,103,115,117, 98,  0,  4,  7,  0,  0,  0,  0,  0,  0,  0, 91,\n+   92, 93, 92, 91, 93,  0,  4,  2,  0,  0,  0,  0,  0,  0,  0, 46,\n+    0,  4,  6,  0,  0,  0,  0,  0,  0,  0, 91, 92, 46, 93, 43,  0,\n+    4,  7,  0,  0,  0,  0,  0,  0,  0,104, 97,115,101,114,108,  0,\n+    4,  9,  0,  0,  0,  0,  0,  0,  0,115,101,116,102,105,101,108,\n+  100,  0,  0,  0,  0,  0, 20,  0,  0,  0, 51,  0,  0,  0, 51,  0,\n+    0,  0, 51,  0,  0,  0, 51,  0,  0,  0, 51,  0,  0,  0, 51,  0,\n+    0,  0, 51,  0,  0,  0, 52,  0,  0,  0, 52,  0,  0,  0, 52,  0,\n+    0,  0, 52,  0,  0,  0, 52,  0,  0,  0, 52,  0,  0,  0, 52,  0,\n+    0,  0, 54,  0,  0,  0, 54,  0,  0,  0, 54,  0,  0,  0, 54,  0,\n+    0,  0, 54,  0,  0,  0, 55,  0,  0,  0,  2,  0,  0,  0,  4,  0,\n+    0,  0,  0,  0,  0,  0,107,101,121,  0,  0,  0,  0,  0, 19,  0,\n+    0,  0,  6,  0,  0,  0,  0,  0,  0,  0,118, 97,108,117,101,  0,\n+    0,  0,  0,  0, 19,  0,  0,  0,  0,  0,  0,  0, 24,  0,  0,  0,\n+   23,  0,  0,  0, 23,  0,  0,  0, 23,  0,  0,  0, 23,  0,  0,  0,\n+   23,  0,  0,  0, 23,  0,  0,  0, 23,  0,  0,  0, 23,  0,  0,  0,\n+   23,  0,  0,  0, 23,  0,  0,  0, 23,  0,  0,  0, 23,  0,  0,  0,\n+   23,  0,  0,  0, 23,  0,  0,  0, 25,  0,  0,  0, 39,  0,  0,  0,\n+   25,  0,  0,  0, 41,  0,  0,  0, 47,  0,  0,  0, 41,  0,  0,  0,\n+   49,  0,  0,  0, 55,  0,  0,  0, 49,  0,  0,  0, 55,  0,  0,  0,\n+    0,  0,  0,  0,  0,  0,  0,  0,\n+};\nIndex: haserl-0.9.29/src/Makefile.in\n===================================================================\n--- haserl-0.9.29.orig/src/Makefile.in\n+++ haserl-0.9.29/src/Makefile.in\n@@ -32,7 +32,6 @@\n NORMAL_UNINSTALL = :\n PRE_UNINSTALL = :\n POST_UNINSTALL = :\n-@USE_LUA_TRUE@noinst_PROGRAMS = lua2c$(EXEEXT)\n @INCLUDE_LUASHELL_TRUE@@USE_LUA_TRUE@am__append_1 = h_lua.c h_lua.h\n @INCLUDE_LUACSHELL_TRUE@@USE_LUA_TRUE@am__append_2 = h_luac.c h_luac.h\n bin_PROGRAMS = haserl$(EXEEXT)\n@@ -515,7 +514,7 @@\n @USE_LUA_TRUE@\t$(CC_FOR_BUILD) $(CFLAGS) $(LDFLAGS) $(lua2c_LDFLAGS) \\\n @USE_LUA_TRUE@\t\t-o $@ $^ $(LIBS)\n \n-@USE_LUA_TRUE@haserl_lualib.inc : haserl_lualib.lua lua2c\n+@USE_LUA_TRUE@haserl_lualib.inc :\n @USE_LUA_TRUE@\tif ! ./lua2c haserl_lualib haserl_lualib.lua >$@; then \\\n @USE_LUA_TRUE@\t\trm $@; \\\n @USE_LUA_TRUE@\t\texit 1 ;\\\n"
  },
  {
    "path": "package/haserl/Config.in",
    "content": "config BR2_PACKAGE_HASERL\n\tbool \"haserl\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Haserl is a small cgi wrapper that enables shell scripts to be\n\t  embedded into html documents. It is intended for environments\n\t  where something like PHP is too big.\n\n\t  http://haserl.sourceforge.net/\n\nconfig BR2_PACKAGE_HASERL_WITH_LUA\n\tbool \"Lua support\"\n\tdepends on BR2_PACKAGE_HASERL\n\tdepends on BR2_PACKAGE_LUA\n\thelp\n\t  Enable Lua support for haserl\n"
  },
  {
    "path": "package/haserl/haserl.hash",
    "content": "# From http://sourceforge.net/projects/haserl/files/haserl-devel/\nmd5  b94cd201a82b410b7f93fe3a31416cff  haserl-0.9.36.tar.gz\nsha1  a6244b496f06e1fea70581cb02c04bc1f0ffcbc3  haserl-0.9.36.tar.gz\n# Locally computed\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/haserl/haserl.mk",
    "content": "################################################################################\n#\n# haserl\n#\n################################################################################\n\nHASERL_VERSION = 0.9.36\nHASERL_SITE = http://downloads.sourceforge.net/project/haserl/haserl-devel\nHASERL_LICENSE = GPL-2.0\nHASERL_LICENSE_FILES = COPYING\nHASERL_CPE_ID_VENDOR = haserl_project\nHASERL_DEPENDENCIES = host-pkgconf\n\nifeq ($(BR2_PACKAGE_HASERL_WITH_LUA),y)\nHASERL_CONF_OPTS += --with-lua\nHASERL_DEPENDENCIES += lua\n\n# liblua uses dlopen when dynamically linked\nifneq ($(BR2_STATIC_LIBS),y)\nHASERL_CONF_ENV += LIBS=\"-ldl\"\nendif\n\nelse\nHASERL_CONF_OPTS += --without-lua\nendif\n\ndefine HASERL_REMOVE_EXAMPLES\n\trm -rf $(TARGET_DIR)/usr/share/haserl\nendef\n\nHASERL_POST_INSTALL_TARGET_HOOKS += HASERL_REMOVE_EXAMPLES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/haveged/0001-Check-for-sys-auxv.h-before-using-it.patch",
    "content": "From 676abde95bab10e1d26e91682772514010143343 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Sun, 21 Mar 2021 17:00:08 +0100\nSubject: [PATCH] Check for sys/auxv.h before using it.\n\n- fixes uclibc-ng compile (does not provide sys/auxv.h header file)\n\nFixes:\n\n  haveged.c:22:10: fatal error: sys/auxv.h: No such file or directory\n     22 | #include <sys/auxv.h>\n        |          ^~~~~~~~~~~~\n\n[Upstream: https://github.com/jirka-h/haveged/pull/59]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n configure.ac  | 1 +\n src/haveged.c | 4 ++++\n 2 files changed, 5 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex c172a10..a0263f5 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -125,6 +125,7 @@ AC_CHECK_HEADERS(stdio.h)\n AC_CHECK_HEADERS(stdlib.h)\n AC_CHECK_HEADERS(string.h)\n AC_CHECK_HEADERS(sys/ioctl.h)\n+AC_CHECK_HEADERS(sys/auxv.h)\n AC_CHECK_HEADERS(sys/mman.h)\n AC_CHECK_HEADERS(sys/types.h)\n AC_CHECK_HEADERS(sys/socket.h)\ndiff --git a/src/haveged.c b/src/haveged.c\nindex b9cb77b..dad3072 100644\n--- a/src/haveged.c\n+++ b/src/haveged.c\n@@ -19,7 +19,9 @@\n  ** along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  */\n #include \"config.h\"\n+#if defined(HAVE_SYS_AUXV_H)\n #include <sys/auxv.h>\n+#endif\n #include <stdlib.h>\n #include <stdio.h>\n #include <getopt.h>\n@@ -135,8 +137,10 @@ int main(int argc, char **argv)\n {\n    volatile char *path = strdup(argv[0]);\n    volatile char *arg0 = argv[0];\n+#if defined(HAVE_SYS_AUXV_H)\n    if (path[0] != '/')\n       path = (char*)getauxval(AT_EXECFN);\n+#endif\n    static const char* cmds[] = {\n       \"b\", \"buffer\",      \"1\", SETTINGR(\"Buffer size [KW], default: \",COLLECT_BUFSIZE),\n       \"d\", \"data\",        \"1\", SETTINGR(\"Data cache size [KB], with fallback to: \", GENERIC_DCACHE ),\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/haveged/Config.in",
    "content": "config BR2_PACKAGE_HAVEGED\n\tbool \"haveged\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  The haveged project is an attempt to provide an easy-to-use,\n\t  unpredictable random number generator based upon an adaptation\n\t  of the HAVEGE algorithm.\n\n\t  http://www.issihosts.com/haveged/\n"
  },
  {
    "path": "package/haveged/S21haveged",
    "content": "#!/bin/sh\n\ncase \"$1\" in\n\tstart)\n\t\tprintf \"Starting haveged: \"\n\t\tstart-stop-daemon -S -x /usr/sbin/haveged -- -w 1024 -r 0\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping haveged: \"\n\t\tstart-stop-daemon -K -x /usr/sbin/haveged\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\trestart|reload)\n\t\t$0 stop\n\t\t$0 start\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "package/haveged/haveged.hash",
    "content": "# Locally calculated\nsha256  938cb494bcad7e4f24e61eb50fab4aa0acbc3240c80f3ad5c6cf7e6e922618c3  haveged-1.9.14.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/haveged/haveged.mk",
    "content": "################################################################################\n#\n# haveged\n#\n################################################################################\n\nHAVEGED_VERSION = 1.9.14\nHAVEGED_SITE = $(call github,jirka-h,haveged,v$(HAVEGED_VERSION))\nHAVEGED_LICENSE = GPL-3.0+\nHAVEGED_LICENSE_FILES = COPYING\nHAVEGED_SELINUX_MODULES = entropyd\n# patch touching configure.ac\nHAVEGED_AUTORECONF = YES\n\n# '--disable-init' as buildroot ships its own sysv/systemd init files\nHAVEGED_CONF_OPTS = \\\n\t--enable-daemon \\\n\t--disable-diagnostic \\\n\t--disable-init \\\n\t--disable-nistest \\\n\t--disable-enttest \\\n\t--disable-olt \\\n\t--enable-tune\n\nifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)\nHAVEGED_CONF_OPTS += --enable-clock_gettime\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nHAVEGED_CONF_OPTS += --enable-threads\nelse\nHAVEGED_CONF_OPTS += --disable-threads\nendif\n\ndefine HAVEGED_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/haveged/S21haveged \\\n\t\t$(TARGET_DIR)/etc/init.d/S21haveged\nendef\n\ndefine HAVEGED_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/haveged/haveged.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/haveged.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/haveged/haveged.service",
    "content": "[Unit]\n# inspiration from upstream init.d/service.fedora\nDescription=Entropy Daemon based on the HAVEGE algorithm\nDocumentation=man:haveged(8) http://www.issihosts.com/haveged/\nDefaultDependencies=no\n# This would wait for filesystems, but we only need /dev/random, which\n# is certainly available after systemd initialised\n# After=systemd-tmpfiles-setup-dev.service\nBefore=sysinit.target shutdown.target systemd-journald.service\n\n[Service]\nExecStart=/usr/sbin/haveged -w 1024 -v 1 --Foreground\nRestart=always\nSuccessExitStatus=137 143\n\n# Only simple isolation methods that don't pull in dependencies\nCapabilityBoundingSet=CAP_SYS_ADMIN\nSecureBits=noroot-locked\nProtectSystem=full\n\n[Install]\nWantedBy=sysinit.target\n"
  },
  {
    "path": "package/hdparm/Config.in",
    "content": "config BR2_PACKAGE_HDPARM\n\tbool \"hdparm\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  hdparm - get/set ATA/SATA drive parameters under Linux\n\n\t  https://sourceforge.net/projects/hdparm/\n"
  },
  {
    "path": "package/hdparm/hdparm.hash",
    "content": "# From https://sourceforge.net/projects/hdparm/files/hdparm/\nsha1  100b9a5551b71d87b446b415d56c5d45ac41d131  hdparm-9.62.tar.gz\n# Locally computed\nsha256  2c0f9d75cdbeda928a25a128cd3d0b7120445ec0910c0b29d4c1038ed1be777f  hdparm-9.62.tar.gz\nsha256  eae572b06d2733f5c65fbe81680ce2b8a109afee2bdd1a161343c772af0e82e1  LICENSE.TXT\n"
  },
  {
    "path": "package/hdparm/hdparm.mk",
    "content": "################################################################################\n#\n# hdparm\n#\n################################################################################\n\nHDPARM_VERSION = 9.62\nHDPARM_SITE = https://downloads.sourceforge.net/project/hdparm/hdparm\nHDPARM_LICENSE = BSD-Style\nHDPARM_LICENSE_FILES = LICENSE.TXT\n\ndefine HDPARM_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\t\tSTRIP=/bin/true\nendef\n\ndefine HDPARM_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/hdparm $(TARGET_DIR)/sbin/hdparm\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/heimdal/heimdal.hash",
    "content": "# From https://github.com/heimdal/heimdal/releases\nsha1 5dd16703be7255f66a4d65440f0c622aeeca60d9  heimdal-7.7.0.tar.gz\nsha256 f02d3314d634cc55eb9cf04a1eae0d96b293e45a1f837de9d894e800161b7d1b  heimdal-7.7.0.tar.gz\n# Locally computed\nsha256 0c4b07bf5b98f7a1d01f8e60722d6c6747ef052c2aa6d2043daf690d4e1b0a7f  LICENSE\n"
  },
  {
    "path": "package/heimdal/heimdal.mk",
    "content": "################################################################################\n#\n# heimdal\n#\n################################################################################\n\nHEIMDAL_VERSION = 7.7.0\nHEIMDAL_SITE = https://github.com/heimdal/heimdal/releases/download/heimdal-$(HEIMDAL_VERSION)\nHOST_HEIMDAL_DEPENDENCIES = host-e2fsprogs host-ncurses host-pkgconf\nHEIMDAL_INSTALL_STAGING = YES\nHEIMDAL_MAKE = $(MAKE1)\n# static because of -fPIC issues with e2fsprogs on x86_64 host\nHOST_HEIMDAL_CONF_OPTS = \\\n\t--disable-shared \\\n\t--enable-static \\\n\t--without-openldap \\\n\t--without-capng \\\n\t--with-db-type-preference= \\\n\t--without-sqlite3 \\\n\t--without-libintl \\\n\t--without-openssl \\\n\t--without-berkeley-db \\\n\t--without-readline \\\n\t--without-libedit \\\n\t--without-hesiod \\\n\t--without-x \\\n\t--disable-mdb-db \\\n\t--disable-ndbm-db \\\n\t--disable-heimdal-documentation\n\n# Don't use compile_et from e2fsprogs as it raises a build failure with samba4\nHOST_HEIMDAL_CONF_ENV = ac_cv_prog_COMPILE_ET=no MAKEINFO=true\nHEIMDAL_LICENSE = BSD-3-Clause\nHEIMDAL_LICENSE_FILES = LICENSE\nHEIMDAL_CPE_ID_VENDOR = heimdal_project\n\n# We need compile_et for samba4\ndefine HOST_HEIMDAL_INSTALL_COMPILE_ET\n\t$(INSTALL) -m 0755 $(@D)/lib/com_err/compile_et \\\n\t\t$(HOST_DIR)/bin/compile_et\nendef\n\n# We need asn1_compile in the PATH for samba4\ndefine HOST_HEIMDAL_MAKE_SYMLINK\n\tln -sf $(HOST_DIR)/libexec/heimdal/asn1_compile \\\n\t\t$(HOST_DIR)/bin/asn1_compile\nendef\n\nHOST_HEIMDAL_POST_INSTALL_HOOKS += \\\n\tHOST_HEIMDAL_INSTALL_COMPILE_ET \\\n\tHOST_HEIMDAL_MAKE_SYMLINK\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/heirloom-mailx/0001-Patched-out-SSL2-support-since-it-is-no-longer-suppo.patch",
    "content": "From: Hilko Bengen <bengen@debian.org>\nDate: Wed, 27 Apr 2011 00:18:42 +0200\nSubject: Patched out SSL2 support since it is no longer supported by OpenSSL.\n\nNow that openssl has dropped SSLv2 support we need to patch it out.\nPatch picked up from debian patchseries 5.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\n---\n mailx.1   |    2 +-\n openssl.c |    4 +---\n 2 files changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/mailx.1 b/mailx.1\nindex 417ea04..a02e430 100644\n--- a/mailx.1\n+++ b/mailx.1\n@@ -3575,7 +3575,7 @@ Only applicable if SSL/TLS support is built using OpenSSL.\n .TP\n .B ssl-method\n Selects a SSL/TLS protocol version;\n-valid values are `ssl2', `ssl3', and `tls1'.\n+valid values are `ssl3', and `tls1'.\n If unset, the method is selected automatically,\n if possible.\n .TP\ndiff --git a/openssl.c b/openssl.c\nindex b4e33fc..44fe4e5 100644\n--- a/openssl.c\n+++ b/openssl.c\n@@ -216,9 +216,7 @@ ssl_select_method(const char *uhp)\n \n \tcp = ssl_method_string(uhp);\n \tif (cp != NULL) {\n-\t\tif (equal(cp, \"ssl2\"))\n-\t\t\tmethod = SSLv2_client_method();\n-\t\telse if (equal(cp, \"ssl3\"))\n+\t\tif (equal(cp, \"ssl3\"))\n \t\t\tmethod = SSLv3_client_method();\n \t\telse if (equal(cp, \"tls1\"))\n \t\t\tmethod = TLSv1_client_method();\n"
  },
  {
    "path": "package/heirloom-mailx/0002-fix-libressl-support.patch",
    "content": "From aad28d30af6c3a74c522dd61943788e908860c84 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <aduskett@gmail.com>\nDate: Fri, 4 Aug 2017 07:22:47 -0400\nSubject: [PATCH] fix libressl support\n\nheirloom-mailx has two small issues when compiling against LibreSSL:\n  - RAND_egd is used (LibreSSL does not support RAND_egd)\n    Solution: \"Guard\" the code calling RAND_egd\n\n  - SSLv3_client_method function is used (LibreSSL does not support SSLv3)\n    Solution: \"Guard\" the code with #ifndef OPENSSL_NO_SSL3\n\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n openssl.c | 7 +++++++\n 1 file changed, 7 insertions(+)\n\ndiff --git a/openssl.c b/openssl.c\nindex 44fe4e5..c4a1bb7 100644\n--- a/openssl.c\n+++ b/openssl.c\n@@ -137,11 +137,13 @@ ssl_rand_init(void)\n \n \tif ((cp = value(\"ssl-rand-egd\")) != NULL) {\n \t\tcp = expand(cp);\n+#ifndef OPENSSL_NO_EGD\n \t\tif (RAND_egd(cp) == -1) {\n \t\t\tfprintf(stderr, catgets(catd, CATSET, 245,\n \t\t\t\t\"entropy daemon at \\\"%s\\\" not available\\n\"),\n \t\t\t\t\tcp);\n \t\t} else\n+#endif\n \t\t\tstate = 1;\n \t} else if ((cp = value(\"ssl-rand-file\")) != NULL) {\n \t\tcp = expand(cp);\n@@ -216,10 +218,15 @@ ssl_select_method(const char *uhp)\n \n \tcp = ssl_method_string(uhp);\n \tif (cp != NULL) {\n+\t\t#ifndef OPENSSL_NO_SSL3\n \t\tif (equal(cp, \"ssl3\"))\n \t\t\tmethod = SSLv3_client_method();\n \t\telse if (equal(cp, \"tls1\"))\n \t\t\tmethod = TLSv1_client_method();\n+\t\t#else\n+\t\tif (equal(cp, \"tls1\"))\n+\t\t\tmethod = TLSv1_client_method();\n+\t\t#endif\n \t\telse {\n \t\t\tfprintf(stderr, catgets(catd, CATSET, 244,\n \t\t\t\t\t\"Invalid SSL method \\\"%s\\\"\\n\"), cp);\n-- \n2.13.3\n\n"
  },
  {
    "path": "package/heirloom-mailx/Config.in",
    "content": "config BR2_PACKAGE_HEIRLOOM_MAILX\n\tbool \"heirloom-mailx\"\n\t# uses fork()\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Heirloom mailx (previously known as nail) is a mail user\n\t  agent for Unix systems.\n\n\t  It can be used as a command-line mail reader, but also more\n\t  importantly on embedded systems, as a mail composition\n\t  program and SMTP client, in order to send e-mail from shell\n\t  scripts. It supports SMTP authentication (login, plain,\n\t  cram-md5), SMTPS, MIME encoding of attachements, and more.\n\n\t  http://heirloom.sourceforge.net/mailx.html\n\ncomment \"heirloom-mailx needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/heirloom-mailx/heirloom-mailx.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/h/heirloom-mailx/heirloom-mailx_12.5-3.dsc\nsha256\t015ba4209135867f37a0245d22235a392b8bbed956913286b887c2e2a9a421ad\theirloom-mailx_12.5.orig.tar.gz\n# Locally computed\nsha256  5ddc00aed98a0cf75fc7edfd9f3aeb1e919ae0ad5e9ff55d61f643d62d802b07  COPYING\n"
  },
  {
    "path": "package/heirloom-mailx/heirloom-mailx.mk",
    "content": "################################################################################\n#\n# heirloom-mailx\n#\n################################################################################\n\nHEIRLOOM_MAILX_VERSION = 12.5\nHEIRLOOM_MAILX_SOURCE = heirloom-mailx_$(HEIRLOOM_MAILX_VERSION).orig.tar.gz\nHEIRLOOM_MAILX_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/h/heirloom-mailx\nHEIRLOOM_MAILX_LICENSE = BSD-4-Clause, Bellcore (base64), OpenVision (imap_gssapi), RSA Data Security (md5), Network Working Group (hmac), MPL-1.1 (nss)\nHEIRLOOM_MAILX_LICENSE_FILES = COPYING\nHEIRLOOM_MAILX_CPE_ID_VENDOR = heirloom\nHEIRLOOM_MAILX_CPE_ID_PRODUCT = mailx\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nHEIRLOOM_MAILX_DEPENDENCIES += openssl\nendif\n\ndefine HEIRLOOM_MAILX_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) $(SHELL) ./makeconfig)\nendef\n\nHEIRLOOM_MAILX_CFLAGS = $(TARGET_CFLAGS)\n\n# -fPIC is needed to build with NIOS2 toolchains.\nHEIRLOOM_MAILX_CFLAGS += -fPIC\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101916),y)\nHEIRLOOM_MAILX_CFLAGS += -O0\nendif\n\ndefine HEIRLOOM_MAILX_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) \\\n\t\tCFLAGS=\"$(HEIRLOOM_MAILX_CFLAGS)\" \\\n\t\t-C $(@D)\nendef\n\ndefine HEIRLOOM_MAILX_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tPREFIX=/usr \\\n\t\tUCBINSTALL=$(INSTALL) \\\n\t\tSTRIP=/bin/true \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tinstall\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/hiawatha/Config.in",
    "content": "comment \"hiawatha needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_HIAWATHA\n\tbool \"hiawatha\"\n\t# needs fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_*_4 intrisics\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Hiawatha is a webserver for Unix and has been built with\n\t  security in mind. This resulted in a highly secure\n\t  webserver, in both code and features.\n\n\t  This webserver runs on Linux, BSD, MacOS X and\n\t  Windows. Although it can run any kind of CGI / FastCGI\n\t  application, it has been optimized for usage with PHP. Most\n\t  well known PHP frameworks and CMS applications have been\n\t  tested with Hiawatha and ran without a problem. Hiawatha\n\t  supports many web and HTTP features such as CGI/FastCGI,\n\t  HTTP authentication, virtual host support, request\n\t  pipelining, keep alive connections, URL rewriting and many\n\t  more.\n\n\t  http://www.hiawatha-webserver.org/\n\nif BR2_PACKAGE_HIAWATHA\n\nconfig BR2_PACKAGE_HIAWATHA_SSL\n\tbool \"hiawatha TLS support\"\n\tselect BR2_PACKAGE_MBEDTLS\n\nendif\n"
  },
  {
    "path": "package/hiawatha/hiawatha.hash",
    "content": "# Locally calculated\nsha256  79d85d165d68dd7043bbd337f5bc7dd10d8632d68ba61d0e557f84bd687c9727  hiawatha-10.11.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  LICENSE\n"
  },
  {
    "path": "package/hiawatha/hiawatha.mk",
    "content": "################################################################################\n#\n# hiawatha\n#\n################################################################################\n\nHIAWATHA_VERSION = 10.11\nHIAWATHA_SITE = https://www.hiawatha-webserver.org/files\nHIAWATHA_DEPENDENCIES = zlib\nHIAWATHA_LICENSE = GPL-2.0\nHIAWATHA_LICENSE_FILES = LICENSE\nHIAWATHA_CPE_ID_VENDOR = hiawatha-webserver\n\nHIAWATHA_CONF_OPTS = \\\n\t-DENABLE_TOOLKIT=OFF \\\n\t-DCONFIG_DIR=/etc/hiawatha \\\n\t-DLOG_DIR=/var/log \\\n\t-DPID_DIR=/var/run \\\n\t-DWEBROOT_DIR=/var/www/hiawatha \\\n\t-DWORK_DIR=/var/lib/hiawatha\n\nifeq ($(BR2_PACKAGE_HIAWATHA_SSL),y)\nHIAWATHA_CONF_OPTS += -DUSE_SYSTEM_MBEDTLS=ON\nHIAWATHA_DEPENDENCIES += mbedtls\nelse\nHIAWATHA_CONF_OPTS += -DENABLE_TLS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBXSLT),y)\nHIAWATHA_CONF_OPTS += -DENABLE_XSLT=ON\nHIAWATHA_DEPENDENCIES += libxslt\nelse\nHIAWATHA_CONF_OPTS += -DENABLE_XSLT=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/hicolor-icon-theme/Config.in",
    "content": "config BR2_PACKAGE_HICOLOR_ICON_THEME\n\tbool \"hicolor icon theme\"\n\thelp\n\t  Freedesktop Hicolor icon theme\n\n\t  This is the fallback icon theme, which only creates the\n\t  standard directory structure for storing icons of third-party\n\t  applications (i.e. the ones not available in usual icon\n\t  themes).\n\n\t  https://www.freedesktop.org/wiki/Software/icon-theme/\n"
  },
  {
    "path": "package/hicolor-icon-theme/hicolor-icon-theme.hash",
    "content": "# Locally calculated\nsha256  317484352271d18cbbcfac3868eab798d67fff1b8402e740baa6ff41d588a9d8  hicolor-icon-theme-0.17.tar.xz\nsha256  b0a64377d4ee87b7dbcf418ce4fb33ec3b2d7081b6732890e4af06b8118c4526  COPYING\n"
  },
  {
    "path": "package/hicolor-icon-theme/hicolor-icon-theme.mk",
    "content": "################################################################################\n#\n# hicolor-icon-theme\n#\n################################################################################\n\nHICOLOR_ICON_THEME_VERSION = 0.17\nHICOLOR_ICON_THEME_SITE = http://icon-theme.freedesktop.org/releases\nHICOLOR_ICON_THEME_SOURCE = hicolor-icon-theme-$(HICOLOR_ICON_THEME_VERSION).tar.xz\nHICOLOR_ICON_THEME_LICENSE = GPL-2.0\nHICOLOR_ICON_THEME_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/hidapi/Config.in",
    "content": "config BR2_PACKAGE_HIDAPI\n\tbool \"hidapi\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBGUDEV\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\t# runtime UTF conversion support\n\tselect BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY if BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  HIDAPI is a multi-platform library which allows an application\n\t  to interface with USB and Bluetooth HID-Class devices on\n\t  Windows, Linux, and Mac OS X.\n\n\t  http://github.com/libusb/hidapi/\n\ncomment \"hidapi needs udev /dev management and a toolchain w/ NPTL, threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\t!BR2_PACKAGE_HAS_UDEV || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/hidapi/hidapi.hash",
    "content": "# Locally calculated\nsha256  391d8e52f2d6a5cf76e2b0c079cfefe25497ba1d4659131297081fc0cd744632  hidapi-0.11.0.tar.gz\nsha256  7d3b087c34f35d4d538e3bcddd1ff8f66e92f9ef336881999482800ddf840913  LICENSE.txt\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE-gpl3.txt\nsha256  30eb1bef29b46f8ba7ab8b416035dbd93cb034a45481dd97815b944284582cd2  LICENSE-bsd.txt\nsha256  fb5436aa63d1b71a8dfbf74ecaf1a5b4e1ec4df7f80074d11fec99284f69ca5f  LICENSE-orig.txt\n"
  },
  {
    "path": "package/hidapi/hidapi.mk",
    "content": "################################################################################\n#\n# hidapi\n#\n################################################################################\n\nHIDAPI_VERSION = 0.11.0\nHIDAPI_SITE = $(call github,libusb,hidapi,hidapi-$(HIDAPI_VERSION))\nHIDAPI_INSTALL_STAGING = YES\n# No configure provided, so we need to autoreconf.\nHIDAPI_AUTORECONF = YES\nHIDAPI_LICENSE = GPL-3.0 or BSD-3-Clause or HIDAPI license\nHIDAPI_LICENSE_FILES = LICENSE.txt LICENSE-gpl3.txt LICENSE-bsd.txt LICENSE-orig.txt\n\nHIDAPI_DEPENDENCIES = libusb libgudev\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nHIDAPI_DEPENDENCIES += libiconv\nHIDAPI_CONF_ENV += LIBS=\"-liconv\"\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/hiredis/0001-CMakeLists.txt-do-not-force-SHARED.patch",
    "content": "From 0ce382c275b087e866517c003e565f8cc4855bdd Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 29 Aug 2020 23:19:26 +0200\nSubject: [PATCH] CMakeLists.txt: do not force SHARED\n\nAllow the user to build static libraries by removing SHARED from\nADD_LIBRARY calls.\n\nHere is an extract of\nhttps://cmake.org/cmake/help/latest/command/add_library.html:\n\n\"If no type is given explicitly the type is STATIC or SHARED based on\nwhether the current value of the variable BUILD_SHARED_LIBS is ON.\"\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: probably not upstreamable as is because it will\nconflict with https://github.com/redis/hiredis/pull/851. So, this patch\nwill probably have to be reworked for 1.0.x]\n---\n CMakeLists.txt | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 1beccc6..fed79fd 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -40,7 +40,7 @@ IF(WIN32)\n     ADD_COMPILE_DEFINITIONS(_CRT_SECURE_NO_WARNINGS WIN32_LEAN_AND_MEAN)\n ENDIF()\n \n-ADD_LIBRARY(hiredis SHARED ${hiredis_sources})\n+ADD_LIBRARY(hiredis ${hiredis_sources})\n \n SET_TARGET_PROPERTIES(hiredis\n     PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE\n@@ -97,7 +97,7 @@ IF(ENABLE_SSL)\n     FIND_PACKAGE(OpenSSL REQUIRED)\n     SET(hiredis_ssl_sources\n         ssl.c)\n-    ADD_LIBRARY(hiredis_ssl SHARED\n+    ADD_LIBRARY(hiredis_ssl\n             ${hiredis_ssl_sources})\n \n     IF (APPLE)\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/hiredis/0002-CMakeLists.txt-allow-building-without-a-C-compiler.patch",
    "content": "From bb4a8937411a9e6ac2e5c12c0e7eeaa7dab251ba Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 5 Sep 2020 12:54:21 +0200\nSubject: [PATCH] CMakeLists.txt: allow building without a C++ compiler\n\nDefine hiredis as a C project (and use a single PROJECT statement) to\navoid the following build failure if a C++ compiler is not found:\n\nCMake Error at CMakeLists.txt:3 (PROJECT):\n  The CMAKE_CXX_COMPILER:\n\n    /srv/storage/autobuild/run/instance-1/output-1/host/bin/arm-linux-g++\n\n  is not a full path to an existing compiler tool.\n\n  Tell CMake where to find the compiler by setting either the environment\n  variable \"CXX\" or the CMake cache entry CMAKE_CXX_COMPILER to the full path\n  to the compiler, or to the compiler name if it is in the PATH.\n\nThe only cpp source file is examples/example-qt.cpp which is never\ncompiled with cmake buildsystem. This file is compiled only with the\nMakefile buildsystem so perhaps it should be removed. If it is added to\nthe cmake buildsystem, a call to enable_language(CXX) will have to be\nadded.\n\nFixes:\n - http://autobuild.buildroot.org/results/830ec3398cd29b9fc5cde06a225ef531d7a9d850\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/redis/hiredis/pull/872]\n---\n CMakeLists.txt | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 4cbd438..9d65b7f 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -1,6 +1,5 @@\n CMAKE_MINIMUM_REQUIRED(VERSION 3.4.0)\n INCLUDE(GNUInstallDirs)\n-PROJECT(hiredis)\n \n OPTION(ENABLE_SSL \"Build hiredis_ssl for SSL support\" OFF)\n OPTION(DISABLE_TESTS \"If tests should be compiled or not\" OFF)\n@@ -20,7 +19,7 @@ getVersionBit(HIREDIS_SONAME)\n SET(VERSION \"${HIREDIS_MAJOR}.${HIREDIS_MINOR}.${HIREDIS_PATCH}\")\n MESSAGE(\"Detected version: ${VERSION}\")\n \n-PROJECT(hiredis VERSION \"${VERSION}\")\n+PROJECT(hiredis LANGUAGES \"C\" VERSION \"${VERSION}\")\n \n # Hiredis requires C99\n SET(CMAKE_C_STANDARD 99)\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/hiredis/0003-Explicitly-set-c99-in-CMake.patch",
    "content": "From 13a35bdb64615e381c5e1151cdd4e78bba71a6db Mon Sep 17 00:00:00 2001\nFrom: michael-grunder <michael.grunder@gmail.com>\nDate: Fri, 28 Aug 2020 12:35:01 -0700\nSubject: [PATCH] Explicitly set c99 in CMake\n\nSee #869\n\n[Retrieved from:\nhttps://github.com/redis/hiredis/commit/13a35bdb64615e381c5e1151cdd4e78bba71a6db]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n CMakeLists.txt | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 1beccc69a..4cbd438d7 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -22,6 +22,9 @@ MESSAGE(\"Detected version: ${VERSION}\")\n \n PROJECT(hiredis VERSION \"${VERSION}\")\n \n+# Hiredis requires C99\n+SET(CMAKE_C_STANDARD 99)\n+\n SET(ENABLE_EXAMPLES OFF CACHE BOOL \"Enable building hiredis examples\")\n \n SET(hiredis_sources\n"
  },
  {
    "path": "package/hiredis/Config.in",
    "content": "config BR2_PACKAGE_HIREDIS\n\tbool \"hiredis\"\n\thelp\n\t  Minimalistic C client for Redis >= 1.2\n\n\t  It is minimalistic because it just adds minimal support for\n\t  the protocol, but at the same time it uses a high level\n\t  printf-alike API in order to make it much higher level than\n\t  otherwise suggested by its minimal code base and the lack of\n\t  explicit bindings for every Redis command.\n\n\t  https://github.com/redis/hiredis\n"
  },
  {
    "path": "package/hiredis/hiredis.hash",
    "content": "# Locally computed:\nsha256  e0ab696e2f07deb4252dda45b703d09854e53b9703c7d52182ce5a22616c3819  hiredis-1.0.2.tar.gz\nsha256  dca05ce8fc87a8261783b4aed0deef8becc9350b6aa770bc714d0c1833b896eb  COPYING\n"
  },
  {
    "path": "package/hiredis/hiredis.mk",
    "content": "################################################################################\n#\n# hiredis\n#\n################################################################################\n\nHIREDIS_VERSION_MAJOR = 1.0\nHIREDIS_VERSION = $(HIREDIS_VERSION_MAJOR).2\nHIREDIS_SITE = $(call github,redis,hiredis,v$(HIREDIS_VERSION))\nHIREDIS_LICENSE = BSD-3-Clause\nHIREDIS_LICENSE_FILES = COPYING\nHIREDIS_CPE_ID_VENDOR = redislabs\nHIREDIS_INSTALL_STAGING = YES\nHIREDIS_CONF_OPTS = -DDISABLE_TESTS=ON\n\nifeq ($(BR2_PACKAGE_OPENSSL)$(BR2_TOOLCHAIN_HAS_THREADS),yy)\nHIREDIS_CONF_OPTS += -DENABLE_SSL=ON\nHIREDIS_DEPENDENCIES += openssl\nelse\nHIREDIS_CONF_OPTS += -DENABLE_SSL=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/hostapd/0001-AP-Silently-ignore-management-frame-from-unexpected-.patch",
    "content": "From 8c07fa9eda13e835f3f968b2e1c9a8be3a851ff9 Mon Sep 17 00:00:00 2001\nFrom: Jouni Malinen <j@w1.fi>\nDate: Thu, 29 Aug 2019 11:52:04 +0300\nSubject: [PATCH] AP: Silently ignore management frame from unexpected source\n address\n\nDo not process any received Management frames with unexpected/invalid SA\nso that we do not add any state for unexpected STA addresses or end up\nsending out frames to unexpected destination. This prevents unexpected\nsequences where an unprotected frame might end up causing the AP to send\nout a response to another device and that other device processing the\nunexpected response.\n\nIn particular, this prevents some potential denial of service cases\nwhere the unexpected response frame from the AP might result in a\nconnected station dropping its association.\n\nSigned-off-by: Jouni Malinen <j@w1.fi>\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://w1.fi/security/2019-7/0001-AP-Silently-ignore-management-frame-from-unexpected-.patch]\n---\n src/ap/drv_callbacks.c | 13 +++++++++++++\n src/ap/ieee802_11.c    | 12 ++++++++++++\n 2 files changed, 25 insertions(+)\n\ndiff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c\nindex 31587685fe3b..34ca379edc3d 100644\n--- a/src/ap/drv_callbacks.c\n+++ b/src/ap/drv_callbacks.c\n@@ -131,6 +131,19 @@ int hostapd_notif_assoc(struct hostapd_data *hapd, const u8 *addr,\n \t\t\t   \"hostapd_notif_assoc: Skip event with no address\");\n \t\treturn -1;\n \t}\n+\n+\tif (is_multicast_ether_addr(addr) ||\n+\t    is_zero_ether_addr(addr) ||\n+\t    os_memcmp(addr, hapd->own_addr, ETH_ALEN) == 0) {\n+\t\t/* Do not process any frames with unexpected/invalid SA so that\n+\t\t * we do not add any state for unexpected STA addresses or end\n+\t\t * up sending out frames to unexpected destination. */\n+\t\twpa_printf(MSG_DEBUG, \"%s: Invalid SA=\" MACSTR\n+\t\t\t   \" in received indication - ignore this indication silently\",\n+\t\t\t   __func__, MAC2STR(addr));\n+\t\treturn 0;\n+\t}\n+\n \trandom_add_randomness(addr, ETH_ALEN);\n \n \thostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,\ndiff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c\nindex c85a28db44b7..e7065372e158 100644\n--- a/src/ap/ieee802_11.c\n+++ b/src/ap/ieee802_11.c\n@@ -4626,6 +4626,18 @@ int ieee802_11_mgmt(struct hostapd_data *hapd, const u8 *buf, size_t len,\n \tfc = le_to_host16(mgmt->frame_control);\n \tstype = WLAN_FC_GET_STYPE(fc);\n \n+\tif (is_multicast_ether_addr(mgmt->sa) ||\n+\t    is_zero_ether_addr(mgmt->sa) ||\n+\t    os_memcmp(mgmt->sa, hapd->own_addr, ETH_ALEN) == 0) {\n+\t\t/* Do not process any frames with unexpected/invalid SA so that\n+\t\t * we do not add any state for unexpected STA addresses or end\n+\t\t * up sending out frames to unexpected destination. */\n+\t\twpa_printf(MSG_DEBUG, \"MGMT: Invalid SA=\" MACSTR\n+\t\t\t   \" in received frame - ignore this frame silently\",\n+\t\t\t   MAC2STR(mgmt->sa));\n+\t\treturn 0;\n+\t}\n+\n \tif (stype == WLAN_FC_STYPE_BEACON) {\n \t\thandle_beacon(hapd, mgmt, len, fi);\n \t\treturn 1;\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/hostapd/0002-ASN.1-Validate-DigestAlgorithmIdentifier-parameters.patch",
    "content": "From a0541334a6394f8237a4393b7372693cd7e96f15 Mon Sep 17 00:00:00 2001\nFrom: Jouni Malinen <j@w1.fi>\nDate: Sat, 13 Mar 2021 18:19:31 +0200\nSubject: [PATCH] ASN.1: Validate DigestAlgorithmIdentifier parameters\n\nThe supported hash algorithms do not use AlgorithmIdentifier parameters.\nHowever, there are implementations that include NULL parameters in\naddition to ones that omit the parameters. Previous implementation did\nnot check the parameters value at all which supported both these cases,\nbut did not reject any other unexpected information.\n\nUse strict validation of digest algorithm parameters and reject any\nunexpected value when validating a signature. This is needed to prevent\npotential forging attacks.\n\nSigned-off-by: Jouni Malinen <j@w1.fi>\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n src/tls/pkcs1.c  | 21 +++++++++++++++++++++\n src/tls/x509v3.c | 20 ++++++++++++++++++++\n 2 files changed, 41 insertions(+)\n\ndiff --git a/src/tls/pkcs1.c b/src/tls/pkcs1.c\nindex bbdb0d72d..5761dfed0 100644\n--- a/src/tls/pkcs1.c\n+++ b/src/tls/pkcs1.c\n@@ -244,6 +244,8 @@ int pkcs1_v15_sig_ver(struct crypto_public_key *pk,\n \t\tos_free(decrypted);\n \t\treturn -1;\n \t}\n+\twpa_hexdump(MSG_MSGDUMP, \"PKCS #1: DigestInfo\",\n+\t\t    hdr.payload, hdr.length);\n \n \tpos = hdr.payload;\n \tend = pos + hdr.length;\n@@ -265,6 +267,8 @@ int pkcs1_v15_sig_ver(struct crypto_public_key *pk,\n \t\tos_free(decrypted);\n \t\treturn -1;\n \t}\n+\twpa_hexdump(MSG_MSGDUMP, \"PKCS #1: DigestAlgorithmIdentifier\",\n+\t\t    hdr.payload, hdr.length);\n \tda_end = hdr.payload + hdr.length;\n \n \tif (asn1_get_oid(hdr.payload, hdr.length, &oid, &next)) {\n@@ -273,6 +277,23 @@ int pkcs1_v15_sig_ver(struct crypto_public_key *pk,\n \t\tos_free(decrypted);\n \t\treturn -1;\n \t}\n+\twpa_hexdump(MSG_MSGDUMP, \"PKCS #1: Digest algorithm parameters\",\n+\t\t    next, da_end - next);\n+\n+\t/*\n+\t * RFC 5754: The correct encoding for the SHA2 algorithms would be to\n+\t * omit the parameters, but there are implementation that encode these\n+\t * as a NULL element. Allow these two cases and reject anything else.\n+\t */\n+\tif (da_end > next &&\n+\t    (asn1_get_next(next, da_end - next, &hdr) < 0 ||\n+\t     !asn1_is_null(&hdr) ||\n+\t     hdr.payload + hdr.length != da_end)) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"PKCS #1: Unexpected digest algorithm parameters\");\n+\t\tos_free(decrypted);\n+\t\treturn -1;\n+\t}\n \n \tif (!asn1_oid_equal(&oid, hash_alg)) {\n \t\tchar txt[100], txt2[100];\ndiff --git a/src/tls/x509v3.c b/src/tls/x509v3.c\nindex a8944dd2f..df337ec4d 100644\n--- a/src/tls/x509v3.c\n+++ b/src/tls/x509v3.c\n@@ -1964,6 +1964,7 @@ int x509_check_signature(struct x509_certificate *issuer,\n \t\tos_free(data);\n \t\treturn -1;\n \t}\n+\twpa_hexdump(MSG_MSGDUMP, \"X509: DigestInfo\", hdr.payload, hdr.length);\n \n \tpos = hdr.payload;\n \tend = pos + hdr.length;\n@@ -1985,6 +1986,8 @@ int x509_check_signature(struct x509_certificate *issuer,\n \t\tos_free(data);\n \t\treturn -1;\n \t}\n+\twpa_hexdump(MSG_MSGDUMP, \"X509: DigestAlgorithmIdentifier\",\n+\t\t    hdr.payload, hdr.length);\n \tda_end = hdr.payload + hdr.length;\n \n \tif (asn1_get_oid(hdr.payload, hdr.length, &oid, &next)) {\n@@ -1992,6 +1995,23 @@ int x509_check_signature(struct x509_certificate *issuer,\n \t\tos_free(data);\n \t\treturn -1;\n \t}\n+\twpa_hexdump(MSG_MSGDUMP, \"X509: Digest algorithm parameters\",\n+\t\t    next, da_end - next);\n+\n+\t/*\n+\t * RFC 5754: The correct encoding for the SHA2 algorithms would be to\n+\t * omit the parameters, but there are implementation that encode these\n+\t * as a NULL element. Allow these two cases and reject anything else.\n+\t */\n+\tif (da_end > next &&\n+\t    (asn1_get_next(next, da_end - next, &hdr) < 0 ||\n+\t     !asn1_is_null(&hdr) ||\n+\t     hdr.payload + hdr.length != da_end)) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"X509: Unexpected digest algorithm parameters\");\n+\t\tos_free(data);\n+\t\treturn -1;\n+\t}\n \n \tif (x509_sha1_oid(&oid)) {\n \t\tif (signature->oid.oid[6] != 5 /* sha-1WithRSAEncryption */) {\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/hostapd/0003-Include-stdbool.h-to-allow-C99-bool-to-be-used.patch",
    "content": "From 99cf89555313056d3a8fa54b21d02dc880b363e1 Mon Sep 17 00:00:00 2001\nFrom: Jouni Malinen <jouni@codeaurora.org>\nDate: Mon, 20 Apr 2020 20:29:31 +0300\nSubject: [PATCH] Include stdbool.h to allow C99 bool to be used\n\nWe have practically started requiring some C99 features, so might as\nwell finally go ahead and bring in the C99 bool as well.\n\nSigned-off-by: Jouni Malinen <jouni@codeaurora.org>\n[geomatsi@gmail.com: backport from upstream]\nSigned-off-by: Sergey Matyukevich <geomatsi@gmail.com>\n[yann.morin.1998@free.fr: keep upstream sha1 in header, drop numbering]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n src/utils/includes.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/utils/includes.h b/src/utils/includes.h\nindex 75513fc8c..741fc9c14 100644\n--- a/src/utils/includes.h\n+++ b/src/utils/includes.h\n@@ -18,6 +18,7 @@\n \n #include <stdlib.h>\n #include <stddef.h>\n+#include <stdbool.h>\n #include <stdio.h>\n #include <stdarg.h>\n #include <string.h>\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/hostapd/0004-ASN.1-Add-helper-functions-for-recognizing-tag-value.patch",
    "content": "From 9a990e8c4eb92dd64e0ec483599820e45c35ac23 Mon Sep 17 00:00:00 2001\nFrom: Jouni Malinen <j@w1.fi>\nDate: Sat, 13 Mar 2021 23:14:23 +0200\nSubject: [PATCH] ASN.1: Add helper functions for recognizing tag values\n\nSigned-off-by: Jouni Malinen <j@w1.fi>\n[geomatsi@gmail.com: backport asn1_is_null() from upstream 9a990e8c4eb9]\nSigned-off-by: Sergey Matyukevich <geomatsi@gmail.com>\n[yann.morin.1998@free.fr: \n  - reformat, keep the upstream sha1 and title,\n  - drop numbering\n]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n src/tls/asn1.h | 102 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 file changed, 102 insertions(+)\n\ndiff --git a/src/tls/asn1.h b/src/tls/asn1.h\nindex de3430adb..a4d1be473 100644\n--- a/src/tls/asn1.h\n+++ b/src/tls/asn1.h\n@@ -66,6 +66,12 @@ struct wpabuf * asn1_build_alg_id(const struct asn1_oid *oid,\n unsigned long asn1_bit_string_to_long(const u8 *buf, size_t len);\n int asn1_oid_equal(const struct asn1_oid *a, const struct asn1_oid *b);\n \n+static inline bool asn1_is_null(const struct asn1_hdr *hdr)\n+{\n+\treturn hdr->class == ASN1_CLASS_UNIVERSAL &&\n+\t\thdr->tag == ASN1_TAG_NULL;\n+}\n+\n extern struct asn1_oid asn1_sha1_oid;\n extern struct asn1_oid asn1_sha256_oid;\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/hostapd/Config.in",
    "content": "config BR2_PACKAGE_HOSTAPD\n\tbool \"hostapd\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  User space daemon for wireless access points.\n\n\t  It implements IEEE 802.11 access point management,\n\t  IEEE 802.1X/WPA/WPA2/EAP authenticators, RADIUS client,\n\t  EAP server and RADIUS authentication server.\n\n\t  http://w1.fi/hostapd/\n\nif BR2_PACKAGE_HOSTAPD\n\nconfig BR2_PACKAGE_HOSTAPD_DRIVER_HOSTAP\n\tbool \"Enable hostap driver\"\n\tdefault y\n\tselect BR2_PACKAGE_HOSTAPD_HAS_WIFI_DRIVERS\n\thelp\n\t  Enable support for Host AP driver.\n\nconfig BR2_PACKAGE_HOSTAPD_DRIVER_NL80211\n\tbool \"Enable nl80211 driver\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tselect BR2_PACKAGE_LIBNL\n\tselect BR2_PACKAGE_HOSTAPD_HAS_WIFI_DRIVERS\n\thelp\n\t  Enable support for drivers using the nl80211 kernel interface.\n\ncomment \"nl80211 driver needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_HOSTAPD_DRIVER_WIRED\n\tbool \"Enable wired driver\"\n\thelp\n\t  Enable support for wired authenticator.\n\nconfig BR2_PACKAGE_HOSTAPD_DRIVER_NONE\n\tbool\n\tdefault y\n\tdepends on !BR2_PACKAGE_HOSTAPD_DRIVER_HOSTAP\n\tdepends on !BR2_PACKAGE_HOSTAPD_DRIVER_NL80211\n\tdepends on !BR2_PACKAGE_HOSTAPD_DRIVER_WIRED\n\nconfig BR2_PACKAGE_HOSTAPD_HAS_WIFI_DRIVERS\n\tbool\n\nconfig BR2_PACKAGE_HOSTAPD_ACS\n\tbool \"Enable ACS\"\n\tdefault y\n\tdepends on BR2_PACKAGE_HOSTAPD_DRIVER_NL80211\n\thelp\n\t  Enable support for standard ACS (Automatic Channel Selection).\n\t  Some propietary drivers use a custom algorithm which requires\n\t  channel to be set to '0' (which enables ACS in the config),\n\t  causing hostapd to use the standard one which doesn't work\n\t  for those cases.\n\ncomment \"ACS is currently only supported through the nl80211 driver\"\n\tdepends on !BR2_PACKAGE_HOSTAPD_DRIVER_NL80211\n\nconfig BR2_PACKAGE_HOSTAPD_EAP\n\tbool \"Enable EAP\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Enable support for EAP and RADIUS.\n\ncomment \"hostapd EAP needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_HOSTAPD_WPS\n\tbool \"Enable WPS\"\n\thelp\n\t  Enable support for Wi-Fi Protected Setup.\n\nconfig BR2_PACKAGE_HOSTAPD_WPA3\n\tbool \"Enable WPA3 support\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL\n\thelp\n\t  Enable WPA3 support including OWE, SAE, DPP\n\nconfig BR2_PACKAGE_HOSTAPD_VLAN\n\tbool \"Enable VLAN support\"\n\tdefault y\n\thelp\n\t  Enable support for VLANs.\n\nif BR2_PACKAGE_HOSTAPD_VLAN\n\nconfig BR2_PACKAGE_HOSTAPD_VLAN_DYNAMIC\n\tbool \"Enable dynamic VLAN support\"\n\tdefault y\n\thelp\n\t  Enable support for fully dynamic VLANs.\n\t  This enables hostapd to automatically create\n\t  bridge and VLAN interfaces if necessary.\n\nconfig BR2_PACKAGE_HOSTAPD_VLAN_NETLINK\n\tbool \"Use netlink-based API for VLAN operations\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tselect BR2_PACKAGE_LIBNL\n\thelp\n\t  Use netlink-based kernel API for VLAN operations\n\t  instead of ioctl().\n\ncomment \"netlink-based VLAN support needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nendif # BR2_PACKAGE_HOSTAPD_VLAN\n\nendif\n"
  },
  {
    "path": "package/hostapd/hostapd.hash",
    "content": "# Locally calculated\nsha256  881d7d6a90b2428479288d64233151448f8990ab4958e0ecaca7eeb3c9db2bd7  hostapd-2.9.tar.gz\nsha256  2d9a5b9d616f1b4aa4a22b967cee866e2f69b798b0b46803a7928c8559842bd7  0001-WPS-UPnP-Do-not-allow-event-subscriptions-with-URLs-.patch\nsha256  49feb35a5276279b465f6836d6fa2c6b34d94dc979e8b840d1918865c04260de  0002-WPS-UPnP-Fix-event-message-generation-using-a-long-U.patch\nsha256  a8212a2d89a5bab2824d22b6047e7740553df163114fcec94832bfa9c5c5d78a  0003-WPS-UPnP-Handle-HTTP-initiation-failures-for-events-.patch\nsha256  7f40cfec5faf5e927ea9028ab9392cd118685bde7229ad24210caf0a8f6e9611  0001-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch\nsha256  9da5dd0776da266b180b915e460ff75c6ff729aca1196ab396529510f24f3761  README\n"
  },
  {
    "path": "package/hostapd/hostapd.mk",
    "content": "################################################################################\n#\n# hostapd\n#\n################################################################################\n\nHOSTAPD_VERSION = 2.9\nHOSTAPD_SITE = http://w1.fi/releases\nHOSTAPD_SUBDIR = hostapd\nHOSTAPD_CONFIG = $(HOSTAPD_DIR)/$(HOSTAPD_SUBDIR)/.config\nHOSTAPD_PATCH = \\\n\thttps://w1.fi/security/2020-1/0001-WPS-UPnP-Do-not-allow-event-subscriptions-with-URLs-.patch \\\n\thttps://w1.fi/security/2020-1/0002-WPS-UPnP-Fix-event-message-generation-using-a-long-U.patch \\\n\thttps://w1.fi/security/2020-1/0003-WPS-UPnP-Handle-HTTP-initiation-failures-for-events-.patch \\\n\thttps://w1.fi/security/2021-1/0001-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch\nHOSTAPD_DEPENDENCIES = host-pkgconf\nHOSTAPD_CFLAGS = $(TARGET_CFLAGS)\nHOSTAPD_LICENSE = BSD-3-Clause\nHOSTAPD_LICENSE_FILES = README\n\n# 0001-AP-Silently-ignore-management-frame-from-unexpected-.patch\nHOSTAPD_IGNORE_CVES += CVE-2019-16275\n\n# 0001-WPS-UPnP-Do-not-allow-event-subscriptions-with-URLs-.patch\nHOSTAPD_IGNORE_CVES += CVE-2020-12695\n\n# 0002-ASN.1-Validate-DigestAlgorithmIdentifier-parameters.patch\nHOSTAPD_IGNORE_CVES += CVE-2021-30004\n\n# 0001-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch\nHOSTAPD_IGNORE_CVES += CVE-2021-27803\n\nHOSTAPD_CPE_ID_VENDOR = w1.fi\nHOSTAPD_SELINUX_MODULES = hostapd\nHOSTAPD_CONFIG_SET =\n\nHOSTAPD_CONFIG_ENABLE = \\\n\tCONFIG_INTERNAL_LIBTOMMATH \\\n\tCONFIG_DEBUG_FILE \\\n\tCONFIG_DEBUG_SYSLOG\n\nHOSTAPD_CONFIG_DISABLE =\n\n# Try to use openssl if it's already available\nifeq ($(BR2_PACKAGE_LIBOPENSSL),y)\nHOSTAPD_DEPENDENCIES += host-pkgconf libopenssl\nHOSTAPD_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nHOSTAPD_CONFIG_EDITS += 's/\\#\\(CONFIG_TLS=openssl\\)/\\1/'\nelse\nHOSTAPD_CONFIG_DISABLE += CONFIG_EAP_PWD CONFIG_EAP_TEAP\nHOSTAPD_CONFIG_EDITS += 's/\\#\\(CONFIG_TLS=\\).*/\\1internal/'\nendif\n\nifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_HOSTAP),)\nHOSTAPD_CONFIG_DISABLE += CONFIG_DRIVER_HOSTAP\nendif\n\nifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_NL80211),)\nHOSTAPD_CONFIG_DISABLE += CONFIG_DRIVER_NL80211\nendif\n\nifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_WIRED),y)\nHOSTAPD_CONFIG_ENABLE += CONFIG_DRIVER_WIRED\nendif\n\nifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_NONE),y)\nHOSTAPD_CONFIG_ENABLE += CONFIG_DRIVER_NONE\nendif\n\n# Add options for wireless drivers\nifeq ($(BR2_PACKAGE_HOSTAPD_HAS_WIFI_DRIVERS),y)\nHOSTAPD_CONFIG_ENABLE += \\\n\tCONFIG_HS20 \\\n\tCONFIG_IEEE80211AC \\\n\tCONFIG_IEEE80211N \\\n\tCONFIG_IEEE80211R \\\n\tCONFIG_INTERWORKING\nendif\n\nifeq ($(BR2_PACKAGE_HOSTAPD_ACS),y)\nHOSTAPD_CONFIG_ENABLE += CONFIG_ACS\nendif\n\nifeq ($(BR2_PACKAGE_HOSTAPD_EAP),y)\nHOSTAPD_CONFIG_ENABLE += \\\n\tCONFIG_EAP \\\n\tCONFIG_RADIUS_SERVER\n\n# Enable both TLS v1.1 (CONFIG_TLSV11) and v1.2 (CONFIG_TLSV12)\nHOSTAPD_CONFIG_ENABLE += CONFIG_TLSV1\nelse\nHOSTAPD_CONFIG_DISABLE += CONFIG_EAP\nHOSTAPD_CONFIG_ENABLE += \\\n\tCONFIG_NO_ACCOUNTING \\\n\tCONFIG_NO_RADIUS\nendif\n\nifeq ($(BR2_PACKAGE_HOSTAPD_WPS),y)\nHOSTAPD_CONFIG_ENABLE += CONFIG_WPS\nendif\n\nifeq ($(BR2_PACKAGE_HOSTAPD_WPA3),y)\nHOSTAPD_CONFIG_SET += \\\n\tCONFIG_DPP \\\n\tCONFIG_SAE\nHOSTAPD_CONFIG_ENABLE += \\\n\tCONFIG_OWE\nelse\nHOSTAPD_CONFIG_DISABLE += \\\n\tCONFIG_OWE\nendif\n\nifeq ($(BR2_PACKAGE_HOSTAPD_VLAN),)\nHOSTAPD_CONFIG_ENABLE += CONFIG_NO_VLAN\nendif\n\nifeq ($(BR2_PACKAGE_HOSTAPD_VLAN_DYNAMIC),y)\nHOSTAPD_CONFIG_ENABLE += CONFIG_FULL_DYNAMIC_VLAN\nHOSTAPD_CONFIG_SET += NEED_LINUX_IOCTL\nendif\n\nifeq ($(BR2_PACKAGE_HOSTAPD_VLAN_NETLINK),y)\nHOSTAPD_CONFIG_ENABLE += CONFIG_VLAN_NETLINK\nendif\n\n# Options for building with libnl\nifeq ($(BR2_PACKAGE_LIBNL),y)\nHOSTAPD_DEPENDENCIES += libnl\nHOSTAPD_CFLAGS += -I$(STAGING_DIR)/usr/include/libnl3/\nHOSTAPD_CONFIG_ENABLE += CONFIG_LIBNL32\n# libnl-3 needs -lm (for rint) and -lpthread if linking statically\n# And library order matters hence stick -lnl-3 first since it's appended\n# in the hostapd Makefiles as in LIBS+=-lnl-3 ... thus failing\nifeq ($(BR2_STATIC_LIBS),y)\nHOSTAPD_LIBS += -lnl-3 -lm -lpthread\nendif\nendif\n\ndefine HOSTAPD_CONFIGURE_CMDS\n\tcp $(@D)/hostapd/defconfig $(HOSTAPD_CONFIG)\n\tsed -i $(patsubst %,-e 's/^#\\(%\\)/\\1/',$(HOSTAPD_CONFIG_ENABLE)) \\\n\t\t$(patsubst %,-e 's/^\\(%\\)/#\\1/',$(HOSTAPD_CONFIG_DISABLE)) \\\n\t\t$(patsubst %,-e '1i%=y',$(HOSTAPD_CONFIG_SET)) \\\n\t\t$(patsubst %,-e %,$(HOSTAPD_CONFIG_EDITS)) \\\n\t\t$(HOSTAPD_CONFIG)\nendef\n\ndefine HOSTAPD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) CFLAGS=\"$(HOSTAPD_CFLAGS)\" \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS)\" LIBS=\"$(HOSTAPD_LIBS)\" \\\n\t\t$(MAKE) CC=\"$(TARGET_CC)\" -C $(@D)/$(HOSTAPD_SUBDIR)\nendef\n\ndefine HOSTAPD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/$(HOSTAPD_SUBDIR)/hostapd \\\n\t\t$(TARGET_DIR)/usr/sbin/hostapd\n\t$(INSTALL) -m 0755 -D $(@D)/$(HOSTAPD_SUBDIR)/hostapd_cli \\\n\t\t$(TARGET_DIR)/usr/bin/hostapd_cli\n\t$(INSTALL) -m 0644 -D $(@D)/$(HOSTAPD_SUBDIR)/hostapd.conf \\\n\t\t$(TARGET_DIR)/etc/hostapd.conf\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/hplip/0001-build-use-pkg-config-to-discover-libusb.patch",
    "content": "From 1eed2b65eff4c66b80eab0ec46c6705de19bdb9d Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Thu, 21 Jan 2016 23:54:03 +0100\nSubject: [PATCH] build: use pkg-config to discover libusb\n\nThis allows to remove hardcoded paths to libusb headers.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n Makefile.am  | 4 ++--\n configure.in | 3 +--\n 2 files changed, 3 insertions(+), 4 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 73fed2e..3a4e899 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -92,8 +92,8 @@ libhpmud_la_SOURCES += io/hpmud/musb_libusb01.c\n libhpmud_la_LDFLAGS += -lusb\n else\n libhpmud_la_SOURCES += io/hpmud/musb.c \n-libhpmud_la_CFLAGS  += -I/usr/include/libusb-1.0\n-libhpmud_la_LDFLAGS += -lusb-1.0\n+libhpmud_la_CFLAGS  += $(LIBUSB_CFLAGS)\n+libhpmud_la_LDFLAGS += $(LIBUSB_LIBS)\n endif\n \n if NETWORK_BUILD\ndiff --git a/configure.in b/configure.in\nindex 3706645..8b06428 100755\n--- a/configure.in\n+++ b/configure.in\n@@ -542,8 +542,7 @@ if test \"$hpijs_only_build\" = \"no\" && test \"$hpcups_only_build\" = \"no\"; then\n       AC_CHECK_LIB([usb], [usb_init], [LIBS=\"$LIBS\"], [AC_MSG_ERROR([cannot find libusb support], 2)])\n       AC_CHECK_HEADERS(usb.h, ,[AC_MSG_ERROR([cannot find libusb-devel support], 11)])\n    else\n-      AC_CHECK_LIB([usb-1.0], [libusb_init], [LIBS=\"$LIBS\"], [AC_MSG_ERROR([cannot find libusb 1.0 support], 2)])\n-      AC_CHECK_HEADERS(libusb-1.0/libusb.h, ,[AC_MSG_ERROR([cannot find libusb-1.0-devel support], 11)])\n+      PKG_CHECK_MODULES([LIBUSB], [libusb-1.0])\n    fi\n fi\n \n-- \n2.6.4\n\n"
  },
  {
    "path": "package/hplip/0002-configure.in-fix-AM_INIT_AUTOMAKE-call.patch",
    "content": "From a2de7e834417de68db10dc6f09d5810b06e6cbc8 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Thu, 21 Jan 2016 23:54:50 +0100\nSubject: [PATCH] configure.in: fix AM_INIT_AUTOMAKE call\n\nUncomment the appropriate call to AM_INIT_AUTOMAKE so that the\n\"foreign\" option is passed, which avoids the need for creating various\nunneeded files when autoreconfiguring.\n\nAdd the subdir-objects options since the main Makefile.am references\nfiles in subdirectories. This allows to silence a huge amount of\nwarning when autoreconfiguring.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.in | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/configure.in b/configure.in\nindex 8b06428..680cad5 100755\n--- a/configure.in\n+++ b/configure.in\n@@ -27,8 +27,7 @@\n \n #AC_PREREQ(2.59)\n AC_INIT([HP Linux Imaging and Printing], [3.17.10], [3.17.10], [hplip])\n-#AM_INIT_AUTOMAKE([1.9 foreign])\n-AM_INIT_AUTOMAKE\n+AM_INIT_AUTOMAKE([1.9 foreign subdir-objects])\n AC_DISABLE_STATIC\n \n # Checks for programs.\n-- \n2.6.4\n\n"
  },
  {
    "path": "package/hplip/Config.in",
    "content": "config BR2_PACKAGE_HPLIP\n\tbool \"hplip\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_CUPS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tdepends on !BR2_STATIC_LIBS # libdl\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_JPEG\n\thelp\n\t  HP Linux Imaging and Printing (HPLIP)\n\t  HPLIP is an HP-developed solution for printing, scanning, and\n\t  faxing with HP inkjet and laser based printers in Linux. The\n\t  HPLIP project provides printing support for 2,211 printer\n\t  models, including Deskjet, Officejet, Photosmart, PSC\n\t  (Print Scan Copy), Business Inkjet, LaserJet, Edgeline MFP,\n\t  and LaserJet MFP.\n\n\t  http://hplipopensource.com/\n\ncomment \"hplip needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_CUPS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/hplip/hplip.hash",
    "content": "# Locally computed:\nsha256  0f7344174672f63a98a22f3c109005b6eb89fe738b7d466316bf2c53d083476c  hplip-3.17.10.tar.gz\nsha256  8af0e85fc6b88aec25200bcb4f604d886818482bd2c5cc81038f4c6a311c913a  COPYING\n"
  },
  {
    "path": "package/hplip/hplip.mk",
    "content": "################################################################################\n#\n# hplip\n#\n################################################################################\n\nHPLIP_VERSION = 3.17.10\nHPLIP_SITE = http://downloads.sourceforge.net/hplip/hplip\nHPLIP_AUTORECONF = YES\nHPLIP_DEPENDENCIES = cups libusb jpeg host-pkgconf\nHPLIP_LICENSE = GPL-2.0, BSD-3-Clause, MIT\nHPLIP_LICENSE_FILES = COPYING\nHPLIP_CPE_ID_VENDOR = hp\nHPLIP_CPE_ID_PRODUCT = linux_imaging_and_printing_project\n\nHPLIP_CONF_OPTS = \\\n\t--disable-qt4 \\\n\t--disable-scan-build \\\n\t--disable-gui-build \\\n\t--disable-doc-build \\\n\t--disable-network-build \\\n\t--enable-hpcups-install \\\n\t--disable-hpijs-install \\\n\t--enable-cups-ppd-install \\\n\t--enable-cups-drv-install \\\n\t--disable-foomatic-ppd-install \\\n\t--disable-foomatic-drv-install \\\n\t--disable-foomatic-rip-hplip-install \\\n\t--enable-new-hpcups \\\n\t--enable-lite-build\n\n# build system does not support cups-config\nHPLIP_CONF_ENV = LIBS=`$(STAGING_DIR)/usr/bin/cups-config --libs`\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nHPLIP_CONF_OPTS += --enable-dbus-build\nHPLIP_DEPENDENCIES += dbus\nelse\nHPLIP_CONF_OPTS += --disable-dbus-build\nendif\n\ndefine HPLIP_POST_INSTALL_TARGET_FIXUP\n\tmkdir -p $(TARGET_DIR)/usr/share/hplip/data/models\n\tcp $(@D)/data/models/* $(TARGET_DIR)/usr/share/hplip/data/models\nendef\nHPLIP_POST_INSTALL_TARGET_HOOKS += HPLIP_POST_INSTALL_TARGET_FIXUP\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/htop/Config.in",
    "content": "config BR2_PACKAGE_HTOP\n\tbool \"htop\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  htop is an interactive text-mode process viewer for Linux.\n\t  It aims to be a better top.\n\n\t  https://htop.dev/\n\ncomment \"htop needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/htop/htop.hash",
    "content": "# Locally calculated\nsha256  b52280ad05a535ec632fbcd47e8e2c40a9376a9ddbd7caa00b38b9d6bb87ced6  htop-3.1.1.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/htop/htop.mk",
    "content": "################################################################################\n#\n# htop\n#\n################################################################################\n\nHTOP_VERSION = 3.1.1\nHTOP_SITE = $(call github,htop-dev,htop,$(HTOP_VERSION))\nHTOP_DEPENDENCIES = ncurses\nHTOP_AUTORECONF = YES\n# Prevent htop build system from searching the host paths\nHTOP_CONF_ENV = HTOP_NCURSES_CONFIG_SCRIPT=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS)\nHTOP_LICENSE = GPL-2.0+\nHTOP_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_HWLOC),y)\nHTOP_CONF_OPTS += --enable-hwloc\nHTOP_DEPENDENCIES += hwloc\nelse\nHTOP_CONF_OPTS += --disable-hwloc\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nHTOP_CONF_OPTS += --enable-capabilities\nHTOP_DEPENDENCIES += libcap\nelse\nHTOP_CONF_OPTS += --disable-capabilities\nendif\n\nifeq ($(BR2_PACKAGE_LM_SENSORS),y)\nHTOP_CONF_OPTS += --with-sensors\nHTOP_DEPENDENCIES += lm-sensors\nelse\nHTOP_CONF_OPTS += --without-sensors\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)\nHTOP_CONF_OPTS += --enable-unicode\nelse\nHTOP_CONF_OPTS += --disable-unicode\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/htpdate/Config.in",
    "content": "config BR2_PACKAGE_HTPDATE\n\tbool \"htpdate\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  The HTTP Time Protocol (HTP) is used to synchronize a\n\t  computer's time with web servers as reference time source.\n\n\t  https://github.com/angeloc/htpdate\n"
  },
  {
    "path": "package/htpdate/S43htpdate",
    "content": "#!/bin/sh\n\nDAEMON=\"htpdate\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nHTPDATE_ARGS=\"-a -s -t https://google.com\"\ntest -r \"/etc/default/$DAEMON\" && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -x \"/usr/bin/$DAEMON\" \\\n\t\t-- -D -i \"$PIDFILE\" $HTPDATE_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/htpdate/htpdate.hash",
    "content": "# Locally calculated:\nsha256 d2cff522b8f53b00769dcca77d8025b19238ed35d702a4739dc05e387f718909  htpdate-1.2.6.tar.gz\nsha256 b1c8d41afde943cacedab52cbb44ef7ffb7026e738b9c891009e89559fe31c20  LICENSE\n"
  },
  {
    "path": "package/htpdate/htpdate.mk",
    "content": "################################################################################\n#\n# htpdate\n#\n################################################################################\n\nHTPDATE_VERSION = 1.2.6\nHTPDATE_SITE = $(call github,angeloc,htpdate,v$(HTPDATE_VERSION))\nHTPDATE_LICENSE = GPL-2.0+\nHTPDATE_LICENSE_FILES = LICENSE\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nHTPDATE_BUILD_OPTS = ENABLE_HTTPS=1\nHTPDATE_DEPENDENCIES += openssl host-pkgconf\nendif\n\ndefine HTPDATE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(HTPDATE_BUILD_OPTS)\nendef\n\ndefine HTPDATE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\ndefine HTPDATE_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/htpdate/S43htpdate \\\n\t\t$(TARGET_DIR)/etc/init.d/S43htpdate\nendef\n\ndefine HTPDATE_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/htpdate/htpdate.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/htpdate.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/htpdate/htpdate.service",
    "content": "[Unit]\nDescription=htpdate daemon\nAfter=network.target\n\n[Service]\nType=forking\nPIDFile=/run/htpdate.pid\nEnvironment=HTPDATE_ARGS=\"-a -s -t https://www.google.com\"\nEnvironmentFile=-/etc/default/htpdate\nExecStart=/usr/bin/htpdate -D -i /run/htpdate.pid $HTPDATE_ARGS\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/httping/0001-fix-math-library-linking.patch",
    "content": "Move LDFLAGS+=-lm option to the end.\nThe order of the math library directive '-lm' matters.\n\nSigned-off-by: Yuvaraj Patil <yuvaraj.patil@wipro.com>\n---\ndiff -Nurp httping-2.3.4_orig/Makefile httping-2.3.4/Makefile\n--- httping-2.3.4_orig/Makefile\t2014-07-23 16:16:36.495546288 +0530\n+++ httping-2.3.4/Makefile\t2014-07-23 16:18:42.547541002 +0530\n@@ -37,7 +37,6 @@ DEBUG=yes\n WFLAGS=-Wall -W\n OFLAGS=\n CFLAGS+=$(WFLAGS) $(OFLAGS) -DVERSION=\\\"$(VERSION)\\\" -DLOCALEDIR=\\\"$(LOCALEDIR)\\\"\n-LDFLAGS+=-lm\n \n PACKAGE=$(TARGET)-$(VERSION)\n PREFIX?=/usr\n@@ -97,6 +96,8 @@ ifeq ($(ARM),yes)\n CC=arm-linux-gcc\n endif\n \n+LDFLAGS+=-lm\n+\n all: $(TARGET) $(TRANSLATIONS)\n \n $(TARGET): $(OBJS)\n"
  },
  {
    "path": "package/httping/0002-Makefile-allow-build-without-gettext.patch",
    "content": "From fe7d6c5a0e5dfe129f228498037393d23d6ae890 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Tue, 18 Jul 2017 19:09:03 +0300\nSubject: [PATCH] Makefile: allow build without gettext\n\nThe msgfmt command is part of the gettext package, and is used to generate\nbinary translation files. When gettext is not installed, build fails.\nTranslation files are not always needed on size constrained embedded targets.\nAdd an option to disable translation files generation using the NO_GETTEXT\nvariable.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: https://github.com/flok99/httping/pull/36\n\n Makefile | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/Makefile b/Makefile\nindex 46127f4cdde1..160cc1794ec8 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -55,7 +55,9 @@ MKDIR=/bin/mkdir\n ARCHIVE=/bin/tar cf -\n COMPRESS=/bin/gzip -9\n \n+ifneq ($(NO_GETTEXT),yes)\n TRANSLATIONS=nl.mo ru.mo\n+endif\n \n 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\n \n@@ -118,10 +120,12 @@ install: $(TARGET) $(TRANSLATIONS)\n ifneq ($(DEBUG),yes)\n \t$(STRIP) $(DESTDIR)/$(BINDIR)/$(TARGET)\n endif\n+ifneq ($(NO_GETTEXT),yes)\n \tmkdir -p $(DESTDIR)/$(PREFIX)/share/locale/nl/LC_MESSAGES\n \tcp nl.mo $(DESTDIR)/$(PREFIX)/share/locale/nl/LC_MESSAGES/httping.mo\n \tmkdir -p $(DESTDIR)/$(PREFIX)/share/locale/ru/LC_MESSAGES\n \tcp ru.mo $(DESTDIR)/$(PREFIX)/share/locale/ru/LC_MESSAGES/httping.mo\n+endif\n \n \n makefile.inc:\n-- \n2.13.2\n\n"
  },
  {
    "path": "package/httping/Config.in",
    "content": "comment \"httping needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_HTTPING\n\tbool \"httping\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Httping is like 'ping' but for http-requests.\n\t  Give it an url, and it'll show you how long it takes to\n\t  connect, send a request and retrieve the reply (only the\n\t  headers).\n\t  Be aware that the transmission across the network also takes\n\t  time! So it measures the latency of the webserver + network.\n\n\t  http://www.vanheusden.com/httping/\n\nif BR2_PACKAGE_HTTPING\n\nconfig BR2_PACKAGE_HTTPING_TFO\n\tbool \"TCP Fast Open (TFO) support\"\n\nendif\n"
  },
  {
    "path": "package/httping/httping.hash",
    "content": "# Locally calculated\nsha256\t3e895a0a6d7bd79de25a255a1376d4da88eb09c34efdd0476ab5a907e75bfaf8\thttping-2.5.tgz\nsha256  c5db2e5b9a692fcdf2bd370f1533529063fbcf8947a8f5ee9d4b050a14e0566d\tlicense.txt\n"
  },
  {
    "path": "package/httping/httping.mk",
    "content": "################################################################################\n#\n# httping\n#\n################################################################################\n\nHTTPING_VERSION = 2.5\nHTTPING_SOURCE = httping-$(HTTPING_VERSION).tgz\nHTTPING_SITE = http://www.vanheusden.com/httping\nHTTPING_LICENSE = GPL-2.0\nHTTPING_LICENSE_FILES = license.txt\nHTTPING_LDFLAGS = $(TARGET_LDFLAGS) \\\n\t$(TARGET_NLS_LIBS) \\\n\t$(if $(BR2_PACKAGE_LIBICONV),-liconv)\nHTTPING_DEPENDENCIES = \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv) \\\n\t$(if $(BR2_PACKAGE_NCURSES_WCHAR),ncurses) \\\n\t$(if $(BR2_PACKAGE_OPENSSL),openssl) \\\n\t$(if $(BR2_PACKAGE_FFTW_DOUBLE),fftw-double)\nHTTPING_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) \\\n\tFW=$(if $(BR2_PACKAGE_FFTW_DOUBLE),yes,no) \\\n\tNC=$(if $(BR2_PACKAGE_NCURSES_WCHAR),yes,no) \\\n\tSSL=$(if $(BR2_PACKAGE_OPENSSL),yes,no) \\\n\tTFO=$(if $(BR2_PACKAGE_HTTPING_TFO),yes,no) \\\n\tNO_GETTEXT=$(if $(BR2_SYSTEM_ENABLE_NLS),no,yes)\n\ndefine HTTPING_BUILD_CMDS\n\t$(HTTPING_MAKE_OPTS) LDFLAGS=\"$(HTTPING_LDFLAGS)\" \\\n\t\t$(MAKE) DEBUG=no -C $(@D)\nendef\n\ndefine HTTPING_INSTALL_TARGET_CMDS\n\t$(HTTPING_MAKE_OPTS) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/hwdata/Config.in",
    "content": "config BR2_PACKAGE_HWDATA\n\tbool \"hwdata\"\n\thelp\n\t  Various hardware identification and configuration data\n\n\t  - Individual Address Block (IAB) and Organizationally Unique\n\t    Identifier (OUI) databases, from IEEE Registration Authority\n\t  - PCI ID database\n\t  - PNP ID database (from Microsoft)\n\t  - USB ID database\n\n\t  https://github.com/vcrhonek/hwdata\n\nif BR2_PACKAGE_HWDATA\n\nconfig BR2_PACKAGE_HWDATA_IAB_OUI_TXT\n\tbool \"install iab.txt and oui.txt\"\n\thelp\n\t  Install iab.txt and oui.txt\n\nconfig BR2_PACKAGE_HWDATA_PCI_IDS\n\tbool \"install pci.ids\"\n\tdefault y\n\thelp\n\t  Install pci.ids\n\nconfig BR2_PACKAGE_HWDATA_PNP_IDS\n\tbool \"install pnp.ids\"\n\thelp\n\t  Install pnp.ids\n\nconfig BR2_PACKAGE_HWDATA_USB_IDS\n\tbool \"install usb.ids\"\n\tdefault y\n\thelp\n\t  Install usb.ids\n\nendif\n"
  },
  {
    "path": "package/hwdata/hwdata.hash",
    "content": "# Locally calculated\nsha256  fafcc97421ba766e08a2714ccc3eebb0daabc99e67d53c2d682721dd01ccf7a7  hwdata-0.345.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  21d0406f93e884a050426ebc21931839a45d56bfcbcbfdda7686d583f36f107f  LICENSE\n"
  },
  {
    "path": "package/hwdata/hwdata.mk",
    "content": "################################################################################\n#\n# hwdata\n#\n################################################################################\n\nHWDATA_VERSION = 0.345\nHWDATA_SITE = $(call github,vcrhonek,hwdata,v$(HWDATA_VERSION))\nHWDATA_LICENSE = GPL-2.0+, BSD-3-Clause, XFree86 1.0\nHWDATA_LICENSE_FILES = COPYING LICENSE\n\nHWDATA_FILES = \\\n\t$(if $(BR2_PACKAGE_HWDATA_IAB_OUI_TXT),iab.txt oui.txt) \\\n\t$(if $(BR2_PACKAGE_HWDATA_PCI_IDS),pci.ids) \\\n\t$(if $(BR2_PACKAGE_HWDATA_PNP_IDS),pnp.ids) \\\n\t$(if $(BR2_PACKAGE_HWDATA_USB_IDS),usb.ids)\n\nifneq ($(strip $(HWDATA_FILES)),)\ndefine HWDATA_INSTALL_TARGET_CMDS\n\t$(INSTALL) -d -m 755 $(TARGET_DIR)/usr/share/hwdata\n\t$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/share/hwdata \\\n\t\t$(addprefix $(@D)/,$(HWDATA_FILES))\nendef\nendif\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/hwloc/Config.in",
    "content": "config BR2_PACKAGE_HWLOC\n\tbool \"hwloc\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Portable Hardware Locality\n\n\t  Provides a portable abstraction (across OS, versions,\n\t  architectures, ...)  of the hierarchical topology of modern\n\t  architectures, including NUMA memory nodes, sockets, shared\n\t  caches, cores and simultaneous multithreading.\n\n\t  http://www.open-mpi.org/projects/hwloc/\n\ncomment \"hwloc needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/hwloc/hwloc.hash",
    "content": "# From https://www.open-mpi.org/software/hwloc/v2.4/\nsha256  392421e69f26120c8ab95d151fe989f2b4b69dab3c7735741c4e0a6d7de5de63  hwloc-2.4.1.tar.bz2\n# Locally computed\nsha256  d79a936a42f3c6cb7c8375a023d43f4435f4664d3a5a2ea6b4623cff83c7fc06  COPYING\n"
  },
  {
    "path": "package/hwloc/hwloc.mk",
    "content": "################################################################################\n#\n# hwloc\n#\n################################################################################\n\nHWLOC_VERSION_MAJOR = 2.4\nHWLOC_VERSION = $(HWLOC_VERSION_MAJOR).1\nHWLOC_SOURCE = hwloc-$(HWLOC_VERSION).tar.bz2\nHWLOC_SITE = https://download.open-mpi.org/release/hwloc/v$(HWLOC_VERSION_MAJOR)\nHWLOC_LICENSE = BSD-3-Clause\nHWLOC_LICENSE_FILES = COPYING\nHWLOC_DEPENDENCIES = host-pkgconf\nHWLOC_INSTALL_STAGING = YES\nHWLOC_SELINUX_MODULES = hwloc\n\n# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test\n# provided by autoconf relies on wchar_t.\nHWLOC_CONF_ENV = ac_cv_prog_cc_c99=-std=gnu99\n\nHWLOC_CONF_OPTS = \\\n\t--disable-opencl \\\n\t--disable-cuda \\\n\t--disable-nvml \\\n\t--disable-gl \\\n\t--disable-cairo \\\n\t--disable-doxygen\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nHWLOC_CONF_OPTS += --enable-libudev\nHWLOC_DEPENDENCIES += udev\nelse\nHWLOC_CONF_OPTS += --disable-libudev\nendif\n\nifeq ($(BR2_PACKAGE_LIBPCIACCESS),y)\nHWLOC_CONF_OPTS += --enable-pci\nHWLOC_DEPENDENCIES += libpciaccess\nelse\nHWLOC_CONF_OPTS += --disable-pci\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nHWLOC_CONF_OPTS += --enable-libxml2\nHWLOC_DEPENDENCIES += libxml2\nelse\nHWLOC_CONF_OPTS += --disable-libxml2\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nHWLOC_DEPENDENCIES += ncurses\nendif\n\nifeq ($(BR2_PACKAGE_NUMACTL),y)\nHWLOC_DEPENDENCIES += numactl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/i2c-tools/Config.in",
    "content": "config BR2_PACKAGE_I2C_TOOLS\n\tbool \"i2c-tools\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  Heterogeneous set of I2C tools for Linux\n\n\t  This package contains a heterogeneous set of I2C tools for\n\t  Linux: a bus probing tool, a chip dumper, register-level\n\t  access helpers, EEPROM decoding scripts, and more.\n\n\t  https://i2c.wiki.kernel.org/index.php/I2C_Tools\n"
  },
  {
    "path": "package/i2c-tools/i2c-tools.hash",
    "content": "# From https://www.kernel.org/pub/software/utils/i2c-tools/sha256sums.asc\nsha256  1f899e43603184fac32f34d72498fc737952dbc9c97a8dd9467fadfdf4600cf9  i2c-tools-4.3.tar.xz\n\n# License files\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LGPL\nsha256  2293b6e9076984d02184ff620baac557143e16cfa47d88f0a791d05a1271742c  README\n"
  },
  {
    "path": "package/i2c-tools/i2c-tools.mk",
    "content": "################################################################################\n#\n# i2c-tools\n#\n################################################################################\n\nI2C_TOOLS_VERSION = 4.3\nI2C_TOOLS_SOURCE = i2c-tools-$(I2C_TOOLS_VERSION).tar.xz\nI2C_TOOLS_SITE = https://www.kernel.org/pub/software/utils/i2c-tools\nI2C_TOOLS_LICENSE = GPL-2.0+, GPL-2.0 (py-smbus), LGPL-2.1+ (libi2c)\nI2C_TOOLS_LICENSE_FILES = COPYING COPYING.LGPL README\nI2C_TOOLS_CPE_ID_VENDOR = i2c-tools_project\nI2C_TOOLS_MAKE_OPTS = EXTRA=eeprog\nI2C_TOOLS_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\nI2C_TOOLS_DEPENDENCIES += python\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nI2C_TOOLS_DEPENDENCIES += python3\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nI2C_TOOLS_MAKE_OPTS += BUILD_DYNAMIC_LIB=0 USE_STATIC_LIB=1\nendif\n\nifeq ($(BR2_SHARED_LIBS),y)\nI2C_TOOLS_MAKE_OPTS += BUILD_STATIC_LIB=0\nendif\n\n# Build/install steps mirror the distutil python package type in the python package\n# infrastructure\nifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)\n# BASE_ENV taken from PKG_PYTHON_DISTUTILS_ENV in package/pkg-python.mk\nI2C_TOOLS_PYTHON_BASE_ENV = \\\n\t$(PKG_PYTHON_DISTUTILS_ENV) \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -I../include\"\n\ndefine I2C_TOOLS_BUILD_PYSMBUS\n\t(cd $(@D)/py-smbus; \\\n\t$(I2C_TOOLS_PYTHON_BASE_ENV) \\\n\t\t$(HOST_DIR)/bin/python setup.py build \\\n\t\t$(PKG_PYTHON_DISTUTILS_BUILD_OPTS))\nendef\n\ndefine I2C_TOOLS_INSTALL_PYSMBUS\n\t(cd $(@D)/py-smbus; \\\n\t$(I2C_TOOLS_PYTHON_BASE_ENV) \\\n\t\t$(HOST_DIR)/bin/python setup.py install \\\n\t\t$(PKG_PYTHON_DISTUTILS_INSTALL_TARGET_OPTS))\nendef\n\nendif # BR2_PACKAGE_PYTHON\n\ndefine I2C_TOOLS_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) $(I2C_TOOLS_MAKE_OPTS) -C $(@D)\n\t$(I2C_TOOLS_BUILD_PYSMBUS)\nendef\n\ndefine I2C_TOOLS_INSTALL_TARGET_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) $(I2C_TOOLS_MAKE_OPTS) \\\n\t\tDESTDIR=\"$(TARGET_DIR)\" PREFIX=/usr -C $(@D) install\n\t$(I2C_TOOLS_INSTALL_PYSMBUS)\nendef\n\ndefine I2C_TOOLS_INSTALL_STAGING_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) $(I2C_TOOLS_MAKE_OPTS) \\\n\t\tDESTDIR=\"$(STAGING_DIR)\" PREFIX=/usr -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/i2pd/Config.in",
    "content": "config BR2_PACKAGE_I2PD\n\tbool \"i2pd\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\t# pthread_condattr_setclock\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR # boost\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_DATE_TIME\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\tselect BR2_PACKAGE_BOOST_PROGRAM_OPTIONS\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  i2pd (I2P Daemon) is a full-featured C++ implementation of I2P\n\t  client.\n\n\t  I2P (Invisible Internet Protocol) is a universal anonymous\n\t  network layer.\n\t  All communications over I2P are anonymous and end-to-end\n\t  encrypted, participants don't reveal their real IP addresses.\n\n\t  http://i2pd.website\n\ncomment \"i2pd needs a toolchain w/ C++, NPTL, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR\n\ncomment \"i2pd needs exception_ptr\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/i2pd/S99i2pd",
    "content": "#!/bin/sh\n\nNAME=i2pd\nPIDFILE=/var/run/$NAME.pid\nDAEMON=/usr/bin/$NAME\nDAEMON_ARGS=\"--conf=/etc/i2pd/i2pd.conf --tunconf=/etc/i2pd/tunnels.conf --pidfile=/var/run/i2pd.pid --logfile=/var/log/i2pd.log --daemon --service\"\n\nstart() {\n\tprintf \"Starting $NAME: \"\n\tstart-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping $NAME: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/i2pd/i2pd.hash",
    "content": "# From https://github.com/PurpleI2P/i2pd/releases/download/2.39.0/SHA512SUMS\nsha512  6b38e6e2e763e94ffe9d11eb2f9a0e9554560bb4fec95891240adf5bc0a9639f879dac4ff3712a9f8e00895b7bbeabc854887e61fe9f9755c33f96899e20aa76  i2pd-2.39.0.tar.gz\n# Locally computed:\nsha256  9c87aff490b272254d716475e3c4973f5f64af1d18f9f6962c1e61e252e1ad9a  LICENSE\n"
  },
  {
    "path": "package/i2pd/i2pd.mk",
    "content": "################################################################################\n#\n# i2pd\n#\n################################################################################\n\nI2PD_VERSION = 2.39.0\nI2PD_SITE = $(call github,PurpleI2P,i2pd,$(I2PD_VERSION))\nI2PD_LICENSE = BSD-3-Clause\nI2PD_LICENSE_FILES = LICENSE\nI2PD_SUBDIR = build\nI2PD_DEPENDENCIES = \\\n\tboost \\\n\topenssl \\\n\tzlib\n\nI2PD_CONF_OPTS += -DWITH_GUI=OFF\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nI2PD_CONF_OPTS += \\\n\t-DHAVE_CXX_ATOMICS_WITHOUT_LIB=OFF \\\n\t-DHAVE_CXX_ATOMICS64_WITHOUT_LIB=OFF\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nI2PD_CONF_OPTS += -DWITH_STATIC=ON\nelse\nI2PD_CONF_OPTS += -DWITH_STATIC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBMINIUPNPC),y)\nI2PD_DEPENDENCIES += libminiupnpc\nI2PD_CONF_OPTS += -DWITH_UPNP=ON\nelse\nI2PD_CONF_OPTS += -DWITH_UPNP=OFF\nendif\n\ndefine I2PD_INSTALL_CONFIGURATION_FILES\n\t$(INSTALL) -D -m 644 $(@D)/contrib/i2pd.conf \\\n\t\t$(TARGET_DIR)/etc/i2pd/i2pd.conf\n\t$(INSTALL) -D -m 644 $(@D)/contrib/tunnels.conf \\\n\t\t$(TARGET_DIR)/etc/i2pd/tunnels.conf\n\tmkdir -p $(TARGET_DIR)/var/lib/i2pd\n\tcp -a $(@D)/contrib/certificates $(TARGET_DIR)/var/lib/i2pd\nendef\n\ndefine I2PD_USERS\n\ti2pd -1 i2pd -1 * /var/lib/i2pd - - I2P Daemon\nendef\n\ndefine I2PD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/i2pd/S99i2pd \\\n\t\t$(TARGET_DIR)/etc/init.d/S99i2pd\nendef\n\ndefine I2PD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/i2pd/i2pd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/i2pd.service\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/i2pd/i2pd.service",
    "content": "[Unit]\nDescription=I2P Router written in C++\nAfter=network.target\n\n[Service]\nUser=i2pd\nGroup=i2pd\nRuntimeDirectory=i2pd\nRuntimeDirectoryMode=0700\nLogsDirectory=i2pd\nLogsDirectoryMode=0700\nType=simple\nExecStart=/usr/bin/i2pd --conf=/etc/i2pd/i2pd.conf --tunconf=/etc/i2pd/tunnels.conf --pidfile=/run/i2pd/i2pd.pid --logfile=/var/log/i2pd/i2pd.log --daemon --service\nExecReload=/bin/kill -HUP $MAINPID\nPIDFile=/run/i2pd/i2pd.pid\n### Uncomment, if auto restart needed\n#Restart=on-failure\n\n### Use SIGINT for graceful stop daemon.\n# i2pd stops accepting new tunnels and waits ~10 min while old ones do not die.\nKillSignal=SIGINT\nTimeoutStopSec=10m\n\n# If you have problems with hanging i2pd, you can try enable this\n#LimitNOFILE=4096\nPrivateDevices=yes\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/i7z/0001-fix-build-with-gcc-10.patch",
    "content": "From 6e4e407a374512b5bcb5a7c184258653e472ef9f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 19 Jan 2021 07:47:58 +0100\nSubject: [PATCH] fix build with gcc 10\n\nFix the following build failure with gcc 10 (which defaults to\n-fno-common):\n\n/home/buildroot/autobuild/instance-2/output-1/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os   -fno-schedule-insns2  -fno-schedule-insns -fno-inline-small-functions -fno-caller-saves -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DBUILD_MAIN -Wimplicit-function-declaration -Dx64_BIT  -o i7z i7z.o helper_functions.o i7z_Single_Socket.o i7z_Dual_Socket.o -lncurses -lpthread -lrt -lm\n/home/buildroot/autobuild/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-gnu/10.2.0/../../../../x86_64-buildroot-linux-gnu/bin/ld: i7z_Dual_Socket.o:(.bss+0x0): multiple definition of `global_ts'; i7z_Single_Socket.o:(.bss+0x0): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/1a433611ba8676cf1ca276fccaf3633971bd562e\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/ajaiantilal/i7z/pull/27]\n---\n i7z.c               | 1 +\n i7z_Dual_Socket.c   | 2 +-\n i7z_Single_Socket.c | 2 +-\n 3 files changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/i7z.c b/i7z.c\nindex 61e2757..910a608 100644\n--- a/i7z.c\n+++ b/i7z.c\n@@ -34,6 +34,7 @@ int Dual_Socket();\n \n int socket_0_num=0, socket_1_num=1;\n bool use_ncurses = true;\n+struct timespec global_ts;\n \n /////////////////////LOGGING TO FILE////////////////////////////////////////\n FILE *fp_log_file_freq;\ndiff --git a/i7z_Dual_Socket.c b/i7z_Dual_Socket.c\nindex 1388339..ceafdce 100644\n--- a/i7z_Dual_Socket.c\n+++ b/i7z_Dual_Socket.c\n@@ -37,7 +37,7 @@ float Read_Voltage_CPU(int cpu_num);\n extern struct program_options prog_options;\n FILE *fp_log_file;\n \n-struct timespec global_ts;\n+extern struct timespec global_ts;\n extern FILE *fp_log_file_freq_1, *fp_log_file_freq_2;\n \n extern char* CPU_FREQUENCY_LOGGING_FILE_single;\ndiff --git a/i7z_Single_Socket.c b/i7z_Single_Socket.c\nindex 16e98c1..b7266e6 100644\n--- a/i7z_Single_Socket.c\n+++ b/i7z_Single_Socket.c\n@@ -35,7 +35,7 @@ int Read_Thermal_Status_CPU(int cpu_num);\n extern struct program_options prog_options;\n extern FILE *fp_log_file_freq;\n \n-struct timespec global_ts;\n+extern struct timespec global_ts;\n \n extern char* CPU_FREQUENCY_LOGGING_FILE_single;\n extern char* CPU_FREQUENCY_LOGGING_FILE_dual;\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/i7z/Config.in",
    "content": "config BR2_PACKAGE_I7Z\n\tbool \"i7z\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  \"A better i7 (and now i3, i5) reporting tool for Linux.\"\n\n\t  i7z can print out the C-states and temperature for i3, i5\n\t  and i7 based Core processors from Intel (including Nehalems,\n\t  Sandy Bridge and Ivy Bridge).\n\n\t  https://github.com/ajaiantilal/i7z\n\ncomment \"i7z needs a toolchain w/ threads\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/i7z/i7z.hash",
    "content": "# Locally computed:\nsha256  e127bddf850e7febd39cef2d2b13dca5fe19cc2a1bb1099d72b683be5d8bd1c0  i7z-5023138d7c35c4667c938b853e5ea89737334e92.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/i7z/i7z.mk",
    "content": "################################################################################\n#\n# i7z\n#\n################################################################################\n\nI7Z_VERSION = 5023138d7c35c4667c938b853e5ea89737334e92\nI7Z_SITE = $(call github,ajaiantilal,i7z,$(I7Z_VERSION))\nI7Z_LICENSE = GPL-2.0\nI7Z_LICENSE_FILES = COPYING\nI7Z_DEPENDENCIES = ncurses\n\ndefine I7Z_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine I7Z_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install \\\n\t\tDESTDIR=\"$(TARGET_DIR)\"\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ibm-sw-tpm2/0001-Use-LONG_BIT-to-define-RADIX_BITS.patch",
    "content": "From 7ea7fe229ea6195938d9eadbe783cb1aa74380ba Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Sun, 26 Apr 2020 15:33:39 +0200\nSubject: [PATCH] Use LONG_BIT to define RADIX_BITS\n\nThis allows to avoid having to support each CPU architecture\nindividually.\n\nAlso, add the necessary defines in the makefile to expose\nLONG_BIT. Adding those defines end up requiring using <sys/select.h>\nas we're now using >= POSIX.1-2001 definitions of fd_set and friends.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nSigned-off-by: Vincent Fazio <vfazio@gmail.com>\n---\n src/LibSupport.h     | 21 +++------------------\n src/TcpServerPosix.c |  1 +\n src/makefile         |  2 ++\n 3 files changed, 6 insertions(+), 18 deletions(-)\n\ndiff --git a/src/LibSupport.h b/src/LibSupport.h\nindex 5055560..48b1e16 100644\n--- a/src/LibSupport.h\n+++ b/src/LibSupport.h\n@@ -64,24 +64,9 @@\n #ifndef _LIB_SUPPORT_H_\n #define _LIB_SUPPORT_H_\n \n-/* kgold added power and s390 */\n-#ifndef RADIX_BITS\n-#   if defined(__x86_64__) || defined(__x86_64)\t\t\t\t\\\n-    || defined(__amd64__) || defined(__amd64)\t\t\t\t\\\n-    || defined(_WIN64) || defined(_M_X64)\t\t \t\t\\\n-    || defined(_M_ARM64) || defined(__aarch64__) \t\t\t\\\n-    || defined(__powerpc64__) || defined(__PPC64__) || defined(__ppc64__) \\\n-    || defined(__s390x__)\n-#       define RADIX_BITS                      64\n-#   elif defined(__i386__) || defined(__i386) || defined(i386)\t\t\\\n-    || defined(_WIN32) || defined(_M_IX86)\t\t\t\t\\\n-    || defined(_M_ARM) || defined(__arm__) || defined(__thumb__)\t\\\n-    || defined(__powerpc__) || defined(__PPC__)\n-#       define RADIX_BITS                      32\n-#   else\n-#       error Unable to determine RADIX_BITS from compiler environment\n-#   endif\n-#endif // RADIX_BITS\n+#include <limits.h>\n+\n+#define RADIX_BITS LONG_BIT\n \n // These macros use the selected libraries to the proper include files.\n #define LIB_QUOTE(_STRING_) #_STRING_\ndiff --git a/src/TcpServerPosix.c b/src/TcpServerPosix.c\nindex cad0402..6293cdd 100644\n--- a/src/TcpServerPosix.c\n+++ b/src/TcpServerPosix.c\n@@ -66,6 +66,7 @@\n \n #include <stdio.h>\n #include <stdbool.h>\n+#include <sys/select.h>\n #include <unistd.h>\n #include <sys/types.h>\n #include <sys/socket.h>\ndiff --git a/src/makefile b/src/makefile\nindex f124e78..6ee128e 100644\n--- a/src/makefile\n+++ b/src/makefile\n@@ -46,6 +46,8 @@ CCFLAGS = -Wall  \t\t\t\\\n \t -c -ggdb -O0 \t\t\t\\\n \t-DTPM_POSIX\t\t\t\\\n \t-D_POSIX_\t\t\t\\\n+\t-D_DEFAULT_SOURCE\t\t\\\n+\t-D_XOPEN_SOURCE=500\t\t\\\n \t-DTPM_NUVOTON\n \n # add this line for big endian platforms\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/ibm-sw-tpm2/Config.in",
    "content": "config BR2_PACKAGE_IBM_SW_TPM2\n\tbool \"ibm-sw-tpm2\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS # ibm-sw-tpm2\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL\n\thelp\n\t  This project is an implementation of the TCG TPM 2.0\n\t  specification. It is based on the TPM specification Parts 3\n\t  and 4 source code donated by Microsoft, with additional\n\t  files to complete the implementation.\n\n\t  https://sourceforge.net/projects/ibmswtpm2/\n\ncomment \"ibm-sw-tpm2 needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/ibm-sw-tpm2/ibm-sw-tpm2.hash",
    "content": "# from https://sourceforge.net/projects/ibmswtpm2/files\nsha1  a2a5335024a2edc1739f08b99e716fa355be627d  ibmtpm1563.tar.gz\nmd5  13013612b3a13dc935fefe1a5684179c  ibmtpm1563.tar.gz\n# Locally computed:\nsha256  55145928ad2b24f34be6a0eacf9fb492e10e0ea919b8428c721fa970e85d6147  ibmtpm1661.tar.gz\nsha256  dd2d31b560011ea673e197251e710e52669d911367d83cd3cfd018f8ed58bde9  LICENSE\n"
  },
  {
    "path": "package/ibm-sw-tpm2/ibm-sw-tpm2.mk",
    "content": "################################################################################\n#\n# ibm-sw-tpm2\n#\n################################################################################\n\nIBM_SW_TPM2_VERSION = 1661\nIBM_SW_TPM2_SOURCE = ibmtpm$(IBM_SW_TPM2_VERSION).tar.gz\nIBM_SW_TPM2_SITE = https://sourceforge.net/projects/ibmswtpm2/files\nIBM_SW_TPM2_LICENSE = BSD-3-Clause\nIBM_SW_TPM2_LICENSE_FILES = LICENSE\nIBM_SW_TPM2_DEPENDENCIES = openssl\n\ndefine IBM_SW_TPM2_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine IBM_SW_TPM2_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src $(TARGET_CONFIGURE_OPTS) install \\\n\t\tDESTDIR=$(TARGET_DIR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ibrcommon/0001-ibrcommon-data-File.cpp-support-POSIX-basename-call.patch",
    "content": "From d667b13a87cf3207599a19eb981a893a1d7a67ee Mon Sep 17 00:00:00 2001\nFrom: Brendan Heading <brendanheading@gmail.com>\nDate: Mon, 14 Sep 2015 23:25:52 +0100\nSubject: [PATCH 1/1] ibrcommon/data/File.cpp: support POSIX basename call\n\nFirstly, and somewhat strangely, musl chooses not to provide a basename(3)\nprototype within <string.h> whenever __cplusplus is defined. This can be\nsolved by including the <libgen.h> header defined by POSIX 1003.1 whenever\n__GLIBC__ is not defined.\n\nHowever, this leads to a second problem. POSIX defines the function as\nchar* basename(char*) and this is the only version supported by musl.\nHowever, the std::string.cstr() method returns a const char*.\n\nPOSIX says that the string parameter can be modified. However the GNU\nimplementation never modifies it. glibc therefore supports an extension\nwhen compiling under C++ by also supplying\nconst char* basename(const char*). This extension is not present on musl\nwhich is the cause of the failure.\n\nThe solution is reasonably straightforward; test if __GLIBC__ is defined\nbefore calling basename. If not, use the fallback already provided for\nother platforms whereby basename() is called on a temporary copy.\n\nSigned-off-by: Brendan Heading <brendanheading@gmail.com>\nUpstream-status: pending\n---\n ibrcommon/data/File.cpp | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/ibrcommon/data/File.cpp b/ibrcommon/data/File.cpp\nindex 31af4ae..68e9b4f 100644\n--- a/ibrcommon/data/File.cpp\n+++ b/ibrcommon/data/File.cpp\n@@ -35,7 +35,7 @@\n #include <cerrno>\n #include <fstream>\n \n-#if !defined(HAVE_FEATURES_H) || defined(ANDROID)\n+#if !defined(HAVE_FEATURES_H) || !defined(__GLIBC__) || defined(ANDROID)\n #include <libgen.h>\n #endif\n \n@@ -225,7 +225,7 @@ namespace ibrcommon\n \n \tstd::string File::getBasename() const\n \t{\n-#if !defined(ANDROID) && defined(HAVE_FEATURES_H)\n+#if !defined(ANDROID) && defined(HAVE_FEATURES_H) && defined(__GLIBC__)\n \t\treturn std::string(basename(_path.c_str()));\n #else\n \t\tchar path[_path.length()+1];\n-- \n2.4.3\n\n"
  },
  {
    "path": "package/ibrcommon/0002-ibrcommon-added-openssl-1.1-compatibility-264.patch",
    "content": "From a801d10a081e3130e24042256a43190c9eb6c112 Mon Sep 17 00:00:00 2001\nFrom: Eneas Queiroz <35331380+cotequeiroz@users.noreply.github.com>\nDate: Wed, 23 May 2018 03:09:02 -0300\nSubject: [PATCH] ibrcommon: added openssl 1.1 compatibility (#264)\n\nThis patch adds compatibility to openssl 1.1.0.\n\nBackported from master branch:\nhttps://github.com/ibrdtn/ibrdtn/commit/a801d10a081e3130e24042256a43190c9eb6c112\n\nSigned-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n ibrcommon/ibrcommon/ssl/HMacStream.cpp      | 11 +++---\n ibrcommon/ibrcommon/ssl/HMacStream.h        |  2 +-\n ibrcommon/ibrcommon/ssl/RSASHA256Stream.cpp | 28 +++++++------\n ibrcommon/ibrcommon/ssl/RSASHA256Stream.h   |  2 +-\n ibrcommon/ibrcommon/ssl/iostreamBIO.cpp     | 44 ++++++++++++++++-----\n ibrcommon/ibrcommon/ssl/openssl_compat.h    | 38 ++++++++++++++++++\n 6 files changed, 95 insertions(+), 30 deletions(-)\n create mode 100644 ibrcommon/ibrcommon/ssl/openssl_compat.h\n\ndiff --git a/ibrcommon/ssl/HMacStream.cpp b/ibrcommon/ssl/HMacStream.cpp\nindex e5d317e3..66d8ce42 100644\n--- a/ibrcommon/ssl/HMacStream.cpp\n+++ b/ibrcommon/ssl/HMacStream.cpp\n@@ -20,29 +20,30 @@\n  */\n \n #include \"ibrcommon/ssl/HMacStream.h\"\n+#include \"openssl_compat.h\"\n \n namespace ibrcommon\n {\n \tHMacStream::HMacStream(const unsigned char * const key, const int key_size)\n \t : HashStream(EVP_MAX_MD_SIZE, BUFF_SIZE), key_(key), key_size_(key_size)\n \t{\n-\t\tHMAC_CTX_init(&ctx_);\n-\t\tHMAC_Init_ex(&ctx_, key_, key_size_, EVP_sha1(), NULL);\n+\t\tctx_ = HMAC_CTX_new();\n+\t\tHMAC_Init_ex(ctx_, key_, key_size_, EVP_sha1(), NULL);\n \t}\n \n \tHMacStream::~HMacStream()\n \t{\n-\t\tHMAC_CTX_cleanup(&ctx_);\n+\t\tHMAC_CTX_free(ctx_);\n \t}\n \n \tvoid HMacStream::update(char *buf, const size_t size)\n \t{\n \t\t// hashing\n-\t\tHMAC_Update(&ctx_, (unsigned char*)buf, size);\n+\t\tHMAC_Update(ctx_, (unsigned char*)buf, size);\n \t}\n \n \tvoid HMacStream::finalize(char * hash, unsigned int &size)\n \t{\n-\t\tHMAC_Final(&ctx_, (unsigned char*)hash, &size);\n+\t\tHMAC_Final(ctx_, (unsigned char*)hash, &size);\n \t}\n }\ndiff --git a/ibrcommon/ssl/HMacStream.h b/ibrcommon/ssl/HMacStream.h\nindex 7dcea168..d04bceb8 100644\n--- a/ibrcommon/ssl/HMacStream.h\n+++ b/ibrcommon/ssl/HMacStream.h\n@@ -44,7 +44,7 @@ namespace ibrcommon\n \t\tconst unsigned char * const key_;\n \t\tconst int key_size_;\n \n-\t\tHMAC_CTX ctx_;\n+\t\tHMAC_CTX* ctx_;\n \t};\n }\n \ndiff --git a/ibrcommon/ssl/RSASHA256Stream.cpp b/ibrcommon/ssl/RSASHA256Stream.cpp\nindex d94430ed..d25c5d2f 100644\n--- a/ibrcommon/ssl/RSASHA256Stream.cpp\n+++ b/ibrcommon/ssl/RSASHA256Stream.cpp\n@@ -21,6 +21,7 @@\n \n #include \"ibrcommon/ssl/RSASHA256Stream.h\"\n #include \"ibrcommon/Logger.h\"\n+#include \"openssl_compat.h\"\n #include <openssl/err.h>\n \n namespace ibrcommon\n@@ -30,11 +31,11 @@ namespace ibrcommon\n \t{\n \t\t// Initialize get pointer.  This should be zero so that underflow is called upon first read.\n \t\tsetp(&out_buf_[0], &out_buf_[BUFF_SIZE - 1]);\n-\t\tEVP_MD_CTX_init(&_ctx);\n+\t\t_ctx = EVP_MD_CTX_new();\n \n \t\tif (!_verify)\n \t\t{\n-\t\t\tif (!EVP_SignInit_ex(&_ctx, EVP_sha256(), NULL))\n+\t\t\tif (!EVP_SignInit_ex(_ctx, EVP_sha256(), NULL))\n \t\t\t{\n \t\t\t\tIBRCOMMON_LOGGER_TAG(\"RSASHA256Stream\", critical) << \"failed to initialize the signature function\" << IBRCOMMON_LOGGER_ENDL;\n \t\t\t\tERR_print_errors_fp(stderr);\n@@ -42,7 +43,7 @@ namespace ibrcommon\n \t\t}\n \t\telse\n \t\t{\n-\t\t\tif (!EVP_VerifyInit_ex(&_ctx, EVP_sha256(), NULL))\n+\t\t\tif (!EVP_VerifyInit_ex(_ctx, EVP_sha256(), NULL))\n \t\t\t{\n \t\t\t\tIBRCOMMON_LOGGER_TAG(\"RSASHA256Stream\", critical) << \"failed to initialize the verification function\" << IBRCOMMON_LOGGER_ENDL;\n \t\t\t\tERR_print_errors_fp(stderr);\n@@ -52,18 +53,19 @@ namespace ibrcommon\n \n \tRSASHA256Stream::~RSASHA256Stream()\n \t{\n-\t\tEVP_MD_CTX_cleanup(&_ctx);\n+\t\tEVP_MD_CTX_free(_ctx);\n \t}\n \n \tvoid RSASHA256Stream::reset()\n \t{\n-\t\tEVP_MD_CTX_cleanup(&_ctx);\n-\n-\t\tEVP_MD_CTX_init(&_ctx);\n+#if OPENSSL_VERSION_NUMBER < 0x10100000L\n+\t\tEVP_MD_CTX_cleanup(_ctx);\n+#endif\n+\t\tEVP_MD_CTX_init(_ctx);\n \n \t\tif (!_verify)\n \t\t{\n-\t\t\tif (!EVP_SignInit_ex(&_ctx, EVP_sha256(), NULL))\n+\t\t\tif (!EVP_SignInit_ex(_ctx, EVP_sha256(), NULL))\n \t\t\t{\n \t\t\t\tIBRCOMMON_LOGGER_TAG(\"RSASHA256Stream\", critical) << \"failed to initialize the signature function\" << IBRCOMMON_LOGGER_ENDL;\n \t\t\t\tERR_print_errors_fp(stderr);\n@@ -71,7 +73,7 @@ namespace ibrcommon\n \t\t}\n \t\telse\n \t\t{\n-\t\t\tif (!EVP_VerifyInit_ex(&_ctx, EVP_sha256(), NULL))\n+\t\t\tif (!EVP_VerifyInit_ex(_ctx, EVP_sha256(), NULL))\n \t\t\t{\n \t\t\t\tIBRCOMMON_LOGGER_TAG(\"RSASHA256Stream\", critical) << \"failed to initialize the verfication function\" << IBRCOMMON_LOGGER_ENDL;\n \t\t\t\tERR_print_errors_fp(stderr);\n@@ -91,7 +93,7 @@ namespace ibrcommon\n \t\t\tstd::vector<unsigned char> sign(EVP_PKEY_size(_pkey));\n \t\t\tunsigned int size = EVP_PKEY_size(_pkey);\n \n-\t\t\t_return_code = EVP_SignFinal(&_ctx, &sign[0], &size, _pkey);\n+\t\t\t_return_code = EVP_SignFinal(_ctx, &sign[0], &size, _pkey);\n \n \t\t\t_sign = std::string((const char*)&sign[0], size);\n \n@@ -107,7 +109,7 @@ namespace ibrcommon\n \t\tif (!_sign_valid)\n \t\t{\n \t\t\tsync();\n-\t\t\t_return_code = EVP_VerifyFinal(&_ctx, reinterpret_cast<const unsigned char *>(their_sign.c_str()), static_cast<unsigned int>(their_sign.size()), _pkey);\n+\t\t\t_return_code = EVP_VerifyFinal(_ctx, reinterpret_cast<const unsigned char *>(their_sign.c_str()), static_cast<unsigned int>(their_sign.size()), _pkey);\n \t\t\t_sign_valid = true;\n \t\t}\n \t\treturn _return_code;\n@@ -145,7 +147,7 @@ namespace ibrcommon\n \t\tif (!_verify)\n \t\t\t// hashing\n \t\t{\n-\t\t\tif (!EVP_SignUpdate(&_ctx, &out_buf_[0], iend - ibegin))\n+\t\t\tif (!EVP_SignUpdate(_ctx, &out_buf_[0], iend - ibegin))\n \t\t\t{\n \t\t\t\tIBRCOMMON_LOGGER_TAG(\"RSASHA256Stream\", critical) << \"failed to feed data into the signature function\" << IBRCOMMON_LOGGER_ENDL;\n \t\t\t\tERR_print_errors_fp(stderr);\n@@ -153,7 +155,7 @@ namespace ibrcommon\n \t\t}\n \t\telse\n \t\t{\n-\t\t\tif (!EVP_VerifyUpdate(&_ctx, &out_buf_[0], iend - ibegin))\n+\t\t\tif (!EVP_VerifyUpdate(_ctx, &out_buf_[0], iend - ibegin))\n \t\t\t{\n \t\t\t\tIBRCOMMON_LOGGER_TAG(\"RSASHA256Stream\", critical) << \"failed to feed data into the verification function\" << IBRCOMMON_LOGGER_ENDL;\n \t\t\t\tERR_print_errors_fp(stderr);\ndiff --git a/ibrcommon/ssl/RSASHA256Stream.h b/ibrcommon/ssl/RSASHA256Stream.h\nindex 344f8e10..6f3a1168 100644\n--- a/ibrcommon/ssl/RSASHA256Stream.h\n+++ b/ibrcommon/ssl/RSASHA256Stream.h\n@@ -106,7 +106,7 @@ namespace ibrcommon\n \n \t\t/** the context in which the streamed data will be feed into for\n \t\tcalculation of the hash/signature */\n-\t\tEVP_MD_CTX _ctx;\n+\t\tEVP_MD_CTX * _ctx;\n \n \t\t/** tells if the context needs to be finalized to get a valid signature or\n \t\tverification */\ndiff --git a/ibrcommon/ssl/iostreamBIO.cpp b/ibrcommon/ssl/iostreamBIO.cpp\nindex 18c1b55c..ea6c63eb 100644\n--- a/ibrcommon/ssl/iostreamBIO.cpp\n+++ b/ibrcommon/ssl/iostreamBIO.cpp\n@@ -23,6 +23,7 @@\n \n #include \"ibrcommon/Logger.h\"\n \n+#include \"openssl_compat.h\"\n #include <openssl/err.h>\n \n namespace ibrcommon\n@@ -42,7 +43,20 @@ static int create(BIO *bio);\n //static int destroy(BIO *bio);\n //static long (*callback_ctrl)(BIO *, int, bio_info_cb *);\n \n-\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+BIO_METHOD * BIO_iostream_method()\n+{\n+\tstatic BIO_METHOD *iostream_method = NULL;\n+\tif (iostream_method) {\n+\t\tiostream_method = BIO_meth_new(iostreamBIO::type, iostreamBIO::name);\n+\t\tBIO_meth_set_write(iostream_method, bwrite);\n+\t\tBIO_meth_set_read(iostream_method, bread);\n+\t\tBIO_meth_set_ctrl(iostream_method, ctrl);\n+\t\tBIO_meth_set_create(iostream_method, create);\n+\t}\n+\treturn iostream_method;\n+}\n+#else\n static BIO_METHOD iostream_method =\n {\n \t\tiostreamBIO::type,\n@@ -56,12 +70,17 @@ static BIO_METHOD iostream_method =\n \t\tNULL,//destroy,\n \t\tNULL//callback_ctrl\n };\n+BIO_METHOD * BIO_iostream_method()\n+{\n+\treturn &iostream_method;\n+}\n+#endif\n \n iostreamBIO::iostreamBIO(iostream *stream)\n \t:\t_stream(stream)\n {\n \t/* create BIO */\n-\t_bio = BIO_new(&iostream_method);\n+\t_bio = BIO_new(BIO_iostream_method());\n \tif(!_bio){\n \t\t/* creation failed, throw exception */\n \t\tchar err_buf[ERR_BUF_SIZE];\n@@ -72,7 +91,7 @@ iostreamBIO::iostreamBIO(iostream *stream)\n \t}\n \n \t/* save the iostream in the bio object */\n-\t_bio->ptr = stream;\n+\tBIO_set_data(_bio, (void *) stream);\n }\n \n BIO * iostreamBIO::getBIO(){\n@@ -81,10 +100,10 @@ BIO * iostreamBIO::getBIO(){\n \n static int create(BIO *bio)\n {\n-\tbio->ptr = NULL;\n-\t/* (from openssl memory bio) */\n-\tbio->shutdown=1;\n-\tbio->init=1;\n+\tBIO_set_data(bio, NULL);\n+\tBIO_set_shutdown(bio, 1);\n+\tBIO_set_init(bio, 1);\n+#if OPENSSL_VERSION_NUMBER < 0x10100000L\n \t/* from bss_mem.c (openssl):\n \t * bio->num is used to hold the value to return on 'empty', if it is\n \t * 0, should_retry is not set\n@@ -93,6 +112,7 @@ static int create(BIO *bio)\n \t * it is set to 0 since the underlying stream is blocking\n \t */\n \tbio->num= 0;\n+#endif\n \n \treturn 1;\n }\n@@ -102,7 +122,7 @@ static int create(BIO *bio)\n static long ctrl(BIO *bio, int cmd, long  num, void *)\n {\n \tlong ret;\n-\tiostream *stream = reinterpret_cast<iostream*>(bio->ptr);\n+\tiostream *stream = reinterpret_cast<iostream*>(BIO_get_data(bio));\n \n \tIBRCOMMON_LOGGER_DEBUG_TAG(\"iostreamBIO\", 90) << \"ctrl called, cmd: \" << cmd << \", num: \" << num << \".\" << IBRCOMMON_LOGGER_ENDL;\n \n@@ -147,8 +167,12 @@ static long ctrl(BIO *bio, int cmd, long  num, void *)\n \n static int bread(BIO *bio, char *buf, int len)\n {\n-\tiostream *stream = reinterpret_cast<iostream*>(bio->ptr);\n+\tiostream *stream = reinterpret_cast<iostream*>(BIO_get_data(bio));\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+\tint num_bytes = 0;\n+#else\n \tint num_bytes = bio->num;\n+#endif\n \n \ttry{\n \t\t/* make sure to read at least 1 byte and then read as much as we can */\n@@ -170,7 +194,7 @@ static int bwrite(BIO *bio, const char *buf, int len)\n \tif(len == 0){\n \t\treturn 0;\n \t}\n-\tiostream *stream = reinterpret_cast<iostream*>(bio->ptr);\n+\tiostream *stream = reinterpret_cast<iostream*>(BIO_get_data(bio));\n \n \t/* write the data */\n \ttry{\ndiff --git a/ibrcommon/ssl/openssl_compat.h b/ibrcommon/ssl/openssl_compat.h\nnew file mode 100644\nindex 00000000..e491677f\n--- /dev/null\n+++ b/ibrcommon/ssl/openssl_compat.h\n@@ -0,0 +1,38 @@\n+#ifndef OPENSSL_COMPAT_H\n+#define OPENSSL_COMPAT_H\n+\n+#include <openssl/crypto.h>\n+#if OPENSSL_VERSION_NUMBER < 0x10100000L\n+\n+#include <openssl/evp.h>\n+#include <openssl/hmac.h>\n+\n+static inline EVP_MD_CTX * EVP_MD_CTX_new()\n+{\n+\tEVP_MD_CTX *ctx;\n+\n+\tctx = (EVP_MD_CTX *) OPENSSL_malloc(sizeof(EVP_MD_CTX));\n+\tEVP_MD_CTX_init(ctx);\n+        return ctx;\n+}\n+#define EVP_MD_CTX_free(c) if (c != NULL) OPENSSL_free(c)\n+\n+static inline HMAC_CTX * HMAC_CTX_new()\n+{\n+        HMAC_CTX *ctx;\n+\n+        ctx = (HMAC_CTX *) OPENSSL_malloc(sizeof(HMAC_CTX));\n+        HMAC_CTX_init(ctx);\n+        return ctx;\n+}\n+#define HMAC_CTX_free(c) if (c != NULL) OPENSSL_free(c)\n+\n+#define BIO_get_data(b) b->ptr\n+#define BIO_set_data(b, v) b->ptr=v\n+#define BIO_set_shutdown(b, v) b->shutdown=v\n+#define BIO_set_init(b, v) b->init=v\n+\n+#endif /* OPENSSL_VERSION_NUMBER */\n+\n+#endif /* OPENSSL_COMPAT_H */\n+\n-- \n2.18.0\n\n"
  },
  {
    "path": "package/ibrcommon/0003-ibrcommon-ssl-gcm-fix-static-build-with-openssl.patch",
    "content": "From 8118c43a53271ba2dd31ce3913a3cd21bc7dcca7 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 16 Feb 2019 11:58:34 +0100\nSubject: [PATCH] ibrcommon/ssl/gcm: fix static build with openssl\n\ngf_mul is already defined in libcrypto (openssl) so rename it into\nibrdtn_gf_mul to fix following build failure:\n\n/home/buildroot/autobuild/instance-3/output/host/bin/../arm-buildroot-uclinux-uclibcgnueabi/sysroot/usr/lib/libcrypto.a(f_impl.o): In function `gf_mul':\nf_impl.c:(.text+0x0): multiple definition of `gf_mul'\n/home/buildroot/autobuild/instance-3/output/host/arm-buildroot-uclinux-uclibcgnueabi/sysroot/usr/lib/libibrcommon.a(gf128mul.o):gf128mul.cpp:(.text+0x30): first defined here\ncollect2: error: ld returned 1 exit status\nMakefile:560: recipe for target 'dtnd' failed\n\nFixes:\n - http://autobuild.buildroot.org/results/1d3b4b6cf043a3e185ce758b617a0a18c3d36cdb\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/ibrdtn/ibrdtn/pull/269]\n---\n ibrcommon/ibrcommon/ssl/gcm/gcm.cpp      | 10 +++++-----\n ibrcommon/ibrcommon/ssl/gcm/gf128mul.cpp |  2 +-\n ibrcommon/ibrcommon/ssl/gcm/gf128mul.h   |  2 +-\n 3 files changed, 7 insertions(+), 7 deletions(-)\n\ndiff --git a/ibrcommon/ssl/gcm/gcm.cpp b/ibrcommon/ssl/gcm/gcm.cpp\nindex 8a5745b4..6097b43e 100644\n--- a/ibrcommon/ssl/gcm/gcm.cpp\n+++ b/ibrcommon/ssl/gcm/gcm.cpp\n@@ -89,7 +89,7 @@ ret_type gcm_init_and_key(                      /* initialise mode and set key\n #elif defined( TABLES_256 )\r\n #define gf_mul_hh(a, ctx, scr)  gf_mul_256(a, ctx->gf_t256, scr)\r\n #else\r\n-#define gf_mul_hh(a, ctx, scr)  gf_mul(a, ui8_ptr(ctx->ghash_h))\r\n+#define gf_mul_hh(a, ctx, scr)  ibrdtn_gf_mul(a, ui8_ptr(ctx->ghash_h))\r\n #endif\r\n \r\n ret_type gcm_init_message(                      /* initialise a new message     */\r\n@@ -334,9 +334,9 @@ ret_type gcm_compute_tag(                       /* compute authentication tag\n         memcpy(tbuf, ctx->ghash_h, BLOCK_SIZE);\r\n         for( ; ; )\r\n         {\r\n-            if(ln & 1) gf_mul(ui8_ptr(ctx->hdr_ghv), tbuf);\r\n+            if(ln & 1) ibrdtn_gf_mul(ui8_ptr(ctx->hdr_ghv), tbuf);\r\n             if(!(ln >>= 1)) break;\r\n-            gf_mul(tbuf, tbuf);\r\n+            ibrdtn_gf_mul(tbuf, tbuf);\r\n         }\r\n     }\r\n #else   /* this one seems slower on x86 and x86_64 :-( */\r\n@@ -348,12 +348,12 @@ ret_type gcm_compute_tag(                       /* compute authentication tag\n         tbuf[0] = 0x80;\r\n         while(i)\r\n         {\r\n-            gf_mul(tbuf, tbuf);\r\n+            ibrdtn_gf_mul(tbuf, tbuf);\r\n             if(i & ln)\r\n                 gf_mul_hh(tbuf, ctx, scratch);\r\n             i >>= 1;\r\n         }\r\n-        gf_mul(ui8_ptr(ctx->hdr_ghv), tbuf);\r\n+        ibrdtn_gf_mul(ui8_ptr(ctx->hdr_ghv), tbuf);\r\n     }\r\n #endif\r\n     i = BLOCK_SIZE; ln = (uint_32t)(ctx->txt_acnt << 3);\r\ndiff --git a/ibrcommon/ssl/gcm/gf128mul.cpp b/ibrcommon/ssl/gcm/gf128mul.cpp\nindex a553a044..d0c460c3 100644\n--- a/ibrcommon/ssl/gcm/gf128mul.cpp\n+++ b/ibrcommon/ssl/gcm/gf128mul.cpp\n@@ -103,7 +103,7 @@\n \r\n const unsigned short gf_tab[256] = gf_dat(xda);\r\n \r\n-void gf_mul(void *a, const void* b)\r\n+void ibrdtn_gf_mul(void *a, const void* b)\r\n {   uint_32t r[GF_BYTE_LEN >> 2], p[8][GF_BYTE_LEN >> 2];\r\n     int i;\r\n \r\ndiff --git a/ibrcommon/ssl/gcm/gf128mul.h b/ibrcommon/ssl/gcm/gf128mul.h\nindex 4645c7fe..65fba54b 100644\n--- a/ibrcommon/ssl/gcm/gf128mul.h\n+++ b/ibrcommon/ssl/gcm/gf128mul.h\n@@ -619,7 +619,7 @@ gf_inline void mul_x(void *r, const void *x)\n \r\n /*  A slow generic version of gf_mul (a = a * b) */\r\n \r\n-void gf_mul(void *a, const void* b);\r\n+void ibrdtn_gf_mul(void *a, const void* b);\r\n \r\n /*  This version uses 64k bytes of table space on the stack.\r\n     A 16 byte buffer has to be multiplied by a 16 byte key\r\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/ibrcommon/Config.in",
    "content": "config BR2_PACKAGE_IBRCOMMON\n\tbool \"ibrcommon\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  IBR-DTN is a small dtn application that supports:\n\t  Bundle Protocol RFC 5050\n\t  Bundle Security Protocol RFC 6257\n\n\t  http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn\n\ncomment \"ibrcommon needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/ibrcommon/ibrcommon.hash",
    "content": "# Locally calculated\nsha256\t  9c457c1ebc01e6216524636628c647bef34ab11bd96f0e0788be8749374fdc20\tibrcommon-1.0.1.tar.gz\nsha256\t  1a0b57773a46d9d4cc2f0d1780a17acc38af506bb1e0234aaa85f8ccd6dc0b92\tCOPYING\nsha256\t  9b8a430c2136ebcf76bd37f50da7d7a80ede413ec6604cc4694ea536e779854c\tREADME\n"
  },
  {
    "path": "package/ibrcommon/ibrcommon.mk",
    "content": "################################################################################\n#\n# ibrcommon\n#\n################################################################################\n\nIBRCOMMON_VERSION = 1.0.1\nIBRCOMMON_SITE = https://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases\nIBRCOMMON_INSTALL_STAGING = YES\nIBRCOMMON_LICENSE = Apache-2.0\nIBRCOMMON_LICENSE_FILES = COPYING README\nIBRCOMMON_DEPENDENCIES = host-pkgconf\nIBRCOMMON_CONF_ENV = CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nIBRCOMMON_DEPENDENCIES += openssl\nIBRCOMMON_CONF_OPTS += --with-openssl\nelse\nIBRCOMMON_CONF_OPTS += --without-openssl\nendif\n\nifeq ($(BR2_PACKAGE_LIBNL),y)\nIBRCOMMON_DEPENDENCIES += libnl\nIBRCOMMON_CONF_OPTS += --with-lowpan\nelse\nIBRCOMMON_CONF_OPTS += --without-lowpan\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nIBRCOMMON_DEPENDENCIES += libxml2\nIBRCOMMON_CONF_OPTS += --with-xml\nelse\nIBRCOMMON_CONF_OPTS += --without-xml\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ibrdtn/Config.in",
    "content": "config BR2_PACKAGE_IBRDTN\n\tbool \"ibrdtn\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_IBRCOMMON\n\thelp\n\t  IBR-DTN is a small dtn application that supports:\n\t  Bundle Protocol RFC 5050\n\t  Bundle Security Protocol RFC 6257\n\n\t  This package contains the ibrdtn library.\n\n\t  http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn\n\ncomment \"ibrdtn needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/ibrdtn/ibrdtn.hash",
    "content": "# Locally calculated\nsha256  288b14ccbaefb5e3234065c2778c247797ccb3c7afbb6746bb37dc12c620d360  ibrdtn-1.0.1.tar.gz\nsha256  809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0  COPYING\n"
  },
  {
    "path": "package/ibrdtn/ibrdtn.mk",
    "content": "################################################################################\n#\n# ibrdtn\n#\n################################################################################\n\nIBRDTN_VERSION = 1.0.1\nIBRDTN_SITE = https://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases\nIBRDTN_INSTALL_STAGING = YES\nIBRDTN_LICENSE = Apache-2.0\nIBRDTN_LICENSE_FILES = COPYING\nIBRDTN_DEPENDENCIES = ibrcommon host-pkgconf\nIBRDTN_CONF_ENV = CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nIBRDTN_CONF_OPTS += --with-compression\nIBRDTN_DEPENDENCIES += zlib\nelse\nIBRDTN_CONF_OPTS += --without-compression\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nIBRDTN_CONF_OPTS += --with-glib\nIBRDTN_DEPENDENCIES += libglib2\nelse\nIBRDTN_CONF_OPTS += --without-glib\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ibrdtn-tools/Config.in",
    "content": "config BR2_PACKAGE_IBRDTN_TOOLS\n\tbool \"ibrdtn-tools\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_IBRCOMMON\n\tselect BR2_PACKAGE_IBRDTN\n\thelp\n\t  IBR-DTN is a small dtn application that supports:\n\t  Bundle Protocol RFC 5050\n\t  Bundle Security Protocol RFC 6257\n\n\t  http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn\n\ncomment \"ibrdtn-tools needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/ibrdtn-tools/ibrdtn-tools.hash",
    "content": "# Locally calculated\nsha256  eab066cf15f9c322d769c6c9c58adfb474cba7d446fd12e8de5ff6344376795b  ibrdtn-tools-1.0.1.tar.gz\nsha256  809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0  COPYING\n"
  },
  {
    "path": "package/ibrdtn-tools/ibrdtn-tools.mk",
    "content": "################################################################################\n#\n# ibrdtn-tools\n#\n################################################################################\n\nIBRDTN_TOOLS_VERSION = 1.0.1\nIBRDTN_TOOLS_SITE = https://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases\nIBRDTN_TOOLS_LICENSE = Apache-2.0\nIBRDTN_TOOLS_LICENSE_FILES = COPYING\nIBRDTN_TOOLS_DEPENDENCIES = ibrcommon ibrdtn host-pkgconf\nIBRDTN_TOOLS_CONF_ENV = CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\n\nifeq ($(BR2_STATIC_LIBS),y)\nIBRDTN_TOOLS_CONF_ENV += LDFLAGS=\"$(TARGET_LDFLAGS) -pthread\"\nendif\n\nifeq ($(BR2_PACKAGE_LIBDAEMON),y)\nIBRDTN_TOOLS_CONF_OPTS += --with-libdaemon\nIBRDTN_TOOLS_DEPENDENCIES += libdaemon\nelse\nIBRDTN_TOOLS_CONF_OPTS += --without-libdaemon\nendif\n\nifeq ($(BR2_PACKAGE_LIBARCHIVE),y)\nIBRDTN_TOOLS_CONF_OPTS += --with-libarchive\nIBRDTN_TOOLS_DEPENDENCIES += libarchive\nelse\nIBRDTN_TOOLS_CONF_OPTS += --without-libarchive\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ibrdtnd/0001-ibrdtnd-added-openssl-compatibility.patch",
    "content": "From 8785fe0be66c8d6eaa94ffde921909a7ec220123 Mon Sep 17 00:00:00 2001\nFrom: Eneas U de Queiroz <cote2004-github@yahoo.com>\nDate: Sat, 26 May 2018 23:44:54 -0300\nSubject: [PATCH] ibrdtnd: added openssl compatibility\n\nThis patch adds compatibility with openssl 1.1.0 to ibrdtnd.\n\nUpstream: https://github.com/ibrdtn/ibrdtn/pull/265\n\nSigned-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n src/security/exchange/DHProtocol.cpp | 36 ++++++++++---\n src/security/exchange/Makefile.am    |  2 +\n src/security/exchange/openssl_compat.cpp       | 62 ++++++++++++++++++++++\n src/security/exchange/openssl_compat.h  | 13 +++++\n 4 files changed, 107 insertions(+), 6 deletions(-)\n create mode 100644 src/security/exchange/openssl_compat.cpp\n create mode 100644 src/security/exchange/openssl_compat.h\n\ndiff --git a/src/security/exchange/DHProtocol.cpp b/src/security/exchange/DHProtocol.cpp\nindex e94c502..3e0ad71 100644\n--- a/src/security/exchange/DHProtocol.cpp\n+++ b/src/security/exchange/DHProtocol.cpp\n@@ -30,6 +30,7 @@\n \n #include <openssl/rand.h>\n #include <openssl/pem.h>\n+#include \"openssl_compat.h\"\n \n #define DH_KEY_LENGTH 1024\n \n@@ -132,6 +133,7 @@ namespace dtn\n \n \t\tvoid DHProtocol::begin(KeyExchangeSession &session, KeyExchangeData &data)\n \t\t{\n+\t\t\tconst BIGNUM *pub_key, *p, *g;\n \t\t\t// get session state\n \t\t\tDHState &state = session.getState<DHState>();\n \n@@ -159,9 +161,12 @@ namespace dtn\n \t\t\t// prepare request\n \t\t\tKeyExchangeData request(KeyExchangeData::REQUEST, session);\n \n-\t\t\twrite(request, state.dh->pub_key);\n-\t\t\twrite(request, state.dh->p);\n-\t\t\twrite(request, state.dh->g);\n+\t\t\tDH_get0_pqg(state.dh, &p, NULL, &g);\n+\t\t\tDH_get0_key(state.dh, &pub_key, NULL);\n+\n+\t\t\twrite(request, pub_key);\n+\t\t\twrite(request, p);\n+\t\t\twrite(request, g);\n \n \t\t\tmanager.submit(session, request);\n \t\t}\n@@ -177,6 +182,15 @@ namespace dtn\n \t\t\t\t{\n \t\t\t\t\tif (data.getAction() == KeyExchangeData::REQUEST)\n \t\t\t\t\t{\n+\t\t\t\t\t\tBIGNUM *p = BN_new();\n+\t\t\t\t\t\tBIGNUM *g = BN_new();\n+\t\t\t\t\t\tif (p == NULL || g == NULL)\n+\t\t\t\t\t\t{\n+\t\t\t\t\t\t\tBN_free(p);\n+\t\t\t\t\t\t\tBN_free(g);\n+\t\t\t\t\t\t\tthrow ibrcommon::Exception(\"Error while allocating space for DH parameters\");\n+\t\t\t\t\t\t}\n+\n \t\t\t\t\t\tBIGNUM* pub_key = BN_new();\n \t\t\t\t\t\tread(data, &pub_key);\n \n@@ -184,8 +198,16 @@ namespace dtn\n \t\t\t\t\t\tstate.dh = DH_new();\n \n \t\t\t\t\t\t// read p and g paramter from message\n-\t\t\t\t\t\tread(data, &state.dh->p);\n-\t\t\t\t\t\tread(data, &state.dh->g);\n+\t\t\t\t\t\tread(data, &p);\n+\t\t\t\t\t\tread(data, &g);\n+\n+\t\t\t\t\t\tif (DH_set0_pqg(state.dh, p, NULL, g))\n+\t\t\t\t\t\t{\n+\t\t\t\t\t\t\tBN_free(p);\n+\t\t\t\t\t\t\tBN_free(g);\n+\t\t\t\t\t\t\tBN_free(pub_key);\n+\t\t\t\t\t\t\tthrow ibrcommon::Exception(\"Error while setting DH parameters\");\n+\t\t\t\t\t\t}\n \n \t\t\t\t\t\tint codes;\n \t\t\t\t\t\tif (!DH_check(state.dh, &codes))\n@@ -213,7 +235,9 @@ namespace dtn\n \t\t\t\t\t\tstate.secret.assign((const char*)secret, length);\n \n \t\t\t\t\t\tKeyExchangeData response(KeyExchangeData::RESPONSE, session);\n-\t\t\t\t\t\twrite(response, state.dh->pub_key);\n+\t\t\t\t\t\tconst BIGNUM *state_dh_pub_key;\n+\t\t\t\t\t\tDH_get0_key(state.dh, &state_dh_pub_key, NULL);\n+\t\t\t\t\t\twrite(response, state_dh_pub_key);\n \n \t\t\t\t\t\tmanager.submit(session, response);\n \ndiff --git a/src/security/exchange/Makefile.am b/src/security/exchange/Makefile.am\nindex a6b2f83..71ed836 100644\n--- a/src/security/exchange/Makefile.am\n+++ b/src/security/exchange/Makefile.am\n@@ -22,6 +22,8 @@ exchange_SOURCES += \\\n \tNFCProtocol.cpp \\\n \tNoneProtocol.h \\\n \tNoneProtocol.cpp \\\n+\topenssl_compat.h \\\n+\topenssl_compat.cpp \\\n \tQRCodeProtocol.h \\\n \tQRCodeProtocol.cpp\n \t\ndiff --git a/src/security/exchange/openssl_compat.cpp b/src/security/exchange/openssl_compat.cpp\nnew file mode 100644\nindex 0000000..e3baba0\n--- /dev/null\n+++ b/src/security/exchange/openssl_compat.cpp\n@@ -0,0 +1,62 @@\n+/*\n+ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.\n+ *\n+ * Licensed under the OpenSSL license (the \"License\").  You may not use\n+ * this file except in compliance with the License.  You can obtain a copy\n+ * in the file LICENSE in the source distribution or at\n+ * https://www.openssl.org/source/license.html\n+ */\n+\n+#include \"openssl_compat.h\"\n+\n+#if OPENSSL_VERSION_NUMBER < 0x10100000L\n+\n+void DH_get0_pqg(const DH *dh,\n+                 const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)\n+{\n+    if (p != NULL)\n+        *p = dh->p;\n+    if (q != NULL)\n+        *q = dh->q;\n+    if (g != NULL)\n+        *g = dh->g;\n+}\n+\n+int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)\n+{\n+    /* If the fields p and g in d are NULL, the corresponding input\n+     * parameters MUST be non-NULL.  q may remain NULL.\n+     */\n+    if ((dh->p == NULL && p == NULL)\n+        || (dh->g == NULL && g == NULL))\n+        return 0;\n+\n+    if (p != NULL) {\n+        BN_free(dh->p);\n+        dh->p = p;\n+    }\n+    if (q != NULL) {\n+        BN_free(dh->q);\n+        dh->q = q;\n+    }\n+    if (g != NULL) {\n+        BN_free(dh->g);\n+        dh->g = g;\n+    }\n+\n+    if (q != NULL) {\n+        dh->length = BN_num_bits(q);\n+    }\n+\n+    return 1;\n+}\n+\n+void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key)\n+{\n+    if (pub_key != NULL)\n+        *pub_key = dh->pub_key;\n+    if (priv_key != NULL)\n+        *priv_key = dh->priv_key;\n+}\n+\n+#endif /* OPENSSL_VERSION_NUMBER */\ndiff --git a/src/security/exchange/openssl_compat.h b/src/security/exchange/openssl_compat.h\nnew file mode 100644\nindex 0000000..29e7d41\n--- /dev/null\n+++ b/src/security/exchange/openssl_compat.h\n@@ -0,0 +1,13 @@\n+#ifndef LIBCRYPTO_COMPAT_H\n+#define LIBCRYPTO_COMPAT_H\n+\n+#if OPENSSL_VERSION_NUMBER < 0x10100000L\n+\n+#include <openssl/dh.h>\n+\n+void DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);\n+int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g);\n+void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key);\n+\n+#endif /* OPENSSL_VERSION_NUMBER */\n+#endif /* LIBCRYPTO_COMPAT_H */\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/ibrdtnd/0002-SecurityCertificateManager.cpp-include-cstring-267.patch",
    "content": "From 9458a8627ed73600488a6d8a0ce2ce1d123da583 Mon Sep 17 00:00:00 2001\nFrom: bkuhls <bkuhls@users.noreply.github.com>\nDate: Sun, 19 Aug 2018 11:23:48 +0200\nSubject: [PATCH] SecurityCertificateManager.cpp: include cstring (#267)\n\nFixes build with gcc-8.2.0.\n\nUpstream: https://github.com/ibrdtn/ibrdtn/commit/122fa8ed49f896abf6a389505f3d0b66d49d1e77\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n src/security/SecurityCertificateManager.cpp | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/security/SecurityCertificateManager.cpp b/src/security/SecurityCertificateManager.cpp\nindex 5fba703..f2bbb01 100644\n--- a/src/security/SecurityCertificateManager.cpp\n+++ b/src/security/SecurityCertificateManager.cpp\n@@ -22,6 +22,7 @@\n #include \"security/SecurityCertificateManager.h\"\n #include \"Configuration.h\"\n \n+#include <cstring>\n #include <cstdlib>\n \n #include <ibrcommon/Logger.h>\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/ibrdtnd/Config.in",
    "content": "config BR2_PACKAGE_IBRDTND\n\tbool \"ibrdtnd\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_IBRDTN\n\tselect BR2_PACKAGE_IBRCOMMON\n\thelp\n\t  IBR-DTN is a small dtn application that supports:\n\t  Bundle Protocol RFC 5050\n\t  Bundle Security Protocol RFC 6257\n\n\t  http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn\n\ncomment \"ibrdtnd needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/ibrdtnd/ibrdtnd.hash",
    "content": "# Locally calculated\nsha256  9bd79636154093ab6bf4fd10d6c62d67c6db45141460847b19def327c93771ed  ibrdtnd-1.0.1.tar.gz\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  COPYING\n"
  },
  {
    "path": "package/ibrdtnd/ibrdtnd.mk",
    "content": "################################################################################\n#\n# ibrdtnd\n#\n################################################################################\n\nIBRDTND_VERSION = 1.0.1\nIBRDTND_SITE = https://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases\nIBRDTND_LICENSE = Apache-2.0\nIBRDTND_LICENSE_FILES = COPYING\nIBRDTND_DEPENDENCIES = ibrdtn ibrcommon host-pkgconf\n\n# Disable features that don't have the necessary dependencies in\n# Buildroot\nIBRDTND_CONF_OPTS = \\\n\t--disable-dtndht \\\n\t--without-wifip2p \\\n\t--without-vmime\n\n# don't build documentation\nIBRDTND_CONF_ENV = \\\n\tPDFLATEX='no' \\\n\tCXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\n\nifeq ($(BR2_PACKAGE_LIBDAEMON),y)\nIBRDTND_CONF_OPTS += --enable-libdaemon\nIBRDTND_DEPENDENCIES += libdaemon\nelse\nIBRDTND_CONF_OPTS += --disable-libdaemon\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nIBRDTND_CONF_OPTS += --with-curl\nIBRDTND_DEPENDENCIES += libcurl\nelse\nIBRDTND_CONF_OPTS += --without-curl\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE),y)\nIBRDTND_CONF_OPTS += --with-sqlite\nIBRDTND_DEPENDENCIES += sqlite\nelse\nIBRDTND_CONF_OPTS += --without-sqlite\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nIBRDTND_CONF_OPTS += --with-tls\nIBRDTND_DEPENDENCIES += openssl\nelse\nIBRDTND_CONF_OPTS += --without-tls\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/icu/0001-dont-build-static-dynamic-twice.patch",
    "content": "Don't build object files twice\n\nWhen passed --enable-static and --enable-shared, icu will generate\nboth a shared and a static version of its libraries.\n\nHowever, in order to do so, it builds each and every object file\ntwice: once with -fPIC (for the shared library), and once without\n-fPIC (for the static library). While admittedly building -fPIC for a\nstatic library generates a slightly suboptimal code, this is what all\nthe autotools-based project are doing. They build each object file\nonce, and they use it for both the static and shared libraries.\n\nicu builds the object files for the shared library as .o files, and\nthe object files for static library as .ao files. By simply changing\nthe suffix of object files used for static libraries to \".o\", we tell\nicu to use the ones built for the shared library (i.e, with -fPIC),\nand avoid the double build of icu.\n\nOn a fast build server, this brings the target icu build from\n3m41.302s down to 1m43.926s (approximate numbers: some other builds\nare running on the system at the same time).\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/source/config/mh-linux\n===================================================================\n--- a/source/config/mh-linux\n+++ b/source/config/mh-linux\n@@ -35,7 +35,7 @@\n ## Shared object suffix\n SO = so\n ## Non-shared intermediate object suffix\n-STATIC_O = ao\n+STATIC_O = o\n \n ## Compilation rules\n %.$(STATIC_O): $(srcdir)/%.c\n"
  },
  {
    "path": "package/icu/0002-workaround-toolchain-bugs.patch",
    "content": "Workaround toolchain bugs\n\nMany of ARM Sourcery CodeBench toolchain have a bug when compiling\nicu's translit.cpp source file. The bug is trigerred when there is a\ncombination of \"-W -Wall\" and \"-Os\", and causes an internal compiler\nerror. The bug has been reported to Mentor Graphics.\n\nEven though it is clearly a toolchain bug, having a workaround for it\nis trivial in this case. So it will avoid our users falling into this\ninternal compiler error, and allow our autobuilders to test more\npackages using this Sourcery CodeBench toolchain.qq\n\n[Gustavo: update for ICU4C 54.1]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura icu.orig/source/configure icu/source/configure\n--- icu.orig/source/configure\t2014-12-18 15:49:43.038628644 -0300\n+++ icu/source/configure\t2014-12-18 15:51:23.183083232 -0300\n@@ -4323,7 +4323,7 @@\n                 ;;\n             esac\n \n-            CFLAGS=\"$CFLAGS -Wall -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings\"\n+            CFLAGS=\"$CFLAGS -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings\"\n         else\n             case \"${host}\" in\n             *-*-cygwin)\n@@ -4337,7 +4337,7 @@\n         fi\n         if test \"$GXX\" = yes\n         then\n-            CXXFLAGS=\"$CXXFLAGS -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long\"\n+            CXXFLAGS=\"$CXXFLAGS -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long\"\n         else\n             case \"${host}\" in\n             *-*-cygwin)\n"
  },
  {
    "path": "package/icu/0003-link-icudata-as-data-only.patch",
    "content": "From d5d0c4bb7cc9aa4a132ec0bea13255aee50c1cf9 Mon Sep 17 00:00:00 2001\nFrom: Maxime Hadjinlian <maxime.hadjinlian@devialet.com>\nDate: Fri, 6 Jun 2014 14:55:58 +0200\nSubject: [PATCH] Don't link icudata as a data only library\n\nThis patch cames straight from Debian. It fixes an issue when\nlibicudata would not have some flags indicating it's EABIhf, causing\napplications linked against libicudata to not start on EABIhf\nsystems. Getting rid of the -nodefaultlibs -nostdlib flags solves the\nproblem, and is the solution that is used by Debian, see\nhttps://bugs.debian.org/cgi-bin/bugreport.cgi?bug=653457.\n\nSigned-off-by: Maxime Hadjinlian <maxime.hadjinlian@devialet.com>\n---\n source/config/mh-linux | 4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/source/config/mh-linux b/source/config/mh-linux\nindex 531a3b2..5a2a7c4 100644\n--- a/source/config/mh-linux\n+++ b/source/config/mh-linux\n@@ -21,7 +21,9 @@ LD_RPATH= -Wl,-zorigin,-rpath,'$$'ORIGIN\n LD_RPATH_PRE = -Wl,-rpath,\n\n ## These are the library specific LDFLAGS\n-LDFLAGSICUDT=-nodefaultlibs -nostdlib\n+#LDFLAGSICUDT=-nodefaultlibs -nostdlib\n+# Debian change: linking icudata as data only causes too many problems.\n+LDFLAGSICUDT=\n\n ## Compiler switch to embed a library name\n # The initial tab in the next line is to prevent icu-config from reading it.\n--\n2.0.0.rc2\n\n"
  },
  {
    "path": "package/icu/0004-fix-static-linking-with-icu-uc.patch",
    "content": "From ffff12fd321c7a056e796e74cc508726b0626ae0 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Wed, 22 Jul 2015 22:43:25 +0200\nSubject: [PATCH] fix static linking with icu-uc\n\nDuring static linking with a C application and libicuuc.a,\n-lstdc++ is required.\n\nAdd -lstdc++ in Libs.private of icu-uc.pc.\n\nFixes:\nhttp://autobuild.buildroot.net/results/210/2107f9dfb39eeb6559fb4271c7af8b39aef521ca/\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n source/Makefile.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/source/Makefile.in b/source/Makefile.in\nindex 9db6c52..ca48e16 100644\n--- a/source/Makefile.in\n+++ b/source/Makefile.in\n@@ -264,7 +264,7 @@ config/icu-uc.pc: config/icu.pc Makefile icudefs.mk\n \t@echo \"Description: $(PACKAGE_ICU_DESCRIPTION): Common and Data libraries\" >> $@\n \t@echo \"Name: $(PACKAGE)-uc\" >> $@\n \t@echo \"Libs:\" '-L$${libdir}' \"${ICULIBS_UC}\" \"${ICULIBS_DT}\" >> $@\n-\t@echo \"Libs.private:\" '$${baselibs}' >> $@\n+\t@echo \"Libs.private:\" '$${baselibs}' -lstdc++ >> $@\n \t@echo $@ updated.\n \n config/icu-i18n.pc: config/icu.pc Makefile icudefs.mk\n-- \n2.4.3\n\n"
  },
  {
    "path": "package/icu/0005-ICU-21587-Fix-memory-bug-w-baseName.patch",
    "content": "From 2dc5bea9061b4fb05cd03e21b775dd944a0eb81d Mon Sep 17 00:00:00 2001\nFrom: Frank Tang <ftang@chromium.org>\nDate: Tue, 13 Apr 2021 15:16:50 -0700\nSubject: [PATCH] ICU-21587 Fix memory bug w/ baseName\n\nEdge cases not fixed in assign and move assign operator\nwhile the locale is long and call setKeywordValue with incorrect\nkeyword/values.\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n[Peter: Fixes CVE-2021-30535, adjust paths for tarball]\n---\n source/common/locid.cpp          | 11 +++++++++--\n source/test/intltest/loctest.cpp | 26 ++++++++++++++++++++++++++\n source/test/intltest/loctest.h   |  2 ++\n 3 files changed, 37 insertions(+), 2 deletions(-)\n\ndiff --git a/source/common/locid.cpp b/source/common/locid.cpp\nindex 02cd82a7b8..3c6e5b0669 100644\n--- a/source/common/locid.cpp\n+++ b/source/common/locid.cpp\n@@ -469,14 +469,18 @@ Locale& Locale::operator=(Locale&& other) U_NOEXCEPT {\n     if ((baseName != fullName) && (baseName != fullNameBuffer)) uprv_free(baseName);\n     if (fullName != fullNameBuffer) uprv_free(fullName);\n \n-    if (other.fullName == other.fullNameBuffer) {\n+    if (other.fullName == other.fullNameBuffer || other.baseName == other.fullNameBuffer) {\n         uprv_strcpy(fullNameBuffer, other.fullNameBuffer);\n+    }\n+    if (other.fullName == other.fullNameBuffer) {\n         fullName = fullNameBuffer;\n     } else {\n         fullName = other.fullName;\n     }\n \n-    if (other.baseName == other.fullName) {\n+    if (other.baseName == other.fullNameBuffer) {\n+        baseName = fullNameBuffer;\n+    } else if (other.baseName == other.fullName) {\n         baseName = fullName;\n     } else {\n         baseName = other.baseName;\n@@ -2681,6 +2685,9 @@ Locale::setKeywordValue(const char* keywordName, const char* keywordValue, UErro\n         if (fullName != fullNameBuffer) {\n             // if full Name is already on the heap, need to free it.\n             uprv_free(fullName);\n+            if (baseName == fullName) {\n+                baseName = newFullName; // baseName should not point to freed memory.\n+            }\n         }\n         fullName = newFullName;\n         status = U_ZERO_ERROR;\ndiff --git a/source/test/intltest/loctest.cpp b/source/test/intltest/loctest.cpp\nindex ce41a4c00e..5503b008b0 100644\n--- a/source/test/intltest/loctest.cpp\n+++ b/source/test/intltest/loctest.cpp\n@@ -284,6 +284,8 @@ void LocaleTest::runIndexedTest( int32_t index, UBool exec, const char* &name, c\n     TESTCASE_AUTO(TestSetUnicodeKeywordValueNullInLongLocale);\n     TESTCASE_AUTO(TestCanonicalize);\n     TESTCASE_AUTO(TestLeak21419);\n+    TESTCASE_AUTO(TestLongLocaleSetKeywordAssign);\n+    TESTCASE_AUTO(TestLongLocaleSetKeywordMoveAssign);\n     TESTCASE_AUTO_END;\n }\n \n@@ -6520,6 +6522,30 @@ void LocaleTest::TestSetUnicodeKeywordValueInLongLocale() {\n     }\n }\n \n+void LocaleTest::TestLongLocaleSetKeywordAssign() {\n+    IcuTestErrorCode status(*this, \"TestLongLocaleSetKeywordAssign\");\n+    // A long base name, with an illegal keyword and copy constructor\n+    icu::Locale l(\"de_AAAAAAA1_AAAAAAA2_AAAAAAA3_AAAAAAA4_AAAAAAA5_AAAAAAA6_\"\n+                  \"AAAAAAA7_AAAAAAA8_AAAAAAA9_AAAAAA10_AAAAAA11_AAAAAA12_\"\n+                  \"AAAAAA13_AAAAAA14_AAAAAA15_AAAAAA16_AAAAAA17_AAAAAA18\");\n+    Locale l2;\n+    l.setUnicodeKeywordValue(\"co\", \"12\", status); // Cause an error\n+    status.reset();\n+    l2 = l; // copy operator on such bogus locale.\n+}\n+\n+void LocaleTest::TestLongLocaleSetKeywordMoveAssign() {\n+    IcuTestErrorCode status(*this, \"TestLongLocaleSetKeywordMoveAssign\");\n+    // A long base name, with an illegal keyword and copy constructor\n+    icu::Locale l(\"de_AAAAAAA1_AAAAAAA2_AAAAAAA3_AAAAAAA4_AAAAAAA5_AAAAAAA6_\"\n+                  \"AAAAAAA7_AAAAAAA8_AAAAAAA9_AAAAAA10_AAAAAA11_AAAAAA12_\"\n+                  \"AAAAAA13_AAAAAA14_AAAAAA15_AAAAAA16_AAAAAA17\");\n+    Locale l2;\n+    l.setUnicodeKeywordValue(\"co\", \"12\", status); // Cause an error\n+    status.reset();\n+    Locale l3 = std::move(l); // move assign\n+}\n+\n void LocaleTest::TestSetUnicodeKeywordValueNullInLongLocale() {\n     IcuTestErrorCode status(*this, \"TestSetUnicodeKeywordValueNullInLongLocale\");\n     const char *exts[] = {\"cf\", \"cu\", \"em\", \"kk\", \"kr\", \"ks\", \"kv\", \"lb\", \"lw\",\ndiff --git a/source/test/intltest/loctest.h b/source/test/intltest/loctest.h\nindex 05be4037bd..12a93bde53 100644\n--- a/source/test/intltest/loctest.h\n+++ b/source/test/intltest/loctest.h\n@@ -156,6 +156,8 @@ class LocaleTest: public IntlTest {\n     void TestSetUnicodeKeywordValueInLongLocale();\n     void TestSetUnicodeKeywordValueNullInLongLocale();\n     void TestLeak21419();\n+    void TestLongLocaleSetKeywordAssign();\n+    void TestLongLocaleSetKeywordMoveAssign();\n \n private:\n     void _checklocs(const char* label,\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/icu/Config.in",
    "content": "config BR2_PACKAGE_ICU\n\tbool \"icu\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # C++11 PR56019\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 PR56019\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# icu does some funky things by generating by itself an ELF\n\t# file, and it cannot easily be changed to generate FLAT\n\t# format.\n\tdepends on !BR2_BINFMT_FLAT\n\thelp\n\t  International Components for Unicode.\n\n\t  http://site.icu-project.org/\n\nif BR2_PACKAGE_ICU\n\nconfig BR2_PACKAGE_ICU_CUSTOM_DATA_PATH\n\tstring \"Path to custom data library file\"\n\thelp\n\t  This option allows to define the path to a custom data\n\t  library generated with http://apps.icu-project.org/datacustom/\n\t  Make sure you select the appropiate version to match the one\n\t  provided by buildroot.\n\t  Leave empty to not use this functionality.\n\nendif\n\ncomment \"icu needs a toolchain w/ C++, wchar, threads, gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/icu/icu.hash",
    "content": "# Locally computed\nsha256  4cba7b7acd1d3c42c44bb0c14be6637098c7faf2b330ce876bc5f3b915d09745  icu4c-69_1-src.tgz\nsha256  7915b19db903070778581ae05d8bf4ea241b34a05deb51ca4f5cbb15ea1cbba3  LICENSE\n"
  },
  {
    "path": "package/icu/icu.mk",
    "content": "################################################################################\n#\n# icu\n#\n################################################################################\n\n# Git tags (and therefore versions on release-monitoring.org) use the\n# XX-Y format, but the tarballs are named XX_Y and the containing\n# directories XX.Y.\nICU_VERSION = 69-1\nICU_SOURCE = icu4c-$(subst -,_,$(ICU_VERSION))-src.tgz\nICU_SITE = \\\n\thttps://github.com/unicode-org/icu/releases/download/release-$(ICU_VERSION)\nICU_LICENSE = ICU License\nICU_LICENSE_FILES = LICENSE\nICU_CPE_ID_VENDOR = icu-project\nICU_CPE_ID_PRODUCT = international_components_for_unicode\nICU_CPE_ID_VERSION = $(subst -,.,$(ICU_VERSION))\n\n# 0005-ICU-21587-Fix-memory-bug-w-baseName.patch\nICU_IGNORE_CVES += CVE-2021-30535\n\nICU_DEPENDENCIES = host-icu\nICU_INSTALL_STAGING = YES\nICU_CONFIG_SCRIPTS = icu-config\nICU_CONF_OPTS = \\\n\t--with-cross-build=$(HOST_ICU_DIR)/source \\\n\t--disable-samples \\\n\t--disable-tests\n\n# When available, icu prefers to use C++11 atomics, which rely on the\n# __atomic builtins. On certain architectures, this requires linking\n# with libatomic starting from gcc 4.8.\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nICU_CONF_ENV += LIBS=\"-latomic\"\nendif\n\n# strtod_l() is not supported by musl; also xlocale.h is missing\nifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)\nICU_CONF_ENV += ac_cv_func_strtod_l=no\nendif\n\nHOST_ICU_CONF_OPTS = \\\n\t--disable-samples \\\n\t--disable-tests \\\n\t--disable-extras \\\n\t--disable-icuio \\\n\t--disable-layout\nICU_SUBDIR = source\nHOST_ICU_SUBDIR = source\n\nICU_CUSTOM_DATA_PATH = $(call qstrip,$(BR2_PACKAGE_ICU_CUSTOM_DATA_PATH))\n\nifneq ($(ICU_CUSTOM_DATA_PATH),)\ndefine ICU_COPY_CUSTOM_DATA\n\tcp $(ICU_CUSTOM_DATA_PATH) $(@D)/source/data/in/\nendef\nICU_POST_PATCH_HOOKS += ICU_COPY_CUSTOM_DATA\nendif\n\ndefine ICU_REMOVE_DEV_FILES\n\trm -f $(addprefix $(TARGET_DIR)/usr/bin/,derb genbrk gencfu gencnval gendict genrb icuinfo makeconv uconv)\n\trm -f $(addprefix $(TARGET_DIR)/usr/sbin/,genccode gencmn gennorm2 gensprep icupkg)\n\trm -rf $(TARGET_DIR)/usr/share/icu\nendef\nICU_POST_INSTALL_TARGET_HOOKS += ICU_REMOVE_DEV_FILES\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/ifenslave/Config.in",
    "content": "config BR2_PACKAGE_IFENSLAVE\n\tbool \"ifenslave\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  Configure network interfaces for parallel routing (bonding)\n\n\t  https://salsa.debian.org/debian/ifenslave\n"
  },
  {
    "path": "package/ifenslave/ifenslave.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20170102T091407Z/pool/main/i/ifenslave/ifenslave_2.9.dsc\nsha1 a17e88fa298ef337e872c8aa5d7a390921239d1a   ifenslave_2.9.tar.xz\nsha256  e5666c0b61347bd06f2394c16eca6895fcb5e5cc83d0a1c596a975274de5a3c9  ifenslave_2.9.tar.xz\n# Locally computed\nsha256  299e00f3afc0e6ea0685340df73ad444e58e6fe0229989ba0983f5f33e275c41  debian/copyright\n"
  },
  {
    "path": "package/ifenslave/ifenslave.mk",
    "content": "################################################################################\n#\n# ifenslave\n#\n################################################################################\n\nIFENSLAVE_VERSION = 2.9\nIFENSLAVE_SOURCE = ifenslave_$(IFENSLAVE_VERSION).tar.xz\nIFENSLAVE_SITE = http://snapshot.debian.org/archive/debian/20170102T091407Z/pool/main/i/ifenslave\nIFENSLAVE_LICENSE = GPL-3.0+\nIFENSLAVE_LICENSE_FILES = debian/copyright\n\n# shell script, so nothing to build\n\ndefine IFENSLAVE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/ifenslave $(TARGET_DIR)/sbin/ifenslave\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ifmetric/0001-Fix-issue-NETLINK-Packet-too-small-or-truncated-92-1.patch",
    "content": "From 0c80f9ead3eb1d938b3e8e68165c91e62db72de3 Mon Sep 17 00:00:00 2001\nFrom: Damjan Georgievski <gdamjan@gmail.com>\nDate: Wed, 15 Aug 2012 00:54:38 +0200\nSubject: [PATCH] Fix issue: NETLINK: Packet too small or truncated!\n 92!=16!=244\n\nAs reported in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=514197#22\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n src/nlrequest.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/nlrequest.c b/src/nlrequest.c\nindex 99fd3d0..3a1f794 100644\n--- a/src/nlrequest.c\n+++ b/src/nlrequest.c\n@@ -44,7 +44,7 @@ int netlink_request(int s, struct nlmsghdr *n, int (*callback) (struct nlmsghdr\n \n     for (;;) {\n         int bytes;\n-        char replybuf[2048];\n+        char replybuf[4096];\n         struct nlmsghdr *p = (struct nlmsghdr *) replybuf;\n         \n         if ((bytes = recv(s, &replybuf, sizeof(replybuf), 0)) < 0) {\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/ifmetric/Config.in",
    "content": "config BR2_PACKAGE_IFMETRIC\n\tbool \"ifmetric\"\n\thelp\n\t  Ifmetric is a Linux tool for setting the metrics of all IPv4\n\t  routes attached to a given network interface at once. This\n\t  may be used to change the priority of routing IPv4 traffic\n\t  over the interface. Lower metrics correlate with higher\n\t  priorities.\n\n\t  http://0pointer.de/lennart/projects/ifmetric/\n"
  },
  {
    "path": "package/ifmetric/ifmetric.hash",
    "content": "# Locally calculated\nsha256\t0fa8510a4e34e555f136f9df81d26618313f2d69a4880c0fb5967f19502f1aec  ifmetric-0.3.tar.gz\nsha256\t32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  LICENSE\nsha256\t1e33d5a8750b4b3c2cb4fb89a916463f3c838f8eb361abbf72faf244c7dde771  README\n"
  },
  {
    "path": "package/ifmetric/ifmetric.mk",
    "content": "################################################################################\n#\n# ifmetric\n#\n################################################################################\n\nIFMETRIC_VERSION = 0.3\nIFMETRIC_SITE = http://0pointer.de/lennart/projects/ifmetric\nIFMETRIC_LICENSE = GPL-2.0+\nIFMETRIC_LICENSE_FILES = LICENSE README\n# do not generate documentation\nIFMETRIC_CONF_OPTS = --disable-lynx --disable-xmltoman\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ifplugd/0001-cross.patch",
    "content": "---\n configure |    2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\nIndex: ifplugd-0.28/configure\n===================================================================\n--- ifplugd-0.28.orig/configure\n+++ ifplugd-0.28/configure\n@@ -5430,7 +5430,7 @@\n   echo $ECHO_N \"(cached) $ECHO_C\" >&6\n else\n   if test \"$cross_compiling\" = yes; then\n-  ac_cv_func_malloc_0_nonnull=no\n+  ac_cv_func_malloc_0_nonnull=yes\n else\n   cat >conftest.$ac_ext <<_ACEOF\n /* confdefs.h.  */\n"
  },
  {
    "path": "package/ifplugd/0002-fix-headers.patch",
    "content": "---\n src/interface.c |    2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\nIndex: ifplugd-0.28/src/interface.c\n===================================================================\n--- ifplugd-0.28.orig/src/interface.c\n+++ ifplugd-0.28/src/interface.c\n@@ -23,7 +23,6 @@\n #endif\n \n #include <linux/sockios.h>\n-#include <linux/if_ether.h>\n #include <sys/types.h>\n #include <sys/socket.h>\n #include <sys/ioctl.h>\n@@ -32,6 +31,7 @@\n #include <string.h>\n #include <errno.h>\n #include <netinet/in.h>\n+#include <netinet/if_ether.h>\n #include <stdio.h>\n #include <ctype.h>\n #include <stdlib.h>\n"
  },
  {
    "path": "package/ifplugd/0003-no-cxx.patch",
    "content": "[PATCH] ifplugd: configure: don't check for C++ compiler\n\nThe configure script was checking for a C++ compiler (and erroring out\nif not found), even though it isn't used for anything.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\ndiff -urpN ifplugd-0.28/configure.ac ifplugd-0.28.new/configure.ac\n--- ifplugd-0.28/configure.ac\t2005-06-04 21:21:51.000000000 +0200\n+++ ifplugd-0.28.new/configure.ac\t2008-12-13 20:31:13.000000000 +0100\n@@ -33,7 +33,6 @@ if type -p stow > /dev/null && test -d /\n fi\n \n # Checks for programs.\n-AC_PROG_CXX\n AC_PROG_CC\n AC_PROG_CPP\n AC_PROG_INSTALL\n"
  },
  {
    "path": "package/ifplugd/0004-musl-fix-types.patch",
    "content": "The musl C library does not define type names such as `__uint32_t`. Instead we\nuse the integer types declared in the ISO C standard header file <stdint.h>.\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n\ndiff -purN ifplugd-0.28.orig/src/ethtool-local.h ifplugd-0.28/src/ethtool-local.h\n--- ifplugd-0.28.orig/src/ethtool-local.h\t2015-08-01 18:43:47.360916834 +0200\n+++ ifplugd-0.28/src/ethtool-local.h\t2015-08-01 18:44:24.256037746 +0200\n@@ -21,10 +21,12 @@\n  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.\n  */\n \n+#include <stdint.h>\n+\n typedef unsigned long long u64;\n-typedef __uint32_t u32;        \n-typedef __uint16_t u16;        \n-typedef __uint8_t u8;          \n+typedef uint32_t u32;\n+typedef uint16_t u16;\n+typedef uint8_t u8;\n \n #include \"ethtool-kernel.h\"\n \n"
  },
  {
    "path": "package/ifplugd/0005-src-interface.h-fix-build-with-gcc-10.patch",
    "content": "From 4ce42974267dd969a597a7357d6c98ccbe8140f8 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 17 Aug 2020 20:41:29 +0200\nSubject: [PATCH] src/interface.h: fix build with gcc 10\n\nThis will fix the following build failure:\n\n/home/buildroot/autobuild/instance-1/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -D_REENTRANT  -DSYSCONFDIR=\"\\\"/etc\\\"\" -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os   -pipe -W -Wall -Wno-unused-parameter   -o ifplugstatus ifplugstatus.o interface.o -L/home/buildroot/autobuild/instance-1/output-1/host/bin/../arm-buildroot-linux-gnueabihf/sysroot/usr/lib -ldaemon\n/home/buildroot/autobuild/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: interface.o:(.bss+0x0): multiple definition of `interface_do_message'; ifplugstatus.o:(.bss+0xc): first defined here\n/home/buildroot/autobuild/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: interface.o:(.bss+0x4): multiple definition of `interface_auto_up'; ifplugstatus.o:(.bss+0x4): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/63f7c6fc4a2a30c8eb0298856a2615f816d50299\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to Lennart Poettering <lennart@poettering.net>]\n---\n src/interface.h | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/src/interface.h b/src/interface.h\nindex 2f35a84..e603844 100644\n--- a/src/interface.h\n+++ b/src/interface.h\n@@ -21,8 +21,8 @@\n  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.\n  */\n \n-int interface_auto_up;\n-int interface_do_message;\n+extern int interface_auto_up;\n+extern int interface_do_message;\n \n typedef enum { IFSTATUS_UP, IFSTATUS_DOWN, IFSTATUS_ERR } interface_status_t;\n \n-- \n2.27.0\n\n"
  },
  {
    "path": "package/ifplugd/Config.in",
    "content": "config BR2_PACKAGE_IFPLUGD\n\tbool \"ifplugd\"\n\t# libdaemon uses fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_LIBDAEMON\n\thelp\n\t  Ifplugd is a daemon which will automatically configure your\n\t  ethernet device when a cable is plugged in and automatically\n\t  de-configure it if the cable is pulled out. This is useful\n\t  on laptops with onboard network adapters, since it will only\n\t  configure the interface when a cable is really connected.\n\n\t  http://0pointer.de/lennart/projects/ifplugd/\n"
  },
  {
    "path": "package/ifplugd/ifplugd.hash",
    "content": "# Locally calculated\nsha256  474754ac4ab32d738cbf2a4a3e87ee0a2c71b9048a38bdcd7df1e4f9fd6541f0  ifplugd-0.28.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  LICENSE\n"
  },
  {
    "path": "package/ifplugd/ifplugd.mk",
    "content": "################################################################################\n#\n# ifplugd\n#\n################################################################################\n\nIFPLUGD_VERSION = 0.28\nIFPLUGD_SITE = http://0pointer.de/lennart/projects/ifplugd\nIFPLUGD_LICENSE = GPL-2.0+\nIFPLUGD_LICENSE_FILES = LICENSE\nIFPLUGD_SELINUX_MODULES = ifplugd\nIFPLUGD_AUTORECONF = YES\n\n# install-strip unconditionally overwrites $(TARGET_DIR)/etc/ifplugd/ifplugd.*\nIFPLUGD_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec\nIFPLUGD_CONF_OPTS = --disable-lynx --with-initdir=/etc/init.d/\nIFPLUGD_DEPENDENCIES = libdaemon\n\ndefine IFPLUGD_INSTALL_FIXUP\n\t$(INSTALL) -D -m 0644 $(@D)/conf/ifplugd.conf $(TARGET_DIR)/etc/ifplugd/ifplugd.conf; \\\n\t$(SED) 's^\\(ARGS=.*\\)w^\\1^' $(TARGET_DIR)/etc/ifplugd/ifplugd.conf; \\\n\t$(INSTALL) -D -m 0755 $(@D)/conf/ifplugd.action \\\n\t\t$(TARGET_DIR)/etc/ifplugd/ifplugd.action\nendef\n\nIFPLUGD_POST_INSTALL_TARGET_HOOKS += IFPLUGD_INSTALL_FIXUP\n\ndefine IFPLUGD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 $(@D)/conf/ifplugd.init \\\n\t\t$(TARGET_DIR)/etc/init.d/S45ifplugd\n\t# don't use bash for init script\n\t$(SED) 's^/bin/bash^/bin/sh^g' $(TARGET_DIR)/etc/init.d/S45ifplugd\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/iftop/0001-ui_common.h-fix-build-with-gcc-10.patch",
    "content": "From 18a9f7732944bfe45023f9dd7528295e7d43e678 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 12 Aug 2020 22:31:33 +0200\nSubject: [PATCH] ui_common.h: fix build with gcc 10\n\nDefine global variables as extern in header to fix the build with gcc 10\nwhich default to -fno-common: https://gcc.gnu.org/gcc-10/porting_to.html\n\nFixes:\n - http://autobuild.buildroot.org/results/55a8581f11e776439782c228441ef1c8c1243386\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to iftop-users@lists.beasts.org]\n---\n ui_common.c |  6 ++++++\n ui_common.h | 10 +++++-----\n 2 files changed, 11 insertions(+), 5 deletions(-)\n\ndiff --git a/ui_common.c b/ui_common.c\nindex dcf6646..b1027ec 100644\n--- a/ui_common.c\n+++ b/ui_common.c\n@@ -17,6 +17,12 @@\n \n #include \"ui_common.h\"\n \n+sorted_list_type screen_list;\n+host_pair_line totals;\n+int peaksent, peakrecv, peaktotal;\n+hash_type* screen_hash;\n+hash_type* service_hash;\n+\n /* 2, 10 and 40 seconds */\n int history_divs[HISTORY_DIVISIONS] = {1, 5, 20};\n \ndiff --git a/ui_common.h b/ui_common.h\nindex 63ae5bb..add72fe 100644\n--- a/ui_common.h\n+++ b/ui_common.h\n@@ -33,12 +33,12 @@ typedef struct host_pair_line_tag {\n \n extern options_t options;\n \n-sorted_list_type screen_list;\n-host_pair_line totals;\n-int peaksent, peakrecv, peaktotal;\n+extern sorted_list_type screen_list;\n+extern host_pair_line totals;\n+extern int peaksent, peakrecv, peaktotal;\n extern history_type history_totals;\n-hash_type* screen_hash;\n-hash_type* service_hash;\n+extern hash_type* screen_hash;\n+extern hash_type* service_hash;\n \n void analyse_data(void);\n void screen_list_init(void);\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/iftop/0002-Rename-pcap_filter-to-iftop_pcap_filter.patch",
    "content": "From 64a185ce2017e4523f4bc39a36c7aebd6d68549a Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 2 Jun 2021 08:21:04 +0200\nSubject: [PATCH] Rename pcap_filter to iftop_pcap_filter\n\nRename pcap_filter to iftop_pcap_filter to fix the following static\nbuild failure:\n\n/home/buildroot/autobuild/run/instance-3/output-1/host/bin/riscv64-linux-gcc  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os   -static   -static -o iftop addr_hash.o edline.o hash.o iftop.o ns_hash.o options.o resolver.o screenfilter.o serv_hash.o sorted_list.o threadprof.o ui_common.o ui.o tui.o util.o addrs_ioctl.o addrs_dlpi.o dlcommon.o stringmap.o cfgfile.o vector.o  -lpcap -lpcap -L/home/buildroot/autobuild/run/instance-3/output-1/host/riscv64-buildroot-linux-musl/sysroot/usr/bin/../../../../bin/../riscv64-buildroot-linux-musl/sysroot/usr/lib -lnl-genl-3 -lnl-3 -lpthread   -lcurses\n/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/riscv64-buildroot-linux-musl/10.2.0/../../../../riscv64-buildroot-linux-musl/bin/ld: /home/buildroot/autobuild/run/instance-3/output-1/host/riscv64-buildroot-linux-musl/sysroot/usr/bin/../../../../bin/../riscv64-buildroot-linux-musl/sysroot/usr/lib/libpcap.a(bpf_filter.o): in function `pcap_filter':\nbpf_filter.c:(.text+0x4a8): multiple definition of `pcap_filter'; iftop.o:iftop.c:(.bss+0x1a8): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/eb53ff6b031c654daec57050dec376b5c9134a81\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n iftop.c      | 6 +++---\n 1 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/iftop.c b/iftop.c\nindex aaec6aa..f89eee3 100644\n--- a/iftop.c\n+++ b/iftop.c\n@@ -74,7 +74,7 @@ int history_len = 1;\n pthread_mutex_t tick_mutex;\n \n pcap_t* pd; /* pcap descriptor */\n-struct bpf_program pcap_filter;\n+struct bpf_program iftop_pcap_filter;\n pcap_handler packet_handler;\n \n sig_atomic_t foad;\n@@ -679,12 +679,12 @@ char *set_filter_code(const char *filter) {\n         sprintf(x, \"(%s) and (ip or ip6)\", filter);\n     } else\n         x = xstrdup(\"ip or ip6\");\n-    if (pcap_compile(pd, &pcap_filter, x, 1, 0) == -1) {\n+    if (pcap_compile(pd, &iftop_pcap_filter, x, 1, 0) == -1) {\n         xfree(x);\n         return pcap_geterr(pd);\n     }\n     xfree(x);\n-    if (pcap_setfilter(pd, &pcap_filter) == -1)\n+    if (pcap_setfilter(pd, &iftop_pcap_filter) == -1)\n         return pcap_geterr(pd);\n     else\n         return NULL;\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/iftop/Config.in",
    "content": "config BR2_PACKAGE_IFTOP\n\tbool \"iftop\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  iftop does for network usage what top(1) does for CPU usage.\n\t  It listens to network traffic on a named interface and\n\t  displays a table of current bandwidth usage by pairs of hosts.\n\t  Handy for answering the question \"why is our ADSL link so\n\t  slow?\".\n\n\t  http://www.ex-parrot.com/pdw/iftop/\n\ncomment \"iftop needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/iftop/iftop.hash",
    "content": "# Locally calculated\nsha256  f733eeea371a7577f8fe353d86dd88d16f5b2a2e702bd96f5ffb2c197d9b4f97  iftop-1.0pre4.tar.gz\nsha256  c00d1408e080e7f14615c7c2e0fbd079f1b2c19e93fc6eab819bdee8d5fdfbc4  COPYING\n"
  },
  {
    "path": "package/iftop/iftop.mk",
    "content": "################################################################################\n#\n# iftop\n#\n################################################################################\n\nIFTOP_VERSION = 1.0pre4\nIFTOP_SITE = http://www.ex-parrot.com/pdw/iftop/download\nIFTOP_DEPENDENCIES = ncurses libpcap\nIFTOP_LICENSE = GPL-2.0+\nIFTOP_LICENSE_FILES = COPYING\n\nIFTOP_LIBS = -lpcap\nifeq ($(BR2_STATIC_LIBS),y)\nIFTOP_LIBS += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\nendif\nIFTOP_CONF_ENV += LIBS+=\"$(IFTOP_LIBS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ifupdown/0001-dont-use-dpkg-architecture.patch",
    "content": "Drop the need for dpkg-architecture, we only build for linux.\nThanks to Károly Kasza for catching this one.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura ifupdown.orig/defn2c.pl ifupdown/defn2c.pl\n--- ifupdown.orig/defn2c.pl\t2014-11-18 16:39:28.878772655 -0300\n+++ ifupdown/defn2c.pl\t2014-11-18 16:43:41.120456676 -0300\n@@ -2,7 +2,7 @@\n \n use strict;\n \n-my $DEB_HOST_ARCH_OS = `dpkg-architecture -qDEB_HOST_ARCH_OS`;\n+my $DEB_HOST_ARCH_OS = \"linux\";\n \n $DEB_HOST_ARCH_OS =~ s/\\n//;\n \n"
  },
  {
    "path": "package/ifupdown/Config.in",
    "content": "config BR2_PACKAGE_IFUPDOWN\n\tbool \"ifupdown\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # iproute2\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\t# runtime for ip binary\n\tselect BR2_PACKAGE_IPROUTE2 if !BR2_PACKAGE_BUSYBOX\n\t# runtime for run-parts\n\tselect BR2_PACKAGE_DEBIANUTILS if !BR2_PACKAGE_BUSYBOX\n\thelp\n\t  High level tools to configure network interfaces.\n\n\t  https://tracker.debian.org/pkg/ifupdown\n\ncomment \"ifupdown needs a toolchain w/ headers >= 3.4\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/ifupdown/ifupdown.hash",
    "content": "# From http://ftp.de.debian.org/debian/pool/main/i/ifupdown/ifupdown_0.8.16.dsc\nsha256  601416c12e39ac29022951a2867aed5c607f732ac57fd51517bfba92a4cc4fb0  ifupdown_0.8.16.tar.xz\n# Locally computed\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/ifupdown/ifupdown.mk",
    "content": "################################################################################\n#\n# ifupdown\n#\n################################################################################\n\nIFUPDOWN_VERSION = 0.8.16\nIFUPDOWN_SOURCE = ifupdown_$(IFUPDOWN_VERSION).tar.xz\nIFUPDOWN_SITE = http://snapshot.debian.org/archive/debian/20160922T165503Z/pool/main/i/ifupdown\nIFUPDOWN_LICENSE = GPL-2.0+\nIFUPDOWN_LICENSE_FILES = COPYING\nIFUPDOWN_CPE_ID_VENDOR = debian\n\ndefine IFUPDOWN_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -std=gnu99 -D'IFUPDOWN_VERSION=\\\"$(IFUPDOWN_VERSION)\\\"'\" \\\n\t\t-C $(@D)\nendef\n\n# install doesn't overwrite\ndefine IFUPDOWN_INSTALL_TARGET_CMDS\n\t$(RM) $(TARGET_DIR)/sbin/{ifdown,ifquery}\n\t$(TARGET_MAKE_ENV) $(MAKE) BASEDIR=$(TARGET_DIR) -C $(@D) install\nendef\n\n# We need to switch from /bin/ip to /sbin/ip\nIFUPDOWN_DEFN_FILES = can inet inet6 ipx link meta\ndefine IFUPDOWN_MAKE_IP_IN_SBIN\n\tfor f in $(IFUPDOWN_DEFN_FILES) ; do \\\n\t\t$(SED) 's,/bin/ip,/sbin/ip,' $(@D)/$$f.defn ; \\\n\tdone\nendef\nIFUPDOWN_POST_PATCH_HOOKS += IFUPDOWN_MAKE_IP_IN_SBIN\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ifupdown-scripts/Config.in",
    "content": "config BR2_PACKAGE_IFUPDOWN_SCRIPTS\n\tbool \"ifupdown scripts\"\n\tdefault y if BR2_ROOTFS_SKELETON_DEFAULT\n\tdepends on !BR2_PACKAGE_SYSTEMD_NETWORKD && !BR2_PACKAGE_NETIFRC\n\thelp\n\t  Set of scripts used by ifupdown (either the standalone one,\n\t  or the busybox one) to bring network up, or tear it down.\n"
  },
  {
    "path": "package/ifupdown-scripts/S40network",
    "content": "#!/bin/sh\n#\n# Start the network....\n#\n\n# Debian ifupdown needs the /run/network lock directory\nmkdir -p /run/network\n\ncase \"$1\" in\n  start)\n\tprintf \"Starting network: \"\n\t/sbin/ifup -a\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\n  stop)\n\tprintf \"Stopping network: \"\n\t/sbin/ifdown -a\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\n  restart|reload)\n\t\"$0\" stop\n\t\"$0\" start\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "package/ifupdown-scripts/ifupdown-scripts.mk",
    "content": "################################################################################\n#\n# ifupdown-scripts\n#\n################################################################################\n\ndefine IFUPDOWN_SCRIPTS_PREAMBLE\n\techo \"# interface file auto-generated by buildroot\" \\\n\t\t> $(TARGET_DIR)/etc/network/interfaces\nendef\n\ndefine IFUPDOWN_SCRIPTS_LOCALHOST\n\t( \\\n\t\techo ; \\\n\t\techo \"auto lo\"; \\\n\t\techo \"iface lo inet loopback\"; \\\n\t) >> $(TARGET_DIR)/etc/network/interfaces\nendef\n\nIFUPDOWN_SCRIPTS_DHCP_IFACE = $(call qstrip,$(BR2_SYSTEM_DHCP))\n\nifneq ($(IFUPDOWN_SCRIPTS_DHCP_IFACE),)\ndefine IFUPDOWN_SCRIPTS_DHCP\n\t( \\\n\t\techo ; \\\n\t\techo \"auto $(IFUPDOWN_SCRIPTS_DHCP_IFACE)\"; \\\n\t\techo \"iface $(IFUPDOWN_SCRIPTS_DHCP_IFACE) inet dhcp\"; \\\n\t\techo \"  pre-up /etc/network/nfs_check\"; \\\n\t\techo \"  wait-delay 15\"; \\\n\t\techo \"  hostname \\$$(hostname)\"; \\\n\t) >> $(TARGET_DIR)/etc/network/interfaces\nendef\ndefine IFUPDOWN_SCRIPTS_DHCP_OPENRC\n\techo \"ifup $(IFUPDOWN_SCRIPTS_DHCP_IFACE)\" \\\n\t\t> $(TARGET_DIR)/etc/ifup.$(IFUPDOWN_SCRIPTS_DHCP_IFACE)\n\techo \"ifdown $(IFUPDOWN_SCRIPTS_DHCP_IFACE)\" \\\n\t\t> $(TARGET_DIR)/etc/ifdown.$(IFUPDOWN_SCRIPTS_DHCP_IFACE)\nendef\nendif\n\ndefine IFUPDOWN_SCRIPTS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(IFUPDOWN_SCRIPTS_PKGDIR)/nfs_check \\\n\t\t$(TARGET_DIR)/etc/network/nfs_check\n\t$(call SYSTEM_RSYNC,$(IFUPDOWN_SCRIPTS_PKGDIR)/network,$(TARGET_DIR)/etc/network)\nendef\n\ndefine IFUPDOWN_SCRIPTS_INSTALL_INIT_OPENRC\n\t$(IFUPDOWN_SCRIPTS_PREAMBLE)\n\t$(IFUPDOWN_SCRIPTS_DHCP)\n\t$(IFUPDOWN_SCRIPTS_DHCP_OPENRC)\nendef\n\ndefine IFUPDOWN_SCRIPTS_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 $(IFUPDOWN_SCRIPTS_PKGDIR)/S40network \\\n\t\t$(TARGET_DIR)/etc/init.d/S40network\n\t$(IFUPDOWN_SCRIPTS_PREAMBLE)\n\t$(IFUPDOWN_SCRIPTS_LOCALHOST)\n\t$(IFUPDOWN_SCRIPTS_DHCP)\nendef\n\n# ifupdown-scripts can not be selected when systemd-networkd is\n# enabled, so if we are enabled with systemd, we must install our\n# own service file.\ndefine IFUPDOWN_SCRIPTS_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(IFUPDOWN_SCRIPTS_PKGDIR)/network.service \\\n\t\t$(TARGET_DIR)/etc/systemd/system/network.service\n\t$(IFUPDOWN_SCRIPTS_PREAMBLE)\n\t$(IFUPDOWN_SCRIPTS_LOCALHOST)\n\t$(IFUPDOWN_SCRIPTS_DHCP)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ifupdown-scripts/network/if-down.d/.empty",
    "content": ""
  },
  {
    "path": "package/ifupdown-scripts/network/if-post-down.d/.empty",
    "content": ""
  },
  {
    "path": "package/ifupdown-scripts/network/if-pre-up.d/wait_iface",
    "content": "#!/bin/sh\n\n# In case we have a slow-to-appear interface (e.g. eth-over-USB),\n# and we need to configure it, wait until it appears, but not too\n# long either. IF_WAIT_DELAY is in seconds.\n\nif [ \"${IF_WAIT_DELAY}\" -a ! -e \"/sys/class/net/${IFACE}\" ]; then\n    printf \"Waiting for interface %s to appear\" \"${IFACE}\"\n    while [ ${IF_WAIT_DELAY} -gt 0 ]; do\n        if [ -e \"/sys/class/net/${IFACE}\" ]; then\n            printf \"\\n\"\n            exit 0\n        fi\n        sleep 1\n        printf \".\"\n        : $((IF_WAIT_DELAY -= 1))\n    done\n    printf \" timeout!\\n\"\n    exit 1\nfi\n\n"
  },
  {
    "path": "package/ifupdown-scripts/network/if-up.d/.empty",
    "content": ""
  },
  {
    "path": "package/ifupdown-scripts/network.service",
    "content": "[Unit]\nDescription=Network Connectivity\nWants=network.target\nBefore=network.target\n\n[Service]\nType=oneshot\nRemainAfterExit=yes\n\n# lo is brought up earlier, which will cause the upcoming \"ifup -a\" to fail\n# with exit code 1, due to an \"ip: RTNETLINK answers: File exists\" error during\n# its \"ip addr add ...\" command, subsequently causing this unit to fail even\n# though it is a benign error. Flushing the lo address with the command below\n# before ifup prevents this failure.\nExecStart=/sbin/ip addr flush dev lo\n\nExecStart=/sbin/ifup -a\nExecStop=/sbin/ifdown -a\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/ifupdown-scripts/nfs_check",
    "content": "#!/bin/sh\n\n# This allows NFS booting to work while also being able to configure\n# the network interface via DHCP when not NFS booting.  Otherwise, a\n# NFS booted system will likely hang during DHCP configuration.\n\n# Attempting to configure the network interface used for NFS will\n# initially bring that network down.  Since the root filesystem is\n# accessed over this network, the system hangs.\n\n# This script is run by ifup and will attempt to detect if a NFS root\n# mount uses the interface to be configured (IFACE), and if so does\n# not configure it.  This should allow the same build to be disk/flash\n# booted or NFS booted.\n\nnfsip=`sed -n '/^[^ ]*:.* \\/ nfs.*[ ,]addr=\\([0-9.]\\+\\).*/s//\\1/p' /proc/mounts`\nif [ -n \"$nfsip\" ] && ip route get to \"$nfsip\" | grep -q \"dev $IFACE\"; then\n\techo Skipping $IFACE, used for NFS from $nfsip\n\texit 1\nfi\n"
  },
  {
    "path": "package/igd2-for-linux/Config.in",
    "content": "config BR2_PACKAGE_IGD2_FOR_LINUX\n\tbool \"igd2-for-linux\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_IPTABLES # runtime\n\tselect BR2_PACKAGE_LIBUPNP\n\thelp\n\t  This is The Linux UPnP Internet Gateway Device 2. It is\n\t  modified from the original Linux UPnP Internet Gateway Device\n\t  [http://linux-igd.sourceforge.net/] according to UPnP\n\t  InternetGatewayDevice:2 specifications.\n\n\t  It implements the UPnP Internet Gateway Device version 2\n\t  specification (IGDv2) and allows UPnP aware clients, such as\n\t  MSN Messenger, Azureus or Miranda to work properly from behind\n\t  a NAT firewall.\n\n\t  Please edit /etc/upnpd.conf before using upnpd!\n\n\t  https://github.com/Orange-OpenSource/igd2-for-linux\n\ncomment \"igd2-for-linux needs a toolchain w/ threads, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/igd2-for-linux/S99upnpd",
    "content": "#!/bin/sh\n\nNAME=upnpd\nPIDFILE=/var/run/$NAME.pid\nDAEMON=/usr/sbin/$NAME\nCFGFILE=/etc/default/$NAME\n\nLAN=eth0\nWAN=eth0\n\n# For the UPnP library to function correctly, networking must be configured\n# properly for multicasting as described in\n# https://sourceforge.net/p/pupnp/code/ci/master/tree/README.\n# Without this addition, device advertisements and control point searches will\n# not function.\n# However, the route has to be configured once for all UPnP applications\n# (igd2-for-linux, ushare, ...) so do not manage UPnP route by default\nMANAGE_UPNP_MULTICAST_ROUTE_ON_LAN=0\n\n# Read configuration variable file if it is present\nif [ -f $CFGFILE ]; then\n\t. $CFGFILE\nfi\n\nDAEMON_ARGS=\"-f $WAN $LAN\"\n\nstart() {\n\tif [ $MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN != 0 ]; then\n\t\tprintf \"Add UPnP multicast route on $LAN\\n\"\n\t\troute add -net 239.0.0.0 netmask 255.0.0.0 $LAN\n\tfi\n\tprintf \"Starting $NAME: \"\n\tstart-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n\tprintf \"Stopping $NAME: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\tif [ $MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN != 0 ]; then\n\t\tprintf \"Remove UPnP multicast route on $LAN\\n\"\n\t\troute del -net 239.0.0.0 netmask 255.0.0.0 $LAN\n\tfi\n}\n\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart|reload}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/igd2-for-linux/igd2-for-linux.hash",
    "content": "# Locally computed:\nsha256  843f2b0a7597e6cc7af85da099a7cce3401a334cbb4a6ae9d38ce252311db9b9  igd2-for-linux-2.1.tar.gz\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  linuxigd2/doc/LICENSE\nsha256  c8b99423cad48bb44e2cf52a496361404290865eac259a82da6d1e4331ececb3  linuxigd2/src/threadutil/COPYING\n"
  },
  {
    "path": "package/igd2-for-linux/igd2-for-linux.mk",
    "content": "################################################################################\n#\n# igd2-for-linux\n#\n################################################################################\n\nIGD2_FOR_LINUX_VERSION = 2.1\nIGD2_FOR_LINUX_SITE = \\\n\t$(call github,Orange-OpenSource,igd2-for-linux,v$(IGD2_FOR_LINUX_VERSION))\n\nIGD2_FOR_LINUX_LICENSE = GPL-2.0, BSD-3-Clause\nIGD2_FOR_LINUX_LICENSE_FILES = linuxigd2/doc/LICENSE linuxigd2/src/threadutil/COPYING\n\nIGD2_FOR_LINUX_DEPENDENCIES = libupnp\n# From git\nIGD2_FOR_LINUX_AUTORECONF = YES\nIGD2_FOR_LINUX_SUBDIR = linuxigd2\n\ndefine IGD2_FOR_LINUX_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/igd2-for-linux/S99upnpd \\\n\t\t$(TARGET_DIR)/etc/init.d/S99upnpd\nendef\n\ndefine IGD2_FOR_LINUX_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/igd2-for-linux/upnpd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/upnpd.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/igd2-for-linux/upnpd.service",
    "content": "[Unit]\nDescription=UPnP Internet Gateway Device version 2 daemon\nAfter=network.target\n\n[Service]\nEnvironment=\"LAN=eth0\"\nEnvironment=\"WAN=eth0\"\nEnvironmentFile=/etc/default/upnpd\n# For the UPnP library to function correctly, networking must be configured\n# properly for multicasting as described in \n# https://sourceforge.net/p/pupnp/code/ci/master/tree/README.\n# Without this addition, device advertisements and control point searches will\n# not function.\n# However, the route has to be configured once for all UPnP applications\n# (igd2-for-linux, ushare, ...) so do not manage UPnP route by default\n#ExecStartPre=/sbin/route add -net 239.0.0.0 netmask 255.0.0.0 $LAN\n#ExecStopPost=/sbin/route del -net 239.0.0.0 netmask 255.0.0.0 $LAN\nExecStart=/usr/sbin/upnpd -f $WAN $LAN\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/igh-ethercat/Config.in",
    "content": "comment \"igh-ethercat needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_IGH_ETHERCAT\n\tbool \"igh-ethercat\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  IgH EtherCAT Master for Linux.\n\n\t  http://www.etherlab.org/en/ethercat/index.php\n\nif BR2_PACKAGE_IGH_ETHERCAT\n\nconfig BR2_PACKAGE_IGH_ETHERCAT_8139TOO\n\tbool \"8139too driver\"\n\nconfig BR2_PACKAGE_IGH_ETHERCAT_E100\n\tbool \"e100 driver\"\n\nconfig BR2_PACKAGE_IGH_ETHERCAT_E1000\n\tbool \"e1000 driver\"\n\nconfig BR2_PACKAGE_IGH_ETHERCAT_E1000E\n\tbool \"e1000e driver\"\n\nconfig BR2_PACKAGE_IGH_ETHERCAT_R8169\n\tbool \"r8169 driver\"\n\nendif\n"
  },
  {
    "path": "package/igh-ethercat/igh-ethercat.hash",
    "content": "# From http://etherlab.org/download/ethercat/ethercat-1.5.2.tar.bz2.md5\nmd5\t6b4001f8d975865d74a0b108b3bdda3d\tethercat-1.5.2.tar.bz2\n# Locally computed\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LESSER\n"
  },
  {
    "path": "package/igh-ethercat/igh-ethercat.mk",
    "content": "################################################################################\n#\n# igh-ethercat\n#\n################################################################################\n\nIGH_ETHERCAT_VERSION = 1.5.2\nIGH_ETHERCAT_SITE = http://etherlab.org/download/ethercat\nIGH_ETHERCAT_SOURCE = ethercat-$(IGH_ETHERCAT_VERSION).tar.bz2\nIGH_ETHERCAT_LICENSE = GPL-2.0 (IgH EtherCAT master), LGPL-2.1 (libraries)\nIGH_ETHERCAT_LICENSE_FILES = COPYING COPYING.LESSER\n\nIGH_ETHERCAT_INSTALL_STAGING = YES\n\nIGH_ETHERCAT_CONF_OPTS = \\\n\t--with-linux-dir=$(LINUX_DIR)\n\nIGH_ETHERCAT_CONF_OPTS += $(if $(BR2_PACKAGE_IGH_ETHERCAT_8139TOO),--enable-8139too,--disable-8139too)\nIGH_ETHERCAT_CONF_OPTS += $(if $(BR2_PACKAGE_IGH_ETHERCAT_E100),--enable-e100,--disable-e100)\nIGH_ETHERCAT_CONF_OPTS += $(if $(BR2_PACKAGE_IGH_ETHERCAT_E1000),--enable-e1000,--disable-e1000)\nIGH_ETHERCAT_CONF_OPTS += $(if $(BR2_PACKAGE_IGH_ETHERCAT_E1000E),--enable-e1000e,--disable-e1000e)\nIGH_ETHERCAT_CONF_OPTS += $(if $(BR2_PACKAGE_IGH_ETHERCAT_R8169),--enable-r8169,--disable-r8169)\n\n$(eval $(kernel-module))\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/igmpproxy/Config.in",
    "content": "config BR2_PACKAGE_IGMPPROXY\n\tbool \"igmpproxy\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  A simple dynamic Multicast Routing Daemon\n\t  using only IGMP signalling. It's intended\n\t  for simple forwarding of Multicast traffic\n\t  between networks.\n\n\t  http://sourceforge.net/projects/igmpproxy/\n\ncomment \"igmpproxy needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/igmpproxy/igmpproxy.hash",
    "content": "# Locally computed:\nsha256  d1fc244cb2fbbf99f720bda3e841fe59ece9b6919073790b4b892739b1b844eb  igmpproxy-0.3.tar.gz\nsha256  be3d05af93dbbc4650f8d641d8e1bec220af4a729e07ba71e949c25b93a1b4f6  COPYING\nsha256  c4f65d5d396ad518a37d30b83fe33897661858dc174ff64a15d0461630ce64e4  GPL.txt\nsha256  4328a21f0822caa9976356623118bcdcc9970c7a0f9a3deeba23c779b7cfb5d1  Stanford.txt\n"
  },
  {
    "path": "package/igmpproxy/igmpproxy.mk",
    "content": "################################################################################\n#\n# igmpproxy\n#\n################################################################################\n\nIGMPPROXY_VERSION = 0.3\nIGMPPROXY_SITE = \\\n\thttps://github.com/pali/igmpproxy/releases/download/$(IGMPPROXY_VERSION)\nIGMPPROXY_AUTORECONF = YES\nIGMPPROXY_LICENSE = GPL-2.0+, BSD-3-Clause (mrouted)\nIGMPPROXY_LICENSE_FILES = COPYING GPL.txt Stanford.txt\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ijs/Config.in",
    "content": "config BR2_PACKAGE_IJS\n\tbool \"ijs\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  The IJS package contains a library which implements a\n\t  protocol for transmission of raster page images.\n\n\t  http://www.openprinting.org/\n"
  },
  {
    "path": "package/ijs/ijs.hash",
    "content": "# Locally computed:\nsha256\t11a5f5084488c480f3ff5a24d64d7147bb64272bf60a0ba51330a56c5b50cab9  ijs-0.35.tar.bz2\nsha256\tf723390b7ee019eccf07763dcb5744acf8bb43034bc3ba3d6f1c94440e365b4f  README\n"
  },
  {
    "path": "package/ijs/ijs.mk",
    "content": "################################################################################\n#\n# ijs\n#\n################################################################################\n\nIJS_VERSION = 0.35\nIJS_SOURCE = ijs-$(IJS_VERSION).tar.bz2\nIJS_SITE = http://www.openprinting.org/download/ijs/download\nIJS_LICENSE = MIT\nIJS_LICENSE_FILES = README\n# Buildroot libtool patch does not apply, so we autoreconf the\n# package.\nIJS_AUTORECONF = YES\nIJS_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ima-evm-utils/Config.in",
    "content": "config BR2_PACKAGE_IMA_EVM_UTILS\n\tbool \"ima-evm-utils\"\n\tdepends on BR2_USE_MMU # keyutils\n\tdepends on !BR2_STATIC_LIBS # keyutils, tpm2-tss\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_KEYUTILS\n\tselect BR2_PACKAGE_TPM2_TSS\n\thelp\n\t  Linux Integrity Measurement Architecture (IMA)\n\t  Extended Verification Module (EVM) tools.\n\n\t  https://sourceforge.net/p/linux-ima/wiki/Home/\n\ncomment \"ima-evm-utils needs dynamic library support\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/ima-evm-utils/ima-evm-utils.hash",
    "content": "# sha1 from sourceforge, sha256 locally computed\nsha1  034d163533ae5f9c06001b375ec7e5a1b09a3853  ima-evm-utils-1.3.2.tar.gz\nsha256 c2b206e7f9fbe62a938b7ae59e31906fefae4d5351fe01db739bd8346b75d4a7  ima-evm-utils-1.3.2.tar.gz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/ima-evm-utils/ima-evm-utils.mk",
    "content": "################################################################################\n#\n# ima-evm-utils\n#\n################################################################################\n\nIMA_EVM_UTILS_VERSION = 1.3.2\nIMA_EVM_UTILS_SITE = http://downloads.sourceforge.net/project/linux-ima/ima-evm-utils\nIMA_EVM_UTILS_LICENSE = GPL-2.0\nIMA_EVM_UTILS_LICENSE_FILES = COPYING\nIMA_EVM_UTILS_DEPENDENCIES = host-pkgconf keyutils openssl tpm2-tss\n\n# Tarball doesn't contain configure\nIMA_EVM_UTILS_AUTORECONF = YES\n\n# Build and install in the src subdirectory. This avoids building the\n# documentation, which requires asciidoc and xsltproc. Note that configure still\n# needs to be run from the top dir, so _SUBDIR can't be used.\n\ndefine IMA_EVM_UTILS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src all\nendef\n\ndefine IMA_EVM_UTILS_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=\"$(STAGING_DIR)\" -C $(@D)/src install\nendef\n\ndefine IMA_EVM_UTILS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=\"$(TARGET_DIR)\" -C $(@D)/src install\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/imagemagick/Config.in",
    "content": "config BR2_PACKAGE_IMAGEMAGICK\n\tbool \"imagemagick\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  ImageMagick(R) is a software suite to create, edit, and\n\t  compose bitmap images. It can read, convert and write images\n\t  in a variety of formats (about 100) including DPX, EXR, GIF,\n\t  JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF.\n\t  Use ImageMagick to translate, flip, mirror, rotate, scale,\n\t  shear and transform images, adjust image colors, apply various\n\t  special effects, or draw text, lines, polygons, ellipses and\n\t  Bézier curves.\n\n\t  http://www.imagemagick.org/\n\ncomment \"imagemagick needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/imagemagick/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_IMAGEMAGICK\n\tbool \"host imagemagick\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS # host-librsvg\n\thelp\n\t  ImageMagick(R) is a software suite to create, edit, and\n\t  compose bitmap images. It can read, convert and write images\n\t  in a variety of formats (about 100) including DPX, EXR, GIF,\n\t  JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF.\n\t  Use ImageMagick to translate, flip, mirror, rotate, scale,\n\t  shear and transform images, adjust image colors, apply various\n\t  special effects, or draw text, lines, polygons, ellipses and\n\t  Bézier curves.\n\n\t  http://www.imagemagick.org/\n\nif BR2_PACKAGE_HOST_IMAGEMAGICK\n\nconfig BR2_PACKAGE_HOST_IMAGEMAGICK_SVG\n\tbool \"SVG support\"\n\thelp\n\t  Say 'y' here is you need ImageMagick tools (like convert)\n\t  to support SVG.\n\n\t  This is not enabled by default, as it brings quite a few\n\t  extra dependencies, and thus extra build time.\n\nendif\n"
  },
  {
    "path": "package/imagemagick/imagemagick.hash",
    "content": "# Locally computed\nsha256  fc454be622724c6224fa6c8230bb9c50191a05fbf05b9c9c25aa3e5497090b83  imagemagick-7.0.11-13.tar.gz\nsha256  040badb77b659e751ea16113490a937e1e01f3f5d32181e966b8982413533fb2  LICENSE\n"
  },
  {
    "path": "package/imagemagick/imagemagick.mk",
    "content": "################################################################################\n#\n# imagemagick\n#\n################################################################################\n\nIMAGEMAGICK_VERSION = 7.0.11-13\nIMAGEMAGICK_SITE = $(call github,ImageMagick,ImageMagick,$(IMAGEMAGICK_VERSION))\nIMAGEMAGICK_LICENSE = Apache-2.0\nIMAGEMAGICK_LICENSE_FILES = LICENSE\nIMAGEMAGICK_CPE_ID_VENDOR = imagemagick\n\nIMAGEMAGICK_INSTALL_STAGING = YES\nIMAGEMAGICK_CONFIG_SCRIPTS = \\\n\t$(addsuffix -config,MagickCore MagickWand)\n\nifeq ($(BR2_INSTALL_LIBSTDCPP)$(BR2_USE_WCHAR),yy)\nIMAGEMAGICK_CONFIG_SCRIPTS += Magick++-config\nendif\n\nIMAGEMAGICK_CONF_ENV = \\\n\tac_cv_sys_file_offset_bits=64 \\\n\tax_cv_check_cl_libcl=no\n\nIMAGEMAGICK_CONF_OPTS = \\\n\t--program-transform-name='s,,,' \\\n\t--disable-opencl \\\n\t--disable-openmp \\\n\t--without-djvu \\\n\t--without-dps \\\n\t--without-flif \\\n\t--without-fpx \\\n\t--without-gslib \\\n\t--without-gvc \\\n\t--without-heic \\\n\t--without-jbig \\\n\t--without-jxl \\\n\t--without-lqr \\\n\t--without-openexr \\\n\t--without-openjp2 \\\n\t--without-perl \\\n\t--without-raqm \\\n\t--without-wmf \\\n\t--without-x \\\n\t--with-gs-font-dir=/usr/share/fonts/gs\n\nIMAGEMAGICK_DEPENDENCIES = host-pkgconf\n\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\n# Like postgreSQL, imagemagick does not build against uClibc with\n# locales enabled, due to an uClibc bug, see\n# http://lists.uclibc.org/pipermail/uclibc/2014-April/048326.html\n# so overwrite automatic detection and disable locale support\nIMAGEMAGICK_CONF_ENV += ac_cv_func_newlocale=no\nendif\n\nifeq ($(BR2_PACKAGE_FONTCONFIG),y)\nIMAGEMAGICK_CONF_OPTS += --with-fontconfig\nIMAGEMAGICK_DEPENDENCIES += fontconfig\nelse\nIMAGEMAGICK_CONF_OPTS += --without-fontconfig\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nIMAGEMAGICK_CONF_OPTS += --with-freetype\nIMAGEMAGICK_CONF_ENV += \\\n\tac_cv_path_freetype_config=$(STAGING_DIR)/usr/bin/freetype-config\nIMAGEMAGICK_DEPENDENCIES += freetype\nelse\nIMAGEMAGICK_CONF_OPTS += --without-freetype\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nIMAGEMAGICK_CONF_OPTS += --with-jpeg\nIMAGEMAGICK_DEPENDENCIES += jpeg\nelse\nIMAGEMAGICK_CONF_OPTS += --without-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_LCMS2),y)\nIMAGEMAGICK_CONF_OPTS += --with-lcms\nIMAGEMAGICK_DEPENDENCIES += lcms2\nelse\nIMAGEMAGICK_CONF_OPTS += --without-lcms\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nIMAGEMAGICK_CONF_OPTS += --with-png\nIMAGEMAGICK_DEPENDENCIES += libpng\nelse\nIMAGEMAGICK_CONF_OPTS += --without-png\nendif\n\nifeq ($(BR2_PACKAGE_LIBRAW),y)\nIMAGEMAGICK_CONF_OPTS += --with-raw\nIMAGEMAGICK_DEPENDENCIES += libraw\nelse\nIMAGEMAGICK_CONF_OPTS += --without-raw\nendif\n\nifeq ($(BR2_PACKAGE_LIBRSVG),y)\nIMAGEMAGICK_CONF_OPTS += --with-rsvg\nIMAGEMAGICK_DEPENDENCIES += librsvg\nelse\nIMAGEMAGICK_CONF_OPTS += --without-rsvg\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nIMAGEMAGICK_CONF_OPTS += --with-xml\nIMAGEMAGICK_CONF_ENV += ac_cv_path_xml2_config=$(STAGING_DIR)/usr/bin/xml2-config\nIMAGEMAGICK_DEPENDENCIES += libxml2\nelse\nIMAGEMAGICK_CONF_OPTS += --without-xml\nendif\n\nifeq ($(BR2_PACKAGE_LIBZIP),y)\nIMAGEMAGICK_CONF_OPTS += --with-zip\nIMAGEMAGICK_DEPENDENCIES += libzip\nelse\nIMAGEMAGICK_CONF_OPTS += --without-zip\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nIMAGEMAGICK_CONF_OPTS += --with-zstd\nIMAGEMAGICK_DEPENDENCIES += zstd\nelse\nIMAGEMAGICK_CONF_OPTS += --without-zstd\nendif\n\nifeq ($(BR2_PACKAGE_PANGO),y)\nIMAGEMAGICK_CONF_OPTS += --with-pango\nIMAGEMAGICK_DEPENDENCIES += pango\nelse\nIMAGEMAGICK_CONF_OPTS += --without-pango\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nIMAGEMAGICK_CONF_OPTS += --with-tiff\nIMAGEMAGICK_DEPENDENCIES += tiff\nelse\nIMAGEMAGICK_CONF_OPTS += --without-tiff\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nIMAGEMAGICK_CONF_OPTS += --with-lzma\nIMAGEMAGICK_DEPENDENCIES += xz\nelse\nIMAGEMAGICK_CONF_OPTS += --without-lzma\nendif\n\nifeq ($(BR2_PACKAGE_FFTW_DOUBLE),y)\n# configure script misdetects these leading to build errors\nIMAGEMAGICK_CONF_ENV += ac_cv_func_creal=yes ac_cv_func_cimag=yes\nIMAGEMAGICK_CONF_OPTS += --with-fftw\nIMAGEMAGICK_DEPENDENCIES += fftw-double\nelse\nIMAGEMAGICK_CONF_OPTS += --without-fftw\nendif\n\nifeq ($(BR2_PACKAGE_WEBP),y)\nIMAGEMAGICK_CONF_OPTS += --with-webp\nIMAGEMAGICK_DEPENDENCIES += webp\nelse\nIMAGEMAGICK_CONF_OPTS += --without-webp\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nIMAGEMAGICK_CONF_OPTS += --with-zlib\nIMAGEMAGICK_DEPENDENCIES += zlib\nelse\nIMAGEMAGICK_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nIMAGEMAGICK_CONF_OPTS += --with-bzlib\nIMAGEMAGICK_DEPENDENCIES += bzip2\nelse\nIMAGEMAGICK_CONF_OPTS += --without-bzlib\nendif\n\nHOST_IMAGEMAGICK_CONF_OPTS = \\\n\t--disable-opencl \\\n\t--disable-openmp \\\n\t--without-djvu \\\n\t--without-dps \\\n\t--without-flif \\\n\t--without-fpx \\\n\t--without-gslib \\\n\t--without-gvc \\\n\t--without-heic \\\n\t--without-jbig \\\n\t--without-jxl \\\n\t--without-lqr \\\n\t--without-openexr \\\n\t--without-openjp2 \\\n\t--without-perl \\\n\t--without-raqm \\\n\t--without-raw \\\n\t--without-wmf \\\n\t--without-x \\\n\t--without-zip \\\n\t--without-zstd \\\n\t--without-bzlib \\\n\t--without-fftw \\\n\t--without-lcms \\\n\t--without-lzma \\\n\t--without-tiff \\\n\t--without-webp \\\n\t--with-jpeg \\\n\t--with-png \\\n\t--with-zlib\n\n# uses clock_gettime, which was provided by librt in glibc < 2.17\nHOST_IMAGEMAGICK_CONF_ENV = \\\n\tLIBS=\"-lrt\" \\\n\tax_cv_check_cl_libcl=no\n\nHOST_IMAGEMAGICK_DEPENDENCIES = \\\n\thost-libjpeg \\\n\thost-libpng \\\n\thost-pkgconf \\\n\thost-zlib\n\nifeq ($(BR2_PACKAGE_HOST_IMAGEMAGICK_SVG),y)\nHOST_IMAGEMAGICK_DEPENDENCIES += \\\n\thost-fontconfig \\\n\thost-freetype \\\n\thost-librsvg \\\n\thost-libxml2 \\\n\thost-pango\nHOST_IMAGEMAGICK_CONF_ENV += ac_cv_path_xml2_config=$(HOST_DIR)/bin/xml2-config\nHOST_IMAGEMAGICK_CONF_OPTS += \\\n\t--with-fontconfig \\\n\t--with-freetype \\\n\t--with-pango \\\n\t--with-rsvg \\\n\t--with-xml\nelse\nHOST_IMAGEMAGICK_CONF_OPTS += \\\n\t--without-fontconfig \\\n\t--without-freetype \\\n\t--without-pango \\\n\t--without-rsvg \\\n\t--without-xml\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/imlib2/Config.in",
    "content": "comment \"imlib2 needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_IMLIB2\n\tbool \"imlib2\"\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\tselect BR2_PACKAGE_FREETYPE\n\thelp\n\t  Imlib 2 is the successor to Imlib. This library provides\n\t  routines to load, save and render images in various formats.\n\n\t  http://freshmeat.net/projects/imlib2/\n\nif BR2_PACKAGE_IMLIB2\n\nconfig BR2_PACKAGE_IMLIB2_JPEG\n\tbool \"JPEG support\"\n\tselect BR2_PACKAGE_JPEG\n\nconfig BR2_PACKAGE_IMLIB2_PNG\n\tbool \"PNG support\"\n\tselect BR2_PACKAGE_LIBPNG\n\nconfig BR2_PACKAGE_IMLIB2_GIF\n\tbool \"GIF support\"\n\tselect BR2_PACKAGE_GIFLIB\n\nconfig BR2_PACKAGE_IMLIB2_TIFF\n\tbool \"TIFF support\"\n\tselect BR2_PACKAGE_TIFF\n\nconfig BR2_PACKAGE_IMLIB2_ID3\n\tbool \"ID3 support\"\n\tselect BR2_PACKAGE_LIBID3TAG\n\nconfig BR2_PACKAGE_IMLIB2_X\n\tbool \"X support\"\n\tdefault y\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBX11\nendif\n"
  },
  {
    "path": "package/imlib2/imlib2.hash",
    "content": "# From https://sourceforge.net/projects/enlightenment/files/imlib2-src/1.7.3/\nmd5  1e79055a0b8fe27d208b6f8bb1bde60c  imlib2-1.7.3.tar.bz2\nsha1  3d55965f946d0b2754a84c8e57c78ddc227252c6  imlib2-1.7.3.tar.bz2\n\n# Locally computed\nsha256  158d0b8c20bc11221af9e77a64a116fca7051b03cdea2c4f31d31f469382f997  imlib2-1.7.3.tar.bz2\nsha256  fb70339dd33a77b6213c7ae067fccf93d04af44ff3f937c61f8863f7970e73f6  COPYING\nsha256  8c9a2e92ed4937e2d30c2ea95439c36ed3002fc47e34efee43455a460fee8ef5  COPYING-PLAIN\n"
  },
  {
    "path": "package/imlib2/imlib2.mk",
    "content": "################################################################################\n#\n# imlib2\n#\n################################################################################\n\nIMLIB2_VERSION = 1.7.3\nIMLIB2_SOURCE = imlib2-$(IMLIB2_VERSION).tar.bz2\nIMLIB2_SITE = http://downloads.sourceforge.net/project/enlightenment/imlib2-src/$(IMLIB2_VERSION)\nIMLIB2_LICENSE = Imlib2\nIMLIB2_LICENSE_FILES = COPYING COPYING-PLAIN\nIMLIB2_CPE_ID_VENDOR = enlightenment\n\nIMLIB2_INSTALL_STAGING = YES\nIMLIB2_DEPENDENCIES = host-pkgconf freetype\nIMLIB2_CONF_OPTS = --with-freetype-config=$(STAGING_DIR)/usr/bin/freetype-config\nIMLIB2_CONFIG_SCRIPTS = imlib2-config\n\nifeq ($(BR2_PACKAGE_IMLIB2_X),y)\nIMLIB2_CONF_OPTS += --with-x\nIMLIB2_DEPENDENCIES += xlib_libX11 xlib_libXext\nelse\nIMLIB2_CONF_OPTS += --without-x\nendif\n\nifeq ($(BR2_PACKAGE_IMLIB2_JPEG),y)\nIMLIB2_CONF_OPTS += --with-jpeg\nIMLIB2_DEPENDENCIES += jpeg\nelse\nIMLIB2_CONF_OPTS += --without-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_IMLIB2_PNG),y)\nIMLIB2_CONF_OPTS += --with-png\nIMLIB2_DEPENDENCIES += libpng\nelse\nIMLIB2_CONF_OPTS += --without-png\nendif\n\nifeq ($(BR2_PACKAGE_IMLIB2_GIF),y)\nIMLIB2_CONF_OPTS += --with-gif\nIMLIB2_DEPENDENCIES += giflib\nelse\nIMLIB2_CONF_OPTS += --without-gif\nendif\n\nifeq ($(BR2_PACKAGE_IMLIB2_TIFF),y)\nIMLIB2_CONF_OPTS += --with-tiff\nIMLIB2_DEPENDENCIES += tiff\nelse\nIMLIB2_CONF_OPTS += --without-tiff\nendif\n\nifeq ($(BR2_PACKAGE_IMLIB2_ID3),y)\nIMLIB2_CONF_OPTS += --with-id3\nIMLIB2_DEPENDENCIES += libid3tag\nelse\nIMLIB2_CONF_OPTS += --without-id3\nendif\n\n# drop -L<dir> from linker flags\ndefine IMLIB2_FIXUP_IMLIB2_CONFIG\n\t$(SED) 's/-L[^ ]*//g' $(STAGING_DIR)/usr/bin/imlib2-config\nendef\n\nIMLIB2_POST_INSTALL_STAGING_HOOKS += IMLIB2_FIXUP_IMLIB2_CONFIG\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/imx-mkimage/0001-Add-support-for-overriding-BL32-and-BL33-not-only-BL.patch",
    "content": "From 4870df3d70e94f9f0d6c06f610cea2d88cd6edb5 Mon Sep 17 00:00:00 2001\nFrom: Erik Larsson <erik.larsson@combitech.se>\nDate: Thu, 8 Mar 2018 19:04:37 +0100\nSubject: [PATCH] Add support for overriding BL32 and BL33 not only BL31\n\nSigned-off-by: Erik Larsson <karl.erik.larsson@gmail.com>\nSigned-off-by: Christopher Dahlberg <crille.dahlberg@gmail.com>\nSigned-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>\n---\n iMX8M/mkimage_fit_atf.sh | 16 ++++++++--------\n 1 file changed, 8 insertions(+), 8 deletions(-)\n\ndiff --git a/iMX8M/mkimage_fit_atf.sh b/iMX8M/mkimage_fit_atf.sh\nindex 95749b1..c1aa902 100755\n--- a/iMX8M/mkimage_fit_atf.sh\n+++ b/iMX8M/mkimage_fit_atf.sh\n@@ -18,23 +18,23 @@ if [ ! -f $BL31 ]; then\n \techo \"ERROR: BL31 file $BL31 NOT found\" >&2\n \texit 0\n else\n-\techo \"bl31.bin size: \" >&2\n-\tls -lct bl31.bin | awk '{print $5}' >&2\n+\techo \"$BL31 size: \" >&2\n+\tls -lct $BL31 | awk '{print $5}' >&2\n fi\n \n-BL32=\"tee.bin\"\n+[ -z \"$BL32\" ] && BL32=\"tee.bin\"\n LOADABLES=\"\\\"atf@1\\\"\"\n \n if [ ! -f $BL32 ]; then\n \tBL32=/dev/null\n else\n \techo \"Building with TEE support, make sure your bl31 is compiled with spd. If you do not want tee, please delete tee.bin\" >&2\n-\techo \"tee.bin size: \" >&2\n-\tls -lct tee.bin | awk '{print $5}' >&2\n+\techo \"$BL32 size: \" >&2\n+\tls -lct $BL32 | awk '{print $5}' >&2\n \tLOADABLES=\"$LOADABLES, \\\"tee@1\\\"\"\n fi\n \n-BL33=\"u-boot-nodtb.bin\"\n+[ -z \"$BL33\" ] && BL33=\"u-boot-nodtb.bin\"\n DEK_BLOB=\"dek_blob_fit_dummy.bin\"\n \n if [ ! -f $DEK_BLOB ]; then\n@@ -49,8 +49,8 @@ if [ ! -f $BL33 ]; then\n \texit 0\n else\n \n-\techo \"u-boot-nodtb.bin size: \" >&2\n-\tls -lct u-boot-nodtb.bin | awk '{print $5}' >&2\n+\techo \"$BL33 size: \" >&2\n+\tls -lct $BL33 | awk '{print $5}' >&2\n fi\n \n for dtname in $*\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/imx-mkimage/0002-Add-LDFLAGS-to-link-step.patch",
    "content": "From 3ef9f773ce1a402607957fa73775d2e0a591a1a5 Mon Sep 17 00:00:00 2001\nFrom: Erik Larsson <erik.larsson@combitech.se>\nDate: Tue, 6 Mar 2018 12:28:39 +0100\nSubject: [PATCH] Add LDFLAGS to link step\n\nSigned-off-by: Erik Larsson <karl.erik.larsson@gmail.com>\n---\n iMX8M/soc.mak | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/iMX8M/soc.mak b/iMX8M/soc.mak\nindex d714259..aecf84b 100644\n--- a/iMX8M/soc.mak\n+++ b/iMX8M/soc.mak\n@@ -67,7 +67,7 @@ FW_DIR = imx-boot/imx-boot-tools/$(PLAT)\n $(MKIMG): mkimage_imx8.c\n \t@echo \"PLAT=\"$(PLAT) \"HDMI=\"$(HDMI)\n \t@echo \"Compiling mkimage_imx8\"\n-\t$(CC) $(CFLAGS) mkimage_imx8.c -o $(MKIMG) -lz\n+\t$(CC) $(CFLAGS) mkimage_imx8.c -o $(MKIMG) $(LDFLAGS) -lz\n \n u-boot-spl-ddr.bin: u-boot-spl.bin lpddr4_pmu_train_1d_imem.bin lpddr4_pmu_train_1d_dmem.bin lpddr4_pmu_train_2d_imem.bin lpddr4_pmu_train_2d_dmem.bin\n \t@objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 lpddr4_pmu_train_1d_imem.bin lpddr4_pmu_train_1d_imem_pad.bin\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/imx-mkimage/0003-Add-unused-fake-version.patch",
    "content": "From b25b4324be4c0dd9ee5fecdf2981d291fb187686 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Andr=C3=A9=20Hentschel?= <nerv@dawncrow.de>\nDate: Mon, 25 Feb 2019 22:15:55 +0100\nSubject: [PATCH] Add unused fake version\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe Makefile makes the assumption that the build process runs\nfrom a Git clone of the source code.\nWe can safely add a fake version here, because the code to\nprint it is broken anyway.\n\nSigned-off-by: André Hentschel <nerv@dawncrow.de>\n---\n Makefile | 4 +---\n 1 file changed, 1 insertion(+), 3 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 49ef486..b966399 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -37,9 +37,7 @@ $(MKIMG): src/build_info.h $(SRCS)\n bin: $(MKIMG)\n \n src/build_info.h:\n-\t@echo -n '#define MKIMAGE_COMMIT 0x' > src/build_info.h\n-\t@git rev-parse --short=8 HEAD >> src/build_info.h\n-\t@echo '' >> src/build_info.h\n+\t@echo '#define MKIMAGE_COMMIT 0xdeadbeef' > src/build_info.h\n \n help:\n \t@echo $(CURR_DIR)\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/imx-mkimage/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_IMX_MKIMAGE\n\tbool \"host imx-mkimage\"\n\thelp\n\t  imx-mkimage is used to combine input images and generate\n\t  final boot image with appropriate IVT set.\n\n\t  https://source.codeaurora.org/external/imx/imx-mkimage\n"
  },
  {
    "path": "package/imx-mkimage/imx-mkimage.hash",
    "content": "# Locally calculated\nsha256  2746136aa5ed79ba24cfbe877d29022a2a33f6614b1bba728e95d1b2f0448196  imx-mkimage-rel_imx_5.4.70_2.3.0-br1.tar.gz\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/imx-mkimage/imx-mkimage.mk",
    "content": "################################################################################\n#\n# imx-mkimage\n#\n################################################################################\n\nIMX_MKIMAGE_VERSION = rel_imx_5.4.70_2.3.0\nIMX_MKIMAGE_SITE = https://source.codeaurora.org/external/imx/imx-mkimage\nIMX_MKIMAGE_SITE_METHOD = git\nIMX_MKIMAGE_LICENSE = GPL-2.0+\nIMX_MKIMAGE_LICENSE_FILES = COPYING\nHOST_IMX_MKIMAGE_DEPENDENCIES = host-zlib\n\nifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MP),y)\n# i.MX8M needs a different binary\ndefine HOST_IMX_MKIMAGE_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(HOST_CFLAGS) -std=c99\" \\\n\t\t-C $(@D)/iMX8M -f soc.mak mkimage_imx8\nendef\ndefine HOST_IMX_MKIMAGE_INSTALL_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/iMX8M/mkimage_imx8 $(HOST_DIR)/bin/mkimage_imx8\n\t$(INSTALL) -D -m 755 $(@D)/iMX8M/mkimage_fit_atf.sh $(HOST_DIR)/bin/mkimage_fit_atf.sh\nendef\nelse\n# i.MX8 and i.MX8X\ndefine HOST_IMX_MKIMAGE_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(HOST_CFLAGS) -std=c99\" \\\n\t\t-C $(@D) MKIMG=mkimage_imx8 mkimage_imx8\nendef\ndefine HOST_IMX_MKIMAGE_INSTALL_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/mkimage_imx8 $(HOST_DIR)/bin/mkimage_imx8\nendef\nendif\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/imx-usb-loader/Config.in",
    "content": "config BR2_PACKAGE_IMX_USB_LOADER\n\tbool \"imx-usb-loader\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  This package contains tools to download and execute code\n\t  on Freescale i.MX5/i.MX6 and Vybrid SoCs through the\n\t  Serial Download Protocol.\n\n\t  https://github.com/boundarydevices/imx_usb_loader\n\ncomment \"imx-usb-loader needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/imx-usb-loader/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_IMX_USB_LOADER\n\tbool \"host imx-usb-loader\"\n\tdepends on BR2_arm || BR2_aarch64\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb\n\thelp\n\t  This package contains tools to download and execute code\n\t  on Freescale i.MX5x/6x/7x/8x and Vybrid SoCs through the\n\t  Serial Download Protocol.\n\n\t  https://github.com/boundarydevices/imx_usb_loader\n\ncomment \"host imx-usb-loader needs a toolchain w/ host gcc >= 4.9\"\n\tdepends on BR2_arm || BR2_aarch64\n\tdepends on !BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/imx-usb-loader/imx-usb-loader.hash",
    "content": "# locally computed\nsha256  4357907c9669874d3ccbf00395bf0b1733c26e6daea85d721f1c0cd897f4162c  imx-usb-loader-30b43d69770cd69e84c045dc9dcabb1f3e9d975a.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/imx-usb-loader/imx-usb-loader.mk",
    "content": "################################################################################\n#\n# imx-usb-loader\n#\n################################################################################\n\nIMX_USB_LOADER_VERSION = 30b43d69770cd69e84c045dc9dcabb1f3e9d975a\n\nIMX_USB_LOADER_SITE = $(call github,boundarydevices,imx_usb_loader,$(IMX_USB_LOADER_VERSION))\nIMX_USB_LOADER_LICENSE = LGPL-2.1+\nIMX_USB_LOADER_LICENSE_FILES = COPYING\nIMX_USB_LOADER_DEPENDENCIES = libusb host-pkgconf\nHOST_IMX_USB_LOADER_DEPENDENCIES = host-libusb host-pkgconf\n\ndefine IMX_USB_LOADER_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_IMX_USB_LOADER_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine IMX_USB_LOADER_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) prefix=$(TARGET_DIR)/usr install\nendef\n\ndefine HOST_IMX_USB_LOADER_INSTALL_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) prefix=$(HOST_DIR) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/inadyn/Config.in",
    "content": "config BR2_PACKAGE_INADYN\n\tbool \"inadyn\"\n\tdepends on BR2_USE_MMU # Uses fork()\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\tselect BR2_PACKAGE_LIBCONFUSE\n\thelp\n\t  INADYN is a free DynDNS client. It gives the possibility\n\t  to have your own fixed hostname registered on the internet,\n\t  although your IP might be changing.\n\n\t  https://github.com/troglobit/inadyn\n\ncomment \"inadyn needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/inadyn/S70inadyn",
    "content": "#!/bin/sh\n#\n# Start & stop the inadyn client\n#\n\nCONFIG=/etc/inadyn.conf\n\n# check if CONFIG exists, print message & exit if it doesn't\n[ ! -f $CONFIG ] && ( echo \"The config file \"$CONFIG\" is missing...exiting now.\" && exit 2 )\n\n# Allow a few customizations from a config file. Especially inadyn\n# must be explicitly enabled by adding ENABLED=\"yes\" in this file.\ntest -r /etc/default/inadyn && . /etc/default/inadyn\n\ncase \"$1\" in\n\tstart)\n\t\tprintf \"Starting inadyn: \"\n\t\tif test \"${ENABLED}\" != \"yes\" ; then\n\t\t    echo \"SKIPPED\"\n\t\t    exit 0\n\t\tfi\n\t\tstart-stop-daemon -b -q -S -p /var/run/inadyn.pid -x /usr/sbin/inadyn\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping inadyn: \"\n\t\tif test \"${ENABLED}\" != \"yes\" ; then\n\t\t    echo \"SKIPPED\"\n\t\t    exit 0\n\t\tfi\n\t\tstart-stop-daemon -q -K -p /var/run/inadyn.pid -x /usr/sbin/inadyn\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\trm -f /var/run/inadyn.pid\n\t\t;;\n\trestart)\n\t\t\"$0\" stop\n\t\t\"$0\" start\n\t\t;;\n\t\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/inadyn/inadyn.conf",
    "content": "# Basic configuration file for inadyn\n#\n# /etc/inadyn.conf\niface    = eth0\nperiod   = 300\n\nprovider default@dyndns.org {\n\tusername    = test\n\tpassword    = test\n\thostname    = test\n}\n"
  },
  {
    "path": "package/inadyn/inadyn.hash",
    "content": "# From https://github.com/troglobit/inadyn/releases/download/v2.8.1/inadyn-2.8.1.tar.xz.sha256\nsha256  1185a9fb165bfc5f5b5f66f0dd8a695c9bd78d4b20cd162273eeea77f2d2e685  inadyn-2.8.1.tar.xz\n\n# Locally computed\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/inadyn/inadyn.mk",
    "content": "################################################################################\n#\n# inadyn\n#\n################################################################################\n\nINADYN_VERSION = 2.8.1\nINADYN_SITE = https://github.com/troglobit/inadyn/releases/download/v$(INADYN_VERSION)\nINADYN_SOURCE = inadyn-$(INADYN_VERSION).tar.xz\nINADYN_LICENSE = GPL-2.0+\nINADYN_LICENSE_FILES = COPYING\nINADYN_DEPENDENCIES = host-pkgconf libconfuse\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nINADYN_CONF_OPTS += --enable-openssl\nINADYN_DEPENDENCIES += openssl\nelse ifeq ($(BR2_PACKAGE_GNUTLS),y)\nINADYN_DEPENDENCIES += gnutls\nelse\nINADYN_CONF_OPTS += --disable-ssl\nendif\n\ndefine INADYN_INSTALL_SAMPLE_CONFIG\n\t$(INSTALL) -D -m 0600 package/inadyn/inadyn.conf \\\n\t\t$(TARGET_DIR)/etc/inadyn.conf\nendef\nINADYN_POST_INSTALL_TARGET_HOOKS += INADYN_INSTALL_SAMPLE_CONFIG\n\ndefine INADYN_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/inadyn/S70inadyn \\\n\t\t$(TARGET_DIR)/etc/init.d/S70inadyn\nendef\n\ndefine INADYN_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/inadyn/inadyn.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/inadyn.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/inadyn/inadyn.service",
    "content": "[Unit]\nDescription=DDNS client\nAfter=syslog.target network.target\n\n[Service]\nExecStart=/usr/bin/inadyn\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/inconsolata/Config.in",
    "content": "config BR2_PACKAGE_INCONSOLATA\n\tbool \"inconsolata\"\n\thelp\n\t  Inconsolata is a monospace font, designed for code listings\n\t  and the like.\n\n\t  http://www.google.com/fonts/specimen/Inconsolata\n"
  },
  {
    "path": "package/inconsolata/inconsolata.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20091207T044352Z/pool/main/t/ttf-inconsolata/ttf-inconsolata_001.010-2.dsc\nsha256  ecf8ba44911fcb3c9683aef1ca2b3cfbafa119a3e93c682f448850e1ae08ce93  ttf-inconsolata_001.010.orig.tar.gz\n# Locally computed\nsha256  8bbed014d1c85a9e3f36703816833c9538e140fea88c2bc3a745ce2449dc18ab  OFL.txt\n"
  },
  {
    "path": "package/inconsolata/inconsolata.mk",
    "content": "################################################################################\n#\n# inconsolata\n#\n################################################################################\n\nINCONSOLATA_VERSION = 001.010\nINCONSOLATA_SITE = http://snapshot.debian.org/archive/debian/20090524T155154Z/pool/main/t/ttf-inconsolata\nINCONSOLATA_SOURCE = ttf-inconsolata_$(INCONSOLATA_VERSION).orig.tar.gz\nINCONSOLATA_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/inconsolata\nINCONSOLATA_LICENSE = OFL-1.0\nINCONSOLATA_LICENSE_FILES = OFL.txt\n\ndefine INCONSOLATA_INSTALL_TARGET_CMDS\n\tmkdir -p $(INCONSOLATA_TARGET_DIR)\n\t$(INSTALL) -m 644 $(@D)/*.otf $(INCONSOLATA_TARGET_DIR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/inih/Config.in",
    "content": "config BR2_PACKAGE_INIH\n\tbool \"inih\"\n\thelp\n\t  inih (INI Not Invented Here) is a simple .INI file parser\n\t  written in C.\n\n\t  https://github.com/benhoyt/inih/\n"
  },
  {
    "path": "package/inih/inih.hash",
    "content": "# Locally computed\nsha256  01b0366fdfdf6363efc070c2f856f1afa33e7a6546548bada5456ad94a516241  inih-53.tar.gz\nsha256  9ae3b39e83e9158e44b67733baa3bb2d84e80efdcfb14a5820210a42c7abdf7f  LICENSE.txt\n"
  },
  {
    "path": "package/inih/inih.mk",
    "content": "################################################################################\n#\n# inih\n#\n################################################################################\n\nINIH_VERSION = 53\nINIH_SITE = $(call github,benhoyt,inih,r$(INIH_VERSION))\nINIH_INSTALL_STAGING = YES\nINIH_LICENSE = BSD-3-Clause\nINIH_LICENSE_FILES = LICENSE.txt\nINIH_CONF_OPTS = -Ddistro_install=true\n\nifeq ($(BR2_INSTALL_LIBSTDCPP),y)\nINIH_CONF_OPTS += -Dwith_INIReader=true\nelse\nINIH_CONF_OPTS += -Dwith_INIReader=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/initscripts/Config.in",
    "content": "config BR2_PACKAGE_INITSCRIPTS\n\tbool\n\thelp\n\t  The basics startup scripts for both SysV and Busybox\n"
  },
  {
    "path": "package/initscripts/init.d/rcK",
    "content": "#!/bin/sh\n\n\n# Stop all init scripts in /etc/init.d\n# executing them in reversed numerical order.\n#\nfor i in $(ls -r /etc/init.d/S??*) ;do\n\n     # Ignore dangling symlinks (if any).\n     [ ! -f \"$i\" ] && continue\n\n     case \"$i\" in\n\t*.sh)\n\t    # Source shell script for speed.\n\t    (\n\t\ttrap - INT QUIT TSTP\n\t\tset stop\n\t\t. $i\n\t    )\n\t    ;;\n\t*)\n\t    # No sh extension, so fork subprocess.\n\t    $i stop\n\t    ;;\n    esac\ndone\n\n"
  },
  {
    "path": "package/initscripts/init.d/rcS",
    "content": "#!/bin/sh\n\n\n# Start all init scripts in /etc/init.d\n# executing them in numerical order.\n#\nfor i in /etc/init.d/S??* ;do\n\n     # Ignore dangling symlinks (if any).\n     [ ! -f \"$i\" ] && continue\n\n     case \"$i\" in\n\t*.sh)\n\t    # Source shell script for speed.\n\t    (\n\t\ttrap - INT QUIT TSTP\n\t\tset start\n\t\t. $i\n\t    )\n\t    ;;\n\t*)\n\t    # No sh extension, so fork subprocess.\n\t    $i start\n\t    ;;\n    esac\ndone\n\n"
  },
  {
    "path": "package/initscripts/initscripts.mk",
    "content": "################################################################################\n#\n# initscripts\n#\n################################################################################\n\ndefine INITSCRIPTS_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/etc/init.d\n\t$(INSTALL) -D -m 0755 package/initscripts/init.d/* $(TARGET_DIR)/etc/init.d/\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/inotify-tools/Config.in",
    "content": "config BR2_PACKAGE_INOTIFY_TOOLS\n\tbool \"inotify-tools\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  inotify-tools is a C library and a set of command-line\n\t  programs for Linux providing a simple interface to inotify.\n\t  These programs can be used to monitor and act upon\n\t  filesystem events. Provides the 'inotifywait' and\n\t  'inotifywatch' binaries.\n\n\t  https://github.com/inotify-tools/inotify-tools\n"
  },
  {
    "path": "package/inotify-tools/inotify-tools.hash",
    "content": "# Locally computed\nsha256  c5b018567814ea555d716f518b6e3ae243c733f7bd3e8585d81748a6da286f3c  inotify-tools-3.20.2.2.tar.gz\nsha256  e41fc126320a79ed53b5aa3386f059f7d10770856d6fd714ab80a96ce6bd09d6  COPYING\n"
  },
  {
    "path": "package/inotify-tools/inotify-tools.mk",
    "content": "################################################################################\n#\n# inotify-tools\n#\n################################################################################\n\nINOTIFY_TOOLS_VERSION = 3.20.2.2\nINOTIFY_TOOLS_SITE = https://github.com/inotify-tools/inotify-tools/releases/download/$(INOTIFY_TOOLS_VERSION)\nINOTIFY_TOOLS_LICENSE = GPL-2.0+\nINOTIFY_TOOLS_LICENSE_FILES = COPYING\nINOTIFY_TOOLS_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/input-event-daemon/Config.in",
    "content": "config BR2_PACKAGE_INPUT_EVENT_DAEMON\n\tbool \"input-event-daemon\"\n\t# Uses fork()\n\tdepends on BR2_USE_MMU\n\thelp\n\t  input-event-daemon is a daemon which executes\n\t  a user-defined command on input events, such as\n\t  keys, mouse buttons and switches.\n\n\t  http://github.com/gandro/input-event-daemon\n"
  },
  {
    "path": "package/input-event-daemon/S99input-event-daemon",
    "content": "#! /bin/sh\n\n[ -f /usr/bin/input-event-daemon ] || exit 0\n\nstart() {\n\tprintf \"Starting input-event-daemon: \"\n\tinput-event-daemon\n\techo \"done\"\n}\n\n\nstop() {\n\tprintf \"Stopping input-event-daemon: \"\n\tkillall input-event-daemon\n\techo \"done\"\n}\n\nrestart() {\n\tstop\n\tstart\n}\n\n# See how we were called.\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|reload|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/input-event-daemon/input-event-daemon.hash",
    "content": "# Locally calculated\nsha256  1d9a44160aead88080093f74be9d709fbbc2637f982958e2673d80aedacd0a65  input-event-daemon-0.1.3.tar.gz\nsha256  56f6614c63a023e4d486332968bfa7933f06ea7c785ef85f403448022ae7f912  README\n"
  },
  {
    "path": "package/input-event-daemon/input-event-daemon.mk",
    "content": "################################################################################\n#\n# input-event-daemon\n#\n################################################################################\n\nINPUT_EVENT_DAEMON_VERSION = 0.1.3\nINPUT_EVENT_DAEMON_SITE = $(call github,gandro,input-event-daemon,v$(INPUT_EVENT_DAEMON_VERSION))\nINPUT_EVENT_DAEMON_LICENSE = input-event-daemon license\nINPUT_EVENT_DAEMON_LICENSE_FILES = README\n\ndefine INPUT_EVENT_DAEMON_BUILD_CMDS\n\ttouch $(@D)/input-event-table.h\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS)\" -C $(@D)\nendef\n\ndefine INPUT_EVENT_DAEMON_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 -D $(@D)/input-event-daemon \\\n\t\t$(TARGET_DIR)/usr/bin/input-event-daemon\n\t$(INSTALL) -m 644 -D $(@D)/docs/sample.conf \\\n\t\t$(TARGET_DIR)/etc/input-event-daemon.conf\nendef\n\ndefine INPUT_EVENT_DAEMON_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/input-event-daemon/S99input-event-daemon \\\n\t\t$(TARGET_DIR)/etc/init.d/S99input-event-daemon\nendef\n\ndefine INPUT_EVENT_DAEMON_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/input-event-daemon/input-event-daemon.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/input-event-daemon.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/input-event-daemon/input-event-daemon.service",
    "content": "[Unit]\nDescription=Input Event Daemon\n\n[Service]\nExecStart=/usr/bin/input-event-daemon --no-daemon\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/intel-gmmlib/0001-Drop-hardening-related-flags.patch",
    "content": "From 1528980ee15e9589a7e27ec6d12a33cd8aab57b4 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Tue, 8 Jun 2021 07:51:40 +0200\nSubject: [PATCH] Drop hardening-related flags\n\nThese will be set by Buildroot depending on toolchain capabilities and\nglobal Buildroot options.\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n Source/GmmLib/Linux.cmake | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/Source/GmmLib/Linux.cmake b/Source/GmmLib/Linux.cmake\nindex 1a09bc4..b28fc1b 100644\n--- a/Source/GmmLib/Linux.cmake\n+++ b/Source/GmmLib/Linux.cmake\n@@ -62,7 +62,6 @@ SET (GMMLIB_COMPILER_FLAGS_COMMON\n     -DUSE_SSE3\n     -DUSE_SSSE3\n     # Other common flags\n-    -fstack-protector\n     -fdata-sections\n     -ffunction-sections\n     -fmessage-length=0\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/intel-gmmlib/Config.in",
    "content": "config BR2_PACKAGE_INTEL_GMMLIB\n\tbool \"intel-gmmlib\"\n\tdepends on BR2_x86_64\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  The Intel(R) Graphics Memory Management Library provides\n\t  device specific and buffer management for the Intel(R)\n\t  Graphics Compute Runtime for OpenCL(TM) and the Intel(R)\n\t  Media Driver for VAAPI.\n\n\t  https://github.com/intel/gmmlib\n\ncomment \"intel-gmmlib needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/intel-gmmlib/intel-gmmlib.hash",
    "content": "# Locally computed\nsha256  d26a6512a1b3ca604dabe035ddaf47b4b445bd503eac69a59e4acb2d1f54634b  intel-gmmlib-21.3.1.tar.gz\nsha256  8b7446825df3f8b0268307e272aa6aaaf78351c83161d860d02c913c22666c48  LICENSE.md\n"
  },
  {
    "path": "package/intel-gmmlib/intel-gmmlib.mk",
    "content": "################################################################################\n#\n# intel-gmmlib\n#\n################################################################################\n\nINTEL_GMMLIB_VERSION = 21.3.1\nINTEL_GMMLIB_SITE = https://github.com/intel/gmmlib/archive\nINTEL_GMMLIB_LICENSE = MIT\nINTEL_GMMLIB_LICENSE_FILES = LICENSE.md\n\nINTEL_GMMLIB_INSTALL_STAGING = YES\nINTEL_GMMLIB_SUPPORTS_IN_SOURCE_BUILD = NO\n\nINTEL_GMMLIB_CONF_OPTS = -DRUN_TEST_SUITE=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/intel-mediadriver/0001-Add-MEDIA-BUILD-HARDENING-option.patch",
    "content": "From 103c00c8d74a1cd87686850212bd93c0e4d59fc9 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 11 Aug 2021 21:34:59 +0200\nSubject: [PATCH] Add MEDIA_BUILD_HARDENING option\n\nAdd MEDIA_BUILD_HARDENING option to allow the user to disable hardening\noptions such as stack-protector-all or FORTIFY SOURCE 2 which are not\nalways available (e.g. fortify source 2 is only available on glibc >= 6\nand not musl/uclibc-ng)\n\nPatch sent upstream: https://github.com/intel/media-driver/pull/1242\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n cmrtlib/linux/CMakeLists.txt                       | 14 ++++++++++----\n .../cmake/linux/media_compile_flags_linux.cmake    | 12 ++++++++++--\n media_driver/media_top_cmake.cmake                 |  8 +++++++-\n 3 files changed, 27 insertions(+), 7 deletions(-)\n\ndiff --git a/cmrtlib/linux/CMakeLists.txt b/cmrtlib/linux/CMakeLists.txt\nindex 65f71ceef..b066138d9 100644\n--- a/cmrtlib/linux/CMakeLists.txt\n+++ b/cmrtlib/linux/CMakeLists.txt\n@@ -32,12 +32,18 @@ else()\n endif()\n \n # Set up compile options that will be used for the Linux build\n-set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} ${CPP_STANDARD_OPTION} -fPIC -fpermissive -fstack-protector-all\")\n-set(CMAKE_CXX_FLAGS_RELEASE \"${CMAKE_CXX_FLAGS_RELEASE} -fno-strict-aliasing -D_FORTIFY_SOURCE=2\")\n+set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} ${CPP_STANDARD_OPTION} -fPIC -fpermissive\")\n+set(CMAKE_CXX_FLAGS_RELEASE \"${CMAKE_CXX_FLAGS_RELEASE} -fno-strict-aliasing\")\n set(CMAKE_CXX_FLAGS_DEBUG   \"${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -D__DEBUG -O0\")\n-set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} ${CPP_STANDARD_OPTION} -fPIC -fpermissive -fstack-protector-all\")\n-set(CMAKE_C_FLAGS_RELEASE \"${CMAKE_C_FLAGS_RELEASE} -fno-strict-aliasing -D_FORTIFY_SOURCE=2\")\n+set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} ${CPP_STANDARD_OPTION} -fPIC -fpermissive\")\n+set(CMAKE_C_FLAGS_RELEASE \"${CMAKE_C_FLAGS_RELEASE} -fno-strict-aliasing\")\n set(CMAKE_C_FLAGS_DEBUG   \"${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -D__DEBUG -O0\")\n+if(MEDIA_BUILD_HARDENING)\n+    set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS} -fstack-protector-all\")\n+    set(CMAKE_CXX_FLAGS_RELEASE \"${CMAKE_CXX_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2\")\n+    set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS} -fstack-protector-all\")\n+    set(CMAKE_C_FLAGS_RELEASE \"${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2\")\n+endif()\n if(MEDIA_BUILD_FATAL_WARNINGS)\n     set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS} -Werror\")\n     set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS} -Werror\")\ndiff --git a/media_driver/cmake/linux/media_compile_flags_linux.cmake b/media_driver/cmake/linux/media_compile_flags_linux.cmake\nindex 7a2bd64b6..98896b131 100755\n--- a/media_driver/cmake/linux/media_compile_flags_linux.cmake\n+++ b/media_driver/cmake/linux/media_compile_flags_linux.cmake\n@@ -47,7 +47,6 @@ set(MEDIA_COMPILER_FLAGS_COMMON\n     # Other common flags\n     -fmessage-length=0\n     -fvisibility=hidden\n-    -fstack-protector\n     -fdata-sections\n     -ffunction-sections\n     -Wl,--gc-sections\n@@ -64,6 +63,11 @@ set(MEDIA_COMPILER_FLAGS_COMMON\n     -g\n )\n \n+if(MEDIA_BUILD_HARDENING)\n+    set(MEDIA_COMPILER_FLAGS_COMMON\n+        ${MEDIA_COMPILER_FLAGS_COMMON}\n+        -fstack-protector)\n+endif()\n \n if(${UFO_MARCH} STREQUAL \"slm\")\n     set(MEDIA_COMPILER_FLAGS_COMMON\n@@ -119,9 +123,13 @@ if(${UFO_VARIANT} STREQUAL \"default\")\n     set(MEDIA_COMPILER_FLAGS_RELEASE\n         ${MEDIA_COMPILER_FLAGS_RELEASE}\n         -O2\n-        -D_FORTIFY_SOURCE=2\n         -fno-omit-frame-pointer\n     )\n+    if(MEDIA_BUILD_HARDENING)\n+        set(MEDIA_COMPILER_FLAGS_RELEASE\n+            ${MEDIA_COMPILER_FLAGS_RELEASE}\n+            -D_FORTIFY_SOURCE=2)\n+    endif()\n endif()\n \n if(NOT ${PLATFORM} STREQUAL \"android\")\ndiff --git a/media_driver/media_top_cmake.cmake b/media_driver/media_top_cmake.cmake\nindex f089ea45f..b0b428914 100755\n--- a/media_driver/media_top_cmake.cmake\n+++ b/media_driver/media_top_cmake.cmake\n@@ -111,7 +111,13 @@ if(MEDIA_BUILD_FATAL_WARNINGS)\n     set_target_properties(${LIB_NAME_OBJ} PROPERTIES COMPILE_FLAGS \"-Werror\")\n endif()\n \n-set_target_properties(${LIB_NAME} PROPERTIES LINK_FLAGS \"-Wl,--no-as-needed -Wl,--gc-sections -z relro -z now -fstack-protector -fPIC\")\n+set(MEDIA_LINK_FLAGS \"-Wl,--no-as-needed -Wl,--gc-sections -z relro -z now -fPIC\")\n+option(MEDIA_BUILD_HARDENING \"Enable hardening (stack-protector, fortify source)\" ON)\n+if(MEDIA_BUILD_HARDENING)\n+    set(MEDIA_LINK_FLAGS \"${MEDIA_LINK_FLAGS} -fstack-protector\")\n+endif()\n+set_target_properties(${LIB_NAME} PROPERTIES LINK_FLAGS ${MEDIA_LINK_FLAGS})\n+\n set_target_properties(${LIB_NAME}        PROPERTIES PREFIX \"\")\n set_target_properties(${LIB_NAME_STATIC} PROPERTIES PREFIX \"\")\n \n"
  },
  {
    "path": "package/intel-mediadriver/Config.in",
    "content": "config BR2_PACKAGE_INTEL_MEDIADRIVER\n\tbool \"intel-mediadriver\"\n\tdepends on BR2_x86_64\n\tdepends on !BR2_STATIC_LIBS # mesa3d, libva\n\tdepends on BR2_INSTALL_LIBSTDCPP # mesa3d\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_1 # mesa3d\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libva\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # mesa3d\n\tselect BR2_PACKAGE_INTEL_GMMLIB\n\tselect BR2_PACKAGE_LIBPCIACCESS\n\tselect BR2_PACKAGE_LIBVA\n\tselect BR2_PACKAGE_MESA3D\n\thelp\n\t  The Intel(R) Media Driver for VAAPI is a new VA-API (Video\n\t  Acceleration API) user mode driver supporting hardware\n\t  accelerated decoding, encoding, and video post processing for\n\t  GEN based graphics hardware.\n\n\t  https://github.com/intel/media-driver\n\ncomment \"intel-mediadriver needs a toolchain w/ dynamic library, C++, NPTL\"\n\tdepends on BR2_x86_64 && BR2_TOOLCHAIN_HAS_SYNC_1\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/intel-mediadriver/intel-mediadriver.hash",
    "content": "# Locally computed\nsha256  182925ed21c0a9843a63865e34dc35bf713294260d14ceb29e8de0de2e34733f  intel-media-21.3.5.tar.gz\nsha256  74979d5aaee78b8da82e3aafd415a216b6131dfff6d95d6930927c8a4e3bded3  LICENSE.md\n"
  },
  {
    "path": "package/intel-mediadriver/intel-mediadriver.mk",
    "content": "################################################################################\n#\n# intel-mediadriver\n#\n################################################################################\n\n# based on https://software.intel.com/en-us/articles/build-and-debug-open-source-media-stack\n\nINTEL_MEDIADRIVER_VERSION = 21.3.5\nINTEL_MEDIADRIVER_SITE = http://github.com/intel/media-driver/archive\nINTEL_MEDIADRIVER_SOURCE= intel-media-$(INTEL_MEDIADRIVER_VERSION).tar.gz\nINTEL_MEDIADRIVER_LICENSE = MIT, BSD-3-Clause\nINTEL_MEDIADRIVER_LICENSE_FILES = LICENSE.md\n\nINTEL_MEDIADRIVER_DEPENDENCIES = \\\n\tintel-gmmlib \\\n\tlibpciaccess \\\n\tlibva \\\n\tmesa3d\n\nifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)\nINTEL_MEDIADRIVER_DEPENDENCIES += xlib_libX11\nendif\n\nINTEL_MEDIADRIVER_SUPPORTS_IN_SOURCE_BUILD = NO\n\n# hardening is disabled here, so that the top-level Buildroot options\n# control which hardening features are enabled\nINTEL_MEDIADRIVER_CONF_OPTS = \\\n\t-DINSTALL_DRIVER_SYSCONF=OFF \\\n\t-DMEDIA_BUILD_FATAL_WARNINGS=OFF \\\n\t-DMEDIA_RUN_TEST_SUITE=OFF \\\n\t-DMEDIA_BUILD_HARDENING=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/intel-mediasdk/0001-Don-t-force-fstack-protector.patch",
    "content": "From 28ca7393c08cb54b87d11c1ca92821e48f54781b Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Mon, 15 Apr 2019 23:09:33 +0200\nSubject: [PATCH] Don't force -fstack-protector\n\nThis allows the environment to decide whether SSP should be used or\nnot, for example to support toolchains that don't have SSP support.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n[Bernd: rebased for 21.2.3]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n api/mfx_dispatch/linux/CMakeLists.txt | 2 +-\n builder/FindPackages.cmake            | 4 ++--\n 2 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/api/mfx_dispatch/linux/CMakeLists.txt b/api/mfx_dispatch/linux/CMakeLists.txt\nindex 15a4bd9a..4415f840 100644\n--- a/api/mfx_dispatch/linux/CMakeLists.txt\n+++ b/api/mfx_dispatch/linux/CMakeLists.txt\n@@ -101,7 +101,7 @@ target_link_libraries(mfx dl)\n get_api_version(MFX_VERSION_MAJOR MFX_VERSION_MINOR)\n \n set_target_properties( mfx PROPERTIES LINK_FLAGS\n-  \"-Wl,--no-undefined,-z,relro,-z,now,-z,noexecstack -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libmfx.map -fstack-protector\")\n+  \"-Wl,--no-undefined,-z,relro,-z,now,-z,noexecstack -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libmfx.map\")\n set_target_properties( mfx PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIB_DIR}/${CMAKE_BUILD_TYPE} FOLDER mfx )\n set_target_properties( mfx PROPERTIES   VERSION ${MFX_VERSION_MAJOR}.${MFX_VERSION_MINOR})\n set_target_properties( mfx PROPERTIES SOVERSION ${MFX_VERSION_MAJOR})\ndiff --git a/builder/FindPackages.cmake b/builder/FindPackages.cmake\nindex 7e36ae2d..5b8b9b9d 100644\n--- a/builder/FindPackages.cmake\n+++ b/builder/FindPackages.cmake\n@@ -83,7 +83,7 @@ function( configure_build_variant_linux target variant )\n     return() # should not occur; just in case\n   endif()\n   set( link_flags_list \"-Wl,--no-undefined,-z,relro,-z,now,-z,noexecstack -Wl,--no-as-needed -ldl\")\n-  append_property( ${ARGV0} LINK_FLAGS \"${link_flags_list} ${MFX_LDFLAGS} -fstack-protector\" )\n+  append_property( ${ARGV0} LINK_FLAGS \"${link_flags_list} ${MFX_LDFLAGS}\" )\n #  message( STATUS \"Libva located at: ${PKG_LIBVA_LIBRARY_DIRS}\" )\n \n   if( ARGV1 MATCHES hw AND Linux )\n@@ -445,7 +445,7 @@ function(configure_dependencies target dependencies variant)\n   endforeach()\n \n   set(SCOPE_CFLAGS ${SCOPE_CFLAGS} PARENT_SCOPE)\n-  set(SCOPE_LINKFLAGS \"${SCOPE_LINKFLAGS} -Wl,--no-undefined,-z,relro,-z,now,-z,noexecstack -fstack-protector\" PARENT_SCOPE)\n+  set(SCOPE_LINKFLAGS \"${SCOPE_LINKFLAGS} -Wl,--no-undefined,-z,relro,-z,now,-z,noexecstack\" PARENT_SCOPE)\n   set(SCOPE_LIBS ${SCOPE_LIBS} PARENT_SCOPE)\n endfunction()\n \n-- \n2.20.1\n\n"
  },
  {
    "path": "package/intel-mediasdk/Config.in",
    "content": "config BR2_PACKAGE_INTEL_MEDIASDK\n\tbool \"intel-mediasdk\"\n\tdepends on BR2_x86_64\n\tdepends on !BR2_STATIC_LIBS # intel-mediadriver\n\tdepends on BR2_INSTALL_LIBSTDCPP # intel-mediadriver\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_1 # intel-mediadriver\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # intel-mediadriver\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # intel-mediadriver\n\tselect BR2_PACKAGE_INTEL_MEDIADRIVER\n\tselect BR2_PACKAGE_LIBDRM_INTEL\n\thelp\n\t  Intel(R) Media SDK provides an API to access\n\t  hardware-accelerated video decode, encode and filtering on\n\t  Intel® platforms with integrated graphics.\n\n\t  Supported video encoders: HEVC, AVC, MPEG-2, JPEG\n\t  Supported Video decoders: HEVC, AVC, VP8, MPEG-2, VC1, JPEG\n\t  Supported video pre-processing filters: Color Conversion,\n\t  Deinterlace, Denoise, Resize, Rotate, Composition\n\n\t  http://mediasdk.intel.com/\n\ncomment \"intel-mediasdk needs a toolchain w/ dynamic library, C++, NPTL\"\n\tdepends on BR2_x86_64 && BR2_TOOLCHAIN_HAS_SYNC_1\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/intel-mediasdk/intel-mediasdk.hash",
    "content": "# Locally computed\nsha256  3f13869298d3946d7d91e58846e274ef62cd5af2473f59f36b57b2c27ebfd87c  intel-mediasdk-21.3.5.tar.gz\nsha256  dfd67773578903698f9ff4a61eb8f2d84810cbecd56f3f3cee8c649f813b6ea6  LICENSE\n"
  },
  {
    "path": "package/intel-mediasdk/intel-mediasdk.mk",
    "content": "################################################################################\n#\n# intel-mediasdk\n#\n################################################################################\n\nINTEL_MEDIASDK_VERSION = 21.3.5\nINTEL_MEDIASDK_SITE = http://github.com/Intel-Media-SDK/MediaSDK/archive\nINTEL_MEDIASDK_LICENSE = MIT\nINTEL_MEDIASDK_LICENSE_FILES = LICENSE\n\nINTEL_MEDIASDK_INSTALL_STAGING = YES\nINTEL_MEDIASDK_DEPENDENCIES = intel-mediadriver\n\nINTEL_MEDIASDK_CONF_OPTS = \\\n\t-DBUILD_SAMPLES=OFF \\\n\t-DBUILD_TUTORIALS=OFF \\\n\t-DMFX_INCLUDE=\"$(@D)/api/include\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/intel-microcode/Config.in",
    "content": "config BR2_PACKAGE_INTEL_MICROCODE\n\tbool \"intel-microcode\"\n\tdepends on BR2_x86_64 || BR2_i386\n\thelp\n\t  This package provides an Intel microcode data file that can be\n\t  used to correct processor errors. The iucode-tool package and\n\t  proper kernel support are required to upload the microcode.\n\n\t  https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files\n\nconfig BR2_PACKAGE_INTEL_MICROCODE_INSTALL_TARGET\n\tbool \"install microcode files to /lib/firmware in target\"\n\tdefault y\n\tdepends on BR2_PACKAGE_INTEL_MICROCODE\n\thelp\n\t  Select this option to have the microcode files installed to\n\t  /lib/firmware/intel-ucode in the target root filesystem, in\n\t  addition to the images directory.\n"
  },
  {
    "path": "package/intel-microcode/intel-microcode.hash",
    "content": "# Locally computed\nsha256  fd85b6b769efd029dec6a2c07106fd18fb4dcb548b7bc4cde09295a8344ef6d7  intel-microcode-20210608.tar.gz\nsha256  03efb1491c7e899feb2665fa299363e64035e5444c1b8bc1f6ebed30de964e12  license\n"
  },
  {
    "path": "package/intel-microcode/intel-microcode.mk",
    "content": "################################################################################\n#\n# intel-microcode\n#\n################################################################################\n\nINTEL_MICROCODE_VERSION = 20210608\nINTEL_MICROCODE_SITE = $(call github,intel,Intel-Linux-Processor-Microcode-Data-Files,microcode-$(INTEL_MICROCODE_VERSION))\nINTEL_MICROCODE_LICENSE = PROPRIETARY\nINTEL_MICROCODE_LICENSE_FILES = license\nINTEL_MICROCODE_REDISTRIBUTE = NO\nINTEL_MICROCODE_INSTALL_IMAGES = YES\n\ndefine INTEL_MICROCODE_INSTALL_IMAGES_CMDS\n\tmkdir -p $(BINARIES_DIR)/intel-ucode\n\t$(INSTALL) -m 0644 -t $(BINARIES_DIR)/intel-ucode \\\n\t\t$(@D)/intel-ucode/*\nendef\n\nifeq ($(BR2_PACKAGE_INTEL_MICROCODE_INSTALL_TARGET),y)\ndefine INTEL_MICROCODE_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/lib/firmware/intel-ucode\n\t$(INSTALL) -m 0644 -t $(TARGET_DIR)/lib/firmware/intel-ucode \\\n\t\t$(@D)/intel-ucode/*\nendef\nelse\nINTEL_MICROCODE_INSTALL_TARGET = NO\nendif\n\ndefine INTEL_MICROCODE_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_MICROCODE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_MICROCODE_INTEL)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/intltool/0001-perl-5.26-compatibility.patch",
    "content": "Fix regex errors thrown by Perl 5.26:\n\nUnescaped 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.\n\nFetched from:\nhttps://github.com/Alexpux/MSYS2-packages/blob/master/intltool/perl-5.22-compatibility.patch\n\nReported upstream:\nhttps://bugs.launchpad.net/intltool/+bug/1696658\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n\n--- intltool-0.51.0.orig/intltool-update.in\t2015-03-09 02:39:54.000000000 +0100\n+++ intltool-0.51.0.orig/intltool-update.in\t2015-06-19 01:52:07.171228154 +0200\n@@ -1062,7 +1062,7 @@ \n \t}\n     }\n \n-    if ($str =~ /^(.*)\\${?([A-Z_]+)}?(.*)$/)\n+    if ($str =~ /^(.*)\\$\\{?([A-Z_]+)}?(.*)$/)\n     {\n \tmy $rest = $3;\n \tmy $untouched = $1;\n@@ -1190,10 +1190,10 @@ \n \t$name    =~ s/\\(+$//g;\n \t$version =~ s/\\(+$//g;\n \n-\t$varhash{\"PACKAGE_NAME\"} = $name if (not $name =~ /\\${?AC_PACKAGE_NAME}?/);\n-\t$varhash{\"PACKAGE\"} = $name if (not $name =~ /\\${?PACKAGE}?/);\n-\t$varhash{\"PACKAGE_VERSION\"} = $version if (not $name =~ /\\${?AC_PACKAGE_VERSION}?/);\n-\t$varhash{\"VERSION\"} = $version if (not $name =~ /\\${?VERSION}?/);\n+\t$varhash{\"PACKAGE_NAME\"} = $name if (not $name =~ /\\$\\{?AC_PACKAGE_NAME}?/);\n+\t$varhash{\"PACKAGE\"} = $name if (not $name =~ /\\$\\{?PACKAGE}?/);\n+\t$varhash{\"PACKAGE_VERSION\"} = $version if (not $name =~ /\\$\\{?AC_PACKAGE_VERSION}?/);\n+\t$varhash{\"VERSION\"} = $version if (not $name =~ /\\$\\{?VERSION}?/);\n     }\n \n     if ($conf_source =~ /^AC_INIT\\(([^,\\)]+),([^,\\)]+)[,]?([^,\\)]+)?/m)\n@@ -1219,11 +1219,11 @@ \n \t$version =~ s/\\(+$//g;\n         $bugurl  =~ s/\\(+$//g if (defined $bugurl);\n \n-\t$varhash{\"PACKAGE_NAME\"} = $name if (not $name =~ /\\${?AC_PACKAGE_NAME}?/);\n-\t$varhash{\"PACKAGE\"} = $name if (not $name =~ /\\${?PACKAGE}?/);\n-\t$varhash{\"PACKAGE_VERSION\"} = $version if (not $name =~ /\\${?AC_PACKAGE_VERSION}?/);\n-\t$varhash{\"VERSION\"} = $version if (not $name =~ /\\${?VERSION}?/);\n-        $varhash{\"PACKAGE_BUGREPORT\"} = $bugurl if (defined $bugurl and not $bugurl =~ /\\${?\\w+}?/);\n+\t$varhash{\"PACKAGE_NAME\"} = $name if (not $name =~ /\\$\\{?AC_PACKAGE_NAME}?/);\n+\t$varhash{\"PACKAGE\"} = $name if (not $name =~ /\\$\\{?PACKAGE}?/);\n+\t$varhash{\"PACKAGE_VERSION\"} = $version if (not $name =~ /\\$\\{?AC_PACKAGE_VERSION}?/);\n+\t$varhash{\"VERSION\"} = $version if (not $name =~ /\\$\\{?VERSION}?/);\n+        $varhash{\"PACKAGE_BUGREPORT\"} = $bugurl if (defined $bugurl and not $bugurl =~ /\\$\\{?\\w+}?/);\n     }\n \n     # \\s makes this not work, why?\n"
  },
  {
    "path": "package/intltool/intltool.hash",
    "content": "# From https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz/+md5\nmd5\t12e517cac2b57a0121cda351570f1e63 intltool-0.51.0.tar.gz\n\n# Locally calculated\nsha256 67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd  intltool-0.51.0.tar.gz\nsha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/intltool/intltool.mk",
    "content": "################################################################################\n#\n# intltool\n#\n################################################################################\n\nINTLTOOL_VERSION = 0.51.0\nINTLTOOL_SITE = https://launchpad.net/intltool/trunk/$(INTLTOOL_VERSION)/+download\nINTLTOOL_LICENSE = GPL-2.0+\nINTLTOOL_LICENSE_FILES = COPYING\n\nHOST_INTLTOOL_DEPENDENCIES = host-gettext host-libxml-parser-perl\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/iodine/0001-disable-systemd-and-selinux.patch",
    "content": "Disable selinux and systemd support since they check for host headers.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura iodine-0.7.0.orig/src/osflags iodine-0.7.0/src/osflags\n--- iodine-0.7.0.orig/src/osflags\t2015-02-20 14:59:00.799958145 -0300\n+++ iodine-0.7.0/src/osflags\t2015-02-20 15:05:54.791135141 -0300\n@@ -18,8 +18,8 @@\n \t\t;;\n \t\tLinux)\n \t\t\tFLAGS=\"\";\n-\t\t\t[ -e /usr/include/selinux/selinux.h ] && FLAGS=\"$FLAGS -lselinux\";\n-\t\t\t[ -e /usr/include/systemd/sd-daemon.h ] && FLAGS=\"$FLAGS -lsystemd-daemon\";\n+\t\t\t#[ -e /usr/include/selinux/selinux.h ] && FLAGS=\"$FLAGS -lselinux\";\n+\t\t\t#[ -e /usr/include/systemd/sd-daemon.h ] && FLAGS=\"$FLAGS -lsystemd-daemon\";\n \t\t\techo $FLAGS;\n \t\t;;\n \tesac\n@@ -34,8 +34,8 @@\n \t\t;;\n \t\tLinux)\n \t\t\tFLAGS=\"-D_GNU_SOURCE\"\n-\t\t\t[ -e /usr/include/selinux/selinux.h ] && FLAGS=\"$FLAGS -DHAVE_SETCON\";\n-\t\t\t[ -e /usr/include/systemd/sd-daemon.h ] && FLAGS=\"$FLAGS -DHAVE_SYSTEMD\";\n+\t\t\t#[ -e /usr/include/selinux/selinux.h ] && FLAGS=\"$FLAGS -DHAVE_SETCON\";\n+\t\t\t#[ -e /usr/include/systemd/sd-daemon.h ] && FLAGS=\"$FLAGS -DHAVE_SYSTEMD\";\n \t\t\techo $FLAGS;\n \t\t;;\n \tesac\n"
  },
  {
    "path": "package/iodine/Config.in",
    "content": "config BR2_PACKAGE_IODINE\n\tbool \"iodine\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  iodine lets you tunnel IPv4 data through a DNS server.\n\t  This can be usable in different situations where\n\t  internet access is firewalled, but DNS queries are allowed.\n\n\t  http://code.kryo.se/iodine/\n"
  },
  {
    "path": "package/iodine/iodine.hash",
    "content": "# From http://code.kryo.se/iodine/\nmd5\tfdbf3b81cd69caf5230d76a8b039fd99\tiodine-0.7.0.tar.gz\n# Locally computed\nsha256  f41a252b2218759aa351270b7ad9791bdd323836b940e35c0614837a5d24dcb7  README\n"
  },
  {
    "path": "package/iodine/iodine.mk",
    "content": "################################################################################\n#\n# iodine\n#\n################################################################################\n\nIODINE_VERSION = 0.7.0\nIODINE_SITE = http://code.kryo.se/iodine\nIODINE_DEPENDENCIES = zlib\nIODINE_LICENSE = MIT\nIODINE_LICENSE_FILES = README\nIODINE_CPE_ID_VENDOR = kryo\nIODINE_SELINUX_MODULES = iodine\n\nIODINE_CFLAGS = $(TARGET_CFLAGS)\n\n# iodine contains a local implementation of daemon(3) for older\n# systems, unless __GLIBC__ is defined. Musl does provide it, but\n# unlike uClibc it doesn't define __GLIBC__. Work around it by\n# pretending to be glibc as we otherwise end up with symbol conflicts.\nifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)\nIODINE_CFLAGS += -D__GLIBC__\nendif\n\ndefine IODINE_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) CFLAGS=\"$(IODINE_CFLAGS)\" \\\n\t\t$(MAKE) ARCH=$(BR2_ARCH) -C $(@D)\nendef\n\ndefine IODINE_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install DESTDIR=\"$(TARGET_DIR)\" prefix=/usr\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/iotop/0001-Fix-build-error-with-Python-3.patch",
    "content": "Status: upstream\nhttp://repo.or.cz/w/iotop.git/commit/99c8d7cedce81f17b851954d94bfa73787300599\n\nSigned-off-by: Christophe Vu-Brugier <cvubrugier@fastmail.fm>\n\nFrom 99c8d7cedce81f17b851954d94bfa73787300599 Mon Sep 17 00:00:00 2001\nFrom: Christophe Vu-Brugier <cvubrugier@fastmail.fm>\nDate: Fri, 17 Oct 2014 13:49:31 +0200\nSubject: [PATCH] Fix build error with Python 3 caused by itervalues() in\n setup.py\n\nThe itervalues() method is not available in Python 3. As a\nconsequence, this patch replaces the call to itervalues() in setup.py\nwith a call to values() which works on both Python 2 and Python 3.\n\nSigned-off-by: Christophe Vu-Brugier <cvubrugier@fastmail.fm>\nSigned-off-by: Paul Wise <pabs3@bonedaddy.net>\n---\n setup.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/setup.py b/setup.py\nindex 7150102..9de6068 100755\n--- a/setup.py\n+++ b/setup.py\n@@ -7,7 +7,7 @@ from iotop.version import VERSION\n # Dirty hack to make setup.py install the iotop script to sbin/ instead of bin/\n # while still honoring the choice of installing into local/ or not.\n if hasattr(distutils_install, 'INSTALL_SCHEMES'):\n-    for d in distutils_install.INSTALL_SCHEMES.itervalues():\n+    for d in distutils_install.INSTALL_SCHEMES.values():\n         if d.get('scripts', '').endswith('/bin'):\n             d['scripts'] = d['scripts'][:-len('/bin')] + '/sbin'\n \n-- \n2.1.4\n\n"
  },
  {
    "path": "package/iotop/Config.in",
    "content": "comment \"iotop depends on python or python3\"\n\tdepends on !BR2_PACKAGE_PYTHON && !BR2_PACKAGE_PYTHON3\n\nconfig BR2_PACKAGE_IOTOP\n\tbool \"iotop\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_CURSES if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_CURSES if BR2_PACKAGE_PYTHON3\n\thelp\n\t  iotop does for I/O usage what top does for CPU usage.\n\n\t  http://guichaz.free.fr/iotop/\n"
  },
  {
    "path": "package/iotop/iotop.hash",
    "content": "# Locally calculated\nsha256  1a7c02fd3758bb048d8af861c5f8735eb3ee9abadeaa787f27b8af2b1eaee8ce  iotop-0.6.tar.gz\nsha256  c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42  COPYING\n"
  },
  {
    "path": "package/iotop/iotop.mk",
    "content": "################################################################################\n#\n# iotop\n#\n################################################################################\n\nIOTOP_VERSION = 0.6\nIOTOP_SITE = http://guichaz.free.fr/iotop/files\nIOTOP_LICENSE = GPL-2.0+\nIOTOP_LICENSE_FILES = COPYING\nIOTOP_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/iozone/0001-Add-new-targets-for-iozone.patch",
    "content": "From 5b1e973b2333e838624abf195b3ba9716591f304 Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Sun, 10 Oct 2021 10:15:26 +0200\nSubject: [PATCH] Add new targets for iozone:\n\nlinux-noaio is for linux targets without AIO (use case: uClibc)\nlinux-noth is for linux target without threads or AIO\n\nAnd make largefile support optional via CFLAGS.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\nSigned-off-by: Gilles Talis <gilles.talis@gmail.com>\n---\n src/current/makefile | 56 +++++++++++++++++++++++++++++++++++++-------\n 1 file changed, 47 insertions(+), 9 deletions(-)\n\ndiff --git a/src/current/makefile b/src/current/makefile\nindex 3a54701..3b17b1b 100644\n--- a/src/current/makefile\n+++ b/src/current/makefile\n@@ -172,10 +172,28 @@ hpux_no_ansi:\tiozone_hpux_no.o  libbif.o\n # GNU 'C' compiler Linux build with threads, largefiles, async I/O \n #\n linux:\tiozone_linux.o libasync.o libbif.o fileop_linux.o pit_server.o\n-\t$(CC)  -O3 $(CFLAGS) iozone_linux.o libasync.o libbif.o -lpthread \\\n+\t$(CC)  $(CFLAGS) $(LDFLAGS) iozone_linux.o libasync.o libbif.o \\\n+\t\t-lpthread -lrt -o iozone\n+\t$(CC)  $(CFLAGS) -Dlinux fileop_linux.o -o fileop\n+\t$(CC)  $(CFLAGS) -Dlinux pit_server.o -o pit_server\n+\n+#\n+# GNU 'C' compiler Linux build with threads, largefiles\n+#\n+linux-noaio: iozone_linux-noaio.o libbif.o fileop_linux.o pit_server.o\n+\t$(CC)  $(CFLAGS) $(LDFLAGS) iozone_linux-noaio.o libbif.o \\\n+\t\t-lpthread -lrt -o iozone\n+\t$(CC)  $(CFLAGS) -Dlinux fileop_linux.o -o fileop\n+\t$(CC)  $(CFLAGS) -Dlinux pit_server.o -o pit_server\n+\n+#\n+# GNU 'C' compiler Linux build with largefiles\n+#\n+linux-noth: iozone_linux-noth.o libbif.o fileop_linux.o pit_server.o\n+\t$(CC)  $(CFLAGS) $(LDFLAGS) iozone_linux-noth.o libbif.o \\\n \t\t-lrt -o iozone\n-\t$(CC)  -O3 $(CFLAGS) -Dlinux fileop_linux.o -o fileop\n-\t$(CC)  -O3 $(CFLAGS) -Dlinux pit_server.o -o pit_server\n+\t$(CC)  $(CFLAGS) -Dlinux fileop_linux.o -o fileop\n+\t$(CC)  $(CFLAGS) -Dlinux pit_server.o -o pit_server\n \n #\n # GNU 'C' compiler Linux build for powerpc chip with threads, largefiles, async I/O \n@@ -841,13 +859,33 @@ iozone_linux.o:\tiozone.c libbif.c libasync.c\n \t@echo \"\"\n \t@echo \"Building iozone for Linux\"\n \t@echo \"\"\n-\t$(CC) -Wmissing-prototypes -Wall -c -O3 -Dunix -DHAVE_ANSIC_C -DASYNC_IO -DHAVE_PREAD \\\n-\t\t-DSHARED_MEM -Dlinux -D_LARGEFILE64_SOURCE $(CFLAGS) iozone.c \\\n+\t$(CC) -Wmissing-prototypes -Wall -c -Dunix -DHAVE_ANSIC_C -DASYNC_IO -DHAVE_PREAD \\\n+\t\t-DSHARED_MEM -Dlinux $(CFLAGS) iozone.c \\\n \t\t-DNAME='\"linux\"' -o iozone_linux.o\n-\t$(CC) -Wmissing-prototypes -Wall -c -O3 -Dunix -DHAVE_ANSIC_C -DASYNC_IO -D_LARGEFILE64_SOURCE \\\n+\t$(CC) -Wmissing-prototypes -Wall -c -Dunix -DHAVE_ANSIC_C -DASYNC_IO \\\n+\t\t-DSHARED_MEM -Dlinux $(CFLAGS) libbif.c -o libbif.o\n+\t$(CC) -Wmissing-prototypes -Wall -c -Dunix -Dlinux -DHAVE_ANSIC_C -DASYNC_IO \\\n+\t\t$(CFLAGS) libasync.c  -o libasync.o\n+\n+iozone_linux-noaio.o: iozone.c libbif.c\n+\t@echo \"\"\n+\t@echo \"Building iozone for Linux no AIO\"\n+\t@echo \"\"\n+\t$(CC) -Wmissing-prototypes -Wall -c -Dunix -DHAVE_ANSIC_C -DHAVE_PREAD \\\n+\t\t-DSHARED_MEM -Dlinux $(CFLAGS) iozone.c \\\n+\t\t-DNAME='\"linux\"' -o iozone_linux-noaio.o\n+\t$(CC) -Wmissing-prototypes -Wall -c -Dunix -DHAVE_ANSIC_C \\\n+\t\t-DSHARED_MEM -Dlinux $(CFLAGS) libbif.c -o libbif.o\n+\n+iozone_linux-noth.o: iozone.c libbif.c\n+\t@echo \"\"\n+\t@echo \"Building iozone for Linux with no threads\"\n+\t@echo \"\"\n+\t$(CC) -Wmissing-prototypes -Wall -c -Dunix -DHAVE_ANSIC_C -DNO_THREADS -DHAVE_PREAD \\\n+\t\t-DSHARED_MEM -Dlinux $(CFLAGS) iozone.c \\\n+\t\t-DNAME='\"linux\"' -o iozone_linux-noth.o\n+\t$(CC) -Wmissing-prototypes -Wall -c -Dunix -DHAVE_ANSIC_C -DNO_THREADS \\\n \t\t-DSHARED_MEM -Dlinux $(CFLAGS) libbif.c -o libbif.o\n-\t$(CC) -Wmissing-prototypes -Wall -c -O3 -Dunix -Dlinux -DHAVE_ANSIC_C -DASYNC_IO \\\n-\t\t-D_LARGEFILE64_SOURCE $(CFLAGS) libasync.c  -o libasync.o \n \n fileop_AIX.o:\tfileop.c\n \t@echo \"\"\n@@ -951,7 +989,7 @@ fileop_linux.o:\tfileop.c\n \t@echo \"\"\n \t@echo \"Building fileop for Linux\"\n \t@echo \"\"\n-\t$(CC) -Wall -c -O3 $(CFLAGS) fileop.c -o fileop_linux.o\n+\t$(CC) -Wall -c $(CFLAGS) fileop.c -o fileop_linux.o\n \n fileop_openbsd.o:\tfileop.c\n \t@echo \"\"\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/iozone/Config.in",
    "content": "config BR2_PACKAGE_IOZONE\n\tbool \"iozone\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\thelp\n\t  IOzone is a filesystem benchmark tool.\n\t  The benchmark generates and measures a variety of file\n\t  operations\n\n\t  http://www.iozone.org/\n\ncomment \"iozone needs a toolchain w/ NPTL\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/iozone/iozone.hash",
    "content": "# Locally calculated\nsha256  93c9142d61e6a71ea43b0a266bad7f49f07ce5f5d31b36f8edf4dd386795c483  iozone3_492.tgz\n"
  },
  {
    "path": "package/iozone/iozone.mk",
    "content": "################################################################################\n#\n# iozone\n#\n################################################################################\n\nIOZONE_VERSION = 3.492\nIOZONE_SOURCE = iozone$(subst .,_,$(IOZONE_VERSION)).tgz\nIOZONE_SITE = http://www.iozone.org/src/current\nIOZONE_LICENSE = IOzone license (NO DERIVED WORKS ALLOWED)\n# IOzone license details can be found at:\n# http://www.iozone.org/docs/Iozone_License.txt\n\n# AIO support not available on uClibc, use the linux (non-aio) target.\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\nIOZONE_TARGET = linux-noaio\nelse\nIOZONE_TARGET = linux\nendif\n\ndefine IOZONE_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) $(IOZONE_TARGET) -C $(@D)/src/current\nendef\n\ndefine IOZONE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/src/current/iozone \\\n\t\t$(TARGET_DIR)/usr/bin/iozone\n\t$(INSTALL) -D -m 755 $(@D)/src/current/fileop \\\n\t\t$(TARGET_DIR)/usr/bin/fileop\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ipcalc/Config.in",
    "content": "config BR2_PACKAGE_IPCALC\n\tbool \"ipcalc\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  A modern IPv4/IPv6 ipcalc tool, assisting in network\n\t  calculations in command line and as a tool for scripts.\n\n\t  https://gitlab.com/ipcalc/ipcalc\n"
  },
  {
    "path": "package/ipcalc/ipcalc.hash",
    "content": "# Locally calculated\nsha256  dac080c0773cc14c1d6f818899351d2286cace85751dd9dc704944e54c2c3565  ipcalc-1.0.1.tar.bz2\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/ipcalc/ipcalc.mk",
    "content": "################################################################################\n#\n# ipcalc\n#\n################################################################################\n\nIPCALC_VERSION = 1.0.1\nIPCALC_SITE = $(call gitlab,ipcalc,ipcalc,$(IPCALC_VERSION))\nIPCALC_SOURCE = ipcalc-$(IPCALC_VERSION).tar.bz2\nIPCALC_LICENSE = GPL-2.0+\nIPCALC_LICENSE_FILES = COPYING\n\nifeq ($(BR2_STATIC_LIBS),y)\nIPCALC_CONF_OPTS += -Duse_runtime_linking=disabled\nelse\nIPCALC_CONF_OPTS += -Duse_runtime_linking=enabled\nendif\n\nifeq ($(BR2_PACKAGE_GEOIP),y)\nIPCALC_CONF_OPTS += -Duse_geoip=enabled\nIPCALC_DEPENDENCIES += host-pkgconf geoip\nelse\nIPCALC_CONF_OPTS += -Duse_geoip=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBMAXMINDDB),y)\nIPCALC_CONF_OPTS += -Duse_maxminddb=enabled\nIPCALC_DEPENDENCIES += host-pkgconf libmaxminddb\nelse\nIPCALC_CONF_OPTS += -Duse_maxminddb=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/iperf/0001-Fix-build-with-musl-libc.patch",
    "content": "From 6766ab322a9eb8c73f8276be9cdea356eb124de0 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Thu, 11 Nov 2021 07:58:10 +0200\nSubject: [PATCH] Fix build with musl libc\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nmusl libc defines its own struct ethhdr that conflicts with the kernel\ndefine one. The kernel headers provide a way to suppress its struct\nethhdr. For that to work the libc headers must precede the kernel. Move\nthe kernel linux/if_tun.h include below libc net/ethernet.h. That fixes\nthe following build failure:\n\nIn file included from .../arm-buildroot-linux-musleabihf/sysroot/usr/include/net/ethernet.h:10,\n                 from ../include/headers.h:117,\n                 from Thread.c:72:\n.../arm-buildroot-linux-musleabihf/sysroot/usr/include/netinet/if_ether.h:116:8: error: redefinition of ‘struct ethhdr’\n  116 | struct ethhdr {\n      |        ^~~~~~\nIn file included from .../arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/if_tun.h:20,\n                 from ../include/headers.h:110,\n                 from Thread.c:72:\n.../arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/if_ether.h:148:8: note: originally defined here\n  148 | struct ethhdr {\n      |        ^~~~~~\n\nFixes bug #157.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: sent to Robert McMahon <rjmcmahon@rjmcmahon.com>\n\n include/headers.h | 10 +++++-----\n 1 file changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/include/headers.h b/include/headers.h\nindex 00e0ea0dba42..887490475381 100644\n--- a/include/headers.h\n+++ b/include/headers.h\n@@ -106,11 +106,6 @@ typedef bool _Bool;\n #include <net/if.h>\n #endif\n \n-#if ((HAVE_TUNTAP_TAP) || (HAVE_TUNTAP_TUN))\n-#include <linux/if_tun.h>\n-#include <sys/ioctl.h>\n-#endif\n-\n \n // AF_PACKET HEADERS\n #if defined(HAVE_LINUX_FILTER_H) && defined(HAVE_AF_PACKET)\n@@ -146,6 +141,11 @@ typedef bool _Bool;\n #define  IPV6HDRLEN 40\n #endif // HAVE_AF_PACKET\n \n+#if ((HAVE_TUNTAP_TAP) || (HAVE_TUNTAP_TUN))\n+#include <linux/if_tun.h>\n+#include <sys/ioctl.h>\n+#endif\n+\n #ifdef WIN32\n \n /* Windows config file */\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/iperf/Config.in",
    "content": "config BR2_PACKAGE_IPERF\n\tbool \"iperf\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\t# uses fork()\n\tdepends on BR2_USE_MMU\n\thelp\n\t  Internet Protocol bandwidth measuring tool for measuring\n\t  TCP/UDP performance.\n\n\t  https://sourceforge.net/projects/iperf2/\n\ncomment \"iperf needs a toolchain w/ C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/iperf/iperf.hash",
    "content": "# From https://sourceforge.net/projects/iperf2/files/\nsha1  f1b7835eb74094b1a1849faeafe35b7c362f4ab5  iperf-2.1.4.tar.gz\n\n# Locally computed:\nsha256  062b392e87b8e227aca74fef0a99b04fe0382d4518957041b508a56885b4d4f9  iperf-2.1.4.tar.gz\nsha256  5f9f5c4feca3347c3b3c0ada8b16b4e6b698aac4e6f016a24adf61a5915336d1  COPYING\n"
  },
  {
    "path": "package/iperf/iperf.mk",
    "content": "################################################################################\n#\n# iperf\n#\n################################################################################\n\nIPERF_VERSION = 2.1.4\nIPERF_SITE = http://downloads.sourceforge.net/project/iperf2\nIPERF_LICENSE = MIT-like\nIPERF_LICENSE_FILES = COPYING\nIPERF_CPE_ID_VENDOR = iperf2_project\nIPERF_CPE_ID_PRODUCT = iperf2\n\nIPERF_CONF_OPTS = \\\n\t--disable-web100\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/iperf3/Config.in",
    "content": "config BR2_PACKAGE_IPERF3\n\tbool \"iperf3\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  iperf is a tool for active measurements of the maximum\n\t  achievable bandwidth on IP networks.\n\t  It supports tuning of various parameters related to timing,\n\t  protocols, and buffers. For each test it reports the\n\t  bandwidth, loss, and other parameters.\n\t  It's a redesign of the NLANR/DAST iperf(2) and is not backward\n\t  compatible.\n\n\t  http://software.es.net/iperf/index.html\n\ncomment \"iperf3 needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/iperf3/iperf3.hash",
    "content": "# From https://downloads.es.net/pub/iperf/iperf-3.10.1.tar.gz.sha256\nsha256  03bc9760cc54a245191d46bfc8edaf8a4750f0e87abca6764486972044d6715a  iperf-3.10.1.tar.gz\n# Locally computed\nsha256  0e1cb1921904626f0d3e86cacc0e28333140f0f9957267cff0b9d185645743ed  LICENSE\n"
  },
  {
    "path": "package/iperf3/iperf3.mk",
    "content": "################################################################################\n#\n# iperf3\n#\n################################################################################\n\nIPERF3_VERSION = 3.10.1\nIPERF3_SITE = https://downloads.es.net/pub/iperf\nIPERF3_SOURCE = iperf-$(IPERF3_VERSION).tar.gz\nIPERF3_LICENSE = BSD-3-Clause, BSD-2-Clause, MIT\nIPERF3_LICENSE_FILES = LICENSE\nIPERF3_CPE_ID_VENDOR = es\n\nIPERF3_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -D_GNU_SOURCE\"\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\n# We intentionally don't pass --with-openssl, otherwise pkg-config is\n# not used, and indirect libraries are not picked up when static\n# linking.\nIPERF3_DEPENDENCIES += host-pkgconf openssl\nelse\nIPERF3_CONF_OPTS += --without-openssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ipmitool/0001-Fix-missing-stddef.h-include.patch",
    "content": "From 04d489936191e685123978a1ca370f9cc30e6a06 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Mon, 18 Apr 2016 21:17:26 +0200\nSubject: [PATCH] Fix missing stddef.h include\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nNeeded for wchar_t. Fixes build error:\n\nimbapi.h:140:9: error: unknown type name 'wchar_t'\n typedef wchar_t      WCHAR;\n\nUpstream status: Pending\nhttps://sourceforge.net/p/ipmitool/mailman/message/35022779/\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n src/plugins/imb/imbapi.h | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/src/plugins/imb/imbapi.h b/src/plugins/imb/imbapi.h\nindex 6ba4121..6b39b47 100644\n--- a/src/plugins/imb/imbapi.h\n+++ b/src/plugins/imb/imbapi.h\n@@ -33,6 +33,9 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS \n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n  *----------------------------------------------------------------------*/\n+\n+#include <stddef.h>\n+\n #ifndef\t_WINDEFS_H\n #define\t_WINDEFS_H\n #ifndef FALSE\n-- \n2.10.2\n\n"
  },
  {
    "path": "package/ipmitool/0002-ID-461-OpenSSL-1.1-compatibility-error-storage-size-.patch",
    "content": "From 1ad09f56d461e78ad83c77b654fb65467a68388b Mon Sep 17 00:00:00 2001\nFrom: Dennis Schridde <dennis.schridde@uni-heidelberg.de>\nDate: Wed, 30 Nov 2016 17:33:00 +0100\nSubject: [PATCH] ID:461 - OpenSSL 1.1 compatibility - \"error: storage size\n of 'ctx' isn't known\"\n\nIn OpenSSL 1.1 EVP_CIPHER_CTX became opaque, cf. `man 3ssl EVP_EncryptInit`\n\nFixes: ID:461\n\nUpstream: https://github.com/ipmitool/ipmitool/commit/b57487e360916ab3eaa50aa6d021c73b6337a4a0\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n src/plugins/lanplus/lanplus_crypt_impl.c | 28 ++++++++++++++--------------\n 1 file changed, 14 insertions(+), 14 deletions(-)\n\ndiff --git a/src/plugins/lanplus/lanplus_crypt_impl.c b/src/plugins/lanplus/lanplus_crypt_impl.c\nindex d5fac37..3c0df23 100644\n--- a/src/plugins/lanplus/lanplus_crypt_impl.c\n+++ b/src/plugins/lanplus/lanplus_crypt_impl.c\n@@ -164,10 +164,10 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,\n \t\t\t\t\t\t\tuint8_t       * output,\n \t\t\t\t\t\t\tuint32_t        * bytes_written)\n {\n-\tEVP_CIPHER_CTX ctx;\n-\tEVP_CIPHER_CTX_init(&ctx);\n-\tEVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key, iv);\n-\tEVP_CIPHER_CTX_set_padding(&ctx, 0);\n+\tEVP_CIPHER_CTX* ctx;\n+\tEVP_CIPHER_CTX_init(ctx);\n+\tEVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);\n+\tEVP_CIPHER_CTX_set_padding(ctx, 0);\n \t\n \n \t*bytes_written = 0;\n@@ -191,7 +191,7 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,\n \tassert((input_length % IPMI_CRYPT_AES_CBC_128_BLOCK_SIZE) == 0);\n \n \n-\tif(!EVP_EncryptUpdate(&ctx, output, (int *)bytes_written, input, input_length))\n+\tif(!EVP_EncryptUpdate(ctx, output, (int *)bytes_written, input, input_length))\n \t{\n \t\t/* Error */\n \t\t*bytes_written = 0;\n@@ -201,7 +201,7 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,\n \t{\n \t\tuint32_t tmplen;\n \n-\t\tif(!EVP_EncryptFinal_ex(&ctx, output + *bytes_written, (int *)&tmplen))\n+\t\tif(!EVP_EncryptFinal_ex(ctx, output + *bytes_written, (int *)&tmplen))\n \t\t{\n \t\t\t*bytes_written = 0;\n \t\t\treturn; /* Error */\n@@ -210,7 +210,7 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,\n \t\t{\n \t\t\t/* Success */\n \t\t\t*bytes_written += tmplen;\n-\t\t\tEVP_CIPHER_CTX_cleanup(&ctx);\n+\t\t\tEVP_CIPHER_CTX_cleanup(ctx);\n \t\t}\n \t}\n }\n@@ -239,10 +239,10 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,\n \t\t\t\t\t\t\tuint8_t       * output,\n \t\t\t\t\t\t\tuint32_t        * bytes_written)\n {\n-\tEVP_CIPHER_CTX ctx;\n-\tEVP_CIPHER_CTX_init(&ctx);\n-\tEVP_DecryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key, iv);\n-\tEVP_CIPHER_CTX_set_padding(&ctx, 0);\n+\tEVP_CIPHER_CTX* ctx;\n+\tEVP_CIPHER_CTX_init(ctx);\n+\tEVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);\n+\tEVP_CIPHER_CTX_set_padding(ctx, 0);\n \n \n \tif (verbose >= 5)\n@@ -266,7 +266,7 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,\n \tassert((input_length % IPMI_CRYPT_AES_CBC_128_BLOCK_SIZE) == 0);\n \n \n-\tif (!EVP_DecryptUpdate(&ctx, output, (int *)bytes_written, input, input_length))\n+\tif (!EVP_DecryptUpdate(ctx, output, (int *)bytes_written, input, input_length))\n \t{\n \t\t/* Error */\n \t\tlprintf(LOG_DEBUG, \"ERROR: decrypt update failed\");\n@@ -277,7 +277,7 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,\n \t{\n \t\tuint32_t tmplen;\n \n-\t\tif (!EVP_DecryptFinal_ex(&ctx, output + *bytes_written, (int *)&tmplen))\n+\t\tif (!EVP_DecryptFinal_ex(ctx, output + *bytes_written, (int *)&tmplen))\n \t\t{\n \t\t\tchar buffer[1000];\n \t\t\tERR_error_string(ERR_get_error(), buffer);\n@@ -290,7 +290,7 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,\n \t\t{\n \t\t\t/* Success */\n \t\t\t*bytes_written += tmplen;\n-\t\t\tEVP_CIPHER_CTX_cleanup(&ctx);\n+\t\t\tEVP_CIPHER_CTX_cleanup(ctx);\n \t\t}\n \t}\n \n-- \n1.9.1\n\n"
  },
  {
    "path": "package/ipmitool/0003-ID-461-Make-compiler-happier-about-changes-related-t.patch",
    "content": "From ccc85e4fd67423e770901ec59975e84b07eed883 Mon Sep 17 00:00:00 2001\nFrom: Zdenek Styblik <stybla@turnovfree.net>\nDate: Sun, 15 Jan 2017 15:11:25 +0100\nSubject: [PATCH] ID:461 - Make compiler happier about changes related to\n OpenSSL 1.1\n\nComplaint was that ctx isn't initialized.\n\nUpstream: https://github.com/ipmitool/ipmitool/commit/77fe5635037ebaf411cae46cf5045ca819b5c145\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n src/plugins/lanplus/lanplus_crypt_impl.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/src/plugins/lanplus/lanplus_crypt_impl.c b/src/plugins/lanplus/lanplus_crypt_impl.c\nindex 3c0df23..d12d0e3 100644\n--- a/src/plugins/lanplus/lanplus_crypt_impl.c\n+++ b/src/plugins/lanplus/lanplus_crypt_impl.c\n@@ -164,7 +164,7 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,\n \t\t\t\t\t\t\tuint8_t       * output,\n \t\t\t\t\t\t\tuint32_t        * bytes_written)\n {\n-\tEVP_CIPHER_CTX* ctx;\n+\tEVP_CIPHER_CTX *ctx = NULL;\n \tEVP_CIPHER_CTX_init(ctx);\n \tEVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);\n \tEVP_CIPHER_CTX_set_padding(ctx, 0);\n@@ -239,7 +239,7 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,\n \t\t\t\t\t\t\tuint8_t       * output,\n \t\t\t\t\t\t\tuint32_t        * bytes_written)\n {\n-\tEVP_CIPHER_CTX* ctx;\n+\tEVP_CIPHER_CTX *ctx = NULL;\n \tEVP_CIPHER_CTX_init(ctx);\n \tEVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);\n \tEVP_CIPHER_CTX_set_padding(ctx, 0);\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/ipmitool/0004-ID-480-ipmitool-coredumps-in-EVP_CIPHER_CTX_init.patch",
    "content": "From 72df3eadb27161a292f35b1d97178f70f41e50f6 Mon Sep 17 00:00:00 2001\nFrom: Zdenek Styblik <stybla@turnovfree.net>\nDate: Sun, 12 Mar 2017 14:00:35 +0100\nSubject: [PATCH] ID:480 - ipmitool coredumps in EVP_CIPHER_CTX_init\n\nIPMI tool coredumps due to changes introduced in ID:461. This shouldn't be\nsurprise as a NULL pointer is passed to init. Commit addresses this issue by\ncalling EVP_CIPHER_CTX_new() instead of EVP_CIPHER_CTX_init(), which is\ndeprecated, and by checking return value of call to former function.\n\nUpstream: https://github.com/ipmitool/ipmitool/commit/f004b4b7197fc83e7d47ec8cbcaefffa9a922717\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n src/plugins/lanplus/lanplus_crypt_impl.c | 14 ++++++++++----\n 1 file changed, 10 insertions(+), 4 deletions(-)\n\ndiff --git a/src/plugins/lanplus/lanplus_crypt_impl.c b/src/plugins/lanplus/lanplus_crypt_impl.c\nindex d12d0e3..0e330c1 100644\n--- a/src/plugins/lanplus/lanplus_crypt_impl.c\n+++ b/src/plugins/lanplus/lanplus_crypt_impl.c\n@@ -165,10 +165,13 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,\n \t\t\t\t\t\t\tuint32_t        * bytes_written)\n {\n \tEVP_CIPHER_CTX *ctx = NULL;\n-\tEVP_CIPHER_CTX_init(ctx);\n+\tctx = EVP_CIPHER_CTX_new();\n+\tif (ctx == NULL) {\n+\t\t*bytes_written = 0;\n+\t\treturn;\n+\t}\n \tEVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);\n \tEVP_CIPHER_CTX_set_padding(ctx, 0);\n-\t\n \n \t*bytes_written = 0;\n \n@@ -240,11 +243,14 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,\n \t\t\t\t\t\t\tuint32_t        * bytes_written)\n {\n \tEVP_CIPHER_CTX *ctx = NULL;\n-\tEVP_CIPHER_CTX_init(ctx);\n+\tctx = EVP_CIPHER_CTX_new();\n+\tif (ctx == NULL) {\n+\t\t*bytes_written = 0;\n+\t\treturn;\n+\t}\n \tEVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);\n \tEVP_CIPHER_CTX_set_padding(ctx, 0);\n \n-\n \tif (verbose >= 5)\n \t{\n \t\tprintbuf(iv,  16, \"decrypting with this IV\");\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/ipmitool/0005-ID-480-Call-EVP_CIPHER_CTX_free-instead-of-EVP_CIPHE.patch",
    "content": "From d9d6e0bff831da03f4448f0cdb82fc3d143662c8 Mon Sep 17 00:00:00 2001\nFrom: Holger Liebig <holger.liebig@ts.fujitsu.com>\nDate: Tue, 4 Apr 2017 20:43:05 +0200\nSubject: [PATCH] ID:480 - Call EVP_CIPHER_CTX_free() instead of\n EVP_CIPHER_CTX_cleanup()\n\nCall EVP_CIPHER_CTX_free() instead of EVP_CIPHER_CTX_cleanup() to fix memory\nleak.\n\nUpstream: https://github.com/ipmitool/ipmitool/commit/1664902525a1c3771b4d8b3ccab7ea1ba6b2bdd1\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n src/plugins/lanplus/lanplus_crypt_impl.c | 44 +++++++++++++++++---------------\n 1 file changed, 23 insertions(+), 21 deletions(-)\n\ndiff --git a/src/plugins/lanplus/lanplus_crypt_impl.c b/src/plugins/lanplus/lanplus_crypt_impl.c\nindex 0e330c1..9652a5e 100644\n--- a/src/plugins/lanplus/lanplus_crypt_impl.c\n+++ b/src/plugins/lanplus/lanplus_crypt_impl.c\n@@ -165,13 +165,6 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,\n \t\t\t\t\t\t\tuint32_t        * bytes_written)\n {\n \tEVP_CIPHER_CTX *ctx = NULL;\n-\tctx = EVP_CIPHER_CTX_new();\n-\tif (ctx == NULL) {\n-\t\t*bytes_written = 0;\n-\t\treturn;\n-\t}\n-\tEVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);\n-\tEVP_CIPHER_CTX_set_padding(ctx, 0);\n \n \t*bytes_written = 0;\n \n@@ -185,6 +178,14 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,\n \t\tprintbuf(input, input_length, \"encrypting this data\");\n \t}\n \n+\tctx = EVP_CIPHER_CTX_new();\n+\tif (ctx == NULL) {\n+\t\tlprintf(LOG_DEBUG, \"ERROR: EVP_CIPHER_CTX_new() failed\");\n+\t\treturn;\n+\t}\n+\tEVP_CIPHER_CTX_init(ctx);\n+\tEVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);\n+\tEVP_CIPHER_CTX_set_padding(ctx, 0);\n \n \t/*\n \t * The default implementation adds a whole block of padding if the input\n@@ -198,7 +199,6 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,\n \t{\n \t\t/* Error */\n \t\t*bytes_written = 0;\n-\t\treturn;\n \t}\n \telse\n \t{\n@@ -206,16 +206,17 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,\n \n \t\tif(!EVP_EncryptFinal_ex(ctx, output + *bytes_written, (int *)&tmplen))\n \t\t{\n+\t\t\t/* Error */\n \t\t\t*bytes_written = 0;\n-\t\t\treturn; /* Error */\n \t\t}\n \t\telse\n \t\t{\n \t\t\t/* Success */\n \t\t\t*bytes_written += tmplen;\n-\t\t\tEVP_CIPHER_CTX_cleanup(ctx);\n \t\t}\n \t}\n+\t/* performs cleanup and free */\n+\tEVP_CIPHER_CTX_free(ctx);\n }\n \n \n@@ -243,13 +244,6 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,\n \t\t\t\t\t\t\tuint32_t        * bytes_written)\n {\n \tEVP_CIPHER_CTX *ctx = NULL;\n-\tctx = EVP_CIPHER_CTX_new();\n-\tif (ctx == NULL) {\n-\t\t*bytes_written = 0;\n-\t\treturn;\n-\t}\n-\tEVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);\n-\tEVP_CIPHER_CTX_set_padding(ctx, 0);\n \n \tif (verbose >= 5)\n \t{\n@@ -258,12 +252,20 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,\n \t\tprintbuf(input, input_length, \"decrypting this data\");\n \t}\n \n-\n \t*bytes_written = 0;\n \n \tif (input_length == 0)\n \t\treturn;\n \n+\tctx = EVP_CIPHER_CTX_new();\n+\tif (ctx == NULL) {\n+\t\tlprintf(LOG_DEBUG, \"ERROR: EVP_CIPHER_CTX_new() failed\");\n+\t\treturn;\n+\t}\n+\tEVP_CIPHER_CTX_init(ctx);\n+\tEVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);\n+\tEVP_CIPHER_CTX_set_padding(ctx, 0);\n+\n \t/*\n \t * The default implementation adds a whole block of padding if the input\n \t * data is perfectly aligned.  We would like to keep that from happening.\n@@ -277,7 +279,6 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,\n \t\t/* Error */\n \t\tlprintf(LOG_DEBUG, \"ERROR: decrypt update failed\");\n \t\t*bytes_written = 0;\n-\t\treturn;\n \t}\n \telse\n \t{\n@@ -285,20 +286,21 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,\n \n \t\tif (!EVP_DecryptFinal_ex(ctx, output + *bytes_written, (int *)&tmplen))\n \t\t{\n+\t\t\t/* Error */\n \t\t\tchar buffer[1000];\n \t\t\tERR_error_string(ERR_get_error(), buffer);\n \t\t\tlprintf(LOG_DEBUG, \"the ERR error %s\", buffer);\n \t\t\tlprintf(LOG_DEBUG, \"ERROR: decrypt final failed\");\n \t\t\t*bytes_written = 0;\n-\t\t\treturn; /* Error */\n \t\t}\n \t\telse\n \t\t{\n \t\t\t/* Success */\n \t\t\t*bytes_written += tmplen;\n-\t\t\tEVP_CIPHER_CTX_cleanup(ctx);\n \t\t}\n \t}\n+\t/* performs cleanup and free */\n+\tEVP_CIPHER_CTX_free(ctx);\n \n \tif (verbose >= 5)\n \t{\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/ipmitool/0006-lanplus-Fix-compile-with-deprecated-APIs-disabled.patch",
    "content": "From fc2136969adfb926eed610b8ed0a74b2030b48ed Mon Sep 17 00:00:00 2001\nFrom: Rosen Penev <rosenp@gmail.com>\nDate: Tue, 21 Aug 2018 19:29:07 -0700\nSubject: [PATCH] lanplus: Fix compile with deprecated APIs disabled.\n\nFrom the man page:\n\nEVP_CIPHER_CTX was made opaque in OpenSSL 1.1.0. As a result,\nEVP_CIPHER_CTX_reset() appeared and EVP_CIPHER_CTX_cleanup() disappeared.\nEVP_CIPHER_CTX_init() remains as an alias for EVP_CIPHER_CTX_reset().\n\nUpstream: https://github.com/ipmitool/ipmitool/commit/a8862d7508fb138b1c286eea958700cca63c9476\n\nSigned-off-by: Rosen Penev <rosenp@gmail.com>\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n src/plugins/lanplus/lanplus_crypt_impl.c | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/src/plugins/lanplus/lanplus_crypt_impl.c b/src/plugins/lanplus/lanplus_crypt_impl.c\nindex 9652a5e..e94401e 100644\n--- a/src/plugins/lanplus/lanplus_crypt_impl.c\n+++ b/src/plugins/lanplus/lanplus_crypt_impl.c\n@@ -183,7 +183,11 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv,\n \t\tlprintf(LOG_DEBUG, \"ERROR: EVP_CIPHER_CTX_new() failed\");\n \t\treturn;\n \t}\n+#if OPENSSL_VERSION_NUMBER < 0x10100000L\n \tEVP_CIPHER_CTX_init(ctx);\n+#else\n+\tEVP_CIPHER_CTX_reset(ctx);\n+#endif\n \tEVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);\n \tEVP_CIPHER_CTX_set_padding(ctx, 0);\n \n@@ -262,7 +266,11 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv,\n \t\tlprintf(LOG_DEBUG, \"ERROR: EVP_CIPHER_CTX_new() failed\");\n \t\treturn;\n \t}\n+#if OPENSSL_VERSION_NUMBER < 0x10100000L\n \tEVP_CIPHER_CTX_init(ctx);\n+#else\n+\tEVP_CIPHER_CTX_reset(ctx);\n+#endif\n \tEVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);\n \tEVP_CIPHER_CTX_set_padding(ctx, 0);\n \n-- \n1.9.1\n\n"
  },
  {
    "path": "package/ipmitool/0007-hpmfwupg-move-variable-definition-to-c-file.patch",
    "content": "From c3939dac2c060651361fc71516806f9ab8c38901 Mon Sep 17 00:00:00 2001\nFrom: Vaclav Dolezal <vdolezal@redhat.com>\nDate: Thu, 23 Jan 2020 11:26:32 +0100\nSubject: [PATCH] hpmfwupg: move variable definition to .c file\n\nSigned-off-by: Vaclav Dolezal <vdolezal@redhat.com>\n[Retrieved from:\nhttps://github.com/ipmitool/ipmitool/commit/c3939dac2c060651361fc71516806f9ab8c38901]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/ipmitool/ipmi_hpmfwupg.h | 2 +-\n lib/ipmi_hpmfwupg.c              | 2 ++\n 2 files changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/include/ipmitool/ipmi_hpmfwupg.h b/include/ipmitool/ipmi_hpmfwupg.h\nindex de65292b..07f597be 100644\n--- a/include/ipmitool/ipmi_hpmfwupg.h\n+++ b/include/ipmitool/ipmi_hpmfwupg.h\n@@ -800,7 +800,7 @@ typedef struct _VERSIONINFO {\n \tchar descString[HPMFWUPG_DESC_STRING_LENGTH + 1];\n }VERSIONINFO, *PVERSIONINFO;\n \n-VERSIONINFO gVersionInfo[HPMFWUPG_COMPONENT_ID_MAX];\n+extern VERSIONINFO gVersionInfo[HPMFWUPG_COMPONENT_ID_MAX];\n \n #define TARGET_VER (0x01)\n #define ROLLBACK_VER (0x02)\ndiff --git a/lib/ipmi_hpmfwupg.c b/lib/ipmi_hpmfwupg.c\nindex 4aa8cecd..d63d2c15 100644\n--- a/lib/ipmi_hpmfwupg.c\n+++ b/lib/ipmi_hpmfwupg.c\n@@ -50,6 +50,8 @@\n \n extern int verbose;\n \n+VERSIONINFO gVersionInfo[HPMFWUPG_COMPONENT_ID_MAX];\n+\n int HpmfwupgUpgrade(struct ipmi_intf *intf, char *imageFilename,\n \t\tint activate, int, int);\n int HpmfwupgValidateImageIntegrity(struct HpmfwupgUpgradeCtx *pFwupgCtx);\n"
  },
  {
    "path": "package/ipmitool/0008-fru-Fix-buffer-overflow-vulnerabilities.patch",
    "content": "From d615cb6c39d401a569941be2a615176191afa7ac Mon Sep 17 00:00:00 2001\nFrom: Chrostoper Ertl <chertl@microsoft.com>\nDate: Thu, 28 Nov 2019 16:33:59 +0000\nSubject: [PATCH] fru: Fix buffer overflow vulnerabilities\n\nPartial fix for CVE-2020-5208, see\nhttps://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp\n\nThe `read_fru_area_section` function only performs size validation of\nrequested read size, and falsely assumes that the IPMI message will not\nrespond with more than the requested amount of data; it uses the\nunvalidated response size to copy into `frubuf`. If the response is\nlarger than the request, this can result in overflowing the buffer.\n\nThe same issue affects the `read_fru_area` function.\n\n[Retrieve from\nhttps://github.com/ipmitool/ipmitool/commit/e824c23316ae50beb7f7488f2055ac65e8b341f2]\nSigned-off-by: Heiko Thiery <heiko.thiery@gmail.com>\n---\n lib/ipmi_fru.c | 33 +++++++++++++++++++++++++++++++--\n 1 file changed, 31 insertions(+), 2 deletions(-)\n\ndiff --git a/lib/ipmi_fru.c b/lib/ipmi_fru.c\nindex cf00eff..af99aa9 100644\n--- a/lib/ipmi_fru.c\n+++ b/lib/ipmi_fru.c\n@@ -615,7 +615,10 @@ int\n read_fru_area(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,\n \t\t\tuint32_t offset, uint32_t length, uint8_t *frubuf)\n {\n-\tuint32_t off = offset, tmp, finish;\n+\tuint32_t off = offset;\n+\tuint32_t tmp;\n+\tuint32_t finish;\n+\tuint32_t size_left_in_buffer;\n \tstruct ipmi_rs * rsp;\n \tstruct ipmi_rq req;\n \tuint8_t msg_data[4];\n@@ -628,10 +631,12 @@ read_fru_area(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,\n \n \tfinish = offset + length;\n \tif (finish > fru->size) {\n+\t\tmemset(frubuf + fru->size, 0, length - fru->size);\n \t\tfinish = fru->size;\n \t\tlprintf(LOG_NOTICE, \"Read FRU Area length %d too large, \"\n \t\t\t\"Adjusting to %d\",\n \t\t\toffset + length, finish - offset);\n+\t\tlength = finish - offset;\n \t}\n \n \tmemset(&req, 0, sizeof(req));\n@@ -667,6 +672,7 @@ read_fru_area(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,\n \t\t}\n \t}\n \n+\tsize_left_in_buffer = length;\n \tdo {\n \t\ttmp = fru->access ? off >> 1 : off;\n \t\tmsg_data[0] = id;\n@@ -707,9 +713,18 @@ read_fru_area(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,\n \t\t}\n \n \t\ttmp = fru->access ? rsp->data[0] << 1 : rsp->data[0];\n+\t\tif(rsp->data_len < 1\n+\t\t   || tmp > rsp->data_len - 1\n+\t\t   || tmp > size_left_in_buffer)\n+\t\t{\n+\t\t\tprintf(\" Not enough buffer size\");\n+\t\t\treturn -1;\n+\t\t}\n+\n \t\tmemcpy(frubuf, rsp->data + 1, tmp);\n \t\toff += tmp;\n \t\tfrubuf += tmp;\n+\t\tsize_left_in_buffer -= tmp;\n \t\t/* sometimes the size returned in the Info command\n \t\t* is too large.  return 0 so higher level function\n \t\t* still attempts to parse what was returned */\n@@ -742,7 +757,9 @@ read_fru_area_section(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,\n \t\t\tuint32_t offset, uint32_t length, uint8_t *frubuf)\n {\n \tstatic uint32_t fru_data_rqst_size = 20;\n-\tuint32_t off = offset, tmp, finish;\n+\tuint32_t off = offset;\n+\tuint32_t tmp, finish;\n+\tuint32_t size_left_in_buffer;\n \tstruct ipmi_rs * rsp;\n \tstruct ipmi_rq req;\n \tuint8_t msg_data[4];\n@@ -755,10 +772,12 @@ read_fru_area_section(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,\n \n \tfinish = offset + length;\n \tif (finish > fru->size) {\n+\t\tmemset(frubuf + fru->size, 0, length - fru->size);\n \t\tfinish = fru->size;\n \t\tlprintf(LOG_NOTICE, \"Read FRU Area length %d too large, \"\n \t\t\t\"Adjusting to %d\",\n \t\t\toffset + length, finish - offset);\n+\t\tlength = finish - offset;\n \t}\n \n \tmemset(&req, 0, sizeof(req));\n@@ -773,6 +792,8 @@ read_fru_area_section(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,\n \tif (fru->access && fru_data_rqst_size > 16)\n #endif\n \t\tfru_data_rqst_size = 16;\n+\n+\tsize_left_in_buffer = length;\n \tdo {\n \t\ttmp = fru->access ? off >> 1 : off;\n \t\tmsg_data[0] = id;\n@@ -804,8 +825,16 @@ read_fru_area_section(struct ipmi_intf * intf, struct fru_info *fru, uint8_t id,\n \t\t}\n \n \t\ttmp = fru->access ? rsp->data[0] << 1 : rsp->data[0];\n+\t\tif(rsp->data_len < 1\n+\t\t   || tmp > rsp->data_len - 1\n+\t\t   || tmp > size_left_in_buffer)\n+\t\t{\n+\t\t\tprintf(\" Not enough buffer size\");\n+\t\t\treturn -1;\n+\t\t}\n \t\tmemcpy((frubuf + off)-offset, rsp->data + 1, tmp);\n \t\toff += tmp;\n+\t\tsize_left_in_buffer -= tmp;\n \n \t\t/* sometimes the size returned in the Info command\n \t\t* is too large.  return 0 so higher level function\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/ipmitool/0009-fru-Fix-buffer-overflow-in-ipmi_spd_print_fru.patch",
    "content": "From 879f57c3b1ff17b1ca0dbdc8aac9c7a814e876fc Mon Sep 17 00:00:00 2001\nFrom: Chrostoper Ertl <chertl@microsoft.com>\nDate: Thu, 28 Nov 2019 16:44:18 +0000\nSubject: [PATCH] fru: Fix buffer overflow in ipmi_spd_print_fru\n\nPartial fix for CVE-2020-5208, see\nhttps://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp\n\nThe `ipmi_spd_print_fru` function has a similar issue as the one fixed\nby the previous commit in `read_fru_area_section`. An initial request is\nmade to get the `fru.size`, which is used as the size for the allocation\nof `spd_data`. Inside a loop, further requests are performed to get the\ncopy sizes which are not checked before being used as the size for a\ncopy into the buffer.\n\n[Retrieve from:\nhttps://github.com/ipmitool/ipmitool/commit/840fb1cbb4fb365cb9797300e3374d4faefcdb10]\nSigned-off-by: Heiko Thiery <heiko.thiery@gmail.com>\n---\n lib/dimm_spd.c | 9 ++++++++-\n 1 file changed, 8 insertions(+), 1 deletion(-)\n\ndiff --git a/lib/dimm_spd.c b/lib/dimm_spd.c\nindex 41e30db..68f3b4f 100644\n--- a/lib/dimm_spd.c\n+++ b/lib/dimm_spd.c\n@@ -1621,7 +1621,7 @@ ipmi_spd_print_fru(struct ipmi_intf * intf, uint8_t id)\n \tstruct ipmi_rq req;\n \tstruct fru_info fru;\n \tuint8_t *spd_data, msg_data[4];\n-\tint len, offset;\n+\tuint32_t len, offset;\n \n \tmsg_data[0] = id;\n \n@@ -1697,6 +1697,13 @@ ipmi_spd_print_fru(struct ipmi_intf * intf, uint8_t id)\n \t\t}\n \n \t\tlen = rsp->data[0];\n+\t\tif(rsp->data_len < 1\n+\t\t   || len > rsp->data_len - 1\n+\t\t   || len > fru.size - offset)\n+\t\t{\n+\t\t\tprintf(\" Not enough buffer size\");\n+\t\t\treturn -1;\n+\t\t}\n \t\tmemcpy(&spd_data[offset], rsp->data + 1, len);\n \t\toffset += len;\n \t} while (offset < fru.size);\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/ipmitool/0010-session-Fix-buffer-overflow-in-ipmi_get_session_info.patch",
    "content": "From cd785a7fe4f42ab59bcefcf01b9175f039af29b5 Mon Sep 17 00:00:00 2001\nFrom: Chrostoper Ertl <chertl@microsoft.com>\nDate: Thu, 28 Nov 2019 16:51:49 +0000\nSubject: [PATCH] session: Fix buffer overflow in ipmi_get_session_info\n\nPartial fix for CVE-2020-5208, see\nhttps://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp\n\nThe `ipmi_get_session_info` function does not properly check the\nresponse `data_len`, which is used as a copy size, allowing stack buffer\noverflow.\n\n[Retrieve from:\nhttps://github.com/ipmitool/ipmitool/commit/41d7026946fafbd4d1ec0bcaca3ea30a6e8eed22]\nSigned-off-by: Heiko Thiery <heiko.thiery@gmail.com>\n---\n lib/ipmi_session.c | 12 ++++++++----\n 1 file changed, 8 insertions(+), 4 deletions(-)\n\ndiff --git a/lib/ipmi_session.c b/lib/ipmi_session.c\nindex 141f0f4..b9af1fd 100644\n--- a/lib/ipmi_session.c\n+++ b/lib/ipmi_session.c\n@@ -309,8 +309,10 @@ ipmi_get_session_info(struct ipmi_intf         * intf,\n \t\t}\n \t\telse\n \t\t{\n-\t\t\tmemcpy(&session_info,  rsp->data, rsp->data_len);\n-\t\t\tprint_session_info(&session_info, rsp->data_len);\n+\t\t\tmemcpy(&session_info,  rsp->data,\n+\t\t\t       __min(rsp->data_len, sizeof(session_info)));\n+\t\t\tprint_session_info(&session_info,\n+\t\t\t                   __min(rsp->data_len, sizeof(session_info)));\n \t\t}\n \t\tbreak;\n \t\t\n@@ -341,8 +343,10 @@ ipmi_get_session_info(struct ipmi_intf         * intf,\n \t\t\t\tbreak;\n \t\t\t}\n \n-\t\t\tmemcpy(&session_info,  rsp->data, rsp->data_len);\n-\t\t\tprint_session_info(&session_info, rsp->data_len);\n+\t\t\tmemcpy(&session_info,  rsp->data,\n+\t\t\t       __min(rsp->data_len, sizeof(session_info)));\n+\t\t\tprint_session_info(&session_info,\n+\t\t\t                   __min(rsp->data_len, sizeof(session_info)));\n \t\t\t\n \t\t} while (i <= session_info.session_slot_count);\n \t\tbreak;\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/ipmitool/0011-channel-Fix-buffer-overflow.patch",
    "content": "From 1d479fc61feacc64adea64da9601f3dfcf6f74b3 Mon Sep 17 00:00:00 2001\nFrom: Chrostoper Ertl <chertl@microsoft.com>\nDate: Thu, 28 Nov 2019 16:56:38 +0000\nSubject: [PATCH] channel: Fix buffer overflow\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nPartial fix for CVE-2020-5208, see\nhttps://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp\n\nThe `ipmi_get_channel_cipher_suites` function does not properly check\nthe final response’s `data_len`, which can lead to stack buffer overflow\non the final copy.\n\n[Retrieve from:\nhttps://github.com/ipmitool/ipmitool/commit/9452be87181a6e83cfcc768b3ed8321763db50e4\n\nThe patch is slightly modified manually. The define\n(MAX_CIPHER_SUITE_DATA_LEN) was introduced upstream in another patch.\nReplace the define by the value 0x10.]\n\nSigned-off-by: Heiko Thiery <heiko.thiery@gmail.com>\n---\n lib/ipmi_channel.c | 5 ++++-\n 1 file changed, 4 insertions(+), 1 deletion(-)\n\ndiff --git a/lib/ipmi_channel.c b/lib/ipmi_channel.c\nindex fab2e54..59ac227 100644\n--- a/lib/ipmi_channel.c\n+++ b/lib/ipmi_channel.c\n@@ -413,7 +413,10 @@ ipmi_get_channel_cipher_suites(struct ipmi_intf *intf, const char *payload_type,\n \t\t\tlprintf(LOG_ERR, \"Unable to Get Channel Cipher Suites\");\n \t\t\treturn -1;\n \t\t}\n-\t\tif (rsp->ccode > 0) {\n+\t\tif (rsp->ccode\n+\t\t    || rsp->data_len < 1\n+\t\t    || rsp->data_len > sizeof(uint8_t) + 0x10)\n+\t\t{\n \t\t\tlprintf(LOG_ERR, \"Get Channel Cipher Suites failed: %s\",\n \t\t\t\t\tval2str(rsp->ccode, completion_code_vals));\n \t\t\treturn -1;\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/ipmitool/0012-lanp-Fix-buffer-overflows-in-get_lan_param_select.patch",
    "content": "From ceebf5998b71e11c81133680560b498977d3d3cd Mon Sep 17 00:00:00 2001\nFrom: Chrostoper Ertl <chertl@microsoft.com>\nDate: Thu, 28 Nov 2019 17:06:39 +0000\nSubject: [PATCH] lanp: Fix buffer overflows in get_lan_param_select\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nPartial fix for CVE-2020-5208, see\nhttps://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp\n\nThe `get_lan_param_select` function is missing a validation check on the\nresponse’s `data_len`, which it then returns to caller functions, where\nstack buffer overflow can occur.\n\n[Retrieve from:\nhttps://github.com/ipmitool/ipmitool/commit/d45572d71e70840e0d4c50bf48218492b79c1a10]\nSigned-off-by: Heiko Thiery <heiko.thiery@gmail.com>\n---\n lib/ipmi_lanp.c | 14 +++++++-------\n 1 file changed, 7 insertions(+), 7 deletions(-)\n\ndiff --git a/lib/ipmi_lanp.c b/lib/ipmi_lanp.c\nindex 65d881b..022c7f1 100644\n--- a/lib/ipmi_lanp.c\n+++ b/lib/ipmi_lanp.c\n@@ -1809,7 +1809,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,\n \t\tif (p == NULL) {\n \t\t\treturn (-1);\n \t\t}\n-\t\tmemcpy(data, p->data, p->data_len);\n+\t\tmemcpy(data, p->data, __min(p->data_len, sizeof(data)));\n \t\t/* set new ipaddr */\n \t\tmemcpy(data+3, temp, 4);\n \t\tprintf(\"Setting LAN Alert %d IP Address to %d.%d.%d.%d\\n\", alert,\n@@ -1824,7 +1824,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,\n \t\tif (p == NULL) {\n \t\t\treturn (-1);\n \t\t}\n-\t\tmemcpy(data, p->data, p->data_len);\n+\t\tmemcpy(data, p->data, __min(p->data_len, sizeof(data)));\n \t\t/* set new macaddr */\n \t\tmemcpy(data+7, temp, 6);\n \t\tprintf(\"Setting LAN Alert %d MAC Address to \"\n@@ -1838,7 +1838,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,\n \t\tif (p == NULL) {\n \t\t\treturn (-1);\n \t\t}\n-\t\tmemcpy(data, p->data, p->data_len);\n+\t\tmemcpy(data, p->data, __min(p->data_len, sizeof(data)));\n \n \t\tif (strncasecmp(argv[1], \"def\", 3) == 0 ||\n \t\t    strncasecmp(argv[1], \"default\", 7) == 0) {\n@@ -1864,7 +1864,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,\n \t\tif (p == NULL) {\n \t\t\treturn (-1);\n \t\t}\n-\t\tmemcpy(data, p->data, p->data_len);\n+\t\tmemcpy(data, p->data, __min(p->data_len, sizeof(data)));\n \n \t\tif (strncasecmp(argv[1], \"on\", 2) == 0 ||\n \t\t    strncasecmp(argv[1], \"yes\", 3) == 0) {\n@@ -1889,7 +1889,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,\n \t\tif (p == NULL) {\n \t\t\treturn (-1);\n \t\t}\n-\t\tmemcpy(data, p->data, p->data_len);\n+\t\tmemcpy(data, p->data, __min(p->data_len, sizeof(data)));\n \n \t\tif (strncasecmp(argv[1], \"pet\", 3) == 0) {\n \t\t\tprintf(\"Setting LAN Alert %d destination to PET Trap\\n\", alert);\n@@ -1917,7 +1917,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,\n \t\tif (p == NULL) {\n \t\t\treturn (-1);\n \t\t}\n-\t\tmemcpy(data, p->data, p->data_len);\n+\t\tmemcpy(data, p->data, __min(p->data_len, sizeof(data)));\n \n \t\tif (str2uchar(argv[1], &data[2]) != 0) {\n \t\t\tlprintf(LOG_ERR, \"Invalid time: %s\", argv[1]);\n@@ -1933,7 +1933,7 @@ ipmi_lan_alert_set(struct ipmi_intf * intf, uint8_t chan, uint8_t alert,\n \t\tif (p == NULL) {\n \t\t\treturn (-1);\n \t\t}\n-\t\tmemcpy(data, p->data, p->data_len);\n+\t\tmemcpy(data, p->data, __min(p->data_len, sizeof(data)));\n \n \t\tif (str2uchar(argv[1], &data[3]) != 0) {\n \t\t\tlprintf(LOG_ERR, \"Invalid retry: %s\", argv[1]);\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/ipmitool/0013-fru-sdr-Fix-id_string-buffer-overflows.patch",
    "content": "From bf3ded3a474d85da99eb717acdcd8ff4f89f9879 Mon Sep 17 00:00:00 2001\nFrom: Chrostoper Ertl <chertl@microsoft.com>\nDate: Thu, 28 Nov 2019 17:13:45 +0000\nSubject: [PATCH] fru, sdr: Fix id_string buffer overflows\n\nFinal part of the fixes for CVE-2020-5208, see\nhttps://github.com/ipmitool/ipmitool/security/advisories/GHSA-g659-9qxw-p7cp\n\n9 variants of stack buffer overflow when parsing `id_string` field of\nSDR records returned from `CMD_GET_SDR` command.\n\nSDR record structs have an `id_code` field, and an `id_string` `char`\narray.\n\nThe length of `id_string` is calculated as `(id_code & 0x1f) + 1`,\nwhich can be larger than expected 16 characters (if `id_code = 0xff`,\nthen length will be `(0xff & 0x1f) + 1 = 32`).\n\nIn numerous places, this can cause stack buffer overflow when copying\ninto fixed buffer of size `17` bytes from this calculated length.\n\n[Retrieve from:\nhttps://github.com/ipmitool/ipmitool/commit/7ccea283dd62a05a320c1921e3d8d71a87772637]\nSigned-off-by: Heiko Thiery <heiko.thiery@gmail.com>\n---\n lib/ipmi_fru.c |  2 +-\n lib/ipmi_sdr.c | 40 ++++++++++++++++++++++++----------------\n 2 files changed, 25 insertions(+), 17 deletions(-)\n\ndiff --git a/lib/ipmi_fru.c b/lib/ipmi_fru.c\nindex af99aa9..98bc984 100644\n--- a/lib/ipmi_fru.c\n+++ b/lib/ipmi_fru.c\n@@ -3062,7 +3062,7 @@ ipmi_fru_print(struct ipmi_intf * intf, struct sdr_record_fru_locator * fru)\n \t\treturn 0;\n \n \tmemset(desc, 0, sizeof(desc));\n-\tmemcpy(desc, fru->id_string, fru->id_code & 0x01f);\n+\tmemcpy(desc, fru->id_string, __min(fru->id_code & 0x01f, sizeof(desc)));\n \tdesc[fru->id_code & 0x01f] = 0;\n \tprintf(\"FRU Device Description : %s (ID %d)\\n\", desc, fru->device_id);\n \ndiff --git a/lib/ipmi_sdr.c b/lib/ipmi_sdr.c\nindex 2a9cbe3..62aac08 100644\n--- a/lib/ipmi_sdr.c\n+++ b/lib/ipmi_sdr.c\n@@ -2084,7 +2084,7 @@ ipmi_sdr_print_sensor_eventonly(struct ipmi_intf *intf,\n \t\treturn -1;\n \n \tmemset(desc, 0, sizeof (desc));\n-\tsnprintf(desc, (sensor->id_code & 0x1f) + 1, \"%s\", sensor->id_string);\n+\tsnprintf(desc, sizeof(desc), \"%.*s\", (sensor->id_code & 0x1f) + 1, sensor->id_string);\n \n \tif (verbose) {\n \t\tprintf(\"Sensor ID              : %s (0x%x)\\n\",\n@@ -2135,7 +2135,7 @@ ipmi_sdr_print_sensor_mc_locator(struct ipmi_intf *intf,\n \t\treturn -1;\n \n \tmemset(desc, 0, sizeof (desc));\n-\tsnprintf(desc, (mc->id_code & 0x1f) + 1, \"%s\", mc->id_string);\n+\tsnprintf(desc, sizeof(desc), \"%.*s\", (mc->id_code & 0x1f) + 1, mc->id_string);\n \n \tif (verbose == 0) {\n \t\tif (csv_output)\n@@ -2228,7 +2228,7 @@ ipmi_sdr_print_sensor_generic_locator(struct ipmi_intf *intf,\n \tchar desc[17];\n \n \tmemset(desc, 0, sizeof (desc));\n-\tsnprintf(desc, (dev->id_code & 0x1f) + 1, \"%s\", dev->id_string);\n+\tsnprintf(desc, sizeof(desc), \"%.*s\", (dev->id_code & 0x1f) + 1, dev->id_string);\n \n \tif (!verbose) {\n \t\tif (csv_output)\n@@ -2285,7 +2285,7 @@ ipmi_sdr_print_sensor_fru_locator(struct ipmi_intf *intf,\n \tchar desc[17];\n \n \tmemset(desc, 0, sizeof (desc));\n-\tsnprintf(desc, (fru->id_code & 0x1f) + 1, \"%s\", fru->id_string);\n+\tsnprintf(desc, sizeof(desc), \"%.*s\", (fru->id_code & 0x1f) + 1, fru->id_string);\n \n \tif (!verbose) {\n \t\tif (csv_output)\n@@ -2489,35 +2489,43 @@ ipmi_sdr_print_name_from_rawentry(struct ipmi_intf *intf, uint16_t id,\n \n    int rc =0;\n    char desc[17];\n+   const char *id_string;\n+   uint8_t id_code;\n    memset(desc, ' ', sizeof (desc));\n \n    switch ( type) {\n       case SDR_RECORD_TYPE_FULL_SENSOR:\n       record.full = (struct sdr_record_full_sensor *) raw;\n-      snprintf(desc, (record.full->id_code & 0x1f) +1, \"%s\",\n-               (const char *)record.full->id_string);\n+      id_code = record.full->id_code;\n+      id_string = record.full->id_string;\n       break;\n+\n       case SDR_RECORD_TYPE_COMPACT_SENSOR:\n       record.compact = (struct sdr_record_compact_sensor *) raw\t;\n-      snprintf(desc, (record.compact->id_code & 0x1f)  +1, \"%s\",\n-               (const char *)record.compact->id_string);\n+      id_code = record.compact->id_code;\n+      id_string = record.compact->id_string;\n       break;\n+\n       case SDR_RECORD_TYPE_EVENTONLY_SENSOR:\n       record.eventonly  = (struct sdr_record_eventonly_sensor *) raw ;\n-      snprintf(desc, (record.eventonly->id_code & 0x1f)  +1, \"%s\",\n-               (const char *)record.eventonly->id_string);\n-      break;            \n+      id_code = record.eventonly->id_code;\n+      id_string = record.eventonly->id_string;\n+      break;\n+\n       case SDR_RECORD_TYPE_MC_DEVICE_LOCATOR:\n       record.mcloc  = (struct sdr_record_mc_locator *) raw ;\n-      snprintf(desc, (record.mcloc->id_code & 0x1f)  +1, \"%s\",\n-               (const char *)record.mcloc->id_string);\t\t\n+      id_code = record.mcloc->id_code;\n+      id_string = record.mcloc->id_string;\n       break;\n+\n       default:\n       rc = -1;\n-      break;\n-   }   \n+   }\n+   if (!rc) {\n+       snprintf(desc, sizeof(desc), \"%.*s\", (id_code & 0x1f) + 1, id_string);\n+   }\n \n-      lprintf(LOG_INFO, \"ID: 0x%04x , NAME: %-16s\", id, desc);\n+   lprintf(LOG_INFO, \"ID: 0x%04x , NAME: %-16s\", id, desc);\n    return rc;\n }\n \n-- \n2.20.1\n\n"
  },
  {
    "path": "package/ipmitool/Config.in",
    "content": "config BR2_PACKAGE_IPMITOOL\n\tbool \"ipmitool\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  IPMItool provides a simple command-line interface to\n\t  IPMI-enabled devices.\n\n\t  http://sourceforge.net/projects/ipmitool/\n\nif BR2_PACKAGE_IPMITOOL\n\nconfig BR2_PACKAGE_IPMITOOL_LANPLUS\n\tbool \"enable lanplus interface\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Enables the IPMI v2.0 RMCP+ LAN interface typically used to\n\t  send IPMI commands to the BMC of a remote server.\n\t  Not needed if you only want to communicate with the local BMC\n\t  of your device using the OpenIPMI ipmi_si kernel module, or if\n\t  using the legacy IPMI v1.5 RMCP LAN interface.\n\nconfig BR2_PACKAGE_IPMITOOL_USB\n\tbool \"enable usb interface\"\n\thelp\n\t  Enables the IPMI USB interface typically used to send inband\n\t  IPMI commands to the BMC of a server.\n\nconfig BR2_PACKAGE_IPMITOOL_IPMIEVD\n\tbool \"ipmievd\"\n\thelp\n\t  IPMI event daemon for sending events to syslog\n\nconfig BR2_PACKAGE_IPMITOOL_IPMISHELL\n\tbool \"ipmishell\"\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  IPMI shell interface\n\nendif\n"
  },
  {
    "path": "package/ipmitool/ipmitool.hash",
    "content": "# Locally computed:\nsha256  0c1ba3b1555edefb7c32ae8cd6a3e04322056bc087918f07189eeedfc8b81e01  ipmitool-1.8.18.tar.bz2\nsha256  b7e2382a8be43b5f6cb092f2d2bda163bf1a1938be9300f821a845cbcd535f56  COPYING\n"
  },
  {
    "path": "package/ipmitool/ipmitool.mk",
    "content": "################################################################################\n#\n# ipmitool\n#\n################################################################################\n\nIPMITOOL_VERSION = 1.8.18\nIPMITOOL_SOURCE = ipmitool-$(IPMITOOL_VERSION).tar.bz2\nIPMITOOL_SITE = http://downloads.sourceforge.net/project/ipmitool/ipmitool/$(IPMITOOL_VERSION)\nIPMITOOL_LICENSE = BSD-3-Clause\nIPMITOOL_LICENSE_FILES = COPYING\nIPMITOOL_CPE_ID_VENDOR = ipmitool_project\n\n# 0008-fru-Fix-buffer-overflow-vulnerabilities.patch\n# 0009-fru-Fix-buffer-overflow-in-ipmi_spd_print_fru.patch\n# 0010-session-Fix-buffer-overflow-in-ipmi_get_session_info.patch\n# 0011-channel-Fix-buffer-overflow.patch\n# 0012-lanp-Fix-buffer-overflows-in-get_lan_param_select.patch\n# 0013-fru-sdr-Fix-id_string-buffer-overflows.patch\nIPMITOOL_IGNORE_CVES += CVE-2020-5208\n\nifeq ($(BR2_PACKAGE_IPMITOOL_LANPLUS),y)\nIPMITOOL_DEPENDENCIES += openssl\nIPMITOOL_CONF_OPTS += --enable-intf-lanplus\nelse\nIPMITOOL_CONF_OPTS += --disable-intf-lanplus\nendif\n\nifeq ($(BR2_PACKAGE_IPMITOOL_USB),y)\nIPMITOOL_CONF_OPTS += --enable-intf-usb\nelse\nIPMITOOL_CONF_OPTS += --disable-intf-usb\nendif\n\nifeq ($(BR2_PACKAGE_IPMITOOL_IPMISHELL),y)\nIPMITOOL_DEPENDENCIES += ncurses readline\nIPMITOOL_CONF_OPTS += --enable-ipmishell\nelse\nIPMITOOL_CONF_OPTS += --disable-ipmishell\nendif\n\nifeq ($(BR2_PACKAGE_IPMITOOL_IPMIEVD),)\ndefine IPMITOOL_REMOVE_IPMIEVD\n\t$(RM) -f $(TARGET_DIR)/usr/sbin/ipmievd\nendef\nIPMITOOL_POST_INSTALL_TARGET_HOOKS += IPMITOOL_REMOVE_IPMIEVD\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ipmiutil/Config.in",
    "content": "config BR2_PACKAGE_IPMIUTIL\n\tbool \"ipmiutil\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_x86_64 || BR2_i386\n\thelp\n\t  The ipmiutil package provides easy-to-use utilities to view\n\t  the SEL, perform an IPMI chassis reset, set up the IPMI LAN\n\t  and Platform Event Filter entries to allow SNMP alerts,\n\t  Serial-Over-LAN console, event daemon, and other IPMI tasks.\n\n\t  http://ipmiutil.sourceforge.net/\n\ncomment \"ipmiutil needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\tdepends on BR2_x86_64 || BR2_i386\n"
  },
  {
    "path": "package/ipmiutil/ipmiutil.hash",
    "content": "# From https://sourceforge.net/projects/ipmiutil/files/\nmd5  fab260bc834a0f3f9324a6365fc26eca  ipmiutil-3.1.7.tar.gz\nsha1  a0cd29820b15166120eb4a51e6239bfa6f9c65dd  ipmiutil-3.1.7.tar.gz\n# Locally computed\nsha256  911fd6f8b33651b98863d57e678d2fc593bc43fcd2a21f5dc7d5db8f92128a9a  ipmiutil-3.1.7.tar.gz\nsha256  7e0ec8238aa1431e95a4950032a4483fe33fec3fac348eaade5856cdc5ae3e39  COPYING\n"
  },
  {
    "path": "package/ipmiutil/ipmiutil.mk",
    "content": "################################################################################\n#\n# ipmiutil\n#\n################################################################################\n\nIPMIUTIL_VERSION = 3.1.7\nIPMIUTIL_SITE = https://sourceforge.net/projects/ipmiutil/files\nIPMIUTIL_LICENSE = BSD-3-Clause\nIPMIUTIL_LICENSE_FILES = COPYING\n\nIPMIUTIL_MAKE = $(MAKE1)\n\n# aclocal.m4 is newer than config.h.in. Touch the latter to avoid autoreconf\ndefine IPMIUTIL_TOUCH_CONFIG_H_IN\n\ttouch $(@D)/config.h.in\nendef\nIPMIUTIL_PRE_CONFIGURE_HOOKS += IPMIUTIL_TOUCH_CONFIG_H_IN\n\n# forgets to link against libcrypto dependencies breaking static link\nifeq ($(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yx)\n# tests against distro libcrypto so it might get a false positive when\n# the openssl version is old, so force it off\n# SKIP_MD2 can be used only if ALLOW_GNU is defined.\nIPMIUTIL_CONF_OPTS += CPPFLAGS=\"$(TARGET_CPPFLAGS) -DALLOW_GNU -DSKIP_MD2 -DSSL11\"\nIPMIUTIL_DEPENDENCIES += openssl\nelse\nIPMIUTIL_CONF_OPTS += --disable-lanplus\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/iproute2/Config.in",
    "content": "config BR2_PACKAGE_IPROUTE2\n\tbool \"iproute2\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # __kernel_{u,}long_t\n\thelp\n\t  Kernel routing and traffic control utilities. Provides things\n\t  like ip and tc.\n\n\t  http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2\n\ncomment \"iproute2 needs a toolchain w/ headers >= 3.4\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4\n"
  },
  {
    "path": "package/iproute2/iproute2.hash",
    "content": "# From https://kernel.org/pub/linux/utils/net/iproute2/sha256sums.asc\nsha256  210fa785a52f3763c4287fd5ae63e246f6311bfaa48c424baab6d383bb7591d4  iproute2-5.14.0.tar.xz\nsha256  e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING\n"
  },
  {
    "path": "package/iproute2/iproute2.mk",
    "content": "################################################################################\n#\n# iproute2\n#\n################################################################################\n\nIPROUTE2_VERSION = 5.14.0\nIPROUTE2_SOURCE = iproute2-$(IPROUTE2_VERSION).tar.xz\nIPROUTE2_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/net/iproute2\nIPROUTE2_DEPENDENCIES = host-bison host-flex host-pkgconf \\\n\t$(if $(BR2_PACKAGE_LIBMNL),libmnl)\nIPROUTE2_LICENSE = GPL-2.0+\nIPROUTE2_LICENSE_FILES = COPYING\nIPROUTE2_CPE_ID_VENDOR = iproute2_project\n\nifeq ($(BR2_PACKAGE_ELFUTILS),y)\nIPROUTE2_DEPENDENCIES += elfutils\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nIPROUTE2_DEPENDENCIES += libcap\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nIPROUTE2_DEPENDENCIES += libselinux\nendif\n\nifeq ($(BR2_PACKAGE_IPTABLES)x$(BR2_STATIC_LIBS),yx)\nIPROUTE2_DEPENDENCIES += iptables\nelse\ndefine IPROUTE2_DISABLE_IPTABLES\n\t# m_xt.so is built unconditionally\n\techo \"TC_CONFIG_XT:=n\" >>$(@D)/config.mk\nendef\nendif\n\nifeq ($(BR2_PACKAGE_BERKELEYDB_COMPAT185),y)\nIPROUTE2_DEPENDENCIES += berkeleydb\nendif\n\ndefine IPROUTE2_CONFIGURE_CMDS\n\tcd $(@D) && $(TARGET_CONFIGURE_OPTS) ./configure\n\t$(IPROUTE2_DISABLE_IPTABLES)\nendef\n\ndefine IPROUTE2_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) LDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -DXT_LIB_DIR=\\\\\\\"/usr/lib/xtables\\\\\\\"\" \\\n\t\tCBUILD_CFLAGS=\"$(HOST_CFLAGS)\" $(MAKE) V=1 LIBDB_LIBS=-lpthread \\\n\t\tDBM_INCLUDE=\"$(STAGING_DIR)/usr/include\" \\\n\t\tSHARED_LIBS=\"$(if $(BR2_STATIC_LIBS),n,y)\" -C $(@D)\nendef\n\ndefine IPROUTE2_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) DESTDIR=\"$(TARGET_DIR)\" $(MAKE) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/iprutils/0001-configure.ac-add-AC_USE_SYSTEM_EXTENSIONS.patch",
    "content": "From 068f37c100e105fd8edcae07762613e8e33c5282 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 18 Aug 2020 20:26:58 +0200\nSubject: [PATCH] configure.ac: add AC_USE_SYSTEM_EXTENSIONS\n\nuint and alphasort come from glibc, and with ancient versions thereof,\nthey were guarded behind different sets of feature-test macros (see\nmanpage for scandir() for example), which were not default back then.\n\nIn file included from iprdump.c:17:0:\niprlib.h:1866:2: error: unknown type name 'uint'\n  uint supported_with_min_ucode_level;\n  ^\n\niprlib.c: In function 'ipr_get_pci_slots':\niprlib.c:1999:48: error: 'alphasort' undeclared (first use in this function)\n  num_slots = scandir(rootslot, &slotdir, NULL, alphasort);\n                                                ^\n\nFix them by adding AC_USE_SYSTEM_EXTENSIONS in configure.ac\n\nFixes:\n - http://autobuild.buildroot.org/results/41fde4aa06f7c025bb05aa594716643b9010358f\n\n[Upstream status: https://github.com/bjking1/iprutils/pull/4]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[yann.morin.1998@free.fr: issue is with glibc, not gcc]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n configure.ac | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 462a8b5..7f5fa7d 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -14,6 +14,7 @@ AC_INIT([iprutils], [2.4.19.1], [iprdd-devel@lists.sourceforge.net])\n \n AM_INIT_AUTOMAKE([1.9 foreign])\n AC_CONFIG_MACRO_DIR([build-aux])\n+AC_USE_SYSTEM_EXTENSIONS\n \n # Checks for programs.\n AC_PROG_CC\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/iprutils/Config.in",
    "content": "config BR2_PACKAGE_IPRUTILS\n\tbool \"iprutils\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_LIBSYSFS\n\tselect BR2_PACKAGE_PCIUTILS\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  System utilities for IBM Power RAID devices\n\n\t  http://sourceforge.net/projects/iprdd/\n"
  },
  {
    "path": "package/iprutils/iprutils.hash",
    "content": "# From https://sourceforge.net/projects/iprdd/files/iprutils%20for%202.6%20kernels/2.4.18/\nmd5  df733f504dd4f96abf3272f679b25311  iprutils-2.4.18.1.tar.gz\nsha1  701a1a9af6890d333904a92f0b01c26b92f821fa  iprutils-2.4.18.1.tar.gz\n# Locally computed:\nsha256  1c26aee3bf95517fcb844f35ff2711a39b46cbfb50619db1d792c93eeee6f43d  iprutils-2.4.18.1.tar.gz\nsha256  59b4179e61248aff9cd2d6ee4cd1dbbd0ef48836fe2eeee19f4b16459785104a  LICENSE\n"
  },
  {
    "path": "package/iprutils/iprutils.mk",
    "content": "################################################################################\n#\n# iprutils\n#\n################################################################################\n\nIPRUTILS_VERSION_MAJOR = 2.4.18\nIPRUTILS_VERSION = $(IPRUTILS_VERSION_MAJOR).1\nIPRUTILS_SITE = https://downloads.sourceforge.net/project/iprdd/iprutils%20for%202.6%20kernels/$(IPRUTILS_VERSION_MAJOR)\nIPRUTILS_DEPENDENCIES = ncurses libsysfs pciutils zlib\nIPRUTILS_LICENSE = Common Public License Version 1.0\nIPRUTILS_LICENSE_FILES = LICENSE\n# We\"re patching configure.ac\nIPRUTILS_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ipset/Config.in",
    "content": "config BR2_PACKAGE_IPSET\n\tbool \"ipset\"\n\tselect BR2_PACKAGE_LIBMNL\n\thelp\n\t  Utility to manage IP sets in the linux kernel.\n\t  Requires a patched kernel or version >=2.6.39.\n\n\t  http://ipset.netfilter.org/\n"
  },
  {
    "path": "package/ipset/ipset.hash",
    "content": "# From https://ipset.netfilter.org/ipset-7.15.tar.bz2.sha512sum.txt\nsha512  0fc936d971c30a0925c585d506c8840e782fdaeec09bc8fd249e874fe838fa55a4dbb697f6e1423a6769abf07a1ce2195abc37cb641e8e4ad70f1b4c7130916a  ipset-7.15.tar.bz2\n# Locally calculated\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/ipset/ipset.mk",
    "content": "################################################################################\n#\n# ipset\n#\n################################################################################\n\nIPSET_VERSION = 7.15\nIPSET_SOURCE = ipset-$(IPSET_VERSION).tar.bz2\nIPSET_SITE = http://ipset.netfilter.org\nIPSET_DEPENDENCIES = libmnl host-pkgconf\nIPSET_CONF_OPTS = --with-kmod=no\nIPSET_LICENSE = GPL-2.0\nIPSET_LICENSE_FILES = COPYING\nIPSET_CPE_ID_VENDOR = netfilter\nIPSET_INSTALL_STAGING = YES\nIPSET_SELINUX_MODULES = iptables\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/iptables/Config.in",
    "content": "config BR2_PACKAGE_IPTABLES\n\tbool \"iptables\"\n\thelp\n\t  Linux kernel firewall, NAT, and packet mangling tools.\n\n\t  http://www.netfilter.org/projects/iptables/index.html\n\nif BR2_PACKAGE_IPTABLES\n\nconfig BR2_PACKAGE_IPTABLES_BPF_NFSYNPROXY\n\tbool \"bpfc and nfsynproxy\"\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  Build bpf compiler and nfsynproxy configuration tool.\n\nconfig BR2_PACKAGE_IPTABLES_NFTABLES\n\tbool \"nftables compat\"\n\t# uses dlfcn\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\tselect BR2_PACKAGE_LIBMNL\n\tselect BR2_PACKAGE_LIBNFTNL\n\thelp\n\t  Build nftables compat utilities.\n\ncomment \"nftables compat needs a toolchain w/ wchar, dynamic library, headers >= 3.12\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \\\n\t\t!BR2_USE_WCHAR || BR2_STATIC_LIBS\n\nendif\n"
  },
  {
    "path": "package/iptables/S35iptables",
    "content": "#!/bin/sh\n\nDAEMON=\"iptables\"\n\nIPTABLES_ARGS=\"\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\tiptables-restore /etc/iptables.conf\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tiptables -F\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\nsave() {\n\tprintf 'Saving %s: ' \"$DAEMON\"\n\tiptables-save -f /etc/iptables.conf\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"SKIP (read-only file system detected)\"\n\tfi\n\treturn \"$status\"\n}\n\ncase \"$1\" in\n\tstart|stop|restart|save)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|save|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/iptables/iptables.hash",
    "content": "# From https://netfilter.org/projects/iptables/downloads.html\nsha256  c109c96bb04998cd44156622d36f8e04b140701ec60531a10668cfdff5e8d8f0  iptables-1.8.7.tar.bz2\n# Locally calculated\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/iptables/iptables.mk",
    "content": "################################################################################\n#\n# iptables\n#\n################################################################################\n\nIPTABLES_VERSION = 1.8.7\nIPTABLES_SOURCE = iptables-$(IPTABLES_VERSION).tar.bz2\nIPTABLES_SITE = https://netfilter.org/projects/iptables/files\nIPTABLES_INSTALL_STAGING = YES\nIPTABLES_DEPENDENCIES = host-pkgconf \\\n\t$(if $(BR2_PACKAGE_LIBNETFILTER_CONNTRACK),libnetfilter_conntrack)\nIPTABLES_LICENSE = GPL-2.0\nIPTABLES_LICENSE_FILES = COPYING\nIPTABLES_CPE_ID_VENDOR = netfilter\nIPTABLES_SELINUX_MODULES = iptables\n\n# Building static causes ugly warnings on some plugins\nIPTABLES_CONF_OPTS = --libexecdir=/usr/lib --with-kernel=$(STAGING_DIR)/usr \\\n\t$(if $(BR2_STATIC_LIBS),,--disable-static)\n\n# For connlabel match\nifeq ($(BR2_PACKAGE_LIBNETFILTER_CONNTRACK),y)\nIPTABLES_DEPENDENCIES += libnetfilter_conntrack\nendif\n\n# For nfnl_osf\nifeq ($(BR2_PACKAGE_LIBNFNETLINK),y)\nIPTABLES_DEPENDENCIES += libnfnetlink\nendif\n\n# For iptables-compat tools\nifeq ($(BR2_PACKAGE_IPTABLES_NFTABLES),y)\nIPTABLES_CONF_OPTS += --enable-nftables\nIPTABLES_DEPENDENCIES += host-bison host-flex libmnl libnftnl\nelse\nIPTABLES_CONF_OPTS += --disable-nftables\nendif\n\n# bpf compiler support and nfsynproxy tool\nifeq ($(BR2_PACKAGE_IPTABLES_BPF_NFSYNPROXY),y)\n# libpcap is tricky for static-only builds and needs help\nifeq ($(BR2_STATIC_LIBS),y)\nIPTABLES_LIBS_FOR_STATIC_LINK += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\nIPTABLES_CONF_OPTS += LIBS=\"$(IPTABLES_LIBS_FOR_STATIC_LINK)\"\nendif\nIPTABLES_CONF_OPTS += --enable-bpf-compiler --enable-nfsynproxy\nIPTABLES_DEPENDENCIES += libpcap\nelse\nIPTABLES_CONF_OPTS += --disable-bpf-compiler --disable-nfsynproxy\nendif\n\ndefine IPTABLES_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XTABLES)\nendef\n\ndefine IPTABLES_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/iptables/S35iptables \\\n\t\t$(TARGET_DIR)/etc/init.d/S35iptables\n\ttouch $(TARGET_DIR)/etc/iptables.conf\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/iptraf-ng/Config.in",
    "content": "config BR2_PACKAGE_IPTRAF_NG\n\tbool \"iptraf-ng\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  IPTraf-ng is a console-based network monitoring program for\n\t  Linux that gathers displays information about IP traffic.\n\n\t  https://github.com/iptraf-ng/iptraf-ng\n\n\t  IPTraf-ng is a fork of original IPTraf v3.0.0\n\t  (http://iptraf.seul.org).\n\ncomment \"iptraf-ng needs a toolchain w/ kernel headers >= 3.14\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n"
  },
  {
    "path": "package/iptraf-ng/iptraf-ng.hash",
    "content": "# Locally computed\nsha256  9f5cef584065420dea1ba32c86126aede1fa9bd25b0f8362b0f9fd9754f00870  iptraf-ng-1.2.1.tar.gz\nsha256  4e49bef38f621aac4a870da4b30011c7b7abc7256b218daec1c425b08448ae1e  LICENSE\n"
  },
  {
    "path": "package/iptraf-ng/iptraf-ng.mk",
    "content": "################################################################################\n#\n# iptraf-ng\n#\n################################################################################\n\nIPTRAF_NG_VERSION = 1.2.1\nIPTRAF_NG_SITE = $(call github,iptraf-ng,iptraf-ng,v$(IPTRAF_NG_VERSION))\nIPTRAF_NG_LICENSE = GPL-2.0+\nIPTRAF_NG_LICENSE_FILES = LICENSE\nIPTRAF_NG_DEPENDENCIES = ncurses\n\ndefine IPTRAF_NG_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tNCURSES_LDFLAGS=\"-lpanel -lncurses\" \\\n\t\t-C $(@D)\nendef\n\ndefine IPTRAF_NG_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tprefix=/usr DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/iputils/0001-meson-Make-tests-optional.patch",
    "content": "From 3163c49f9f4ad473a00d8a345ee334a028376011 Mon Sep 17 00:00:00 2001\nFrom: Heiko Becker <heirecka@exherbo.org>\nDate: Fri, 23 Jul 2021 16:32:46 +0200\nSubject: [PATCH] meson: Make tests optional\n\nNow can be disabled with -DSKIP_TESTS=true.\n\nIt allows to avoid meson error during build when ip isn't installed.\n\nCloses: #359\n\nReviewed-by: Petr Vorel <petr.vorel@gmail.com>\nSigned-off-by: Heiko Becker <heirecka@exherbo.org>\n[ pvorel: Rename variable TEST => SKIP_TESTS, default false, adjust\nthe description ]\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n\n[Retrieved from:\nhttps://github.com/iputils/iputils/commit/3163c49f9f4ad473a00d8a345ee334a028376011]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n meson_options.txt     |  3 ++\n ping/meson.build      | 84 ++-----------------------------------------\n ping/test/meson.build | 81 +++++++++++++++++++++++++++++++++++++++++\n 3 files changed, 86 insertions(+), 82 deletions(-)\n create mode 100644 ping/test/meson.build\n\ndiff --git a/meson_options.txt b/meson_options.txt\nindex ac5f5d98..517667f4 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -72,3 +72,6 @@ option('INSTALL_SYSTEMD_UNITS', type: 'boolean', value: false,\n \n option('USE_GETTEXT', type: 'boolean', value: true,\n \tdescription: 'Enable I18N')\n+\n+option('SKIP_TESTS', type: 'boolean', value: false,\n+\tdescription: 'Skip tests during build')\ndiff --git a/ping/meson.build b/ping/meson.build\nindex 1e678ec8..83ea353c 100644\n--- a/ping/meson.build\n+++ b/ping/meson.build\n@@ -27,86 +27,6 @@ if (setcap_ping)\n \t)\n endif\n \n-##### TESTS #####\n-\n-# TODO: ::1 generates DEPRECATION: \":\" is not allowed in test name \"ping -c1 ::1\", it has been replaced with \"_\"\n-\n-# GitHub CI does not have working IPv6\n-# https://github.com/actions/virtual-environments/issues/668\n-ipv6_dst = []\n-ipv6_switch = []\n-r = run_command('ip', '-6', 'a')\n-if r.stdout().strip().contains('::1')\n-  message('IPv6 enabled')\n-  ipv6_dst = [ '::1' ]\n-  ipv6_switch = [ '-6' ]\n-else\n-  message('WARNING: IPv6 disabled')\n+if not get_option('SKIP_TESTS')\n+\tsubdir('test')\n endif\n-\n-run_as_root = false\n-r = run_command('id', '-u')\n-if r.stdout().strip().to_int() == 0\n-  message('running as root')\n-  run_as_root = true\n-else\n-  message('running as normal user')\n-endif\n-\n-foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst\n-  foreach switch : [ '', '-4' ] + ipv6_switch\n-\targs = [ '-c1', dst ]\n-\tshould_fail = false\n-\n-\tif switch != ''\n-\t  args = [switch] + args\n-\t  if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')\n-\t\t should_fail = true\n-\t  endif\n-\tendif\n-\n-\tname = 'ping ' + ' '.join(args)\n-\ttest(name, ping, args : args, should_fail : should_fail)\n-  endforeach\n-endforeach\n-\n-ping_tests_opt = [\n-  [ '-c1' ],\n-  [ '-c5', '-i0.1' ],\n-  [ '-c1', '-I', 'lo' ],\n-  [ '-c1', '-w1' ],\n-  [ '-c1', '-W1' ],\n-  [ '-c1', '-W1.1' ],\n-]\n-foreach dst : [ '127.0.0.1' ] + ipv6_dst\n-  foreach args : ping_tests_opt\n-\targs += [ dst ]\n-\tname = 'ping ' + ' '.join(args)\n-\ttest(name, ping, args : args)\n-  endforeach\n-endforeach\n-\n-ping_tests_opt_fail = [\n-  [ '-c1.1' ],\n-  [ '-I', 'nonexisting' ],\n-  [ '-w0.1' ],\n-  [ '-w0,1' ],\n-]\n-foreach dst : [ '127.0.0.1' ] + ipv6_dst\n-  foreach args : ping_tests_opt_fail\n-\targs += [ dst ]\n-\tname = 'ping ' + ' '.join(args)\n-\ttest(name, ping, args : args, should_fail : true)\n-  endforeach\n-endforeach\n-\n-ping_tests_user_fail = [\n-  [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root\n-]\n-foreach dst : [ '127.0.0.1' ] + ipv6_dst\n-  foreach args : ping_tests_user_fail\n-\targs += [ dst ]\n-\tname = 'ping ' + ' '.join(args)\n-\ttest(name, ping, args : args, should_fail : not run_as_root)\n-  endforeach\n-endforeach\ndiff --git a/ping/test/meson.build b/ping/test/meson.build\nnew file mode 100644\nindex 00000000..43aed758\n--- /dev/null\n+++ b/ping/test/meson.build\n@@ -0,0 +1,81 @@\n+# TODO: ::1 generates DEPRECATION: \":\" is not allowed in test name \"ping -c1 ::1\", it has been replaced with \"_\"\n+\n+# GitHub CI does not have working IPv6\n+# https://github.com/actions/virtual-environments/issues/668\n+ipv6_dst = []\n+ipv6_switch = []\n+r = run_command('ip', '-6', 'a')\n+if r.stdout().strip().contains('::1')\n+  message('IPv6 enabled')\n+  ipv6_dst = [ '::1' ]\n+  ipv6_switch = [ '-6' ]\n+else\n+  message('WARNING: IPv6 disabled')\n+endif\n+\n+run_as_root = false\n+r = run_command('id', '-u')\n+if r.stdout().strip().to_int() == 0\n+  message('running as root')\n+  run_as_root = true\n+else\n+  message('running as normal user')\n+endif\n+\n+foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst\n+  foreach switch : [ '', '-4' ] + ipv6_switch\n+\targs = [ '-c1', dst ]\n+\tshould_fail = false\n+\n+\tif switch != ''\n+\t  args = [switch] + args\n+\t  if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')\n+\t\t should_fail = true\n+\t  endif\n+\tendif\n+\n+\tname = 'ping ' + ' '.join(args)\n+\ttest(name, ping, args : args, should_fail : should_fail)\n+  endforeach\n+endforeach\n+\n+ping_tests_opt = [\n+  [ '-c1' ],\n+  [ '-c5', '-i0.1' ],\n+  [ '-c1', '-I', 'lo' ],\n+  [ '-c1', '-w1' ],\n+  [ '-c1', '-W1' ],\n+  [ '-c1', '-W1.1' ],\n+]\n+foreach dst : [ '127.0.0.1' ] + ipv6_dst\n+  foreach args : ping_tests_opt\n+\targs += [ dst ]\n+\tname = 'ping ' + ' '.join(args)\n+\ttest(name, ping, args : args)\n+  endforeach\n+endforeach\n+\n+ping_tests_opt_fail = [\n+  [ '-c1.1' ],\n+  [ '-I', 'nonexisting' ],\n+  [ '-w0.1' ],\n+  [ '-w0,1' ],\n+]\n+foreach dst : [ '127.0.0.1' ] + ipv6_dst\n+  foreach args : ping_tests_opt_fail\n+\targs += [ dst ]\n+\tname = 'ping ' + ' '.join(args)\n+\ttest(name, ping, args : args, should_fail : true)\n+  endforeach\n+endforeach\n+\n+ping_tests_user_fail = [\n+  [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root\n+]\n+foreach dst : [ '127.0.0.1' ] + ipv6_dst\n+  foreach args : ping_tests_user_fail\n+\targs += [ dst ]\n+\tname = 'ping ' + ' '.join(args)\n+\ttest(name, ping, args : args, should_fail : not run_as_root)\n+  endforeach\n+endforeach\n"
  },
  {
    "path": "package/iputils/Config.in",
    "content": "config BR2_PACKAGE_IPUTILS\n\tbool \"iputils\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  This package is set of small useful utilities for Linux\n\t  networking. It includes complete versions of ping, traceroute,\n\t  etc.\n\n\t  https://github.com/iputils/iputils\n\nif BR2_PACKAGE_IPUTILS\n\nconfig BR2_PACKAGE_IPUTILS_ARPING\n\tbool \"arping\"\n\tdefault y\n\thelp\n\t  Installs arping.\n\nconfig BR2_PACKAGE_IPUTILS_CLOCKDIFF\n\tbool \"clockdiff\"\n\tdefault y\n\thelp\n\t  Installs clockdiff.\n\nconfig BR2_PACKAGE_IPUTILS_PING\n\tbool \"ping\"\n\tdefault y\n\thelp\n\t  Installs ping.\n\nconfig BR2_PACKAGE_IPUTILS_RARPD\n\tbool \"rarpd\"\n\thelp\n\t  Installs rarpd.\n\nconfig BR2_PACKAGE_IPUTILS_RDISC\n\tbool \"rdisc\"\n\tdefault y\n\thelp\n\t  Installs rdisc.\n\nconfig BR2_PACKAGE_IPUTILS_RDISC_SERVER\n\tbool \"rdisc (server code)\"\n\tdefault y\n\tdepends on BR2_PACKAGE_IPUTILS_RDISC\n\thelp\n\t  Builds rdisc with server code.\n\nconfig BR2_PACKAGE_IPUTILS_TFTPD\n\tbool \"tftpd\"\n\thelp\n\t  Installs tftpd.\n\nconfig BR2_PACKAGE_IPUTILS_TRACEPATH\n\tbool \"tracepath\"\n\tdefault y\n\thelp\n\t  Installs tracepath.\n\nconfig BR2_PACKAGE_IPUTILS_TRACEROUTE6\n\tbool \"traceroute6\"\n\tdefault y\n\thelp\n\t  Installs traceroute6.\n\nconfig BR2_PACKAGE_IPUTILS_NINFOD\n\tbool \"ninfod\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # ninfod requires <pthread.h>\n\thelp\n\t  Installs ninfod.\n\ncomment \"ninfod needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nendif\n"
  },
  {
    "path": "package/iputils/iputils.hash",
    "content": "# https://github.com/iputils/iputils/releases/download/20210722/sha256sum.asc\nsha256 6d1a44b0682d3d4b64586dbaebe61dd61ae16d6e2f4dc0c43336d0e47a9db323  iputils-20210722.tar.gz\n# Locally computed\nsha256 b8ea785d12fa6a44916601104dd746216957e93f13a26d3eb858b3b5a4ad66ab  LICENSE\nsha256 9acc4bc871a4742550158e3696dcb381953172ef808d04ca248184f9f6322712  Documentation/LICENSE.BSD3\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  Documentation/LICENSE.GPL2\n"
  },
  {
    "path": "package/iputils/iputils.mk",
    "content": "################################################################################\n#\n# iputils\n#\n################################################################################\n\n# The original upstream was forked to the github repository in 2014 to\n# pull fixes from other distribution and centralize the changes after\n# the upstream seemed to have gone dormant.  The fork contains the\n# latest changes including musl support, removing a libsysfs dependency\n# and IPv6 updates.\n# http://www.spinics.net/lists/netdev/msg279881.html\n\nIPUTILS_VERSION = 20210722\nIPUTILS_SITE = $(call github,iputils,iputils,$(IPUTILS_VERSION))\nIPUTILS_LICENSE = GPL-2.0+, BSD-3-Clause\nIPUTILS_LICENSE_FILES = LICENSE Documentation/LICENSE.BSD3 Documentation/LICENSE.GPL2\nIPUTILS_CPE_ID_VENDOR = iputils_project\nIPUTILS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\n\n# Selectively build binaries\nIPUTILS_CONF_OPTS += \\\n\t-DBUILD_CLOCKDIFF=$(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),true,false) \\\n\t-DBUILD_RARPD=$(if $(BR2_PACKAGE_IPUTILS_RARPD),true,false) \\\n\t-DBUILD_RDISC=$(if $(BR2_PACKAGE_IPUTILS_RDISC),true,false) \\\n\t-DENABLE_RDISC_SERVER=$(if $(BR2_PACKAGE_IPUTILS_RDISC_SERVER),true,false) \\\n\t-DBUILD_TRACEPATH=$(if $(BR2_PACKAGE_IPUTILS_TRACEPATH),true,false) \\\n\t-DBUILD_TRACEROUTE6=$(if $(BR2_PACKAGE_IPUTILS_TRACEROUTE6),true,false) \\\n\t-DBUILD_NINFOD=$(if $(BR2_PACKAGE_IPUTILS_NINFOD),true,false) \\\n\t-DSKIP_TESTS=true\n\n# Selectively select the appropriate SELinux refpolicy modules\nIPUTILS_SELINUX_MODULES = \\\n\t$(if $(BR2_PACKAGE_IPUTILS_ARPING),netutils) \\\n\t$(if $(BR2_PACKAGE_IPUTILS_PING),netutils) \\\n\t$(if $(BR2_PACKAGE_IPUTILS_TRACEPATH),netutils) \\\n\t$(if $(BR2_PACKAGE_IPUTILS_TRACEROUTE6),netutils) \\\n\t$(if $(BR2_PACKAGE_IPUTILS_RDISC),rdisc) \\\n\t$(if $(BR2_PACKAGE_IPUTILS_TFTPD),tftp)\n\n#\n# arping\n#\nifeq ($(BR2_PACKAGE_IPUTILS_ARPING),y)\nIPUTILS_CONF_OPTS += -DBUILD_ARPING=true\n\n# move some binaries to the same location as where Busybox installs\n# the corresponding applets, so that we have a single version of the\n# tools (from iputils)\ndefine IPUTILS_MOVE_ARPING_BINARY\n\tmv $(TARGET_DIR)/usr/bin/arping $(TARGET_DIR)/usr/sbin/arping\nendef\nIPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_MOVE_ARPING_BINARY\n\nelse\nIPUTILS_CONF_OPTS += -DBUILD_ARPING=false\nendif\n\n#\n# ping\n#\nifeq ($(BR2_PACKAGE_IPUTILS_PING),y)\nIPUTILS_CONF_OPTS += -DBUILD_PING=true\n\n# same reason to move the ping binary as for arping\nifeq ($(BR2_ROOTFS_MERGED_USR),)\ndefine IPUTILS_MOVE_PING_BINARY\n\tmv $(TARGET_DIR)/usr/bin/ping $(TARGET_DIR)/bin/ping\nendef\nIPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_MOVE_PING_BINARY\nendif\n\n# upstream requires distros to create symlink\ndefine IPUTILS_CREATE_PING6_SYMLINK\n\tln -sf ping $(TARGET_DIR)/bin/ping6\nendef\nIPUTILS_POST_INSTALL_TARGET_HOOKS += IPUTILS_CREATE_PING6_SYMLINK\n\nelse\nIPUTILS_CONF_OPTS += -DBUILD_PING=false\nendif\n\n#\n# tftpd\n#\nifeq ($(BR2_PACKAGE_IPUTILS_TFTPD),y)\nIPUTILS_CONF_OPTS += -DBUILD_TFTPD=true\n\nelse\nIPUTILS_CONF_OPTS += -DBUILD_TFTPD=false\nendif\n\n# Handle libraries\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nIPUTILS_CONF_OPTS += -DUSE_CAP=true\nIPUTILS_DEPENDENCIES += libcap\nelse\nIPUTILS_CONF_OPTS += -DUSE_CAP=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBIDN2),y)\nIPUTILS_CONF_OPTS += -DUSE_IDN=true\nIPUTILS_DEPENDENCIES += libidn2\nelse\nIPUTILS_CONF_OPTS += -DUSE_IDN=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nIPUTILS_DEPENDENCIES += systemd\nendif\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nIPUTILS_CONF_OPTS += -DUSE_GETTEXT=true\nelse\nIPUTILS_CONF_OPTS += -DUSE_GETTEXT=false\nendif\n\n# XSL Stylesheets for DocBook 5 not packaged for buildroot\nIPUTILS_CONF_OPTS += -DBUILD_MANS=false -DBUILD_HTML_MANS=false\n\n# handle permissions ourselves\nIPUTILS_CONF_OPTS += -DNO_SETCAP_OR_SUID=true\nifeq ($(BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES),y)\ndefine IPUTILS_PERMISSIONS\n\t$(if $(BR2_PACKAGE_IPUTILS_ARPING),\\\n\t\t/usr/sbin/arping      f 755 0 0 - - - - -,)\n\t$(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),\\\n\t\t/usr/bin/clockdiff    f 755 0 0 - - - - -\n\t\t|xattr cap_net_raw+p,)\n\t$(if $(BR2_PACKAGE_IPUTILS_PING),\\\n\t\t/bin/ping             f 755 0 0 - - - - -\n\t\t|xattr cap_net_raw+p,)\n\t$(if $(BR2_PACKAGE_IPUTILS_TRACEROUTE6),\\\n\t\t/usr/bin/traceroute6  f 755 0 0 - - - - -\n\t\t|xattr cap_net_raw+p,)\nendef\nelse\ndefine IPUTILS_PERMISSIONS\n\t$(if $(BR2_PACKAGE_IPUTILS_ARPING),\\\n\t\t/usr/sbin/arping      f  755 0 0 - - - - -,)\n\t$(if $(BR2_PACKAGE_IPUTILS_CLOCKDIFF),\\\n\t\t/usr/bin/clockdiff    f 4755 0 0 - - - - -,)\n\t$(if $(BR2_PACKAGE_IPUTILS_PING),\\\n\t\t/bin/ping             f 4755 0 0 - - - - -,)\n\t$(if $(BR2_PACKAGE_IPUTILS_TRACEROUTE6),\\\n\t\t/usr/bin/traceroute6  f 4755 0 0 - - - - -,)\nendef\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/irda-utils/0001-daemon.patch",
    "content": "written by Mike Frysinger\n\nhttps://sourceforge.net/tracker/?func=detail&aid=3132053&group_id=5616&atid=305616\n\nRather than using the fork function (which doesnt work on nommu\nsystems), simply use the daemon() function instead (which does\nwork). this should work the same before and after for all systems.\n\n--- a/irattach/util.c\n+++ b/irattach/util.c\n@@ -156,21 +156,10 @@\n \n void fork_now(int ttyfd)\n {\n-\tint ret;\n \tint i;\n \n-\tif ((ret = fork()) > 0)\n-\t\texit(0);\n-\t\n-\tif (ret == -1)\n-\t\tsyslog(LOG_INFO, \"forking: %m\");\n-\tif (setsid() < 0)\n-\t\tsyslog(LOG_INFO, \"detaching from tty: %m\");\n-\n-\tif ((ret = fork()) > 0) {\n-\t\t/* cleanup_files = 0; */\n-\t\texit(0);\n-\t}\n+\tif (daemon(1, 1))\n+\t\tsyslog(LOG_INFO, \"daemon: %m\");\n \n \t/* Close all open inherited files! Except for ttyfd! */\n \tfor (i = 0; i < 64; i++)\n"
  },
  {
    "path": "package/irda-utils/0002-nommu.patch",
    "content": "written by Mike Frysinger\n\nhttps://sourceforge.net/tracker/?func=detail&aid=3132056&group_id=5616&atid=305616\n\nnommu systems cannot fork() as the hardware cannot support\nit. irattach uses it as a minor optimization, but it isnt\nnecessary for correct functioning of the utility. so add a\nNO_FORK define so we nommu peeps can do CFLAGS=\"... -DNO_FORK=1\n...\" and use it in our embedded systems.\n\n--- a/irattach/irattach.c\n+++ b/irattach/irattach.c\n@@ -397,7 +397,11 @@\n \t\t\t\t\tafter_names[i]);\n \t\t\t\t/* Create a new instance for this other\n \t\t\t\t * interface */\n+#ifdef NO_FORK\n+\t\t\t\tpid = -1;\n+#else\n \t\t\t\tpid = fork();\n+#endif\n \t\t\t\t/* If in the child */\n \t\t\t\tif(!pid) {\n \t\t\t\t\t/* Get the interface name */\n"
  },
  {
    "path": "package/irda-utils/0003-subdir.patch",
    "content": "written by Mike Frysinger\n\nhttps://sourceforge.net/tracker/?func=detail&aid=3132051&group_id=5616&atid=305616\n\nThe top level makefile ignores build/install errors in subdirs which makes\npackaging a pain to verify.\n\n--- a/Makefile\n+++ b/Makefile\n@@ -31,11 +31,11 @@\n CFLAGS= -O2 -W -Wall\n \n all:\n-\t@-(set -e ; for d in $(DIRS) ; do $(MAKE) $(MAKE_OUTPUT) -C $$d $@ ; done)\n+\t@(set -e ; for d in $(DIRS) ; do $(MAKE) $(MAKE_OUTPUT) -C $$d $@ ; done)\n \n \n install:\n-\t@-(set -e ; for d in $(DIRS) ; do $(MAKE) $(MAKE_OUTPUT) -C $$d $@ ; done)\n+\t@(set -e ; for d in $(DIRS) ; do $(MAKE) $(MAKE_OUTPUT) -C $$d $@ ; done)\n \n \n clean:\n"
  },
  {
    "path": "package/irda-utils/0004-musl.patch",
    "content": "Replace use of <net/if_packet.h> with <linux/if_packet.h>.\n\nkernel headers <linux/if_packet.h> already provides the\nneeded definitions, moreover not all libc implementations\nprovide if_packet.h e.g. musl\n\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\nUpstream-Status: Pending\n[From http://cgit.openembedded.org/openembedded-core/plain/meta/recipes-connectivity/irda-utils/irda-utils-0.9.18/musl.patch.]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\nIndex: irda-utils-0.9.18/irdaping/irdaping.c\n===================================================================\n--- irda-utils-0.9.18.orig/irdaping/irdaping.c\n+++ irda-utils-0.9.18/irdaping/irdaping.c\n@@ -33,7 +33,6 @@\n #include <sys/socket.h>\n #include <sys/ioctl.h>\n #include <net/if.h>\t\t/* For struct ifreq */\n-#include <net/if_packet.h>\t/* For struct sockaddr_pkt */\n #include <net/if_arp.h>\t\t/* For ARPHRD_IRDA */\n #include <netinet/if_ether.h>\t/* For ETH_P_ALL */\n #include <netinet/in.h>\t\t/* For htons */\n@@ -46,6 +45,7 @@\n #include <asm/byteorder.h>\t/* __cpu_to_le32 and co. */\n \n #include <linux/types.h>\t/* For __u8 and co. */\n+#include <linux/if_packet.h>\t/* For struct sockaddr_pkt */\n #include <irda.h>\n \n #ifndef AF_IRDA\n"
  },
  {
    "path": "package/irda-utils/Config.in",
    "content": "config BR2_PACKAGE_IRDA_UTILS\n\tbool \"irda-utils\"\n\thelp\n\t  user space utilities which control the IrDA stack\n\n\t  http://irda.sourceforge.net/\n\nif BR2_PACKAGE_IRDA_UTILS\n\nconfig BR2_PACKAGE_IRDA_UTILS_IRATTACH\n\tbool \"irattach\"\n\nconfig BR2_PACKAGE_IRDA_UTILS_IRDAPING\n\tbool \"irdaping\"\n\nconfig BR2_PACKAGE_IRDA_UTILS_IRNETD\n\tbool \"irnetd\"\n\nendif\n"
  },
  {
    "path": "package/irda-utils/irda-utils.hash",
    "content": "# Locally computed:\nsha256  61980551e46b2eaa9e17ad31cbc1a638074611fc33bff34163d10c7a67a9fdc6  irda-utils-0.9.18.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  man/COPYING\n"
  },
  {
    "path": "package/irda-utils/irda-utils.mk",
    "content": "################################################################################\n#\n# irda-utils\n#\n################################################################################\n\nIRDA_UTILS_VERSION = 0.9.18\nIRDA_UTILS_SITE = http://downloads.sourceforge.net/project/irda/irda-utils/$(IRDA_UTILS_VERSION)\nIRDA_UTILS_LICENSE = GPL-2.0+\nIRDA_UTILS_LICENSE_FILES = man/COPYING\n\nIRDA_UTILS_CFLAGS = $(TARGET_CFLAGS) -I.\nifeq ($(BR2_USE_MMU),)\nIRDA_UTILS_CFLAGS += -DNO_FORK=1\nendif\n\ndefine IRDA_UTILS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\t\tCC=\"$(TARGET_CC)\" \\\n\t\tCFLAGS=\"$(IRDA_UTILS_CFLAGS)\" \\\n\t\tSYS_INCLUDES= \\\n\t\tDIRS=\"irattach irdaping irnetd\" \\\n\t\tV=1 -C $(@D)\nendef\n\nIRDA_UTILS_SBINS-  =\nIRDA_UTILS_SBINS-y =\nIRDA_UTILS_SBINS-$(BR2_PACKAGE_IRDA_UTILS_IRATTACH) += irattach\nIRDA_UTILS_SBINS-$(BR2_PACKAGE_IRDA_UTILS_IRDAPING) += irdaping\nIRDA_UTILS_SBINS-$(BR2_PACKAGE_IRDA_UTILS_IRNETD)   += irnetd\nIRDA_UTILS_SBINS- += $(IRDA_UTILS_SBINS-y)\n\ndefine IRDA_UTILS_INSTALL_TARGET_CMDS\n\tfor i in $(IRDA_UTILS_SBINS-y); do \\\n\t\t$(INSTALL) -m 0755 -D $(@D)/$$i/$$i $(TARGET_DIR)/usr/sbin/$$i || exit 1; \\\n\tdone\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/irqbalance/0001-configure.ac-use-pkg-config-to-find-numa.patch",
    "content": "From 274cb8ea470a10ce46b783e77784b0eb08cf20d8 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 1 Aug 2021 23:26:01 +0200\nSubject: [PATCH] configure.ac: use pkg-config to find numa\n\nUse pkg-config to find numa and fallback to current mechanism.\nThanks to pkg-config, numa dependencies such as -latomic will be\nretrieved.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/Irqbalance/irqbalance/pull/188]\n---\n configure.ac | 9 ++++++++-\n 1 file changed, 8 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex c45b9ce..50c62ba 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -23,7 +23,14 @@ AC_CHECK_HEADERS([numa.h])\n \n AC_CHECK_FUNCS(getopt_long)\n \n-AC_CHECK_LIB(numa, numa_available)\n+PKG_CHECK_MODULES([NUMA], [numa], [has_numa=yes], [AC_CHECK_LIB(numa, numa_available)])\n+AS_IF([test \"x$has_numa\" = \"xyes\"], [\n+  AC_SUBST([NUMA_CFLAGS])\n+  AC_SUBST([NUMA_LIBS])\n+  LIBS=\"$LIBS $NUMA_LIBS\"\n+  AC_SUBST([LIBS])\n+])\n+\n AC_CHECK_LIB(m, floor)\n \n PKG_CHECK_MODULES([GLIB2], [glib-2.0], [], [AC_MSG_ERROR([glib-2.0 is required])])\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/irqbalance/Config.in",
    "content": "config BR2_PACKAGE_IRQBALANCE\n\tbool \"irqbalance\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Irqbalance is a daemon to help balance the cpu load generated\n\t  by interrupts across all of a systems cpus.\n\t  Irqbalance identifies the highest volume interrupt sources,\n\t  and isolates them to a single unique cpu, so that load is\n\t  spread as much as possible over an entire processor set, while\n\t  minimizing cache hit rates for irq handlers.\n\n\t  https://github.com/Irqbalance/irqbalance\n\ncomment \"irqbalance needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/irqbalance/S13irqbalance",
    "content": "#!/bin/sh\n#\n# Starts irqbalance\n#\n\nEXEC=\"/usr/sbin/irqbalance\"\nARGS=\"\"\nPID=\"/var/run/irqbalance.pid\"\n\ncase \"$1\" in\n    start)\n\tprintf \"Starting irqbalance: \"\n\t# for irqbalance socket /run/irqbalance/irqbalance<pid>.sock\n\tmkdir -p /run/irqbalance\n\tstart-stop-daemon -S -q -x $EXEC -- $ARGS\n\tif [ $? != 0 ]; then\n\t    echo \"FAILED\"\n\t    exit 1\n\telse\n\t    echo \"OK\"\n\tfi\n\tpidof irqbalance > $PID\n\t;;\n    stop)\n\tprintf \"Stopping irqbalance: \"\n\tstart-stop-daemon -K -q -p $PID\n\techo \"OK\"\n\t;;\n    restart|reload)\n\t$0 stop\n\t$0 start\n\t;;\n    *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n"
  },
  {
    "path": "package/irqbalance/irqbalance.hash",
    "content": "# Locally calculated\nsha256  2e7ddb9687a6a5cc1f41626659eac2ad9d6b5875629156b92f693bd404d8ae63  irqbalance-1.8.0.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/irqbalance/irqbalance.mk",
    "content": "################################################################################\n#\n# irqbalance\n#\n################################################################################\n\nIRQBALANCE_VERSION = 1.8.0\nIRQBALANCE_SITE = $(call github,irqbalance,irqbalance,v$(IRQBALANCE_VERSION))\nIRQBALANCE_LICENSE = GPL-2.0\nIRQBALANCE_LICENSE_FILES = COPYING\nIRQBALANCE_SELINUX_MODULES = irqbalance\nIRQBALANCE_DEPENDENCIES = host-pkgconf libglib2\n# Autoreconf needed because package is distributed without a configure script\nIRQBALANCE_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_LIBCAP_NG),y)\nIRQBALANCE_DEPENDENCIES += libcap-ng\nIRQBALANCE_CONF_OPTS += --with-libcap-ng\nelse\nIRQBALANCE_CONF_OPTS += --without-libcap-ng\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)\nIRQBALANCE_DEPENDENCIES += ncurses\nIRQBALANCE_CONF_OPTS += --with-irqbalance-ui\nelse\nIRQBALANCE_CONF_OPTS += --without-irqbalance-ui\nendif\n\nifeq ($(BR2_PACKAGE_NUMACTL),y)\nIRQBALANCE_DEPENDENCIES += numactl\nIRQBALANCE_CONF_OPTS += --enable-numa\nelse\nIRQBALANCE_CONF_OPTS += --disable-numa\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nIRQBALANCE_DEPENDENCIES += systemd\nIRQBALANCE_CONF_OPTS += --with-systemd\nelse\nIRQBALANCE_CONF_OPTS += --without-systemd\nendif\n\ndefine IRQBALANCE_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/irqbalance/S13irqbalance \\\n\t\t$(TARGET_DIR)/etc/init.d/S13irqbalance\nendef\n\ndefine IRQBALANCE_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/irqbalance/irqbalance.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/irqbalance.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/irqbalance/irqbalance.service",
    "content": "[Unit]\nDescription=irqbalance daemon\nAfter=syslog.target\n\n[Service]\nRuntimeDirectory=irqbalance\nExecStart=/usr/sbin/irqbalance --foreground\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/irrlicht/0001-override-CPPFLAGS-CXXFLAGS-and-CFLAGS-in-Makefile.patch",
    "content": "From 5c5e6d0f469c8b4384bbe5d6c8f78069c182daf0 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sun, 9 Apr 2017 19:56:55 +0200\nSubject: [PATCH] override CPPFLAGS, CXXFLAGS and CFLAGS in Makefile\n\nWhen CPPFLAGS is passed on the command line, include paths for the\nbundled libraries are lost. Since the hand written Makefile want\nto use them unconditionally, we need to use the key word \"override\"\nbefore CPPFLAGS.\n\nDo the same for CXXFLAGS and CFLAGS otherwise -fPIC is lost.\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n source/Irrlicht/Makefile | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/source/Irrlicht/Makefile b/source/Irrlicht/Makefile\nindex 0712b07..b334e9c 100644\n--- a/source/Irrlicht/Makefile\n+++ b/source/Irrlicht/Makefile\n@@ -62,7 +62,7 @@ LINKOBJ = $(IRRMESHOBJ) $(IRROBJ) $(IRRPARTICLEOBJ) $(IRRANIMOBJ) \\\n ###############\r\n #Compiler flags\r\n CXXINCS = -I../../include -Izlib -Ijpeglib -Ilibpng\r\n-CPPFLAGS += $(CXXINCS) -DIRRLICHT_EXPORTS=1\r\n+override CPPFLAGS += $(CXXINCS) -DIRRLICHT_EXPORTS=1\r\n CXXFLAGS += -Wall -pipe -fno-exceptions -fno-rtti -fstrict-aliasing\r\n ifndef NDEBUG\r\n CXXFLAGS += -g -D_DEBUG\r\n@@ -74,8 +74,8 @@ CXXFLAGS += -pg\n endif\r\n CFLAGS := -O3 -fexpensive-optimizations -DPNG_THREAD_UNSAFE_OK -DPNG_NO_MMX_CODE -DPNG_NO_MNG_FEATURES\r\n \r\n-sharedlib sharedlib_osx: CXXFLAGS += -fPIC\r\n-sharedlib sharedlib_osx: CFLAGS += -fPIC\r\n+sharedlib sharedlib_osx: override CXXFLAGS += -fPIC\r\n+sharedlib sharedlib_osx: override CFLAGS += -fPIC\r\n \r\n #multilib handling\r\n ifeq ($(HOSTTYPE), x86_64)\r\n-- \n2.9.3\n\n"
  },
  {
    "path": "package/irrlicht/0002-remove-sys-sysctl.h.patch",
    "content": "From 5382142d37730f6758753b758c91e257ffd5892c Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sun, 9 Apr 2017 22:20:19 +0200\nSubject: [PATCH] remove sys/sysctl.h\n\nWith musl irrlicht doesn't build due to missing sys/sysctl.h\n\nfatal error: sys/sysctl.h: No such file or directory\n\nFrom [1]\n\"sysctl does not work, and NEVER worked. using it is bogus.\nit was a bogus experimental syscall that was deprecated before\nit was ever used (basically, a broken binary version of\n/proc/sys, without any stability between kernel versions for\nwhat the binary constants meant).\"\n\n[1] https://devsonacid.wordpress.com/tag/musl/\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n source/Irrlicht/COSOperator.cpp | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/source/Irrlicht/COSOperator.cpp b/source/Irrlicht/COSOperator.cpp\nindex 0899d1d..ccf5ef5 100644\n--- a/source/Irrlicht/COSOperator.cpp\n+++ b/source/Irrlicht/COSOperator.cpp\n@@ -13,7 +13,6 @@\n #include <unistd.h>\r\n #ifndef _IRR_SOLARIS_PLATFORM_\r\n #include <sys/types.h>\r\n-#include <sys/sysctl.h>\r\n #endif\r\n #endif\r\n \r\n-- \n2.9.3\n\n"
  },
  {
    "path": "package/irrlicht/0003-makefile-override-LDFLAGS-and-remove-obsolete-X11R6-.patch",
    "content": "From 0ecb59c4dc575bb902c1955d8762f91ff79290a4 Mon Sep 17 00:00:00 2001\nFrom: Bartosz Bilas <b.bilas@grinn-global.com>\nDate: Tue, 23 Jun 2020 19:36:27 +0200\nSubject: [PATCH] makefile: override LDFLAGS and remove obsolete X11R6\n lib/include directories\n\nAdd \"override\" keyword to LDFLAGS variable in order to link libraries\nusing buildroot cross-compiler correctly and remove those non-supported\npaths to lib/includes that are not used and not available in buildroot\nand in addition point to the host system libraries in a result\ncause the following warning:\n\n/home/bartekk/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/9.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: warning: library search path \"/usr/X11R6/lib\" is unsafe for cross-compilation\n\nSigned-off-by: Bartosz Bilas <b.bilas@grinn-global.com>\n---\n source/Irrlicht/Makefile | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/source/Irrlicht/Makefile b/source/Irrlicht/Makefile\nindex 1a8277e..b323237 100644\n--- a/source/Irrlicht/Makefile\n+++ b/source/Irrlicht/Makefile\n@@ -88,8 +88,7 @@ STATIC_LIB = libIrrlicht.a\n LIB_PATH = ../../lib/$(SYSTEM)\r\n INSTALL_DIR = /usr/local/lib\r\n sharedlib install: SHARED_LIB = libIrrlicht.so\r\n-sharedlib: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm\r\n-staticlib sharedlib: CXXINCS += -I/usr/X11R6/include\r\n+sharedlib: override LDFLAGS += -lGL -lXxf86vm\r\n \r\n #OSX specific options\r\n staticlib_osx sharedlib_osx install_osx: SYSTEM = MacOSX\r\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/irrlicht/Config.in",
    "content": "config BR2_PACKAGE_IRRLICHT\n\tbool \"irrlicht\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_PACKAGE_HAS_LIBGL # use GLX\n\tselect BR2_PACKAGE_XLIB_LIBXXF86VM # libXxf86vm\n\thelp\n\t  An open source high performance realtime 3D graphics engine.\n\n\t  http://irrlicht.sourceforge.net/\n\ncomment \"irrlicht needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\ncomment \"irrlicht needs X11 and an OpenGL provider\"\n\tdepends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7\n\tdepends on BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/irrlicht/irrlicht.hash",
    "content": "# From https://sourceforge.net/projects/irrlicht/files/Irrlicht%20SDK/1.8/1.8.4\nmd5 9401cfff801395010b0912211f3cbb4f irrlicht-1.8.4.zip\nsha1 38bf0223fe868d243d6a39d0dc191c8df6e03b3b irrlicht-1.8.4.zip\n# Locally calculated\nsha256  f42b280bc608e545b820206fe2a999c55f290de5c7509a02bdbeeccc1bf9e433  irrlicht-1.8.4.zip\nsha256  cc86e0b830f9d48933feb198f2741a7d9bb7c34fe8a35302d8ce36b8e2ecb27b  doc/aesGladman.txt\nsha256  e8a6b63336018eec09ac3a7cdfe5a80bda635641bc0397a77b8baa25bed03800  doc/bzip2-license.txt\nsha256  ca38f1ba4ab901111f6eee50009bd46dbd866e6beb98d592d843f7c162d73409  doc/irrlicht-license.txt\nsha256  67f098c29401646a0f52da432efc3bab0433c13f17effc3314e9fa523da51b75  doc/jpglib-license.txt\nsha256  e0f86c3e4acd285618faa55735ceedce46084a3cfb06b8f31d0d092bb68ae151  doc/libpng-license.txt\n"
  },
  {
    "path": "package/irrlicht/irrlicht.mk",
    "content": "################################################################################\n#\n# irrlicht\n#\n################################################################################\n\nIRRLICHT_VERSION_MAJOR = 1.8\nIRRLICHT_VERSION = $(IRRLICHT_VERSION_MAJOR).4\nIRRLICHT_SOURCE = irrlicht-$(IRRLICHT_VERSION).zip\nIRRLICHT_SITE = https://downloads.sourceforge.net/project/irrlicht/Irrlicht%20SDK/$(IRRLICHT_VERSION_MAJOR)/$(IRRLICHT_VERSION)\nIRRLICHT_INSTALL_STAGING = YES\n\n# Bundled libraries: bzip2, libaesGladman, libpng, lzma, zlib,\n# The handcrafted Makefile can only use bundled libraries.\nIRRLICHT_LICENSE = Zlib (irrlicht), BSD-3-Clause (libaesGladman), bzip2-1.0.5 (bzip2), IJG (libjpeg), Libpng (libpng)\nIRRLICHT_LICENSE_FILES = \\\n\tdoc/aesGladman.txt \\\n\tdoc/bzip2-license.txt \\\n\tdoc/irrlicht-license.txt \\\n\tdoc/jpglib-license.txt \\\n\tdoc/libpng-license.txt\n\nIRRLICHT_SUBDIR = source/Irrlicht\n\nIRRLICHT_DEPENDENCIES = libgl xlib_libXxf86vm\n\ndefine IRRLICHT_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(IRRLICHT_DL_DIR)/$(IRRLICHT_SOURCE)\n\tmv $(@D)/irrlicht-$(IRRLICHT_VERSION)/* $(@D)\n\t$(RM) -r $(@D)/irrlicht-$(IRRLICHT_VERSION)\nendef\n\nIRRLICHT_CONF_OPTS = $(TARGET_CONFIGURE_OPTS)\n\n# Build a static library OR a shared library, otherwise we need to compile with -fPIC\n# \"relocation R_X86_64_32S can not be used when making a shared object; recompile with -fPIC\"\nifeq ($(BR2_STATIC_LIBS),)\nIRRLICHT_CONF_OPTS += sharedlib\nendif\n\n# Irrlicht fail to detect properly the NEON support on aarch64 or ARM with NEON FPU support.\n# While linking an application with libIrrlicht.so, we get an undefined reference to\n# png_init_filter_functions_neon.\n# Some files are missing in the libpng bundled in Irrlicht, in particular arm/arm_init.c,\n# so disable NEON support completely.\nIRRLICHT_CONF_OPTS += CPPFLAGS=\"$(TARGET_CPPFLAGS) -DPNG_ARM_NEON_OPT=0\"\n\ndefine IRRLICHT_BUILD_CMDS\n\t$(TARGET_MAKE_ENV)\n\t\t$(MAKE) -C $(@D)/$(IRRLICHT_SUBDIR) $(IRRLICHT_CONF_OPTS)\nendef\n\ndefine IRRLICHT_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\t\tINSTALL_DIR=$(STAGING_DIR)/usr/lib \\\n\t\t-C $(@D)/$(IRRLICHT_SUBDIR) install\nendef\n\ndefine IRRLICHT_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\t\tINSTALL_DIR=$(TARGET_DIR)/usr/lib \\\n\t\t-C $(@D)/$(IRRLICHT_SUBDIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/irssi/Config.in",
    "content": "config BR2_PACKAGE_IRSSI\n\tbool \"irssi\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Irssi is a terminal based IRC client for UNIX systems.\n\n\t  http://irssi.org/\n\nif BR2_PACKAGE_IRSSI\n\nconfig BR2_PACKAGE_IRSSI_PROXY\n\tbool \"proxy module\"\n\thelp\n\t  Build the irssi proxy module, which allows an IRC connection\n\t  to be shared among multiple clients.\n\nconfig BR2_PACKAGE_IRSSI_TRUE_COLOR\n\tbool \"true color support\"\n\thelp\n\t  Build with true color support in terminal.\n\nendif\n\ncomment \"irssi needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/irssi/irssi.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  a647bfefed14d2221fa77b6edac594934dc672c4a560417b1abcbbc6b88d769f  irssi-1.2.3.tar.xz\n# Locally calculated\nsha256  a1a27cb2ecee8d5378fbb3562f577104a445d6d66fee89286e16758305e63e2b  COPYING\n"
  },
  {
    "path": "package/irssi/irssi.mk",
    "content": "################################################################################\n#\n# irssi\n#\n################################################################################\n\nIRSSI_VERSION = 1.2.3\nIRSSI_SOURCE = irssi-$(IRSSI_VERSION).tar.xz\n# Do not use the github helper here. The generated tarball is *NOT* the\n# same as the one uploaded by upstream for the release.\nIRSSI_SITE = https://github.com/irssi/irssi/releases/download/$(IRSSI_VERSION)\nIRSSI_LICENSE = GPL-2.0+\nIRSSI_LICENSE_FILES = COPYING\nIRSSI_CPE_ID_VENDOR = irssi\nIRSSI_DEPENDENCIES = host-pkgconf libglib2 ncurses openssl\n\nIRSSI_CONF_OPTS = \\\n\t--disable-glibtest \\\n\t--without-perl\n\nifeq ($(BR2_PACKAGE_IRSSI_PROXY),y)\nIRSSI_CONF_OPTS += --with-proxy\n# If shared libs are disabled, 'proxy' has to go in the list of built-in\n# modules.\nifeq ($(BR2_STATIC_LIBS),y)\nIRSSI_CONF_OPTS += --with-modules=proxy\nendif\nelse\nIRSSI_CONF_OPTS += --without-proxy\nendif # proxy\n\nifeq ($(BR2_PACKAGE_IRSSI_TRUE_COLOR),y)\nIRSSI_CONF_OPTS += --enable-true-color\nelse\nIRSSI_CONF_OPTS += --disable-true-color\nendif\n\n# Cross-compiling irssi with the perl interpreter enabled doesn't work\n# yet. So, remove scripts as they are useless in that case.\ndefine IRSSI_REMOVE_SCRIPTS\n\trm -rf $(TARGET_DIR)/usr/share/irssi/scripts/\nendef\n\nIRSSI_POST_INSTALL_TARGET_HOOKS += IRSSI_REMOVE_SCRIPTS\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/isl/isl.hash",
    "content": "# Locally computed\nsha256  5efc53efaef151301f4e7dde3856b66812d8153dede24fab17673f801c8698f2  isl-0.23.tar.xz\nsha256  3a2c398103f6bca0f50a9a9465deca9230b370b0212af5fdf31ed88a36215c30  LICENSE\n"
  },
  {
    "path": "package/isl/isl.mk",
    "content": "################################################################################\n#\n# isl\n#\n################################################################################\n\nISL_VERSION = 0.23\nISL_SOURCE = isl-$(ISL_VERSION).tar.xz\nISL_SITE = https://libisl.sourceforge.io\nISL_LICENSE = MIT\nISL_LICENSE_FILES = LICENSE\nHOST_ISL_DEPENDENCIES = host-gmp\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/iucode-tool/Config.in",
    "content": "config BR2_PACKAGE_IUCODE_TOOL\n\tbool \"iucode-tool\"\n\tdepends on BR2_x86_64 || BR2_i386\n\tselect BR2_PACKAGE_INTEL_MICROCODE\n\tselect BR2_PACKAGE_INTEL_MICROCODE_INSTALL_TARGET\n\tselect BR2_PACKAGE_ARGP_STANDALONE \\\n\t       if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  Intel processor microcode tool\n\n\t  https://gitlab.com/iucode-tool\n"
  },
  {
    "path": "package/iucode-tool/S00iucode-tool",
    "content": "#!/bin/sh\n#\n# Upload microcode into the processor.\n#\n\nMICROCODE_DIR=\"/lib/firmware/intel-ucode\"\n\nstart() {\n\tprintf 'Starting iucode-tool: '\n\t/usr/sbin/iucode_tool -q -k \"$MICROCODE_DIR\"\n\tstatus=\"$?\"\n\tif [ \"$status\" = 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart;;\n\tstop|restart|reload)\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/iucode-tool/iucode-tool.hash",
    "content": "# Locally computed\nsha256 12b88efa4d0d95af08db05a50b3dcb217c0eb2bfc67b483779e33d498ddb2f95  iucode-tool_2.3.1.tar.xz\nsha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/iucode-tool/iucode-tool.mk",
    "content": "################################################################################\n#\n# iucode-tool\n#\n################################################################################\n\nIUCODE_TOOL_VERSION = 2.3.1\nIUCODE_TOOL_SOURCE = iucode-tool_$(IUCODE_TOOL_VERSION).tar.xz\nIUCODE_TOOL_SITE = https://gitlab.com/iucode-tool/releases/raw/master\nIUCODE_TOOL_DEPENDENCIES = $(if $(BR2_PACKAGE_ARGP_STANDALONE),argp-standalone)\nIUCODE_TOOL_LICENSE = GPL-2.0+\nIUCODE_TOOL_LICENSE_FILES = COPYING\nIUCODE_TOOL_CPE_ID_VENDOR = iucode-tool_project\n\ndefine IUCODE_TOOL_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/iucode-tool/S00iucode-tool \\\n\t\t$(TARGET_DIR)/etc/init.d/S00iucode-tool\nendef\n\ndefine IUCODE_TOOL_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/iucode-tool/iucode.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/iucode.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/iucode-tool/iucode.service",
    "content": "[Unit]\nDescription=Upload microcode into the processor\n\n[Service]\nType=oneshot\nExecStart=/usr/sbin/iucode_tool -k /usr/share/misc/intel-microcode.dat\nRemainAfterExit=yes\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/iw/Config.in",
    "content": "config BR2_PACKAGE_IW\n\tbool \"iw\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tselect BR2_PACKAGE_LIBNL\n\thelp\n\t  Utility for wireless devices using the mac80211 kernel stack\n\n\t  https://wireless.wiki.kernel.org/en/users/documentation/iw\n\ncomment \"iw needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/iw/iw.hash",
    "content": "# From https://www.kernel.org/pub/software/network/iw/sha256sums.asc\nsha256  293a07109aeb7e36267cf59e3ce52857e9ffae3a6666eb8ac77894b1839fe1f2  iw-5.9.tar.xz\n# Locally calculated\nsha256  5932fb70481e128940168a5fdf133e6454293c0865c7e757874b235cb6daa2af  COPYING\n"
  },
  {
    "path": "package/iw/iw.mk",
    "content": "################################################################################\n#\n# iw\n#\n################################################################################\n\nIW_VERSION = 5.9\nIW_SOURCE = iw-$(IW_VERSION).tar.xz\nIW_SITE = $(BR2_KERNEL_MIRROR)/software/network/iw\nIW_LICENSE = ISC\nIW_LICENSE_FILES = COPYING\nIW_CPE_ID_VENDOR = kernel\nIW_DEPENDENCIES = host-pkgconf libnl\nIW_MAKE_ENV = \\\n\t$(TARGET_MAKE_ENV) \\\n\tPKG_CONFIG=\"$(HOST_DIR)/bin/pkg-config\"\n\ndefine IW_BUILD_CMDS\n\t$(IW_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine IW_INSTALL_TARGET_CMDS\n\t$(IW_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/iwd/0001-build-Add-reallocarray-to-missing-h.patch",
    "content": "From ec1c348b4fd67619fa0c2f55ae644f6a8014d971 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 19 Sep 2021 21:17:44 +0200\nSubject: build: Add reallocarray to missing.h\n\nreallocarray has been added to glibc relatively recently (version 2.26,\nfrom 2017) and apparently not all users run new enough glibc. Moreover,\nreallocarray is not available with uclibc-ng. So use realloc if\nreallocarray is not available to avoid the following build failure\nraised since commit 891b78e9e892a3bcd800eb3a298e6380e9a15dd1:\n\n/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/xtensa-buildroot-linux-uclibc/10.3.0/../../../../xtensa-buildroot-linux-uclibc/bin/ld: src/sae.o: in function `sae_rx_authenticate':\nsae.c:(.text+0xd74): undefined reference to `reallocarray'\n\nFixes:\n - http://autobuild.buildroot.org/results/c6d3f86282c44645b4f1c61882dc63ccfc8eb35a\n\n[Retrieved from:\nhttps://git.kernel.org/pub/scm/network/wireless/iwd.git/commit/?id=ec1c348b4fd67619fa0c2f55ae644f6a8014d971]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac  | 1 +\n src/missing.h | 7 +++++++\n 2 files changed, 8 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex c6250401..51d9da93 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -129,6 +129,7 @@ AC_DEFINE_UNQUOTED(WIRED_STORAGEDIR, \"${wired_storagedir}\",\n \n AC_CHECK_FUNCS(explicit_bzero)\n AC_CHECK_FUNCS(rawmemchr)\n+AC_CHECK_FUNCS(reallocarray)\n \n AC_CHECK_HEADERS(linux/types.h linux/if_alg.h)\n \ndiff --git a/src/missing.h b/src/missing.h\nindex 2cc80aee..a5b92952 100644\n--- a/src/missing.h\n+++ b/src/missing.h\n@@ -37,3 +37,10 @@ _Pragma(\"GCC diagnostic ignored \\\"-Wstringop-overflow=\\\"\")\n _Pragma(\"GCC diagnostic pop\")\n }\n #endif\n+\n+#ifndef HAVE_REALLOCARRAY\n+static inline void *reallocarray(void *ptr, size_t nmemb, size_t size)\n+{\n+\treturn realloc(ptr, nmemb * size);\n+}\n+#endif\n-- \ncgit 1.2.3-1.el7\n\n"
  },
  {
    "path": "package/iwd/0002-netconfig-Remove-usage-of-in6_addr__in6_u.patch",
    "content": "From 42bd5ba7c2665c5bf95ba102a8115c4cf01d31d7 Mon Sep 17 00:00:00 2001\nFrom: Andrew Zaborowski <andrew.zaborowski@intel.com>\nDate: Thu, 16 Sep 2021 01:58:29 +0200\nSubject: netconfig: Remove usage of in6_addr.__in6_u\n\nin6_addr.__in6_u.__u6_addr8 is glibc-specific and named differently in\nthe headers shipped with musl libc for example.  The POSIX compliant and\nuniversal way of accessing it is in6_addr.s6_addr.\n\n[Retrieved from:\nhttps://git.kernel.org/pub/scm/network/wireless/iwd.git/commit/?id=42bd5ba7c2665c5bf95ba102a8115c4cf01d31d7]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/netconfig.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/netconfig.c b/src/netconfig.c\nindex ce95db0b..421270c9 100644\n--- a/src/netconfig.c\n+++ b/src/netconfig.c\n@@ -171,7 +171,7 @@ static inline char *netconfig_ipv6_to_string(const uint8_t *addr)\n \tstruct in6_addr in6_addr;\n \tchar *addr_str = l_malloc(INET6_ADDRSTRLEN);\n \n-\tmemcpy(in6_addr.__in6_u.__u6_addr8, addr, 16);\n+\tmemcpy(in6_addr.s6_addr, addr, 16);\n \n \tif (L_WARN_ON(unlikely(!inet_ntop(AF_INET6, &in6_addr, addr_str,\n \t\t\t\t\t\tINET6_ADDRSTRLEN)))) {\n-- \ncgit 1.2.3-1.el7\n\n"
  },
  {
    "path": "package/iwd/Config.in",
    "content": "config BR2_PACKAGE_IWD\n\tbool \"iwd\"\n\tdepends on BR2_USE_MMU # dbus\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # ell\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 # ell\n\tdepends on BR2_USE_WCHAR # ell\n\tselect BR2_PACKAGE_DBUS # runtime\n\tselect BR2_PACKAGE_ELL\n\tselect BR2_PACKAGE_OPENRESOLV if !BR2_PACKAGE_SYSTEMD_RESOLVED\n\thelp\n\t  iNet Wireless daemon (iwd)\n\n\t  https://iwd.wiki.kernel.org/\n\ncomment \"iwd needs a toolchain w/ threads, wchar, headers >= 4.12\"\n\tdepends on BR2_USE_MMU # dbus\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # ell\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n"
  },
  {
    "path": "package/iwd/S40iwd",
    "content": "#!/bin/sh\n\nDAEMON=\"/usr/libexec/iwd\"\nPIDFILE=\"/var/run/iwd.pid\"\n\nIWD_ARGS=\"\"\n\n[ -r \"/etc/default/iwd\" ] && . \"/etc/default/iwd\"\n\nstart() {\n\tprintf \"Starting iwd:\"\n\tmkdir -p /tmp/iwd/hotspot\n\tstart-stop-daemon -b -m -S -q -p \"$PIDFILE\" -x \"$DAEMON\" \\\n\t\t-- $IWD_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf \"Stopping iwd:\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\ncase \"$1\" in\n\tstart|stop)\n\t\t\"$1\";;\n\t*)\n\t\techo \"Usage: $0 {start|stop}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/iwd/iwd.hash",
    "content": "# From https://mirrors.edge.kernel.org/pub/linux/network/wireless/sha256sums.asc\nsha256  0225ab81579f027e0fcbf255517f432fcf355d14f3645c36813c71a441dfab55  iwd-1.18.tar.xz\n\n# License files\nsha256  ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5  COPYING\n"
  },
  {
    "path": "package/iwd/iwd.mk",
    "content": "################################################################################\n#\n# iwd\n#\n################################################################################\n\nIWD_VERSION = 1.18\nIWD_SOURCE = iwd-$(IWD_VERSION).tar.xz\nIWD_SITE = $(BR2_KERNEL_MIRROR)/linux/network/wireless\nIWD_LICENSE = LGPL-2.1+\nIWD_LICENSE_FILES = COPYING\nIWD_CPE_ID_VENDOR = intel\nIWD_CPE_ID_PRODUCT = inet_wireless_daemon\nIWD_SELINUX_MODULES = networkmanager\n# We're patching configure.ac\nIWD_AUTORECONF = YES\n\nIWD_CONF_OPTS = \\\n\t--disable-manual-pages \\\n\t--enable-external-ell\nIWD_DEPENDENCIES = ell\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nIWD_CONF_OPTS += --enable-dbus-policy --with-dbus-datadir=/usr/share\nIWD_DEPENDENCIES += dbus\nelse\nIWD_CONF_OPTS += --disable-dbus-policy\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\n# iwd client depends on readline (GPL-3.0+)\nIWD_LICENSE += , GPL-3.0+ (client)\nIWD_CONF_OPTS += --enable-client\nIWD_DEPENDENCIES += readline\nelse\nIWD_CONF_OPTS += --disable-client\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nIWD_CONF_OPTS += --enable-systemd-service\nIWD_DEPENDENCIES += systemd\nelse\nIWD_CONF_OPTS += --disable-systemd-service\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_RESOLVED),y)\nIWD_RESOLV_SERVICE = systemd\nelse\nIWD_RESOLV_SERVICE = resolvconf\nendif\n\ndefine IWD_INSTALL_CONFIG_FILE\n\t$(INSTALL) -D -m 644 package/iwd/main.conf $(TARGET_DIR)/etc/iwd/main.conf\n\t$(SED) 's,__RESOLV_SERVICE__,$(IWD_RESOLV_SERVICE),' $(TARGET_DIR)/etc/iwd/main.conf\nendef\n\nIWD_POST_INSTALL_TARGET_HOOKS += IWD_INSTALL_CONFIG_FILE\n\ndefine IWD_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/iwd/S40iwd \\\n\t\t$(TARGET_DIR)/etc/init.d/S40iwd\n\tmkdir -p $(TARGET_DIR)/var/lib/iwd\n\tln -sf /tmp/iwd/hotspot $(TARGET_DIR)/var/lib/iwd/hotspot\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/iwd/main.conf",
    "content": "# use built-in dhcp client\n[General]\nEnableNetworkConfiguration=true\n[Network]\nNameResolvingService=__RESOLV_SERVICE__\n"
  },
  {
    "path": "package/jack1/Config.in",
    "content": "config BR2_PACKAGE_JACK1\n\tbool \"jack1\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_PACKAGE_JACK2\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_HWDEP\n\tselect BR2_PACKAGE_ALSA_LIB_RAWMIDI\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\tselect BR2_PACKAGE_BERKELEYDB\n\tselect BR2_PACKAGE_LIBSAMPLERATE\n\tselect BR2_PACKAGE_LIBSNDFILE\n\thelp\n\t  JACK Audio Connection Kit (JACK 1 implementation).\n\n\t  JACK is a low-latency sound server, allowing multiple\n\t  applications to connect to one audio device, and to share\n\t  audio between themselves. This package contains the daemon\n\t  jackd as well as some example clients.\n\n\t  http://jackaudio.org/\n\n\t  Another implementation (BR2_PACKAGE_JACK2) is also available,\n\t  please consult the documentation to choose the right one:\n\n\t  https://github.com/jackaudio/jackaudio.github.com/wiki/Differences-between-jack1-and-jack2\n\ncomment \"jack1 needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/jack1/jack1.hash",
    "content": "# Locally computed\nsha256 3517b5bff82139a76b2b66fe2fd9a3b34b6e594c184f95a988524c575b11d444  jack-audio-connection-kit-0.125.0.tar.gz\nsha256 661fe53a7e3fce790b185e35c60b7ed80d7efdf25fd7df5af6814a9a215a538f  COPYING\nsha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING.GPL\nsha256 ad01ea5cd2755f6048383c8d54c88459cd6fcb17757c5c8892f8c5ea060f6140  COPYING.LGPL\n"
  },
  {
    "path": "package/jack1/jack1.mk",
    "content": "################################################################################\n#\n# jack1\n#\n################################################################################\n\nJACK1_VERSION = 0.125.0\nJACK1_SOURCE = jack-audio-connection-kit-$(JACK1_VERSION).tar.gz\nJACK1_SITE = http://jackaudio.org/downloads\nJACK1_LICENSE = GPL-2.0+ (jack server), LGPL-2.1+ (jack library)\nJACK1_LICENSE_FILES = COPYING COPYING.GPL COPYING.LGPL\nJACK1_INSTALL_STAGING = YES\n\n# Dependency to celt can't be met: jack1 requires celt >= 0.8.0 but we\n# only have 0.5.1.3 and we cannot upgrade.\nJACK1_DEPENDENCIES = host-pkgconf alsa-lib berkeleydb libsamplerate libsndfile\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nJACK1_DEPENDENCIES += readline\nendif\n\nJACK1_CONF_OPTS = --without-html-dir --disable-oss\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/jack2/Config.in",
    "content": "config BR2_PACKAGE_JACK2\n\tbool \"jack2\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_LIBSAMPLERATE\n\tselect BR2_PACKAGE_LIBSNDFILE\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_HWDEP\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\tselect BR2_PACKAGE_ALSA_LIB_RAWMIDI\n\t# Ensure we get at least one:\n\tselect BR2_PACKAGE_JACK2_LEGACY if !BR2_PACKAGE_JACK2_DBUS\n\thelp\n\t  JACK Audio Connection Kit (server and example clients).\n\n\t  JACK is a low-latency sound server, allowing multiple\n\t  applications to connect to one audio device, and to share\n\t  audio between themselves. This package contains the daemon\n\t  jackd as well as some example clients.\n\n\t  http://jackaudio.org/\n\nif BR2_PACKAGE_JACK2\n\nconfig BR2_PACKAGE_JACK2_LEGACY\n\tbool \"classic jack2\"\n\thelp\n\t  Build and use jackd.\n\n\t  https://github.com/jackaudio/jackaudio.github.com/wiki/JackDbusPackaging\n\nconfig BR2_PACKAGE_JACK2_DBUS\n\tbool \"dbus jack2\"\n\tdepends on BR2_USE_WCHAR # dbus-python, python\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_DBUS_PYTHON\n\tselect BR2_PACKAGE_PYTHON3 if !BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  Build and use jackdbus.\n\n\t  https://github.com/jackaudio/jackaudio.github.com/wiki/JackDbusPackaging\n\nendif\n\ncomment \"jack2 needs a toolchain w/ threads, C++, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/jack2/jack2.hash",
    "content": "# Locally calculated\nsha256  38f674bbc57852a8eb3d9faa1f96a0912d26f7d5df14c11005ad499c8ae352f2  jack2-1.9.17.tar.gz\nsha256  d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388  COPYING\n"
  },
  {
    "path": "package/jack2/jack2.mk",
    "content": "################################################################################\n#\n# jack2\n#\n################################################################################\n\nJACK2_VERSION = 1.9.17\nJACK2_SITE = $(call github,jackaudio,jack2,v$(JACK2_VERSION))\nJACK2_LICENSE = GPL-2.0+ (jack server), LGPL-2.1+ (jack library)\nJACK2_LICENSE_FILES = COPYING\nJACK2_CPE_ID_VENDOR = jackaudio\nJACK2_DEPENDENCIES = libsamplerate libsndfile alsa-lib\nJACK2_INSTALL_STAGING = YES\n\nJACK2_CONF_OPTS = --alsa\n\nifeq ($(BR2_PACKAGE_OPUS),y)\nJACK2_DEPENDENCIES += opus\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nJACK2_DEPENDENCIES += readline\nendif\n\nifeq ($(BR2_PACKAGE_JACK2_LEGACY),y)\nJACK2_CONF_OPTS += --classic\nelse\ndefine JACK2_REMOVE_JACK_CONTROL\n\t$(RM) -f $(TARGET_DIR)/usr/bin/jack_control\nendef\nJACK2_POST_INSTALL_TARGET_HOOKS += JACK2_REMOVE_JACK_CONTROL\nendif\n\nifeq ($(BR2_PACKAGE_JACK2_DBUS),y)\nJACK2_DEPENDENCIES += dbus\nJACK2_CONF_OPTS += --dbus\nendif\n\n# The dependency against eigen is only useful in conjunction with\n# gtkiostream, which we do not have, so we don't need to depend on\n# eigen.\n\n$(eval $(waf-package))\n"
  },
  {
    "path": "package/jailhouse/Config.in",
    "content": "config BR2_PACKAGE_JAILHOUSE\n\tbool \"jailhouse\"\n\tdepends on BR2_aarch64 || BR2_x86_64\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  The Jailhouse partitioning Hypervisor based on Linux.\n\n\t  https://github.com/siemens/jailhouse\n\nif BR2_PACKAGE_JAILHOUSE\n\nconfig BR2_PACKAGE_JAILHOUSE_HELPER_SCRIPTS\n\tbool \"helper scripts\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_MAKO # runtime\n\thelp\n\t  Python-based helpers for the Jailhouse Hypervisor.\n\n\t  https://github.com/siemens/jailhouse\n\ncomment \"helper scripts require Python3\"\n\tdepends on !BR2_PACKAGE_PYTHON3\n\nendif\n\ncomment \"jailhouse needs a Linux kernel to be built\"\n\tdepends on BR2_aarch64 || BR2_x86_64\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/jailhouse/jailhouse.hash",
    "content": "# Locally computed:\nsha256 3777a553c2acb2b693843fe4d16ab80333879daedd47d9c9f3717c9644e6cf93  jailhouse-0.12.tar.gz\nsha256 3aafb31a2436178323663e00511f16d58fc36ea654b1457532e79d017205efd8  COPYING\n"
  },
  {
    "path": "package/jailhouse/jailhouse.mk",
    "content": "################################################################################\n#\n# jailhouse\n#\n################################################################################\n\nJAILHOUSE_VERSION = 0.12\nJAILHOUSE_SITE = $(call github,siemens,jailhouse,v$(JAILHOUSE_VERSION))\nJAILHOUSE_LICENSE = GPL-2.0\nJAILHOUSE_LICENSE_FILES = COPYING\nJAILHOUSE_DEPENDENCIES = \\\n\tlinux\n\nJAILHOUSE_MAKE_OPTS = \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tARCH=\"$(KERNEL_ARCH)\" \\\n\tKDIR=\"$(LINUX_DIR)\" \\\n\tDESTDIR=\"$(TARGET_DIR)\"\n\nifeq ($(BR2_PACKAGE_JAILHOUSE_HELPER_SCRIPTS),y)\nJAILHOUSE_DEPENDENCIES += \\\n\thost-python-mako \\\n\thost-python-setuptools\nJAILHOUSE_MAKE_OPTS += \\\n\tHAS_PYTHON_MAKO=\"yes\" \\\n\tPYTHON_PIP_USABLE=\"yes\"\nelse\nJAILHOUSE_MAKE_OPTS += \\\n\tHAS_PYTHON_MAKO=\"no\" \\\n\tPYTHON_PIP_USABLE=\"no\"\nendif\n\ndefine JAILHOUSE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(JAILHOUSE_MAKE_OPTS) -C $(@D)\n\n\t$(if $(BR2_PACKAGE_JAILHOUSE_HELPER_SCRIPTS), \\\n\t\tcd $(@D) && $(PKG_PYTHON_SETUPTOOLS_ENV) $(HOST_DIR)/bin/python setup.py build)\nendef\n\ndefine JAILHOUSE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(JAILHOUSE_MAKE_OPTS) -C $(@D) modules_install firmware_install tool_inmates_install\n\t$(TARGET_MAKE_ENV) $(MAKE) $(JAILHOUSE_MAKE_OPTS) -C $(@D)/tools src=$(@D)/tools install\n\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/jailhouse\n\t$(INSTALL) -D -m 0644 $(@D)/configs/*/*.cell $(TARGET_DIR)/etc/jailhouse\n\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/local/libexec/jailhouse/demos\n\t$(INSTALL) -D -m 0755 $(@D)/inmates/demos/*/*.bin $(TARGET_DIR)/usr/local/libexec/jailhouse/demos\n\n\t$(if $(BR2_PACKAGE_JAILHOUSE_HELPER_SCRIPTS), \\\n\t\tcd $(@D) && $(PKG_PYTHON_SETUPTOOLS_ENV) $(HOST_DIR)/bin/python setup.py install --no-compile $(PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_OPTS))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/janet/Config.in",
    "content": "config BR2_PACKAGE_JANET\n\tbool \"janet\"\n\thelp\n\t  Janet is a functional and imperative programming language.\n\t  The entire language (core library, interpreter, compiler,\n\t  assembler, PEG) is less than 1MB. You can also add Janet\n\t  scripting to an application by embedding a single C file\n\t  and two headers.\n\n\t  https://janet-lang.org/\n"
  },
  {
    "path": "package/janet/janet.hash",
    "content": "# Locally calculated\nsha256  bfc29c11a070cc175666f74eb99ea992276d6e269701ba9558a72cef05ac80b4  janet-1.18.1.tar.gz\n\n# Locally calculated\nsha256  e2d2ae8360d95386af751ac7d1a3da36ea8ceb230e5f0eba7eb762547b1c58c9  LICENSE\n"
  },
  {
    "path": "package/janet/janet.mk",
    "content": "################################################################################\n#\n# janet\n#\n################################################################################\n\nJANET_VERSION = 1.18.1\nJANET_SITE = $(call github,janet-lang,janet,v$(JANET_VERSION))\nJANET_LICENSE = MIT\nJANET_LICENSE_FILES = LICENSE\n\nJANET_INSTALL_STAGING = YES\n\nifeq ($(BR2_STATIC_LIBS),y)\nJANET_CONF_OPTS += -Ddynamic_modules=false\nendif\n\n# Uses __atomic_fetch_add_4\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nJANET_LDFLAGS += $(TARGET_LDFLAGS) -latomic\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),)\nJANET_CONF_OPTS += -Dsingle_threaded=true\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/jansson/Config.in",
    "content": "config BR2_PACKAGE_JANSSON\n\tbool \"jansson\"\n\thelp\n\t  Jansson is a C library for encoding, decoding and manipulating\n\t  JSON data.\n\n\t  http://www.digip.org/jansson/\n"
  },
  {
    "path": "package/jansson/jansson.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  f4f377da17b10201a60c1108613e78ee15df6b12016b116b6de42209f47a474f  jansson-2.13.1.tar.gz\nsha256  1fff7d37d22157bcd81ab53b6c54da755d7c2f868f15807d9bde920f10730da0  LICENSE\n"
  },
  {
    "path": "package/jansson/jansson.mk",
    "content": "################################################################################\n#\n# jansson\n#\n################################################################################\n\nJANSSON_VERSION = 2.13.1\nJANSSON_SITE = http://www.digip.org/jansson/releases\nJANSSON_LICENSE = MIT\nJANSSON_LICENSE_FILES = LICENSE\nJANSSON_CPE_ID_VENDOR = jansson_project\nJANSSON_INSTALL_STAGING = YES\nJANSSON_CONF_ENV = LIBS=\"-lm\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/janus-gateway/0001-disable-ssp.patch",
    "content": "From 4b02c8207adb888d35951bbc1c5b3029594f44c6 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Wed, 24 Apr 2019 13:56:27 -0400\nSubject: [PATCH] Do not force SSP usage\n\nThe toolchain may not support SSP, so do not enforce its usage, let\nthe package user pass the appropriate CFLAGS to enable SSP if needed.\n\nSigned-off-by: Gregory Dymarek <gregd72002@gmail.com>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n(rebased against v0.1.0)\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n(rebased against v0.6.3)\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\n---\n configure.ac | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 257ea8c..ca17a29 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -20,7 +20,6 @@ LT_INIT\n # Common CFLAGS\n CFLAGS=\"$CFLAGS \\\n \t-fPIC \\\n-\t-fstack-protector-all \\\n \t-fstrict-aliasing \\\n \t-ggdb3 \\\n \t-pthread \\\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/janus-gateway/0002-Add-test-for-Wunused-but-set-variable.patch",
    "content": "From c0f075bdee5edabf8f19b68e0880fbd249a89653 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 3 Jan 2015 15:09:59 +0100\nSubject: [PATCH] Add test for -Wunused-but-set-variable\n\nThe -Wunused-but-set-variable option does not exist in some old gcc\nversions (gcc 4.5.x), so using it unconditionally breaks the build\nwith such compilers.\n\nThis commit introduces the AX_CHECK_COMPILE_FLAG m4 macro taken from\nthe autoconf-archive\n(http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/ax_check_compile_flag.m4),\nand uses it to detect if the -Wunused-but-set-variable option is\nsupported, and only uses it in this case.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n(rebased against v0.1.0)\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n(rebased against v0.6.3)\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\n---\n Makefile.am                 |  1 +\n configure.ac                |  6 ++-\n m4/ax_check_compile_flag.m4 | 74 +++++++++++++++++++++++++++++++++++++\n 3 files changed, 79 insertions(+), 2 deletions(-)\n create mode 100644 m4/ax_check_compile_flag.m4\n\ndiff --git a/Makefile.am b/Makefile.am\nindex f961fdb..3ddbe59 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -151,6 +151,7 @@ janus_CFLAGS = \\\n \t-DEVENTDIR=\\\"$(eventdir)\\\" \\\n \t-DLOGGERDIR=\\\"$(loggerdir)\\\" \\\n \t-DCONFDIR=\\\"$(confdir)\\\" \\\n+\t@GCC_WARN_UNUSED_BUT_SET@ \\\n \t$(BORINGSSL_CFLAGS) \\\n \t$(NULL)\n \ndiff --git a/configure.ac b/configure.ac\nindex ca17a29..beef91a 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -13,6 +13,9 @@ AM_SILENT_RULES([yes])\n AC_USE_SYSTEM_EXTENSIONS\n \n AC_PROG_CC\n+AX_CHECK_COMPILE_FLAG([-Wunused-but-set-variable],\n+\t[GCC_WARN_UNUSED_BUT_SET=-Wunused-but-set-variable])\n+AC_SUBST(GCC_WARN_UNUSED_BUT_SET)\n \n LT_PREREQ([2.2])\n LT_INIT\n@@ -64,8 +67,7 @@ clang*)\n \tCFLAGS=\"$CFLAGS \\\n \t\t-Wcast-align \\\n \t\t-Wno-override-init \\\n-\t\t-Wunsafe-loop-optimizations \\\n-\t\t-Wunused-but-set-variable\"\n+\t\t-Wunsafe-loop-optimizations\"\n esac\n \n JANUS_VERSION=103\ndiff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4\nnew file mode 100644\nindex 0000000..51df0c0\n--- /dev/null\n+++ b/m4/ax_check_compile_flag.m4\n@@ -0,0 +1,74 @@\n+# ===========================================================================\n+#   http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html\n+# ===========================================================================\n+#\n+# SYNOPSIS\n+#\n+#   AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])\n+#\n+# DESCRIPTION\n+#\n+#   Check whether the given FLAG works with the current language's compiler\n+#   or gives an error.  (Warnings, however, are ignored)\n+#\n+#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on\n+#   success/failure.\n+#\n+#   If EXTRA-FLAGS is defined, it is added to the current language's default\n+#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with\n+#   the flags: \"CFLAGS EXTRA-FLAGS FLAG\".  This can for example be used to\n+#   force the compiler to issue an error when a bad flag is given.\n+#\n+#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.\n+#\n+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this\n+#   macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.\n+#\n+# LICENSE\n+#\n+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>\n+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>\n+#\n+#   This program is free software: you can redistribute it and/or modify it\n+#   under the terms of the GNU General Public License as published by the\n+#   Free Software Foundation, either version 3 of the License, or (at your\n+#   option) any later version.\n+#\n+#   This program is distributed in the hope that it will be useful, but\n+#   WITHOUT ANY WARRANTY; without even the implied warranty of\n+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\n+#   Public License for more details.\n+#\n+#   You should have received a copy of the GNU General Public License along\n+#   with this program. If not, see <http://www.gnu.org/licenses/>.\n+#\n+#   As a special exception, the respective Autoconf Macro's copyright owner\n+#   gives unlimited permission to copy, distribute and modify the configure\n+#   scripts that are the output of Autoconf when processing the Macro. You\n+#   need not follow the terms of the GNU General Public License when using\n+#   or distributing such scripts, even though portions of the text of the\n+#   Macro appear in them. The GNU General Public License (GPL) does govern\n+#   all other use of the material that constitutes the Autoconf Macro.\n+#\n+#   This special exception to the GPL applies to versions of the Autoconf\n+#   Macro released by the Autoconf Archive. When you make and distribute a\n+#   modified version of the Autoconf Macro, you may extend this special\n+#   exception to the GPL to apply to your modified version as well.\n+\n+#serial 3\n+\n+AC_DEFUN([AX_CHECK_COMPILE_FLAG],\n+[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX\n+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl\n+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [\n+  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS\n+  _AC_LANG_PREFIX[]FLAGS=\"$[]_AC_LANG_PREFIX[]FLAGS $4 $1\"\n+  AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],\n+    [AS_VAR_SET(CACHEVAR,[yes])],\n+    [AS_VAR_SET(CACHEVAR,[no])])\n+  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])\n+AS_IF([test x\"AS_VAR_GET(CACHEVAR)\" = xyes],\n+  [m4_default([$2], :)],\n+  [m4_default([$3], :)])\n+AS_VAR_POPDEF([CACHEVAR])dnl\n+])dnl AX_CHECK_COMPILE_FLAGS\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/janus-gateway/0003-Fix-potential-Cross-site-Scripting-XSS-exploits-in-demos.patch",
    "content": "From ba166e9adebfe5343f826c6a9e02299d35414ffd Mon Sep 17 00:00:00 2001\nFrom: Lorenzo Miniero <lminiero@gmail.com>\nDate: Thu, 25 Nov 2021 17:20:53 +0100\nSubject: [PATCH] Fix potential Cross-site Scripting (XSS) exploits in demos\n (#2817)\n\n[Retrieved (and backported) from:\nhttps://github.com/meetecho/janus-gateway/commit/ba166e9adebfe5343f826c6a9e02299d35414ffd]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n html/audiobridgetest.js   | 17 +++++++++++++----\n html/recordplaytest.js    | 13 +++++++++++--\n html/screensharingtest.js | 11 ++++++++++-\n html/streamingtest.js     | 13 +++++++++++--\n html/textroomtest.js      | 23 ++++++++++++++---------\n html/videocalltest.js     | 15 ++++++++++++---\n html/videoroomtest.js     | 13 +++++++++++--\n html/vp9svctest.js        | 13 +++++++++++--\n 8 files changed, 93 insertions(+), 25 deletions(-)\n\ndiff --git a/html/audiobridgetest.js b/html/audiobridgetest.js\nindex 18e1cc1839..f757789708 100644\n--- a/html/audiobridgetest.js\n+++ b/html/audiobridgetest.js\n@@ -178,7 +178,7 @@ $(document).ready(function() {\n \t\t\t\t\t\t\t\t\t\t\t\tJanus.debug(\"Got a list of participants:\", list);\n \t\t\t\t\t\t\t\t\t\t\t\tfor(var f in list) {\n \t\t\t\t\t\t\t\t\t\t\t\t\tvar id = list[f][\"id\"];\n-\t\t\t\t\t\t\t\t\t\t\t\t\tvar display = list[f][\"display\"];\n+\t\t\t\t\t\t\t\t\t\t\t\t\tvar display = escapeXmlTags(list[f][\"display\"]);\n \t\t\t\t\t\t\t\t\t\t\t\t\tvar setup = list[f][\"setup\"];\n \t\t\t\t\t\t\t\t\t\t\t\t\tvar muted = list[f][\"muted\"];\n \t\t\t\t\t\t\t\t\t\t\t\t\tvar spatial = list[f][\"spatial_position\"];\n@@ -222,7 +222,7 @@ $(document).ready(function() {\n \t\t\t\t\t\t\t\t\t\t\t\tJanus.debug(\"Got a list of participants:\", list);\n \t\t\t\t\t\t\t\t\t\t\t\tfor(var f in list) {\n \t\t\t\t\t\t\t\t\t\t\t\t\tvar id = list[f][\"id\"];\n-\t\t\t\t\t\t\t\t\t\t\t\t\tvar display = list[f][\"display\"];\n+\t\t\t\t\t\t\t\t\t\t\t\t\tvar display = escapeXmlTags(list[f][\"display\"]);\n \t\t\t\t\t\t\t\t\t\t\t\t\tvar setup = list[f][\"setup\"];\n \t\t\t\t\t\t\t\t\t\t\t\t\tvar muted = list[f][\"muted\"];\n \t\t\t\t\t\t\t\t\t\t\t\t\tvar spatial = list[f][\"spatial_position\"];\n@@ -267,7 +267,7 @@ $(document).ready(function() {\n \t\t\t\t\t\t\t\t\t\t\t\tJanus.debug(\"Got a list of participants:\", list);\n \t\t\t\t\t\t\t\t\t\t\t\tfor(var f in list) {\n \t\t\t\t\t\t\t\t\t\t\t\t\tvar id = list[f][\"id\"];\n-\t\t\t\t\t\t\t\t\t\t\t\t\tvar display = list[f][\"display\"];\n+\t\t\t\t\t\t\t\t\t\t\t\t\tvar display = escapeXmlTags(list[f][\"display\"]);\n \t\t\t\t\t\t\t\t\t\t\t\t\tvar setup = list[f][\"setup\"];\n \t\t\t\t\t\t\t\t\t\t\t\t\tvar muted = list[f][\"muted\"];\n \t\t\t\t\t\t\t\t\t\t\t\t\tvar spatial = list[f][\"spatial_position\"];\n@@ -429,7 +429,7 @@ function registerUsername() {\n \t\t\treturn;\n \t\t}\n \t\tvar register = { request: \"join\", room: myroom, display: username };\n-\t\tmyusername = username;\n+\t\tmyusername = escapeXmlTags(username);\n \t\tmixertest.send({ message: register});\n \t}\n }\n@@ -448,3 +448,12 @@ function getQueryStringValue(name) {\n \t\tresults = regex.exec(location.search);\n \treturn results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n }\n+\n+// Helper to escape XML tags\n+function escapeXmlTags(value) {\n+\tif(value) {\n+\t\tvar escapedValue = value.replace(new RegExp('<', 'g'), '&lt');\n+\t\tescapedValue = escapedValue.replace(new RegExp('>', 'g'), '&gt');\n+\t\treturn escapedValue;\n+\t}\n+}\ndiff --git a/html/recordplaytest.js b/html/recordplaytest.js\nindex 74ee7bed95..52b5ccbc4c 100644\n--- a/html/recordplaytest.js\n+++ b/html/recordplaytest.js\n@@ -423,11 +423,11 @@ function updateRecsList() {\n \t\t\tJanus.debug(\"Got a list of available recordings:\", list);\n \t\t\tfor(var mp in list) {\n \t\t\t\tJanus.debug(\"  >> [\" + list[mp][\"id\"] + \"] \" + list[mp][\"name\"] + \" (\" + list[mp][\"date\"] + \")\");\n-\t\t\t\t$('#recslist').append(\"<li><a href='#' id='\" + list[mp][\"id\"] + \"'>\" + list[mp][\"name\"] + \" [\" + list[mp][\"date\"] + \"]\" + \"</a></li>\");\n+\t\t\t\t$('#recslist').append(\"<li><a href='#' id='\" + list[mp][\"id\"] + \"'>\" + escapeXmlTags(list[mp][\"name\"]) + \" [\" + list[mp][\"date\"] + \"]\" + \"</a></li>\");\n \t\t\t}\n \t\t\t$('#recslist a').unbind('click').click(function() {\n \t\t\t\tselectedRecording = $(this).attr(\"id\");\n-\t\t\t\tselectedRecordingInfo = $(this).text();\n+\t\t\t\tselectedRecordingInfo = escapeXmlTags($(this).text());\n \t\t\t\t$('#recset').html($(this).html()).parent().removeClass('open');\n \t\t\t\t$('#play').removeAttr('disabled').click(startPlayout);\n \t\t\t\treturn false;\n@@ -545,3 +545,12 @@ function getQueryStringValue(name) {\n \t\tresults = regex.exec(location.search);\n \treturn results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n }\n+\n+// Helper to escape XML tags\n+function escapeXmlTags(value) {\n+\tif(value) {\n+\t\tvar escapedValue = value.replace(new RegExp('<', 'g'), '&lt');\n+\t\tescapedValue = escapedValue.replace(new RegExp('>', 'g'), '&gt');\n+\t\treturn escapedValue;\n+\t}\n+}\ndiff --git a/html/screensharingtest.js b/html/screensharingtest.js\nindex 61eac70f43..c64d8dbd67 100644\n--- a/html/screensharingtest.js\n+++ b/html/screensharingtest.js\n@@ -161,7 +161,7 @@ $(document).ready(function() {\n \t\t\t\t\t\t\t\t\t\tif(event === \"joined\") {\n \t\t\t\t\t\t\t\t\t\t\tmyid = msg[\"id\"];\n \t\t\t\t\t\t\t\t\t\t\t$('#session').html(room);\n-\t\t\t\t\t\t\t\t\t\t\t$('#title').html(msg[\"description\"]);\n+\t\t\t\t\t\t\t\t\t\t\t$('#title').html(escapeXmlTags(msg[\"description\"]));\n \t\t\t\t\t\t\t\t\t\t\tJanus.log(\"Successfully joined room \" + msg[\"room\"] + \" with ID \" + myid);\n \t\t\t\t\t\t\t\t\t\t\tif(role === \"publisher\") {\n \t\t\t\t\t\t\t\t\t\t\t\t// This is our session, publish our stream\n@@ -514,3 +514,12 @@ function newRemoteFeed(id, display) {\n \t\t\t}\n \t\t});\n }\n+\n+// Helper to escape XML tags\n+function escapeXmlTags(value) {\n+\tif(value) {\n+\t\tvar escapedValue = value.replace(new RegExp('<', 'g'), '&lt');\n+\t\tescapedValue = escapedValue.replace(new RegExp('>', 'g'), '&gt');\n+\t\treturn escapedValue;\n+\t}\n+}\ndiff --git a/html/streamingtest.js b/html/streamingtest.js\nindex 7dd2e1f681..3f9937f11c 100644\n--- a/html/streamingtest.js\n+++ b/html/streamingtest.js\n@@ -323,7 +323,7 @@ function updateStreamsList() {\n \t\t\tJanus.debug(list);\n \t\t\tfor(var mp in list) {\n \t\t\t\tJanus.debug(\"  >> [\" + list[mp][\"id\"] + \"] \" + list[mp][\"description\"] + \" (\" + list[mp][\"type\"] + \")\");\n-\t\t\t\t$('#streamslist').append(\"<li><a href='#' id='\" + list[mp][\"id\"] + \"'>\" + list[mp][\"description\"] + \" (\" + list[mp][\"type\"] + \")\" + \"</a></li>\");\n+\t\t\t\t$('#streamslist').append(\"<li><a href='#' id='\" + list[mp][\"id\"] + \"'>\" + escapeXmlTags(list[mp][\"description\"]) + \" (\" + list[mp][\"type\"] + \")\" + \"</a></li>\");\n \t\t\t}\n \t\t\t$('#streamslist a').unbind('click').click(function() {\n \t\t\t\tselectedStream = $(this).attr(\"id\");\n@@ -345,7 +345,7 @@ function getStreamInfo() {\n \tvar body = { request: \"info\", id: parseInt(selectedStream) || selectedStream };\n \tstreaming.send({ message: body, success: function(result) {\n \t\tif(result && result.info && result.info.metadata) {\n-\t\t\t$('#metadata').html(result.info.metadata);\n+\t\t\t$('#metadata').html(escapeXmlTags(result.info.metadata));\n \t\t\t$('#info').removeClass('hide').show();\n \t\t}\n \t}});\n@@ -394,6 +394,15 @@ function stopStream() {\n \tsimulcastStarted = false;\n }\n \n+// Helper to escape XML tags\n+function escapeXmlTags(value) {\n+\tif(value) {\n+\t\tvar escapedValue = value.replace(new RegExp('<', 'g'), '&lt');\n+\t\tescapedValue = escapedValue.replace(new RegExp('>', 'g'), '&gt');\n+\t\treturn escapedValue;\n+\t}\n+}\n+\n // Helpers to create Simulcast-related UI, if enabled\n function addSimulcastButtons() {\n \t$('#curres').parent().append(\ndiff --git a/html/textroomtest.js b/html/textroomtest.js\nindex 082ae44905..3d0697e35a 100644\n--- a/html/textroomtest.js\n+++ b/html/textroomtest.js\n@@ -153,9 +153,7 @@ $(document).ready(function() {\n \t\t\t\t\t\t\t\t\tvar what = json[\"textroom\"];\n \t\t\t\t\t\t\t\t\tif(what === \"message\") {\n \t\t\t\t\t\t\t\t\t\t// Incoming message: public or private?\n-\t\t\t\t\t\t\t\t\t\tvar msg = json[\"text\"];\n-\t\t\t\t\t\t\t\t\t\tmsg = msg.replace(new RegExp('<', 'g'), '&lt');\n-\t\t\t\t\t\t\t\t\t\tmsg = msg.replace(new RegExp('>', 'g'), '&gt');\n+\t\t\t\t\t\t\t\t\t\tvar msg = escapeXmlTags(json[\"text\"]);\n \t\t\t\t\t\t\t\t\t\tvar from = json[\"from\"];\n \t\t\t\t\t\t\t\t\t\tvar dateString = getDateString(json[\"date\"]);\n \t\t\t\t\t\t\t\t\t\tvar whisper = json[\"whisper\"];\n@@ -170,9 +168,7 @@ $(document).ready(function() {\n \t\t\t\t\t\t\t\t\t\t}\n \t\t\t\t\t\t\t\t\t} else if(what === \"announcement\") {\n \t\t\t\t\t\t\t\t\t\t// Room announcement\n-\t\t\t\t\t\t\t\t\t\tvar msg = json[\"text\"];\n-\t\t\t\t\t\t\t\t\t\tmsg = msg.replace(new RegExp('<', 'g'), '&lt');\n-\t\t\t\t\t\t\t\t\t\tmsg = msg.replace(new RegExp('>', 'g'), '&gt');\n+\t\t\t\t\t\t\t\t\t\tvar msg = escapeXmlTags(json[\"text\"]);\n \t\t\t\t\t\t\t\t\t\tvar dateString = getDateString(json[\"date\"]);\n \t\t\t\t\t\t\t\t\t\t$('#chatroom').append('<p style=\"color: purple;\">[' + dateString + '] <i>' + msg + '</i>');\n \t\t\t\t\t\t\t\t\t\t$('#chatroom').get(0).scrollTop = $('#chatroom').get(0).scrollHeight;\n@@ -180,7 +176,7 @@ $(document).ready(function() {\n \t\t\t\t\t\t\t\t\t\t// Somebody joined\n \t\t\t\t\t\t\t\t\t\tvar username = json[\"username\"];\n \t\t\t\t\t\t\t\t\t\tvar display = json[\"display\"];\n-\t\t\t\t\t\t\t\t\t\tparticipants[username] = display ? display : username;\n+\t\t\t\t\t\t\t\t\t\tparticipants[username] = escapeXmlTags(display ? display : username);\n \t\t\t\t\t\t\t\t\t\tif(username !== myid && $('#rp' + username).length === 0) {\n \t\t\t\t\t\t\t\t\t\t\t// Add to the participants list\n \t\t\t\t\t\t\t\t\t\t\t$('#list').append('<li id=\"rp' + username + '\" class=\"list-group-item\">' + participants[username] + '</li>');\n@@ -282,7 +278,7 @@ function registerUsername() {\n \t\t\tusername: myid,\n \t\t\tdisplay: username\n \t\t};\n-\t\tmyusername = username;\n+\t\tmyusername = escapeXmlTags(username);\n \t\ttransactions[transaction] = function(response) {\n \t\t\tif(response[\"textroom\"] === \"error\") {\n \t\t\t\t// Something went wrong\n@@ -312,7 +308,7 @@ function registerUsername() {\n \t\t\tif(response.participants && response.participants.length > 0) {\n \t\t\t\tfor(var i in response.participants) {\n \t\t\t\t\tvar p = response.participants[i];\n-\t\t\t\t\tparticipants[p.username] = p.display ? p.display : p.username;\n+\t\t\t\t\tparticipants[p.username] = escapeXmlTags(p.display ? p.display : p.username);\n \t\t\t\t\tif(p.username !== myid && $('#rp' + p.username).length === 0) {\n \t\t\t\t\t\t// Add to the participants list\n \t\t\t\t\t\t$('#list').append('<li id=\"rp' + p.username + '\" class=\"list-group-item\">' + participants[p.username] + '</li>');\n@@ -418,3 +414,12 @@ function getQueryStringValue(name) {\n \t\tresults = regex.exec(location.search);\n \treturn results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n }\n+\n+// Helper to escape XML tags\n+function escapeXmlTags(value) {\n+\tif(value) {\n+\t\tvar escapedValue = value.replace(new RegExp('<', 'g'), '&lt');\n+\t\tescapedValue = escapedValue.replace(new RegExp('>', 'g'), '&gt');\n+\t\treturn escapedValue;\n+\t}\n+}\ndiff --git a/html/videocalltest.js b/html/videocalltest.js\nindex d1c1ab8d07..18ccbc2c47 100644\n--- a/html/videocalltest.js\n+++ b/html/videocalltest.js\n@@ -148,7 +148,7 @@ $(document).ready(function() {\n \t\t\t\t\t\t\t\t\t\t} else if(result[\"event\"]) {\n \t\t\t\t\t\t\t\t\t\t\tvar event = result[\"event\"];\n \t\t\t\t\t\t\t\t\t\t\tif(event === 'registered') {\n-\t\t\t\t\t\t\t\t\t\t\t\tmyusername = result[\"username\"];\n+\t\t\t\t\t\t\t\t\t\t\t\tmyusername = escapeXmlTags(result[\"username\"]);\n \t\t\t\t\t\t\t\t\t\t\t\tJanus.log(\"Successfully registered as \" + myusername + \"!\");\n \t\t\t\t\t\t\t\t\t\t\t\t$('#youok').removeClass('hide').show().html(\"Registered as '\" + myusername + \"'\");\n \t\t\t\t\t\t\t\t\t\t\t\t// Get a list of available peers, just for fun\n@@ -163,7 +163,7 @@ $(document).ready(function() {\n \t\t\t\t\t\t\t\t\t\t\t\tbootbox.alert(\"Waiting for the peer to answer...\");\n \t\t\t\t\t\t\t\t\t\t\t} else if(event === 'incomingcall') {\n \t\t\t\t\t\t\t\t\t\t\t\tJanus.log(\"Incoming call from \" + result[\"username\"] + \"!\");\n-\t\t\t\t\t\t\t\t\t\t\t\tyourusername = result[\"username\"];\n+\t\t\t\t\t\t\t\t\t\t\t\tyourusername = escapeXmlTags(result[\"username\"]);\n \t\t\t\t\t\t\t\t\t\t\t\t// Notify user\n \t\t\t\t\t\t\t\t\t\t\t\tbootbox.hideAll();\n \t\t\t\t\t\t\t\t\t\t\t\tincoming = bootbox.dialog({\n@@ -213,7 +213,7 @@ $(document).ready(function() {\n \t\t\t\t\t\t\t\t\t\t\t\t});\n \t\t\t\t\t\t\t\t\t\t\t} else if(event === 'accepted') {\n \t\t\t\t\t\t\t\t\t\t\t\tbootbox.hideAll();\n-\t\t\t\t\t\t\t\t\t\t\t\tvar peer = result[\"username\"];\n+\t\t\t\t\t\t\t\t\t\t\t\tvar peer = escapeXmlTags(result[\"username\"]);\n \t\t\t\t\t\t\t\t\t\t\t\tif(!peer) {\n \t\t\t\t\t\t\t\t\t\t\t\t\tJanus.log(\"Call started!\");\n \t\t\t\t\t\t\t\t\t\t\t\t} else {\n@@ -598,6 +598,15 @@ function getQueryStringValue(name) {\n \treturn results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n }\n \n+// Helper to escape XML tags\n+function escapeXmlTags(value) {\n+\tif(value) {\n+\t\tvar escapedValue = value.replace(new RegExp('<', 'g'), '&lt');\n+\t\tescapedValue = escapedValue.replace(new RegExp('>', 'g'), '&gt');\n+\t\treturn escapedValue;\n+\t}\n+}\n+\n // Helpers to create Simulcast-related UI, if enabled\n function addSimulcastButtons(temporal) {\n \t$('#curres').parent().append(\ndiff --git a/html/videoroomtest.js b/html/videoroomtest.js\nindex 6a566891d8..5a3ade9be9 100644\n--- a/html/videoroomtest.js\n+++ b/html/videoroomtest.js\n@@ -400,7 +400,7 @@ function registerUsername() {\n \t\t\tptype: \"publisher\",\n \t\t\tdisplay: username\n \t\t};\n-\t\tmyusername = username;\n+\t\tmyusername = escapeXmlTags(username);\n \t\tsfutest.send({ message: register });\n \t}\n }\n@@ -530,7 +530,7 @@ function newRemoteFeed(id, display, audio, video) {\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t}\n \t\t\t\t\t\tremoteFeed.rfid = msg[\"id\"];\n-\t\t\t\t\t\tremoteFeed.rfdisplay = msg[\"display\"];\n+\t\t\t\t\t\tremoteFeed.rfdisplay = escapeXmlTags(msg[\"display\"]);\n \t\t\t\t\t\tif(!remoteFeed.spinner) {\n \t\t\t\t\t\t\tvar target = document.getElementById('videoremote'+remoteFeed.rfindex);\n \t\t\t\t\t\t\tremoteFeed.spinner = new Spinner({top:100}).spin(target);\n@@ -685,6 +685,15 @@ function getQueryStringValue(name) {\n \treturn results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n }\n \n+// Helper to escape XML tags\n+function escapeXmlTags(value) {\n+\tif(value) {\n+\t\tvar escapedValue = value.replace(new RegExp('<', 'g'), '&lt');\n+\t\tescapedValue = escapedValue.replace(new RegExp('>', 'g'), '&gt');\n+\t\treturn escapedValue;\n+\t}\n+}\n+\n // Helpers to create Simulcast-related UI, if enabled\n function addSimulcastButtons(feed, temporal) {\n \tvar index = feed;\ndiff --git a/html/vp9svctest.js b/html/vp9svctest.js\nindex eca0239c32..b22ccf3340 100644\n--- a/html/vp9svctest.js\n+++ b/html/vp9svctest.js\n@@ -387,7 +387,7 @@ function registerUsername() {\n \t\t\tptype: \"publisher\",\n \t\t\tdisplay: username\n \t\t};\n-\t\tmyusername = username;\n+\t\tmyusername = escapeXmlTags(username);\n \t\tsfutest.send({ message: register });\n \t}\n }\n@@ -486,7 +486,7 @@ function newRemoteFeed(id, display, audio, video) {\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t}\n \t\t\t\t\t\tremoteFeed.rfid = msg[\"id\"];\n-\t\t\t\t\t\tremoteFeed.rfdisplay = msg[\"display\"];\n+\t\t\t\t\t\tremoteFeed.rfdisplay = escapeXmlTags(msg[\"display\"]);\n \t\t\t\t\t\tif(!remoteFeed.spinner) {\n \t\t\t\t\t\t\tvar target = document.getElementById('videoremote'+remoteFeed.rfindex);\n \t\t\t\t\t\t\tremoteFeed.spinner = new Spinner({top:100}).spin(target);\n@@ -630,6 +630,15 @@ function newRemoteFeed(id, display, audio, video) {\n \t\t});\n }\n \n+// Helper to escape XML tags\n+function escapeXmlTags(value) {\n+\tif(value) {\n+\t\tvar escapedValue = value.replace(new RegExp('<', 'g'), '&lt');\n+\t\tescapedValue = escapedValue.replace(new RegExp('>', 'g'), '&gt');\n+\t\treturn escapedValue;\n+\t}\n+}\n+\n // Helpers to create SVC-related UI for a new viewer\n function addSvcButtons(feed) {\n \tvar index = feed;\n"
  },
  {
    "path": "package/janus-gateway/Config.in",
    "content": "menuconfig BR2_PACKAGE_JANUS_GATEWAY\n\tbool \"janus-gateway\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_WCHAR # libnice -> libglib2\n\tdepends on BR2_USE_MMU # libnice\n\tdepends on !BR2_STATIC_LIBS # dlopen\n\tselect BR2_PACKAGE_JANSSON\n\tselect BR2_PACKAGE_LIBCONFIG\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBNICE\n\tselect BR2_PACKAGE_LIBSRTP\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Janus is an open source, general purpose, WebRTC gateway\n\t  designed and developed by Meetecho.\n\n\t  https://github.com/meetecho/janus-gateway\n\nif BR2_PACKAGE_JANUS_GATEWAY\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_DEMOS\n\tbool \"HTML demos\"\n\thelp\n\t  Install the demonstration website, as featured on\n\t  https://janus.conf.meetecho.com/\n\ncomment \"plugins\"\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE\n\tbool \"audio bridge\"\n\tselect BR2_PACKAGE_OPUS\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST\n\tbool \"echo test\"\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY\n\tbool \"record and play\"\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY\n\tbool \"sip gateway\"\n\tselect BR2_PACKAGE_SOFIA_SIP\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_STREAMING\n\tbool \"streaming\"\n\t# SO_REUSEPORT\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9\n\ncomment \"streaming plugin needs a toolchain w/ headers >= 3.9\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM\n\tbool \"text room\"\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL\n\tbool \"video call\"\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM\n\tbool \"video room\"\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_VOICE_MAIL\n\tbool \"voice mail\"\n\tselect BR2_PACKAGE_LIBOGG\n\ncomment \"transports\"\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_MQTT\n\tbool \"MQTT\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_PAHO_MQTT_C\n\ncomment \"MQTT transport needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ\n\tbool \"RabbitMQ\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_RABBITMQ_C\n\ncomment \"RabbitMQ transport needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_REST\n\tbool \"REST (HTTP/HTTPS)\"\n\tselect BR2_PACKAGE_LIBMICROHTTPD\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS\n\tbool \"Unix Sockets\"\n\tdefault y\n\nconfig BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS\n\tbool \"WebSockets\"\n\tselect BR2_PACKAGE_LIBWEBSOCKETS\n\nendif\n\ncomment \"janus-gateway needs a toolchain w/ dynamic library, threads, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/janus-gateway/janus-gateway.hash",
    "content": "# Locally computed\nsha256  21e2fc7dee4b20ed8d749a69577eccd961b0bfe5b863d42f39ddfcd2af903718  janus-gateway-0.10.10.tar.gz\nsha256  91d04c97fa1da3fcd28205873276358aafc071c5b00a9ea8c49dd06d487a9dc6  COPYING\n"
  },
  {
    "path": "package/janus-gateway/janus-gateway.mk",
    "content": "################################################################################\n#\n# janus-gateway\n#\n################################################################################\n\nJANUS_GATEWAY_VERSION = 0.10.10\nJANUS_GATEWAY_SITE = $(call github,meetecho,janus-gateway,v$(JANUS_GATEWAY_VERSION))\nJANUS_GATEWAY_LICENSE = GPL-3.0 with OpenSSL exception\nJANUS_GATEWAY_LICENSE_FILES = COPYING\nJANUS_GATEWAY_CPE_ID_VENDOR = meetecho\nJANUS_GATEWAY_CPE_ID_PRODUCT = janus\n\n# 0003-Fix-potential-Cross-site-Scripting-XSS-exploits-in-demos.patch\nJANUS_GATEWAY_IGNORE_CVES += CVE-2021-4020\n\n# ding-libs provides the ini_config library\nJANUS_GATEWAY_DEPENDENCIES = host-pkgconf jansson libnice \\\n\tlibsrtp host-gengetopt libglib2 openssl libconfig \\\n\t$(if $(BR2_PACKAGE_LIBOGG),libogg)\n\n# Straight out of the repository, no ./configure, and we also patch\n# configure.ac.\nJANUS_GATEWAY_AUTORECONF = YES\n\nJANUS_GATEWAY_CONF_OPTS = \\\n\t--disable-data-channels \\\n\t--disable-sample-event-handler\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_DEMOS),)\ndefine JANUS_GATEWAY_REMOVE_DEMOS\n\t$(RM) -fr $(TARGET_DIR)/usr/share/janus/demos/\nendef\nJANUS_GATEWAY_POST_INSTALL_TARGET_HOOKS += JANUS_GATEWAY_REMOVE_DEMOS\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE),y)\nJANUS_GATEWAY_DEPENDENCIES += opus\nJANUS_GATEWAY_CONF_OPTS += --enable-plugin-audiobridge\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-plugin-audiobridge\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST),y)\nJANUS_GATEWAY_CONF_OPTS += --enable-plugin-echotest\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-plugin-echotest\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY),y)\nJANUS_GATEWAY_CONF_OPTS += --enable-plugin-recordplay\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-plugin-recordplay\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY),y)\nJANUS_GATEWAY_DEPENDENCIES += sofia-sip\nJANUS_GATEWAY_CONF_OPTS += --enable-plugin-sip\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-plugin-sip\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_STREAMING),y)\nJANUS_GATEWAY_CONF_OPTS += --enable-plugin-streaming\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-plugin-streaming\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM),y)\nJANUS_GATEWAY_CONF_OPTS += --enable-plugin-textroom\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-plugin-textroom\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL),y)\nJANUS_GATEWAY_CONF_OPTS += --enable-plugin-videocall\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-plugin-videocall\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM),y)\nJANUS_GATEWAY_CONF_OPTS += --enable-plugin-videoroom\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-plugin-videoroom\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_VOICE_MAIL),y)\nJANUS_GATEWAY_CONF_OPTS += --enable-plugin-voicemail\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-plugin-voicemail\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_MQTT),y)\nJANUS_GATEWAY_DEPENDENCIES += paho-mqtt-c\nJANUS_GATEWAY_CONF_OPTS += --enable-mqtt\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-mqtt\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ),y)\nJANUS_GATEWAY_DEPENDENCIES += rabbitmq-c\nJANUS_GATEWAY_CONF_OPTS += --enable-rabbitmq\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-rabbitmq\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_REST),y)\nJANUS_GATEWAY_DEPENDENCIES += libmicrohttpd\nJANUS_GATEWAY_CONF_OPTS += --enable-rest\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-rest\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS),y)\nJANUS_GATEWAY_CONF_OPTS += --enable-unix-sockets\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-unix-sockets\nendif\n\nifeq ($(BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS),y)\nJANUS_GATEWAY_DEPENDENCIES += libwebsockets\nJANUS_GATEWAY_CONF_OPTS += --enable-websockets\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-websockets\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nJANUS_GATEWAY_DEPENDENCIES += systemd\nJANUS_GATEWAY_CONF_OPTS += --enable-systemd-sockets\nelse\nJANUS_GATEWAY_CONF_OPTS += --disable-systemd-sockets\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/jasper/Config.in",
    "content": "config BR2_PACKAGE_JASPER\n\tbool \"jasper\"\n\thelp\n\t  JPEG-2000 decoder\n\n\t  http://www.ece.uvic.ca/~mdadams/jasper/\n"
  },
  {
    "path": "package/jasper/jasper.hash",
    "content": "# Locally calculated\nsha256  6b4e5f682be0ab1a5acb0eeb6bf41d6ce17a658bb8e2dbda95de40100939cc88  jasper-2.0.28.tar.gz\nsha256  4ad1bb42aff888c4403d792e6e2c5f1716d6c279fea70b296333c9d577d30b81  LICENSE\n"
  },
  {
    "path": "package/jasper/jasper.mk",
    "content": "################################################################################\n#\n# jasper\n#\n################################################################################\n\nJASPER_VERSION = 2.0.28\nJASPER_SITE = $(call github,jasper-software,jasper,version-$(JASPER_VERSION))\nJASPER_INSTALL_STAGING = YES\nJASPER_LICENSE = JasPer-2.0\nJASPER_LICENSE_FILES = LICENSE\nJASPER_CPE_ID_VENDOR = jasper_project\nJASPER_SUPPORTS_IN_SOURCE_BUILD = NO\nJASPER_CONF_OPTS = \\\n\t-DCMAKE_DISABLE_FIND_PACKAGE_DOXYGEN=TRUE \\\n\t-DCMAKE_DISABLE_FIND_PACKAGE_LATEX=TRUE\n\nifeq ($(BR2_STATIC_LIBS),y)\nJASPER_CONF_OPTS += -DJAS_ENABLE_SHARED=OFF\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nJASPER_CONF_OPTS += -DJAS_ENABLE_LIBJPEG=ON\nJASPER_DEPENDENCIES += jpeg\nelse\nJASPER_CONF_OPTS += -DJAS_ENABLE_LIBJPEG=OFF\nendif\n\nJASPER_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nJASPER_CFLAGS += -O0\nendif\n\nJASPER_CONF_OPTS += -DCMAKE_C_FLAGS=\"$(JASPER_CFLAGS)\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/jbig2dec/Config.in",
    "content": "config BR2_PACKAGE_JBIG2DEC\n\tbool \"jbig2dec\"\n\thelp\n\t  jbig2dec is a decoder implementation of the JBIG2\n\t  image compression format.\n\n\t  https://jbig2dec.com/\n"
  },
  {
    "path": "package/jbig2dec/jbig2dec.hash",
    "content": "# https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9530/MD5SUMS\n# and SHA512SUMS are missing the hashes for this file.\n# Locally computed:\nsha256  279476695b38f04939aa59d041be56f6bade3422003a406a85e9792c27118a37  jbig2dec-0.19.tar.gz\n\n# Hash for license files:\nsha256  1bf5258afe453934484fd0cea97508b72301633a6a78b0ae8a9ee44ac78f26d9  LICENSE\n"
  },
  {
    "path": "package/jbig2dec/jbig2dec.mk",
    "content": "################################################################################\n#\n# jbig2dec\n#\n################################################################################\n\nJBIG2DEC_VERSION = 0.19\nJBIG2DEC_SITE = \\\n\thttps://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9530\nJBIG2DEC_LICENSE = AGPL-3.0+\nJBIG2DEC_LICENSE_FILES = LICENSE\nJBIG2DEC_CPE_ID_VENDOR = artifex\nJBIG2DEC_INSTALL_STAGING = YES\n# tarball is missing install-sh, install.sh, or shtool\nJBIG2DEC_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/jemalloc/Config.in",
    "content": "config BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS\n\tbool\n\t# see include/jemalloc/internal/quantum.h\n\tdefault y if BR2_arm || BR2_armeb\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_m68k\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_nios2\n\tdefault y if BR2_or1k\n\tdefault y if BR2_powerpc\n\tdefault y if BR2_riscv\n\tdefault y if BR2_sh4 || BR2sh4eb || BR2_sh4a || BR2_sh4aeb\n\tdefault y if BR2_sparc64\n\nconfig BR2_PACKAGE_JEMALLOC\n\tbool \"jemalloc\"\n\tdepends on BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  This library providing a malloc(3) implementation that\n\t  emphasizes fragmentation avoidance and scalable concurrency\n\t  support.\n\n\t  http://jemalloc.net/\n\ncomment \"jemalloc needs a toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/jemalloc/jemalloc.hash",
    "content": "# Locally calculated\nsha256 34330e5ce276099e2e8950d9335db5a875689a4c6a56751ef3b1d8c537f887f6  jemalloc-5.2.1.tar.bz2\nsha256 94aa2caa98c25d942f58b956c71dba6a99ff98fc3a31cbc669fe2a4cd0268b53  COPYING\n"
  },
  {
    "path": "package/jemalloc/jemalloc.mk",
    "content": "################################################################################\n#\n# jemalloc\n#\n################################################################################\n\nJEMALLOC_VERSION = 5.2.1\nJEMALLOC_SOURCE = jemalloc-$(JEMALLOC_VERSION).tar.bz2\nJEMALLOC_SITE = https://github.com/jemalloc/jemalloc/releases/download/$(JEMALLOC_VERSION)\nJEMALLOC_LICENSE = BSD-2-Clause\nJEMALLOC_LICENSE_FILES = COPYING\nJEMALLOC_INSTALL_STAGING = YES\nJEMALLOC_CONFIG_SCRIPTS = jemalloc-config\n\n# gcc bug internal compiler error: in merge_overlapping_regs, at\n# regrename.c:304. This bug is fixed since gcc 6.\nifeq ($(BR2_or1k):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:)\nJEMALLOC_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -O0\"\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/jh71xx-tools/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_JH71XX_TOOLS\n\tbool \"host jh71xx-tools\"\n\tdepends on BR2_riscv\n\thelp\n\t  Bootloader recovery and updater tool for StarFive JH7100 SoCs.\n\n\t  https://github.com/kprasadvnsi/JH71xx-tools\n"
  },
  {
    "path": "package/jh71xx-tools/jh71xx-tools.hash",
    "content": "# Locally calculated\nsha256  0f16ea896164f6e8bfe0a03bbbd95ff14d474445ba6f045f9377d01282c9364f  jh71xx-tools-7a29f4b9d2355aa39afa8680680909bb74e4991d.tar.gz\nsha256  cf03c59b41f6d8a5046f7bff4bbe3576075314299a4d0828d7855bf60af81001  LICENSE\n"
  },
  {
    "path": "package/jh71xx-tools/jh71xx-tools.mk",
    "content": "################################################################################\n#\n# jh71xx-tools\n#\n################################################################################\n\nJH71XX_TOOLS_VERSION = 7a29f4b9d2355aa39afa8680680909bb74e4991d\nJH71XX_TOOLS_SITE = $(call github,kprasadvnsi,JH71xx-tools,$(JH71XX_TOOLS_VERSION))\nJH71XX_TOOLS_LICENSE = MIT\nJH71XX_TOOLS_LICENSE_FILES = LICENSE\n\ndefine HOST_JH71XX_TOOLS_BUILD_CMDS\n\t$(HOSTCC) -o $(@D)/jh7100-recover $(@D)/jh7100-recover.c\nendef\n\ndefine HOST_JH71XX_TOOLS_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/jh7100-recover $(HOST_DIR)/bin/jh7100-recover\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/jhead/Config.in",
    "content": "config BR2_PACKAGE_JHEAD\n\tbool \"jhead\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Jhead is a program for manipulating settings and thumbnails\n\t  in Exif jpeg headers used by most Digital Cameras.\n\n\t  http://www.sentex.net/~mwandel/jhead/\n\ncomment \"jhead needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/jhead/jhead.hash",
    "content": "# Locally calculated from download (no sig, hash)\nsha256  5c5258c3d7a840bf831e22174e4a24cb1de3baf442f7cb73d5ab31b4ae0b0058  jhead-3.06.0.1.tar.gz\nsha256  8b709512c737fc0c1e1024800b9a44c54d14ab02132c636a66c3ac66955c3e95  readme.txt\n"
  },
  {
    "path": "package/jhead/jhead.mk",
    "content": "################################################################################\n#\n# jhead\n#\n################################################################################\n\nJHEAD_VERSION = 3.06.0.1\nJHEAD_SITE = $(call github,Matthias-Wandel,jhead,$(JHEAD_VERSION))\nJHEAD_LICENSE = Public Domain\nJHEAD_LICENSE_FILES = readme.txt\nJHEAD_CPE_ID_VENDOR = jhead_project\n\ndefine JHEAD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine JHEAD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/jhead $(TARGET_DIR)/usr/bin/jhead\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/jimtcl/Config.in",
    "content": "config BR2_PACKAGE_JIMTCL\n\tbool \"jimtcl\"\n\thelp\n\t  Jim Tcl is a small footprint reimplementation of the Tcl\n\t  scripting language. The core language engine is compatible\n\t  with Tcl 8.5+, while implementing a significant subset of\n\t  the Tcl 8.6 command set, plus additional features available\n\t  only in Jim Tcl.\n\n\t  http://jim.tcl.tk\n"
  },
  {
    "path": "package/jimtcl/jimtcl.hash",
    "content": "# Locally computed\nsha256  9e79a960de925552eeb4df51121f0ea017e34409568117b1ac461f4c3071289e  jimtcl-0.80.tar.gz\nsha256  419f1146334e57fb258d6c957d1f94d43455ec0d24b1b54c4447e5f61a353950  LICENSE\n"
  },
  {
    "path": "package/jimtcl/jimtcl.mk",
    "content": "################################################################################\n#\n# jimtcl\n#\n################################################################################\n\nJIMTCL_VERSION = 0.80\nJIMTCL_SITE = $(call github,msteveb,jimtcl,$(JIMTCL_VERSION))\nJIMTCL_INSTALL_STAGING = YES\nJIMTCL_LICENSE = BSD-2-Clause\nJIMTCL_LICENSE_FILES = LICENSE\n\nJIMTCL_HEADERS_TO_INSTALL = \\\n\tjim.h \\\n\tjim-eventloop.h \\\n\tjim-signal.h \\\n\tjim-subcmd.h \\\n\tjim-win32compat.h \\\n\tjim-config.h\n\nifeq ($(BR2_PACKAGE_TCL),)\ndefine JIMTCL_LINK_TCLSH\n\tln -sf jimsh $(TARGET_DIR)/usr/bin/tclsh\nendef\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\ndefine JIMTCL_INSTALL_LIB\n\t$(INSTALL) -m 0644 -D $(@D)/libjim.a $(1)/usr/lib/libjim.a\nendef\nelse\nJIMTCL_SHARED = --shared\ndefine JIMTCL_INSTALL_LIB\n\t$(INSTALL) -m 0755 -D $(@D)/libjim.so.$(JIMTCL_VERSION) \\\n\t\t$(1)/usr/lib/libjim.so.$(JIMTCL_VERSION)\n\tln -sf libjim.so.$(JIMTCL_VERSION) $(1)/usr/lib/libjim.so\nendef\nendif\n\n# build system doesn't use autotools, but does use an old version of\n# gnuconfig which doesn't know all the architectures supported by\n# Buildroot, so update config.guess / config.sub like we do in\n# pkg-autotools.mk\nJIMTCL_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK\nHOST_JIMTCL_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK\n\n# jimtcl really wants to find a existing $CXX, so feed it false\n# when we do not have one.\ndefine JIMTCL_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\tCCACHE=none \\\n\t\t$(if $(BR2_INSTALL_LIBSTDCPP),,CXX=false) \\\n\t\t./configure --prefix=/usr \\\n\t\t--host=$(GNU_TARGET_NAME) \\\n\t\t--build=$(GNU_HOST_NAME) \\\n\t\t$(JIMTCL_SHARED) \\\n\t)\nendef\n\n# -fPIC is mandatory to build shared libraries on certain architectures\n# (e.g. SPARC) and causes no harm or drawbacks on other architectures\ndefine JIMTCL_BUILD_CMDS\n\tSH_CFLAGS=\"-fPIC\" \\\n\tSHOBJ_CFLAGS=\"-fPIC\" \\\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine JIMTCL_INSTALL_STAGING_CMDS\n\tfor i in $(JIMTCL_HEADERS_TO_INSTALL); do \\\n\t\tcp -a $(@D)/$$i $(STAGING_DIR)/usr/include/ || exit 1 ; \\\n\tdone; \\\n\t$(call JIMTCL_INSTALL_LIB,$(STAGING_DIR))\nendef\n\ndefine JIMTCL_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D $(@D)/jimsh $(TARGET_DIR)/usr/bin/jimsh\n\t$(call JIMTCL_INSTALL_LIB,$(TARGET_DIR))\n\t$(JIMTCL_LINK_TCLSH)\nendef\n\ndefine HOST_JIMTCL_CONFIGURE_CMDS\n\tcd $(@D) && \\\n\t\t$(HOST_CONFIGURE_OPTS) \\\n\t\tCCACHE=none \\\n\t\t./configure --prefix=$(HOST_DIR) --shared\nendef\n\ndefine HOST_JIMTCL_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_JIMTCL_INSTALL_CMDS\n\tfor i in $(JIMTCL_HEADERS_TO_INSTALL); do \\\n\t\tcp -a $(@D)/$$i $(HOST_DIR)/usr/include/ || exit 1 ; \\\n\tdone;\n\t$(INSTALL) -m 0755 -D $(@D)/libjim.so.$(JIMTCL_VERSION) \\\n\t\t$(HOST_DIR)/usr/lib/libjim.so.$(JIMTCL_VERSION)\n\tln -sf libjim.so.$(JIMTCL_VERSION) $(HOST_DIR)/usr/lib/libjim.so\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/jitterentropy-library/0001-Makefile-cleanup-install.patch",
    "content": "From 060b9b4147f6e5ff386a8b017796118d783e59fa Mon Sep 17 00:00:00 2001\nFrom: Matt Weber <matthew.weber@rockwellcollins.com>\nDate: Tue, 22 Oct 2019 12:44:30 -0500\nSubject: [PATCH] Makefile: cleanup install for rebuilds\n\nSupport the ability to rebuild and redeploy without a clean. This\nrequired some force linking and man archive creation.\n\nProvide the ability to override the stripping of the shared lib for\ncases where a embedded target build may want to control stripping\nor provide cross arch tools.\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\nSigned-off-by: Stephan Mueller <smueller@chronox.de>\n[Retrieved from:\nhttps://github.com/smuellerDD/jitterentropy-library/commit/060b9b4147f6e5ff386a8b017796118d783e59fa]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile | 10 ++++++----\n 1 file changed, 6 insertions(+), 4 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 4ff069b..2e78607 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -14,6 +14,8 @@ LIBDIR := lib\n # include target directory\n INCDIR := include\n \n+INSTALL_STRIP ?= install -s\n+\n NAME := jitterentropy\n LIBMAJOR=$(shell cat jitterentropy-base.c | grep define | grep MAJVERSION | awk '{print $$3}')\n LIBMINOR=$(shell cat jitterentropy-base.c | grep define | grep MINVERSION | awk '{print $$3}')\n@@ -58,15 +60,15 @@ cppcheck:\n install:\n \tinstall -d -m 0755 $(DESTDIR)$(PREFIX)/share/man/man3\n \tinstall -m 644 doc/$(NAME).3 $(DESTDIR)$(PREFIX)/share/man/man3/\n-\tgzip -9 $(DESTDIR)$(PREFIX)/share/man/man3/$(NAME).3\n+\tgzip -f -9 $(DESTDIR)$(PREFIX)/share/man/man3/$(NAME).3\n \tinstall -d -m 0755 $(DESTDIR)$(PREFIX)/$(LIBDIR)\n-\tinstall -m 0755 -s lib$(NAME).so.$(LIBVERSION) $(DESTDIR)$(PREFIX)/$(LIBDIR)/\n+\t$(INSTALL_STRIP) -m 0755 lib$(NAME).so.$(LIBVERSION) $(DESTDIR)$(PREFIX)/$(LIBDIR)/\n \tinstall -d -m 0755 $(DESTDIR)$(PREFIX)/$(INCDIR)\n \tinstall -m 0644 jitterentropy.h $(DESTDIR)$(PREFIX)/$(INCDIR)/\n \tinstall -m 0644 jitterentropy-base-user.h $(DESTDIR)$(PREFIX)/$(INCDIR)/\n \t$(RM) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so.$(LIBMAJOR)\n-\tln -s lib$(NAME).so.$(LIBVERSION) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so.$(LIBMAJOR)\n-\tln -s lib$(NAME).so.$(LIBMAJOR) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so\n+\tln -sf lib$(NAME).so.$(LIBVERSION) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so.$(LIBMAJOR)\n+\tln -sf lib$(NAME).so.$(LIBMAJOR) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so\n \n clean:\n \t@- $(RM) $(NAME)\n"
  },
  {
    "path": "package/jitterentropy-library/0002-Makefile-add-additional-install-targets.patch",
    "content": "From d545d76cb3173cc98e1421604929248f2d882821 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 24 Oct 2019 18:48:47 +0200\nSubject: [PATCH] Makefile: add additional install targets\n\nAdd install-includes, install-man, install-shared and install-static\ntargets to allow the user to configure what must be installed\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://github.com/smuellerDD/jitterentropy-library/pull/11]\n---\n Makefile | 18 ++++++++++++++----\n 1 file changed, 14 insertions(+), 4 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 2e78607..41bc4f7 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -57,19 +57,29 @@ scan: $(analyze_plists)\n cppcheck:\n \tcppcheck --force -q --enable=performance --enable=warning --enable=portability *.h *.c\n \n-install:\n+install: install-man install-shared install-includes\n+\n+install-man:\n \tinstall -d -m 0755 $(DESTDIR)$(PREFIX)/share/man/man3\n \tinstall -m 644 doc/$(NAME).3 $(DESTDIR)$(PREFIX)/share/man/man3/\n \tgzip -f -9 $(DESTDIR)$(PREFIX)/share/man/man3/$(NAME).3\n+\n+install-shared:\n \tinstall -d -m 0755 $(DESTDIR)$(PREFIX)/$(LIBDIR)\n \t$(INSTALL_STRIP) -m 0755 lib$(NAME).so.$(LIBVERSION) $(DESTDIR)$(PREFIX)/$(LIBDIR)/\n-\tinstall -d -m 0755 $(DESTDIR)$(PREFIX)/$(INCDIR)\n-\tinstall -m 0644 jitterentropy.h $(DESTDIR)$(PREFIX)/$(INCDIR)/\n-\tinstall -m 0644 jitterentropy-base-user.h $(DESTDIR)$(PREFIX)/$(INCDIR)/\n \t$(RM) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so.$(LIBMAJOR)\n \tln -sf lib$(NAME).so.$(LIBVERSION) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so.$(LIBMAJOR)\n \tln -sf lib$(NAME).so.$(LIBMAJOR) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so\n \n+install-includes:\n+\tinstall -d -m 0755 $(DESTDIR)$(PREFIX)/$(INCDIR)\n+\tinstall -m 0644 jitterentropy.h $(DESTDIR)$(PREFIX)/$(INCDIR)/\n+\tinstall -m 0644 jitterentropy-base-user.h $(DESTDIR)$(PREFIX)/$(INCDIR)/\n+\n+install-static:\n+\tinstall -d -m 0755 $(DESTDIR)$(PREFIX)/$(LIBDIR)\n+\tinstall -m 0755 lib$(NAME).a $(DESTDIR)$(PREFIX)/$(LIBDIR)/\n+\n clean:\n \t@- $(RM) $(NAME)\n \t@- $(RM) $(OBJS)\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/jitterentropy-library/0003-Makefile-allow-the-user-to-disable-stack-protector.patch",
    "content": "From 37e8a6a7e5875e20a8de07fbfbb69912f1964f7d Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 28 Oct 2019 09:47:49 +0100\nSubject: [PATCH] Makefile: allow the user to disable stack protector\n\nAllow the user to disable stack-protector by overriding CFLAGS as it is\nnot supported by all toolchains.\n\nFixes:\n - http://autobuild.buildroot.net/results/cba1ae830c7a4d1740098fe67aec59b4dc2f9a03\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/smuellerDD/jitterentropy-library/pull/12]\n---\n Makefile | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 41bc4f7..b0f20e2 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1,9 +1,9 @@\n # Compile Noise Source as user space application\n \n CC ?= gcc\n-CFLAGS +=-Wextra -Wall -pedantic -fPIC -O0\n #Hardening\n-CFLAGS +=-fstack-protector-all -fwrapv --param ssp-buffer-size=4\n+CFLAGS ?=-fstack-protector-all --param ssp-buffer-size=4\n+CFLAGS +=-Wextra -Wall -pedantic -fPIC -O0 -fwrapv\n LDFLAGS +=-Wl,-z,relro,-z,now\n \n # Change as necessary\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/jitterentropy-library/Config.in",
    "content": "config BR2_PACKAGE_JITTERENTROPY_LIBRARY\n\tbool \"libjitterentropy\"\n\thelp\n\t  Hardware RNG based on CPU timing jitter.\n\n\t  https://github.com/smuellerDD/jitterentropy-library\n"
  },
  {
    "path": "package/jitterentropy-library/jitterentropy-library.hash",
    "content": "# Locally computed\nsha256\t42d4bd1050b5f0d7b45b5453e5b6cfc45c0492bb428791f571d8f69b066351a4  jitterentropy-library-2.2.0.tar.gz\nsha256\t96b5a6b49aaeeba9036f9b80e6e299d613a8eca158741a25a67dc78792413e23  COPYING\nsha256\t13aa749a5b0a454917a944ed8fffc530b784f5ead522b1aacaf4ec8aa55a6239  COPYING.bsd\nsha256\te6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING.gplv2\n"
  },
  {
    "path": "package/jitterentropy-library/jitterentropy-library.mk",
    "content": "################################################################################\n#\n# jitterentropy-library\n#\n################################################################################\n\nJITTERENTROPY_LIBRARY_VERSION = 2.2.0\nJITTERENTROPY_LIBRARY_SITE = $(call github,smuellerDD,$(JITTERENTROPY_LIBRARY_NAME),v$(JITTERENTROPY_LIBRARY_VERSION))\nJITTERENTROPY_LIBRARY_LICENSE = GPL-2.0 or BSD-3-Clause\nJITTERENTROPY_LIBRARY_LICENSE_FILES = COPYING COPYING.bsd COPYING.gplv2\nJITTERENTROPY_LIBRARY_INSTALL_STAGING = YES\nJITTERENTROPY_LIBRARY_INSTALL_TARGETS = install-includes\nJITTERENTROPY_LIBRARY_SELINUX_MODULES = entropyd\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nJITTERENTROPY_LIBRARY_BUILD_TARGETS += jitterentropy-static\nJITTERENTROPY_LIBRARY_INSTALL_TARGETS += install-static\nendif\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nJITTERENTROPY_LIBRARY_BUILD_TARGETS += jitterentropy\nJITTERENTROPY_LIBRARY_INSTALL_TARGETS += install-shared\nendif\n\ndefine JITTERENTROPY_LIBRARY_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(JITTERENTROPY_LIBRARY_BUILD_TARGETS)\nendef\n\ndefine JITTERENTROPY_LIBRARY_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) \\\n\t\tINSTALL_STRIP=\"install\" PREFIX=/usr \\\n\t\t$(JITTERENTROPY_LIBRARY_INSTALL_TARGETS)\nendef\n\ndefine JITTERENTROPY_LIBRARY_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \\\n\t\tINSTALL_STRIP=\"install\" PREFIX=/usr \\\n\t\t$(JITTERENTROPY_LIBRARY_INSTALL_TARGETS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/jo/Config.in",
    "content": "config BR2_PACKAGE_JO\n\tbool \"jo\"\n\thelp\n\t  Command-line processor to output JSON from a shell\n\n\t  https://github.com/jpmens/jo\n"
  },
  {
    "path": "package/jo/jo.hash",
    "content": "# Locally computed\nsha256  24c64d2eb863900947f58f32b502c95fec8f086105fd31151b91f54b7b5256a2  jo-1.4.tar.gz\nsha256  41d8b23dc6e76731f4920b9ce42d0d4a248d243a510319e2441d174a115f35cf  COPYING\n"
  },
  {
    "path": "package/jo/jo.mk",
    "content": "################################################################################\n#\n# jo\n#\n################################################################################\n\nJO_VERSION = 1.4\nJO_SITE = https://github.com/jpmens/jo/releases/download/$(JO_VERSION)\nJO_LICENSE = MIT (json.[ch]), GPL-2.0+ (rest)\nJO_LICENSE_FILES = COPYING\n# don't build man pages\nJO_CONF_ENV = ac_cv_path_PANDOC=''\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/joe/Config.in",
    "content": "config BR2_PACKAGE_JOE\n\tbool \"joe\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Joe's Own Editor\n\n\t  JOE is an easy-to-use, full featured terminal-based screen\n\t  editor. Its behavior is a blending of WordStar and GNU-EMACS\n\t  (but it does not use code from either program).\n\t  It is a great editor for new users or as an alternative to vi.\n\n\t  http://joe-editor.sf.net\n\nconfig BR2_PACKAGE_JOE_FULL\n\tbool \"full install of rc and syntax highlighting files\"\n\tdefault y\n\tdepends on BR2_PACKAGE_JOE\n\thelp\n\t  Install all rc and syntax highlighting files. Without this\n\t  option only the joe binary is installed, which contains a\n\t  default configuration.\n"
  },
  {
    "path": "package/joe/joe.hash",
    "content": "# From https://sourceforge.net/projects/joe-editor/files/JOE%20sources/joe-4.6/\nsha1 da7712333f676cfb5ae9f3565fd2225c5a2185ca  joe-4.6.tar.gz\nmd5 9017484e6116830d846678b625ea5c43  joe-4.6.tar.gz\n# Locally computed:\nsha256 495a0a61f26404070fe8a719d80406dc7f337623788e445b92a9f6de512ab9de  joe-4.6.tar.gz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/joe/joe.mk",
    "content": "################################################################################\n#\n# joe\n#\n################################################################################\n\nJOE_VERSION = 4.6\nJOE_SITE = http://downloads.sourceforge.net/project/joe-editor/JOE%20sources/joe-$(JOE_VERSION)\nJOE_LICENSE = GPL-2.0+\nJOE_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nJOE_DEPENDENCIES += ncurses\nJOE_CONF_OPTS += --enable-curses\nelse\nJOE_CONF_OPTS += --disable-curses\nendif\n\nifneq ($(BR2_PACKAGE_JOE_FULL),y)\ndefine JOE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/joe/joe $(TARGET_DIR)/usr/bin/joe\nendef\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/jose/0001-lib-hsh.c-rename-hsh-local-variable.patch",
    "content": "From 591fc6da944ffc29936e0019b2bc225ddc81dbba Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Mon, 20 Nov 2017 22:48:33 +0100\nSubject: [PATCH] lib/hsh.c: rename hsh local variable\n\nThe hsh local variable name conflicts with the function prototype of\nhsh() in hsh.h, causing the following build issues with old compilers\n(gcc 4.7):\n\nhsh.c: In function 'hsh':\nhsh.c:28:21: error: declaration of 'hsh' shadows a global declaration [-Werror=shadow]\nhsh.c:26:1: error: shadowed declaration is here [-Werror=shadow]\nhsh.c: In function 'hsh_buf':\nhsh.c:60:21: error: declaration of 'hsh' shadows a global declaration [-Werror=shadow]\nhsh.c:26:1: error: shadowed declaration is here [-Werror=shadow]\n\nTherefore, we rename this local variable to _hsh.\n\nSubmitted-upstream: https://github.com/latchset/jose/pull/51\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n lib/hsh.c | 12 ++++++------\n 1 file changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/lib/hsh.c b/lib/hsh.c\nindex c59a95f..a2a891b 100644\n--- a/lib/hsh.c\n+++ b/lib/hsh.c\n@@ -25,7 +25,7 @@\n json_t *\n hsh(jose_cfg_t *cfg, const char *alg, const void *data, size_t dlen)\n {\n-    jose_io_auto_t *hsh = NULL;\n+    jose_io_auto_t *_hsh = NULL;\n     jose_io_auto_t *enc = NULL;\n     jose_io_auto_t *buf = NULL;\n     char b[1024] = {};\n@@ -33,8 +33,8 @@ hsh(jose_cfg_t *cfg, const char *alg, const void *data, size_t dlen)\n \n     buf = jose_io_buffer(cfg, b, &l);\n     enc = jose_b64_enc_io(buf);\n-    hsh = hsh_io(cfg, alg, enc);\n-    if (!buf || !enc || !hsh || !hsh->feed(hsh, data, dlen) || !hsh->done(hsh))\n+    _hsh = hsh_io(cfg, alg, enc);\n+    if (!buf || !enc || !_hsh || !_hsh->feed(_hsh, data, dlen) || !_hsh->done(_hsh))\n         return NULL;\n \n     return json_stringn(b, l);\n@@ -57,7 +57,7 @@ hsh_buf(jose_cfg_t *cfg, const char *alg,\n         const void *data, size_t dlen, void *hash, size_t hlen)\n {\n     const jose_hook_alg_t *a = NULL;\n-    jose_io_auto_t *hsh = NULL;\n+    jose_io_auto_t *_hsh = NULL;\n     jose_io_auto_t *buf = NULL;\n \n     a = jose_hook_alg_find(JOSE_HOOK_ALG_KIND_HASH, alg);\n@@ -71,8 +71,8 @@ hsh_buf(jose_cfg_t *cfg, const char *alg,\n         return SIZE_MAX;\n \n     buf = jose_io_buffer(cfg, hash, &hlen);\n-    hsh = a->hash.hsh(a, cfg, buf);\n-    if (!buf || !hsh || !hsh->feed(hsh, data, dlen) || !hsh->done(hsh))\n+    _hsh = a->hash.hsh(a, cfg, buf);\n+    if (!buf || !_hsh || !_hsh->feed(_hsh, data, dlen) || !_hsh->done(_hsh))\n         return SIZE_MAX;\n \n     return hlen;\n-- \n2.13.6\n\n"
  },
  {
    "path": "package/jose/0002-configure-fix-build-with-old-compilers.patch",
    "content": "From 98e9faa4d39cd5b6aaab882877e19ae394ba3810 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Mon, 20 Nov 2017 23:10:38 +0100\nSubject: [PATCH] configure: fix build with old compilers\n\nOld gcc versions (gcc 4.7) do not support all warnings flags currently\nhard-coded by configure.ac. In order to fix this, we import the\nAX_CHECK_COMPILE_FLAG() macro from the autoconf-archive, and use it in\nthe configure.ac to only use warning flags when the compiler supports\nthem.\n\nSubmitted-upstream: https://github.com/latchset/jose/pull/51\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.ac                | 46 +++++++++++++++-------------\n m4/ax_check_compile_flag.m4 | 74 +++++++++++++++++++++++++++++++++++++++++++++\n 3 files changed, 105 insertions(+), 22 deletions(-)\n create mode 100644 m4/ax_check_compile_flag.m4\n\ndiff --git a/configure.ac b/configure.ac\nindex cf8c9a6..6fe4ded 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1,5 +1,6 @@\n AC_PREREQ(2.62)\n AC_INIT(jose, 10)\n+AC_CONFIG_MACRO_DIRS([m4])\n AC_CANONICAL_SYSTEM\n AC_PROG_CC_C99\n \n@@ -18,27 +19,30 @@ PKG_CHECK_MODULES([libcrypto], [libcrypto >= 1.0.2])\n AC_OPENMP\n AC_SUBST([OPENMP_CFLAGS])\n \n-JOSE_CFLAGS=\"\\\n--Wall \\\n--Wextra \\\n--Werror \\\n--Wstrict-aliasing \\\n--Wchar-subscripts \\\n--Wformat-security \\\n--Wmissing-declarations \\\n--Wmissing-prototypes \\\n--Wnested-externs \\\n--Wpointer-arith \\\n--Wshadow \\\n--Wsign-compare \\\n--Wstrict-prototypes \\\n--Wtype-limits \\\n--Wunused-function \\\n--Wno-missing-field-initializers \\\n--Wno-unused-command-line-argument \\\n--Wno-unused-parameter \\\n--Wno-unknown-pragmas \\\n-\"\n+for flag in \\\n+    -Wall \\\n+    -Wextra \\\n+    -Werror \\\n+    -Wstrict-aliasing \\\n+    -Wchar-subscripts \\\n+    -Wformat-security \\\n+    -Wmissing-declarations \\\n+    -Wmissing-prototypes \\\n+    -Wnested-externs \\\n+    -Wpointer-arith \\\n+    -Wshadow \\\n+    -Wsign-compare \\\n+    -Wstrict-prototypes \\\n+    -Wtype-limits \\\n+    -Wunused-function \\\n+    -Wno-missing-field-initializers \\\n+    -Wno-unused-command-line-argument \\\n+    -Wno-unused-parameter \\\n+    -Wno-unknown-pragmas ; do\n+    AX_CHECK_COMPILE_FLAG([${flag}],\n+\t\t[JOSE_CFLAGS=\"${JOSE_CFLAGS} ${flag}\"])\n+done\n+\n AC_SUBST([JOSE_CFLAGS])\n \n AC_MSG_CHECKING([for linker script support])\ndiff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4\nnew file mode 100644\nindex 0000000..dcabb92\n--- /dev/null\n+++ b/m4/ax_check_compile_flag.m4\n@@ -0,0 +1,74 @@\n+# ===========================================================================\n+#  https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html\n+# ===========================================================================\n+#\n+# SYNOPSIS\n+#\n+#   AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])\n+#\n+# DESCRIPTION\n+#\n+#   Check whether the given FLAG works with the current language's compiler\n+#   or gives an error.  (Warnings, however, are ignored)\n+#\n+#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on\n+#   success/failure.\n+#\n+#   If EXTRA-FLAGS is defined, it is added to the current language's default\n+#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with\n+#   the flags: \"CFLAGS EXTRA-FLAGS FLAG\".  This can for example be used to\n+#   force the compiler to issue an error when a bad flag is given.\n+#\n+#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.\n+#\n+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this\n+#   macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.\n+#\n+# LICENSE\n+#\n+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>\n+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>\n+#\n+#   This program is free software: you can redistribute it and/or modify it\n+#   under the terms of the GNU General Public License as published by the\n+#   Free Software Foundation, either version 3 of the License, or (at your\n+#   option) any later version.\n+#\n+#   This program is distributed in the hope that it will be useful, but\n+#   WITHOUT ANY WARRANTY; without even the implied warranty of\n+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\n+#   Public License for more details.\n+#\n+#   You should have received a copy of the GNU General Public License along\n+#   with this program. If not, see <https://www.gnu.org/licenses/>.\n+#\n+#   As a special exception, the respective Autoconf Macro's copyright owner\n+#   gives unlimited permission to copy, distribute and modify the configure\n+#   scripts that are the output of Autoconf when processing the Macro. You\n+#   need not follow the terms of the GNU General Public License when using\n+#   or distributing such scripts, even though portions of the text of the\n+#   Macro appear in them. The GNU General Public License (GPL) does govern\n+#   all other use of the material that constitutes the Autoconf Macro.\n+#\n+#   This special exception to the GPL applies to versions of the Autoconf\n+#   Macro released by the Autoconf Archive. When you make and distribute a\n+#   modified version of the Autoconf Macro, you may extend this special\n+#   exception to the GPL to apply to your modified version as well.\n+\n+#serial 5\n+\n+AC_DEFUN([AX_CHECK_COMPILE_FLAG],\n+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF\n+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl\n+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [\n+  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS\n+  _AC_LANG_PREFIX[]FLAGS=\"$[]_AC_LANG_PREFIX[]FLAGS $4 $1\"\n+  AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],\n+    [AS_VAR_SET(CACHEVAR,[yes])],\n+    [AS_VAR_SET(CACHEVAR,[no])])\n+  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])\n+AS_VAR_IF(CACHEVAR,yes,\n+  [m4_default([$2], :)],\n+  [m4_default([$3], :)])\n+AS_VAR_POPDEF([CACHEVAR])dnl\n+])dnl AX_CHECK_COMPILE_FLAGS\n-- \n2.13.6\n\n"
  },
  {
    "path": "package/jose/Config.in",
    "content": "config BR2_PACKAGE_JOSE\n\tbool \"jose\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_JANSSON\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  C-language implementation of Javascript Object Signing and\n\t  Encryption.\n\n\t  https://github.com/latchset/jose\n\ncomment \"jose needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/jose/jose.hash",
    "content": "# Locally computed\nsha256 5c9cdcfb535c4d9f781393d7530521c72b1dd81caa9934cab6dd752cc7efcd72  jose-10.tar.bz2\nsha256 09e8a9bcec8067104652c168685ab0931e7868f9c8284b66f5ae6edae5f1130b  COPYING\n"
  },
  {
    "path": "package/jose/jose.mk",
    "content": "################################################################################\n#\n# jose\n#\n################################################################################\n\nJOSE_VERSION = 10\nJOSE_SOURCE = jose-$(JOSE_VERSION).tar.bz2\nJOSE_SITE = https://github.com/latchset/jose/releases/download/v$(JOSE_VERSION)\nJOSE_LICENSE = Apache-2.0\nJOSE_LICENSE_FILES = COPYING\n# 0002-configure-fix-build-with-old-compilers.patch\nJOSE_AUTORECONF = YES\nJOSE_INSTALL_STAGING = YES\nJOSE_DEPENDENCIES = host-pkgconf zlib jansson openssl\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/jpeg/Config.in",
    "content": "# jpeg-turbo has simd support for some architectures\nconfig BR2_PACKAGE_JPEG_SIMD_SUPPORT\n\tbool\n\tdefault y if BR2_X86_CPU_HAS_MMX\n\tdefault y if BR2_ARM_CPU_HAS_NEON\n\tdefault y if BR2_POWERPC_CPU_HAS_ALTIVEC\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\nconfig BR2_PACKAGE_JPEG\n\tbool \"jpeg support\"\n\thelp\n\t  Select the desired JPEG library provider.\n\nif BR2_PACKAGE_JPEG\n\nchoice\n\tprompt \"jpeg variant\"\n\tdefault BR2_PACKAGE_JPEG_TURBO if BR2_PACKAGE_JPEG_SIMD_SUPPORT\n\thelp\n\t  Select the normal libjpeg or libjpeg-turbo.\n\nconfig BR2_PACKAGE_LIBJPEG\n\tbool \"jpeg\"\n\tselect BR2_PACKAGE_HAS_JPEG\n\thelp\n\t  The ubiquitous C library for manipulating JPEG images.\n\n\t  http://www.ijg.org/\n\nconfig BR2_PACKAGE_JPEG_TURBO\n\tbool \"jpeg-turbo\"\n\tselect BR2_PACKAGE_HAS_JPEG\n\thelp\n\t  Libjpeg-turbo is a derivative of libjpeg that uses SIMD\n\t  instructions (MMX, SSE2, NEON) to accelerate baseline JPEG\n\t  compression and decompression on x86, x86-64, and ARM\n\t  systems.\n\n\t  http://www.libjpeg-turbo.org\n\n# libjpeg from br2-external trees, if any\nsource \"$BR2_BASE_DIR/.br2-external.in.jpeg\"\n\nendchoice\n\nsource \"package/jpeg-turbo/Config.in.options\"\n\nconfig BR2_PACKAGE_HAS_JPEG\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_JPEG\n\tstring\n\tdefault \"libjpeg\"    if BR2_PACKAGE_LIBJPEG\n\tdefault \"jpeg-turbo\" if BR2_PACKAGE_JPEG_TURBO\n\nendif\n"
  },
  {
    "path": "package/jpeg/jpeg.mk",
    "content": "################################################################################\n#\n# jpeg\n#\n################################################################################\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "package/jpeg-turbo/Config.in.options",
    "content": "if BR2_PACKAGE_JPEG_TURBO\n\nconfig BR2_PACKAGE_JPEG_TURBO_TOOLS\n\tbool \"jpeg-turbo tools\"\n\thelp\n\t  Libjpeg-turbo can also provide some tools like cjpeg,\n\t  djpeg, jpegtran, rdjpgcom, tjbench and wrjpgcom.\n\n\t  If you want to keep them enable this option.\n\nendif\n"
  },
  {
    "path": "package/jpeg-turbo/jpeg-turbo.hash",
    "content": "# From https://sourceforge.net/projects/libjpeg-turbo/files/2.0.6/\nsha1  5406c7676d7df89fb4da791ad5af51202910fb25  libjpeg-turbo-2.0.6.tar.gz\nmd5  4cada3f0bdc93d826fa31bf9e4469ef6  libjpeg-turbo-2.0.6.tar.gz\n# Locally computed\nsha256  d74b92ac33b0e3657123ddcf6728788c90dc84dcb6a52013d758af3c4af481bb  libjpeg-turbo-2.0.6.tar.gz\nsha256  0b7a24c3906d26dfbe24e96e9415549b387c3227140dc6b7ab2fb924254e37a1  LICENSE.md\nsha256  01ccef626ec864773c681d4a4056f72af9052d619e0609df0d369117f8b3efdf  README.ijg\n"
  },
  {
    "path": "package/jpeg-turbo/jpeg-turbo.mk",
    "content": "################################################################################\n#\n# jpeg-turbo\n#\n################################################################################\n\nJPEG_TURBO_VERSION = 2.0.6\nJPEG_TURBO_SOURCE = libjpeg-turbo-$(JPEG_TURBO_VERSION).tar.gz\nJPEG_TURBO_SITE = https://downloads.sourceforge.net/project/libjpeg-turbo/$(JPEG_TURBO_VERSION)\nJPEG_TURBO_LICENSE = IJG (libjpeg), BSD-3-Clause (TurboJPEG), Zlib (SIMD)\nJPEG_TURBO_LICENSE_FILES = LICENSE.md README.ijg\nJPEG_TURBO_CPE_ID_VENDOR = libjpeg-turbo\nJPEG_TURBO_CPE_ID_PRODUCT = libjpeg-turbo\nJPEG_TURBO_INSTALL_STAGING = YES\nJPEG_TURBO_PROVIDES = jpeg\nJPEG_TURBO_DEPENDENCIES = host-pkgconf\n\nJPEG_TURBO_CONF_OPTS = -DWITH_JPEG8=ON\n\nifeq ($(BR2_STATIC_LIBS),y)\nJPEG_TURBO_CONF_OPTS += -DENABLE_STATIC=ON -DENABLE_SHARED=OFF\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nJPEG_TURBO_CONF_OPTS += -DENABLE_STATIC=ON -DENABLE_SHARED=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nJPEG_TURBO_CONF_OPTS += -DENABLE_STATIC=OFF -DENABLE_SHARED=ON\nendif\n\nifeq ($(BR2_PACKAGE_JPEG_SIMD_SUPPORT),y)\nJPEG_TURBO_CONF_OPTS += -DWITH_SIMD=ON\n# x86 simd support needs nasm\nJPEG_TURBO_DEPENDENCIES += $(if $(BR2_X86_CPU_HAS_MMX),host-nasm)\nelse\nJPEG_TURBO_CONF_OPTS += -DWITH_SIMD=OFF\nendif\n\n# Ensure that jpeg-turbo is compiled with -fPIC to allow linking the static\n# libraries with dynamically linked programs. This is not a requirement\n# for most architectures but is mandatory for ARM.\n# This allow to avoid link issues with BR2_SSP_ALL:\n# jsimd_none.c.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against external symbol `__stack_chk_guard@@GLIBC_2.17'\n# can not be used when making a shared object; recompile with -fPIC\nifeq ($(BR2_STATIC_LIBS),)\nJPEG_TURBO_CONF_OPTS += -DCMAKE_POSITION_INDEPENDENT_CODE=ON\nendif\n\nifeq ($(BR2_PACKAGE_JPEG_TURBO_TOOLS),)\ndefine JPEG_TURBO_REMOVE_TOOLS\n\trm -f $(addprefix $(TARGET_DIR)/usr/bin/,cjpeg djpeg jpegtran rdjpgcom tjbench wrjpgcom)\nendef\nJPEG_TURBO_POST_INSTALL_TARGET_HOOKS += JPEG_TURBO_REMOVE_TOOLS\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/jq/Config.in",
    "content": "config BR2_PACKAGE_JQ\n\tbool \"jq\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  jq is like sed for JSON data - you can use it to slice and\n\t  filter and map and transform structured data with the same\n\t  ease that sed, awk, grep and friends let you play with text.\n\n\t  http://stedolan.github.io/jq/\n\ncomment \"jq needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/jq/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_JQ\n\tbool \"host jq\"\n\thelp\n\t  jq is like sed for JSON data - you can use it to slice and\n\t  filter and map and transform structured data with the same\n\t  ease that sed, awk, grep and friends let you play with text.\n\n\t  As a host tool, jq can be useful to create/edit/merge/check\n\t  JSON files from a post-build script.\n\n\t  http://stedolan.github.io/jq/\n"
  },
  {
    "path": "package/jq/jq.hash",
    "content": "# Locally calculated\nsha256  20249104d4df2247253df6df4a980b8be1f5232f03fef7cd41bacb7e6eab04fd  jq-a17dd3248a666d01be75f6b16be37e80e20b0954.tar.gz\nsha256  c8437d414ca5b394718784c3bf5bdff7f01fee417625fabf1fb722ca263037da  COPYING\n"
  },
  {
    "path": "package/jq/jq.mk",
    "content": "################################################################################\n#\n# jq\n#\n################################################################################\n\nJQ_VERSION = a17dd3248a666d01be75f6b16be37e80e20b0954\nJQ_SITE = $(call github,stedolan,jq,$(JQ_VERSION))\nJQ_LICENSE = MIT (code), ICU (decNumber), CC-BY-3.0 (documentation)\nJQ_LICENSE_FILES = COPYING\nJQ_CPE_ID_VENDOR = jq_project\nJQ_INSTALL_STAGING = YES\n\n# currently using git version directly\nJQ_AUTORECONF = YES\n\n# uses c99 specific features\n# _GNU_SOURCE added to fix gcc6+ host compilation\n# (https://github.com/stedolan/jq/issues/1598)\nJQ_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -std=c99 -D_GNU_SOURCE\"\nHOST_JQ_CONF_ENV += CFLAGS=\"$(HOST_CFLAGS) -std=c99 -D_GNU_SOURCE\"\n\n# jq explicitly enables maintainer mode, which we don't need/want\nJQ_CONF_OPTS += --disable-maintainer-mode\nHOST_JQ_CONF_OPTS += --disable-maintainer-mode --without-oniguruma\n\nifeq ($(BR2_PACKAGE_ONIGURUMA),y)\nJQ_DEPENDENCIES += oniguruma\nJQ_CONF_OPTS += --with-oniguruma\nelse\nJQ_CONF_OPTS += --without-oniguruma\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/jquery/Config.in",
    "content": "config BR2_PACKAGE_JQUERY\n\tbool \"jQuery\"\n\thelp\n\t  jQuery is a fast and concise JavaScript Library that\n\t  simplifies HTML document traversing, event handling,\n\t  animating, and Ajax interactions for rapid web development.\n\n\t  http://jquery.com\n"
  },
  {
    "path": "package/jquery/jquery.hash",
    "content": "# Locally computed hashes, not provided by upstream\nsha256  f7f6a5894f1d19ddad6fa392b2ece2c5e578cbf7da4ea805b6885eb6985b6e3d\tjquery-3.5.1.min.js\n"
  },
  {
    "path": "package/jquery/jquery.mk",
    "content": "################################################################################\n#\n# jquery\n#\n################################################################################\n\nJQUERY_VERSION = 3.5.1\nJQUERY_SITE = http://code.jquery.com\nJQUERY_SOURCE = jquery-$(JQUERY_VERSION).min.js\nJQUERY_LICENSE = MIT\nJQUERY_CPE_ID_VENDOR = jquery\n\ndefine JQUERY_EXTRACT_CMDS\n\tcp $(JQUERY_DL_DIR)/$(JQUERY_SOURCE) $(@D)\nendef\n\ndefine JQUERY_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/$(JQUERY_SOURCE) \\\n\t\t$(TARGET_DIR)/var/www/jquery.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/jquery-datetimepicker/Config.in",
    "content": "config BR2_PACKAGE_JQUERY_DATETIMEPICKER\n\tbool \"jquery-datetimepicker\"\n\thelp\n\t  Use this plugin to unobtrusively add a datetimepicker,\n\t  datepicker or timepicker dropdown to your forms.\n\n\t  http://xdsoft.net/jqplugins/datetimepicker\n"
  },
  {
    "path": "package/jquery-datetimepicker/jquery-datetimepicker.hash",
    "content": "# Locally calculated\nsha256  2f362a8acd149d1487a9460942f135d1037f01ee0cbfecba8c352fa2f79c34c9  jquery-datetimepicker-2.4.5.tar.gz\nsha256  491add640b4678b78571d3b4c0840422b48a5b397e47e2104c1942ff1fce1a68  MIT-LICENSE.txt\n"
  },
  {
    "path": "package/jquery-datetimepicker/jquery-datetimepicker.mk",
    "content": "################################################################################\n#\n# jquery-datetimepicker\n#\n################################################################################\n\nJQUERY_DATETIMEPICKER_VERSION = 2.4.5\nJQUERY_DATETIMEPICKER_SITE = $(call github,xdan,datetimepicker,$(JQUERY_DATETIMEPICKER_VERSION))\nJQUERY_DATETIMEPICKER_LICENSE = MIT\nJQUERY_DATETIMEPICKER_LICENSE_FILES = MIT-LICENSE.txt\n\ndefine JQUERY_DATETIMEPICKER_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/jquery.datetimepicker.css \\\n\t\t$(TARGET_DIR)/var/www/jquery-plugins/datetimepicker/jquery.datetimepicker.css\n\t$(INSTALL) -m 0644 -D $(@D)/jquery.datetimepicker.js \\\n\t\t$(TARGET_DIR)/var/www/jquery-plugins/datetimepicker/jquery.datetimepicker.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/jquery-keyboard/Config.in",
    "content": "config BR2_PACKAGE_JQUERY_KEYBOARD\n\tbool \"jquery-keyboard\"\n\tselect BR2_PACKAGE_JQUERY_UI\n\thelp\n\t  Virtual Keyboard using jQuery UI\n\n\t  https://github.com/Mottie/Keyboard\n"
  },
  {
    "path": "package/jquery-keyboard/jquery-keyboard.hash",
    "content": "# Locally calculated\nsha256  6a20a1cdc9367c218048125eeb6f78d775175a964b3b9b781a931b63c0f98c66  jquery-keyboard-1.18.12.tar.gz\nsha256  0ad9a0e7291b45cdb5abe2a517d8b82282a816d41c9224660849792ce01fe983  README.markdown\n"
  },
  {
    "path": "package/jquery-keyboard/jquery-keyboard.mk",
    "content": "################################################################################\n#\n# jquery-keyboard\n#\n################################################################################\n\nJQUERY_KEYBOARD_VERSION = 1.18.12\nJQUERY_KEYBOARD_SITE = $(call github,Mottie,Keyboard,v$(JQUERY_KEYBOARD_VERSION))\nJQUERY_KEYBOARD_LICENSE = MIT WTFPL\nJQUERY_KEYBOARD_LICENSE_FILES = README.markdown\n\ndefine JQUERY_KEYBOARD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/css/keyboard.css \\\n\t\t$(TARGET_DIR)/var/www/css/keyboard.css\n\t$(INSTALL) -m 0644 $(@D)/js/jquery.keyboard*.js \\\n\t\t$(TARGET_DIR)/var/www\n\t$(INSTALL) -m 0644 -D $(@D)/js/jquery.mousewheel.js \\\n\t\t$(TARGET_DIR)/var/www/jquery.mousewheel.js\n\t$(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/layouts\n\t$(INSTALL) -m 0644 $(@D)/layouts/*.js \\\n\t\t$(TARGET_DIR)/var/www/layouts\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/jquery-mobile/Config.in",
    "content": "config BR2_PACKAGE_JQUERY_MOBILE\n\tbool \"jquery-mobile\"\n\thelp\n\t  jQuery-Mobile is a unified, HTML5-based user interface\n\t  system for all popular mobile device platforms, built on the\n\t  rock-solid jQuery and jQuery UI foundation. Its lightweight\n\t  code is built with progressive enhancement, and has a\n\t  flexible, easily themeable design.\n\n\t  http://jquerymobile.com\n\nif BR2_PACKAGE_JQUERY_MOBILE\n\nconfig BR2_PACKAGE_JQUERY_MOBILE_FULL\n\tbool \"jquery-mobile development files\"\n\thelp\n\t  Installs the development versions.\n\nconfig BR2_PACKAGE_JQUERY_MOBILE_DEMOS\n\tbool \"jquery-mobile demo files\"\n\thelp\n\t  Installs the demo files.\n\t  The main demo page is http://hostname/demos/index.html\n\nendif\n"
  },
  {
    "path": "package/jquery-mobile/jquery-mobile.hash",
    "content": "# locally computed\nsha256  7ed156b191dc3e262e3f450aede43adfb738ff0085afed87eb18fe4f43dfc681  jquery.mobile-1.4.3.zip\n"
  },
  {
    "path": "package/jquery-mobile/jquery-mobile.mk",
    "content": "################################################################################\n#\n# jquery-mobile\n#\n################################################################################\n\nJQUERY_MOBILE_VERSION = 1.4.3\nJQUERY_MOBILE_SITE = http://jquerymobile.com/resources/download\nJQUERY_MOBILE_SOURCE = jquery.mobile-$(JQUERY_MOBILE_VERSION).zip\nJQUERY_MOBILE_LICENSE = MIT\n\ndefine JQUERY_MOBILE_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(JQUERY_MOBILE_DL_DIR)/$(JQUERY_MOBILE_SOURCE)\nendef\n\nJQUERY_MOBILE_INSTALLED_FILES = \\\n\tjquery.mobile.structure-$(JQUERY_MOBILE_VERSION).min.css \\\n\tjquery.mobile.theme-$(JQUERY_MOBILE_VERSION).min.css \\\n\tjquery.mobile-$(JQUERY_MOBILE_VERSION).min.css \\\n\tjquery.mobile-$(JQUERY_MOBILE_VERSION).min.map \\\n\tjquery.mobile-$(JQUERY_MOBILE_VERSION).min.js\n\nifeq ($(BR2_PACKAGE_JQUERY_MOBILE_FULL),y)\nJQUERY_MOBILE_INSTALLED_FILES += \\\n\tjquery.mobile.structure-$(JQUERY_MOBILE_VERSION).css \\\n\tjquery.mobile.theme-$(JQUERY_MOBILE_VERSION).css \\\n\tjquery.mobile-$(JQUERY_MOBILE_VERSION).css \\\n\tjquery.mobile-$(JQUERY_MOBILE_VERSION).js\nendif\n\nifeq ($(BR2_PACKAGE_JQUERY_MOBILE_DEMOS),y)\ndefine JQUERY_MOBILE_INSTALL_DEMOS\n\tmkdir -p $(TARGET_DIR)/var/www/demos\n\tcp -r $(@D)/demos/* $(TARGET_DIR)/var/www/demos\nendef\nendif\n\ndefine JQUERY_MOBILE_INSTALL_TARGET_CMDS\n\tfor f in $(JQUERY_MOBILE_INSTALLED_FILES) ; do \\\n\t\t$(INSTALL) -m 0644 -D $(@D)/$$f $(TARGET_DIR)/var/www/$$f || break ; \\\n\tdone\n\tmkdir -p $(TARGET_DIR)/var/www/images\n\tcp -r $(@D)/images/* $(TARGET_DIR)/var/www/images\n\t$(JQUERY_MOBILE_INSTALL_DEMOS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/jquery-sidebar/Config.in",
    "content": "config BR2_PACKAGE_JQUERY_SIDEBAR\n\tbool \"jquery-sidebar\"\n\thelp\n\t  A stupid simple sidebar jQuery plugin.\n\n\t  http://jillix.github.io/jQuery-sidebar/\n"
  },
  {
    "path": "package/jquery-sidebar/jquery-sidebar.hash",
    "content": "# Locally computed\nsha256  c96e46439a87555f2200442f597cce64f21f81f94d7601ddfc3b837913ddb42f  jquery-sidebar-3.3.2.tar.gz\nsha256  f3522370f4b6accf9c1344f520bdea35f2388f1cbb124c0c179d2ca2a6a94c76  LICENSE\n"
  },
  {
    "path": "package/jquery-sidebar/jquery-sidebar.mk",
    "content": "################################################################################\n#\n# jquery-sidebar\n#\n################################################################################\n\nJQUERY_SIDEBAR_VERSION = 3.3.2\nJQUERY_SIDEBAR_SITE = $(call github,jillix,jQuery-sidebar,$(JQUERY_SIDEBAR_VERSION))\nJQUERY_SIDEBAR_LICENSE = MIT\nJQUERY_SIDEBAR_LICENSE_FILES = LICENSE\n\ndefine JQUERY_SIDEBAR_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/src/jquery.sidebar.min.js \\\n\t\t$(TARGET_DIR)/var/www/jquery-plugins/sidebar/jquery.sidebar.min.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/jquery-sparkline/Config.in",
    "content": "config BR2_PACKAGE_JQUERY_SPARKLINE\n\tbool \"jquery-sparkline\"\n\thelp\n\t  This jQuery plugin generates sparklines (small inline\n\t  charts) directly in the browser using data supplied either\n\t  inline in the HTML, or via javascript.\n\n\t  The plugin is compatible with most modern browsers and has\n\t  been tested with Firefox 2+, Safari 3+, Opera 9, Google\n\t  Chrome and Internet Explorer 6, 7 & 8.\n\n\t  http://www.omnipotent.net/jquery.sparkline/\n"
  },
  {
    "path": "package/jquery-sparkline/jquery-sparkline.hash",
    "content": "# locally computed\nsha256  06e0242da172ab85985db3774c54ac1b53391a5b447857a100c5118b8281a543  jquery.sparkline.min.js\n"
  },
  {
    "path": "package/jquery-sparkline/jquery-sparkline.mk",
    "content": "################################################################################\n#\n# jquery-sparkline\n#\n################################################################################\n\nJQUERY_SPARKLINE_VERSION = 2.1.2\nJQUERY_SPARKLINE_SITE = http://www.omnipotent.net/jquery.sparkline/$(JQUERY_SPARKLINE_VERSION)\nJQUERY_SPARKLINE_SOURCE = jquery.sparkline.min.js\nJQUERY_SPARKLINE_LICENSE = BSD-3-Clause\n\ndefine JQUERY_SPARKLINE_EXTRACT_CMDS\n\tcp $(JQUERY_SPARKLINE_DL_DIR)/$(JQUERY_SPARKLINE_SOURCE) $(@D)\nendef\n\ndefine JQUERY_SPARKLINE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/$(JQUERY_SPARKLINE_SOURCE) \\\n\t\t$(TARGET_DIR)/var/www/jquery.sparkline.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/jquery-ui/Config.in",
    "content": "config BR2_PACKAGE_JQUERY_UI\n\tbool \"jquery-ui\"\n\thelp\n\t  jQuery UI provides abstractions for low-level interaction and\n\t  animation, advanced effects and high-level, themeable widgets,\n\t  built on top of the jQuery JavaScript Library, that you can\n\t  use to build highly interactive web applications.\n\n\t  http://jqueryui.com/\n"
  },
  {
    "path": "package/jquery-ui/jquery-ui.hash",
    "content": "# locally computed\nsha256  c76f349930245360f4d1dea672b9a587f8938b536a378e20eeff919f7263f99f  jquery-ui-1.10.4.zip\nsha256  ef1fdd608b20fbea7ef269ed03bd24e637717cc193971798a394bf2fa983cd53  MIT-LICENSE.txt\n"
  },
  {
    "path": "package/jquery-ui/jquery-ui.mk",
    "content": "################################################################################\n#\n# jquery-ui\n#\n################################################################################\n\nJQUERY_UI_VERSION = 1.10.4\n# Use buildroot mirror since upstream switched the zipfile and directory\n# structure without bumping/renaming.\n# Remember to switch back to jqueryui.com when bumping!\nJQUERY_UI_SITE = http://sources.buildroot.net\nJQUERY_UI_SOURCE = jquery-ui-$(JQUERY_UI_VERSION).zip\nJQUERY_UI_LICENSE = MIT\nJQUERY_UI_LICENSE_FILES = MIT-LICENSE.txt\n\ndefine JQUERY_UI_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(JQUERY_UI_DL_DIR)/$(JQUERY_UI_SOURCE)\n\tmv $(@D)/jquery-ui-$(JQUERY_UI_VERSION)/* $(@D)\n\t$(RM) -r $(@D)/jquery-ui-$(JQUERY_UI_VERSION)\nendef\n\ndefine JQUERY_UI_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/ui/minified/jquery-ui.min.js \\\n\t\t$(TARGET_DIR)/var/www/jquery-ui.js\n\t$(INSTALL) -m 0644 -D $(@D)/ui/minified/i18n/jquery-ui-i18n.min.js \\\n\t\t$(TARGET_DIR)/var/www/jquery-ui-i18n.js\n\t$(INSTALL) -m 0644 -D $(@D)/themes/base/minified/jquery-ui.min.css \\\n\t\t$(TARGET_DIR)/var/www/jquery-ui.css\n\t$(INSTALL) -d $(TARGET_DIR)/var/www/images\n\t$(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/images \\\n\t\t$(@D)/themes/base/minified/images/*.png\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/jquery-ui-themes/Config.in",
    "content": "config BR2_PACKAGE_JQUERY_UI_THEMES\n\tbool \"jquery-ui-themes\"\n\tdepends on BR2_PACKAGE_JQUERY_UI\n\thelp\n\t  Themes for jQuery UI.\n\n\t  http://jqueryui.com/\n\nif BR2_PACKAGE_JQUERY_UI_THEMES\n\nchoice\n\tprompt \"theme to install\"\n\thelp\n\t  Specify the jQuery UI theme to install.\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_BLACK_TIE\n\tbool \"black-tie\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_BLITZER\n\tbool \"blitzer\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_CUPERTINO\n\tbool \"cupertino\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_DARK_HIVE\n\tbool \"dark-hive\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_DOT_LUV\n\tbool \"dot-luv\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_EGGPLANT\n\tbool \"eggplant\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_EXCITE_BIKE\n\tbool \"excite-bike\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_FLICK\n\tbool \"flick\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_HOT_SNEAKS\n\tbool \"hot-sneaks\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_HUMANITY\n\tbool \"humanity\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_LE_FROG\n\tbool \"le-frog\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_MINT_CHOC\n\tbool \"mint-choc\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_OVERCAST\n\tbool \"overcast\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_PEPPER_GRINDER\n\tbool \"pepper-grinder\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_REDMOND\n\tbool \"redmond\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_SMOOTHNESS\n\tbool \"smoothness\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_SOUTH_STREET\n\tbool \"south-street\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_START\n\tbool \"start\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_SUNNY\n\tbool \"sunny\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_SWANKY_PURSE\n\tbool \"swanky-purse\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_TRONTASTIC\n\tbool \"trontastic\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_UI_DARKNESS\n\tbool \"ui-darkness\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_UI_LIGHTNESS\n\tbool \"ui-lightness\"\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_VADER\n\tbool \"vader\"\n\nendchoice\n\nconfig BR2_PACKAGE_JQUERY_UI_THEMES_THEME\n\tstring\n\tdefault \"black-tie\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_BLACK_TIE\n\tdefault \"blitzer\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_BLITZER\n\tdefault \"cupertino\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_CUPERTINO\n\tdefault \"dark-hive\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_DARK_HIVE\n\tdefault \"dot-luv\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_DOT_LUV\n\tdefault \"eggplant\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_EGGPLANT\n\tdefault \"excite-bike\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_EXCITE_BIKE\n\tdefault \"flick\"\t\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_FLICK\n\tdefault \"hot-sneaks\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_HOT_SNEAKS\n\tdefault \"humanity\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_HUMANITY\n\tdefault \"le-frog\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_LE_FROG\n\tdefault \"mint-choc\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_MINT_CHOC\n\tdefault \"overcast\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_OVERCAST\n\tdefault \"pepper-grinder\"\tif BR2_PACKAGE_JQUERY_UI_THEMES_PEPPER_GRINDER\n\tdefault \"redmond\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_REDMOND\n\tdefault \"smoothness\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_SMOOTHNESS\n\tdefault \"south-street\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_SOUTH_STREET\n\tdefault \"start\"\t\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_START\n\tdefault \"sunny\"\t\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_SUNNY\n\tdefault \"swanky-purse\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_SWANKY_PURSE\n\tdefault \"trontastic\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_TRONTASTIC\n\tdefault \"ui-darkness\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_UI_DARKNESS\n\tdefault \"ui-lightness\"\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_UI_LIGHTNESS\n\tdefault \"vader\"\t\t\tif BR2_PACKAGE_JQUERY_UI_THEMES_UI_VADER\n\nendif\n"
  },
  {
    "path": "package/jquery-ui-themes/jquery-ui-themes.hash",
    "content": "# locally computed\nsha256  90467a83abcb8d2471b0d53d21b4c09e2cf686d5350e10a6e84fa3f3616a840f  jquery-ui-themes-1.10.4.zip\nsha256  ef1fdd608b20fbea7ef269ed03bd24e637717cc193971798a394bf2fa983cd53  MIT-LICENSE.txt\n"
  },
  {
    "path": "package/jquery-ui-themes/jquery-ui-themes.mk",
    "content": "################################################################################\n#\n# jquery-ui-themes\n#\n################################################################################\n\nJQUERY_UI_THEMES_VERSION = 1.10.4\nJQUERY_UI_THEMES_SITE = http://jqueryui.com/resources/download\nJQUERY_UI_THEMES_SOURCE = jquery-ui-themes-$(JQUERY_UI_THEMES_VERSION).zip\nJQUERY_UI_THEMES_LICENSE = MIT\nJQUERY_UI_THEMES_LICENSE_FILES = MIT-LICENSE.txt\nJQUERY_UI_THEMES_DEPENDENCIES = jquery-ui\n\ndefine JQUERY_UI_THEMES_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(JQUERY_UI_THEMES_DL_DIR)/$(JQUERY_UI_THEMES_SOURCE)\n\tmv $(@D)/jquery-ui-themes-$(JQUERY_UI_THEMES_VERSION)/* $(@D)\n\t$(RM) -r $(@D)/jquery-ui-themes-$(JQUERY_UI_THEMES_VERSION)\nendef\n\ndefine JQUERY_UI_THEMES_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D \\\n\t\t$(@D)/themes/$(call qstrip,$(BR2_PACKAGE_JQUERY_UI_THEMES_THEME))/jquery-ui.css \\\n\t\t$(TARGET_DIR)/var/www/jquery-ui.css\n\t$(INSTALL) -d $(TARGET_DIR)/var/www/images\n\tcp -a $(@D)/themes/$(call qstrip,$(BR2_PACKAGE_JQUERY_UI_THEMES_THEME))/images/*.png \\\n\t\t$(TARGET_DIR)/var/www/images\n\tchmod 0644 $(TARGET_DIR)/var/www/images/*.png\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/jquery-validation/Config.in",
    "content": "config BR2_PACKAGE_JQUERY_VALIDATION\n\tbool \"jquery-validation\"\n\thelp\n\t  The jQuery Validation Plugin provides drop-in validation for\n\t  your existing forms, while making all kinds of\n\t  customizations to fit your application really easy.\n\n\t  http://jqueryvalidation.org/\n"
  },
  {
    "path": "package/jquery-validation/jquery-validation.hash",
    "content": "# Locally computed\nsha256  01ad2ef0a7f9cd413aeb51081651293916da47d20e5c0a59ec62587e58b03564  jquery-validation-1.19.3.zip\nsha256  3e5a99460077c16bf75f6821a30cdac9baa339119ebf63b2a6c49f4f50421ca4  README.md\n"
  },
  {
    "path": "package/jquery-validation/jquery-validation.mk",
    "content": "################################################################################\n#\n# jquery-validation\n#\n################################################################################\n\nJQUERY_VALIDATION_VERSION = 1.19.3\nJQUERY_VALIDATION_SITE = https://github.com/jquery-validation/jquery-validation/releases/download/$(JQUERY_VALIDATION_VERSION)\nJQUERY_VALIDATION_SOURCE = jquery-validation-$(JQUERY_VALIDATION_VERSION).zip\nJQUERY_VALIDATION_LICENSE = MIT\nJQUERY_VALIDATION_LICENSE_FILES = README.md\nJQUERY_VALIDATION_CPE_ID_VENDOR = jqueryvalidation\nJQUERY_VALIDATION_CPE_ID_PRODUCT = jquery_validation\n\ndefine JQUERY_VALIDATION_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(JQUERY_VALIDATION_DL_DIR)/$(JQUERY_VALIDATION_SOURCE)\nendef\n\ndefine JQUERY_VALIDATION_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/dist/jquery.validate.min.js \\\n\t\t$(TARGET_DIR)/var/www/jquery.validate.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/jsmin/Config.in",
    "content": "config BR2_PACKAGE_JSMIN\n\tbool \"jsmin\"\n\thelp\n\t  JSMin is a filter which removes comments and unnecessary\n\t  whitespace from JavaScript files. It typically reduces\n\t  filesize by half, resulting in faster downloads. It also\n\t  encourages a more expressive programming style because it\n\t  eliminates the download cost of clean, literate\n\t  self-documentation.\n\n\t  http://www.crockford.com/javascript/jsmin.html\n"
  },
  {
    "path": "package/jsmin/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_JSMIN\n\tbool \"host jsmin\"\n\thelp\n\t  JSMin is a filter which removes comments and unnecessary\n\t  whitespace from JavaScript files. It typically reduces\n\t  filesize by half, resulting in faster downloads. It also\n\t  encourages a more expressive programming style because it\n\t  eliminates the download cost of clean, literate\n\t  self-documentation.\n\n\t  http://www.crockford.com/javascript/jsmin.html\n"
  },
  {
    "path": "package/jsmin/jsmin.hash",
    "content": "# Locally calculated\nsha256 aae127bf7291a7b2592f36599e5ed6c6423eac7abe0cd5992f82d6d46fe9ed2d  jsmin-1bf6ce5f74a9f8752ac7f5d115b8d7ccb31cfe1b.tar.gz\nsha256 b420f61778af09534adc836a5086f5625b8499124051c50baefa218e7c03a58c  jsmin.c\n"
  },
  {
    "path": "package/jsmin/jsmin.mk",
    "content": "################################################################################\n#\n# jsmin\n#\n################################################################################\n\nJSMIN_VERSION = 1bf6ce5f74a9f8752ac7f5d115b8d7ccb31cfe1b\nJSMIN_SITE = $(call github,douglascrockford,JSMin,$(JSMIN_VERSION))\nJSMIN_LICENSE = MIT\nJSMIN_LICENSE_FILES = jsmin.c\n\ndefine JSMIN_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) jsmin\nendef\n\ndefine JSMIN_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/jsmin $(TARGET_DIR)/usr/bin/jsmin\nendef\n\ndefine HOST_JSMIN_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) jsmin\nendef\n\ndefine HOST_JSMIN_INSTALL_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/jsmin $(HOST_DIR)/bin/jsmin\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/jsmn/Config.in",
    "content": "config BR2_PACKAGE_JSMN\n\tbool \"jsmn\"\n\thelp\n\t  jsmn (pronounced like 'jasmine') is a minimalistic JSON\n\t  parser in C. It can be easily integrated into\n\t  resource-limited or embedded projects.\n\n\t  https://github.com/zserge/jsmn/\n"
  },
  {
    "path": "package/jsmn/jsmn.hash",
    "content": "# Locally computed\nsha256  5f0913a10657fe7ec8d5794ccf00a01000e3e1f2f1e1f143c34a0f7b47edcb38    jsmn-1.1.0.tar.gz\nsha256  4675b94a50d2afe811c52785463c854f1156056632cce17cc7133939eac8ed55    LICENSE\n"
  },
  {
    "path": "package/jsmn/jsmn.mk",
    "content": "################################################################################\n#\n# jsmn\n#\n################################################################################\n\nJSMN_VERSION = 1.1.0\nJSMN_SITE = $(call github,zserge,jsmn,v$(JSMN_VERSION))\nJSMN_LICENSE = MIT\nJSMN_LICENSE_FILES = LICENSE\n# single-header, header-only library\nJSMN_INSTALL_STAGING = YES\nJSMN_INSTALL_TARGET = NO\n\ndefine JSMN_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/jsmn.h $(STAGING_DIR)/usr/include/jsmn.h\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/json-c/Config.in",
    "content": "config BR2_PACKAGE_JSON_C\n\tbool \"json-c\"\n\t# uses __sync_val_compare_and_swap_4\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\thelp\n\t  JSON-C - A JSON implementation in C\n\n\t  JSON-C implements a reference counting object model that\n\t  allows you to easily construct JSON objects in C, output\n\t  them as JSON formatted strings and parse JSON formatted\n\t  strings back into the C representation of JSON objects.\n\n\t  https://github.com/json-c/json-c/\n"
  },
  {
    "path": "package/json-c/json-c.hash",
    "content": "# From https://github.com/json-c/json-c/wiki\nsha256  b8d80a1ddb718b3ba7492916237bbf86609e9709fb007e7f7d4322f02341a4c6  json-c-0.15.tar.gz\n# Locally calculated\nsha256  74c1e6ca5eba76b54d0ad00d4815c8315c1b3bc45ff99de61d103dc92486284c  COPYING\n"
  },
  {
    "path": "package/json-c/json-c.mk",
    "content": "################################################################################\n#\n# json-c\n#\n################################################################################\n\nJSON_C_VERSION = 0.15\nJSON_C_SITE = https://s3.amazonaws.com/json-c_releases/releases\nJSON_C_INSTALL_STAGING = YES\nJSON_C_LICENSE = MIT\nJSON_C_LICENSE_FILES = COPYING\nJSON_C_CPE_ID_VENDOR = json-c_project\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/json-for-modern-cpp/Config.in",
    "content": "config BR2_PACKAGE_JSON_FOR_MODERN_CPP\n\tbool \"json-for-modern-cpp\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Json for modern c++ has the following desing goals in mind:\n\n\t  - Intuitive syntax. In languages such as Python, JSON feels\n\t    like a first class data type. All the operator magic of\n\t    modern C++ is used to achieve the same feeling in c++.\n\n\t  - Trivial integration. The whole code consists of a single\n\t    header file json.hpp. That's it. No library, no\n\t    subproject, no dependencies, no complex build system. The\n\t    class is written in vanilla C++11. All in all, everything\n\t    should require no adjustment of compiler flags or project\n\t    settings.\n\n\t  - Serious testing. The class is heavily unit-tested and\n\t    covers 100% of the code, including all exceptional\n\t    behavior.  Furthermore, it is checked with Valgrind that\n\t    there are no memory leaks. To maintain high quality, the\n\t    project is following the Core Infrastructure Initiative\n\t    (CII) best practices.\n\n\t  https://github.com/nlohmann/json\n\ncomment \"json-for-modern-cpp needs a toolchain w/ C++, gcc >= 4.9\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/json-for-modern-cpp/json-for-modern-cpp.hash",
    "content": "# Locally computed\nsha256  e0d7c1b120cac47fa7f14a41d10a5d390f67d423d8e97b9d6834887285d6873c  json-3.10.3.tar.gz\nsha256  c983d69523377819db3c377b390d5644f5ec53bec9b7c4a0f1ed893bb743d045  LICENSE.MIT\n"
  },
  {
    "path": "package/json-for-modern-cpp/json-for-modern-cpp.mk",
    "content": "################################################################################\n#\n# json-for-modern-cpp\n#\n################################################################################\n\nJSON_FOR_MODERN_CPP_VERSION = 3.10.3\nJSON_FOR_MODERN_CPP_SOURCE = json-$(JSON_FOR_MODERN_CPP_VERSION).tar.gz\nJSON_FOR_MODERN_CPP_SITE = $(call github,nlohmann,json,v$(JSON_FOR_MODERN_CPP_VERSION))\nJSON_FOR_MODERN_CPP_LICENSE = MIT\nJSON_FOR_MODERN_CPP_LICENSE_FILES = LICENSE.MIT\nJSON_FOR_MODERN_CPP_CPE_ID_VENDOR = json-for-modern-cpp_project\n\nJSON_FOR_MODERN_CPP_INSTALL_STAGING = YES\n# header only library\nJSON_FOR_MODERN_CPP_INSTALL_TARGET = NO\nJSON_FOR_MODERN_CPP_CONF_OPTS = -DJSON_BuildTests=OFF -DJSON_MultipleHeaders=ON\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/json-glib/Config.in",
    "content": "config BR2_PACKAGE_JSON_GLIB\n\tbool \"json-glib\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  JSON-GLib is a library providing serialization and\n\t  deserialization support for the JavaScript Object Notation\n\t  (JSON) format described by RFC 4627.\n\n\t  https://live.gnome.org/JsonGlib/\n\ncomment \"json-glib needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/json-glib/json-glib.hash",
    "content": "# From http://ftp.gnome.org/pub/GNOME/sources/json-glib/1.4/json-glib-1.4.4.sha256sum\nsha256 720c5f4379513dc11fd97dc75336eb0c0d3338c53128044d9fabec4374f4bc47  json-glib-1.4.4.tar.xz\n\n# Hash for license file:\nsha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7  COPYING\n"
  },
  {
    "path": "package/json-glib/json-glib.mk",
    "content": "################################################################################\n#\n# json-glib\n#\n################################################################################\n\nJSON_GLIB_VERSION_MAJOR = 1.4\nJSON_GLIB_VERSION = $(JSON_GLIB_VERSION_MAJOR).4\nJSON_GLIB_SITE = http://ftp.gnome.org/pub/GNOME/sources/json-glib/$(JSON_GLIB_VERSION_MAJOR)\nJSON_GLIB_SOURCE = json-glib-$(JSON_GLIB_VERSION).tar.xz\nJSON_GLIB_LICENSE = LGPL-2.1+\nJSON_GLIB_LICENSE_FILES = COPYING\nJSON_GLIB_INSTALL_STAGING = YES\n\nJSON_GLIB_DEPENDENCIES = \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\thost-pkgconf \\\n\tlibglib2\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nJSON_GLIB_CONF_OPTS += -Dintrospection=true\nJSON_GLIB_DEPENDENCIES += gobject-introspection\nelse\nJSON_GLIB_CONF_OPTS += -Dintrospection=false\nendif\n\nJSON_GLIB_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/json-javascript/Config.in",
    "content": "config BR2_PACKAGE_JSON_JAVASCRIPT\n\tbool \"json-javascript\"\n\thelp\n\t  JSON in JavaScript\n\n\t  https://github.com/douglascrockford/JSON-js/\n"
  },
  {
    "path": "package/json-javascript/json-javascript.hash",
    "content": "# Locally calculated\nsha256  1a9dd4429e4bb4929dcb438f9591a3625bc8cc161f840b5f843d8b1d2c8dcfe5  json-javascript-3d7767b6b1f3da363c625ff54e63bbf20e9e83ac.tar.gz\nsha256  925947d3d711c4441a9db20f51215fbf5c119d2a3b51cadb2c9031907d8014b5  json2.js\n"
  },
  {
    "path": "package/json-javascript/json-javascript.mk",
    "content": "################################################################################\n#\n# json-javascript\n#\n################################################################################\n\nJSON_JAVASCRIPT_VERSION = 3d7767b6b1f3da363c625ff54e63bbf20e9e83ac\nJSON_JAVASCRIPT_SITE = $(call github,douglascrockford,JSON-js,$(JSON_JAVASCRIPT_VERSION))\nJSON_JAVASCRIPT_LICENSE = Public Domain\nJSON_JAVASCRIPT_LICENSE_FILES = json2.js\n\ndefine JSON_JAVASCRIPT_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/json2.js $(TARGET_DIR)/var/www/json2.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/jsoncpp/Config.in",
    "content": "config BR2_PACKAGE_JSONCPP\n\tbool \"jsoncpp\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  JsonCpp is a C++ library that allows manipulating JSON\n\t  values, including serialization and deserialization to and\n\t  from strings. It can also preserve existing comment in\n\t  unserialization/serialization steps, making it a convenient\n\t  format to store user input files.\n\n\t  https://github.com/open-source-parsers/jsoncpp\n\ncomment \"jsoncpp needs a toolchain w/ C++, gcc >= 4.7\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/jsoncpp/jsoncpp.hash",
    "content": "# Locally computed\nsha256  e34a628a8142643b976c7233ef381457efad79468c67cb1ae0b83a33d7493999  jsoncpp-1.9.4.tar.gz\nsha256  95039d77a20e75b428207740d9a8f97b2dce3c89da4b21f1ad862b5997160e0a  LICENSE\n"
  },
  {
    "path": "package/jsoncpp/jsoncpp.mk",
    "content": "################################################################################\n#\n# jsoncpp\n#\n################################################################################\n\nJSONCPP_VERSION = 1.9.4\nJSONCPP_SITE = $(call github,open-source-parsers,jsoncpp,$(JSONCPP_VERSION))\nJSONCPP_LICENSE = Public Domain or MIT\nJSONCPP_LICENSE_FILES = LICENSE\nJSONCPP_CPE_ID_VENDOR = jsoncpp_project\nJSONCPP_INSTALL_STAGING = YES\nJSONCPP_CONF_OPTS = -Dtests=false\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/jszip/0001-fix-Use-a-null-prototype-object-for-this-files.patch",
    "content": "From 22357494f424178cb416cdb7d93b26dd4f824b36 Mon Sep 17 00:00:00 2001\nFrom: Michael Aquilina <michaelaquilina@gmail.com>\nDate: Mon, 14 Jun 2021 12:28:46 +0100\nSubject: [PATCH] fix: Use a null prototype object for this.files\n\nThis approach is taken to prevent overriding object methods that would\nexist on a normal object Object.create({})\n\n[Retrieved from:\nhttps://github.com/Stuk/jszip/commit/22357494f424178cb416cdb7d93b26dd4f824b36]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n lib/index.js  | 5 ++++-\n lib/object.js | 6 +++---\n 2 files changed, 7 insertions(+), 4 deletions(-)\n\ndiff --git a/lib/index.js b/lib/index.js\nindex b449877..b4c95ba 100644\n--- a/lib/index.js\n+++ b/lib/index.js\n@@ -19,7 +19,10 @@ function JSZip() {\n     //   \"folder/\" : {...},\n     //   \"folder/data.txt\" : {...}\n     // }\n-    this.files = {};\n+    // NOTE: we use a null prototype because we do not\n+    // want filenames like \"toString\" coming from a zip file\n+    // to overwrite methods and attributes in a normal Object.\n+    this.files = Object.create(null);\n \n     this.comment = null;\n \ndiff --git a/lib/object.js b/lib/object.js\nindex 1c9d8e8..aec3db7 100644\n--- a/lib/object.js\n+++ b/lib/object.js\n@@ -179,16 +179,16 @@ var out = {\n      */\n     forEach: function(cb) {\n         var filename, relativePath, file;\n+        /* jshint ignore:start */\n+        // ignore warning about unwanted properties because this.files is a null prototype object\n         for (filename in this.files) {\n-            if (!this.files.hasOwnProperty(filename)) {\n-                continue;\n-            }\n             file = this.files[filename];\n             relativePath = filename.slice(this.root.length, filename.length);\n             if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n                 cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n             }\n         }\n+        /* jshint ignore:end */\n     },\n \n     /**\n"
  },
  {
    "path": "package/jszip/Config.in",
    "content": "config BR2_PACKAGE_JSZIP\n\tbool \"jszip\"\n\thelp\n\t  JSZip is a javascript library for creating, reading and\n\t  editing .zip files, with a lovely and simple API.\n\n\t  https://stuk.github.io/jszip\n"
  },
  {
    "path": "package/jszip/jszip.hash",
    "content": "# Locally computed:\nsha256\te5343decfb781b15c54c0df9ddedd6c8518c800a4667a0a95741c694a4f38d34  jszip-3.2.2.tar.gz\nsha256\t14450c78405ad2a2173e25740b56406556779149df9c4c83523a8c63d0686210  LICENSE.markdown\n"
  },
  {
    "path": "package/jszip/jszip.mk",
    "content": "################################################################################\n#\n# jszip\n#\n################################################################################\n\nJSZIP_VERSION = 3.2.2\nJSZIP_SITE = $(call github,Stuk,jszip,v$(JSZIP_VERSION))\nJSZIP_LICENSE = MIT or GPL-3.0\nJSZIP_LICENSE_FILES = LICENSE.markdown\nJSZIP_CPE_ID_VENDOR = jszip_project\n\n# 0001-fix-Use-a-null-prototype-object-for-this-files.patch\nJSZIP_IGNORE_CVES += CVE-2021-23413\n\ndefine JSZIP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/dist/jszip.min.js \\\n\t\t$(TARGET_DIR)/var/www/jszip/js/jszip.min.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/kbd/Config.in",
    "content": "config BR2_PACKAGE_KBD\n\tbool \"kbd\"\n\t# Uses fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # _Generic\n\thelp\n\t  Keytable files and keyboard utilities.\n\n\t  http://kernel.org/pub/linux/utils/kbd/\n\ncomment \"kbd needs a toolchain w/ gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/kbd/kbd.hash",
    "content": "# From https://www.kernel.org/pub/linux/utils/kbd/sha256sums.asc\nsha256  55f0740458cfd3a84e775e50d7e8b92dc01846db1edad8e2411ccc293ece9b9f  kbd-2.4.0.tar.xz\nsha256  ddb9db7630752f8fdc6898f7c99a99eaeeac5213627ecb093df9c82f56175dc7  COPYING\nsha256  5a16340fe773f422144b436df90319114a2884933c56e9be6fad642e59be5e1f  CREDITS\n"
  },
  {
    "path": "package/kbd/kbd.mk",
    "content": "################################################################################\n#\n# kbd\n#\n################################################################################\n\nKBD_VERSION = 2.4.0\nKBD_SOURCE = kbd-$(KBD_VERSION).tar.xz\nKBD_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/kbd\nKBD_CONF_OPTS = \\\n\t--disable-vlock \\\n\t--disable-tests\nKBD_DEPENDENCIES = \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\thost-pkgconf\nKBD_LICENSE = GPL-2.0+\nKBD_LICENSE_FILES = COPYING CREDITS\n\nKBD_INSTALL_TARGET_OPTS = MKINSTALLDIRS=$(@D)/config/mkinstalldirs DESTDIR=$(TARGET_DIR) install\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/keepalived/0001-core-Fix-compiling-on-RHEL-9.patch",
    "content": "From 3fd0c21e4f63ac0a52b5d7a09575f0f364972e4d Mon Sep 17 00:00:00 2001\nFrom: Quentin Armitage <quentin@armitage.org.uk>\nDate: Tue, 8 Jun 2021 08:57:45 +0100\nSubject: [PATCH] core: Fix compiling on RHEL 9\n\nSigned-off-by: Quentin Armitage <quentin@armitage.org.uk>\n\n[Retrieved from:\nhttps://github.com/acassen/keepalived/commit/3fd0c21e4f63ac0a52b5d7a09575f0f364972e4d]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n keepalived/core/layer4.c | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/keepalived/core/layer4.c b/keepalived/core/layer4.c\nindex d2cc971a3..fdca04913 100644\n--- a/keepalived/core/layer4.c\n+++ b/keepalived/core/layer4.c\n@@ -27,13 +27,14 @@\n #include <errno.h>\n #include <unistd.h>\n #include <fcntl.h>\n+#include <netinet/in.h>\n+#include <net/if.h>\n #include <linux/icmp.h>\n #include <linux/icmpv6.h>\n #ifdef ERRQUEUE_NEEDS_SYS_TIME\n #include <sys/time.h>\n #endif\n #include <linux/errqueue.h>\n-#include <netinet/in.h>\n \n #include \"layer4.h\"\n #include \"logger.h\"\n"
  },
  {
    "path": "package/keepalived/Config.in",
    "content": "config BR2_PACKAGE_KEEPALIVED\n\tbool \"keepalived\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS # uses libdl\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  The main goal of the keepalived project is to add a strong &\n\t  robust keepalive facility to the Linux Virtual Server\n\t  project. It implements a multilayer TCP/IP stack\n\t  checks. Keepalived implements a framework based on three\n\t  family checks: Layer3, Layer4 & Layer5. This framework gives\n\t  the daemon the ability of checking a LVS server pool\n\t  states. Keepalived can be sumarize as a LVS driving daemon.\n\n\t  http://www.keepalived.org/\n\ncomment \"keepalived needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/keepalived/keepalived.hash",
    "content": "# Locally calculated\nsha256  245bf399e4320064996ac5507236a8896f545d005f6c4c3b91701bcbc5728c60  keepalived-2.1.4.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/keepalived/keepalived.mk",
    "content": "################################################################################\n#\n# keepalived\n#\n################################################################################\n\nKEEPALIVED_VERSION = 2.1.4\nKEEPALIVED_SITE = http://www.keepalived.org/software\nKEEPALIVED_DEPENDENCIES = host-pkgconf openssl\nKEEPALIVED_LICENSE = GPL-2.0+\nKEEPALIVED_LICENSE_FILES = COPYING\nKEEPALIVED_CPE_ID_VENDOR = keepalived\nKEEPALIVED_CONF_OPTS = --disable-hardening\n\nifeq ($(BR2_PACKAGE_JSON_C),y)\nKEEPALIVED_DEPENDENCIES += json-c\nKEEPALIVED_CONF_OPTS += --enable-json\nelse\nKEEPALIVED_CONF_OPTS += --disable-json\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nKEEPALIVED_DEPENDENCIES += libglib2\nKEEPALIVED_CONF_OPTS += --enable-dbus\nelse\nKEEPALIVED_CONF_OPTS += --disable-dbus\nendif\n\nifeq ($(BR2_PACKAGE_LIBNL)$(BR2_PACKAGE_LIBNFNETLINK),yy)\nKEEPALIVED_DEPENDENCIES += libnl libnfnetlink\nKEEPALIVED_CONF_OPTS += --enable-libnl\nelse\nKEEPALIVED_CONF_OPTS += --disable-libnl\nendif\n\nifeq ($(BR2_PACKAGE_IPTABLES),y)\nKEEPALIVED_DEPENDENCIES += iptables\nKEEPALIVED_CONF_OPTS += --enable-iptables\n# ipset support only makes sense when iptables support is enabled.\nifeq ($(BR2_PACKAGE_IPSET),y)\nKEEPALIVED_DEPENDENCIES += ipset\nKEEPALIVED_CONF_OPTS += --enable-libipset\nelse\nKEEPALIVED_CONF_OPTS += --disable-libipset\nendif\nelse\nKEEPALIVED_CONF_OPTS += --disable-iptables\nendif\n\nifeq ($(BR2_PACKAGE_LIBNFTNL),y)\nKEEPALIVED_DEPENDENCIES += libnftnl\nKEEPALIVED_CONF_OPTS += --enable-nftables\nelse\nKEEPALIVED_CONF_OPTS += --disable-nftables\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/kexec/0001-kexec-tools-Remove-duplicate-definition-of-ramdisk.patch",
    "content": "From 5e7ce27626a44428c01e0e5ab3fe60ef98ca788c Mon Sep 17 00:00:00 2001\nFrom: Petr Tesarik <ptesarik@suse.cz>\nDate: Mon, 26 Apr 2021 15:29:51 +0200\nSubject: kexec-tools: Remove duplicate definition of ramdisk\n\nThe ramdisk variable is defined in kexec/arch/ppc/kexec-ppc.c. This\nother definition is not needed and breaks build with -fno-common.\n\nSigned-off-by: Petr Tesarik <ptesarik@suse.com>\nSigned-off-by: Simon Horman <horms@verge.net.au>\n[Retrieved from:\nhttps://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git/commit/?id=5e7ce27626a44428c01e0e5ab3fe60ef98ca788c]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n kexec/arch/ppc/kexec-elf-ppc.c | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/kexec/arch/ppc/kexec-elf-ppc.c b/kexec/arch/ppc/kexec-elf-ppc.c\nindex ad43ad1..4a4886e 100644\n--- a/kexec/arch/ppc/kexec-elf-ppc.c\n+++ b/kexec/arch/ppc/kexec-elf-ppc.c\n@@ -33,7 +33,6 @@\n static const int probe_debug = 0;\n \n unsigned char reuse_initrd;\n-const char *ramdisk;\n int create_flatten_tree(struct kexec_info *, unsigned char **, unsigned long *,\n \t\t\tchar *);\n \n-- \ncgit 1.2.3-1.el7\n\n"
  },
  {
    "path": "package/kexec/Config.in",
    "content": "config BR2_PACKAGE_KEXEC\n\tbool \"kexec\"\n\tdepends on BR2_i386 || BR2_x86_64 || BR2_arm || BR2_armeb || \\\n\t\tBR2_mips || BR2_mips64 || BR2_mipsel || BR2_mips64el || \\\n\t\tBR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \\\n\t\tBR2_sh4 || BR2_sh4a || BR2_aarch64 || BR2_s390x\n\thelp\n\t  Kexec is a user space utility for loading another kernel\n\t  and asking the currently running kernel to do something with\n\t  it.\n\n\t  https://www.kernel.org/pub/linux/utils/kernel/kexec/\n\nif BR2_PACKAGE_KEXEC\n\nconfig BR2_PACKAGE_KEXEC_ZLIB\n\tbool \"zlib support\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Support for compressed kernel images\n\nendif\n"
  },
  {
    "path": "package/kexec/kexec.hash",
    "content": "# From https://www.kernel.org/pub/linux/utils/kernel/kexec/sha256sums.asc\nsha256  96c97f49ed86049f8b72722cb53e7fe3693e5a4f31e78a3a6249e3d18dac49c2  kexec-tools-2.0.22.tar.xz\n# locally calculated\nsha256  fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7  COPYING\n"
  },
  {
    "path": "package/kexec/kexec.mk",
    "content": "################################################################################\n#\n# kexec\n#\n################################################################################\n\nKEXEC_VERSION = 2.0.22\nKEXEC_SOURCE = kexec-tools-$(KEXEC_VERSION).tar.xz\nKEXEC_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/kernel/kexec\nKEXEC_LICENSE = GPL-2.0\nKEXEC_LICENSE_FILES = COPYING\nKEXEC_SELINUX_MODULES = kdump\n\n# Makefile expects $STRIP -o to work, so needed for !BR2_STRIP_strip\nKEXEC_MAKE_OPTS = STRIP=\"$(TARGET_CROSS)strip\"\n\nifeq ($(BR2_PACKAGE_KEXEC_ZLIB),y)\nKEXEC_CONF_OPTS += --with-zlib\nKEXEC_DEPENDENCIES += zlib\nelse\nKEXEC_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nKEXEC_CONF_OPTS += --with-lzma\nKEXEC_DEPENDENCIES += xz\nelse\nKEXEC_CONF_OPTS += --without-lzma\nendif\n\ndefine KEXEC_REMOVE_LIB_TOOLS\n\trm -rf $(TARGET_DIR)/usr/lib/kexec-tools\nendef\n\nKEXEC_POST_INSTALL_TARGET_HOOKS += KEXEC_REMOVE_LIB_TOOLS\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/kexec-lite/0001-clean-restart.patch",
    "content": "From 0a654c20e1b9324c57ba4116b52fb6ab33847e1d Mon Sep 17 00:00:00 2001\nFrom: Jeremy Kerr <jk@ozlabs.org>\nDate: Thu, 8 Aug 2013 17:16:31 +0800\nSubject: [PATCH] kexec: Implement clean restart for busybox init\n\nSigned-off-by: Jeremy Kerr <jk@ozlabs.org>\n---\n kexec.c |    3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/kexec.c b/kexec.c\nindex 2edb7df..b2a0c42 100644\n--- a/kexec.c\n+++ b/kexec.c\n@@ -27,6 +27,7 @@\n #include <fcntl.h>\n #include <errno.h>\n #include <syscall.h>\n+#include <signal.h>\n #include <libfdt.h>\n #include <getopt.h>\n #include <sys/types.h>\n@@ -818,7 +819,7 @@ int main(int argc, char *argv[])\n \t\t\tsync();\n \t\t\texec_kexec();\n \t\t} else {\n-\t\t\texeclp(\"shutdown\", \"shutdown\", \"-r\", \"now\", NULL);\n+\t\t\tkill(1, SIGQUIT);\n \t\t}\n \n \t\treturn -1;\n-- \n1.7.10.4\n\n"
  },
  {
    "path": "package/kexec-lite/Config.in",
    "content": "config BR2_PACKAGE_KEXEC_LITE\n\tbool \"kexec-lite\"\n\tdepends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdepends on !BR2_STATIC_LIBS # dtc, elfutils\n\tdepends on BR2_USE_WCHAR # elfutils\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # elfutils\n\tdepends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils\n\tselect BR2_PACKAGE_ELFUTILS\n\tselect BR2_PACKAGE_DTC\n\tselect BR2_PACKAGE_DTC_PROGRAMS\n\thelp\n\t  Kexec is a user space utiltity for loading another kernel\n\t  and asking the currently running kernel to do something with\n\t  it.\n\n\t  This package is a tiny implementation of the kexec userspace\n\t  components, for devicetree-based platforms.\n\n\t  https://github.com/antonblanchard/kexec-lite\n\ncomment \"kexec-lite needs a uClibc or glibc toolchain w/ wchar, dynamic library, threads\"\n\tdepends on BR2_powerpc || BR2_powerpc64\n\tdepends on BR2_STATIC_LIBS || !BR2_USE_WCHAR \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)\n"
  },
  {
    "path": "package/kexec-lite/kexec-lite.hash",
    "content": "# Locally calculated\nsha256  1027c69721e8ee21614273a540e1dd505370d8d814845c0adaf838496105a35d  kexec-lite-6b0130b3c1ea489e061cda2805e6f8b68dc96a76.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/kexec-lite/kexec-lite.mk",
    "content": "################################################################################\n#\n# kexec-lite\n#\n################################################################################\n\nKEXEC_LITE_VERSION = 6b0130b3c1ea489e061cda2805e6f8b68dc96a76\nKEXEC_LITE_SITE = $(call github,antonblanchard,kexec-lite,$(KEXEC_LITE_VERSION))\nKEXEC_LITE_LICENSE = GPL-2.0+\nKEXEC_LITE_LICENSE_FILES = COPYING\nKEXEC_LITE_DEPENDENCIES = elfutils dtc\nKEXEC_LITE_AUTORECONF = YES\nKEXEC_LITE_SELINUX_MODULES = kdump\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/keyutils/0001-fix-install-rule.patch",
    "content": "Makefile: fix install rule\n\nDo not link the .so with an absolute path, otherwise it may point to\nthe host library.\n\nBased on the former patch by Yann E. MORIN.\n\nSigned-off-by: Vicente Olivert Riera <vincent.riera@imgtec.com>\n[baruch: update for 1.6]\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n\n--- keyutils-1.5.9/Makefile.orig\t2014-09-22 16:13:41.593562765 +0100\n+++ keyutils-1.5.9/Makefile\t2014-09-22 16:14:05.377963952 +0100\n@@ -200,7 +200,7 @@ ifeq ($(NO_SOLIB),0)\n \t$(INSTALL) -D $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME)\n \t$(LNS) $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME)\n \tmkdir -p $(DESTDIR)$(USRLIBDIR)\n-\t$(LNS) $(LIBDIR)/$(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB)\n+\t$(LNS) $(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB)\n \tsed \\\n \t-e 's,@VERSION\\@,$(VERSION),g' \\\n \t-e 's,@prefix\\@,$(PREFIX),g' \\\n"
  },
  {
    "path": "package/keyutils/0002-cifs.patch",
    "content": "Patch vampirised from Debian's packaging of keyutils-1.4\n\nAuthor: Marcus Meissner <meissner@suse.de>\nDescription: Added 2 cifs helpers to request-key.conf (for CIFS DFS support)\n\ndiff -Naurp keyutils.orig/request-key.conf keyutils/request-key.conf\n--- keyutils.orig/request-key.conf\t2008-09-07 23:53:10.000000000 +0000\n+++ keyutils/request-key.conf\t2009-02-05 00:53:00.000000000 +0000\n@@ -38,4 +38,6 @@\n create  user    debug:*         revoked         /bin/keyctl reject %k 30 %c %S\n create\tuser\tdebug:loop:*\t*\t\t|/bin/cat\n create\tuser\tdebug:*\t\t*\t\t/usr/share/keyutils/request-key-debug.sh %k %d %c %S\n+create\tcifs.spnego\t*\t*\t\t/usr/sbin/cifs.upcall -c %k\n+create\tdns_resolver\t*\t*\t\t/usr/sbin/cifs.upcall %k\n negate\t*\t*\t\t*\t\t/bin/keyctl negate %k 30 %S\n"
  },
  {
    "path": "package/keyutils/Config.in",
    "content": "config BR2_PACKAGE_KEYUTILS\n\tbool \"keyutils\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # dlopen\n\thelp\n\t  These tools are used to control the key management system\n\t  built into the Linux kernel.\n\n\t  https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/keyutils.git/\n\ncomment \"keyutils needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/keyutils/keyutils.hash",
    "content": "# Locally computed\nsha256  a61d5706136ae4c05bd48f86186bcfdbd88dd8bd5107e3e195c924cfc1b39bb4  keyutils-1.6.3.tar.gz\nsha256  f46409d4822b2457b39bbd0e7881eecb396130eb8320b7748fa7e9488970aa6d  LICENCE.GPL\nsha256  0d15593e3a8ad90917f8509b5ac1e4b5e5d196434a68029aa9dc0858a4a4c521  LICENCE.LGPL\n"
  },
  {
    "path": "package/keyutils/keyutils.mk",
    "content": "################################################################################\n#\n# keyutils\n#\n################################################################################\n\nKEYUTILS_VERSION = 1.6.3\nKEYUTILS_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/keyutils.git/snapshot\nKEYUTILS_LICENSE = GPL-2.0+, LGPL-2.1+\nKEYUTILS_LICENSE_FILES = LICENCE.GPL LICENCE.LGPL\nKEYUTILS_INSTALL_STAGING = YES\n\nKEYUTILS_MAKE_PARAMS = \\\n\tINSTALL=$(INSTALL) \\\n\tLIBDIR=/usr/lib \\\n\tUSRLIBDIR=/usr/lib \\\n\tCFLAGS=\"$(TARGET_CFLAGS)\" \\\n\tCPPFLAGS=\"$(TARGET_CPPFLAGS) -I.\" \\\n\tLNS=\"$(HOSTLN) -sf\"\n\nifeq ($(BR2_SHARED_LIBS),y)\nKEYUTILS_MAKE_PARAMS += NO_ARLIB=1\nendif\n\n# Touch cxx.stamp to avoid adding a C++ dependency\ndefine KEYUTILS_CONFIGURE_CMDS\n\ttouch $(@D)/cxx.stamp\nendef\n\ndefine KEYUTILS_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) $(KEYUTILS_MAKE_PARAMS) -C $(@D)\nendef\n\ndefine KEYUTILS_INSTALL_STAGING_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) $(KEYUTILS_MAKE_PARAMS) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\ndefine KEYUTILS_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) $(KEYUTILS_MAKE_PARAMS) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/kf5/Config.in",
    "content": "menuconfig BR2_PACKAGE_KF5\n\tbool \"KF5\"\n\tdepends on BR2_PACKAGE_QT5\n\thelp\n\t  This option enables the KF5 KDE Frameworks. Sub-options\n\t  allow to select which modules should be built.\n\n\t  https://techbase.kde.org/KDE_Frameworks\n\nif BR2_PACKAGE_KF5\nsource \"package/kf5/kf5-extra-cmake-modules/Config.in\"\nsource \"package/kf5/kf5-kcoreaddons/Config.in\"\nsource \"package/kf5/kf5-modemmanager-qt/Config.in\"\nsource \"package/kf5/kf5-networkmanager-qt/Config.in\"\nendif\n"
  },
  {
    "path": "package/kf5/kf5-extra-cmake-modules/Config.in",
    "content": "config BR2_PACKAGE_KF5_EXTRA_CMAKE_MODULES\n\tbool \"kf5-extra-cmake-modules\"\n\thelp\n\t  KF5 is a set of Qt framework addons, extending Qt in various\n\t  ways, not only restricted in helping integration in KDE.\n\n\t  This package corresponds to the extra CMake modules,\n\t  required for most KF5 libraries.\n\n\t  https://api.kde.org/frameworks/extra-cmake-modules/html/index.html\n"
  },
  {
    "path": "package/kf5/kf5-extra-cmake-modules/kf5-extra-cmake-modules.hash",
    "content": "# Locally calculated\nsha256 976d8bd15a0b929376bfaef34602a0fb9614229851c46fac3c4b28938f682195 extra-cmake-modules-5.47.0.tar.xz\nsha256 46cde7dc11e64c78d650b4851b88f6704b4665ff60f22a1caf68ceb15e217e5b COPYING-CMAKE-SCRIPTS\n"
  },
  {
    "path": "package/kf5/kf5-extra-cmake-modules/kf5-extra-cmake-modules.mk",
    "content": "################################################################################\n#\n# kf5-extra-cmake-modules\n#\n################################################################################\n\nKF5_EXTRA_CMAKE_MODULES_VERSION = $(KF5_VERSION)\nKF5_EXTRA_CMAKE_MODULES_SITE = $(KF5_SITE)\nKF5_EXTRA_CMAKE_MODULES_SOURCE = extra-cmake-modules-$(KF5_EXTRA_CMAKE_MODULES_VERSION).tar.xz\nKF5_EXTRA_CMAKE_MODULES_LICENSE = BSD-3-Clause\nKF5_EXTRA_CMAKE_MODULES_LICENSE_FILES = COPYING-CMAKE-SCRIPTS\n\nKF5_EXTRA_CMAKE_MODULES_DEPENDENCIES = host-pkgconf\nKF5_EXTRA_CMAKE_MODULES_INSTALL_STAGING = YES\nKF5_EXTRA_CMAKE_MODULES_INSTALL_TARGET = NO\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kf5/kf5-kcoreaddons/Config.in",
    "content": "config BR2_PACKAGE_KF5_KCOREADDONS\n\tbool \"kf5-kcoreaddons\"\n\tdepends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597\n\tselect BR2_PACKAGE_KF5_EXTRA_CMAKE_MODULES\n\tselect BR2_PACKAGE_QT5TOOLS\n\tselect BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS\n\thelp\n\t  KF5 is a set of Qt framework addons, extending Qt in\n\t  various ways, not only restricted in helping integration\n\t  in KDE.\n\n\t  This package contains KCoreAddons, a set of classes built\n\t  on top of QtCore to perform various tasks.\n\n\t  https://api.kde.org/frameworks/kcoreaddons/html/index.html\n"
  },
  {
    "path": "package/kf5/kf5-kcoreaddons/kf5-kcoreaddons.hash",
    "content": "# Locally calculated\nsha256 40ff04757e4ac19bc8448940fe18886c894a2069865966cc865fc55ff67b0b46 kcoreaddons-5.47.0.tar.xz\nsha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB\n"
  },
  {
    "path": "package/kf5/kf5-kcoreaddons/kf5-kcoreaddons.mk",
    "content": "################################################################################\n#\n# kf5-kcoreaddons\n#\n################################################################################\n\nKF5_KCOREADDONS_VERSION = $(KF5_VERSION)\nKF5_KCOREADDONS_SITE = $(KF5_SITE)\nKF5_KCOREADDONS_SOURCE = kcoreaddons-$(KF5_KCOREADDONS_VERSION).tar.xz\nKF5_KCOREADDONS_LICENSE = LGPL-2.1\nKF5_KCOREADDONS_LICENSE_FILES = COPYING.LIB\n\nKF5_KCOREADDONS_DEPENDENCIES = kf5-extra-cmake-modules qt5tools\nKF5_KCOREADDONS_INSTALL_STAGING = YES\n\nKF5_KCOREADDONS_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nKF5_KCOREADDONS_CXXFLAGS += -latomic\nendif\n\nKF5_KCOREADDONS_CONF_OPTS = -DCMAKE_CXX_FLAGS=\"$(KF5_KCOREADDONS_CXXFLAGS)\"\n\nifeq ($(BR2_microblaze),y)\n# Microblaze ld emits warnings, make warnings not to be treated as errors\nKF5_KCOREADDONS_CONF_OPTS += -DCMAKE_SHARED_LINKER_FLAGS=\"-Wl,--no-fatal-warnings\"\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kf5/kf5-modemmanager-qt/Config.in",
    "content": "config BR2_PACKAGE_KF5_MODEMMANAGER_QT\n\tbool \"kf5-modemmanager-qt\"\n\tdepends on BR2_USE_MMU # qt5dbus\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # qt5dbus\n\tdepends on BR2_PACKAGE_MODEM_MANAGER\n\tselect BR2_PACKAGE_QT5BASE_DBUS\n\tselect BR2_PACKAGE_KF5_EXTRA_CMAKE_MODULES\n\thelp\n\t  KF5 is a set of Qt framework addons, extending Qt in various\n\t  ways, not only restricted in helping integration in KDE.\n\n\t  This package contains the ModemManager Qt5 bindings from the\n\t  KF5 project.\n\n\t  https://api.kde.org/frameworks/modemmanager-qt/html/index.html\n\ncomment \"kf5-modemmanager-qt needs toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_MODEM_MANAGER\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/kf5/kf5-modemmanager-qt/kf5-modemmanager-qt.hash",
    "content": "# Locally calculated\nsha256 8b6ab15ce82b7a30b26814178ac33380056ec4398707481aa5ce95cf09d39d03 modemmanager-qt-5.47.0.tar.xz\nsha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB\n"
  },
  {
    "path": "package/kf5/kf5-modemmanager-qt/kf5-modemmanager-qt.mk",
    "content": "################################################################################\n#\n# kf5-modemmanager-qt\n#\n################################################################################\n\nKF5_MODEMMANAGER_QT_VERSION = $(KF5_VERSION)\nKF5_MODEMMANAGER_QT_SITE = $(KF5_SITE)\nKF5_MODEMMANAGER_QT_SOURCE = modemmanager-qt-$(KF5_MODEMMANAGER_QT_VERSION).tar.xz\nKF5_MODEMMANAGER_QT_LICENSE = LGPL-2.1+\nKF5_MODEMMANAGER_QT_LICENSE_FILES = COPYING.LIB\n\nKF5_MODEMMANAGER_QT_DEPENDENCIES = kf5-extra-cmake-modules modem-manager qt5base\nKF5_MODEMMANAGER_QT_INSTALL_STAGING = YES\n\n# Uses __atomic_fetch_add_4\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nKF5_MODEMMANAGER_QT_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kf5/kf5-networkmanager-qt/Config.in",
    "content": "config BR2_PACKAGE_KF5_NETWORKMANAGER_QT\n\tbool \"kf5-networkmanager-qt\"\n\tdepends on BR2_USE_MMU # qt5dbus\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # qt5dbus\n\tdepends on BR2_PACKAGE_NETWORK_MANAGER\n\tselect BR2_PACKAGE_QT5BASE_DBUS\n\tselect BR2_PACKAGE_KF5_EXTRA_CMAKE_MODULES\n\thelp\n\t  KF5 is a set of Qt framework addons, extending Qt in various\n\t  ways, not only restricted in helping integration in KDE.\n\n\t  This package contains the NetworkManager Qt5 bindings from\n\t  the KF5 project.\n\n\t  https://api.kde.org/frameworks/networkmanager-qt/html/index.html\n\ncomment \"kf5-networkmanager-qt needs toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_NETWORK_MANAGER\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/kf5/kf5-networkmanager-qt/kf5-networkmanager-qt.hash",
    "content": "# Locally calculated\nsha256 d0b377500ee4cf4f029f4d04d6844bcf3d2d6734982b511a5fffab5165688209 networkmanager-qt-5.47.0.tar.xz\nsha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\tCOPYING.LIB\n"
  },
  {
    "path": "package/kf5/kf5-networkmanager-qt/kf5-networkmanager-qt.mk",
    "content": "################################################################################\n#\n# kf5-networkmanager-qt\n#\n################################################################################\n\nKF5_NETWORKMANAGER_QT_VERSION = $(KF5_VERSION)\nKF5_NETWORKMANAGER_QT_SITE = $(KF5_SITE)\nKF5_NETWORKMANAGER_QT_SOURCE = networkmanager-qt-$(KF5_NETWORKMANAGER_QT_VERSION).tar.xz\nKF5_NETWORKMANAGER_QT_LICENSE = LGPL-2.1+\nKF5_NETWORKMANAGER_QT_LICENSE_FILES = COPYING.LIB\n\nKF5_NETWORKMANAGER_QT_DEPENDENCIES = kf5-extra-cmake-modules network-manager qt5base\nKF5_NETWORKMANAGER_QT_INSTALL_STAGING = YES\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kf5/kf5.mk",
    "content": "################################################################################\n#\n# kf5\n#\n################################################################################\n\nKF5_VERSION_MAJOR = 5.47\nKF5_VERSION = $(KF5_VERSION_MAJOR).0\nKF5_SITE = https://download.kde.org/stable/frameworks/$(KF5_VERSION_MAJOR)\n\ninclude $(sort $(wildcard package/kf5/*/*.mk))\n"
  },
  {
    "path": "package/kismet/Config.in",
    "content": "comment \"kismet needs a toolchain w/ threads, C++, gcc >= 5\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\nconfig BR2_PACKAGE_KISMET\n\tbool \"kismet\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\" # protobuf-c\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14\n\tselect BR2_PACKAGE_LIBPCAP\n\tselect BR2_PACKAGE_PROTOBUF_C\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Kismet is a wireless network and device detector, sniffer,\n\t  wardriving tool, and WIDS (wireless intrusion detection)\n\t  framework.\n\n\t  Kismet works with Wi-Fi interfaces, Bluetooth interfaces, some\n\t  SDR (software defined radio) hardware like the RTLSDR, and\n\t  other specialized capture hardware.\n\n\t  http://www.kismetwireless.net\n\nif BR2_PACKAGE_KISMET\n\nconfig BR2_PACKAGE_KISMET_PYTHON_TOOLS\n\tbool \"Install python tools\"\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS # python-numpy\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on !BR2_STATIC_LIBS # protobuf\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy\n\tselect BR2_PACKAGE_PROTOBUF\n\tselect BR2_PACKAGE_PYTHON_NUMPY # runtime for RTLAMR and RTLADSB\n\tselect BR2_PACKAGE_PYTHON_PROTOBUF # runtime\n\tselect BR2_PACKAGE_PYTHON_SERIAL # runtime for Freaklabs Zigbee\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS\n\thelp\n\t  Enable Python and Python-related tools (RTL_433, RTLAMR,\n\t  RTLADSB and Freaklabs Zigbee)\n\ncomment \"python tools needs python3\"\n\tdepends on !BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\ncomment \"python tools needs a glibc or musl toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\tdepends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)\n\nconfig BR2_PACKAGE_KISMET_SERVER\n\tbool \"Install server\"\n\tdefault y\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_USE_WCHAR\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future\n\tselect BR2_PACKAGE_PROTOBUF\n\ncomment \"server needs a toolchain w/ dynamic library, wchar\"\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\tdepends on BR2_STATIC_LIBS || !BR2_USE_WCHAR\n\ncomment \"server needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nendif\n"
  },
  {
    "path": "package/kismet/kismet.hash",
    "content": "# Locally computed\nsha256  1c8e31b1babdb0fc93ac38fd0772a24d4b40f865fbc292fa8ec7f4a18ced0135  kismet-2021-08-R1.tar.xz\nsha256  93c7f0d7e356b0abfb6f494ff3ea37f96abc84e9a5619b25d4e43f7553a55739  LICENSE\n"
  },
  {
    "path": "package/kismet/kismet.mk",
    "content": "################################################################################\n#\n# kismet\n#\n################################################################################\n\nKISMET_VERSION = 2021-08-R1\nKISMET_SOURCE = kismet-$(KISMET_VERSION).tar.xz\nKISMET_SITE = http://www.kismetwireless.net/code\nKISMET_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tlibpcap \\\n\t$(if $(BR2_PACKAGE_LIBNL),libnl) \\\n\t$(if $(BR2_PACKAGE_PROTOBUF),protobuf) \\\n\tprotobuf-c \\\n\tsqlite \\\n\tzlib\nKISMET_LICENSE = GPL-2.0+\nKISMET_LICENSE_FILES = LICENSE\nKISMET_SELINUX_MODULES = kismet\n\nKISMET_CONF_OPTS = --disable-debuglibs\n\nKISMET_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nKISMET_CXXFLAGS += -O0\nendif\n\nKISMET_CONF_ENV += CXXFLAGS=\"$(KISMET_CXXFLAGS)\"\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nKISMET_CONF_ENV += LIBS=-latomic\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nKISMET_DEPENDENCIES += libcap\nKISMET_CONF_OPTS += --enable-libcap\nelse\nKISMET_CONF_OPTS += --disable-libcap\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nKISMET_DEPENDENCIES += libusb\nKISMET_CONF_OPTS += --enable-libusb\nelse\nKISMET_CONF_OPTS += --disable-libusb\nendif\n\nifeq ($(BR2_PACKAGE_LIBWEBSOCKETS),y)\nKISMET_DEPENDENCIES += libwebsockets\nKISMET_CONF_OPTS += --enable-libwebsockets\nelse\nKISMET_CONF_OPTS += --disable-libwebsockets\nendif\n\nifeq ($(BR2_PACKAGE_LM_SENSORS),y)\nKISMET_DEPENDENCIES += lm-sensors\nKISMET_CONF_OPTS += --enable-lmsensors\nelse\nKISMET_CONF_OPTS += --disable-lmsensors\nendif\n\nifeq ($(BR2_PACKAGE_PCRE),y)\nKISMET_DEPENDENCIES += pcre\nKISMET_CONF_OPTS += --enable-pcre\nelse\nKISMET_CONF_OPTS += --disable-pcre\nendif\n\nifeq ($(BR2_PACKAGE_KISMET_PYTHON_TOOLS),y)\nKISMET_DEPENDENCIES += python3 python-setuptools\nKISMET_CONF_OPTS += \\\n\t--enable-python-tools \\\n\t--with-python-interpreter=$(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR)\nelse\nKISMET_CONF_OPTS += --disable-python-tools\nendif\n\nKISMET_INSTALL_TARGET_OPTS += \\\n\tDESTDIR=$(TARGET_DIR) \\\n\tINSTUSR=$(shell id -u) \\\n\tINSTGRP=$(shell id -g) \\\n\tSUIDGROUP=$(shell id -g)\n\nifeq ($(BR2_PACKAGE_KISMET_SERVER),y)\nKISMET_CONF_OPTS += --disable-capture-tools-only\nKISMET_INSTALL_TARGET_OPTS += install\nelse\nKISMET_CONF_OPTS += --enable-capture-tools-only\nKISMET_INSTALL_TARGET_OPTS += binsuidinstall\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/kmod/0001-fix-O_CLOEXEC.patch",
    "content": "From b39a62f6682463bcd47480348fac3dcd209a19a5 Mon Sep 17 00:00:00 2001\nFrom: Robert Yang <liezhi.yang@windriver.com>\nDate: Wed, 22 Jan 2014 01:06:40 -0500\nSubject: [PATCH] Add dummy definition of O_CLOEXEC\n\nO_CLOEXEC is introduced from Linux 2.6.23, so old kernel doesn't have\nit, we need check before use.\n\nThis patch is much more like a workaround, since it may need fcntl() use\nFD_CLOEXEC to replace.\n\nThis problem was reported by \"Ting Liu <b28495@freescale.com>\"\n\n[Thomas De Schampheleire <thomas.de.schampheleire@gmail.com:\n - move dummy definition from libkmod-internal.h to missing.h\n - update commit title]\n\n[Vicente: Adapt this patch to version 19.]\n\nSigned-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n\nUpstream-status: rejected, suggests to add in buildroot instead [1]\n\n[1] http://news.gmane.org/find-root.php?message_id=1412062906%2d27378%2d1%2dgit%2dsend%2demail%2dpatrickdepinguin%40gmail.com\n\n---\n shared/missing.h |    4 ++++\n 1 files changed, 4 insertions(+), 0 deletions(-)\n\ndiff --git a/shared/missing.h b/shared/missing.h\nindex 4c0d136..e123e98 100644\n--- a/shared/missing.h\n+++ b/shared/missing.h\n@@ -19,6 +19,10 @@\n # define __NR_finit_module -1\n #endif\n \n+#ifndef O_CLOEXEC\n+#define O_CLOEXEC 0\n+#endif\n+\n #ifndef HAVE_FINIT_MODULE\n #include <errno.h>\n \n-- \n1.7.1\n\n"
  },
  {
    "path": "package/kmod/Config.in",
    "content": "config BR2_PACKAGE_KMOD\n\tbool \"kmod\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  handle kernel modules\n\n\t  http://git.kernel.org/?p=utils/kernel/kmod/kmod.git\n\nif BR2_PACKAGE_KMOD\n\nconfig BR2_PACKAGE_KMOD_TOOLS\n\tbool \"kmod utilities\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  Install kmod module utilities (depmod, insmod, lsmod,\n\t  modinfo, modprobe, rmmod).\n\nendif\n\ncomment \"kmod needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/kmod/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_KMOD\n\tbool \"host kmod\"\n\thelp\n\t  kmod is a set of tools to handle common tasks with Linux\n\t  kernel modules like insert, remove, list, check properties,\n\t  resolve dependencies and aliases.\n\nif BR2_PACKAGE_HOST_KMOD\n\nconfig BR2_PACKAGE_HOST_KMOD_GZ\n\tbool \"support gzip-compressed modules\"\n\nconfig BR2_PACKAGE_HOST_KMOD_ZSTD\n\tbool \"support zstd-compressed modules\"\n\nconfig BR2_PACKAGE_HOST_KMOD_XZ\n\tbool \"support xz-compressed modules\"\n\nendif\n"
  },
  {
    "path": "package/kmod/kmod.hash",
    "content": "# From https://www.kernel.org/pub/linux/utils/kernel/kmod/sha256sums.asc\nsha256  0b80eea7aa184ac6fd20cafa2a1fdf290ffecc70869a797079e2cc5c6225a52a  kmod-29.tar.xz\n\n# Locally calculated\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  libkmod/COPYING\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  COPYING\n"
  },
  {
    "path": "package/kmod/kmod.mk",
    "content": "################################################################################\n#\n# kmod\n#\n################################################################################\n\nKMOD_VERSION = 29\nKMOD_SOURCE = kmod-$(KMOD_VERSION).tar.xz\nKMOD_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/kernel/kmod\nKMOD_INSTALL_STAGING = YES\nKMOD_DEPENDENCIES = host-pkgconf\nHOST_KMOD_DEPENDENCIES = host-pkgconf\n\n# license info for libkmod only, conditionally add more below\nKMOD_LICENSE = LGPL-2.1+ (library)\nKMOD_LICENSE_FILES = libkmod/COPYING\n\nKMOD_CPE_ID_VENDOR = kernel\n\n# --gc-sections triggers binutils ld segfault\n# https://sourceware.org/bugzilla/show_bug.cgi?id=21180\nifeq ($(BR2_microblaze),y)\nKMOD_CONF_ENV += cc_cv_LDFLAGS__Wl___gc_sections=false\nendif\n\n# static linking not supported, see\n# https://git.kernel.org/cgit/utils/kernel/kmod/kmod.git/commit/?id=b7016153ec8\nKMOD_CONF_OPTS = --disable-static --enable-shared\n\nKMOD_CONF_OPTS += --disable-manpages\nHOST_KMOD_CONF_OPTS = --disable-manpages\n\nifeq ($(BR2_PACKAGE_BASH_COMPLETION),y)\nKMOD_CONF_OPTS += --with-bashcompletiondir=/usr/share/bash-completion/completions\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nKMOD_DEPENDENCIES += zlib\nKMOD_CONF_OPTS += --with-zlib\nelse\nKMOD_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nKMOD_DEPENDENCIES += zstd\nKMOD_CONF_OPTS += --with-zstd\nelse\nKMOD_CONF_OPTS += --without-zstd\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nKMOD_DEPENDENCIES += xz\nKMOD_CONF_OPTS += --with-xz\nelse\nKMOD_CONF_OPTS += --without-xz\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nKMOD_DEPENDENCIES += openssl\nKMOD_CONF_OPTS += --with-openssl\nelse\nKMOD_CONF_OPTS += --without-openssl\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)\nKMOD_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,python3)\nKMOD_CONF_OPTS += --enable-python\nendif\n\nifeq ($(BR2_PACKAGE_KMOD_TOOLS),y)\n\n# add license info for kmod tools\nKMOD_LICENSE += , GPL-2.0+ (tools)\nKMOD_LICENSE_FILES += COPYING\n\n# /sbin is really /usr/sbin with merged /usr, so adjust relative symlink\nifeq ($(BR2_ROOTFS_MERGED_USR),y)\nKMOD_BIN_PATH = ../bin/kmod\nelse\nKMOD_BIN_PATH = ../usr/bin/kmod\nendif\n\ndefine KMOD_INSTALL_TOOLS\n\tfor i in depmod insmod lsmod modinfo modprobe rmmod; do \\\n\t\tln -sf $(KMOD_BIN_PATH) $(TARGET_DIR)/sbin/$$i; \\\n\tdone\nendef\n\nKMOD_POST_INSTALL_TARGET_HOOKS += KMOD_INSTALL_TOOLS\nelse\nKMOD_CONF_OPTS += --disable-tools\nendif\n\nifeq ($(BR2_PACKAGE_HOST_KMOD_GZ),y)\nHOST_KMOD_DEPENDENCIES += host-zlib\nHOST_KMOD_CONF_OPTS += --with-zlib\nelse\nHOST_KMOD_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_HOST_KMOD_ZSTD),y)\nHOST_KMOD_DEPENDENCIES += host-zstd\nHOST_KMOD_CONF_OPTS += --with-zstd\nelse\nHOST_KMOD_CONF_OPTS += --without-zstd\nendif\n\nifeq ($(BR2_PACKAGE_HOST_KMOD_XZ),y)\nHOST_KMOD_DEPENDENCIES += host-xz\nHOST_KMOD_CONF_OPTS += --with-xz\nelse\nHOST_KMOD_CONF_OPTS += --without-xz\nendif\n\n# We only install depmod, since that's the only tool used for the\n# host.\ndefine HOST_KMOD_INSTALL_TOOLS\n\tmkdir -p $(HOST_DIR)/sbin/\n\tln -sf ../bin/kmod $(HOST_DIR)/sbin/depmod\nendef\n\nHOST_KMOD_POST_INSTALL_HOOKS += HOST_KMOD_INSTALL_TOOLS\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/kmscube/Config.in",
    "content": "config BR2_PACKAGE_KMSCUBE\n\tbool \"kmscube\"\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tdepends on BR2_PACKAGE_HAS_LIBGBM\n\tdepends on BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libdrm\n\tselect BR2_PACKAGE_LIBDRM\n\thelp\n\t  kmscube is an application to test kms/drm drivers.\n\n\t  https://cgit.freedesktop.org/mesa/kmscube/\n\ncomment \"kmscube needs EGL, GBM and OpenGL ES, and a toolchain w/ thread support\"\n\tdepends on \\\n\t\t!BR2_PACKAGE_HAS_LIBEGL || \\\n\t\t!BR2_PACKAGE_HAS_LIBGBM || \\\n\t\t!BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT || \\\n\t\t!BR2_PACKAGE_HAS_LIBGLES || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/kmscube/kmscube.hash",
    "content": "# Locally computed\nsha256  ec135069d8bee7f4fe38cb9dc96fbbd56e0057290fa25eff8b5b314ee473c502  kmscube-4660a7dca6512b6e658759d00cff7d4ad2a2059d.tar.gz\nsha256  f622099ab0d274133f6e62d5fccfe970b61134d80ed036f45f8cf1e90c3d5a05  COPYING\n"
  },
  {
    "path": "package/kmscube/kmscube.mk",
    "content": "################################################################################\n#\n# kmscube\n#\n################################################################################\n\nKMSCUBE_VERSION = 4660a7dca6512b6e658759d00cff7d4ad2a2059d\nKMSCUBE_SITE = https://gitlab.freedesktop.org/mesa/kmscube/-/archive/$(KMSCUBE_VERSION)\nKMSCUBE_LICENSE = MIT\nKMSCUBE_LICENSE_FILES = COPYING\nKMSCUBE_DEPENDENCIES = host-pkgconf libdrm libegl libgbm libgles\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/kmsxx/Config.in",
    "content": "config BR2_PACKAGE_KMSXX\n\tbool \"kms++\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 # linux/dma-buf.h\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libdrm\n\tdepends on BR2_USE_WCHAR # fmt\n\tselect BR2_PACKAGE_FMT\n\tselect BR2_PACKAGE_LIBDRM\n\thelp\n\t  libkms++ is a C++11 library for kernel mode setting.\n\n\t  Also included are simple test tools for KMS.\n\n\t  https://github.com/tomba/kmsxx\n\nif BR2_PACKAGE_KMSXX\n\nconfig BR2_PACKAGE_KMSXX_INSTALL_TESTS\n\tbool \"Install test programs\"\n\thelp\n\t  This option allows to install the kmsxx test programs.\n\nendif\n\ncomment \"kms++ needs a toolchain w/ threads, C++, gcc >= 4.8, headers >= 4.11, wchar\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 \\\n\t\t|| !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/kmsxx/kmsxx.hash",
    "content": "# Locally calculated\nsha256  99759fe9334369ccd80ab0bbfe1110ee47e74f1e20abc2d7b2f028067ea0a0c3  kmsxx-824bbb1f4cd062d66b457faca50f904b34dfd96c.tar.gz\nsha256  fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85  LICENSE\n"
  },
  {
    "path": "package/kmsxx/kmsxx.mk",
    "content": "################################################################################\n#\n# kmsxx\n#\n################################################################################\n\nKMSXX_VERSION = 824bbb1f4cd062d66b457faca50f904b34dfd96c\nKMSXX_SITE = $(call github,tomba,kmsxx,$(KMSXX_VERSION))\nKMSXX_LICENSE = MPL-2.0\nKMSXX_LICENSE_FILES = LICENSE\nKMSXX_INSTALL_STAGING = YES\nKMSXX_DEPENDENCIES = fmt libdrm host-pkgconf\nKMSXX_CONF_OPTS = \\\n\t-Dkmscube=false \\\n\t-Dpykms=disabled \\\n\t-Domap=disabled \\\n\t-Dsystem-pybind11=enabled\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nKMSXX_CXXFLAGS += $(TARGET_CXXFLAGS) -O0\nendif\n\nifeq ($(BR2_PACKAGE_KMSXX_INSTALL_TESTS),y)\nKMSXX_CONF_OPTS += -Dutils=true\n# extra handling for some utils not installed by default\nKMSXX_EXTRA_UTILS = kmsview kmscapture omap-wbcap omap-wbm2m\nifeq ($(BR2_PACKAGE_LIBEVDEV),y)\nKMSXX_DEPENDENCIES += libevdev\nKMSXX_EXTRA_UTILS += kmstouch\nendif\ndefine KMSXX_INSTALL_EXTRA_UTILS\n\t$(foreach t,$(KMSXX_EXTRA_UTILS),\\\n\t\t$(INSTALL) -D -m 0755 $(@D)/build/utils/$(t) \\\n\t\t\t$(TARGET_DIR)/usr/bin/$(t)\n\t)\nendef\nKMSXX_POST_INSTALL_TARGET_HOOKS += KMSXX_INSTALL_EXTRA_UTILS\nelse\nKMSXX_CONF_OPTS += -Dutils=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/knock/Config.in",
    "content": "config BR2_PACKAGE_KNOCK\n\tbool \"knock\"\n\thelp\n\t  A port knocking implementation.\n\t  Provides a daemon and a user application. Port knocking can be\n\t  used to run an arbitrary application, once the daemon detects\n\t  a predefined sequence of incoming TCP/UDP packets on a network\n\t  interface. This can be used, e.g. to open up ports in a\n\t  firewall.\n\n\t  http://www.zeroflux.org/projects/knock\n\nif BR2_PACKAGE_KNOCK\n\nconfig BR2_PACKAGE_KNOCK_KNOCKD\n\tbool \"knockd\"\n\tdefault y\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  Enable knockd\n\nendif\n"
  },
  {
    "path": "package/knock/knock.hash",
    "content": "# locally computed hash\nsha256  7a82c276ca1540faa7f5bb25010f4a59d45323a31c44a30fbe4a6e484dd18b1a  knock-0.8.tar.gz\nsha256  d747e19206e41702e40822dd91d37cbf40edd86f364ea416d667a0e3013f7189  COPYING\n"
  },
  {
    "path": "package/knock/knock.mk",
    "content": "################################################################################\n#\n# knock\n#\n################################################################################\n\nKNOCK_VERSION = 0.8\nKNOCK_SITE = $(call github,jvinet,knock,v$(KNOCK_VERSION))\nKNOCK_AUTORECONF = YES\nKNOCK_LICENSE = GPL-2.0+\nKNOCK_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_KNOCK_KNOCKD),y)\nKNOCK_DEPENDENCIES += libpcap\nKNOCK_CONF_OPTS += --enable-knockd\nifeq ($(BR2_STATIC_LIBS),y)\nKNOCK_CONF_OPTS += LIBS=\"`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\"\nendif\nelse\nKNOCK_CONF_OPTS += --disable-knockd\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/kodi/0001-kodi-config.cmake-use-CMAKE_FIND_ROOT_PATH-to-fix-cr.patch",
    "content": "From 6604cce38fed748e98d3bd2bf9d0f368d67eeb3c Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 29 Jul 2015 23:13:33 +0200\nSubject: [PATCH] kodi-config.cmake: use CMAKE_FIND_ROOT_PATH to fix\n cross-compilation\n\nWhen cross-compiling, the location at build time of the libraries is\nnot the same as the one at run-time. The CMAKE_FIND_ROOT_PATH variable\nis here to handle this difference, so use it in kodi-config.cmake.\n\nUpstream status: Reverted (PR 17616)\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n(rebased and simplified for Kodi 17.0-Krypton)\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n(rebased for Kodi 19.0-Matrix)\n---\n cmake/KodiConfig.cmake.in | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/cmake/KodiConfig.cmake.in b/cmake/KodiConfig.cmake.in\nindex a06d889fca9d..ff299807ea44 100644\n--- a/cmake/KodiConfig.cmake.in\n+++ b/cmake/KodiConfig.cmake.in\n@@ -9,7 +9,7 @@ if(NOT @APP_NAME_UC@_PREFIX)\n   set(@APP_NAME_UC@_PREFIX @APP_PREFIX@)\n endif()\n if(NOT @APP_NAME_UC@_INCLUDE_DIR)\n-  set(@APP_NAME_UC@_INCLUDE_DIR @APP_INCLUDE_DIR@)\n+  set(@APP_NAME_UC@_INCLUDE_DIR ${CMAKE_FIND_ROOT_PATH}/@APP_INCLUDE_DIR@)\n endif()\n if(NOT @APP_NAME_UC@_LIB_DIR)\n   set(@APP_NAME_UC@_LIB_DIR @APP_LIB_DIR@)\n@@ -18,7 +18,7 @@ if(NOT @APP_NAME_UC@_DATA_DIR)\n   set(@APP_NAME_UC@_DATA_DIR @APP_DATA_DIR@)\n endif()\n set(APP_RENDER_SYSTEM @APP_RENDER_SYSTEM@)\n-list(APPEND CMAKE_MODULE_PATH @APP_LIB_DIR@ @APP_DATA_DIR@/cmake)\n+list(APPEND CMAKE_MODULE_PATH ${CMAKE_FIND_ROOT_PATH}/@APP_LIB_DIR@ ${CMAKE_FIND_ROOT_PATH}/@APP_DATA_DIR@/cmake)\n \n string(REPLACE \";\" \" \" ARCH_DEFINES \"@ARCH_DEFINES@\")\n add_definitions(${ARCH_DEFINES} -DBUILD_KODI_ADDON)\n-- \n2.5.0\n\n"
  },
  {
    "path": "package/kodi/Config.in",
    "content": "config BR2_PACKAGE_KODI_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\t# i386: needs sse (see upstream PR 10351)\n\tdepends on !(BR2_i386 && !BR2_X86_CPU_HAS_SSE)\n\tdepends on BR2_USE_MMU # libcdio, and others\n\ncomment \"kodi needs python3 w/ .py modules, a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_KODI_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_USE_WCHAR || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t|| BR2_TOOLCHAIN_USES_MUSL \\\n\t\t|| !BR2_PACKAGE_PYTHON3 \\\n\t\t|| BR2_PACKAGE_PYTHON3_PYC_ONLY\n\nconfig BR2_PACKAGE_KODI_PLATFORM_SUPPORTS\n\tbool\n\nconfig BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_GBM\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES\n\tdepends on BR2_PACKAGE_MESA3D_GBM\n\tdepends on BR2_PACKAGE_HAS_UDEV # libinput\n\tselect BR2_PACKAGE_KODI_PLATFORM_SUPPORTS\n\nconfig BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_WAYLAND\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES\n\tdepends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND # waylandpp\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # waylandpp\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # waylandpp\n\tdepends on BR2_INSTALL_LIBSTDCPP # waylandpp\n\tdepends on BR2_PACKAGE_WAYLAND # waylandpp\n\tselect BR2_PACKAGE_KODI_PLATFORM_SUPPORTS\n\nconfig BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_X11\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_KODI_PLATFORM_SUPPORTS\n\ncomment \"kodi needs an OpenGL EGL backend with OpenGL or GLES support\"\n\tdepends on !BR2_PACKAGE_KODI_PLATFORM_SUPPORTS\n\nmenuconfig BR2_PACKAGE_KODI\n\tbool \"kodi\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libass -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\tdepends on BR2_USE_WCHAR\n\tdepends on !BR2_STATIC_LIBS # gnutls, python3 and others\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tdepends on BR2_PACKAGE_KODI_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_KODI_PLATFORM_SUPPORTS\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on !BR2_PACKAGE_PYTHON3_PYC_ONLY\n\tselect BR2_NEEDS_HOST_JAVA\n\tselect BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_FFMPEG_GPL\n\tselect BR2_PACKAGE_FFMPEG_POSTPROC\n\tselect BR2_PACKAGE_FFMPEG_SWSCALE\n\tselect BR2_PACKAGE_FLATBUFFERS\n\tselect BR2_PACKAGE_FMT\n\tselect BR2_PACKAGE_FONTCONFIG # needed for libass\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_FSTRCMP\n\tselect BR2_PACKAGE_LIBASS\n\tselect BR2_PACKAGE_LIBCDIO\n\tselect BR2_PACKAGE_LIBCROSSGUID\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_LIBFRIBIDI\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_LIBICONV_EXTRA_ENCODINGS if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_LIBPLIST\n\tselect BR2_PACKAGE_LZO\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_PCRE_UCP\n\tselect BR2_PACKAGE_PYTHON3_2TO3\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT\n\tselect BR2_PACKAGE_PYTHON3_SQLITE\n\tselect BR2_PACKAGE_PYTHON3_SSL\n\tselect BR2_PACKAGE_PYTHON3_UNICODEDATA\n\tselect BR2_PACKAGE_PYTHON3_ZLIB\n\tselect BR2_PACKAGE_RAPIDJSON\n\tselect BR2_PACKAGE_SPDLOG\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_TAGLIB\n\tselect BR2_PACKAGE_TINYXML\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY if BR2_TOOLCHAIN_USES_GLIBC # runtime UTF conversion support\n\tselect BR2_PACKAGE_LIBINPUT if BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_GBM\n\tselect BR2_PACKAGE_LIBXKBCOMMON if BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_GBM\n\tselect BR2_PACKAGE_LIBXKBCOMMON if BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_WAYLAND\n\tselect BR2_PACKAGE_WAYLANDPP if BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_WAYLAND\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_X11\n\thelp\n\t  Kodi is an award-winning free and open source (GPL) software\n\t  media player and entertainment hub for digital media.\n\n\t  http://kodi.tv\n\nif BR2_PACKAGE_KODI\n\nconfig BR2_PACKAGE_KODI_ALSA_LIB\n\tbool \"alsa\"\n\tselect BR2_PACKAGE_ALSA_LIB\n\thelp\n\t  Enable alsa support.\n\nconfig BR2_PACKAGE_KODI_AVAHI\n\tbool \"avahi\"\n\tselect BR2_PACKAGE_AVAHI\n\tselect BR2_PACKAGE_AVAHI_DAEMON\n\thelp\n\t  Enable Avahi support.\n\t  Select this if you want Kodi to support Bonjour protocol.\n\nconfig BR2_PACKAGE_KODI_BLUEZ\n\tbool \"bluetooth\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5_utils\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5_utils\n\tselect BR2_PACKAGE_BLUEZ5_UTILS\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID\n\thelp\n\t    Enable bluetooth support\n\nconfig BR2_PACKAGE_KODI_DBUS\n\tbool \"dbus\"\n\tselect BR2_PACKAGE_DBUS\n\thelp\n\t  Enable D-Bus support\n\nconfig BR2_PACKAGE_KODI_EVENTCLIENTS\n\tbool \"eventclients\"\n\thelp\n\t  Enable event clients support\n\n\t  https://github.com/xbmc/xbmc/blob/master/tools/EventClients/README.txt\n\nconfig BR2_PACKAGE_KODI_LIBBLURAY\n\tbool \"blu-ray\"\n\tselect BR2_PACKAGE_LIBBLURAY\n\thelp\n\t  Enable Blu-ray input support.\n\t  Select this if you want to play back Blu-ray content.\n\nconfig BR2_PACKAGE_KODI_LIBCEC\n\tbool \"hdmi cec\"\n\tselect BR2_PACKAGE_LIBCEC\n\thelp\n\t  Enable CEC (Consumer Electronics Control) support.\n\t  Select this if you want Kodi to support HDMI CEC.\n\nconfig BR2_PACKAGE_KODI_LCMS2\n\tbool \"lcms2\"\n\tselect BR2_PACKAGE_LCMS2\n\thelp\n\t  Enable color management support.\n\nconfig BR2_PACKAGE_KODI_LIBMICROHTTPD\n\tbool \"web server\"\n\tselect BR2_PACKAGE_LIBMICROHTTPD\n\thelp\n\t  Enable webserver feature\n\nconfig BR2_PACKAGE_KODI_LIBNFS\n\tbool \"nfs\"\n\t# libnfs -> libtirpc\n\tdepends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBNFS\n\thelp\n\t  Enable NFS server support.\n\ncomment \"nfs support needs a toolchain w/ threads support\"\n\tdepends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC)\n\nconfig BR2_PACKAGE_KODI_MYSQL\n\tbool \"mysql\"\n\tselect BR2_PACKAGE_MYSQL\n\thelp\n\t  Enable MySQL support\n\nchoice\n\tprompt \"render system\"\n\tdefault BR2_PACKAGE_KODI_RENDER_SYSTEM_GL\n\nconfig BR2_PACKAGE_KODI_RENDER_SYSTEM_GL\n\tbool \"OpenGL\"\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_LIBGLU\n\nconfig BR2_PACKAGE_KODI_RENDER_SYSTEM_GLES\n\tbool \"GLES\"\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n\nendchoice\n\nconfig BR2_PACKAGE_KODI_PULSEAUDIO\n\tbool \"pulseaudio\"\n\tdepends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC\n\t# Pulseaudio support in kodi needs glib support in Pulseaudio,\n\t# see FindPulseAudio.cmake. Kodi meets all dependencies of\n\t# libglib2, so there is no need to propagate them here.\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_PULSEAUDIO\n\thelp\n\t  Enable Pulseaudio support.\n\nconfig BR2_PACKAGE_KODI_LIBSHAIRPLAY\n\tbool \"shairport\"\n\tselect BR2_PACKAGE_LIBSHAIRPLAY\n\thelp\n\t  Enable Shairport support.\n\t  Select this if you want to stream content from an Apple\n\t  device.\n\nconfig BR2_PACKAGE_KODI_LIBSMBCLIENT\n\tbool \"samba\"\n\tdepends on BR2_PACKAGE_SAMBA4\n\thelp\n\t  Enable Samba support\n\nconfig BR2_PACKAGE_KODI_LIBUSB\n\tbool \"usb\"\n\t# https://github.com/xbmc/xbmc/blob/Jarvis/configure.ac#L1554\n\t# \"if libudev is available, we don't need libusb\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\thelp\n\t  Enable libusb support.\n\nconfig BR2_PACKAGE_KODI_LIBVDPAU\n\tbool \"vdpau\"\n\tdepends on BR2_PACKAGE_KODI_PLATFORM_X11 && \\\n\t\tBR2_PACKAGE_KODI_RENDER_SYSTEM_GL\n\tselect BR2_PACKAGE_LIBVDPAU\n\thelp\n\t  Enable libvdpau support.\n\ncomment \"libvdpau support needs platform 'X11/OpenGL'\"\n\tdepends on !BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_X11 || \\\n\t\t!BR2_PACKAGE_KODI_RENDER_SYSTEM_GL\n\nconfig BR2_PACKAGE_KODI_UPNP\n\tbool \"upnp\"\n\thelp\n\t  Enable UPnP support\n\nconfig BR2_PACKAGE_KODI_OPTICALDRIVE\n\tbool \"optical drives\"\n\thelp\n\t  Add support for optical drives, to read e.g. DVDs...\n\nmenu \"Audio decoder addons\"\n\tsource \"package/kodi-audiodecoder-modplug/Config.in\"\n\tsource \"package/kodi-audiodecoder-nosefart/Config.in\"\n\tsource \"package/kodi-audiodecoder-sidplay/Config.in\"\n\tsource \"package/kodi-audiodecoder-snesapu/Config.in\"\n\tsource \"package/kodi-audiodecoder-stsound/Config.in\"\n\tsource \"package/kodi-audiodecoder-timidity/Config.in\"\n\tsource \"package/kodi-audiodecoder-vgmstream/Config.in\"\nendmenu\n\nmenu \"Audio encoder addons\"\n\tsource \"package/kodi-audioencoder-flac/Config.in\"\n\tsource \"package/kodi-audioencoder-lame/Config.in\"\n\tsource \"package/kodi-audioencoder-vorbis/Config.in\"\n\tsource \"package/kodi-audioencoder-wav/Config.in\"\nendmenu\n\nmenu \"Peripheral addons\"\n\tsource \"package/kodi-peripheral-joystick/Config.in\"\n\tsource \"package/kodi-peripheral-xarcade/Config.in\"\nendmenu\n\nmenu \"Inputstream addons\"\n\tsource \"package/kodi-inputstream-adaptive/Config.in\"\n\tsource \"package/kodi-inputstream-ffmpegdirect/Config.in\"\n\tsource \"package/kodi-inputstream-rtmp/Config.in\"\nendmenu\n\nmenu \"PVR addons\"\n\tsource \"package/kodi-pvr-argustv/Config.in\"\n\tsource \"package/kodi-pvr-dvblink/Config.in\"\n\tsource \"package/kodi-pvr-dvbviewer/Config.in\"\n\tsource \"package/kodi-pvr-filmon/Config.in\"\n\tsource \"package/kodi-pvr-hdhomerun/Config.in\"\n\tsource \"package/kodi-pvr-hts/Config.in\"\n\tsource \"package/kodi-pvr-iptvsimple/Config.in\"\n\tsource \"package/kodi-pvr-mediaportal-tvserver/Config.in\"\n\tsource \"package/kodi-pvr-mythtv/Config.in\"\n\tsource \"package/kodi-pvr-nextpvr/Config.in\"\n\tsource \"package/kodi-pvr-njoy/Config.in\"\n\tsource \"package/kodi-pvr-octonet/Config.in\"\n\tsource \"package/kodi-pvr-pctv/Config.in\"\n\tsource \"package/kodi-pvr-stalker/Config.in\"\n\tsource \"package/kodi-pvr-vbox/Config.in\"\n\tsource \"package/kodi-pvr-vdr-vnsi/Config.in\"\n\tsource \"package/kodi-pvr-vuplus/Config.in\"\n\tsource \"package/kodi-pvr-wmc/Config.in\"\n\tsource \"package/kodi-pvr-zattoo/Config.in\"\nendmenu\n\nmenu \"Screensavers\"\n\tsource \"package/kodi-screensaver-asteroids/Config.in\"\n\tsource \"package/kodi-screensaver-asterwave/Config.in\"\n\tsource \"package/kodi-screensaver-biogenesis/Config.in\"\n\tsource \"package/kodi-screensaver-cpblobs/Config.in\"\n\tsource \"package/kodi-screensaver-greynetic/Config.in\"\n\tsource \"package/kodi-screensaver-matrixtrails/Config.in\"\n\tsource \"package/kodi-screensaver-pingpong/Config.in\"\n\tsource \"package/kodi-screensaver-pyro/Config.in\"\n\tsource \"package/kodi-screensaver-rsxs/Config.in\"\n\tsource \"package/kodi-screensaver-stars/Config.in\"\nendmenu\n\nmenu \"Skins\"\n\tsource \"package/kodi-skin-confluence/Config.in\"\nendmenu\n\nmenu \"Virtual file systems\"\n\tsource \"package/kodi-vfs-libarchive/Config.in\"\n\tsource \"package/kodi-vfs-rar/Config.in\"\n\tsource \"package/kodi-vfs-sftp/Config.in\"\nendmenu\n\nmenu \"Visualisations\"\n\tsource \"package/kodi-visualisation-fishbmc/Config.in\"\n\tsource \"package/kodi-visualisation-goom/Config.in\"\n\tsource \"package/kodi-visualisation-matrix/Config.in\"\n\tsource \"package/kodi-visualisation-shadertoy/Config.in\"\n\tsource \"package/kodi-visualisation-spectrum/Config.in\"\n\tsource \"package/kodi-visualisation-starburst/Config.in\"\n\tsource \"package/kodi-visualisation-waveform/Config.in\"\nendmenu\n\nendif # BR2_PACKAGE_KODI\n"
  },
  {
    "path": "package/kodi/S50kodi",
    "content": "#!/bin/sh\n#\n# Starts Kodi\n#\n\nBIN=/usr/bin/br-kodi\nKODI=/usr/lib/kodi/kodi.bin\nKODI_ARGS=\"--standalone -fs -n\"\nPIDFILE=/var/run/kodi.pid\n\nstart() {\n\tprintf \"Starting Kodi: \"\n\tstart-stop-daemon -S -q -b -m -p $PIDFILE --exec $BIN -- $KODI $KODI_ARGS\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping Kodi: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t;;\n\tstop)\n\t\tstop\n\t;;\n\trestart|reload)\n\t\trestart\n\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n"
  },
  {
    "path": "package/kodi/br-kodi",
    "content": "#!/bin/sh\n\n# We're called with the real Kodi executable as\n# first argument, followed by any Kodi extra args\nKODI=\"${1}\"\nshift\n\n# In case someone asked we terminate, just kill\n# the Kodi process\ntrap_kill() {\n    LOOP=0\n    killall \"${KODI##*/}\"\n}\ntrap trap_kill INT QUIT TERM\n\nLOOP=1\nwhile [ ${LOOP} -eq 1 ]; do\n    # Hack: BusyBox ash does not catch signals while a non-builtin\n    # is running, and only catches the signal when the non-builtin\n    # command ends. So, we just background the Kodi binary, and wait\n    # for it. But BusyBox' ash's wait builtin does not return the\n    # exit code even if there was only one job (which is correct\n    # for POSIX). So we explicitly wait for the Kodi job\n    \"${KODI}\" \"${@}\" &\n    wait %1\n    ret=$?\n    case \"${ret}\" in\n        0)  ;;\n        64) poweroff; LOOP=0;;\n        66) reboot;   LOOP=0;;\n        *)  # Crash\n            sleep 1\n            ;;\n    esac\ndone\nexit ${ret}\n"
  },
  {
    "path": "package/kodi/kodi.hash",
    "content": "# Locally computed\nsha256  440f47e475dd8a48e0a6d41349e83b74890f3fbe8275d3e401d3c50f5b9ea09b  kodi-19.3-Matrix.tar.gz\nsha256  38816f8373e243bc5950449b4f3b18938c4e1c59348e3411e23f31db4072e40d  kodi-libdvdcss-1.4.2-Leia-Beta-5.tar.gz\nsha256  071e414e61b795f2ff9015b21a85fc009dde967f27780d23092643916538a57a  kodi-libdvdnav-6.0.0-Leia-Alpha-3.tar.gz\nsha256  a30b6aa0aad0f2c505bc77948af2d5531a80b6e68112addb4c123fca24d5d3bf  kodi-libdvdread-6.0.0-Leia-Alpha-3.tar.gz\nsha256  9d2396ef3e091d3b82bc84143e070700412984e8589513570f54e0675d1e8851  LICENSE.md\n"
  },
  {
    "path": "package/kodi/kodi.mk",
    "content": "################################################################################\n#\n# kodi\n#\n################################################################################\n\n# When updating the version, please also update kodi-jsonschemabuilder\n# and kodi-texturepacker\nKODI_VERSION_MAJOR = 19.3\nKODI_VERSION_NAME = Matrix\nKODI_VERSION = $(KODI_VERSION_MAJOR)-$(KODI_VERSION_NAME)\nKODI_SITE = $(call github,xbmc,xbmc,$(KODI_VERSION))\nKODI_LICENSE = GPL-2.0\nKODI_LICENSE_FILES = LICENSE.md\nKODI_CPE_ID_VENDOR = kodi\nKODI_CPE_ID_VERSION = $(KODI_VERSION_MAJOR)\n# needed for binary addons\nKODI_INSTALL_STAGING = YES\n# kodi recommends building out-of-source\nKODI_SUPPORTS_IN_SOURCE_BUILD = NO\nKODI_DEPENDENCIES = \\\n\tffmpeg \\\n\tflatbuffers \\\n\tfmt \\\n\tfontconfig \\\n\tfreetype \\\n\tfstrcmp \\\n\thost-flatbuffers \\\n\thost-gawk \\\n\thost-gettext \\\n\thost-gperf \\\n\thost-kodi-jsonschemabuilder \\\n\thost-kodi-texturepacker \\\n\thost-nasm \\\n\thost-swig \\\n\thost-xmlstarlet \\\n\tlibass \\\n\tlibcdio \\\n\tlibcrossguid \\\n\tlibcurl \\\n\tlibdrm \\\n\tlibegl \\\n\tlibfribidi \\\n\tlibplist \\\n\tlzo \\\n\topenssl \\\n\tpcre \\\n\tpython3 \\\n\trapidjson \\\n\tspdlog \\\n\tsqlite \\\n\ttaglib \\\n\ttinyxml \\\n\tzlib\n\n# taken from tools/depends/target/*/*-VERSION\nKODI_LIBDVDCSS_VERSION = 1.4.2-Leia-Beta-5\nKODI_LIBDVDNAV_VERSION = 6.0.0-Leia-Alpha-3\nKODI_LIBDVDREAD_VERSION = 6.0.0-Leia-Alpha-3\nKODI_EXTRA_DOWNLOADS += \\\n\t$(call github,xbmc,libdvdcss,$(KODI_LIBDVDCSS_VERSION))/kodi-libdvdcss-$(KODI_LIBDVDCSS_VERSION).tar.gz \\\n\t$(call github,xbmc,libdvdnav,$(KODI_LIBDVDNAV_VERSION))/kodi-libdvdnav-$(KODI_LIBDVDNAV_VERSION).tar.gz \\\n\t$(call github,xbmc,libdvdread,$(KODI_LIBDVDREAD_VERSION))/kodi-libdvdread-$(KODI_LIBDVDREAD_VERSION).tar.gz\n\nKODI_CONF_OPTS += \\\n\t-DCMAKE_C_FLAGS=\"$(TARGET_CFLAGS) $(KODI_C_FLAGS)\" \\\n\t-DENABLE_APP_AUTONAME=OFF \\\n\t-DENABLE_CCACHE=OFF \\\n\t-DENABLE_DVDCSS=ON \\\n\t-DENABLE_INTERNAL_CROSSGUID=OFF \\\n\t-DWITH_FFMPEG=$(STAGING_DIR)/usr \\\n\t-DENABLE_INTERNAL_FLATBUFFERS=OFF \\\n\t-DFLATBUFFERS_FLATC_EXECUTABLE=$(HOST_DIR)/bin/flatc \\\n\t-DKODI_DEPENDSBUILD=OFF \\\n\t-DENABLE_LDGOLD=OFF \\\n\t-DNATIVEPREFIX=$(HOST_DIR) \\\n\t-DDEPENDS_PATH=$(STAGING_DIR)/usr \\\n\t-DENABLE_TESTING=OFF \\\n\t-DWITH_JSONSCHEMABUILDER=$(HOST_DIR)/bin/JsonSchemaBuilder \\\n\t-DWITH_TEXTUREPACKER=$(HOST_DIR)/bin/TexturePacker \\\n\t-DLIBDVDCSS_URL=$(KODI_DL_DIR)/kodi-libdvdcss-$(KODI_LIBDVDCSS_VERSION).tar.gz \\\n\t-DLIBDVDNAV_URL=$(KODI_DL_DIR)/kodi-libdvdnav-$(KODI_LIBDVDNAV_VERSION).tar.gz \\\n\t-DLIBDVDREAD_URL=$(KODI_DL_DIR)/kodi-libdvdread-$(KODI_LIBDVDREAD_VERSION).tar.gz\n\nifeq ($(BR2_PACKAGE_KODI_RENDER_SYSTEM_GL),y)\nKODI_CONF_OPTS += -DAPP_RENDER_SYSTEM=gl\nKODI_DEPENDENCIES += libgl libglu\nelse ifeq ($(BR2_PACKAGE_KODI_RENDER_SYSTEM_GLES),y)\nKODI_CONF_OPTS += -DAPP_RENDER_SYSTEM=gles\nKODI_DEPENDENCIES += libgles\nendif\n\nifeq ($(BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_GBM),y)\nKODI_CORE_PLATFORM_NAME += gbm\nKODI_DEPENDENCIES += libinput libxkbcommon mesa3d\nendif\n\nifeq ($(BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_WAYLAND),y)\nKODI_CONF_OPTS += \\\n\t-DPC_WAYLANDPP_SCANNER=$(HOST_DIR)/bin/wayland-scanner \\\n\t-DPC_WAYLANDPP_SCANNER_FOUND=ON\nKODI_CORE_PLATFORM_NAME += wayland\nKODI_DEPENDENCIES += libxkbcommon waylandpp\nendif\n\nifeq ($(BR2_PACKAGE_KODI_PLATFORM_SUPPORTS_X11),y)\nKODI_CORE_PLATFORM_NAME += x11\nKODI_DEPENDENCIES += \\\n\txlib_libX11 \\\n\txlib_libXext \\\n\txlib_libXrandr\nendif\n\nKODI_CONF_OPTS += -DCORE_PLATFORM_NAME=\"$(KODI_CORE_PLATFORM_NAME)\"\n\nifeq ($(BR2_ENABLE_LOCALE),)\nKODI_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_arceb)$(BR2_arcle),y)\nKODI_CONF_OPTS += -DWITH_ARCH=arc -DWITH_CPU=arc\nelse ifeq ($(BR2_armeb),y)\nKODI_CONF_OPTS += -DWITH_ARCH=arm -DWITH_CPU=arm\nelse ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y)\nKODI_CONF_OPTS += \\\n\t-DWITH_ARCH=mips$(if $(BR2_ARCH_IS_64),64) \\\n\t-DWITH_CPU=mips$(if $(BR2_ARCH_IS_64),64)\nelse ifeq ($(BR2_powerpc)$(BR2_powerpc64le),y)\nKODI_CONF_OPTS += \\\n\t-DWITH_ARCH=powerpc$(if $(BR2_ARCH_IS_64),64) \\\n\t-DWITH_CPU=powerpc$(if $(BR2_ARCH_IS_64),64)\nelse ifeq ($(BR2_powerpc64)$(BR2_sparc64)$(BR2_sh4)$(BR2_xtensa),y)\nKODI_CONF_OPTS += -DWITH_ARCH=$(BR2_ARCH) -DWITH_CPU=$(BR2_ARCH)\nelse\n# Kodi auto-detects ARCH, tested: arm, aarch64, i386, x86_64\n# see project/cmake/scripts/linux/ArchSetup.cmake\nKODI_CONF_OPTS += -DWITH_CPU=$(BR2_ARCH)\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE),y)\nKODI_CONF_OPTS += -D_SSE_OK=ON -D_SSE_TRUE=ON\nelse\nKODI_CONF_OPTS += -D_SSE_OK=OFF -D_SSE_TRUE=OFF\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE2),y)\nKODI_CONF_OPTS += -D_SSE2_OK=ON -D_SSE2_TRUE=ON\nelse\nKODI_CONF_OPTS += -D_SSE2_OK=OFF -D_SSE2_TRUE=OFF\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE3),y)\nKODI_CONF_OPTS += -D_SSE3_OK=ON -D_SSE3_TRUE=ON\nelse\nKODI_CONF_OPTS += -D_SSE3_OK=OFF -D_SSE3_TRUE=OFF\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSSE3),y)\nKODI_CONF_OPTS += -D_SSSE3_OK=ON -D_SSSE3_TRUE=ON\nelse\nKODI_CONF_OPTS += -D_SSSE3_OK=OFF -D_SSSE3_TRUE=OFF\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE4),y)\nKODI_CONF_OPTS += -D_SSE41_OK=ON -D_SSE41_TRUE=ON\nelse\nKODI_CONF_OPTS += -D_SSE41_OK=OFF -D_SSE41_TRUE=OFF\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE42),y)\nKODI_CONF_OPTS += -D_SSE42_OK=ON -D_SSE42_TRUE=ON\nelse\nKODI_CONF_OPTS += -D_SSE42_OK=OFF -D_SSE42_TRUE=OFF\nendif\n\nifeq ($(BR2_X86_CPU_HAS_AVX),y)\nKODI_CONF_OPTS += -D_AVX_OK=ON -D_AVX_TRUE=ON\nelse\nKODI_CONF_OPTS += -D_AVX_OK=OFF -D_AVX_TRUE=OFF\nendif\n\nifeq ($(BR2_X86_CPU_HAS_AVX2),y)\nKODI_CONF_OPTS += -D_AVX2_OK=ON -D_AVX2_TRUE=ON\nelse\nKODI_CONF_OPTS += -D_AVX2_OK=OFF -D_AVX2_TRUE=OFF\nendif\n\n# mips: uses __atomic_load_8\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nKODI_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_5),)\nKODI_C_FLAGS += -std=gnu99\nendif\n\nifeq ($(BR2_PACKAGE_KODI_MYSQL),y)\nKODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=ON\nKODI_DEPENDENCIES += mysql\nelse\nKODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nKODI_CONF_OPTS += -DENABLE_UDEV=ON\nKODI_DEPENDENCIES += udev\nelse\nKODI_CONF_OPTS += -DENABLE_UDEV=OFF\nifeq ($(BR2_PACKAGE_KODI_LIBUSB),y)\nKODI_CONF_OPTS += -DENABLE_LIBUSB=ON\nKODI_DEPENDENCIES += libusb-compat\nelse\nKODI_CONF_OPTS += -DENABLE_LIBUSB=OFF\nendif\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nKODI_CONF_OPTS += -DENABLE_CAP=ON\nKODI_DEPENDENCIES += libcap\nelse\nKODI_CONF_OPTS += -DENABLE_CAP=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2)$(BR2_PACKAGE_LIBXSLT),yy)\nKODI_CONF_OPTS += -DENABLE_XSLT=ON\nKODI_DEPENDENCIES += libxml2 libxslt\nelse\nKODI_CONF_OPTS += -DENABLE_XSLT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_BLUEZ),y)\nKODI_CONF_OPTS += -DENABLE_BLUETOOTH=ON\nKODI_DEPENDENCIES += bluez5_utils\nelse\nKODI_CONF_OPTS += -DENABLE_BLUETOOTH=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_DBUS),y)\nKODI_DEPENDENCIES += dbus\nKODI_CONF_OPTS += -DENABLE_DBUS=ON\nelse\nKODI_CONF_OPTS += -DENABLE_DBUS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_EVENTCLIENTS),y)\nKODI_CONF_OPTS += -DENABLE_EVENTCLIENTS=ON\nelse\nKODI_CONF_OPTS += -DENABLE_EVENTCLIENTS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_ALSA_LIB),y)\nKODI_CONF_OPTS += -DENABLE_ALSA=ON\nKODI_DEPENDENCIES += alsa-lib\nelse\nKODI_CONF_OPTS += -DENABLE_ALSA=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_LIBMICROHTTPD),y)\nKODI_CONF_OPTS += -DENABLE_MICROHTTPD=ON\nKODI_DEPENDENCIES += libmicrohttpd\nelse\nKODI_CONF_OPTS += -DENABLE_MICROHTTPD=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_LIBSMBCLIENT),y)\nKODI_DEPENDENCIES += samba4\nKODI_CONF_OPTS += -DENABLE_SMBCLIENT=ON\nelse\nKODI_CONF_OPTS += -DENABLE_SMBCLIENT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_LIBNFS),y)\nKODI_DEPENDENCIES += libnfs\nKODI_CONF_OPTS += -DENABLE_NFS=ON\nelse\nKODI_CONF_OPTS += -DENABLE_NFS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_LIBBLURAY),y)\nKODI_DEPENDENCIES += libbluray\nKODI_CONF_OPTS += -DENABLE_BLURAY=ON\nelse\nKODI_CONF_OPTS += -DENABLE_BLURAY=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_LIBSHAIRPLAY),y)\nKODI_DEPENDENCIES += libshairplay\nKODI_CONF_OPTS += -DENABLE_AIRTUNES=ON\nelse\nKODI_CONF_OPTS += -DENABLE_AIRTUNES=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_AVAHI),y)\nKODI_DEPENDENCIES += avahi\nKODI_CONF_OPTS += -DENABLE_AVAHI=ON\nelse\nKODI_CONF_OPTS += -DENABLE_AVAHI=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_LIBCEC),y)\nKODI_DEPENDENCIES += libcec\nKODI_CONF_OPTS += -DENABLE_CEC=ON\nelse\nKODI_CONF_OPTS += -DENABLE_CEC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_LCMS2),y)\nKODI_DEPENDENCIES += lcms2\nKODI_CONF_OPTS += -DENABLE_LCMS2=ON\nelse\nKODI_CONF_OPTS += -DENABLE_LCMS2=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIRC_TOOLS),y)\nKODI_DEPENDENCIES += lirc-tools\nendif\n\nifeq ($(BR2_PACKAGE_LIBVA),y)\nKODI_DEPENDENCIES += libva\nKODI_CONF_OPTS += -DENABLE_VAAPI=ON\nelse\nKODI_CONF_OPTS += -DENABLE_VAAPI=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_LIBVDPAU),y)\nKODI_DEPENDENCIES += libvdpau\nKODI_CONF_OPTS += -DENABLE_VDPAU=ON\nelse\nKODI_CONF_OPTS += -DENABLE_VDPAU=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_UPNP),y)\nKODI_CONF_OPTS += -DENABLE_UPNP=ON\nelse\nKODI_CONF_OPTS += -DENABLE_UPNP=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_OPTICALDRIVE),y)\nKODI_CONF_OPTS += -DENABLE_OPTICAL=ON\nelse\nKODI_CONF_OPTS += -DENABLE_OPTICAL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_KODI_PULSEAUDIO),y)\nKODI_CONF_OPTS += -DENABLE_PULSEAUDIO=ON\nKODI_DEPENDENCIES += pulseaudio\nelse\nKODI_CONF_OPTS += -DENABLE_PULSEAUDIO=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBUDFREAD),y)\nKODI_DEPENDENCIES += libudfread\nelse\nKODI_CONF_OPTS += -DENABLE_INTERNAL_UDFREAD=OFF\nendif\n\n# Remove versioncheck addon, updating Kodi is done by building a new\n# buildroot image.\nKODI_ADDON_MANIFEST = $(TARGET_DIR)/usr/share/kodi/system/addon-manifest.xml\ndefine KODI_CLEAN_UNUSED_ADDONS\n\trm -Rf $(TARGET_DIR)/usr/share/kodi/addons/service.xbmc.versioncheck\n\t$(HOST_DIR)/bin/xml ed -L \\\n\t\t-d \"/addons/addon[text()='service.xbmc.versioncheck']\" \\\n\t\t$(KODI_ADDON_MANIFEST)\nendef\nKODI_POST_INSTALL_TARGET_HOOKS += KODI_CLEAN_UNUSED_ADDONS\n\ndefine KODI_INSTALL_BR_WRAPPER\n\t$(INSTALL) -D -m 0755 package/kodi/br-kodi \\\n\t\t$(TARGET_DIR)/usr/bin/br-kodi\nendef\nKODI_POST_INSTALL_TARGET_HOOKS += KODI_INSTALL_BR_WRAPPER\n\n# When run from a startup script, Kodi has no $HOME where to store its\n# configuration, so ends up storing it in /.kodi  (yes, at the root of\n# the rootfs). This is a problem for read-only filesystems. But we can't\n# easily change that, so create /.kodi as a symlink where we want the\n# config to eventually be. Add synlinks for the legacy XBMC name as well\ndefine KODI_INSTALL_CONFIG_DIR\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/var/kodi\n\tln -sf /var/kodi $(TARGET_DIR)/.kodi\n\tln -sf /var/kodi $(TARGET_DIR)/var/xbmc\n\tln -sf /var/kodi $(TARGET_DIR)/.xbmc\nendef\nKODI_POST_INSTALL_TARGET_HOOKS += KODI_INSTALL_CONFIG_DIR\n\ndefine KODI_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/kodi/S50kodi \\\n\t\t$(TARGET_DIR)/etc/init.d/S50kodi\nendef\n\ndefine KODI_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/kodi/kodi.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/kodi.service\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi/kodi.service",
    "content": "[Unit]\nDescription = Kodi Entertainment Center\nAfter = network.target\n\n[Service]\nType = simple\nExecStart = /usr/lib/kodi/kodi.bin --standalone -fs -n\nRestart = on-failure\n\n[Install]\nWantedBy = multi-user.target\n\n"
  },
  {
    "path": "package/kodi-audiodecoder-modplug/Config.in",
    "content": "config BR2_PACKAGE_KODI_AUDIODECODER_MODPLUG\n\tbool \"kodi-audiodecoder-modplug\"\n\tselect BR2_PACKAGE_LIBMODPLUG\n\thelp\n\t  Modplug decoder addon for Kodi\n\n\t  https://github.com/xbmc/audiodecoder.modplug\n"
  },
  {
    "path": "package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.hash",
    "content": "# Locally computed\nsha256  ff3cb9816a30530d522f6a9a23eb49eb5301fb7880f402de6fc1dea31d3469f6  kodi-audiodecoder-modplug-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.mk",
    "content": "################################################################################\n#\n# kodi-audiodecoder-modplug\n#\n################################################################################\n\nKODI_AUDIODECODER_MODPLUG_VERSION = 19.0.0-Matrix\nKODI_AUDIODECODER_MODPLUG_SITE = $(call github,xbmc,audiodecoder.modplug,$(KODI_AUDIODECODER_MODPLUG_VERSION))\nKODI_AUDIODECODER_MODPLUG_LICENSE = GPL-2.0+\nKODI_AUDIODECODER_MODPLUG_LICENSE_FILES = LICENSE.md\nKODI_AUDIODECODER_MODPLUG_DEPENDENCIES = kodi libmodplug\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-audiodecoder-nosefart/Config.in",
    "content": "config BR2_PACKAGE_KODI_AUDIODECODER_NOSEFART\n\tbool \"kodi-audiodecoder-nosefart\"\n\thelp\n\t  Nosefart decoder addon for Kodi\n\n\t  https://github.com/xbmc/audiodecoder.nosefart\n"
  },
  {
    "path": "package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.hash",
    "content": "# Locally computed\nsha256  4975c65b5acd002cf772707170e54bcbcc48d7898dd2e6b4239bab56636b44e7  kodi-audiodecoder-nosefart-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.mk",
    "content": "################################################################################\n#\n# kodi-audiodecoder-nosefart\n#\n################################################################################\n\nKODI_AUDIODECODER_NOSEFART_VERSION = 19.0.0-Matrix\nKODI_AUDIODECODER_NOSEFART_SITE = $(call github,xbmc,audiodecoder.nosefart,$(KODI_AUDIODECODER_NOSEFART_VERSION))\nKODI_AUDIODECODER_NOSEFART_LICENSE = GPL-2.0+\nKODI_AUDIODECODER_NOSEFART_LICENSE_FILES = LICENSE.md\nKODI_AUDIODECODER_NOSEFART_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-audiodecoder-sidplay/Config.in",
    "content": "config BR2_PACKAGE_KODI_AUDIODECODER_SIDPLAY\n\tbool \"kodi-audiodecoder-sidplay\"\n\tselect BR2_PACKAGE_LIBSIDPLAY2\n\thelp\n\t  Sidplay decoder addon for Kodi\n\n\t  https://github.com/xbmc/audiodecoder.sidplay\n"
  },
  {
    "path": "package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.hash",
    "content": "# Locally computed\nsha256  0da9327e99b18a4ab42f71709ec07ea4e58d9c5f677192c7fa6f5ebb4db5fd08  kodi-audiodecoder-sidplay-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.mk",
    "content": "################################################################################\n#\n# kodi-audiodecoder-sidplay\n#\n################################################################################\n\nKODI_AUDIODECODER_SIDPLAY_VERSION = 19.0.0-Matrix\nKODI_AUDIODECODER_SIDPLAY_SITE = $(call github,xbmc,audiodecoder.sidplay,$(KODI_AUDIODECODER_SIDPLAY_VERSION))\nKODI_AUDIODECODER_SIDPLAY_LICENSE = GPL-2.0+\nKODI_AUDIODECODER_SIDPLAY_LICENSE_FILES = LICENSE.md\nKODI_AUDIODECODER_SIDPLAY_DEPENDENCIES = host-pkgconf kodi libsidplay2\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-audiodecoder-snesapu/Config.in",
    "content": "config BR2_PACKAGE_KODI_AUDIODECODER_SNESAPU\n\tbool \"kodi-audiodecoder-snesapu\"\n\thelp\n\t  SPC decoder addon for Kodi\n\n\t  https://github.com/xbmc/audiodecoder.snesapu\n"
  },
  {
    "path": "package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.hash",
    "content": "# Locally computed\nsha256  8b4c75ccfbcf829922e9dbf10d9ec75c4312ac6ad1837d3cf39833395fb036be  kodi-audiodecoder-snesapu-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.mk",
    "content": "################################################################################\n#\n# kodi-audiodecoder-snesapu\n#\n################################################################################\n\nKODI_AUDIODECODER_SNESAPU_VERSION = 19.0.0-Matrix\nKODI_AUDIODECODER_SNESAPU_SITE = $(call github,xbmc,audiodecoder.snesapu,$(KODI_AUDIODECODER_SNESAPU_VERSION))\nKODI_AUDIODECODER_SNESAPU_LICENSE = GPL-2.0+\nKODI_AUDIODECODER_SNESAPU_LICENSE_FILES = LICENSE.md\nKODI_AUDIODECODER_SNESAPU_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-audiodecoder-stsound/Config.in",
    "content": "config BR2_PACKAGE_KODI_AUDIODECODER_STSOUND\n\tbool \"kodi-audiodecoder-stsound\"\n\thelp\n\t  YM decoder addon for Kodi\n\n\t  https://github.com/xbmc/audiodecoder.stsound\n"
  },
  {
    "path": "package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.hash",
    "content": "# Locally computed\nsha256  dc168de296dafae86a83e36f687f4dd4fd41c3d3134afbb05415f860f750e779  kodi-audiodecoder-stsound-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.mk",
    "content": "################################################################################\n#\n# kodi-audiodecoder-stsound\n#\n################################################################################\n\nKODI_AUDIODECODER_STSOUND_VERSION = 19.0.0-Matrix\nKODI_AUDIODECODER_STSOUND_SITE = $(call github,xbmc,audiodecoder.stsound,$(KODI_AUDIODECODER_STSOUND_VERSION))\nKODI_AUDIODECODER_STSOUND_LICENSE = GPL-2.0+\nKODI_AUDIODECODER_STSOUND_LICENSE_FILES = LICENSE.md\nKODI_AUDIODECODER_STSOUND_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-audiodecoder-timidity/Config.in",
    "content": "config BR2_PACKAGE_KODI_AUDIODECODER_TIMIDITY\n\tbool \"kodi-audiodecoder-timidity\"\n\thelp\n\t  Timidity decoder addon for Kodi\n\n\t  https://github.com/xbmc/audiodecoder.timidity\n"
  },
  {
    "path": "package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.hash",
    "content": "# Locally computed\nsha256  c2a0701978e71102859c7cb308422fe26fb87741d0eab9656650eaea156c3d56  kodi-audiodecoder-timidity-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.mk",
    "content": "################################################################################\n#\n# kodi-audiodecoder-timidity\n#\n################################################################################\n\nKODI_AUDIODECODER_TIMIDITY_VERSION = 19.0.0-Matrix\nKODI_AUDIODECODER_TIMIDITY_SITE = $(call github,xbmc,audiodecoder.timidity,$(KODI_AUDIODECODER_TIMIDITY_VERSION))\nKODI_AUDIODECODER_TIMIDITY_LICENSE = GPL-2.0+\nKODI_AUDIODECODER_TIMIDITY_LICENSE_FILES = LICENSE.md\nKODI_AUDIODECODER_TIMIDITY_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-audiodecoder-vgmstream/Config.in",
    "content": "config BR2_PACKAGE_KODI_AUDIODECODER_VGMSTREAM\n\tbool \"kodi-audiodecoder-vgmstream\"\n\thelp\n\t  VGM decoder addon for Kodi\n\n\t  https://github.com/xbmc/audiodecoder.vgmstream\n"
  },
  {
    "path": "package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.hash",
    "content": "# Locally computed\nsha256  0e349225f35ce4bae3026c669b13c696cec2399ec34c0f7726527d19503e14d4  kodi-audiodecoder-vgmstream-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.mk",
    "content": "################################################################################\n#\n# kodi-audiodecoder-vgmstream\n#\n################################################################################\n\nKODI_AUDIODECODER_VGMSTREAM_VERSION = 19.0.0-Matrix\nKODI_AUDIODECODER_VGMSTREAM_SITE = $(call github,xbmc,audiodecoder.vgmstream,$(KODI_AUDIODECODER_VGMSTREAM_VERSION))\nKODI_AUDIODECODER_VGMSTREAM_LICENSE = GPL-2.0+\nKODI_AUDIODECODER_VGMSTREAM_LICENSE_FILES = LICENSE.md\nKODI_AUDIODECODER_VGMSTREAM_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-audioencoder-flac/Config.in",
    "content": "config BR2_PACKAGE_KODI_AUDIOENCODER_FLAC\n\tbool \"kodi-audioencoder-flac\"\n\tselect BR2_PACKAGE_FLAC\n\tselect BR2_PACKAGE_KODI_OPTICALDRIVE\n\tselect BR2_PACKAGE_LIBOGG\n\thelp\n\t  An audioencoder addon for Kodi\n\n\t  https://github.com/xbmc/audioencoder.flac\n"
  },
  {
    "path": "package/kodi-audioencoder-flac/kodi-audioencoder-flac.hash",
    "content": "# Locally computed\nsha256  9ee5ace606749d7d89b0fadf73432f900e4b51f83531f952b193a235e06d1e73  kodi-audioencoder-flac-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-audioencoder-flac/kodi-audioencoder-flac.mk",
    "content": "################################################################################\n#\n# kodi-audioencoder-flac\n#\n################################################################################\n\nKODI_AUDIOENCODER_FLAC_VERSION = 19.0.0-Matrix\nKODI_AUDIOENCODER_FLAC_SITE = $(call github,xbmc,audioencoder.flac,$(KODI_AUDIOENCODER_FLAC_VERSION))\nKODI_AUDIOENCODER_FLAC_LICENSE = GPL-2.0+\nKODI_AUDIOENCODER_FLAC_LICENSE_FILES = LICENSE.md\nKODI_AUDIOENCODER_FLAC_DEPENDENCIES = flac kodi libogg host-pkgconf\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-audioencoder-lame/Config.in",
    "content": "config BR2_PACKAGE_KODI_AUDIOENCODER_LAME\n\tbool \"kodi-audioencoder-lame\"\n\tselect BR2_PACKAGE_KODI_OPTICALDRIVE\n\tselect BR2_PACKAGE_LAME\n\thelp\n\t  An audioencoder addon for Kodi\n\n\t  https://github.com/xbmc/audioencoder.lame\n"
  },
  {
    "path": "package/kodi-audioencoder-lame/kodi-audioencoder-lame.hash",
    "content": "# Locally computed\nsha256  e2bdf17e5739cc025627a92421b967e5dda3cb35d2e4bb948a64ac97bf0e734e  kodi-audioencoder-lame-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-audioencoder-lame/kodi-audioencoder-lame.mk",
    "content": "################################################################################\n#\n# kodi-audioencoder-lame\n#\n################################################################################\n\nKODI_AUDIOENCODER_LAME_VERSION = 19.0.0-Matrix\nKODI_AUDIOENCODER_LAME_SITE = $(call github,xbmc,audioencoder.lame,$(KODI_AUDIOENCODER_LAME_VERSION))\nKODI_AUDIOENCODER_LAME_LICENSE = GPL-2.0+\nKODI_AUDIOENCODER_LAME_LICENSE_FILES = LICENSE.md\nKODI_AUDIOENCODER_LAME_DEPENDENCIES = kodi lame\nKODI_AUDIOENCODER_LAME_CONF_OPTS += \\\n\t-DLAME_INCLUDE_DIRS=$(STAGING_DIR)/usr/include\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-audioencoder-vorbis/Config.in",
    "content": "config BR2_PACKAGE_KODI_AUDIOENCODER_VORBIS\n\tbool \"kodi-audioencoder-vorbis\"\n\tselect BR2_PACKAGE_KODI_OPTICALDRIVE\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_LIBVORBIS\n\thelp\n\t  An audioencoder addon for Kodi\n\n\t  https://github.com/xbmc/audioencoder.vorbis\n"
  },
  {
    "path": "package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.hash",
    "content": "# Locally computed\nsha256  e7c1f05a921cb2da21a49a1c8d4392b4e9337548481beee9f1f70c07806b1bd6  kodi-audioencoder-vorbis-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.mk",
    "content": "################################################################################\n#\n# kodi-audioencoder-vorbis\n#\n################################################################################\n\nKODI_AUDIOENCODER_VORBIS_VERSION = 19.0.0-Matrix\nKODI_AUDIOENCODER_VORBIS_SITE = $(call github,xbmc,audioencoder.vorbis,$(KODI_AUDIOENCODER_VORBIS_VERSION))\nKODI_AUDIOENCODER_VORBIS_LICENSE = GPL-2.0+\nKODI_AUDIOENCODER_VORBIS_LICENSE_FILES = LICENSE.md\nKODI_AUDIOENCODER_VORBIS_DEPENDENCIES = kodi libogg libvorbis host-pkgconf\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-audioencoder-wav/Config.in",
    "content": "config BR2_PACKAGE_KODI_AUDIOENCODER_WAV\n\tbool \"kodi-audioencoder-wav\"\n\tselect BR2_PACKAGE_KODI_OPTICALDRIVE\n\thelp\n\t  An audioencoder addon for Kodi\n\n\t  https://github.com/xbmc/audioencoder.wav\n"
  },
  {
    "path": "package/kodi-audioencoder-wav/kodi-audioencoder-wav.hash",
    "content": "# Locally computed\nsha256  a0c5799e5010e560247517c1b8c847cb08f78e73f6d6144778a73a1836b534a9  kodi-audioencoder-wav-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-audioencoder-wav/kodi-audioencoder-wav.mk",
    "content": "################################################################################\n#\n# kodi-audioencoder-wav\n#\n################################################################################\n\nKODI_AUDIOENCODER_WAV_VERSION = 19.0.0-Matrix\nKODI_AUDIOENCODER_WAV_SITE = $(call github,xbmc,audioencoder.wav,$(KODI_AUDIOENCODER_WAV_VERSION))\nKODI_AUDIOENCODER_WAV_LICENSE = GPL-2.0+\nKODI_AUDIOENCODER_WAV_LICENSE_FILES = LICENSE.md\nKODI_AUDIOENCODER_WAV_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-inputstream-adaptive/Config.in",
    "content": "config BR2_PACKAGE_KODI_INPUTSTREAM_ADAPTIVE\n\tbool \"kodi-inputstream-adaptive\"\n\t# wvdecrypter/cdm/build/build_config.h\n\tdepends on BR2_aarch64 || BR2_arm || BR2_i386 || BR2_mipsel \\\n\t\t|| BR2_mips64el || BR2_x86_64\n\tselect BR2_PACKAGE_EXPAT\n\thelp\n\t  Kodi inputstream addon for several manifest types\n\n\t  https://github.com/xbmc/inputstream.adaptive\n"
  },
  {
    "path": "package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash",
    "content": "# Locally computed\nsha256  10d0e79a301094cdaa35b3e92c4da6b693fc0b5661ea3b459329245fcdfa2f65  kodi-inputstream-adaptive-19.0.0-Matrix.tar.gz\nsha256  89931c1fb1f3716694175763cf3221cfcd63d6935031cf6b4512d17ffe5d9860  LICENSE.GPL\n"
  },
  {
    "path": "package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk",
    "content": "################################################################################\n#\n# kodi-inputstream-adaptive\n#\n################################################################################\n\nKODI_INPUTSTREAM_ADAPTIVE_VERSION = 19.0.0-Matrix\nKODI_INPUTSTREAM_ADAPTIVE_SITE = $(call github,xbmc,inputstream.adaptive,$(KODI_INPUTSTREAM_ADAPTIVE_VERSION))\nKODI_INPUTSTREAM_ADAPTIVE_LICENSE = GPL-2.0+\nKODI_INPUTSTREAM_ADAPTIVE_LICENSE_FILES = LICENSE.GPL\nKODI_INPUTSTREAM_ADAPTIVE_DEPENDENCIES = expat kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-inputstream-ffmpegdirect/Config.in",
    "content": "config BR2_PACKAGE_KODI_INPUTSTREAM_FFMPEGDIRECT\n\tbool \"kodi-inputstream-ffmpegdirect\"\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_FFMPEG_GPL\n\tselect BR2_PACKAGE_FFMPEG_POSTPROC\n\thelp\n\t  This is a Kodi input stream addon for streams that can be\n\t  opened by FFmpeg's libavformat, such as plain TS, HLS and\n\t  DASH streams.\n\n\t  https://github.com/xbmc/inputstream.ffmpegdirect\n"
  },
  {
    "path": "package/kodi-inputstream-ffmpegdirect/kodi-inputstream-ffmpegdirect.hash",
    "content": "# Locally computed\nsha256  47b920094d1ffaa8a6204ffb223cff94078a764c035a97384ae969e87a3f5e6e  kodi-inputstream-ffmpegdirect-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-inputstream-ffmpegdirect/kodi-inputstream-ffmpegdirect.mk",
    "content": "################################################################################\n#\n# kodi-inputstream-ffmpegdirect\n#\n################################################################################\n\nKODI_INPUTSTREAM_FFMPEGDIRECT_VERSION = 19.0.0-Matrix\nKODI_INPUTSTREAM_FFMPEGDIRECT_SITE = $(call github,xbmc,inputstream.ffmpegdirect,$(KODI_INPUTSTREAM_FFMPEGDIRECT_VERSION))\nKODI_INPUTSTREAM_FFMPEGDIRECT_LICENSE = GPL-2.0+\nKODI_INPUTSTREAM_FFMPEGDIRECT_LICENSE_FILES = LICENSE.md\nKODI_INPUTSTREAM_FFMPEGDIRECT_DEPENDENCIES = bzip2 ffmpeg kodi\nKODI_INPUTSTREAM_FFMPEGDIRECT_CONF_OPTS = \\\n\t-DFFMPEG_PATH=$(STAGING_DIR)/usr\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-inputstream-rtmp/Config.in",
    "content": "config BR2_PACKAGE_KODI_INPUTSTREAM_RTMP\n\tbool \"kodi-inputstream-rtmp\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_RTMPDUMP\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  RTMP input stream add-on for Kodi\n\n\t  https://github.com/xbmc/inputstream.rtmp\n"
  },
  {
    "path": "package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.hash",
    "content": "# Locally computed\nsha256  0e97aaeae7e1aaa16d97996651dcab45aeb6937dc5bf177529c5ad8aa2014b0e  kodi-inputstream-rtmp-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.mk",
    "content": "################################################################################\n#\n# kodi-inputstream-rtmp\n#\n################################################################################\n\nKODI_INPUTSTREAM_RTMP_VERSION = 19.0.0-Matrix\nKODI_INPUTSTREAM_RTMP_SITE = $(call github,xbmc,inputstream.rtmp,$(KODI_INPUTSTREAM_RTMP_VERSION))\nKODI_INPUTSTREAM_RTMP_LICENSE = GPL-2.0+\nKODI_INPUTSTREAM_RTMP_LICENSE_FILES = LICENSE.md\nKODI_INPUTSTREAM_RTMP_DEPENDENCIES = kodi openssl rtmpdump zlib\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk",
    "content": "################################################################################\n#\n# kodi-jsonschemabuilder\n#\n################################################################################\n\n# Not possible to directly refer to kodi variables, because of\n# first/second expansion trickery...\nKODI_JSONSCHEMABUILDER_VERSION = 19.3-Matrix\nKODI_JSONSCHEMABUILDER_SITE = $(call github,xbmc,xbmc,$(KODI_JSONSCHEMABUILDER_VERSION))\nKODI_JSONSCHEMABUILDER_SOURCE = kodi-$(KODI_JSONSCHEMABUILDER_VERSION).tar.gz\nKODI_JSONSCHEMABUILDER_DL_SUBDIR = kodi\nKODI_JSONSCHEMABUILDER_LICENSE = GPL-2.0\nKODI_JSONSCHEMABUILDER_LICENSE_FILES = LICENSE.md\nHOST_KODI_JSONSCHEMABUILDER_SUBDIR = tools/depends/native/JsonSchemaBuilder\n\nHOST_KODI_JSONSCHEMABUILDER_CONF_OPTS = \\\n\t-DCMAKE_MODULE_PATH=$(@D)/project/cmake/modules\n\ndefine HOST_KODI_JSONSCHEMABUILDER_INSTALL_CMDS\n\t$(INSTALL) -m 755 -D \\\n\t\t$(@D)/tools/depends/native/JsonSchemaBuilder/JsonSchemaBuilder \\\n\t\t$(HOST_DIR)/bin/JsonSchemaBuilder\nendef\n\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/kodi-peripheral-joystick/Config.in",
    "content": "config BR2_PACKAGE_KODI_PERIPHERAL_JOYSTICK\n\tbool \"kodi-peripheral-joystick\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_TINYXML\n\thelp\n\t  Kodi joystick support (drivers and button maps)\n\n\t  https://github.com/xbmc/peripheral.joystick\n\ncomment \"kodi-peripheral-joystick needs udev /dev management\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n"
  },
  {
    "path": "package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash",
    "content": "# Locally computed\nsha256  85452cab5aa6e6dd426ca5df76c0832e1c9fa2d464973a16ad5e8c52d4533cc9  kodi-peripheral-joystick-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk",
    "content": "################################################################################\n#\n# kodi-peripheral-joystick\n#\n################################################################################\n\nKODI_PERIPHERAL_JOYSTICK_VERSION = 19.0.0-Matrix\nKODI_PERIPHERAL_JOYSTICK_SITE = $(call github,xbmc,peripheral.joystick,$(KODI_PERIPHERAL_JOYSTICK_VERSION))\nKODI_PERIPHERAL_JOYSTICK_LICENSE = GPL-2.0+\nKODI_PERIPHERAL_JOYSTICK_LICENSE_FILES = LICENSE.md\nKODI_PERIPHERAL_JOYSTICK_DEPENDENCIES = kodi tinyxml udev\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-peripheral-xarcade/Config.in",
    "content": "config BR2_PACKAGE_KODI_PERIPHERAL_XARCADE\n\tbool \"kodi-peripheral-xarcade\"\n\thelp\n\t  X-Arcade Tankstick support for Kodi\n\n\t  https://github.com/kodi-game/peripheral.xarcade\n"
  },
  {
    "path": "package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.hash",
    "content": "# Locally computed\nsha256  b6d6161bdfd3cc4d60d3cd7f3452b1101fad48eea1816fed28865af4b985c244  kodi-peripheral-xarcade-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.mk",
    "content": "################################################################################\n#\n# kodi-peripheral-xarcade\n#\n################################################################################\n\nKODI_PERIPHERAL_XARCADE_VERSION = 19.0.0-Matrix\nKODI_PERIPHERAL_XARCADE_SITE = $(call github,kodi-game,peripheral.xarcade,$(KODI_PERIPHERAL_XARCADE_VERSION))\nKODI_PERIPHERAL_XARCADE_LICENSE = GPL-2.0+\nKODI_PERIPHERAL_XARCADE_LICENSE_FILES = LICENSE.md\nKODI_PERIPHERAL_XARCADE_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-argustv/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_ARGUSTV\n\tbool \"kodi-pvr-argustv\"\n\tselect BR2_PACKAGE_JSONCPP\n\thelp\n\t  Kodi's ARGUS TV client addon\n\n\t  https://github.com/kodi-pvr/pvr.argustv\n"
  },
  {
    "path": "package/kodi-pvr-argustv/kodi-pvr-argustv.hash",
    "content": "# Locally computed\nsha256  f918a526813f06ed522d8e12593556ced0282c9ff2d26a41bceba2ada68d3c6c  kodi-pvr-argustv-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-argustv/kodi-pvr-argustv.mk",
    "content": "################################################################################\n#\n# kodi-pvr-argustv\n#\n################################################################################\n\nKODI_PVR_ARGUSTV_VERSION = 19.0.0-Matrix\nKODI_PVR_ARGUSTV_SITE = $(call github,kodi-pvr,pvr.argustv,$(KODI_PVR_ARGUSTV_VERSION))\nKODI_PVR_ARGUSTV_LICENSE = GPL-2.0+\nKODI_PVR_ARGUSTV_LICENSE_FILES = LICENSE.md\nKODI_PVR_ARGUSTV_DEPENDENCIES = jsoncpp kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-dvblink/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_DVBLINK\n\tbool \"kodi-pvr-dvblink\"\n\tselect BR2_PACKAGE_TINYXML2\n\thelp\n\t  Kodi's DVBLink client addon\n\n\t  https://github.com/kodi-pvr/pvr.dvblink\n"
  },
  {
    "path": "package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash",
    "content": "# Locally computed\nsha256  2bdd6475b9c848300c0058d4ffe284ee26b8af44df534ee45cfeeb51cc80a6ba  kodi-pvr-dvblink-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk",
    "content": "################################################################################\n#\n# kodi-pvr-dvblink\n#\n################################################################################\n\nKODI_PVR_DVBLINK_VERSION = 19.0.0-Matrix\nKODI_PVR_DVBLINK_SITE = $(call github,kodi-pvr,pvr.dvblink,$(KODI_PVR_DVBLINK_VERSION))\nKODI_PVR_DVBLINK_LICENSE = GPL-2.0+\nKODI_PVR_DVBLINK_LICENSE_FILES = LICENSE.md\nKODI_PVR_DVBLINK_DEPENDENCIES = kodi tinyxml2\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-dvbviewer/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_DVBVIEWER\n\tbool \"kodi-pvr-dvbviewer\"\n\tselect BR2_PACKAGE_TINYXML\n\thelp\n\t  Kodi's DVBViewer client addon\n\n\t  https://github.com/kodi-pvr/pvr.dvbviewer\n"
  },
  {
    "path": "package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash",
    "content": "# Locally computed\nsha256  5d2b2c47e8e7a80f6fd573a3bb6369eaa4d68f09c88b8bdad08b614708dfa3ca  kodi-pvr-dvbviewer-19.0.1-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk",
    "content": "################################################################################\n#\n# kodi-pvr-dvbviewer\n#\n################################################################################\n\nKODI_PVR_DVBVIEWER_VERSION = 19.0.1-Matrix\nKODI_PVR_DVBVIEWER_SITE = $(call github,kodi-pvr,pvr.dvbviewer,$(KODI_PVR_DVBVIEWER_VERSION))\nKODI_PVR_DVBVIEWER_LICENSE = GPL-2.0+\nKODI_PVR_DVBVIEWER_LICENSE_FILES = LICENSE.md\nKODI_PVR_DVBVIEWER_DEPENDENCIES = kodi tinyxml\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-filmon/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_FILMON\n\tbool \"kodi-pvr-filmon\"\n\tselect BR2_PACKAGE_JSONCPP\n\thelp\n\t  Filmon PVR client addon for Kodi\n\n\t  https://github.com/kodi-pvr/pvr.filmon\n"
  },
  {
    "path": "package/kodi-pvr-filmon/kodi-pvr-filmon.hash",
    "content": "# Locally computed\nsha256  e4a28e6cd1785e8ea7b99f4ea0068470c998e8b8d5a55d095dabed75a29cd29f  kodi-pvr-filmon-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-filmon/kodi-pvr-filmon.mk",
    "content": "################################################################################\n#\n# kodi-pvr-filmon\n#\n################################################################################\n\nKODI_PVR_FILMON_VERSION = 19.0.0-Matrix\nKODI_PVR_FILMON_SITE = $(call github,kodi-pvr,pvr.filmon,$(KODI_PVR_FILMON_VERSION))\nKODI_PVR_FILMON_LICENSE = GPL-2.0+\nKODI_PVR_FILMON_LICENSE_FILES = LICENSE.md\nKODI_PVR_FILMON_DEPENDENCIES = jsoncpp kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-hdhomerun/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_HDHOMERUN\n\tbool \"kodi-pvr-hdhomerun\"\n\tselect BR2_PACKAGE_JSONCPP\n\tselect BR2_PACKAGE_LIBHDHOMERUN\n\thelp\n\t  Kodi's HDHomeRun client addon\n\n\t  https://github.com/kodi-pvr/pvr.hdhomerun\n"
  },
  {
    "path": "package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash",
    "content": "# Locally computed\nsha256  c3692e70b96f229115f3fc545232885066224a801ada052b8c20633c210e76bc  kodi-pvr-hdhomerun-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk",
    "content": "################################################################################\n#\n# kodi-pvr-hdhomerun\n#\n################################################################################\n\nKODI_PVR_HDHOMERUN_VERSION = 19.0.0-Matrix\nKODI_PVR_HDHOMERUN_SITE = $(call github,kodi-pvr,pvr.hdhomerun,$(KODI_PVR_HDHOMERUN_VERSION))\nKODI_PVR_HDHOMERUN_LICENSE = GPL-2.0+\nKODI_PVR_HDHOMERUN_LICENSE_FILES = LICENSE.md\nKODI_PVR_HDHOMERUN_DEPENDENCIES = jsoncpp kodi libhdhomerun\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-hts/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_HTS\n\tbool \"kodi-pvr-hts\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17\n\thelp\n\t  Tvheadend HTSP PVR client addon for Kodi\n\n\t  https://github.com/kodi-pvr/pvr.hts\n\ncomment \"kodi-pvr-hts needs a toolchain w/ gcc >= 7\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7\n"
  },
  {
    "path": "package/kodi-pvr-hts/kodi-pvr-hts.hash",
    "content": "# Locally computed\nsha256  9aaa8933a23bcdcdc4b4be6dd10adc19f5f27b8915fa5c39f58202c5d1399dc9  kodi-pvr-hts-19.0.2-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-hts/kodi-pvr-hts.mk",
    "content": "################################################################################\n#\n# kodi-pvr-hts\n#\n################################################################################\n\nKODI_PVR_HTS_VERSION = 19.0.2-Matrix\nKODI_PVR_HTS_SITE = $(call github,kodi-pvr,pvr.hts,$(KODI_PVR_HTS_VERSION))\nKODI_PVR_HTS_LICENSE = GPL-2.0+\nKODI_PVR_HTS_LICENSE_FILES = LICENSE.md\nKODI_PVR_HTS_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-iptvsimple/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_IPTVSIMPLE\n\tbool \"kodi-pvr-iptvsimple\"\n\t# kodi-inputstream-adaptive\n\tdepends on BR2_aarch64 || BR2_arm || BR2_i386 || BR2_mipsel \\\n\t\t|| BR2_mips64el || BR2_x86_64\n\tselect BR2_PACKAGE_KODI_INPUTSTREAM_ADAPTIVE # runtime\n\tselect BR2_PACKAGE_KODI_INPUTSTREAM_FFMPEGDIRECT # runtime\n\tselect BR2_PACKAGE_KODI_INPUTSTREAM_RTMP # runtime\n\tselect BR2_PACKAGE_PUGIXML\n\tselect BR2_PACKAGE_XZ\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  IPTV Live TV and Radio PVR client addon for Kodi\n\n\t  https://github.com/kodi-pvr/pvr.iptvsimple\n"
  },
  {
    "path": "package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash",
    "content": "# Locally computed\nsha256  f94ed09b9e54897936785f6bcf64a0adf40a9aa56fba4f5dff46a1846ce04c7c  kodi-pvr-iptvsimple-19.0.1-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk",
    "content": "################################################################################\n#\n# kodi-pvr-iptvsimple\n#\n################################################################################\n\nKODI_PVR_IPTVSIMPLE_VERSION = 19.0.1-Matrix\nKODI_PVR_IPTVSIMPLE_SITE = $(call github,kodi-pvr,pvr.iptvsimple,$(KODI_PVR_IPTVSIMPLE_VERSION))\nKODI_PVR_IPTVSIMPLE_LICENSE = GPL-2.0+\nKODI_PVR_IPTVSIMPLE_LICENSE_FILES = LICENSE.md\nKODI_PVR_IPTVSIMPLE_DEPENDENCIES = kodi pugixml xz zlib\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-mediaportal-tvserver/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_MEDIAPORTAL_TVSERVER\n\tbool \"kodi-pvr-mediaportal-tvserver\"\n\tselect BR2_PACKAGE_TINYXML\n\thelp\n\t  MediaPortal TVServer PVR client addon for Kodi\n\n\t  https://github.com/kodi-pvr/pvr.mediaportal.tvserver\n"
  },
  {
    "path": "package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash",
    "content": "# Locally computed\nsha256  05cc8722b7f35c230726941ae7e3082bbc13ed4d061775696fb8bad4abb7b847  kodi-pvr-mediaportal-tvserver-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk",
    "content": "################################################################################\n#\n# kodi-pvr-mediaportal-tvserver\n#\n################################################################################\n\nKODI_PVR_MEDIAPORTAL_TVSERVER_VERSION = 19.0.0-Matrix\nKODI_PVR_MEDIAPORTAL_TVSERVER_SITE = $(call github,kodi-pvr,pvr.mediaportal.tvserver,$(KODI_PVR_MEDIAPORTAL_TVSERVER_VERSION))\nKODI_PVR_MEDIAPORTAL_TVSERVER_LICENSE = GPL-2.0+\nKODI_PVR_MEDIAPORTAL_TVSERVER_LICENSE_FILES = LICENSE.md\nKODI_PVR_MEDIAPORTAL_TVSERVER_DEPENDENCIES = kodi tinyxml\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-mythtv/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_MYTHTV\n\tbool \"kodi-pvr-mythtv\"\n\thelp\n\t  MythTV PVR for Kodi\n\n\t  https://github.com/kodi-pvr/pvr.mythtv\n"
  },
  {
    "path": "package/kodi-pvr-mythtv/kodi-pvr-mythtv.hash",
    "content": "# Locally computed\nsha256  14d76fda4b9c8e7ac068071e322432fe585357154a2b2bae23d051def766f06d  kodi-pvr-mythtv-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-mythtv/kodi-pvr-mythtv.mk",
    "content": "################################################################################\n#\n# kodi-pvr-mythtv\n#\n################################################################################\n\nKODI_PVR_MYTHTV_VERSION = 19.0.0-Matrix\nKODI_PVR_MYTHTV_SITE = $(call github,janbar,pvr.mythtv,$(KODI_PVR_MYTHTV_VERSION))\nKODI_PVR_MYTHTV_LICENSE = GPL-2.0+\nKODI_PVR_MYTHTV_LICENSE_FILES = LICENSE.md\nKODI_PVR_MYTHTV_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-nextpvr/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_NEXTPVR\n\tbool \"kodi-pvr-nextpvr\"\n\tselect BR2_PACKAGE_TINYXML2\n\thelp\n\t  Kodi's NextPVR client addon\n\n\t  https://github.com/kodi-pvr/pvr.nextpvr\n"
  },
  {
    "path": "package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash",
    "content": "# Locally computed\nsha256  64b47658c0027a98465755cf422241f3d15810113a0fa9d0b819fb7da6670f8c  kodi-pvr-nextpvr-19.0.1-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk",
    "content": "################################################################################\n#\n# kodi-pvr-nextpvr\n#\n################################################################################\n\nKODI_PVR_NEXTPVR_VERSION = 19.0.1-Matrix\nKODI_PVR_NEXTPVR_SITE = $(call github,kodi-pvr,pvr.nextpvr,$(KODI_PVR_NEXTPVR_VERSION))\nKODI_PVR_NEXTPVR_LICENSE = GPL-2.0+\nKODI_PVR_NEXTPVR_LICENSE_FILES = LICENSE.md\nKODI_PVR_NEXTPVR_DEPENDENCIES = kodi tinyxml2\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-njoy/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_NJOY\n\tbool \"kodi-pvr-njoy\"\n\tselect BR2_PACKAGE_TINYXML\n\thelp\n\t  Kodi's Njoy N7 client addon\n\n\t  https://github.com/kodi-pvr/pvr.njoy\n"
  },
  {
    "path": "package/kodi-pvr-njoy/kodi-pvr-njoy.hash",
    "content": "# Locally computed\nsha256  55644b3e7b09f0ae14ccbe55b569b5add782b72fb973e1545414f17c2613a4a8  kodi-pvr-njoy-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-njoy/kodi-pvr-njoy.mk",
    "content": "################################################################################\n#\n# kodi-pvr-njoy\n#\n################################################################################\n\nKODI_PVR_NJOY_VERSION = 19.0.0-Matrix\nKODI_PVR_NJOY_SITE = $(call github,kodi-pvr,pvr.njoy,$(KODI_PVR_NJOY_VERSION))\nKODI_PVR_NJOY_LICENSE = GPL-2.0+\nKODI_PVR_NJOY_LICENSE_FILES = LICENSE.md\nKODI_PVR_NJOY_DEPENDENCIES = kodi tinyxml\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-octonet/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_OCTONET\n\tbool \"kodi-pvr-octonet\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # jsoncpp\n\tselect BR2_PACKAGE_JSONCPP\n\thelp\n\t  DigitalDevices Octonet PVR client addon for Kodi\n\n\t  https://github.com/DigitalDevices/pvr.octonet\n\ncomment \"kodi-pvr-octonet needs a toolchain w/ gcc >= 4.7\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/kodi-pvr-octonet/kodi-pvr-octonet.hash",
    "content": "# Locally computed\nsha256  7b95a4f1d7381ebee1c9be9fca582bb0b70144271a47223ba06fc046ea595aaa  kodi-pvr-octonet-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-octonet/kodi-pvr-octonet.mk",
    "content": "################################################################################\n#\n# kodi-pvr-octonet\n#\n################################################################################\n\nKODI_PVR_OCTONET_VERSION = 19.0.0-Matrix\nKODI_PVR_OCTONET_SITE = $(call github,DigitalDevices,pvr.octonet,$(KODI_PVR_OCTONET_VERSION))\nKODI_PVR_OCTONET_LICENSE = GPL-2.0+\nKODI_PVR_OCTONET_LICENSE_FILES = LICENSE.md\nKODI_PVR_OCTONET_DEPENDENCIES = jsoncpp kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-pctv/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_PCTV\n\tbool \"kodi-pvr-pctv\"\n\tselect BR2_PACKAGE_JSONCPP\n\thelp\n\t  PCTV PVR client addon for Kodi\n\n\t  https://github.com/kodi-pvr/pvr.vdr.vnsi\n"
  },
  {
    "path": "package/kodi-pvr-pctv/kodi-pvr-pctv.hash",
    "content": "# Locally computed\nsha256  004d9f8801e9c5d2d76c0c84d0844c4560ede7e2ed02c4c43286991a54d720c9  kodi-pvr-pctv-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-pctv/kodi-pvr-pctv.mk",
    "content": "################################################################################\n#\n# kodi-pvr-pctv\n#\n################################################################################\n\nKODI_PVR_PCTV_VERSION = 19.0.0-Matrix\nKODI_PVR_PCTV_SITE = $(call github,kodi-pvr,pvr.pctv,$(KODI_PVR_PCTV_VERSION))\nKODI_PVR_PCTV_LICENSE = GPL-2.0+\nKODI_PVR_PCTV_LICENSE_FILES = LICENSE.md\nKODI_PVR_PCTV_DEPENDENCIES = jsoncpp kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-stalker/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_STALKER\n\tbool \"kodi-pvr-stalker\"\n\tselect BR2_PACKAGE_JSONCPP\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  A PVR Client that connects Kodi to Stalker Middleware\n\n\t  https://github.com/kodi-pvr/pvr.stalker\n"
  },
  {
    "path": "package/kodi-pvr-stalker/kodi-pvr-stalker.hash",
    "content": "# Locally computed\nsha256  6161f0593feb67865e78f9aecc8c59019933ddda273e495ffadb0bdb42dde2a3  kodi-pvr-stalker-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-stalker/kodi-pvr-stalker.mk",
    "content": "################################################################################\n#\n# kodi-pvr-stalker\n#\n################################################################################\n\nKODI_PVR_STALKER_VERSION = 19.0.0-Matrix\nKODI_PVR_STALKER_SITE = $(call github,kodi-pvr,pvr.stalker,$(KODI_PVR_STALKER_VERSION))\nKODI_PVR_STALKER_LICENSE = GPL-2.0+\nKODI_PVR_STALKER_LICENSE_FILES = LICENSE.md\nKODI_PVR_STALKER_DEPENDENCIES = jsoncpp kodi libxml2\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-vbox/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_VBOX\n\tbool \"kodi-pvr-vbox\"\n\thelp\n\t  Kodi PVR addon for interfacing with VBox Communications XTi TV\n\t  Gateway\n\n\t  https://github.com/kodi-pvr/pvr.vbox\n"
  },
  {
    "path": "package/kodi-pvr-vbox/kodi-pvr-vbox.hash",
    "content": "# Locally computed\nsha256  a87926702c51e52043e595ceae530a9101761cc15e8e3cadec85ac8cc9ba8f2b  kodi-pvr-vbox-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-vbox/kodi-pvr-vbox.mk",
    "content": "################################################################################\n#\n# kodi-pvr-vbox\n#\n################################################################################\n\nKODI_PVR_VBOX_VERSION = 19.0.0-Matrix\nKODI_PVR_VBOX_SITE = $(call github,kodi-pvr,pvr.vbox,$(KODI_PVR_VBOX_VERSION))\nKODI_PVR_VBOX_LICENSE = GPL-2.0+\nKODI_PVR_VBOX_LICENSE_FILES = LICENSE.md\nKODI_PVR_VBOX_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-vdr-vnsi/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_VDR_VNSI\n\tbool \"kodi-pvr-vdr-vnsi\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17\n\thelp\n\t  Kodi PVR addon VNSI\n\n\t  https://github.com/kodi-pvr/pvr.vdr.vnsi\n\ncomment \"kodi-pvr-vdr-vnsi needs a toolchain w/ gcc >= 7\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7\n"
  },
  {
    "path": "package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash",
    "content": "# Locally computed\nsha256  ab7ba632438d12001cb1e10c2ccb75816be9a9181ec2fdb739bd8eb2f173cf7f  kodi-pvr-vdr-vnsi-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk",
    "content": "################################################################################\n#\n# kodi-pvr-vdr-vnsi\n#\n################################################################################\n\nKODI_PVR_VDR_VNSI_VERSION = 19.0.0-Matrix\nKODI_PVR_VDR_VNSI_SITE = $(call github,kodi-pvr,pvr.vdr.vnsi,$(KODI_PVR_VDR_VNSI_VERSION))\nKODI_PVR_VDR_VNSI_LICENSE = GPL-2.0+\nKODI_PVR_VDR_VNSI_LICENSE_FILES = LICENSE.md\nKODI_PVR_VDR_VNSI_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-vuplus/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_VUPLUS\n\tbool \"kodi-pvr-vuplus\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # json-for-modern-cpp\n\tselect BR2_PACKAGE_JSON_FOR_MODERN_CPP\n\tselect BR2_PACKAGE_TINYXML\n\thelp\n\t  VuPlus PVR client addon for Kodi\n\n\t  https://github.com/kodi-pvr/pvr.vuplus\n\ncomment \"kodi-pvr-vuplus needs a toolchain w/ gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash",
    "content": "# Locally computed\nsha256  59e8b63e3b5a6dd4500fd2c1426e021b5b243909d326e173e84804618a6c2fc6  kodi-pvr-vuplus-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk",
    "content": "################################################################################\n#\n# kodi-pvr-vuplus\n#\n################################################################################\n\nKODI_PVR_VUPLUS_VERSION = 19.0.0-Matrix\nKODI_PVR_VUPLUS_SITE = $(call github,kodi-pvr,pvr.vuplus,$(KODI_PVR_VUPLUS_VERSION))\nKODI_PVR_VUPLUS_LICENSE = GPL-2.0+\nKODI_PVR_VUPLUS_LICENSE_FILES = LICENSE.md\nKODI_PVR_VUPLUS_DEPENDENCIES = json-for-modern-cpp kodi tinyxml\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-wmc/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_WMC\n\tbool \"kodi-pvr-wmc\"\n\thelp\n\t  Kodi's Windows Media Center client addon\n\n\t  https://github.com/kodi-pvr/pvr.wmc\n"
  },
  {
    "path": "package/kodi-pvr-wmc/kodi-pvr-wmc.hash",
    "content": "# Locally computed\nsha256  d3cfa954c01ddec0f69e6777a12fca6314ee579d770a4be8728657e323a8eb8c  kodi-pvr-wmc-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-wmc/kodi-pvr-wmc.mk",
    "content": "################################################################################\n#\n# kodi-pvr-wmc\n#\n################################################################################\n\nKODI_PVR_WMC_VERSION = 19.0.0-Matrix\nKODI_PVR_WMC_SITE = $(call github,kodi-pvr,pvr.wmc,$(KODI_PVR_WMC_VERSION))\nKODI_PVR_WMC_LICENSE = GPL-2.0+\nKODI_PVR_WMC_LICENSE_FILES = LICENSE.md\nKODI_PVR_WMC_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-pvr-zattoo/Config.in",
    "content": "config BR2_PACKAGE_KODI_PVR_ZATTOO\n\tbool \"kodi-pvr-zattoo\"\n\tselect BR2_PACKAGE_RAPIDJSON\n\tselect BR2_PACKAGE_TINYXML2\n\thelp\n\t  Kodi PVR-Addon for Zattoo\n\n\t  https://github.com/rbuehlma/pvr.zattoo\n"
  },
  {
    "path": "package/kodi-pvr-zattoo/kodi-pvr-zattoo.hash",
    "content": "# Locally computed\nsha256  8cc02c4627b5108e39bb7b6a6f56f7ba5debbb1adf982c4f23395944aa7d2c8e  kodi-pvr-zattoo-19.7.10-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-pvr-zattoo/kodi-pvr-zattoo.mk",
    "content": "################################################################################\n#\n# kodi-pvr-zattoo\n#\n################################################################################\n\nKODI_PVR_ZATTOO_VERSION = 19.7.10-Matrix\nKODI_PVR_ZATTOO_SITE = $(call github,rbuehlma,pvr.zattoo,$(KODI_PVR_ZATTOO_VERSION))\nKODI_PVR_ZATTOO_LICENSE = GPL-2.0+\nKODI_PVR_ZATTOO_LICENSE_FILES = LICENSE.md\nKODI_PVR_ZATTOO_DEPENDENCIES = kodi rapidjson tinyxml2\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-screensaver-asteroids/Config.in",
    "content": "config BR2_PACKAGE_KODI_SCREENSAVER_ASTEROIDS\n\tbool \"kodi-screensaver-asteroids\"\n\tselect BR2_PACKAGE_GLM\n\thelp\n\t  Asteroids screensaver for Kodi\n\n\t  https://github.com/xbmc/screensaver.asteroids\n"
  },
  {
    "path": "package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.hash",
    "content": "# Locally computed\nsha256  cbe9f12e650cf81800f609ebab614e47e9366fbc8905e51d445646a75bc5a000  kodi-screensaver-asteroids-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.mk",
    "content": "################################################################################\n#\n# kodi-screensaver-asteroids\n#\n################################################################################\n\nKODI_SCREENSAVER_ASTEROIDS_VERSION = 19.0.0-Matrix\nKODI_SCREENSAVER_ASTEROIDS_SITE = $(call github,xbmc,screensaver.asteroids,$(KODI_SCREENSAVER_ASTEROIDS_VERSION))\nKODI_SCREENSAVER_ASTEROIDS_LICENSE = GPL-2.0+\nKODI_SCREENSAVER_ASTEROIDS_LICENSE_FILES = LICENSE.md\nKODI_SCREENSAVER_ASTEROIDS_DEPENDENCIES = glm kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-screensaver-asterwave/Config.in",
    "content": "config BR2_PACKAGE_KODI_SCREENSAVER_ASTERWAVE\n\tbool \"kodi-screensaver-asterwave\"\n\tselect BR2_PACKAGE_GLM\n\thelp\n\t  AsterWave screensaver for Kodi\n\n\t  https://github.com/xbmc/screensaver.asterwave\n"
  },
  {
    "path": "package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.hash",
    "content": "# Locally computed\nsha256  90b60cb321db34de16a9b64068ab3b78ab81c0d44e62bda0d03535ddb4ae1ebc  kodi-screensaver-asterwave-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.mk",
    "content": "################################################################################\n#\n# kodi-screensaver-asterwave\n#\n################################################################################\n\nKODI_SCREENSAVER_ASTERWAVE_VERSION = 19.0.0-Matrix\nKODI_SCREENSAVER_ASTERWAVE_SITE = $(call github,xbmc,screensaver.asterwave,$(KODI_SCREENSAVER_ASTERWAVE_VERSION))\nKODI_SCREENSAVER_ASTERWAVE_LICENSE = GPL-2.0+\nKODI_SCREENSAVER_ASTERWAVE_LICENSE_FILES = LICENSE.md\nKODI_SCREENSAVER_ASTERWAVE_DEPENDENCIES = glm kodi\n\nKODI_SCREENSAVER_ASTERWAVE_CONF_OPTS += \\\n\t-DCMAKE_C_FLAGS=\"$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`\" \\\n\t-DCMAKE_CXX_FLAGS=\"$(TARGET_CXXFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-screensaver-biogenesis/Config.in",
    "content": "config BR2_PACKAGE_KODI_SCREENSAVER_BIOGENESIS\n\tbool \"kodi-screensaver-biogenesis\"\n\thelp\n\t  BioGenesis screensaver for Kodi\n\n\t  https://github.com/xbmc/screensaver.biogenesis\n"
  },
  {
    "path": "package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.hash",
    "content": "# Locally computed\nsha256  11aceaa34851c7f400bb362d202289b767b3d1d45fbb4addeb151b6ea60ac37c  kodi-screensaver-biogenesis-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.mk",
    "content": "################################################################################\n#\n# kodi-screensaver-biogenesis\n#\n################################################################################\n\nKODI_SCREENSAVER_BIOGENESIS_VERSION = 19.0.0-Matrix\nKODI_SCREENSAVER_BIOGENESIS_SITE = $(call github,xbmc,screensaver.biogenesis,$(KODI_SCREENSAVER_BIOGENESIS_VERSION))\nKODI_SCREENSAVER_BIOGENESIS_LICENSE = GPL-2.0+\nKODI_SCREENSAVER_BIOGENESIS_LICENSE_FILES = LICENSE.md\nKODI_SCREENSAVER_BIOGENESIS_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-screensaver-cpblobs/Config.in",
    "content": "config BR2_PACKAGE_KODI_SCREENSAVER_CPBLOBS\n\tbool \"kodi-screensaver-cpblobs\"\n\tselect BR2_PACKAGE_GLM\n\thelp\n\t  CpBlobs screensaver for Kodi\n\n\t  https://github.com/xbmc/screensaver.cpblobs\n"
  },
  {
    "path": "package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.hash",
    "content": "# Locally computed\nsha256  947ce3bd4edd86da3e01e92ea2da804ca27ffef2fe2492dbf8b5fc8299c52890  kodi-screensaver-cpblobs-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.mk",
    "content": "################################################################################\n#\n# kodi-screensaver-cpblobs\n#\n################################################################################\n\nKODI_SCREENSAVER_CPBLOBS_VERSION = 19.0.0-Matrix\nKODI_SCREENSAVER_CPBLOBS_SITE = $(call github,xbmc,screensaver.cpblobs,$(KODI_SCREENSAVER_CPBLOBS_VERSION))\nKODI_SCREENSAVER_CPBLOBS_LICENSE = GPL-2.0\nKODI_SCREENSAVER_CPBLOBS_LICENSE_FILES = LICENSE.md\nKODI_SCREENSAVER_CPBLOBS_DEPENDENCIES = glm kodi\n\nKODI_SCREENSAVER_CPBLOBS_CONF_OPTS += \\\n\t-DCMAKE_C_FLAGS=\"$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`\" \\\n\t-DCMAKE_CXX_FLAGS=\"$(TARGET_CXXFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-screensaver-greynetic/Config.in",
    "content": "config BR2_PACKAGE_KODI_SCREENSAVER_GREYNETIC\n\tbool \"kodi-screensaver-greynetic\"\n\tselect BR2_PACKAGE_GLM\n\thelp\n\t  Greynetic screensaver for Kodi\n\n\t  https://github.com/xbmc/screensaver.greynetic\n"
  },
  {
    "path": "package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.hash",
    "content": "# Locally computed\nsha256  c0643ea89202ab6bc384a4e6a59de2d09318fe3231d64fe244e81e75dd64827c  kodi-screensaver-greynetic-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.mk",
    "content": "################################################################################\n#\n# kodi-screensaver-greynetic\n#\n################################################################################\n\nKODI_SCREENSAVER_GREYNETIC_VERSION = 19.0.0-Matrix\nKODI_SCREENSAVER_GREYNETIC_SITE = $(call github,xbmc,screensaver.greynetic,$(KODI_SCREENSAVER_GREYNETIC_VERSION))\nKODI_SCREENSAVER_GREYNETIC_LICENSE = GPL-2.0+\nKODI_SCREENSAVER_GREYNETIC_LICENSE_FILES = LICENSE.md\nKODI_SCREENSAVER_GREYNETIC_DEPENDENCIES = glm kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-screensaver-matrixtrails/Config.in",
    "content": "config BR2_PACKAGE_KODI_SCREENSAVER_MATRIXTRAILS\n\tbool \"kodi-screensaver-matrixtrails\"\n\thelp\n\t  Matrix trails screensaver for Kodi\n\n\t  https://github.com/xbmc/screensaver.matrixtrails\n"
  },
  {
    "path": "package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.hash",
    "content": "# Locally computed\nsha256  309e4808ad76989b4c50dd0b55b859bff00b952da0a9dcead7157f935a047fe6  kodi-screensaver-matrixtrails-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.mk",
    "content": "################################################################################\n#\n# kodi-screensaver-matrixtrails\n#\n################################################################################\n\nKODI_SCREENSAVER_MATRIXTRAILS_VERSION = 19.0.0-Matrix\nKODI_SCREENSAVER_MATRIXTRAILS_SITE = $(call github,xbmc,screensaver.matrixtrails,$(KODI_SCREENSAVER_MATRIXTRAILS_VERSION))\nKODI_SCREENSAVER_MATRIXTRAILS_LICENSE = GPL-2.0+\nKODI_SCREENSAVER_MATRIXTRAILS_LICENSE_FILES = LICENSE.md\nKODI_SCREENSAVER_MATRIXTRAILS_DEPENDENCIES = kodi\n\nKODI_SCREENSAVER_MATRIXTRAILS_CONF_OPTS += \\\n\t-DCMAKE_C_FLAGS=\"$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`\" \\\n\t-DCMAKE_CXX_FLAGS=\"$(TARGET_CXXFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-screensaver-pingpong/Config.in",
    "content": "config BR2_PACKAGE_KODI_SCREENSAVER_PINGPONG\n\tbool \"kodi-screensaver-pingpong\"\n\tselect BR2_PACKAGE_GLM\n\thelp\n\t  Ping-pong screensaver for Kodi\n\n\t  https://github.com/xbmc/screensaver.pingpong\n"
  },
  {
    "path": "package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.hash",
    "content": "# Locally computed\nsha256  42d7a0b25dc1b8e1c9171efe066643a7b57162709fcba137f90eb9d24496d2e4  kodi-screensaver-pingpong-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.mk",
    "content": "################################################################################\n#\n# kodi-screensaver-pingpong\n#\n################################################################################\n\nKODI_SCREENSAVER_PINGPONG_VERSION = 19.0.0-Matrix\nKODI_SCREENSAVER_PINGPONG_SITE = $(call github,xbmc,screensaver.pingpong,$(KODI_SCREENSAVER_PINGPONG_VERSION))\nKODI_SCREENSAVER_PINGPONG_LICENSE = GPL-2.0+\nKODI_SCREENSAVER_PINGPONG_LICENSE_FILES = LICENSE.md\nKODI_SCREENSAVER_PINGPONG_DEPENDENCIES = glm kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-screensaver-pyro/Config.in",
    "content": "config BR2_PACKAGE_KODI_SCREENSAVER_PYRO\n\tbool \"kodi-screensaver-pyro\"\n\thelp\n\t  Pyro screensaver for Kodi\n\n\t  https://github.com/xbmc/screensaver.pyro\n"
  },
  {
    "path": "package/kodi-screensaver-pyro/kodi-screensaver-pyro.hash",
    "content": "# Locally computed\nsha256  32dcdfd367d0bf0d7abf4f074fbb754d4c3813c8b2280338af6fddeabd75cade  kodi-screensaver-pyro-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-screensaver-pyro/kodi-screensaver-pyro.mk",
    "content": "################################################################################\n#\n# kodi-screensaver-pyro\n#\n################################################################################\n\nKODI_SCREENSAVER_PYRO_VERSION = 19.0.0-Matrix\nKODI_SCREENSAVER_PYRO_SITE = $(call github,xbmc,screensaver.pyro,$(KODI_SCREENSAVER_PYRO_VERSION))\nKODI_SCREENSAVER_PYRO_LICENSE = GPL-2.0+\nKODI_SCREENSAVER_PYRO_LICENSE_FILES = LICENSE.md\nKODI_SCREENSAVER_PYRO_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-screensaver-rsxs/0001-impSurface.h-fix-build-with-gcc11.patch",
    "content": "From fb23e136f88a94aa497e8eb4369bb06435c2aaf8 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sun, 26 Sep 2021 15:59:29 +0200\nSubject: [PATCH] impSurface.h: fix build with gcc11\n\nlib/Implicit/impSurface.h:44:9: error: 'size_t' does not name a type\n   44 |         size_t vertex_data_size;\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\nUpstream status: https://github.com/xbmc/screensavers.rsxs/pull/52\n---\n lib/Implicit/impSurface.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/lib/Implicit/impSurface.h b/lib/Implicit/impSurface.h\nindex 388701aa..3319820e 100644\n--- a/lib/Implicit/impSurface.h\n+++ b/lib/Implicit/impSurface.h\n@@ -21,6 +21,7 @@\n #ifndef IMPSURFACE_H\n #define IMPSURFACE_H\n \n+#include <cstddef>\n #include <functional>\n \n #ifdef WIN32\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/kodi-screensaver-rsxs/Config.in",
    "content": "config BR2_PACKAGE_KODI_SCREENSAVER_RSXS\n\tbool \"kodi-screensaver-rsxs\"\n\tdepends on BR2_PACKAGE_KODI_RENDER_SYSTEM_GL\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_GLI\n\tselect BR2_PACKAGE_GLM\n\thelp\n\t  RSXS screensaver add-ons for Kodi\n\n\t  https://github.com/xbmc/screensavers.rsxs\n\ncomment \"kodi-screensaver-rsxs needs OpenGL as Kodi render system\"\n\tdepends on !BR2_PACKAGE_KODI_RENDER_SYSTEM_GL\n"
  },
  {
    "path": "package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.hash",
    "content": "# Locally computed\nsha256  d08570d45a7f5bcf43f737a89f2988ebb163590f1746a8f734995711cda0d3a6  kodi-screensaver-rsxs-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.mk",
    "content": "################################################################################\n#\n# kodi-screensaver-rsxs\n#\n################################################################################\n\nKODI_SCREENSAVER_RSXS_VERSION = 19.0.0-Matrix\nKODI_SCREENSAVER_RSXS_SITE = $(call github,xbmc,screensavers.rsxs,$(KODI_SCREENSAVER_RSXS_VERSION))\nKODI_SCREENSAVER_RSXS_LICENSE = GPL-2.0+\nKODI_SCREENSAVER_RSXS_LICENSE_FILES = LICENSE.md\nKODI_SCREENSAVER_RSXS_DEPENDENCIES = bzip2 gli glm kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-screensaver-stars/Config.in",
    "content": "config BR2_PACKAGE_KODI_SCREENSAVER_STARS\n\tbool \"kodi-screensaver-stars\"\n\thelp\n\t  Starfield screensaver for Kodi\n\n\t  https://github.com/xbmc/screensaver.stars\n"
  },
  {
    "path": "package/kodi-screensaver-stars/kodi-screensaver-stars.hash",
    "content": "# Locally computed\nsha256  1c65bd9baa351ba4c5d443205b9e125303e341bd85e99aaf36793f95395372bf  kodi-screensaver-stars-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-screensaver-stars/kodi-screensaver-stars.mk",
    "content": "################################################################################\n#\n# kodi-screensaver-stars\n#\n################################################################################\n\nKODI_SCREENSAVER_STARS_VERSION = 19.0.0-Matrix\nKODI_SCREENSAVER_STARS_SITE = $(call github,xbmc,screensaver.stars,$(KODI_SCREENSAVER_STARS_VERSION))\nKODI_SCREENSAVER_STARS_LICENSE = GPL-2.0+\nKODI_SCREENSAVER_STARS_LICENSE_FILES = LICENSE.md\nKODI_SCREENSAVER_STARS_DEPENDENCIES = kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-skin-confluence/Config.in",
    "content": "config BR2_PACKAGE_KODI_SKIN_CONFLUENCE\n\tbool \"kodi-skin-confluence\"\n\thelp\n\t  Kodi confluence skin\n\n\t  https://github.com/xbmc/skin.confluence\n"
  },
  {
    "path": "package/kodi-skin-confluence/kodi-skin-confluence.hash",
    "content": "# Locally computed\nsha256  49ba4dcf4b512ac0a97bd1a4ebf14685d294d89a7a07c26ddda0fe730c8aa047  kodi-skin-confluence-37a196cdb58c0da87b5b22b047a5d44dc447f1ae.tar.gz\nsha256  89931c1fb1f3716694175763cf3221cfcd63d6935031cf6b4512d17ffe5d9860  LICENSE.txt\n"
  },
  {
    "path": "package/kodi-skin-confluence/kodi-skin-confluence.mk",
    "content": "################################################################################\n#\n# kodi-skin-confluence\n#\n################################################################################\n\nKODI_SKIN_CONFLUENCE_VERSION = 37a196cdb58c0da87b5b22b047a5d44dc447f1ae\nKODI_SKIN_CONFLUENCE_SITE = $(call github,xbmc,skin.confluence,$(KODI_SKIN_CONFLUENCE_VERSION))\nKODI_SKIN_CONFLUENCE_LICENSE = GPL-2.0\nKODI_SKIN_CONFLUENCE_LICENSE_FILES = LICENSE.txt\nKODI_SKIN_CONFLUENCE_DEPENDENCIES = kodi\n\ndefine KODI_SKIN_CONFLUENCE_BUILD_CMDS\n\t$(HOST_DIR)/bin/TexturePacker -input $(@D)/media/ -output $(@D)/media/Textures.xbt -dupecheck -use_none\nendef\n\ndefine KODI_SKIN_CONFLUENCE_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence\n\tcp -dpfr $(@D)/* $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence\n\tfind $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence/media -name *.jpg -delete\n\tfind $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence/media -name *.png -delete\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/kodi-texturepacker/0001-texturepacker.patch",
    "content": "Fix host compile\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr xbmc-656cba5d5c7c5edb166196b48560825b9b1f03fd.org/tools/depends/native/TexturePacker/Makefile xbmc-656cba5d5c7c5edb166196b48560825b9b1f03fd/tools/depends/native/TexturePacker/Makefile\n--- xbmc-656cba5d5c7c5edb166196b48560825b9b1f03fd.org/tools/depends/native/TexturePacker/Makefile\t2015-01-25 09:00:48.000000000 +0100\n+++ xbmc-656cba5d5c7c5edb166196b48560825b9b1f03fd/tools/depends/native/TexturePacker/Makefile\t2015-01-25 13:03:23.606140953 +0100\n@@ -36,7 +36,7 @@\n \t-rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)\n \tcd $(PLATFORM); cp -a $(SOURCE)/* .\n \tcd $(PLATFORM); ./autogen.sh\n-\tcd $(PLATFORM); ./configure --prefix=$(PREFIX) $(EXTRA_CONFIGURE) EXTRA_DEFINES=\"$(NATIVE_ARCH_DEFINES)\"\n+\tcd $(PLATFORM); ./configure --prefix=$(PREFIX) EXTRA_DEFINES=\"$(NATIVE_ARCH_DEFINES)\"\n \n \n $(APP): $(PLATFORM)\n"
  },
  {
    "path": "package/kodi-texturepacker/0002-fix-texture-packer-cmake-source-dir.patch",
    "content": "Fix stand-alone build\n\nCMake Error at CMakeLists.txt:40 (add_executable):\n  Cannot find source file:\n\n    /home/bernd/buildroot/output/build/host-kodi-texturepacker-18.4-Leia/tools/depends/native/TexturePacker/xbmc/guilib/XBTF.cpp\n\n  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm\n  .hpp .hxx .in .txx\n\nCMake Error at CMakeLists.txt:40 (add_executable):\n  No SOURCES given to target: TexturePacker\n\nDownloaded from\nhttps://github.com/LibreELEC/LibreELEC.tv/blob/master/packages/mediacenter/kodi/patches/kodi-100.25-hack-fix-texture-packer-cmake-source-dir.patch\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -Naur a/tools/depends/native/TexturePacker/CMakeLists.txt b/tools/depends/native/TexturePacker/CMakeLists.txt\n--- a/tools/depends/native/TexturePacker/CMakeLists.txt\t2016-12-23 17:10:28.593185862 +0000\n+++ b/tools/depends/native/TexturePacker/CMakeLists.txt\t2016-12-23 17:10:39.469253011 +0000\n@@ -1,3 +1,5 @@\n+set(CMAKE_SOURCE_DIR ${CMAKE_SOURCE_DIR}/../../../..)\n+\n list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)\n \n if(APPLE)\n"
  },
  {
    "path": "package/kodi-texturepacker/kodi-texturepacker.mk",
    "content": "################################################################################\n#\n# kodi-texturepacker\n#\n################################################################################\n\n# Not possible to directly refer to kodi variables, because of\n# first/second expansion trickery...\nKODI_TEXTUREPACKER_VERSION = 19.3-Matrix\nKODI_TEXTUREPACKER_SITE = $(call github,xbmc,xbmc,$(KODI_TEXTUREPACKER_VERSION))\nKODI_TEXTUREPACKER_SOURCE = kodi-$(KODI_TEXTUREPACKER_VERSION).tar.gz\nKODI_TEXTUREPACKER_DL_SUBDIR = kodi\nKODI_TEXTUREPACKER_LICENSE = GPL-2.0\nKODI_TEXTUREPACKER_LICENSE_FILES = LICENSE.md\nHOST_KODI_TEXTUREPACKER_SUBDIR = tools/depends/native/TexturePacker\nHOST_KODI_TEXTUREPACKER_DEPENDENCIES = \\\n\thost-giflib \\\n\thost-libjpeg \\\n\thost-libpng \\\n\thost-lzo\n\nHOST_KODI_TEXTUREPACKER_CXXFLAGS = \\\n\t$(HOST_CXXFLAGS) \\\n\t-std=c++0x \\\n\t-DTARGET_POSIX \\\n\t-DTARGET_LINUX \\\n\t-D_LINUX \\\n\t-I$(@D)/xbmc/linux\n\nHOST_KODI_TEXTUREPACKER_CONF_OPTS += \\\n\t-DCMAKE_CXX_FLAGS=\"$(HOST_KODI_TEXTUREPACKER_CXXFLAGS)\" \\\n\t-DCMAKE_MODULE_PATH=$(@D)/cmake/modules \\\n\t-Wno-dev\n\ndefine HOST_KODI_TEXTUREPACKER_INSTALL_CMDS\n\t$(INSTALL) -m 755 -D \\\n\t\t$(@D)/tools/depends/native/TexturePacker/TexturePacker \\\n\t\t$(HOST_DIR)/bin/TexturePacker\nendef\n\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/kodi-vfs-libarchive/Config.in",
    "content": "config BR2_PACKAGE_KODI_VFS_LIBARCHIVE\n\tbool \"kodi-vfs-libarchive\"\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_LIBARCHIVE\n\tselect BR2_PACKAGE_LZ4\n\tselect BR2_PACKAGE_LZO\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_XZ\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Libarchive VFS add-on for Kodi\n\n\t  https://github.com/xbmc/vfs.libarchive\n"
  },
  {
    "path": "package/kodi-vfs-libarchive/kodi-vfs-libarchive.hash",
    "content": "# Locally computed\nsha256  941dd675e84c2a6e964622fcc36664f011304d2b2e207196aad298167c713715  kodi-vfs-libarchive-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-vfs-libarchive/kodi-vfs-libarchive.mk",
    "content": "################################################################################\n#\n# kodi-vfs-libarchive\n#\n################################################################################\n\nKODI_VFS_LIBARCHIVE_VERSION = 19.0.0-Matrix\nKODI_VFS_LIBARCHIVE_SITE = $(call github,xbmc,vfs.libarchive,$(KODI_VFS_LIBARCHIVE_VERSION))\nKODI_VFS_LIBARCHIVE_LICENSE = GPL-2.0+\nKODI_VFS_LIBARCHIVE_LICENSE_FILES = LICENSE.md\nKODI_VFS_LIBARCHIVE_DEPENDENCIES = \\\n\tbzip2 \\\n\tkodi \\\n\tlibarchive \\\n\tlz4 \\\n\tlzo \\\n\topenssl \\\n\txz \\\n\tzlib\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-vfs-rar/Config.in",
    "content": "config BR2_PACKAGE_KODI_VFS_RAR\n\tbool \"kodi-vfs-rar\"\n\tselect BR2_PACKAGE_TINYXML\n\thelp\n\t  RAR VFS addon for Kodi\n\n\t  https://github.com/xbmc/vfs.rar\n"
  },
  {
    "path": "package/kodi-vfs-rar/kodi-vfs-rar.hash",
    "content": "# Locally computed\nsha256  50f188649466752be3aada267a64252813bac6b975a65527b96a571bd3fb47f5  kodi-vfs-rar-19.0.0-Matrix.tar.gz\n# License files\nsha256  6ecc1687808b7d66b24f874755abfed7464d9751ed0001cd4e8e5d9bf397ff8a  lib/UnrarXLib/license.txt\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-vfs-rar/kodi-vfs-rar.mk",
    "content": "################################################################################\n#\n# kodi-vfs-rar\n#\n################################################################################\n\nKODI_VFS_RAR_VERSION = 19.0.0-Matrix\nKODI_VFS_RAR_SITE = $(call github,xbmc,vfs.rar,$(KODI_VFS_RAR_VERSION))\nKODI_VFS_RAR_LICENSE = unrar, GPL-2.0+\nKODI_VFS_RAR_LICENSE_FILES = lib/UnrarXLib/license.txt LICENSE.md\nKODI_VFS_RAR_DEPENDENCIES = kodi tinyxml\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-vfs-sftp/Config.in",
    "content": "config BR2_PACKAGE_KODI_VFS_SFTP\n\tbool \"kodi-vfs-sftp\"\n\tselect BR2_PACKAGE_LIBSSH\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  SFTP VFS addon for Kodi\n\n\t  https://github.com/xbmc/vfs.sftp\n"
  },
  {
    "path": "package/kodi-vfs-sftp/kodi-vfs-sftp.hash",
    "content": "# Locally computed\nsha256  06015d9c645642f92ed2b28d6c6e3c1c9b149e7fb1e212b66a02510d438b4947  kodi-vfs-sftp-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-vfs-sftp/kodi-vfs-sftp.mk",
    "content": "################################################################################\n#\n# kodi-vfs-sftp\n#\n################################################################################\n\nKODI_VFS_SFTP_VERSION = 19.0.0-Matrix\nKODI_VFS_SFTP_SITE = $(call github,xbmc,vfs.sftp,$(KODI_VFS_SFTP_VERSION))\nKODI_VFS_SFTP_LICENSE = GPL-2.0+\nKODI_VFS_SFTP_LICENSE_FILES = LICENSE.md\nKODI_VFS_SFTP_DEPENDENCIES = kodi libssh openssl zlib\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-visualisation-fishbmc/Config.in",
    "content": "config BR2_PACKAGE_KODI_VISUALISATION_FISHBMC\n\tbool \"kodi-visualisation-fishbmc\"\n\tselect BR2_PACKAGE_GLM\n\thelp\n\t  Fische visualiser for Kodi\n\n\t  https://github.com/xbmc/visualization.fishbmc\n"
  },
  {
    "path": "package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.hash",
    "content": "# Locally computed\nsha256  b8cb7793f29b3c3d097a5348831347af8fbed1e4ef44d37d9faeff83ff22a830  kodi-visualisation-fishbmc-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.mk",
    "content": "################################################################################\n#\n# kodi-visualisation-fishbmc\n#\n################################################################################\n\nKODI_VISUALISATION_FISHBMC_VERSION = 19.0.0-Matrix\nKODI_VISUALISATION_FISHBMC_SITE = $(call github,xbmc,visualization.fishbmc,$(KODI_VISUALISATION_FISHBMC_VERSION))\nKODI_VISUALISATION_FISHBMC_LICENSE = GPL-2.0+\nKODI_VISUALISATION_FISHBMC_LICENSE_FILES = LICENSE.md\nKODI_VISUALISATION_FISHBMC_DEPENDENCIES = glm kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-visualisation-goom/Config.in",
    "content": "config BR2_PACKAGE_KODI_VISUALISATION_GOOM\n\tbool \"kodi-visualisation-goom\"\n\tdepends on BR2_PACKAGE_KODI_RENDER_SYSTEM_GL\n\tselect BR2_PACKAGE_GLM\n\thelp\n\t  GOOM visualiser for Kodi\n\n\t  https://github.com/notspiff/visualization.goom\n\ncomment \"kodi-visualization-goom needs OpenGL as Kodi render system\"\n\tdepends on !BR2_PACKAGE_KODI_RENDER_SYSTEM_GL\n"
  },
  {
    "path": "package/kodi-visualisation-goom/kodi-visualisation-goom.hash",
    "content": "# Locally computed\nsha256  03f4228421a1fe38d619d5599f31de04e2207647c5aae7ac83809e5324890437  kodi-visualisation-goom-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-visualisation-goom/kodi-visualisation-goom.mk",
    "content": "################################################################################\n#\n# kodi-visualisation-goom\n#\n################################################################################\n\nKODI_VISUALISATION_GOOM_VERSION = 19.0.0-Matrix\nKODI_VISUALISATION_GOOM_SITE = $(call github,xbmc,visualization.goom,$(KODI_VISUALISATION_GOOM_VERSION))\nKODI_VISUALISATION_GOOM_LICENSE = GPL-2.0+\nKODI_VISUALISATION_GOOM_LICENSE_FILES = LICENSE.md\n\nKODI_VISUALISATION_GOOM_DEPENDENCIES = glm kodi\n\nKODI_VISUALISATION_GOOM_CONF_OPTS += \\\n\t-DCMAKE_C_FLAGS=\"-std=c11\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-visualisation-matrix/Config.in",
    "content": "config BR2_PACKAGE_KODI_VISUALISATION_MATRIX\n\tbool \"kodi-visualisation-matrix\"\n\tselect BR2_PACKAGE_GLM\n\thelp\n\t  Matrix themed visualization addon for Kodi\n\n\t  https://github.com/xbmc/visualization.matrix\n"
  },
  {
    "path": "package/kodi-visualisation-matrix/kodi-visualisation-matrix.hash",
    "content": "# Locally computed\nsha256  e2cf98fa3cb9451dca595b2fad211ae34b5c449be07073c91aa73f182b208182  kodi-visualisation-matrix-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-visualisation-matrix/kodi-visualisation-matrix.mk",
    "content": "################################################################################\n#\n# kodi-visualisation-matrix\n#\n################################################################################\n\nKODI_VISUALISATION_MATRIX_VERSION = 19.0.0-Matrix\nKODI_VISUALISATION_MATRIX_SITE = $(call github,xbmc,visualization.matrix,$(KODI_VISUALISATION_MATRIX_VERSION))\nKODI_VISUALISATION_MATRIX_LICENSE = GPL-2.0+\nKODI_VISUALISATION_MATRIX_LICENSE_FILES = LICENSE.md\nKODI_VISUALISATION_MATRIX_DEPENDENCIES = glm kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-visualisation-shadertoy/Config.in",
    "content": "config BR2_PACKAGE_KODI_VISUALISATION_SHADERTOY\n\tbool \"kodi-visualisation-shadertoy\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # jsoncpp\n\tselect BR2_PACKAGE_GLM\n\tselect BR2_PACKAGE_JSONCPP\n\thelp\n\t  Shadertoy visualiser for Kodi\n\n\t  https://github.com/notspiff/visualization.shadertoy\n\ncomment \"kodi-visualisation-shadertoy needs a toolchain w/ gcc >= 4.7\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.hash",
    "content": "# Locally computed\nsha256  c556003a46ebf11595fb04343bf21a135365342f09e2280da2e7fd5e802944e7  kodi-visualisation-shadertoy-19.1.1-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.mk",
    "content": "################################################################################\n#\n# kodi-visualisation-shadertoy\n#\n################################################################################\n\nKODI_VISUALISATION_SHADERTOY_VERSION = 19.1.1-Matrix\nKODI_VISUALISATION_SHADERTOY_SITE = $(call github,xbmc,visualization.shadertoy,$(KODI_VISUALISATION_SHADERTOY_VERSION))\nKODI_VISUALISATION_SHADERTOY_LICENSE = GPL-2.0+\nKODI_VISUALISATION_SHADERTOY_LICENSE_FILES = LICENSE.md\nKODI_VISUALISATION_SHADERTOY_DEPENDENCIES = glm jsoncpp kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-visualisation-spectrum/Config.in",
    "content": "config BR2_PACKAGE_KODI_VISUALISATION_SPECTRUM\n\tbool \"kodi-visualisation-spectrum\"\n\tselect BR2_PACKAGE_GLM\n\thelp\n\t  Spectrum visualiser for Kodi\n\n\t  https://github.com/notspiff/visualization.spectrum\n"
  },
  {
    "path": "package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.hash",
    "content": "# Locally computed\nsha256  32b130c26581c224e9b43672ccb5c947f2f4982e6d2ab12e389b41a9ceeb0e3f  kodi-visualisation-spectrum-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.mk",
    "content": "################################################################################\n#\n# kodi-visualisation-spectrum\n#\n################################################################################\n\nKODI_VISUALISATION_SPECTRUM_VERSION = 19.0.0-Matrix\nKODI_VISUALISATION_SPECTRUM_SITE = $(call github,xbmc,visualization.spectrum,$(KODI_VISUALISATION_SPECTRUM_VERSION))\nKODI_VISUALISATION_SPECTRUM_LICENSE = GPL-2.0+\nKODI_VISUALISATION_SPECTRUM_LICENSE_FILES = LICENSE.md\nKODI_VISUALISATION_SPECTRUM_DEPENDENCIES = glm kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-visualisation-starburst/Config.in",
    "content": "config BR2_PACKAGE_KODI_VISUALISATION_STARBURST\n\tbool \"kodi-visualisation-starburst\"\n\tselect BR2_PACKAGE_GLM\n\thelp\n\t  StarBurst visualization for Kodi\n\n\t  https://github.com/xbmc/visualization.starburst\n"
  },
  {
    "path": "package/kodi-visualisation-starburst/kodi-visualisation-starburst.hash",
    "content": "# Locally computed\nsha256  b610919fd181dac638cbcea3f88b01a0b3522941415fde8fab51a17a88f536e2  kodi-visualisation-starburst-19.0.0-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-visualisation-starburst/kodi-visualisation-starburst.mk",
    "content": "################################################################################\n#\n# kodi-visualisation-starburst\n#\n################################################################################\n\nKODI_VISUALISATION_STARBURST_VERSION = 19.0.0-Matrix\nKODI_VISUALISATION_STARBURST_SITE = $(call github,xbmc,visualization.starburst,$(KODI_VISUALISATION_STARBURST_VERSION))\nKODI_VISUALISATION_STARBURST_LICENSE = GPL-2.0+\nKODI_VISUALISATION_STARBURST_LICENSE_FILES = LICENSE.md\nKODI_VISUALISATION_STARBURST_DEPENDENCIES = glm kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kodi-visualisation-waveform/Config.in",
    "content": "config BR2_PACKAGE_KODI_VISUALISATION_WAVEFORM\n\tbool \"kodi-visualisation-waveform\"\n\tselect BR2_PACKAGE_GLM\n\thelp\n\t  Waveform visualiser for Kodi\n\n\t  https://github.com/notspiff/visualization.waveform\n"
  },
  {
    "path": "package/kodi-visualisation-waveform/kodi-visualisation-waveform.hash",
    "content": "# Locally computed\nsha256  5b025f3c1b15108b958a56ebbacf315865c7e527258778fe9580469876e4858c  kodi-visualisation-waveform-19.0.1-Matrix.tar.gz\nsha256  310782e1abd43c4de6217c513e328bddf999d39302d67c6e05b10a59959827af  LICENSE.md\n"
  },
  {
    "path": "package/kodi-visualisation-waveform/kodi-visualisation-waveform.mk",
    "content": "################################################################################\n#\n# kodi-visualisation-waveform\n#\n################################################################################\n\nKODI_VISUALISATION_WAVEFORM_VERSION = 19.0.1-Matrix\nKODI_VISUALISATION_WAVEFORM_SITE = $(call github,xbmc,visualization.waveform,$(KODI_VISUALISATION_WAVEFORM_VERSION))\nKODI_VISUALISATION_WAVEFORM_LICENSE = GPL-2.0+\nKODI_VISUALISATION_WAVEFORM_LICENSE_FILES = LICENSE.md\nKODI_VISUALISATION_WAVEFORM_DEPENDENCIES = glm kodi\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/kompexsqlite/0001-Makefile-use-autoconf-CXX-for-proper-builds.patch",
    "content": "From 769693d9ddf63b04dd4aad6cad080f3cee3f997e Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Thu, 11 Jun 2015 14:08:38 -0300\nSubject: [PATCH] Makefile: use autoconf CXX for proper builds\n\nStatus: applied upstream.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n---\n Makefile.in | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 91fb8b2..fe862cd 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -23,6 +23,7 @@ mandir = $(prefix)/share/man/man3\n headerdir = $(prefix)/include/kompex\n \n CC = @CC@\n+CXX = @CXX@\n CFLAGS = @CFLAGS@\n CPPFLAGS = $(CFLAGS) @CPPFLAGS@\n LDFLAGS = @LDFLAGS@\n-- \n2.3.6\n\n"
  },
  {
    "path": "package/kompexsqlite/0002-append-to-cflags-and-cxxflags.patch",
    "content": "From 3eb064ffa9b43fb5f245b8abda48a1c152a6f2d7 Mon Sep 17 00:00:00 2001\nFrom: me <noemail@nowhere.com>\nDate: Thu, 20 Nov 2014 14:37:34 -0700\nSubject: [PATCH] Append to CFLAGS and CXXFLAGS as setup by ./configure.  This\n can allow users to Customize the SQLite build process with compile time\n #defines rather than altering the sources.\n\nSigned-off-by: Max Filippov <jcmvbkbc@gmail.com>\n---\nBackported from: 3eb064ffa9b43fb5f245b8abda48a1c152a6f2d7\n\n Makefile-shared.mk | 4 ++--\n Makefile-static.mk | 4 ++--\n 2 files changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/Makefile-shared.mk b/Makefile-shared.mk\nindex b2a4920..d15ce3c 100644\n--- a/Makefile-shared.mk\n+++ b/Makefile-shared.mk\n@@ -12,10 +12,10 @@ OBJS= \\\n \t${objsdir}/sqlite3.o\n \n # C Compiler Flags\n-CFLAGS= -fPIC -MMD -MP\n+CFLAGS+= -fPIC -MMD -MP\n \n # CC Compiler Flags\n-CPPFLAGS= -DKOMPEX_SQLITEWRAPPER_EXPORT -DKOMPEX_SQLITEWRAPPER_DYN -fPIC -MMD -MP -I${includedir}\n+CPPFLAGS+= -DKOMPEX_SQLITEWRAPPER_EXPORT -DKOMPEX_SQLITEWRAPPER_DYN -fPIC -MMD -MP -I${includedir}\n \n # Link Libraries and Options\n LDLIBSOPTIONS= -shared -fPIC\ndiff --git a/Makefile-static.mk b/Makefile-static.mk\nindex 429a4ff..0678681 100644\n--- a/Makefile-static.mk\n+++ b/Makefile-static.mk\n@@ -12,10 +12,10 @@ OBJS= \\\n \t${objsdir}/sqlite3.o\n \n # C Compiler Flags\n-CFLAGS= -MMD -MP\n+CFLAGS+= -MMD -MP\n \n # CC Compiler Flags\n-CPPFLAGS= -I${includedir} -MMD -MP\n+CPPFLAGS+= -I${includedir} -MMD -MP\n \n # Link Libraries and Options\n LDLIBSOPTIONS=\n"
  },
  {
    "path": "package/kompexsqlite/Config.in",
    "content": "config BR2_PACKAGE_KOMPEXSQLITE\n\tbool \"kompexsqlite\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  The Kompex SQLite Wrapper is an open source C++ wrapper\n\t  library for SQLite.\n\n\t  http://sqlitewrapper.kompex-online.com/index.php\n\ncomment \"kompexsqlite needs a toolchain w/ C++, wchar, threads, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/kompexsqlite/kompexsqlite.hash",
    "content": "# Locally calculated\nsha256\t73bec94fe5dd3a24bd8668b3a131a84dbe39a992579eebab1236aa0e73b2c9cc\tkompexsqlite-1.10.12-1.tar.gz\nsha256\tda7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768\tLICENSE.txt\n"
  },
  {
    "path": "package/kompexsqlite/kompexsqlite.mk",
    "content": "################################################################################\n#\n# kompexsqlite\n#\n################################################################################\n\nKOMPEXSQLITE_VERSION = 1.10.12-1\nKOMPEXSQLITE_SITE = \\\n\t$(call github,Aethelflaed,kompex-sqlite-wrapper,v$(KOMPEXSQLITE_VERSION))\nKOMPEXSQLITE_INSTALL_STAGING = YES\nKOMPEXSQLITE_LICENSE = LGPL-3.0+ (wrapper), Public Domain (bundled sqlite)\nKOMPEXSQLITE_LICENSE_FILES = LICENSE.txt\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ktap/Config.in",
    "content": "config BR2_PACKAGE_KTAP\n\tbool \"ktap\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  ktap is a script-based dynamic tracing tool for Linux\n\n\t  It uses a scripting language and lets users trace the Linux\n\t  kernel dynamically. ktap is designed to give operational\n\t  insights with interoperability that allows users to tune,\n\t  troubleshoot and extend kernel and application.\n\t  It's similar to Linux Systemtap and Solaris Dtrace.\n\n\t  ktap doesn't support kernels older than 3.1.\n\n\t  To be able to resolve symbols in DSO and for sdt, you need to\n\t  enable elfutils.\n\n\t  Your kernel must have CONFIG_EVENT_TRACING,\n\t  CONFIG_PERF_EVENTS, and CONFIG_DEBUG_FS enabled to compile.\n\n\t  Buildroot automatically enables these in the kernel\n\t  configuration.\n\n\t  http://www.ktap.org\n\ncomment \"ktap needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\ncomment \"ktap needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/ktap/ktap.hash",
    "content": "# Locally calculated\nsha256 44a0808d57175cf9d15466f720e1e10d5ed1abc3497aedf9ddd6469545552345  ktap-23bc7a4a94bd9e4e1b8b7c06632e61c041d57b5f.tar.gz\nsha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  LICENSE-GPL\n"
  },
  {
    "path": "package/ktap/ktap.mk",
    "content": "################################################################################\n#\n# ktap\n#\n################################################################################\n\nKTAP_VERSION = 23bc7a4a94bd9e4e1b8b7c06632e61c041d57b5f\nKTAP_SITE = $(call github,ktap,ktap,$(KTAP_VERSION))\nKTAP_LICENSE = GPL-2.0\nKTAP_LICENSE_FILES = LICENSE-GPL\n\nifeq ($(BR2_PACKAGE_ELFUTILS),y)\nKTAP_DEPENDENCIES += elfutils\nelse\nKTAP_FLAGS += NO_LIBELF=1\nendif\n\ndefine KTAP_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) $(KTAP_FLAGS) ktap\nendef\n\ndefine KTAP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m755 $(@D)/ktap $(TARGET_DIR)/usr/bin/ktap\nendef\n\nKTAP_MODULE_MAKE_OPTS = KVERSION=$(LINUX_VERSION_PROBED)\n\ndefine KTAP_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_DEBUG_FS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_ENABLE_DEFAULT_TRACERS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_PERF_EVENTS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_FUNCTION_TRACER)\nendef\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/kvazaar/Config.in",
    "content": "config BR2_PACKAGE_KVAZAAR\n\tbool \"kvazaar\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\t# use deprecated altivec vec_lvsl()\n\tdepends on !BR2_powerpc && !BR2_powerpc64 && !BR2_powerpc64le\n\thelp\n\t  An open-source HEVC encoder licensed under LGPLv2.1\n\n\t  https://github.com/ultravideo/kvazaar\n\ncomment \"kvazaar needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_powerpc && !BR2_powerpc64 && !BR2_powerpc64le\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/kvazaar/kvazaar.hash",
    "content": "# Locally calculated\nsha256 480ecfd9b4d2b7d21b355e4a35fcf47b4db7a3b0315b6219d93733db42392bd9  kvazaar-1.2.0.tar.gz\nsha256 531712277c3543b9ee86c4c4e0e424f531b893a44cc021c74a24b038d8de4d2a COPYING\n"
  },
  {
    "path": "package/kvazaar/kvazaar.mk",
    "content": "################################################################################\n#\n# kvazaar\n#\n################################################################################\n\nKVAZAAR_VERSION = 1.2.0\nKVAZAAR_SITE = $(call github,ultravideo,kvazaar,v$(KVAZAAR_VERSION))\nKVAZAAR_LICENSE = LGPL-2.1+\nKVAZAAR_LICENSE_FILES = COPYING\nKVAZAAR_AUTORECONF = YES\nKVAZAAR_INSTALL_STAGING = YES\nKVAZAAR_DEPENDENCIES = host-pkgconf\nKVAZAAR_CONF_OPTS = --without-cryptopp\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/kvm-unit-tests/0001-Makefile-remove-Werror-to-avoid-build-failures.patch",
    "content": "From 08e14a662b9e75daec29722e49150869952ba1b6 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Mon, 20 Nov 2017 22:09:39 +0100\nSubject: [PATCH] Makefile: remove -Werror to avoid build failures\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Matthew: Refactoring of Thomas Petazzoni's original.]\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n Makefile | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 7231334..d9ad42b 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -53,7 +53,6 @@ cc-option = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null \\\n COMMON_CFLAGS += -g $(autodepend-flags)\n COMMON_CFLAGS += -Wall -Wwrite-strings -Wclobbered -Wempty-body -Wuninitialized\n COMMON_CFLAGS += -Wignored-qualifiers -Wunused-but-set-parameter\n-COMMON_CFLAGS += -Werror\n frame-pointer-flag=-f$(if $(KEEP_FRAME_POINTER),no-,)omit-frame-pointer\n fomit_frame_pointer := $(call cc-option, $(frame-pointer-flag), \"\")\n fnostack_protector := $(call cc-option, -fno-stack-protector, \"\")\n-- \n2.14.2\n\n"
  },
  {
    "path": "package/kvm-unit-tests/0002-kvm-unit-tests-test-for-rdseed-rdrand.patch",
    "content": "From 8d9a62a5fa89001266352a929c5d40b28c0dda85 Mon Sep 17 00:00:00 2001\nFrom: Matt Weber <matthew.weber@rockwellcollins.com>\nDate: Fri, 12 Jan 2018 19:07:27 -0600\nSubject: [PATCH v2] kvm-unit-tests: test for rdseed/rdrand\n\nThe build fails when the host binutils isn't at least 2.23\n(2.22.x introduced RDSEED).\n\nFixes:\nhttp://autobuild.buildroot.net/results/c39/c3987a3cbd2960b0ff50f872636bdfd8d1a9c820/\n\nUpstream:\nhttps://marc.info/?l=kvm&m=151580743523259&w=2\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n Makefile        |  2 +-\n configure       | 18 ++++++++++++++++++\n x86/vmx_tests.c |  6 ++++++\n 3 files changed, 25 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex d9ad42b..799e9b5 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -50,7 +50,7 @@ include $(SRCDIR)/$(TEST_DIR)/Makefile\n cc-option = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null \\\n               > /dev/null 2>&1; then echo \"$(1)\"; else echo \"$(2)\"; fi ;)\n \n-COMMON_CFLAGS += -g $(autodepend-flags)\n+COMMON_CFLAGS += -g $(autodepend-flags) $(EXTRA_CFLAGS)\n COMMON_CFLAGS += -Wall -Wwrite-strings -Wclobbered -Wempty-body -Wuninitialized\n COMMON_CFLAGS += -Wignored-qualifiers -Wunused-but-set-parameter\n frame-pointer-flag=-f$(if $(KEEP_FRAME_POINTER),no-,)omit-frame-pointer\ndiff --git a/configure b/configure\nindex dd9d361..21c0219 100755\n--- a/configure\n+++ b/configure\n@@ -171,6 +171,23 @@ mkdir -p lib\n ln -sf \"$asm\" lib/asm\n \n \n+cat > rd_test.c <<EOF\n+#include <stdint.h>\n+int main() {\n+   uint16_t seed=0;\n+   unsigned char ok;\n+   asm volatile (\"rdseed %0; setc %1\"\n+                 : \"=r\" (seed), \"=qm\" (ok));\n+   return ok;\n+}\n+EOF\n+if $cross_prefix$cc -o /dev/null rd_test.c &> /dev/null; then\n+  echo \"Checking for rdseed/rdrand... Yes.\"\n+else\n+  echo \"Checking for rdseed/rdrand... No.\"\n+  extra_cflags=\"-DNO_RDSEEDRAND\"\n+fi\n+\n # create the config\n cat <<EOF > config.mak\n SRCDIR=$srcdir\n@@ -181,6 +198,7 @@ ARCH_NAME=$arch_name\n PROCESSOR=$processor\n CC=$cross_prefix$cc\n CXX=$cross_prefix$cxx\n+EXTRA_CFLAGS=$extra_cflags\n LD=$cross_prefix$ld\n OBJCOPY=$cross_prefix$objcopy\n OBJDUMP=$cross_prefix$objdump\ndiff --git a/x86/vmx_tests.c b/x86/vmx_tests.c\nindex 4a3e94b..2cbe3eb 100644\n--- a/x86/vmx_tests.c\n+++ b/x86/vmx_tests.c\n@@ -770,8 +770,10 @@ asm(\n \t\"insn_sldt: sldt %ax;ret\\n\\t\"\n \t\"insn_lldt: xor %eax, %eax; lldt %ax;ret\\n\\t\"\n \t\"insn_str: str %ax;ret\\n\\t\"\n+#ifndef NO_RDSEEDRAND\n \t\"insn_rdrand: rdrand %rax;ret\\n\\t\"\n \t\"insn_rdseed: rdseed %rax;ret\\n\\t\"\n+#endif\n );\n extern void insn_hlt();\n extern void insn_invlpg();\n@@ -796,8 +798,10 @@ extern void insn_lldt();\n extern void insn_str();\n extern void insn_cpuid();\n extern void insn_invd();\n+#ifndef NO_RDSEEDRAND\n extern void insn_rdrand();\n extern void insn_rdseed();\n+#endif\n \n u32 cur_insn;\n u64 cr3;\n@@ -853,8 +857,10 @@ static struct insn_table insn_table[] = {\n \t{\"DESC_TABLE (LLDT)\", CPU_DESC_TABLE, insn_lldt, INSN_CPU1, 47, 0, 0, 0},\n \t{\"DESC_TABLE (STR)\", CPU_DESC_TABLE, insn_str, INSN_CPU1, 47, 0, 0, 0},\n \t/* LTR causes a #GP if done with a busy selector, so it is not tested.  */\n+#ifndef NO_RDSEEDRAND\n \t{\"RDRAND\", CPU_RDRAND, insn_rdrand, INSN_CPU1, VMX_RDRAND, 0, 0, 0},\n \t{\"RDSEED\", CPU_RDSEED, insn_rdseed, INSN_CPU1, VMX_RDSEED, 0, 0, 0},\n+#endif\n \t// Instructions always trap\n \t{\"CPUID\", 0, insn_cpuid, INSN_ALWAYS_TRAP, 10, 0, 0, 0},\n \t{\"INVD\", 0, insn_invd, INSN_ALWAYS_TRAP, 13, 0, 0, 0},\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/kvm-unit-tests/0003-Makefile-fix-stack-protector-tests.patch",
    "content": "From 9bf9155804652c0b3a94af9723c79b6de430187b Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 24 Feb 2020 00:04:06 +0100\nSubject: [PATCH] Makefile: fix stack-protector tests\n\nRename fnostack_protector into fno_stack_protector and\nfnostack_protector_all into fnostack_protector_all otherwise build will\nfail if -fstack-protector is passed by the toolchain\n\nFixes:\n - http://autobuild.buildroot.org/results/ad689b08173548af21dd1fb0e827fd561de6dfef\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to kvm@vger.kernel.org]\n---\n Makefile | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 767b6c6..754ed65 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -55,8 +55,8 @@ COMMON_CFLAGS += -Wignored-qualifiers -Werror\n \n frame-pointer-flag=-f$(if $(KEEP_FRAME_POINTER),no-,)omit-frame-pointer\n fomit_frame_pointer := $(call cc-option, $(frame-pointer-flag), \"\")\n-fnostack_protector := $(call cc-option, -fno-stack-protector, \"\")\n-fnostack_protector_all := $(call cc-option, -fno-stack-protector-all, \"\")\n+fno_stack_protector := $(call cc-option, -fno-stack-protector, \"\")\n+fno_stack_protector_all := $(call cc-option, -fno-stack-protector-all, \"\")\n wno_frame_address := $(call cc-option, -Wno-frame-address, \"\")\n fno_pic := $(call cc-option, -fno-pic, \"\")\n no_pie := $(call cc-option, -no-pie, \"\")\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/kvm-unit-tests/0004-Fix-powerpc-issue-with-the-linker-from-Fedora-32.patch",
    "content": "From 5126732d73aa75a0bc84f898042bfe35640624b8 Mon Sep 17 00:00:00 2001\nFrom: Thomas Huth <thuth@redhat.com>\nDate: Wed, 13 May 2020 13:14:46 +0200\nSubject: [PATCH] Fix powerpc issue with the linker from Fedora 32\n\nThe linker from Fedora 32 complains:\n\npowerpc64-linux-gnu-ld: powerpc/selftest.elf: error: PHDR segment not\n covered by LOAD segment\n\nLet's introduce some fake PHDRs to the linker script to get this\nworking again.\n\nMessage-Id: <20200514192626.9950-7-thuth@redhat.com>\nSigned-off-by: Thomas Huth <thuth@redhat.com>\nSigned-off-by: Matthew Weber <matthew.weber@collins.com>\n---\n powerpc/flat.lds | 19 ++++++++++++++++---\n 1 file changed, 16 insertions(+), 3 deletions(-)\n\ndiff --git a/powerpc/flat.lds b/powerpc/flat.lds\nindex 53221e8..5eed368 100644\n--- a/powerpc/flat.lds\n+++ b/powerpc/flat.lds\n@@ -1,7 +1,17 @@\n \n+PHDRS\n+{\n+    text PT_LOAD FLAGS(5);\n+    data PT_LOAD FLAGS(6);\n+}\n+\n SECTIONS\n {\n-    .text : { *(.init) *(.text) *(.text.*) }\n+    .text : {\n+        *(.init)\n+        *(.text)\n+        *(.text.*)\n+    } :text\n     . = ALIGN(64K);\n     etext = .;\n     .opd : { *(.opd) }\n@@ -19,9 +29,12 @@ SECTIONS\n     .data : {\n         *(.data)\n         *(.data.rel*)\n-    }\n+    } :data\n     . = ALIGN(16);\n-    .rodata : { *(.rodata) *(.rodata.*) }\n+    .rodata : {\n+        *(.rodata)\n+        *(.rodata.*)\n+    } :data\n     . = ALIGN(16);\n     .bss : { *(.bss) }\n     . = ALIGN(256);\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/kvm-unit-tests/Config.in",
    "content": "config BR2_PACKAGE_KVM_UNIT_TESTS_ARCH_SUPPORTS\n\tbool\n\t# On ARM, it uses virtualization extensions\n\tdefault y if BR2_cortex_a7 || BR2_cortex_a12 || \\\n\t\tBR2_cortex_a15 || BR2_cortex_a15_a7 || \\\n\t\tBR2_cortex_a17 || BR2_cortex_a17_a7\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_powerpc64 || BR2_powerpc64le\n\nconfig BR2_PACKAGE_KVM_UNIT_TESTS\n\tbool \"kvm-unit-tests\"\n\tdepends on BR2_PACKAGE_KVM_UNIT_TESTS_ARCH_SUPPORTS\n\t# on i386 and x86-64, __builtin_reachable is used, so we need\n\t# gcc 4.5 at least. on i386, we use the target gcc, while on\n\t# x86-64 we use the host gcc (see .mk file for details)\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 || !BR2_i386\n\tdepends on BR2_HOSTARCH = \"x86_64\" || !BR2_x86_64\n\tselect BR2_HOSTARCH_NEEDS_IA32_COMPILER if BR2_x86_64=y\n\thelp\n\t  kvm-unit-tests is a project as old as KVM. As its name\n\t  suggests, it's purpose is to provide unit tests for KVM. The\n\t  unit tests are tiny guest operating systems that generally\n\t  execute only tens of lines of C and assembler test code in\n\t  order to obtain its PASS/FAIL result. Unit tests provide KVM\n\t  and virt hardware functional testing by targeting the\n\t  features through minimal implementations of their use per\n\t  the hardware specification. The simplicity of unit tests\n\t  make them easy to verify they are correct, easy to maintain,\n\t  and easy to use in timing measurements. Unit tests are also\n\t  often used for quick and dirty bug reproducers. The\n\t  reproducers may then be kept as regression tests.  It's\n\t  strongly encouraged that patches implementing new KVM\n\t  features are submitted with accompanying unit tests.\n\n\t  http://www.linux-kvm.org/page/KVM-unit-tests\n\ncomment \"kvm-unit-tests needs a toolchain w/ gcc >= 4.5\"\n\tdepends on BR2_i386\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_5\n"
  },
  {
    "path": "package/kvm-unit-tests/kvm-unit-tests.hash",
    "content": "# Locally computed\nsha256  e476443cd76c8f540734e075b419638b2f200ae002986d6fc14076d410f3751e  kvm-unit-tests-kvm-unit-tests-20171020-br1.tar.gz\nsha256  d9bbb60891710d248f01c8bdac50ef7ad39188de512610437872e83112b38a1b  COPYRIGHT\n"
  },
  {
    "path": "package/kvm-unit-tests/kvm-unit-tests.mk",
    "content": "################################################################################\n#\n# kvm-unit-tests\n#\n################################################################################\n\nKVM_UNIT_TESTS_VERSION = kvm-unit-tests-20171020\nKVM_UNIT_TESTS_SITE = https://git.kernel.org/pub/scm/virt/kvm/kvm-unit-tests.git\nKVM_UNIT_TESTS_SITE_METHOD = git\nKVM_UNIT_TESTS_LICENSE = LGPL-2.0\nKVM_UNIT_TESTS_LICENSE_FILES = COPYRIGHT\n\nifeq ($(BR2_arm),y)\nKVM_UNIT_TESTS_ARCH = arm\nelse ifeq ($(BR2_i386),y)\nKVM_UNIT_TESTS_ARCH = i386\nelse ifeq ($(BR2_powerpc64)$(BR2_powerpc64le),y)\nKVM_UNIT_TESTS_ARCH = ppc64\nelse ifeq ($(BR2_x86_64),y)\nKVM_UNIT_TESTS_ARCH = x86_64\nendif\n\nifeq ($(BR2_ENDIAN),\"LITTLE\")\nKVM_UNIT_TESTS_ENDIAN = little\nelse\nKVM_UNIT_TESTS_ENDIAN = big\nendif\n\nKVM_UNIT_TESTS_CONF_OPTS =\\\n\t--arch=\"$(KVM_UNIT_TESTS_ARCH)\" \\\n\t--processor=\"$(GCC_TARGET_CPU)\" \\\n\t--endian=\"$(KVM_UNIT_TESTS_ENDIAN)\"\n\n# For all architectures but x86-64, we use the target\n# compiler. However, for x86-64, we use the host compiler, as\n# kvm-unit-tests builds 32 bit code, which Buildroot toolchains for\n# x86-64 cannot do.\nifeq ($(BR2_x86_64),)\nKVM_UNIT_TESTS_CONF_OPTS += --cross-prefix=\"$(TARGET_CROSS)\"\nendif\n\ndefine KVM_UNIT_TESTS_CONFIGURE_CMDS\n\tcd $(@D) && ./configure $(KVM_UNIT_TESTS_CONF_OPTS)\nendef\n\ndefine KVM_UNIT_TESTS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(KVM_UNIT_TESTS_MAKE_OPTS) -C $(@D) \\\n\t\tstandalone\nendef\n\ndefine KVM_UNIT_TESTS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(KVM_UNIT_TESTS_MAKE_OPTS) -C $(@D) \\\n\t\tDESTDIR=$(TARGET_DIR)/usr/share/kvm-unit-tests/ \\\n\t\tinstall\nendef\n\n# Does use configure script but not an autotools one\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/kvmtool/Config.in",
    "content": "config BR2_PACKAGE_KVMTOOL\n\tbool \"kvmtool\"\n\tdepends on BR2_USE_MMU # guest simple init fork()\n\t# No MADV_HUGEPAGE define in uClibc(-ng)\n\tdepends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)\n\t# Only mips big-endian seems to be supported (build breaks)\n\t# Should work on powerpc64 but the build breaks with missing types\n\tdepends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \\\n\t\tBR2_mips || BR2_x86_64\n\t# libfdt is only required for DT architectures...\n\t# ...but it's not able to build for static targets\n\tdepends on !(BR2_STATIC_LIBS && (BR2_aarch64 || BR2_arm || BR2_armeb))\n\tselect BR2_PACKAGE_DTC if BR2_aarch64 || BR2_arm || BR2_armeb\n\thelp\n\t  kvmtool is a lightweight tool for hosting KVM guests.\n\t  As a pure virtualization tool it only supports guests using\n\t  the same architecture, though it supports running 32-bit\n\t  guests on those 64-bit architectures that allow this.\n\n\t  https://git.kernel.org/cgit/linux/kernel/git/will/kvmtool.git/tree/README\n\ncomment \"kvmtool needs a glibc or musl toolchain\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_i386 || BR2_mips || BR2_x86_64\n\tdepends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)\n\ncomment \"kvmtool needs a glibc or musl toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_aarch64 || BR2_arm || BR2_armeb\n\tdepends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/kvmtool/kvmtool.hash",
    "content": "# Locally computed\nsha256  e2eb2cd8b31d24484e3095923cfe8c36d4b92741b76965cafaed6be3835369c6  kvmtool-f77d646ba01d04be5aad9449ac00719c043fe36e-br1.tar.gz\nsha256  0d5bf346df9e635a29dcdddf832dc5b002ca6cdc1c5c9c6c567d2a61bb0c5c15  COPYING\n"
  },
  {
    "path": "package/kvmtool/kvmtool.mk",
    "content": "################################################################################\n#\n# kvmtool\n#\n################################################################################\n\nKVMTOOL_VERSION = f77d646ba01d04be5aad9449ac00719c043fe36e\nKVMTOOL_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git\nKVMTOOL_SITE_METHOD = git\nKVMTOOL_DEPENDENCIES = \\\n\t$(if $(BR2_PACKAGE_BINUTILS),binutils) \\\n\t$(if $(BR2_PACKAGE_DTC),dtc) \\\n\t$(if $(BR2_PACKAGE_LIBAIO),libaio) \\\n\t$(if $(BR2_PACKAGE_LIBGTK3),libgtk3) \\\n\t$(if $(BR2_PACKAGE_LIBVNCSERVER),libvncserver) \\\n\t$(if $(BR2_PACKAGE_SDL),sdl) \\\n\t$(if $(BR2_PACKAGE_ZLIB),zlib)\nKVMTOOL_LICENSE = GPL-2.0\nKVMTOOL_LICENSE_FILES = COPYING\n\n# Disable -Werror, otherwise musl is not happy\nKVMTOOL_MAKE_OPTS = \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tLDFLAGS=\"$(TARGET_LDFLAGS) $(KVMTOOL_EXTRA_LDFLAGS)\" \\\n\tWERROR=0\n\ndefine KVMTOOL_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) ARCH=$(KERNEL_ARCH) $(MAKE) -C $(@D) $(KVMTOOL_MAKE_OPTS)\nendef\n\ndefine KVMTOOL_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) ARCH=$(KERNEL_ARCH) $(MAKE) -C $(@D) \\\n\t\t$(KVMTOOL_MAKE_OPTS) install DESTDIR=$(TARGET_DIR) prefix=/usr\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/kyua/Config.in",
    "content": "config BR2_PACKAGE_KYUA\n\tbool \"kyua\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_HAS_LUAINTERPRETER # lutok\n\tdepends on !BR2_PACKAGE_LUAJIT # lutok\n\tdepends on !BR2_STATIC_LIBS # lutok\n\tdepends on BR2_USE_MMU # atf\n\tselect BR2_PACKAGE_ATF\n\tselect BR2_PACKAGE_LUTOK\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  Kyua is a testing framework for infrastructure software,\n\t  originally designed to equip BSD-based operating systems\n\t  with a test suite. This means that Kyua is lightweight\n\t  and simple, and that Kyua integrates well with various build\n\t  systems and continuous integration frameworks.\n\n\t  https://github.com/jmmv/kyua\n\ncomment \"kyua needs a toolchain w/ C++, dynamic library and full Lua\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_PACKAGE_LUAJIT || BR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_HAS_LUAINTERPRETER\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/kyua/kyua.hash",
    "content": "# Locally calculated\nsha256 db6e5d341d5cf7e49e50aa361243e19087a00ba33742b0855d2685c0b8e721d6 kyua-0.13.tar.gz\nsha256 a6a8f43f6d2ed9b801978cc012cc816c4a9421a6dcea0579d3a40eab4b349674 LICENSE\n"
  },
  {
    "path": "package/kyua/kyua.mk",
    "content": "################################################################################\n#\n# kyua\n#\n################################################################################\n\nKYUA_VERSION = 0.13\nKYUA_SITE = https://github.com/jmmv/kyua/releases/download/kyua-$(KYUA_VERSION)\nKYUA_DEPENDENCIES = host-pkgconf atf lutok sqlite\nKYUA_CONF_OPTS = --without-doxygen --without-atf\nKYUA_LICENSE = BSD-3-Clause\nKYUA_LICENSE_FILES = LICENSE\nKYUA_CONF_ENV = \\\n\tkyua_cv_attribute_noreturn=yes \\\n\tkyua_cv_getcwd_dyn=yes \\\n\tkyua_cv_lchmod_works=no \\\n\tkyua_cv_getopt_gnu=yes \\\n\tkyua_cv_getopt_optind_reset_value=0 \\\n\tkyua_cv_signals_lastno=15\n\ndefine KYUA_INSTALL_CONFIG\n\t$(INSTALL) -D -m 644 $(@D)/examples/kyua.conf $(TARGET_DIR)/etc/kyua/kyua.conf\nendef\n\nKYUA_POST_INSTALL_HOOKS += KYUA_INSTALL_CONFIG\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lame/Config.in",
    "content": "config BR2_PACKAGE_LAME\n\tbool \"lame\"\n\thelp\n\t  LAME is a high quality MPEG Audio Layer III (MP3) encoder.\n\n\t  http://lame.sourceforge.net/\n"
  },
  {
    "path": "package/lame/lame.hash",
    "content": "# Locally computed:\nsha256  ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e  lame-3.100.tar.gz\nsha256  bfe4a52dc4645385f356a8e83cc54216a293e3b6f1cb4f79f5fc0277abf937fd  COPYING\n"
  },
  {
    "path": "package/lame/lame.mk",
    "content": "################################################################################\n#\n# lame\n#\n################################################################################\n\nLAME_VERSION = 3.100\nLAME_SITE = http://downloads.sourceforge.net/project/lame/lame/$(LAME_VERSION)\nLAME_DEPENDENCIES = host-pkgconf\nLAME_INSTALL_STAGING = YES\nLAME_CONF_ENV = GTK_CONFIG=/bin/false\nLAME_CONF_OPTS = --enable-dynamic-frontends\nLAME_LICENSE = LGPL-2.0+\nLAME_LICENSE_FILES = COPYING\nLAME_CPE_ID_VENDOR = lame_project\n\nifeq ($(BR2_PACKAGE_LIBSNDFILE),y)\nLAME_DEPENDENCIES += libsndfile\nLAME_CONF_OPTS += --with-fileio=sndfile\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nLAME_DEPENDENCIES += ncurses\nendif\n\nifeq ($(BR2_ENDIAN),\"BIG\")\ndefine LAME_BIGENDIAN_ARCH\n\techo \"#define WORDS_BIGENDIAN 1\" >>$(@D)/config.h\nendef\nendif\n\nLAME_POST_CONFIGURE_HOOKS += LAME_BIGENDIAN_ARCH\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lan951x-led-ctl/0001-fix-cross-compile.patch",
    "content": "diff -uNr lan951x-led-ctl-master/Makefile lan951x-led-ctl-fix/Makefile\n--- lan951x-led-ctl-master/Makefile\t2017-02-11 22:50:52.000000000 +0200\n+++ lan951x-led-ctl-fix/Makefile\t2018-06-24 23:45:57.925879678 +0300\n@@ -1,12 +1,12 @@\n-ECHO\t= /bin/echo -e\n-SHELL\t= /bin/sh\n-RM\t= /bin/rm -f\n-CC\t= gcc\n-STRIP\t= strip\n+ECHO\t?= /bin/echo -e\n+SHELL\t?= /bin/sh\n+RM\t?= /bin/rm -f\n+CC\t?= gcc\n+STRIP\t?= strip\n \n-CFLAGS\t= -g -Os -std=c11 -I./include -Wall -Wstrict-prototypes -Wconversion\n+CFLAGS\t?= -g -Os -std=c11 -I./include -Wall -Wstrict-prototypes -Wconversion\n CFLAGS\t+= -Wmissing-prototypes -Wshadow -Wextra -Wunused\n-LDFLAGS\t= -lusb-1.0\n+LDFLAGS\t+= -lusb-1.0\n \n PROGS = lan951x-led-ctl\n \n"
  },
  {
    "path": "package/lan951x-led-ctl/Config.in",
    "content": "config BR2_PACKAGE_LAN951X_LED_CTL\n\tbool \"lan951x-led-ctl\"\n\n"
  },
  {
    "path": "package/lan951x-led-ctl/lan951x-led-ctl.mk",
    "content": "LAN951X_LED_CTL_VERSION = 0291b91702f5742fa56aa5e0942c28261777de7c\nLAN951X_LED_CTL_SITE = $(call github,dumpsite,lan951x-led-ctl,$(LAN951X_LED_CTL_VERSION))\nLAN951X_LED_CTL_DEPENDENCIES = libusb\n\ndefine LAN951X_LED_CTL_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) CFLAGS=\"$(TARGET_CLFAGS) -Iinclude -std=c99\"\nendef\n\ndefine LAN951X_LED_CTL_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/lan951x-led-ctl $(TARGET_DIR)/usr/bin/lan951x-led-ctl\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lapack/Config.in",
    "content": "config BR2_PACKAGE_LAPACK_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\t# _fpu_control is used on PowerPC, but not available with\n\t# uClibc or musl\n\tdepends on !BR2_powerpc || BR2_TOOLCHAIN_USES_GLIBC\n\ncomment \"lapack/blas needs a glibc toolchain\"\n\tdepends on BR2_powerpc\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n\ncomment \"lapack/blas needs a toolchain w/ fortran\"\n\tdepends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_FORTRAN\n\nconfig BR2_PACKAGE_LAPACK\n\tbool \"lapack/blas\"\n\tdepends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_FORTRAN\n\thelp\n\t  LAPACK and BLAS FORTRAN implementation. This package\n\t  installs two libraries: libblas and liblapack.\n\n\t  http://www.netlib.org/lapack/\n\nconfig BR2_PACKAGE_LAPACK_COMPLEX\n\tbool \"Complex/Complex16 support\"\n\tdefault y\n\tdepends on BR2_PACKAGE_LAPACK\n\thelp\n\t  Builds support for COMPLEX and COMPLEX16 data types.\n"
  },
  {
    "path": "package/lapack/lapack.hash",
    "content": "# Locally computed:\nsha256 106087f1bb5f46afdfba7f569d0cbe23dacb9a07cd24733765a0e89dbe1ad573  lapack-3.9.0.tar.gz\nsha256 d56bd4441b999b80c88df04faf0d8b3d7d3b2bd781cf91242c4188e8a6d0f8be  LICENSE\n"
  },
  {
    "path": "package/lapack/lapack.mk",
    "content": "################################################################################\n#\n# lapack\n#\n################################################################################\n\nLAPACK_VERSION = 3.9.0\nLAPACK_LICENSE = BSD-3-Clause\nLAPACK_LICENSE_FILES = LICENSE\nLAPACK_SITE = $(call github,Reference-LAPACK,lapack,v$(LAPACK_VERSION))\nLAPACK_INSTALL_STAGING = YES\nLAPACK_SUPPORTS_IN_SOURCE_BUILD = NO\nLAPACK_CONF_OPTS = -DLAPACKE=ON -DCBLAS=ON\n\nifeq ($(BR2_PACKAGE_LAPACK_COMPLEX),y)\nLAPACK_CONF_OPTS += -DBUILD_COMPLEX=ON -DBUILD_COMPLEX16=ON\nelse\nLAPACK_CONF_OPTS += -DBUILD_COMPLEX=OFF -DBUILD_COMPLEX16=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/latencytop/0001-makefile.patch",
    "content": "Usee $(CC) to enable cross compiling and link to the right ncurses library.\n\nSigned-off-by: Qais Yousef <qais.yousef@imgtec.com>\n\n--- latencytop-0.5/Makefile.old\t2012-04-18 11:59:39.748084334 +0100\n+++ latencytop-0.5/Makefile\t2012-04-18 12:00:08.659112340 +0100\n@@ -4,7 +4,7 @@\n DESTDIR =\n SBINDIR = /usr/sbin\n XCFLAGS = -W  -g `pkg-config --cflags glib-2.0` -D_FORTIFY_SOURCE=2 -Wno-sign-compare\n-LDF = -Wl,--as-needed `pkg-config --libs glib-2.0`   -lncursesw \n+LDF = -Wl,--as-needed `pkg-config --libs glib-2.0`   -lncurses \n \n OBJS= latencytop.o text_display.o translate.o fsync.o\n \n@@ -26,10 +26,10 @@\n \n # We write explicity this \"implicit rule\"\n %.o : %.c\n-\tgcc -c $(CFLAGS) $(XCFLAGS) $< -o $@\n+\t$(CC) -c $(CFLAGS) $(XCFLAGS) $< -o $@\n \n latencytop:  $(OBJS) latencytop.h Makefile\n-\tgcc $(CFLAGS) $(OBJS) $(LDF) -o latencytop \n+\t$(CC) $(CFLAGS) $(OBJS) $(LDF) -o latencytop \n \n clean:\n \trm -f *~ latencytop DEADJOE *.o\n"
  },
  {
    "path": "package/latencytop/Config.in",
    "content": "config BR2_PACKAGE_LATENCYTOP\n\tbool \"latencytop\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  There are many types and causes of latency. LatencyTOP\n\t  focuses on the type of latency that causes skips in audio,\n\t  stutters in your desktop experience or that overloads your\n\t  server (while you have plenty of CPU power left).\n\n\t  LatencyTOP focuses on the cases where the applications want\n\t  to run and execute useful code, but there's some resource\n\t  that's not currently available (and the kernel then blocks\n\t  the process). This is done both on a system level and on a\n\t  per process level, so that you can see what's happening to\n\t  the system, and which process is suffering and/or causing\n\t  the delays.\n\n\t  http://www.latencytop.org\n\ncomment \"latencytop needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/latencytop/latencytop.hash",
    "content": "# locally computed\nsha256  9e7f72fbea7bd918e71212a1eabaad8488d2c602205d2e3c95d62cd57e9203ef  latencytop-0.5.tar.gz\nsha256  34d1db30ab21eaedb2c191b2787632a960090a0c63da9f5b481d84b23b98c438  latencytop.c\n"
  },
  {
    "path": "package/latencytop/latencytop.mk",
    "content": "################################################################################\n#\n# latencytop\n#\n################################################################################\n\nLATENCYTOP_VERSION = 0.5\nLATENCYTOP_SITE = http://www.latencytop.org/download\nLATENCYTOP_DEPENDENCIES = libglib2 ncurses\nLATENCYTOP_LICENSE = GPL-2.0\nLATENCYTOP_LICENSE_FILES = latencytop.c\n\n# NOTE: GTK is heavy weight, we intentionally build the text (ncurses)\n# version only\ndefine LATENCYTOP_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) HAS_GTK_GUI=\nendef\n\ndefine LATENCYTOP_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) install -C $(@D) DESTDIR=$(TARGET_DIR) HAS_GTK_GUI=\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lbase64/0001-retro-compatible-with-Lua-5.1.patch",
    "content": "retro compatible with Lua 5.1 C/API\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/lbase64.c\n===================================================================\n--- a/lbase64.c\n+++ b/lbase64.c\n@@ -111,7 +111,11 @@\n \n LUALIB_API int luaopen_base64(lua_State *L)\n {\n+#if LUA_VERSION_NUM >= 502\n  luaL_newlib(L,R);\n+#else\n+ luaL_register(L,MYNAME,R);\n+#endif\n  lua_pushliteral(L,\"version\");\t\t\t/** version */\n  lua_pushliteral(L,MYVERSION);\n  lua_settable(L,-3);\n"
  },
  {
    "path": "package/lbase64/Config.in",
    "content": "config BR2_PACKAGE_LBASE64\n\tbool \"lbase64\"\n\thelp\n\t  A base64 library for Lua\n\n\t  http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/#lbase64\n"
  },
  {
    "path": "package/lbase64/lbase64.hash",
    "content": "# Locally calculated\nsha256  b83dbc87330a322e5222cd891a6e258b533f5b6c46e8f3c18fc0265e4c991aaa  lbase64.tar.gz\nsha256  a2b4f2d25b56c40801ce4f403541cbc301313048acfaa59c9509024bec57b662  README\n"
  },
  {
    "path": "package/lbase64/lbase64.mk",
    "content": "################################################################################\n#\n# lbase64\n#\n################################################################################\n\nLBASE64_VERSION = 20120820\nLBASE64_SITE = http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/5.3\nLBASE64_SOURCE = lbase64.tar.gz\nLBASE64_LICENSE = Public domain\nLBASE64_LICENSE_FILES = README\nLBASE64_DEPENDENCIES = luainterpreter\n\ndefine LBASE64_BUILD_CMDS\n\t$(MAKE1) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -fPIC\" -C $(@D) so\nendef\n\ndefine LBASE64_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/base64.so \\\n\t\t$(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)/base64.so\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lbreakout2/Config.in",
    "content": "config BR2_PACKAGE_LBREAKOUT2\n\tbool \"LBreakout2\"\n\tselect BR2_PACKAGE_SDL\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  LBreakout2 is the successor to LBreakout, a breakout-style\n\t  arcade game in the manner of Arkanoid. Requires SDL, libpng,\n\t  and optionnally SDL_mixer/SDL_net.\n\t  A display with minimum 640x480 resolution, a keyboard and a\n\t  mouse are recommanded.\n\n\t  http://lgames.sourceforge.net/index.php?project=LBreakout2\n\nif BR2_PACKAGE_LBREAKOUT2\n\nconfig BR2_PACKAGE_LBREAKOUT2_AUDIO\n\tbool \"audio support\"\n\tdefault y\n\tselect BR2_PACKAGE_SDL_MIXER\n\thelp\n\t  Activates audio support in LBreakout2. Will add SDL_mixer.\n\nconfig BR2_PACKAGE_LBREAKOUT2_NET\n\tbool \"network support\"\n\tdefault y\n\tselect BR2_PACKAGE_SDL_NET\n\thelp\n\t  Activates network support LBreakout2. Will add SDL_net.\n\nendif\n"
  },
  {
    "path": "package/lbreakout2/lbreakout2.hash",
    "content": "# From https://sourceforge.net/projects/lgames/files/lbreakout2/2.6/\nmd5 1a9238b83f9f13f09b7a4d53e00b4e84  lbreakout2-2.6.5.tar.gz\nsha1 d92326499165fd368be04378d633e13d42b4d2d7  lbreakout2-2.6.5.tar.gz\n# Locally computed:\nsha256  9104d6175553da3442dc6a5fc407a669e2f5aff3eedc5d30409eb003b7a78d6f  lbreakout2-2.6.5.tar.gz\nsha256  67f82e045cf7acfef853ea0f426575a8359161a0a325e19f02b529a87c4b6c34  COPYING\n"
  },
  {
    "path": "package/lbreakout2/lbreakout2.mk",
    "content": "################################################################################\n#\n# lbreakout2\n#\n################################################################################\n\nLBREAKOUT2_VERSION_MAJOR = 2.6\nLBREAKOUT2_VERSION = $(LBREAKOUT2_VERSION_MAJOR).5\nLBREAKOUT2_SITE = https://downloads.sourceforge.net/lgames/lbreakout2/$(LBREAKOUT2_VERSION_MAJOR)\nLBREAKOUT2_LICENSE = GPL-2.0+\nLBREAKOUT2_LICENSE_FILES = COPYING\n\nLBREAKOUT2_DEPENDENCIES = sdl libpng $(TARGET_NLS_DEPENDENCIES)\n\nLBREAKOUT2_CONF_ENV = \\\n\tSDL_CONFIG=\"$(STAGING_DIR)/usr/bin/sdl-config\" \\\n\tLIBS=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_LBREAKOUT2_AUDIO),y)\nLBREAKOUT2_DEPENDENCIES += sdl_mixer\nLBREAKOUT2_CONF_OPTS += --enable-audio=yes\nelse\nLBREAKOUT2_CONF_OPTS += --disable-audio\nendif\n\nifeq ($(BR2_PACKAGE_LBREAKOUT2_NET),y)\nLBREAKOUT2_DEPENDENCIES += sdl_net\nLBREAKOUT2_CONF_OPTS += --enable-network=yes\nelse\nLBREAKOUT2_CONF_OPTS += --disable-network\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lcdapi/Config.in",
    "content": "config BR2_PACKAGE_LCDAPI\n\tbool \"lcdapi\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  C++ client API for lcdproc, containing a set of widget\n\t  classes.\n\n\t  https://github.com/spdawson/lcdapi\n\ncomment \"lcdapi needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/lcdapi/lcdapi.hash",
    "content": "# Locally computed\nsha256  6afdd4238af1fa7ea5f10378601381fc3f535a10504dc7d4ea8eab56e0dda091  lcdapi-0.11.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/lcdapi/lcdapi.mk",
    "content": "################################################################################\n#\n# lcdapi\n#\n################################################################################\n\nLCDAPI_VERSION = 0.11\nLCDAPI_SITE = $(call github,spdawson,lcdapi,v$(LCDAPI_VERSION))\nLCDAPI_LICENSE = LGPL-2.1+\nLCDAPI_LICENSE_FILES = COPYING\nLCDAPI_AUTORECONF = YES\nLCDAPI_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lcdproc/0001-LCDd.conf.patch",
    "content": "Fix the default LCDd configuration file, so that the DriverPath\nis set to the correct lcdproc library install path, rather than\nthe dummy/default path.\n\nSigned-off-by: Simon Dawson <spdawson at gmail.com>\n---\n\n--- lcdproc-0.5.3/LCDd.conf.orig       2009-06-20 14:48:34.000000000 +0100\n+++ lcdproc-0.5.3/LCDd.conf    2010-05-11 10:02:21.000000000 +0100\n@@ -34,7 +34,7 @@\n #            the driver modules and will thus not be able to\n #            function properly.\n # NOTE: Always place a slash as last character !\n-DriverPath=server/drivers/\n+DriverPath=/usr/lib/lcdproc/\n\n # Tells the server to load the given drivers. Multiple lines can be given.\n # The name of the driver is case sensitive and determines the section\n"
  },
  {
    "path": "package/lcdproc/0002-Add-missing-ioctl-header.patch",
    "content": "From 6267665454501512ac054202b38e4e6a72fa284b Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Fri, 8 Sep 2017 14:19:11 +0300\nSubject: [PATCH] Add missing ioctl header\n\nThe spidev.h header uses macros from linux/ioctl.h. Add this header\nexplicitly since some libc, like musl, do not include it implicitly.\nThis fixes the following build failure:\n\nIn file included from .../sysroot/usr/include/sys/ioctl.h:7:0,\n                 from hd44780-spi.c:31:\nhd44780-spi.c: In function ‘spi_transfer’:\nhd44780-spi.c:89:24: error: ‘_IOC_SIZEBITS’ undeclared (first use in this function)\n  status = ioctl(p->fd, SPI_IOC_MESSAGE(1), &xfer);\n                        ^\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: https://github.com/lcdproc/lcdproc/pull/90\n\n server/drivers/hd44780-pifacecad.c | 1 +\n server/drivers/hd44780-spi.c       | 1 +\n 2 files changed, 2 insertions(+)\n\ndiff --git a/server/drivers/hd44780-pifacecad.c b/server/drivers/hd44780-pifacecad.c\nindex a73b9f9b1f82..55139124d852 100644\n--- a/server/drivers/hd44780-pifacecad.c\n+++ b/server/drivers/hd44780-pifacecad.c\n@@ -54,6 +54,7 @@\n #include <unistd.h>\n #include <fcntl.h>\n #include <sys/ioctl.h>\n+#include <linux/ioctl.h>\n #include <stdint.h>\n #include <linux/spi/spidev.h>\n \ndiff --git a/server/drivers/hd44780-spi.c b/server/drivers/hd44780-spi.c\nindex 791156f87a26..74c85fb014aa 100644\n--- a/server/drivers/hd44780-spi.c\n+++ b/server/drivers/hd44780-spi.c\n@@ -29,6 +29,7 @@\n #include <unistd.h>\n #include <fcntl.h>\n #include <sys/ioctl.h>\n+#include <linux/ioctl.h>\n #include <stdint.h>\n #include <linux/spi/spidev.h>\n \n-- \n2.14.1\n\n"
  },
  {
    "path": "package/lcdproc/0003-Fixcompilation-with-GCC-10-x.patch",
    "content": "From 084126b03f29b33ab3e657c66e8c6a439f27f8e1 Mon Sep 17 00:00:00 2001\nFrom: Harald Geyer <harald@ccbib.org>\nDate: Mon, 10 Feb 2020 13:15:10 +0100\nSubject: [PATCH] Fix compilation with GCC >= 10.x\n\nStarting with GCC >= 10.x, -fno-common is used as default\ninstead of -fcommon. This patch fixes the compilation.\n\nCloses: #148\n\nSuggested-by: Conrad Kostecki <conrad@kostecki.com>\nSigned-off-by: Harald Geyer <harald@ccbib.org>\n\n[Retrieved from:\nhttps://github.com/lcdproc/lcdproc/commit/084126b03f29b33ab3e657c66e8c6a439f27f8e1]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n clients/lcdproc/iface.c | 1 +\n clients/lcdproc/iface.h | 2 +-\n 2 files changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/clients/lcdproc/iface.c b/clients/lcdproc/iface.c\nindex 40e50cb7..1ac355bd 100644\n--- a/clients/lcdproc/iface.c\n+++ b/clients/lcdproc/iface.c\n@@ -32,6 +32,7 @@\n #define UNSET_INT -1\n #define UNSET_STR \"\\01\"\n \n+IfaceInfo iface[MAX_INTERFACES];\n \n static int iface_count = 0;\t/* number of interfaces */\n static char unit_label[10] = \"B\";\t/* default unit label is Bytes */\ndiff --git a/clients/lcdproc/iface.h b/clients/lcdproc/iface.h\nindex cc6dbaaf..c1bd6b5b 100644\n--- a/clients/lcdproc/iface.h\n+++ b/clients/lcdproc/iface.h\n@@ -18,7 +18,7 @@\n /** max number of interfaces in multi-interface mode */\n #define MAX_INTERFACES 3\n \n-IfaceInfo iface[MAX_INTERFACES];\t/* interface info */\n+extern IfaceInfo iface[MAX_INTERFACES];\t/* interface info */\n \n /** Update screen content */\n int iface_screen(int rep, int display, int *flags_ptr);\n"
  },
  {
    "path": "package/lcdproc/Config.in",
    "content": "comment \"lcdproc needs a toolchain w/  dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_LCDPROC\n\tbool \"lcdproc\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  LCD display driver daemon and clients\n\n\t  http://lcdproc.org/\n\nif BR2_PACKAGE_LCDPROC\n\nconfig BR2_PACKAGE_LCDPROC_DRIVERS\n\tstring \"List of drivers to build\"\n\tdefault \"all\"\n\thelp\n\t  Specify a comma-separated list of lcdproc drivers to be built\n\nconfig BR2_PACKAGE_LCDPROC_MENUS\n\tbool \"Menu support\"\n\thelp\n\t  Enable support for lcdproc menus\n\nendif\n"
  },
  {
    "path": "package/lcdproc/lcdproc.hash",
    "content": "# Locally computed:\nsha256  843007d377adc856529ed0c7c42c9a7563043f06b1b73add0372bba3a3029804  lcdproc-0.5.7.tar.gz\nsha256  d48a915496c96ff775b377d2222de3150ae5172bfb84a6ec9f9ceab962f97b83  lcdproc-0.5.9.tar.gz\nsha256  1b2a567f289f66a143c56353e7b3d4fa5862514a5e3c5cfdf8b02ee5e5aaa953  COPYING\n"
  },
  {
    "path": "package/lcdproc/lcdproc.mk",
    "content": "################################################################################\n#\n# lcdproc\n#\n################################################################################\n\nLCDPROC_VERSION = 0.5.9\nLCDPROC_SITE = https://github.com/lcdproc/lcdproc/releases/download/v$(LCDPROC_VERSION)\nLCDPROC_LICENSE = GPL-2.0+\nLCDPROC_LICENSE_FILES = COPYING\nLCDPROC_MAKE = $(MAKE1)\n\nLCDPROC_CONF_OPTS = --enable-drivers=$(BR2_PACKAGE_LCDPROC_DRIVERS)\n\nifeq ($(BR2_PACKAGE_LCDPROC_MENUS),y)\nLCDPROC_CONF_OPTS += --enable-lcdproc-menus\nendif\n\nLCDPROC_DEPENDENCIES = freetype ncurses zlib\n\nLCDPROC_CONF_ENV += \\\n\tac_cv_mtab_file=/etc/mtab \\\n\tac_cv_path_FT2_CONFIG=$(STAGING_DIR)/usr/bin/freetype-config\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nLCDPROC_DEPENDENCIES += libpng\nLCDPROC_CONF_ENV += ac_cv_path__png_config=$(STAGING_DIR)/usr/bin/libpng-config\nLCDPROC_CONF_OPTS += --enable-libpng\nelse\nLCDPROC_CONF_OPTS += --disable-libpng\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lcms2/Config.in",
    "content": "config BR2_PACKAGE_LCMS2\n\tbool \"lcms2\"\n\thelp\n\t  Little Color Management Software (CMS) intends to be an OPEN\n\t  SOURCE small-footprint color management engine, with special\n\t  focus on accuracy and performance.\n\t  It uses the International Color Consortium standard (ICC),\n\t  which is the modern standard when regarding to color\n\t  management.\n\n\t  http://www.littlecms.com/\n"
  },
  {
    "path": "package/lcms2/lcms2.hash",
    "content": "# From https://sourceforge.net/projects/lcms/files/lcms/2.12\nsha1  3d0c0276fcd3930b80c424512ec0b1ed54ec1497  lcms2-2.12.tar.gz\n# Locally computed:\nsha256  18663985e864100455ac3e507625c438c3710354d85e5cbb7cd4043e11fe10f5  lcms2-2.12.tar.gz\nsha256  46d4e05af3bce75332a12d01f19bcce7e32b6bac544be28a64043d0231291e31  COPYING\n"
  },
  {
    "path": "package/lcms2/lcms2.mk",
    "content": "################################################################################\n#\n# lcms2\n#\n################################################################################\n\nLCMS2_VERSION = 2.12\nLCMS2_SITE = http://downloads.sourceforge.net/project/lcms/lcms/$(LCMS2_VERSION)\nLCMS2_LICENSE = MIT\nLCMS2_LICENSE_FILES = COPYING\nLCMS2_CPE_ID_VENDOR = littlecms\nLCMS2_CPE_ID_PRODUCT = little_cms\nLCMS2_INSTALL_STAGING = YES\n# tiff is only used by tificc sample\nLCMS2_CONF_OPTS = --without-tiff\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nLCMS2_CONF_OPTS += --with-jpeg\nLCMS2_DEPENDENCIES += jpeg\nelse\nLCMS2_CONF_OPTS += --without-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLCMS2_CONF_OPTS += --with-zlib\nLCMS2_DEPENDENCIES += zlib\nelse\nLCMS2_CONF_OPTS += --without-zlib\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/leafnode2/0001-cross_makefile.patch",
    "content": "Fix cross-compilation issues\n\n - During target package compilation the host version of b_sortnl is\n   needed.\n\n - Do not call a 'amiroot' program built for the target when\n   cross-compiling. We're anyway not root, so simply remove the\n   chown/chgrp dance.\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/Makefile.in\n===================================================================\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -1853,7 +1853,7 @@\n \n configparam_data.c: $(srcdir)/config.table b_sortnl$(EXEEXT) genconfigparam_data.awk\n \trm -f config.table.sorted\n-\t./b_sortnl$(EXEEXT) <$(srcdir)/config.table >config.table.sorted\n+\t./b_sortnl_host$(EXEEXT) <$(srcdir)/config.table >config.table.sorted\n \t$(AWK) -f $(srcdir)/genconfigparam_data.awk <config.table.sorted >$@ \\\n \t|| { rm -f $@ ; false ; }\n \n@@ -1868,13 +1868,7 @@\n install-data-hook:\n \t$(INSTALL) -d -m 02770 $(DESTDIR)$(SPOOLDIR)\n \t$(INSTALL) -d -m 02770 $(DESTDIR)$(SPOOLDIR)/leaf.node\n-\t-./amiroot && chown $(RUNAS_USER) $(DESTDIR)$(SPOOLDIR)\n-\t-./amiroot && chown $(RUNAS_USER) $(DESTDIR)$(SPOOLDIR)/leaf.node\n-\t-./amiroot && chgrp $(RUNAS_GROUP) $(DESTDIR)$(SPOOLDIR)\n-\t-./amiroot && chgrp $(RUNAS_GROUP) $(DESTDIR)$(SPOOLDIR)/leaf.node\n \trm -f $(DESTDIR)$(sbindir)/leafnode-version # now in $(bindir)\n-\t./amiroot && p=$(DESTDIR)$(bindir)/newsq && chown 0 $$p \\\n-\t\t&& chgrp $(RUNAS_GROUP) $$p && chmod 2111 $$p  ; true\n \t@echo\n \t@echo \"### If upgrading from leafnode before 1.6,\"\n \t@echo \"### run:  make update\"\n"
  },
  {
    "path": "package/leafnode2/Config.in",
    "content": "config BR2_PACKAGE_LEAFNODE2\n\tbool \"leafnode2\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  Leafnode-2 is a store-and-forward NNTP (or Usenet) proxy\n\t  server designed for small sites with just a few active\n\t  newsgroups.\n\n\t  Leafnode-2 needs inetd, check chapter 14 of the documentation\n\t  at:\n\t  http://krusty.dt.e-technik.tu-dortmund.de/~ma/leafnode/beta/leafnode-readme.txt\n\n\t  For example, you can add this line to inetd.conf:\n\t  nntp    stream  tcp     nowait  news    /usr/sbin/leafnode\n\n\t  http://krusty.dt.e-technik.tu-dortmund.de/~ma/leafnode/beta\n"
  },
  {
    "path": "package/leafnode2/leafnode2.hash",
    "content": "# Locally calculated\nsha256  34eba2cbbb871b724c8d5dd402d1c358aeb21ba426beb5658e155ed0d7461075  leafnode-2.0.0.alpha20140727b.tar.bz2\nsha256  59d37f745dc5a2d63a51dff344f4ad89f72e76f8c7b7d877f20880d838b1bec9  COPYING\nsha256  0c92246a9d3636e0aa6a244f6c481639b2e530fbbb25bc048ce7acd83e1fc5f6  COPYING.LGPL\n"
  },
  {
    "path": "package/leafnode2/leafnode2.mk",
    "content": "################################################################################\n#\n# leafnode2\n#\n################################################################################\n\nLEAFNODE2_VERSION = 2.0.0.alpha20140727b\nLEAFNODE2_SOURCE = leafnode-$(LEAFNODE2_VERSION).tar.bz2\nLEAFNODE2_SITE = http://krusty.dt.e-technik.tu-dortmund.de/~ma/leafnode/beta\nLEAFNODE2_LICENSE = LGPL-2.1\nLEAFNODE2_LICENSE_FILES = COPYING COPYING.LGPL\nLEAFNODE2_DEPENDENCIES = host-pcre pcre\n\nLEAFNODE2_CONF_ENV = \\\n\tPCRECONFIG=\"$(STAGING_DIR)/usr/bin/pcre-config\"\n\n# --enable-runas-user use 'news' as default but the configure stop\n# if news doesn't exist on the build host.\n# Use 'root' while cross-compiling\nLEAFNODE2_CONF_OPTS = \\\n\t--sysconfdir=/etc/leafnode2 \\\n\t--enable-spooldir=/var/spool/news \\\n\t--enable-runas-user=root\n\n# Leafnode2 needs the host version of b_sortnl during\n# compilation. Instead of creating a seperate host package and\n# installing b_sortnl to $(HOST_DIR) this binary is compiled\n# on-the-fly, host-pcre is needed for this\ndefine LEAFNODE2_BUILD_SORTNL_TOOL\n\tcd $(@D); \\\n\t$(HOSTCC) $(HOST_CFLAGS) -o b_sortnl_host \\\n\t\tarc4random.c mergesort.c b_sortnl.c critmem_malloc.c \\\n\t\tcritmem_realloc.c -DHAVE_CONFIG_H -I$(HOST_DIR)/include \\\n\t\t-L $(HOST_DIR)/lib -Wl,-rpath,$(HOST_DIR)/lib -lpcre\nendef\n\nLEAFNODE2_PRE_BUILD_HOOKS += LEAFNODE2_BUILD_SORTNL_TOOL\n\ndefine LEAFNODE2_USERS\n\tnews -1 news -1 * - - - Leafnode2 daemon\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/leafpad/Config.in",
    "content": "config BR2_PACKAGE_LEAFPAD\n\tbool \"leafpad\"\n\tdepends on BR2_PACKAGE_LIBGTK2\n\thelp\n\t  GTK+ based simple text editor\n\n\t  http://savannah.nongnu.org/download/leafpad\n"
  },
  {
    "path": "package/leafpad/leafpad.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  959d22ae07f22803bc66ff40d373a854532a6e4732680bf8a96a3fbcb9f80a2c  leafpad-0.8.18.1.tar.gz\n# Locally computed\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/leafpad/leafpad.mk",
    "content": "################################################################################\n#\n# leafpad\n#\n################################################################################\n\nLEAFPAD_VERSION = 0.8.18.1\nLEAFPAD_SITE = http://savannah.nongnu.org/download/leafpad\nLEAFPAD_DEPENDENCIES = libgtk2 host-intltool\nLEAFPAD_LICENSE = GPL-2.0+\nLEAFPAD_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lensfun/Config.in",
    "content": "config BR2_PACKAGE_LENSFUN\n\tbool \"lensfun\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Lensfun itself is only a library for correcting several\n\t  artefacts and a database for storing lens profiles. To\n\t  actually use Lensfun to process your images you need an\n\t  image editing application with Lensfun support.\n\n\t  http://lensfun.sourceforge.net\n\nif BR2_PACKAGE_LENSFUN\n\nconfig BR2_PACKAGE_LENSFUN_TOOLS\n\tbool \"lensfun tools\"\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  Build 'lenstool'.\n\nendif\n\ncomment \"lensfun needs a toolchain w/ C++, threads, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/lensfun/lensfun.hash",
    "content": "# From https://sourceforge.net/projects/lensfun/files/0.3.2\nsha1 1d978b15aa7304d66a4931fa37ca9f8f89396c16 lensfun-0.3.2.tar.gz\nmd5 247e59a0812ec451f6cd0d20b3379cb5 lensfun-0.3.2.tar.gz\n# Locally calculated\nsha256  ae8bcad46614ca47f5bda65b00af4a257a9564a61725df9c74cb260da544d331  lensfun-0.3.2.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  docs/gpl-3.0.txt\nsha256  a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c  docs/lgpl-3.0.txt\n"
  },
  {
    "path": "package/lensfun/lensfun.mk",
    "content": "################################################################################\n#\n# lensfun\n#\n################################################################################\n\nLENSFUN_VERSION = 0.3.2\nLENSFUN_SITE = https://sourceforge.net/projects/lensfun/files/$(LENSFUN_VERSION)\nLENSFUN_LICENSE = LGPL-3.0+ (libraries), GPL-3.0+ (programs)\nLENSFUN_LICENSE_FILES = docs/gpl-3.0.txt docs/lgpl-3.0.txt\nLENSFUN_INSTALL_STAGING = YES\nLENSFUN_DEPENDENCIES = libglib2\n\n# lensfun doesn't support in source build, it fail to build lensfun tools.\nLENSFUN_SUPPORTS_IN_SOURCE_BUILD = NO\n\nifeq ($(BR2_X86_CPU_HAS_SSE),y)\nLENSFUN_CONF_OPTS += -DBUILD_FOR_SSE=ON\nelse\nLENSFUN_CONF_OPTS += -DBUILD_FOR_SSE=OFF\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE2),y)\nLENSFUN_CONF_OPTS += -DBUILD_FOR_SSE2=ON\nelse\nLENSFUN_CONF_OPTS += -DBUILD_FOR_SSE2=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LENSFUN_TOOLS),y)\nLENSFUN_DEPENDENCIES += libpng\nLENSFUN_CONF_OPTS += -DBUILD_LENSTOOL=ON\n# broken\nelse\nLENSFUN_CONF_OPTS += -DBUILD_LENSTOOL=OFF\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nLENSFUN_CONF_OPTS += -DBUILD_STATIC=ON\nelse\nLENSFUN_CONF_OPTS += -DBUILD_STATIC=OFF\nendif\n\n# Don't install helper scripts (which require python3 and gksudo).\n# Don't run setup.py on the host.\nLENSFUN_CONF_OPTS += -DINSTALL_HELPER_SCRIPTS=OFF -DPYTHON=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/leptonica/Config.in",
    "content": "config BR2_PACKAGE_LEPTONICA\n\tbool \"leptonica\"\n\thelp\n\t  Leptonica is an image processing and image analysis library.\n\n\t  http://www.leptonica.org/\n"
  },
  {
    "path": "package/leptonica/leptonica.hash",
    "content": "# locally computed hash\nsha256  155302ee914668c27b6fe3ca9ff2da63b245f6d62f3061c8f27563774b8ae2d6  leptonica-1.82.0.tar.gz\nsha256  87829abb5bbb00b55a107365da89e9a33f86c4250169e5a1e5588505be7d5806  leptonica-license.txt\n"
  },
  {
    "path": "package/leptonica/leptonica.mk",
    "content": "################################################################################\n#\n# leptonica\n#\n################################################################################\n\nLEPTONICA_VERSION = 1.82.0\nLEPTONICA_SITE = http://www.leptonica.org/source\nLEPTONICA_LICENSE = BSD-2-Clause\nLEPTONICA_LICENSE_FILES = leptonica-license.txt\nLEPTONICA_CPE_ID_VENDOR = leptonica\nLEPTONICA_INSTALL_STAGING = YES\nLEPTONICA_DEPENDENCIES = host-pkgconf\n\nLEPTONICA_CONF_OPTS += --disable-programs\n\nifeq ($(BR2_PACKAGE_GIFLIB),y)\nLEPTONICA_DEPENDENCIES += giflib\nLEPTONICA_CONF_OPTS += --with-giflib\nelse\nLEPTONICA_CONF_OPTS += --without-giflib\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nLEPTONICA_DEPENDENCIES += jpeg\nLEPTONICA_CONF_OPTS += --with-jpeg\nelse\nLEPTONICA_CONF_OPTS += --without-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nLEPTONICA_DEPENDENCIES += libpng\nLEPTONICA_CONF_OPTS += --with-libpng\nelse\nLEPTONICA_CONF_OPTS += --without-libpng\nendif\n\nifeq ($(BR2_PACKAGE_OPENJPEG),y)\nLEPTONICA_DEPENDENCIES += openjpeg\nLEPTONICA_CONF_OPTS += --with-libopenjpeg\nelse\nLEPTONICA_CONF_OPTS += --without-libopenjpeg\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nLEPTONICA_DEPENDENCIES += tiff\nLEPTONICA_CONF_OPTS += --with-libtiff\nelse\nLEPTONICA_CONF_OPTS += --without-libtiff\nendif\n\nifeq ($(BR2_PACKAGE_WEBP),y)\nLEPTONICA_DEPENDENCIES += webp\nLEPTONICA_CONF_OPTS += --with-libwebp\nifeq ($(BR2_PACKAGE_WEBP_DEMUX)$(BR2_PACKAGE_WEBP_MUX),yy)\nLEPTONICA_CONF_OPTS += --with-libwebpmux\nelse\nLEPTONICA_CONF_OPTS += --without-libwebpmux\nendif\nelse\nLEPTONICA_CONF_OPTS += \\\n\t--without-libwebp \\\n\t--without-libwebpmux\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLEPTONICA_DEPENDENCIES += zlib\nLEPTONICA_CONF_OPTS += --with-zlib\nelse\nLEPTONICA_CONF_OPTS += --without-zlib\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/less/Config.in",
    "content": "config BR2_PACKAGE_LESS\n\tbool \"less\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Excellent text file viewer.\n\n\t  http://www.greenwoodsoftware.com/\n"
  },
  {
    "path": "package/less/less.hash",
    "content": "# Locally calculated after checking pgp signature\n# using DSA key F153A7C833235259\n# http://www.greenwoodsoftware.com/less/less-590.sig\nsha256  6aadf54be8bf57d0e2999a3c5d67b1de63808bb90deb8f77b028eafae3a08e10  less-590.tar.gz\n# Locally calculated\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/less/less.mk",
    "content": "################################################################################\n#\n# less\n#\n################################################################################\n\nLESS_VERSION = 590\nLESS_SITE = http://www.greenwoodsoftware.com/less\nLESS_LICENSE = GPL-3.0+\nLESS_LICENSE_FILES = COPYING\nLESS_CPE_ID_VENDOR = gnu\nLESS_DEPENDENCIES = ncurses\n\ndefine LESS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 $(@D)/less $(TARGET_DIR)/usr/bin/less\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lesstif/Config.in",
    "content": "config BR2_PACKAGE_LESSTIF\n\tbool \"lesstif\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_FREETYPE\n\thelp\n\t  lesstif is the Hungry Programmers' version of OSF/Motif\n\n\t  http://lesstif.sourceforge.net/\n"
  },
  {
    "path": "package/lesstif/lesstif.hash",
    "content": "# Locally computed:\nsha256  eb4aa38858c29a4a3bcf605cfe7d91ca41f4522d78d770f69721e6e3a4ecf7e3  lesstif-0.95.2.tar.bz2\nsha256  94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23  COPYING.LIB\n"
  },
  {
    "path": "package/lesstif/lesstif.mk",
    "content": "################################################################################\n#\n# lesstif\n#\n################################################################################\n\nLESSTIF_VERSION = 0.95.2\nLESSTIF_SOURCE = lesstif-$(LESSTIF_VERSION).tar.bz2\nLESSTIF_SITE = http://downloads.sourceforge.net/project/lesstif/lesstif/$(LESSTIF_VERSION)\nLESSTIF_INSTALL_STAGING = YES\nLESSTIF_DEPENDENCIES = \\\n\txlib_libXt \\\n\txlib_libXext \\\n\tfreetype\nLESSTIF_LICENSE = LGPL-2.0+\nLESSTIF_LICENSE_FILES = COPYING.LIB\nLESSTIF_CONF_OPTS = \\\n\t--with-gnu-ld \\\n\t--with-freetype-config=$(STAGING_DIR)/usr/bin/freetype-config \\\n\t--enable-production=yes \\\n\t--enable-build-tests=no \\\n\t--no-recursion\n\n# Reduces the buggy makefile to the smallest possible (and working) thing\ndefine LESSTIF_NOMAN2HTML\n\techo \"all:\" > $(@D)/doc/Makefile\n\techo \"\" >> $(@D)/doc/Makefile\n\techo \"install:\" >> $(@D)/doc/Makefile\n\techo \"\" >> $(@D)/doc/Makefile\n\techo \"clean:\" >> $(@D)/doc/Makefile\nendef\n\n# Prevents to copy ac_find_motif.m4 on target, it would else\n# be created at $(TARGET_DIR)/$(HOST_DIR)/share/aclocal/ac_find_motif.m4\ndefine LESSTIF_FIXACLOCAL\n\tsed -i -e \"/install-data-am: install-aclocalDATA/d\" $(@D)/scripts/autoconf/Makefile\nendef\n\nLESSTIF_POST_CONFIGURE_HOOKS += LESSTIF_NOMAN2HTML\nLESSTIF_POST_CONFIGURE_HOOKS += LESSTIF_FIXACLOCAL\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/let-me-create/0001-fix-build-with-musl-C-library.patch",
    "content": "From 93fbc53a727a49dd5061e44e3156ff2044e6e0b5 Mon Sep 17 00:00:00 2001\nFrom: Rahul Bedarkar <rahulbedarkar89@gmail.com>\nDate: Tue, 1 Aug 2017 22:44:22 +0530\nSubject: [PATCH] fix build with musl C library\n\nWith musl C library, we get following build error:\n\n/home/buildroot/autobuild/run/instance-3/output/build/let-me-create-v1.5.2/src/core/spi.c: In function 'spi_transfer':\n/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)\nif (ioctl(fd, SPI_IOC_MESSAGE(1), &tr) < 0) {\n^\n/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\n\nInclude <linux/ioctl.h> for musl C library compatibility.\n\nThis build issue is detected by Buildroot autobuilder:\nhttp://autobuild.buildroot.net/results/af9/af946fa6fe05ee265e4ac97742b15afeb0cea1ab/\n\nSigned-off-by: Rahul Bedarkar rahulbedarkar89@gmail.com\n---\nUpstream status: https://github.com/CreatorDev/LetMeCreate/pull/29\n\n src/core/spi.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/core/spi.c b/src/core/spi.c\nindex 4d55cee..9ec7ea9 100644\n--- a/src/core/spi.c\n+++ b/src/core/spi.c\n@@ -1,4 +1,5 @@\n #include <sys/ioctl.h>\n+#include <linux/ioctl.h>\n #include <linux/spi/spidev.h>\n #include <fcntl.h>\n #include <errno.h>\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/let-me-create/Config.in",
    "content": "comment \"let-me-create needs a toolchain w/ C++, threads, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_LET_ME_CREATE\n\tbool \"let-me-create\"\n\t# build issues in static libs configuration\n\t# see https://github.com/CreatorDev/LetMeCreate/issues/28\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  This library is collection of small wrappers for some\n\t  interfaces on the Creator Ci40 board. It aims at making\n\t  easier to develop on this platform. It also provides\n\t  wrappers for a few clicks.\n\n\t  https://github.com/CreatorDev/LetMeCreate\n\nif BR2_PACKAGE_LET_ME_CREATE\n\nconfig BR2_PACKAGE_LET_ME_CREATE_EXAMPLES\n\tbool \"Build and install examples\"\n\thelp\n\t  Build and install examples\n\nendif\n"
  },
  {
    "path": "package/let-me-create/let-me-create.hash",
    "content": "# Locally computed\nsha256  5f42858a2062f34d2578e9cb1aed3ccb8d2409d908aa4c41a924418666d5f2bd  let-me-create-1.5.2.tar.gz\nsha256  8ffc162e1435e810845b09a4c0d534df057a030f4c107778677b6621dc203426  LICENSE\n"
  },
  {
    "path": "package/let-me-create/let-me-create.mk",
    "content": "################################################################################\n#\n# LetMeCreate\n#\n################################################################################\n\nLET_ME_CREATE_VERSION = 1.5.2\nLET_ME_CREATE_SITE = $(call github,CreatorDev,LetMeCreate,v$(LET_ME_CREATE_VERSION))\nLET_ME_CREATE_INSTALL_STAGING = YES\nLET_ME_CREATE_LICENSE = BSD-3-Clause\nLET_ME_CREATE_LICENSE_FILES = LICENSE\n\n# pure static build not supported\nifeq ($(BR2_SHARED_LIBS),y)\nLET_ME_CREATE_CONF_OPTS += -DBUILD_STATIC=OFF -DBUILD_SHARED=ON\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nLET_ME_CREATE_CONF_OPTS += -DBUILD_STATIC=ON -DBUILD_SHARED=ON\nendif\n\nifeq ($(BR2_PACKAGE_LET_ME_CREATE_EXAMPLES),y)\nLET_ME_CREATE_CONF_OPTS += -DBUILD_EXAMPLES=ON\nelse\nLET_ME_CREATE_CONF_OPTS += -DBUILD_EXAMPLES=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/leveldb/0001-Fix-compilation-with-g-4.8.2.patch",
    "content": "From 8a8016f6d2af335ab205aa40d5274fc9b0c7a566 Mon Sep 17 00:00:00 2001\nFrom: Steve James <ste@junkomatic.net>\nDate: Sun, 5 Apr 2015 16:29:51 +0200\nSubject: [PATCH 1/2] Fix compilation with g++ 4.8.2\n\nWhere db_iter.cc fails to get a typedef for ssize_t when compiled by\nGCC.\n\nUpstream-Status: Submitted [https://github.com/google/leveldb/issues/233]\n\nSigned-off-by: Steve James <ste@junkomatic.net>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n db/db_iter.cc | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/db/db_iter.cc b/db/db_iter.cc\nindex 3b2035e..c2e5f35 100644\n--- a/db/db_iter.cc\n+++ b/db/db_iter.cc\n@@ -13,6 +13,7 @@\n #include \"util/logging.h\"\n #include \"util/mutexlock.h\"\n #include \"util/random.h\"\n+#include <sys/types.h> // for ssize_t\n \n namespace leveldb {\n \n-- \n2.1.0\n\n"
  },
  {
    "path": "package/leveldb/0002-CMake-install-libmemenv.a.patch",
    "content": "From 2fa960098e5b6f9daa9f7d6cab27188566859be8 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sat, 12 Oct 2019 14:43:46 +0200\nSubject: [PATCH] CMake: install libmemenv.a\n\nNeeded for qt5webkit\nhttps://git.busybox.net/buildroot/commit/?id=8a10d9ce311c6cb0490d76921cae55618c258354\nhttps://git.busybox.net/buildroot/commit/?id=16f847340d07dce620e4c3fc0a099aa79898d86a\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n CMakeLists.txt | 26 +++++++++++++++++++++++++-\n 1 file changed, 25 insertions(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex a65afbf..83b2425 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -187,6 +187,30 @@ target_sources(leveldb\n     \"${LEVELDB_PUBLIC_INCLUDE_DIR}/write_batch.h\"\n )\n \n+set(libmemenv_a_sources\n+    \"${PROJECT_SOURCE_DIR}/helpers/memenv/memenv.cc\"\n+    \"${PROJECT_SOURCE_DIR}/helpers/memenv/memenv.h\"\n+    )\n+add_library(memenv STATIC ${libmemenv_a_sources})\n+target_compile_definitions(memenv\n+  PRIVATE\n+    # Used by include/export.h when building shared libraries.\n+    LEVELDB_COMPILE_LIBRARY\n+    # Used by port/port.h.\n+    ${LEVELDB_PLATFORM_NAME}=1\n+)\n+if (NOT HAVE_CXX17_HAS_INCLUDE)\n+  target_compile_definitions(memenv\n+    PRIVATE\n+      LEVELDB_HAS_PORT_CONFIG_H=1\n+  )\n+endif(NOT HAVE_CXX17_HAS_INCLUDE)\n+target_include_directories(memenv\n+  PUBLIC\n+    $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>\n+    $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>\n+)\n+\n if (WIN32)\n   target_sources(leveldb\n     PRIVATE\n@@ -418,7 +436,7 @@ endif(LEVELDB_BUILD_BENCHMARKS)\n \n if(LEVELDB_INSTALL)\n   include(GNUInstallDirs)\n-  install(TARGETS leveldb\n+  install(TARGETS leveldb memenv\n     EXPORT leveldbTargets\n     RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}\n     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}\n@@ -444,6 +462,12 @@ if(LEVELDB_INSTALL)\n     DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/leveldb\n   )\n \n+  install(\n+    FILES\n+      \"${PROJECT_SOURCE_DIR}/helpers/memenv/memenv.h\"\n+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/helpers/memenv\n+  )\n+\n   include(CMakePackageConfigHelpers)\n   write_basic_package_version_file(\n       \"${PROJECT_BINARY_DIR}/leveldbConfigVersion.cmake\"\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/leveldb/0003-CMakeLists.txt-check-for-atomic-library.patch",
    "content": "From 9e82eb57870ec7c01734b44ed4bb994362004df3 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 27 Dec 2019 10:20:53 +0100\nSubject: [PATCH] CMakeLists.txt: check for atomic library\n\nOn some architectures, atomic binutils are provided by the libatomic\nlibrary from gcc. Linking with libatomic is therefore necessary,\notherwise the build fails with:\n\n[100%] Linking CXX executable leveldbutil\n/home/fabrice/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/7.4.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: libleveldb.a(env_posix.cc.o): in function `leveldb::(anonymous namespace)::Limiter::Acquire()':\nenv_posix.cc:(.text+0x124): undefined reference to `__atomic_fetch_sub_4'\n\nThis is often for example the case on sparcv8 32 bit.\n\nFixes:\n - http://autobuild.buildroot.org/results/01d5a50581ac9e9b46f40e6f9665f74897db5e6f\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/google/leveldb/pull/765]\n---\n CMakeLists.txt | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex be41ba4..9d6773f 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -41,6 +41,7 @@ include(CheckIncludeFile)\n check_include_file(\"unistd.h\" HAVE_UNISTD_H)\n \n include(CheckLibraryExists)\n+check_library_exists(atomic __atomic_fetch_add_4 \"\" HAVE_ATOMIC)\n check_library_exists(crc32c crc32c_value \"\" HAVE_CRC32C)\n check_library_exists(snappy snappy_compress \"\" HAVE_SNAPPY)\n check_library_exists(tcmalloc malloc \"\" HAVE_TCMALLOC)\n@@ -270,6 +271,9 @@ if(HAVE_CLANG_THREAD_SAFETY)\n       -Werror -Wthread-safety)\n endif(HAVE_CLANG_THREAD_SAFETY)\n \n+if(HAVE_ATOMIC)\n+  target_link_libraries(leveldb atomic)\n+endif(HAVE_ATOMIC)\n if(HAVE_CRC32C)\n   target_link_libraries(leveldb crc32c)\n endif(HAVE_CRC32C)\n-- \n2.24.0\n\n"
  },
  {
    "path": "package/leveldb/0004-cmake-Use-find_package-to-find-Snappy.patch",
    "content": "From 450c1d88b3e1af34614294830b4dc0612d198d26 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Pawe=C5=82=20Bylica?= <chfast@gmail.com>\nDate: Wed, 8 May 2019 10:42:03 +0200\nSubject: [PATCH] cmake: Use find_package() to find Snappy\n\nUpstream: https://github.com/google/leveldb/pull/686/commits/3e73a396a082efc76e065ae974fe18c3bb27219d\n[Thomas: this commit allows to fix the detection of the snappy library\nin static link configurations]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n CMakeLists.txt         | 12 ++++++++----\n cmake/FindSnappy.cmake | 31 +++++++++++++++++++++++++++++++\n 2 files changed, 39 insertions(+), 4 deletions(-)\n create mode 100644 cmake/FindSnappy.cmake\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 78fead6..2efccda 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -6,6 +6,9 @@ cmake_minimum_required(VERSION 3.9)\n # Keep the version below in sync with the one in db.h\n project(leveldb VERSION 1.22.0 LANGUAGES C CXX)\n \n+# Include local CMake modules.\n+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)\n+\n # This project can use C11, but will gracefully decay down to C89.\n set(CMAKE_C_STANDARD 11)\n set(CMAKE_C_STANDARD_REQUIRED OFF)\n@@ -31,13 +34,14 @@ option(LEVELDB_INSTALL \"Install LevelDB's header and library\" ON)\n include(TestBigEndian)\n test_big_endian(LEVELDB_IS_BIG_ENDIAN)\n \n+find_package(Snappy)\n+\n include(CheckIncludeFile)\n check_include_file(\"unistd.h\" HAVE_UNISTD_H)\n \n include(CheckLibraryExists)\n check_library_exists(atomic __atomic_fetch_add_4 \"\" HAVE_ATOMIC)\n check_library_exists(crc32c crc32c_value \"\" HAVE_CRC32C)\n-check_library_exists(snappy snappy_compress \"\" HAVE_SNAPPY)\n check_library_exists(tcmalloc malloc \"\" HAVE_TCMALLOC)\n \n include(CheckCXXSymbolExists)\n@@ -276,9 +280,9 @@ endif(HAVE_ATOMIC)\n if(HAVE_CRC32C)\n   target_link_libraries(leveldb crc32c)\n endif(HAVE_CRC32C)\n-if(HAVE_SNAPPY)\n-  target_link_libraries(leveldb snappy)\n-endif(HAVE_SNAPPY)\n+if(TARGET Snappy::snappy)\n+  target_link_libraries(leveldb Snappy::snappy)\n+endif()\n if(HAVE_TCMALLOC)\n   target_link_libraries(leveldb tcmalloc)\n endif(HAVE_TCMALLOC)\ndiff --git a/cmake/FindSnappy.cmake b/cmake/FindSnappy.cmake\nnew file mode 100644\nindex 0000000..88c1de9\n--- /dev/null\n+++ b/cmake/FindSnappy.cmake\n@@ -0,0 +1,31 @@\n+# Copyright 2019 The LevelDB Authors. All rights reserved.\n+# Use of this source code is governed by a BSD-style license that can be\n+# found in the LICENSE file. See the AUTHORS file for names of contributors.\n+\n+find_library(SNAPPY_LIBRARY\n+    NAMES snappy\n+    HINTS ${SNAPPY_ROOT_DIR}/lib\n+)\n+\n+find_path(SNAPPY_INCLUDE_DIR\n+    NAMES snappy.h\n+    HINTS ${SNAPPY_ROOT_DIR}/include\n+)\n+\n+include(FindPackageHandleStandardArgs)\n+find_package_handle_standard_args(Snappy DEFAULT_MSG SNAPPY_LIBRARY SNAPPY_INCLUDE_DIR)\n+\n+mark_as_advanced(SNAPPY_LIBRARY SNAPPY_INCLUDE_DIR)\n+\n+if(SNAPPY_FOUND)\n+  set(HAVE_SNAPPY TRUE) # For compatibity with generating port_config.h.\n+\n+  # Add imported targets.\n+  # Follow the package naming convetion 'Snappy::' from\n+  # https://github.com/google/snappy/blob/master/CMakeLists.txt#L211.\n+  add_library(Snappy::snappy UNKNOWN IMPORTED)\n+  set_target_properties(Snappy::snappy PROPERTIES\n+      IMPORTED_LOCATION ${SNAPPY_LIBRARY}\n+      INTERFACE_INCLUDE_DIRECTORIES ${SNAPPY_INCLUDE_DIR}\n+  )\n+endif()\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/leveldb/Config.in",
    "content": "config BR2_PACKAGE_LEVELDB\n\tbool \"leveldb\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  LevelDB is a fast key-value storage library written at Google\n\t  that provides an ordered mapping from string keys to string\n\t  values.\n\n\t  https://github.com/google/leveldb\n\ncomment \"leveldb needs a toolchain w/ C++, threads, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/leveldb/leveldb.hash",
    "content": "# Locally calculated\nsha256 55423cac9e3306f4a9502c738a001e4a339d1a38ffbee7572d4a07d5d63949b2  leveldb-1.22.tar.gz\nsha256 ccc19f1da0798ed666609b65a5b44dd8b3abe6fc08b9c0592eb76e82e174db19  LICENSE\n"
  },
  {
    "path": "package/leveldb/leveldb.mk",
    "content": "################################################################################\n#\n# leveldb\n#\n################################################################################\n\nLEVELDB_VERSION = 1.22\nLEVELDB_SITE = $(call github,google,leveldb,$(LEVELDB_VERSION))\nLEVELDB_LICENSE = BSD-3-Clause\nLEVELDB_LICENSE_FILES = LICENSE\nLEVELDB_INSTALL_STAGING = YES\nLEVELDB_CONF_OPTS = \\\n\t-DLEVELDB_BUILD_BENCHMARKS=OFF \\\n\t-DLEVELDB_BUILD_TESTS=OFF\n\nifeq ($(BR2_PACKAGE_SNAPPY),y)\nLEVELDB_DEPENDENCIES += snappy\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/lft/Config.in",
    "content": "config BR2_PACKAGE_LFT\n\tbool \"lft\"\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  LFT, short for Layer Four Traceroute, is a sort of\n\t  'traceroute' that often works much faster (than the\n\t  commonly-used Van Jacobson method) and goes through many\n\t  configurations of packet-filters (firewalls).\n\n\t  http://pwhois.org/lft/\n"
  },
  {
    "path": "package/lft/lft.hash",
    "content": "# From http://pwhois.org/lft/\nmd5 31b15aabc619707427a73657512560f8  lft-3.8.tar.gz\n# Locally calculated\nsha256 10f427e77b0f8207817329bd8ef0310078434612620073369264d15e6f97e990  lft-3.8.tar.gz\nsha256 e3b7634630e6800eccca6ecafb5d40153d4f8f7a20e2b2399bf3c0ea92f44614  COPYING\n"
  },
  {
    "path": "package/lft/lft.mk",
    "content": "################################################################################\n#\n# lft\n#\n################################################################################\n\nLFT_VERSION = 3.8\nLFT_SITE = http://pwhois.org/get\nLFT_DEPENDENCIES = libpcap\nLFT_LICENSE = VOSTROM Public License for Open Source\nLFT_LICENSE_FILES = COPYING\nLFT_CONF_OPTS = --with-pcap=$(STAGING_DIR)/usr\nLFT_MAKE_ENV = STRIP=true\n\nifeq ($(BR2_STATIC_LIBS),y)\nLFT_CONF_OPTS += LIBS=\"`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\"\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lftp/0001-Fix-build-with-LibreSSL-following-commit-537f37898.patch",
    "content": "From 0276d5c239c41b3a63f738a5dc47fd56ac389cf0 Mon Sep 17 00:00:00 2001\nFrom: Ganael Laplanche <ganael.laplanche@martymac.org>\nDate: Thu, 20 Aug 2020 12:29:05 +0200\nSubject: [PATCH] Fix build with LibreSSL (following commit 537f37898)\n\nUpstream status: https://github.com/lavv17/lftp/commit/0276d5c239c41b3a63f738a5dc47fd56ac389cf0\nSigned-off-by: Artem Panfilov <artemp@synopsys.com>\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n---\n src/lftp_ssl.cc | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/src/lftp_ssl.cc b/src/lftp_ssl.cc\nindex 14a3b9d4..968d3fb2 100644\n--- a/src/lftp_ssl.cc\n+++ b/src/lftp_ssl.cc\n@@ -34,7 +34,7 @@\n #include \"misc.h\"\n #include \"network.h\"\n #include \"buffer.h\"\n-#if OPENSSL_VERSION_NUMBER < 0x10100000L\n+#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER\n #define X509_STORE_CTX_get_by_subject X509_STORE_get_by_subject\n #endif\n extern \"C\" {\n@@ -840,7 +840,7 @@ lftp_ssl_openssl_instance::lftp_ssl_openssl_instance()\n    ssl_ctx=SSL_CTX_new();\n    X509_set_default_verify_paths(ssl_ctx->cert);\n #else\n-#if OPENSSL_VERSION_NUMBER < 0x10100000L\n+#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER\n    SSLeay_add_ssl_algorithms();\n #endif\n    ssl_ctx=SSL_CTX_new(SSLv23_client_method());\n@@ -1080,7 +1080,7 @@ void lftp_ssl_openssl::copy_sid(const lftp_ssl_openssl *o)\n \n const char *lftp_ssl_openssl::strerror()\n {\n-#if OPENSSL_VERSION_NUMBER < 0x10100000L\n+#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER\n    SSL_load_error_strings();\n #endif\n    int error=ERR_get_error();\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/lftp/Config.in",
    "content": "config BR2_PACKAGE_LFTP\n\tbool \"lftp\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_READLINE\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS\n\thelp\n\t  LFTP is a sophisticated ftp/http client, and a file transfer\n\t  program supporting a number of network protocols. Like BASH,\n\t  it has job control and uses the readline library for input. It\n\t  has bookmarks, a built-in mirror command, and can transfer\n\t  several files in parallel.\n\t  It was designed with reliability in mind.\n\n\t  http://lftp.yar.ru/\n\nif BR2_PACKAGE_LFTP\n\ncomment \"Commands\"\n\nconfig BR2_PACKAGE_LFTP_CMD_MIRROR\n\tbool \"Mirror command\"\n\tdefault y\n\thelp\n\t  Enable mirror command\n\nconfig BR2_PACKAGE_LFTP_CMD_SLEEP\n\tbool \"Sleep command\"\n\tdefault y\n\thelp\n\t  Enable sleep command\n\nconfig BR2_PACKAGE_LFTP_CMD_TORRENT\n\tbool \"Torrent command\"\n\thelp\n\t  Enable torrent command\n\ncomment \"Protocols\"\n\nconfig BR2_PACKAGE_LFTP_PROTO_FISH\n\tbool \"FISH protocol\"\n\thelp\n\t  Enable FISH protocol\n\nconfig BR2_PACKAGE_LFTP_PROTO_FTP\n\tbool \"FTP protocol\"\n\tdefault y\n\thelp\n\t  Enable FTP protocol\n\nconfig BR2_PACKAGE_LFTP_PROTO_HTTP\n\tbool \"HTTP protocol\"\n\thelp\n\t  Enable HTTP protocol\n\nconfig BR2_PACKAGE_LFTP_PROTO_SFTP\n\tbool \"SFTP protocol\"\n\thelp\n\t  Enable SFTP protocol\n\nendif  # BR2_PACKAGE_LFTP\n\ncomment \"lftp requires a toolchain w/ C++, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !(BR2_USE_WCHAR && BR2_INSTALL_LIBSTDCPP)\n"
  },
  {
    "path": "package/lftp/lftp.hash",
    "content": "# From http://lftp.yar.ru/ftp/lftp-4.9.2.md5sum\nmd5  b3a272ecb7a2b60e3827776f90ffb2f3  lftp-4.9.2.tar.xz\n# Locally calculated after checking gpg signature\nsha256  c517c4f4f9c39bd415d7313088a2b1e313b2d386867fe40b7692b83a20f0670d  lftp-4.9.2.tar.xz\n\n# Hash for license file:\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/lftp/lftp.mk",
    "content": "################################################################################\n#\n# lftp\n#\n################################################################################\n\nLFTP_VERSION = 4.9.2\nLFTP_SOURCE = lftp-$(LFTP_VERSION).tar.xz\nLFTP_SITE = http://lftp.yar.ru/ftp\nLFTP_LICENSE = GPL-3.0+\nLFTP_LICENSE_FILES = COPYING\nLFTP_CPE_ID_VENDOR = lftp_project\nLFTP_DEPENDENCIES = readline zlib host-pkgconf\n\n# Help lftp finding readline and zlib\nLFTP_CONF_OPTS = \\\n\t--with-readline=$(STAGING_DIR)/usr \\\n\t--with-readline-lib=\"`$(PKG_CONFIG_HOST_BINARY) --libs readline`\" \\\n\t--with-zlib=$(STAGING_DIR)/usr\n\nifneq ($(BR2_STATIC_LIBS),y)\nLFTP_CONF_OPTS += --with-modules\nendif\n\nifeq ($(BR2_PACKAGE_EXPAT)$(BR2_PACKAGE_LFTP_PROTO_HTTP),yy)\nLFTP_DEPENDENCIES += expat\nLFTP_CONF_OPTS += --with-expat=$(STAGING_DIR)/usr\nelse\nLFTP_CONF_OPTS += --without-expat\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nLFTP_DEPENDENCIES += gnutls\nLFTP_CONF_OPTS += --with-gnutls\nelse\nLFTP_CONF_OPTS += --without-gnutls\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLFTP_DEPENDENCIES += openssl\nLFTP_CONF_OPTS += --with-openssl\nelse\nLFTP_CONF_OPTS += --without-openssl\nendif\n\nifeq ($(BR2_PACKAGE_LIBIDN2),y)\nLFTP_DEPENDENCIES += libidn2\nLFTP_CONF_OPTS += --with-libidn2=$(STAGING_DIR)/usr\nelse\nLFTP_CONF_OPTS += --without-libidn2\nendif\n\n# Remove /usr/share/lftp\ndefine LFTP_REMOVE_DATA\n\t$(RM) -fr $(TARGET_DIR)/usr/share/lftp\nendef\n\nLFTP_POST_INSTALL_TARGET_HOOKS += LFTP_REMOVE_DATA\n\n# Optional commands and protocols\nLFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_CMD_MIRROR) += cmd-mirror.so\nLFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_CMD_SLEEP) += cmd-sleep.so\nLFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_CMD_TORRENT) += cmd-torrent.so\nLFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_FISH) += proto-fish.so\nLFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_FTP) += proto-ftp.so\nLFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_HTTP) += proto-http.so\nLFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_SFTP) += proto-sftp.so\n\ndefine LFTP_REMOVE_MODULES\n\tfor f in $(LFTP_MODULES_TO_REMOVE-) ; do \\\n\t\t$(RM) -f $(TARGET_DIR)/usr/lib/lftp/$(LFTP_VERSION)/$$f ; \\\n\tdone\nendef\n\nLFTP_POST_INSTALL_TARGET_HOOKS += LFTP_REMOVE_MODULES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libaacs/0001-read_file.h-include-sys-types.h.patch",
    "content": "From 1fb08a352afada589f0b93af7a07c6fcd6da9bb8 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Mon, 21 Sep 2020 20:19:38 +0200\nSubject: [PATCH] read_file.h: include sys/types.h\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes build error with uClibc and gcc-8.3.0:\n\nIn file included from src/devtools/uk_dump.c:28:\nsrc/devtools/read_file.h:24:44: error: unknown type name ‘off_t’\n static size_t _read_file(const char *name, off_t min_size, off_t max_size, uint8_t **pdata)\n\nUpstream status: pending\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n src/devtools/read_file.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/devtools/read_file.h b/src/devtools/read_file.h\nindex 953b2ef..a5d185c 100644\n--- a/src/devtools/read_file.h\n+++ b/src/devtools/read_file.h\n@@ -19,6 +19,7 @@\n \n #include <stdio.h>\n #include <stdlib.h>\n+#include <sys/types.h>\n #include <errno.h>\n \n static size_t _read_file(const char *name, off_t min_size, off_t max_size, uint8_t **pdata)\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/libaacs/Config.in",
    "content": "config BR2_PACKAGE_LIBAACS\n\tbool \"libaacs\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBGCRYPT\n\thelp\n\t  libaacs is a research project to implement the Advanced Access\n\t  Content System specification.\n\t  NB: this project doesn't offer any key or certificate that\n\t  could be used to decode encrypted copyrighted material.\n\n\t  http://www.videolan.org/developers/libaacs.html\n\ncomment \"libaacs needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libaacs/libaacs.hash",
    "content": "# From http://download.videolan.org/pub/videolan/libaacs/0.11.0/libaacs-0.11.0.tar.bz2.sha512\nsha512  167edbb6f26599e41d6084908039bf902f69f57da1f64f1491734157d1568ad0b32c8ea3064e0706e383af8dc6007eef65170b2b47222bf3d363e395e0b60388  libaacs-0.11.0.tar.bz2\n\n# Hash for license file:\nsha256  592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c  COPYING\n"
  },
  {
    "path": "package/libaacs/libaacs.mk",
    "content": "################################################################################\n#\n# libaacs\n#\n################################################################################\n\nLIBAACS_VERSION = 0.11.0\nLIBAACS_SITE = http://download.videolan.org/pub/videolan/libaacs/$(LIBAACS_VERSION)\nLIBAACS_SOURCE = libaacs-$(LIBAACS_VERSION).tar.bz2\nLIBAACS_LICENSE = LGPL-2.1+\nLIBAACS_LICENSE_FILES = COPYING\nLIBAACS_INSTALL_STAGING = YES\nLIBAACS_DEPENDENCIES = host-bison host-flex libgcrypt\nLIBAACS_CONF_OPTS = \\\n\t--disable-werror \\\n\t--disable-extra-warnings \\\n\t--disable-optimizations \\\n\t--disable-examples \\\n\t--disable-debug \\\n\t--with-gnu-ld \\\n\t--with-libgcrypt-prefix=$(STAGING_DIR)/usr \\\n\t--with-gpg-error-prefix=$(STAGING_DIR)/usr\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libabseil-cpp/0001-force-position-independent-code.patch",
    "content": "From d170b19e500d85381369e379771be8d7816bcc92 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <Aduskett@gmail.com>\nDate: Tue, 21 Jul 2020 13:08:50 -0700\nSubject: [PATCH] force position independent code\n\nWithout this option, programs building for arm64 or x86-64 will fail when\nattempting to link to the built libraries with the following (abbreviated)\nerror:\n\n\"relocation against `.rodata' can not be used when making a shared object;\nrecompile with -fPIC.\"\n\nBecause libabseil-cpp builds static libraries, it is better to set the\nPOSITION_INDEPENDENT_CODE to ON instead of forcing fPIC, as forcing fPIC may\ncause relocation errors when shared libraries link against the built static\nlibraries.\n\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\n---\n CMake/AbseilHelpers.cmake | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake\nindex 86ff9eb..bdb7a89 100644\n--- a/CMake/AbseilHelpers.cmake\n+++ b/CMake/AbseilHelpers.cmake\n@@ -209,6 +209,8 @@ function(absl_cc_library)\n     set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD ${ABSL_CXX_STANDARD})\n     set_property(TARGET ${_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)\n \n+    # Without this setting, other programs such as GRPC will fail when linking.\n+    set_property(TARGET ${_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON)\n     # When being installed, we lose the absl_ prefix.  We want to put it back\n     # to have properly named lib files.  This is a no-op when we are not being\n     # installed.\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/libabseil-cpp/Config.in",
    "content": "# see absl/debugging/internal/examine_stack.cc for the list of\n# architectures that are supported, and for which ucontext is used.\nconfig BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\tdefault y if BR2_arm || BR2_armeb\n\tdefault y if BR2_i386\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdefault y if BR2_riscv\n\tdefault y if BR2_x86_64\n\tdepends on BR2_TOOLCHAIN_HAS_UCONTEXT\n\nconfig BR2_PACKAGE_LIBABSEIL_CPP\n\tbool \"libabseil-cpp\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS # uses dlfcn.h\n\tdepends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS\n\thelp\n\t  Abseil is an open-source collection of C++ library code\n\t  designed to augment the C++ standard library. The Abseil\n\t  library code is collected from Google's own C++ code base,\n\t  has been extensively tested and used in production, and is\n\t  the same code we depend on in our daily coding lives.\n\n\t  https://github.com/abseil/abseil-cpp\n\ncomment \"libabseil-cpp needs a toolchain w/ gcc >= 4.9, C++, threads, dynamic library\"\n\tdepends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/libabseil-cpp/libabseil-cpp.hash",
    "content": "# Locally computed\nsha256  59b862f50e710277f8ede96f083a5bb8d7c9595376146838b9580be90374ee1f  libabseil-cpp-20210324.2.tar.gz\nsha256  c79a7fea0e3cac04cd43f20e7b648e5a0ff8fa5344e644b0ee09ca1162b62747  LICENSE\n"
  },
  {
    "path": "package/libabseil-cpp/libabseil-cpp.mk",
    "content": "################################################################################\n#\n# libabseil-cpp\n#\n################################################################################\n\nLIBABSEIL_CPP_VERSION = 20210324.2\nLIBABSEIL_CPP_SITE = $(call github,abseil,abseil-cpp,$(LIBABSEIL_CPP_VERSION))\nLIBABSEIL_CPP_LICENSE = Apache-2.0\nLIBABSEIL_CPP_LICENSE_FILES = LICENSE\nLIBABSEIL_CPP_INSTALL_STAGING = YES\n\nLIBABSEIL_CPP_CONF_OPTS = \\\n\t-DCMAKE_CXX_STANDARD=11 \\\n\t-DABSL_ENABLE_INSTALL=ON \\\n\t-DABSL_USE_GOOGLETEST_HEAD=OFF \\\n\t-DABSL_RUN_TESTS=OFF\n\nHOST_LIBABSEIL_CPP_CONF_OPTS = \\\n\t-DCMAKE_CXX_STANDARD=11 \\\n\t-DABSL_ENABLE_INSTALL=ON \\\n\t-DABSL_USE_GOOGLETEST_HEAD=OFF \\\n\t-DABSL_RUN_TESTS=OFF\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/libaio/Config.in",
    "content": "config BR2_PACKAGE_LIBAIO\n\tbool \"libaio\"\n\thelp\n\t  Library for doing asynchronous I/O\n\n\t  https://pagure.io/libaio/\n"
  },
  {
    "path": "package/libaio/libaio.hash",
    "content": "# From https://releases.pagure.org/libaio/CHECKSUMS\nsha256  ab0462f2c9d546683e5147b1ce9c195fe95d07fac5bf362f6c01637955c3b492 libaio-0.3.112.tar.gz\n\n# Hash for license file:\nsha256  5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509  COPYING\n"
  },
  {
    "path": "package/libaio/libaio.mk",
    "content": "################################################################################\n#\n# libaio\n#\n################################################################################\n\nLIBAIO_VERSION = 0.3.112\nLIBAIO_SITE = https://releases.pagure.org/libaio\nLIBAIO_INSTALL_STAGING = YES\nLIBAIO_LICENSE = LGPL-2.1+\nLIBAIO_LICENSE_FILES = COPYING\n\nLIBAIO_CONFIGURE_OPTS = $(TARGET_CONFIGURE_OPTS)\n\nifeq ($(BR2_STATIC_LIBS),y)\nLIBAIO_CONFIGURE_OPTS += ENABLE_SHARED=0\nendif\n\ndefine LIBAIO_BUILD_CMDS\n\t$(LIBAIO_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine LIBAIO_INSTALL_STAGING_CMDS\n\t$(LIBAIO_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\ndefine LIBAIO_INSTALL_TARGET_CMDS\n\t$(LIBAIO_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\ndefine HOST_LIBAIO_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_LIBAIO_INSTALL_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(HOST_MAKE_ENV) $(MAKE) -C $(@D) prefix=$(HOST_DIR) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/libao/Config.in",
    "content": "config BR2_PACKAGE_LIBAO\n\tbool \"libao\"\n\thelp\n\t  Libao is a cross-platform audio library that allows programs\n\t  to output audio using a simple API on a wide variety of\n\t  platforms.\n\n\t  http://www.xiph.org/ao/\n"
  },
  {
    "path": "package/libao/libao.hash",
    "content": "# From http://downloads.xiph.org/releases/ao/SHA256SUMS.txt\nsha256\t03ad231ad1f9d64b52474392d63c31197b0bc7bd416e58b1c10a329a5ed89caf\tlibao-1.2.0.tar.gz\n\n# Hash for license file:\nsha256\t32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670\tCOPYING\n"
  },
  {
    "path": "package/libao/libao.mk",
    "content": "################################################################################\n#\n# libao\n#\n################################################################################\n\nLIBAO_VERSION = 1.2.0\nLIBAO_SITE = http://downloads.xiph.org/releases/ao\nLIBAO_DEPENDENCIES = host-pkgconf\nLIBAO_INSTALL_STAGING = YES\nLIBAO_LICENSE = GPL-2.0+\nLIBAO_LICENSE_FILES = COPYING\nLIBAO_CPE_ID_VENDOR = xiph\nLIBAO_CONF_OPTS = \\\n\t--disable-esd \\\n\t--disable-wmm \\\n\t--disable-arts \\\n\t--disable-nas \\\n\t--disable-pulse \\\n\t--disable-broken-oss\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nLIBAO_DEPENDENCIES += alsa-lib\nLIBAO_CONF_OPTS += --enable-alsa --enable-alsa-mmap\n\n# Remove the OSS plugin if ALSA is enabled, as libao will prefer ALSA anyway\ndefine LIBAO_REMOVE_OSS_PLUGIN\n\trm -f $(TARGET_DIR)/usr/lib/ao/plugins-4/liboss.so\nendef\nLIBAO_POST_INSTALL_TARGET_HOOKS += LIBAO_REMOVE_OSS_PLUGIN\nelse\nLIBAO_CONF_OPTS += --disable-alsa\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libapparmor/Config.in",
    "content": "config BR2_PACKAGE_LIBAPPARMOR\n\tbool \"libapparmor\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16\n\thelp\n\t  AppArmor is an effective and easy-to-use Linux application\n\t  security system. AppArmor proactively protects the operating\n\t  system and applications from external or internal threats,\n\t  even zero-day attacks, by enforcing good behavior and\n\t  preventing even unknown application flaws from being\n\t  exploited.\n\n\t  This package installs only the library.\n\n\t  http://wiki.apparmor.net\n\ncomment \"libapparmor needs a toolchain w/ headers >= 3.16, threads\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16\n"
  },
  {
    "path": "package/libapparmor/libapparmor.hash",
    "content": "# From: https://gitlab.com/apparmor/apparmor/-/wikis/home#userspace\nsha256  153db05d8f491e0596022663c19fb1166806cb473b3c6f0a7279feda2ec25a59  apparmor-3.0.3.tar.gz\n\n# locally computed\nsha256  a7e0cdcbea5c14927cedfc600d46526bdcbb1eb0a4d951e2ea53c2a6de159cb4  LICENSE\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  libraries/libapparmor/COPYING.LGPL\n"
  },
  {
    "path": "package/libapparmor/libapparmor.mk",
    "content": "################################################################################\n#\n# libapparmor\n#\n################################################################################\n\n# When updating the version here, please also update the apparmor package\nLIBAPPARMOR_VERSION_MAJOR = 3.0\nLIBAPPARMOR_VERSION = $(LIBAPPARMOR_VERSION_MAJOR).3\nLIBAPPARMOR_SOURCE = apparmor-$(LIBAPPARMOR_VERSION).tar.gz\nLIBAPPARMOR_SITE = https://launchpad.net/apparmor/$(LIBAPPARMOR_VERSION_MAJOR)/$(LIBAPPARMOR_VERSION)/+download\nLIBAPPARMOR_LICENSE = LGPL-2.1\nLIBAPPARMOR_LICENSE_FILES = LICENSE libraries/libapparmor/COPYING.LGPL\n\nLIBAPPARMOR_DEPENDENCIES = host-bison host-flex host-pkgconf\nLIBAPPARMOR_SUBDIR = libraries/libapparmor\nLIBAPPARMOR_INSTALL_STAGING = YES\n\n# Patches 0001 and 0002 touch Makefile.am and an m4 file\nLIBAPPARMOR_AUTORECONF = YES\n\n# Most AppArmor tools will want to link to the static lib.\n# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test\n# provided by autoconf relies on wchar_t.\nLIBAPPARMOR_CONF_OPTS = \\\n\tac_cv_prog_cc_c99=-std=gnu99 \\\n\t--enable-static \\\n\t--disable-man-pages\n\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nLIBAPPARMOR_DEPENDENCIES += host-python3 host-swig python3\nLIBAPPARMOR_CONF_OPTS += \\\n\t--with-python \\\n\tPYTHON=$(HOST_DIR)/usr/bin/python3 \\\n\tPYTHON_CONFIG=$(STAGING_DIR)/usr/bin/python3-config \\\n\tSWIG=$(SWIG)\nelse\nLIBAPPARMOR_CONF_OPTS += --without-python\nendif\n\ndefine LIBAPPARMOR_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_AUDIT)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_APPARMOR)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_DEFAULT_SECURITY_APPARMOR)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libarchive/Config.in",
    "content": "comment \"libarchive needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_LIBARCHIVE\n\tbool \"libarchive\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Libarchive is a reusable C library for reading and writing a\n\t  variety of streaming archive formats.\n\n\t  http://www.libarchive.org/\n\nif BR2_PACKAGE_LIBARCHIVE\n\nconfig BR2_PACKAGE_LIBARCHIVE_BSDTAR\n\tbool \"bsdtar\"\n\thelp\n\t  The 'bsdtar' program is a full-featured 'tar'\n\t  replacement built on libarchive.\n\nconfig BR2_PACKAGE_LIBARCHIVE_BSDCPIO\n\tbool \"bsdcpio\"\n\thelp\n\t  The 'bsdcpio' program is a different interface to\n\t  essentially the same functionality as 'bsdtar'.\n\nconfig BR2_PACKAGE_LIBARCHIVE_BSDCAT\n\tbool \"bsdcat\"\n\thelp\n\t  The 'bsdcat' program is a simple replacement tool\n\t  for zcat, bzcat, xzcat, and such.\n\nendif\n"
  },
  {
    "path": "package/libarchive/libarchive.hash",
    "content": "# From https://www.libarchive.de/downloads/sha256sums\nsha256  f0b19ff39c3c9a5898a219497ababbadab99d8178acc980155c7e1271089b5a0  libarchive-3.5.2.tar.xz\n# Locally computed:\nsha256  b2cdf763345de2de34cebf54394df3c61a105c3b71288603c251f2fa638200ba  COPYING\n"
  },
  {
    "path": "package/libarchive/libarchive.mk",
    "content": "################################################################################\n#\n# libarchive\n#\n################################################################################\n\nLIBARCHIVE_VERSION = 3.5.2\nLIBARCHIVE_SOURCE = libarchive-$(LIBARCHIVE_VERSION).tar.xz\nLIBARCHIVE_SITE = https://www.libarchive.de/downloads\nLIBARCHIVE_INSTALL_STAGING = YES\nLIBARCHIVE_LICENSE = BSD-2-Clause, BSD-3-Clause, CC0-1.0, OpenSSL, Apache-2.0\nLIBARCHIVE_LICENSE_FILES = COPYING\nLIBARCHIVE_CPE_ID_VENDOR = libarchive\n\nifeq ($(BR2_PACKAGE_LIBARCHIVE_BSDTAR),y)\nifeq ($(BR2_STATIC_LIBS),y)\nLIBARCHIVE_CONF_OPTS += --enable-bsdtar=static\nelse\nLIBARCHIVE_CONF_OPTS += --enable-bsdtar=shared\nendif\nelse\nLIBARCHIVE_CONF_OPTS += --disable-bsdtar\nendif\n\nifeq ($(BR2_PACKAGE_LIBARCHIVE_BSDCPIO),y)\nifeq ($(BR2_STATIC_LIBS),y)\nLIBARCHIVE_CONF_OPTS += --enable-bsdcpio=static\nelse\nLIBARCHIVE_CONF_OPTS += --enable-bsdcpio=shared\nendif\nelse\nLIBARCHIVE_CONF_OPTS += --disable-bsdcpio\nendif\n\nifeq ($(BR2_PACKAGE_LIBARCHIVE_BSDCAT),y)\nifeq ($(BR2_STATIC_LIBS),y)\nLIBARCHIVE_CONF_OPTS += --enable-bsdcat=static\nelse\nLIBARCHIVE_CONF_OPTS += --enable-bsdcat=shared\nendif\nelse\nLIBARCHIVE_CONF_OPTS += --disable-bsdcat\nendif\n\nifeq ($(BR2_PACKAGE_ACL),y)\nLIBARCHIVE_DEPENDENCIES += acl\nelse\nLIBARCHIVE_CONF_OPTS += --disable-acl\nendif\n\nifeq ($(BR2_PACKAGE_ATTR),y)\nLIBARCHIVE_DEPENDENCIES += attr\nelse\nLIBARCHIVE_CONF_OPTS += --disable-xattr\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nLIBARCHIVE_CONF_OPTS += --with-bz2lib\nLIBARCHIVE_DEPENDENCIES += bzip2\nelse\nLIBARCHIVE_CONF_OPTS += --without-bz2lib\nendif\n\nifeq ($(BR2_PACKAGE_EXPAT),y)\nLIBARCHIVE_DEPENDENCIES += expat\nelse\nLIBARCHIVE_CONF_OPTS += --without-expat\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nLIBARCHIVE_DEPENDENCIES += libiconv\nelse\nLIBARCHIVE_CONF_OPTS += --without-libiconv-prefix\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nLIBARCHIVE_DEPENDENCIES += libxml2\nLIBARCHIVE_CONF_ENV += XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config\nelse\nLIBARCHIVE_CONF_OPTS += --without-xml2\nendif\n\nifeq ($(BR2_PACKAGE_LZ4),y)\nLIBARCHIVE_CONF_OPTS += --with-lz4\nLIBARCHIVE_DEPENDENCIES += lz4\nelse\nLIBARCHIVE_CONF_OPTS += --without-lz4\nendif\n\nifeq ($(BR2_PACKAGE_LZO),y)\nLIBARCHIVE_DEPENDENCIES += lzo\nelse\nLIBARCHIVE_CONF_OPTS += --without-lzo2\nendif\n\nifeq ($(BR2_PACKAGE_MBEDTLS),y)\nLIBARCHIVE_DEPENDENCIES += mbedtls\nLIBARCHIVE_CONF_OPTS += --with-mbedtls\nelse\nLIBARCHIVE_CONF_OPTS += --without-mbedtls\nendif\n\nifeq ($(BR2_PACKAGE_NETTLE),y)\nLIBARCHIVE_DEPENDENCIES += nettle\nLIBARCHIVE_CONF_OPTS += --with-nettle\nelse\nLIBARCHIVE_CONF_OPTS += --without-nettle\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBARCHIVE_DEPENDENCIES += openssl\nelse\nLIBARCHIVE_CONF_OPTS += --without-openssl\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLIBARCHIVE_DEPENDENCIES += zlib\nelse\nLIBARCHIVE_CONF_OPTS += --without-zlib\nendif\n\n# libarchive requires LZMA with thread support in the toolchain\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS)$(BR2_PACKAGE_XZ),yy)\nLIBARCHIVE_DEPENDENCIES += xz\nLIBARCHIVE_CONF_OPTS += --with-lzma\nelse\nLIBARCHIVE_CONF_OPTS += --without-lzma\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nLIBARCHIVE_DEPENDENCIES += zstd\nLIBARCHIVE_CONF_OPTS += --with-zstd\nelse\nLIBARCHIVE_CONF_OPTS += --without-zstd\nendif\n\n# The only user of host-libarchive needs zlib support\nHOST_LIBARCHIVE_DEPENDENCIES = host-zlib\nHOST_LIBARCHIVE_CONF_OPTS = \\\n\t--disable-bsdtar \\\n\t--disable-bsdcpio \\\n\t--disable-bsdcat \\\n\t--disable-acl \\\n\t--disable-xattr \\\n\t--without-bz2lib \\\n\t--without-expat \\\n\t--without-libiconv-prefix \\\n\t--without-xml2 \\\n\t--without-lz4 \\\n\t--without-lzo2 \\\n\t--without-mbedtls \\\n\t--without-nettle \\\n\t--without-openssl \\\n\t--without-lzma \\\n\t--without-zstd\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libargon2/0001-libargon2-dont-fail-on-existing-symlink.patch",
    "content": "From b997b9e7d4744020409223afddc7299a771eb52d Mon Sep 17 00:00:00 2001\nFrom: Pascal de Bruijn <pmjdebruijn@pcode.nl>\nDate: Thu, 7 Nov 2019 09:55:32 +0100\nSubject: [PATCH] Don't fail on existing symlink\n\nSigned-off-by: Pascal de Bruijn <p.debruijn@unilogic.nl>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 837e7f7..7c116c9 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -238,7 +238,7 @@ install: $(RUN) libs\n \t$(INSTALL) -d $(INST_LIBRARY)\n \t$(INSTALL) -m 0644 $(LIBRARIES) $(INST_LIBRARY)\n ifdef LINKED_LIB_SH\n-\tcd $(INST_LIBRARY) && ln -s $(notdir $(LIB_SH) $(LINKED_LIB_SH))\n+\tcd $(INST_LIBRARY) && ln -sf $(notdir $(LIB_SH) $(LINKED_LIB_SH))\n endif\n \t$(INSTALL) -d $(INST_BINARY)\n \t$(INSTALL) $(RUN) $(INST_BINARY)\n"
  },
  {
    "path": "package/libargon2/Config.in",
    "content": "config BR2_PACKAGE_LIBARGON2\n\tbool \"libargon2\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  A modern password hashing algorithm\n\n\t  https://password-hashing.net/#argon2\n\ncomment \"libargon needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libargon2/libargon2.hash",
    "content": "# Locally calculated\nsha256  daf972a89577f8772602bf2eb38b6a3dd3d922bf5724d45e7f9589b5e830442c  libargon2-20190702.tar.gz\nsha256  220f8736a89ff51c92ef3d497f413b48e6cf1df3d6278bc909c6308c78e1718e  LICENSE\n"
  },
  {
    "path": "package/libargon2/libargon2.mk",
    "content": "################################################################################\n#\n# libargon2\n#\n################################################################################\n\nLIBARGON2_VERSION = 20190702\nLIBARGON2_SITE = $(call github,P-H-C,phc-winner-argon2,$(LIBARGON2_VERSION))\nLIBARGON2_LICENSE = CC0-1.0 or Apache-2.0\nLIBARGON2_LICENSE_FILES = LICENSE\nLIBARGON2_INSTALL_STAGING = YES\n\nLIBARGON2_OPTS = LIBRARY_REL=lib\n\n# GCC_TARGET_ARCH is not defined for all architectures, but libargon2\n# only uses it to detect if some x86 optimizations can be used, and\n# GCC_TARGET_ARCH is defined on x86.\nifneq ($(GCC_TARGET_ARCH),)\nLIBARGON2_OPTS += OPTTARGET=$(GCC_TARGET_ARCH)\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),)\nLIBARGON2_OPTS += NO_THREADS=1\nendif\n\ndefine LIBARGON2_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(LIBARGON2_OPTS)\nendef\n\ndefine LIBARGON2_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(LIBARGON2_OPTS) DESTDIR=$(STAGING_DIR) install\nendef\n\ndefine LIBARGON2_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(LIBARGON2_OPTS) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libargtable2/Config.in",
    "content": "config BR2_PACKAGE_LIBARGTABLE2\n\tbool \"libargtable2\"\n\thelp\n\t  A greatly simplified and yet quite robust argument parsing\n\t  set of library calls.\n\n\t  http://argtable.sourceforge.net/\n"
  },
  {
    "path": "package/libargtable2/libargtable2.hash",
    "content": "# Locally computed:\nsha256  8f77e8a7ced5301af6e22f47302fdbc3b1ff41f2b83c43c77ae5ca041771ddbf  argtable2-13.tar.gz\nsha256  d7bf9d064ac3e5840f9dd02422b7eeec4f1fd03f37fadbd043602be5e882304f  COPYING\n"
  },
  {
    "path": "package/libargtable2/libargtable2.mk",
    "content": "################################################################################\n#\n# libargtable2\n#\n################################################################################\n\nLIBARGTABLE2_MAJOR_VERSION = 2\nLIBARGTABLE2_MINOR_VERSION = 13\nLIBARGTABLE2_VERSION = $(LIBARGTABLE2_MAJOR_VERSION).$(LIBARGTABLE2_MINOR_VERSION)\nLIBARGTABLE2_SOURCE = argtable2-$(LIBARGTABLE2_MINOR_VERSION).tar.gz\nLIBARGTABLE2_SITE = http://downloads.sourceforge.net/project/argtable/argtable/argtable-$(LIBARGTABLE2_VERSION)\nLIBARGTABLE2_INSTALL_STAGING = YES\nLIBARGTABLE2_CONF_OPTS = \\\n\t--disable-example \\\n\t--disable-kernel-module \\\n\t--enable-lib \\\n\t--enable-util\nLIBARGTABLE2_LICENSE = LGPL-2.0+\nLIBARGTABLE2_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libart/0001-art-config-cross.patch",
    "content": "diff -Nura libart_lgpl-2.3.21.orig/Makefile.am libart_lgpl-2.3.21/Makefile.am\n--- libart_lgpl-2.3.21.orig/Makefile.am\t2011-02-01 10:07:39.687545397 -0300\n+++ libart_lgpl-2.3.21/Makefile.am\t2011-02-01 10:08:48.320545396 -0300\n@@ -5,11 +5,6 @@\n \t\n noinst_SCRIPTS = gen_art_config.sh\n \n-BUILT_SOURCES = art_config.h\n-\n-art_config.h:\n-\t./gen_art_config.sh > art_config.h\n-\n EXTRA_DIST = \t\t\t\\\n \tlibart.def\t\t\\\n \tlibart-config.in\t\\\ndiff -Nura libart_lgpl-2.3.21.orig/art_config.h libart_lgpl-2.3.21/art_config.h\n--- libart_lgpl-2.3.21.orig/art_config.h\t2011-02-01 10:07:39.688545397 -0300\n+++ libart_lgpl-2.3.21/art_config.h\t2011-02-01 10:08:27.315545395 -0300\n@@ -1,9 +1,15 @@\n /* Automatically generated by gen_art_config */\n \n+#include <limits.h>\n+\n #define ART_SIZEOF_CHAR 1\n #define ART_SIZEOF_SHORT 2\n #define ART_SIZEOF_INT 4\n+#if LONG_MAX == 2147483647L\n #define ART_SIZEOF_LONG 4\n+#else\n+#define ART_SIZEOF_LONG 8\n+#endif\n \n typedef unsigned char art_u8;\n typedef unsigned short art_u16;\n"
  },
  {
    "path": "package/libart/Config.in",
    "content": "config BR2_PACKAGE_LIBART\n\tbool \"libart\"\n\thelp\n\t  Libart is a library for high-performance 2D graphics. It\n\t  supports a very powerful imaging model, basically the same\n\t  as SVG and the Java 2D API. It includes all PostScript\n\t  imaging operations, and adds antialiasing and\n\t  alpha-transparency. It is also highly tuned for incremental\n\t  rendering. It contains data structures and algorithms suited\n\t  to rapid, precise computation of Region of Interest, and a\n\t  two-phase rendering pipeline optimized for interactive\n\t  display.\n\n\t  http://www.levien.com/libart/\n"
  },
  {
    "path": "package/libart/libart.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/libart_lgpl/2.3/libart_lgpl-2.3.21.sha256sum\nsha256\t2a10b1c884bb37c7bd5c5eba59dbd0d28bf68e64a42d7f2083c836f60f8e98fa\tlibart_lgpl-2.3.21.tar.gz\n\n# Hash for license file:\nsha256\td245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5\tCOPYING\n"
  },
  {
    "path": "package/libart/libart.mk",
    "content": "################################################################################\n#\n# libart\n#\n################################################################################\n\nLIBART_VERSION_MAJOR = 2.3\nLIBART_VERSION = $(LIBART_VERSION_MAJOR).21\nLIBART_SOURCE = libart_lgpl-$(LIBART_VERSION).tar.gz\nLIBART_SITE = http://ftp.gnome.org/pub/gnome/sources/libart_lgpl/$(LIBART_VERSION_MAJOR)\nLIBART_AUTORECONF = YES\nLIBART_INSTALL_STAGING = YES\nLIBART_CONFIG_SCRIPTS = libart2-config\nLIBART_LICENSE = LGPL-2.0+\nLIBART_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libasplib/0001-asplib_CPUTimer.h-Fix-time.h-include.patch",
    "content": "From 7291289ba0c052e45e2a0330642318798d6a4caf Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Fri, 27 Jan 2017 16:02:27 +0100\nSubject: [PATCH 1/1] asplib_CPUTimer.h: Fix time.h include\n\nAccording to https://linux.die.net/man/3/clock_gettime time.h needs to\nbe included instead of sys/time.h.\n\nThis patch fixes a build error found by buildroot autobuilders:\n\nhttp://autobuild.buildroot.net/results/cc0/cc0b928ee24a526b7c82fd3f391e2be024a14578//\n\n/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()':\n/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\n     clock_gettime(CLOCK_REALTIME, &m_startTime);\n\nPatch sent upstream: https://github.com/AchimTuran/asplib/pull/34\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n asplib_modules/Timer/asplib/Timer/asplib_CPUTimer.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/asplib_modules/Timer/asplib/Timer/asplib_CPUTimer.h b/asplib_modules/Timer/asplib/Timer/asplib_CPUTimer.h\nindex a61ff49..a9676e0 100644\n--- a/asplib_modules/Timer/asplib/Timer/asplib_CPUTimer.h\n+++ b/asplib_modules/Timer/asplib/Timer/asplib_CPUTimer.h\n@@ -29,7 +29,7 @@\n   #include <windows.h>\n   #include <time.h>\n #elif defined(TARGET_LINUX)\n-  #include <sys/time.h>\n+  #include <time.h>\n #endif\n \n namespace asplib\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/libasplib/Config.in",
    "content": "config BR2_PACKAGE_LIBASPLIB\n\tbool \"libasplib\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  asplib (Achim's Signal Processing LIBrary), is a small and\n\t  lightweight C++ library for digital signal processing.\n\n\t  https://github.com/AchimTuran/asplib\n\ncomment \"asplib needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/libasplib/libasplib.hash",
    "content": "# Locally calculated\nsha256 68e117348fa17592dde7672477e927119a0e477103ced1d3a57d92e30880a147  libasplib-be7fac89218a84b75f7598e3d76625ece99296f2.tar.gz\nsha256 12ac5047f2af0522f06798b1589ffc4599bc29c91f954d7874e0320634e777c0  LICENSE\n"
  },
  {
    "path": "package/libasplib/libasplib.mk",
    "content": "################################################################################\n#\n# libasplib\n#\n################################################################################\n\nLIBASPLIB_VERSION = be7fac89218a84b75f7598e3d76625ece99296f2\nLIBASPLIB_SITE = $(call github,AchimTuran,asplib,$(LIBASPLIB_VERSION))\nLIBASPLIB_LICENSE = GPL-3.0+\nLIBASPLIB_LICENSE_FILES = LICENSE\nLIBASPLIB_INSTALL_STAGING = YES\n\nLIBASPLIB_CONF_OPTS = \\\n\t-DASPLIB_MODULES_TO_BUILD=some \\\n\t-DBUILD_BIQUAD=ON \\\n\t-DBUILD_IIR=ON \\\n\t-DBUILD_LOGGER=ON \\\n\t-DBUILD_SIGNALS=ON \\\n\t-DBUILD_TIMER=ON\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libass/Config.in",
    "content": "config BR2_PACKAGE_LIBASS\n\tbool \"libass\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # harfbuzz\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # harfbuzz\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_HARFBUZZ\n\tselect BR2_PACKAGE_LIBFRIBIDI\n\thelp\n\t  libass is a portable subtitle renderer for the ASS/SSA\n\t  (Advanced Substation Alpha/Substation Alpha) subtitle format\n\n\t  https://github.com/libass/libass\n\ncomment \"libass needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/libass/libass.hash",
    "content": "# Locally computed\nsha256  1be2df9c4485a57d78bb18c0a8ed157bc87a5a8dd48c661961c625cb112832fd  libass-0.15.2.tar.xz\nsha256  f7e30699d02798351e7f839e3d3bfeb29ce65e44efa7735c225464c4fd7dfe9c  COPYING\n"
  },
  {
    "path": "package/libass/libass.mk",
    "content": "################################################################################\n#\n# libass\n#\n################################################################################\n\nLIBASS_VERSION = 0.15.2\nLIBASS_SOURCE = libass-$(LIBASS_VERSION).tar.xz\n# Do not use the github helper here, the generated tarball is *NOT*\n# the same as the one uploaded by upstream for the release.\nLIBASS_SITE = https://github.com/libass/libass/releases/download/$(LIBASS_VERSION)\nLIBASS_INSTALL_STAGING = YES\nLIBASS_LICENSE = ISC\nLIBASS_LICENSE_FILES = COPYING\nLIBASS_CPE_ID_VENDOR = libass_project\nLIBASS_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tfreetype \\\n\tharfbuzz \\\n\tlibfribidi \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\n# configure: WARNING: Install nasm for a significantly faster libass build.\n# only for Intel archs\nifeq ($(BR2_i386)$(BR2_x86_64),y)\nLIBASS_DEPENDENCIES += host-nasm\nendif\n\nifeq ($(BR2_PACKAGE_FONTCONFIG),y)\nLIBASS_DEPENDENCIES += fontconfig\nLIBASS_CONF_OPTS += --enable-fontconfig\nelse\nLIBASS_CONF_OPTS += --disable-fontconfig --disable-require-system-font-provider\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libassuan/Config.in",
    "content": "config BR2_PACKAGE_LIBASSUAN\n\tbool \"libassuan\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBGPG_ERROR\n\thelp\n\t  Libassuan is a small library implementing the so-called\n\t  Assuan protocol.\n\n\t  This protocol is used for IPC between most newer GnuPG\n\t  components. Both, server and client side functions are\n\t  provided.\n\n\t  http://www.gnupg.org/related_software/libassuan/\n"
  },
  {
    "path": "package/libassuan/libassuan.hash",
    "content": "# From https://www.gnupg.org/download/integrity_check.html\nsha1  ec4f67c0117ccd17007c748a392ded96dc1b1ae9  libassuan-2.5.5.tar.bz2\n# Locally calculated after checking signature\n# https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.5.tar.bz2.sig\n# using key D8692123C4065DEA5E0F3AB5249B39D24F25E3B6\nsha256  8e8c2fcc982f9ca67dcbb1d95e2dc746b1739a4668bc20b3a3c5be632edb34e4  libassuan-2.5.5.tar.bz2\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING.LIB\nsha256  fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7  COPYING\n"
  },
  {
    "path": "package/libassuan/libassuan.mk",
    "content": "################################################################################\n#\n# libassuan\n#\n################################################################################\n\nLIBASSUAN_VERSION = 2.5.5\nLIBASSUAN_SITE = ftp://ftp.gnupg.org/gcrypt/libassuan\nLIBASSUAN_SOURCE = libassuan-$(LIBASSUAN_VERSION).tar.bz2\nLIBASSUAN_LICENSE = LGPL-2.1+ (library), GPL-3.0 (tests, doc)\nLIBASSUAN_LICENSE_FILES = COPYING.LIB COPYING\nLIBASSUAN_INSTALL_STAGING = YES\nLIBASSUAN_DEPENDENCIES = libgpg-error\nLIBASSUAN_CONF_OPTS = \\\n\t--with-gpg-error-prefix=$(STAGING_DIR)/usr\nLIBASSUAN_CONFIG_SCRIPTS = libassuan-config\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libatasmart/0001-strpool-cross-flags.patch",
    "content": "From 730158700ea7a554c37f24bfbf5f4985f7280f3e Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <jacmet@sunsite.dk>\nDate: Wed, 6 Feb 2013 14:07:02 +0100\nSubject: [PATCH] strpool: don't mix up host/build flags when cross compiling\n\nSubmitted upstream as https://bugs.freedesktop.org/show_bug.cgi?id=60364\n\nCommit b71035ce89 (build-sys: modernize build system) changed the strpool\n(which needs to be built for the build machine) compilation to use\nAM_CFLAGS / AM_LDFLAGS rather than CFLAGS / LDFLAGS. This is wrong, as\nThe AM_ version is used TOGETHER with (the user supplied) CFLAGS/LDFLAGS,\ncausing strpool to use both CFLAGS (for host) and CCFLAGS_FOR_BUILD (for\nbuild) flags, breaking cross compilation with errors like:\n\ncc1: error: unrecognized command line option \"-mabi=spe\"\n\nInstead overwrite the (user supplied) CFLAGS with the (user supplied)\nCFLAGS_FOR_BUILD (and similar for LDFLAGS) like we used to do.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n---\n strpool/Makefile.am |    4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/strpool/Makefile.am b/strpool/Makefile.am\nindex b041cea..5b335a5 100644\n--- a/strpool/Makefile.am\n+++ b/strpool/Makefile.am\n@@ -17,8 +17,8 @@\n # <http://www.gnu.org/licenses/>.\n \n CC = @CC_FOR_BUILD@\n-AM_CFLAGS = @BUILD_CFLAGS@\n-AM_LDFLAGS = @BUILD_LDFLAGS@\n+CFLAGS = @BUILD_CFLAGS@\n+LDFLAGS = @BUILD_LDFLAGS@\n \n noinst_PROGRAMS = \\\n \tstrpool\n-- \n1.7.10.4\n\n"
  },
  {
    "path": "package/libatasmart/Config.in",
    "content": "config BR2_PACKAGE_LIBATASMART\n\tbool \"libatasmart\"\n\tdepends on BR2_PACKAGE_HAS_UDEV # libudev is configure dependency\n\thelp\n\t  The libatasmart package is a disk reporting library.\n\t  It only supports a subset of the ATA S.M.A.R.T. functionality.\n\n\t  http://0pointer.de/blog/projects/being-smart.html\n\ncomment \"libatasmart requires udev to be enabled\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n"
  },
  {
    "path": "package/libatasmart/libatasmart.hash",
    "content": "# Locally calculated\nsha256\t61f0ea345f63d28ab2ff0dc352c22271661b66bf09642db3a4049ac9dbdb0f8d\tlibatasmart-0.19.tar.xz\nsha256\ta9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861\tLGPL\n"
  },
  {
    "path": "package/libatasmart/libatasmart.mk",
    "content": "################################################################################\n#\n# libatasmart\n#\n################################################################################\n\nLIBATASMART_VERSION = 0.19\nLIBATASMART_SOURCE = libatasmart-$(LIBATASMART_VERSION).tar.xz\nLIBATASMART_SITE = http://0pointer.de/public\nLIBATASMART_LICENSE = LGPL-2.1\nLIBATASMART_LICENSE_FILES = LGPL\nLIBATASMART_INSTALL_STAGING = YES\n\n# package doesn't include configure script\nLIBATASMART_AUTORECONF = YES\n\nLIBATASMART_DEPENDENCIES = udev\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libatomic_ops/Config.in",
    "content": "config BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64 || BR2_arm || BR2_armeb\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_riscv\n\tdefault y if BR2_sparc || BR2_sparc64\n\t# Unsupported for MIPS R6\n\tdepends on !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6\n\nconfig BR2_PACKAGE_LIBATOMIC_OPS\n\tbool \"libatomic_ops\"\n\tdepends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS\n\thelp\n\t  Atomic operations library\n\n\t  https://github.com/ivmai/libatomic_ops\n"
  },
  {
    "path": "package/libatomic_ops/libatomic_ops.hash",
    "content": "# Locally calculated\nsha256  18091d5f3cb7008b0432016390ff437b9d1d76c10b92c8e63ff63f0c1331b030  libatomic_ops-7.6.12.tar.gz\nsha256  f0e630c0ca489767033da5a0c869fb4231db522c5ff479ce55a853a923a00f69  doc/LICENSING.txt\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/libatomic_ops/libatomic_ops.mk",
    "content": "################################################################################\n#\n# libatomic_ops\n#\n################################################################################\n\nLIBATOMIC_OPS_VERSION = 7.6.12\nLIBATOMIC_OPS_SITE = $(call github,ivmai,libatomic_ops,v$(LIBATOMIC_OPS_VERSION))\nLIBATOMIC_OPS_AUTORECONF = YES\n\n# From doc/LICENSING.txt: \"Our intent is to make it easy to use\n# libatomic_ops, in both free and proprietary software.  Hence most\n# code that we expect to be linked into a client application is\n# covered by an MIT-style license. A few library routines are covered\n# by the GNU General Public License. These are put into a separate\n# library, libatomic_ops_gpl.a.\"\nLIBATOMIC_OPS_LICENSE = MIT (main library) / GPL-2.0+ (gpl extension)\nLIBATOMIC_OPS_LICENSE_FILES = doc/LICENSING.txt COPYING\nLIBATOMIC_OPS_CPE_ID_VENDOR = libatomic_ops_project\n\nLIBATOMIC_OPS_INSTALL_STAGING = YES\n\nifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)\nLIBATOMIC_OPS_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -DAO_NO_SPARC_V9\"\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libavl/0001-fix-makefile.patch",
    "content": "makefile: fix compilation and installation\n\nThis was originally taken from:\nhttps://sources.debian.org/data/main/liba/libavl/0.3.5-4/debian/patches/fix-makefile\n\nUnfortunately, the URL does not end in \".patch\", therefore we cannot\nuse it in the FOO_PATCH variable directly.\n\nSigned-off-by: Michael Walle <michael@walle.cc>\n\n--- a/GNUmakefile\n+++ b/GNUmakefile\n@@ -6,7 +6,8 @@\n LDCONFIG ?= /sbin/ldconfig\n \n # Some suggestions: (-mcpu= generates i386 compatible code)\n-CFLAGS ?= -O2 -fomit-frame-pointer -pipe -mcpu=i686 -w\n+CFLAGS ?= -O2 -pipe -Wall -Werror\n+CFLAGS += -fPIC\n #CFLAGS = -O2 -fomit-frame-pointer -pipe -march=i586 -Wall -g\n #CFLAGS = -O6 -fomit-frame-pointer -pipe -march=i586 -Wall -ansi -pedantic\n #CFLAGS = -O6 -fomit-frame-pointer -pipe -march=i686 -Wall -ansi -pedantic\n@@ -34,20 +35,21 @@\n \t$(CC) $(LDFLAGS) $^ -o $@ $(LIBS)\n \n $(LIBRARY): avl.o\n-\t$(CC) -nostdlib -shared -Wl,-soname,libavl.so.1 $^ -o $@ -lc\n+\t$(CC) $(LDFLAGS) -shared -Wl,-soname,libavl.so.1 $^ -o $@ -lc\n \n clean:\n \t$(RM) *.o $(PROGRAMS) libavl.*\n \n install: all\n \t$(INSTALL) -d $(DESTDIR)$(libdir)\n-\t$(INSTALL) avl.h $(DESTDIR)$(includedir)\n-\t$(INSTALL) $(LIBRARIES) $(DESTDIR)$(libdir)\n-\tfor i in $(LIBRARIES); do\\\n+\t$(INSTALL) -d $(DESTDIR)$(includedir)\n+\t$(INSTALL) -m 644 avl.h $(DESTDIR)$(includedir)\n+\t$(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(libdir)\n+\tfor i in $(LIBRARY); do\\\n \t\t$(LN) -sf $$i $(DESTDIR)$(libdir)/$${i%.*};\\\n \t\t$(LN) -sf $${i%.*} $(DESTDIR)$(libdir)/$${i%.*.*};\\\n \tdone\n-\t-$(LDCONFIG)\n+\t#-$(LDCONFIG)\n \n .PHONY: clean install all\n .PRECIOUS: %.h %.c\n"
  },
  {
    "path": "package/libavl/Config.in",
    "content": "config BR2_PACKAGE_LIBAVL\n\tbool \"libavl\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  AVLTree is a small implementation of AVL trees for the C\n\t  programming language.\n\n\t  https://packages.debian.org/buster/libavl1\n\n\t  This is not the GNU AVL library by Ben Pfaff.\n\ncomment \"libavl needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libavl/libavl.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20160621T164030Z/pool/main/liba/libavl/libavl_0.3.5-4.dsc\nsha256\t4497b9e22cdd61ae2fa893b9d5fd6213dc306726d7c4be08c29e173622dca8a0\tlibavl_0.3.5.orig.tar.gz\n\n# Locally computed\nsha256\t767a9accfe3b110153b567983b98889469dfaae02899a632aeadbb81ad611293\tCOPYING\n"
  },
  {
    "path": "package/libavl/libavl.mk",
    "content": "################################################################################\n#\n# libavl\n#\n################################################################################\n\nLIBAVL_VERSION = 0.3.5\nLIBAVL_SITE = http://snapshot.debian.org/archive/debian/20050312T000000Z/pool/main/liba/libavl\nLIBAVL_SOURCE = libavl_$(LIBAVL_VERSION).orig.tar.gz\nLIBAVL_LICENSE = LGPL-2.0+\nLIBAVL_LICENSE_FILES = COPYING\nLIBAVL_INSTALL_STAGING = YES\n\nLIBAVL_CFLAGS = $(TARGET_CFLAGS) -fPIC\nHOST_LIBAVL_CFLAGS = $(HOST_CFLAGS) -fPIC\n\ndefine LIBAVL_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\tCFLAGS=\"$(LIBAVL_CFLAGS)\"\nendef\n\ndefine LIBAVL_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) install \\\n\t\tprefix=/usr DESTDIR=$(STAGING_DIR)\nendef\n\ndefine LIBAVL_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) install \\\n\t\tprefix=/usr DESTDIR=$(TARGET_DIR)\nendef\n\ndefine HOST_LIBAVL_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) \\\n\t\tCFLAGS=\"$(HOST_LIBAVL_CFLAGS)\"\nendef\n\ndefine HOST_LIBAVL_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) install \\\n\t\tprefix=$(HOST_DIR)\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/libb64/0001-Integer-overflows.patch",
    "content": "Fix integer overflows. Will not work on compilers with unsigned char\nas the default.\n\nFetched from: https://sources.debian.org/patches/libb64/1.2-5/\n\nCombined \"integer overflows.diff\" and \"off by one.diff\" and adapted\nfor version 1.2.1.\n\nSigned-off-by: Mikael Eliasson <mikael@robomagi.com>\n\ndiff --git a/src/cdecode.c b/src/cdecode.c\nindex a6c0a42..45da4e1 100644\n--- a/src/cdecode.c\n+++ b/src/cdecode.c\n@@ -9,10 +9,11 @@ For details, see http://sourceforge.net/projects/libb64\n \n int base64_decode_value(char value_in)\n {\n-\tstatic const char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,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,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51};\n+\tstatic const signed char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,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,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51};\n \tstatic const char decoding_size = sizeof(decoding);\n+\tif (value_in < 43) return -1;\n \tvalue_in -= 43;\n-\tif (value_in < 0 || value_in >= decoding_size) return -1;\n+\tif (value_in >= decoding_size) return -1;\n \treturn decoding[(int)value_in];\n }\n \n@@ -26,7 +27,7 @@ int base64_decode_block(const char* code_in, const int length_in, char* plaintex\n {\n \tconst char* codechar = code_in;\n \tchar* plainchar = plaintext_out;\n-\tchar fragment;\n+\tint fragment;\n \t\n \t*plainchar = state_in->plainchar;\n \t\n@@ -42,7 +43,7 @@ int base64_decode_block(const char* code_in, const int length_in, char* plaintex\n \t\t\t\t\tstate_in->plainchar = *plainchar;\n \t\t\t\t\treturn plainchar - plaintext_out;\n \t\t\t\t}\n-\t\t\t\tfragment = (char)base64_decode_value(*codechar++);\n+\t\t\t\tfragment = base64_decode_value(*codechar++);\n \t\t\t} while (fragment < 0);\n \t\t\t*plainchar    = (fragment & 0x03f) << 2;\n \tcase step_b:\n@@ -53,7 +54,7 @@ int base64_decode_block(const char* code_in, const int length_in, char* plaintex\n \t\t\t\t\tstate_in->plainchar = *plainchar;\n \t\t\t\t\treturn plainchar - plaintext_out;\n \t\t\t\t}\n-\t\t\t\tfragment = (char)base64_decode_value(*codechar++);\n+\t\t\t\tfragment = base64_decode_value(*codechar++);\n \t\t\t} while (fragment < 0);\n \t\t\t*plainchar++ |= (fragment & 0x030) >> 4;\n \t\t\t*plainchar    = (fragment & 0x00f) << 4;\n@@ -65,7 +66,7 @@ int base64_decode_block(const char* code_in, const int length_in, char* plaintex\n \t\t\t\t\tstate_in->plainchar = *plainchar;\n \t\t\t\t\treturn plainchar - plaintext_out;\n \t\t\t\t}\n-\t\t\t\tfragment = (char)base64_decode_value(*codechar++);\n+\t\t\t\tfragment = base64_decode_value(*codechar++);\n \t\t\t} while (fragment < 0);\n \t\t\t*plainchar++ |= (fragment & 0x03c) >> 2;\n \t\t\t*plainchar    = (fragment & 0x003) << 6;\n@@ -77,7 +78,7 @@ int base64_decode_block(const char* code_in, const int length_in, char* plaintex\n \t\t\t\t\tstate_in->plainchar = *plainchar;\n \t\t\t\t\treturn plainchar - plaintext_out;\n \t\t\t\t}\n-\t\t\t\tfragment = (char)base64_decode_value(*codechar++);\n+\t\t\t\tfragment = base64_decode_value(*codechar++);\n \t\t\t} while (fragment < 0);\n \t\t\t*plainchar++   |= (fragment & 0x03f);\n \t\t}\n"
  },
  {
    "path": "package/libb64/0002-Initialize-C++-objects.patch",
    "content": "Fixes uninitialized C++ encoder and decoder _state variable bug.\n\nFetched from: https://sources.debian.org/patches/libb64/1.2-5/\n\ninitialize-coder-state.diff patch without modifications.\n\nSigned-off-by: Mikael Eliasson <mikael@robomagi.com>\n\ndiff --git a/include/b64/decode.h b/include/b64/decode.h\nindex 12b16ea..d3f7d60 100644\n--- a/include/b64/decode.h\n+++ b/include/b64/decode.h\n@@ -24,7 +24,9 @@ namespace base64\n \n \t\tdecoder(int buffersize_in = BUFFERSIZE)\n \t\t: _buffersize(buffersize_in)\n-\t\t{}\n+\t\t{\n+\t\t\tbase64_init_decodestate(&_state);\n+\t\t}\n \n \t\tint decode(char value_in)\n \t\t{\ndiff --git a/include/b64/encode.h b/include/b64/encode.h\nindex 5d807d9..49aafdc 100644\n--- a/include/b64/encode.h\n+++ b/include/b64/encode.h\n@@ -24,7 +24,9 @@ namespace base64\n \n \t\tencoder(int buffersize_in = BUFFERSIZE)\n \t\t: _buffersize(buffersize_in)\n-\t\t{}\n+\t\t{\n+\t\t\tbase64_init_encodestate(&_state);\n+\t\t}\n \n \t\tint encode(char value_in)\n \t\t{\n"
  },
  {
    "path": "package/libb64/Config.in",
    "content": "config BR2_PACKAGE_LIBB64\n\tbool \"libb64\"\n\thelp\n\t  libb64 is a library of ANSI C routines for fast encoding\n\t  and decoding of data into and from a base64-encoded format.\n\t  C++ wrappers are included, as well as the source code for\n\t  standalone encoding and decoding executables.\n\n\t  Base64 uses a subset of displayable ASCII characters, and is\n\t  therefore a useful encoding for storing binary data in a text\n\t  file, such as XML, or sending binary data over text-only\n\t  email.\n\n\t  http://libb64.sourceforge.net\n"
  },
  {
    "path": "package/libb64/libb64.hash",
    "content": "# sha1 from sourceforge, sha256 locally computed\nsha1  04b3e21b8c951d27f02fe91249ca3474554af0b9  libb64-1.2.1.zip\nsha256  20106f0ba95cfd9c35a13c71206643e3fb3e46512df3e2efb2fdbf87116314b2  libb64-1.2.1.zip\n\n# Hash for license file:\nsha256  834b7afa1b3c40289a3be775d3625016be1c0d7ea7a4a26c1eb207f53dc961d8  LICENSE\n"
  },
  {
    "path": "package/libb64/libb64.mk",
    "content": "################################################################################\n#\n# libb64\n#\n################################################################################\n\nLIBB64_VERSION = 1.2.1\nLIBB64_SOURCE = libb64-$(LIBB64_VERSION).zip\nLIBB64_SITE = https://downloads.sourceforge.net/project/libb64/libb64/libb64\nLIBB64_LICENSE = Public Domain\nLIBB64_LICENSE_FILES = LICENSE\nLIBB64_INSTALL_STAGING = YES\n# Only static lib and headers\nLIBB64_INSTALL_TARGET = NO\n\ndefine LIBB64_EXTRACT_CMDS\n\tunzip $(LIBB64_DL_DIR)/$(LIBB64_SOURCE) -d $(BUILD_DIR)\nendef\n\ndefine LIBB64_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" CCFLAGS=\"$(TARGET_CFLAGS)\" -C $(@D) all_src\nendef\n\ndefine LIBB64_INSTALL_STAGING_CMDS\n\t$(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/include/b64\n\t$(INSTALL) -m 0644 $(@D)/include/b64/* $(STAGING_DIR)/usr/include/b64\n\t$(INSTALL) -D -m 0755 $(@D)/src/libb64.a $(STAGING_DIR)/usr/lib\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libbacktrace/Config.in",
    "content": "config BR2_PACKAGE_LIBBACKTRACE\n\tbool \"libbacktrace\"\n\thelp\n\t  A C library that may be linked into a C/C++ program to\n\t  produce symbolic backtraces\n\n\t  https://github.com/ianlancetaylor/libbacktrace\n"
  },
  {
    "path": "package/libbacktrace/libbacktrace.hash",
    "content": "# Locally computed:\nsha256 13072c499c76866c188beaf3d50f3dddbf2c27ed9fd72b33d1b857acd33b1cb5  libbacktrace-9b7f216e867916594d81e8b6118f092ac3fcf704.tar.gz\nsha256 ef8a9b3247488f8901ca60de9b17b745d7bd67e5ec1e622f80d62364572200d8  LICENSE\n"
  },
  {
    "path": "package/libbacktrace/libbacktrace.mk",
    "content": "################################################################################\n#\n# libbacktrace\n#\n################################################################################\n\nLIBBACKTRACE_VERSION = 9b7f216e867916594d81e8b6118f092ac3fcf704\nLIBBACKTRACE_SITE = $(call github,ianlancetaylor,libbacktrace,$(LIBBACKTRACE_VERSION))\nLIBBACKTRACE_LICENSE = BSD-3C-like\nLIBBACKTRACE_LICENSE_FILES = LICENSE\nLIBBACKTRACE_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libbdplus/Config.in",
    "content": "config BR2_PACKAGE_LIBBDPLUS\n\tbool \"libbdplus\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBGCRYPT\n\thelp\n\t  libbdplus is a research project to implement the BD+ System\n\t  Specifications.\n\t  This research project provides, through an open-source\n\t  library, a way to understand how the BD+ works.\n\t  NB: this project doesn't offer any key, configuration file or\n\t  certificate that could be used to decode encrypted copyrighted\n\t  material.\n\n\t  http://www.videolan.org/developers/libbdplus.html\n\ncomment \"libbdplus needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libbdplus/libbdplus.hash",
    "content": "# From http://download.videolan.org/pub/videolan/libbdplus/0.1.2/libbdplus-0.1.2.tar.bz2.sha512\nsha512\te00e7bc9f52b9275646593b753ba646b052255be94a7241965f4dbe4734f8f6a072973ed4b9997957f939236b0633897c295749f79e232188430795be5b5087b\tlibbdplus-0.1.2.tar.bz2\n\n# Hash for license file:\nsha256\t592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c\tCOPYING\n"
  },
  {
    "path": "package/libbdplus/libbdplus.mk",
    "content": "################################################################################\n#\n# libbdplus\n#\n################################################################################\n\nLIBBDPLUS_VERSION = 0.1.2\nLIBBDPLUS_SITE = http://download.videolan.org/pub/videolan/libbdplus/$(LIBBDPLUS_VERSION)\nLIBBDPLUS_SOURCE = libbdplus-$(LIBBDPLUS_VERSION).tar.bz2\nLIBBDPLUS_LICENSE = LGPL-2.1+\nLIBBDPLUS_LICENSE_FILES = COPYING\nLIBBDPLUS_INSTALL_STAGING = YES\nLIBBDPLUS_DEPENDENCIES = libgcrypt\nLIBBDPLUS_CONF_OPTS = \\\n\t--disable-werror \\\n\t--disable-extra-warnings \\\n\t--disable-optimizations \\\n\t--disable-examples \\\n\t--disable-debug \\\n\t--with-gnu-ld \\\n\t--with-libgcrypt-prefix=$(STAGING_DIR)/usr \\\n\t--with-gpg-error-prefix=$(STAGING_DIR)/usr\n\nifeq ($(BR2_PACKAGE_LIBAACS),y)\nLIBBDPLUS_DEPENDENCIES += libaacs\nLIBBDPLUS_CONF_OPTS += --with-libaacs\nelse\nLIBBDPLUS_CONF_OPTS += --without-libaacs\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libblockdev/0001-Provide-replacement-function-for-strerror_l.patch",
    "content": "From ccf93148aa3587dd98a02e253cdc42a7af14df1e Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Sat, 29 Aug 2020 16:04:15 +0200\nSubject: [PATCH] Provide replacement function for strerror_l()\n\nstrerror_l() is not implemented in some C libraries, such as uClibc,\nso let's provide a simple replacement function that falls back on\nstrerror().\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n configure.ac         | 2 ++\n src/plugins/crypto.c | 7 +++++++\n src/utils/module.c   | 8 ++++++++\n 3 files changed, 17 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex c2d22c2..36aeb51 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -137,6 +137,8 @@ AC_CHECK_HEADERS([dlfcn.h string.h unistd.h sys/fcntl.h sys/ioctl.h linux/random\n                  [LIBBLOCKDEV_SOFT_FAILURE([Header file $ac_header not found.])],\n                  [])\n \n+AC_CHECK_FUNCS([strerror_l])\n+\n AC_ARG_WITH([bcache],\n     AS_HELP_STRING([--with-bcache], [support bcache @<:@default=yes@:>@]),\n     [],\ndiff --git a/src/plugins/crypto.c b/src/plugins/crypto.c\nindex f4a2e8f..c1bd7b5 100644\n--- a/src/plugins/crypto.c\n+++ b/src/plugins/crypto.c\n@@ -52,6 +52,13 @@\n \n #define UNUSED __attribute__((unused))\n \n+#if !defined(HAVE_STRERROR_L)\n+static char *strerror_l(int errnum, locale_t locale UNUSED)\n+{\n+\treturn strerror(errnum);\n+}\n+#endif\n+\n /**\n  * SECTION: crypto\n  * @short_description: plugin for operations with encrypted devices\ndiff --git a/src/utils/module.c b/src/utils/module.c\nindex 9750e24..086bec0 100644\n--- a/src/utils/module.c\n+++ b/src/utils/module.c\n@@ -27,6 +27,14 @@\n \n #include \"module.h\"\n \n+#define UNUSED __attribute__((unused))\n+\n+#if !defined(HAVE_STRERROR_L)\n+static char *strerror_l(int errnum, locale_t locale UNUSED)\n+{\n+\treturn strerror(errnum);\n+}\n+#endif\n \n /**\n  * bd_utils_module_error_quark: (skip)\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/libblockdev/Config.in",
    "content": "config BR2_PACKAGE_LIBBLOCKDEV\n\tbool \"libblockdev\"\n\tdepends on !BR2_STATIC_LIBS # kmod\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_KMOD\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  libblockdev is a C library supporting GObject introspection\n\t  for manipulation of block devices. It has a plugin-based\n\t  architecture where each technology (like LVM, Btrfs, MD RAID,\n\t  Swap,...) is implemented in a separate plugin, possibly with\n\t  multiple implementations.\n\n\t  https://github.com/storaged-project/libblockdev/\n\nif BR2_PACKAGE_LIBBLOCKDEV\n\ncomment \"plugins\"\n\nconfig BR2_PACKAGE_LIBBLOCKDEV_CRYPTO\n\tbool \"crypto\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # cryptsetup -> json-c\n\tselect BR2_PACKAGE_CRYPTSETUP\n\nconfig BR2_PACKAGE_LIBBLOCKDEV_FS\n\tbool \"filesystem\"\n\tdepends on BR2_ENABLE_LOCALE # parted\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBMOUNT\n\tselect BR2_PACKAGE_PARTED\n\ncomment \"filesystem plugin needs a toolchain w/ locale\"\n\tdepends on !BR2_ENABLE_LOCALE\n\nconfig BR2_PACKAGE_LIBBLOCKDEV_LOOP\n\tbool \"loop\"\n\nconfig BR2_PACKAGE_LIBBLOCKDEV_LVM2\n\tbool \"lvm2\"\n\tdepends on BR2_ENABLE_LOCALE # parted\n\tselect BR2_PACKAGE_PARTED\n\tselect BR2_PACKAGE_LVM2\n\ncomment \"lvm2 support needs a toolchain w/ locale\"\n\tdepends on !BR2_ENABLE_LOCALE\n\nconfig BR2_PACKAGE_LIBBLOCKDEV_MDRAID\n\tbool \"mdraid\"\n\tselect BR2_PACKAGE_LIBBYTESIZE\n\nconfig BR2_PACKAGE_LIBBLOCKDEV_PART\n\tbool \"part\"\n\tdepends on BR2_ENABLE_LOCALE # parted\n\tselect BR2_PACKAGE_PARTED\n\ncomment \"part plugin needs a toolchain w/ locale\"\n\tdepends on !BR2_ENABLE_LOCALE\n\nconfig BR2_PACKAGE_LIBBLOCKDEV_SWAP\n\tbool \"swap\"\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\nendif\n\ncomment \"libblockdev needs udev /dev management and a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_HAS_UDEV || BR2_STATIC_LIBS || \\\n\t\t!BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libblockdev/libblockdev.hash",
    "content": "# Locally calculated\nsha256  555aa42a2db39649ad83253bdc902ab5bd63d39c123e0c8055c4de7fe7571668  libblockdev-2.25.tar.gz\nsha256  97bdc721d875501b6243a456333fdfdb1ab64d31c4da2554de845caf4674b946  LICENSE\n"
  },
  {
    "path": "package/libblockdev/libblockdev.mk",
    "content": "################################################################################\n#\n# libblockdev\n#\n################################################################################\n\nLIBBLOCKDEV_VERSION = 2.25\nLIBBLOCKDEV_SITE = https://github.com/storaged-project/libblockdev/releases/download/$(LIBBLOCKDEV_VERSION)-1\nLIBBLOCKDEV_LICENSE = LGPL-2.1\nLIBBLOCKDEV_LICENSE_FILES = LICENSE\nLIBBLOCKDEV_INSTALL_STAGING = YES\nLIBBLOCKDEV_DEPENDENCIES = host-pkgconf libglib2 kmod udev\n# 0001-Provide-replacement-function-for-strerror_l.patch\nLIBBLOCKDEV_AUTORECONF = YES\n\nLIBBLOCKDEV_CONF_OPTS = \\\n\t--disable-introspection \\\n\t--with-loop \\\n\t--without-bcache \\\n\t--without-btrfs \\\n\t--without-dm \\\n\t--without-dmraid \\\n\t--without-escrow \\\n\t--without-kbd \\\n\t--without-lvm_dbus \\\n\t--without-mpath \\\n\t--without-nvdimm \\\n\t--without-python2 \\\n\t--without-python3 \\\n\t--without-s390 \\\n\t--without-tools \\\n\t--without-vdo\n\nifeq ($(BR2_PACKAGE_LIBBLOCKDEV_CRYPTO),y)\nLIBBLOCKDEV_DEPENDENCIES += cryptsetup\nLIBBLOCKDEV_CONF_OPTS += --with-crypto\nelse\nLIBBLOCKDEV_CONF_OPTS += --without-crypto\nendif\n\nifeq ($(BR2_PACKAGE_LIBBLOCKDEV_FS),y)\nLIBBLOCKDEV_DEPENDENCIES += parted util-linux\nLIBBLOCKDEV_CONF_OPTS += --with-fs\nelse\nLIBBLOCKDEV_CONF_OPTS += --without-fs\nendif\n\nifeq ($(BR2_PACKAGE_LIBBLOCKDEV_LOOP),y)\nLIBBLOCKDEV_CONF_OPTS += --with-loop\nelse\nLIBBLOCKDEV_CONF_OPTS += --without-loop\nendif\n\nifeq ($(BR2_PACKAGE_LIBBLOCKDEV_LVM2),y)\nLIBBLOCKDEV_DEPENDENCIES += lvm2 parted\nLIBBLOCKDEV_CONF_OPTS += --with-lvm\nelse\nLIBBLOCKDEV_CONF_OPTS += --without-lvm\nendif\n\nifeq ($(BR2_PACKAGE_LIBBLOCKDEV_MDRAID),y)\nLIBBLOCKDEV_DEPENDENCIES += libbytesize\nLIBBLOCKDEV_CONF_OPTS += --with-mdraid\nelse\nLIBBLOCKDEV_CONF_OPTS += --without-mdraid\nendif\n\nifeq ($(BR2_PACKAGE_LIBBLOCKDEV_PART),y)\nLIBBLOCKDEV_DEPENDENCIES += parted\nLIBBLOCKDEV_CONF_OPTS += --with-part\nelse\nLIBBLOCKDEV_CONF_OPTS += --without-part\nendif\n\nifeq ($(BR2_PACKAGE_LIBBLOCKDEV_SWAP),y)\nLIBBLOCKDEV_DEPENDENCIES += util-linux\nLIBBLOCKDEV_CONF_OPTS += --with-swap\nelse\nLIBBLOCKDEV_CONF_OPTS += --without-swap\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libbluray/Config.in",
    "content": "config BR2_PACKAGE_LIBBLURAY\n\tbool \"libbluray\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  libbluray is a client library for accessing bluray disks.\n\n\t  http://www.videolan.org/developers/libbluray.html\n\ncomment \"libbluray needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libbluray/libbluray.hash",
    "content": "# From http://download.videolan.org/pub/videolan/libbluray/1.3.0/libbluray-1.3.0.tar.bz2.sha512\nsha512  3d5145e6fd7de099c07f937282112c7abb12a5590b7c0b965b00bddee3837ddfd1a30076aaa6d6278d07a5beee3856f602125983ae075ab30eceb6ac1bd9bcdc  libbluray-1.3.0.tar.bz2\n# Locally computed\nsha256  b3aa400aca6d2ba1f0bd03bd98d03d1fe7489a3bbb26969d72016360af8a5c9d  COPYING\n"
  },
  {
    "path": "package/libbluray/libbluray.mk",
    "content": "################################################################################\n#\n# libbluray\n#\n################################################################################\n\nLIBBLURAY_VERSION = 1.3.0\nLIBBLURAY_SITE = http://download.videolan.org/pub/videolan/libbluray/$(LIBBLURAY_VERSION)\nLIBBLURAY_SOURCE = libbluray-$(LIBBLURAY_VERSION).tar.bz2\nLIBBLURAY_INSTALL_STAGING = YES\nLIBBLURAY_LICENSE = LGPL-2.1+\nLIBBLURAY_LICENSE_FILES = COPYING\nLIBBLURAY_CPE_ID_VENDOR = videolan\nLIBBLURAY_DEPENDENCIES = host-pkgconf\n\nLIBBLURAY_CONF_OPTS = --disable-bdjava-jar\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nLIBBLURAY_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_PACKAGE_LIBUDFREAD),y)\nLIBBLURAY_DEPENDENCIES += libudfread\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nLIBBLURAY_DEPENDENCIES += freetype\nLIBBLURAY_CONF_OPTS += --with-freetype\nelse\nLIBBLURAY_CONF_OPTS += --without-freetype\nendif\n\nifeq ($(BR2_PACKAGE_FONTCONFIG),y)\nLIBBLURAY_DEPENDENCIES += fontconfig\nLIBBLURAY_CONF_OPTS += --with-fontconfig\nelse\nLIBBLURAY_CONF_OPTS += --without-fontconfig\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nLIBBLURAY_DEPENDENCIES += libxml2\nLIBBLURAY_CONF_OPTS += --with-libxml2\nelse\nLIBBLURAY_CONF_OPTS += --without-libxml2\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libbpf/Config.in",
    "content": "config BR2_PACKAGE_LIBBPF_ARCH_SUPPORTS\n\tbool\n\t# see src/bpf.c\n\tdefault y if BR2_arc\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_sparc || BR2_sparc64\n\tdefault y if BR2_s390x\n\nconfig BR2_PACKAGE_LIBBPF\n\tbool \"libbpf\"\n\tdepends on BR2_PACKAGE_LIBBPF_ARCH_SUPPORTS\n\tdepends on BR2_USE_WCHAR # elfutils\n\tdepends on !BR2_STATIC_LIBS # elfutils\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # elfutils\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13\n\tdepends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils\n\tselect BR2_PACKAGE_ELFUTILS\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  libbpf library.\n\t  A mirror of bpf-next linux tree bpf-next/tools/lib/bpf\n\t  directory plus its supporting header files. The version\n\t  of the package reflects the version of ABI.\n\n\t  https://github.com/libbpf/libbpf\n\ncomment \"libbpf needs a uClibc or glibc toolchain w/ wchar, dynamic library, threads, headers >= 4.13\"\n\tdepends on BR2_PACKAGE_LIBBPF_ARCH_SUPPORTS\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 \\\n\t\t|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)\n"
  },
  {
    "path": "package/libbpf/libbpf.hash",
    "content": "# Locally calculated\nsha256  21cbee4df093e7fd29e76ed429650d3f3abe3a893f35e346ab9bc3484f6e68c0  libbpf-0.4.0.tar.gz\nsha256  847f4addbd56e2d5be20c4ea0845e972672fc07b755fadaae5f7abd35d71e349  LICENSE\nsha256  6313108c23efffa36948f8b2cff1560a5935373b527b0e1a837cc77e6ed1bacd  LICENSE.BSD-2-Clause\nsha256  0b9a4febcdee6de55872501d5c1a8f5d8b0d1650cd4d5351995ceb22e889f8ca  LICENSE.LGPL-2.1\n"
  },
  {
    "path": "package/libbpf/libbpf.mk",
    "content": "################################################################################\n#\n# libbpf\n#\n################################################################################\n\nLIBBPF_VERSION = 0.4.0\nLIBBPF_SITE = $(call github,libbpf,libbpf,v$(LIBBPF_VERSION))\nLIBBPF_LICENSE = GPL-2.0, LGPL-2.1, BSD-2-Clause\nLIBBPF_LICENSE_FILES = LICENSE LICENSE.BSD-2-Clause LICENSE.LGPL-2.1\nLIBBPF_DEPENDENCIES = host-bison host-flex host-pkgconf elfutils zlib\nLIBBPF_INSTALL_STAGING = YES\n\ndefine LIBBPF_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \\\n\t\t-C $(@D)/src\nendef\n\n# bpf/bpf.h installed by libbpf uses bpf_iter_link_info that was added since\n# kernel 5.9, so we need to update some uapi headers in STAGING_DIR if the\n# toolchain is build with linux-headers < 5.9.\n# Otherwise bpf/bpf.h is broken due to out of date linux/bpf.h installed by the\n# toolchain.\n# https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a5cbe05a6673b85bed2a63ffcfea6a96c6410cff\nifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9),)\nLIBBPF_UPDATE_UAPI_HEADERS = install_uapi_headers\nendif\n\ndefine LIBBPF_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \\\n\t\t-C $(@D)/src install $(LIBBPF_UPDATE_UAPI_HEADERS) \\\n\t\tDESTDIR=$(STAGING_DIR)\nendef\n\ndefine LIBBPF_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \\\n\t\t-C $(@D)/src install DESTDIR=$(TARGET_DIR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libbroadvoice/Config.in",
    "content": "config BR2_PACKAGE_LIBBROADVOICE\n\tbool \"libbroadvoice\"\n\t# broken with gcc <= 4.8 on arc\n\t# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59049\n\tdepends on !BR2_arc || BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\thelp\n\t  broadvoice - a library for the BroadVoice 16 and 32 speech\n\t  codecs\n\n\t  https://www.broadcom.com/support/broadvoice\n"
  },
  {
    "path": "package/libbroadvoice/libbroadvoice.hash",
    "content": "# Locally computed\nsha256  777e5dccc3d189514b7f8e85b6c941d3b9d16d2d68d72cad055cbdfb571d3681  libbroadvoice-f65b0f50c8c767229fbf1758370880abc0d78564-br1.tar.gz\nsha256  2550586c993ce4a8c23c8b11968ea36192116a896a2504799cc65307d769c094  COPYING\n"
  },
  {
    "path": "package/libbroadvoice/libbroadvoice.mk",
    "content": "################################################################################\n#\n# libbroadvoice\n#\n################################################################################\n\nLIBBROADVOICE_VERSION = f65b0f50c8c767229fbf1758370880abc0d78564\n# we use the FreeSwitch fork because (quoting README):\n# \"This library is based on the Broadcom reference code, but has been\n# heavily modified so that it builds into a proper library, with a clean\n# usable interface, on a range of platforms.\"\nLIBBROADVOICE_SITE = https://freeswitch.org/stash/scm/sd/libbroadvoice.git\nLIBBROADVOICE_SITE_METHOD = git\nLIBBROADVOICE_LICENSE = LGPL-2.1\nLIBBROADVOICE_LICENSE_FILES = COPYING\nLIBBROADVOICE_AUTORECONF = YES\nLIBBROADVOICE_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libbsd/Config.in",
    "content": "config BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\t# libbsd does not support those architectures (see src/local-elf.h)\n\tdepends on !BR2_microblaze\n\tdepends on !BR2_arc\n\tdepends on !BR2_xtensa\n\tdepends on !BR2_nds32\n\nconfig BR2_PACKAGE_LIBBSD\n\tbool \"libbsd\"\n\tdepends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  This library provides useful functions commonly found on BSD\n\t  systems, and lacking on others like GNU systems, thus making\n\t  it easier to port projects with strong BSD origins, without\n\t  needing to embed the same code over and over again on each\n\t  project.\n\n\t  http://libbsd.freedesktop.org/\n\ncomment \"libbsd needs a toolchain w/ dynamic library, threads, wchar\"\n\tdepends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_USE_WCHAR\n"
  },
  {
    "path": "package/libbsd/libbsd.hash",
    "content": "# From https://lists.freedesktop.org/archives/libbsd/2019-August/000229.html\nsha256\t34b8adc726883d0e85b3118fa13605e179a62b31ba51f676136ecb2d0bc1a887\tlibbsd-0.10.0.tar.xz\nsha256\t933d14a6bc89ee1fd7adbf5b6ec97f6ff0e002549d0b0c164f8a8895371d78f8\tCOPYING\n"
  },
  {
    "path": "package/libbsd/libbsd.mk",
    "content": "################################################################################\n#\n# libbsd\n#\n################################################################################\n\nLIBBSD_VERSION = 0.10.0\nLIBBSD_SOURCE = libbsd-$(LIBBSD_VERSION).tar.xz\nLIBBSD_SITE = https://libbsd.freedesktop.org/releases\nLIBBSD_LICENSE = BSD-2-Clause, BSD-3-Clause, BSD-4-Clause, BSD-5-Clause, \\\n\t\tMIT, ISC, Beerware\nLIBBSD_LICENSE_FILES = COPYING\nLIBBSD_CPE_ID_VENDOR = freedesktop\nLIBBSD_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libbson/Config.in",
    "content": "config BR2_PACKAGE_LIBBSON\n\tbool \"libbson\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  libbson is a library providing useful routines related to\n\t  building, parsing, and iterating BSON documents.\n\n\t  http://mongoc.org/libbson/\n\ncomment \"libbson needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libbson/libbson.hash",
    "content": "# Locally calculated\nsha256\t6bb51b863a4641d6d7729e4b55df8f4389ed534c34eb3a1cda906a53df11072c libbson-1.9.5.tar.gz\nsha256\tcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING\nsha256\t8dc5cb3146b026715e6c145621c7732f36c295d825b7b3a03076ad3f238db48e THIRD_PARTY_NOTICES\n"
  },
  {
    "path": "package/libbson/libbson.mk",
    "content": "################################################################################\n#\n# libbson\n#\n################################################################################\n\nLIBBSON_VERSION = 1.9.5\nLIBBSON_SITE = https://github.com/mongodb/libbson/releases/download/$(LIBBSON_VERSION)\nLIBBSON_LICENSE = Apache-2.0, MIT (jsonl), ISC (b64), Zlib (md5)\nLIBBSON_LICENSE_FILES = COPYING THIRD_PARTY_NOTICES\nLIBBSON_CPE_ID_VENDOR = mongodb\nLIBBSON_CONF_OPTS = \\\n\t--disable-tests \\\n\t--disable-examples \\\n\t--disable-man-pages \\\n\t--disable-html-docs\n\nLIBBSON_INSTALL_STAGING = YES\n\n# Also has CMake support, but that forces shared+static libs and static\n# lib has a different name.\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libbytesize/Config.in",
    "content": "config BR2_PACKAGE_LIBBYTESIZE\n\tbool \"libbytesize\"\n\tselect BR2_PACKAGE_GMP\n\tselect BR2_PACKAGE_MPFR\n\tselect BR2_PACKAGE_PCRE2\n\thelp\n\t  A tiny library that facilitates the common operations with\n\t  sizes in bytes\n\n\t  https://github.com/storaged-project/libbytesize/\n"
  },
  {
    "path": "package/libbytesize/libbytesize.hash",
    "content": "# Locally calculated\nsha256  6305addae2b7be313dbfc36b96094ec0544d5144859ab4a5685ca6d314d6fdda  libbytesize-2.5.tar.gz\nsha256  97bdc721d875501b6243a456333fdfdb1ab64d31c4da2554de845caf4674b946  LICENSE\n"
  },
  {
    "path": "package/libbytesize/libbytesize.mk",
    "content": "################################################################################\n#\n# libbytesize\n#\n################################################################################\n\nLIBBYTESIZE_VERSION = 2.5\nLIBBYTESIZE_SITE = https://github.com/storaged-project/libbytesize/releases/download/$(LIBBYTESIZE_VERSION)\nLIBBYTESIZE_LICENSE = LGPL-2.1+\nLIBBYTESIZE_LICENSE_FILES = LICENSE\nLIBBYTESIZE_INSTALL_STAGING = YES\n\nLIBBYTESIZE_DEPENDENCIES = \\\n\thost-pkgconf \\\n\thost-gettext \\\n\tgmp \\\n\tmpfr \\\n\tpcre2\n\nLIBBYTESIZE_CONF_OPTS += \\\n\t--without-python3 \\\n\t--without-tools\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libcamera/Config.in",
    "content": "config BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\t# Invalid packing size of ControlValue struct on m68k\n\tdepends on !BR2_m68k\n\tdepends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597\n\nmenuconfig BR2_PACKAGE_LIBCAMERA\n\tbool \"libcamera\"\n\tdepends on BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17\n\tdepends on !BR2_STATIC_LIBS # gnutls\n\tdepends on BR2_USE_WCHAR # gnutls\n\tselect BR2_PACKAGE_GNUTLS\n\tselect BR2_PACKAGE_LIBCAMERA_PIPELINE_UVCVIDEO if !BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE\n\thelp\n\t  libcamera provides a software stack to support\n\t  complex devices that need heavy hardware image\n\t  processing operations.\n\n\t  http://www.libcamera.org/\n\nif BR2_PACKAGE_LIBCAMERA\n\nconfig BR2_PACKAGE_LIBCAMERA_V4L2\n\tbool \"libcamera v4l2 compatibility layer\"\n\thelp\n\t  libcamera v4l2 compatibility layer\n\nconfig BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE\n\tbool\n\nconfig BR2_PACKAGE_LIBCAMERA_PIPELINE_IPU3\n\tbool \"ipu3 pipeline\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tselect BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE\n\thelp\n\t  Pipeline for Intel IPU3.\n\nconfig BR2_PACKAGE_LIBCAMERA_PIPELINE_RASPBERRYPI\n\tbool \"raspberrypi pipeline\"\n\tdepends on BR2_arm || BR2_aarch64\n\tdepends on BR2_USE_WCHAR # boost (already enforced for gnutls)\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE\n\thelp\n\t  Pipeline for Raspberry Pi devices.\n\nconfig BR2_PACKAGE_LIBCAMERA_PIPELINE_RKISP1\n\tbool \"rkisp1 pipeline\"\n\tdepends on BR2_arm || BR2_aarch64\n\tselect BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE\n\thelp\n\t  Pipeline for Rockchip ISP1.\n\nconfig BR2_PACKAGE_LIBCAMERA_PIPELINE_SIMPLE\n\tbool \"simple pipeline\"\n\tselect BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE\n\thelp\n\t  Pipeline for simple pipelines.\n\nconfig BR2_PACKAGE_LIBCAMERA_PIPELINE_UVCVIDEO\n\tbool \"uvcvideo pipeline\"\n\thelp\n\t  Pipeline for uvcvideo devices.\n\nconfig BR2_PACKAGE_LIBCAMERA_PIPELINE_VIMC\n\tbool \"vimc pipeline\"\n\tselect BR2_PACKAGE_LIBCAMERA_HAS_PIPELINE\n\thelp\n\t  Pipeline for the vimc device.\n\nconfig BR2_PACKAGE_LIBCAMERA_COMPLIANCE\n\tbool \"lc-compliance test application\"\n\tdepends on BR2_USE_WCHAR # gtest\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # gtest\n\tdepends on BR2_INSTALL_LIBSTDCPP # gtest\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # gtest\n\tdepends on BR2_USE_MMU # gtest\n\tselect BR2_PACKAGE_GTEST\n\tselect BR2_PACKAGE_LIBEVENT\n\thelp\n\t  lc-compliance test application\n\ncomment \"lc-compliance test application needs a toolchain w/ C++, wchar, threads, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nendif # BR2_PACKAGE_LIBCAMERA\n\ncomment \"libcamera needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 7\"\n\tdepends on BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_7 || BR2_STATIC_LIBS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/libcamera/libcamera.hash",
    "content": "sha256  305e6f458d2bf3d4b697ffe33e104b696db6b1492bb5422e2cce1937e58516f1  libcamera-40f5fddca7f774944a53f58eeaebc4db79c373d8-br1.tar.gz\n\n# license files\nsha256  fd38b2c053c0cce46d9c5ef3545a6e34d157a240ba99c9b8dca5d37a8147da6c  LICENSES/BSD-2-Clause.txt\nsha256  e11af671c491efac2f94c1d752bea92f4308ca2450c7d11e582e4b48c40e4de1  LICENSES/BSD-3-Clause.txt\nsha256  6a573fb2f9082662978cf21fb153096df0a1981deaea7dbc10a11046fe005d9f  LICENSES/CC0-1.0.txt\nsha256  ec3732087acf8c52429a020d6bba362ff578705bdb53365a21744485ec15b0e6  LICENSES/CC-BY-SA-4.0.txt\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSES/GPL-2.0-only.txt\nsha256  606aa26338f69ce178f1cbc648b7574aec4b5bbaeb20f4df36ff49010cb8fbbd  LICENSES/GPL-2.0-or-later.txt\nsha256  1ccf09bf2f598308df4bed9cd8e9657dc5cd0973d2800318f2e241486e2edf3f  LICENSES/LGPL-2.1-or-later.txt\nsha256  3f9e477523febab58de8b716ccfbcf02e6ef1c8e7728953905e8558637abe2a9  LICENSES/Linux-syscall-note.txt\nsha256  8f25018489d6fe0dec34a352314c38dc146247b7de65735790f4398a92afa84b  LICENSES/MIT.txt\n"
  },
  {
    "path": "package/libcamera/libcamera.mk",
    "content": "################################################################################\n#\n# libcamera\n#\n################################################################################\n\nLIBCAMERA_SITE = https://git.linuxtv.org/libcamera.git\nLIBCAMERA_VERSION = 40f5fddca7f774944a53f58eeaebc4db79c373d8\nLIBCAMERA_SITE_METHOD = git\nLIBCAMERA_DEPENDENCIES = \\\n\thost-openssl \\\n\thost-pkgconf \\\n\thost-python-jinja2 \\\n\thost-python3-ply \\\n\thost-python3-pyyaml \\\n\tgnutls\nLIBCAMERA_CONF_OPTS = \\\n\t-Dandroid=disabled \\\n\t-Ddocumentation=disabled \\\n\t-Dtest=false \\\n\t-Dwerror=false\nLIBCAMERA_INSTALL_STAGING = YES\nLIBCAMERA_LICENSE = \\\n\tLGPL-2.1+ (library), \\\n\tGPL-2.0+ (utils), \\\n\tMIT (qcam/assets/feathericons), \\\n\tBSD-2-Clause (raspberrypi), \\\n\tGPL-2.0 with Linux-syscall-note or BSD-3-Clause (linux kernel headers), \\\n\tCC0-1.0 (meson build system), \\\n\tCC-BY-SA-4.0 (doc)\nLIBCAMERA_LICENSE_FILES = \\\n\tLICENSES/LGPL-2.1-or-later.txt \\\n\tLICENSES/GPL-2.0-or-later.txt \\\n\tLICENSES/MIT.txt \\\n\tLICENSES/BSD-2-Clause.txt \\\n\tLICENSES/GPL-2.0-only.txt \\\n\tLICENSES/Linux-syscall-note.txt \\\n\tLICENSES/BSD-3-Clause.txt \\\n\tLICENSES/CC0-1.0.txt \\\n\tLICENSES/CC-BY-SA-4.0.txt\n\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_7),y)\nLIBCAMERA_CXXFLAGS = -faligned-new\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAMERA_V4L2),y)\nLIBCAMERA_CONF_OPTS += -Dv4l2=true\nelse\nLIBCAMERA_CONF_OPTS += -Dv4l2=false\nendif\n\nLIBCAMERA_PIPELINES-$(BR2_PACKAGE_LIBCAMERA_PIPELINE_IPU3) += ipu3\nifeq ($(BR2_PACKAGE_LIBCAMERA_PIPELINE_RASPBERRYPI),y)\nLIBCAMERA_PIPELINES-y += raspberrypi\nLIBCAMERA_DEPENDENCIES += boost\nendif\nLIBCAMERA_PIPELINES-$(BR2_PACKAGE_LIBCAMERA_PIPELINE_RKISP1) += rkisp1\nLIBCAMERA_PIPELINES-$(BR2_PACKAGE_LIBCAMERA_PIPELINE_SIMPLE) += simple\nLIBCAMERA_PIPELINES-$(BR2_PACKAGE_LIBCAMERA_PIPELINE_UVCVIDEO) += uvcvideo\nLIBCAMERA_PIPELINES-$(BR2_PACKAGE_LIBCAMERA_PIPELINE_VIMC) += vimc\n\nLIBCAMERA_CONF_OPTS += -Dpipelines=$(subst $(space),$(comma),$(LIBCAMERA_PIPELINES-y))\n\nifeq ($(BR2_PACKAGE_LIBCAMERA_COMPLIANCE),y)\nLIBCAMERA_DEPENDENCIES += gtest libevent\nLIBCAMERA_CONF_OPTS += -Dlc-compliance=enabled\nelse\nLIBCAMERA_CONF_OPTS += -Dlc-compliance=disabled\nendif\n\n# gstreamer-video-1.0, gstreamer-allocators-1.0\nifeq ($(BR2_PACKAGE_GSTREAMER1)$(BR2_PACKAGE_GST1_PLUGINS_BASE),yy)\nLIBCAMERA_CONF_OPTS += -Dgstreamer=enabled\nLIBCAMERA_DEPENDENCIES += gstreamer1 gst1-plugins-base\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS),y)\nLIBCAMERA_CONF_OPTS += -Dqcam=enabled\nLIBCAMERA_DEPENDENCIES += qt5base\nifeq ($(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS),y)\nLIBCAMERA_DEPENDENCIES += qt5tools\nendif\nelse\nLIBCAMERA_CONF_OPTS += -Dqcam=disabled\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nLIBCAMERA_DEPENDENCIES += tiff\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nLIBCAMERA_DEPENDENCIES += udev\nendif\n\nifeq ($(BR2_PACKAGE_LTTNG_LIBUST),y)\nLIBCAMERA_CONF_OPTS += -Dtracing=enabled\nLIBCAMERA_DEPENDENCIES += lttng-libust\nelse\nLIBCAMERA_CONF_OPTS += -Dtracing=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libcap/0001-libcap-Makefile-don-t-overwrite-empty-when-generatin.patch",
    "content": "From dc507a812d931c24f1ac98c811fdd29bffa21da9 Mon Sep 17 00:00:00 2001\nFrom: \"Arnout Vandecappelle (Essensium/Mind)\" <arnout@mind.be>\nDate: Tue, 24 Aug 2021 00:36:40 +0200\nSubject: [PATCH] libcap/Makefile: don't overwrite 'empty' when generating\n loader.txt\n\nobjcopy takes an input file and an output file as arguments. If the\noutput file is left out, the input file will be overwritten.\n\nSince the objcopy command used to generate loader.txt only does a\ndump-section and no filtering, in practice there is no change to empty.\nHowever, as a side-effect, its timestamp is updated. The timestamp of\nempty and of loader.txt will be more or less the same; however,\nloader.txt is closed just before the output file is closed, so it's\npossible that the timestamp of loader.txt is just a little bit earlier.\nIf this happens, it causes loader.txt to be rebuilt later, which in turn\ncauses a number of other object files to be rebuilt.\n\nUsually that's harmless, but it sometimes causes the rebuild to happen\nduring 'make install'. This is particularly annoying if 'make install'\nis done as root, since loader.txt becomes owned by root in that case.\n\nFix this by specifying a harmless output file: /dev/null.\n\nWhile we're at it, take in an upstream change that removes the redundant\nredirect.\n\nFixes: ee3b25c0a877fa74d1aec88f325ac45b09963c82\n\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n---\n libcap/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/libcap/Makefile b/libcap/Makefile\nindex 47cf8f4..18e4f4f 100644\n--- a/libcap/Makefile\n+++ b/libcap/Makefile\n@@ -105,7 +105,7 @@ empty: empty.c\n \t$(CC) -o $@ $<\n \n loader.txt: empty\n-\t$(OBJCOPY) --dump-section .interp=/dev/stdout $< > $@\n+\t$(OBJCOPY) --dump-section .interp=$@ $< /dev/null\n \n cap_magic.o: execable.h execable.c loader.txt\n \t$(CC) $(CFLAGS) $(IPATH) -DLIBRARY_VERSION=\\\"$(LIBTITLE)-$(VERSION).$(MINOR)\\\" -DSHARED_LOADER=\\\"$(shell cat loader.txt)\\\" -c execable.c -o $@\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/libcap/Config.in",
    "content": "config BR2_PACKAGE_LIBCAP\n\tbool \"libcap\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  This library implements the user-space interfaces to the\n\t  POSIX 1003.1e capabilities available in Linux kernels. These\n\t  capabilities are a partitioning of the all powerful root\n\t  privilege into a set of distinct privileges.\n\n\t  https://sites.google.com/site/fullycapable/\n\nif BR2_PACKAGE_LIBCAP\n\nconfig BR2_PACKAGE_LIBCAP_TOOLS\n\tbool \"install tools\"\n\thelp\n\t  Install setcap, getcap, getpcaps and capsh tools.\n\n\t  For these tools to run properly, you should enable, in your\n\t  kernel configuration, extended file attributes/security labels\n\t  support for the file system type used on target system (e.g.\n\t  CONFIG_EXT2_FS_XATTR and CONFIG_EXT2_FS_SECURITY for ext2).\n\nendif\n"
  },
  {
    "path": "package/libcap/libcap.hash",
    "content": "# https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/sha256sums.asc\nsha256  a2faacd55ae5959db1b0c695f91f256ac4c5e6b10acaeaeaf508ea1ee887fa97  libcap-2.52.tar.xz\n\n# Hash for license file:\nsha256  f58c80bcce8c929db39a23c32e924876e3311f3ffa54f66076c38056d38fa59b  License\n"
  },
  {
    "path": "package/libcap/libcap.mk",
    "content": "################################################################################\n#\n# libcap\n#\n################################################################################\n\nLIBCAP_VERSION = 2.52\nLIBCAP_SITE = https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2\nLIBCAP_SOURCE = libcap-$(LIBCAP_VERSION).tar.xz\nLIBCAP_LICENSE = GPL-2.0 or BSD-3-Clause\nLIBCAP_LICENSE_FILES = License\nLIBCAP_CPE_ID_VENDOR = libcap_project\n\nLIBCAP_DEPENDENCIES = host-libcap host-gperf\nLIBCAP_INSTALL_STAGING = YES\n\nHOST_LIBCAP_DEPENDENCIES = host-gperf\n\nLIBCAP_MAKE_FLAGS = \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tBUILD_CC=\"$(HOSTCC)\" \\\n\tBUILD_CFLAGS=\"$(HOST_CFLAGS)\" \\\n\tlib=lib \\\n\tprefix=/usr \\\n\tSHARED=$(if $(BR2_STATIC_LIBS),,yes) \\\n\tPTHREADS=$(if $(BR2_TOOLCHAIN_HAS_THREADS),yes,)\n\nLIBCAP_MAKE_DIRS = libcap\n\nifeq ($(BR2_PACKAGE_LIBCAP_TOOLS),y)\nLIBCAP_MAKE_DIRS += progs\nendif\n\ndefine LIBCAP_BUILD_CMDS\n\t$(foreach d,$(LIBCAP_MAKE_DIRS), \\\n\t\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/$(d) \\\n\t\t\t$(LIBCAP_MAKE_FLAGS) all\n\t)\nendef\n\ndefine LIBCAP_INSTALL_STAGING_CMDS\n\t$(foreach d,$(LIBCAP_MAKE_DIRS), \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/$(d) $(LIBCAP_MAKE_FLAGS) \\\n\t\t\tDESTDIR=$(STAGING_DIR) install\n\t)\nendef\n\ndefine LIBCAP_INSTALL_TARGET_CMDS\n\t$(foreach d,$(LIBCAP_MAKE_DIRS), \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/$(d) $(LIBCAP_MAKE_FLAGS) \\\n\t\t\tDESTDIR=$(TARGET_DIR) install\n\t)\nendef\n\nHOST_LIBCAP_MAKE_FLAGS = \\\n\tDYNAMIC=yes \\\n\tGOLANG=no \\\n\tlib=lib \\\n\tprefix=$(HOST_DIR) \\\n\tRAISE_SETFCAP=no\n\ndefine HOST_LIBCAP_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(HOST_LIBCAP_MAKE_FLAGS)\nendef\n\ndefine HOST_LIBCAP_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBCAP_MAKE_FLAGS) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/libcap-ng/Config.in",
    "content": "config BR2_PACKAGE_LIBCAP_NG\n\tbool \"libcap-ng\"\n\thelp\n\t  The libcap-ng library is intended to make programming with\n\t  posix capabilities much easier than the traditional libcap\n\t  library. It includes utilities that can analyse all currently\n\t  running applications and print out any capabilities and\n\t  whether or not it has an open ended bounding set.\n\n\t  http://people.redhat.com/sgrubb/libcap-ng/\n"
  },
  {
    "path": "package/libcap-ng/libcap-ng.hash",
    "content": "# Locally calculated\nsha256  52c083b77c2b0d8449dee141f9c3eba76e6d4c5ad44ef05df25891126cb85ae9  libcap-ng-0.8.2.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\nsha256  f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa  COPYING.LIB\n"
  },
  {
    "path": "package/libcap-ng/libcap-ng.mk",
    "content": "################################################################################\n#\n# libcap-ng\n#\n################################################################################\n\nLIBCAP_NG_VERSION = 0.8.2\nLIBCAP_NG_SITE = http://people.redhat.com/sgrubb/libcap-ng\nLIBCAP_NG_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (library)\nLIBCAP_NG_LICENSE_FILES = COPYING COPYING.LIB\nLIBCAP_NG_CPE_ID_VENDOR = libcap-ng_project\nLIBCAP_NG_INSTALL_STAGING = YES\n\nLIBCAP_NG_CONF_ENV = ac_cv_prog_swig_found=no\nLIBCAP_NG_CONF_OPTS = --without-python\n\nHOST_LIBCAP_NG_CONF_ENV = ac_cv_prog_swig_found=no\nHOST_LIBCAP_NG_CONF_OPTS = --without-python\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libcdaudio/0001-libcdaudio-enable-autoreconf.patch",
    "content": "From 9c2873b1d9292bcf43c862b6777d41c40521424c Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Sun, 13 Jan 2019 22:27:42 +0100\nSubject: [PATCH] libcdaudio: enable autoreconf\n\nFixes the following two autoreconf errors (by simple removing of the\ntwo offending lines):\n\n  configure.ac:20: error: automatic de-ANSI-fication support has been removed\n\n  Makefile.am:2: error: automatic de-ANSI-fication support has been removed\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n Makefile.am  | 1 -\n configure.ac | 1 -\n 2 files changed, 2 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex f639dd8..a32cfe6 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -1,5 +1,4 @@\n ## Process this file with automake to produce Makefile.in\n-AUTOMAKE_OPTIONS = ansi2knr\n SUBDIRS = src\n \n bin_SCRIPTS = libcdaudio-config\ndiff --git a/configure.ac b/configure.ac\nindex bbdd42d..6699ceb 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -17,7 +17,6 @@ AM_CONFIG_HEADER(config.h)\n AC_PROG_AWK\n AC_PROG_CC\n AC_PROG_CPP\n-AM_C_PROTOTYPES\n AM_PROG_CC_STDC\n AC_PROG_INSTALL\n AC_PROG_LN_S\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/libcdaudio/Config.in",
    "content": "config BR2_PACKAGE_LIBCDAUDIO\n\tbool \"libcdaudio\"\n\t# binutils assertion failure\n\tdepends on !BR2_nios2\n\thelp\n\t  libcdaudio is a library designed to provide functions to\n\t  control operation of a CD-ROM when playing audio CDs. It\n\t  also contains functions for CDDB and CD Index lookup.\n\n\t  http://libcdaudio.sourceforge.net/\n"
  },
  {
    "path": "package/libcdaudio/libcdaudio.hash",
    "content": "# Locally computed:\nsha256  5fdaf9af5ac4f75c0215d000b82b128fd054a582f81cc4f039a1e7fe69335ebb  libcdaudio-0.99.12p2.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/libcdaudio/libcdaudio.mk",
    "content": "################################################################################\n#\n# libcdaudio\n#\n################################################################################\n\nLIBCDAUDIO_VERSION = 0.99.12p2\nLIBCDAUDIO_SITE = http://downloads.sourceforge.net/project/libcdaudio/libcdaudio/$(LIBCDAUDIO_VERSION)\nLIBCDAUDIO_INSTALL_STAGING = YES\nLIBCDAUDIO_CONFIG_SCRIPTS = libcdaudio-config\nLIBCDAUDIO_LICENSE = GPL-2.0+\nLIBCDAUDIO_LICENSE_FILES = COPYING\n\n# fix configure failure when the toolchain doesn't have C++ support\nLIBCDAUDIO_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libcddb/Config.in",
    "content": "config BR2_PACKAGE_LIBCDDB\n\tbool \"libcddb\"\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Libcddb is a C library to access data on a CDDB server\n\t  (freedb.org). It allows you to:\n\t    * search the database for possible CD matches;\n\t    * retrieve detailed information about a specific CD;\n\t    * submit new CD entries to the database.\n\n\t  http://libcddb.sourceforge.net/index.html\n\nif BR2_PACKAGE_LIBCDDB\n\nconfig BR2_PACKAGE_LIBCDDB_INSTALL_CDDB_QUERY\n\tbool \"install cddb_query\"\n\thelp\n\t  cddb_query is an optionnal libcddb test program.\n\nendif\n"
  },
  {
    "path": "package/libcddb/libcddb.hash",
    "content": "# Locally computed:\nsha256\t35ce0ee1741ea38def304ddfe84a958901413aa829698357f0bee5bb8f0a223b\tlibcddb-1.3.2.tar.bz2\nsha256\t7a4436f9ec37603356791c87de3bc444989befd2682d29efb3d97604e04c1852\tCOPYING\n"
  },
  {
    "path": "package/libcddb/libcddb.mk",
    "content": "################################################################################\n#\n# libcddb\n#\n################################################################################\n\nLIBCDDB_VERSION = 1.3.2\nLIBCDDB_SOURCE = libcddb-$(LIBCDDB_VERSION).tar.bz2\nLIBCDDB_SITE = http://downloads.sourceforge.net/libcddb\nLIBCDDB_LICENSE = LGPL-2.0+\nLIBCDDB_LICENSE_FILES = COPYING\nLIBCDDB_INSTALL_STAGING = YES\n\nifeq ($(BR2_ENABLE_LOCALE),)\nLIBCDDB_DEPENDENCIES += libiconv\nendif\n\ndefine LIBCDDB_REMOVE_CDDB_QUERY\n\trm -f $(TARGET_DIR)/usr/bin/cddb_query\nendef\n\nifeq ($(BR2_PACKAGE_LIBCDDB_INSTALL_CDDB_QUERY),)\nLIBCDDB_POST_INSTALL_TARGET_HOOKS += LIBCDDB_REMOVE_CDDB_QUERY\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libcdio/Config.in",
    "content": "config BR2_PACKAGE_LIBCDIO\n\tbool \"libcdio\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  The GNU Compact Disc Input and Control library.\n\n\t  http://www.gnu.org/software/libcdio/\n"
  },
  {
    "path": "package/libcdio/libcdio.hash",
    "content": "# Locally calculated after checking signature\nsha256 8550e9589dbd594bfac93b81ecf129b1dc9d0d51e90f9696f1b2f9b2af32712b  libcdio-2.1.0.tar.bz2\n\n# Hash for license file:\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/libcdio/libcdio.mk",
    "content": "################################################################################\n#\n# libcdio\n#\n################################################################################\n\nLIBCDIO_VERSION = 2.1.0\nLIBCDIO_SOURCE = libcdio-$(LIBCDIO_VERSION).tar.bz2\nLIBCDIO_SITE = $(BR2_GNU_MIRROR)/libcdio\nLIBCDIO_INSTALL_STAGING = YES\nLIBCDIO_LICENSE = GPL-3.0+\nLIBCDIO_LICENSE_FILES = COPYING\nLIBCDIO_CPE_ID_VENDOR = gnu\nLIBCDIO_CONF_OPTS = --disable-example-progs --disable-cddb\n\nifeq ($(BR2_ENABLE_LOCALE),)\nLIBCDIO_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_INSTALL_LIBSTDCPP),)\nLIBCDIO_CONF_OPTS += --disable-cxx\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nLIBCDIO_DEPENDENCIES += ncurses\nelse\nLIBCDIO_CONF_OPTS += --without-cdda-player\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libcdio-paranoia/Config.in",
    "content": "config BR2_PACKAGE_LIBCDIO_PARANOIA\n\tbool \"libcdio-paranoia\"\n\tdepends on BR2_USE_MMU # libcdio\n\tselect BR2_PACKAGE_LIBCDIO\n\thelp\n\t  CD paranoia on top of libcdio\n\n\t  http://www.gnu.org/software/libcdio/\n"
  },
  {
    "path": "package/libcdio-paranoia/libcdio-paranoia.hash",
    "content": "# Locally computed:\nsha256 33b1cf305ccfbfd03b43936975615000ce538b119989c4bec469577570b60e8a  libcdio-paranoia-10.2+2.0.1.tar.bz2\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/libcdio-paranoia/libcdio-paranoia.mk",
    "content": "################################################################################\n#\n# libcdio-paranoia\n#\n################################################################################\n\nLIBCDIO_PARANOIA_VERSION = 10.2+2.0.1\nLIBCDIO_PARANOIA_SOURCE = libcdio-paranoia-$(LIBCDIO_PARANOIA_VERSION).tar.bz2\nLIBCDIO_PARANOIA_SITE = $(BR2_GNU_MIRROR)/libcdio\nLIBCDIO_PARANOIA_LICENSE = GPL-3.0+\nLIBCDIO_PARANOIA_LICENSE_FILES = COPYING\nLIBCDIO_PARANOIA_INSTALL_STAGING = YES\nLIBCDIO_PARANOIA_DEPENDENCIES = host-pkgconf libcdio\nLIBCDIO_PARANOIA_CONF_OPTS = --disable-example-progs\n\nifeq ($(BR2_INSTALL_LIBSTDCPP),)\nLIBCDIO_PARANOIA_CONF_OPTS += --disable-cxx\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libcec/Config.in",
    "content": "config BR2_PACKAGE_LIBCEC\n\tbool \"libcec\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\tselect BR2_PACKAGE_LIBPLATFORM\n\thelp\n\t  libcec allows you in combination with the right hardware to\n\t  control your home theater devices with your TV remote\n\t  control utilizing existing HDMI cabling.\n\n\t  http://libcec.pulse-eight.com\n\ncomment \"libcec needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 4.7\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libcec/libcec.hash",
    "content": "# Locally computed\nsha256  090696d7a4fb772d7acebbb06f91ab92e025531c7c91824046b9e4e71ecb3377  libcec-6.0.2.tar.gz\nsha256  0137261d24ce001fc5237aacddd267533e0f150ac23cf21acffea599f7358f7a  COPYING\n"
  },
  {
    "path": "package/libcec/libcec.mk",
    "content": "################################################################################\n#\n# libcec\n#\n################################################################################\n\nLIBCEC_VERSION = 6.0.2\nLIBCEC_SITE = $(call github,Pulse-Eight,libcec,libcec-$(LIBCEC_VERSION))\nLIBCEC_LICENSE = GPL-2.0+\nLIBCEC_LICENSE_FILES = COPYING\n\nLIBCEC_INSTALL_STAGING = YES\nLIBCEC_DEPENDENCIES = host-pkgconf libplatform\n\nifeq ($(BR2_PACKAGE_LOCKDEV),y)\nLIBCEC_DEPENDENCIES += lockdev\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nLIBCEC_DEPENDENCIES += udev\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)\nLIBCEC_DEPENDENCIES += host-swig $(if $(BR2_PACKAGE_PYTHON3),python3,python)\nendif\n\nifeq ($(BR2_PACKAGE_RPI_USERLAND),y)\nLIBCEC_DEPENDENCIES += rpi-userland\nLIBCEC_CONF_OPTS += \\\n\t-DCMAKE_C_FLAGS=\"$(TARGET_CFLAGS) -lvcos -lvchiq_arm\" \\\n\t-DCMAKE_CXX_FLAGS=\"$(TARGET_CXXFLAGS) \\\n\t\t-I$(STAGING_DIR)/usr/include/interface/vmcs_host/linux \\\n\t\t-I$(STAGING_DIR)/usr/include/interface/vcos/pthreads\"\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)\nLIBCEC_DEPENDENCIES += xlib_libXrandr\nendif\n\n# Disable information about how libCEC is compiled.\nLIBCEC_CONF_OPTS += -DHAVE_GIT_BIN=\"\" \\\n\t-DHAVE_DATE_BIN=\"\" \\\n\t-DHAVE_WHOAMI_BIN=\"\" \\\n\t-DHAVE_HOSTNAME_BIN=\"\" \\\n\t-DHAVE_UNAME_BIN=\"\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libcgi/Config.in",
    "content": "config BR2_PACKAGE_LIBCGI\n\tbool \"libcgi\"\n\thelp\n\t  LibCGI is a library written from scratch to easily make\n\t  CGI applications in C.\n\n\t  There are a lot of functions like string manipulation,\n\t  session and cookie support, GET and POST methods manipulation\n\t  etc..., to help you to quickly write powerful CGI programs.\n\n\t  https://github.com/rafaelsteil/libcgi/\n"
  },
  {
    "path": "package/libcgi/libcgi.hash",
    "content": "# From https://github.com/rafaelsteil/libcgi/releases/download/v1.3.0/libcgi-1.3.0.tar.gz.md5\nmd5 6efdc968bdf986832b7e220d1b914e57  libcgi-1.3.0.tar.gz\n# From https://github.com/rafaelsteil/libcgi/releases/download/v1.3.0/libcgi-1.3.0.tar.gz.sha256\nsha256  d932f380b1a5dbfbddffaa76fac71bf505a9585d441c9ae86bfbf76033d9d8df  libcgi-1.3.0.tar.gz\n\n# Hash for license file:\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSES/LGPL-2.1.txt\nsha256  f32c31e26ec840753a8cd47cd2681e48be4cee853212d16a4b1d85ac4d677669  LICENSES/MIT.txt\n"
  },
  {
    "path": "package/libcgi/libcgi.mk",
    "content": "################################################################################\n#\n# libcgi\n#\n################################################################################\n\nLIBCGI_VERSION = 1.3.0\nLIBCGI_SITE = https://github.com/rafaelsteil/libcgi/releases/download/v$(LIBCGI_VERSION)\n\nLIBCGI_INSTALL_STAGING = YES\nLIBCGI_LICENSE = LGPL-2.1+, MIT (base64.c)\nLIBCGI_LICENSE_FILES = LICENSES/LGPL-2.1.txt LICENSES/MIT.txt\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libcgicc/0001-disable-documentation-option.patch",
    "content": "Index: cgicc-3.2.9/Makefile.am\n===================================================================\n--- cgicc-3.2.9.orig/Makefile.am\t2010-02-25 16:34:06.000000000 +0100\n+++ cgicc-3.2.9/Makefile.am\t2010-02-25 16:34:14.000000000 +0100\n@@ -8,9 +8,15 @@\n DEMO =\n endif\n \n+if DOC\n+DOCDIR = doc\n+else\n+DOC =\n+endif\n+\n ACLOCAL_AMFLAGS= \n \n-SUBDIRS = cgicc doc support $(DEMO)\n+SUBDIRS = cgicc $(DOCDIR) support $(DEMO)\n \n CLEANFILES = *~\n \nIndex: cgicc-3.2.9/configure.ac\n===================================================================\n--- cgicc-3.2.9.orig/configure.ac\t2010-02-25 16:34:06.000000000 +0100\n+++ cgicc-3.2.9/configure.ac\t2010-02-25 16:45:46.000000000 +0100\n@@ -17,9 +17,23 @@\n AC_PROG_CXX\n AC_PROG_INSTALL\n AC_PROG_LIBTOOL\n-AC_CHECK_PROG(DOXYGEN, doxygen, doxygen, /bin/echo)\n \n \n+AC_ARG_ENABLE(doc, \n+  [  --enable-doc          build doc [[default=yes]]],\n+  [case \"${enableval}\" in\n+    yes) cgicc_doc=yes ;;\n+    no)  cgicc_doc=no ;;\n+    *) AC_MSG_ERROR(bad value ${enableval} for --enable-doc) ;;\n+  esac], cgicc_doc=yes)\n+\n+if test \"$cgicc_doc\" = yes; then\n+ AC_CHECK_PROG(DOXYGEN, doxygen, doxygen)\n+ if test -z \"$DOXYGEN\" ; then\n+   AC_MSG_ERROR([Doxygen is required to build the documentation])\n+ fi\n+fi\n+AM_CONDITIONAL(DOC, test \"$cgicc_doc\" = yes)\n \n dnl Determine host system type\n \n"
  },
  {
    "path": "package/libcgicc/Config.in",
    "content": "config BR2_PACKAGE_LIBCGICC\n\tbool \"libcgicc\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  GNU cgicc is a C++ class library that greatly simplifies\n\t  the creation of CGI applications for the World Wide Web.\n\n\t  http://www.cgicc.com\n\ncomment \"libcgicc needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/libcgicc/libcgicc.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\t2a17b976248de03447f9e36d6ce18a80749990d8543e2dfeea09c413eb67f7f0\tcgicc-3.2.19.tar.gz\n\n# Hash for license files:\nsha256  a2e480f5e8afd7c587a3c0ac2ed3b73ed4b10fa3a553dea26e7b661c7cedda72  COPYING.LIB\nsha256  0fd15977dc962abf3eced509b1cf5356f9784939742d67a635671141023a11da  COPYING.DOC\n"
  },
  {
    "path": "package/libcgicc/libcgicc.mk",
    "content": "################################################################################\n#\n# libcgicc\n#\n################################################################################\n\nLIBCGICC_VERSION = 3.2.19\nLIBCGICC_SITE = $(BR2_GNU_MIRROR)/cgicc\nLIBCGICC_SOURCE = cgicc-$(LIBCGICC_VERSION).tar.gz\nLIBCGICC_LICENSE = LGPL-3.0+ (library), GFDL-1.2+ (docs)\nLIBCGICC_LICENSE_FILES = COPYING.LIB COPYING.DOC\nLIBCGICC_INSTALL_STAGING = YES\nLIBCGICC_AUTORECONF = YES\nLIBCGICC_CONFIG_SCRIPTS = cgicc-config\nLIBCGICC_CONF_OPTS = \\\n\t--disable-demos \\\n\t--disable-doc\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libcgroup/Config.in",
    "content": "config BR2_PACKAGE_LIBCGROUP\n\tbool \"libcgroup\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\t# libcgroup uses <fts.h> which is not included by default in uClibc\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  libcgroup is a library that abstracts the control\n\t  group file system in Linux.\n\n\t  http://libcg.sourceforge.net/\n\nif BR2_PACKAGE_LIBCGROUP\n\nconfig BR2_PACKAGE_LIBCGROUP_TOOLS\n\tbool \"install tools\"\n\thelp\n\t  Include a set of command-line tools for managing cgroups.\n\nendif\n\ncomment \"libcgroup needs a glibc toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/libcgroup/libcgroup.hash",
    "content": "# From https://github.com/libcgroup/libcgroup/releases/download/v0.42.2/libcgroup-0.42.2.tar.bz2.sha256\nsha256  18939381324d418e11be4f5fdca37b01652c18917bfaf1f6b0c505f157e18d07  libcgroup-0.42.2.tar.bz2\n\n# Hash for license file\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING\n"
  },
  {
    "path": "package/libcgroup/libcgroup.mk",
    "content": "################################################################################\n#\n# libcgroup\n#\n################################################################################\n\nLIBCGROUP_VERSION = 0.42.2\nLIBCGROUP_SOURCE = libcgroup-$(LIBCGROUP_VERSION).tar.bz2\nLIBCGROUP_SITE = https://github.com/libcgroup/libcgroup/releases/download/v$(LIBCGROUP_VERSION)\nLIBCGROUP_LICENSE = LGPL-2.1\nLIBCGROUP_LICENSE_FILES = COPYING\nLIBCGROUP_CPE_ID_VENDOR = libcgroup_project\nLIBCGROUP_DEPENDENCIES = host-bison host-flex\nLIBCGROUP_INSTALL_STAGING = YES\n\n# Undefining _FILE_OFFSET_BITS here because of a \"bug\" with glibc fts.h\n# large file support. See https://bugzilla.redhat.com/show_bug.cgi?id=574992\n# for more information.\nLIBCGROUP_CONF_ENV = \\\n\tCXXFLAGS=\"$(TARGET_CXXFLAGS) -U_FILE_OFFSET_BITS\" \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -U_FILE_OFFSET_BITS\"\n\nLIBCGROUP_CONF_OPTS = \\\n\t--disable-daemon \\\n\t--disable-initscript-install\n\nifeq ($(BR2_PACKAGE_LIBCGROUP_TOOLS),y)\nLIBCGROUP_CONF_OPTS += --enable-tools\nelse\nLIBCGROUP_CONF_OPTS += --disable-tools\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nLIBCGROUP_DEPENDENCIES += linux-pam\nLIBCGROUP_CONF_OPTS += --enable-pam\nelse\nLIBCGROUP_CONF_OPTS += --disable-pam\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libclc/Config.in",
    "content": "config BR2_PACKAGE_LIBCLC\n\tbool \"libclc\"\n\tdepends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS\n\thelp\n\t  libclc is an open source, BSD licensed implementation of\n\t  the library requirements of the OpenCL C programming language,\n\t  as specified by the OpenCL 1.1 Specification.\n\n\t  http://libclc.llvm.org/\n"
  },
  {
    "path": "package/libclc/libclc.hash",
    "content": "# locally calculated\nsha256  54d7ae523aabf68d533011739d6c01546cae0c294442d0f44fd657c046cb707d  libclc-d1cbc92e2ceee59963f5c3a576382e5bba31f060-br1.tar.gz\nsha256  3c536c052db9afd997809e38785c9f2a9e54e2892330fa7c5b438e18a7413479  LICENSE.TXT\n"
  },
  {
    "path": "package/libclc/libclc.mk",
    "content": "################################################################################\n#\n# libclc\n#\n################################################################################\n\n# Use the latest commit from release_90 branch.\nLIBCLC_VERSION = d1cbc92e2ceee59963f5c3a576382e5bba31f060\nLIBCLC_SITE = https://github.com/llvm-mirror/libclc\nLIBCLC_SITE_METHOD = git\nLIBCLC_LICENSE = Apache-2.0 with exceptions or MIT\nLIBCLC_LICENSE_FILES = LICENSE.TXT\n\nLIBCLC_DEPENDENCIES = host-clang host-llvm\nLIBCLC_INSTALL_STAGING = YES\n\n# C++ compiler is used to build a small tool (prepare-builtins) for the host.\n# It must be built with the C++ compiler from the host.\n#\n# The headers are installed in /usr/share and not /usr/include,\n# because they are needed at runtime on the target to build the OpenCL\n# kernels.\nLIBCLC_CONF_OPTS = \\\n\t--with-llvm-config=$(HOST_DIR)/usr/bin/llvm-config \\\n\t--prefix=/usr \\\n\t--includedir=/usr/share \\\n\t--pkgconfigdir=/usr/lib/pkgconfig \\\n\t--with-cxx-compiler=$(HOSTCXX_NOCCACHE)\n\ndefine LIBCLC_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure.py $(LIBCLC_CONF_OPTS))\nendef\n\ndefine LIBCLC_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine LIBCLC_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\ndefine LIBCLC_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libcli/Config.in",
    "content": "config BR2_PACKAGE_LIBCLI\n\tbool \"libcli\"\n\thelp\n\t  Libcli provides a shared library for including a Cisco-like\n\t  command-line interface into other software. It's a telnet\n\t  interface which supports command-line editing, history,\n\t  authentication and callbacks for a user-definable function\n\t  tree.\n\n\t  https://github.com/dparrish/libcli\n"
  },
  {
    "path": "package/libcli/libcli.hash",
    "content": "# Locally calculated\nsha256  43efade6f3deb621e1e226b7854274a869fca57e12e74e61c5496d5dea7c445d  libcli-1.10.4.tar.gz\nsha256  376b54d4c5f4aa99421823fa4da93e3ab73096fce2400e89858632aa7da24a14  COPYING\n"
  },
  {
    "path": "package/libcli/libcli.mk",
    "content": "################################################################################\n#\n# libcli\n#\n################################################################################\n\nLIBCLI_VERSION = 1.10.4\nLIBCLI_SITE = $(call github,dparrish,libcli,V$(LIBCLI_VERSION))\nLIBCLI_LICENSE = LGPL-2.1\nLIBCLI_LICENSE_FILES = COPYING\nLIBCLI_INSTALL_STAGING = YES\n\n# We will pass optimisation level via CFLAGS so remove libcli default\nLIBCLI_MAKE_ARGS += OPTIM=\n\n# We can't run the test harness\nLIBCLI_MAKE_ARGS += TESTS=\n\n# Disable the static library for shared only build\nifeq ($(BR2_SHARED_LIBS),y)\nLIBCLI_MAKE_ARGS += STATIC_LIB=\nendif\n\n# Disable the shared library for static only build\nifeq ($(BR2_STATIC_LIBS),y)\nLIBCLI_MAKE_ARGS += DYNAMIC_LIB=\nendif\n\ndefine LIBCLI_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\t$(LIBCLI_MAKE_ARGS)\nendef\n\ndefine LIBCLI_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\t$(LIBCLI_MAKE_ARGS) DESTDIR=$(STAGING_DIR) PREFIX=/usr install\nendef\n\ndefine LIBCLI_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\t$(LIBCLI_MAKE_ARGS) DESTDIR=$(TARGET_DIR) PREFIX=/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libcoap/Config.in",
    "content": "config BR2_PACKAGE_LIBCOAP\n\tbool \"libcoap\"\n\thelp\n\t  libcoap is a C implementation of a lightweight\n\t  application-protocol for devices that are constrained their\n\t  resources such as computing power, RF range, memory, bandwith,\n\t  or network packet sizes. This protocol, CoAP, is standardized\n\t  by the IETF as RFC 7252. For further information related to\n\t  CoAP, see <http://coap.technology>.\n\n\t  https://github.com/obgm/libcoap\n"
  },
  {
    "path": "package/libcoap/libcoap.hash",
    "content": "# Locally calculated\nsha256  29a0394a265d3febee41e5e2dc03d34292a0aede37f5f80334e529ac0dab2321  libcoap-4.2.1.tar.gz\nsha256  09dd86a017bad210527085008cbf706609c58210897b69845af14099577e7eb7  COPYING\nsha256  c51e85271aca3fbdd79bb4ee45dcfd854724538dad83b70afbbdfc62415e3e7f  LICENSE\n"
  },
  {
    "path": "package/libcoap/libcoap.mk",
    "content": "################################################################################\n#\n# libcoap\n#\n################################################################################\n\nLIBCOAP_VERSION = 4.2.1\nLIBCOAP_SITE = $(call github,obgm,libcoap,v$(LIBCOAP_VERSION))\nLIBCOAP_INSTALL_STAGING = YES\nLIBCOAP_LICENSE = BSD-2-Clause\nLIBCOAP_LICENSE_FILES = COPYING LICENSE\nLIBCOAP_DEPENDENCIES = host-pkgconf\nLIBCOAP_CONF_OPTS = --disable-examples --without-tinydtls\nLIBCOAP_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nLIBCOAP_DEPENDENCIES += gnutls\nLIBCOAP_CONF_OPTS += --enable-dtls --with-gnutls --without-openssl\nelse ifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBCOAP_DEPENDENCIES += openssl\nLIBCOAP_CONF_OPTS += --enable-dtls --without-gnutls --with-openssl\nelse\nLIBCOAP_CONF_OPTS += --disable-dtls\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libcodec2/Config.in",
    "content": "config BR2_PACKAGE_LIBCODEC2\n\tbool \"libcodec2\"\n\thelp\n\t  Codec2 is an open source low bit rate speech codec designed\n\t  for communications quality speech between 700 and 3200 bit/s.\n\n\t  http://rowetel.com/codec2.html\n\nif BR2_PACKAGE_LIBCODEC2\n\nconfig BR2_PACKAGE_LIBCODEC2_EXAMPLES\n\tbool \"libcodec2_examples\"\n\thelp\n\t  Install Codec2 examples.\n\nendif\n"
  },
  {
    "path": "package/libcodec2/libcodec2.hash",
    "content": "# Locally computed\nsha256 19181a446f4df3e6d616b50cabdac4485abb9cd3242cf312a0785f892ed4c76c  libcodec2-0.9.2.tar.gz\nsha256 9ebb6f82b7380a62ac74c5f0322c88e6744dedf2ebe1f54d6f088282b39844bf  COPYING\n"
  },
  {
    "path": "package/libcodec2/libcodec2.mk",
    "content": "################################################################################\n#\n# libcodec2\n#\n################################################################################\n\nLIBCODEC2_VERSION = 0.9.2\nLIBCODEC2_SITE = $(call github,drowe67,codec2,v$(LIBCODEC2_VERSION))\nLIBCODEC2_LICENSE = LGPL-2.1\nLIBCODEC2_LICENSE_FILES = COPYING\nLIBCODEC2_INSTALL_STAGING = YES\nLIBCODEC2_SUPPORTS_IN_SOURCE_BUILD = NO\nLIBCODEC2_CONF_OPTS = -DUNITTEST=OFF\n\nifeq ($(BR2_PACKAGE_LIBCODEC2_EXAMPLES),y)\nLIBCODEC2_CONF_OPTS += -DINSTALL_EXAMPLES=ON\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libcofi/Config.in",
    "content": "config BR2_PACKAGE_LIBCOFI\n\tbool \"libcofi\"\n\tdepends on BR2_arm\n\t# builds a shared library\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  A replacement for memcpy and memset functionality for the\n\t  Raspberry Pi with the intention of gaining greater\n\t  performance.\n\n\t  https://github.com/simonjhall/copies-and-fills\n\ncomment \"libcofi needs a toolchain w/ dynamic library\"\n\tdepends on BR2_arm\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libcofi/libcofi.hash",
    "content": "# locally computed\nsha256  72ec89c19267612b316ec9c5835c07212b8f0a377c5b4c20b6e46e69a6e4a5e5  libcofi-7313fbe12b0593034d0a1b606bf33c7cf4ababce.tar.gz\nsha256  1a8203e5d11f0841235cf30265b1ffb19c0d9c4a6d2889554cbeccaf9f09b327  README.md\n"
  },
  {
    "path": "package/libcofi/libcofi.mk",
    "content": "################################################################################\n#\n# libcofi\n#\n################################################################################\n\nLIBCOFI_VERSION = 7313fbe12b0593034d0a1b606bf33c7cf4ababce\nLIBCOFI_SITE = $(call github,simonjhall,copies-and-fills,$(LIBCOFI_VERSION))\nLIBCOFI_LICENSE = LGPL-2.1\nLIBCOFI_LICENSE_FILES = README.md\n\ndefine LIBCOFI_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine LIBCOFI_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/libcofi_rpi.so $(TARGET_DIR)/usr/lib/libcofi_rpi.so\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libconfig/Config.in",
    "content": "config BR2_PACKAGE_LIBCONFIG\n\tbool \"libconfig\"\n\thelp\n\t  Libconfig is a simple library for manipulating structured\n\t  configuration files. The file format is more compact and more\n\t  readable than XML. And unlike XML, it is type-aware, so it is\n\t  not necessary to do string parsing in application code.\n\n\t  https://hyperrealm.github.io/libconfig/\n"
  },
  {
    "path": "package/libconfig/libconfig.hash",
    "content": "# Locally computed:\nsha256  545166d6cac037744381d1e9cc5a5405094e7bfad16a411699bcff40bbb31ee7  libconfig-1.7.3.tar.gz\nsha256  d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f  COPYING.LIB\n"
  },
  {
    "path": "package/libconfig/libconfig.mk",
    "content": "################################################################################\n#\n# libconfig\n#\n################################################################################\n\nLIBCONFIG_VERSION = 1.7.3\nLIBCONFIG_SITE = https://github.com/hyperrealm/libconfig/releases/download/v$(LIBCONFIG_VERSION)\nLIBCONFIG_LICENSE = LGPL-2.1+\nLIBCONFIG_LICENSE_FILES = COPYING.LIB\nLIBCONFIG_INSTALL_STAGING = YES\nLIBCONFIG_CONF_OPTS = --disable-examples --disable-tests\n\nifneq ($(BR2_INSTALL_LIBSTDCPP),y)\nLIBCONFIG_CONF_OPTS += --disable-cxx\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libconfuse/Config.in",
    "content": "config BR2_PACKAGE_LIBCONFUSE\n\tbool \"libconfuse\"\n\thelp\n\t  LibConfuse is a configuration file parser library written in\n\t  C. It supports sections and (lists of) values (strings,\n\t  integers, floats, booleans or other sections), as well as some\n\t  other features (such as single/double-quoted strings,\n\t  environment variable expansion, functions and nested include\n\t  statements.\n\n\t  https://github.com/martinh/libconfuse/\n"
  },
  {
    "path": "package/libconfuse/libconfuse.hash",
    "content": "# From https://github.com/martinh/libconfuse/releases/download/v3.3/confuse-3.3.tar.xz.md5\nmd5  a183cef2cecdd3783436ff8de500d274  confuse-3.3.tar.xz\n# Locally computed\nsha256  1dd50a0320e135a55025b23fcdbb3f0a81913b6d0b0a9df8cc2fdf3b3dc67010  confuse-3.3.tar.xz\nsha256  dc3ff4b62f851dd2e94a151061ffeb7d28ddfc880a442068dc5283dbaa927306  LICENSE\n"
  },
  {
    "path": "package/libconfuse/libconfuse.mk",
    "content": "################################################################################\n#\n# libconfuse\n#\n################################################################################\n\nLIBCONFUSE_VERSION = 3.3\nLIBCONFUSE_SOURCE = confuse-$(LIBCONFUSE_VERSION).tar.xz\nLIBCONFUSE_SITE = https://github.com/martinh/libconfuse/releases/download/v$(LIBCONFUSE_VERSION)\nLIBCONFUSE_INSTALL_STAGING = YES\nLIBCONFUSE_CONF_OPTS = --disable-rpath\nLIBCONFUSE_LICENSE = ISC\nLIBCONFUSE_LICENSE_FILES = LICENSE\nLIBCONFUSE_CPE_ID_VENDOR = libconfuse_project\nLIBCONFUSE_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libcorrect/0001-CMakeLists.txt-conditionally-use-Wpedantic.patch",
    "content": "From 8fc28b4c4c01581b25220fdbc1eeda196e399256 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Wed, 10 Oct 2018 09:28:00 +0200\nSubject: [PATCH] CMakeLists.txt: conditionally use -Wpedantic\n\n-Wpedantic is only provided by gcc >= 4.8. Since showing pedantic\nwarnings is not really mandatory, let's only use this option when the\ncompiler supports it.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nUpstream: https://github.com/quiet/libcorrect/pull/25\n---\n CMakeLists.txt | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 193f311..e570198 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -3,13 +3,18 @@ project(Correct C)\n include(CheckLibraryExists)\n include(CheckIncludeFiles)\n include(CheckCSourceCompiles)\n+include(CheckCCompilerFlag)\n \n if(MSVC)\n set(LIBM \"\")\n set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} /W4\")\n else(MSVC)\n set(LIBM \"m\")\n-set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -fPIC -std=c99 -Wpedantic -Wall\")\n+set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -fPIC -std=c99 -Wall\")\n+check_c_compiler_flag(-Wpedantic COMPILER_SUPPORTS_WPEDANTIC)\n+if(COMPILER_SUPPORTS_WPEDANTIC)\n+set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -Wpedantic\")\n+endif()\n if(CMAKE_BUILD_TYPE STREQUAL \"Debug\")\n     set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -g3 -O0 -fsanitize=address\")\n     set(CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS} -Wl,-no_pie,\")\n-- \n2.14.4\n\n"
  },
  {
    "path": "package/libcorrect/0002-CMakeLists.txt-conditionally-use-fsanitize-address.patch",
    "content": "From 1a3bb66608b2f96407d14fe13b782626990060f1 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 20 Nov 2018 08:20:13 +0100\nSubject: [PATCH] CMakeLists.txt: conditionally use -fsanitize=address\n\nCheck that compiler supports -fsanitize=address before using it\n\nFixes:\n - http://autobuild.buildroot.net/results/221d6a418e75b39fe645c3a56cee676518d2cff6\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n CMakeLists.txt | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 2e8e07e..c3f71ce 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -17,7 +17,11 @@ if(COMPILER_SUPPORTS_WPEDANTIC)\n set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -Wpedantic\")\n endif()\n if(CMAKE_BUILD_TYPE STREQUAL \"Debug\")\n-    set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -g3 -O0 -fsanitize=address\")\n+    set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -g3 -O0\")\n+    check_c_compiler_flag(\"-fsanitize=address -Werror\" COMPILER_SUPPORTS_SANITIZE_ADDRESS)\n+    if(COMPILER_SUPPORTS_SANITIZE_ADDRESS)\n+        set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -fsanitize=address\")\n+    endif()\n     set(CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS} -Wl,-no_pie,\")\n else()\n   if(\"${CMAKE_C_COMPILER_ID}\" STREQUAL \"Clang\")\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/libcorrect/Config.in",
    "content": "config BR2_PACKAGE_LIBCORRECT\n\tbool \"libcorrect\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  A C library for Forward Error Correction, providing\n\t  convolutional codes and Reed-Solomon codes. It is part\n\t  of the Quiet Modem Project.\n\n\t  https://github.com/quiet/libcorrect\n\ncomment \"libcorrect needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libcorrect/libcorrect.hash",
    "content": "# Locally calculated\nsha256\t79861750540fb3a1cc501ee217cb4d1febc4855f3fb82e5eb60906eec5379890  libcorrect-ce6c17f1f988765ae3695315d7cce1f2a2e6cf0d.tar.gz\nsha256\t135138cd4304aa637836758dc5edfb5f21b7d09ecc637d25288d206b151a5768  LICENSE\n"
  },
  {
    "path": "package/libcorrect/libcorrect.mk",
    "content": "################################################################################\n#\n# libcorrect\n#\n################################################################################\n\nLIBCORRECT_VERSION = ce6c17f1f988765ae3695315d7cce1f2a2e6cf0d\nLIBCORRECT_SITE = $(call github,quiet,libcorrect,$(LIBCORRECT_VERSION))\nLIBCORRECT_LICENSE = BSD-3-Clause\nLIBCORRECT_LICENSE_FILES = LICENSE\nLIBCORRECT_INSTALL_STAGING = YES\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libcpprestsdk/Config.in",
    "content": "config BR2_PACKAGE_LIBCPPRESTSDK\n\tbool \"libcpprestsdk\"\n\tdepends on BR2_ENABLE_LOCALE\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR # boost\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic, boost-filesystem\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_ATOMIC\n\tselect BR2_PACKAGE_BOOST_CHRONO\n\tselect BR2_PACKAGE_BOOST_DATE_TIME\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\tselect BR2_PACKAGE_BOOST_RANDOM\n\tselect BR2_PACKAGE_BOOST_REGEX\n\tselect BR2_PACKAGE_BOOST_THREAD\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  The C++ REST SDK is a Microsoft project for cloud-based\n\t  client-server communication in native code using a modern\n\t  asynchronous C++ API design. This project aims to help C++\n\t  developers connect to and interact with services.\n\n\t  https://github.com/Microsoft/cpprestsdk\n\ncomment \"libcpprestsdk needs a toolchain w/ NPTL, C++, wchar, locale\"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\t!BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_USE_WCHAR || !BR2_ENABLE_LOCALE\n\ncomment \"libcpprestsdk needs exception_ptr\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/libcpprestsdk/libcpprestsdk.hash",
    "content": "# Locally calculated\nsha256  6bd74a637ff182144b6a4271227ea8b6b3ea92389f88b25b215e6f94fd4d41cb  libcpprestsdk-2.10.18.tar.gz\nsha256  5c191789f502ac87df83b57008d2fc3e47fbf31315381b5bc4309f6602d0fe97  license.txt\n"
  },
  {
    "path": "package/libcpprestsdk/libcpprestsdk.mk",
    "content": "################################################################################\n#\n# libcpprestsdk\n#\n################################################################################\n\nLIBCPPRESTSDK_VERSION = 2.10.18\nLIBCPPRESTSDK_SITE = $(call github,Microsoft,cpprestsdk,$(LIBCPPRESTSDK_VERSION))\nLIBCPPRESTSDK_LICENSE = MIT\nLIBCPPRESTSDK_LICENSE_FILES = license.txt\nLIBCPPRESTSDK_SUBDIR = Release\nLIBCPPRESTSDK_INSTALL_STAGING = YES\nLIBCPPRESTSDK_DEPENDENCIES += host-pkgconf boost openssl\nLIBCPPRESTSDK_CONF_OPTS = -DWERROR=OFF -DBUILD_SAMPLES=OFF\n\nifeq ($(BR2_STATIC_LIBS),y)\nLIBCPPRESTSDK_CONF_OPTS += \\\n\t-DBoost_USE_STATIC_LIBS=ON \\\n\t-DBoost_USE_STATIC_RUNTIME=ON\nendif\n\nLIBCPPRESTSDK_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nLIBCPPRESTSDK_CXXFLAGS += -latomic\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLIBCPPRESTSDK_DEPENDENCIES += zlib\nLIBCPPRESTSDK_CONF_OPTS += -DCPPREST_EXCLUDE_COMPRESSION=OFF\n# brotli needs compression\nifeq ($(BR2_PACKAGE_BROTLI),y)\nLIBCPPRESTSDK_DEPENDENCIES += brotli\nLIBCPPRESTSDK_CONF_OPTS += -DCPPREST_EXCLUDE_BROTLI=OFF\nelse\nLIBCPPRESTSDK_CONF_OPTS += -DCPPREST_EXCLUDE_BROTLI=ON\nendif\nelse\nLIBCPPRESTSDK_CONF_OPTS += -DCPPREST_EXCLUDE_COMPRESSION=ON\nendif\n\nifeq ($(BR2_PACKAGE_WEBSOCKETPP),y)\nLIBCPPRESTSDK_DEPENDENCIES += websocketpp\nLIBCPPRESTSDK_CONF_OPTS += -DCPPREST_EXCLUDE_WEBSOCKETS=OFF\nelse\nLIBCPPRESTSDK_CONF_OPTS += -DCPPREST_EXCLUDE_WEBSOCKETS=ON\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nLIBCPPRESTSDK_CXXFLAGS += -O0\nendif\n\nLIBCPPRESTSDK_CONF_OPTS += -DCMAKE_CXX_FLAGS=\"$(LIBCPPRESTSDK_CXXFLAGS)\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libcrossguid/Config.in",
    "content": "config BR2_PACKAGE_LIBCROSSGUID\n\tbool \"libcrossguid\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Lightweight cross platform C++ GUID/UUID library\n\n\t  https://github.com/graeme-hill/crossguid\n\ncomment \"libcrossguid needs a toolchain w/ C++, gcc >= 4.7\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/libcrossguid/libcrossguid.hash",
    "content": "# Locally calculated\nsha256  022c9f02cc36e865cd8fd0111a597ff2bd91988deeb348dbe2aba64aed1abd99  libcrossguid-8f399e8bd4252be9952f3dfa8199924cc8487ca4.tar.gz\nsha256  779e58787f966a1552f68d5ec041513cef68785dae4a519dbda7bc0b86eda20e  LICENSE\n"
  },
  {
    "path": "package/libcrossguid/libcrossguid.mk",
    "content": "################################################################################\n#\n# libcrossguid\n#\n################################################################################\n\nLIBCROSSGUID_VERSION = 8f399e8bd4252be9952f3dfa8199924cc8487ca4\nLIBCROSSGUID_SITE = $(call github,graeme-hill,crossguid,$(LIBCROSSGUID_VERSION))\nLIBCROSSGUID_LICENSE = MIT\nLIBCROSSGUID_LICENSE_FILES = LICENSE\nLIBCROSSGUID_INSTALL_STAGING = YES\n# only a static library\nLIBCROSSGUID_INSTALL_TARGET = NO\nLIBCROSSGUID_DEPENDENCIES = util-linux\n\ndefine LIBCROSSGUID_BUILD_CMDS\n\t(cd $(@D); $(TARGET_CXX) $(TARGET_CXXFLAGS) -std=c++11 -DGUID_LIBUUID \\\n\t\t-c guid.cpp -o guid.o)\n\t(cd $(@D); $(TARGET_AR) rvs libcrossguid.a guid.o)\nendef\n\ndefine LIBCROSSGUID_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 644 $(@D)/libcrossguid.a \\\n\t\t$(STAGING_DIR)/usr/lib/libcrossguid.a\n\t$(INSTALL) -D -m 644 $(@D)/guid.h $(STAGING_DIR)/usr/include/guid.h\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libcsv/Config.in",
    "content": "config BR2_PACKAGE_LIBCSV\n\tbool \"libcsv\"\n\thelp\n\t  libcsv is a small, simple and fast CSV library written in\n\t  pure ANSI C89 that can read and write CSV data. It provides\n\t  a straight-forward interface using callback functions to\n\t  handle parsed fields and rows and can parse improperly\n\t  formatted CSV files.\n\n\t  https://sourceforge.net/projects/libcsv/\n"
  },
  {
    "path": "package/libcsv/libcsv.hash",
    "content": "#locally computed\nsha256 d9c0431cb803ceb9896ce74f683e6e5a0954e96ae1d9e4028d6e0f967bebd7e4  libcsv-3.0.3.tar.gz\nsha256 6876b170378d38f65aadd271485f0a5c45beaa043a7d3de5e1636ec927922c83  COPYING.LESSER\n"
  },
  {
    "path": "package/libcsv/libcsv.mk",
    "content": "################################################################################\n#\n# libcsv\n#\n################################################################################\n\nLIBCSV_VERSION = 3.0.3\nLIBCSV_SITE = http://sourceforge.net/projects/libcsv/files\nLIBCSV_LICENSE = LGPL-2.1+\nLIBCSV_LICENSE_FILES = COPYING.LESSER\nLIBCSV_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libcue/Config.in",
    "content": "config BR2_PACKAGE_LIBCUE\n\tbool \"libcue\"\n\tselect BR2_PACKAGE_FLEX\n\thelp\n\t  CUE Sheet Parser Library\n\n\t  https://github.com/lipnitsk/libcue\n"
  },
  {
    "path": "package/libcue/libcue.hash",
    "content": "# Locally computed:\nsha256\tf27bc3ebb2e892cd9d32a7bee6d84576a60f955f29f748b9b487b173712f1200\tlibcue-2.2.1.tar.gz\nsha256\tc388d36583fa54e13b6d73ad924d0b68d073ed8a5771e17cb49104705df4504f\tLICENSE\n"
  },
  {
    "path": "package/libcue/libcue.mk",
    "content": "################################################################################\n#\n# libcue\n#\n################################################################################\n\nLIBCUE_VERSION = 2.2.1\nLIBCUE_SITE = $(call github,lipnitsk,libcue,v$(LIBCUE_VERSION))\nLIBCUE_LICENSE = GPL-2.0, BSD-2-Clause (rem.c)\nLIBCUE_LICENSE_FILES = LICENSE\nLIBCUE_DEPENDENCIES = host-bison host-flex flex\nLIBCUE_INSTALL_STAGING = YES\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libcuefile/0001-fix-static-link.patch",
    "content": "Fix static only build\n\nMake sure to build the shared library only if BUILD_SHARED_LIBS is\nON. Normally, CMake takes care of this automatically, but libcuefile\nwants to build both the shared and static variants, so the normal\nlogic of CMake doesn't apply.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/src/CMakeLists.txt\n===================================================================\n--- a/src/CMakeLists.txt\n+++ b/src/CMakeLists.txt\n@@ -4,7 +4,11 @@\n add_library(cuefile-static STATIC cd cdtext cue_parse cue_print cue_scan cuefile time toc toc_parse toc_print toc_scan)\n set_target_properties(cuefile-static PROPERTIES OUTPUT_NAME cuefile CLEAN_DIRECT_OUTPUT 1)\n \n+if (BUILD_SHARED_LIBS)\n add_library(cuefile-shared SHARED cd cdtext cue_parse cue_print cue_scan cuefile time toc toc_parse toc_print toc_scan)\n set_target_properties(cuefile-shared PROPERTIES OUTPUT_NAME cuefile CLEAN_DIRECT_OUTPUT 1 VERSION 0.0.0 SOVERSION 0)\n \n install(TARGETS cuefile-static cuefile-shared LIBRARY DESTINATION \"lib${LIB_SUFFIX}\" ARCHIVE DESTINATION \"lib${LIB_SUFFIX}\")\n+else (BUILD_SHARED_LIBS)\n+install(TARGETS cuefile-static LIBRARY DESTINATION \"lib${LIB_SUFFIX}\" ARCHIVE DESTINATION \"lib${LIB_SUFFIX}\")\n+endif (BUILD_SHARED_LIBS)\n"
  },
  {
    "path": "package/libcuefile/Config.in",
    "content": "config BR2_PACKAGE_LIBCUEFILE\n\tbool \"libcuefile\"\n\thelp\n\t  Cue File library from Musepack\n\n\t  http://www.musepack.net/\n"
  },
  {
    "path": "package/libcuefile/libcuefile.hash",
    "content": "# From https://www.musepack.net/index.php?pg=src\nmd5\t1a6ac52e1080fd54f0f59372345f1e4e\tlibcuefile_r475.tar.gz\n# Calculated based on the hash above\nsha256\tb681ca6772b3f64010d24de57361faecf426ee6182f5969fcf29b3f649133fe7\tlibcuefile_r475.tar.gz\n\n# Hash for license file:\nsha256\t32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670\tCOPYING\n"
  },
  {
    "path": "package/libcuefile/libcuefile.mk",
    "content": "################################################################################\n#\n# libcuefile\n#\n################################################################################\n\nLIBCUEFILE_VERSION = 475\nLIBCUEFILE_SITE = http://files.musepack.net/source\nLIBCUEFILE_SOURCE = libcuefile_r$(LIBCUEFILE_VERSION).tar.gz\nLIBCUEFILE_INSTALL_STAGING = YES\nLIBCUEFILE_LICENSE = GPL-2.0+\nLIBCUEFILE_LICENSE_FILES = COPYING\n\ndefine LIBCUEFILE_INSTALL_STAGING_INCLUDES\n\tcp -r $(@D)/include $(STAGING_DIR)/usr\nendef\n\ndefine LIBCUEFILE_INSTALL_TARGET_INCLUDES\n\tcp -r $(@D)/include $(TARGET_DIR)/usr\nendef\n\nLIBCUEFILE_POST_INSTALL_STAGING_HOOKS += LIBCUEFILE_INSTALL_STAGING_INCLUDES\nLIBCUEFILE_POST_INSTALL_TARGET_HOOKS += LIBCUEFILE_INSTALL_TARGET_INCLUDES\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libcurl/Config.in",
    "content": "config BR2_PACKAGE_LIBCURL\n\tbool \"libcurl\"\n\thelp\n\t  cURL is a tool for getting files from FTP, HTTP, Gopher,\n\t  Telnet, and Dict servers, using any of the supported\n\t  protocols.\n\n\t  https://curl.se/\n\nif BR2_PACKAGE_LIBCURL\n\nconfig BR2_PACKAGE_LIBCURL_CURL\n\tbool \"curl binary\"\n\thelp\n\t  Install curl binary as well\n\nconfig BR2_PACKAGE_LIBCURL_VERBOSE\n\tbool \"verbose strings\"\n\thelp\n\t  Enable verbose text strings\n\nconfig BR2_PACKAGE_LIBCURL_PROXY_SUPPORT\n\tbool \"proxy support\"\n\tdefault y\n\thelp\n\t  Enable proxy support.\n\nconfig BR2_PACKAGE_LIBCURL_COOKIES_SUPPORT\n\tbool \"cookies support\"\n\tdefault y\n\thelp\n\t  Enable support for cookies.\n\nconfig BR2_PACKAGE_LIBCURL_EXTRA_PROTOCOLS_FEATURES\n\tbool \"enable extra protocols and features\"\n\tdefault y\n\thelp\n\t  Enable the following extra protocols and features:\n\t  - LDAP / LDAPS\n\t  - POP3 / IMAP / SMTP\n\t  - Telnet\n\t  - TFTP\n\t  - RTSP\n\t  - SMB / CIFS\n\t  - DICT\n\t  - Gopher\n\nchoice\n\tprompt \"SSL/TLS library to use\"\n\nconfig BR2_PACKAGE_LIBCURL_OPENSSL\n\tbool \"OpenSSL\"\n\tdepends on BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\nconfig BR2_PACKAGE_LIBCURL_BEARSSL\n\tbool \"BearSSL\"\n\tdepends on BR2_PACKAGE_BEARSSL\n\nconfig BR2_PACKAGE_LIBCURL_GNUTLS\n\tbool \"GnuTLS\"\n\tdepends on BR2_PACKAGE_GNUTLS\n\nconfig BR2_PACKAGE_LIBCURL_LIBNSS\n\tbool \"NSS\"\n\tdepends on BR2_PACKAGE_LIBNSS\n\nconfig BR2_PACKAGE_LIBCURL_MBEDTLS\n\tbool \"mbed TLS\"\n\tdepends on BR2_PACKAGE_MBEDTLS\n\nconfig BR2_PACKAGE_LIBCURL_WOLFSSL\n\tbool \"WolfSSL\"\n\tdepends on BR2_PACKAGE_WOLFSSL\n\tselect BR2_PACKAGE_WOLFSSL_ALL\n\nconfig BR2_PACKAGE_LIBCURL_TLS_NONE\n\tbool \"None\"\n\nendchoice\n\nendif\n"
  },
  {
    "path": "package/libcurl/libcurl.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://curl.se/download/curl-7.81.0.tar.xz.asc\n# signed with key 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2\nsha256  a067b688d1645183febc31309ec1f3cdce9213d02136b6a6de3d50f69c95a7d3  curl-7.81.0.tar.xz\nsha256  6fd1a1c008b5ef4c4741dd188c3f8af6944c14c25afa881eb064f98fb98358e7  COPYING\n"
  },
  {
    "path": "package/libcurl/libcurl.mk",
    "content": "################################################################################\n#\n# libcurl\n#\n################################################################################\n\nLIBCURL_VERSION = 7.81.0\nLIBCURL_SOURCE = curl-$(LIBCURL_VERSION).tar.xz\nLIBCURL_SITE = https://curl.se/download\nLIBCURL_DEPENDENCIES = host-pkgconf \\\n\t$(if $(BR2_PACKAGE_ZLIB),zlib) \\\n\t$(if $(BR2_PACKAGE_RTMPDUMP),rtmpdump)\nLIBCURL_LICENSE = curl\nLIBCURL_LICENSE_FILES = COPYING\nLIBCURL_CPE_ID_VENDOR = haxx\nLIBCURL_CPE_ID_PRODUCT = libcurl\nLIBCURL_INSTALL_STAGING = YES\n\n# We disable NTLM support because it uses fork(), which doesn't work\n# on non-MMU platforms. Moreover, this authentication method is\n# probably almost never used. See\n# http://curl.se/docs/manpage.html#--ntlm.\n# Likewise, there is no compiler on the target, so libcurl-option (to\n# generate C code) isn't very useful\nLIBCURL_CONF_OPTS = --disable-manual --disable-ntlm-wb \\\n\t--enable-hidden-symbols --with-random=/dev/urandom --disable-curldebug \\\n\t--disable-libcurl-option --disable-ldap --disable-ldaps\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nLIBCURL_CONF_OPTS += --enable-threaded-resolver\nelse\nLIBCURL_CONF_OPTS += --disable-threaded-resolver\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL_VERBOSE),y)\nLIBCURL_CONF_OPTS += --enable-verbose\nelse\nLIBCURL_CONF_OPTS += --disable-verbose\nendif\n\nLIBCURL_CONFIG_SCRIPTS = curl-config\n\nifeq ($(BR2_PACKAGE_LIBCURL_OPENSSL),y)\nLIBCURL_DEPENDENCIES += openssl\n# configure adds the cross openssl dir to LD_LIBRARY_PATH which screws up\n# native stuff during the rest of configure when target == host.\n# Fix it by setting LD_LIBRARY_PATH to something sensible so those libs\n# are found first.\nLIBCURL_CONF_ENV += LD_LIBRARY_PATH=$(if $(LD_LIBRARY_PATH),$(LD_LIBRARY_PATH):)/lib:/usr/lib\nLIBCURL_CONF_OPTS += --with-ssl=$(STAGING_DIR)/usr \\\n\t--with-ca-path=/etc/ssl/certs\nelse\nLIBCURL_CONF_OPTS += --without-ssl\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL_BEARSSL),y)\nLIBCURL_CONF_OPTS += --with-bearssl=$(STAGING_DIR)/usr\nLIBCURL_DEPENDENCIES += bearssl\nelse\nLIBCURL_CONF_OPTS += --without-bearssl\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL_GNUTLS),y)\nLIBCURL_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr \\\n\t--with-ca-fallback\nLIBCURL_DEPENDENCIES += gnutls\nelse\nLIBCURL_CONF_OPTS += --without-gnutls\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL_LIBNSS),y)\nLIBCURL_CONF_OPTS += --with-nss=$(STAGING_DIR)/usr\nLIBCURL_CONF_ENV += CPPFLAGS=\"$(TARGET_CPPFLAGS) `$(PKG_CONFIG_HOST_BINARY) nspr nss --cflags`\"\nLIBCURL_DEPENDENCIES += libnss\nelse\nLIBCURL_CONF_OPTS += --without-nss\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL_MBEDTLS),y)\nLIBCURL_CONF_OPTS += --with-mbedtls=$(STAGING_DIR)/usr\nLIBCURL_DEPENDENCIES += mbedtls\nelse\nLIBCURL_CONF_OPTS += --without-mbedtls\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL_WOLFSSL),y)\nLIBCURL_CONF_OPTS += --with-wolfssl=$(STAGING_DIR)/usr\nLIBCURL_DEPENDENCIES += wolfssl\nelse\nLIBCURL_CONF_OPTS += --without-wolfssl\nendif\n\nifeq ($(BR2_PACKAGE_C_ARES),y)\nLIBCURL_DEPENDENCIES += c-ares\nLIBCURL_CONF_OPTS += --enable-ares\nelse\nLIBCURL_CONF_OPTS += --disable-ares\nendif\n\nifeq ($(BR2_PACKAGE_LIBIDN2),y)\nLIBCURL_DEPENDENCIES += libidn2\nLIBCURL_CONF_OPTS += --with-libidn2\nelse\nLIBCURL_CONF_OPTS += --without-libidn2\nendif\n\n# Configure curl to support libssh2\nifeq ($(BR2_PACKAGE_LIBSSH2),y)\nLIBCURL_DEPENDENCIES += libssh2\nLIBCURL_CONF_OPTS += --with-libssh2\nelse\nLIBCURL_CONF_OPTS += --without-libssh2\nendif\n\nifeq ($(BR2_PACKAGE_BROTLI),y)\nLIBCURL_DEPENDENCIES += brotli\nLIBCURL_CONF_OPTS += --with-brotli\nelse\nLIBCURL_CONF_OPTS += --without-brotli\nendif\n\nifeq ($(BR2_PACKAGE_NGHTTP2),y)\nLIBCURL_DEPENDENCIES += nghttp2\nLIBCURL_CONF_OPTS += --with-nghttp2\nelse\nLIBCURL_CONF_OPTS += --without-nghttp2\nendif\n\nifeq ($(BR2_PACKAGE_LIBGSASL),y)\nLIBCURL_DEPENDENCIES += libgsasl\nLIBCURL_CONF_OPTS += --with-gsasl\nelse\nLIBCURL_CONF_OPTS += --without-gsasl\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL_COOKIES_SUPPORT),y)\nLIBCURL_CONF_OPTS += --enable-cookies\nelse\nLIBCURL_CONF_OPTS += --disable-cookies\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL_PROXY_SUPPORT),y)\nLIBCURL_CONF_OPTS += --enable-proxy\nelse\nLIBCURL_CONF_OPTS += --disable-proxy\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL_EXTRA_PROTOCOLS_FEATURES),y)\nLIBCURL_CONF_OPTS += \\\n\t--enable-dict \\\n\t--enable-gopher \\\n\t--enable-imap \\\n\t--enable-pop3 \\\n\t--enable-rtsp \\\n\t--enable-smb \\\n\t--enable-smtp \\\n\t--enable-telnet \\\n\t--enable-tftp\nelse\nLIBCURL_CONF_OPTS += \\\n\t--disable-dict \\\n\t--disable-gopher \\\n\t--disable-imap \\\n\t--disable-pop3 \\\n\t--disable-rtsp \\\n\t--disable-smb \\\n\t--disable-smtp \\\n\t--disable-telnet \\\n\t--disable-tftp\nendif\n\ndefine LIBCURL_FIX_DOT_PC\n\tprintf 'Requires: openssl\\n' >>$(@D)/libcurl.pc.in\nendef\nLIBCURL_POST_PATCH_HOOKS += $(if $(BR2_PACKAGE_LIBCURL_OPENSSL),LIBCURL_FIX_DOT_PC)\n\nifeq ($(BR2_PACKAGE_LIBCURL_CURL),)\ndefine LIBCURL_TARGET_CLEANUP\n\trm -rf $(TARGET_DIR)/usr/bin/curl\nendef\nLIBCURL_POST_INSTALL_TARGET_HOOKS += LIBCURL_TARGET_CLEANUP\nendif\n\nHOST_LIBCURL_DEPENDENCIES = host-openssl\nHOST_LIBCURL_CONF_OPTS = \\\n\t--disable-manual \\\n\t--disable-ntlm-wb \\\n\t--disable-curldebug \\\n\t--with-ssl \\\n\t--without-gnutls \\\n\t--without-mbedtls \\\n\t--without-nss\n\nHOST_LIBCURL_POST_PATCH_HOOKS += LIBCURL_FIX_DOT_PC\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libcutl/libcutl.hash",
    "content": "# From https://www.codesynthesis.com/download/libcutl/1.10/libcutl-1.10.0.tar.bz2.sha1\nsha1\t2885b79529f8caeb13687d722f5c114186f56956\tlibcutl-1.10.0.tar.bz2\n\n# Locally Computed\nsha256\t125163c670e372b47d5626d54379ff8fbaded6ccd5db77ac0bf5912a4017121c\tlibcutl-1.10.0.tar.bz2\nsha256\tc7aa98c5af3b67174f16b12a1fed4332a51cd524b82c69e85baa4c2c412da239\tLICENSE\n"
  },
  {
    "path": "package/libcutl/libcutl.mk",
    "content": "################################################################################\n#\n# libcutl\n#\n################################################################################\n\nLIBCUTL_VERSION_MAJOR = 1.10\nLIBCUTL_VERSION = $(LIBCUTL_VERSION_MAJOR).0\nLIBCUTL_SOURCE = libcutl-$(LIBCUTL_VERSION).tar.bz2\nLIBCUTL_SITE = https://www.codesynthesis.com/download/libcutl/$(LIBCUTL_VERSION_MAJOR)\nLIBCUTL_INSTALL_STAGING = YES\nLIBCUTL_LICENSE = MIT\nLIBCUTL_LICENSE_FILES = LICENSE\nHOST_LIBCUTL_CONF_ENV = CXXFLAGS=\"$(HOST_CXXFLAGS) -std=c++11\"\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libdaemon/0001-testd-use-unistd-h-instead-of-sys-unistd-h.patch",
    "content": "examples/testd.c: As the C POSIX library recommends include the <unistd.h>\ninstead of <sys/unistd.h>. This removes an error when building libdaemon\nagainst the musl C library.\n\nSigned-off-by: Jörg Krause <jkrause@posteo.de>\n--- libdaemon-0.14.orig/examples/testd.c\t2014-08-30 00:27:08.359832977 +0200\n+++ libdaemon-0.14/examples/testd.c\t2014-08-30 00:27:25.439832670 +0200\n@@ -23,7 +23,7 @@\n #include <string.h>\n #include <sys/types.h>\n #include <sys/time.h>\n-#include <sys/unistd.h>\n+#include <unistd.h>\n #include <sys/select.h>\n \n #include <libdaemon/dfork.h>\n"
  },
  {
    "path": "package/libdaemon/Config.in",
    "content": "config BR2_PACKAGE_LIBDAEMON\n\tbool \"libdaemon\"\n\t# needs fork()\n\tdepends on BR2_USE_MMU\n\thelp\n\t  libdaemon is a lightweight C library that eases the\n\t  writing of UNIX daemons.\n\n\t  http://0pointer.de/lennart/projects/libdaemon/\n"
  },
  {
    "path": "package/libdaemon/libdaemon.hash",
    "content": "# Locally calculated\nsha256 fd23eb5f6f986dcc7e708307355ba3289abe03cc381fc47a80bca4a50aa6b834 libdaemon-0.14.tar.gz\nsha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LICENSE\n"
  },
  {
    "path": "package/libdaemon/libdaemon.mk",
    "content": "################################################################################\n#\n# libdaemon\n#\n################################################################################\n\nLIBDAEMON_VERSION = 0.14\nLIBDAEMON_SITE = http://0pointer.de/lennart/projects/libdaemon\nLIBDAEMON_LICENSE = LGPL-2.1+\nLIBDAEMON_LICENSE_FILES = LICENSE\nLIBDAEMON_CPE_ID_VENDOR = libdaemon_project\n\nLIBDAEMON_INSTALL_STAGING = YES\nLIBDAEMON_CONF_ENV = ac_cv_func_setpgrp_void=no\nLIBDAEMON_CONF_OPTS = --disable-lynx\nLIBDAEMON_DEPENDENCIES = host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libdbi/Config.in",
    "content": "config BR2_PACKAGE_LIBDBI\n\tbool \"lidbi\"\n\thelp\n\t  libdbi implements a database-independent abstraction layer\n\t  in C, similar to the DBI/DBD layer in Perl.\n\n\t  http://libdbi.sourceforge.net\n"
  },
  {
    "path": "package/libdbi/libdbi.hash",
    "content": "# Locally computed:\nsha256  958475e0010a3d8e43ce9ecd6a64d25eacca6ada46c39bc69f949dd70f92ab7a  libdbi-88b8477d57153b9f736dd19d432d3b7ab1c49073-br1.tar.gz\nsha256  5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509  COPYING\n"
  },
  {
    "path": "package/libdbi/libdbi.mk",
    "content": "################################################################################\n#\n# libdbi\n#\n################################################################################\n\nLIBDBI_VERSION = 88b8477d57153b9f736dd19d432d3b7ab1c49073\nLIBDBI_SITE = https://git.code.sf.net/p/libdbi/libdbi\nLIBDBI_SITE_METHOD = git\nLIBDBI_LICENSE = LGPL-2.1+\nLIBDBI_LICENSE_FILES = COPYING\nLIBDBI_INSTALL_STAGING = YES\n# Fetched from git, with no configure script\nLIBDBI_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libdbi-drivers/Config.in",
    "content": "config BR2_PACKAGE_LIBDBI_DRIVERS\n\tbool \"libdbi-drivers\"\n\tselect BR2_PACKAGE_LIBDBI\n\thelp\n\t  The libdbi-drivers project provides the\n\t  database-specific drivers for the libdbi framework.\n\n\t  http://libdbi-drivers.sourceforge.net\n"
  },
  {
    "path": "package/libdbi-drivers/libdbi-drivers.hash",
    "content": "# Locally computed\nsha256  80a1befb044238a89b2d0dbd40881aa6c75bf99d3a7a6c016c657ea26df7792c  libdbi-drivers-0bfae6c43134cf58dc89364328545982ca297abb-br1.tar.gz\nsha256  5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509  COPYING\n"
  },
  {
    "path": "package/libdbi-drivers/libdbi-drivers.mk",
    "content": "################################################################################\n#\n# libdbi-drivers\n#\n################################################################################\n\nLIBDBI_DRIVERS_VERSION = 0bfae6c43134cf58dc89364328545982ca297abb\nLIBDBI_DRIVERS_SITE = https://git.code.sf.net/p/libdbi-drivers/libdbi-drivers\nLIBDBI_DRIVERS_SITE_METHOD = git\nLIBDBI_DRIVERS_LICENSE = LGPL-2.1+\nLIBDBI_DRIVERS_LICENSE_FILES = COPYING\nLIBDBI_DRIVERS_INSTALL_STAGING = YES\nLIBDBI_DRIVERS_DEPENDENCIES = libdbi host-pkgconf\nLIBDBI_DRIVERS_AUTORECONF = YES\n\nLIBDBI_DRIVERS_CONF_OPTS = --with-dbi-libdir=$(STAGING_DIR)/usr/lib\n\nifeq ($(BR2_PACKAGE_MYSQL),y)\nLIBDBI_DRIVERS_DEPENDENCIES += mysql\nLIBDBI_DRIVERS_CONF_OPTS += --with-mysql\nLIBDBI_DRIVERS_CONF_ENV += MYSQL_CONFIG=\"$(STAGING_DIR)/usr/bin/mysql_config\"\nelse\nLIBDBI_DRIVERS_CONF_OPTS += --without-mysql\nendif\n\nifeq ($(BR2_PACKAGE_POSTGRESQL),y)\nLIBDBI_DRIVERS_DEPENDENCIES += postgresql\nLIBDBI_DRIVERS_CONF_OPTS += --with-pgsql\nelse\nLIBDBI_DRIVERS_CONF_OPTS += --without-pgsql\nendif\n\nLIBDBI_DRIVERS_CONF_OPTS += --without-sqlite\nifeq ($(BR2_PACKAGE_SQLITE),y)\nLIBDBI_DRIVERS_DEPENDENCIES += sqlite\nLIBDBI_DRIVERS_CONF_OPTS += --with-sqlite3\nelse\nLIBDBI_DRIVERS_CONF_OPTS += --without-sqlite3\nendif\n\nLIBDBI_DRIVERS_CONF_OPTS += --without-msql \t# MiniSQL\nLIBDBI_DRIVERS_CONF_OPTS += --without-oracle\t# Oracle OCI\nLIBDBI_DRIVERS_CONF_OPTS += --without-firebird\t# Firebird/Interbase\nLIBDBI_DRIVERS_CONF_OPTS += --without-freetds\t# Freetds\nLIBDBI_DRIVERS_CONF_OPTS += --without-ingres\t# Ingres\nLIBDBI_DRIVERS_CONF_OPTS += --without-db2\t# IBM DB2\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libdcadec/Config.in",
    "content": "config BR2_PACKAGE_LIBDCADEC\n\tbool \"libdcadec\"\n\thelp\n\t  dcadec is a free DTS Coherent Acoustics decoder with support\n\t  for HD extensions.\n\n\t  https://github.com/foo86/dcadec\n"
  },
  {
    "path": "package/libdcadec/libdcadec.hash",
    "content": "# Locally calculated\nsha256\ted9d207fde3e8d576f3af8b0d1235b3371e315175757173689104efcaebf0d44\tlibdcadec-0.2.0.tar.gz\nsha256\tdc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\tCOPYING.LGPLv2.1\n"
  },
  {
    "path": "package/libdcadec/libdcadec.mk",
    "content": "################################################################################\n#\n# libdcadec\n#\n################################################################################\n\nLIBDCADEC_VERSION = 0.2.0\nLIBDCADEC_SITE = $(call github,foo86,dcadec,v$(LIBDCADEC_VERSION))\nLIBDCADEC_LICENSE = LGPL-2.1+\nLIBDCADEC_LICENSE_FILES = COPYING.LGPLv2.1\nLIBDCADEC_INSTALL_STAGING = YES\n\nifeq ($(BR2_STATIC_LIBS),)\nLIBDCADEC_SHARED = CONFIG_SHARED=1\nendif\n\ndefine LIBDCADEC_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -std=gnu99\" \\\n\t\t$(LIBDCADEC_SHARED) -C $(@D)\nendef\n\ndefine LIBDCADEC_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\t$(LIBDCADEC_SHARED) DESTDIR=$(STAGING_DIR) PREFIX=/usr install\nendef\n\ndefine LIBDCADEC_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\t$(LIBDCADEC_SHARED) DESTDIR=$(TARGET_DIR) PREFIX=/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libdmtx/Config.in",
    "content": "config BR2_PACKAGE_LIBDMTX\n\tbool \"libdmtx\"\n\thelp\n\t  libdmtx is a software library that enables programs to read\n\t  and write Data Matrix barcodes of the modern ECC200 variety.\n\n\t  https://github.com/dmtx/libdmtx\n"
  },
  {
    "path": "package/libdmtx/libdmtx.hash",
    "content": "# Locally computed:\nsha256  be0c5275695a732a5f434ded1fcc232aa63b1a6015c00044fe87f3a689b75f2e  libdmtx-0.7.5.tar.gz\nsha256  fcc277b7302645322c63de22b9b0bdae2df3dfa7d6cbc0d5bed7a4d3f1a9af79  LICENSE\n"
  },
  {
    "path": "package/libdmtx/libdmtx.mk",
    "content": "################################################################################\n#\n# libdmtx\n#\n################################################################################\n\nLIBDMTX_VERSION = 0.7.5\nLIBDMTX_SITE = $(call github,dmtx,libdmtx,v$(LIBDMTX_VERSION))\nLIBDMTX_LICENSE = BSD-2-Clause or Special Permission\nLIBDMTX_LICENSE_FILES = LICENSE\nLIBDMTX_INSTALL_STAGING = YES\n# github tarball does not include configure\nLIBDMTX_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libdnet/0001-python-gcc.patch",
    "content": "--- a/python/dnet.c\t2006-01-19 18:08:23.000000000 +1100\n+++ b/python/dnet.c\t2008-09-03 16:30:47.000000000 +1000\n@@ -2726,7 +2726,7 @@\n   PyObject *__pyx_3 = 0;\n   unsigned short __pyx_4;\n   Py_INCREF(__pyx_v_self);\n-  ((PyObject*)__pyx_v_next) = Py_None; Py_INCREF(((PyObject*)__pyx_v_next));\n+  __pyx_v_next = (struct __pyx_obj_4dnet_addr*)Py_None; Py_INCREF(((PyObject*)__pyx_v_next));\n \n   /* \"/Users/dugsong/projects/libdnet/python/./dnet.pyx\":634 */\n   __pyx_1 = (((struct __pyx_obj_4dnet___addr_ip4_iter *)__pyx_v_self)->cur <= ((struct __pyx_obj_4dnet___addr_ip4_iter *)__pyx_v_self)->max);\n@@ -2738,7 +2739,7 @@\n     Py_DECREF(__pyx_2); __pyx_2 = 0;\n     if (!__Pyx_TypeTest(__pyx_3, __pyx_ptype_4dnet_addr)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; goto __pyx_L1;}\n     Py_DECREF(((PyObject *)__pyx_v_next));\n-    ((PyObject *)__pyx_v_next) = __pyx_3;\n+    __pyx_v_next = (struct __pyx_obj_4dnet_addr*)__pyx_3;\n     __pyx_3 = 0;\n \n     /* \"/Users/dugsong/projects/libdnet/python/./dnet.pyx\":636 */\n"
  },
  {
    "path": "package/libdnet/0002-python-makefile.patch",
    "content": "---\n python/Makefile.am |    1 +\n 1 file changed, 1 insertion(+)\n\nIndex: libdnet-1.11/python/Makefile.am\n===================================================================\n--- libdnet-1.11.orig/python/Makefile.am\n+++ libdnet-1.11/python/Makefile.am\n@@ -11,6 +11,7 @@\n \tpyrexc $(srcdir)/dnet.pyx\n \n python-build: $(srcdir)/dnet.c\n+\tCC=\"$(CC)\" LDSHARED=\"$(CC) -shared\" CFLAGS=\"$(CFLAGS)\" LDFLAGS=\"$(LDFLAGS)\" $(PYTHON) setup.py build_ext -I$(PYINCDIR) -L$(PYLIBDIR)\n \t$(PYTHON) setup.py build\n \ttouch python-build\n \n"
  },
  {
    "path": "package/libdnet/Config.in",
    "content": "config BR2_PACKAGE_LIBDNET\n\tbool \"libdnet\"\n\thelp\n\t  libdnet - simplified interface to low-level networking\n\t  routines.\n\n\t  http://libdnet.sourceforge.net/\n\nif BR2_PACKAGE_LIBDNET\n\nconfig BR2_PACKAGE_LIBDNET_PYTHON\n\tbool \"libdnet python module\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  dnet module for python\n\ncomment \"dnet module for python requires python package\"\n\tdepends on !BR2_PACKAGE_PYTHON\n\nendif\n"
  },
  {
    "path": "package/libdnet/libdnet.hash",
    "content": "# Locally computed:\nsha256  0eb78415c8f2564c2f1e8ad36e98473348d9c94852f796a226360c716cc7ca53  libdnet-1.11.tar.gz\nsha256  1e94df12cb3701fa64e07eeb60284bb16a3544815d5a39860dacff7b86610584  LICENSE\n"
  },
  {
    "path": "package/libdnet/libdnet.mk",
    "content": "################################################################################\n#\n# libdnet\n#\n################################################################################\n\nLIBDNET_VERSION = 1.11\nLIBDNET_SITE = http://downloads.sourceforge.net/project/libdnet/libdnet/libdnet-$(LIBDNET_VERSION)\nLIBDNET_LICENSE = BSD-3-Clause\nLIBDNET_LICENSE_FILES = LICENSE\nLIBDNET_INSTALL_STAGING = YES\nLIBDNET_AUTORECONF = YES\nLIBDNET_CONF_OPTS = \\\n\t--with-gnu-ld \\\n\t--with-check=no\nLIBDNET_CONFIG_SCRIPTS = dnet-config\n\nifneq ($(BR2_PACKAGE_LIBDNET_PYTHON),)\nLIBDNET_DEPENDENCIES += python\nLIBDNET_CONF_OPTS += --with-python\nLIBDNET_MAKE_OPTS = PYINCDIR=$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) PYLIBDIR=$(STAGING_DIR)/usr/lib\nLIBDNET_INSTALL_TARGET_OPTS = $(LIBDNET_MAKE_OPTS) DESTDIR=$(TARGET_DIR) INSTALL_STRIP_FLAG=-s install-exec\nLIBDNET_INSTALL_STAGING_OPTS = $(LIBDNET_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install\nendif\n\n# Needed for autoreconf to work properly\ndefine LIBDNET_FIXUP_ACINCLUDE_M4\n\tln -sf config/acinclude.m4 $(@D)\nendef\n\nLIBDNET_POST_EXTRACT_HOOKS += LIBDNET_FIXUP_ACINCLUDE_M4\n\ndefine LIBDNET_REMOVE_CONFIG_SCRIPT\n\t$(RM) -f $(TARGET_DIR)/usr/bin/dnet-config\nendef\n\nLIBDNET_POST_INSTALL_TARGET_HOOKS += LIBDNET_REMOVE_CONFIG_SCRIPT\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libdri2/Config.in",
    "content": "config BR2_PACKAGE_LIBDRI2\n\tbool \"libdri2\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libdrm\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_XLIB_LIBXDAMAGE\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Library for the DRI2 extension to the X Window System.\n\n\t  https://github.com/robclark/libdri2\n\ncomment \"libdri2 needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libdri2/libdri2.hash",
    "content": "# Locally calculated\nsha256 7c427f5c3fbda3d1df1dc77129e87605f4af1f3ad2adf2653c560d1703aa4395  libdri2-4f1eef3183df2b270c3d5cbef07343ee5127a6a4.tar.gz\nsha256 4fac4d581d00f11c459d68b7cb970f3d4e5a5bbfb53784d85f59a90076280301  COPYING\n"
  },
  {
    "path": "package/libdri2/libdri2.mk",
    "content": "################################################################################\n#\n# libdri2\n#\n################################################################################\n\nLIBDRI2_VERSION = 4f1eef3183df2b270c3d5cbef07343ee5127a6a4\nLIBDRI2_SITE = $(call github,robclark,libdri2,$(LIBDRI2_VERSION))\nLIBDRI2_DEPENDENCIES = xlib_libXext xlib_libXdamage xorgproto libdrm\nLIBDRI2_LICENSE = MIT\nLIBDRI2_LICENSE_FILES = COPYING\n\nLIBDRI2_INSTALL_STAGING = YES\nLIBDRI2_AUTORECONF = YES\nLIBDRI2_CONF_ENV = xorg_cv_malloc0_returns_null=true\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libdrm/0001-tests-meson.build-disable-nouveau-tests-for-static-b.patch",
    "content": "From c9036706b9f724f09ac6288f82b53f2e76264ec7 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Mon, 25 Nov 2019 15:59:15 +0100\nSubject: [PATCH] tests/meson.build: disable nouveau tests for static build\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\nNotes:\n\n  - the existing test/check for static build in meson.build does not\n    catch this case because e.g. the buildroot toolchain\n    br-arm-full-static-2019.05.1 provides an empty libdl.a\n\n  169 # Among others FreeBSD does not have a separate dl library.\n  170 if not cc.has_function('dlsym')\n  171   dep_dl = cc.find_library('dl', required : with_nouveau)\n  172 else\n  173   dep_dl = []\n  174 endif\n---\n tests/meson.build | 5 ++++-\n 1 file changed, 4 insertions(+), 1 deletion(-)\n\ndiff --git a/tests/meson.build b/tests/meson.build\nindex 6c8ddd9..f7cb5f0 100644\n--- a/tests/meson.build\n+++ b/tests/meson.build\n@@ -44,8 +44,11 @@ endif\n if with_etnaviv\n   subdir('etnaviv')\n endif\n+lib_type = get_option('default_library')\n if with_nouveau\n-  subdir('nouveau')\n+  if lib_type != 'static'\n+    subdir('nouveau')\n+  endif\n endif\n \n drmsl = executable(\n-- \n2.24.0\n\n"
  },
  {
    "path": "package/libdrm/Config.in",
    "content": "menuconfig BR2_PACKAGE_LIBDRM\n\tbool \"libdrm\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libpthread-stubs\n\tselect BR2_PACKAGE_LIBPTHREAD_STUBS\n\thelp\n\t  Direct Rendering Manager\n\n\t  http://dri.freedesktop.org/libdrm/\n\nif BR2_PACKAGE_LIBDRM\n\nconfig BR2_PACKAGE_LIBDRM_HAS_ATOMIC\n\tbool\n\tdefault y if BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS || \\\n\t\tBR2_TOOLCHAIN_HAS_SYNC_4\n\nconfig BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC\n\tbool\n\tselect BR2_PACKAGE_LIBATOMIC_OPS if !BR2_TOOLCHAIN_HAS_SYNC_4\n\nconfig BR2_PACKAGE_LIBDRM_INTEL\n\tbool \"intel\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC\n\tselect BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC\n\tselect BR2_PACKAGE_LIBPCIACCESS\n\thelp\n\t  Install intel graphics driver.\n\nconfig BR2_PACKAGE_LIBDRM_RADEON\n\tbool \"radeon\"\n\tdepends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC\n\tselect BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC\n\thelp\n\t  Install AMD/ATI graphics driver.\n\nconfig BR2_PACKAGE_LIBDRM_AMDGPU\n\tbool \"amdgpu\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC\n\tselect BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC\n\thelp\n\t  Install AMD GPU driver.\n\nconfig BR2_PACKAGE_LIBDRM_NOUVEAU\n\tbool \"nouveau\"\n\tdepends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC\n\tselect BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC\n\thelp\n\t  Install NVIDIA graphics driver.\n\nconfig BR2_PACKAGE_LIBDRM_VMWGFX\n\tbool \"vmwgfx\"\n\tdepends on BR2_i386 || BR2_x86_64\n\thelp\n\t  Installs Vmware graphics driver.\n\nconfig BR2_PACKAGE_LIBDRM_OMAP\n\tbool \"omap (experimental)\"\n\tdepends on BR2_arm\n\tdepends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC\n\tselect BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC\n\thelp\n\t  Install the TI OMAP driver using an experimental API.\n\nconfig BR2_PACKAGE_LIBDRM_ETNAVIV\n\tbool \"etnaviv (experimental)\"\n\tdepends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC\n\tselect BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC\n\thelp\n\t  Install the Etnaviv/Vivante driver using an experimental API.\n\nconfig BR2_PACKAGE_LIBDRM_EXYNOS\n\tbool \"exynos (experimental)\"\n\tdepends on BR2_arm\n\thelp\n\t  Install Samsung Exynos driver using an experimental API.\n\nconfig BR2_PACKAGE_LIBDRM_FREEDRENO\n\tbool \"freedreno\"\n\tdepends on BR2_arm || BR2_aarch64 || BR2_aarch64_be\n\tdepends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC\n\tselect BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC\n\thelp\n\t  Install Qualcomm Snapdragon driver.\n\nconfig BR2_PACKAGE_LIBDRM_TEGRA\n\tbool \"tegra (experimental)\"\n\tdepends on BR2_arm\n\tdepends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC\n\tselect BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC\n\thelp\n\t  Install NVIDIA Tegra driver using an experimental API.\n\nconfig BR2_PACKAGE_LIBDRM_VC4\n\tbool \"vc4\"\n\tdepends on BR2_aarch64 || BR2_arm\n\thelp\n\t  Install vc4 (Raspberry Pi) driver.\n\nconfig BR2_PACKAGE_LIBDRM_INSTALL_TESTS\n\tbool \"Install test programs\"\n\thelp\n\t  This option allows to install the libdrm test programs.\n\nendif\n\ncomment \"libdrm needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libdrm/libdrm.hash",
    "content": "# From https://lists.freedesktop.org/archives/dri-devel/2021-July/313594.html\nsha256  c554cef03b033636a975543eab363cc19081cb464595d3da1ec129f87370f888  libdrm-2.4.107.tar.xz\nsha512  c7542ba15c4c934519a6a1f3cb1ec21effa820a805a030d0175313bb1cc796cd311f39596ead883f9f251679d701e262894c5a297d5cf45093c80a6cd818def0  libdrm-2.4.107.tar.xz\n\n# Hash for license file\nsha256  7e952c6666ed17c99f91ee7af13c688b8769b0feaf6f4558bf6ad3e07512e1e6  xf86drm.c\n"
  },
  {
    "path": "package/libdrm/libdrm.mk",
    "content": "################################################################################\n#\n# libdrm\n#\n################################################################################\n\nLIBDRM_VERSION = 2.4.107\nLIBDRM_SOURCE = libdrm-$(LIBDRM_VERSION).tar.xz\nLIBDRM_SITE = https://dri.freedesktop.org/libdrm\nLIBDRM_LICENSE = MIT\nLIBDRM_LICENSE_FILES = xf86drm.c\nLIBDRM_INSTALL_STAGING = YES\n\nLIBDRM_DEPENDENCIES = \\\n\tlibpthread-stubs \\\n\thost-pkgconf\n\nLIBDRM_CONF_OPTS = \\\n\t-Dcairo-tests=false \\\n\t-Dman-pages=false\n\nifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y)\nLIBDRM_DEPENDENCIES += libatomic_ops\nifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)\nLIBDRM_CFLAGS = $(TARGET_CFLAGS) -DAO_NO_SPARC_V9\nendif\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM_INTEL),y)\nLIBDRM_CONF_OPTS += -Dintel=true\nLIBDRM_DEPENDENCIES += libpciaccess\nelse\nLIBDRM_CONF_OPTS += -Dintel=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM_RADEON),y)\nLIBDRM_CONF_OPTS += -Dradeon=true\nelse\nLIBDRM_CONF_OPTS += -Dradeon=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM_AMDGPU),y)\nLIBDRM_CONF_OPTS += -Damdgpu=true\nelse\nLIBDRM_CONF_OPTS += -Damdgpu=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM_NOUVEAU),y)\nLIBDRM_CONF_OPTS += -Dnouveau=true\nelse\nLIBDRM_CONF_OPTS += -Dnouveau=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM_VMWGFX),y)\nLIBDRM_CONF_OPTS += -Dvmwgfx=true\nelse\nLIBDRM_CONF_OPTS += -Dvmwgfx=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM_OMAP),y)\nLIBDRM_CONF_OPTS += -Domap=true\nelse\nLIBDRM_CONF_OPTS += -Domap=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM_ETNAVIV),y)\nLIBDRM_CONF_OPTS += -Detnaviv=true\nelse\nLIBDRM_CONF_OPTS += -Detnaviv=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM_EXYNOS),y)\nLIBDRM_CONF_OPTS += -Dexynos=true\nelse\nLIBDRM_CONF_OPTS += -Dexynos=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM_FREEDRENO),y)\nLIBDRM_CONF_OPTS += -Dfreedreno=true\nelse\nLIBDRM_CONF_OPTS += -Dfreedreno=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM_TEGRA),y)\nLIBDRM_CONF_OPTS += -Dtegra=true\nelse\nLIBDRM_CONF_OPTS += -Dtegra=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM_VC4),y)\nLIBDRM_CONF_OPTS += -Dvc4=true\nelse\nLIBDRM_CONF_OPTS += -Dvc4=false\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nLIBDRM_CONF_OPTS += -Dudev=true\nLIBDRM_DEPENDENCIES += udev\nelse\nLIBDRM_CONF_OPTS += -Dudev=false\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND),y)\nLIBDRM_CONF_OPTS += -Dvalgrind=true\nLIBDRM_DEPENDENCIES += valgrind\nelse\nLIBDRM_CONF_OPTS += -Dvalgrind=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM_INSTALL_TESTS),y)\nLIBDRM_CONF_OPTS += -Dinstall-test-programs=true\nifeq ($(BR2_PACKAGE_CUNIT),y)\nLIBDRM_DEPENDENCIES += cunit\nendif\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libdvbcsa/0001-altivec-powerpc64.patch",
    "content": "Fix compile on powerpc64/powerpc64le w/ altivec\n\nCorrect the type of some vectors passed to vec_slo() or vec_sro(), which only\ntakes a char vector.\n\nSigned-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>\n\n--- a/src/dvbcsa_bs_altivec.h\t2016-11-28 14:33:34.410021500 +1100\n+++ b/src/dvbcsa_bs_altivec.h\t2016-11-28 14:34:25.442238715 +1100\n@@ -64,7 +64,7 @@\n \t}\n \tcase 0x29: {\n \t\tdvbcsa_bs_word_t x = vec_splat_u8(10);\n-\t\treturn (dvbcsa_bs_word_t)vec_add(vec_splat_u8(0x1),vec_rl(x,x));\n+\t\treturn (dvbcsa_bs_word_t)vec_add((dvbcsa_bs_word_t)vec_splat_u8(0x1),vec_rl(x,x));\n \t}\n \tcase 0x40: {\n \t\tdvbcsa_bs_word_t x = vec_splat_u8(4);\n@@ -99,10 +99,10 @@\n #define SHVAL_14 BS_VAL8(0e)\n #define SHVAL_7 BS_VAL8(07)\n \n-#define BS_SHL(a, n)\t({ dvbcsa_bs_word_t x = SHVAL_##n; vec_sll(vec_slo((a), x), x); })\n-#define BS_SHR(a, n)\t({ dvbcsa_bs_word_t x = SHVAL_##n; vec_srl(vec_sro((a), x), x); })\n-#define BS_SHL8(a, n)\t({ dvbcsa_bs_word_t x = vec_splat_u8(n*2); x = vec_add(x,x); x = vec_add(x,x); vec_slo((a), x); })\n-#define BS_SHR8(a, n)\t({ dvbcsa_bs_word_t x = vec_splat_u8(n*2); x = vec_add(x,x); x = vec_add(x,x); vec_sro((a), x); })\n+#define BS_SHL(a, n)\t({ vector unsigned char x = SHVAL_##n; vec_sll(vec_slo((a), x), x); })\n+#define BS_SHR(a, n)\t({ vector unsigned char x = SHVAL_##n; vec_srl(vec_sro((a), x), x); })\n+#define BS_SHL8(a, n)\t({ vector unsigned char x = vec_splat_u8(n*2); x = vec_add(x,x); x = vec_add(x,x); vec_slo((a), x); })\n+#define BS_SHR8(a, n)\t({ vector unsigned char x = vec_splat_u8(n*2); x = vec_add(x,x); x = vec_add(x,x); vec_sro((a), x); })\n \n #define BS_EXTRACT8(a, n) ((uint8_t*)&(a))[15 - (n)]\n \n"
  },
  {
    "path": "package/libdvbcsa/Config.in",
    "content": "config BR2_PACKAGE_LIBDVBCSA\n\tbool \"libdvbcsa\"\n\thelp\n\t  libdvbcsa is a free implementation of the DVB Common\n\t  Scrambling Algorithm - DVB/CSA - with encryption and\n\t  decryption capabilities\n\n\t  As libdvbcsa implements a standard, it is completely legal to\n\t  use it.\n\n\t  http://www.videolan.org/developers/libdvbcsa.html\n"
  },
  {
    "path": "package/libdvbcsa/libdvbcsa.hash",
    "content": "# From http://download.videolan.org/pub/videolan/libdvbcsa/1.1.0/libdvbcsa-1.1.0.tar.gz.sha256\nsha256\t4db78af5cdb2641dfb1136fe3531960a477c9e3e3b6ba19a2754d046af3f456d\tlibdvbcsa-1.1.0.tar.gz\n# From http://download.videolan.org/pub/videolan/libdvbcsa/1.1.0/libdvbcsa-1.1.0.tar.gz.sha1\nsha1\t5f4640a7e93ae6494f24a881414e5c343f803365\t\t\t\tlibdvbcsa-1.1.0.tar.gz\n\n# Hash for license file:\nsha256\t32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670\tCOPYING\n"
  },
  {
    "path": "package/libdvbcsa/libdvbcsa.mk",
    "content": "################################################################################\n#\n# libdvbcsa\n#\n################################################################################\n\nLIBDVBCSA_VERSION = 1.1.0\nLIBDVBCSA_SITE = http://get.videolan.org/libdvbcsa/$(LIBDVBCSA_VERSION)\nLIBDVBCSA_LICENSE = GPL-2.0+\nLIBDVBCSA_LICENSE_FILES = COPYING\nLIBDVBCSA_INSTALL_STAGING = YES\n\nifeq ($(BR2_X86_CPU_HAS_MMX),y)\nLIBDVBCSA_CONF_OPTS += --enable-mmx\nelse\nLIBDVBCSA_CONF_OPTS += --disable-mmx\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE2),y)\nLIBDVBCSA_CONF_OPTS += --enable-sse2\nelse\nLIBDVBCSA_CONF_OPTS += --disable-sse2\nendif\n\nifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y)\nLIBDVBCSA_CONF_OPTS += --enable-altivec\nLIBDVBCSA_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -flax-vector-conversions\"\nelse\nLIBDVBCSA_CONF_OPTS += --disable-altivec\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libdvbpsi/Config.in",
    "content": "config BR2_PACKAGE_LIBDVBPSI\n\tbool \"libdvbpsi\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  libdvbpsi is a simple library designed for decoding and\n\t  generation of MPEG TS and DVB PSI tables according to\n\t  standards ISO/IEC 13818 and ITU-T H.222.0.\n\n\t  http://www.videolan.org/developers/libdvbpsi.html\n\ncomment \"libdvbpsi needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libdvbpsi/libdvbpsi.hash",
    "content": "# From http://download.videolan.org/pub/libdvbpsi/1.3.3/libdvbpsi-1.3.3.tar.bz2.md5\nmd5 9b556ab08bb62a8bec61f5c1649bc9a8  libdvbpsi-1.3.3.tar.bz2\n# From http://download.videolan.org/pub/libdvbpsi/1.3.3/libdvbpsi-1.3.3.tar.bz2.sha256\nsha256 02b5998bcf289cdfbd8757bedd5987e681309b0a25b3ffe6cebae599f7a00112  libdvbpsi-1.3.3.tar.bz2\n# Hash for license file:\nsha256\tdc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\tCOPYING\n"
  },
  {
    "path": "package/libdvbpsi/libdvbpsi.mk",
    "content": "################################################################################\n#\n# libdvbpsi\n#\n################################################################################\n\nLIBDVBPSI_VERSION = 1.3.3\nLIBDVBPSI_SITE = http://download.videolan.org/pub/libdvbpsi/$(LIBDVBPSI_VERSION)\nLIBDVBPSI_SOURCE = libdvbpsi-$(LIBDVBPSI_VERSION).tar.bz2\nLIBDVBPSI_LICENSE = LGPL-2.1+\nLIBDVBPSI_LICENSE_FILES = COPYING\nLIBDVBPSI_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libdvbsi/Config.in",
    "content": "config BR2_PACKAGE_LIBDVBSI\n\tbool \"libdvbsi\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  C++ parsing library for Service Information (SI) in DVB\n\t  systems. With libdvbsi++ you can convert raw DVB service\n\t  information to a set of C++ objects, removing the need to\n\t  parse data manually.\n\n\t  http://www.saftware.de/\n\ncomment \"libdvbsi++ needs a toolchain w/ C++, wchar, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libdvbsi/libdvbsi.hash",
    "content": "# Locally calculated\nsha256  a57949b842d94efedd895f2bd8e483c9f258e698092e35f1c3fdccb45b790953  libdvbsi++-0.3.9.tar.bz2\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  COPYING\n"
  },
  {
    "path": "package/libdvbsi/libdvbsi.mk",
    "content": "################################################################################\n#\n# libdvbsi\n#\n################################################################################\n\nLIBDVBSI_VERSION = 0.3.9\nLIBDVBSI_SOURCE = libdvbsi++-$(LIBDVBSI_VERSION).tar.bz2\nLIBDVBSI_SITE = https://github.com/mtdcr/libdvbsi/releases/download/$(LIBDVBSI_VERSION)\nLIBDVBSI_INSTALL_STAGING = YES\nLIBDVBSI_LICENSE = LGPL-2.1\nLIBDVBSI_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libdvdcss/Config.in",
    "content": "config BR2_PACKAGE_LIBDVDCSS\n\tbool \"libdvdcss\"\n\thelp\n\t  libdvdcss is a simple library designed for accessing DVDs like\n\t  a block device without having to bother about the decryption.\n\n\t  http://www.videolan.org/developers/libdvdcss.html\n"
  },
  {
    "path": "package/libdvdcss/libdvdcss.hash",
    "content": "# From http://download.videolan.org/pub/videolan/libdvdcss/1.4.3/libdvdcss-1.4.3.tar.bz2.sha1\nsha1  fcea8b2749ead8183636e48300bea8791abc79ee  libdvdcss-1.4.3.tar.bz2\n# From http://download.videolan.org/pub/videolan/libdvdcss/1.4.3/libdvdcss-1.4.3.tar.bz2.sha256\nsha256  233cc92f5dc01c5d3a96f5b3582be7d5cee5a35a52d3a08158745d3d86070079  libdvdcss-1.4.3.tar.bz2\n\n# Hash for license file:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/libdvdcss/libdvdcss.mk",
    "content": "################################################################################\n#\n# libdvdcss\n#\n################################################################################\n\nLIBDVDCSS_VERSION = 1.4.3\nLIBDVDCSS_SOURCE = libdvdcss-$(LIBDVDCSS_VERSION).tar.bz2\nLIBDVDCSS_SITE = http://www.videolan.org/pub/videolan/libdvdcss/$(LIBDVDCSS_VERSION)\nLIBDVDCSS_INSTALL_STAGING = YES\nLIBDVDCSS_LICENSE = GPL-2.0+\nLIBDVDCSS_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libdvdnav/Config.in",
    "content": "config BR2_PACKAGE_LIBDVDNAV\n\tbool \"libdvdnav\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBDVDREAD\n\thelp\n\t  libdvdnav is a library that allows easy use of sophisticated\n\t  DVD navigation features such as DVD menus, multiangle\n\t  playback and even interactive DVD games.\n\n\t  https://www.videolan.org/developers/libdvdnav.html\n\ncomment \"libdvdnav needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libdvdnav/libdvdnav.hash",
    "content": "# From http://download.videolan.org/pub/videolan/libdvdnav/6.1.1/libdvdnav-6.1.1.tar.bz2.sha1\nsha1  7ac76aa95d046db715763da23b7053b65cbc7540  libdvdnav-6.1.1.tar.bz2\n# From http://download.videolan.org/pub/videolan/libdvdnav/6.1.1/libdvdnav-6.1.1.tar.bz2.sha256\nsha256  c191a7475947d323ff7680cf92c0fb1be8237701885f37656c64d04e98d18d48  libdvdnav-6.1.1.tar.bz2\n\n# Hash for license file:\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/libdvdnav/libdvdnav.mk",
    "content": "################################################################################\n#\n# libdvdnav\n#\n################################################################################\n\nLIBDVDNAV_VERSION = 6.1.1\nLIBDVDNAV_SOURCE = libdvdnav-$(LIBDVDNAV_VERSION).tar.bz2\nLIBDVDNAV_SITE = http://www.videolan.org/pub/videolan/libdvdnav/$(LIBDVDNAV_VERSION)\nLIBDVDNAV_INSTALL_STAGING = YES\nLIBDVDNAV_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -std=gnu99\"\nLIBDVDNAV_DEPENDENCIES = libdvdread host-pkgconf\nLIBDVDNAV_LICENSE = GPL-2.0+\nLIBDVDNAV_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libdvdread/Config.in",
    "content": "config BR2_PACKAGE_LIBDVDREAD\n\tbool \"libdvdread\"\n\tselect BR2_PACKAGE_LIBDVDCSS\n\thelp\n\t  libdvdread provides a simple foundation for reading\n\t  DVD-Video images.\n\n\t  https://www.videolan.org/developers/libdvdnav.html\n"
  },
  {
    "path": "package/libdvdread/libdvdread.hash",
    "content": "# From http://download.videolan.org/pub/videolan/libdvdread/6.1.2/libdvdread-6.1.2.tar.bz2.sha1\nsha1  789d0780fbdcd7d6dadf0fda3d4a4b6198c16393  libdvdread-6.1.2.tar.bz2\n# From http://download.videolan.org/pub/videolan/libdvdread/6.1.2/libdvdread-6.1.2.tar.bz2.sha256\nsha256  cc190f553758ced7571859e301f802cb4821f164d02bfacfd320c14a4e0da763  libdvdread-6.1.2.tar.bz2\n\n# Hash for license file:\nsha256  d6cb0e9e560f51085556949a84af12b79a00f10ab8b66c752537faf7cd665572  COPYING\n"
  },
  {
    "path": "package/libdvdread/libdvdread.mk",
    "content": "################################################################################\n#\n# libdvdread\n#\n################################################################################\n\nLIBDVDREAD_VERSION = 6.1.2\nLIBDVDREAD_SOURCE = libdvdread-$(LIBDVDREAD_VERSION).tar.bz2\nLIBDVDREAD_SITE = http://www.videolan.org/pub/videolan/libdvdread/$(LIBDVDREAD_VERSION)\nLIBDVDREAD_INSTALL_STAGING = YES\nLIBDVDREAD_LICENSE = GPL-2.0+\nLIBDVDREAD_LICENSE_FILES = COPYING\nLIBDVDREAD_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -std=gnu99\"\nLIBDVDREAD_CONF_OPTS = --with-libdvdcss\nLIBDVDREAD_DEPENDENCIES = libdvdcss host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libeXosip2/Config.in",
    "content": "config BR2_PACKAGE_LIBEXOSIP2\n\tbool \"libeXosip2\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBOSIP2\n\thelp\n\t  eXosip is a library that hides the complexity of using the\n\t  SIP protocol for multimedia session establishment.\n\t  This protocol is mainly to be used by VoIP telephony\n\t  applications (endpoints or conference server) but might be\n\t  also useful for any application that wish to establish\n\t  sessions like multiplayer games.\n\t  eXosip is based in libosip.\n\n\t  http://savannah.nongnu.org/projects/exosip/\n"
  },
  {
    "path": "package/libeXosip2/libeXosip2.hash",
    "content": "# Locally calculated\nsha256  87256b45a406f3c038e1e75e31372d526820366527c2af3bb89329bafd87ec42  libexosip2-5.2.1.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/libeXosip2/libeXosip2.mk",
    "content": "################################################################################\n#\n# libexosip2\n#\n################################################################################\n\nLIBEXOSIP2_VERSION = 5.2.1\n# Since version 5.0, letter 'X' in library's name is in lower case\nLIBEXOSIP2_SOURCE = libexosip2-$(LIBEXOSIP2_VERSION).tar.gz\nLIBEXOSIP2_SITE = http://download.savannah.gnu.org/releases/exosip\nLIBEXOSIP2_INSTALL_STAGING = YES\nLIBEXOSIP2_LICENSE = GPL-2.0+\nLIBEXOSIP2_LICENSE_FILES = COPYING\nLIBEXOSIP2_CPE_ID_VENDOR = gnu\nLIBEXOSIP2_CPE_ID_PRODUCT = exosip\n\nLIBEXOSIP2_DEPENDENCIES = host-pkgconf libosip2\n\nifeq ($(BR2_arc),y)\n# toolchain __arc__ define conflicts with libeXosip2 source\nLIBEXOSIP2_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -U__arc__\"\nendif\n\nifeq ($(BR2_PACKAGE_C_ARES),y)\nLIBEXOSIP2_DEPENDENCIES += c-ares\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBEXOSIP2_DEPENDENCIES += openssl\nLIBEXOSIP2_CONF_OPTS += --enable-openssl\nelse\nLIBEXOSIP2_CONF_OPTS += --disable-openssl\nendif\n\nLIBEXOSIP2_CONF_OPTS += \\\n\t--enable-mt=$(if $(BR2_TOOLCHAIN_HAS_THREADS),yes,no)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libeastl/Config.in",
    "content": "config BR2_PACKAGE_LIBEASTL_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_i386\n\tdefault y if BR2_x86_64\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_powerpc\n\tdefault y if BR2_powerpc64\n\nconfig BR2_PACKAGE_LIBEASTL\n\tbool \"libeastl\"\n\tdepends on BR2_PACKAGE_LIBEASTL_ARCH_SUPPORTS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14\n\thelp\n\t  EASTL stands for Electronic Arts Standard Template\n\t  Library. EASTL stands for Electronic Arts Standard Template\n\t  Library. It is a C++ template library of containers,\n\t  algorithms, and iterators useful for runtime and tool\n\t  development across multiple platforms.  It is an extensive\n\t  and robust implementation that has an emphasis on high\n\t  performance.\n\n\t  https://github.com/electronicarts/EASTL\n\ncomment \"libeastl needs a toolchain w/ C++, gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_LIBEASTL_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/libeastl/libeastl.hash",
    "content": "sha256 9b3484553812b3ec3bad0857f7f675499c81f7cf4ac87e5f3b2acbe72e3a878a  libeastl-45469730d641868ce05433fff2e199510c7d45c3.tar.gz\nsha256 82c0243a1a62b8af01dab3bce6ed2b0852604bd508b85a561ba7d32480e598e3  LICENSE\n"
  },
  {
    "path": "package/libeastl/libeastl.mk",
    "content": "################################################################################\n#\n# libeastl\n#\n################################################################################\n\nLIBEASTL_VERSION = 45469730d641868ce05433fff2e199510c7d45c3\nLIBEASTL_SITE = $(call github,electronicarts,EASTL,$(LIBEASTL_VERSION))\nLIBEASTL_LICENSE = BSD-3-Clause\nLIBEASTL_LICENSE_FILES = LICENSE\nLIBEASTL_INSTALL_STAGING = YES\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libebml/0001-include-appropriate-header-files-for-std-numeric_limits.patch",
    "content": "From f0bfd53647961e799a43d918c46cf3b6bff89806 Mon Sep 17 00:00:00 2001\nFrom: Moritz Bunkus <mo@bunkus.online>\nDate: Sat, 27 Feb 2021 20:36:52 +0100\nSubject: [PATCH] include appropriate header files for std::numeric_limits\n\nFixes #80.\n\n[Retrieved (and updated to remove ChangeLog update) from:\nhttps://github.com/Matroska-Org/libebml/commit/f0bfd53647961e799a43d918c46cf3b6bff89806]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n ChangeLog                 | 4 ++++\n src/EbmlString.cpp        | 1 +\n src/EbmlUnicodeString.cpp | 1 +\n 3 files changed, 6 insertions(+)\n\ndiff --git a/src/EbmlString.cpp b/src/EbmlString.cpp\nindex 27e55fd..4c05fcf 100644\n--- a/src/EbmlString.cpp\n+++ b/src/EbmlString.cpp\n@@ -34,6 +34,7 @@\n   \\author Steve Lhomme     <robux4 @ users.sf.net>\n */\n #include <cassert>\n+#include <limits>\n \n #include \"ebml/EbmlString.h\"\n \ndiff --git a/src/EbmlUnicodeString.cpp b/src/EbmlUnicodeString.cpp\nindex 496a16a..99fc073 100644\n--- a/src/EbmlUnicodeString.cpp\n+++ b/src/EbmlUnicodeString.cpp\n@@ -36,6 +36,7 @@\n */\n \n #include <cassert>\n+#include <limits>\n \n #include \"ebml/EbmlUnicodeString.h\"\n \n"
  },
  {
    "path": "package/libebml/Config.in",
    "content": "config BR2_PACKAGE_LIBEBML\n\tbool \"libebml\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Access library for the EBML (Extensible Binary Meta\n\t  Language, a binary derivative of XML) format.\n\n\t  http://matroska.org\n\ncomment \"libebml needs a toolchain w/ C++, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/libebml/libebml.hash",
    "content": "# Locally calculated\nsha256  41c7237ce05828fb220f62086018b080af4db4bb142f31bec0022c925889b9f2  libebml-1.4.2.tar.xz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSE.LGPL\n"
  },
  {
    "path": "package/libebml/libebml.mk",
    "content": "################################################################################\n#\n# libebml\n#\n################################################################################\n\nLIBEBML_VERSION = 1.4.2\nLIBEBML_SOURCE = libebml-$(LIBEBML_VERSION).tar.xz\nLIBEBML_SITE = http://dl.matroska.org/downloads/libebml\nLIBEBML_INSTALL_STAGING = YES\nLIBEBML_LICENSE = LGPL-2.1+\nLIBEBML_LICENSE_FILES = LICENSE.LGPL\nLIBEBML_CPE_ID_VENDOR = matroska\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libebur128/Config.in",
    "content": "config BR2_PACKAGE_LIBEBUR128\n\tbool \"libebur128\"\n\t# build system has no support to disable shared linking\n\t# leading to a build error with a static-only toolchain\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  libebur128 is a library that implements the EBU R 128 standard\n\t  for loudness normalization.\n\n\t  https://github.com/jiixyj/libebur128\n\ncomment \"libebur128 needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libebur128/libebur128.hash",
    "content": "# Locally computed\nsha256  baa7fc293a3d4651e244d8022ad03ab797ca3c2ad8442c43199afe8059faa613  libebur128-1.2.6.tar.gz\nsha256  d6b4754bb67bdd08b97d5d11b2d7434997a371585a78fe77007149df3af8d09c  COPYING\n"
  },
  {
    "path": "package/libebur128/libebur128.mk",
    "content": "################################################################################\n#\n# libebur128\n#\n################################################################################\n\nLIBEBUR128_VERSION = 1.2.6\nLIBEBUR128_SITE = $(call github,jiixyj,libebur128,v$(LIBEBUR128_VERSION))\nLIBEBUR128_LICENSE = MIT\nLIBEBUR128_LICENSE_FILES = COPYING\nLIBEBUR128_INSTALL_STAGING = YES\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libedit/0001-check-bsd-functions-in-libbsd.patch",
    "content": "configure: on Linux, the BSD functions require linking against libbsd\n\nSigned-off-by: \"Fabrice Fontaine\" <fontaine.fabrice@gmail.com>\n(Rebased against 20170329-3.1)\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n(Rebased against 20150325-3.1)\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -durN libedit-20130712-3.1.orig/configure.ac libedit-20130712-3.1/configure.ac\n--- libedit-20130712-3.1.orig/configure.ac\t2013-07-12 20:39:22.000000000 +0200\n+++ libedit-20130712-3.1/configure.ac\t2013-07-28 23:35:35.012676469 +0200\n@@ -117,6 +117,10 @@\n #AC_FUNC_REALLOC\n AC_TYPE_SIGNAL\n AC_FUNC_STAT\n+\n+# Search for libbsd for *vis functions\n+AC_CHECK_LIB([bsd], [vis])\n+\n AC_CHECK_FUNCS([endpwent isascii memchr memset re_comp regcomp strcasecmp strchr strcspn strdup strerror strrchr strstr strtol issetugid wcsdup strlcpy strlcat getline vis strvis strunvis __secure_getenv secure_getenv])\n\n # strlcpy\n"
  },
  {
    "path": "package/libedit/Config.in",
    "content": "config BR2_PACKAGE_LIBEDIT\n\tbool \"libedit\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  The editline library (from BSD) provides generic line editing\n\t  and history functions. It slightly resembles GNU readline.\n\n\t  The official homepage is at:\n\t  http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-5-0/src/lib/libedit/\n\n\t  Jess Thrysoee maintains an autotoolified package, which we use\n\t  in Buildroot as it makes it much simpler than using the\n\t  upstream sources which require pmake.\n\n\t  http://www.thrysoee.dk/editline\n\ncomment \"libedit needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/libedit/libedit.hash",
    "content": "# Locally computed\nsha256  dbb82cb7e116a5f8025d35ef5b4f7d4a3cdd0a3909a146a39112095a2d229071  libedit-20191231-3.1.tar.gz\nsha256  9da6c9c74987a36c84302982799d17d2f748ba1c1c0c471425716173c1d07649  COPYING\n"
  },
  {
    "path": "package/libedit/libedit.mk",
    "content": "################################################################################\n#\n# libedit\n#\n################################################################################\n\nLIBEDIT_VERSION = 20191231-3.1\nLIBEDIT_SITE = http://www.thrysoee.dk/editline\nLIBEDIT_INSTALL_STAGING = YES\nLIBEDIT_DEPENDENCIES = ncurses\nLIBEDIT_LICENSE = BSD-3-Clause\nLIBEDIT_LICENSE_FILES = COPYING\n\n# We're patching configure.ac\nLIBEDIT_AUTORECONF = YES\n\n# musl is ISO 10646 compliant but doesn't define __STDC_ISO_10646__,\n# so let's define it manually\nifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)\nLIBEDIT_CONF_OPTS += CFLAGS=\"$(TARGET_CFLAGS) -D__STDC_ISO_10646__=201103L\"\nendif\n\n# Note: libbsd required for *vis functions, but works only with a toolchain\n# with __progname; otherwise, some features are disabled, as if libbsd was\n# missing entirely.\nifeq ($(BR2_PACKAGE_LIBBSD),y)\nLIBEDIT_DEPENDENCIES += libbsd\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libee/Config.in",
    "content": "config BR2_PACKAGE_LIBEE\n\tbool \"libee\"\n\tselect BR2_PACKAGE_LIBESTR\n\thelp\n\t  An Event Expression Library inspired by CEE.\n\n\t  CEE is an upcoming standard used to describe network\n\t  events in a number of normalized formats. It's goal is\n\t  to unify they currently many different representations\n\t  that exist in the industry.\n\n\t  The core idea of libee is to provide a small but hopefully\n\t  convenient API layer above the CEE standard. However, CEE\n\t  is not finished. At the time of this writing, CEE is under\n\t  heavy development and even some of its core data structures\n\t  (like the data dictionary and taxonmy) have not been fully\n\t  specified.\n\n\t  http://www.libee.org\n"
  },
  {
    "path": "package/libee/libee.hash",
    "content": "# From http://www.libee.org/download/libee-0-4-1/\nmd5\t7bbf4160876c12db6193c06e2badedb2\tlibee-0.4.1.tar.gz\n\n# Hash for license file:\nsha256\t275fecbf835387e042ba96884f0f05356a485a6ea8449b2c5295cc11652ad439\tCOPYING\n"
  },
  {
    "path": "package/libee/libee.mk",
    "content": "################################################################################\n#\n# libee\n#\n################################################################################\n\nLIBEE_VERSION = 0.4.1\nLIBEE_SITE = http://www.libee.org/download/files/download\nLIBEE_LICENSE = LGPL-2.1+\nLIBEE_LICENSE_FILES = COPYING\nLIBEE_DEPENDENCIES = libestr host-pkgconf\nLIBEE_INSTALL_STAGING = YES\n\nLIBEE_MAKE = $(MAKE1)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libenca/Config.in",
    "content": "config BR2_PACKAGE_LIBENCA\n\tbool \"libenca\"\n\thelp\n\t  Extremely Naive Charset Analyser\n\n\t  http://cihar.com/software/enca/\n"
  },
  {
    "path": "package/libenca/libenca.hash",
    "content": "# Locally calculated\nsha256 3a487eca40b41021e2e4b7a6440b97d822e6532db5464471f572ecf77295e8b8  enca-1.19.tar.xz\nsha256 87f1bd4a52b4029476b684fcdd51fed3c6b2540e462d3c2d3bfc9be4558b2825  COPYING\n"
  },
  {
    "path": "package/libenca/libenca.mk",
    "content": "################################################################################\n#\n# libenca\n#\n################################################################################\n\nLIBENCA_VERSION = 1.19\nLIBENCA_SITE = http://dl.cihar.com/enca\nLIBENCA_SOURCE = enca-$(LIBENCA_VERSION).tar.xz\nLIBENCA_INSTALL_STAGING = YES\nLIBENCA_LICENSE = GPL-2.0\nLIBENCA_LICENSE_FILES = COPYING\nLIBENCA_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\nLIBENCA_CONF_ENV += \\\n\tac_cv_file__dev_random=yes \\\n\tac_cv_file__dev_urandom=yes \\\n\tac_cv_file__dev_arandom=no \\\n\tac_cv_file__dev_srandom=no\n\ndefine LIBENCA_MAKE_HOST_TOOL\n\t$(MAKE) -C $(@D)/tools $(HOST_CONFIGURE_OPTS) make_hash\nendef\n\nLIBENCA_PRE_BUILD_HOOKS += LIBENCA_MAKE_HOST_TOOL\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libepoxy/Config.in",
    "content": "config BR2_PACKAGE_LIBEPOXY\n\tbool \"libepoxy\"\n\tdepends on BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_XUTIL_UTIL_MACROS\n\thelp\n\t  Epoxy is a library for handling OpenGL function pointer\n\t  management for you.\n\n\t  https://github.com/anholt/libepoxy\n\ncomment \"libepoxy needs an OpenGL and/or OpenGL EGL backend\"\n\tdepends on !BR2_PACKAGE_HAS_LIBEGL && !BR2_PACKAGE_HAS_LIBGL\n"
  },
  {
    "path": "package/libepoxy/libepoxy.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/libepoxy/1.5/libepoxy-1.5.9.sha256sum\nsha256  d168a19a6edfdd9977fef1308ccf516079856a4275cf876de688fb7927e365e4  libepoxy-1.5.9.tar.xz\n\n# Hashes for license files:\nsha256  8d5144666f9c4df9bbd69b8900086d5979259152a1060421cdcc0fb9061a1c12  COPYING\n"
  },
  {
    "path": "package/libepoxy/libepoxy.mk",
    "content": "################################################################################\n#\n# libepoxy\n#\n################################################################################\n\nLIBEPOXY_VERSION_MAJOR = 1.5\nLIBEPOXY_VERSION = $(LIBEPOXY_VERSION_MAJOR).9\nLIBEPOXY_SITE = http://ftp.gnome.org/pub/gnome/sources/libepoxy/$(LIBEPOXY_VERSION_MAJOR)\nLIBEPOXY_SOURCE = libepoxy-$(LIBEPOXY_VERSION).tar.xz\nLIBEPOXY_INSTALL_STAGING = YES\nLIBEPOXY_DEPENDENCIES = host-pkgconf xutil_util-macros\nLIBEPOXY_LICENSE = MIT\nLIBEPOXY_LICENSE_FILES = COPYING\nLIBEPOXY_CONF_OPTS += -Ddocs=false -Dtests=false\n\nifeq ($(BR2_PACKAGE_HAS_LIBEGL),y)\nLIBEPOXY_CONF_OPTS += -Degl=yes\nLIBEPOXY_DEPENDENCIES += libegl\nelse\nLIBEPOXY_CONF_OPTS += -Degl=no\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_XLIB_LIBX11),yy)\nLIBEPOXY_CONF_OPTS += -Dglx=yes -Dx11=true\nLIBEPOXY_DEPENDENCIES += libgl xlib_libX11\nelse\nLIBEPOXY_CONF_OPTS += -Dglx=no -Dx11=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/liberation/Config.in",
    "content": "config BR2_PACKAGE_LIBERATION\n\tbool \"Liberation (Free fonts)\"\n\thelp\n\t  The Liberation Fonts are intended to be replacements for the\n\t  three most commonly used fonts on Microsoft systems:\n\t  Times New Roman, Arial, and Courier New.\n\n\t  https://github.com/liberationfonts/liberation-fonts\n\nif BR2_PACKAGE_LIBERATION\n\nconfig BR2_PACKAGE_LIBERATION_MONO\n\tbool \"mono fonts\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBERATION_SANS\n\tbool \"sans fonts\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBERATION_SERIF\n\tbool \"serif fonts\"\n\tdefault y\n\nendif\n"
  },
  {
    "path": "package/liberation/liberation.hash",
    "content": "# Locally calculated\nsha256  7191c669bf38899f73a2094ed00f7b800553364f90e2637010a69c0e268f25d0  liberation-fonts-ttf-2.1.5.tar.gz\nsha256  93fed46019c38bbe566b479d22148e2e8a1e85ada614accb0211c37b2c61c19b  LICENSE\n"
  },
  {
    "path": "package/liberation/liberation.mk",
    "content": "################################################################################\n#\n# liberation\n#\n################################################################################\n\nLIBERATION_VERSION = 2.1.5\nLIBERATION_SITE = https://github.com/liberationfonts/liberation-fonts/files/7261482\nLIBERATION_SOURCE = liberation-fonts-ttf-$(LIBERATION_VERSION).tar.gz\nLIBERATION_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/liberation\nLIBERATION_LICENSE = OFL-1.1\nLIBERATION_LICENSE_FILES = LICENSE\n\nifeq ($(BR2_PACKAGE_LIBERATION_MONO),y)\ndefine LIBERATION_INSTALL_MONO\n\t$(INSTALL) -m 644 $(@D)/LiberationMono*.ttf $(LIBERATION_TARGET_DIR)\nendef\nendif\n\nifeq ($(BR2_PACKAGE_LIBERATION_SANS),y)\ndefine LIBERATION_INSTALL_SANS\n\t$(INSTALL) -m 644 $(@D)/LiberationSans*.ttf $(LIBERATION_TARGET_DIR)\nendef\nendif\n\nifeq ($(BR2_PACKAGE_LIBERATION_SERIF),y)\ndefine LIBERATION_INSTALL_SERIF\n\t$(INSTALL) -m 644 $(@D)/LiberationSerif*.ttf $(LIBERATION_TARGET_DIR)\nendef\nendif\n\ndefine LIBERATION_INSTALL_TARGET_CMDS\n\tmkdir -p $(LIBERATION_TARGET_DIR)\n\t$(LIBERATION_INSTALL_MONO)\n\t$(LIBERATION_INSTALL_SANS)\n\t$(LIBERATION_INSTALL_SERIF)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libesmtp/Config.in",
    "content": "config BR2_PACKAGE_LIBESMTP\n\tbool \"libesmtp\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Library for sending emails through SMTP.\n\n\t  https://libesmtp.github.io\n\ncomment \"libesmtp needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libesmtp/libesmtp.hash",
    "content": "# Locally calculated\nsha256  32bc3614ca12d21c7d933f32d43410e8744b6f91fdca7732da9877a385e4e6c3  libesmtp-1.1.0.tar.gz\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  COPYING.GPL\nsha256  20c17d8b8c48a600800dfd14f95d5cb9ff47066a9641ddeab48dc54aec96e331  LICENSE\n"
  },
  {
    "path": "package/libesmtp/libesmtp.mk",
    "content": "################################################################################\n#\n# libesmtp\n#\n################################################################################\n\nLIBESMTP_VERSION = 1.1.0\nLIBESMTP_SITE = $(call github,libesmtp,libESMTP,v$(LIBESMTP_VERSION))\nLIBESMTP_INSTALL_STAGING = YES\nLIBESMTP_LICENSE = GPL-2.0+ (examples), LGPL-2.1+ (library)\nLIBESMTP_LICENSE_FILES = COPYING.GPL LICENSE\nLIBESMTP_CPE_ID_VENDOR = libesmtp_project\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBESMTP_CONF_OPTS += -Dtls=enabled\nLIBESMTP_DEPENDENCIES += openssl\nelse\nLIBESMTP_CONF_OPTS += -Dtls=disabled\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nLIBESMTP_CONF_OPTS += -Dpthreads=enabled\nelse\nLIBESMTP_CONF_OPTS += -Dpthreads=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libestr/Config.in",
    "content": "config BR2_PACKAGE_LIBESTR\n\tbool \"libestr\"\n\thelp\n\t  Some essentials for string handling (and a bit more)\n\n\t  http://libestr.adiscon.com/\n"
  },
  {
    "path": "package/libestr/libestr.hash",
    "content": "# From http://libestr.adiscon.com/download/libestr-0-1-11/\nsha256\t46632b2785ff4a231dcf241eeb0dcb5fc0c7d4da8ee49cf5687722cdbe8b2024\tlibestr-0.1.11.tar.gz\n\n# Hash for license file:\nsha256\t835b4793da5cbb8965fbd63905b55a4cb4310b7d1b882077d23066b08f901ff8\tCOPYING\n"
  },
  {
    "path": "package/libestr/libestr.mk",
    "content": "################################################################################\n#\n# libestr\n#\n################################################################################\n\nLIBESTR_VERSION = 0.1.11\nLIBESTR_SITE = http://libestr.adiscon.com/files/download\nLIBESTR_LICENSE = LGPL-2.1+\nLIBESTR_LICENSE_FILES = COPYING\nLIBESTR_CPE_ID_VENDOR = adiscon\nLIBESTR_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libev/Config.in",
    "content": "config BR2_PACKAGE_LIBEV\n\tbool \"libev\"\n\thelp\n\t  Userspace library for handling asynchronous notifications\n\n\t  http://software.schmorp.de/pkg/libev.html\n"
  },
  {
    "path": "package/libev/libev.hash",
    "content": "# Locally calculated\nsha256 2d5526fc8da4f072dd5c73e18fbb1666f5ef8ed78b73bba12e195cfdd810344e  libev-4.27.tar.gz\nsha256 c4dd1a5bc38b041a320b93c5d6c08f5c41a63f2ce718ee16cfcb757fad448199  LICENSE\n"
  },
  {
    "path": "package/libev/libev.mk",
    "content": "################################################################################\n#\n# libev\n#\n################################################################################\n\nLIBEV_VERSION = 4.27\nLIBEV_SITE = http://dist.schmorp.de/libev/Attic\nLIBEV_INSTALL_STAGING = YES\nLIBEV_LICENSE = BSD-2-Clause or GPL-2.0+\nLIBEV_LICENSE_FILES = LICENSE\n\n# The 'compatibility' event.h header conflicts with libevent\n# It's completely unnecessary for BR packages so remove it\ndefine LIBEV_DISABLE_EVENT_H_INSTALL\n\t$(SED) 's/ event.h//' $(@D)/Makefile.in\nendef\nLIBEV_POST_PATCH_HOOKS += LIBEV_DISABLE_EVENT_H_INSTALL\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libevdev/Config.in",
    "content": "config BR2_PACKAGE_LIBEVDEV\n\tbool \"libevdev\"\n\thelp\n\t  libevdev is a wrapper library for evdev devices\n\n\t  http://freedesktop.org/wiki/Software/libevdev/\n"
  },
  {
    "path": "package/libevdev/libevdev.hash",
    "content": "# From https://lists.freedesktop.org/archives/input-tools/2021-February/001557.html\nsha256  63f4ea1489858a109080e0b40bd43e4e0903a1e12ea888d581db8c495747c2d0  libevdev-1.11.0.tar.xz\nsha512  b3c6b4a1532c5142f3684b920dcdd497a5368aec516e8c389e2c8f9d1eaba16c907b2a7f2c82a3c3ff89bb4d0ae5503c736098c095f9f1bc98f0668e99bf639d  libevdev-1.11.0.tar.xz\n\n# Hash for license files:\nsha256  6f13de7ce28e4948ba95170e0723ee1254c1978ce1f127af82aeca597b567cb9  COPYING\n"
  },
  {
    "path": "package/libevdev/libevdev.mk",
    "content": "################################################################################\n#\n# libevdev\n#\n################################################################################\n\nLIBEVDEV_VERSION = 1.11.0\nLIBEVDEV_SITE = http://www.freedesktop.org/software/libevdev\nLIBEVDEV_SOURCE = libevdev-$(LIBEVDEV_VERSION).tar.xz\nLIBEVDEV_LICENSE = MIT\nLIBEVDEV_LICENSE_FILES = COPYING\n\nLIBEVDEV_DEPENDENCIES = $(BR2_PYTHON3_HOST_DEPENDENCY)\n\nLIBEVDEV_INSTALL_STAGING = YES\n\nLIBEVDEV_CONF_OPTS += \\\n\t-Dtests=disabled \\\n\t-Ddocumentation=disabled \\\n\t-Dcoverity=false\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libevent/Config.in",
    "content": "config BR2_PACKAGE_LIBEVENT\n\tbool \"libevent\"\n\thelp\n\t  Userspace library for handling asynchronous notifications\n\n\t  http://libevent.org\n"
  },
  {
    "path": "package/libevent/libevent.hash",
    "content": "# locally computed\nsha1  cd55656a9b5bed630b08f05495230affb7996b21  libevent-2.1.12-stable.tar.gz\nsha256  92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb  libevent-2.1.12-stable.tar.gz\nsha256  ff02effc9b331edcdac387d198691bfa3e575e7d244ad10cb826aa51ef085670  LICENSE\n"
  },
  {
    "path": "package/libevent/libevent.mk",
    "content": "################################################################################\n#\n# libevent\n#\n################################################################################\n\nLIBEVENT_VERSION = 2.1.12\nLIBEVENT_SITE = https://github.com/libevent/libevent/releases/download/release-$(LIBEVENT_VERSION)-stable\nLIBEVENT_SOURCE = libevent-$(LIBEVENT_VERSION)-stable.tar.gz\nLIBEVENT_INSTALL_STAGING = YES\nLIBEVENT_LICENSE = BSD-3-Clause, OpenBSD\nLIBEVENT_LICENSE_FILES = LICENSE\nLIBEVENT_CPE_ID_VENDOR = libevent_project\nLIBEVENT_CONF_OPTS = \\\n\t--disable-libevent-regress \\\n\t--disable-samples\nHOST_LIBEVENT_CONF_OPTS = \\\n\t--disable-libevent-regress \\\n\t--disable-samples \\\n\t--disable-openssl\n\ndefine LIBEVENT_REMOVE_PYSCRIPT\n\trm $(TARGET_DIR)/usr/bin/event_rpcgen.py\nendef\n\n# libevent installs a python script to target - get rid of it if we\n# don't have python support enabled\nifneq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)\nLIBEVENT_POST_INSTALL_TARGET_HOOKS += LIBEVENT_REMOVE_PYSCRIPT\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBEVENT_DEPENDENCIES += host-pkgconf openssl\nLIBEVENT_CONF_OPTS += --enable-openssl\nelse\nLIBEVENT_CONF_OPTS += --disable-openssl\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libexif/0001-libexif-exif-gps-ifd.c-fix-build-with-gcc-4.8.patch",
    "content": "From 0c925491dea995ca96770159158bb8d57a48d84b Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 15 Sep 2021 07:56:32 +0200\nSubject: [PATCH] libexif/exif-gps-ifd.c: fix build with gcc 4.8\n\nFix the following build failure with gcc 4.8 raised since version 0.6.23 and\nhttps://github.com/libexif/libexif/commit/e12c3529813cd16d50bf0a1c759093e1039dffec:\n\nexif-gps-ifd.c: In function 'exif_get_gps_tag_info':\nexif-gps-ifd.c:62:3: error: 'for' loop initial declarations are only allowed in C99 mode\n   for (int i = 0; i < sizeof(exif_gps_ifd_tags) / sizeof(ExifGPSIfdTagInfo); ++i) {\n   ^\nexif-gps-ifd.c:62:3: note: use option -std=c99 or -std=gnu99 to compile your code\n\nFixes:\n - http://autobuild.buildroot.org/results/7dd222e06d1e6611449fb8fe7516817c9ad43d65\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/libexif/libexif/pull/72]\n---\n libexif/exif-gps-ifd.c | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/libexif/exif-gps-ifd.c b/libexif/exif-gps-ifd.c\nindex 9c9ba70..de5f950 100644\n--- a/libexif/exif-gps-ifd.c\n+++ b/libexif/exif-gps-ifd.c\n@@ -59,7 +59,8 @@ const static struct ExifGPSIfdTagInfo exif_gps_ifd_tags[] = {\n };\n \n const ExifGPSIfdTagInfo *exif_get_gps_tag_info(ExifTag tag) {\n-  for (int i = 0; i < sizeof(exif_gps_ifd_tags) / sizeof(ExifGPSIfdTagInfo); ++i) {\n+  int i;\n+  for (i = 0; i < sizeof(exif_gps_ifd_tags) / sizeof(ExifGPSIfdTagInfo); ++i) {\n     if (tag==exif_gps_ifd_tags[i].tag)\n       return &exif_gps_ifd_tags[i];\n   }\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/libexif/Config.in",
    "content": "config BR2_PACKAGE_LIBEXIF\n\tbool \"libexif\"\n\thelp\n\t  Most digital cameras produce EXIF files, which are JPEG\n\t  files with extra tags that contain information about the\n\t  image. The EXIF library allows you to parse an EXIF file\n\t  and read the data from those tags.\n\n\t  https://libexif.github.io\n"
  },
  {
    "path": "package/libexif/libexif.hash",
    "content": "# Locally computed:\nsha256  a740a99920eb81ae0aa802bb46e683ce6e0cde061c210f5d5bde5b8572380431  libexif-0.6.23.tar.xz\nsha256  36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89  COPYING\n"
  },
  {
    "path": "package/libexif/libexif.mk",
    "content": "################################################################################\n#\n# libexif\n#\n################################################################################\n\nLIBEXIF_VERSION = 0.6.23\nLIBEXIF_SOURCE = libexif-$(LIBEXIF_VERSION).tar.xz\nLIBEXIF_SITE = \\\n\thttps://github.com/libexif/libexif/releases/download/v$(LIBEXIF_VERSION)\nLIBEXIF_INSTALL_STAGING = YES\nLIBEXIF_DEPENDENCIES = host-pkgconf\nLIBEXIF_LICENSE = LGPL-2.1+\nLIBEXIF_LICENSE_FILES = COPYING\nLIBEXIF_CPE_ID_VENDOR = libexif_project\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libfastjson/Config.in",
    "content": "config BR2_PACKAGE_LIBFASTJSON\n\tbool \"libfastjson\"\n\t# uses the __sync_*_4 intrisics, or pthreads to emulate atomicity\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Libfastjson - A fast json library for C\n\n\t  Libfastjson is a fork from json-c. The aim of this project\n\t  is not to provide a slightly modified clone of json-c.\n\t  Its aim is to provide:\n\n\t  - a small library with essential json handling functions\n\t  - sufficiently good json support (not 100% standards\n\t    compliant)\n\t  - be very fast in processing\n\n\t  https://github.com/rsyslog/libfastjson/\n"
  },
  {
    "path": "package/libfastjson/libfastjson.hash",
    "content": "# Locally calculated\nsha256  881f954633aa76931e4c756ece0bda6fd8a673c6e66955a3db3b2bb9d6bbff72  libfastjson-0.99.9.tar.gz\nsha256  b29370bbfa98816e1fca0901f18149d920736771bfd68b4ee0eb00c78b38d245  COPYING\n"
  },
  {
    "path": "package/libfastjson/libfastjson.mk",
    "content": "################################################################################\n#\n# libfastjson\n#\n################################################################################\n\nLIBFASTJSON_VERSION = 0.99.9\nLIBFASTJSON_SITE = $(call github,rsyslog,libfastjson,v$(LIBFASTJSON_VERSION))\nLIBFASTJSON_INSTALL_STAGING = YES\nLIBFASTJSON_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'\n# From git\nLIBFASTJSON_AUTORECONF = YES\nLIBFASTJSON_LICENSE = MIT\nLIBFASTJSON_LICENSE_FILES = COPYING\nLIBFASTJSON_CPE_ID_VENDOR = rsyslog\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libfcgi/0001-link-against-math.patch",
    "content": "Link libfcgi against the math library.\n\nSigned-off-by: Thomas Claveirole <thomas.claveirole@green-communications.fr>\n[Louis: rebase on top of 2.4.2]\nSigned-off-by: Louis Rannou <louis.rannou@smile.fr>\n\nIndex: b/libfcgi/Makefile.am\n===================================================================\n--- a/libfcgi/Makefile.am\n+++ b/libfcgi/Makefile.am\n@@ -18,4 +18,5 @@\n                      os_@SYSTEM@.c\n libfcgi_la_CC      = @PTHREAD_CC@\n libfcgi_la_CFLAGS  = @PTHREAD_CFLAGS@\n+libfcgi_la_LIBADD  = -lm\n libfcgi_la_LDFLAGS = @EXTRA_LIBS@ -no-undefined\n\n libfcgi___la_SOURCES = $(INCLUDE_FILES)       \\\n"
  },
  {
    "path": "package/libfcgi/0002-disable-examples.patch",
    "content": "Common subdirectories: libfcgi-2.4.0.orig/cgi-fcgi and libfcgi-2.4.0/cgi-fcgi\nCommon subdirectories: libfcgi-2.4.0.orig/doc and libfcgi-2.4.0/doc\nCommon subdirectories: libfcgi-2.4.0.orig/examples and libfcgi-2.4.0/examples\nCommon subdirectories: libfcgi-2.4.0.orig/images and libfcgi-2.4.0/images\nCommon subdirectories: libfcgi-2.4.0.orig/include and libfcgi-2.4.0/include\nCommon subdirectories: libfcgi-2.4.0.orig/java and libfcgi-2.4.0/java\nCommon subdirectories: libfcgi-2.4.0.orig/libfcgi and libfcgi-2.4.0/libfcgi\ndiff -du libfcgi-2.4.0.orig/Makefile.am libfcgi-2.4.0/Makefile.am\n--- libfcgi-2.4.0.orig/Makefile.am\t2001-12-22 14:05:39.000000000 +0100\n+++ libfcgi-2.4.0/Makefile.am\t2014-07-19 16:56:21.935216540 +0200\n@@ -4,7 +4,7 @@\n #  $Id: Makefile.am,v 1.7 2001/12/22 13:05:39 robs Exp $\n #\n \n-SUBDIRS = libfcgi cgi-fcgi examples include\n+SUBDIRS = libfcgi cgi-fcgi include\n \n include_HEADERS = fcgi_config.h\n \nCommon subdirectories: libfcgi-2.4.0.orig/perl and libfcgi-2.4.0/perl\nCommon subdirectories: libfcgi-2.4.0.orig/Win32 and libfcgi-2.4.0/Win32\n"
  },
  {
    "path": "package/libfcgi/Config.in",
    "content": "config BR2_PACKAGE_LIBFCGI\n\tbool \"libfcgi\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  FCGI, a fastcgi developer library for C/C++\n\n\t  https://fastcgi-archives.github.io/\n"
  },
  {
    "path": "package/libfcgi/libfcgi.hash",
    "content": "# Locally calculated\nsha256\t1fe83501edfc3a7ec96bb1e69db3fd5ea1730135bd73ab152186fd0b437013bc\tlibfcgi-2.4.2.tar.gz\nsha256\tf0a8fe4513a43e8eebb24cdcf9d2e7efc52e4d8259178c6d76d3d84418397d81\tLICENSE.TERMS\n"
  },
  {
    "path": "package/libfcgi/libfcgi.mk",
    "content": "################################################################################\n#\n# libfcgi\n#\n################################################################################\n\nLIBFCGI_VERSION = 2.4.2\nLIBFCGI_SITE = $(call github,FastCGI-Archives,fcgi2,$(LIBFCGI_VERSION))\nLIBFCGI_LICENSE = OML\nLIBFCGI_LICENSE_FILES = LICENSE.TERMS\nLIBFCGI_CPE_ID_VENDOR = fastcgi\nLIBFCGI_CPE_ID_PRODUCT = fcgi\nLIBFCGI_INSTALL_STAGING = YES\nLIBFCGI_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libffi/0001-Fix-installation-location-of-libffi.patch",
    "content": "From 580f46a7bc6e9fea3a2227b5268cc3aed1d60e3b Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Thu, 7 Feb 2013 22:26:56 +0100\nSubject: [PATCH] Fix installation location of libffi\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe libffi is currently declared as toolexeclib_LTLIBRARIES. In many\ncases, toolexeclib libraries will be installed in /usr/lib, so it\ndoesn't make any difference.\n\nHowever, with multilib toolchains, they get installed in a\nsubdirectory of /usr/lib/. For example, with a Sourcery CodeBench\nPowerPC toolchain, if the e500mc multilib variant is used, the libffi\nlibrary gets installed in /usr/lib/te500mc/. This is due to the\nfollowing code in the configure script:\n\n  multi_os_directory=`$CC -print-multi-os-directory`\n  case $multi_os_directory in\n    .) ;; # Avoid trailing /.\n    *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;\n  esac\n\nOnce the library is installed in /usr/lib/te500mc/, nothing works\nbecause this installation location is inconsistent with the\ninstallation location declared in libffi.pc.\n\nSo, instead of using this bizarre toolexeclib_LTLIBRARIES, simply use\nthe more standard lib_LTLIBRARIES, which ensures that the libffi\nlibrary is always installed in /usr/lib.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[unfuzz for 3.2.1]\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n Makefile.am | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 0e40451..309474c 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -104,7 +104,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS)\n \n MAKEOVERRIDES=\n \n-toolexeclib_LTLIBRARIES = libffi.la\n+lib_LTLIBRARIES = libffi.la\n noinst_LTLIBRARIES = libffi_convenience.la\n \n libffi_la_SOURCES = src/prep_cif.c src/types.c \\\n-- \n2.5.3\n\n"
  },
  {
    "path": "package/libffi/0002-Fix-use-of-compact-eh-frames-on-MIPS.patch",
    "content": "From 31b6b6bc14197cd4183bdbd311fddeb36b5ae100 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Sat, 19 Sep 2015 22:53:29 +0200\nSubject: [PATCH] Fix use of compact eh frames on MIPS\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nNewer MIPS toolchains use a different (compact) eh_frame format.\nlibffi don't like them, so we have to switch to the older format.\n\nThis patch add -mno-compact-eh to CFLAGS when compiling for\nMips and compiler support it.\n\nSigned-off-by: Jérôme Pouiller <jezz@sysmic.org>\n[unfuzz for 3.2.1]\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n configure.ac | 10 ++++++++++\n 1 file changed, 10 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex a7bf5ee..36cd0d4 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -469,6 +469,16 @@ esac\n AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1)\n AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE)\n \n+if test x$TARGET = xMIPS; then\n+    save_CFLAGS=\"$CFLAGS\"\n+    CFLAGS=-mno-compact-eh\n+    AC_MSG_CHECKING([whether the C compiler needs -mno-compact-eh])\n+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],\n+                      [AC_MSG_RESULT([yes])]; [save_CFLAGS=\"$save_CFLAGS -mno-compact-eh\"],\n+                      [AC_MSG_RESULT([no])])\n+    CFLAGS=\"$save_CFLAGS\"\n+fi\n+\n if test x$TARGET = xX86_64; then\n     AC_CACHE_CHECK([toolchain supports unwind section type],\n \tlibffi_cv_as_x86_64_unwind_section_type, [\n-- \n2.5.3\n\n"
  },
  {
    "path": "package/libffi/0003-libffi-enable-hardfloat-in-the-MIPS-assembly-code.patch",
    "content": "From 48bc37fabbc685b1e3293055bd33ca66c619305e Mon Sep 17 00:00:00 2001\nFrom: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\nDate: Wed, 13 Jan 2016 14:49:59 +0000\nSubject: [PATCH] libffi: enable hardfloat in the MIPS assembly code\n\nThis way it will be possible to build it for soft-float. This is only a\ntemporary fix. The package needs to be fixed properly.\n\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n[Update for 3.3-rc0]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/mips/n32.S | 1 +\n src/mips/o32.S | 1 +\n 2 files changed, 2 insertions(+)\n\ndiff --git a/src/mips/n32.S b/src/mips/n32.S\nindex c6985d3..dc842d5 100644\n--- a/src/mips/n32.S\n+++ b/src/mips/n32.S\n@@ -44,6 +44,7 @@\n #endif\n #if !defined(__mips_isa_rev) || (__mips_isa_rev<6)\n \t.set mips4\n #endif\n+\t.set hardfloat\n \t.text\n \t.align\t2\n \t.globl\tffi_call_N32\ndiff --git a/src/mips/o32.S b/src/mips/o32.S\nindex eb27981..b653daf 100644\n--- a/src/mips/o32.S\n+++ b/src/mips/o32.S\n@@ -42,6 +42,7 @@\n #define RA_OFF\t\t(SIZEOF_FRAME - 1 * FFI_SIZEOF_ARG)\n \n \t.abicalls\n+\t.set hardfloat\n \t.text\n \t.align\t2\n \t.globl\tffi_call_O32\n-- \n2.4.10\n\n"
  },
  {
    "path": "package/libffi/Config.in",
    "content": "config BR2_PACKAGE_LIBFFI\n\tbool \"libffi\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  The libffi library provides a portable, high level\n\t  programming interface to various calling conventions. This\n\t  allows a programmer to call any function specified by a call\n\t  interface description at run-time.\n\n\t  http://sourceware.org/libffi/\n\ncomment \"libffi needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libffi/libffi.hash",
    "content": "# Locally calculated\nsha256  540fb721619a6aba3bdeef7d940d8e9e0e6d2c193595bc243241b77ff9e93620  libffi-3.4.2.tar.gz\n# License files, locally calculated\nsha256  a61d06e8f7be57928e71e800eb9273b05cb8868c484108afe41e4305bb320dde  LICENSE\n"
  },
  {
    "path": "package/libffi/libffi.mk",
    "content": "################################################################################\n#\n# libffi\n#\n################################################################################\n\nLIBFFI_VERSION = 3.4.2\nLIBFFI_SITE = \\\n\thttps://github.com/libffi/libffi/releases/download/v$(LIBFFI_VERSION)\nLIBFFI_LICENSE = MIT\nLIBFFI_LICENSE_FILES = LICENSE\nLIBFFI_CPE_ID_VENDOR = libffi_project\nLIBFFI_INSTALL_STAGING = YES\n# We're patching Makefile.am\nLIBFFI_AUTORECONF = YES\n\n# The static exec trampolines is enabled by default since\n# libffi 3.4.2. However it doesn't work with gobject-introspection.\nLIBFFI_CONF_OPTS = --disable-exec-static-tramp\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libfm/0001-modules-fix-cross-compilation.patch",
    "content": "From 3bc935b732d1ff448727e90340e4be40ef6fc000 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 29 Apr 2018 20:22:29 +0200\nSubject: [PATCH] modules: fix cross-compilation\n\nDo not add -L$(libdir) to AM_LDFLAGS\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/modules/Makefile.am | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/src/modules/Makefile.am b/src/modules/Makefile.am\nindex e61f4e01..01c15bd4 100644\n--- a/src/modules/Makefile.am\n+++ b/src/modules/Makefile.am\n@@ -11,7 +11,6 @@ AM_CPPFLAGS = \\\n # tell libtool we compile module not library\n AM_LDFLAGS = \\\n \t-no-undefined -module -avoid-version -shared -export-dynamic \\\n-\t-L$(libdir) \\\n \t$(GIO_LIBS)\n \n # the module should be linked only with libfm, not libfm-gtk or whatever\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/libfm/Config.in",
    "content": "config BR2_PACKAGE_LIBFM\n\tbool \"libfm\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_INSTALL_LIBSTDCPP # libgtk2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # libgtk2 -> pango -> harfbuzz\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBGTK2 if !BR2_PACKAGE_LIBGTK3_X11\n\tselect BR2_PACKAGE_MENU_CACHE\n\thelp\n\t  A glib/gio-based library providing some file management\n\t  utilities and related-widgets missing in gtk+/glib. This is\n\t  the core of PCManFM.  The library is desktop independent\n\t  (not LXDE specific) and has clean API. It can be used to\n\t  develop other applications requiring file management\n\t  functionality. For example, you can create your own file\n\t  manager with facilities provided by libfm.\n\n\t  http://wiki.lxde.org/en/Libfm\n\ncomment \"libfm needs X.org and a toolchain w/ wchar, threads, C++, gcc >= 4.8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_XORG7\n"
  },
  {
    "path": "package/libfm/libfm.hash",
    "content": "# From https://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/LibFM/\nmd5  c87a0ff41ae77825079b2f785ec0741e  libfm-1.3.2.tar.xz\nsha1  7c5c14dd0615b457687966ce4e55c2d054bf93e1  libfm-1.3.2.tar.xz\n\n# Locally computed:\nsha256  a5042630304cf8e5d8cff9d565c6bd546f228b48c960153ed366a34e87cad1e5  libfm-1.3.2.tar.xz\nsha256  d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388  COPYING\nsha256  c3a3d93e111462f2b0292b56a6a7b87d342fd7156741d8b81b8b08723be4597e  src/extra/fm-xml-file.c\n"
  },
  {
    "path": "package/libfm/libfm.mk",
    "content": "################################################################################\n#\n# libfm\n#\n################################################################################\n\nLIBFM_VERSION = 1.3.2\nLIBFM_SOURCE = libfm-$(LIBFM_VERSION).tar.xz\nLIBFM_SITE = http://sourceforge.net/projects/pcmanfm/files\nLIBFM_DEPENDENCIES = menu-cache libglib2 cairo\nLIBFM_LICENSE = GPL-2.0+, LGPL-2.1+\nLIBFM_LICENSE_FILES = COPYING src/extra/fm-xml-file.c\nLIBFM_INSTALL_STAGING = YES\n# We're patching src/modules/Makefile.am\nLIBFM_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_LIBEXIF),y)\nLIBFM_CONF_OPTS += --enable-exif\nLIBFM_DEPENDENCIES += libexif\nelse\nLIBFM_CONF_OPTS += --disable-exif\nendif\n\nifeq ($(BR2_PACKAGE_LIBGTK3_X11),y)\nLIBFM_CONF_OPTS += --with-gtk=3\nLIBFM_DEPENDENCIES += libgtk3\nelse\nLIBFM_CONF_OPTS += --with-gtk=2\nLIBFM_DEPENDENCIES += libgtk2\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libfm-extra/Config.in",
    "content": "config BR2_PACKAGE_LIBFM_EXTRA\n\tbool \"libfm-extra\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  The libfm-extra package contains a library and other files\n\t  required by menu-cache-gen libexec of menu-cache\n\n\t  http://wiki.lxde.org/en/Libfm\n\ncomment \"libfm-extra needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libfm-extra/libfm-extra.hash",
    "content": "# From https://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/LibFM/\nmd5  c87a0ff41ae77825079b2f785ec0741e  libfm-1.3.2.tar.xz\nsha1  7c5c14dd0615b457687966ce4e55c2d054bf93e1  libfm-1.3.2.tar.xz\n\n# Locally computed:\nsha256  a5042630304cf8e5d8cff9d565c6bd546f228b48c960153ed366a34e87cad1e5  libfm-1.3.2.tar.gz\nsha256  d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388  COPYING\nsha256  c3a3d93e111462f2b0292b56a6a7b87d342fd7156741d8b81b8b08723be4597e  src/extra/fm-xml-file.c\n"
  },
  {
    "path": "package/libfm-extra/libfm-extra.mk",
    "content": "################################################################################\n#\n# libfm-extra\n#\n################################################################################\n\nLIBFM_EXTRA_VERSION = 1.3.2\nLIBFM_EXTRA_SOURCE = libfm-$(LIBFM_EXTRA_VERSION).tar.xz\nLIBFM_EXTRA_SITE = http://sourceforge.net/projects/pcmanfm/files\nLIBFM_EXTRA_DEPENDENCIES = libglib2 host-intltool\nLIBFM_EXTRA_LICENSE = GPL-2.0+, LGPL-2.1+\nLIBFM_EXTRA_LICENSE_FILES = COPYING src/extra/fm-xml-file.c\nLIBFM_EXTRA_INSTALL_STAGING = YES\nLIBFM_EXTRA_CONF_OPTS = --with-extra-only --with-gtk=no\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libfreefare/Config.in",
    "content": "config BR2_PACKAGE_LIBFREEFARE\n\tbool \"libfreefare\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBNFC\n\thelp\n\t  Library for high level manipulation of MIFARE cards.\n\n\t  http://nfc-tools.org/index.php?title=Libfreefare\n"
  },
  {
    "path": "package/libfreefare/libfreefare.hash",
    "content": "# From https://github.com/nfc-tools/libfreefare/releases/download/libfreefare-0.4.0/libfreefare-0.4.0.tar.bz2\nsha256 bfa31d14a99a1247f5ed49195d6373de512e3eb75bf1627658b40cf7f876bc64  libfreefare-0.4.0.tar.bz2\n\n# Hash for license file:\nsha256 be6209dfd763a0ba77fbe990cfd2512804441d8b5f0cad927baa3341b50fcade  COPYING\n"
  },
  {
    "path": "package/libfreefare/libfreefare.mk",
    "content": "################################################################################\n#\n# libfreefare\n#\n################################################################################\n\nLIBFREEFARE_VERSION = 0.4.0\nLIBFREEFARE_SOURCE = libfreefare-$(LIBFREEFARE_VERSION).tar.bz2\n# Do not use the github helper here, the generated tarball is *NOT*\n# the same as the one uploaded by upstream for the release.\nLIBFREEFARE_SITE = https://github.com/nfc-tools/libfreefare/releases/download/libfreefare-$(LIBFREEFARE_VERSION)\nLIBFREEFARE_DEPENDENCIES = host-pkgconf libnfc openssl\nLIBFREEFARE_LICENSE = LGPL-3.0+ with exception\nLIBFREEFARE_LICENSE_FILES = COPYING\nLIBFREEFARE_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libfreeglut/0001-Work-around-for-an-issue-which-cropped-up-with-the-release-of-gcc-10.patch",
    "content": "From b9998bbc1e1c329f6bf69c24606a2be7a4973b8c Mon Sep 17 00:00:00 2001\nFrom: jtsiomb <jtsiomb@7f0cb862-5218-0410-a997-914c9d46530a>\nDate: Fri, 21 Feb 2020 22:25:31 +0000\nSubject: [PATCH] Work-around for an issue which cropped up with the release of\n gcc-10. In their infinite wisdom, they decided to build with -fno-common as\n default from now on, breaking every piece of C code which used to declare\n common symbols in header files, as was the convention since the dawn of time.\n We now have to duplicate all declarations to an arbitrary source file, and\n change the header-file ones to prefix them with extern.\n\ngit-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1863 7f0cb862-5218-0410-a997-914c9d46530a\n[Retrieved from:\nhttps://github.com/dcnieho/FreeGLUT/commit/b9998bbc1e1c329f6bf69c24606a2be7a4973b8c]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n freeglut/freeglut/src/fg_gl2.c | 14 ++++++++++++++\n freeglut/freeglut/src/fg_gl2.h | 14 +++++++-------\n 2 files changed, 21 insertions(+), 7 deletions(-)\n\ndiff --git a/src/fg_gl2.c b/src/fg_gl2.c\nindex 38b0acbb..54b4285b 100644\n--- a/src/fg_gl2.c\n+++ b/src/fg_gl2.c\n@@ -27,6 +27,20 @@\n #include \"fg_internal.h\"\n #include \"fg_gl2.h\"\n \n+#ifndef GL_ES_VERSION_2_0\n+/* GLES2 has the corresponding entry points built-in, and these fgh-prefixed\n+ * names are defined in fg_gl2.h header to reference them, for any other case,\n+ * define them as function pointers here.\n+ */\n+FGH_PFNGLGENBUFFERSPROC fghGenBuffers;\n+FGH_PFNGLDELETEBUFFERSPROC fghDeleteBuffers;\n+FGH_PFNGLBINDBUFFERPROC fghBindBuffer;\n+FGH_PFNGLBUFFERDATAPROC fghBufferData;\n+FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray;\n+FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray;\n+FGH_PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer;\n+#endif\n+\n void FGAPIENTRY glutSetVertexAttribCoord3(GLint attrib) {\n   if (fgStructure.CurrentWindow != NULL)\n     fgStructure.CurrentWindow->Window.attribute_v_coord = attrib;\ndiff --git a/src/fg_gl2.h b/src/fg_gl2.h\nindex ab8ba5c7..fb3d4676 100644\n--- a/src/fg_gl2.h\n+++ b/src/fg_gl2.h\n@@ -67,13 +67,13 @@ typedef void (APIENTRY *FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);\n typedef void (APIENTRY *FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint);\n typedef void (APIENTRY *FGH_PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);\n \n-FGH_PFNGLGENBUFFERSPROC fghGenBuffers;\n-FGH_PFNGLDELETEBUFFERSPROC fghDeleteBuffers;\n-FGH_PFNGLBINDBUFFERPROC fghBindBuffer;\n-FGH_PFNGLBUFFERDATAPROC fghBufferData;\n-FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray;\n-FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray;\n-FGH_PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer;\n+extern FGH_PFNGLGENBUFFERSPROC fghGenBuffers;\n+extern FGH_PFNGLDELETEBUFFERSPROC fghDeleteBuffers;\n+extern FGH_PFNGLBINDBUFFERPROC fghBindBuffer;\n+extern FGH_PFNGLBUFFERDATAPROC fghBufferData;\n+extern FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray;\n+extern FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray;\n+extern FGH_PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer;\n \n #    endif\n \n"
  },
  {
    "path": "package/libfreeglut/Config.in",
    "content": "config BR2_PACKAGE_LIBFREEGLUT\n\tbool \"libfreeglut\"\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_LIBGLU\n\tselect BR2_PACKAGE_XLIB_LIBXI\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\tselect BR2_PACKAGE_XLIB_LIBXXF86VM\n\thelp\n\t  FreeGLUT is a free-software/open-source alternative to the\n\t  OpenGL Utility Toolkit (GLUT) library. GLUT (and hence\n\t  FreeGLUT) takes care of all the system-specific chores\n\t  required for creating windows, initializing OpenGL contexts,\n\t  and handling input events, to allow for trully portable OpenGL\n\t  programs.\n\n\t  http://freeglut.sourceforge.net\n\ncomment \"libfreeglut depends on X.org and needs an OpenGL backend\"\n\tdepends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGL\n"
  },
  {
    "path": "package/libfreeglut/libfreeglut.hash",
    "content": "# From http://sourceforge.net/projects/freeglut/files/freeglut/3.2.1/\nmd5 cd5c670c1086358598a6d4a9d166949d  freeglut-3.2.1.tar.gz\nsha1 7a62e0d2caad92ff745bc5037592b2753f0b2f20  freeglut-3.2.1.tar.gz\n# Locally computed\nsha256 d4000e02102acaf259998c870e25214739d1f16f67f99cb35e4f46841399da68  freeglut-3.2.1.tar.gz\nsha256\tb6593d5ec4c113a274abb85b10e8615895cb0ddb89f7912af5fe5aa8df38a275\tCOPYING\n"
  },
  {
    "path": "package/libfreeglut/libfreeglut.mk",
    "content": "################################################################################\n#\n# libfreeglut\n#\n################################################################################\n\nLIBFREEGLUT_VERSION = 3.2.1\nLIBFREEGLUT_SOURCE = freeglut-$(LIBFREEGLUT_VERSION).tar.gz\nLIBFREEGLUT_SITE = http://downloads.sourceforge.net/freeglut\nLIBFREEGLUT_LICENSE = MIT\nLIBFREEGLUT_LICENSE_FILES = COPYING\nLIBFREEGLUT_INSTALL_STAGING = YES\nLIBFREEGLUT_DEPENDENCIES = \\\n\tlibgl \\\n\tlibglu \\\n\txlib_libXi \\\n\txlib_libXrandr \\\n\txlib_libXxf86vm\n\nLIBFREEGLUT_CONF_OPTS = -DFREEGLUT_BUILD_DEMOS=OFF\n\n# package depends on X.org which depends on !BR2_STATIC_LIBS\nifeq ($(BR2_SHARED_LIBS),y)\nLIBFREEGLUT_CONF_OPTS += \\\n\t-DFREEGLUT_BUILD_SHARED_LIBS=ON \\\n\t-DFREEGLUT_BUILD_STATIC_LIBS=OFF\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nLIBFREEGLUT_CONF_OPTS += \\\n\t-DFREEGLUT_BUILD_SHARED_LIBS=ON \\\n\t-DFREEGLUT_BUILD_STATIC_LIBS=ON\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libfreeimage/0001-no-root-install.patch",
    "content": "Makefile.gnu: allow non-root install by not enforcing root ownserhip\n\nSigned-off-by: Rémi Rérolle <remi.rerolle@gmail.com>\n\ndiff -ruN a/Makefile.gnu b/Makefile.gnu\n--- a/Makefile.gnu\t2015-04-09 16:34:02.315316841 +0200\n+++ b/Makefile.gnu\t2015-04-09 16:34:28.875483201 +0200\n@@ -71,9 +71,9 @@\n \n install:\n \tinstall -d $(INCDIR) $(INSTALLDIR)\n-\tinstall -m 644 -o root -g root $(HEADER) $(INCDIR)\n-\tinstall -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR)\n-\tinstall -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR)\n+\tinstall -m 644 $(HEADER) $(INCDIR)\n+\tinstall -m 644 $(STATICLIB) $(INSTALLDIR)\n+\tinstall -m 755 $(SHAREDLIB) $(INSTALLDIR)\n \tln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME)\n \tln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)\t\n #\tldconfig\n"
  },
  {
    "path": "package/libfreeimage/0002-fix-cpuid-x86.patch",
    "content": "Fix build issue caused by invalid register usage on x86\n\nPatch taken from https://github.com/openexr/openexr/issues/128.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/Source/OpenEXR/IlmImf/ImfSystemSpecific.cpp\n===================================================================\n--- a/Source/OpenEXR/IlmImf/ImfSystemSpecific.cpp\n+++ b/Source/OpenEXR/IlmImf/ImfSystemSpecific.cpp\n@@ -40,21 +40,19 @@\n \n namespace {\n #if defined(IMF_HAVE_SSE2) &&  defined(__GNUC__)\n-\n+#include <cpuid.h>\n     // Helper functions for gcc + SSE enabled\n-    void cpuid(int n, int &eax, int &ebx, int &ecx, int &edx)\n+    void cpuid(unsigned int n, unsigned int &eax, unsigned int &ebx,\n+\t\t\t\t\tunsigned int &ecx, unsigned int &edx)\n     {\n-        __asm__ __volatile__ (\n-            \"cpuid\"\n-            : /* Output  */ \"=a\"(eax), \"=b\"(ebx), \"=c\"(ecx), \"=d\"(edx) \n-            : /* Input   */ \"a\"(n)\n-            : /* Clobber */);\n+\t\t__get_cpuid(n, &eax, &ebx, &ecx, &edx);\n     }\n \n #else // IMF_HAVE_SSE2 && __GNUC__\n \n     // Helper functions for generic compiler - all disabled\n-    void cpuid(int n, int &eax, int &ebx, int &ecx, int &edx)\n+    void cpuid(unsigned int n, unsigned int &eax, unsigned int &ebx,\n+\t\t\t\t\tunsigned int &ecx, unsigned int &edx)\n     {\n         eax = ebx = ecx = edx = 0;\n     }\n@@ -64,7 +62,7 @@\n \n #ifdef OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX\n \n-    void xgetbv(int n, int &eax, int &edx)\n+    void xgetbv(unsigned int n, unsigned int &eax, unsigned int &edx)\n     {\n         __asm__ __volatile__ (\n             \"xgetbv\"\n@@ -75,7 +73,7 @@\n \n #else //  OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX\n \n-    void xgetbv(int n, int &eax, int &edx)\n+    void xgetbv(unsigned int n, unsigned int &eax, unsigned int &edx)\n     {\n         eax = edx = 0;\n     }\n@@ -94,8 +92,8 @@\n     f16c(false)\n {\n     bool osxsave = false;\n-    int  max     = 0;\n-    int  eax, ebx, ecx, edx;\n+    unsigned int  max     = 0;\n+    unsigned int  eax, ebx, ecx, edx;\n \n     cpuid(0, max, ebx, ecx, edx);\n     if (max > 0)\n"
  },
  {
    "path": "package/libfreeimage/0003-fix-big-endian-os.patch",
    "content": "fixed PluginBMP, PluginDDS for compilation under Big Endian OS\n\nDownloaded from upstream commit:\nhttps://sourceforge.net/p/freeimage/svn/1809/\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr FreeImage.orig/Source/FreeImage/PluginBMP.cpp FreeImage/Source/FreeImage/PluginBMP.cpp\n--- FreeImage.orig/Source/FreeImage/PluginBMP.cpp\t2016-06-15 12:35:30.000000000 +0200\n+++ FreeImage/Source/FreeImage/PluginBMP.cpp\t2019-08-31 16:00:27.813378612 +0200\n@@ -518,7 +518,7 @@\n \t\t\t\tio->read_proc(FreeImage_GetPalette(dib), used_colors * sizeof(RGBQUAD), 1, handle);\r\n #if FREEIMAGE_COLORORDER == FREEIMAGE_COLORORDER_RGB\r\n \t\t\t\tRGBQUAD *pal = FreeImage_GetPalette(dib);\r\n-\t\t\t\tfor(int i = 0; i < used_colors; i++) {\r\n+\t\t\t\tfor(unsigned int i = 0; i < used_colors; i++) {\r\n \t\t\t\t\tINPLACESWAP(pal[i].rgbRed, pal[i].rgbBlue);\r\n \t\t\t\t}\r\n #endif\r\n@@ -1419,7 +1419,7 @@\n \r\n \t\t\tfree(buffer);\r\n #ifdef FREEIMAGE_BIGENDIAN\r\n-\t\t} else if (bpp == 16) {\r\n+\t\t} else if (dst_bpp == 16) {\r\n \t\t\tint padding = dst_pitch - dst_width * sizeof(WORD);\r\n \t\t\tWORD pad = 0;\r\n \t\t\tWORD pixel;\r\n@@ -1440,7 +1440,7 @@\n \t\t\t}\r\n #endif\r\n #if FREEIMAGE_COLORORDER == FREEIMAGE_COLORORDER_RGB\r\n-\t\t} else if (bpp == 24) {\r\n+\t\t} else if (dst_bpp == 24) {\r\n \t\t\tint padding = dst_pitch - dst_width * sizeof(FILE_BGR);\r\n \t\t\tDWORD pad = 0;\r\n \t\t\tFILE_BGR bgr;\r\n@@ -1461,7 +1461,7 @@\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t}\r\n-\t\t} else if (bpp == 32) {\r\n+\t\t} else if (dst_bpp == 32) {\r\n \t\t\tFILE_BGRA bgra;\r\n \t\t\tfor(unsigned y = 0; y < dst_height; y++) {\r\n \t\t\t\tBYTE *line = FreeImage_GetScanLine(dib, y);\r\ndiff -uNr FreeImage.orig/Source/FreeImage/PluginDDS.cpp FreeImage/Source/FreeImage/PluginDDS.cpp\n--- FreeImage.orig/Source/FreeImage/PluginDDS.cpp\t2018-07-31 17:04:58.000000000 +0200\n+++ FreeImage/Source/FreeImage/PluginDDS.cpp\t2019-08-31 16:00:39.213465120 +0200\n@@ -356,14 +356,6 @@\n \tfor(int i=0; i<11; i++) {\r\n \t\tSwapLong(&header->surfaceDesc.dwReserved1[i]);\r\n \t}\r\n-\tSwapLong(&header->surfaceDesc.ddpfPixelFormat.dwSize);\r\n-\tSwapLong(&header->surfaceDesc.ddpfPixelFormat.dwFlags);\r\n-\tSwapLong(&header->surfaceDesc.ddpfPixelFormat.dwFourCC);\r\n-\tSwapLong(&header->surfaceDesc.ddpfPixelFormat.dwRGBBitCount);\r\n-\tSwapLong(&header->surfaceDesc.ddpfPixelFormat.dwRBitMask);\r\n-\tSwapLong(&header->surfaceDesc.ddpfPixelFormat.dwGBitMask);\r\n-\tSwapLong(&header->surfaceDesc.ddpfPixelFormat.dwBBitMask);\r\n-\tSwapLong(&header->surfaceDesc.ddpfPixelFormat.dwRGBAlphaBitMask);\r\n \tSwapLong(&header->surfaceDesc.ddsCaps.dwCaps1);\r\n \tSwapLong(&header->surfaceDesc.ddsCaps.dwCaps2);\r\n \tSwapLong(&header->surfaceDesc.ddsCaps.dwReserved[0]);\r\n"
  },
  {
    "path": "package/libfreeimage/Config.in",
    "content": "config BR2_PACKAGE_LIBFREEIMAGE\n\tbool \"libfreeimage\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR\n\t# compiler issue: \"Error: invalid register number `63'\"\n\tdepends on !BR2_arc\n\thelp\n\t  FreeImage is an Open Source library project for developers who\n\t  would like to support popular graphics image formats like PNG,\n\t  BMP, JPEG, TIFF and others as needed by today's multimedia\n\t  applications.\n\n\t  http://freeimage.sourceforge.net\n\ncomment \"libfreeimage needs a toolchain w/ C++, dynamic library, wchar\"\n\tdepends on !BR2_arc\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/libfreeimage/libfreeimage.hash",
    "content": "# From https://sourceforge.net/projects/freeimage/files/Source%20Distribution/3.18.0/\nmd5 f8ba138a3be233a3eed9c456e42e2578 FreeImage3180.zip\nsha1 38daa9d8f1bca2330a2eaa42ec66fbe6ede7dce9 FreeImage3180.zip\n\n# Locally computed\nsha256 f41379682f9ada94ea7b34fe86bf9ee00935a3147be41b6569c9605a53e438fd FreeImage3180.zip\nsha256 d51615a1a47f1ddbb027920d60d3fc30a00e1284c795a47857883e641349fadf license-gplv2.txt\nsha256 084be110e3e8757d8e6945cda1fbc7e5073bbe688dc19b92c0d8440155d8e282 license-gplv3.txt\nsha256 0bb9a3123297c73ae6e19c70459fb0e58f313f67ca63176fd43f8e77668b8243 license-fi.txt\n"
  },
  {
    "path": "package/libfreeimage/libfreeimage.mk",
    "content": "################################################################################\n#\n# libfreeimage\n#\n################################################################################\n\nLIBFREEIMAGE_VERSION = 3.18.0\nLIBFREEIMAGE_SITE = http://downloads.sourceforge.net/freeimage\nLIBFREEIMAGE_SOURCE = FreeImage$(subst .,,$(LIBFREEIMAGE_VERSION)).zip\nLIBFREEIMAGE_LICENSE = GPL-2.0 or GPL-3.0 or FreeImage Public License\nLIBFREEIMAGE_LICENSE_FILES = license-gplv2.txt license-gplv3.txt license-fi.txt\nLIBFREEIMAGE_CPE_ID_VENDOR = freeimage_project\nLIBFREEIMAGE_CPE_ID_PRODUCT = freeimage\nLIBFREEIMAGE_INSTALL_STAGING = YES\n\ndefine LIBFREEIMAGE_EXTRACT_CMDS\n\t$(UNZIP) $(LIBFREEIMAGE_DL_DIR)/$(LIBFREEIMAGE_SOURCE) -d $(@D)\n\tmv $(@D)/FreeImage/* $(@D)\n\trmdir $(@D)/FreeImage\nendef\n\ndefine LIBFREEIMAGE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\" $(MAKE) -C $(@D)\nendef\n\ndefine LIBFREEIMAGE_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\ndefine LIBFREEIMAGE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libfribidi/Config.in",
    "content": "config BR2_PACKAGE_LIBFRIBIDI\n\tbool \"libfribidi\"\n\thelp\n\t  GNU FriBidi is an implementation of the Unicode\n\t  Bidirectional Algorithm (bidi).\n\n\t  http://www.fribidi.org/\n"
  },
  {
    "path": "package/libfribidi/libfribidi.hash",
    "content": "# Locally computed\nsha256  7f1c687c7831499bcacae5e8675945a39bacbad16ecaa945e9454a32df653c01  fribidi-1.0.10.tar.xz\nsha256  32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b  COPYING\n"
  },
  {
    "path": "package/libfribidi/libfribidi.mk",
    "content": "################################################################################\n#\n# libfribidi\n#\n################################################################################\n\nLIBFRIBIDI_VERSION = 1.0.10\nLIBFRIBIDI_SOURCE = fribidi-$(LIBFRIBIDI_VERSION).tar.xz\nLIBFRIBIDI_SITE = https://github.com/fribidi/fribidi/releases/download/v$(LIBFRIBIDI_VERSION)\nLIBFRIBIDI_LICENSE = LGPL-2.1+\nLIBFRIBIDI_LICENSE_FILES = COPYING\nLIBFRIBIDI_CPE_ID_VENDOR = gnu\nLIBFRIBIDI_CPE_ID_PRODUCT = fribidi\nLIBFRIBIDI_INSTALL_STAGING = YES\nLIBFRIBIDI_DEPENDENCIES = host-pkgconf\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libftdi/0001_pkgconfig_libusb.patch",
    "content": "---\n configure.in |   35 +++++++++++------------------------\n 1 file changed, 11 insertions(+), 24 deletions(-)\n\n--- a/configure.in\n+++ b/configure.in\n@@ -8,30 +8,17 @@\n AM_PROG_LIBTOOL\n AC_PROG_CXX\n \n-dnl check for libusb-config\n-AC_CHECK_TOOL(HAVELIBUSB, libusb-config)\n-\n-if test ! -z \"$HAVELIBUSB\"; then\n-   LIBUSB_CFLAGS=`$HAVELIBUSB --cflags`\n-   LIBUSB_LIBS=`$HAVELIBUSB --libs`\n-\n-   CFLAGS=\"$CFLAGS $LIBUSB_CFLAGS\"\n-   LIBS=\"$LIBS $LIBUSB_LIBS\"\n-else\n-   AC_MSG_ERROR([*** libusb-config not found. You need a working libusb installation.])\n-fi\n-\n-dnl check for version of libusb\n-AC_MSG_CHECKING([if libusb version is >= 0.1.7])\n-libusb_version_needed=\"1007\"\n-libusb_version=`$HAVELIBUSB --version | sed -e \"s/libusb //\" | awk 'BEGIN { FS = \".\"; } { printf \"%d\", ($''1 * 1000 + $''2) * 1000 + $''3;}'`\n+dnl check for libusb\n+PKG_CHECK_MODULES(LIBUSB, libusb >= 0.1.11)\n+CFLAGS=\"$CFLAGS $LIBUSB_CFLAGS\"\n+LIBS=\"$LIBS $LIBUSB_LIBS\"\n \n-if test $libusb_version -lt $libusb_version_needed; then\n-   AC_MSG_RESULT(no)\n-   AC_MSG_ERROR([*** libusb is too old ($libusb_version). You need a libusb installation newer or equal to 0.1.7.])\n-else\n-   AC_MSG_RESULT(yes)\n-fi\n+dnl Check for recent pkg-config which supports Requires.private\n+case `$PKG_CONFIG --version` in\n+0.?|0.1[0-7]) PKGCONFIG_REQUIRES=\"Requires\"; ;;\n+*) PKGCONFIG_REQUIRES=\"Requires.private\"; ;;\n+esac\n+AC_SUBST(PKGCONFIG_REQUIRES)\n \n ENABLE_ASYNC_MODE=0\n AC_ARG_WITH(async-mode,\n"
  },
  {
    "path": "package/libftdi/0002-libftdi.pc-requires-libusb-fix-static-build.patch",
    "content": "From d3d6ca63cb86727533d7d83c98e70002bb04f343 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Wed, 21 Jan 2015 11:18:59 +0100\nSubject: [PATCH] libftdi.pc: requires libusb (fix static build)\n\n---\n libftdi.pc.in | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/libftdi.pc.in b/libftdi.pc.in\nindex 2061b91..57f0a09 100644\n--- a/libftdi.pc.in\n+++ b/libftdi.pc.in\n@@ -5,8 +5,8 @@ includedir=@includedir@\n \n Name: libftdi\n Description: Library to program and control the FTDI USB controller\n-Requires:\n+Requires: libusb\n Version: @VERSION@\n-Libs: -L${libdir} -lftdi -lusb\n+Libs: -L${libdir} -lftdi\n Cflags: -I${includedir}\n \n-- \n2.1.0\n\n"
  },
  {
    "path": "package/libftdi/Config.in",
    "content": "config BR2_PACKAGE_LIBFTDI\n\tbool \"libftdi\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\thelp\n\t  Userspace access to FTDI USB interface chips\n\n\t  http://www.intra2net.com/en/developer/libftdi/index.php\n\nif BR2_PACKAGE_LIBFTDI\n\nconfig BR2_PACKAGE_LIBFTDI_CPP\n\tbool \"C++ bindings\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_BOOST\n\thelp\n\t  C++ bindings for libftdi\n\ncomment \"libftdi C++ bindings need a toolchain w/ wchar, C++\"\n\tdepends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP\n\nendif # BR2_PACKAGE_LIBFTDI\n\ncomment \"libftdi needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/libftdi/libftdi.hash",
    "content": "# Locally computed (after checking the signature from http://www.intra2net.com/en/developer/libftdi/download.php)\nsha256  3176d5b5986438f33f5208e690a8bfe90941be501cc0a72118ce3d338d4b838e  libftdi-0.20.tar.gz\n\n# Hash for license files:\nsha256  6bd354f4b9beca001b1b5395be48cef1d749a3ed27dddb8114bf09eb0ab2d88c  LICENSE\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING.GPL\nsha256  c340cbee4974bb96019e782f2279df016c92fb1e7f5299347e779d9acedbb991  COPYING.LIB\n"
  },
  {
    "path": "package/libftdi/libftdi.mk",
    "content": "################################################################################\n#\n# libftdi\n#\n################################################################################\n\nLIBFTDI_VERSION = 0.20\nLIBFTDI_SITE = http://www.intra2net.com/en/developer/libftdi/download\nLIBFTDI_LICENSE = LGPL-2.1 (libftdi)\nLIBFTDI_LICENSE_FILES = LICENSE COPYING.LIB\nLIBFTDI_DEPENDENCIES = libusb-compat libusb\nHOST_LIBFTDI_DEPENDENCIES = host-libusb-compat host-libusb\nLIBFTDI_INSTALL_STAGING = YES\nLIBFTDI_CONFIG_SCRIPTS = libftdi-config\nLIBFTDI_AUTORECONF = YES\n\nLIBFTDI_CONF_OPTS = --without-examples\n\n# configure detect it automaticaly so we need to force it\nifeq ($(BR2_PACKAGE_LIBFTDI_CPP),y)\nLIBFTDI_LICENSE += , GPL-2.0 with exception (ftdipp)\nLIBFTDI_LICENSE_FILES += COPYING.GPL\nLIBFTDI_DEPENDENCIES += boost\nLIBFTDI_CONF_OPTS += --enable-libftdipp\nelse\nLIBFTDI_CONF_OPTS += --disable-libftdipp\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch",
    "content": "From 7e57ff280b55b45e74329b9988279e8831d32eab Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Sun, 25 Jan 2015 09:45:04 +0100\nSubject: [PATCH] cmake: use the standard CMake flag to drive the shared\n object build\n\nRemove the STATICLIBS CMake option (and the code handling it) and let\nthe standard CMake flags drive the shared object build.\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Fabrice: update for 1.5]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n CMakeOptions.txt      |  1 -\n ftdipp/CMakeLists.txt | 14 +-------------\n src/CMakeLists.txt    | 13 +------------\n 3 files changed, 2 insertions(+), 26 deletions(-)\n\ndiff --git a/CMakeOptions.txt b/CMakeOptions.txt\nindex 07b5887..b780ffd 100644\n--- a/CMakeOptions.txt\n+++ b/CMakeOptions.txt\n@@ -1,4 +1,3 @@\n-option ( STATICLIBS \"Build static libraries\" ON )\n option ( BUILD_TESTS \"Build unit tests with Boost Unit Test framework\" OFF )\n option ( DOCUMENTATION \"Generate API documentation with Doxygen\" OFF )\n option ( EXAMPLES \"Build example programs\" ON )\ndiff --git a/ftdipp/CMakeLists.txt b/ftdipp/CMakeLists.txt\nindex fac5bcc..a06edf1 100644\n--- a/ftdipp/CMakeLists.txt\n+++ b/ftdipp/CMakeLists.txt\n@@ -12,7 +12,7 @@ include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}\n include_directories(${Boost_INCLUDE_DIRS})\n \n # Shared library\n-add_library(ftdipp1 SHARED ${cpp_sources})\n+add_library(ftdipp1 ${cpp_sources})\n \n math(EXPR VERSION_FIXUP \"${MAJOR_VERSION} + 1\")    # Compatibility with previous releases\n set_target_properties(ftdipp1 PROPERTIES VERSION ${VERSION_FIXUP}.${MINOR_VERSION}.0 SOVERSION 3)\n@@ -29,18 +29,6 @@ install ( TARGETS ftdipp1\n \t\t\t\t\tARCHIVE DESTINATION lib${LIB_SUFFIX}\n \t\t\t\t)\n \n-# Static library\n-if ( STATICLIBS )\n-\tadd_library(ftdipp1-static STATIC ${cpp_sources})\n-\tset_target_properties(ftdipp1-static PROPERTIES OUTPUT_NAME \"ftdipp1\")\n-\tset_target_properties(ftdipp1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)\n-\n-\tinstall ( TARGETS ftdipp1-static\n-\t\t\t\t\t\tARCHIVE DESTINATION lib${LIB_SUFFIX}\n-\t\t\t\t\t\tCOMPONENT staticlibs\n-\t\t\t\t\t)\n-endif ()\n-\n install ( FILES ${cpp_headers}\n \t\t\t\t\tDESTINATION include/${PROJECT_NAME}\n \t\t\t\t\tCOMPONENT headers\ndiff --git a/src/CMakeLists.txt b/src/CMakeLists.txt\nindex 17b3617..ae4fc61 100644\n--- a/src/CMakeLists.txt\n+++ b/src/CMakeLists.txt\n@@ -21,7 +21,7 @@ configure_file(ftdi_version_i.h.in \"${CMAKE_CURRENT_BINARY_DIR}/ftdi_version_i.h\n set(c_sources     ${CMAKE_CURRENT_SOURCE_DIR}/ftdi.c ${CMAKE_CURRENT_SOURCE_DIR}/ftdi_stream.c CACHE INTERNAL \"List of c sources\" )\n set(c_headers     ${CMAKE_CURRENT_SOURCE_DIR}/ftdi.h CACHE INTERNAL \"List of c headers\" )\n \n-add_library(ftdi1 SHARED ${c_sources})\n+add_library(ftdi1 ${c_sources})\n \n math(EXPR VERSION_FIXUP \"${MAJOR_VERSION} + 1\")    # Compatibility with previous releases\n set_target_properties(ftdi1 PROPERTIES VERSION ${VERSION_FIXUP}.${MINOR_VERSION}.0 SOVERSION 2)\n@@ -38,17 +38,6 @@ install ( TARGETS ftdi1\n           ARCHIVE DESTINATION lib${LIB_SUFFIX}\n         )\n \n-if ( STATICLIBS )\n-  add_library(ftdi1-static STATIC ${c_sources})\n-  target_link_libraries(ftdi1-static ${LIBUSB_LIBRARIES})\n-  set_target_properties(ftdi1-static PROPERTIES OUTPUT_NAME \"ftdi1\")\n-  set_target_properties(ftdi1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)\n-  install ( TARGETS ftdi1-static\n-            ARCHIVE DESTINATION lib${LIB_SUFFIX}\n-            COMPONENT staticlibs\n-          )\n-endif ()\n-\n install ( FILES ${c_headers}\n           DESTINATION include/${PROJECT_NAME}\n           COMPONENT headers\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/libftdi1/0002-CMakeLists.txt-fix-paths-when-FTDIPP-is-set.patch",
    "content": "From 3e68fd7da98a755403cf5719c3d7a3c2f4dcbb58 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 17 Jul 2020 21:04:45 +0200\nSubject: [PATCH] CMakeLists.txt: fix paths when FTDIPP is set\n\nUse the same project name (i.e. libftdi1 and not libftdipp1) when FTDIPP\nis enabled as suggested by Aurelien Jarno in\nhttp://developer.intra2net.com/mailarchive/html/libftdi/2020/msg00044.html\n\nWithout this change, the libftdi1.pc config file defines the include\npath as /usr/local/include/libftdipp1 while the ftdi.h file is actually\ninstalled in /usr/local/include/libftdi1\n\nThis is an issue for example for libsigrok which will fail on:\n\nIn file included from src/hardware/asix-sigma/protocol.c:27:\nsrc/hardware/asix-sigma/protocol.h:28:10: fatal error: ftdi.h: No such file or directory\n   28 | #include <ftdi.h>\n      |          ^~~~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/1427f44e36752c337791597fab47a1889552a2fe\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttp://developer.intra2net.com/mailarchive/html/libftdi/2020/msg00045.html]\n---\n CMakeLists.txt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 5aecafc..3b0b87c 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -136,7 +136,7 @@ endif ()\n \n add_subdirectory(src)\n if ( FTDIPP )\n-  project(libftdipp1 C CXX)\n+  project(libftdi1 C CXX)\n   add_subdirectory(ftdipp)\n endif ()\n if ( PYTHON_BINDINGS )\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/libftdi1/Config.in",
    "content": "config BR2_PACKAGE_LIBFTDI1\n\tbool \"libftdi1\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Userspace access to FTDI USB interface chips (version 1.x)\n\n\t  http://www.intra2net.com/en/developer/libftdi/index.php\n\nif BR2_PACKAGE_LIBFTDI1\n\nconfig BR2_PACKAGE_LIBFTDI1_LIBFTDIPP1\n\tbool \"libftdipp1\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # boost\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # boost\n\tdepends on BR2_USE_WCHAR # boost\n\tselect BR2_PACKAGE_BOOST\n\thelp\n\t  C++ bindings for libftdi\n\ncomment \"libftdipp1 needs a toolchain w/ C++, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_LIBFTDI1_PYTHON_BINDINGS\n\tbool \"python bindings\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\thelp\n\t  Python bindings for libftdi\n\nconfig BR2_PACKAGE_LIBFTDI1_FDTI_EEPROM\n\tbool \"ftdi_eeprom tool\"\n\tselect BR2_PACKAGE_LIBCONFUSE\n\nendif # BR2_PACKAGE_LIBFTDI1\n\ncomment \"libftdi1 needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/libftdi1/libftdi1.hash",
    "content": "# Locally computed after checking the signature\n# https://www.intra2net.com/en/developer/libftdi/download/libftdi1-1.5.tar.bz2.sig\nsha256  7c7091e9c86196148bd41177b4590dccb1510bfe6cea5bf7407ff194482eb049  libftdi1-1.5.tar.bz2\n\n# Hash for license files:\nsha256  524f46428bf72bb8c6acfeca4909551fd2e0bdbb5305406d38382f4056095c56  LICENSE\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING.GPL\nsha256  b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c  COPYING.LIB\n"
  },
  {
    "path": "package/libftdi1/libftdi1.mk",
    "content": "################################################################################\n#\n# libftdi1\n#\n################################################################################\n\nLIBFTDI1_VERSION = 1.5\nLIBFTDI1_SOURCE = libftdi1-$(LIBFTDI1_VERSION).tar.bz2\nLIBFTDI1_SITE = http://www.intra2net.com/en/developer/libftdi/download\nLIBFTDI1_INSTALL_STAGING = YES\nLIBFTDI1_DEPENDENCIES = libusb\nLIBFTDI1_LICENSE = LGPL-2.1 (libftdi1), MIT (libftdi1)\nLIBFTDI1_LICENSE_FILES = LICENSE COPYING.LIB\nLIBFTDI1_CONFIG_SCRIPTS = libftdi1-config\nLIBFTDI1_CONF_OPTS = -DDOCUMENTATION=OFF -DEXAMPLES=OFF\n\nifeq ($(BR2_PACKAGE_LIBFTDI1_LIBFTDIPP1),y)\nLIBFTDI1_LICENSE += , GPL-2.0 with exception (libftdipp1)\nLIBFTDI1_LICENSE_FILES += COPYING.GPL\nLIBFTDI1_DEPENDENCIES += boost\nLIBFTDI1_CONF_OPTS += -DFTDIPP=ON\nelse\nLIBFTDI1_CONF_OPTS += -DFTDIPP=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBFTDI1_PYTHON_BINDINGS),y)\nLIBFTDI1_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,python3) host-swig\nLIBFTDI1_CONF_OPTS += -DPYTHON_BINDINGS=ON\nelse\nLIBFTDI1_CONF_OPTS += -DPYTHON_BINDINGS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBFTDI1_FDTI_EEPROM),y)\n# ftdi_eeprom optionally depends on libintl\nLIBFTDI1_LICENSE += , GPL-2.0 (ftdi_eeprom)\nLIBFTDI1_LICENSE_FILES += COPYING.GPL\nLIBFTDI1_DEPENDENCIES += libconfuse $(TARGET_NLS_DEPENDENCIES)\nLIBFTDI1_CONF_OPTS += -DFTDI_EEPROM=ON\nelse\nLIBFTDI1_CONF_OPTS += -DFTDI_EEPROM=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libfuse/0001-fix-aarch64-build.patch",
    "content": "Fix build on the AArch64 platform\n\nUpstream-Status: Submitted\n\nSigned-off-by: Riku Voipio <riku.voipio@linaro.org>\n\n--- a/include/fuse_kernel.h\n+++ b/include/fuse_kernel.h\n@@ -88,12 +88,7 @@\n #ifndef _LINUX_FUSE_H\n #define _LINUX_FUSE_H\n \n-#include <sys/types.h>\n-#define __u64 uint64_t\n-#define __s64 int64_t\n-#define __u32 uint32_t\n-#define __s32 int32_t\n-#define __u16 uint16_t\n+#include <linux/types.h>\n \n /*\n  * Version negotiation:\n"
  },
  {
    "path": "package/libfuse/0002-util-ulockmgr_server-c-conditionally-define-closefrom-fix-glibc-2-34.patch",
    "content": "From 5a43d0f724c56f8836f3f92411e0de1b5f82db32 Mon Sep 17 00:00:00 2001\nFrom: Sam James <sam@gentoo.org>\nDate: Sat, 24 Jul 2021 22:02:45 +0100\nSubject: [PATCH] util/ulockmgr_server.c: conditionally define closefrom (fix\n glibc-2.34+)\n\nclosefrom(3) has joined us in glibc-land from *BSD and Solaris. Since\nit's available in glibc 2.34+, we want to detect it and only define our\nfallback if the libc doesn't provide it.\n\nBug: https://bugs.gentoo.org/803923\nSigned-off-by: Sam James <sam@gentoo.org>\n\n[Retrieved from:\nhttps://github.com/libfuse/libfuse/commit/5a43d0f724c56f8836f3f92411e0de1b5f82db32]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac           | 1 +\n util/ulockmgr_server.c | 6 ++++++\n 2 files changed, 7 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 9946a0efa..a2d481aa9 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -55,6 +55,7 @@ fi\n \n AC_CHECK_FUNCS([fork setxattr fdatasync splice vmsplice utimensat])\n AC_CHECK_FUNCS([posix_fallocate])\n+AC_CHECK_FUNCS([closefrom])\n AC_CHECK_MEMBERS([struct stat.st_atim])\n AC_CHECK_MEMBERS([struct stat.st_atimespec])\n \ndiff --git a/util/ulockmgr_server.c b/util/ulockmgr_server.c\nindex 273c7d923..a04dac5c6 100644\n--- a/util/ulockmgr_server.c\n+++ b/util/ulockmgr_server.c\n@@ -22,6 +22,10 @@\n #include <sys/socket.h>\n #include <sys/wait.h>\n \n+#ifdef HAVE_CONFIG_H\n+\t#include \"config.h\"\n+#endif\n+\n struct message {\n \tunsigned intr : 1;\n \tunsigned nofd : 1;\n@@ -124,6 +128,7 @@ static int receive_message(int sock, void *buf, size_t buflen, int *fdp,\n \treturn res;\n }\n \n+#if !defined(HAVE_CLOSEFROM)\n static int closefrom(int minfd)\n {\n \tDIR *dir = opendir(\"/proc/self/fd\");\n@@ -141,6 +146,7 @@ static int closefrom(int minfd)\n \t}\n \treturn 0;\n }\n+#endif\n \n static void send_reply(int cfd, struct message *msg)\n {\n"
  },
  {
    "path": "package/libfuse/Config.in",
    "content": "config BR2_PACKAGE_LIBFUSE\n\tbool \"libfuse\"\n\t# Really doesn't like static, see fuse/lib/fuse.c\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  FUSE (Filesystem in UserSpacE)\n\n\t  https://github.com/libfuse/libfuse\n\ncomment \"libfuse needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libfuse/libfuse.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\td0e69d5d608cc22ff4843791ad097f554dd32540ddc9bed7638cc6fea7c1b4b5\tfuse-2.9.9.tar.gz\n\n# Hash for license files:\nsha256\t8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\tCOPYING\nsha256\tdc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\tCOPYING.LIB\n"
  },
  {
    "path": "package/libfuse/libfuse.mk",
    "content": "################################################################################\n#\n# libfuse\n#\n################################################################################\n\nLIBFUSE_VERSION = 2.9.9\nLIBFUSE_SOURCE = fuse-$(LIBFUSE_VERSION).tar.gz\nLIBFUSE_SITE = https://github.com/libfuse/libfuse/releases/download/fuse-$(LIBFUSE_VERSION)\nLIBFUSE_LICENSE = GPL-2.0, LGPL-2.1\nLIBFUSE_LICENSE_FILES = COPYING COPYING.LIB\nLIBFUSE_CPE_ID_VENDOR = libfuse_project\nLIBFUSE_INSTALL_STAGING = YES\n# We're patching configure.ac\nLIBFUSE_AUTORECONF = YES\n# add host-gettext for AM_ICONV macro\nLIBFUSE_DEPENDENCIES = \\\n\thost-gettext \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv)\nLIBFUSE_CONF_OPTS = \\\n\t--disable-example \\\n\t--enable-lib \\\n\t--enable-util \\\n\tUDEV_RULES_PATH=/lib/udev/rules.d\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\ndefine LIBFUSE_INSTALL_UDEV\n\tmkdir -p $(TARGET_DIR)/lib/udev/rules.d\n\tcp $(STAGING_DIR)/lib/udev/rules.d/*-fuse.rules $(TARGET_DIR)/lib/udev/rules.d\nendef\n\nLIBFUSE_POST_INSTALL_TARGET_HOOKS += LIBFUSE_INSTALL_UDEV\nendif\n\ndefine LIBFUSE_INSTALL_TARGET_CMDS\n\tcp -dpf $(STAGING_DIR)/usr/bin/fusermount $(TARGET_DIR)/usr/bin/\n\tcp -dpf $(STAGING_DIR)/usr/lib/libfuse.so* $(TARGET_DIR)/usr/lib/\nendef\n\ndefine LIBFUSE_DEVICES\n\t/dev/fuse c 666 0 0 10 229 0 0 -\nendef\n\ndefine LIBFUSE_PERMISSIONS\n\t/usr/bin/fusermount f 4755 0 0 - - - - -\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libfuse3/Config.in",
    "content": "config BR2_PACKAGE_LIBFUSE3\n\tbool \"libfuse3\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  The reference implementation of the Linux FUSE\n\t  (Filesystem in Userspace) interface.\n\n\t  https://github.com/libfuse/libfuse\n\ncomment \"libfuse3 needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libfuse3/libfuse3.hash",
    "content": "# Locally calculated sha256 checksums\nsha256  e73f75e58da59a0e333d337c105093c496c0fd7356ef3a5a540f560697c9c4e6  libfuse3-3.10.5.tar.gz\nsha256  b8832d9caaa075bbbd2aef24efa09f8b7ab66a832812d88c602da0c7b4397fad  LICENSE\n"
  },
  {
    "path": "package/libfuse3/libfuse3.mk",
    "content": "################################################################################\n#\n# libfuse3\n#\n################################################################################\n\nLIBFUSE3_VERSION = 3.10.5\nLIBFUSE3_SITE = $(call github,libfuse,libfuse,fuse-$(LIBFUSE3_VERSION))\nLIBFUSE3_LICENSE = LGPL-2.1\nLIBFUSE3_LICENSE_FILES = LICENSE\nLIBFUSE3_CPE_ID_VENDOR = libfuse_project\nLIBFUSE3_CPE_ID_PRODUCT = libfuse\nLIBFUSE3_INSTALL_STAGING = YES\nLIBFUSE3_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv)\nLIBFUSE3_CONF_OPTS = \\\n\t-Dexamples=false \\\n\t-Dudevrulesdir=/lib/udev/rules.d \\\n\t-Duseroot=false \\\n\t-Dtests=false\n\ndefine LIBFUSE3_DEVICES\n\t/dev/fuse c 666 0 0 10 229 0 0 -\nendef\n\ndefine LIBFUSE3_PERMISSIONS\n\t/usr/bin/fusermount3 f 4755 0 0 - - - - -\nendef\n\ndefine LIBFUSE3_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_FUSE_FS)\nendef\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libg7221/Config.in",
    "content": "config BR2_PACKAGE_LIBG7221\n\tbool \"libg7221\"\n\thelp\n\t  libg722_1 is a library for the ITU G.722.1 and Annex C\n\t  wideband speech codecs.\n\n\t  http://www.soft-switch.org\n"
  },
  {
    "path": "package/libg7221/libg7221.hash",
    "content": "# Locally computed\nsha256  7f00d6a4f435a91ab3bc96e6c95aa1334bd416f80d98843b4f178067239ee832  libg7221-dbfc29d4806ecdace50379a2f4d68a992a6fec34-br1.tar.gz\nsha256  26cc5f718279b45dbe34e25a2d29b2c8ca487bd9ab11b2d68c9318ff59d5c645  COPYING\n"
  },
  {
    "path": "package/libg7221/libg7221.mk",
    "content": "################################################################################\n#\n# libg7221\n#\n################################################################################\n\nLIBG7221_VERSION = dbfc29d4806ecdace50379a2f4d68a992a6fec34\n# we use the FreeSwitch fork because it contains pkgconf support\nLIBG7221_SITE = https://freeswitch.org/stash/scm/sd/libg7221.git\nLIBG7221_SITE_METHOD = git\nLIBG7221_LICENSE = Polycom\nLIBG7221_LICENSE_FILES = COPYING\nLIBG7221_AUTORECONF = YES\nLIBG7221_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libgcrypt/0001-configure.ac-add-an-option-to-disable-tests.patch",
    "content": "From 7fe1b8a53cc8c865c2a10dcd8f6cb4e51ccc6300 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 29 Jul 2019 12:19:10 +0200\nSubject: [PATCH] configure.ac: add an option to disable tests\n\nAdd an option to allow the user to disable tests, this can be useful for\nexample when the toolchain does not provide thread. Indeed, in this\ncase, libgcrypt fails to build t-lock:\n\nt-lock.c: In function 'run_test':\nt-lock.c:359:3: error: unknown type name 'pthread_t'\n   pthread_t rthread;\n\nFixes:\n - http://autobuild.buildroot.org/results/50a8ba572e3fafd3c6a39bd54bcfcaf78b5ad325\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile.am  |  7 ++++++-\n configure.ac | 10 ++++++++++\n 2 files changed, 16 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 7fa4fa4d..f0bd90e4 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -40,9 +40,14 @@ else\n doc =\n endif\n \n+if BUILD_TESTS\n+tests = tests\n+else\n+tests =\n+endif\n \n DIST_SUBDIRS = m4 compat mpi cipher random src doc tests\n-SUBDIRS =         compat mpi cipher random src $(doc) tests\n+SUBDIRS =         compat mpi cipher random src $(doc) $(tests)\n \n EXTRA_DIST = autogen.sh autogen.rc README.GIT LICENSES      \t           \\\n              ChangeLog-2011 build-aux/ChangeLog-2011 doc/ChangeLog-2011    \\\ndiff --git a/configure.ac b/configure.ac\nindex e8c8cd39..1a6b61e5 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3198,6 +3198,16 @@ AC_ARG_ENABLE([doc], AC_HELP_STRING([--disable-doc],\n AM_CONDITIONAL([BUILD_DOC], [test \"x$build_doc\" != xno])\n \n \n+#\n+# Option to disable building of tests\n+#\n+build_tests=yes\n+AC_ARG_ENABLE([tests], AC_HELP_STRING([--disable-tests],\n+                                      [do not build tests]),\n+                       build_tests=$enableval, build_tests=yes)\n+AM_CONDITIONAL([BUILD_TESTS], [test \"x$build_tests\" != xno])\n+\n+\n #\n # Provide information about the build.\n #\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/libgcrypt/Config.in",
    "content": "config BR2_PACKAGE_LIBGCRYPT\n\tbool \"libgcrypt\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error\n\tselect BR2_PACKAGE_LIBGPG_ERROR\n\thelp\n\t  LibGCrypt is GNU's basic cryptographic library.\n\n\t  http://www.gnu.org/software/libgcrypt/\n"
  },
  {
    "path": "package/libgcrypt/libgcrypt.hash",
    "content": "# From https://www.gnupg.org/download/integrity_check.html\nsha1  1bccc8393482fa1953323ff429c6b5ba5676eb1a  libgcrypt-1.9.4.tar.bz2\n# Locally calculated after checking signature\n# https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.9.4.tar.bz2.sig\n# using key 6DAA6E64A76D2840571B4902528897B826403ADA\nsha256  ea849c83a72454e3ed4267697e8ca03390aee972ab421e7df69dfe42b65caaf7  libgcrypt-1.9.4.tar.bz2\nsha256  ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532  COPYING.LIB\n"
  },
  {
    "path": "package/libgcrypt/libgcrypt.mk",
    "content": "################################################################################\n#\n# libgcrypt\n#\n################################################################################\n\nLIBGCRYPT_VERSION = 1.9.4\nLIBGCRYPT_SOURCE = libgcrypt-$(LIBGCRYPT_VERSION).tar.bz2\nLIBGCRYPT_LICENSE = LGPL-2.1+\nLIBGCRYPT_LICENSE_FILES = COPYING.LIB\nLIBGCRYPT_SITE = https://gnupg.org/ftp/gcrypt/libgcrypt\nLIBGCRYPT_INSTALL_STAGING = YES\nLIBGCRYPT_DEPENDENCIES = libgpg-error\nLIBGCRYPT_CONFIG_SCRIPTS = libgcrypt-config\nLIBGCRYPT_CPE_ID_VENDOR = gnupg\n\n# Patching configure.ac and Makefile.am in 0001\nLIBGCRYPT_AUTORECONF = YES\nLIBGCRYPT_CONF_OPTS = \\\n\t--disable-tests \\\n\t--with-gpg-error-prefix=$(STAGING_DIR)/usr\n\n# Libgcrypt doesn't support assembly for coldfire\nifeq ($(BR2_m68k_cf),y)\nLIBGCRYPT_CONF_OPTS += --disable-asm\nendif\n\n# Code doesn't build in thumb mode\nifeq ($(BR2_arm),y)\nLIBGCRYPT_CONF_ENV += CFLAGS=\"$(patsubst -mthumb,,$(TARGET_CFLAGS))\"\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libgdiplus/0001-Build-unit-tests-only-when-enable-unit-tests-is-pass.patch",
    "content": "From ae92a466e203c8aec43f682a3a7aa617b820c3ba Mon Sep 17 00:00:00 2001\nFrom: Sergio Prado <sergio.prado@e-labworks.com>\nDate: Sat, 10 Apr 2021 11:03:38 -0300\nSubject: [PATCH] Build unit tests only when --enable-unit-tests is passed\n\nBuilding unit tests by default requires all dependencies to be\ninstalled (jpeg, tiff, etc) and users may not want that.\n\nSo let's disable the build of unit tests by default and introduce\n--enable-unit-tests configure option to enable it.\n\nSigned-off-by: Sergio Prado <sergio.prado@e-labworks.com>\n---\n Makefile.am  | 8 ++++++--\n configure.ac | 4 ++++\n 2 files changed, 10 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex f40bdee0c2e9..152e0d64fdd9 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -1,7 +1,11 @@\n ACLOCAL_AMFLAGS = -I m4\n \n-SUBDIRS = src tests\n-DIST_SUBDIRS = src tests\n+if BUILD_UNIT_TESTS\n+SUBDIRS_TESTS = tests\n+endif\n+\n+SUBDIRS = src $(SUBDIRS_TESTS)\n+DIST_SUBDIRS = src $(SUBDIRS_TESTS)\n \n pkgconfigdir = $(libdir)/pkgconfig\n \ndiff --git a/configure.ac b/configure.ac\nindex 098fd0a664bd..c126ff091e58 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -39,6 +39,10 @@ if test $warnaserror = \"yes\"; then\n   GDIPLUS_CFLAGS=\"$GDIPLUS_CFLAGS -Werror -Wno-unknown-warning-option -Wno-clobbered -Wno-typedef-redefinition\"\n fi\n \n+AC_ARG_ENABLE(unittests, AS_HELP_STRING([--enable-unittests],[Enable building unit tests.]),[unittests=yes],[unittests=no])\n+\n+AM_CONDITIONAL([BUILD_UNIT_TESTS], [test x$unittests = xyes])\n+\n AC_ARG_ENABLE(asan, AS_HELP_STRING([--enable-asan],[Enable address sanitizer.]),[asan=yes],[asan=no])\n \n if test $asan = \"yes\"; then\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/libgdiplus/Config.in",
    "content": "config BR2_PACKAGE_LIBGDIPLUS\n\tbool \"libgdiplus\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_WCHAR # libglib2 -> gettext\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_XLIB_LIBXFT\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  An Open Source implementation of the GDI+ API.\n\n\t  https://github.com/mono/libgdiplus\n\ncomment \"libgdiplus needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libgdiplus/libgdiplus.hash",
    "content": "# Locally computed:\nsha256 1fd034f4b636214cc24e94c563cd10b3f3444d9f0660927b60e63fd4131d97fa libgdiplus-6.0.5.tar.gz\nsha256 81317bf837e02a116dc20b032fa1d0cbf9ec357621f141ff2c2daf26c17cbb5d LICENSE\n"
  },
  {
    "path": "package/libgdiplus/libgdiplus.mk",
    "content": "################################################################################\n#\n# libgdiplus\n#\n################################################################################\n\nLIBGDIPLUS_VERSION = 6.0.5\nLIBGDIPLUS_SITE = $(call github,mono,libgdiplus,$(LIBGDIPLUS_VERSION))\n\nLIBGDIPLUS_LICENSE = MIT\nLIBGDIPLUS_LICENSE_FILES = LICENSE\nLIBGDIPLUS_CPE_ID_VENDOR = mono-project\n\nLIBGDIPLUS_INSTALL_STAGING = YES\n\n# github tarball doesn't have configure\nLIBGDIPLUS_AUTORECONF = YES\n\nLIBGDIPLUS_DEPENDENCIES = xlib_libXft libglib2 cairo libpng host-pkgconf\n\nifeq ($(BR2_PACKAGE_GIFLIB),y)\nLIBGDIPLUS_CONF_OPTS += --with-libgif\nLIBGDIPLUS_DEPENDENCIES += giflib\nelse\nLIBGDIPLUS_CONF_OPTS += --without-libgif\nendif\n\n# there is a bug in the configure script that enables pango support\n# when passing --without-pango, so let's just not use it\nifeq ($(BR2_PACKAGE_PANGO),y)\nLIBGDIPLUS_CONF_OPTS += --with-pango\nLIBGDIPLUS_DEPENDENCIES += pango\nendif\n\nifeq ($(BR2_PACKAGE_LIBEXIF),y)\nLIBGDIPLUS_CONF_OPTS += --with-libexif\nLIBGDIPLUS_DEPENDENCIES += libexif\nelse\nLIBGDIPLUS_CONF_OPTS += --without-libexif\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nLIBGDIPLUS_CONF_OPTS += --with-libjpeg=$(STAGING_DIR)/usr\nLIBGDIPLUS_DEPENDENCIES += jpeg\nelse\nLIBGDIPLUS_CONF_OPTS += --without-libjpeg\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nLIBGDIPLUS_CONF_OPTS += --with-libtiff=$(STAGING_DIR)/usr\nLIBGDIPLUS_DEPENDENCIES += tiff\nelse\nLIBGDIPLUS_CONF_OPTS += --without-libtiff\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libgee/0001-gee-Makefile.am-include-Makefile.introspection.patch",
    "content": "From d771e8ddb5e40f234459966e46880d10f34aaa1a Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 20 Nov 2021 23:57:33 +0100\nSubject: [PATCH] gee/Makefile.am: include Makefile.introspection\n\nInclude Makefile.introspection instead of using a custom rule which will\nresult in the following build failure when cross-compiling on buildroot\nbecause of missing --includedir:\n\n/home/giuliobenetti/autobuild/run/instance-1/output-1/host/bin/../riscv32-buildroot-linux-gnu/sysroot/usr/bin/g-ir-compiler -l `/usr/bin/sed -nE \"s/^dlname='([A-Za-z0-9.+-]+)'/\\1/p\" libgee-0.8.la` -o Gee-0.8.typelib Gee-0.8.gir libgee-0.8.la\nCould not find GIR file 'GObject-2.0.gir'; check XDG_DATA_DIRS or use --includedir\nerror parsing file Gee-0.8.gir: Failed to parse included gir GObject-2.0\n\nFixes:\n - http://autobuild.buildroot.org/results/884faa0f84c8dc43ed1ca6cde9caf21c731a4b35\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.gnome.org/GNOME/libgee/-/merge_requests/8]\n---\n gee/Makefile.am | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/gee/Makefile.am b/gee/Makefile.am\nindex 5634bcb..e0d950e 100644\n--- a/gee/Makefile.am\n+++ b/gee/Makefile.am\n@@ -167,7 +167,8 @@ INTROSPECTION_COMPILER_ARGS= \\\n \t-l $(libgee_dlname)\n Gee-0.8.gir: libgee_0_8_la_vala.stamp\n Gee-0.8.typelib: Gee-0.8.gir libgee-0.8.la\n-\t@INTROSPECTION_COMPILER@ $(INTROSPECTION_COMPILER_ARGS) -o $@ $^\n+\n+-include $(INTROSPECTION_MAKEFILE)\n endif\n \n MOSTLYCLEANFILES = \\\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/libgee/Config.in",
    "content": "config BR2_PACKAGE_LIBGEE\n\tbool \"libgee\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Libgee is an utility library providing GObject-based\n\t  interfaces and classes for commonly used data structures.\n\n\t  https://wiki.gnome.org/Projects/Libgee\n\ncomment \"libgee needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libgee/libgee.hash",
    "content": "# From http://ftp.acc.umu.se/pub/gnome/sources/libgee/0.20/libgee-0.20.4.sha256sum\nsha256  524c1bf390f9cdda4fbd9a47b269980dc64ab5280f0801b53bc69d782c72de0e  libgee-0.20.4.tar.xz\n\n# Hash for license file:\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING\n"
  },
  {
    "path": "package/libgee/libgee.mk",
    "content": "################################################################################\n#\n# libgee\n#\n################################################################################\n\nLIBGEE_VERSION_MAJOR = 0.20\nLIBGEE_VERSION = $(LIBGEE_VERSION_MAJOR).4\nLIBGEE_SITE = http://ftp.gnome.org/pub/gnome/sources/libgee/$(LIBGEE_VERSION_MAJOR)\nLIBGEE_SOURCE = libgee-$(LIBGEE_VERSION).tar.xz\nLIBGEE_DEPENDENCIES = host-pkgconf host-vala libglib2\nLIBGEE_INSTALL_STAGING = YES\nLIBGEE_LICENSE = LGPL-2.1+\nLIBGEE_LICENSE_FILES = COPYING\nLIBGEE_CPE_ID_VENDOR = gnome\n# We're patching gee/Makefile.am\nLIBGEE_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBGEE_CONF_OPTS += --enable-introspection\nLIBGEE_DEPENDENCIES += gobject-introspection\nelse\nLIBGEE_CONF_OPTS += --disable-introspection\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libgeos/Config.in",
    "content": "config BR2_PACKAGE_LIBGEOS\n\tbool \"libgeos\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_21464\n\tdepends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597\n\thelp\n\t  GEOS (Geometry Engine - Open Source) is a C++ port of the\n\t  JTS Topology Suite (JTS). It aims to contain the complete\n\t  functionality of JTS in C++. This includes all the OpenGIS\n\t  Simple Features for SQL spatial predicate functions and\n\t  spatial operators, as well as specific JTS enhanced functions.\n\n\t  https://trac.osgeo.org/geos\n\ncomment \"libgeos needs a toolchain w/ C++, wchar, not binutils bug 21464, 27597\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t   BR2_TOOLCHAIN_HAS_BINUTILS_BUG_21464 || \\\n\t\t   BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597\n"
  },
  {
    "path": "package/libgeos/libgeos.hash",
    "content": "# Locally calculated\nsha256  7e630507dcac9dc07565d249a26f06a15c9f5b0c52dd29129a0e3d381d7e382a  geos-3.9.1.tar.bz2\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/libgeos/libgeos.mk",
    "content": "################################################################################\n#\n# libgeos\n#\n################################################################################\n\nLIBGEOS_VERSION = 3.9.1\nLIBGEOS_SITE = http://download.osgeo.org/geos\nLIBGEOS_SOURCE = geos-$(LIBGEOS_VERSION).tar.bz2\nLIBGEOS_LICENSE = LGPL-2.1\nLIBGEOS_LICENSE_FILES = COPYING\nLIBGEOS_INSTALL_STAGING = YES\nLIBGEOS_CONFIG_SCRIPTS = geos-config\nLIBGEOS_CONF_OPTS = -DBUILD_BENCHMARKS=OFF\n\nLIBGEOS_CXXFLAGS = $(TARGET_CXXCFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)\nLIBGEOS_CXXFLAGS += -O0\nendif\n\nifeq ($(BR2_arm)$(BR2_armeb),y)\nLIBGEOS_CONF_OPTS += -DDISABLE_GEOS_INLINE=ON\nendif\n\nifeq ($(BR2_or1k),y)\nLIBGEOS_CXXFLAGS += -mcmodel=large\nendif\n\nLIBGEOS_CONF_OPTS += -DCMAKE_CXX_FLAGS=\"$(LIBGEOS_CXXFLAGS)\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libgeotiff/Config.in",
    "content": "config BR2_PACKAGE_LIBGEOTIFF\n\tbool \"libgeotiff\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # proj\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # proj\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # proj\n\tdepends on BR2_USE_WCHAR # proj\n\tselect BR2_PACKAGE_PROJ\n\tselect BR2_PACKAGE_TIFF\n\thelp\n\t  Libgeotiff is an open source library normally hosted on top of\n\t  libtiff for reading, and writing GeoTIFF information tags.\n\n\t  https://github.com/OSGeo/libgeotiff\n\ncomment \"libgeotiff needs a toolchain w/ C++, gcc >= 4.7, threads, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/libgeotiff/libgeotiff.hash",
    "content": "# Locally computed\nsha256  9311017e5284cffb86f2c7b7a9df1fb5ebcdc61c30468fb2e6bca36e4272ebca  libgeotiff-1.6.0.tar.gz\nsha256  6a22340b8293c50a34ce8e95589489bd3ec65bcb8b93e61cbda3daaafe498375  LICENSE\n"
  },
  {
    "path": "package/libgeotiff/libgeotiff.mk",
    "content": "################################################################################\n#\n# libgeotiff\n#\n################################################################################\n\nLIBGEOTIFF_VERSION = 1.6.0\nLIBGEOTIFF_SITE = http://download.osgeo.org/geotiff/libgeotiff\nLIBGEOTIFF_LICENSE = X11-style, public domain\nLIBGEOTIFF_LICENSE_FILES = LICENSE\nLIBGEOTIFF_DEPENDENCIES = proj tiff host-pkgconf\nLIBGEOTIFF_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLIBGEOTIFF_DEPENDENCIES += zlib\nLIBGEOTIFF_CONF_OPTS += --with-zlib\nelse\nLIBGEOTIFF_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nLIBGEOTIFF_DEPENDENCIES += jpeg\nLIBGEOTIFF_CONF_OPTS += --with-jpeg\nelse\nLIBGEOTIFF_CONF_OPTS += --without-jpeg\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libgit2/Config.in",
    "content": "config BR2_PACKAGE_LIBGIT2\n\tbool \"libgit2\"\n\tdepends on !BR2_STATIC_LIBS # libhttpparser\n\tselect BR2_PACKAGE_LIBHTTPPARSER\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  libgit2 is a portable, pure C implementation of the Git core\n\t  methods provided as a linkable library with a solid API,\n\t  allowing to build Git functionality into your application.\n\n\t  https://github.com/libgit2/libgit2\n\ncomment \"libgit2 needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libgit2/libgit2.hash",
    "content": "# Locally calculated\nsha256  192eeff84596ff09efb6b01835a066f2df7cd7985e0991c79595688e6b36444e  libgit2-1.3.0.tar.gz\nsha256  8b7e4f54f8bf210c8fe010a49571a1ee57463ef020cc43f051d4d3fbb74942af  COPYING\n"
  },
  {
    "path": "package/libgit2/libgit2.mk",
    "content": "################################################################################\n#\n# libgit2\n#\n################################################################################\n\nLIBGIT2_VERSION = 1.3.0\nLIBGIT2_SITE = $(call github,libgit2,libgit2,v$(LIBGIT2_VERSION))\nLIBGIT2_LICENSE = GPL-2.0 with linking exception, MIT (sha1), wildmatch license (wildmatch)\nLIBGIT2_LICENSE_FILES = COPYING\nLIBGIT2_CPE_ID_VENDOR = libgit2_project\nLIBGIT2_INSTALL_STAGING = YES\n\nLIBGIT2_CONF_OPTS = \\\n\t-DUSE_GSSAPI=OFF \\\n\t-DBUILD_CLAR=OFF \\\n\t-DUSE_ICONV=ON \\\n\t-DREGEX_BACKEND=regcomp \\\n\t-DUSE_HTTP_PARSER=system \\\n\t-DUSE_NTLMCLIENT=OFF \\\n\t-DTHREADSAFE=$(if $(BR2_TOOLCHAIN_HAS_THREADS),ON,OFF)\n\nLIBGIT2_DEPENDENCIES = zlib libhttpparser\n\n# If libiconv is available (for !locale toolchains), then we can use\n# it for iconv support. Note that USE_ICONV=ON is still correct even\n# without libiconv because (1) most toolchain have iconv support\n# without libiconv and (2) even if USE_ICONV=ON but iconv support is\n# not available, libgit2 simply avoids using iconv.\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nLIBGIT2_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_PACKAGE_LIBSSH2),y)\nLIBGIT2_DEPENDENCIES += libssh2\nLIBGIT2_CONF_OPTS += -DUSE_SSH=ON\nelse\nLIBGIT2_CONF_OPTS += -DUSE_SSH=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBGIT2_DEPENDENCIES += openssl\nLIBGIT2_CONF_OPTS += -DUSE_HTTPS=OpenSSL\nelse\nLIBGIT2_CONF_OPTS += -DUSE_HTTPS=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libglade/Config.in",
    "content": "config BR2_PACKAGE_LIBGLADE\n\tbool \"libglade\"\n\tdepends on BR2_PACKAGE_LIBGTK2\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_ATK\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  Libglade allows you to load glade interface files in a program\n\t  at runtime. It doesn't require GLADE to be used, but GLADE is\n\t  by far the easiest way to create the interface files.\n\n\t  http://ftp.gnome.org/pub/GNOME/sources/libglade/\n\ncomment \"libglade needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_LIBGTK2\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libglade/libglade.hash",
    "content": "# From http://ftp.gnome.org/pub/GNOME/sources/libglade/2.6/libglade-2.6.4.sha256sum\nsha256\t64361e7647839d36ed8336d992fd210d3e8139882269bed47dc4674980165dec\tlibglade-2.6.4.tar.bz2\n\n# Hash for license file:\nsha256\t94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23\tCOPYING\n"
  },
  {
    "path": "package/libglade/libglade.mk",
    "content": "################################################################################\n#\n# libglade\n#\n################################################################################\n\nLIBGLADE_VERSION_MAJOR = 2.6\nLIBGLADE_VERSION = $(LIBGLADE_VERSION_MAJOR).4\nLIBGLADE_SOURCE = libglade-$(LIBGLADE_VERSION).tar.bz2\nLIBGLADE_SITE = http://ftp.gnome.org/pub/GNOME/sources/libglade/$(LIBGLADE_VERSION_MAJOR)\nLIBGLADE_INSTALL_STAGING = YES\nLIBGLADE_DEPENDENCIES = host-pkgconf libglib2 libgtk2 atk libxml2\nLIBGLADE_LICENSE = LGPL-2.0+\nLIBGLADE_LICENSE_FILES = COPYING\n\ndefine LIBGLADE_INSTALL_FIX\n\trm -rf $(TARGET_DIR)/usr/share/xml/libglade \\\n\t\t$(TARGET_DIR)/usr/bin/libglade-convert\nendef\n\nLIBGLADE_POST_INSTALL_TARGET_HOOKS += LIBGLADE_INSTALL_FIX\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libglew/Config.in",
    "content": "config BR2_PACKAGE_LIBGLEW\n\tbool \"libglew\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXI\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  The OpenGL Extension Wrangler Library (GLEW) is a\n\t  cross-platform C/C++ extension loading library. GLEW provides\n\t  efficient run-time mechanisms for determining which OpenGL\n\t  extensions are supported on the target platform. OpenGL core\n\t  and extension functionality is exposed in a single header\n\t  file.\n\n\t  https://github.com/nigels-com/glew\n\ncomment \"libglew depends on X.org and needs an OpenGL backend\"\n\tdepends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGL\n"
  },
  {
    "path": "package/libglew/libglew.hash",
    "content": "# Locally computed:\nsha256  d4fc82893cfb00109578d0a1a2337fb8ca335b3ceccf97b97e5cc7f08e4353e1  glew-2.2.0.tgz\nsha256  8991cd11befec7c6a63662700f03c0cc42e864b6e77c7e70b80297c951a7f0ff  LICENSE.txt\n"
  },
  {
    "path": "package/libglew/libglew.mk",
    "content": "################################################################################\n#\n# libglew\n#\n################################################################################\n\nLIBGLEW_VERSION = 2.2.0\nLIBGLEW_SOURCE = glew-$(LIBGLEW_VERSION).tgz\nLIBGLEW_SITE = https://github.com/nigels-com/glew/releases/download/glew-$(LIBGLEW_VERSION)\nLIBGLEW_LICENSE = BSD-3-Clause, MIT\nLIBGLEW_LICENSE_FILES = LICENSE.txt\nLIBGLEW_INSTALL_STAGING = YES\nLIBGLEW_DEPENDENCIES = libgl xlib_libX11 xlib_libXext xlib_libXi xlib_libXmu\n\n# using $TARGET_CONFIGURE_OPTS breaks compilation\ndefine LIBGLEW_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tGLEW_NO_GLU=\"-DGLEW_NO_GLU\" \\\n\t\tGLEW_DEST=\"/usr\" LIBDIR=\"/usr/lib\" \\\n\t\tAR=\"$(TARGET_AR)\" CC=\"$(TARGET_CC)\" \\\n\t\tLD=\"$(TARGET_CC)\" STRIP=\"$(TARGET_STRIP)\" \\\n\t\tPOPT=\"$(TARGET_CFLAGS)\" LDFLAGS.EXTRA=\"$(TARGET_LDFLAGS)\"\nendef\n\ndefine LIBGLEW_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tGLEW_NO_GLU=\"-DGLEW_NO_GLU\" \\\n\t\tGLEW_DEST=\"$(STAGING_DIR)/usr\" LIBDIR=\"$(STAGING_DIR)/usr/lib\" \\\n\t\t$(TARGET_CONFIGURE_OPTS) install\nendef\n\ndefine LIBGLEW_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tGLEW_NO_GLU=\"-DGLEW_NO_GLU\" \\\n\t\tGLEW_DEST=\"$(TARGET_DIR)/usr\" LIBDIR=\"$(TARGET_DIR)/usr/lib\" \\\n\t\t$(TARGET_CONFIGURE_OPTS) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libglfw/Config.in",
    "content": "config BR2_PACKAGE_LIBGLFW\n\tbool \"libglfw\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_XLIB_LIBXCURSOR\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXI\n\tselect BR2_PACKAGE_XLIB_LIBXINERAMA\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\thelp\n\t  GLFW is an Open Source, multi-platform library for creating\n\t  windows with OpenGL contexts and receiving input and events.\n\n\t  http://www.glfw.org\n\ncomment \"libglfw depends on X.org and needs an OpenGL backend\"\n\tdepends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGL\n"
  },
  {
    "path": "package/libglfw/libglfw.hash",
    "content": "# Locally computed\nsha256  98768e12e615fbe9f3386f5bbfeb91b5a3b45a8c4c77159cef06b1f6ff749537  libglfw-3.3.2.tar.gz\nsha256  149704059b5d0bf551637e50042dd4de9c2cae921021f6636298911e3a5f9462  LICENSE.md\n"
  },
  {
    "path": "package/libglfw/libglfw.mk",
    "content": "################################################################################\n#\n# libglfw\n#\n################################################################################\n\nLIBGLFW_VERSION = 3.3.2\nLIBGLFW_SITE = $(call github,glfw,glfw,$(LIBGLFW_VERSION))\nLIBGLFW_INSTALL_STAGING = YES\nLIBGLFW_DEPENDENCIES = libgl xlib_libXcursor xlib_libXext \\\n\txlib_libXi xlib_libXinerama xlib_libXrandr\nLIBGLFW_LICENSE = Zlib\nLIBGLFW_LICENSE_FILES = LICENSE.md\n\nLIBGLFW_CONF_OPTS += \\\n\t-DGLFW_BUILD_EXAMPLES=OFF \\\n\t-DGLFW_BUILD_TESTS=OFF \\\n\t-DGLFW_BUILD_DOCS=OFF\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y)\nLIBGLFW_DEPENDENCIES += xlib_libXxf86vm\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libglib2/0001-fix-compile-time-atomic-detection.patch",
    "content": "From d5c628a6179b99705fa05ab87437321b132c81bc Mon Sep 17 00:00:00 2001\nFrom: Brendan Heading <brendanheading@gmail.com>\nDate: Wed, 21 Jun 2017 16:36:15 -0400\nSubject: [PATCH] Fix compile time atomic detection\n\nImproved compile-time detection of atomic support in the compiler.\n\nUpstream-Status: 'Needs information'\nSee : https://gitlab.gnome.org/GNOME/glib/issues/1063\n\nSigned-off-by: Brendan Heading <brendanheading@gmail.com>\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\nRefresh for 2.68.1\n---\n glib/gthread-posix.c | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/glib/gthread-posix.c b/glib/gthread-posix.c\nindex 71a6b7b..d09d029 100644\n--- a/glib/gthread-posix.c\n+++ b/glib/gthread-posix.c\n@@ -72,8 +72,7 @@\n #include <sys/syscall.h>\n #endif\n \n-#if defined(HAVE_FUTEX) && \\\n-    (defined(HAVE_STDATOMIC_H) || defined(__ATOMIC_SEQ_CST))\n+#if defined(HAVE_FUTEX) && defined(__ATOMIC_SEQ_CST) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) && !defined(__clang__)\n #define USE_NATIVE_MUTEX\n #endif\n \n-- \n2.9.4\n\n"
  },
  {
    "path": "package/libglib2/0002-remove-cpp-requirement.patch",
    "content": "From 2f168951df1feebeac549ada1ea44ea092484c54 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <Aduskett@gmail.com>\nDate: Mon, 16 Sep 2019 10:12:38 -0700\nSubject: [PATCH] remove cpp requirement\n\nThe c++ test is necessary to ensure libglib doesn't accidentally use C++\nreserved keywords in public headers. Because this is just a test, it isn't\nnecessary to have a C++ compiler to build libglib2.\n\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\nUpstream status: Denied (Buildroot specific)\nhttps://gitlab.gnome.org/GNOME/glib/issues/1748\n---\n glib/glibconfig.h.in |  1 -\n meson.build          | 18 +-----------------\n tests/meson.build    |  5 -----\n 3 files changed, 1 insertion(+), 23 deletions(-)\n\ndiff --git a/glib/glibconfig.h.in b/glib/glibconfig.h.in\nindex 7ef8c48..128e65d 100644\n--- a/glib/glibconfig.h.in\n+++ b/glib/glibconfig.h.in\n@@ -117,7 +117,6 @@ typedef unsigned @glib_intptr_type_define@ guintptr;\n @glib_vacopy@\n \n @g_have_iso_c_varargs@\n-@g_have_iso_cxx_varargs@\n \n /* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi\n  * is passed ISO vararg support is turned off, and there is no work\ndiff --git a/meson.build b/meson.build\nindex 4bbf4c2..ac59f4e 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1,4 +1,4 @@\n-project('glib', 'c', 'cpp',\n+project('glib', 'c',\n   version : '2.68.4',\n   # NOTE: We keep this pinned at 0.49 because that's what Debian 10 ships\n   meson_version : '>= 0.49.2',\n@@ -10,7 +10,6 @@ project('glib', 'c', 'cpp',\n )\n \n cc = meson.get_compiler('c')\n-cxx = meson.get_compiler('cpp')\n \n cc_can_run = not meson.is_cross_build() or meson.has_exe_wrapper()\n \n@@ -1679,20 +1678,6 @@ if g_have_iso_c_varargs\n #endif''')\n endif\n \n-g_have_iso_cxx_varargs = cxx.compiles('''\n-  void some_func (void) {\n-    int a(int p1, int p2, int p3);\n-    #define call_a(...) a(1,__VA_ARGS__)\n-    call_a(2,3);\n-  }''', name : 'ISO C99 varargs macros in C++')\n-\n-if g_have_iso_cxx_varargs\n-  glibconfig_conf.set('g_have_iso_cxx_varargs', '''\n-#ifdef __cplusplus\n-# define G_HAVE_ISO_VARARGS 1\n-#endif''')\n-endif\n-\n g_have_gnuc_varargs = cc.compiles('''\n   void some_func (void) {\n     int a(int p1, int p2, int p3);\n@@ -2330,7 +2315,6 @@ subdir('gobject')\n subdir('gthread')\n subdir('gmodule')\n subdir('gio')\n-subdir('fuzzing')\n if build_tests\n   subdir('tests')\n endif\ndiff --git a/tests/meson.build b/tests/meson.build\nindex e4ea226..7fd974c 100644\n--- a/tests/meson.build\n+++ b/tests/meson.build\n@@ -55,11 +55,6 @@ tests = {\n     'source': 'module-test.c',\n     'c_args': ['-DMODULE_TYPE=\"plugin\"'],\n   },\n-  'cxx-test' : {\n-    'source' : 'cxx-test.cpp',\n-    'include_directories' : gmoduleinc,\n-    'dependencies' : [libgio_dep],\n-  },\n }\n \n test_extra_programs = {\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/libglib2/0003-Add-Wno-format-nonliteral-to-compiler-arguments.patch",
    "content": "From 9e0f11a4981737f98bac93a22b6f2ff1a3887b63 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <Aduskett@gmail.com>\nDate: Tue, 9 Apr 2019 13:03:51 -0400\nSubject: [PATCH] Add '-Wno-format-nonliteral' to compiler arguments.\n\nThis warning is a false positive on older versions of gcc.\nSee https://gitlab.gnome.org/GNOME/glib/issues/1744 for more details.\n\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\nRefresh for 2.68.1\n---\n meson.build | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/meson.build b/meson.build\nindex 3c615b7..7cae4e8 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -431,6 +431,7 @@ if cc.get_id() == 'gcc' or cc.get_id() == 'clang'\n     # building with -Wbad-function-cast.\n     '-Wno-bad-function-cast',\n     '-Wno-cast-function-type',\n+    '-Wno-format-nonliteral',\n     # Due to function casts through (void*) we cannot support -Wpedantic:\n     # https://wiki.gnome.org/Projects/GLib/CompilerRequirements#Function_pointer_conversions.\n     '-Wno-pedantic',\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/libglib2/0004-meson.build-add-girdir-to-gio-2.0.pc-and-glib-2.0.pc.patch",
    "content": "From ff3db531608eb0f9de8a88c1bc34fe0f1d93121c Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 12 Nov 2021 18:01:05 +0100\nSubject: [PATCH] meson.build: add girdir to gio-2.0.pc and glib-2.0.pc\n\nAdd girdir to gio-2.0.pc and glib-2.0.pc to fix the following build\nfailure with atk or libnice:\n\n/home/giuliobenetti/autobuild/run/instance-1/output-1/host/riscv32-buildroot-linux-gnu/sysroot/usr/bin/g-ir-compiler atk/Atk-1.0.gir --output atk/Atk-1.0.typelib --includedir=/usr/share/gir-1.0\nCould not find GIR file 'GObject-2.0.gir'; check XDG_DATA_DIRS or use --includedir\n\nFixes:\n - http://autobuild.buildroot.org/results/2716929db638977e6bf665352a08bd580e1dd0ae\n - http://autobuild.buildroot.org/results/3088ef32b03e0bb984291b1227b187f1ff816eb7\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n gio/meson.build  | 1 +\n glib/meson.build | 1 +\n 2 files changed, 2 insertions(+)\n\ndiff --git a/gio/meson.build b/gio/meson.build\nindex 29473d26b..112d4ada9 100644\n--- a/gio/meson.build\n+++ b/gio/meson.build\n@@ -831,6 +831,7 @@ pkg.generate(libgio,\n   variables : ['datadir=' + join_paths('${prefix}', get_option('datadir')),\n                'schemasdir=' + join_paths('${datadir}', schemas_subdir),\n                'bindir=' + join_paths('${prefix}', get_option('bindir')),\n+               'girdir=' + join_paths('${libdir}', '../share/gir-1.0'),\n                'giomoduledir=' + pkgconfig_giomodulesdir,\n                'gio=' + join_paths('${bindir}', 'gio'),\n                'gio_querymodules=' + join_paths('${bindir}', 'gio-querymodules'),\ndiff --git a/glib/meson.build b/glib/meson.build\nindex f78f32969..6c5486699 100644\n--- a/glib/meson.build\n+++ b/glib/meson.build\n@@ -377,6 +377,7 @@ pkg.generate(libglib,\n   subdirs : ['glib-2.0'],\n   extra_cflags : ['-I${libdir}/glib-2.0/include'] + win32_cflags,\n   variables : ['bindir=' + join_paths('${prefix}', get_option('bindir')),\n+               'girdir=' + join_paths('${libdir}', '../share/gir-1.0'),\n                'glib_genmarshal=' + join_paths('${bindir}', 'glib-genmarshal'),\n                'gobject_query=' + join_paths('${bindir}', 'gobject-query'),\n                'glib_mkenums=' + join_paths('${bindir}', 'glib-mkenums')],\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/libglib2/Config.in",
    "content": "config BR2_PACKAGE_LIBGLIB2\n\tbool \"libglib2\"\n\tdepends on BR2_USE_WCHAR # gettext\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_LIBFFI\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_PCRE_UCP\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Low-level core library that forms the basis of GTK+ and GNOME.\n\n\t  http://www.gtk.org/\n\ncomment \"libglib2 needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libglib2/libglib2.hash",
    "content": "# https://download.gnome.org/sources/glib/2.68/glib-2.68.4.sha256sum\nsha256  62fd061d08a75492617e625a73e2c05e259f831acbb8e1f8b9c81f23f7993a3b  glib-2.68.4.tar.xz\n# License files, locally calculated\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/libglib2/libglib2.mk",
    "content": "################################################################################\n#\n# libglib2\n#\n################################################################################\n\nLIBGLIB2_VERSION_MAJOR = 2.68\nLIBGLIB2_VERSION = $(LIBGLIB2_VERSION_MAJOR).4\nLIBGLIB2_SOURCE = glib-$(LIBGLIB2_VERSION).tar.xz\nLIBGLIB2_SITE = http://ftp.gnome.org/pub/gnome/sources/glib/$(LIBGLIB2_VERSION_MAJOR)\nLIBGLIB2_LICENSE = LGPL-2.1+\nLIBGLIB2_LICENSE_FILES = COPYING\nLIBGLIB2_CPE_ID_VENDOR = gnome\nLIBGLIB2_CPE_ID_PRODUCT = glib\nLIBGLIB2_INSTALL_STAGING = YES\n\nLIBGLIB2_CFLAGS = $(TARGET_CFLAGS)\nLIBGLIB2_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\n# glib/valgrind.h contains inline asm not compatible with thumb1\nifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)\nLIBGLIB2_CFLAGS += -marm\nendif\n\nHOST_LIBGLIB2_CONF_OPTS = \\\n\t-Ddtrace=false \\\n\t-Dfam=false \\\n\t-Dglib_debug=disabled \\\n\t-Dlibelf=disabled \\\n\t-Dselinux=disabled \\\n\t-Dsystemtap=false \\\n\t-Dxattr=false \\\n\t-Dinternal_pcre=false \\\n\t-Dtests=false \\\n\t-Doss_fuzz=disabled\n\nLIBGLIB2_DEPENDENCIES = \\\n\thost-pkgconf host-libglib2 \\\n\tlibffi pcre zlib $(TARGET_NLS_DEPENDENCIES)\n\nHOST_LIBGLIB2_DEPENDENCIES = \\\n\thost-gettext \\\n\thost-libffi \\\n\thost-pcre \\\n\thost-pkgconf \\\n\thost-util-linux \\\n\thost-zlib\n\n# We explicitly specify a giomodule-dir to avoid having a value\n# containing ${libdir} in gio-2.0.pc. Indeed, a value depending on\n# ${libdir} would be prefixed by the sysroot by pkg-config, causing a\n# bogus installation path once combined with $(DESTDIR).\nLIBGLIB2_CONF_OPTS = \\\n\t-Dglib_debug=disabled \\\n\t-Dinternal_pcre=false \\\n\t-Dlibelf=disabled \\\n\t-Dgio_module_dir=/usr/lib/gio/modules \\\n\t-Dtests=false \\\n\t-Doss_fuzz=disabled\n\nLIBGLIB2_MESON_EXTRA_PROPERTIES = \\\n\thave_c99_vsnprintf=true \\\n\thave_c99_snprintf=true \\\n\thave_unix98_printf=true\n\nifneq ($(BR2_ENABLE_LOCALE),y)\nLIBGLIB2_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_PACKAGE_ELFUTILS),y)\nLIBGLIB2_DEPENDENCIES += elfutils\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nLIBGLIB2_CONF_OPTS += -Diconv=external\nLIBGLIB2_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nLIBGLIB2_CONF_OPTS += -Dselinux=enabled -Dxattr=true\nLIBGLIB2_DEPENDENCIES += libselinux\nelse\nLIBGLIB2_CONF_OPTS += -Dselinux=disabled -Dxattr=false\nendif\n\n# Purge gdb-related files\nifneq ($(BR2_PACKAGE_GDB),y)\ndefine LIBGLIB2_REMOVE_GDB_FILES\n\trm -rf $(TARGET_DIR)/usr/share/glib-2.0/gdb\nendef\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y)\nLIBGLIB2_CONF_OPTS += -Dlibmount=enabled\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBS),y)\nLIBGLIB2_DEPENDENCIES += util-linux-libs\nelse\nLIBGLIB2_DEPENDENCIES += util-linux\nendif\nelse\nLIBGLIB2_CONF_OPTS += -Dlibmount=disabled\nendif\n\n# Purge useless binaries from target\ndefine LIBGLIB2_REMOVE_DEV_FILES\n\trm -rf $(TARGET_DIR)/usr/lib/glib-2.0\n\trm -rf $(addprefix $(TARGET_DIR)/usr/share/glib-2.0/,codegen gettext)\n\trm -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)\n\t$(LIBGLIB2_REMOVE_GDB_FILES)\nendef\n\nLIBGLIB2_POST_INSTALL_TARGET_HOOKS += LIBGLIB2_REMOVE_DEV_FILES\n\n# Newer versions of libglib2 prefix glib-genmarshal, gobject-query,\n# glib-mkenums, glib_compile_schemas, glib_compile_resources and gdbus-codegen\n# with ${bindir}. Unfortunately, this will resolve to the host systems /bin/\n# directory, which will cause compilation issues if the host does not have these\n# programs. By removing the ${bindir}/ prefix, these programs are resolved in\n# PATH instead.\ndefine LIBGLIB2_REMOVE_BINDIR_PREFIX_FROM_PC_FILE\n\t$(SED) 's%$${bindir}/%%g' $(addprefix $(STAGING_DIR)/usr/lib/pkgconfig/, glib-2.0.pc gio-2.0.pc)\nendef\nLIBGLIB2_POST_INSTALL_TARGET_HOOKS += LIBGLIB2_REMOVE_BINDIR_PREFIX_FROM_PC_FILE\n\n# Remove schema sources/DTDs, we use staging ones to compile them.\n# Do so at target finalization since other packages install additional\n# ones and we want to deal with it in a single place.\ndefine LIBGLIB2_REMOVE_TARGET_SCHEMAS\n\trm -f $(TARGET_DIR)/usr/share/glib-2.0/schemas/*.xml \\\n\t\t$(TARGET_DIR)/usr/share/glib-2.0/schemas/*.dtd\nendef\n\n# Compile schemas at target finalization since other packages install\n# them as well, and better do it in a central place.\n# It's used at run time so it doesn't matter defering it.\ndefine LIBGLIB2_COMPILE_SCHEMAS\n\t$(HOST_DIR)/bin/glib-compile-schemas \\\n\t\t$(STAGING_DIR)/usr/share/glib-2.0/schemas \\\n\t\t--targetdir=$(TARGET_DIR)/usr/share/glib-2.0/schemas\nendef\n\nLIBGLIB2_TARGET_FINALIZE_HOOKS += LIBGLIB2_REMOVE_TARGET_SCHEMAS\nLIBGLIB2_TARGET_FINALIZE_HOOKS += LIBGLIB2_COMPILE_SCHEMAS\n\n$(eval $(meson-package))\n$(eval $(host-meson-package))\n\nLIBGLIB2_HOST_BINARY = $(HOST_DIR)/bin/glib-genmarshal\n"
  },
  {
    "path": "package/libglob/Config.in",
    "content": "config BR2_PACKAGE_LIBGLOB\n\tbool \"libglob\"\n\thelp\n\t  OpenBSD implementation of glob(3).\n\n\t  https://github.com/void-linux/libglob\n"
  },
  {
    "path": "package/libglob/libglob.hash",
    "content": "# Locally calculated:\nsha256  4f1b204dad065689941c64828a92441fb316c9c7539b39525fa728125da65e22  libglob-1.0.tar.gz\nsha256  4cd4bac6ef90d4a91ee6e52df30f241045fb1a27fb53541ef4a9f8e47e6103ca  LICENSE\n"
  },
  {
    "path": "package/libglob/libglob.mk",
    "content": "################################################################################\n#\n# libglob\n#\n################################################################################\n\nLIBGLOB_VERSION = 1.0\nLIBGLOB_SITE = $(call github,voidlinux,libglob,$(LIBGLOB_VERSION))\nLIBGLOB_LICENSE = BSD-3-Clause\nLIBGLOB_LICENSE_FILES = LICENSE\nLIBGLOB_INSTALL_STAGING = YES\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nLIBGLOB_MAKE_TARGETS += libglob.so\n# $1: destination directory\ndefine LIBGLOB_INSTALL_SHARED\n\t$(INSTALL) -m 0755 -D $(@D)/libglob.so.0.0.0 \\\n\t\t$(1)/usr/lib/libglob.so.0.0.0\n\tln -sf libglob.so.0.0.0 $(1)/usr/lib/libglob.so.0\n\tln -sf libglob.so.0.0.0 $(1)/usr/lib/libglob.so\nendef\nendif\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nLIBGLOB_MAKE_TARGETS += libglob.a\n# $1: destination directory\ndefine LIBGLOB_INSTALL_STATIC\n\t$(INSTALL) -m 0644 -D $(@D)/libglob.a $(1)/usr/lib/libglob.a\nendef\nendif\n\ndefine LIBGLOB_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(LIBGLOB_MAKE_TARGETS)\nendef\n\ndefine LIBGLOB_INSTALL_STAGING_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/glob.h \\\n\t\t$(STAGING_DIR)/usr/include/libglob/glob.h\n\t$(call LIBGLOB_INSTALL_SHARED,$(STAGING_DIR))\n\t$(call LIBGLOB_INSTALL_STATIC,$(STAGING_DIR))\nendef\n\ndefine LIBGLOB_INSTALL_TARGET_CMDS\n\t$(call LIBGLOB_INSTALL_SHARED,$(TARGET_DIR))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libglu/Config.in",
    "content": "config BR2_PACKAGE_LIBGLU\n\tbool \"libglu\"\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\thelp\n\t  Mesa OpenGL Utility library\n\n\t  http://cgit.freedesktop.org/mesa/glu/\n\ncomment \"libglu needs an OpenGL backend\"\n\tdepends on !BR2_PACKAGE_HAS_LIBGL\n"
  },
  {
    "path": "package/libglu/libglu.hash",
    "content": "# From https://lists.freedesktop.org/archives/mesa-announce/2021-June/000634.html\nsha256  6e7280ff585c6a1d9dfcdf2fca489251634b3377bfc33c29e4002466a38d02d4  glu-9.0.2.tar.xz\nsha512  2517d7406bb643d12c017a95dcb5d8716f307344332638bcbdf274a90752a7c22165d34745f1b082ed916bb07d40e62d1d1d67d96426225be63166f3480d6f64  glu-9.0.2.tar.xz\n# locally computed\nsha256  3a9992ccc9d672cfdd07ea862431d943a992d04836570c638a733bf15ec62c54  include/GL/glu.h\n"
  },
  {
    "path": "package/libglu/libglu.mk",
    "content": "################################################################################\n#\n# libglu\n#\n################################################################################\n\nLIBGLU_VERSION = 9.0.2\nLIBGLU_SITE = https://mesa.freedesktop.org/archive/glu\nLIBGLU_SOURCE = glu-$(LIBGLU_VERSION).tar.xz\nLIBGLU_LICENSE = SGI-B-2.0\nLIBGLU_LICENSE_FILES = include/GL/glu.h\nLIBGLU_INSTALL_STAGING = YES\nLIBGLU_DEPENDENCIES = libgl host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libgpg-error/0001-build-Fix-generation-of-lock-obj-pub.native.h-for-cr.patch",
    "content": "From 7350874f6f62314af4c8ec1973c91d305a6f4ddc Mon Sep 17 00:00:00 2001\nFrom: David Michael <fedora.dm0@gmail.com>\nDate: Fri, 26 Mar 2021 16:06:50 +0900\nSubject: [PATCH] build: Fix generation of lock-obj-pub.native.h for cross\n build.\n\n* src/gen-lock-obj.sh: Capture echo output with quotes.\n\n--\n\nFixes-commit: 99ae862a96a569724f49a604ebb7d3f6d2c2d374\nSigned-off-by: David Michael <fedora.dm0@gmail.com>\nUpstream: 33593864cd54143db594c4237bba41e14179061c\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n src/gen-lock-obj.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/gen-lock-obj.sh b/src/gen-lock-obj.sh\nindex a710f0c..258eec6 100755\n--- a/src/gen-lock-obj.sh\n+++ b/src/gen-lock-obj.sh\n@@ -38,7 +38,7 @@\n #     AWK=gawk ./gen-lock-obj.sh\n #\n \n-if test -n `echo -n`; then\n+if test -n \"`echo -n`\"; then\n     ECHO_C='\\c'\n     ECHO_N=''\n else\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/libgpg-error/0002-build-Fix-disable-threads.patch",
    "content": "From 7ede0d4ce19e0ed14cd1cec81ba7df4e467f1eeb Mon Sep 17 00:00:00 2001\nFrom: NIIBE Yutaka <gniibe@fsij.org>\nDate: Mon, 21 Jun 2021 12:16:20 +0900\nSubject: [PATCH] build: Fix --disable-threads.\n\n* src/gen-lock-obj.sh: Fix generating '}}}'.\n\n--\n\nGnuPG-bug-id: 5495\nReported-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nFixes-commit: 1fb90a7da186ee2ee098a666f6f3a35bb1720e59\nSigned-off-by: NIIBE Yutaka <gniibe@fsij.org>\n[Retrieved from:\nhttps://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgpg-error.git;a=commit;h=220a427b4f997ef6af1b2d4e82ef1dc96e0cd6ff]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/gen-lock-obj.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/gen-lock-obj.sh b/src/gen-lock-obj.sh\nindex 258eec6..014667f 100755\n--- a/src/gen-lock-obj.sh\n+++ b/src/gen-lock-obj.sh\n@@ -121,10 +121,10 @@ while test \"$i\" -lt $ac_mtx_size; do\n     fi\n     i=$(( i + 1 ))\n done\n+echo '}}}'\n fi\n \n cat <<'EOF'\n-}}}\n ##\n ## Local Variables:\n ## mode: c\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/libgpg-error/Config.in",
    "content": "config BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS\n\tbool\n\t# see src/syscfg/\n\tdefault y if \\\n\t\tBR2_aarch64\t|| BR2_aarch64_eb\t|| BR2_arm\t|| \\\n\t\tBR2_armeb\t|| BR2_i386\t\t|| BR2_mips\t|| \\\n\t\tBR2_mipsel\t|| BR2_mips64\t\t|| BR2_mips64el\t|| \\\n\t\tBR2_m68k\t|| BR2_nios2\t\t|| BR2_powerpc\t|| \\\n\t\tBR2_powerpc64 \t|| BR2_powerpc64le \t|| BR2_RISCV_64\t|| \\\n\t\tBR2_RISCV_32\t|| BR2_s390x\t\t|| BR2_sh4\t|| \\\n\t\tBR2_sh4eb\t|| BR2_sh4a\t\t|| BR2_sh4aeb\t|| \\\n\t\tBR2_sparc\t|| BR2_sparc64\t\t|| BR2_x86_64\n\nconfig BR2_PACKAGE_LIBGPG_ERROR\n\tbool \"libgpg-error\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS\n\thelp\n\t  Libgpg-error is a small library with error codes and\n\t  descriptions shared by most GnuPG related software.\n\n\t  https://www.gnupg.org/related_software/libgpg-error\n\nconfig BR2_PACKAGE_LIBGPG_ERROR_SYSCFG\n\tstring\n\tdefault \"aarch64-unknown-linux-gnu\" \\\n\t\tif BR2_aarch64 || BR2_aarch64_eb\n\tdefault \"arm-unknown-linux-gnueabi\" \\\n\t\tif BR2_arm || BR2_armeb\n\tdefault \"i686-pc-linux-gnu\" \\\n\t\tif BR2_i386\n\tdefault \"mips-unknown-linux-gnu\" \\\n\t\tif BR2_mips || BR2_mipsel\n\tdefault \"mips64el-unknown-linux-gnuabi64\" \\\n\t\tif BR2_mips64 || BR2_mips64el\n\tdefault \"m68k-unknown-linux-gnu\" \\\n\t\tif BR2_m68k\n\tdefault \"nios2-unknown-linux-gnu\" \\\n\t\tif BR2_nios2\n\tdefault \"powerpc-unknown-linux-gnu\" \\\n\t\tif BR2_powerpc\n\tdefault \"powerpc64-unknown-linux-gnu\" \\\n\t\tif BR2_powerpc64 || BR2_powerpc64le\n\tdefault \"riscv32-unknown-linux-gnu\" \\\n\t\tif BR2_RISCV_32\n\tdefault \"riscv64-unknown-linux-gnu\" \\\n\t\tif BR2_RISCV_64\n\tdefault \"s390x-unknown-linux-gnu\" \\\n\t\tif BR2_s390x\n\tdefault \"sh4-unknown-linux-gnu\" \\\n\t\tif BR2_sh4 || BR2_sh4eb || BR2_sh4a || BR2_sh4aeb\n\tdefault \"sparc-unknown-linux-gnu\" \\\n\t\tif BR2_sparc\n\tdefault \"sparc64-unknown-linux-gnu\" \\\n\t\tif BR2_sparc64\n\tdefault \"x86_64-unknown-linux-gnu\" \\\n\t\tif BR2_x86_64\n"
  },
  {
    "path": "package/libgpg-error/libgpg-error.hash",
    "content": "# From https://www.gnupg.org/download/integrity_check.html\nsha1  5e620d71fc24d287a7ac2460b1d819074bb8b9bb  libgpg-error-1.42.tar.bz2\n\n# Locally calculated after checking pgp signature\n# https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.42.tar.bz2.sig\n# using key D8692123C4065DEA5E0F3AB5249B39D24F25E3B6\nsha256  fc07e70f6c615f8c4f590a8e37a9b8dd2e2ca1e9408f8e60459c67452b925e23  libgpg-error-1.42.tar.bz2\n# Locally calculated\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING.LIB\n"
  },
  {
    "path": "package/libgpg-error/libgpg-error.mk",
    "content": "################################################################################\n#\n# libgpg-error\n#\n################################################################################\n\nLIBGPG_ERROR_VERSION = 1.42\nLIBGPG_ERROR_SITE = https://www.gnupg.org/ftp/gcrypt/libgpg-error\nLIBGPG_ERROR_SOURCE = libgpg-error-$(LIBGPG_ERROR_VERSION).tar.bz2\nLIBGPG_ERROR_LICENSE = GPL-2.0+, LGPL-2.1+\nLIBGPG_ERROR_LICENSE_FILES = COPYING COPYING.LIB\nLIBGPG_ERROR_CPE_ID_VENDOR = gnupg\nLIBGPG_ERROR_INSTALL_STAGING = YES\nLIBGPG_ERROR_CONFIG_SCRIPTS = gpg-error-config\nLIBGPG_ERROR_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\nLIBGPG_ERROR_CONF_OPTS = --disable-tests \\\n\t\t--host=$(BR2_PACKAGE_LIBGPG_ERROR_SYSCFG)\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nLIBGPG_ERROR_CONF_OPTS += --enable-threads\nelse\nLIBGPG_ERROR_CONF_OPTS += --disable-threads\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libgpgme/0001-core-Support-closefrom-also-for-glibc.patch",
    "content": "From 4b64774b6d13ffa4f59dddf947a97d61bcfa2f2e Mon Sep 17 00:00:00 2001\nFrom: Jiri Kucera <sanczes@gmail.com>\nDate: Sun, 25 Jul 2021 11:35:54 +0200\nSubject: [PATCH] core: Support closefrom also for glibc.\n\n* src/posix-io.c (_gpgme_io_spawn): Use glibc's closefrom.\n--\n\nSince 2.34, glibc introduces closefrom (the implementation\nfollows *BSD standard).\n\nSigned-off-by: Werner Koch <wk@gnupg.org>\n\n[Retrieved from:\nhttps://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=commit;h=4b64774b6d13ffa4f59dddf947a97d61bcfa2f2e]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/posix-io.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/posix-io.c b/src/posix-io.c\nindex e712ef28..2a3a81fc 100644\n--- a/src/posix-io.c\n+++ b/src/posix-io.c\n@@ -570,7 +570,7 @@ _gpgme_io_spawn (const char *path, char *const argv[], unsigned int flags,\n               if (fd_list[i].fd > fd)\n                 fd = fd_list[i].fd;\n             fd++;\n-#if defined(__sun) || defined(__FreeBSD__)\n+#if defined(__sun) || defined(__FreeBSD__) || defined(__GLIBC__)\n             closefrom (fd);\n             max_fds = fd;\n #else /*!__sun */\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/libgpgme/Config.in",
    "content": "config BR2_PACKAGE_LIBGPGME\n\tbool \"libgpgme\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error\n\tdepends on BR2_USE_MMU # libassuan\n\t#gnupg is not needed to build, but at runtime.\n\tselect BR2_PACKAGE_GNUPG if !BR2_PACKAGE_GNUPG2\n\tselect BR2_PACKAGE_LIBGPG_ERROR\n\tselect BR2_PACKAGE_LIBASSUAN\n\thelp\n\t  GnuPG Made Easy (GPGME) is a library designed to make access\n\t  to GnuPG easier for applications.\n\n\t  http://www.gnupg.org/related_software/gpgme/\n"
  },
  {
    "path": "package/libgpgme/libgpgme.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://gnupg.org/ftp/gcrypt/gpgme/gpgme-1.15.1.tar.bz2.sig\n# using key D8692123C4065DEA5E0F3AB5249B39D24F25E3B6\nsha256  eebc3c1b27f1c8979896ff361ba9bb4778b508b2496c2fc10e3775a40b1de1ad  gpgme-1.15.1.tar.bz2\n# Locally calculated\nsha256  ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532  COPYING.LESSER\n"
  },
  {
    "path": "package/libgpgme/libgpgme.mk",
    "content": "################################################################################\n#\n# libgpgme\n#\n################################################################################\n\nLIBGPGME_VERSION = 1.15.1\nLIBGPGME_SITE = https://gnupg.org/ftp/gcrypt/gpgme\nLIBGPGME_SOURCE = gpgme-$(LIBGPGME_VERSION).tar.bz2\nLIBGPGME_LICENSE = LGPL-2.1+\nLIBGPGME_LICENSE_FILES = COPYING.LESSER\nLIBGPGME_CPE_ID_VENDOR = gnupg\nLIBGPGME_CPE_ID_PRODUCT = gpgpme\nLIBGPGME_INSTALL_STAGING = YES\nLIBGPGME_DEPENDENCIES = libassuan libgpg-error\nLIBGPGME_CONFIG_SCRIPTS = gpgme-config\n\nLIBGPGME_LANGUAGE_BINDINGS = cl\n# C++ bindings require a C++11 capable gcc, and -Wsuggest-override support\nifeq ($(BR2_INSTALL_LIBSTDCPP)$(BR2_TOOLCHAIN_GCC_AT_LEAST_5),yy)\nLIBGPGME_LANGUAGE_BINDINGS += cpp\nendif\n\nLIBGPGME_CONF_OPTS = \\\n\t--with-gpg-error-prefix=$(STAGING_DIR)/usr \\\n\t--with-libassuan-prefix=$(STAGING_DIR)/usr \\\n\t--disable-gpgsm-test \\\n\t--disable-gpgconf-test \\\n\t--disable-g13-test \\\n\t--disable-gpg-test \\\n\t--enable-languages=$(subst $(space),$(comma),$(LIBGPGME_LANGUAGE_BINDINGS))\n\n# Handle argp-standalone or it errors out during build\nifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y)\n# musl libc does not define error_t in errno.h, but argp.h does.\n# Assume we have error_t to avoid collision with the argp.h error_t.\nLIBGPGME_CONF_ENV += LIBS=\"-largp\" ac_cv_type_error_t=yes\nLIBGPGME_DEPENDENCIES += argp-standalone\nendif\n\n# MIPS N64 (re)introduced getdents64 in kernel version 3.10\nifeq ($(BR2_MIPS_NABI64)x$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10),yx)\nLIBGPGME_CONF_OPTS += --disable-linux-getdents\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libgphoto2/Config.in",
    "content": "config BR2_PACKAGE_LIBGPHOTO2\n\tbool \"libgphoto2\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBTOOL\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  libgphoto2 is the core library designed to allow access to\n\t  digital camera by external programs.\n\n\t  http://gphoto.org/proj/libgphoto2/\n\ncomment \"libgphoto needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/libgphoto2/libgphoto2.hash",
    "content": "# Locally calculated hash\nsha256  a7253bd18c6ef65352150ac36a668f883a5ad2634eb6455b3ca9aa6ac98d0073  libgphoto2-2.5.27.tar.xz\nsha256  ebc385a0b1d477be5177ed6d9129557aa59a3ad0f26ebe7dd97ee942a0fb68ee  COPYING\n"
  },
  {
    "path": "package/libgphoto2/libgphoto2.mk",
    "content": "################################################################################\n#\n# libgphoto2\n#\n################################################################################\n\nLIBGPHOTO2_VERSION = 2.5.27\nLIBGPHOTO2_SOURCE = libgphoto2-$(LIBGPHOTO2_VERSION).tar.xz\nLIBGPHOTO2_SITE = https://github.com/gphoto/libgphoto2/releases/download/v$(LIBGPHOTO2_VERSION)\nLIBGPHOTO2_LICENSE = LGPL-2.1+, GPL-2.0 (adc65), GPL-2.0+ (some camlibs), \\\n\tLGPL-2.0 (sipix), LGPL-3.0+ (pentax), BSD-3-Clause (ax203/tinyjpeg)\n# There is a single license file for the LGPL-2.1, no license files\n# for other licenses\nLIBGPHOTO2_LICENSE_FILES = COPYING\nLIBGPHOTO2_INSTALL_STAGING = YES\n\nLIBGPHOTO2_DEPENDENCIES = libxml2 libusb libtool host-pkgconf\n\nLIBGPHOTO2_CONF_ENV = udevscriptdir=/lib/udev\nLIBGPHOTO2_CONF_OPTS += --without-rpmbuild --disable-gp2ddb --disable-internal-docs\n\nifeq ($(BR2_PACKAGE_LIBUSB_COMPAT),y)\n# libusb-compat is not actually used, but it is detected, so add it\n# here to guarantee reproducible builds\nLIBGPHOTO2_DEPENDENCIES += libusb-compat\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nLIBGPHOTO2_DEPENDENCIES += libcurl\nLIBGPHOTO2_CONF_OPTS += --with-libcurl=auto\nelse\nLIBGPHOTO2_CONF_OPTS += --with-libcurl=no\nendif\n\nifeq ($(BR2_PACKAGE_LIBEXIF),y)\nLIBGPHOTO2_DEPENDENCIES += libexif\nLIBGPHOTO2_CONF_OPTS += --with-libexif=auto\nelse\nLIBGPHOTO2_CONF_OPTS += --with-libexif=no\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nLIBGPHOTO2_DEPENDENCIES += jpeg\nLIBGPHOTO2_CONF_OPTS += --with-jpeg\nelse\nLIBGPHOTO2_CONF_OPTS += --without-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_GD),y)\nLIBGPHOTO2_DEPENDENCIES += gd\nLIBGPHOTO2_CONF_OPTS += --with-gdlib=auto\nelse\nLIBGPHOTO2_CONF_OPTS += --with-gdlib=no\nendif\n\nifeq ($(BR2_PACKAGE_LOCKDEV),y)\nLIBGPHOTO2_DEPENDENCIES += lockdev\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libgpiod/0001-build-add-a-configure-switch-for-building-examples.patch",
    "content": "From 5e9e7223a3633ee82b557d21b1f18aa15becd450 Mon Sep 17 00:00:00 2001\nFrom: Bartosz Golaszewski <bgolaszewski@baylibre.com>\nDate: Mon, 7 Dec 2020 20:38:30 +0100\nSubject: build: add a configure switch for building examples\n\nExample code for bindings is currently always built if bindings are\nenabled. Make it conditional with a new configure switch.\n\nSigned-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>\nReviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>\n[Retrieved from:\nhttps://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/commit/?id=5e9e7223a3633ee82b557d21b1f18aa15becd450]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n bindings/cxx/Makefile.am    |  8 +++++++-\n bindings/python/Makefile.am | 10 ++++++++--\n configure.ac                |  6 ++++++\n 3 files changed, 21 insertions(+), 3 deletions(-)\n\ndiff --git a/bindings/cxx/Makefile.am b/bindings/cxx/Makefile.am\nindex 5c40ceb..87463b0 100644\n--- a/bindings/cxx/Makefile.am\n+++ b/bindings/cxx/Makefile.am\n@@ -18,10 +18,16 @@ include_HEADERS = gpiod.hpp\n pkgconfigdir = $(libdir)/pkgconfig\n pkgconfig_DATA = libgpiodcxx.pc\n \n-SUBDIRS = . examples\n+SUBDIRS = .\n \n if WITH_TESTS\n \n SUBDIRS += tests\n \n endif\n+\n+if WITH_EXAMPLES\n+\n+SUBDIRS += examples\n+\n+endif\ndiff --git a/bindings/python/Makefile.am b/bindings/python/Makefile.am\nindex 124f152..5403bcb 100644\n--- a/bindings/python/Makefile.am\n+++ b/bindings/python/Makefile.am\n@@ -6,8 +6,6 @@\n # Copyright (C) 2017-2018 Bartosz Golaszewski <bartekgola@gmail.com>\n #\n \n-SUBDIRS = . examples\n-\n pyexec_LTLIBRARIES = gpiod.la\n \n gpiod_la_SOURCES = gpiodmodule.c\n@@ -17,8 +15,16 @@ gpiod_la_CFLAGS += -Wall -Wextra -g -std=gnu89 $(PYTHON_CPPFLAGS)\n gpiod_la_LDFLAGS = -module -avoid-version\n gpiod_la_LIBADD = $(top_builddir)/lib/libgpiod.la $(PYTHON_LIBS)\n \n+SUBDIRS = .\n+\n if WITH_TESTS\n \n SUBDIRS += tests\n \n endif\n+\n+if WITH_EXAMPLES\n+\n+SUBDIRS += examples\n+\n+endif\ndiff --git a/configure.ac b/configure.ac\nindex 57c99a8..90a6324 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -155,6 +155,12 @@ then\n \tfi\n fi\n \n+AC_ARG_ENABLE([examples],\n+\t[AS_HELP_STRING([--enable-examples], [enable building code examples[default=no]])],\n+\t[if test \"x$enableval\" = xyes; then with_examples=true; fi],\n+\t[with_examples=false])\n+AM_CONDITIONAL([WITH_EXAMPLES], [test \"x$with_examples\" = xtrue])\n+\n AC_ARG_ENABLE([bindings-cxx],\n \t[AS_HELP_STRING([--enable-bindings-cxx],[enable C++ bindings [default=no]])],\n \t[if test \"x$enableval\" = xyes; then with_bindings_cxx=true; fi],\n-- \ncgit 1.2.3-1.el7\n\n"
  },
  {
    "path": "package/libgpiod/Config.in",
    "content": "config BR2_PACKAGE_LIBGPIOD\n\tbool \"libgpiod\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8\n\thelp\n\t  This is a C library that abstracts the GPIO character\n\t  device operations on linux.\n\n\t  https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/\n\nif BR2_PACKAGE_LIBGPIOD\n\nconfig BR2_PACKAGE_LIBGPIOD_TOOLS\n\tbool \"install tools\"\n\thelp\n\t  Include a set of command-line tools for managing GPIOs.\n\nendif\n\ncomment \"libgpiod needs kernel headers >= 4.8\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8\n"
  },
  {
    "path": "package/libgpiod/libgpiod.hash",
    "content": "# From https://www.kernel.org/pub/software/libs/libgpiod/sha256sums.asc\nsha256  841be9d788f00bab08ef22c4be5c39866f0e46cb100a3ae49ed816ac9c5dddc7  libgpiod-1.6.3.tar.xz\n# Hash for license file\nsha256  ce64d5f7b49ea6d80fdb6d4cdee6839d1a94274f7493dc797c3b55b65ec8e9ed  COPYING\n"
  },
  {
    "path": "package/libgpiod/libgpiod.mk",
    "content": "################################################################################\n#\n# libgpiod\n#\n################################################################################\n\n# Be careful when bumping versions.\n# Dependency on kernel header versions may change.\nLIBGPIOD_VERSION = 1.6.3\nLIBGPIOD_SOURCE = libgpiod-$(LIBGPIOD_VERSION).tar.xz\nLIBGPIOD_SITE = https://www.kernel.org/pub/software/libs/libgpiod\nLIBGPIOD_LICENSE = LGPL-2.1+\nLIBGPIOD_LICENSE_FILES = COPYING\nLIBGPIOD_INSTALL_STAGING = YES\nLIBGPIOD_DEPENDENCIES = host-pkgconf host-autoconf-archive\n# We're patching configure.ac\nLIBGPIOD_AUTORECONF = YES\nLIBGPIOD_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive\nLIBGPIOD_CONF_OPTS = --disable-tests --disable-examples\n\nifeq ($(BR2_PACKAGE_LIBGPIOD_TOOLS),y)\nLIBGPIOD_CONF_OPTS += --enable-tools\nelse\nLIBGPIOD_CONF_OPTS += --disable-tools\nendif\n\nifeq ($(BR2_INSTALL_LIBSTDCPP),y)\nLIBGPIOD_CONF_OPTS += --enable-bindings-cxx\nelse\nLIBGPIOD_CONF_OPTS += --disable-bindings-cxx\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nLIBGPIOD_CONF_OPTS += --enable-bindings-python\nLIBGPIOD_DEPENDENCIES += python3\nLIBGPIOD_CONF_ENV += \\\n\tPYTHON=$(HOST_DIR)/bin/python3 \\\n\tPYTHON_CPPFLAGS=\"`$(STAGING_DIR)/usr/bin/python3-config --includes`\" \\\n\tPYTHON_LIBS=\"`$(STAGING_DIR)/usr/bin/python3-config --ldflags`\"\nelse\nLIBGPIOD_CONF_OPTS += --disable-bindings-python\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libgsasl/Config.in",
    "content": "config BR2_PACKAGE_LIBGSASL\n\tbool \"libgsasl\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Simple Authentication and Security Layer framework Library.\n\t  GNU SASL is an implementation of the Simple Authentication and\n\t  Security Layer framework and a few common SASL mechanisms.\n\t  SASL is used by network servers (e.g., IMAP, SMTP) to request\n\t  authentication from clients, and in clients to authenticate\n\t  against servers.\n\n\t  http://www.gnu.org/software/gsasl\n\ncomment \"libgsasl needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/libgsasl/libgsasl.hash",
    "content": "# From https://lists.gnu.org/archive/html/help-gsasl/2021-01/msg00007.html\nsha1  a16ff428bbf28fcfa681c7edd2cd2bb087bcc4e7  libgsasl-1.10.0.tar.gz\nsha224  20b37757fccb6a0f8b4c6fcb28f51a3b4b8a4b1fdb4736da07707a0b  libgsasl-1.10.0.tar.gz\n\n# Locally calculated after checking pgp signature\nsha256  f1b553384dedbd87478449775546a358d6f5140c15cccc8fb574136fdc77329f  libgsasl-1.10.0.tar.gz\n\n# Hash for license files:\nsha256  26e99818ca6ce79d8b2c461fabc72dc6e03483e6b0fd9692dcb07ab1b09bbac7  README\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/libgsasl/libgsasl.mk",
    "content": "################################################################################\n#\n# libgsasl\n#\n################################################################################\n\nLIBGSASL_VERSION = 1.10.0\nLIBGSASL_SITE = $(BR2_GNU_MIRROR)/gsasl\nLIBGSASL_LICENSE = LGPL-2.1+ (library), GPL-3.0+ (programs)\nLIBGSASL_LICENSE_FILES = README COPYING.LIB COPYING\nLIBGSASL_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nLIBGSASL_CONF_OPTS = --with-libgcrypt-prefix=$(STAGING_DIR)/usr\nLIBGSASL_DEPENDENCIES += libgcrypt\nelse\nLIBGSASL_CONF_OPTS = --without-libgcrypt\nendif\n\nifeq ($(BR2_PACKAGE_LIBIDN),y)\nLIBGSASL_CONF_OPTS += --with-libidn-prefix=$(STAGING_DIR)/usr\nLIBGSASL_DEPENDENCIES += libidn\nelse\nLIBGSASL_CONF_OPTS += --without-stringprep\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libgsm/0001-misc-fixes-from-archlinux.patch",
    "content": "From e8f43832d401ad1e071e6860b2bf4a1e796d4356 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <aduskett@gmail.com>\nDate: Fri, 28 Jul 2017 08:18:22 -0400\nSubject: [PATCH] Misc fixes from Archlinux\n\nPatch from:\n    https://git.archlinux.org/svntogit/packages.git/plain/gsm/trunk/gsm.patch\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\nRefresh for 1.0.17\n---\n Makefile | 84 ++++++++++++++++++++++++++++++++--------------------------------\n 1 file changed, 42 insertions(+), 42 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex d5c0c90..ef61bd5 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -44,7 +44,7 @@ WAV49\t= -DWAV49\n # CCFLAGS \t= -c -O\n \n CC\t\t= gcc -ansi -pedantic\n-CCFLAGS \t= -c -O2 -DNeedFunctionPrototypes=1 -Wall -Wno-comment\n+CCFLAGS \t= -c -O2 -fPIC -DNeedFunctionPrototypes=1 -Wall -Wno-comment\n \n LD \t\t= $(CC)\n \n@@ -96,11 +96,11 @@ TOAST_INSTALL_MAN = $(TOAST_INSTALL_ROOT)/man/man1\n #  Other tools\n \n SHELL\t\t= /bin/sh\n-LN\t\t= ln\n+LN\t\t= ln -s -f\n BASENAME \t= basename\n AR\t\t= ar\n ARFLAGS\t\t= cr\n-RMFLAGS\t\t=\n+RMFLAGS\t\t= -f\n FIND\t\t= find\n COMPRESS \t= compress\n COMPRESSFLAGS \t= \n@@ -139,7 +139,7 @@ LFLAGS\t= $(LDFLAGS) $(LDINC)\n \n # Targets\n \n-LIBGSM\t= $(LIB)/libgsm.a\n+LIBGSMSO = $(LIB)/libgsm.so\n \n TOAST\t= $(BIN)/toast\n UNTOAST\t= $(BIN)/untoast\n@@ -257,7 +257,7 @@ STUFF = \tChangeLog\t\t\t\\\n # Install targets\n \n GSM_INSTALL_TARGETS =\t\\\n-\t\t$(GSM_INSTALL_LIB)/libgsm.a\t\t\\\n+\t\t$(GSM_INSTALL_LIB)/libgsm.so\t\t\\\n \t\t$(GSM_INSTALL_INC)/gsm.h\t\t\\\n \t\t$(GSM_INSTALL_MAN)/gsm.3\t\t\\\n \t\t$(GSM_INSTALL_MAN)/gsm_explode.3\t\\\n@@ -279,7 +279,7 @@ TOAST_INSTALL_TARGETS =\t\\\n \n # Target rules\n \n-all:\t\t$(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST)\n+all:\t\t$(LIBGSMSO) $(TOAST) $(TCAT) $(UNTOAST)\n \t\t@-echo $(ROOT): Done.\n \n tst:\t\t$(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result\n@@ -299,24 +299,23 @@ install:\ttoastinstall gsminstall\n \n # The basic API: libgsm\n \n-$(LIBGSM):\t$(LIB) $(GSM_OBJECTS)\n-\t\t-rm $(RMFLAGS) $(LIBGSM)\n-\t\t$(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS)\n-\t\t$(RANLIB) $(LIBGSM)\n-\n+$(LIBGSMSO): $(LIB) $(GSM_OBJECTS)\n+\t$(LD) -shared -Wl,-soname,libgsm.so.1 -o $@.1.0.13 $(GSM_OBJECTS)\n+\t$(LN) libgsm.so.1.0.13 $(LIBGSMSO).1\n+\t$(LN) libgsm.so.1.0.13 $(LIBGSMSO)\n \n # Toast, Untoast and Tcat -- the compress-like frontends to gsm.\n \n-$(TOAST):\t$(BIN) $(TOAST_OBJECTS) $(LIBGSM)\n-\t\t$(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB)\n+$(TOAST):\t$(BIN) $(TOAST_OBJECTS) $(LIBGSMSO)\n+\t\t$(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSMSO) $(LDLIB)\n \n $(UNTOAST):\t$(BIN) $(TOAST)\n \t\t-rm $(RMFLAGS) $(UNTOAST)\n-\t\t$(LN) $(TOAST) $(UNTOAST)\n+\t\t$(LN) toast $(UNTOAST)\n \n $(TCAT):\t$(BIN) $(TOAST)\n \t\t-rm $(RMFLAGS) $(TCAT)\n-\t\t$(LN) $(TOAST) $(TCAT)\n+\t\t$(LN) toast $(TCAT)\n \n \n # The local bin and lib directories\n@@ -351,53 +350,54 @@ toastuninstall:\n \t\tfi\n \n $(TOAST_INSTALL_BIN)/toast:\t$(TOAST)\n-\t\t-rm $@\n+\t\t-rm $(RMFLAGS) $@\n \t\tcp $(TOAST) $@\n \t\tchmod 755 $@\n \n $(TOAST_INSTALL_BIN)/untoast:\t$(TOAST_INSTALL_BIN)/toast\n-\t\t-rm $@\n-\t\tln $? $@\n+\t\t-rm $(RMFLAGS) $@\n+\t\t$(LN) toast $@\n \n $(TOAST_INSTALL_BIN)/tcat:\t$(TOAST_INSTALL_BIN)/toast\n-\t\t-rm $@\n-\t\tln $? $@\n+\t\t-rm $(RMFLAGS) $@\n+\t\t$(LN) toast $@\n \n $(TOAST_INSTALL_MAN)/toast.1:\t$(MAN)/toast.1\n-\t\t-rm $@\n+\t\t-rm $(RMFLAGS) $@\n \t\tcp $? $@\n \t\tchmod 444 $@\n \n $(GSM_INSTALL_MAN)/gsm.3:\t$(MAN)/gsm.3\n-\t\t-rm $@\n+\t\t-rm $(RMFLAGS) $@\n \t\tcp $? $@\n \t\tchmod 444 $@\n \n $(GSM_INSTALL_MAN)/gsm_option.3:\t$(MAN)/gsm_option.3\n-\t\t-rm $@\n+\t\t-rm $(RMFLAGS) $@\n \t\tcp $? $@\n \t\tchmod 444 $@\n \n $(GSM_INSTALL_MAN)/gsm_explode.3:\t$(MAN)/gsm_explode.3\n-\t\t-rm $@\n+\t\t-rm $(RMFLAGS) $@\n \t\tcp $? $@\n \t\tchmod 444 $@\n \n $(GSM_INSTALL_MAN)/gsm_print.3:\t$(MAN)/gsm_print.3\n-\t\t-rm $@\n+\t\t-rm $(RMFLAGS) $@\n \t\tcp $? $@\n \t\tchmod 444 $@\n \n $(GSM_INSTALL_INC)/gsm.h:\t$(INC)/gsm.h\n-\t\t-rm $@\n-\t\tcp $? $@\n-\t\tchmod 444 $@\n-\n-$(GSM_INSTALL_LIB)/libgsm.a:\t$(LIBGSM)\n-\t\t-rm $@\n+\t\t-rm $(RMFLAGS) $@\n \t\tcp $? $@\n \t\tchmod 444 $@\n \n+$(GSM_INSTALL_LIB)/libgsm.so:\t$(LIBGSMSO)\n+\t\t-rm $(RMFLAGS) $@ $@.1 $@.1.0.13\n+\t\tcp $?.1.0.13 $@.1.0.13\n+\t\tchmod 755 $@.1.0.13\n+\t\t$(LN) libgsm.so.1.0.13 $@\n+\t\t$(LN) libgsm.so.1.0.13 $@.1\n \n # Distribution\n \n@@ -425,7 +425,7 @@ semi-clean:\n \t\t\t-print | xargs rm $(RMFLAGS)\n \n clean:\tsemi-clean\n-\t\t-rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add\t\t\\\n+\t\t-rm $(RMFLAGS) $(LIBGSMSO)* $(ADDTST)/add\t\t\\\n \t\t\t$(TOAST) $(TCAT) $(UNTOAST)\t\\\n \t\t\t$(ROOT)/gsm-1.0.tar.Z\n \n@@ -473,22 +473,22 @@ $(ADDTST)/add:\t$(ADDTST)/add_test.o\n $(TST)/test-result:\t$(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/run\n \t\t\t( cd $(TST); ./run ) \n \n-$(TST)/lin2txt:\t\t$(TST)/lin2txt.o $(LIBGSM)\n+$(TST)/lin2txt:\t\t$(TST)/lin2txt.o $(LIBGSMSO)\n \t\t\t$(LD) $(LFLAGS) -o $(TST)/lin2txt \\\n-\t\t\t\t$(TST)/lin2txt.o $(LIBGSM) $(LDLIB)\n+\t\t\t\t$(TST)/lin2txt.o $(LIBGSMSO) $(LDLIB)\n \n-$(TST)/lin2cod:\t\t$(TST)/lin2cod.o $(LIBGSM)\n+$(TST)/lin2cod:\t\t$(TST)/lin2cod.o $(LIBGSMSO)\n \t\t\t$(LD) $(LFLAGS) -o $(TST)/lin2cod \\\n-\t\t\t\t$(TST)/lin2cod.o $(LIBGSM) $(LDLIB)\n+\t\t\t\t$(TST)/lin2cod.o $(LIBGSMSO) $(LDLIB)\n \n-$(TST)/gsm2cod:\t\t$(TST)/gsm2cod.o $(LIBGSM)\n+$(TST)/gsm2cod:\t\t$(TST)/gsm2cod.o $(LIBGSMSO)\n \t\t\t$(LD) $(LFLAGS) -o $(TST)/gsm2cod \\\n-\t\t\t\t$(TST)/gsm2cod.o $(LIBGSM) $(LDLIB)\n+\t\t\t\t$(TST)/gsm2cod.o $(LIBGSMSO) $(LDLIB)\n \n-$(TST)/cod2txt:\t\t$(TST)/cod2txt.o $(LIBGSM)\n+$(TST)/cod2txt:\t\t$(TST)/cod2txt.o $(LIBGSMSO)\n \t\t\t$(LD) $(LFLAGS) -o $(TST)/cod2txt \\\n-\t\t\t\t$(TST)/cod2txt.o $(LIBGSM) $(LDLIB)\n+\t\t\t\t$(TST)/cod2txt.o $(LIBGSMSO) $(LDLIB)\n \n-$(TST)/cod2lin:\t\t$(TST)/cod2lin.o $(LIBGSM)\n+$(TST)/cod2lin:\t\t$(TST)/cod2lin.o $(LIBGSMSO)\n \t\t\t$(LD) $(LFLAGS) -o $(TST)/cod2lin \\\n-\t\t\t\t$(TST)/cod2lin.o $(LIBGSM) $(LDLIB)\n+\t\t\t\t$(TST)/cod2lin.o $(LIBGSMSO) $(LDLIB)\n-- \n2.13.3\n\n"
  },
  {
    "path": "package/libgsm/Config.in",
    "content": "config BR2_PACKAGE_LIBGSM\n\tbool \"libgsm\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Shared libraries for GSM 06.10 lossy speech compression.\n\n\t  http://www.quut.com/gsm\n\ncomment \"libgsm needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libgsm/libgsm.hash",
    "content": "# Locally computed\nsha256  4903652f68a8c04d0041f0d19b1eb713ddcd2aa011c5e595b3b8bca2755270f6  gsm-1.0.19.tar.gz\nsha256  81c68a3374937ed9b5e4929c709e81a2c4b35b5d1f450ecf8c473e2daea46ff6  COPYRIGHT\n"
  },
  {
    "path": "package/libgsm/libgsm.mk",
    "content": "################################################################################\n#\n# libgsm\n#\n################################################################################\n\nLIBGSM_VERSION = 1.0.19\nLIBGSM_SOURCE = gsm-$(LIBGSM_VERSION).tar.gz\nLIBGSM_SITE = http://www.quut.com/gsm\nLIBGSM_LICENSE = gsm\nLIBGSM_LICENSE_FILES = COPYRIGHT\nLIBGSM_INSTALL_STAGING = YES\n\ndefine LIBGSM_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=$(TARGET_CC) -C $(@D)\nendef\n\n# Install targets are not safe for parallel jobs. However, since there's\n# just only a bunch of files to install, just do it manually. Note that,\n# even though the package version is '1.0.16', the solib is generated as\n# '1.0.13' and its SONAME is just '1'.\n#\n# For staging, we install all the .so symlinks, and the header.\ndefine LIBGSM_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/inc/gsm.h $(STAGING_DIR)/usr/include/gsm.h\n\t$(INSTALL) -D -m 0644 $(@D)/lib/libgsm.so.1.0.13 $(STAGING_DIR)/usr/lib/libgsm.so.1.0.13\n\tln -sf libgsm.so.1.0.13 $(STAGING_DIR)/usr/lib/libgsm.so.1\n\tln -sf libgsm.so.1.0.13 $(STAGING_DIR)/usr/lib/libgsm.so\nendef\n\n# Install targets are not safe for parallel jobs. However, since there's\n# just only a bunch of files to install, just do it manually. Note that,\n# even though the package version is '1.0.16', the solib is versioned as\n# '1.0.13' and its SONAME is just versioned with '1'.\n#\n# For target, we just need the library to be installed as its SONAME, and\n# the programs.\ndefine LIBGSM_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/lib/libgsm.so.1.0.13 $(TARGET_DIR)/usr/lib/libgsm.so.1\n\t$(INSTALL) -D -m 0755 $(@D)/bin/toast $(TARGET_DIR)/usr/bin/toast\n\t$(INSTALL) -D -m 0755 $(@D)/bin/tcat $(TARGET_DIR)/usr/bin/tcat\n\t$(INSTALL) -D -m 0755 $(@D)/bin/untoast $(TARGET_DIR)/usr/bin/untoast\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libgta/Config.in",
    "content": "config BR2_PACKAGE_LIBGTA\n\tbool \"libgta\"\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_XZ\n\thelp\n\t  Libgta is a portable library that implements the Generic\n\t  Tagged Array (GTA) file format.\n\n\t  https://marlam.de/gta\n"
  },
  {
    "path": "package/libgta/libgta.hash",
    "content": "# Locally calculated\nsha256  d445667e145f755f0bc34ac89b63a6bfdce1eea943f87ee7a3f23dc0dcede8b1  libgta-1.2.1.tar.xz\nsha256  36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89  COPYING\n"
  },
  {
    "path": "package/libgta/libgta.mk",
    "content": "################################################################################\n#\n# libgta\n#\n################################################################################\n\nLIBGTA_VERSION = 1.2.1\nLIBGTA_SITE = https://marlam.de/gta/releases\nLIBGTA_SOURCE = libgta-$(LIBGTA_VERSION).tar.xz\nLIBGTA_INSTALL_STAGING = YES\nLIBGTA_DEPENDENCIES = host-pkgconf bzip2 xz zlib\nLIBGTA_LICENSE = LGPL-2.1+\nLIBGTA_LICENSE_FILES = COPYING\n\nLIBGTA_CONF_OPTS += -DGTA_BUILD_DOCUMENTATION=OFF\n\nifeq ($(BR2_STATIC_LIBS),)\nLIBGTA_CONF_OPTS += -DGTA_BUILD_SHARED_LIB=ON\nelse\nLIBGTA_CONF_OPTS += -DGTA_BUILD_SHARED_LIB=OFF\nendif\n\nifeq ($(BR2_SHARED_LIBS),)\nLIBGTA_CONF_OPTS += -DGTA_BUILD_STATIC_LIB=ON\nelse\nLIBGTA_CONF_OPTS += -DGTA_BUILD_STATIC_LIB=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libgtk2/0001-reduce-dependencies.patch",
    "content": "Hack the configure.in file to add a \"none\" gdktarget which removes\ndependencies on graphic backends such as X.org or DirectFB. Gtk does\nnot fully build in this mode, but it builds sufficiently to build the\nhost tools that are needed to build the target Gtk.\n\nChanges:\n\tPorted to 2.24.18\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Spenser Gilliland <spenser@gillilanding.com>\n---\nIndex: libgtk2-2.24.18/configure.ac\n===================================================================\n--- libgtk2-2.24.18.orig/configure.ac\t2013-05-13 07:02:44.000000000 -0500\n+++ libgtk2-2.24.18/configure.ac\t2013-05-27 02:12:09.947030335 -0500\n@@ -258,12 +258,12 @@\n   gdktarget=x11\n fi\n \n-AC_ARG_WITH(gdktarget, [  --with-gdktarget=[[x11/win32/quartz/directfb]] select non-default GDK target],\n+AC_ARG_WITH(gdktarget, [  --with-gdktarget=[[x11/win32/quartz/directfb/none]] select non-default GDK target],\n \tgdktarget=$with_gdktarget)\n \n AC_SUBST(gdktarget)\n case $gdktarget in\n-  x11|win32|quartz|directfb) ;;\n+  x11|win32|quartz|directfb|none) ;;\n   *) AC_MSG_ERROR([Invalid target for GDK: use x11, quartz, directfb or win32.]);;\n esac\n \n@@ -372,11 +373,15 @@\n ## annoying to construct\n PKG_CHECK_MODULES(BASE_DEPENDENCIES,\n   [glib-2.0 >= glib_required_version dnl\n-   atk >= atk_required_version dnl\n-   pango >= pango_required_version dnl\n-   cairo >= cairo_required_version dnl\n    gdk-pixbuf-2.0 >= gdk_pixbuf_required_version])\n \n+if test \"x$gdktarget\" != \"xnone\"; then\n+   PKG_CHECK_MODULES(BASE_DEPENDENCIES,\n+\t[atk >= atk_required_version dnl\n+\t pango >= pango_required_version dnl\n+\t cairo >= cairo_required_version])\n+fi\n+\n ## In addition to checking that cairo is present, we also need to\n ## check that the correct cairo backend is there. E.g. if the GDK\n ## target is win32 we need the cairo-win32 backend and so on.\n@@ -387,8 +392,11 @@\n if test \"x$cairo_backend\" = \"xx11\"; then\n    cairo_backend=xlib\n fi\n-PKG_CHECK_MODULES(CAIRO_BACKEND,\n-  [cairo-$cairo_backend >= cairo_required_version])\n+\n+if test \"x$gdktarget\" != \"xnone\"; then\n+   PKG_CHECK_MODULES(CAIRO_BACKEND,\n+\t[cairo-$cairo_backend >= cairo_required_version])\n+fi\n \n PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])\n \n@@ -1279,6 +1287,7 @@\n   AM_CONDITIONAL(USE_DIRECTFB, false)\n fi\n \n+if test \"x$gdktarget\" != \"xnone\"; then\n \n # Check for Pango flags\n \n@@ -1324,6 +1333,8 @@\n   GDK_PACKAGES=\"$PANGO_PACKAGES gio-2.0 gdk-pixbuf-2.0 cairo-$cairo_backend\"\n fi\n \n+fi # gdktarget != none\n+\n GDK_DEP_LIBS=\"$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PACKAGES` $MATH_LIB\"\n GDK_DEP_CFLAGS=\"`$PKG_CONFIG --cflags  gthread-2.0 $GDK_PACKAGES` $GDK_EXTRA_CFLAGS\"\n #\n@@ -1341,6 +1352,7 @@\n AC_SUBST(GDK_DEP_LIBS)\n AC_SUBST(GDK_DEP_CFLAGS)\n \n+if test \"x$gdktarget\" != \"xnone\"; then\n \n ########################################\n # Check for Accessibility Toolkit flags\n@@ -1372,6 +1384,10 @@\n fi\n \n GTK_PACKAGES=\"atk cairo gdk-pixbuf-2.0 gio-2.0\"\n+else # gdktarget != none\n+GTK_PACKAGES=\"gdk-pixbuf-2.0\"\n+fi # gdktarget != none\n+\n if test \"x$gdktarget\" = \"xx11\"; then\n   GTK_PACKAGES=\"$GTK_PACKAGES pangoft2\"\n fi\n@@ -1533,6 +1549,8 @@\n gtk_save_cppflags=\"$CPPFLAGS\"\n CPPFLAGS=\"$CPPFLAGS $GTK_DEP_CFLAGS $GDK_DEP_CFLAGS\"\n \n+if test \"x$gdktarget\" != \"xnone\"; then\n+\n AC_CHECK_HEADER(cairo-pdf.h,,AC_MSG_ERROR([\n *** Can't find cairo-pdf.h. You must build Cairo with the pdf\n *** backend enabled.]))\n@@ -1547,6 +1565,8 @@\n *** svg backend enabled.]))\n fi   \n \n+fi # gdktarget != none\n+\n CPPFLAGS=\"$gtk_save_cppflags\"\n      \n \t\t\t  \t\n"
  },
  {
    "path": "package/libgtk2/Config.in",
    "content": "config BR2_PACKAGE_LIBGTK2\n\tbool \"libgtk2\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tdepends on BR2_INSTALL_LIBSTDCPP # pango\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # pango -> harfbuzz\n\tselect BR2_PACKAGE_ATK\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_CAIRO_PS\n\tselect BR2_PACKAGE_CAIRO_PDF\n\tselect BR2_PACKAGE_CAIRO_SVG\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_PANGO\n\tselect BR2_PACKAGE_GDK_PIXBUF\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\thelp\n\t  The GTK+ version 2 graphical user interface library\n\n\t  http://www.gtk.org/\n\nif BR2_PACKAGE_LIBGTK2\n\nconfig BR2_PACKAGE_LIBGTK2_DEMO\n\tbool \"Install libgtk2 demo program\"\n\thelp\n\t  The GTK+ source base contains a gtk-demo program. This\n\t  option allows to install this program to the target.\n\nendif\n\ncomment \"libgtk2 needs a toolchain w/ wchar, threads, C++, gcc >= 4.8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libgtk2/libgtk2.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.33.sha256sum\nsha256  ac2ac757f5942d318a311a54b0c80b5ef295f299c2a73c632f6bfb1ff49cc6da  gtk+-2.24.33.tar.xz\n\n# Hash for license file:\nsha256  d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5  COPYING\n"
  },
  {
    "path": "package/libgtk2/libgtk2.mk",
    "content": "################################################################################\n#\n# libgtk2\n#\n################################################################################\n\nLIBGTK2_VERSION_MAJOR = 2.24\nLIBGTK2_VERSION = $(LIBGTK2_VERSION_MAJOR).33\nLIBGTK2_SOURCE = gtk+-$(LIBGTK2_VERSION).tar.xz\nLIBGTK2_SITE = http://ftp.gnome.org/pub/gnome/sources/gtk+/$(LIBGTK2_VERSION_MAJOR)\nLIBGTK2_INSTALL_STAGING = YES\nLIBGTK2_LICENSE = LGPL-2.0+\nLIBGTK2_LICENSE_FILES = COPYING\nLIBGTK2_CPE_ID_VENDOR = gnome\nLIBGTK2_CPE_ID_PRODUCT = gtk\n# For 0001-reduce-dependencies.patch\nLIBGTK2_AUTORECONF = YES\n\nLIBGTK2_CONF_ENV = \\\n\tac_cv_path_GTK_UPDATE_ICON_CACHE=$(HOST_DIR)/bin/gtk-update-icon-cache \\\n\tac_cv_path_GDK_PIXBUF_CSOURCE=$(HOST_DIR)/bin/gdk-pixbuf-csource \\\n\tDB2HTML=false\n\nLIBGTK2_CONF_OPTS = --disable-glibtest --enable-explicit-deps=no\n\nLIBGTK2_DEPENDENCIES = host-pkgconf host-libgtk2 libglib2 cairo pango atk \\\n\tgdk-pixbuf $(TARGET_NLS_DEPENDENCIES)\n\nLIBGTK2_MAKE_OPTS = LIBS=$(TARGET_NLS_LIBS)\n\n# Xorg dependencies\nLIBGTK2_CONF_OPTS += \\\n\t--with-x \\\n\t--x-includes=$(STAGING_DIR)/usr/include/X11 \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib \\\n\t--with-gdktarget=x11\nLIBGTK2_DEPENDENCIES += \\\n\tfontconfig xlib_libX11 xlib_libXext xlib_libXrender\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBGTK2_CONF_OPTS += --enable-introspection\nLIBGTK2_DEPENDENCIES += gobject-introspection\nelse\nLIBGTK2_CONF_OPTS += --disable-introspection\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nLIBGTK2_CONF_OPTS += --enable-xinerama\nLIBGTK2_DEPENDENCIES += xlib_libXinerama\nelse\nLIBGTK2_CONF_OPTS += --disable-xinerama\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXI),y)\nLIBGTK2_CONF_OPTS += --with-xinput=yes\nLIBGTK2_DEPENDENCIES += xlib_libXi\nelse\nLIBGTK2_CONF_OPTS += --with-xinput=no\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)\nLIBGTK2_DEPENDENCIES += xlib_libXrandr\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y)\nLIBGTK2_DEPENDENCIES += xlib_libXcursor\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y)\nLIBGTK2_DEPENDENCIES += xlib_libXfixes\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y)\nLIBGTK2_DEPENDENCIES += xlib_libXcomposite\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y)\nLIBGTK2_DEPENDENCIES += xlib_libXdamage\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nLIBGTK2_DEPENDENCIES += libpng\nelse\nLIBGTK2_CONF_OPTS += --without-libpng\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nLIBGTK2_DEPENDENCIES += jpeg\nelse\nLIBGTK2_CONF_OPTS += --without-libjpeg\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nLIBGTK2_DEPENDENCIES += tiff\nelse\nLIBGTK2_CONF_OPTS += --without-libtiff\nendif\n\nifeq ($(BR2_PACKAGE_CUPS),y)\nLIBGTK2_CONF_OPTS += CUPS_CONFIG=\"$(STAGING_DIR)/usr/bin/cups-config\"\nLIBGTK2_DEPENDENCIES += cups\nelse\nLIBGTK2_CONF_OPTS += --disable-cups\nendif\n\nifeq ($(BR2_PACKAGE_LIBGTK2_DEMO),)\ndefine LIBGTK2_POST_INSTALL_TWEAKS\n\trm -rf $(TARGET_DIR)/usr/share/gtk-2.0/demo $(TARGET_DIR)/usr/bin/gtk-demo\nendef\n\nLIBGTK2_POST_INSTALL_TARGET_HOOKS += LIBGTK2_POST_INSTALL_TWEAKS\nendif\n\n# We do not build a full version of libgtk2 for the host, because that\n# requires compiling Cairo, Pango, ATK and X.org for the\n# host. Therefore, we patch it to remove dependencies, and we hack the\n# build to only build gdk-pixbuf-from-source and\n# gtk-update-icon-cache, which are the host tools needed to build Gtk\n# for the target.\n\nHOST_LIBGTK2_DEPENDENCIES = host-libglib2 host-libpng host-gdk-pixbuf\nHOST_LIBGTK2_CONF_OPTS = \\\n\t--disable-static \\\n\t--disable-glibtest \\\n\t--without-libtiff \\\n\t--without-libjpeg \\\n\t--with-gdktarget=none \\\n\t--disable-cups\n\ndefine HOST_LIBGTK2_BUILD_CMDS\n\t$(HOST_MAKE_ENV) make -C $(@D)/gtk gtk-update-icon-cache\nendef\n\ndefine HOST_LIBGTK2_INSTALL_CMDS\n\tcp $(@D)/gtk/gtk-update-icon-cache $(HOST_DIR)/bin\nendef\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libgtk3/0001-no-gtk-doc.patch",
    "content": "Same patch as for systemd in commit\nhttp://git.buildroot.net/buildroot/commit/?id=7144f2f04b70553\n\nFix deactivation of gtk-doc\n\nThe tarball contains the Makefile for building documentation with gtk-doc,\nUnfortunately the AM_CONDITIONAL variable is not the correct one, which\nresults in an error when running autoreconf.\n\nThis patch fixes this issue.\n\nSigned-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr>\nSigned-off-by: Hadrien Boutteville <hadrien.boutteville@gmail.com>\n\n--- a/gtk-doc.make\n+++ b/gtk-doc.make\n@@ -300,7 +300,7 @@\n #\n # Require gtk-doc when making dist\n #\n-if HAVE_GTK_DOC\n+if ENABLE_GTK_DOC\n dist-check-gtkdoc: docs\n else\n dist-check-gtkdoc:\n"
  },
  {
    "path": "package/libgtk3/0002-fix-introspection-check.patch",
    "content": "Fix HAVE_INTROSPECTION does not appear in AM_CONDITIONAL\n\nDuring autoreconf GOBJECT_INTROSPECTION_CHECK could not be resolved because we\ndon't have introspection which provides its custom m4 macro. Reconfigure fails\nwith:\n\ngdk/Makefile.am:196: error: HAVE_INTROSPECTION does not appear in AM_CONDITIONAL\ngtk/Makefile.am:1347: error: HAVE_INTROSPECTION does not appear in AM_CONDITIONAL\n\nWe avoid to add a copy of introspection.m4 in the m4 directory of libgtk3 by\nadding a check, as performed in Systemd.\n\nSigned-off-by: Hadrien Boutteville <hadrien.boutteville@gmail.com>\n\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1650,7 +1650,10 @@\n # GObject introspection\n ##################################################\n\n-GOBJECT_INTROSPECTION_CHECK(introspection_required_version)\n+m4_ifdef([GOBJECT_INTROSPECTION_CHECK],\n+         [GOBJECT_INTROSPECTION_CHECK(introspection_required_version)],\n+         [AM_CONDITIONAL([HAVE_INTROSPECTION], [false])\n+          enable_introspection=no])\n\n ##################################################\n # colord module\n"
  },
  {
    "path": "package/libgtk3/0003-disable-atk-bridge.patch",
    "content": "Remove atk-bridge support.\n\natk-bridge doesn't seem useful for now in Buildroot and requires to\nadd two new packages just for it: at-spi2-core and at-spi2-atk.\n\nSigned-off-by: Hadrien Boutteville <hadrien.boutteville@gmail.com>\n\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1364,11 +1364,7 @@\n # Check for Accessibility Toolkit flags\n ########################################\n\n-if test x$enable_x11_backend = xyes; then\n-   ATK_PACKAGES=\"atk atk-bridge-2.0\"\n-else\n-   ATK_PACKAGES=\"atk\"\n-fi\n+ATK_PACKAGES=\"atk\"\n\n PKG_CHECK_MODULES(ATK, $ATK_PACKAGES)\n\n--- a/gtk/a11y/gtkaccessibility.c\n+++ b/gtk/a11y/gtkaccessibility.c\n@@ -37,10 +37,6 @@\n #include <gtk/gtktogglebutton.h>\n #include <gtk/gtkaccessible.h>\n\n-#ifdef GDK_WINDOWING_X11\n-#include <atk-bridge.h>\n-#endif\n-\n static gboolean gail_focus_watcher      (GSignalInvocationHint *ihint,\n                                          guint                  n_param_values,\n                                          const GValue          *param_values,\n@@ -988,9 +984,5 @@\n   _gtk_accessibility_override_atk_util ();\n   do_window_event_initialization ();\n\n-#ifdef GDK_WINDOWING_X11\n-  atk_bridge_adaptor_init (NULL, NULL);\n-#endif\n-\n   atk_misc_instance = g_object_new (GTK_TYPE_MISC_IMPL, NULL);\n }\n"
  },
  {
    "path": "package/libgtk3/0004-Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch",
    "content": "From 4d09ff324419fe4e671233044e424378da53969b Mon Sep 17 00:00:00 2001\nFrom: Jussi Kukkonen <jussi.kukkonen@intel.com>\nDate: Tue, 9 Jun 2015 14:20:30 +0300\nSubject: [PATCH] Remove Gdk-dependency from gtk-encode-symbolic-svg\n\nBuilding gtk-encode-symbolic-svg without building Gdk is useful\nas only the icon tools are needed on the native build: this makes\nnative build much faster and requires much less dependencies.\n\nUpstream-Status: Pending\n\nSigned-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n---\nPatch status: taken from yocto, upstream pending\n\n gtk/encodesymbolic.c | 36 ++++++++++--------------------------\n 1 file changed, 10 insertions(+), 26 deletions(-)\n\ndiff --git a/gtk/encodesymbolic.c b/gtk/encodesymbolic.c\nindex 9f7d015..1f07563 100644\n--- a/gtk/encodesymbolic.c\n+++ b/gtk/encodesymbolic.c\n@@ -19,7 +19,6 @@\n \n #include <glib.h>\n #include <gdk-pixbuf/gdk-pixdata.h>\n-#include <gdk/gdk.h>\n #include <glib/gi18n.h>\n \n #ifdef HAVE_UNISTD_H\n@@ -43,30 +42,18 @@ static GdkPixbuf *\n load_symbolic_svg (char *file_data, gsize file_len,\n                    int width,\n                    int height,\n-                   const GdkRGBA  *fg,\n-                   const GdkRGBA  *success_color,\n-                   const GdkRGBA  *warning_color,\n-                   const GdkRGBA  *error_color,\n+                   const char *css_fg,\n+                   const char *css_success,\n+                   const char *css_warning,\n+                   const char *css_error,\n                    GError        **error)\n {\n   GInputStream *stream;\n   GdkPixbuf *pixbuf;\n-  gchar *css_fg;\n-  gchar *css_success;\n-  gchar *css_warning;\n-  gchar *css_error;\n   gchar *data;\n   gchar *svg_width, *svg_height;\n   gchar *escaped_file_data;\n \n-  css_fg = gdk_rgba_to_string (fg);\n-\n-  css_success = css_warning = css_error = NULL;\n-\n-  css_warning = gdk_rgba_to_string (warning_color);\n-  css_error = gdk_rgba_to_string (error_color);\n-  css_success = gdk_rgba_to_string (success_color);\n-\n   /* Fetch size from the original icon */\n   stream = g_memory_input_stream_new_from_data (file_data, file_len, NULL);\n   pixbuf = gdk_pixbuf_new_from_stream (stream, NULL, error);\n@@ -105,10 +92,6 @@ load_symbolic_svg (char *file_data, gsize file_len,\n                       \"</svg>\",\n                       NULL);\n   g_free (escaped_file_data);\n-  g_free (css_fg);\n-  g_free (css_warning);\n-  g_free (css_error);\n-  g_free (css_success);\n   g_free (svg_width);\n   g_free (svg_height);\n \n@@ -167,7 +150,8 @@ make_symbolic_pixbuf (char *file,\n                       GError        **error)\n \n {\n-  GdkRGBA r = { 1,0,0,1}, g = {0,1,0,1};\n+  const char r[] = \"rgba(255,0,0,1)\";\n+  const char g[] = \"rgba(0,255,0,1)\";\n   GdkPixbuf *loaded;\n   GdkPixbuf *pixbuf;\n   int plane;\n@@ -196,10 +180,10 @@ make_symbolic_pixbuf (char *file,\n        * the \"rest\", as all color fractions should add up to 1.\n        */\n       loaded = load_symbolic_svg (file_data, file_len, width, height,\n-                                  &g,\n-                                  plane == 0 ? &r : &g,\n-                                  plane == 1 ? &r : &g,\n-                                  plane == 2 ? &r : &g,\n+                                  g,\n+                                  plane == 0 ? r : g,\n+                                  plane == 1 ? r : g,\n+                                  plane == 2 ? r : g,\n                                   error);\n       if (loaded == NULL)\n         return NULL;\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/libgtk3/Config.in",
    "content": "comment \"libgtk3 needs a toolchain w/ wchar, threads, C++, gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS\n\ncomment \"libgtk3 needs an OpenGL or an OpenGL-EGL/wayland backend\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_PACKAGE_HAS_LIBEGL_WAYLAND && \\\n\t\t!BR2_PACKAGE_HAS_LIBGL\n\nconfig BR2_PACKAGE_LIBGTK3\n\tbool \"libgtk3\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS # host-libgtk3 -> host-librsvg\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tdepends on BR2_INSTALL_LIBSTDCPP # pango\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # pango -> harfbuzz\n\tdepends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND || \\\n\t\tBR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_ATK\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_CAIRO_PS\n\tselect BR2_PACKAGE_CAIRO_PDF\n\tselect BR2_PACKAGE_CAIRO_SVG\n\tselect BR2_PACKAGE_LIBEPOXY\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_PANGO\n\tselect BR2_PACKAGE_GDK_PIXBUF\n\t# At least one backend is required\n\tselect BR2_PACKAGE_LIBGTK3_BROADWAY if \\\n\t\t!(BR2_PACKAGE_LIBGTK3_X11 || BR2_PACKAGE_LIBGTK3_WAYLAND)\n\thelp\n\t  The GTK+ version 3 graphical user interface library\n\n\t  https://www.gtk.org/\n\nif BR2_PACKAGE_LIBGTK3\n\nconfig BR2_PACKAGE_LIBGTK3_BROADWAY\n\tbool \"Broadway GDK backend\"\n\tdefault y\n\t  help\n\t  This enables the Broadway backend for GDK, which provides\n\t  support for displaying GTK+ applications in a web browser,\n\t  using HTML5 and web sockets.\n\n\t  For example, to run gtk3-demo on a target which IP address is\n\t  192.168.0.1 and use it from a web browser, execute the\n\t  following commands:\n\n\t  $ broadwayd -a 192.168.0.1 -p 8080 :2 &\n\t  $ export GDK_BACKEND=broadway\n\t  $ export BROADWAY_DISPLAY=:2\n\t  $ gtk3-demo\n\n\t  Then open a web browser at address http://192.168.0.1:8080.\n\t  Javascript and web sockets should be enabled.\n\ncomment \"Wayland GDK backend needs an OpenGL EGL backend provided by mesa3d w/ headers >= 3.17\"\n\tdepends on !BR2_PACKAGE_MESA3D_OPENGL_EGL || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17\n\nconfig BR2_PACKAGE_LIBGTK3_WAYLAND\n\tbool \"Wayland GDK backend\"\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17\n\tselect BR2_PACKAGE_WAYLAND\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS\n\tselect BR2_PACKAGE_LIBXKBCOMMON\n\thelp\n\t  This enables the Wayland backend for GDK.\n\ncomment \"X11 GDK backend needs an OpenGL provider\"\n\tdepends on !BR2_PACKAGE_HAS_LIBGL\n\nconfig BR2_PACKAGE_LIBGTK3_X11\n\tbool \"X11 GDK backend\"\n\tdefault y\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\tselect BR2_PACKAGE_XLIB_LIBXI\n\thelp\n\t  This enables the X11 backend for GDK.\n\nconfig BR2_PACKAGE_LIBGTK3_DEMO\n\tbool \"Install libgtk3 demo program\"\n\tselect BR2_PACKAGE_SHARED_MIME_INFO\n\tselect BR2_PACKAGE_HICOLOR_ICON_THEME\n\thelp\n\t  The GTK+ source base contains a demo program. This\n\t  option allows to install this program to the target.\n\nconfig BR2_PACKAGE_LIBGTK3_TESTS\n\tbool \"Install libgtk3 tests\"\n\thelp\n\t  The GTK+ source base contains tests. This option\n\t  allows to install them to the target.\n\nendif\n"
  },
  {
    "path": "package/libgtk3/libgtk3.hash",
    "content": "# From https://download.gnome.org/sources/gtk+/3.24/gtk+-3.24.30.sha256sum\nsha256  ba75bfff320ad1f4cfbee92ba813ec336322cc3c660d406aad014b07087a3ba9  gtk+-3.24.30.tar.xz\n\n# Hash for license file:\nsha256  b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c  COPYING\n"
  },
  {
    "path": "package/libgtk3/libgtk3.mk",
    "content": "################################################################################\n#\n# libgtk3\n#\n################################################################################\n\nLIBGTK3_VERSION_MAJOR = 3.24\nLIBGTK3_VERSION = $(LIBGTK3_VERSION_MAJOR).30\nLIBGTK3_SOURCE = gtk+-$(LIBGTK3_VERSION).tar.xz\nLIBGTK3_SITE = http://ftp.gnome.org/pub/gnome/sources/gtk+/$(LIBGTK3_VERSION_MAJOR)\nLIBGTK3_LICENSE = LGPL-2.0+\nLIBGTK3_LICENSE_FILES = COPYING\nLIBGTK3_CPE_ID_VENDOR = gnome\nLIBGTK3_CPE_ID_PRODUCT = gtk\nLIBGTK3_INSTALL_STAGING = YES\nLIBGTK3_AUTORECONF = YES\n\nLIBGTK3_CONF_ENV = \\\n\tac_cv_path_GTK_UPDATE_ICON_CACHE=$(HOST_DIR)/bin/gtk-update-icon-cache \\\n\tac_cv_path_GDK_PIXBUF_CSOURCE=$(HOST_DIR)/bin/gdk-pixbuf-csource \\\n\tPKG_CONFIG_FOR_BUILD=$(HOST_DIR)/bin/pkgconf\n\nLIBGTK3_CONF_OPTS = \\\n\t--disable-glibtest \\\n\t--enable-explicit-deps=no\nHOST_LIBGTK3_CONF_OPTS = --disable-introspection\n\n# Override pkg-config pkgdatadir variable, it needs the prefix\nLIBGTK3_MAKE_OPTS = \\\n\tWAYLAND_PROTOCOLS_DATADIR=$(STAGING_DIR)/usr/share/wayland-protocols \\\n\tLIBS=$(TARGET_NLS_LIBS)\n\nLIBGTK3_DEPENDENCIES = host-pkgconf host-libgtk3 atk libglib2 cairo pango \\\n\tgdk-pixbuf libepoxy $(TARGET_NLS_DEPENDENCIES)\n\nifeq ($(BR2_PACKAGE_LIBGTK3_X11),y)\nLIBGTK3_DEPENDENCIES += fontconfig xlib_libX11 xlib_libXext xlib_libXrender xlib_libXi\n\nLIBGTK3_CONF_OPTS += \\\n\t--enable-x11-backend \\\n\t--x-includes=$(STAGING_DIR)/usr/include/X11 \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib\nelse\nLIBGTK3_CONF_OPTS += --disable-x11-backend\nendif\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBGTK3_CONF_OPTS += --enable-introspection\nLIBGTK3_DEPENDENCIES += gobject-introspection\nelse\nLIBGTK3_CONF_OPTS += --disable-introspection\nendif\n\nifeq ($(BR2_PACKAGE_LIBGTK3_WAYLAND),y)\nLIBGTK3_DEPENDENCIES += wayland wayland-protocols libxkbcommon\nLIBGTK3_CONF_OPTS += --enable-wayland-backend\nelse\nLIBGTK3_CONF_OPTS += --disable-wayland-backend\nendif\n\nifeq ($(BR2_PACKAGE_LIBGTK3_BROADWAY),y)\nLIBGTK3_CONF_OPTS += --enable-broadway-backend\nelse\nLIBGTK3_CONF_OPTS += --disable-broadway-backend\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nLIBGTK3_CONF_OPTS += --enable-xinerama\nLIBGTK3_DEPENDENCIES += xlib_libXinerama\nelse\nLIBGTK3_CONF_OPTS += --disable-xinerama\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)\nLIBGTK3_CONF_OPTS += --enable-xrandr\nLIBGTK3_DEPENDENCIES += xlib_libXrandr\nelse\nLIBGTK3_CONF_OPTS += --disable-xrandr\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y)\nLIBGTK3_DEPENDENCIES += xlib_libXcursor\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y)\nLIBGTK3_CONF_OPTS += --enable-xfixes\nLIBGTK3_DEPENDENCIES += xlib_libXfixes\nelse\nLIBGTK3_CONF_OPTS += --disable-xfixes\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y)\nLIBGTK3_CONF_OPTS += --enable-xcomposite\nLIBGTK3_DEPENDENCIES += xlib_libXcomposite\nelse\nLIBGTK3_CONF_OPTS += --disable-xcomposite\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y)\nLIBGTK3_CONF_OPTS += --enable-xdamage\nLIBGTK3_DEPENDENCIES += xlib_libXdamage\nelse\nLIBGTK3_CONF_OPTS += --disable-xdamage\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXKBFILE),y)\nLIBGTK3_CONF_OPTS += --enable-xkb\nLIBGTK3_DEPENDENCIES += xlib_libxkbfile\nelse\nLIBGTK3_CONF_OPTS += --disable-xkb\nendif\n\nifeq ($(BR2_PACKAGE_CUPS),y)\nLIBGTK3_CONF_OPTS += --enable-cups\nLIBGTK3_CONF_ENV += ac_cv_path_CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config\nLIBGTK3_DEPENDENCIES += cups\nelse\nLIBGTK3_CONF_OPTS += --disable-cups\nendif\n\nifeq ($(BR2_PACKAGE_LIBGTK3_DEMO),y)\nLIBGTK3_DEPENDENCIES += hicolor-icon-theme shared-mime-info\nelse\ndefine LIBGTK3_REMOVE_DEMOS\n\t$(RM) $(TARGET_DIR)/usr/bin/gtk3-demo \\\n\t\t$(TARGET_DIR)/usr/bin/gtk3-demo-application\nendef\nLIBGTK3_POST_INSTALL_TARGET_HOOKS += LIBGTK3_REMOVE_DEMOS\nendif\n\nifeq ($(BR2_PACKAGE_LIBGTK3_TESTS),y)\nLIBGTK3_CONF_OPTS += --enable-installed-tests\nelse\nLIBGTK3_CONF_OPTS += --disable-installed-tests\nendif\n\ndefine LIBGTK3_COMPILE_GLIB_SCHEMAS\n\t$(HOST_DIR)/bin/glib-compile-schemas \\\n\t\t$(TARGET_DIR)/usr/share/glib-2.0/schemas\nendef\n\nLIBGTK3_POST_INSTALL_TARGET_HOOKS += LIBGTK3_COMPILE_GLIB_SCHEMAS\n\n# gtk+ >= 3.10 can build a native version of gtk-update-icon-cache if\n# --enable-gtk2-dependency=no is set when invoking './configure'.\n#\n# Unfortunately, if the target toolchain is based on uClibc, the macro\n# AM_GLIB_GNU_GETTEXT will detect the libintl built for the target and\n# will add '-lintl' to the default list of libraries for the linker (used\n# for both native and target builds).\n#\n# But no native version of libintl is available (the functions are\n# provided by glibc). So gtk-update-icon-cache will not build.\n#\n# As a workaround, we build gtk-update-icon-cache on our own, set\n# --enable-gtk2-dependency=yes and force './configure' to use our version.\n\nHOST_LIBGTK3_DEPENDENCIES = \\\n\thost-libglib2 \\\n\thost-libpng \\\n\thost-gdk-pixbuf \\\n\thost-pkgconf \\\n\thost-librsvg\n\nHOST_LIBGTK3_CFLAGS = \\\n\t`$(HOST_MAKE_ENV) $(PKG_CONFIG_HOST_BINARY) --cflags --libs gdk-pixbuf-2.0` \\\n\t`$(HOST_MAKE_ENV) $(PKG_CONFIG_HOST_BINARY) --cflags --libs gio-2.0`\n\ndefine HOST_LIBGTK3_CONFIGURE_CMDS\n\techo \"#define GETTEXT_PACKAGE \\\"gtk30\\\"\" >> $(@D)/gtk/config.h\n\techo \"#define HAVE_UNISTD_H 1\" >> $(@D)/gtk/config.h\n\techo \"#define HAVE_FTW_H 1\" >> $(@D)/gtk/config.h\nendef\n\ndefine HOST_LIBGTK3_BUILD_CMDS\n\t$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \\\n\t\t$(@D)/gtk/updateiconcache.c \\\n\t\t$(HOST_LIBGTK3_CFLAGS) \\\n\t\t-o $(@D)/gtk/gtk-update-icon-cache\n\t$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \\\n\t\t$(@D)/gtk/encodesymbolic.c \\\n\t\t$(HOST_LIBGTK3_CFLAGS) \\\n\t\t-o $(@D)/gtk/gtk-encode-symbolic-svg\nendef\n\ndefine HOST_LIBGTK3_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/gtk/gtk-update-icon-cache \\\n\t\t$(HOST_DIR)/bin/gtk-update-icon-cache\n\t$(INSTALL) -D -m 0755 $(@D)/gtk/gtk-encode-symbolic-svg \\\n\t\t$(HOST_DIR)/bin/gtk-encode-symbolic-svg\nendef\n\n# Create icon-theme.cache for each of the icon directories/themes\n# It's not strictly necessary but speeds up lookups\ndefine LIBGTK3_UPDATE_ICON_CACHE\n\tfind $(TARGET_DIR)/usr/share/icons -maxdepth 1 -mindepth 1 -type d \\\n\t\t-exec $(HOST_DIR)/bin/gtk-update-icon-cache {} \\;\nendef\nLIBGTK3_TARGET_FINALIZE_HOOKS += LIBGTK3_UPDATE_ICON_CACHE\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libgudev/Config.in",
    "content": "config BR2_PACKAGE_LIBGUDEV\n\tbool \"libgudev\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tdepends on BR2_USE_WCHAR # gettext\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  This library provides GObject bindings for libudev.  It was\n\t  originally part of udev-extras, then udev, then systemd.\n\t  It's now a project on its own. Required for building some\n\t  programs that use udev, when using systemd.\n\n\t  https://wiki.gnome.org/Projects/libgudev\n\ncomment \"libgudev needs udev /dev handling and a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_PACKAGE_HAS_UDEV\n"
  },
  {
    "path": "package/libgudev/libgudev.hash",
    "content": "# From http://ftp.gnome.org/pub/GNOME/sources/libgudev/236/libgudev-236.sha256sum\nsha256  e50369d06d594bae615eb7aeb787de304ebaad07a26d1043cef8e9c7ab7c9524  libgudev-236.tar.xz\n\n# Hash for license file:\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/libgudev/libgudev.mk",
    "content": "################################################################################\n#\n# libgudev\n#\n################################################################################\n\nLIBGUDEV_VERSION = 236\nLIBGUDEV_SOURCE = libgudev-$(LIBGUDEV_VERSION).tar.xz\nLIBGUDEV_SITE = http://ftp.gnome.org/pub/GNOME/sources/libgudev/$(LIBGUDEV_VERSION)\nLIBGUDEV_INSTALL_STAGING = YES\nLIBGUDEV_DEPENDENCIES = host-pkgconf udev libglib2\nLIBGUDEV_LICENSE = LGPL-2.1+\nLIBGUDEV_LICENSE_FILES = COPYING\nLIBGUDEV_CONF_OPTS = -Dtests=disabled -Dvapi=disabled\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBGUDEV_CONF_OPTS += -Dintrospection=enabled\nLIBGUDEV_DEPENDENCIES += gobject-introspection\nelse\nLIBGUDEV_CONF_OPTS += -Dintrospection=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libhdhomerun/0001-dont-strip.patch",
    "content": "Disable strip in Makefile.\n\nPatch downloaded from Gentoo:\nhttps://gitweb.gentoo.org/repo/gentoo.git/tree/media-libs/libhdhomerun/files/dont-strip.patch\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -Nur libhdhomerun/Makefile libhdhomerun.fix/Makefile\n--- libhdhomerun/Makefile\t2012-08-30 15:46:27.000000000 -0500\n+++ libhdhomerun.fix/Makefile\t2013-03-24 14:47:08.740937164 -0500\n@@ -42,7 +42,6 @@\n \n hdhomerun_config$(BINEXT) : hdhomerun_config.c $(LIBSRCS)\n \t$(CC) $(CFLAGS) $+ $(LDFLAGS) -o $@\n-\t$(STRIP) $@\n \n libhdhomerun$(LIBEXT) : $(LIBSRCS)\n \t$(CC) $(CFLAGS) -fPIC -DDLL_EXPORT $(SHARED) $+ $(LDFLAGS) -o $@\n"
  },
  {
    "path": "package/libhdhomerun/Config.in",
    "content": "config BR2_PACKAGE_LIBHDHOMERUN\n\tbool \"libhdhomerun\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  HDHomeRun is a network-attached digital television tuner\n\t  box, produced by the company SiliconDust USA, Inc.\n\n\t  http://www.silicondust.com\n\ncomment \"libhdhomerun needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libhdhomerun/libhdhomerun.hash",
    "content": "# Locally computed\nsha256  deaf463bbcc3eefa72f97199efb6213f7b0e2c8e91f1b3d2cbf52056a8715d15  libhdhomerun_20210624.tgz\nsha256  9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9  LICENSE\n"
  },
  {
    "path": "package/libhdhomerun/libhdhomerun.mk",
    "content": "################################################################################\n#\n# libhdhomerun\n#\n################################################################################\n\nLIBHDHOMERUN_VERSION = 20210624\nLIBHDHOMERUN_SOURCE = libhdhomerun_$(LIBHDHOMERUN_VERSION).tgz\nLIBHDHOMERUN_SITE = http://download.silicondust.com/hdhomerun\nLIBHDHOMERUN_LICENSE = LGPL-2.1+\nLIBHDHOMERUN_LICENSE_FILES = LICENSE\nLIBHDHOMERUN_INSTALL_STAGING = YES\n\ndefine LIBHDHOMERUN_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \\\n\t\tCROSS_COMPILE=\"$(TARGET_CROSS)\" -C $(@D)\nendef\n\ndefine LIBHDHOMERUN_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/libhdhomerun.so \\\n\t\t$(STAGING_DIR)/usr/lib/libhdhomerun.so\n\tmkdir -p $(STAGING_DIR)/usr/include/libhdhomerun/\n\t$(INSTALL) -m 0644 $(@D)/*.h \\\n\t\t$(STAGING_DIR)/usr/include/libhdhomerun/\nendef\n\ndefine LIBHDHOMERUN_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/libhdhomerun.so \\\n\t\t$(TARGET_DIR)/usr/lib/libhdhomerun.so\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libhid/0001-dont-fiddle-with-debug-flags.patch",
    "content": "MD_CONF_DEBUGGING changes CFLAGS and CXXFLAGS with a horrible magic so disable\nit to prevent compilation errors.\n\ndownloaded from\nhttp://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/libhid/files/libhid-0.2.16-gentoo.patch?revision=1.1&view=markup\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr libhid-0.2.16.org/configure.ac libhid-0.2.16/configure.ac\n--- libhid-0.2.16.org/configure.ac\t2007-04-01 22:32:10.000000000 +0200\n+++ libhid-0.2.16/configure.ac\t2014-10-19 21:31:00.550091947 +0200\n@@ -78,7 +78,6 @@\n AC_C_BIGENDIAN\n AC_C_STRINGIZE\n \n-MD_CONF_DEBUGGING\n MD_CONF_COMPILER\n AM_CONDITIONAL(OS_LINUX, test \"$MD_OS\" = \"linux\")\n AM_CONDITIONAL(OS_BSD, test \"$MD_OS\" = \"bsd\")\n"
  },
  {
    "path": "package/libhid/0002-no-newline-in-ldflags.patch",
    "content": "Fix improper usage of macro that introduces a wrong newline\n\nThe MD_CONF_FLAGS() macro was used with a final newline that\nintroduces an invalid newline in the middle of the macro expansion\nwhen defining LDFLAGS.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: libhid-0.2.16/configure.ac\n===================================================================\n--- libhid-0.2.16.orig/configure.ac\t2007-04-01 22:32:10.000000000 +0200\n+++ libhid-0.2.16/configure.ac\t2012-12-12 20:24:03.000000000 +0100\n@@ -102,8 +102,7 @@\n   [],\n   [$OS_CFLAGS $LIBUSB_CFLAGS],\n   [],\n-  [$OS_LDFLAGS $LIBUSB_LIBS]\n-)\n+  [$OS_LDFLAGS $LIBUSB_LIBS])\n \n MD_CONF_DB2MAN\n \n"
  },
  {
    "path": "package/libhid/0003-uclinux.patch",
    "content": "Good old 'uclinux is also linux'\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura libhid-0.2.16.orig/configure.ac libhid-0.2.16/configure.ac\n--- libhid-0.2.16.orig/configure.ac\t2014-06-22 09:35:50.277261742 -0300\n+++ libhid-0.2.16/configure.ac\t2014-06-22 09:36:10.688951947 -0300\n@@ -80,6 +80,7 @@\n \n MD_CONF_DEBUGGING\n MD_CONF_COMPILER\n+AM_CONDITIONAL(OS_LINUX, test \"$MD_OS\" = \"uclinux\")\n AM_CONDITIONAL(OS_LINUX, test \"$MD_OS\" = \"linux\")\n AM_CONDITIONAL(OS_BSD, test \"$MD_OS\" = \"bsd\")\n AM_CONDITIONAL(OS_SOLARIS, test \"$MD_OS\" = \"solaris\")\ndiff -Nura libhid-0.2.16.orig/m4/md_check_os.m4 libhid-0.2.16/m4/md_check_os.m4\n--- libhid-0.2.16.orig/m4/md_check_os.m4\t2014-06-22 09:35:50.275261675 -0300\n+++ libhid-0.2.16/m4/md_check_os.m4\t2014-06-22 09:46:17.651475891 -0300\n@@ -3,7 +3,7 @@\n     AC_CANONICAL_HOST\n     AC_MSG_CHECKING(for target OS)\n     case $host in\n-      *-linux*)\n+      *-linux*|*-uclinux*)\n         AC_DEFINE(OS_LINUX, [], [define to 1 if building for Linux])\n         AC_SUBST(OS_LINUX)\n         MD_OS=linux\n"
  },
  {
    "path": "package/libhid/Config.in",
    "content": "config BR2_PACKAGE_LIBHID\n\tbool \"libhid\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\thelp\n\t  Userspace library for accessing USB HID devices\n\n\t  https://directory.fsf.org/wiki/Libhid\n\ncomment \"libhid needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/libhid/libhid.hash",
    "content": "# locally computed\nsha256  f6809ab3b9c907cbb05ceba9ee6ca23a705f85fd71588518e14b3a7d9f2550e5  libhid-0.2.16.tar.gz\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/libhid/libhid.mk",
    "content": "################################################################################\n#\n# libhid\n#\n################################################################################\n\nLIBHID_VERSION = 0.2.16\nLIBHID_SITE = http://sources.buildroot.net\nLIBHID_DEPENDENCIES = libusb-compat libusb\nLIBHID_INSTALL_STAGING = YES\nLIBHID_AUTORECONF = YES\nLIBHID_LICENSE = GPL-2.0\nLIBHID_LICENSE_FILES = COPYING\n# configure runs libusb-config for cflags/ldflags. Ensure it picks up\n# the target version\nLIBHID_CONF_ENV = PATH=$(STAGING_DIR)/usr/bin:$(BR_PATH)\nLIBHID_CONF_OPTS = \\\n\t--disable-swig \\\n\t--disable-werror \\\n\t--without-doxygen \\\n\t--disable-package-config\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libhtp/Config.in",
    "content": "config BR2_PACKAGE_LIBHTP\n\tbool \"libhtp\"\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  LibHTP is a security-aware parser for the HTTP protocol and\n\t  the related bits and pieces.\n\n\t  https://github.com/OISF/libhtp\n"
  },
  {
    "path": "package/libhtp/libhtp.hash",
    "content": "# Locally computed:\nsha256  d5956b49314fc6a058864130fbcf040a12584ee1e38f3b6ea52aedfa99d4c14a  libhtp-0.5.39.tar.gz\nsha256  87c93904e5434c81622ea690c2b90097b9f162aaa92a96542649a157dbf98d15  LICENSE\n"
  },
  {
    "path": "package/libhtp/libhtp.mk",
    "content": "################################################################################\n#\n# libhtp\n#\n################################################################################\n\nLIBHTP_VERSION = 0.5.39\nLIBHTP_SITE = $(call github,OISF,libhtp,$(LIBHTP_VERSION))\nLIBHTP_LICENSE = BSD-3-Clause\nLIBHTP_LICENSE_FILES = LICENSE\nLIBHTP_CPE_ID_VENDOR = oisf\nLIBHTP_DEPENDENCIES = \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv) \\\n\tzlib\nLIBHTP_INSTALL_STAGING = YES\n# From git\nLIBHTP_AUTORECONF = YES\n\n# Let our gcc/wrapper handle SSP\nLIBHTP_CONF_ENV = NO_STACK_PROTECTOR=true\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libhttpparser/Config.in",
    "content": "config BR2_PACKAGE_LIBHTTPPARSER\n\tbool \"libhttpparser\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  This is a parser for HTTP messages written in C. It\n\t  parses both requests and responses. The parser is\n\t  designed to be used in performance HTTP applications.\n\t  It does not make any syscalls nor allocations, it does\n\t  not buffer data, it can be interrupted at anytime.\n\t  Depending on your architecture, it only requires about\n\t  40 bytes of data per message stream (in a web server\n\t  that is per connection).\n\n\t  https://github.com/nodejs/http-parser\n\ncomment \"libhttpparser needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libhttpparser/libhttpparser.hash",
    "content": "# Locally computed:\nsha256  467b9e30fd0979ee301065e70f637d525c28193449e1b13fbcb1b1fab3ad224f  libhttpparser-2.9.4.tar.gz\nsha256  79e6ba8b687cb54786207342b9b6fcee0ac10218453ed9009b84d949b2233cc0  LICENSE-MIT\n"
  },
  {
    "path": "package/libhttpparser/libhttpparser.mk",
    "content": "################################################################################\n#\n# libhttpparser\n#\n################################################################################\n\nLIBHTTPPARSER_VERSION = 2.9.4\nLIBHTTPPARSER_SITE = $(call github,nodejs,http-parser,v$(LIBHTTPPARSER_VERSION))\nLIBHTTPPARSER_INSTALL_STAGING = YES\nLIBHTTPPARSER_LICENSE = MIT\nLIBHTTPPARSER_LICENSE_FILES = LICENSE-MIT\n\ndefine LIBHTTPPARSER_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) library package\nendef\n\ndefine LIBHTTPPARSER_INSTALL_STAGING_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) PREFIX=$(STAGING_DIR)/usr install\n\t$(INSTALL) -D -m 0644 $(@D)/libhttp_parser.a $(STAGING_DIR)/usr/lib/libhttp_parser.a\nendef\n\ndefine LIBHTTPPARSER_INSTALL_TARGET_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) PREFIX=$(TARGET_DIR)/usr install\nendef\n\ndefine HOST_LIBHTTPPARSER_BUILD_CMDS\n\t$(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) library package\nendef\n\ndefine HOST_LIBHTTPPARSER_INSTALL_CMDS\n\t$(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) PREFIX=$(HOST_DIR) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/libhttpserver/Config.in",
    "content": "config BR2_PACKAGE_LIBHTTPSERVER\n\tbool \"libhttpserver\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++11 PR59526\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBMICROHTTPD\n\thelp\n\t  libhttpserver is a C++ library for building high performance\n\t  RESTfuls web servers. libhttpserver is built upon\n\t  libmicrohttpd to provide a simple API for developers to\n\t  create HTTP services in C++.\n\n\t  https://github.com/etr/libhttpserver\n\ncomment \"libhttpserver needs a toolchain w/ C++, threads, gcc >= 5\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_5\n"
  },
  {
    "path": "package/libhttpserver/libhttpserver.hash",
    "content": "# Locally computed:\nsha256  1dfe548ac2add77fcb6c05bd00222c55650ffd02b209f4e3f133a6e3eb29c89d  libhttpserver-0.18.2.tar.gz\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING.LESSER\n"
  },
  {
    "path": "package/libhttpserver/libhttpserver.mk",
    "content": "################################################################################\n#\n# libhttpserver\n#\n################################################################################\n\nLIBHTTPSERVER_VERSION = 0.18.2\nLIBHTTPSERVER_SITE = $(call github,etr,libhttpserver,$(LIBHTTPSERVER_VERSION))\nLIBHTTPSERVER_LICENSE = LGPL-2.1+\nLIBHTTPSERVER_LICENSE_FILES = COPYING.LESSER\nLIBHTTPSERVER_INSTALL_STAGING = YES\nLIBHTTPSERVER_CONF_OPTS = \\\n\t--disable-examples \\\n\t--enable-same-directory-build\nLIBHTTPSERVER_AUTORECONF = YES\nLIBHTTPSERVER_DEPENDENCIES = libmicrohttpd\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libiberty/libiberty.hash",
    "content": "# From ftp://gcc.gnu.org/pub/binutils/releases/sha512.sum\nsha512  d326408f12a03d9a61a9de56584c2af12f81c2e50d2d7e835d51565df8314df01575724afa1e43bd0db45cfc9916b41519b67dfce03232aa4978704492a6994a  binutils-2.32.tar.xz\n\n# Locally computed, same as binutils.hash\nsha256  56bdea73b6145ef6ac5259b3da390b981d840c24cb03b8e1cbc678de7ecfa18d  COPYING.LIB\n"
  },
  {
    "path": "package/libiberty/libiberty.mk",
    "content": "################################################################################\n#\n# libiberty\n#\n################################################################################\n\nLIBIBERTY_VERSION = 2.32\nLIBIBERTY_SOURCE = binutils-$(LIBIBERTY_VERSION).tar.xz\nLIBIBERTY_SITE = $(BR2_GNU_MIRROR)/binutils\nHOST_LIBIBERTY_DL_SUBDIR = binutils\n\n# We're only building libiberty here, not the full binutils suite\nLIBIBERTY_LICENSE = LGPL-2.1+\nLIBIBERTY_LICENSE_FILES = COPYING.LIB\n\nLIBIBERTY_SUBDIR = libiberty\n\n# We explicitly disable multilib, as we do in binutils.\n# By default, libiberty installs nothing, so we must force it.\nHOST_LIBIBERTY_CONF_OPTS = \\\n\t--disable-multilib \\\n\t--enable-install-libiberty\n\n# Some packages (e.g. host-gdb) will pick this library and build shared\n# objects with it. But libiberty does not honour the --enable-shared and\n# --disable-static flags; it only ever builds a static library no matter\n# what. So we must force -fPIC in build flags.\nHOST_LIBIBERTY_CONF_ENV = \\\n\tCFLAGS=\"$(HOST_CFLAGS) -fPIC\" \\\n\tLDFLAGS=\"$(HOST_LDFLAGS) -fPIC\"\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libical/0001-no-tests.patch",
    "content": "Disable tests to avoid MMU dependency due to fork.\n\nFixes\nCMakeFiles/regression.dir/regression.c.o: In function `_test_file_locks':\n/home/br/br4/output/build/libical-v1.0.1/src/test/regression.c:(.text+0x96d8): undefined reference to `_fork'\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr libical-1.0.1.org/src/CMakeLists.txt libical-1.0.1/src/CMakeLists.txt\n--- libical-1.0.1.org/src/CMakeLists.txt\t2014-10-09 17:07:05.000000000 +0200\n+++ libical-1.0.1/src/CMakeLists.txt\t2015-04-25 17:41:22.657345548 +0200\n@@ -1,7 +1,6 @@\n add_subdirectory(libical)\n add_subdirectory(libicalss)\n add_subdirectory(libicalvcal)\n-add_subdirectory(test)\n \n if(MSVC)\n   install(FILES\n"
  },
  {
    "path": "package/libical/0002-icaltypes-c-icalreqstattype_from_string-copy-the-reqstattype.patch",
    "content": "From 6b9438d746cec6e4e632d78c5244f4be6314d1c9 Mon Sep 17 00:00:00 2001\nFrom: Allen Winter <allen.winter@kdab.com>\nDate: Sun, 28 May 2017 12:51:10 -0400\nSubject: [PATCH] icaltypes.c - icalreqstattype_from_string(), copy the\n reqstattype's debug string into its own memory in the ring buffer.\n\nIssue#253\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved (and backported) from:\nhttps://github.com/libical/libical/commit/6b9438d746cec6e4e632d78c5244f4be6314d1c9]\n---\n src/libical/icaltypes.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/libical/icaltypes.c b/src/libical/icaltypes.c\nindex 70c50d29..85c33545 100644\n--- a/src/libical/icaltypes.c\n+++ b/src/libical/icaltypes.c\n@@ -140,7 +140,7 @@ struct icalreqstattype icalreqstattype_from_string(const char *str)\n \n   p2 = strchr(p1+1,';');\n   if (p2 != 0 && *p2 != 0){\n-    stat.debug = p2+1;\n+    stat.debug = icalmemory_tmp_copy(p2+1);\n   } \n \n   return stat;\n"
  },
  {
    "path": "package/libical/Config.in",
    "content": "config BR2_PACKAGE_LIBICAL\n\tbool \"libical\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_TARGET_TZ_INFO\n\thelp\n\t  libical is an Open Source (MPL/LGPL) implementation of the\n\t  IETF's iCalendar Calendaring and Scheduling protocols.\n\n\t  http://libical.github.io/libical\n\ncomment \"libical needs a toolchain w/ C++, dynamic library, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libical/libical.hash",
    "content": "# Locally computed:\nsha256\t089ce3c42d97fbd7a5d4b3c70adbdd82115dd306349c1f5c46a8fb3f8c949592\tlibical-1.0.1.tar.gz\nsha256\tc393726f82e6f21df5262110215f6a4382b32046d10afdcfcc49338aa7a191f2\tLICENSE\n"
  },
  {
    "path": "package/libical/libical.mk",
    "content": "################################################################################\n#\n# libical\n#\n################################################################################\n\nLIBICAL_VERSION = 1.0.1\nLIBICAL_SITE = https://github.com/libical/libical/releases/download/v$(LIBICAL_VERSION)\nLIBICAL_INSTALL_STAGING = YES\nLIBICAL_LICENSE = MPL-1.0 or LGPL-2.1\nLIBICAL_LICENSE_FILES = LICENSE\nLIBICAL_CPE_ID_VENDOR = libical_project\n\n# 0002-icaltypes-c-icalreqstattype_from_string-copy-the-reqstattype.patch\nLIBICAL_IGNORE_CVES += CVE-2016-9584\n\n# building without this option is broken, it is used by\n# Gentoo/alpinelinux as well\nLIBICAL_CONF_OPTS = -DSHARED_ONLY=true\n# never build time zone info, always use system's tzinfo\nLIBICAL_CONF_OPTS += -DUSE_BUILTIN_TZDATA=false\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libiconv/Config.in",
    "content": "config BR2_PACKAGE_LIBICONV\n\tbool \"libiconv\"\n\tdepends on !BR2_ENABLE_LOCALE\n\thelp\n\t  unicode conversion library\n\n\t  http://ftp.gnu.org/pub/gnu/libiconv\n\nif BR2_PACKAGE_LIBICONV\n\nconfig BR2_PACKAGE_LIBICONV_EXTRA_ENCODINGS\n\tbool \"extra encodings\"\n\thelp\n\t  Provide support for a few extra encodings:\n\n\t  European languages\n\t    CP{437,737,775,852,853,855,857,858,860,861,863,865,869,1125}\n\t  Semitic languages\n\t    CP864\n\t  Japanese\n\t    EUC-JISX0213, Shift_JISX0213, ISO-2022-JP-3\n\t  Chinese\n\t    BIG5-2003 (experimental)\n\t  Turkmen\n\t    TDS565\n\t  Platform specifics\n\t    ATARIST, RISCOS-LATIN1\n\nendif\n"
  },
  {
    "path": "package/libiconv/libiconv.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\tccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178\tlibiconv-1.15.tar.gz\n\n# Hash for license files:\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\tCOPYING\nsha256\t56bdea73b6145ef6ac5259b3da390b981d840c24cb03b8e1cbc678de7ecfa18d\tCOPYING.LIB\n"
  },
  {
    "path": "package/libiconv/libiconv.mk",
    "content": "################################################################################\n#\n# libiconv\n#\n################################################################################\n\nLIBICONV_VERSION = 1.15\nLIBICONV_SITE = $(BR2_GNU_MIRROR)/libiconv\nLIBICONV_INSTALL_STAGING = YES\nLIBICONV_LICENSE = GPL-3.0+ (iconv program), LGPL-2.0+ (library)\nLIBICONV_LICENSE_FILES = COPYING COPYING.LIB\n\nifeq ($(BR2_PACKAGE_LIBICONV_EXTRA_ENCODINGS),y)\nLIBICONV_CONF_OPTS = --enable-extra-encodings\nendif\n\n# Don't build the preloadable library, as we don't need it (it's only\n# for LD_PRELOAD to replace glibc's iconv, but we never build libiconv\n# when glibc is used). And it causes problems for static only builds.\ndefine LIBICONV_DISABLE_PRELOAD\n\t$(SED) '/preload/d' $(@D)/Makefile.in\nendef\nLIBICONV_PRE_CONFIGURE_HOOKS += LIBICONV_DISABLE_PRELOAD\n\n$(eval $(autotools-package))\n\n# Configurations where the toolchain supports locales and the libiconv\n# package is enabled are incorrect, because the toolchain already\n# provides libiconv functionality, and having both confuses packages.\nifeq ($(BR2_PACKAGE_LIBICONV)$(BR2_ENABLE_LOCALE),yy)\n$(error Libiconv should never be enabled when the toolchain supports locales. Report this failure to Buildroot developers)\nendif\n"
  },
  {
    "path": "package/libid3tag/Config.in",
    "content": "config BR2_PACKAGE_LIBID3TAG\n\tbool \"libid3tag\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  ID3 tag reading library from the MAD project.\n\n\t  http://www.underbit.com/products/mad/\n"
  },
  {
    "path": "package/libid3tag/id3tag.pc",
    "content": "prefix=/usr\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: id3tag\nDescription: ID3 tag reading library\nVersion: 0.15.1b\nRequires:\nLibs: -L${libdir} -lid3tag\nLibs.private: -lz\nCflags: -I${includedir}\n"
  },
  {
    "path": "package/libid3tag/libid3tag.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20190310T213528Z/pool/main/libi/libid3tag/libid3tag_0.15.1b-14.dsc\nsha256  63da4f6e7997278f8a3fef4c6a372d342f705051d1eeb6a46a86b03610e26151  libid3tag_0.15.1b.orig.tar.gz\nsha256  f174cafe02bef25a9ad8cb7f9ce80119147297a7036f50878e85ac0d7ae09c62  libid3tag_0.15.1b-14.debian.tar.xz\n\n# Hash for license files:\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\nsha256  7f12ad28dc075763e91b91bfa60fad04062380011ddad8f6bac21dd7b1f44367  COPYRIGHT\n"
  },
  {
    "path": "package/libid3tag/libid3tag.mk",
    "content": "################################################################################\n#\n# libid3tag\n#\n################################################################################\n\nLIBID3TAG_VERSION = 0.15.1b\nLIBID3TAG_PATCH = libid3tag_$(LIBID3TAG_VERSION)-14.debian.tar.xz\nLIBID3TAG_SOURCE = libid3tag_$(LIBID3TAG_VERSION).orig.tar.gz\nLIBID3TAG_SITE = \\\n\thttp://snapshot.debian.org/archive/debian/20190310T213528Z/pool/main/libi/libid3tag\nLIBID3TAG_LICENSE = GPL-2.0+\nLIBID3TAG_LICENSE_FILES = COPYING COPYRIGHT\nLIBID3TAG_INSTALL_STAGING = YES\nLIBID3TAG_DEPENDENCIES = host-gperf zlib\n\n# debian/patches/10_utf16.dpatch\nLIBID3TAG_IGNORE_CVES += CVE-2004-2779 CVE-2017-11551\n\n# debian/patches/11_unknown_encoding.dpatch\nLIBID3TAG_IGNORE_CVES += CVE-2017-11550\n\n# Force autoreconf to be able to use a more recent libtool script, that\n# is able to properly behave in the face of a missing C++ compiler.\nLIBID3TAG_AUTORECONF = YES\n\ndefine LIBID3TAG_INSTALL_STAGING_PC\n\t$(INSTALL) -D package/libid3tag/id3tag.pc \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/id3tag.pc\nendef\n\nLIBID3TAG_POST_INSTALL_STAGING_HOOKS += LIBID3TAG_INSTALL_STAGING_PC\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libidn/Config.in",
    "content": "config BR2_PACKAGE_LIBIDN\n\tbool \"libidn\"\n\thelp\n\t  Libidn's purpose is to encode and decode internationalized\n\t  domain names.\n\n\t  http://www.gnu.org/software/libidn/\n\nif BR2_PACKAGE_LIBIDN\n\nconfig BR2_PACKAGE_LIBIDN_BINARY\n\tbool \"idn binary\"\n\thelp\n\t  Install idn command line tool\n\nendif\n"
  },
  {
    "path": "package/libidn/libidn.hash",
    "content": "# Locally computed:\nsha256  de00b840f757cd3bb14dd9a20d5936473235ddcba06d4bc2da804654b8bbf0f6  libidn-1.38.tar.gz\n\n# Hash for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYINGv2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYINGv3\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING.LESSERv3\n"
  },
  {
    "path": "package/libidn/libidn.mk",
    "content": "################################################################################\n#\n# libidn\n#\n################################################################################\n\nLIBIDN_VERSION = 1.38\nLIBIDN_SITE = $(BR2_GNU_MIRROR)/libidn\nLIBIDN_INSTALL_STAGING = YES\nLIBIDN_CONF_ENV = EMACS=\"no\" MAKEINFO=true\nLIBIDN_CONF_OPTS = --disable-java --enable-csharp=no\nLIBIDN_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) $(if $(BR2_PACKAGE_LIBICONV),libiconv)\nLIBIDN_LICENSE = GPL-2.0+, GPL-3.0+, LGPL-3.0+\nLIBIDN_LICENSE_FILES = COPYINGv2 COPYINGv3 COPYING.LESSERv3\nLIBIDN_CPE_ID_VENDOR = gnu\n\ndefine LIBIDN_REMOVE_BINARY\n\trm -f $(TARGET_DIR)/usr/bin/idn\nendef\n\nifneq ($(BR2_PACKAGE_LIBIDN_BINARY),y)\nLIBIDN_POST_INSTALL_TARGET_HOOKS += LIBIDN_REMOVE_BINARY\nendif\n\ndefine LIBIDN_REMOVE_EMACS_STUFF\n\trm -rf $(TARGET_DIR)/usr/share/emacs\nendef\n\nLIBIDN_POST_INSTALL_TARGET_HOOKS += LIBIDN_REMOVE_EMACS_STUFF\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libidn2/Config.in",
    "content": "config BR2_PACKAGE_LIBIDN2\n\tbool \"libidn2\"\n\thelp\n\t  Libidn2 is an implementation of the IDNA2008 + TR46\n\t  specifications (RFC 5890, RFC 5891, RFC 5892, RFC 5893,\n\t  TR 46).\n\n\t  http://www.gnu.org/software/libidn/\n\nif BR2_PACKAGE_LIBIDN2\n\nconfig BR2_PACKAGE_LIBIDN2_BINARY\n\tbool \"idn2 binary\"\n\thelp\n\t  Install idn2 command line tool\n\nendif\n"
  },
  {
    "path": "package/libidn2/libidn2.hash",
    "content": "# Calculated locally after checking signature\nsha256  76940cd4e778e8093579a9d195b25fff5e936e9dc6242068528b437a76764f91  libidn2-2.3.2.tar.gz\n\n# Hash for license files:\nsha256  73483f797a83373fca1b968c11785b98c4fc4803cdc7d3210811ca8b075d6d76  COPYING\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYINGv2\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING.LESSERv3\nsha256  01d621eef165cf4d3d3dbb737aa0699178d94c6f18cf87e9dde6db3ca7790f46  COPYING.unicode\n"
  },
  {
    "path": "package/libidn2/libidn2.mk",
    "content": "################################################################################\n#\n# libidn2\n#\n################################################################################\n\nLIBIDN2_VERSION = 2.3.2\nLIBIDN2_SITE = $(BR2_GNU_MIRROR)/libidn\nLIBIDN2_LICENSE = GPL-2.0+ or LGPL-3.0+ (library)\nLIBIDN2_LICENSE_FILES = COPYING COPYINGv2 COPYING.LESSERv3 COPYING.unicode\nLIBIDN2_CPE_ID_VENDOR = gnu\nLIBIDN2_DEPENDENCIES = \\\n\thost-pkgconf \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv)\nLIBIDN2_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_LIBUNISTRING),y)\nLIBIDN2_DEPENDENCIES += libunistring\nendif\n\nifeq ($(BR2_PACKAGE_LIBIDN2_BINARY),)\ndefine LIBIDN2_REMOVE_BINARY\n\trm -f $(TARGET_DIR)/usr/bin/idn2\nendef\nLIBIDN2_POST_INSTALL_TARGET_HOOKS += LIBIDN2_REMOVE_BINARY\nelse\nLIBIDN2_LICENSE += , GPL-3.0+ (program)\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libiec61850/Config.in",
    "content": "config BR2_PACKAGE_LIBIEC61850\n\tbool \"libiec61850\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  IEC 61850 is an international standard for\n\t  communication systems in Substation Automation Systems\n\t  (SAS) and management of Decentralized Energy Resources\n\t  (DER). It is seen as one of the communication standards\n\t  of the emerging Smart Grid.\n\n\t  The project libIEC61850 provides a server and client\n\t  library for the IEC 61850/MMS, IEC 61850/GOOSE and IEC\n\t  61850-9-2/Sampled Values communication protocols\n\t  written in C. It is available under the GPLv3 license.\n\n\t  http://libiec61850.com\n\ncomment \"libiec61850 needs a toolchain w/ C++, threads, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libiec61850/libiec61850.hash",
    "content": "# Locally computed\nsha256  7b832c195ae9f42faa1ccfe1b82b9ff187103155ce45aaca08881be98459d164  libiec61850-1.5.0.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/libiec61850/libiec61850.mk",
    "content": "################################################################################\n#\n# libiec61850\n#\n################################################################################\n\nLIBIEC61850_VERSION = 1.5.0\nLIBIEC61850_SITE = $(call github,mz-automation,libiec61850,v$(LIBIEC61850_VERSION))\nLIBIEC61850_INSTALL_STAGING = YES\nLIBIEC61850_LICENSE = GPL-3.0+\nLIBIEC61850_LICENSE_FILES = COPYING\nLIBIEC61850_CPE_ID_VENDOR = mz-automation\nLIBIEC61850_CONF_OPTS = -DBUILD_PYTHON_BINDINGS=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libiio/0001-C-public-fields-with-getters-setters-cannot-be-marked-readonly.patch",
    "content": "From 85bf9cd32138539252ed01c355cf766612cf47c9 Mon Sep 17 00:00:00 2001\nFrom: Paul Cercueil <paul@crapouillou.net>\nDate: Thu, 2 Sep 2021 11:04:21 +0100\nSubject: [PATCH] C#: public fields with getters/setters cannot be marked\n readonly\n\nMSVC would fail with the following error:\nerror CS0106: The modifier 'readonly' is not valid for this item\n\nReported-by: Raluca Chis <raluca.chis@analog.com>\nSigned-off-by: Paul Cercueil <paul@crapouillou.net>\n\n[Retrieved from:\nhttps://github.com/analogdevicesinc/libiio/commit/85bf9cd32138539252ed01c355cf766612cf47c9]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n bindings/csharp/Device.cs | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/bindings/csharp/Device.cs b/bindings/csharp/Device.cs\nindex 96214243f..6c8c8f4f3 100644\n--- a/bindings/csharp/Device.cs\n+++ b/bindings/csharp/Device.cs\n@@ -208,7 +208,7 @@ public override void write(string str)\n         public readonly string name;\n \n         /// <summary>The label of this device.</summary>\n-        public readonly string label { get; private set; }\n+        public string label { get; private set; }\n \n         /// <summary>A <c>list</c> of all the attributes that this device has.</summary>\n         public readonly List<Attr> attrs;\n"
  },
  {
    "path": "package/libiio/Config.in",
    "content": "config BR2_PACKAGE_LIBIIO\n\tbool \"libiio\"\n\tselect BR2_PACKAGE_LIBIIO_LOCAL_BACKEND if !BR2_PACKAGE_LIBIIO_XML_BACKEND\n\thelp\n\t  Libiio is a library to ease the development of software\n\t  interfacing Linux Industrial I/O (IIO) devices.\n\n\t  http://wiki.analog.com/resources/tools-software/linux-software/libiio\n\nif BR2_PACKAGE_LIBIIO\n\nconfig BR2_PACKAGE_LIBIIO_LOCAL_BACKEND\n\tbool \"Local backend\"\n\tdefault y\n\thelp\n\t  Enable the local backend of the library.\n\nconfig BR2_PACKAGE_LIBIIO_XML_BACKEND\n\tbool \"XML backend\"\n\tdefault y\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  Enable the XML backend of the library.\n\nconfig BR2_PACKAGE_LIBIIO_NETWORK_BACKEND\n\tbool \"Network backend\"\n\tdefault y\n\tselect BR2_PACKAGE_LIBIIO_XML_BACKEND\n\thelp\n\t  Enable the network backend of the library.\n\nconfig BR2_PACKAGE_LIBIIO_USB_BACKEND\n\tbool \"USB backend\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # from libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBIIO_XML_BACKEND\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Enable the USB backend of the library.\n\ncomment \"The USB backend needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_LIBIIO_SERIAL_BACKEND\n\tbool \"Serial backend\"\n\tdefault y\n\tselect BR2_PACKAGE_LIBIIO_XML_BACKEND\n\tselect BR2_PACKAGE_LIBSERIALPORT\n\thelp\n\t  Enable the serial backend of the library.\n\nconfig BR2_PACKAGE_LIBIIO_IIOD\n\tbool \"IIO Daemon\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBIIO_LOCAL_BACKEND\n\thelp\n\t  Install the IIO Daemon.\n\nconfig BR2_PACKAGE_LIBIIO_IIOD_USBD\n\tbool \"USB support in the IIO Daemon (FunctionFS)\"\n\tdepends on BR2_PACKAGE_LIBIIO_IIOD\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # usb_functionfs_descs_head_v2\n\tselect BR2_PACKAGE_LIBAIO\n\thelp\n\t  Add support for USB through FunctionFS with IIOD.\n\ncomment \"USB support in the IIO Daemon requires headers >= 3.18\"\n\tdepends on BR2_PACKAGE_LIBIIO_IIOD\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18\n\ncomment \"IIO Daemon needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_LIBIIO_TESTS\n\tbool \"Install test programs\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Install the test programs (iio_info, iio_genxml, iio_readdev).\n\ncomment \"IIO test programs need a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_LIBIIO_BINDINGS_CSHARP\n\tbool \"Install C# bindings\"\n\tdepends on BR2_PACKAGE_MONO\n\thelp\n\t  Install the C# bindings.\n\nconfig BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON\n\tbool \"Install Python bindings\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\thelp\n\t  Install the Python bindings.\n\nendif\n"
  },
  {
    "path": "package/libiio/S99iiod",
    "content": "#!/bin/sh\n\n# Server-side demuxing by default\nIIOD_OPTS=-D\n\n[ -r /etc/default/iiod ] && . /etc/default/iiod\n\ncase \"$1\" in\n\tstart)\n\t\techo \"Starting IIO Server Daemon\"\n\t\tstart-stop-daemon -S -b -q -m -p /var/run/iiod.pid -x /usr/sbin/iiod -- $IIOD_OPTS\n\t\texit $?\n\t\t;;\n\n\tstop)\n\t\techo \"Stopping IIO Server Daemon\"\n\t\tstart-stop-daemon -K -q -p /var/run/iiod.pid 2>/dev/null\n\t\texit $?\n\t\t;;\n\n\trestart)\n\t\t$0 stop\n\t\tsleep 1\n\t\t$0 start\n\t\t;;\n\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/libiio/libiio.hash",
    "content": "# Locally calculated\nsha256 df1577740ea93dca732e7d7c04786600cb083117901dee793f3d38980754af00  libiio-0.23.tar.gz\nsha256 102900208eef27b766380135906d431dba87edaa7ec6aa72e6ebd3dd67f3a97b  COPYING.txt\n"
  },
  {
    "path": "package/libiio/libiio.mk",
    "content": "################################################################################\n#\n# libiio\n#\n################################################################################\n\nLIBIIO_VERSION = 0.23\nLIBIIO_SITE = $(call github,analogdevicesinc,libiio,v$(LIBIIO_VERSION))\nLIBIIO_INSTALL_STAGING = YES\nLIBIIO_LICENSE = LGPL-2.1+\nLIBIIO_LICENSE_FILES = COPYING.txt\n\nLIBIIO_CONF_OPTS = -DENABLE_IPV6=ON \\\n\t-DWITH_LOCAL_BACKEND=$(if $(BR2_PACKAGE_LIBIIO_LOCAL_BACKEND),ON,OFF) \\\n\t-DWITH_NETWORK_BACKEND=$(if $(BR2_PACKAGE_LIBIIO_NETWORK_BACKEND),ON,OFF) \\\n\t-DINSTALL_UDEV_RULE=$(if $(BR2_PACKAGE_HAS_UDEV),ON,OFF) \\\n\t-DWITH_TESTS=$(if $(BR2_PACKAGE_LIBIIO_TESTS),ON,OFF) \\\n\t-DWITH_DOC=OFF\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nLIBIIO_CONF_OPTS += -DNO_THREADS=OFF\nelse\nLIBIIO_CONF_OPTS += -DNO_THREADS=ON\nendif\n\nifeq ($(BR2_PACKAGE_LIBIIO_XML_BACKEND),y)\nLIBIIO_DEPENDENCIES += libxml2\nLIBIIO_CONF_OPTS += -DWITH_XML_BACKEND=ON\nelse\nLIBIIO_CONF_OPTS += -DWITH_XML_BACKEND=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBIIO_USB_BACKEND),y)\nLIBIIO_DEPENDENCIES += libusb\nLIBIIO_CONF_OPTS += -DWITH_USB_BACKEND=ON\nelse\nLIBIIO_CONF_OPTS += -DWITH_USB_BACKEND=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBIIO_SERIAL_BACKEND),y)\nLIBIIO_DEPENDENCIES += libserialport\nLIBIIO_CONF_OPTS += -DWITH_SERIAL_BACKEND=ON\nelse\nLIBIIO_CONF_OPTS += -DWITH_SERIAL_BACKEND=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBIIO_IIOD),y)\nLIBIIO_DEPENDENCIES += host-flex host-bison\nLIBIIO_CONF_OPTS += -DWITH_IIOD=ON\nelse\nLIBIIO_CONF_OPTS += -DWITH_IIOD=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBIIO_IIOD_USBD),y)\nLIBIIO_DEPENDENCIES += libaio\nLIBIIO_CONF_OPTS += -DWITH_IIOD_USBD=ON\nelse\nLIBIIO_CONF_OPTS += -DWITH_IIOD_USBD=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBAIO),y)\nLIBIIO_DEPENDENCIES += libaio\nLIBIIO_CONF_OPTS += -DWITH_AIO=ON\nelse\nLIBIIO_CONF_OPTS += -DWITH_AIO=OFF\nendif\n\n# Avahi support in libiio requires avahi-client, which needs avahi-daemon and dbus\nifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy)\nLIBIIO_DEPENDENCIES += avahi\nLIBIIO_CONF_OPTS += -DHAVE_DNS_SD=ON\nelse\nLIBIIO_CONF_OPTS += -DHAVE_DNS_SD=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON),y)\nifeq ($(BR2_PACKAGE_PYTHON),y)\nLIBIIO_DEPENDENCIES += host-python-setuptools python\nelse ifeq ($(BR2_PACKAGE_PYTHON3),y)\nLIBIIO_DEPENDENCIES += host-python3-setuptools python3\nendif\nLIBIIO_CONF_OPTS += -DPYTHON_BINDINGS=ON\nelse\nLIBIIO_CONF_OPTS += -DPYTHON_BINDINGS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBIIO_BINDINGS_CSHARP),y)\ndefine LIBIIO_INSTALL_CSHARP_BINDINGS_TO_TARGET\n\t$(HOST_DIR)/bin/gacutil -root $(TARGET_DIR)/usr/lib -i \\\n\t\t$(TARGET_DIR)/usr/lib/cli/libiio-sharp-$(LIBIIO_VERSION)/libiio-sharp.dll\nendef\ndefine LIBIIO_INSTALL_CSHARP_BINDINGS_TO_STAGING\n\t$(HOST_DIR)/bin/gacutil -root $(STAGING_DIR)/usr/lib -i \\\n\t\t$(STAGING_DIR)/usr/lib/cli/libiio-sharp-$(LIBIIO_VERSION)/libiio-sharp.dll\nendef\nLIBIIO_POST_INSTALL_TARGET_HOOKS += LIBIIO_INSTALL_CSHARP_BINDINGS_TO_TARGET\nLIBIIO_POST_INSTALL_STAGING_HOOKS += LIBIIO_INSTALL_CSHARP_BINDINGS_TO_STAGING\nLIBIIO_DEPENDENCIES += mono\nLIBIIO_CONF_OPTS += -DCSHARP_BINDINGS=ON\nelse\nLIBIIO_CONF_OPTS += -DCSHARP_BINDINGS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBIIO_IIOD),y)\ndefine LIBIIO_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/libiio/S99iiod \\\n\t\t$(TARGET_DIR)/etc/init.d/S99iiod\nendef\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libilbc/Config.in",
    "content": "config BR2_PACKAGE_LIBILBC\n\tbool \"libilbc\"\n\thelp\n\t  iLBC (internet Low Bitrate Codec) is a FREE speech codec\n\t  suitable for robust voice communication over IP.\n\n\t  http://www.webrtc.org/license-rights/ilbc-freeware\n"
  },
  {
    "path": "package/libilbc/libilbc.hash",
    "content": "# Locally computed\nsha256  f97d8284776c95b31ed5d5441f13b519b8c7966b77a26aa06c29bb77e02cfe16  libilbc-829b08c7902ceb87a261279fabb36b6d523c6e07-br1.tar.gz\nsha256  b7f4cbb4a12cd11a3d1aeda9bd17c99f59b054de4b3ee53045531cd2fa74dd2a  gips_iLBClicense.pdf\n"
  },
  {
    "path": "package/libilbc/libilbc.mk",
    "content": "################################################################################\n#\n# libilbc\n#\n################################################################################\n\nLIBILBC_VERSION = 829b08c7902ceb87a261279fabb36b6d523c6e07\nLIBILBC_SITE = https://freeswitch.org/stash/scm/sd/libilbc.git\nLIBILBC_SITE_METHOD = git\nLIBILBC_LICENSE = Global IP Sound iLBC Public License v2.0\nLIBILBC_LICENSE_FILES = gips_iLBClicense.pdf\nLIBILBC_AUTORECONF = YES\nLIBILBC_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libimxvpuapi/Config.in",
    "content": "comment \"libimxvpuapi needs an i.MX platform with VPU support\"\n\tdepends on BR2_arm\n\tdepends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU\n\nconfig BR2_PACKAGE_LIBIMXVPUAPI\n\tbool \"libimxvpuapi\"\n\tdepends on BR2_arm # Only relevant for i.MX\n\tdepends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU\n\tselect BR2_PACKAGE_IMX_VPU\n\thelp\n\t  This library provides an API for using the iMX6 VPU video\n\t  engine. It is an alternative to Freescale's VPU\n\t  wrapper. Both the wrapper and this library are layered on\n\t  top of imx-vpu, the low-level iMX6 VPU interface.\n\n\t  https://github.com/Freescale/libimxvpuapi\n"
  },
  {
    "path": "package/libimxvpuapi/libimxvpuapi.hash",
    "content": "# locally computed hash\nsha256 7151e10a24929935bada1d3d87626f17e411575b3a4ac0d86440999ad0100a55  libimxvpuapi-0.10.3.tar.gz\nsha256 4bb33cc4cd956b56b779b501f18cae46a9e26f8c8500cca86ed758b8bc5e1788  LICENSE\n"
  },
  {
    "path": "package/libimxvpuapi/libimxvpuapi.mk",
    "content": "################################################################################\n#\n# libimxvpuapi\n#\n################################################################################\n\nLIBIMXVPUAPI_VERSION = 0.10.3\nLIBIMXVPUAPI_SITE = $(call github,Freescale,libimxvpuapi,$(LIBIMXVPUAPI_VERSION))\nLIBIMXVPUAPI_LICENSE = LGPL-2.1+\nLIBIMXVPUAPI_LICENSE_FILES = LICENSE\nLIBIMXVPUAPI_DEPENDENCIES = host-pkgconf host-python imx-vpu\nLIBIMXVPUAPI_INSTALL_STAGING = YES\nLIBIMXVPUAPI_NEEDS_EXTERNAL_WAF = YES\n\n$(eval $(waf-package))\n"
  },
  {
    "path": "package/libinput/Config.in",
    "content": "config BR2_PACKAGE_LIBINPUT\n\tbool \"libinput\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_LIBEVDEV\n\tselect BR2_PACKAGE_MTDEV\n\thelp\n\t  libinput is a library to handle input devices in Wayland\n\t  compositors and to provide a generic X.Org input driver.\n\t  It provides device detection, device handling, input device\n\t  event processing and abstraction so minimize the amount of\n\t  custom input code compositors need to provide the common\n\t  set of functionality that users expect.\n\n\t  http://freedesktop.org/wiki/Software/libinput/\n\ncomment \"libinput needs udev /dev management\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n"
  },
  {
    "path": "package/libinput/libinput.hash",
    "content": "# From https://lists.freedesktop.org/archives/wayland-devel/2021-October/042003.html\nsha256  0fc39f0af3ee1a77c60c34bc45391a4d0879169f7c0f7bbbeb5eef590b98b883  libinput-1.19.2.tar.xz\nsha512  fc5244dc90ceb710f7b5bb76a3cafc7dd5a8d5fa05c51122412615bfc3a99435d6a1017b79c3ce73561139fc2f5959acaf16cb9500796ea2f3eb6cb95d1a1acb  libinput-1.19.2.tar.xz\n\n# License files\nsha256  80de50b2022a840db044c56db804ca3565600a692c0714babface587acc6d1b0  COPYING\n"
  },
  {
    "path": "package/libinput/libinput.mk",
    "content": "################################################################################\n#\n# libinput\n#\n################################################################################\n\nLIBINPUT_VERSION = 1.19.2\nLIBINPUT_SOURCE = libinput-$(LIBINPUT_VERSION).tar.xz\nLIBINPUT_SITE = http://www.freedesktop.org/software/libinput\nLIBINPUT_DEPENDENCIES = host-pkgconf libevdev mtdev udev\nLIBINPUT_INSTALL_STAGING = YES\nLIBINPUT_LICENSE = MIT\nLIBINPUT_LICENSE_FILES = COPYING\n# Tests need fork, so just disable them everywhere.\nLIBINPUT_CONF_OPTS = -Dtests=false -Dlibwacom=false -Ddocumentation=false\n\nifeq ($(BR2_PACKAGE_LIBGTK3),y)\nLIBINPUT_CONF_OPTS += -Ddebug-gui=true\nLIBINPUT_DEPENDENCIES += libgtk3\nifeq ($(BR2_PACKAGE_WAYLAND),y)\nLIBINPUT_DEPENDENCIES += wayland\nendif\nifeq ($(BR2_PACKAGE_WAYLAND_PROTOCOLS),y)\nLIBINPUT_DEPENDENCIES += wayland-protocols\nendif\nifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)\nLIBINPUT_DEPENDENCIES += xlib_libX11\nendif\nelse\nLIBINPUT_CONF_OPTS += -Ddebug-gui=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libiqrf/0001-cmake-handle-static-library-and-find-required-thread.patch",
    "content": "From 46660112b76664473cc98b8ae6c863fd27c27d2d Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Fri, 29 Aug 2014 23:40:59 +0200\nSubject: [PATCH 1/1] cmake: handle static library and find required thread\n module\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n---\n CMakeLists.txt     | 2 ++\n src/CMakeLists.txt | 4 +++-\n 2 files changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 79f644c..7779a2a 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -6,7 +6,9 @@ enable_testing()\n # use local module (for Findlibusb-1.0.cmake)\n set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} \"${CMAKE_SOURCE_DIR}/cmake/Modules/\")\n \n+find_package(Threads REQUIRED)\n find_package(libusb-1.0 REQUIRED)\n+\n if (NOT LIBUSB_1_FOUND)\n \tmessage(FATAL_ERROR \"libusb-1.0 not installed. (try apt-get install libusb-1.0-0-dev)\")\n endif (NOT LIBUSB_1_FOUND)\ndiff --git a/src/CMakeLists.txt b/src/CMakeLists.txt\nindex 149d198..0597ccd 100644\n--- a/src/CMakeLists.txt\n+++ b/src/CMakeLists.txt\n@@ -18,8 +18,10 @@ set (iqrf_sources\n \n include_directories (\"${LIBUSB_1_INCLUDE_DIRS}\")\n \n-add_library(iqrf SHARED ${iqrf_sources} ${iqrf_headers})\n+add_library(iqrf ${iqrf_sources} ${iqrf_headers})\n+\n target_link_libraries(iqrf ${LIBUSB_1_LIBRARIES})\n+target_link_libraries(iqrf ${CMAKE_THREAD_LIBS_INIT})\n \n set_target_properties(iqrf PROPERTIES\n \tVERSION \"${iqrf_version_major}.${iqrf_version_minor}\"\n-- \n2.1.0\n\n"
  },
  {
    "path": "package/libiqrf/0002-use-only-c-language.patch",
    "content": "Use only the C language\n\nlibirqf is written completely in C, but by default, CMake assumes that\nboth C and C++ are used, and therefore verifies that a C++ compiler is\ninstalled. This may not necessarily be the case for a C-only package\nin Buildroot.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/src/CMakeLists.txt\n===================================================================\n--- a/src/CMakeLists.txt\n+++ b/src/CMakeLists.txt\n@@ -1,5 +1,3 @@\n-project(iqrf)\n-\n set (iqrf_version_major 0)\n set (iqrf_version_minor 1)\n set (iqrf_version_patch 2)\nIndex: b/CMakeLists.txt\n===================================================================\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -1,3 +1,5 @@\n+project(iqrf C)\n+\n cmake_minimum_required(VERSION 2.8.1)\n enable_testing()\n \n"
  },
  {
    "path": "package/libiqrf/Config.in",
    "content": "config BR2_PACKAGE_LIBIQRF\n\tbool \"libiqrf\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  This library implement specific protocol\n\t  which is used for communicating with iqrf devices\n\t  (http://iqrf.org) over usb. For usb access is used\n\t  libusb library.\n\n\t  https://github.com/nandra/libiqrf\n\ncomment \"libiqrf needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/libiqrf/libiqrf.hash",
    "content": "# Locally calculated\nsha256  8111031dd9dd6093a1927eb32dd7476fe22cfee9190043aa8e4c88003c104b16  libiqrf-0.1.2.tar.gz\nsha256  11e0700d7c23604d86fa1e7c54c7caa778d79eeb0035be8f80b5a552224ef015  src/iqrf.c\n"
  },
  {
    "path": "package/libiqrf/libiqrf.mk",
    "content": "################################################################################\n#\n# libiqrf\n#\n################################################################################\n\nLIBIQRF_VERSION = 0.1.2\nLIBIQRF_SITE = $(call github,nandra,libiqrf,v$(LIBIQRF_VERSION))\nLIBIQRF_INSTALL_STAGING = YES\nLIBIQRF_DEPENDENCIES = libusb\nLIBIQRF_LICENSE = LGPL-2.1+\nLIBIQRF_LICENSE_FILES = src/iqrf.c\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libiscsi/Config.in",
    "content": "config BR2_PACKAGE_LIBISCSI\n\tbool \"libiscsi\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Libiscsi is a client-side library to implement the iSCSI\n\t  protocol that can be used to access resource of an iSCSI\n\t  Target.\n\n\t  The library is fully async with regards to iscsi commands and\n\t  scsi tasks, but a sync layer is also provided for ease of use\n\t  for simpler applications.\n\n\t  https://github.com/sahlberg/libiscsi\n\ncomment \"libiscsi needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libiscsi/libiscsi.hash",
    "content": "# Locally computed:\nsha256 c7848ac722c8361d5064654bc6e926c2be61ef11dd3875020a63931836d806df  libiscsi-1.19.0.tar.gz\nsha256 88e3eccc48722b2a0eaff456dda94b8e8e123848d01f631969bec8e3c6c6eb85  COPYING\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENCE-GPL-2.txt\nsha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENCE-LGPL-2.1.txt\n"
  },
  {
    "path": "package/libiscsi/libiscsi.mk",
    "content": "################################################################################\n#\n# libiscsi\n#\n################################################################################\n\nLIBISCSI_VERSION = 1.19.0\nLIBISCSI_SITE = $(call github,sahlberg,libiscsi,$(LIBISCSI_VERSION))\nLIBISCSI_LICENSE = GPL-2.0+, LGPL-2.1+\nLIBISCSI_LICENSE_FILES = COPYING LICENCE-GPL-2.txt LICENCE-LGPL-2.1.txt\nLIBISCSI_INSTALL_STAGING = YES\nLIBISCSI_AUTORECONF = YES\n\nLIBISCSI_CONF_OPTS = --disable-examples --disable-werror --disable-manpages \\\n\t--disable-test-tool --disable-tests\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libite/Config.in",
    "content": "config BR2_PACKAGE_LIBITE\n\tbool \"libite\"\n\thelp\n\t  Libite is a lightweight library of frog DNA. It can be used\n\t  to fill the gaps in any dinosaur project. It holds useful\n\t  functions and macros developed by both Finit and the OpenBSD\n\t  project. Most notably the string functions: strlcpy(3),\n\t  strlcat(3) and the highly useful *BSD sys/queue.h and\n\t  sys/tree.h API's.\n\n\t  Libite is the frog DNA missing in GNU libc. However, -lite\n\t  does not aim to become another GLIB! One noticeable gap in\n\t  GLIBC is the missing _SAFE macros in the BSD sys/queue.h API\n\t  - highly recommended when traversing lists to delete/free\n\t  nodes.\n\n\t  https://github.com/troglobit/libite\n"
  },
  {
    "path": "package/libite/libite.hash",
    "content": "# Upstream .sha256 from GitHub\nsha256  5278fa0ca933727c78f4e05082cea58256d9302afac30bad0c3760cf2a18ef8f  libite-2.5.1.tar.xz\n\n# Locally calculated\nsha256  20db0601195f708d68ff7907907b3cd3b25808efa8332e064b11f00c839a5d2f  LICENSE\nsha256  c2882adb51555b836f35babc59f618d9ddceadcaa2d1dc80bbd4699614d2cd14  src/chomp.c\nsha256  bff7fa7b74324f13a24d56ebb8b49bc9c63ea01836a1c8b5a6afcbbabed62918  src/pidfile.c\n"
  },
  {
    "path": "package/libite/libite.mk",
    "content": "################################################################################\n#\n# libite\n#\n################################################################################\n\nLIBITE_VERSION = 2.5.1\nLIBITE_SOURCE = libite-$(LIBITE_VERSION).tar.xz\nLIBITE_SITE = https://github.com/troglobit/libite/releases/download/v$(LIBITE_VERSION)\nLIBITE_LICENSE = MIT, X11, ISC, BSD-2-Clause\nLIBITE_LICENSE_FILES = LICENSE src/chomp.c src/pidfile.c\nLIBITE_INSTALL_STAGING = YES\nLIBITE_CONF_OPTS = --without-symlink\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libjpeg/libjpeg.hash",
    "content": "# locally computed hash\nsha256\t99cb50e48a4556bc571dadd27931955ff458aae32f68c4d9c39d624693f69c32\tjpegsrc.v9d.tar.gz\nsha256\t3dc4e4a145c907a96bd6a0e40be3f722fecf061951909143cdff5365cba9c78c\tREADME\n"
  },
  {
    "path": "package/libjpeg/libjpeg.mk",
    "content": "################################################################################\n#\n# libjpeg\n#\n################################################################################\n\nLIBJPEG_VERSION = 9d\n# 9d was released 2020-01-12, but the tarball was replaced upstream circa\n# 2021-03, causing hash mismatch. Until there is a new version released,\n# use our cached copy from s.b.o.\n#LIBJPEG_SITE = http://www.ijg.org/files\nLIBJPEG_SITE = http://sources.buildroot.org/libjpeg\nLIBJPEG_SOURCE = jpegsrc.v$(LIBJPEG_VERSION).tar.gz\nLIBJPEG_LICENSE = IJG\nLIBJPEG_LICENSE_FILES = README\nLIBJPEG_INSTALL_STAGING = YES\nLIBJPEG_CPE_ID_VENDOR = ijg\nLIBJPEG_PROVIDES = jpeg\n\ndefine LIBJPEG_REMOVE_USELESS_TOOLS\n\trm -f $(addprefix $(TARGET_DIR)/usr/bin/,cjpeg djpeg jpegtran rdjpgcom wrjpgcom)\nendef\n\nLIBJPEG_POST_INSTALL_TARGET_HOOKS += LIBJPEG_REMOVE_USELESS_TOOLS\n\ndefine LIBJPEG_INSTALL_STAGING_PC\n\t$(INSTALL) -D -m 0644 package/libjpeg/libjpeg.pc.in \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/libjpeg.pc\n\tversion=`sed -e '/^PACKAGE_VERSION/!d;s/PACKAGE_VERSION = \\(.*\\)/\\1/' $(@D)/Makefile` ; \\\n\t\t$(SED) \"s/@PACKAGE_VERSION@/$${version}/\" $(STAGING_DIR)/usr/lib/pkgconfig/libjpeg.pc\nendef\n\nLIBJPEG_POST_INSTALL_STAGING_HOOKS += LIBJPEG_INSTALL_STAGING_PC\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libjpeg/libjpeg.pc.in",
    "content": "prefix=/usr\nexec_prefix=/usr\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: libjpeg\nDescription: A JPEG codec that provides the libjpeg API\nVersion: @PACKAGE_VERSION@\nLibs: -L${libdir} -ljpeg\nCflags: -I${includedir}\n"
  },
  {
    "path": "package/libjson/0001-fix-broken-makefile.patch",
    "content": "Fix the broken libjson makefile.\n\nSigned-off-by: Simon Dawson <spdawson@gmail.com>\n\ndiff -Nurp a/makefile b/makefile\n--- a/makefile\t2012-05-30 10:15:42.000000000 +0100\n+++ b/makefile\t2013-03-27 18:45:34.814670534 +0000\n@@ -170,7 +170,7 @@ include_path     = $(prefix)/$(includedi\n # Usage check\n ifdef CXXFLAGS\n ifdef BUILD_TYPE\n-\t$(error CXXFLAGS and BUILD_TYPE are mutually exclusive)\n+$(error CXXFLAGS and BUILD_TYPE are mutually exclusive)\n endif\n endif\n \n"
  },
  {
    "path": "package/libjson/Config.in",
    "content": "config BR2_PACKAGE_LIBJSON\n\tbool \"libjson\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  A JSON reader and writer which is super-efficient and usually\n\t  runs circles around other JSON libraries.\n\n\t  http://sourceforge.net/projects/libjson/\n\ncomment \"libjson needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/libjson/libjson.hash",
    "content": "# Locally computed:\nsha256  07267a3951038ee2e02d26cc41bf8e275668c38f751240d3e78dc979182e7376  libjson_7.6.1.zip\nsha256  bd62d605bef39ab7ae39f6fa333ba513edb93cfcd56c9c966f1d34e31ff7c69b  License.txt\n"
  },
  {
    "path": "package/libjson/libjson.mk",
    "content": "################################################################################\n#\n# libjson\n#\n################################################################################\n\nLIBJSON_VERSION = 7.6.1\nLIBJSON_SITE = http://downloads.sourceforge.net/project/libjson\nLIBJSON_SOURCE = libjson_$(LIBJSON_VERSION).zip\nLIBJSON_INSTALL_STAGING = YES\nLIBJSON_LICENSE = BSD-2-Clause\nLIBJSON_LICENSE_FILES = License.txt\n\nLIBJSON_CXXFLAGS = $(TARGET_CFLAGS) -DNDEBUG -std=c++11\n\nifeq ($(BR2_STATIC_LIBS),y)\nLIBJSON_MAKE_OPTS += SHARED=0\nelse\nLIBJSON_MAKE_OPTS += SHARED=1\nLIBJSON_CXXFLAGS += -fPIC\nendif\n\nLIBJSON_MAKE_OPTS += BUILD_TYPE= CXXFLAGS=\"$(LIBJSON_CXXFLAGS)\"\n\ndefine LIBJSON_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(LIBJSON_DL_DIR)/$(LIBJSON_SOURCE)\n\tmv $(@D)/libjson/* $(@D)\n\t$(RM) -r $(@D)/libjson\n\t$(SED) '/ldconfig/d' $(@D)/makefile\nendef\n\ndefine LIBJSON_BUILD_CMDS\n\tmkdir -p $(@D)/Objects_$(if $(BR2_STATIC_LIBS),static,shared) \\\n\t\t$(@D)/_internal/Source/Dependencies\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\t$(LIBJSON_MAKE_OPTS) -C $(@D)\nendef\n\ndefine LIBJSON_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\t$(LIBJSON_MAKE_OPTS) prefix=$(TARGET_DIR)/usr install -C $(@D)\nendef\n\ndefine LIBJSON_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\t$(LIBJSON_MAKE_OPTS) prefix=$(STAGING_DIR)/usr install -C $(@D)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libkcapi/0001-Disable-use-of-__NR_io_getevents-when-not-defined.patch",
    "content": "From 455c4938f5822c017c7ff79dd2dca638b6410923 Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Sun, 15 Nov 2020 18:05:48 -0800\nSubject: [PATCH] Disable use of __NR_io_getevents when not defined\n\nArchitectures like riscv32 do not define this syscall, therefore return\nENOSYS on such architectures\n\nUpstream-Status: Pending\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\nSigned-off-by: Stephan Mueller <smueller@chronox.de>\n[Retrieved from:\nhttps://github.com/smuellerDD/libkcapi/commit/455c4938f5822c017c7ff79dd2dca638b6410923]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n lib/internal.h | 11 +++++++++--\n 1 file changed, 9 insertions(+), 2 deletions(-)\n\ndiff --git a/lib/internal.h b/lib/internal.h\nindex 1237827..f765461 100644\n--- a/lib/internal.h\n+++ b/lib/internal.h\n@@ -325,10 +325,17 @@ static inline int io_submit(aio_context_t ctx, long n,  struct iocb **iocb)\n     return syscall(__NR_io_submit, ctx, n, iocb);\n }\n \n-static inline int io_getevents(aio_context_t ctx, long min, long max,\n-            struct io_event *events, struct timespec *timeout)\n+static inline int io_getevents(__attribute__((unused)) aio_context_t ctx,\n+            __attribute__((unused)) long min,\n+            __attribute__((unused)) long max,\n+            __attribute__((unused)) struct io_event *events,\n+            __attribute__((unused)) struct timespec *timeout)\n {\n+#ifdef __NR_io_getevents\n     return syscall(__NR_io_getevents, ctx, min, max, events, timeout);\n+#else\n+    return -ENOSYS;\n+#endif\n }\n \n /************************************************************\n"
  },
  {
    "path": "package/libkcapi/Config.in",
    "content": "config BR2_PACKAGE_LIBKCAPI\n\tbool \"libkcapi\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\thelp\n\t  Linux Kernel Crypto API userspace interface library\n\n\t  http://www.chronox.de/libkcapi.html\n\nif BR2_PACKAGE_LIBKCAPI\n\nconfig BR2_PACKAGE_LIBKCAPI_ENCAPP\n\tbool \"build enc application\"\n\nconfig BR2_PACKAGE_LIBKCAPI_HASHER\n\tbool \"build hasher application\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\ncomment \"hasher application needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_LIBKCAPI_RNGAPP\n\tbool \"build rng read application\"\n\nconfig BR2_PACKAGE_LIBKCAPI_SPEED\n\tbool \"build speed-test program\"\n\nconfig BR2_PACKAGE_LIBKCAPI_TEST\n\tbool \"build test program\"\n\tdepends on BR2_USE_MMU # fork()\n\nendif\n"
  },
  {
    "path": "package/libkcapi/libkcapi.hash",
    "content": "# Locally calculated\nsha256 8a08dcbb4d05ede4357cdc9d61c7f2a7f2cd96b7ce2eb41b28e45b2e378267ad\tlibkcapi-1.1.5.tar.xz\nsha256 c6b8402a68999b0f84560ab43cdf60f9ff33c4a9a8ced6a40db9d3b787ba5b4a\tCOPYING\nsha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4\tCOPYING.gplv2\nsha256 13aa749a5b0a454917a944ed8fffc530b784f5ead522b1aacaf4ec8aa55a6239\tCOPYING.bsd\n"
  },
  {
    "path": "package/libkcapi/libkcapi.mk",
    "content": "################################################################################\n#\n# libkcapi\n#\n################################################################################\n\nLIBKCAPI_VERSION = 1.1.5\nLIBKCAPI_SOURCE = libkcapi-$(LIBKCAPI_VERSION).tar.xz\nLIBKCAPI_SITE = http://www.chronox.de/libkcapi\nLIBKCAPI_AUTORECONF = YES\nLIBKCAPI_INSTALL_STAGING = YES\nLIBKCAPI_LICENSE = BSD-3-Clause (library), BSD-3-Clause or GPL-2.0 (programs)\nLIBKCAPI_LICENSE_FILES = COPYING COPYING.gplv2 COPYING.bsd\nLIBKCAPI_CONF_ENV = \\\n\tac_cv_path_DB2PDF=\"\" \\\n\tac_cv_path_DB2PS=\"\" \\\n\tac_cv_path_XMLTO=\"\"\n\nifeq ($(BR2_PACKAGE_LIBKCAPI_ENCAPP),y)\nLIBKCAPI_CONF_OPTS += --enable-kcapi-encapp\nelse\nLIBKCAPI_CONF_OPTS += --disable-kcapi-encapp\nendif\n\nifeq ($(BR2_PACKAGE_LIBKCAPI_HASHER),y)\nLIBKCAPI_CONF_OPTS += --enable-kcapi-hasher\nelse\nLIBKCAPI_CONF_OPTS += --disable-kcapi-hasher\nendif\n\nifeq ($(BR2_PACKAGE_LIBKCAPI_RNGAPP),y)\nLIBKCAPI_CONF_OPTS += --enable-kcapi-rngapp\nelse\nLIBKCAPI_CONF_OPTS += --disable-kcapi-rngapp\nendif\n\nifeq ($(BR2_PACKAGE_LIBKCAPI_SPEED),y)\nLIBKCAPI_CONF_OPTS += --enable-kcapi-speed\nelse\nLIBKCAPI_CONF_OPTS += --disable-kcapi-speed\nendif\n\nifeq ($(BR2_PACKAGE_LIBKCAPI_TEST),y)\nLIBKCAPI_CONF_OPTS += --enable-kcapi-test\nelse\nLIBKCAPI_CONF_OPTS += --disable-kcapi-test\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libkrb5/0001-Fix-KDC-null-deref-on-TGS-inner-body-null-server.patch",
    "content": "From d775c95af7606a51bf79547a94fa52ddd1cb7f49 Mon Sep 17 00:00:00 2001\nFrom: Greg Hudson <ghudson@mit.edu>\nDate: Tue, 3 Aug 2021 01:15:27 -0400\nSubject: [PATCH] Fix KDC null deref on TGS inner body null server\n\nAfter the KDC decodes a FAST inner body, it does not check for a null\nserver.  Prior to commit 39548a5b17bbda9eeb63625a201cfd19b9de1c5b this\nwould typically result in an error from krb5_unparse_name(), but with\nthe addition of get_local_tgt() it results in a null dereference.  Add\na null check.\n\nReported by Joseph Sutton of Catalyst.\n\nCVE-2021-37750:\n\nIn MIT krb5 releases 1.14 and later, an authenticated attacker can\ncause a null dereference in the KDC by sending a FAST TGS request with\nno server field.\n\nticket: 9008 (new)\ntags: pullup\ntarget_version: 1.19-next\ntarget_version: 1.18-next\n\n[Retrieved from:\nhttps://github.com/krb5/krb5/commit/d775c95af7606a51bf79547a94fa52ddd1cb7f49]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/kdc/do_tgs_req.c | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/src/kdc/do_tgs_req.c b/src/kdc/do_tgs_req.c\nindex 582e497cc9..32dc65fa8e 100644\n--- a/src/kdc/do_tgs_req.c\n+++ b/src/kdc/do_tgs_req.c\n@@ -204,6 +204,11 @@ process_tgs_req(krb5_kdc_req *request, krb5_data *pkt,\n         status = \"FIND_FAST\";\n         goto cleanup;\n     }\n+    if (sprinc == NULL) {\n+        status = \"NULL_SERVER\";\n+        errcode = KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN;\n+        goto cleanup;\n+    }\n \n     errcode = get_local_tgt(kdc_context, &sprinc->realm, header_server,\n                             &local_tgt, &local_tgt_storage, &local_tgt_key);\n"
  },
  {
    "path": "package/libkrb5/Config.in",
    "content": "config BR2_PACKAGE_LIBKRB5\n\tbool \"libkrb5\"\n\t# needs fork()\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Kerberos is a system for authenticating users and services\n\t  on a network. Kerberos is a trusted third-party service.\n\t  That means that there is a third party (the Kerberos server)\n\t  that is trusted by all the entities on the network (users\n\t  and services, usually called \"principals\"). This is the MIT\n\t  reference implementation of Kerberos V5.\n\n\t  https://web.mit.edu/kerberos/\n\ncomment \"libkrb5 needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libkrb5/libkrb5.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  66085e2f594751e77e82e0dbf7bbc344320fb48a9df2a633cfdd8f7d6da99fc8  krb5-1.18.4.tar.gz\n\n# Hash for license file:\nsha256  7fba8b076bdc2cfef1d0813c5d4067d76d5be60c32d84de22d5d1cf451744feb  NOTICE\n"
  },
  {
    "path": "package/libkrb5/libkrb5.mk",
    "content": "################################################################################\n#\n# libkrb5\n#\n################################################################################\n\nLIBKRB5_VERSION_MAJOR = 1.18\nLIBKRB5_VERSION = $(LIBKRB5_VERSION_MAJOR).4\nLIBKRB5_SITE = https://web.mit.edu/kerberos/dist/krb5/$(LIBKRB5_VERSION_MAJOR)\nLIBKRB5_SOURCE = krb5-$(LIBKRB5_VERSION).tar.gz\nLIBKRB5_SUBDIR = src\nLIBKRB5_LICENSE = MIT\nLIBKRB5_LICENSE_FILES = NOTICE\nLIBKRB5_CPE_ID_VENDOR = mit\nLIBKRB5_CPE_ID_PRODUCT = kerberos_5\nLIBKRB5_DEPENDENCIES = host-bison $(TARGET_NLS_DEPENDENCIES)\nLIBKRB5_INSTALL_STAGING = YES\n\n# 0001-Fix-KDC-null-deref-on-TGS-inner-body-null-server.patch\nLIBKRB5_IGNORE_CVES += CVE-2021-37750\n\n# The configure script uses AC_TRY_RUN tests to check for those values,\n# which doesn't work in a cross-compilation scenario. Therefore,\n# we feed the configure script with the correct answer for those tests\nLIBKRB5_CONF_ENV = \\\n\tac_cv_printf_positional=yes \\\n\tac_cv_func_regcomp=yes \\\n\tkrb5_cv_attr_constructor_destructor=yes,yes \\\n\tLIBS=$(TARGET_NLS_LIBS)\n\n# Never use the host packages\nLIBKRB5_CONF_OPTS = \\\n\t--without-system-db \\\n\t--without-system-et \\\n\t--without-system-ss \\\n\t--without-system-verto \\\n\t--without-tcl \\\n\t--disable-rpath\n\nifeq ($(BR2_PACKAGE_OPENLDAP),y)\nLIBKRB5_CONF_OPTS += --with-ldap\nLIBKRB5_DEPENDENCIES += openldap\nelse\nLIBKRB5_CONF_OPTS += --without-ldap\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBKRB5_CONF_OPTS += \\\n\t--enable-pkinit \\\n\t--with-crypto-impl=openssl \\\n\t--with-spake-openssl \\\n\t--with-tls-impl=openssl\nLIBKRB5_DEPENDENCIES += openssl\nelse\nLIBKRB5_CONF_OPTS += \\\n\t--disable-pkinit \\\n\t--with-crypto-impl=builtin \\\n\t--without-spake-openssl \\\n\t--without-tls-impl\nendif\n\nifeq ($(BR2_PACKAGE_LIBEDIT),y)\nLIBKRB5_CONF_OPTS += --with-libedit\nLIBKRB5_DEPENDENCIES += host-pkgconf libedit\nelse\nLIBKRB5_CONF_OPTS += --without-libedit\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nLIBKRB5_CONF_OPTS += --with-readline\nLIBKRB5_DEPENDENCIES += readline\nelse\nLIBKRB5_CONF_OPTS += --without-readline\nendif\n\nifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nLIBKRB5_CONF_OPTS += --disable-thread-support\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libksba/Config.in",
    "content": "config BR2_PACKAGE_LIBKSBA\n\tbool \"libksba\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error\n\tselect BR2_PACKAGE_LIBGPG_ERROR\n\thelp\n\t  CMS and X.509 library\n\n\t  https://www.gnupg.org/related_software/libksba/\n"
  },
  {
    "path": "package/libksba/libksba.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  dad683e6f2d915d880aa4bed5cea9a115690b8935b78a1bbe01669189307a48b  libksba-1.6.0.tar.bz2\n\n# Hash for license files:\nsha256  8f1b87e551d97b2b23b6d3403a5d598c63ea89824cb8ee351f631f6cab2beaa5  AUTHORS\nsha256  6197b98c6bf69838c624809c509d84333de1bc847155168c0e84527446a27076  COPYING\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING.GPLv2\nsha256  0abbff814cd00e2b0b6d08395af2b419c1a92026c4b4adacbb65ccda45fa58cf  COPYING.GPLv3\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING.LGPLv3\n"
  },
  {
    "path": "package/libksba/libksba.mk",
    "content": "################################################################################\n#\n# libksba\n#\n################################################################################\n\nLIBKSBA_VERSION = 1.6.0\nLIBKSBA_SOURCE = libksba-$(LIBKSBA_VERSION).tar.bz2\nLIBKSBA_SITE = ftp://ftp.gnupg.org/gcrypt/libksba\nLIBKSBA_LICENSE = LGPL-3.0+ or GPL-2.0+ (library, headers), GPL-3.0+ (manual, tests, build system)\nLIBKSBA_LICENSE_FILES = AUTHORS COPYING COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv3\nLIBKSBA_CPE_ID_VENDOR = libksba_project\nLIBKSBA_INSTALL_STAGING = YES\nLIBKSBA_DEPENDENCIES = libgpg-error\nLIBKSBA_CONF_OPTS = --with-gpg-error-prefix=$(STAGING_DIR)/usr\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libldns/Config.in",
    "content": "config BR2_PACKAGE_LIBLDNS\n\tbool \"libldns\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  The goal of ldns is to simplify DNS programming, it supports\n\t  recent RFCs like the DNSSEC documents, and allows developers\n\t  to easily create software conforming to current RFCs, and\n\t  experimental software for current Internet Drafts.\n\n\t  http://www.nlnetlabs.nl/projects/ldns\n"
  },
  {
    "path": "package/libldns/libldns.hash",
    "content": "# From http://www.nlnetlabs.nl/downloads/ldns/ldns-1.7.1.tar.gz.sha1\nsha1 d075a08972c0f573101fb4a6250471daaa53cb3e  ldns-1.7.1.tar.gz\n# From http://www.nlnetlabs.nl/downloads/ldns/ldns-1.7.1.tar.gz.sha256\nsha256 8ac84c16bdca60e710eea75782356f3ac3b55680d40e1530d7cea474ac208229  ldns-1.7.1.tar.gz\n\n# Hash for license file:\nsha256 9e0b1505c358d1a7c79555ee8bd1acbe2985dbc74dd81f3697cebf2161e922e6  LICENSE\n"
  },
  {
    "path": "package/libldns/libldns.mk",
    "content": "################################################################################\n#\n# libldns\n#\n################################################################################\n\nLIBLDNS_VERSION = 1.7.1\nLIBLDNS_SOURCE = ldns-$(LIBLDNS_VERSION).tar.gz\nLIBLDNS_SITE = http://www.nlnetlabs.nl/downloads/ldns\nLIBLDNS_LICENSE = BSD-3-Clause\nLIBLDNS_LICENSE_FILES = LICENSE\nLIBLDNS_CPE_ID_VENDOR = nlnetlabs\nLIBLDNS_CPE_ID_PRODUCT = ldns\nLIBLDNS_INSTALL_STAGING = YES\nLIBLDNS_DEPENDENCIES = openssl\n# --disable-dane-verify can be removed after openssl bump to 1.1.x\nLIBLDNS_CONF_OPTS = \\\n\t--with-ssl=$(STAGING_DIR)/usr \\\n\t--enable-dane \\\n\t--disable-dane-verify \\\n\t--enable-ecdsa \\\n\t--enable-gost \\\n\t--enable-sha2 \\\n\t--without-examples \\\n\t--without-p5-dns-ldns \\\n\t--without-pyldns \\\n\t--without-pyldnsx\n\nifeq ($(BR2_STATIC_LIBS),y)\nLIBLDNS_DEPENDENCIES += host-pkgconf\n# missing -lz breaks configure, add it using pkgconf\nLIBLDNS_CONF_ENV += LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs openssl`\"\nendif\n\n# the linktest make target fails with static linking, and we are only\n# interested in the lib target anyway\nLIBLDNS_MAKE_OPTS = lib\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/liblinear/0001-blas-don-t-overwrite-ar-options.patch",
    "content": "From cae4c3b80fee0f3637d70f6d33946888c8105637 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Sat, 13 Dec 2014 17:16:58 +0100\nSubject: [PATCH 1/1] blas: don't overwrite ar options\n\nar's rcv options get lost when AR is passed on\nthe command line.\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n blas/Makefile | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/blas/Makefile b/blas/Makefile\nindex 895fd24..78cec9a 100644\n--- a/blas/Makefile\n+++ b/blas/Makefile\n@@ -1,4 +1,4 @@\n-AR     = ar rcv\n+AR     = ar\n RANLIB = ranlib\n \n HEADERS = blas.h blasp.h\n@@ -8,7 +8,7 @@ CFLAGS = $(OPTFLAGS)\n FFLAGS = $(OPTFLAGS)\n \n blas: $(FILES) $(HEADERS)\n-\t$(AR) blas.a $(FILES)\n+\t$(AR) rcv blas.a $(FILES)  \n \t$(RANLIB) blas.a\n \n clean:\n-- \n1.9.3\n\n"
  },
  {
    "path": "package/liblinear/0002-build-static-lib.patch",
    "content": "Makefile: add a rule to build a static library\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n[Fabrice: update for 2.43]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\ndiff -durN liblinear-1.96.orig/Makefile liblinear-1.96/Makefile\n--- liblinear-1.96.orig/Makefile\t2014-11-15 07:50:23.000000000 +0100\n+++ liblinear-1.96/Makefile\t2014-12-14 00:23:00.135893956 +0100\n@@ -16,6 +16,11 @@\n \tfi; \\\n \t$(CXX) $${SHARED_LIB_FLAG} linear.o newton.o blas/blas.a -o liblinear.so.$(SHVER)\n \n+# Keeping blas/blas.a as a pre-requisite, to ensure all .o files are built\n+static-lib: linear.o newton.o blas/blas.a\n+\t$(AR) rcv liblinear.a linear.o newton.o blas/*.o\n+\t$(RANLIB) liblinear.a\n+\n train: newton.o linear.o train.c blas/blas.a\n \t$(CXX) $(CFLAGS) -o train train.c newton.o linear.o $(LIBS)\n \n"
  },
  {
    "path": "package/liblinear/Config.in",
    "content": "config BR2_PACKAGE_LIBLINEAR\n\tbool \"liblinear\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  liblinear is a linear classifier for data with millions of\n\t  instances and features.\n\n\t  http://www.csie.ntu.edu.tw/~cjlin/liblinear/\n\ncomment \"liblinear needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/liblinear/liblinear.hash",
    "content": "# Locally calculated\nsha256  02bad43d745e2796f39a08ac9d117770e71939ef06b1ee7afc6ab7909e304807  liblinear-2.43.tar.gz\nsha256  c5c91211a0edaa4c77e352f6b27a8f9c6768afe27d48176d6094905c534eacb3  COPYRIGHT\n"
  },
  {
    "path": "package/liblinear/liblinear.mk",
    "content": "################################################################################\n#\n# liblinear\n#\n################################################################################\n\nLIBLINEAR_VERSION = 2.43\nLIBLINEAR_SITE = http://www.csie.ntu.edu.tw/~cjlin/liblinear\nLIBLINEAR_LICENSE = BSD-3-Clause\nLIBLINEAR_LICENSE_FILES = COPYRIGHT\nLIBLINEAR_INSTALL_STAGING = YES\nLIBLINEAR_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\n# $1: destination directory\ndefine LIBLINEAR_INSTALL_SHARED\n\t$(INSTALL) -m 0644 -D $(@D)/liblinear.so.4 $(1)/usr/lib/liblinear.so.4\n\tln -sf liblinear.so.4 $(1)/usr/lib/liblinear.so\nendef\nLIBLINEAR_CFLAGS += -fPIC\nendif\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\n# $1: destination directory\ndefine LIBLINEAR_INSTALL_STATIC\n\t$(INSTALL) -m 0644 -D $(@D)/liblinear.a $(1)/usr/lib/liblinear.a\nendef\nendif\n\ndefine LIBLINEAR_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) CFLAGS=\"$(LIBLINEAR_CFLAGS)\" -C $(@D) \\\n\t\t$(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),lib) \\\n\t\t$(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),static-lib)\nendef\n\ndefine LIBLINEAR_INSTALL_STAGING_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/linear.h $(STAGING_DIR)/usr/include/linear.h\n\t$(call LIBLINEAR_INSTALL_SHARED,$(STAGING_DIR))\n\t$(call LIBLINEAR_INSTALL_STATIC,$(STAGING_DIR))\nendef\n\ndefine LIBLINEAR_INSTALL_TARGET_CMDS\n\t$(call LIBLINEAR_INSTALL_SHARED,$(TARGET_DIR))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libllcp/Config.in",
    "content": "config BR2_PACKAGE_LIBLLCP\n\tbool \"libllcp\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBNFC\n\thelp\n\t  Library extending libnfc with support for Logical Link Control\n\t  Protocol.\n\n\t  https://github.com/nfc-tools/libllcp\n\ncomment \"libllcp needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libllcp/libllcp.hash",
    "content": "# Locally calculated\nsha256 4336533304a11ecb3041d211ccecd7759b7c7aad4f44037721803e2da1094d22  libllcp-05dfa8003433a7070bfd8ae02efdb0203bbf34aa.tar.gz\nsha256 9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1  COPYING\n"
  },
  {
    "path": "package/libllcp/libllcp.mk",
    "content": "################################################################################\n#\n# libllcp\n#\n################################################################################\n\nLIBLLCP_VERSION = 05dfa8003433a7070bfd8ae02efdb0203bbf34aa\nLIBLLCP_SITE = $(call github,nfc-tools,libllcp,$(LIBLLCP_VERSION))\nLIBLLCP_DEPENDENCIES = host-pkgconf libnfc\n# There's no ./configure in the repository, so we need to autoreconf\nLIBLLCP_AUTORECONF = YES\nLIBLLCP_INSTALL_STAGING = YES\nLIBLLCP_LICENSE = GPL-3.0+\nLIBLLCP_LICENSE_FILES = COPYING\n# ensure graphviz isn't used\nLIBLLCP_CONF_ENV = ac_cv_path_DOT=\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/liblo/Config.in",
    "content": "config BR2_PACKAGE_LIBLO\n\tbool \"liblo\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  liblo is an implementation of the Open Sound Control\n\t  protocol for POSIX systems\n\n\t  http://liblo.sourceforge.net/\n\ncomment \"liblo needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/liblo/liblo.hash",
    "content": "# From http://sourceforge.net/projects/liblo/files/liblo/0.31/\nsha1  d188a62df51e29fa98861daec1db0fdae400410d  liblo-0.31.tar.gz\nmd5  14378c1e74c58e777fbb4fcf33ac5315  liblo-0.31.tar.gz\n\n# Locally computed\nsha256  2b4f446e1220dcd624ecd8405248b08b7601e9a0d87a0b94730c2907dbccc750  liblo-0.31.tar.gz\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING\n"
  },
  {
    "path": "package/liblo/liblo.mk",
    "content": "################################################################################\n#\n# liblo\n#\n################################################################################\n\nLIBLO_VERSION = 0.31\nLIBLO_SITE = http://downloads.sourceforge.net/project/liblo/liblo/$(LIBLO_VERSION)\n\nLIBLO_LICENSE = LGPL-2.1+\nLIBLO_LICENSE_FILES = COPYING\nLIBLO_INSTALL_STAGING = YES\n\n# IPv6 support broken, issue known upstream\nLIBLO_CONF_OPTS = --disable-ipv6\n\n# Liblo uses atomic builtins, so we need to link with libatomic for\n# the architectures who explicitly need libatomic.\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nLIBLO_CONF_ENV += LIBS=\"-latomic\"\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/liblockfile/0001-Makefile.in-fix-cross-compilation.patch",
    "content": "From 7535d990645d867a6e491d16cd2548ea7e54958e Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 5 Apr 2021 16:21:32 +0200\nSubject: [PATCH] Makefile.in: fix cross-compilation\n\n- Use DESTDIR to install each files instead of prepending prefix with it\n  as this will result in dotlockfile being wrongly install in $(bindir)\n- Use -f when creating symlink to avoid an error if link already exists\n- Do not install files with root group as this will break\n  cross-compilation\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/miquels/liblockfile/pull/11]\n---\n Makefile.in | 36 ++++++++++++++++++------------------\n 1 file changed, 18 insertions(+), 18 deletions(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 9c74b35..5ce8153 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -10,7 +10,7 @@ CFLAGS\t\t= @CFLAGS@ -I.\n LDFLAGS\t\t= @LDFLAGS@\n CC\t\t= @CC@\n \n-prefix\t\t= $(DESTDIR)@prefix@\n+prefix\t\t= @prefix@\n exec_prefix\t= @exec_prefix@\n bindir\t\t= @bindir@\n libdir\t\t= @libdir@\n@@ -60,34 +60,34 @@ dlockfile.o:\tlockfile.c\n \t\t\t-c lockfile.c -o dlockfile.o\n \n install_static:\tstatic install_common\n-\t\tinstall -d -m 755 -g root -p $(libdir)\n-\t\tinstall -m 644 liblockfile.a $(libdir)\n+\t\tinstall -d -m 755 -p $(DESTDIR)$(libdir)\n+\t\tinstall -m 644 liblockfile.a $(DESTDIR)$(libdir)\n \n install_shared:\tshared install_static install_common\n-\t\tinstall -d -m 755 -g root -p $(libdir)\n+\t\tinstall -d -m 755 -p $(DESTDIR)$(libdir)\n \t\tinstall -m 755 liblockfile.so \\\n-\t\t\t$(libdir)/liblockfile.so.$(SOVER)\n-\t\tln -s liblockfile.so.$(SOVER) $(libdir)/liblockfile.so.$(MAJOR)\n-\t\tln -s liblockfile.so.$(SOVER) $(libdir)/liblockfile.so\n+\t\t\t$(DESTDIR)$(libdir)/liblockfile.so.$(SOVER)\n+\t\tln -sf liblockfile.so.$(SOVER) $(DESTDIR)$(libdir)/liblockfile.so.$(MAJOR)\n+\t\tln -sf liblockfile.so.$(SOVER) $(DESTDIR)$(libdir)/liblockfile.so\n \t\tif test \"$(DESTDIR)\" = \"\"; then @LDCONFIG@; fi\n \n install_common:\n-\t\tinstall -d -m 755 -g root -p $(includedir)\n-\t\tinstall -d -m 755 -g root -p $(bindir)\n-\t\tinstall -d -m 755 -g root -p $(mandir)/man1\n-\t\tinstall -d -m 755 -g root -p $(mandir)/man3\n-\t\tinstall -m 644 lockfile.h maillock.h $(includedir)\n+\t\tinstall -d -m 755 -p $(DESTDIR)$(includedir)\n+\t\tinstall -d -m 755 -p $(DESTDIR)$(bindir)\n+\t\tinstall -d -m 755 -p $(DESTDIR)$(mandir)/man1\n+\t\tinstall -d -m 755 -p $(DESTDIR)$(mandir)/man3\n+\t\tinstall -m 644 lockfile.h maillock.h $(DESTDIR)$(includedir)\n \t\tif [ \"$(MAILGROUP)\" != \"\" ]; then\\\n-\t\t  install -g $(MAILGROUP) -m 2755 dotlockfile $(bindir);\\\n+\t\t  install -g $(MAILGROUP) -m 2755 dotlockfile $(DESTDIR)$(bindir);\\\n \t\telse \\\n-\t\t  install -g root -m 755 dotlockfile $(bindir); \\\n+\t\t  install -m 755 dotlockfile $(DESTDIR)$(bindir); \\\n \t\tfi\n-\t\tinstall -m 644 *.1 $(mandir)/man1\n-\t\tinstall -m 644 *.3 $(mandir)/man3\n+\t\tinstall -m 644 *.1 $(DESTDIR)$(mandir)/man1\n+\t\tinstall -m 644 *.3 $(DESTDIR)$(mandir)/man3\n \n install_nfslib:\tnfslib\n-\t\tinstall -d -m 755 -g root -p $(nfslockdir)\n-\t\tinstall -m 755 nfslock.so.$(NFSVER) $(nfslockdir)\n+\t\tinstall -d -m 755 -p $(DESTDIR)$(nfslockdir)\n+\t\tinstall -m 755 nfslock.so.$(NFSVER) $(DESTDIR)$(nfslockdir)\n \t\tif test \"$(DESTDIR)\" = \"\"; then @LDCONFIG@; fi\n \n test:\t\ttest-stamp\n"
  },
  {
    "path": "package/liblockfile/Config.in",
    "content": "config BR2_PACKAGE_LIBLOCKFILE\n\tbool \"liblockfile\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  NFS-safe locking library.\n\n\t  https://github.com/miquels/liblockfile\n"
  },
  {
    "path": "package/liblockfile/liblockfile.hash",
    "content": "# From https://snapshot.debian.org/archive/debian/20210128T210947Z/pool/main/libl/liblockfile/liblockfile_1.17-1.dsc\nsha256  6e937f3650afab4aac198f348b89b1ca42edceb17fb6bb0918f642143ccfd15e  liblockfile_1.17.orig.tar.gz\nsha256  e3657c0e3facfeccb58900c0b48d56cd68ad5f9f24d1b4c6eaa69c26490fb673  liblockfile_1.17-1.debian.tar.bz2\n# Locally computed\nsha256  3d080ab931103a823e6b9b788ccbc3e9d44797bd54546f3feebfd305f90de46a  COPYRIGHT\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  licenses/GPL-2\nsha256  b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c  licenses/LGPL-2\n"
  },
  {
    "path": "package/liblockfile/liblockfile.mk",
    "content": "################################################################################\n#\n# liblockfile\n#\n################################################################################\n\nLIBLOCKFILE_VERSION = 1.17\nLIBLOCKFILE_SOURCE = liblockfile_$(LIBLOCKFILE_VERSION).orig.tar.gz\nLIBLOCKFILE_SITE = http://snapshot.debian.org/archive/debian/20210128T210947Z/pool/main/libl/liblockfile\nLIBLOCKFILE_PATCH = liblockfile_$(LIBLOCKFILE_VERSION)-1.debian.tar.bz2\n\nLIBLOCKFILE_LICENSE = LGPL-2.0+, GPL-2.0+ (dotlockfile)\nLIBLOCKFILE_LICENSE_FILES = COPYRIGHT licenses/GPL-2 licenses/LGPL-2\n\n# We're patching Makefile.in\nLIBLOCKFILE_AUTORECONF = YES\nLIBLOCKFILE_INSTALL_STAGING = YES\nLIBLOCKFILE_CONF_OPTS = --mandir=/usr/share/man\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/liblog4c-localtime/0001-log4c.m4-fix-underquoted-definition-of-AM_PATH_LOG4C.patch",
    "content": "From b7290560082e91673431de79e1fa318c9fd90261 Mon Sep 17 00:00:00 2001\nFrom: Danomi Manchego <danomimanchego123@gmail.com>\nDate: Sat, 25 Oct 2014 19:42:38 +0200\nSubject: [PATCH 1/5] log4c.m4: fix \"underquoted definition of AM_PATH_LOG4C\"\n warning\n\nWhen autoreconfiguring liblog4c-localtime, there is a warning from\nautoconf caused by an underquoted definition of AM_PATH_LOG4C. This\npatch fixes this warning.\n\nSubmitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1\n\nSigned-off-by: Danomi Manchego <danomimanchego123@gmail.com>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n log4c.m4 | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/log4c.m4 b/log4c.m4\nindex 551a90d..96424c0 100644\n--- a/log4c.m4\n+++ b/log4c.m4\n@@ -4,7 +4,7 @@\n dnl AM_PATH_LOG4C([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])\n dnl Test for LOG4C, and define LOG4C_CFLAGS and LOG4C_LIBS\n dnl\n-AC_DEFUN(AM_PATH_LOG4C,\n+AC_DEFUN([AM_PATH_LOG4C],\n [dnl \n dnl Get the cflags and libraries from the log4c-config script\n dnl\n-- \n2.0.0\n\n"
  },
  {
    "path": "package/liblog4c-localtime/0002-Fix-linking-error-without-pthread.patch",
    "content": "From 435b28cd90973cc03a533e75e90a46cd9f197dff Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <peter@korsgaard.com>\nDate: Sat, 25 Oct 2014 19:44:01 +0200\nSubject: [PATCH 2/5] Fix linking error without pthread\n\nThe rollingfile functionality only gets built if pthread support is\navailable, but a call to these functions from log4c_fini() was outside\nthe #if WITH_ROLLINGFILE conditional, causing linker errors when the\nlibrary is used.\n\nSubmitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n src/log4c/init.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/src/log4c/init.c b/src/log4c/init.c\nindex 99883ea..7dd9eb4 100644\n--- a/src/log4c/init.c\n+++ b/src/log4c/init.c\n@@ -267,10 +267,12 @@ extern int log4c_fini(void)\n \tlog4c_layout_factory = NULL;\n     }\n   \n+#ifdef WITH_ROLLINGFILE\n     if (log4c_rollingpolicy_factory) {\n \tsd_factory_delete(log4c_rollingpolicy_factory);\n \tlog4c_rollingpolicy_factory = NULL;\n     }\n+#endif\n     \n #ifdef __SD_DEBUG__\n     if( getenv(\"SD_DEBUG\")){\n-- \n2.0.0\n\n"
  },
  {
    "path": "package/liblog4c-localtime/0003-Fix-debug-mode-build-with-uClibc.patch",
    "content": "From acbaee34bcb1881db97969dd2c411446f32ca4cc Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 25 Oct 2014 19:45:33 +0200\nSubject: [PATCH 3/5] Fix debug mode build with uClibc\n\nWhen --enable-debug is passed, liblog4c-localtime wants to use\n<mcheck.h>. It takes the precaution of testing if __GLIBC__ is\ndefined. But unfortunately, the uClibc C library pretends to be\ncompatible with glibc by defining __GLIBC__, but it doesn't provide\nmcheck.h.\n\nTo better support this situation, we add an AC_CHECK_HEADERS() check\non mcheck.h, and then use HAVE_MCHECK_H were appropriate.\n\nSubmitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.in     | 2 +-\n src/log4c/init.c | 6 +++---\n 2 files changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/configure.in b/configure.in\nindex 612ccbe..dbf11e9 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -115,7 +115,7 @@ AM_CONDITIONAL(TEST, test x$enable_test = xyes)\n AC_HEADER_STDC\n AC_CHECK_HEADERS([fcntl.h inttypes.h langinfo.h limits.h stddef.h stdint.h \\\n stdlib.h string.h sys/time.h syslog.h unistd.h stdarg.h varargs.h getopt.h \\\n-pthread.h])\n+pthread.h mcheck.h])\n \n # Checks for typedefs, structures, and compiler characteristics.\n AC_C_CONST\ndiff --git a/src/log4c/init.c b/src/log4c/init.c\nindex 7dd9eb4..4b88210 100644\n--- a/src/log4c/init.c\n+++ b/src/log4c/init.c\n@@ -35,7 +35,7 @@ static const char version[] = \"$Id$\";\n #include <layout_type_basic_r.h>\n #include <layout_type_dated_r.h>\n \n-#if defined(__LOG4C_DEBUG__) && defined(__GLIBC__)\n+#if defined(__LOG4C_DEBUG__) && defined(HAVE_MCHECK_H)\n #include <mcheck.h>\n #endif\n \n@@ -100,7 +100,7 @@ extern int log4c_init(void)\n     sd_debug(\"log4c_init[\");\n   \n     /* activate GLIBC allocation debugging */\n-#if defined(__LOG4C_DEBUG__) && defined(__GLIBC__)\n+#if defined(__LOG4C_DEBUG__) && defined(HAVE_MCHECK_H)\n     mtrace();\n #endif\n   \n@@ -280,7 +280,7 @@ extern int log4c_fini(void)\n \tlog4c_dump_all_instances(stderr);\n     }\n #endif\n-#if defined(__LOG4C_DEBUG__) && defined(__GLIBC__)\n+#if defined(__LOG4C_DEBUG__) && defined(HAVE_MCHECK_H)\n     muntrace();\n #endif\n   \n-- \n2.0.0\n\n"
  },
  {
    "path": "package/liblog4c-localtime/0004-Add-AC_CONFIG_MACRO_DIR-to-configure.in.patch",
    "content": "From a2553c203d8b8257dea1d2e2139b220935587144 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 25 Oct 2014 20:03:25 +0200\nSubject: [PATCH 4/5] Add AC_CONFIG_MACRO_DIR to configure.in\n\nWithout AC_CONFIG_MACRO_DIR, when autoreconfiguring the package, it\ncannot find AM_PATH_EXPAT which is defined in config/expat.m4.\n\nSubmitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.in | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/configure.in b/configure.in\nindex dbf11e9..769b204 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -5,6 +5,7 @@ AC_PREREQ(2.57)\n AC_INIT\n AC_CONFIG_SRCDIR([configure.in])\n AC_CONFIG_AUX_DIR(config)\n+AC_CONFIG_MACRO_DIR([config])\n AM_CONFIG_HEADER(src/config.h)\n \n LOG4C_MAJOR_VERSION=1\n-- \n2.0.0\n\n"
  },
  {
    "path": "package/liblog4c-localtime/0005-Fix-C-support.patch",
    "content": "From bdccec4c374a93480a7fd303d15e20810a5d5b7e Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 25 Oct 2014 21:22:40 +0200\nSubject: [PATCH 5/5] Fix C++ support\n\nAutoreconf fails with the following message:\n\ntests/log4c/Makefile.am: error: C++ source seen but 'CXX' is undefined\n\nSo this commit adds the AC_PROG_CXX macro to configure.in, and ensures\nthat the C++ test is only built if a C++ compiler is available.\n\nSubmitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.in            | 3 +++\n tests/log4c/Makefile.am | 6 +++++-\n 2 files changed, 8 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.in b/configure.in\nindex 769b204..ce75800 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -38,6 +38,7 @@ AC_DEFINE(_GNU_SOURCE,1,\"POSIXandGNU extensions\")\n #.\n AC_PROG_YACC\n AC_PROG_CC\n+AC_PROG_CXX\n AC_PROG_CPP\n AM_PROG_LEX\n AC_PROG_AWK\n@@ -47,6 +48,8 @@ AC_PROG_MAKE_SET\n AC_PROG_RANLIB\n AC_PROG_LIBTOOL\n \n+AM_CONDITIONAL([USE_CXX], [test \"$ac_cv_prog_CXX\" != \"no\"])\n+\n # platform idioms\n case \"$host\" in\n     *-hp-hpux*)\ndiff --git a/tests/log4c/Makefile.am b/tests/log4c/Makefile.am\nindex f647f27..b1b4ed6 100644\n--- a/tests/log4c/Makefile.am\n+++ b/tests/log4c/Makefile.am\n@@ -3,7 +3,11 @@ INCLUDES = \\\n \t-DSRCDIR=\"\\\"$(srcdir)\\\"\"\n \n noinst_PROGRAMS = test_category test_rc bench bench_fwrite \\\n-\ttest_stream2 test_layout_r cpp_compile_test\n+\ttest_stream2 test_layout_r\n+\n+if USE_CXX\n+noinst_PROGRAMS += cpp_compile_test\n+endif\n \n if WITH_ROLLINGFILE\n noinst_PROGRAMS += test_rollingfile_appender test_rollingfile_appender_mt\n-- \n2.0.0\n\n"
  },
  {
    "path": "package/liblog4c-localtime/Config.in",
    "content": "config BR2_PACKAGE_LIBLOG4C_LOCALTIME\n\tbool \"liblog4c-localtime\"\n\tselect BR2_PACKAGE_EXPAT\n\thelp\n\t  Log4c is a library of C for flexible logging to files, syslog\n\t  and other destinations.\n\t  This version is with localtime patch, to make lib show times\n\t  in local timezone.\n\n\t  https://github.com/rcmadruga/log4c-localtime\n\t  http://log4c.sourceforge.net/\n"
  },
  {
    "path": "package/liblog4c-localtime/liblog4c-localtime.hash",
    "content": "# Locally calculated\nsha256 a1f68d8251509c0171f8bfea42f9e2a5255a4185f7dcbe67f584aa09709b2496  liblog4c-localtime-1.0.tar.gz\nsha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7  COPYING\n"
  },
  {
    "path": "package/liblog4c-localtime/liblog4c-localtime.mk",
    "content": "################################################################################\n#\n# liblog4c-localtime\n#\n################################################################################\n\nLIBLOG4C_LOCALTIME_VERSION = 1.0\nLIBLOG4C_LOCALTIME_SITE = $(call github,rcmadruga,log4c-localtime,v$(LIBLOG4C_LOCALTIME_VERSION))\nLIBLOG4C_LOCALTIME_INSTALL_STAGING = YES\nLIBLOG4C_LOCALTIME_CONF_OPTS = --disable-expattest\nLIBLOG4C_LOCALTIME_DEPENDENCIES = expat\nLIBLOG4C_LOCALTIME_CONFIG_SCRIPTS = log4c-config\nLIBLOG4C_LOCALTIME_LICENSE = LGPL-2.1\nLIBLOG4C_LOCALTIME_LICENSE_FILES = COPYING\nLIBLOG4C_LOCALTIME_AUTORECONF = YES\n\ndefine LIBLOG4C_LOCALTIME_FIX_CONFIGURE_PERMS\n\tchmod +x $(@D)/configure\nendef\n\nLIBLOG4C_LOCALTIME_PRE_CONFIGURE_HOOKS += LIBLOG4C_LOCALTIME_FIX_CONFIGURE_PERMS\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/liblogging/Config.in",
    "content": "config BR2_PACKAGE_LIBLOGGING\n\tbool \"liblogging\"\n\thelp\n\t  Liblogging is an easy to use library for\n\t  logging. It offers an enhanced replacement\n\t  for the syslog() call, but retains its ease of use.\n\n\t  https://www.rsyslog.com/liblogging/\n"
  },
  {
    "path": "package/liblogging/liblogging.hash",
    "content": "# From http://www.liblogging.org/\nsha256\t338c6174e5c8652eaa34f956be3451f7491a4416ab489aef63151f802b00bf93\tliblogging-1.0.6.tar.gz\n\n# Hash for license file:\nsha256\ta5626f700d3ee92513673b5f43733af5b651d9e7a9157d4bd81ceb9c89ec04b0\tCOPYING\n"
  },
  {
    "path": "package/liblogging/liblogging.mk",
    "content": "################################################################################\n#\n# liblogging\n#\n################################################################################\n\nLIBLOGGING_VERSION = 1.0.6\nLIBLOGGING_SITE = http://download.rsyslog.com/liblogging\nLIBLOGGING_LICENSE = BSD-2-Clause\nLIBLOGGING_LICENSE_FILES = COPYING\nLIBLOGGING_CPE_ID_VENDOR = adiscon\nLIBLOGGING_INSTALL_STAGING = YES\nLIBLOGGING_CONF_OPTS = --enable-cached-man-pages\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nLIBLOGGING_CONF_OPTS += --enable-journal\nLIBLOGGING_DEPENDENCIES += systemd\nelse\nLIBLOGGING_CONF_OPTS += --disable-journal\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libloki/0001-allow-to-install-to-a-specific-location-using-DESTDI.patch",
    "content": "From 0b80e8beff68a0570fdc2d9281992060414475c1 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sat, 29 Apr 2017 22:13:54 +0200\nSubject: [PATCH] allow to install to a specific location using DESTDIR\n\nDESTDIR is the autotools standard variable where to copy\nheaders, libraries and binaries. It's not the same as \"prefix\".\n\nSo while installing to Buildroot STAGING directory, use prefix=/usr\nand DESTOR=$(STAGING_DIR).\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\nSigend-off-by: Corentin GUILLEVIC <corentin.guillevic@smile.fr>\n---\n include/Makefile | 12 ++++++------\n src/Makefile     | 10 +++++-----\n 2 files changed, 11 insertions(+), 11 deletions(-)\n\ndiff --git a/include/Makefile b/include/Makefile\nindex 26a8139..a8cf369 100644\n--- a/include/Makefile\n+++ b/include/Makefile\n@@ -2,10 +2,10 @@ include ../Makefile.common\n \n .PHONY: install\n install:\n-\tmkdir -p $(prefix)/include/loki\n-\tmkdir -p $(prefix)/include/loki/flex\n-\tmkdir -p $(prefix)/include/loki/yasli\n+\tmkdir -p $(DESTDIR)$(prefix)/include/loki\n+\tmkdir -p $(DESTDIR)$(prefix)/include/loki/flex\n+\tmkdir -p $(DESTDIR)$(prefix)/include/loki/yasli\n \t\n-\tinstall -m 644 loki/*.h $(prefix)/include/loki\n-\tinstall -m 644 loki/flex/*.h $(prefix)/include/loki/flex\n-\tinstall -m 644 loki/yasli/*.h $(prefix)/include/loki/yasli\n+\tinstall -m 644 loki/*.h $(DESTDIR)$(prefix)/include/loki\n+\tinstall -m 644 loki/flex/*.h $(DESTDIR)$(prefix)/include/loki/flex\n+\tinstall -m 644 loki/yasli/*.h $(DESTDIR)$(prefix)/include/loki/yasli\ndiff --git a/src/Makefile b/src/Makefile\nindex b272929..054285e 100644\n--- a/src/Makefile\n+++ b/src/Makefile\n@@ -74,13 +74,13 @@ INSTALL_DATA := $(INSTALL) -m 644\n install: install-static install-shared\n \n install-static: $(RESULT_DIR)$(STATIC_LIB)\n-\tmkdir -p $(prefix)/lib\n-\t$(INSTALL_DATA) $(RESULT_DIR)$(STATIC_LIB) $(prefix)/lib\n+\tmkdir -p $(DESTDIR)$(prefix)/lib\n+\t$(INSTALL_DATA) $(RESULT_DIR)$(STATIC_LIB) $(DESTDIR)$(prefix)/lib\n \n install-shared: $(RESULT_DIR)$(SHARED_LIB_VERSIONED)\n-\tmkdir -p $(prefix)/lib\n-\t$(INSTALL_DATA) $(RESULT_DIR)$(SHARED_LIB_VERSIONED) $(prefix)/lib\n-\tcd $(prefix)/lib; ln -s $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE)\n+\tmkdir -p $(DESTDIR)$(prefix)/lib\n+\t$(INSTALL_DATA) $(RESULT_DIR)$(SHARED_LIB_VERSIONED) $(DESTDIR)$(prefix)/lib\n+\tcd $(DESTDIR)$(prefix)/lib; ln -s $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE)\n \n %.lo : %.cpp\n \t$(CXX) -c $(CXXFLAGS) -fPIC $(CPPFLAGS) -o $@ $<\n-- \n2.9.3\n\n"
  },
  {
    "path": "package/libloki/0002-use-ln-snf.patch",
    "content": "From 7fcaa080ef3fddb3f7dcfaf2984bc397d7c9e96c Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sat, 29 Apr 2017 22:27:26 +0200\nSubject: [PATCH] use ln -snf\n\nOtherwise the install step fail due to existing symlink.\n\n'libloki.so': File exists\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\nSigend-off-by: Corentin GUILLEVIC <corentin.guillevic@smile.fr>\n---\n src/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/Makefile b/src/Makefile\nindex 054285e..2c169ab 100644\n--- a/src/Makefile\n+++ b/src/Makefile\n@@ -80,7 +80,7 @@ install-static: $(RESULT_DIR)$(STATIC_LIB)\n install-shared: $(RESULT_DIR)$(SHARED_LIB_VERSIONED)\n \tmkdir -p $(DESTDIR)$(prefix)/lib\n \t$(INSTALL_DATA) $(RESULT_DIR)$(SHARED_LIB_VERSIONED) $(DESTDIR)$(prefix)/lib\n-\tcd $(DESTDIR)$(prefix)/lib; ln -s $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE)\n+\tcd $(DESTDIR)$(prefix)/lib; ln -snf $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE)\n \n %.lo : %.cpp\n \t$(CXX) -c $(CXXFLAGS) -fPIC $(CPPFLAGS) -o $@ $<\n-- \n2.9.3\n\n"
  },
  {
    "path": "package/libloki/Config.in",
    "content": "config BR2_PACKAGE_LIBLOKI\n\tbool \"libloki\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  A C++ library of designs, containing flexible\n\t  implementations of common design patterns and idioms.\n\n\t  http://sourceforge.net/projects/loki-lib\n\ncomment \"libloki needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libloki/libloki.hash",
    "content": "# From https://sourceforge.net/projects/loki-lib/files/Loki/Loki%200.1.7\nmd5 33a24bcbb99fa2ec8fcbbab65649f3f6 loki-0.1.7.tar.bz2\nsha1 006c630217b1e1fd33015dc0597d2d743d8ee4e3 loki-0.1.7.tar.bz2\n# locally computed\nsha256 07553754f6be2738559947db69b0718512665bf4a34015fa3a875b6eb1111198 loki-0.1.7.tar.bz2\n"
  },
  {
    "path": "package/libloki/libloki.mk",
    "content": "################################################################################\n#\n# libloki\n#\n################################################################################\n\nLIBLOKI_VERSION = 0.1.7\nLIBLOKI_SOURCE = loki-$(LIBLOKI_VERSION).tar.bz2\nLIBLOKI_SITE = https://sourceforge.net/projects/loki-lib/files/Loki/Loki%20$(LIBLOKI_VERSION)\nLIBLOKI_LICENSE = MIT\nLIBLOKI_INSTALL_STAGING = YES\n\nifeq ($(BR2_STATIC_LIBS),y)\nLIBLOKI_BUILD_TARGETS += build-static\nLIBLOKI_INSTALL_TARGETS += install-static\nelse ifeq ($(BR2_SHARED_LIBS),y)\nLIBLOKI_BUILD_TARGETS += build-shared\nLIBLOKI_INSTALL_TARGETS += install-shared\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nLIBLOKI_BUILD_TARGETS += build-static build-shared\nLIBLOKI_INSTALL_TARGETS += install-static install-shared\nendif\n\ndefine LIBLOKI_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\" \\\n\t\t-C $(@D) $(LIBLOKI_BUILD_TARGETS)\nendef\n\ndefine LIBLOKI_INSTALL_STAGING_CMDS\n\t$(MAKE) -C $(@D)/src DESTDIR=$(STAGING_DIR) $(LIBLOKI_INSTALL_TARGETS)\n\t$(MAKE) -C $(@D)/include DESTDIR=$(STAGING_DIR) install\nendef\n\ndefine LIBLOKI_INSTALL_TARGET_CMDS\n\t$(MAKE) -C $(@D)/src DESTDIR=$(TARGET_DIR) $(LIBLOKI_INSTALL_TARGETS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libmad/0001-mips-h-constraint-removal.patch",
    "content": "http://patchwork.openembedded.org/patch/921/\n\ndiff -ur libmad-0.15.1b-orig/fixed.h libmad-0.15.1b/fixed.h\n--- libmad-0.15.1b-orig/fixed.h\t2004-02-17 12:32:03.000000000 +1030\n+++ libmad-0.15.1b/fixed.h\t2009-08-05 10:46:30.000000000 +0930\n@@ -299,6 +299,23 @@\n \n # elif defined(FPM_MIPS)\n \n+/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */\n+#if defined (__GNUC__) && defined (__GNUC_MINOR__)\n+#define __GNUC_PREREQ(maj, min) \\\n+\t((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))\n+#else\n+#define __GNUC_PREREQ(maj, min)  0\n+#endif\n+\n+#if __GNUC_PREREQ(4,4)\n+  typedef unsigned int u64_di_t __attribute__ ((mode (DI)));\n+# define MAD_F_MLX(hi, lo, x, y) \\\n+   do { \\\n+      u64_di_t __ll = (u64_di_t) (x) * (y); \\\n+      hi = __ll >> 32; \\\n+      lo = __ll; \\\n+   } while (0) \n+#else\n /*\n  * This MIPS version is fast and accurate; the disposition of the least\n  * significant bit depends on OPT_ACCURACY via mad_f_scale64().\n@@ -328,6 +345,7 @@\n \t : \"%r\" ((x) >> 12), \"r\" ((y) >> 16))\n #  define MAD_F_MLZ(hi, lo)  ((mad_fixed_t) (lo))\n # endif\n+#endif /* __GNU_PREREQ(4,4) */\n \n # if defined(OPT_SPEED)\n #  define mad_f_scale64(hi, lo)  \\\ndiff -ur libmad-0.15.1b-orig/mad.h libmad-0.15.1b/mad.h\n--- libmad-0.15.1b-orig/mad.h\t2004-02-17 13:25:44.000000000 +1030\n+++ libmad-0.15.1b/mad.h\t2009-08-05 10:42:40.000000000 +0930\n@@ -344,6 +344,23 @@\n \n # elif defined(FPM_MIPS)\n \n+/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */\n+#if defined (__GNUC__) && defined (__GNUC_MINOR__)\n+#define __GNUC_PREREQ(maj, min) \\\n+\t((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))\n+#else\n+#define __GNUC_PREREQ(maj, min)  0\n+#endif\n+\n+#if __GNUC_PREREQ(4,4)\n+  typedef unsigned int u64_di_t __attribute__ ((mode (DI)));\n+# define MAD_F_MLX(hi, lo, x, y) \\\n+   do { \\\n+      u64_di_t __ll = (u64_di_t) (x) * (y); \\\n+      hi = __ll >> 32; \\\n+      lo = __ll; \\\n+   } while (0) \n+#else\n /*\n  * This MIPS version is fast and accurate; the disposition of the least\n  * significant bit depends on OPT_ACCURACY via mad_f_scale64().\n@@ -373,6 +390,7 @@\n \t : \"%r\" ((x) >> 12), \"r\" ((y) >> 16))\n #  define MAD_F_MLZ(hi, lo)  ((mad_fixed_t) (lo))\n # endif\n+#endif /* __GNU_PREREQ(4,4) */\n \n # if defined(OPT_SPEED)\n #  define mad_f_scale64(hi, lo)  \\\n"
  },
  {
    "path": "package/libmad/0002-configure-ac-automake-foreign.patch",
    "content": "configure.ac: don't require GNU-specific files when running automake\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -ur libmad-0.15.1b-orig/configure.ac libmad-0.15.1b/configure.ac\n--- libmad-0.15.1b-orig/configure.ac\t2019-01-17 21:24:52.259194527 +0100\n+++ libmad-0.15.1b/configure.ac\t2019-01-17 21:25:32.779481058 +0100\n@@ -26,7 +26,7 @@\n \n AC_CONFIG_SRCDIR([decoder.h])\n \n-AM_INIT_AUTOMAKE\n+AM_INIT_AUTOMAKE([foreign])\n \n AM_CONFIG_HEADER([config.h])\n \n"
  },
  {
    "path": "package/libmad/Config.in",
    "content": "config BR2_PACKAGE_LIBMAD\n\tbool \"libmad\"\n\thelp\n\t  High-quality MPEG audio decoder. All computations are\n\t  performed with fixed-point integer arithmetic, making it ideal\n\t  for systems without a floating-point unit.\n\n\t  http://www.underbit.com/products/mad/\n\nif BR2_PACKAGE_LIBMAD\n\nchoice\n\tprompt \"Speed vs. accuracy\"\n\tdefault BR2_PACKAGE_LIBMAD_OPTIMIZATION_DEFAULT\n\nconfig BR2_PACKAGE_LIBMAD_OPTIMIZATION_DEFAULT\n\tbool \"Default\"\n\thelp\n\t  Keep optimizations balanced between speed and accuracy.\n\nconfig BR2_PACKAGE_LIBMAD_OPTIMIZATION_SPEED\n\tbool \"Optimize for speed over accuracy\"\n\thelp\n\t  Compromise accuracy for speed.\n\nconfig BR2_PACKAGE_LIBMAD_OPTIMIZATION_ACCURACY\n\tbool \"Optimize for accuracy over speed\"\n\thelp\n\t  Compromise speed for accuracy.\n\nendchoice\n\nconfig BR2_PACKAGE_LIBMAD_SSO\n\tbool \"Subband synthesis optimization\"\n\thelp\n\t  Use the subband synthesis optimization, with reduced accuracy.\n\nconfig BR2_PACKAGE_LIBMAD_ASO\n\tbool \"Architecture-specific optimizations\"\n\tdefault y\n\t# arm optimization needs classic arm instructions support\n\tdepends on !(BR2_arm && !BR2_ARM_CPU_HAS_ARM)\n\thelp\n\t  Use certain architecture-specific optimizations.\n\nconfig BR2_PACKAGE_LIBMAD_STRICT_ISO\n\tbool \"Strict ISO/IEC interpretations\"\n\thelp\n\t  Use strict ISO/IEC interpretations.\n\nendif\n"
  },
  {
    "path": "package/libmad/libmad.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20190310T213528Z/pool/main/libm/libmad/libmad_0.15.1b-10.dsc\nsha256  bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690  libmad_0.15.1b.orig.tar.gz\nsha256  dfeabd5d2398bf902660edc31f87ad40600f0aa732b946f864d8ee6bbf56a99c  libmad_0.15.1b-10.diff.gz\n\n# Hash for license file:\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/libmad/libmad.mk",
    "content": "################################################################################\n#\n# libmad\n#\n################################################################################\n\nLIBMAD_VERSION = 0.15.1b\nLIBMAD_PATCH = libmad_$(LIBMAD_VERSION)-10.diff.gz\nLIBMAD_SOURCE = libmad_$(LIBMAD_VERSION).orig.tar.gz\nLIBMAD_SITE = \\\n\thttp://snapshot.debian.org/archive/debian/20190310T213528Z/pool/main/libm/libmad\nLIBMAD_INSTALL_STAGING = YES\nLIBMAD_LICENSE = GPL-2.0+\nLIBMAD_LICENSE_FILES = COPYING\n\ndefine LIBMAD_APPLY_DEBIAN_PATCHES\n\tif [ -d $(@D)/debian/patches ]; then \\\n\t\t$(APPLY_PATCHES) $(@D) $(@D)/debian/patches *.patch; \\\n\tfi\nendef\n\nLIBMAD_POST_PATCH_HOOKS += LIBMAD_APPLY_DEBIAN_PATCHES\n\n# debian/patches/md_size.diff\nLIBMAD_IGNORE_CVES += CVE-2017-8372 CVE-2017-8373\n\n# debian/patches/length-check.patch\nLIBMAD_IGNORE_CVES += CVE-2017-8374\n\n# Force autoreconf to be able to use a more recent libtool script, that\n# is able to properly behave in the face of a missing C++ compiler.\nLIBMAD_AUTORECONF = YES\n\ndefine LIBMAD_INSTALL_STAGING_PC\n\t$(INSTALL) -D package/libmad/mad.pc \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/mad.pc\nendef\n\nLIBMAD_POST_INSTALL_STAGING_HOOKS += LIBMAD_INSTALL_STAGING_PC\n\nLIBMAD_CONF_OPTS = \\\n\t--disable-debugging \\\n\t$(if $(BR2_PACKAGE_LIBMAD_OPTIMIZATION_SPEED),--enable-speed) \\\n\t$(if $(BR2_PACKAGE_LIBMAD_OPTIMIZATION_ACCURACY),--enable-accuracy) \\\n\t--$(if $(BR2_PACKAGE_LIBMAD_SSO),enable,disable)-sso \\\n\t--$(if $(BR2_PACKAGE_LIBMAD_ASO),enable,disable)-aso \\\n\t--$(if $(BR2_PACKAGE_LIBMAD_STRICT_ISO),enable,disable)-strict-iso\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmad/mad.pc",
    "content": "prefix=/usr\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: mad\nDescription: MPEG Audio Decoder\nRequires:\nVersion: 0.15.1b\nLibs: -L${libdir} -lmad\nCflags: -I${includedir}\n"
  },
  {
    "path": "package/libmatroska/Config.in",
    "content": "config BR2_PACKAGE_LIBMATROSKA\n\tbool \"libmatroska\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_LIBEBML\n\thelp\n\t  Extensible open standard audio/video container format access\n\t  library.\n\n\t  http://matroska.org\n\ncomment \"libmatroska needs a toolchain w/ C++, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/libmatroska/libmatroska.hash",
    "content": "# Locally calculated\nsha256  daf91a63f58dd157ca340c457871e66260cb9c3333fefb008b318befbb0e081a  libmatroska-1.6.3.tar.xz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSE.LGPL\n"
  },
  {
    "path": "package/libmatroska/libmatroska.mk",
    "content": "################################################################################\n#\n# libmatroska\n#\n################################################################################\n\nLIBMATROSKA_VERSION = 1.6.3\nLIBMATROSKA_SOURCE = libmatroska-$(LIBMATROSKA_VERSION).tar.xz\nLIBMATROSKA_SITE = http://dl.matroska.org/downloads/libmatroska\nLIBMATROSKA_INSTALL_STAGING = YES\nLIBMATROSKA_LICENSE = LGPL-2.1+\nLIBMATROSKA_LICENSE_FILES = LICENSE.LGPL\nLIBMATROSKA_CPE_ID_VENDOR = matroska\nLIBMATROSKA_DEPENDENCIES = libebml host-pkgconf\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libmaxminddb/Config.in",
    "content": "config BR2_PACKAGE_LIBMAXMINDDB\n\tbool \"libmaxminddb\"\n\thelp\n\t  C library for the MaxMind DB file format\n\n\t  The libmaxminddb library provides a C library for reading\n\t  MaxMind DB files, including the GeoIP2 databases from\n\t  MaxMind.  This is a custom binary format designed to\n\t  facilitate fast lookups of IP addresses while allowing for\n\t  great flexibility in the type of data associated with an\n\t  address.\n\n\t  The MaxMind DB format is an open format. The spec is\n\t  available at http://maxmind.github.io/MaxMind-DB/. This spec\n\t  is licensed under the Creative Commons\n\t  Attribution-ShareAlike 3.0 Unported License.\n\n\t  http://maxmind.github.io/libmaxminddb\n"
  },
  {
    "path": "package/libmaxminddb/libmaxminddb.hash",
    "content": "# Locally computed:\nsha256  7620ac187c591ce21bcd7bf352376a3c56a933e684558a1f6bef4bd4f3f98267  libmaxminddb-1.6.0.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/libmaxminddb/libmaxminddb.mk",
    "content": "################################################################################\n#\n# libmaxminddb\n#\n################################################################################\n\nLIBMAXMINDDB_VERSION = 1.6.0\nLIBMAXMINDDB_SITE = \\\n\thttps://github.com/maxmind/libmaxminddb/releases/download/$(LIBMAXMINDDB_VERSION)\nLIBMAXMINDDB_INSTALL_STAGING = YES\nLIBMAXMINDDB_LICENSE = Apache-2.0\nLIBMAXMINDDB_LICENSE_FILES = LICENSE\nLIBMAXMINDDB_CPE_ID_VENDOR = maxmind\nLIBMAXMINDDB_CONF_OPTS = --disable-tests\n\n# mmdblookup binary depends on pthreads\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nLIBMAXMINDDB_CONF_OPTS += --enable-binaries\nelse\nLIBMAXMINDDB_CONF_OPTS += --disable-binaries\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmbim/0001-src-libmbim-glib-meson.build-fix-static-build.patch",
    "content": "From ff1f9d7c9bc163de3117383b7cea9cd99585462a Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 31 Jul 2021 23:42:35 +0200\nSubject: [PATCH] src/libmbim-glib/meson.build: fix static build\n\nReplace shared_library by library to fix static build failure with\ntoolchains that don't support dynamic library\n\nFixes:\n - http://autobuild.buildroot.org/results/8553211d87a2c41d8b47b51bbb193736fce49714\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.freedesktop.org/mobile-broadband/libmbim/-/merge_requests/83]\n---\n src/libmbim-glib/meson.build | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/libmbim-glib/meson.build b/src/libmbim-glib/meson.build\nindex e3337db..5de3564 100644\n--- a/src/libmbim-glib/meson.build\n+++ b/src/libmbim-glib/meson.build\n@@ -76,7 +76,7 @@ version_header = configure_file(\n \n symbol_map = join_paths(meson.current_source_dir(), 'symbol.map')\n \n-libmbim_glib = shared_library(\n+libmbim_glib = library(\n   libname,\n   version: mbim_glib_version,\n   sources: version_header,\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/libmbim/Config.in",
    "content": "config BR2_PACKAGE_LIBMBIM\n\tbool \"libmbim\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  libmbim is a glib-based library for talking to WWAN modems and\n\t  devices which speak the Mobile Interface Broadband Model\n\t  (MBIM) protocol.\n\n\t  http://www.freedesktop.org/wiki/Software/libmbim/\n\ncomment \"libmbim needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libmbim/libmbim.hash",
    "content": "# Locally computed\nsha256  63b53db0196dadea673f04524b0683ce40282f25bfd513d398e2a10b992cac01  libmbim-1.26.0.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\n"
  },
  {
    "path": "package/libmbim/libmbim.mk",
    "content": "################################################################################\n#\n# libmbim\n#\n################################################################################\n\nLIBMBIM_VERSION = 1.26.0\nLIBMBIM_SITE = https://gitlab.freedesktop.org/mobile-broadband/libmbim/-/archive/$(LIBMBIM_VERSION)\nLIBMBIM_LICENSE = LGPL-2.0+ (library), GPL-2.0+ (programs)\nLIBMBIM_LICENSE_FILES = COPYING COPYING.LIB\nLIBMBIM_CPE_ID_VENDOR = freedesktop\nLIBMBIM_INSTALL_STAGING = YES\n\nLIBMBIM_DEPENDENCIES = libglib2\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBMBIM_DEPENDENCIES += gobject-introspection\nLIBMBIM_CONF_OPTS += -Dintrospection=true\nelse\nLIBMBIM_CONF_OPTS += -Dintrospection=false\nendif\n\nifeq ($(BR2_PACKAGE_BASH_COMPLETION),y)\nLIBMBIM_DEPENDENCIES += bash-completion\nLIBMBIM_CONF_OPTS += -Dbash_completion=true\nelse\nLIBMBIM_CONF_OPTS += -Dbash_completion=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libmbus/Config.in",
    "content": "config BR2_PACKAGE_LIBMBUS\n\tbool \"libmbus\"\n\thelp\n\t  libmbus is a library for communicating with energy metering\n\t  devices. It supports TCP and RS232 M-bus gateways.\n\t  (M-bus standard: http://www.m-bus.com/)\n\n\t  http://www.rscada.se/libmbus/\n"
  },
  {
    "path": "package/libmbus/libmbus.hash",
    "content": "# Locally calculated\nsha256\t9fca42592da0ba75df66c6f885a4dbfa916d23e65e3d1ce6e38d940d2a2719a4\tlibmbus-0.8.0.tar.gz\nsha256\tea171a4ae443eca7186f564db2c3cc8b84c1ac343f227f92cd52ec6a948f4a74\tCOPYING\n"
  },
  {
    "path": "package/libmbus/libmbus.mk",
    "content": "################################################################################\n#\n# libmbus\n#\n################################################################################\n\nLIBMBUS_VERSION = 0.8.0\nLIBMBUS_SITE = http://www.rscada.se/public-dist\nLIBMBUS_INSTALL_STAGING = YES\nLIBMBUS_LICENSE = BSD-3-Clause\nLIBMBUS_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmdbx/Config.in",
    "content": "config BR2_PACKAGE_LIBMDBX\n\tbool \"libmdbx\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4\n\thelp\n\t  One of the fastest compact key-value ACID database\n\t  without WAL. libmdbx has a specific set of properties\n\t  and capabilities, focused on creating unique lightweight\n\t  solutions.\n\n\t  libmdbx surpasses the legendary LMDB in terms of\n\t  reliability, features and performance.\n\n\t  https://github.com/erthink/libmdbx\n\nif BR2_PACKAGE_LIBMDBX\n\nconfig BR2_PACKAGE_LIBMDBX_TOOLS\n\tbool \"install tools\"\n\thelp\n\t  Install libmdbx tools for checking, dump, restore\n\t  and show statistics of databases.\n\nconfig BR2_PACKAGE_LIBMDBX_CXX\n\tbool \"C++ API\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\thelp\n\t  Enable modern C++11/14/17/20 API for libmdbx.\n\ncomment \"libmdbx C++ support needs a toolchain w/ C++11, gcc >= 4.8 w/o bug#64735\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \\\n\t\tBR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nendif\n\ncomment \"libmdbx needs MMU, a toolchain w/ threads, gcc >= 4.4 w/ 4-byte atomics\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_HAS_SYNC_4 || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_4\n"
  },
  {
    "path": "package/libmdbx/libmdbx.hash",
    "content": "# Hashes from: https://github.com/erthink/libmdbx/releases/\nsha256  a8f2436c4d008886e044f568a22bda44329fb1c67f175d91a929ff8e2065340a  libmdbx-amalgamated-0.10.3.tar.gz\n\n# Locally calculated\nsha256  310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569  LICENSE\n"
  },
  {
    "path": "package/libmdbx/libmdbx.mk",
    "content": "################################################################################\n#\n# libmdbx\n#\n################################################################################\n\nLIBMDBX_VERSION = 0.10.3\nLIBMDBX_SOURCE = libmdbx-amalgamated-$(LIBMDBX_VERSION).tar.gz\nLIBMDBX_SITE = https://github.com/erthink/libmdbx/releases/download/v$(LIBMDBX_VERSION)\nLIBMDBX_SUPPORTS_IN_SOURCE_BUILD = NO\nLIBMDBX_LICENSE = OLDAP-2.8\nLIBMDBX_LICENSE_FILES = LICENSE\nLIBMDBX_REDISTRIBUTE = YES\nLIBMDBX_STRIP_COMPONENTS = 0\nLIBMDBX_INSTALL_STAGING = YES\n\n# Set CMAKE_BUILD_TYPE to Release to remove -Werror and avoid a build failure\n# with glibc < 2.12\nLIBMDBX_CONF_OPTS = \\\n\t-DCMAKE_BUILD_TYPE=Release \\\n\t-DMDBX_INSTALL_MANPAGES=OFF \\\n\t-DBUILD_FOR_NATIVE_CPU=OFF \\\n\t-DMDBX_BUILD_CXX=$(if $(BR2_PACKAGE_LIBMDBX_CXX),ON,OFF) \\\n\t-DMDBX_BUILD_TOOLS=$(if $(BR2_PACKAGE_LIBMDBX_TOOLS),ON,OFF)\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nLIBMDBX_CONF_OPTS += -DMDBX_INSTALL_STATIC=ON\nelse\nLIBMDBX_CONF_OPTS += -DMDBX_INSTALL_STATIC=OFF\nendif\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nLIBMDBX_CONF_OPTS += \\\n\t-DMDBX_BUILD_SHARED_LIBRARY=ON \\\n\t-DMDBX_LINK_TOOLS_NONSTATIC=ON\nelse\nLIBMDBX_CONF_OPTS += \\\n\t-DMDBX_BUILD_SHARED_LIBRARY=OFF \\\n\t-DMDBX_LINK_TOOLS_NONSTATIC=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libmediaart/Config.in",
    "content": "comment \"libmediaart needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_LIBMEDIAART\n\tbool \"libmediaart\"\n\tdepends on BR2_USE_MMU # glib2\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Library tasked with managing, extracting and handling media\n\t  art caches\n\n\t  https://github.com/GNOME/libmediaart\n\nif BR2_PACKAGE_LIBMEDIAART\n\nchoice\n\tprompt \"media art backend\"\n\tdefault BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE\n\nconfig BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE\n\tbool \"none\"\n\thelp\n\t  With no backend, libmediaart will not be able to process MP3\n\t  album art.\n\nconfig BR2_PACKAGE_LIBMEDIAART_BACKEND_GDK_PIXBUF\n\tbool \"gdk-pixbuf\"\n\tselect BR2_PACKAGE_GDK_PIXBUF\n\nconfig BR2_PACKAGE_LIBMEDIAART_BACKEND_QT\n\tbool \"Qt\"\n\tdepends on BR2_PACKAGE_QT5\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\ncomment \"Qt backend depends on Qt5\"\n\tdepends on !BR2_PACKAGE_QT5\n\nendchoice\n\nendif # BR2_PACKAGE_LIBMEDIAART\n"
  },
  {
    "path": "package/libmediaart/libmediaart.hash",
    "content": "# Hash from: http://ftp.gnome.org/pub/gnome/sources/libmediaart/1.9/libmediaart-1.9.4.sha256sum:\nsha256\ta57be017257e4815389afe4f58fdacb6a50e74fd185452b23a652ee56b04813d\tlibmediaart-1.9.4.tar.xz\n\n# Locally computed:\nsha256\tdc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\tCOPYING.LESSER\n"
  },
  {
    "path": "package/libmediaart/libmediaart.mk",
    "content": "################################################################################\n#\n# libmediaart\n#\n################################################################################\n\nLIBMEDIAART_VERSION_MAJOR = 1.9\nLIBMEDIAART_VERSION = $(LIBMEDIAART_VERSION_MAJOR).4\nLIBMEDIAART_SOURCE = libmediaart-$(LIBMEDIAART_VERSION).tar.xz\nLIBMEDIAART_SITE = \\\n\thttp://ftp.gnome.org/pub/gnome/sources/libmediaart/$(LIBMEDIAART_VERSION_MAJOR)\nLIBMEDIAART_LICENSE = LGPL-2.1+\nLIBMEDIAART_LICENSE_FILES = COPYING.LESSER\nLIBMEDIAART_INSTALL_STAGING = YES\nLIBMEDIAART_DEPENDENCIES = libglib2\nLIBMEDIAART_CONF_OPTS = --disable-unit-tests\n\nifeq ($(BR2_PACKAGE_LIBMEDIAART_BACKEND_GDK_PIXBUF),y)\nLIBMEDIAART_DEPENDENCIES += gdk-pixbuf\nLIBMEDIAART_CONF_OPTS += \\\n\t--enable-gdkpixbuf \\\n\t--disable-qt\nelse ifeq ($(BR2_PACKAGE_LIBMEDIAART_BACKEND_QT),y)\n# qt5 needs c++11 (since qt-5.7)\nLIBMEDIAART_CONF_ENV += CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\nLIBMEDIAART_DEPENDENCIES += qt5base\nLIBMEDIAART_CONF_OPTS += \\\n\t--disable-gdkpixbuf \\\n\t--enable-qt\nelse ifeq ($(BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE),y)\nLIBMEDIAART_CONF_OPTS += \\\n\t--disable-gdkpixbuf \\\n\t--disable-qt\nendif\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBMEDIAART_CONF_OPTS += --enable-introspection\nLIBMEDIAART_DEPENDENCIES += gobject-introspection\nelse\nLIBMEDIAART_CONF_OPTS += --disable-introspection\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmemcached/0001-disable-tests.patch",
    "content": "Disable the tests, cuts build time by half and avoids build issues\nwith extra dependencies.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura libmemcached-1.0.18.orig/Makefile.am libmemcached-1.0.18/Makefile.am\n--- libmemcached-1.0.18.orig/Makefile.am\t2014-07-19 09:24:45.246418899 -0300\n+++ libmemcached-1.0.18/Makefile.am\t2014-07-19 09:25:12.701349345 -0300\n@@ -1,6 +1,6 @@\n # vim:ft=automake\n \n-ACLOCAL_AMFLAGS= -I m4 -I libtest/m4\n+ACLOCAL_AMFLAGS= -I m4\n AM_YFLAGS= -d\n \n # includes append to these:\n@@ -45,8 +45,6 @@\n include libmemcached-1.0/include.am\n else\n \n-include libtest/include.am\n-\n include libhashkit-1.0/include.am\n include libmemcached-1.0/include.am\n \n@@ -76,7 +74,6 @@\n include libmemcachedinternal/util/include.am\n include rpm/include.mk\n include support/include.am\n-include tests/include.am\n include util/include.am\n include win32/include.am\n \n@@ -103,7 +100,7 @@\n \t@echo \"Files that need to be either removed or checked in:\"\n \t@bzr unknowns\n \n-clean-local: clean-libtest-check clean-docs-check clean-rpm\n+clean-local: clean-docs-check clean-rpm\n \n \n lcov: lcov-clean check\n"
  },
  {
    "path": "package/libmemcached/0002-disable-sanitizer.patch",
    "content": "Disable sanitizer checks, they're busted.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura libmemcached-1.0.18.orig/m4/ax_harden_compiler_flags.m4 libmemcached-1.0.18/m4/ax_harden_compiler_flags.m4\n--- libmemcached-1.0.18.orig/m4/ax_harden_compiler_flags.m4\t2014-11-13 08:07:09.011614311 -0300\n+++ libmemcached-1.0.18/m4/ax_harden_compiler_flags.m4\t2014-11-13 08:07:52.406092440 -0300\n@@ -222,8 +222,6 @@\n #         GCC 4.5 removed this.\n #         _APPEND_COMPILE_FLAGS_ERROR([-Wunreachable-code])\n \n-          _SET_SANITIZE_FLAGS\n-\n           AS_IF([test \"x$ax_enable_debug\" = xno],\n             [AS_IF([test \"x$ac_cv_vcs_checkout\" = xyes],\n               [AS_IF([test \"x${host_os}\" != \"xmingw\"],\n@@ -337,8 +335,6 @@\n                 _APPEND_COMPILE_FLAGS_ERROR([-fstack-protector-all])\n                 ])])])])\n \n-          _SET_SANITIZE_FLAGS\n-\n           AS_IF([test \"x$ac_cv_warnings_as_errors\" = xyes],\n                 [AX_APPEND_FLAG([-Werror])])\n           AC_LANG_POP([C++])\n"
  },
  {
    "path": "package/libmemcached/0003-move-ac_config_aux_dir.patch",
    "content": "Move AC_CONFIG_AUX_DIR up a few lines so the autotools can find it\n\nThis patch is based on the same solution adopted by Debian:\n\n  https://lists.debian.org/debian-release/2014/11/msg01231.html\n\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n\ndiff -rup a/configure.ac b/configure.ac\n--- a/configure.ac\t2014-02-09 11:52:42.000000000 +0000\n+++ b/configure.ac\t2015-01-06 15:07:10.003074775 +0000\n@@ -13,11 +13,12 @@ m4_include([version.m4])\n AC_PREREQ([2.61])\n AC_INIT([libmemcached],VERSION_NUMBER,[http://libmemcached.org/])\n \n+AC_CONFIG_AUX_DIR([build-aux])\n+\n # Setup the compilers early on\n AC_PROG_CC([cc gcc clang])\n AC_PROG_CXX([c++ g++ clang++])\n \n-AC_CONFIG_AUX_DIR([build-aux])\n AC_CONFIG_MACRO_DIR([m4])\n \n AC_CANONICAL_HOST\n"
  },
  {
    "path": "package/libmemcached/0004-disable-doc-and-man.patch",
    "content": "From 6c01bd3562cc18fbafdf950bbeb73a399c1adcdd Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Tue, 12 May 2015 00:00:02 +0200\nSubject: [PATCH] disable doc and man\n\nWARNING: master file /home/naourr/git/buildroot/test/libmemcached-bfin/build/libmemcached-1.0.18/docs/index.rst not found\n\nException occurred:\n  File \"/usr/lib/python2.7/site-packages/sphinx/environment.py\", line 1213, in get_doctree\n    f = open(doctree_filename, 'rb')\nIOError: [Errno 2] No such file or directory: '/home/naourr/buildroot-test/test/libmemcached-bfin/build/libmemcached-1.0.18/man/.doctrees/hashkit_create.doctree'\nThe full traceback has been saved in /tmp/sphinx-err-JCIsnB.log, if you want to report the issue to the developers.\nPlease also report this if it was a user error, so that a better error message can be provided next time.\nEither send bugs to the mailing list at <http://groups.google.com/group/sphinx-dev/>,\nor report them in the tracker at <http://bitbucket.org/birkenfeld/sphinx/issues/>. Thanks!\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n Makefile.am | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 7f44102..cb7d058 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -55,8 +55,6 @@ endif\n include libmemcachedutil-1.0/include.am\n \n include clients/include.am\n-include docs/include.am\n-include man/include.am\n \n if BUILD_LIBMEMCACHED_PROTOCOL\n include example/include.am\n-- \n1.9.3\n\n"
  },
  {
    "path": "package/libmemcached/0005-fix-pointer-comparaison.patch",
    "content": "Fix pointer comparaison\n\nopt_servers is a pointer, not a boolean, so testing against false to\nknow if the pointer is NULL no longer works with the more strict gcc\n7.x checks.\n\n[Taken from http://pkgs.fedoraproject.org/cgit/rpms/libmemcached.git/plain/libmemcached-build.patch.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\ndiff -up ./clients/memflush.cc.old ./clients/memflush.cc\n--- ./clients/memflush.cc.old\t2017-02-12 10:12:59.615209225 +0100\n+++ ./clients/memflush.cc\t2017-02-12 10:13:39.998382783 +0100\n@@ -39,7 +39,7 @@ int main(int argc, char *argv[])\n {\n   options_parse(argc, argv);\n \n-  if (opt_servers == false)\n+  if (!opt_servers)\n   {\n     char *temp;\n \n@@ -48,7 +48,7 @@ int main(int argc, char *argv[])\n       opt_servers= strdup(temp);\n     }\n \n-    if (opt_servers == false)\n+    if (!opt_servers)\n     {\n       std::cerr << \"No Servers provided\" << std::endl;\n       exit(EXIT_FAILURE);\n"
  },
  {
    "path": "package/libmemcached/Config.in",
    "content": "config BR2_PACKAGE_LIBMEMCACHED\n\tbool \"libmemcached\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  libMemcached is an open source C/C++ client library and tools\n\t  for the memcached server.\n\t  It has been designed to be light on memory usage, thread safe,\n\t  and provide full access to server side methods.\n\n\t  http://libmemcached.org/libMemcached.html\n\ncomment \"libmemcached needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libmemcached/libmemcached.hash",
    "content": "# From https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz/+md5\nmd5\tb3958716b4e53ddc5992e6c49d97e819\tlibmemcached-1.0.18.tar.gz\n\n# Hash for license file:\nsha256\t4e9032d0f539276db05519ee3d09ca6167d2134ec91c556e8c80ef3efe633fd2\tCOPYING\n"
  },
  {
    "path": "package/libmemcached/libmemcached.mk",
    "content": "################################################################################\n#\n# libmemcached\n#\n################################################################################\n\nLIBMEMCACHED_VERSION_MAJOR = 1.0\nLIBMEMCACHED_VERSION = $(LIBMEMCACHED_VERSION_MAJOR).18\nLIBMEMCACHED_SITE = http://launchpad.net/libmemcached/$(LIBMEMCACHED_VERSION_MAJOR)/$(LIBMEMCACHED_VERSION)/+download\nLIBMEMCACHED_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' \\\n\tax_cv_check_cflags__Werror__fmudflapth=no \\\n\tax_cv_check_cxxflags__Werror__fmudflapth=no\nLIBMEMCACHED_CONF_OPTS = --disable-dtrace\nLIBMEMCACHED_INSTALL_STAGING = YES\nLIBMEMCACHED_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBEVENT),libevent)\n# For 0001-disable-tests.patch and 0002-disable-sanitizer.patch\nLIBMEMCACHED_AUTORECONF = YES\nLIBMEMCACHED_LICENSE = BSD-3-Clause\nLIBMEMCACHED_LICENSE_FILES = COPYING\n\nifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),)\nLIBMEMCACHED_CONF_ENV += \\\n\tax_cv_check_cflags__Werror__fPIE=no \\\n\tax_cv_check_cflags__Werror__pie=no \\\n\tax_cv_check_cxxflags__Werror__fPIE=no \\\n\tax_cv_check_cxxflags__Werror__pie=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmhash/Config.in",
    "content": "config BR2_PACKAGE_LIBMHASH\n\tbool \"libmhash\"\n\thelp\n\t  Mhash is a free (under GNU Lesser GPL) library which provides\n\t  a uniform interface to a large number of hash algorithms.\n\t  These algorithms can be used to compute checksums, message\n\t  digests, and other signatures.\n\n\t  http://mhash.sourceforge.net/\n"
  },
  {
    "path": "package/libmhash/libmhash.hash",
    "content": "# Locally computed:\nsha256  56521c52a9033779154432d0ae47ad7198914785265e1f570cee21ab248dfef0  mhash-0.9.9.9.tar.bz2\nsha256  d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5  COPYING\n"
  },
  {
    "path": "package/libmhash/libmhash.mk",
    "content": "################################################################################\n#\n# libmhash\n#\n################################################################################\n\nLIBMHASH_VERSION = 0.9.9.9\nLIBMHASH_SITE = http://downloads.sourceforge.net/project/mhash/mhash/$(LIBMHASH_VERSION)\nLIBMHASH_SOURCE = mhash-$(LIBMHASH_VERSION).tar.bz2\nLIBMHASH_INSTALL_STAGING = YES\nLIBMHASH_LICENSE = LGPL-2.0\nLIBMHASH_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmicrohttpd/Config.in",
    "content": "config BR2_PACKAGE_LIBMICROHTTPD\n\tbool \"libmicrohttpd\"\n\thelp\n\t  GNU libmicrohttpd is a small C library that makes it easy to\n\t  run an HTTP server as part of another application.\n\n\t  http://www.gnu.org/software/libmicrohttpd/\n\nif BR2_PACKAGE_LIBMICROHTTPD\n\nconfig BR2_PACKAGE_LIBMICROHTTPD_SSL\n\tbool \"https support\"\n\tdepends on !BR2_STATIC_LIBS # gnutls\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_GNUTLS\n\thelp\n\t  Enable HTTPS (SSL) support.\n\ncomment \"libmicrohttpd https support needs a toolchain w/ wchar, dynamic library\"\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS\n\nendif\n"
  },
  {
    "path": "package/libmicrohttpd/libmicrohttpd.hash",
    "content": "# Locally calculated\nsha256  a37b2f1b88fd1bfe74109586be463a434d34e773530fc2a74364cfcf734c032e  libmicrohttpd-0.9.73.tar.gz\nsha256  7399547209438c93f9b90297954698773d4846cea44cde5ca982c84c45952a3b  COPYING\n"
  },
  {
    "path": "package/libmicrohttpd/libmicrohttpd.mk",
    "content": "################################################################################\n#\n# libmicrohttpd\n#\n################################################################################\n\nLIBMICROHTTPD_VERSION = 0.9.73\nLIBMICROHTTPD_SITE = $(BR2_GNU_MIRROR)/libmicrohttpd\nLIBMICROHTTPD_LICENSE_FILES = COPYING\nLIBMICROHTTPD_CPE_ID_VENDOR = gnu\nLIBMICROHTTPD_INSTALL_STAGING = YES\nLIBMICROHTTPD_CONF_OPTS = --disable-curl --disable-examples\nLIBMICROHTTPD_CFLAGS = $(TARGET_CFLAGS) -std=c99\n\nLIBMICROHTTPD_CONF_ENV += CFLAGS=\"$(LIBMICROHTTPD_CFLAGS)\"\n\nifeq ($(BR2_PACKAGE_LIBMICROHTTPD_SSL),y)\nLIBMICROHTTPD_LICENSE = LGPL-2.1+\nLIBMICROHTTPD_DEPENDENCIES += host-pkgconf gnutls\nLIBMICROHTTPD_CONF_OPTS += --enable-https --with-gnutls=$(STAGING_DIR)/usr\nelse\nLIBMICROHTTPD_LICENSE = LGPL-2.1+ or eCos\nLIBMICROHTTPD_CONF_OPTS += --disable-https\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nLIBMICROHTTPD_CONF_OPTS += --with-threads=auto\nelse\nLIBMICROHTTPD_CONF_OPTS += --with-threads=none\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libminiupnpc/Config.in",
    "content": "config BR2_PACKAGE_LIBMINIUPNPC\n\tbool \"libminiupnpc\"\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  The UPnP protocol is supported by most home adsl/cable routers\n\t  and Microsoft Windows 2K/XP. The aim of the MiniUPnP project\n\t  is to bring a free software solution to support the \"Internet\n\t  Gateway Device\" part of the protocol.\n\n\t  Miniupnpc aims at the simplest library possible, with the\n\t  smallest footprint and no dependencies to other libraries such\n\t  as XML parsers or HTTP implementations. All the code is pure\n\t  ANSI C.\n\n\t  http://miniupnp.free.fr\n\ncomment \"libminiupnpc needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\tdepends on !BR2_BINFMT_FLAT\n"
  },
  {
    "path": "package/libminiupnpc/libminiupnpc.hash",
    "content": "# Locally computed\nsha256  69f72fe355f911b807915f78dcfc0af772c0f22bc7ab1157e70f334e37db7d39  miniupnpc-2.1.20201016.tar.gz\nsha256  0b476c395af6dd21eeb54c40a21d22e1c11a751fbd2dd17a41ce26e370be88d5  LICENSE\n"
  },
  {
    "path": "package/libminiupnpc/libminiupnpc.mk",
    "content": "################################################################################\n#\n# libminiupnpc\n#\n################################################################################\n\nLIBMINIUPNPC_VERSION_MAJOR = 2.1\nLIBMINIUPNPC_VERSION_MINOR = 20201016\nLIBMINIUPNPC_VERSION = $(LIBMINIUPNPC_VERSION_MAJOR).$(LIBMINIUPNPC_VERSION_MINOR)\nLIBMINIUPNPC_SOURCE = miniupnpc-$(LIBMINIUPNPC_VERSION).tar.gz\nLIBMINIUPNPC_SITE = http://miniupnp.free.fr/files\nLIBMINIUPNPC_INSTALL_STAGING = YES\nLIBMINIUPNPC_LICENSE = BSD-3-Clause\nLIBMINIUPNPC_LICENSE_FILES = LICENSE\nLIBMINIUPNPC_CPE_ID_VENDOR = miniupnp_project\nLIBMINIUPNPC_CPE_ID_PRODUCT = miniupnpc\nLIBMINIUPNPC_CPE_ID_VERSION = $(LIBMINIUPNPC_VERSION_MAJOR)\nLIBMINIUPNPC_CPE_ID_UPDATE = $(LIBMINIUPNPC_VERSION_MINOR)\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libmms/Config.in",
    "content": "config BR2_PACKAGE_LIBMMS\n\tbool \"libmms\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  LibMMS is a common library for parsing mms:// and mmsh://\n\t  type network streams. These are commonly used to stream\n\t  Windows Media Video content over the web. LibMMS itself is\n\t  only for receiving MMS stream, it doesn't handle sending at\n\t  all.\n\n\t  http://launchpad.net/libmms\n\ncomment \"libmms needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libmms/libmms.hash",
    "content": "# Locally computed:\nsha256  3c05e05aebcbfcc044d9e8c2d4646cd8359be39a3f0ba8ce4e72a9094bee704f  libmms-0.6.4.tar.gz\nsha256  d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f  COPYING.LIB\n"
  },
  {
    "path": "package/libmms/libmms.mk",
    "content": "################################################################################\n#\n# libmms\n#\n################################################################################\n\nLIBMMS_VERSION = 0.6.4\nLIBMMS_SITE = http://downloads.sourceforge.net/project/libmms/libmms/$(LIBMMS_VERSION)\nLIBMMS_INSTALL_STAGING = YES\nLIBMMS_DEPENDENCIES = host-pkgconf libglib2\nLIBMMS_LICENSE = LGPL-2.1+\nLIBMMS_LICENSE_FILES = COPYING.LIB\nLIBMMS_CPE_ID_VENDOR = libmms_project\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmng/0001-jpeg-9a.patch",
    "content": "Adaptation from gentoo patch for libmng 2.0.3\nSee https://bugs.gentoo.org/show_bug.cgi?id=520906\n\nSigned-off-by: Gustavo Zacarias <gustavo.zacarias@free-electrons.com>\n\ndiff -Nura libmng-2.0.3.orig/libmng_types.h libmng-2.0.3/libmng_types.h\n--- libmng-2.0.3.orig/libmng_types.h\t2015-09-24 10:32:05.500984924 -0300\n+++ libmng-2.0.3/libmng_types.h\t2015-09-24 10:33:11.145254771 -0300\n@@ -200,13 +200,6 @@\n #undef FAR                             /* possibly defined by zlib or lcms */\n #endif\n #define JPEG_INTERNAL_OPTIONS          /* for RGB_PIXELSIZE */\n-/* There has been a change in jpeg-9 : */\n-#if !defined(HAVE_BOOLEAN) && !defined(_WIN32)\n-#define HAVE_BOOLEAN\n-#endif\n-#ifndef _WIN32\n-typedef int boolean;\n-#endif\n /* For jpegsrc.v09a: */\n #include <stdio.h>\n #include <jpeglib.h>\n"
  },
  {
    "path": "package/libmng/Config.in",
    "content": "config BR2_PACKAGE_LIBMNG\n\tbool \"libmng\"\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  The reference library for reading, displaying, writing and\n\t  examining Multiple-Image Network Graphics.\n\n\t  http://sourceforge.net/projects/libmng/\n"
  },
  {
    "path": "package/libmng/libmng.hash",
    "content": "# From http://sourceforge.net/projects/libmng/files/libmng-devel/2.0.3/\nmd5\te9e899adb1b681b17f14d91e261878c5\tlibmng-2.0.3.tar.xz\nsha1\t0f141482ffcef6f8cd4413f945a59310ac2e49af\tlibmng-2.0.3.tar.xz\n\n# Hash for license file:\nsha256\tba280734838eb3f22a85b92a7e62de357d4d4c325029dce723b0cb125c417c35\tLICENSE\n"
  },
  {
    "path": "package/libmng/libmng.mk",
    "content": "################################################################################\n#\n# libmng\n#\n################################################################################\n\nLIBMNG_VERSION = 2.0.3\nLIBMNG_SITE = http://downloads.sourceforge.net/project/libmng/libmng-devel/$(LIBMNG_VERSION)\nLIBMNG_SOURCE = libmng-$(LIBMNG_VERSION).tar.xz\nLIBMNG_DEPENDENCIES = jpeg zlib\nLIBMNG_CONF_OPTS = --without-lcms\nLIBMNG_INSTALL_STAGING = YES\nLIBMNG_LICENSE = libmng license\nLIBMNG_LICENSE_FILES = LICENSE\n\nifeq ($(BR2_PACKAGE_LCMS2),y)\nLIBMNG_DEPDENDENCIES += lcms2\nelse\nLIBMNG_CONF_OPTS += --without-lcms2\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmnl/Config.in",
    "content": "config BR2_PACKAGE_LIBMNL\n\tbool \"libmnl\"\n\thelp\n\t  libmnl is a minimalistic user-space library oriented\n\t  to Netlink developers.\n\n\t  http://netfilter.org/projects/libmnl/\n"
  },
  {
    "path": "package/libmnl/libmnl.hash",
    "content": "# From ftp://ftp.netfilter.org/pub/libmnl/libmnl-1.0.4.tar.bz2.{md5sum,sha1sum}\nmd5\tbe9b4b5328c6da1bda565ac5dffadb2d\tlibmnl-1.0.4.tar.bz2\nsha1\t2db40dea612e88c62fd321906be40ab5f8f1685a\tlibmnl-1.0.4.tar.bz2\n\n# Hash for license file:\nsha256\tdc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\tCOPYING\n"
  },
  {
    "path": "package/libmnl/libmnl.mk",
    "content": "################################################################################\n#\n# libmnl\n#\n################################################################################\n\nLIBMNL_VERSION = 1.0.4\nLIBMNL_SOURCE = libmnl-$(LIBMNL_VERSION).tar.bz2\nLIBMNL_SITE = http://netfilter.org/projects/libmnl/files\nLIBMNL_INSTALL_STAGING = YES\nLIBMNL_LICENSE = LGPL-2.1+\nLIBMNL_LICENSE_FILES = COPYING\nLIBMNL_CPE_ID_VENDOR = netfilter\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmodbus/Config.in",
    "content": "config BR2_PACKAGE_LIBMODBUS\n\tbool \"libmodbus\"\n\thelp\n\t  libmodbus is a free software library to send/receive data\n\t  according to the Modbus protocol. This library is written in C\n\t  and supports RTU (serial) and TCP (Ethernet) communications.\n\n\t  http://libmodbus.org\n"
  },
  {
    "path": "package/libmodbus/libmodbus.hash",
    "content": "# Locally computed\nsha256  d7d9fa94a16edb094e5fdf5d87ae17a0dc3f3e3d687fead81835d9572cf87c16  libmodbus-3.1.6.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LESSER\n"
  },
  {
    "path": "package/libmodbus/libmodbus.mk",
    "content": "################################################################################\n#\n# libmodbus\n#\n################################################################################\n\nLIBMODBUS_VERSION = 3.1.6\nLIBMODBUS_SITE = http://libmodbus.org/releases\nLIBMODBUS_LICENSE = LGPL-2.1+\nLIBMODBUS_LICENSE_FILES = COPYING.LESSER\nLIBMODBUS_CPE_ID_VENDOR = libmodbus\nLIBMODBUS_INSTALL_STAGING = YES\nLIBMODBUS_CONF_OPTS = --without-documentation --disable-tests\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmodplug/Config.in",
    "content": "config BR2_PACKAGE_LIBMODPLUG\n\tbool \"libmodplug\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  MOD music file decoder\n\n\t  http://modplug-xmms.sourceforge.net/\n\ncomment \"libmodplug needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/libmodplug/libmodplug.hash",
    "content": "# Locally computed:\nsha256  457ca5a6c179656d66c01505c0d95fafaead4329b9dbaa0f997d00a3508ad9de  libmodplug-0.8.9.0.tar.gz\nsha256  49942e7b3b175f549e751feb08b5270ca6f6c5fb7a1be9f9517db275ec32c92e  COPYING\n"
  },
  {
    "path": "package/libmodplug/libmodplug.mk",
    "content": "################################################################################\n#\n# libmodplug\n#\n################################################################################\n\nLIBMODPLUG_VERSION = 0.8.9.0\nLIBMODPLUG_SITE = http://downloads.sourceforge.net/project/modplug-xmms/libmodplug/$(LIBMODPLUG_VERSION)\nLIBMODPLUG_INSTALL_STAGING = YES\nLIBMODPLUG_LICENSE = Public Domain\nLIBMODPLUG_LICENSE_FILES = COPYING\nLIBMODPLUG_CPE_ID_VENDOR = konstanty_bialkowski\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmodsecurity/0001-configure.ac-drop-usage-of-git-at-configure-time.patch",
    "content": "From a2116312068b6b2c5732dfebde19b751cc81d4f3 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Sun, 1 Aug 2021 23:21:35 +0200\nSubject: [PATCH] configure.ac: drop usage of git at configure time\n\nThe usage of git is only to print some messages at configure time,\nwhich is not very useful, and causes a significant number of warning\nwhen regenerating the configure script.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n configure.ac | 23 -----------------------\n 1 file changed, 23 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 20163e1e..14e5892a 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3,7 +3,6 @@\n \n # Get the hash of the last commit, to be used if it is not an\n # official release.\n-AC_DEFUN([MSC_GIT_HASH], m4_esyscmd_s(git log -1 --format=\"%h\" --abbrev-commit))\n AC_DEFUN([MSC_MAJOR], m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep \"define MODSECURITY_MAJOR \" | awk {'print $3'} | sed 's/\\\"//g'))\n AC_DEFUN([MSC_MINOR], m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep \"define MODSECURITY_MINOR \" | awk {'print $3'} | sed 's/\\\"//g'))\n AC_DEFUN([MSC_PATCHLEVEL], m4_esyscmd_s(cat headers/modsecurity/modsecurity.h | grep \"define MODSECURITY_PATCHLEVEL \" | awk {'print $3'} | sed 's/\\\"//g'))\n@@ -25,9 +24,6 @@ m4_define([msc_version],\n m4_define([msc_version_with_patchlevel],\n     [msc_version_major.msc_version_minor.msc_version_patchlevel])\n \n-m4_define([msc_version_git],\n-    [m4_esyscmd_s(git describe)])\n-\n m4_define([msc_version_info],\n     [msc_version_c_plus_a:msc_version_patchlevel:msc_version_minor])\n \n@@ -73,11 +69,6 @@ AC_MSG_ERROR([\\\n \n    ])\n fi\n-# Libinjection version\n-AC_DEFUN([LIBINJECTION_VERSION], m4_esyscmd_s(cd \"others/libinjection\" && git describe && cd ../..))\n-\n-# SecLang test version\n-AC_DEFUN([SECLANG_TEST_VERSION], m4_esyscmd_s(cd \"test/test-cases/secrules-language-tests\" && git log -1 --format=\"%h\" --abbrev-commit && cd ../../..))\n \n \n # Check for yajl\n@@ -217,10 +208,6 @@ AC_SUBST([MSC_VERSION_WITH_PATCHLEVEL])\n MSC_VERSION=msc_version\n AC_SUBST([MSC_VERSION])\n \n-MSC_GIT_VERSION=msc_version_git\n-AC_SUBST([MSC_GIT_VERSION])\n-\n-\n AC_ARG_ENABLE(debug-logs,\n     [AC_HELP_STRING([--disable-debug-logs],[Turn off the SecDebugLog feature])],\n \n@@ -412,16 +399,6 @@ AC_OUTPUT\n \n \n # Print a fancy summary\n-echo \" \"\n-echo \" \"\n-echo \"ModSecurity - ${MSC_GIT_VERSION} for $PLATFORM\"\n-echo \" \"\n-echo \" Mandatory dependencies\"\n-echo -n \"   + libInjection                                  ....\"\n-echo LIBINJECTION_VERSION\n-echo -n \"   + SecLang tests                                 ....\"\n-echo SECLANG_TEST_VERSION\n-\n echo \" \"\n echo \" Optional dependencies\"\n \n-- \n2.31.1\n\n"
  },
  {
    "path": "package/libmodsecurity/0002-modsecurity.pc.in-add-lstdc.patch",
    "content": "From 1a84881b280eb08852d5495c57e44351a40d3f91 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 26 Jul 2021 00:24:57 +0200\nSubject: [PATCH] modsecurity.pc.in: add -lstdc++\n\nAdd -lstdc++ to Libs.Private to avoid the following static build failure\nwith nginx:\n\n/home/buildroot/autobuild/instance-2/output-1/host/lib/gcc/xtensa-buildroot-linux-uclibc/10.3.0/../../../../xtensa-buildroot-linux-uclibc/bin/ld: /home/buildroot/autobuild/instance-2/output-1/host/bin/../xtensa-buildroot-linux-uclibc/sysroot/usr/lib/libmodsecurity.a(libmodsecurity_la-transaction.o): in function `std::basic_streambuf<char, std::char_traits<char> >::sbumpc() [clone .isra.0]':\ntransaction.cc:(.text+0x40): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()'\n\nFixes:\n - http://autobuild.buildroot.org/results/e5a9eb8448980f1c5cafe97180b7d1f48ddf02ca\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n modsecurity.pc.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/modsecurity.pc.in b/modsecurity.pc.in\nindex 96cdf5ca..7c895ddc 100644\n--- a/modsecurity.pc.in\n+++ b/modsecurity.pc.in\n@@ -8,4 +8,4 @@ Description: ModSecurity API\n Version: @MSC_VERSION_WITH_PATCHLEVEL@\n Cflags: -I@includedir@\n Libs: -L@libdir@ -lmodsecurity\n-Libs.private: @CURL_LDADD@ @GEOIP_LDADD@ @MAXMIND_LDADD@ @GLOBAL_LDADD@ @LIBXML2_LDADD@ @LMDB_LDADD@ @LUA_LDADD@ @PCRE_LDADD@ @SSDEEP_LDADD@ @YAJL_LDADD@\n+Libs.private: @CURL_LDADD@ @GEOIP_LDADD@ @MAXMIND_LDADD@ @GLOBAL_LDADD@ @LIBXML2_LDADD@ @LMDB_LDADD@ @LUA_LDADD@ @PCRE_LDADD@ @SSDEEP_LDADD@ @YAJL_LDADD@ -lstdc++\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/libmodsecurity/0003-Revert-Fix-maxminddb-link-on-FreeBSD.patch",
    "content": "From 6737dc133cb4811a000c02b4e0a92b72f0b220ee Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 16 Jul 2021 19:12:51 +0200\nSubject: [PATCH] Revert \"Fix maxminddb link on FreeBSD\"\n\nThis reverts commit 785958f9b5089b918c7d054cbcc2fe4a3c7b3788.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n build/libmaxmind.m4 | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/build/libmaxmind.m4 b/build/libmaxmind.m4\nindex 656fc250..02820b5a 100644\n--- a/build/libmaxmind.m4\n+++ b/build/libmaxmind.m4\n@@ -10,7 +10,7 @@ dnl  MAXMIND_VERSION\n AC_DEFUN([PROG_MAXMIND], [\n \n # Possible names for the maxmind library/package (pkg-config)\n-MAXMIND_POSSIBLE_LIB_NAMES=\"maxminddb maxmind\"\n+MAXMIND_POSSIBLE_LIB_NAMES=\"libmaxminddb maxminddb maxmind\"\n \n # Possible extensions for the library\n MAXMIND_POSSIBLE_EXTENSIONS=\"so la sl dll dylib\"\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/libmodsecurity/Config.in",
    "content": "config BR2_PACKAGE_LIBMODSECURITY\n\tbool \"libmodsecurity\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  Libmodsecurity is one component of the ModSecurity\n\t  v3 project. The library codebase serves as an\n\t  interface to ModSecurity Connectors taking in web\n\t  traffic and applying traditional ModSecurity\n\t  processing. In general, it provides the capability\n\t  to load/interpret rules written in the ModSecurity\n\t  SecRules format and apply them to HTTP content\n\t  provided by your application via Connectors.\n\n\t  https://github.com/SpiderLabs/ModSecurity\n\ncomment \"libmodsecurity needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libmodsecurity/libmodsecurity.hash",
    "content": "# From https://github.com/SpiderLabs/ModSecurity/releases/download/v3.0.6/modsecurity-v3.0.6.tar.gz.sha256\nsha256  06315d9a32fc830997178f30a69e933c9c2364b263a2f036959bebc4dde59a08  modsecurity-v3.0.6.tar.gz\n# Localy calculated\nsha256  c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4  LICENSE\n"
  },
  {
    "path": "package/libmodsecurity/libmodsecurity.mk",
    "content": "################################################################################\n#\n# libmodsecurity\n#\n################################################################################\n\nLIBMODSECURITY_VERSION = 3.0.6\nLIBMODSECURITY_SOURCE = modsecurity-v$(LIBMODSECURITY_VERSION).tar.gz\nLIBMODSECURITY_SITE = https://github.com/SpiderLabs/ModSecurity/releases/download/v$(LIBMODSECURITY_VERSION)\nLIBMODSECURITY_INSTALL_STAGING = YES\nLIBMODSECURITY_LICENSE = Apache-2.0\nLIBMODSECURITY_LICENSE_FILES = LICENSE\nLIBMODSECURITY_CPE_ID_VENDOR = trustwave\nLIBMODSECURITY_CPE_ID_PRODUCT = modsecurity\n# We're patching build/libmaxmind.m4\nLIBMODSECURITY_AUTORECONF = YES\n\nLIBMODSECURITY_DEPENDENCIES = pcre\nLIBMODSECURITY_CONF_OPTS = \\\n\t--with-pcre=\"$(STAGING_DIR)/usr/bin/pcre-config\" \\\n\t--disable-examples \\\n\t--without-lmdb \\\n\t--without-ssdeep \\\n\t--without-lua \\\n\t--without-yajl\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nLIBMODSECURITY_DEPENDENCIES += libxml2\nLIBMODSECURITY_CONF_OPTS += --with-libxml=\"$(STAGING_DIR)/usr/bin/xml2-config\"\nelse\nLIBMODSECURITY_CONF_OPTS += --without-libxml\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nLIBMODSECURITY_DEPENDENCIES += libcurl\nLIBMODSECURITY_CONF_OPTS += --with-curl=\"$(STAGING_DIR)/usr/bin/curl-config\"\nelse\nLIBMODSECURITY_CONF_OPTS += --without-curl\nendif\n\nifeq ($(BR2_PACKAGE_GEOIP),y)\nLIBMODSECURITY_DEPENDENCIES += geoip\nLIBMODSECURITY_CONF_OPTS += --with-geoip\nelse\nLIBMODSECURITY_CONF_OPTS += --without-geoip\nendif\n\nifeq ($(BR2_PACKAGE_LIBMAXMINDDB),y)\nLIBMODSECURITY_DEPENDENCIES += libmaxminddb\nLIBMODSECURITY_CONF_OPTS += --with-maxmind\nelse\nLIBMODSECURITY_CONF_OPTS += --without-maxmind\nendif\n\nLIBMODSECURITY_CXXFLAGS = $(TARGET_CXXFLAGS)\n\n# m68k_cf can't use -fPIC that libmodsecurity forces to use, so we need\n# to disable it to avoid a build failure.\nifeq ($(BR2_m68k_cf),y)\nLIBMODSECURITY_CXXFLAGS += -fno-PIC\nendif\n\nLIBMODSECURITY_CONF_OPTS += CXXFLAGS=\"$(LIBMODSECURITY_CXXFLAGS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmpd/0001-Fix-build-on-archlinux-missing-include.patch",
    "content": "From 4f946c01000fd97100e4a534b47f9c7ace0403df Mon Sep 17 00:00:00 2001\nFrom: QC <qball@gmpclient.org>\nDate: Thu, 9 Oct 2014 19:51:50 +0200\nSubject: [PATCH] Fix build on archlinux (missing include)\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/DaveDavenport/libmpd/commit/4f946c01000fd97100e4a534b47f9c7ace0403df]\n---\n src/libmpd-internal.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/libmpd-internal.h b/src/libmpd-internal.h\nindex c84c3a4..30cdc85 100644\n--- a/src/libmpd-internal.h\n+++ b/src/libmpd-internal.h\n@@ -21,6 +21,7 @@\n #define __MPD_INTERNAL_LIB_\n \n #include \"libmpdclient.h\"\n+#include <config.h>\n struct _MpdData_real;\n \n typedef struct _MpdData_real {\n"
  },
  {
    "path": "package/libmpd/Config.in",
    "content": "config BR2_PACKAGE_LIBMPD\n\tbool \"libmpd\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  High-level client library for accessing Music Player Daemon.\n\t  LibMpd is a library that provides high-level, callback-based\n\t  access to Music Player Daemon (mpd).\n\n\t  http://gmpcwiki.sarine.nl/index.php?title=Libmpd\n\ncomment \"libmpd needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libmpd/libmpd.hash",
    "content": "# Locally calculated\nsha256\tfe20326b0d10641f71c4673fae637bf9222a96e1712f71f170fca2fc34bf7a83\tlibmpd-11.8.17.tar.gz\nsha256\tab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6\tCOPYING\n"
  },
  {
    "path": "package/libmpd/libmpd.mk",
    "content": "################################################################################\n#\n# libmpd\n#\n################################################################################\n\nLIBMPD_VERSION_MAJOR = 11.8\nLIBMPD_VERSION = $(LIBMPD_VERSION_MAJOR).17\nLIBMPD_SITE = http://download.sarine.nl/Programs/gmpc/$(LIBMPD_VERSION_MAJOR)\nLIBMPD_INSTALL_STAGING = YES\nLIBMPD_DEPENDENCIES = libglib2\nLIBMPD_LICENSE = GPL-2.0+\nLIBMPD_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmpdclient/Config.in",
    "content": "config BR2_PACKAGE_LIBMPDCLIENT\n\tbool \"libmpdclient\"\n\thelp\n\t  A stable, documented, asynchronous API library for interfacing\n\t  MPD in the C, C++ & Objective C languages.\n\n\t  http://www.musicpd.org/libs/libmpdclient/\n"
  },
  {
    "path": "package/libmpdclient/libmpdclient.hash",
    "content": "# Verified against http://www.musicpd.org/download/libmpdclient/2/libmpdclient-2.19.tar.xz.sig, sha256 locally computed\nsha256  158aad4c2278ab08e76a3f2b0166c99b39fae00ee17231bd225c5a36e977a189  libmpdclient-2.19.tar.xz\nsha256  9574c3b0a9c31723cc3d5f32af4655a015fff5ec6ec8115b7906cd7d9623cf32  COPYING\n"
  },
  {
    "path": "package/libmpdclient/libmpdclient.mk",
    "content": "################################################################################\n#\n# libmpdclient\n#\n################################################################################\n\nLIBMPDCLIENT_VERSION_MAJOR = 2\nLIBMPDCLIENT_VERSION = $(LIBMPDCLIENT_VERSION_MAJOR).19\nLIBMPDCLIENT_SOURCE = libmpdclient-$(LIBMPDCLIENT_VERSION).tar.xz\nLIBMPDCLIENT_SITE = http://www.musicpd.org/download/libmpdclient/$(LIBMPDCLIENT_VERSION_MAJOR)\nLIBMPDCLIENT_INSTALL_STAGING = YES\nLIBMPDCLIENT_LICENSE = BSD-3-Clause\nLIBMPDCLIENT_LICENSE_FILES = COPYING\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libmpeg2/0001-altivec.patch",
    "content": "[PATCH] fix altivec.h detection\n\nPatch from Gentoo:\n\nhttp://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/media-libs/libmpeg2/files/libmpeg2-0.5.1-altivec.patch?revision=1.1&view=markup\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n--- a/configure.ac.bak\t2010-05-25 17:12:14.756245990 +0000\n+++ b/configure.ac\t2010-05-25 17:11:51.629581723 +0000\n@@ -79,11 +79,10 @@\n \t\t CFLAGS=\"$OPT_CFLAGS $TRY_CFLAGS $CFLAGS\"\n \t\t AC_MSG_CHECKING([if <altivec.h> is needed])\n \t\t AC_TRY_COMPILE([],\n-\t\t    [typedef vector int t;\n-\t\t     vec_ld(0, (unsigned char *)0);],\n+\t\t    [vector int t; t = vec_add(t,t);],\n \t\t    [have_altivec=yes; AC_MSG_RESULT(no)],\n \t\t    [AC_TRY_COMPILE([#include <altivec.h>],\n-\t\t\t[typedef vector int t; vec_ld(0, (unsigned char *)0);],\n+\t\t\t[vector int t; t = vec_add(t,t);],\n \t\t\t[AC_DEFINE([HAVE_ALTIVEC_H],,\n \t\t\t    [Define to 1 if you have the <altivec.h> header.])\n \t\t\t have_altivec=yes; AC_MSG_RESULT(yes)],\n"
  },
  {
    "path": "package/libmpeg2/0002-armv4l.patch",
    "content": "Patch taken from gentoo.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -urNp libmpeg2.orig/libmpeg2/motion_comp_arm_s.S libmpeg2/libmpeg2/motion_comp_arm_s.S\n--- libmpeg2.orig/libmpeg2/motion_comp_arm_s.S\t2008-07-09 21:16:05.000000000 +0200\n+++ libmpeg2/libmpeg2/motion_comp_arm_s.S\t2009-11-20 19:55:22.000000000 +0100\n@@ -19,6 +19,16 @@\n @ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n \n \n+@ Data preload is supported only by ARM V5TE and above\n+\n+#if (defined (__ARM_ARCH_2__) || defined (__ARM_ARCH_3__) \\\n+     || defined (__ARM_ARCH_3M__) || defined (__ARM_ARCH_4__) \\\n+     || defined (__ARM_ARCH_4T__) || defined (__ARM_ARCH_5__) \\\n+     || defined (__ARM_ARCH_5T__))\n+.macro pld reg\n+.endm\n+#endif\n+\n \t.text\n \n @ ----------------------------------------------------------------\n"
  },
  {
    "path": "package/libmpeg2/0003-fix-arm-detection.patch",
    "content": "Improve the ARM detection to work on Thumb-only architecture\n\nThe ARM-specific assembly code doesn't build on Thumb-only\narchitectures such as ARMv7-M, but the configure script assumes that\nif the host tuple is arm*, then it can build and use the ARM optimized\ncode.\n\nThis patch improves the configure.ac detection logic, by building one\nof the instruction of the optimized assembly code, and using this to\ndecide whether or not the optimizations should be enabled.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/configure.ac\n===================================================================\n--- a/configure.ac\n+++ b/configure.ac\n@@ -101,8 +101,10 @@\n     alpha*)\n \tAC_DEFINE([ARCH_ALPHA],,[alpha architecture]);;\n     arm*)\n-\tarm_conditional=:\n-\tAC_DEFINE([ARCH_ARM],,[ARM architecture]);;\n+\tAC_TRY_LINK([], [asm(\".syntax divided\\nstmfd sp!,{r4-r11,lr}\")],\n+\t     [AC_DEFINE([ARCH_ARM],,[ARM architecture])\n+\t      use_arm_optimization=yes],\n+\t     [use_arm_optimization=no])\n     esac\n elif test x\"$CC\" = x\"tendracc\"; then\n     dnl TenDRA portability checking compiler\n@@ -122,7 +124,7 @@\n     esac\n fi\n \n-AM_CONDITIONAL(ARCH_ARM, ${arm_conditional})\n+AM_CONDITIONAL(ARCH_ARM, test \"${use_arm_optimization}\" = \"yes\")\n \n dnl Checks for libtool - this must be done after we set cflags\n AC_LIBTOOL_WIN32_DLL\n"
  },
  {
    "path": "package/libmpeg2/0004-fix-sparc.patch",
    "content": "Do not use sparcv9 optimization flags for sparcv8 builds\n\nSigned-off-by: Waldemar Brodkorb <wbx@openadk.org>\n\ndiff -Nur libmpeg2-0.5.1.orig/configure.ac libmpeg2-0.5.1/configure.ac\n--- libmpeg2-0.5.1.orig/configure.ac\t2008-07-18 16:30:17.000000000 +0200\n+++ libmpeg2-0.5.1/configure.ac\t2017-04-26 21:09:15.780838339 +0200\n@@ -95,7 +95,7 @@\n \t\tbreak\n \t    fi\n \tdone;;\n-    sparc-* | sparc64-*)\n+    sparc64-*)\n \tAC_DEFINE([ARCH_SPARC],,[sparc architecture])\n \tTRY_CFLAGS=\"$OPT_CFLAGS -mcpu=ultrasparc -mvis\"\n \tAC_TRY_CFLAGS([$TRY_CFLAGS $CFLAGS],[OPT_CFLAGS=\"$TRY_CFLAGS\"]);;\n"
  },
  {
    "path": "package/libmpeg2/Config.in",
    "content": "config BR2_PACKAGE_LIBMPEG2\n\tbool \"libmpeg2\"\n\thelp\n\t  MPEG1/MPEG2 video decoder library\n\n\t  http://libmpeg2.sourceforge.net/\n\nif BR2_PACKAGE_LIBMPEG2\n\nconfig BR2_PACKAGE_LIBMPEG2_BINS\n\tbool \"mpeg2 binaries\"\n\thelp\n\t  Install mpeg2dec, corrupt_mpeg2 and extract_mpeg2 programs as\n\t  well.\n\nendif\n"
  },
  {
    "path": "package/libmpeg2/libmpeg2.hash",
    "content": "# Locally computed:\nsha256  dee22e893cb5fc2b2b6ebd60b88478ab8556cb3b93f9a0d7ce8f3b61851871d4  libmpeg2-0.5.1.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/libmpeg2/libmpeg2.mk",
    "content": "################################################################################\n#\n# libmpeg2\n#\n################################################################################\n\nLIBMPEG2_VERSION = 0.5.1\nLIBMPEG2_SITE = http://libmpeg2.sourceforge.net/files\nLIBMPEG2_LICENSE = GPL-2.0+\nLIBMPEG2_LICENSE_FILES = COPYING\nLIBMPEG2_INSTALL_STAGING = YES\nLIBMPEG2_AUTORECONF = YES\nLIBMPEG2_CONF_OPTS = --without-x --disable-directx\n\nifeq ($(BR2_PACKAGE_SDL),y)\nLIBMPEG2_CONF_ENV += ac_cv_prog_SDLCONFIG=$(STAGING_DIR)/usr/bin/sdl-config\nLIBMPEG2_CONF_OPTS += --enable-sdl\nLIBMPEG2_DEPENDENCIES += sdl\nelse\nLIBMPEG2_CONF_OPTS += --disable-sdl\nendif\n\nifneq ($(BR2_PACKAGE_LIBMPEG2_BINS),y)\ndefine LIBMPEG2_REMOVE_BINS\n\trm -f $(addprefix $(TARGET_DIR)/usr/bin/,\\\n\t\tmpeg2dec corrupt_mpeg2 extract_mpeg2)\nendef\n\nLIBMPEG2_POST_INSTALL_TARGET_HOOKS += LIBMPEG2_REMOVE_BINS\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libmspack/Config.in",
    "content": "config BR2_PACKAGE_LIBMSPACK\n\tbool \"libmspack\"\n\thelp\n\t  libmspack is a portable library for some loosely related\n\t  Microsoft compression formats\n\n\t  https://www.cabextract.org.uk/libmspack\n"
  },
  {
    "path": "package/libmspack/libmspack.hash",
    "content": "# Locally computed\nsha256 bac862dee6e0fc10d92c70212441d9f8ad9b0222edc9a708c3ead4adb1b24a8e  libmspack-0.10.1alpha.tar.gz\nsha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7  COPYING.LIB\n"
  },
  {
    "path": "package/libmspack/libmspack.mk",
    "content": "################################################################################\n#\n# libmspack\n#\n################################################################################\n\nLIBMSPACK_VERSION_MAJOR = 0.10.1\nLIBMSPACK_VERSION_MINOR = alpha\nLIBMSPACK_VERSION = $(LIBMSPACK_VERSION_MAJOR)$(LIBMSPACK_VERSION_MINOR)\nLIBMSPACK_SITE = https://www.cabextract.org.uk/libmspack\nLIBMSPACK_LICENSE = LGPL-2.1\nLIBMSPACK_LICENSE_FILES = COPYING.LIB\nLIBMSPACK_CPE_ID_VENDOR = kyzer\nLIBMSPACK_CPE_ID_VERSION = $(LIBMSPACK_VERSION_MAJOR)\nLIBMSPACK_CPE_ID_UPDATE = $(LIBMSPACK_VERSION_MINOR)\nLIBMSPACK_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnatpmp/Config.in",
    "content": "config BR2_PACKAGE_LIBNATPMP\n\tbool \"libnatpmp\"\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  libnatpmp is an attempt to make a portable and fully compliant\n\t  implementation of the NAT-PMP protocol for the client side. It\n\t  is based on non blocking sockets and all calls of the API are\n\t  asynchronous. It is therefore very easy to integrate the\n\t  NAT-PMP code to any event driven code.\n\n\t  http://miniupnp.free.fr/libnatpmp.html\n\ncomment \"libnatpmp needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\tdepends on !BR2_BINFMT_FLAT\n"
  },
  {
    "path": "package/libnatpmp/libnatpmp.hash",
    "content": "# Locally computed\nsha256 e1aa9c4c4219bc06943d6b2130f664daee213fb262fcb94dd355815b8f4536b0  libnatpmp-20150609.tar.gz\nsha256 e8d8277e1a101fcfedb0cd5a1cc76646522c0da69f3490dd5a4055fc87ea96a2  LICENSE\n"
  },
  {
    "path": "package/libnatpmp/libnatpmp.mk",
    "content": "################################################################################\n#\n# libnatpmp\n#\n################################################################################\n\nLIBNATPMP_VERSION = 20150609\nLIBNATPMP_SITE = http://miniupnp.free.fr/files\nLIBNATPMP_INSTALL_STAGING = YES\nLIBNATPMP_LICENSE = BSD-3-Clause\nLIBNATPMP_LICENSE_FILES = LICENSE\n\ndefine LIBNATPMP_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tCC=\"$(TARGET_CC)\"\nendef\n\ndefine LIBNATPMP_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tPREFIX=$(STAGING_DIR) \\\n\t\tHEADERS='declspec.h natpmp.h' \\\n\t\t$(TARGET_CONFIGURE_OPTS) install\nendef\n\ndefine LIBNATPMP_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tPREFIX=$(TARGET_DIR) \\\n\t\t$(TARGET_CONFIGURE_OPTS) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libndp/Config.in",
    "content": "config BR2_PACKAGE_LIBNDP\n\tbool \"libndp\"\n\thelp\n\t  This package contains a library which provides a wrapper\n\t  for IPv6 Neighbor Discovery Protocol. It also provides a tool\n\t  named ndptool for sending and receiving NDP messages.\n\n\t  https://github.com/jpirko/libndp\n"
  },
  {
    "path": "package/libndp/libndp.hash",
    "content": "# Locally calculated\nsha256  c3ea76e253def89869651686a827da75b56896fe94fabd87d8c14b1d4588fd05  libndp-1.8.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/libndp/libndp.mk",
    "content": "################################################################################\n#\n# libndp\n#\n################################################################################\n\nLIBNDP_VERSION = 1.8\nLIBNDP_SITE = $(call github,jpirko,libndp,v$(LIBNDP_VERSION))\nLIBNDP_LICENSE = LGPL-2.1+\nLIBNDP_LICENSE_FILES = COPYING\nLIBNDP_CPE_ID_VENDOR = libndp\nLIBNDP_AUTORECONF = YES\nLIBNDP_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnet/0001-Use-standard-int64_t-instead-of-__int64_t-for-mingw-cross-build.patch",
    "content": "From a1659e261888bdbed51803132d52d9a6c6803c8a Mon Sep 17 00:00:00 2001\nFrom: Joachim Nilsson <troglobit@gmail.com>\nDate: Sat, 19 Oct 2019 12:26:26 +0200\nSubject: [PATCH] Use standard int64_t instead of __int64_t for mingw cross\n build\n\nSigned-off-by: Joachim Nilsson <troglobit@gmail.com>\n[Retrieved from:\nhttps://github.com/libnet/libnet/commit/a1659e261888bdbed51803132d52d9a6c6803c8a]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/libnet/libnet-structures.h | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/include/libnet/libnet-structures.h b/include/libnet/libnet-structures.h\nindex 6084caa..34fffc6 100644\n--- a/include/libnet/libnet-structures.h\n+++ b/include/libnet/libnet-structures.h\n@@ -49,9 +49,9 @@ struct libnet_port_list_chain\n /* libnet statistics structure */\n struct libnet_stats\n {\n-    __int64_t packets_sent;               /* packets sent */\n-    __int64_t packet_errors;              /* packets errors */\n-    __int64_t bytes_written;              /* bytes written */\n+    int64_t packets_sent;               /* packets sent */\n+    int64_t packet_errors;              /* packets errors */\n+    int64_t bytes_written;              /* bytes written */\n };\n \n \n"
  },
  {
    "path": "package/libnet/Config.in",
    "content": "config BR2_PACKAGE_LIBNET\n\tbool \"libnet\"\n\thelp\n\t  libnet provides a portable framework for low-level network\n\t  packet construction.\n\n\t  https://github.com/libnet/libnet\n"
  },
  {
    "path": "package/libnet/libnet.hash",
    "content": "# From https://github.com/libnet/libnet/releases/download/v1.2/libnet-1.2.tar.gz.md5\nmd5  a36c669e0cdfda6a2aa3adfb1f6fe60a libnet-1.2.tar.gz\n# Locally computed\nsha256  caa4868157d9e5f32e9c7eac9461efeff30cb28357f7f6bf07e73933fb4edaa7  libnet-1.2.tar.gz\nsha256  a06f600f67f239898d85f083aeed82ce6015b1c57599ab1def00fb68787ef388  LICENSE\n"
  },
  {
    "path": "package/libnet/libnet.mk",
    "content": "################################################################################\n#\n# libnet\n#\n################################################################################\n\nLIBNET_VERSION = 1.2\nLIBNET_SITE = \\\n\thttps://github.com/libnet/libnet/releases/download/v$(LIBNET_VERSION)\nLIBNET_INSTALL_STAGING = YES\n# PF_PACKET is always available on Linux\nLIBNET_CONF_OPTS = libnet_cv_have_packet_socket=yes\nLIBNET_LICENSE = BSD-2-Clause, BSD-3-Clause\nLIBNET_LICENSE_FILES = LICENSE\nLIBNET_CPE_ID_VENDOR = libnet_project\nLIBNET_CONFIG_SCRIPTS = libnet-config\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnetconf2/Config.in",
    "content": "config BR2_PACKAGE_LIBNETCONF2\n\tbool \"libnetconf2\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_LIBYANG\n\thelp\n\t  libnetconf2 is a NETCONF library in C intended for building\n\t  NETCONF clients and servers.\n\n\t  https://github.com/CESNET/libnetconf2\n\ncomment \"libnetconf2 needs a toolchain w/ threads, dynamic libraray\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libnetconf2/libnetconf2.hash",
    "content": "# Locally calculated\nsha256  66139fc9e68aa89c82235f4135dba9e44f5db663541279c14c74131e22b7f571  libnetconf2-1.1.43.tar.gz\nsha256  bd962ab457c8a8cb8faaaa36c11484680f3c9a47dbc336507817ae8935384064  LICENSE\n"
  },
  {
    "path": "package/libnetconf2/libnetconf2.mk",
    "content": "################################################################################\n#\n# libnetconf2\n#\n################################################################################\n\nLIBNETCONF2_VERSION = 1.1.43\nLIBNETCONF2_SITE = $(call github,CESNET,libnetconf2,v$(LIBNETCONF2_VERSION))\nLIBNETCONF2_INSTALL_STAGING = YES\nLIBNETCONF2_LICENSE = BSD-3-Clause\nLIBNETCONF2_LICENSE_FILES = LICENSE\nLIBNETCONF2_DEPENDENCIES = libyang\nHOST_LIBNETCONF2_DEPENDENCIES = host-libyang\n\nLIBNETCONF2_CONF_OPTS = \\\n\t-DENABLE_BUILD_TESTS=OFF \\\n\t-DENABLE_VALGRIND_TESTS=OFF\n\nifeq ($(BR2_PACKAGE_LIBSSH_SERVER), y)\nLIBNETCONF2_CONF_OPTS += -DENABLE_SSH=ON\nLIBNETCONF2_DEPENDENCIES += libssh\nelse\nLIBNETCONF2_CONF_OPTS += -DENABLE_SSH=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL), y)\nLIBNETCONF2_CONF_OPTS += -DENABLE_TLS=ON\nLIBNETCONF2_DEPENDENCIES += openssl\nelse\nLIBNETCONF2_CONF_OPTS += -DENABLE_TLS=OFF\nendif\n\nHOST_LIBNETCONF2_CONF_OPTS = \\\n\t-DENABLE_BUILD_TESTS=OFF \\\n\t-DENABLE_VALGRIND_TESTS=OFF \\\n\t-DENABLE_SSH=OFF \\\n\t-DENABLE_TLS=OFF\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/libnetfilter_acct/Config.in",
    "content": "config BR2_PACKAGE_LIBNETFILTER_ACCT\n\tbool \"libnetfilter_acct\"\n\tselect BR2_PACKAGE_LIBMNL\n\thelp\n\t  libnetfilter_acct is the userspace library providing interface\n\t  to extended accounting infrastructure.\n\n\t  http://www.netfilter.org/projects/libnetfilter_acct/\n"
  },
  {
    "path": "package/libnetfilter_acct/libnetfilter_acct.hash",
    "content": "# From ftp://ftp.netfilter.org/pub/libnetfilter_acct/libnetfilter_acct-1.0.3.tar.bz2.{md5sum,sha1sum}\nmd5\t814b2972b2f5c740ff87510bc109168b\tlibnetfilter_acct-1.0.3.tar.bz2\nsha1\t4b9073e4aa989b0f000c8da1ab01b22fceed52b2\tlibnetfilter_acct-1.0.3.tar.bz2\n\n# Hash for license file:\nsha256\tdc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\tCOPYING\n"
  },
  {
    "path": "package/libnetfilter_acct/libnetfilter_acct.mk",
    "content": "################################################################################\n#\n# libnetfilter_acct\n#\n################################################################################\n\nLIBNETFILTER_ACCT_VERSION = 1.0.3\nLIBNETFILTER_ACCT_SOURCE = libnetfilter_acct-$(LIBNETFILTER_ACCT_VERSION).tar.bz2\nLIBNETFILTER_ACCT_SITE = http://www.netfilter.org/projects/libnetfilter_acct/files\nLIBNETFILTER_ACCT_INSTALL_STAGING = YES\nLIBNETFILTER_ACCT_DEPENDENCIES = host-pkgconf libmnl\nLIBNETFILTER_ACCT_LICENSE = LGPL-2.1+\nLIBNETFILTER_ACCT_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnetfilter_conntrack/0001-libnetfilter_conntrack.pc.in-add-LIBMNL_LIBS-to-Libs.patch",
    "content": "From 93bbd7e56cefc8488a61892b3bf5df63a175d20d Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 12 Apr 2020 14:05:15 +0200\nSubject: [PATCH] libnetfilter_conntrack.pc.in: add LIBMNL_LIBS to Libs.Private\n\nSince version 1.0.8 and commit\nc1c0f16c1fedb46547c2e104beeaaeac5933b214, libnetfilter_conntrack depends\non libmnl so add it to Libs.Private.\n\nOtherwise, applications such as dnsmasq will fail to link on:\n\n/home/buildroot/autobuild/instance-0/output-1/host/bin/arm-linux-gcc -Wl,-elf2flt -static -o dnsmasq cache.o rfc1035.o util.o option.o forward.o network.o dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o helper.o tftp.o log.o conntrack.o dhcp6.o rfc3315.o dhcp-common.o outpacket.o radv.o slaac.o auth.o ipset.o domain.o dnssec.o blockdata.o tables.o loop.o inotify.o poll.o rrfilter.o edns0.o arp.o crypto.o dump.o ubus.o metrics.o -L/home/buildroot/autobuild/instance-0/output-1/host/bin/../arm-buildroot-uclinux-uclibcgnueabi/sysroot/usr/lib -lnetfilter_conntrack -L/home/buildroot/autobuild/instance-0/output-1/host/bin/../arm-buildroot-uclinux-uclibcgnueabi/sysroot/usr/lib -lnfnetlink\n/home/buildroot/autobuild/instance-0/output-1/host/opt/ext-toolchain/arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: /home/buildroot/autobuild/instance-0/output-1/host/bin/../arm-buildroot-uclinux-uclibcgnueabi/sysroot/usr/lib/libnetfilter_conntrack.a(api.o): in function `nfct_fill_hdr.constprop.4':\napi.c:(.text+0x34): undefined reference to `mnl_nlmsg_put_header'\n\nFixes:\n - http://autobuild.buildroot.org/results/3fdc2cba20162eb86eaa5c49a056fb40fb18a392\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: commit e94172f09e4d]\n---\n libnetfilter_conntrack.pc.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/libnetfilter_conntrack.pc.in b/libnetfilter_conntrack.pc.in\nindex 857f993..fbd7132 100644\n--- a/libnetfilter_conntrack.pc.in\n+++ b/libnetfilter_conntrack.pc.in\n@@ -12,5 +12,5 @@ Version: @VERSION@\n Requires: libnfnetlink\n Conflicts:\n Libs: -L${libdir} -lnetfilter_conntrack\n-Libs.private: @LIBNFNETLINK_LIBS@\n+Libs.private: @LIBNFNETLINK_LIBS@ @LIBMNL_LIBS@\n Cflags: -I${includedir}\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/libnetfilter_conntrack/Config.in",
    "content": "config BR2_PACKAGE_LIBNETFILTER_CONNTRACK\n\tbool \"libnetfilter_conntrack\"\n\tselect BR2_PACKAGE_LIBMNL\n\tselect BR2_PACKAGE_LIBNFNETLINK\n\thelp\n\t  libnetfilter_conntrack is a userspace library providing\n\t  a programming interface (API) to the in-kernel\n\t  connection tracking state table.\n\n\t  http://www.netfilter.org/projects/libnetfilter_conntrack/\n"
  },
  {
    "path": "package/libnetfilter_conntrack/libnetfilter_conntrack.hash",
    "content": "# From ftp://ftp.netfilter.org/pub/libnetfilter_conntrack/libnetfilter_conntrack-1.0.8.tar.bz2.sha256sum\nsha256  0cd13be008923528687af6c6b860f35392d49251c04ee0648282d36b1faec1cf  libnetfilter_conntrack-1.0.8.tar.bz2\n\n# Hash for license file:\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/libnetfilter_conntrack/libnetfilter_conntrack.mk",
    "content": "################################################################################\n#\n# libnetfilter_conntrack\n#\n################################################################################\n\nLIBNETFILTER_CONNTRACK_VERSION = 1.0.8\nLIBNETFILTER_CONNTRACK_SOURCE = libnetfilter_conntrack-$(LIBNETFILTER_CONNTRACK_VERSION).tar.bz2\nLIBNETFILTER_CONNTRACK_SITE = http://www.netfilter.org/projects/libnetfilter_conntrack/files\nLIBNETFILTER_CONNTRACK_INSTALL_STAGING = YES\nLIBNETFILTER_CONNTRACK_DEPENDENCIES = host-pkgconf libnfnetlink libmnl\nLIBNETFILTER_CONNTRACK_LICENSE = GPL-2.0+\nLIBNETFILTER_CONNTRACK_LICENSE_FILES = COPYING\nLIBNETFILTER_CONNTRACK_CPE_ID_VENDOR = netfilter\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnetfilter_cthelper/0001-uclinux.patch",
    "content": "From d028334281b218209412ec6e1dba56ca96320bd9 Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Tue, 10 Sep 2013 16:08:29 -0300\nSubject: [PATCH] configure: uclinux is also linux\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex d52b1ce..9389b70 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -22,7 +22,7 @@ AC_DISABLE_STATIC\n LT_INIT\n CHECK_GCC_FVISIBILITY\n case \"$host\" in\n-*-*-linux*) ;;\n+*-*-linux* | *-*-uclinux*) ;;\n *) AC_MSG_ERROR([Linux only, dude!]);;\n esac\n \n-- \n1.8.1.5\n\n"
  },
  {
    "path": "package/libnetfilter_cthelper/Config.in",
    "content": "config BR2_PACKAGE_LIBNETFILTER_CTHELPER\n\tbool \"libnetfilter_cthelper\"\n\tselect BR2_PACKAGE_LIBMNL\n\thelp\n\t  libnetfilter_cthelper is the userspace library that provides\n\t  the programming interface to the user-space helper\n\t  infrastructure available since Linux kernel 3.6.\n\n\t  http://www.netfilter.org/projects/libnetfilter_cthelper/\n"
  },
  {
    "path": "package/libnetfilter_cthelper/libnetfilter_cthelper.hash",
    "content": "# From ftp://ftp.netfilter.org/pub/libnetfilter_cthelper/libnetfilter_cthelper-1.0.0.tar.bz2.{md5sum,sha1sum}\nmd5\tb2efab1a3a198a5add448960ba011acd\tlibnetfilter_cthelper-1.0.0.tar.bz2\nsha1\t5d0a82794bd46aafde20c16800edca23d563de66\tlibnetfilter_cthelper-1.0.0.tar.bz2\n\n# Hash for license file:\nsha256\t91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad\tCOPYING\n"
  },
  {
    "path": "package/libnetfilter_cthelper/libnetfilter_cthelper.mk",
    "content": "################################################################################\n#\n# libnetfilter_cthelper\n#\n################################################################################\n\nLIBNETFILTER_CTHELPER_VERSION = 1.0.0\nLIBNETFILTER_CTHELPER_SOURCE = libnetfilter_cthelper-$(LIBNETFILTER_CTHELPER_VERSION).tar.bz2\nLIBNETFILTER_CTHELPER_SITE = http://www.netfilter.org/projects/libnetfilter_cthelper/files\nLIBNETFILTER_CTHELPER_INSTALL_STAGING = YES\nLIBNETFILTER_CTHELPER_DEPENDENCIES = host-pkgconf libmnl\nLIBNETFILTER_CTHELPER_AUTORECONF = YES\nLIBNETFILTER_CTHELPER_LICENSE = GPL-2.0+\nLIBNETFILTER_CTHELPER_LICENSE_FILES = COPYING\nLIBNETFILTER_CTHELPER_CPE_ID_VENDOR = netfilter\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnetfilter_cttimeout/0001-uclinux.patch",
    "content": "From d8d2ec14bc192f998afae2b71c69248e73518ddf Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Tue, 10 Sep 2013 16:09:14 -0300\nSubject: [PATCH] configure: uclinux is also linux\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex d79e941..aeb6ad0 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -22,7 +22,7 @@ AC_DISABLE_STATIC\n LT_INIT\n CHECK_GCC_FVISIBILITY\n case \"$host\" in\n-*-*-linux*) ;;\n+*-*-linux* | *-*-uclinux*) ;;\n *) AC_MSG_ERROR([Linux only, dude!]);;\n esac\n \n-- \n1.8.1.5\n\n"
  },
  {
    "path": "package/libnetfilter_cttimeout/Config.in",
    "content": "config BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT\n\tbool \"libnetfilter_cttimeout\"\n\tselect BR2_PACKAGE_LIBMNL\n\thelp\n\t  libnetfilter_cttimeout is the userspace library that provides\n\t  the programming interface to the fine-grain\n\t  connection tracking timeout infrastructure.\n\n\t  http://www.netfilter.org/projects/libnetfilter_cttimeout/\n"
  },
  {
    "path": "package/libnetfilter_cttimeout/libnetfilter_cttimeout.hash",
    "content": "# From ftp://ftp.netfilter.org/pub/libnetfilter_cttimeout/libnetfilter_cttimeout-1.0.0.tar.bz2.{md5sum,sha1sum}\nmd5\t7697437fc9ebb6f6b83df56a633db7f9\tlibnetfilter_cttimeout-1.0.0.tar.bz2\nsha1\t24cba24b0371e80007be4ea0fa9d872df63b8a7a\tlibnetfilter_cttimeout-1.0.0.tar.bz2\n\n# Hash for license file:\nsha256\t91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad\tCOPYING\n"
  },
  {
    "path": "package/libnetfilter_cttimeout/libnetfilter_cttimeout.mk",
    "content": "################################################################################\n#\n# libnetfilter_cttimeout\n#\n################################################################################\n\nLIBNETFILTER_CTTIMEOUT_VERSION = 1.0.0\nLIBNETFILTER_CTTIMEOUT_SOURCE = libnetfilter_cttimeout-$(LIBNETFILTER_CTTIMEOUT_VERSION).tar.bz2\nLIBNETFILTER_CTTIMEOUT_SITE = http://www.netfilter.org/projects/libnetfilter_cttimeout/files\nLIBNETFILTER_CTTIMEOUT_INSTALL_STAGING = YES\nLIBNETFILTER_CTTIMEOUT_DEPENDENCIES = host-pkgconf libmnl\nLIBNETFILTER_CTTIMEOUT_AUTORECONF = YES\nLIBNETFILTER_CTTIMEOUT_LICENSE = GPL-2.0+\nLIBNETFILTER_CTTIMEOUT_LICENSE_FILES = COPYING\nLIBNETFILTER_CTTIMEOUT_CPE_ID_VENDOR = netfilter\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnetfilter_log/0001-uclinux.patch",
    "content": "From e36a2377e7ec50f6f675eb41f79edcda6ddebe5c Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Tue, 10 Sep 2013 15:48:50 -0300\nSubject: [PATCH] configure: uclinux is also linux\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex e6e1317..189a753 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -20,7 +20,7 @@ AC_PROG_INSTALL\n AC_PROG_LN_S\n \n case \"$host\" in \n-*-*-linux*) ;;\n+*-*-linux* | *-*-uclinux*) ;;\n *) AC_MSG_ERROR([Linux only, dude!]);;\n esac\n \n-- \n1.8.1.5\n\n"
  },
  {
    "path": "package/libnetfilter_log/0002-Add-include-needed-for-integer-type-definition.patch",
    "content": "From 7529487f70e244cd31ef84b037b1c32749c134a7 Mon Sep 17 00:00:00 2001\nFrom: Eric Leblond <eric@regit.org>\nDate: Sun, 4 Nov 2012 09:29:44 +0100\nSubject: Add include needed for integer type definition.\n\n[Retrieved from:\nhttps://git.netfilter.org/libnetfilter_log/commit/?id=7529487f70e244cd31ef84b037b1c32749c134a7]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/libnetfilter_log/libnetfilter_log.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/include/libnetfilter_log/libnetfilter_log.h b/include/libnetfilter_log/libnetfilter_log.h\nindex 6b0d3b0..a1331de 100644\n--- a/include/libnetfilter_log/libnetfilter_log.h\n+++ b/include/libnetfilter_log/libnetfilter_log.h\n@@ -9,6 +9,7 @@\n #ifndef __LIBNETFILTER_LOG_H\n #define __LIBNETFILTER_LOG_H\n \n+#include <sys/types.h>\n #include <libnetfilter_log/linux_nfnetlink_log.h>\n \n struct nflog_handle;\n-- \ncgit v1.2.3\n\n"
  },
  {
    "path": "package/libnetfilter_log/0003-src-Use-stdint-types-everywhere.patch",
    "content": "From 42878e88e5b72d3120434564942417cae3723385 Mon Sep 17 00:00:00 2001\nFrom: Felix Janda <felix.janda@posteo.de>\nDate: Sat, 16 May 2015 14:01:00 +0200\nSubject: src: Use stdint types everywhere\n\nSigned-off-by: Felix Janda <felix.janda@posteo.de>\nSigned-off-by: Pablo Neira Ayuso <pablo@netfilter.org>\n\n[Retrieved from:\nhttps://git.netfilter.org/libnetfilter_log/commit/?id=42878e88e5b72d3120434564942417cae3723385]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/libnetfilter_log/libipulog.h        |  5 +-\n include/libnetfilter_log/libnetfilter_log.h | 39 ++++++------\n src/libipulog_compat.c                      | 10 ++--\n src/libnetfilter_log.c                      | 92 ++++++++++++++---------------\n utils/nfulnl_test.c                         |  6 +-\n 5 files changed, 77 insertions(+), 75 deletions(-)\n\ndiff --git a/include/libnetfilter_log/libipulog.h b/include/libnetfilter_log/libipulog.h\nindex 1093bdd..ee7890a 100644\n--- a/include/libnetfilter_log/libipulog.h\n+++ b/include/libnetfilter_log/libipulog.h\n@@ -2,6 +2,7 @@\n #define _LIBIPULOG_H\n \n #include <errno.h>\n+#include <stdint.h>\n #include <unistd.h>\n #include <fcntl.h>\n #include <sys/types.h>\n@@ -33,9 +34,9 @@ typedef struct ulog_packet_msg {\n struct ipulog_handle;\n extern int ipulog_errno;\n \n-u_int32_t ipulog_group2gmask(u_int32_t group);\n+uint32_t ipulog_group2gmask(uint32_t group);\n \n-struct ipulog_handle *ipulog_create_handle(u_int32_t gmask, u_int32_t rmem);\n+struct ipulog_handle *ipulog_create_handle(uint32_t gmask, uint32_t rmem);\n \n void ipulog_destroy_handle(struct ipulog_handle *h);\n \ndiff --git a/include/libnetfilter_log/libnetfilter_log.h b/include/libnetfilter_log/libnetfilter_log.h\nindex a1331de..7812877 100644\n--- a/include/libnetfilter_log/libnetfilter_log.h\n+++ b/include/libnetfilter_log/libnetfilter_log.h\n@@ -9,6 +9,7 @@\n #ifndef __LIBNETFILTER_LOG_H\n #define __LIBNETFILTER_LOG_H\n \n+#include <stdint.h>\n #include <sys/types.h>\n #include <libnetfilter_log/linux_nfnetlink_log.h>\n \n@@ -29,19 +30,19 @@ extern struct nflog_handle *nflog_open(void);\n extern struct nflog_handle *nflog_open_nfnl(struct nfnl_handle *nfnlh);\n extern int nflog_close(struct nflog_handle *h);\n \n-extern int nflog_bind_pf(struct nflog_handle *h, u_int16_t pf);\n-extern int nflog_unbind_pf(struct nflog_handle *h, u_int16_t pf);\n+extern int nflog_bind_pf(struct nflog_handle *h, uint16_t pf);\n+extern int nflog_unbind_pf(struct nflog_handle *h, uint16_t pf);\n \n extern struct nflog_g_handle *nflog_bind_group(struct nflog_handle *h,\n-\t\t\t\t\t\t u_int16_t num);\n+\t\t\t\t\t\t uint16_t num);\n extern int nflog_unbind_group(struct nflog_g_handle *gh);\n \n extern int nflog_set_mode(struct nflog_g_handle *gh,\n-\t\t\t  u_int8_t mode, unsigned int len);\n-extern int nflog_set_timeout(struct nflog_g_handle *gh, u_int32_t timeout);\n-extern int nflog_set_flags(struct nflog_g_handle *gh, u_int16_t flags);\n-extern int nflog_set_qthresh(struct nflog_g_handle *gh, u_int32_t qthresh);\n-extern int nflog_set_nlbufsiz(struct nflog_g_handle *gh, u_int32_t nlbufsiz);\n+\t\t\t  uint8_t mode, unsigned int len);\n+extern int nflog_set_timeout(struct nflog_g_handle *gh, uint32_t timeout);\n+extern int nflog_set_flags(struct nflog_g_handle *gh, uint16_t flags);\n+extern int nflog_set_qthresh(struct nflog_g_handle *gh, uint32_t qthresh);\n+extern int nflog_set_nlbufsiz(struct nflog_g_handle *gh, uint32_t nlbufsiz);\n \n extern int nflog_callback_register(struct nflog_g_handle *gh, \n \t\t\t\t    nflog_callback *cb, void *data);\n@@ -50,23 +51,23 @@ extern int nflog_handle_packet(struct nflog_handle *h, char *buf, int len);\n \n extern struct nfulnl_msg_packet_hdr *nflog_get_msg_packet_hdr(struct nflog_data *nfad);\n \n-extern u_int16_t nflog_get_hwtype(struct nflog_data *nfad);\n-extern u_int16_t nflog_get_msg_packet_hwhdrlen(struct nflog_data *nfad);\n+extern uint16_t nflog_get_hwtype(struct nflog_data *nfad);\n+extern uint16_t nflog_get_msg_packet_hwhdrlen(struct nflog_data *nfad);\n extern char *nflog_get_msg_packet_hwhdr(struct nflog_data *nfad);\n \n-extern u_int32_t nflog_get_nfmark(struct nflog_data *nfad);\n+extern uint32_t nflog_get_nfmark(struct nflog_data *nfad);\n extern int nflog_get_timestamp(struct nflog_data *nfad, struct timeval *tv);\n-extern u_int32_t nflog_get_indev(struct nflog_data *nfad);\n-extern u_int32_t nflog_get_physindev(struct nflog_data *nfad);\n-extern u_int32_t nflog_get_outdev(struct nflog_data *nfad);\n-extern u_int32_t nflog_get_physoutdev(struct nflog_data *nfad);\n+extern uint32_t nflog_get_indev(struct nflog_data *nfad);\n+extern uint32_t nflog_get_physindev(struct nflog_data *nfad);\n+extern uint32_t nflog_get_outdev(struct nflog_data *nfad);\n+extern uint32_t nflog_get_physoutdev(struct nflog_data *nfad);\n extern struct nfulnl_msg_packet_hw *nflog_get_packet_hw(struct nflog_data *nfad);\n extern int nflog_get_payload(struct nflog_data *nfad, char **data);\n extern char *nflog_get_prefix(struct nflog_data *nfad);\n-extern int nflog_get_uid(struct nflog_data *nfad, u_int32_t *uid);\n-extern int nflog_get_gid(struct nflog_data *nfad, u_int32_t *gid);\n-extern int nflog_get_seq(struct nflog_data *nfad, u_int32_t *seq);\n-extern int nflog_get_seq_global(struct nflog_data *nfad, u_int32_t *seq);\n+extern int nflog_get_uid(struct nflog_data *nfad, uint32_t *uid);\n+extern int nflog_get_gid(struct nflog_data *nfad, uint32_t *gid);\n+extern int nflog_get_seq(struct nflog_data *nfad, uint32_t *seq);\n+extern int nflog_get_seq_global(struct nflog_data *nfad, uint32_t *seq);\n \n enum {\n \tNFLOG_XML_PREFIX\t= (1 << 0),\ndiff --git a/src/libipulog_compat.c b/src/libipulog_compat.c\nindex 64ca7f3..2d5b23a 100644\n--- a/src/libipulog_compat.c\n+++ b/src/libipulog_compat.c\n@@ -20,7 +20,7 @@ struct ipulog_handle\n \tstruct nlmsghdr *last_nlh;\n #if 0\n \tint fd;\n-\tu_int8_t blocking;\n+\tuint8_t blocking;\n \tstruct sockaddr_nl local;\n \tstruct sockaddr_nl peer;\n #endif\n@@ -72,7 +72,7 @@ const char *ipulog_strerror(int errcode)\n }\n \n /* convert a netlink group (1-32) to a group_mask suitable for create_handle */\n-u_int32_t ipulog_group2gmask(u_int32_t group)\n+uint32_t ipulog_group2gmask(uint32_t group)\n {\n \tif (group < 1 || group > 32)\n \t{\n@@ -83,8 +83,8 @@ u_int32_t ipulog_group2gmask(u_int32_t group)\n }\n \n /* create a ipulog handle for the reception of packets sent to gmask */\n-struct ipulog_handle *ipulog_create_handle(u_int32_t gmask, \n-\t\t\t\t\t   u_int32_t rcvbufsize)\n+struct ipulog_handle *ipulog_create_handle(uint32_t gmask,\n+\t\t\t\t\t   uint32_t rcvbufsize)\n {\n \tint rv;\n \tstruct ipulog_handle *h;\n@@ -155,7 +155,7 @@ next_msg:\tprintf(\"next\\n\");\n \th->upmsg.hook = hdr->hook;\n \n \tif (tb[NFULA_MARK-1])\n-\t\th->upmsg.mark = ntohl(*(u_int32_t *)NFA_DATA(tb[NFULA_MARK-1]));\n+\t\th->upmsg.mark = ntohl(*(uint32_t *)NFA_DATA(tb[NFULA_MARK-1]));\n \telse\n \t\th->upmsg.mark = 0;\n \ndiff --git a/src/libnetfilter_log.c b/src/libnetfilter_log.c\nindex 76ed436..e92576b 100644\n--- a/src/libnetfilter_log.c\n+++ b/src/libnetfilter_log.c\n@@ -72,7 +72,7 @@ struct nflog_g_handle\n {\n \tstruct nflog_g_handle *next;\n \tstruct nflog_handle *h;\n-\tu_int16_t id;\n+\tuint16_t id;\n \n \tnflog_callback *cb;\n \tvoid *data;\n@@ -111,7 +111,7 @@ static void add_gh(struct nflog_g_handle *gh)\n \tgh->h->gh_list = gh;\n }\n \n-static struct nflog_g_handle *find_gh(struct nflog_handle *h, u_int16_t group)\n+static struct nflog_g_handle *find_gh(struct nflog_handle *h, uint16_t group)\n {\n \tstruct nflog_g_handle *gh;\n \n@@ -124,8 +124,8 @@ static struct nflog_g_handle *find_gh(struct nflog_handle *h, u_int16_t group)\n \n /* build a NFULNL_MSG_CONFIG message */\n static int\n-__build_send_cfg_msg(struct nflog_handle *h, u_int8_t command,\n-\t\t     u_int16_t groupnum, u_int8_t pf)\n+__build_send_cfg_msg(struct nflog_handle *h, uint8_t command,\n+\t\t     uint16_t groupnum, uint8_t pf)\n {\n \tunion {\n \t\tchar buf[NFNL_HEADER_LEN\n@@ -148,7 +148,7 @@ static int __nflog_rcv_pkt(struct nlmsghdr *nlh, struct nfattr *nfa[],\n {\n \tstruct nfgenmsg *nfmsg = NLMSG_DATA(nlh);\n \tstruct nflog_handle *h = data;\n-\tu_int16_t group = ntohs(nfmsg->res_id);\n+\tuint16_t group = ntohs(nfmsg->res_id);\n \tstruct nflog_g_handle *gh = find_gh(h, group);\n \tstruct nflog_data nfldata;\n \n@@ -359,7 +359,7 @@ int nflog_close(struct nflog_handle *h)\n  *\n  * \\return integer inferior to 0 in case of failure\n  */\n-int nflog_bind_pf(struct nflog_handle *h, u_int16_t pf)\n+int nflog_bind_pf(struct nflog_handle *h, uint16_t pf)\n {\n \treturn __build_send_cfg_msg(h, NFULNL_CFG_CMD_PF_BIND, 0, pf);\n }\n@@ -373,7 +373,7 @@ int nflog_bind_pf(struct nflog_handle *h, u_int16_t pf)\n  * Unbinds the given nflog handle from processing packets belonging\n  * to the given protocol family.\n  */\n-int nflog_unbind_pf(struct nflog_handle *h, u_int16_t pf)\n+int nflog_unbind_pf(struct nflog_handle *h, uint16_t pf)\n {\n \treturn __build_send_cfg_msg(h, NFULNL_CFG_CMD_PF_UNBIND, 0, pf);\n }\n@@ -395,7 +395,7 @@ int nflog_unbind_pf(struct nflog_handle *h, u_int16_t pf)\n  * \\return a nflog_g_handle pointing to the newly created group\n  */\n struct nflog_g_handle *\n-nflog_bind_group(struct nflog_handle *h, u_int16_t num)\n+nflog_bind_group(struct nflog_handle *h, uint16_t num)\n {\n \tstruct nflog_g_handle *gh;\n \t\n@@ -461,7 +461,7 @@ int nflog_unbind_group(struct nflog_g_handle *gh)\n  * \\return -1 on error; >= otherwise.\n  */\n int nflog_set_mode(struct nflog_g_handle *gh,\n-\t\t   u_int8_t mode, u_int32_t range)\n+\t\t   uint8_t mode, uint32_t range)\n {\n \tunion {\n \t\tchar buf[NFNL_HEADER_LEN\n@@ -493,10 +493,10 @@ int nflog_set_mode(struct nflog_g_handle *gh,\n  *\n  * \\return -1 in case of error and errno is explicity set.\n  */\n-int nflog_set_timeout(struct nflog_g_handle *gh, u_int32_t timeout)\n+int nflog_set_timeout(struct nflog_g_handle *gh, uint32_t timeout)\n {\n \tunion {\n-\t\tchar buf[NFNL_HEADER_LEN+NFA_LENGTH(sizeof(u_int32_t))];\n+\t\tchar buf[NFNL_HEADER_LEN+NFA_LENGTH(sizeof(uint32_t))];\n \t\tstruct nlmsghdr nmh;\n \t} u;\n \n@@ -518,10 +518,10 @@ int nflog_set_timeout(struct nflog_g_handle *gh, u_int32_t timeout)\n  *\n  * \\return -1 in case of error and errno is explicity set.\n  */\n-int nflog_set_qthresh(struct nflog_g_handle *gh, u_int32_t qthresh)\n+int nflog_set_qthresh(struct nflog_g_handle *gh, uint32_t qthresh)\n {\n \tunion {\n-\t\tchar buf[NFNL_HEADER_LEN+NFA_LENGTH(sizeof(u_int32_t))];\n+\t\tchar buf[NFNL_HEADER_LEN+NFA_LENGTH(sizeof(uint32_t))];\n \t\tstruct nlmsghdr nmh;\n \t} u;\n \n@@ -547,10 +547,10 @@ int nflog_set_qthresh(struct nflog_g_handle *gh, u_int32_t qthresh)\n  *\n  * \\return -1 in case of error and errno is explicity set.\n  */\n-int nflog_set_nlbufsiz(struct nflog_g_handle *gh, u_int32_t nlbufsiz)\n+int nflog_set_nlbufsiz(struct nflog_g_handle *gh, uint32_t nlbufsiz)\n {\n \tunion {\n-\t\tchar buf[NFNL_HEADER_LEN+NFA_LENGTH(sizeof(u_int32_t))];\n+\t\tchar buf[NFNL_HEADER_LEN+NFA_LENGTH(sizeof(uint32_t))];\n \t\tstruct nlmsghdr nmh;\n \t} u;\n \tint status;\n@@ -581,10 +581,10 @@ int nflog_set_nlbufsiz(struct nflog_g_handle *gh, u_int32_t nlbufsiz)\n  *\n  * \\return -1 in case of error and errno is explicity set.\n  */\n-int nflog_set_flags(struct nflog_g_handle *gh, u_int16_t flags)\n+int nflog_set_flags(struct nflog_g_handle *gh, uint16_t flags)\n {\n \tunion {\n-\t\tchar buf[NFNL_HEADER_LEN+NFA_LENGTH(sizeof(u_int16_t))];\n+\t\tchar buf[NFNL_HEADER_LEN+NFA_LENGTH(sizeof(uint16_t))];\n \t\tstruct nlmsghdr nmh;\n \t} u;\n \n@@ -616,9 +616,9 @@ int nflog_set_flags(struct nflog_g_handle *gh, u_int16_t flags)\n  * The nfulnl_msg_packet_hdr structure is defined in libnetfilter_log.h as:\n  *\\verbatim\n \tstruct nfulnl_msg_packet_hdr {\n-\t        u_int16_t       hw_protocol;    // hw protocol (network order)\n-\t        u_int8_t        hook;           // netfilter hook\n-\t\tu_int8_t        _pad;\n+\t        uint16_t       hw_protocol;    // hw protocol (network order)\n+\t        uint8_t        hook;           // netfilter hook\n+\t\tuint8_t        _pad;\n \t} __attribute__ ((packed));\n \\endverbatim\n  */\n@@ -634,9 +634,9 @@ struct nfulnl_msg_packet_hdr *nflog_get_msg_packet_hdr(struct nflog_data *nfad)\n  *\n  * \\return the hardware link layer type.\n  */\n-u_int16_t nflog_get_hwtype(struct nflog_data *nfad)\n+uint16_t nflog_get_hwtype(struct nflog_data *nfad)\n {\n-\treturn ntohs(nfnl_get_data(nfad->nfa, NFULA_HWTYPE, u_int16_t));\n+\treturn ntohs(nfnl_get_data(nfad->nfa, NFULA_HWTYPE, uint16_t));\n }\n \n /**\n@@ -645,9 +645,9 @@ u_int16_t nflog_get_hwtype(struct nflog_data *nfad)\n  *\n  * \\return the size of the hardware link layer header\n  */\n-u_int16_t nflog_get_msg_packet_hwhdrlen(struct nflog_data *nfad)\n+uint16_t nflog_get_msg_packet_hwhdrlen(struct nflog_data *nfad)\n {\n-\treturn ntohs(nfnl_get_data(nfad->nfa, NFULA_HWLEN, u_int16_t));\n+\treturn ntohs(nfnl_get_data(nfad->nfa, NFULA_HWLEN, uint16_t));\n }\n \n /**\n@@ -667,9 +667,9 @@ char *nflog_get_msg_packet_hwhdr(struct nflog_data *nfad)\n  *\n  * \\return the netfilter mark currently assigned to the logged packet.\n  */\n-u_int32_t nflog_get_nfmark(struct nflog_data *nfad)\n+uint32_t nflog_get_nfmark(struct nflog_data *nfad)\n {\n-\treturn ntohl(nfnl_get_data(nfad->nfa, NFULA_MARK, u_int32_t));\n+\treturn ntohl(nfnl_get_data(nfad->nfa, NFULA_MARK, uint32_t));\n }\n \n /**\n@@ -707,9 +707,9 @@ int nflog_get_timestamp(struct nflog_data *nfad, struct timeval *tv)\n  * \\warning all nflog_get_dev() functions return 0 if not set, since linux\n  * only allows ifindex >= 1, see net/core/dev.c:2600  (in 2.6.13.1)\n  */\n-u_int32_t nflog_get_indev(struct nflog_data *nfad)\n+uint32_t nflog_get_indev(struct nflog_data *nfad)\n {\n-\treturn ntohl(nfnl_get_data(nfad->nfa, NFULA_IFINDEX_INDEV, u_int32_t));\n+\treturn ntohl(nfnl_get_data(nfad->nfa, NFULA_IFINDEX_INDEV, uint32_t));\n }\n \n /**\n@@ -720,9 +720,9 @@ u_int32_t nflog_get_indev(struct nflog_data *nfad)\n  * If the returned index is 0, the packet was locally generated or the\n  * physical input interface is no longer known (ie. POSTROUTING?).\n  */\n-u_int32_t nflog_get_physindev(struct nflog_data *nfad)\n+uint32_t nflog_get_physindev(struct nflog_data *nfad)\n {\n-\treturn ntohl(nfnl_get_data(nfad->nfa, NFULA_IFINDEX_PHYSINDEV, u_int32_t));\n+\treturn ntohl(nfnl_get_data(nfad->nfa, NFULA_IFINDEX_PHYSINDEV, uint32_t));\n }\n \n /**\n@@ -733,9 +733,9 @@ u_int32_t nflog_get_physindev(struct nflog_data *nfad)\n  * returned index is 0, the packet is destined for localhost or the output\n  * interface is not yet known (ie. PREROUTING?).\n  */\n-u_int32_t nflog_get_outdev(struct nflog_data *nfad)\n+uint32_t nflog_get_outdev(struct nflog_data *nfad)\n {\n-\treturn ntohl(nfnl_get_data(nfad->nfa, NFULA_IFINDEX_OUTDEV, u_int32_t));\n+\treturn ntohl(nfnl_get_data(nfad->nfa, NFULA_IFINDEX_OUTDEV, uint32_t));\n }\n \n /**\n@@ -749,9 +749,9 @@ u_int32_t nflog_get_outdev(struct nflog_data *nfad)\n  * \\return The index of physical interface that the packet output will be\n  * routed out.\n  */\n-u_int32_t nflog_get_physoutdev(struct nflog_data *nfad)\n+uint32_t nflog_get_physoutdev(struct nflog_data *nfad)\n {\n-\treturn ntohl(nfnl_get_data(nfad->nfa, NFULA_IFINDEX_PHYSOUTDEV, u_int32_t));\n+\treturn ntohl(nfnl_get_data(nfad->nfa, NFULA_IFINDEX_PHYSOUTDEV, uint32_t));\n }\n \n /**\n@@ -767,9 +767,9 @@ u_int32_t nflog_get_physoutdev(struct nflog_data *nfad)\n  * The nfulnl_msg_packet_hw structure is defined in libnetfilter_log.h as:\n  * \\verbatim\n         struct nfulnl_msg_packet_hw {\n-                u_int16_t       hw_addrlen;\n-                u_int16_t       _pad;\n-                u_int8_t        hw_addr[8];\n+                uint16_t       hw_addrlen;\n+                uint16_t       _pad;\n+                uint8_t        hw_addr[8];\n         } __attribute__ ((packed));\n \\endverbatim\n  */\n@@ -817,12 +817,12 @@ char *nflog_get_prefix(struct nflog_data *nfad)\n  *\n  * \\return the UID of the user that has genered the packet, if any.\n  */\n-int nflog_get_uid(struct nflog_data *nfad, u_int32_t *uid)\n+int nflog_get_uid(struct nflog_data *nfad, uint32_t *uid)\n {\n \tif (!nfnl_attr_present(nfad->nfa, NFULA_UID))\n \t\treturn -1;\n \n-\t*uid = ntohl(nfnl_get_data(nfad->nfa, NFULA_UID, u_int32_t));\n+\t*uid = ntohl(nfnl_get_data(nfad->nfa, NFULA_UID, uint32_t));\n \treturn 0;\n }\n \n@@ -832,12 +832,12 @@ int nflog_get_uid(struct nflog_data *nfad, u_int32_t *uid)\n  *\n  * \\return the GID of the user that has genered the packet, if any.\n  */\n-int nflog_get_gid(struct nflog_data *nfad, u_int32_t *gid)\n+int nflog_get_gid(struct nflog_data *nfad, uint32_t *gid)\n {\n \tif (!nfnl_attr_present(nfad->nfa, NFULA_GID))\n \t\treturn -1;\n \n-\t*gid = ntohl(nfnl_get_data(nfad->nfa, NFULA_GID, u_int32_t));\n+\t*gid = ntohl(nfnl_get_data(nfad->nfa, NFULA_GID, uint32_t));\n \treturn 0;\n }\n \n@@ -849,12 +849,12 @@ int nflog_get_gid(struct nflog_data *nfad, u_int32_t *gid)\n  *\n  * \\return the local nflog sequence number.\n  */\n-int nflog_get_seq(struct nflog_data *nfad, u_int32_t *seq)\n+int nflog_get_seq(struct nflog_data *nfad, uint32_t *seq)\n {\n \tif (!nfnl_attr_present(nfad->nfa, NFULA_SEQ))\n \t\treturn -1;\n \n-\t*seq = ntohl(nfnl_get_data(nfad->nfa, NFULA_SEQ, u_int32_t));\n+\t*seq = ntohl(nfnl_get_data(nfad->nfa, NFULA_SEQ, uint32_t));\n \treturn 0;\n }\n \n@@ -866,12 +866,12 @@ int nflog_get_seq(struct nflog_data *nfad, u_int32_t *seq)\n  *\n  * \\return the global nflog sequence number.\n  */\n-int nflog_get_seq_global(struct nflog_data *nfad, u_int32_t *seq)\n+int nflog_get_seq_global(struct nflog_data *nfad, uint32_t *seq)\n {\n \tif (!nfnl_attr_present(nfad->nfa, NFULA_SEQ_GLOBAL))\n \t\treturn -1;\n \n-\t*seq = ntohl(nfnl_get_data(nfad->nfa, NFULA_SEQ_GLOBAL, u_int32_t));\n+\t*seq = ntohl(nfnl_get_data(nfad->nfa, NFULA_SEQ_GLOBAL, uint32_t));\n \treturn 0;\n }\n \n@@ -923,7 +923,7 @@ int nflog_snprintf_xml(char *buf, size_t rem, struct nflog_data *tb, int flags)\n {\n \tstruct nfulnl_msg_packet_hdr *ph;\n \tstruct nfulnl_msg_packet_hw *hwph;\n-\tu_int32_t mark, ifi;\n+\tuint32_t mark, ifi;\n \tint size, offset = 0, len = 0, ret;\n \tchar *data;\n \ndiff --git a/utils/nfulnl_test.c b/utils/nfulnl_test.c\nindex ae5da79..dd3091b 100644\n--- a/utils/nfulnl_test.c\n+++ b/utils/nfulnl_test.c\n@@ -9,9 +9,9 @@\n static int print_pkt(struct nflog_data *ldata)\n {\n \tstruct nfulnl_msg_packet_hdr *ph = nflog_get_msg_packet_hdr(ldata);\n-\tu_int32_t mark = nflog_get_nfmark(ldata);\n-\tu_int32_t indev = nflog_get_indev(ldata);\n-\tu_int32_t outdev = nflog_get_outdev(ldata);\n+\tuint32_t mark = nflog_get_nfmark(ldata);\n+\tuint32_t indev = nflog_get_indev(ldata);\n+\tuint32_t outdev = nflog_get_outdev(ldata);\n \tchar *prefix = nflog_get_prefix(ldata);\n \tchar *payload;\n \tint payload_len = nflog_get_payload(ldata, &payload);\n-- \ncgit v1.2.3\n\n"
  },
  {
    "path": "package/libnetfilter_log/0004-include-Sync-with-current-kernel-headers.patch",
    "content": "From 614d8b6cfb969c6102ef320de22b1eb199efce2a Mon Sep 17 00:00:00 2001\nFrom: Felix Janda <felix.janda@posteo.de>\nDate: Sat, 16 May 2015 13:37:53 +0200\nSubject: include: Sync with current kernel headers\n\nSigned-off-by: Felix Janda <felix.janda@posteo.de>\nSigned-off-by: Pablo Neira Ayuso <pablo@netfilter.org>\n\n[Retrieved from:\nhttps://git.netfilter.org/libnetfilter_log/commit/?id=614d8b6cfb969c6102ef320de22b1eb199efce2a]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/libnetfilter_log/linux_nfnetlink_log.h | 51 +++++++++++++-------------\n 1 file changed, 25 insertions(+), 26 deletions(-)\n\ndiff --git a/include/libnetfilter_log/linux_nfnetlink_log.h b/include/libnetfilter_log/linux_nfnetlink_log.h\nindex 4c802c8..9f38277 100644\n--- a/include/libnetfilter_log/linux_nfnetlink_log.h\n+++ b/include/libnetfilter_log/linux_nfnetlink_log.h\n@@ -20,33 +20,31 @@ enum nfulnl_msg_types {\n };\n \n struct nfulnl_msg_packet_hdr {\n-\tu_int16_t\thw_protocol;\t/* hw protocol (network order) */\n-\tu_int8_t\thook;\t\t/* netfilter hook */\n-\tu_int8_t\t_pad;\n-} __attribute__ ((packed));\n+\t__be16\t\thw_protocol;\t/* hw protocol (network order) */\n+\t__u8\thook;\t\t/* netfilter hook */\n+\t__u8\t_pad;\n+};\n \n struct nfulnl_msg_packet_hw {\n-\tu_int16_t\thw_addrlen;\n-\tu_int16_t\t_pad;\n-\tu_int8_t\thw_addr[8];\n-} __attribute__ ((packed));\n+\t__be16\t\thw_addrlen;\n+\t__u16\t_pad;\n+\t__u8\thw_addr[8];\n+};\n \n struct nfulnl_msg_packet_timestamp {\n-\taligned_u64\tsec;\n-\taligned_u64\tusec;\n-} __attribute__ ((packed));\n-\n-#define NFULNL_PREFIXLEN\t30\t/* just like old log target */\n+\t__aligned_be64\tsec;\n+\t__aligned_be64\tusec;\n+};\n \n enum nfulnl_attr_type {\n \tNFULA_UNSPEC,\n \tNFULA_PACKET_HDR,\n-\tNFULA_MARK,\t\t\t/* u_int32_t nfmark */\n+\tNFULA_MARK,\t\t\t/* __u32 nfmark */\n \tNFULA_TIMESTAMP,\t\t/* nfulnl_msg_packet_timestamp */\n-\tNFULA_IFINDEX_INDEV,\t\t/* u_int32_t ifindex */\n-\tNFULA_IFINDEX_OUTDEV,\t\t/* u_int32_t ifindex */\n-\tNFULA_IFINDEX_PHYSINDEV,\t/* u_int32_t ifindex */\n-\tNFULA_IFINDEX_PHYSOUTDEV,\t/* u_int32_t ifindex */\n+\tNFULA_IFINDEX_INDEV,\t\t/* __u32 ifindex */\n+\tNFULA_IFINDEX_OUTDEV,\t\t/* __u32 ifindex */\n+\tNFULA_IFINDEX_PHYSINDEV,\t/* __u32 ifindex */\n+\tNFULA_IFINDEX_PHYSOUTDEV,\t/* __u32 ifindex */\n \tNFULA_HWADDR,\t\t\t/* nfulnl_msg_packet_hw */\n \tNFULA_PAYLOAD,\t\t\t/* opaque data payload */\n \tNFULA_PREFIX,\t\t\t/* string prefix */\n@@ -71,23 +69,23 @@ enum nfulnl_msg_config_cmds {\n };\n \n struct nfulnl_msg_config_cmd {\n-\tu_int8_t\tcommand;\t/* nfulnl_msg_config_cmds */\n+\t__u8\tcommand;\t/* nfulnl_msg_config_cmds */\n } __attribute__ ((packed));\n \n struct nfulnl_msg_config_mode {\n-\tu_int32_t\tcopy_range;\n-\tu_int8_t\tcopy_mode;\n-\tu_int8_t\t_pad;\n+\t__be32\t\tcopy_range;\n+\t__u8\tcopy_mode;\n+\t__u8\t_pad;\n } __attribute__ ((packed));\n \n enum nfulnl_attr_config {\n \tNFULA_CFG_UNSPEC,\n \tNFULA_CFG_CMD,\t\t\t/* nfulnl_msg_config_cmd */\n \tNFULA_CFG_MODE,\t\t\t/* nfulnl_msg_config_mode */\n-\tNFULA_CFG_NLBUFSIZ,\t\t/* u_int32_t buffer size */\n-\tNFULA_CFG_TIMEOUT,\t\t/* u_int32_t in 1/100 s */\n-\tNFULA_CFG_QTHRESH,\t\t/* u_int32_t */\n-\tNFULA_CFG_FLAGS,\t\t/* u_int16_t */\n+\tNFULA_CFG_NLBUFSIZ,\t\t/* __u32 buffer size */\n+\tNFULA_CFG_TIMEOUT,\t\t/* __u32 in 1/100 s */\n+\tNFULA_CFG_QTHRESH,\t\t/* __u32 */\n+\tNFULA_CFG_FLAGS,\t\t/* __u16 */\n \t__NFULA_CFG_MAX\n };\n #define NFULA_CFG_MAX (__NFULA_CFG_MAX -1)\n@@ -95,6 +93,7 @@ enum nfulnl_attr_config {\n #define NFULNL_COPY_NONE\t0x00\n #define NFULNL_COPY_META\t0x01\n #define NFULNL_COPY_PACKET\t0x02\n+/* 0xff is reserved, don't use it for new copy modes. */\n \n #define NFULNL_CFG_F_SEQ\t0x0001\n #define NFULNL_CFG_F_SEQ_GLOBAL\t0x0002\n-- \ncgit v1.2.3\n\n"
  },
  {
    "path": "package/libnetfilter_log/Config.in",
    "content": "config BR2_PACKAGE_LIBNETFILTER_LOG\n\tbool \"libnetfilter_log\"\n\tselect BR2_PACKAGE_LIBNFNETLINK\n\thelp\n\t  libnetfilter_log is a userspace library providing interface\n\t  to packets that have been logged by the kernel packet filter.\n\n\t  http://www.netfilter.org/projects/libnetfilter_log/\n"
  },
  {
    "path": "package/libnetfilter_log/libnetfilter_log.hash",
    "content": "# From ftp://ftp.netfilter.org/pub/libnetfilter_log/libnetfilter_log-1.0.1.tar.bz2.{md5sum,sha1sum}\nmd5\t2a4bb0654ae675a52d2e8d1c06090b94\tlibnetfilter_log-1.0.1.tar.bz2\nsha1\t0b95bcb1ad15eea906fa3607cd6c2290bd48d5bd\tlibnetfilter_log-1.0.1.tar.bz2\n\n# Hash for license file:\nsha256\t91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad\tCOPYING\n"
  },
  {
    "path": "package/libnetfilter_log/libnetfilter_log.mk",
    "content": "################################################################################\n#\n# libnetfilter_log\n#\n################################################################################\n\nLIBNETFILTER_LOG_VERSION = 1.0.1\nLIBNETFILTER_LOG_SOURCE = libnetfilter_log-$(LIBNETFILTER_LOG_VERSION).tar.bz2\nLIBNETFILTER_LOG_SITE = http://www.netfilter.org/projects/libnetfilter_log/files\nLIBNETFILTER_LOG_INSTALL_STAGING = YES\nLIBNETFILTER_LOG_DEPENDENCIES = host-pkgconf libnfnetlink\nLIBNETFILTER_LOG_AUTORECONF = YES\nLIBNETFILTER_LOG_LICENSE = GPL-2.0+\nLIBNETFILTER_LOG_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnetfilter_queue/Config.in",
    "content": "config BR2_PACKAGE_LIBNETFILTER_QUEUE\n\tbool \"libnetfilter_queue\"\n\tselect BR2_PACKAGE_LIBNFNETLINK\n\tselect BR2_PACKAGE_LIBMNL\n\thelp\n\t  libnetfilter_queue is the userspace library that provides\n\t  the programming interface to the fine-grain\n\t  connection tracking timeout infrastructure.\n\n\t  http://www.netfilter.org/projects/libnetfilter_queue/\n"
  },
  {
    "path": "package/libnetfilter_queue/libnetfilter_queue.hash",
    "content": "# From http://netfilter.org/pub/libnetfilter_queue/libnetfilter_queue-1.0.5.tar.bz2.sha256sum\nsha256  f9ff3c11305d6e03d81405957bdc11aea18e0d315c3e3f48da53a24ba251b9f5  libnetfilter_queue-1.0.5.tar.bz2\n\n# Hash for license file:\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/libnetfilter_queue/libnetfilter_queue.mk",
    "content": "################################################################################\n#\n# libnetfilter_queue\n#\n################################################################################\n\nLIBNETFILTER_QUEUE_VERSION = 1.0.5\nLIBNETFILTER_QUEUE_SOURCE = libnetfilter_queue-$(LIBNETFILTER_QUEUE_VERSION).tar.bz2\nLIBNETFILTER_QUEUE_SITE = http://www.netfilter.org/projects/libnetfilter_queue/files\nLIBNETFILTER_QUEUE_INSTALL_STAGING = YES\nLIBNETFILTER_QUEUE_DEPENDENCIES = host-pkgconf libnfnetlink libmnl\nLIBNETFILTER_QUEUE_AUTORECONF = YES\nLIBNETFILTER_QUEUE_LICENSE = GPL-2.0+\nLIBNETFILTER_QUEUE_LICENSE_FILES = COPYING\nLIBNETFILTER_QUEUE_CPE_ID_VENDOR = netfilter\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnfc/0001-autotools-make-example-build-optional.patch",
    "content": "From 874d9605aa9cd028aed149c2dd1bb410856477fb Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 21 Jun 2020 23:28:37 +0200\nSubject: [PATCH] autotools: make example build optional\n\nThis patch makes example build optional for autotools build system.\n\nIn order to keep the former behavior, example build is enabled by default.\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Retrieved (and slightly updated to remove CMakeLists.txt) from:\nhttps://git.buildroot.net/buildroot/tree/package/libnfc/0001-build-systems-make-example-build-optional.patch]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/nfc-tools/libnfc/commit/874d9605aa9cd028aed149c2dd1bb410856477fb]\n---\n Makefile.am  |  8 +++++++-\n configure.ac | 11 +++++++++++\n 2 files changed, 18 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex d2f6fc8e..516ebee2 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -2,7 +2,13 @@ ACLOCAL_AMFLAGS = -I m4\n \n AM_CFLAGS = $(LIBNFC_CFLAGS)\n \n-SUBDIRS = libnfc utils examples include contrib cmake test\n+SUBDIRS = libnfc utils\n+\n+if EXAMPLE_ENABLED\n+SUBDIRS += examples\n+endif\n+\n+SUBDIRS += include contrib cmake test\n \n pkgconfigdir = $(libdir)/pkgconfig\n pkgconfig_DATA = libnfc.pc\ndiff --git a/configure.ac b/configure.ac\nindex 280a6d08..46b65d33 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -157,6 +157,14 @@ then\n fi\n AM_CONDITIONAL(DOC_ENABLED, [test x\"$enable_doc\" = xyes])\n \n+# Example build (default: yes)\n+AC_ARG_ENABLE([example],AS_HELP_STRING([--enable-example],[Enable example build.]),[enable_example=$enableval],[enable_example=\"yes\"])\n+\n+AC_MSG_CHECKING(for example build)\n+AC_MSG_RESULT($enable_example)\n+\n+AM_CONDITIONAL(EXAMPLE_ENABLED, [test x\"$enable_example\" = xyes])\n+\n # Dependencies\n PKG_CONFIG_REQUIRES=\"\"\n \n@@ -175,7 +183,10 @@ if test x$ac_cv_with_cutter = xyes -a x$ac_cv_use_cutter = xno; then\n fi\n AM_CONDITIONAL([WITH_CUTTER], [test \"$ac_cv_use_cutter\" != \"no\"])\n \n+if test x\"$enable_example\" = \"xyes\"\n+then\n AC_CHECK_READLINE\n+fi\n \n # Help us to write great code ;-)\n CFLAGS=\"$CFLAGS -Wall -pedantic -Wextra\"\n"
  },
  {
    "path": "package/libnfc/Config.in",
    "content": "config BR2_PACKAGE_LIBNFC\n\tbool \"libnfc\"\n\thelp\n\t  Public platform independent Near Field Communication (NFC)\n\t  library.\n\n\t  http://www.libnfc.org/\n\nif BR2_PACKAGE_LIBNFC\n\nconfig BR2_PACKAGE_LIBNFC_ACR122_PCSC\n\tbool \"acr122_pcsc driver\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # pcsc-lite\n\tdepends on BR2_USE_MMU # pcsc-lite\n\tdepends on !BR2_STATIC_LIBS # pcsc-lite\n\tselect BR2_PACKAGE_PCSC_LITE\n\thelp\n\t  support for acr112_pcsc driver\n\ncomment \"acr122_pcsc driver needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_LIBNFC_ACR122_USB\n\tbool \"acr122_usb driver\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\thelp\n\t  support for acr122_usb driver\n\ncomment \"acr122_usb driver needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_LIBNFC_ACR122S\n\tbool \"acr122s driver\"\n\thelp\n\t  support for acr122s driver\n\nconfig BR2_PACKAGE_LIBNFC_ARYGON\n\tbool \"arygon driver\"\n\tdefault y\n\thelp\n\t  support for arygon driver\n\nconfig BR2_PACKAGE_LIBNFC_PN532_I2C\n\tbool \"pn532_i2c driver\"\n\thelp\n\t  support for pn532_i2c driver\n\nconfig BR2_PACKAGE_LIBNFC_PN532_SPI\n\tbool \"pn532_spi driver\"\n\thelp\n\t  support for pn532_spi driver\n\nconfig BR2_PACKAGE_LIBNFC_PN532_UART\n\tbool \"pn532_uart driver\"\n\thelp\n\t  support for pn532_uart driver\n\nconfig BR2_PACKAGE_LIBNFC_PN53X_USB\n\tbool \"pn53x_usb driver\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\thelp\n\t  support for pn53x_usb driver\n\ncomment \"pn53x_usb driver needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_LIBNFC_EXAMPLES\n\tbool \"build libnfc examples\"\n\tselect BR2_PACKAGE_READLINE\n\nendif\n"
  },
  {
    "path": "package/libnfc/libnfc.hash",
    "content": "# Locally computed:\nsha256  6d9ad31c86408711f0a60f05b1933101c7497683c2e0d8917d1611a3feba3dd5  libnfc-1.8.0.tar.bz2\nsha256  9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1  COPYING\n"
  },
  {
    "path": "package/libnfc/libnfc.mk",
    "content": "################################################################################\n#\n# libnfc\n#\n################################################################################\n\nLIBNFC_VERSION = 1.8.0\nLIBNFC_SOURCE = libnfc-$(LIBNFC_VERSION).tar.bz2\nLIBNFC_SITE = https://github.com/nfc-tools/libnfc/releases/download/libnfc-$(LIBNFC_VERSION)\nLIBNFC_LICENSE = LGPL-3.0+\nLIBNFC_LICENSE_FILES = COPYING\nLIBNFC_AUTORECONF = YES\nLIBNFC_INSTALL_STAGING = YES\n\nLIBNFC_DEPENDENCIES = host-pkgconf\n\n# N.B. The acr122 driver requires pcsc-lite.\nifeq ($(BR2_PACKAGE_LIBNFC_ACR122_PCSC),y)\nLIBNFC_DRIVER_LIST += acr122_pcsc\nLIBNFC_DEPENDENCIES += pcsc-lite\nendif\n\nifeq ($(BR2_PACKAGE_LIBNFC_ACR122_USB),y)\nLIBNFC_DRIVER_LIST += acr122_usb\nLIBNFC_DEPENDENCIES += libusb libusb-compat\nendif\n\nifeq ($(BR2_PACKAGE_LIBNFC_ACR122S),y)\nLIBNFC_DRIVER_LIST += acr122s\nendif\n\nifeq ($(BR2_PACKAGE_LIBNFC_ARYGON),y)\nLIBNFC_DRIVER_LIST += arygon\nendif\n\nifeq ($(BR2_PACKAGE_LIBNFC_PN532_I2C),y)\nLIBNFC_DRIVER_LIST += pn532_i2c\nendif\n\nifeq ($(BR2_PACKAGE_LIBNFC_PN532_SPI),y)\nLIBNFC_DRIVER_LIST += pn532_spi\nendif\n\nifeq ($(BR2_PACKAGE_LIBNFC_PN532_UART),y)\nLIBNFC_DRIVER_LIST += pn532_uart\nendif\n\nifeq ($(BR2_PACKAGE_LIBNFC_PN53X_USB),y)\nLIBNFC_DRIVER_LIST += pn53x_usb\nLIBNFC_DEPENDENCIES += libusb libusb-compat\nendif\n\nLIBNFC_CONF_OPTS = \\\n\t--with-drivers=$(subst $(space),$(comma),$(strip $(LIBNFC_DRIVER_LIST)))\n\nifeq ($(BR2_PACKAGE_LIBNFC_EXAMPLES),y)\nLIBNFC_CONF_OPTS += --enable-example\nLIBNFC_DEPENDENCIES += readline\nelse\nLIBNFC_CONF_OPTS += --disable-example\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnfnetlink/0001-uclinux.patch",
    "content": "From 8e5a9d8f32c9646d01d8c84e979892dfd28a7f7c Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Tue, 10 Sep 2013 15:35:22 -0300\nSubject: [PATCH] configure: uclinux is also linux\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 0926a1c..b979772 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -18,7 +18,7 @@ AC_DISABLE_STATIC\n AM_PROG_LIBTOOL\n \n case \"$host\" in \n-*-*-linux*) ;;\n+*-*-linux* | *-*-uclinux*) ;;\n *) AC_MSG_ERROR([Linux only, dude!]);;\n esac\n \n-- \n1.8.1.5\n\n"
  },
  {
    "path": "package/libnfnetlink/0002-include-Sync-with-kernel-headers.patch",
    "content": "From 7a1a07c0028a1c88cd7716a058697c552a563b24 Mon Sep 17 00:00:00 2001\nFrom: Felix Janda <felix.janda@posteo.de>\nDate: Sat, 16 May 2015 14:49:07 +0200\nSubject: include: Sync with kernel headers\n\nSigned-off-by: Felix Janda <felix.janda@posteo.de>\nSigned-off-by: Pablo Neira Ayuso <pablo@netfilter.org>\n\n[Retrieved from:\nhttps://git.netfilter.org/libnfnetlink/commit/?id=7a1a07c0028a1c88cd7716a058697c552a563b24]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/libnfnetlink/linux_nfnetlink.h        | 44 ++++-----------------------\n include/libnfnetlink/linux_nfnetlink_compat.h | 12 ++++----\n 2 files changed, 12 insertions(+), 44 deletions(-)\n\ndiff --git a/include/libnfnetlink/linux_nfnetlink.h b/include/libnfnetlink/linux_nfnetlink.h\nindex 76a8550..44a38d6 100644\n--- a/include/libnfnetlink/linux_nfnetlink.h\n+++ b/include/libnfnetlink/linux_nfnetlink.h\n@@ -25,9 +25,9 @@ enum nfnetlink_groups {\n /* General form of address family dependent message.\n  */\n struct nfgenmsg {\n-\tu_int8_t  nfgen_family;\t\t/* AF_xxx */\n-\tu_int8_t  version;\t\t/* nfnetlink version */\n-\tu_int16_t    res_id;\t\t/* resource id */\n+\t__u8  nfgen_family;\t\t/* AF_xxx */\n+\t__u8  version;\t\t/* nfnetlink version */\n+\t__be16    res_id;\t\t/* resource id */\n };\n \n #define NFNETLINK_V0\t0\n@@ -46,40 +46,8 @@ struct nfgenmsg {\n #define NFNL_SUBSYS_CTNETLINK_EXP\t2\n #define NFNL_SUBSYS_QUEUE\t\t3\n #define NFNL_SUBSYS_ULOG\t\t4\n-#define NFNL_SUBSYS_COUNT\t\t5\n+#define NFNL_SUBSYS_OSF\t\t\t5\n+#define NFNL_SUBSYS_IPSET\t\t6\n+#define NFNL_SUBSYS_COUNT\t\t7\n \n-#ifdef __KERNEL__\n-\n-#include <linux/netlink.h>\n-#include <linux/capability.h>\n-#include <net/netlink.h>\n-\n-struct nfnl_callback\n-{\n-\tint (*call)(struct sock *nl, struct sk_buff *skb, \n-\t\tstruct nlmsghdr *nlh, struct nlattr *cda[]);\n-\tconst struct nla_policy *policy;\t/* netlink attribute policy */\n-\tconst u_int16_t attr_count;\t\t/* number of nlattr's */\n-};\n-\n-struct nfnetlink_subsystem\n-{\n-\tconst char *name;\n-\t__u8 subsys_id;\t\t\t/* nfnetlink subsystem ID */\n-\t__u8 cb_count;\t\t\t/* number of callbacks */\n-\tconst struct nfnl_callback *cb;\t/* callback for individual types */\n-};\n-\n-extern int nfnetlink_subsys_register(const struct nfnetlink_subsystem *n);\n-extern int nfnetlink_subsys_unregister(const struct nfnetlink_subsystem *n);\n-\n-extern int nfnetlink_has_listeners(unsigned int group);\n-extern int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, \n-\t\t\t  int echo);\n-extern int nfnetlink_unicast(struct sk_buff *skb, u_int32_t pid, int flags);\n-\n-#define MODULE_ALIAS_NFNL_SUBSYS(subsys) \\\n-\tMODULE_ALIAS(\"nfnetlink-subsys-\" __stringify(subsys))\n-\n-#endif\t/* __KERNEL__ */\n #endif\t/* _NFNETLINK_H */\ndiff --git a/include/libnfnetlink/linux_nfnetlink_compat.h b/include/libnfnetlink/linux_nfnetlink_compat.h\nindex e145176..74b9e55 100644\n--- a/include/libnfnetlink/linux_nfnetlink_compat.h\n+++ b/include/libnfnetlink/linux_nfnetlink_compat.h\n@@ -1,6 +1,8 @@\n #ifndef _NFNETLINK_COMPAT_H\n #define _NFNETLINK_COMPAT_H\n-#ifndef __KERNEL__\n+\n+#include <linux/types.h>\n+\n /* Old nfnetlink macros for userspace */\n \n /* nfnetlink groups: Up to 32 maximum */\n@@ -18,10 +20,9 @@\n  * ! nfnetlink use the same attributes methods. - J. Schulist.\n  */\n \n-struct nfattr\n-{\n-\tu_int16_t nfa_len;\n-\tu_int16_t nfa_type;\t/* we use 15 bits for the type, and the highest\n+struct nfattr {\n+\t__u16 nfa_len;\n+\t__u16 nfa_type;\t/* we use 15 bits for the type, and the highest\n \t\t\t\t * bit to indicate whether the payload is nested */\n };\n \n@@ -57,5 +58,4 @@ struct nfattr\n         + NLMSG_ALIGN(sizeof(struct nfgenmsg))))\n #define NFM_PAYLOAD(n)  NLMSG_PAYLOAD(n, sizeof(struct nfgenmsg))\n \n-#endif /* ! __KERNEL__ */\n #endif /* _NFNETLINK_COMPAT_H */\n-- \ncgit v1.2.3\n\n"
  },
  {
    "path": "package/libnfnetlink/0002-musl.patch",
    "content": "Include <sys/types.h> to get the u_int* definitions\n\nThis is needed to fix the build with the musl C library, and this\npatch comes from\nhttp://git.alpinelinux.org/cgit/aports/plain/main/libnfnetlink/musl-fix-includes.patch.\n\nIt will no longer be needed with upcoming upstream releases of\nlibnfnetlink, since they have switched to use the <stdint.h> types\ninstead. However this change was too invasive to backport.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\n--- libnfnetlink-1.0.1.orig/include/libnfnetlink/linux_nfnetlink.h\n+++ libnfnetlink-1.0.1/include/libnfnetlink/linux_nfnetlink.h\n@@ -1,6 +1,6 @@\n #ifndef _NFNETLINK_H\n #define _NFNETLINK_H\n-#include <linux/types.h>\n+#include <sys/types.h>\n #include <libnfnetlink/linux_nfnetlink_compat.h>\n \n enum nfnetlink_groups {\n--- libnfnetlink-1.0.1.orig/include/libnfnetlink/libnfnetlink.h\n+++ libnfnetlink-1.0.1/include/libnfnetlink/libnfnetlink.h\n@@ -15,6 +15,7 @@\n #define aligned_u64 unsigned long long __attribute__((aligned(8)))\n #endif\n \n+#include <sys/types.h>\n #include <sys/socket.h>\t/* for sa_family_t */\n #include <linux/netlink.h>\n #include <libnfnetlink/linux_nfnetlink.h>\n"
  },
  {
    "path": "package/libnfnetlink/Config.in",
    "content": "config BR2_PACKAGE_LIBNFNETLINK\n\tbool \"libnfnetlink\"\n\thelp\n\t  libnfnetlink is the low-level library for netfilter related\n\t  kernel/userspace communication.\n\t  It provides a generic messaging infrastructure for in-kernel\n\t  netfilter subsystems (such as nfnetlink_log, nfnetlink_queue,\n\t  nfnetlink_conntrack) and their respective users\n\t  and/or management tools in userspace.\n\n\t  http://www.netfilter.org/projects/libnfnetlink/\n"
  },
  {
    "path": "package/libnfnetlink/libnfnetlink.hash",
    "content": "# From ftp://ftp.netfilter.org/pub/libnfnetlink/libnfnetlink-1.0.1.tar.bz2.{md5sum,sha1sum}\nmd5\t98927583d2016a9fb1936fed992e2c5e\tlibnfnetlink-1.0.1.tar.bz2\nsha1\t27ae2dfbd976e28cb7a417f9e946c901f512dd9a\tlibnfnetlink-1.0.1.tar.bz2\n\n# Hash for license file:\nsha256\t91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad\tCOPYING\n"
  },
  {
    "path": "package/libnfnetlink/libnfnetlink.mk",
    "content": "################################################################################\n#\n# libnfnetlink\n#\n################################################################################\n\nLIBNFNETLINK_VERSION = 1.0.1\nLIBNFNETLINK_SOURCE = libnfnetlink-$(LIBNFNETLINK_VERSION).tar.bz2\nLIBNFNETLINK_SITE = http://www.netfilter.org/projects/libnfnetlink/files\nLIBNFNETLINK_AUTORECONF = YES\nLIBNFNETLINK_INSTALL_STAGING = YES\nLIBNFNETLINK_LICENSE = GPL-2.0\nLIBNFNETLINK_LICENSE_FILES = COPYING\nLIBNFNETLINK_CPE_ID_VENDOR = netfilter\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnfs/0001-Fix-include-sys-time.h.patch",
    "content": "From 9df082012cba1dc32d83e5e8b0bdc0892f250058 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Mon, 5 Nov 2018 00:43:07 +0100\nSubject: [PATCH] Fix include sys/time.h\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nPOSIX says `struct timeval` is defined if <sys/time.h> is included.\n\nInstead of the mess that is currently done based on the system on which\nthe stuff is being compiled, include it unconditionally.\n\nReported upstream:\nhttps://github.com/sahlberg/libnfs/issues/272\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n include/nfsc/libnfs.h | 5 -----\n 1 file changed, 5 deletions(-)\n\ndiff --git a/include/nfsc/libnfs.h b/include/nfsc/libnfs.h\nindex 09dcf1c..b6db58c 100755\n--- a/include/nfsc/libnfs.h\n+++ b/include/nfsc/libnfs.h\n@@ -24,12 +24,7 @@\n #define _LIBNFS_H_\n \n #include <stdint.h>\n-#if defined(__ANDROID__) || defined(AROS) \\\n- || ( defined(__APPLE__) && defined(__MACH__) )\n #include <sys/time.h>\n-#else\n-#include <time.h>\n-#endif\n \n #ifdef __cplusplus\n extern \"C\" {\n-- \n2.19.1\n\n"
  },
  {
    "path": "package/libnfs/Config.in",
    "content": "config BR2_PACKAGE_LIBNFS\n\tbool \"libnfs\"\n\tdepends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc\n\tselect BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  nfs userspace implementation.\n\n\t  http://github.com/sahlberg/libnfs\n\ncomment \"libnfs needs a toolchain w/ threads\"\n\tdepends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC)\n"
  },
  {
    "path": "package/libnfs/libnfs.hash",
    "content": "# Locally calculated\nsha256 6ee77e9fe220e2d3e3b1f53cfea04fb319828cc7dbb97dd9df09e46e901d797d  libnfs-4.0.0.tar.gz\nsha256 edd960c0142b8ada98b43b6396b78f4e557b0bc70ac601a51e397ad04070e2c5  COPYING\nsha256 d9406ced95457941032aa11d04623b8ab71f2827a3395ebef137aec475be35b1  LICENCE-BSD.txt\nsha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENCE-LGPL-2.1.txt\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENCE-GPL-3.txt\n"
  },
  {
    "path": "package/libnfs/libnfs.mk",
    "content": "################################################################################\n#\n# libnfs\n#\n################################################################################\n\nLIBNFS_VERSION = 4.0.0\nLIBNFS_SITE = $(call github,sahlberg,libnfs,libnfs-$(LIBNFS_VERSION))\nLIBNFS_INSTALL_STAGING = YES\nLIBNFS_AUTORECONF = YES\nLIBNFS_LICENSE = LGPL-2.1+ (library), BSD-2-Clause (protocol, .x files), GPL-3.0+ (examples)\nLIBNFS_LICENSE_FILES = COPYING LICENCE-BSD.txt LICENCE-LGPL-2.1.txt LICENCE-GPL-3.txt\nLIBNFS_DEPENDENCIES = host-pkgconf\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nLIBNFS_DEPENDENCIES += libtirpc\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnftnl/Config.in",
    "content": "comment \"libnftnl needs a toolchain w/ headers >= 3.12\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\nconfig BR2_PACKAGE_LIBNFTNL\n\tbool \"libnftnl\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\tselect BR2_PACKAGE_LIBMNL\n\thelp\n\t  libnftnl is a userspace library providing a low-level\n\t  netlink programming interface (API) to the in-kernel\n\t  nf_tables subsystem. The library libnftnl has been\n\t  previously known as libnftables. This library is\n\t  currently used by nftables.\n\n\t  http://netfilter.org/projects/libnftnl/index.html\n\nif BR2_PACKAGE_LIBNFTNL\n\nconfig BR2_PACKAGE_LIBNFTNL_JSON\n\tbool \"enable JSON support\"\n\tselect BR2_PACKAGE_JANSSON\n\thelp\n\t  Enable JSON parsing support\n\nendif\n"
  },
  {
    "path": "package/libnftnl/libnftnl.hash",
    "content": "# From http://www.netfilter.org/projects/libnftnl/downloads.html\nsha256  90b01fddfe9be8c3245c3ba5ff5a4424a8df708828f92b2b361976b658c074f5  libnftnl-1.2.0.tar.bz2\nsha256  98193898c663001eff2fdcfb676e210c13042bc1a05e8d570c363efa396f8e24  COPYING\n"
  },
  {
    "path": "package/libnftnl/libnftnl.mk",
    "content": "################################################################################\n#\n# libnftnl\n#\n################################################################################\n\nLIBNFTNL_VERSION = 1.2.0\nLIBNFTNL_SITE = https://netfilter.org/projects/libnftnl/files\nLIBNFTNL_SOURCE = libnftnl-$(LIBNFTNL_VERSION).tar.bz2\nLIBNFTNL_LICENSE = GPL-2.0+\nLIBNFTNL_LICENSE_FILES = COPYING\nLIBNFTNL_INSTALL_STAGING = YES\nLIBNFTNL_DEPENDENCIES = host-pkgconf libmnl\n\nifeq ($(BR2_PACKAGE_LIBNFTNL_JSON),y)\nLIBNFTNL_CONF_OPTS += --with-json-parsing\nLIBNFTNL_DEPENDENCIES += jansson\nelse\nLIBNFTNL_CONF_OPTS += --without-json-parsing\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnice/Config.in",
    "content": "config BR2_PACKAGE_LIBNICE\n\tbool \"libnice\"\n\tdepends on !BR2_STATIC_LIBS # gnutls\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Libnice is an implementation of the IETF's Interactive\n\t  Connectivity Establishment (ICE) standard (RFC 5245) and the\n\t  Session Traversal Utilities for NAT (STUN) standard (RFC\n\t  5389).\n\n\t  It provides a GLib-based library, libnice and a Glib-free\n\t  library, libstun as well as GStreamer elements.\n\n\t  http://nice.freedesktop.org/wiki/\n\ncomment \"libnice needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libnice/libnice.hash",
    "content": "# Locally computed after checking pgp signature\nsha256  5eabd25ba2b54e817699832826269241abaa1cf78f9b240d1435f936569273f4  libnice-0.1.18.tar.gz\n\n# Hash for license files:\nsha256  9246b2ee8b1db30cf03d5d9719ad8bb5edce1cadc85f8cfef319c23d24d950b5  COPYING\nsha256  3b3c75ae6c663c4f93987647eb5463d33dc1602a1aded3ac479773f2c3928e3a  COPYING.MPL\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING.LGPL\n"
  },
  {
    "path": "package/libnice/libnice.mk",
    "content": "################################################################################\n#\n# libnice\n#\n################################################################################\n\nLIBNICE_VERSION = 0.1.18\nLIBNICE_SITE = http://nice.freedesktop.org/releases\nLIBNICE_LICENSE = MPL-1.1 or LGPL-2.1\nLIBNICE_LICENSE_FILES = COPYING COPYING.MPL COPYING.LGPL\nLIBNICE_DEPENDENCIES = libglib2 host-pkgconf\nLIBNICE_INSTALL_STAGING = YES\nLIBNICE_CONF_OPTS = \\\n\t-Dexamples=disabled \\\n\t-Dtests=disabled\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nLIBNICE_CONF_OPTS += -Dcrypto-library=gnutls\nLIBNICE_DEPENDENCIES += gnutls\nelse\nLIBNICE_CONF_OPTS += -Dcrypto-library=openssl\nLIBNICE_DEPENDENCIES += openssl\nendif\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBNICE_CONF_OPTS += -Dintrospection=enabled\nLIBNICE_DEPENDENCIES += gobject-introspection\nelse\nLIBNICE_CONF_OPTS += -Dintrospection=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y)\nLIBNICE_CONF_OPTS += -Dgstreamer=enabled\nLIBNICE_DEPENDENCIES += gst1-plugins-base\nelse\nLIBNICE_CONF_OPTS += -Dgstreamer=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libnids/0001-libpcap-use-pkg-config.patch",
    "content": "configure.in: use pkg-config for libpcap detection\n\nThe detection of libpcap was based in ${prefix}, which doesn't make\nsense in a cross-compilation context and can cause host leakage into\nthe target build.\n\nSo instead, let's use pkg-config to detect libpcap, since it is anyway\nalready use in this configure.in to detect libglib.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n\nIndex: b/configure.in\n===================================================================\n--- a/configure.in\n+++ b/configure.in\n@@ -75,25 +75,13 @@\n      fi\n      ;;\n   esac ],\n-[ if test -f ${prefix}/include/pcap.h; then\n-     PCAP_CFLAGS=\"-I${prefix}/include\"\n-     PCAPLIB=\"-L${exec_prefix}/lib -lpcap\"\n-  elif test -f /usr/include/pcap/pcap.h; then\n-     PCAP_CFLAGS=\"-I/usr/include/pcap\"\n-     PCAPLIB=\"-lpcap\"\n-  else\n-\tTMP=$LIBS\n-\tLIBS=\"-lpcap $LIBS\"\n-\tAC_TRY_LINK([#include <pcap.h>], pcap_open_offline(\"\",\"\"),\n-\tLIBPCAP_FOUND=1,LIBPCAP_FOUND=0)\n-\tLIBS=$TMP\n-\tif test $LIBPCAP_FOUND = 1 ; then\n-\t\tPCAPLIB=\"-lpcap\"\n-\telse\n-\t\tAC_ERROR(libpcap not found)\n-\tfi\n-  fi\n-  AC_MSG_RESULT(yes) ]\n+[\n+    PKG_PROG_PKG_CONFIG\n+    PKG_CHECK_MODULES(LIBPCAP, libpcap)\n+    AC_MSG_RESULT(yes)\n+    PCAP_CFLAGS=${LIBPCAP_CFLAGS}\n+    PCAPLIB=${LIBPCAP_LIBS}\n+]\n )\n AC_SUBST(PCAP_CFLAGS)\n AC_SUBST(PCAPLIB)\n"
  },
  {
    "path": "package/libnids/Config.in",
    "content": "config BR2_PACKAGE_LIBNIDS\n\tbool \"libnids\"\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  Libnids is an implementation of an E-component of Network\n\t  Intrusion Detection System.\n\n\t  libnids watches all local network traffic, and provides\n\t  convenient information on them to perform further analysis.\n\n\t  Libnids offers IP defragmentation, TCP stream assembly, TCP\n\t  port scan detection.\n\n\t  http://libnids.sourceforge.net/\n"
  },
  {
    "path": "package/libnids/libnids.hash",
    "content": "# Locally calculated\nsha256 314b4793e0902fbf1fdb7fb659af37a3c1306ed1aad5d1c84de6c931b351d359  libnids-1.24.tar.gz\nsha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/libnids/libnids.mk",
    "content": "################################################################################\n#\n# libnids\n#\n################################################################################\n\nLIBNIDS_VERSION = 1.24\nLIBNIDS_SITE = https://sourceforge.net/projects/libnids/files/libnids/$(LIBNIDS_VERSION)\nLIBNIDS_LICENSE = GPL-2.0\nLIBNIDS_LICENSE_FILES = COPYING\nLIBNIDS_CPE_ID_VENDOR = libnids_project\nLIBNIDS_INSTALL_STAGING = YES\nLIBNIDS_DEPENDENCIES = host-pkgconf libpcap\nLIBNIDS_AUTORECONF = YES\n\n# disable libnet if not available\n# Tests in configure.in expect --with-libnet=$build_dir\n# not an installation patch like in our context.\n# We use with-libnet=yes to skip the unusual paths tests.\n# But 'LNETLIB' gets left out, so we need to define it ourselves.\nifeq ($(BR2_PACKAGE_LIBNET),y)\nLIBNIDS_DEPENDENCIES += libnet\nLIBNIDS_CONF_OPTS += --enable-libnet --with-libnet=yes LNETLIB=-lnet\nelse\nLIBNIDS_CONF_OPTS += --disable-libnet\nendif\n\n# disable libglib2 if not available\n# The test in configure.in is flawed: passing --enable-libglib would also\n# disable it. Only when neither is passed will the autodetection test be\n# executed.\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nLIBNIDS_DEPENDENCIES += libglib2\nelse\nLIBNIDS_CONF_OPTS += --disable-libglib\nendif\n\n# hand-written Makefile.in, not using automake, needs a custom\n# variable for the installation path.\nLIBNIDS_INSTALL_STAGING_OPTS = install_prefix=$(STAGING_DIR) install\nLIBNIDS_INSTALL_TARGET_OPTS = install_prefix=$(TARGET_DIR) install\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnl/0001-build-add-Libs.private-field-in-libnl-pkg-config-fil.patch",
    "content": "From db0d59cd06f3ffd350379847c0885e1bfb85af0f Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 7 Mar 2015 11:34:42 +0100\nSubject: [PATCH 2/2] build: add Libs.private field in libnl pkg-config file\n\nIn order to support static linking, the libnl pkg-config file should\nindicate in its Libs.private field the libraries that libnl-3.0.a\nrequires. The LIBS variable contains the appropriate list of\nlibraries: -lm in all cases, and -lpthread when pthread support is\nenabled. This allows to statically link applications against libnl\nproperly.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n libnl-3.0.pc.in | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/libnl-3.0.pc.in b/libnl-3.0.pc.in\nindex b87e3dc..ddbc999 100644\n--- a/libnl-3.0.pc.in\n+++ b/libnl-3.0.pc.in\n@@ -7,4 +7,5 @@ Name: libnl\n Description: Convenience library for netlink sockets\n Version: @PACKAGE_VERSION@\n Libs: -L${libdir} -lnl-@MAJ_VERSION@\n+Libs.private: @LIBS@\n Cflags: -I${includedir}/libnl@MAJ_VERSION@\n-- \n2.1.0\n\n"
  },
  {
    "path": "package/libnl/0002-Add-musl-workaround-to-the-libc-compat.h-copy.patch",
    "content": "From be07fdbc9658de19304defa7538f219cd3f21ec0 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Sun, 12 Mar 2017 08:52:20 +0200\nSubject: [PATCH] Add musl workaround to the libc-compat.h copy\n\nThe libc-compat.h kernel header uses glibc specific macros to solve conflicts\nwith libc provided headers. This patch makes libc-compat.h work also for musl\nlibc.\n\nFuture rebase note: when upstream updates libc-compat.h some additional macro\ndefinitions will be needed. See the Buildroot iproute2 patch\npackage/iproute2/0001-Add-the-musl-workaround-to-the-libc-compat.h-copy.patch.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: libc-compat.h is a local copy of a kernel headers. A proper\nmusl fix must go to the kernel first.\n---\n include/linux-private/linux/libc-compat.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/include/linux-private/linux/libc-compat.h b/include/linux-private/linux/libc-compat.h\nindex 9bed5b6ae4d9..e2562a819464 100644\n--- a/include/linux-private/linux/libc-compat.h\n+++ b/include/linux-private/linux/libc-compat.h\n@@ -49,7 +49,7 @@\n #define _LIBC_COMPAT_H\n \n /* We have included glibc headers... */\n-#if defined(__GLIBC__)\n+#if 1\n \n /* Coordinate with glibc netinet/in.h header. */\n #if defined(_NETINET_IN_H)\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/libnl/Config.in",
    "content": "config BR2_PACKAGE_LIBNL\n\tbool \"libnl\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  A library for applications dealing with netlink socket.\n\n\t  https://github.com/thom311/libnl\n\nif BR2_PACKAGE_LIBNL\n\nconfig BR2_PACKAGE_LIBNL_TOOLS\n\tbool \"install tools\"\n\t# uses <dlfcn.h>\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Install binary tools.\n\ncomment \"libnl tools needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\nendif\n\ncomment \"libnl needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libnl/libnl.hash",
    "content": "# From https://github.com/thom311/libnl/releases/download/libnl3_5_0/libnl-3.5.0.tar.gz.md5sum\nmd5 74ba57b1b1d6f9f92268aa8141d8e8e4  libnl-3.5.0.tar.gz\n# From https://github.com/thom311/libnl/releases/download/libnl3_5_0/libnl-3.5.0.tar.gz.sha256sum\nsha256 352133ec9545da76f77e70ccb48c9d7e5324d67f6474744647a7ed382b5e05fa  libnl-3.5.0.tar.gz\n# Locally calculated\nsha256\tdc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\tCOPYING\n"
  },
  {
    "path": "package/libnl/libnl.mk",
    "content": "################################################################################\n#\n# libnl\n#\n################################################################################\n\nLIBNL_VERSION = 3.5.0\nLIBNL_SITE = https://github.com/thom311/libnl/releases/download/libnl$(subst .,_,$(LIBNL_VERSION))\nLIBNL_LICENSE = LGPL-2.1+\nLIBNL_LICENSE_FILES = COPYING\nLIBNL_CPE_ID_VENDOR = libnl_project\n\nLIBNL_INSTALL_STAGING = YES\nLIBNL_DEPENDENCIES = host-bison host-flex host-pkgconf\n\nifeq ($(BR2_PACKAGE_LIBNL_TOOLS),y)\nLIBNL_CONF_OPTS += --enable-cli\nelse\nLIBNL_CONF_OPTS += --disable-cli\nendif\n\nifeq ($(BR2_PACKAGE_CHECK),y)\nLIBNL_DEPENDENCIES += check\nLIBNL_CONF_OPTS += --enable-unit-tests\nelse\nLIBNL_CONF_OPTS += --disable-unit-tests\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnpth/Config.in",
    "content": "config BR2_PACKAGE_LIBNPTH\n\tbool \"libnpth\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  nPth is a library to provide the GNU Pth API and thus a\n\t  non-preemptive threads implementation.\n\n\t  https://www.gnupg.org/related_software/npth/index.html\n\ncomment \"libnpth needs a toolchain w/ threads support\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/libnpth/libnpth.hash",
    "content": "# Locally calculated after checking signature\n# https://gnupg.org/ftp/gcrypt/npth/npth-1.6.tar.bz2.sig\n# using key D8692123C4065DEA5E0F3AB5249B39D24F25E3B6\nsha256 1393abd9adcf0762d34798dc34fdcf4d0d22a8410721e76f1e3afcd1daa4e2d1  npth-1.6.tar.bz2\n\n# Hash for license file:\nsha256 ce64d5f7b49ea6d80fdb6d4cdee6839d1a94274f7493dc797c3b55b65ec8e9ed  COPYING.LIB\n"
  },
  {
    "path": "package/libnpth/libnpth.mk",
    "content": "################################################################################\n#\n# libnpth\n#\n################################################################################\n\nLIBNPTH_VERSION = 1.6\nLIBNPTH_SOURCE = npth-$(LIBNPTH_VERSION).tar.bz2\nLIBNPTH_SITE = https://www.gnupg.org/ftp/gcrypt/npth\nLIBNPTH_LICENSE = LGPL-2.0+\nLIBNPTH_LICENSE_FILES = COPYING.LIB\nLIBNPTH_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnpupnp/Config.in",
    "content": "config BR2_PACKAGE_LIBNPUPNP\n\tbool \"libnpupnp\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBMICROHTTPD\n\thelp\n\t  npupnp (new pupnp or not pupnp ?) is an UPnP library derived\n\t  from the venerable pupnp (https://github.com/pupnp/pupnp),\n\t  based on its 1.6.x branch (around 1.6.25).\n\n\t  https://www.lesbonscomptes.com/upmpdcli/libnpupnp.html\n\ncomment \"libnpupnp needs a toolchain w/ C++, threads, gcc >= 4.9\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/libnpupnp/libnpupnp.hash",
    "content": "# Hash from: http://www.lesbonscomptes.com/upmpdcli/downloads/libnpupnp-4.1.4.tar.gz.sha256\nsha256  03506f02546e3b3d31b389e046c4691f020b82d315426ce79f1e2b1eb7958656  libnpupnp-4.1.4.tar.gz\n\n# Hash for license file:\nsha256  c8b99423cad48bb44e2cf52a496361404290865eac259a82da6d1e4331ececb3  COPYING\n"
  },
  {
    "path": "package/libnpupnp/libnpupnp.mk",
    "content": "################################################################################\n#\n# libnpupnp\n#\n################################################################################\n\nLIBNPUPNP_VERSION = 4.1.4\nLIBNPUPNP_SITE = http://www.lesbonscomptes.com/upmpdcli/downloads\nLIBNPUPNP_LICENSE = BSD-3-Clause\nLIBNPUPNP_LICENSE_FILES = COPYING\nLIBNPUPNP_INSTALL_STAGING = YES\nLIBNPUPNP_DEPENDENCIES = expat libcurl libmicrohttpd\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libnspr/Config.in",
    "content": "config BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT\n\tdef_bool y\n\nif BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT\n\nconfig BR2_PACKAGE_LIBNSPR\n\tbool \"libnspr\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  NSPR is the Netscape Portable Runtime library which provides\n\t  a platform-neutral API for system level and libc like\n\t  functions. The library is used by the Mozilla project as well\n\t  as others.\n\n\t  http://www.mozilla.org/projects/nspr/\n\ncomment \"libnspr needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nendif\n"
  },
  {
    "path": "package/libnspr/libnspr.hash",
    "content": "# From https://ftp.mozilla.org/pub/nspr/releases/v4.32/src/SHA256SUMS\nsha256  bb6bf4f534b9559cf123dcdc6f9cd8167de950314a90a88b2a329c16836e7f6c  nspr-4.32.tar.gz\n# Locally calculated\nsha256  fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85  nspr/LICENSE\n"
  },
  {
    "path": "package/libnspr/libnspr.mk",
    "content": "################################################################################\n#\n# libnspr\n#\n################################################################################\n\nLIBNSPR_VERSION = 4.32\nLIBNSPR_SOURCE = nspr-$(LIBNSPR_VERSION).tar.gz\nLIBNSPR_SITE = https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v$(LIBNSPR_VERSION)/src\nLIBNSPR_SUBDIR = nspr\nLIBNSPR_INSTALL_STAGING = YES\nLIBNSPR_CONFIG_SCRIPTS = nspr-config\nLIBNSPR_LICENSE = MPL-2.0\nLIBNSPR_LICENSE_FILES = nspr/LICENSE\nLIBNSPR_CPE_ID_VENDOR = mozilla\nLIBNSPR_CPE_ID_PRODUCT = netscape_portable_runtime\n\n# Set the host CFLAGS and LDFLAGS so NSPR does not guess wrongly\nLIBNSPR_CONF_ENV = \\\n\tHOST_CFLAGS=\"-g -O2\" \\\n\tHOST_LDFLAGS=\"-lc\"\n# NSPR mixes up --build and --host\nLIBNSPR_CONF_OPTS = --host=$(GNU_HOST_NAME)\nLIBNSPR_CONF_OPTS += --$(if $(BR2_ARCH_IS_64),en,dis)able-64bit\n\n# ./nspr/pr/include/md/_linux.h tests only __GLIBC__ version to detect\n# c-library features, list musl features here for now (taken from\n# Alpine Linux).\nifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)\nLIBNSPR_CFLAGS += \\\n\t-D_PR_POLL_AVAILABLE \\\n\t-D_PR_HAVE_OFF64_T \\\n\t-D_PR_INET6 \\\n\t-D_PR_HAVE_INET_NTOP \\\n\t-D_PR_HAVE_GETHOSTBYNAME2 \\\n\t-D_PR_HAVE_GETADDRINFO \\\n\t-D_PR_INET6_PROBE\nendif\n\nLIBNSPR_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) $(LIBNSPR_CFLAGS)\"\n\nifeq ($(BR2_STATIC_LIBS),y)\nLIBNSPR_MAKE_OPTS = SHARED_LIBRARY=\nLIBNSPR_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) SHARED_LIBRARY= install\nLIBNSPR_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) SHARED_LIBRARY= install\nendif\n\nifeq ($(BR2_SHARED_LIBS),y)\nLIBNSPR_MAKE_OPTS = LIBRARY=\nLIBNSPR_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) LIBRARY= install\nLIBNSPR_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LIBRARY= install\nendif\n\nHOST_LIBNSPR_CONF_OPTS += --$(if $(filter %64,$(HOSTARCH)),en,dis)able-64bit\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libnss/Config.in",
    "content": "config BR2_PACKAGE_LIBNSS\n\tbool \"libnss\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnspr\n\tdepends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT # libnspr\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBNSPR\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Network Security Services (NSS) is a set of libraries designed\n\t  to support development of security-enabled client and server\n\t  applications. Applications built with NSS can support SSL v2\n\t  and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME,\n\t  and X.509 v3 certificates.\n\n\t  http://www.mozilla.org/projects/security/pki/nss/\n\nif BR2_PACKAGE_LIBNSS\n\nconfig BR2_PACKAGE_LIBNSS_ARCH\n\tstring\n\tdefault \"aarch64\" if BR2_aarch64_be\n\tdefault \"ppc\"     if BR2_powerpc\n\tdefault \"ppc64\"   if BR2_powerpc64\n\tdefault \"ppc64le\" if BR2_powerpc64le\n\tdefault BR2_ARCH\n\nendif\n\ncomment \"libnss needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libnss/libnss.hash",
    "content": "# From https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_73_RTM/src/SHA256SUMS\nsha256  566d3a68da9b10d7da9ef84eb4fe182f8f04e20d85c55d1bf360bb2c0096d8e5  nss-3.73.tar.gz\n# Locally calculated\nsha256  a20c1a32d1f8102432360b42e932869f7c11c7cdbacf9cac554c422132af47f4  nss/COPYING\n"
  },
  {
    "path": "package/libnss/libnss.mk",
    "content": "################################################################################\n#\n# libnss\n#\n################################################################################\n\nLIBNSS_VERSION = 3.73\nLIBNSS_SOURCE = nss-$(LIBNSS_VERSION).tar.gz\nLIBNSS_SITE = https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_$(subst .,_,$(LIBNSS_VERSION))_RTM/src\nLIBNSS_DISTDIR = dist\nLIBNSS_INSTALL_STAGING = YES\nLIBNSS_DEPENDENCIES = libnspr sqlite zlib\nLIBNSS_LICENSE = MPL-2.0\nLIBNSS_LICENSE_FILES = nss/COPYING\nLIBNSS_CPE_ID_VENDOR = mozilla\nLIBNSS_CPE_ID_PRODUCT = nss\n\nLIBNSS_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85862),y)\nLIBNSS_CFLAGS += -O0\nendif\n\n# Need to pass down TARGET_CFLAGS and TARGET_LDFLAGS\ndefine LIBNSS_FIXUP_LINUX_MK\n\techo 'OS_CFLAGS += $(LIBNSS_CFLAGS)' >> $(@D)/nss/coreconf/Linux.mk\n\techo 'LDFLAGS += $(TARGET_LDFLAGS)' >> $(@D)/nss/coreconf/Linux.mk\nendef\n\nLIBNSS_PRE_CONFIGURE_HOOKS += LIBNSS_FIXUP_LINUX_MK\n\n# --gc-sections triggers binutils ld segfault\n# https://sourceware.org/bugzilla/show_bug.cgi?id=21180\nifeq ($(BR2_microblaze),y)\ndefine LIBNSS_DROP_GC_SECTIONS\n\tsed -i 's:-Wl,--gc-sections::g' $(@D)/nss/coreconf/Linux.mk\nendef\n\nLIBNSS_PRE_CONFIGURE_HOOKS += LIBNSS_DROP_GC_SECTIONS\nendif\n\nLIBNSS_BUILD_VARS = \\\n\tMOZILLA_CLIENT=1 \\\n\tNSPR_INCLUDE_DIR=$(STAGING_DIR)/usr/include/nspr \\\n\tNSPR_LIB_DIR=$(STAGING_DIR)/usr/lib \\\n\tNS_USE_GCC=1 \\\n\tNSS_DISABLE_GTESTS=1 \\\n\tNSS_USE_SYSTEM_SQLITE=1 \\\n\tNATIVE_CC=\"$(HOSTCC)\" \\\n\tOS_ARCH=\"Linux\" \\\n\tOS_RELEASE=\"2.6\" \\\n\tOS_TEST=$(BR2_PACKAGE_LIBNSS_ARCH) \\\n\tNSS_ENABLE_WERROR=0\n\nifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),)\n# Disable Altivec if not supported\nLIBNSS_BUILD_VARS += NSS_DISABLE_ALTIVEC=1\nendif\n\nifeq ($(BR2_ARM_CPU_HAS_NEON),)\n# Disable arm32-neon if neon is not supported\nLIBNSS_BUILD_VARS += NSS_DISABLE_ARM32_NEON=1\nendif\n\nifeq ($(BR2_ARCH_IS_64),y)\n# MIPS64 n32 is treated as a 32-bit architecture by libnss.\n# See: https://bugzilla.mozilla.org/show_bug.cgi?id=1010730\nifeq ($(BR2_MIPS_NABI32),)\nLIBNSS_BUILD_VARS += USE_64=1\nendif\nendif\n\ndefine LIBNSS_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/nss coreconf \\\n\t\tSOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \\\n\t\tDIST=$(@D)/$(LIBNSS_DISTDIR) \\\n\t\tCHECKLOC= \\\n\t\t$(LIBNSS_BUILD_VARS)\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/nss lib/dbm all \\\n\t\tSOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \\\n\t\tDIST=$(@D)/$(LIBNSS_DISTDIR) \\\n\t\tCHECKLOC= \\\n\t\t$(LIBNSS_BUILD_VARS) NATIVE_FLAGS=\"$(HOST_CFLAGS) -DLINUX\"\nendef\n\ndefine LIBNSS_INSTALL_STAGING_CMDS\n\t$(INSTALL) -m 755 -t $(STAGING_DIR)/usr/lib/ \\\n\t\t$(@D)/$(LIBNSS_DISTDIR)/lib/*.so\n\t$(INSTALL) -m 755 -d $(STAGING_DIR)/usr/include/nss\n\t$(INSTALL) -m 644 -t $(STAGING_DIR)/usr/include/nss \\\n\t\t$(@D)/$(LIBNSS_DISTDIR)/public/nss/*\n\t$(INSTALL) -m 755 -t $(STAGING_DIR)/usr/lib/ \\\n\t\t$(@D)/$(LIBNSS_DISTDIR)/lib/*.a\n\t$(INSTALL) -D -m 0644 $(TOPDIR)/package/libnss/nss.pc.in \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/nss.pc\n\t$(SED) 's/@VERSION@/$(LIBNSS_VERSION)/g;' \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/nss.pc\nendef\n\ndefine LIBNSS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/lib/ \\\n\t\t$(@D)/$(LIBNSS_DISTDIR)/lib/*.so\n\t$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/include/nss\n\t$(INSTALL) -m 644 -t $(TARGET_DIR)/usr/include/nss \\\n\t\t$(@D)/$(LIBNSS_DISTDIR)/public/nss/*\n\t$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/lib/ \\\n\t\t$(@D)/$(LIBNSS_DISTDIR)/lib/*.a\n\t$(INSTALL) -D -m 0644 $(TOPDIR)/package/libnss/nss.pc.in \\\n\t\t$(TARGET_DIR)/usr/lib/pkgconfig/nss.pc\n\t$(INSTALL) -D -m 755 $(@D)/$(LIBNSS_DISTDIR)/bin/certutil \\\n\t\t$(TARGET_DIR)/usr/bin/certutil\n\t$(SED) 's/@VERSION@/$(LIBNSS_VERSION)/g;' \\\n\t\t$(TARGET_DIR)/usr/lib/pkgconfig/nss.pc\nendef\n\nHOST_LIBNSS_BUILD_VARS = \\\n\tMOZILLA_CLIENT=1 \\\n\tNSPR_INCLUDE_DIR=$(HOST_DIR)/include/nspr \\\n\tNSPR_LIB_DIR=$(HOST_DIR)/lib \\\n\tNS_USE_GCC=1 \\\n\tNSS_DISABLE_GTESTS=1 \\\n\tNSS_USE_SYSTEM_SQLITE=1 \\\n\tSQLITE_INCLUDE_DIR=$(HOST_DIR)/include \\\n\tZLIB_INCLUDE_DIR=$(HOST_DIR)/include \\\n\tNSS_ENABLE_WERROR=0\n\nHOST_LIBNSS_DEPENDENCIES = host-libnspr host-sqlite host-zlib\n\nifneq ($(filter %64,$(HOSTARCH)),)\nHOST_LIBNSS_BUILD_VARS += USE_64=1\nendif\n\ndefine HOST_LIBNSS_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)/nss coreconf \\\n\t\tSOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \\\n\t\tDIST=$(@D)/$(LIBNSS_DISTDIR) \\\n\t\tCHECKLOC= \\\n\t\t$(HOST_LIBNSS_BUILD_VARS)\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)/nss lib/dbm all \\\n\t\tSOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \\\n\t\tDIST=$(@D)/$(LIBNSS_DISTDIR) \\\n\t\tCHECKLOC= \\\n\t\t$(HOST_LIBNSS_BUILD_VARS)\nendef\n\ndefine HOST_LIBNSS_INSTALL_CMDS\n\t$(INSTALL) -m 755 -t $(HOST_DIR)/lib/ \\\n\t\t$(@D)/$(LIBNSS_DISTDIR)/lib/*.so\n\t$(INSTALL) -m 755 -d $(HOST_DIR)/include/nss\n\t$(INSTALL) -m 644 -t $(HOST_DIR)/include/nss \\\n\t\t$(@D)/$(LIBNSS_DISTDIR)/public/nss/*\n\t$(INSTALL) -m 755 -t $(HOST_DIR)/lib/ \\\n\t\t$(@D)/$(LIBNSS_DISTDIR)/lib/*.a\n\t$(INSTALL) -D -m 0644 $(TOPDIR)/package/libnss/nss.pc.in \\\n\t\t$(HOST_DIR)/lib/pkgconfig/nss.pc\n\t$(SED) 's/@VERSION@/$(LIBNSS_VERSION)/g;' \\\n\t\t$(HOST_DIR)/lib/pkgconfig/nss.pc\n\t$(SED) '/^prefix/s,=.*,=$(HOST_DIR),g;' \\\n\t\t$(HOST_DIR)/lib/pkgconfig/nss.pc\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/libnss/nss.pc.in",
    "content": "prefix=/usr\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include/nss\n\nName: NSS\nDescription: Mozilla Network Security Services\nVersion: @VERSION@\nRequires: nspr\nLibs: -L${libdir} -lnss3 -lnssutil3 -lsmime3 -lssl3\nCflags: -I${includedir}\n"
  },
  {
    "path": "package/liboauth/0001-Fixes-build-issue-with-OpenSSL-1.1.0.patch",
    "content": "From 5f1c949b1703367f7f06454fcff650bdb7bac840 Mon Sep 17 00:00:00 2001\nFrom: DJ Lucas <dj@linuxfromscratch.org>\nDate: Sun, 9 Sep 2018 15:46:15 +0200\nSubject: [PATCH] Fixes build issue with OpenSSL-1.1.0\n\nDownloaded from\nhttp://www.linuxfromscratch.org/patches/blfs/svn/liboauth-1.0.3-openssl-1.1.0-2.patch\n\nPatch was sent upstream: https://github.com/x42/liboauth/issues/9\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n src/hash.c | 65 ++++++++++++++++++++++++++++++++++++++++++--------------------\n 1 file changed, 44 insertions(+), 21 deletions(-)\n\ndiff --git a/src/hash.c b/src/hash.c\nindex 17ff5c8..b7958f7 100644\n--- a/src/hash.c\n+++ b/src/hash.c\n@@ -362,6 +362,11 @@ looser:\n #include \"oauth.h\" // base64 encode fn's.\n #include <openssl/hmac.h>\n \n+#if OPENSSL_VERSION_NUMBER < 0x10100000\n+#define EVP_MD_CTX_new EVP_MD_CTX_create\n+#define EVP_MD_CTX_free EVP_MD_CTX_destroy\n+#endif\n+\n char *oauth_sign_hmac_sha1 (const char *m, const char *k) {\n   return(oauth_sign_hmac_sha1_raw (m, strlen(m), k, strlen(k)));\n }\n@@ -386,7 +391,7 @@ char *oauth_sign_rsa_sha1 (const char *m, const char *k) {\n   unsigned char *sig = NULL;\n   unsigned char *passphrase = NULL;\n   unsigned int len=0;\n-  EVP_MD_CTX md_ctx;\n+  EVP_MD_CTX *md_ctx;\n \n   EVP_PKEY *pkey;\n   BIO *in;\n@@ -399,24 +404,31 @@ char *oauth_sign_rsa_sha1 (const char *m, const char *k) {\n     return xstrdup(\"liboauth/OpenSSL: can not read private key\");\n   }\n \n+  md_ctx = EVP_MD_CTX_new();\n+  if (md_ctx == NULL) {\n+          return xstrdup(\"liboauth/OpenSSL: failed to allocate EVP_MD_CTX\");\n+  }\n+\n   len = EVP_PKEY_size(pkey);\n   sig = (unsigned char*)xmalloc((len+1)*sizeof(char));\n \n-  EVP_SignInit(&md_ctx, EVP_sha1());\n-  EVP_SignUpdate(&md_ctx, m, strlen(m));\n-  if (EVP_SignFinal (&md_ctx, sig, &len, pkey)) {\n+  EVP_SignInit(md_ctx, EVP_sha1());\n+  EVP_SignUpdate(md_ctx, m, strlen(m));\n+  if (EVP_SignFinal (md_ctx, sig, &len, pkey)) {\n     char *tmp;\n     sig[len] = '\\0';\n     tmp = oauth_encode_base64(len,sig);\n     OPENSSL_free(sig);\n     EVP_PKEY_free(pkey);\n+    EVP_MD_CTX_free(md_ctx);\n     return tmp;\n   }\n+  EVP_MD_CTX_free(md_ctx);\n   return xstrdup(\"liboauth/OpenSSL: rsa-sha1 signing failed\");\n }\n \n int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) {\n-  EVP_MD_CTX md_ctx;\n+  EVP_MD_CTX *md_ctx;\n   EVP_PKEY *pkey;\n   BIO *in;\n   X509 *cert = NULL;\n@@ -437,13 +449,18 @@ int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) {\n     return -2;\n   }\n \n+\tmd_ctx = EVP_MD_CTX_new();\n+\tif (md_ctx == NULL) {\n+\t\treturn -2;\n+\t}\n+\n   b64d= (unsigned char*) xmalloc(sizeof(char)*strlen(s));\n   slen = oauth_decode_base64(b64d, s);\n \n-  EVP_VerifyInit(&md_ctx, EVP_sha1());\n-  EVP_VerifyUpdate(&md_ctx, m, strlen(m));\n-  err = EVP_VerifyFinal(&md_ctx, b64d, slen, pkey);\n-  EVP_MD_CTX_cleanup(&md_ctx);\n+  EVP_VerifyInit(md_ctx, EVP_sha1());\n+  EVP_VerifyUpdate(md_ctx, m, strlen(m));\n+  err = EVP_VerifyFinal(md_ctx, b64d, slen, pkey);\n+  EVP_MD_CTX_free(pkey);\n   EVP_PKEY_free(pkey);\n   xfree(b64d);\n   return (err);\n@@ -455,35 +472,41 @@ int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) {\n  */\n char *oauth_body_hash_file(char *filename) {\n   unsigned char fb[BUFSIZ];\n-  EVP_MD_CTX ctx;\n+  EVP_MD_CTX *ctx;\n   size_t len=0;\n   unsigned char *md;\n   FILE *F= fopen(filename, \"r\");\n   if (!F) return NULL;\n \n-  EVP_MD_CTX_init(&ctx);\n-  EVP_DigestInit(&ctx,EVP_sha1());\n+  ctx = EVP_MD_CTX_new();\n+  if (ctx == NULL) {\n+          return xstrdup(\"liboauth/OpenSSL: failed to allocate EVP_MD_CTX\");\n+  }\n+  EVP_DigestInit(ctx,EVP_sha1());\n   while (!feof(F) && (len=fread(fb,sizeof(char),BUFSIZ, F))>0) {\n-    EVP_DigestUpdate(&ctx, fb, len);\n+    EVP_DigestUpdate(ctx, fb, len);\n   }\n   fclose(F);\n   len=0;\n   md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char));\n-  EVP_DigestFinal(&ctx, md,(unsigned int*) &len);\n-  EVP_MD_CTX_cleanup(&ctx);\n+  EVP_DigestFinal(ctx, md,(unsigned int*) &len);\n+  EVP_MD_CTX_free(ctx);\n   return oauth_body_hash_encode(len, md);\n }\n \n char *oauth_body_hash_data(size_t length, const char *data) {\n-  EVP_MD_CTX ctx;\n+  EVP_MD_CTX *ctx;\n   size_t len=0;\n   unsigned char *md;\n   md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char));\n-  EVP_MD_CTX_init(&ctx);\n-  EVP_DigestInit(&ctx,EVP_sha1());\n-  EVP_DigestUpdate(&ctx, data, length);\n-  EVP_DigestFinal(&ctx, md,(unsigned int*) &len);\n-  EVP_MD_CTX_cleanup(&ctx);\n+  ctx = EVP_MD_CTX_new();\n+  if (ctx == NULL) {\n+          return xstrdup(\"liboauth/OpenSSL: failed to allocate EVP_MD_CTX\");\n+  }\n+  EVP_DigestInit(ctx,EVP_sha1());\n+  EVP_DigestUpdate(ctx, data, length);\n+  EVP_DigestFinal(ctx, md,(unsigned int*) &len);\n+  EVP_MD_CTX_free(ctx);\n   return oauth_body_hash_encode(len, md);\n }\n \n-- \n2.14.4\n\n"
  },
  {
    "path": "package/liboauth/Config.in",
    "content": "config BR2_PACKAGE_LIBOAUTH\n\tbool \"liboauth\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  liboauth is a collection of c functions implementing the oAuth\n\t  Core 1.0 Rev A standard API. liboauth provides basic functions\n\t  to escape and encode parameters according to oAuth specs and\n\t  offers high-level functions to sign requests or verify\n\t  signatures.\n\n\t  http://liboauth.sourceforge.net/\n"
  },
  {
    "path": "package/liboauth/liboauth.hash",
    "content": "# Locally computed:\nsha256  0df60157b052f0e774ade8a8bac59d6e8d4b464058cc55f9208d72e41156811f  liboauth-1.0.3.tar.gz\nsha256  c30608672733bf3abd2ccf6f3206be8d91b7ee58b007b2fdbcfbc61c655e7fb7  COPYING.MIT\n"
  },
  {
    "path": "package/liboauth/liboauth.mk",
    "content": "################################################################################\n#\n# liboauth\n#\n################################################################################\n\nLIBOAUTH_VERSION = 1.0.3\nLIBOAUTH_SITE = http://downloads.sourceforge.net/project/liboauth\nLIBOAUTH_INSTALL_STAGING = YES\nLIBOAUTH_DEPENDENCIES += host-pkgconf openssl\nLIBOAUTH_LICENSE = MIT\nLIBOAUTH_LICENSE_FILES = COPYING.MIT\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nLIBOAUTH_DEPENDENCIES += libcurl\nelse\nLIBOAUTH_CONF_OPTS += --disable-libcurl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libodb/Config.in",
    "content": "config BR2_PACKAGE_LIBODB\n\tbool \"libodb\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  This package contains the common ODB runtime library. Every\n\t  application that includes code generated by the ODB compiler\n\t  will need to link to this library.\n\n\t  https://www.codesynthesis.com/products/odb/\n\ncomment \"libodb needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libodb/libodb.hash",
    "content": "# From https://www.codesynthesis.com/projects/libcutl/\nsha1\t42bd2a8023e338e004711e755eb30bd122b844a6\tlibodb-2.4.0.tar.bz2\n\n# Locally Computed\nsha256\t66a1bb4e8bb6ef60cc79334f8028c4d4de98d87f2ff6f8123b4cfb7751ce0007\tlibodb-2.4.0.tar.bz2\nsha256\t841105a470fc283851c63941510ffd403c726d1910b688f7df95914ab8b1b5a3\tLICENSE\n"
  },
  {
    "path": "package/libodb/libodb.mk",
    "content": "################################################################################\n#\n# libodb\n#\n################################################################################\n\nLIBODB_VERSION_MAJOR = 2.4\nLIBODB_VERSION = $(LIBODB_VERSION_MAJOR).0\nLIBODB_SOURCE = libodb-$(LIBODB_VERSION).tar.bz2\nLIBODB_SITE = https://www.codesynthesis.com/download/odb/$(LIBODB_VERSION_MAJOR)\nLIBODB_INSTALL_STAGING = YES\nLIBODB_LICENSE = GPL-2.0\nLIBODB_LICENSE_FILES = LICENSE\nLIBODB_CONF_ENV = CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libodb-boost/Config.in",
    "content": "config BR2_PACKAGE_LIBODB_BOOST\n\tbool \"libodb-boost\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_LIBODB\n\thelp\n\t  This package contains the common ODB runtime library. Every\n\t  application that includes code generated by the ODB compiler\n\t  will need to link to this library.\n\n\t  https://www.codesynthesis.com/products/odb/\n\ncomment \"libodb-boost needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_BOOST\n"
  },
  {
    "path": "package/libodb-boost/libodb-boost.hash",
    "content": "# From https://www.codesynthesis.com/projects/libcutl/\nsha1  f813702b2856732e199ae34e3393b8cecff878ef  libodb-boost-2.4.0.tar.bz2\n\n# Locally computed\nsha256  b41bd4aaa3f3c9563cfa41bae19bda1bbcc3652e4430b4ebb1819eef2ffcadf4  libodb-boost-2.4.0.tar.bz2\nsha256  841105a470fc283851c63941510ffd403c726d1910b688f7df95914ab8b1b5a3  LICENSE\n"
  },
  {
    "path": "package/libodb-boost/libodb-boost.mk",
    "content": "################################################################################\n#\n# libodb-boost\n#\n################################################################################\n\nLIBODB_BOOST_VERSION_MAJOR = 2.4\nLIBODB_BOOST_VERSION = $(LIBODB_BOOST_VERSION_MAJOR).0\nLIBODB_BOOST_SOURCE = libodb-boost-$(LIBODB_BOOST_VERSION).tar.bz2\nLIBODB_BOOST_SITE = https://www.codesynthesis.com/download/odb/$(LIBODB_BOOST_VERSION_MAJOR)\nLIBODB_BOOST_INSTALL_STAGING = YES\nLIBODB_BOOST_LICENSE = GPL-2.0\nLIBODB_BOOST_LICENSE_FILES = LICENSE\nLIBODB_BOOST_DEPENDENCIES = boost libodb\nLIBODB_BOOST_CONF_ENV = CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libodb-mysql/0001-fix-syntax-issue-while-checking-ldflags.patch",
    "content": "From 3af12d8d0f749751e487955c24260049e7a8eec6 Mon Sep 17 00:00:00 2001\nFrom: Kamel Bouhara <kamel.bouhara@bootlin.com>\nDate: Wed, 13 May 2020 16:58:22 +0200\nSubject: [PATCH] fix syntax issue while checking ldflags\n\nSigned-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>\n---\n configure | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/configure b/configure\nindex def5883..2d783f6 100755\n--- a/configure\n+++ b/configure\n@@ -17574,7 +17574,7 @@ libmysqlclient_paths=\"none /usr/lib/mysql /usr/lib64/mysql\"\n \n for path in $libmysqlclient_paths; do\n \n-if test x\"path\" != xnone; then\n+if test x\"$path\" != xnone; then\n   save_LDFLAGS=\"$LDFLAGS\"\n   LDFLAGS=\"$LDFLAGS -L$path\"\n fi\n@@ -17753,7 +17753,7 @@ if test x\"$libmysqlclient_found\" = xyes; then\n   break;\n fi\n \n-if test x\"path\" != xnone; then\n+if test x\"$path\" != xnone; then\n   LDFLAGS=\"$save_LDFLAGS\"\n fi\n \n-- \n2.26.2\n\n"
  },
  {
    "path": "package/libodb-mysql/0002-mariadb-FTBFS-fix.patch",
    "content": "From 552474a477989d0d3514f126b8e314dccc27878c Mon Sep 17 00:00:00 2001\nFrom: Kamel Bouhara <kamel.bouhara@bootlin.com>\nDate: Wed, 1 Jul 2020 08:58:24 +0200\nSubject: [PATCH] mariadb FTBFS fix\n\nFrom: https://sources.debian.org/patches/libodb-mysql/2.4.0-4/mariadb_FTBFS_fix.patch/\n\nDescription: fix FTBFS with recent MariaDB versions\nDon't include internal an header, only the main one.\nBug-Debian: https://bugs.debian.org/919374\nForwarded: no\nAuthor: Laszlo Boszormenyi (GCS) <gcs@debian.org>\n\nSigned-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>\n---\n odb/mysql/mysql-types.hxx | 4 ++--\n odb/mysql/version.hxx     | 2 +-\n 2 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/odb/mysql/mysql-types.hxx b/odb/mysql/mysql-types.hxx\nindex 1254ccd..0e8f9a8 100644\n--- a/odb/mysql/mysql-types.hxx\n+++ b/odb/mysql/mysql-types.hxx\n@@ -11,9 +11,9 @@ typedef char my_bool;\n typedef struct st_mysql_bind MYSQL_BIND;\n \n #ifdef LIBODB_MYSQL_INCLUDE_SHORT\n-#  include <mysql_time.h>\n+#  include <mysql.h>\n #else\n-#  include <mysql/mysql_time.h>\n+#  include <mysql/mysql.h>\n #endif\n \n #endif // ODB_MYSQL_MYSQL_TYPES_HXX\ndiff --git a/odb/mysql/version.hxx b/odb/mysql/version.hxx\nindex 05b4ba5..e711c2e 100644\n--- a/odb/mysql/version.hxx\n+++ b/odb/mysql/version.hxx\n@@ -12,7 +12,7 @@\n #ifdef LIBODB_MYSQL_INCLUDE_SHORT\n #  include <mysql_version.h>\n #else\n-#  include <mysql/mysql_version.h>\n+#  include <mysql/mysql.h>\n #endif\n \n #include <odb/version.hxx>\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/libodb-mysql/Config.in",
    "content": "config BR2_PACKAGE_LIBODB_MYSQL\n\tbool \"libodb-mysql\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_MYSQL\n\tselect BR2_PACKAGE_LIBODB\n\thelp\n\t  This package contains the MySQL ODB runtime library. Every\n\t  application that includes code generated for the MySQL\n\t  database will need to link to this library.\n\n\t  https://www.codesynthesis.com/products/odb/\n\ncomment \"libodb-mysql needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_MYSQL\n"
  },
  {
    "path": "package/libodb-mysql/libodb-mysql.hash",
    "content": "sha1\t2021a67577354f1d6bed50c0b257c1920760eda7\tlibodb-mysql-2.4.0.tar.bz2\n\nsha256\tce2fcdb6ab4a02fc0aff263a891c56949fa41b89e65d7a40d8b656d3ebf0d9bc\tlibodb-mysql-2.4.0.tar.bz2\nsha256\t841105a470fc283851c63941510ffd403c726d1910b688f7df95914ab8b1b5a3\tLICENSE\n"
  },
  {
    "path": "package/libodb-mysql/libodb-mysql.mk",
    "content": "################################################################################\n#\n# libodb-mysql\n#\n################################################################################\n\nLIBODB_MYSQL_VERSION_MAJOR = 2.4\nLIBODB_MYSQL_VERSION = $(LIBODB_MYSQL_VERSION_MAJOR).0\nLIBODB_MYSQL_SOURCE = libodb-mysql-$(LIBODB_MYSQL_VERSION).tar.bz2\nLIBODB_MYSQL_SITE = https://www.codesynthesis.com/download/odb/$(LIBODB_MYSQL_VERSION_MAJOR)\nLIBODB_MYSQL_INSTALL_STAGING = YES\nLIBODB_MYSQL_LICENSE = GPL-2.0\nLIBODB_MYSQL_LICENSE_FILES = LICENSE\nLIBODB_MYSQL_DEPENDENCIES = libodb mysql\nLIBODB_MYSQL_CONF_ENV = \\\n\tCXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\" \\\n\tLIBS=`$(STAGING_DIR)/usr/bin/mysql_config --libs`\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libodb-pgsql/Config.in",
    "content": "config BR2_PACKAGE_LIBODB_PGSQL\n\tbool \"libodb-pgsql\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_POSTGRESQL\n\tselect BR2_PACKAGE_LIBODB\n\thelp\n\t  This package contains the PostgreSQL ODB runtime library.\n\t  Every application that includes code generated for the\n\t  PostgreSQL database will need to link to this library.\n\n\t  https://www.codesynthesis.com/products/odb/\n\ncomment \"libodb-pgsql needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_POSTGRESQL\n"
  },
  {
    "path": "package/libodb-pgsql/libodb-pgsql.hash",
    "content": "# From https://www.codesynthesis.com/download/odb/2.4/libodb-pgsql-2.4.0.tar.bz2.sha1\nsha1\t4628d5e296da01dbaf8658fd402b4f709f30ea2d\tlibodb-pgsql-2.4.0.tar.bz2\n\n# Locally Computed\nsha256\t778a4d38bd1161e1f0b368815514c3335da20c7584e3d07613526dcce53523bc\tlibodb-pgsql-2.4.0.tar.bz2\nsha256\t841105a470fc283851c63941510ffd403c726d1910b688f7df95914ab8b1b5a3\tLICENSE\n"
  },
  {
    "path": "package/libodb-pgsql/libodb-pgsql.mk",
    "content": "################################################################################\n#\n# libodb-pgsql\n#\n################################################################################\n\nLIBODB_PGSQL_VERSION_MAJOR = 2.4\nLIBODB_PGSQL_VERSION = $(LIBODB_PGSQL_VERSION_MAJOR).0\nLIBODB_PGSQL_SOURCE = libodb-pgsql-$(LIBODB_PGSQL_VERSION).tar.bz2\nLIBODB_PGSQL_SITE = https://www.codesynthesis.com/download/odb/$(LIBODB_PGSQL_VERSION_MAJOR)\nLIBODB_PGSQL_LICENSE = GPL-2.0\nLIBODB_PGSQL_LICENSE_FILES = LICENSE\nLIBODB_PGSQL_INSTALL_STAGING = YES\nLIBODB_PGSQL_DEPENDENCIES = postgresql libodb\nLIBODB_PGSQL_CONF_ENV = CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libogg/Config.in",
    "content": "config BR2_PACKAGE_LIBOGG\n\tbool \"libogg\"\n\thelp\n\t  Ogg is a multimedia container format, and the native file\n\t  and stream format for the Xiph.org multimedia codecs. As\n\t  with all Xiph.org technology is it an open format free for\n\t  anyone to use.\n\n\t  https://xiph.org/ogg/\n"
  },
  {
    "path": "package/libogg/libogg.hash",
    "content": "# From https://www.xiph.org/downloads/\nsha256  c4d91be36fc8e54deae7575241e03f4211eb102afb3fc0775fbbc1b740016705  libogg-1.3.5.tar.xz\n\n# Hash for license file:\nsha256  d2ab5758336489da61c12cc5bb757da5339c4ae9001f9bb0562b4370249af814  COPYING\n"
  },
  {
    "path": "package/libogg/libogg.mk",
    "content": "################################################################################\n#\n# libogg\n#\n################################################################################\n\nLIBOGG_VERSION = 1.3.5\nLIBOGG_SOURCE = libogg-$(LIBOGG_VERSION).tar.xz\nLIBOGG_SITE = http://downloads.xiph.org/releases/ogg\nLIBOGG_LICENSE = BSD-3-Clause\nLIBOGG_LICENSE_FILES = COPYING\n\nLIBOGG_INSTALL_STAGING = YES\nLIBOGG_DEPENDENCIES = host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libolm/Config.in",
    "content": "config BR2_PACKAGE_LIBOLM\n\tbool \"libolm\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\thelp\n\t  libolm is an implementation of the Double Ratchet\n\t  cryptographic ratchet in C++\n\n\t  https://gitlab.matrix.org/matrix-org/olm\n\ncomment \"libolm needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/libolm/libolm.hash",
    "content": "# locally computed\nsha256  9b61bd9182bb0ae0c5a800a8b0496b69600a0a22e3a21fce0aad119d2b1c99ae  olm-3.2.6.tar.gz\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  LICENSE\n"
  },
  {
    "path": "package/libolm/libolm.mk",
    "content": "################################################################################\n#\n# libolm\n#\n################################################################################\n\nLIBOLM_VERSION = 3.2.6\nLIBOLM_SOURCE = olm-$(LIBOLM_VERSION).tar.gz\nLIBOLM_SITE = https://gitlab.matrix.org/matrix-org/olm/-/archive/$(LIBOLM_VERSION)\nLIBOLM_LICENSE = Apache-2.0\nLIBOLM_LICENSE_FILES = LICENSE\nLIBOLM_INSTALL_STAGING = YES\n\nLIBOLM_CONF_OPTS = -DOLM_TESTS=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libopenh264/0001-Add-USE_STACK_PROTECTOR-option.patch",
    "content": "From 1e7435751c055723b7103dd1d5bb68530e1a2678 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 8 Oct 2019 20:18:18 +0200\nSubject: [PATCH] Add USE_STACK_PROTECTOR option\n\n-fstack-protector-all is not supported on all linux toolchains so add an\noption to disable it (and enable it by default to keep current behavior)\n\nFixes:\n - http://autobuild.buildroot.org/results/377818cf8c1f2632cabdccb32bf4e7f06c0fdbbd\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/cisco/openh264/pull/3175]\n---\n Makefile                  | 1 +\n build/platform-android.mk | 5 ++++-\n build/platform-bsd.mk     | 5 ++++-\n build/platform-darwin.mk  | 5 ++++-\n build/platform-linux.mk   | 5 ++++-\n 5 files changed, 17 insertions(+), 4 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 74ff029d..c2061f6a 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -34,6 +34,7 @@ GTEST_VER=release-1.8.1\n CCASFLAGS=$(CFLAGS)\n STATIC_LDFLAGS=-lstdc++\n STRIP ?= strip\n+USE_STACK_PROTECTOR = Yes\n \n SHAREDLIB_MAJORVERSION=5\n FULL_VERSION := 2.0.0\ndiff --git a/build/platform-android.mk b/build/platform-android.mk\nindex 6f6ce347..06534301 100644\n--- a/build/platform-android.mk\n+++ b/build/platform-android.mk\n@@ -44,7 +44,10 @@ SYSROOT = $(NDKROOT)/platforms/android-$(NDKLEVEL)/arch-$(ARCH)\n CXX = $(TOOLCHAINPREFIX)g++\n CC = $(TOOLCHAINPREFIX)gcc\n AR = $(TOOLCHAINPREFIX)ar\n-CFLAGS += -DANDROID_NDK -fpic --sysroot=$(SYSROOT) -MMD -MP -fstack-protector-all\n+CFLAGS += -DANDROID_NDK -fpic --sysroot=$(SYSROOT) -MMD -MP\n+ifeq ($(USE_STACK_PROTECTOR), Yes)\n+CFLAGS +=-fstack-protector-all\n+endif\n CFLAGS += -isystem $(NDKROOT)/sysroot/usr/include -isystem $(NDKROOT)/sysroot/usr/include/$(TOOLCHAIN_NAME) -D__ANDROID_API__=$(NDKLEVEL)\n CXXFLAGS += -fno-rtti -fno-exceptions\n LDFLAGS += --sysroot=$(SYSROOT)\ndiff --git a/build/platform-bsd.mk b/build/platform-bsd.mk\nindex e60d2cc0..2e0bf2cc 100644\n--- a/build/platform-bsd.mk\n+++ b/build/platform-bsd.mk\n@@ -3,7 +3,10 @@ SHAREDLIBSUFFIX = so\n SHAREDLIBSUFFIXFULLVER=$(SHAREDLIBSUFFIX).$(FULL_VERSION)\n SHAREDLIBSUFFIXMAJORVER=$(SHAREDLIBSUFFIX).$(SHAREDLIB_MAJORVERSION)\n SHLDFLAGS = -Wl,-soname,$(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXMAJORVER)\n-CFLAGS += -fPIC -fstack-protector-all\n+CFLAGS += -fPIC\n+ifeq ($(USE_STACK_PROTECTOR), Yes)\n+CFLAGS += -fstack-protector-all\n+endif\n LDFLAGS += -lpthread\n STATIC_LDFLAGS += -lpthread -lm\n ifeq ($(ASM_ARCH), x86)\ndiff --git a/build/platform-darwin.mk b/build/platform-darwin.mk\nindex 6c7b2443..718c8e2f 100644\n--- a/build/platform-darwin.mk\n+++ b/build/platform-darwin.mk\n@@ -10,7 +10,10 @@ SHLDFLAGS = -dynamiclib -twolevel_namespace -undefined dynamic_lookup \\\n \t$(SHAREDLIB_DIR)/$(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXMAJORVER)\n SHARED = -dynamiclib\n SHARED += -current_version $(CURRENT_VERSION) -compatibility_version $(COMPATIBILITY_VERSION)\n-CFLAGS += -Wall -fPIC -MMD -MP -fstack-protector-all\n+CFLAGS += -Wall -fPIC -MMD -MP\n+ifeq ($(USE_STACK_PROTECTOR), Yes)\n+CFLAGS += -fstack-protector-all\n+endif\n ifeq ($(ASM_ARCH), x86)\n ASMFLAGS += -DPREFIX\n ifeq ($(ARCH), x86_64)\ndiff --git a/build/platform-linux.mk b/build/platform-linux.mk\nindex 44fe2424..b5c006b2 100644\n--- a/build/platform-linux.mk\n+++ b/build/platform-linux.mk\n@@ -3,7 +3,10 @@ SHAREDLIBSUFFIX = so\n SHAREDLIBSUFFIXFULLVER=$(SHAREDLIBSUFFIX).$(FULL_VERSION)\n SHAREDLIBSUFFIXMAJORVER=$(SHAREDLIBSUFFIX).$(SHAREDLIB_MAJORVERSION)\n SHLDFLAGS = -Wl,-soname,$(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXMAJORVER)\n-CFLAGS += -Wall -fno-strict-aliasing -fPIC -MMD -MP -fstack-protector-all\n+CFLAGS += -Wall -fno-strict-aliasing -fPIC -MMD -MP\n+ifeq ($(USE_STACK_PROTECTOR), Yes)\n+CFLAGS += -fstack-protector-all\n+endif\n LDFLAGS += -lpthread\n STATIC_LDFLAGS += -lpthread -lm\n AR_OPTS = crD $@\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/libopenh264/0002-fix-mips-build.patch",
    "content": "From 9d5981eecde2133b9d6099eb99f96b1c29c3e520 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Mon, 13 Apr 2020 12:03:01 +0200\nSubject: [PATCH] fix mips build\n\nIn total three PR were sent upstream to fix mips builds:\nhttps://github.com/cisco/openh264/pull/3185\nhttps://github.com/cisco/openh264/pull/3217\nhttps://github.com/cisco/openh264/pull/3225\n\nBuildroot used the first version\nhttps://git.buildroot.net/buildroot/commit/package/libopenh264?id=e8d0df569e1844f7ba28918a53ee38027b325b8f\ndownloaded from https://github.com/cisco/openh264/pull/3185\n\nDuring discussion the gcc option '-march=loongson3a' was changed to\n'-Wa,-mloongson-mmi,-mloongson-ext':\nhttps://github.com/cisco/openh264/pull/3185#discussion_r337818960\n\nThis causes build errors with gcc version 8.3.0 (Buildroot 2020.02)\n\ntmp/cctgEQaw.s:662: Error: opcode not supported on this processor: loongson3a (mips64r2) `bc .L22'\n/tmp/cctgEQaw.s:1679: Error: opcode not supported on this processor: loongson3a (mips64r2) `bc .L27'\n/tmp/cctgEQaw.s:2218: Error: opcode not supported on this processor: loongson3a (mips64r2) `jrc $31'\n\nThis patch partly reverts the change to fix mips build.\n\n$ /home/bernd/buildroot/br5/output/host/bin/mips64el-linux-gcc -v\n\nUsing built-in specs.\nCOLLECT_GCC=/home/bernd/buildroot/br5/output/host/opt/ext-toolchain/bin/mips64el-linux-gcc.br_real\nCOLLECT_LTO_WRAPPER=/home/bernd/buildroot/br5/output/host/opt/ext-toolchain/bin/../libexec/gcc/mips64el-buildroot-linux-gnu/8.3.0/lto-wrapper\nTarget: mips64el-buildroot-linux-gnu\nConfigured with: ./configure --prefix=/opt/br-mips64r6-n64-el-hf-2020.02 --sysconfdir=/opt/br-mips64r6-n64-el-hf-2020.02/etc --enable-static --target=mips64el-buildroot-linux-gnu --with-sysroot=/opt/br-mips64r6-n64-el-hf-2020.02/mips64el-buildroot-linux-gnu/sysroot --enable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib --disable-decimal-float --with-gmp=/opt/br-mips64r6-n64-el-hf-2020.02 --with-mpc=/opt/br-mips64r6-n64-el-hf-2020.02 --with-mpfr=/opt/br-mips64r6-n64-el-hf-2020.02 --with-pkgversion='Buildroot 2020.02' --with-bugurl=http://bugs.buildroot.net/ --disable-libquadmath --enable-tls --enable-threads --without-isl --without-cloog --with-arch=mips64r6 --with-abi=64 --with-nan=2008 --enable-languages=c,c++ --with-build-time-tools=/opt/br-mips64r6-n64-el-hf-2020.02/mips64el-buildroot-linux-gnu/bin --enable-shared --disable-libgomp\nThread model: posix\ngcc version 8.3.0 (Buildroot 2020.02)\n\nPatch sent upstream: https://github.com/cisco/openh264/pull/3267\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n build/arch.mk            | 2 +-\n build/mips-simd-check.sh | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/build/arch.mk b/build/arch.mk\nindex 1bf318ab..c6570ed4 100644\n--- a/build/arch.mk\n+++ b/build/arch.mk\n@@ -41,7 +41,7 @@ ASMFLAGS += -I$(SRC_PATH)codec/common/mips/\n ifeq ($(ENABLE_MMI), Yes)\n ENABLE_MMI = $(shell $(SRC_PATH)build/mips-simd-check.sh $(CC) mmi)\n ifeq ($(ENABLE_MMI), Yes)\n-CFLAGS += -DHAVE_MMI -Wa,-mloongson-mmi,-mloongson-ext\n+CFLAGS += -DHAVE_MMI -march=loongson3a\n endif\n endif\n #msa\ndiff --git a/build/mips-simd-check.sh b/build/mips-simd-check.sh\nindex 5efffbef..d0d72f9e 100755\n--- a/build/mips-simd-check.sh\n+++ b/build/mips-simd-check.sh\n@@ -15,7 +15,7 @@ TMPO=$(mktemp tmp.XXXXXX.o)\n if [ $2 == \"mmi\" ]\n then\n    echo \"void main(void){ __asm__ volatile(\\\"punpcklhw \\$f0, \\$f0, \\$f0\\\"); }\" > $TMPC\n-   $1 -Wa,-mloongson-mmi $TMPC -o $TMPO &> /dev/null\n+   $1 -march=loongson3a $TMPC -o $TMPO &> /dev/null\n    if test -s $TMPO\n    then\n       echo \"Yes\"\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/libopenh264/0003-codec-common-inc-asmdefs_mmi.h-fix-mips32-build.patch",
    "content": "From c505f81e336088b6729a5407a03459f488353288 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 24 May 2021 22:54:01 +0200\nSubject: [PATCH] codec/common/inc/asmdefs_mmi.h: fix mips32 build\n\nFix the following build failure on mips32 which is raised since version\n2.0.0 and\nhttps://github.com/cisco/openh264/commit/b13e5bceb18ebb93d0313b46aab4af6f480ca933:\n\ncodec/common/mips/copy_mb_mmi.c: In function 'WelsCopy16x16_mmi':\n./codec/common/inc/asmdefs_mmi.h:293:21: error: '_ABI64' undeclared (first use in this function)\n  293 |    if (_MIPS_SIM == _ABI64)                                    \\\n      |                     ^~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/cba3e9d0fd061cc3a92cb732bcdc2c7b66dbf6cb\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/cisco/openh264/pull/3384]\n---\n codec/common/inc/asmdefs_mmi.h | 17 +++++++++++------\n 1 file changed, 11 insertions(+), 6 deletions(-)\n\ndiff --git a/codec/common/inc/asmdefs_mmi.h b/codec/common/inc/asmdefs_mmi.h\nindex 69a7ae39..5d1aed93 100644\n--- a/codec/common/inc/asmdefs_mmi.h\n+++ b/codec/common/inc/asmdefs_mmi.h\n@@ -288,9 +288,9 @@\n /**\n  * backup register\n  */\n+#if defined(_ABI64) && _MIPS_SIM == _ABI64\n #define BACKUP_REG \\\n    double __attribute__((aligned(16))) __back_temp[8];         \\\n-   if (_MIPS_SIM == _ABI64)                                    \\\n    __asm__ volatile (                                          \\\n      \"gssqc1       $f25,      $f24,       0x00(%[temp])  \\n\\t\" \\\n      \"gssqc1       $f27,      $f26,       0x10(%[temp])  \\n\\t\" \\\n@@ -299,8 +299,10 @@\n      :                                                         \\\n      : [temp]\"r\"(__back_temp)                                  \\\n      : \"memory\"                                                \\\n-   );                                                          \\\n-  else                                                         \\\n+   );\n+#else\n+#define BACKUP_REG \\\n+   double __attribute__((aligned(16))) __back_temp[8];         \\\n    __asm__ volatile (                                          \\\n      \"gssqc1       $f22,      $f20,       0x00(%[temp])  \\n\\t\" \\\n      \"gssqc1       $f26,      $f24,       0x10(%[temp])  \\n\\t\" \\\n@@ -309,12 +311,13 @@\n      : [temp]\"r\"(__back_temp)                                  \\\n      : \"memory\"                                                \\\n    );\n+#endif\n \n /**\n  * recover register\n  */\n+#if defined(_ABI64) && _MIPS_SIM == _ABI64\n #define RECOVER_REG \\\n-   if (_MIPS_SIM == _ABI64)                                    \\\n    __asm__ volatile (                                          \\\n      \"gslqc1       $f25,      $f24,       0x00(%[temp])  \\n\\t\" \\\n      \"gslqc1       $f27,      $f26,       0x10(%[temp])  \\n\\t\" \\\n@@ -323,8 +326,9 @@\n      :                                                         \\\n      : [temp]\"r\"(__back_temp)                                  \\\n      : \"memory\"                                                \\\n-   );                                                          \\\n-   else                                                        \\\n+   );\n+#else\n+#define RECOVER_REG \\\n    __asm__ volatile (                                          \\\n      \"gslqc1       $f22,      $f20,       0x00(%[temp])  \\n\\t\" \\\n      \"gslqc1       $f26,      $f24,       0x10(%[temp])  \\n\\t\" \\\n@@ -333,6 +337,7 @@\n      : [temp]\"r\"(__back_temp)                                  \\\n      : \"memory\"                                                \\\n    );\n+#endif\n \n # define OK             1\n # define NOTOK          0\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/libopenh264/Config.in",
    "content": "config BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_i386 || \\\n\t\tBR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \\\n\t\tBR2_x86_64\n\nconfig BR2_PACKAGE_LIBOPENH264\n\tbool \"libopenh264\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS\n\thelp\n\t  OpenH264 is a codec library which supports H.264 encoding and\n\t  decoding.\n\n\t  http://www.openh264.org\n\ncomment \"libopenh264 needs a toolchain w/ C++, dynamic library, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS\n"
  },
  {
    "path": "package/libopenh264/libopenh264.hash",
    "content": "# Locally calculated\nsha256  af173e90fce65f80722fa894e1af0d6b07572292e76de7b65273df4c0a8be678  libopenh264-2.1.1.tar.gz\nsha256  dd5c1c9668512530fa5a96e4c29ac4033d70a7eeb0eed7a42fddb6dd794ebdbb  LICENSE\n"
  },
  {
    "path": "package/libopenh264/libopenh264.mk",
    "content": "################################################################################\n#\n# libopenh264\n#\n################################################################################\n\nLIBOPENH264_VERSION = 2.1.1\nLIBOPENH264_SITE = $(call github,cisco,openh264,v$(LIBOPENH264_VERSION))\nLIBOPENH264_LICENSE = BSD-2-Clause\nLIBOPENH264_LICENSE_FILES = LICENSE\nLIBOPENH264_CPE_ID_VENDOR = cisco\nLIBOPENH264_CPE_ID_PRODUCT = openh264\nLIBOPENH264_INSTALL_STAGING = YES\n\nifeq ($(BR2_aarch64),y)\nLIBOPENH264_ARCH = aarch64\nelse ifeq ($(BR2_arm)$(BR2_armeb),y)\nLIBOPENH264_ARCH = arm\nelse ifeq ($(BR2_i386),y)\nLIBOPENH264_ARCH = x86\nLIBOPENH264_DEPENDENCIES += host-nasm\nelse ifeq ($(BR2_mips)$(BR2_mipsel),y)\nLIBOPENH264_ARCH = mips\nelse ifeq ($(BR2_mips64)$(BR2_mips64el),y)\nLIBOPENH264_ARCH = mips64\nelse ifeq ($(BR2_x86_64),y)\nLIBOPENH264_ARCH = x86_64\nLIBOPENH264_DEPENDENCIES += host-nasm\nendif\n\n# ENABLE64BIT is really only used for x86-64, other 64 bits\n# architecture don't need it.\nLIBOPENH264_MAKE_OPTS = \\\n\tARCH=$(LIBOPENH264_ARCH) \\\n\tENABLE64BIT=$(if $(BR2_x86_64),Yes,No) \\\n\tUSE_STACK_PROTECTOR=No\n\ndefine LIBOPENH264_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(LIBOPENH264_MAKE_OPTS)\nendef\n\ndefine LIBOPENH264_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(LIBOPENH264_MAKE_OPTS) \\\n\t\tDESTDIR=$(STAGING_DIR) PREFIX=/usr install\nendef\n\ndefine LIBOPENH264_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(LIBOPENH264_MAKE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) PREFIX=/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libopenssl/0001-Dont-waste-time-building-manpages-if-we-re-not-going.patch",
    "content": "From d8f104bffb0c4acb8c5fcdf49628f7d02ed48f7f Mon Sep 17 00:00:00 2001\nFrom: Mike Frysinger <vapier@gentoo.org>\nDate: Sat, 16 May 2015 18:53:51 +0200\nSubject: [PATCH] Dont waste time building manpages if we're not going to use\n em.\n\nSigned-off-by: Ryan Barnett <ryanbarnett3@gmail.com>\n[Gustavo: update for parallel-build]\n\n[rebased on openssl-1.1.0h]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n[rebased on openssl-1.1.1i]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n Configurations/unix-Makefile.tmpl | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl\nindex 40cf2c3..777d9ca 100644\n--- a/Configurations/unix-Makefile.tmpl\n+++ b/Configurations/unix-Makefile.tmpl\n@@ -491,7 +491,7 @@ list-tests:\n \t@echo \"Tests are not supported with your chosen Configure options\"\n \t@ : {- output_on() if !$disabled{tests}; \"\" -}\n \n-install: install_sw install_ssldirs install_docs\n+install: install_sw install_ssldirs\n \n uninstall: uninstall_docs uninstall_sw\n \n-- \n2.16.3\n\n"
  },
  {
    "path": "package/libopenssl/0002-Reproducible-build-do-not-leak-compiler-path.patch",
    "content": "From b70be8c65365a8fc564226360d45adbbb29fc0af Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Tue, 24 Oct 2017 16:58:32 +0200\nSubject: [PATCH] Reproducible build: do not leak compiler path\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n\n[Rebased on openssl-1.1.1.a]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n crypto/build.info | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/crypto/build.info b/crypto/build.info\nindex 2c619c6..49ca6ab 100644\n--- a/crypto/build.info\n+++ b/crypto/build.info\n@@ -10,7 +10,7 @@ EXTRA=  ../ms/uplink-x86.pl ../ms/uplink.c ../ms/applink.c \\\n         ppccpuid.pl pariscid.pl alphacpuid.pl arm64cpuid.pl armv4cpuid.pl\n \n DEPEND[cversion.o]=buildinf.h\n-GENERATE[buildinf.h]=../util/mkbuildinf.pl \"$(CC) $(LIB_CFLAGS) $(CPPFLAGS_Q)\" \"$(PLATFORM)\"\n+GENERATE[buildinf.h]=../util/mkbuildinf.pl \"$$(basename $(CC)) $(LIB_CFLAGS) $(CPPFLAGS_Q)\" \"$(PLATFORM)\"\n DEPEND[buildinf.h]=../configdata.pm\n \n GENERATE[uplink-x86.s]=../ms/uplink-x86.pl $(PERLASM_SCHEME)\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/libopenssl/0003-Introduce-the-OPENSSL_NO_MADVISE-to-disable-call-to-.patch",
    "content": "From 1281ffc7959bd2070563e17a52ee4424196d885c Mon Sep 17 00:00:00 2001\nFrom: Patrick Havelange <patrick.havelange@essensium.com>\nDate: Wed, 23 Jan 2019 12:21:21 +0100\nSubject: [PATCH] Introduce the OPENSSL_NO_MADVISE to disable call to madvise()\n\nUpstream: https://github.com/openssl/openssl/pull/8089\nSigned-off-by: Patrick Havelange <patrick.havelange@essensium.com>\n---\n crypto/mem_sec.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/crypto/mem_sec.c b/crypto/mem_sec.c\nindex 9e0f670..32c7282 100644\n--- a/crypto/mem_sec.c\n+++ b/crypto/mem_sec.c\n@@ -485,7 +485,7 @@ static int sh_init(size_t size, int minsize)\n     if (mlock(sh.arena, sh.arena_size) < 0)\n         ret = 2;\n #endif\n-#ifdef MADV_DONTDUMP\n+#if defined(MADV_DONTDUMP) && !defined(OPENSSL_NO_MADVISE)\n     if (madvise(sh.arena, sh.arena_size, MADV_DONTDUMP) < 0)\n         ret = 2;\n #endif\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/libopenssl/0004-Configure-use-ELFv2-ABI-on-some-ppc64-big-endian-sys.patch",
    "content": "From b57cc2e4ee21babacbffc243626de72c248068ea Mon Sep 17 00:00:00 2001\nFrom: Andy Polyakov <appro@openssl.org>\nDate: Sun, 5 May 2019 18:30:55 +0200\nSubject: [PATCH] Configure: use ELFv2 ABI on some ppc64 big endian systems\n\nIf _CALL_ELF is defined to be 2, it's an ELFv2 system.\nConditionally switch to the v2 perlasm scheme.\n\nReviewed-by: Paul Dale <paul.dale@oracle.com>\nReviewed-by: Richard Levitte <levitte@openssl.org>\n(Merged from https://github.com/openssl/openssl/pull/8883)\n[vfazio: fixup for 1.1.1d]\nSigned-off-by: Vincent Fazio <vfazio@xes-inc.com>\n[rebased on openssl-1.1.1i]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n Configure | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/Configure b/Configure\nindex 5a699836f3..f9152b1702 100755\n--- a/Configure\n+++ b/Configure\n@@ -1417,6 +1417,10 @@ my %predefined_CXX = $config{CXX}\n     ? compiler_predefined($config{CROSS_COMPILE}.$config{CXX})\n     : ();\n \n+if ($target eq \"linux-ppc64\" && !$disabled{asm}) {\n+       $target{perlasm_scheme} = \"linux64v2\" if ($predefined_C{_CALL_ELF} == 2);\n+}\n+\n # Check for makedepend capabilities.\n if (!$disabled{makedepend}) {\n     if ($config{target} =~ /^(VC|vms)-/) {\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/libopenssl/0005-crypto-perlasm-ppc-xlate.pl-add-linux64v2-flavour.patch",
    "content": "From 07a0bbdd179a52907485fd793f0df31c097447af Mon Sep 17 00:00:00 2001\nFrom: Andy Polyakov <appro@openssl.org>\nDate: Sun, 5 May 2019 18:25:50 +0200\nSubject: [PATCH] crypto/perlasm/ppc-xlate.pl: add linux64v2 flavour\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis is a big endian ELFv2 configuration. ELFv2 was already being\nused for little endian, and big endian was traditionally ELFv1\nbut there are practical configurations that use ELFv2 with big\nendian nowadays (Adélie Linux, Void Linux, possibly Gentoo, etc.)\n\nReviewed-by: Paul Dale <paul.dale@oracle.com>\nReviewed-by: Richard Levitte <levitte@openssl.org>\n(Merged from https://github.com/openssl/openssl/pull/8883)\nSigned-off-by: Vincent Fazio <vfazio@xes-inc.com>\n---\n crypto/perlasm/ppc-xlate.pl | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/crypto/perlasm/ppc-xlate.pl b/crypto/perlasm/ppc-xlate.pl\nindex d220c6245b..eec82b8d48 100755\n--- a/crypto/perlasm/ppc-xlate.pl\n+++ b/crypto/perlasm/ppc-xlate.pl\n@@ -49,7 +49,7 @@ my $globl = sub {\n \t/osx/\t\t&& do { $name = \"_$name\";\n \t\t\t\tlast;\n \t\t\t      };\n-\t/linux.*(32|64le)/\n+\t/linux.*(32|64(le|v2))/\n \t\t\t&& do {\t$ret .= \".globl\t$name\";\n \t\t\t\tif (!$$type) {\n \t\t\t\t    $ret .= \"\\n.type\t$name,\\@function\";\n@@ -80,7 +80,7 @@ my $globl = sub {\n };\n my $text = sub {\n     my $ret = ($flavour =~ /aix/) ? \".csect\\t.text[PR],7\" : \".text\";\n-    $ret = \".abiversion\t2\\n\".$ret\tif ($flavour =~ /linux.*64le/);\n+    $ret = \".abiversion\t2\\n\".$ret\tif ($flavour =~ /linux.*64(le|v2)/);\n     $ret;\n };\n my $machine = sub {\n@@ -186,7 +186,7 @@ my $vmr = sub {\n \n # Some ABIs specify vrsave, special-purpose register #256, as reserved\n # for system use.\n-my $no_vrsave = ($flavour =~ /aix|linux64le/);\n+my $no_vrsave = ($flavour =~ /aix|linux64(le|v2)/);\n my $mtspr = sub {\n     my ($f,$idx,$ra) = @_;\n     if ($idx == 256 && $no_vrsave) {\n@@ -318,7 +318,7 @@ while($line=<>) {\n \tif ($label) {\n \t    my $xlated = ($GLOBALS{$label} or $label);\n \t    print \"$xlated:\";\n-\t    if ($flavour =~ /linux.*64le/) {\n+\t    if ($flavour =~ /linux.*64(le|v2)/) {\n \t\tif ($TYPES{$label} =~ /function/) {\n \t\t    printf \"\\n.localentry\t%s,0\\n\",$xlated;\n \t\t}\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/libopenssl/0006-Add-support-for-io_pgetevents_time64-syscall.patch",
    "content": "From 5b5e2985f355c8e99c196d9ce5d02c15bebadfbc Mon Sep 17 00:00:00 2001\nFrom: Alistair Francis <alistair.francis@wdc.com>\nDate: Thu, 29 Aug 2019 13:56:21 -0700\nSubject: [PATCH] Add support for io_pgetevents_time64 syscall\n\n32-bit architectures that are y2038 safe don't include syscalls that use\n32-bit time_t. Instead these architectures have suffixed syscalls that\nalways use a 64-bit time_t. In the case of the io_getevents syscall the\nsyscall has been replaced with the io_pgetevents_time64 syscall instead.\n\nThis patch changes the io_getevents() function to use the correct\nsyscall based on the avaliable syscalls and the time_t size. We will\nonly use the new 64-bit time_t syscall if the architecture is using a\n64-bit time_t. This is to avoid having to deal with 32/64-bit\nconversions and relying on a 64-bit timespec struct on 32-bit time_t\nplatforms. As of Linux 5.3 there are no 32-bit time_t architectures\nwithout __NR_io_getevents. In the future if a 32-bit time_t architecture\nwants to use the 64-bit syscalls we can handle the conversion.\n\nThis fixes build failures on 32-bit RISC-V.\n\nSigned-off-by: Alistair Francis <alistair.francis@wdc.com>\n\nReviewed-by: Richard Levitte <levitte@openssl.org>\nReviewed-by: Paul Dale <paul.dale@oracle.com>\n(Merged from https://github.com/openssl/openssl/pull/9819)\n---\n engines/e_afalg.c | 16 ++++++++++++++++\n 1 file changed, 16 insertions(+)\n\ndiff --git a/engines/e_afalg.c b/engines/e_afalg.c\nindex dacbe358cb..99516cb1bb 100644\n--- a/engines/e_afalg.c\n+++ b/engines/e_afalg.c\n@@ -125,7 +125,23 @@ static ossl_inline int io_getevents(aio_context_t ctx, long min, long max,\n                                struct io_event *events,\n                                struct timespec *timeout)\n {\n+#if defined(__NR_io_getevents)\n     return syscall(__NR_io_getevents, ctx, min, max, events, timeout);\n+#elif defined(__NR_io_pgetevents_time64)\n+    /* Let's only support the 64 suffix syscalls for 64-bit time_t.\n+     * This simplifies the code for us as we don't need to use a 64-bit\n+     * version of timespec with a 32-bit time_t and handle converting\n+     * between 64-bit and 32-bit times and check for overflows.\n+     */\n+    if (sizeof(timeout->tv_sec) == 8)\n+        return syscall(__NR_io_pgetevents_time64, ctx, min, max, events, timeout, NULL);\n+    else {\n+        errno = ENOSYS;\n+        return -1;\n+    }\n+#else\n+# error \"We require either the io_getevents syscall or __NR_io_pgetevents_time64.\"\n+#endif\n }\n \n static void afalg_waitfd_cleanup(ASYNC_WAIT_CTX *ctx, const void *key,\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/libopenssl/0007-Fixup-support-for-io_pgetevents_time64-syscall.patch",
    "content": "From e5499a3cac1e823c3e0697e8667e952317b70cc8 Mon Sep 17 00:00:00 2001\nFrom: Alistair Francis <alistair.francis@wdc.com>\nDate: Thu, 4 Mar 2021 12:10:11 -0500\nSubject: [PATCH] Fixup support for io_pgetevents_time64 syscall\n\nThis is a fixup for the original commit 5b5e2985f355c8e99c196d9ce5d02c15bebadfbc\n\"Add support for io_pgetevents_time64 syscall\" that didn't correctly\nwork for 32-bit architecutres with a 64-bit time_t that aren't RISC-V.\n\nFor a full discussion of the issue see:\nhttps://github.com/openssl/openssl/commit/5b5e2985f355c8e99c196d9ce5d02c15bebadfbc\n\nSigned-off-by: Alistair Francis <alistair.francis@wdc.com>\n\nReviewed-by: Tomas Mraz <tomas@openssl.org>\nReviewed-by: Paul Dale <pauli@openssl.org>\n(Merged from https://github.com/openssl/openssl/pull/14432)\n---\n engines/e_afalg.c | 55 ++++++++++++++++++++++++++++++++++++-----------\n 1 file changed, 42 insertions(+), 13 deletions(-)\n\ndiff --git a/engines/e_afalg.c b/engines/e_afalg.c\nindex 9480d7c24b..4e9d67db2d 100644\n--- a/engines/e_afalg.c\n+++ b/engines/e_afalg.c\n@@ -124,27 +124,56 @@ static ossl_inline int io_read(aio_context_t ctx, long n, struct iocb **iocb)\n     return syscall(__NR_io_submit, ctx, n, iocb);\n }\n \n+/* A version of 'struct timespec' with 32-bit time_t and nanoseconds.  */\n+struct __timespec32\n+{\n+  __kernel_long_t tv_sec;\n+  __kernel_long_t tv_nsec;\n+};\n+\n static ossl_inline int io_getevents(aio_context_t ctx, long min, long max,\n                                struct io_event *events,\n                                struct timespec *timeout)\n {\n+#if defined(__NR_io_pgetevents_time64)\n+    /* Check if we are a 32-bit architecture with a 64-bit time_t */\n+    if (sizeof(*timeout) != sizeof(struct __timespec32)) {\n+        int ret = syscall(__NR_io_pgetevents_time64, ctx, min, max, events,\n+                          timeout, NULL);\n+        if (ret == 0 || errno != ENOSYS)\n+            return ret;\n+    }\n+#endif\n+\n #if defined(__NR_io_getevents)\n-    return syscall(__NR_io_getevents, ctx, min, max, events, timeout);\n-#elif defined(__NR_io_pgetevents_time64)\n-    /* Let's only support the 64 suffix syscalls for 64-bit time_t.\n-     * This simplifies the code for us as we don't need to use a 64-bit\n-     * version of timespec with a 32-bit time_t and handle converting\n-     * between 64-bit and 32-bit times and check for overflows.\n-     */\n-    if (sizeof(timeout->tv_sec) == 8)\n-        return syscall(__NR_io_pgetevents_time64, ctx, min, max, events, timeout, NULL);\n+    if (sizeof(*timeout) == sizeof(struct __timespec32))\n+        /*\n+         * time_t matches our architecture length, we can just use\n+         * __NR_io_getevents\n+         */\n+        return syscall(__NR_io_getevents, ctx, min, max, events, timeout);\n     else {\n-        errno = ENOSYS;\n-        return -1;\n+        /*\n+         * We don't have __NR_io_pgetevents_time64, but we are using a\n+         * 64-bit time_t on a 32-bit architecture. If we can fit the\n+         * timeout value in a 32-bit time_t, then let's do that\n+         * and then use the __NR_io_getevents syscall.\n+         */\n+        if (timeout && timeout->tv_sec == (long)timeout->tv_sec) {\n+            struct __timespec32 ts32;\n+\n+            ts32.tv_sec = (__kernel_long_t) timeout->tv_sec;\n+            ts32.tv_nsec = (__kernel_long_t) timeout->tv_nsec;\n+\n+            return syscall(__NR_io_getevents, ctx, min, max, events, ts32);\n+        } else {\n+            return syscall(__NR_io_getevents, ctx, min, max, events, NULL);\n+        }\n     }\n-#else\n-# error \"We require either the io_getevents syscall or __NR_io_pgetevents_time64.\"\n #endif\n+\n+    errno = ENOSYS;\n+    return -1;\n }\n \n static void afalg_waitfd_cleanup(ASYNC_WAIT_CTX *ctx, const void *key,\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/libopenssl/Config.in",
    "content": "if BR2_PACKAGE_LIBOPENSSL\n\n# 4xx PowerPC cores seem to have trouble with openssl's ASM\n# optimizations\nconfig BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC\n\tbool\n\tdefault y if BR2_powerpc\n\tdepends on !BR2_powerpc_401\n\tdepends on !BR2_powerpc_403\n\tdepends on !BR2_powerpc_405\n\tdepends on !BR2_powerpc_405fp\n\tdepends on !BR2_powerpc_440\n\tdepends on !BR2_powerpc_440fp\n\nconfig BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH\n\tstring\n\t# Doesn't work for thumb-only (Cortex-M?)\n\tdefault \"linux-armv4\"\t\t\tif BR2_ARM_CPU_HAS_ARM\n\tdefault \"linux-aarch64\"\t\t\tif BR2_aarch64\n\tdefault \"linux-ppc\"\t\t\tif BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC\n\tdefault \"linux-ppc64\"\t\t\tif BR2_powerpc64\n\tdefault \"linux-ppc64le\"\t\t\tif BR2_powerpc64le\n\tdefault \"linux-x86\"\t\t\tif BR2_i386\n\tdefault \"linux-x86_64\"\t\t\tif BR2_x86_64\n\t# no-asm is needed with generic architectures such as\n\t# linux-generic{32,64}, see\n\t# https://github.com/openssl/openssl/issues/9839\n\tdefault \"linux-generic64 no-asm\"\tif BR2_ARCH_IS_64 && !BR2_MIPS_NABI32\n\tdefault \"linux-generic32 no-asm\"\n\nconfig BR2_PACKAGE_LIBOPENSSL_BIN\n\tbool \"openssl binary\"\n\thelp\n\t  Install the openssl binary and the associated helper scripts\n\t  to the target file system. This is a command line tool for\n\t  doing various cryptographic stuff.\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENGINES\n\tbool \"openssl additional engines\"\n\thelp\n\t  Install additional encryption engine libraries.\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA\n\tbool \"enable CHACHA\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5\n\tbool \"enable RC5\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2\n\tbool \"enable RC2\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4\n\tbool \"enable RC4\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2\n\tbool \"enable MD2\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4\n\tbool \"enable MD4\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2\n\tbool \"enable MDC2\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2\n\tbool \"enable BLAKE2\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA\n\tbool \"enable IDEA\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED\n\tbool \"enable SEED\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_DES\n\tbool \"enable DES\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160\n\tbool \"enable RMD160\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL\n\tbool \"enable WHIRLPOOL\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH\n\tbool \"enable BLOWFISH\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL\n\tbool \"enable SSL\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL2\n\tbool \"enable SSL2\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3\n\tbool \"enable SSL3\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL\n\tbool \"enable WEAK_SSL\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK\n\tbool \"enable mode PSK\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST\n\tbool \"enable mode CAST\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_UNSECURE\n\tbool \"enable unit test, debug, backtrace\"\n\tdefault y\n\thelp\n\t  Enable unit-test crypto-mdebug-backtrace\n\t  crypto-mdebug autoerrinit mode.\n\nconfig BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE\n\tbool \"enable dynamic engine\"\n\tdefault y\n\nconfig BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP\n\tbool \"enable compression\"\n\tdefault y\n\nendif # BR2_PACKAGE_LIBOPENSSL\n"
  },
  {
    "path": "package/libopenssl/libopenssl.hash",
    "content": "# From https://www.openssl.org/source/openssl-1.1.1l.tar.gz.sha256\nsha256  0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1  openssl-1.1.1l.tar.gz\n\n# License files\nsha256  c32913b33252e71190af2066f08115c69bc9fddadf3bf29296e20c835389841c  LICENSE\n"
  },
  {
    "path": "package/libopenssl/libopenssl.mk",
    "content": "################################################################################\n#\n# libopenssl\n#\n################################################################################\n\nLIBOPENSSL_VERSION = 1.1.1l\nLIBOPENSSL_SITE = https://www.openssl.org/source\nLIBOPENSSL_SOURCE = openssl-$(LIBOPENSSL_VERSION).tar.gz\nLIBOPENSSL_LICENSE = OpenSSL or SSLeay\nLIBOPENSSL_LICENSE_FILES = LICENSE\nLIBOPENSSL_INSTALL_STAGING = YES\nLIBOPENSSL_DEPENDENCIES = zlib\nHOST_LIBOPENSSL_DEPENDENCIES = host-zlib\nLIBOPENSSL_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH))\nLIBOPENSSL_CFLAGS = $(TARGET_CFLAGS)\nLIBOPENSSL_PROVIDES = openssl\nLIBOPENSSL_CPE_ID_VENDOR = $(LIBOPENSSL_PROVIDES)\nLIBOPENSSL_CPE_ID_PRODUCT = $(LIBOPENSSL_PROVIDES)\n\nifeq ($(BR2_m68k_cf),y)\n# relocation truncated to fit: R_68K_GOT16O\nLIBOPENSSL_CFLAGS += -mxgot\n# resolves an assembler \"out of range error\" with blake2 and sha512 algorithms\nLIBOPENSSL_CFLAGS += -DOPENSSL_SMALL_FOOTPRINT\nendif\n\nifeq ($(BR2_USE_MMU),)\nLIBOPENSSL_CFLAGS += -DHAVE_FORK=0 -DOPENSSL_NO_MADVISE\nendif\n\nifeq ($(BR2_PACKAGE_HAS_CRYPTODEV),y)\nLIBOPENSSL_DEPENDENCIES += cryptodev\nendif\n\n# fixes the following build failures:\n#\n# - musl\n#   ./libcrypto.so: undefined reference to `getcontext'\n#   ./libcrypto.so: undefined reference to `setcontext'\n#   ./libcrypto.so: undefined reference to `makecontext'\n#\n# - uclibc:\n#   crypto/async/arch/../arch/async_posix.h:32:5: error: unknown type name 'ucontext_t'\n#\n\nifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)\nLIBOPENSSL_CFLAGS += -DOPENSSL_NO_ASYNC\nendif\nifeq ($(BR2_TOOLCHAIN_HAS_UCONTEXT),)\nLIBOPENSSL_CFLAGS += -DOPENSSL_NO_ASYNC\nendif\n\ndefine HOST_LIBOPENSSL_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(HOST_CONFIGURE_OPTS) \\\n\t\t./config \\\n\t\t--prefix=$(HOST_DIR) \\\n\t\t--openssldir=$(HOST_DIR)/etc/ssl \\\n\t\tno-tests \\\n\t\tno-fuzz-libfuzzer \\\n\t\tno-fuzz-afl \\\n\t\tshared \\\n\t\tzlib-dynamic \\\n\t)\n\t$(SED) \"s#-O[0-9sg]#$(HOST_CFLAGS)#\" $(@D)/Makefile\nendef\n\ndefine LIBOPENSSL_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_CONFIGURE_ARGS) \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t./Configure \\\n\t\t\t$(LIBOPENSSL_TARGET_ARCH) \\\n\t\t\t--prefix=/usr \\\n\t\t\t--openssldir=/etc/ssl \\\n\t\t\t$(if $(BR2_TOOLCHAIN_HAS_LIBATOMIC),-latomic) \\\n\t\t\t$(if $(BR2_TOOLCHAIN_HAS_THREADS),threads,no-threads) \\\n\t\t\t$(if $(BR2_STATIC_LIBS),no-shared,shared) \\\n\t\t\t$(if $(BR2_PACKAGE_HAS_CRYPTODEV),enable-devcryptoeng) \\\n\t\t\tno-rc5 \\\n\t\t\tenable-camellia \\\n\t\t\tenable-mdc2 \\\n\t\t\tno-tests \\\n\t\t\tno-fuzz-libfuzzer \\\n\t\t\tno-fuzz-afl \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_CHACHA),,no-chacha) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5),,no-rc5) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RC2),,no-rc2) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4),,no-rc4) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MD2),,no-md2) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4),,no-md4) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_MDC2),,no-mdc2) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_BLAKE2),,no-blake2) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_IDEA),,no-idea) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SEED),,no-seed) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_DES),,no-des) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160),,no-rmd160) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_WHIRLPOOL),,no-whirlpool) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH),,no-bf) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL),,no-ssl) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL2),,no-ssl2) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_SSL3),,no-ssl3) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_WEAK_SSL),,no-weak-ssl-ciphers) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK),,no-psk) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST),,no-cast) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_UNSECURE),,no-unit-test no-crypto-mdebug-backtrace no-crypto-mdebug no-autoerrinit) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_DYNAMIC_ENGINE),,no-dynamic-engine ) \\\n\t\t\t$(if $(BR2_PACKAGE_LIBOPENSSL_ENABLE_COMP),,no-comp) \\\n\t\t\t$(if $(BR2_STATIC_LIBS),zlib,zlib-dynamic) \\\n\t\t\t$(if $(BR2_STATIC_LIBS),no-dso) \\\n\t)\n\t$(SED) \"s#-march=[-a-z0-9] ##\" -e \"s#-mcpu=[-a-z0-9] ##g\" $(@D)/Makefile\n\t$(SED) \"s#-O[0-9sg]#$(LIBOPENSSL_CFLAGS)#\" $(@D)/Makefile\n\t$(SED) \"s# build_tests##\" $(@D)/Makefile\nendef\n\n# libdl is not available in a static build, and this is not implied by no-dso\nifeq ($(BR2_STATIC_LIBS),y)\ndefine LIBOPENSSL_FIXUP_STATIC_MAKEFILE\n\t$(SED) 's#-ldl##g' $(@D)/Makefile\nendef\nLIBOPENSSL_POST_CONFIGURE_HOOKS += LIBOPENSSL_FIXUP_STATIC_MAKEFILE\nendif\n\ndefine HOST_LIBOPENSSL_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine LIBOPENSSL_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine LIBOPENSSL_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\ndefine HOST_LIBOPENSSL_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) install\nendef\n\ndefine LIBOPENSSL_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\n\trm -rf $(TARGET_DIR)/usr/lib/ssl\n\trm -f $(TARGET_DIR)/usr/bin/c_rehash\nendef\n\n# libdl has no business in a static build\nifeq ($(BR2_STATIC_LIBS),y)\ndefine LIBOPENSSL_FIXUP_STATIC_PKGCONFIG\n\t$(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/libcrypto.pc\n\t$(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/libssl.pc\n\t$(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/openssl.pc\nendef\nLIBOPENSSL_POST_INSTALL_STAGING_HOOKS += LIBOPENSSL_FIXUP_STATIC_PKGCONFIG\nendif\n\nifeq ($(BR2_PACKAGE_PERL),)\ndefine LIBOPENSSL_REMOVE_PERL_SCRIPTS\n\t$(RM) -f $(TARGET_DIR)/etc/ssl/misc/{CA.pl,tsget}\nendef\nLIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_PERL_SCRIPTS\nendif\n\nifeq ($(BR2_PACKAGE_LIBOPENSSL_BIN),)\ndefine LIBOPENSSL_REMOVE_BIN\n\t$(RM) -f $(TARGET_DIR)/usr/bin/openssl\n\t$(RM) -f $(TARGET_DIR)/etc/ssl/misc/{CA.*,c_*}\nendef\nLIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_BIN\nendif\n\nifneq ($(BR2_PACKAGE_LIBOPENSSL_ENGINES),y)\ndefine LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES\n\trm -rf $(TARGET_DIR)/usr/lib/engines-1.1\nendef\nLIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES\nendif\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/liboping/0001-ping_host_add-Decrease-buffer-size-to-make-GCC-s-truncation-check-happy.patch",
    "content": "From 18ca43507b351f339ff23062541ee8d58e813a53 Mon Sep 17 00:00:00 2001\nFrom: Florian Forster <ff@octo.it>\nDate: Sun, 29 Jul 2018 14:34:19 +0200\nSubject: [PATCH] ping_host_add: Decrease buffer size to make GCC's truncation\n check happy.\n\nFixes: #38\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/octo/liboping/commit/18ca43507b351f339ff23062541ee8d58e813a53]\n---\n src/liboping.c | 6 ++----\n 1 file changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/src/liboping.c b/src/liboping.c\nindex 5253e8c..2470988 100644\n--- a/src/liboping.c\n+++ b/src/liboping.c\n@@ -1636,10 +1636,8 @@ int ping_host_add (pingobj_t *obj, const char *host)\n \t\t}\n \t\telse\n \t\t{\n-\t\t\tchar errmsg[PING_ERRMSG_LEN];\n-\n-\t\t\tsnprintf (errmsg, PING_ERRMSG_LEN, \"Unknown `ai_family': %i\", ai_ptr->ai_family);\n-\t\t\terrmsg[PING_ERRMSG_LEN - 1] = '\\0';\n+\t\t\tchar errmsg[64];\n+\t\t\tsnprintf (errmsg, sizeof(errmsg), \"Unknown `ai_family': %d\", ai_ptr->ai_family);\n \n \t\t\tdprintf (\"%s\", errmsg);\n \t\t\tping_set_error (obj, \"getaddrinfo\", errmsg);\n"
  },
  {
    "path": "package/liboping/Config.in",
    "content": "config BR2_PACKAGE_LIBOPING\n\tbool \"liboping\"\n\thelp\n\t  liboping is a C library to generate ICMP echo requests,\n\t  better known as \"ping packets\".\n\n\t  http://noping.cc/\n"
  },
  {
    "path": "package/liboping/liboping.hash",
    "content": "# From http://noping.cc/#download\nsha256\teb38aa93f93e8ab282d97e2582fbaea88b3f889a08cbc9dbf20059c3779d5cd8\tliboping-1.10.0.tar.bz2\n\n# Hash for license file:\nsha256\tdc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\tCOPYING\n"
  },
  {
    "path": "package/liboping/liboping.mk",
    "content": "################################################################################\n#\n# liboping\n#\n################################################################################\n\nLIBOPING_VERSION = 1.10.0\nLIBOPING_SITE = http://noping.cc/files\nLIBOPING_SOURCE = liboping-$(LIBOPING_VERSION).tar.bz2\nLIBOPING_INSTALL_STAGING = YES\nLIBOPING_CONF_OPTS = --without-perl-bindings\nLIBOPING_LICENSE = LGPL-2.1+, GPL-2.0\nLIBOPING_LICENSE_FILES = COPYING\nLIBOPING_CPE_ID_VENDOR = noping\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nLIBOPING_DEPENDENCIES += ncurses\nLIBOPING_CONF_OPTS += --with-ncurses\nelse\nLIBOPING_CONF_OPTS += --without-ncurses\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libopusenc/Config.in",
    "content": "config BR2_PACKAGE_LIBOPUSENC\n\tbool \"libopusenc\"\n\tselect BR2_PACKAGE_OPUS\n\thelp\n\t  The libopusenc library provides a high-level API for\n\t  encoding opus audio files and live streams.\n\n\t  http://opus-codec.org\n"
  },
  {
    "path": "package/libopusenc/libopusenc.hash",
    "content": "# From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt\nsha256  8298db61a8d3d63e41c1a80705baa8ce9ff3f50452ea7ec1c19a564fe106cbb9  libopusenc-0.2.1.tar.gz\nsha256  93b17ab56b8230127fea532be0dcb4e6d71e66ab5e8ce5d6ae8785d7288b164f  COPYING\n"
  },
  {
    "path": "package/libopusenc/libopusenc.mk",
    "content": "################################################################################\n#\n# libopusenc\n#\n################################################################################\n\nLIBOPUSENC_VERSION = 0.2.1\nLIBOPUSENC_SITE = https://downloads.xiph.org/releases/opus\nLIBOPUSENC_LICENSE = BSD-3-Clause\nLIBOPUSENC_LICENSE_FILES = COPYING\nLIBOPUSENC_INSTALL_STAGING = YES\nLIBOPUSENC_DEPENDENCIES = host-pkgconf opus\n\nLIBOPUSENC_CONF_OPTS = --disable-examples\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libosip2/Config.in",
    "content": "config BR2_PACKAGE_LIBOSIP2\n\tbool \"libosip2\"\n\thelp\n\t  GNU SIP (Session Initiation Protocol)\n\t  This library aims to provide multimedia and telecom software\n\t  developers an easy and powerful interface to initiate and\n\t  control SIP based sessions in their applications.\n\t  SIP is a open standard replacement from IETF for H323.\n\n\t  http://www.gnu.org/software/osip/\n"
  },
  {
    "path": "package/libosip2/libosip2.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  ee3784bc8e7774f56ecd0e2ca6e3e11d38b373435115baf1f1aa0ca0bfd02bf2  libosip2-5.2.1.tar.gz\n\n# Hash for license file:\nsha256  8d9e95ed0e48df46dc758eb0d86df611f771eab4eed94bebb77dca87f1c897de  COPYING\n"
  },
  {
    "path": "package/libosip2/libosip2.mk",
    "content": "################################################################################\n#\n# libosip2\n#\n################################################################################\n\nLIBOSIP2_VERSION = 5.2.1\nLIBOSIP2_SITE = $(BR2_GNU_MIRROR)/osip\nLIBOSIP2_INSTALL_STAGING = YES\nLIBOSIP2_LICENSE = LGPL-2.1+\nLIBOSIP2_LICENSE_FILES = COPYING\nLIBOSIP2_CPE_ID_VENDOR = gnu\nLIBOSIP2_CPE_ID_PRODUCT = osip\n\nifeq ($(BR2_arc),y)\n# toolchain __arc__ define conflicts with libosip2 source\nLIBOSIP2_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -U__arc__\"\nendif\n\nLIBOSIP2_CONF_OPTS = \\\n\t--enable-mt=$(if $(BR2_TOOLCHAIN_HAS_THREADS),yes,no)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libosmium/Config.in",
    "content": "config BR2_PACKAGE_LIBOSMIUM\n\tbool \"libosmium\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # boost\n\tdepends on BR2_USE_WCHAR # boost\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_PROTOZERO\n\thelp\n\t  A fast and flexible C++ library for working with OpenStreetMap\n\t  data. Libosmium works on Linux, macOS and Windows.\n\n\t  https://osmcode.org/libosmium/\n\ncomment \"libosmium needs a toolchain w/ C++,  wchar, threads, gcc >= 4.7\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libosmium/libosmium.hash",
    "content": "# Locally calculated\nsha256  6faa7952aa1210dcd9ae4ef83e7653a4f8eb880e6a4e5b37f87a5d4835f6327b  libosmium-2.17.1.tar.gz\nsha256  c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566  LICENSE\n"
  },
  {
    "path": "package/libosmium/libosmium.mk",
    "content": "################################################################################\n#\n# libosmium\n#\n################################################################################\n\nLIBOSMIUM_VERSION = 2.17.1\nLIBOSMIUM_SITE = $(call github,osmcode,libosmium,v$(LIBOSMIUM_VERSION))\nLIBOSMIUM_LICENSE = BSL-1.0\nLIBOSMIUM_LICENSE_FILES = LICENSE\nLIBOSMIUM_INSTALL_STAGING = YES\nLIBOSMIUM_DEPENDENCIES = boost protozero\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nLIBOSMIUM_DEPENDENCIES += bzip2\nendif\n\nifeq ($(BR2_PACKAGE_EXPAT),y)\nLIBOSMIUM_DEPENDENCIES += expat\nendif\n\nifeq ($(BR2_PACKAGE_LIBGEOS),y)\nLIBOSMIUM_DEPENDENCIES += libgeos\nendif\n\nifeq ($(BR2_PACKAGE_LZ4),y)\nLIBOSMIUM_DEPENDENCIES += lz4\nendif\n\nifeq ($(BR2_PACKAGE_PROJ),y)\nLIBOSMIUM_DEPENDENCIES += proj\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLIBOSMIUM_DEPENDENCIES += zlib\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libostree/Config.in",
    "content": "config BR2_PACKAGE_LIBOSTREE\n\tbool \"libostree\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpgme, libgpg-error\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_USE_MMU # e2fsprogs, libglib2, libgpgme\n\t# doesn't build with musl due to lack of TEMP_FAILURE_RETRY()\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\tselect BR2_PACKAGE_E2FSPROGS\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBGPG_ERROR\n\tselect BR2_PACKAGE_LIBGPGME\n\tselect BR2_PACKAGE_XZ\n\thelp\n\t  OSTree is an upgrade system for Linux-based operating\n\t  systems.\n\n\t  https://ostree.readthedocs.io/en/latest/\n\ncomment \"libostree needs a uClibc or glibc toolchain w/ threads, dynamic library, wchar\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \\\n\t\t|| !BR2_USE_WCHAR || BR2_TOOLCHAIN_USES_MUSL\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/libostree/libostree.hash",
    "content": "# Locally calculated\nsha256  b45a32ded72c9fb6d2ab508adeae0306e4e2bb348db152f3d1b3708375829e1f  libostree-2021.5.tar.xz\nsha256  b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c  COPYING\n"
  },
  {
    "path": "package/libostree/libostree.mk",
    "content": "################################################################################\n#\n# libostree\n#\n################################################################################\n\nLIBOSTREE_VERSION = 2021.5\nLIBOSTREE_SOURCE = libostree-$(LIBOSTREE_VERSION).tar.xz\nLIBOSTREE_SITE = https://github.com/ostreedev/ostree/releases/download/v$(LIBOSTREE_VERSION)\n\nLIBOSTREE_LICENSE = LGPL-2.0+\nLIBOSTREE_LICENSE_FILES = COPYING\nLIBOSTREE_DEPENDENCIES = e2fsprogs host-bison host-pkgconf libglib2 libgpg-error libgpgme xz\nLIBOSTREE_INSTALL_STAGING = YES\n\nLIBOSTREE_CONF_ENV = \\\n\tGPG_ERROR_CONFIG=$(STAGING_DIR)/usr/bin/gpg-error-config\nLIBOSTREE_CONF_OPTS += \\\n\t--with-gpgme-prefix=$(STAGING_DIR)/usr \\\n\t--disable-gtk-doc \\\n\t--disable-gtk-doc-html \\\n\t--disable-gtk-doc-pdf \\\n\t--disable-man\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBOSTREE_DEPENDENCIES += gobject-introspection\nLIBOSTREE_CONF_OPTS += --enable-introspection\nLIBOSTREE_MAKE_OPTS = INTROSPECTION_SCANNER_ENV=\nelse\nLIBOSTREE_CONF_OPTS += --disable-introspection\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBOSTREE_CONF_OPTS += --with-openssl\nLIBOSTREE_DEPENDENCIES += openssl\nelse\nLIBOSTREE_CONF_OPTS += --without-openssl\nendif\n\n# Avahi support needs libavahi-client, which is built by avahi if avahi-daemon\n# and dbus is selected. Since there is no BR2_PACKAGE_LIBAVAHI_CLIENT config\n# option yet, use the avahi-daemon and dbus config symbols to check for\n# libavahi-client.\nifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy)\nLIBOSTREE_CONF_OPTS += --with-avahi\nLIBOSTREE_DEPENDENCIES += avahi\nelse\nLIBOSTREE_CONF_OPTS += --without-avahi\nendif\n\n#cURL support depends on libsoup\nifeq ($(BR2_PACKAGE_LIBSOUP),y)\nLIBOSTREE_CONF_OPTS += --with-soup\nLIBOSTREE_DEPENDENCIES += libsoup\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nLIBOSTREE_CONF_OPTS += --with-curl\nLIBOSTREE_DEPENDENCIES += libcurl\nelse\nLIBOSTREE_CONF_OPTS += --without-curl\nendif\nelse\nLIBOSTREE_CONF_OPTS += --without-soup --without-curl\nendif\n\nifeq ($(BR2_PACKAGE_LIBARCHIVE),y)\nLIBOSTREE_CONF_OPTS += --with-libarchive\nLIBOSTREE_DEPENDENCIES += libarchive\nelse\nLIBOSTREE_CONF_OPTS += --without-libarchive\nendif\n\nifeq ($(BR2_PACKAGE_LIBFUSE),y)\nLIBOSTREE_CONF_OPTS += --enable-rofiles-fuse\nLIBOSTREE_DEPENDENCIES += libfuse\nelse\nLIBOSTREE_CONF_OPTS += --disable-rofiles-fuse\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nLIBOSTREE_CONF_OPTS += --with-selinux\nLIBOSTREE_DEPENDENCIES += libselinux\nelse\nLIBOSTREE_CONF_OPTS += --without-selinux\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nLIBOSTREE_CONF_OPTS += \\\n\t--with-libsystemd \\\n\t--with-systemdsystemunitdir=/usr/lib/systemd/system\nLIBOSTREE_DEPENDENCIES += systemd\nelse\nLIBOSTREE_CONF_OPTS += --without-libsystemd\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libp11/Config.in",
    "content": "config BR2_PACKAGE_LIBP11\n\tbool \"libp11\"\n\tdepends on !BR2_STATIC_LIBS # dlopen\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  OpenSSL engine for PKCS#11 modules. Part of the OpenSC\n\t  project.\n\n\t  https://github.com/OpenSC/OpenSC/wiki\n\ncomment \"libp11 needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libp11/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_LIBP11\n\tbool \"host libp11\"\n\thelp\n\t  OpenSSL engine for PKCS#11 modules. Part of the OpenSC\n\t  project.\n\n\t  https://github.com/OpenSC/OpenSC/wiki\n"
  },
  {
    "path": "package/libp11/libp11.hash",
    "content": "# Locally computed:\nsha256  57d47a12a76fd92664ae30032cf969284ebac1dfc25bf824999d74b016d51366  libp11-0.4.11.tar.gz\nsha256  d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f  COPYING\n"
  },
  {
    "path": "package/libp11/libp11.mk",
    "content": "################################################################################\n#\n# libp11\n#\n################################################################################\n\nLIBP11_VERSION = 0.4.11\nLIBP11_SITE = https://github.com/OpenSC/libp11/releases/download/libp11-$(LIBP11_VERSION)\nLIBP11_DEPENDENCIES = openssl host-pkgconf\nLIBP11_INSTALL_STAGING = YES\nLIBP11_LICENSE = LGPL-2.1+\nLIBP11_LICENSE_FILES = COPYING\n\n# pkg-config returns a libcrypto enginesdir prefixed with the sysroot,\n# so let's rip it out.\nLIBP11_CONF_OPTS = \\\n\t--with-enginesdir=`$(PKG_CONFIG_HOST_BINARY) --variable enginesdir libcrypto | xargs readlink -f | sed 's%^$(STAGING_DIR)%%'`\n\nifeq ($(BR2_PACKAGE_P11_KIT),y)\nLIBP11_CONF_OPTS += --with-pkcs11-module=/usr/lib/p11-kit-proxy.so\nendif\n\nHOST_LIBP11_DEPENDENCIES = host-pkgconf host-openssl\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libpagekite/Config.in",
    "content": "config BR2_PACKAGE_LIBPAGEKITE\n\tbool \"libpagekite\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBEV\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  PageKite is a protocol for dynamic, tunneled reverse proxying\n\t  of arbitrary TCP byte streams. It is particularly well suited\n\t  for making a HTTP server on a device without a public IP\n\t  address visible to the wider Internet, but can also be used\n\t  for a variety of other things, including SSH access.\n\n\t  libpagekite is a tight, fast implementation of the PageKite\n\t  protocol in C, suitable for high-performance or embedded\n\t  applications.\n\n\t  In addition to the libpagekite library, this package installs\n\t  the pagekitec, sshkite and httpkite tools.\n\n\t  https://pagekite.net\n\t  https://github.com/pagekite/libpagekite\n\ncomment \"libpagekite needs a toolchain with threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libpagekite/libpagekite.hash",
    "content": "# Locally calculated\nsha256  c812815aae6f100212b7d6f662370a0634151fabb59f028126a59c4083a6d26d  libpagekite-0.91.190530.tar.gz\n\n# License files, locally calculated\nsha256  ba443b9c9d4273d06aae3e147e9ad1ec199cc9c23455f486a039536d47f57eed  doc/COPYING.md\nsha256  4a271d0bb6bb6e0bac880efddb46da73e6df3dcf0d9ca08a945a232f8ab882ef  doc/LICENSE-2.0.txt\nsha256  8e0f770cabe772d67d36469f6bf413afd2dcfa6ac37acfc65f770cf3a134106d  doc/AGPLv3.txt\n"
  },
  {
    "path": "package/libpagekite/libpagekite.mk",
    "content": "################################################################################\n#\n# libpagekite\n#\n################################################################################\n\nLIBPAGEKITE_VERSION = 0.91.190530\nLIBPAGEKITE_SITE = $(call github,pagekite,libpagekite,v$(LIBPAGEKITE_VERSION))\n\n# pkrelay is AGPL-3.0+ but is not built\nLIBPAGEKITE_LICENSE = Apache-2.0 or AGPL-3.0+\nLIBPAGEKITE_LICENSE_FILES = doc/COPYING.md doc/LICENSE-2.0.txt doc/AGPLv3.txt\n\nLIBPAGEKITE_DEPENDENCIES = host-pkgconf libev openssl\nLIBPAGEKITE_INSTALL_STAGING = YES\n\n# Sources from git, no configure included\nLIBPAGEKITE_AUTORECONF = YES\n\nLIBPAGEKITE_CONF_OPTS = \\\n\t--with-openssl \\\n\t--without-tests \\\n\t--with-os-libev \\\n\t--without-java \\\n\t--without-agpl-relay \\\n\t--without-ds-logfmt\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libpam-nfc/Config.in",
    "content": "config BR2_PACKAGE_LIBPAM_NFC\n\tbool \"libpam-nfc\"\n\tselect BR2_PACKAGE_LIBNFC\n\thelp\n\t  NFC-based PAM authentification module.\n\n\t  https://github.com/nfc-tools/pam_nfc\n"
  },
  {
    "path": "package/libpam-nfc/libpam-nfc.hash",
    "content": "# locally computed\nsha256  042049cecaacd9274f444d69f756b9499eb2d2436136f576eef375531ac25157  libpam-nfc-64a8b30ba2cfd634342ded8c096c7cfc5c8fa22a.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/libpam-nfc/libpam-nfc.mk",
    "content": "################################################################################\n#\n# libpam-nfc\n#\n################################################################################\n\nLIBPAM_NFC_VERSION = 64a8b30ba2cfd634342ded8c096c7cfc5c8fa22a\nLIBPAM_NFC_SITE = $(call github,nfc-tools,pam_nfc,$(LIBPAM_NFC_VERSION))\nLIBPAM_NFC_LICENSE = GPL-2.0\nLIBPAM_NFC_LICENSE_FILES = COPYING\nLIBPAM_NFC_DEPENDENCIES = linux-pam libnfc\n# Fetching from github, we need to generate the configure script\nLIBPAM_NFC_AUTORECONF = YES\nLIBPAM_NFC_INSTALL_STAGING = YES\n\nLIBPAM_NFC_CONF_OPTS = \\\n\t--with-pam-dir=/lib/security\n\n# libpam breaks with parallel build, but is very fast to build.\nLIBPAM_NFC_MAKE = $(MAKE1)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libpam-radius-auth/Config.in",
    "content": "config BR2_PACKAGE_LIBPAM_RADIUS_AUTH\n\tbool \"libpam-radius-auth\"\n\thelp\n\t  This is the PAM to RADIUS authentication module. It allows\n\t  any PAM-capable machine to become a RADIUS client for\n\t  authentication and accounting requests. You will need a\n\t  RADIUS server to perform the actual authentication.\n\n\t  http://freeradius.org/pam_radius_auth/\n"
  },
  {
    "path": "package/libpam-radius-auth/libpam-radius-auth.hash",
    "content": "# Locally calculated after checking PGP signature\nsha256\t  742d79fc39824726c098e746bd3dc3484f983f5ee082c621c1e848b2c3725305\tpam_radius-1.4.0.tar.gz\n\n# Hash for license file:\nsha256\t  67f82e045cf7acfef853ea0f426575a8359161a0a325e19f02b529a87c4b6c34\tLICENSE\n"
  },
  {
    "path": "package/libpam-radius-auth/libpam-radius-auth.mk",
    "content": "################################################################################\n#\n# libpam-radius-auth\n#\n################################################################################\n\nLIBPAM_RADIUS_AUTH_VERSION = 1.4.0\nLIBPAM_RADIUS_AUTH_SITE = ftp://ftp.freeradius.org/pub/radius\nLIBPAM_RADIUS_AUTH_SOURCE = pam_radius-$(LIBPAM_RADIUS_AUTH_VERSION).tar.gz\nLIBPAM_RADIUS_AUTH_DEPENDENCIES = linux-pam\nLIBPAM_RADIUS_AUTH_INSTALL_STAGING = YES\nLIBPAM_RADIUS_AUTH_LICENSE = GPL-2.0+\nLIBPAM_RADIUS_AUTH_LICENSE_FILES = LICENSE\n# While autoconf is used for configuration, the Makefile is\n# hand-written, so we need to pass CC, LD, CFLAGS at build time.\nLIBPAM_RADIUS_AUTH_MAKE_ENV = $(TARGET_CONFIGURE_OPTS)\n\ndefine LIBPAM_RADIUS_AUTH_INSTALL_STAGING_CMDS\n\tmkdir -p $(STAGING_DIR)/lib/security/\n\tcp -dpfr $(@D)/pam_radius_auth.so* $(STAGING_DIR)/lib/security/\nendef\n\ndefine LIBPAM_RADIUS_AUTH_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/lib/security/\n\tcp -dpfr $(@D)/pam_radius_auth.so* $(TARGET_DIR)/lib/security/\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libpam-tacplus/0001-Add-an-option-to-disable-Werror.patch",
    "content": "From 88c78901503d50d0a62d85c96994ca4d67ab61e0 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 13 Nov 2020 20:50:27 +0100\nSubject: [PATCH] Add an option to disable -Werror\n\nAllow the user to disable -Werror to avoid the following build failure\nwith gcc 4.8:\n\nlibtac/lib/magic.c:138:13: error: ignoring return value of 'read', declared with attribute warn_unused_result [-Werror=unused-result]\n             (void) read(rfd, &seed, sizeof(seed));\n             ^\n\nFixes:\n - http://autobuild.buildroot.org/results/5c17226f12eba104d907693ec37fc101cc6d447f\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile.am  | 6 +++++-\n configure.ac | 3 +++\n 2 files changed, 8 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 0be3cdb..4a137e9 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -8,7 +8,11 @@\n \n ACLOCAL_AMFLAGS = -I config\n AUTOMAKE_OPTIONS = subdir-objects\n-AM_CFLAGS = -Wall -Wextra -Werror\n+AM_CFLAGS = -Wall -Wextra\n+\n+if ENABLE_WERROR\n+AM_CFLAGS += -Werror\n+endif\n \n if TACC\n bin_PROGRAMS = tacc\ndiff --git a/configure.ac b/configure.ac\nindex d0c5eba..dd8a966 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -100,6 +100,9 @@ AC_SUBST(pamdir)\n AC_ARG_ENABLE(doc, AS_HELP_STRING([--disable-doc], [do not build docs]))\n AM_CONDITIONAL(DOC, test \"x$enable_doc\" != \"xno\")\n \n+AC_ARG_ENABLE(werror, AS_HELP_STRING([--disable-werror], [do not build with -Werror]))\n+AM_CONDITIONAL(ENABLE_WERROR, test \"x$enable_werror\" != \"xno\")\n+\n dnl --------------------------------------------------------------------\n dnl Switch for run-time debugging\n AC_ARG_ENABLE(runtime-debugging, [AS_HELP_STRING([--enable-runtime-debugging],\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/libpam-tacplus/Config.in",
    "content": "config BR2_PACKAGE_LIBPAM_TACPLUS\n\tbool \"libpam-tacplus\"\n\thelp\n\t  TACACS+ protocol client library and PAM module in C. This\n\t  PAM module support authentication, authorization (account\n\t  management) and accounting (session management)performed\n\t  using TACACS+ protocol designed by Cisco.\n\n\t  https://github.com/jeroennijhof/pam_tacplus\n"
  },
  {
    "path": "package/libpam-tacplus/libpam-tacplus.hash",
    "content": "# Locally calculated\nsha256  73961800dc0d5e422751ad4c9f09b1863ab33e381e0bdb2a1d0343dcfc30e44e  libpam-tacplus-1.6.1.tar.gz\nsha256  b2b961f07e97c4fb78074276da304ea36b85dc299aae5efb79080cedaea3d5ac  COPYING\n"
  },
  {
    "path": "package/libpam-tacplus/libpam-tacplus.mk",
    "content": "################################################################################\n#\n# libpam-tacplus\n#\n################################################################################\n\nLIBPAM_TACPLUS_VERSION = 1.6.1\nLIBPAM_TACPLUS_SITE = $(call github,jeroennijhof,pam_tacplus,v$(LIBPAM_TACPLUS_VERSION))\nLIBPAM_TACPLUS_LICENSE = GPL-2.0+\nLIBPAM_TACPLUS_LICENSE_FILES = COPYING\nLIBPAM_TACPLUS_CPE_ID_VENDOR = pam_tacplus_project\nLIBPAM_TACPLUS_CPE_ID_PRODUCT = pam_tacplus\nLIBPAM_TACPLUS_DEPENDENCIES = \\\n\tlinux-pam \\\n\t$(if $(BR2_PACKAGE_OPENSSL),openssl)\n# Fetching from github, we need to generate the configure script\n# 0001-Add-an-option-to-disable-Werror.patch\nLIBPAM_TACPLUS_AUTORECONF = YES\nLIBPAM_TACPLUS_INSTALL_STAGING = YES\nLIBPAM_TACPLUS_CONF_ENV = \\\n\tax_cv_check_cflags___fstack_protector_all=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no)\nLIBPAM_TACPLUS_CONF_OPTS = --disable-werror\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libpcap/Config.in",
    "content": "config BR2_PACKAGE_LIBPCAP\n\tbool \"libpcap\"\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_HEADERS if BR2_PACKAGE_BLUEZ5_UTILS\n\thelp\n\t  A system-independent library for user-level network packet\n\t  capture.\n\n\t  http://www.tcpdump.org/\n"
  },
  {
    "path": "package/libpcap/libpcap.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://www.tcpdump.org/release/libpcap-1.10.1.tar.gz.sig\nsha256  ed285f4accaf05344f90975757b3dbfe772ba41d1c401c2648b7fa45b711bdd4  libpcap-1.10.1.tar.gz\n\n# Hash for license file:\nsha256  8a54594d257e14a5260ac770f1633516cb51e3fc28c40136ce2697014eda7afd  LICENSE\n"
  },
  {
    "path": "package/libpcap/libpcap.mk",
    "content": "################################################################################\n#\n# libpcap\n#\n################################################################################\n\nLIBPCAP_VERSION = 1.10.1\nLIBPCAP_SITE = https://www.tcpdump.org/release\nLIBPCAP_LICENSE = BSD-3-Clause\nLIBPCAP_LICENSE_FILES = LICENSE\nLIBPCAP_CPE_ID_VENDOR = tcpdump\nLIBPCAP_INSTALL_STAGING = YES\nLIBPCAP_DEPENDENCIES = host-flex host-bison host-pkgconf\n\n# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test\n# provided by autoconf relies on wchar_t.\nLIBPCAP_CONF_ENV = \\\n\tac_cv_header_linux_wireless_h=yes \\\n\tac_cv_prog_cc_c99=-std=gnu99 \\\n\tCFLAGS=\"$(LIBPCAP_CFLAGS)\"\nLIBPCAP_CFLAGS = $(TARGET_CFLAGS)\nLIBPCAP_CONF_OPTS = --disable-yydebug --with-pcap=linux --without-dag \\\n\t--without-dpdk\n# Disable dbus to break recursive dependencies\nLIBPCAP_CONF_OPTS += --disable-dbus\nLIBPCAP_CONFIG_SCRIPTS = pcap-config\n\n# Omit -rpath from pcap-config output\ndefine LIBPCAP_CONFIG_REMOVE_RPATH\n\t$(SED) 's/^V_RPATH_OPT=.*/V_RPATH_OPT=\"\"/g' $(@D)/pcap-config\nendef\nLIBPCAP_POST_BUILD_HOOKS = LIBPCAP_CONFIG_REMOVE_RPATH\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_HEADERS),y)\nLIBPCAP_DEPENDENCIES += bluez5_utils-headers\nelse\nLIBPCAP_CONF_OPTS += --disable-bluetooth\nendif\n\nifeq ($(BR2_PACKAGE_LIBNL),y)\nLIBPCAP_DEPENDENCIES += libnl\nLIBPCAP_CONF_OPTS += --with-libnl\nelse\nLIBPCAP_CONF_OPTS += --without-libnl\nendif\n\n# microblaze/sparc/sparc64 need -fPIC instead of -fpic\nifeq ($(BR2_microblaze)$(BR2_sparc)$(BR2_sparc64),y)\nLIBPCAP_CFLAGS += -fPIC\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libpciaccess/0001-pciaccess.pc.in-add-Libs.Private.patch",
    "content": "From e1f9fc0a11559c1200005c4bfe34cd217ec117b4 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 25 Oct 2019 19:03:32 +0200\nSubject: [PATCH] pciaccess.pc.in: add Libs.Private\n\nAdd Libs.Private in pciaccess.pc.in so applications that wants to link\nstatically with pciaccess will know that they have to link with its\ndependencies such as -lz\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.freedesktop.org/xorg/lib/libpciaccess/merge_requests/10]\n---\n pciaccess.pc.in | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/pciaccess.pc.in b/pciaccess.pc.in\nindex 706c5f7..c2da3d9 100644\n--- a/pciaccess.pc.in\n+++ b/pciaccess.pc.in\n@@ -8,3 +8,4 @@ Description: Library providing generic access to the PCI bus and devices.\n Version: @PACKAGE_VERSION@\n Cflags: -I${includedir}\n Libs: -L${libdir} -lpciaccess\n+Libs.Private: @PCIACCESS_LIBS@\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/libpciaccess/Config.in",
    "content": "config BR2_PACKAGE_LIBPCIACCESS\n\tbool \"libpciaccess\"\n\thelp\n\t  X.Org libpciaccess\n\n\t  Generic PCI access library\n\n\t  https://gitlab.freedesktop.org/xorg/lib/libpciaccess\n"
  },
  {
    "path": "package/libpciaccess/libpciaccess.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-July/003014.html\nmd5 b34e2cbdd6aa8f9cc3fa613fd401a6d6  libpciaccess-0.16.tar.bz2\nsha1 ffaa13f2df5f822da1089b55223b217c142ef919  libpciaccess-0.16.tar.bz2\nsha256 214c9d0d884fdd7375ec8da8dcb91a8d3169f263294c9a90c575bf1938b9f489  libpciaccess-0.16.tar.bz2\nsha512 2f250048a270dfc0823d4bdd613aa272c58a80eaafd922850f56c4b6f7a45a263ed4cf521b52b49f04484ea44ebefb7407d079aa058318a5751ffb181e38fed1  libpciaccess-0.16.tar.bz2\n# Hash for license file:\nsha256 47012fd746980d1712ac4f3841ab6164bda1d2b84880760e45dbe1e1dc07f608  COPYING\n"
  },
  {
    "path": "package/libpciaccess/libpciaccess.mk",
    "content": "################################################################################\n#\n# libpciaccess\n#\n################################################################################\n\nLIBPCIACCESS_VERSION = 0.16\nLIBPCIACCESS_SOURCE = libpciaccess-$(LIBPCIACCESS_VERSION).tar.bz2\nLIBPCIACCESS_SITE = http://xorg.freedesktop.org/releases/individual/lib\nLIBPCIACCESS_LICENSE = MIT\nLIBPCIACCESS_LICENSE_FILES = COPYING\nLIBPCIACCESS_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLIBPCIACCESS_CONF_OPTS += --with-zlib\nLIBPCIACCESS_DEPENDENCIES += zlib\nelse\nLIBPCIACCESS_CONF_OPTS += --without-zlib\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libpfm4/Config.in",
    "content": "config BR2_PACKAGE_LIBPFM4\n\tbool \"libpfm4\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\thelp\n\t  A helper library to help encode Performance Events to use with\n\t  Operating system kernels performance monitoring interfaces.\n\n\t  http://perfmon2.sourceforge.net/\n\ncomment \"libpfm4 needs a toolchain w/ NPTL\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/libpfm4/libpfm4.hash",
    "content": "# From http://sourceforge.net/projects/perfmon2/files/libpfm4/:\nsha1  112bced9a67d565ff0ce6c2bb90452516d1183e5  libpfm-4.11.0.tar.gz\nmd5  4811c1d99b95752b4ba53b89a9389ec3  libpfm-4.11.0.tar.gz\n# Locally calculated\nsha256  5da5f8872bde14b3634c9688d980f68bda28b510268723cc12973eedbab9fecc  libpfm-4.11.0.tar.gz\nsha256  beef323d68fc5db9c67b20e8e9de7ccde371d20cdbcdd686804055b18b926d90  COPYING\n"
  },
  {
    "path": "package/libpfm4/libpfm4.mk",
    "content": "################################################################################\n#\n# libpfm4\n#\n################################################################################\n\nLIBPFM4_VERSION = 4.11.0\nLIBPFM4_SOURCE = libpfm-$(LIBPFM4_VERSION).tar.gz\nLIBPFM4_SITE = http://downloads.sourceforge.net/project/perfmon2/libpfm4\nLIBPFM4_LICENSE = libpfm4 license\nLIBPFM4_LICENSE_FILES = COPYING\nLIBPFM4_INSTALL_STAGING = YES\n\nLIBPFM4_FLAGS = SYS=Linux ARCH=$(BR2_ARCH) \\\n\tCC=\"$(TARGET_CC)\" LDCONFIG=true \\\n\tCONFIG_PFMLIB_SHARED=$(if $(BR2_STATIC_LIBS),n,y) \\\n\tDBG= \\\n\tEXAMPLE_DIRS=\n\ndefine LIBPFM4_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBPFM4_FLAGS)\nendef\n\ndefine LIBPFM4_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBPFM4_FLAGS) PREFIX=$(STAGING_DIR)/usr install\nendef\n\ndefine LIBPFM4_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBPFM4_FLAGS) PREFIX=$(TARGET_DIR)/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libphidget/Config.in",
    "content": "config BR2_PACKAGE_LIBPHIDGET\n\tbool \"libphidget\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  The libphidget library provides an API for controlling\n\t  Phidgets USB devices. The library translates API function\n\t  calls to libusb function calls to control attached Phidgets\n\t  devices that provide GPIO's, DAC's, accelerometers, servo\n\t  motors, and other capabilities either singly or on combo\n\t  devices.\n\n\t  To use libphidget for controlling locally attached devices you\n\t  need to set up the userspace USB device tree /dev/bus/usb. See\n\t  file udev/99-phidgets.rules.\n\n\t  The libphidget library also contains an API for sending\n\t  commands to a local or remote phidgetwebservice using HTTP.\n\t  The phidgetwebservice then translates HTTP requests to\n\t  libphidget API function calls to control locally attached\n\t  Phidgets devices.\n\n\t  http://phidgets.com/\n\ncomment \"libphidget needs a toolchain w/ threads, dynamic library, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/libphidget/libphidget.hash",
    "content": "# locally computed\nsha256  0e789912700228808519cf5c41e19f9b761da635c6bb676b147897936b23851f  libphidget_2.1.9.20190409.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/libphidget/libphidget.mk",
    "content": "################################################################################\n#\n# libphidget\n#\n################################################################################\n\nLIBPHIDGET_VERSION = 2.1.9.20190409\nLIBPHIDGET_SOURCE = libphidget_$(LIBPHIDGET_VERSION).tar.gz\nLIBPHIDGET_SITE = https://www.phidgets.com/downloads/phidget21/libraries/linux/libphidget\nLIBPHIDGET_DEPENDENCIES = libusb\nLIBPHIDGET_CONF_OPTS = --disable-ldconfig\nLIBPHIDGET_INSTALL_STAGING = YES\nLIBPHIDGET_LICENSE = LGPL-3.0\nLIBPHIDGET_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libpjsip/Config.in",
    "content": "config BR2_PACKAGE_LIBPJSIP\n\tbool \"libpjsip\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBSRTP\n\thelp\n\t  PJSIP is a free and open source multimedia communication\n\t  library written in C language implementing standard based\n\t  protocols such as: SIP, SDP, RTP, STUN, TURN, and ICE.\n\n\t  http://www.pjsip.org\n\ncomment \"libpjsip needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libpjsip/libpjsip.hash",
    "content": "# Locally computed\nsha256\t936a4c5b98601b52325463a397ddf11ab4106c6a7b04f8dc7cdd377efbb597de\tpjproject-2.10.tar.gz\nsha256\t8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\tCOPYING\n"
  },
  {
    "path": "package/libpjsip/libpjsip.mk",
    "content": "################################################################################\n#\n# libpjsip\n#\n################################################################################\n\nLIBPJSIP_VERSION = 2.10\nLIBPJSIP_SOURCE = pjproject-$(LIBPJSIP_VERSION).tar.gz\nLIBPJSIP_SITE = $(call github,pjsip,pjproject,$(LIBPJSIP_VERSION))\n# https://github.com/pjsip/pjproject/archive/2.10.tar.gz\n\nLIBPJSIP_DEPENDENCIES = libsrtp\nLIBPJSIP_LICENSE = GPL-2.0+\nLIBPJSIP_LICENSE_FILES = COPYING\nLIBPJSIP_CPE_ID_VENDOR = pjsip\nLIBPJSIP_CPE_ID_PRODUCT = pjsip\nLIBPJSIP_INSTALL_STAGING = YES\nLIBPJSIP_MAKE = $(MAKE1)\n\nLIBPJSIP_CFLAGS = $(TARGET_CFLAGS) -DPJ_HAS_IPV6=1\n\n# relocation truncated to fit: R_68K_GOT16O\nifeq ($(BR2_m68k_cf),y)\nLIBPJSIP_CFLAGS += -mxgot\nendif\n\nLIBPJSIP_CONF_ENV = \\\n\tLD=\"$(TARGET_CC)\" \\\n\tCFLAGS=\"$(LIBPJSIP_CFLAGS)\"\n\nLIBPJSIP_CONF_OPTS = \\\n\t--disable-resample \\\n\t--disable-g7221-codec \\\n\t--disable-ilbc-codec \\\n\t--disable-libwebrtc \\\n\t--disable-ext-sound \\\n\t--disable-g711-codec \\\n\t--disable-l16-codec \\\n\t--disable-g722-codec \\\n\t--disable-ipp \\\n\t--disable-silk \\\n\t--with-external-srtp\n\n# Note: aconfigure.ac is broken: --enable-epoll or --disable-epoll will\n# both enable it. But that's OK, epoll is better than the alternative,\n# so we want to use it.\nLIBPJSIP_CONF_OPTS += --enable-epoll\n\nifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER),y)\nLIBPJSIP_DEPENDENCIES += alsa-lib\nLIBPJSIP_CONF_OPTS += --enable-sound\nelse\nLIBPJSIP_CONF_OPTS += --disable-sound\nendif\n\nifeq ($(BR2_PACKAGE_BCG729),y)\nLIBPJSIP_DEPENDENCIES += bcg729\nLIBPJSIP_CONF_OPTS += --with-bcg729=$(STAGING_DIR)/usr\nelse\nLIBPJSIP_CONF_OPTS += --disable-bcg729\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG),y)\nLIBPJSIP_DEPENDENCIES += ffmpeg\nLIBPJSIP_CONF_OPTS += --with-ffmpeg=$(STAGING_DIR)/usr\nelse\nLIBPJSIP_CONF_OPTS += --disable-ffmpeg\nendif\n\nifeq ($(BR2_PACKAGE_LIBGSM),y)\nLIBPJSIP_CONF_OPTS += \\\n\t--enable-gsm-codec \\\n\t--with-external-gsm\nLIBPJSIP_DEPENDENCIES += libgsm\nelse\nLIBPJSIP_CONF_OPTS += \\\n\t--disable-gsm-codec\nendif\n\nifeq ($(BR2_PACKAGE_LIBOPENH264),y)\nLIBPJSIP_DEPENDENCIES += libopenh264\nLIBPJSIP_CONF_OPTS += --with-openh264=$(STAGING_DIR)/usr\nelse\nLIBPJSIP_CONF_OPTS += --disable-openh264\nendif\n\nifeq ($(BR2_PACKAGE_LIBOPENSSL),y)\nLIBPJSIP_DEPENDENCIES += libopenssl\nLIBPJSIP_CONF_OPTS += --with-ssl=$(STAGING_DIR)/usr\nelse ifeq ($(BR2_PACKAGE_GNUTLS),y)\nLIBPJSIP_DEPENDENCIES += gnutls\nLIBPJSIP_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr\nelse\nLIBPJSIP_CONF_OPTS += --disable-ssl\nendif\n\nifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y)\nLIBPJSIP_DEPENDENCIES += libsamplerate\nLIBPJSIP_CONF_OPTS += --enable-libsamplerate\nelse\nLIBPJSIP_CONF_OPTS += --disable-libsamplerate\nendif\n\nifeq ($(BR2_PACKAGE_LIBV4L),y)\n# --enable-v4l2 is broken (check for libv4l2 will be omitted)\nLIBPJSIP_DEPENDENCIES += libv4l\nelse\nLIBPJSIP_CONF_OPTS += --disable-v4l2\nendif\n\nifeq ($(BR2_PACKAGE_LIBYUV),y)\nLIBPJSIP_DEPENDENCIES += libyuv\nLIBPJSIP_CONF_OPTS += \\\n\t--enable-libyuv \\\n\t--with-external-yuv\nelse\nLIBPJSIP_CONF_OPTS += --disable-libyuv\nendif\n\nifeq ($(BR2_PACKAGE_OPENCORE_AMR),y)\nLIBPJSIP_DEPENDENCIES += opencore-amr\nLIBPJSIP_CONF_OPTS += --with-opencore-amr=$(STAGING_DIR)/usr\nelse\nLIBPJSIP_CONF_OPTS += --disable-opencore-amr\nendif\n\nifeq ($(BR2_PACKAGE_OPUS),y)\nLIBPJSIP_DEPENDENCIES += opus\nLIBPJSIP_CONF_OPTS += --with-opus=$(STAGING_DIR)/usr\nelse\nLIBPJSIP_CONF_OPTS += --disable-opus\nendif\n\nifeq ($(BR2_PACKAGE_PORTAUDIO),y)\nLIBPJSIP_DEPENDENCIES += portaudio\nLIBPJSIP_CONF_OPTS += --with-external-pa\nelse\nLIBPJSIP_CONF_OPTS += --without-external-pa\nendif\n\nifeq ($(BR2_PACKAGE_SDL2),y)\nLIBPJSIP_DEPENDENCIES += sdl2\nLIBPJSIP_CONF_OPTS += --with-sdl=$(STAGING_DIR)/usr\nelse\nLIBPJSIP_CONF_OPTS += --disable-sdl\nendif\n\nifeq ($(BR2_PACKAGE_SPEEX)$(BR2_PACKAGE_SPEEXDSP),yy)\nLIBPJSIP_CONF_OPTS += \\\n\t--enable-speex-aec \\\n\t--enable-speex-codec \\\n\t--with-external-speex\nLIBPJSIP_DEPENDENCIES += speex speexdsp\nelse\nLIBPJSIP_CONF_OPTS += \\\n\t--disable-speex-aec \\\n\t--disable-speex-codec\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)\nLIBPJSIP_DEPENDENCIES += util-linux\nendif\n\n# disable build of test binaries\nLIBPJSIP_MAKE_OPTS = lib\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libplatform/0001-cmake-require-c-11-as-the-minimum-standard.patch",
    "content": "From ad9fcceb6267e737316b616551b7aac3cf676481 Mon Sep 17 00:00:00 2001\nFrom: Lukas Rusak <lorusak@gmail.com>\nDate: Fri, 2 Oct 2020 15:31:36 -0700\nSubject: [PATCH] [cmake] require c++11 as the minimum standard\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/Pulse-Eight/platform/pull/46]\n---\n CMakeLists.txt | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 7144b0b..e9112f9 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -3,6 +3,10 @@ project(p8-platform)\n cmake_minimum_required(VERSION 2.8.9)\n enable_language(CXX)\n \n+set(CMAKE_CXX_STANDARD 11)\n+set(CMAKE_CXX_STANDARD_REQUIRED YES)\n+set(CMAKE_CXX_EXTENSIONS NO)\n+\n set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR})\n \n find_package(Threads REQUIRED)\n"
  },
  {
    "path": "package/libplatform/Config.in",
    "content": "config BR2_PACKAGE_LIBPLATFORM\n\tbool\n\thelp\n\t  Platform support library used by libCEC and binary add-ons for\n\t  Kodi\n\n\t  https://github.com/Pulse-Eight/platform\n"
  },
  {
    "path": "package/libplatform/libplatform.hash",
    "content": "# Locally computed\nsha256  ebee46c76b86b40b703fa913465f5004fa3166eeb6a4794c58fc8a5c25702931  libplatform-a7cd0d5780ed80a4e70480d1650749f29e8a1fb2.tar.gz\nsha256  80fc66febbb2393c9d518e3eefa4ad9aae15a9b6a84174c0e443ea79eeea5131  src/os.h\n"
  },
  {
    "path": "package/libplatform/libplatform.mk",
    "content": "################################################################################\n#\n# libplatform\n#\n################################################################################\n\nLIBPLATFORM_VERSION = a7cd0d5780ed80a4e70480d1650749f29e8a1fb2\nLIBPLATFORM_SITE = $(call github,Pulse-Eight,platform,$(LIBPLATFORM_VERSION))\nLIBPLATFORM_LICENSE = GPL-2.0+\nLIBPLATFORM_LICENSE_FILES = src/os.h\nLIBPLATFORM_INSTALL_STAGING = YES\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libplist/Config.in",
    "content": "config BR2_PACKAGE_LIBPLIST\n\tbool \"libplist\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  libplist is a client for manipulating Apple Property List\n\t  (.plist) files\n\n\t  http://www.libimobiledevice.org/\n\ncomment \"libplist needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libplist/libplist.hash",
    "content": "# Locally calculated\nsha256  4a5517e5377ec421df84c586ba85bb4e1d26f11ad203d7d450a907c0156fbd9a  libplist-2.2.0.tar.bz2\nsha256  7619c753cac95d4740220223bde48a032606fcaccde5e546f9bc444c81ab356d  COPYING\n"
  },
  {
    "path": "package/libplist/libplist.mk",
    "content": "################################################################################\n#\n# libplist\n#\n################################################################################\n\nLIBPLIST_VERSION = 2.2.0\nLIBPLIST_SOURCE = libplist-$(LIBPLIST_VERSION).tar.bz2\nLIBPLIST_SITE = https://github.com/libimobiledevice/libplist/releases/download/$(LIBPLIST_VERSION)\nLIBPLIST_INSTALL_STAGING = YES\nLIBPLIST_LICENSE = LGPL-2.1+\nLIBPLIST_LICENSE_FILES = COPYING\nLIBPLIST_CPE_ID_VENDOR = libimobiledevice\n\n# Disable building Python bindings, because it requires host-cython, which\n# is not packaged in Buildroot at all.\nLIBPLIST_CONF_OPTS = --without-cython\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libpng/0001-Disable-pngfix-and-png-fix-itxt.patch",
    "content": "From 60c3ee917c8e7a4760b1ef7c3dc2b44a615150d3 Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Thu, 26 May 2016 16:26:18 -0300\nSubject: [PATCH] Disable pngfix and png-fix-itxt\n\nDisable the new pngfix and png-fix-itxt tools: they take up space, fail\nto build on some oddball toolchain configurations and aren't\nexpected/needed in a non-interactive embedded system.\n\n[Julien: update for 1.6.25]\nSigned-off-by: Julien Boibessot <julien.boibessot@armadeus.com>\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n---\n Makefile.am | 2 +-\n Makefile.in | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 7212951..3430dca 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -18,7 +18,7 @@ check_PROGRAMS += timepng\n endif\n \n # Utilities - installed\n-bin_PROGRAMS= pngfix png-fix-itxt\n+bin_PROGRAMS=\n \n # This ensures that pnglibconf.h gets built at the start of 'make all' or\n # 'make check', but it does not add dependencies to the individual programs,\ndiff --git a/Makefile.in b/Makefile.in\nindex a66f6aa..4e67782 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -104,7 +104,7 @@ check_PROGRAMS = pngtest$(EXEEXT) pngunknown$(EXEEXT) \\\n \tpngstest$(EXEEXT) pngvalid$(EXEEXT) pngimage$(EXEEXT) \\\n \tpngcp$(EXEEXT) $(am__EXEEXT_1)\n @HAVE_CLOCK_GETTIME_TRUE@am__append_1 = timepng\n-bin_PROGRAMS = pngfix$(EXEEXT) png-fix-itxt$(EXEEXT)\n+bin_PROGRAMS =\n @PNG_ARM_NEON_TRUE@am__append_2 = arm/arm_init.c\\\n @PNG_ARM_NEON_TRUE@\tarm/filter_neon.S arm/filter_neon_intrinsics.c\n \n-- \n2.7.3\n\n"
  },
  {
    "path": "package/libpng/Config.in",
    "content": "config BR2_PACKAGE_LIBPNG\n\tbool \"libpng\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Library for handling PNG (Portable Network Graphics)\n\t  images.\n\n\t  http://www.libpng.org/\n"
  },
  {
    "path": "package/libpng/libpng.hash",
    "content": "# From https://sourceforge.net/projects/libpng/files/libpng16/1.6.37/\nmd5 015e8e15db1eecde5f2eb9eb5b6e59e9  libpng-1.6.37.tar.xz\nsha1 3ab93fabbf4c27e1c4724371df408d9a1bd3f656  libpng-1.6.37.tar.xz\n# Locally computed:\nsha256 505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca  libpng-1.6.37.tar.xz\nsha256 bf5e22b9dce8464064ae17a48ea1133c3369ac9e1d80ef9e320e5219aa14ea9b  LICENSE\n"
  },
  {
    "path": "package/libpng/libpng.mk",
    "content": "################################################################################\n#\n# libpng\n#\n################################################################################\n\nLIBPNG_VERSION = 1.6.37\nLIBPNG_SERIES = 16\nLIBPNG_SOURCE = libpng-$(LIBPNG_VERSION).tar.xz\nLIBPNG_SITE = http://downloads.sourceforge.net/project/libpng/libpng$(LIBPNG_SERIES)/$(LIBPNG_VERSION)\nLIBPNG_LICENSE = Libpng-2.0\nLIBPNG_LICENSE_FILES = LICENSE\nLIBPNG_CPE_ID_VENDOR = libpng\nLIBPNG_INSTALL_STAGING = YES\nLIBPNG_DEPENDENCIES = host-pkgconf zlib\nHOST_LIBPNG_DEPENDENCIES = host-pkgconf host-zlib\nLIBPNG_CONFIG_SCRIPTS = libpng$(LIBPNG_SERIES)-config libpng-config\n\nifeq ($(BR2_ARM_CPU_HAS_NEON)$(BR2_aarch64),y)\nLIBPNG_CONF_OPTS += --enable-arm-neon\nelse\nLIBPNG_CONF_OPTS += --disable-arm-neon\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE2),y)\nLIBPNG_CONF_OPTS += --enable-intel-sse\nelse\nLIBPNG_CONF_OPTS += --disable-intel-sse\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libpqxx/Config.in",
    "content": "config BR2_PACKAGE_LIBPQXX\n\tbool \"libpqxx\"\n\tdepends on BR2_PACKAGE_POSTGRESQL\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  libpqxx is the official C++ client API for PostgreSQL, the\n\t  enterprise-strength open-source relational database.\n\n\t  http://pqxx.org/development/libpqxx/\n\ncomment \"libpqxx needs toolchain w/ C++, gcc >= 4.9, threads\"\n\tdepends on BR2_PACKAGE_POSTGRESQL\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libpqxx/libpqxx.hash",
    "content": "# Locally computed:\nsha256\t86921fdb0fe54495a79d5af2c96f2c771098c31e9b352d0834230fd2799ad362\tlibpqxx-6.4.5.tar.gz\nsha256\t36c48c1ca1b0a68639d919196b5d92c971858ad8e24da24385ba1c65cc5eac38\tCOPYING\n"
  },
  {
    "path": "package/libpqxx/libpqxx.mk",
    "content": "################################################################################\n#\n# libpqxx\n#\n################################################################################\n\nLIBPQXX_VERSION = 6.4.5\nLIBPQXX_SITE = $(call github,jtv,libpqxx,$(LIBPQXX_VERSION))\nLIBPQXX_INSTALL_STAGING = YES\nLIBPQXX_DEPENDENCIES = postgresql\nLIBPQXX_LICENSE = BSD-3-Clause\nLIBPQXX_LICENSE_FILES = COPYING\n\nLIBPQXX_CONF_ENV += ac_cv_path_PG_CONFIG=$(STAGING_DIR)/usr/bin/pg_config\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libpri/Config.in",
    "content": "config BR2_PACKAGE_LIBPRI\n\tbool \"libpri\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_DAHDI_LINUX\n\tselect BR2_PACKAGE_DAHDI_TOOLS\n\thelp\n\t  libpri is an open source library that encapsulates the\n\t  protocols used to communicate over ISDN Primary Rate\n\t  Interfaces (T1, E1, J1).\n\n\t  http://www.asterisk.org/downloads/libpri\n\ncomment \"libpri needs a kernel to be built\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_LINUX_KERNEL\n\ncomment \"libpri needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libpri/libpri.hash",
    "content": "# sha1 and sha256 from http://downloads.asterisk.org/pub/telephony/libpri/releases/\nsha1    63536f3300fb007dfd5fe8064406992ca938bd9a                          libpri-1.5.0.tar.gz\nsha256  ee224bc4aa65c54546bd09675c3f0b71817ce9e277332bce86989d8dcd556a24  libpri-1.5.0.tar.gz\n\n# License files, locally calculated\nsha256  fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7  LICENSE\nsha256  53b8b3aea4faec23fd9dbd4936044aca80c9b00343e6e58ee3303cec19512b33  README\n"
  },
  {
    "path": "package/libpri/libpri.mk",
    "content": "################################################################################\n#\n# libpri\n#\n################################################################################\n\nLIBPRI_VERSION = 1.5.0\nLIBPRI_SITE = http://downloads.asterisk.org/pub/telephony/libpri/releases\n\nLIBPRI_LICENSE = GPL-2.0 with OpenH323 exception\nLIBPRI_LICENSE_FILES = LICENSE README\n\nLIBPRI_DEPENDENCIES = dahdi-linux dahdi-tools\nLIBPRI_INSTALL_STAGING = YES\n\n# The Makefile default rule will always try to generate both libraries.\n# So we need to explicitly build only what we can.\nifneq ($(BR2_SHARED_LIBS),y)\nLIBPRI_LIBS = libpri.a\ndefine LIBPRI_INSTALL_A\n\t$(INSTALL) -D -m 0644 $(@D)/libpri.a $(1)/usr/lib/libpri.a\nendef\nendif\n\nifneq ($(BR2_STATIC_LIBS),y)\nLIBPRI_LIBS += libpri.so.1.4\ndefine LIBPRI_INSTALL_SO\n\t$(INSTALL) -D -m 0644 $(@D)/libpri.so.1.4 $(1)/usr/lib/libpri.so.1.4\n\tln -sf libpri.so.1.4 $(1)/usr/lib/libpri.so\nendef\nendif\n\nLIBPRI_UTILS = pridump pritest rosetest testprilib\n\ndefine LIBPRI_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -fPIC\" -C $(@D) \\\n\t\t$(LIBPRI_LIBS) $(LIBPRI_UTILS)\nendef\n\ndefine LIBPRI_INSTALL_STAGING_CMDS\n\t$(call LIBPRI_INSTALL_A,$(STAGING_DIR))\n\t$(call LIBPRI_INSTALL_SO,$(STAGING_DIR))\n\t$(INSTALL) -D -m 0644 $(@D)/libpri.h $(STAGING_DIR)/usr/include/libpri.h\nendef\n\ndefine LIBPRI_INSTALL_TARGET_CMDS\n\t$(foreach u,$(LIBPRI_UTILS),\\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$(u) $(TARGET_DIR)/usr/sbin/$(u)$(sep))\n\t$(call LIBPRI_INSTALL_SO,$(TARGET_DIR))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libpsl/Config.in",
    "content": "config BR2_PACKAGE_LIBPSL\n\tbool \"libpsl\"\n\tdepends on BR2_USE_WCHAR # libunistring, icu\n\tselect BR2_PACKAGE_LIBIDN2 if !BR2_PACKAGE_ICU && !BR2_PACKAGE_LIBIDN\n\tselect BR2_PACKAGE_LIBUNISTRING if !BR2_PACKAGE_ICU\n\thelp\n\t  C library to handle the Public Suffix List of TLDs.\n\n\t  https://github.com/rockdaboot/libpsl\n\ncomment \"libpsl needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/libpsl/libpsl.hash",
    "content": "# Locally generated\nsha256  ac6ce1e1fbd4d0254c4ddb9d37f1fa99dec83619c1253328155206b896210d4c  libpsl-0.21.1.tar.gz\n\n# Hashes for license files:\nsha256  7903413e7aa0bbcb77aa19150a3f1034edc0a760cff174f9a53efe4de6f056a4  COPYING\nsha256  1d7f52747a9169751cdf2641a8299c0098e9ecdf9429296ffd55bdb14c9ed5b3  src/LICENSE.chromium\n"
  },
  {
    "path": "package/libpsl/libpsl.mk",
    "content": "################################################################################\n#\n# libpsl\n#\n################################################################################\n\nLIBPSL_VERSION = 0.21.1\nLIBPSL_SITE = https://github.com/rockdaboot/libpsl/releases/download/$(LIBPSL_VERSION)\nLIBPSL_LICENSE = MIT, BSD-3-Clause\nLIBPSL_LICENSE_FILES = COPYING src/LICENSE.chromium\nLIBPSL_DEPENDENCIES = host-pkgconf\nLIBPSL_INSTALL_STAGING = YES\n\n# The order of checks is the same as done by libpsl when configured.\nifeq ($(BR2_PACKAGE_LIBIDN2)$(BR2_PACKAGE_LIBUNISTRING),yy)\nLIBPSL_CONF_OPTS += -Druntime=libidn2 -Dbuiltin=libidn2\nLIBPSL_DEPENDENCIES += libidn2 libunistring\nelse ifeq ($(BR2_PACKAGE_ICU),y)\nLIBPSL_CONF_OPTS += -Druntime=libicu -Dbuiltin=libicu\nLIBPSL_DEPENDENCIES += icu\nelse\nLIBPSL_CONF_OPTS += -Druntime=libidn -Dbuiltin=libidn\nLIBPSL_DEPENDENCIES += libidn libunistring\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libpthread-stubs/Config.in",
    "content": "config BR2_PACKAGE_LIBPTHREAD_STUBS\n\tbool \"libpthread-stubs\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  This library provides weak aliases for pthread functions not\n\t  provided in libc or otherwise available by default.\n\n\t  http://xcb.freedesktop.org/\n\ncomment \"libpthread-stubs needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libpthread-stubs/libpthread-stubs.hash",
    "content": "# Locally computed\nsha256 e4d05911a3165d3b18321cc067fdd2f023f06436e391c6a28dff618a78d2e733  libpthread-stubs-0.4.tar.bz2\nsha256 78c20706e799f2b8f445e71d3d2ade6ba23b3388fd6cbeed7d71796623febde8  COPYING\n"
  },
  {
    "path": "package/libpthread-stubs/libpthread-stubs.mk",
    "content": "################################################################################\n#\n# libpthread-stubs\n#\n################################################################################\n\nLIBPTHREAD_STUBS_VERSION = 0.4\nLIBPTHREAD_STUBS_SOURCE = libpthread-stubs-$(LIBPTHREAD_STUBS_VERSION).tar.bz2\nLIBPTHREAD_STUBS_SITE = http://xcb.freedesktop.org/dist\nLIBPTHREAD_STUBS_LICENSE = MIT\nLIBPTHREAD_STUBS_LICENSE_FILES = COPYING\n\nLIBPTHREAD_STUBS_INSTALL_STAGING = YES\n\nifeq ($(BR2_STATIC_LIBS),y)\nLIBPTHREAD_STUBS_CONF_ENV += LDFLAGS=\"$(TARGET_LDFLAGS) -pthread\"\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libpthsem/0001-fix-build-on-linux-3.x-host.patch",
    "content": "From 2d0450bfa3fb7003098da1a7fe24c3ae140912dc Mon Sep 17 00:00:00 2001\nFrom: Gregory Hermant <gregory.hermant@calao-systems.com>\nDate: Mon, 22 Oct 2012 15:11:53 +0200\nSubject: [PATCH] pthsem build on Linux 3.x host\n\n\nSigned-off-by: Michael Markstaller <mm@elabnet.de>\nSigned-off-by: Gregory Hermant <gregory.hermant@calao-systems.com>\n---\n acinclude.m4 |    2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/acinclude.m4 b/acinclude.m4\nindex 03b42de..fea9bc8 100644\n--- a/acinclude.m4\n+++ b/acinclude.m4\n@@ -892,6 +892,8 @@ case $PLATFORM in\n         case \"x`uname -r`\" in\n changequote(, )dnl\n             x2.[23456789]* ) ;;\n+changequote(, )dnl\n+            x3.* ) ;;\n changequote([, ])\n             * ) braindead=yes ;;\n         esac\n-- \n1.7.9.5\n\n"
  },
  {
    "path": "package/libpthsem/Config.in",
    "content": "config BR2_PACKAGE_LIBPTHSEM\n\tbool \"libpthsem\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  GNU pth is a user mode multi threading library. pthsem is an\n\t  extend version, with support for semaphores added.\n\n\t  http://www.auto.tuwien.ac.at/~mkoegler/pth/\n\nif BR2_PACKAGE_LIBPTHSEM\n\nconfig BR2_PACKAGE_LIBPTHSEM_COMPAT\n\tbool \"libpth compatibility\"\n\thelp\n\t  This option enables the compatibility with the original\n\t  libpth library.\n\nendif\n"
  },
  {
    "path": "package/libpthsem/libpthsem.hash",
    "content": "# Locally calculated\nsha256  4024cafdd5d4bce2b1778a6be5491222c3f6e7ef1e43971264c451c0012c5c01  pthsem_2.0.8.tar.gz\nsha256  f1b95d3728077d1a3efe7fc17928b1953b1224f6caf9c528e30e570158b7520d  COPYING\n"
  },
  {
    "path": "package/libpthsem/libpthsem.mk",
    "content": "################################################################################\n#\n# libpthsem\n#\n################################################################################\n\nLIBPTHSEM_VERSION = 2.0.8\nLIBPTHSEM_SOURCE = pthsem_$(LIBPTHSEM_VERSION).tar.gz\nLIBPTHSEM_SITE = http://www.auto.tuwien.ac.at/~mkoegler/pth\nLIBPTHSEM_LICENSE = LGPL-2.1+\nLIBPTHSEM_LICENSE_FILES = COPYING\nLIBPTHSEM_AUTORECONF = YES\nLIBPTHSEM_INSTALL_STAGING = YES\nLIBPTHSEM_CONFIG_SCRIPTS = pthsem-config\n\n# Force the setjmp/longjmp detection, because the test being done in\n# the AC_CHECK_SJLJ macro is not cross-compilation safe: it checks the\n# running kernel with 'uname -r', and checks the C library version by\n# looking at /usr/include/features.h. In terms of kernel version, it\n# assumes any version later than 2.2.x is fine, except that it doesn't\n# recognize 4.x as a valid kernel version, recognizing such systems as\n# \"braindead\" and therefore falling back to the 'sjljlx' value for\n# ac_cv_check_sjlj. In terms of C library version, it wants\n# __GLIBC_MINOR to be at least 1. Since both conditions are true for\n# all Buildroot systems, we can simply force the setjmp/longjmp\n# detection to ssjlj.\nLIBPTHSEM_CONF_ENV += \\\n\tac_cv_check_sjlj=ssjlj\n\nifeq ($(BR2_PACKAGE_LIBPTHSEM_COMPAT),y)\nLIBPTHSEM_CONF_OPTS += --enable-compat\nLIBPTHSEM_CONFIG_SCRIPTS += pth-config\nelse\nLIBPTHSEM_CONF_OPTS += --disable-compat\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libpwquality/Config.in",
    "content": "config BR2_PACKAGE_LIBPWQUALITY\n\tbool \"libpwquality\"\n\tselect BR2_PACKAGE_CRACKLIB\n\thelp\n\t  This is a library for password quality checks and generation\n\t  of random passwords that pass the checks.  This library uses\n\t  the cracklib and cracklib dictionaries to perform some of\n\t  the checks.\n\n\t  https://github.com/libpwquality/libpwquality\n\nif BR2_PACKAGE_LIBPWQUALITY\n\nconfig BR2_PACKAGE_LIBPWQUALITY_TOOLS\n\tbool \"install tools\"\n\thelp\n\t  Install libpwquality command line tools generating/checking\n\t  passwords.\n\nendif\n"
  },
  {
    "path": "package/libpwquality/libpwquality.hash",
    "content": "# Locally calculated\nsha256  d43baf23dc6887fe8f8e9b75cabaabc5f4bbbaa0f9eff44278d276141752a545  libpwquality-1.4.4.tar.bz2\nsha256  aa44d09f651bf99b56253187c7778a240740c767d28453ab7fdc9804c842baee  COPYING\n"
  },
  {
    "path": "package/libpwquality/libpwquality.mk",
    "content": "################################################################################\n#\n# libpwquality\n#\n################################################################################\n\nLIBPWQUALITY_VERSION = 1.4.4\nLIBPWQUALITY_SOURCE = libpwquality-$(LIBPWQUALITY_VERSION).tar.bz2\nLIBPWQUALITY_SITE = https://github.com/libpwquality/libpwquality/releases/download/libpwquality-$(LIBPWQUALITY_VERSION)\nLIBPWQUALITY_LICENSE = BSD-3-Clause or GPL-2.0+\nLIBPWQUALITY_INSTALL_STAGING = YES\nLIBPWQUALITY_DEPENDENCIES = cracklib\nLIBPWQUALITY_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\nLIBPWQUALITY_CONF_OPTS += --enable-python-bindings\nLIBPWQUALITY_DEPENDENCIES += python\nLIBPWQUALITY_MAKE_ENV += $(PKG_PYTHON_DISTUTILS_ENV)\nelse\nLIBPWQUALITY_CONF_OPTS += --disable-python-bindings\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nLIBPWQUALITY_CONF_OPTS += --enable-pam\nLIBPWQUALITY_DEPENDENCIES += linux-pam\nelse\nLIBPWQUALITY_CONF_OPTS += --disable-pam\nendif\n\n# Static link with cracklib requires -lz if zlib is enabled\nifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_ZLIB),yy)\nLIBPWQUALITY_CONF_ENV += LIBS=\"-lz\"\nendif\n\nifeq ($(BR2_PACKAGE_LIBPWQUALITY_TOOLS),)\ndefine LIBPWQUALITY_REMOVE_TOOLS\n\trm -f $(TARGET_DIR)/usr/bin/pwmake\n\trm -f $(TARGET_DIR)/usr/bin/pwscore\nendef\n\nLIBPWQUALITY_POST_INSTALL_TARGET_HOOKS += LIBPWQUALITY_REMOVE_TOOLS\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libqb/Config.in",
    "content": "config BR2_PACKAGE_LIBQB\n\tbool \"libqb\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  Library for client-server applications\n\n\t  https://github.com/ClusterLabs/libqb\n\ncomment \"libqb needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libqb/libqb.hash",
    "content": "# Locally calculated\nsha256  f72769c66479c51ac176b56837637b29d200f9dad40d23c5fdcb10f3a53ab1e4  libqb-2.0.2.tar.gz\nsha256  00a89b0d18aacd4114decf79122db87bf35bddaf2bc50e383c9c9f4c263390b2  COPYING\n"
  },
  {
    "path": "package/libqb/libqb.mk",
    "content": "################################################################################\n#\n# libqb\n#\n################################################################################\n\nLIBQB_VERSION = 2.0.2\nLIBQB_SITE = $(call github,ClusterLabs,libqb,v$(LIBQB_VERSION))\nLIBQB_LICENSE = LGPL-2.1+\nLIBQB_LICENSE_FILES = COPYING\nLIBQB_CPE_ID_VENDOR = clusterlabs\nLIBQB_INSTALL_STAGING = YES\nLIBQB_AUTORECONF = YES\nLIBQB_DEPENDENCIES = libxml2\n\n# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test\n# provided by autoconf relies on wchar_t.\nLIBQB_CONF_ENV = ac_cv_prog_cc_c99=-std=gnu99\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libqmi/Config.in",
    "content": "config BR2_PACKAGE_LIBQMI\n\tbool \"libqmi\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  libqmi is a glib-based library for talking to WWAN modems and\n\t  devices which speak the Qualcomm MSM Interface (QMI) protocol.\n\n\t  http://www.freedesktop.org/wiki/Software/libqmi/\n\ncomment \"libqmi needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libqmi/libqmi.hash",
    "content": "# Locally computed:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\nsha256  2eb7c7971b91a64ad830643b0170cff692a69bf0f093ca61d72d3f466a0272d4  libqmi-1.30.2.tar.gz\n"
  },
  {
    "path": "package/libqmi/libqmi.mk",
    "content": "################################################################################\n#\n# libqmi\n#\n################################################################################\n\nLIBQMI_VERSION = 1.30.2\nLIBQMI_SITE = https://gitlab.freedesktop.org/mobile-broadband/libqmi/-/archive/$(LIBQMI_VERSION)\nLIBQMI_LICENSE = LGPL-2.0+ (library), GPL-2.0+ (programs)\nLIBQMI_LICENSE_FILES = COPYING COPYING.LIB\nLIBQMI_CPE_ID_VENDOR = libqmi_project\nLIBQMI_INSTALL_STAGING = YES\n\nLIBQMI_DEPENDENCIES = libglib2\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBQMI_DEPENDENCIES += gobject-introspection\nLIBQMI_CONF_OPTS += -Dintrospection=true\nelse\nLIBQMI_CONF_OPTS += -Dintrospection=false\nendif\n\n# if libgudev available, request udev support for a better\n# qmi-firmware-update experience\nifeq ($(BR2_PACKAGE_LIBGUDEV),y)\nLIBQMI_DEPENDENCIES += libgudev\nLIBQMI_CONF_OPTS += -Dudev=true\nelse\nLIBQMI_CONF_OPTS += -Dudev=false\nendif\n\n# if libmbim available, request QMI-over-MBIM support\nifeq ($(BR2_PACKAGE_LIBMBIM),y)\nLIBQMI_DEPENDENCIES += libmbim\nLIBQMI_CONF_OPTS += -Dmbim_qmux=true\nelse\nLIBQMI_CONF_OPTS += -Dmbim_qmux=false\nendif\n\n# if libqrtr-glib available, enable support for QMI over QRTR\nifeq ($(BR2_PACKAGE_LIBQRTR_GLIB),y)\nLIBQMI_DEPENDENCIES += libqrtr-glib\nLIBQMI_CONF_OPTS += -Dqrtr=true\nelse\nLIBQMI_CONF_OPTS += -Dqrtr=false\nendif\n\n# if ModemManager available, enable MM runtime check in\n# qmi-firmware-update (note that we don't need to build-depend on\n# anything else)\nifeq ($(BR2_PACKAGE_MODEM_MANAGER),y)\nLIBQMI_CONF_OPTS += -Dmm_runtime_check=true\nelse\nLIBQMI_CONF_OPTS += -Dmm_runtime_check=false\nendif\n\nifeq ($(BR2_PACKAGE_BASH_COMPLETION),y)\nLIBQMI_DEPENDENCIES += bash-completion\nLIBQMI_CONF_OPTS += -Dbash_completion=true\nelse\nLIBQMI_CONF_OPTS += -Dbash_completion=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libqrencode/Config.in",
    "content": "config BR2_PACKAGE_LIBQRENCODE\n\tbool \"libqrencode\"\n\thelp\n\t  libqrencode is a C library for encoding data in a QR Code\n\t  symbol, a kind of 2D symbology that can be scanned by handy\n\t  terminals such as a mobile phone with CCD. The capacity of\n\t  QR Code is up to 7000 digits or 4000 characters, and is\n\t  highly robust.\n\n\t  http://fukuchi.org/works/qrencode/index.html\n\nif BR2_PACKAGE_LIBQRENCODE\n\nconfig BR2_PACKAGE_LIBQRENCODE_TOOLS\n\tbool \"libqrencode tools\"\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  Build command-line tools\n\nendif #BR2_PACKAGE_LIBQRENCODE\n"
  },
  {
    "path": "package/libqrencode/libqrencode.hash",
    "content": "# From http://fukuchi.org/works/qrencode/qrencode-4.1.1.tar.gz.sha\nsha512  209bb656ae3f391b03c7b3ceb03e34f7320b0105babf48b619e7a299528b8828449e0e7696f0b5db0d99170a81709d0518e34835229a748701e7df784e58a9ce  qrencode-4.1.1.tar.gz\n\n# Hash for license file:\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING\n"
  },
  {
    "path": "package/libqrencode/libqrencode.mk",
    "content": "################################################################################\n#\n# libqrencode\n#\n################################################################################\n\nLIBQRENCODE_VERSION = 4.1.1\nLIBQRENCODE_SOURCE = qrencode-$(LIBQRENCODE_VERSION).tar.gz\nLIBQRENCODE_SITE = http://fukuchi.org/works/qrencode\nLIBQRENCODE_DEPENDENCIES = host-pkgconf\nLIBQRENCODE_INSTALL_STAGING = YES\nLIBQRENCODE_LICENSE = LGPL-2.1+\nLIBQRENCODE_LICENSE_FILES = COPYING\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nLIBQRENCODE_CONF_ENV += LIBS='-pthread'\nelse\nLIBQRENCODE_CONF_OPTS += --disable-thread-safety\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nLIBQRENCODE_CONF_OPTS += --with-png\nLIBQRENCODE_DEPENDENCIES += libpng\nelse\nLIBQRENCODE_CONF_OPTS += --without-png\nendif\n\nifeq ($(BR2_PACKAGE_LIBQRENCODE_TOOLS),y)\nLIBQRENCODE_CONF_OPTS += --with-tools=yes\nelse\nLIBQRENCODE_CONF_OPTS += --with-tools=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libqrtr-glib/Config.in",
    "content": "config BR2_PACKAGE_LIBQRTR_GLIB\n\tbool \"libqrtr-glib\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 # da7653f0faab\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Qualcomm IPC Router protocol helper library.\n\t  Optional dependency for libqmi >= 1.28.0.\n\n\t  https://www.freedesktop.org/software/libqmi/libqrtr-glib/latest/\n\ncomment \"libqrtr-glib needs a toolchain w/ wchar, threads, headers >= 4.15\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15\n"
  },
  {
    "path": "package/libqrtr-glib/libqrtr-glib.hash",
    "content": "# Locally computed\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\nsha256  30d879b2ade6f8f461def3a677755db5c0238babf688d5c83c03b3e6abe35cee  libqrtr-glib-1.0.0.tar.xz\n"
  },
  {
    "path": "package/libqrtr-glib/libqrtr-glib.mk",
    "content": "################################################################################\n#\n# libqrtr-glib\n#\n################################################################################\n\nLIBQRTR_GLIB_VERSION = 1.0.0\nLIBQRTR_GLIB_SITE = http://www.freedesktop.org/software/libqmi\nLIBQRTR_GLIB_SOURCE = libqrtr-glib-$(LIBQRTR_GLIB_VERSION).tar.xz\nLIBQRTR_GLIB_LICENSE = LGPL-2.1+\nLIBQRTR_GLIB_LICENSE_FILES = COPYING.LIB\nLIBQRTR_GLIB_INSTALL_STAGING = YES\nLIBQRTR_GLIB_DEPENDENCIES = libglib2\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBQRTR_GLIB_CONF_OPTS += --enable-introspection\nLIBQRTR_GLIB_DEPENDENCIES += gobject-introspection\nelse\nLIBQRTR_GLIB_CONF_OPTS += --disable-introspection\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libraw/0001-Add-Libs.private-to-libraw.pc.patch",
    "content": "From ad911cbc3c16397cf9d326c30571a4d1edaaa03f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 2 Jun 2021 07:45:40 +0200\nSubject: [PATCH] Add Libs.private to libraw.pc\n\nAdd Libs.private to libraw.pc to avoid the following static build\nfailure when enabling libraw with jasper support in imagemagick:\n\n/home/giuliobenetti/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /home/giuliobenetti/autobuild/run/instance-1/output-1/host/bin/../arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libjasper.a(jpg_enc.c.o): in function `jpg_encode':\njpg_enc.c:(.text+0x1f4): undefined reference to `jpeg_stdio_dest'\n\n-ljpeg must be added after -ljasper because jasper depends on jpeg\n\nFixes:\n - http://autobuild.buildroot.org/results/88e43a1ea2059a684e50b0f5f2af407e8c6df2e1\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/LibRaw/LibRaw/pull/406]\n---\n configure.ac   | 2 ++\n libraw.pc.in   | 1 +\n libraw_r.pc.in | 1 +\n 3 files changed, 4 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 4ab2f313..7bf5fdfd 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -57,6 +57,7 @@ if test x$jpeg = xtrue; then\n                         AC_CHECK_HEADERS([jpeglib.h], [\n                                 CPPFLAGS=\"$CPPFLAGS -DUSE_JPEG -DUSE_JPEG8\"\n                                 LIBS=\"$LIBS -ljpeg\"\n+                                AC_SUBST([PACKAGE_LIBS_PRIVATE],\"-ljpeg $PACKAGE_LIBS_PRIVATE\")\n                         ], AC_MSG_WARN([no jpeg headers found]))\n                 ],\n                 AC_MSG_WARN([libjpeg not found])\n@@ -78,6 +79,7 @@ if test x$jasper = xtrue; then\n                         AC_CHECK_HEADERS([jasper/jasper.h], [\n                                 CPPFLAGS=\"$CPPFLAGS -DUSE_JASPER\"\n                                 LIBS=\"$LIBS -ljasper\"\n+                                AC_SUBST([PACKAGE_LIBS_PRIVATE],\"-ljasper $PACKAGE_LIBS_PRIVATE\")\n                         ], AC_MSG_WARN([no jasper headers found]))\n                 ],\n                 AC_MSG_WARN([libjasper not found])\ndiff --git a/libraw.pc.in b/libraw.pc.in\nindex 1bab18b8..c95fbc48 100644\n--- a/libraw.pc.in\n+++ b/libraw.pc.in\n@@ -8,4 +8,5 @@ Description: Raw image decoder library (non-thread-safe)\n Requires: @PACKAGE_REQUIRES@\n Version: @PACKAGE_VERSION@\n Libs: -L${libdir} -lraw -lstdc++@PC_OPENMP@\n+Libs.private: @PACKAGE_LIBS_PRIVATE@\n Cflags: -I${includedir}/libraw -I${includedir}\ndiff --git a/libraw_r.pc.in b/libraw_r.pc.in\nindex e8427271..92bbbffa 100644\n--- a/libraw_r.pc.in\n+++ b/libraw_r.pc.in\n@@ -8,4 +8,5 @@ Description: Raw image decoder library (thread-safe)\n Requires: @PACKAGE_REQUIRES@\n Version: @PACKAGE_VERSION@\n Libs: -L${libdir} -lraw_r -lstdc++@PC_OPENMP@\n+Libs.private: @PACKAGE_LIBS_PRIVATE@\n Cflags: -I${includedir}/libraw -I${includedir}\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/libraw/Config.in",
    "content": "config BR2_PACKAGE_LIBRAW\n\tbool \"libraw\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  libraw is a raw image manipulation library\n\n\t  http://www.libraw.org/\n\ncomment \"libraw needs a toolchain w/ C++\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/libraw/libraw.hash",
    "content": "# Locally calculated\nsha256  dc1b486c2003435733043e4e05273477326e51c3ea554c6864a4eafaff1004a6  LibRaw-0.20.2.tar.gz\nsha256  eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449  LICENSE.LGPL\nsha256  0e3098d2d54a12434715f6679ea408d57da5e8d613c385c58ecc6fe5d30cc81f  LICENSE.CDDL\nsha256  313415f7f48f6cd3cc78856626aab4bbe97dbb1e9a11db9c25396ca8d0e76cd9  README.md\n"
  },
  {
    "path": "package/libraw/libraw.mk",
    "content": "################################################################################\n#\n# libraw\n#\n################################################################################\n\nLIBRAW_VERSION = 0.20.2\nLIBRAW_SOURCE = LibRaw-$(LIBRAW_VERSION).tar.gz\nLIBRAW_SITE = http://www.libraw.org/data\nLIBRAW_INSTALL_STAGING = YES\nLIBRAW_CONF_OPTS += \\\n\t--disable-examples \\\n\t--disable-openmp\nLIBRAW_LICENSE = LGPL-2.1 or CDDL-1.0\nLIBRAW_LICENSE_FILES = LICENSE.LGPL LICENSE.CDDL README.md\nLIBRAW_CPE_ID_VENDOR = libraw\nLIBRAW_DEPENDENCIES = host-pkgconf\n# https://github.com/LibRaw/LibRaw/issues/353\nLIBRAW_AUTORECONF = YES\nLIBRAW_CXXFLAGS = $(TARGET_CXXFLAGS)\nLIBRAW_CONF_ENV = CXXFLAGS=\"$(LIBRAW_CXXFLAGS)\"\n\nifeq ($(BR2_PACKAGE_JASPER),y)\nLIBRAW_CONF_OPTS += --enable-jasper\nLIBRAW_DEPENDENCIES += jasper\n# glibc prior to 2.18 only defines constants such as SIZE_MAX or\n# INT_FAST32_MAX for C++ code if __STDC_LIMIT_MACROS is defined\nLIBRAW_CXXFLAGS += -D__STDC_LIMIT_MACROS\nelse\nLIBRAW_CONF_OPTS += --disable-jasper\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nLIBRAW_CONF_OPTS += --enable-jpeg\nLIBRAW_DEPENDENCIES += jpeg\nelse\nLIBRAW_CONF_OPTS += --disable-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_LCMS2),y)\nLIBRAW_CONF_OPTS += --enable-lcms\nLIBRAW_DEPENDENCIES += lcms2 host-pkgconf\nelse\nLIBRAW_CONF_OPTS += --disable-lcms\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLIBRAW_CONF_OPTS += --enable-zlib\nLIBRAW_DEPENDENCIES += zlib\nelse\nLIBRAW_CONF_OPTS += --disable-zlib\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libraw1394/Config.in",
    "content": "config BR2_PACKAGE_LIBRAW1394\n\tbool \"libraw1394\"\n\thelp\n\t  libraw1394 provides direct access to the IEEE 1394 bus through\n\t  the Linux 1394 subsystem's raw1394 user space interface.\n\n\t  http://sourceforge.net/projects/libraw1394/\n"
  },
  {
    "path": "package/libraw1394/libraw1394.hash",
    "content": "# From https://www.kernel.org/pub/linux/libs/ieee1394/sha256sums.asc\nsha256\t03ccc69761d22c7deb1127fc301010dd13e70e44bb7134b8ff0d07590259a55e  \tlibraw1394-2.1.2.tar.xz\n# Locally computed\nsha256\t5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509\tCOPYING.LIB\n"
  },
  {
    "path": "package/libraw1394/libraw1394.mk",
    "content": "################################################################################\n#\n# libraw1394\n#\n################################################################################\n\nLIBRAW1394_VERSION = 2.1.2\nLIBRAW1394_SOURCE = libraw1394-$(LIBRAW1394_VERSION).tar.xz\nLIBRAW1394_SITE = $(BR2_KERNEL_MIRROR)/linux/libs/ieee1394\nLIBRAW1394_INSTALL_STAGING = YES\nLIBRAW1394_LICENSE = LGPL-2.1+\nLIBRAW1394_LICENSE_FILES = COPYING.LIB\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/librelp/Config.in",
    "content": "config BR2_PACKAGE_LIBRELP\n\tbool \"librelp\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Reliable Event Logging Protocol library\n\n\t  https://www.rsyslog.com/librelp/\n\ncomment \"librelp needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/librelp/librelp.hash",
    "content": "# Locally calculated\nsha256  148db4e4d1a23e8136e9ec08810929a55faf5d45e24c2e3186d5ab34355dab31  librelp-1.10.0.tar.gz\nsha256  1ed76f935566e93e3c3c0d9f8fad22eb6d8bbe406e2eb8470a4a2764d9fd9685  COPYING\n"
  },
  {
    "path": "package/librelp/librelp.mk",
    "content": "################################################################################\n#\n# librelp\n#\n################################################################################\n\nLIBRELP_VERSION = 1.10.0\nLIBRELP_SITE = http://download.rsyslog.com/librelp\nLIBRELP_LICENSE = GPL-3.0+\nLIBRELP_LICENSE_FILES = COPYING\nLIBRELP_CPE_ID_VENDOR = rsyslog\nLIBRELP_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nLIBRELP_DEPENDENCIES += gnutls host-pkgconf\nLIBRELP_CONF_OPTS += --enable-tls\nelse\nLIBRELP_CONF_OPTS += --disable-tls\nendif\n\nifeq ($(BR2_PACKAGE_HAS_OPENSSL),y)\nLIBRELP_DEPENDENCIES += openssl host-pkgconf\nLIBRELP_CONF_OPTS += --enable-tls-openssl\nelse\nLIBRELP_CONF_OPTS += --disable-tls-openssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libreplaygain/Config.in",
    "content": "config BR2_PACKAGE_LIBREPLAYGAIN\n\tbool \"libreplaygain\"\n\thelp\n\t  Replay Gain library from Musepack\n\n\t  http://www.musepack.net/\n"
  },
  {
    "path": "package/libreplaygain/libreplaygain.hash",
    "content": "# From https://www.musepack.net/index.php?pg=src\nmd5\te27b3b1249b7fbae92d656d9e3d26633\tlibreplaygain_r475.tar.gz\n# Calculated based on the hash above\nsha256  8258bf785547ac2cda43bb195e07522f0a3682f55abe97753c974609ec232482  libreplaygain_r475.tar.gz\n# Locally computed\nsha256  511e7b63ce6530b93932d19da3471a6672586339bc131b2699ad4e9b0ee6c9bb  src/gain_analysis.c\n"
  },
  {
    "path": "package/libreplaygain/libreplaygain.mk",
    "content": "################################################################################\n#\n# libreplaygain\n#\n################################################################################\n\nLIBREPLAYGAIN_VERSION = r475\nLIBREPLAYGAIN_SITE = http://files.musepack.net/source\nLIBREPLAYGAIN_SOURCE = libreplaygain_$(LIBREPLAYGAIN_VERSION).tar.gz\n# upstream doesn't ship configure\nLIBREPLAYGAIN_AUTORECONF = YES\nLIBREPLAYGAIN_INSTALL_STAGING = YES\nLIBREPLAYGAIN_LICENSE = LGPL-2.1+\nLIBREPLAYGAIN_LICENSE_FILES = src/gain_analysis.c\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libressl/0001-always-expose-SSL_OP_NO_TLSv1_3.patch",
    "content": "always expose SSL_OP_NO_TLSv1_3\n\nlike in OpenSSL, see https://github.com/openssl/openssl/blob/master/include/openssl/ssl.h.in#L399\n\nlike SSL_OP_NO_DTLSv1_2, see commit \"Expose various DTLSv1.2 specific functions and defines\"\n\nthis change fixes the compilation of vsftpd 3.0.4 & 3.0.5, which fails with the following error:\n```\nssl.c: In function 'ssl_init':\nssl.c:98:18: error: 'SSL_OP_NO_TLSv1_3' undeclared (first use in this function); did you mean 'SSL_OP_NO_TLSv1_1'?\n```\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\nFetched from: https://github.com/libressl-portable/openbsd/pull/124\n---\n include/openssl/ssl.h | 4 ----\n 1 file changed, 4 deletions(-)\n\ndiff --git a/include/openssl/ssl.h b/include/openssl/ssl.h\nindex 46f24b2ea..4048a6e63 100644\n--- a/include/openssl/ssl.h\n+++ b/include/openssl/ssl.h\n@@ -411,11 +411,7 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len,\n #define SSL_OP_NO_TLSv1\t\t\t\t\t0x04000000L\n #define SSL_OP_NO_TLSv1_2\t\t\t\t0x08000000L\n #define SSL_OP_NO_TLSv1_1\t\t\t\t0x10000000L\n-\n-#if defined(LIBRESSL_HAS_TLS1_3) || defined(LIBRESSL_INTERNAL)\n #define SSL_OP_NO_TLSv1_3\t\t\t\t0x20000000L\n-#endif\n-\n #define SSL_OP_NO_DTLSv1\t\t\t\t0x40000000L\n #define SSL_OP_NO_DTLSv1_2\t\t\t\t0x80000000L\n \n-- \n2.30.2\n\n"
  },
  {
    "path": "package/libressl/Config.in",
    "content": "if BR2_PACKAGE_LIBRESSL\n\nconfig BR2_PACKAGE_LIBRESSL_BIN\n\tbool \"openssl binary\"\n\thelp\n\t  Install the openssl binary to the target file system. This is\n\t  a command line tool for doing various cryptographic stuff.\n\nendif\n"
  },
  {
    "path": "package/libressl/libressl.hash",
    "content": "# From https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/SHA256\nsha256  cb82ca7d547336917352fbd23db2fc483c6c44d35157b32780214ec74197b3ce  libressl-3.4.2.tar.gz\n# Locally computed\nsha256  5c63613f008f16a9c0025c096bbd736cecf720494d121b5c5203e0ec6e5955b1  COPYING\n"
  },
  {
    "path": "package/libressl/libressl.mk",
    "content": "################################################################################\n#\n# libressl\n#\n################################################################################\n\nLIBRESSL_VERSION = 3.4.2\nLIBRESSL_SITE = https://ftp.openbsd.org/pub/OpenBSD/LibreSSL\nLIBRESSL_LICENSE = ISC (new additions), OpenSSL or SSLeay (original OpenSSL code)\nLIBRESSL_LICENSE_FILES = COPYING\nLIBRESSL_CPE_ID_VENDOR = openbsd\nLIBRESSL_INSTALL_STAGING = YES\nLIBRESSL_CONF_OPTS = -DOPENSSLDIR=\"/etc/ssl\"\n\nifeq ($(BR2_PACKAGE_LIBRESSL_BIN),)\ndefine LIBRESSL_REMOVE_BIN\n\t$(RM) -f $(TARGET_DIR)/usr/bin/openssl\nendef\nLIBRESSL_POST_INSTALL_TARGET_HOOKS += LIBRESSL_REMOVE_BIN\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libroxml/0001-src-roxml_mem.h-add-missing-extern.patch",
    "content": "From b16f6813011519ce247b0af9a4b78486daefad54 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 26 Aug 2020 22:54:50 +0200\nSubject: [PATCH] src/roxml_mem.h: add missing extern\n\nAdd missing extern to head_cell otherwise the build with gcc 10 (with\n-fno-common being default) will fail on:\n\n/bin/bash ./libtool  --tag=CC   --mode=link /home/peko/autobuild/instance-0/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -DIGNORE_EMPTY_TEXT_NODES -DCONFIG_XML_CONTENT -DCONFIG_XML_NAV -DCONFIG_XML_BUFF  -DCONFIG_XML_COMMIT -DCONFIG_XML_EDIT -DCONFIG_XML_FILE -DCONFIG_XML_XPATH -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -O2   -pthread -version-info 0:0:0  -o libroxml.la -rpath /usr/lib src/libroxml_la-roxml_core.lo src/libroxml_la-roxml_parser.lo src/libroxml_la-roxml_buff.lo src/libroxml_la-roxml_nav.lo src/libroxml_la-roxml_content.lo src/libroxml_la-roxml_mem.lo src/libroxml_la-roxml_stub.lo src/libroxml_la-roxml_commit.lo src/libroxml_la-roxml_edit.lo src/libroxml_la-roxml_file.lo src/libroxml_la-roxml_xpath.lo  -pthread\nlibtool: link: /home/peko/autobuild/instance-0/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -shared  -fPIC -DPIC  src/.libs/libroxml_la-roxml_core.o src/.libs/libroxml_la-roxml_parser.o src/.libs/libroxml_la-roxml_buff.o src/.libs/libroxml_la-roxml_nav.o src/.libs/libroxml_la-roxml_content.o src/.libs/libroxml_la-roxml_mem.o src/.libs/libroxml_la-roxml_stub.o src/.libs/libroxml_la-roxml_commit.o src/.libs/libroxml_la-roxml_edit.o src/.libs/libroxml_la-roxml_file.o src/.libs/libroxml_la-roxml_xpath.o    -O2 -pthread -pthread   -pthread -Wl,-soname -Wl,libroxml.so.0 -o .libs/libroxml.so.0.0.0\n/home/peko/autobuild/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: src/.libs/libroxml_la-roxml_mem.o:(.data+0x0): multiple definition of `head_cell'; src/.libs/libroxml_la-roxml_content.o:(.bss+0x0): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/b6ac3664d61ad826515b57c4d057b6f001b5167d\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/blunderer/libroxml/pull/79]\n---\n src/roxml_mem.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/roxml_mem.h b/src/roxml_mem.h\nindex aff6137..34a5070 100644\n--- a/src/roxml_mem.h\n+++ b/src/roxml_mem.h\n@@ -14,7 +14,7 @@\n \n #include \"roxml_internal.h\"\n \n-memory_cell_t head_cell;\n+extern memory_cell_t head_cell;\n \n /** \\brief alloc memory function\n  *\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/libroxml/Config.in",
    "content": "config BR2_PACKAGE_LIBROXML\n\tbool \"roxml\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  libroxml is a light and powerful xml parsing library with\n\t  xpath handling. Roxml is a binary using libroxml to explore\n\t  xml file from shell scripts.\n\n\t  http://www.libroxml.net\n\ncomment \"libroxml needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libroxml/libroxml.hash",
    "content": "# Locally calculated\nsha256\ted6d68d1bceabf98e5e76907411e2e4d93b2dbd48479ab41dede851f59dad6a3\tlibroxml-3.0.2.tar.gz\nsha256\tfe11466c265ad0a6c3896ea113af9403c0a8372b1fdd78712db64f0f1bac6387\tLicense.txt\n"
  },
  {
    "path": "package/libroxml/libroxml.mk",
    "content": "################################################################################\n#\n# libroxml\n#\n################################################################################\n\nLIBROXML_VERSION = 3.0.2\nLIBROXML_SITE = http://download.libroxml.net/pool/v3.x\nLIBROXML_INSTALL_STAGING = YES\nLIBROXML_LICENSE = LGPL-2.1+ with static link exception\nLIBROXML_LICENSE_FILES = License.txt\n\nLIBROXML_CONF_OPTS = --disable-silent-rules\n\n# libroxml forgets to compile/link with -pthread, even though it uses\n# thread functions breaking static linking\nLIBROXML_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -pthread\" LIBS=\"-pthread\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/librsvg/Config.in",
    "content": "config BR2_PACKAGE_LIBRSVG\n\tbool \"librsvg\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tdepends on BR2_INSTALL_LIBSTDCPP # pango\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # pango -> harfbuzz\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_CAIRO_PNG\n\tselect BR2_PACKAGE_CAIRO_SCRIPT\n\tselect BR2_PACKAGE_GDK_PIXBUF\n\tselect BR2_PACKAGE_HOST_RUSTC\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_PANGO\n\thelp\n\t  The rsvg library is an efficient renderer for Scalable\n\t  Vector Graphics (SVG) pictures.\n\n\t  https://wiki.gnome.org/Projects/LibRsvg\n\ncomment \"librsvg needs a toolchain w/ wchar, threads, C++, gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \\\n\t\t!BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/librsvg/librsvg.hash",
    "content": "# From https://ftp.gnome.org/pub/gnome/sources/librsvg/2.50/librsvg-2.50.7.sha256sum\nsha256  fffb61b08cd5282aaae147a02b305166a7426fad22a8b9427708f0f2fc426ebc  librsvg-2.50.7.tar.xz\n\n# Locally computed\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\n"
  },
  {
    "path": "package/librsvg/librsvg.mk",
    "content": "################################################################################\n#\n# librsvg\n#\n################################################################################\n\nLIBRSVG_VERSION_MAJOR = 2.50\nLIBRSVG_VERSION = $(LIBRSVG_VERSION_MAJOR).7\nLIBRSVG_SITE = http://ftp.gnome.org/pub/gnome/sources/librsvg/$(LIBRSVG_VERSION_MAJOR)\nLIBRSVG_SOURCE = librsvg-$(LIBRSVG_VERSION).tar.xz\nLIBRSVG_INSTALL_STAGING = YES\nLIBRSVG_CONF_ENV = \\\n\tLIBS=$(TARGET_NLS_LIBS) \\\n\tRUST_TARGET=$(RUSTC_TARGET_NAME)\nLIBRSVG_CONF_OPTS = --disable-pixbuf-loader --disable-tools\nHOST_LIBRSVG_CONF_OPTS = --enable-introspection=no\nLIBRSVG_DEPENDENCIES = cairo host-gdk-pixbuf gdk-pixbuf host-rustc libglib2 libxml2 pango \\\n\t$(TARGET_NLS_DEPENDENCIES)\nHOST_LIBRSVG_DEPENDENCIES = host-cairo host-gdk-pixbuf host-libglib2 host-libxml2 host-pango host-rustc\nLIBRSVG_LICENSE = LGPL-2.1+\nLIBRSVG_LICENSE_FILES = COPYING.LIB\nLIBRSVG_CPE_ID_VENDOR = gnome\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBRSVG_CONF_OPTS += --enable-introspection\nLIBRSVG_DEPENDENCIES += gobject-introspection\nelse\nLIBRSVG_CONF_OPTS += --disable-introspection\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/librsync/Config.in",
    "content": "config BR2_PACKAGE_LIBRSYNC\n\tbool \"librsync\"\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_POPT\n\thelp\n\t  librsync implements the rolling-checksum algorithm of\n\t  remote file synchronization that was popularized by the\n\t  rsync utility and is used in rproxy.\n\n\t  https://github.com/librsync/librsync\n"
  },
  {
    "path": "package/librsync/librsync.hash",
    "content": "# Locally computed:\nsha256  ef8ce23df38d5076d25510baa2cabedffbe0af460d887d86c2413a1c2b0c676f  librsync-2.3.2.tar.gz\nsha256  5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509  COPYING\n"
  },
  {
    "path": "package/librsync/librsync.mk",
    "content": "################################################################################\n#\n# librsync\n#\n################################################################################\n\nLIBRSYNC_VERSION = 2.3.2\nLIBRSYNC_SITE = https://github.com/librsync/librsync/releases/download/v$(LIBRSYNC_VERSION)\nLIBRSYNC_LICENSE = LGPL-2.1+\nLIBRSYNC_LICENSE_FILES = COPYING\nLIBRSYNC_CPE_ID_VENDOR = librsync_project\nLIBRSYNC_INSTALL_STAGING = YES\nLIBRSYNC_DEPENDENCIES = host-pkgconf zlib bzip2 popt\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/librtas/Config.in",
    "content": "config BR2_PACKAGE_LIBRTAS\n\tbool \"librtas\"\n\tdepends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  The librtas package provides an interface for Run-Time\n\t  Abstraction Services (RTAS) calls on PAPR platforms.\n\t  The libraries allow users to examine and manipulate hardware,\n\t  and parse RTAS events.\n\n\t  http://librtas.sourceforge.net/\n\ncomment \"librtas needs a glibc toolchain\"\n\tdepends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/librtas/librtas.hash",
    "content": "# Locally computed\nsha256  b47b2a6f140347ac265e2c66ddf68293f6cdcc7c0c9a78c6e21ff52846465415  librtas-2.0.2.tar.gz\nsha256  592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c  COPYING.LESSER\n"
  },
  {
    "path": "package/librtas/librtas.mk",
    "content": "################################################################################\n#\n# librtas\n#\n################################################################################\n\nLIBRTAS_VERSION = 2.0.2\nLIBRTAS_SITE = $(call github,ibm-power-utilities,librtas,v$(LIBRTAS_VERSION))\nLIBRTAS_LICENSE = LGPL-2.1+\nLIBRTAS_LICENSE_FILES = COPYING.LESSER\nLIBRTAS_INSTALL_STAGING = YES\n# From git\nLIBRTAS_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/librtlsdr/0001-disable_shared_library_target_in_build.patch",
    "content": "From 9a1c2587d4ef18e2026811deabd024eb7577d9ce Mon Sep 17 00:00:00 2001\nFrom: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\nDate: Fri, 15 May 2020 16:14:48 +0200\nSubject: [PATCH] disable shared library target in build\n\nDisable shared library target if BUILD_SHARED_LIBS if OFF.\n\nPatch retrieved from\nhttps://git.buildroot.net/buildroot/tree/package/librtlsdr/0001-disable_shared_library_target_in_build.patch?h=2020.02.x\n\nPatch has been updated to work with master and to be able to keep current\nbehavior of building shared and static version of library if\nBUILD_SHARED_LIBS and BUILD_STATIC_LIBS are both set.\nMoreover, if BUILD_STATIC_LIBS is OFF, only shared version of library\nwill be install.\n\n[Upstream status: http://lists.osmocom.org/pipermail/osmocom-sdr/2020-May/002075.html]\n\nSigned-off-by: Yuvaraj Patil <yuvaraj.patil@wipro.com>\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nSigned-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\nSigned-off-by: Titouan Christophe <titouan.christophe@railnova.eu>\n---\n src/CMakeLists.txt | 30 +++++++++++++++++++++---------\n 1 file changed, 21 insertions(+), 9 deletions(-)\n\ndiff --git a/src/CMakeLists.txt b/src/CMakeLists.txt\nindex de93044..13b7b1a 100644\n--- a/src/CMakeLists.txt\n+++ b/src/CMakeLists.txt\n@@ -18,6 +18,8 @@\n ########################################################################\n # Setup shared library variant\n ########################################################################\n+option(BUILD_SHARED_LIBS \"Build shared library\" ON)\n+if(BUILD_SHARED_LIBS)\n add_library(rtlsdr SHARED librtlsdr.c\n   tuner_e4k.c tuner_fc0012.c tuner_fc0013.c tuner_fc2580.c tuner_r82xx.c)\n target_link_libraries(rtlsdr PkgConfig::LIBUSB)\n@@ -30,10 +32,14 @@ set_target_properties(rtlsdr PROPERTIES OUTPUT_NAME rtlsdr)\n set_target_properties(rtlsdr PROPERTIES SOVERSION ${MAJOR_VERSION})\n set_target_properties(rtlsdr PROPERTIES VERSION ${LIBVER})\n generate_export_header(rtlsdr)\n+list(APPEND rtlsdr_lib rtlsdr)\n+endif()\n \n ########################################################################\n # Setup static library variant\n ########################################################################\n+option(BUILD_STATIC_LIBS \"Build static library\" ON)\n+if(BUILD_STATIC_LIBS)\n add_library(rtlsdr_static STATIC librtlsdr.c\n   tuner_e4k.c tuner_fc0012.c tuner_fc0013.c tuner_fc2580.c tuner_r82xx.c)\n target_link_libraries(rtlsdr_static PkgConfig::LIBUSB)\n@@ -47,6 +53,8 @@ if(NOT WIN32)\n set_target_properties(rtlsdr_static PROPERTIES OUTPUT_NAME rtlsdr)\n endif()\n generate_export_header(rtlsdr_static)\n+list(APPEND rtlsdr_lib rtlsdr_static)\n+endif()\n \n ########################################################################\n # Set up Windows DLL resource files\n@@ -90,37 +98,37 @@ add_executable(rtl_eeprom rtl_eeprom.c)\n add_executable(rtl_adsb rtl_adsb.c)\n add_executable(rtl_power rtl_power.c)\n add_executable(rtl_biast rtl_biast.c)\n-set(INSTALL_TARGETS rtlsdr rtlsdr_static rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power rtl_biast)\n+set(INSTALL_TARGETS ${rtlsdr_lib} rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power rtl_biast)\n \n-target_link_libraries(rtl_sdr rtlsdr convenience_static\n+target_link_libraries(rtl_sdr ${rtlsdr_lib} convenience_static\n     ${LIBUSB_LIBRARIES}\n     ${CMAKE_THREAD_LIBS_INIT}\n )\n-target_link_libraries(rtl_tcp rtlsdr convenience_static\n+target_link_libraries(rtl_tcp ${rtlsdr_lib} convenience_static\n     ${LIBUSB_LIBRARIES}\n     ${CMAKE_THREAD_LIBS_INIT}\n )\n-target_link_libraries(rtl_test rtlsdr convenience_static\n+target_link_libraries(rtl_test ${rtlsdr_lib} convenience_static\n     ${LIBUSB_LIBRARIES}\n     ${CMAKE_THREAD_LIBS_INIT}\n )\n-target_link_libraries(rtl_fm rtlsdr convenience_static\n+target_link_libraries(rtl_fm ${rtlsdr_lib} convenience_static\n     ${LIBUSB_LIBRARIES}\n     ${CMAKE_THREAD_LIBS_INIT}\n )\n-target_link_libraries(rtl_eeprom rtlsdr convenience_static\n+target_link_libraries(rtl_eeprom ${rtlsdr_lib} convenience_static\n     ${LIBUSB_LIBRARIES}\n     ${CMAKE_THREAD_LIBS_INIT}\n )\n-target_link_libraries(rtl_adsb rtlsdr convenience_static\n+target_link_libraries(rtl_adsb ${rtlsdr_lib} convenience_static\n     ${LIBUSB_LIBRARIES}\n     ${CMAKE_THREAD_LIBS_INIT}\n )\n-target_link_libraries(rtl_power rtlsdr convenience_static\n+target_link_libraries(rtl_power ${rtlsdr_lib} convenience_static\n     ${LIBUSB_LIBRARIES}\n     ${CMAKE_THREAD_LIBS_INIT}\n )\n-target_link_libraries(rtl_biast rtlsdr convenience_static\n+target_link_libraries(rtl_biast ${rtlsdr_lib} convenience_static\n     ${LIBUSB_LIBRARIES}\n     ${CMAKE_THREAD_LIBS_INIT}\n )\n@@ -156,12 +164,16 @@ endif()\n ########################################################################\n # Install built library files & utilities\n ########################################################################\n+if(BUILD_SHARED_LIBS)\n install(TARGETS rtlsdr EXPORT RTLSDR-export\n   LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} # .so/.dylib file\n   )\n+endif()\n+if(BUILD_STATIC_LIBS)\n install(TARGETS rtlsdr_static EXPORT RTLSDR-export\n   ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} # .so/.dylib file\n   )\n+endif()\n install(TARGETS rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power rtl_biast\n   DESTINATION ${CMAKE_INSTALL_BINDIR}\n   )\n-- \n2.25.3\n\n"
  },
  {
    "path": "package/librtlsdr/0002-cmake-Modules-Version.cmake-don-t-use-Git-version-if.patch",
    "content": "From feb5d9c6b7bcec788f9b01781c205e31fff260e7 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Tue, 11 Aug 2020 23:07:08 +0200\nSubject: [PATCH] cmake/Modules/Version.cmake: don't use Git version if not in\n a Git repo\n\nIf the librtlsdr code comes from a tarball, it doesn't have any .git/\nmetadata, and therefore even if Git (as a tool) is found, the logic in\ncmake/Modules/Version.cmake fails finding a version through Git:\n\n-- Extracting version information from git describe...\nfatal: Not a git repository (or any of the parent directories): .git\n\nAs a consequence, the VERSION variable is empty, which later causes\ncmake to bail out with:\n\nCMake Error at /home/test/autobuild/run/instance-1/output-1/host/share/cmake-3.15/Modules/WriteBasicConfigVersionFile.cmake:43 (message):\n  No VERSION specified for WRITE_BASIC_CONFIG_VERSION_FILE()\nCall Stack (most recent call first):\n  /home/test/autobuild/run/instance-1/output-1/host/share/cmake-3.15/Modules/CMakePackageConfigHelpers.cmake:225 (write_basic_config_version_file)\n  CMakeLists.txt:173 (write_basic_package_version_file)\n\nTo avoid this, we only use Git to determine the version if the cmake\nproject top-level source directory has a .git/ folder.\n\nUpstream: https://github.com/librtlsdr/librtlsdr/pull/75\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n cmake/Modules/Version.cmake | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/cmake/Modules/Version.cmake b/cmake/Modules/Version.cmake\nindex 2d4e76d..6f67fa4 100644\n--- a/cmake/Modules/Version.cmake\n+++ b/cmake/Modules/Version.cmake\n@@ -32,7 +32,7 @@ set(PATCH_VERSION ${VERSION_INFO_PATCH_VERSION})\n ########################################################################\n find_package(Git QUIET)\n \n-if(GIT_FOUND)\n+if(GIT_FOUND AND EXISTS ${CMAKE_SOURCE_DIR}/.git)\n     message(STATUS \"Extracting version information from git describe...\")\n     execute_process(\n         COMMAND ${GIT_EXECUTABLE} describe --always --abbrev=4 --long\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/librtlsdr/Config.in",
    "content": "config BR2_PACKAGE_LIBRTLSDR\n\tbool \"librtlsdr\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Library and command line programs for accessing\n\t  RTL2832U SDR dongles.\n\n\t  http://sdr.osmocom.org/trac/wiki/rtl-sdr/\n\nif BR2_PACKAGE_LIBRTLSDR\n\nconfig BR2_PACKAGE_LIBRTLSDR_DETACH_DRIVER\n\tbool \"Detach kernel driver\"\n\tdefault y\n\thelp\n\t  Enable this option if you would like librtlsdr to\n\t  automatically detach any kernel driver associated to the\n\t  RTL2832U USB device on startup if one is loaded.\n\nconfig BR2_PACKAGE_LIBRTLSDR_ZEROCOPY\n\tbool \"Enable usbfs zero-copy support\"\n\tdefault y\n\thelp\n\t  This option allows to use kernel usbfs mmap instead\n\t  of buffers in userspace. If you experiment crash with\n\t  kernel < 5.6, disable this option.\n\nendif\n\ncomment \"librtlsdr needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/librtlsdr/librtlsdr.hash",
    "content": "# Locally calculated\nsha256  f09ff5ba2fa1780071321ba22885b9d1a16ac9d4b944a97e39b6921960439301  librtlsdr-ed0317e6a58c098874ac58b769cf2e609c18d9a5.tar.gz\n# License file, locally calculated\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/librtlsdr/librtlsdr.mk",
    "content": "################################################################################\n#\n# librtlsdr\n#\n################################################################################\n\nLIBRTLSDR_VERSION = ed0317e6a58c098874ac58b769cf2e609c18d9a5\nLIBRTLSDR_SITE = $(call github,steve-m,librtlsdr,$(LIBRTLSDR_VERSION))\nLIBRTLSDR_LICENSE = GPL-2.0+\nLIBRTLSDR_LICENSE_FILES = COPYING\nLIBRTLSDR_INSTALL_STAGING = YES\nLIBRTLSDR_DEPENDENCIES = libusb\n\n# BUILD_SHARED_LIBS is handled in pkg-cmake.mk as it is a generic cmake variable\nifeq ($(BR2_STATIC_LIBS),y)\nLIBRTLSDR_CONF_OPTS += -DBUILD_STATIC_LIBS=ON\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nLIBRTLSDR_CONF_OPTS += -DBUILD_STATIC_LIBS=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nLIBRTLSDR_CONF_OPTS += -DBUILD_STATIC_LIBS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nLIBRTLSDR_CONF_OPTS += -DINSTALL_UDEV_RULES=ON\nendif\n\nifeq ($(BR2_PACKAGE_LIBRTLSDR_DETACH_DRIVER),y)\nLIBRTLSDR_CONF_OPTS += -DDETACH_KERNEL_DRIVER=1\nendif\n\nifeq ($(BR2_PACKAGE_LIBRTLSDR_ZEROCOPY),y)\nLIBRTLSDR_CONF_OPTS += -DENABLE_ZEROCOPY=ON\nelse\nLIBRTLSDR_CONF_OPTS += -DENABLE_ZEROCOPY=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libsamplerate/Config.in",
    "content": "config BR2_PACKAGE_LIBSAMPLERATE\n\tbool \"libsamplerate\"\n\thelp\n\t  Secret Rabbit Code (aka libsamplerate) is a Sample Rate\n\t  Converter for audio. One example of where such a thing would\n\t  be useful is converting audio from the CD sample rate of\n\t  44.1kHz to the 48kHz sample rate used by DAT players.\n\n\t  http://www.mega-nerd.com/SRC/\n"
  },
  {
    "path": "package/libsamplerate/libsamplerate.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  0a7eb168e2f21353fb6d84da152e4512126f7dc48ccb0be80578c565413444c1  libsamplerate-0.1.9.tar.gz\n# Locally computed\nsha256 2c1f76ce2effdddb425018405d5690c0b1ab4e6976e35296b0a6db65c5e1a55d  COPYING\n"
  },
  {
    "path": "package/libsamplerate/libsamplerate.mk",
    "content": "################################################################################\n#\n# libsamplerate\n#\n################################################################################\n\nLIBSAMPLERATE_VERSION = 0.1.9\nLIBSAMPLERATE_SITE = http://www.mega-nerd.com/SRC\nLIBSAMPLERATE_INSTALL_STAGING = YES\nLIBSAMPLERATE_DEPENDENCIES = host-pkgconf\nLIBSAMPLERATE_CONF_OPTS = --disable-fftw --program-transform-name=''\nLIBSAMPLERATE_LICENSE = BSD-2-Clause\nLIBSAMPLERATE_LICENSE_FILES = COPYING\nLIBSAMPLERATE_CPE_ID_VENDOR = libsamplerate_project\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nLIBSAMPLERATE_DEPENDENCIES += alsa-lib\nendif\n\nifeq ($(BR2_PACKAGE_LIBSNDFILE),y)\nLIBSAMPLERATE_DEPENDENCIES += libsndfile\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libscrypt/0001-Allow-adding-options-to-CFLAGS-and-LDFLAGS-variables.patch",
    "content": "From 097c5d9248f4afd34c73de5aba01a143ef784257 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Stefan=20S=C3=B8rensen?= <stefan.sorensen@spectralink.com>\nDate: Tue, 14 Mar 2017 09:23:51 +0100\nSubject: [PATCH] Allow adding options to CFLAGS and LDFLAGS variables\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis also removes a number of hard-coded CFLAGS, leaving it up to the\nuser to pass appropriate optimization/hardening flags.\n\nSigned-off-by: Stefan Sørensen <stefan.sorensen@spectralink.com>\n---\n Makefile | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 7022a4a..3098a9a 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -5,8 +5,8 @@ MAKE_DIR     ?= install -d\n INSTALL_DATA ?= install\n \n CC?=gcc\n-CFLAGS?=-O2 -Wall -g -D_FORTIFY_SOURCE=2 -fstack-protector -fPIC\n-LDFLAGS?=-Wl,-z,now -Wl,-z,relro -Wl,-soname,libscrypt.so.0 -Wl,--version-script=libscrypt.version\n+override CFLAGS+=-fPIC\n+override LDFLAGS+=-Wl,-z,now -Wl,-z,relro -Wl,-soname,libscrypt.so.0 -Wl,--version-script=libscrypt.version\n CFLAGS_EXTRA?=-Wl,-rpath=.\n \n all: reference\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/libscrypt/Config.in",
    "content": "config BR2_PACKAGE_LIBSCRYPT\n\tbool \"libscrypt\"\n\t# Unconditionally builds a shared library\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  This is a library that implements the secure password\n\t  hashing function \"scrypt\".\n\n\t  http://www.lolware.net/libscrypt.html\n\ncomment \"libscrypt needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libscrypt/libscrypt.hash",
    "content": "# Locally calculated\nsha256\t68e377e79745c10d489b759b970e52d819dbb80dd8ca61f8c975185df3f457d3\tlibscrypt-1.21.tar.gz\nsha256\taacbfd9e19e5b38ea09616cebf0751ef0cc7b6a19ea0fd78f4b0598b2c503394\tLICENSE\n"
  },
  {
    "path": "package/libscrypt/libscrypt.mk",
    "content": "################################################################################\n#\n# libscrypt\n#\n################################################################################\n\nLIBSCRYPT_VERSION = 1.21\nLIBSCRYPT_SITE = $(call github,technion,libscrypt,v$(LIBSCRYPT_VERSION))\nLIBSCRYPT_LICENSE = BSD-2-Clause\nLIBSCRYPT_LICENSE_FILES = LICENSE\nLIBSCRYPT_INSTALL_STAGING = YES\n\ndefine LIBSCRYPT_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine LIBSCRYPT_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=/usr \\\n\t\tDESTDIR=$(STAGING_DIR) install\nendef\n\ndefine LIBSCRYPT_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=/usr \\\n\t\tDESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libseccomp/Config.in",
    "content": "config BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_arm || BR2_armeb\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_powerpc64 || BR2_powerpc\n\nconfig BR2_PACKAGE_LIBSECCOMP\n\tbool \"libseccomp\"\n\tdepends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\thelp\n\t  High level interface to the Linux Kernel's seccomp filter\n\n\t  The libseccomp library provides an easy to use, platform\n\t  independent, interface to the Linux Kernel's syscall filtering\n\t  mechanism: seccomp. The libseccomp API is designed to abstract\n\t  away the underlying BPF based syscall filter language and\n\t  present a more conventional function-call based filtering\n\t  interface that should be familiar to, and easily adopted by\n\t  application developers.\n\n\t  https://github.com/seccomp/libseccomp\n\ncomment \"libseccomp needs a toolchain w/ headers >= 3.12\"\n\tdepends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n"
  },
  {
    "path": "package/libseccomp/libseccomp.hash",
    "content": "# From https://github.com/seccomp/libseccomp/releases/tag/v2.4.4\nsha256  4e79738d1ef3c9b7ca9769f1f8b8d84fc17143c2c1c432e53b9c64787e0ff3eb  libseccomp-2.4.4.tar.gz\n# Locally calculated\nsha256  102900208eef27b766380135906d431dba87edaa7ec6aa72e6ebd3dd67f3a97b  LICENSE\n"
  },
  {
    "path": "package/libseccomp/libseccomp.mk",
    "content": "################################################################################\n#\n# libseccomp\n#\n################################################################################\n\nLIBSECCOMP_VERSION = 2.4.4\nLIBSECCOMP_SITE = https://github.com/seccomp/libseccomp/releases/download/v$(LIBSECCOMP_VERSION)\nLIBSECCOMP_LICENSE = LGPL-2.1\nLIBSECCOMP_LICENSE_FILES = LICENSE\nLIBSECCOMP_CPE_ID_VENDOR = libseccomp_project\nLIBSECCOMP_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsecret/Config.in",
    "content": "config BR2_PACKAGE_LIBSECRET\n\tbool \"libsecret\"\n\tdepends on BR2_USE_WCHAR # gettext dep in libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  libsecret is a library for storing and retrieving passwords\n\t  and other secrets. It communicates with the \"Secret Service\"\n\t  using DBus. gnome-keyring and ksecretservice are both\n\t  implementations of a Secret Service.\n\n\t  https://wiki.gnome.org/Projects/Libsecret\n\ncomment \"libsecret needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libsecret/libsecret.hash",
    "content": "# From https://download.gnome.org/sources/libsecret/0.20/libsecret-0.20.4.sha256sum\nsha256  325a4c54db320c406711bf2b55e5cb5b6c29823426aa82596a907595abb39d28  libsecret-0.20.4.tar.xz\n\n# Hash for license file:\nsha256  a1a33180d02960ab1c5de36cf20b1a2f0fe9888d83826ad263da5db52f1b183b  COPYING\n"
  },
  {
    "path": "package/libsecret/libsecret.mk",
    "content": "################################################################################\n#\n# libsecret\n#\n################################################################################\n\nLIBSECRET_VERSION_MAJOR = 0.20\nLIBSECRET_VERSION = $(LIBSECRET_VERSION_MAJOR).4\nLIBSECRET_SITE = http://ftp.gnome.org/pub/GNOME/sources/libsecret/$(LIBSECRET_VERSION_MAJOR)\nLIBSECRET_SOURCE = libsecret-$(LIBSECRET_VERSION).tar.xz\nLIBSECRET_INSTALL_STAGING = YES\nLIBSECRET_DEPENDENCIES = libglib2 $(TARGET_NLS_DEPENDENCIES)\nLIBSECRET_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\nLIBSECRET_CONF_OPTS = \\\n\t--disable-manpages \\\n\t--disable-strict \\\n\t--disable-coverage \\\n\t--enable-vala=no\nLIBSECRET_LICENSE = LGPL-2.1+\nLIBSECRET_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBSECRET_CONF_OPTS += --enable-introspection=yes\nLIBSECRET_DEPENDENCIES += gobject-introspection\nelse\nLIBSECRET_CONF_OPTS += --enable-introspection=no\nendif\n\nifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nLIBSECRET_DEPENDENCIES += libgcrypt\nLIBSECRET_CONF_OPTS += --enable-gcrypt \\\n\t--with-libgcrypt-prefix=$(STAGING_DIR)/usr\nelse\nLIBSECRET_CONF_OPTS += --disable-gcrypt\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libselinux/0001-fix-musl-build.patch",
    "content": "From 78f7f09028fdd6a5e8e4e4b584749621eaef412f Mon Sep 17 00:00:00 2001\nFrom: Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sat, 7 Dec 2019 17:24:50 -0800\nSubject: [PATCH] fix undefined macros in musl\n\nmusl does not define glibc-specific macros, so use a simple version of\nthe macro when it is not defined.\n\nThis is very inefficient, however, but copying the code from glibc is\nnot really possible because it is LGPL while libselinux in Public\nDomain, and we want to avoid license propagation, so this macro is\ncompletely written from scratch, and non-optimal.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n[Updated for 3.0]\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\ndiff --git a/src/booleans.c b/src/booleans.c\nindex ffa8d26..8569002 100644\n--- a/src/booleans.c\n+++ b/src/booleans.c\n@@ -65,6 +65,14 @@ int security_get_boolean_names(char ***names, int *len)\n \t\tgoto bad;\n \t}\n \n+/* Simple (but inefficient) version of _D_ALLOC_NAMLEN when\n+ * building with a C library that misses it (e.g. musl).\n+ * Note: glibc does a strlen on (d)->d_name, so assume it is safe.\n+ */\n+#ifndef _D_ALLOC_NAMLEN\n+#define _D_ALLOC_NAMLEN(d) (strlen((d)->d_name)+1)\n+#endif\n+\n \tfor (i = 0; i < *len; i++) {\n \t\tn[i] = strdup(namelist[i]->d_name);\n \t\tif (!n[i]) {\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/libselinux/0002-Do-not-use-PYCEXT-and-rely-on-the-installed-file-nam.patch",
    "content": "From c26495025ab1a2597e5433b67a3bf793d3ce1e08 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Fri, 25 Oct 2019 13:37:14 +0200\nSubject: [PATCH] Do not use PYCEXT, and rely on the installed file name\n\nPYCEXT is computed by asking the Python intrepreter what is the\nfile extension used for native Python modules.\n\nUnfortunately, when cross-compiling, the host Python doesn't give the\nproper result: it gives the result matching the build machine, and not\nthe target machine. Due to this, the symlink has an incorrect name,\nand doesn't point to the .so file that was actually built/installed.\n\nTo address this and keep things simple, this patch just changes the ln\ninvocation to rely on the name of the _selinux*.so Python module that\nwas installed.\n\nSigned-off-by: Antoine Tenart <antoine.tenart@bootlin.com>\n[Refreshed for 3.1]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n[Refreshed for 3.0]\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\n---\n src/Makefile | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/src/Makefile b/src/Makefile\nindex 190016e2af34..7ee22fd35da3 100644\n--- a/src/Makefile\n+++ b/src/Makefile\n@@ -15,7 +15,6 @@ INCLUDEDIR ?= $(PREFIX)/include\n PYINC ?= $(shell $(PKG_CONFIG) --cflags $(PYPREFIX))\n PYLIBS ?= $(shell $(PKG_CONFIG) --libs $(PYPREFIX))\n PYTHONLIBDIR ?= $(shell $(PYTHON) -c \"from distutils.sysconfig import *; print(get_python_lib(plat_specific=1, prefix='$(PREFIX)'))\")\n-PYCEXT ?= $(shell $(PYTHON) -c 'import importlib.machinery;print(importlib.machinery.EXTENSION_SUFFIXES[0])')\n RUBYINC ?= $(shell $(RUBY) -e 'puts \"-I\" + RbConfig::CONFIG[\"rubyarchhdrdir\"] + \" -I\" + RbConfig::CONFIG[\"rubyhdrdir\"]')\n RUBYLIBS ?= $(shell $(RUBY) -e 'puts \"-L\" + RbConfig::CONFIG[\"libdir\"] + \" -L\" + RbConfig::CONFIG[\"archlibdir\"] + \" \" + RbConfig::CONFIG[\"LIBRUBYARG_SHARED\"]')\n RUBYINSTALL ?= $(shell $(RUBY) -e 'puts RbConfig::CONFIG[\"vendorarchdir\"]')\n@@ -184,7 +183,7 @@ install: all\n install-pywrap: pywrap\n \t$(PYTHON) setup.py install --prefix=$(PREFIX) `test -n \"$(DESTDIR)\" && echo --root $(DESTDIR)` $(PYTHON_SETUP_ARGS)\n \tinstall -m 644 $(SWIGPYOUT) $(DESTDIR)$(PYTHONLIBDIR)/selinux/__init__.py\n-\tln -sf --relative $(DESTDIR)$(PYTHONLIBDIR)/selinux/_selinux$(PYCEXT) $(DESTDIR)$(PYTHONLIBDIR)/_selinux$(PYCEXT)\n+\tln -sf --relative $(DESTDIR)$(PYTHONLIBDIR)/selinux/_selinux*.so $(DESTDIR)$(PYTHONLIBDIR)/\n \n install-rubywrap: rubywrap\n \ttest -d $(DESTDIR)$(RUBYINSTALL) || install -m 755 -d $(DESTDIR)$(RUBYINSTALL) \n-- \n2.26.2\n\n"
  },
  {
    "path": "package/libselinux/0003-libselinux-utils-getseuser.c-fix-build-with-gcc-4.8.patch",
    "content": "From 5c4ddfc88f0a7f10a5e9edddbdbe8e8ef1f9945e Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 10 Jun 2021 07:38:02 +0200\nSubject: [PATCH] libselinux/utils/getseuser.c: fix build with gcc 4.8\n\nFix the following build failure with gcc 4.8 which is raised since\nversion 3.2 and\nhttps://github.com/SELinuxProject/selinux/commit/156dd0de5cad31e7d437c64e11a8aef027f0a691\n\ngetseuser.c:53:2: error: 'for' loop initial declarations are only allowed in C99 mode\n  for (int i = 0; i < n; i++)\n  ^\n\nFixes:\n - http://autobuild.buildroot.org/results/37eb0952a763256fbf6ef3c668f6c95fbdf2dd35\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/SELinuxProject/selinux/pull/289]\n---\n libselinux/utils/getseuser.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/utils/getseuser.c b/utils/getseuser.c\nindex ce1b7b27..34f2e887 100644\n--- a/utils/getseuser.c\n+++ b/utils/getseuser.c\n@@ -9,7 +9,7 @@ int main(int argc, char **argv)\n {\n \tchar *seuser = NULL, *level = NULL;\n \tchar **contextlist;\n-\tint rc, n;\n+\tint rc, n, i;\n \n \tif (argc != 3) {\n \t\tfprintf(stderr, \"usage:  %s linuxuser fromcon\\n\", argv[0]);\n@@ -50,7 +50,7 @@ int main(int argc, char **argv)\n \tif (n == 0)\n \t\tprintf(\"no valid context found\\n\");\n \n-\tfor (int i = 0; i < n; i++)\n+\tfor (i = 0; i < n; i++)\n \t\tprintf(\"Context %d\\t%s\\n\", i, contextlist[i]);\n \n \tfreeconary(contextlist);\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/libselinux/Config.in",
    "content": "config BR2_PACKAGE_LIBSELINUX\n\tbool \"libselinux\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBSEPOL\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  libselinux is the runtime SELinux library that provides\n\t  interfaces (e.g. library functions for the SELinux kernel\n\t  APIs like getcon(), other support functions like\n\t  getseuserbyname()) to SELinux-aware applications. libselinux\n\t  may use the shared libsepol to manipulate the binary policy\n\t  if necessary (e.g. to downgrade the policy format to an\n\t  older version supported by the kernel) when loading policy.\n\n\t  http://selinuxproject.org/page/Main_Page\n\ncomment \"libselinux needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libselinux/libselinux.hash",
    "content": "# From: https://github.com/SELinuxProject/selinux/wiki/Releases\nsha256 df758ef1d9d4811051dd901ea6b029ae334ffd7c671c128beb16bce1e25ac161 libselinux-3.2.tar.gz\n\n# Hash for license file\nsha256 86657b4c0fe868d7cbd977cb04c63b6c667e08fa51595a7bc846ad4bed8fc364 LICENSE\n"
  },
  {
    "path": "package/libselinux/libselinux.mk",
    "content": "################################################################################\n#\n# libselinux\n#\n################################################################################\n\nLIBSELINUX_VERSION = 3.2\nLIBSELINUX_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(LIBSELINUX_VERSION)\nLIBSELINUX_LICENSE = Public Domain\nLIBSELINUX_LICENSE_FILES = LICENSE\nLIBSELINUX_CPE_ID_VENDOR = selinuxproject\n\nLIBSELINUX_DEPENDENCIES = $(BR2_COREUTILS_HOST_DEPENDENCY) libsepol pcre\n\nLIBSELINUX_INSTALL_STAGING = YES\n\n# Set SHLIBDIR to /usr/lib so it has the same value than LIBDIR, as a result\n# we won't have to use a relative path in 0002-revert-ln-relative.patch\nLIBSELINUX_MAKE_OPTS = \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tARCH=$(KERNEL_ARCH) \\\n\tSHLIBDIR=/usr/lib\n\nLIBSELINUX_MAKE_INSTALL_TARGETS = install\n\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),)\nLIBSELINUX_DEPENDENCIES += musl-fts\nLIBSELINUX_MAKE_OPTS += FTS_LDLIBS=-lfts\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nLIBSELINUX_DEPENDENCIES += python3 host-swig\n\nLIBSELINUX_MAKE_OPTS += \\\n\t$(PKG_PYTHON_DISTUTILS_ENV) \\\n\tPYTHON=python$(PYTHON3_VERSION_MAJOR)\n\nLIBSELINUX_MAKE_INSTALL_TARGETS += install-pywrap\n\n# dependencies are broken and result in file truncation errors at link\n# time if the Python bindings are built through the same make\n# invocation as the rest of the library.\ndefine LIBSELINUX_BUILD_PYTHON_BINDINGS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(LIBSELINUX_MAKE_OPTS) swigify pywrap\nendef\nendif # python3\n\n# Filter out D_FILE_OFFSET_BITS=64. This fixes errors caused by glibc 2.22. We\n# set CFLAGS, CPPFLAGS and LDFLAGS here because we want to win over the\n# CFLAGS/CPPFLAGS/LDFLAGS definitions passed by $(PKG_PYTHON_DISTUTILS_ENV)\n# when the python binding is enabled.\nLIBSELINUX_MAKE_OPTS += \\\n\tCFLAGS=\"$(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CFLAGS))\" \\\n\tCPPFLAGS=\"$(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CPPFLAGS))\" \\\n\tLDFLAGS=\"$(TARGET_LDFLAGS) -lpcre -lpthread\"\n\ndefine LIBSELINUX_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(LIBSELINUX_MAKE_OPTS) all\n\t$(LIBSELINUX_BUILD_PYTHON_BINDINGS)\nendef\n\ndefine LIBSELINUX_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(LIBSELINUX_MAKE_OPTS) DESTDIR=$(STAGING_DIR) \\\n\t\t$(LIBSELINUX_MAKE_INSTALL_TARGETS)\nendef\n\ndefine LIBSELINUX_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(LIBSELINUX_MAKE_OPTS) DESTDIR=$(TARGET_DIR) \\\n\t\t$(LIBSELINUX_MAKE_INSTALL_TARGETS)\n\tif ! grep -q \"selinuxfs\" $(TARGET_DIR)/etc/fstab; then \\\n\t\techo \"none /sys/fs/selinux selinuxfs noauto 0 0\" >> $(TARGET_DIR)/etc/fstab ; fi\nendef\n\nHOST_LIBSELINUX_DEPENDENCIES = \\\n\thost-libsepol host-pcre host-swig host-python3\n\nHOST_LIBSELINUX_MAKE_OPTS = \\\n\t$(HOST_CONFIGURE_OPTS) \\\n\tPREFIX=$(HOST_DIR) \\\n\tSHLIBDIR=$(HOST_DIR)/lib \\\n\tLDFLAGS=\"$(HOST_LDFLAGS) -lpcre -lpthread\" \\\n\t$(HOST_PKG_PYTHON_DISTUTILS_ENV) \\\n\tPYTHON=python$(PYTHON3_VERSION_MAJOR)\n\ndefine HOST_LIBSELINUX_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE1) -C $(@D) \\\n\t\t$(HOST_LIBSELINUX_MAKE_OPTS) all\n\t# Generate python interface wrapper\n\t$(HOST_MAKE_ENV) $(MAKE1) -C $(@D) \\\n\t\t$(HOST_LIBSELINUX_MAKE_OPTS) swigify pywrap\nendef\n\ndefine HOST_LIBSELINUX_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(HOST_LIBSELINUX_MAKE_OPTS) install\n\t# Install python interface wrapper\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(HOST_LIBSELINUX_MAKE_OPTS) install-pywrap\nendef\n\ndefine LIBSELINUX_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_AUDIT)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_DEFAULT_SECURITY_SELINUX)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_INET)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NET)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_NETWORK)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_SELINUX)\n\t$(call KCONFIG_SET_OPT,CONFIG_LSM,\"selinux\")\n\t$(if $(BR2_TARGET_ROOTFS_EROFS),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_EROFS_FS_XATTR)\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_EROFS_FS_SECURITY))\n\t$(if $(BR2_TARGET_ROOTFS_EXT2),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_EXT2_FS_XATTR)\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_EXT2_FS_SECURITY))\n\t$(if $(BR2_TARGET_ROOTFS_EXT2_3),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_EXT3_FS_SECURITY))\n\t$(if $(BR2_TARGET_ROOTFS_EXT2_4),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_EXT4_FS_SECURITY))\n\t$(if $(BR2_TARGET_ROOTFS_F2FS),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_F2FS_FS_XATTR)\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_F2FS_FS_SECURITY))\n\t$(if $(BR2_TARGET_ROOTFS_JFFS2),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_JFS_SECURITY))\n\t$(if $(BR2_TARGET_ROOTFS_SQUASHFS),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_SQUASHFS_XATTR))\n\t$(if $(BR2_TARGET_ROOTFS_UBIFS),\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_UBIFS_FS_XATTR)\n\t\t$(call KCONFIG_ENABLE_OPT,CONFIG_UBIFS_FS_SECURITY))\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/libsemanage/Config.in",
    "content": "config BR2_PACKAGE_LIBSEMANAGE\n\tbool \"libsemanage\"\n\tdepends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_AUDIT\n\tselect BR2_PACKAGE_LIBSELINUX\n\tselect BR2_PACKAGE_BZIP2\n\thelp\n\t  libsemanage is the policy management library. It uses\n\t  libsepol for binary policy manipulation and libselinux for\n\t  interacting with the SELinux system. It also exec's helper\n\t  programs for loading policy and for checking whether the\n\t  file_contexts configuration is valid (load_policy and\n\t  setfiles from policycoreutils) presently, although this may\n\t  change at least for the bootstrapping case (for rpm).\n\n\t  http://selinuxproject.org/page/Main_Page\n\ncomment \"libsemanage needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libsemanage/libsemanage.hash",
    "content": "# From: https://github.com/SELinuxProject/selinux/wiki/Releases\nsha256 d722a55ca4fe2d4e2b30527720db657e6238b28079e69e2e4affeb8e733ee511 libsemanage-3.2.tar.gz\n\n# Hash for license file\nsha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING\n"
  },
  {
    "path": "package/libsemanage/libsemanage.mk",
    "content": "################################################################################\n#\n# libsemanage\n#\n################################################################################\n\nLIBSEMANAGE_VERSION = 3.2\nLIBSEMANAGE_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(LIBSEMANAGE_VERSION)\nLIBSEMANAGE_LICENSE = LGPL-2.1+\nLIBSEMANAGE_LICENSE_FILES = COPYING\nLIBSEMANAGE_DEPENDENCIES = host-bison host-flex audit libselinux bzip2\nLIBSEMANAGE_CPE_ID_VENDOR = selinuxproject\nLIBSEMANAGE_INSTALL_STAGING = YES\n\nLIBSEMANAGE_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS)\n\ndefine LIBSEMANAGE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSEMANAGE_MAKE_OPTS) all\nendef\n\ndefine LIBSEMANAGE_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSEMANAGE_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install\nendef\n\ndefine LIBSEMANAGE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSEMANAGE_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install\nendef\n\nHOST_LIBSEMANAGE_DEPENDENCIES = \\\n\thost-bison \\\n\thost-audit \\\n\thost-libsepol \\\n\thost-libselinux \\\n\thost-bzip2 \\\n\thost-swig \\\n\thost-python3\n\nHOST_LIBSEMANAGE_MAKE_OPTS += \\\n\t$(HOST_CONFIGURE_OPTS) \\\n\tPREFIX=$(HOST_DIR) \\\n\tSWIG_LIB=\"$(HOST_DIR)/share/swig/$(SWIG_VERSION)/\" \\\n\tDEFAULT_SEMANAGE_CONF_LOCATION=$(HOST_DIR)/etc/selinux/semanage.conf \\\n\tPYINC=\"-I$(HOST_DIR)/include/python$(PYTHON3_VERSION_MAJOR)/\" \\\n\tPYTHONLIBDIR=\"$(HOST_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)/\" \\\n\tPYLIBVER=\"python$(PYTHON3_VERSION_MAJOR)\"\n\ndefine HOST_LIBSEMANAGE_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBSEMANAGE_MAKE_OPTS) all\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBSEMANAGE_MAKE_OPTS) swigify pywrap\nendef\n\ndefine HOST_LIBSEMANAGE_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBSEMANAGE_MAKE_OPTS) install\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBSEMANAGE_MAKE_OPTS) install-pywrap\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/libsepol/0001-support-static-only.patch",
    "content": "From 2140db697c7f1da2a0a3f7bbcb14c1a0dade84e5 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <aduskett@gmail.com>\nDate: Mon, 9 Oct 2017 16:28:12 -0400\nSubject: [PATCH] Add support for static-only build\n\nInstead of unconditionally building shared libraries, this patch\nimproves the libsepol build system with a \"STATIC\" variable, which\nwhen defined to some non-empty value, will disable the build of shared\nlibraries. It allows to support cases where the target architecture\ndoes not have support for shared libraries.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Update for 2.8]\n---\n src/Makefile | 13 ++++++++++---\n 1 file changed, 10 insertions(+), 3 deletions(-)\n\ndiff -durNw libsepol-2.7.orig/src/Makefile libsepol-2.7/src/Makefile\n--- libsepol-2.7.orig/src/Makefile\t2018-01-15 21:07:51.285183415 +0100\n+++ libsepol-2.7/src/Makefile\t2018-01-15 21:08:56.515182717 +0100\n@@ -39,7 +39,12 @@\n LN=gln\n endif\n \n-all: $(LIBA) $(LIBSO) $(LIBPC)\n+ALL_TARGETS = $(LIBA) $(LIBPC)\n+ifeq ($(STATIC),)\n+ALL_TARGETS += $(LIBSO)\n+endif\n+\n+all: $(ALL_TARGETS)\n \n \n $(LIBA):  $(OBJS)\n@@ -81,8 +86,10 @@\n install: all\n\ttest -d $(DESTDIR)$(LIBDIR) || install -m 755 -d $(DESTDIR)$(LIBDIR)\n\tinstall -m 644 $(LIBA) $(DESTDIR)$(LIBDIR)\n+ifeq ($(STATIC),)\n\ttest -d $(DESTDIR)$(SHLIBDIR) || install -m 755 -d $(DESTDIR)$(SHLIBDIR)\n\tinstall -m 755 $(LIBSO) $(DESTDIR)$(SHLIBDIR)\n+endif\n\ttest -d $(DESTDIR)$(LIBDIR)/pkgconfig || install -m 755 -d $(DESTDIR)$(LIBDIR)/pkgconfig\n\tinstall -m 644 $(LIBPC) $(DESTDIR)$(LIBDIR)/pkgconfig\n\t$(LN) -sf --relative $(DESTDIR)$(SHLIBDIR)/$(LIBSO) $(DESTDIR)$(LIBDIR)/$(TARGET)\n"
  },
  {
    "path": "package/libsepol/Config.in",
    "content": "config BR2_PACKAGE_LIBSEPOL\n\tbool \"libsepol\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # pthread\n\thelp\n\t  Libsepol is the binary policy manipulation library. It doesn't\n\t  depend upon or use any of the other SELinux components.\n\n\t  http://selinuxproject.org/page/Main_Page\n\nif BR2_PACKAGE_LIBSEPOL\n\nconfig BR2_PACKAGE_LIBSEPOL_POLICY_VERSION\n\tint \"Policy version\"\n\tdefault 33 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8\n\tdefault 32 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5\n\tdefault 31 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13\n\tdefault 30 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3\n\tdefault 29 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n\tdefault 28 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5\n\tdefault 26 if BR2_TOOLCHAIN_HEADERS_AT_LEAST_2_6\n\tdefault 25\n\thelp\n\t  The maximum SELinux policy version your kernel supports.\n\n\t  Here's a handy table to help you choose:\n\t  kernel version   SElinux policy max version\n\t  < 2.6.x          25\n\t  >= 2.6 < 3.5     26\n\t  >= 3.5 < 3.14    28 (27 and 28 were added at the same time)\n\t  >= 3.14 < 4.3    29\n\t  >= 4.3 < 4.13    30\n\t  >= 4.13 < 5.5    31\n\t  >= 5.5 < 5.8     32\n\t  >= 5.8           33\n\nendif\n\ncomment \"libsepol needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libsepol/libsepol.hash",
    "content": "# From: https://github.com/SELinuxProject/selinux/wiki/Releases\nsha256  dfc7f662af8000116e56a01de6a0394ed79be1b34b999e551346233c5dd19508  libsepol-3.2.tar.gz\n\n# Hash for license file\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  COPYING\n"
  },
  {
    "path": "package/libsepol/libsepol.mk",
    "content": "################################################################################\n#\n# libsepol\n#\n################################################################################\n\nLIBSEPOL_VERSION = 3.2\nLIBSEPOL_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(LIBSEPOL_VERSION)\nLIBSEPOL_LICENSE = LGPL-2.1+\nLIBSEPOL_LICENSE_FILES = COPYING\nLIBSEPOL_CPE_ID_VENDOR = selinuxproject\n\nLIBSEPOL_INSTALL_STAGING = YES\nLIBSEPOL_DEPENDENCIES = host-flex\nHOST_LIBSEPOL_DEPENDENCIES = $(BR2_COREUTILS_HOST_DEPENDENCY) host-flex\n\nLIBSEPOL_MAKE_FLAGS = $(TARGET_CONFIGURE_OPTS)\n\nifeq ($(BR2_STATIC_LIBS),y)\nLIBSEPOL_MAKE_FLAGS += STATIC=1\nendif\n\ndefine LIBSEPOL_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSEPOL_MAKE_FLAGS)\nendef\n\n# Set SHLIBDIR to /usr/lib so it has the same value than LIBDIR, as a result\n# we won't have to use a relative path in 0002-revert-ln-relative.patch\ndefine LIBSEPOL_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install $(LIBSEPOL_MAKE_FLAGS) \\\n\t\tDESTDIR=$(STAGING_DIR) SHLIBDIR=/usr/lib\nendef\n\ndefine LIBSEPOL_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install $(LIBSEPOL_MAKE_FLAGS) \\\n\t\tDESTDIR=$(TARGET_DIR) SHLIBDIR=/usr/lib\nendef\n\nHOST_LIBSEPOL_MAKE_ENV = \\\n\t$(HOST_MAKE_ENV) \\\n\tPREFIX=$(HOST_DIR) \\\n\tSHLIBDIR=$(HOST_DIR)/lib\n\ndefine HOST_LIBSEPOL_BUILD_CMDS\n\t$(HOST_LIBSEPOL_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CONFIGURE_OPTS)\nendef\n\ndefine HOST_LIBSEPOL_INSTALL_CMDS\n\t$(HOST_LIBSEPOL_MAKE_ENV) $(MAKE) -C $(@D) install $(HOST_CONFIGURE_OPTS)\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/libserial/0001-SerialPort.cpp-fix-build-when-size_t-is-an-unsigned-.patch",
    "content": "From 2e4cf095afdcf843e93d1bdea9dbd961558f09bd Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 13 Jan 2019 21:01:19 +0100\nSubject: [PATCH] SerialPort.cpp: fix build when size_t is an unsigned int\n\nsize_t can be defined as an unsigned int instead of long unsigned int so\nreplace 1UL to (size_t)1 when calling max function\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/crayzeewulf/libserial/pull/126]\n---\n src/SerialPort.cpp | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/src/SerialPort.cpp b/src/SerialPort.cpp\nindex e354fcb..75e762e 100644\n--- a/src/SerialPort.cpp\n+++ b/src/SerialPort.cpp\n@@ -2208,7 +2208,7 @@ namespace LibSerial\n \n         // Local variables.\n         size_t number_of_bytes_read = 0 ;\n-        size_t number_of_bytes_remaining = std::max(numberOfBytes, 1UL) ;\n+        size_t number_of_bytes_remaining = std::max(numberOfBytes, (size_t)1) ;\n         size_t maximum_number_of_bytes = dataBuffer.max_size() ;\n         \n         // Clear the data buffer and reserve enough space in the buffer to store the incoming data.\n@@ -2302,7 +2302,7 @@ namespace LibSerial\n \n         // Local variables.\n         size_t number_of_bytes_read = 0 ;\n-        size_t number_of_bytes_remaining = std::max(numberOfBytes, 1UL) ;\n+        size_t number_of_bytes_remaining = std::max(numberOfBytes, (size_t)1) ;\n         size_t maximum_number_of_bytes = dataString.max_size() ;\n         \n         // Clear the data buffer and reserve enough space in the buffer to store the incoming data.\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/libserial/0002-SerialPort.cpp-don-t-use-high-baudrates-when-not-ava.patch",
    "content": "From fc0f031563146b91d255c752a61624f6dd3c14d4 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 15 Jan 2019 08:33:27 +0100\nSubject: [PATCH] SerialPort.cpp: don't use high baudrates when not available\n\nOn certain architectures (namely Sparc), the maximum baud rate exposed\nby the kernel headers is B2000000. Therefore, the current libserial\ncode doesn't build for the Sparc and Sparc64 architectures due to\nthis.\n\nIn order to address this problem, this patch tests the value of\n__MAX_BAUD. If it's higher than B2000000 then we assume we're on an\narchitecture that supports all baud rates up to B4000000. Otherwise,\nwe simply don't support the baud rates above B2000000.\n\nFixes build failures such as:\n\nSerialPort.cpp: In member function 'int LibSerial::SerialPort::Implementation::GetBitRate(const LibSerial::BaudRate&) const':\nSerialPort.cpp:1226:14: error: 'BAUD_2000000' is not a member of 'LibSerial::BaudRate'\n         case BaudRate::BAUD_2000000:\n\nFixes:\n - http://autobuild.buildroot.org/results/63ba95b6786464fa8e75af64593010df84530079\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/crayzeewulf/libserial/pull/127]\n---\n src/SerialPort.cpp | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/src/SerialPort.cpp b/src/SerialPort.cpp\nindex e3240eb..18daac0 100644\n--- a/src/SerialPort.cpp\n+++ b/src/SerialPort.cpp\n@@ -1223,6 +1223,7 @@ namespace LibSerial\n             baud_rate_as_int = 1500000 ;\n             break ;\n \n+#if __MAX_BAUD > B2000000\n         case BaudRate::BAUD_2000000:\n             baud_rate_as_int = 2000000 ;\n             break ;\n@@ -1242,6 +1243,7 @@ namespace LibSerial\n         case BaudRate::BAUD_4000000:\n             baud_rate_as_int = 4000000 ;\n             break ;\n+#endif /* __MAX_BAUD */\n         default:\n             // If an incorrect baud rate was specified, throw an exception.\n             throw std::runtime_error(ERR_MSG_INVALID_BAUD_RATE) ;\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/libserial/Config.in",
    "content": "config BR2_PACKAGE_LIBSERIAL\n\tbool \"libserial\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # boost\n\tdepends on BR2_USE_WCHAR # boost\n\tselect BR2_PACKAGE_BOOST\n\thelp\n\t  Simplified serial port programming in C++ under POSIX\n\t  operating systems.\n\n\t  http://libserial.sourceforge.net/\n\ncomment \"libserial needs a toolchain w/ C++, gcc >= 5, threads, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/libserial/libserial.hash",
    "content": "# Locally calculated\nsha256 063142d6bfe08898316e9a6055f2ddeedef56de06f7cfc8dcdfecc6efabf4bdd libserial-1.0.0.tar.gz\nsha256 c42fdfe17c192cfdb900e22d40ef246db1b473f99165e405eda62b41be27f4bf LICENSE.txt\n"
  },
  {
    "path": "package/libserial/libserial.mk",
    "content": "################################################################################\n#\n# libserial\n#\n################################################################################\n\nLIBSERIAL_VERSION = 1.0.0\nLIBSERIAL_SITE = $(call github,crayzeewulf,libserial,v$(LIBSERIAL_VERSION))\nLIBSERIAL_INSTALL_STAGING = YES\nLIBSERIAL_LICENSE = BSD-3-Clause\nLIBSERIAL_LICENSE_FILES = LICENSE.txt\nLIBSERIAL_DEPENDENCIES = boost\n# From git\nLIBSERIAL_AUTORECONF = YES\n\nLIBSERIAL_CONF_ENV = ac_cv_prog_DOCBOOK2PDF=no\nLIBSERIAL_CONF_OPTS = \\\n\t--disable-tests \\\n\t--without-python\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libserialport/0001-uclinux-detection.patch",
    "content": "From faab9aa5879fab93556b7a3a6f24070eeb3cbf15 Mon Sep 17 00:00:00 2001\nFrom: Paul Cercueil <paul.cercueil@analog.com>\nDate: Mon, 29 Aug 2016 11:11:01 +0200\nSubject: [PATCH] Fix Linux files not compiled in with a toolchain for ucLinux\n\nSigned-off-by: Paul Cercueil <paul.cercueil@analog.com>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex f6b66e8..de6f5b9 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -74,7 +74,7 @@ AC_DEFINE_UNQUOTED([SP_LIB_VERSION_REVISION], [$SP_LIB_VERSION_REVISION], [.])\n AC_DEFINE_UNQUOTED([SP_LIB_VERSION_AGE], [$SP_LIB_VERSION_AGE], [.])\n AC_DEFINE_UNQUOTED([SP_LIB_VERSION_STRING], [\"$SP_LIB_VERSION\"], [.])\n \n-AM_CONDITIONAL([LINUX], [test -z \"${host_os##linux*}\"])\n+AM_CONDITIONAL([LINUX], [test -z \"${host_os##linux*}\" || test -z \"${host_os##uclinux*}\"])\n AM_CONDITIONAL([WIN32], [test -z \"${host_os##mingw*}\" || test -z \"${host_os##cygwin*}\"])\n AM_CONDITIONAL([MACOSX], [test -z \"${host_os##darwin*}\"])\n AM_CONDITIONAL([FREEBSD], [test -z \"${host_os##freebsd*}\"])\n-- \n2.8.1\n\n"
  },
  {
    "path": "package/libserialport/Config.in",
    "content": "config BR2_PACKAGE_LIBSERIALPORT\n\tbool \"libserialport\"\n\thelp\n\t  Libserialport is a minimal, cross-platform shared\n\t  library written in C that is intended to take care\n\t  of the OS-specific details when writing software\n\t  that uses serial ports.\n\n\t  http://sigrok.org/wiki/Libserialport\n"
  },
  {
    "path": "package/libserialport/libserialport.hash",
    "content": "# Locally computed\nsha256  4a2af9d9c3ff488e92fb75b4ba38b35bcf9b8a66df04773eba2a7bbf1fa7529d  libserialport-0.1.1.tar.gz\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING\n"
  },
  {
    "path": "package/libserialport/libserialport.mk",
    "content": "################################################################################\n#\n# libserialport\n#\n################################################################################\n\nLIBSERIALPORT_VERSION = 0.1.1\nLIBSERIALPORT_SITE = http://sigrok.org/download/source/libserialport\nLIBSERIALPORT_LICENSE = LGPL-3.0+\nLIBSERIALPORT_LICENSE_FILES = COPYING\nLIBSERIALPORT_INSTALL_STAGING = YES\nLIBSERIALPORT_DEPENDENCIES = host-pkgconf\nLIBSERIALPORT_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsexy/Config.in",
    "content": "config BR2_PACKAGE_LIBSEXY\n\tbool \"libsexy\"\n\tdepends on BR2_PACKAGE_LIBGTK2\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  libsexy is a collection of GTK+ widgets that extend the\n\t  functionality of such standard widgets as GtkEntry and\n\t  GtkLabel by subclassing them and working around the\n\t  limitations of the widgets.\n\n\t  https://blog.chipx86.com/tag/libsexy/\n"
  },
  {
    "path": "package/libsexy/libsexy.hash",
    "content": "# Locally calculated\nsha256  8c4101a8cda5fccbba85ba1a15f46f2cf75deaa8b3c525ce5b135b9e1a8fe49e  libsexy-0.1.11.tar.gz\nsha256  a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7  COPYING\n"
  },
  {
    "path": "package/libsexy/libsexy.mk",
    "content": "################################################################################\n#\n# libsexy\n#\n################################################################################\n\nLIBSEXY_VERSION = 0.1.11\nLIBSEXY_SITE = http://releases.chipx86.com/libsexy/libsexy\nLIBSEXY_DEPENDENCIES = libgtk2 libxml2\nLIBSEXY_INSTALL_STAGING = YES\nLIBSEXY_LICENSE = LGPL-2.1+\nLIBSEXY_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsha1/Config.in",
    "content": "config BR2_PACKAGE_LIBSHA1\n\tbool \"libsha1\"\n\thelp\n\t  libsha1 is a tiny library providing SHA1 implementation,\n\t  created for facilitating X server compilation on devices\n\t  when larger libraries containing SHA1 implementations\n\t  (OpenSSL, Mozilla NSS) are not needed.\n\n\t  https://github.com/dottedmag/libsha1\n"
  },
  {
    "path": "package/libsha1/libsha1.hash",
    "content": "# Locally calculated\nsha256 ef4c75007ac41c3dc09e0225943c789ba2b9c632a6cd7b548e0519477ac2f768  libsha1-0.3.tar.gz\nsha256 4c387926596bfeacc5b72ebeb96ab36c299a07568e18592c727a6c11dd512c20  COPYING\n"
  },
  {
    "path": "package/libsha1/libsha1.mk",
    "content": "################################################################################\n#\n# libsha1\n#\n################################################################################\n\nLIBSHA1_VERSION = 0.3\nLIBSHA1_SITE = $(call github,dottedmag,libsha1,$(LIBSHA1_VERSION))\nLIBSHA1_LICENSE = BSD-3-Clause or GPL\nLIBSHA1_LICENSE_FILES = COPYING\n\nLIBSHA1_INSTALL_STAGING = YES\n\n# We're getting the source code from GitHub, so there is no generated\n# configure script in the tarball.\nLIBSHA1_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libshairplay/Config.in",
    "content": "config BR2_PACKAGE_LIBSHAIRPLAY\n\tbool \"libshairplay\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # avahi\n\tdepends on !BR2_STATIC_LIBS # avahi\n\tselect BR2_PACKAGE_AVAHI\n\tselect BR2_PACKAGE_AVAHI_DAEMON\n\tselect BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY # runtime\n\thelp\n\t  libshairplay is a client library that emulates an airplay\n\t  server.\n\n\t  https://github.com/juhovh/shairplay\n\ncomment \"libshairplay needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libshairplay/libshairplay.hash",
    "content": "# Locally computed\nsha256  49ac0e0470ec6367f720c7b79a09165138f57b60f5949a2d9c38be5823d13294  libshairplay-ce80e005908f41d0e6fde1c4a21e9cb8ee54007b.tar.gz\nsha256  0ac7d61c52aff5717c02250ca0adf0ef35019e2c0838a3479b8fce597aea6fde  LICENSE\n"
  },
  {
    "path": "package/libshairplay/libshairplay.mk",
    "content": "################################################################################\n#\n# libshairplay\n#\n################################################################################\n\nLIBSHAIRPLAY_VERSION = ce80e005908f41d0e6fde1c4a21e9cb8ee54007b\nLIBSHAIRPLAY_SITE = $(call github,juhovh,shairplay,$(LIBSHAIRPLAY_VERSION))\nLIBSHAIRPLAY_INSTALL_STAGING = YES\nLIBSHAIRPLAY_AUTORECONF = YES\nLIBSHAIRPLAY_LICENSE = MIT, BSD-3-Clause, LGPL-2.1+\nLIBSHAIRPLAY_LICENSE_FILES = LICENSE\nLIBSHAIRPLAY_DEPENDENCIES = host-pkgconf $(if $(BR2_PACKAGE_LIBAO),libao)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libshout/0001-configure.ac-add-an-option-to-disable-tools.patch",
    "content": "From 148b56bf894192cef6dd133715e295260b934a71 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 5 Mar 2021 15:50:32 +0100\nSubject: [PATCH] configure.ac: add an option to disable tools\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.xiph.org/xiph/icecast-libshout/-/issues/2331]\n---\n Makefile.am  | 5 ++++-\n configure.ac | 5 +++++\n 2 files changed, 9 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex ea855cf..79241f1 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -3,10 +3,13 @@\n AUTOMAKE_OPTIONS = 1.6 foreign\n ACLOCAL_AMFLAGS = -I m4\n \n-SUBDIRS = include src doc win32 tools\n+SUBDIRS = include src doc win32\n if HAVE_EXAMPLES\n SUBDIRS += examples\n endif\n+if HAVE_TOOLS\n+SUBDIRS += tools\n+endif\n \n EXTRA_DIST = INSTALL m4/shout.m4 m4/acx_pthread.m4 \\\n \tm4/ogg.m4 m4/vorbis.m4 m4/xiph_compiler.m4 m4/xiph_net.m4 \\\ndiff --git a/configure.ac b/configure.ac\nindex 264b9b0..34f971c 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -100,6 +100,11 @@ AC_ARG_ENABLE([examples],\n   AS_HELP_STRING([--disable-examples],[Do not build example code]))\n AM_CONDITIONAL([HAVE_EXAMPLES],[test \"${enable_examples}\" != \"no\"])\n \n+dnl Allow tools not to be build\n+AC_ARG_ENABLE([tools],\n+  AS_HELP_STRING([--disable-tools],[Do not build tools]))\n+AM_CONDITIONAL([HAVE_TOOLS],[test \"${enable_tools}\" != \"no\"])\n+\n dnl Module checks\n XIPH_NET\n \n-- \n2.30.0\n\n"
  },
  {
    "path": "package/libshout/Config.in",
    "content": "config BR2_PACKAGE_LIBSHOUT\n\tbool \"libshout\"\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_LIBVORBIS\n\thelp\n\t  Libshout is a library for communicating with and sending data\n\t  to an icecast server. It handles the socket connection, the\n\t  timing of the data, and prevents bad data from getting to the\n\t  icecast server.\n\n\t  http://icecast.org/download/\n"
  },
  {
    "path": "package/libshout/libshout.hash",
    "content": "# From https://ftp.osuosl.org/pub/xiph/releases/libshout/SHA512SUMS\nsha512  290844185da16961f03434d3e341573dd6cb0139e5fa81902903021b641382d2629302d7c356bc591b35656754e07f4e44a8d9e782e092b17a051b9ae8f54341  libshout-2.4.5.tar.gz\n\n# From https://ftp.osuosl.org/pub/xiph/releases/libshout/SHA256SUMS\nsha256  d9e568668a673994ebe3f1eb5f2bee06e3236a5db92b8d0c487e1c0f886a6890  libshout-2.4.5.tar.gz\n\n# Hash for license file\nsha256  7a4436f9ec37603356791c87de3bc444989befd2682d29efb3d97604e04c1852  COPYING\n"
  },
  {
    "path": "package/libshout/libshout.mk",
    "content": "################################################################################\n#\n# libshout\n#\n################################################################################\n\nLIBSHOUT_VERSION = 2.4.5\nLIBSHOUT_SITE = https://downloads.xiph.org/releases/libshout\nLIBSHOUT_LICENSE = LGPL-2.0+\nLIBSHOUT_LICENSE_FILES = COPYING\nLIBSHOUT_INSTALL_STAGING = YES\nLIBSHOUT_DEPENDENCIES = host-pkgconf libogg libvorbis\n# We're patching configure.ac\nLIBSHOUT_AUTORECONF = YES\nLIBSHOUT_CONF_OPTS = \\\n\t--disable-examples \\\n\t--disable-tools\n\nifeq ($(BR2_PACKAGE_LIBTHEORA),y)\nLIBSHOUT_CONF_OPTS += --enable-theora\nLIBSHOUT_DEPENDENCIES += libtheora\nelse\nLIBSHOUT_CONF_OPTS += --disable-theora\nendif\n\nifeq ($(BR2_PACKAGE_SPEEX),y)\nLIBSHOUT_CONF_OPTS += --enable-speex\nLIBSHOUT_DEPENDENCIES += speex\nelse\nLIBSHOUT_CONF_OPTS += --disable-speex\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBSHOUT_CONF_OPTS += --with-openssl\nLIBSHOUT_DEPENDENCIES += openssl\nelse\nLIBSHOUT_CONF_OPTS += --without-openssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsidplay2/0001-sidplay2-libs-2.1.1.patch",
    "content": "From 38493fceb39ac33e12c9c69d78f5584413b479f4 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Wed, 1 Mar 2017 10:03:40 +0100\nSubject: [PATCH] Various fixes to compile libsidplay2 with newer gcc compilers\n\nDownloaded from\nhttp://tsubasa.googlecode.com/svn/trunk/tsubasa/sidplay2-libs/sidplay2-libs-2.1.1.diff\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Thomas: adjusted to avoid the need to autoreconf, which doesn't work\nproperly on this package.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n builders/hardsid-builder/src/hardsid-builder.cpp |  1 +\n builders/resid-builder/src/resid-builder.cpp     |  1 +\n builders/resid-builder/src/resid.cpp             |  1 +\n configure                                        |  2 +-\n libsidplay/configure                             |  5 +++--\n libsidplay/include/sidplay/SmartPtr.h            | 28 ++++++++++++------------\n libsidplay/include/sidplay/sidendian.h           | 18 +++++++++------\n libsidutils/include/sidplay/utils/SidUsage.h     |  2 +-\n 8 files changed, 33 insertions(+), 25 deletions(-)\n\ndiff --git a/builders/hardsid-builder/src/hardsid-builder.cpp b/builders/hardsid-builder/src/hardsid-builder.cpp\nindex f54d0a9..9375e40 100644\n--- a/builders/hardsid-builder/src/hardsid-builder.cpp\n+++ b/builders/hardsid-builder/src/hardsid-builder.cpp\n@@ -47,6 +47,7 @@\n  ***************************************************************************/\n \n #include <stdio.h>\n+#include <cstring>\n #include \"config.h\"\n \n #ifdef HAVE_EXCEPTIONS\ndiff --git a/builders/resid-builder/src/resid-builder.cpp b/builders/resid-builder/src/resid-builder.cpp\nindex e6e4eaa..4c7650f 100644\n--- a/builders/resid-builder/src/resid-builder.cpp\n+++ b/builders/resid-builder/src/resid-builder.cpp\n@@ -37,6 +37,7 @@\n  ***************************************************************************/\n \n #include <stdio.h>\n+#include <cstring>\n \n #include \"config.h\"\n #ifdef HAVE_EXCEPTIONS\ndiff --git a/builders/resid-builder/src/resid.cpp b/builders/resid-builder/src/resid.cpp\nindex 8c27850..d3123c5 100644\n--- a/builders/resid-builder/src/resid.cpp\n+++ b/builders/resid-builder/src/resid.cpp\n@@ -16,6 +16,7 @@\n  *                                                                         *\n  ***************************************************************************/\n \n+#include <cstring>\n #include \"config.h\"\n \n #ifdef HAVE_EXCEPTIONS\ndiff --git a/configure b/configure\nindex 1200eaf..77948b4 100755\n--- a/configure\n+++ b/configure\n@@ -1227,7 +1227,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu\n \n #Variables\n pwd=`pwd`\n-builders='${libdir}'/sidplay/builders\n+builders='${libdir}'/\n ac_configure_args=\"$ac_configure_args --disable-library-checks\"\n \n ac_aux_dir=\ndiff --git a/libsidplay/configure b/libsidplay/configure\nindex 05a8ea6..3d93956 100755\n--- a/libsidplay/configure\n+++ b/libsidplay/configure\n@@ -23466,8 +23466,9 @@ _ACEOF\n cat confdefs.h >>conftest.$ac_ext\n cat >>conftest.$ac_ext <<_ACEOF\n /* end confdefs.h.  */\n-#include <fstream.h>\n-             #include <iomanip.h>\n+#include <fstream>\n+             #include <iomanip>\n+             using namespace std;\n int\n main ()\n {\ndiff --git a/libsidplay/include/sidplay/SmartPtr.h b/libsidplay/include/sidplay/SmartPtr.h\nindex c0cbb1a..15efd10 100644\n--- a/libsidplay/include/sidplay/SmartPtr.h\n+++ b/libsidplay/include/sidplay/SmartPtr.h\n@@ -17,16 +17,16 @@ class SmartPtrBase_sidtt\n \t\tdoFree = bufOwner;\n \t\tif ( bufferLen >= 1 )\n \t\t{\n-\t\t\tpBufCurrent = ( bufBegin = buffer );\n-\t\t\tbufEnd = bufBegin + bufferLen;\n-\t\t\tbufLen = bufferLen;\n-\t\t\tstatus = true;\n+\t\t\tthis->pBufCurrent = ( this->bufBegin = buffer );\n+\t\t\tthis->bufEnd = this->bufBegin + bufferLen;\n+\t\t\tthis->bufLen = bufferLen;\n+\t\t\tthis->status = true;\n \t\t}\n \t\telse\n \t\t{\n-\t\t\tpBufCurrent = ( bufBegin = ( bufEnd = 0 ));\n-\t\t\tbufLen = 0;\n-\t\t\tstatus = false;\n+\t\t\tthis->pBufCurrent = ( this->bufBegin = ( this->bufEnd = 0 ));\n+\t\t\tthis->bufLen = 0;\n+\t\t\tthis->status = false;\n \t\t}\n \t}\n \t\n@@ -211,16 +211,16 @@ class SmartPtr_sidtt : public SmartPtrBase_sidtt<T>\n \t{\n \t\tif ( bufferLen >= 1 )\n \t\t{\n-\t\t\tpBufCurrent = ( bufBegin = buffer );\n-\t\t\tbufEnd = bufBegin + bufferLen;\n-\t\t\tbufLen = bufferLen;\n-\t\t\tstatus = true;\n+\t\t\tthis->pBufCurrent = ( this->bufBegin = buffer );\n+\t\t\tthis->bufEnd = this->bufBegin + bufferLen;\n+\t\t\tthis->bufLen = bufferLen;\n+\t\t\tthis->status = true;\n \t\t}\n \t\telse\n \t\t{\n-\t\t\tpBufCurrent = bufBegin = bufEnd = 0;\n-\t\t\tbufLen = 0;\n-\t\t\tstatus = false;\n+\t\t\tthis->pBufCurrent = this->bufBegin = this->bufEnd = 0;\n+\t\t\tthis->bufLen = 0;\n+\t\t\tthis->status = false;\n \t\t}\n \t}\n };\ndiff --git a/libsidplay/include/sidplay/sidendian.h b/libsidplay/include/sidplay/sidendian.h\nindex 9fa8582..6115282 100644\n--- a/libsidplay/include/sidplay/sidendian.h\n+++ b/libsidplay/include/sidplay/sidendian.h\n@@ -16,6 +16,10 @@\n  ***************************************************************************/\n /***************************************************************************\n  *  $Log: sidendian.h,v $\n+ *  Revision 1.6  2005/11/20 11:02:06  s_a_white\n+ *  Work around for bug in gcc 4 (optimiser breaks if variable never has a\n+ *  direct assignment).\n+ *\n  *  Revision 1.5  2001/07/03 22:44:13  s_a_white\n  *  Added endian_16 to convert a 16 bit value to an array of 8s.\n  *\n@@ -141,7 +145,7 @@ inline void endian_16swap8 (uint_least16_t &word)\n // Convert high-byte and low-byte to 16-bit word.\n inline uint_least16_t endian_16 (uint8_t hi, uint8_t lo)\n {\n-    uint_least16_t word;\n+    uint_least16_t word = 0;\n     endian_16lo8 (word, lo);\n     endian_16hi8 (word, hi);\n     return word;\n@@ -165,7 +169,7 @@ inline void endian_16 (uint8_t ptr[2], uint_least16_t word)\n \n inline void endian_16 (char ptr[2], uint_least16_t word)\n {\n-\tendian_16 ((uint8_t *) ptr, word);\n+    endian_16 ((uint8_t *) ptr, word);\n }\n \n // Convert high-byte and low-byte to 16-bit little endian word.\n@@ -334,7 +338,7 @@ inline void endian_32swap16 (uint_least32_t &dword)\n // Swap word endian.\n inline void endian_32swap8 (uint_least32_t &dword)\n {\n-    uint_least16_t lo, hi;\n+    uint_least16_t lo = 0, hi = 0;\n     lo = endian_32lo16 (dword);\n     hi = endian_32hi16 (dword);\n     endian_16swap8 (lo);\n@@ -346,8 +350,8 @@ inline void endian_32swap8 (uint_least32_t &dword)\n // Convert high-byte and low-byte to 32-bit word.\n inline uint_least32_t endian_32 (uint8_t hihi, uint8_t hilo, uint8_t hi, uint8_t lo)\n {\n-    uint_least32_t dword;\n-    uint_least16_t word;\n+    uint_least32_t dword = 0;\n+    uint_least16_t word  = 0;\n     endian_32lo8  (dword, lo);\n     endian_32hi8  (dword, hi);\n     endian_16lo8  (word,  hilo);\n@@ -374,7 +378,7 @@ inline void endian_little32 (uint8_t ptr[4], uint_least32_t dword)\n     defined(SID_WORDS_LITTLEENDIAN)\n     *((uint_least32_t *) ptr) = dword;\n #else\n-    uint_least16_t word;\n+    uint_least16_t word = 0;\n     ptr[0] = endian_32lo8  (dword);\n     ptr[1] = endian_32hi8  (dword);\n     word   = endian_32hi16 (dword);\n@@ -401,7 +405,7 @@ inline void endian_big32 (uint8_t ptr[4], uint_least32_t dword)\n     defined(SID_WORDS_BIGENDIAN)\n     *((uint_least32_t *) ptr) = dword;\n #else\n-    uint_least16_t word;\n+    uint_least16_t word = 0;\n     word   = endian_32hi16 (dword);\n     ptr[1] = endian_16lo8  (word);\n     ptr[0] = endian_16hi8  (word);\ndiff --git a/libsidutils/include/sidplay/utils/SidUsage.h b/libsidutils/include/sidplay/utils/SidUsage.h\nindex 2afb0f3..0496eea 100755\n--- a/libsidutils/include/sidplay/utils/SidUsage.h\n+++ b/libsidutils/include/sidplay/utils/SidUsage.h\n@@ -33,7 +33,7 @@ struct sid2_usage_t: public sid_usage_t\n     uint_least16_t length;  // usage scan length\n \n     // Copy common parts of basic usage to extended usage.\n-    sid2_usage_t &sid2_usage_t::operator= (const sid_usage_t &usage)\n+    sid2_usage_t &operator= (const sid_usage_t &usage)\n     {\n         *((sid_usage_t *) this) = usage;\n         return *this;\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/libsidplay2/0002-pkg-config.patch",
    "content": "Include correct libdir in pkgconfig files\n\nDownloaded from\nhttps://sources.debian.net/src/sidplay-libs/2.1.1-14/debian/patches/pkg-config.patch/\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- sidplay-libs-2.1.1.orig/libsidplay/unix/libsidplay2.pc.in\n+++ sidplay-libs-2.1.1/libsidplay/unix/libsidplay2.pc.in\n@@ -7,5 +7,5 @@ builders=@builders@\n Name: @PACKAGE@\n Description: C64 cycle exact stereo sidplayer library.\n Version: @VERSION@\n-Libs: ${libdir}/libsidplay2.la\n+Libs: -L${libdir} -lsidplay2\n Cflags: -DHAVE_UNIX -I${includedir}\n--- sidplay-libs-2.1.1.orig/libsidutils/unix/libsidutils.pc.in\n+++ sidplay-libs-2.1.1/libsidutils/unix/libsidutils.pc.in\n@@ -6,5 +6,5 @@ includedir=@includedir@\n Name: @PACKAGE@\n Description: Utils for supporting the libsidplay2 library.\n Version: @VERSION@\n-Libs: ${libdir}/libsidutils.la\n+Libs: -L${libdir} -lsidutils\n Cflags: -DHAVE_UNIX -I${includedir}\n"
  },
  {
    "path": "package/libsidplay2/0003-gcc6.patch",
    "content": "Fix build with gcc6\n\ngcc6 triggers an error during build:\n\nxsid.cpp:101:1: error: narrowing conversion of ''\\200'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing]\n };\n ^\nxsid.cpp:101:1: error: narrowing conversion of ''\\224'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing]\nxsid.cpp:101:1: error: narrowing conversion of ''\\251'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing]\nxsid.cpp:101:1: error: narrowing conversion of ''\\274'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing]\nxsid.cpp:101:1: error: narrowing conversion of ''\\316'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing]\nxsid.cpp:101:1: error: narrowing conversion of ''\\341'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing]\nxsid.cpp:101:1: error: narrowing conversion of ''\\362'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing]\n\nTo fix the problem change the array type from int8_t to char as proposed\nby Khem Raj:\nhttp://lists.busybox.net/pipermail/buildroot/2016-August/169540.html\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr sidplay-libs-2.1.1.org/libsidplay/src/xsid/xsid.cpp sidplay-libs-2.1.1/libsidplay/src/xsid/xsid.cpp\n--- sidplay-libs-2.1.1.org/libsidplay/src/xsid/xsid.cpp\t2004-06-14 22:08:02.000000000 +0200\n+++ sidplay-libs-2.1.1/libsidplay/src/xsid/xsid.cpp\t2016-08-12 18:10:20.000000000 +0200\n@@ -94,7 +94,7 @@\n     '\\x08', '\\x19', '\\x2a', '\\x3b', '\\x4c', '\\x5d', '\\x6e', '\\x7f'\n };\n */\n-const int8_t XSID::sampleConvertTable[16] =\n+const char XSID::sampleConvertTable[16] =\n {\n     '\\x80', '\\x94', '\\xa9', '\\xbc', '\\xce', '\\xe1', '\\xf2', '\\x03',\n     '\\x1b', '\\x2a', '\\x3b', '\\x49', '\\x58', '\\x66', '\\x73', '\\x7f'\ndiff -uNr sidplay-libs-2.1.1.org/libsidplay/src/xsid/xsid.h sidplay-libs-2.1.1/libsidplay/src/xsid/xsid.h\n--- sidplay-libs-2.1.1.org/libsidplay/src/xsid/xsid.h\t2004-06-14 22:08:02.000000000 +0200\n+++ sidplay-libs-2.1.1/libsidplay/src/xsid/xsid.h\t2016-08-12 18:11:01.000000000 +0200\n@@ -238,7 +238,7 @@\n     uint8_t             sidData0x18;\n     bool                _sidSamples;\n     int8_t              sampleOffset;\n-    static const int8_t sampleConvertTable[16];\n+    static const char sampleConvertTable[16];\n     bool                wasRunning;\n \n private:\n"
  },
  {
    "path": "package/libsidplay2/Config.in",
    "content": "config BR2_PACKAGE_LIBSIDPLAY2\n\tbool \"libsidplay2\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Sidplay 2 is the second in the Sidplay series originally\n\t  developed by Michael Schwendt. This version is written by\n\t  Simon White and is cycle accurate for improved sound\n\t  reproduction. Sidplay 2 is capable of playing all C64 mono and\n\t  stereo file formats.\n\n\t  http://sourceforge.net/projects/sidplay2\n\ncomment \"libsidplay2 needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/libsidplay2/libsidplay2.hash",
    "content": "# From http://sourceforge.net/projects/sidplay2/files/sidplay2/sidplay-libs-2.1.1/\nsha1\t8af6350866edc30b0d331e075fa97292f6f645a5\tsidplay-libs-2.1.1.tar.gz\n# Locally computed\nsha256  b8a2f73f743dc1a51aff23f1aacbca4b868564db52496fa3c0caba755bfd1eaf  libsidplay/COPYING\n"
  },
  {
    "path": "package/libsidplay2/libsidplay2.mk",
    "content": "################################################################################\n#\n# libsidplay2\n#\n################################################################################\n\nLIBSIDPLAY2_VERSION = 2.1.1\nLIBSIDPLAY2_SOURCE = sidplay-libs-$(LIBSIDPLAY2_VERSION).tar.gz\nLIBSIDPLAY2_SITE = http://downloads.sourceforge.net/project/sidplay2/sidplay2/sidplay-libs-$(LIBSIDPLAY2_VERSION)\nLIBSIDPLAY2_LICENSE = GPL-2.0+\nLIBSIDPLAY2_LICENSE_FILES = libsidplay/COPYING\nLIBSIDPLAY2_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsigc/Config.in",
    "content": "config BR2_PACKAGE_LIBSIGC\n\tbool \"libsigc++\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  libsigc++ implements a typesafe callback system for standard\n\t  C++. It allows you to define signals and to connect those\n\t  signals to any callback function, either global or a member\n\t  function, regardless of whether it is static or virtual.\n\n\t  https://libsigcplusplus.github.io/libsigcplusplus/\n\ncomment \"libsigc++ needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/libsigc/libsigc.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/libsigc++/2.10/libsigc++-2.10.6.sha256sum\nsha256  dda176dc4681bda9d5a2ac1bc55273bdd381662b7a6d49e918267d13e8774e1b  libsigc++-2.10.6.tar.xz\n\n# Locally calculated\nsha256  5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509  COPYING\n"
  },
  {
    "path": "package/libsigc/libsigc.mk",
    "content": "################################################################################\n#\n# libsigc\n#\n################################################################################\n\nLIBSIGC_VERSION_MAJOR = 2.10\nLIBSIGC_VERSION = $(LIBSIGC_VERSION_MAJOR).6\nLIBSIGC_SOURCE = libsigc++-$(LIBSIGC_VERSION).tar.xz\nLIBSIGC_SITE = http://ftp.gnome.org/pub/GNOME/sources/libsigc++/$(LIBSIGC_VERSION_MAJOR)\nLIBSIGC_INSTALL_STAGING = YES\nLIBSIGC_LICENSE = LGPL-2.1+\nLIBSIGC_LICENSE_FILES = COPYING\nLIBSIGC_CONF_OPTS = \\\n\t-Dbuild-examples=false \\\n\t-Dvalidation=false\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libsigrok/Config.in",
    "content": "config BR2_PACKAGE_LIBSIGROK\n\tbool \"libsigrok\"\n\t# libglib2\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_ENABLE_LOCALE\n\tdepends on !BR2_STATIC_LIBS # libzip\n\t# std=c11\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n\tselect BR2_PACKAGE_LIBZIP\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Libsigrok is a shared library written in C, which provides\n\t  the basic hardware access drivers for logic analyzers and\n\t  other supported devices, as well as input/output file format\n\t  support.\n\n\t  This library is a part of the sigrok software suite.\n\n\t  http://sigrok.org/wiki/Libsigrok\n\nif BR2_PACKAGE_LIBSIGROK\n\nconfig BR2_PACKAGE_LIBSIGROKCXX\n\tbool \"build C++ bindings\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # glibmm\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # host-doxygen\n\tselect BR2_PACKAGE_GLIBMM\n\tselect BR2_PACKAGE_HOST_DOXYGEN\n\thelp\n\t  Build libsigrok C++ bindings as well.\n\ncomment \"C++ bindings need a toolchain w/ C++, gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n\nendif\n\ncomment \"libsigrok needs a toolchain w/ wchar, locale, threads, dynamic library, gcc >= 4.7\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || BR2_STATIC_LIBS \\\n\t\t|| !BR2_ENABLE_LOCALE\n"
  },
  {
    "path": "package/libsigrok/libsigrok.hash",
    "content": "# Locally computed\nsha256\t4d341f90b6220d3e8cb251dacf726c41165285612248f2c52d15df4590a1ce3c\tlibsigrok-0.5.2.tar.gz\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\tCOPYING\n"
  },
  {
    "path": "package/libsigrok/libsigrok.mk",
    "content": "################################################################################\n#\n# libsigrok\n#\n################################################################################\n\nLIBSIGROK_VERSION = 0.5.2\nLIBSIGROK_SITE = http://sigrok.org/download/source/libsigrok\nLIBSIGROK_LICENSE = GPL-3.0+\nLIBSIGROK_LICENSE_FILES = COPYING\nLIBSIGROK_INSTALL_STAGING = YES\nLIBSIGROK_DEPENDENCIES = libglib2 libzip host-pkgconf\nLIBSIGROK_CONF_OPTS = --disable-java --disable-python\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y)\nLIBSIGROK_CONF_OPTS += --with-libbluez\nLIBSIGROK_DEPENDENCIES += bluez5_utils\nelse\nLIBSIGROK_CONF_OPTS += --without-libbluez\nendif\n\nifeq ($(BR2_PACKAGE_HIDAPI),y)\nLIBSIGROK_CONF_OPTS += --with-libhidapi\nLIBSIGROK_DEPENDENCIES += hidapi\nelse\nLIBSIGROK_CONF_OPTS += --without-libhidapi\nendif\n\nifeq ($(BR2_PACKAGE_LIBSERIALPORT),y)\nLIBSIGROK_CONF_OPTS += --with-libserialport\nLIBSIGROK_DEPENDENCIES += libserialport\nelse\nLIBSIGROK_CONF_OPTS += --without-libserialport\nendif\n\nifeq ($(BR2_PACKAGE_LIBFTDI1),y)\nLIBSIGROK_CONF_OPTS += --with-libftdi\nLIBSIGROK_DEPENDENCIES += libftdi1\nelse\nLIBSIGROK_CONF_OPTS += --without-libftdi\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nLIBSIGROK_CONF_OPTS += --with-libusb\nLIBSIGROK_DEPENDENCIES += libusb\nelse\nLIBSIGROK_CONF_OPTS += --without-libusb\nendif\n\nifeq ($(BR2_PACKAGE_GLIBMM),y)\nLIBSIGROK_DEPENDENCIES += glibmm\nendif\n\nifeq ($(BR2_PACKAGE_LIBSIGROKCXX),y)\nLIBSIGROK_CONF_OPTS += --enable-cxx\n# host-doxygen is used by C++ bindings to parse libsigrok symbols\nLIBSIGROK_DEPENDENCIES += \\\n\tglibmm \\\n\thost-doxygen \\\n\t$(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python)\nelse\nLIBSIGROK_CONF_OPTS += --disable-cxx\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsigrokdecode/0001-configure-ac-Add-support-for-Python-3-9.patch",
    "content": "From 9b0ad5177bd692f7556a4756bdbd2da81d9c34ce Mon Sep 17 00:00:00 2001\nFrom: =?utf8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>\nDate: Tue, 4 Aug 2020 09:19:44 +0200\nSubject: [PATCH] configure.ac: Add support for Python 3.9.\n\n[Retrieved from:\nhttps://sigrok.org/gitweb/?p=libsigrokdecode.git;a=commit;h=9b0ad5177bd692f7556a4756bdbd2da81d9c34ce]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex f9958b3..2917cb3 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -100,7 +100,7 @@ SR_PKG_CHECK_SUMMARY([srd_pkglibs_summary])\n # first, since usually only that variant will add \"-lpython3.8\".\n # https://docs.python.org/3/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build\n SR_PKG_CHECK([python3], [SRD_PKGLIBS],\n-\t[python-3.8-embed], [python-3.8 >= 3.8], [python-3.7 >= 3.7], [python-3.6 >= 3.6], [python-3.5 >= 3.5], [python-3.4 >= 3.4], [python-3.3 >= 3.3], [python-3.2 >= 3.2], [python3 >= 3.2])\n+\t[python-3.9-embed], [python-3.8-embed], [python-3.8 >= 3.8], [python-3.7 >= 3.7], [python-3.6 >= 3.6], [python-3.5 >= 3.5], [python-3.4 >= 3.4], [python-3.3 >= 3.3], [python-3.2 >= 3.2], [python3 >= 3.2])\n AS_IF([test \"x$sr_have_python3\" = xno],\n \t[AC_MSG_ERROR([Cannot find Python 3 development headers.])])\n \n-- \n2.24.0.rc2\n\n"
  },
  {
    "path": "package/libsigrokdecode/Config.in",
    "content": "config BR2_PACKAGE_LIBSIGROKDECODE\n\tbool \"libsigrokdecode\"\n\tdepends on !BR2_PACKAGE_PYTHON # python3\n\tdepends on BR2_USE_WCHAR # libglib2/python3\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2/python3\n\tdepends on BR2_USE_MMU # libglib2/python3\n\tdepends on !BR2_STATIC_LIBS # python3\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_PYTHON3\n\thelp\n\t  Libsigrokdecode is a shared library written in C, which\n\t  provides (streaming) protocol decoding functionality. Say\n\t  yes here if you want to add this functionality to your\n\t  buildroot-generated sigrok suite.\n\n\t  This library is a part of the sigrok software suite.\n\n\t  http://sigrok.org/wiki/Libsigrokdecode\n\ncomment \"libsigrokdecode needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_PYTHON\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\ncomment \"libsigrokdecode is not compatible with python\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_PYTHON\n"
  },
  {
    "path": "package/libsigrokdecode/libsigrokdecode.hash",
    "content": "# Locally computed\nsha256\tc50814aa6743cd8c4e88c84a0cdd8889d883c3be122289be90c63d7d67883fc0  libsigrokdecode-0.5.3.tar.gz\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/libsigrokdecode/libsigrokdecode.mk",
    "content": "################################################################################\n#\n# libsigrokdecode\n#\n################################################################################\n\nLIBSIGROKDECODE_VERSION = 0.5.3\nLIBSIGROKDECODE_SITE = http://sigrok.org/download/source/libsigrokdecode\nLIBSIGROKDECODE_LICENSE = GPL-3.0+\nLIBSIGROKDECODE_LICENSE_FILES = COPYING\nLIBSIGROKDECODE_INSTALL_STAGING = YES\nLIBSIGROKDECODE_DEPENDENCIES = host-pkgconf libglib2 python3\n# We're patching configure.ac\nLIBSIGROKDECODE_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsigsegv/Config.in",
    "content": "config BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_TOOLCHAIN_HAS_UCONTEXT\n\nconfig BR2_PACKAGE_LIBSIGSEGV\n\tbool \"libsigsegv\"\n\tdepends on BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS\n\thelp\n\t  Library for handling page faults in user mode.\n\n\t  http://www.gnu.org/software/libsigsegv/\n"
  },
  {
    "path": "package/libsigsegv/libsigsegv.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.13.tar.gz.sig\nsha256  be78ee4176b05f7c75ff03298d84874db90f4b6c9d5503f0da1226b3a3c48119  libsigsegv-2.13.tar.gz\n# Locally calculated\nsha256  8f2983e9a940367f48999881c14775db725ee643bce1e2f1ba195eb629a33cde  COPYING\n"
  },
  {
    "path": "package/libsigsegv/libsigsegv.mk",
    "content": "################################################################################\n#\n# libsigsegv\n#\n################################################################################\n\nLIBSIGSEGV_VERSION = 2.13\nLIBSIGSEGV_SITE = $(BR2_GNU_MIRROR)/libsigsegv\nLIBSIGSEGV_INSTALL_STAGING = YES\nLIBSIGSEGV_CONF_ENV = sv_cv_fault_posix=yes\nLIBSIGSEGV_LICENSE = GPL-2.0+\nLIBSIGSEGV_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsilk/Config.in",
    "content": "config BR2_PACKAGE_LIBSILK\n\tbool \"libsilk\"\n\thelp\n\t  SILK is an audio compression format and audio codec.\n\n\t  http://tools.ietf.org/html/draft-vos-silk-01\n"
  },
  {
    "path": "package/libsilk/libsilk.hash",
    "content": "# Locally computed\nsha256  ac79eb4c154af25c0ab25e12d60d3b4165c399903fe88d82e066cf6d9827503e  libsilk-4268a02240c35c6055b0f237c46b09b2dcf79e45-br1.tar.gz\nsha256  62a5963f034024665641f4a9888b208f1e39aa7e29e87c9634fdcf07d3073baf  COPYING\n"
  },
  {
    "path": "package/libsilk/libsilk.mk",
    "content": "################################################################################\n#\n# libsilk\n#\n################################################################################\n\nLIBSILK_VERSION = 4268a02240c35c6055b0f237c46b09b2dcf79e45\n# we use the FreeSwitch fork because it contains pkgconf support\nLIBSILK_SITE = https://freeswitch.org/stash/scm/sd/libsilk.git\nLIBSILK_SITE_METHOD = git\nLIBSILK_LICENSE = BSD-3-Clause\nLIBSILK_LICENSE_FILES = COPYING\nLIBSILK_AUTORECONF = YES\nLIBSILK_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsndfile/0001-ms_adpcm-Fix-and-extend-size-checks.patch",
    "content": "From deb669ee8be55a94565f6f8a6b60890c2e7c6f32 Mon Sep 17 00:00:00 2001\nFrom: bobsayshilol <bobsayshilol@live.co.uk>\nDate: Thu, 18 Feb 2021 21:52:09 +0000\nSubject: [PATCH] ms_adpcm: Fix and extend size checks\n\n'blockalign' is the size of a block, and each block contains 7 samples\nper channel as part of the preamble, so check against 'samplesperblock'\nrather than 'blockalign'. Also add an additional check that the block\nis big enough to hold the samples it claims to hold.\n\nhttps://bugs.chromium.org/p/oss-fuzz/issues/detail?id=26803\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n src/ms_adpcm.c | 10 ++++++++--\n 1 file changed, 8 insertions(+), 2 deletions(-)\n\ndiff --git a/src/ms_adpcm.c b/src/ms_adpcm.c\nindex 5e8f1a31..a21cb994 100644\n--- a/src/ms_adpcm.c\n+++ b/src/ms_adpcm.c\n@@ -128,8 +128,14 @@ wavlike_msadpcm_init\t(SF_PRIVATE *psf, int blockalign, int samplesperblock)\n \tif (psf->file.mode == SFM_WRITE)\n \t\tsamplesperblock = 2 + 2 * (blockalign - 7 * psf->sf.channels) / psf->sf.channels ;\n \n-\tif (blockalign < 7 * psf->sf.channels)\n-\t{\tpsf_log_printf (psf, \"*** Error blockalign (%d) should be > %d.\\n\", blockalign, 7 * psf->sf.channels) ;\n+\t/* There's 7 samples per channel in the preamble of each block */\n+\tif (samplesperblock < 7 * psf->sf.channels)\n+\t{\tpsf_log_printf (psf, \"*** Error samplesperblock (%d) should be >= %d.\\n\", samplesperblock, 7 * psf->sf.channels) ;\n+\t\treturn SFE_INTERNAL ;\n+\t\t} ;\n+\n+\tif (2 * blockalign < samplesperblock * psf->sf.channels)\n+\t{\tpsf_log_printf (psf, \"*** Error blockalign (%d) should be >= %d.\\n\", blockalign, samplesperblock * psf->sf.channels / 2) ;\n \t\treturn SFE_INTERNAL ;\n \t\t} ;\n \n-- \n2.20.1\n\n"
  },
  {
    "path": "package/libsndfile/Config.in",
    "content": "config BR2_PACKAGE_LIBSNDFILE\n\tbool \"libsndfile\"\n\thelp\n\t  Libsndfile is a C library for reading and writing files\n\t  containing sampled sound (such as MS Windows WAV and the\n\t  Apple/SGI AIFF format) through one standard library interface.\n\n\t  http://www.mega-nerd.com/libsndfile/\n"
  },
  {
    "path": "package/libsndfile/libsndfile.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  a8cfb1c09ea6e90eff4ca87322d4168cdbe5035cb48717b40bf77e751cc02163  libsndfile-1.0.31.tar.bz2\n# Locally calculated\nsha256  ad01ea5cd2755f6048383c8d54c88459cd6fcb17757c5c8892f8c5ea060f6140  COPYING\n"
  },
  {
    "path": "package/libsndfile/libsndfile.mk",
    "content": "################################################################################\n#\n# libsndfile\n#\n################################################################################\n\nLIBSNDFILE_VERSION = 1.0.31\nLIBSNDFILE_SOURCE = libsndfile-$(LIBSNDFILE_VERSION).tar.bz2\nLIBSNDFILE_SITE = https://github.com/libsndfile/libsndfile/releases/download/$(LIBSNDFILE_VERSION)\nLIBSNDFILE_INSTALL_STAGING = YES\nLIBSNDFILE_LICENSE = LGPL-2.1+\nLIBSNDFILE_LICENSE_FILES = COPYING\nLIBSNDFILE_CPE_ID_VENDOR = libsndfile_project\n\n# 0001-ms_adpcm-Fix-and-extend-size-checks.patch\nLIBSNDFILE_IGNORE_CVES += CVE-2021-3246\n\n# disputed, https://github.com/erikd/libsndfile/issues/398\nLIBSNDFILE_IGNORE_CVES += CVE-2018-13419\n\nLIBSNDFILE_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'\nLIBSNDFILE_CONF_OPTS = \\\n\t--disable-sqlite \\\n\t--disable-alsa \\\n\t--disable-full-suite\n\nifeq ($(BR2_PACKAGE_FLAC)$(BR2_PACKAGE_LIBVORBIS)$(BR2_PACKAGE_OPUS),yyy)\nLIBSNDFILE_DEPENDENCIES += flac host-pkgconf libvorbis opus\nLIBSNDFILE_CONF_OPTS += --enable-external-libs\nelse\nLIBSNDFILE_CONF_OPTS += --disable-external-libs\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsoc/Config.in",
    "content": "config BR2_PACKAGE_LIBSOC\n\tbool \"libsoc\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  libsoc is a C library for interfacing with common SoC\n\t  peripherals through generic kernel interfaces\n\n\t  https://github.com/jackmitch/libsoc\n\ncomment \"libsoc needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libsoc/libsoc.hash",
    "content": "# Locally computed:\nsha256  8df626bde365b94a805e1c323104c63a7429ec64c9df815cd1d9b9c4b317e066  libsoc-0.8.2.tar.gz\nsha256  782dafc98788c358fb20e530c8fde3186cdb60f5e18fe6d348fe84ee9f65ddb0  LICENCE\n"
  },
  {
    "path": "package/libsoc/libsoc.mk",
    "content": "################################################################################\n#\n# libsoc\n#\n################################################################################\n\nLIBSOC_VERSION = 0.8.2\nLIBSOC_SITE = $(call github,jackmitch,libsoc,$(LIBSOC_VERSION))\nLIBSOC_LICENSE = LGPL-2.1\nLIBSOC_LICENSE_FILES = LICENCE\nLIBSOC_AUTORECONF = YES\nLIBSOC_INSTALL_STAGING = YES\nLIBSOC_DEPENDENCIES = host-pkgconf\n\n# Install Python 2 bindings\nifeq ($(BR2_PACKAGE_PYTHON),y)\nLIBSOC_DEPENDENCIES += python\nLIBSOC_CONF_OPTS += --enable-python=2\n# Install Python 3 bindings\nelse ifeq ($(BR2_PACKAGE_PYTHON3),y)\nLIBSOC_DEPENDENCIES += python3\nLIBSOC_CONF_OPTS += --enable-python=3\nelse\nLIBSOC_CONF_OPTS += --disable-python\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsocketcan/Config.in",
    "content": "config BR2_PACKAGE_LIBSOCKETCAN\n\tbool \"libsocketcan\"\n\thelp\n\t  SocketCAN library to control CAN devices from C code.\n\n\t  http://git.pengutronix.de/?p=tools/libsocketcan.git;a=summary\n"
  },
  {
    "path": "package/libsocketcan/libsocketcan.hash",
    "content": "# Locally calculated\nsha256  be8280124707701935e6294d366e2474158b758fa4b2e3cae571d5b256d2fe34  libsocketcan-0.0.12.tar.bz2\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSE\n"
  },
  {
    "path": "package/libsocketcan/libsocketcan.mk",
    "content": "################################################################################\n#\n# libsocketcan\n#\n################################################################################\n\nLIBSOCKETCAN_VERSION = 0.0.12\nLIBSOCKETCAN_SITE = http://www.pengutronix.de/software/libsocketcan/download\nLIBSOCKETCAN_SOURCE = libsocketcan-$(LIBSOCKETCAN_VERSION).tar.bz2\nLIBSOCKETCAN_INSTALL_STAGING = YES\nLIBSOCKETCAN_LICENSE = LGPL-2.1+\nLIBSOCKETCAN_LICENSE_FILES = LICENSE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsodium/Config.in",
    "content": "config BR2_PACKAGE_LIBSODIUM\n\tbool \"libsodium\"\n\thelp\n\t  A modern and easy-to-use crypto library.\n\n\t  http://libsodium.org/\n\nif BR2_PACKAGE_LIBSODIUM\n\nconfig BR2_PACKAGE_LIBSODIUM_FULL\n\tbool \"all functions\"\n\tdefault y\n\thelp\n\t  Build all seldom used and obsolete functions. Without\n\t  this option, only the minimal set of normally used\n\t  functions is built.\n\nendif\n"
  },
  {
    "path": "package/libsodium/libsodium.hash",
    "content": "# Locally calculated after checking Minisign signature\n# https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz.minisig\nsha256 6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1  libsodium-1.0.18.tar.gz\nsha256 dea1855c9809f3faf22aa4a1fba20ec8af5a5587f23115012e5b98279cedc4af  LICENSE\n"
  },
  {
    "path": "package/libsodium/libsodium.mk",
    "content": "################################################################################\n#\n# libsodium\n#\n################################################################################\n\nLIBSODIUM_VERSION = 1.0.18\nLIBSODIUM_SITE = https://download.libsodium.org/libsodium/releases\nLIBSODIUM_LICENSE = ISC\nLIBSODIUM_LICENSE_FILES = LICENSE\nLIBSODIUM_INSTALL_STAGING = YES\n\nifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),)\nLIBSODIUM_CONF_OPTS += --disable-pie\nendif\n\nifeq ($(BR2_PACKAGE_LIBSODIUM_FULL),y)\nLIBSODIUM_CONF_OPTS += --disable-minimal\nelse\nLIBSODIUM_CONF_OPTS += --enable-minimal\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libsoundtouch/Config.in",
    "content": "config BR2_PACKAGE_LIBSOUNDTOUCH\n\tbool \"libsoundtouch\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  SoundTouch is an open-source audio processing library for\n\t  changing the Tempo, Pitch and Playback Rates of audio streams\n\t  or audio files.\n\n\t  http://www.surina.net/soundtouch\n\ncomment \"libsoundtouch needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/libsoundtouch/libsoundtouch.hash",
    "content": "# Locally computed\nsha256  f1ce96bac35779d3b752f4cc8696975b3d58f3deb9db47ffc45862767c2a2bdd  libsoundtouch-2.2.tar.gz\nsha256  6b73f6327136a924821ec044bbd9f17cf8677faf2f2a2b1366a9fff6188c9688  COPYING.TXT\n"
  },
  {
    "path": "package/libsoundtouch/libsoundtouch.mk",
    "content": "################################################################################\n#\n# libsoundtouch\n#\n################################################################################\n\nLIBSOUNDTOUCH_VERSION = 2.2\nLIBSOUNDTOUCH_SITE = $(call gitlab,soundtouch,soundtouch,$(LIBSOUNDTOUCH_VERSION))\nLIBSOUNDTOUCH_LICENSE = LGPL-2.1+\nLIBSOUNDTOUCH_LICENSE_FILES = COPYING.TXT\nLIBSOUNDTOUCH_AUTORECONF = YES\nLIBSOUNDTOUCH_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsoup/0001-meson.build-set-c_std-to-gnu99.patch",
    "content": "From 5c3d431bdb094c59997f2a23e31e83f815ab667c Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 1 Jul 2021 22:09:23 +0200\nSubject: [PATCH] meson.build: set c_std to gnu99\n\nSet c_std to gnu99 to avoid the following build failure with gcc 4.8:\n\nIn file included from /tmp/instance-0/output-1/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/resolv.h:65:0,\n                 from /tmp/instance-0/output-1/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/glib-2.0/gio/gnetworking.h:40,\n                 from ../libsoup/soup-address.c:14:\n/tmp/instance-0/output-1/host/arm-buildroot-linux-gnueabi/sysroot/usr/include/arpa/nameser.h:115:2: error: unknown type name 'u_char'\n  const u_char *_msg, *_eom;\n  ^\n\nFixes:\n - http://autobuild.buildroot.org/results/56b9cb987e25b99d6fed16c537552f47c3376f21\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/241]\n---\n meson.build | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/meson.build b/meson.build\nindex 4dfd8c15..a5ebc63a 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -2,6 +2,6 @@ project('libsoup', 'c',\n         version: '2.74.0',\n         meson_version : '>= 0.50',\n         license : 'LGPL2',\n-        default_options : 'c_std=c99')\n+        default_options : 'c_std=gnu99')\n \n gnome = import('gnome')\n \n-- \n2.30.2\n\n"
  },
  {
    "path": "package/libsoup/Config.in",
    "content": "config BR2_PACKAGE_LIBSOUP\n\tbool \"libsoup\"\n\tdepends on BR2_USE_WCHAR # glib2, gnutls and libpsl\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBPSL\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  libsoup is an HTTP client/server library. It uses GObject\n\t  and the GLib main loop, to integrate well with GNOME\n\t  applications.\n\n\t  https://wiki.gnome.org/Projects/libsoup\n\nif BR2_PACKAGE_LIBSOUP\n\nconfig BR2_PACKAGE_LIBSOUP_GNOME\n\tbool \"libsoup-gnome\"\n\thelp\n\t  Build libsoup-gnome library.\n\nconfig BR2_PACKAGE_LIBSOUP_SSL\n\tbool \"https support\"\n\tdepends on !BR2_STATIC_LIBS # glib-networking, gnutls\n\tselect BR2_PACKAGE_GLIB_NETWORKING # runtime\n\tselect BR2_PACKAGE_GNUTLS # runtime\n\thelp\n\t  Enable HTTPS (SSL) support.\n\ncomment \"libsoup https support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nendif\n\ncomment \"libsoup needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libsoup/libsoup.hash",
    "content": "# From https://ftp.gnome.org/pub/GNOME/sources/libsoup/2.74/libsoup-2.74.0.sha256sum\nsha256  33b1d4e0d639456c675c227877e94a8078d731233e2d57689c11abcef7d3c48e  libsoup-2.74.0.tar.xz\n# Locally calculated\nsha256  b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c  COPYING\n"
  },
  {
    "path": "package/libsoup/libsoup.mk",
    "content": "################################################################################\n#\n# libsoup\n#\n################################################################################\n\nLIBSOUP_VERSION_MAJOR = 2.74\nLIBSOUP_VERSION = $(LIBSOUP_VERSION_MAJOR).0\nLIBSOUP_SOURCE = libsoup-$(LIBSOUP_VERSION).tar.xz\nLIBSOUP_SITE = http://ftp.gnome.org/pub/gnome/sources/libsoup/$(LIBSOUP_VERSION_MAJOR)\nLIBSOUP_LICENSE = LGPL-2.0+\nLIBSOUP_LICENSE_FILES = COPYING\nLIBSOUP_CPE_ID_VENDOR = gnome\nLIBSOUP_INSTALL_STAGING = YES\nLIBSOUP_DEPENDENCIES = \\\n\thost-intltool \\\n\thost-libglib2 \\\n\thost-pkgconf \\\n\tlibglib2 \\\n\tlibpsl \\\n\tlibxml2 \\\n\tsqlite \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nLIBSOUP_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\nLIBSOUP_CONF_OPTS = \\\n\t-Dgssapi=disabled \\\n\t-Dgtk_doc=false \\\n\t-Dntlm=disabled \\\n\t-Dsysprof=disabled \\\n\t-Dtests=false \\\n\t-Dtls_check=false \\\n\t-Dvapi=disabled\n\nifeq ($(BR2_PACKAGE_BROTLI),y)\nLIBSOUP_CONF_OPTS += -Dbrotli=enabled\nLIBSOUP_DEPENDENCIES += brotli\nelse\nLIBSOUP_CONF_OPTS += -Dbrotli=disabled\nendif\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBSOUP_CONF_OPTS += -Dintrospection=enabled\nLIBSOUP_DEPENDENCIES += gobject-introspection\nelse\nLIBSOUP_CONF_OPTS += -Dintrospection=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBSOUP_GNOME),y)\nLIBSOUP_CONF_OPTS += -Dgnome=true\nelse\nLIBSOUP_CONF_OPTS += -Dgnome=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libsoxr/0001-Add-Libs.private-for-static-linking.patch",
    "content": "From 7d2d1039f303b6322ecb72eebae39b699fd28d19 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Fri, 22 Feb 2019 01:31:11 +0100\nSubject: [PATCH] Add Libs.private in soxr.pc.in for static linking\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nIf libsoxr is build statically against libavutil other applications\nneeds to know that they must link with `-lavutil` when building in a\nstatic context.\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n CMakeLists.txt | 1 +\n src/soxr.pc.in | 1 +\n 2 files changed, 2 insertions(+)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex ee48f6c..714bd4d 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -139,6 +139,7 @@ if (WITH_AVFFT OR (CMAKE_SYSTEM_PROCESSOR MATCHES \"^arm\" AND SIMD32_FOUND AND WI\n   if (AVUTIL_FOUND)\n     include_directories (${AVUTIL_INCLUDE_DIRS})\n     set (LIBS ${LIBS} ${AVUTIL_LIBRARIES})\n+    set (PKGCONF_LIBS_PRIV ${PKGCONF_LIBS_PRIV} -lavutil)\n   endif ()\n endif ()\n \ndiff --git a/src/soxr.pc.in b/src/soxr.pc.in\nindex 69d225b..6c530a6 100644\n--- a/src/soxr.pc.in\n+++ b/src/soxr.pc.in\n@@ -2,4 +2,5 @@ Name: ${PROJECT_NAME}\n Description: ${DESCRIPTION_SUMMARY}\n Version: ${PROJECT_VERSION}\n Libs: -L${LIB_INSTALL_DIR} -l${PROJECT_NAME}\n+Libs.private: ${PKGCONF_LIBS_PRIV}\n Cflags: -I${INCLUDE_INSTALL_DIR}\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/libsoxr/Config.in",
    "content": "config BR2_PACKAGE_LIBSOXR\n\tbool \"libsoxr\"\n\thelp\n\t  The SoX Resampler library `libsoxr' performs one-dimensional\n\t  sample-rate conversion. It may be used, for example, to\n\t  resample PCM-encoded audio.\n\n\t  It aims to give fast and high quality results for any constant\n\t  (rational or irrational) resampling ratio. Phase-response,\n\t  preserved bandwidth, aliasing, and rejection level parameters\n\t  are all configurable; alternatively, simple `preset'\n\t  configurations may be selected. An experimental, variable-rate\n\t  resampling mode of operation is also included.\n\n\t  http://sourceforge.net/projects/soxr/\n"
  },
  {
    "path": "package/libsoxr/libsoxr.hash",
    "content": "# From http://sourceforge.net/projects/soxr/files/\nsha1  32ea46b1a8c0c15f835422892d02fce8286aec3c  soxr-0.1.3-Source.tar.xz\nmd5  3f16f4dcb35b471682d4321eda6f6c08  soxr-0.1.3-Source.tar.xz\n# Locally calculated\nsha256  b111c15fdc8c029989330ff559184198c161100a59312f5dc19ddeb9b5a15889  soxr-0.1.3-Source.tar.xz\nsha256  dc98676341fdcd29d9f279c9679d6a75288785b174ded8d1b2e316c366166135  LICENCE\nsha256  f2f118b9029ec1871b953639ecc46651b2fc7b62e295e6cf3ef2ac4c9a058b33  COPYING.LGPL\n"
  },
  {
    "path": "package/libsoxr/libsoxr.mk",
    "content": "################################################################################\n#\n# libsoxr\n#\n################################################################################\n\nLIBSOXR_VERSION = 0.1.3\nLIBSOXR_SOURCE = soxr-$(LIBSOXR_VERSION)-Source.tar.xz\nLIBSOXR_SITE = http://downloads.sourceforge.net/project/soxr\nLIBSOXR_LICENSE = LGPL-2.1+\nLIBSOXR_LICENSE_FILES = LICENCE COPYING.LGPL\nLIBSOXR_INSTALL_STAGING = YES\nLIBSOXR_CONF_OPTS = -DWITH_OPENMP=OFF\n\nifeq ($(call qstrip,$(BR2_ENDIAN)),BIG)\nLIBSOXR_CONF_OPTS += -DHAVE_WORDS_BIGENDIAN=1\nelse\nLIBSOXR_CONF_OPTS += -DHAVE_WORDS_BIGENDIAN=0\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG),y)\nLIBSOXR_DEPENDENCIES += ffmpeg\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libspatialindex/0001-allow-building-static-libs.patch",
    "content": "From caee28d84685071da3ff3a4ea57ff0b6ae64fc87 Mon Sep 17 00:00:00 2001\nFrom: SpaceIm <30052553+SpaceIm@users.noreply.github.com>\nDate: Sat, 28 Mar 2020 19:08:40 +0100\nSubject: [PATCH] allow building static libs (#183)\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/libspatialindex/libspatialindex/commit/caee28d84685071da3ff3a4ea57ff0b6ae64fc87]\n---\n CMakeLists.txt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex c34ee8d..3bfac51 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -43,7 +43,6 @@ SET(SIDX_VERSION_MINOR \"9\")\n SET(SIDX_VERSION_PATCH \"3\")\n SET(SIDX_LIB_VERSION \"6.1.1\")\n SET(SIDX_LIB_SOVERSION \"6\")\n-SET(BUILD_SHARED_LIBS ON)\n \n \n set(SIDX_VERSION_STRING \"${SIDX_VERSION_MAJOR}.${SIDX_VERSION_MINOR}.${SIDX_VERSION_PATCH}\")\n@@ -52,6 +51,7 @@ set(SIDX_VERSION_STRING \"${SIDX_VERSION_MAJOR}.${SIDX_VERSION_MINOR}.${SIDX_VERS\n # libspatialindex general cmake options\n #------------------------------------------------------------------------------\n \n+option(BUILD_SHARED_LIBS \"Build shared libraries\" ON)\n option(SIDX_BUILD_TESTS \"Enables integrated test suites\" OFF)\n \n \n"
  },
  {
    "path": "package/libspatialindex/0002-CMakeLists.txt-fix-CMAKE_BUILD_TYPE.patch",
    "content": "From 26d417b9f981cf9a6df42d89fd297539b96180cb Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 24 Apr 2020 18:03:31 +0200\nSubject: [PATCH] CMakeLists.txt: fix CMAKE_BUILD_TYPE (#188)\n\nThe user is unable to override CMAKE_BUILD_TYPE since version 1.9.1 and\nhttps://github.com/libspatialindex/libspatialindex/commit/e3bcccf38d9f100b59ccf29f7e1cfa174969decd\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/libspatialindex/libspatialindex/commit/26d417b9f981cf9a6df42d89fd297539b96180cb]\n---\n CMakeLists.txt | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 191ac72..84676a2 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -93,8 +93,10 @@ INCLUDE (CheckIncludeFiles)\n \n # note we default to RelWithDebInfo mode\n if(NOT MSVC_IDE)\n+  if(NOT CMAKE_BUILD_TYPE)\n   set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING\n     \"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel\" FORCE)\n+  endif()\n   message(STATUS \"Setting libspatialindex build type - ${CMAKE_BUILD_TYPE}\")\n endif()\n \n"
  },
  {
    "path": "package/libspatialindex/Config.in",
    "content": "config BR2_PACKAGE_LIBSPATIALINDEX\n\tbool \"libspatialindex\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\thelp\n\t  The purpose of libspatialindex is to provide:\n\n\t  * An extensible framework that will support robust spatial\n\t    indexing methods.\n\n\t  * Support for sophisticated spatial queries. Range, point\n\t    location, nearest neighbor and k-nearest neighbor as well\n\t    as parametric queries (defined by spatial constraints)\n\t    should be easy to deploy and run.\n\n\t  * Easy to use interfaces for inserting, deleting and updating\n\t    information.\n\n\t  * Wide variety of customization capabilities. Basic index and\n\t    storage characteristics like the page size, node capacity,\n\t    minimum fan-out, splitting algorithm, etc. should be easy\n\t    to customize.\n\n\t  * Index persistence. Internal memory and external memory\n\t    structures should be supported. Clustered and non-clustered\n\t    indices should be easy to be persisted.\n\n\t  https://libspatialindex.github.io\n\ncomment \"libspatialindex needs a toolchain w/ C++, gcc >= 4.7\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/libspatialindex/libspatialindex.hash",
    "content": "# From https://github.com/libspatialindex/libspatialindex/releases/download/1.9.3/spatialindex-src-1.9.3.tar.bz2.sha512sum\nsha512  7922807a2f7026542a014d3d7943da5410429b291cf469267ffea5b8075eab2a94e68b6c013425615d221b930fd319c403f3bf43404c9b1d2c92d0e2baae3066  spatialindex-src-1.9.3.tar.bz2\n\n# Hash for license file\nsha256  b63ebfaca9d7ce582580f3e11acabc9d2e37c46ce234533f7fa8a6c7278898a0  COPYING\n"
  },
  {
    "path": "package/libspatialindex/libspatialindex.mk",
    "content": "################################################################################\n#\n# libspatialindex\n#\n################################################################################\n\nLIBSPATIALINDEX_VERSION = 1.9.3\nLIBSPATIALINDEX_SITE = \\\n\thttps://github.com/libspatialindex/libspatialindex/releases/download/$(LIBSPATIALINDEX_VERSION)\nLIBSPATIALINDEX_SOURCE = spatialindex-src-$(LIBSPATIALINDEX_VERSION).tar.bz2\nLIBSPATIALINDEX_INSTALL_STAGING = YES\nLIBSPATIALINDEX_LICENSE = MIT\nLIBSPATIALINDEX_LICENSE_FILES = COPYING\n\nLIBSPATIALINDEX_CXXFLAGS = $(TARGET_CXXFLAGS)\nLIBSPATIALINDEX_CONF_OPTS = \\\n\t-DSIDX_BUILD_TESTS=OFF \\\n\t-DCMAKE_CXX_FLAGS=\"$(LIBSPATIALINDEX_CXXFLAGS)\"\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)\nLIBSPATIALINDEX_CXXFLAGS += -O0\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libsquish/0001-Makefile-add-f-option-for-ln-to-remove-existing-dest.patch",
    "content": "From 1e541293ac19c49f886220b64de6006c5c700144 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sat, 12 Jan 2019 12:50:54 +0100\nSubject: [PATCH] Makefile: add -f option for ln to remove existing destination\n files\n\nWhile reinstalling the library, all symlinks are present.\nAsk ln to remove them with -f.\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n Makefile | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex fd7d6c8..2683819 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -25,8 +25,8 @@ install: $(LIB) $(LIBA) libsquish.pc\n \t$(INSTALL_FILE) $(LIBA) $(INSTALL_DIR)/$(LIB_PATH)\n ifneq ($(USE_SHARED),0)\n \t$(INSTALL_FILE) $(LIB) $(INSTALL_DIR)/$(LIB_PATH)\n-\tln -s $(LIB) $(INSTALL_DIR)/$(LIB_PATH)/$(SOLIB)\n-\tln -s $(LIB) $(INSTALL_DIR)/$(LIB_PATH)/libsquish.so\n+\tln -sf $(LIB) $(INSTALL_DIR)/$(LIB_PATH)/$(SOLIB)\n+\tln -sf $(LIB) $(INSTALL_DIR)/$(LIB_PATH)/libsquish.so\n \t$(INSTALL_DIRECTORY) $(INSTALL_DIR)/$(LIB_PATH)/pkgconfig\n \t$(INSTALL_FILE) libsquish.pc $(INSTALL_DIR)/$(LIB_PATH)/pkgconfig\n endif\n-- \n2.14.5\n\n"
  },
  {
    "path": "package/libsquish/Config.in",
    "content": "config BR2_PACKAGE_LIBSQUISH\n\tbool \"libsquish\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  The libSquish library compresses images with the DXT standard\n\t  (also known as S3TC). This standard is mainly used by OpenGL\n\t  and DirectX for the lossy compression of RGBA textures.\n\n\t  http://sourceforge.net/projects/libsquish\n\ncomment \"libsquish needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/libsquish/libsquish.hash",
    "content": "# From http://sourceforge.net/projects/libsquish/files\nsha1 51844b9a8bc815a27e2cc0ffbede5fee3ef75110 libsquish-1.15.tgz\nmd5 c02645800131e55b519ff8dbe7284f93 libsquish-1.15.tgz\n# Locally calculated\nsha256 a6b8c383bf3ab28460d6507484d605dd722e03971606f0cd3032a3af682b63a5  LICENSE.txt\n"
  },
  {
    "path": "package/libsquish/libsquish.mk",
    "content": "################################################################################\n#\n# libsquish\n#\n################################################################################\n\nLIBSQUISH_VERSION = 1.15\nLIBSQUISH_SOURCE = libsquish-$(LIBSQUISH_VERSION).tgz\nLIBSQUISH_SITE = http://downloads.sourceforge.net/project/libsquish\nLIBSQUISH_INSTALL_STAGING = YES\nLIBSQUISH_STRIP_COMPONENTS = 0\nLIBSQUISH_LICENSE = MIT\nLIBSQUISH_LICENSE_FILES = LICENSE.txt\n\nifeq ($(BR2_STATIC_LIBS),y)\nLIBSQUISH_MAKE_ENV = USE_SHARED=0\nelse\nLIBSQUISH_MAKE_ENV = USE_SHARED=1\nendif\n\ndefine LIBSQUISH_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(LIBSQUISH_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine LIBSQUISH_INSTALL_STAGING_CMDS\n\tmkdir -p $(STAGING_DIR)/usr/include\n\tmkdir -p $(STAGING_DIR)/usr/lib\n\t$(TARGET_CONFIGURE_OPTS) $(LIBSQUISH_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tinstall PREFIX=/usr INSTALL_DIR=$(STAGING_DIR)/usr\n\t$(INSTALL) -D -m 644 $(@D)/libsquish.pc $(STAGING_DIR)/usr/lib/pkgconfig/libsquish.pc\nendef\n\ndefine LIBSQUISH_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/include\n\tmkdir -p $(TARGET_DIR)/usr/lib\n\t$(TARGET_CONFIGURE_OPTS) $(LIBSQUISH_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tinstall PREFIX=/usr INSTALL_DIR=$(TARGET_DIR)/usr\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libsrtp/Config.in",
    "content": "config BR2_PACKAGE_LIBSRTP\n\tbool \"libsrtp\"\n\thelp\n\t  This package provides an implementation of the Secure\n\t  Real-time Transport Protocol (SRTP), the Universal Security\n\t  Transform (UST), and a supporting cryptographic kernel.\n\n\t  https://github.com/cisco/libsrtp\n"
  },
  {
    "path": "package/libsrtp/libsrtp.hash",
    "content": "# Locally calculated\nsha256  3cb580928fcd502426809c68406d04aaa5ef1af7ebb0a3a41a52a13576f2fc07  libsrtp-2.4.1.tar.gz\nsha256  8e19d42a1eec9561f3f347253ddf2e385c55f392f025bb0fd41b88dbf38db5ae  LICENSE\n"
  },
  {
    "path": "package/libsrtp/libsrtp.mk",
    "content": "################################################################################\n#\n# libsrtp\n#\n################################################################################\n\nLIBSRTP_VERSION = 2.4.1\nLIBSRTP_SITE = $(call github,cisco,libsrtp,v$(LIBSRTP_VERSION))\nLIBSRTP_INSTALL_STAGING = YES\nLIBSRTP_LICENSE = BSD-3-Clause\nLIBSRTP_LICENSE_FILES = LICENSE\nLIBSRTP_CPE_ID_VENDOR = cisco\n\nifeq ($(BR2_STATIC_LIBS),y)\nLIBSRTP_MAKE_OPTS = libsrtp2.a\nelse ifeq ($(BR2_SHARED_LIBS),y)\nLIBSRTP_MAKE_OPTS = shared_library\nelse\nLIBSRTP_MAKE_OPTS = libsrtp2.a shared_library\nendif\n\nLIBSRTP_DEPENDENCIES = host-pkgconf\n\n# openssl handling needs libdl support\nifeq ($(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yx)\nLIBSRTP_DEPENDENCIES += openssl\nLIBSRTP_CONF_OPTS += --disable-nss --enable-openssl\nelse ifeq ($(BR2_PACKAGE_LIBNSS),y)\nLIBSRTP_DEPENDENCIES += libnss\nLIBSRTP_CONF_OPTS += --enable-nss --disable-openssl\nelse\nLIBSRTP_CONF_OPTS += --disable-nss --disable-openssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libss7/Config.in",
    "content": "config BR2_PACKAGE_LIBSS7\n\tbool \"libss7\"\n\tdepends on BR2_USE_MMU # dahdi-tools <- perl\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_DAHDI_LINUX\n\tselect BR2_PACKAGE_DAHDI_TOOLS\n\thelp\n\t  libss7 is an open source library that encapsulates the\n\t  protocols used to communicate using Signaling System 7\n\t  over ISDN (T1, E1).\n\n\t  http://www.asterisk.org/downloads/libss7\n\ncomment \"libss7 needs a kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\ncomment \"libss7 needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libss7/libss7.hash",
    "content": "# Hashes from http://downloads.asterisk.org/pub/telephony/libss7/releases/\nsha1    7112a0717293fc273d5d488e1387ad28abe4e9b3  libss7-2.0.0.tar.gz\nsha256  5af00853cfb2bc6bcf050947804db132ae6872db0cd2ab24b5378828f78eda52  libss7-2.0.0.tar.gz\n\n# License file, locally calculated\nsha256  fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7  LICENSE\n"
  },
  {
    "path": "package/libss7/libss7.mk",
    "content": "################################################################################\n#\n# libss7\n#\n################################################################################\n\nLIBSS7_VERSION = 2.0.0\nLIBSS7_SITE = http://downloads.asterisk.org/pub/telephony/libss7/releases\n\nLIBSS7_LICENSE = GPL-2.0\nLIBSS7_LICENSE_FILES = LICENSE\n\nLIBSS7_DEPENDENCIES = dahdi-linux dahdi-tools\nLIBSS7_INSTALL_STAGING = YES\n\n# The Makefile default rule will always try to generate both libraries.\n# So we need to explicitly build only what we can.\nifneq ($(BR2_SHARED_LIBS),y)\nLIBSS7_LIBS = libss7.a\ndefine LIBSS7_INSTALL_A\n\t$(INSTALL) -D -m 0644 $(@D)/libss7.a $(1)/usr/lib/libss7.a\nendef\nendif\n\nifneq ($(BR2_STATIC_LIBS),y)\nLIBSS7_LIBS += libss7.so.2.0\ndefine LIBSS7_INSTALL_SO\n\t$(INSTALL) -D -m 0644 $(@D)/libss7.so.2.0 $(1)/usr/lib/libss7.so.2.0\n\tln -sf libss7.so.2.0 $(1)/usr/lib/libss7.so\nendef\nendif\n\n# The Makefile erroneously looks for host headers to decide what utilities\n# to build, and thus misses the test utilities. So we explicitly build them\n# as they can be useful to validate that the hardware does work.\nLIBSS7_UTILS = parser_debug ss7test ss7linktest\n\ndefine LIBSS7_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -fPIC\" -C $(@D) \\\n\t\t$(LIBSS7_LIBS) $(LIBSS7_UTILS)\nendef\n\ndefine LIBSS7_INSTALL_STAGING_CMDS\n\t$(call LIBSS7_INSTALL_A,$(STAGING_DIR))\n\t$(call LIBSS7_INSTALL_SO,$(STAGING_DIR))\n\t$(INSTALL) -D -m 0644 $(@D)/libss7.h $(STAGING_DIR)/usr/include/libss7.h\nendef\n\ndefine LIBSS7_INSTALL_TARGET_CMDS\n\t$(foreach u,$(LIBSS7_UTILS),\\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$(u) $(TARGET_DIR)/usr/sbin/$(u)$(sep))\n\t$(call LIBSS7_INSTALL_SO,$(TARGET_DIR))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libssh/Config.in",
    "content": "config BR2_PACKAGE_LIBSSH\n\tbool \"libssh\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_OPENSSL if !(BR2_PACKAGE_MBEDTLS || BR2_PACKAGE_LIBGCRYPT)\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  libssh is a multiplatform C library implementing the SSHv2\n\t  and SSHv1 protocol on client and server side. With libssh,\n\t  you can remotely execute programs, transfer files, use a\n\t  secure and transparent tunnel for your remote applications.\n\n\t  http://www.libssh.org/\n\nif BR2_PACKAGE_LIBSSH\n\nconfig BR2_PACKAGE_LIBSSH_SERVER\n\tbool \"server\"\n\thelp\n\t  Enable libssh server support\n\nchoice\n\tprompt \"Crypto Backend\"\n\thelp\n\t  Select crypto library to be used in libssh.\n\nconfig BR2_PACKAGE_LIBSSH_MBEDTLS\n\tbool \"mbedtls\"\n\tdepends on BR2_PACKAGE_MBEDTLS\n\nconfig BR2_PACKAGE_LIBSSH_LIBGCRYPT\n\tbool \"gcrypt\"\n\tdepends on BR2_PACKAGE_LIBGCRYPT\n\nconfig BR2_PACKAGE_LIBSSH_OPENSSL\n\tbool \"openssl\"\n\tdepends on BR2_PACKAGE_OPENSSL\n\nendchoice\n\nendif\n\ncomment \"libssh needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libssh/libssh.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://www.libssh.org/files/0.9/libssh-0.9.6.tar.xz.asc\n# with key 8DFF53E18F2ABC8D8F3C92237EE0FC4DCC014E3D\nsha256  86bcf885bd9b80466fe0e05453c58b877df61afa8ba947a58c356d7f0fab829b  libssh-0.9.6.tar.xz\nsha256  1656186e951db1c010a8485481fa94587f7e53a26d24976bef97945ad0c4df5a  COPYING\n"
  },
  {
    "path": "package/libssh/libssh.mk",
    "content": "################################################################################\n#\n# libssh\n#\n################################################################################\n\nLIBSSH_VERSION_MAJOR = 0.9\nLIBSSH_VERSION = $(LIBSSH_VERSION_MAJOR).6\nLIBSSH_SOURCE = libssh-$(LIBSSH_VERSION).tar.xz\nLIBSSH_SITE = https://www.libssh.org/files/$(LIBSSH_VERSION_MAJOR)\nLIBSSH_LICENSE = LGPL-2.1\nLIBSSH_LICENSE_FILES = COPYING\nLIBSSH_CPE_ID_VENDOR = libssh\nLIBSSH_INSTALL_STAGING = YES\nLIBSSH_SUPPORTS_IN_SOURCE_BUILD = NO\nLIBSSH_CONF_OPTS = \\\n\t-DWITH_STACK_PROTECTOR=OFF \\\n\t-DWITH_EXAMPLES=OFF\n\nifeq ($(BR2_PACKAGE_LIBSSH_SERVER),y)\nLIBSSH_CONF_OPTS += -DWITH_SERVER=ON\nelse\nLIBSSH_CONF_OPTS += -DWITH_SERVER=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLIBSSH_CONF_OPTS += -DWITH_ZLIB=ON\nLIBSSH_DEPENDENCIES += zlib\nelse\nLIBSSH_CONF_OPTS += -DWITH_ZLIB=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBSSH_MBEDTLS),y)\nLIBSSH_CONF_OPTS += -DWITH_MBEDTLS=ON\nLIBSSH_DEPENDENCIES += mbedtls\nelse ifeq ($(BR2_PACKAGE_LIBSSH_LIBGCRYPT),y)\nLIBSSH_CONF_OPTS += -DWITH_GCRYPT=ON\nLIBSSH_DEPENDENCIES += libgcrypt\nelse ifeq ($(BR2_PACKAGE_LIBSSH_OPENSSL),y)\nLIBSSH_DEPENDENCIES += openssl\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libssh2/Config.in",
    "content": "config BR2_PACKAGE_LIBSSH2\n\tbool \"libssh2\"\n\tselect BR2_PACKAGE_OPENSSL if !(BR2_PACKAGE_MBEDTLS || BR2_PACKAGE_LIBGCRYPT)\n\thelp\n\t  libssh2 is a client-side C library implementing the SSH2\n\t  protocol as defined by Internet Drafts: SECSH-TRANS(22),\n\t  SECSH-USERAUTH(25), SECSH-CONNECTION(23), SECSH-ARCH(20),\n\t  SECSH-FILEXFER(06)*, SECSH-DHGEX(04), and SECSH-NUMBERS(10)\n\n\t  http://www.libssh2.org/\n\nif BR2_PACKAGE_LIBSSH2\n\nchoice\n\tprompt \"Crypto Backend\"\n\thelp\n\t  Select crypto library to be used in libssh2.\n\nconfig BR2_PACKAGE_LIBSSH2_MBEDTLS\n\tbool \"mbedtls\"\n\tdepends on BR2_PACKAGE_MBEDTLS\n\nconfig BR2_PACKAGE_LIBSSH2_LIBGCRYPT\n\tbool \"gcrypt\"\n\tdepends on BR2_PACKAGE_LIBGCRYPT\n\nconfig BR2_PACKAGE_LIBSSH2_OPENSSL\n\tbool \"openssl\"\n\tdepends on BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL\n\nendchoice\nendif\n"
  },
  {
    "path": "package/libssh2/libssh2.hash",
    "content": "# Locally calculated\nsha256  2d64e90f3ded394b91d3a2e774ca203a4179f69aebee03003e5a6fa621e41d51  libssh2-1.10.0.tar.gz\nsha256  859e60d760a3446ecaf777339f1eef98c527aea40714384d24b882a83ffdd23a  COPYING\n"
  },
  {
    "path": "package/libssh2/libssh2.mk",
    "content": "################################################################################\n#\n# libssh2\n#\n################################################################################\n\nLIBSSH2_VERSION = 1.10.0\nLIBSSH2_SITE = https://www.libssh2.org/download\nLIBSSH2_LICENSE = BSD\nLIBSSH2_LICENSE_FILES = COPYING\nLIBSSH2_CPE_ID_VENDOR = libssh2\nLIBSSH2_INSTALL_STAGING = YES\nLIBSSH2_CONF_OPTS = --disable-examples-build\n\nifeq ($(BR2_PACKAGE_LIBSSH2_MBEDTLS),y)\nLIBSSH2_DEPENDENCIES += mbedtls\nLIBSSH2_CONF_OPTS += --with-libmbedcrypto-prefix=$(STAGING_DIR)/usr \\\n\t--with-crypto=mbedtls\nelse ifeq ($(BR2_PACKAGE_LIBSSH2_LIBGCRYPT),y)\nLIBSSH2_DEPENDENCIES += libgcrypt\nLIBSSH2_CONF_OPTS += --with-libgcrypt-prefix=$(STAGING_DIR)/usr \\\n\t--with-crypto=libgcrypt\n# configure.ac forgets to link to dependent libraries of gcrypt breaking static\n# linking\nLIBSSH2_CONF_ENV += LIBS=\"`$(STAGING_DIR)/usr/bin/libgcrypt-config --libs`\"\nelse ifeq ($(BR2_PACKAGE_LIBSSH2_OPENSSL),y)\nLIBSSH2_DEPENDENCIES += host-pkgconf openssl\nLIBSSH2_CONF_OPTS += --with-libssl-prefix=$(STAGING_DIR)/usr \\\n\t--with-crypto=openssl\n# configure.ac forgets to link to dependent libraries of openssl breaking static\n# linking\nLIBSSH2_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nendif\n\n# Add zlib support if enabled\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLIBSSH2_DEPENDENCIES += zlib\nLIBSSH2_CONF_OPTS += --with-libz \\\n\t--with-libz-prefix=$(STAGING_DIR)/usr\nelse\nLIBSSH2_CONF_OPTS += --without-libz\nendif\n\nHOST_LIBSSH2_DEPENDENCIES += host-openssl\nHOST_LIBSSH2_CONF_OPTS += --with-openssl \\\n\t--with-libssl-prefix=$(HOST_DIR) \\\n\t--without-libgcrypt\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libstrophe/Config.in",
    "content": "config BR2_PACKAGE_LIBSTROPHE\n\tbool \"libstrophe\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS\n\tselect BR2_PACKAGE_LIBXML2 if !BR2_PACKAGE_EXPAT\n\thelp\n\t  libstrophe is a lightweight XMPP client library written in C.\n\t  It has minimal dependencies and is configurable for various\n\t  environments. It runs well on both Linux, Unix, and Windows\n\t  based platforms.\n\n\t  https://github.com/strophe/libstrophe\n\ncomment \"libstrophe needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libstrophe/libstrophe.hash",
    "content": "# Locally calculated\nsha256  feafee545403d26a44aa573d4adf327d6d07ad3f3466370634d22bbac5bd49ee  libstrophe-0.11.0.tar.xz\nsha256  82476f36ffd5e895a176013c0812166ba7b7d99f3d536fc7f5ed2e33e9f74a08  MIT-LICENSE.txt\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  GPL-LICENSE.txt\n"
  },
  {
    "path": "package/libstrophe/libstrophe.mk",
    "content": "################################################################################\n#\n# libstrophe\n#\n################################################################################\n\nLIBSTROPHE_VERSION = 0.11.0\nLIBSTROPHE_SOURCE = libstrophe-$(LIBSTROPHE_VERSION).tar.xz\nLIBSTROPHE_SITE = https://github.com/strophe/libstrophe/releases/download/$(LIBSTROPHE_VERSION)\nLIBSTROPHE_DEPENDENCIES = host-pkgconf\nLIBSTROPHE_LICENSE = MIT or GPL-3.0\nLIBSTROPHE_LICENSE_FILES = MIT-LICENSE.txt GPL-LICENSE.txt\nLIBSTROPHE_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_EXPAT),y)\nLIBSTROPHE_CONF_OPTS += --without-libxml2\nLIBSTROPHE_DEPENDENCIES += expat\nelse\nLIBSTROPHE_CONF_OPTS += --with-libxml2\nLIBSTROPHE_DEPENDENCIES += libxml2\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBSTROPHE_CONF_OPTS += --with-tls --without-gnutls\nLIBSTROPHE_DEPENDENCIES += openssl\nelse\nLIBSTROPHE_CONF_OPTS += --with-gnutls --without-tls\nLIBSTROPHE_DEPENDENCIES += gnutls\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsvg/0001-fix-expat-static-declaration.patch",
    "content": "Newer expat versions use different declarations of the following functions:\n\nstatic void _svg_parser_sax_start_element ();\nstatic void _svg_parser_sax_end_element ();\nstatic void _svg_parser_sax_characters ();\n\nWe need to patch the libsvg source to not follow into a build error like\n   \"static declaration of 'foo' follows non-static declaration\"\nand use the functions from the expat library instead from the libsvg source.\n\nPatch based on\nhttp://oe-lite.org/redmine/projects/xorg/repository/revisions/c4df7951e846e1be718f37f2455696a1d0861f3d/entry/recipes/cairo/libsvg-0.1.4/gcc4_and_expat.patch\n\nSigned-off-by: Carsten Schoenert <c.schoenert@gmail.com>\n\ndiff -bur libsvg-0.1.4~orig/src/svg_parser_expat.c libsvg-0.1.4/src/svg_parser_expat.c\n--- libsvg-0.1.4~orig/src/svg_parser_expat.c\t2005-02-14 11:26:26.000000000 -0600\n+++ libsvg-0.1.4/src/svg_parser_expat.c\t2006-02-10 21:58:20.000000000 -0600\n@@ -30,6 +30,7 @@\n #include \"svgint.h\"\n #include \"svg_hash.h\"\n \n+#ifndef LIBSVG_EXPAT\n static void\n _svg_parser_sax_start_element (void\t\t*closure,\n \t\t\t       const XML_Char\t*name,\n@@ -43,6 +44,7 @@\n _svg_parser_sax_characters (void\t\t*closure,\n \t\t\t    const XML_Char\t*ch,\n \t\t\t    int\t\t\tlen);\n+#endif\n \n static void\n"
  },
  {
    "path": "package/libsvg/0002-Fix-undefined-symbol-png_set_gray_1_2_4_to_8.patch",
    "content": "From 213e5749947fad08d985eda8d06839efedda78ef Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 5 Mar 2015 21:42:52 +0100\nSubject: [PATCH] Fix undefined symbol png_set_gray_1_2_4_to_8\n\nSince libpng-1.4.0 the function png_set_gray_1_2_4_to_8() was\nremoved, the replacement function is called\npng_set_expand_gray_1_2_4_to_8() (see [1]).\n\n[1] http://libpng.sourceforge.net/ANNOUNCE-1.4.0.txt\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/svg_image.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/svg_image.c b/src/svg_image.c\nindex cd8a95a..f256943 100755\n--- a/src/svg_image.c\n+++ b/src/svg_image.c\n@@ -271,7 +271,7 @@ _svg_image_read_png (const char\t\t*filename,\n \n     /* expand gray bit depth if needed */\n     if (color_type == PNG_COLOR_TYPE_GRAY && depth < 8)\n-\tpng_set_gray_1_2_4_to_8 (png);\n+\tpng_set_expand_gray_1_2_4_to_8 (png);\n \n     /* transform transparency to alpha */\n     if (png_get_valid(png, info, PNG_INFO_tRNS))\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/libsvg/Config.in",
    "content": "config BR2_PACKAGE_LIBSVG\n\tbool \"libsvg\"\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBXML2 if !BR2_PACKAGE_EXPAT\n\thelp\n\t  Libsvg provides a parser for SVG content in files or buffers.\n\t  Libsvg does not do any rendering, but instead provides a\n\t  function-based interface that can be used by various rendering\n\t  engines.\n\n\t  http://cairographics.org/snapshots/\n"
  },
  {
    "path": "package/libsvg/libsvg.hash",
    "content": "# From http://cairographics.org/snapshots/libsvg-0.1.4.tar.gz.md5\nmd5 ce0715e3013f78506795fba16e8455d3 libsvg-0.1.4.tar.gz\n\n# Locally calculated\nsha256  4c3bf9292e676a72b12338691be64d0f38cd7f2ea5e8b67fbbf45f1ed404bc8f  libsvg-0.1.4.tar.gz\nsha256  d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5  COPYING\n"
  },
  {
    "path": "package/libsvg/libsvg.mk",
    "content": "################################################################################\n#\n# libsvg\n#\n################################################################################\n\nLIBSVG_VERSION = 0.1.4\nLIBSVG_SITE = http://cairographics.org/snapshots\nLIBSVG_DEPENDENCIES = host-pkgconf libpng jpeg\nLIBSVG_INSTALL_STAGING = YES\nLIBSVG_LICENSE = LGPL-2.0+\nLIBSVG_LICENSE_FILES = COPYING\n\n# libsvg needs at last a XML parser\nifeq ($(BR2_PACKAGE_EXPAT),y)\nLIBSVG_CONF_OPTS += --with-expat\nLIBSVG_DEPENDENCIES += expat\nelse\nLIBSVG_CONF_OPTS += --with-libxml2\nLIBSVG_DEPENDENCIES += libxml2\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsvg-cairo/Config.in",
    "content": "config BR2_PACKAGE_LIBSVG_CAIRO\n\tbool \"libsvg-cairo\"\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_CAIRO_SVG\n\tselect BR2_PACKAGE_LIBSVG\n\thelp\n\t  Libsvg-cairo provides the ability to render SVG content from\n\t  files or buffers. All rendering is performed using the cairo\n\t  rendering library.\n\n\t  http://cairographics.org\n"
  },
  {
    "path": "package/libsvg-cairo/libsvg-cairo.hash",
    "content": "# From http://cairographics.org/snapshots/libsvg-cairo-0.1.6.tar.gz.md5\nmd5 d79da7b3a60ad8c8e4b902c9b3563047  libsvg-cairo-0.1.6.tar.gz\n\n# Locally calculated\nsha256  a380be6a78ec2938100ce904363815a94068fca372c666b8cc82aa8711a0215c  libsvg-cairo-0.1.6.tar.gz\nsha256  d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f  COPYING\n"
  },
  {
    "path": "package/libsvg-cairo/libsvg-cairo.mk",
    "content": "################################################################################\n#\n# libsvg-cairo\n#\n################################################################################\n\nLIBSVG_CAIRO_VERSION = 0.1.6\nLIBSVG_CAIRO_SITE = http://cairographics.org/snapshots\nLIBSVG_CAIRO_DEPENDENCIES = cairo libsvg\nLIBSVG_CAIRO_INSTALL_STAGING = YES\nLIBSVG_CAIRO_LICENSE = LGPL-2.1+\nLIBSVG_CAIRO_LICENSE_FILES = COPYING\n\nLIBSVG_CAIRO_CONF_OPTS = --without-x\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libsvgtiny/0001-disable-debug-printfs.patch",
    "content": "svntiny: svntiny_gradient.c: only print debugging if GRADIENT_DEBUG is enabled\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n---\n src/svgtiny_gradient.c |   23 ++++++++++++++++++++++-\n 1 file changed, 22 insertions(+), 1 deletion(-)\n\nIndex: libsvgtiny/src/svgtiny_gradient.c\n===================================================================\n--- libsvgtiny.orig/src/svgtiny_gradient.c\n+++ libsvgtiny/src/svgtiny_gradient.c\n@@ -30,8 +30,9 @@ void svgtiny_find_gradient(const char *i\n {\n \txmlNode *gradient;\n \n+#ifdef GRADIENT_DEBUG\n \tfprintf(stderr, \"svgtiny_find_gradient: id \\\"%s\\\"\\n\", id);\n-\n+#endif\n \tstate->linear_gradient_stop_count = 0;\n \tstate->gradient_x1 = \"0%\";\n \tstate->gradient_y1 = \"0%\";\n@@ -47,13 +48,17 @@ void svgtiny_find_gradient(const char *i\n \n \tgradient = svgtiny_find_element_by_id(\n \t\t\t(xmlNode *) state->document, id);\n+#ifdef GRADIENT_DEBUG\n \tfprintf(stderr, \"gradient %p\\n\", (void *) gradient);\n+#endif\n \tif (!gradient) {\n \t\tfprintf(stderr, \"gradient \\\"%s\\\" not found\\n\", id);\n \t\treturn;\n \t}\n \n+#ifdef GRADIENT_DEBUG\n \tfprintf(stderr, \"gradient name \\\"%s\\\"\\n\", gradient->name);\n+#endif\n \tif (strcmp((const char *) gradient->name, \"linearGradient\") == 0) {\n \t\tsvgtiny_parse_linear_gradient(gradient, state);\n \t}\n@@ -98,8 +103,10 @@ svgtiny_code svgtiny_parse_linear_gradie\n \t\t\t\treturn svgtiny_OUT_OF_MEMORY;\n \t\t\tsvgtiny_parse_transform(s, &a, &b, &c, &d, &e, &f);\n \t\t\tfree(s);\n+#ifdef GRADIENT_DEBUG\n \t\t\tfprintf(stderr, \"transform %g %g %g %g %g %g\\n\",\n \t\t\t\t\ta, b, c, d, e, f);\n+#endif\n \t\t\tstate->gradient_transform.a = a;\n \t\t\tstate->gradient_transform.b = b;\n \t\t\tstate->gradient_transform.c = c;\n@@ -143,7 +150,9 @@ svgtiny_code svgtiny_parse_linear_gradie\n \t\t}\n \n \t\tif (offset != -1 && color != svgtiny_TRANSPARENT) {\n+#ifdef GRADIENT_DEBUG\n \t\t\tfprintf(stderr, \"stop %g %x\\n\", offset, color);\n+#endif\n \t\t\tstate->gradient_stop[i].offset = offset;\n \t\t\tstate->gradient_stop[i].color = color;\n \t\t\ti++;\n@@ -220,9 +229,11 @@ svgtiny_code svgtiny_add_path_linear_gra\n \t#endif\n \n \t/* compute gradient vector */\n+#ifdef GRADIENT_DEBUG\n \tfprintf(stderr, \"x1 %s, y1 %s, x2 %s, y2 %s\\n\",\n \t\t\tstate->gradient_x1, state->gradient_y1,\n \t\t\tstate->gradient_x2, state->gradient_y2);\n+#endif\n \tif (!state->gradient_user_space_on_use) {\n \t\tgradient_x0 = object_x0 +\n \t\t\t\tsvgtiny_parse_length(state->gradient_x1,\n@@ -297,9 +308,11 @@ svgtiny_code svgtiny_add_path_linear_gra\n \n \t/* invert gradient transform for applying to vertices */\n \tsvgtiny_invert_matrix(&state->gradient_transform.a, trans);\n+#ifdef GRADIENT_DEBUG\n \tfprintf(stderr, \"inverse transform %g %g %g %g %g %g\\n\",\n \t\t\ttrans[0], trans[1], trans[2], trans[3],\n \t\t\ttrans[4], trans[5]);\n+#endif\n \n \t/* compute points on the path for triangle vertices */\n \t/* r, r0, r1 are distance along gradient vector */\n@@ -372,8 +385,10 @@ svgtiny_code svgtiny_add_path_linear_gra\n \t\tsteps = ceilf(fabsf(r1 - r0) / 0.05);\n \t\tif (steps == 0)\n \t\t\tsteps = 1;\n+#ifdef GRADIENT_DEBUG\n \t\tfprintf(stderr, \"r0 %g, r1 %g, steps %i\\n\",\n \t\t\t\tr0, r1, steps);\n+#endif\n \n \t\t/* loop through intermediate points */\n \t\tfor (z = 1; z != steps; z++) {\n@@ -398,7 +413,9 @@ svgtiny_code svgtiny_add_path_linear_gra\n \t\t\tr = ((x_trans - gradient_x0) * gradient_dx +\n \t\t\t\t\t(y_trans - gradient_y0) * gradient_dy) /\n \t\t\t\t\tgradient_norm_squared;\n+#ifdef GRADIENT_DEBUG\n \t\t\tfprintf(stderr, \"(%g %g [%g]) \", x, y, r);\n+#endif\n \t\t\tpoint = svgtiny_list_push(pts);\n \t\t\tif (!point) {\n \t\t\t\tsvgtiny_list_free(pts);\n@@ -412,14 +429,18 @@ svgtiny_code svgtiny_add_path_linear_gra\n \t\t\t\tmin_pt = svgtiny_list_size(pts) - 1;\n \t\t\t}\n \t\t}\n+#ifdef GRADIENT_DEBUG\n \t\tfprintf(stderr, \"\\n\");\n+#endif\n \n \t\t/* next segment start point is this segment end point */\n \t\tx0 = x1;\n \t\ty0 = y1;\n \t}\n+#ifdef GRADIENT_DEBUG\n \tfprintf(stderr, \"pts size %i, min_pt %i, min_r %.3f\\n\",\n \t\t\tsvgtiny_list_size(pts), min_pt, min_r);\n+#endif\n \n \t/* render triangles */\n \tstop_count = state->linear_gradient_stop_count;\n"
  },
  {
    "path": "package/libsvgtiny/0002-Remove-Werror.patch",
    "content": "Remove -Werror from Makefile\n\nglibc-2.20 includes some changes to the include/features.h file\nintroduced by this commit:\n\n  https://sourceware.org/git/?p=glibc.git;a=commit;h=ade40b10ff5fa59a318cf55b9d8414b758e8df78\n\nThose changes make libsvgtiny fail because some warnings are thrown and\nthe build system is using the -Werror option. We disable this to be able\nto build it, or otherwise we will see errors like this one:\n\nGPERF: src/colors.gperf\nCOMPILE: build-Linux-Linux-release-lib-static/src_colors.c\nIn file included from\n/br/output/host/usr/mipsel-buildroot-linux-gnu/sysroot/usr/include/string.h:25:0,\n\t\t from src/colors.gperf:16:\n/br/output/host/usr/mipsel-buildroot-linux-gnu/sysroot/usr/include/features.h:148:3:\nerror: #warning \"_BSD_SOURCE and _SVID_SOURCE are deprecated, use\n_DEFAULT_SOURCE\" [-Werror=cpp]\n\nand this one:\n\nIn file included from src/colors.gperf:18:0:\n/home/ldap/vriera/work/mips-buildroots/mips32/output/build/libsvgtiny-12121/src/svgtiny_internal.h:71:0:\nerror: \"strndup\" redefined [-Werror]\n\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n\ndiff -rup a/Makefile b/Makefile\n--- a/Makefile\t2010-01-03 23:37:39.000000000 +0000\n+++ b/Makefile\t2014-12-11 11:35:37.241903884 +0000\n@@ -13,12 +13,6 @@ TESTRUNNER := $(ECHO)\n WARNFLAGS := -Wall -W -Wundef -Wpointer-arith -Wcast-align \\\n \t-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \\\n \t-Wmissing-declarations -Wnested-externs -pedantic\n-# BeOS/Haiku/AmigaOS4 standard library headers create warnings\n-ifneq ($(TARGET),beos)\n-  ifneq ($(TARGET),AmigaOS)\n-    WARNFLAGS := $(WARNFLAGS) -Werror\n-  endif\n-endif\n CFLAGS := -D_BSD_SOURCE -I$(CURDIR)/include/ \\\n \t-I$(CURDIR)/src $(WARNFLAGS) $(CFLAGS)\n ifneq ($(GCCVER),2)\n"
  },
  {
    "path": "package/libsvgtiny/0003-Hopefully-silence-warnings-about-inlines-and-non-inlines-calling-one.patch",
    "content": "From 21b4836ac9d6c6725590a925daa5d17eda9843e9 Mon Sep 17 00:00:00 2001\nFrom: Daniel Silverstone <dsilvers@digital-scurf.org>\nDate: Sat, 26 Apr 2014 16:24:54 +0100\nSubject: Hopefully silence warnings about inlines and non inlines calling one\n another.\n\n[Retrieved from:\nhttps://source.netsurf-browser.org/libsvgtiny.git/commit/src?id=21b4836ac9d6c6725590a925daa5d17eda9843e9]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/colors.gperf | 9 +++++++++\n 1 file changed, 9 insertions(+)\n\ndiff --git a/src/colors.gperf b/src/colors.gperf\nindex 89152d2..96d5b9e 100644\n--- a/src/colors.gperf\n+++ b/src/colors.gperf\n@@ -16,6 +16,15 @@\n #include <string.h>\n #include \"svgtiny.h\"\n #include \"svgtiny_internal.h\"\n+\n+/* This unusual define shennanigan is to try and prevent the gperf\n+ * generated function from being inlined.  This is pointless given\n+ * it (a) is in a separate .c file and (b) has external linkage.\n+ */\n+#ifdef __inline\n+#undef __inline\n+#define __inline\n+#endif\n %}\n \n struct svgtiny_named_color;\n-- \ncgit v1.2.1\n\n"
  },
  {
    "path": "package/libsvgtiny/0004-Build-Include-gperf-generated-code-directly.patch",
    "content": "From 4390f1c84e8fee51fc22468821e6fc158e783053 Mon Sep 17 00:00:00 2001\nFrom: Michael Drake <michael.drake@codethink.co.uk>\nDate: Thu, 20 Apr 2017 10:51:07 +0100\nSubject: Build: Include gperf-generated code directly.\n\nPreviously we built the generated code separatly and then linked to\nit.  However, this caused problems with certain compilers and gperf\nversions.  This change includes the generated code directly in\nsvgtiny.c instead, which is the only place its used.\n\n[Retrieved from:\nhttps://source.netsurf-browser.org/libsvgtiny.git/commit/src?id=4390f1c84e8fee51fc22468821e6fc158e783053]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/Makefile           | 13 +++++++------\n src/colors.gperf       |  8 --------\n src/svgtiny.c          |  3 +++\n src/svgtiny_internal.h |  5 -----\n 4 files changed, 10 insertions(+), 19 deletions(-)\n\n(limited to 'src')\n\ndiff --git a/src/Makefile b/src/Makefile\nindex a979720..fb8a72f 100644\n--- a/src/Makefile\n+++ b/src/Makefile\n@@ -1,13 +1,14 @@\n # Sources\n DIR_SOURCES := svgtiny.c svgtiny_gradient.c svgtiny_list.c\n \n-SOURCES := $(SOURCES) $(BUILDDIR)/src_colors.c\n+SOURCES := $(SOURCES)\n \n-$(BUILDDIR)/src_colors.c: src/colors.gperf\n+$(DIR)autogenerated_colors.c: src/colors.gperf\n \t$(VQ)$(ECHO) \"   GPERF: $<\"\n-\t$(Q)gperf --output-file=$@.tmp $<\n-# Hack for GCC 4.2 compatibility (gperf 3.0.4 solves this properly)\n-\t$(Q)$(SED) -e 's/#ifdef __GNUC_STDC_INLINE__/#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__/' $@.tmp >$@\n-\t$(Q)$(RM) $@.tmp\n+\t$(Q)gperf --output-file=$@ $<\n+\n+PRE_TARGETS := $(DIR)autogenerated_colors.c\n+\n+CLEAN_ITEMS := $(DIR)autogenerated_colors.c\n \n include $(NSBUILD)/Makefile.subdir\ndiff --git a/src/colors.gperf b/src/colors.gperf\nindex 96d5b9e..a836787 100644\n--- a/src/colors.gperf\n+++ b/src/colors.gperf\n@@ -17,14 +17,6 @@\n #include \"svgtiny.h\"\n #include \"svgtiny_internal.h\"\n \n-/* This unusual define shennanigan is to try and prevent the gperf\n- * generated function from being inlined.  This is pointless given\n- * it (a) is in a separate .c file and (b) has external linkage.\n- */\n-#ifdef __inline\n-#undef __inline\n-#define __inline\n-#endif\n %}\n \n struct svgtiny_named_color;\ndiff --git a/src/svgtiny.c b/src/svgtiny.c\nindex 4661a58..bbefb88 100644\n--- a/src/svgtiny.c\n+++ b/src/svgtiny.c\n@@ -20,6 +20,9 @@\n #include \"svgtiny.h\"\n #include \"svgtiny_internal.h\"\n \n+/* Source file generated by `gperf`. */\n+#include \"autogenerated_colors.c\"\n+\n #ifndef M_PI\n #define M_PI\t\t3.14159265358979323846\n #endif\ndiff --git a/src/svgtiny_internal.h b/src/svgtiny_internal.h\nindex 158d230..6bf5d64 100644\n--- a/src/svgtiny_internal.h\n+++ b/src/svgtiny_internal.h\n@@ -102,9 +102,4 @@ void *svgtiny_list_get(struct svgtiny_list *list,\n void *svgtiny_list_push(struct svgtiny_list *list);\n void svgtiny_list_free(struct svgtiny_list *list);\n \n-/* colors.gperf */\n-const struct svgtiny_named_color *\n-\t\tsvgtiny_color_lookup(register const char *str,\n-\t\t\t\tregister unsigned int len);\n-\n #endif\n-- \ncgit v1.2.1\n\n"
  },
  {
    "path": "package/libsvgtiny/Config.in",
    "content": "config BR2_PACKAGE_LIBSVGTINY\n\tbool \"libsvgtiny\"\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  Libsvgtiny is an implementation of SVG Tiny, written in C.\n\t  It is currently in development for use with NetSurf and is\n\t  intended to be suitable for use in other projects too.\n\n\t  http://www.netsurf-browser.org/projects/libsvgtiny/\n"
  },
  {
    "path": "package/libsvgtiny/libsvgtiny.hash",
    "content": "# Locally computed\nsha256  917850350d014c953f2af0fb92f0eeb25652619710922d467c98f8109fb92baf  libsvgtiny-ea9d99fc8b231c22d06168135e181d61f4eb2f06-br1.tar.gz\nsha256  92b965c77be71661cae51425a6b40a5ca274f44cc13c723c90fb471a9a26a828  README\n"
  },
  {
    "path": "package/libsvgtiny/libsvgtiny.mk",
    "content": "################################################################################\n#\n# libsvgtiny\n#\n################################################################################\n\nLIBSVGTINY_SITE = http://git.netsurf-browser.org/libsvgtiny.git\nLIBSVGTINY_SITE_METHOD = git\nLIBSVGTINY_VERSION = ea9d99fc8b231c22d06168135e181d61f4eb2f06\nLIBSVGTINY_INSTALL_STAGING = YES\nLIBSVGTINY_DEPENDENCIES = \\\n\tlibxml2 host-gperf host-pkgconf host-netsurf-buildsystem\nLIBSVGTINY_LICENSE = MIT\nLIBSVGTINY_LICENSE_FILES = README\n\n# The libsvgtiny build system cannot build both the shared and static\n# libraries. So when the Buildroot configuration requests to build\n# both the shared and static variants, we build only the shared one.\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nLIBSVGTINY_COMPONENT_TYPE = lib-shared\nelse\nLIBSVGTINY_COMPONENT_TYPE = lib-static\nendif\n\ndefine LIBSVGTINY_CONFIGURE_CMDS\n\tln -sf $(HOST_DIR)/share/netsurf-buildsystem $(@D)/build\nendef\n\n# Use $(MAKE1) since parallel build fails\ndefine LIBSVGTINY_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) PREFIX=/usr \\\n\t\tCOMPONENT_TYPE=$(LIBSVGTINY_COMPONENT_TYPE)\nendef\n\ndefine LIBSVGTINY_INSTALL_STAGING_CMDS\n\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(MAKE1) -C $(@D) PREFIX=/usr DESTDIR=$(STAGING_DIR) \\\n\t\tCOMPONENT_TYPE=$(LIBSVGTINY_COMPONENT_TYPE) install\nendef\n\ndefine LIBSVGTINY_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(MAKE1) -C $(@D) PREFIX=/usr DESTDIR=$(TARGET_DIR) \\\n\t\tCOMPONENT_TYPE=$(LIBSVGTINY_COMPONENT_TYPE) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libsysfs/Config.in",
    "content": "config BR2_PACKAGE_LIBSYSFS\n\tbool \"libsysfs\"\n\thelp\n\t  These are a set of utilities built upon sysfs, a filesystem in\n\t  Linux 2.6 kernels that exposes a system's device tree.\n\n\t  https://github.com/linux-ras/sysfsutils\n"
  },
  {
    "path": "package/libsysfs/libsysfs.hash",
    "content": "# Locally computed:\nsha256  f7f669d27c997d3eb3f3e014b4c0aa1aa4d07ce4d6f9e41fa835240f2bf38810  libsysfs-2.1.1.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  cmd/GPL\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  lib/LGPL\n"
  },
  {
    "path": "package/libsysfs/libsysfs.mk",
    "content": "################################################################################\n#\n# libsysfs\n#\n################################################################################\n\nLIBSYSFS_VERSION = 2.1.1\nLIBSYSFS_SITE = $(call github,linux-ras,sysfsutils,v$(LIBSYSFS_VERSION))\nLIBSYSFS_INSTALL_STAGING = YES\nLIBSYSFS_LICENSE = GPL-2.0 (utilities), LGPL-2.1+ (library)\nLIBSYSFS_LICENSE_FILES = cmd/GPL lib/LGPL\nLIBSYSFS_CPE_ID_VENDOR = sysfsutils_project\nLIBSYSFS_CPE_ID_PRODUCT = sysfsutils\n# From git\nLIBSYSFS_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libtalloc/Config.in",
    "content": "config BR2_PACKAGE_LIBTALLOC\n\tbool \"libtalloc\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  talloc is a hierarchical, reference counted memory pool\n\t  system with destructors. It is the core memory allocator\n\t  used in Samba.\n\n\t  https://talloc.samba.org/talloc/doc/html/index.html\n\ncomment \"libtalloc needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libtalloc/libtalloc-cache.txt",
    "content": "Checking simple C program: OK\nrpath library support: OK\n-Wl,--version-script support: OK\nChecking getconf LFS_CFLAGS: NO\nChecking for large file support without additional flags: OK\nChecking for -D_LARGE_FILES: OK\nChecking correct behavior of strtoll: NO\nChecking for working strptime: OK\nChecking for C99 vsnprintf: OK\nChecking for HAVE_SHARED_MMAP: OK\nChecking for HAVE_MREMAP: OK\nChecking for HAVE_INCOHERENT_MMAP: NO\nChecking for HAVE_SECURE_MKSTEMP: OK\nChecking for HAVE_IFACE_GETIFADDRS: OK\nChecking for kernel change notify support: OK\nChecking for Linux kernel oplocks: OK\nChecking for kernel share modes: OK\nChecking if can we convert from CP850 to UCS-2LE: OK\nChecking if can we convert from UTF-8 to UCS-2LE: OK\nChecking whether we can use Linux thread-specific credentials with 32-bit system calls: OK\nChecking whether we can use Linux thread-specific credentials: OK\nChecking whether setreuid is available: OK\nChecking whether setresuid is available: OK\nChecking whether seteuid is available: OK\nChecking whether fcntl locking is available: OK\nChecking whether fcntl lock supports open file description locks: OK\nChecking for the maximum value of the 'time_t' type: OK\nChecking whether the realpath function allows a NULL argument: OK\nChecking whether POSIX capabilities are available: OK\nChecking for ftruncate extend: OK\nvfs_fileid checking for statfs() and struct statfs.f_fsid: OK\ngetcwd takes a NULL argument: OK\nChecking uname sysname type: \"Linux\"\nChecking uname release type: \"5.4.0\"\nChecking uname version type: \"#1 Tue Oct 1 00:00:00 UTC 2020\"\nChecking value of NSIG: \"65\"\nChecking value of _NSIG: \"65\"\nChecking value of SIGRTMAX: \"64\"\nChecking value of SIGRTMIN: \"34\"\nChecking errno of iconv for illegal multibyte sequence: \"0\"\nchecking for clnt_create(): OK\nChecking for a 64-bit host to support lmdb: NO\n"
  },
  {
    "path": "package/libtalloc/libtalloc.hash",
    "content": "# Locally calculated\nsha256  6be95b2368bd0af1c4cd7a88146eb6ceea18e46c3ffc9330bf6262b40d1d8aaa  talloc-2.3.3.tar.gz\nsha256  f8340c449dd64a55c6605b02fcad2aec6f473612ac6026739a22995380a8043c  talloc.h\n"
  },
  {
    "path": "package/libtalloc/libtalloc.mk",
    "content": "################################################################################\n#\n# libtalloc\n#\n################################################################################\n\nLIBTALLOC_VERSION = 2.3.3\nLIBTALLOC_SOURCE = talloc-$(LIBTALLOC_VERSION).tar.gz\nLIBTALLOC_SITE = https://www.samba.org/ftp/talloc\nLIBTALLOC_LICENSE = LGPL-3.0+\nLIBTALLOC_LICENSE_FILES = talloc.h\nLIBTALLOC_INSTALL_STAGING = YES\n\n# --with-libiconv= is unconditionally passed, even if libiconv is not\n# present. Indeed, waf will search for libiconv by default in\n# /usr/local. Because of a bug in some waf python script, /usr/local\n# is then used in many subsequent and unrelated checks, which\n# ultimately causes a failure when BR2_COMPILER_PARANOID_UNSAFE_PATH\n# is set.  However no need to set libiconv as a dependency of\n# libtalloc since it's optional.\nLIBTALLOC_CONF_OPTS += --cross-compile \\\n\t\t--cross-answers=$(@D)/cache.txt \\\n\t\t--hostcc=gcc \\\n\t\t--with-libiconv=$(STAGING_DIR)/usr\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nLIBTALLOC_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`\nLIBTALLOC_LDFLAGS += `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`\nLIBTALLOC_DEPENDENCIES += libtirpc host-pkgconf\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nLIBTALLOC_DEPENDENCIES += host-python3 python3\nLIBTALLOC_CONF_ENV += \\\n\tPYTHON=\"$(HOST_DIR)/bin/python3\" \\\n\tPYTHON_CONFIG=\"$(STAGING_DIR)/usr/bin/python3-config\"\n# There isn't any --enable-python configuration option\nelse\nLIBTALLOC_CONF_OPTS += --disable-python\nendif\n\nLIBTALLOC_WAF = ./buildtools/bin/waf\n\n# like samba4, libtalloc uses the waf build system which requires a\n# proper answers file to configure package before build\ndefine LIBTALLOC_POPULATE_WAF_CACHE\n\t$(INSTALL) -m 0644 package/libtalloc/libtalloc-cache.txt $(@D)/cache.txt\n\techo 'Checking uname machine type: $(BR2_ARCH)' >> $(@D)/cache.txt\nendef\n\nLIBTALLOC_PRE_CONFIGURE_HOOKS += LIBTALLOC_POPULATE_WAF_CACHE\n\n$(eval $(waf-package))\n"
  },
  {
    "path": "package/libtasn1/0001-fuzz-Makefile.am-do-not-force-static.patch",
    "content": "From cf1b20f3d881a1cfbf8cae1f615f45a5a4fbb3b4 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 22 Apr 2020 18:35:55 +0200\nSubject: [PATCH] fuzz/Makefile.am: do not force static\n\nDon't force static when linking corpus2arry to libtasn1 otherwise the\nbuild will fail if libtasn1 has been built only as a shared library:\n\n  CCLD     corpus2array\n/home/fabrice/buildroot/output/host/lib/gcc/arm-buildroot-linux-musleabihf/8.4.0/../../../../arm-buildroot-linux-musleabihf/bin/ld: attempted static link of dynamic object `../lib/.libs/libtasn1.so'\ncollect2: error: ld returned 1 exit status\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.com/gnutls/libtasn1/-/merge_requests/61]\n---\n fuzz/Makefile.am | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/fuzz/Makefile.am b/fuzz/Makefile.am\nindex c6310d1..1fb7152 100644\n--- a/fuzz/Makefile.am\n+++ b/fuzz/Makefile.am\n@@ -26,7 +26,7 @@ AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) $(CODE_COVERAGE_CFLAGS)\n AM_CPPFLAGS = -I$(top_builddir)/lib/includes -I$(top_srcdir)/lib/includes -I$(srcdir) \\\n  -I$(top_builddir)/lib/gl -I$(top_srcdir)/lib/gl -DSRCDIR=\\\"$(abs_srcdir)\\\" \\\n  $(CODE_COVERAGE_CPPFLAGS)\n-AM_LDFLAGS = -no-install -static\n+AM_LDFLAGS = -no-install\n \n LDADD = ../lib/gl/libgnu.la ../lib/libtasn1.la $(FUZZ_LIBS) $(CODE_COVERAGE_LIBS)\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/libtasn1/Config.in",
    "content": "config BR2_PACKAGE_LIBTASN1\n\tbool \"libtasn1\"\n\thelp\n\t  ASN.1 library\n\n\t  http://www.gnu.org/software/libtasn1\n"
  },
  {
    "path": "package/libtasn1/libtasn1.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://ftp.gnu.org/gnu/libtasn1/libtasn1-4.17.0.tar.gz.sig\nsha256  ece7551cea7922b8e10d7ebc70bc2248d1fdd73351646a2d6a8d68a9421c45a5  libtasn1-4.17.0.tar.gz\n# Locally calculated\nsha256  7446831f659f7ebfd8d497acc7f05dfa8e31c6cb6ba1b45df33d4895ab80f5a6  COPYING\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  doc/COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  doc/COPYING.LESSER\n"
  },
  {
    "path": "package/libtasn1/libtasn1.mk",
    "content": "################################################################################\n#\n# libtasn1\n#\n################################################################################\n\nLIBTASN1_VERSION = 4.17.0\nLIBTASN1_SITE = $(BR2_GNU_MIRROR)/libtasn1\nLIBTASN1_DEPENDENCIES = host-bison host-pkgconf\nLIBTASN1_LICENSE = GPL-3.0+ (tests, tools), LGPL-2.1+ (library)\nLIBTASN1_LICENSE_FILES = COPYING doc/COPYING doc/COPYING.LESSER\nLIBTASN1_CPE_ID_VENDOR = gnu\nLIBTASN1_INSTALL_STAGING = YES\n\n# We're patching fuzz/Makefile.am\nLIBTASN1_AUTORECONF = YES\n\n# 'missing' fallback logic botched so disable it completely\nLIBTASN1_CONF_ENV = MAKEINFO=\"true\"\n\nLIBTASN1_CONF_OPTS = CFLAGS=\"$(TARGET_CFLAGS) -std=gnu99\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libteam/0001-revert-disregard-current-state.patch",
    "content": "From 61efd6de2fbb8ee077863ee5a355ac3dfd9365b9 Mon Sep 17 00:00:00 2001\nFrom: Xin Long <lucien.xin@gmail.com>\nDate: Tue, 1 Sep 2020 13:59:27 +0800\nSubject: [PATCH] Revert \"teamd: Disregard current state when considering port\n enablement\"\n\nThis reverts commit deadb5b715227429a1879b187f5906b39151eca9.\n\nAs Patrick noticed, with that commit, teamd_port_check_enable()\nwould set the team port to the new state unconditionally, which\ntriggers another change message from kernel to userspace, then\nteamd_port_check_enable() is called again to set the team port\nto the new state.\n\nThis would go around and around to update the team port state,\nand even cause teamd to consume 100% cpu.\n\nAs the issue caused by that commit is serious, it has to be\nreverted. As for the issued fixed by that commit, I would\npropose a new fix later.\n\nSigned-off-by: Jiri Pirko <jiri@nvidia.com>\n---\n teamd/teamd_per_port.c | 8 ++++++--\n 1 file changed, 6 insertions(+), 2 deletions(-)\n\ndiff --git a/teamd/teamd_per_port.c b/teamd/teamd_per_port.c\nindex 166da57..d429753 100644\n--- a/teamd/teamd_per_port.c\n+++ b/teamd/teamd_per_port.c\n@@ -442,14 +442,18 @@ int teamd_port_check_enable(struct teamd_context *ctx,\n \t\t\t    bool should_enable, bool should_disable)\n {\n \tbool new_enabled_state;\n+\tbool curr_enabled_state;\n \tint err;\n \n \tif (!teamd_port_present(ctx, tdport))\n \t\treturn 0;\n+\terr = teamd_port_enabled(ctx, tdport, &curr_enabled_state);\n+\tif (err)\n+\t\treturn err;\n \n-\tif (should_enable)\n+\tif (!curr_enabled_state && should_enable)\n \t\tnew_enabled_state = true;\n-\telse if (should_disable)\n+\telse if (curr_enabled_state && should_disable)\n \t\tnew_enabled_state = false;\n \telse\n \t\treturn 0;\n"
  },
  {
    "path": "package/libteam/0002-fix-build-on-openwrt-musl-libc.patch",
    "content": "From 267f24839536234ca621d4fd0466d3b57cb6dccd Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Pavel=20=C5=A0imerda?= <code@simerda.eu>\nDate: Tue, 12 Jan 2021 04:41:56 +0100\nSubject: [PATCH] fix build on OpenWRT/musl-libc\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSigned-off-by: Pavel Šimerda <code@simerda.eu>\nSigned-off-by: Jiri Pirko <jiri@nvidia.com>\n---\n teamd/teamd_runner_lacp.c | 2 --\n utils/teamnl.c            | 1 +\n 2 files changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c\nindex 9437f05..f524be2 100644\n--- a/teamd/teamd_runner_lacp.c\n+++ b/teamd/teamd_runner_lacp.c\n@@ -23,9 +23,7 @@\n #include <unistd.h>\n #include <limits.h>\n #include <sys/ioctl.h>\n-#include <linux/if_ether.h>\n #include <sys/socket.h>\n-#include <linux/netdevice.h>\n #include <netinet/in.h>\n #include <errno.h>\n #include <team.h>\ndiff --git a/utils/teamnl.c b/utils/teamnl.c\nindex c53345d..ec2b435 100644\n--- a/utils/teamnl.c\n+++ b/utils/teamnl.c\n@@ -24,6 +24,7 @@\n #include <getopt.h>\n #include <errno.h>\n #include <sys/signalfd.h>\n+#include <sys/select.h>\n #include <signal.h>\n #include <unistd.h>\n #include <team.h>\n"
  },
  {
    "path": "package/libteam/0003-increase-wait-time-for-daemon-kill.patch",
    "content": "From 6875e6c8efb0fe86766b3d4f1d0db390af6998b7 Mon Sep 17 00:00:00 2001\nFrom: Hangbin Liu <liuhangbin@gmail.com>\nDate: Tue, 15 Dec 2020 19:33:17 +0800\nSubject: [PATCH] teamd: increase the waitting time for daemon killing\n\nIn the current code, we wait for at most 5s when kill the daemon pid.\nBut in some environment, it may need more time. Then the teamd -k will\nfailed and return error \"Failed to kill daemon: Timer expired\".\n\nLet's increase the value to have enough time. Here is the reuslt with\nthis patch:\n\n$ time libteam/teamd/teamd -k -t team0\n\nreal    0m10.442s\nuser    0m0.017s\nsys     0m0.016s\n\nSigned-off-by: Hangbin Liu <liuhangbin@gmail.com>\nSigned-off-by: Jiri Pirko <jiri@nvidia.com>\n---\n teamd/teamd.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/teamd/teamd.c b/teamd/teamd.c\nindex 9360cbf..b310140 100644\n--- a/teamd/teamd.c\n+++ b/teamd/teamd.c\n@@ -1858,7 +1858,7 @@ int main(int argc, char **argv)\n \t\tbreak;\n \tcase DAEMON_CMD_KILL:\n \t\tif (daemon_pid_file_is_running() > 0) {\n-\t\t\terr = daemon_pid_file_kill_wait(SIGTERM, 5);\n+\t\t\terr = daemon_pid_file_kill_wait(SIGTERM, 30);\n \t\t\tif (err)\n \t\t\t\tteamd_log_warn(\"Failed to kill daemon: %s\",\n \t\t\t\t\t       strerror(errno));\n"
  },
  {
    "path": "package/libteam/Config.in",
    "content": "config BR2_PACKAGE_LIBTEAM\n\tbool \"libteam\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # libnl-tools\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tselect BR2_PACKAGE_JANSSON\n\tselect BR2_PACKAGE_LIBDAEMON\n\tselect BR2_PACKAGE_LIBNL\n\tselect BR2_PACKAGE_LIBNL_TOOLS\n\thelp\n\t  The purpose of the Team driver is to provide a mechanism to\n\t  team multiple NICs (ports) into one logical one (teamdev) at\n\t  L2 layer. The process is called \"channel bonding\", \"Ethernet\n\t  bonding\", \"channel teaming\", \"link aggregation\", etc.\n\n\t  Team tries to provide similar functionality as the bonding\n\t  driver, however architecturally it is quite different. Team is\n\t  modular, userspace driven, very lean and efficient, and it\n\t  does have some distinct advantages over bonding. The way Team\n\t  is configured differs dramatically from the way bonding is.\n\n\t  If building the kernel with Buildroot, basic team support is\n\t  automatically enabled, but you will still need to enable the\n\t  modes you need, e.g. activebackup or loadbalance (e.g. with a\n\t  config fragment or a custom config).\n\n\t  https://github.com/jpirko/libteam\n\ncomment \"libteam needs MMU and a toolchain w/ dynamic library and threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libteam/libteam.hash",
    "content": "# Locally calculated\nsha256  c69f7cf5a98203d66db10e67b396fe325b77a5a9491d1e07e8a07cba3ba841bb  libteam-1.31.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/libteam/libteam.mk",
    "content": "################################################################################\n#\n# libteam\n#\n################################################################################\n\nLIBTEAM_VERSION = 1.31\nLIBTEAM_SITE = $(call github,jpirko,libteam,v$(LIBTEAM_VERSION))\nLIBTEAM_LICENSE = LGPL-2.1+\nLIBTEAM_LICENSE_FILES = COPYING\nLIBTEAM_DEPENDENCIES = host-pkgconf jansson libdaemon libnl\nLIBTEAM_AUTORECONF = YES\nLIBTEAM_INSTALL_STAGING = YES\n\n# Note: this enables basic team support, use a custom kernel config, or\n#       fragment, to enable team modes, e.g. activebackup or loadbalance\ndefine LIBTEAM_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETDEVICES)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NET_CORE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NET_TEAM)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libtelnet/0001-fix-compilation-without-zlib.patch",
    "content": "From 1670ca128118be1d914fc89223e94c4cff1bbf03 Mon Sep 17 00:00:00 2001\nFrom: Jan Heylen <jan.heylen@nokia.com>\nDate: Wed, 25 Oct 2017 06:45:49 +0200\nSubject: [PATCH] Fix compilation without zlib\n\nlibtelnet source code uses '#if defived(HAVE_ZLIB)' as conditional flag for\noptional compression support. But the configure(.ac) script does not play well\nwith this: it will define 'HAVE_ZLIB' to either 1 (zlib present) or 0\n(zlib not present). For the C preprocessor, both cases mean 'defined'.\n\nAs a result, compilation will fail when trying to include zlib.h, which is\nmissing.\n\nSigned-off-by: Jan Heylen <jan.heylen@nokia.com>\nSigned-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\nUpstream-status: upstream has changed to cmake iso autotools (but not yet\nreleased) [1] and a pull request exists to fix several issues with that,\nincluding correct handling of zlib detection [2].\n\n[1] https://github.com/seanmiddleditch/libtelnet/commit/4860d10da44929554895c0ef83274f38de68e958\n[2] https://github.com/seanmiddleditch/libtelnet/pull/54\n\ndiff --git a/configure.ac b/configure.ac\nindex 021b48f..c4dac8b 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -33,7 +33,7 @@ AC_HEADER_STDC\n PKG_CHECK_MODULES([zlib],\n   [zlib],\n   [AC_DEFINE([HAVE_ZLIB], [1], [Define to 1 if you have zlib.])],\n-  [AC_DEFINE([HAVE_ZLIB], [0], [Define to 1 if you have zlib.])])\n+  [AC_MSG_NOTICE([not enabling zlib support])])\n \n # Checks for header files.\n \n-- \n2.7.4\n\n"
  },
  {
    "path": "package/libtelnet/Config.in",
    "content": "config BR2_PACKAGE_LIBTELNET\n\tbool \"libtelnet\"\n\thelp\n\t  libtelnet provides safe and correct handling of the core\n\t  TELNET protocol.  In addition to the base TELNET protocol,\n\t  libtelnet also implements the Q method of TELNET option\n\t  negotiation.  libtelnet can be used for writing servers,\n\t  clients, or proxies.\n\n\t  https://github.com/seanmiddleditch/libtelnet\n"
  },
  {
    "path": "package/libtelnet/libtelnet.hash",
    "content": "# Locally computed\nsha256 d2f01a9dc0cc01777844b6d27f0f836dad9a4b9a32a31c7bbde0762480262f25  libtelnet-0.23.tar.gz\nsha256 b1faf309467bc1d0aab9b42d6e86a614e78f8fe3580e289966b5b9f9a8f94d99  COPYING\n"
  },
  {
    "path": "package/libtelnet/libtelnet.mk",
    "content": "################################################################################\n#\n# libtelnet\n#\n################################################################################\n\nLIBTELNET_VERSION = 0.23\nLIBTELNET_SITE = https://github.com/seanmiddleditch/libtelnet/releases/download/$(LIBTELNET_VERSION)\nLIBTELNET_INSTALL_STAGING = YES\nLIBTELNET_CONF_OPTS = --disable-util\nLIBTELNET_DEPENDENCIES = host-pkgconf\nLIBTELNET_LICENSE = Public domain\nLIBTELNET_LICENSE_FILES = COPYING\n\n# for 0001-fix-compilation-without-zlib.patch\nLIBTELNET_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libtextstyle/libtextstyle.hash",
    "content": "# From https://lists.gnu.org/archive/html/info-gnu/2019-05/msg00011.html\nsha1  62f4a6a2fd5f80bfd0e66c497a04094fa3e07b90  gettext-0.20.1.tar.xz\n\n# Locally calculated\nsha256  53f02fbbec9e798b0faaf7c73272f83608e835c6288dd58be6c9bb54624a3800  gettext-0.20.1.tar.xz\nsha256  e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b  COPYING\n"
  },
  {
    "path": "package/libtextstyle/libtextstyle.mk",
    "content": "################################################################################\n#\n# libtextstyle\n#\n################################################################################\n\n# Please keep in sync with package/gettext-gnu/gettext-gnu.mk\nLIBTEXTSTYLE_VERSION = 0.20.1\nLIBTEXTSTYLE_SITE = $(BR2_GNU_MIRROR)/gettext\nLIBTEXTSTYLE_SOURCE = gettext-$(LIBTEXTSTYLE_VERSION).tar.xz\nLIBTEXTSTYLE_INSTALL_STAGING = YES\nLIBTEXTSTYLE_LICENSE = GPL-3.0+\nLIBTEXTSTYLE_LICENSE_FILES = COPYING\nHOST_LIBTEXTSTYLE_DL_SUBDIR = gettext-gnu\nHOST_LIBTEXTSTYLE_SUBDIR = libtextstyle\n\n# gettext-tools require libtextstyle.m4\ndefine HOST_LIBTEXTSTYLE_INSTALL_M4\n\t$(INSTALL) -D -m 0755 $(@D)/libtextstyle/m4/libtextstyle.m4 \\\n\t\t$(ACLOCAL_HOST_DIR)/libtextstyle.m4\nendef\nHOST_LIBTEXTSTYLE_POST_INSTALL_HOOKS += HOST_LIBTEXTSTYLE_INSTALL_M4\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libtheora/0001-link-libtheoradec.patch",
    "content": "libtheoraenc.so needs to be linked to libtheoradec.so in order to avoid\n\nsymbol 'th_comment_query_count': can't resolve symbol in lib '/usr/lib/libtheoraenc.so.1'\n\nwhen starting Freeswitch.\n\nPatch downloaded from\nhttp://www.sisyphus.ru/en/srpm/Sisyphus/libtheora/patches/0\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- libtheora/lib/Makefile.am\n+++ libtheora/lib/Makefile.am\n@@ -153,6 +153,7 @@ libtheoraenc_la_SOURCES = \\\n libtheoraenc_la_LDFLAGS = \\\n   -version-info @THENC_LIB_CURRENT@:@THENC_LIB_REVISION@:@THENC_LIB_AGE@ \\\n   @THEORAENC_LDFLAGS@ $(OGG_LIBS)\n+libtheoraenc_la_LIBADD = libtheoradec.la\n \n libtheora_la_SOURCES = \\\n \t$(decoder_sources) \\\n"
  },
  {
    "path": "package/libtheora/0002-fix-autoreconf.patch",
    "content": "Fix broken autoreconf\n\nDownloaded from upstream git\nhttps://git.xiph.org/?p=theora.git;a=commitdiff;h=28cc6dbd9b2a141df94f60993256a5fca368fa54\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n\nFrom: Tim Terriberry <tterribe@xiph.org>\nDate: Fri, 20 May 2011 20:41:50 +0000 (+0000)\nSubject: Make autoreconf -i -f work.\nX-Git-Url: https://git.xiph.org/?p=theora.git;a=commitdiff_plain;h=28cc6dbd9b2a141df94f60993256a5fca368fa54\n\nMake autoreconf -i -f work.\n\nPatch from David Schleef.\n\nsvn path=/trunk/theora/; revision=17990\n---\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 89fd753..1783857 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -4,6 +4,8 @@\n #AUTOMAKE_OPTIONS = foreign 1.7 dist-zip dist-bzip2\n AUTOMAKE_OPTIONS = foreign 1.11 dist-zip dist-xz\n \n+ACLOCAL_AMFLAGS=-I m4\n+\n if THEORA_ENABLE_EXAMPLES\n EXAMPLES_DIR = examples\n else\ndiff --git a/configure.ac b/configure.ac\nindex 1cbec1a..456b603 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -68,7 +68,7 @@ AC_LIBTOOL_WIN32_DLL\n AM_PROG_LIBTOOL\n \n dnl Add parameters for aclocal\n-AC_SUBST(ACLOCAL_AMFLAGS, \"-I m4\")\n+AC_CONFIG_MACRO_DIR([m4])\n \n dnl Check for doxygen\n AC_ARG_ENABLE([doc],\n"
  },
  {
    "path": "package/libtheora/Config.in",
    "content": "config BR2_PACKAGE_LIBTHEORA\n\tbool \"libtheora\"\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_LIBVORBIS\n\thelp\n\t  A library for the free and open video compression format\n\t  \"Theora\" from the Xiph.org Foundation.\n\n\t  http://www.theora.org/\n"
  },
  {
    "path": "package/libtheora/libtheora.hash",
    "content": "# From http://downloads.xiph.org/releases/theora/SHA256SUMS\nsha256\tf36da409947aa2b3dcc6af0a8c2e3144bc19db2ed547d64e9171c59c66561c61\tlibtheora-1.1.1.tar.xz\n\n# Locally calculated\nsha256\t8417fad7da775735564e209484a2e011e0fa201e94f01fdbee6e4977e478e6fc\tCOPYING\nsha256\t654a0238f789f4435c4818f50005b141d013c5a09a31d861efc1d0d67ba975a4\tLICENSE\n"
  },
  {
    "path": "package/libtheora/libtheora.mk",
    "content": "################################################################################\n#\n# libtheora\n#\n################################################################################\n\nLIBTHEORA_VERSION = 1.1.1\nLIBTHEORA_SOURCE = libtheora-$(LIBTHEORA_VERSION).tar.xz\nLIBTHEORA_SITE = http://downloads.xiph.org/releases/theora\nLIBTHEORA_INSTALL_STAGING = YES\n# We're patching Makefile.am\nLIBTHEORA_AUTORECONF = YES\nLIBTHEORA_LICENSE = BSD-3-Clause\nLIBTHEORA_LICENSE_FILES = COPYING LICENSE\n\nLIBTHEORA_CONF_OPTS = \\\n\t--disable-oggtest \\\n\t--disable-vorbistest \\\n\t--disable-sdltest \\\n\t--disable-examples \\\n\t--disable-spec\n\nLIBTHEORA_DEPENDENCIES = libogg libvorbis host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libtirpc/Config.in",
    "content": "config BR2_PACKAGE_LIBTIRPC\n\tbool \"libtirpc\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Libtirpc is a port of Sun's Transport-Independent RPC\n\t  library to Linux.\n\n\t  http://sourceforge.net/projects/libtirpc/\n\nconfig BR2_PACKAGE_LIBTIRPC_GSS\n\tbool \"gss\"\n\tdepends on BR2_USE_MMU # libkrb5\n\tdepends on !BR2_STATIC_LIBS # libkrb5\n\tdepends on BR2_PACKAGE_LIBTIRPC\n\tselect BR2_PACKAGE_LIBKRB5\n\thelp\n\t  Enable GSSAPI support\n\ncomment \"libtirpc needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\ncomment \"libtirpc gss support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_LIBTIRPC\n"
  },
  {
    "path": "package/libtirpc/libtirpc.hash",
    "content": "# From sourceforge's info on download page:\nsha1  51d75be0e5acc094a888f40042b23e128d163cb5  libtirpc-1.3.2.tar.bz2\n# Locally computed\nsha256  e24eb88b8ce7db3b7ca6eb80115dd1284abc5ec32a8deccfed2224fc2532b9fd  libtirpc-1.3.2.tar.bz2\nsha256  17cf6098f95bdbb269f0bbc68e76c88fe20487ca7ec53f454923ab4256ecd2e7  COPYING\n"
  },
  {
    "path": "package/libtirpc/libtirpc.mk",
    "content": "################################################################################\n#\n# libtirpc\n#\n################################################################################\n\nLIBTIRPC_VERSION = 1.3.2\nLIBTIRPC_SOURCE = libtirpc-$(LIBTIRPC_VERSION).tar.bz2\nLIBTIRPC_SITE = http://downloads.sourceforge.net/project/libtirpc/libtirpc/$(LIBTIRPC_VERSION)\nLIBTIRPC_LICENSE = BSD-3-Clause\nLIBTIRPC_LICENSE_FILES = COPYING\nLIBTIRPC_CPE_ID_VENDOR = libtirpc_project\n\nLIBTIRPC_INSTALL_STAGING = YES\n\n# getrpcby{number,name} are only provided if 'GQ' is defined\nLIBTIRPC_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -DGQ\"\n\nifeq ($(BR2_PACKAGE_LIBTIRPC_GSS),y)\nLIBTIRPC_CONF_ENV += KRB5_CONFIG=$(STAGING_DIR)/usr/bin/krb5-config\nLIBTIRPC_CONF_OPTS += --enable-gssapi\nLIBTIRPC_DEPENDENCIES += libkrb5\nelse\nLIBTIRPC_CONF_OPTS += --disable-gssapi\nendif\nHOST_LIBTIRPC_CONF_OPTS = --disable-gssapi\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libtomcrypt/0001-fix-CVE-2019-17362.patch",
    "content": "From 25c26a3b7a9ad8192ccc923e15cf62bf0108ef94 Mon Sep 17 00:00:00 2001\nFrom: werew <werew@ret2libc.com>\nDate: Thu, 3 Oct 2019 19:57:10 +0200\nSubject: [PATCH] Fixes #507\n\nFix a vulnerability in der_decode_utf8_string as specified here:\nhttps://github.com/libtom/libtomcrypt/issues/507\n\n[for import into Buildroot]\nSigned-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\n\n\n---\n src/pk/asn1/der/utf8/der_decode_utf8_string.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/pk/asn1/der/utf8/der_decode_utf8_string.c b/src/pk/asn1/der/utf8/der_decode_utf8_string.c\nindex 94555b99f..d3ed82bea 100644\n--- a/src/pk/asn1/der/utf8/der_decode_utf8_string.c\n+++ b/src/pk/asn1/der/utf8/der_decode_utf8_string.c\n@@ -65,7 +65,7 @@ int der_decode_utf8_string(const unsigned char *in,  unsigned long inlen,\n       /* count number of bytes */\n       for (z = 0; (tmp & 0x80) && (z <= 4); z++, tmp = (tmp << 1) & 0xFF);\n \n-      if (z > 4 || (x + (z - 1) > inlen)) {\n+      if (z == 1 || z > 4 || (x + (z - 1) > inlen)) {\n          return CRYPT_INVALID_PACKET;\n       }\n \n"
  },
  {
    "path": "package/libtomcrypt/Config.in",
    "content": "config BR2_PACKAGE_LIBTOMCRYPT\n\tbool \"libtomcrypt\"\n\tselect BR2_PACKAGE_LIBTOMMATH\n\thelp\n\t  LibTomCrypt is a fairly comprehensive, modular and portable\n\t  cryptographic toolkit that provides developers with a vast\n\t  array of well known published block ciphers, one-way hash\n\t  functions, chaining modes, pseudo-random number generators,\n\t  public key cryptography and a plethora of other routines.\n\n\t  https://www.libtom.net\n"
  },
  {
    "path": "package/libtomcrypt/libtomcrypt.hash",
    "content": "# Locally computed\nsha256  96ad4c3b8336050993c5bc2cf6c057484f2b0f9f763448151567fbab5e767b84  crypt-1.18.2.tar.xz\n\n# Hash for license file:\nsha256  8f196cb13afd271f5e267fd29543fc454596382ad580e7592709492843996ac8  LICENSE\n"
  },
  {
    "path": "package/libtomcrypt/libtomcrypt.mk",
    "content": "################################################################################\n#\n# libtomcrypt\n#\n################################################################################\n\nLIBTOMCRYPT_VERSION = 1.18.2\nLIBTOMCRYPT_SITE = https://github.com/libtom/libtomcrypt/releases/download/v$(LIBTOMCRYPT_VERSION)\nLIBTOMCRYPT_SOURCE = crypt-$(LIBTOMCRYPT_VERSION).tar.xz\nLIBTOMCRYPT_LICENSE = WTFPL\nLIBTOMCRYPT_LICENSE_FILES = LICENSE\nLIBTOMCRYPT_CPE_ID_VENDOR = libtom\nLIBTOMCRYPT_INSTALL_STAGING = YES\nLIBTOMCRYPT_INSTALL_TARGET = NO # only static library\nLIBTOMCRYPT_DEPENDENCIES = libtommath\n\n# 0001-fix-CVE-2019-17362.patch\nLIBTOMCRYPT_IGNORE_CVES += CVE-2019-17362\n\nLIBTOMCRYPT_CFLAGS = -I./src/headers $(TARGET_CFLAGS) -DLTC_SOURCE -DLTM_DESC\n\nifeq ($(BR2_STATIC_LIBS),)\nLIBTOMCRYPT_CFLAGS += -fPIC\nendif\n\ndefine LIBTOMCRYPT_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) -f makefile.unix $(TARGET_CONFIGURE_OPTS) CFLAGS=\"$(LIBTOMCRYPT_CFLAGS)\"\nendef\n\ndefine LIBTOMCRYPT_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) -f makefile.unix \\\n\t\tDESTDIR=\"$(STAGING_DIR)\" PREFIX=/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libtommath/0001-Build-test-bn_mp_set_double-c-on-more-platforms.patch",
    "content": "From 4e90f3185aea9160c28f3eaec5625b67fc0f67db Mon Sep 17 00:00:00 2001\nFrom: Daniel Green <ddgreen@gmail.com>\nDate: Sun, 9 Feb 2020 11:06:53 -0500\nSubject: [PATCH] Build+test bn_mp_set_double.c on more platforms\n\nNot all platforms/environments/architectures that support enough of\nIEEE 754 for the purposes of mp_set_double() actually support enough\nto legitimately define __STDC_IEC_559__, so only relying on that is\ntoo strict. Fixes https://github.com/libtom/libtommath/issues/159\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved (and backported) from:\nhttps://github.com/libtom/libtommath/commit/4e90f3185aea9160c28f3eaec5625b67fc0f67db]\n---\n demo/test.c     | 2 +-\n bn_mp_set_double.c | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/demo/test.c b/demo/test.c\nindex 998f14b3..f719709d 100644\n--- a/demo/test.c\n+++ b/demo/test.c\n@@ -522,7 +522,7 @@ static int test_mp_invmod(void)\n \n }\n \n-#if defined(__STDC_IEC_559__) || defined(__GCC_IEC_559)\n+#if defined(__STDC_IEC_559__) || defined(__GCC_IEC_559) || defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) || defined(__i386__) || defined(_M_X86) || defined(__aarch64__) || defined(__arm__)\n static int test_mp_set_double(void)\n {\n    int i;\ndiff --git a/mp_set_double.c b/mp_set_double.c\nindex 78550c8f..cdc644d9 100644\n--- a/bn_mp_set_double.c\n+++ b/bn_mp_set_double.c\n@@ -3,7 +3,7 @@\n /* LibTomMath, multiple-precision integer library -- Tom St Denis */\n /* SPDX-License-Identifier: Unlicense */\n \n-#if defined(__STDC_IEC_559__) || defined(__GCC_IEC_559)\n+#if defined(__STDC_IEC_559__) || defined(__GCC_IEC_559) || defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) || defined(__i386__) || defined(_M_X86) || defined(__aarch64__) || defined(__arm__)\n mp_err mp_set_double(mp_int *a, double b)\n {\n    uint64_t frac;\n"
  },
  {
    "path": "package/libtommath/Config.in",
    "content": "config BR2_PACKAGE_LIBTOMMATH\n\tbool \"libtommath\"\n\thelp\n\t  LibTomMath is a free open source portable number theoretic\n\t  multiple-precision integer library written entirely in C.\n\n\t  http://www.libtom.net\n"
  },
  {
    "path": "package/libtommath/libtommath.hash",
    "content": "# Locally computed\nsha256 b7c75eecf680219484055fcedd686064409254ae44bc31a96c5032843c0e18b1  ltm-1.2.0.tar.xz\n\n# Hashes for license files:\nsha256 2fa64b163659f41965c9815882a8296d3d03ff546b76153e11445f9bdecf955a  LICENSE\n"
  },
  {
    "path": "package/libtommath/libtommath.mk",
    "content": "################################################################################\n#\n# libtommath\n#\n################################################################################\n\nLIBTOMMATH_VERSION = 1.2.0\nLIBTOMMATH_SITE = https://github.com/libtom/libtommath/releases/download/v$(LIBTOMMATH_VERSION)\nLIBTOMMATH_SOURCE = ltm-$(LIBTOMMATH_VERSION).tar.xz\nLIBTOMMATH_LICENSE = Unlicense\nLIBTOMMATH_LICENSE_FILES = LICENSE\nLIBTOMMATH_INSTALL_STAGING = YES\nLIBTOMMATH_INSTALL_TARGET = NO  # only static library\n\ndefine LIBTOMMATH_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) CFLAGS=\"-I./ -fPIC $(TARGET_CFLAGS)\"\nendef\n\ndefine LIBTOMMATH_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=\"$(STAGING_DIR)\" PREFIX=/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libtool/Config.in",
    "content": "config BR2_PACKAGE_LIBTOOL\n\tbool \"libtool\"\n\thelp\n\t  Library that hides the complexity of using shared/static\n\t  libraries on different platforms behind a consistent, portable\n\t  interface.\n\n\t  http://www.gnu.org/software/libtool/\n"
  },
  {
    "path": "package/libtool/libtool.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\t7c87a8c2c8c0fc9cd5019e402bed4292462d00a718a7cd5f11218153bf28b26f\tlibtool-2.4.6.tar.xz\n# License files, locally calculated\nsha256\t8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\tCOPYING\nsha256\tdc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551\tlibltdl/COPYING.LIB\n"
  },
  {
    "path": "package/libtool/libtool.mk",
    "content": "################################################################################\n#\n# libtool\n#\n################################################################################\n\nLIBTOOL_VERSION = 2.4.6\nLIBTOOL_SOURCE = libtool-$(LIBTOOL_VERSION).tar.xz\nLIBTOOL_SITE = $(BR2_GNU_MIRROR)/libtool\nLIBTOOL_CPE_ID_VENDOR = gnu\n\n# For the target variant, we only want to build/install libltdl\nLIBTOOL_SUBDIR = libltdl\nHOST_LIBTOOL_SUBDIR = .\n\nLIBTOOL_INSTALL_STAGING = YES\n\nLIBTOOL_CONF_OPTS = --enable-ltdl-install\n\nLIBTOOL_DEPENDENCIES = host-m4\nHOST_LIBTOOL_DEPENDENCIES = host-m4\n\nLIBTOOL_LICENSE = LGPL-2.1+\nLIBTOOL_LICENSE_FILES = $(LIBTOOL_SUBDIR)/COPYING.LIB\nHOST_LIBTOOL_LICENSE = GPL-2.0+ (libtool), LGPL-2.1+ (libltdl)\nHOST_LIBTOOL_LICENSE_FILES = COPYING $(LIBTOOL_SUBDIR)/COPYING.LIB\n\nHOST_LIBTOOL_CONF_ENV = MAKEINFO=true\nHOST_LIBTOOL_LIBTOOL_PATCH = NO\n\n# We have a patch that affects libtool.m4, which triggers an autoreconf\n# in the build step. Normally we would set AUTORECONF = YES, but this\n# doesn't work for host-libtool because that creates a circular\n# dependency. Instead, touch the generated files so autoreconf is not\n# triggered in the build step. Note that aclocal.m4 has to be touched\n# first since the rest depends on it. Note that we don't need the changes\n# in libtool.m4 in our configure script, because we're not actually\n# running it on the target.\n# For the target, we would normally be able to use AUTORECONF, but it\n# fails on libltdl/Makefile.inc. Rather than trying to fix that failure,\n# just use the same hack as on the host.\ndefine LIBTOOL_AVOID_AUTORECONF_HOOK\n\tfind $(@D) -name aclocal.m4 -exec touch '{}' \\;\n\tfind $(@D) -name config-h.in -exec touch '{}' \\;\n\tfind $(@D) -name configure -exec touch '{}' \\;\n\tfind $(@D) -name Makefile.in -exec touch '{}' \\;\nendef\nLIBTOOL_PRE_CONFIGURE_HOOKS += LIBTOOL_AVOID_AUTORECONF_HOOK\nHOST_LIBTOOL_PRE_CONFIGURE_HOOKS += LIBTOOL_AVOID_AUTORECONF_HOOK\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n\n# variables used by other packages\nLIBTOOL = $(HOST_DIR)/bin/libtool\nLIBTOOLIZE = $(HOST_DIR)/bin/libtoolize\n"
  },
  {
    "path": "package/libtorrent/0001-libtorrent.pc.in-add-Libs.Private.patch",
    "content": "From a86219e725441eb87321fa3e24531dafa54ee674 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 20 Oct 2019 20:23:19 +0200\nSubject: [PATCH] libtorrent.pc.in: add Libs.Private\n\nAdd Libs.Private: -lz so applications that want to link statically with\nlibtorrent (such as rtorrent) will know that they must link with -lz\n\nFixes:\n - http://autobuild.buildroot.org/results/075598e1699c2ac20a4dfbcb5695bbb7343f9a86\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/rakshasa/libtorrent/pull/202]\n---\n libtorrent.pc.in | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/libtorrent.pc.in b/libtorrent.pc.in\nindex cf6612bc..6108f7e9 100644\n--- a/libtorrent.pc.in\n+++ b/libtorrent.pc.in\n@@ -7,4 +7,5 @@ Name: libtorrent\n Description: A BitTorrent library\n Version: @VERSION@\n Libs: -L${libdir} -ltorrent\n+Libs.Private: -lz\n Cflags: -I${includedir}\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/libtorrent/Config.in",
    "content": "config BR2_PACKAGE_LIBTORRENT\n\tbool \"libtorrent\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  BitTorrent library written in C++ for *nix\n\n\t  https://github.com/rakshasa/libtorrent\n\ncomment \"libtorrent needs a toolchain w/ C++, threads\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libtorrent/libtorrent.hash",
    "content": "# Locally calculated\nsha256 ed115a28f4ae8cfcd33b94a597c076ca74fd549867a26e4fac9505c27288e983  libtorrent-0.13.8.tar.gz\nsha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  COPYING\n"
  },
  {
    "path": "package/libtorrent/libtorrent.mk",
    "content": "################################################################################\n#\n# libtorrent\n#\n################################################################################\n\nLIBTORRENT_VERSION = 0.13.8\nLIBTORRENT_SITE = http://rtorrent.net/downloads\nLIBTORRENT_DEPENDENCIES = host-pkgconf zlib\nLIBTORRENT_CONF_OPTS = --enable-aligned \\\n\t--disable-instrumentation \\\n\t--with-zlib=$(STAGING_DIR)/usr\nLIBTORRENT_INSTALL_STAGING = YES\nLIBTORRENT_LICENSE = GPL-2.0\nLIBTORRENT_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBTORRENT_CONF_OPTS += --enable-openssl\nLIBTORRENT_DEPENDENCIES += openssl\nelse\nLIBTORRENT_CONF_OPTS += --disable-openssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libtorrent-rasterbar/Config.in",
    "content": "comment \"libtorrent-rasterbar needs a toolchain w/ C++, threads, wchar, gcc >= 4.9\"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\ncomment \"libtorrent-rasterbar needs exception_ptr\"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nconfig BR2_PACKAGE_LIBTORRENT_RASTERBAR\n\tbool \"libtorrent-rasterbar\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # boost\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # boost\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK\n\tdepends on BR2_USE_WCHAR # boost\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  libtorrent is a feature complete C++ bittorrent implementation\n\t  focusing on efficiency and scalability.\n\n\t  https://www.libtorrent.org/\n"
  },
  {
    "path": "package/libtorrent-rasterbar/libtorrent-rasterbar.hash",
    "content": "# Locally calculated\nsha256  c3744ac9fa41f6e6ebf79538a2ea678df76a2cbbaf3ac6ae2c05455314e5cce8  libtorrent-rasterbar-1.2.12.tar.gz\nsha256  f3a5dd1558cce616b12edad521427ec8976ce2bb0af33f7f359cfa648bf55ad8  COPYING\n"
  },
  {
    "path": "package/libtorrent-rasterbar/libtorrent-rasterbar.mk",
    "content": "################################################################################\n#\n# libtorrent-rasterbar\n#\n################################################################################\n\nLIBTORRENT_RASTERBAR_VERSION = 1.2.12\nLIBTORRENT_RASTERBAR_SITE = \\\n\thttps://github.com/arvidn/libtorrent/releases/download/v$(LIBTORRENT_RASTERBAR_VERSION)\nLIBTORRENT_RASTERBAR_LICENSE = BSD-3-Clause\nLIBTORRENT_RASTERBAR_LICENSE_FILES = COPYING\nLIBTORRENT_RASTERBAR_CPE_ID_VENDOR = libtorrent\nLIBTORRENT_RASTERBAR_CPE_ID_PRODUCT = libtorrent\nLIBTORRENT_RASTERBAR_DEPENDENCIES = host-pkgconf boost openssl\nLIBTORRENT_RASTERBAR_INSTALL_STAGING = YES\nLIBTORRENT_RASTERBAR_CONF_OPTS = \\\n\t--with-boost-libdir=$(STAGING_DIR)/usr/lib \\\n\t--disable-invariant-checks\nLIBTORRENT_RASTERBAR_CXXFLAGS = $(TARGET_CXXFLAGS) -std=c++11\n\n# Internal error, aborting at dwarf2cfi.c:2802 in connect_traces\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58864\nifeq ($(BR2_m68k_cf),y)\nLIBTORRENT_RASTERBAR_CXXFLAGS += -fno-defer-pop\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nLIBTORRENT_RASTERBAR_CXXFLAGS += -O0\nendif\n\nLIBTORRENT_RASTERBAR_CONF_OPTS += CXXFLAGS=\"$(LIBTORRENT_RASTERBAR_CXXFLAGS)\"\n\nifeq ($(BR2_ENABLE_LOCALE)$(BR2_PACKAGE_LIBICONV),y)\nLIBTORRENT_RASTERBAR_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv)\nLIBTORRENT_RASTERBAR_CONF_OPTS += --with-libiconv\nelse\nLIBTORRENT_RASTERBAR_CONF_OPTS += --without-libiconv\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libtpl/Config.in",
    "content": "config BR2_PACKAGE_LIBTPL\n\tbool \"libtpl\"\n\thelp\n\t  Easily store and retrieve binary data in C\n\n\t  http://troydhanson.github.io/tpl/\n"
  },
  {
    "path": "package/libtpl/libtpl.hash",
    "content": "# Locally calculated\nsha256  0b3750bf62f56be4c42f83c89d8449b24f1c5f1605a104801d70f2f3c06fb2ff  libtpl-1.6.1.tar.gz\nsha256  8554ddb5779f1ad2f3ea6db1d0df622e63fca11f44bfc3c8b3c207ea0482c746  LICENSE\n"
  },
  {
    "path": "package/libtpl/libtpl.mk",
    "content": "################################################################################\n#\n# libtpl\n#\n################################################################################\n\nLIBTPL_VERSION = 1.6.1\nLIBTPL_SITE = $(call github,troydhanson,tpl,v$(LIBTPL_VERSION))\nLIBTPL_INSTALL_STAGING = YES\nLIBTPL_LICENSE = BSD-like\nLIBTPL_LICENSE_FILES = LICENSE\n\nLIBTPL_AUTORECONF = YES\n\ndefine LIBTPL_CREATE_MISSING_FILES\n\ttouch $(@D)/NEWS $(@D)/AUTHORS $(@D)/ChangeLog $(@D)/COPYING\nendef\nLIBTPL_POST_EXTRACT_HOOKS += LIBTPL_CREATE_MISSING_FILES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libubootenv/0001-src-CMakeLists.txt-do-not-force-the-build-of-a-share.patch",
    "content": "From 5448ca9d92f7fa197060323a82a5f060ce7c31e7 Mon Sep 17 00:00:00 2001\nFrom: Pierre-Jean Texier <pjtexier@koncepto.io>\nDate: Wed, 22 May 2019 10:26:27 +0200\nSubject: [PATCH] src/CMakeLists.txt: do not force the build of a shared\n library\n\nBy definition, projects using CMake which can build either static or shared\nlibraries use a BUILD_SHARED_LIBS flag to allow selecting between both.\nSo, let CMake rely on the standard BUILD_SHARED_LIBS variable to decide\nwhether a static or shared library should be built.\n\nhowever, we can control the behaviour as follows:\n\n   $. cmake -DBUILD_SHARED_LIBS=OFF ...\n\n   $. cmake -DBUILS_SHARED_LIBS=ON ...\n\nWith Yocto/OE, just add the following option into the libubootenv recipe :\n\nEXTRA_OECMAKE = \"-DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON\"\n\nSigned-off-by: Pierre-Jean Texier <pjtexier@koncepto.io>\n[Upstream status: http://patchwork.ozlabs.org/patch/1103437/]\n---\n src/CMakeLists.txt | 6 ++----\n 1 file changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/src/CMakeLists.txt b/src/CMakeLists.txt\nindex 4b71bc5..0b515f4 100644\n--- a/src/CMakeLists.txt\n+++ b/src/CMakeLists.txt\n@@ -12,18 +12,16 @@ SET(include_HEADERS\n \n include(GNUInstallDirs) # for the CMAKE_INSTALL_LIBDIR variable\n \n-add_library(ubootenv SHARED ${libubootenv_SOURCES} ${include_HEADERS})\n+add_library(ubootenv ${libubootenv_SOURCES} ${include_HEADERS})\n SET_TARGET_PROPERTIES(ubootenv PROPERTIES VERSION ${VERSION} SOVERSION ${SOVERSION})\n \n-ADD_LIBRARY(ubootenv_static STATIC ${libubootenv_SOURCES} ${include_HEADERS})\n-SET_TARGET_PROPERTIES(ubootenv_static PROPERTIES OUTPUT_NAME ubootenv)\n add_executable(fw_printenv fw_printenv.c)\n add_executable(fw_setenv fw_setenv.c)\n target_link_libraries(ubootenv z)\n target_link_libraries(fw_printenv ubootenv)\n target_link_libraries(fw_setenv ubootenv)\n \n-install (TARGETS ubootenv ubootenv_static DESTINATION ${CMAKE_INSTALL_LIBDIR})\n+install (TARGETS ubootenv DESTINATION ${CMAKE_INSTALL_LIBDIR})\n install (FILES libuboot.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})\n install (TARGETS fw_printenv DESTINATION ${CMAKE_INSTALL_BINDIR})\n install (TARGETS fw_setenv DESTINATION ${CMAKE_INSTALL_BINDIR})\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/libubootenv/Config.in",
    "content": "config BR2_PACKAGE_LIBUBOOTENV\n\tbool \"libubootenv\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  libubootenv is a library that provides a hardware independent\n\t  way to access to U-Boot environment.\n\n\t  The package provides the fw_printenv / fw_setenv utilities,\n\t  new tools build from the library and not from U-Boot.\n\n\t  https://github.com/sbabic/libubootenv/\n"
  },
  {
    "path": "package/libubootenv/libubootenv.hash",
    "content": "# Locally calculated\nsha256  760fe53ca20ced93a09dea0f123eb429c820b565c103920afa738873e8cd16b7  libubootenv-7dbfffa4cc0e42ad3febb122a711fe9d1b20e9f7.tar.gz\nsha256  0558101984550fa84d1d13c2af11d116c20079d2be58711e8d99cadce7009192  LICENSES/CC0-1.0.txt\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSES/LGPL-2.1-or-later.txt\nsha256  89807acf2309bd285f033404ee78581602f3cd9b819a16ac2f0e5f60ff4a473e  LICENSES/MIT.txt\n"
  },
  {
    "path": "package/libubootenv/libubootenv.mk",
    "content": "################################################################################\n#\n# libubootenv\n#\n################################################################################\n\nLIBUBOOTENV_VERSION = 7dbfffa4cc0e42ad3febb122a711fe9d1b20e9f7\nLIBUBOOTENV_SITE = $(call github,sbabic,libubootenv,$(LIBUBOOTENV_VERSION))\nLIBUBOOTENV_LICENSE = LGPL-2.1+, MIT, CC0-1.0\nLIBUBOOTENV_LICENSE_FILES = LICENSES/CC0-1.0.txt \\\n\tLICENSES/LGPL-2.1-or-later.txt \\\n\tLICENSES/MIT.txt\n\nLIBUBOOTENV_INSTALL_STAGING = YES\nLIBUBOOTENV_DEPENDENCIES = zlib\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libubox/Config.in",
    "content": "config BR2_PACKAGE_LIBUBOX\n\tbool \"libubox\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  This library originates from the OpenWrt project to\n\t  handle the configuration file infrastructure, but can\n\t  also be used for the same purposes in projects other\n\t  than OpenWrt.\n\n\t  https://openwrt.org/docs/techref/libubox\n\ncomment \"libubox needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libubox/libubox.hash",
    "content": "# Locally calculated\nsha256  54f65299439dab4be8f203588bcefd9b60052ae87d12c6d012f6278a2a111b4e  libubox-d716ac4bc4236031d4c3cc1ed362b502e20e3787-br1.tar.gz\n"
  },
  {
    "path": "package/libubox/libubox.mk",
    "content": "################################################################################\n#\n# libubox\n#\n################################################################################\n\nLIBUBOX_VERSION = d716ac4bc4236031d4c3cc1ed362b502e20e3787\nLIBUBOX_SITE = https://git.openwrt.org/project/libubox.git\nLIBUBOX_SITE_METHOD = git\nLIBUBOX_LICENSE = ISC, BSD-3-Clause\nLIBUBOX_INSTALL_STAGING = YES\nLIBUBOX_DEPENDENCIES = $(if $(BR2_PACKAGE_JSON_C),json-c)\n\nifeq ($(BR2_USE_MMU)$(BR2_PACKAGE_LUA_5_1),yy)\nLIBUBOX_DEPENDENCIES += lua\nLIBUBOX_CONF_OPTS += -DBUILD_LUA=ON \\\n\t-DLUAPATH=/usr/lib/lua/5.1 \\\n\t-DLUA_CFLAGS=-I$(STAGING_DIR)/usr/include\nelse\nLIBUBOX_CONF_OPTS += -DBUILD_LUA=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libuci/Config.in",
    "content": "config BR2_PACKAGE_LIBUCI\n\tbool \"libuci\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBUBOX\n\thelp\n\t  This library originates from the OpenWrt project to\n\t  handle the configuration file infrastructure, but can\n\t  also be used for the same purposes in projects other\n\t  than OpenWrt.\n\n\t  This package will also install CLI tool uci.\n\n\t  https://openwrt.org/docs/techref/uci\n\ncomment \"libuci needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libuci/libuci.hash",
    "content": "# Locally computed\nsha256  4b4e3ef9c9f51c02a1985c63ff0e8fc1f3aafdf24491247a4dc33c993c3fa1ea  libuci-4b3db1179747b6a6779029407984bacef851325c-br1.tar.gz\nsha256  39e1cc18a36172fb80d9b37f0af77d78ae935bd8a020978a7895d9e76a24e112  cli.c\nsha256  69d4eea4de19d27014f3d6ed723081b4039700bfd73cd0a5e39e2c4f19a58c66  libuci.c\n"
  },
  {
    "path": "package/libuci/libuci.mk",
    "content": "################################################################################\n#\n# libuci\n#\n################################################################################\n\nLIBUCI_VERSION = 4b3db1179747b6a6779029407984bacef851325c\nLIBUCI_SITE = https://git.openwrt.org/project/uci.git\nLIBUCI_SITE_METHOD = git\nLIBUCI_LICENSE = LGPL-2.1, GPL-2.0 (tools)\nLIBUCI_LICENSE_FILES = cli.c libuci.c\nLIBUCI_CPE_ID_VENDOR = openwrt\nLIBUCI_INSTALL_STAGING = YES\nLIBUCI_DEPENDENCIES = libubox\n\n# Fixed in commit 19e29ffc15dbd958e8e6a648ee0982c68353516f, older than LIBUCI_VERSION\nLIBUCI_IGNORE_CVES += CVE-2019-15513\n\nifeq ($(BR2_PACKAGE_LUA_5_1),y)\nLIBUCI_DEPENDENCIES += lua\nLIBUCI_CONF_OPTS += -DBUILD_LUA=ON \\\n\t-DLUAPATH=/usr/lib/lua/5.1 \\\n\t-DLUA_CFLAGS=-I$(STAGING_DIR)/usr/include\nLIBUCI_LICENSE += , GPL-2.0 (lua bindings)\nelse\nLIBUCI_CONF_OPTS += -DBUILD_LUA=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libucl/Config.in",
    "content": "config BR2_PACKAGE_LIBUCL\n\tbool \"libucl\"\n\thelp\n\t  Universal configuration library parser\n\n\t  Libucl is a parser and C API to parse and generate ucl\n\t  objects. Libucl consist of several groups of functions:\n\t  parser, emitting, conversion, generation, iteration,\n\t  validation, and utility. These functions can be used to work\n\t  with several formats: JSON, compact JSON, configuration\n\t  (nginx like), and YAML. Libucl has clear design that should\n\t  be very convenient for reading and writing and makes for an\n\t  ideal parser with high performance.\n\n\t  https://github.com/vstakhov/libucl\n"
  },
  {
    "path": "package/libucl/libucl.hash",
    "content": "# Locally calculated\nsha256 a6397e179672f0e8171a0f9a2cfc37e01432b357fd748b13f4394436689d24ef  libucl-0.8.1.tar.gz\nsha256 1bf976835764c1d827e07472a0a75adb098682df56681878af05fc0db7439b03  COPYING\n"
  },
  {
    "path": "package/libucl/libucl.mk",
    "content": "################################################################################\n#\n# libucl\n#\n################################################################################\n\nLIBUCL_VERSION = 0.8.1\nLIBUCL_SITE = $(call github,vstakhov,libucl,$(LIBUCL_VERSION))\nLIBUCL_INSTALL_STAGING = YES\nLIBUCL_AUTORECONF = YES\nLIBUCL_LICENSE = BSD-2-Clause\nLIBUCL_LICENSE_FILES = COPYING\nLIBUCL_DEPENDENCIES = host-pkgconf\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nLIBUCL_DEPENDENCIES += libcurl\nLIBUCL_CONF_OPTS += --enable-urls\nelse\nLIBUCL_CONF_OPTS += --disable-urls\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libudfread/Config.in",
    "content": "config BR2_PACKAGE_LIBUDFREAD\n\tbool \"libudfread\"\n\thelp\n\t  UDF reader\n\n\t  https://code.videolan.org/videolan/libudfread\n"
  },
  {
    "path": "package/libudfread/libudfread.hash",
    "content": "# Locally computed\nsha256  cd062016d78902da53a34c4d536479dbb70b2a05116354d46ead4d0c498ed375  libudfread-1.1.2.tar.bz2\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/libudfread/libudfread.mk",
    "content": "################################################################################\n#\n# libudfread\n#\n################################################################################\n\nLIBUDFREAD_VERSION = 1.1.2\nLIBUDFREAD_SOURCE = libudfread-$(LIBUDFREAD_VERSION).tar.bz2\nLIBUDFREAD_SITE = https://code.videolan.org/videolan/libudfread/-/archive/$(LIBUDFREAD_VERSION)\nLIBUDFREAD_AUTORECONF = YES\nLIBUDFREAD_INSTALL_STAGING = YES\nLIBUDFREAD_LICENSE = LGPL-2.1+\nLIBUDFREAD_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libuecc/Config.in",
    "content": "config BR2_PACKAGE_LIBUECC\n\tbool \"libuecc\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Very small Elliptic Curve Cryptography library\n\n\t  http://git.universe-factory.net/libuecc\n\ncomment \"libuecc needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libuecc/libuecc.hash",
    "content": "# from https://projects.universe-factory.net/projects/fastd/files\nmd5     5cd543cb8e7bce83a22c07a0579c95a1                                  libuecc-7.tar.xz\n# computed locally\nsha256  b94aef08eab5359d0facaa7ead2ce81b193eef0c61379d9835213ebc0a46257a  libuecc-7.tar.xz\nsha256  ec4d9fcc3a37a7998a9ea4decf38f4c0c91a44fd05bb17638c52fe16f2b12e23  COPYRIGHT\n"
  },
  {
    "path": "package/libuecc/libuecc.mk",
    "content": "################################################################################\n#\n# libuecc\n#\n################################################################################\n\nLIBUECC_VERSION = 7\nLIBUECC_SITE = https://projects.universe-factory.net/attachments/download/85\nLIBUECC_SOURCE = libuecc-$(LIBUECC_VERSION).tar.xz\nLIBUECC_LICENSE = BSD-2-Clause\nLIBUECC_LICENSE_FILES = COPYRIGHT\nLIBUECC_INSTALL_STAGING = YES\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libuev/Config.in",
    "content": "config BR2_PACKAGE_LIBUEV\n\tbool \"libuev\"\n\thelp\n\t  Simple event loop for Linux.\n\n\t  https://github.com/troglobit/libuev\n"
  },
  {
    "path": "package/libuev/libuev.hash",
    "content": "# From https://github.com/troglobit/libuev/releases/download/v2.4.0/libuev-2.4.0.tar.xz.sha256\nsha256  31f1aa4f492ba4f6a5dd6b19968ae6a732968dc05cae6575930560b6cee1f5ef  libuev-2.4.0.tar.xz\n# License files\nsha256  694a734d9c1b46ae203314ed1c744a1acebd4fe5fc964b761703772546f0d3ab  LICENSE\n"
  },
  {
    "path": "package/libuev/libuev.mk",
    "content": "################################################################################\n#\n# libuev\n#\n################################################################################\n\nLIBUEV_VERSION = 2.4.0\nLIBUEV_SOURCE = libuev-$(LIBUEV_VERSION).tar.xz\nLIBUEV_SITE = https://github.com/troglobit/libuev/releases/download/v$(LIBUEV_VERSION)\nLIBUEV_LICENSE = MIT\nLIBUEV_LICENSE_FILES = LICENSE\nLIBUEV_INSTALL_STAGING = YES\nLIBUEV_CONF_OPTS = --disable-examples\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libuhttpd/0001-openssl.c-fix-build-with-wolfssl.patch",
    "content": "From e5c5ed1c64cfc715729c9bfbfdcc4be225f344ff Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 4 Aug 2021 11:32:39 +0200\nSubject: [PATCH] openssl.c: fix build with wolfssl\n\nFix the following build failure with wolfssl:\n\n/tmp/instance-4/output-1/build/libuhttpd-3.12.1/src/ssl/openssl.c: In function 'ssl_context_new':\n/tmp/instance-4/output-1/build/libuhttpd-3.12.1/src/ssl/openssl.c:174:33: error: 'tls13_ciphersuites' undeclared (first use in this function)\n  174 |     SSL_CTX_set_ciphersuites(c, tls13_ciphersuites);\n      |                                 ^~~~~~~~~~~~~~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/d0fb629b40b05ad828775894fabed878692bb222\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/zhaojh329/ssl/pull/1]\n---\n openssl.c | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/openssl.c b/openssl.c\nindex 8f3d8b7..c42638c 100644\n--- a/src/ssl/openssl.c\n+++ b/src/ssl/openssl.c\n@@ -71,14 +71,14 @@\n                 \"TLS13-AES256-GCM-SHA384:\"\t\t\\\n                 ecdhe_aead_ciphers\n #else\n-# define tls13_ciphersuites\t\"TLS_CHACHA20_POLY1305_SHA256:\"\t\t\\\n-                \"TLS_AES_128_GCM_SHA256:\"\t\t\\\n-                \"TLS_AES_256_GCM_SHA384\"\n-\n # define top_ciphers\t\t\t\t\t\t\t\\\n                 ecdhe_aead_ciphers\n #endif\n \n+# define tls13_ciphersuites\t\"TLS_CHACHA20_POLY1305_SHA256:\"\t\t\\\n+                \"TLS_AES_128_GCM_SHA256:\"\t\t\\\n+                \"TLS_AES_256_GCM_SHA384\"\n+\n #define ecdhe_aead_ciphers\t\t\t\t\t\t\\\n                 \"ECDHE-ECDSA-CHACHA20-POLY1305:\"\t\\\n                 \"ECDHE-ECDSA-AES128-GCM-SHA256:\"\t\\\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/libuhttpd/Config.in",
    "content": "config BR2_PACKAGE_LIBUHTTPD\n\tbool \"libuhttpd\"\n\tselect BR2_PACKAGE_LIBEV\n\tselect BR2_PACKAGE_WOLFSSL_ALL if BR2_PACKAGE_WOLFSSL\n\thelp\n\t  A lightweight and fully asynchronous HTTP server\n\t  library based on libev\n\n\t  https://github.com/zhaojh329/libuhttpd\n"
  },
  {
    "path": "package/libuhttpd/libuhttpd.hash",
    "content": "# Locally calculated\nsha256  c234dd3d491c4daa047e28870c6e740529b2eff2dd027dafb6bf02d8dba286b0  libuhttpd-3.12.1.tar.gz\nsha256  99efed4bbc0b62f96f999ef23399e38234fb91651af734fd389a52b033a85b55  LICENSE\n"
  },
  {
    "path": "package/libuhttpd/libuhttpd.mk",
    "content": "################################################################################\n#\n# libuhttpd\n#\n################################################################################\n\nLIBUHTTPD_VERSION = 3.12.1\nLIBUHTTPD_SITE = https://github.com/zhaojh329/libuhttpd/releases/download/v$(LIBUHTTPD_VERSION)\nLIBUHTTPD_LICENSE = MIT\nLIBUHTTPD_LICENSE_FILES = LICENSE\nLIBUHTTPD_INSTALL_STAGING = YES\nLIBUHTTPD_DEPENDENCIES = libev\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBUHTTPD_DEPENDENCIES += openssl\nLIBUHTTPD_CONF_OPTS += \\\n\t-DSSL_SUPPORT=ON \\\n\t-DUSE_MBEDTLS=OFF \\\n\t-DUSE_OPENSSL=ON \\\n\t-DUSE_WOLFSSL=OFF\nelse ifeq ($(BR2_PACKAGE_WOLFSSL),y)\nLIBUHTTPD_DEPENDENCIES += wolfssl\nLIBUHTTPD_CONF_OPTS += \\\n\t-DSSL_SUPPORT=ON \\\n\t-DUSE_MBEDTLS=OFF \\\n\t-DUSE_OPENSSL=OFF \\\n\t-DUSE_WOLFSSL=ON\nelse ifeq ($(BR2_PACKAGE_MBEDTLS),y)\nLIBUHTTPD_DEPENDENCIES += mbedtls\nLIBUHTTPD_CONF_OPTS += \\\n\t-DSSL_SUPPORT=ON \\\n\t-DUSE_MBEDTLS=ON \\\n\t-DUSE_OPENSSL=OFF \\\n\t-DUSE_WOLFSSL=OFF\nelse\nLIBUHTTPD_CONF_OPTS += \\\n\t-DSSL_SUPPORT=OFF\nendif\n\n# BUILD_STATIC builds *only* the static lib, which is not what we want for\n# BR2_SHARED_STATIC.\nifeq ($(BR2_STATIC_LIBS),y)\nLIBUHTTPD_CONF_OPTS += -DBUILD_STATIC=ON\nelse\nLIBUHTTPD_CONF_OPTS += -DBUILD_STATIC=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libuio/0001-configure-remove-po-Makefile.in.patch",
    "content": "From c5fa0b778e1c2a7d03ff6e661bdfa2faef878f68 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@smile.fr>\nDate: Fri, 1 Jul 2016 17:56:30 +0200\nSubject: [PATCH] configure: remove po/Makefile.in\n\nThe file po/Makefile.in is automatically added to AC_OUTPUT while using gettexize\n\nSigned-off-by: Romain Naour <romain.naour@smile.fr>\n---\n configure.ac | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex f7fb40f..a25e463 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -55,5 +55,4 @@ dnl last but not least\n AC_OUTPUT([Makefile\n \tlibuio.dox\n \tlibuio-uninstalled.pc\n-\tlibuio.pc\n-\tpo/Makefile.in])\n+\tlibuio.pc])\n-- \n2.5.5\n\n"
  },
  {
    "path": "package/libuio/Config.in",
    "content": "config BR2_PACKAGE_LIBUIO\n\tbool \"libuio\"\n\tselect BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  libuio is a light-weight C programming library to handle UIO\n\t  (Userspace I/O) device discovery and binding task.\n\n\t  http://github.com/Linutronix/libuio\n"
  },
  {
    "path": "package/libuio/libuio.hash",
    "content": "# Locally calculated\nsha256  cb6d2ed1c6c7fd8e0e4a9cb1d81bd88f3af37bd239fdf8966b3cb3671ff6db86  libuio-6ef3d8d096a641686bfdd112035aa04aa16fe81a.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/libuio/libuio.mk",
    "content": "################################################################################\n#\n# libuio\n#\n################################################################################\n\nLIBUIO_VERSION = 6ef3d8d096a641686bfdd112035aa04aa16fe81a\nLIBUIO_SITE = $(call github,Linutronix,libuio,$(LIBUIO_VERSION))\nLIBUIO_LICENSE = LGPL-2.1 (library), GPL-2.0 (programs)\nLIBUIO_LICENSE_FILES = COPYING\nLIBUIO_CONF_OPTS = --with-glib=no --without-werror\nLIBUIO_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-pkgconf\nLIBUIO_LIBS = $(TARGET_NLS_LIBS)\nLIBUIO_INSTALL_STAGING = YES\n\n# Fetched from github, no pre-generated configure script provided\nLIBUIO_GETTEXTIZE = YES\nLIBUIO_AUTORECONF = YES\n\n# Avoid build issue when makeinfo is missing\nLIBUIO_CONF_ENV += MAKEINFO=true\n\nifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y)\nLIBUIO_DEPENDENCIES += argp-standalone\nLIBUIO_LIBS += -largp\nendif\n\nLIBUIO_CONF_ENV += LIBS=\"$(LIBUIO_LIBS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libunistring/Config.in",
    "content": "config BR2_PACKAGE_LIBUNISTRING\n\tbool \"libunistring\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  The libunistring library provides functions for manipulating\n\t  Unicode strings and for manipulating C strings according to\n\t  the Unicode standard.\n\n\t  http://www.gnu.org/software/libunistring/\n\ncomment \"libunistring needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/libunistring/libunistring.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://ftp.gnu.org/gnu/libunistring/libunistring-0.9.10.tar.xz.sig\nsha256\teb8fb2c3e4b6e2d336608377050892b54c3c983b646c561836550863003c05d7\tlibunistring-0.9.10.tar.xz\n# Locally calculated\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\tCOPYING\nsha256\ta853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c\tCOPYING.LIB\n"
  },
  {
    "path": "package/libunistring/libunistring.mk",
    "content": "################################################################################\n#\n# libunistring\n#\n################################################################################\n\nLIBUNISTRING_VERSION = 0.9.10\nLIBUNISTRING_SITE = $(BR2_GNU_MIRROR)/libunistring\nLIBUNISTRING_SOURCE = libunistring-$(LIBUNISTRING_VERSION).tar.xz\nLIBUNISTRING_INSTALL_STAGING = YES\nLIBUNISTRING_LICENSE = LGPL-3.0+ or GPL-2.0\nLIBUNISTRING_LICENSE_FILES = COPYING COPYING.LIB\nLIBUNISTRING_CPE_ID_VENDOR = gnu\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libunwind/0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch",
    "content": "From 24484e80b3e329c9edee1995e102f8612eedb79c Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 13 May 2014 23:32:27 +0200\nSubject: [PATCH] Add AO_REQUIRE_CAS to fix build on ARM < v6\n\nARM earlier than ARMv6, such as ARMv4 and ARMv5 do not provide\noptimize atomic operations in libatomic_ops. Since libunwind is using\nsuch operations, it should define AO_REQUIRE_CAS before including\n<atomic_ops.h> so that libatomic_ops knows it should use emulated\natomic operations instead (even though they are obviously a lot more\nexpensive).\n\nAlso, while real atomic operations are all inline functions and\ntherefore linking against libatomic_ops was not required, the emulated\natomic operations actually require linking against libatomic_ops, so\nthe commented AC_CHECK_LIB test in acinclude.m4 is uncommented to make\nsure we link against libatomic_ops.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n acinclude.m4          | 8 +-------\n include/libunwind_i.h | 1 +\n 2 files changed, 2 insertions(+), 7 deletions(-)\n\ndiff --git a/acinclude.m4 b/acinclude.m4\nindex 497f7c2..9c15af1 100644\n--- a/acinclude.m4\n+++ b/acinclude.m4\n@@ -22,11 +22,5 @@ fi])\n AC_DEFUN([CHECK_ATOMIC_OPS],\n [dnl Check whether the system has the atomic_ops package installed.\n   AC_CHECK_HEADERS(atomic_ops.h)\n-#\n-# Don't link against libatomic_ops for now.  We don't want libunwind\n-# to depend on libatomic_ops.so.  Fortunately, none of the platforms\n-# we care about so far need libatomic_ops.a (everything is done via\n-# inline macros).\n-#\n-#  AC_CHECK_LIB(atomic_ops, main)\n+  AC_CHECK_LIB(atomic_ops, main)\n ])\ndiff --git a/include/libunwind_i.h b/include/libunwind_i.h\nindex 23f615e..deabdfd 100644\n--- a/include/libunwind_i.h\n+++ b/include/libunwind_i.h\n@@ -95,6 +95,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */\n \t(pthread_mutex_unlock != NULL ? pthread_mutex_unlock (l) : 0)\n \n #ifdef HAVE_ATOMIC_OPS_H\n+# define AO_REQUIRE_CAS\n # include <atomic_ops.h>\n static inline int\n cmpxchg_ptr (void *addr, void *old, void *new)\n-- \n1.9.2\n\n"
  },
  {
    "path": "package/libunwind/Config.in",
    "content": "# libunwind is only available for a certain subset of the\n# architectures (as visible in the list of architectures supported\n# with the glibc C library below).\n#\n# In addition to this, on some architectures libunwind requires the\n# *context() function from the C library, which are only available on\n# certain architectures in uClibc, and not available at all on\n# musl. But on some other architectures, libunwind works without using\n# the *context() functions, which allows it to be built with musl.\nconfig BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_TOOLCHAIN_USES_GLIBC && \\\n\t\t(BR2_ARM_CPU_HAS_ARM || BR2_aarch64 || BR2_mips || BR2_mipsel || \\\n\t\t BR2_mips64 || BR2_mips64el || BR2_powerpc || BR2_sh || \\\n\t\t BR2_i386 || BR2_x86_64)\n\tdefault y if BR2_TOOLCHAIN_USES_UCLIBC && \\\n\t\t(BR2_ARM_CPU_HAS_ARM || BR2_mips || BR2_mipsel || \\\n\t\t BR2_mips64 || BR2_mips64el || BR2_x86_64)\n\tdefault y if BR2_TOOLCHAIN_USES_MUSL && \\\n\t\t(BR2_ARM_CPU_HAS_ARM || BR2_aarch64 || BR2_x86_64)\n\nconfig BR2_PACKAGE_LIBUNWIND\n\tbool \"libunwind\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS\n\t# forcefully links against libgcc_s, only available in dynamic\n\t# linking configurations\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  C API to determine the call-chain of a program.\n\n\t  http://www.nongnu.org/libunwind/index.html\n\ncomment \"libunwind needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libunwind/libunwind.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  90337653d92d4a13de590781371c604f9031cdb50520366aa1e3a91e1efb1017  libunwind-1.5.0.tar.gz\n\n# Hash for license file\nsha256  6a0dbbdaec2b3136b7bf045586f4212bdf74e7af688bf9dfe9154607cf5ec156  COPYING\n"
  },
  {
    "path": "package/libunwind/libunwind.mk",
    "content": "################################################################################\n#\n# libunwind\n#\n################################################################################\n\nLIBUNWIND_VERSION = 1.5.0\nLIBUNWIND_SITE = http://download.savannah.gnu.org/releases/libunwind\nLIBUNWIND_INSTALL_STAGING = YES\nLIBUNWIND_LICENSE_FILES = COPYING\nLIBUNWIND_LICENSE = MIT\nLIBUNWIND_CPE_ID_VENDOR = libunwind_project\nLIBUNWIND_AUTORECONF = YES\n\nLIBUNWIND_CONF_OPTS = \\\n\t--disable-tests \\\n\t$(if $(BR2_INSTALL_LIBSTDCPP),--enable-cxx-exceptions,--disable-cxx-exceptions)\n\nifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y)\nLIBUNWIND_DEPENDENCIES += libatomic_ops\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libupnp/Config.in",
    "content": "config BR2_PACKAGE_LIBUPNP\n\tbool \"libupnp\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  The portable SDK for UPnP(tm) Devices (libupnp) provides\n\t  developers with an API and open source code for building\n\t  control points, devices, and bridges that are compliant with\n\t  Version 1.0 of the Universal Plug and Play Device Architecture\n\t  Specification\n\n\t  http://pupnp.sourceforge.net/\n\ncomment \"libupnp needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libupnp/libupnp.hash",
    "content": "# Locally computed:\nsha256  091c80aada1e939c2294245c122be2f5e337cc932af7f7d40504751680b5b5ac  libupnp-1.14.12.tar.bz2\nsha256  c8b99423cad48bb44e2cf52a496361404290865eac259a82da6d1e4331ececb3  COPYING\n"
  },
  {
    "path": "package/libupnp/libupnp.mk",
    "content": "################################################################################\n#\n# libupnp\n#\n################################################################################\n\nLIBUPNP_VERSION = 1.14.12\nLIBUPNP_SOURCE = libupnp-$(LIBUPNP_VERSION).tar.bz2\nLIBUPNP_SITE = \\\n\thttp://downloads.sourceforge.net/project/pupnp/release-$(LIBUPNP_VERSION)\nLIBUPNP_CONF_ENV = ac_cv_lib_compat_ftime=no\nLIBUPNP_INSTALL_STAGING = YES\nLIBUPNP_LICENSE = BSD-3-Clause\nLIBUPNP_LICENSE_FILES = COPYING\nLIBUPNP_CPE_ID_VENDOR = libupnp_project\nLIBUPNP_DEPENDENCIES = host-pkgconf\n\n# Bind the internal miniserver socket with reuseaddr to allow clean restarts.\nLIBUPNP_CONF_OPTS += \\\n\t--disable-samples \\\n\t--enable-reuseaddr\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBUPNP_CONF_OPTS += --enable-open-ssl\nLIBUPNP_DEPENDENCIES += openssl\nelse\nLIBUPNP_CONF_OPTS += --disable-open-ssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libupnpp/Config.in",
    "content": "config BR2_PACKAGE_LIBUPNPP\n\tbool \"libupnpp\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnpupnp\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBNPUPNP\n\thelp\n\t  The libupnpp C++ library wraps libupnp for easier use by\n\t  upmpdcli and upplay.\n\n\t  http://www.lesbonscomptes.com/upmpdcli/\n\ncomment \"libupnpp needs a toolchain w/ C++, threads, gcc >= 4.9\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/libupnpp/libupnpp.hash",
    "content": "# Hash from: http://www.lesbonscomptes.com/upmpdcli/downloads/libupnpp-0.21.0.tar.gz.sha256\nsha256  e43dbe5020ed25152aaec71b325dd80498e72038da5aeb50ed7dd51e213cd903  libupnpp-0.21.0.tar.gz\n\n# Hash for license file:\nsha256  00a89b0d18aacd4114decf79122db87bf35bddaf2bc50e383c9c9f4c263390b2  COPYING\n"
  },
  {
    "path": "package/libupnpp/libupnpp.mk",
    "content": "################################################################################\n#\n# libupnpp\n#\n################################################################################\n\nLIBUPNPP_VERSION = 0.21.0\nLIBUPNPP_SITE = http://www.lesbonscomptes.com/upmpdcli/downloads\nLIBUPNPP_LICENSE = LGPL-2.1+\nLIBUPNPP_LICENSE_FILES = COPYING\nLIBUPNPP_INSTALL_STAGING = YES\nLIBUPNPP_DEPENDENCIES = host-pkgconf expat libcurl libnpupnp\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/liburcu/0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch",
    "content": "From 54d8fe7ae40902d6d38e670f4024092f53c14e1f Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Sat, 8 Mar 2014 13:19:14 +0100\nSubject: [PATCH] Only blacklist ARM gcc 4.8.0 and 4.8.1\n\nSince many ARM toolchain providers include the bug fix for PR58854 in\ntheir latest releases based on gcc-4.8.2, then only blacklist gcc 4.8.0\nand 4.8.1.\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Fabrice: update for 0.13.0]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n urcu/compiler.h | 9 ++++++++-\n 1 file changed, 8 insertions(+), 1 deletion(-)\n\ndiff --git a/include/urcu/arch/arm.h b/include/urcu/arch/arm.h\nindex 1e30903..56115f1 100644\n--- a/include/urcu/arch/arm.h\n+++ b/include/urcu/arch/arm.h\n@@ -118,10 +118,17 @@\n  */\n \n /*\n+ * Official gcc releases from 4.8.0 to 4.8.2 have the following bug,\n+ * however, many arm toolchain providers have the included the fix for\n+ * their latest 4.8.2 releases.\n+ * So, we only blacklist gcc 4.8.0 and 4.8.1.\n+ * Unfortunately, this bug is not easy to test, so we rely on the\n+ * knowledge of the user on its compiler.\n+ *\n  * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854\n  */\n #ifdef URCU_GCC_VERSION\n-# if URCU_GCC_VERSION >= 40800 && URCU_GCC_VERSION <= 40802\n+# if URCU_GCC_VERSION >= 40800 && URCU_GCC_VERSION <= 40801\n #  error Your gcc version produces clobbered frame accesses\n # endif\n #endif\n--\n1.9.0\n\n"
  },
  {
    "path": "package/liburcu/0002-fix-don-t-use-C-thread_local-on-MacOs.patch",
    "content": "From e915ab84fd0c02d37504f3eb1e1f3be93ea6dc37 Mon Sep 17 00:00:00 2001\nFrom: Michael Jeanson <mjeanson@efficios.com>\nDate: Thu, 9 Sep 2021 12:11:16 -0400\nSubject: [PATCH] fix: don't use C++ thread_local on MacOs\n\nRecent versions of Apple's clang++ do support 'thread_local' but the\nimplementation generates additional helper symbols. This is a problem\nwhen accessing an extern TLS variable in a C++ compile unit that is\nprovided by a C library that doesn't have those extra symbols.\n\nFallback to using '__thread' on MacOs.\n\nChange-Id: I87cb5b3c9293f7bf66f7115f453b546dd793a449\nSigned-off-by: Michael Jeanson <mjeanson@efficios.com>\nSigned-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>\n\n[Retrieved from:\nhttps://github.com/urcu/userspace-rcu/commit/e915ab84fd0c02d37504f3eb1e1f3be93ea6dc37]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/urcu/tls-compat.h | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/include/urcu/tls-compat.h b/include/urcu/tls-compat.h\nindex 24ef1b9a..25cf375a 100644\n--- a/include/urcu/tls-compat.h\n+++ b/include/urcu/tls-compat.h\n@@ -34,7 +34,12 @@ extern \"C\" {\n \n #ifdef CONFIG_RCU_TLS\n \n-#if defined (__cplusplus) && (__cplusplus >= 201103L)\n+/*\n+ * Don't use C++ 'thread_local' on MacOs, the implementation is incompatible\n+ * with C and will result in a link error when accessing an extern variable\n+ * provided by the C library from C++ code.\n+ */\n+#if defined (__cplusplus) && (__cplusplus >= 201103L) && !defined(__APPLE__)\n # define URCU_TLS_STORAGE_CLASS\tthread_local\n #elif defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)\n # define URCU_TLS_STORAGE_CLASS\t_Thread_local\n"
  },
  {
    "path": "package/liburcu/0003-Always-use-__thread-for-Thread-local-storage-except-on-MSVC.patch",
    "content": "From 2e359284497c361e3208501fc70d49b2c54dc4ef Mon Sep 17 00:00:00 2001\nFrom: Michael Jeanson <mjeanson@efficios.com>\nDate: Tue, 14 Sep 2021 10:41:08 -0400\nSubject: [PATCH] Always use '__thread' for Thread local storage except on MSVC\n\nUse the GCC extension '__thread' [1] for Thread local storage on all C\nand C++ compilers except MSVC.\n\nWhile C11 and C++11 respectively offer '_Thread_local' and\n'thread_local' as potentialy faster implementations, they offer no\nguarantees of compatibility when used in a library interface which might\nbe used by both C and C++ client code.\n\n[1] https://gcc.gnu.org/onlinedocs/gcc/Thread-Local.html\n\nChange-Id: If4fe8bcdbda24b21dedf382112bd5c5f836c00c8\nSigned-off-by: Michael Jeanson <mjeanson@efficios.com>\nSigned-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>\n\n[Retrieved from:\nhttps://github.com/urcu/userspace-rcu/commit/2e359284497c361e3208501fc70d49b2c54dc4ef]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/urcu/tls-compat.h | 15 +++++++--------\n 1 file changed, 7 insertions(+), 8 deletions(-)\n\ndiff --git a/include/urcu/tls-compat.h b/include/urcu/tls-compat.h\nindex 25cf375a..a2c94ded 100644\n--- a/include/urcu/tls-compat.h\n+++ b/include/urcu/tls-compat.h\n@@ -35,15 +35,14 @@ extern \"C\" {\n #ifdef CONFIG_RCU_TLS\n \n /*\n- * Don't use C++ 'thread_local' on MacOs, the implementation is incompatible\n- * with C and will result in a link error when accessing an extern variable\n- * provided by the C library from C++ code.\n+ * Default to '__thread' on all C and C++ compilers except MSVC. While C11 has\n+ * '_Thread_local' and C++11 has 'thread_local', only '__thread' seems to have\n+ * a compatible implementation when linking public extern symbols across\n+ * language boundaries.\n+ *\n+ * For more details, see 'https://gcc.gnu.org/onlinedocs/gcc/Thread-Local.html'.\n  */\n-#if defined (__cplusplus) && (__cplusplus >= 201103L) && !defined(__APPLE__)\n-# define URCU_TLS_STORAGE_CLASS\tthread_local\n-#elif defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)\n-# define URCU_TLS_STORAGE_CLASS\t_Thread_local\n-#elif defined (_MSC_VER)\n+#if defined(_MSC_VER)\n # define URCU_TLS_STORAGE_CLASS\t__declspec(thread)\n #else\n # define URCU_TLS_STORAGE_CLASS\t__thread\n"
  },
  {
    "path": "package/liburcu/Config.in",
    "content": "config BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be || \\\n\t\tBR2_i386 || BR2_mips || BR2_mips64 || BR2_mipsel || \\\n\t\tBR2_mips64el || BR2_nios2 || BR2_powerpc || BR2_powerpc64 || \\\n\t\tBR2_powerpc64le || BR2_riscv || BR2_sparc64 || BR2_s390x || BR2_x86_64\n\tdepends on BR2_USE_MMU # fork() in test\n\nconfig BR2_PACKAGE_LIBURCU\n\tbool \"liburcu\"\n\tdepends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Userspace implementation of the Read-Copy-Update (RCU)\n\t  synchronization mechanism. This library is mainly used by\n\t  the LTTng tracing infrastructure, but can be used for other\n\t  purposes as well.\n\n\t  On ARM, because of bug:\n\t    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854\n\t  liburcu cannot be built using gcc 4.8.0, 4.8.1 or 4.8.2\n\t  without the following bug fix:\n\t    http://gcc.gnu.org/viewcvs/gcc?view=revision&revision=204665\n\n\t  http://lttng.org/urcu\n\ncomment \"liburcu needs a toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/liburcu/liburcu.hash",
    "content": "# http://www.lttng.org/files/urcu/userspace-rcu-0.13.0.tar.bz2.sha256\nsha256  cbb20dbe1a892c2a4d8898bac4316176e585392693d498766ccbbc68cf20ba20  userspace-rcu-0.13.0.tar.bz2\n\n# Hash for license files\nsha256  36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89  lgpl-2.1.txt\nsha256  8ef8121eddd2fc0779d94331a1d0f1ead9c796343d845e564cd8c8c4ae3d6f6e  lgpl-relicensing.txt\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  gpl-2.0.txt\nsha256  e8c070cb093be4b2eaf938a5f1c11621163b2d9cfa2790460cf925d81e442fa7  LICENSE\n"
  },
  {
    "path": "package/liburcu/liburcu.mk",
    "content": "################################################################################\n#\n# liburcu\n#\n################################################################################\n\nLIBURCU_VERSION = 0.13.0\nLIBURCU_SITE = http://lttng.org/files/urcu\nLIBURCU_SOURCE = userspace-rcu-$(LIBURCU_VERSION).tar.bz2\nLIBURCU_LICENSE = LGPL-2.1+ (library), MIT-like (few source files listed in LICENSE), GPL-2.0+ (test), GPL-3.0 (few *.m4 files)\nLIBURCU_LICENSE_FILES = lgpl-2.1.txt lgpl-relicensing.txt gpl-2.0.txt LICENSE\n\nLIBURCU_INSTALL_STAGING = YES\n\n# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test\n# provided by autoconf relies on wchar_t.\nLIBURCU_CONF_ENV = ac_cv_prog_cc_c99=-std=gnu99\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/liburiparser/Config.in",
    "content": "config BR2_PACKAGE_LIBURIPARSER\n\tbool \"liburiparser\"\n\thelp\n\t  uriparser is a strictly RFC 3986 compliant URI parsing and\n\t  handling library written in C.\n\n\t  https://uriparser.github.io\n"
  },
  {
    "path": "package/liburiparser/liburiparser.hash",
    "content": "# Locally calculated\nsha256  dd8061eba7f2e66c151722e6db0b27c972baa6215cf16f135dbe0f0a4bc6606c  uriparser-0.9.5.tar.bz2\nsha256  287f09e6546a9610f949f89e8fb937cacfeabd7bfaa8c8a0c18312193bf04ad3  COPYING\n"
  },
  {
    "path": "package/liburiparser/liburiparser.mk",
    "content": "################################################################################\n#\n# liburiparser\n#\n################################################################################\n\nLIBURIPARSER_VERSION = 0.9.5\nLIBURIPARSER_SOURCE = uriparser-$(LIBURIPARSER_VERSION).tar.bz2\nLIBURIPARSER_SITE = https://github.com/uriparser/uriparser/releases/download/uriparser-$(LIBURIPARSER_VERSION)\nLIBURIPARSER_LICENSE = BSD-3-Clause\nLIBURIPARSER_LICENSE_FILES = COPYING\nLIBURIPARSER_CPE_ID_VENDOR = uriparser_project\nLIBURIPARSER_CPE_ID_PRODUCT = uriparser\nLIBURIPARSER_INSTALL_STAGING = YES\nLIBURIPARSER_CONF_OPTS = -DURIPARSER_BUILD_DOCS=OFF -DURIPARSER_BUILD_TESTS=OFF\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nLIBURIPARSER_CONF_OPTS += -DBUILD_SHARED_LIBS=ON\nelse\nLIBURIPARSER_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF\nendif\n\nifeq ($(BR2_USE_WCHAR),)\nLIBURIPARSER_CONF_OPTS += -DURIPARSER_BUILD_WCHAR_T=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libusb/0001-linux_usbfs-Fix-parsing-of-descriptors-for-multi-con.patch",
    "content": "From 623e2a995d156e115c91f56a3ec691bdc333df8b Mon Sep 17 00:00:00 2001\nFrom: Chris Dickens <christopher.a.dickens@gmail.com>\nDate: Sun, 13 Dec 2020 15:49:19 -0800\nSubject: [PATCH 1/1] linux_usbfs: Fix parsing of descriptors for\n multi-configuration devices\n\nCommit e2be556bd2 (\"linux_usbfs: Parse config descriptors during device\ninitialization\") introduced a regression for devices with multiple\nconfigurations. The logic that verifies the reported length of the\nconfiguration descriptors failed to count the length of the\nconfiguration descriptor itself and would truncate the actual length by\n9 bytes, leading to a parsing error for subsequent descriptors.\n\nCloses #825\n\nSigned-off-by: Chris Dickens <christopher.a.dickens@gmail.com>\n(cherry picked from commit f6d2cb561402c3b6d3627c0eb89e009b503d9067)\nSigned-off-by: John Keeping <john@metanate.com>\n---\n libusb/os/linux_usbfs.c | 12 ++++++++----\n 1 file changed, 8 insertions(+), 4 deletions(-)\n\ndiff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c\nindex fb2ed53..4d2dc8d 100644\n--- a/libusb/os/linux_usbfs.c\n+++ b/libusb/os/linux_usbfs.c\n@@ -641,7 +641,12 @@ static int seek_to_next_config(struct libusb_context *ctx,\n \tuint8_t *buffer, size_t len)\n {\n \tstruct usbi_descriptor_header *header;\n-\tint offset = 0;\n+\tint offset;\n+\n+\t/* Start seeking past the config descriptor */\n+\toffset = LIBUSB_DT_CONFIG_SIZE;\n+\tbuffer += LIBUSB_DT_CONFIG_SIZE;\n+\tlen -= LIBUSB_DT_CONFIG_SIZE;\n \n \twhile (len > 0) {\n \t\tif (len < 2) {\n@@ -718,7 +723,7 @@ static int parse_config_descriptors(struct libusb_device *dev)\n \t\t}\n \n \t\tif (priv->sysfs_dir) {\n-\t\t\t /*\n+\t\t\t/*\n \t\t\t * In sysfs wTotalLength is ignored, instead the kernel returns a\n \t\t\t * config descriptor with verified bLength fields, with descriptors\n \t\t\t * with an invalid bLength removed.\n@@ -727,8 +732,7 @@ static int parse_config_descriptors(struct libusb_device *dev)\n \t\t\tint offset;\n \n \t\t\tif (num_configs > 1 && idx < num_configs - 1) {\n-\t\t\t\toffset = seek_to_next_config(ctx, buffer + LIBUSB_DT_CONFIG_SIZE,\n-\t\t\t\t\t\t\t     remaining - LIBUSB_DT_CONFIG_SIZE);\n+\t\t\t\toffset = seek_to_next_config(ctx, buffer, remaining);\n \t\t\t\tif (offset < 0)\n \t\t\t\t\treturn offset;\n \t\t\t\tsysfs_config_len = (uint16_t)offset;\n-- \n2.30.1\n\n"
  },
  {
    "path": "package/libusb/Config.in",
    "content": "config BR2_PACKAGE_LIBUSB\n\tbool \"libusb\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # _Thread_local\n\thelp\n\t  Userspace library for accessing USB devices\n\n\t  http://libusb.info/\n\nif BR2_PACKAGE_LIBUSB\n\nconfig BR2_PACKAGE_LIBUSB_EXAMPLES\n\tbool \"build libusb examples\"\n\nendif\n\ncomment \"libusb needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/libusb/libusb.hash",
    "content": "# Locally computed:\nsha256  7efd2685f7b327326dcfb85cee426d9b871fd70e22caa15bb68d595ce2a2b12a  libusb-1.0.24.tar.bz2\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING\n"
  },
  {
    "path": "package/libusb/libusb.mk",
    "content": "################################################################################\n#\n# libusb\n#\n################################################################################\n\nLIBUSB_VERSION_MAJOR = 1.0\nLIBUSB_VERSION = $(LIBUSB_VERSION_MAJOR).24\nLIBUSB_SOURCE = libusb-$(LIBUSB_VERSION).tar.bz2\nLIBUSB_SITE = https://github.com/libusb/libusb/releases/download/v$(LIBUSB_VERSION)\nLIBUSB_LICENSE = LGPL-2.1+\nLIBUSB_LICENSE_FILES = COPYING\nLIBUSB_CPE_ID_VENDOR = libusb\nLIBUSB_DEPENDENCIES = host-pkgconf\nLIBUSB_INSTALL_STAGING = YES\n\n# Avoid the discovery of udev for the host variant\nHOST_LIBUSB_CONF_OPTS = --disable-udev\nHOST_LIBUSB_DEPENDENCIES = host-pkgconf\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nLIBUSB_DEPENDENCIES += udev\nelse\nLIBUSB_CONF_OPTS += --disable-udev\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB_EXAMPLES),y)\nLIBUSB_CONF_OPTS += --enable-examples-build\ndefine LIBUSB_INSTALL_TARGET_EXAMPLES\n\t$(foreach example,listdevs xusb fxload hotplugtest testlibusb dpfp dpfp_threaded sam3u_benchmark,\n\t\t$(INSTALL) -D -m0755 $(@D)/examples/$(example) $(TARGET_DIR)/usr/bin/$(example)\n\t)\nendef\nLIBUSB_POST_INSTALL_TARGET_HOOKS += LIBUSB_INSTALL_TARGET_EXAMPLES\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libusb-compat/0001-fix-a-build-issue-on-linux.patch",
    "content": "From af07587e8775c25450cda8ba9e9a8b1a58072634 Mon Sep 17 00:00:00 2001\nFrom: Bartosz Golaszewski <brgl@bgdev.pl>\nDate: Mon, 3 Jul 2017 15:55:00 +0200\nSubject: [PATCH] fix a build issue on linux\n\nOn linux PATH_MAX is defined in linux/limits.h. If we include usb.h\nwithout previously having indirectly included it, the build fails.\n\nSigned-off-by: Bartosz Golaszewski <brgl@bgdev.pl>\n---\n libusb/usb.h | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/libusb/usb.h b/libusb/usb.h\nindex d2c30aa..7ad9a66 100644\n--- a/libusb/usb.h\n+++ b/libusb/usb.h\n@@ -41,6 +41,11 @@ typedef unsigned __int32  uint32_t;\n #include <stdint.h>\n #endif\n \n+/* On linux PATH_MAX is defined in linux/limits.h. */\n+#if defined(__linux__)\n+#include <linux/limits.h>\n+#endif\n+\n /*\n  * USB spec information\n  *\n-- \n2.9.3\n\n"
  },
  {
    "path": "package/libusb-compat/Config.in",
    "content": "config BR2_PACKAGE_LIBUSB_COMPAT\n\tbool \"libusb-compat\"\n\tdepends on BR2_PACKAGE_LIBUSB\n\thelp\n\t  libusb-0.1 compatibility layer for libusb-1.0.\n\n\t  http://libusb.info/\n"
  },
  {
    "path": "package/libusb-compat/libusb-compat.hash",
    "content": "# Locally computed:\nsha256  8259f8d5b084fe43c47823a939e955e0ba21942b8d112266c39d228cc14764d6  libusb-compat-0.1.7.tar.bz2\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING\n"
  },
  {
    "path": "package/libusb-compat/libusb-compat.mk",
    "content": "################################################################################\n#\n# libusb-compat\n#\n################################################################################\n\nLIBUSB_COMPAT_VERSION_MAJOR = 0.1\nLIBUSB_COMPAT_VERSION = $(LIBUSB_COMPAT_VERSION_MAJOR).7\nLIBUSB_COMPAT_SOURCE = libusb-compat-$(LIBUSB_COMPAT_VERSION).tar.bz2\nLIBUSB_COMPAT_SITE = https://github.com/libusb/libusb-compat-0.1/releases/download/v$(LIBUSB_COMPAT_VERSION)\nLIBUSB_COMPAT_DEPENDENCIES = host-pkgconf libusb\nHOST_LIBUSB_COMPAT_DEPENDENCIES = host-pkgconf host-libusb\nLIBUSB_COMPAT_INSTALL_STAGING = YES\nLIBUSB_COMPAT_CONFIG_SCRIPTS = libusb-config\nLIBUSB_COMPAT_LICENSE = LGPL-2.1+\nLIBUSB_COMPAT_LICENSE_FILES = COPYING\n\nifeq ($(BR2_STATIC_LIBS),)\nLIBUSB_COMPAT_CONF_ENV += \\\n\tLIBUSB_1_0_SONAME=`LC_ALL=C readelf -d $(STAGING_DIR)/usr/lib/libusb-1.0.so \\\n\t\t\t   |sed -r -e '/\\(SONAME\\)/!d; s/.*\\[(.+)\\]$$/\\1/'`\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libusbgx/0001-Add-include-of-sys-sysmacro.h.patch",
    "content": "From 45c14ef4d5d7ced0fbf984208de44ced6d5ed898 Mon Sep 17 00:00:00 2001\nFrom: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\nDate: Mon, 10 Sep 2018 15:52:09 +0200\nSubject: [PATCH] libusbgx: fix build with glibc-2.28 since <sys/sysmacros.h>\n is no more included by <sys/types.h>\n\nSince https://sourceware.org/ml/libc-alpha/2015-11/msg00253.html sys/sysmacros.h\nmust be explicitly included.\nWithout sys/sysmacros.h and with glibc-2.28 build fails with error like:\nsrc/.libs/libusbgx.so: undefined reference to minor' src/.libs/libusbgx.so: undefined reference tomajor'\nsrc/.libs/libusbgx.so: undefined reference to `makedev'\n\nSigned-off-by: Sid Spry <R030t1@gmail.com>\nSigned-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\n---\n examples/gadget-acm-ecm.c              | 1 +\n examples/gadget-import.c               | 1 +\n examples/gadget-ms.c                   | 1 +\n examples/show-gadgets.c                | 1 +\n examples/show-udcs.c                   | 1 +\n include/usbg/usbg_internal_libconfig.h | 1 +\n 6 files changed, 6 insertions(+)\n\ndiff --git a/examples/gadget-acm-ecm.c b/examples/gadget-acm-ecm.c\nindex 1c5e2ca..29360da 100644\n--- a/examples/gadget-acm-ecm.c\n+++ b/examples/gadget-acm-ecm.c\n@@ -20,6 +20,7 @@\n \n #include <errno.h>\n #include <stdio.h>\n+#include <sys/sysmacros.h>\n #include <linux/usb/ch9.h>\n #include <usbg/usbg.h>\n \ndiff --git a/examples/gadget-import.c b/examples/gadget-import.c\nindex e684fdb..63df449 100644\n--- a/examples/gadget-import.c\n+++ b/examples/gadget-import.c\n@@ -25,6 +25,7 @@\n #include <errno.h>\n #include <string.h>\n #include <stdio.h>\n+#include <sys/sysmacros.h>\n #include <usbg/usbg.h>\n \n int main(int argc, char **argv)\ndiff --git a/examples/gadget-ms.c b/examples/gadget-ms.c\nindex 478c370..a5c6681 100644\n--- a/examples/gadget-ms.c\n+++ b/examples/gadget-ms.c\n@@ -23,6 +23,7 @@\n \n #include <errno.h>\n #include <stdio.h>\n+#include <sys/sysmacros.h>\n #include <linux/usb/ch9.h>\n #include <usbg/usbg.h>\n #include <usbg/function/ms.h>\ndiff --git a/examples/show-gadgets.c b/examples/show-gadgets.c\nindex 707d448..a2a21c8 100644\n--- a/examples/show-gadgets.c\n+++ b/examples/show-gadgets.c\n@@ -21,6 +21,7 @@\n #include <errno.h>\n #include <stdio.h>\n #include <string.h>\n+#include <sys/sysmacros.h>\n #include <netinet/ether.h>\n #include <usbg/usbg.h>\n #include <usbg/function/ms.h>\ndiff --git a/examples/show-udcs.c b/examples/show-udcs.c\nindex 66e950f..2f5cc45 100644\n--- a/examples/show-udcs.c\n+++ b/examples/show-udcs.c\n@@ -23,6 +23,7 @@\n \n #include <errno.h>\n #include <stdio.h>\n+#include <sys/sysmacros.h>\n #include <usbg/usbg.h>\n \n int main(void)\ndiff --git a/include/usbg/usbg_internal_libconfig.h b/include/usbg/usbg_internal_libconfig.h\nindex ac51758..3fa55c0 100644\n--- a/include/usbg/usbg_internal_libconfig.h\n+++ b/include/usbg/usbg_internal_libconfig.h\n@@ -12,6 +12,7 @@\n #ifndef USBG_INTERNAL_LIBCONFIG_H\n #define USBG_INTERNAL_LIBCONFIG_H\n \n+#include <sys/sysmacros.h>\n #include <libconfig.h>\n #ifdef __cplusplus\n extern \"C\" {\n-- \n2.16.4\n\n"
  },
  {
    "path": "package/libusbgx/Config.in",
    "content": "config BR2_PACKAGE_LIBUSBGX\n\tbool \"libusbgx\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBCONFIG\n\thelp\n\t  libusbgx is a C library encapsulating the kernel USB\n\t  gadget-configfs userspace API functionality.\n\n\t  https://github.com/libusbgx/libusbgx\n\ncomment \"libusbgx needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libusbgx/libusbgx.hash",
    "content": "# Locally computed:\nsha256  b15abc89a0ef82c6a650cc1d58b5ba50f7ce076db392add84caabcd86c608ee2  libusbgx-0.2.0.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LGPL\n"
  },
  {
    "path": "package/libusbgx/libusbgx.mk",
    "content": "################################################################################\n#\n# libusbgx\n#\n################################################################################\n\nLIBUSBGX_VERSION = 0.2.0\nLIBUSBGX_SITE = $(call github,libusbgx,libusbgx,libusbgx-v$(LIBUSBGX_VERSION))\nLIBUSBGX_LICENSE = GPL-2.0+ (examples), LGPL-2.1+ (library)\nLIBUSBGX_LICENSE_FILES = COPYING COPYING.LGPL\nLIBUSBGX_DEPENDENCIES = host-pkgconf libconfig\nLIBUSBGX_AUTORECONF = YES\nLIBUSBGX_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libuv/Config.in",
    "content": "config BR2_PACKAGE_LIBUV\n\tbool \"libuv\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_barrier_*\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\thelp\n\t  libuv is a multi-platform support library with a focus\n\t  on asynchronous I/O.\n\n\t  https://github.com/libuv/libuv\n\ncomment \"libuv needs a toolchain w/ NPTL, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n"
  },
  {
    "path": "package/libuv/libuv.hash",
    "content": "# Locally calculated\nsha256  371e5419708f6aaeb8656671f89400b92a9bba6443369af1bb70bcd6e4b3c764  libuv-1.42.0.tar.gz\nsha256  6d20216ae022fbeed23916f48508fd807ece3d8464992330643b0e64e5c0c24b  LICENSE\n"
  },
  {
    "path": "package/libuv/libuv.mk",
    "content": "################################################################################\n#\n# libuv\n#\n################################################################################\n\n# When bumping libuv, check if a new version of uvw is available\n# and bump it too.\nLIBUV_VERSION = 1.42.0\nLIBUV_SITE = $(call github,libuv,libuv,v$(LIBUV_VERSION))\nLIBUV_DEPENDENCIES = host-pkgconf\nLIBUV_INSTALL_STAGING = YES\nLIBUV_AUTORECONF = YES\nLIBUV_LICENSE = BSD-2-Clause, BSD-3-Clause, ISC, MIT\nLIBUV_LICENSE_FILES = LICENSE\nLIBUV_CPE_ID_VENDOR = libuv\n\n# Upstream needs tests to be run sequentially. This is the default in\n# automake 1.11 and before, but not starting in 1.12. To maintain\n# sequentiality in 1.12 and later, the automake option 'serial-tests'\n# must be used, Unfortunately, it is not recognised by 1.11 and\n# before. So upstream only adds it conditionally. We use automake\n# 1.14, so we need it.\ndefine LIBUV_FIXUP_AUTOGEN\n\techo \"m4_define([UV_EXTRA_AUTOMAKE_FLAGS], [serial-tests])\" \\\n\t\t>$(@D)/m4/libuv-extra-automake-flags.m4\nendef\nLIBUV_POST_PATCH_HOOKS += LIBUV_FIXUP_AUTOGEN\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libuwsc/0001-CMakeLists.txt-add-BUILD_EXAMPLE.patch",
    "content": "From bb71b21eb9407479ad729b3c858b0fc350fae335 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 21 Feb 2021 19:39:59 +0100\nSubject: [PATCH] CMakeLists.txt: add BUILD_EXAMPLE\n\nAllow the user to disable example\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[yann.morin.1998@free.fr: backport from upstream]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n CMakeLists.txt | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 110d933..c52ab79 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -2,7 +2,11 @@ cmake_minimum_required(VERSION 2.8)\n \n project(libuwsc C)\n \n+option(BUILD_EXAMPLE \"Build example\" ON)\n+\n list(APPEND CMAKE_MODULE_PATH \"${CMAKE_SOURCE_DIR}/cmake/Modules/\")\n \n add_subdirectory(src)\n-add_subdirectory(example)\n+if(BUILD_EXAMPLE)\n+    add_subdirectory(example)\n+endif()\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/libuwsc/0002-fix-bad-indentation.patch",
    "content": "From 8cb416140741a596235b8acc46b2b119b13ebfab Mon Sep 17 00:00:00 2001\nFrom: Rosen Penev <rosenp@gmail.com>\nDate: Tue, 6 Jul 2021 21:01:52 -0700\nSubject: [PATCH] fix bad indentation\n\nFixes error with GCC11.\n\n[Retrieved from:\nhttps://github.com/zhaojh329/libuwsc/commit/8cb416140741a596235b8acc46b2b119b13ebfab]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/lua/uwsc_lua.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/lua/uwsc_lua.c b/src/lua/uwsc_lua.c\nindex de6932e..84689fe 100644\n--- a/src/lua/uwsc_lua.c\n+++ b/src/lua/uwsc_lua.c\n@@ -178,7 +178,7 @@ static int uwsc_lua_on(lua_State *L)\n     else\n         luaL_argcheck(L, false, 2, \"available event name: open message error close\");\n \n-\treturn 0;\n+    return 0;\n }\n \n static int __uwsc_lua_send(lua_State *L, int op)\n"
  },
  {
    "path": "package/libuwsc/Config.in",
    "content": "config BR2_PACKAGE_LIBUWSC\n\tbool \"libuwsc\"\n\tselect BR2_PACKAGE_LIBEV\n\thelp\n\t  A Lightweight and fully asynchronous WebSocket client\n\t  library based on libev.\n\n\t  https://github.com/zhaojh329/libuwsc\n"
  },
  {
    "path": "package/libuwsc/libuwsc.hash",
    "content": "# Locally calculated\nsha256  a06b7324671e181ffe3165e93e6f94c7ac1380f69e32a52e80c8da7016acd60d  libuwsc-3.3.5.tar.gz\nsha256  99efed4bbc0b62f96f999ef23399e38234fb91651af734fd389a52b033a85b55  LICENSE\n"
  },
  {
    "path": "package/libuwsc/libuwsc.mk",
    "content": "################################################################################\n#\n# libuwsc\n#\n################################################################################\n\nLIBUWSC_VERSION = 3.3.5\nLIBUWSC_SITE = https://github.com/zhaojh329/libuwsc/releases/download/v$(LIBUWSC_VERSION)\nLIBUWSC_LICENSE = MIT\nLIBUWSC_LICENSE_FILES = LICENSE\nLIBUWSC_INSTALL_STAGING = YES\nLIBUWSC_DEPENDENCIES = libev\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBUWSC_DEPENDENCIES += openssl\nLIBUWSC_CONF_OPTS += \\\n\t-DUWSC_SSL_SUPPORT=ON \\\n\t-DUWSC_USE_MBEDTLS=OFF \\\n\t-DUWSC_USE_OPENSSL=ON \\\n\t-DUWSC_USE_WOLFSSL=OFF\nelse ifeq ($(BR2_PACKAGE_WOLFSSL),y)\nLIBUWSC_DEPENDENCIES += wolfssl\nLIBUWSC_CONF_OPTS += \\\n\t-DUWSC_SSL_SUPPORT=ON \\\n\t-DUWSC_USE_MBEDTLS=OFF \\\n\t-DUWSC_USE_OPENSSL=OFF \\\n\t-DUWSC_USE_WOLFSSL=ON\nelse ifeq ($(BR2_PACKAGE_MBEDTLS),y)\nLIBUWSC_DEPENDENCIES += mbedtls\nLIBUWSC_CONF_OPTS += \\\n\t-DUWSC_SSL_SUPPORT=ON \\\n\t-DUWSC_USE_MBEDTLS=ON \\\n\t-DUWSC_USE_OPENSSL=OFF \\\n\t-DUWSC_USE_WOLFSSL=OFF\nelse\nLIBUWSC_CONF_OPTS += -DUWSC_SSL_SUPPORT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LUA):$(BR2_STATIC_LIBS),y:)\nLIBUWSC_DEPENDENCIES += lua\nLIBUWSC_CONF_OPTS += -DUWSC_LUA_SUPPORT=ON\nelse\nLIBUWSC_CONF_OPTS += -DUWSC_LUA_SUPPORT=OFF\nendif\n\n# BUILD_SHARED_LIBS is handled in pkg-cmake.mk as it is a generic cmake variable\nifeq ($(BR2_SHARED_STATIC_LIBS),y)\nLIBUWSC_CONF_OPTS += -DBUILD_STATIC_LIBS=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nLIBUWSC_CONF_OPTS += -DBUILD_STATIC_LIBS=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libv4l/0001-keymap.h-add-missing-includes-to-fix-musl-build.patch",
    "content": "From baba68cdcb44fc11d0ba8ce2c13eb5b06bbd9b33 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Wed, 30 Oct 2019 07:15:23 +0100\nSubject: [PATCH] keymap.h: add missing includes to fix musl build\n\nNeeded to fix these build errors:\n\nIn file included from keymap.c:13:0:\nkeymap.h:23:2: error: unknown type name 'u_int32_t'\n  u_int32_t scancode;\n\nkeymap.h:36:1: error: unknown type name 'error_t'\n error_t parse_keymap(char *fname, struct keymap **keymap, bool verbose);\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\nPatch was not sent upstream due to broken mailing list setup:\n\n<majordomo@vger.kernel.org>: host vger.kernel.org[209.132.180.67] said: 553\n    5.7.1 Hello [xx.xx.xx.xx], for your MAIL FROM address\n    <bernd.kuhls@t-online.de> policy analysis reported: Your address is not\n    liked source for email (in reply to MAIL FROM command)\n\nHello [xx.xx.xx.xx], for your MAIL FROM address <berndkuhls@hotmail.com>\n policy analysis reported: Your address is not liked source for email \n\n utils/common/keymap.h | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/utils/common/keymap.h b/utils/common/keymap.h\nindex f2b29632..bb1edce9 100644\n--- a/utils/common/keymap.h\n+++ b/utils/common/keymap.h\n@@ -1,4 +1,8 @@\n /* SPDX-License-Identifier: GPL-2.0 */\n+\n+#include <argp.h>\n+#include <sys/types.h>\n+\n #ifndef __KEYMAP_H\n #define __KEYMAP_H\n \ndiff -uNr v4l-utils-1.18.0.orig/utils/ir-ctl/keymap.h v4l-utils-1.18.0/utils/ir-ctl/keymap.h\n--- v4l-utils-1.18.0.orig/utils/ir-ctl/keymap.h\t2019-09-22 11:22:54.000000000 +0200\n+++ v4l-utils-1.18.0/utils/ir-ctl/keymap.h\t2019-10-30 07:06:18.250548011 +0100\n@@ -1,4 +1,8 @@\n /* SPDX-License-Identifier: GPL-2.0 */\n+\n+#include <argp.h>\n+#include <sys/types.h>\n+\n #ifndef __KEYMAP_H\n #define __KEYMAP_H\n \ndiff -uNr v4l-utils-1.18.0.orig/utils/keytable/keymap.h v4l-utils-1.18.0/utils/keytable/keymap.h\n--- v4l-utils-1.18.0.orig/utils/keytable/keymap.h\t2019-09-22 11:22:54.000000000 +0200\n+++ v4l-utils-1.18.0/utils/keytable/keymap.h\t2019-10-30 07:06:56.218816126 +0100\n@@ -1,4 +1,8 @@\n /* SPDX-License-Identifier: GPL-2.0 */\n+\n+#include <argp.h>\n+#include <sys/types.h>\n+\n #ifndef __KEYMAP_H\n #define __KEYMAP_H\n \n-- \n2.20.1\n"
  },
  {
    "path": "package/libv4l/Config.in",
    "content": "config BR2_PACKAGE_LIBV4L\n\tbool \"libv4l\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # media headers\n\tselect BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  libv4l is a collection of libraries which adds a thin\n\t  abstraction layer on top of video4linux2 devices. libv4l\n\t  consists of 3 different libraries: libv4lconvert, libv4l1 and\n\t  libv4l2.\n\n\t  http://linuxtv.org/wiki/index.php/V4l-utils\n\nif BR2_PACKAGE_LIBV4L\n\ncomment \"libv4l JPEG support not enabled\"\n\tdepends on !BR2_PACKAGE_JPEG\n\nconfig BR2_PACKAGE_LIBV4L_UTILS\n\tbool \"v4l-utils tools\"\n\thelp\n\t  v4l-utils is a collection of various video4linux and DVB\n\t  utilities.\n\t  Enable this if you want to build the following tools:\n\t  - cx18-ctl\n\t  - dvb-fe-tool, dvbv5-zap, dvbv5-scan, dvb-format-convert\n\t  - decode_tm6000\n\t  - ir-keytable\n\t  - media-ctl\n\t  - v4l2-compliance\n\t  - v4l2-ctl, cx18-ctl, ivtv-ctl\n\t  - v4l2-sysfs-path\n\t  - rds-ctl\n\t  - qv4l2 (if Qt is enabled)\n\nendif\n\ncomment \"libv4l needs a toolchain w/ threads, C++ and headers >= 3.0\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n"
  },
  {
    "path": "package/libv4l/libv4l.hash",
    "content": "# Locally calculated after checking signature\n# https://linuxtv.org/downloads/v4l-utils/v4l-utils-1.20.0.tar.bz2.asc\n# with key 05D0169C26E41593418129DF199A64FADFB500FF\nsha256 956118713f7ccb405c55c7088a6a2490c32d54300dd9a30d8d5008c28d3726f7  v4l-utils-1.20.0.tar.bz2\n\n# Locally calculated\nsha256  391e4da1c54a422a78d83be7bf84b2dfb8bacdd8ad256fa4374e128655584a8a  COPYING\nsha256  5a7f623a50e384aaf6d2ced068339ddf93d0a50d3a0ecbe86f125b07804ecc78  COPYING.libv4l\nsha256  34229b5aadfb768d0d083987cba54203a920904a3ec8320823c6125b9831acd1  lib/libv4l1/libv4l1-kernelcode-license.txt\n"
  },
  {
    "path": "package/libv4l/libv4l.mk",
    "content": "################################################################################\n#\n# libv4l\n#\n################################################################################\n\nLIBV4L_VERSION = 1.20.0\nLIBV4L_SOURCE = v4l-utils-$(LIBV4L_VERSION).tar.bz2\nLIBV4L_SITE = https://linuxtv.org/downloads/v4l-utils\nLIBV4L_INSTALL_STAGING = YES\nLIBV4L_DEPENDENCIES = host-pkgconf\nLIBV4L_CONF_OPTS = --disable-doxygen-doc --disable-qvidcap\n# needed to get utils/qv4l link flags right\nLIBV4L_AUTORECONF = YES\n# add host-gettext for AM_ICONV macro\nLIBV4L_DEPENDENCIES += host-gettext\n\n# fix uclibc-ng configure/compile\nLIBV4L_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'\n\n# v4l-utils components have different licences, see v4l-utils.spec for details\nLIBV4L_LICENSE = GPL-2.0+ (utilities), LGPL-2.1+ (libraries)\nLIBV4L_LICENSE_FILES = COPYING COPYING.libv4l lib/libv4l1/libv4l1-kernelcode-license.txt\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nLIBV4L_DEPENDENCIES += alsa-lib\nendif\n\nifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y)\nLIBV4L_DEPENDENCIES += argp-standalone\nLIBV4L_LIBS += -largp\nendif\n\nLIBV4L_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nLIBV4L_DEPENDENCIES += jpeg\nLIBV4L_CONF_OPTS += --with-jpeg\nelse\nLIBV4L_CONF_OPTS += --without-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBGL),y)\nLIBV4L_DEPENDENCIES += libgl\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nLIBV4L_CONF_OPTS += --with-udevdir=/usr/lib/udev\nLIBV4L_DEPENDENCIES += udev\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLU),y)\nLIBV4L_DEPENDENCIES += libglu\nendif\n\nifeq ($(BR2_PACKAGE_LIBV4L_UTILS),y)\nLIBV4L_CONF_OPTS += --enable-v4l-utils\nLIBV4L_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES)\n\n# IR BPF decoder support needs toolchain with linux-headers >= 3.18\n# libelf and clang support\nLIBV4L_CONF_OPTS += --disable-bpf\n\nifeq ($(BR2_PACKAGE_QT5BASE)$(BR2_PACKAGE_QT5BASE_GUI)$(BR2_PACKAGE_QT5BASE_WIDGETS),yyy)\nLIBV4L_CONF_OPTS += --enable-qv4l2\nLIBV4L_DEPENDENCIES += qt5base\n# protect against host version detection of moc-qt5/rcc-qt5/uic-qt5\nLIBV4L_CONF_ENV += \\\n\tac_cv_prog_MOC=$(HOST_DIR)/bin/moc \\\n\tac_cv_prog_RCC=$(HOST_DIR)/bin/rcc \\\n\tac_cv_prog_UIC=$(HOST_DIR)/bin/uic\n# qt5 needs c++11 (since qt-5.7)\nLIBV4L_CONF_ENV += CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\nelse\nLIBV4L_CONF_OPTS += --disable-qv4l2\nendif\nelse\nLIBV4L_CONF_OPTS += --disable-v4l-utils\nendif\n\nifeq ($(BR2_PACKAGE_SDL2_IMAGE),y)\nLIBV4L_DEPENDENCIES += sdl2_image\nendif\n\nLIBV4L_CONF_ENV += LIBS=\"$(LIBV4L_LIBS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libva/Config.in",
    "content": "config BR2_PACKAGE_LIBVA\n\tbool \"libva\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libdrm/libpthread-stubs\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XORG7\n\thelp\n\t  The main motivation for VA-API (Video Acceleration API) is to\n\t  enable hardware accelerated video decode/encode at various\n\t  entry-points (VLD, IDCT, Motion Compensation etc.) for the\n\t  prevailing coding standards today (MPEG-2, MPEG-4 ASP/H.263,\n\t  MPEG-4 AVC/H.264, and VC-1/VMW3).\n\n\t  https://01.org/vaapi\n\ncomment \"libva needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libva/libva.hash",
    "content": "# From https://github.com/intel/libva/releases/download/2.13.0/libva-2.13.0.tar.bz2.sha1sum\nsha1  2adb2c023371dd68fe0d23e58afcf0b072b79828  libva-2.13.0.tar.bz2\n# Locally computed\nsha256  fad383f39f36115814bd0eda1496a4cc01761643bd962635400df2d4470ad460  libva-2.13.0.tar.bz2\nsha256  c86a782ee845b52472dae9b9d79fb915d333628ac0efe49cdce63644814931de  COPYING\n"
  },
  {
    "path": "package/libva/libva.mk",
    "content": "################################################################################\n#\n# libva\n#\n################################################################################\n\nLIBVA_VERSION = 2.13.0\nLIBVA_SOURCE = libva-$(LIBVA_VERSION).tar.bz2\nLIBVA_SITE = https://github.com/intel/libva/releases/download/$(LIBVA_VERSION)\nLIBVA_LICENSE = MIT\nLIBVA_LICENSE_FILES = COPYING\nLIBVA_INSTALL_STAGING = YES\nLIBVA_DEPENDENCIES = host-pkgconf libdrm\n\n# libdrm is a hard-dependency\nLIBVA_CONF_OPTS = \\\n\t--enable-drm \\\n\t--with-drivers-path=\"/usr/lib/va\"\n\nifeq ($(BR2_PACKAGE_XORG7),y)\nLIBVA_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXfixes\nLIBVA_CONF_OPTS += --enable-x11\nifeq ($(BR2_PACKAGE_HAS_LIBGL),y)\nLIBVA_DEPENDENCIES += libgl\nLIBVA_CONF_OPTS += --enable-glx\nendif\nelse\nLIBVA_CONF_OPTS += --disable-glx --disable-x11\nendif\n\nifeq ($(BR2_PACKAGE_WAYLAND),y)\nLIBVA_DEPENDENCIES += wayland\nLIBVA_CONF_ENV += ac_cv_path_WAYLAND_SCANNER=$(HOST_DIR)/usr/bin/wayland-scanner\nLIBVA_CONF_OPTS += --enable-wayland\nelse\nLIBVA_CONF_OPTS += --disable-wayland\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libva-intel-driver/Config.in",
    "content": "config BR2_PACKAGE_LIBVA_INTEL_DRIVER\n\tbool \"libva-intel-driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libdrm/libpthread-stubs\n\tdepends on !BR2_STATIC_LIBS # libva\n\tselect BR2_PACKAGE_LIBVA\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_LIBDRM_INTEL\n\tselect BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XORG7\n\thelp\n\t  VA-API back-end driver for Intel graphics chips\n\n\t  https://01.org/vaapi\n\ncomment \"libva intel driver needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\tdepends on BR2_i386 || BR2_x86_64\n"
  },
  {
    "path": "package/libva-intel-driver/libva-intel-driver.hash",
    "content": "# From https://github.com/intel/intel-vaapi-driver/releases\nsha1  c998e06f13238c6419bb38ede9a13e453312737b  intel-vaapi-driver-2.4.1.tar.bz2\n# Locally computed\nsha256  0081fce08eb3a83f7d99c3b853c8fdfa0af437b8f5b0fb7c66faeb83bcbe0c19  intel-vaapi-driver-2.4.1.tar.bz2\nsha256  c86a782ee845b52472dae9b9d79fb915d333628ac0efe49cdce63644814931de  COPYING\n"
  },
  {
    "path": "package/libva-intel-driver/libva-intel-driver.mk",
    "content": "################################################################################\n#\n# libva-intel-driver\n#\n################################################################################\n\nLIBVA_INTEL_DRIVER_VERSION = 2.4.1\nLIBVA_INTEL_DRIVER_SOURCE = intel-vaapi-driver-$(LIBVA_INTEL_DRIVER_VERSION).tar.bz2\nLIBVA_INTEL_DRIVER_SITE = \\\n\thttps://github.com/intel/intel-vaapi-driver/releases/download/$(LIBVA_INTEL_DRIVER_VERSION)\nLIBVA_INTEL_DRIVER_LICENSE = MIT\nLIBVA_INTEL_DRIVER_LICENSE_FILES = COPYING\nLIBVA_INTEL_DRIVER_DEPENDENCIES = host-pkgconf libdrm libva\n\nifeq ($(BR2_PACKAGE_XORG7),y)\nLIBVA_INTEL_DRIVER_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXfixes\nLIBVA_INTEL_DRIVER_CONF_OPTS += --enable-x11\nelse\nLIBVA_INTEL_DRIVER_CONF_OPTS += --disable-x11\nendif\n\nifeq ($(BR2_PACKAGE_WAYLAND),y)\nLIBVA_INTEL_DRIVER_DEPENDENCIES += wayland\nLIBVA_INTEL_DRIVER_CONF_OPTS += --enable-wayland\nelse\nLIBVA_INTEL_DRIVER_CONF_OPTS += --disable-wayland\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libva-utils/Config.in",
    "content": "config BR2_PACKAGE_LIBVA_UTILS\n\tbool \"libva-utils\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # libva\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libva\n\tselect BR2_PACKAGE_LIBVA\n\thelp\n\t  Libva-utils is a collection of tests for VA-API (Video\n\t  Acceleration API)\n\n\t  https://01.org/vaapi\n\ncomment \"libva-utils needs a toolchain w/ C++, threads, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libva-utils/libva-utils.hash",
    "content": "# From https://github.com/intel/libva-utils/releases/download/2.13.0/libva-utils-2.13.0.tar.bz2.sha1sum\nsha1  7ab945cf232387f762891f9e4f7a6cb41e0766e8  libva-utils-2.13.0.tar.bz2\n# Locally computed\nsha256  db3ae0bd63c2a3f6ef498450c29ffc99c387ce611e1eb5db6a8da1f88845d612  libva-utils-2.13.0.tar.bz2\nsha256  c6220c9f87832c27abcb8a32eafdd2823e13ce146b3ea63d5deae2a76798ef50  COPYING\n"
  },
  {
    "path": "package/libva-utils/libva-utils.mk",
    "content": "################################################################################\n#\n# libva-utils\n#\n################################################################################\n\nLIBVA_UTILS_VERSION = 2.13.0\nLIBVA_UTILS_SOURCE = libva-utils-$(LIBVA_UTILS_VERSION).tar.bz2\nLIBVA_UTILS_SITE = https://github.com/intel/libva-utils/releases/download/$(LIBVA_UTILS_VERSION)\nLIBVA_UTILS_LICENSE = MIT\nLIBVA_UTILS_LICENSE_FILES = COPYING\nLIBVA_UTILS_DEPENDENCIES = host-pkgconf libva\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libvdpau/Config.in",
    "content": "config BR2_PACKAGE_LIBVDPAU\n\tbool \"libvdpau\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\thelp\n\t  VDPAU is the Video Decode and Presentation API for UNIX.\n\t  It provides an interface to video decode acceleration and\n\t  presentation hardware present in modern GPUs.\n\n\t  http://freedesktop.org/wiki/Software/VDPAU\n\ncomment \"libvdpau needs a toolchain w/ threads, C++\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/libvdpau/libvdpau.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-August/003021.html\nsha256 b5a52eeac9417edbc396f26c40591ba5df0cd18285f68d84614ef8f06196e50e  libvdpau-1.3.tar.bz2\nsha512 c06c23062816e8b207d38d9d53df43a1b193bb9836b48bd6d79a63d76522e87d383c446285b9877fe9c99faa0d290da8a49ccbb58eefa138cc38d0929a8e1330  libvdpau-1.3.tar.bz2\n# Locally computed\nsha256 ce4af7294872ff07f6e82ae5f1f5eba926215b1e2fb6d55d64759de082458d61  COPYING\n"
  },
  {
    "path": "package/libvdpau/libvdpau.mk",
    "content": "################################################################################\n#\n# libvdpau\n#\n################################################################################\n\nLIBVDPAU_VERSION = 1.3\nLIBVDPAU_SOURCE = libvdpau-$(LIBVDPAU_VERSION).tar.bz2\nLIBVDPAU_SITE = \\\n\thttps://gitlab.freedesktop.org/vdpau/libvdpau/-/archive/$(LIBVDPAU_VERSION)\nLIBVDPAU_LICENSE = MIT\nLIBVDPAU_LICENSE_FILES = COPYING\nLIBVDPAU_INSTALL_STAGING = YES\n\nLIBVDPAU_DEPENDENCIES = host-pkgconf xlib_libX11 xlib_libXext\n\nLIBVDPAU_CONF_OPTS = \\\n\t-Ddocumentation=false \\\n\t-Dmoduledir=/usr/lib/vdpau\n\nifeq ($(BR2_PACKAGE_XORGPROTO),y)\nLIBVDPAU_DEPENDENCIES += xorgproto\nLIBVDPAU_CONF_OPTS += -Ddri2=true\nelse\nLIBVDPAU_CONF_OPTS += -Ddri2=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libvips/Config.in",
    "content": "config BR2_PACKAGE_LIBVIPS\n\tbool \"libvips\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # fork()\n\t# C++ support is required to build libvips\n\t# https://github.com/jcupitt/libvips/issues/231\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  libvips is a 2D image processing library. Compared to\n\t  similar libraries, libvips runs quickly and uses little\n\t  memory.\n\n\t  http://www.vips.ecs.soton.ac.uk/\n\ncomment \"libvips needs a toolchain w/ wchar, threads, C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/libvips/libvips.hash",
    "content": "# Locally calculated\nsha256  2468088d958e0e2de1be2991ff8940bf45664a826c0dad12342e1804e2805a6e  vips-8.10.6.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/libvips/libvips.mk",
    "content": "################################################################################\n#\n# libvips\n#\n################################################################################\n\nLIBVIPS_VERSION = 8.10.6\nLIBVIPS_SOURCE = vips-$(LIBVIPS_VERSION).tar.gz\nLIBVIPS_SITE = https://github.com/libvips/libvips/releases/download/v$(LIBVIPS_VERSION)\nLIBVIPS_LICENSE = LGPL-2.1+\nLIBVIPS_LICENSE_FILES = COPYING\nLIBVIPS_CPE_ID_VENDOR = libvips_project\n\n# Sparc64 compile fails, for all optimization levels except -O0. To\n# fix the problem, use -O0 with no optimization instead. Bug reported\n# upstream at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038.\nifeq ($(BR2_sparc64),y)\nLIBVIPS_CXXFLAGS += -O0\nendif\n\nLIBVIPS_CONF_ENV += CXXFLAGS=\"$(TARGET_CXXFLAGS) $(LIBVIPS_CXXFLAGS)\" \\\n\tLIBS=$(TARGET_NLS_LIBS)\n\nLIBVIPS_CONF_OPTS = \\\n\t--without-dmalloc \\\n\t--without-gsf \\\n\t--without-OpenEXR \\\n\t--without-openslide \\\n\t--without-cfitsio \\\n\t--without-pangoft2 \\\n\t--without-x\nLIBVIPS_INSTALL_STAGING = YES\nLIBVIPS_DEPENDENCIES = \\\n\thost-pkgconf expat libglib2 \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nifeq ($(BR2_PACKAGE_GIFLIB),y)\nLIBVIPS_CONF_OPTS += --with-giflib\nLIBVIPS_DEPENDENCIES += giflib\nelse\nLIBVIPS_CONF_OPTS += --without-giflib\nendif\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nLIBVIPS_CONF_OPTS += --enable-introspection\nLIBVIPS_DEPENDENCIES += gobject-introspection\nelse\nLIBVIPS_CONF_OPTS += --disable-introspection\nendif\n\nifeq ($(BR2_PACKAGE_IMAGEMAGICK),y)\nLIBVIPS_CONF_OPTS += \\\n\t--with-magick \\\n\t--with-magickpackage=MagickCore\nLIBVIPS_DEPENDENCIES += imagemagick\nelse ifeq ($(BR2_PACKAGE_GRAPHICSMAGICK),y)\nLIBVIPS_CONF_OPTS += \\\n\t--with-magick \\\n\t--with-magickpackage=GraphicsMagick\nLIBVIPS_DEPENDENCIES += graphicsmagick\nelse\nLIBVIPS_CONF_OPTS += --without-magick\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nLIBVIPS_CONF_OPTS += --with-jpeg\nLIBVIPS_DEPENDENCIES += jpeg\nelse\nLIBVIPS_CONF_OPTS += --without-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_LCMS2),y)\nLIBVIPS_CONF_OPTS += --with-lcms\nLIBVIPS_DEPENDENCIES += lcms2\nelse\nLIBVIPS_CONF_OPTS += --without-lcms\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nLIBVIPS_CONF_OPTS += --with-png\nLIBVIPS_DEPENDENCIES += libpng\nelse\nLIBVIPS_CONF_OPTS += --without-png\nendif\n\nifeq ($(BR2_PACKAGE_LIBRSVG),y)\nLIBVIPS_CONF_OPTS += --with-rsvg\nLIBVIPS_DEPENDENCIES += librsvg\nelse\nLIBVIPS_CONF_OPTS += --without-rsvg\nendif\n\nifeq ($(BR2_PACKAGE_MATIO),y)\nLIBVIPS_CONF_OPTS += --with-matio\nLIBVIPS_DEPENDENCIES += matio\nelse\nLIBVIPS_CONF_OPTS += --without-matio\nendif\n\nifeq ($(BR2_PACKAGE_ORC),y)\nLIBVIPS_CONF_OPTS += --with-orc\nLIBVIPS_DEPENDENCIES += orc\nelse\nLIBVIPS_CONF_OPTS += --without-orc\nendif\n\nifeq ($(BR2_PACKAGE_POPPLER),y)\nLIBVIPS_CONF_OPTS += --with-poppler\nLIBVIPS_DEPENDENCIES += poppler\nelse\nLIBVIPS_CONF_OPTS += --without-poppler\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nLIBVIPS_CONF_OPTS += --with-tiff\nLIBVIPS_DEPENDENCIES += tiff\nelse\nLIBVIPS_CONF_OPTS += --without-tiff\nendif\n\nifeq ($(BR2_PACKAGE_FFTW_DOUBLE),y)\nLIBVIPS_CONF_OPTS += --with-fftw\nLIBVIPS_DEPENDENCIES += fftw-double\nelse\nLIBVIPS_CONF_OPTS += --without-fftw\nendif\n\nifeq ($(BR2_PACKAGE_LIBEXIF),y)\nLIBVIPS_CONF_OPTS += --with-libexif\nLIBVIPS_DEPENDENCIES += libexif\nelse\nLIBVIPS_CONF_OPTS += --without-libexif\nendif\n\nifeq ($(BR2_PACKAGE_WEBP_DEMUX)$(BR2_PACKAGE_WEBP_MUX),yy)\nLIBVIPS_CONF_OPTS += --with-libwebp\nLIBVIPS_DEPENDENCIES += webp\nelse\nLIBVIPS_CONF_OPTS += --without-libwebp\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLIBVIPS_CONF_OPTS += --with-zlib\nLIBVIPS_DEPENDENCIES += zlib\nelse\nLIBVIPS_CONF_OPTS += --without-zlib\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libvirt/90-kvm.rules",
    "content": "KERNEL==\"kvm\", OWNER=\"root\", GROUP=\"kvm\", MODE=\"0660\"\n"
  },
  {
    "path": "package/libvirt/Config.in",
    "content": "config BR2_PACKAGE_LIBVIRT_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_i386\n\tdefault y if BR2_x86_64\n\tdepends on BR2_USE_MMU # fork()\n\ncomment \"libvirt needs udev /dev management, a toolchain w/ threads, dynamic library, kernel headers >= 3.12 (4.11 for AArch64)\"\n\tdepends on BR2_PACKAGE_LIBVIRT_ARCH_SUPPORTS\n\tdepends on !BR2_PACKAGE_HAS_UDEV || BR2_STATIC_LIBS || !BR2_USE_MMU || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 && \\\n\t\t  (BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 || !BR2_aarch64))\n\nconfig BR2_PACKAGE_LIBVIRT\n\tbool \"libvirt\"\n\tdepends on BR2_PACKAGE_LIBVIRT_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 || !BR2_aarch64\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_GNUTLS\n\t# configure: You must install the pciaccess module to build with udev\n\tselect BR2_PACKAGE_LIBPCIACCESS\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBTIRPC\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_ZLIB\n\t# run-time dependencies\n\tselect BR2_PACKAGE_CGROUPFS_MOUNT if !BR2_INIT_SYSTEMD\n\thelp\n\t  Libvirt is collection of software that provides a convenient\n\t  way to manage virtual machines and other virtualization\n\t  functionality, such as storage and network interface\n\t  management. These software pieces include an API library, a\n\t  daemon (libvirtd), and a command line utility (virsh).\n\n\t  https://libvirt.org/\n\nif BR2_PACKAGE_LIBVIRT\n\nconfig BR2_PACKAGE_LIBVIRT_DAEMON\n\tbool \"libvirtd\"\n\tdefault y\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_DNSMASQ\n\tselect BR2_PACKAGE_EBTABLES\n\tselect BR2_PACKAGE_IPTABLES\n\tselect BR2_PACKAGE_IPROUTE2\n\t# These are required because there is no way to unequivocally select a modern netcat\n\tselect BR2_PACKAGE_NMAP      if !BR2_PACKAGE_NETCAT_OPENBSD\n\tselect BR2_PACKAGE_NMAP_NCAT if !BR2_PACKAGE_NETCAT_OPENBSD\n\tselect BR2_PACKAGE_RADVD\n\thelp\n\t  Build the libvirt daemon (libvirtd) otherwise build only the\n\t  utility programs.\n\n# Stateful drivers are useful only when building the daemon.\nif BR2_PACKAGE_LIBVIRT_DAEMON\n\nconfig BR2_PACKAGE_LIBVIRT_QEMU\n\tbool \"qemu\"\n\tdepends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp\n\tdepends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # qemu\n\tselect BR2_PACKAGE_HWDATA         # libpciaccess\n\tselect BR2_PACKAGE_HWDATA_PCI_IDS # libpciaccess\n\tselect BR2_PACKAGE_LIBSECCOMP\n\tselect BR2_PACKAGE_QEMU\n\tselect BR2_PACKAGE_QEMU_SYSTEM if BR2_PACKAGE_QEMU_CUSTOM_TARGETS = \"\"\n\tselect BR2_PACKAGE_YAJL\n\thelp\n\t  QEMU/KVM support\n\ncomment \"qemu needs a toolchain with gcc >= 8\"\n\tdepends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\nconfig BR2_PACKAGE_LIBVIRT_LXC\n\tbool \"lxc\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # lxc\n\tselect BR2_PACKAGE_LXC\n\thelp\n\t  Linux Container support\n\ncomment \"lxc needs a toolchain w/ gcc >= 4.7\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n\nendif\n\nendif\n"
  },
  {
    "path": "package/libvirt/S91virtlogd",
    "content": "#!/bin/sh\n\nDAEMON=\"virtlogd\"\nEXECFILE=\"/usr/sbin/$DAEMON\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nVIRTLOGD_ARGS=\"\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"$EXECFILE\" \\\n\t\t-- -d $VIRTLOGD_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\" -x \"$EXECFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\n# On receipt of SIGUSR1 virtlogd will re-exec() its binary, while maintaining\n# all current logs and clients. This allows for live upgrades of the virtlogd\n# service.\nreload() {\n\tprintf 'Reloading %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -s USR1 -q -p \"$PIDFILE\" -x \"$EXECFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\ncase \"$1\" in\n\tstart|stop|restart|reload)\n\t\t\"$1\";;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/libvirt/S92libvirtd",
    "content": "#!/bin/sh\n\nDAEMON=\"libvirtd\"\nEXECFILE=\"/usr/sbin/$DAEMON\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nLIBVIRTD_ARGS=\"\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\ntrap 'rm -f \"$TMP_MODULE_LIST\" \"$TMP_PIDFILE_LIST\"' EXIT\n\nis_alive() {\n\t[ -e \"$1\" ] \\\n\t&& exe=\"/proc/$(cat \"$1\" 2>/dev/null)/exe\" \\\n\t&& [ -s \"$exe\" ] \\\n\t&& [ \"$(readlink -f \"$exe\")\" = \"$2\" ]\n}\n\nload_modules() {\n\tprintf 'Loading kernel modules: '\n\tkver=\"$(uname -r)\"\n\tTMP_MODULE_LIST=\"$(mktemp -q)\" || {\n\t\techo 'FAIL creating temporary modules list'\n\t\texit 1\n\t}\n\t[ -d \"/lib/modules/$kver/kernel/drivers/net\" ] && \\\n\t\tfind \"/lib/modules/$kver/kernel/drivers/net\" \\\n\t\t-name \"tun.ko*\" >> \"$TMP_MODULE_LIST\"\n\t[ -d \"/lib/modules/$kver/kernel/drivers/vhost\" ] && \\\n\t\tfind \"/lib/modules/$kver/kernel/drivers/vhost\" \\\n\t\t-name \"vhost?net.ko*\" >> \"$TMP_MODULE_LIST\"\n\t[ -d \"/lib/modules/$kver/kernel/drivers/net\" ] && \\\n\t\tfind \"/lib/modules/$kver/kernel/drivers/vfio\" \\\n\t\t-name \"*.ko*\" >> \"$TMP_MODULE_LIST\"\n\twhile read -r f; do\n\t\tm=\"$(basename \"${f%.ko*}\")\"\n\t\tif modprobe -q \"$m\"; then\n\t\t\tprintf '%s ' \"$m\"\n\t\telse\n\t\t\techo \"FAIL on $m\"\n\t\t\texit 1\n\t\tfi\n\tdone < \"$TMP_MODULE_LIST\"\n\techo \"OK\"\n}\n\n#\n# If libvirtd dies it leves behind one stale dnsmasq per virtual network that\n# must be killed before starting libvirtd again.\n#\nrm_stale_dnsmasq() {\n\t[ -d /var/run/libvirt/network ] || return 0\n\tTMP_PIDFILE_LIST=\"$(mktemp -q)\" || {\n\t\techo \"Could not create temporary pidfile list\"\n\t\texit 1\n\t}\n\tfind /var/run/libvirt/network -name '*.pid' > \"$TMP_PIDFILE_LIST\"\n\twhile read -r pidfile; do\n\t\tif is_alive \"$pidfile\" /usr/sbin/dnsmasq; then\n\t\t\tstart-stop-daemon -K -q -p \"$pidfile\" -x /usr/sbin/dnsmasq\n\t\t\tstatus=$?\n\t\t\tif [ \"$status\" -ne 0 ]; then\n\t\t\t\techo \"Could not stop stale dnsmasq daemons\"\n\t\t\t\texit 1\n\t\t\tfi\n\t\t\trm -f \"$pidfile\"\n\t\tfi\n\tdone < \"$TMP_PIDFILE_LIST\"\n}\n\nstart() {\n\tif is_alive \"$PIDFILE\" \"$EXECFILE\"; then\n\t\t# libvirtd is already running. Leave it alone.\n\t\tprintf 'Starting %s: FAIL\\n' \"$DAEMON\"\n\t\treturn 1\n\tfi\n\trm_stale_dnsmasq\n\tload_modules\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"$EXECFILE\" \\\n\t\t-- -d $LIBVIRTD_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\" -x \"$EXECFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm_stale_dnsmasq\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\n# On receipt of SIGHUP libvirtd will reload its configuration.\nreload() {\n\tprintf 'Reloading %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -s HUP -q -p \"$PIDFILE\" -x \"$EXECFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\ncase \"$1\" in\n\tstart|stop|restart|reload)\n\t\t\"$1\";;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/libvirt/libvirt.hash",
    "content": "# locally computed\nsha256  1b616099c18d14b9424a622f2a0bd3e0cfa286414f3416bd1a8173621b2252b2  libvirt-7.7.0.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/libvirt/libvirt.mk",
    "content": "################################################################################\n#\n# libvirt\n#\n################################################################################\n\nLIBVIRT_VERSION = 7.7.0\nLIBVIRT_SITE = https://libvirt.org/sources\nLIBVIRT_SOURCE = libvirt-$(LIBVIRT_VERSION).tar.xz\nLIBVIRT_LICENSE = LGPL-2.1+\nLIBVIRT_LICENSE_FILES = COPYING\nLIBVIRT_CPE_ID_VENDOR = redhat\nLIBVIRT_DEPENDENCIES = \\\n\thost-libxslt \\\n\thost-nfs-utils \\\n\thost-pkgconf \\\n\thost-python-docutils \\\n\tgnutls \\\n\tlibglib2 \\\n\tlibpciaccess \\\n\tlibtirpc \\\n\tlibxml2 \\\n\tudev \\\n\tzlib \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nLIBVIRT_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\n\nLIBVIRT_CONF_ENV += \\\n\tCFLAGS=\"$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`\" \\\n\tLIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`\"\n\nLIBVIRT_CONF_OPTS = \\\n\t-Drpath=disabled \\\n\t-Dapparmor=disabled \\\n\t-Ddocs=disabled \\\n\t-Ddriver_bhyve=disabled \\\n\t-Ddriver_ch=disabled \\\n\t-Ddriver_esx=disabled \\\n\t-Ddriver_hyperv=disabled \\\n\t-Ddriver_interface=enabled \\\n\t-Ddriver_libxl=disabled \\\n\t-Ddriver_openvz=disabled \\\n\t-Ddriver_remote=enabled \\\n\t-Ddriver_secrets=enabled \\\n\t-Ddriver_test=disabled \\\n\t-Ddriver_vbox=disabled \\\n\t-Ddriver_vmware=disabled \\\n\t-Ddriver_vz=disabled \\\n\t-Ddtrace=disabled \\\n\t-Dexpensive_tests=disabled \\\n\t-Dfirewalld=disabled \\\n\t-Dfirewalld_zone=disabled \\\n\t-Dglusterfs=disabled \\\n\t-Dhost_validate=enabled \\\n\t-Dinit_script=$(if $(BR2_INIT_SYSTEMD),systemd,none) \\\n\t-Dlogin_shell=disabled \\\n\t-Dnetcf=disabled \\\n\t-Dnls=$(if $(BR2_SYSTEM_ENABLE_NLS),enabled,disabled) \\\n\t-Dnumad=disabled \\\n\t-Dopenwsman=disabled \\\n\t-Dpciaccess=enabled \\\n\t-Dpm_utils=disabled \\\n\t-Dsanlock=disabled \\\n\t-Dsecdriver_apparmor=disabled \\\n\t-Dstorage_iscsi=disabled \\\n\t-Dstorage_iscsi_direct=disabled \\\n\t-Dstorage_mpath=disabled \\\n\t-Dsysctl_config=enabled \\\n\t-Dtest_coverage=false \\\n\t-Dtests=disabled \\\n\t-Dudev=enabled \\\n\t-Dwireshark_dissector=disabled\n\n# warning_level should only drive the level of warnings during the\n# compilation of C code. However, libvirt misuses that to also\n# enable SSP when warning_level == 2\n# Force warning_level=1 to disable SSP, and let our toolchain wrapper\n# handle it.\nLIBVIRT_CONF_OPTS += -Dwarning_level=1\n\nifeq ($(BR2_PACKAGE_ATTR),y)\nLIBVIRT_CONF_OPTS += -Dattr=enabled\nLIBVIRT_DEPENDENCIES += attr\nelse\nLIBVIRT_CONF_OPTS += -Dattr=disabled\nendif\n\nifeq ($(BR2_PACKAGE_AUDIT),y)\nLIBVIRT_CONF_OPTS += -Daudit=enabled\nLIBVIRT_DEPENDENCIES += audit\nelse\nLIBVIRT_CONF_OPTS += -Daudit=disabled\nendif\n\nifeq ($(BR2_PACKAGE_BASH_COMPLETION),y)\nLIBVIRT_CONF_OPTS += -Dbash_completion=enabled\nLIBVIRT_DEPENDENCIES += bash-completion\nelse\nLIBVIRT_CONF_OPTS += -Dbash_completion=disabled\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y)\nLIBVIRT_CONF_OPTS += -Dblkid=enabled\nLIBVIRT_DEPENDENCIES += util-linux\nelse\nLIBVIRT_CONF_OPTS += -Dblkid=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP_NG),y)\nLIBVIRT_CONF_OPTS += -Dcapng=enabled\nLIBVIRT_DEPENDENCIES += libcap-ng\nelse\nLIBVIRT_CONF_OPTS += -Dcapng=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nLIBVIRT_CONF_OPTS += -Dcurl=enabled\nLIBVIRT_DEPENDENCIES += libcurl\nelse\nLIBVIRT_CONF_OPTS += -Dcurl=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBFUSE),y)\nLIBVIRT_CONF_OPTS += -Dfuse=enabled\nLIBVIRT_DEPENDENCIES += libfuse\nelse\nLIBVIRT_CONF_OPTS += -Dfuse=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBISCSI),y)\nLIBVIRT_CONF_OPTS += -Dlibiscsi=enabled\nLIBVIRT_DEPENDENCIES += libiscsi\nelse\nLIBVIRT_CONF_OPTS += -Dlibiscsi=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBNL),y)\nLIBVIRT_CONF_OPTS += -Dlibnl=enabled\nLIBVIRT_DEPENDENCIES += libnl\nelse\nLIBVIRT_CONF_OPTS += -Dlibnl=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBPCAP),y)\nLIBVIRT_CONF_OPTS += -Dlibpcap=enabled\nLIBVIRT_DEPENDENCIES += libpcap\nelse\nLIBVIRT_CONF_OPTS += -Dlibpcap=disabled\nendif\n\nifeq ($(BR2_PACKAGE_NUMACTL),y)\nLIBVIRT_CONF_OPTS += -Dnumactl=enabled\nLIBVIRT_DEPENDENCIES += numactl\nelse\nLIBVIRT_CONF_OPTS += -Dnumactl=disabled\nendif\n\nifeq ($(BR2_PACKAGE_POLKIT),y)\nLIBVIRT_CONF_OPTS += -Dpolkit=enabled\nLIBVIRT_DEPENDENCIES += polkit\nelse\nLIBVIRT_CONF_OPTS += -Dpolkit=disabled\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nLIBVIRT_CONF_OPTS += -Dreadline=enabled\nLIBVIRT_DEPENDENCIES += readline\nelse\nLIBVIRT_CONF_OPTS += -Dreadline=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nLIBVIRT_CONF_OPTS += -Dselinux=enabled -Dsecdriver_selinux=enabled \\\n\t-Dselinux_mount=/sys/fs/selinux\nLIBVIRT_DEPENDENCIES += libselinux\nelse\nLIBVIRT_CONF_OPTS += -Dselinux=disabled -Dsecdriver_selinux=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LVM2_STANDARD_INSTALL),y)\nLIBVIRT_CONF_OPTS += -Dstorage_lvm=enabled\nLIBVIRT_DEPENDENCIES += host-lvm2 lvm2\nelse\nLIBVIRT_CONF_OPTS += -Dstorage_lvm=disabled\nendif\n\nifeq ($(BR2_PACKAGE_YAJL),y)\nLIBVIRT_CONF_OPTS += -Dyajl=enabled\nLIBVIRT_DEPENDENCIES += yajl\nelse\nLIBVIRT_CONF_OPTS += -Dyajl=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBVIRT_DAEMON),y)\n# Network is used by daemon, only\nLIBVIRT_CONF_OPTS += -Dlibvirtd=enabled -Ddriver_network=enabled\n\nifeq ($(BR2_PACKAGE_LIBSSH),y)\nLIBVIRT_CONF_OPTS += -Dlibssh=enabled\nLIBVIRT_DEPENDENCIES += libssh\nelse\nLIBVIRT_CONF_OPTS += -Dlibssh=disabled\nendif\n\n# Can't build nss plugin without network or yajl\nifeq ($(BR2_PACKAGE_LIBNSS)$(BR2_PACKAGE_YAJL),yy)\nLIBVIRT_CONF_OPTS += -Dnss=enabled\nLIBVIRT_DEPENDENCIES += libnss\nelse\nLIBVIRT_CONF_OPTS += -Dnss=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBGSASL),y)\nLIBVIRT_CONF_OPTS += -Dsasl=enabled\nLIBVIRT_DEPENDENCIES += libgsasl\nelse\nLIBVIRT_CONF_OPTS += -Dsasl=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBSSH2),y)\nLIBVIRT_CONF_OPTS += -Dssh2=enabled\nLIBVIRT_DEPENDENCIES += libssh2\nelse\nLIBVIRT_CONF_OPTS += -Dssh2=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBVIRT_LXC),y)\nLIBVIRT_CONF_OPTS += -Dlogin_shell=enabled -Ddriver_lxc=enabled\nLIBVIRT_DEPENDENCIES += lxc\nelse\nLIBVIRT_CONF_OPTS += -Dlogin_shell=disabled -Ddriver_lxc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBVIRT_QEMU),y)\nLIBVIRT_CONF_OPTS += -Ddriver_qemu=enabled -Dqemu_user=qemu -Dqemu_group=kvm\nelse\nLIBVIRT_CONF_OPTS += -Ddriver_qemu=disabled -Dqemu_user=no -Dqemu_group=no\nendif\n\nelse # BR2_PACKAGE_LIBVIRT_DAEMON\n\nLIBVIRT_CONF_OPTS += -Dlibvirtd=disabled -Ddriver_network=disabled\n\nendif\n\ndefine LIBVIRT_INSTALL_UDEV_RULES\n\t$(INSTALL) -D -m 644 package/libvirt/90-kvm.rules \\\n\t\t$(TARGET_DIR)/etc/udev/rules.d/90-kvm.rules\nendef\nLIBVIRT_POST_INSTALL_TARGET_HOOKS += LIBVIRT_INSTALL_UDEV_RULES\n\n# Adjust directory ownerships and permissions. Notice /var/log is a symlink to\n# /tmp in the default sysvinit skeleton, so some directories may disappear at\n# run-time. Set the permissions anyway, since they are valid for the default\n# systemd skeleton.\ndefine LIBVIRT_PERMISSIONS\n\t/etc/libvirt                             d  700  root  root  -  -  -  -  -\n\t/etc/libvirt/nwfilter                    d  700  root  root  -  -  -  -  -\n\t/var/lib/libvirt                         d  755  root  root  -  -  -  -  -\n\t/var/lib/libvirt/boot                    d  711  root  root  -  -  -  -  -\n\t/var/lib/libvirt/dnsmasq                 d  755  root  root  -  -  -  -  -\n\t/var/lib/libvirt/filesystems             d  711  root  root  -  -  -  -  -\n\t/var/lib/libvirt/images                  d  711  root  root  -  -  -  -  -\n\t/var/lib/libvirt/network                 d  700  root  root  -  -  -  -  -\n\t/var/lib/libvirt/qemu                    d  751  qemu  kvm   -  -  -  -  -\n\t/var/lib/libvirt/qemu/autostart          d  700  root  root  -  -  -  -  -\n\t/var/lib/libvirt/qemu/networks           d  700  root  root  -  -  -  -  -\n\t/var/lib/libvirt/qemu/networks/autostart d  700  root  root  -  -  -  -  -\n\t/var/lib/libvirt/qemu/channel            d  755  qemu  kvm   -  -  -  -  -\n\t/var/lib/libvirt/qemu/channel/target     d  755  qemu  kvm   -  -  -  -  -\n\t/var/lib/libvirt/qemu/dump               d  755  qemu  kvm   -  -  -  -  -\n\t/var/lib/libvirt/qemu/nvram              d  755  qemu  kvm   -  -  -  -  -\n\t/var/lib/libvirt/qemu/save               d  755  qemu  kvm   -  -  -  -  -\n\t/var/lib/libvirt/qemu/snapshot           d  755  qemu  kvm   -  -  -  -  -\n\t/var/lib/libvirt/secrets                 d  700  root  root  -  -  -  -  -\n\t/var/lib/libvirt/storage                 d  755  root  root  -  -  -  -  -\n\t/var/lib/libvirt/storage/autostart       d  755  root  root  -  -  -  -  -\n\t/var/cache/libvirt                       d  711  root  root  -  -  -  -  -\n\t/var/cache/libvirt/lxc                   d  750  root  root  -  -  -  -  -\n\t/var/cache/libvirt/qemu                  d  750  qemu  kvm   -  -  -  -  -\n\t/var/cache/libvirt/qemu/capabilities     d  755  root  root  -  -  -  -  -\n\t/var/log/libvirt                         d  700  root  root  -  -  -  -  -\n\t/var/log/libvirt/lxc                     d  750  root  root  -  -  -  -  -\n\t/var/log/libvirt/qemu                    d  750  root  root  -  -  -  -  -\n\t/var/log/swtpm                           d  755  root  root  -  -  -  -  -\n\t/var/log/swtpm/libvirt                   d  755  root  root  -  -  -  -  -\n\t/var/log/swtpm/libvirt/qemu              d  711  root  root  -  -  -  -  -\nendef\n\n# libvirt may need to create persistent files (e.g. VM definitions) in these\n# directories. Move them to /var/lib because /etc may be on a read-only or\n# volatile (initramfs) filesystem. We could tweak the code to change these\n# paths but the patch would be large and would break compatibility with\n# ordinary installations and with the documentation.\ndefine LIBVIRT_CREATE_SYMLINKS\n\t$(INSTALL) -m 700 -d $(TARGET_DIR)/etc/libvirt\n\t$(INSTALL) -m 755 -d $(TARGET_DIR)/var/lib/libvirt\n\t$(INSTALL) -m 751 -d $(TARGET_DIR)/var/lib/libvirt/qemu\n\t$(INSTALL) -m 700 -d $(TARGET_DIR)/var/lib/libvirt/secrets\n\t$(INSTALL) -m 755 -d $(TARGET_DIR)/var/lib/libvirt/storage\n\tln -s -f ../../var/lib/libvirt/qemu $(TARGET_DIR)/etc/libvirt/\n\tln -s -f ../../var/lib/libvirt/secrets $(TARGET_DIR)/etc/libvirt/\n\tln -s -f ../../var/lib/libvirt/storage $(TARGET_DIR)/etc/libvirt/\nendef\n\nLIBVIRT_PRE_INSTALL_TARGET_HOOKS += LIBVIRT_CREATE_SYMLINKS\n\nifeq ($(BR2_PACKAGE_LIBVIRT_QEMU),y)\ndefine LIBVIRT_USERS\n\tqemu -1 kvm -1 * - - - Libvirt qemu/kvm daemon\nendef\nendif\n\nifeq ($(BR2_PACKAGE_LIBVIRT_DAEMON),y)\ndefine LIBVIRT_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/libvirt/S91virtlogd $(TARGET_DIR)/etc/init.d/S91virtlogd\n\t$(INSTALL) -D -m 0755 package/libvirt/S92libvirtd $(TARGET_DIR)/etc/init.d/S92libvirtd\nendef\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libvncserver/Config.in",
    "content": "config BR2_PACKAGE_LIBVNCSERVER\n\tbool \"libvncserver\"\n\tdepends on BR2_USE_MMU # VNCommand.c uses fork()\n\t# binutils issue (bad expression)\n\tdepends on !BR2_nios2\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LZO\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  libvncserver is a VNC server/client library.\n\n\t  https://libvnc.github.io/\n\nif BR2_PACKAGE_LIBVNCSERVER\n\nconfig BR2_PACKAGE_LIBVNCSERVER_TIGHTPNG\n\tbool \"TightPNG encoding support\"\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  TightPNG encoding speeds up HTML5 based VNC clients like\n\t  noVNC.\n\n\t  http://wiki.qemu.org/VNC_Tight_PNG\n\nendif\n\ncomment \"libvncserver needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_nios\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libvncserver/libvncserver.hash",
    "content": "# Locally computed:\nsha256  0ae5bb9175dc0a602fe85c1cf591ac47ee5247b87f2bf164c16b05f87cbfa81a  LibVNCServer-0.9.13.tar.gz\nsha256  4d23c8c814e5baf007d854f01d8502e77dc56a41144934e003fb32c4e052d20f  COPYING\n"
  },
  {
    "path": "package/libvncserver/libvncserver.mk",
    "content": "################################################################################\n#\n# libvncserver\n#\n################################################################################\n\nLIBVNCSERVER_VERSION = 0.9.13\nLIBVNCSERVER_SOURCE = LibVNCServer-$(LIBVNCSERVER_VERSION).tar.gz\nLIBVNCSERVER_SITE = https://github.com/LibVNC/libvncserver/archive\nLIBVNCSERVER_LICENSE = GPL-2.0+\nLIBVNCSERVER_LICENSE_FILES = COPYING\nLIBVNCSERVER_CPE_ID_VENDOR = libvncserver_project\nLIBVNCSERVER_INSTALL_STAGING = YES\nLIBVNCSERVER_DEPENDENCIES = host-pkgconf lzo\nLIBVNCSERVER_CONF_OPTS = -DWITH_LZO=ON\n\n# only used for examples\nLIBVNCSERVER_CONF_OPTS += \\\n\t-DWITH_FFMPEG=OFF \\\n\t-DWITH_GTK=OFF \\\n\t-DWITH_SDL=OFF\n\nifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nLIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=ON\nelse\nLIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=OFF\nendif\n\n# openssl supports needs NPTL thread support\nifeq ($(BR2_PACKAGE_OPENSSL)$(BR2_TOOLCHAIN_HAS_THREADS_NPTL),yy)\nLIBVNCSERVER_CONF_OPTS += -DWITH_OPENSSL=ON\nLIBVNCSERVER_DEPENDENCIES += openssl\nelse\nLIBVNCSERVER_CONF_OPTS += -DWITH_OPENSSL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nLIBVNCSERVER_CONF_OPTS += -DWITH_GCRYPT=ON\nLIBVNCSERVER_DEPENDENCIES += libgcrypt\nelse\nLIBVNCSERVER_CONF_OPTS += -DWITH_GCRYPT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy)\nLIBVNCSERVER_CONF_OPTS += -DWITH_GNUTLS=ON\nLIBVNCSERVER_DEPENDENCIES += gnutls\nelse\nLIBVNCSERVER_CONF_OPTS += -DWITH_GNUTLS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nLIBVNCSERVER_CONF_OPTS += -DWITH_JPEG=ON\nLIBVNCSERVER_DEPENDENCIES += jpeg\nelse\nLIBVNCSERVER_CONF_OPTS += -DWITH_JPEG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nLIBVNCSERVER_CONF_OPTS += -DWITH_PNG=ON\nLIBVNCSERVER_DEPENDENCIES += libpng\nelse\nLIBVNCSERVER_CONF_OPTS += -DWITH_PNG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nLIBVNCSERVER_CONF_OPTS += -DWITH_SYSTEMD=ON\nLIBVNCSERVER_DEPENDENCIES += systemd\nelse\nLIBVNCSERVER_CONF_OPTS += -DWITH_SYSTEMD=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLIBVNCSERVER_CONF_OPTS += -DWITH_ZLIB=ON\nLIBVNCSERVER_DEPENDENCIES += zlib\nelse\nLIBVNCSERVER_CONF_OPTS += -DWITH_ZLIB=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libvorbis/Config.in",
    "content": "config BR2_PACKAGE_LIBVORBIS\n\tbool \"libvorbis\"\n\tselect BR2_PACKAGE_LIBOGG\n\thelp\n\t  Library for the Vorbis open source audio decoder\n\t  Ogg Vorbis is a fully open, non-proprietary,\n\t  patent-and-royalty-free, general-purpose compressed audio\n\t  format for mid to high quality (8kHz-48.0kHz, 16+ bit,\n\t  polyphonic) audio and music at fixed and variable bitrates\n\t  from 16 to 128 kbps/channel.\n\n\t  This places Vorbis in the same competitive class as audio\n\t  representations such as MPEG-4 (AAC), and similar to, but\n\t  higher performance than MPEG-1/2 audio layer 3, MPEG-4 audio\n\t  (TwinVQ), WMA and PAC.\n\n\t  https://xiph.org/vorbis/\n"
  },
  {
    "path": "package/libvorbis/libvorbis.hash",
    "content": "# From http://www.xiph.org/downloads/\nsha256  b33cc4934322bcbf6efcbacf49e3ca01aadbea4114ec9589d1b1e9d20f72954b  libvorbis-1.3.7.tar.xz\n# License files, locally calculated\nsha256  ec1815db59fcd302846df949d7424876cb2e2dc5ed1606c5fb0b36787b1cf43a  COPYING\n"
  },
  {
    "path": "package/libvorbis/libvorbis.mk",
    "content": "################################################################################\n#\n# libvorbis\n#\n################################################################################\n\nLIBVORBIS_VERSION = 1.3.7\nLIBVORBIS_SOURCE = libvorbis-$(LIBVORBIS_VERSION).tar.xz\nLIBVORBIS_SITE = https://downloads.xiph.org/releases/vorbis\nLIBVORBIS_INSTALL_STAGING = YES\nLIBVORBIS_CONF_OPTS = --disable-oggtest\nLIBVORBIS_DEPENDENCIES = host-pkgconf libogg\nLIBVORBIS_LICENSE = BSD-3-Clause\nLIBVORBIS_LICENSE_FILES = COPYING\nLIBVORBIS_CPE_ID_VENDOR = xiph.org\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libvpx/0001-vpx_mem-vpx_mem.h-Fix-compilation-with-uClibc.patch",
    "content": "From 90845a3a263e0f37b9c756c0b01377b9d1a225c9 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sun, 31 Jul 2016 10:37:05 +0200\nSubject: [PATCH] vpx_mem/vpx_mem.h: do not include <lddk.h>\n\nThe <lddk.h> header does not exist in most C libraries, and including\nit causes build failures.\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n vpx_mem/vpx_mem.h | 3 ---\n 1 file changed, 3 deletions(-)\n\ndiff --git a/vpx_mem/vpx_mem.h b/vpx_mem/vpx_mem.h\nindex c14f288..82df745 100644\n--- a/vpx_mem/vpx_mem.h\n+++ b/vpx_mem/vpx_mem.h\n@@ -12,9 +12,6 @@\n #define VPX_VPX_MEM_VPX_MEM_H_\n \n #include \"vpx_config.h\"\n-#if defined(__uClinux__)\n-#include <lddk.h>\n-#endif\n \n #include <stdlib.h>\n #include <stddef.h>\n-- \n2.8.1\n\n"
  },
  {
    "path": "package/libvpx/Config.in",
    "content": "config BR2_PACKAGE_LIBVPX\n\tbool \"libvpx\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  A high-quality, open video format that's freely available to\n\t  everyone. Supports the VP8 and VP9 formats.\n\n\t  http://webmproject.org\n\ncomment \"libvpx needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libvpx/libvpx.hash",
    "content": "# Locally computed:\nsha256  965e51c91ad9851e2337aebcc0f517440c637c506f3a03948062e3d5ea129a83  libvpx-1.11.0.tar.gz\nsha256  8267348d5af1262c11d1a08de2f5afc77457755f1ac658627dd9acf71011d615  LICENSE\nsha256  cc3273e0694ea5896145e0677699b53471b03ea43021ddc50e7923fbb9f5023c  PATENTS\n"
  },
  {
    "path": "package/libvpx/libvpx.mk",
    "content": "################################################################################\n#\n# libvpx\n#\n################################################################################\n\nLIBVPX_VERSION = 1.11.0\nLIBVPX_SITE = $(call github,webmproject,libvpx,v$(LIBVPX_VERSION))\nLIBVPX_LICENSE = BSD-3-Clause\nLIBVPX_LICENSE_FILES = LICENSE PATENTS\nLIBVPX_CPE_ID_VENDOR = webmproject\nLIBVPX_INSTALL_STAGING = YES\n\n# ld is being used with cc options. therefore, pretend ld is cc.\nLIBVPX_CONF_ENV = \\\n\tLD=\"$(TARGET_CC)\" \\\n\tCROSS=$(GNU_TARGET_NAME)\n\nLIBVPX_CONF_OPTS = \\\n\t--disable-examples \\\n\t--disable-docs \\\n\t--disable-unit-tests\n\n# vp9/ratectrl_rtc.cc\nifeq ($(BR2_INSTALL_LIBSTDCPP),y)\nLIBVPX_CONF_OPTS += --enable-vp9-encoder\nelse\nLIBVPX_CONF_OPTS += --disable-vp9-encoder\nendif\n\n# This is not a true autotools package.  It is based on the ffmpeg build system\ndefine LIBVPX_CONFIGURE_CMDS\n\t(cd $(LIBVPX_SRCDIR) && rm -rf config.cache && \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\t$(TARGET_CONFIGURE_ARGS) \\\n\t$(LIBVPX_CONF_ENV) \\\n\t./configure \\\n\t\t--target=generic-gnu \\\n\t\t--enable-pic \\\n\t\t--prefix=/usr \\\n\t\t$(SHARED_STATIC_LIBS_OPTS) \\\n\t\t$(LIBVPX_CONF_OPTS) \\\n\t)\nendef\n\ndefine LIBVPX_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(LIBVPX_MAKE_ENV) $(MAKE) -C $(@D) all\nendef\n\ndefine LIBVPX_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(LIBVPX_MAKE_ENV) $(MAKE) DESTDIR=\"$(STAGING_DIR)\" -C $(@D) install\nendef\n\ndefine LIBVPX_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(LIBVPX_MAKE_ENV) $(MAKE) DESTDIR=\"$(TARGET_DIR)\" -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/libwebcam/Config.in",
    "content": "config BR2_PACKAGE_LIBWEBCAM\n\tbool \"libwebcam\"\n\n"
  },
  {
    "path": "package/libwebcam/libwebcam.mk",
    "content": "################################################################################\n#\n# libwebcam\n#\n################################################################################\n\nLIBWEBCAM_VERSION = 0.2.5\nLIBWEBCAM_SOURCE = libwebcam-src-$(LIBWEBCAM_VERSION).tar.gz\nLIBWEBCAM_SITE = http://freefr.dl.sourceforge.net/project/libwebcam/source\nLIBWEBCAM_DEPENDENCIES = libxml2\n\ndefine LIBWEBCAM_INSTALL_TARGET_CMDS\n    cp $(@D)/uvcdynctrl/uvcdynctrl $(TARGET_DIR)/usr/bin/uvcdynctrl\n    cp -d $(@D)/libwebcam/libwebcam.so* $(TARGET_DIR)/usr/lib\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libwebsock/0001-Switch-to-use-pkg-config-to-detect-libevent-and-open.patch",
    "content": "From a6c35dbab5a2a75c176e031122ee64152e50e5d3 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Thu, 1 Jan 2015 12:23:43 +0100\nSubject: [PATCH] Switch to use pkg-config to detect libevent and openssl\n\nSwitching to pkg-config fixes a number of problems when detecting the\nlibraries. For example the detection of libpthread was failing,\nbecause libevent_threads was added to LIBS before libevent itself,\ncausing the libpthread test to fail due to missing symbols. pkg-config\nis anyway nowadays the preferred way for detecting libraries. It also\nhas the benefit of working properly in static library situations.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.ac | 36 ++++++++++++------------------------\n 1 file changed, 12 insertions(+), 24 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex d4109ce..fc1cadc 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -27,35 +27,20 @@ AC_FUNC_MALLOC\n AC_FUNC_REALLOC\n AC_CHECK_FUNCS([memset socket strstr])\n \n-AC_CHECK_HEADERS([event2/thread.h], [\n-\t\t\t\t\tLIBS=\"-levent_pthreads ${LIBS}\"\n-\t\t\t\t    ], [\n-                                                echo \"libevent_pthreads required, failing\"\n-                                                exit -1\n-                                                ])\n-AC_CHECK_LIB(pthread, pthread_create, [LIBS=\"-lpthread ${LIBS}\"], [\n+AC_CHECK_LIB(pthread, pthread_create, [PTHREAD_LIBS=\"-lpthread\"], [\n                                                 echo \"pthreads required, failing\"\n                                                 exit -1\n                                                 ])\n-AC_CHECK_LIB(event, event_base_dispatch, [], [\n-\t\t\t\t\t\techo \"libevent required, failing\"\n-\t\t\t\t\t\texit -1\n-\t\t\t\t\t\t])\n+\n+PKG_CHECK_MODULES([EVENT], [libevent])\n+PKG_CHECK_MODULES([EVENT_PTHREAD], [libevent_pthreads])\n \n AS_IF([test \"x$with_ssl\" != \"xno\"],\n \t[\n-  \tAC_CHECK_LIB([ssl], [SSL_CTX_new],\n-  \t\t[\n-  \t\t\tLIBS=\"-lssl ${LIBS}\"\n-  \t\t\tAC_CHECK_LIB([event_openssl], [bufferevent_openssl_socket_new], [\n-  \t\t\t\tLIBS=\"-levent_openssl ${LIBS}\"\n-  \t\t\t\thave_ssl=yes\n-  \t\t\t], [have_ssl=no])\n-  \t\t], \n-  \t\t[have_ssl=no])\n-  \t],\n-  \t[have_ssl=no])\n-  \t\n+\tPKG_CHECK_MODULES([SSL], [openssl], [have_ssl=yes], [have_ssl=no])\n+\tAS_IF([test \"x${have_ssl}\" = \"xyes\"],\n+\t\t[PKG_CHECK_MODULES([EVENT_OPENSSL], [libevent_openssl], [have_ssl=yes], [have_ssl=no])])])\n+\n AS_IF([test \"x$have_ssl\" = \"xyes\"],\n \t[\n \t\tAC_DEFINE([WEBSOCK_HAVE_SSL], [1], [Define if building SSL support])\n@@ -63,8 +48,11 @@ AS_IF([test \"x$have_ssl\" = \"xyes\"],\n \t[AS_IF([test \"x$with_ssl\" = \"xyes\"],\n \t\t[AC_MSG_ERROR([SSL support requested but not found])\n \t])])\n-  \t\n+\n AM_CONDITIONAL([HAVE_SSL], [test \"x$have_ssl\" = \"xyes\"])\n+\n+LIBS=\"${EVENT_LIBS} ${EVENT_PTHREAD_LIBS} ${PTHREAD_LIBS} ${SSL_LIBS} ${EVENT_OPENSSL_LIBS}\"\n+\n AC_DEFINE_UNQUOTED([WEBSOCK_PACKAGE_VERSION], [\"$PACKAGE_VERSION\"], [libwebsock version])\n AC_DEFINE_UNQUOTED([WEBSOCK_PACKAGE_STRING], [\"$PACKAGE_STRING\"], [libwebsock package string])\n AC_DEFINE_UNQUOTED([WEBSOCK_PACKAGE_NAME], [\"$PACKAGE_NAME\"], [libwebsock package name])\n-- \n2.1.0\n\n"
  },
  {
    "path": "package/libwebsock/0002-fix-ssl.patch",
    "content": "config: fix SSL detection\n\nThe @WEBSOCK_HAVE_SSL@ is replaced at configure time with either a 1 or 0.\nThe rest of the code is simply checking to see if WEBSOCK_HAVE_SSL is\ndefined at all. Using a #undef WEBSOCK_HAVE_SSL will cause configure\nto either comment it out or change the line to\n\"#define WEBSOCK_HAVE_SSL 1\".\n\nSigned-off-by: Clayton Shotwell <clayton.shotwell@rockwellcollins.com>\n\ndiff -durN a/src/websock_config.h.in b/src/websock_config.h.in\n--- a/src/websock_config.h.in\n+++ b/src/websock_config.h.in\n@@ -4,6 +4,6 @@\n #define WEBSOCK_PACKAGE_STRING @WEBSOCK_PACKAGE_STRING@\n #define WEBSOCK_PACKAGE_VERSION @WEBSOCK_PACKAGE_VERSION@\n #define WEBSOCK_PACKAGE_NAME @WEBSOCK_PACKAGE_NAME@\n-#define WEBSOCK_HAVE_SSL @WEBSOCK_HAVE_SSL@\n+#undef WEBSOCK_HAVE_SSL\n \n #endif\n"
  },
  {
    "path": "package/libwebsock/0003-fix-incorrect-inline.patch",
    "content": "utf: do not define decode() to be inline\n\nCurrently, decode() is prototyped in utf.h, its body is in utf.c and it\nis called from util.c.\n\nHowever, decode() is defined to be inline, which can not work since,\nwhen compiling util.c, the body of decode() is out-of-scope for that\ncompilation unit.\n\nFurthermore, decode() uses a utf8d, which is a static defined in utf.c .\nSo utf8d is not visible when compiling util.c either.\n\nThis means that the definition of decode() along with utf8d is basically\nwrong, and is now failing with gcc-5.x, with warnings like so:\n\n    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\n    utf.c:36:12: warning: ‘utf8d’ is static but used in inline function ‘decode’ which is not static\n       *state = utf8d[256 + *state*16 + type];\n                ^\n    utf.c:30:19: warning: ‘utf8d’ is static but used in inline function ‘decode’ which is not static\n       uint32_t type = utf8d[byte];\n                       ^\n    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\n    In file included from websock.h:73:0,\n                     from util.c:20:\n    utf.h:25:17: warning: inline function ‘decode’ declared but never defined\n     uint32_t inline decode(uint32_t *state, uint32_t *codep, uint32_t byte);\n                     ^\n\nThis results in decode() to be omitted from libwebsock.so, and thus link\nfailures when another program wants to link with -lwebsock.\n\nThe simplest solution is to not inline decode() at all.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\n---\nNote: an alternative would be to move both decode() and utf8d into\ndecode.h nad ditch decode.c if decode really must be inline. This is\nleft as an execise for an interested party. But since upstream hasn't\nseen a single commit in more than a year now... :-(\n\ndiff -durN a/src/utf.c b/src/utf.c\n--- a/src/utf.c\t2014-07-15 01:43:20.000000000 +0200\n+++ b/src/utf.c\t2015-08-22 22:29:38.667393786 +0200\n@@ -24,7 +24,7 @@\n   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\n };\n \n-uint32_t inline\n+uint32_t\n decode(uint32_t* state, uint32_t* codep, uint32_t byte)\n {\n   uint32_t type = utf8d[byte];\ndiff -durN a/src/utf.h b/src/utf.h\n--- a/src/utf.h\t2014-07-15 01:43:20.000000000 +0200\n+++ b/src/utf.h\t2015-08-22 22:29:10.439227396 +0200\n@@ -22,7 +22,7 @@\n \n #include <stdint.h>\n \n-uint32_t inline decode(uint32_t *state, uint32_t *codep, uint32_t byte);\n+uint32_t decode(uint32_t *state, uint32_t *codep, uint32_t byte);\n \n \n #endif /* UTF_H_ */\n"
  },
  {
    "path": "package/libwebsock/Config.in",
    "content": "config BR2_PACKAGE_LIBWEBSOCK\n\tbool \"libwebsock\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBEVENT\n\thelp\n\t  C library for easy WebSockets servers.\n\n\t  This library allows a developer to quickly develop WebSocket\n\t  servers by focusing on the actual logic of your WebSocket\n\t  implementation instead of the details of the WebSocket\n\t  protocol or even specifics of C sockets.\n\n\t  https://github.com/payden/libwebsock\n\ncomment \"libwebsock needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libwebsock/libwebsock.hash",
    "content": "# Locally calculated\nsha256 34cf8376446e2371c9af47394043a30dc16af7ed5437d56bc6135c5dfda9ed22  libwebsock-3c1615eeadb0b582b63851073bfe3e5132f31ebc.tar.gz\nsha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING.lesser\n"
  },
  {
    "path": "package/libwebsock/libwebsock.mk",
    "content": "################################################################################\n#\n# libwebsock\n#\n################################################################################\n\nLIBWEBSOCK_VERSION = 3c1615eeadb0b582b63851073bfe3e5132f31ebc\nLIBWEBSOCK_SITE = $(call github,payden,libwebsock,$(LIBWEBSOCK_VERSION))\nLIBWEBSOCK_DEPENDENCIES = libevent host-pkgconf\nLIBWEBSOCK_AUTORECONF = YES\nLIBWEBSOCK_INSTALL_STAGING = YES\nLIBWEBSOCK_LICENSE = LGPL-3.0\nLIBWEBSOCK_LICENSE_FILES = COPYING.lesser\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBWEBSOCK_DEPENDENCIES += openssl\nLIBWEBSOCK_CONF_OPTS += --with-ssl\nelse\nLIBWEBSOCK_CONF_OPTS += --without-ssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libwebsockets/Config.in",
    "content": "config BR2_PACKAGE_LIBWEBSOCKETS\n\tbool \"libwebsockets\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Libwebsockets is a lightweight pure C library built to use\n\t  minimal CPU and memory resources, and provide fast throughput\n\t  in both directions.\n\n\t  https://libwebsockets.org/\n\ncomment \"libwebsockets needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libwebsockets/libwebsockets.hash",
    "content": "# Locally computed:\nsha256  6ece1f422c6d38aabedec2476f2ac12e9aede8691b08137068ad85545ce3ff78  libwebsockets-4.0.21.tar.gz\nsha256  5756db345eb9c21cb06dd7cb69c38ec234657a233f9a186b4f5fa453681bd394  LICENSE\n"
  },
  {
    "path": "package/libwebsockets/libwebsockets.mk",
    "content": "################################################################################\n#\n# libwebsockets\n#\n################################################################################\n\nLIBWEBSOCKETS_VERSION = 4.0.21\nLIBWEBSOCKETS_SITE = $(call github,warmcat,libwebsockets,v$(LIBWEBSOCKETS_VERSION))\nLIBWEBSOCKETS_LICENSE = MIT with exceptions\nLIBWEBSOCKETS_LICENSE_FILES = LICENSE\nLIBWEBSOCKETS_DEPENDENCIES = zlib\nLIBWEBSOCKETS_INSTALL_STAGING = YES\nLIBWEBSOCKETS_CONF_OPTS = \\\n\t-DLWS_WITHOUT_TESTAPPS=ON \\\n\t-DLWS_IPV6=ON \\\n\t-DLWS_UNIX_SOCK=ON \\\n\t-DLWS_WITHOUT_EXTENSIONS=OFF\n\n# If LWS_MAX_SMP=1, then there is no code related to pthreads compiled\n# in the library. If unset, LWS_MAX_SMP defaults to 32 and a small\n# amount of pthread mutex code is built into the library.\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),)\nLIBWEBSOCKETS_CONF_OPTS += -DLWS_MAX_SMP=1\nelse\nLIBWEBSOCKETS_CONF_OPTS += -DLWS_MAX_SMP=\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBWEBSOCKETS_DEPENDENCIES += openssl host-openssl\nLIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_SSL=ON\nelse\nLIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_SSL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBEV),y)\nLIBWEBSOCKETS_DEPENDENCIES += libev\nLIBWEBSOCKETS_CONF_OPTS += \\\n\t-DLWS_WITH_LIBEV=ON \\\n\t-DLWS_WITH_LIBEVENT=OFF\nelse ifeq ($(BR2_PACKAGE_LIBEVENT),y)\nLIBWEBSOCKETS_DEPENDENCIES += libevent\nLIBWEBSOCKETS_CONF_OPTS += \\\n\t-DLWS_WITH_LIBEV=OFF \\\n\t-DLWS_WITH_LIBEVENT=ON\nelse\nLIBWEBSOCKETS_CONF_OPTS += \\\n\t-DLWS_WITH_LIBEV=OFF \\\n\t-DLWS_WITH_LIBEVENT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nLIBWEBSOCKETS_DEPENDENCIES += libglib2\nLIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_GLIB=ON\nelse\nLIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_GLIB=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y)\nLIBWEBSOCKETS_DEPENDENCIES += util-linux\nLIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_FSMOUNT=ON\nelse\nLIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_FSMOUNT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBUV),y)\nLIBWEBSOCKETS_DEPENDENCIES += libuv\nLIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_LIBUV=ON\nelse\nLIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_LIBUV=OFF\nendif\n\nifeq ($(BR2_SHARED_LIBS),y)\nLIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_STATIC=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libwpe/Config.in",
    "content": "comment \"libwpe needs a toolchain w/ C++, dynamic library and an OpenEGL-capable backend\"\n\tdepends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_LIBWPE\n\tbool \"libwpe\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tselect BR2_PACKAGE_LIBXKBCOMMON\n\thelp\n\t  Base library for the WPE WebKit port.\n\n\t  https://wpewebkit.org/\n"
  },
  {
    "path": "package/libwpe/libwpe.hash",
    "content": "# From https://wpewebkit.org/releases/libwpe-1.10.1.tar.xz.sums\nmd5  f60fc13b519a66d262afb76c77441870  libwpe-1.10.1.tar.xz\nsha1  1a8085b9a172d37e952c07bbb09b1654d4161ab2  libwpe-1.10.1.tar.xz\nsha256  a327b3ffcf2356dbe8148c1db4bbdc5359d7e7163d177f67551a8393b144adf0  libwpe-1.10.1.tar.xz\n\n# Hashes for license files:\nsha256  35bef295cedbbf179eaee14328002587a0e7dc08ebf3f15ea080a6f2815f0d7b  COPYING\n"
  },
  {
    "path": "package/libwpe/libwpe.mk",
    "content": "################################################################################\n#\n# libwpe\n#\n################################################################################\n\nLIBWPE_VERSION = 1.10.1\nLIBWPE_SITE = https://wpewebkit.org/releases\nLIBWPE_SOURCE = libwpe-$(LIBWPE_VERSION).tar.xz\nLIBWPE_INSTALL_STAGING = YES\nLIBWPE_LICENSE = BSD-2-Clause\nLIBWPE_LICENSE_FILES = COPYING\nLIBWPE_DEPENDENCIES = libegl libxkbcommon\n\nLIBWPE_CFLAGS = $(TARGET_CFLAGS)\nLIBWPE_CXXFLAGS = $(TARGET_CXXFLAGS)\n\n# Workaround for https://github.com/raspberrypi/userland/issues/316\nifeq ($(BR2_PACKAGE_RPI_USERLAND),y)\nLIBWPE_CFLAGS += -D_GNU_SOURCE\nLIBWPE_CXXFLAGS += -D_GNU_SOURCE\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libxcrypt/Config.in",
    "content": "config BR2_PACKAGE_LIBXCRYPT\n\tbool \"libxcrypt\"\n\thelp\n\t  libxcrypt is a modern library for one-way hashing\n\t  of passwords. It supports a wide variety of both\n\t  modern and historical hashing methods:\n\t  yescrypt, gost-yescrypt, scrypt, bcrypt, sha512crypt,\n\t  sha256crypt, md5crypt, SunMD5, sha1crypt, NT,\n\t  bsdicrypt, bigcrypt, and descrypt.\n\n\t  https://github.com/besser82/libxcrypt\n"
  },
  {
    "path": "package/libxcrypt/libxcrypt.hash",
    "content": "# Locally calculated\nsha256  e8a544dd19171c1e6191a6044c96cc31496d781ba08b5a00f53310d001d58114  libxcrypt-4.4.26.tar.gz\nsha256  cead8b3d94a143f64ccb571ada1cea47a70a0b847c8d95306e8d78ed68951f3d  LICENSING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\n"
  },
  {
    "path": "package/libxcrypt/libxcrypt.mk",
    "content": "################################################################################\n#\n# libxcrypt\n#\n################################################################################\n\nLIBXCRYPT_VERSION = 4.4.26\nLIBXCRYPT_SITE = $(call github,besser82,libxcrypt,v$(LIBXCRYPT_VERSION))\nLIBXCRYPT_LICENSE = LGPL-2.1+\nLIBXCRYPT_LICENSE_FILES = LICENSING COPYING.LIB\nLIBXCRYPT_INSTALL_STAGING = YES\nLIBXCRYPT_AUTORECONF = YES\n\n# Some warnings turn into errors with some sensitive compilers\nLIBXCRYPT_CONF_OPTS = --disable-werror\n\n# Disable obsolete and unsecure API\nLIBXCRYPT_CONF_OPTS += --disable-obsolete_api\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libxkbcommon/Config.in",
    "content": "config BR2_PACKAGE_LIBXKBCOMMON\n\tbool \"libxkbcommon\"\n\tselect BR2_PACKAGE_LIBXCB if BR2_PACKAGE_XORG7\n\thelp\n\t  xkbcommon is a keymap compiler and support library which\n\t  processes a reduced subset of keymaps as defined by the XKB\n\t  specification.\n\n\t  https://xkbcommon.org\n"
  },
  {
    "path": "package/libxkbcommon/libxkbcommon.hash",
    "content": "# From https://lists.freedesktop.org/archives/wayland-devel/2021-September/041976.html\nsha256  b3c710d27a2630054e1e1399c85b7f330ef03359b460f0c1b3b587fd01fe9234  libxkbcommon-1.3.1.tar.xz\n\n# License file:\nsha256  086caee279449369d41c1157911ec7696e707b93feba7280de757d3c470b2dfb  LICENSE\n"
  },
  {
    "path": "package/libxkbcommon/libxkbcommon.mk",
    "content": "################################################################################\n#\n# libxkbcommon\n#\n################################################################################\n\nLIBXKBCOMMON_VERSION = 1.3.1\nLIBXKBCOMMON_SITE = https://xkbcommon.org/download\nLIBXKBCOMMON_SOURCE = libxkbcommon-$(LIBXKBCOMMON_VERSION).tar.xz\nLIBXKBCOMMON_LICENSE = MIT/X11\nLIBXKBCOMMON_LICENSE_FILES = LICENSE\nLIBXKBCOMMON_INSTALL_STAGING = YES\nLIBXKBCOMMON_DEPENDENCIES = host-bison host-flex\nLIBXKBCOMMON_CONF_OPTS = \\\n\t-Denable-docs=false \\\n\t-Denable-wayland=false \\\n\t-Denable-xkbregistry=false\n\nifeq ($(BR2_PACKAGE_XORG7),y)\nLIBXKBCOMMON_CONF_OPTS += -Denable-x11=true\nLIBXKBCOMMON_DEPENDENCIES += libxcb\nelse\nLIBXKBCOMMON_CONF_OPTS += -Denable-x11=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/libxml-parser-perl/libxml-parser-perl.hash",
    "content": "# locally computed hash\nsha256 d331332491c51cccfb4cb94ffc44f9cd73378e618498d4a37df9e043661c515d XML-Parser-2.46.tar.gz\nsha256 6a2e768443ed00f09d3d4bc4dd14451035eac13c6864d68d8e2f76edf5a044f2 README\n"
  },
  {
    "path": "package/libxml-parser-perl/libxml-parser-perl.mk",
    "content": "################################################################################\n#\n# libxml-parser-perl\n#\n################################################################################\n\nLIBXML_PARSER_PERL_VERSION = 2.46\nLIBXML_PARSER_PERL_SOURCE = XML-Parser-$(LIBXML_PARSER_PERL_VERSION).tar.gz\nLIBXML_PARSER_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TODDR\nHOST_LIBXML_PARSER_PERL_DEPENDENCIES = host-expat\nLIBXML_PARSER_PERL_LICENSE = Artistic or GPL-1.0+\nLIBXML_PARSER_PERL_LICENSE_FILES = README\nLIBXML_PARSER_PERL_RUN_PERL = `which perl`\n\nHOST_LIBXML_PARSER_PERL_CONFIGURE_OPTS = \\\n\t$(HOST_CONFIGURE_OPTS) \\\n\tLD=\"$(HOSTCC)\"\n\ndefine HOST_LIBXML_PARSER_PERL_CONFIGURE_CMDS\n\t(cd $(@D) ; \\\n\t\t$(HOST_LIBXML_PARSER_PERL_CONFIGURE_OPTS) \\\n\t\t\t$(LIBXML_PARSER_PERL_RUN_PERL) Makefile.PL \\\n\t\t\tPREFIX=$(HOST_DIR) \\\n\t\t\tEXPATLIBPATH=$(HOST_DIR)/lib \\\n\t\t\tEXPATINCPATH=$(HOST_DIR)/include \\\n\t\t\tINSTALLDIRS=site \\\n\t\t\tINSTALLSITELIB=$(HOST_DIR)/lib/perl \\\n\t\t\tINSTALLSITEARCH=$(HOST_DIR)/lib/perl \\\n\t)\nendef\n\ndefine HOST_LIBXML_PARSER_PERL_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) $(HOST_LIBXML_PARSER_PERL_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine HOST_LIBXML_PARSER_PERL_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) install\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/libxml2/Config.in",
    "content": "config BR2_PACKAGE_LIBXML2\n\tbool \"libxml2\"\n\thelp\n\t  XML C Parser\n\n\t  http://xmlsoft.org/\n"
  },
  {
    "path": "package/libxml2/libxml2.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92  libxml2-2.9.12.tar.gz\n# License files, locally calculated\nsha256  c5c63674f8a83c4d2e385d96d1c670a03cb871ba2927755467017317878574bd  COPYING\n"
  },
  {
    "path": "package/libxml2/libxml2.mk",
    "content": "################################################################################\n#\n# libxml2\n#\n################################################################################\n\nLIBXML2_VERSION = 2.9.12\nLIBXML2_SITE = http://xmlsoft.org/sources\nLIBXML2_INSTALL_STAGING = YES\nLIBXML2_LICENSE = MIT\nLIBXML2_LICENSE_FILES = COPYING\nLIBXML2_CPE_ID_VENDOR = xmlsoft\nLIBXML2_CONFIG_SCRIPTS = xml2-config\n\n# relocation truncated to fit: R_68K_GOT16O\nifeq ($(BR2_m68k_cf),y)\nLIBXML2_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -mxgot\"\nendif\n\nLIBXML2_CONF_OPTS = --with-gnu-ld --without-python --without-debug\n\nHOST_LIBXML2_DEPENDENCIES = host-pkgconf\nLIBXML2_DEPENDENCIES = host-pkgconf\n\nHOST_LIBXML2_CONF_OPTS = --without-zlib --without-lzma --without-python\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLIBXML2_DEPENDENCIES += zlib\nLIBXML2_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr\nelse\nLIBXML2_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nLIBXML2_DEPENDENCIES += xz\nLIBXML2_CONF_OPTS += --with-lzma\nelse\nLIBXML2_CONF_OPTS += --without-lzma\nendif\n\nLIBXML2_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\nifeq ($(BR2_ENABLE_LOCALE)$(BR2_PACKAGE_LIBICONV),y)\nLIBXML2_CONF_OPTS += --with-iconv\nelse\nLIBXML2_CONF_OPTS += --without-iconv\nendif\n\ndefine LIBXML2_CLEANUP_XML2CONF\n\trm -f $(TARGET_DIR)/usr/lib/xml2Conf.sh\nendef\nLIBXML2_POST_INSTALL_TARGET_HOOKS += LIBXML2_CLEANUP_XML2CONF\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n\n# libxml2 for the host\nLIBXML2_HOST_BINARY = $(HOST_DIR)/bin/xmllint\n"
  },
  {
    "path": "package/libxmlpp/Config.in",
    "content": "config BR2_PACKAGE_LIBXMLPP\n\tbool \"libxml++\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR # glibmm -> libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glibmm -> libglib2\n\tdepends on BR2_USE_MMU # glibmm -> libglib2\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_GLIBMM\n\thelp\n\t  libxml++ is a C++ wrapper for the libxml XML parser library.\n\n\t  https://libxmlplusplus.github.io/libxmlplusplus/\n\ncomment \"libxml++ needs a toolchain w/ C++, wchar, threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \\\n\t\t||!BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/libxmlpp/libxmlpp.hash",
    "content": "# From http://ftp.gnome.org/pub/GNOME/sources/libxml++/3.2/libxml++-3.2.0.sha256sum\nsha256  b786fae7fd7820d356698069a787d107995c3efcbef50d8f4efd3766ab768e4f  libxml++-3.2.0.tar.xz\n\n# Hash for license file\nsha256  a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7  COPYING\n"
  },
  {
    "path": "package/libxmlpp/libxmlpp.mk",
    "content": "################################################################################\n#\n# libxmlpp\n#\n################################################################################\n\nLIBXMLPP_VERSION_MAJOR = 3.2\nLIBXMLPP_VERSION = $(LIBXMLPP_VERSION_MAJOR).0\nLIBXMLPP_LICENSE = LGPL-2.1 (library), LGPL-2.0+ (examples)\nLIBXMLPP_LICENSE_FILES = COPYING\nLIBXMLPP_SOURCE = libxml++-$(LIBXMLPP_VERSION).tar.xz\nLIBXMLPP_SITE = http://ftp.gnome.org/pub/GNOME/sources/libxml++/$(LIBXMLPP_VERSION_MAJOR)\nLIBXMLPP_INSTALL_STAGING = YES\nLIBXMLPP_DEPENDENCIES = libxml2 glibmm host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libxmlrpc/Config.in",
    "content": "config BR2_PACKAGE_LIBXMLRPC\n\tbool \"libxmlrpc\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  XML-RPC is a quick-and-easy way to make procedure calls over\n\t  the Internet. It converts the procedure call into an XML\n\t  document, sends it to a remote server using HTTP, and gets\n\t  back the response as XML.\n\n\t  http://xmlrpc-c.sourceforge.net/\n\nif BR2_PACKAGE_LIBXMLRPC\n\nconfig BR2_PACKAGE_LIBXMLRPC_TOOLS_XMLRPC\n\tbool \"install cli tool\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Command line tool xmlrpc.\n\ncomment \"cli tool needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nendif # BR2_PACKAGE_LIBXMLRPC\n\ncomment \"libxmlrpc needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/libxmlrpc/libxmlrpc.hash",
    "content": "# Locally computed\nsha256  626e36295f43b320082bc7bdd961b46f39fbe2719535b5a417975a8e50c8f7f3  libxmlrpc-r3119-br2.tar.gz\nsha256  db7a6d3f187b218c3534010a83424c6bcdef88e6a0b6b1aa3a8762238bd642e6  doc/COPYING\n"
  },
  {
    "path": "package/libxmlrpc/libxmlrpc.mk",
    "content": "################################################################################\n#\n# libxmlrpc\n#\n################################################################################\n\n# 1.58.02 (code/advanced@r3119)\nLIBXMLRPC_VERSION = r3119\nLIBXMLRPC_SITE = https://svn.code.sf.net/p/xmlrpc-c/code/advanced\nLIBXMLRPC_SITE_METHOD = svn\nLIBXMLRPC_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)\nLIBXMLRPC_LICENSE_FILES = doc/COPYING\nLIBXMLRPC_INSTALL_STAGING = YES\nLIBXMLRPC_DEPENDENCIES = libcurl host-autoconf\nLIBXMLRPC_CONFIG_SCRIPTS = xmlrpc-c-config\nLIBXMLRPC_MAKE = $(MAKE1)\n\n# Using autoconf, not automake, so we cannot use AUTORECONF = YES.\ndefine LIBXMLRPC_RUN_AUTOCONF\n\tcd $(@D); $(AUTOCONF)\nendef\n\nLIBXMLRPC_PRE_CONFIGURE_HOOKS += LIBXMLRPC_RUN_AUTOCONF\n\nLIBXMLRPC_CONF_OPTS = \\\n\t$(if $(BR2_USE_WCHAR),,ac_cv_header_wchar_h=no) \\\n\t$(if $(BR2_INSTALL_LIBSTDCPP),,--disable-cplusplus) \\\n\thave_curl_config=$(STAGING_DIR)/usr/bin/curl-config \\\n\tCURL_CONFIG=$(STAGING_DIR)/usr/bin/curl-config\n\n# Our package uses autoconf, but not automake, so we need to pass\n# those variables at compile time as well.\nLIBXMLRPC_MAKE_OPTS = \\\n\tCC_FOR_BUILD=\"$(HOSTCC)\" \\\n\tLD_FOR_BUILD=\"$(HOSTLD)\" \\\n\tCFLAGS_FOR_BUILD=\"$(HOST_CFLAGS)\" \\\n\tLDFLAGS_FOR_BUILD=\"$(HOST_LDFLAGS)\"\n\nifeq ($(BR2_STATIC_LIBS),y)\nLIBXMLRPC_STATIC_OPTS = SHARED_LIB_TYPE=NONE MUST_BUILD_SHLIB=N\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBXMLRPC_DEPENDENCIES += host-pkgconf openssl\nLIBXMLRPC_CONF_OPTS += --enable-abyss-openssl\nelse\nLIBXMLRPC_CONF_OPTS += --disable-abyss-openssl\nendif\n\nLIBXMLRPC_MAKE_OPTS += $(LIBXMLRPC_STATIC_OPTS)\nLIBXMLRPC_INSTALL_STAGING_OPTS = $(LIBXMLRPC_STATIC_OPTS) \\\n\tDESTDIR=$(STAGING_DIR) install\nLIBXMLRPC_INSTALL_TARGET_OPTS = $(LIBXMLRPC_STATIC_OPTS) \\\n\tDESTDIR=$(TARGET_DIR) install\n\nifeq ($(BR2_PACKAGE_LIBXMLRPC_TOOLS_XMLRPC),y)\ndefine LIBXMLRPC_TOOLS_XMLRPC_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(LIBXMLRPC_MAKE_OPTS) -C $(@D)/tools/xmlrpc\nendef\nLIBXMLRPC_POST_BUILD_HOOKS += LIBXMLRPC_TOOLS_XMLRPC_BUILD_CMDS\ndefine LIBXMLRPC_TOOLS_XMLRPC_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(LIBXMLRPC_MAKE_OPTS) -C $(@D)/tools/xmlrpc \\\n\t\tDESTDIR=$(TARGET_DIR) install\nendef\nLIBXMLRPC_POST_INSTALL_TARGET_HOOKS += LIBXMLRPC_TOOLS_XMLRPC_INSTALL_TARGET_CMDS\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/libxslt/0001-Fix-xml2-config-check-in-configure-script.patch",
    "content": "From 90c34c8bb90e095a8a8fe8b2ce368bd9ff1837cc Mon Sep 17 00:00:00 2001\nFrom: Nick Wellnhofer <wellnhofer@aevum.de>\nDate: Fri, 15 Nov 2019 11:53:11 +0100\nSubject: [PATCH] Fix xml2-config check in configure script\n\nA 'print' option has never been supported. After a recent change to\nlibxml2, invalid options cause xml2-config to fail.\n\n[Retrieved from:\nhttps://gitlab.gnome.org/GNOME/libxslt/-/commit/90c34c8bb90e095a8a8fe8b2ce368bd9ff1837cc]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 3da57b18..585b9d7c 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -548,7 +548,7 @@ dnl make sure xml2-config is executable,\n dnl test version and init our variables\n dnl\n \n-if test \"x$LIBXML_LIBS\" = \"x\" && ${XML_CONFIG} --libs print > /dev/null 2>&1\n+if test \"x$LIBXML_LIBS\" = \"x\" && ${XML_CONFIG} --libs > /dev/null 2>&1\n then\n     AC_MSG_CHECKING(for libxml libraries >= $LIBXML_REQUIRED_VERSION)\n     XMLVERS=`$XML_CONFIG --version`\n-- \nGitLab\n\n"
  },
  {
    "path": "package/libxslt/Config.in",
    "content": "config BR2_PACKAGE_LIBXSLT\n\tbool \"libxslt\"\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  Install the xslt library which is used\n\t  to transform XML files to other XML files.\n\n\t  XSLT is designed for use as part of XSL,\n\t  which is a stylesheet language for XML.\n\t  In addition to XSLT, XSL includes an XML vocabulary\n\t  for specifying formatting.\n\t  XSL specifies the styling of an XML document by using XSLT\n\t  to describe how the document is transformed into another\n\t  XML document that uses the formatting vocabulary.\n\n\t  http://xmlsoft.org/xslt/\n"
  },
  {
    "path": "package/libxslt/libxslt.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\t98b1bd46d6792925ad2dfe9a87452ea2adebf69dcb9919ffd55bf926a7f93f7f\tlibxslt-1.1.34.tar.gz\n\n# Hash for license file:\nsha256\t7e48e290b6bfccc2ec1b297023a1d77f2fd87417f71fbb9f50aabef40a851819\tCOPYING\n"
  },
  {
    "path": "package/libxslt/libxslt.mk",
    "content": "################################################################################\n#\n# libxslt\n#\n################################################################################\n\nLIBXSLT_VERSION = 1.1.34\nLIBXSLT_SITE = http://xmlsoft.org/sources\nLIBXSLT_INSTALL_STAGING = YES\nLIBXSLT_LICENSE = MIT\nLIBXSLT_LICENSE_FILES = COPYING\nLIBXSLT_CPE_ID_VENDOR = xmlsoft\n# We're patching configure.ac\nLIBXSLT_AUTORECONF = YES\n\nLIBXSLT_CONF_OPTS = \\\n\t--with-gnu-ld \\\n\t--without-debug \\\n\t--without-python \\\n\t--with-libxml-prefix=$(STAGING_DIR)/usr\nLIBXSLT_CONFIG_SCRIPTS = xslt-config\nLIBXSLT_DEPENDENCIES = host-pkgconf libxml2\n\n# If we have enabled libgcrypt then use it, else disable crypto support.\nifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nLIBXSLT_DEPENDENCIES += libgcrypt\nLIBXSLT_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config\nelse\nLIBXSLT_CONF_OPTS += --without-crypto\nendif\n\nHOST_LIBXSLT_CONF_OPTS = --without-debug --without-python --without-crypto\n\nHOST_LIBXSLT_DEPENDENCIES = host-pkgconf host-libxml2\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libyaml/Config.in",
    "content": "config BR2_PACKAGE_LIBYAML\n\tbool \"libyaml\"\n\thelp\n\t  LibYAML is a YAML 1.1 parser and emitter written in C.\n\n\t  http://pyyaml.org/wiki/LibYAML\n"
  },
  {
    "path": "package/libyaml/libyaml.hash",
    "content": "# Locally calculated\nsha256  c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4  yaml-0.2.5.tar.gz\nsha256  c40112449f254b9753045925248313e9270efa36d226b22d82d4cc6c43c57f29  License\n"
  },
  {
    "path": "package/libyaml/libyaml.mk",
    "content": "################################################################################\n#\n# libyaml\n#\n################################################################################\n\nLIBYAML_VERSION = 0.2.5\nLIBYAML_SOURCE = yaml-$(LIBYAML_VERSION).tar.gz\nLIBYAML_SITE = http://pyyaml.org/download/libyaml\nLIBYAML_INSTALL_STAGING = YES\nLIBYAML_LICENSE = MIT\nLIBYAML_LICENSE_FILES = License\nLIBYAML_CPE_ID_VENDOR = pyyaml\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/libyang/Config.in",
    "content": "config BR2_PACKAGE_LIBYANG\n\tbool \"libyang\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_PCRE_UCP\n\thelp\n\t  Libyang is YANG data modeling language parser and toolkit\n\t  written (and providing API) in C.\n\n\t  https://github.com/CESNET/libyang\n\ncomment \"libyang needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libyang/libyang.hash",
    "content": "# Locally calculated\nsha256  8576cad398b451b1c622b0652a2030fcf83ee1d9a39e6cd93d17b0a5a43118d6  libyang-1.0.240.tar.gz\nsha256  f942fe693e03e4e3ff67a351c00dc8f468a042e0d7273b0aa6bc53060b568112  LICENSE\n"
  },
  {
    "path": "package/libyang/libyang.mk",
    "content": "################################################################################\n#\n# libyang\n#\n################################################################################\n\nLIBYANG_VERSION = 1.0.240\nLIBYANG_SITE = $(call github,CESNET,libyang,v$(LIBYANG_VERSION))\nLIBYANG_LICENSE = BSD-3-Clause\nLIBYANG_LICENSE_FILES = LICENSE\nLIBYANG_INSTALL_STAGING = YES\nLIBYANG_CPE_ID_VENDOR = cesnet\nLIBYANG_SUPPORTS_IN_SOURCE_BUILD = NO\nLIBYANG_DEPENDENCIES = pcre\nHOST_LIBYANG_DEPENDENCIES = host-pcre\n\nLIBYANG_CONF_OPTS = \\\n\t-DENABLE_VALGRIND_TESTS=OFF \\\n\t-DGEN_PYTHON_BINDINGS=OFF \\\n\t-DENABLE_LYD_PRIV=ON\n\nHOST_LIBYANG_CONF_OPTS = \\\n\t-DENABLE_VALGRIND_TESTS=OFF \\\n\t-DGEN_PYTHON_BINDINGS=OFF\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/libyuv/0001-i386-sse2.patch",
    "content": "Fix compilation on non-sse2 platforms\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr libyuv-1411.org/include/libyuv/scale_row.h libyuv-1411/include/libyuv/scale_row.h\n--- libyuv-1411.org/include/libyuv/scale_row.h\t2015-05-22 23:39:21.000000000 +0200\n+++ libyuv-1411/include/libyuv/scale_row.h\t2015-05-25 12:35:17.000000000 +0200\n@@ -33,7 +33,7 @@\n \n // The following are available on all x86 platforms:\n #if !defined(LIBYUV_DISABLE_X86) && \\\n-    (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__))\n+    (defined(_M_IX86) || defined(__x86_64__) || (defined(__i386__) && defined(__SSE2__)))\n #define HAS_FIXEDDIV1_X86\n #define HAS_FIXEDDIV_X86\n #define HAS_SCALEADDROWS_SSE2\n"
  },
  {
    "path": "package/libyuv/Config.in",
    "content": "config BR2_PACKAGE_LIBYUV\n\tbool \"libyuv\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  libyuv is an open source project that includes YUV scaling\n\t  and conversion functionality.\n\n\t  https://chromium.googlesource.com/libyuv/libyuv/\n\ncomment \"libyuv needs a toolchain w/ C++, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libyuv/libyuv.hash",
    "content": "# Locally computed\nsha256  7bb4118ef050ca3e9a27f49b7d21e068922bf57cf973f2c7b1476cadf73ac66a  libyuv-413a8d8041f1cc5a350a47c0d81cc721e64f9fd0-br1.tar.gz\nsha256  2b2cc1180c7e6988328ad2033b04b80117419db9c4c584918bbb3cfec7e9364f  LICENSE\n"
  },
  {
    "path": "package/libyuv/libyuv.mk",
    "content": "################################################################################\n#\n# libyuv\n#\n################################################################################\n\nLIBYUV_VERSION = 413a8d8041f1cc5a350a47c0d81cc721e64f9fd0\nLIBYUV_SITE = https://chromium.googlesource.com/libyuv/libyuv\nLIBYUV_SITE_METHOD = git\nLIBYUV_LICENSE = BSD-3-Clause\nLIBYUV_LICENSE_FILES = LICENSE\nLIBYUV_INSTALL_STAGING = YES\nLIBYUV_DEPENDENCIES = $(if $(BR2_PACKAGE_JPEG),jpeg)\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/libzip/0001-Add-FindGnuTLS-cmake-from-3-17-3.patch",
    "content": "From 73f6f8ebff678a0847e6b197b574082cc285b528 Mon Sep 17 00:00:00 2001\nFrom: Thomas Klausner <tk@giga.or.at>\nDate: Sat, 25 Jul 2020 12:03:29 +0200\nSubject: [PATCH] Add FindGnuTLS.cmake from 3.17.3.\n\nAddresses #199\n\n[Retrieved from:\nhttps://github.com/nih-at/libzip/commit/73f6f8ebff678a0847e6b197b574082cc285b528]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n cmake-compat/FindGnuTLS.cmake | 82 +++++++++++++++++++++++++++++++++++\n 1 file changed, 82 insertions(+)\n create mode 100644 cmake-compat/FindGnuTLS.cmake\n\ndiff --git a/cmake-compat/FindGnuTLS.cmake b/cmake-compat/FindGnuTLS.cmake\nnew file mode 100644\nindex 00000000..819f0001\n--- /dev/null\n+++ b/cmake-compat/FindGnuTLS.cmake\n@@ -0,0 +1,82 @@\n+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying\n+# file Copyright.txt or https://cmake.org/licensing for details.\n+\n+#[=======================================================================[.rst:\n+FindGnuTLS\n+----------\n+\n+Find the GNU Transport Layer Security library (gnutls)\n+\n+IMPORTED Targets\n+^^^^^^^^^^^^^^^^\n+\n+This module defines :prop_tgt:`IMPORTED` target ``GnuTLS::GnuTLS``, if\n+gnutls has been found.\n+\n+Result Variables\n+^^^^^^^^^^^^^^^^\n+\n+``GNUTLS_FOUND``\n+  System has gnutls\n+``GNUTLS_INCLUDE_DIR``\n+  The gnutls include directory\n+``GNUTLS_LIBRARIES``\n+  The libraries needed to use gnutls\n+``GNUTLS_DEFINITIONS``\n+  Compiler switches required for using gnutls\n+``GNUTLS_VERSION``\n+  version of gnutls.\n+#]=======================================================================]\n+\n+# Note that this doesn't try to find the gnutls-extra package.\n+\n+\n+if (GNUTLS_INCLUDE_DIR AND GNUTLS_LIBRARY)\n+  # in cache already\n+  set(gnutls_FIND_QUIETLY TRUE)\n+endif ()\n+\n+if (NOT WIN32)\n+  # try using pkg-config to get the directories and then use these values\n+  # in the find_path() and find_library() calls\n+  # also fills in GNUTLS_DEFINITIONS, although that isn't normally useful\n+  find_package(PkgConfig QUIET)\n+  PKG_CHECK_MODULES(PC_GNUTLS QUIET gnutls)\n+  set(GNUTLS_DEFINITIONS ${PC_GNUTLS_CFLAGS_OTHER})\n+  set(GNUTLS_VERSION ${PC_GNUTLS_VERSION})\n+  # keep for backward compatibility\n+  set(GNUTLS_VERSION_STRING ${PC_GNUTLS_VERSION})\n+endif ()\n+\n+find_path(GNUTLS_INCLUDE_DIR gnutls/gnutls.h\n+  HINTS\n+    ${PC_GNUTLS_INCLUDEDIR}\n+    ${PC_GNUTLS_INCLUDE_DIRS}\n+  )\n+\n+find_library(GNUTLS_LIBRARY NAMES gnutls libgnutls\n+  HINTS\n+    ${PC_GNUTLS_LIBDIR}\n+    ${PC_GNUTLS_LIBRARY_DIRS}\n+  )\n+\n+mark_as_advanced(GNUTLS_INCLUDE_DIR GNUTLS_LIBRARY)\n+\n+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)\n+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GnuTLS\n+                                  REQUIRED_VARS GNUTLS_LIBRARY GNUTLS_INCLUDE_DIR\n+                                  VERSION_VAR GNUTLS_VERSION_STRING)\n+\n+if(GNUTLS_FOUND)\n+  set(GNUTLS_LIBRARIES    ${GNUTLS_LIBRARY})\n+  set(GNUTLS_INCLUDE_DIRS ${GNUTLS_INCLUDE_DIR})\n+\n+  if(NOT TARGET GnuTLS::GnuTLS)\n+    add_library(GnuTLS::GnuTLS UNKNOWN IMPORTED)\n+    set_target_properties(GnuTLS::GnuTLS PROPERTIES\n+      INTERFACE_INCLUDE_DIRECTORIES \"${GNUTLS_INCLUDE_DIRS}\"\n+      INTERFACE_COMPILE_DEFINITIONS \"${GNUTLS_DEFINITIONS}\"\n+      IMPORTED_LINK_INTERFACE_LANGUAGES \"C\"\n+      IMPORTED_LOCATION \"${GNUTLS_LIBRARIES}\")\n+  endif()\n+endif()\n"
  },
  {
    "path": "package/libzip/0002-Include-limits.h-for-INT_MAX.patch",
    "content": "From fd89e242d16128dedef08f47d99ae56aa19b0591 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?=C3=98rjan=20Malde?= <red@foxi.me>\nDate: Wed, 15 Jul 2020 12:16:16 +0200\nSubject: [PATCH] Include limits.h for INT_MAX\n\n[Retrieved from:\nhttps://github.com/nih-at/libzip/commit/fd89e242d16128dedef08f47d99ae56aa19b0591]\nSigned-off-by: Paul Cercueil <paul@crapouillou.net>\n---\n lib/zip_crypto_openssl.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/lib/zip_crypto_openssl.c b/lib/zip_crypto_openssl.c\nindex 1cb00479..60f92758 100644\n--- a/lib/zip_crypto_openssl.c\n+++ b/lib/zip_crypto_openssl.c\n@@ -38,6 +38,7 @@\n #include \"zip_crypto.h\"\n \n #include <openssl/rand.h>\n+#include <limits.h>\n \n #if OPENSSL_VERSION_NUMBER < 0x1010000fL || defined(LIBRESSL_VERSION_NUMBER)\n #define USE_OPENSSL_1_0_API\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/libzip/Config.in",
    "content": "config BR2_PACKAGE_LIBZIP\n\tbool \"libzip\"\n\tdepends on !BR2_STATIC_LIBS # dlsym()\n\tselect BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  C library for reading, creating, and modifying zip archives.\n\t  This package also contains zipcmp, ziptorrent and zipmerge\n\t  utilities.\n\n\t  https://libzip.org/\n\ncomment \"libzip needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/libzip/libzip.hash",
    "content": "# Locally calculated\nsha256  a60473ffdb7b4260c08bfa19c2ccea0438edac11193c3afbbb1f17fbcf6c6132  libzip-1.7.3.tar.xz\nsha256  deae392de70503672793ee784d603bfa8069dcd5974a325dfbf91160f3a147d6  LICENSE\n"
  },
  {
    "path": "package/libzip/libzip.mk",
    "content": "################################################################################\n#\n# libzip\n#\n################################################################################\n\nLIBZIP_VERSION = 1.7.3\nLIBZIP_SITE = https://libzip.org/download\nLIBZIP_SOURCE = libzip-$(LIBZIP_VERSION).tar.xz\nLIBZIP_LICENSE = BSD-3-Clause\nLIBZIP_LICENSE_FILES = LICENSE\nLIBZIP_CPE_ID_VENDOR = libzip\nLIBZIP_INSTALL_STAGING = YES\nLIBZIP_DEPENDENCIES = zlib\nHOST_LIBZIP_DEPENDENCIES = host-zlib\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nLIBZIP_DEPENDENCIES += bzip2\nLIBZIP_CONF_OPTS += -DENABLE_BZIP2=ON\nelse\nLIBZIP_CONF_OPTS += -DENABLE_BZIP2=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nLIBZIP_DEPENDENCIES += gnutls\nLIBZIP_CONF_OPTS += -DENABLE_GNUTLS=ON\nelse\nLIBZIP_CONF_OPTS += -DENABLE_GNUTLS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_MBEDTLS),y)\nLIBZIP_DEPENDENCIES += mbedtls\nLIBZIP_CONF_OPTS += -DENABLE_MBEDTLS=ON\nelse\nLIBZIP_CONF_OPTS += -DENABLE_MBEDTLS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIBZIP_DEPENDENCIES += openssl\nLIBZIP_CONF_OPTS += -DENABLE_OPENSSL=ON\nelse\nLIBZIP_CONF_OPTS += -DENABLE_OPENSSL=OFF\nendif\n\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),)\nLIBZIP_DEPENDENCIES += musl-fts\nLIBZIP_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-lfts\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nLIBZIP_DEPENDENCIES += xz\nLIBZIP_CONF_OPTS += -DENABLE_LZMA=ON\nelse\nLIBZIP_CONF_OPTS += -DENABLE_LZMA=OFF\nendif\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/libzlib/libzlib.hash",
    "content": "# From http://www.zlib.net/\nsha256 4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066  zlib-1.2.11.tar.xz\n# License files, locally calculated\nsha256 7960b6b1cc63e619abb77acaea5427159605afee8c8b362664f4effc7d7f7d15  README\n"
  },
  {
    "path": "package/libzlib/libzlib.mk",
    "content": "################################################################################\n#\n# libzlib\n#\n################################################################################\n\nLIBZLIB_VERSION = 1.2.11\nLIBZLIB_SOURCE = zlib-$(LIBZLIB_VERSION).tar.xz\nLIBZLIB_SITE = http://www.zlib.net\nLIBZLIB_LICENSE = Zlib\nLIBZLIB_LICENSE_FILES = README\nLIBZLIB_INSTALL_STAGING = YES\nLIBZLIB_PROVIDES = zlib\nLIBZLIB_CPE_ID_VENDOR = gnu\nLIBZLIB_CPE_ID_PRODUCT = zlib\n\n# It is not possible to build only a shared version of zlib, so we build both\n# shared and static, unless we only want the static libs, and we eventually\n# selectively remove what we do not want\nifeq ($(BR2_STATIC_LIBS),y)\nLIBZLIB_PIC =\nLIBZLIB_SHARED = --static\nelse\nLIBZLIB_PIC = -fPIC\nLIBZLIB_SHARED = --shared\nendif\n\ndefine LIBZLIB_CONFIGURE_CMDS\n\t(cd $(@D); rm -rf config.cache; \\\n\t\t$(TARGET_CONFIGURE_ARGS) \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) $(LIBZLIB_PIC)\" \\\n\t\t./configure \\\n\t\t$(LIBZLIB_SHARED) \\\n\t\t--prefix=/usr \\\n\t)\nendef\n\ndefine HOST_LIBZLIB_CONFIGURE_CMDS\n\t(cd $(@D); rm -rf config.cache; \\\n\t\t$(HOST_CONFIGURE_ARGS) \\\n\t\t$(HOST_CONFIGURE_OPTS) \\\n\t\t./configure \\\n\t\t--prefix=\"$(HOST_DIR)\" \\\n\t\t--sysconfdir=\"$(HOST_DIR)/etc\" \\\n\t)\nendef\n\ndefine LIBZLIB_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D)\nendef\n\ndefine HOST_LIBZLIB_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE1) -C $(@D)\nendef\n\ndefine LIBZLIB_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) LDCONFIG=true install\nendef\n\ndefine LIBZLIB_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(TARGET_DIR) LDCONFIG=true install\nendef\n\n# We don't care removing the .a from target, since it not used at link\n# time to build other packages, and it is anyway removed later before\n# assembling the filesystem images anyway.\nifeq ($(BR2_SHARED_LIBS),y)\ndefine LIBZLIB_RM_STATIC_STAGING\n\trm -f $(STAGING_DIR)/usr/lib/libz.a\nendef\nLIBZLIB_POST_INSTALL_STAGING_HOOKS += LIBZLIB_RM_STATIC_STAGING\nendif\n\ndefine HOST_LIBZLIB_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE1) -C $(@D) LDCONFIG=true install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/lightning/0001-include-Makefile.am-don-t-install-lightning.h-twice.patch",
    "content": "From 604c931bc673c507254a84c0f423c9ec8ce6e3a1 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 10 Oct 2019 20:36:46 +0200\nSubject: [PATCH] include/Makefile.am: don't install lightning.h twice\n\nCommit 17164ed32d8f3530153b9cad67a4399c65f24512 added lightning.h to\nnodist_include_HEADERS without removing it from include_HEADERS\n\nThis raises the following error on one of the buildroot autobuilders:\n/usr/bin/install -c -m 644 lightning.h '/home/test/autobuild/run/instance-3/output-1/target/usr/include'\n/usr/bin/install -c -m 644 lightning.h '/home/test/autobuild/run/instance-3/output-1/target/usr/include'\n/usr/bin/install: cannot create regular file `/home/test/autobuild/run/instance-3/output-1/target/usr/include/lightning.h': File exists\n\nFix this by removing lightning.h from include_HEADERS\n\nFixes:\n - http://autobuild.buildroot.org/results/05ebc75598627d2a08e08e194f51cb8464f97b95\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/Makefile.am | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/include/Makefile.am b/include/Makefile.am\nindex e754dd3..8f91594 100644\n--- a/include/Makefile.am\n+++ b/include/Makefile.am\n@@ -14,7 +14,6 @@\n # License for more details.\n #\n \n-include_HEADERS = lightning.h\n SUBDIRS =\t\t\\\n \tlightning\n \n-- \n2.23.0\n\n"
  },
  {
    "path": "package/lightning/Config.in",
    "content": "comment \"lightning needs a toolchain w/ dynamic library\"\n\tdepends on BR2_sparc || BR2_i386 || BR2_x86_64 || BR2_mips || \\\n\t\tBR2_mipsel || BR2_arm || BR2_powerpc || BR2_RISCV_64\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_LIGHTNING\n\tbool \"lightning\"\n\tdepends on BR2_sparc || BR2_i386 || BR2_x86_64 || BR2_mips || \\\n\t\tBR2_mipsel || BR2_arm || BR2_powerpc || BR2_RISCV_64\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  GNU lightning is a library that generates\n\t  assembly language code at run-time.\n\n\t  https://www.gnu.org/software/lightning/\n\nif BR2_PACKAGE_LIGHTNING\n\nconfig BR2_PACKAGE_LIGHTNING_DISASSEMBLER\n\tbool \"enable disassembler\"\n\tdepends on !BR2_nios2 # binutils\n\tdepends on BR2_USE_WCHAR # binutils\n\tselect BR2_PACKAGE_BINUTILS\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Enable the GNU lightning disassembler.\n\ncomment \"lightning disassembler needs a toolchain w/ wchar\"\n\tdepends on !BR2_nios2\n\tdepends on !BR2_USE_WCHAR\n\nendif\n"
  },
  {
    "path": "package/lightning/lightning.hash",
    "content": "# Locally computed\nsha256\ted856b866dc6f68678dc1151579118fab1c65fad687cf847fc2d94ca045efdc9\tlightning-2.1.3.tar.gz\nsha256\ta853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c\tCOPYING.LESSER\n"
  },
  {
    "path": "package/lightning/lightning.mk",
    "content": "################################################################################\n#\n# lightning\n#\n################################################################################\n\nLIGHTNING_VERSION = 2.1.3\nLIGHTNING_SITE = $(BR2_GNU_MIRROR)/lightning\nLIGHTNING_LICENSE = LGPL-3.0+\nLIGHTNING_LICENSE_FILES = COPYING.LESSER\nLIGHTNING_INSTALL_STAGING = YES\nLIGHTNING_CPE_ID_VENDOR = gnu\n# We're patching include/Makefile.am\nLIGHTNING_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_LIGHTNING_DISASSEMBLER),y)\nLIGHTNING_DEPENDENCIES += binutils zlib\nLIGHTNING_CONF_OPTS += --enable-disassembler\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lighttpd/0001-Fix-default-config-file.patch",
    "content": "Modify the default lighttpd configuration file to have one a starting conf\n\n  * Changed the log path to /var/log and logs filenames\n  * Disable IPv6\n  * Do not setuid to a user that doesn't exist on the system\n  * Change the network backend to writev since linux-sendfile fails on buildroot\n\nSigned-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>\nSigned-off-by: Simon Dawson <spdawson@gmail.com>\n[Gustavo: update for 1.4.37]\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura lighttpd-1.4.37.orig/doc/config/conf.d/access_log.conf lighttpd-1.4.37/doc/config/conf.d/access_log.conf\n--- lighttpd-1.4.37.orig/doc/config/conf.d/access_log.conf\t2015-09-01 14:38:48.684673663 -0300\n+++ lighttpd-1.4.37/doc/config/conf.d/access_log.conf\t2015-09-01 14:38:53.975855142 -0300\n@@ -9,7 +9,7 @@\n ##\n ## Default access log.\n ##\n-accesslog.filename          = log_root + \"/access.log\"\n+accesslog.filename          = log_root + \"/lighttpd-access.log\"\n \n ##\n ## The default format produces CLF compatible output.\ndiff -Nura lighttpd-1.4.37.orig/doc/config/lighttpd.conf lighttpd-1.4.37/doc/config/lighttpd.conf\n--- lighttpd-1.4.37.orig/doc/config/lighttpd.conf\t2015-09-01 14:38:48.684673663 -0300\n+++ lighttpd-1.4.37/doc/config/lighttpd.conf\t2015-09-01 14:39:40.256442492 -0300\n@@ -13,8 +13,8 @@\n ## if you add a variable here. Add the corresponding variable in the\n ## chroot example aswell.\n ##\n-var.log_root    = \"/var/log/lighttpd\"\n-var.server_root = \"/srv/www\"\n+var.log_root    = \"/var/log\"\n+var.server_root = \"/var/www\"\n var.state_dir   = \"/run\"\n var.home_dir    = \"/var/lib/lighttpd\"\n var.conf_dir    = \"/etc/lighttpd\"\n@@ -90,7 +90,7 @@\n ##\n ## Use IPv6?\n ##\n-server.use-ipv6 = \"enable\"\n+# server.use-ipv6 = \"enable\"\n \n ##\n ## bind to a specific IP\n@@ -101,8 +101,8 @@\n ## Run as a different username/groupname.\n ## This requires root permissions during startup. \n ##\n-server.username  = \"lighttpd\"\n-server.groupname = \"lighttpd\"\n+server.username  = \"www-data\"\n+server.groupname = \"www-data\"\n \n ##\n ## Enable lighttpd to serve requests on sockets received from systemd\n@@ -118,7 +118,7 @@\n ##\n ## Document root\n ##\n-server.document-root = server_root + \"/htdocs\"\n+server.document-root = server_root\n \n ##\n ## The value for the \"Server:\" response field.\n@@ -144,7 +144,7 @@\n ##\n ## Path to the error log file\n ##\n-server.errorlog             = log_root + \"/error.log\"\n+server.errorlog             = log_root + \"/lighttpd-error.log\"\n \n ##\n ## If you want to log to syslog you have to unset the \n@@ -195,7 +195,7 @@\n ## sendfile       - is recommended for small files.\n ## writev         - is recommended for sending many large files\n ##\n-server.network-backend = \"sendfile\"\n+server.network-backend = \"writev\"\n \n ##\n ## As lighttpd is a single-threaded server, its main resource limit is\n"
  },
  {
    "path": "package/lighttpd/Config.in",
    "content": "comment \"lighttpd needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_LIGHTTPD\n\tbool \"lighttpd\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  lighttpd a secure, fast, compliant and very flexible\n\t  web-server which has been optimized for high-performance\n\t  environments. It has a very low memory footprint compared to\n\t  other webservers and takes care of cpu-load. Its advanced\n\t  feature-set (FastCGI, CGI, Auth, Output-Compression,\n\t  URL-Rewriting and many more) make lighttpd the perfect\n\t  webserver-software for every server that is suffering load\n\t  problems.\n\n\t  https://www.lighttpd.net/\n\nif BR2_PACKAGE_LIGHTTPD\n\nconfig BR2_PACKAGE_LIGHTTPD_OPENSSL\n\tbool \"openssl support\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Enable OpenSSL support for lighttpd.\n\nconfig BR2_PACKAGE_LIGHTTPD_PAM\n\tbool \"pam authentication support\"\n\tdefault y\n\tdepends on BR2_PACKAGE_LINUX_PAM\n\thelp\n\t  Enable PAM authentication support for lighttpd.\n\nconfig BR2_PACKAGE_LIGHTTPD_ZLIB\n\tbool \"zlib support\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Enable zlib support for lighttpd mod_compress.\n\nconfig BR2_PACKAGE_LIGHTTPD_BZIP2\n\tbool \"bzip2 support\"\n\tselect BR2_PACKAGE_BZIP2\n\thelp\n\t  Enable bzip2 support for lighttpd mod_compress.\n\nconfig BR2_PACKAGE_LIGHTTPD_PCRE\n\tbool \"pcre support\"\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  Enable PCRE support. Needed to support mod_rewrite\n\nconfig BR2_PACKAGE_LIGHTTPD_WEBDAV\n\tbool \"webdav support\"\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  Enable webdav support. Needed to support mod_webdav\n\nconfig BR2_PACKAGE_LIGHTTPD_LUA\n\tbool \"lua support\"\n\tdepends on BR2_PACKAGE_LUA\n\thelp\n\t  Enable Lua support. Needed to support mod_magnet\n\nendif\n"
  },
  {
    "path": "package/lighttpd/S50lighttpd",
    "content": "#!/bin/sh\n#\n# Starts lighttpd.\n#\nNAME=lighttpd\nDAEMON=/usr/sbin/$NAME\nPID_FILE=\"/var/run/$NAME.pid\"\nCONF_FILE=\"/etc/$NAME/$NAME.conf\"\n\n[ -r /etc/default/$NAME ] && . /etc/default/$NAME\n\nstart() {\n\tprintf \"Starting lighttpd: \"\n\tstart-stop-daemon -S -q -p $PID_FILE --exec $DAEMON -- -f $CONF_FILE\n\techo \"OK\"\n}\nstop() {\n\tprintf \"Stopping lighttpd: \"\n\tstart-stop-daemon -K -q -p $PID_FILE\n\techo \"OK\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "package/lighttpd/lighttpd.hash",
    "content": "# From https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.61.sha256sum\nsha256  43f0d63d04a1b7c5b8aab07e0612e44ccad0afc0614bab784c5b019872363432  lighttpd-1.4.61.tar.xz\n# Locally calculated\nsha256  5c98cad2fbaf5c5e2562bcbab401a7c557c1bb1bac9914ecc63730925052fb13  COPYING\n"
  },
  {
    "path": "package/lighttpd/lighttpd.mk",
    "content": "################################################################################\n#\n# lighttpd\n#\n################################################################################\n\nLIGHTTPD_VERSION_MAJOR = 1.4\nLIGHTTPD_VERSION = $(LIGHTTPD_VERSION_MAJOR).61\nLIGHTTPD_SOURCE = lighttpd-$(LIGHTTPD_VERSION).tar.xz\nLIGHTTPD_SITE = http://download.lighttpd.net/lighttpd/releases-$(LIGHTTPD_VERSION_MAJOR).x\nLIGHTTPD_LICENSE = BSD-3-Clause\nLIGHTTPD_LICENSE_FILES = COPYING\nLIGHTTPD_CPE_ID_VENDOR = lighttpd\nLIGHTTPD_DEPENDENCIES = host-pkgconf\n# Issue in configure script provided in tarball\nLIGHTTPD_AUTORECONF = YES\nLIGHTTPD_CONF_OPTS = \\\n\t--without-wolfssl \\\n\t--libdir=/usr/lib/lighttpd \\\n\t--libexecdir=/usr/lib\n\nifeq ($(BR2_PACKAGE_LIGHTTPD_OPENSSL),y)\nLIGHTTPD_DEPENDENCIES += openssl\nLIGHTTPD_CONF_OPTS += --with-openssl\nelse\nLIGHTTPD_CONF_OPTS += --without-openssl\nendif\n\nifeq ($(BR2_PACKAGE_LIGHTTPD_PAM),y)\nLIGHTTPD_DEPENDENCIES += linux-pam\nLIGHTTPD_CONF_OPTS += --with-pam\nelse\nLIGHTTPD_CONF_OPTS += --without-pam\nendif\n\nifeq ($(BR2_PACKAGE_LIGHTTPD_ZLIB),y)\nLIGHTTPD_DEPENDENCIES += zlib\nLIGHTTPD_CONF_OPTS += --with-zlib\nelse\nLIGHTTPD_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_LIGHTTPD_BZIP2),y)\nLIGHTTPD_DEPENDENCIES += bzip2\nLIGHTTPD_CONF_OPTS += --with-bzip2\nelse\nLIGHTTPD_CONF_OPTS += --without-bzip2\nendif\n\nifeq ($(BR2_PACKAGE_LIGHTTPD_PCRE),y)\nLIGHTTPD_CONF_ENV = PCRECONFIG=$(STAGING_DIR)/usr/bin/pcre-config\nLIGHTTPD_DEPENDENCIES += pcre\nLIGHTTPD_CONF_OPTS += --with-pcre\nelse\nLIGHTTPD_CONF_OPTS += --without-pcre\nendif\n\nifeq ($(BR2_PACKAGE_LIGHTTPD_WEBDAV),y)\nLIGHTTPD_DEPENDENCIES += libxml2 sqlite\nLIGHTTPD_CONF_OPTS += --with-webdav-props\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)\nLIGHTTPD_CONF_OPTS += --with-webdav-locks\nLIGHTTPD_DEPENDENCIES += util-linux\nelse\nLIGHTTPD_CONF_OPTS += --without-webdav-locks\nendif\nelse\nLIGHTTPD_CONF_OPTS += --without-webdav-props --without-webdav-locks\nendif\n\nifeq ($(BR2_PACKAGE_LIGHTTPD_LUA),y)\nLIGHTTPD_DEPENDENCIES += lua\nLIGHTTPD_CONF_OPTS += --with-lua\nelse\nLIGHTTPD_CONF_OPTS += --without-lua\nendif\n\ndefine LIGHTTPD_INSTALL_CONFIG\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/lighttpd/conf.d\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/var/www\n\t$(INSTALL) -D -m 0644 $(@D)/doc/config/lighttpd.conf \\\n\t\t$(TARGET_DIR)/etc/lighttpd/lighttpd.conf\n\t$(INSTALL) -D -m 0644 $(@D)/doc/config/modules.conf \\\n\t\t$(TARGET_DIR)/etc/lighttpd/modules.conf\n\t$(INSTALL) -D -m 0644 $(@D)/doc/config/conf.d/access_log.conf \\\n\t\t$(TARGET_DIR)/etc/lighttpd/conf.d/access_log.conf\n\t$(INSTALL) -D -m 0644 $(@D)/doc/config/conf.d/debug.conf \\\n\t\t$(TARGET_DIR)/etc/lighttpd/conf.d/debug.conf\n\t$(INSTALL) -D -m 0644 $(@D)/doc/config/conf.d/dirlisting.conf \\\n\t\t$(TARGET_DIR)/etc/lighttpd/conf.d/dirlisting.conf\n\t$(INSTALL) -D -m 0644 $(@D)/doc/config/conf.d/mime.conf \\\n\t\t$(TARGET_DIR)/etc/lighttpd/conf.d/mime.conf\nendef\n\nLIGHTTPD_POST_INSTALL_TARGET_HOOKS += LIGHTTPD_INSTALL_CONFIG\n\ndefine LIGHTTPD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/lighttpd/S50lighttpd \\\n\t\t$(TARGET_DIR)/etc/init.d/S50lighttpd\nendef\n\ndefine LIGHTTPD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 $(@D)/doc/systemd/lighttpd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/lighttpd.service\n\t$(INSTALL) -D -m 644 package/lighttpd/lighttpd_tmpfiles.conf \\\n\t\t$(TARGET_DIR)/usr/lib/tmpfiles.d/lighttpd.conf\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lighttpd/lighttpd_tmpfiles.conf",
    "content": "f /var/log/lighttpd-access.log 0640 www-data www-data -\nf /var/log/lighttpd-error.log 0640 www-data www-data -\n"
  },
  {
    "path": "package/linenoise/Config.in",
    "content": "config BR2_PACKAGE_LINENOISE\n\tbool \"linenoise\"\n\thelp\n\t  A small self-contained alternative to readline and libedit\n\n\t  https://github.com/antirez/linenoise\n"
  },
  {
    "path": "package/linenoise/linenoise.hash",
    "content": "# Locally calculated\nsha256  f5054a4fe120d43d85427cf58af93e56b9bb80389d507a9bec9b75531a340014  linenoise-1.0.tar.gz\nsha256  efe1692aa5b869edaa0ac88f95eb0276c1125304ffc636a299db3ebbab47f62b  LICENSE\n"
  },
  {
    "path": "package/linenoise/linenoise.mk",
    "content": "################################################################################\n#\n# linenoise\n#\n################################################################################\n\nLINENOISE_VERSION = 1.0\nLINENOISE_SITE = $(call github,antirez,linenoise,$(LINENOISE_VERSION))\nLINENOISE_LICENSE = BSD-2-Clause\nLINENOISE_LICENSE_FILES = LICENSE\nLINENOISE_INSTALL_STAGING = YES\n# Static library only, nothing to install on target\nLINENOISE_INSTALL_TARGET = NO\n\ndefine LINENOISE_BUILD_CMDS\n\tcd $(@D); $(TARGET_CC) $(TARGET_CFLAGS) -c linenoise.c\n\tcd $(@D); $(TARGET_AR) rcu liblinenoise.a linenoise.o\n\tcd $(@D); $(TARGET_CC) $(TARGET_LDFLAGS) -o linenoise_example example.c -L. -llinenoise\nendef\n\ndefine LINENOISE_INSTALL_STAGING_CMDS\n\t$(INSTALL) -m 644 -D $(@D)/linenoise.h \\\n\t\t$(STAGING_DIR)/usr/include/linenoise.h\n\t$(INSTALL) -m 644 -D $(@D)/liblinenoise.a \\\n\t\t$(STAGING_DIR)/usr/lib/liblinenoise.a\n\t$(INSTALL) -m 755 -D $(@D)/linenoise_example \\\n\t\t$(STAGING_DIR)/usr/bin/linenoise_example\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/linknx/0001-configure-ac-tweak-CPPUNIT-conditional.patch",
    "content": "From 8e7da14647dada5eee8f583b0814bffb31d1b91e Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 21 Apr 2019 23:17:34 +0200\nSubject: [PATCH] configure.ac: tweak CPPUNIT conditional\n\nFollowing review of buildroot's patch\n(http://patchwork.ozlabs.org/patch/1088520), tweak CPPUNIT to move call\nto AM_CONDITIONAL outside condition\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/linknx/linknx/commit/8e7da14647dada5eee8f583b0814bffb31d1b91e]\n---\n configure.ac | 10 ++++------\n 1 file changed, 4 insertions(+), 6 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 51d8ae66..4d9d8efa 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -135,22 +135,20 @@ if test x\"$WITH_CPPUNIT\" != xno; then\n       AC_DEFINE([HAVE_CPPUNIT], [1], [cppunit])\n       AC_SUBST(CPPUNIT_CFLAGS)\n       AC_SUBST(CPPUNIT_LIBS)\n-      AM_CONDITIONAL(CPPUNIT, true)\n+      found_cppunit=yes\n     ],[\n       AC_MSG_RESULT([no])\n-      AM_CONDITIONAL(CPPUNIT, false)\n     ])\n   else\n     PKG_CHECK_MODULES(CPPUNIT, $CPPUNITPC >= 1.9.6, [\n       AC_DEFINE([HAVE_CPPUNIT], [1], [cppunit])\n       AC_SUBST(CPPUNIT_CFLAGS)\n       AC_SUBST(CPPUNIT_LIBS)\n-      AM_CONDITIONAL([CPPUNIT], true)\n-    ],[AM_CONDITIONAL([CPPUNIT], false)])\n+      found_cppunit=yes\n+    ])\n   fi\n-else\n-  AM_CONDITIONAL([CPPUNIT], false)\n fi\n+AM_CONDITIONAL([CPPUNIT], [test x\"$found_cppunit\" = xyes])\n \n dnl #########################################################################\n dnl Check if using log4cpp\n"
  },
  {
    "path": "package/linknx/0002-src-Makefile.am-fix-linking-with-log4cpp.patch",
    "content": "From 048b9ae8f3c07be217f1738c35ab995ab6394453 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 8 Mar 2020 10:02:07 +0100\nSubject: [PATCH] src/Makefile.am: fix linking with log4cpp\n\nlinknx fails to build with log4cpp because LOG4CPP_CFLAGS (which\ncontains -pthread) is added to AM_CPPFLAGS (which is not used at link\ntime) instead of AM_CXXFLAGS:\n\n/home/buildroot/autobuild/instance-0/output/host/bin/mipsel-linux-g++  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os     -o linknx linknx.o logger.o ruleserver.o objectcontroller.o eibclient.o threads.o timermanager.o persistentstorage.o xmlserver.o smsgateway.o emailgateway.o knxconnection.o services.o suncalc.o luacondition.o ioport.o ../ticpp/libticpp.a  -L/home/buildroot/autobuild/instance-0/output/host/mipsel-buildroot-linux-gnu/sysroot/usr/bin/../../usr/lib -lpthsem  -L/home/buildroot/autobuild/instance-0/output/host/bin/../mipsel-buildroot-linux-gnu/sysroot/usr/lib -llog4cpp     -lm\n/home/buildroot/autobuild/instance-0/output/host/mipsel-buildroot-linux-gnu/sysroot/usr/bin/../../usr/lib/liblog4cpp.so: undefined reference to `pthread_key_create'\n\nSo move LOG4CPP_CFLAGS to AM_CXXFLAGS\n\nFixes:\n - http://autobuild.buildroot.org/results/1863f8f27041bc15ca68e786ba3b8e4764c40574\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/linknx/linknx/commit/048b9ae8f3c07be217f1738c35ab995ab6394453]\n---\n src/Makefile.am | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/src/Makefile.am b/src/Makefile.am\nindex 6e0dc03b..5065c248 100644\n--- a/src/Makefile.am\n+++ b/src/Makefile.am\n@@ -6,6 +6,7 @@ else\n B64_CFLAGS=\n B64_LIBS=\n endif\n-AM_CPPFLAGS=-I$(top_srcdir)/include -I$(top_srcdir)/ticpp $(B64_CFLAGS) $(PTH_CPPFLAGS) $(LIBCURL_CPPFLAGS) $(LOG4CPP_CFLAGS) $(LUA_CFLAGS) $(MYSQL_CFLAGS) $(ESMTP_CFLAGS)\n+AM_CPPFLAGS=-I$(top_srcdir)/include -I$(top_srcdir)/ticpp $(B64_CFLAGS) $(PTH_CPPFLAGS) $(LIBCURL_CPPFLAGS) $(LUA_CFLAGS) $(MYSQL_CFLAGS) $(ESMTP_CFLAGS)\n+AM_CXXFLAGS=$(LOG4CPP_CFLAGS)\n linknx_LDADD=$(top_srcdir)/ticpp/libticpp.a $(LIBICONV) $(B64_LIBS) $(PTH_LDFLAGS) $(PTH_LIBS) $(LIBCURL) $(LOG4CPP_LIBS) $(LUA_LIBS) $(MYSQL_LIBS) $(ESMTP_LIBS) -lm\n linknx_SOURCES=linknx.cpp logger.cpp ruleserver.cpp objectcontroller.cpp eibclient.c threads.cpp timermanager.cpp  persistentstorage.cpp xmlserver.cpp smsgateway.cpp emailgateway.cpp knxconnection.cpp services.cpp suncalc.cpp  luacondition.cpp ioport.cpp ruleserver.h objectcontroller.h threads.h timermanager.h persistentstorage.h xmlserver.h smsgateway.h emailgateway.h knxconnection.h services.h suncalc.h luacondition.h ioport.h logger.h\n"
  },
  {
    "path": "package/linknx/Config.in",
    "content": "config BR2_PACKAGE_LINKNX\n\tbool \"linknx\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU # libpthsem\n\tselect BR2_PACKAGE_LIBPTHSEM\n\tselect BR2_PACKAGE_ARGP_STANDALONE \\\n\t       if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Linknx is an automation platform providing high level\n\t  functionalities to EIB/KNX installation.\n\n\t  http://linknx.sourceforge.net/\n\t  https://github.com/linknx/linknx\n\ncomment \"linknx needs a toolchain w/ C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/linknx/linknx.hash",
    "content": "# Locally computed:\nsha256  00c53776c2e871295459ede922402d8ad0208367d2364781fdb92ddafad94d3d  linknx-0.0.1.38.tar.gz\nsha256  c03cea027b4b40e4402fabd08557736727ec3d5bc54ad64ab6472de432198cad  LICENSE\n"
  },
  {
    "path": "package/linknx/linknx.mk",
    "content": "################################################################################\n#\n# linknx\n#\n################################################################################\n\nLINKNX_VERSION = 0.0.1.38\nLINKNX_SITE = $(call github,linknx,linknx,$(LINKNX_VERSION))\nLINKNX_LICENSE = GPL-2.0+\nLINKNX_LICENSE_FILES = LICENSE\nLINKNX_INSTALL_STAGING = YES\n# We're patching configure.ac\nLINKNX_AUTORECONF = YES\nLINKNX_CONF_OPTS = \\\n\t--without-cppunit \\\n\t--without-pth-test \\\n\t--with-pth=$(STAGING_DIR)/usr \\\n\t--disable-smtp\n\n# add host-gettext for AM_ICONV macro\nLINKNX_DEPENDENCIES = \\\n\thost-gettext \\\n\thost-pkgconf \\\n\tlibpthsem \\\n\t$(if $(BR2_PACKAGE_ARGP_STANDALONE),argp-standalone) \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nLINKNX_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr\nLINKNX_DEPENDENCIES += libcurl\nelse\nLINKNX_CONF_OPTS += --without-libcurl\nendif\n\nifeq ($(BR2_PACKAGE_LOG4CPP),y)\nLINKNX_CONF_OPTS += --with-log4cpp\nLINKNX_DEPENDENCIES += log4cpp\nelse\nLINKNX_CONF_OPTS += --without-log4cpp\nendif\n\nifeq ($(BR2_PACKAGE_LUA),y)\nLINKNX_CONF_OPTS += --with-lua\nLINKNX_DEPENDENCIES += lua\nelse\nLINKNX_CONF_OPTS += --without-lua\nendif\n\nifeq ($(BR2_PACKAGE_MYSQL),y)\nLINKNX_CONF_OPTS += --with-mysql=$(STAGING_DIR)/usr\nLINKNX_DEPENDENCIES += mysql\nelse\nLINKNX_CONF_OPTS += --without-mysql\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/links/Config.in",
    "content": "config BR2_PACKAGE_LINKS\n\tbool \"links\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Graphics and text mode WWW browser (kind of like lynx).\n\n\t  http://links.twibright.com/\n\nif BR2_PACKAGE_LINKS\n\nconfig BR2_PACKAGE_LINKS_GRAPHICS\n\tbool \"use graphics\"\n\tdepends on BR2_PACKAGE_GPM || BR2_PACKAGE_DIRECTFB || BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXT if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  Enable graphics output for framebuffer, DirectFB or X11.\n\t  Framebuffer output requires GPM (console mouse).\n\t  Otherwise links will be text-mode only.\n\ncomment \"links graphics needs GPM, DirectFB or X11\"\n\tdepends on !BR2_PACKAGE_GPM && !BR2_PACKAGE_DIRECTFB && !BR2_PACKAGE_XORG7\n\nendif\n"
  },
  {
    "path": "package/links/links.hash",
    "content": "# Locally calculated\nsha256  2dd78508698e8279ef4f09a3a2a21e9595040113402da6c553974414fb49dd2c  links-2.25.tar.bz2\nsha256  92deeb70791366630095d4e0714fe37d6e2bd5db0e6ef498ebb8de328f45b253  COPYING\n"
  },
  {
    "path": "package/links/links.mk",
    "content": "################################################################################\n#\n# links\n#\n################################################################################\n\nLINKS_VERSION = 2.25\nLINKS_SOURCE = links-$(LINKS_VERSION).tar.bz2\nLINKS_SITE = http://links.twibright.com/download\nLINKS_DEPENDENCIES = host-pkgconf\nLINKS_LICENSE = GPL-2.0+\nLINKS_LICENSE_FILES = COPYING\nLINKS_CPE_ID_VENDOR = twibright\n\nifeq ($(BR2_PACKAGE_LINKS_GRAPHICS),y)\nLINKS_CONF_OPTS += --enable-graphics\nLINKS_DEPENDENCIES += libpng\nifeq ($(BR2_PACKAGE_XLIB_LIBXT),y)\nLINKS_CONF_OPTS += \\\n\t--with-x \\\n\t--x-includes=$(STAGING_DIR)/usr/include \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib\nLINKS_DEPENDENCIES += xlib_libXt\nelse\nLINKS_CONF_OPTS += --without-x\nendif\nifeq ($(BR2_PACKAGE_DIRECTFB),y)\nLINKS_CONF_ENV = ac_cv_path_DIRECTFB_CONFIG=$(STAGING_DIR)/usr/bin/directfb-config\nifeq ($(BR2_STATIC_LIBS),y)\nLINKS_CONF_ENV += LIBS=-lstdc++\nendif\nLINKS_CONF_OPTS += --with-directfb\nLINKS_DEPENDENCIES += directfb\nelse\nLINKS_CONF_OPTS += --without-directfb\nendif\nifeq ($(BR2_PACKAGE_JPEG),y)\nLINKS_CONF_OPTS += --with-libjpeg\nLINKS_DEPENDENCIES += jpeg\nelse\nLINKS_CONF_OPTS += --without-libjpeg\nendif\nifeq ($(BR2_PACKAGE_LIBRSVG),y)\nLINKS_CONF_OPTS += --with-librsvg\nLINKS_DEPENDENCIES += librsvg\nelse\nLINKS_CONF_OPTS += --without-librsvg\nendif\nifeq ($(BR2_PACKAGE_TIFF),y)\nLINKS_CONF_OPTS += --with-libtiff\nLINKS_DEPENDENCIES += tiff\nelse\nLINKS_CONF_OPTS += --without-libtiff\nendif\nelse\nLINKS_CONF_OPTS += --disable-graphics\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nLINKS_CONF_OPTS += --with-bzip2\nLINKS_DEPENDENCIES += bzip2\nelse\nLINKS_CONF_OPTS += --without-bzip2\nendif\n\nifeq ($(BR2_PACKAGE_GPM),y)\nLINKS_CONF_OPTS += --with-gpm\nLINKS_DEPENDENCIES += gpm\nelse\nLINKS_CONF_OPTS += --without-gpm\nendif\n\nifeq ($(BR2_PACKAGE_LIBEVENT),y)\nLINKS_CONF_OPTS += --with-libevent\nLINKS_DEPENDENCIES += libevent\nelse\nLINKS_CONF_OPTS += --without-libevent\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLINKS_CONF_OPTS += --with-ssl --enable-ssl-pkgconfig\nLINKS_DEPENDENCIES += openssl\nelse\nLINKS_CONF_OPTS += --without-ssl\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nLINKS_CONF_OPTS += --with-lzma\nLINKS_DEPENDENCIES += xz\nelse\nLINKS_CONF_OPTS += --without-lzma\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLINKS_CONF_OPTS += --with-zlib\nLINKS_DEPENDENCIES += zlib\nelse\nLINKS_CONF_OPTS += --without-zlib\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/linphone/0001-src-core-paths-paths.cpp-fix-powerpc-build.patch",
    "content": "From d5d528e7562f358b9564e64cea0678020c51479a Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 15 Mar 2020 18:56:19 +0100\nSubject: [PATCH] src/core/paths/paths.cpp: fix powerpc build\n\nFix the following build failure on powerpc:\n\n/home/test/autobuild/run/instance-2/output-1/build/linphone-4.3.1/src/core/paths/paths.cpp:32:3: error: #error \"Unsupported system.\"\n  #error \"Unsupported system.\"\n   ^~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/d90bca02c2771df8dfbf39892d529fb5f9069656\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/core/paths/paths.cpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/core/paths/paths.cpp b/src/core/paths/paths.cpp\nindex 0442282fe..2c6508a51 100644\n--- a/src/core/paths/paths.cpp\n+++ b/src/core/paths/paths.cpp\n@@ -26,7 +26,7 @@\n \t#include \"paths-android.h\"\n #elif defined(_WIN32)\n \t#include \"paths-windows.h\"\n-#elif defined(__linux)\n+#elif defined(__linux) || defined(__linux__)\n \t#include \"paths-linux.h\"\n #else\n \t#error \"Unsupported system.\"\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/linphone/Config.in",
    "content": "config BR2_PACKAGE_LINPHONE\n\tbool \"linphone\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # belle-sip, mediastreamer\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # belr, belle-sip, mediastreamer\n\t# belr, belle-sip, mediastreamer\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\tdepends on BR2_USE_WCHAR # belle-sip\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # mediastreamer\n\tselect BR2_PACKAGE_BELLE_SIP\n\tselect BR2_PACKAGE_BELR\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_MEDIASTREAMER\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  Linphone is an internet phone or Voice Over IP phone (VoIP).\n\n\t  With linphone you can communicate freely with people over\n\t  the internet, with voice, video, and text instant messaging.\n\t  Linphone makes use of the SIP protocol, an open standard\n\t  for internet telephony. You can use Linphone with any SIP\n\t  VoIP operator, including our free SIP audio/video service.\n\t  linphone is free-software (or open-source), you can download\n\t  and redistribute it freely.\n\t  Linphone is available for desktop computers: Linux, Windows,\n\t  MacOSX, and for mobile phones: Android, iPhone, Blackberry.\n\n\t  Linphone support in Buildroot is limited to the commandline\n\t  client, linphonec, and video support is not enabled.\n\n\t  http://www.linphone.org/\n\ncomment \"linphone needs a toolchain w/ threads, C++, dynamic library, wchar, gcc >= 5\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\ncomment \"linphone needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/linphone/linphone.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  9956f6785a787041328da000cee5fcc1e41d6f17956ffe5e0402fac0f9a9676b  linphone-4.4.8.tar.gz\n# Locally computed\nsha256  1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68  LICENSE.txt\n"
  },
  {
    "path": "package/linphone/linphone.mk",
    "content": "################################################################################\n#\n# linphone\n#\n################################################################################\n\nLINPHONE_VERSION = 4.4.8\nLINPHONE_SITE = \\\n\thttps://gitlab.linphone.org/BC/public/liblinphone/-/archive/$(LINPHONE_VERSION)\nLINPHONE_CONF_OPTS = \\\n\t-DENABLE_ADVANCED_IM=OFF \\\n\t-DENABLE_CXX_WRAPPER=OFF \\\n\t-DENABLE_DB_STORAGE=OFF \\\n\t-DENABLE_LIME=OFF \\\n\t-DENABLE_LIME_X3DH=OFF \\\n\t-DENABLE_STRICT=OFF \\\n\t-DENABLE_TOOLS=OFF \\\n\t-DENABLE_TUTORIALS=OFF \\\n\t-DENABLE_UNIT_TESTS=OFF \\\n\t-DENABLE_VCARD=OFF \\\n\t-DENABLE_VIDEO=OFF \\\n\t-DGIT_EXECUTABLE=OFF\nLINPHONE_INSTALL_STAGING = YES\nLINPHONE_DEPENDENCIES = \\\n\tbelle-sip \\\n\tbelr \\\n\tlibxml2 \\\n\tmediastreamer \\\n\tsqlite \\\n\t$(if $(BR2_PACKAGE_ZLIB),zlib)\nLINPHONE_LICENSE = GPL-3.0+\nLINPHONE_LICENSE_FILES = LICENSE.txt\n\nifeq ($(BR2_STATIC_LIBS),y)\nLINPHONE_CONF_OPTS += -DENABLE_STATIC=ON -DENABLE_SHARED=OFF\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nLINPHONE_CONF_OPTS += -DENABLE_STATIC=ON -DENABLE_SHARED=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nLINPHONE_CONF_OPTS += -DENABLE_STATIC=OFF -DENABLE_SHARED=ON\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/linux-backports/Config.in",
    "content": "comment \"linux-backports needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_LINUX_BACKPORTS\n\tbool \"linux-backports\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  The linux-backports package includes many Linux drivers from\n\t  recent kernels, backported to older ones.\n\n\t  This version of linux-backports supports kernels starting\n\t  from 3.10.\n\n\t  https://backports.wiki.kernel.org\n\nif BR2_PACKAGE_LINUX_BACKPORTS\n\nchoice\n\tprompt \"Linux kernel driver backports configuration\"\n\tdefault BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG\n\nconfig BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG\n\tbool \"Using an in-tree defconfig file\"\n\nconfig BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG\n\tbool \"Using a custom (def)config file\"\n\nendchoice\n\nconfig BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG\n\tstring \"Defconfig name\"\n\tdepends on BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG\n\thelp\n\t  Name of the backports defconfig file to use, without the\n\t  leading defconfig-. The defconfig is located in defconfigs/\n\t  directory in the backports tree.\n\nconfig BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE\n\tstring \"Configuration file path\"\n\tdepends on BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG\n\thelp\n\t  Path to the backports configuration file\n\n\t  Note: this can be a defconfig file or a complete .config\n\t  file, which can later be saved back with make\n\t  linux-update-(def)config.\n\nconfig BR2_PACKAGE_LINUX_BACKPORTS_CONFIG_FRAGMENT_FILES\n\tstring \"Additional configuration fragment files\"\n\thelp\n\t  A space-separated list of configuration fragment files, that\n\t  will be merged to the main linux-backports configuration file.\n\nendif # BR2_PACKAGE_LINUX_BACKPORTS\n"
  },
  {
    "path": "package/linux-backports/linux-backports.hash",
    "content": "# From: https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v5.8/sha256sums.asc\nsha256  19b4174d89bf11ee221458e11f1e8dace26558498774b823051156f522d2036b  backports-5.8-1.tar.xz\n# Locally computed\nsha256  fb5a425bd3b3cd6071a3a9aff9909a859e7c1158d54d32e07658398cd67eb6a0  COPYING\nsha256  8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f  LICENSES/exceptions/Linux-syscall-note\nsha256  f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79  LICENSES/preferred/GPL-2.0\n"
  },
  {
    "path": "package/linux-backports/linux-backports.mk",
    "content": "################################################################################\n#\n# linux-backports\n#\n################################################################################\n\nLINUX_BACKPORTS_VERSION_MAJOR = 5.8\nLINUX_BACKPORTS_VERSION = $(LINUX_BACKPORTS_VERSION_MAJOR)-1\nLINUX_BACKPORTS_SOURCE = backports-$(LINUX_BACKPORTS_VERSION).tar.xz\nLINUX_BACKPORTS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/projects/backports/stable/v$(LINUX_BACKPORTS_VERSION_MAJOR)\nLINUX_BACKPORTS_LICENSE = GPL-2.0\nLINUX_BACKPORTS_LICENSE_FILES = \\\n\tCOPYING \\\n\tLICENSES/exceptions/Linux-syscall-note \\\n\tLICENSES/preferred/GPL-2.0\n\n# flex and bison are needed to generate kconfig parser. We use the\n# same logic as the linux kernel (we add host dependencies only if\n# host does not have them). See linux/linux.mk and\n# support/dependencies/check-host-bison-flex.mk.\nLINUX_BACKPORTS_DEPENDENCIES = \\\n\t$(BR2_BISON_HOST_DEPENDENCY) \\\n\t$(BR2_FLEX_HOST_DEPENDENCY)\n\nifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG),y)\nLINUX_BACKPORTS_KCONFIG_FILE = $(LINUX_BACKPORTS_DIR)/defconfigs/$(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG))\nelse ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG),y)\nLINUX_BACKPORTS_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE))\nendif\n\nLINUX_BACKPORTS_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CONFIG_FRAGMENT_FILES))\nLINUX_BACKPORTS_KCONFIG_OPTS = $(LINUX_BACKPORTS_MAKE_OPTS)\n\n# linux-backports' build system expects the config options to be present\n# in the environment, and it is so when using their custom buildsystem,\n# because they are set in the main Makefile, which then calls a second\n# Makefile.\n#\n# In our case, we do not use that first Makefile. So, we parse the\n# .config file, filter-out comment lines and put the rest as command\n# line variables.\n#\n# LINUX_BACKPORTS_MAKE_OPTS is used by the kconfig-package infra, while\n# LINUX_BACKPORTS_MODULE_MAKE_OPTS is used by the kernel-module infra.\n#\nLINUX_BACKPORTS_MAKE_OPTS = \\\n\tLEX=flex \\\n\tYACC=bison \\\n\tBACKPORT_DIR=$(@D) \\\n\tKLIB_BUILD=$(LINUX_DIR) \\\n\tKLIB=$(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED) \\\n\tINSTALL_MOD_DIR=backports \\\n\t`sed -r -e '/^\\#/d;' $(@D)/.config`\n\nLINUX_BACKPORTS_MODULE_MAKE_OPTS = $(LINUX_BACKPORTS_MAKE_OPTS)\n\n# This file is not automatically generated by 'oldconfig' that we use in\n# the kconfig-package infrastructure. In the linux buildsystem, it is\n# generated by running silentoldconfig, but that's not the case for\n# linux-backports: it uses a hand-crafted rule to generate that file.\ndefine LINUX_BACKPORTS_KCONFIG_FIXUP_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LINUX_BACKPORTS_MAKE_OPTS) backport-include/backport/autoconf.h\nendef\n\n# Checks to give errors that the user can understand\nifeq ($(BR_BUILDING),y)\n\nifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG),y)\nifeq ($(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG)),)\n$(error No linux-backports defconfig name specified, check your BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG setting)\nendif\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG),y)\nifeq ($(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE)),)\n$(error No linux-backports configuration file specified, check your BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE setting)\nendif\nendif\n\nendif # BR_BUILDING\n\n$(eval $(kernel-module))\n$(eval $(kconfig-package))\n\n# linux-backports' own .config file needs options from the kernel's own\n# .config file. The dependencies handling in the infrastructure does not\n# allow to express this kind of dependencies. Besides, linux.mk might\n# not have been parsed yet, so the Linux build dir LINUX_DIR is not yet\n# known. Thus, we use a \"secondary expansion\" so the rule is re-evaluated\n# after all Makefiles are parsed, and thus at that time we will have the\n# LINUX_DIR variable set to the proper value. Moreover, since linux-4.19,\n# the kernel's build system internally touches its .config file, so we\n# can't use it as a stamp file. We use the LINUX_KCONFIG_STAMP_DOTCONFIG\n# instead.\n#\n# Furthermore, we want to check the kernel version, since linux-backports\n# only supports kernels >= 3.10. To avoid overriding linux-backports'\n# KCONFIG_STAMP_DOTCONFIG rule defined in the kconfig-package infra, we\n# use an intermediate stamp-file.\n#\n# Finally, it must also come after the call to kconfig-package, so we get\n# LINUX_BACKPORTS_DIR properly defined (because the target part of the\n# rule is not re-evaluated).\n#\n$(LINUX_BACKPORTS_DIR)/$(LINUX_BACKPORTS_KCONFIG_STAMP_DOTCONFIG): $(LINUX_BACKPORTS_DIR)/.stamp_check_kernel_version\n\n.SECONDEXPANSION:\n$(LINUX_BACKPORTS_DIR)/.stamp_check_kernel_version: $$(LINUX_DIR)/$$(LINUX_KCONFIG_STAMP_DOTCONFIG)\n\t$(Q)KVER=$(LINUX_VERSION_PROBED); \\\n\tKVER_MAJOR=`echo $${KVER} | sed 's/^\\([0-9]*\\)\\..*/\\1/'`; \\\n\tKVER_MINOR=`echo $${KVER} | sed 's/^[0-9]*\\.\\([0-9]*\\).*/\\1/'`; \\\n\tif [ $${KVER_MAJOR} -lt 3 -o \\( $${KVER_MAJOR} -eq 3 -a $${KVER_MINOR} -lt 10 \\) ]; then \\\n\t\tprintf \"Linux version '%s' is too old for linux-backports (needs 3.10 or later)\\n\" \\\n\t\t\t\"$${KVER}\"; \\\n\t\texit 1; \\\n\tfi\n\t$(Q)touch $(@)\n"
  },
  {
    "path": "package/linux-firmware/Config.in",
    "content": "config BR2_PACKAGE_LINUX_FIRMWARE\n\tbool \"linux-firmware\"\n\thelp\n\t  This package provides various binary firmware files (closed\n\t  binary blobs) for such devices like LAN, WLAN cards etc.\n\n\t  https://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git\n\nif BR2_PACKAGE_LINUX_FIRMWARE\n\nmenu \"Audio firmware\"\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_INTEL_SST_DSP\n\tbool \"Intel SST DSP\"\n\thelp\n\t  Firmware files for Intel Baytrail SST DSP audio.\n\nendmenu # Audio\n\nmenu \"Video firmware\"\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_AMDGPU\n\tbool \"AMD GPU video card firmware\"\n\thelp\n\t  Firmware files for AMD GPU video cards.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_I915\n\tbool \"Intel i915 video card firmware\"\n\thelp\n\t  Firmware files for the Intel i915 video cards.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_RADEON\n\tbool \"AMD Radeon video card firmware\"\n\thelp\n\t  Firmware files for AMD Radeon video cards.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_QCOM_VENUS\n\tbool \"Qualcomm Venus video codec accelerator\"\n\thelp\n\t  Firmware files for Qualcomm Venus video codec accelerator\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_QCOM_ADRENO\n\tbool \"Qualcomm Adreno GPU firmware\"\n\thelp\n\t  Firmware files for Qualcomm Adreno GPU firmware\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MFC_V8\n\tbool \"Samsung MFC video encoder/decoder v8 firmware\"\n\thelp\n\t  Firmware files for Samsung MFC video encoder/decoder driver v8\n\nendmenu # Video\n\nmenu \"Bluetooth firmware\"\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IBT\n\tbool \"Intel Wireless Bluetooth\"\n\thelp\n\t  Firmware files for Intel 3160/7260/7265/8260/8265 Wireless\n\t  bluetooth support.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7650\n\tbool \"MediaTek MT7650\"\n\thelp\n\t  Firmware files for MediaTek MT7650 bluetooth support\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174A_BT\n\tbool \"Qualcomm Atheros Rome 6174A Bluetooth\"\n\thelp\n\t  Firmware files for QCA Rome 6174A bluetooth support.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_AR3011\n\tbool \"Qualcomm Atheros 3011\"\n\thelp\n\t  Firmware files for Atheros bluetooth chipset AR3011.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_AR3012_USB\n\tbool \"Qualcomm Atheros 3012 (USB)\"\n\thelp\n\t  Firmware files for Atheros bluetooth chipset AR3012 on USB.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT\n\tbool \"Realtek 87xx Bluetooth\"\n\thelp\n\t  Realtek 8723a/8723b/8723bs/8723d/8723ds/8761a\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX_BT\n\tbool \"Realtek 88xx Bluetooth\"\n\thelp\n\t  Realtek 8821a/8821c/8822b/8822cs/8822cu/8852au\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_TI_CC2560\n\tbool \"TI CC2560\"\n\thelp\n\t  Firmware files for Bluetooth modules CC2560 and CC2560A\n\nendmenu # Bluetooth\n\nmenu \"WiFi firmware\"\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002\n\tbool \"Atheros 6002\"\n\thelp\n\t  Firmware files for the Atheros AR6002 chip\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003\n\tbool \"Atheros 6003\"\n\thelp\n\t  Firmware files for the Atheros AR6003 chip\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004\n\tbool \"Atheros 6004\"\n\thelp\n\t  Firmware files for the Atheros AR6004 chip\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010\n\tbool \"Atheros 7010\"\n\thelp\n\t  Firmware files for the Atheros 7010 module\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170\n\tbool \"Atheros 9170\"\n\thelp\n\t  Firmware files for the Atheros 9170 module\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271\n\tbool \"Atheros 9271\"\n\thelp\n\t  Firmware files for the Atheros 9271 module\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA9377\n\tbool \"Atheros 10k (QCA9377)\"\n\thelp\n\t  Firmware files for the Atheros QCA9377 module\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA998X\n\tbool \"Atheros 10k (QCA998X)\"\n\thelp\n\t  Firmware files for the Atheros QCA988X module\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX\n\tbool \"Broadcom BRCM bcm43xx\"\n\thelp\n\t  Firmware files for the Broadcom bcm43xx SoftMAC and FullMAC.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX\n\tbool \"Broadcom BRCM bcm43xxx\"\n\thelp\n\t  Firmware files for the Broadcom bcm43xxx, SoftMAC and FullMAC.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM4366B1\n\tbool \"Broadcom 4366b1\"\n\thelp\n\t  Firmware file for the Broadcom 4366b1 FullMAC chip.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM4366C0\n\tbool \"Broadcom 4366c0\"\n\thelp\n\t  Firmware file for the Broadcom 4366c0 FullMAC chip.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22260\n\tbool \"Intel iwlwifi 22260\"\n\thelp\n\t  Firmware files for the Intel Wifi 22260 devices supported by\n\t  the iwlwifi kernel driver.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160\n\tbool \"Intel iwlwifi 3160\"\n\thelp\n\t  Firmware files for the Intel Wifi 3160 devices supported by\n\t  the iwlwifi kernel driver.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168\n\tbool \"Intel iwlwifi 3168\"\n\thelp\n\t  Firmware files for the Intel Wifi 3168 devices supported by\n\t  the iwlwifi kernel driver.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000\n\tbool \"Intel iwlwifi 5000\"\n\thelp\n\t  Firmware files for the Intel Wifi 5000 devices supported by\n\t  the iwlwifi kernel driver.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A\n\tbool \"Intel iwlwifi 6000G2A\"\n\thelp\n\t  Firmware files for the Intel Wifi 6000G2A devices supported by\n\t  the iwlwifi kernel driver.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B\n\tbool \"Intel iwlwifi 6000G2B\"\n\thelp\n\t  Firmware files for the Intel Wifi 6000G2B devices supported by\n\t  the iwlwifi kernel driver.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260\n\tbool \"Intel iwlwifi 7260\"\n\thelp\n\t  Firmware files for the Intel Wifi 7260 devices supported by\n\t  the iwlwifi kernel driver.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265\n\tbool \"Intel iwlwifi 7265\"\n\thelp\n\t  Firmware files for the Intel Wifi 7265 devices supported by\n\t  the iwlwifi kernel driver.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D\n\tbool \"Intel iwlwifi 7265D\"\n\t# needed for old kernel versions, where the non-D and D\n\t# firmwares were the same\n\tselect BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265\n\thelp\n\t  Firmware files for the Intel Wifi 7265D devices supported by\n\t  the iwlwifi kernel driver.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C\n\tbool \"Intel iwlwifi 8000C\"\n\thelp\n\t  Firmware files for the Intel Wifi 8000C devices supported by\n\t  the iwlwifi kernel driver.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265\n\tbool \"Intel iwlwifi 8265\"\n\thelp\n\t  Firmware files for the Intel Wifi 8265 devices supported by\n\t  the iwlwifi kernel driver.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9XXX\n\tbool \"Intel iwlwifi 9xxx\"\n\thelp\n\t  Firmware files for the Intel Wifi 9xxx devices supported by\n\t  the iwlwifi kernel driver.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8\n\tbool \"Libertas SD 8686 v8\"\n\thelp\n\t  Firmware files (version 8) for the Marvell SD8686 module\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9\n\tbool \"Libertas SD 8686 v9\"\n\thelp\n\t  Firmware files (version 9) for the Marvell SD8686 module\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688\n\tbool \"Libertas SD 8688\"\n\thelp\n\t  Firmware files for the Marvell SD8688 module\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB8388_V9\n\tbool \"Libertas USB 8388 v9\"\n\thelp\n\t  Firmware files (version 9) for the Marvell USB8388 module\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB8388_OLPC\n\tbool \"Libertas USB 8388 OLPC\"\n\thelp\n\t  Firmware files (OLPC mesh capable version) for the Marvell\n\t  USB8388 module.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB_THINFIRM\n\tbool \"Libertas USB Thin Firmware\"\n\thelp\n\t  Firmware files (soft MAC) for the Marvell USB modules\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787\n\tbool \"Marvell Wifi-Ex 8787 SDIO\"\n\thelp\n\t  Firmware files for the Marvell Wifi-Ex 8787 module on SDIO.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797\n\tbool \"Marvell Wifi-Ex 8797 SDIO\"\n\thelp\n\t  Firmware files for the Marvell Wifi-Ex 8797 module on SDIO.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797\n\tbool \"Marvell Wifi-Ex 8797 USB\"\n\thelp\n\t  Firmware files for the Marvell Wifi-Ex 8797 module on USB.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801\n\tbool \"Marvell Wifi-Ex 8801 USB\"\n\thelp\n\t  Firmware files for the Marvell Wifi-Ex 8801 module on USB.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887\n\tbool \"Marvell Wifi-Ex 8887 SDIO\"\n\thelp\n\t  Firmware files for the Marvell Wifi-Ex 8887 module on SDIO.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897\n\tbool \"Marvell Wifi-Ex 8897 SDIO\"\n\thelp\n\t  Firmware files for the Marvell Wifi-Ex 8897 module on SDIO.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897\n\tbool \"Marvell Wifi-Ex 8897 USB\"\n\thelp\n\t  Firmware files for the Marvell Wifi-Ex 8897 module on USB.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897\n\tbool \"Marvell Wifi-Ex 8897 PCI-E\"\n\thelp\n\t  Firmware files for the Marvell Wifi-Ex 8897 module on PCI-E.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIEUART8997\n\tbool \"Marvell Wifi-Ex 8997 PCI-E/UART\"\n\thelp\n\t  Firmware files for the Marvell Wifi-Ex 8997 module on\n\t  PCI-E/UART.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIEUSB8997\n\tbool \"Marvell Wifi-Ex 8997 PCI-E/USB\"\n\thelp\n\t  Firmware files for the Marvell Wifi-Ex 8997 module on\n\t  PCI-E/USB.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U\n\tbool \"MediaTek MT7601U\"\n\thelp\n\t  MediaTek MT7601U\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7610E\n\tbool \"MediaTek MT7610E\"\n\thelp\n\t  MediaTek MT7610E\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT76X2E\n\tbool \"MediaTek MT76x2e\"\n\thelp\n\t  MediaTek MT76x2e\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174\n\tbool \"Qualcomm Atheros 6174\"\n\thelp\n\t  Firmware files for the Qualcomm Atheros QCA6174 chip\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61\n\tbool \"Ralink rt2501/rt61\"\n\thelp\n\t  Ralink rt2501/rt61\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73\n\tbool \"Ralink rt73\"\n\thelp\n\t  Ralink rt73\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX\n\tbool \"Ralink rt27xx/rt28xx/rt30xx\"\n\thelp\n\t  Ralink rt27xx/rt28xx/rt30xx\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX\n\tbool \"Realtek 81xx\"\n\thelp\n\t  Realtek 8188/8192\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX\n\tbool \"Realtek 87xx\"\n\thelp\n\t  Realtek 8712/8723/8723be\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX\n\tbool \"Realtek 88xx\"\n\thelp\n\t  Realtek rtl8821ae\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_RTL_RTW88\n\tbool \"Realtek rtw88\"\n\thelp\n\t  Firmware images supported by Realtek's wireless\n\t  driver rtw88.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9113\n\tbool \"Redpine rs9113\"\n\thelp\n\t  Firmware files for WLAN and Bluetooth modules rs9113\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X\n\tbool \"TI wl127x\"\n\thelp\n\t  Firmware files for WLAN and Bluetooth modules wl1271 and\n\t  wl1273\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X\n\tbool \"TI wl128x\"\n\thelp\n\t  Firmware files for WLAN and Bluetooth modules wl128x\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX\n\tbool \"TI wl18xx\"\n\thelp\n\t  Firmware files for WLAN and Bluetooth modules wl18xx\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_WIL6210\n\tbool \"Qualcomm Atheros wil6210\"\n\thelp\n\t  Firmware files for Qualcomm Atheros 11ad family of chips\n\nendmenu\n\nmenu \"Ethernet firmware\"\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_BROADCOM_TIGON3\n\tbool \"Broadcom NetXtreme/Tigon3\"\n\thelp\n\t  Firmware files for Broadcom Tigon3 ethernet cards\n\t  (tigon)\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_BNX2X\n\tbool \"Broadcom NetXtremeII\"\n\thelp\n\t  Firmware files for Broadcom NetXtreme 10Gb ethernet cards\n\t  (bnx2x)\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4\n\tbool \"Chelsio T4\"\n\thelp\n\t  Firmware files for Chelsio T4 1Gb and 10Gb ethernet cards\n\t  (cxgb4)\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5\n\tbool \"Chelsio T5\"\n\thelp\n\t  Firmware files for Chelsio T5 1Gb and 10Gb ethernet cards\n\t  (cxgb4)\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_INTEL_E100\n\tbool \"Intel e100 825xx\"\n\thelp\n\t  Firmware files for Intel 825xx handled by driver e100\n\t  (e100)\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_MICROCHIP_VSC85XX_PHY\n\tbool \"Microchip VSC85xx PHYs\"\n\thelp\n\t  Firmware files for Microchip/Microsemi VSC85xx networking\n\t  PHYs (VSC8504, VSC8552, VSC8572, VSC8574, VSC856X, VSC8575,\n\t  VSC8582 and VSC8584)\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_4X\n\tbool \"QLogic FastLinQ 4xxxx\"\n\thelp\n\t  Firmware files for QLogic FastLinQ 4xxxx ethernet devices\n\t  (qede)\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_RTL_815X\n\tbool \"Realtek 8152/8153/8156 USB Ethernet Adapaters\"\n\thelp\n\t  Firmware files for Realtek 8152/8153/8156 based USB Ethernet\n\t  adapters.\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169\n\tbool \"Realtek 8169\"\n\thelp\n\t  Firmware files for Realtek 8169 gigabit ethernet cards\n\nendmenu\n\nmenu \"DVB firmware\"\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_AS102\n\tbool \"Abilis Systems as102\"\n\thelp\n\t  Firmware file for Abilis Systems single DVB-T receiver as102\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_DIB0700\n\tbool \"DiBcom dib0700\"\n\thelp\n\t  Firmware file for dib0700-based USB DVB tuner driver\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_ITETECH_IT9135\n\tbool \"ITEtech it9135\"\n\thelp\n\t  Firmware files for ITEtech it9135 (Ax and Bx) DVB-T USB tuner\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_H5_DRXK\n\tbool \"Terratec H5 DRX-K\"\n\thelp\n\t  Firmware file for Terratec H5 DRX-K based DVB tuner driver\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_XCx000\n\tbool \"Xceive/Cresta xc4000/xc5000/xc500c\"\n\thelp\n\t  Firmware file for xc4000/xc5000/xc5000c based DVB tuner driver\n\nendmenu\n\nmenu \"Fibre Channel Adapter Firmware\"\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_2XXX\n\tbool \"QLogic 2xxx Fibre Channel Adapters\"\n\thelp\n\t  Firmware files for ql2xxx adapters\n\nendmenu\n\nmenu \"Intel QuickAssist Firmware\"\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_QAT_DH895XCC\n\tbool \"Support for DH895xCC\"\n\thelp\n\t  Firmware files for Intel DH895xCC devices\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_QAT_C3XXX\n\tbool \"Support for C3XXX\"\n\thelp\n\t  Firmware files for Intel C3XXX devices\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_QAT_C62X\n\tbool \"Support for C62X\"\n\thelp\n\t  Firmware files for Intel C62X devices\n\nendmenu\n\nmenu \"USB to Serial Firmware\"\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI\n\tbool \"USB TI 3410/5052 Serial Firmware\"\n\thelp\n\t  Firmware files for TI 3410/5052\n\nendmenu\n\nmenu \"V4L Firmware\"\n\nconfig BR2_PACKAGE_LINUX_FIRMWARE_CX231XX\n\tbool \"Conexant Cx23100/101/102 USB broadcast A/V decoder\"\n\thelp\n\t  Firmware files for Conexant Cx23100/101/102 USB broadcast\n\t  A/V decoder needed by the Linux CX231XX driver.\n\nendmenu\n\nendif\n"
  },
  {
    "path": "package/linux-firmware/linux-firmware.hash",
    "content": "# From https://mirrors.edge.kernel.org/pub/linux/kernel/firmware/sha256sums.asc\nsha256  2fb22a5d7d23bf1f5800ab8152b39a00a445fbf4923de5a01b59d3f6253f0a9f  linux-firmware-20210919.tar.xz\n\n# Hash for license files\nsha256  8116433f4004fc0c24d72b3d9e497808b724aa0e5e1cd63fc1bf66b715b1e2e9  LICENCE.Abilis\nsha256  8d5847d2971241d4d6a51c16e206379de53a6d4e203fa6f8e1c1e9279c7c4ad0  LICENSE.amdgpu\nsha256  2d6062d63b91eb750bf741498691604f75184b9fee97608ec537cd09bd6a42b4  LICENCE.Marvell\nsha256  802b7014b26c606cf6248ae8b0ab1ce6d2d1b0db236d38dd269e676cd70710f2  LICENCE.atheros_firmware\nsha256  3b5eb392b2d9d8c46d6aae26d06c187e5ea3029b12d13bc2b8deb8b3ce6bfa53  ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt\nsha256  631065703055d11b099477c508508f20a80b202aad548a7726564bfa59a96c91  ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt\nsha256  8ce5c6ea0542bf4aac31fc3ae16a39792ad22d0eae4543063fac56fb3380f021  ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt\nsha256  b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d  LICENCE.broadcom_bcm43xx\nsha256  a5777f9e80aca0603b0648454de996168b1c530322550ccda94d6d78bcf6c061  LICENCE.chelsio_firmware\nsha256  60fbc9cccb455e1a3306c97db942d6f24fa93664be61d54c497637e6d0e2ae83  LICENCE.fw_sst_0f28\nsha256  5181b0b51efc79d5acb2c9bb92042878fdbad97a92114d4ab5e32e2b5b52fce4  LICENCE.ibt_firmware\nsha256  0e0c11073ba3c832097da38e0905da36b8a3526f219407977b13b71c6675be7d  LICENCE.it913x\nsha256  16d5040c7cf851fc693b7542e20870935b99802533ea1bfd231c377a2305e5c5  LICENCE.iwlwifi_firmware\nsha256  0fc67bd715b3395f3f2af464781910e9e69c4ba23da304352229b42dc9e986c3  LICENCE.microchip\nsha256  2051d5bf0755a0668f8c3d9a0d1c41d4b8cc411aba70f720fda71ae9e3b4d25c  LICENCE.qat_firmware\nsha256  4071a11d878dbc0ac6d9e71203d03b151638f9d7a8bc47a54c3cb964100d5822  LICENCE.qla2xxx\nsha256  d7bec70668ddd4aae8fb4aa32870e54b49fcdb0b9b007aa9f54b53a1ac7461bd  LICENCE.ralink-firmware.txt\nsha256  8568352b57f3574f9d5b2753cdb7c6e5eb2b79e82fbb9c9ba6566947467ef508  LICENCE.ralink_a_mediatek_company_firmware\nsha256  a61351665b4f264f6c631364f85b907d8f8f41f8b369533ef4021765f9f3b62e  LICENCE.rtlwifi_firmware.txt\nsha256  106bef96470001e877fcf7ba0337fa6766a317650eb47fcaeb743eeebd62c4ff  LICENCE.ti-connectivity\nsha256  8ea9f4aee5f53ad877041ff089e8c95d34d615ce19a3111e5e1ea70d990ed7ff  LICENCE.xc4000\nsha256  30ec8a66503dc73f83937564ae70ca23aa03259e64727ff4195b5b6f695e782f  LICENCE.xc5000\nsha256  f8822049f32fef2e90a197bd8cf259f476db75d549456bdca8567616a9c07ace  LICENCE.xc5000c\nsha256  a064cbf83e10d72579d236a1e36032681adb8e442943ff75b57020a82992a5ed  LICENSE.QualcommAtheros_ar3k\nsha256  337a55102138d7baa143ee4a4c6c91693e0113fece35d380b2a12109e8c23b3f  LICENSE.QualcommAtheros_ath10k\nsha256  630fd46c95d3ac6544590c2265ba7348fbc930fb386261a1c04dcd9f403645b8  LICENSE.dib0700\nsha256  8542aeabf2761935122d693561e16766ce1bcc2b0d003204f9040b7d6d929f2e  LICENSE.i915\nsha256  be904cd28cb292b80cdb6cf412ab0d9159d431671e987ad433c1f62e0988a9bc  LICENSE.qcom\nsha256  fc6223d4bfe9f2f9e2eddc44b9fe5721d0caf49f01cb08d602906add686d8c6f  LICENSE.radeon\nsha256  2bdd2e716f05d9737d3f9a20f9a3a3c0caee0e866100ddb0673f1178e42f92b9  LICENSE.sdma_firmware\nsha256  a06edfd3649df6b0cbac8304d6d53f661963381f1231fd02da259806763d4162  WHENCE\nsha256  fa43e1b9a13b341a07adca9dbe73d0f9072d7966fdfe811c01f0dd2872d7309a  qcom/NOTICE.txt\nsha256  bef9c828e84f21e7835b4de7daf954a327e1ff777871b58e116039b684c0d604  LICENCE.e100\n"
  },
  {
    "path": "package/linux-firmware/linux-firmware.mk",
    "content": "################################################################################\n#\n# linux-firmware\n#\n################################################################################\n\nLINUX_FIRMWARE_VERSION = 20210919\nLINUX_FIRMWARE_SOURCE = linux-firmware-$(LINUX_FIRMWARE_VERSION).tar.xz\nLINUX_FIRMWARE_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/firmware\nLINUX_FIRMWARE_INSTALL_IMAGES = YES\n\nLINUX_FIRMWARE_CPE_ID_VENDOR = kernel\n\n# Intel SST DSP\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_SST_DSP),y)\nLINUX_FIRMWARE_FILES += intel/fw_sst_0f28.bin-48kHz_i2s_master\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.fw_sst_0f28\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AMDGPU),y)\nLINUX_FIRMWARE_DIRS += amdgpu\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.amdgpu\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_I915),y)\nLINUX_FIRMWARE_DIRS += i915\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.i915\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RADEON),y)\nLINUX_FIRMWARE_DIRS += radeon\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.radeon\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QCOM_VENUS),y)\nLINUX_FIRMWARE_DIRS += qcom/venus-1.8 qcom/venus-4.2\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.qcom qcom/NOTICE.txt\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QCOM_ADRENO),y)\nLINUX_FIRMWARE_FILES += qcom/a*\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.qcom qcom/NOTICE.txt\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MFC_V8),y)\nLINUX_FIRMWARE_FILES += \\\n\ts5p-mfc.fw \\\n\ts5p-mfc-v6.fw \\\n\ts5p-mfc-v6-v2.fw \\\n\ts5p-mfc-v7.fw \\\n\ts5p-mfc-v8.fw\n# No license file; the license is in the file WHENCE\n# which is installed unconditionally\nendif\n\n# Intel Wireless Bluetooth\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IBT),y)\nLINUX_FIRMWARE_FILES += intel/ibt-*\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ibt_firmware\nendif\n\n# Qualcomm Atheros Rome 6174A Bluetooth\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174A_BT),y)\nLINUX_FIRMWARE_FILES += qca/rampatch_usb_00000302.bin qca/nvm_usb_00000302.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.qcom\nendif\n\n# Realtek 87xx Bluetooth\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT),y)\nLINUX_FIRMWARE_FILES += \\\n\trtl_bt/rtl8723a_fw.bin rtl_bt/rtl8723b_fw.bin \\\n\trtl_bt/rtl8723bs_config-OBDA8723.bin \\\n\trtl_bt/rtl8723bs_fw.bin rtl_bt/rtl8723d_config.bin \\\n\trtl_bt/rtl8723d_fw.bin rtl_bt/rtl8761a_fw.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt\nendif\n\n# Realtek 88xx Bluetooth\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX_BT),y)\nLINUX_FIRMWARE_FILES += \\\n\trtl_bt/rtl8812ae_fw.bin rtl_bt/rtl8821a_fw.bin \\\n\trtl_bt/rtl8821c_config.bin rtl_bt/rtl8821c_fw.bin \\\n\trtl_bt/rtl8822b_config.bin rtl_bt/rtl8822b_fw.bin \\\n\trtl_bt/rtl8822cs_config.bin rtl_bt/rtl8822cs_fw.bin \\\n\trtl_bt/rtl8822cu_config.bin rtl_bt/rtl8822cu_fw.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt\nendif\n\n# rt2501/rt61\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61),y)\nLINUX_FIRMWARE_FILES += rt2561.bin rt2561s.bin rt2661.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink-firmware.txt\nendif\n\n# rt73\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73),y)\nLINUX_FIRMWARE_FILES += rt73.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink-firmware.txt\nendif\n\n# rt2xx\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX),y)\nLINUX_FIRMWARE_FILES += rt2860.bin rt2870.bin rt3071.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink-firmware.txt\nendif\n\n# rtl81xx\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX),y)\nLINUX_FIRMWARE_FILES += \\\n\trtlwifi/rtl8192cfw.bin \\\n\trtlwifi/rtl8192cfwU.bin \\\n\trtlwifi/rtl8192cfwU_B.bin \\\n\trtlwifi/rtl8192cufw.bin \\\n\trtlwifi/rtl8192defw.bin \\\n\trtlwifi/rtl8192sefw.bin \\\n\trtlwifi/rtl8188efw.bin \\\n\trtlwifi/rtl8188eufw.bin \\\n\trtlwifi/rtl8192cufw_A.bin \\\n\trtlwifi/rtl8192cufw_B.bin \\\n\trtlwifi/rtl8192cufw_TMSC.bin \\\n\trtlwifi/rtl8192eu_ap_wowlan.bin \\\n\trtlwifi/rtl8192eu_nic.bin \\\n\trtlwifi/rtl8192eu_wowlan.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt\nendif\n\n# rtl87xx\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX),y)\nLINUX_FIRMWARE_FILES += \\\n\trtlwifi/rtl8712u.bin \\\n\trtlwifi/rtl8723fw.bin \\\n\trtlwifi/rtl8723fw_B.bin \\\n\trtlwifi/rtl8723befw.bin \\\n\trtlwifi/rtl8723aufw_A.bin \\\n\trtlwifi/rtl8723aufw_B.bin \\\n\trtlwifi/rtl8723aufw_B_NoBT.bin \\\n\trtlwifi/rtl8723befw.bin \\\n\trtlwifi/rtl8723bs_bt.bin \\\n\trtlwifi/rtl8723bu_ap_wowlan.bin \\\n\trtlwifi/rtl8723bu_nic.bin \\\n\trtlwifi/rtl8723bu_wowlan.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt\nendif\n\n# rtl88xx\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX),y)\nLINUX_FIRMWARE_FILES += \\\n\trtlwifi/rtl8821aefw.bin \\\n\trtlwifi/rtl8821aefw_wowlan.bin \\\n\trtlwifi/rtl8821aefw_29.bin rtlwifi/rtl8822befw.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt\nendif\n\n# rtw88\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_RTW88),y)\nLINUX_FIRMWARE_FILES += \\\n\trtw88/rtw8723d_fw.bin \\\n\trtw88/rtw8822b_fw.bin \\\n\trtw88/rtw8822c_fw.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt\nendif\n\n# ar3011\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AR3011),y)\nLINUX_FIRMWARE_FILES += ath3k-1.fw\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware\nendif\n\n# ar3012\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AR3012_USB),y)\nLINUX_FIRMWARE_FILES += \\\n\tar3k/AthrBT_0x01020001.dfu \\\n\tar3k/ramps_0x01020001_26.dfu \\\n\tar3k/AthrBT_0x01020200.dfu \\\n\tar3k/ramps_0x01020200_26.dfu \\\n\tar3k/ramps_0x01020200_40.dfu \\\n\tar3k/AthrBT_0x31010000.dfu \\\n\tar3k/ramps_0x31010000_40.dfu \\\n\tar3k/AthrBT_0x11020000.dfu \\\n\tar3k/ramps_0x11020000_40.dfu \\\n\tar3k/ramps_0x01020201_26.dfu \\\n\tar3k/ramps_0x01020201_40.dfu \\\n\tar3k/AthrBT_0x41020000.dfu \\\n\tar3k/ramps_0x41020000_40.dfu \\\n\tar3k/AthrBT_0x11020100.dfu \\\n\tar3k/ramps_0x11020100_40.dfu \\\n\tar3k/AthrBT_0x31010100.dfu \\\n\tar3k/ramps_0x31010100_40.dfu \\\n\tar3k/AthrBT_0x01020201.dfu\nLINUX_FIRMWARE_ALL_LICENSE_FILES += \\\n\tLICENCE.atheros_firmware LICENSE.QualcommAtheros_ar3k\nendif\n\n# ar6002\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002),y)\nLINUX_FIRMWARE_FILES += ath6k/AR6002\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware\nendif\n\n# ar6003\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003),y)\nLINUX_FIRMWARE_FILES += ath6k/AR6003\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware\nendif\n\n# ar6004\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004),y)\nLINUX_FIRMWARE_FILES += ath6k/AR6004\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware\nendif\n\n# ar7010\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010),y)\nLINUX_FIRMWARE_FILES += ar7010.fw ar7010_1_1.fw htc_7010.fw ath9k_htc/htc_7010-1.4.0.fw\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware\nendif\n\n# ar9170\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170),y)\nLINUX_FIRMWARE_FILES += ar9170-1.fw ar9170-2.fw carl9170-1.fw\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware\nendif\n\n# ar9271\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271),y)\nLINUX_FIRMWARE_FILES += ar9271.fw htc_9271.fw ath9k_htc/htc_9271-1.4.0.fw\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware\nendif\n\n# ath10k\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA9377),y)\nLINUX_FIRMWARE_FILES += ath10k/QCA9377/hw1.0/board-2.bin \\\n\t\t\tath10k/QCA9377/hw1.0/board.bin \\\n\t\t\tath10k/QCA9377/hw1.0/firmware-5.bin \\\n\t\t\tath10k/QCA9377/hw1.0/firmware-6.bin \\\n\t\t\tath10k/QCA9377/hw1.0/firmware-sdio-5.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA998X),y)\nLINUX_FIRMWARE_FILES += ath10k/QCA988X/hw2.0/board.bin \\\n\t\t\tath10k/QCA988X/hw2.0/firmware-4.bin \\\n\t\t\tath10k/QCA988X/hw2.0/firmware-5.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware\nendif\n\n# sd8686 v8\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8),y)\nLINUX_FIRMWARE_FILES += libertas/sd8686_v8.bin libertas/sd8686_v8_helper.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# sd8686 v9\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9),y)\nLINUX_FIRMWARE_FILES += libertas/sd8686_v9.bin libertas/sd8686_v9_helper.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# sd8688\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688),y)\nLINUX_FIRMWARE_FILES += mrvl/sd8688.bin mrvl/sd8688_helper.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# usb8388 v9\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB8388_V9),y)\nLINUX_FIRMWARE_FILES += libertas/usb8388_v9.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# usb8388 olpc\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB8388_OLPC),y)\nLINUX_FIRMWARE_FILES += libertas/usb8388_olpc.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# lbtf usb\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_USB_THINFIRM),y)\nLINUX_FIRMWARE_FILES += lbtf_usb.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# sd8787\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787),y)\nLINUX_FIRMWARE_FILES += mrvl/sd8787_uapsta.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# sd8797\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797),y)\nLINUX_FIRMWARE_FILES += mrvl/sd8797_uapsta.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# usb8797\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797),y)\nLINUX_FIRMWARE_FILES += mrvl/usb8797_uapsta.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# usb8801\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801),y)\nLINUX_FIRMWARE_FILES += mrvl/usb8801_uapsta.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# sd8887\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887),y)\nLINUX_FIRMWARE_FILES += mrvl/sd8887_uapsta.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# sd8897\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897),y)\nLINUX_FIRMWARE_FILES += mrvl/sd8897_uapsta.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# usb8897\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897),y)\nLINUX_FIRMWARE_FILES += mrvl/usb8897_uapsta.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# pcie8897\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897),y)\nLINUX_FIRMWARE_FILES += mrvl/pcie8897_uapsta.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# pcieuart8997\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIEUART8997),y)\nLINUX_FIRMWARE_FILES += mrvl/pcieuart8997_combo_v4.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# pcieusb8997\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIEUSB8997),y)\nLINUX_FIRMWARE_FILES += mrvl/pcieusb8997_combo_v4.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell\nendif\n\n# MT7601\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U),y)\nLINUX_FIRMWARE_FILES += mt7601u.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink_a_mediatek_company_firmware\nendif\n\n# MT7610\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7610E),y)\nLINUX_FIRMWARE_FILES += mediatek/mt7610e.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink_a_mediatek_company_firmware\nendif\n\n# MT7650\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7650),y)\nLINUX_FIRMWARE_FILES += mt7650.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink_a_mediatek_company_firmware\nendif\n\n# MT76x2e\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT76X2E),y)\nLINUX_FIRMWARE_FILES += mt7662.bin mt7662_rom_patch.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink_a_mediatek_company_firmware\nendif\n\n# qca6174\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174),y)\nLINUX_FIRMWARE_FILES += ath10k/QCA6174\nLINUX_FIRMWARE_ALL_LICENSE_FILES += \\\n\tLICENSE.QualcommAtheros_ath10k \\\n\tath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt \\\n\tath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt \\\n\tath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt\nendif\n\n# CC2560(A)\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_CC2560),y)\nLINUX_FIRMWARE_FILES += \\\n\tti-connectivity/TIInit_6.2.31.bts \\\n\tti-connectivity/TIInit_6.6.15.bts\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity\nendif\n\n# wl127x\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X),y)\nLINUX_FIRMWARE_FILES += \\\n\tti-connectivity/wl1271-fw-2.bin \\\n\tti-connectivity/wl1271-fw-ap.bin \\\n\tti-connectivity/wl1271-fw.bin \\\n\tti-connectivity/wl127x-fw-3.bin \\\n\tti-connectivity/wl127x-fw-plt-3.bin \\\n\tti-connectivity/wl127x-nvs.bin \\\n\tti-connectivity/wl127x-fw-4-mr.bin \\\n\tti-connectivity/wl127x-fw-4-plt.bin \\\n\tti-connectivity/wl127x-fw-4-sr.bin \\\n\tti-connectivity/wl127x-fw-5-mr.bin \\\n\tti-connectivity/wl127x-fw-5-plt.bin \\\n\tti-connectivity/wl127x-fw-5-sr.bin \\\n\tti-connectivity/TIInit_7.2.31.bts\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity\nendif\n\n# wl128x\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X),y)\nLINUX_FIRMWARE_FILES += \\\n\tti-connectivity/wl128x-fw-3.bin \\\n\tti-connectivity/wl128x-fw-ap.bin \\\n\tti-connectivity/wl128x-fw-plt-3.bin \\\n\tti-connectivity/wl128x-fw.bin \\\n\tti-connectivity/wl128x-nvs.bin \\\n\tti-connectivity/wl127x-nvs.bin \\\n\tti-connectivity/wl128x-fw-4-mr.bin \\\n\tti-connectivity/wl128x-fw-4-plt.bin \\\n\tti-connectivity/wl128x-fw-4-sr.bin \\\n\tti-connectivity/wl128x-fw-5-mr.bin \\\n\tti-connectivity/wl128x-fw-5-plt.bin \\\n\tti-connectivity/wl128x-fw-5-sr.bin \\\n\tti-connectivity/TIInit_7.2.31.bts\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity\nendif\n\n# wl18xx\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX),y)\nLINUX_FIRMWARE_FILES += \\\n\tti-connectivity/wl18xx-fw.bin \\\n\tti-connectivity/wl18xx-fw-2.bin \\\n\tti-connectivity/wl18xx-fw-3.bin \\\n\tti-connectivity/wl18xx-fw-4.bin \\\n\tti-connectivity/wl127x-nvs.bin \\\n\tti-connectivity/TIInit_7.2.31.bts\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_WIL6210),y)\nLINUX_FIRMWARE_FILES += wil6210.*\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.QualcommAtheros_ath10k\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22260),y)\nLINUX_FIRMWARE_FILES += iwlwifi-cc-a0-*.ucode\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160),y)\nLINUX_FIRMWARE_FILES += iwlwifi-3160-*.ucode\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168),y)\nLINUX_FIRMWARE_FILES += iwlwifi-3168-*.ucode\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware\nendif\n\n# iwlwifi 5000. Multiple files are available (iwlwifi-5000-1.ucode,\n# iwlwifi-5000-2.ucode, iwlwifi-5000-5.ucode), corresponding to\n# different versions of the firmware API. For now, we only install the\n# most recent one.\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000),y)\nLINUX_FIRMWARE_FILES += iwlwifi-5000-5.ucode\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A),y)\nLINUX_FIRMWARE_FILES += iwlwifi-6000g2a-6.ucode\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B),y)\nLINUX_FIRMWARE_FILES += iwlwifi-6000g2b-6.ucode\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260),y)\nLINUX_FIRMWARE_FILES += iwlwifi-7260-*.ucode\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265),y)\nLINUX_FIRMWARE_FILES += iwlwifi-7265-*.ucode\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D),y)\nLINUX_FIRMWARE_FILES += iwlwifi-7265D-*.ucode\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C),y)\nLINUX_FIRMWARE_FILES += iwlwifi-8000C-*.ucode\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265),y)\nLINUX_FIRMWARE_FILES += iwlwifi-8265-*.ucode\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9XXX),y)\nLINUX_FIRMWARE_FILES += iwlwifi-9???-*.ucode\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BROADCOM_TIGON3),y)\nLINUX_FIRMWARE_FILES += tigon/*\n# No license file; the license is in the file WHENCE\n# which is installed unconditionally\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BNX2X),y)\nLINUX_FIRMWARE_FILES += bnx2x/*\n# No license file; the license is in the file WHENCE\n# which is installed unconditionally\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4),y)\nLINUX_FIRMWARE_FILES += cxgb4/t4fw*.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.chelsio_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5),y)\nLINUX_FIRMWARE_FILES += cxgb4/t5fw*.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.chelsio_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_E100),y)\nLINUX_FIRMWARE_FILES += e100/*.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.e100\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MICROCHIP_VSC85XX_PHY),y)\nLINUX_FIRMWARE_FILES += microchip/mscc_vsc85*.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.microchip\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_4X),y)\nLINUX_FIRMWARE_FILES += \\\n\tqed/qed_init_values_zipped-*.bin\n# No license file; the license is in the file WHENCE\n# which is installed unconditionally\nendif\n\n# rtl815x\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_815X),y)\nLINUX_FIRMWARE_FILES += \\\n\trtl_nic/rtl8153a-2.fw \\\n\trtl_nic/rtl8153a-3.fw \\\n\trtl_nic/rtl8153a-4.fw \\\n\trtl_nic/rtl8153b-2.fw \\\n\trtl_nic/rtl8153c-1.fw \\\n\trtl_nic/rtl8156a-2.fw \\\n\trtl_nic/rtl8156b-2.fw\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169),y)\nLINUX_FIRMWARE_FILES += \\\n\trtl_nic/rtl8105e-1.fw \\\n\trtl_nic/rtl8106e-1.fw \\\n\trtl_nic/rtl8106e-2.fw \\\n\trtl_nic/rtl8107e-1.fw \\\n\trtl_nic/rtl8107e-2.fw \\\n\trtl_nic/rtl8125a-3.fw \\\n\trtl_nic/rtl8168d-1.fw \\\n\trtl_nic/rtl8168d-2.fw \\\n\trtl_nic/rtl8168e-1.fw \\\n\trtl_nic/rtl8168e-2.fw \\\n\trtl_nic/rtl8168e-3.fw \\\n\trtl_nic/rtl8168f-1.fw \\\n\trtl_nic/rtl8168f-2.fw \\\n\trtl_nic/rtl8168fp-3.fw \\\n\trtl_nic/rtl8168g-2.fw \\\n\trtl_nic/rtl8168g-3.fw \\\n\trtl_nic/rtl8168h-1.fw \\\n\trtl_nic/rtl8168h-2.fw \\\n\trtl_nic/rtl8402-1.fw \\\n\trtl_nic/rtl8411-1.fw \\\n\trtl_nic/rtl8411-2.fw\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_XCx000),y)\nLINUX_FIRMWARE_FILES += \\\n\tdvb-fe-xc4000-1.4.1.fw \\\n\tdvb-fe-xc5000-1.6.114.fw \\\n\tdvb-fe-xc5000c-4.1.30.7.fw\nLINUX_FIRMWARE_ALL_LICENSE_FILES += \\\n\tLICENCE.xc4000 \\\n\tLICENCE.xc5000 \\\n\tLICENCE.xc5000c\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AS102),y)\nLINUX_FIRMWARE_FILES += as102_data1_st.hex as102_data2_st.hex\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Abilis\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_DIB0700),y)\nLINUX_FIRMWARE_FILES += dvb-usb-dib0700-1.20.fw\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.dib0700\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ITETECH_IT9135),y)\nLINUX_FIRMWARE_FILES += dvb-usb-it9135-01.fw dvb-usb-it9135-02.fw\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.it913x\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_H5_DRXK),y)\nLINUX_FIRMWARE_FILES += dvb-usb-terratec-h5-drxk.fw\n# No license file; the license is in the file WHENCE\n# which is installed unconditionally\nendif\n\n# brcm43xx\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX),y)\nLINUX_FIRMWARE_FILES += \\\n\tbrcm/bcm4329-fullmac-4.bin \\\n\tbrcm/brcmfmac4329-sdio.bin \\\n\tbrcm/brcmfmac4330-sdio.bin \\\n\tbrcm/brcmfmac4334-sdio.bin \\\n\tbrcm/brcmfmac4335-sdio.bin \\\n\tbrcm/brcmfmac4350c2-pcie.bin \\\n\tbrcm/brcmfmac4350-pcie.bin \\\n\tbrcm/brcmfmac4358-pcie.bin \\\n\tbrcm/brcmfmac4371-pcie.bin \\\n\tbrcm/brcmfmac4373.bin \\\n\tbrcm/brcmfmac4330-sdio.Prowise-PT301.txt \\\n\tbrcm/brcmfmac4356-pcie.gpd-win-pocket.txt \\\n\tbrcm/brcmfmac4356-sdio.vamrs,rock960.txt\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.broadcom_bcm43xx\nendif\n\n# brcm43xxx\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX),y)\nLINUX_FIRMWARE_FILES += \\\n\tbrcm/brcmfmac43143.bin \\\n\tbrcm/brcmfmac43143-sdio.bin \\\n\tbrcm/brcmfmac43236b.bin \\\n\tbrcm/brcmfmac43241b0-sdio.bin \\\n\tbrcm/brcmfmac43241b4-sdio.bin \\\n\tbrcm/brcmfmac43241b5-sdio.bin \\\n\tbrcm/brcmfmac43242a.bin \\\n\tbrcm/brcmfmac43430a0-sdio.bin \\\n\tbrcm/brcmfmac43569.bin \\\n\tbrcm/brcmfmac43602-pcie.ap.bin \\\n\tbrcm/brcmfmac43602-pcie.bin \\\n\tbrcm/brcmfmac43340-sdio.meegopad-t08.txt \\\n\tbrcm/brcmfmac43340-sdio.pov-tab-p1006w-data.txt \\\n\tbrcm/brcmfmac43340-sdio.predia-basic.txt \\\n\tbrcm/brcmfmac43362-sdio.cubietech,cubietruck.txt \\\n\tbrcm/brcmfmac43430a0-sdio.ilife-S806.txt \\\n\tbrcm/brcmfmac43430a0-sdio.jumper-ezpad-mini3.txt \\\n\tbrcm/brcmfmac43430-sdio.AP6212.txt \\\n\tbrcm/brcmfmac43430-sdio.Hampoo-D2D3_Vi8A1.txt \\\n\tbrcm/brcmfmac43430-sdio.MUR1DX.txt \\\n\tbrcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt \\\n\tbrcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt \\\n\tbrcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.broadcom_bcm43xx\nendif\n\n# brcm4366b1\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM4366B1),y)\nLINUX_FIRMWARE_FILES += brcm/brcmfmac4366b-pcie.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.broadcom_bcm43xx\nendif\n\n# brcm4366c0\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM4366C0),y)\nLINUX_FIRMWARE_FILES += brcm/brcmfmac4366c-pcie.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.broadcom_bcm43xx\nendif\n\n# ql2xxx\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_2XXX),y)\nLINUX_FIRMWARE_FILES += \\\n\tql2100_fw.bin ql2200_fw.bin ql2300_fw.bin ql2322_fw.bin \\\n\tql2400_fw.bin ql2500_fw.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qla2xxx\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9113),y)\nLINUX_FIRMWARE_FILES += \\\n\trsi/rs9113_ap_bt_dual_mode.rps \\\n\trsi/rs9113_wlan_bt_dual_mode.rps \\\n\trsi/rs9113_wlan_qspi.rps\n# No license file; the license is in the file WHENCE\n# which is installed unconditionally\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_DH895XCC),y)\nLINUX_FIRMWARE_FILES += qat_895xcc.bin qat_895xcc_mmp.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_C3XXX),y)\nLINUX_FIRMWARE_FILES += qat_c3xxx.bin qat_c3xxx_mmp.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_C62X),y)\nLINUX_FIRMWARE_FILES += qat_c62x.bin qat_c62x_mmp.bin\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_USB_SERIAL_TI),y)\nLINUX_FIRMWARE_FILES += ti_3410.fw ti_5052.fw \\\n\tmts_cdma.fw mts_gsm.fw mts_edge.fw mts_mt9234mu.fw mts_mt9234zba.fw \\\n\tmoxa/moxa-1110.fw moxa/moxa-1130.fw moxa/moxa-1131.fw \\\n\tmoxa/moxa-1150.fw moxa/moxa-1151.fw\n# Some firmware's license is in the file WHENCE\n# which is installed unconditionally\nLINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.moxa\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CX231XX),y)\nLINUX_FIRMWARE_FILES += v4l-cx231xx-avcore-01.fw\n# No license file; the license is in the file WHENCE\n# which is installed unconditionally\nendif\n\nifneq ($(LINUX_FIRMWARE_FILES)$(LINUX_FIRMWARE_DIRS),)\n\ndefine LINUX_FIRMWARE_BUILD_CMDS\n\tcd $(@D) && \\\n\t$(TAR) cf br-firmware.tar $(sort $(LINUX_FIRMWARE_FILES) $(LINUX_FIRMWARE_DIRS))\nendef\n\n# Most firmware files are under a proprietary license, so no need to\n# repeat it for every selections above. Those firmwares that have more\n# lax licensing terms may still add them on a per-case basis.\nLINUX_FIRMWARE_LICENSE += Proprietary\n\n# This file contains some licensing information about all the firmware\n# files found in the linux-firmware package, so we always add it, even\n# for firmwares that have their own licensing terms.\nLINUX_FIRMWARE_ALL_LICENSE_FILES += WHENCE\n\n# Some license files may be listed more than once, so we have to remove\n# duplicates\nLINUX_FIRMWARE_LICENSE_FILES = $(sort $(LINUX_FIRMWARE_ALL_LICENSE_FILES))\n\n# Some firmware are distributed as a symlink, for drivers to load them using a\n# defined name other than the real one. Since 9cfefbd7fbda (\"Remove duplicate\n# symlinks\") those symlink aren't distributed in linux-firmware but are created\n# automatically by its copy-firmware.sh script during the installation, which\n# parses the WHENCE file where symlinks are described. We follow the same logic\n# here, adding symlink only for firmwares installed in the target directory.\n#\n# For testing the presence of firmwares in the target directory we first make\n# sure we canonicalize the pointed-to file, to cover the symlinks of the form\n# a/foo -> ../b/foo  where a/ (the directory where to put the symlink) does\n# not yet exist.\ndefine LINUX_FIRMWARE_INSTALL_FW\n\tmkdir -p $(1)\n\t$(TAR) xf $(@D)/br-firmware.tar -C $(1)\n\tcd $(1) ; \\\n\tsed -r -e '/^Link: (.+) -> (.+)$$/!d; s//\\1 \\2/' $(@D)/WHENCE | \\\n\twhile read f d; do \\\n\t\tif test -f $$(readlink -m $$(dirname \"$$f\")/$$d); then \\\n\t\t\tmkdir -p $$(dirname \"$$f\") || exit 1; \\\n\t\t\tln -sf $$d \"$$f\" || exit 1; \\\n\t\tfi ; \\\n\tdone\nendef\n\nendif  # LINUX_FIRMWARE_FILES || LINUX_FIRMWARE_DIRS\n\ndefine LINUX_FIRMWARE_INSTALL_TARGET_CMDS\n\t$(call LINUX_FIRMWARE_INSTALL_FW, $(TARGET_DIR)/lib/firmware)\nendef\n\ndefine LINUX_FIRMWARE_INSTALL_IMAGES_CMDS\n\t$(call LINUX_FIRMWARE_INSTALL_FW, $(BINARIES_DIR))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/linux-fusion/0001-fix-for-linux-4-and-above.patch",
    "content": "Fix build for linux >= 4.x\n\nInstead of relying on testing for '3' as the linux kernel major verison,\ncheck that it is 2.x to include the proper Makefile, otherwise forcibly\ninclude the .26 Makefile, that is good for 3.x and 4.x too.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN linux-fusion-9.0.2.orig/Makefile linux-fusion-9.0.2/Makefile\n--- linux-fusion-9.0.2.orig/Makefile\t2013-07-15 11:58:03.000000000 +0200\n+++ linux-fusion-9.0.2/Makefile\t2015-06-06 19:03:04.059842652 +0200\n@@ -62,10 +62,10 @@\n   CPPFLAGS += -DHAVE_LINUX_CONFIG_H\n endif\n \n-ifeq ($(K_VERSION),3)\n-  KMAKEFILE = Makefile-2.6\n-else\n+ifeq ($(K_VERSION),2)\n   KMAKEFILE = Makefile-2.$(K_PATCHLEVEL)\n+else\n+  KMAKEFILE = Makefile-2.6\n endif\n \n check-version = $(shell expr \\( $(K_VERSION) \\* 65536 + $(K_PATCHLEVEL) \\* 256 + $(K_SUBLEVEL) \\) \\>= \\( $(1) \\* 65536 + $(2) \\* 256 + $(3) \\))\n"
  },
  {
    "path": "package/linux-fusion/0002-Fix-mismatched-conversion-spec-and-value-in-printk.patch",
    "content": "From debb9cafe9b7cc2b286399ecc8e3210480061c70 Mon Sep 17 00:00:00 2001\nFrom: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>\nDate: Mon, 11 Jan 2016 15:42:16 +0100\nSubject: [PATCH] Fix mismatched conversion spec and value in printk\n\nlinux/drivers/char/fusion/fusiondev.c:775:38: warning:\nformat '%ld' expects argument of type 'long int', but argument 7 has type 'int'\n\nSubtracting two pointers yields a ptrdiff_t value, and ptrdiff_t is not\nnecessarily an alias for long int. Cast the value to long int.\n\nSigned-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>\n---\n linux/drivers/char/fusion/fusiondev.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/linux/drivers/char/fusion/fusiondev.c b/linux/drivers/char/fusion/fusiondev.c\nindex 7003407f7e1e..dfb5f8ecb81a 100644\n--- a/linux/drivers/char/fusion/fusiondev.c\n+++ b/linux/drivers/char/fusion/fusiondev.c\n@@ -775,7 +775,7 @@ call_ioctl(FusionDev * dev, Fusionee * fusionee,\n                               printk( KERN_ERR \"fusion: FUSION_CALL_EXECUTE3 with errorneous call (failed on previous ioctl call), \"\n                                                \"call id %d, flags 0x%08x, arg %d, length %u, serial %u,  %ld\\n\",\n                                       execute3.call_id, execute3.flags, execute3.call_arg, execute3.length, execute3.ret_length,\n-                                      (execute3_bin - (FusionCallExecute3 *) arg) );\n+                                      (long int)(execute3_bin - (FusionCallExecute3 *) arg) );\n                               return -EIO;\n                          }\n \n"
  },
  {
    "path": "package/linux-fusion/0003-Fix-fusion-Unknown-symbol-tasklist_lock-err-0.patch",
    "content": "From 9fcd5003c0363af140a06aba94e62c9e1ea0381e Mon Sep 17 00:00:00 2001\nFrom: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>\nDate: Mon, 11 Jan 2016 16:45:30 +0100\nSubject: [PATCH] Fix fusion: Unknown symbol tasklist_lock (err 0)\n\nCommit 28f6569ab7d0 renamed TREE_PREEMPT_RCU to PREEMPT_RCU in 3.19\nAs a result, the code incorrectly falls back to using tasklist_lock\n(which was made private in 2.6.18)\n\nAlways use rcu_read_lock on modern kernels.\n\nSigned-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>\n---\n linux/drivers/char/fusion/fusionee.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/linux/drivers/char/fusion/fusionee.c b/linux/drivers/char/fusion/fusionee.c\nindex ef067f5bc831..70cd0a665f98 100644\n--- a/linux/drivers/char/fusion/fusionee.c\n+++ b/linux/drivers/char/fusion/fusionee.c\n@@ -925,7 +925,7 @@ fusionee_kill(FusionDev * dev,\n                if (f != fusionee && (!target || target == f->id)) {\n                     struct task_struct *p;\n \n-#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) || defined(CONFIG_TINY_RCU) || defined(rcu_read_lock)\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)\n                     rcu_read_lock();\n #else\n                     read_lock(&tasklist_lock);\n@@ -946,7 +946,7 @@ fusionee_kill(FusionDev * dev,\n                          }\n                     }\n \n-#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) || defined(CONFIG_TINY_RCU) || defined(rcu_read_unlock)\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)\n                     rcu_read_unlock();\n #else\n                     read_unlock(&tasklist_lock);\n"
  },
  {
    "path": "package/linux-fusion/0004-Port-one-one_udp.c-to-Linux-4.1.patch",
    "content": "From be288b60278c78eccfd347aacf4d3dd8771215a9 Mon Sep 17 00:00:00 2001\nFrom: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>\nDate: Tue, 12 Jan 2016 14:01:42 +0100\nSubject: [PATCH] Port one/one_udp.c to Linux 4.1\n\nKernel commit c0371da6047a replaced msg_iov and msg_iovlen with msg_iter\nin struct msghdr since 3.19\n\none/one_udp.c: In function 'ksocket_send_iov':\none/one_udp.c:186:9: error: 'struct msghdr' has no member named 'msg_iov'\none/one_udp.c:187:9: error: 'struct msghdr' has no member named 'msg_iovlen'\n\none/one_udp.c: In function 'ksocket_receive':\none/one_udp.c:221:9: error: 'struct msghdr' has no member named 'msg_iov'\none/one_udp.c:222:9: error: 'struct msghdr' has no member named 'msg_iovlen'\n\nThe iov_iter interface\nhttps://lwn.net/Articles/625077/\n\nKernel commit d8725c86aeba dropped the len parameter in sock_sendmsg\nsince 4.1\n\none/one_udp.c: In function 'ksocket_send_iov':\none/one_udp.c:192:13: error: too many arguments to function 'sock_sendmsg'\n\nSigned-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>\n\nKernel commit 2da62906b1e29 dropped the size parameter in sock_recvmsg\nsince 4.7\n\nIn function 'ksocket_receive'\none/one_udp.c:235:13: error: too many arguments to function 'sock_recvmsg'\n\nSigned-off-by: Matthew Shyu <matthew.shyu@amlogic.com>\n---\n one/one_udp.c | 34 +++++++++++++++++++---------------\n 1 file changed, 19 insertions(+), 15 deletions(-)\n\ndiff --git a/one/one_udp.c b/one/one_udp.c\nindex 26b9e6a..9b59529 100644\n--- a/one/one_udp.c\n+++ b/one/one_udp.c\n@@ -161,7 +161,7 @@ ksocket_send_iov( struct socket      *sock,\n                   const struct iovec *iov,\n                   size_t              iov_count )\n {\n-     struct msghdr msg;\n+     struct msghdr msg = { addr, sizeof *addr };\n      mm_segment_t oldfs;\n      int size = 0;\n      size_t len = 0;\n@@ -178,18 +178,20 @@ ksocket_send_iov( struct socket      *sock,\n      for (i=0; i<iov_count; i++)\n           len += iov[i].iov_len;\n \n-     msg.msg_flags = 0;\n-     msg.msg_name = addr;\n-     msg.msg_namelen  = sizeof(struct sockaddr_in);\n-     msg.msg_control = NULL;\n-     msg.msg_controllen = 0;\n+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0) // commit c0371da6047a\n      msg.msg_iov = (struct iovec*) iov;\n      msg.msg_iovlen = iov_count;\n-     msg.msg_control = NULL;\n+#else\n+     iov_iter_init(&msg.msg_iter, WRITE, iov, iov_count, len);\n+#endif\n \n      oldfs = get_fs();\n      set_fs(KERNEL_DS);\n-     size = sock_sendmsg(sock,&msg,len);\n+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0) // commit d8725c86aeba\n+     size = sock_sendmsg(sock, &msg, len);\n+#else\n+     size = sock_sendmsg(sock, &msg);\n+#endif\n      set_fs(oldfs);\n \n      return size;\n@@ -198,7 +200,7 @@ ksocket_send_iov( struct socket      *sock,\n static int\n ksocket_receive(struct socket* sock, struct sockaddr_in* addr, void *buf, int len)\n {\n-     struct msghdr msg;\n+     struct msghdr msg = { addr, sizeof *addr };\n      struct iovec iov;\n      mm_segment_t oldfs;\n      int size = 0;\n@@ -213,18 +215,20 @@ ksocket_receive(struct socket* sock, struct sockaddr_in* addr, void *buf, int le\n      iov.iov_base = buf;\n      iov.iov_len = len;\n \n-     msg.msg_flags = 0;\n-     msg.msg_name = addr;\n-     msg.msg_namelen  = sizeof(struct sockaddr_in);\n-     msg.msg_control = NULL;\n-     msg.msg_controllen = 0;\n+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0) // commit c0371da6047a\n      msg.msg_iov = &iov;\n      msg.msg_iovlen = 1;\n-     msg.msg_control = NULL;\n+#else\n+     iov_iter_init(&msg.msg_iter, READ, &iov, 1, len);\n+#endif\n \n      oldfs = get_fs();\n      set_fs(KERNEL_DS);\n+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,7,0) // commit 2da62906b1e29\n      size = sock_recvmsg(sock,&msg,len,msg.msg_flags);\n+#else\n+     size = sock_recvmsg(sock, &msg,msg.msg_flags);\n+#endif\n      set_fs(oldfs);\n \n      return size;\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/linux-fusion/40-fusion.rules",
    "content": "KERNEL==\"fusion[0-9]*\", NAME=\"fusion/%n\", GROUP=\"video\", MODE=\"0660\"\n"
  },
  {
    "path": "package/linux-fusion/Config.in",
    "content": "comment \"linux-fusion needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_LINUX_FUSION\n\tbool \"linux-fusion communication layer for DirectFB multi\"\n\tdepends on BR2_LINUX_KERNEL\n\tselect BR2_LINUX_NEEDS_MODULES # not using kernel-module infra\n\thelp\n\t  DirectFB Communication Layer allowing multiple DirectFB\n\t  applications to run concurrently\n\n\t  https://github.com/deniskropp/linux-fusion\n"
  },
  {
    "path": "package/linux-fusion/linux-fusion.hash",
    "content": "# Locally computed\nsha256  c3c71af364ef774c70d3f6fbc32d14bc786d915df633d6fe733e1fde84ad6e99  linux-fusion-9.0.3.tar.xz\nsha256  51bc14bdef3a064383702e638515824986e5a746de236d46ee904ea15312a198  debian/copyright\n"
  },
  {
    "path": "package/linux-fusion/linux-fusion.mk",
    "content": "################################################################################\n#\n# linux-fusion\n#\n################################################################################\n\nLINUX_FUSION_VERSION = 9.0.3\nLINUX_FUSION_SITE = http://directfb.org/downloads/Core/linux-fusion\nLINUX_FUSION_SOURCE = linux-fusion-$(LINUX_FUSION_VERSION).tar.xz\nLINUX_FUSION_INSTALL_STAGING = YES\nLINUX_FUSION_DEPENDENCIES = linux\nLINUX_FUSION_LICENSE = GPL-2.0+\nLINUX_FUSION_LICENSE_FILES = debian/copyright\n\nLINUX_FUSION_ETC_DIR = $(TARGET_DIR)/etc/udev/rules.d\n\nLINUX_FUSION_MAKE_OPTS = \\\n\tKERNEL_VERSION=$(LINUX_VERSION_PROBED) \\\n\tKERNEL_BUILD=$(LINUX_DIR) \\\n\tKERNEL_SOURCE=$(LINUX_DIR) \\\n\tSYSROOT=$(TARGET_DIR) \\\n\tARCH=$(KERNEL_ARCH) \\\n\tCROSS_COMPILE=$(TARGET_CROSS) \\\n\tKERNEL_MODLIB=/lib/modules/$(LINUX_VERSION_PROBED)/kernel\n\ndefine LINUX_FUSION_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) $(LINUX_FUSION_MAKE_OPTS) -C $(@D)\nendef\n\ndefine LINUX_FUSION_INSTALL_STAGING_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) $(LINUX_FUSION_MAKE_OPTS) INSTALL_MOD_PATH=$(STAGING_DIR) -C $(@D) headers_install\nendef\n\ndefine LINUX_FUSION_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) \\\n\t\t$(LINUX_FUSION_MAKE_OPTS) \\\n\t\tINSTALL_MOD_PATH=$(TARGET_DIR) \\\n\t\t-C $(@D) install\n\t$(INSTALL) -D -m 644 package/linux-fusion/40-fusion.rules \\\n\t\t$(LINUX_FUSION_ETC_DIR)/40-fusion.rules\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/linux-headers/Config.in",
    "content": "config BR2_PACKAGE_LINUX_HEADERS\n\tbool\n"
  },
  {
    "path": "package/linux-headers/Config.in.host",
    "content": "comment \"Kernel Header Options\"\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS\n\tbool\n\nchoice\n\tprompt \"Kernel Headers\"\n\tdefault BR2_KERNEL_HEADERS_AS_KERNEL if BR2_LINUX_KERNEL\n\tdefault BR2_KERNEL_HEADERS_5_15\n\thelp\n\t  Select the kernel version to get headers from.\n\n\t  The kernel headers must be at least as old as the oldest\n\t  kernel you intend to run on your target.\n\n\t  If you use Buildroot to build a kernel, then you can use\n\t  the sources from that kernel as source for the headers.\n\n\t  If you choose a custom version of the kernel headers, or\n\t  choose to use the same sources as the kernel, you'll have to\n\t  select (below) the series of that kernel, so that Buildroot\n\t  can show or hide packages that have strong requirements on the\n\t  kernel headers.\n\nconfig BR2_KERNEL_HEADERS_AS_KERNEL\n\tbool \"Same as kernel being built\"\n\tdepends on BR2_LINUX_KERNEL\n\tselect BR2_KERNEL_HEADERS_LATEST if BR2_LINUX_KERNEL_LATEST_VERSION\n\nconfig BR2_KERNEL_HEADERS_4_4\n\tbool \"Linux 4.4.x kernel headers\"\n\tdepends on !BR2_riscv\n\tdepends on !BR2_csky\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4\n\nconfig BR2_KERNEL_HEADERS_4_9\n\tbool \"Linux 4.9.x kernel headers\"\n\tdepends on !BR2_riscv\n\tdepends on !BR2_csky\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\nconfig BR2_KERNEL_HEADERS_4_14\n\tbool \"Linux 4.14.x kernel headers\"\n\tdepends on !BR2_riscv\n\tdepends on !BR2_csky\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14\n\nconfig BR2_KERNEL_HEADERS_4_19\n\tbool \"Linux 4.19.x kernel headers\"\n\tdepends on !BR2_csky\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19\n\nconfig BR2_KERNEL_HEADERS_5_4\n\tbool \"Linux 5.4.x kernel headers\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\nconfig BR2_KERNEL_HEADERS_5_10\n\tbool \"Linux 5.10.x kernel headers\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10\n\nconfig BR2_KERNEL_HEADERS_5_14\n\tbool \"Linux 5.14.x kernel headers\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14\n\nconfig BR2_KERNEL_HEADERS_5_15\n\tbool \"Linux 5.15.x kernel headers\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15\n\tselect BR2_KERNEL_HEADERS_LATEST\n\nconfig BR2_KERNEL_HEADERS_VERSION\n\tbool \"Manually specified Linux version\"\n\thelp\n\t  This option allows you to use a specific official version from\n\t  kernel.org, like 2.6.x, 2.6.x.y, 3.x.y, ...\n\n\t  Note: you cannot use this option to select a _longterm_ 2.6\n\t  kernel, because these kernels are not located at the standard\n\t  URL at kernel.org. Instead, select \"Custom tarball\" and\n\t  specify the right URL directly.\n\nconfig BR2_KERNEL_HEADERS_CUSTOM_TARBALL\n\tbool \"Custom tarball\"\n\thelp\n\t  This option allows you to specify a URL pointing to a kernel\n\t  source tarball. This URL can use any protocol recognized by\n\t  Buildroot, like http://, ftp://, file:// or scp://.\n\n\t  When pointing to a local tarball using file://, you may want\n\t  to use a make variable like $(TOPDIR) to reference the root of\n\t  the Buildroot tree.\n\nconfig BR2_KERNEL_HEADERS_CUSTOM_GIT\n\tbool \"Custom Git repository\"\n\thelp\n\t  This option allows Buildroot to get the Linux kernel source\n\t  code from a Git repository.\n\nendchoice\n\n# Select this for the latest kernel headers version (for license hashes)\nconfig BR2_KERNEL_HEADERS_LATEST\n\tbool\n\nconfig BR2_DEFAULT_KERNEL_VERSION\n\tstring \"linux version\"\n\tdepends on BR2_KERNEL_HEADERS_VERSION\n\thelp\n\t  Specify the version you want to use.\n\t  E.G.: 3.6.10\n\nconfig BR2_KERNEL_HEADERS_CUSTOM_TARBALL_LOCATION\n\tstring \"URL of custom kernel tarball\"\n\tdepends on BR2_KERNEL_HEADERS_CUSTOM_TARBALL\n\nif BR2_KERNEL_HEADERS_CUSTOM_GIT\n\nconfig BR2_KERNEL_HEADERS_CUSTOM_REPO_URL\n\tstring \"URL of custom repository\"\n\nconfig BR2_KERNEL_HEADERS_CUSTOM_REPO_VERSION\n\tstring \"Custom repository version\"\n\thelp\n\t  Revision to use in the typical format used by\n\t  Git/Mercurial/Subversion E.G. a sha id, a tag, branch, ..\n\nendif\n\nchoice\n\tbool \"Custom kernel headers series\"\n\tdepends on BR2_KERNEL_HEADERS_VERSION || BR2_KERNEL_HEADERS_AS_KERNEL || \\\n\t\t   BR2_KERNEL_HEADERS_CUSTOM_TARBALL || BR2_KERNEL_HEADERS_CUSTOM_GIT\n\thelp\n\t  Specify the kernel headers series you manually selected,\n\t  above.\n\n\t  This is used to hide/show some packages that have strict\n\t  requirements on the version of kernel headers.\n\n\t  If your kernel headers are more recent than the latest version\n\t  in the choice, then select the latest version.\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15\n\tbool \"5.15.x or later\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_14\n\tbool \"5.14.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_13\n\tbool \"5.13.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_12\n\tbool \"5.12.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_11\n\tbool \"5.11.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10\n\tbool \"5.10.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_9\n\tbool \"5.9.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_8\n\tbool \"5.8.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_7\n\tbool \"5.7.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_6\n\tbool \"5.6.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_5\n\tbool \"5.5.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4\n\tbool \"5.4.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_3\n\tbool \"5.3.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_2\n\tbool \"5.2.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_1\n\tbool \"5.1.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_0\n\tbool \"5.0.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_20\n\tbool \"4.20.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19\n\tbool \"4.19.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18\n\tbool \"4.18.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_17\n\tbool \"4.17.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16\n\tbool \"4.16.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15\n\tbool \"4.15.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14\n\tbool \"4.14.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13\n\tbool \"4.13.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12\n\tbool \"4.12.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11\n\tbool \"4.11.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_10\n\tbool \"4.10.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9\n\tbool \"4.9.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8\n\tbool \"4.8.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7\n\tbool \"4.7.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6\n\tbool \"4.6.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_5\n\tbool \"4.5.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4\n\tbool \"4.4.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_3\n\tbool \"4.3.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_2\n\tbool \"4.2.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1\n\tbool \"4.1.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_0\n\tbool \"4.0.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_19\n\tbool \"3.19.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18\n\tbool \"3.18.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_17\n\tbool \"3.17.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_16\n\tbool \"3.16.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_15\n\tbool \"3.15.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14\n\tbool \"3.14.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_13\n\tbool \"3.13.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_12\n\tbool \"3.12.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_11\n\tbool \"3.11.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_10\n\tbool \"3.10.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_9\n\tbool \"3.9.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_8\n\tbool \"3.8.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_7\n\tbool \"3.7.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_6\n\tbool \"3.6.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_5\n\tbool \"3.5.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_4\n\tbool \"3.4.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_3\n\tbool \"3.3.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_2\n\tbool \"3.2.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_1\n\tbool \"3.1.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_0\n\tbool \"3.0.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\nconfig BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_REALLY_OLD\n\tbool \"2.6.x\"\n\nendchoice\n\nconfig BR2_DEFAULT_KERNEL_HEADERS\n\tstring\n\tdefault \"4.4.293\"\tif BR2_KERNEL_HEADERS_4_4\n\tdefault \"4.9.291\"\tif BR2_KERNEL_HEADERS_4_9\n\tdefault \"4.14.256\"\tif BR2_KERNEL_HEADERS_4_14\n\tdefault \"4.19.219\"\tif BR2_KERNEL_HEADERS_4_19\n\tdefault \"5.4.163\"\tif BR2_KERNEL_HEADERS_5_4\n\tdefault \"5.10.83\"\tif BR2_KERNEL_HEADERS_5_10\n\tdefault \"5.14.21\"\tif BR2_KERNEL_HEADERS_5_14\n\tdefault \"5.15.6\"\tif BR2_KERNEL_HEADERS_5_15\n\tdefault BR2_DEFAULT_KERNEL_VERSION if BR2_KERNEL_HEADERS_VERSION\n\tdefault \"custom\"\tif BR2_KERNEL_HEADERS_CUSTOM_TARBALL\n\tdefault BR2_KERNEL_HEADERS_CUSTOM_REPO_VERSION \\\n\t\tif BR2_KERNEL_HEADERS_CUSTOM_GIT\n"
  },
  {
    "path": "package/linux-headers/linux-headers.mk",
    "content": "################################################################################\n#\n# linux-headers\n#\n################################################################################\n\n# This package is used to provide Linux kernel headers for the\n# internal toolchain backend.\n\n# Set variables depending on whether we are using headers from a kernel\n# build or a standalone header package.\nifeq ($(BR2_KERNEL_HEADERS_AS_KERNEL),y)\nLINUX_HEADERS_CUSTOM_TARBALL = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_TARBALL))\nLINUX_HEADERS_CUSTOM_GIT = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_GIT))\nLINUX_HEADERS_CUSTOM_HG = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_HG))\nLINUX_HEADERS_CUSTOM_SVN = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_SVN))\nLINUX_HEADERS_VERSION = $(call qstrip,$(BR2_LINUX_KERNEL_VERSION))\nLINUX_HEADERS_CUSTOM_TARBALL_LOCATION = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION))\nLINUX_HEADERS_REPO_URL = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL))\nLINUX_HEADERS_CIP = $(BR2_LINUX_KERNEL_LATEST_CIP_VERSION)$(BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION)\nifneq ($(LINUX_HEADERS_OVERRIDE_SRCDIR),)\n$(error LINUX_HEADERS_OVERRIDE_SRCDIR must not be set when BR2_KERNEL_HEADERS_AS_KERNEL=y)\nendif\nLINUX_HEADERS_OVERRIDE_SRCDIR = $(LINUX_OVERRIDE_SRCDIR)\nelse # ! BR2_KERNEL_HEADERS_AS_KERNEL\nLINUX_HEADERS_CUSTOM_TARBALL = $(call qstrip,$(BR2_KERNEL_HEADERS_CUSTOM_TARBALL))\nLINUX_HEADERS_CUSTOM_GIT = $(call qstrip,$(BR2_KERNEL_HEADERS_CUSTOM_GIT))\nLINUX_HEADERS_CUSTOM_HG =\nLINUX_HEADERS_CUSTOM_SVN =\nLINUX_HEADERS_VERSION = $(call qstrip,$(BR2_DEFAULT_KERNEL_HEADERS))\nLINUX_HEADERS_CUSTOM_TARBALL_LOCATION = $(call qstrip,$(BR2_KERNEL_HEADERS_CUSTOM_TARBALL_LOCATION))\nLINUX_HEADERS_REPO_URL = $(call qstrip,$(BR2_KERNEL_HEADERS_CUSTOM_REPO_URL))\nLINUX_HEADERS_CIP =\nendif # BR2_KERNEL_HEADERS_AS_KERNEL\n\n# Compute LINUX_HEADERS_SOURCE and LINUX_HEADERS_SITE from the configuration\nifeq ($(LINUX_HEADERS_CUSTOM_TARBALL),y)\nLINUX_HEADERS_SOURCE = $(notdir $(LINUX_HEADERS_CUSTOM_TARBALL_LOCATION))\nLINUX_HEADERS_SITE = $(patsubst %/,%,$(dir $(LINUX_HEADERS_CUSTOM_TARBALL_LOCATION)))\nelse ifeq ($(LINUX_HEADERS_CUSTOM_GIT),y)\nLINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION)$(BR_FMT_VERSION_git).tar.gz\nLINUX_HEADERS_SITE = $(LINUX_HEADERS_REPO_URL)\nLINUX_HEADERS_SITE_METHOD = git\nelse ifeq ($(LINUX_HEADERS_CUSTOM_HG),y)\nLINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.gz\nLINUX_HEADERS_SITE = $(LINUX_HEADERS_REPO_URL)\nLINUX_HEADERS_SITE_METHOD = hg\nelse ifeq ($(LINUX_HEADERS_CUSTOM_SVN),y)\nLINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION)$(BR_FMT_VERSION_svn).tar.gz\nLINUX_HEADERS_SITE = $(LINUX_HEADERS_REPO_URL)\nLINUX_HEADERS_SITE_METHOD = svn\nelse ifeq ($(LINUX_HEADERS_CIP),y)\nLINUX_HEADERS_SOURCE = linux-cip-$(LINUX_HEADERS_VERSION).tar.gz\nLINUX_HEADERS_SITE = https://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git/snapshot\nelse ifneq ($(findstring -rc,$(LINUX_HEADERS_VERSION)),)\n# Since 4.12-rc1, -rc kernels are generated from cgit. This also works for\n# older -rc kernels.\nLINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.gz\nLINUX_HEADERS_SITE = https://git.kernel.org/torvalds/t\nelse\nLINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.xz\nifeq ($(findstring x2.6.,x$(LINUX_HEADERS_VERSION)),x2.6.)\nLINUX_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v2.6\nelse\nLINUX_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v$(firstword $(subst ., ,$(LINUX_HEADERS_VERSION))).x\nendif # x2.6\nendif # LINUX_HEADERS_CUSTOM_TARBALL\n\n# Apply any necessary patches if we are using the headers from a kernel\n# build.\nifeq ($(BR2_KERNEL_HEADERS_AS_KERNEL),y)\nLINUX_HEADERS_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH)) \\\n\t$(wildcard $(addsuffix /linux,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))))\n\n# We rely on the generic package infrastructure to download and apply\n# remote patches (downloaded from ftp, http or https). For local\n# patches, we can't rely on that infrastructure, because there might\n# be directories in the patch list (unlike for other packages).\nLINUX_HEADERS_PATCH = $(filter ftp://% http://% https://%,$(LINUX_HEADERS_PATCHES))\n\ndefine LINUX_HEADERS_APPLY_LOCAL_PATCHES\n\tfor p in $(filter-out ftp://% http://% https://%,$(LINUX_HEADERS_PATCHES)) ; do \\\n\t\tif test -d $$p ; then \\\n\t\t\t$(APPLY_PATCHES) $(@D) $$p \\*.patch || exit 1 ; \\\n\t\telse \\\n\t\t\t$(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \\\n\t\tfi \\\n\tdone\nendef\n\nLINUX_HEADERS_POST_PATCH_HOOKS += LINUX_HEADERS_APPLY_LOCAL_PATCHES\nendif # BR2_KERNEL_HEADERS_AS_KERNEL\n\n# Skip hash checking for custom kernel headers.\nifeq ($(BR2_KERNEL_HEADERS_VERSION)$(BR2_KERNEL_HEADERS_CUSTOM_TARBALL)$(BR2_KERNEL_HEADERS_CUSTOM_GIT),y)\nBR_NO_CHECK_HASH_FOR += $(LINUX_HEADERS_SOURCE)\nendif\n\n# linux-headers really is the same as the linux package\nLINUX_HEADERS_DL_SUBDIR = linux\n\nLINUX_HEADERS_LICENSE = GPL-2.0\nifeq ($(BR2_KERNEL_HEADERS_LATEST),y)\nLINUX_HEADERS_LICENSE_FILES = \\\n\tCOPYING \\\n\tLICENSES/preferred/GPL-2.0 \\\n\tLICENSES/exceptions/Linux-syscall-note\nendif\nLINUX_HEADERS_CPE_ID_VENDOR = linux\nLINUX_HEADERS_CPE_ID_PRODUCT = linux_kernel\n\nLINUX_HEADERS_INSTALL_STAGING = YES\n\n# linux-headers is part of the toolchain so disable the toolchain dependency\nLINUX_HEADERS_ADD_TOOLCHAIN_DEPENDENCY = NO\n\n# For some architectures (eg. Arc, Cris, Hexagon, ia64, parisc,\n# score and xtensa), the Linux buildsystem tries to call the\n# cross-compiler, although it is not needed at all.\n# This results in seemingly errors like:\n#   [...]/scripts/gcc-version.sh: line 26: arc-linux-uclibc-gcc: command not found\n# Those can be safely ignored.\n\n# This step is required to have a separate linux headers location for\n# uClibc building. This way uClibc doesn't modify linux headers on installation\n# of \"its\" headers\ndefine LINUX_HEADERS_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\t\t\tARCH=$(KERNEL_ARCH) \\\n\t\t\tHOSTCC=\"$(HOSTCC)\" \\\n\t\t\tHOSTCFLAGS=\"$(HOSTCFLAGS)\" \\\n\t\t\tHOSTCXX=\"$(HOSTCXX)\" \\\n\t\t\tINSTALL_HDR_PATH=$(@D)/usr \\\n\t\t\theaders_install)\nendef\n\ndefine LINUX_HEADERS_INSTALL_STAGING_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\t\t\tARCH=$(KERNEL_ARCH) \\\n\t\t\tHOSTCC=\"$(HOSTCC)\" \\\n\t\t\tHOSTCFLAGS=\"$(HOSTCFLAGS)\" \\\n\t\t\tHOSTCXX=\"$(HOSTCXX)\" \\\n\t\t\tINSTALL_HDR_PATH=$(STAGING_DIR)/usr \\\n\t\t\theaders_install)\nendef\n\nifeq ($(BR2_KERNEL_HEADERS_VERSION)$(BR2_KERNEL_HEADERS_AS_KERNEL)$(BR2_KERNEL_HEADERS_CUSTOM_TARBALL)$(BR2_KERNEL_HEADERS_CUSTOM_GIT),y)\n# In this case, we must always do a 'loose' test, because they are all\n# custom versions which may be later than what we know right now.\ndefine LINUX_HEADERS_CHECK_VERSION\n\t$(call check_kernel_headers_version,\\\n\t\t$(BUILD_DIR),\\\n\t\t$(STAGING_DIR),\\\n\t\t$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)),\\\n\t\tloose)\nendef\nLINUX_HEADERS_POST_INSTALL_STAGING_HOOKS += LINUX_HEADERS_CHECK_VERSION\nendif\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/linux-pam/0001-configure-test-a-o-is-not-POSIX.patch",
    "content": "From 7c54428db5b639f05093459b1ba3b77456c5a548 Mon Sep 17 00:00:00 2001\nFrom: \"Issam E. Maghni\" <issam.e.maghni@mailbox.org>\nDate: Wed, 16 Dec 2020 18:48:28 -0500\nSubject: [PATCH] configure: test -a|o is not POSIX\n\nFixes `test: too many arguments` when building Linux-PAM using sbase.\nThis is due to a non-POSIX syntax test ... -a ... and test ... -o ....\n\n> The XSI extensions specifying the -a and -o binary primaries and the\n> '(' and ')' operators have been marked obsolescent.\n\nSee https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html\n\n[Retrieved from:\nhttps://github.com/linux-pam/linux-pam/commit/7c54428db5b639f05093459b1ba3b77456c5a548]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac | 12 ++++++------\n 1 file changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 5eade7cd3..e325bdd3c 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -346,7 +346,7 @@ if test x\"$WITH_LIBAUDIT\" != xno ; then\n \t\t\t     [HAVE_AUDIT_TTY_STATUS=\"\"],\n \t\t\t     [#include <libaudit.h>])]\n         )\n-        if test -n \"$LIBAUDIT\" -a \"$ac_cv_header_libaudit_h\" != \"no\" ; then\n+        if test -n \"$LIBAUDIT\" && test \"$ac_cv_header_libaudit_h\" != \"no\" ; then\n             AC_DEFINE([HAVE_LIBAUDIT], 1, [Define to 1 if audit support should be compiled in.])\n         fi\n         if test -n \"$HAVE_AUDIT_TTY_STATUS\" ; then\n@@ -373,12 +373,12 @@ esac\n AC_CHECK_FUNCS(crypt_r crypt_gensalt_r)\n LIBS=$BACKUP_LIBS\n AC_SUBST(LIBCRYPT)\n-if test \"$LIBCRYPT\" = \"-lxcrypt\" -a \"$ac_cv_header_xcrypt_h\" = \"yes\" ; then\n+if test \"$LIBCRYPT\" = \"-lxcrypt\" && test \"$ac_cv_header_xcrypt_h\" = \"yes\" ; then\n \tAC_DEFINE([HAVE_LIBXCRYPT], 1, [Define to 1 if xcrypt support should be compiled in.])\n fi\n \n AC_ARG_WITH([randomdev], AS_HELP_STRING([--with-randomdev=(<path>|yes|no)],[use specified random device instead of /dev/urandom or 'no' to disable]), opt_randomdev=$withval)\n-if test \"$opt_randomdev\" = yes -o -z \"$opt_randomdev\"; then\n+if test \"$opt_randomdev\" = yes || test -z \"$opt_randomdev\"; then\n        opt_randomdev=\"/dev/urandom\"\n elif test \"$opt_randomdev\" = no; then\n        opt_randomdev=\n@@ -395,7 +395,7 @@ AC_ARG_ENABLE([db],\n AC_ARG_WITH([db-uniquename],\n \tAS_HELP_STRING([--with-db-uniquename=extension],[Unique name for db libraries and functions.]))\n if test x\"$WITH_DB\" != xno ; then\n-        if test x\"$WITH_DB\" = xyes -o x\"$WITH_DB\" = xdb ; then\n+        if test x\"$WITH_DB\" = xyes || test x\"$WITH_DB\" = xdb ; then\n               old_libs=$LIBS\n               LIBS=\"$LIBS -ldb$with_db_uniquename\"\n               AC_CHECK_FUNCS([db_create$with_db_uniquename db_create dbm_store$with_db_uniquename dbm_store],\n@@ -572,7 +572,7 @@ fi\n \n AC_PATH_PROG([FO2PDF], [fop])\n \n-AM_CONDITIONAL(ENABLE_REGENERATE_MAN, test x$enable_docu != xno -a x$enable_doc != xno)\n+AM_CONDITIONAL(ENABLE_REGENERATE_MAN, test x$enable_docu != xno && test x$enable_doc != xno)\n AM_CONDITIONAL(ENABLE_GENERATE_PDF, test -n \"$FO2PDF\")\n \n \n@@ -625,7 +625,7 @@ esac\n AM_CONDITIONAL([COND_BUILD_PAM_KEYINIT], [test \"$have_key_syscalls\" = 1])\n AM_CONDITIONAL([COND_BUILD_PAM_LASTLOG], [test \"$ac_cv_func_logwtmp\" = yes])\n AM_CONDITIONAL([COND_BUILD_PAM_NAMESPACE], [test \"$ac_cv_func_unshare\" = yes])\n-AM_CONDITIONAL([COND_BUILD_PAM_RHOSTS], [test \"$ac_cv_func_ruserok_af\" = yes -o \"$ac_cv_func_ruserok\" = yes])\n+AM_CONDITIONAL([COND_BUILD_PAM_RHOSTS], [test \"$ac_cv_func_ruserok_af\" = yes || test \"$ac_cv_func_ruserok\" = yes])\n AM_CONDITIONAL([COND_BUILD_PAM_SELINUX], [test -n \"$LIBSELINUX\"])\n AM_CONDITIONAL([COND_BUILD_PAM_SEPERMIT], [test -n \"$LIBSELINUX\"])\n AM_CONDITIONAL([COND_BUILD_PAM_SETQUOTA], [test \"$ac_cv_func_quotactl\" = yes])\n"
  },
  {
    "path": "package/linux-pam/0002-Remove-support-for-legacy-xcrypt.patch",
    "content": "From 530c9f9e2d746e1d168c6b17863debda7664ac7c Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Bj=C3=B6rn=20Esser?= <besser82@fedoraproject.org>\nDate: Fri, 28 Feb 2020 15:47:52 +0100\nSubject: [PATCH] Remove support for legacy xcrypt\n\nSince many distributions are shipping a version of libxcrypt >= 4.0.0\nas a replacement for glibc's libcrypt now, older versions of xcrypt,\nwhich could be installed in parallel, are not relevant anymore.\n\n* configure.ac (AC_CHECK_HEADERS): Remove xcrypt.h.\n(AC_SEARCH_LIBS): Remove xcrypt.\n(AC_CHECK_FUNCS): Remove crypt_gensalt_r.\n(AC_DEFINE): Remove HAVE_LIBXCRYPT.\n* modules/pam_pwhistory/opasswd.c [HAVE_LIBXCRYPT]: Remove.\n* modules/pam_unix/bigcrypt.c [HAVE_LIBXCRYPT]: Likewise.\n* modules/pam_userdb/pam_userdb.c [HAVE_LIBXCRYPT]: Likewise.\n* modules/pam_unix/passverify.c [HAVE_LIBXCRYPT]: Likewise.\n(create_password_hash) [HAVE_LIBXCRYPT]: Likewise.\n\n[Retrieved from:\nhttps://github.com/linux-pam/linux-pam/commit/530c9f9e2d746e1d168c6b17863debda7664ac7c]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac                    | 12 +++---------\n modules/pam_pwhistory/opasswd.c |  4 +---\n modules/pam_unix/bigcrypt.c     |  4 +---\n modules/pam_unix/passverify.c   | 24 +++++-------------------\n modules/pam_userdb/pam_userdb.c |  4 +---\n 5 files changed, 11 insertions(+), 37 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 8e5d0ff7c..100565552 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -359,23 +359,17 @@ else\n fi\n AC_SUBST(LIBAUDIT)\n \n-AC_CHECK_HEADERS(xcrypt.h crypt.h)\n-AS_IF([test \"x$ac_cv_header_xcrypt_h\" = \"xyes\"],\n-  [crypt_libs=\"xcrypt crypt\"],\n-  [crypt_libs=\"crypt\"])\n+AC_CHECK_HEADERS(crypt.h)\n \n BACKUP_LIBS=$LIBS\n-AC_SEARCH_LIBS([crypt],[$crypt_libs])\n+AC_SEARCH_LIBS([crypt],[crypt])\n case \"$ac_cv_search_crypt\" in\n \t-l*) LIBCRYPT=\"$ac_cv_search_crypt\" ;;\n \t*) LIBCRYPT=\"\" ;;\n esac\n-AC_CHECK_FUNCS(crypt_r crypt_gensalt_r)\n+AC_CHECK_FUNCS([crypt_r])\n LIBS=$BACKUP_LIBS\n AC_SUBST(LIBCRYPT)\n-if test \"$LIBCRYPT\" = \"-lxcrypt\" && test \"$ac_cv_header_xcrypt_h\" = \"yes\" ; then\n-\tAC_DEFINE([HAVE_LIBXCRYPT], 1, [Define to 1 if xcrypt support should be compiled in.])\n-fi\n \n AC_ARG_WITH([randomdev], AS_HELP_STRING([--with-randomdev=(<path>|yes|no)],[use specified random device instead of /dev/urandom or 'no' to disable]), opt_randomdev=$withval)\n if test \"$opt_randomdev\" = yes || test -z \"$opt_randomdev\"; then\ndiff --git a/modules/pam_pwhistory/opasswd.c b/modules/pam_pwhistory/opasswd.c\nindex 40296d590..a6cd3d2a3 100644\n--- a/modules/pam_pwhistory/opasswd.c\n+++ b/modules/pam_pwhistory/opasswd.c\n@@ -54,9 +54,7 @@\n #endif\n #include <sys/stat.h>\n \n-#if defined HAVE_LIBXCRYPT\n-#include <xcrypt.h>\n-#elif defined (HAVE_CRYPT_H)\n+#ifdef HAVE_CRYPT_H\n #include <crypt.h>\n #endif\n \ndiff --git a/modules/pam_unix/bigcrypt.c b/modules/pam_unix/bigcrypt.c\nindex 31be2f7b0..d8d61a4b0 100644\n--- a/modules/pam_unix/bigcrypt.c\n+++ b/modules/pam_unix/bigcrypt.c\n@@ -29,9 +29,7 @@\n #include <string.h>\n #include <stdlib.h>\n #include <security/_pam_macros.h>\n-#ifdef HAVE_LIBXCRYPT\n-#include <xcrypt.h>\n-#elif defined(HAVE_CRYPT_H)\n+#ifdef HAVE_CRYPT_H\n #include <crypt.h>\n #endif\n \ndiff --git a/modules/pam_unix/passverify.c b/modules/pam_unix/passverify.c\nindex 5a19ed856..e833402c1 100644\n--- a/modules/pam_unix/passverify.c\n+++ b/modules/pam_unix/passverify.c\n@@ -19,9 +19,7 @@\n #include <sys/time.h>\n #include <sys/stat.h>\n #include <fcntl.h>\n-#ifdef HAVE_LIBXCRYPT\n-#include <xcrypt.h>\n-#elif defined(HAVE_CRYPT_H)\n+#ifdef HAVE_CRYPT_H\n #include <crypt.h>\n #endif\n \n@@ -467,23 +465,11 @@ PAMH_ARG_DECL(char * create_password_hash,\n \t */\n \tsp = crypt_gensalt_rn(algoid, rounds, NULL, 0, salt, sizeof(salt));\n #else\n-#ifdef HAVE_CRYPT_GENSALT_R\n-\tif (on(UNIX_BLOWFISH_PASS, ctrl)) {\n-\t\tchar entropy[17];\n-\t\tcrypt_make_salt(entropy, sizeof(entropy) - 1);\n-\t\tsp = crypt_gensalt_r (algoid, rounds,\n-\t\t\t\t      entropy, sizeof(entropy),\n-\t\t\t\t      salt, sizeof(salt));\n-\t} else {\n-#endif\n-\t\tsp = stpcpy(salt, algoid);\n-\t\tif (on(UNIX_ALGO_ROUNDS, ctrl)) {\n-\t\t\tsp += snprintf(sp, sizeof(salt) - (16 + 1 + (sp - salt)), \"rounds=%u$\", rounds);\n-\t\t}\n-\t\tcrypt_make_salt(sp, 16);\n-#ifdef HAVE_CRYPT_GENSALT_R\n+\tsp = stpcpy(salt, algoid);\n+\tif (on(UNIX_ALGO_ROUNDS, ctrl)) {\n+\t\tsp += snprintf(sp, sizeof(salt) - (16 + 1 + (sp - salt)), \"rounds=%u$\", rounds);\n \t}\n-#endif\n+\tcrypt_make_salt(sp, 16);\n #endif /* CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY */\n #ifdef HAVE_CRYPT_R\n \tsp = NULL;\ndiff --git a/modules/pam_userdb/pam_userdb.c b/modules/pam_userdb/pam_userdb.c\nindex d59801bfd..f467ea4c8 100644\n--- a/modules/pam_userdb/pam_userdb.c\n+++ b/modules/pam_userdb/pam_userdb.c\n@@ -17,9 +17,7 @@\n #include <sys/stat.h>\n #include <fcntl.h>\n #include <errno.h>\n-#ifdef HAVE_LIBXCRYPT\n-#include <xcrypt.h>\n-#elif defined(HAVE_CRYPT_H)\n+#ifdef HAVE_CRYPT_H\n #include <crypt.h>\n #endif\n \n"
  },
  {
    "path": "package/linux-pam/0003-configure.ac-fix-build-with-libxcrypt-and-uclibc-ng.patch",
    "content": "From fe1307512fb8892b5ceb3d884c793af8dbd4c16a Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 15 Jun 2021 07:13:56 +0200\nSubject: [PATCH] configure.ac: fix build with libxcrypt and uclibc-ng\n\nFix the following build failure with libxcrypt and uclibc-ng:\n\nld: unix_chkpwd-passverify.o: in function `verify_pwd_hash':\npassverify.c:(.text+0xab4): undefined reference to `crypt_checksalt'\n\nFixes:\n - http://autobuild.buildroot.org/results/65d68b7c9c7de1c7cb0f941ff9982f93a49a56f8\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/linux-pam/linux-pam/commit/fe1307512fb8892b5ceb3d884c793af8dbd4c16a]\n---\n configure.ac | 16 ++++++++++++----\n 1 file changed, 12 insertions(+), 4 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 7a4b2e86..e9c57345 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -362,10 +362,18 @@ AC_SUBST(LIBAUDIT)\n AC_CHECK_HEADERS(crypt.h)\n \n BACKUP_LIBS=$LIBS\n-AC_SEARCH_LIBS([crypt],[crypt])\n-case \"$ac_cv_search_crypt\" in\n-\t-l*) LIBCRYPT=\"$ac_cv_search_crypt\" ;;\n-\t*) LIBCRYPT=\"\" ;;\n+LIBCRYPT=\"\"\n+AC_SEARCH_LIBS([crypt_gensalt_rn],[crypt])\n+case \"$ac_cv_search_crypt_gensalt_rn\" in\n+\t-l*) LIBCRYPT=\"$ac_cv_search_crypt_gensalt_rn\" ;;\n+\tno) AC_SEARCH_LIBS([crypt_r],[crypt])\n+\t\tcase \"$ac_cv_search_crypt_r\" in\n+\t\t-l*) LIBCRYPT=\"$ac_cv_search_crypt_r\" ;;\n+\t\tno ) AC_SEARCH_LIBS([crypt],[crypt])\n+\t\tcase \"$ac_cv_search_crypt\" in\n+\t\t\t-l*) LIBCRYPT=\"$ac_cv_search_crypt\" ;;\n+\t\tesac ;;\n+\tesac ;;\n esac\n AC_CHECK_FUNCS([crypt_r])\n LIBS=$BACKUP_LIBS\n"
  },
  {
    "path": "package/linux-pam/0004-configure.ac-also-search-libcrypt-through-pkg-config.patch",
    "content": "From 49e3ffcbe267691dfbf24c91417aa296e7412146 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 29 Aug 2021 21:15:57 +0200\nSubject: [PATCH] configure.ac: also search libcrypt through pkg-config\n\nlibxcrypt provides a libcrypt.pc file so use it if available as this\nwill allow to retrieve the library path (e.g.\n-L/home/buildroot/output/host//riscv64-buildroot-linux-musl/sysroot/usr/lib)\nwhich is useful when cross-compiling and will avoid the following build\nfailure on buildroot:\n\n/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/riscv64-buildroot-linux-musl/10.2.0/../../../../riscv64-buildroot-linux-musl/bin/ld: .libs/passverify.o: in function `.L30':\npassverify.c:(.text+0x368): undefined reference to `crypt_checksalt'\n\nFixes:\n - http://autobuild.buildroot.org/results/20b14e222b35c2d1269960075832b784ba81aa1a\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/linux-pam/linux-pam/commit/49e3ffcbe267691dfbf24c91417aa296e7412146]\n---\n configure.ac | 13 ++++++++++---\n 1 file changed, 10 insertions(+), 3 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex d464884c..c06bc7dd 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -363,8 +363,14 @@ AC_CHECK_HEADERS(crypt.h)\n \n BACKUP_LIBS=$LIBS\n LIBCRYPT=\"\"\n-AC_SEARCH_LIBS([crypt_gensalt_rn],[crypt])\n-case \"$ac_cv_search_crypt_gensalt_rn\" in\n+PKG_CHECK_MODULES([CRYPT], [libcrypt], [\n+  CFLAGS=\"$CFLAGS $CRYPT_CFLAGS\"\n+  CPPFLAGS=\"$CPPFLAGS $CRYPT_CFLAGS\"\n+  LIBS=\"$LIBS $CRYPT_LIBS\"\n+  LIBCRYPT=\"$CRYPT_LIBS\"\n+], [\n+  AC_SEARCH_LIBS([crypt_gensalt_rn],[crypt])\n+  case \"$ac_cv_search_crypt_gensalt_rn\" in\n \t-l*) LIBCRYPT=\"$ac_cv_search_crypt_gensalt_rn\" ;;\n \tno) AC_SEARCH_LIBS([crypt_r],[crypt])\n \t\tcase \"$ac_cv_search_crypt_r\" in\n@@ -374,7 +380,8 @@ case \"$ac_cv_search_crypt_gensalt_rn\" in\n \t\t\t-l*) LIBCRYPT=\"$ac_cv_search_crypt\" ;;\n \t\tesac ;;\n \tesac ;;\n-esac\n+  esac\n+])\n AC_CHECK_FUNCS([crypt_r])\n LIBS=$BACKUP_LIBS\n AC_SUBST(LIBCRYPT)\n"
  },
  {
    "path": "package/linux-pam/Config.in",
    "content": "config BR2_PACKAGE_LINUX_PAM\n\tbool \"linux-pam\"\n\tdepends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR)\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_FLEX\n\thelp\n\t  A Security Framework that Provides Authentication for\n\t  Applications\n\n\t  http://linux-pam.org\n\ncomment \"linux-pam needs a toolchain w/ wchar, locale, dynamic library\"\n\tdepends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \\\n\t\t|| BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/linux-pam/linux-pam.hash",
    "content": "# Locally computed hashes after checking signature at\n# https://github.com/linux-pam/linux-pam/releases/download/v1.5.0/Linux-PAM-1.5.1.tar.xz.asc\n# signed with the key 8C6BFD92EE0F42EDF91A6A736D1A7F052E5924BB\nsha256  201d40730b1135b1b3cdea09f2c28ac634d73181ccd0172ceddee3649c5792fc  Linux-PAM-1.5.1.tar.xz\n# Locally computed\nsha256  133d98e7a2ab3ffd330b4debb0bfc10fea21e4b2b5a5b09de2e924293be5ff08  Copyright\n"
  },
  {
    "path": "package/linux-pam/linux-pam.mk",
    "content": "################################################################################\n#\n# linux-pam\n#\n################################################################################\n\nLINUX_PAM_VERSION = 1.5.1\nLINUX_PAM_SOURCE = Linux-PAM-$(LINUX_PAM_VERSION).tar.xz\nLINUX_PAM_SITE = https://github.com/linux-pam/linux-pam/releases/download/v$(LINUX_PAM_VERSION)\nLINUX_PAM_INSTALL_STAGING = YES\nLINUX_PAM_CONF_OPTS = \\\n\t--disable-prelude \\\n\t--disable-isadir \\\n\t--disable-nis \\\n\t--disable-db \\\n\t--disable-regenerate-docu \\\n\t--enable-securedir=/lib/security \\\n\t--libdir=/lib\nLINUX_PAM_DEPENDENCIES = flex host-flex host-pkgconf \\\n\t$(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt) \\\n\t$(TARGET_NLS_DEPENDENCIES)\nLINUX_PAM_LICENSE = BSD-3-Clause\nLINUX_PAM_LICENSE_FILES = Copyright\nLINUX_PAM_MAKE_OPTS += LIBS=$(TARGET_NLS_LIBS)\nLINUX_PAM_CPE_ID_VENDOR = linux-pam\n# We're patching configure.ac\nLINUX_PAM_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nLINUX_PAM_CONF_OPTS += --enable-selinux\nLINUX_PAM_DEPENDENCIES += libselinux\ndefine LINUX_PAM_SELINUX_PAMFILE_TWEAK\n\t$(SED) 's/^# \\(.*pam_selinux.so.*\\)$$/\\1/' \\\n\t\t$(TARGET_DIR)/etc/pam.d/login\nendef\nelse\nLINUX_PAM_CONF_OPTS += --disable-selinux\nendif\n\nifeq ($(BR2_PACKAGE_AUDIT),y)\nLINUX_PAM_CONF_OPTS += --enable-audit\nLINUX_PAM_DEPENDENCIES += audit\nelse\nLINUX_PAM_CONF_OPTS += --disable-audit\nendif\n\n# Install default pam config (deny everything except login)\ndefine LINUX_PAM_INSTALL_CONFIG\n\t$(INSTALL) -m 0644 -D package/linux-pam/login.pam \\\n\t\t$(TARGET_DIR)/etc/pam.d/login\n\t$(INSTALL) -m 0644 -D package/linux-pam/other.pam \\\n\t\t$(TARGET_DIR)/etc/pam.d/other\n\t$(LINUX_PAM_SELINUX_PAMFILE_TWEAK)\nendef\n\nLINUX_PAM_POST_INSTALL_TARGET_HOOKS += LINUX_PAM_INSTALL_CONFIG\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/linux-pam/login.pam",
    "content": "auth\t\trequired\tpam_unix.so nullok\n\naccount\t\trequired\tpam_unix.so\n\npassword\trequired\tpam_unix.so nullok\n\n# session\trequired\tpam_selinux.so close\nsession\t\trequired\tpam_limits.so\nsession\t\trequired\tpam_env.so\nsession\t\trequired\tpam_unix.so\nsession\t\toptional\tpam_lastlog.so\n# session\trequired\tpam_selinux.so open\n"
  },
  {
    "path": "package/linux-pam/other.pam",
    "content": "auth\t\trequired\tpam_deny.so\n\naccount\t\trequired\tpam_deny.so\n\npassword\trequired\tpam_deny.so\n\nsession\t\trequired\tpam_deny.so\n"
  },
  {
    "path": "package/linux-serial-test/Config.in",
    "content": "config BR2_PACKAGE_LINUX_SERIAL_TEST\n\tbool \"linux-serial-test\"\n\thelp\n\t  Serial port test utility.\n\n\t  https://github.com/cbrake/linux-serial-test\n"
  },
  {
    "path": "package/linux-serial-test/linux-serial-test.hash",
    "content": "# Locally computed\nsha256  bd612ad9c10cb8090765487d5e2969be09dd0d024e7215dc764e770fbb5cc9e0  linux-serial-test-bf865c37ccf9cbb1826ada61037c036dc1990b7b.tar.gz\nsha256  a2a6760c2c6fa779a635e4a7ad00f668862ebcadb2a8a57d16662543e103e08c  LICENSES/MIT\n"
  },
  {
    "path": "package/linux-serial-test/linux-serial-test.mk",
    "content": "################################################################################\n#\n# linux-serial-test\n#\n################################################################################\n\nLINUX_SERIAL_TEST_VERSION = bf865c37ccf9cbb1826ada61037c036dc1990b7b\nLINUX_SERIAL_TEST_SITE = $(call github,cbrake,linux-serial-test,$(LINUX_SERIAL_TEST_VERSION))\nLINUX_SERIAL_TEST_LICENSE = MIT\nLINUX_SERIAL_TEST_LICENSE_FILES = LICENSES/MIT\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/linux-syscall-support/Config.in",
    "content": "config BR2_PACKAGE_LINUX_SYSCALL_SUPPORT\n\tbool \"linux-syscall-support (lss)\"\n\thelp\n\t  This project provides a header file that can be included into\n\t  your application whenever you need to make direct system\n\t  calls.\n\n\t  https://chromium.googlesource.com/linux-syscall-support/\n"
  },
  {
    "path": "package/linux-syscall-support/linux-syscall-support.hash",
    "content": "# Locally calculated\nsha256  498efb6915ac6e65c82c712fadd3c30f9472764114c835849e02f2c092bacd2d  linux-syscall-support-3f6478ac95edf86cd3da300c2c0d34a438f5dbeb-br1.tar.gz\nsha256  4c1fc9acc9f3867e5c81b5d5f57c52fb9a932662bd4e2e5e43b3fe95390035f5  linux_syscall_support.h\n"
  },
  {
    "path": "package/linux-syscall-support/linux-syscall-support.mk",
    "content": "################################################################################\n#\n# linux-syscall-support\n#\n################################################################################\n\n# Use the same version that the one used by Google-breakpad (see DEPS file)\nLINUX_SYSCALL_SUPPORT_VERSION = 3f6478ac95edf86cd3da300c2c0d34a438f5dbeb\nLINUX_SYSCALL_SUPPORT_SITE = https://chromium.googlesource.com/linux-syscall-support\nLINUX_SYSCALL_SUPPORT_SITE_METHOD = git\nLINUX_SYSCALL_SUPPORT_LICENSE = BSD-3-Clause\nLINUX_SYSCALL_SUPPORT_LICENSE_FILES = linux_syscall_support.h\n\n# Provide only one header file.\nLINUX_SYSCALL_SUPPORT_INSTALL_TARGET = NO\nLINUX_SYSCALL_SUPPORT_INSTALL_STAGING = YES\n\ndefine LINUX_SYSCALL_SUPPORT_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/linux_syscall_support.h \\\n\t\t$(STAGING_DIR)/usr/include/linux_syscall_support.h\nendef\n\ndefine HOST_LINUX_SYSCALL_SUPPORT_INSTALL_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/linux_syscall_support.h \\\n\t\t$(HOST_DIR)/include/linux_syscall_support.h\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/linux-tools/Config.in",
    "content": "menu \"Linux Kernel Tools\"\n\n# No prompt, this is sourced by linux/Config.in as this\n# is no real package and really belongs to the kernel.\nconfig BR2_PACKAGE_LINUX_TOOLS\n\tbool\n\nconfig BR2_PACKAGE_LINUX_TOOLS_BPFTOOL\n\tbool \"bpftool\"\n\tdepends on !BR2_nios2 # binutils\n\tdepends on BR2_USE_WCHAR # binutils, elfutils\n\tdepends on !BR2_STATIC_LIBS # elfutils\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # elfutils\n\tdepends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils\n\tselect BR2_PACKAGE_LINUX_TOOLS\n\tselect BR2_PACKAGE_BINUTILS\n\tselect BR2_PACKAGE_ELFUTILS\n\thelp\n\t  bpftool is a tool for for inspection and simple manipulation\n\t  of eBPF programs and maps.\n\n\t  These tools are available only from kernel version 4.15.\n\ncomment \"bpftool needs a uClibc or glibc toolchain w/ wchar, dynamic library, threads\"\n\tdepends on !BR2_nios2\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)\n\nconfig BR2_PACKAGE_LINUX_TOOLS_CPUPOWER\n\tbool \"cpupower\"\n\tselect BR2_PACKAGE_LINUX_TOOLS\n\tselect BR2_PACKAGE_PCIUTILS\n\thelp\n\t  cpupower is a collection of tools to examine and tune power\n\t  saving related features of your processor.\n\nconfig BR2_PACKAGE_LINUX_TOOLS_GPIO\n\tbool \"gpio\"\n\tselect BR2_PACKAGE_LINUX_TOOLS\n\thelp\n\t  gpio is a collection of tools to get information about,\n\t  control and monitor gpios present on system.\n\n\t  These tools use new gpio ABI which will deprecate sysfs gpio\n\t  interface in the future.\n\n\t  These tools are available only from kernel version 4.8.\n\nconfig BR2_PACKAGE_LINUX_TOOLS_IIO\n\tbool \"iio\"\n\tselect BR2_PACKAGE_LINUX_TOOLS\n\thelp\n\t  iio is a collection of tools to get information about,\n\t  control and monitor iio devices present on system.\n\n\t  These tools are available only from kernel version 4.7.\n\nconfig BR2_PACKAGE_LINUX_TOOLS_PCI\n\tbool \"pci\"\n\tselect BR2_PACKAGE_LINUX_TOOLS\n\thelp\n\t  pcitest is a tool for testing capabilities related to a\n\t  PCI Endpoint (only works with specific Endpoints).\n\n\t  These tools are available only from kernel version 4.20.\n\nconfig BR2_PACKAGE_LINUX_TOOLS_PERF\n\tbool \"perf\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_LINUX_TOOLS\n\thelp\n\t  perf (sometimes \"Perf Events\" or perf tools, originally\n\t  \"Performance Counters for Linux\") - is a performance\n\t  analyzing tool in Linux, available from kernel version\n\t  2.6.31. User-space controlling utility, called 'perf' has\n\t  git-like interface with subcommands. It is capable of\n\t  statistical profiling of entire system (both kernel and user\n\t  code), single CPU or severals threads.\n\n\t  This will build and install the userspace 'perf'\n\t  command.\n\n\t  Your kernel must have CONFIG_PERF_EVENTS enabled to use perf\n\t  profiling. Buildroot automatically enables this in the kernel\n\t  configuration.\n\n\t  https://perf.wiki.kernel.org/\n\nif BR2_PACKAGE_LINUX_TOOLS_PERF\n\nconfig BR2_PACKAGE_LINUX_TOOLS_PERF_TUI\n\tbool \"enable perf TUI\"\n\tdepends on BR2_USE_MMU # slang\n\tselect BR2_PACKAGE_SLANG\n\thelp\n\t  Enable the TUI interface for perf which requires a TTY and\n\t  enables zooming into DSOs and threads as well as other\n\t  features.\n\nendif\n\nconfig BR2_PACKAGE_LINUX_TOOLS_SELFTESTS\n\tbool\"selftests\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash\n\tdepends on BR2_USE_MMU  # bash\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 # util-linux schedutils\n\tselect BR2_PACKAGE_LINUX_TOOLS\n\tselect BR2_PACKAGE_BASH # runtime\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_NCURSES_TARGET_PROGS # runtime (tput)\n\tselect BR2_PACKAGE_KMOD\n\tselect BR2_PACKAGE_KMOD_TOOLS # runtime (modprobe -n)\n\tselect BR2_PACKAGE_POPT\n\tselect BR2_PACKAGE_LIBCAP_NG\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS # runtime (taskset)\n\thelp\n\t  Build and install (to /usr/lib/kselftests) kernel selftests.\n\n\t  Use of this option implies you know the process of using and\n\t  compiling the kernel selftests. The Makefile to build and\n\t  install these is very noisy and may appear to cause your\n\t  build to fail for strange reasons.\n\n\t  This is very much a use at your risk option and may not work\n\t  for every setup or every architecture.\n\ncomment \"selftests needs BR2_PACKAGE_BUSYBOX_SHOW_OTHERS and a toolchain w/ dynamic library and headers >= 3.14\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n\nconfig BR2_PACKAGE_LINUX_TOOLS_TMON\n\tbool \"tmon\"\n\tselect BR2_PACKAGE_LINUX_TOOLS\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  tmon is a terminal-based tool (using curses) that allows the\n\t  user to access thermal information about the system.\n\nconfig BR2_PACKAGE_LINUX_TOOLS_HV\n\tbool \"hv\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tselect BR2_PACKAGE_LINUX_TOOLS\n\tselect BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON if !BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE\n\thelp\n\t  Microsoft HyperV integration services\n\n\t  Relevant kernel configuration options: CONFIG_HYPERV,\n\t  CONFIG_HYPERV_UTILS.\n\nif BR2_PACKAGE_LINUX_TOOLS_HV\n\nconfig BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE\n\tbool\n\nconfig BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON\n\tbool \"hypervkvpd (hv_kvp_daemon)\"\n\thelp\n\t  HyperV uses hypervkvpd (Key/Value Pair daemon) to retrieve\n\t  status information from your virtualized guest OS\n\nconfig BR2_PACKAGE_LINUX_TOOLS_HV_FCOPY_DAEMON\n\tbool \"hypervfcopyd (hv_fcopy_daemon)\"\n\tselect BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE\n\thelp\n\t  HyperV uses hypervfcopyd (File Copy daemon) to easily transfer\n\t  files to and from your virtualized guest OS\n\nconfig BR2_PACKAGE_LINUX_TOOLS_HV_VSS_DAEMON\n\tbool \"hypervvssd (hv_vss_daemon)\"\n\tselect BR2_PACKAGE_LINUX_TOOLS_HV_HAS_ONE\n\thelp\n\t  HyperV uses hypervvssd (Volume Snapshot Service daemon) to\n\t  freeze your filesystems during snapshots and backups\n\nendif # BR2_PACKAGE_LINUX_TOOLS_HV\n\nendmenu\n"
  },
  {
    "path": "package/linux-tools/S10hyperv",
    "content": "#!/bin/sh\n\nPROGS=\"@PROGS@\"\nPIDDIR=\"/var/run\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/hyperv\" ] && . \"/etc/default/hyperv\"\n\nstart_one() {\n\tprintf 'Starting %s: ' \"$1\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -b -m -S -q -p \"$PIDDIR/$1.pid\" -x \"/sbin/$1\" -- -n\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn $status\n}\n\nstart() {\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tfor prog in ${PROGS}; do\n\t\tstart_one \"${prog}\" || ret=$?\n\tdone\n    return $ret\n}\n\nstop_one() {\n\tprintf 'Stopping %s: ' \"$1\"\n\tstart-stop-daemon -K -q -p \"$PIDDIR/$1.pid\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDDIR/$1.pid\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn $status\n}\n\nstop() {\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tfor prog in ${PROGS}; do\n\t\tstop_one \"${prog}\" || ret=$?\n\tdone\n    return $ret\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/linux-tools/hypervfcopyd.service",
    "content": "[Unit]\nDescription=HyperV FCopy daemon\nAfter=syslog.target\nConditionVirtualization=microsoft\n\n[Service]\nType=simple\nExecStart=/usr/sbin/hypervfcopyd -n\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/linux-tools/hypervkvpd.service",
    "content": "[Unit]\nDescription=HyperV KVP daemon\nAfter=syslog.target\nConditionVirtualization=microsoft\n\n[Service]\nType=simple\nExecStart=/usr/sbin/hypervkvpd -n\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/linux-tools/hypervvssd.service",
    "content": "[Unit]\nDescription=HyperV VSS daemon\nAfter=syslog.target\nConditionVirtualization=microsoft\n\n[Service]\nType=simple\nExecStart=/usr/sbin/hypervvssd -n\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/linux-tools/linux-tool-bpftool.mk.in",
    "content": "################################################################################\n#\n# bpftool\n#\n################################################################################\n\nLINUX_TOOLS += bpftool\n\nBPFTOOL_DEPENDENCIES = binutils elfutils\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nBPFTOOL_DEPENDENCIES += libcap\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nBPFTOOL_DEPENDENCIES += zlib\nendif\n\nBPFTOOL_MAKE_OPTS = $(LINUX_MAKE_FLAGS)\n\ndefine BPFTOOL_BUILD_CMDS\n\t$(Q)if ! grep install $(LINUX_DIR)/tools/bpf/bpftool/Makefile >/dev/null 2>&1 ; then \\\n\t\techo \"Your kernel version is too old and does not have install section in the bpf tools.\" ; \\\n\t\techo \"At least kernel 4.15 must be used.\" ; \\\n\t\texit 1 ; \\\n\tfi\n\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools/bpf/bpftool \\\n\t\t$(BPFTOOL_MAKE_OPTS)\nendef\n\ndefine BPFTOOL_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools/bpf/bpftool \\\n\t\t$(BPFTOOL_MAKE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tinstall\nendef\n"
  },
  {
    "path": "package/linux-tools/linux-tool-cpupower.mk.in",
    "content": "################################################################################\n#\n# cpupower\n#\n################################################################################\n\nLINUX_TOOLS += cpupower\n\nCPUPOWER_DEPENDENCIES = pciutils $(TARGET_NLS_DEPENDENCIES)\n\nCPUPOWER_MAKE_OPTS = CROSS=$(TARGET_CROSS) \\\n\tCPUFREQ_BENCH=false \\\n\tNLS=false \\\n\tLDFLAGS=$(TARGET_NLS_LIBS) \\\n\tDEBUG=false\n\ndefine CPUPOWER_BUILD_CMDS\n\t$(Q)if test ! -f $(LINUX_DIR)/tools/power/cpupower/Makefile ; then \\\n\t\techo \"Your kernel version is too old and does not have the cpupower tool.\" ; \\\n\t\techo \"At least kernel 3.4 must be used.\" ; \\\n\t\texit 1 ; \\\n\tfi\n\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \\\n\t\t$(CPUPOWER_MAKE_OPTS) \\\n\t\tcpupower\nendef\n\ndefine CPUPOWER_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \\\n\t\t$(CPUPOWER_MAKE_OPTS) \\\n\t\tDESTDIR=$(STAGING_DIR) \\\n\t\tcpupower_install\nendef\n\ndefine CPUPOWER_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \\\n\t\t$(CPUPOWER_MAKE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tcpupower_install\nendef\n"
  },
  {
    "path": "package/linux-tools/linux-tool-gpio.mk.in",
    "content": "################################################################################\n#\n# gpio\n#\n################################################################################\n\nLINUX_TOOLS += gpio\n\nGPIO_MAKE_OPTS = $(LINUX_MAKE_FLAGS)\n\ndefine GPIO_BUILD_CMDS\n\t$(Q)if ! grep install $(LINUX_DIR)/tools/gpio/Makefile >/dev/null 2>&1 ; then \\\n\t\techo \"Your kernel version is too old and does not have the gpio tools.\" ; \\\n\t\techo \"At least kernel 4.8 must be used.\" ; \\\n\t\texit 1 ; \\\n\tfi\n\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools \\\n\t\t$(GPIO_MAKE_OPTS) \\\n\t\tgpio\nendef\n\ndefine GPIO_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools \\\n\t\t$(GPIO_MAKE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tgpio_install\nendef\n"
  },
  {
    "path": "package/linux-tools/linux-tool-hv.mk.in",
    "content": "################################################################################\n#\n# hv_fcopy_daemon\n#\n################################################################################\n\nLINUX_TOOLS += hv\n\n# The programs to build, as known by the kernel:\nHV_PROGS_$(BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON) += hv_kvp_daemon\nHV_PROGS_$(BR2_PACKAGE_LINUX_TOOLS_HV_FCOPY_DAEMON) += hv_fcopy_daemon\nHV_PROGS_$(BR2_PACKAGE_LINUX_TOOLS_HV_VSS_DAEMON) += hv_vss_daemon\n\n# Give each tools the name most distros install them as:\nHV_hv_kvp_daemon = hypervkvpd\nHV_hv_fcopy_daemon = hypervfcopyd\nHV_hv_vss_daemon = hypervvssd\n\nHV_MAKE_OPTS = CC=\"$(TARGET_CC)\" CFLAGS=\"$(filter-out -g%,$(TARGET_CFLAGS))\"\n\ndefine HV_BUILD_CMDS\n\t$(Q)for prog in $(HV_PROGS_y); do \\\n\t\tif test ! -f $(LINUX_DIR)/tools/hv/$${prog}.c ; then \\\n\t\t\tprintf \"Your kernel version is too old and does not have the HyperV %s tool.\" \"$${prog}\" ; \\\n\t\t\texit 1 ; \\\n\t\tfi; \\\n\tdone\n\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/hv \\\n\t\t$(HV_MAKE_OPTS) \\\n\t\t$(HV_PROGS_y)\nendef\n\nifeq ($(BR2_PACKAGE_LINUX_TOOLS_HV_KVP_DAEMON),y)\ndefine HV_KVP_HELPER\n\t@mkdir -p $(TARGET_DIR)/usr/libexec/hypervkvpd\n\t$(Q)ln -sf /bin/true $(TARGET_DIR)/usr/libexec/hypervkvpd/hv_set_ifconfig\nendef\nendif\n\ndefine HV_INSTALL_TARGET_CMDS\n\t$(foreach prog,$(HV_PROGS_y), \\\n\t\t$(INSTALL) -m 0755 -D $(LINUX_DIR)/tools/hv/$(prog) \\\n\t\t\t$(TARGET_DIR)/usr/sbin/$(HV_$(prog))\n\t)\n\t$(HV_KVP_HELPER)\nendef\n\ndefine HV_INSTALL_INIT_SYSTEMD\n\t$(foreach prog,$(HV_PROGS_y), \\\n\t\t$(INSTALL) -m 0644 -D package/linux-tools/$(HV_$(prog)).service \\\n\t\t\t$(TARGET_DIR)/usr/lib/systemd/system/$(HV_$(prog)).service\n\t)\nendef\n\ndefine HV_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/linux-tools/S10hyperv \\\n\t\t$(TARGET_DIR)/etc/init.d/S10hyperv\n\t$(SED) 's/@PROGS@/$(foreach prog,$(HV_PROGS_y),$(HV_$(prog)))/' \\\n\t\t$(TARGET_DIR)/etc/init.d/S10hyperv\nendef\n"
  },
  {
    "path": "package/linux-tools/linux-tool-iio.mk.in",
    "content": "################################################################################\n#\n# iio\n#\n################################################################################\n\nLINUX_TOOLS += iio\n\nIIO_MAKE_OPTS = $(LINUX_MAKE_FLAGS)\n\ndefine IIO_BUILD_CMDS\n\t$(Q)if ! grep install $(LINUX_DIR)/tools/iio/Makefile >/dev/null 2>&1 ; then \\\n\t\techo \"Your kernel version is too old and does not have install section in the iio tools.\" ; \\\n\t\techo \"At least kernel 4.7 must be used.\" ; \\\n\t\texit 1 ; \\\n\tfi\n\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/iio \\\n\t\t$(IIO_MAKE_OPTS)\nendef\n\n# DESTDIR used since kernel version 4.14\ndefine IIO_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/iio \\\n\t\t$(IIO_MAKE_OPTS) \\\n\t\tINSTALL_ROOT=$(TARGET_DIR) \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tinstall\nendef\n"
  },
  {
    "path": "package/linux-tools/linux-tool-pci.mk.in",
    "content": "################################################################################\n#\n# pci\n#\n################################################################################\n\nLINUX_TOOLS += pci\n\nPCI_MAKE_OPTS = $(LINUX_MAKE_FLAGS)\n\ndefine PCI_BUILD_CMDS\n\t$(Q)if ! grep install $(LINUX_DIR)/tools/pci/Makefile >/dev/null 2>&1 ; then \\\n\t\techo \"Your kernel version is too old and does not have install section in the pci tools.\" ; \\\n\t\techo \"At least kernel 4.20 must be used.\" ; \\\n\t\texit 1 ; \\\n\tfi\n\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/pci \\\n\t\t$(PCI_MAKE_OPTS)\nendef\n\ndefine PCI_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/pci \\\n\t\t$(PCI_MAKE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tinstall\nendef\n"
  },
  {
    "path": "package/linux-tools/linux-tool-perf.mk.in",
    "content": "################################################################################\n#\n# perf\n#\n################################################################################\n\nLINUX_TOOLS += perf\n\nPERF_DEPENDENCIES = host-flex host-bison\n\nifeq ($(KERNEL_ARCH),x86_64)\nPERF_ARCH=x86\nelse\nPERF_ARCH=$(KERNEL_ARCH)\nendif\n\nPERF_MAKE_FLAGS = \\\n\t$(LINUX_MAKE_FLAGS) \\\n\tJOBS=$(PARALLEL_JOBS) \\\n\tARCH=$(PERF_ARCH) \\\n\tDESTDIR=$(TARGET_DIR) \\\n\tprefix=/usr \\\n\tWERROR=0 \\\n\tNO_GTK2=1 \\\n\tNO_LIBPERL=1 \\\n\tNO_LIBPYTHON=1 \\\n\tNO_LIBBIONIC=1\n\n# We need to pass an argument to ld for setting the emulation when\n# building for MIPS architecture, otherwise the default one will always\n# be used and the compilation for most variants will fail.\nifeq ($(BR2_mips),y)\nPERF_MAKE_FLAGS += LD=\"$(TARGET_LD) -m elf32btsmip\"\nelse ifeq ($(BR2_mipsel),y)\nPERF_MAKE_FLAGS += LD=\"$(TARGET_LD) -m elf32ltsmip\"\nelse ifeq ($(BR2_mips64),y)\nifeq ($(BR2_MIPS_NABI32),y)\nPERF_MAKE_FLAGS += LD=\"$(TARGET_LD) -m elf32btsmipn32\"\nelse\nPERF_MAKE_FLAGS += LD=\"$(TARGET_LD) -m elf64btsmip\"\nendif\nelse ifeq ($(BR2_mips64el),y)\nifeq ($(BR2_MIPS_NABI32),y)\nPERF_MAKE_FLAGS += LD=\"$(TARGET_LD) -m elf32ltsmipn32\"\nelse\nPERF_MAKE_FLAGS += LD=\"$(TARGET_LD) -m elf64ltsmip\"\nendif\nendif\n\n# The call to backtrace() function fails for ARC, because for some\n# reason the unwinder from libgcc returns early. Thus the usage of\n# backtrace() should be disabled in perf explicitly: at build time\n# backtrace() appears to be available, but it fails at runtime: the\n# backtrace will contain only several functions from the top of stack,\n# instead of the complete backtrace.\nifeq ($(BR2_arc),y)\nPERF_MAKE_FLAGS += NO_BACKTRACE=1\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_TOOLS_PERF_TUI),y)\nPERF_DEPENDENCIES += slang\nelse\nPERF_MAKE_FLAGS += NO_NEWT=1 NO_SLANG=1\nendif\n\nifeq ($(BR2_PACKAGE_AUDIT),y)\nPERF_DEPENDENCIES += audit\nelse\nPERF_MAKE_FLAGS += NO_LIBAUDIT=1\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nPERF_DEPENDENCIES += zstd\nendif\n\nifeq ($(BR2_PACKAGE_LIBUNWIND),y)\nPERF_DEPENDENCIES += libunwind\nelse\nPERF_MAKE_FLAGS += NO_LIBUNWIND=1\nendif\n\nifeq ($(BR2_PACKAGE_NUMACTL),y)\nPERF_DEPENDENCIES += numactl\nelse\nPERF_MAKE_FLAGS += NO_LIBNUMA=1\nendif\n\nifeq ($(BR2_PACKAGE_ELFUTILS),y)\nPERF_DEPENDENCIES += elfutils\nelse\nPERF_MAKE_FLAGS += NO_LIBELF=1 NO_DWARF=1\nendif\n\nifeq ($(BR2_PACKAGE_BINUTILS),y)\nPERF_DEPENDENCIES += binutils\nelse\nPERF_MAKE_FLAGS += NO_DEMANGLE=1\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nPERF_DEPENDENCIES += openssl\nelse\nPERF_MAKE_FLAGS += NO_LIBCRYPTO=1\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nPERF_DEPENDENCIES += zlib\nelse\nPERF_MAKE_FLAGS += NO_ZLIB=1\nendif\n\n# lzma is provided by xz\nifeq ($(BR2_PACKAGE_XZ),y)\nPERF_DEPENDENCIES += xz\nelse\nPERF_MAKE_FLAGS += NO_LZMA=1\nendif\n\n# We really do not want to build the perf documentation, because it\n# has stringent requirement on the documentation generation tools,\n# like xmlto and asciidoc), which may be lagging behind on some\n# distributions.\n# We name it 'GNUmakefile' so that GNU make will use it instead of\n# the existing 'Makefile'.\ndefine PERF_DISABLE_DOCUMENTATION\n\tif [ -f $(LINUX_DIR)/tools/perf/Documentation/Makefile ]; then \\\n\t\tprintf \"%%:\\n\\t@:\\n\" >$(LINUX_DIR)/tools/perf/Documentation/GNUmakefile; \\\n\tfi\nendef\nLINUX_POST_PATCH_HOOKS += PERF_DISABLE_DOCUMENTATION\n\n# O must be redefined here to overwrite the one used by Buildroot for\n# out of tree build. We build perf in $(LINUX_DIR)/tools/perf/ and not just\n# $(LINUX_DIR) so that it isn't built in the root directory of the kernel\n# sources.\ndefine PERF_BUILD_CMDS\n\t$(Q)if test ! -f $(LINUX_DIR)/tools/perf/Makefile ; then \\\n\t\techo \"Your kernel version is too old and does not have the perf tool.\" ; \\\n\t\techo \"At least kernel 2.6.31 must be used.\" ; \\\n\t\texit 1 ; \\\n\tfi\n\t$(Q)if test \"$(BR2_PACKAGE_ELFUTILS)\" = \"\" ; then \\\n\t\tif ! grep -q NO_LIBELF $(LINUX_DIR)/tools/perf/Makefile* ; then \\\n\t\t\tif ! test -r $(LINUX_DIR)/tools/perf/config/Makefile ; then \\\n\t\t\t\techo \"The perf tool in your kernel cannot be built without libelf.\" ; \\\n\t\t\t\techo \"Either upgrade your kernel to >= 3.7, or enable the elfutils package.\" ; \\\n\t\t\t\texit 1 ; \\\n\t\t\tfi \\\n\t\tfi \\\n\tfi\n\t$(Q)if test \"$(BR2_PACKAGE_LINUX_TOOLS_PERF_TUI)\" = \"y\" ; then \\\n\t\tif ! grep -q NO_SLANG $(LINUX_DIR)/tools/perf/Makefile* ; then \\\n\t\t\techo \"The perf tool in your kernel cannot be build with the TUI.\" ; \\\n\t\t\techo \"Either upgrade your kernel to >= 3.10, or disable the TUI.\" ; \\\n\t\t\texit 1 ; \\\n\t\tfi \\\n\tfi\n\t$(TARGET_MAKE_ENV) $(MAKE1) $(PERF_MAKE_FLAGS) \\\n\t\t-C $(LINUX_DIR)/tools/perf O=$(LINUX_DIR)/tools/perf/\nendef\n\n# After installation, we remove the Perl and Python scripts from the\n# target.\ndefine PERF_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) $(PERF_MAKE_FLAGS) \\\n\t\t-C $(LINUX_DIR)/tools/perf O=$(LINUX_DIR)/tools/perf/ install\n\t$(RM) -rf $(TARGET_DIR)/usr/libexec/perf-core/scripts/\n\t$(RM) -rf $(TARGET_DIR)/usr/libexec/perf-core/tests/\nendef\n\ndefine PERF_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_PERF_EVENTS)\nendef\n"
  },
  {
    "path": "package/linux-tools/linux-tool-selftests.mk.in",
    "content": "################################################################################\n#\n# selftests\n#\n################################################################################\n\nLINUX_TOOLS += selftests\n\nifeq ($(KERNEL_ARCH),x86_64)\nSELFTESTS_ARCH=x86\nelse\nifeq ($(KERNEL_ARCH),i386)\nSELFTESTS_ARCH=x86\nelse\nSELFTESTS_ARCH=$(KERNEL_ARCH)\nendif\nendif\n\nSELFTESTS_DEPENDENCIES = libcap-ng popt\n\nSELFTESTS_MAKE_FLAGS = \\\n\t$(LINUX_MAKE_FLAGS) \\\n\tARCH=$(SELFTESTS_ARCH)\n\n# O must be redefined here to overwrite the one used by Buildroot for\n# out of tree build. We build the selftests in $(LINUX_DIR)/tools/selftests and\n# not just $(LINUX_DIR) so that it isn't built in the root directory of the kernel\n# sources.\n#\n# The headers_install step here is important as some kernel selftests use a\n# hardcoded CFLAGS to find kernel headers e.g:\n# CFLAGS += -I../../../../usr/include/\n# The headers_install target will install the kernel headers locally inside\n# the Linux build dir\ndefine SELFTESTS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR) $(SELFTESTS_MAKE_FLAGS) \\\n\t\theaders_install\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools/testing/selftests \\\n\t\t$(SELFTESTS_MAKE_FLAGS) O=$(LINUX_DIR)/tools/testing/selftests\nendef\n\ndefine SELFTESTS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools/testing/selftests \\\n\t\t$(SELFTESTS_MAKE_FLAGS) O=$(LINUX_DIR)/tools/testing/selftests \\\n\t\tINSTALL_PATH=$(TARGET_DIR)/usr/lib/kselftests install\nendef\n"
  },
  {
    "path": "package/linux-tools/linux-tool-tmon.mk.in",
    "content": "################################################################################\n#\n# tmon\n#\n################################################################################\n\nLINUX_TOOLS += tmon\n\nTMON_DEPENDENCIES = host-pkgconf ncurses\nTMON_MAKE_OPTS = $(LINUX_MAKE_FLAGS) \\\n\tCC=$(TARGET_CC) \\\n\tPKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig\n\nifeq ($(BR2_TOOLCHAIN_HAS_SSP),)\ndefine TMON_DISABLE_STACK_PROTECTOR\n\t$(SED) 's%-fstack-protector%%' $(LINUX_DIR)/tools/thermal/tmon/Makefile\nendef\nendif\n\ndefine TMON_BUILD_CMDS\n\t$(Q)if ! grep install $(LINUX_DIR)/tools/thermal/tmon/Makefile >/dev/null 2>&1 ; then \\\n\t\techo \"Your kernel version is too old and does not have the tmon tool.\" ; \\\n\t\techo \"At least kernel 3.13 must be used.\" ; \\\n\t\texit 1 ; \\\n\tfi\n\t$(TMON_DISABLE_STACK_PROTECTOR)\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \\\n\t\t$(TMON_MAKE_OPTS) \\\n\t\ttmon\nendef\n\ndefine TMON_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \\\n\t\t$(TMON_MAKE_OPTS) \\\n\t\tINSTALL_ROOT=$(TARGET_DIR) \\\n\t\ttmon_install\nendef\n"
  },
  {
    "path": "package/linux-tools/linux-tools.mk",
    "content": "################################################################################\n#\n# linux-tools\n#\n################################################################################\n\n# Vampirising sources from the kernel tree, so no source nor site specified.\n# Instead, we directly build in the sources of the linux package. We can do\n# that, because we're not building in the same location and the same files.\n#\n# So, all tools refer to $(LINUX_DIR) instead of $(@D).\n\n# Note: we need individual tools makefiles to be included *before* we build\n# the list of build and install hooks below to guarantee that each tool has\n# a chance to register itself once, and only once. Therefore, the makefiles\n# are named linux-tool-*.mk.in, so they won't be picked up by the top-level\n# Makefile, but can be included here, guaranteeing the single inclusion and\n# the proper ordering.\n\ninclude $(sort $(wildcard package/linux-tools/*.mk.in))\n\n# We only need the kernel to be extracted, not actually built\nLINUX_TOOLS_PATCH_DEPENDENCIES = linux\n\n# Install Linux kernel tools in the staging directory since some tools\n# may install shared libraries and headers (e.g. cpupower).\nLINUX_TOOLS_INSTALL_STAGING = YES\n\nLINUX_TOOLS_DEPENDENCIES += $(foreach tool,$(LINUX_TOOLS),\\\n\t$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\\\n\t\t$($(call UPPERCASE,$(tool))_DEPENDENCIES)))\n\nLINUX_TOOLS_POST_BUILD_HOOKS += $(foreach tool,$(LINUX_TOOLS),\\\n\t$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\\\n\t\t$(call UPPERCASE,$(tool))_BUILD_CMDS))\n\nLINUX_TOOLS_POST_INSTALL_STAGING_HOOKS += $(foreach tool,$(LINUX_TOOLS),\\\n\t$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\\\n\t\t$(call UPPERCASE,$(tool))_INSTALL_STAGING_CMDS))\n\nLINUX_TOOLS_POST_INSTALL_TARGET_HOOKS += $(foreach tool,$(LINUX_TOOLS),\\\n\t$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\\\n\t\t$(call UPPERCASE,$(tool))_INSTALL_TARGET_CMDS))\n\ndefine LINUX_TOOLS_LINUX_CONFIG_FIXUPS\n\t$(foreach tool,$(LINUX_TOOLS),\\\n\t\t$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\\\n\t\t\t$($(call UPPERCASE,$(tool))_LINUX_CONFIG_FIXUPS))\n\t)\nendef\n\ndefine LINUX_TOOLS_INSTALL_INIT_SYSTEMD\n\t$(foreach tool,$(LINUX_TOOLS),\\\n\t\t$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\\\n\t\t\t$($(call UPPERCASE,$(tool))_INSTALL_INIT_SYSTEMD))\n\t)\nendef\n\ndefine LINUX_TOOLS_INSTALL_INIT_SYSV\n\t$(foreach tool,$(LINUX_TOOLS),\\\n\t\t$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\\\n\t\t\t$($(call UPPERCASE,$(tool))_INSTALL_INIT_SYSV))\n\t)\nendef\n\ndefine LINUX_TOOLS_INSTALL_INIT_OPENRC\n\t$(foreach tool,$(LINUX_TOOLS),\\\n\t\t$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\\\n\t\t\t$(or $($(call UPPERCASE,$(tool))_INSTALL_INIT_OPENRC),\\\n\t\t\t     $($(call UPPERCASE,$(tool))_INSTALL_INIT_SYSV)))\n\t)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/linux-zigbee/0001-test-serial-Remove-test-serial.patch",
    "content": "From 98187a5238939edc889fdaad93b00628b55d1e08 Mon Sep 17 00:00:00 2001\nFrom: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>\nDate: Sat, 3 May 2014 19:43:20 +0200\nSubject: [PATCH] test-serial: Remove test-serial\n\nThis folders only contains python tests scripts which would force us to\nenable a dependency to host-python which seems kind of silly since\ntheses are only tests scripts.\n\nSigned-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>\n---\n Makefile.am  | 2 +-\n configure.ac | 6 ------\n 2 files changed, 1 insertion(+), 7 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 265f0d7..e7bb1a1 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -2,7 +2,7 @@ include $(top_srcdir)/Makefile.common\n \n ACLOCAL_AMFLAGS = -I m4\n \n-SUBDIRS = lib addrdb src tests test-serial\n+SUBDIRS = lib addrdb src tests\n \n include_HEADERS = include/ieee802154.h include/nl802154.h\n noinst_HEADERS = include/libcommon.h include/addrdb.h include/logging.h\ndiff --git a/configure.ac b/configure.ac\nindex 17658af..506b289 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -77,11 +77,6 @@ AC_PROG_LIBTOOL\n AM_PROG_LEX\n AC_PROG_YACC\n AC_SUBST(LIBTOOL_DEPS)\n-# Currently the scripts works with python2.x only\n-# Check for this at first\n-AC_PATH_PROG(PYTHON, python2 python2.7 python2.6 python2.5 python)\n-AM_PATH_PYTHON(,, [:])\n-py_CHECK_MAJOR_VERSION([PYTHON_VERSION], [2])\n AM_MISSING_PROG(HELP2MAN, help2man, $missing_dir)\n \n # Checks for libraries.\n@@ -135,6 +130,5 @@ AC_CONFIG_FILES([\n \taddrdb/Makefile\n \tsrc/Makefile\n \ttests/Makefile\n-\ttest-serial/Makefile\n ])\n AC_OUTPUT\n-- \n1.9.2\n\n"
  },
  {
    "path": "package/linux-zigbee/0002-addrdb-coord-config-parse.y-add-missing-time.h-inclu.patch",
    "content": "From 8cc60d618f81f2eeaa926cd60ed9b55ee6cda6ea Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Mon, 8 Aug 2016 15:42:46 +0200\nSubject: [PATCH] addrdb/coord-config-parse.y: add missing <time.h> include\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe %union definition uses the time_t structure. In order to use this\nstructure, the <time.h> header has to be included. Otherwise, the build\nbreaks with some C libraries, such as musl:\n\nIn file included from coord-config-lex.l:23:0:\ncoord-config-parse.y:107:2: error: unknown type name ‘time_t’\n  time_t timestamp;\n  ^\n\nThis patch includes <time.h> using the '%code requires' directive of\nYacc.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n addrdb/coord-config-parse.y | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/addrdb/coord-config-parse.y b/addrdb/coord-config-parse.y\nindex 2e10a88..85ee058 100644\n--- a/addrdb/coord-config-parse.y\n+++ b/addrdb/coord-config-parse.y\n@@ -102,6 +102,10 @@\n \n %}\n \n+%code requires {\n+#include <time.h>\n+}\n+\n %union {\n \tunsigned long number;\n \ttime_t timestamp;\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/linux-zigbee/Config.in",
    "content": "comment \"linux-zigbee needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n\nconfig BR2_PACKAGE_LINUX_ZIGBEE\n\tbool \"linux-zigbee\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tselect BR2_PACKAGE_LIBNL\n\thelp\n\t  IEEE 802.15.4 is a standard for communication in small\n\t  low-rate wireless personal area networks (WPAN). While\n\t  802.15.4 is a MAC- and PHY- layer standard only, several\n\t  common protocols commonly sit on top of it such as ZigBee,\n\t  MiWi, and 6LoWPAN. The goal of this project is to create an\n\t  implementation of 802.15.4 and several of the protocols\n\t  which run on top of it (primarily 6LoWPAN) for Linux.\n\n\t  It's worth noting that the name linux-zigbee is somewhat of\n\t  a misnomer. While this project was originally started to\n\t  create a ZigBee implementation for Linux, licensing\n\t  restrictions put in place by the ZigBee Alliance make it\n\t  impossible for an implementation of ZigBee to ever become\n\t  part of the Linux kernel. Once this licensing issue was\n\t  discovered, this project's primary focus shifted to IEEE\n\t  802.15.4 and 6LoWPAN. Other higher-layer standards may be\n\t  added at a future time.\n\n\t  The 802.15.4 stack contains kernel components, which are\n\t  part of the mainline Linux kernel, and userspace components,\n\t  available in this package.\n\n\t  http://sourceforge.net/apps/trac/linux-zigbee/\n\nif BR2_PACKAGE_LINUX_ZIGBEE\n\nconfig BR2_PACKAGE_LINUX_ZIGBEE_TESTS\n\tbool \"tests programs\"\n\thelp\n\t  Enable this option to install the Linux-ZigBee test programs\n\t  to the target.\n\nconfig BR2_PACKAGE_LINUX_ZIGBEE_OLD_KERNEL_COMPAT\n\tbool \"compatibility with older kernels\"\n\thelp\n\t  Enable this option to get compatibility of the Linux-ZigBee\n\t  userspace tools with old kernels. Recent kernels know the\n\t  802.15.4 line discipline as N_IEEE802154 with the value 25,\n\t  but some older kernels had it with the values 22 or 19.\n\nconfig BR2_PACKAGE_LINUX_ZIGBEE_LEASEFILE\n\tstring \"path for persistent lease storage\"\n\tdefault \"/var/run/izcoordinator.leases\"\n\nendif\n"
  },
  {
    "path": "package/linux-zigbee/linux-zigbee.hash",
    "content": "# Locally computed:\nsha256\t92fbefdf18d45147c2b78ca2ce2d899d4d1da5a3391a4ff6c51a5b14c6d6f87c\tlowpan-tools-0.3.1.tar.gz\nsha256\tab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6\tCOPYING\n"
  },
  {
    "path": "package/linux-zigbee/linux-zigbee.mk",
    "content": "################################################################################\n#\n# linux-zigbee\n#\n################################################################################\n\nLINUX_ZIGBEE_VERSION = 0.3.1\nLINUX_ZIGBEE_SOURCE = lowpan-tools-$(LINUX_ZIGBEE_VERSION).tar.gz\nLINUX_ZIGBEE_SITE = \\\n\thttp://downloads.sourceforge.net/project/linux-zigbee/linux-zigbee-sources/$(LINUX_ZIGBEE_VERSION)\nLINUX_ZIGBEE_LICENSE = GPL-2.0\nLINUX_ZIGBEE_LICENSE_FILES = COPYING\nLINUX_ZIGBEE_DEPENDENCIES = libnl host-pkgconf host-flex host-bison\n\n# We patch configure.ac/Makefile.am\nLINUX_ZIGBEE_AUTORECONF = YES\n\nLINUX_ZIGBEE_CONF_OPTS = \\\n\t--disable-manpages \\\n\t--disable-werror \\\n\t--with-leasefile=\"$(call qstrip,$(BR2_PACKAGE_LINUX_ZIGBEE_LEASEFILE))\"\n\nifeq ($(BR2_PACKAGE_LINUX_ZIGBEE_TESTS),y)\nLINUX_ZIGBEE_CONF_OPTS += --with-zbtestdir='/usr/sbin/'\nelse\nLINUX_ZIGBEE_CONF_OPTS += --with-zbtestdir=''\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_ZIGBEE_OLD_KERNEL_COMPAT),y)\nLINUX_ZIGBEE_CONF_OPTS += --enable-kernel-compat\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/linuxconsoletools/0001-conditional-build.patch",
    "content": "Selectively build groups of tools (inputattach,\njoystick tools and/or force-feedback tools).\n\nSigned-off-by: Koen Martens <gmc@sonologic.nl>\n\ndiff -Naur a/utils/Makefile b/utils/Makefile\n--- a/utils/Makefile\t2016-04-19 23:28:36.000000000 +0200\n+++ b/utils/Makefile\t2017-06-19 08:54:20.152184000 +0200\n@@ -27,8 +27,26 @@\n \n CFLAGS\t\t?= -g -O2 -Wall\n \n-PROGRAMS\t= inputattach jstest jscal fftest ffmvforce ffset \\\n-\t\t  ffcfstress jscal-restore jscal-store evdev-joystick\n+PROGRAMS    =\n+\n+ifdef ENABLE_INPUTATTACH\n+PROGRAMS\t+= inputattach\n+endif\n+\n+ifdef ENABLE_JOYSTICK\n+PROGRAMS    += jstest\n+PROGRAMS    += jscal\n+PROGRAMS    += jscal-restore\n+PROGRAMS    += jscal-store\n+PROGRAMS    += evdev-joystick\n+endif\n+\n+ifdef ENABLE_FORCEFEEDBACK\n+PROGRAMS    += fftest\n+PROGRAMS    += ffmvforce\n+PROGRAMS    += ffset\n+PROGRAMS    += ffcfstress\n+endif\n \n PREFIX          ?= /usr/local\n \n@@ -79,13 +97,20 @@\n 80-stelladaptor-joystick.rules: 80-stelladaptor-joystick.rules.in\n \tsed \"s^@@PREFIX@@^$(PREFIX)^g\" < $^ > $@\n \n+INSTALL_DEP = compile\n+ifdef ENABLE_JOYSTICK\n+INSTALL_DEP +=  80-stelladaptor-joystick.rules\n+endif\n+\n install: compile 80-stelladaptor-joystick.rules\n \tinstall -d $(DESTDIR)$(PREFIX)/bin\n \tinstall $(PROGRAMS) $(DESTDIR)$(PREFIX)/bin\n+ifdef ENABLE_JOYSTICK\n \tinstall -d $(DESTDIR)$(PREFIX)/share/joystick\n \tinstall extract filter ident $(DESTDIR)$(PREFIX)/share/joystick\n \tinstall -d $(DESTDIR)/lib/udev/rules.d\n \tinstall js-set-enum-leds $(DESTDIR)/lib/udev\n \tinstall -m 644 80-stelladaptor-joystick.rules $(DESTDIR)/lib/udev/rules.d\n+endif\n \n .PHONY: compile clean distclean install\n"
  },
  {
    "path": "package/linuxconsoletools/Config.in",
    "content": "config BR2_PACKAGE_LINUXCONSOLETOOLS\n\tbool \"linuxconsoletools\"\n\tselect BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH if \\\n\t       !BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK && \\\n\t       !BR2_PACKAGE_LINUXCONSOLETOOLS_FORCEFEEDBACK\n\thelp\n\t  Linuxconsoletools contains the inputattach utility\n\t  to attach legacy serial devices to the Linux kernel\n\t  input layer and joystick utilities to calibrate and\n\t  test joysticks and joypads.\n\n\t  http://sf.net/projects/linuxconsole/\n\nif BR2_PACKAGE_LINUXCONSOLETOOLS\n\nconfig BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH\n\tbool \"inputattach\"\n\tdefault y\n\thelp\n\t  The inputattach utility attaches legacy serial devices\n\t  to the Linux kernel input layer.\n\nconfig BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK\n\tbool \"joystick utilities\"\n\thelp\n\t  Joystick utilities (jstest, jscal, jscal-store,\n\t  jscal-restore, evdev-joystick).\n\nconfig BR2_PACKAGE_LINUXCONSOLETOOLS_FORCEFEEDBACK\n\tbool \"force-feedback utilities\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_SDL2\n\thelp\n\t  Build force-feedback driver utilities (fftest,\n\t  ffmvforce, ffset, ffcfstress).\n\ncomment \"force-feedback utilities need a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nendif\n"
  },
  {
    "path": "package/linuxconsoletools/linuxconsoletools.hash",
    "content": "# Locally calculated\nsha256\t95d112f06393806116341d593bda002c8bc44119c1538407623268fed90d8c34\tlinuxconsoletools-1.7.0.tar.bz2\nsha256\t8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\tCOPYING\n"
  },
  {
    "path": "package/linuxconsoletools/linuxconsoletools.mk",
    "content": "################################################################################\n#\n# linuxconsoletools\n#\n################################################################################\n\nLINUXCONSOLETOOLS_VERSION = 1.7.0\nLINUXCONSOLETOOLS_SOURCE = linuxconsoletools-$(LINUXCONSOLETOOLS_VERSION).tar.bz2\nLINUXCONSOLETOOLS_SITE = https://downloads.sourceforge.net/project/linuxconsole\nLINUXCONSOLETOOLS_LICENSE = GPL-2.0+\nLINUXCONSOLETOOLS_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH),y)\nLINUXCONSOLETOOLS_MAKE_OPTS += ENABLE_INPUTATTACH=1\nendif\n\nifeq ($(BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK),y)\nLINUXCONSOLETOOLS_MAKE_OPTS += ENABLE_JOYSTICK=1\nendif\n\nifeq ($(BR2_PACKAGE_LINUXCONSOLETOOLS_FORCEFEEDBACK),y)\nLINUXCONSOLETOOLS_MAKE_OPTS += \\\n\tENABLE_FORCEFEEDBACK=1 \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -std=gnu99\"\nLINUXCONSOLETOOLS_DEPENDENCIES += sdl2 host-pkgconf\nendif\n\ndefine LINUXCONSOLETOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(LINUXCONSOLETOOLS_MAKE_OPTS)\nendef\n\ndefine LINUXCONSOLETOOLS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(LINUXCONSOLETOOLS_MAKE_OPTS) \\\n\t\tDESTDIR=\"$(TARGET_DIR)\" \\\n\t\tPREFIX=/usr \\\n\t\tinstall\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/linuxptp/0001-missing.h-drop-clock_nanosleep-replacement.patch",
    "content": "From 947bf03ec3d9eaa0bfc0269eed86b9364e94bc1a Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Sun, 5 Aug 2018 15:25:53 +0200\nSubject: [PATCH] missing.h: drop clock_nanosleep() replacement\n\nSince uClibc-ng commits 68628fe7d463541bf3c33da6b214e63c0cc9feed\n(\"librt: declare clock_nanosleep not only for NPTL\") and\nddbb03e77ac1a48740688814b82f45c97ee81f37 (\"librt: clock_nanosleep\ncould be even used without threads\"), clock_nanosleep() is always\nprovided by uClibc, regardless of the thread implementation (none,\nlinuxthreads, nptl). These commits will be part of the upcoming 1.0.31\nrelease of uClibc-ng.\n\nThanks to this, we can drop the replacement clock_nanosleep()\nimplementation added by linuxptp. Without this, linuxptp fails to\nbuild with:\n\nmissing.h:117:19: error: static declaration of 'clock_nanosleep' follows non-static declaration\n static inline int clock_nanosleep(clockid_t clock_id, int flags,\n                   ^~~~~~~~~~~~~~~\nIn file included from clockadj.h:24:0,\n                 from clockadj.c:24:\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n missing.h | 7 -------\n 1 file changed, 7 deletions(-)\n\ndiff --git a/missing.h b/missing.h\nindex 2f7adb9..60f89a3 100644\n--- a/missing.h\n+++ b/missing.h\n@@ -129,13 +129,6 @@ enum {\n \n #define TFD_TIMER_ABSTIME (1 << 0)\n \n-static inline int clock_nanosleep(clockid_t clock_id, int flags,\n-\t\t\t\t  const struct timespec *request,\n-\t\t\t\t  struct timespec *remain)\n-{\n-\treturn syscall(__NR_clock_nanosleep, clock_id, flags, request, remain);\n-}\n-\n static inline int timerfd_create(int clockid, int flags)\n {\n \treturn syscall(__NR_timerfd_create, clockid, flags);\n-- \n2.14.4\n\n"
  },
  {
    "path": "package/linuxptp/Config.in",
    "content": "config BR2_PACKAGE_LINUXPTP\n\tbool \"linuxptp\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  The Linux PTP Project is the Precision Time Protocol\n\t  implementation according to IEEE standard 1588 for Linux.\n\n\t  The dual design goals are to provide a robust implementation\n\t  of the standard and to use the most relevant and modern\n\t  Application Programming Interfaces (API) offered by the\n\t  Linux kernel. Supporting legacy APIs and other platforms is\n\t  not a goal.\n\n\t  http://linuxptp.sourceforge.net/\n\ncomment \"linuxptp needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/linuxptp/S65ptp4l",
    "content": "#!/bin/sh\n#\n# Start linuxptp\n#\n\nDAEMON=\"ptp4l\"\n\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nPTP4L_ARGS=\"-f /etc/linuxptp.cfg\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/ptp4l\" ] && . \"/etc/default/ptp4l\"\n\nstart() {\n\tprintf \"Starting linuxptp daemon: \"\n\tstart-stop-daemon -S -b -q -m -p $PIDFILE \\\n\t\t-x /usr/sbin/$DAEMON -- $PTP4L_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn $status\n}\n\nstop() {\n\tprintf \"Stopping linuxptp daemon: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn $status\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\tstop\n\tstart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/linuxptp/S66phc2sys",
    "content": "#!/bin/sh\n#\n# Start linuxptp\n#\n\nDAEMON=\"phc2sys\"\n\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nPHC2SYS_ARGS=\"-a -r -S 1.0\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/phc2sys\" ] && . \"/etc/default/phc2sys\"\n\nstart() {\n\tprintf \"Starting linuxptp system clock synchronization: \"\n\tstart-stop-daemon -S -b -q -m -p $PIDFILE \\\n\t\t-x /usr/sbin/$DAEMON -- $PHC2SYS_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn $status\n}\n\nstop() {\n\tprintf \"Stopping linuxptp system clock synchronization: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn $status\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\tstop\n\tstart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/linuxptp/linuxptp.cfg",
    "content": "# LinuxPTP configuration file for synchronizing the system clock to\n# a remote PTP master in slave-only mode.\n#\n# By default synchronize time in slave-only mode using UDP and hardware time\n# stamps on eth0. If the difference to master is >1.0 second correct by\n# stepping the clock instead of adjusting the frequency.\n#\n# If you change the configuration don't forget to update the phc2sys\n# parameters accordingly in linuxptp-system-clock.service (systemd)\n# or the linuxptp SysV init script.\n\n[global]\nslaveOnly\t\t1\ndelay_mechanism\t\tAuto\nnetwork_transport\tUDPv4\ntime_stamping\t\thardware\nstep_threshold\t\t1.0\n\n[eth0]\n"
  },
  {
    "path": "package/linuxptp/linuxptp.hash",
    "content": "# From https://sourceforge.net/projects/linuxptp/files/v3.1.1/\nsha1  f905eabc6fd0f03c6a353f9c4ba188a3bd1b774c  linuxptp-3.1.1.tgz\nmd5  3b79ab5e77c5b5cf06bc1c8350d405bb  linuxptp-3.1.1.tgz\n\n# Locally computed:\nsha256  94d6855f9b7f2d8e9b0ca6d384e3fae6226ce6fc012dbad02608bdef3be1c0d9  linuxptp-3.1.1.tgz\n\n# Hash for license file:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/linuxptp/linuxptp.mk",
    "content": "################################################################################\n#\n# linuxptp\n#\n################################################################################\n\nLINUXPTP_VERSION = 3.1.1\nLINUXPTP_SOURCE = linuxptp-$(LINUXPTP_VERSION).tgz\nLINUXPTP_SITE = http://downloads.sourceforge.net/linuxptp\nLINUXPTP_LICENSE = GPL-2.0+\nLINUXPTP_LICENSE_FILES = COPYING\nLINUXPTP_CPE_ID_VENDOR = linuxptp_project\n\nLINUXPTP_MAKE_ENV = \\\n\t$(TARGET_MAKE_ENV) \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tKBUILD_OUTPUT=$(STAGING_DIR)\n\nLINUXPTP_MAKE_OPTS = \\\n\tprefix=/usr \\\n\tEXTRA_CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\tEXTRA_LDFLAGS=\"$(TARGET_LDFLAGS)\"\n\ndefine LINUXPTP_BUILD_CMDS\n\t$(LINUXPTP_MAKE_ENV) $(MAKE) $(LINUXPTP_MAKE_OPTS) -C $(@D) all\nendef\n\ndefine LINUXPTP_INSTALL_TARGET_CMDS\n\t$(LINUXPTP_MAKE_ENV) $(MAKE) $(LINUXPTP_MAKE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) -C $(@D) install\n\n\t$(INSTALL) -D -m 644 $(LINUXPTP_PKGDIR)/linuxptp.cfg \\\n\t\t$(TARGET_DIR)/etc/linuxptp.cfg\nendef\n\ndefine LINUXPTP_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D $(LINUXPTP_PKGDIR)/S65ptp4l \\\n\t\t$(TARGET_DIR)/etc/init.d/S65ptp4l\n\t$(INSTALL) -m 755 -D $(LINUXPTP_PKGDIR)/S66phc2sys \\\n\t\t$(TARGET_DIR)/etc/init.d/S66phc2sys\nendef\n\ndefine LINUXPTP_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(LINUXPTP_PKGDIR)/ptp4l.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/ptp4l.service\n\t$(INSTALL) -D -m 644 $(LINUXPTP_PKGDIR)/phc2sys.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/phc2sys.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/linuxptp/phc2sys.service",
    "content": "[Unit]\nDescription=Precision Time Protocol system clock synchronization\nAfter=ptp4l.service\n\n[Service]\nExecStart=/usr/sbin/phc2sys -s /dev/ptp0 -c CLOCK_REALTIME -w -S 1.0\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/linuxptp/ptp4l.service",
    "content": "[Unit]\nDescription=Precision Time Protocol daemon\nAfter=syslog.target network.target\nBefore=time-sync.target\nWants=time-sync.target\nWants=phc2sys.service\n\n[Service]\nExecStart=/usr/sbin/ptp4l -f /etc/linuxptp.cfg\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/liquid-dsp/Config.in",
    "content": "comment \"liquid-dsp requires a glibc or musl toolchain w/ dynamic library\"\n\tdepends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_LIQUID_DSP\n\tbool \"liquid-dsp\"\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Liquid-DSP is a free and open-source signal processing\n\t  library for software-defined radios written in C.  Its\n\t  purpose is to provide a set of extensible DSP modules that\n\t  do no rely on external dependencies or cumbersome\n\t  frameworks.\n\n\t  http://liquidsdr.org/\n\nif BR2_PACKAGE_LIQUID_DSP\n\nconfig BR2_PACKAGE_LIQUID_DSP_FAST\n\tbool \"optimize for speed over accuracy\"\n\thelp\n\t  Optimize for speed over accuracy.\n\nendif\n"
  },
  {
    "path": "package/liquid-dsp/liquid-dsp.hash",
    "content": "# Locally calculated\nsha256 85093624ef9cb90ead64c836d2f42690197edace1a86257d6524c4e4dc870483  liquid-dsp-1.3.2.tar.gz\nsha256 4df7126196efba1283deb99e3269418dde4ab0ad1fde80a55051153451eb4df2  LICENSE\n"
  },
  {
    "path": "package/liquid-dsp/liquid-dsp.mk",
    "content": "################################################################################\n#\n# liquid-dsp\n#\n################################################################################\n\nLIQUID_DSP_VERSION = 1.3.2\nLIQUID_DSP_SITE = $(call github,jgaeddert,liquid-dsp,v$(LIQUID_DSP_VERSION))\nLIQUID_DSP_LICENSE = MIT\nLIQUID_DSP_LICENSE_FILES = LICENSE\nLIQUID_DSP_INSTALL_STAGING = YES\nLIQUID_DSP_AUTORECONF = YES\n\nLIQUID_DSP_CONF_ENV = \\\n\tax_cv_have_mmx_ext=$(if $(BR2_X86_CPU_HAS_MMX),yes,no) \\\n\tax_cv_have_sse_ext=$(if $(BR2_X86_CPU_HAS_SSE),yes,no) \\\n\tax_cv_have_sse2_ext=$(if $(BR2_X86_CPU_HAS_SSE2),yes,no) \\\n\tax_cv_have_sse3_ext=$(if $(BR2_X86_CPU_HAS_SSE3),yes,no) \\\n\tax_cv_have_ssse3_ext=$(if $(BR2_X86_CPU_HAS_SSSE3),yes,no) \\\n\tax_cv_have_sse41_ext=$(if $(BR2_X86_CPU_HAS_SSE4),yes,no) \\\n\tax_cv_have_sse42_ext=$(if $(BR2_X86_CPU_HAS_SSE42),yes,no) \\\n\tax_cv_have_avx_ext=$(if $(BR2_X86_CPU_HAS_AVX),yes,no)\n\nLIQUID_DSP_CFLAGS = $(TARGET_CFLAGS)\nLIQUID_DSP_LDFLAGS = $(TARGET_LDFLAGS)\n\n# Speed over accuracy trade off\nifeq ($(BR2_PACKAGE_LIQUID_DSP_FAST),y)\nLIQUID_DSP_CFLAGS += -ffast-math\nendif\n\n# use FFTW instead of built-in FFT\nifeq ($(BR2_PACKAGE_FFTW_SINGLE),y)\nLIQUID_DSP_LDFLAGS += -lfftw3f\nLIQUID_DSP_DEPENDENCIES += fftw-single\nendif\n\n# disable altivec, it has build issues\nifeq ($(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),y)\nLIQUID_DSP_CONF_OPTS += --enable-simdoverride\nendif\n\nLIQUID_DSP_CONF_OPTS += \\\n\tCFLAGS=\"$(LIQUID_DSP_CFLAGS)\" \\\n\tLDFLAGS=\"$(LIQUID_DSP_LDFLAGS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lirc-tools/0001-Fix-build-without-Python.patch",
    "content": "From 71f329d997d949d3c12d62d2f1473a1c99ee49b0 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Sun, 27 Aug 2017 21:30:37 +0300\nSubject: [PATCH] Fix build without Python\n\nDon't define HAVE_PYTHON35 when PYTHON_LIBS is empty.\n\nAlso, don't build Python dependent code when HAVE_PYTHON35 is not\ndefined.\n\nThis fixes build failures like:\n\nMakefile:1616: recipe for target 'python-pkg/dist/lirc-0.10.0.tar.gz' failed\nmake[3]: *** [python-pkg/dist/lirc-0.10.0.tar.gz] Error 1\npython-pkg/lirc/_client.c:1:20: fatal error: Python.h: No such file or directory\n #include <Python.h>\n                    ^\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: commit 74a2bcab6b\n\n Makefile.am  | 2 ++\n configure.ac | 3 ++-\n 2 files changed, 4 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 9f3dd14340cc..d8164fcd44cf 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -104,6 +104,7 @@ dist_py_pkg_doc_DATA    = python-pkg/doc/Doxyfile \\\n \n libpython               = $(libdir)/python$(PYTHON_VERSION)\n pydir                   = $(libpython)/site-packages/lirc\n+if HAVE_PYTHON35\n py_LTLIBRARIES          = python-pkg/lib/_client.la\n python_pkg_lib__client_la_SOURCES = \\\n                           python-pkg/lirc/_client.c\n@@ -116,6 +117,7 @@ python_pkg_lib__client_la_LDFLAGS  = \\\n                           $(PYTHON_LIBS)\n python_pkg_lib__client_la_LIBADD = \\\n                           lib/liblirc_client.la\n+endif\n \n pylint: .phony\n \t$(MAKE) -C tools pylint\ndiff --git a/configure.ac b/configure.ac\nindex 4108688433f8..07d901deafdf 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -50,7 +50,8 @@ test -z \"$PYTHON_LIBS\" && \\\n test -n \"$PYTHON_LIBS\" || \\\n     AC_MSG_WARN([No python package found (missing devel package?)])\n python_version_nodots=$(echo $PYTHON_VERSION | tr -d '.')\n-AM_CONDITIONAL(HAVE_PYTHON35, [test $python_version_nodots -ge 35])\n+AM_CONDITIONAL(HAVE_PYTHON35, [test -n \"$PYTHON_LIBS\" && \\\n+\t\t\t       test $python_version_nodots -ge 35])\n CFLAGS=\"$CFLAGS $PYTHON_CFLAGS\"\n \n \n-- \n2.14.1\n\n"
  },
  {
    "path": "package/lirc-tools/0002-Fix-python-client-cross-compile.patch",
    "content": "From 13c4ffcfde07f659a836fba4a604dc1c5024bb90 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Tue, 29 Aug 2017 11:37:36 +0300\nSubject: [PATCH] Fix python client cross compile\n\nThe setup.py setuptools wrapper needs to use a version of python built\nspecifically for cross compiling to cross compile successfully. Allow\nsetting that in the environment using the SETUPTOOLS_ENV variable.\n\nFixes the following build failure:\n\n/usr/bin/ld: skipping incompatible .../lirc-tools-0.10.0/lib/.libs/liblirc_client.so when searching for -llirc_client\n/usr/bin/ld: cannot find -llirc_client\ncollect2: error: ld returned 1 exit status\nerror: command '/usr/bin/gcc' failed with exit status 1\nMakefile:1578: recipe for target 'all-local' failed\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: https://sourceforge.net/p/lirc/tickets/308/\n\n Makefile.am | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex d8164fcd44cf..a16be4278ae2 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -131,6 +131,7 @@ pep8: $(py_PYTHON)\n if HAVE_PYTHON35\n all-local:\n \tcd python-pkg; \\\n+\t    $(SETUPTOOLS_ENV) \\\n \t    CFLAGS=\"-I$(abs_top_srcdir)/lib -I$(abs_builddir)/lib\" \\\n \t    LDFLAGS=-L$(abs_builddir)/lib/.libs $(PYTHON) setup.py \\\n \t    $(if $(VERBOSE),,-q) build\n@@ -179,6 +180,7 @@ $(abs_builddir)/python-pkg/setup.py:\n $(PYTHON_TARBALL): $(abs_builddir)/python-pkg/setup.py\n \tcp $(top_builddir)/VERSION $(abs_builddir)/python-pkg\n \tcd $(abs_builddir)/python-pkg; CFLAGS=-I$(abs_top_srcdir)/lib \\\n+\t    $(SETUPTOOLS_ENV) \\\n \t    LDFLAGS=-L$(abs_builddir)/lib/.libs $(PYTHON) setup.py -q sdist\n \n $(top_builddir)/python-pkg/VERSION: VERSION\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/lirc-tools/0003-python-pkg-Fix-lirc-version-detection-when-cross-com.patch",
    "content": "From 732fd31610a6790a927ea9ed6d660796a1641254 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Thu, 7 Sep 2017 08:12:01 +0200\nSubject: [PATCH] build: Fix lirc version detection when cross compiling.\n\nThe setup.py script that runs on the host can't use the client library\nbuilt for target. So setup.py falls back to a wrong hard-coded VERSION\nvalue.\n\nInstead of importing the target library, use exec() to read\nlirc/config.py directly for its VERSION value.\n\nFixes build failure:\n\n/usr/bin/install -c -m 644 ./python-pkg/dist/lirc-0.10.0.tar.gz \\\n    '.../output/host/arm-buildroot-linux-musleabihf/sysroot/usr/share/lirc'\n/usr/bin/install: cannot stat './python-pkg/dist/lirc-0.10.0.tar.gz': \\\n    No such file or directory\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: commit 732fd31610a6\n\n python-pkg/setup.py | 9 +++------\n 1 file changed, 3 insertions(+), 6 deletions(-)\n\ndiff --git a/python-pkg/setup.py b/python-pkg/setup.py\nindex e9b33690f828..a2d92e0432aa 100644\n--- a/python-pkg/setup.py\n+++ b/python-pkg/setup.py\n@@ -6,14 +6,11 @@ import subprocess\n import os.path\n import os\n \n-try:\n-    import lirc.config\n-    VERSION = lirc.config.VERSION.replace('-devel','')\n-except ImportError:\n-    VERSION='0.0.0'\n-\n from setuptools import setup, Extension\n \n+exec(open(\"lirc/config.py\").read())\n+VERSION = VERSION.replace('-devel','')\n+\n if 'CFLAGS' in os.environ:\n     cflags = os.environ['CFLAGS'].split()\n     if 'LDFLAGS' in os.environ:\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/lirc-tools/0004-plugins-devinput.c-fix-build-with-musl-1.2.0.patch",
    "content": "From 74909db0342c7aff29e15972c9928f3bef56d5a6 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 21 Apr 2020 12:14:13 +0200\nSubject: [PATCH] plugins/devinput.c: fix build with musl 1.2.0\n\ntime element is deprecated on new input_event structure in kernel's\ninput.h [1]\n\n[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n plugins/devinput.c | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/plugins/devinput.c b/plugins/devinput.c\nindex 77828b44..e5a52e42 100644\n--- a/plugins/devinput.c\n+++ b/plugins/devinput.c\n@@ -51,6 +51,10 @@\n #define LONG(x) ((x) / BITS_PER_LONG)\n #define test_bit(bit, array)    ((array[LONG(bit)] >> OFF(bit)) & 1)\n \n+#ifndef input_event_sec\n+#define input_event_sec time.tv_sec\n+#define input_event_usec time.tv_usec\n+#endif\n \n static const logchannel_t logchannel = LOG_DRIVER;\n \n@@ -458,7 +462,7 @@ char* devinput_rec(struct ir_remote* remotes)\n \t\treturn 0;\n \t}\n \n-\tlog_trace(\"time %ld.%06ld  type %d  code %d  value %d\", event.time.tv_sec, event.time.tv_usec, event.type,\n+\tlog_trace(\"time %ld.%06ld  type %d  code %d  value %d\", event.input_event_sec, event.input_event_usec, event.type,\n \t\t  event.code, event.value);\n \n \tvalue = (unsigned)event.value;\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/lirc-tools/Config.in",
    "content": "config BR2_PACKAGE_LIRC_TOOLS\n\tbool \"lirc-tools\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\t# dlopen()\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  LIRC is a package that supports receiving and sending IR\n\t  signals of the most common IR remote controls. It contains a\n\t  daemon that decodes and sends IR signals, a mouse daemon\n\t  that translates IR signals to mouse movements and a couple\n\t  of user programs that allow to control your computer with a\n\t  remote control.\n\n\t  It requires the kernel LIRC interface driver, make sure to\n\t  enable the kernel drivers to support your hardware.\n\n\t  http://www.lirc.org/\n\ncomment \"lirc-tools needs a toolchain w/ threads, dynamic library, C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/lirc-tools/S25lircd",
    "content": "#!/bin/sh\n#\n# Start lirc\n#\n# Support for remotes - Add remotes to /etc/lirc/lircd.conf.d/\n#\n\nstart() {\n\tprintf \"Starting lirc: \"\n\tmkdir -p /var/run/lirc\n\tln -sf /var/run/lirc/lircd /dev/lircd\n\tstart-stop-daemon -b -S -q -m -p /var/run/lirc.pid --exec /usr/sbin/lircd -- -n -O /etc/lirc/lirc_options.conf\n\techo \"OK\"\n}\n\nstop() {\n\tprintf \"Stopping lirc: \"\n\tstart-stop-daemon -K -q -p /var/run/lirc.pid\n\techo \"OK\"\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\tstop\n\tstart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/lirc-tools/lirc-tools.hash",
    "content": "# hash from https://sourceforge.net/projects/lirc/files/LIRC/0.10.1/\nsha1 9d6f6d18ac566a96ef4ca1d6909a4e8bc517d48a lirc-0.10.1.tar.bz2\nmd5 86c3f8e4efaba10571addb8313d1e040 lirc-0.10.1.tar.bz2\n# Locally computed\nsha256  8b753c60df2a7f5dcda2db72c38e448ca300c3b4f6000c1501fcb0bd5df414f2  lirc-0.10.1.tar.bz2\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/lirc-tools/lirc-tools.mk",
    "content": "################################################################################\n#\n# lirc-tools\n#\n################################################################################\n\nLIRC_TOOLS_VERSION = 0.10.1\nLIRC_TOOLS_SOURCE = lirc-$(LIRC_TOOLS_VERSION).tar.bz2\nLIRC_TOOLS_SITE = http://downloads.sourceforge.net/project/lirc/LIRC/$(LIRC_TOOLS_VERSION)\nLIRC_TOOLS_LICENSE = GPL-2.0+\nLIRC_TOOLS_LICENSE_FILES = COPYING\nLIRC_TOOLS_SELINUX_MODULES = lircd\nLIRC_TOOLS_DEPENDENCIES = host-libxslt host-pkgconf host-python3\nLIRC_TOOLS_INSTALL_STAGING = YES\n# Patching configure.ac and Makefile.am\nLIRC_TOOLS_AUTORECONF = YES\n\nLIRC_TOOLS_CONF_ENV = XSLTPROC=yes HAVE_WORKING_POLL=yes\nLIRC_TOOLS_CONF_OPTS = --without-x --enable-devinput --enable-uinput\n\nifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4),y)\nLIRC_TOOLS_CONF_ENV += \\\n\tDEVINPUT_HEADER=$(STAGING_DIR)/usr/include/linux/input-event-codes.h\nelse\nLIRC_TOOLS_CONF_ENV += \\\n\tDEVINPUT_HEADER=$(STAGING_DIR)/usr/include/linux/input.h\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nLIRC_TOOLS_DEPENDENCIES += udev\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nLIRC_TOOLS_DEPENDENCIES += alsa-lib\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB_COMPAT),y)\nLIRC_TOOLS_DEPENDENCIES += libusb-compat\nendif\n\nifeq ($(BR2_PACKAGE_PORTAUDIO),y)\nLIRC_TOOLS_DEPENDENCIES += portaudio\nendif\n\nifeq ($(BR2_PACKAGE_LIBFTDI1),y)\nLIRC_TOOLS_DEPENDENCIES += libftdi1\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nLIRC_TOOLS_DEPENDENCIES += python3 host-python3-setuptools\nLIRC_TOOLS_MAKE_ENV += SETUPTOOLS_ENV='$(PKG_PYTHON_SETUPTOOLS_ENV)'\nendif\n\ndefine LIRC_TOOLS_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/lirc-tools/S25lircd \\\n\t\t$(TARGET_DIR)/etc/init.d/S25lircd\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lite/0001-dfbspy-stat.patch",
    "content": "From upstream git (git://git.directfb.org/git/directfb/libs/LiTE.git)\n\nFrom ffe0ce78327a63ddb1265328ea9b5b03acdca019 Mon Sep 17 00:00:00 2001\nFrom: Denis Oliver Kropp <dok@directfb.org>\nDate: Fri, 1 Apr 2011 20:20:26 +0200\nSubject: [PATCH] dfbspy: Build fix for dfbspy example.\n\n---\n examples/dfbspy.c |   20 ++++++++++----------\n 1 files changed, 10 insertions(+), 10 deletions(-)\n\ndiff --git a/examples/dfbspy.c b/examples/dfbspy.c\nindex 5f36f0b..c7f9725 100644\n--- a/examples/dfbspy.c\n+++ b/examples/dfbspy.c\n@@ -89,9 +89,9 @@ read_stat( FusionStat *stat, int world )\n \n /**************************************************************************************************/\n \n-#define CALC(x)     stat.x = (int)(((s.x - last_stat.x) * 1000 / (float) diff) + 0.5f)\n+#define CALC(x)     stats.x = (int)(((s.x - last_stat.x) * 1000 / (float) diff) + 0.5f)\n \n-static FusionStat last_stat, stat;\n+static FusionStat last_stat, stats;\n static long long  last_millis;\n \n static int\n@@ -145,14 +145,14 @@ static const struct {\n      void          (*update)( LiteLabel *label, void *ctx );\n      void           *ctx;\n } list[] = {\n-     { \"lease/purchase\", update_number, &stat.lease_purchase },\n-     { \"cede\",           update_number, &stat.cede },\n-     { \"attach\",         update_number, &stat.attach },\n-     { \"detach\",         update_number, &stat.detach },\n-     { \"ref up\",         update_number, &stat.ref_up },\n-     { \"ref down\",       update_number, &stat.ref_down },\n-     { \"prevail/swoop\",  update_number, &stat.prevail_swoop },\n-     { \"dismiss\",        update_number, &stat.dismiss }\n+     { \"lease/purchase\", update_number, &stats.lease_purchase },\n+     { \"cede\",           update_number, &stats.cede },\n+     { \"attach\",         update_number, &stats.attach },\n+     { \"detach\",         update_number, &stats.detach },\n+     { \"ref up\",         update_number, &stats.ref_up },\n+     { \"ref down\",       update_number, &stats.ref_down },\n+     { \"prevail/swoop\",  update_number, &stats.prevail_swoop },\n+     { \"dismiss\",        update_number, &stats.dismiss }\n };\n \n #define NUM_LIST    (sizeof(list)/sizeof(list[0]))\n-- \n1.7.6.3\n\n"
  },
  {
    "path": "package/lite/0002-no-tests.patch",
    "content": "--- a/Makefile.in.orig\t2008-07-07 13:07:12.000000000 +0200\n+++ b/Makefile.in\t2008-07-07 13:07:05.000000000 +0200\n@@ -202,7 +202,7 @@\n target_vendor = @target_vendor@\n top_builddir = @top_builddir@\n top_srcdir = @top_srcdir@\n-SUBDIRS = data fonts lite leck examples tests\n+SUBDIRS = data fonts lite leck examples\n EXTRA_DIST = TODO lite.pc.in leck.pc.in\n pkgconfigdir = $(libdir)/pkgconfig\n pkgconfig_DATA = lite.pc leck.pc\n"
  },
  {
    "path": "package/lite/0003-pkg-config.patch",
    "content": "From 7982cccbb6ad58f3802bb266467290200d130a48 Mon Sep 17 00:00:00 2001\nFrom: Ville Syrjala <syrjala@sci.fi>\nDate: Sat, 27 Nov 2010 01:14:25 +0200\nSubject: [PATCH] Too many '\\' characters in the .pc file\n\n---\n lite.pc.in |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/lite.pc.in b/lite.pc.in\nindex 48eb969..3a21eaa 100644\n--- a/lite.pc.in\n+++ b/lite.pc.in\n@@ -9,4 +9,4 @@ Description: \"LiTE\" is a Toolkit Engine\n Requires: directfb >= @DFB_REQUIRED_VERSION@\n Version: @VERSION@\n Libs: -L${libdir} -llite\n-Cflags: -I${includedir} -DLITEFONTDIR=\\\\\\\"@LITEFONTDIR@\\\\\\\"\n+Cflags: -I${includedir} -DLITEFONTDIR=\\\"@LITEFONTDIR@\\\"\n--\n1.7.1\n\n"
  },
  {
    "path": "package/lite/Config.in",
    "content": "config BR2_PACKAGE_LITE\n\tbool \"LiTE (toolbox engine)\"\n\tdepends on BR2_PACKAGE_DIRECTFB\n\thelp\n\t  LiTE stands for LiTE is a Toolbox Engine.\n\t  Its role is to facilitate the functions of DirectFB so that a\n\t  toolbox could be written on top of DirectFB with less effort.\n\t  As such LiTE has abstractions for the underlying graphics and\n\t  event systems.\n\n\t  See http://www.directfb.org/wiki/index.php/LiTE:Architecture\n"
  },
  {
    "path": "package/lite/lite.hash",
    "content": "# Locally calculated\nsha256  1b784cf595c3d5313e3705db210119f77d48826dbc7fcf6328af83a1270c2264  LiTE-0.8.10.tar.gz\nsha256  512d2d21b6b3384ba64781abb0208a1b87740bc31e2df48e2b206ddb7e4d5779  COPYING\n"
  },
  {
    "path": "package/lite/lite.mk",
    "content": "################################################################################\n#\n# lite\n#\n################################################################################\n\nLITE_VERSION = 0.8.10\nLITE_SOURCE = LiTE-$(LITE_VERSION).tar.gz\nLITE_SITE = http://www.directfb.org/downloads/Libs\nLITE_INSTALL_STAGING = YES\nLITE_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LDFLAGS=-L$(STAGING_DIR)/usr/lib install\nLITE_CONF_ENV = DFB_CFLAGS=-I$(STAGING_DIR)/usr/include/directfb\nLITE_DEPENDENCIES = directfb\nLITE_LICENSE = LGPL-2.1+\nLITE_LICENSE_FILES = COPYING\n\ndefine LITE_FINALIZE_INSTALL\n\t$(INSTALL) -d $(TARGET_DIR)/usr/share/LiTE/examples/\n\t$(INSTALL) -d $(TARGET_DIR)/usr/share/fonts/truetype/\n\t$(INSTALL) -m0644 $(@D)/data/*.png $(TARGET_DIR)/usr/share/LiTE/\n\t$(INSTALL) -m0644 $(@D)/examples/*.png $(TARGET_DIR)/usr/share/LiTE/examples/\n\t$(INSTALL) -m0644 $(@D)/fonts/*.ttf $(TARGET_DIR)/usr/share/fonts/truetype/\nendef\n\nLITE_POST_INSTALL_TARGET_HOOKS += LITE_FINALIZE_INSTALL\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/live555/0001-Add-a-pkg-config-file-for-the-shared-libraries.patch",
    "content": "From: Benjamin Drung <bdrung@debian.org>\nDate: Sat, 16 Sep 2017 11:22:03 +0200\nSubject: Add a pkg-config file for the shared libraries\n\nThis patch was downloaded from Debian\nhttps://sources.debian.org/src/liblivemedia/2018.08.05-1/debian/patches/0002-Add-a-pkg-config-file-for-the-shared-libraries.patch/\n\nThe local/ part of PREXIX and LIBDIR was removed to fit into buildroot.\n\nA similar version of this patch is part of the vlc source repo:\nhttp://git.videolan.org/?p=vlc.git;a=blob;f=contrib/src/live555/add-pkgconfig-file.patch;hb=HEAD\n\nUpstream status: Rejected\nhttp://lists.live555.com/pipermail/live-devel/2013-January/016374.html\nhttp://lists.live555.com/pipermail/live-devel/2013-January/016375.html\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n Makefile.head | 3 +++\n Makefile.tail | 7 ++++++-\n live555.pc.in | 9 +++++++++\n 3 files changed, 18 insertions(+), 1 deletion(-)\n create mode 100644 live555.pc.in\n\ndiff --git a/Makefile.head b/Makefile.head\nindex 458c54c..1571037 100644\n--- a/Makefile.head\n+++ b/Makefile.head\n@@ -1 +1,4 @@\n+PREFIX = /usr\n+LIBDIR = /usr/lib\n+VERSION = $(shell grep LIVEMEDIA_LIBRARY_VERSION_STRING liveMedia/include/liveMedia_version.hh | sed 's/.*\"\\([^\"]*\\)\".*/\\1/')\n ##### Change the following for your environment:\ndiff --git a/Makefile.tail b/Makefile.tail\nindex fc594ea..a20a527 100644\n--- a/Makefile.tail\n+++ b/Makefile.tail\n@@ -22,7 +22,12 @@ all:\n \t@echo\n \t@echo \"For more information about this source code (including your obligations under the LGPL), please see our FAQ at http://live555.com/liveMedia/faq.html\"\n \n-install:\n+install_shared_libraries:\n+\tinstall -d $(DESTDIR)$(LIBDIR)/pkgconfig\n+\tsed \"s#@PREFIX@#$(PREFIX)#;s#@LIBDIR@#$(LIBDIR)#;s#@VERSION@#$(VERSION)#\" live555.pc.in > $(DESTDIR)$(LIBDIR)/pkgconfig/live555.pc\n+\tchmod 644 $(DESTDIR)$(LIBDIR)/pkgconfig/live555.pc\n+\n+install: $(INSTALL2)\n \tcd $(LIVEMEDIA_DIR) ; $(MAKE) install\n \tcd $(GROUPSOCK_DIR) ; $(MAKE) install\n \tcd $(USAGE_ENVIRONMENT_DIR) ; $(MAKE) install\ndiff --git a/live555.pc.in b/live555.pc.in\nnew file mode 100644\nindex 0000000..3736944\n--- /dev/null\n+++ b/live555.pc.in\n@@ -0,0 +1,9 @@\n+prefix=@PREFIX@\n+libdir=@LIBDIR@\n+includedir=${prefix}/include\n+\n+Name: live555\n+Description: multimedia RTSP streaming library\n+Version: @VERSION@\n+Cflags: -I${includedir}/liveMedia -I${includedir}/groupsock -I${includedir}/BasicUsageEnvironment -I${includedir}/UsageEnvironment\n+Libs: -L${libdir} -lliveMedia -lgroupsock -lBasicUsageEnvironment -lUsageEnvironment\n"
  },
  {
    "path": "package/live555/Config.in",
    "content": "config BR2_PACKAGE_LIVE555\n\tbool \"live555\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  LIVE555 Streaming Media forms a set of C++ libraries for\n\t  multimedia streaming, using open standard protocols\n\t  (RTP/RTCP, RTSP, SIP).\n\n\t  http://www.live555.com/liveMedia/\n\ncomment \"live555 needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/live555/live555.hash",
    "content": "# From http://www.live555.com/liveMedia/public/live555-latest-md5.txt\nmd5  3c1992b0e9b871bcad7491a3da541781  live.2021.05.03.tar.gz\n# Locally generated\nsha256  ae73241f9cc4ab740d60737c0438d62a7635af3822de5d84acf275793de42029  live.2021.05.03.tar.gz\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING.LESSER\n"
  },
  {
    "path": "package/live555/live555.mk",
    "content": "################################################################################\n#\n# live555\n#\n################################################################################\n\nLIVE555_VERSION = 2021.05.03\nLIVE555_SOURCE = live.$(LIVE555_VERSION).tar.gz\nLIVE555_SITE = http://www.live555.com/liveMedia/public\n# There is a COPYING file with the GPL-3.0 license text, but none of\n# the source files appear to be released under GPL-3.0, and the\n# project web site says it's licensed under the LGPL:\n# http://live555.com/liveMedia/faq.html#copyright-and-license\nLIVE555_LICENSE = LGPL-3.0+\nLIVE555_LICENSE_FILES = COPYING.LESSER\nLIVE555_CPE_ID_VENDOR = live555\nLIVE555_CPE_ID_PRODUCT = streaming_media\nLIVE555_INSTALL_STAGING = YES\n\nLIVE555_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_STATIC_LIBS),y)\nLIVE555_CONFIG_TARGET = linux\nLIVE555_LIBRARY_LINK = $(TARGET_AR) cr\nelse\nLIVE555_CONFIG_TARGET = linux-with-shared-libraries\nLIVE555_LIBRARY_LINK = $(TARGET_CC) -o\nLIVE555_CFLAGS += -fPIC\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLIVE555_DEPENDENCIES += host-pkgconf openssl\nLIVE555_CONSOLE_LIBS = `$(PKG_CONFIG_HOST_BINARY) --libs openssl`\n# passed to ar for static linking, which gets confused by -L<dir>\nifneq ($(BR2_STATIC_LIBS),y)\nLIVE555_LIVEMEDIA_LIBS = $(LIVE555_CONSOLE_LIBS)\nendif\nelse\nLIVE555_CFLAGS += -DNO_OPENSSL\nendif\n\nifndef ($(BR2_ENABLE_LOCALE),y)\nLIVE555_CFLAGS += -DLOCALE_NOT_USED\nendif\n\ndefine LIVE555_CONFIGURE_CMDS\n\techo 'COMPILE_OPTS = $$(INCLUDES) -I. -DSOCKLEN_T=socklen_t $(LIVE555_CFLAGS)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET)\n\techo 'C_COMPILER = $(TARGET_CC)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET)\n\techo 'CPLUSPLUS_COMPILER = $(TARGET_CXX)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET)\n\n\techo 'LINK = $(TARGET_CXX) -o' >> $(@D)/config.$(LIVE555_CONFIG_TARGET)\n\techo 'LINK_OPTS = -L. $(TARGET_LDFLAGS)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET)\n\techo 'PREFIX = /usr' >> $(@D)/config.$(LIVE555_CONFIG_TARGET)\n\t# Must have a whitespace at the end of LIBRARY_LINK, otherwise static link\n\t# fails\n\techo 'LIBRARY_LINK = $(LIVE555_LIBRARY_LINK) ' >> $(@D)/config.$(LIVE555_CONFIG_TARGET)\n\techo 'LIBS_FOR_CONSOLE_APPLICATION = $(LIVE555_CONSOLE_LIBS)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET)\n\techo 'LIBS_FOR_LIVEMEDIA_LIB = $(LIVE555_LIVEMEDIA_LIBS)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET)\n\t(cd $(@D); ./genMakefiles $(LIVE555_CONFIG_TARGET))\nendef\n\ndefine LIVE555_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) all\nendef\n\ndefine LIVE555_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) install\nendef\n\ndefine LIVE555_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ljlinenoise/Config.in",
    "content": "config BR2_PACKAGE_LJLINENOISE\n\tbool \"ljlinenoise\"\n\t# ljsyscall is specifically for LuaJIT, not Lua.\n\tdepends on BR2_PACKAGE_LUAJIT\n\tselect BR2_PACKAGE_LJSYSCALL # runtime\n\thelp\n\t  ljlinenoise is a pure LuaJIT port of linenoise,\n\t  a small alternative to readline and libedit.\n\n\t  https://fperrad.frama.io/ljlinenoise/\n\ncomment \"ljlinenoise needs LuaJIT\"\n\tdepends on !BR2_PACKAGE_LUAJIT\n"
  },
  {
    "path": "package/ljlinenoise/ljlinenoise.hash",
    "content": "# computed by luarocks/buildroot\nsha256 7a6c4142b0096106f498d7ee4bea5bf5086c076d1f071893441b8e5c0665fb47  ljlinenoise-0.1.3-1.src.rock\nsha256 9b17730cb34ea591fb39688e70bd2be9c13d11b9db1c813b4ae68e3da9b7093e  ljlinenoise-0.1.3/COPYRIGHT\n"
  },
  {
    "path": "package/ljlinenoise/ljlinenoise.mk",
    "content": "################################################################################\n#\n# ljlinenoise\n#\n################################################################################\n\nLJLINENOISE_VERSION = 0.1.3-1\nLJLINENOISE_LICENSE = MIT\nLJLINENOISE_LICENSE_FILES = $(LJLINENOISE_SUBDIR)/COPYRIGHT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/ljsyscall/Config.in",
    "content": "config BR2_PACKAGE_LJSYSCALL\n\tbool \"ljsyscall\"\n\t# ljsyscall is specifically for LuaJIT, not Lua.\n\tdepends on BR2_PACKAGE_LUAJIT\n\thelp\n\t  An FFI implementation of the Linux and NetBSD kernel ABIs for\n\t  LuaJIT.\n\n\t  http://www.myriabit.com/ljsyscall/\n\ncomment \"ljsyscall needs LuaJIT\"\n\tdepends on !BR2_PACKAGE_LUAJIT\n"
  },
  {
    "path": "package/ljsyscall/ljsyscall.hash",
    "content": "# Locally calculated\nsha256 6e29503609bd966fed33dec1a1571b36bbdbc37bf1a828af6722ed0ead192ff1  ljsyscall-0.12.tar.gz\nsha256 c8e21d8e74afbe26c2c8e69b42327d3b48e602117f9ef7b22c31ddca6f46b1f2  COPYRIGHT\n"
  },
  {
    "path": "package/ljsyscall/ljsyscall.mk",
    "content": "################################################################################\n#\n# ljsyscall\n#\n################################################################################\n\nLJSYSCALL_VERSION = 0.12\nLJSYSCALL_SITE = $(call github,justincormack,ljsyscall,v$(LJSYSCALL_VERSION))\nLJSYSCALL_LICENSE = MIT\nLJSYSCALL_LICENSE_FILES = COPYRIGHT\n\n# dispatch all architectures of LuaJIT\nifeq ($(BR2_i386),y)\nLJSYSCALL_ARCH = x86\nelse ifeq ($(BR2_x86_64),y)\nLJSYSCALL_ARCH = x64\nelse ifeq ($(BR2_powerpc),y)\nLJSYSCALL_ARCH = ppc\nelse ifeq ($(BR2_arm)$(BR2_armeb),y)\nLJSYSCALL_ARCH = arm\nelse ifeq ($(BR2_aarch64),y)\nLJSYSCALL_ARCH = arm64\nelse ifeq ($(BR2_mips)$(BR2_mipsel),y)\nLJSYSCALL_ARCH = mips\nelse\nLJSYSCALL_ARCH = $(BR2_ARCH)\nendif\n\nLJSYSCALL_TARGET_DIR = $(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)\n\ndefine LJSYSCALL_INSTALL_TARGET_CMDS\n\t$(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall\n\t$(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/ $(@D)/syscall.lua\n\t$(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall $(@D)/syscall/*.lua\n\n\t$(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall/linux/$(LJSYSCALL_ARCH)\n\t$(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/linux/ $(@D)/syscall/linux/*.lua\n\t$(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/linux/$(LJSYSCALL_ARCH) $(@D)/syscall/linux/$(LJSYSCALL_ARCH)/*.lua\n\n\t$(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall/shared\n\t$(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/shared/ $(@D)/syscall/shared/*.lua\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lksctp-tools/Config.in",
    "content": "config BR2_PACKAGE_LKSCTP_TOOLS\n\tbool \"lksctp-tools\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\thelp\n\t  The lksctp-tools project provides a Linux user space library\n\t  for SCTP (libsctp) including C language header files\n\t  (netinet/sctp.h) for accessing SCTP specific application\n\t  programming interfaces not provided by the standard sockets,\n\t  and also some helper utilities around SCTP.\n\n\t  http://lksctp.sourceforge.net/\n\ncomment \"lksctp-tools needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/lksctp-tools/lksctp-tools.hash",
    "content": "# From https://sourceforge.net/projects/lksctp/files/lksctp-tools/\nmd5\t68e9b8fa4d4e331029b247b72d46d7a5\tlksctp-tools-1.0.17.tar.gz\nsha1\t941b0b5c39e364a971f514bba66120435660e518\tlksctp-tools-1.0.17.tar.gz\n# Locally computed\nsha256  dee5f35e583183abb9212938643ecb2d858fd89e2e286f4b1d903f65d49d6c76  COPYING.lib\nsha256  cc2a6651c315b233ebc110b49ea3c6452eff9a28f8bc051ffd2bb92a8dcfa3d2  COPYING\n"
  },
  {
    "path": "package/lksctp-tools/lksctp-tools.mk",
    "content": "################################################################################\n#\n# lksctp-tools\n#\n################################################################################\n\nLKSCTP_TOOLS_VERSION = 1.0.17\nLKSCTP_TOOLS_SITE = http://downloads.sourceforge.net/project/lksctp/lksctp-tools\nLKSCTP_TOOLS_INSTALL_STAGING = YES\n# configure not shipped\nLKSCTP_TOOLS_AUTORECONF = YES\nLKSCTP_TOOLS_LICENSE = LGPL-2.1 (library), GPL-2.0+ (programs)\nLKSCTP_TOOLS_LICENSE_FILES = COPYING.lib COPYING\nLKSCTP_TOOLS_CONF_OPTS = --disable-tests\n\n# Cleanup installed target source code\ndefine LKSCTP_TOOLS_CLEANUP_TARGET\n\trm -rf $(TARGET_DIR)/usr/share/lksctp-tools\nendef\nLKSCTP_TOOLS_POST_INSTALL_TARGET_HOOKS += LKSCTP_TOOLS_CLEANUP_TARGET\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lld/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_LLD\n\tbool \"host lld\"\n\tdepends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS # llvm\n\thelp\n\t  LLD is a linker from the LLVM project that is a drop-in\n\t  replacement for system linkers, and runs much faster than\n\t  them. It also provides features that are useful for\n\t  toolchain developers.\n\n\t  https://lld.llvm.org/\n"
  },
  {
    "path": "package/lld/lld.hash",
    "content": "# locally calculated\nsha256 86262bad3e2fd784ba8c5e2158d7aa36f12b85f2515e95bc81d65d75bb9b0c82  lld-9.0.1.src.tar.xz\nsha256 f7891568956e34643eb6a0db1462db30820d40d7266e2a78063f2fe233ece5a0  LICENSE.TXT\n"
  },
  {
    "path": "package/lld/lld.mk",
    "content": "################################################################################\n#\n# lld\n#\n################################################################################\n\n# LLVM, Clang and lld should be version bumped together\nLLD_VERSION = 9.0.1\nLLD_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(LLD_VERSION)\nLLD_SOURCE = lld-$(LLD_VERSION).src.tar.xz\nLLD_LICENSE = Apache-2.0 with exceptions\nLLD_LICENSE_FILES = LICENSE.TXT\nLLD_SUPPORTS_IN_SOURCE_BUILD = NO\nHOST_LLD_DEPENDENCIES = host-llvm\n\n# LLVM > 9.0 will soon require C++14 support, building llvm <= 9.0 using a\n# toolchain using gcc < 5.1 gives an error but actually still works. Setting\n# this option makes it still build with gcc >= 4.8.\n# https://reviews.llvm.org/D57264\nHOST_LLD_CONF_OPTS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON\n\n# build as static libs as is done in llvm & clang\nHOST_LLD_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF\n\n# GCC looks for tools in a different path from LLD's default installation path\ndefine HOST_LLD_CREATE_SYMLINKS\n\tmkdir -p $(HOST_DIR)/$(GNU_TARGET_NAME)/bin\n\tln -sf $(HOST_DIR)/bin/lld $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/lld\n\tln -sf $(HOST_DIR)/bin/lld $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/ld.lld\nendef\n\nHOST_LLD_POST_INSTALL_HOOKS += HOST_LLD_CREATE_SYMLINKS\n\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/lldpd/Config.in",
    "content": "config BR2_PACKAGE_LLDPD\n\tbool \"lldpd\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBEVENT\n\thelp\n\t  lldpd is a 802.1ab implementation (LLDP) to help you locate\n\t  neighbors of all your equipments.\n\n\t  LLDP allows you to know exactly on which port is a server\n\t  (and reciprocally).\n\n\t  LLDP is an industry standard protocol designed to supplant\n\t  proprietary Link-Layer protocols such as EDP or CDP. The\n\t  goal of LLDP is to provide an inter-vendor compatible\n\t  mechanism to deliver Link-Layer notifications to adjacent\n\t  network devices.\n\n\t  lldpd is an ISC-licensed implementation of LLDP for various\n\t  Unixes. It also supports some proprietary protocols.\n\n\t  https://vincentbernat.github.io/lldpd/\n\nif BR2_PACKAGE_LLDPD\n\nconfig BR2_PACKAGE_LLDPD_CDP\n\tbool \"CDP\"\n\tdefault y\n\thelp\n\t  Enable Cisco Discovery Protocol\n\nconfig BR2_PACKAGE_LLDPD_FDP\n\tbool \"FDP\"\n\tdefault y\n\thelp\n\t  Enable Foundry Discovery Protocol\n\nconfig BR2_PACKAGE_LLDPD_EDP\n\tbool \"EDP\"\n\tdefault y\n\thelp\n\t  Enable Extreme Discovery Protocol\n\nconfig BR2_PACKAGE_LLDPD_SONMP\n\tbool \"SONMP\"\n\tdefault y\n\thelp\n\t  Enable SynOptics Network Management\n\nconfig BR2_PACKAGE_LLDPD_LLDPMED\n\tbool \"LLDP-MED\"\n\tdefault y\n\thelp\n\t  Enable LLDP-MED extension\n\nconfig BR2_PACKAGE_LLDPD_DOT1\n\tbool \"DOT1\"\n\tdefault y\n\thelp\n\t  Enable Dot1 extension (VLAN stuff)\n\nconfig BR2_PACKAGE_LLDPD_DOT3\n\tbool \"DOT3\"\n\tdefault y\n\thelp\n\t  Enable Dot3 extension (PHY stuff)\n\nconfig BR2_PACKAGE_LLDPD_CUSTOM_TLV\n\tbool \"Custom TLV\"\n\tdefault y\n\thelp\n\t  Enable Custom TLV support\n\nendif\n"
  },
  {
    "path": "package/lldpd/S60lldpd",
    "content": "#!/bin/sh\n#\n# Controls lldpd.\n#\n\ncase $1 in\n    start)\n\tprintf \"Starting lldpd: \"\n\tstart-stop-daemon -S -q -p /var/run/lldpd.pid --exec /usr/sbin/lldpd\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\n    stop)\n\tprintf \"Stopping lldpd: \"\n\tstart-stop-daemon -K -q -p /var/run/lldpd.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\n    restart)\n\t$0 stop\n\t$0 start\n\t;;\n    *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\n\t;;\nesac\n"
  },
  {
    "path": "package/lldpd/lldpd.hash",
    "content": "# Locally computed after checking gpg key\n# https://media.luffy.cx/files/lldpd/lldpd-1.0.9.tar.gz.gpg\n# using key AEF2348766F371C689A7360095A42FE8353525F9\nsha256  6b64eb3125952b1e33472198b054e8aa0dee45f45d3d4be22789090a474949f5  lldpd-1.0.9.tar.gz\nsha256  0e96a5aea65f16e2239231ce4ab90497f8bc3bb8fe6abe9299aade4726ff7c8d  LICENSE\n"
  },
  {
    "path": "package/lldpd/lldpd.mk",
    "content": "################################################################################\n#\n# lldpd\n#\n################################################################################\n\nLLDPD_VERSION = 1.0.9\nLLDPD_SITE = https://media.luffy.cx/files/lldpd\nLLDPD_DEPENDENCIES = \\\n\t$(if $(BR2_PACKAGE_CHECK),check) \\\n\thost-pkgconf \\\n\t$(if $(BR2_PACKAGE_LIBCAP),libcap) \\\n\tlibevent \\\n\t$(if $(BR2_PACKAGE_VALGRIND),valgrind)\nLLDPD_LICENSE = ISC\nLLDPD_LICENSE_FILES = LICENSE\nLLDPD_CPE_ID_VENDOR = lldpd_project\n\n# Detection of c99 support in configure fails without WCHAR. To enable\n# automatic detection of c99 support by configure, we need to enable\n# WCHAR in toolchain. But actually we do not need WCHAR at lldpd\n# runtime. So requesting WCHAR in toolchain just for automatic detection\n# will be overkill. To solve this, explicitly -specify c99 here.\nLLDPD_CONF_ENV = ac_cv_prog_cc_c99=-std=gnu99\n\nLLDPD_CONF_OPTS = \\\n\t--without-embedded-libevent \\\n\t--without-seccomp \\\n\t--without-libbsd \\\n\t--disable-hardening \\\n\t--disable-privsep \\\n\t$(if $(BR2_PACKAGE_LLDPD_CDP),--enable-cdp,--disable-cdp) \\\n\t$(if $(BR2_PACKAGE_LLDPD_FDP),--enable-fdp,--disable-fdp) \\\n\t$(if $(BR2_PACKAGE_LLDPD_EDP),--enable-edp,--disable-edp) \\\n\t$(if $(BR2_PACKAGE_LLDPD_SONMP),--enable-sonmp,--disable-sonmp) \\\n\t$(if $(BR2_PACKAGE_LLDPD_LLDPMED),--enable-lldpmed,--disable-lldpmed) \\\n\t$(if $(BR2_PACKAGE_LLDPD_DOT1),--enable-dot1,--disable-dot1) \\\n\t$(if $(BR2_PACKAGE_LLDPD_DOT3),--enable-dot3,--disable-dot3) \\\n\t$(if $(BR2_PACKAGE_LLDPD_CUSTOM_TLV),--enable-custom,--disable-custom)\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nLLDPD_CONF_OPTS += --with-xml\nLLDPD_DEPENDENCIES += libxml2\nelse\nLLDPD_CONF_OPTS += --without-xml\nendif\n\nifeq ($(BR2_PACKAGE_NETSNMP),y)\nLLDPD_CONF_OPTS += --with-snmp\nLLDPD_DEPENDENCIES += netsnmp\nLLDPD_CONF_ENV += \\\n\tac_cv_path_NETSNMP_CONFIG=$(STAGING_DIR)/usr/bin/net-snmp-config\nelse\nLLDPD_CONF_OPTS += --without-snmp\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nLLDPD_CONF_OPTS += --with-readline\nLLDPD_DEPENDENCIES += readline\nelse\nLLDPD_CONF_OPTS += --without-readline\nendif\n\ndefine LLDPD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/lldpd/S60lldpd \\\n\t\t$(TARGET_DIR)/etc/init.d/S60lldpd\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/llvm/0001-nfc-Fix-missing-include.patch",
    "content": "From b498303066a63a203d24f739b2d2e0e56dca70d1 Mon Sep 17 00:00:00 2001\nFrom: serge-sans-paille <sguelton@redhat.com>\nDate: Tue, 10 Nov 2020 14:55:25 +0100\nSubject: [PATCH] [nfc] Fix missing include\n\n[Retrieved (and backported) from:\nhttps://github.com/llvm/llvm-project/commit/b498303066a63a203d24f739b2d2e0e56dca70d1]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n llvm/utils/benchmark/src/benchmark_register.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/utils/benchmark/src/benchmark_register.h b/utils/benchmark/src/benchmark_register.h\nindex 0705e219f2fa2..4caa5ad4da079 100644\n--- a/utils/benchmark/src/benchmark_register.h\n+++ b/utils/benchmark/src/benchmark_register.h\n@@ -1,6 +1,7 @@\n #ifndef BENCHMARK_REGISTER_H\n #define BENCHMARK_REGISTER_H\n \n+#include <limits>\n #include <vector>\n \n #include \"check.h\"\n"
  },
  {
    "path": "package/llvm/Config.in",
    "content": "config BR2_PACKAGE_LLVM_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_i386\n\tdefault y if BR2_x86_64\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_arm || BR2_armeb\n\nconfig BR2_PACKAGE_LLVM_TARGET_ARCH\n\tstring\n\tdefault \"AArch64\" if BR2_aarch64\n\tdefault \"ARM\" if BR2_arm || BR2_armeb\n\tdefault \"X86\" if BR2_i386 || BR2_x86_64\n\nconfig BR2_PACKAGE_LLVM\n\tbool \"llvm\"\n\tdepends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR # std::wstring\n\thelp\n\t  The LLVM Project is a collection of modular and reusable\n\t  compiler and toolchain technologies.\n\n\t  http://llvm.org\n\nif BR2_PACKAGE_LLVM\n\nconfig BR2_PACKAGE_LLVM_AMDGPU\n\tbool \"AMDGPU backend\"\n\thelp\n\t  Build AMDGPU target. Select this option if you are going\n\t  to install mesa3d with llvm and use Gallium Radeon driver.\n\nconfig BR2_PACKAGE_LLVM_RTTI\n\tbool \"enable rtti\"\n\thelp\n\t  Build LLVM with run-time type information. LLVM can be built\n\t  without rtti, but turning it off changes the ABI of C++\n\t  programs.\n\n\t  This features is needed to build the Gallium Nouveau driver\n\t  or the Clover OpenCL state tracker when llvm support is\n\t  enabled.\n\n\t  https://llvm.org/docs/HowToSetUpLLVMStyleRTTI.html\n\nconfig BR2_PACKAGE_LLVM_BPF\n\tbool \"BPF backend\"\n\thelp\n\t  Build BPF target. Select this option if you are going\n\t  to install bcc on the target.\n\nendif\n\ncomment \"llvm needs a toolchain w/ wchar, threads, C++, gcc >= 4.8, dynamic library\"\n\tdepends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \\\n\t\t|| BR2_STATIC_LIBS || !BR2_USE_WCHAR\n\ncomment \"llvm needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/llvm/llvm.hash",
    "content": "# locally calculated\nsha256 00a1ee1f389f81e9979f3a640a01c431b3021de0d42278f6508391a2f0b81c9a llvm-9.0.1.src.tar.xz\nsha256 8d85c1057d742e597985c7d4e6320b015a9139385cff4cbae06ffc0ebe89afee LICENSE.TXT\n"
  },
  {
    "path": "package/llvm/llvm.mk",
    "content": "################################################################################\n#\n# llvm\n#\n################################################################################\n\n# LLVM, Clang and lld should be version bumped together\nLLVM_VERSION = 9.0.1\nLLVM_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(LLVM_VERSION)\nLLVM_SOURCE = llvm-$(LLVM_VERSION).src.tar.xz\nLLVM_LICENSE = Apache-2.0 with exceptions\nLLVM_LICENSE_FILES = LICENSE.TXT\nLLVM_CPE_ID_VENDOR = llvm\nLLVM_SUPPORTS_IN_SOURCE_BUILD = NO\nLLVM_INSTALL_STAGING = YES\n\n# LLVM >= 9.0 can use python3 to build.\nHOST_LLVM_DEPENDENCIES = host-python3\nLLVM_DEPENDENCIES = host-llvm\n\n# LLVM >= 9.0 will soon require C++14 support, building llvm 8.x using a\n# toolchain using gcc < 5.1 gives an error but actually still works. Setting\n# this option makes it still build with gcc >= 4.8.\n# https://reviews.llvm.org/D57264\nHOST_LLVM_CONF_OPTS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON\nLLVM_CONF_OPTS += -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON\n\n# Don't build clang libcxx libcxxabi lldb compiler-rt lld polly as llvm subprojects\n# This flag assumes that projects are checked out side-by-side and not nested\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_PROJECTS=\"\"\nLLVM_CONF_OPTS += -DLLVM_ENABLE_PROJECTS=\"\"\n\nHOST_LLVM_CONF_OPTS += -DLLVM_CCACHE_BUILD=$(if $(BR2_CCACHE),ON,OFF)\nLLVM_CONF_OPTS += -DLLVM_CCACHE_BUILD=$(if $(BR2_CCACHE),ON,OFF)\n\n# This option prevents AddLLVM.cmake from adding $ORIGIN/../lib to\n# binaries. Otherwise, llvm-config (host variant installed in STAGING)\n# will try to use target's libc.\nHOST_LLVM_CONF_OPTS += -DCMAKE_INSTALL_RPATH=\"$(HOST_DIR)/lib\"\n\n# Get target architecture\nLLVM_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LLVM_TARGET_ARCH))\n\n# Build backend for target architecture. This include backends like AMDGPU.\nLLVM_TARGETS_TO_BUILD = $(LLVM_TARGET_ARCH)\nHOST_LLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD=\"$(subst $(space),;,$(LLVM_TARGETS_TO_BUILD))\"\nLLVM_CONF_OPTS += -DLLVM_TARGETS_TO_BUILD=\"$(subst $(space),;,$(LLVM_TARGETS_TO_BUILD))\"\n\n# LLVM target to use for native code generation. This is required for JIT generation.\n# It must be set to LLVM_TARGET_ARCH for host and target, otherwise we get\n# \"No available targets are compatible for this triple\" with llvmpipe when host\n# and target architectures are different.\nHOST_LLVM_CONF_OPTS += -DLLVM_TARGET_ARCH=$(LLVM_TARGET_ARCH)\nLLVM_CONF_OPTS += -DLLVM_TARGET_ARCH=$(LLVM_TARGET_ARCH)\n\n# Build AMDGPU backend\n# We need to build AMDGPU backend for both host and target because\n# llvm-config --targets built (host variant installed in STAGING) will\n# output only $(LLVM_TARGET_ARCH) if not, and mesa3d won't build as\n# it thinks AMDGPU backend is not installed on the target.\nifeq ($(BR2_PACKAGE_LLVM_AMDGPU),y)\nLLVM_TARGETS_TO_BUILD += AMDGPU\nendif\n\n# Build BPF backend\nifeq ($(BR2_PACKAGE_LLVM_BPF),y)\nLLVM_TARGETS_TO_BUILD += BPF\nendif\n\n# Use native llvm-tblgen from host-llvm (needed for cross-compilation)\nLLVM_CONF_OPTS += -DLLVM_TABLEGEN=$(HOST_DIR)/bin/llvm-tblgen\n\n# Use native llvm-config from host-llvm (needed for cross-compilation)\nLLVM_CONF_OPTS += -DLLVM_CONFIG_PATH=$(HOST_DIR)/bin/llvm-config\n\n# BUILD_SHARED_LIBS has a misleading name. It is in fact an option for\n# LLVM developers to build all LLVM libraries as separate shared libraries.\n# For normal use of LLVM, it is recommended to build a single\n# shared library, which is achieved by BUILD_SHARED_LIBS=OFF and\n# LLVM_BUILD_LLVM_DYLIB=ON.\nHOST_LLVM_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF\nLLVM_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF\n\n# Generate libLLVM.so. This library contains a default set of LLVM components\n# that can be overwritten with \"LLVM_DYLIB_COMPONENTS\". The default contains\n# most of LLVM and is defined in \"tools/llvm-shlib/CMakelists.txt\".\nHOST_LLVM_CONF_OPTS += -DLLVM_BUILD_LLVM_DYLIB=ON\nLLVM_CONF_OPTS += -DLLVM_BUILD_LLVM_DYLIB=ON\n\n# LLVM_BUILD_LLVM_DYLIB to ON. We need to enable this option for the\n# host as llvm-config for the host will be used in STAGING_DIR by packages\n# linking against libLLVM and if this option is not selected, then llvm-config\n# does not work properly. For example, it assumes that LLVM is built statically\n# and cannot find libLLVM.so.\nHOST_LLVM_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON\nLLVM_CONF_OPTS += -DLLVM_LINK_LLVM_DYLIB=ON\n\nLLVM_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1\n\n# Disabled for the host since no host-libedit.\n# Fall back to \"Simple fgets-based implementation\" of llvm line editor.\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBEDIT=OFF\nLLVM_CONF_OPTS += -DLLVM_ENABLE_LIBEDIT=OFF\n\n# We want to install llvm libraries and modules.\nHOST_LLVM_CONF_OPTS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=OFF\nLLVM_CONF_OPTS += -DLLVM_INSTALL_TOOLCHAIN_ONLY=OFF\n\n# We build from a release archive without vcs files.\nHOST_LLVM_CONF_OPTS += -DLLVM_APPEND_VC_REV=OFF\nLLVM_CONF_OPTS += -DLLVM_APPEND_VC_REV=OFF\n\n# No backtrace package in Buildroot.\n# https://documentation.backtrace.io\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_BACKTRACES=OFF\nLLVM_CONF_OPTS += -DLLVM_ENABLE_BACKTRACES=OFF\n\n# Enable signal handlers overrides support.\nHOST_LLVM_CONF_OPTS += -DENABLE_CRASH_OVERRIDES=ON\nLLVM_CONF_OPTS += -DENABLE_CRASH_OVERRIDES=ON\n\n# Disable ffi for now.\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_FFI=OFF\nLLVM_CONF_OPTS += -DLLVM_ENABLE_FFI=OFF\n\n# Disable terminfo database (needs ncurses libtinfo.so)\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_TERMINFO=OFF\nLLVM_CONF_OPTS += -DLLVM_ENABLE_TERMINFO=OFF\n\n# Enable thread support\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_THREADS=ON\nLLVM_CONF_OPTS += -DLLVM_ENABLE_THREADS=ON\n\n# Enable optional host-zlib support for LLVM Machine Code (llvm-mc) to add\n# compression/uncompression capabilities.\n# Not needed on the target.\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_ZLIB=ON\nHOST_LLVM_DEPENDENCIES += host-zlib\nLLVM_CONF_OPTS += -DLLVM_ENABLE_ZLIB=OFF\n\n# libxml2 can be disabled as it is used for LLVM Windows builds where COFF\n# files include manifest info\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBXML2=OFF\nLLVM_CONF_OPTS += -DLLVM_ENABLE_LIBXML2=OFF\n\n# Disable optional Z3Prover since there is no such package in Buildroot.\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_Z3_SOLVER=OFF\nLLVM_CONF_OPTS += -DLLVM_ENABLE_Z3_SOLVER=OFF\n\n# We don't use llvm for static only build, so enable PIC\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_PIC=ON\nLLVM_CONF_OPTS += -DLLVM_ENABLE_PIC=ON\n\n# Default is Debug build, which requires considerably more disk space and\n# build time. Release build is selected for host and target because the linker\n# can run out of memory in Debug mode.\nHOST_LLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release\nLLVM_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release\n\n# Disable C++1y (ISO C++ 2014 standard)\n# Disable C++1z (ISO C++ 2017 standard)\n# Compile llvm with the C++11 (ISO C++ 2011 standard) which is the fallback.\nHOST_LLVM_CONF_OPTS += \\\n\t-DLLVM_ENABLE_CXX1Y=OFF \\\n\t-DLLVM_ENABLE_CXX1Z=OFF\nLLVM_CONF_OPTS += \\\n\t-DLLVM_ENABLE_CXX1Y=OFF \\\n\t-DLLVM_ENABLE_CXX1Z=OFF\n\n# Disabled, requires sys/ndir.h header\n# Disable debug in module\nHOST_LLVM_CONF_OPTS += \\\n\t-DLLVM_ENABLE_MODULES=OFF \\\n\t-DLLVM_ENABLE_MODULE_DEBUGGING=OFF\nLLVM_CONF_OPTS += \\\n\t-DLLVM_ENABLE_MODULES=OFF \\\n\t-DLLVM_ENABLE_MODULE_DEBUGGING=OFF\n\n# Don't change the standard library to libc++.\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LIBCXX=OFF\nLLVM_CONF_OPTS += -DLLVM_ENABLE_LIBCXX=OFF\n\n# Don't use lld as a linker.\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_LLD=OFF\nLLVM_CONF_OPTS += -DLLVM_ENABLE_LLD=OFF\n\n# Generate code for the target. LLVM selects a target by looking at the\n# toolchain tuple\nHOST_LLVM_CONF_OPTS += -DLLVM_DEFAULT_TARGET_TRIPLE=$(GNU_TARGET_NAME)\nLLVM_CONF_OPTS += -DLLVM_DEFAULT_TARGET_TRIPLE=$(GNU_TARGET_NAME)\n\n# LLVM_HOST_TRIPLE has a misleading name, it is in fact the triple of the\n# system where llvm is going to run on. We need to specify triple for native\n# code generation on the target.\n# This solves \"No available targets are compatible for this triple\" with llvmpipe\nLLVM_CONF_OPTS += -DLLVM_HOST_TRIPLE=$(GNU_TARGET_NAME)\n\n# Building the Go and OCaml bindings is yet unsupported.\nHOST_LLVM_CONF_OPTS += \\\n\t-DLLVM_ENABLE_BINDINGS=OFF\n\n# Builds a release host tablegen that gets used during the LLVM build.\nHOST_LLVM_CONF_OPTS += -DLLVM_OPTIMIZED_TABLEGEN=ON\n\n# Keep llvm utility binaries for the host. llvm-tblgen is built anyway as\n# CMakeLists.txt has add_subdirectory(utils/TableGen) unconditionally.\nHOST_LLVM_CONF_OPTS += \\\n\t-DLLVM_BUILD_UTILS=ON \\\n\t-DLLVM_INCLUDE_UTILS=ON \\\n\t-DLLVM_INSTALL_UTILS=ON\nLLVM_CONF_OPTS += \\\n\t-DLLVM_BUILD_UTILS=OFF \\\n\t-DLLVM_INCLUDE_UTILS=OFF \\\n\t-DLLVM_INSTALL_UTILS=OFF\n\nHOST_LLVM_CONF_OPTS += \\\n\t-DLLVM_INCLUDE_TOOLS=ON \\\n\t-DLLVM_BUILD_TOOLS=ON\n\n# We need to activate LLVM_INCLUDE_TOOLS, otherwise it does not generate\n# libLLVM.so\nLLVM_CONF_OPTS += \\\n\t-DLLVM_INCLUDE_TOOLS=ON \\\n\t-DLLVM_BUILD_TOOLS=OFF\n\nifeq ($(BR2_PACKAGE_LLVM_RTTI),y)\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=ON\nLLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=ON\nelse\nHOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=OFF\nLLVM_CONF_OPTS += -DLLVM_ENABLE_RTTI=OFF\nendif\n\n# Compiler-rt not in the source tree.\n# llvm runtime libraries are not in the source tree.\n# Polly is not in the source tree.\nHOST_LLVM_CONF_OPTS += \\\n\t-DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF \\\n\t-DLLVM_BUILD_RUNTIME=OFF \\\n\t-DLLVM_INCLUDE_RUNTIMES=OFF \\\n\t-DLLVM_POLLY_BUILD=OFF\nLLVM_CONF_OPTS += \\\n\t-DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF \\\n\t-DLLVM_BUILD_RUNTIME=OFF \\\n\t-DLLVM_INCLUDE_RUNTIMES=OFF \\\n\t-DLLVM_POLLY_BUILD=OFF\n\nHOST_LLVM_CONF_OPTS += \\\n\t-DLLVM_ENABLE_WARNINGS=ON \\\n\t-DLLVM_ENABLE_PEDANTIC=ON \\\n\t-DLLVM_ENABLE_WERROR=OFF\nLLVM_CONF_OPTS += \\\n\t-DLLVM_ENABLE_WARNINGS=ON \\\n\t-DLLVM_ENABLE_PEDANTIC=ON \\\n\t-DLLVM_ENABLE_WERROR=OFF\n\nHOST_LLVM_CONF_OPTS += \\\n\t-DLLVM_BUILD_EXAMPLES=OFF \\\n\t-DLLVM_BUILD_DOCS=OFF \\\n\t-DLLVM_BUILD_TESTS=OFF \\\n\t-DLLVM_ENABLE_DOXYGEN=OFF \\\n\t-DLLVM_ENABLE_OCAMLDOC=OFF \\\n\t-DLLVM_ENABLE_SPHINX=OFF \\\n\t-DLLVM_INCLUDE_EXAMPLES=OFF \\\n\t-DLLVM_INCLUDE_DOCS=OFF \\\n\t-DLLVM_INCLUDE_GO_TESTS=OFF \\\n\t-DLLVM_INCLUDE_TESTS=OFF\nLLVM_CONF_OPTS += \\\n\t-DLLVM_BUILD_EXAMPLES=OFF \\\n\t-DLLVM_BUILD_DOCS=OFF \\\n\t-DLLVM_BUILD_TESTS=OFF \\\n\t-DLLVM_ENABLE_DOXYGEN=OFF \\\n\t-DLLVM_ENABLE_OCAMLDOC=OFF \\\n\t-DLLVM_ENABLE_SPHINX=OFF \\\n\t-DLLVM_INCLUDE_EXAMPLES=OFF \\\n\t-DLLVM_INCLUDE_DOCS=OFF \\\n\t-DLLVM_INCLUDE_GO_TESTS=OFF \\\n\t-DLLVM_INCLUDE_TESTS=OFF\n\n# Copy llvm-config (host variant) to STAGING_DIR\n# llvm-config (host variant) returns include and lib directories\n# for the host if it's installed in host/bin:\n# output/host/bin/llvm-config --includedir\n# output/host/include\n# When installed in STAGING_DIR, llvm-config returns include and lib\n# directories from STAGING_DIR.\n# output/staging/usr/bin/llvm-config --includedir\n# output/staging/usr/include\ndefine HOST_LLVM_COPY_LLVM_CONFIG_TO_STAGING_DIR\n\t$(INSTALL) -D -m 0755 $(HOST_DIR)/bin/llvm-config \\\n\t\t$(STAGING_DIR)/usr/bin/llvm-config\nendef\nHOST_LLVM_POST_INSTALL_HOOKS = HOST_LLVM_COPY_LLVM_CONFIG_TO_STAGING_DIR\n\n# By default llvm-tblgen is built and installed on the target but it is\n# not necessary. Also erase LLVMHello.so from /usr/lib\ndefine LLVM_DELETE_LLVM_TBLGEN_TARGET\n\trm -f $(TARGET_DIR)/usr/bin/llvm-tblgen $(TARGET_DIR)/usr/lib/LLVMHello.so\nendef\nLLVM_POST_INSTALL_TARGET_HOOKS = LLVM_DELETE_LLVM_TBLGEN_TARGET\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/lm-sensors/0001-static-build.patch",
    "content": "Add support for static only build\n\nThis patch adds support for a BUILD_SHARED_LIB variable that allows to\nenable/disable the build of the shared library, in order to support\nstatic-only builds.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/Makefile\n===================================================================\n--- a/Makefile\n+++ b/Makefile\n@@ -85,6 +85,9 @@\n # Build and install static library\n BUILD_STATIC_LIB := 1\n \n+# Build and install shared library\n+BUILD_SHARED_LIB := 1\n+\n # Set these to add preprocessor or compiler flags, or use\n # environment variables\n # CFLAGS :=\nIndex: b/lib/Module.mk\n===================================================================\n--- a/lib/Module.mk\n+++ b/lib/Module.mk\n@@ -43,8 +43,14 @@\n LIBSTLIBNAME := libsensors.a\n LIBSHSONAME := libsensors.so.$(LIBMAINVER)\n \n+ifeq ($(BUILD_SHARED_LIB),1)\n LIBTARGETS := $(MODULE_DIR)/$(LIBSHLIBNAME) \\\n               $(MODULE_DIR)/$(LIBSHSONAME) $(MODULE_DIR)/$(LIBSHBASENAME)\n+LIBDEP_FOR_PROGS := $(LIBSHBASENAME)\n+else\n+LIBDEP_FOR_PROGS := $(LIBSTLIBNAME)\n+endif\n+\n ifeq ($(BUILD_STATIC_LIB),1)\n LIBTARGETS += $(MODULE_DIR)/$(LIBSTLIBNAME)\n endif\n@@ -131,9 +137,11 @@\n ifeq ($(BUILD_STATIC_LIB),1)\n \t$(INSTALL) -m 644 $(LIB_DIR)/$(LIBSTLIBNAME) $(DESTDIR)$(LIBDIR)\n endif\n+ifeq ($(BUILD_SHARED_LIB),1)\n \t$(INSTALL) -m 755 $(LIB_DIR)/$(LIBSHLIBNAME) $(DESTDIR)$(LIBDIR)\n \t$(LN) $(LIBSHLIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBSHSONAME)\n \t$(LN) $(LIBSHSONAME) $(DESTDIR)$(LIBDIR)/$(LIBSHBASENAME)\n+endif\n \t@if [ -z \"$(DESTDIR)\" -a \"$(LIBDIR)\" != \"/usr/lib\" -a \"$(LIBDIR)\" != \"/lib\" ] ; then \\\n \t   if [ -e \"/usr/lib/$(LIBSHSONAME)\" -o -e \"/usr/lib/$(LIBSHBASENAME)\" ] ; then \\\n \t     echo '******************************************************************************' ; \\\nIndex: b/prog/sensord/Module.mk\n===================================================================\n--- a/prog/sensord/Module.mk\n+++ b/prog/sensord/Module.mk\n@@ -41,7 +41,7 @@\n REMOVESENSORDBIN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(SBINDIR)/%,$(PROGSENSORDTARGETS))\n REMOVESENSORDMAN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(PROGSENSORDMAN8DIR)/%,$(PROGSENSORDMAN8FILES))\n \n-$(PROGSENSORDTARGETS): $(PROGSENSORDSOURCES:.c=.ro) lib/$(LIBSHBASENAME)\n+$(PROGSENSORDTARGETS): $(PROGSENSORDSOURCES:.c=.ro) lib/$(LIBDEP_FOR_PROGS)\n \t$(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORDSOURCES:.c=.ro) -Llib -lsensors -lrrd\n \n all-prog-sensord: $(PROGSENSORDTARGETS)\nIndex: b/prog/sensors/Module.mk\n===================================================================\n--- a/prog/sensors/Module.mk\n+++ b/prog/sensors/Module.mk\n@@ -39,8 +39,8 @@\n \n LIBICONV := $(shell if /sbin/ldconfig -p | grep -q '/libiconv\\.so$$' ; then echo \\-liconv; else echo; fi)\n \n-$(PROGSENSORSTARGETS): $(PROGSENSORSSOURCES:.c=.ro) lib/$(LIBSHBASENAME)\n-\t$(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) $(LIBICONV) -Llib -lsensors\n+$(PROGSENSORSTARGETS): $(PROGSENSORSSOURCES:.c=.ro) lib/$(LIBDEP_FOR_PROGS)\n+\t$(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) $(LIBICONV) -Llib -lsensors -lm\n \n all-prog-sensors: $(PROGSENSORSTARGETS)\n user :: all-prog-sensors\n"
  },
  {
    "path": "package/lm-sensors/0002-no-host-ldconfig.patch",
    "content": "Remove usage of host ldconfig\n\nTo know whether the libiconv library is available, lm-sensors is using\nthe host ldconfig, which is obviously wrong in cross-compilation.\n\nMoreover, the lm-sensors program making use of the iconv_*() API\nalready does it when __UCLIBC__ is *not* defined. In this case, the\niconv_*() functions are already part of the C library, so there is no\nneed to link against a separate library. Therefore, this patch simply\nremoves the libiconv handling.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/prog/sensors/Module.mk\n===================================================================\n--- a/prog/sensors/Module.mk\n+++ b/prog/sensors/Module.mk\n@@ -37,10 +37,8 @@\n REMOVESENSORSBIN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(BINDIR)/%,$(PROGSENSORSTARGETS))\n REMOVESENSORSMAN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(PROGSENSORSMAN1DIR)/%,$(PROGSENSORSMAN1FILES))\n \n-LIBICONV := $(shell if /sbin/ldconfig -p | grep -q '/libiconv\\.so$$' ; then echo \\-liconv; else echo; fi)\n-\n $(PROGSENSORSTARGETS): $(PROGSENSORSSOURCES:.c=.ro) lib/$(LIBDEP_FOR_PROGS)\n-\t$(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) $(LIBICONV) -Llib -lsensors -lm\n+\t$(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) -Llib -lsensors -lm\n \n all-prog-sensors: $(PROGSENSORSTARGETS)\n user :: all-prog-sensors\n"
  },
  {
    "path": "package/lm-sensors/Config.in",
    "content": "config BR2_PACKAGE_LM_SENSORS\n\tbool \"lm-sensors\"\n\thelp\n\t  Lm-sensors is a hardware health monitoring package for\n\t  Linux. It allows you to access information from\n\t  temperature, voltage, and fan speed sensors. It\n\t  works with most newer systems.\n\n\t  https://hwmon.wiki.kernel.org\n\nif BR2_PACKAGE_LM_SENSORS\ncomment \"lm-sensors tools\"\n\nconfig BR2_PACKAGE_LM_SENSORS_SENSORS\n\tbool \"sensors\"\n\tdefault y\n\thelp\n\t  Sensors is used to show the current readings of all sensor\n\t  chips.\n\nconfig BR2_PACKAGE_LM_SENSORS_FANCONTROL\n\tbool \"fancontrol\"\n\thelp\n\t  Script for temperature driven fan control\n\nconfig BR2_PACKAGE_LM_SENSORS_ISADUMP\n\tbool \"isadump\"\n\tdepends on BR2_i386 || BR2_x86_64\n\thelp\n\t  Isadump is a small helper program to examine registers\n\t  visible through the ISA bus.\n\nconfig BR2_PACKAGE_LM_SENSORS_ISASET\n\tbool \"isaset\"\n\tdepends on BR2_i386 || BR2_x86_64\n\thelp\n\t  Isaset is a small helper program to set register visible\n\t  through the ISA bus.\n\nconfig BR2_PACKAGE_LM_SENSORS_PWMCONFIG\n\tbool \"pwmconfig\"\n\thelp\n\t  Pwmconfig searches your sensors for pulse width modulation\n\t  (PWM) controls, and tests each one to see if it controls a fan\n\t  on your motherboard.\n\nconfig BR2_PACKAGE_LM_SENSORS_SENSORS_DETECT\n\tbool \"sensors-detect\"\n\tdepends on BR2_PACKAGE_PERL\n\thelp\n\t  Sensors-detect is an interactive program for detecting\n\t  available hardware monitoring chips.\n\ncomment \"sensors-detect needs perl\"\n\tdepends on !BR2_PACKAGE_PERL\n\nendif\n"
  },
  {
    "path": "package/lm-sensors/lm-sensors.hash",
    "content": "# Locally calculated\nsha256  0591f9fa0339f0d15e75326d0365871c2d4e2ed8aa1ff759b3a55d3734b7d197  lm-sensors-3-6-0.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LGPL\n"
  },
  {
    "path": "package/lm-sensors/lm-sensors.mk",
    "content": "################################################################################\n#\n# lm-sensors\n#\n################################################################################\n\nLM_SENSORS_VERSION = 3-6-0\nLM_SENSORS_SITE = $(call github,lm-sensors,lm-sensors,V$(LM_SENSORS_VERSION))\nLM_SENSORS_INSTALL_STAGING = YES\nLM_SENSORS_DEPENDENCIES = host-bison host-flex\nLM_SENSORS_LICENSE = LGPL-2.1+ (libsensors), GPL-2.0+ (programs)\nLM_SENSORS_LICENSE_FILES = COPYING.LGPL COPYING\n\nLM_SENSORS_BINS_ = bin/sensors-conf-convert\nLM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_SENSORS) += bin/sensors\nLM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_FANCONTROL) += sbin/fancontrol\nLM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_ISADUMP) += sbin/isadump\nLM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_ISASET) += sbin/isaset\nLM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_PWMCONFIG) += sbin/pwmconfig\nLM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_SENSORS_DETECT) += sbin/sensors-detect\n\nLM_SENSORS_MAKE_OPTS = \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tPREFIX=/usr\n\nifeq ($(BR2_STATIC_LIBS),y)\nLM_SENSORS_MAKE_OPTS += BUILD_SHARED_LIB=0 EXLDFLAGS=-static\nelse\nLM_SENSORS_MAKE_OPTS += BUILD_SHARED_LIB=1\nendif\n\nifeq ($(BR2_SHARED_LIBS),y)\nLM_SENSORS_MAKE_OPTS += BUILD_STATIC_LIB=0\nelse\nLM_SENSORS_MAKE_OPTS += BUILD_STATIC_LIB=1\nendif\n\ndefine LM_SENSORS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(LM_SENSORS_MAKE_OPTS) -C $(@D)\nendef\n\ndefine LM_SENSORS_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LM_SENSORS_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install\n\trm -f $(addprefix $(STAGING_DIR)/usr/,$(LM_SENSORS_BINS_) $(LM_SENSORS_BINS_y))\nendef\n\ndefine LM_SENSORS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LM_SENSORS_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install\n\trm -f $(addprefix $(TARGET_DIR)/usr/,$(LM_SENSORS_BINS_))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lmbench/0001-scripts-build-use-bin-bash-as-shell.patch",
    "content": "From 02a538c2b4b54b41d23dbd7668714ea4d2016131 Mon Sep 17 00:00:00 2001\nFrom: Markus Mayer <mmayer@broadcom.com>\nDate: Thu, 13 Jun 2019 12:27:04 -0700\nSubject: [PATCH] scripts/build: use /bin/bash as shell\n\nscripts/build makes use of the \"+=\" operator which is not supported by\n/bin/sh. We switch to /bin/bash in order to avoid errors of the form\n\n    ../scripts/build: 21: ../scripts/build: LDLIBS+= -lm: not found\n\nSigned-off-by: Markus Mayer <mmayer@broadcom.com>\n---\n scripts/build | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/scripts/build b/scripts/build\nindex 34a1371d0056..60b755cd2320 100755\n--- a/scripts/build\n+++ b/scripts/build\n@@ -1,4 +1,4 @@\n-#!/bin/sh\n+#!/bin/bash\n \n CC=${CC-`../scripts/compiler`}\n MAKE=${MAKE-`../scripts/make`}\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/lmbench/0002-src-Makefile-add-lmbench-to-list-of-executables.patch",
    "content": "From c158a02561c64d0cd236f86db24cc20d0378eb72 Mon Sep 17 00:00:00 2001\nFrom: Markus Mayer <mmayer@broadcom.com>\nDate: Thu, 13 Jun 2019 12:28:54 -0700\nSubject: [PATCH] src/Makefile: add lmbench to list of executables\n\nWe want to install the lmbench script along with the other executables,\nso we add it to the appropriate list.\n\nSigned-off-by: Markus Mayer <mmayer@broadcom.com>\n---\n src/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/Makefile b/src/Makefile\nindex 4962815b5fe7..70dbc6794898 100644\n--- a/src/Makefile\n+++ b/src/Makefile\n@@ -98,7 +98,7 @@ EXES =\t$O/bw_file_rd $O/bw_mem $O/bw_mmap_rd $O/bw_pipe $O/bw_tcp \t\\\n \t$O/lat_select $O/lat_pipe $O/lat_rpc $O/lat_syscall $O/lat_tcp\t\\\n \t$O/lat_udp $O/lat_mmap $O/mhz $O/lat_proc $O/lat_pagefault\t\\\n \t$O/lat_connect $O/lat_fs $O/lat_sig $O/lat_mem_rd $O/lat_ctx\t\\\n-\t$O/lat_sem \t\t\t\t\t\t\t\\\n+\t$O/lat_sem $O/lmbench\t\t\t\t\t\t\\\n \t$O/memsize $O/lat_unix $O/lmdd $O/timing_o $O/enough\t\t\\\n \t$O/msleep $O/loop_o $O/lat_fifo $O/lmhttp $O/lat_http\t\t\\\n \t$O/lat_fcntl $O/disk $O/lat_unix_connect $O/flushdisk\t\t\\\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/lmbench/0003-TOO_LONG-100-usec-to-prevent-memsize-from-timingout-.patch",
    "content": "From d85b61666aa2728f68b69d02bfb162c432df709f Mon Sep 17 00:00:00 2001\nFrom: vgupta <vgupta@4eed8e25-bc12-0410-818a-f70ee6866280>\nDate: Sat, 3 Mar 2012 10:02:24 +0000\nSubject: [PATCH] TOO_LONG 100 usec to prevent memsize from timingout @80Mhz\n\ngit-svn-id: http://sjvm-subversion02.internal.synopsys.com/svn/OSS/ARC_Linux/tests/lmbench-3.0-a9@157318 4eed8e25-bc12-0410-818a-f70ee6866280\n\nSigned-off-by: Vineet Gupta <vgupta@synopsys.com>\n---\n src/memsize.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/memsize.c b/src/memsize.c\nindex eb25a0924872..b333cf8cbd32 100644\n--- a/src/memsize.c\n+++ b/src/memsize.c\n@@ -15,7 +15,7 @@ char\t*id = \"$Id$\\n\";\n #define\tCHK(x)\tif ((x) == -1) { perror(\"x\"); exit(1); }\n \n #ifndef\tTOO_LONG\n-#define\tTOO_LONG\t10\t/* usecs */\n+#define\tTOO_LONG\t100\t/* usecs */\n #endif\n \n int\talarm_triggered = 0;\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/lmbench/0004-Fix-garbage-pointer-for-lat_rpc-S-localhost.patch",
    "content": "From 3830453a06269912d2772fe8c31bae44f27bb131 Mon Sep 17 00:00:00 2001\nFrom: Vineet Gupta <vgupta@synopsys.com>\nDate: Fri, 8 May 2015 11:35:58 +0530\nSubject: [PATCH] Fix garbage pointer for lat_rpc -S localhost\n\nSigned-off-by: Vineet Gupta <vgupta@synopsys.com>\n---\n src/lat_rpc.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/lat_rpc.c b/src/lat_rpc.c\nindex 9c021926d761..ff4380ff38f3 100644\n--- a/src/lat_rpc.c\n+++ b/src/lat_rpc.c\n@@ -101,6 +101,7 @@ main(int ac, char **av)\n \tchar\t*usage = \"-s\\n OR [-p <tcp|udp>] [-P parallel] [-W <warmup>] [-N <repetitions>] serverhost\\n OR -S serverhost\\n\";\n \n \tstate.msize = 1;\n+\tstate.server = NULL;\n \n \twhile (( c = getopt(ac, av, \"sS:m:p:P:W:N:\")) != EOF) {\n \t\tswitch(c) {\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/lmbench/Config.in",
    "content": "config BR2_PACKAGE_LMBENCH\n\tbool \"lmbench\"\n\tdepends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  LMbench is a suite of simple, portable,\n\t  ANSI/C microbenchmarks for UNIX/POSIX.\n\n\t  http://sourceforge.net/projects/lmbench/\n\ncomment \"lmbench needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC)\n"
  },
  {
    "path": "package/lmbench/lmbench.hash",
    "content": "# Locally computed:\nsha256  cbd5777d15f44eab7666dcac418054c3c09df99826961a397d9acf43d8a2a551  lmbench-3.0-a9.tgz\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\nsha256  3be7a155efa448db90071a95fbf81796f8f90edf9204f0463cfd23402dc90a72  COPYING-2\n"
  },
  {
    "path": "package/lmbench/lmbench.mk",
    "content": "################################################################################\n#\n# lmbench\n#\n################################################################################\n\nLMBENCH_VERSION = 3.0-a9\nLMBENCH_SOURCE = lmbench-$(LMBENCH_VERSION).tgz\nLMBENCH_SITE = http://downloads.sourceforge.net/project/lmbench/development/lmbench-$(LMBENCH_VERSION)\nLMBENCH_LICENSE = lmbench license (based on GPL-2.0)\nLMBENCH_LICENSE_FILES = COPYING COPYING-2\n\nLMBENCH_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nLMBENCH_DEPENDENCIES += host-pkgconf libtirpc\nLMBENCH_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`\nLMBENCH_LDLIBS = `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101915),y)\nLMBENCH_CFLAGS += -O0\nendif\n\nLMBENCH_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK\n\ndefine LMBENCH_CONFIGURE_CMDS\n\tsed -i 's/CFLAGS=/CFLAGS+=/g' $(@D)/src/Makefile\n\tsed -i 's/LDLIBS=/LDLIBS+=/g' $(@D)/scripts/build\n\tsed -i '/cd .*doc/d' $(@D)/src/Makefile\n\tsed -i '/include/d' $(@D)/src/Makefile\n\ttouch $@\nendef\n\n# Note: there is a second stage 'make' invocation from the 'scripts/build'\n# script. So the variables override below don't take direct effect in\n# src/Makefile.\ndefine LMBENCH_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CFLAGS=\"$(LMBENCH_CFLAGS)\" LDLIBS=\"$(LMBENCH_LDLIBS)\" OS=$(ARCH) CC=\"$(TARGET_CC)\" -C $(@D)/src\nendef\n\ndefine LMBENCH_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CFLAGS=\"$(TARGET_CFLAGS)\" OS=$(ARCH) CC=\"$(TARGET_CC)\" BASE=$(TARGET_DIR)/usr -C $(@D)/src install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/localedef/2.34-9-g9acab0bba6a5a57323b1f94bf95b21618a9e5aa4/0001-HACK-only-build-and-install-localedef.patch",
    "content": "From 442e9a3f262c49cf61f9e7bdf12882f0a427666b Mon Sep 17 00:00:00 2001\nFrom: Michael Olbrich <m.olbrich@pengutronix.de>\nDate: Mon, 21 May 2018 16:45:02 +0200\nSubject: [PATCH] HACK: only build and install localedef\n\nSigned-off-by: Michael Olbrich <m.olbrich@pengutronix.de>\n\nUpstream: https://git.pengutronix.de/cgit/ptxdist/plain/patches/localedef-glibc-2.27/0001-HACK-only-build-and-install-localedef.patch?id=47116f66f411d4dadfce42c2fdd6d41b351ccfd4\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n Rules           | 14 ++++++++++----\n locale/Makefile |  6 +++---\n 2 files changed, 13 insertions(+), 7 deletions(-)\n\ndiff --git a/Rules b/Rules\nindex b1137afe71..2aeac31922 100644\n--- a/Rules\n+++ b/Rules\n@@ -216,10 +216,16 @@ binaries-shared-notests = $(filter-out $(binaries-pie) $(binaries-static), \\\n \t\t\t\t       $(binaries-all-notests))\n \n ifneq \"$(strip $(binaries-shared-notests))\" \"\"\n-$(addprefix $(objpfx),$(binaries-shared-notests)): %: %.o \\\n-  $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \\\n-  $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)\n-\t$(+link)\n+$(addprefix $(objpfx),$(binaries-shared-notests)): %: %.o\n+\t$(CC) -o $@ \\\n+\t      $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \\\n+\t      $(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \\\n+\t      $(filter-out $(addprefix $(csu-objpfx),start.o \\\n+\t\t\t\t\t\t     $(start-installed-name))\\\n+\t\t\t   $(+preinit) \\\n+\t\t\t   $(link-extra-libs) \\\n+\t\t\t   $(common-objpfx)libc% $(+postinit),$^) \\\n+\t      $(link-extra-libs)\n endif\n \n ifneq \"$(strip $(binaries-shared-tests))\" \"\"\ndiff --git a/locale/Makefile b/locale/Makefile\nindex b7c60681fa..de4cf4003f 100644\n--- a/locale/Makefile\n+++ b/locale/Makefile\n@@ -33,15 +33,15 @@ categories\t= ctype messages monetary numeric time paper name \\\n \t\t  address telephone measurement identification collate\n aux\t\t= $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name \\\n \t\t  xlocale localename global-locale coll-lookup\n-others\t\t= localedef locale\n+others\t\t= localedef\n #others-static\t= localedef locale\n-install-bin\t= localedef locale\n+install-bin\t= localedef\n extra-objs\t= $(localedef-modules:=.o) $(localedef-aux:=.o) \\\n \t\t  $(locale-modules:=.o) $(lib-modules:=.o)\n generated \t+= C-translit.h\n before-compile\t+= $(objpfx)C-translit.h\n \n-extra-libs\t= libBrokenLocale\n+#extra-libs\t= libBrokenLocale\n extra-libs-others = $(extra-libs)\n \n libBrokenLocale-routines = broken_cur_max\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/localedef/2.34-9-g9acab0bba6a5a57323b1f94bf95b21618a9e5aa4/0002-relax-dependency-on-GCC-to-4.8-and-binutils-to-2.24.patch",
    "content": "From 85412262460f6ba9f6e2cf8da74fc1904c54c854 Mon Sep 17 00:00:00 2001\nFrom: Matt Weber <matthew.weber@rockwellcollins.com>\nDate: Thu, 6 Feb 2020 14:36:21 -0600\nSubject: [PATCH] relax dependency on GCC to 4.8 and binutils to 2.24\n\nThe glibc package has been updating the toolchain version\ndependency since 2.28.x. The dependencies don't currently\napply to the localedef build of the package, so this\npatchset relaxes the restriction such that builds can still\noccur on older host machines.\n\nHere's a related post from 2018 for a similar patchset.\nhttp://lists.busybox.net/pipermail/buildroot/2018-December/237949.html\n\nTimeline of relevant commits that adjust the dependency upstream.\nGCC 4.9+\n https://sourceware.org/git/?p=glibc.git;a=commit;h=4add86749a31f302674599b69d2eea691d69341a\nBinutils 2.25+\n https://sourceware.org/git/?p=glibc.git;a=commit;h=073e8fa7739ed453d6854b834f290c263a6cdb9f\n https://sourceware.org/git/?p=glibc.git;a=commit;h=b4396163aa8666f970aaf43eaca25f3a92b18c1b\nGCC 5+\n https://sourceware.org/git/?p=glibc.git;a=commit;h=192963be49678b48f60218f1f794991cdd9fe472\nGCC 6.2+\n https://sourceware.org/git/?p=glibc.git;a=commit;h=4dcbbc3b28aaeafe23e1a30db84055aa6f6fa987\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n configure | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/configure b/configure\nindex 9619c10991..0c481d2339 100755\n--- a/configure\n+++ b/configure\n@@ -4651,7 +4651,7 @@ $as_echo_n \"checking version of $AS... \" >&6; }\n   ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \\([0-9]*\\.[0-9.]*\\).*$/\\1/p'`\n   case $ac_prog_version in\n     '') ac_prog_version=\"v. ?.??, bad\"; ac_verc_fail=yes;;\n-    2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)\n+    2.1[0-9][0-9]*|2.2[4-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)\n        ac_prog_version=\"$ac_prog_version, ok\"; ac_verc_fail=no;;\n     *) ac_prog_version=\"$ac_prog_version, bad\"; ac_verc_fail=yes;;\n \n@@ -4781,7 +4781,7 @@ $as_echo_n \"checking version of $LD... \" >&6; }\n   ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \\([0-9][0-9]*\\.[0-9.]*\\).*$/\\1/p'`\n   case $ac_prog_version in\n     '') ac_prog_version=\"v. ?.??, bad\"; ac_verc_fail=yes;;\n-    2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)\n+    2.1[0-9][0-9]*|2.2[4-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)\n        ac_prog_version=\"$ac_prog_version, ok\"; ac_verc_fail=no;;\n     *) ac_prog_version=\"$ac_prog_version, bad\"; ac_verc_fail=yes;;\n \n@@ -5189,7 +5189,7 @@ int\n main ()\n {\n \n-#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2)\n+#if !defined __GNUC__ || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)\n #error insufficient compiler\n #endif\n   ;\n-- \n2.33.0\n"
  },
  {
    "path": "package/localedef/2.34-9-g9acab0bba6a5a57323b1f94bf95b21618a9e5aa4/localedef.hash",
    "content": "# Locally calculated (fetched from Github)\nsha256  1c7ed0f69ed268bd66f9754d0cb8fb65e0dafc1f9a1048ea50d1e96d60399686  glibc-2.34-9-g9acab0bba6a5a57323b1f94bf95b21618a9e5aa4.tar.gz\n\n# Hashes for license files\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\nsha256  b33d0bd9f685b46853548814893a6135e74430d12f6d94ab3eba42fc591f83bc  LICENSES\n"
  },
  {
    "path": "package/localedef/localedef.hash",
    "content": "# This hash file is not used; instead, update the\n# hash files in the per-version sub-directories.\n"
  },
  {
    "path": "package/localedef/localedef.mk",
    "content": "################################################################################\n#\n# localedef\n#\n################################################################################\n\n# Use the same VERSION and SITE as target glibc\n# As in glibc.mk, generate version string using:\n#   git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master | cut -d '-' -f 2-\nLOCALEDEF_VERSION = 2.34-9-g9acab0bba6a5a57323b1f94bf95b21618a9e5aa4\nLOCALEDEF_SOURCE = glibc-$(LOCALEDEF_VERSION).tar.gz\nLOCALEDEF_SITE = $(call github,bminor,glibc,$(LOCALEDEF_VERSION))\nHOST_LOCALEDEF_DL_SUBDIR = glibc\n\nHOST_LOCALEDEF_DEPENDENCIES = \\\n\t$(BR2_MAKE_HOST_DEPENDENCY) \\\n\t$(BR2_PYTHON3_HOST_DEPENDENCY) \\\n\thost-bison \\\n\thost-gawk\n\nHOST_LOCALEDEF_CONF_ENV += ac_cv_prog_MAKE=\"$(BR2_MAKE)\"\n\n# Even though we use the autotools-package infrastructure, we have to override\n# the default configure commands for since we have to build out-of-tree, but we\n# can't use the same 'symbolic link to configure' used with the gcc packages.\ndefine HOST_LOCALEDEF_CONFIGURE_CMDS\n\tmkdir -p $(@D)/build\n\t# Do the configuration\n\t(cd $(@D)/build; \\\n\t\t$(HOST_LOCALEDEF_CONF_ENV) \\\n\t\t$(HOST_CONFIGURE_OPTS) \\\n\t\t$(SHELL) $(@D)/configure \\\n\t\tlibc_cv_forced_unwind=yes \\\n\t\tlibc_cv_ssp=no \\\n\t\t--target=$(GNU_HOST_NAME) \\\n\t\t--host=$(GNU_HOST_NAME) \\\n\t\t--build=$(GNU_HOST_NAME) \\\n\t\t--prefix=/usr \\\n\t\t--with-pkgversion=\"Buildroot\" \\\n\t\t--without-cvs \\\n\t\t--disable-profile \\\n\t\t--without-gd \\\n\t\t--enable-obsolete-rpc)\nendef\n\ndefine HOST_LOCALEDEF_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(BR2_MAKE1) $(HOST_LOCALEDEF_MAKE_OPTS) \\\n\t\t-C $(@D)/build locale/others\nendef\n\n# The makefile does not implement an install target for localedef\ndefine HOST_LOCALEDEF_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/build/locale/localedef $(HOST_DIR)/bin/localedef\nendef\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch",
    "content": "From 0dcd2368c3e23a5cc1cc4a979d9c241ed9302236 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Sun, 4 Jan 2015 16:06:07 +0100\nSubject: [PATCH] Makefile: install static library and headers separately\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n Makefile | 12 +++++++-----\n 1 file changed, 7 insertions(+), 5 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex e27dcbd..ecf52d1 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -45,12 +45,10 @@ perl-lib:\tstatic\n \tcd LockDev && make OPTIMIZE=\"-O2 -g -Wall\"\n \tcd LockDev && make test\n \n-.PHONY: install install_dev install_dbg install_doc install_run \n-install:\tinstall_dev install_dbg install_doc install_run\n+.PHONY: install install_dev install_dbg install_doc install_run install_static\n+install:\tinstall_dev install_dbg install_doc install_run install_static\n \n-install_dev:\t${static} src/lockdev.h\n-\tinstall -m755 -d\t${libdir}\n-\tinstall -m644 ${static}\t${libdir}\n+install_dev:\tsrc/lockdev.h\n \tinstall -m755 -d\t${incdir}\n \tinstall -m644 src/lockdev.h\t${incdir}\n \tinstall -m644 src/ttylock.h\t${incdir}\n@@ -69,6 +67,10 @@ install_doc:\tdocs/lockdev.3\n \tinstall -m755 -d\t${mandir}/man3\n \tinstall -m644 docs/lockdev.3\t${mandir}/man3\n \n+install_static:\t${static}\n+\tinstall -m755 -d\t${libdir}\n+\tinstall -m644 ${static}\t${libdir}\n+\n install_run:\t${shared}\n \tinstall -m755 -d\t${libdir}\n \tinstall -m644 ${shared}\t${libdir}\n-- \n1.9.3\n\n"
  },
  {
    "path": "package/lockdev/Config.in",
    "content": "config BR2_PACKAGE_LOCKDEV\n\tbool \"lockdev\"\n\thelp\n\t  Library for locking devices.\n\n\t  No upstream site, primary site is Debian.\n"
  },
  {
    "path": "package/lockdev/lockdev.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/l/lockdev/lockdev_1.0.3-1.6.dsc\nsha256  ccae635d7ac3fdd50897eceb250872b3d9a191d298f213e7f0c836910d869f82  lockdev_1.0.3.orig.tar.gz\nsha256  a5405c6ee5e97e45eeb1c81330a7e9f444a58bda5e6771fa30007516c115007e  lockdev_1.0.3-1.6.diff.gz\n# Locally calculated\nsha256  5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509  LICENSE\n"
  },
  {
    "path": "package/lockdev/lockdev.mk",
    "content": "################################################################################\n#\n# lockdev\n#\n################################################################################\n\nLOCKDEV_VERSION_MAJOR = 1\nLOCKDEV_VERSION = $(LOCKDEV_VERSION_MAJOR).0.3\nLOCKDEV_SOURCE = lockdev_$(LOCKDEV_VERSION).orig.tar.gz\nLOCKDEV_PATCH = lockdev_$(LOCKDEV_VERSION)-1.6.diff.gz\nLOCKDEV_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/l/lockdev\nLOCKDEV_LICENSE = LGPL-2.1\nLOCKDEV_LICENSE_FILES = LICENSE\nLOCKDEV_INSTALL_STAGING = YES\n\nifeq ($(BR2_STATIC_LIBS),y)\nLOCKDEV_BUILD_ARGS = static\nLOCKDEV_INSTALL_ARGS = install_static\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nLOCKDEV_BUILD_ARGS = static shared\nLOCKDEV_INSTALL_ARGS = install_run install_static\nelse # BR2_SHARED_LIBS\nLOCKDEV_BUILD_ARGS = shared\nLOCKDEV_INSTALL_ARGS = install_run\nendif\n\n# Make the code believe we are using a C library compatible with\n# glibc, which for the purpose of lockdev is actually true.\nifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)\nLOCKDEV_BUILD_ARGS += CFLAGS=\"$(TARGET_CFLAGS) -D__GNU_LIBRARY__\"\nendif\n\nifeq ($(BR2_SHARED_STATIC_LIBS)$(BR2_SHARED_LIBS),y)\ndefine LOCKDEV_CREATE_LINKS_STAGING\n\tln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so\n\tln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so.$(LOCKDEV_VERSION_MAJOR)\nendef\n\ndefine LOCKDEV_CREATE_LINKS_TARGET\n\tln -sf liblockdev.$(LOCKDEV_VERSION).so $(TARGET_DIR)/usr/lib/liblockdev.so.$(LOCKDEV_VERSION_MAJOR)\nendef\nendif\n\ndefine LOCKDEV_BUILD_CMDS\n\t$(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(LOCKDEV_BUILD_ARGS)\nendef\n\ndefine LOCKDEV_INSTALL_STAGING_CMDS\n\t$(MAKE1) basedir=$(STAGING_DIR)/usr -C $(@D) $(LOCKDEV_INSTALL_ARGS) install_dev\n\t$(LOCKDEV_CREATE_LINKS_STAGING)\nendef\n\ndefine LOCKDEV_INSTALL_TARGET_CMDS\n\t$(MAKE1) basedir=$(TARGET_DIR)/usr -C $(@D) $(LOCKDEV_INSTALL_ARGS)\n\t$(LOCKDEV_CREATE_LINKS_TARGET)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lockfile-progs/0001-sus3v-legacy.patch",
    "content": "--- /lockfile-progs.orig.c\t2007-10-11 10:32:09.000000000 -0300\n+++ /lockfile-progs.c\t2007-10-11 10:32:28.000000000 -0300\n@@ -93,7 +93,7 @@\n     { NULL, 0, NULL, 0 }\n   };\n \n-  char *cmd_name = rindex(argv[0], '/');\n+  char *cmd_name = strrchr(argv[0], '/');\n   int mail_cmd_p = 0;\n \n   if(cmd_name != NULL) {\n"
  },
  {
    "path": "package/lockfile-progs/Config.in",
    "content": "config BR2_PACKAGE_LOCKFILE_PROGS\n\tbool \"lockfile programs\"\n\tdepends on BR2_USE_MMU # liblockfile\n\tselect BR2_PACKAGE_LIBLOCKFILE\n\thelp\n\t  Build lockfile utility programs.\n"
  },
  {
    "path": "package/lockfile-progs/lockfile-progs.hash",
    "content": "# From https://snapshot.debian.org/archive/debian/20210903T205304Z/pool/main/l/lockfile-progs/lockfile-progs_0.1.19.dsc\nsha256  2c5704b01c8f474f82921780e4592a927b2bf6a6d7616354a6c5d7cd5664857e  lockfile-progs_0.1.19.tar.gz\n\n# Hash for license file\nsha256  dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa  COPYING\n"
  },
  {
    "path": "package/lockfile-progs/lockfile-progs.mk",
    "content": "################################################################################\n#\n# lockfile-progs\n#\n################################################################################\n\nLOCKFILE_PROGS_VERSION = 0.1.19\nLOCKFILE_PROGS_SOURCE = lockfile-progs_$(LOCKFILE_PROGS_VERSION).tar.gz\nLOCKFILE_PROGS_SITE = http://snapshot.debian.org/archive/debian/20210903T205304Z/pool/main/l/lockfile-progs\nLOCKFILE_PROGS_DEPENDENCIES = liblockfile\nLOCKFILE_PROGS_LICENSE = GPL-2.0\nLOCKFILE_PROGS_LICENSE_FILES = COPYING\n\nLOCKFILE_PROGS_BINS = \\\n\t$(addprefix lockfile-,check create remove touch) \\\n\t$(addprefix mail-,lock touchlock unlock)\n\ndefine LOCKFILE_PROGS_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine LOCKFILE_PROGS_INSTALL_TARGET_CMDS\n\tfor i in $(LOCKFILE_PROGS_BINS); do \\\n\t\t$(INSTALL) -D -m 755 $(@D)/bin/$$i $(TARGET_DIR)/usr/bin/$$i || exit 1; \\\n\tdone\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/log4cplus/Config.in",
    "content": "config BR2_PACKAGE_LOG4CPLUS\n\tbool \"log4cplus\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future\n\thelp\n\t  log4cplus is a simple to use C++ logging API providing\n\t  thread-safe, flexible, and arbitrarily granular control\n\t  over log management and configuration. It is modelled\n\t  after the Java log4j API.\n\n\t  http://sourceforge.net/projects/log4cplus\n\ncomment \"log4cplus needs a toolchain w/ C++, wchar, threads, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\ncomment \"log4cplus needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/log4cplus/log4cplus.hash",
    "content": "# Locally computed:\nsha256  8f74a0a5920ba044b24e2ebeb0f1e5e36d85d5c23ed48d9fe328882b16130db8  log4cplus-2.0.7.tar.xz\nsha256  91d7e42ff80e74c4c94e5ad353375fa0358cd0abbf43f5fe957097cdbd4e2c4d  LICENSE\n"
  },
  {
    "path": "package/log4cplus/log4cplus.mk",
    "content": "################################################################################\n#\n# log4cplus\n#\n################################################################################\n\nLOG4CPLUS_VERSION = 2.0.7\nLOG4CPLUS_SOURCE = log4cplus-$(LOG4CPLUS_VERSION).tar.xz\nLOG4CPLUS_SITE = http://downloads.sourceforge.net/project/log4cplus/log4cplus-stable/$(LOG4CPLUS_VERSION)\nLOG4CPLUS_LICENSE = Apache-2.0, BSD-2-Clause, BSD-like (threadpool)\nLOG4CPLUS_LICENSE_FILES = LICENSE\nLOG4CPLUS_INSTALL_STAGING = YES\n\nifeq ($(BR2_GCC_ENABLE_LTO),y)\nLOG4CPLUS_CONF_OPTS += --enable-lto\nelse\nLOG4CPLUS_CONF_OPTS += --disable-lto\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE),y)\nLOG4CPLUS_DEPENDENCIES += host-pkgconf qt5base\nLOG4CPLUS_CONF_OPTS += --with-qt5\nelse\nLOG4CPLUS_CONF_OPTS += --without-qt5\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/log4cpp/Config.in",
    "content": "config BR2_PACKAGE_LOG4CPP\n\tbool \"log4cpp\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Log4cpp is library of C++ classes for flexible logging to\n\t  files, syslog, IDSA and other destinations.  It is modeled\n\t  after the Log4j Java library, staying as close to their API\n\t  as is reasonable.\n\n\t  http://log4cpp.sourceforge.net/\n\ncomment \"log4cpp needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/log4cpp/log4cpp.hash",
    "content": "# From http://sourceforge.net/projects/log4cpp/files/log4cpp-1.1.x%20%28new%29/log4cpp-1.1/\nmd5 b9e2cee932da987212f2c74b767b4d8b  log4cpp-1.1.3.tar.gz\nsha1 74f0fea7931dc1bc4e5cd34a6318cd2a51322041  log4cpp-1.1.3.tar.gz\n# Locally computed\nsha256 2cbbea55a5d6895c9f0116a9a9ce3afb86df383cd05c9d6c1a4238e5e5c8f51d  log4cpp-1.1.3.tar.gz\nsha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7  log4cpp/COPYING\n"
  },
  {
    "path": "package/log4cpp/log4cpp.mk",
    "content": "################################################################################\n#\n# log4cpp\n#\n################################################################################\n\nLOG4CPP_VERSION_MAJOR = 1.1\nLOG4CPP_VERSION = $(LOG4CPP_VERSION_MAJOR).3\nLOG4CPP_SITE = http://downloads.sourceforge.net/project/log4cpp/log4cpp-1.1.x%20%28new%29/log4cpp-$(LOG4CPP_VERSION_MAJOR)\nLOG4CPP_SUBDIR = log4cpp\n# The \"or later\" is indicated in the HTML documentation\nLOG4CPP_LICENSE = LGPL-2.1+\nLOG4CPP_LICENSE_FILES = log4cpp/COPYING\nLOG4CPP_INSTALL_STAGING = YES\nLOG4CPP_CONF_OPTS = --enable-doxygen=no --enable-dot=no\n# needed to fix broken configure script\nLOG4CPP_AUTORECONF = YES\nLOG4CPP_AUTORECONF_OPTS = -I m4\n\n# The default <pkg>_CONFIG_SCRIPTS handling does not apply\ndefine LOG4CPP_STAGING_CONFIG_SCRIPT_FIXUP\n\t$(SED) 's,prefix=\"/usr\",prefix=\"$(STAGING_DIR)/usr\",' \\\n\t\t-e 's,exec_prefix=\"/usr\",prefix=\"$(STAGING_DIR)/usr\",' \\\n\t\t$(STAGING_DIR)/usr/bin/log4cpp-config\nendef\n\nLOG4CPP_POST_INSTALL_STAGING_HOOKS += LOG4CPP_STAGING_CONFIG_SCRIPT_FIXUP\n\ndefine LOG4CPP_TARGET_CONFIG_SCRIPT_REMOVE\n\t$(RM) $(TARGET_DIR)/usr/bin/log4cpp-config\nendef\n\nLOG4CPP_POST_INSTALL_TARGET_HOOKS += LOG4CPP_TARGET_CONFIG_SCRIPT_REMOVE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/log4cxx/0001-LOGCXX-528.patch",
    "content": "From 249dd85494a430d95fd69d89f42b02fd950cda51 Mon Sep 17 00:00:00 2001\nFrom: Robert Middleton <rm5248@users.noreply.github.com>\nDate: Thu, 22 Jul 2021 15:27:50 -0700\nSubject: [PATCH] LOGCXX-528 (#66)\n\nFixes for checking that C++11 is available.  Fix for older compilers.\n\n[Retrieved from:\nhttps://github.com/apache/logging-log4cxx/commit/249dd85494a430d95fd69d89f42b02fd950cda51]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n CMakeLists.txt                                | 10 +++++++++\n src/cmake/boost-fallback/boost-fallback.cmake | 21 ++++++++++---------\n src/main/cpp/hierarchy.cpp                    |  4 ++--\n src/main/include/CMakeLists.txt               |  2 +-\n .../log4cxx/helpers/appenderattachableimpl.h  |  1 +\n .../include/log4cxx/helpers/aprinitializer.h  |  1 +\n src/main/include/log4cxx/helpers/loglog.h     |  1 +\n .../include/log4cxx/helpers/serversocket.h    |  1 +\n src/main/include/log4cxx/level.h              |  1 +\n src/main/include/log4cxx/rolling/action.h     |  1 +\n 10 files changed, 30 insertions(+), 13 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex e5b44ef1a..9c6e63902 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -41,6 +41,9 @@ if( NOT \"${CMAKE_CXX_STANDARD}\")\n     set(CMAKE_CXX_STANDARD 17)\n endif()\n \n+# Don't allow for compiler-specific extensions\n+set(CMAKE_CXX_EXTENSIONS OFF)\n+\n # Building\n add_subdirectory(src)\n \n@@ -185,6 +188,13 @@ if(APACHE_MAINTAINER)\n \t)\n endif()\n \n+#\n+# Check for any fatal configuration errors\n+#\n+if( \"${SHARED_MUTEX_IMPL}\" STREQUAL \"NONE\" )\n+    message( FATAL_ERROR \"No shared_mutex implementation found.  Requires Boost or C++17\" )\n+endif()\n+\n #\n # Output configuration information\n # Similar to APR CMake configuration\ndiff --git a/src/cmake/boost-fallback/boost-fallback.cmake b/src/cmake/boost-fallback/boost-fallback.cmake\nindex a8d7d441b..8285b0b99 100644\n--- a/src/cmake/boost-fallback/boost-fallback.cmake\n+++ b/src/cmake/boost-fallback/boost-fallback.cmake\n@@ -56,16 +56,17 @@ try_compile(STD_ATOMIC_FOUND \"${CMAKE_BINARY_DIR}/boost-fallback-compile-tests\"\n     \"${CMAKE_CURRENT_LIST_DIR}/test-stdatomic.cpp\")\n \n find_package(Boost COMPONENTS thread)\n-try_compile(Boost_SHARED_PTR_FOUND \"${CMAKE_BINARY_DIR}/boost-fallback-compile-tests\"\n-    \"${CMAKE_CURRENT_LIST_DIR}/test-boostsharedptr.cpp\")\n-try_compile(Boost_MUTEX_FOUND \"${CMAKE_BINARY_DIR}/boost-fallback-compile-tests\"\n-    \"${CMAKE_CURRENT_LIST_DIR}/test-boostmutex.cpp\")\n-try_compile(Boost_SHARED_MUTEX_FOUND \"${CMAKE_BINARY_DIR}/boost-fallback-compile-tests\"\n-    \"${CMAKE_CURRENT_LIST_DIR}/test-boostsharedmutex.cpp\"\n-    LINK_LIBRARIES Threads::Threads\n-)\n-try_compile(Boost_ATOMIC_FOUND \"${CMAKE_BINARY_DIR}/boost-fallback-compile-tests\"\n-    \"${CMAKE_CURRENT_LIST_DIR}/test-boostatomic.cpp\")\n+if( ${Boost_FOUND} )\n+    try_compile(Boost_SHARED_PTR_FOUND \"${CMAKE_BINARY_DIR}/boost-fallback-compile-tests\"\n+        \"${CMAKE_CURRENT_LIST_DIR}/test-boostsharedptr.cpp\")\n+    try_compile(Boost_MUTEX_FOUND \"${CMAKE_BINARY_DIR}/boost-fallback-compile-tests\"\n+        \"${CMAKE_CURRENT_LIST_DIR}/test-boostmutex.cpp\")\n+    try_compile(Boost_SHARED_MUTEX_FOUND \"${CMAKE_BINARY_DIR}/boost-fallback-compile-tests\"\n+        \"${CMAKE_CURRENT_LIST_DIR}/test-boostsharedmutex.cpp\"\n+        LINK_LIBRARIES Threads::Threads Boost::thread)\n+    try_compile(Boost_ATOMIC_FOUND \"${CMAKE_BINARY_DIR}/boost-fallback-compile-tests\"\n+        \"${CMAKE_CURRENT_LIST_DIR}/test-boostatomic.cpp\")\n+endif( ${Boost_FOUND} )\n \n # Link the target with the appropriate boost libraries(if required)\n function(boostfallback_link target)\ndiff --git a/src/main/cpp/hierarchy.cpp b/src/main/cpp/hierarchy.cpp\nindex 4f5174448..c70d39dbb 100644\n--- a/src/main/cpp/hierarchy.cpp\n+++ b/src/main/cpp/hierarchy.cpp\n@@ -223,7 +223,7 @@ LoggerPtr Hierarchy::getLogger(const LogString& name,\n \telse\n \t{\n \t\tLoggerPtr logger(factory->makeNewLoggerInstance(pool, name));\n-\t\tlogger->setHierarchy(weak_from_this());\n+\t\tlogger->setHierarchy(shared_from_this());\n \t\tloggers->insert(LoggerMap::value_type(name, logger));\n \n \t\tProvisionNodeMap::iterator it2 = provisionNodes->find(name);\n@@ -423,6 +423,6 @@ void Hierarchy::configureRoot(){\n \t// LOGCXX-322 we need to turn the repositroy into a weak_ptr, and we\n \t// can't use weak_from_this() in the constructor.\n \tif( !root->getLoggerRepository().lock() ){\n-\t\troot->setHierarchy(weak_from_this());\n+\t\troot->setHierarchy(shared_from_this());\n \t}\n }\ndiff --git a/src/main/include/CMakeLists.txt b/src/main/include/CMakeLists.txt\nindex 8183660a5..584941c97 100644\n--- a/src/main/include/CMakeLists.txt\n+++ b/src/main/include/CMakeLists.txt\n@@ -133,7 +133,7 @@ if( ${STD_SHARED_MUTEX_FOUND} )\n elseif( ${Boost_SHARED_MUTEX_FOUND} )\n     set( SHARED_MUTEX_IMPL \"boost::shared_mutex\" )\n else()\n-    set( SMART_PTR_IMPL \"NONE\" )\n+    set( SHARED_MUTEX_IMPL \"NONE\" )\n endif()\n \n if( ${STD_ATOMIC_FOUND} )\ndiff --git a/src/main/include/log4cxx/helpers/appenderattachableimpl.h b/src/main/include/log4cxx/helpers/appenderattachableimpl.h\nindex 40e77d93c..b80b5aade 100644\n--- a/src/main/include/log4cxx/helpers/appenderattachableimpl.h\n+++ b/src/main/include/log4cxx/helpers/appenderattachableimpl.h\n@@ -28,6 +28,7 @@\n #include <log4cxx/helpers/object.h>\n #include <log4cxx/helpers/pool.h>\n #include <log4cxx/log4cxx.h>\n+#include <mutex>\n \n namespace log4cxx\n {\ndiff --git a/src/main/include/log4cxx/helpers/aprinitializer.h b/src/main/include/log4cxx/helpers/aprinitializer.h\nindex 6f3f55070..fccd18e0f 100644\n--- a/src/main/include/log4cxx/helpers/aprinitializer.h\n+++ b/src/main/include/log4cxx/helpers/aprinitializer.h\n@@ -30,6 +30,7 @@ extern \"C\" {\n }\n \n #include <apr_time.h>\n+#include <mutex>\n \n namespace log4cxx\n {\ndiff --git a/src/main/include/log4cxx/helpers/loglog.h b/src/main/include/log4cxx/helpers/loglog.h\nindex d54785ddc..a4c92416a 100644\n--- a/src/main/include/log4cxx/helpers/loglog.h\n+++ b/src/main/include/log4cxx/helpers/loglog.h\n@@ -20,6 +20,7 @@\n \n #include <log4cxx/logstring.h>\n #include <exception>\n+#include <mutex>\n \n namespace log4cxx\n {\ndiff --git a/src/main/include/log4cxx/helpers/serversocket.h b/src/main/include/log4cxx/helpers/serversocket.h\nindex e6e6d475e..7da75b969 100644\n--- a/src/main/include/log4cxx/helpers/serversocket.h\n+++ b/src/main/include/log4cxx/helpers/serversocket.h\n@@ -19,6 +19,7 @@\n #define _LOG4CXX_HELPERS_SERVER_SOCKET_H\n \n #include <log4cxx/helpers/socket.h>\n+#include <mutex>\n \n namespace log4cxx\n {\ndiff --git a/src/main/include/log4cxx/level.h b/src/main/include/log4cxx/level.h\nindex 4ca4bf28c..7848c902a 100644\n--- a/src/main/include/log4cxx/level.h\n+++ b/src/main/include/log4cxx/level.h\n@@ -22,6 +22,7 @@\n #include <log4cxx/logstring.h>\n #include <limits.h>\n #include <log4cxx/helpers/object.h>\n+#include <mutex>\n \n #if defined(_MSC_VER)\n \t#pragma warning ( push )\ndiff --git a/src/main/include/log4cxx/rolling/action.h b/src/main/include/log4cxx/rolling/action.h\nindex 0e8d55f36..fc4497813 100644\n--- a/src/main/include/log4cxx/rolling/action.h\n+++ b/src/main/include/log4cxx/rolling/action.h\n@@ -21,6 +21,7 @@\n #include <log4cxx/portability.h>\n #include <log4cxx/helpers/object.h>\n #include <log4cxx/helpers/pool.h>\n+#include <mutex>\n \n namespace log4cxx\n {\n"
  },
  {
    "path": "package/log4cxx/Config.in",
    "content": "config BR2_PACKAGE_LOG4CXX\n\tbool \"log4cxx\"\n\t# apr really needs shared library support\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # apr\n\tdepends on BR2_USE_WCHAR || BR2_TOOLCHAIN_GCC_AT_LEAST_7 # boost\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS || BR2_TOOLCHAIN_GCC_AT_LEAST_7 # boost-thread\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 || BR2_TOOLCHAIN_GCC_AT_LEAST_7 # boost-thread\n\tselect BR2_PACKAGE_APR\n\tselect BR2_PACKAGE_APR_UTIL\n\tselect BR2_PACKAGE_BOOST if !BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tselect BR2_PACKAGE_BOOST_ATOMIC if !BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tselect BR2_PACKAGE_BOOST_CHRONO if !BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tselect BR2_PACKAGE_BOOST_DATE_TIME if !BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tselect BR2_PACKAGE_BOOST_THREAD if !BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\thelp\n\t  Apache log4cxx is a logging framework for C++ patterned\n\t  after Apache log4j.\n\n\t  https://logging.apache.org/log4cxx/\n\ncomment \"log4cxx needs a toolchain w/ C++, threads, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\ncomment \"log4cxx needs a toolchain w/ wchar or gcc >= 7\"\n\tdepends on !(BR2_USE_WCHAR || BR2_TOOLCHAIN_GCC_AT_LEAST_7)\n\tdepends on BR2_USE_MMU\n\ncomment \"log4cxx needs a toolchain not affected by GCC bug 64735\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/log4cxx/log4cxx.hash",
    "content": "# From https://www.apache.org/dist/logging/log4cxx/0.12.0/apache-log4cxx-0.12.0.tar.gz.sha512\nsha512  00fe571f9c511bf93b17cac8269ce00f7e817e8d723acf62bddff1bbe0e7facd0ab2fd75c01a93870f7e5c66718b2b73fc22c5f193bfd204e34d052b1123e60d  apache-log4cxx-0.12.0.tar.gz\n# Locally computed\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/log4cxx/log4cxx.mk",
    "content": "################################################################################\n#\n# log4cxx\n#\n################################################################################\n\nLOG4CXX_VERSION = 0.12.0\nLOG4CXX_SITE = http://archive.apache.org/dist/logging/log4cxx/$(LOG4CXX_VERSION)\nLOG4CXX_SOURCE = apache-log4cxx-$(LOG4CXX_VERSION).tar.gz\nLOG4CXX_INSTALL_STAGING = YES\nLOG4CXX_LICENSE = Apache-2.0\nLOG4CXX_LICENSE_FILES = LICENSE\n\nLOG4CXX_CONF_OPTS = \\\n\t-DAPR_CONFIG_EXECUTABLE=$(STAGING_DIR)/usr/bin/apr-1-config \\\n\t-DAPR_UTIL_CONFIG_EXECUTABLE=$(STAGING_DIR)/usr/bin/apu-1-config\n\nLOG4CXX_DEPENDENCIES = apr apr-util\n\nifeq ($(BR2_PACKAGE_BOOST),y)\nLOG4CXX_DEPENDENCIES += boost\nendif\n\nifeq ($(BR2_PACKAGE_LIBESMTP),y)\nLOG4CXX_DEPENDENCIES += libesmtp\nendif\n\nifeq ($(BR2_USE_WCHAR),y)\nLOG4CXX_CONF_OPTS += -DLOG4CXX_WCHAR_T=ON\nelse\nLOG4CXX_CONF_OPTS += -DLOG4CXX_WCHAR_T=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/log4qt/Config.in",
    "content": "config BR2_PACKAGE_LOG4QT\n\tbool \"log4qt\"\n\tdepends on BR2_PACKAGE_QT5\n\thelp\n\t  Log4Qt is a C++ port of the Apache Software Foundation\n\t  Log4j package using the Qt Framework. It is intended to be\n\t  used by open source and commercial Qt projects.\n\n\t  https://github.com/MEONMedical/Log4Qt\n\ncomment \"log4qt needs qt5\"\n\tdepends on !BR2_PACKAGE_QT5\n"
  },
  {
    "path": "package/log4qt/log4qt.hash",
    "content": "# Locally computed:\nsha256  ff17b794ca7d5290a150a53f6272e6a30a7f4d942aa58298a8328bf10a65858a  log4qt-1.5.1.tar.gz\nsha256  c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08  LICENSE\n"
  },
  {
    "path": "package/log4qt/log4qt.mk",
    "content": "################################################################################\n#\n# log4qt\n#\n################################################################################\n\nLOG4QT_VERSION = 1.5.1\nLOG4QT_SITE = $(call github,MEONMedical,Log4Qt,v$(LOG4QT_VERSION))\nLOG4QT_DEPENDENCIES = qt5base\nLOG4QT_LICENSE = Apache-2.0\nLOG4QT_LICENSE_FILES = LICENSE\nLOG4QT_INSTALL_STAGING = YES\n\n# Uses __atomic_fetch_add_4\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nLOG4QT_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_SQLITE_QT)$(BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM),y)\nLOG4QT_CONF_OPTS += -DBUILD_WITH_DB_LOGGING=ON\nelse\nLOG4QT_CONF_OPTS += -DBUILD_WITH_DB_LOGGING=OFF\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_NETWORK),y)\nLOG4QT_CONF_OPTS += -DBUILD_WITH_TELNET_LOGGING=ON\nelse\nLOG4QT_CONF_OPTS += -DBUILD_WITH_TELNET_LOGGING=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/logrotate/Config.in",
    "content": "config BR2_PACKAGE_LOGROTATE\n\tbool \"logrotate\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_POPT\n\thelp\n\t  A simple program to rotate logs.\n\n\t  https://github.com/logrotate/logrotate\n\ncomment \"logrotate needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/logrotate/logrotate.conf",
    "content": "compress\n\ninclude /etc/logrotate.d\n\n/var/log/messages /var/log/auth.log /var/log/user.log {\n\trotate 7\n\tdaily\n\tdelaycompress\n\tmissingok\n\tsharedscripts\n\tpostrotate\n\t\t/usr/bin/killall -HUP syslogd\n\tendscript\n}\n"
  },
  {
    "path": "package/logrotate/logrotate.hash",
    "content": "# Locally calculated\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  841f81bf09d0014e4a2e11af166bb33fcd8429cc0c2d4a7d3d9ceb3858cfccc5  logrotate-3.18.0.tar.xz\n"
  },
  {
    "path": "package/logrotate/logrotate.mk",
    "content": "################################################################################\n#\n# logrotate\n#\n################################################################################\n\nLOGROTATE_VERSION = 3.18.0\nLOGROTATE_SOURCE = logrotate-3.18.0.tar.xz\nLOGROTATE_SITE = https://github.com/logrotate/logrotate/releases/download/$(LOGROTATE_VERSION)\nLOGROTATE_LICENSE = GPL-2.0+\nLOGROTATE_LICENSE_FILES = COPYING\nLOGROTATE_CPE_ID_VENDOR = logrotate_project\nLOGROTATE_DEPENDENCIES = popt host-pkgconf\nLOGROTATE_SELINUX_MODULES = logrotate\nLOGROTATE_CONF_ENV = LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs popt`\"\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nLOGROTATE_CONF_OPTS += --with-selinux\nLOGROTATE_DEPENDENCIES += libselinux\nelse\nLOGROTATE_CONF_OPTS += --without-selinux\nendif\n\nifeq ($(BR2_PACKAGE_ACL),y)\nLOGROTATE_DEPENDENCIES += acl\nLOGROTATE_CONF_OPTS += --with-acl\nelse\nLOGROTATE_CONF_OPTS += --without-acl\nendif\n\ndefine LOGROTATE_INSTALL_TARGET_CONF\n\t$(INSTALL) -m 0644 package/logrotate/logrotate.conf $(TARGET_DIR)/etc/logrotate.conf\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/logrotate.d\nendef\nLOGROTATE_POST_INSTALL_TARGET_HOOKS += LOGROTATE_INSTALL_TARGET_CONF\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/logsurfer/Config.in",
    "content": "config BR2_PACKAGE_LOGSURFER\n\tbool \"logsurfer\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Logsurfer is a program for monitoring system logs in\n\t  real-time, and reporting on the occurrence of events.\n\n\t  http://www.crypt.gen.nz/logsurfer/\n"
  },
  {
    "path": "package/logsurfer/logsurfer.hash",
    "content": "# From https://www.crypt.gen.nz/logsurfer/\nmd5 4c26a74d813ccf766117c95c644aa601  logsurfer-1.8.tar.gz\nsha256 74a36e8530a884031b4ae2344a46b9aaa07a1ee36d143802f6b64f817c5bd1af  logsurfer-1.8.tar.gz\n"
  },
  {
    "path": "package/logsurfer/logsurfer.mk",
    "content": "################################################################################\n#\n# logsurfer\n#\n################################################################################\n\nLOGSURFER_VERSION = 1.8\nLOGSURFER_SITE = http://downloads.sourceforge.net/project/logsurfer/logsurfer/logsurfer-$(LOGSURFER_VERSION)\n\ndefine LOGSURFER_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/src/logsurfer \\\n\t\t$(TARGET_DIR)/usr/bin/logsurfer\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lpc3250loader/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_LPC3250LOADER\n\tbool \"host lpc3250loader\"\n\thelp\n\t  lpc3250loader is a tool to load/burn programs (in particular\n\t  kickstart and S1L) on an LPC3250 platform.\n\n\t  https://github.com/alexandrebelloni/lpc3250loader\n"
  },
  {
    "path": "package/lpc3250loader/lpc3250loader.hash",
    "content": "# Locally calculated\nsha256  267de7541c92e5b007b93c660a41188976d531a3757f4ffd9b7142d3994da7d1  lpc3250loader-1.0.tar.gz\nsha256  9a817497240e8e92f09ccfec7568a74673dc30ec008b541c8706663677b4e7a9  LPC3250loader.py\n"
  },
  {
    "path": "package/lpc3250loader/lpc3250loader.mk",
    "content": "################################################################################\n#\n# lpc3250loader\n#\n################################################################################\n\nHOST_LPC3250LOADER_VERSION = 1.0\nHOST_LPC3250LOADER_SITE = $(call github,alexandrebelloni,lpc3250loader,$(HOST_LPC3250LOADER_VERSION))\nLPC3250LOADER_LICENSE = GPL-2.0+\nLPC3250LOADER_LICENSE_FILES = LPC3250loader.py\n\ndefine HOST_LPC3250LOADER_INSTALL_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/LPC3250loader.py \\\n\t\t$(HOST_DIR)/bin/LPC3250loader.py\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/lpeg/Config.in",
    "content": "config BR2_PACKAGE_LPEG\n\tbool \"lpeg\"\n\thelp\n\t  LPeg is a new pattern-matching library for Lua,\n\t  based on Parsing Expression Grammars (PEGs).\n\n\t  http://www.inf.puc-rio.br/~roberto/lpeg.html\n"
  },
  {
    "path": "package/lpeg/lpeg.hash",
    "content": "# computed by luarocks/buildroot\nsha256 e0d0d687897f06588558168eeb1902ac41a11edd1b58f1aa61b99d0ea0abbfbc  lpeg-1.0.2-1.src.rock\n"
  },
  {
    "path": "package/lpeg/lpeg.mk",
    "content": "################################################################################\n#\n# lpeg\n#\n################################################################################\n\nLPEG_VERSION = 1.0.2-1\nLPEG_LICENSE = MIT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lpty/Config.in",
    "content": "config BR2_PACKAGE_LPTY\n\tbool \"lpty\"\n\thelp\n\t  A simple facility for lua to control other programs via\n\t  PTYs.\n\n\t  http://www.tset.de/lpty/\n"
  },
  {
    "path": "package/lpty/lpty.hash",
    "content": "# computed by luarocks/buildroot\nsha256 cf263ece9b50a78a7fb2277e3546fbbf0bf6858f41821932d92f2e3d8a065091  lpty-1.0.1-1.src.rock\nsha256 c5a128a73cad5f6e111ebd8f4a9fa3500562c57912972eb15627db9610d43dec  lpty-1.0.1-1/doc/LICENSE\n"
  },
  {
    "path": "package/lpty/lpty.mk",
    "content": "################################################################################\n#\n# lpty\n#\n################################################################################\n\nLPTY_VERSION = 1.0.1-1\nLPTY_SUBDIR = lpty-$(LPTY_VERSION)\nLPTY_LICENSE = MIT\nLPTY_LICENSE_FILES = $(LPTY_SUBDIR)/doc/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lrandom/Config.in",
    "content": "config BR2_PACKAGE_LRANDOM\n\tbool \"lrandom\"\n\thelp\n\t  A library for generating random numbers\n\t  based on the Mersenne Twister\n\n\t  http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/#lrandom\n"
  },
  {
    "path": "package/lrandom/lrandom.hash",
    "content": "# computed by luarocks/buildroot\nsha256 9b77af41202feb38b09cb4a99cd49680ea9dbc9df3e640f801be378dd286eab8  lrandom-20180729-1.src.rock\n"
  },
  {
    "path": "package/lrandom/lrandom.mk",
    "content": "################################################################################\n#\n# lrandom\n#\n################################################################################\n\nLRANDOM_VERSION = 20180729-1\nLRANDOM_SUBDIR = lrandom-100\nLRANDOM_LICENSE = MIT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lrzip/Config.in",
    "content": "config BR2_PACKAGE_LRZIP\n\tbool \"lrzip\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_LZ4\n\tselect BR2_PACKAGE_LZO\n\tselect BR2_PACKAGE_BZIP2\n\thelp\n\t  A compression utility that excels at compressing large files\n\t  (usually > 10-50 MB). Larger files and/or more free RAM means\n\t  that the utility will be able to more effectively compress\n\t  your files (ie: faster / smaller size), especially if the\n\t  filesize(s) exceed 100 MB. You can either choose to optimise\n\t  for speed (fast compression / decompression) or size,\n\t  but not both.\n\n\t  https://github.com/ckolivas/lrzip\n\ncomment \"lrzip needs a toolchain w/ wchar, threads, C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/lrzip/lrzip.hash",
    "content": "# Locally computed:\nsha256  9b6b4bb1ae76dafbaab96ec9d50d41af5fed45a6c4f2e06feea828c2cd8025c0  lrzip-0.641.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/lrzip/lrzip.mk",
    "content": "################################################################################\n#\n# lrzip\n#\n################################################################################\n\nLRZIP_VERSION = 0.641\nLRZIP_SITE = $(call github,ckolivas,lrzip,v$(LRZIP_VERSION))\nLRZIP_AUTORECONF = YES\nLRZIP_LICENSE = GPL-2.0+\nLRZIP_LICENSE_FILES = COPYING\nLRZIP_DEPENDENCIES = zlib lz4 lzo bzip2\n\nifeq ($(BR2_i386)$(BR2_x86_64),y)\nLRZIP_DEPENDENCIES += host-nasm\nLRZIP_CONF_OPTS += --enable-asm\nelse\nLRZIP_CONF_OPTS += --disable-asm\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lrzsz/Config.in",
    "content": "config BR2_PACKAGE_LRZSZ\n\tbool \"lrzsz\"\n\t# It could technically build in a static-only environment, but\n\t# it unconditionally redefines the error() and error_at_line()\n\t# functions, which clashes with the definition from\n\t# uClibc. Since the autotools packaging dates back from 1998,\n\t# lots of work is needed to fix it, and do some proper tests\n\t# on the availability of such functions.\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Portable and fast implementation of the X/Y/Zmodem protocols.\n\n\t  http://www.ohse.de/uwe/software/lrzsz.html\n\ncomment \"lrzsz needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/lrzsz/lrzsz.hash",
    "content": "# Locally calculated\nsha256  c28b36b14bddb014d9e9c97c52459852f97bd405f89113f30bee45ed92728ff1  lrzsz-0.12.20.tar.gz\nsha256  dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa  COPYING\n"
  },
  {
    "path": "package/lrzsz/lrzsz.mk",
    "content": "################################################################################\n#\n# lrzsz\n#\n################################################################################\n\nLRZSZ_VERSION = 0.12.20\nLRZSZ_SITE = http://www.ohse.de/uwe/releases\nLRZSZ_CONF_OPTS = --disable-timesync\nLRZSZ_LICENSE = GPL-2.0+\nLRZSZ_LICENSE_FILES = COPYING\nLRZSZ_CPE_ID_VENDOR = lrzsz_project\nLRZSZ_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\nLRZSZ_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n\ndefine LRZSZ_POST_CONFIGURE_HOOKS\n\t$(SED) \"s/-lnsl//;\" $(@D)/src/Makefile\n\t$(SED) \"s~\\(#define ENABLE_SYSLOG.*\\)~/* \\1 */~;\" $(@D)/config.h\nendef\n\ndefine LRZSZ_BUILD_HOOKS\n\t$(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE=\"$(TARGET_CROSS)\" prefix=\"$(TARGET_DIR)\" -C $(@D)\nendef\n\ndefine LRZSZ_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/src/lrz $(TARGET_DIR)/usr/bin/rz\n\t$(INSTALL) -m 0755 -D $(@D)/src/lsz $(TARGET_DIR)/usr/bin/sz\n\tln -sf rz $(TARGET_DIR)/usr/bin/lrz\n\tln -sf sz $(TARGET_DIR)/usr/bin/lsz\n\tln -sf rz $(TARGET_DIR)/usr/bin/rb\n\tln -sf sz $(TARGET_DIR)/usr/bin/sb\n\tln -sf rz $(TARGET_DIR)/usr/bin/rx\n\tln -sf sz $(TARGET_DIR)/usr/bin/sx\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lshw/0001-Fix-musl-build-basename-is-in-libgen.h.patch",
    "content": "From 6bc5abf99ef01e5aeea4f5bce5f5bff7f1b8ddd9 Mon Sep 17 00:00:00 2001\nFrom: Sergio Prado <sergio.prado@e-labworks.com>\nDate: Sat, 4 Jul 2020 20:02:53 -0300\nSubject: [PATCH] Fix musl build: basename() is in libgen.h.\n\nAlso, its argument is not const, so add const_cast.\n\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\nSigned-off-by: Sergio Prado <sergio.prado@e-labworks.com>\n---\n src/core/sysfs.cc | 19 ++++++++++---------\n 1 file changed, 10 insertions(+), 9 deletions(-)\n\ndiff --git a/src/core/sysfs.cc b/src/core/sysfs.cc\nindex 32d65642f157..c2fa84fe8d0f 100644\n--- a/src/core/sysfs.cc\n+++ b/src/core/sysfs.cc\n@@ -16,6 +16,7 @@\n #include <sys/stat.h>\n #include <sys/types.h>\n #include <sys/mount.h>\n+#include <libgen.h>\n \n \n __ID(\"@(#) $Id$\");\n@@ -100,7 +101,7 @@ static string sysfs_getbustype(const string & path)\n   {\n     devname =\n       string(fs.path + \"/bus/\") + string(namelist[i]->d_name) +\n-      \"/devices/\" + basename(path.c_str());\n+      \"/devices/\" + basename(const_cast<char*>(path.c_str()));\n \n     if (samefile(devname, path))\n       return string(namelist[i]->d_name);\n@@ -140,7 +141,7 @@ static string sysfstobusinfo(const string & path)\n \n   if (bustype == \"usb\")\n   {\n-    string name = basename(path.c_str());\n+    string name = basename(const_cast<char*>(path.c_str()));\n     if (matches(name, \"^[0-9]+-[0-9]+(\\\\.[0-9]+)*:[0-9]+\\\\.[0-9]+$\"))\n     {\n       size_t colon = name.rfind(\":\");\n@@ -151,7 +152,7 @@ static string sysfstobusinfo(const string & path)\n \n   if (bustype == \"virtio\")\n   {\n-    string name = basename(path.c_str());\n+    string name = basename(const_cast<char*>(path.c_str()));\n     if (name.compare(0, 6, \"virtio\") == 0)\n       return \"virtio@\" + name.substr(6);\n     else\n@@ -159,10 +160,10 @@ static string sysfstobusinfo(const string & path)\n   }\n \n   if (bustype == \"vio\")\n-    return string(\"vio@\") + basename(path.c_str());\n+    return string(\"vio@\") + basename(const_cast<char*>(path.c_str()));\n \n   if (bustype == \"ccw\")\n-    return string(\"ccw@\") + basename(path.c_str());\n+    return string(\"ccw@\") + basename(const_cast<char*>(path.c_str()));\n \n   if (bustype == \"ccwgroup\")\n   {\n@@ -240,7 +241,7 @@ string entry::driver() const\n   string driverlink = This->devpath + \"/driver\";\n   if (!exists(driverlink))\n     return \"\";\n-  return basename(readlink(driverlink).c_str());\n+  return basename(const_cast<char*>(readlink(driverlink).c_str()));\n }\n \n \n@@ -328,7 +329,7 @@ string entry::name_in_class(const string & classname) const\n \n string entry::name() const\n {\n-  return basename(This->devpath.c_str());\n+  return basename(const_cast<char*>(This->devpath.c_str()));\n }\n \n \n@@ -340,12 +341,12 @@ entry entry::parent() const\n \n string entry::classname() const\n {\n-  return basename(dirname(This->devpath).c_str());\n+  return basename(const_cast<char*>(dirname(This->devpath).c_str()));\n }\n \n bool entry::isvirtual() const\n {\n-  return string(basename(dirname(dirname(This->devpath)).c_str())) == \"virtual\";\n+  return string(basename(const_cast<char*>(dirname(dirname(This->devpath)).c_str()))) == \"virtual\";\n }\n \n string entry::string_attr(const string & name, const string & def) const\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/lshw/0002-Fix-musl-build-wrong-usage-of-LONG_BIT.patch",
    "content": "From 246b9e07f22d551fae0718315273760c087b79ca Mon Sep 17 00:00:00 2001\nFrom: Sergio Prado <sergio.prado@e-labworks.com>\nDate: Sat, 4 Jul 2020 20:28:26 -0300\nSubject: [PATCH] Fix musl build: wrong usage of LONG_BIT\n\nLONG_BIT is not a sysconf value, it is either 32 or 64. Using it as\na sysconf value will give weird results.\n\nOriginally it was sysconf(_SC_LONG_BIT) (before it was \"fixed\" by the\ngentoo guys). But this is useless: it will always return a value\nequal to LONG_BIT: it's either compiled 32-bit or 64-bit so a runtime\nlookup doesn't make sense. For this reason, musl has removed the\ndefinition of _SC_LONG_BIT.\n\nSigned-off-by: Sergio Prado <sergio.prado@e-labworks.com>\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n---\n src/core/abi.cc | 4 +---\n 1 file changed, 1 insertion(+), 3 deletions(-)\n\ndiff --git a/src/core/abi.cc b/src/core/abi.cc\nindex adff7b55acfa..76c664c03ce7 100644\n--- a/src/core/abi.cc\n+++ b/src/core/abi.cc\n@@ -20,9 +20,7 @@ __ID(\"@(#) $Id: mem.cc 1352 2006-05-27 23:54:13Z ezix $\");\n bool scan_abi(hwNode & system)\n {\n   // are we compiled as 32- or 64-bit process ?\n-  long sc = sysconf(LONG_BIT);\n-  if(sc==-1) sc = sysconf(_SC_LONG_BIT);\n-  if(sc!=-1) system.setWidth(sc);\n+  system.setWidth(LONG_BIT);\n \n   pushd(PROC_SYS);\n \n-- \n2.17.1\n\n"
  },
  {
    "path": "package/lshw/Config.in",
    "content": "config BR2_PACKAGE_LSHW\n\tbool \"lshw\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_HWDATA # runtime\n\tselect BR2_PACKAGE_HWDATA_PCI_IDS\n\tselect BR2_PACKAGE_HWDATA_USB_IDS\n\thelp\n\t  lshw (Hardware Lister) is a small tool to provide\n\t  detailed information on the hardware configuration of the\n\t  machine.\n\n\t  http://ezix.org/project/wiki/HardwareLiSter\n\ncomment \"lshw needs a toolchain w/ C++, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/lshw/lshw.hash",
    "content": "# Locally calculated\nsha256  9bb347ac87142339a366a1759ac845e3dbb337ec000aa1b99b50ac6758a80f80  lshw-B.02.19.2.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/lshw/lshw.mk",
    "content": "################################################################################\n#\n# lshw\n#\n################################################################################\n\nLSHW_VERSION = 02.19.2\nLSHW_SITE = http://ezix.org/software/files\nLSHW_SOURCE = lshw-B.$(LSHW_VERSION).tar.gz\nLSHW_LICENSE = GPL-2.0\nLSHW_LICENSE_FILES = COPYING\n\nLSHW_MAKE_OPTS = CC=\"$(TARGET_CC)\" CXX=\"$(TARGET_CXX)\" AR=\"$(TARGET_AR)\" \\\n\tRPM_OPT_FLAGS=\"$(TARGET_CFLAGS)\" all\nLSHW_MAKE_ENV = \\\n\t$(TARGET_MAKE_ENV) \\\n\tLIBS=$(TARGET_NLS_LIBS)\nLSHW_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\n\ndefine LSHW_BUILD_CMDS\n\t$(LSHW_MAKE_ENV) $(MAKE) -C $(@D)/src $(LSHW_MAKE_OPTS)\nendef\n\ndefine LSHW_INSTALL_TARGET_CMDS\n\t$(LSHW_MAKE_ENV) $(MAKE) -C $(@D)/src DESTDIR=$(TARGET_DIR) \\\n\t\t$(LSHW_MAKE_OPTS) install\n\t$(RM) -rf $(TARGET_DIR)/usr/share/lshw\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lsof/0001-makefile.patch",
    "content": "diff -ru lsof_4.81.orig/lsof_4.81_src/lib/Makefile.skel lsof_4.81/lsof_4.81_src/lib/Makefile.skel\n--- a/lib/Makefile.skel\t2001-02-13 03:12:22.000000000 +0100\n+++ b/lib/Makefile.skel\t2006-11-29 13:51:44.000000000 +0100\n@@ -21,8 +21,8 @@\n all:\t${LIB}\n \n ${LIB}:\t${OBJ}\n-\t${AR}\n-\t${RANLIB}\n+\t${AR} cr ${LIB} ${OBJ}\n+\t${RANLIB} ${LIB}\n \n clean:\tFRC\n \trm -f ${LIB} ${OBJ} errs Makefile.bak a.out core\n"
  },
  {
    "path": "package/lsof/0002-remove-susvlegacy-funcs.patch",
    "content": "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\n--- a/dialects/linux/machine.h\t2007-04-24 18:20:58.000000000 +0200\n+++ b/dialects/linux/machine.h\t2007-05-15 12:17:03.000000000 +0200\n@@ -616,6 +616,6 @@\n  * zeromem is a macro that uses bzero or memset.\n  */\n \n-#define\tzeromem(a, l)\tbzero(a, l)\n+#define\tzeromem(a, l)\tmemset(a, 0, l)\n \n #endif\t/* !defined(LSOF_MACHINE_H) */\n\n"
  },
  {
    "path": "package/lsof/0003-override-cflags.patch",
    "content": "--- lsof_4.84/Configure\t2008-10-21 18:21:45.000000000 +0200\n+++ lsof_4.84/Configure\t2010-11-03 14:00:00.000000000 +0100\n@@ -5206,6 +5206,10 @@\n   cp $LSOF_MKFC ${LSOF_LIB}/$LSOF_LIBMKF\n fi\t# }\n cat ./dialects/$LSOF_DIALECT_DIR/$LSOF_REST >> $LSOF_MKFC\n+if test \"X$LSOF_CFLAGS_OVERRIDE\" != \"X\"\t# {\n+then\n+  sed -i -e 's/^CFLAGS=/override CFLAGS=/' $LSOF_MKFC\n+fi\t# }\n if test \"X$LSOF_LIB_NO\" = \"X\"\t# {\n then\n \n"
  },
  {
    "path": "package/lsof/Config.in",
    "content": "config BR2_PACKAGE_LSOF\n\tbool \"lsof\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  lsof (LiSt Open Files)\n\t  The lsof tool lists information about files opened by\n\t  processes.\n\n\t  https://github.com/lsof-org/lsof\n"
  },
  {
    "path": "package/lsof/lsof.hash",
    "content": "# Locally calculated\nsha256\t3df912bd966fc24dc73ddea3e36a61d79270b21b085936a4caabca56e5b486a2\tlsof-4.93.2.tar.gz\nsha256\t32a728188b19bf86917659d904ab29d0a294b4506e1c98b8b7f1c70ab4975fe1\tdialects/linux/dproto.h\n"
  },
  {
    "path": "package/lsof/lsof.mk",
    "content": "################################################################################\n#\n# lsof\n#\n################################################################################\n\nLSOF_VERSION = 4.93.2\nLSOF_SITE = $(call github,lsof-org,lsof,$(LSOF_VERSION))\nLSOF_LICENSE = lsof license\n# License is repeated in each file, this is a relatively small one.\n# It is also defined in 00README, but that contains a lot of other cruft.\nLSOF_LICENSE_FILES = dialects/linux/dproto.h\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nLSOF_DEPENDENCIES += libtirpc\nendif\n\nifeq ($(BR2_USE_WCHAR),)\ndefine LSOF_CONFIGURE_WCHAR_FIXUPS\n\t$(SED) 's,^#define[[:space:]]*HASWIDECHAR.*,#undef HASWIDECHAR,' \\\n\t\t$(@D)/machine.h\nendef\nendif\n\nifeq ($(BR2_ENABLE_LOCALE),)\ndefine LSOF_CONFIGURE_LOCALE_FIXUPS\n\t$(SED) 's,^#define[[:space:]]*HASSETLOCALE.*,#undef HASSETLOCALE,' \\\n\t\t$(@D)/machine.h\nendef\nendif\n\ndefine LSOF_CONFIGURE_CMDS\n\t(cd $(@D) ; \\\n\t\techo n | $(TARGET_CONFIGURE_OPTS) DEBUG=\"$(TARGET_CFLAGS)\" \\\n\t\tLSOF_INCLUDE=\"$(STAGING_DIR)/usr/include\" LSOF_CFLAGS_OVERRIDE=1 \\\n\t\tLINUX_CLIB=-DGLIBCV=2 LSOF_CFGL=\"$(TARGET_LDFLAGS)\" \\\n\t\t./Configure linux)\n\t$(LSOF_CONFIGURE_WCHAR_FIXUPS)\n\t$(LSOF_CONFIGURE_LOCALE_FIXUPS)\nendef\n\ndefine LSOF_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) DEBUG=\"$(TARGET_CFLAGS)\" -C $(@D)\nendef\n\ndefine LSOF_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/lsof $(TARGET_DIR)/usr/bin/lsof\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lsqlite3/Config.in",
    "content": "config BR2_PACKAGE_LSQLITE3\n\tbool \"lsqlite3\"\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  A binding for Lua to the SQLite3 database library.\n\n\t  http://lua.sqlite.org/\n"
  },
  {
    "path": "package/lsqlite3/lsqlite3.hash",
    "content": "# computed by luarocks/buildroot\nsha256 fdae3c03390ab4e4b7db3a13d09b79ffe19318739b752d17914adcdb3d2ef9ff  lsqlite3-0.9.5-1.src.rock\n"
  },
  {
    "path": "package/lsqlite3/lsqlite3.mk",
    "content": "################################################################################\n#\n# lsqlite3\n#\n################################################################################\n\nLSQLITE3_VERSION = 0.9.5-1\nLSQLITE3_SUBDIR = lsqlite3_fsl09y\nLSQLITE3_LICENSE = MIT\nLSQLITE3_DEPENDENCIES = sqlite\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lsscsi/Config.in",
    "content": "config BR2_PACKAGE_LSSCSI\n\tbool \"lsscsi\"\n\thelp\n\t  lsscsi - list SCSI devices (or hosts) and their attributes\n\n\t  http://sg.danny.cz/scsi/lsscsi.html\n"
  },
  {
    "path": "package/lsscsi/lsscsi.hash",
    "content": "# Locally calculated\nsha256  12bf1973014803c6fd6d547e7594a4c049f0eef3bf5d22190d4be29d7c09f3ca  lsscsi-0.31.tgz\nsha256  dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa  COPYING\n"
  },
  {
    "path": "package/lsscsi/lsscsi.mk",
    "content": "################################################################################\n#\n# lsscsi\n#\n################################################################################\n\nLSSCSI_VERSION = 0.31\nLSSCSI_SOURCE = lsscsi-$(LSSCSI_VERSION).tgz\nLSSCSI_SITE = http://sg.danny.cz/scsi\nLSSCSI_LICENSE = GPL-2.0+\nLSSCSI_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lsuio/Config.in",
    "content": "config BR2_PACKAGE_LSUIO\n\tbool \"lsuio\"\n\thelp\n\t  list available userspace I/O (UIO) devices\n\n\t  http://www.osadl.org/UIO.uio.0.html\n"
  },
  {
    "path": "package/lsuio/lsuio.hash",
    "content": "# Locally calculated\nsha256  c88b3850248b2d3419e025abd7b9b0991c8bd33a2d4983f9608408a29900bfb5  lsuio-0.2.0.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/lsuio/lsuio.mk",
    "content": "################################################################################\n#\n# lsuio\n#\n################################################################################\n\nLSUIO_VERSION = 0.2.0\nLSUIO_SITE = http://www.osadl.org/projects/downloads/UIO/user\nLSUIO_LICENSE = GPL-2.0\nLSUIO_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ltp-testsuite/0001-lapi-Add-sysinfo.h-to-fix-build-with-MUSL-libc.patch",
    "content": "From bee452dfa2a34ba7df7db677e5673cbdcd23f61e Mon Sep 17 00:00:00 2001\nFrom: Petr Vorel <petr.vorel@gmail.com>\nDate: Thu, 1 Oct 2020 23:28:39 +0200\nSubject: [PATCH] lapi: Add sysinfo.h to fix build with MUSL libc\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe reason is to avoid indirect <linux/sysinfo.h> include when using\nsome network headers: <linux/netlink.h> or others -> <linux/kernel.h>\n-> <linux/sysinfo.h>\n\nThis indirect include causes on MUSL redefinition of struct sysinfo when\nincluded both <sys/sysinfo.h> and some of UAPI headers:\n\nIn file included from x86_64-buildroot-linux-musl/sysroot/usr/include/linux/kernel.h:5,\n                 from x86_64-buildroot-linux-musl/sysroot/usr/include/linux/netlink.h:5,\n                 from ../include/tst_netlink.h:14,\n                 from tst_crypto.c:13:\nx86_64-buildroot-linux-musl/sysroot/usr/include/linux/sysinfo.h:8:8: error: redefinition of ‘struct sysinfo’\n struct sysinfo {\n        ^~~~~~~\nIn file included from ../include/tst_safe_macros.h:15,\n                 from ../include/tst_test.h:93,\n                 from tst_crypto.c:11:\nx86_64-buildroot-linux-musl/sysroot/usr/include/sys/sysinfo.h:10:8: note: originally defined here\n\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n\n[ upstream status:\nhttps://patchwork.ozlabs.org/project/ltp/patch/20201001231256.6930-1-petr.vorel@gmail.com/,\nrebased for 20210927 ]\n\nBut this patch is not going to get upstreamed because it got fixed in Linux kernel:\na85cbe6159ff \"uapi: move constants from <linux/kernel.h> to <linux/const.h>\"\n\nThis patch was also backported to stable and LTS versions,\nwhich we use since buildroot 54584d233b \"{linux, linux-headers}: bump\n5.{4, 10}.x 4.{4, 9, 14, 19} series\".\nWe just wait for all musl based toolchains to be rebuilt. ]\n\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n---\n include/lapi/sysinfo.h                        | 22 +++++++++++++++++++\n include/tst_safe_macros.h                     |  2 +-\n lib/safe_macros.c                             |  2 +-\n lib/tst_memutils.c                            |  2 +-\n testcases/kernel/mem/mtest01/mtest01.c        |  2 +-\n testcases/kernel/syscalls/madvise/madvise06.c |  2 +-\n testcases/kernel/syscalls/sysinfo/sysinfo01.c |  2 +-\n testcases/kernel/syscalls/sysinfo/sysinfo02.c |  2 +-\n testcases/kernel/syscalls/sysinfo/sysinfo03.c |  2 +-\n .../interfaces/pthread_cond_broadcast/1-2.c   |  2 +-\n 10 files changed, 31 insertions(+), 9 deletions(-)\n create mode 100644 include/lapi/sysinfo.h\n\ndiff --git a/include/lapi/sysinfo.h b/include/lapi/sysinfo.h\nnew file mode 100644\nindex 000000000..d0e0e93d7\n--- /dev/null\n+++ b/include/lapi/sysinfo.h\n@@ -0,0 +1,22 @@\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+/*\n+ * Copyright (c) 2020 Petr Vorel <petr.vorel@gmail.com>\n+ */\n+\n+#ifndef SYSINFO_H__\n+\n+/*\n+ * Don't use <sys/sysinfo.h> as it breaks build MUSL toolchain.\n+ * Use <linux/sysinfo.h> instead.\n+ *\n+ * Some kernel UAPI headers do indirect <linux/sysinfo.h> include:\n+ * <linux/netlink.h> or others -> <linux/kernel.h> -> <linux/sysinfo.h>\n+ *\n+ * This indirect include causes on MUSL redefinition of struct sysinfo when\n+ * included both <sys/sysinfo.h> and some of UAPI headers:\n+ */\n+#include <linux/sysinfo.h>\n+\n+#define SYSINFO_H__\n+\n+#endif /* SYSINFO_H__ */\ndiff --git a/include/tst_safe_macros.h b/include/tst_safe_macros.h\nindex d99441c86..0d26e9d45 100644\n--- a/include/tst_safe_macros.h\n+++ b/include/tst_safe_macros.h\n@@ -12,7 +12,7 @@\n #include <sys/resource.h>\n #include <sys/stat.h>\n #include <sys/vfs.h>\n-#include <sys/sysinfo.h>\n+#include <linux/sysinfo.h>\n #include <fcntl.h>\n #include <libgen.h>\n #include <signal.h>\ndiff --git a/lib/safe_macros.c b/lib/safe_macros.c\nindex a5b6bc504..20d01d304 100644\n--- a/lib/safe_macros.c\n+++ b/lib/safe_macros.c\n@@ -11,7 +11,6 @@\n #include <sys/wait.h>\n #include <sys/mount.h>\n #include <sys/xattr.h>\n-#include <sys/sysinfo.h>\n #include <errno.h>\n #include <fcntl.h>\n #include <libgen.h>\n@@ -23,6 +22,7 @@\n #include <malloc.h>\n #include \"test.h\"\n #include \"safe_macros.h\"\n+#include \"lapi/sysinfo.h\"\n \n char *safe_basename(const char *file, const int lineno,\n \t\t    void (*cleanup_fn) (void), char *path)\ndiff --git a/lib/tst_memutils.c b/lib/tst_memutils.c\nindex 69077861f..ae1cad29b 100644\n--- a/lib/tst_memutils.c\n+++ b/lib/tst_memutils.c\n@@ -5,11 +5,11 @@\n \n #include <unistd.h>\n #include <limits.h>\n-#include <sys/sysinfo.h>\n #include <stdlib.h>\n \n #define TST_NO_DEFAULT_MAIN\n #include \"tst_test.h\"\n+#include \"lapi/sysinfo.h\"\n \n #define BLOCKSIZE (16 * 1024 * 1024)\n \ndiff --git a/testcases/kernel/mem/mtest01/mtest01.c b/testcases/kernel/mem/mtest01/mtest01.c\nindex 9676ea4b5..33b2ac822 100644\n--- a/testcases/kernel/mem/mtest01/mtest01.c\n+++ b/testcases/kernel/mem/mtest01/mtest01.c\n@@ -20,7 +20,6 @@\n  */\n \n #include <sys/types.h>\n-#include <sys/sysinfo.h>\n #include <sys/wait.h>\n #include <limits.h>\n #include <signal.h>\n@@ -29,6 +28,7 @@\n #include <unistd.h>\n \n #include \"lapi/abisize.h\"\n+#include \"lapi/sysinfo.h\"\n #include \"tst_test.h\"\n \n #define FIVE_HUNDRED_MB         (500ULL*1024*1024)\ndiff --git a/testcases/kernel/syscalls/madvise/madvise06.c b/testcases/kernel/syscalls/madvise/madvise06.c\nindex 263b8e78b..4fa52e6ea 100644\n--- a/testcases/kernel/syscalls/madvise/madvise06.c\n+++ b/testcases/kernel/syscalls/madvise/madvise06.c\n@@ -46,7 +46,7 @@\n #include <errno.h>\n #include <stdio.h>\n #include <sys/mount.h>\n-#include <sys/sysinfo.h>\n+#include \"lapi/sysinfo.h\"\n #include \"tst_test.h\"\n #include \"tst_cgroup.h\"\n \ndiff --git a/testcases/kernel/syscalls/sysinfo/sysinfo01.c b/testcases/kernel/syscalls/sysinfo/sysinfo01.c\nindex 2ea44a2be..a237345ef 100644\n--- a/testcases/kernel/syscalls/sysinfo/sysinfo01.c\n+++ b/testcases/kernel/syscalls/sysinfo/sysinfo01.c\n@@ -69,7 +69,7 @@\n #include <sys/types.h>\n #include <sys/stat.h>\n #include <sys/signal.h>\n-#include <sys/sysinfo.h>\n+#include \"lapi/sysinfo.h\"\n \n #include \"test.h\"\n \ndiff --git a/testcases/kernel/syscalls/sysinfo/sysinfo02.c b/testcases/kernel/syscalls/sysinfo/sysinfo02.c\nindex 7ad0e8bdc..61fa1ab75 100644\n--- a/testcases/kernel/syscalls/sysinfo/sysinfo02.c\n+++ b/testcases/kernel/syscalls/sysinfo/sysinfo02.c\n@@ -65,7 +65,7 @@\n #include <sys/types.h>\n #include <sys/stat.h>\n #include <sys/signal.h>\n-#include <sys/sysinfo.h>\n+#include \"lapi/sysinfo.h\"\n #include <stdint.h>\n \n #include \"test.h\"\ndiff --git a/testcases/kernel/syscalls/sysinfo/sysinfo03.c b/testcases/kernel/syscalls/sysinfo/sysinfo03.c\nindex af7cb6421..dc5ae65e3 100644\n--- a/testcases/kernel/syscalls/sysinfo/sysinfo03.c\n+++ b/testcases/kernel/syscalls/sysinfo/sysinfo03.c\n@@ -13,7 +13,7 @@\n \n  */\n \n-#include <sys/sysinfo.h>\n+#include \"lapi/sysinfo.h\"\n #include \"lapi/namespaces_constants.h\"\n #include \"lapi/posix_clocks.h\"\n #include \"tst_test.h\"\ndiff --git a/testcases/open_posix_testsuite/conformance/interfaces/pthread_cond_broadcast/1-2.c b/testcases/open_posix_testsuite/conformance/interfaces/pthread_cond_broadcast/1-2.c\nindex 22e7c3638..572701f9f 100644\n--- a/testcases/open_posix_testsuite/conformance/interfaces/pthread_cond_broadcast/1-2.c\n+++ b/testcases/open_posix_testsuite/conformance/interfaces/pthread_cond_broadcast/1-2.c\n@@ -43,7 +43,7 @@\n #include <sys/wait.h>\n #include <semaphore.h>\n #ifdef\t__linux__\n-#include <sys/sysinfo.h>\n+#include \"lapi/sysinfo.h\"\n #endif\n \n #include \"../testfrmw/testfrmw.h\"\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/ltp-testsuite/0002-lib-fix-MemAvailable-parsing.patch",
    "content": "From 29a096fe2bd356f419bd8a8404d5b652c996b92f Mon Sep 17 00:00:00 2001\nFrom: Ralph Siemsen <ralph.siemsen@linaro.org>\nDate: Mon, 27 Sep 2021 22:18:50 -0400\nSubject: [PATCH] lib: fix MemAvailable parsing\n\nThe amount of available memory was not being returned correctly, which\nresulted in tests being executed when they should have been skipped.\n\nFixes: 8759f4 (\"lib: adjust the tmpfs size according to .dev_min_size and MemAvailable\")\nSigned-off-by: Ralph Siemsen <ralph.siemsen@linaro.org>\nSigned-off-by: Li Wang <liwang@redhat.com>\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n[ upstream status: e42149e28 (\"lib: fix MemAvailable parsing\") ]\n---\n lib/tst_memutils.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/lib/tst_memutils.c b/lib/tst_memutils.c\nindex ae1cad29b..a46de78f5 100644\n--- a/lib/tst_memutils.c\n+++ b/lib/tst_memutils.c\n@@ -65,9 +65,9 @@ void tst_pollute_memory(size_t maxsize, int fillchar)\n \n long long tst_available_mem(void)\n {\n-\tlong long mem_available;\n+\tunsigned long long mem_available = 0;\n \n-\tif (FILE_LINES_SCANF(\"/proc/meminfo\", \"MemAvailable: %ld\",\n+\tif (FILE_LINES_SCANF(\"/proc/meminfo\", \"MemAvailable: %llu\",\n \t\t&mem_available)) {\n \t\tmem_available = SAFE_READ_MEMINFO(\"MemFree:\")\n \t\t\t+ SAFE_READ_MEMINFO(\"Cached:\");\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/ltp-testsuite/0003-lapi-rtnetlink.h-Fix-include-guards.patch",
    "content": "From 881709d1e4d1bba5bf8ca365bc058f338bd72dc2 Mon Sep 17 00:00:00 2001\nFrom: Petr Vorel <petr.vorel@gmail.com>\nDate: Wed, 29 Sep 2021 19:38:42 +0200\nSubject: [PATCH] lapi/rtnetlink.h: Fix include guards\n\nFixes: 5fea0638a (\"lapi: Add missing IFA_FLAGS\")\n\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n[ upstream status: a2a212cf8 (\"lapi/rtnetlink.h: Fix include guards\") ]\n---\n include/lapi/rtnetlink.h | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/include/lapi/rtnetlink.h b/include/lapi/rtnetlink.h\nindex 8a1b5385b..04e9ad51a 100644\n--- a/include/lapi/rtnetlink.h\n+++ b/include/lapi/rtnetlink.h\n@@ -1,8 +1,8 @@\n // SPDX-License-Identifier: GPL-2.0-or-later\n /* Copyright (c) 2021 Petr Vorel <petr.vorel@gmail.com> */\n \n-#ifndef LAPI_IF_ADDR_H__\n-# define LAPI_IF_ADDR_H__\n+#ifndef LAPI_RTNETLINK_H__\n+# define LAPI_RTNETLINK_H__\n \n #include <linux/rtnetlink.h>\n \n@@ -10,4 +10,4 @@\n # define IFA_FLAGS 8\n #endif\n \n-#endif\t/* LAPI_IF_ADDR_H__ */\n+#endif\t/* LAPI_RTNETLINK_H__ */\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/ltp-testsuite/0004-lapi-Create-if_addr.h-and-reuse-it-in-rtnetlink.h.patch",
    "content": "From b13440627bd4a9f060a33d400a47a40daa2bc12e Mon Sep 17 00:00:00 2001\nFrom: Petr Vorel <petr.vorel@gmail.com>\nDate: Wed, 29 Sep 2021 19:37:19 +0200\nSubject: [PATCH] lapi: Create if_addr.h and reuse it in rtnetlink.h\n\nThere will be fix in next commit for missing IFA_F_NOPREFIXROUTE which\nrequires creating lapi/if_addr.h. Thus move IFA_FLAGS to lapi/if_addr.h,\nas it belongs there and reuse lapi/if_addr.h in lapi/rtnetlink.h just\nlike <linux/rtnetlink.h> includes <linux/if_addr.h>.\n\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n[ upstream status: https://lore.kernel.org/ltp/20210930183058.5240-3-petr.vorel@gmail.com/T/#u ]\n---\n include/lapi/if_addr.h   | 16 ++++++++++++++++\n include/lapi/rtnetlink.h |  5 +----\n 2 files changed, 17 insertions(+), 4 deletions(-)\n create mode 100644 include/lapi/if_addr.h\n\ndiff --git a/include/lapi/if_addr.h b/include/lapi/if_addr.h\nnew file mode 100644\nindex 000000000..4e50a0a4e\n--- /dev/null\n+++ b/include/lapi/if_addr.h\n@@ -0,0 +1,16 @@\n+// SPDX-License-Identifier: GPL-2.0-or-later\n+/*\n+ * Copyright (c) 2021 Petr Vorel <petr.vorel@gmail.com>\n+ */\n+\n+#ifndef LAPI_IF_ADDR_H__\n+#define LAPI_IF_ADDR_H__\n+\n+#include <linux/if_addr.h>\n+\n+#ifndef IFA_FLAGS\n+# define IFA_FLAGS 8\n+#endif\n+\n+\n+#endif /* LAPI_IF_ADDR_H__ */\ndiff --git a/include/lapi/rtnetlink.h b/include/lapi/rtnetlink.h\nindex 04e9ad51a..089bf1a0d 100644\n--- a/include/lapi/rtnetlink.h\n+++ b/include/lapi/rtnetlink.h\n@@ -5,9 +5,6 @@\n # define LAPI_RTNETLINK_H__\n \n #include <linux/rtnetlink.h>\n-\n-#ifndef IFA_FLAGS\n-# define IFA_FLAGS 8\n-#endif\n+#include \"lapi/if_addr.h\"\n \n #endif\t/* LAPI_RTNETLINK_H__ */\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/ltp-testsuite/0005-lapi-if_addr.h-Define-IFA_FLAGS.patch",
    "content": "From 9e357fb4fc00ab9c303e314b85b9ae3836141f81 Mon Sep 17 00:00:00 2001\nFrom: Petr Vorel <petr.vorel@gmail.com>\nDate: Wed, 29 Sep 2021 19:56:29 +0200\nSubject: [PATCH] lapi/if_addr.h: Define IFA_FLAGS\n\nand use it in icmp_rate_limit01.c.\n\nThis fixes error on toolchains with very old kernel headers, e.g.\nBuildroot sourcery-arm:\n\nicmp_rate_limit01.c:82:3: error: 'IFA_F_NOPREFIXROUTE' undeclared (first use in this function)\n   IFA_F_NOPREFIXROUTE);\n\nFixed because IFA_F_NOPREFIXROUTE was added in 3.14 and the oldest\nsystem we still support is Cent0S 7 with 3.10 kernel.\n\nNOTE: Cent0S 7 is obviously heavily patched thus it contains\nIFA_F_NOPREFIXROUTE and therefore CI build didn't catch this error.\n\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n[ upstream status: https://lore.kernel.org/ltp/20210930183058.5240-4-petr.vorel@gmail.com/T/#u ]\n---\n include/lapi/if_addr.h            | 3 +++\n testcases/cve/icmp_rate_limit01.c | 3 ++-\n 2 files changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/include/lapi/if_addr.h b/include/lapi/if_addr.h\nindex 4e50a0a4e..0f7e44784 100644\n--- a/include/lapi/if_addr.h\n+++ b/include/lapi/if_addr.h\n@@ -12,5 +12,8 @@\n # define IFA_FLAGS 8\n #endif\n \n+#ifndef IFA_F_NOPREFIXROUTE\n+# define IFA_F_NOPREFIXROUTE\t0x200\n+#endif\n \n #endif /* LAPI_IF_ADDR_H__ */\ndiff --git a/testcases/cve/icmp_rate_limit01.c b/testcases/cve/icmp_rate_limit01.c\nindex b3a237b30..3ada32675 100644\n--- a/testcases/cve/icmp_rate_limit01.c\n+++ b/testcases/cve/icmp_rate_limit01.c\n@@ -27,11 +27,12 @@\n #include <sys/socket.h>\n #include <netinet/in.h>\n #include <arpa/inet.h>\n-#include <linux/if_addr.h>\n #include <linux/errqueue.h>\n \n #include <sched.h>\n #include <limits.h>\n+\n+#include \"lapi/if_addr.h\"\n #include \"tst_test.h\"\n #include \"tst_netdevice.h\"\n \n-- \n2.33.0\n\n"
  },
  {
    "path": "package/ltp-testsuite/Config.in",
    "content": "config BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS\n\tbool\n\t# Needs __sync*() built-ins for 4-byte data, except on a few\n\t# architectures for which a specific implementation is\n\t# provided in ltp-testsuite\n\tdefault y if BR2_TOOLCHAIN_HAS_SYNC_4\n\tdefault y if BR2_arc\n\t# does not build on nios2, cachectl.h issue\n\tdepends on !BR2_nios2\n\nconfig BR2_PACKAGE_LTP_TESTSUITE\n\tbool \"ltp-testsuite\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  The Linux Test Project provides a huge testsuite for Linux.\n\n\t  http://linux-test-project.github.io\n\nif BR2_PACKAGE_LTP_TESTSUITE\n\nconfig BR2_PACKAGE_LTP_TESTSUITE_OPEN_POSIX\n\tbool \"Open POSIX testsuite\"\n\tdefault y\n\thelp\n\t  Test suite for POSIX compliance. Included with the LTP.\n\nconfig BR2_PACKAGE_LTP_TESTSUITE_REALTIME\n\tbool \"Realtime testsuite\"\n\tdefault y\n\thelp\n\t  Test suite for realtime kernels. Included with the LTP.\n\nendif\n\ncomment \"ltp-testsuite needs a toolchain w/ NPTL\"\n\tdepends on BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/ltp-testsuite/ltp-testsuite.hash",
    "content": "# From: https://github.com/linux-test-project/ltp/releases/download/20210927/ltp-full-20210927.tar.xz.sha1\nsha1 dad7737f609e358c4060cb446b9cae5c026fc137  ltp-full-20210927.tar.xz\n# Locally computed\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  779e9e5cc9af4f2b3d4cb32f5439ebd635504d2c4591bf900f0942dac290ed15  ltp-full-20210927.tar.xz\n"
  },
  {
    "path": "package/ltp-testsuite/ltp-testsuite.mk",
    "content": "################################################################################\n#\n# ltp-testsuite\n#\n################################################################################\n\nLTP_TESTSUITE_VERSION = 20210927\nLTP_TESTSUITE_SOURCE = ltp-full-$(LTP_TESTSUITE_VERSION).tar.xz\nLTP_TESTSUITE_SITE = https://github.com/linux-test-project/ltp/releases/download/$(LTP_TESTSUITE_VERSION)\n\nLTP_TESTSUITE_LICENSE = GPL-2.0, GPL-2.0+\nLTP_TESTSUITE_LICENSE_FILES = COPYING\n\nLTP_TESTSUITE_CONF_OPTS += --disable-metadata\n\nifeq ($(BR2_PACKAGE_LTP_TESTSUITE_OPEN_POSIX),y)\nLTP_TESTSUITE_CONF_OPTS += --with-open-posix-testsuite\nendif\n\nifeq ($(BR2_PACKAGE_LTP_TESTSUITE_REALTIME),y)\nLTP_TESTSUITE_CONF_OPTS += --with-realtime-testsuite\nendif\n\nifeq ($(BR2_LINUX_KERNEL),y)\nLTP_TESTSUITE_DEPENDENCIES += linux\nLTP_TESTSUITE_MAKE_ENV += $(LINUX_MAKE_FLAGS)\nLTP_TESTSUITE_CONF_OPTS += --with-linux-dir=$(LINUX_DIR)\nelse\nLTP_TESTSUITE_CONF_OPTS += --without-modules\nendif\n\n# We change the prefix to a custom one, otherwise we get scripts and\n# directories directly in /usr, such as /usr/runalltests.sh\nLTP_TESTSUITE_CONF_OPTS += --prefix=/usr/lib/ltp-testsuite\n\n# Needs libcap with file attrs which needs attr, so both required\nifeq ($(BR2_PACKAGE_LIBCAP)$(BR2_PACKAGE_ATTR),yy)\nLTP_TESTSUITE_DEPENDENCIES += libcap\nelse\nLTP_TESTSUITE_CONF_ENV += ac_cv_lib_cap_cap_compare=no\nendif\n\n# No explicit enable/disable options\nifeq ($(BR2_PACKAGE_NUMACTL),y)\nLTP_TESTSUITE_DEPENDENCIES += numactl\nelse\nLTP_TESTSUITE_CONF_ENV += have_numa_headers=no\nendif\n\n# ltp-testsuite uses <fts.h>, which isn't compatible with largefile\n# support.\nLTP_TESTSUITE_CFLAGS = $(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CFLAGS))\nLTP_TESTSUITE_CPPFLAGS = $(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CPPFLAGS))\nLTP_TESTSUITE_LIBS =\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nLTP_TESTSUITE_DEPENDENCIES += libtirpc host-pkgconf\nLTP_TESTSUITE_CFLAGS += \"`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`\"\nLTP_TESTSUITE_LIBS += \"`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`\"\nendif\n\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),)\nLTP_TESTSUITE_DEPENDENCIES += musl-fts\nLTP_TESTSUITE_LIBS += -lfts\nendif\n\nLTP_TESTSUITE_CONF_ENV += \\\n\tCFLAGS=\"$(LTP_TESTSUITE_CFLAGS)\" \\\n\tCPPFLAGS=\"$(LTP_TESTSUITE_CPPFLAGS)\" \\\n\tLIBS=\"$(LTP_TESTSUITE_LIBS)\" \\\n\tSYSROOT=\"$(STAGING_DIR)\"\n\n# uclibc: bessel support normally not enabled\nLTP_TESTSUITE_UNSUPPORTED_TEST_CASES_$(BR2_TOOLCHAIN_USES_UCLIBC) += \\\n\ttestcases/misc/math/float/bessel/ \\\n\ttestcases/misc/math/float/float_bessel.c\n\nLTP_TESTSUITE_UNSUPPORTED_TEST_CASES_$(BR2_TOOLCHAIN_USES_MUSL) += \\\n\ttestcases/kernel/syscalls/confstr/confstr01.c \\\n\ttestcases/kernel/syscalls/fmtmsg/fmtmsg01.c \\\n\ttestcases/kernel/syscalls/getcontext/getcontext01.c \\\n\ttestcases/kernel/syscalls/rt_tgsigqueueinfo/rt_tgsigqueueinfo01.c \\\n\ttestcases/kernel/syscalls/timer_create/timer_create01.c \\\n\ttestcases/kernel/syscalls/timer_create/timer_create03.c\n\n# ldd command build system tries to build a shared library unconditionally.\nLTP_TESTSUITE_UNSUPPORTED_TEST_CASES_$(BR2_STATIC_LIBS) += \\\n\ttestcases/commands/ldd\n\ndefine LTP_TESTSUITE_REMOVE_UNSUPPORTED_TESTCASES\n\t$(foreach f,$(LTP_TESTSUITE_UNSUPPORTED_TEST_CASES_y),\n\t\trm -rf $(@D)/$(f)\n\t)\nendef\n\nLTP_TESTSUITE_POST_PATCH_HOOKS += LTP_TESTSUITE_REMOVE_UNSUPPORTED_TESTCASES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ltrace/0001-arm-plt.patch",
    "content": "From 04377d28135e351c8d096c4392a493e937416815 Mon Sep 17 00:00:00 2001\nFrom: Alexandre Belloni <alexandre.belloni@free-electrons.com>\nDate: Thu, 24 Jul 2014 23:15:20 +0200\nSubject: [PATCH] Allow building with uclibc toolchains\n\nUnfortunately, uclicbc doesn't define SHT_ARM_ATTRIBUTES in elf.h\n\nSigned-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>\n---\n sysdeps/linux-gnu/arm/plt.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/sysdeps/linux-gnu/arm/plt.c b/sysdeps/linux-gnu/arm/plt.c\nindex 9e9e37f0c5b0..a0a5795eb9cb 100644\n--- a/sysdeps/linux-gnu/arm/plt.c\n+++ b/sysdeps/linux-gnu/arm/plt.c\n@@ -28,6 +28,10 @@\n #include \"library.h\"\n #include \"ltrace-elf.h\"\n \n+#ifndef SHT_ARM_ATTRIBUTES\n+#define SHT_ARM_ATTRIBUTES     0x70000003\n+#endif\n+\n static int\n get_hardfp(uint64_t abi_vfp_args)\n {\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/ltrace/0002-sparc-add-missing-library.h-include.patch",
    "content": "From 4e58f53b7886420d002e5919f279acd6d7c4afd1 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 22 Dec 2015 21:47:45 +0100\nSubject: [PATCH] sparc: add missing library.h include\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes the following build failure on sparc:\n\nplt.c: In function ‘sym2addr’:\nplt.c:33:12: error: dereferencing pointer to incomplete type\n  return sym->enter_addr;\n            ^\nplt.c:34:1: warning: control reaches end of non-void function [-Wreturn-type]\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n sysdeps/linux-gnu/sparc/plt.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/sysdeps/linux-gnu/sparc/plt.c b/sysdeps/linux-gnu/sparc/plt.c\nindex 3d2e589..959eed1 100644\n--- a/sysdeps/linux-gnu/sparc/plt.c\n+++ b/sysdeps/linux-gnu/sparc/plt.c\n@@ -21,6 +21,7 @@\n #include <gelf.h>\n #include \"proc.h\"\n #include \"common.h\"\n+#include \"library.h\"\n \n GElf_Addr\n arch_plt_sym_val(struct ltelf *lte, size_t ndx, GElf_Rela * rela) {\n-- \n2.6.4\n\n"
  },
  {
    "path": "package/ltrace/0003-configure.ac-fix-autoreconf-with-autoconf-2.70.patch",
    "content": "From b8d5d086489ff20339e221323a60c140a9820e67 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 9 Oct 2021 09:39:52 +0200\nSubject: [PATCH] configure.ac: fix autoreconf with autoconf >= 2.70\n\nDrop AC_CONFIG_AUX_DIR to avoid the following build failure with\nautoconf >= 2.70:\n\nautoreconf: error: cannot create config/autoconf: No such file or directory\n\nFixes:\n - http://autobuild.buildroot.org/results/433599039d6e1ee301465f9867e169c121a0646f\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not sent as upstream is unmaintained:\nhttps://gitlab.com/cespedes/ltrace/-/issues/8]\n---\n configure.ac | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex b9c39fa..486589b 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -28,7 +28,6 @@ AC_INIT([ltrace],[0.7.91],[ltrace-devel@lists.alioth.debian.org],\n AC_CONFIG_HEADERS([config.h])\n AC_CONFIG_SRCDIR(libltrace.c)\n AC_CONFIG_MACRO_DIR([config/m4])\n-AC_CONFIG_AUX_DIR([config/autoconf])\n AC_CANONICAL_BUILD\n AC_CANONICAL_HOST\n \n-- \n2.33.0\n\n"
  },
  {
    "path": "package/ltrace/Config.in",
    "content": "config BR2_PACKAGE_LTRACE_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_arm\n\tdefault y if BR2_i386\n\tdefault y if BR2_mips\n\tdefault y if BR2_mipsel\n\tdefault y if BR2_powerpc\n\tdefault y if BR2_sparc\n\tdefault y if BR2_x86_64\n\tdefault y if BR2_xtensa\n\nconfig BR2_PACKAGE_LTRACE\n\tbool \"ltrace\"\n\tdepends on BR2_USE_WCHAR # elfutils\n\tdepends on !BR2_STATIC_LIBS # elfutils\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # elfutils\n\tdepends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils\n\tdepends on BR2_PACKAGE_LTRACE_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_ELFUTILS\n\thelp\n\t  Debugging program which runs a specified command until it\n\t  exits. While the command is executing, ltrace intercepts and\n\t  records the dynamic library calls which are called by the\n\t  executed process and the signals received by that process.\n\n\t  http://ltrace.org\n\ncomment \"ltrace needs a uClibc or glibc toolchain w/ wchar, dynamic library, threads\"\n\tdepends on BR2_PACKAGE_LTRACE_ARCH_SUPPORTS\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)\n"
  },
  {
    "path": "package/ltrace/ltrace.hash",
    "content": "# Locally computed\nsha256  4aecf69e4a33331aed1e50ce4907e73a98cbccc4835febc3473863474304d547  ltrace-82c66409c7a93ca6ad2e4563ef030dfb7e6df4d4.tar.gz\nsha256  e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING\n"
  },
  {
    "path": "package/ltrace/ltrace.mk",
    "content": "################################################################################\n#\n# ltrace\n#\n################################################################################\n\n# This github version has some extra fixes on top of https://ltrace.org/\n# in particular the following commit to avoid a crash:\n#   192e0a6 void struct members are now ignored\nLTRACE_VERSION = 82c66409c7a93ca6ad2e4563ef030dfb7e6df4d4\nLTRACE_SITE = $(call github,dkogan,ltrace,$(LTRACE_VERSION))\nLTRACE_DEPENDENCIES = elfutils\nLTRACE_CONF_OPTS = --disable-werror\nLTRACE_LICENSE = GPL-2.0\nLTRACE_LICENSE_FILES = COPYING\nLTRACE_AUTORECONF = YES\n\n# ltrace can use libunwind only if libc has backtrace() support\n# We don't normally do so for uClibc and we can't know if it's external\n# Also ltrace with libunwind support is broken for MIPS so we disable it\nifeq ($(BR2_PACKAGE_LIBUNWIND),y)\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC)$(BR2_mips)$(BR2_mipsel),)\n# --with-elfutils only selects unwinding support backend. elfutils is a\n# mandatory dependency regardless.\nLTRACE_CONF_OPTS += --with-libunwind=yes --with-elfutils=no\nLTRACE_DEPENDENCIES += libunwind\nelse\nLTRACE_CONF_OPTS += --with-libunwind=no\nendif\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ltris/0001-fix-build-with-gcc-4.8.patch",
    "content": "Fix build with gcc 4.8\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://sourceforge.net/p/lgames/patches/28]\nIndex: ltris/src/bowl.c\n===================================================================\n--- ltris/src/bowl.c\t(révision 421)\n+++ ltris/src/bowl.c\t(copie de travail)\n@@ -828,9 +828,10 @@\n */\n void bowl_init_block_masks() \n {\n+\tint i;\n \tint masksize = sizeof(block_masks[0].mask); // same for all\n \n-\tfor (int i = 0; i < 7; i++) {\n+\tfor (i = 0; i < 7; i++) {\n \t\tblock_masks[i].rx = 2;\n \t\tblock_masks[i].ry = 2;\n \t\tmemset(block_masks[i].mask, 0, masksize );\n"
  },
  {
    "path": "package/ltris/Config.in",
    "content": "config BR2_PACKAGE_LTRIS\n\tbool \"LTris\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_SDL\n\thelp\n\t  LTris is a tetris clone, using SDL. It optionally requires\n\t  SDL_mixer for audio support. A display with minimum 640x480\n\t  resolution and a keyboard are recommended.\n\n\t  http://lgames.sourceforge.net/index.php?project=LTris\n\nif BR2_PACKAGE_LTRIS\n\nconfig BR2_PACKAGE_LTRIS_AUDIO\n\tbool \"audio support\"\n\tdefault y\n\tselect BR2_PACKAGE_SDL_MIXER\n\thelp\n\t  Activates audio support in LTris. Will add SDL_mixer.\n\nendif\n"
  },
  {
    "path": "package/ltris/ltris.hash",
    "content": "# Locally computed:\nsha256  a7bc6c5fc6539b88505077a1b4580edc9b179ce0a6b829c58fbd9416cf456195  ltris-1.2.tar.gz\nsha256  67f82e045cf7acfef853ea0f426575a8359161a0a325e19f02b529a87c4b6c34  COPYING\n"
  },
  {
    "path": "package/ltris/ltris.mk",
    "content": "################################################################################\n#\n# ltris\n#\n################################################################################\n\nLTRIS_SITE = http://downloads.sourceforge.net/lgames/ltris\nLTRIS_VERSION = 1.2\nLTRIS_LICENSE = GPL-2.0+\nLTRIS_LICENSE_FILES = COPYING\n\nLTRIS_DEPENDENCIES = sdl $(TARGET_NLS_DEPENDENCIES)\nLTRIS_LIBS = $(TARGET_NLS_LIBS)\n\nLTRIS_CONF_ENV = \\\n\tSDL_CONFIG=\"$(STAGING_DIR)/usr/bin/sdl-config\" \\\n\tLIBS=\"$(LTRIS_LIBS)\"\n\nifeq ($(BR2_PACKAGE_LTRIS_AUDIO),y)\nLTRIS_DEPENDENCIES += sdl_mixer host-pkgconf\nLTRIS_CONF_OPTS += --enable-sound\n# configure script does NOT use pkg-config to figure out how to link\n# with sdl_mixer, breaking static linking as sdl_mixer can use libmad\nLTRIS_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs SDL_mixer`\nelse\nLTRIS_CONF_OPTS += --disable-sound\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lttng-babeltrace/0001-tests-lib-Makefile.am-remove-unneeded-static-flag.patch",
    "content": "From 27e37d2621317d25e08ba0683bf8540b05b9347d Mon Sep 17 00:00:00 2001\nFrom: Philippe Proulx <eeppeliteloop@gmail.com>\nDate: Fri, 28 Oct 2016 02:09:20 -0400\nSubject: [PATCH] tests/lib/Makefile.am: remove unneeded -static flag\n\nHaving those -static flags breaks the build in shared-only builds.\n\nSigned-off-by: Philippe Proulx <eeppeliteloop@gmail.com>\n[Philippe: grabbed from this pull request:\n    https://github.com/efficios/babeltrace/pull/49\n]\n---\n tests/lib/Makefile.am | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/tests/lib/Makefile.am b/tests/lib/Makefile.am\nindex 33ada16..c685e77 100644\n--- a/tests/lib/Makefile.am\n+++ b/tests/lib/Makefile.am\n@@ -31,13 +31,11 @@ check_SCRIPTS = test_seek_big_trace \\\n \t\ttest_ctf_writer_complete\n \n if ENABLE_DEBUG_INFO\n-test_dwarf_LDFLAGS = -static\n test_dwarf_LDADD = $(LIBTAP) \\\n \t$(top_builddir)/lib/libbabeltrace.la \\\n \t$(top_builddir)/lib/libdebug-info.la\n test_dwarf_SOURCES = test_dwarf.c\n \n-test_bin_info_LDFLAGS = -static\n test_bin_info_LDADD = $(LIBTAP) \\\n \t$(top_builddir)/lib/libbabeltrace.la \\\n \t$(top_builddir)/lib/libdebug-info.la\n-- \n2.9.3\n\n"
  },
  {
    "path": "package/lttng-babeltrace/Config.in",
    "content": "config BR2_PACKAGE_LTTNG_BABELTRACE\n\tbool \"lttng-babeltrace\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_POPT\n\thelp\n\t  The Babeltrace project provides trace read and write\n\t  libraries, as well as a trace converter application. Plugins\n\t  can be created for any trace format to allow its conversion\n\t  to/from another trace format.\n\n\t  Babeltrace is the reference implementation of the Common\n\t  Trace Format (see <http://diamon.org/ctf/>). Babeltrace\n\t  can decode and display LTTng traces, since the latter are\n\t  written using the CTF format.\n\n\t  To get support for debugging information, enable the\n\t  elfutils package.\n\n\t  Having this tool on the target is not mandatory. You can\n\t  transfer the binary trace output from the target to your\n\t  development workstation, and use babeltrace here.\n\n\t  See the lttng-babeltrace host utility to install Babeltrace\n\t  on the host.\n\n\t  http://diamon.org/babeltrace\n\ncomment \"lttng-babeltrace needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/lttng-babeltrace/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_LTTNG_BABELTRACE\n\tbool \"host lttng-babeltrace\"\n\thelp\n\t  The Babeltrace project provides trace read and write\n\t  libraries, as well as a trace converter application. Plugins\n\t  can be created for any trace format to allow its conversion\n\t  to/from another trace format.\n\n\t  Babeltrace is the reference implementation of the Common\n\t  Trace Format (see <http://diamon.org/ctf/>). Babeltrace\n\t  can decode and display LTTng traces, since the latter are\n\t  written using the CTF format.\n\n\t  http://diamon.org/babeltrace\n"
  },
  {
    "path": "package/lttng-babeltrace/lttng-babeltrace.hash",
    "content": "# From http://www.efficios.com/files/babeltrace/babeltrace-1.5.7.tar.bz2.sha256\nsha256 215331e025ffd39c665a34231b9429180e48aca78f79fb972d0bf1322d2b807b  babeltrace-1.5.7.tar.bz2\n\n# Hash for license files\nsha256 2f801b7c2494850c3d91da820eb230502dc0192c9d0db024db37ec08d0be1434  mit-license.txt\nsha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  gpl-2.0.txt\nsha256 12d4222ac628fe4092cba8ed90bc5227a4dedd0b94973273cecbc393325bf1c2  LICENSE\n"
  },
  {
    "path": "package/lttng-babeltrace/lttng-babeltrace.mk",
    "content": "################################################################################\n#\n# lttng-babeltrace\n#\n################################################################################\n\nLTTNG_BABELTRACE_SITE = http://www.efficios.com/files/babeltrace\nLTTNG_BABELTRACE_VERSION = 1.5.7\nLTTNG_BABELTRACE_SOURCE = babeltrace-$(LTTNG_BABELTRACE_VERSION).tar.bz2\nLTTNG_BABELTRACE_LICENSE = MIT, LGPL-2.1 (include/babeltrace/list.h), GPL-2.0 (test code)\nLTTNG_BABELTRACE_LICENSE_FILES = mit-license.txt gpl-2.0.txt LICENSE\nLTTNG_BABELTRACE_DEPENDENCIES = popt util-linux libglib2 host-pkgconf\n# The host-elfutils dependency is optional, but since we don't have\n# options for host packages, just build support for it\n# unconditionally.\nHOST_LTTNG_BABELTRACE_DEPENDENCIES = \\\n\thost-popt host-util-linux host-libglib2 host-pkgconf host-elfutils\nHOST_LTTNG_BABELTRACE_CONF_OPTS += --enable-debug-info\n\n# We're patching tests/lib/Makefile.am\nLTTNG_BABELTRACE_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_ELFUTILS),y)\nLTTNG_BABELTRACE_DEPENDENCIES += elfutils\nLTTNG_BABELTRACE_CONF_OPTS += --enable-debug-info\nLTTNG_BABELTRACE_CONF_ENV += bt_cv_lib_elfutils=yes\nelse\nLTTNG_BABELTRACE_CONF_OPTS += --disable-debug-info\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/lttng-libust/Config.in",
    "content": "config BR2_PACKAGE_LTTNG_LIBUST\n\tbool \"lttng-libust\"\n\tdepends on BR2_USE_WCHAR # uses wchar_t\n\t# liburcu only works on some architectures and requires threads support\"\n\tdepends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBURCU\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Userspace tracing library for the LTTng 2.x tracing\n\t  infrastructure. It allows userspace programs to create\n\t  custom trace events that are integrated with all other\n\t  events gathered by LTTng.\n\n\t  http://lttng.org\n\ncomment \"lttng-libust needs a toolchain w/ dynamic library, wchar, threads\"\n\tdepends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS\n\tdepends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/lttng-libust/lttng-libust.hash",
    "content": "# From https://lttng.org/files/lttng-ust/lttng-ust-2.12.1.tar.bz2.sha256\nsha256  48a3948b168195123a749d22818809bd25127bb5f1a66458c3c012b210d2a051  lttng-ust-2.12.1.tar.bz2\n\n# Hash for license file\nsha256  74125a84c2166300776980166e29de40d5f98d1a75e487f0bbc0c03b4cd2342e  COPYING\n"
  },
  {
    "path": "package/lttng-libust/lttng-libust.mk",
    "content": "################################################################################\n#\n# lttng-libust\n#\n################################################################################\n\nLTTNG_LIBUST_SITE = http://lttng.org/files/lttng-ust\nLTTNG_LIBUST_VERSION = 2.12.1\nLTTNG_LIBUST_SOURCE = lttng-ust-$(LTTNG_LIBUST_VERSION).tar.bz2\nLTTNG_LIBUST_LICENSE = LGPL-2.1, MIT (system headers), GPL-2.0 (liblttng-ust-ctl/ustctl.c used by lttng-sessiond)\nLTTNG_LIBUST_LICENSE_FILES = COPYING\nLTTNG_LIBUST_INSTALL_STAGING = YES\nLTTNG_LIBUST_DEPENDENCIES = liburcu util-linux\nLTTNG_LIBUST_CONF_OPTS = \\\n\t--disable-man-pages \\\n\t--disable-examples \\\n\t--with-lttng-system-rundir=/run/lttng\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\nLTTNG_LIBUST_DEPENDENCIES += python\nLTTNG_LIBUST_CONF_OPTS += --enable-python-agent\nelse ifeq ($(BR2_PACKAGE_PYTHON3),y)\nLTTNG_LIBUST_DEPENDENCIES += python3\nLTTNG_LIBUST_CONF_OPTS += --enable-python-agent\nelse\nLTTNG_LIBUST_CONF_ENV = am_cv_pathless_PYTHON=\"none\"\nLTTNG_LIBUST_CONF_OPTS += --disable-python-agent\nendif\n\nifeq ($(BR2_PACKAGE_NUMACTL),y)\nLTTNG_LIBUST_DEPENDENCIES += numactl\nLTTNG_LIBUST_CONF_OPTS += --enable-numa\nelse\nLTTNG_LIBUST_CONF_OPTS += --disable-numa\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lttng-modules/Config.in",
    "content": "config BR2_PACKAGE_LTTNG_MODULES\n\tbool \"lttng-modules\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  Linux kernel modules for the LTTng 2.x kernel tracing\n\t  infrastructure.\n\n\t  Make sure your target kernel has the following config\n\t  options enabled:\n\n\t    * CONFIG_MODULES: loadable module support\n\t    * CONFIG_KALLSYMS: this is necessary until the few\n\t      required missing symbols are exported to GPL\n\t      modules from mainline\n\t    * CONFIG_HIGH_RES_TIMERS: needed for LTTng 2.x\n\t      clock source\n\t    * CONFIG_TRACEPOINTS: kernel tracepoint instrumentation\n\t      (enabled as a side-effect of any of the\n\t      perf/ftrace/blktrace instrumentation features)\n\n\t  The following kernel configuration options will\n\t  affect the features available from LTTng:\n\n\t    * CONFIG_HAVE_SYSCALL_TRACEPOINTS: system call tracing\n\t    * CONFIG_PERF_EVENTS: performance counters\n\t    * CONFIG_EVENT_TRACING: needed to allow block layer tracing\n\t    * CONFIG_KPROBES: dynamic probes\n\t    * CONFIG_KRETPROBES: dynamic function entry/return probes\n\t    * CONFIG_KALLSYMS_ALL: state dump of mapping between block\n\t      device number and name\n\n\t  The packaged version is compatible with Linux 2.6.38 to 3.16.\n\n\t  http://lttng.org\n\ncomment \"lttng-modules needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/lttng-modules/lttng-modules.hash",
    "content": "# From https://lttng.org/files/lttng-modules/lttng-modules-2.11.0.tar.bz2.sha256\nsha256 98af92d8c2e00f4eb63bc637a6967103cf6997434493f36e7a535a491e4fad5f  lttng-modules-2.11.0.tar.bz2\n\n# Hash for license files\nsha256 36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89  lgpl-2.1.txt\nsha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  gpl-2.0.txt\nsha256 2f801b7c2494850c3d91da820eb230502dc0192c9d0db024db37ec08d0be1434  mit-license.txt\nsha256 6334b377a5bd56b56a1e8a495830f2d28ed1b5cbedc7493aec9fba979efcdfe1  LICENSE\n"
  },
  {
    "path": "package/lttng-modules/lttng-modules.mk",
    "content": "################################################################################\n#\n# lttng-modules\n#\n################################################################################\n\nLTTNG_MODULES_VERSION = 2.11.0\nLTTNG_MODULES_SITE = http://lttng.org/files/lttng-modules\nLTTNG_MODULES_SOURCE = lttng-modules-$(LTTNG_MODULES_VERSION).tar.bz2\nLTTNG_MODULES_LICENSE = LGPL-2.1/GPL-2.0 (kernel modules), MIT (lib/bitfield.h, lib/prio_heap/*)\nLTTNG_MODULES_LICENSE_FILES = lgpl-2.1.txt gpl-2.0.txt mit-license.txt LICENSE\nLTTNG_MODULES_MODULE_MAKE_OPTS = CONFIG_LTTNG=m CONFIG_LTTNG_CLOCK_PLUGIN_TEST=m\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lttng-tools/0001-configure.ac-add-disable-tests.patch",
    "content": "From 8c3a5d0921090e2fc3c4e2561509d23eb9ffa6dd Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 2 Apr 2021 21:07:07 +0200\nSubject: [PATCH] configure.ac: add --disable-tests\n\nAllow the user to explicitly disable tests\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/lttng/lttng-tools/pull/162]\n---\n configure.ac | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 04f9cef4..372cdf3d 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -862,6 +862,8 @@ AC_ARG_ENABLE([bin-lttng-sessiond], AS_HELP_STRING([--disable-bin-lttng-sessiond\n \t      [Disable the build of lttng-sessiond binaries]))\n AC_ARG_ENABLE([extras], AS_HELP_STRING([--disable-extras],\n \t      [Disable the build of the extra components]))\n+AC_ARG_ENABLE([tests], AS_HELP_STRING([--disable-tests],\n+\t      [Disable the build of the test components]))\n \n \n # Always build libconfig since it a dependency of libcommon\n@@ -1027,6 +1029,7 @@ AM_CONDITIONAL([BUILD_BIN_LTTNG_SESSIOND], [test x$enable_bin_lttng_sessiond !=\n \n # Export the tests and extras build conditions.\n AS_IF([\\\n+test \"x$enable_tests\" != \"xno\" && \\\n test \"x$enable_bin_lttng\" != \"xno\" && \\\n test \"x$enable_bin_lttng_consumerd\" != \"xno\" && \\\n test \"x$enable_bin_lttng_crash\" != \"xno\" && \\\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/lttng-tools/Config.in",
    "content": "config BR2_PACKAGE_LTTNG_TOOLS\n\tbool \"lttng-tools\"\n\t# liburcu only works on some architectures and requires thread support\n\tdepends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS # uses dlfcn\n\tselect BR2_PACKAGE_LIBURCU\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_POPT\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Userspace utilities for the LTTng 2.x tracing\n\t  infrastructure.\n\n\t  Those utilities are required on the target system to start\n\t  and stop tracing sessions. Analysis of the trace can be done\n\t  on the host machine using the babeltrace utility. This\n\t  utility is automatically built by Buildroot in\n\t  $(O)/host/bin/babeltrace, as a dependency of\n\t  lttng-tools. However, there is also a lttng-babeltrace\n\t  package for the target, if babeltrace on the target is\n\t  interesting.\n\n\t  If userspace tracing is desired, you need to enable\n\t  lttng-libust.\n\n\t  http://lttng.org\n\ncomment \"lttng-tools needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/lttng-tools/lttng-tools.hash",
    "content": "# From https://lttng.org/files/lttng-tools/lttng-tools-2.12.3.tar.bz2.sha256\nsha256  2890da230edd523fcf497e9eb28133b7606d64fa01bcbffadbfcba42104db153  lttng-tools-2.12.3.tar.bz2\n\n# Locally computed\nsha256  068e55c7dbe597400199aee75ac5e71bdb2ca88c4c9a4cfa8e1fbc61f933eda5  LICENSE\nsha256  6313108c23efffa36948f8b2cff1560a5935373b527b0e1a837cc77e6ed1bacd  LICENSES/BSD-2-Clause\nsha256  7a83b1aeb460458db9a4bd521d7f237c45b1650f6e60ea5ffc71e49472454de3  LICENSES/BSD-3-Clause\nsha256  6841c85b94f9dab319356e3aaf9e969fcedad51d3aaadf665bf86f34f4186b62  LICENSES/GPL-2.0\nsha256  d72921266bc8452a8789f8a04a82755373990d00b7e0b0f1a8edb8f854e94d1c  LICENSES/LGPL-2.1\nsha256  323c587d0ccf10e376f8bf9a7f31fb4ca6078105194b42e0b1e0ee2bc9bde71f  LICENSES/MIT\n"
  },
  {
    "path": "package/lttng-tools/lttng-tools.mk",
    "content": "################################################################################\n#\n# lttng-tools\n#\n################################################################################\n\nLTTNG_TOOLS_VERSION = 2.12.3\nLTTNG_TOOLS_SITE = https://lttng.org/files/lttng-tools\nLTTNG_TOOLS_SOURCE = lttng-tools-$(LTTNG_TOOLS_VERSION).tar.bz2\nLTTNG_TOOLS_INSTALL_STAGING = YES\nLTTNG_TOOLS_LICENSE = GPL-2.0, LGPL-2.1 (include/lttng/*, src/lib/lttng-ctl/*)\nLTTNG_TOOLS_LICENSE_FILES = LICENSE $(addprefix LICENSES/,BSD-2-Clause BSD-3-Clause GPL-2.0 LGPL-2.1 MIT)\nLTTNG_TOOLS_DEPENDENCIES = liburcu libxml2 popt util-linux\n# We're patching configure.ac\nLTTNG_TOOLS_AUTORECONF = YES\nLTTNG_TOOLS_CONF_OPTS = \\\n\t--disable-man-pages \\\n\t--disable-tests \\\n\t--with-lttng-system-rundir=/run/lttng\n\nifeq ($(BR2_PACKAGE_LTTNG_LIBUST),y)\nLTTNG_TOOLS_CONF_OPTS += --with-lttng-ust\nLTTNG_TOOLS_DEPENDENCIES += lttng-libust\nelse\nLTTNG_TOOLS_CONF_OPTS += --without-lttng-ust\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lua/5.1.5/0001-root-path.patch",
    "content": "Adjust installation location to /usr.\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/etc/lua.pc\n===================================================================\n--- a/etc/lua.pc\n+++ b/etc/lua.pc\n@@ -8,7 +8,7 @@\n R= 5.1.5\n \n # grep '^INSTALL_.*=' ../Makefile | sed 's/INSTALL_TOP/prefix/'\n-prefix= /usr/local\n+prefix= /usr\n INSTALL_BIN= ${prefix}/bin\n INSTALL_INC= ${prefix}/include\n INSTALL_LIB= ${prefix}/lib\nIndex: b/src/luaconf.h\n===================================================================\n--- a/src/luaconf.h\n+++ b/src/luaconf.h\n@@ -94,7 +94,7 @@\n \t\".\\\\?.dll;\"  LUA_CDIR\"?.dll;\" LUA_CDIR\"loadall.dll\"\n \n #else\n-#define LUA_ROOT\t\"/usr/local/\"\n+#define LUA_ROOT\t\"/usr/\"\n #define LUA_LDIR\tLUA_ROOT \"share/lua/5.1/\"\n #define LUA_CDIR\tLUA_ROOT \"lib/lua/5.1/\"\n #define LUA_PATH_DEFAULT  \\\n"
  },
  {
    "path": "package/lua/5.1.5/0002-shared-libs-for-lua.patch",
    "content": "Add the compilation of a shared library.\nCompile the lua binary with the shared library.\nAnd install the shared library.\nThe variable BUILDMODE allows to switch between static and dynamic mode.\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/Makefile\n===================================================================\n--- a/Makefile\n+++ b/Makefile\n@@ -44,6 +44,7 @@\n TO_BIN= lua luac\n TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp\n TO_LIB= liblua.a\n+TO_SOLIB = liblua.so.$(R)\n TO_MAN= lua.1 luac.1\n \n # Lua version and release.\n@@ -61,6 +62,8 @@\n install: dummy\n \tcd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)\n \tcd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN)\n+\ttest -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || :\n+\ttest -f src/$(TO_SOLIB) && ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so || :\n \tcd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)\n \tcd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)\n \tcd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN)\nIndex: b/src/Makefile\n===================================================================\n--- a/src/Makefile\n+++ b/src/Makefile\n@@ -23,6 +23,7 @@\n PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris\n \n LUA_A=\tliblua.a\n+LUA_SO=\tliblua.so\n CORE_O=\tlapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \\\n \tlobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o  \\\n \tlundump.o lvm.o lzio.o\n@@ -36,8 +37,13 @@\n LUAC_O=\tluac.o print.o\n \n ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O)\n+ifneq (dynamic,$(BUILDMODE))\n ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)\n+else\n+ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T)\n+endif\n ALL_A= $(LUA_A)\n+ALL_SO= $(LUA_SO)\n \n default: $(PLAT)\n \n@@ -47,12 +53,23 @@\n \n a:\t$(ALL_A)\n \n+so:\t$(ALL_SO)\n+\n $(LUA_A): $(CORE_O) $(LIB_O)\n \t$(AR) $@ $(CORE_O) $(LIB_O)\t# DLL needs all object files\n \t$(RANLIB) $@\n \n+$(LUA_SO): $(CORE_O) $(LIB_O)\n+\t$(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname=\"$@.$(PKG_VERSION)\" $?\n+\tln -fs $@.$(PKG_VERSION) $@\n+\n+ifneq (dynamic,$(BUILDMODE))\n $(LUA_T): $(LUA_O) $(LUA_A)\n \t$(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)\n+else\n+$(LUA_T): $(LUA_O) $(LUA_SO)\n+\t$(CC) -o $@ -L. $(MYLDFLAGS) $(LUA_O) -llua $(LIBS)\n+endif\n \n $(LUAC_T): $(LUAC_O) $(LUA_A)\n \t$(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)\n"
  },
  {
    "path": "package/lua/5.1.5/0011-linenoise.patch",
    "content": "Add support of linenoise (replace readline)\n\nsee discussion, http://lua-users.org/lists/lua-l/2010-03/msg00879.html\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/src/luaconf.h\n===================================================================\n--- a/src/luaconf.h\n+++ b/src/luaconf.h\n@@ -279,6 +279,13 @@\n \tif (lua_strlen(L,idx) > 0)  /* non-empty line? */ \\\n \t  add_history(lua_tostring(L, idx));  /* add it to history */\n #define lua_freeline(L,b)\t((void)L, free(b))\n+#elif defined(LUA_USE_LINENOISE)\n+#include <linenoise.h>\n+#define lua_readline(L,b,p)\t((void)L, ((b)=linenoise(p)) != NULL)\n+#define lua_saveline(L,idx) \\\n+\tif (lua_strlen(L,idx) > 0)  /* non-empty line? */ \\\n+\t  linenoiseHistoryAdd(lua_tostring(L, idx));  /* add it to history */\n+#define lua_freeline(L,b)\t((void)L, free(b))\n #else\n #define lua_readline(L,b,p)\t\\\n \t((void)L, fputs(p, stdout), fflush(stdout),  /* show prompt */ \\\n"
  },
  {
    "path": "package/lua/5.1.5/0012-fix-reader-at-eoz.patch",
    "content": "When loading a file, Lua may call the reader function again after it returned end of input.\n\nFetch from: http://www.lua.org/bugs.html#5.1.5-2\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/src/lzio.c\n===================================================================\n--- a/src/lzio.c\n+++ b/src/lzio.c\n@@ -22,10 +22,14 @@\n   size_t size;\n   lua_State *L = z->L;\n   const char *buff;\n+  if (z->eoz) return EOZ;\n   lua_unlock(L);\n   buff = z->reader(L, z->data, &size);\n   lua_lock(L);\n-  if (buff == NULL || size == 0) return EOZ;\n+  if (buff == NULL || size == 0) {\n+    z->eoz = 1;  /* avoid calling reader function next time */\n+    return EOZ;\n+  }\n   z->n = size - 1;\n   z->p = buff;\n   return char2int(*(z->p++));\n@@ -51,6 +55,7 @@\n   z->data = data;\n   z->n = 0;\n   z->p = NULL;\n+  z->eoz = 0;\n }\n \n \nIndex: b/src/lzio.h\n===================================================================\n--- a/src/lzio.h\n+++ b/src/lzio.h\n@@ -59,6 +59,7 @@\n   lua_Reader reader;\n   void* data;\t\t\t/* additional data */\n   lua_State *L;\t\t\t/* Lua state (for reader) */\n+  int eoz;\t\t\t/* true if reader has no more data */\n };\n \n \n"
  },
  {
    "path": "package/lua/5.1.5/lua.hash",
    "content": "# Hashes from: http://www.lua.org/ftp/\nmd5  2e115fe26e435e33b0d5c022e4490567  lua-5.1.5.tar.gz\nsha1  b3882111ad02ecc6b972f8c1241647905cb2e3fc  lua-5.1.5.tar.gz\n\n# Locally computed\nsha256  ee5e3e82af1e1b543c4f216e399d7c8cfee797711913f349e385101c4ae60a79  COPYRIGHT\n"
  },
  {
    "path": "package/lua/5.3.6/0001-root-path.patch",
    "content": "Adjust installation location to /usr.\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/src/luaconf.h\n===================================================================\n--- a/src/luaconf.h\n+++ b/src/luaconf.h\n@@ -200,7 +200,7 @@\n\n #else\t\t\t/* }{ */\n\n-#define LUA_ROOT\t\"/usr/local/\"\n+#define LUA_ROOT\t\"/usr/\"\n #define LUA_LDIR\tLUA_ROOT \"share/lua/\" LUA_VDIR \"/\"\n #define LUA_CDIR\tLUA_ROOT \"lib/lua/\" LUA_VDIR \"/\"\n #define LUA_PATH_DEFAULT  \\\n"
  },
  {
    "path": "package/lua/5.3.6/0002-shared-libs-for-lua.patch",
    "content": "Add the compilation of a shared library.\nCompile the lua binary with the shared library.\nAnd install the shared library.\nThe variable BUILDMODE allows to switch between static and dynamic mode.\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/Makefile\n===================================================================\n--- a/Makefile\n+++ b/Makefile\n@@ -42,6 +42,7 @@\n TO_BIN= lua luac\n TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp\n TO_LIB= liblua.a\n+TO_SOLIB = liblua.so.$(R)\n TO_MAN= lua.1 luac.1\n \n # Lua version and release.\n@@ -60,6 +61,8 @@\n install: dummy\n \tcd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)\n \tcd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN)\n+\ttest -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || :\n+\ttest -f src/$(TO_SOLIB) && ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so || :\n \tcd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)\n \tcd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)\n \tcd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN)\nIndex: b/src/Makefile\n===================================================================\n--- a/src/Makefile\n+++ b/src/Makefile\n@@ -29,6 +29,7 @@\n PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris\n \n LUA_A=\tliblua.a\n+LUA_SO=\tliblua.so\n CORE_O=\tlapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o \\\n \tlmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o \\\n \tltm.o lundump.o lvm.o lzio.o\n@@ -43,8 +44,13 @@\n LUAC_O=\tluac.o\n \n ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)\n+ifneq (dynamic,$(BUILDMODE))\n ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)\n+else\n+ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T)\n+endif\n ALL_A= $(LUA_A)\n+ALL_SO= $(LUA_SO)\n \n # Targets start here.\n default: $(PLAT)\n@@ -55,12 +61,23 @@\n \n a:\t$(ALL_A)\n \n+so:\t$(ALL_SO)\n+\n $(LUA_A): $(BASE_O)\n \t$(AR) $@ $(BASE_O)\n \t$(RANLIB) $@\n \n+$(LUA_SO): $(CORE_O) $(LIB_O)\n+\t$(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname=\"$@.$(PKG_VERSION)\" $?\n+\tln -fs $@.$(PKG_VERSION) $@\n+\n+ifneq (dynamic,$(BUILDMODE))\n $(LUA_T): $(LUA_O) $(LUA_A)\n \t$(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)\n+else\n+$(LUA_T): $(LUA_O) $(LUA_SO)\n+\t$(CC) -o $@ -L. $(LDFLAGS) $(LUA_O) -llua $(LIBS)\n+endif\n \n $(LUAC_T): $(LUAC_O) $(LUA_A)\n \t$(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)\n"
  },
  {
    "path": "package/lua/5.3.6/0003-linenoise.patch",
    "content": "Add support of linenoise (replace readline)\n\nsee discussion, http://lua-users.org/lists/lua-l/2010-03/msg00879.html\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/src/lua.c\n===================================================================\n--- a/src/lua.c\n+++ b/src/lua.c\n@@ -85,6 +85,13 @@\n #define lua_saveline(L,line)\t((void)L, add_history(line))\n #define lua_freeline(L,b)\t((void)L, free(b))\n \n+#elif defined(LUA_USE_LINENOISE)\n+\n+#include <linenoise.h>\n+#define lua_readline(L,b,p)\t((void)L, ((b)=linenoise(p)) != NULL)\n+#define lua_saveline(L,line)\t((void)L, linenoiseHistoryAdd(line))\n+#define lua_freeline(L,b)\t((void)L, free(b))\n+\n #else\t\t\t\t/* }{ */\n \n #define lua_readline(L,b,p) \\\n"
  },
  {
    "path": "package/lua/5.3.6/lua.hash",
    "content": "# Hashes from: http://www.lua.org/ftp/\nmd5  83f23dbd5230140a3770d5f54076948d  lua-5.3.6.tar.gz\nsha1  f27d20d6c81292149bc4308525a9d6733c224fa5  lua-5.3.6.tar.gz\n\n# Locally computed\nsha256  2ddff2161e0c4487d744943565538743c0721485873092f6809d072a983b06ef  doc/readme.html\n"
  },
  {
    "path": "package/lua/5.4.3/0001-root-path.patch",
    "content": "Adjust installation location to /usr.\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/src/luaconf.h\n===================================================================\n--- a/src/luaconf.h\n+++ b/src/luaconf.h\n@@ -217,7 +217,7 @@\n \n #else\t\t\t/* }{ */\n \n-#define LUA_ROOT\t\"/usr/local/\"\n+#define LUA_ROOT\t\"/usr/\"\n #define LUA_LDIR\tLUA_ROOT \"share/lua/\" LUA_VDIR \"/\"\n #define LUA_CDIR\tLUA_ROOT \"lib/lua/\" LUA_VDIR \"/\"\n \n"
  },
  {
    "path": "package/lua/5.4.3/0002-shared-libs-for-lua.patch",
    "content": "Add the compilation of a shared library.\nCompile the lua binary with the shared library.\nAnd install the shared library.\nThe variable BUILDMODE allows to switch between static and dynamic mode.\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/Makefile\n===================================================================\n--- a/Makefile\n+++ b/Makefile\n@@ -42,6 +42,7 @@\n TO_BIN= lua luac\n TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp\n TO_LIB= liblua.a\n+TO_SOLIB = liblua.so.$(R)\n TO_MAN= lua.1 luac.1\n \n # Lua version and release.\n@@ -57,6 +58,8 @@\n install: dummy\n \tcd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)\n \tcd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN)\n+\ttest -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || :\n+\ttest -f src/$(TO_SOLIB) && ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so || :\n \tcd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)\n \tcd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)\n \tcd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN)\nIndex: b/src/Makefile\n===================================================================\n--- a/src/Makefile\n+++ b/src/Makefile\n@@ -33,6 +33,7 @@\n PLATS= guess aix bsd c89 freebsd generic linux linux-readline macosx mingw posix solaris\n \n LUA_A=\tliblua.a\n+LUA_SO=\tliblua.so\n CORE_O=\tlapi.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\n LIB_O=\tlauxlib.o lbaselib.o lcorolib.o ldblib.o liolib.o lmathlib.o loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o linit.o\n BASE_O= $(CORE_O) $(LIB_O) $(MYOBJS)\n@@ -44,8 +45,13 @@\n LUAC_O=\tluac.o\n \n ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)\n+ifneq (dynamic,$(BUILDMODE))\n ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)\n+else\n+ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T)\n+endif\n ALL_A= $(LUA_A)\n+ALL_SO= $(LUA_SO)\n \n # Targets start here.\n default: $(PLAT)\n@@ -56,12 +62,23 @@\n \n a:\t$(ALL_A)\n \n+so:\t$(ALL_SO)\n+\n $(LUA_A): $(BASE_O)\n \t$(AR) $@ $(BASE_O)\n \t$(RANLIB) $@\n \n+$(LUA_SO): $(CORE_O) $(LIB_O)\n+\t$(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname=\"$@.$(PKG_VERSION)\" $?\n+\tln -fs $@.$(PKG_VERSION) $@\n+\n+ifneq (dynamic,$(BUILDMODE))\n $(LUA_T): $(LUA_O) $(LUA_A)\n \t$(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)\n+else\n+$(LUA_T): $(LUA_O) $(LUA_SO)\n+\t$(CC) -o $@ -L. $(LDFLAGS) $(LUA_O) -llua $(LIBS)\n+endif\n \n $(LUAC_T): $(LUAC_O) $(LUA_A)\n \t$(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)\n"
  },
  {
    "path": "package/lua/5.4.3/0011-linenoise.patch",
    "content": "Add support of linenoise (replace readline)\n\nsee discussion, http://lua-users.org/lists/lua-l/2010-03/msg00879.html\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/src/lua.c\n===================================================================\n--- a/src/lua.c\n+++ b/src/lua.c\n@@ -421,6 +421,14 @@\n #define lua_saveline(L,line)\t((void)L, add_history(line))\n #define lua_freeline(L,b)\t((void)L, free(b))\n \n+#elif defined(LUA_USE_LINENOISE)\n+\n+#include <linenoise.h>\n+#define lua_initreadline(L)\t((void)L)\n+#define lua_readline(L,b,p)\t((void)L, ((b)=linenoise(p)) != NULL)\n+#define lua_saveline(L,line)\t((void)L, linenoiseHistoryAdd(line))\n+#define lua_freeline(L,b)\t((void)L, free(b))\n+\n #else\t\t\t\t/* }{ */\n \n #define lua_initreadline(L)  ((void)L)\n"
  },
  {
    "path": "package/lua/5.4.3/lua.hash",
    "content": "# Hashes from: https://www.lua.org/ftp/\nmd5  ef63ed2ecfb713646a7fcc583cf5f352  lua-5.4.3.tar.gz\nsha1  1dda2ef23a9828492b4595c0197766de6e784bc7  lua-5.4.3.tar.gz\n\n# Locally computed\nsha256  d205bfea131113bcdd64d4ebe4a50ce34063b42bad24b93e44b4b0d853ae4d49  doc/readme.html\n"
  },
  {
    "path": "package/lua/Config.in",
    "content": "config BR2_PACKAGE_LUA\n\tbool \"lua\"\n\tselect BR2_PACKAGE_HAS_LUAINTERPRETER\n\thelp\n\t  Lua is a powerful, fast, light-weight, embeddable scripting\n\t  language.\n\n\t  http://www.lua.org/\n\nif BR2_PACKAGE_LUA\n\nconfig BR2_PACKAGE_PROVIDES_LUAINTERPRETER\n\tdefault \"lua\"\n\nchoice\n\tprompt \"Lua Version\"\n\tdefault BR2_PACKAGE_LUA_5_3\n\thelp\n\t  Select the version of Lua API/ABI you wish to use.\n\nconfig BR2_PACKAGE_LUA_5_1\n\tbool \"Lua 5.1.x\"\n\tselect BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1\n\nconfig BR2_PACKAGE_LUA_5_3\n\tbool \"Lua 5.3.x\"\n\tselect BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_3\n\nconfig BR2_PACKAGE_LUA_5_4\n\tbool \"Lua 5.4.x\"\n\tselect BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_4\n\nendchoice\n\nif BR2_PACKAGE_LUA_5_3 || BR2_PACKAGE_LUA_5_4\nconfig BR2_PACKAGE_LUA_32BITS\n\tbool \"Use 32 bit numbers\"\n\tdefault y if !BR2_ARCH_IS_64\n\thelp\n\t  Use a 32 bit data type for numbers / integers instead of the\n\t  default 64 bit type. This option is particularly attractive\n\t  for small machines and embedded systems.\n\nendif\n\nchoice\n\tprompt \"Lua command-line editing\"\n\tdefault BR2_PACKAGE_LUA_EDITING_NONE\n\nconfig BR2_PACKAGE_LUA_EDITING_NONE\n\tbool \"none\"\n\thelp\n\t  None.\n\nconfig BR2_PACKAGE_LUA_READLINE\n\tbool \"readline support\"\n\tselect BR2_PACKAGE_READLINE\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Enables command-line editing in the Lua interpreter.\n\nconfig BR2_PACKAGE_LUA_LINENOISE\n\tbool \"linenoise support\"\n\tselect BR2_PACKAGE_LINENOISE\n\thelp\n\t  Enables command-line editing in the Lua interpreter.\n\nendchoice\n\nendif\n"
  },
  {
    "path": "package/lua/lua.mk",
    "content": "################################################################################\n#\n# lua\n#\n################################################################################\n\nifeq ($(BR2_PACKAGE_LUA_5_4),y)\nLUA_VERSION = 5.4.3\nelse ifeq ($(BR2_PACKAGE_LUA_5_3),y)\nLUA_VERSION = 5.3.6\nelse\nLUA_VERSION = 5.1.5\nendif\nLUA_SITE = https://www.lua.org/ftp\nLUA_INSTALL_STAGING = YES\nLUA_LICENSE = MIT\nifeq ($(BR2_PACKAGE_LUA_5_3)$(BR2_PACKAGE_LUA_5_4),y)\nLUA_LICENSE_FILES = doc/readme.html\nelse\nLUA_LICENSE_FILES = COPYRIGHT\nendif\nLUA_CPE_ID_VENDOR = lua\n\nLUA_PROVIDES = luainterpreter\n\nLUA_CFLAGS = -Wall -fPIC -DLUA_USE_POSIX\n\nifeq ($(BR2_PACKAGE_LUA_5_4),y)\nLUA_CFLAGS += -DLUA_COMPAT_5_3\nelse ifeq ($(BR2_PACKAGE_LUA_5_3),y)\nLUA_CFLAGS += -DLUA_COMPAT_5_2\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nLUA_BUILDMODE = static\nelse\nLUA_BUILDMODE = dynamic\nLUA_CFLAGS += -DLUA_USE_DLOPEN\nLUA_MYLIBS += -ldl\nendif\n\nifeq ($(BR2_PACKAGE_LUA_READLINE),y)\nLUA_DEPENDENCIES += readline ncurses\nLUA_MYLIBS += -lreadline -lhistory -lncurses\nLUA_CFLAGS += -DLUA_USE_READLINE\nelse\nifeq ($(BR2_PACKAGE_LUA_LINENOISE),y)\nLUA_DEPENDENCIES += linenoise\nLUA_MYLIBS += -llinenoise\nLUA_CFLAGS += -DLUA_USE_LINENOISE\nendif\nendif\n\nifeq ($(BR2_PACKAGE_LUA_32BITS),y)\ndefine LUA_32BITS_LUACONF\n\t$(SED) 's/\\/\\* #define LUA_32BITS \\*\\//#define LUA_32BITS/' $(@D)/src/luaconf.h\nendef\n\nLUA_POST_PATCH_HOOKS += LUA_32BITS_LUACONF\nendif\n\ndefine HOST_LUA_LUACONF\n\t$(SED) 's|#define LUA_ROOT.*|#define LUA_ROOT \"$(HOST_DIR)/usr/\"|' $(@D)/src/luaconf.h\nendef\nHOST_LUA_POST_PATCH_HOOKS += HOST_LUA_LUACONF\n\nHOST_LUA_CFLAGS = -Wall -fPIC -DLUA_USE_DLOPEN -DLUA_USE_POSIX\nifeq ($(BR2_PACKAGE_LUA_5_3),y)\nHOST_LUA_CFLAGS += -DLUA_COMPAT_5_2\nendif\nHOST_LUA_MYLIBS = -ldl\n\ndefine LUA_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\tCC=\"$(TARGET_CC)\" RANLIB=\"$(TARGET_RANLIB)\" \\\n\tCFLAGS=\"$(TARGET_CFLAGS) $(LUA_CFLAGS)\" \\\n\tMYLIBS=\"$(LUA_MYLIBS)\" AR=\"$(TARGET_CROSS)ar rcu\" \\\n\tMYLDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\tBUILDMODE=$(LUA_BUILDMODE) \\\n\tPKG_VERSION=$(LUA_VERSION) -C $(@D)/src all\n\tsed -e \"s/@VERSION@/$(LUA_VERSION)/;s/@ABI@/$(LUAINTERPRETER_ABIVER)/;s/@MYLIBS@/$(LUA_MYLIBS)/\" \\\n\t\tpackage/lua/lua.pc.in > $(@D)/lua.pc\nendef\n\ndefine HOST_LUA_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) \\\n\tCFLAGS=\"$(HOST_LUA_CFLAGS)\" \\\n\tMYLDFLAGS=\"$(HOST_LDFLAGS)\" \\\n\tMYLIBS=\"$(HOST_LUA_MYLIBS)\" \\\n\tBUILDMODE=dynamic \\\n\tPKG_VERSION=$(LUA_VERSION) -C $(@D)/src all\n\tsed -e \"s/@VERSION@/$(LUA_VERSION)/;s/@ABI@/$(LUAINTERPRETER_ABIVER)/;s/@MYLIBS@/$(HOST_LUA_MYLIBS)/\" \\\n\t\tpackage/lua/lua.pc.in > $(@D)/lua.pc\nendef\n\ndefine LUA_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) INSTALL_TOP=\"$(STAGING_DIR)/usr\" -C $(@D) install\n\t$(INSTALL) -m 0644 -D $(@D)/lua.pc \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/lua.pc\nendef\n\ndefine LUA_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) INSTALL_TOP=\"$(TARGET_DIR)/usr\" -C $(@D) install\nendef\n\ndefine HOST_LUA_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) INSTALL_TOP=\"$(HOST_DIR)\" -C $(@D) install\n\t$(INSTALL) -m 0644 -D $(@D)/lua.pc \\\n\t\t$(HOST_DIR)/lib/pkgconfig/lua.pc\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/lua/lua.pc.in",
    "content": "# lua.pc -- pkg-config data for Lua\n\nV= @ABI@\nR= @VERSION@\n\nprefix= /usr\nINSTALL_BIN= ${prefix}/bin\nINSTALL_INC= ${prefix}/include\nINSTALL_LIB= ${prefix}/lib\nINSTALL_MAN= ${prefix}/man/man1\nINSTALL_LMOD= ${prefix}/share/lua/${V}\nINSTALL_CMOD= ${prefix}/lib/lua/${V}\n\n# canonical vars\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: Lua\nDescription: An Extensible Extension Language\nVersion: ${R}\nRequires:\nLibs: -L${libdir} -llua -lm @MYLIBS@\nCflags: -I${includedir}\n\n# (end of lua.pc)\n"
  },
  {
    "path": "package/lua-augeas/Config.in",
    "content": "config BR2_PACKAGE_LUA_AUGEAS\n\tbool \"lua-augeas\"\n\tdepends on !BR2_arc # augeas\n\tdepends on BR2_USE_WCHAR # augeas\n\tselect BR2_PACKAGE_AUGEAS\n\thelp\n\t  Lua binding for augeas library\n\n\t  https://github.com/ncopa/lua-augeas\n\ncomment \"lua-augeas needs a toolchain w/ wchar\"\n\tdepends on !BR2_arc\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/lua-augeas/lua-augeas.hash",
    "content": "# Locally computed:\nsha256  694fe887eebac27b558c9695042405f70a86382e92916094e7ba5f411673fbc1  lua-augeas-a6eace5116d1a711218a7c9086a4e3c4db88ee57.tar.gz\nsha256  1f5c5ee5da981332b7f73cc5a59af660b03104279e2aa21b6b86890430c3eff0  COPYRIGHT\n"
  },
  {
    "path": "package/lua-augeas/lua-augeas.mk",
    "content": "################################################################################\n#\n# lua-augeas\n#\n################################################################################\n\nLUA_AUGEAS_VERSION = a6eace5116d1a711218a7c9086a4e3c4db88ee57\nLUA_AUGEAS_SITE = $(call github,ncopa,lua-augeas,$(LUA_AUGEAS_VERSION))\nLUA_AUGEAS_LICENSE = MIT\nLUA_AUGEAS_LICENSE_FILES = COPYRIGHT\nLUA_AUGEAS_DEPENDENCIES = luainterpreter augeas host-pkgconf\n\n# LDFLAGS=$(LDFLAGS) is present to pass LDFLAGS from environment to the command\n# line. With LDFLAGS set in the command line, related ordinary asignment present\n# in the makefile are ignored and so lua-augeas makefile cannot not add '-L/lib'\n# to this value.\nLUA_AUGEAS_CONF_OPTS= \\\n\tPKGCONFIG=\"$(PKG_CONFIG_HOST_BINARY)\" \\\n\tLDFLAGS=\"$(LDFLAGS)\" \\\n\tLUA_VERSION=\"$(LUAINTERPRETER_ABIVER)\" \\\n\tINSTALL_CMOD=\"/usr/lib/lua/$(LUAINTERPRETER_ABIVER)\"\n\ndefine LUA_AUGEAS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(LUA_AUGEAS_CONF_OPTS) all\nendef\n\ndefine LUA_AUGEAS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(LUA_AUGEAS_CONF_OPTS) DESTDIR=\"$(TARGET_DIR)\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lua-basexx/Config.in",
    "content": "config BR2_PACKAGE_LUA_BASEXX\n\tbool \"lua-basexx\"\n\thelp\n\t  A Lua library which provides base2(bitfield), base16(hex),\n\t  base32(crockford/rfc), base64(rfc/url), base85(z85) decoding\n\t  and encoding.\n\n\t  https://github.com/aiq/basexx\n"
  },
  {
    "path": "package/lua-basexx/lua-basexx.hash",
    "content": "# computed by luarocks/buildroot\nsha256 ff5379b1f5b396103b8bb589ab3dd94d0a727c8e7a48dcfe1c73e2f07af6a8df  basexx-0.4.0-1.src.rock\nsha256 a1826a43c9e04f9e9b2e5d26d636c656812483bcd513618eec9d72cee69d446b  basexx-0.4.0/LICENSE\n"
  },
  {
    "path": "package/lua-basexx/lua-basexx.mk",
    "content": "################################################################################\n#\n# lua-basexx\n#\n################################################################################\n\nLUA_BASEXX_VERSION = 0.4.0-1\nLUA_BASEXX_NAME_UPSTREAM = basexx\nLUA_BASEXX_LICENSE = MIT\nLUA_BASEXX_LICENSE_FILES = $(LUA_BASEXX_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-binaryheap/Config.in",
    "content": "config BR2_PACKAGE_LUA_BINARYHEAP\n\tbool \"lua-binaryheap\"\n\thelp\n\t  Binary heap implementation in pure Lua.\n\n\t  https://github.com/Tieske/binaryheap.lua\n"
  },
  {
    "path": "package/lua-binaryheap/lua-binaryheap.hash",
    "content": "# computed by luarocks/buildroot\nsha256 ecce14dedfa7a1938aa2383c83036b98461876934f169384a2cec6bb46462d87  binaryheap-0.4-1.src.rock\n"
  },
  {
    "path": "package/lua-binaryheap/lua-binaryheap.mk",
    "content": "################################################################################\n#\n# lua-binaryheap\n#\n################################################################################\n\nLUA_BINARYHEAP_VERSION = 0.4-1\nLUA_BINARYHEAP_NAME_UPSTREAM = binaryheap\nLUA_BINARYHEAP_SUBDIR = binaryheap.lua-version_0v4\nLUA_BINARYHEAP_LICENSE = MIT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-bit32/Config.in",
    "content": "config BR2_PACKAGE_LUA_BIT32\n\tbool \"lua-bit32\"\n\thelp\n\t  bit32 is the native Lua 5.2 bit manipulation library, in the\n\t  version from Lua 5.3; it is compatible with Lua 5.1, 5.2 and\n\t  5.3.\n\n\t  http://www.lua.org/manual/5.2/manual.html#6.7\n"
  },
  {
    "path": "package/lua-bit32/lua-bit32.hash",
    "content": "# computed by luarocks/buildroot\nsha256 0e273427f2b877270f9cec5642ebe2670242926ba9638d4e6df7e4e1263ca12c  bit32-5.3.5.1-1.src.rock\nsha256 1b24f475812c979684fb3469f6faccbdc7c33c9d39421728aa0d78deda5a89a5  lua-compat-5.3-0.10/LICENSE\n"
  },
  {
    "path": "package/lua-bit32/lua-bit32.mk",
    "content": "################################################################################\n#\n# lua-bit32\n#\n################################################################################\n\nLUA_BIT32_VERSION = 5.3.5.1-1\nLUA_BIT32_NAME_UPSTREAM = bit32\nLUA_BIT32_SUBDIR = lua-compat-5.3-0.10\nLUA_BIT32_LICENSE = MIT\nLUA_BIT32_LICENSE_FILES = $(LUA_BIT32_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-cjson/Config.in",
    "content": "config BR2_PACKAGE_LUA_CJSON\n\tbool \"lua-cjson\"\n\thelp\n\t  The Lua CJSON module provides JSON support for Lua.\n\t  It features:\n\t  - Fast, standards compliant encoding/parsing routines\n\t  - Full support for JSON with UTF-8, including decoding\n\t    surrogate pairs\n\t  - Optional run-time support for common exceptions to the JSON\n\t    specification (infinity, NaN, ...)\n\t  - No dependencies on other libraries\n\n\t  (C-module)\n\n\t  http://www.kyne.com.au/~mark/software/lua-cjson.php\n"
  },
  {
    "path": "package/lua-cjson/lua-cjson.hash",
    "content": "# computed by luarocks/buildroot\nsha256 455fa7d07d8ac9d61f68f538958f8e28972256f38b0a1c2740873daf809d1837  lua-cjson-2.1.0.6-1.src.rock\nsha256 9576e82ef5013fbe80b3bd446a7d9ddd47328baa2186c31d3d885e2a9a8cd31e  lua-cjson/LICENSE\n"
  },
  {
    "path": "package/lua-cjson/lua-cjson.mk",
    "content": "################################################################################\n#\n# lua-cjson\n#\n################################################################################\n\nLUA_CJSON_VERSION = 2.1.0.6-1\nLUA_CJSON_SUBDIR = lua-cjson\nLUA_CJSON_LICENSE = MIT\nLUA_CJSON_LICENSE_FILES = $(LUA_CJSON_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-coat/Config.in",
    "content": "config BR2_PACKAGE_LUA_COAT\n\tbool \"lua-coat\"\n\thelp\n\t  Yet Another Lua Object-Oriented Model.\n\n\t  https://fperrad.frama.io/lua-Coat/\n"
  },
  {
    "path": "package/lua-coat/lua-coat.hash",
    "content": "# computed by luarocks/buildroot\nsha256 24d0e894d743f46c09a282e4dd272d2a6004557608b618c1c9d9f464dd65af02  lua-coat-0.9.2-1.src.rock\nsha256 81b5f657812ccfd63f19c9af1389b5fe6b26f079a4841c5d074940c47bf7cb1e  lua-Coat-0.9.2/COPYRIGHT\n"
  },
  {
    "path": "package/lua-coat/lua-coat.mk",
    "content": "################################################################################\n#\n# lua-coat\n#\n################################################################################\n\nLUA_COAT_VERSION = 0.9.2-1\nLUA_COAT_NAME_UPSTREAM = lua-Coat\nLUA_COAT_LICENSE = MIT\nLUA_COAT_LICENSE_FILES = $(LUA_COAT_SUBDIR)/COPYRIGHT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-coatpersistent/Config.in",
    "content": "config BR2_PACKAGE_LUA_COATPERSISTENT\n\tbool \"lua-coatpersistent\"\n\tdepends on BR2_PACKAGE_LSQLITE3 || BR2_PACKAGE_LUASQL_SQLITE3\n\tselect BR2_PACKAGE_DADO # runtime\n\tselect BR2_PACKAGE_LUA_COAT # runtime\n\thelp\n\t  An ORM for lua-Coat.\n\n\t  https://fperrad.frama.io/lua-CoatPersistent/\n\ncomment \"lua-coatpersistent needs lsqlite3 or luasql-sqlite3\"\n\tdepends on !BR2_PACKAGE_LSQLITE3 && !BR2_PACKAGE_LUASQL_SQLITE3\n"
  },
  {
    "path": "package/lua-coatpersistent/lua-coatpersistent.hash",
    "content": "# computed by luarocks/buildroot\nsha256 e718ee36a17312108f266e8412f840db150afd89e8587d36e685673fff65f142  lua-coatpersistent-lsqlite3-0.2.2-1.src.rock\nsha256 5d36d6a8b413a2d56a466a45314291a0265c514a179e741b3fc95f4dd901abe6  lua-coatpersistent-luasql-0.2.2-1.src.rock\nsha256 f8ed30644056ceff4315e694a1c1af4af4f08ec0adabae353ab8f3f5289ffbf3  lua-CoatPersistent-0.2.2/COPYRIGHT\n"
  },
  {
    "path": "package/lua-coatpersistent/lua-coatpersistent.mk",
    "content": "################################################################################\n#\n# lua-coatpersistent\n#\n################################################################################\n\nLUA_COATPERSISTENT_VERSION_UPSTREAM = 0.2.2\nifeq ($(BR2_PACKAGE_LSQLITE3),y)\nLUA_COATPERSISTENT_VERSION = lsqlite3-$(LUA_COATPERSISTENT_VERSION_UPSTREAM)-1\nelse\nLUA_COATPERSISTENT_VERSION = luasql-$(LUA_COATPERSISTENT_VERSION_UPSTREAM)-1\nendif\nLUA_COATPERSISTENT_SUBDIR = lua-CoatPersistent-$(LUA_COATPERSISTENT_VERSION_UPSTREAM)\nLUA_COATPERSISTENT_LICENSE = MIT\nLUA_COATPERSISTENT_LICENSE_FILES = $(LUA_COATPERSISTENT_SUBDIR)/COPYRIGHT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-codegen/Config.in",
    "content": "config BR2_PACKAGE_LUA_CODEGEN\n\tbool \"lua-codegen\"\n\thelp\n\t  A template engine.\n\n\t  https://fperrad.frama.io/lua-CodeGen\n"
  },
  {
    "path": "package/lua-codegen/lua-codegen.hash",
    "content": "# computed by luarocks/buildroot\nsha256 c09126d7f5d0fa9c867ee9108eb5961dab111320ee35e5f842317f6058e922ec  lua-codegen-0.3.3-1.src.rock\nsha256 f09265c450c3a59558ecc552ea4ba61e5a74dec995738eec545d121718833a80  lua-CodeGen-0.3.3/COPYRIGHT\n"
  },
  {
    "path": "package/lua-codegen/lua-codegen.mk",
    "content": "################################################################################\n#\n# lua-codegen\n#\n################################################################################\n\nLUA_CODEGEN_VERSION = 0.3.3-1\nLUA_CODEGEN_NAME_UPSTREAM = lua-CodeGen\nLUA_CODEGEN_LICENSE = MIT\nLUA_CODEGEN_LICENSE_FILES = $(LUA_CODEGEN_SUBDIR)/COPYRIGHT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-compat53/Config.in",
    "content": "config BR2_PACKAGE_LUA_COMPAT53\n\tbool \"lua-compat53\"\n\tdepends on BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1\n\thelp\n\t  Compatibility module providing Lua-5.3-style APIs for Lua 5.2\n\t  and 5.1.\n\n\t  https://github.com/keplerproject/lua-compat-5.3\n"
  },
  {
    "path": "package/lua-compat53/lua-compat53.hash",
    "content": "# computed by luarocks/buildroot\nsha256 e513e75ba0ef4923a1ec0d4f0beb5972a11cc9bd7ac1b0953b5e4f037b259c92  compat53-0.8-1.src.rock\nsha256 1b24f475812c979684fb3469f6faccbdc7c33c9d39421728aa0d78deda5a89a5  lua-compat-5.3-0.8/LICENSE\n"
  },
  {
    "path": "package/lua-compat53/lua-compat53.mk",
    "content": "################################################################################\n#\n# lua-compat53\n#\n################################################################################\n\nLUA_COMPAT53_VERSION_UPSTREAM = 0.8\nLUA_COMPAT53_VERSION = $(LUA_COMPAT53_VERSION_UPSTREAM)-1\nLUA_COMPAT53_NAME_UPSTREAM = compat53\nLUA_COMPAT53_SUBDIR = lua-compat-5.3-$(LUA_COMPAT53_VERSION_UPSTREAM)\nLUA_COMPAT53_LICENSE = MIT\nLUA_COMPAT53_LICENSE_FILES = $(LUA_COMPAT53_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-cqueues/Config.in",
    "content": "config BR2_PACKAGE_LUA_CQUEUES\n\tbool \"lua-cqueues\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Continuation Queues: Embeddable asynchronous networking,\n\t  threading, and notification framework for Lua on Unix.\n\n\t  http://25thandclement.com/~william/projects/cqueues.html\n\ncomment \"lua-cqueues needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/lua-cqueues/lua-cqueues.hash",
    "content": "# Locally calculated\nsha256  9e112edd246da5cfca264314b70325a0b63665cb87a00e45ee3ae4f194000d52  lua-cqueues-20200726.tar.gz\nsha256  5f4b1f94047790eadf8fd0f9a8e3bd2895bea4c9a2c0f8bf7cd8c8e57caa5219  LICENSE\n"
  },
  {
    "path": "package/lua-cqueues/lua-cqueues.mk",
    "content": "################################################################################\n#\n# lua-cqueues\n#\n################################################################################\n\nLUA_CQUEUES_VERSION = 20200726\nLUA_CQUEUES_SITE = $(call github,wahern,cqueues,rel-$(LUA_CQUEUES_VERSION))\nLUA_CQUEUES_LICENSE = MIT\nLUA_CQUEUES_LICENSE_FILES = LICENSE\nLUA_CQUEUES_DEPENDENCIES = luainterpreter openssl host-m4\n\nLUA_CQUEUES_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)\nLUA_CQUEUES_CFLAGS += -O0\nendif\n\ndefine LUA_CQUEUES_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(LUA_CQUEUES_CFLAGS)\" -C $(@D) \\\n\t\tprefix=\"$(STAGING_DIR)/usr\" all$(LUAINTERPRETER_ABIVER)\nendef\n\ndefine LUA_CQUEUES_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\tDESTDIR=\"$(TARGET_DIR)\" prefix=/usr install$(LUAINTERPRETER_ABIVER)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lua-csnappy/Config.in",
    "content": "config BR2_PACKAGE_LUA_CSNAPPY\n\tbool \"lua-csnappy\"\n\thelp\n\t  lua-csnappy is a binding of the csnappy library\n\t  which implements the Google's Snappy (de)compressor.\n\n\t  https://fperrad.frama.io/lua-csnappy/\n"
  },
  {
    "path": "package/lua-csnappy/lua-csnappy.hash",
    "content": "# computed by luarocks/buildroot\nsha256 4fc373ba714cb8b428e9971f1725d82de6a43dfea361a0b7894e4762238dc95c  lua-csnappy-0.1.5-1.src.rock\nsha256 8865da757dbc6fe3c8cee4d88bdfd82c1e0e789974a4d0d52db75a985025c1f0  lua-csnappy-0.1.5/COPYRIGHT\n"
  },
  {
    "path": "package/lua-csnappy/lua-csnappy.mk",
    "content": "################################################################################\n#\n# lua-csnappy\n#\n################################################################################\n\nLUA_CSNAPPY_VERSION = 0.1.5-1\nLUA_CSNAPPY_LICENSE = BSD-3-Clause\nLUA_CSNAPPY_LICENSE_FILES = $(LUA_CSNAPPY_SUBDIR)/COPYRIGHT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-curl/Config.in",
    "content": "config BR2_PACKAGE_LUA_CURL\n\tbool \"lua-curl\"\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  Lua binding to libcurl.\n\n\t  https://lua-curl.github.io/\n"
  },
  {
    "path": "package/lua-curl/lua-curl.hash",
    "content": "# computed by luarocks/buildroot\nsha256  6b2cc48621fac3cb7c1669705475e67a6932829ba46efb9ac5864604848f8ea2  lua-curl-0.3.13-1.src.rock\nsha256  0f92f4c4665aadffb023de44b16022282040fe4409d5cd3148f1812dec30cdff  Lua-cURLv3-0.3.13/LICENSE\n"
  },
  {
    "path": "package/lua-curl/lua-curl.mk",
    "content": "################################################################################\n#\n# lua-curl\n#\n################################################################################\n\nLUA_CURL_VERSION_UPSTREAM = 0.3.13\nLUA_CURL_VERSION = $(LUA_CURL_VERSION_UPSTREAM)-1\nLUA_CURL_SUBDIR = Lua-cURLv3-$(LUA_CURL_VERSION_UPSTREAM)\nLUA_CURL_LICENSE = MIT\nLUA_CURL_LICENSE_FILES = $(LUA_CURL_SUBDIR)/LICENSE\nLUA_CURL_DEPENDENCIES = libcurl\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-datafile/Config.in",
    "content": "config BR2_PACKAGE_LUA_DATAFILE\n\tbool \"lua-datafile\"\n\thelp\n\t  datafile is a library for avoiding hardcoded paths\n\t  when loading resource files in Lua modules.\n\n\t  https://github.com/hishamhm/datafile\n"
  },
  {
    "path": "package/lua-datafile/lua-datafile.hash",
    "content": "# computed by luarocks/buildroot\nsha256 4f7d58c50267b5ebd2145e52aaa5fb63fbf63a74ae765f08e2d0dddd570b6b6a  datafile-0.6-1.src.rock\nsha256 0443ddabab14f69d4c5e2641860343784a0ccbe5ae7a3743f20de9a13991da66  datafile/LICENSE\n"
  },
  {
    "path": "package/lua-datafile/lua-datafile.mk",
    "content": "################################################################################\n#\n# lua-datafile\n#\n################################################################################\n\nLUA_DATAFILE_VERSION = 0.6-1\nLUA_DATAFILE_NAME_UPSTREAM = datafile\nLUA_DATAFILE_SUBDIR = datafile\nLUA_DATAFILE_LICENSE = MIT\nLUA_DATAFILE_LICENSE_FILES = $(LUA_DATAFILE_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-ev/Config.in",
    "content": "config BR2_PACKAGE_LUA_EV\n\tbool \"lua-ev\"\n\tselect BR2_PACKAGE_LIBEV\n\thelp\n\t  Get access to the libev library from Lua.\n\n\t  https://github.com/brimworks/lua-ev\n"
  },
  {
    "path": "package/lua-ev/lua-ev.hash",
    "content": "# Locally calculated\nsha256  4e26e05830955fdd882a1b48b535be94356582eea310327f839f830cd9250d3a  lua-ev-339426fbe528f11cb3cd1af69a88f06bba367981.tar.gz\nsha256  c224cc31feec52e33b621ccdbc245e21316a20a134a4cd8706438a3b3382e8ac  README\n"
  },
  {
    "path": "package/lua-ev/lua-ev.mk",
    "content": "################################################################################\n#\n# lua-ev\n#\n################################################################################\n\nLUA_EV_VERSION = 339426fbe528f11cb3cd1af69a88f06bba367981\nLUA_EV_SITE = $(call github,brimworks,lua-ev,$(LUA_EV_VERSION))\nLUA_EV_DEPENDENCIES = luainterpreter libev\nLUA_EV_LICENSE = MIT\nLUA_EV_LICENSE_FILES = README\nLUA_EV_CONF_OPTS = -DINSTALL_CMOD=\"/usr/lib/lua/$(LUAINTERPRETER_ABIVER)\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/lua-fifo/Config.in",
    "content": "config BR2_PACKAGE_LUA_FIFO\n\tbool \"lua-fifo\"\n\thelp\n\t  A lua library/'class' that implements a FIFO.\n\n\t  https://github.com/daurnimator/fifo.lua\n"
  },
  {
    "path": "package/lua-fifo/lua-fifo.hash",
    "content": "# computed by luarocks/buildroot\nsha256 53dea24ad658614a0254dcb10296a1a0fc5357315ada5724d6362f54c32b4c20  fifo-0.2-0.src.rock\nsha256 8b4423dd4f55a69da1454b7a48346a54fd5b6e0408b38fde25cd29c0922962b6  fifo.lua-0.2/LICENSE\n"
  },
  {
    "path": "package/lua-fifo/lua-fifo.mk",
    "content": "################################################################################\n#\n# lua-fifo\n#\n################################################################################\n\nLUA_FIFO_VERSION_UPSTREAM = 0.2\nLUA_FIFO_VERSION = $(LUA_FIFO_VERSION_UPSTREAM)-0\nLUA_FIFO_NAME_UPSTREAM = fifo\nLUA_FIFO_SUBDIR = fifo.lua-$(LUA_FIFO_VERSION_UPSTREAM)\nLUA_FIFO_LICENSE = MIT\nLUA_FIFO_LICENSE_FILES = $(LUA_FIFO_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-flu/Config.in",
    "content": "config BR2_PACKAGE_LUA_FLU\n\tbool \"lua-flu\"\n\tdepends on !BR2_STATIC_LIBS # libfuse\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libfuse\n\tdepends on BR2_USE_MMU # libfuse\n\tdepends on !BR2_PACKAGE_LUA_5_4\n\tselect BR2_PACKAGE_ATTR\n\tselect BR2_PACKAGE_LIBFUSE\n\thelp\n\t  Flu is a Lua binding for FUSE, which is a library allowing\n\t  creation of filesystem drivers run in userspace. Flu is a high\n\t  level binding, using basic Lua types rather than userdata\n\t  whenever possible.\n\n\t  http://piratery.net/flu/\n\ncomment \"lua-flu needs a toolchain w/ threads, dynamic library, Lua <= 5.3\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || BR2_PACKAGE_LUA_5_4\n"
  },
  {
    "path": "package/lua-flu/lua-flu.hash",
    "content": "# computed by luarocks/buildroot\nsha256 221ba8f8d3abbf12d5fc217dbb965605391892eb314eff1cd9c7beca90fe9887  flu-20181218-1.src.rock\nsha256 409f7c274eb26874a382241d675a360ba6b2659742c5941e680d71a41dd35913  doub-flu-63f077a988cd/doc/LICENSE.txt\n"
  },
  {
    "path": "package/lua-flu/lua-flu.mk",
    "content": "################################################################################\n#\n# lua-flu\n#\n################################################################################\n\nLUA_FLU_VERSION = 20181218-1\nLUA_FLU_NAME_UPSTREAM = Flu\nLUA_FLU_SUBDIR = doub-flu-63f077a988cd\nLUA_FLU_LICENSE = MIT\nLUA_FLU_LICENSE_FILES = $(LUA_FLU_SUBDIR)/doc/LICENSE.txt\nLUA_FLU_DEPENDENCIES = attr libfuse\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-gd/0001-Protect-declaration-of-LgdImageCreateFromPng-with-GD.patch",
    "content": "From 78afd1c5f1ceaed05b78ac42c297d87a493295fd Mon Sep 17 00:00:00 2001\nFrom: spacewander <spacewanderlzx@gmail.com>\nDate: Tue, 31 Oct 2017 15:48:30 +0800\nSubject: [PATCH] Protect declaration of LgdImageCreateFromPng* with GD_PNG\n feature test macro\n\nIf GD_PNG is false, neither LgdImageCreateFromPng nor\nLgdImageCreateFromPngPtr would be implemented. We should avoid declaring\nthem too.\n\nFetch from: https://github.com/ittner/lua-gd/pull/8\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n---\n luagd.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/luagd.c b/luagd.c\nindex 9730ff7..98bc03e 100644\n--- a/luagd.c\n+++ b/luagd.c\n@@ -2168,8 +2168,10 @@ static const luaL_Reg LgdFunctions[] =\n     { \"createFromGif\",          LgdImageCreateFromGif },\n     { \"createFromGifStr\",       LgdImageCreateFromGifPtr },\n #endif\n+#ifdef GD_PNG\n     { \"createFromPng\",          LgdImageCreateFromPng },\n     { \"createFromPngStr\",       LgdImageCreateFromPngPtr },\n+#endif\n     { \"createFromGd\",           LgdImageCreateFromGd },\n     { \"createFromGdStr\",        LgdImageCreateFromGdPtr },\n     { \"createFromGd2\",          LgdImageCreateFromGd2 },\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/lua-gd/Config.in",
    "content": "config BR2_PACKAGE_LUA_GD\n\tbool \"lua-gd\"\n\tselect BR2_PACKAGE_GD\n\thelp\n\t  GD (graphics library) bindings for Lua.\n\n\t  https://ittner.github.io/lua-gd/\n"
  },
  {
    "path": "package/lua-gd/lua-gd.hash",
    "content": "# Locally calculated\nsha256  928fa036b37595d773db1999c9ff43195c4290f0722298fa5b0c3e619c678525  lua-gd-2ce8e478a8591afd71e607506bc8c64b161bbd30.tar.gz\nsha256  b0ca41d88ddb0ca785436d37b08b8f413055755eb6bfd3ea0a6ff3214303aa43  COPYING\n"
  },
  {
    "path": "package/lua-gd/lua-gd.mk",
    "content": "################################################################################\n#\n# lua-gd\n#\n################################################################################\n\nLUA_GD_VERSION = 2ce8e478a8591afd71e607506bc8c64b161bbd30\nLUA_GD_SITE = $(call github,ittner,lua-gd,$(LUA_GD_VERSION))\nLUA_GD_LICENSE = MIT\nLUA_GD_LICENSE_FILES = COPYING\nLUA_GD_DEPENDENCIES = luainterpreter gd\n\nifeq ($(BR2_PACKAGE_FONTCONFIG),y)\nLUA_GD_FEATURES += -DGD_FONTCONFIG\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nLUA_GD_FEATURES += -DGD_FREETYPE\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nLUA_GD_FEATURES += -DGD_JPEG\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nLUA_GD_FEATURES += -DGD_PNG\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y)\nLUA_GD_FEATURES += -DGD_XPM\nendif\n\n# VERSION follows the scheme described on https://ittner.github.io/lua-gd/manual.html#intro,\n# the current version of the binding is 3.\ndefine LUA_GD_BUILD_CMDS\n\t$(MAKE) -C $(@D) gd.so \\\n\t\tGDFEATURES=\"$(LUA_GD_FEATURES)\" \\\n\t\tCC=$(TARGET_CC) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -fPIC -DVERSION=\\\\\\\"$(GD_VERSION)r3\\\\\\\"\" \\\n\t\tLFLAGS=\"-shared -lgd\"\nendef\n\ndefine LUA_GD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 -D $(@D)/gd.so $(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)/gd.so\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lua-http/Config.in",
    "content": "config BR2_PACKAGE_LUA_HTTP\n\tbool \"lua-http\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS    # luaossl & lua-cqueues\n\tselect BR2_PACKAGE_LPEG # runtime\n\tselect BR2_PACKAGE_LUA_BASEXX # runtime\n\tselect BR2_PACKAGE_LUA_BINARYHEAP # runtime\n\tselect BR2_PACKAGE_LUA_COMPAT53 if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 # runtime\n\tselect BR2_PACKAGE_LUA_CQUEUES # runtime\n\tselect BR2_PACKAGE_LUA_FIFO # runtime\n\tselect BR2_PACKAGE_LUA_LPEG_PATTERNS # runtime\n\tselect BR2_PACKAGE_LUABITOP if BR2_PACKAGE_LUA_5_1 # runtime\n\tselect BR2_PACKAGE_LUAOSSL # runtime\n\thelp\n\t  HTTP library for Lua.\n\n\t  https://github.com/daurnimator/lua-http\n\ncomment \"lua-http needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/lua-http/lua-http.hash",
    "content": "# computed by luarocks/buildroot\nsha256 dbe1b29ff89fb937059e4398c9a628361d97d856acc87fd8cd85cb9340cde328  http-0.4-0.src.rock\nsha256 1b486781068bcfd373f8c54f8d78eeab76d900bdf32e589e8330a4c563c2874b  lua-http-0.4/LICENSE.md\n"
  },
  {
    "path": "package/lua-http/lua-http.mk",
    "content": "################################################################################\n#\n# lua-http\n#\n################################################################################\n\nLUA_HTTP_VERSION_UPSTREAM = 0.4\nLUA_HTTP_VERSION = $(LUA_HTTP_VERSION_UPSTREAM)-0\nLUA_HTTP_NAME_UPSTREAM = http\nLUA_HTTP_SUBDIR = lua-http-$(LUA_HTTP_VERSION_UPSTREAM)\nLUA_HTTP_LICENSE = MIT\nLUA_HTTP_LICENSE_FILES = $(LUA_HTTP_SUBDIR)/LICENSE.md\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-iconv/Config.in",
    "content": "config BR2_PACKAGE_LUA_ICONV\n\tbool \"lua-iconv\"\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Lua binding to the POSIX 'iconv' library\n\n\t  http://ittner.github.io/lua-iconv/\n"
  },
  {
    "path": "package/lua-iconv/lua-iconv.hash",
    "content": "# computed by luarocks/buildroot\nsha256 fb66e785e15376c2d2817f1f1b27d10272b877eacc998c727a10f081a7d768fa  lua-iconv-7-1.src.rock\nsha256 30227b9571827f3dfcdeb3830594fc415459d64ad7271e9954178d3ef58a9bd4  lua-iconv-7/COPYING\n"
  },
  {
    "path": "package/lua-iconv/lua-iconv.mk",
    "content": "################################################################################\n#\n# lua-iconv\n#\n################################################################################\n\nLUA_ICONV_VERSION = 7-1\nLUA_ICONV_LICENSE = MIT\nLUA_ICONV_LICENSE_FILES = $(LUA_ICONV_SUBDIR)/COPYING\nLUA_ICONV_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-livr/Config.in",
    "content": "config BR2_PACKAGE_LUA_LIVR\n\tbool \"lua-livr\"\n\thelp\n\t  Lightweight validator supporting Language Independent\n\t  Validation Rules Specification (LIVR).\n\n\t  https://fperrad.frama.io/lua-LIVR\n"
  },
  {
    "path": "package/lua-livr/lua-livr.hash",
    "content": "# computed by luarocks/buildroot\nsha256 e2f39316b8a1e66420c56e8ddc9ce4c0118c1a240582f2ba52d7627da6dfb76d  lua-livr-0.2.2-1.src.rock\nsha256 69fd426251454ea43a8068e58ac25d882922372de6b22e249bb56e00ea2cd834  lua-LIVR-0.2.2/COPYRIGHT\n"
  },
  {
    "path": "package/lua-livr/lua-livr.mk",
    "content": "################################################################################\n#\n# lua-livr\n#\n################################################################################\n\nLUA_LIVR_VERSION = 0.2.2-1\nLUA_LIVR_NAME_UPSTREAM = lua-LIVR\nLUA_LIVR_LICENSE = MIT\nLUA_LIVR_LICENSE_FILES = $(LUA_LIVR_SUBDIR)/COPYRIGHT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-livr-extra/Config.in",
    "content": "config BR2_PACKAGE_LUA_LIVR_EXTRA\n\tbool \"lua-livr-extra\"\n\tselect BR2_PACKAGE_LUA_LIVR # runtime\n\thelp\n\t  more LIVR rules.\n\n\t  https://fperrad.frama.io/lua-LIVR-extra\n"
  },
  {
    "path": "package/lua-livr-extra/lua-livr-extra.hash",
    "content": "# computed by luarocks/buildroot\nsha256 42fef357db3e05e32112ddebcd4296f040a825dfac77ff2fa03aedbdcdaac729  lua-livr-extra-0.1.1-1.src.rock\nsha256 96751dc604608ecf2357d1599bc2d2e9f56382793a6c218dc98d460759adbf07  lua-LIVR-extra-0.1.1/COPYRIGHT\n"
  },
  {
    "path": "package/lua-livr-extra/lua-livr-extra.mk",
    "content": "################################################################################\n#\n# lua-livr-extra\n#\n################################################################################\n\nLUA_LIVR_EXTRA_VERSION = 0.1.1-1\nLUA_LIVR_EXTRA_NAME_UPSTREAM = lua-LIVR-extra\nLUA_LIVR_EXTRA_LICENSE = MIT\nLUA_LIVR_EXTRA_LICENSE_FILES = $(LUA_LIVR_EXTRA_SUBDIR)/COPYRIGHT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-lpeg-patterns/Config.in",
    "content": "config BR2_PACKAGE_LUA_LPEG_PATTERNS\n\tbool \"lua-lpeg-patterns\"\n\tselect BR2_PACKAGE_LPEG # runtime\n\thelp\n\t  a collection of LPEG patterns.\n\n\t  https://github.com/daurnimator/lpeg_patterns\n"
  },
  {
    "path": "package/lua-lpeg-patterns/lua-lpeg-patterns.hash",
    "content": "# computed by luarocks/buildroot\nsha256 0e6d33543689e83911e2cb47965752e00412cbdfca888812ccbde9ec95259c56  lpeg_patterns-0.5-0.src.rock\nsha256 5b0346f2b2432e5f05e8e4ad31503cf84ddf802dacde9e8c3e529efaa4be3348  lpeg_patterns-0.5/LICENSE.md\n"
  },
  {
    "path": "package/lua-lpeg-patterns/lua-lpeg-patterns.mk",
    "content": "################################################################################\n#\n# lua-lpeg-patterns\n#\n################################################################################\n\nLUA_LPEG_PATTERNS_VERSION = 0.5-0\nLUA_LPEG_PATTERNS_NAME_UPSTREAM = lpeg_patterns\nLUA_LPEG_PATTERNS_ROCKSPEC = $(LUA_LPEG_PATTERNS_NAME_UPSTREAM)-$(LUA_LPEG_PATTERNS_VERSION).rockspec\nLUA_LPEG_PATTERNS_SOURCE = $(LUA_LPEG_PATTERNS_NAME_UPSTREAM)-$(LUA_LPEG_PATTERNS_VERSION).src.rock\nLUA_LPEG_PATTERNS_LICENSE = MIT\nLUA_LPEG_PATTERNS_LICENSE_FILES = $(LUA_LPEG_PATTERNS_SUBDIR)/LICENSE.md\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-lunitx/Config.in",
    "content": "config BR2_PACKAGE_LUA_LUNITX\n\tbool \"lua-lunitx\"\n\thelp\n\t  Lunitx is a unit testing framework for lua, written in lua.\n\n\t  https://github.com/dcurrie/lunit\n"
  },
  {
    "path": "package/lua-lunitx/lua-lunitx.hash",
    "content": "# computed by luarocks/buildroot\nsha256 2299facf4977f9b663e1ad402098139116a87a693c3df66e1f6b89e2cf47646f  lunitx-0.8-1.src.rock\nsha256 3fcfcd6010d73bc2b22505b6a91779022a82661809a3e4e0a0bdd7b3463def8f  lunit/LICENSE\n"
  },
  {
    "path": "package/lua-lunitx/lua-lunitx.mk",
    "content": "################################################################################\n#\n# lua-lunitx\n#\n################################################################################\n\nLUA_LUNITX_VERSION = 0.8-1\nLUA_LUNITX_NAME_UPSTREAM = lunitx\nLUA_LUNITX_SUBDIR = lunit\nLUA_LUNITX_LICENSE = MIT\nLUA_LUNITX_LICENSE_FILES = $(LUA_LUNITX_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-lunix/0001-fix-with-uClibc.patch",
    "content": "From ee41d97a80b978f54941ac6857c00b8a8f28de24 Mon Sep 17 00:00:00 2001\nFrom: Francois Perrad <francois.perrad@gadz.org>\nDate: Sun, 6 Jun 2021 17:55:06 +0200\nSubject: [PATCH] fix with uClibc\n\nuClibc doesn't have is no sys_siglist.\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n---\n lunix-rel-20170920/src/unix.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/lunix-rel-20170920/src/unix.c b/lunix-rel-20170920/src/unix.c\nindex 5f3a70a..e561ab2 100644\n--- a/lunix-rel-20170920/src/unix.c\n+++ b/lunix-rel-20170920/src/unix.c\n@@ -438,7 +438,7 @@\n #endif\n \n #ifndef HAVE_SYS_SIGLIST\n-#define HAVE_SYS_SIGLIST (!MUSL_MAYBE && !__sun && !_AIX)\n+#define HAVE_SYS_SIGLIST (!MUSL_MAYBE && !__sun && !_AIX && !__UCLIBC__)\n #endif\n \n #ifndef HAVE_UNLINKAT\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/lua-lunix/0002-remove-link-with-librt.patch",
    "content": "From aeaff83b9ae42547b8728edac000f3d41d5e44aa Mon Sep 17 00:00:00 2001\nFrom: Francois Perrad <francois.perrad@gadz.org>\nDate: Sat, 17 Jul 2021 13:21:38 +0200\nSubject: [PATCH] remove link with librt\n\nlibrt is not available with musl\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n---\n lunix-rel-20170920/lunix-20170920-1.rockspec | 10 ----------\n 1 file changed, 10 deletions(-)\n\ndiff --git a/lunix-rel-20170920/lunix-20170920-1.rockspec b/lunix-rel-20170920/lunix-20170920-1.rockspec\nindex 741179d..76cafeb 100644\n--- a/lunix-rel-20170920/lunix-20170920-1.rockspec\n+++ b/lunix-rel-20170920/lunix-20170920-1.rockspec\n@@ -26,16 +26,6 @@ build = {\n \t\t};\n \t};\n \tplatforms = {\n-\t\tlinux = {\n-\t\t\tmodules = {\n-\t\t\t\t[\"unix\"] = {\n-\t\t\t\t\tlibraries = {\n-\t\t\t\t\t\t-- glibc <= 2.17 needs to link with librt\n-\t\t\t\t\t\t\"rt\";\n-\t\t\t\t\t};\n-\t\t\t\t};\n-\t\t\t};\n-\t\t};\n \t\tosx = {\n \t\t\tmodules = {\n \t\t\t\t[\"unix\"] = {\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/lua-lunix/0003-fix-sysctl-detection.patch",
    "content": "sys/sysctl.h was removed with glibc 2.32\n\nFetched from: https://github.com/wahern/lunix/pull/20/files\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n---\n lunix-rel-20170920/src/unix.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/lunix-rel-20170920/src/unix.c b/lunix-rel-20170920/src/unix.c\nindex 272820a..fa00876 100644\n--- a/lunix-rel-20170920/src/unix.c\n+++ b/lunix-rel-20170920/src/unix.c\n@@ -165,7 +165,7 @@\n #endif\n \n #ifndef HAVE_SYS_SYSCTL_H /* missing on musl libc */\n-#define HAVE_SYS_SYSCTL_H (defined BSD || GLIBC_PREREQ(0,0) || UCLIBC_PREREQ(0,0,0))\n+#define HAVE_SYS_SYSCTL_H (defined BSD || (__GLIBC__ && !GLIBC_PREREQ(2,32)) || UCLIBC_PREREQ(0,0,0))\n #endif\n \n #ifndef HAVE_STRUCT_IN_PKTINFO\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/lua-lunix/Config.in",
    "content": "config BR2_PACKAGE_LUA_LUNIX\n\tbool \"lua-lunix\"\n\thelp\n\t  lunix is a bindings library module to common Unix system APIs.\n\n\t  http://25thandclement.com/~william/projects/lunix.html\n"
  },
  {
    "path": "package/lua-lunix/lua-lunix.hash",
    "content": "# computed by luarocks/buildroot\nsha256 4a4007b394ae884e18e9d0319ea584e8b4a682d7bf8fa5b99c7eea9baf1e5ed6  lunix-20170920-1.src.rock\nsha256 9b74be104d59caa45bf3321ebe771f9cc7874209261a93f1cf971ceca44fbe03  lunix-rel-20170920/LICENSE\n"
  },
  {
    "path": "package/lua-lunix/lua-lunix.mk",
    "content": "################################################################################\n#\n# lua-lunix\n#\n################################################################################\n\nLUA_LUNIX_VERSION_UPSTREAM = 20170920\nLUA_LUNIX_VERSION = $(LUA_LUNIX_VERSION_UPSTREAM)-1\nLUA_LUNIX_NAME_UPSTREAM = lunix\nLUA_LUNIX_SUBDIR = lunix-rel-$(LUA_LUNIX_VERSION_UPSTREAM)\nLUA_LUNIX_LICENSE = MIT\nLUA_LUNIX_LICENSE_FILES = $(LUA_LUNIX_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-lyaml/Config.in",
    "content": "config BR2_PACKAGE_LUA_LYAML\n\tbool \"lua-lyaml\"\n\tselect BR2_PACKAGE_LIBYAML\n\thelp\n\t  This is a Lua binding for the fast libYAML C library for\n\t  converting between `%YAML 1.1` and Lua tables, with a\n\t  flexible Lua language API to load and save YAML documents.\n\n\t  http://github.com/gvvaughan/lyaml\n"
  },
  {
    "path": "package/lua-lyaml/lua-lyaml.hash",
    "content": "# locally computed\nsha256  9bb489cefae48b150d66f6bab4141d8d5831fcb7465bfc52a9845fa01efc63b0  lua-lyaml-6.2.7.tar.gz\nsha256  81e4ea1d897e259b31111adc2d3c185fe23e435942ff3e9de8c8c9c5d01247d0  LICENSE\n"
  },
  {
    "path": "package/lua-lyaml/lua-lyaml.mk",
    "content": "################################################################################\n#\n# lua-lyaml\n#\n################################################################################\n\nLUA_LYAML_VERSION = 6.2.7\nLUA_LYAML_NAME_UPSTREAM = lyaml\nLUA_LYAML_SITE = $(call github,gvvaughan,$(LUA_LYAML_NAME_UPSTREAM),v$(LUA_LYAML_VERSION))\nLUA_LYAML_LICENSE = MIT\nLUA_LYAML_LICENSE_FILES = LICENSE\nLUA_LYAML_DEPENDENCIES = libyaml luainterpreter host-lua\n\ndefine LUA_LYAML_BUILD_CMDS\n\t(cd $(@D); \\\n\t\t$(LUA_RUN) build-aux/luke \\\n\t\tversion=\"'$(LUA_LYAML_VERSION)'\" \\\n\t\tCC=\"$(TARGET_CC)\" \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\tLUA_INCDIR=$(STAGING_DIR)/usr/include \\\n\t\tYAML_DIR=$(STAGING_DIR)/usr \\\n\t)\nendef\n\ndefine LUA_LYAML_INSTALL_TARGET_CMDS\n\t(cd $(@D); \\\n\t\t$(LUA_RUN) build-aux/luke install \\\n\t\tINST_LIBDIR=\"$(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)\" \\\n\t\tINST_LUADIR=\"$(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)\" \\\n\t)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lua-markdown/Config.in",
    "content": "config BR2_PACKAGE_LUA_MARKDOWN\n\tbool \"lua-markdown\"\n\thelp\n\t  A pure-lua implementation of the Markdown text-to-html\n\t  markup system.\n\n\t  https://github.com/mpeterv/markdown\n"
  },
  {
    "path": "package/lua-markdown/lua-markdown.hash",
    "content": "# computed by luarocks/buildroot\nsha256 bed84231bb48322f8e614b4392181c52c36bc71340f9273e0c3bd72dc922bc07  markdown-0.33-1.src.rock\nsha256 c13c5634db49d16c87f164ce0b79fb7e1b313c8b66818ebf1c970747a429b39b  markdown/LICENSE\n"
  },
  {
    "path": "package/lua-markdown/lua-markdown.mk",
    "content": "################################################################################\n#\n# lua-markdown\n#\n################################################################################\n\nLUA_MARKDOWN_VERSION = 0.33-1\nLUA_MARKDOWN_NAME_UPSTREAM = Markdown\nLUA_MARKDOWN_SUBDIR = markdown\nLUA_MARKDOWN_LICENSE = MIT\nLUA_MARKDOWN_LICENSE_FILES = $(LUA_MARKDOWN_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-messagepack/Config.in",
    "content": "config BR2_PACKAGE_LUA_MESSAGEPACK\n\tbool \"lua-messagepack\"\n\thelp\n\t  A pure Lua implementation of the MessagePack serialization\n\t  format.\n\n\t  https://fperrad.frama.io/lua-MessagePack/\n"
  },
  {
    "path": "package/lua-messagepack/lua-messagepack.hash",
    "content": "# computed by luarocks/buildroot\nsha256 cbb1b7b12834b7f49fd20621446ec4d76eff67d324b8182b7988324b10830a43  lua-messagepack-0.5.2-1.src.rock\nsha256 b3b3d8c3d28a4d4f26404cdb7d7d9329e2e831ea2dd2c6b119d958ed113579b2  lua-messagepack-lua53-0.5.2-1.src.rock\nsha256 709fd93a7dd6f8e941e7f0cb9e3eeba1f4de375302f1b19e14bb51aff23c5970  lua-MessagePack-0.5.2/COPYRIGHT\n"
  },
  {
    "path": "package/lua-messagepack/lua-messagepack.mk",
    "content": "################################################################################\n#\n# lua-messagepack\n#\n################################################################################\n\nLUA_MESSAGEPACK_VERSION_UPSTREAM = 0.5.2\nLUA_MESSAGEPACK_VERSION = $(LUA_MESSAGEPACK_VERSION_UPSTREAM)-1\nifeq ($(BR2_PACKAGE_LUA_5_3)$(BR2_PACKAGE_LUA_5_4),y)\nLUA_MESSAGEPACK_NAME_UPSTREAM = lua-MessagePack-lua53\nelse\nLUA_MESSAGEPACK_NAME_UPSTREAM = lua-MessagePack\nendif\nLUA_MESSAGEPACK_SUBDIR = lua-MessagePack-$(LUA_MESSAGEPACK_VERSION_UPSTREAM)\nLUA_MESSAGEPACK_LICENSE = MIT\nLUA_MESSAGEPACK_LICENSE_FILES = $(LUA_MESSAGEPACK_SUBDIR)/COPYRIGHT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-msgpack-native/Config.in",
    "content": "config BR2_PACKAGE_LUA_MSGPACK_NATIVE\n\tbool \"lua-msgpack-native\"\n\tdepends on BR2_PACKAGE_LUA_5_1 || BR2_PACKAGE_LUAJIT\n\thelp\n\t  This is a native, C language implementation of msgpack\n\t  (http://msgpack.org) library/protocol for Lua language\n\n\t  https://github.com/kengonakajima/lua-msgpack-native\n\ncomment \"lua-msgpack-native needs Lua 5.1 or LuaJIT\"\n\tdepends on !BR2_PACKAGE_LUA_5_1\n\tdepends on !BR2_PACKAGE_LUAJIT\n"
  },
  {
    "path": "package/lua-msgpack-native/lua-msgpack-native.hash",
    "content": "# locally computed\nsha256  025cf91d509fa3985869d18ef9b8eaeb875ff3c9fcf6467beeed6eab3bb35c93  lua-msgpack-native-41a91b994c70389dc9daa1a15678741d8ec41749.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/lua-msgpack-native/lua-msgpack-native.mk",
    "content": "################################################################################\n#\n# lua-msgpack-native\n#\n################################################################################\n\nLUA_MSGPACK_NATIVE_VERSION = 41a91b994c70389dc9daa1a15678741d8ec41749\nLUA_MSGPACK_NATIVE_SITE = $(call github,kengonakajima,lua-msgpack-native,$(LUA_MSGPACK_NATIVE_VERSION))\nLUA_MSGPACK_NATIVE_DEPENDENCIES = luainterpreter\nLUA_MSGPACK_NATIVE_LICENSE = Apache-2.0\nLUA_MSGPACK_NATIVE_LICENSE_FILES = LICENSE.txt\n\n# lua-msgpack-native uses the old Lua 5.0 API with luaL_reg, but it is\n# no longer provided by LuaJit 2.1, so we have to alias luaL_reg to\n# luaL_Reg.\ndefine LUA_MSGPACK_NATIVE_BUILD_CMDS\n\t$(TARGET_CC) $(TARGET_CFLAGS) -DluaL_reg=luaL_Reg -fPIC \\\n\t\t-shared -o $(@D)/msgpack.so $(@D)/mp.c\nendef\n\ndefine LUA_MSGPACK_NATIVE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 -D $(@D)/msgpack.so \\\n\t\t$(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)/msgpack.so\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/lua-periphery/Config.in",
    "content": "config BR2_PACKAGE_LUA_PERIPHERY\n\tbool \"lua-periphery\"\n\thelp\n\t  A library for GPIO, SPI, I2C, MMIO, and Serial peripheral I/O\n\t  interface access in userspace Linux with Lua.\n\n\t  https://github.com/vsergeev/lua-periphery\n"
  },
  {
    "path": "package/lua-periphery/lua-periphery.hash",
    "content": "# computed by luarocks/buildroot\nsha256 ff8a4d08f02356586fadfe47f01859ba28539cc42013836f79a032bf4ccc78b3  lua-periphery-1.1.1-1.src.rock\nsha256 7c60847b46f718e9651d1eca2f56bf6be09608cf08d130446a521eb8288c98e1  lua-periphery/LICENSE\n"
  },
  {
    "path": "package/lua-periphery/lua-periphery.mk",
    "content": "################################################################################\n#\n# lua-periphery\n#\n################################################################################\n\nLUA_PERIPHERY_VERSION = 1.1.1-1\nLUA_PERIPHERY_SUBDIR = lua-periphery\nLUA_PERIPHERY_LICENSE = MIT\nLUA_PERIPHERY_LICENSE_FILES = $(LUA_PERIPHERY_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-resty-http/Config.in",
    "content": "config BR2_PACKAGE_LUA_RESTY_HTTP\n\tbool \"lua-resty-http\"\n\thelp\n\t  Lua HTTP client cosocket driver for OpenResty / ngx_lua.\n\n\t  https://github.com/ledgetech/lua-resty-http\n"
  },
  {
    "path": "package/lua-resty-http/lua-resty-http.hash",
    "content": "# computed by luarocks/buildroot\nsha256 df913a055ddc2f029017602732c7a497225f4e0df1bcc6858e13f9f4d9524184  lua-resty-http-0.15-0.src.rock\nsha256 407e4b1412d8afa317dc703a1d318866c3de87d78899402125cbd90548c6057d  lua-resty-http/LICENSE\n"
  },
  {
    "path": "package/lua-resty-http/lua-resty-http.mk",
    "content": "################################################################################\n#\n# lua-resty-http\n#\n################################################################################\n\nLUA_RESTY_HTTP_VERSION = 0.15-0\nLUA_RESTY_HTTP_SUBDIR = lua-resty-http\nLUA_RESTY_HTTP_LICENSE = BSD-2-Clause\nLUA_RESTY_HTTP_LICENSE_FILES = $(LUA_RESTY_HTTP_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-rotas/Config.in",
    "content": "config BR2_PACKAGE_LUA_ROTAS\n\tbool \"lua-rotas\"\n\thelp\n\t  a web server router.\n\n\t  https://fperrad.frama.io/lua-Rotas\n"
  },
  {
    "path": "package/lua-rotas/lua-rotas.hash",
    "content": "# computed by luarocks/buildroot\nsha256 a947026be3552cbf676a0cef36a618111712257d306cbd9d340ed8895a4cbd2b  lua-rotas-0.2.1-1.src.rock\nsha256 ac8bb87b7b5e803ae27510b9c6fd284f1b00e741258bc59fc78d3bc107d96fbb  lua-Rotas-0.2.1/COPYRIGHT\n"
  },
  {
    "path": "package/lua-rotas/lua-rotas.mk",
    "content": "################################################################################\n#\n# lua-rotas\n#\n################################################################################\n\nLUA_ROTAS_VERSION = 0.2.1-1\nLUA_ROTAS_NAME_UPSTREAM = lua-Rotas\nLUA_ROTAS_LICENSE = MIT\nLUA_ROTAS_LICENSE_FILES = $(LUA_ROTAS_SUBDIR)/COPYRIGHT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-sailor/Config.in",
    "content": "config BR2_PACKAGE_LUA_SAILOR\n\tbool \"lua-sailor\"\n\tselect BR2_PACKAGE_CGILUA # runtime\n\tselect BR2_PACKAGE_LBASE64 # runtime\n\tselect BR2_PACKAGE_LUA_DATAFILE # runtime\n\tselect BR2_PACKAGE_LUA_VALUA # runtime\n\tselect BR2_PACKAGE_LUAFILESYSTEM # runtime\n\tselect BR2_PACKAGE_WSAPI_XAVANTE # runtime\n\tselect BR2_PACKAGE_XAVANTE # runtime\n\thelp\n\t  Sailor is a web framework written in Lua that follows the MVC\n\t  design pattern.\n\n\t  http://sailorproject.org/\n"
  },
  {
    "path": "package/lua-sailor/lua-sailor.hash",
    "content": "# computed by luarocks/buildroot\nsha256 4f7f43a7cf6c62712a521ebaf5f53aaf230039c7fb06480ae168c3aa036120bf  sailor-0.5-4.src.rock\nsha256 3a19bc44e1a653b39bcb1b91cc8058ac6b1cd1caf7e6cef93517fd559b189065  sailor/LICENSE\n"
  },
  {
    "path": "package/lua-sailor/lua-sailor.mk",
    "content": "################################################################################\n#\n# lua-sailor\n#\n################################################################################\n\nLUA_SAILOR_VERSION = 0.5-4\nLUA_SAILOR_NAME_UPSTREAM = Sailor\nLUA_SAILOR_SUBDIR = sailor\nLUA_SAILOR_LICENSE = MIT\nLUA_SAILOR_LICENSE_FILES = $(LUA_SAILOR_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-sdl2/0001-Do-not-reference-host-directory-for-headers.patch",
    "content": "From 07309a49ad6c3e18c8c84fe54f1fdb9e103c4cc5 Mon Sep 17 00:00:00 2001\nFrom: Francois Perrad <francois.perrad@gadz.org>\nDate: Sun, 22 Oct 2017 13:00:01 +0200\nSubject: [PATCH] Do not reference host directory for headers\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n---\n cmake/FindSDL2.cmake | 5 -----\n 1 file changed, 5 deletions(-)\n\ndiff --git a/cmake/FindSDL2.cmake b/cmake/FindSDL2.cmake\nindex 5cf4115..5e17919 100644\n--- a/cmake/FindSDL2.cmake\n+++ b/cmake/FindSDL2.cmake\n@@ -73,11 +73,6 @@ find_path(SDL2_INCLUDE_DIR SDL.h\n   PATH_SUFFIXES include/SDL2 include\n )\n \n-# On FreeBSD SDL depends on libiconv and SDL_stdinc.h includes iconv.h, which is\n-# located in ${LOCALBASE}/include. Append {LOCALBASE}/include to\n-# the SDL_INCLUDE_DIR, thus allow to build SDL apps out of box.\n-list(APPEND SDL2_INCLUDE_DIR /usr/local/include)\n-\n find_library(SDL_LIBRARY_TEMP\n   NAMES SDL2 SDL2-2.0\n   HINTS\n-- \n2.13.6\n\n"
  },
  {
    "path": "package/lua-sdl2/0002-CMakeLists-do-not-require-C.patch",
    "content": "From 5732174debfe027f7620af55c283060201f0ad03 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Thu, 2 Nov 2017 22:54:51 +0100\nSubject: [PATCH] CMakeLists: do not require C++\n\nThe project doesn't use C++, so don't let CMake check for a C++\ncompiler by explicitly specifying that this is a C-only project.\n\nSubmitted-upstream: https://github.com/Tangent128/luasdl2/pull/69\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n common/CMakeLists.txt    | 2 +-\n examples/CMakeLists.txt  | 2 +-\n tutorials/CMakeLists.txt | 2 +-\n 3 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/common/CMakeLists.txt b/common/CMakeLists.txt\nindex 9e19709..8cfb748 100644\n--- a/common/CMakeLists.txt\n+++ b/common/CMakeLists.txt\n@@ -15,7 +15,7 @@\n # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n \n-project(common)\n+project(common C)\n \n set(\n \tSOURCES\ndiff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt\nindex 572b3b7..4e3af4d 100644\n--- a/examples/CMakeLists.txt\n+++ b/examples/CMakeLists.txt\n@@ -16,7 +16,7 @@\n # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n #\n \n-project(examples)\n+project(examples C)\n \n # Option to enable / disable examples installation\n option(WITH_DOCS \"Installation of documentation and examples\" On)\ndiff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt\nindex adefbc9..6ec069e 100644\n--- a/tutorials/CMakeLists.txt\n+++ b/tutorials/CMakeLists.txt\n@@ -16,7 +16,7 @@\n # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n #\n \n-project(tutorials)\n+project(tutorials C)\n \n # Option to enable / disable examples installation\n option(WITH_DOCS \"Installation of tutorials\" On)\n-- \n2.13.6\n\n"
  },
  {
    "path": "package/lua-sdl2/Config.in",
    "content": "config BR2_PACKAGE_LUA_SDL2\n\tbool \"lua-sdl2\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on !BR2_PACKAGE_LUA_5_4\n\tselect BR2_PACKAGE_SDL2\n\thelp\n\t  Lua-SDL2 is a pure C binding of SDL2 to Lua 5.1, Lua 5.2,\n\t  Lua 5.3, and LuaJIT.\n\n\t  https://github.com/Tangent128/luasdl2\n\ncomment \"lua-sdl2 needs a toolchain w/ dynamic library, Lua <= 5.3\"\n\tdepends on BR2_STATIC_LIBS || BR2_PACKAGE_LUA_5_4\n"
  },
  {
    "path": "package/lua-sdl2/lua-sdl2.hash",
    "content": "# Locally calculated\nsha256  cee7875106062fbc00cf8acb3b2738e336e2327df73ede011968cb060c094bfb  lua-sdl2-2.0.5-6.0.tar.gz\nsha256  4f56a5b6943a8ff9611a39e7d4d88dba9ad314dcdf56c62a1425798a6e624494  LICENSE\n"
  },
  {
    "path": "package/lua-sdl2/lua-sdl2.mk",
    "content": "################################################################################\n#\n# lua-sdl2\n#\n################################################################################\n\nLUA_SDL2_VERSION = 2.0.5-6.0\nLUA_SDL2_SITE = $(call github,Tangent128,luasdl2,v$(LUA_SDL2_VERSION))\nLUA_SDL2_LICENSE = ISC\nLUA_SDL2_LICENSE_FILES = LICENSE\nLUA_SDL2_DEPENDENCIES = luainterpreter sdl2\n\nifeq ($(BR2_PACKAGE_LUAJIT),y)\nLUA_SDL2_LUAVER = JIT\nelse ifeq ($(BR2_PACKAGE_LUA_5_3),y)\nLUA_SDL2_LUAVER = 53\nelse\nLUA_SDL2_LUAVER = 51\nendif\n\nLUA_SDL2_CONF_OPTS += -DWITH_LUAVER=$(LUA_SDL2_LUAVER) -DLUA_INCLUDE_DIR=$(STAGING_DIR)/usr/include\n\nifeq ($(BR2_PACKAGE_SDL2_IMAGE),y)\nLUA_SDL2_DEPENDENCIES += sdl2_image\nelse\nLUA_SDL2_CONF_OPTS += -DWITH_IMAGE=Off\nendif\n\nifeq ($(BR2_PACKAGE_SDL2_MIXER),y)\nLUA_SDL2_DEPENDENCIES += sdl2_mixer\nelse\nLUA_SDL2_CONF_OPTS += -DWITH_MIXER=Off\nendif\n\nifeq ($(BR2_PACKAGE_SDL2_NET),y)\nLUA_SDL2_DEPENDENCIES += sdl2_net\nelse\nLUA_SDL2_CONF_OPTS += -DWITH_NET=Off\nendif\n\nifeq ($(BR2_PACKAGE_SDL2_TTF),y)\nLUA_SDL2_DEPENDENCIES += sdl2_ttf\nelse\nLUA_SDL2_CONF_OPTS += -DWITH_TTF=Off\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/lua-silva/Config.in",
    "content": "config BR2_PACKAGE_LUA_SILVA\n\tbool \"lua-silva\"\n\thelp\n\t  your string matcher expert.\n\n\t  https://fperrad.frama.io/lua-Silva\n"
  },
  {
    "path": "package/lua-silva/lua-silva.hash",
    "content": "# computed by luarocks/buildroot\nsha256 0e656c42c71b64285d4a375fa7b8b1a910b05c4ab6d30f5b427b078fff204e1f  lua-silva-0.1.8-1.src.rock\nsha256 5b59ffbfc12d9d1cb907dd65b0f16d3453e1a43cc018c6128a00b00e08f6c485  lua-Silva-0.1.8/COPYRIGHT\n"
  },
  {
    "path": "package/lua-silva/lua-silva.mk",
    "content": "################################################################################\n#\n# lua-silva\n#\n################################################################################\n\nLUA_SILVA_VERSION = 0.1.8-1\nLUA_SILVA_NAME_UPSTREAM = lua-Silva\nLUA_SILVA_LICENSE = MIT\nLUA_SILVA_LICENSE_FILES = $(LUA_SILVA_SUBDIR)/COPYRIGHT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-std-debug/Config.in",
    "content": "config BR2_PACKAGE_LUA_STD_DEBUG\n\tbool \"lua-std-debug\"\n\thelp\n\t  Manage an overall debug state, and associated hint\n\t  substates.\n\n\t  http://lua-stdlib.github.io/_debug\n"
  },
  {
    "path": "package/lua-std-debug/lua-std-debug.hash",
    "content": "# Locally calculated\nsha256 7f6b84283d4b78dafee17e7765dd5f1f8e75c3314169977f4dda0e7873616ce2  std._debug-1.0.1-1.src.rock\nsha256 034abdbbe9a13899c813509776d1e04af81bc58c2982b704c8b3663549504a31  _debug-1.0.1/LICENSE.md\n"
  },
  {
    "path": "package/lua-std-debug/lua-std-debug.mk",
    "content": "################################################################################\n#\n# lua-std-debug\n#\n################################################################################\n\nLUA_STD_DEBUG_VERSION_UPSTREAM = 1.0.1\nLUA_STD_DEBUG_VERSION = $(LUA_STD_DEBUG_VERSION_UPSTREAM)-1\nLUA_STD_DEBUG_NAME_UPSTREAM = std._debug\nLUA_STD_DEBUG_SUBDIR = _debug-$(LUA_STD_DEBUG_VERSION_UPSTREAM)\nLUA_STD_DEBUG_ROCKSPEC = $(LUA_STD_DEBUG_NAME_UPSTREAM)-$(LUA_STD_DEBUG_VERSION).rockspec\nLUA_STD_DEBUG_SOURCE = $(LUA_STD_DEBUG_NAME_UPSTREAM)-$(LUA_STD_DEBUG_VERSION).src.rock\nLUA_STD_DEBUG_LICENSE = MIT\nLUA_STD_DEBUG_LICENSE_FILES = $(LUA_STD_DEBUG_SUBDIR)/LICENSE.md\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-std-normalize/Config.in",
    "content": "config BR2_PACKAGE_LUA_STD_NORMALIZE\n\tbool \"lua-std-normalize\"\n\tselect BR2_PACKAGE_LUA_STD_DEBUG # runtime\n\thelp\n\t  This module can inject deterministic versions of core Lua\n\t  functions that do not behave identically across all\n\t  supported Lua implementations into your module's lexical\n\t  environment.  Each function is as thin and fast a version as\n\t  is possible in each Lua implementation, evaluating to the\n\t  Lua C implementation with no overhead when semantics allow.\n\n\t  https://lua-stdlib.github.io/normalize\n"
  },
  {
    "path": "package/lua-std-normalize/lua-std-normalize.hash",
    "content": "# computed by luarocks/buildroot\nsha256 3a040b6ca43297367c527e12c1aab37acab86289f9415ffb130544c48b17f802  std.normalize-2.0.3-1.src.rock\nsha256 9c9094f0cea86c2c62b893e59a78d5eaed69df0d7da24e122ef9753baeef0f04  normalize-2.0.3/LICENSE.md\n"
  },
  {
    "path": "package/lua-std-normalize/lua-std-normalize.mk",
    "content": "################################################################################\n#\n# lua-std-normalize\n#\n################################################################################\n\nLUA_STD_NORMALIZE_VERSION_UPSTREAM = 2.0.3\nLUA_STD_NORMALIZE_VERSION = $(LUA_STD_NORMALIZE_VERSION_UPSTREAM)-1\nLUA_STD_NORMALIZE_NAME_UPSTREAM = std.normalize\nLUA_STD_NORMALIZE_SUBDIR = normalize-$(LUA_STD_NORMALIZE_VERSION_UPSTREAM)\nLUA_STD_NORMALIZE_LICENSE = MIT\nLUA_STD_NORMALIZE_LICENSE_FILES = $(LUA_STD_NORMALIZE_SUBDIR)/LICENSE.md\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-stdlib/Config.in",
    "content": "config BR2_PACKAGE_LUA_STDLIB\n\tbool \"lua-stdlib\"\n\thelp\n\t  lua-stdlib is a library of modules for common programming\n\t  tasks, including list, table and functional operations,\n\t  objects, pickling, pretty-printing and command-line option\n\t  parsing.\n\n\t  https://github.com/lua-stdlib/lua-stdlib/\n"
  },
  {
    "path": "package/lua-stdlib/lua-stdlib.hash",
    "content": "# computed by luarocks/buildroot\nsha256 67eadaccbb2b6037ea70129f9616da49eaeeaf1477652a8e2cc77740286531cf  stdlib-41.2.2-1.src.rock\nsha256 d3177e0cd97e6ef7c459aa2c6a85f53d9b4ff091f7f296d4ed8bfaf713b6fea2  lua-stdlib-release-v41.2.2/COPYING\n"
  },
  {
    "path": "package/lua-stdlib/lua-stdlib.mk",
    "content": "################################################################################\n#\n# lua-stdlib\n#\n################################################################################\n\nLUA_STDLIB_VERSION_UPSTREAM = 41.2.2\nLUA_STDLIB_VERSION = $(LUA_STDLIB_VERSION_UPSTREAM)-1\nLUA_STDLIB_NAME_UPSTREAM = stdlib\nLUA_STDLIB_SUBDIR = lua-stdlib-release-v$(LUA_STDLIB_VERSION_UPSTREAM)\nLUA_STDLIB_LICENSE = MIT\nLUA_STDLIB_LICENSE_FILES = $(LUA_STDLIB_SUBDIR)/COPYING\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-testmore/Config.in",
    "content": "config BR2_PACKAGE_LUA_TESTMORE\n\tbool \"lua-testmore\"\n\thelp\n\t  an Unit Testing Framework.\n\n\t  https://fperrad.frama.io/lua-TestMore/\n"
  },
  {
    "path": "package/lua-testmore/lua-testmore.hash",
    "content": "# computed by luarocks/buildroot\nsha256 b3e57955888aba3974d6f5a21219214e2803a38e4623671f7d9d9e0f1851e608  lua-testmore-0.3.6-1.src.rock\nsha256 37a3afb014325b98f0ad919cb40bc9d5a948120e5260e75b9d00c198d350da6d  lua-TestMore-0.3.6/COPYRIGHT\n"
  },
  {
    "path": "package/lua-testmore/lua-testmore.mk",
    "content": "################################################################################\n#\n# lua-testmore\n#\n################################################################################\n\nLUA_TESTMORE_VERSION = 0.3.6-1\nLUA_TESTMORE_NAME_UPSTREAM = lua-TestMore\nLUA_TESTMORE_LICENSE = MIT\nLUA_TESTMORE_LICENSE_FILES = $(LUA_TESTMORE_SUBDIR)/COPYRIGHT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-utf8/Config.in",
    "content": "config BR2_PACKAGE_LUA_UTF8\n\tbool \"lua-utf8\"\n\thelp\n\t  This module adds UTF-8 support to Lua.\n\t  It's compatible with Lua \"string\" module.\n\n\t  http://github.com/starwing/luautf8\n"
  },
  {
    "path": "package/lua-utf8/lua-utf8.hash",
    "content": "# computed by luarocks/buildroot\nsha256 88c456bc0f00d28201b33551d83fa6e5c3ae6025aebec790c37afb317290e4fa  luautf8-0.1.3-1.src.rock\nsha256 74506285923bcc3e58aaca1b774db26461021783d02b2dc26bafcaa02ef7a00b  luautf8-0.1.3/LICENSE\n"
  },
  {
    "path": "package/lua-utf8/lua-utf8.mk",
    "content": "################################################################################\n#\n# lua-utf8\n#\n################################################################################\n\nLUA_UTF8_VERSION = 0.1.3-1\nLUA_UTF8_NAME_UPSTREAM = luautf8\nLUA_UTF8_LICENSE = MIT\nLUA_UTF8_LICENSE_FILES = $(LUA_UTF8_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-valua/Config.in",
    "content": "config BR2_PACKAGE_LUA_VALUA\n\tbool \"lua-valua\"\n\thelp\n\t  This module provides tools for validating values, very useful\n\t  in forms, but also usable elsewhere. It works in appended\n\t  chains. Create a new validation object and start chaining\n\t  your test functions.\n\n\t  https://github.com/sailorproject/valua\n"
  },
  {
    "path": "package/lua-valua/lua-valua.hash",
    "content": "# computed by luarocks/buildroot\nsha256 bff39692fd2ac3590fd814aa1b1ca33e5d5971092955309aa8424b02b88ce1a3  valua-0.3-1.src.rock\nsha256 3444c2e739c88e41e327c6cd15e4a50fea8988570642bad6e6a43d50a7f7961f  valua/LICENSE\n"
  },
  {
    "path": "package/lua-valua/lua-valua.mk",
    "content": "################################################################################\n#\n# lua-valua\n#\n################################################################################\n\nLUA_VALUA_VERSION = 0.3-1\nLUA_VALUA_NAME_UPSTREAM = valua\nLUA_VALUA_SUBDIR = valua\nLUA_VALUA_LICENSE = MIT\nLUA_VALUA_LICENSE_FILES = $(LUA_VALUA_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lua-zlib/Config.in",
    "content": "config BR2_PACKAGE_LUA_ZLIB\n\tbool \"lua-zlib\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Simple streaming interface to zlib for Lua.\n\t  Consists of two functions: inflate and deflate.\n\t  Both functions return \"stream functions\" (takes a buffer\n\t  of input and returns a buffer of output).\n\n\t  https://github.com/brimworks/lua-zlib\n"
  },
  {
    "path": "package/lua-zlib/lua-zlib.hash",
    "content": "# computed by luarocks/buildroot\nsha256 42436ba2b78c9a2d515d6da59ceb12cdea7f84c9ce3c859d91addb42badd4061  lua-zlib-1.2-0.src.rock\n"
  },
  {
    "path": "package/lua-zlib/lua-zlib.mk",
    "content": "################################################################################\n#\n# lua-zlib\n#\n################################################################################\n\nLUA_ZLIB_VERSION = 1.2-0\nLUA_ZLIB_SUBDIR = lua-zlib\nLUA_ZLIB_LICENSE = MIT\nLUA_ZLIB_DEPENDENCIES = zlib\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/luabitop/Config.in",
    "content": "config BR2_PACKAGE_LUABITOP\n\tbool \"luabitop\"\n\tdepends on BR2_PACKAGE_LUA_5_1\n\thelp\n\t  Lua BitOp is a C extension module for Lua 5.1/5.2 which adds\n\t  bitwise operations on numbers.\n\n\t  http://bitop.luajit.org\n\ncomment \"luabitop needs Lua 5.1\"\n\tdepends on !BR2_PACKAGE_LUA_5_1\n"
  },
  {
    "path": "package/luabitop/luabitop.hash",
    "content": "# computed by luarocks/buildroot\nsha256  fc7a8065a57462ee13bed7f95b0ab13f94ecd1bf846108c61ccf2c75548af26e  luabitop-1.0.2-1.src.rock\n# Locally calcuated\nsha256  25e331120d0c2f95fa2ac6e439ca920f0a4362c366a4c7382d843113743a3ba5  LuaBitOp-1.0.2/README\n"
  },
  {
    "path": "package/luabitop/luabitop.mk",
    "content": "################################################################################\n#\n# luabitop\n#\n################################################################################\n\nLUABITOP_VERSION = 1.0.2-1\nLUABITOP_NAME_UPSTREAM = LuaBitOp\nLUABITOP_LICENSE = MIT\nLUABITOP_LICENSE_FILES = $(LUABITOP_SUBDIR)/README\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/luadbi/Config.in",
    "content": "config BR2_PACKAGE_LUADBI\n\tbool \"luadbi\"\n\thelp\n\t  LuaDBI is a database interface library for Lua.\n\t  It is designed to provide a RDBMS agnostic API for handling\n\t  database operations. LuaDBI also provides support for\n\t  prepared statement handles, placeholders and bind parameters\n\t  for all database operations.\n\n\t  https://github.com/mwild1/luadbi\n"
  },
  {
    "path": "package/luadbi/luadbi.hash",
    "content": "# computed by luarocks/buildroot\nsha256 9ebbbaf4ea1f48628341e9ff3c1de10a57200c02453734f41b8016b0fc7b4956  luadbi-0.7.2-1.src.rock\nsha256 988d73cc2e56f972e8177091e084855fc2904d0fafcfe5c4e02864f25ce2b928  luadbi/COPYING\n"
  },
  {
    "path": "package/luadbi/luadbi.mk",
    "content": "################################################################################\n#\n# luadbi\n#\n################################################################################\n\nLUADBI_VERSION = 0.7.2-1\nLUADBI_SUBDIR = luadbi\nLUADBI_LICENSE = MIT\nLUADBI_LICENSE_FILES = $(LUADBI_SUBDIR)/COPYING\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/luadbi-sqlite3/Config.in",
    "content": "config BR2_PACKAGE_LUADBI_SQLITE3\n\tbool \"luadbi-sqlite3\"\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_LUADBI # runtime\n\thelp\n\t  LuaDBI is a database interface library for Lua.\n\t  And this is the SQLite3 backend.\n\n\t  https://github.com/mwild1/luadbi\n"
  },
  {
    "path": "package/luadbi-sqlite3/luadbi-sqlite3.hash",
    "content": "# computed by luarocks/buildroot\nsha256 c5b043db43941a3c6e43d3e3699236846ed6d03a6c4cb12fa1a497f965138d9f  luadbi-sqlite3-0.7.2-1.src.rock\nsha256 988d73cc2e56f972e8177091e084855fc2904d0fafcfe5c4e02864f25ce2b928  luadbi/COPYING\n"
  },
  {
    "path": "package/luadbi-sqlite3/luadbi-sqlite3.mk",
    "content": "################################################################################\n#\n# luadbi-sqlite3\n#\n################################################################################\n\nLUADBI_SQLITE3_VERSION = 0.7.2-1\nLUADBI_SQLITE3_SUBDIR = luadbi\nLUADBI_SQLITE3_LICENSE = MIT\nLUADBI_SQLITE3_LICENSE_FILES = $(LUADBI_SQLITE3_SUBDIR)/COPYING\nLUADBI_SQLITE3_DEPENDENCIES = sqlite\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/luaexpat/0001-restore-getcurrentbytecount.patch",
    "content": "From 77cb691f781918908dfe34785f00a5ff75d5cc20 Mon Sep 17 00:00:00 2001\nFrom: Francois Perrad <francois.perrad@gadz.org>\nDate: Sat, 16 Feb 2019 15:56:00 +0100\nSubject: [PATCH] restore getcurrentbytecount\n\nsee https://github.com/tomasguisasola/luaexpat/issues/3\n\nFetch from: https://github.com/tomasguisasola/luaexpat/commit/0926f2d705109b7d35b721344264b39c1169e0de\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n---\n src/lxplib.c | 7 +++++++\n 1 file changed, 7 insertions(+)\n\ndiff --git a/luaexpat-1.3.3/src/lxplib.c b/luaexpat-1.3.3/src/lxplib.c\nindex 7726913..35bec3c 100644\n--- a/luaexpat-1.3.3/src/lxplib.c\n+++ b/luaexpat-1.3.3/src/lxplib.c\n@@ -538,11 +538,18 @@ static int lxp_stop (lua_State *L) {\n   return 1;\n }\n \n+static int lxp_getcurrentbytecount (lua_State* L) {\n+  lxp_userdata *xpu = checkparser(L, 1);\n+  lua_pushinteger(L, XML_GetCurrentByteCount(xpu->parser));\n+  return 1;\n+}\n+\n static const luaL_Reg lxp_meths[] = {\n   {\"parse\", lxp_parse},\n   {\"close\", lxp_close},\n   {\"__gc\", parser_gc},\n   {\"pos\", lxp_pos},\n+  {\"getcurrentbytecount\", lxp_getcurrentbytecount},\n   {\"setencoding\", lxp_setencoding},\n   {\"getcallbacks\", getcallbacks},\n   {\"getbase\", getbase},\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/luaexpat/Config.in",
    "content": "config BR2_PACKAGE_LUAEXPAT\n\tbool \"luaexpat\"\n\tselect BR2_PACKAGE_EXPAT\n\thelp\n\t  LuaExpat is a SAX XML parser based on the Expat library.\n\n\t  http://www.keplerproject.org/luaexpat/\n"
  },
  {
    "path": "package/luaexpat/luaexpat.hash",
    "content": "# computed by luarocks/buildroot\nsha256 b55908fcd7df490a59aab25284460add8283f1c6b94ab584900fe3e49775172a  luaexpat-1.3.3-1.src.rock\nsha256 7f5cb0c1750babcbb09637b7f0ff34972d51cf23b7f413bef902b47aa65febcd  luaexpat-1.3.3/LICENSE\n"
  },
  {
    "path": "package/luaexpat/luaexpat.mk",
    "content": "################################################################################\n#\n# luaexpat\n#\n################################################################################\n\nLUAEXPAT_VERSION = 1.3.3-1\nLUAEXPAT_LICENSE = MIT\nLUAEXPAT_LICENSE_FILES = $(LUAEXPAT_SUBDIR)/LICENSE\nLUAEXPAT_DEPENDENCIES = expat\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/luaexpatutils/Config.in",
    "content": "config BR2_PACKAGE_LUAEXPATUTILS\n\tbool \"luaexpatutils\"\n\tselect BR2_PACKAGE_LUAEXPAT\n\thelp\n\t  lxp.doc is a module that provides useful features for working\n\t  with XML formats in LOM format as used by the LuaExpat project\n\t  from Kepler.\n\n\t  https://github.com/stevedonovan/LuaExpatUtils\n"
  },
  {
    "path": "package/luaexpatutils/luaexpatutils.hash",
    "content": "# Locally calculated\nsha256 9b50bef94a6ddb6e6d4fffd5392f5c53d15e1a048966b559c4f8eda5e84d4517  luaexpatutils-88c228365b084224c911d34aff06002634b38b50.tar.gz\n"
  },
  {
    "path": "package/luaexpatutils/luaexpatutils.mk",
    "content": "################################################################################\n#\n# luaexpatutils\n#\n################################################################################\n\nLUAEXPATUTILS_VERSION = 88c228365b084224c911d34aff06002634b38b50\nLUAEXPATUTILS_SITE = $(call github,stevedonovan,LuaExpatUtils,$(LUAEXPATUTILS_VERSION))\nLUAEXPATUTILS_LICENSE = Public Domain\nLUAEXPATUTILS_DEPENDENCIES = luaexpat\n\ndefine LUAEXPATUTILS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/lua/doc.lua \\\n\t\t$(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)/lxp/doc.lua\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/luafilesystem/Config.in",
    "content": "config BR2_PACKAGE_LUAFILESYSTEM\n\tbool \"luafilesystem\"\n\thelp\n\t  LuaFileSystem offers a portable way to access\n\t  the underlying directory structure and file attributes.\n\n\t  http://keplerproject.github.com/luafilesystem/\n"
  },
  {
    "path": "package/luafilesystem/luafilesystem.hash",
    "content": "# computed by luarocks/buildroot\nsha256 576270a55752894254c2cba0d49d73595d37ec4ea8a75e557fdae7aff80e19cf  luafilesystem-1.8.0-1.src.rock\nsha256 beb2c9eed6466d572c3888028a77421206053a3c023429cbd69e5015badba842  luafilesystem/LICENSE\n"
  },
  {
    "path": "package/luafilesystem/luafilesystem.mk",
    "content": "################################################################################\n#\n# luafilesystem\n#\n################################################################################\n\nLUAFILESYSTEM_VERSION = 1.8.0-1\nLUAFILESYSTEM_SUBDIR = luafilesystem\nLUAFILESYSTEM_LICENSE = MIT\nLUAFILESYSTEM_LICENSE_FILES = $(LUAFILESYSTEM_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/luainterpreter/Config.in",
    "content": "config BR2_PACKAGE_HAS_LUAINTERPRETER\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_LUAINTERPRETER\n\tstring\n\tdepends on BR2_PACKAGE_HAS_LUAINTERPRETER\n\nconfig BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION\n\tstring\n\tdefault \"5.1\" if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1\n\tdefault \"5.3\" if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_3\n\tdefault \"5.4\" if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_4\n\nconfig BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1\n\tbool\n\nconfig BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_3\n\tbool\n\nconfig BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_4\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_HOST_LUAINTERPRETER\n\tstring\n\tdefault \"host-lua\"\n"
  },
  {
    "path": "package/luainterpreter/luainterpreter.mk",
    "content": "################################################################################\n#\n# luainterpreter\n#\n################################################################################\n\nLUAINTERPRETER_ABIVER = $(call qstrip,$(BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION))\n\n# Lua packages often install documentation, clean that up globally\ndefine LUAINTERPRETER_REMOVE_DOC\n\trm -rf $(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)/doc\nendef\n\nLUAINTERPRETER_TARGET_FINALIZE_HOOKS += LUAINTERPRETER_REMOVE_DOC\n\n$(eval $(virtual-package))\n$(eval $(host-virtual-package))\n\nLUA_RUN = $(HOST_DIR)/bin/lua\n"
  },
  {
    "path": "package/luajit/0001-no-bin-symlink.patch",
    "content": "Do not use a symlink for the binary, simply name it luajit\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/Makefile\n===================================================================\n--- a/Makefile\n+++ b/Makefile\n@@ -44,8 +44,7 @@\n INSTALL_MAN= $(INSTALL_SHARE)/man/man1\n INSTALL_PKGCONFIG= $(INSTALL_LIB)/pkgconfig\n \n-INSTALL_TNAME= luajit-$(VERSION)\n-INSTALL_TSYMNAME= luajit\n+INSTALL_TNAME= luajit\n INSTALL_ANAME= libluajit-$(ABIVER).a\n INSTALL_SOSHORT1= libluajit-$(ABIVER).so\n INSTALL_SOSHORT2= libluajit-$(ABIVER).so.$(MAJVER)\n@@ -60,7 +59,6 @@\n INSTALL_SHORT1= $(INSTALL_LIB)/$(INSTALL_SOSHORT1)\n INSTALL_SHORT2= $(INSTALL_LIB)/$(INSTALL_SOSHORT2)\n INSTALL_T= $(INSTALL_BIN)/$(INSTALL_TNAME)\n-INSTALL_TSYM= $(INSTALL_BIN)/$(INSTALL_TSYMNAME)\n INSTALL_PC= $(INSTALL_PKGCONFIG)/$(INSTALL_PCNAME)\n \n INSTALL_DIRS= $(INSTALL_BIN) $(INSTALL_LIB) $(INSTALL_INC) $(INSTALL_MAN) \\\n"
  },
  {
    "path": "package/luajit/0002-install-inc.patch",
    "content": "Install includes like lua's ones\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/Makefile\n===================================================================\n--- a/Makefile\n+++ b/Makefile\n@@ -33,7 +33,7 @@\n INSTALL_BIN=   $(DPREFIX)/bin\n INSTALL_LIB=   $(DPREFIX)/$(MULTILIB)\n INSTALL_SHARE= $(DPREFIX)/share\n-INSTALL_INC=   $(DPREFIX)/include/luajit-$(MAJVER).$(MINVER)\n+INSTALL_INC=   $(DPREFIX)/include\n \n INSTALL_LJLIBD= $(INSTALL_SHARE)/luajit-$(VERSION)\n INSTALL_JITLIB= $(INSTALL_LJLIBD)/jit\n"
  },
  {
    "path": "package/luajit/Config.in",
    "content": "config BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_arm || BR2_armeb || BR2_aarch64\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if (BR2_mips || BR2_mipsel) && !BR2_MIPS_SOFT_FLOAT \\\n\t\t&& !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6\n\tdefault y if BR2_powerpc\n\t# -m32 flag is used for 32bit builds and host-luajit has\n\t# limited architecture support\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\t# Building for 64-bit target requires a 64-bit host\n\tdepends on !BR2_ARCH_IS_64 || BR2_HOSTARCH = \"x86_64\"\n\nconfig BR2_PACKAGE_LUAJIT\n\tbool \"luajit\"\n\tdepends on !BR2_STATIC_LIBS # dlopen\n\t# Luajit is only available for some target architectures, and\n\t# has some complexity wrt 32/64. See luajit.mk for details.\n\tdepends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS\n\t# luajit.mk uses the \"-m32\" compiler option to build 32bit\n\t# binaries, so check if that option is supported. See\n\t# luajit.mk for details.\n\tselect BR2_PACKAGE_HAS_LUAINTERPRETER\n\tselect BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1\n\tselect BR2_HOSTARCH_NEEDS_IA32_COMPILER if !BR2_ARCH_IS_64\n\thelp\n\t  LuaJIT implements the full set of language features defined\n\t  by Lua 5.1. The virtual machine (VM) is API- and\n\t  ABI-compatible to the standard Lua interpreter and can be\n\t  deployed as a drop-in replacement.\n\n\t  https://luajit.org/luajit.html\n\nif BR2_PACKAGE_LUAJIT\n\nconfig BR2_PACKAGE_PROVIDES_LUAINTERPRETER\n\tdefault \"luajit\"\n\nconfig BR2_PACKAGE_LUAJIT_COMPAT52\n\tbool \"Lua 5.2 compatibility\"\n\thelp\n\t  Compile with Lua 5.2 compatibility.\n\nendif\n\ncomment \"luajit needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/luajit/luajit.hash",
    "content": "# Locally calculated\nsha256  b1b19f92451a661ba1167ee0b259299616cb3a1cdaf5ab05d7ccffaffeb4a0fb  luajit-05f1984e1a862e4b3d3c3b370c773492e2edf84a.tar.gz\n\n# Locally calculated\nsha256  43fc251179d900f9948e51dd3cc93733d1219f2db060faaa0c8100ad054f54d8  COPYRIGHT\n"
  },
  {
    "path": "package/luajit/luajit.mk",
    "content": "################################################################################\n#\n# luajit\n#\n################################################################################\n\nLUAJIT_VERSION = 05f1984e1a862e4b3d3c3b370c773492e2edf84a\nLUAJIT_SITE = $(call github,LuaJIT,LuaJIT,$(LUAJIT_VERSION))\nLUAJIT_LICENSE = MIT\nLUAJIT_LICENSE_FILES = COPYRIGHT\n\nLUAJIT_INSTALL_STAGING = YES\n\nLUAJIT_PROVIDES = luainterpreter\n\nifeq ($(BR2_PACKAGE_LUAJIT_COMPAT52),y)\nLUAJIT_XCFLAGS += -DLUAJIT_ENABLE_LUA52COMPAT\nendif\n\n# The luajit build procedure requires the host compiler to have the\n# same bitness as the target compiler. Therefore, on a x86 build\n# machine, we can't build luajit for x86_64, which is checked in\n# Config.in. When the target is a 32 bits target, we pass -m32 to\n# ensure that even on 64 bits build machines, a compiler of the same\n# bitness is used. Of course, this assumes that the 32 bits multilib\n# libraries are installed.\nifeq ($(BR2_ARCH_IS_64),y)\nLUAJIT_HOST_CC = $(HOSTCC)\n# There is no LUAJIT_ENABLE_GC64 option.\nelse\nLUAJIT_HOST_CC = $(HOSTCC) -m32\nLUAJIT_XCFLAGS += -DLUAJIT_DISABLE_GC64\nendif\n\n# We unfortunately can't use TARGET_CONFIGURE_OPTS, because the luajit\n# build system uses non conventional variable names.\ndefine LUAJIT_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) PREFIX=\"/usr\" \\\n\t\tSTATIC_CC=\"$(TARGET_CC)\" \\\n\t\tDYNAMIC_CC=\"$(TARGET_CC) -fPIC\" \\\n\t\tTARGET_LD=\"$(TARGET_CC)\" \\\n\t\tTARGET_AR=\"$(TARGET_AR) rcus\" \\\n\t\tTARGET_STRIP=true \\\n\t\tTARGET_CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\tTARGET_LDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\t\tHOST_CC=\"$(LUAJIT_HOST_CC)\" \\\n\t\tHOST_CFLAGS=\"$(HOST_CFLAGS)\" \\\n\t\tHOST_LDFLAGS=\"$(HOST_LDFLAGS)\" \\\n\t\tBUILDMODE=dynamic \\\n\t\tXCFLAGS=\"$(LUAJIT_XCFLAGS)\" \\\n\t\t-C $(@D) amalg\nendef\n\ndefine LUAJIT_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) PREFIX=\"/usr\" DESTDIR=\"$(STAGING_DIR)\" LDCONFIG=true -C $(@D) install\nendef\n\ndefine LUAJIT_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) PREFIX=\"/usr\" DESTDIR=\"$(TARGET_DIR)\" LDCONFIG=true -C $(@D) install\nendef\n\ndefine LUAJIT_INSTALL_SYMLINK\n\tln -fs luajit $(TARGET_DIR)/usr/bin/lua\nendef\nLUAJIT_POST_INSTALL_TARGET_HOOKS += LUAJIT_INSTALL_SYMLINK\n\n# host-efl package needs host-luajit to be linked dynamically.\ndefine HOST_LUAJIT_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) PREFIX=\"$(HOST_DIR)\" BUILDMODE=dynamic \\\n\t\tTARGET_LDFLAGS=\"$(HOST_LDFLAGS)\" \\\n\t\tXCFLAGS=\"$(LUAJIT_XCFLAGS)\" \\\n\t\t-C $(@D) amalg\nendef\n\ndefine HOST_LUAJIT_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) PREFIX=\"$(HOST_DIR)\" LDCONFIG=true -C $(@D) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/luajson/Config.in",
    "content": "config BR2_PACKAGE_LUAJSON\n\tbool \"luajson\"\n\tselect BR2_PACKAGE_LPEG # runtime\n\thelp\n\t  LuaJSON is a customizable JSON decoder/encoder\n\t  using LPEG for parsing.\n\n\t  http://github.com/harningt/luajson\n"
  },
  {
    "path": "package/luajson/luajson.hash",
    "content": "# computed by luarocks/buildroot\nsha256 28a5928cf2e4fd79fa9a9aceaef5ebf1dccb1146489b7de4c2726f561700f01c  luajson-1.3.4-1.src.rock\nsha256 87565fca189b70f2e119b2a99e5e92a7aaab9f2eb05228b56b88e6c2e2f98bcd  luajson/LICENSE\n"
  },
  {
    "path": "package/luajson/luajson.mk",
    "content": "################################################################################\n#\n# luajson\n#\n################################################################################\n\nLUAJSON_VERSION = 1.3.4-1\nLUAJSON_SUBDIR = luajson\nLUAJSON_LICENSE = MIT\nLUAJSON_LICENSE_FILES = $(LUAJSON_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lualdap/Config.in",
    "content": "config BR2_PACKAGE_LUALDAP\n\tbool \"lualdap\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR # openldap\n\tdepends on BR2_USE_MMU # openldap\n\tselect BR2_PACKAGE_OPENLDAP\n\thelp\n\t  LuaLDAP is a simple interface from Lua to an LDAP client,\n\t  in fact it is a bind to OpenLDAP client.\n\n\t  https://lualdap.github.io/lualdap/\n\ncomment \"lualdap needs a toolchain w/ wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/lualdap/lualdap.hash",
    "content": "# computed by luarocks/buildroot\nsha256 49c253f540187c61850c856b8e70e45dca904b81720a760f6a94e4eb474958ad  lualdap-1.3.0-1.src.rock\nsha256 b9b75da18d1e1147ec47bff508ffdce831da07dc371891b9057cf1c422660af4  lualdap/docs/license.md\n"
  },
  {
    "path": "package/lualdap/lualdap.mk",
    "content": "################################################################################\n#\n# lualdap\n#\n################################################################################\n\nLUALDAP_VERSION = 1.3.0-1\nLUALDAP_SUBDIR = lualdap\nLUALDAP_LICENSE = MIT\nLUALDAP_LICENSE_FILES = $(LUALDAP_SUBDIR)/docs/license.md\nLUALDAP_DEPENDENCIES = openldap\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/lualogging/Config.in",
    "content": "config BR2_PACKAGE_LUALOGGING\n\tbool \"lualogging\"\n\thelp\n\t  LuaLogging provides a simple API to use logging features in\n\t  Lua. Its design was based on log4j. LuaLogging currently\n\t  supports, through the use of appenders, console, file, rolling\n\t  file, email, socket and SQL outputs.\n\n\t  https://lunarmodules.github.io/lualogging/\n"
  },
  {
    "path": "package/lualogging/lualogging.hash",
    "content": "# computed by luarocks/buildroot\nsha256 70451dbec500dbc760f0eae666a10b19a0ba9bcbfa5dd8d3134908e5ae6d28b1  lualogging-1.5.1-1.src.rock\nsha256 4d95b123e667a13615f567a829aa39211dd55b0b48c9f247bf3fcc5c0b485da7  lualogging/COPYRIGHT\n"
  },
  {
    "path": "package/lualogging/lualogging.mk",
    "content": "################################################################################\n#\n# lualogging\n#\n################################################################################\n\nLUALOGGING_VERSION = 1.5.1-1\nLUALOGGING_SUBDIR = lualogging\nLUALOGGING_LICENSE = MIT\nLUALOGGING_LICENSE_FILES = $(LUALOGGING_SUBDIR)/COPYRIGHT\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/luaossl/Config.in",
    "content": "config BR2_PACKAGE_LUAOSSL\n\tbool \"luaossl\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  luaossl is a comprehensive binding to OpenSSL for Lua 5.1,\n\t  5.2, and later.\n\n\t  It includes support for certificate and key management,\n\t  key generation, signature verification, and deep bindings\n\t  to the distinguished name, alternative name, and X.509v3\n\t  extension interfaces. It also binds OpenSSL's bignum, message\n\t  digest, HMAC, cipher, and CSPRNG interfaces.\n\n\t  http://25thandclement.com/~william/projects/luaossl.html\n\ncomment \"luaossl needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/luaossl/luaossl.hash",
    "content": "# computed by luarocks/buildroot\nsha256 ea6d624e557939e30b93355dd1dc11465e81aa38a5542ab3c04b48608ac3cd78  luaossl-20200709-0.src.rock\nsha256 7bd585fba3ae52943e0915e4c8ca049acde9f1e5cea101ef6b294427c8f0ee7d  luaossl-rel-20200709/LICENSE\n"
  },
  {
    "path": "package/luaossl/luaossl.mk",
    "content": "################################################################################\n#\n# luaossl\n#\n################################################################################\n\nLUAOSSL_VERSION_UPSTREAM = 20200709\nLUAOSSL_VERSION = $(LUAOSSL_VERSION_UPSTREAM)-0\nLUAOSSL_SUBDIR = luaossl-rel-$(LUAOSSL_VERSION_UPSTREAM)\nLUAOSSL_LICENSE = MIT\nLUAOSSL_LICENSE_FILES = $(LUAOSSL_SUBDIR)/LICENSE\nLUAOSSL_DEPENDENCIES = openssl\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/luaposix/Config.in",
    "content": "config BR2_PACKAGE_LUAPOSIX\n\tbool \"luaposix\"\n\t# \"bit32\" is included in Lua 5.2+. luajit has an equivalent\n\t# \"bit\" module, but since it has a different name, luaposix\n\t# doesn't find it.\n\tselect BR2_PACKAGE_LUA_BIT32 if BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1 # runtime\n\thelp\n\t  This is a POSIX binding for LuaJIT, Lua 5.1 through 5.4;\n\t  like most libraries it simply binds to C APIs on the\n\t  underlying system, so it won't work on non-POSIX systems.\n\t  However, it does try to detect the level of POSIX conformance\n\t  of the underlying system and bind only available APIs.\n\n\t  https://github.com/luaposix/luaposix\n"
  },
  {
    "path": "package/luaposix/luaposix.hash",
    "content": "# Locally calculated\nsha256  1b5c48d2abd59de0738d1fc1e6204e44979ad2a1a26e8e22a2d6215dd502c797  luaposix-35.1.tar.gz\nsha256  f50bc0f3197523b1709f31707425f2de95f8a45534b081a6b564179ab059e850  LICENSE\n"
  },
  {
    "path": "package/luaposix/luaposix.mk",
    "content": "################################################################################\n#\n# luaposix\n#\n################################################################################\n\nLUAPOSIX_VERSION = 35.1\nLUAPOSIX_SITE = $(call github,luaposix,luaposix,v$(LUAPOSIX_VERSION))\nLUAPOSIX_LICENSE = MIT\nLUAPOSIX_LICENSE_FILES = LICENSE\nLUAPOSIX_DEPENDENCIES = luainterpreter host-lua\n\ndefine LUAPOSIX_BUILD_CMDS\n\t(cd $(@D); \\\n\t\t$(LUA_RUN) build-aux/luke \\\n\t\tCC=\"$(TARGET_CC)\" \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\tLUA_INCDIR=$(STAGING_DIR)/usr/include \\\n\t)\nendef\n\ndefine LUAPOSIX_INSTALL_TARGET_CMDS\n\t(cd $(@D); \\\n\t\t$(LUA_RUN) build-aux/luke install \\\n\t\tINST_LIBDIR=\"$(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)\" \\\n\t\tINST_LUADIR=\"$(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)\" \\\n\t)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/luarocks/buildroot.lua",
    "content": "\n--- Module implementing the LuaRocks \"buildroot\" command.\nlocal buildroot = {}\n\nlocal dir = require(\"luarocks.dir\")\nlocal fs = require(\"luarocks.fs\")\nlocal util = require(\"luarocks.util\")\nlocal queries = require(\"luarocks.queries\")\nlocal search = require(\"luarocks.search\")\nlocal download = require(\"luarocks.download\")\nlocal fetch = require(\"luarocks.fetch\")\n\nfunction buildroot.add_to_parser(parser)\n   local cmd = parser:command(\"buildroot\", [[\nThis addon generates Buildroot package files of a rock.\nFirst argument is the name of a rock, the second argument is optional\nand needed when Buildroot uses another name (usually prefixed by lua-).\nFiles are generated with the source content of the rock and more\nespecially the rockspec. So, the rock is downloaded and unpacked.\n]], util.see_also())\n      :summary(\"generate buildroot package files of a rock.\")\n\n   cmd:argument(\"rockname\", \"the name of a rock to be fetched and unpacked.\")\n   cmd:argument(\"brname\", \"the name used by Buildroot.\")\n      :args(\"?\")\nend\n\nlocal function brname (name)\n   return name:upper():gsub('-', '_')\nend\n\nlocal function brlicense (license)\n   if license:match('MIT/X') then\n      return 'MIT'\n   end\n   return license\nend\n\nlocal function wrap (txt, max)\n   local lines = {}\n   local line = ''\n   for word in txt:gmatch('(%S+)') do\n      if line:len() + word:len() > max - 1 then\n          lines[#lines+1] = line\n          line = ''\n      end\n      if line == '' then\n         line  = word\n      else\n         line = line .. ' ' .. word\n      end\n   end\n   lines[#lines+1] = line\n   return lines\nend\n\nlocal function has_c_files (rockspec)\n   for _, mod in pairs(rockspec.build.modules or {}) do\n      if type(mod) == 'string' then\n         if mod:match'%.c$' then\n            return true\n         end\n      elseif type(mod) == 'table' then\n         local sources = mod.sources\n         if type(sources) == 'string' and sources:match'%.c$' then\n            return true\n         end\n         for _, src in ipairs(sources or mod) do\n            if src:match'%.c$' then\n               return true\n            end\n         end\n      end\n   end\n   return false\nend\n\nlocal function get_main_modules (rockspec)\n   local t = {}\n   for name in pairs(rockspec.build.modules or {}) do\n      if not name:match('%.') then\n         t[#t+1] = name\n      end\n   end\n   if #t == 0 then\n      for name in pairs(rockspec.build.modules or {}) do\n         t[#t+1] = name\n      end\n   end\n   if #t == 0 then\n      t[#t+1] = rockspec.package:gsub('%-', '')\n   end\n   table.sort(t)\n   return t\nend\n\nlocal function get_external_dependencies (rockspec)\n   local t = {}\n   for k in pairs(rockspec.external_dependencies or {}) do\n      k = k:lower()\n      if fs.is_dir('package/' .. k) then\n         t[#t+1] = k\n      else\n         t[#t+1] = 'lib' .. k\n         if not fs.is_dir('package/lib' .. k) then\n            util.printout('unkwown external dependency: ' .. k)\n         end\n      end\n   end\n   table.sort(t)\n   return t\nend\n\nlocal function get_dependencies (rockspec)\n   local t = {}\n   for i = 1, #rockspec.dependencies do\n      local dep = tostring(rockspec.dependencies[i]):match('^(%S+)')\n      if dep ~= 'lua' then\n         dep = dep:gsub('_', '-')\n         if fs.is_dir('package/lua-' .. dep) then\n            t[#t+1] = 'lua-' .. dep\n         else\n            t[#t+1] = dep\n            if not fs.is_dir('package/' .. dep) then\n               util.printout('unkwown dependency: ' .. dep)\n            end\n         end\n      end\n   end\n   table.sort(t)\n   return t\nend\n\nfunction get_digest (file)\n   local absname = fs.absolute_name(file)\n   local pipe = io.popen('sha256sum ' .. fs.Q(absname))\n   local line = pipe:read('*l')\n   pipe:close()\n   local computed = line and line:match('(' .. ('%x'):rep(64) .. ')')\n   if computed then\n      return computed\n   else\n      return nil, \"Failed to compute SHA256 hash for file \" .. absname\n   end\nend\n\nlocal function generate_config (rockspec, lcname)\n   local ucname = brname(lcname)\n   local only_luajit = rockspec.package:match('^lj')\n   local summary = rockspec.description.summary\n   if not summary then\n      summary = '???'\n   elseif not summary:match('%.%s*$') then\n      summary = summary:gsub('%s*$', '.')\n   end\n   local homepage = rockspec.description.homepage or '???'\n   local external_dependencies = get_external_dependencies(rockspec)\n   local dependencies = get_dependencies(rockspec)\n   local fname = 'package/' .. lcname .. '/Config.in'\n   local f = assert(io.open(fname, 'w'))\n   util.printout('write ' .. fname)\n   f:write('config BR2_PACKAGE_' .. ucname .. '\\n')\n   f:write('\\tbool \"' .. lcname .. '\"\\n')\n   if only_luajit then\n      f:write('\\tdepends on BR2_PACKAGE_LUAJIT\\n')\n   end\n   for i = 1, #external_dependencies do\n      f:write('\\tselect BR2_PACKAGE_' .. brname(external_dependencies[i]) .. '\\n')\n   end\n   for i = 1, #dependencies do\n      f:write('\\tselect BR2_PACKAGE_' .. brname(dependencies[i]) .. ' # runtime\\n')\n   end\n   f:write('\\thelp\\n')\n   f:write('\\t  ' .. table.concat(wrap(summary, 62), '\\n\\t  ') .. '\\n')\n   f:write('\\n\\t  ' .. homepage .. '\\n')\n   if only_luajit then\n      f:write('\\ncomment \"' .. lcname .. ' needs LuaJIT\"\\n')\n      f:write('\\tdepends on !BR2_PACKAGE_LUAJIT\\n')\n   end\n   f:close()\nend\n\nlocal function generate_mk (rockspec, lcname, licenses)\n   local function escape (s)\n      return s:gsub('-', '%%-'):gsub('%.', '%%.')\n   end\n\n   local ucname = brname(lcname)\n   local need_name_upstream = false\n   local need_version_upstream = false\n   local name_upstream = rockspec.package\n   local version = rockspec.version\n   local version_upstream = version:match('^([^-]+)-')\n   local revision = version:match('-(%d+)$')\n   local license = rockspec.description.license\n   local subdir = rockspec.source.dir\n   if subdir then\n      local root = subdir:match('^(.-)-' .. escape(version) .. '$')\n      if root then\n         subdir = root .. '-$(' .. ucname .. '_VERSION)'\n      end\n      root = subdir:match('^(.--[Vv])' .. escape(version_upstream) .. '$')\n      if root then\n         need_version_upstream = true\n         subdir = root .. '$(' .. ucname .. '_VERSION_UPSTREAM)'\n      end\n      root = subdir:match('^(.-)-' .. escape(version_upstream) .. '$')\n      if root then\n         if root == lcname then\n            subdir = nil\n         elseif root == name_upstream then\n            subdir = nil\n            need_name_upstream = true\n         else\n            need_version_upstream = true\n            subdir = root .. '-$(' .. ucname .. '_VERSION_UPSTREAM)'\n         end\n      end\n   end\n   local external_dependencies = get_external_dependencies(rockspec)\n   local fname = 'package/' .. lcname .. '/' .. lcname .. '.mk'\n   local f = assert(io.open(fname, 'w'))\n   util.printout('write ' .. fname)\n   f:write('################################################################################\\n')\n   f:write('#\\n')\n   f:write('# ' .. lcname .. '\\n')\n   f:write('#\\n')\n   f:write('################################################################################\\n')\n   f:write('\\n')\n   if need_version_upstream then\n      f:write(ucname .. '_VERSION_UPSTREAM = ' .. version_upstream .. '\\n')\n      f:write(ucname .. '_VERSION = $(' .. ucname .. '_VERSION_UPSTREAM)-' .. revision .. '\\n')\n   else\n      f:write(ucname .. '_VERSION = ' .. version .. '\\n')\n   end\n   if lcname ~= name_upstream:lower() or need_name_upstream then\n      f:write(ucname .. '_NAME_UPSTREAM = ' .. name_upstream .. '\\n')\n   end\n   if subdir then\n      f:write(ucname .. '_SUBDIR = ' .. subdir .. '\\n')\n   end\n   if license then\n      f:write(ucname .. '_LICENSE = ' .. brlicense(license) .. '\\n')\n   end\n   if #licenses == 1 then\n      f:write(ucname .. '_LICENSE_FILES = $(' .. ucname .. '_SUBDIR)/' .. licenses[1] .. '\\n')\n   elseif #licenses > 1 then\n      f:write(ucname .. '_LICENSE_FILES =')\n      for i = 1, #licenses do\n         local file = licenses[i]\n         f:write(' \\\\\\n\\t$(' .. ucname .. '_SUBDIR)/' .. file)\n      end\n      f:write('\\n')\n   end\n   if #external_dependencies > 0 then\n      f:write(ucname .. '_DEPENDENCIES = ' .. table.concat(external_dependencies, ' ') .. '\\n')\n   end\n   f:write('\\n$(eval $(luarocks-package))\\n')\n   f:close()\nend\n\nlocal function generate_hash (rockspec, lcname, rock_file, licenses, digest)\n   local subdir = rockspec.source.dir\n   local fname = 'package/' .. lcname .. '/' .. lcname .. '.hash'\n   local f = assert(io.open(fname, 'w'))\n   util.printout('write ' .. fname)\n   f:write('# computed by luarocks/buildroot\\n')\n   f:write('sha256 ' .. digest[rock_file] .. '  ' .. rock_file .. '\\n')\n   for i = 1, #licenses do\n      local file = licenses[i]\n      f:write('sha256 ' .. digest[file] .. '  ' .. subdir .. '/' .. file .. '\\n')\n   end\n   f:close()\nend\n\nlocal function generate_test (rockspec, lcname)\n   local ucname = brname(lcname)\n   local classname = rockspec.package:gsub('%-', ''):gsub('%.', '')\n   classname = classname:sub(1, 1):upper() .. classname:sub(2)\n   local modnames = get_main_modules(rockspec)\n   local fname = 'support/testing/tests/package/test_' .. ucname:lower() .. '.py'\n   local f = assert(io.open(fname, 'w'))\n   util.printout('write ' .. fname)\n   f:write('from tests.package.test_lua import TestLuaBase\\n')\n   f:write('\\n')\n   f:write('\\n')\n   f:write('class TestLua' .. classname .. '(TestLuaBase):\\n')\n   f:write('    config = TestLuaBase.config + \\\\\\n')\n   f:write('        \"\"\"\\n')\n   f:write('        BR2_PACKAGE_LUA=y\\n')\n   f:write('        BR2_PACKAGE_' .. ucname .. '=y\\n')\n   f:write('        \"\"\"\\n')\n   f:write('\\n')\n   f:write('    def test_run(self):\\n')\n   f:write('        self.login()\\n')\n   for i = 1, #modnames do\n      f:write('        self.module_test(\"' .. modnames[i] .. '\")\\n')\n   end\n   f:write('\\n')\n   f:write('\\n')\n   f:write('class TestLuajit' .. classname .. '(TestLuaBase):\\n')\n   f:write('    config = TestLuaBase.config + \\\\\\n')\n   f:write('        \"\"\"\\n')\n   f:write('        BR2_PACKAGE_LUAJIT=y\\n')\n   f:write('        BR2_PACKAGE_' .. ucname .. '=y\\n')\n   f:write('        \"\"\"\\n')\n   f:write('\\n')\n   f:write('    def test_run(self):\\n')\n   f:write('        self.login()\\n')\n   for i = 1, #modnames do\n      f:write('        self.module_test(\"' .. modnames[i] .. '\")\\n')\n   end\n   f:close()\nend\n\n--- Driver function for the \"buildroot\" command.\n-- @return boolean: true if successful\nfunction buildroot.command(args)\n   local rockname = assert(args.rockname)\n   local fsname = args.brname or rockname\n\n   local query = queries.new(rockname:lower(), nil, nil, false, 'src')\n   local url, err = search.find_suitable_rock(query)\n   if not url then\n      return nil, \"Could not find a result named \" .. tostring(query) .. \": \" .. err\n   end\n   local rock_file = dir.base_name(url)\n\n   local temp_dir, err = fs.make_temp_dir(rockname)\n   if not temp_dir then\n      return nil, \"Failed creating temporary dir: \" .. err\n   end\n   local ok, err = fs.change_dir(temp_dir)\n   if not ok then return nil, err end\n\n   ok = fs.download(url, rock_file, true)\n   if not ok then\n      return nil, \"Failed downloading \" .. url\n   end\n\n   local digest = {}\n   digest[rock_file], err = get_digest(rock_file)\n   if not digest[rock_file] then return nil, err end\n   ok, err = fs.unzip(rock_file)\n   if not ok then return nil, err end\n\n   local rockspec_file = rock_file:gsub('%.src%.rock$', '.rockspec')\n   local rockspec, err = fetch.load_rockspec(rockspec_file)\n   if not rockspec then\n      return nil, \"Error loading rockspec: \" .. err\n   end\n   if rockspec.source.file then\n      ok, err = fs.unpack_archive(rockspec.source.file)\n      if not ok then return nil, err end\n   end\n\n   if rockspec.source.dir ~= '.' then\n      fs.copy(rockspec.local_abs_filename, rockspec.source.dir, 'read')\n   end\n\n   local build_type = rockspec.build.type\n   if build_type ~= 'none' and build_type ~= 'builtin' and build_type ~= 'module' then\n      util.printout('[' .. rockspec.package .. \"] build_type '\" .. build_type .. \"' not supported\")\n   end\n\n   local licenses = {}\n   ok, err = fs.change_dir(rockspec.source.dir)\n   if not ok then return nil, err end\n   local files = fs.find()\n   for i = 1, #files do\n      local v = files[i]\n      if v == 'COPYING'\n         or v == 'COPYRIGHT'\n         or v:match('^LICENSE') then\n         licenses[#licenses+1] = v\n         digest[v], err = get_digest(v)\n         if not digest[v] then return nil, err end\n      end\n   end\n   if #licenses == 0 then\n      for i = 1, #files do\n         local v = files[i]\n         if v:match('^docs?/LICENSE')\n            or v:match('^docs?/license')\n            or v:match('^doc/us/license') then\n            licenses[#licenses+1] = v\n            digest[v], err = get_digest(v)\n            if not digest[v] then return nil, err end\n         end\n      end\n   end\n   fs.pop_dir()\n   table.sort(licenses)\n\n   fs.pop_dir()\n   ok, err = fs.make_dir('package/' .. fsname:lower())\n   if not ok then return nil, err end\n\n   generate_config(rockspec, fsname:lower())\n   generate_mk(rockspec, fsname:lower(), licenses)\n   generate_hash(rockspec, fsname:lower(), rock_file, licenses, digest)\n   if has_c_files(rockspec) then\n      ok, err = fs.make_dir('support/testing/tests/package')\n      if not ok then return nil, err end\n      generate_test(rockspec, fsname:lower())\n   end\n\n   return true\nend\n\nreturn buildroot\n"
  },
  {
    "path": "package/luarocks/luarocks.hash",
    "content": "# Locally calculated\nsha256  9255d97fee95cec5b54fc6ac718b11bf5029e45bed7873e053314919cd448551  luarocks-3.7.0.tar.gz\nsha256  542ad0ee9b8ba582437ca7b4d0959c9b9432f25d2067f144d017188a7a84dd2f  COPYING\n"
  },
  {
    "path": "package/luarocks/luarocks.mk",
    "content": "################################################################################\n#\n# luarocks\n#\n################################################################################\n\nLUAROCKS_VERSION = 3.7.0\nLUAROCKS_SITE = http://luarocks.org/releases\nLUAROCKS_LICENSE = MIT\nLUAROCKS_LICENSE_FILES = COPYING\n\nHOST_LUAROCKS_DEPENDENCIES = host-luainterpreter\n\nLUAROCKS_CONFIG_DIR = $(HOST_DIR)/etc\nLUAROCKS_CONFIG_FILE_DEFAULT = $(LUAROCKS_CONFIG_DIR)/luarocks/config-$(LUAINTERPRETER_ABIVER).lua\nLUAROCKS_CONFIG_FILE = $(LUAROCKS_CONFIG_DIR)/luarocks/config.lua\nHOST_LUAROCKS_CONFIG_FILE = $(LUAROCKS_CONFIG_DIR)/luarocks/host-config.lua\n\ndefine LUAROCKS_ADDON_EXTRACT\n\t$(INSTALL) -D -m 0644 package/luarocks/buildroot.lua $(@D)/src/luarocks/cmd/external/buildroot.lua\nendef\nHOST_LUAROCKS_POST_EXTRACT_HOOKS += LUAROCKS_ADDON_EXTRACT\n\nHOST_LUAROCKS_CONF_OPTS = \\\n\t--prefix=$(HOST_DIR) \\\n\t--sysconfdir=$(LUAROCKS_CONFIG_DIR) \\\n\t--with-lua=$(HOST_DIR)\n\ndefine HOST_LUAROCKS_CONFIGURE_CMDS\n\tcd $(@D) && ./configure $(HOST_LUAROCKS_CONF_OPTS)\nendef\n\ndefine HOST_LUAROCKS_INSTALL_CMDS\n\trm -f $(LUAROCKS_CONFIG_FILE_DEFAULT)\n\t$(MAKE1) -C $(@D) install\n\tcp $(LUAROCKS_CONFIG_FILE_DEFAULT) $(LUAROCKS_CONFIG_FILE)\n\techo \"-- BR cross-compilation\"  >> $(LUAROCKS_CONFIG_FILE)\n\techo \"gcc_rpath = false\"        >> $(LUAROCKS_CONFIG_FILE)\n\techo \"wrap_bin_scripts = false\" >> $(LUAROCKS_CONFIG_FILE)\n\tcp $(LUAROCKS_CONFIG_FILE_DEFAULT) $(HOST_LUAROCKS_CONFIG_FILE)\n\trm -f $(LUAROCKS_CONFIG_FILE_DEFAULT)\nendef\n\n$(eval $(host-generic-package))\n\ndefine LUAROCKS_FINALIZE_TARGET\n\trm -rf $(TARGET_DIR)/usr/lib/luarocks\nendef\n\n# Apply to global variable directly, as pkg-generic does not\nifneq ($(BR2_PACKAGE_LUAJIT)$(BR2_PACKAGE_LUA),)\nTARGET_FINALIZE_HOOKS += LUAROCKS_FINALIZE_TARGET\nendif\n"
  },
  {
    "path": "package/luasec/Config.in",
    "content": "config BR2_PACKAGE_LUASEC\n\tbool \"luasec\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LUASOCKET # runtime\n\thelp\n\t  A binding for OpenSSL library to provide TLS/SSL communication\n\t  over LuaSocket.\n\n\t  https://github.com/brunoos/luasec/wiki\n"
  },
  {
    "path": "package/luasec/luasec.hash",
    "content": "# computed by luarocks/buildroot\nsha256  b7e18f475c64896fe4921d367adabae765914f7526a68487a5fa6831040e7138  luasec-1.0-1.src.rock\nsha256  0d3431dad143f41c8902e4ee867e386a702ebad856c45239fb86460e27dabfbf  luasec/LICENSE\n"
  },
  {
    "path": "package/luasec/luasec.mk",
    "content": "################################################################################\n#\n# luasec\n#\n################################################################################\n\nLUASEC_VERSION = 1.0-1\nLUASEC_SUBDIR = luasec\nLUASEC_LICENSE = MIT\nLUASEC_LICENSE_FILES = $(LUASEC_SUBDIR)/LICENSE\nLUASEC_DEPENDENCIES = openssl\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/luasocket/Config.in",
    "content": "config BR2_PACKAGE_LUASOCKET\n\tbool \"luasocket\"\n\thelp\n\t  LuaSocket is the most comprehensive networking support library\n\t  for the Lua language.\n\t  It provides easy access to TCP, UDP, DNS, SMTP,\n\t  FTP, HTTP, MIME and much more.\n\n\t  http://luaforge.net/projects/luasocket/\n"
  },
  {
    "path": "package/luasocket/luasocket.hash",
    "content": "# computed by luarocks/buildroot\nsha256 453fc1d0e9b6a44bbada4290d565f840a5e96ba2d1b47562ba38bd9c7e82195a  luasocket-3.0rc1-1.src.rock\nsha256 8e8c6314d9e78fe452ee355167f2c40cfbee8207e14dcb5ddd4a2655cb5c6aad  luasocket-3.0-rc1/LICENSE\n"
  },
  {
    "path": "package/luasocket/luasocket.mk",
    "content": "################################################################################\n#\n# luasocket\n#\n################################################################################\n\nLUASOCKET_VERSION = 3.0rc1-1\nLUASOCKET_SUBDIR = luasocket-3.0-rc1\nLUASOCKET_LICENSE = MIT\nLUASOCKET_LICENSE_FILES = $(LUASOCKET_SUBDIR)/LICENSE\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/luasql-sqlite3/Config.in",
    "content": "config BR2_PACKAGE_LUASQL_SQLITE3\n\tbool \"luasql-sqlite3\"\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  LuaSQL is a simple interface from Lua to a DBMS.\n\n\t  http://keplerproject.github.io/luasql/\n"
  },
  {
    "path": "package/luasql-sqlite3/luasql-sqlite3.hash",
    "content": "# computed by luarocks/buildroot\nsha256 502faabc5e06c1d7c1ddb9a0550eb19220020c86b9f1e26a2cc2001e1343b35d  luasql-sqlite3-2.4.0-1.src.rock\nsha256 c8bb3a3947379addb89412e578d0aae95ca37dc6e48a17e128f40e512d10b025  luasql/doc/us/license.html\n"
  },
  {
    "path": "package/luasql-sqlite3/luasql-sqlite3.mk",
    "content": "################################################################################\n#\n# luasql-sqlite3\n#\n################################################################################\n\nLUASQL_SQLITE3_VERSION = 2.4.0-1\nLUASQL_SQLITE3_SUBDIR = luasql\nLUASQL_SQLITE3_LICENSE = MIT\nLUASQL_SQLITE3_LICENSE_FILES = $(LUASQL_SQLITE3_SUBDIR)/doc/us/license.html\nLUASQL_SQLITE3_DEPENDENCIES = sqlite\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/luasyslog/0001-remove-AX_LUA_LIBS.patch",
    "content": "From 84296c5eae651b45ebfa233199b7ddc009a5dad3 Mon Sep 17 00:00:00 2001\nFrom: Francois Perrad <francois.perrad@gadz.org>\nDate: Fri, 21 Jun 2019 14:58:54 +0200\nSubject: [PATCH] remove AX_LUA_LIBS\n\nAX_LUA_LIBS fails with LuaJIT\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n---\n configure.ac | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 9ac6c95..d7fc518 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -32,7 +32,6 @@ AC_PATH_PROG([LUAROCKS], [luarocks], [:])\n AX_PROG_LUA([5.1],[6.0])\n \n dnl Check for libraries\n-AX_LUA_LIBS\n \n dnl Check for functions\n AC_HEADER_STDC\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/luasyslog/Config.in",
    "content": "config BR2_PACKAGE_LUASYSLOG\n\tbool \"luasyslog\"\n\tselect BR2_PACKAGE_LUALOGGING # runtime\n\thelp\n\t  syslog appender for LuaLogging.\n\n\t  https://github.com/ntd/luasyslog\n"
  },
  {
    "path": "package/luasyslog/luasyslog.hash",
    "content": "# Locally computed\nsha256 7f7dad64117407f2484ff5b53e90804f923a99fcbde5872e54f6aba53f482da0  luasyslog-2.2.0.tar.gz\nsha256 833457938f5155e65dabda12a5c9d4b6fd7fb92dd7ead584c1c30cfb0c84adf4  COPYING\n"
  },
  {
    "path": "package/luasyslog/luasyslog.mk",
    "content": "################################################################################\n#\n# luasyslog\n#\n################################################################################\n\nLUASYSLOG_VERSION = 2.2.0\nLUASYSLOG_SITE = $(call github,ntd,luasyslog,$(LUASYSLOG_VERSION))\nLUASYSLOG_DEPENDENCIES = host-luarocks luainterpreter\nLUASYSLOG_LICENSE = MIT\nLUASYSLOG_LICENSE_FILES = COPYING\n# fetching from github\n# 0001-remove-AX_LUA_LIBS.patch touches configure.ac\nLUASYSLOG_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lugaru/0001-ImageIO-fix-invalid-conversion.patch",
    "content": "From 73e56ba8e91b6bae59220e6f25c1b7c15817edb5 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sun, 12 Feb 2017 21:17:44 +0100\nSubject: [PATCH] ImageIO: fix invalid conversion\n\nFixes:\nSource/Utils/ImageIO.cpp:125:27: error: invalid conversion from 'int' to 'boolean' [-fpermissive]\n     cinfo.quantize_colors = 0;\n                           ^\n\nquantize_colors type is bool, so it must be initialized to TRUE or FALSE.\n\nPatch status: upsteam\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n Source/Utils/ImageIO.cpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Source/Utils/ImageIO.cpp b/Source/Utils/ImageIO.cpp\nindex 706c201..c19a63e 100644\n--- a/Source/Utils/ImageIO.cpp\n+++ b/Source/Utils/ImageIO.cpp\n@@ -122,7 +122,7 @@ static bool load_jpg(const char* file_name, ImageRec& tex)\n     (void)jpeg_read_header(&cinfo, TRUE);\n \n     cinfo.out_color_space = JCS_RGB;\n-    cinfo.quantize_colors = 0;\n+    cinfo.quantize_colors = FALSE;\n     (void)jpeg_calc_output_dimensions(&cinfo);\n     (void)jpeg_start_decompress(&cinfo);\n \n-- \n2.9.3\n\n"
  },
  {
    "path": "package/lugaru/0002-Fix-mismatched-usage-length-build-fail-on-g.patch",
    "content": "From 5a0c9f6358169b447840acdb721250ce932cb180 Mon Sep 17 00:00:00 2001\nFrom: Martin Erik Werner <martinerikwerner@gmail.com>\nDate: Wed, 8 Mar 2017 22:51:16 +0100\nSubject: [PATCH] Fix mismatched usage length, build fail on g++\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe length of const option::Descriptor usage[] is intended to be\ninferred based on the initialisation in Source/main.cpp, however, the\nextern declaration in Source/Game.hpp hard-codes it to 13.\n\nRemove the hard-coded 13 in the extern declaration, in favour of the\ninferred length.\n\nThis also fixes the follwoing build failure with g++ (Debian 4.9.2-10)\n4.9.2:\n(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::index’\n     };\n     ^\n(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::index’ [-Wmissing-field-initializers]\n(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::type’\n(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::type’ [-Wmissing-field-initializers]\n(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::shortopt’\n(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::shortopt’ [-Wmissing-field-initializers]\n(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::longopt’\n(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::longopt’ [-Wmissing-field-initializers]\n(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::check_arg’\n(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::check_arg’ [-Wmissing-field-initializers]\n(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::help’ [-Wmissing-field-initializers]\nCMakeFiles/lugaru.dir/build.make:54: recipe for target 'CMakeFiles/lugaru.dir/Source/main.cpp.o' failed\n\nSigned-off-by: Martin Erik Werner <martinerikwerner@gmail.com>\n\n[Romain: backport to v1.2]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n\n(cherry picked from commit dd685fe9080c2853422d8272792691358ea07dfc)\n---\n Source/Game.hpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Source/Game.hpp b/Source/Game.hpp\nindex 51232cc..9bb6adb 100644\n--- a/Source/Game.hpp\n+++ b/Source/Game.hpp\n@@ -234,7 +234,7 @@ enum optionIndex\n /* Number of options + 1 */\n const int commandLineOptionsNumber = 10;\n \n-extern const option::Descriptor usage[13];\n+extern const option::Descriptor usage[];\n \n extern option::Option commandLineOptions[commandLineOptionsNumber];\n extern option::Option* commandLineOptionsBuffer;\n-- \n2.9.4\n\n"
  },
  {
    "path": "package/lugaru/Config.in",
    "content": "config BR2_PACKAGE_LUGARU\n\tbool \"lugaru\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_HAS_LIBGL # libglu\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_XORG7 # SDL2 OpenGL (GLX)\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # openal\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal\n\tdepends on BR2_USE_MMU # SDL2 OpenGL (GLX)\n\tdepends on !BR2_STATIC_LIBS # SDL2\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBGLU # GL/glu.h\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_LIBVORBIS\n\tselect BR2_PACKAGE_OPENAL\n\tselect BR2_PACKAGE_SDL2\n\tselect BR2_PACKAGE_SDL2_OPENGL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Lugaru (pronounced Loo-GAH-roo) is a cross-platform\n\t  third-person action game. The main character, Turner, is an\n\t  anthropomorphic rebel bunny rabbit with impressive combat\n\t  skills. In his quest to find those responsible for\n\t  slaughtering his village, he uncovers a far-reaching\n\t  conspiracy involving the corrupt leaders of the rabbit\n\t  republic and the starving wolves from a nearby den. Turner\n\t  takes it upon himself to fight against their plot and save\n\t  his fellow rabbits from slavery.\n\n\t  https://osslugaru.gitlab.io/\n\ncomment \"lugaru needs X11 and a toolchain w/ C++, OpenGL backend, gcc >= 4.9, NPTL, dynamic library\"\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_HAS_LIBGL || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/lugaru/lugaru.hash",
    "content": "# Locally calculated\nsha256  f3ea477caf78911c69939fbdc163f9f6517c7ef2267e716a0e050be1a166ef97  lugaru-1.2.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING.txt\nsha256  df020520630390de59394235a90a17c5d52d3b80ef76e2edf6d0690cd8b7fd7c  CONTENT-LICENSE.txt\n"
  },
  {
    "path": "package/lugaru/lugaru.mk",
    "content": "################################################################################\n#\n# lugaru\n#\n################################################################################\n\nLUGARU_VERSION = 1.2\nLUGARU_SITE = https://bitbucket.org/osslugaru/lugaru/downloads\nLUGARU_SOURCE = lugaru-$(LUGARU_VERSION).tar.xz\n\nLUGARU_LICENSE = GPL-2.0+, CC-BY-SA-3.0 (Wolfire and Slib assets), \\\n\tCC-BY-SA-4.0 (OSS Lugaru, Jendraz and Philtron R. assets)\nLUGARU_LICENSE_FILES = COPYING.txt CONTENT-LICENSE.txt\n\nLUGARU_DEPENDENCIES = host-pkgconf jpeg libgl libglu libpng libvorbis \\\n\topenal sdl2 zlib\n\n# Avoid incompatible posix_memalign declaration on x86 and x86_64 with\n# musl.\n# https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01425.html\nifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_i386)$(BR2_x86_64),y:y)\ndefine LUGARU_REMOVE_PEDANTIC\n\t$(SED) 's% -pedantic%%' $(@D)/CMakeLists.txt\nendef\nLUGARU_POST_PATCH_HOOKS += LUGARU_REMOVE_PEDANTIC\nendif\n\nLUGARU_CONF_OPTS = -DSYSTEM_INSTALL=ON\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/luksmeta/Config.in",
    "content": "config BR2_PACKAGE_LUKSMETA\n\tbool \"luksmeta\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # cryptsetup -> lvm2\n\tdepends on BR2_USE_MMU # cryptsetup -> lvm2\n\tdepends on !BR2_STATIC_LIBS # cryptsetup -> lvm2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # cryptsetup -> json-c\n\tselect BR2_PACKAGE_CRYPTSETUP\n\thelp\n\t  LUKSMeta is a simple library and utility for storing\n\t  metadata in the LUKSv1 header.\n\n\t  https://github.com/latchset/luksmeta\n\ncomment \"luksmeta needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/luksmeta/luksmeta.hash",
    "content": "# Locally calculated\nsha256 2ca0c35b551b331ba1444fc9d36e8c48ff8cae53dd4e6155b028e8904edc202a  luksmeta-9.tar.bz2\nsha256 4b72eb6b5a336cd3ec837cc2d6347c23bf7574168db6b4802267700b93021abf  COPYING\n"
  },
  {
    "path": "package/luksmeta/luksmeta.mk",
    "content": "################################################################################\n#\n# luksmeta\n#\n################################################################################\n\nLUKSMETA_VERSION = 9\nLUKSMETA_SOURCE = luksmeta-$(LUKSMETA_VERSION).tar.bz2\nLUKSMETA_SITE = https://github.com/latchset/luksmeta/releases/download/v$(LUKSMETA_VERSION)\nLUKSMETA_LICENSE = LGPL-2.1+\nLUKSMETA_LICENSE_FILES = COPYING\nLUKSMETA_DEPENDENCIES = host-pkgconf cryptsetup\nLUKSMETA_CONF_ENV = ac_cv_prog_A2X=\"\"\nLUKSMETA_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lutok/Config.in",
    "content": "config BR2_PACKAGE_LUTOK\n\tbool \"lutok\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_PACKAGE_LUAJIT\n\thelp\n\t  Lutok is a lightweight C++ API library for Lua.\n\n\t  https://github.com/jmmv/lutok\n\ncomment \"lutok needs a toolchain w/ C++ and full Lua\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_PACKAGE_LUAJIT\n"
  },
  {
    "path": "package/lutok/lutok.hash",
    "content": "# Locally computed\nsha256  2cec51efa0c8d65ace8b21eaa08384b77abc5087b46e785f78de1c21fb754cd5  lutok-0.4.tar.gz\nsha256  9343913f8ef8a91ceaf148fdcdb70bb8a45b9df9dac2ef71308053dcb312ade9  COPYING\n"
  },
  {
    "path": "package/lutok/lutok.mk",
    "content": "################################################################################\n#\n# lutok\n#\n################################################################################\n\nLUTOK_VERSION = 0.4\nLUTOK_SITE = https://github.com/jmmv/lutok/releases/download/lutok-$(LUTOK_VERSION)\nLUTOK_INSTALL_STAGING = YES\nLUTOK_DEPENDENCIES = host-pkgconf lua\n# --without-atf disables the atf-based lutok tests\nLUTOK_CONF_OPTS = --without-doxygen --without-atf\nLUTOK_LICENSE = BSD-3-Clause\nLUTOK_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/luv/Config.in",
    "content": "config BR2_PACKAGE_LUV\n\tbool \"luv\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv\n\tdepends on BR2_USE_MMU # libuv\n\tdepends on !BR2_STATIC_LIBS # libuv\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv\n\tselect BR2_PACKAGE_LIBUV\n\thelp\n\t  libuv bindings for LuaJIT and Lua.\n\n\t  https://github.com/luvit/luv\n\ncomment \"luv needs a toolchain w/ NPTL, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n"
  },
  {
    "path": "package/luv/luv.hash",
    "content": "# Locally calculated\nsha256  b5228a9d0eaacd9f862b6270c732d5c90773a28ce53b6d9e32a14050e7947f36  luv-1.42.0-0.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/luv/luv.mk",
    "content": "################################################################################\n#\n# luv\n#\n################################################################################\n\nLUV_VERSION = 1.42.0-0\nLUV_SITE = https://github.com/luvit/luv/releases/download/$(LUV_VERSION)\nLUV_LICENSE = Apache-2.0\nLUV_LICENSE_FILES = LICENSE.txt\nLUV_DEPENDENCIES = libuv\nLUV_INSTALL_STAGING = YES\n\nLUV_CONF_OPTS += \\\n\t-DBUILD_MODULE=OFF \\\n\t-DWITH_SHARED_LIBUV=ON \\\n\t-DLUA_BUILD_TYPE=System\n\nifeq ($(BR2_PACKAGE_LUAJIT),y)\nLUV_DEPENDENCIES += luajit\nLUV_CONF_OPTS += \\\n\t-DWITH_LUA_ENGINE=LuaJIT\nelse\nLUV_DEPENDENCIES += lua\nLUV_CONF_OPTS += \\\n\t-DWITH_LUA_ENGINE=Lua\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/luvi/Config.in",
    "content": "config BR2_PACKAGE_LUVI\n\tbool \"luvi\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv\n\tdepends on BR2_USE_MMU # libuv\n\tdepends on !BR2_STATIC_LIBS # libuv\n\tdepends on BR2_PACKAGE_LUAJIT\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv\n\tselect BR2_PACKAGE_LIBUV\n\tselect BR2_PACKAGE_LUV\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  A project in-between luv and luvit. The goal of this is to\n\t  make building luvit and derivatives much easier.\n\n\t  luvi extends LuaJIT with asynchronous I/O and several optional\n\t  modules to run Lua applications and build self-contained\n\t  binaries on systems that don't have a compiler.\n\n\t  The luvi core can be extended with several Lua modules by\n\t  adding its bundled Lua binding libraries.\n\t  To get the Lua module...\n\t    * 'rex' select PCRE (BR2_PACKAGE_PCRE)\n\t    * 'ssl' select OpenSSL (BR2_PACKAGE_OPENSSL)\n\t    * 'zlib' select zlib (BR2_PACKAGE_ZLIB)\n\n\t  https://github.com/luvit/luvi\n\ncomment \"luvi needs a toolchain w/ NPTL, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\ncomment \"luvi needs LuaJIT\"\n\tdepends on !BR2_PACKAGE_LUAJIT\n"
  },
  {
    "path": "package/luvi/luvi.hash",
    "content": "# Locally calculated\nsha256  4149c87646f487f9076c29e9861f64468637b1d1361b777b093e6204a83e1ed9  luvi-src-v2.12.0.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/luvi/luvi.mk",
    "content": "################################################################################\n#\n# luvi\n#\n################################################################################\n\nLUVI_VERSION = 2.12.0\nLUVI_SOURCE = luvi-src-v$(LUVI_VERSION).tar.gz\nLUVI_SITE = https://github.com/luvit/luvi/releases/download/v$(LUVI_VERSION)\nLUVI_LICENSE = Apache-2.0\nLUVI_LICENSE_FILES = LICENSE.txt\nLUVI_DEPENDENCIES = libuv luajit luv host-luajit host-pkgconf\n\n# Dispatch all architectures of LuaJIT\nifeq ($(BR2_i386),y)\nLUVI_TARGET_ARCH = x86\nelse ifeq ($(BR2_x86_64),y)\nLUVI_TARGET_ARCH = x64\nelse ifeq ($(BR2_powerpc),y)\nLUVI_TARGET_ARCH = ppc\nelse ifeq ($(BR2_arm)$(BR2_armeb),y)\nLUVI_TARGET_ARCH = arm\nelse ifeq ($(BR2_aarch64),y)\nLUVI_TARGET_ARCH = arm64\nelse ifeq ($(BR2_mips),y)\nLUVI_TARGET_ARCH = mips\nelse ifeq ($(BR2_mipsel),y)\nLUVI_TARGET_ARCH = mipsel\nelse\nLUVI_TARGET_ARCH = $(BR2_ARCH)\nendif\n\n# LUAJIT_VERSION and the luajit installation path may not use the\n# same value. Use the value from luajit.pc file.\nLUVI_LUAJIT_VERSION = `$(PKG_CONFIG_HOST_BINARY) --variable=version luajit`\n\n# Bundled lua bindings have to be linked statically into the luvi executable\nLUVI_CONF_OPTS = \\\n\t-DBUILD_SHARED_LIBS=OFF \\\n\t-DWithSharedLibluv=ON \\\n\t-DTARGET_ARCH=$(LUVI_TARGET_ARCH) \\\n\t-DLUA_PATH=$(HOST_DIR)/share/luajit-$(LUVI_LUAJIT_VERSION)/?.lua\n\n# Add \"rex\" module (PCRE via bundled lrexlib)\nifeq ($(BR2_PACKAGE_PCRE),y)\nLUVI_DEPENDENCIES += pcre\nLUVI_CONF_OPTS += -DWithPCRE=ON -DWithSharedPCRE=ON\nelse\nLUVI_CONF_OPTS += -DWithPCRE=OFF -DWithSharedPCRE=OFF\nendif\n\n# Add \"ssl\" module (via bundled lua-openssl)\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLUVI_DEPENDENCIES += openssl\nLUVI_CONF_OPTS += -DWithOpenSSL=ON -DWithOpenSSLASM=ON -DWithSharedOpenSSL=ON\nelse\nLUVI_CONF_OPTS += -DWithOpenSSL=OFF -DWithOpenSSLASM=OFF -DWithSharedOpenSSL=OFF\nendif\n\n# Add \"zlib\" module (via bundled lua-zlib)\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLUVI_DEPENDENCIES += zlib\nLUVI_CONF_OPTS += -DWithZLIB=ON -DWithSharedZLIB=ON\nelse\nLUVI_CONF_OPTS += -DWithZLIB=OFF -DWithSharedZLIB=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/lvm2/Config.in",
    "content": "config BR2_PACKAGE_LVM2\n\tbool \"lvm2 & device mapper\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # needs fork()\n\tdepends on !BR2_STATIC_LIBS # It fails to build statically\n\tselect BR2_PACKAGE_LIBAIO\n\thelp\n\t  This is LVM2, the rewrite of The Linux Logical Volume Manager.\n\t  LVM supports enterprise level volume management of disk and\n\t  disk subsystems by grouping arbitrary disks into volume\n\t  groups. The total capacity of volume groups can be allocated\n\t  to logical volumes, which are accessed as regular block\n\t  devices.\n\n\t  The Linux Kernel Device Mapper is the LVM\n\t  (Linux Logical Volume Management) Team's implementation of a\n\t  minimalistic kernel-space driver that handles volume\n\t  management, while keeping knowledge of the underlying device\n\t  layout in user-space. This makes it useful for not only LVM,\n\t  but EVMS, software raid, and other drivers that create\n\t  \"virtual\" block devices.\n\n\t  http://www.sourceware.org/lvm2/\n\nif BR2_PACKAGE_LVM2\n\nconfig BR2_PACKAGE_LVM2_STANDARD_INSTALL\n\tbool \"standard install instead of only dmsetup\"\n\tdefault y\n\t# http://lists.busybox.net/pipermail/buildroot/2016-August/170592.html\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  Install the standard suite of lvm2 programs. When this option\n\t  is not set, only dmsetup is installed.\n\ncomment \"lvm2 standard install needs a glibc or uClibc toolchain\"\n\tdepends on BR2_TOOLCHAIN_USES_MUSL\n\nendif\n\ncomment \"lvm2 needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/lvm2/lvm2.hash",
    "content": "# From http://sources.redhat.com/pub/lvm2/sha512.sum\nsha512 e4d3bfb38b346251a2ea2cee7b79f2e12ed407652b659b35b65f58c8bb252943cee1c511713aeec8ff3400790e0e99ea6b83e8740050defe5cbb118f18bf7700  LVM2.2.03.12.tgz\n# Locally computed sha256 checksums\nsha256 e76fbcd2fb97cf202da330301327754d2db5c58b5b4bebd3a8a749393e7603d1  COPYING\nsha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING.LIB\n"
  },
  {
    "path": "package/lvm2/lvm2.mk",
    "content": "################################################################################\n#\n# lvm2\n#\n################################################################################\n\nLVM2_VERSION = 2.03.12\nLVM2_SOURCE = LVM2.$(LVM2_VERSION).tgz\nLVM2_SITE = http://sources.redhat.com/pub/lvm2\nLVM2_INSTALL_STAGING = YES\nLVM2_LICENSE = GPL-2.0, LGPL-2.1\nLVM2_LICENSE_FILES = COPYING COPYING.LIB\nLVM2_CPE_ID_PRODUCT = redhat\n# parallel build issues\nLVM2_MAKE = $(MAKE1)\n\n# Make sure that binaries and libraries are installed with write\n# permissions for the owner. We disable NLS because it's broken, and\n# the package anyway doesn't provide any translation files.\nLVM2_CONF_OPTS += \\\n\t--enable-write_install \\\n\t--enable-pkgconfig \\\n\t--enable-cmdlib \\\n\t--enable-dmeventd \\\n\t--disable-nls \\\n\t--with-symvers=no\n\nLVM2_DEPENDENCIES += host-pkgconf libaio\n\n# LVM2 uses autoconf, but not automake, and the build system does not\n# take into account the toolchain passed at configure time.\nLVM2_MAKE_ENV = $(TARGET_CONFIGURE_OPTS)\n\n# package/readline is GPL-3.0+, so not license compatible\nLVM2_CONF_OPTS += --disable-readline\n\nLVM2_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR)\nLVM2_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR)\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nLVM2_CONF_OPTS += --enable-udev_rules\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nLVM2_CONF_OPTS += --enable-selinux\nLVM2_DEPENDENCIES += libselinux\nelse\nLVM2_CONF_OPTS += --disable-selinux\nendif\n\nifeq ($(BR2_PACKAGE_LVM2_STANDARD_INSTALL),y)\nLVM2_INSTALL_STAGING_OPTS += install\nLVM2_INSTALL_TARGET_OPTS += install\nifeq ($(BR2_INIT_SYSTEMD),y)\nLVM2_INSTALL_TARGET_OPTS += install_systemd_units install_systemd_generators\nendif\nelse\nLVM2_MAKE_OPTS = device-mapper\nLVM2_INSTALL_STAGING_OPTS += install_device-mapper\nLVM2_INSTALL_TARGET_OPTS += install_device-mapper\nendif\n\nifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),)\nLVM2_CONF_ENV += ac_cv_flag_HAVE_PIE=no\nendif\n\nHOST_LVM2_DEPENDENCIES = host-pkgconf host-libaio\nHOST_LVM2_CONF_OPTS = \\\n\t--enable-write_install \\\n\t--enable-pkgconfig \\\n\t--disable-cmdlib \\\n\t--disable-dmeventd \\\n\t--disable-fsadm \\\n\t--disable-readline \\\n\t--disable-selinux \\\n\t--with-confdir=$(HOST_DIR)/etc\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/lxc/Config.in",
    "content": "config BR2_PACKAGE_LXC\n\tbool \"lxc\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\t# build system forcefully builds a shared library\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # setns() system call\n\tdepends on !BR2_TOOLCHAIN_USES_UCLIBC # no fexecve\n\thelp\n\t  Linux Containers (LXC), provides the ability to group and\n\t  isolate of a set of processes in a jail by virtualizing and\n\t  accounting the kernel resources. It is similar to\n\t  Linux-Vserver or Openvz.\n\n\t  https://linuxcontainers.org/\n\ncomment \"lxc needs a glibc or musl toolchain w/ threads, headers >= 3.0, dynamic library, gcc >= 4.7\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 \\\n\t\t|| !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 \\\n\t\t|| BR2_STATIC_LIBS \\\n\t\t|| BR2_TOOLCHAIN_USES_UCLIBC\n"
  },
  {
    "path": "package/lxc/lxc.hash",
    "content": "# Locally calculated\nsha256  a10c518056d2e497bd600e4ffac2853bdeab1e835bf455a6d87cc8df128bfae9  lxc-4.0.10.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  LICENSE.GPL2\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSE.LGPL2.1\n"
  },
  {
    "path": "package/lxc/lxc.mk",
    "content": "################################################################################\n#\n# lxc\n#\n################################################################################\n\nLXC_VERSION = 4.0.10\nLXC_SITE = https://linuxcontainers.org/downloads/lxc\nLXC_LICENSE = GPL-2.0 (some tools), LGPL-2.1+\nLXC_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1\nLXC_CPE_ID_VENDOR = linuxcontainers\nLXC_DEPENDENCIES = host-pkgconf\nLXC_INSTALL_STAGING = YES\n\nLXC_CONF_OPTS = \\\n\t--disable-apparmor \\\n\t--disable-examples \\\n\t--with-distro=buildroot \\\n\t--disable-werror \\\n\t$(if $(BR2_PACKAGE_BASH),,--disable-bash)\n\nifeq ($(BR2_PACKAGE_BASH_COMPLETION),y)\nLXC_DEPENDENCIES += bash-completion\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nLXC_CONF_OPTS += --enable-capabilities\nLXC_DEPENDENCIES += libcap\nelse\nLXC_CONF_OPTS += --disable-capabilities\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECCOMP),y)\nLXC_CONF_OPTS += --enable-seccomp\nLXC_DEPENDENCIES += libseccomp\nelse\nLXC_CONF_OPTS += --disable-seccomp\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nLXC_CONF_OPTS += --enable-selinux\nLXC_DEPENDENCIES += libselinux\nelse\nLXC_CONF_OPTS += --disable-selinux\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLXC_CONF_OPTS += --enable-openssl\nLXC_DEPENDENCIES += openssl\nelse\nLXC_CONF_OPTS += --disable-openssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lynx/Config.in",
    "content": "config BR2_PACKAGE_LYNX\n\tbool \"lynx\"\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_SLANG if !BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS\n\thelp\n\t  The Text Web-Browser.\n\n\t  http://lynx.invisible-island.net/\n"
  },
  {
    "path": "package/lynx/lynx.hash",
    "content": "# Locally calculated:\nsha256  387f193d7792f9cfada14c60b0e5c0bff18f227d9257a39483e14fa1aaf79595  lynx2.8.9rel.1.tar.bz2\nsha256  b2207e757dbbefc34a20a32b1b4a216b4a4316e1dc812bceca4ac6294871119a  90_CVE-2021-38165.patch\nsha256  8406a30ff3134ec23cf752d1ceda92ddaabbe41b4f2dc07ea3cfa139de12d6d6  COPYING\n"
  },
  {
    "path": "package/lynx/lynx.mk",
    "content": "################################################################################\n#\n# lynx\n#\n################################################################################\n\nLYNX_VERSION = 2.8.9rel.1\nLYNX_SOURCE = lynx$(LYNX_VERSION).tar.bz2\nLYNX_SITE = ftp://ftp.invisible-island.net/lynx/tarballs\nLYNX_PATCH = \\\n\thttps://salsa.debian.org/lynx-team/lynx/-/raw/debian/2.9.0dev.6-3_deb11u1/debian/patches/90_CVE-2021-38165.patch\n# 90_CVE-2021-38165.patch\nLYNX_IGNORE_CVES += CVE-2021-38165\nLYNX_LICENSE = GPL-2.0\nLYNX_LICENSE_FILES = COPYING\nLYNX_CPE_ID_VENDOR = lynx_project\n\nLYNX_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES)\n\nifeq ($(BR2_REPRODUCIBLE),y)\n# configuration info leaks build paths\nLYNX_CONF_OPTS += --disable-config-info\n# disable build timestamp\nLYNX_CFLAGS += -DNO_BUILDSTAMP\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nLYNX_DEPENDENCIES += ncurses\nLYNX_CONF_OPTS += --with-screen=ncurses$(if $(BR2_PACKAGE_NCURSES_WCHAR),w)\nelse ifeq ($(BR2_PACKAGE_SLANG),y)\nLYNX_DEPENDENCIES += slang\nLYNX_CONF_OPTS += --with-screen=slang\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nLYNX_DEPENDENCIES += openssl\nLYNX_CONF_OPTS += --with-ssl=$(STAGING_DIR)/usr\nLYNX_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nelse ifeq ($(BR2_PACKAGE_GNUTLS),y)\nLYNX_DEPENDENCIES += gnutls\nLYNX_CONF_OPTS += --with-gnutls\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nLYNX_DEPENDENCIES += zlib\nLYNX_CONF_OPTS += --with-zlib\nelse\nLYNX_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_LIBIDN),y)\nLYNX_DEPENDENCIES += libidn\nLYNX_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs libidn`\nendif\n\nLYNX_CONF_ENV = LIBS=\"$(LYNX_LIBS)\" CFLAGS=\"$(TARGET_CFLAGS) $(LYNX_CFLAGS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/lz4/0001-Fix-potential-memory-corruption-with-negative-memmov.patch",
    "content": "From 8301a21773ef61656225e264f4f06ae14462bca7 Mon Sep 17 00:00:00 2001\nFrom: Jasper Lievisse Adriaanse <j@jasper.la>\nDate: Fri, 26 Feb 2021 15:21:20 +0100\nSubject: [PATCH] Fix potential memory corruption with negative memmove() size\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n lib/lz4.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/lib/lz4.c b/lib/lz4.c\nindex 5f524d0..c2f504e 100644\n--- a/lib/lz4.c\n+++ b/lib/lz4.c\n@@ -1749,7 +1749,7 @@ LZ4_decompress_generic(\n                  const size_t dictSize         /* note : = 0 if noDict */\n                  )\n {\n-    if (src == NULL) { return -1; }\n+    if ((src == NULL) || (outputSize < 0)) { return -1; }\n \n     {   const BYTE* ip = (const BYTE*) src;\n         const BYTE* const iend = ip + srcSize;\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/lz4/Config.in",
    "content": "config BR2_PACKAGE_LZ4\n\tbool \"lz4\"\n\thelp\n\t  LZ4 is a very fast lossless compression algorithm, providing\n\t  compression speed at 400 MB/s per core, scalable with\n\t  multi-cores CPU. It also features an extremely fast decoder,\n\t  with speed in multiple GB/s per core, typically reaching RAM\n\t  speed limits on multi-core systems.\n\n\t  http://www.lz4.org/\n\nif BR2_PACKAGE_LZ4\n\nconfig BR2_PACKAGE_LZ4_PROGS\n\tbool \"install programs\"\n\thelp\n\t  lz4, lz4c, unlz4 and lz4cat binaries\n\nendif\n"
  },
  {
    "path": "package/lz4/lz4.hash",
    "content": "# sha256 locally computed\nsha256  030644df4611007ff7dc962d981f390361e6c97a34e5cbc393ddfbe019ffe2c1  lz4-1.9.3.tar.gz\nsha256  d15d99c8dc6b0ec22174c0e563a95bc40f9363ca7f9d9d793bb5c5a8e8d0af71  lib/LICENSE\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  programs/COPYING\n"
  },
  {
    "path": "package/lz4/lz4.mk",
    "content": "################################################################################\n#\n# lz4\n#\n################################################################################\n\nLZ4_VERSION = 1.9.3\nLZ4_SITE = $(call github,lz4,lz4,v$(LZ4_VERSION))\nLZ4_INSTALL_STAGING = YES\nLZ4_LICENSE = BSD-2-Clause (library), GPL-2.0+ (programs)\nLZ4_LICENSE_FILES = lib/LICENSE programs/COPYING\nLZ4_CPE_ID_VENDOR = yann_collet\n\n# CVE-2014-4715 is misclassified (by our CVE tracker) as affecting version\n# 1.9.2, while in fact this issue has been fixed since lz4-r130:\n# https://github.com/lz4/lz4/commit/140e6e72ddb6fc5f7cd28ce0c8ec3812ef4a9c08\n# See https://github.com/lz4/lz4/issues/818\nLZ4_IGNORE_CVES += CVE-2014-4715\n\n# 0001-Fix-potential-memory-corruption-with-negative-memmov.patch\nLZ4_IGNORE_CVES += CVE-2021-3520\n\nifeq ($(BR2_STATIC_LIBS),y)\nLZ4_MAKE_OPTS += BUILD_SHARED=no\nelse ifeq ($(BR2_SHARED_LIBS),y)\nLZ4_MAKE_OPTS += BUILD_STATIC=no\nendif\n\ndefine HOST_LZ4_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) lib\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) lz4\nendef\n\ndefine HOST_LZ4_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) PREFIX=$(HOST_DIR) \\\n\t\tinstall -C $(@D)\nendef\n\nLZ4_DIRS = lib\n\nifeq ($(BR2_PACKAGE_LZ4_PROGS),y)\nLZ4_DIRS += programs\nendif\n\ndefine LZ4_BUILD_CMDS\n\t$(foreach dir,$(LZ4_DIRS),\\\n\t\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(LZ4_MAKE_OPTS) \\\n\t\t\t-C $(@D)/$(dir)\n\t)\nendef\n\ndefine LZ4_INSTALL_STAGING_CMDS\n\t$(foreach dir,$(LZ4_DIRS),\\\n\t\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(STAGING_DIR) \\\n\t\t\tPREFIX=/usr $(LZ4_MAKE_OPTS) -C $(@D)/$(dir) install\n\t)\nendef\n\ndefine LZ4_INSTALL_TARGET_CMDS\n\t$(foreach dir,$(LZ4_DIRS),\\\n\t\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(TARGET_DIR) \\\n\t\t\tPREFIX=/usr $(LZ4_MAKE_OPTS) -C $(@D)/$(dir) install\n\t)\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/lzip/Config.in",
    "content": "comment \"lzip needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_LZIP\n\tbool \"lzip\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Lzip is a lossless data compressor with a user interface\n\t  similar to the one of gzip or bzip2.\n\t  Lzip is about as fast as gzip, compresses most files more than\n\t  bzip2, and is better than both from a data recovery\n\t  perspective. Lzip is a clean implementation of the LZMA\n\t  algorithm.\n\n\t  https://www.nongnu.org/lzip/lzip.html\n"
  },
  {
    "path": "package/lzip/lzip.hash",
    "content": "# From https://lists.nongnu.org/archive/html/lzip-bug/2021-01/msg00008.html\nsha256  c3342d42e67139c165b8b128d033b5c96893a13ac5f25933190315214e87a948  lzip-1.22.tar.gz\n# Locally calculated\nsha256  3d77c1a58fbde5ddba612d1fe09965e20a3804953eca12e8c1892298bb8a5eef  COPYING\n"
  },
  {
    "path": "package/lzip/lzip.mk",
    "content": "################################################################################\n#\n# lzip\n#\n################################################################################\n\nLZIP_VERSION = 1.22\nLZIP_SITE = http://download.savannah.gnu.org/releases/lzip\nLZIP_LICENSE = GPL-2.0+\nLZIP_LICENSE_FILES = COPYING\n\ndefine LZIP_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_MAKE_ENV) ./configure --prefix=/usr \\\n\t\t$(TARGET_CONFIGURE_OPTS) )\nendef\n\ndefine HOST_LZIP_CONFIGURE_CMDS\n\t(cd $(@D); $(HOST_MAKE_ENV) ./configure --prefix=$(HOST_DIR) \\\n\t\t$(HOST_CONFIGURE_OPTS) CC=\"$(HOSTCC_NOCCACHE)\" CXX=\"$(HOSTCXX_NOCCACHE)\")\nendef\n\ndefine LZIP_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_LZIP_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine LZIP_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\ndefine HOST_LZIP_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) install\nendef\n\n# It's not autotools-based\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/lzlib/Config.in",
    "content": "config BR2_PACKAGE_LZLIB\n\tbool \"lzlib\"\n\tdepends on BR2_PACKAGE_LUA\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  This package provides a library to access zlib library\n\t  functions and also to read/write gzip files using an\n\t  interface similar to the base io package.\n\n\t  https://github.com/LuaDist/lzlib\n"
  },
  {
    "path": "package/lzlib/lzlib.hash",
    "content": "# Locally calculated\nsha256  cbb0cac5825e940b4ea2f31a336d2aaf6db39847d456920afd8e443804420dbb  lzlib-0.4.3.tar.gz\nsha256  f817d4a37077e94e9adf379f46ba5cc0b68775d7add2bbd5b2ca68ba140ad5bb  lzlib.c\n"
  },
  {
    "path": "package/lzlib/lzlib.mk",
    "content": "################################################################################\n#\n# lzlib\n#\n################################################################################\n\nLZLIB_VERSION = 0.4.3\nLZLIB_SITE = $(call github,LuaDist,lzlib,$(LZLIB_VERSION))\nLZLIB_DEPENDENCIES = lua zlib\nLZLIB_LICENSE = MIT\nLZLIB_LICENSE_FILES = lzlib.c\nLZLIB_CONF_OPTS = -DINSTALL_CMOD=\"/usr/lib/lua/$(LUAINTERPRETER_ABIVER)\" \\\n\t-DINSTALL_LMOD=\"/usr/share/lua/$(LUAINTERPRETER_ABIVER)\"\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/lzma/0001-Remove-static-from-LDFLAGS.patch",
    "content": "From 1b33f6d13e5c25a2500ee312068c08a3d3811a5f Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Vincent=20Stehl=C3=A9?= <vincent.stehle@laposte.net>\nDate: Wed, 3 Dec 2014 21:32:02 +0100\nSubject: [PATCH] Remove -static from LDFLAGS\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nBuildroot does not enable static libraries by default for host builds. Having\n-static hardcoded in the LDFLAGS breaks the build, so remove it.\n\nSigned-off-by: Vincent Stehlé <vincent.stehle@laposte.net>\n---\n src/lzmadec/Makefile.am  | 1 -\n src/lzmadec/Makefile.in  | 1 -\n src/lzmainfo/Makefile.am | 1 -\n src/lzmainfo/Makefile.in | 1 -\n 4 files changed, 4 deletions(-)\n\ndiff --git a/src/lzmadec/Makefile.am b/src/lzmadec/Makefile.am\nindex 7322b2a..13edec8 100644\n--- a/src/lzmadec/Makefile.am\n+++ b/src/lzmadec/Makefile.am\n@@ -2,6 +2,5 @@ bin_PROGRAMS = lzmadec\n lzmadec_SOURCES = lzmadec.c\n lzmadec_LDADD = @top_builddir@/src/liblzmadec/liblzmadec.la\n AM_CPPFLAGS = -I@top_srcdir@/src/liblzmadec\n-AM_LDFLAGS = -static\n \n dist_man_MANS = lzmadec.1\ndiff --git a/src/lzmadec/Makefile.in b/src/lzmadec/Makefile.in\nindex 5af9240..4ed1de1 100644\n--- a/src/lzmadec/Makefile.in\n+++ b/src/lzmadec/Makefile.in\n@@ -185,7 +185,6 @@ top_srcdir = @top_srcdir@\n lzmadec_SOURCES = lzmadec.c\n lzmadec_LDADD = @top_builddir@/src/liblzmadec/liblzmadec.la\n AM_CPPFLAGS = -I@top_srcdir@/src/liblzmadec\n-AM_LDFLAGS = -static\n dist_man_MANS = lzmadec.1\n all: all-am\n \ndiff --git a/src/lzmainfo/Makefile.am b/src/lzmainfo/Makefile.am\nindex b5b01ec..e280bff 100644\n--- a/src/lzmainfo/Makefile.am\n+++ b/src/lzmainfo/Makefile.am\n@@ -2,6 +2,5 @@ bin_PROGRAMS = lzmainfo\n lzmainfo_SOURCES = lzmainfo.c\n lzmainfo_LDADD = @top_builddir@/src/liblzmadec/liblzmadec.la\n AM_CPPFLAGS = -I@top_srcdir@/src/liblzmadec\n-AM_LDFLAGS = -static\n \n dist_man_MANS = lzmainfo.1\ndiff --git a/src/lzmainfo/Makefile.in b/src/lzmainfo/Makefile.in\nindex 6a2127a..f1f3441 100644\n--- a/src/lzmainfo/Makefile.in\n+++ b/src/lzmainfo/Makefile.in\n@@ -185,7 +185,6 @@ top_srcdir = @top_srcdir@\n lzmainfo_SOURCES = lzmainfo.c\n lzmainfo_LDADD = @top_builddir@/src/liblzmadec/liblzmadec.la\n AM_CPPFLAGS = -I@top_srcdir@/src/liblzmadec\n-AM_LDFLAGS = -static\n dist_man_MANS = lzmainfo.1\n all: all-am\n \n-- \n2.1.3\n\n"
  },
  {
    "path": "package/lzma/lzma.hash",
    "content": "# Locally calculated\nsha256\t02aa57f995d15b7acb7c2496d88a39fb0124ea00bf027cc61dd24eddb5942dff\tlzma-4.32.7.tar.xz\nsha256\t231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c\tCOPYING.GPLv2\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\tCOPYING.GPLv3\nsha256\t6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3\tCOPYING.LGPLv2.1\n"
  },
  {
    "path": "package/lzma/lzma.mk",
    "content": "################################################################################\n#\n# lzma\n#\n################################################################################\n\nLZMA_VERSION = 4.32.7\nLZMA_SOURCE = lzma-$(LZMA_VERSION).tar.xz\nLZMA_SITE = http://tukaani.org/lzma\nLZMA_LICENSE = LGPL-2.1+ (lzmadec library, lzmainfo, LzmaDecode), GPL-2.0+ (lzma program, lzgrep and lzmore scripts), GPL-3.0+ (tests)\nLZMA_LICENSE_FILES = COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1\n\n$(eval $(host-autotools-package))\n\nLZMA = $(HOST_DIR)/bin/lzma\n"
  },
  {
    "path": "package/lzo/Config.in",
    "content": "config BR2_PACKAGE_LZO\n\tbool \"lzo\"\n\thelp\n\t  Portable lossless data compression library written in ANSI C.\n\n\t  http://www.oberhumer.com/opensource/lzo/\n"
  },
  {
    "path": "package/lzo/lzo.hash",
    "content": "# From http://www.oberhumer.com/opensource/lzo/\nsha1 4924676a9bae5db58ef129dc1cebce3baa3c4b5d  lzo-2.10.tar.gz\n# Locally computed\nsha256 c0f892943208266f9b6543b3ae308fab6284c5c90e627931446fb49b4221a072  lzo-2.10.tar.gz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/lzo/lzo.mk",
    "content": "################################################################################\n#\n# lzo\n#\n################################################################################\n\nLZO_VERSION = 2.10\nLZO_SITE = http://www.oberhumer.com/opensource/lzo/download\nLZO_LICENSE = GPL-2.0+\nLZO_LICENSE_FILES = COPYING\nLZO_CPE_ID_VENDOR = lzo_project\nLZO_INSTALL_STAGING = YES\nLZO_SUPPORTS_IN_SOURCE_BUILD = NO\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nLZO_CONF_OPTS += -DENABLE_SHARED=ON\nelse\nLZO_CONF_OPTS += -DENABLE_SHARED=OFF\nendif\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nLZO_CONF_OPTS += -DENABLE_STATIC=ON\nelse\nLZO_CONF_OPTS += -DENABLE_STATIC=OFF\nendif\n\nHOST_LZO_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/lzop/0001-build-with-gcc6.patch",
    "content": "From: Jaap Crezee <jaap@jcz.nl>\nDate: Sat, 25 june 2016 13:13:00 +0200\nSubject: [PATCH 1/1] fix compilation host-lzop with gcc-6\n\nThis patch allows host-lzop to be compiled with host systems containing gcc-6\n\nUpstream patch found here:\nhttps://build.opensuse.org/package/view_file/Archiving/lzop/lzop-1.03-gcc6.patch?expand=1\n\nSigned-off-by: Jaap Crezee <jaap@jcz.nl>\n\n--- a/src/miniacc.h.orig   2016-02-10 16:09:23.247315866 +0100\n+++ b/src/miniacc.h   2016-02-10 16:12:14.973297054 +0100\n@@ -4469,12 +4469,12 @@\n #if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150)\n #elif 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)\n #else\n-    ACCCHK_ASSERT((1   << (8*SIZEOF_INT-1)) < 0)\n+    ACCCHK_ASSERT((int)(1u   << (8*SIZEOF_INT-1)) < 0)\n #endif\n     ACCCHK_ASSERT((1u  << (8*SIZEOF_INT-1)) > 0)\n #if 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)\n #else\n-    ACCCHK_ASSERT((1l  << (8*SIZEOF_LONG-1)) < 0)\n+    ACCCHK_ASSERT((long)(1ul  << (8*SIZEOF_LONG-1)) < 0)\n #endif\n     ACCCHK_ASSERT((1ul << (8*SIZEOF_LONG-1)) > 0)\n #if defined(acc_int16e_t)\n@@ -4703,7 +4703,7 @@\n #elif 1 && (ACC_CC_LCC || ACC_CC_LCCWIN32) && !defined(ACCCHK_CFG_PEDANTIC)\n #elif 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)\n #elif !(ACC_BROKEN_INTEGRAL_PROMOTION) && (SIZEOF_INT > 1)\n-    ACCCHK_ASSERT( (((unsigned char)128) << (int)(8*sizeof(int)-8)) < 0)\n+    ACCCHK_ASSERT( (int)((unsigned int)((unsigned char)128) << (int)(8*sizeof(int)-8)) < 0)\n #endif\n #if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0530) && (__BORLANDC__ < 0x0560))\n #  pragma option pop\n"
  },
  {
    "path": "package/lzop/0002-use-static-inlines-as-the-external-inline-definition.patch",
    "content": "From ecccbcf66da53779d88e38e2af7f82eff8dde7f8 Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Sun, 16 Aug 2015 10:35:47 -0700\nSubject: [PATCH] use static inlines as the external inline definition has\n changed with gcc5\n\n[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]\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\nUpstream-Status: Pending\n\n src/miniacc.h | 24 ++++++++----------------\n 1 file changed, 8 insertions(+), 16 deletions(-)\n\ndiff --git a/src/miniacc.h b/src/miniacc.h\nindex 09e6f0c..cae98d1 100644\n--- a/src/miniacc.h\n+++ b/src/miniacc.h\n@@ -2880,8 +2880,7 @@ typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);\n #if !(ACC_CFG_NO_INLINE_ASM) && (__acc_HAVE_forceinline)\n #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC)\n #if !defined(ACC_UA_GET_LE16)\n-extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp);\n-extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) {\n+static __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) {\n     __acc_ua_volatile const acc_uint16e_t* p = (__acc_ua_volatile const acc_uint16e_t*) pp;\n     unsigned long v;\n     __asm__ __volatile__(\"lhbrx %0,0,%1\" : \"=r\" (v) : \"r\" (p), \"m\" (*p));\n@@ -2890,8 +2889,7 @@ extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const\n #define ACC_UA_GET_LE16(p)      __ACC_UA_GET_LE16(p)\n #endif\n #if !defined(ACC_UA_SET_LE16)\n-extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v);\n-extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) {\n+static __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) {\n     __acc_ua_volatile acc_uint16e_t* p = (__acc_ua_volatile acc_uint16e_t*) pp;\n     __asm__ __volatile__(\"sthbrx %2,0,%1\" : \"=m\" (*p) : \"r\" (p), \"r\" (v));\n }\n@@ -2916,8 +2914,7 @@ extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsi\n #if !(ACC_CFG_NO_INLINE_ASM) && (__acc_HAVE_forceinline)\n #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC)\n #if !defined(ACC_UA_GET_LE32)\n-extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp);\n-extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) {\n+static __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) {\n     __acc_ua_volatile const acc_uint32e_t* p = (__acc_ua_volatile const acc_uint32e_t*) pp;\n     unsigned long v;\n     __asm__ __volatile__(\"lwbrx %0,0,%1\" : \"=r\" (v) : \"r\" (p), \"m\" (*p));\n@@ -2926,8 +2923,7 @@ extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const\n #define ACC_UA_GET_LE32(p)      __ACC_UA_GET_LE32(p)\n #endif\n #if !defined(ACC_UA_SET_LE32)\n-extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v);\n-extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) {\n+static __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) {\n     __acc_ua_volatile acc_uint32e_t* p = (__acc_ua_volatile acc_uint32e_t*) pp;\n     __asm__ __volatile__(\"stwbrx %2,0,%1\" : \"=m\" (*p) : \"r\" (p), \"r\" (v));\n }\n@@ -3307,8 +3303,7 @@ typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t);\n #if !(ACC_CFG_NO_INLINE_ASM) && (__acc_HAVE_forceinline)\n #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC)\n #if !defined(ACC_UA_GET_LE16)\n-extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp);\n-extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) {\n+static __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) {\n     __acc_ua_volatile const acc_uint16e_t* p = (__acc_ua_volatile const acc_uint16e_t*) pp;\n     unsigned long v;\n     __asm__ __volatile__(\"lhbrx %0,0,%1\" : \"=r\" (v) : \"r\" (p), \"m\" (*p));\n@@ -3317,8 +3312,7 @@ extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const\n #define ACC_UA_GET_LE16(p)      __ACC_UA_GET_LE16(p)\n #endif\n #if !defined(ACC_UA_SET_LE16)\n-extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v);\n-extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) {\n+static __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) {\n     __acc_ua_volatile acc_uint16e_t* p = (__acc_ua_volatile acc_uint16e_t*) pp;\n     __asm__ __volatile__(\"sthbrx %2,0,%1\" : \"=m\" (*p) : \"r\" (p), \"r\" (v));\n }\n@@ -3343,8 +3337,7 @@ extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsi\n #if !(ACC_CFG_NO_INLINE_ASM) && (__acc_HAVE_forceinline)\n #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC)\n #if !defined(ACC_UA_GET_LE32)\n-extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp);\n-extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) {\n+static __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) {\n     __acc_ua_volatile const acc_uint32e_t* p = (__acc_ua_volatile const acc_uint32e_t*) pp;\n     unsigned long v;\n     __asm__ __volatile__(\"lwbrx %0,0,%1\" : \"=r\" (v) : \"r\" (p), \"m\" (*p));\n@@ -3353,8 +3346,7 @@ extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const\n #define ACC_UA_GET_LE32(p)      __ACC_UA_GET_LE32(p)\n #endif\n #if !defined(ACC_UA_SET_LE32)\n-extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v);\n-extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) {\n+static __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) {\n     __acc_ua_volatile acc_uint32e_t* p = (__acc_ua_volatile acc_uint32e_t*) pp;\n     __asm__ __volatile__(\"stwbrx %2,0,%1\" : \"=m\" (*p) : \"r\" (p), \"r\" (v));\n }\n-- \n2.5.0\n\n"
  },
  {
    "path": "package/lzop/Config.in",
    "content": "config BR2_PACKAGE_LZOP\n\tbool \"lzop\"\n\tselect BR2_PACKAGE_LZO\n\thelp\n\t  lzop is a file compressor which is very similar to gzip.\n\t  lzop uses the LZO data compression library for compression\n\t  services.\n\n\t  http://www.lzop.org/\n"
  },
  {
    "path": "package/lzop/lzop.hash",
    "content": "# Locally calculated\nsha256 c1425b8c77d49f5a679d5a126c90ea6ad99585a55e335a613cae59e909dbb2c9 lzop-1.03.tar.gz\nsha256 70439f6e2b47057a408d2390ed6663b9875f5a08066a06a060a357ef1df89a8c COPYING\n"
  },
  {
    "path": "package/lzop/lzop.mk",
    "content": "################################################################################\n#\n# lzop\n#\n################################################################################\n\nLZOP_VERSION = 1.03\nLZOP_SITE = http://www.lzop.org/download\nLZOP_LICENSE = GPL-2.0+\nLZOP_LICENSE_FILES = COPYING\nLZOP_DEPENDENCIES = lzo\nHOST_LZOP_DEPENDENCIES = host-lzo\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n\nLZOP = $(HOST_DIR)/bin/lzop\n"
  },
  {
    "path": "package/m4/m4.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  e236ea3a1ccf5f6c270b1c4bb60726f371fa49459a8eaaebc90b216b328daf2b  m4-1.4.20.tar.xz\n# License files, locally calculated\nsha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  COPYING\n"
  },
  {
    "path": "package/m4/m4.mk",
    "content": "################################################################################\n#\n# m4\n#\n################################################################################\n\nM4_VERSION = 1.4.20\nM4_SOURCE = m4-$(M4_VERSION).tar.xz\nM4_SITE = $(BR2_GNU_MIRROR)/m4\nM4_LICENSE = GPL-3.0+\nM4_LICENSE_FILES = COPYING\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/macchanger/0001-Fix-missing-include-for-caddr_t.patch",
    "content": "From 4eeb901b7aadb167e44f476fd665f7fedf491e51 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Fri, 6 May 2016 09:28:36 +0200\nSubject: [PATCH] Fix missing include for caddr_t\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\ncaddr_t is defined in <sys/types.h>. This header file must be included to fix\nbuild with the musl C library:\n\nnetinfo.c: In function 'mc_net_info_get_permanent_mac':\nnetinfo.c:116:28: error: 'caddr_t' undeclared (first use in this function)\n  req.ifr_data = (caddr_t)epa;\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n src/netinfo.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/netinfo.c b/src/netinfo.c\nindex 3525123..1aa3293 100644\n--- a/src/netinfo.c\n+++ b/src/netinfo.c\n@@ -28,6 +28,7 @@\n #include <string.h>\n #include <unistd.h>\n #include <sys/ioctl.h>\n+#include <sys/types.h>\n \n #include <linux/ethtool.h>\n #include <linux/sockios.h>\n-- \n2.8.2\n\n"
  },
  {
    "path": "package/macchanger/Config.in",
    "content": "config BR2_PACKAGE_MACCHANGER\n\tbool \"macchanger\"\n\thelp\n\t  A GNU/Linux utility for viewing/manipulating the MAC address\n\t  of network interfaces\n\n\t  http://www.gnu.org/software/macchanger\n"
  },
  {
    "path": "package/macchanger/macchanger.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  dae2717c270fd5f62d790dbf80c19793c651b1b26b62c101b82d5fdf25a845bf  macchanger-1.7.0.tar.gz\n# Locally computed\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/macchanger/macchanger.mk",
    "content": "################################################################################\n#\n# macchanger\n#\n################################################################################\n\nMACCHANGER_VERSION = 1.7.0\nMACCHANGER_SITE = https://github.com/alobbs/macchanger/releases/download/$(MACCHANGER_VERSION)\nMACCHANGER_LICENSE = GPL-2.0+\nMACCHANGER_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/madplay/0001-switch-to-new-alsa-api.patch",
    "content": "Switch madplay to the new API. This is done thanks to a patch written\nby Micha Nelissen <micha@neli.hopto.org> and available at\nhttp://article.gmane.org/gmane.comp.audio.mad.devel/729.\n\n--- madplay-0.15.2b/audio_alsa.c\t2008-10-18 15:10:16.000000000 +0200\n+++ madplay-0.15.2b/audio_alsa.c.new\t2008-10-18 15:03:27.000000000 +0200\n@@ -28,31 +28,30 @@\n\n #include <errno.h>\n\n-#define ALSA_PCM_OLD_HW_PARAMS_API\n-#define ALSA_PCM_OLD_SW_PARAMS_API\n #include <alsa/asoundlib.h>\n\n #include <mad.h>\n\n #include \"audio.h\"\n\n-char *buf\t= NULL;\n-int paused\t= 0;\n+#define BUFFER_TIME_MAX     500000\n\n-int rate\t= -1;\n-int channels\t= -1;\n-int bitdepth\t= -1;\n-int sample_size\t= -1;\n-\n-int buffer_time\t\t= 500000;\n-int period_time\t\t= 100000;\n-char *defaultdev\t= \"plughw:0,0\";\n+unsigned char *buf  = NULL;\n+int paused\t    = 0;\n+\n+unsigned int rate           = 0;\n+unsigned int channels\t    = -1;\n+unsigned int bitdepth\t    = -1;\n+unsigned int sample_size    = -1;\n+\n+unsigned int buffer_time;\n+unsigned int period_time;\n+char *defaultdev\t    = \"plughw:0,0\";\n\n snd_pcm_hw_params_t *alsa_hwparams;\n snd_pcm_sw_params_t *alsa_swparams;\n\n-snd_pcm_sframes_t buffer_size;\n-snd_pcm_sframes_t period_size;\n+snd_pcm_uframes_t buffer_size;\n\n snd_pcm_format_t  alsa_format = -1;\n snd_pcm_access_t  alsa_access = SND_PCM_ACCESS_MMAP_INTERLEAVED;\n@@ -66,14 +65,20 @@\n \t\t snd_pcm_hw_params_t *params,\n \t\t snd_pcm_access_t access)\n {\n-\tint err, dir;\n-\t\n+\tint err;\n+\n \t/* choose all parameters */\n \terr = snd_pcm_hw_params_any(handle,params);\n \tif (err < 0) {\n \t\tprintf(\"Access type not available for playback: %s\\n\", snd_strerror(err));\n \t\treturn err;\n \t}\n+\t/* set the access type */\n+\terr = snd_pcm_hw_params_set_access(handle, params, alsa_access);\n+\tif (err < 0) {\n+\t\tprintf(\"Sample format not available for playback: %s\\n\", snd_strerror(err));\n+\t\treturn err;\n+\t}\n \t/* set the sample format */\n \terr = snd_pcm_hw_params_set_format(handle, params, alsa_format);\n \tif (err < 0) {\n@@ -87,29 +92,38 @@\n \t\treturn err;\n \t}\n \t/* set the stream rate */\n-\terr = snd_pcm_hw_params_set_rate_near(handle, params, rate, 0);\n+\terr = snd_pcm_hw_params_set_rate(handle, params, rate, 0);\n \tif (err < 0) {\n \t\tprintf(\"Rate %iHz not available for playback: %s\\n\", rate, snd_strerror(err));\n \t\treturn err;\n \t}\n-\tif (err != rate) {\n-\t\tprintf(\"Rate doesn't match (requested %iHz, get %iHz)\\n\", rate, err);\n-\t\treturn -EINVAL;\n-\t}\n+\terr = snd_pcm_hw_params_get_buffer_time_max(params, &buffer_time, NULL);\n+        if (err < 0) {\n+                printf(\"Unable to retrieve buffer time: %s\\n\", snd_strerror(err));\n+                return err;\n+        }\n+        if (buffer_time > BUFFER_TIME_MAX)\n+                buffer_time = BUFFER_TIME_MAX;\n \t/* set buffer time */\n-\terr = snd_pcm_hw_params_set_buffer_time_near(handle, params, buffer_time, &dir);\n+\terr = snd_pcm_hw_params_set_buffer_time_near(handle, params, &buffer_time, 0);\n \tif (err < 0) {\n \t\tprintf(\"Unable to set buffer time %i for playback: %s\\n\", buffer_time, snd_strerror(err));\n \t\treturn err;\n \t}\n-\tbuffer_size = snd_pcm_hw_params_get_buffer_size(params);\n+        if (period_time * 4 > buffer_time)\n+                period_time = buffer_time / 4;\n \t/* set period time */\n-\terr = snd_pcm_hw_params_set_period_time_near(handle, params, period_time, &dir);\n+\terr = snd_pcm_hw_params_set_period_time_near(handle, params, &period_time, NULL);\n \tif (err < 0) {\n \t\tprintf(\"Unable to set period time %i for playback: %s\\n\", period_time, snd_strerror(err));\n \t\treturn err;\n \t}\n-\tperiod_size = snd_pcm_hw_params_get_period_size(params, &dir);\n+        /* retrieve buffer size */\n+\terr = snd_pcm_hw_params_get_buffer_size(params, &buffer_size);\n+        if (err < 0) {\n+                printf(\"Unable to retrieve buffer size: %s\\n\", snd_strerror(err));\n+                return err;\n+        }\n \t/* write the parameters to device */\n \terr = snd_pcm_hw_params(handle, params);\n \tif (err < 0) {\n@@ -123,6 +137,7 @@\n int set_swparams(snd_pcm_t *handle,\n \t\t snd_pcm_sw_params_t *params)\n {\n+        unsigned int start_threshold;\n \tint err;\n\n         /* get current swparams */\n@@ -136,13 +151,7 @@\n         if (err < 0) {\n                 printf(\"Unable to set start threshold mode for playback: %s\\n\", snd_strerror(err));\n                 return err;\n-\t\t\t\t\t\t\t\t\t\t        }\n-        /* allow transfer when at least period_size samples can be processed */\n-        err = snd_pcm_sw_params_set_avail_min(handle, params, period_size);\n-        if (err < 0) {\n-                printf(\"Unable to set avail min for playback: %s\\n\", snd_strerror(err));\n-                return err;\n-\t\t\t\t\t\t\t\t\t\t\t\t        }\n+\t}\n         /* align all transfers to 1 samples */\n         err = snd_pcm_sw_params_set_xfer_align(handle, params, 1);\n         if (err < 0) {\n@@ -190,7 +199,7 @@\n \trate\t\t= config->speed;\n\n \tif ( bitdepth == 0 )\n-\t\tconfig->precision = bitdepth = 32;\n+\t\tconfig->precision = bitdepth = 16;\n\n \tswitch (bitdepth)\n \t{\n@@ -241,7 +250,7 @@\n \t\treturn -1;\n \t}\n\n-\tbuf = malloc(buffer_size);\n+\tbuf = malloc(buffer_size * sample_size);\n \tif (buf == NULL) {\n \t\taudio_error=\"unable to allocate output buffer table\";\n \t\treturn -1;\n@@ -279,7 +288,7 @@\n int play(struct audio_play *play)\n {\n \tint err, len;\n-\tchar *ptr;\n+\tunsigned char *ptr;\n\n \tptr = buf;\n \tlen = play->nsamples;\n\n"
  },
  {
    "path": "package/madplay/0002-configure-ac-automake-foreign.patch",
    "content": "configure.ac: don't require GNU-specific files when running automake\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -durN madplay-0.15.2b-orig/configure.ac madplay-0.15.2b/configure.ac\n--- madplay-0.15.2b-orig/configure.ac\t2019-02-14 21:34:01.507212449 +0100\n+++ madplay-0.15.2b/configure.ac\t2019-02-14 21:34:23.439336353 +0100\n@@ -26,7 +26,7 @@\n \n AC_CONFIG_SRCDIR([madplay.c])\n \n-AM_INIT_AUTOMAKE\n+AM_INIT_AUTOMAKE([foreign])\n \n AM_CONFIG_HEADER([config.h])\n \n"
  },
  {
    "path": "package/madplay/0003-configure-ac-use-pkg-config-to-find-id3tag.patch",
    "content": "configure.ac: use pkg-config to find id3tag\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -durN madplay-0.15.2b-orig/configure.ac madplay-0.15.2b/configure.ac\n--- madplay-0.15.2b-orig/configure.ac\t2019-02-14 21:34:01.507212449 +0100\n+++ madplay-0.15.2b/configure.ac\t2019-02-15 23:24:00.079876087 +0100\n@@ -182,12 +182,13 @@\n *** environment variable to specify its installed location, e.g. -L<dir>.])\n ])\n \n-AC_CHECK_LIB(id3tag, id3_tag_parse, :, [\n+PKG_CHECK_MODULES(ID3TAG, id3tag, [\n+\tCFLAGS=\"$CFLAGS $ID3TAG_CFLAGS\" LIBS=\"$LIBS $ID3TAG_LIBS\"], [\n \tAC_MSG_ERROR([libid3tag was not found\n *** You must first install libid3tag before you can build this package.\n *** If libid3tag is already installed, you may need to use the LDFLAGS\n *** environment variable to specify its installed location, e.g. -L<dir>.])\n-], [-lz])\n+])\n \n AC_FUNC_VPRINTF\n AC_CHECK_FUNCS(madvise localeconv)\n"
  },
  {
    "path": "package/madplay/0004-configure-ac-call-AM_MKINSTALLDIRS.patch",
    "content": "configure.ac: call AM_MKINSTALLDIRS to substitute @MKINSTALLDIRS@\n\nMKINSTALLDIRS is obsolete and doesn't get automatically called.\n\nForce call AM_MKINSTALLDIRS() macro to substitute every @MKINSTALLDIRS@\noccurence in *.in files.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>\n\ndiff -urpN madplay-0.15.2b.orig/configure.ac madplay-0.15.2b/configure.ac\n--- madplay-0.15.2b.orig/configure.ac\t2019-04-16 12:06:03.781018755 +0200\n+++ madplay-0.15.2b/configure.ac\t2019-04-16 12:07:48.399162610 +0200\n@@ -146,6 +146,10 @@ ALL_LINGUAS=\"en es fr hr no\"\n AM_GNU_GETTEXT([use-libtool])\n AM_GNU_GETTEXT_VERSION(0.14.1)\n \n+dnl Substitute MKINSTALLDIRS\n+\n+AM_MKINSTALLDIRS()\n+\n dnl Checks for header files.\n \n AC_HEADER_STDC\n"
  },
  {
    "path": "package/madplay/Config.in",
    "content": "config BR2_PACKAGE_MADPLAY\n\tbool \"madplay\"\n\tselect BR2_PACKAGE_LIBMAD\n\tselect BR2_PACKAGE_LIBID3TAG\n\thelp\n\t  Command-line front-end to libmad, a high-quality MPEG audio\n\t  decoder.  It currently supports MPEG-1 and the MPEG-2\n\t  extension to lower sampling frequencies, as well as the de\n\t  facto MPEG 2.5 format. All three audio layers - Layer I,\n\t  Layer II, and Layer III (i.e. MP3) - are fully implemented.\n\n\t  http://www.underbit.com/products/mad/\n\nif BR2_PACKAGE_MADPLAY\n\nconfig BR2_PACKAGE_MADPLAY_ALSA\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_ALSA_LIB\n\nendif\n"
  },
  {
    "path": "package/madplay/madplay.hash",
    "content": "# Locally computed:\nsha256  5a79c7516ff7560dffc6a14399a389432bc619c905b13d3b73da22fa65acede0  madplay-0.15.2b.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\nsha256  915bfd70548f31d11f9b4ffb21f343d1196af96c79d6aaac5663ea46c39dd3a3  COPYRIGHT\n"
  },
  {
    "path": "package/madplay/madplay.mk",
    "content": "################################################################################\n#\n# madplay\n#\n################################################################################\n\nMADPLAY_VERSION = 0.15.2b\nMADPLAY_SITE = http://downloads.sourceforge.net/project/mad/madplay/$(MADPLAY_VERSION)\nMADPLAY_LICENSE = GPL-2.0+\nMADPLAY_LICENSE_FILES = COPYING COPYRIGHT\nMADPLAY_DEPENDENCIES = host-pkgconf libmad libid3tag $(TARGET_NLS_DEPENDENCIES)\n\n# Force autoreconf to be able to use a more recent libtool script, that\n# is able to properly behave in the face of a missing C++ compiler.\n# Also 0003-configure-ac-use-pkg-config-to-find-id3tag.patch\nMADPLAY_AUTORECONF = YES\n\n# Check if ALSA is built, then we should configure after alsa-lib so\n# ./configure can find alsa-lib.\nifeq ($(BR2_PACKAGE_MADPLAY_ALSA),y)\nMADPLAY_CONF_OPTS += --with-alsa\nMADPLAY_DEPENDENCIES += alsa-lib\nMADPLAY_CONF_ENV += LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs alsa`\"\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/make/0001-configure.ac-Support-GLIBC-glob-interface-version-2.patch",
    "content": "From 48c8a116a914a325a0497721f5d8b58d5bba34d4 Mon Sep 17 00:00:00 2001\nFrom: Paul Smith <psmith@gnu.org>\nDate: Sun, 19 Nov 2017 15:09:16 -0500\nSubject: [PATCH] * configure.ac: Support GLIBC glob interface version 2\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: commit 48c8a116a914a3\n\n configure.ac | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 8c72568cf276..4710832ae568 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -404,10 +404,9 @@ AC_CACHE_CHECK([if system libc has GNU glob], [make_cv_sys_gnu_glob],\n #include <glob.h>\n #include <fnmatch.h>\n \n-#define GLOB_INTERFACE_VERSION 1\n #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1\n # include <gnu-versions.h>\n-# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION\n+# if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2\n    gnu glob\n # endif\n #endif],\n-- \n2.16.2\n\n"
  },
  {
    "path": "package/make/0001-glob-Do-not-assume-glibc-glob-internals.patch",
    "content": "From 193f1e81edd6b1b56b0eb0ff8aa4b41c7b4257b4 Mon Sep 17 00:00:00 2001\nFrom: Paul Eggert <eggert@cs.ucla.edu>\nDate: Sun, 24 Sep 2017 09:12:58 -0400\nSubject: [PATCH] glob: Do not assume glibc glob internals.\n\nIt has been proposed that glibc glob start using gl_lstat,\nwhich the API allows it to do.  GNU 'make' should not get in\nthe way of this.  See:\nhttps://sourceware.org/ml/libc-alpha/2017-09/msg00409.html\n\n* dir.c (local_lstat): New function, like local_stat.\n(dir_setup_glob): Use it to initialize gl_lstat too, as the API\nrequires.\n\nSigned-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>\n(from upstream commit 193f1e81edd6b1b56b0eb0ff8aa4b41c7b4257b4)\n---\n dir.c | 29 +++++++++++++++++++++++++++--\n 1 file changed, 27 insertions(+), 2 deletions(-)\n\ndiff --git a/dir.c b/dir.c\nindex adbb8a9..c343e4c 100644\n--- a/dir.c\n+++ b/dir.c\n@@ -1299,15 +1299,40 @@ local_stat (const char *path, struct stat *buf)\n }\n #endif\n \n+/* Similarly for lstat.  */\n+#if !defined(lstat) && !defined(WINDOWS32) || defined(VMS)\n+# ifndef VMS\n+#  ifndef HAVE_SYS_STAT_H\n+int lstat (const char *path, struct stat *sbuf);\n+#  endif\n+# else\n+    /* We are done with the fake lstat.  Go back to the real lstat */\n+#   ifdef lstat\n+#     undef lstat\n+#   endif\n+# endif\n+# define local_lstat lstat\n+#elif defined(WINDOWS32)\n+/* Windows doesn't support lstat().  */\n+# define local_lstat local_stat\n+#else\n+static int\n+local_lstat (const char *path, struct stat *buf)\n+{\n+  int e;\n+  EINTRLOOP (e, lstat (path, buf));\n+  return e;\n+}\n+#endif\n+\n void\n dir_setup_glob (glob_t *gl)\n {\n   gl->gl_opendir = open_dirstream;\n   gl->gl_readdir = read_dirstream;\n   gl->gl_closedir = free;\n+  gl->gl_lstat = local_lstat;\n   gl->gl_stat = local_stat;\n-  /* We don't bother setting gl_lstat, since glob never calls it.\n-     The slot is only there for compatibility with 4.4 BSD.  */\n }\n \n void\n-- \n2.21.0\n\n"
  },
  {
    "path": "package/make/Config.in",
    "content": "config BR2_PACKAGE_MAKE\n\tbool \"make\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  A tool which controls the generation of executables and other\n\t  non-source files of a program from the program's source files.\n\n\t  While Buildroot no longer supports building a toolchain for\n\t  the target, we keep a make package that is for example\n\t  useful to run the uClibc test suite on the target.\n\n\t  http://www.gnu.org/software/make/\n"
  },
  {
    "path": "package/make/make.hash",
    "content": "# From http://lists.gnu.org/archive/html/info-gnu/2016-06/msg00005.html\nmd5 15b012617e7c44c0ed482721629577ac  make-4.2.1.tar.bz2\n# Locally calculated after checking signature\nsha256  d6e262bf3601b42d2b1e4ef8310029e1dcf20083c5446b4b7aa67081fdffc589  make-4.2.1.tar.bz2\n# Locally computed\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/make/make.mk",
    "content": "################################################################################\n#\n# make\n#\n################################################################################\n\nMAKE_VERSION = 4.2.1\nMAKE_SOURCE = make-$(MAKE_VERSION).tar.bz2\nMAKE_SITE = $(BR2_GNU_MIRROR)/make\nMAKE_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-pkgconf\nMAKE_LICENSE = GPL-3.0+\nMAKE_LICENSE_FILES = COPYING\nMAKE_CPE_ID_VENDOR = gnu\n\n# Patching configure.ac\nMAKE_AUTORECONF = YES\n\nMAKE_CONF_OPTS = --without-guile\n\n# Disable the 'load' operation for static builds since it needs dlopen\nifeq ($(BR2_STATIC_LIBS),y)\nMAKE_CONF_OPTS += --disable-load\nendif\n\nHOST_MAKE_DEPENDENCIES = host-pkgconf\nHOST_MAKE_CONF_OPTS = --without-guile\n\n# Configure host-make binary to be 'host-make' to ensure it isn't\n# accidently used by packages when they invoke recursive / sub-make.\nHOST_MAKE_CONF_OPTS += --program-prefix=host-\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/makedevs/README",
    "content": "When building a target filesystem, it is desirable to not have to\nbecome root and then run 'mknod' a thousand times.  Using a device\ntable you can create device nodes and directories \"on the fly\".\n\nYou can do all sorts of interesting things with a device table file.\nFor example, if you want to adjust the permissions on a particular\nfile you can just add an entry like:\n\n  /sbin/foobar f 2755 0 0 - - - - -\n\nand (assuming the file /sbin/foobar exists) it will be made setuid\nroot (regardless of what its permissions are on the host filesystem.\n\nFurthermore, you can use a single table entry to create a many device\nminors.  For example, if I wanted to create /dev/hda and\n/dev/hda[0-15] I could just use the following two table entries:\n\n  /dev/hda b 640 0 0 3 0 0 0 -\n  /dev/hda b 640 0 0 3 1 1 1 15\n\nDevice table entries take the form of:\n\n<name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>\n\nwhere name is the file name,  type can be one of:\n\n      f: A regular file\n      d: Directory\n      c: Character special device file\n      b: Block special device file\n      p: Fifo (named pipe)\n\nuid is the user id for the target file, gid is the group id for the\ntarget file.  The rest of the entries (major, minor, etc) apply only\nto device special files.\n"
  },
  {
    "path": "package/makedevs/makedevs.c",
    "content": "/* vi: set sw=4 ts=4: */\n/*\n *  This program is free software; you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License version 2 as\n *  published by the Free Software Foundation.\n *\n *  This program is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU Library General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with this program; if not, write to the Free Software\n *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *\n */\n\n#define _GNU_SOURCE\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <fcntl.h>\n#include <getopt.h>\n#include <time.h>\n#include <pwd.h>\n#include <grp.h>\n#include <unistd.h>\n#include <ctype.h>\n#include <errno.h>\n#include <libgen.h>\n#include <stdarg.h>\n#include <sys/stat.h>\n#include <sys/types.h>\n#ifndef __APPLE__\n#include <sys/sysmacros.h>     /* major() and minor() */\n#endif\n#include <ftw.h>\n#ifdef EXTENDED_ATTRIBUTES\n#include <sys/capability.h>\n#endif /* EXTENDED_ATTRIBUTES */\n\nconst char *bb_applet_name;\nuid_t recursive_uid;\ngid_t recursive_gid;\nunsigned int recursive_mode;\n#define PASSWD_PATH \"etc/passwd\"  /* MUST be relative */\n#define GROUP_PATH \"etc/group\"  /* MUST be relative */\n\nvoid bb_verror_msg(const char *s, va_list p)\n{\n\tfflush(stdout);\n\tfprintf(stderr, \"%s: \", bb_applet_name);\n\tvfprintf(stderr, s, p);\n}\n\nvoid bb_error_msg(const char *s, ...)\n{\n\tva_list p;\n\n\tva_start(p, s);\n\tbb_verror_msg(s, p);\n\tva_end(p);\n\tputc('\\n', stderr);\n}\n\nvoid bb_error_msg_and_die(const char *s, ...)\n{\n\tva_list p;\n\n\tva_start(p, s);\n\tbb_verror_msg(s, p);\n\tva_end(p);\n\tputc('\\n', stderr);\n\texit(1);\n}\n\nvoid bb_vperror_msg(const char *s, va_list p)\n{\n\tint err=errno;\n\tif(s == 0) s = \"\";\n\tbb_verror_msg(s, p);\n\tif (*s) s = \": \";\n\tfprintf(stderr, \"%s%s\\n\", s, strerror(err));\n}\n\nvoid bb_perror_msg(const char *s, ...)\n{\n\tva_list p;\n\n\tva_start(p, s);\n\tbb_vperror_msg(s, p);\n\tva_end(p);\n}\n\nvoid bb_perror_msg_and_die(const char *s, ...)\n{\n\tva_list p;\n\n\tva_start(p, s);\n\tbb_vperror_msg(s, p);\n\tva_end(p);\n\texit(1);\n}\n\nFILE *bb_xfopen(const char *path, const char *mode)\n{\n\tFILE *fp;\n\tif ((fp = fopen(path, mode)) == NULL)\n\t\tbb_perror_msg_and_die(\"%s\", path);\n\treturn fp;\n}\n\nenum {\n\tFILEUTILS_PRESERVE_STATUS = 1,\n\tFILEUTILS_DEREFERENCE = 2,\n\tFILEUTILS_RECUR = 4,\n\tFILEUTILS_FORCE = 8,\n\tFILEUTILS_INTERACTIVE = 16\n};\nint bb_make_directory (char *path, long mode, int flags)\n{\n\tmode_t mask;\n\tconst char *fail_msg;\n\tchar *s = path;\n\tchar c;\n\tstruct stat st;\n\n\tmask = umask(0);\n\tif (mode == -1) {\n\t\tumask(mask);\n\t\tmode = (S_IXUSR | S_IXGRP | S_IXOTH |\n\t\t\t\tS_IWUSR | S_IWGRP | S_IWOTH |\n\t\t\t\tS_IRUSR | S_IRGRP | S_IROTH) & ~mask;\n\t} else {\n\t\tumask(mask & ~0300);\n\t}\n\n\tdo {\n\t\tc = 0;\n\n\t\tif (flags & FILEUTILS_RECUR) {\t/* Get the parent. */\n\t\t\t/* Bypass leading non-'/'s and then subsequent '/'s. */\n\t\t\twhile (*s) {\n\t\t\t\tif (*s == '/') {\n\t\t\t\t\tdo {\n\t\t\t\t\t\t++s;\n\t\t\t\t\t} while (*s == '/');\n\t\t\t\t\tc = *s;\t\t/* Save the current char */\n\t\t\t\t\t*s = 0;\t\t/* and replace it with nul. */\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t++s;\n\t\t\t}\n\t\t}\n\n\t\tif (mkdir(path, 0777) < 0) {\n\t\t\t/* If we failed for any other reason than the directory\n\t\t\t * already exists, output a diagnostic and return -1.*/\n\t\t\tif ((errno != EEXIST && errno != EISDIR)\n\t\t\t\t\t|| !(flags & FILEUTILS_RECUR)\n\t\t\t\t\t|| (stat(path, &st) < 0 || !S_ISDIR(st.st_mode))) {\n\t\t\t\tfail_msg = \"create\";\n\t\t\t\tumask(mask);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/* Since the directory exists, don't attempt to change\n\t\t\t * permissions if it was the full target.  Note that\n\t\t\t * this is not an error conditon. */\n\t\t\tif (!c) {\n\t\t\t\tumask(mask);\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\n\t\tif (!c) {\n\t\t\t/* Done.  If necessary, updated perms on the newly\n\t\t\t * created directory.  Failure to update here _is_\n\t\t\t * an error.*/\n\t\t\tumask(mask);\n\t\t\tif ((mode != -1) && (chmod(path, mode) < 0)){\n\t\t\t\tfail_msg = \"set permissions of\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\n\t\t/* Remove any inserted nul from the path (recursive mode). */\n\t\t*s = c;\n\n\t} while (1);\n\n\tbb_perror_msg (\"Cannot %s directory `%s'\", fail_msg, path);\n\treturn -1;\n}\n\nconst char * const bb_msg_memory_exhausted = \"memory exhausted\";\n\nvoid *xmalloc(size_t size)\n{\n\tvoid *ptr = malloc(size);\n\tif (ptr == NULL && size != 0)\n\t\tbb_error_msg_and_die(bb_msg_memory_exhausted);\n\treturn ptr;\n}\n\nvoid *xcalloc(size_t nmemb, size_t size)\n{\n\tvoid *ptr = calloc(nmemb, size);\n\tif (ptr == NULL && nmemb != 0 && size != 0)\n\t\tbb_error_msg_and_die(bb_msg_memory_exhausted);\n\treturn ptr;\n}\n\nvoid *xrealloc(void *ptr, size_t size)\n{\n\tptr = realloc(ptr, size);\n\tif (ptr == NULL && size != 0)\n\t\tbb_error_msg_and_die(bb_msg_memory_exhausted);\n\treturn ptr;\n}\n\nchar *private_get_line_from_file(FILE *file, int c)\n{\n#define GROWBY (80)\t\t/* how large we will grow strings by */\n\n\tint ch;\n\tint idx = 0;\n\tchar *linebuf = NULL;\n\tint linebufsz = 0;\n\n\twhile ((ch = getc(file)) != EOF) {\n\t\t/* grow the line buffer as necessary */\n\t\tif (idx > linebufsz - 2) {\n\t\t\tlinebuf = xrealloc(linebuf, linebufsz += GROWBY);\n\t\t}\n\t\tlinebuf[idx++] = (char)ch;\n\t\tif (!ch) return linebuf;\n\t\tif (c<2 && ch == '\\n') {\n\t\t\tif (c) {\n\t\t\t\t--idx;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (linebuf) {\n\t\tif (ferror(file)) {\n\t\t\tfree(linebuf);\n\t\t\treturn NULL;\n\t\t}\n\t\tlinebuf[idx] = 0;\n\t}\n\treturn linebuf;\n}\n\nchar *bb_get_chomped_line_from_file(FILE *file)\n{\n\treturn private_get_line_from_file(file, 1);\n}\n\nlong my_getpwnam(const char *name)\n{\n\tstruct passwd *myuser;\n\tFILE *stream;\n\n\tstream = bb_xfopen(PASSWD_PATH, \"r\");\n\twhile(1) {\n\t\terrno = 0;\n\t\tmyuser = fgetpwent(stream);\n\t\tif (myuser == NULL)\n\t\t\tbb_error_msg_and_die(\"unknown user name: %s\", name);\n\t\tif (errno)\n\t\t\tbb_perror_msg_and_die(\"fgetpwent\");\n\t\tif (!strcmp(name, myuser->pw_name))\n\t\t\tbreak;\n\t}\n\tfclose(stream);\n\n\treturn myuser->pw_uid;\n}\n\nlong my_getgrnam(const char *name)\n{\n\tstruct group *mygroup;\n\tFILE *stream;\n\n\tstream = bb_xfopen(GROUP_PATH, \"r\");\n\twhile(1) {\n\t\terrno = 0;\n\t\tmygroup = fgetgrent(stream);\n\t\tif (mygroup == NULL)\n\t\t\tbb_error_msg_and_die(\"unknown group name: %s\", name);\n\t\tif (errno)\n\t\t\tbb_perror_msg_and_die(\"fgetgrent\");\n\t\tif (!strcmp(name, mygroup->gr_name))\n\t\t\tbreak;\n\t}\n\tfclose(stream);\n\n\treturn mygroup->gr_gid;\n}\n\nunsigned long get_ug_id(const char *s, long (*my_getxxnam)(const char *))\n{\n\tunsigned long r;\n\tchar *p;\n\n\tr = strtoul(s, &p, 10);\n\tif (*p || (s == p)) {\n\t\tr = my_getxxnam(s);\n\t}\n\n\treturn r;\n}\n\nchar * last_char_is(const char *s, int c)\n{\n\tchar *sret = (char *)s;\n\tif (sret) {\n\t\tsret = strrchr(sret, c);\n\t\tif(sret != NULL && *(sret+1) != 0)\n\t\t\tsret = NULL;\n\t}\n\treturn sret;\n}\n\nvoid bb_xasprintf(char **string_ptr, const char *format, ...)\n{\n\tva_list p;\n\tint r;\n\n\tva_start(p, format);\n\tr = vasprintf(string_ptr, format, p);\n\tva_end(p);\n\n\tif (r < 0) {\n\t\tbb_perror_msg_and_die(\"bb_xasprintf\");\n\t}\n}\n\nchar *concat_path_file(const char *path, const char *filename)\n{\n\tchar *outbuf;\n\tchar *lc;\n\n\tif (!path)\n\t\tpath = \"\";\n\tlc = last_char_is(path, '/');\n\twhile (*filename == '/')\n\t\tfilename++;\n\tbb_xasprintf(&outbuf, \"%s%s%s\", path, (lc==NULL ? \"/\" : \"\"), filename);\n\n\treturn outbuf;\n}\n\n#ifdef EXTENDED_ATTRIBUTES\nint bb_set_xattr(const char *fpath, const char *xattr)\n{\n\tcap_t cap, cap_file, cap_new;\n\tchar *cap_file_text, *cap_new_text;\n\tssize_t length;\n\n\tcap = cap_from_text(xattr);\n\tif (cap == NULL)\n\t\tbb_perror_msg_and_die(\"cap_from_text failed for %s\", xattr);\n\n\tcap_file = cap_get_file(fpath);\n\tif (cap_file == NULL) {\n\t\t/* if no capability was set before, we initialize cap_file */\n\t\tif (errno != ENODATA)\n\t\t\tbb_perror_msg_and_die(\"cap_get_file failed on %s\", fpath);\n\n\t\tcap_file = cap_init();\n\t\tif (!cap_file)\n\t\t\tbb_perror_msg_and_die(\"cap_init failed\");\n\t}\n\n\tif ((cap_file_text = cap_to_text(cap_file, &length)) == NULL)\n\t\tbb_perror_msg_and_die(\"cap_to_name failed on %s\", fpath);\n\n\tbb_xasprintf(&cap_new_text, \"%s %s\", cap_file_text, xattr);\n\n\tif ((cap_new = cap_from_text(cap_new_text)) == NULL)\n\t\tbb_perror_msg_and_die(\"cap_from_text failed on %s\", cap_new_text);\n\n\tif (cap_set_file(fpath, cap_new) == -1)\n\t\tbb_perror_msg_and_die(\"cap_set_file failed for %s (xattr = %s)\", fpath, xattr);\n\n\tcap_free(cap);\n\tcap_free(cap_file);\n\tcap_free(cap_file_text);\n\tcap_free(cap_new);\n\tcap_free(cap_new_text);\n\n\treturn 0;\n}\n#endif /* EXTENDED_ATTRIBUTES */\n\nvoid bb_show_usage(void)\n{\n\tfprintf(stderr, \"%s: [-d device_table] rootdir\\n\\n\", bb_applet_name);\n\tfprintf(stderr, \"Creates a batch of special files as specified in a device table.\\n\");\n\tfprintf(stderr, \"Device table entries take the form of:\\n\");\n\tfprintf(stderr, \"name type mode user group major minor start increment count\\n\\n\");\n\tfprintf(stderr, \"Where name is the file name,  type can be one of:\\n\");\n\tfprintf(stderr, \"      f       A regular file\\n\");\n\tfprintf(stderr, \"      d       Directory\\n\");\n\tfprintf(stderr, \"      r       Directory recursively\\n\");\n\tfprintf(stderr, \"      c       Character special device file\\n\");\n\tfprintf(stderr, \"      b       Block special device file\\n\");\n\tfprintf(stderr, \"      p       Fifo (named pipe)\\n\");\n\tfprintf(stderr, \"uid is the user id for the target file, gid is the group id for the\\n\");\n\tfprintf(stderr, \"target file.  The rest of the entries (major, minor, etc) apply to\\n\");\n\tfprintf(stderr, \"to device special files.  A '-' may be used for blank entries.\\n\\n\");\n\tfprintf(stderr, \"For example:\\n\");\n\tfprintf(stderr, \"<name>    <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>\\n\");\n\tfprintf(stderr, \"/dev         d    755    0    0     -       -       -       -     -\\n\");\n\tfprintf(stderr, \"/dev/console c    666    0    0     5       1       -       -     -\\n\");\n\tfprintf(stderr, \"/dev/null    c    666    0    0     1       3       0       0     -\\n\");\n\tfprintf(stderr, \"/dev/zero    c    666    0    0     1       5       0       0     -\\n\");\n\tfprintf(stderr, \"/dev/hda     b    640    0    0     3       0       0       0     -\\n\");\n\tfprintf(stderr, \"/dev/hda     b    640    0    0     3       1       1       1     15\\n\");\n\tfprintf(stderr, \"/dev/rtp     b    640    0    0     250     0       0       1     5\\n\");\n\tfprintf(stderr, \"/dev/gps     b    640    0    0     251     0       1       1     5\\n\");\n\tfprintf(stderr, \"/dev/uio     b    640    0    0     252     0       1       2     5\\n\");\n\tfprintf(stderr, \"/dev/uio     b    640    0    0     252     1       6       2     5\\n\\n\");\n\tfprintf(stderr, \"Will Produce:\\n\");\n\tfprintf(stderr, \"/dev\\n\");\n\tfprintf(stderr, \"/dev/console\\n\");\n\tfprintf(stderr, \"/dev/null\\n\");\n\tfprintf(stderr, \"/dev/zero\\n\");\n\tfprintf(stderr, \"/dev/hda\\n\");\n\tfprintf(stderr, \"/dev/hda[1-15] with minor numbers [1-15]\\n\");\n\tfprintf(stderr, \"/dev/rtp[0-4]  with minor numbers [0-4]\\n\");\n\tfprintf(stderr, \"/dev/gps[1-5]  with minor numbers [0-4]\\n\");\n\tfprintf(stderr, \"/dev/uio[1-5]  with minor numbers 0,2,4,6,8\\n\");\n\tfprintf(stderr, \"/dev/uio[6-10] with minor numbers 1,3,5,7,9\\n\");\n\texit(1);\n}\n\nint bb_recursive(const char *fpath, const struct stat *sb,\n\t\tint tflag, struct FTW *ftwbuf){\n\n\tif (chown(fpath, recursive_uid, recursive_gid) == -1) {\n\t\tbb_perror_msg(\"chown failed for %s\", fpath);\n\t\treturn -1;\n\t}\n\tif (recursive_mode != -1) {\n\t\tif (chmod(fpath, recursive_mode) < 0) {\n\t\t\tbb_perror_msg(\"chmod failed for %s\", fpath);\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\treturn 0;\n}\n\nint main(int argc, char **argv)\n{\n\tint opt;\n\tFILE *table = stdin;\n\tchar *rootdir = NULL;\n\tchar *full_name = NULL;\n\tchar *line = NULL;\n\tint linenum = 0;\n\tint ret = EXIT_SUCCESS;\n\n\tbb_applet_name = basename(argv[0]);\n\n\twhile ((opt = getopt(argc, argv, \"d:\")) != -1) {\n\t\tswitch(opt) {\n\t\t\tcase 'd':\n\t\t\t\ttable = bb_xfopen((line=optarg), \"r\");\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbb_show_usage();\n\t\t}\n\t}\n\n\tif (optind >= argc || (rootdir=argv[optind])==NULL) {\n\t\tbb_error_msg_and_die(\"root directory not speficied\");\n\t}\n\n\tif (chdir(rootdir) != 0) {\n\t\tbb_perror_msg_and_die(\"Couldnt chdir to %s\", rootdir);\n\t}\n\n\tumask(0);\n\n\tprintf(\"rootdir=%s\\n\", rootdir);\n\tif (line) {\n\t\tprintf(\"table='%s'\\n\", line);\n\t} else {\n\t\tprintf(\"table=<stdin>\\n\");\n\t}\n\n\twhile ((line = bb_get_chomped_line_from_file(table))) {\n\t\tchar type;\n\t\tunsigned int mode = 0755;\n\t\tunsigned int major = 0;\n\t\tunsigned int minor = 0;\n\t\tunsigned int count = 0;\n\t\tunsigned int increment = 0;\n\t\tunsigned int start = 0;\n\t\tchar xattr[255];\n\t\tchar name[4096];\n\t\tchar user[41];\n\t\tchar group[41];\n\t\tuid_t uid;\n\t\tgid_t gid;\n\n\t\tlinenum++;\n\n\t\tif (1 == sscanf(line, \" |xattr %254s\", xattr)) {\n#ifdef EXTENDED_ATTRIBUTES\n\t\t\tif (!full_name)\n\t\t\t\tbb_error_msg_and_die(\"line %d should be after a file\\n\", linenum);\n\n\t\t\tif (bb_set_xattr(full_name, xattr) < 0)\n\t\t\t\tbb_error_msg_and_die(\"can't set cap %s on file %s\\n\", xattr, full_name);\n#else\n\t\t\tbb_error_msg_and_die(\"line %d not supported: '%s'\\nDid you forget to enable \"\n\t\t\t\t\t     \"BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES?\\n\",\n\t\t\t\t\t     linenum, line);\n#endif /* EXTENDED_ATTRIBUTES */\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ((2 > sscanf(line, \"%4095s %c %o %40s %40s %u %u %u %u %u\", name,\n\t\t\t\t\t\t&type, &mode, user, group, &major,\n\t\t\t\t\t\t&minor, &start, &increment, &count)) ||\n\t\t\t\t((major | minor | start | count | increment) > 0xfffff))\n\t\t{\n\t\t\tif (*line=='\\0' || *line=='#' || isspace(*line))\n\t\t\t\tcontinue;\n\t\t\tbb_error_msg(\"line %d invalid: '%s'\\n\", linenum, line);\n\t\t\tret = EXIT_FAILURE;\n\t\t\tcontinue;\n\t\t}\n\t\tif (name[0] == '#') {\n\t\t\tcontinue;\n\t\t}\n\t\tif (*group) {\n\t\t\tgid = get_ug_id(group, my_getgrnam);\n\t\t} else {\n\t\t\tgid = getgid();\n\t\t}\n\t\tif (*user) {\n\t\t\tuid = get_ug_id(user, my_getpwnam);\n\t\t} else {\n\t\t\tuid = getuid();\n\t\t}\n\n\t\t/*\n\t\t * free previous full name\n\t\t * we don't de-allocate full_name at the end of the parsing,\n\t\t * because we may need it if the next line is an xattr.\n\t\t */\n\t\tfree(full_name);\n\t\tfull_name = concat_path_file(rootdir, name);\n\n\t\tif (type == 'd') {\n\t\t\tbb_make_directory(full_name, mode | S_IFDIR, FILEUTILS_RECUR);\n\t\t\tif (chown(full_name, uid, gid) == -1) {\n\t\t\t\tbb_perror_msg(\"line %d: chown failed for %s\", linenum, full_name);\n\t\t\t\tret = EXIT_FAILURE;\n\t\t\t\tgoto loop;\n\t\t\t}\n\t\t\tif ((mode != -1) && (chmod(full_name, mode) < 0)){\n\t\t\t\tbb_perror_msg(\"line %d: chmod failed for %s\", linenum, full_name);\n\t\t\t\tret = EXIT_FAILURE;\n\t\t\t\tgoto loop;\n\t\t\t}\n\t\t} else if (type == 'f' || type == 'F') {\n\t\t\tstruct stat st;\n\t\t\tif ((stat(full_name, &st) < 0 || !S_ISREG(st.st_mode))) {\n\t\t\t\tif (type == 'F') {\n\t\t\t\t\tcontinue; /*Ignore optional files*/\n\t\t\t\t}\n\t\t\t\tbb_perror_msg(\"line %d: regular file '%s' does not exist\", linenum, full_name);\n\t\t\t\tret = EXIT_FAILURE;\n\t\t\t\tgoto loop;\n\t\t\t}\n\t\t\tif (chown(full_name, uid, gid) == -1) {\n\t\t\t\tbb_perror_msg(\"line %d: chown failed for %s\", linenum, full_name);\n\t\t\t\tret = EXIT_FAILURE;\n\t\t\t\tgoto loop;\n\t\t\t}\n\t\t\tif ((mode != -1) && (chmod(full_name, mode) < 0)){\n\t\t\t\tbb_perror_msg(\"line %d: chmod failed for %s\", linenum, full_name);\n\t\t\t\tret = EXIT_FAILURE;\n\t\t\t\tgoto loop;\n\t\t\t}\n\t\t} else if (type == 'r') {\n\t\t\trecursive_uid = uid;\n\t\t\trecursive_gid = gid;\n\t\t\trecursive_mode = mode;\n\t\t\tif (nftw(full_name, bb_recursive, 20, FTW_MOUNT | FTW_PHYS) < 0) {\n\t\t\t\tbb_perror_msg(\"line %d: recursive failed for %s\", linenum, full_name);\n\t\t\t\tret = EXIT_FAILURE;\n\t\t\t\tgoto loop;\n\t\t\t}\n\t\t} else\n\t\t{\n\t\t\tdev_t rdev;\n\t\t\tunsigned i;\n\t\t\tchar *full_name_inc;\n\n\t\t\tif (type == 'p') {\n\t\t\t\tmode |= S_IFIFO;\n\t\t\t}\n\t\t\telse if (type == 'c') {\n\t\t\t\tmode |= S_IFCHR;\n\t\t\t}\n\t\t\telse if (type == 'b') {\n\t\t\t\tmode |= S_IFBLK;\n\t\t\t} else {\n\t\t\t\tbb_error_msg(\"line %d: Unsupported file type %c\", linenum, type);\n\t\t\t\tret = EXIT_FAILURE;\n\t\t\t\tgoto loop;\n\t\t\t}\n\n\t\t\tfull_name_inc = xmalloc(strlen(full_name) + sizeof(int)*3 + 2);\n\t\t\tif (count)\n\t\t\t\tcount--;\n\t\t\tfor (i = start; i <= start + count; i++) {\n\t\t\t\tsprintf(full_name_inc, count ? \"%s%u\" : \"%s\", full_name, i);\n\t\t\t\trdev = makedev(major, minor + (i - start) * increment);\n\t\t\t\tif (mknod(full_name_inc, mode, rdev) < 0) {\n\t\t\t\t\tbb_perror_msg(\"line %d: can't create node %s\", linenum, full_name_inc);\n\t\t\t\t\tret = EXIT_FAILURE;\n\t\t\t\t} else if (chown(full_name_inc, uid, gid) < 0) {\n\t\t\t\t\tbb_perror_msg(\"line %d: can't chown %s\", linenum, full_name_inc);\n\t\t\t\t\tret = EXIT_FAILURE;\n\t\t\t\t} else if (chmod(full_name_inc, mode) < 0) {\n\t\t\t\t\tbb_perror_msg(\"line %d: can't chmod %s\", linenum, full_name_inc);\n\t\t\t\t\tret = EXIT_FAILURE;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfree(full_name_inc);\n\t\t}\nloop:\n\t\tfree(line);\n\t}\n\tfclose(table);\n\n\treturn ret;\n}\n"
  },
  {
    "path": "package/makedevs/makedevs.mk",
    "content": "################################################################################\n#\n# makedevs\n#\n################################################################################\n\nMAKEDEVS_LICENSE = GPL-2.0\n\nHOST_MAKEDEVS_CFLAGS = $(HOST_CFLAGS)\nHOST_MAKEDEVS_LDFLAGS = $(HOST_LDFLAGS)\n\nifeq ($(BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES),y)\nHOST_MAKEDEVS_DEPENDENCIES += host-libcap\nHOST_MAKEDEVS_CFLAGS += -DEXTENDED_ATTRIBUTES\nHOST_MAKEDEVS_LDFLAGS += -lcap\nendif\n\ndefine HOST_MAKEDEVS_EXTRACT_CMDS\n\tcp $(HOST_MAKEDEVS_PKGDIR)/makedevs.c $(@D)\nendef\n\ndefine HOST_MAKEDEVS_BUILD_CMDS\n\t$(HOSTCC) $(HOST_MAKEDEVS_CFLAGS) $(@D)/makedevs.c \\\n\t\t-o $(@D)/makedevs $(HOST_MAKEDEVS_LDFLAGS)\nendef\n\ndefine HOST_MAKEDEVS_INSTALL_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/makedevs $(HOST_DIR)/bin/makedevs\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/makedumpfile/0001-PATCH-Define-PN_XNUM-if-missing.patch",
    "content": "From: Petr Tesarik <ptesarik@suse.com>\nSubject: [PATCH] Define PN_XNUM if missing\nUpstream: never, build fix for old distros\n\nOlder elfutils did not define this constant.\n\nSigned-off-by: Petr Tesarik <ptesarik@suse.com>\nSigned-off-by: Alexander Egorenkov <egorenar-dev@posteo.net>\n---\n elf_info.h |    4 ++++\n 1 file changed, 4 insertions(+)\n\n--- a/elf_info.h\n+++ b/elf_info.h\n@@ -19,6 +19,10 @@\n #include <elf.h>\n #include <sys/types.h>\n \n+#ifndef PN_XNUM\n+#define PN_XNUM\t\t0xffff\n+#endif\n+\n #define KEXEC_CORE_NOTE_NAME \"CORE\"\n #define KEXEC_CORE_NOTE_NAME_BYTES sizeof(KEXEC_CORE_NOTE_NAME)\n \n"
  },
  {
    "path": "package/makedumpfile/Config.in",
    "content": "config BR2_PACKAGE_MAKEDUMPFILE_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\tdefault y if BR2_arm || BR2_armeb\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdefault y if BR2_s390x\n\tdefault y if BR2_sparc64\n\ncomment \"makedumpfile needs a uClibc or glibc toolchain w/ wchar, dynamic library, threads\"\n\tdepends on BR2_PACKAGE_MAKEDUMPFILE_ARCH_SUPPORTS\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)\n\nconfig BR2_PACKAGE_MAKEDUMPFILE\n\tbool \"makedumpfile\"\n\tdepends on BR2_PACKAGE_MAKEDUMPFILE_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS # dlopen\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_ELFUTILS\n\tselect BR2_PACKAGE_XZ\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Makes a small dumpfile of kdump.\n\n\t  https://github.com/makedumpfile/makedumpfile\n"
  },
  {
    "path": "package/makedumpfile/makedumpfile.hash",
    "content": "# Locally computed:\nsha256  393ea8f22393c059ad21de9b1c3f45d9d0d8dbeb0ccb1417815b835d03f7c350  makedumpfile-1.6.9.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/makedumpfile/makedumpfile.mk",
    "content": "################################################################################\n#\n# makedumpfile\n#\n################################################################################\n\nMAKEDUMPFILE_VERSION = 1.6.9\nMAKEDUMPFILE_SITE = $(call github,makedumpfile,makedumpfile,$(MAKEDUMPFILE_VERSION))\nMAKEDUMPFILE_DEPENDENCIES = bzip2 elfutils xz zlib\nMAKEDUMPFILE_LICENSE = GPL-2.0\nMAKEDUMPFILE_LICENSE_FILES = COPYING\n\nifeq ($(BR2_powerpc),y)\nMAKEDUMPFILE_TARGET = powerpc32\nelse\nMAKEDUMPFILE_TARGET = $(BR2_ARCH)\nendif\n\nMAKEDUMPFILE_MAKE_OPTS = \\\n\tTARGET=$(MAKEDUMPFILE_TARGET) \\\n\tLINKTYPE=dynamic\n\nifeq ($(BR2_PACKAGE_LZO),y)\nMAKEDUMPFILE_DEPENDENCIES += lzo\nMAKEDUMPFILE_MAKE_OPTS += USELZO=on\nendif\n\nifeq ($(BR2_PACKAGE_SNAPPY),y)\nMAKEDUMPFILE_DEPENDENCIES += snappy\nMAKEDUMPFILE_MAKE_OPTS += USESNAPPY=on\nendif\n\ndefine MAKEDUMPFILE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(MAKEDUMPFILE_MAKE_OPTS)\nendef\n\ndefine MAKEDUMPFILE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install \\\n\t\tDESTDIR=\"$(TARGET_DIR)\"\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mali-t76x/Config.in",
    "content": "config BR2_PACKAGE_MALI_T76X\n\tbool \"mali-t76x\"\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on BR2_ARM_EABIHF\n\tdepends on BR2_arm\n\tselect BR2_PACKAGE_MESA3D_HEADERS\n\tselect BR2_PACKAGE_HAS_LIBEGL\n\tselect BR2_PACKAGE_HAS_LIBGLES\n\thelp\n\t  Install the binary user-space components for the ARM Mali\n\t  Midgard T76X GPU. This package requires a kernel with the\n\t  ARM Mali Midgard GPU Kernel Drivers enabled.\n\n\t  http://malideveloper.arm.com/resources/drivers/\n\nif BR2_PACKAGE_MALI_T76X\n\nconfig BR2_PACKAGE_PROVIDES_LIBEGL\n\tdefault \"mali-t76x\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBGLES\n\tdefault \"mali-t76x\"\n\nendif\n\ncomment \"mali-t76x needs a glibc toolchain with armhf enabled\"\n\tdepends on BR2_arm\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF\n"
  },
  {
    "path": "package/mali-t76x/egl.pc",
    "content": "prefix=/usr/\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: egl\nDescription: ARM Mali implementation of EGL\nVersion: 1.5\nRequires:\nLibs: -L${libdir} -lEGL -lGLESv2\nCflags: -I${includedir} -DEGL_NO_X11\n"
  },
  {
    "path": "package/mali-t76x/glesv2.pc",
    "content": "prefix=/usr\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: glesv2\nDescription: ARM Mali implementation of OpenGL ESv2\nVersion: 2.0\nRequires:\nLibs: -L${libdir} -lGLESv2 -lGLESv1_CM\nCflags: -I${includedir} -DEGL_NO_X11\n"
  },
  {
    "path": "package/mali-t76x/mali-t76x.hash",
    "content": "# Locally computed:\nsha256  5a0b00438edc8066b374481d3332a43c07ec2bd3bc73265983a968970f754902  mali-t76x_r5p0-06rel0_linux_1+fbdev.tar.gz\n"
  },
  {
    "path": "package/mali-t76x/mali-t76x.mk",
    "content": "################################################################################\n#\n# mali-t76x\n#\n################################################################################\n\nMALI_T76X_VERSION = r5p0-06rel0\nMALI_T76X_SOURCE = mali-t76x_$(MALI_T76X_VERSION)_linux_1+fbdev.tar.gz\nMALI_T76X_SITE = http://malideveloper.arm.com/downloads/drivers/binary/$(MALI_T76X_VERSION)\nMALI_T76X_DEPENDENCIES = mesa3d-headers\nMALI_T76X_INSTALL_STAGING = YES\nMALI_T76X_PROVIDES = libegl libgles\n\ndefine MALI_T76X_INSTALL_STAGING_CMDS\n\t$(INSTALL) -m 755 $(@D)/*.so $(STAGING_DIR)/usr/lib/\n\n\t$(INSTALL) -D -m 0644 package/mali-t76x/egl.pc \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/egl.pc\n\t$(INSTALL) -D -m 0644 package/mali-t76x/glesv2.pc \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/glesv2.pc\nendef\n\ndefine MALI_T76X_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 $(@D)/*.so $(TARGET_DIR)/usr/lib/\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mariadb/0001-add-extra-check-for-librt.patch",
    "content": "From 960c74ec60962f707bd41724edaa2640c0324400 Mon Sep 17 00:00:00 2001\nFrom: Ryan Coe <bluemrp9@gmail.com>\nDate: Thu, 27 Oct 2016 20:33:21 -0700\nSubject: [PATCH] add extra check for librt\n\nhttps://jira.mariadb.org/browse/MDEV-10841\n\nSigned-off-by: Ryan Coe <bluemrp9@gmail.com>\n[Rebased on mariadb-10.3.30]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n configure.cmake | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/configure.cmake b/configure.cmake\nindex 1b85c31b..4a1cd847 100644\n--- a/configure.cmake\n+++ b/configure.cmake\n@@ -134,6 +134,9 @@ IF(UNIX)\n   IF(NOT LIBRT)\n     MY_SEARCH_LIBS(clock_gettime rt LIBRT)\n   ENDIF()\n+  IF(NOT LIBRT)\n+    MY_SEARCH_LIBS(posix_spawn_file_actions_addclose rt LIBRT)\n+  ENDIF()\n   set(THREADS_PREFER_PTHREAD_FLAG ON)\n   FIND_PACKAGE(Threads)\n \n-- \n2.32.0\n\n"
  },
  {
    "path": "package/mariadb/S97mysqld",
    "content": "#!/bin/sh\n#\n# mysql\n#\n\nMYSQL_LIB=\"/var/lib/mysql\"\nMYSQL_RUN=\"/run/mysql\"\nMYSQL_PIDFILE=\"$MYSQL_RUN/mysqld.pid\"\nMYSQL_LOG=\"/var/log/mysql\"\nMYSQL_LOGFILE=\"$MYSQL_LOG/mysqld.log\"\nMYSQL_BIN=\"/usr/bin\"\n\nwait_for_ready() {\n\tWAIT_DELAY=5\n\twhile [ $WAIT_DELAY -gt 0 ]; do\n\t\tif $MYSQL_BIN/mysqladmin ping > /dev/null 2>&1; then\n\t\t\treturn 0\n\t\tfi\n\t\tsleep 1\n\t\t: $((WAIT_DELAY -= 1))\n\tdone\n\treturn 1\n}\n\nstart() {\n\t# stderr is redirected to prevent a warning\n\t# if mysql lib directory doesn't exist\n\tif [ `ls -1 $MYSQL_LIB 2> /dev/null | wc -l` = 0 ] ; then\n\t\tprintf \"Creating mysql system tables ... \"\n\t\t$MYSQL_BIN/mysql_install_db --basedir=/usr \\\n\t\t\t--datadir=$MYSQL_LIB > /dev/null 2>&1\n\t\tif [ $? != 0 ]; then\n\t\t\techo \"FAIL\"\n\t\t\texit 1\n\t\tfi\n\t\tchown -R mysql:mysql $MYSQL_LIB\n\t\techo \"OK\"\n\tfi\n\n\t# mysqld runs as user mysql, but /run is only writable by root\n\t# so create a subdirectory for mysql.\n\tinstall -d -o mysql -g root -m 0755 $MYSQL_RUN\n\n\t# Also create logging directory as user mysql.\n\tinstall -d -o mysql -g root -m 0755 $MYSQL_LOG\n\n\t# We don't use start-stop-daemon because mysqld has its own\n\t# wrapper script.\n\tprintf \"Starting mysql ... \"\n\t$MYSQL_BIN/mysqld_safe --pid-file=$MYSQL_PIDFILE --user=mysql \\\n\t\t--log-error=$MYSQL_LOGFILE > /dev/null 2>&1 &\n\twait_for_ready\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n\tprintf \"Stopping mysql ... \"\n\tif [ -f $MYSQL_PIDFILE ]; then\n\t\tkill `cat $MYSQL_PIDFILE` > /dev/null 2>&1\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\t;;\nesac\n"
  },
  {
    "path": "package/mariadb/mariadb.hash",
    "content": "# From https://downloads.mariadb.org/mariadb/10.3.30\nsha256  bd8735c65bdb7ebcd5d779fb9d3de3f2fcd319ad6482278d73dfe7301ad4ae1b  mariadb-10.3.30.tar.gz\nsha512  742c30b3ebc0b6d36b98d4e7a7fb511098142e72d8f42cbfa73a0bdea2059be17e790fbda4732329bbd99e4b50b13cf18e8122964a473e0b62170ab869eca8fc  mariadb-10.3.30.tar.gz\n\n# Hash for license files\nsha256  a4665c1189fe31e0bbc27e9b55439df7dad6e99805407fe58d78da7aabe678f8  README.md\nsha256  240a15a1d0f34d3abca462cdb7e5fb89470967563f16b0e71169e51c1e74cf2b  COPYING\n"
  },
  {
    "path": "package/mariadb/mariadb.mk",
    "content": "################################################################################\n#\n# mariadb\n#\n################################################################################\n\nMARIADB_VERSION = 10.3.30\nMARIADB_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MARIADB_VERSION)/source\nMARIADB_LICENSE = GPL-2.0 (server), GPL-2.0 with FLOSS exception (GPL client library), LGPL-2.0 (LGPL client library)\n# Tarball no longer contains LGPL license text\n# https://jira.mariadb.org/browse/MDEV-12297\nMARIADB_LICENSE_FILES = README.md COPYING\nMARIADB_CPE_ID_VENDOR = mariadb\nMARIADB_SELINUX_MODULES = mysql\nMARIADB_INSTALL_STAGING = YES\nMARIADB_PROVIDES = mysql\n\nMARIADB_DEPENDENCIES = \\\n\thost-mariadb \\\n\tncurses \\\n\topenssl \\\n\tzlib \\\n\tlibaio \\\n\tlibxml2\n\n# use bundled GPL-2.0+ licensed readline as package/readline is GPL-3.0+\nMARIADB_CONF_OPTS += -DWITH_READLINE=ON\n\n# We won't need unit tests\nMARIADB_CONF_OPTS += -DWITH_UNIT_TESTS=0\n\n# Mroonga needs libstemmer. Some work still needs to be done before it can be\n# included in buildroot. Disable it for now.\nMARIADB_CONF_OPTS += -DWITHOUT_MROONGA=1\n\n# This value is determined automatically during straight compile by compiling\n# and running a test code. You cannot do that during cross-compile. However the\n# stack grows downward in most if not all modern systems. The only exception I\n# am aware of is PA-RISC which is not supported by buildroot. Therefore it makes\n# sense to hardcode the value. If an arch is added the stack of which grows up\n# one should expect unpredictable behavior at run time.\nMARIADB_CONF_OPTS += -DSTACK_DIRECTION=-1\n\n# Jemalloc was added for TokuDB. Since its configure script seems somewhat broken\n# when it comes to cross-compilation we shall disable it and also disable TokuDB.\nMARIADB_CONF_OPTS += -DWITH_JEMALLOC=no -DWITHOUT_TOKUDB=1\n\n# RocksDB fails to build in some configurations with the following build error:\n# ./output/build/mariadb-10.2.17/storage/rocksdb/rocksdb/utilities/backupable/backupable_db.cc:327:38:\n# error: field 'result' has incomplete type 'std::promise<rocksdb::BackupEngineImpl::CopyOrCreateResult>'\n#     std::promise<CopyOrCreateResult> result;\n#\n# To work around the issue, we disable RocksDB\nMARIADB_CONF_OPTS += -DWITHOUT_ROCKSDB=1\n\n# Make it explicit that we are cross-compiling\nMARIADB_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1\n\n# Explicitly disable dtrace to avoid detection of a host version\nMARIADB_CONF_OPTS += -DENABLE_DTRACE=0\n\nifeq ($(BR2_PACKAGE_MARIADB_SERVER),y)\nifeq ($(BR2_PACKAGE_MARIADB_SERVER_EMBEDDED),y)\nMARIADB_CONF_OPTS += -DWITH_EMBEDDED_SERVER=ON\nelse\nMARIADB_CONF_OPTS += -DWITH_EMBEDDED_SERVER=OFF\nendif\nelse\nMARIADB_CONF_OPTS += -DWITHOUT_SERVER=ON\nendif\n\nMARIADB_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nMARIADB_CXXFLAGS += -latomic\nendif\n\nMARIADB_CONF_OPTS += \\\n\t-DCMAKE_CXX_FLAGS=\"$(MARIADB_CXXFLAGS)\" \\\n\t-DINSTALL_DOCDIR=share/doc/mariadb-$(MARIADB_VERSION) \\\n\t-DINSTALL_DOCREADMEDIR=share/doc/mariadb-$(MARIADB_VERSION) \\\n\t-DINSTALL_MANDIR=share/man \\\n\t-DINSTALL_MYSQLSHAREDIR=share/mysql \\\n\t-DINSTALL_MYSQLTESTDIR=share/mysql/test \\\n\t-DINSTALL_PLUGINDIR=lib/mysql/plugin \\\n\t-DINSTALL_SBINDIR=sbin \\\n\t-DINSTALL_SCRIPTDIR=bin \\\n\t-DINSTALL_SQLBENCHDIR=share/mysql/bench \\\n\t-DINSTALL_SUPPORTFILESDIR=share/mysql \\\n\t-DMYSQL_DATADIR=/var/lib/mysql \\\n\t-DMYSQL_UNIX_ADDR=$(MYSQL_SOCKET)\n\nHOST_MARIADB_DEPENDENCIES = host-openssl\nHOST_MARIADB_CONF_OPTS += -DWITH_SSL=system\n\n# Some helpers must be compiled for host in order to crosscompile mariadb for\n# the target. They are then included by import_executables.cmake which is\n# generated during the build of the host helpers. It is not necessary to build\n# the whole host package, only the \"import_executables\" target.\n# -DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake\n# must then be passed to cmake during target build.\n# see also https://mariadb.com/kb/en/mariadb/cross-compiling-mariadb/\nHOST_MARIADB_MAKE_OPTS = import_executables\n\nMARIADB_CONF_OPTS += \\\n\t-DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake\n\n# Don't install host-mariadb. We just need to build import_executable\n# Therefore only run 'true' and do nothing, not even the default action.\nHOST_MARIADB_INSTALL_CMDS = true\n\nifeq ($(BR2_PACKAGE_MARIADB_SERVER),y)\ndefine MARIADB_USERS\n\tmysql -1 mysql -1 * /var/lib/mysql - - MySQL Server\nendef\n\ndefine MARIADB_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/mariadb/S97mysqld \\\n\t\t$(TARGET_DIR)/etc/init.d/S97mysqld\nendef\n\ndefine MARIADB_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/mariadb/mysqld.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/mysqld.service\nendef\nendif\n\n# We don't need mysql_config or mariadb_config on the target as it's\n# only useful in staging. We also don't need the test suite on the target.\ndefine MARIADB_POST_INSTALL\n\tmkdir -p $(TARGET_DIR)/var/lib/mysql\n\t$(RM) $(TARGET_DIR)/usr/bin/mysql_config\n\t$(RM) $(TARGET_DIR)/usr/bin/mariadb_config\n\t$(RM) -r $(TARGET_DIR)/usr/share/mysql/test\nendef\n\nMARIADB_POST_INSTALL_TARGET_HOOKS += MARIADB_POST_INSTALL\n\n# overwrite cross-compiled mariadb_config executable by an native one\ndefine MARIADB_POST_STAGING_INSTALL\n\t$(HOSTCC) -I$(@D)/libmariadb/include \\\n\t\t-o $(STAGING_DIR)/usr/bin/mariadb_config \\\n\t\t$(@D)/libmariadb/mariadb_config/mariadb_config.c\nendef\nMARIADB_POST_INSTALL_STAGING_HOOKS += MARIADB_POST_STAGING_INSTALL\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/mariadb/mysqld.service",
    "content": "[Unit]\nDescription=MySQL database server\n\n[Service]\nExecStartPre=/bin/sh -c 'test \"`ls -1 /var/lib/mysql | wc -l`\" != \"0\" || mysql_install_db --basedir=/usr --datadir=/var/lib/mysql && chown -R mysql:mysql /var/lib/mysql'\nExecStartPre=install -d -o mysql -g root -m 0755 /var/log/mysql\nExecStart=/usr/bin/mysqld_safe --log-error=/var/log/mysql/mysqld.log\nRestart=always\nUser=mysql\nRuntimeDirectory=mysql\nRuntimeDirectoryMode=0755\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/matchbox/0001-defaulttheme.patch",
    "content": "[PATCH] fix mbtheme build issue when png support is disabled\n\nDEFAULTTHEME{,NAME} is not defined when png support is disabled, leading\nto compile errors in mbtheme.c:\n\nmbtheme.c: In function 'show_parse_error':\nmbtheme.c:2422:28: error: 'DEFAULTTHEME' undeclared (first use in this function)\nmbtheme.c:2422:28: note: each undeclared identifier is reported only once for each function it appears in\nmbtheme.c: In function 'mbtheme_init':\nmbtheme.c:2448:30: error: 'DEFAULTTHEME' undeclared (first use in this function)\nmbtheme.c:2470:25: error: 'DEFAULTTHEMENAME' undeclared (first use in this function)\n\nFix it by unconditionally defining them as the values used are the same\nin png / !png cases anyway.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n---\n src/structs.h |    9 ---------\n 1 file changed, 9 deletions(-)\n\nIndex: matchbox-window-manager-1.2/src/structs.h\n===================================================================\n--- matchbox-window-manager-1.2.orig/src/structs.h\n+++ matchbox-window-manager-1.2/src/structs.h\n@@ -81,8 +81,6 @@\n \n #define GENERIC_ICON        PKGDATADIR \"/mbnoapp.xpm\"\n \n-#ifdef MB_HAVE_PNG\n-\n #define DEFAULT_THEME       DATADIR \"/themes/Default/matchbox/theme.xml\"\n \n #define DEFAULTTHEME       DATADIR \"/themes/Default/matchbox/theme.xml\"\n@@ -91,13 +89,6 @@\n \n #define DEFAULTTHEMENAME  \"Default\"\n \n-#else\n-\n-#define DEFAULT_THEME       DATADIR \"/themes/Default/matchbox/theme.xml\"\n-#define DEFAULT_THEME_NAME  \"Default\"\n-\n-#endif\n-\n #define CONFDEFAULTS       PKGDATADIR \"/defaults\"\n \n /* Simple Macros  */\n"
  },
  {
    "path": "package/matchbox/0002-src-Fix-build-with-gcc-10.patch",
    "content": "From 844f61069896fe3f549ab425d731c061028f697c Mon Sep 17 00:00:00 2001\nFrom: Adrian Bunk <bunk@stusta.de>\nDate: Tue, 12 May 2020 09:44:05 +0300\nSubject: src: Fix build with gcc 10\n\ngcc 10 enables -fno-common by default which fails without these typedefs\n\nSigned-off-by: Adrian Bunk <bunk@stusta.de>\nSigned-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>\n\n[Retrieved from:\nhttp://git.yoctoproject.org/cgit/cgit.cgi/matchbox-window-manager/commit/?id=844f61069896fe3f549ab425d731c061028f697c]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/mbtheme.h | 2 +-\n src/structs.h | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/src/mbtheme.h b/src/mbtheme.h\nindex aa9a7c5..ad03bde 100644\n--- a/src/mbtheme.h\n+++ b/src/mbtheme.h\n@@ -46,7 +46,7 @@ typedef struct _mb_theme_param\n \n } MBThemeParam;\n \n-enum {\n+typedef enum {\n   LAYER_GRADIENT_HORIZ = 1,\n   LAYER_GRADIENT_VERT,\n   LAYER_LABEL,\ndiff --git a/src/structs.h b/src/structs.h\nindex 24985e7..8f53e72 100644\n--- a/src/structs.h\n+++ b/src/structs.h\n@@ -148,7 +148,7 @@\n \n /* Atoms, if you change these check ewmh_init() first */\n \n-enum {\n+typedef enum {\n   WM_STATE = 0,\n   WM_CHANGE_STATE,\n   WM_PROTOCOLS,\n-- \ncgit v1.2.2-1-g5e49\n\n"
  },
  {
    "path": "package/matchbox/Config.in",
    "content": "menuconfig BR2_PACKAGE_MATCHBOX\n\tbool \"matchbox\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_MATCHBOX_LIB\n\thelp\n\t  Matchbox is an Open Source base environment for the X Window\n\t  System running on non-desktop embedded platforms such as\n\t  handhelds, set-top boxes, kiosks and anything else for which\n\t  screen space, input mechanisms or system resources are\n\t  limited.\n\n\t  https://www.yoctoproject.org/tools-resources/projects/matchbox\n\nif BR2_PACKAGE_MATCHBOX\n\nconfig BR2_PACKAGE_MATCHBOX_SM\n\tbool \"session manager\"\n\tselect BR2_PACKAGE_XLIB_LIBSM\n\thelp\n\t  Enable support for the Session Manager.\n\ncomment \"matchbox utilities\"\n\nsource \"package/matchbox-common/Config.in\"\nsource \"package/matchbox-desktop/Config.in\"\nsource \"package/matchbox-fakekey/Config.in\"\nsource \"package/matchbox-keyboard/Config.in\"\nsource \"package/matchbox-lib/Config.in\"\nsource \"package/matchbox-panel/Config.in\"\nsource \"package/matchbox-startup-monitor/Config.in\"\n\nendif\n"
  },
  {
    "path": "package/matchbox/matchbox.hash",
    "content": "# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-window-manager/1.2/matchbox-window-manager-1.2.tar.bz2.md5\nmd5  3e158dcf57823b55c926d95b245500fb  matchbox-window-manager-1.2.tar.bz2\n\n# Locally computed\nsha256  81a23a4af797cf350759fd5ac738797015a66dd5dba2f3d9f3c6908506c1ceff  matchbox-window-manager-1.2.tar.bz2\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/matchbox/matchbox.mk",
    "content": "################################################################################\n#\n# matchbox\n#\n################################################################################\n\nMATCHBOX_VERSION = 1.2\nMATCHBOX_SOURCE = matchbox-window-manager-$(MATCHBOX_VERSION).tar.bz2\nMATCHBOX_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-window-manager/$(MATCHBOX_VERSION)\nMATCHBOX_LICENSE = GPL-2.0+\nMATCHBOX_LICENSE_FILES = COPYING\n\nMATCHBOX_DEPENDENCIES = expat matchbox-lib\nMATCHBOX_CONF_OPTS = \\\n\t--enable-expat \\\n\t--disable-gconf \\\n\t--disable-composite \\\n\t--disable-standalone \\\n\t--disable-standalone-xft\n\n# Workaround bug in configure script\nMATCHBOX_CONF_ENV = expat=yes\n\nifeq ($(BR2_PACKAGE_STARTUP_NOTIFICATION),y)\nMATCHBOX_CONF_OPTS += --enable-startup-notification\nMATCHBOX_DEPENDENCIES += startup-notification\nelse\nMATCHBOX_CONF_OPTS += --disable-startup-notification\nendif\n\nifeq ($(BR2_PACKAGE_MATCHBOX_SM),y)\nMATCHBOX_CONF_OPTS += --enable-session\nMATCHBOX_DEPENDENCIES += xlib_libSM\nelse\nMATCHBOX_CONF_OPTS += --disable-session\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y)\nMATCHBOX_DEPENDENCIES += xlib_libXcursor\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y)\nMATCHBOX_DEPENDENCIES += xlib_libXfixes\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/matchbox-common/Config.in",
    "content": "config BR2_PACKAGE_MATCHBOX_COMMON\n\tbool \"matchbox-common\"\n\tdepends on BR2_PACKAGE_MATCHBOX_PANEL || BR2_PACKAGE_MATCHBOX_DESKTOP\n\tselect BR2_PACKAGE_MATCHBOX_LIB\n\thelp\n\t  Common desktop folders and matchbox-session script.\n\n\t  http://git.yoctoproject.org/cgit/cgit.cgi/matchbox-common/\n\nconfig BR2_PACKAGE_MATCHBOX_COMMON_PDA\n\tbool \"PDA style app folder\"\n\tdepends on BR2_PACKAGE_MATCHBOX_COMMON\n"
  },
  {
    "path": "package/matchbox-common/matchbox-common.hash",
    "content": "# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-common/0.9/matchbox-common-0.9.1.tar.bz2.md5\nmd5\t8e8ba0ee170a9ac78fdc583b00ccf76b\tmatchbox-common-0.9.1.tar.bz2\n# Locally computed\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/matchbox-common/matchbox-common.mk",
    "content": "################################################################################\n#\n# matchbox-common\n#\n################################################################################\n\nMATCHBOX_COMMON_VERSION_MAJOR = 0.9\nMATCHBOX_COMMON_VERSION = $(MATCHBOX_COMMON_VERSION_MAJOR).1\nMATCHBOX_COMMON_SOURCE = matchbox-common-$(MATCHBOX_COMMON_VERSION).tar.bz2\nMATCHBOX_COMMON_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-common/$(MATCHBOX_COMMON_VERSION_MAJOR)\nMATCHBOX_COMMON_LICENSE = GPL-2.0+\nMATCHBOX_COMMON_LICENSE_FILES = COPYING\nMATCHBOX_COMMON_DEPENDENCIES = matchbox-lib\n\nifeq ($(strip $(BR2_PACKAGE_MATCHBOX_COMMON_PDA)),y)\nMATCHBOX_COMMON_CONF_OPTS += --enable-pda-folders\nelse\nMATCHBOX_COMMON_CONF_OPTS += --disable-pda-folders\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/matchbox-desktop/Config.in",
    "content": "config BR2_PACKAGE_MATCHBOX_DESKTOP\n\tbool \"matchbox-desktop\"\n\tselect BR2_PACKAGE_MATCHBOX_LIB\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  A PDA style application launcher or 'item browser'.\n\n\t  http://git.yoctoproject.org/cgit/cgit.cgi/matchbox-desktop\n"
  },
  {
    "path": "package/matchbox-desktop/matchbox-desktop.hash",
    "content": "# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-desktop/0.9/matchbox-desktop-0.9.1.tar.bz2.md5\nmd5\t3335a30b1a1aacfb39f23b505254765c\tmatchbox-desktop-0.9.1.tar.bz2\n# Locally computed\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/matchbox-desktop/matchbox-desktop.mk",
    "content": "################################################################################\n#\n# matchbox-desktop\n#\n################################################################################\n\nMATCHBOX_DESKTOP_VERSION_MAJOR = 0.9\nMATCHBOX_DESKTOP_VERSION = $(MATCHBOX_DESKTOP_VERSION_MAJOR).1\nMATCHBOX_DESKTOP_SOURCE = matchbox-desktop-$(MATCHBOX_DESKTOP_VERSION).tar.bz2\nMATCHBOX_DESKTOP_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-desktop/$(MATCHBOX_DESKTOP_VERSION_MAJOR)\nMATCHBOX_DESKTOP_LICENSE = GPL-2.0+\nMATCHBOX_DESKTOP_LICENSE_FILES = COPYING\nMATCHBOX_DESKTOP_DEPENDENCIES = matchbox-lib zlib\n\n# The bundled configure script does not properly replace LIBADD_DL, so\n# we force an autoreconf even if we don't have any patches touching\n# configure.ac/Makefile.am.\nMATCHBOX_DESKTOP_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_STARTUP_NOTIFICATION),y)\nMATCHBOX_DESKTOP_CONF_OPTS += --enable-startup-notification\nMATCHBOX_DESKTOP_DEPENDENCIES += startup-notification\nelse\nMATCHBOX_DESKTOP_CONF_OPTS += --disable-startup-notification\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/matchbox-fakekey/Config.in",
    "content": "config BR2_PACKAGE_MATCHBOX_FAKEKEY\n\tbool \"matchbox-fakekey\"\n\tselect BR2_PACKAGE_MATCHBOX_LIB\n\tselect BR2_PACKAGE_XLIB_LIBXTST\n\thelp\n\t  Library for simulating key press events under X11.\n\n\t  http://git.yoctoproject.org/cgit/cgit.cgi/libfakekey/\n"
  },
  {
    "path": "package/matchbox-fakekey/matchbox-fakekey.hash",
    "content": "# From http://downloads.yoctoproject.org/releases/matchbox/libfakekey/0.1/libfakekey-0.1.tar.bz2.md5\nmd5\t83dbde4d77e8baf0176fe4291d8a2303\tlibfakekey-0.1.tar.bz2\n# Locally computed\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/matchbox-fakekey/matchbox-fakekey.mk",
    "content": "################################################################################\n#\n# matchbox-fakekey\n#\n################################################################################\n\nMATCHBOX_FAKEKEY_VERSION = 0.1\nMATCHBOX_FAKEKEY_SOURCE = libfakekey-$(MATCHBOX_FAKEKEY_VERSION).tar.bz2\nMATCHBOX_FAKEKEY_SITE = http://downloads.yoctoproject.org/releases/matchbox/libfakekey/$(MATCHBOX_FAKEKEY_VERSION)\nMATCHBOX_FAKEKEY_LICENSE = GPL-2.0+\nMATCHBOX_FAKEKEY_LICENSE_FILES = COPYING\nMATCHBOX_FAKEKEY_INSTALL_STAGING = YES\nMATCHBOX_FAKEKEY_DEPENDENCIES = matchbox-lib xlib_libXtst\nMATCHBOX_FAKEKEY_CONF_OPTS = --enable-expat\n\ndefine MATCHBOX_FAKEKEY_POST_CONFIGURE_FIXES\n\t$(SED) 's:^SUBDIRS = fakekey src tests.*:SUBDIRS = fakekey src:g' \\\n\t\t$(@D)/Makefile\nendef\n\nMATCHBOX_FAKEKEY_POST_CONFIGURE_HOOKS += MATCHBOX_FAKEKEY_POST_CONFIGURE_FIXES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/matchbox-keyboard/Config.in",
    "content": "config BR2_PACKAGE_MATCHBOX_KEYBOARD\n\tbool \"matchbox-keyboard\"\n\tselect BR2_PACKAGE_XLIB_LIBXTST\n\tselect BR2_PACKAGE_XLIB_LIBXFT if !BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_MATCHBOX_FAKEKEY\n\tselect BR2_PACKAGE_MATCHBOX_LIB\n\thelp\n\t  Virtual Keyboard\n\n\t  http://git.yoctoproject.org/cgit/cgit.cgi/matchbox-keyboard/\n"
  },
  {
    "path": "package/matchbox-keyboard/matchbox-keyboard.hash",
    "content": "# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-keyboard/0.1/matchbox-keyboard-0.1.tar.bz2.md5\nmd5\t50940321d59fee23b38a4941100abf25\tmatchbox-keyboard-0.1.tar.bz2\n# Locally computed\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/matchbox-keyboard/matchbox-keyboard.mk",
    "content": "################################################################################\n#\n# matchbox-keyboard\n#\n################################################################################\n\nMATCHBOX_KEYBOARD_VERSION = 0.1\nMATCHBOX_KEYBOARD_SOURCE = matchbox-keyboard-$(MATCHBOX_KEYBOARD_VERSION).tar.bz2\nMATCHBOX_KEYBOARD_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-keyboard/$(MATCHBOX_KEYBOARD_VERSION)\nMATCHBOX_KEYBOARD_LICENSE = GPL-2.0+\nMATCHBOX_KEYBOARD_LICENSE_FILES = COPYING\nMATCHBOX_KEYBOARD_DEPENDENCIES = host-pkgconf matchbox-lib matchbox-fakekey expat\n\n# Workaround bug in configure script\nMATCHBOX_KEYBOARD_CONF_ENV = expat=yes\n\ndefine MATCHBOX_KEYBOARD_POST_INSTALL_FIXES\n\t$(INSTALL) -D -m 0755 package/matchbox-keyboard/mb-applet-kbd-wrapper.sh \\\n\t\t$(TARGET_DIR)/usr/bin/mb-applet-kbd-wrapper.sh\nendef\n\nMATCHBOX_KEYBOARD_POST_INSTALL_TARGET_HOOKS += MATCHBOX_KEYBOARD_POST_INSTALL_FIXES\n\nifeq ($(BR2_PACKAGE_CAIRO),y)\nMATCHBOX_KEYBOARD_CONF_OPTS += --enable-cairo\nMATCHBOX_KEYBOARD_DEPENDENCIES += cairo\nelse\nMATCHBOX_KEYBOARD_CONF_OPTS += --disable-cairo\nMATCHBOX_KEYBOARD_DEPENDENCIES += xlib_libXft\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/matchbox-keyboard/mb-applet-kbd-wrapper.sh",
    "content": "#!/bin/sh\n#\n\nkillall matchbox-keyboard\nif [ ! $? -eq 0 ] \nthen\n    matchbox-keyboard &\nfi\n"
  },
  {
    "path": "package/matchbox-lib/0001-index-is-legacy.patch",
    "content": "index() is a legacy function, not implemented in some uClibc\nconfigurations.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n libmb/mbexp.c  |    2 +-\n libmb/mbmenu.c |    2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\nIndex: libmatchbox-1.9/libmb/mbexp.c\n===================================================================\n--- libmatchbox-1.9.orig/libmb/mbexp.c\n+++ libmatchbox-1.9/libmb/mbexp.c\n@@ -492,7 +492,7 @@\n \n   /* get the family */\n \n-  if (index(spec, ',') != NULL || index(spec, '-') != NULL) \n+  if (strchr(spec, ',') != NULL || strchr(spec, '-') != NULL) \n     has_comma_delim = True;\n \n   while (!got_family) {\nIndex: libmatchbox-1.9/libmb/mbmenu.c\n===================================================================\n--- libmatchbox-1.9.orig/libmb/mbmenu.c\n+++ libmatchbox-1.9/libmb/mbmenu.c\n@@ -433,7 +433,7 @@\n    {\n       s = p;\n       found   = NULL;\n-      while(index(\"/\\0\", *p) == NULL) p++;\n+      while(strchr(\"/\\0\", *p) == NULL) p++;\n       if (*p != '\\0') { *p = '\\0'; p++; };\n \n       item = current->items;\n"
  },
  {
    "path": "package/matchbox-lib/0002-libpng15.patch",
    "content": "Support for libpng 1.5+ shamelessly taken from Gentoo.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\n--- a/libmb/mbpixbuf.c\n+++ b/libmb/mbpixbuf.c\n@@ -247,7 +247,7 @@\n     return NULL;\n   }\n \n-  if ( setjmp( png_ptr->jmpbuf ) ) {\n+  if ( setjmp( png_jmpbuf(png_ptr) ) ) {\n     png_destroy_read_struct( &png_ptr, &info_ptr, NULL);\n     fclose(fd);\n     return NULL;\n@@ -269,8 +269,8 @@\n       ( color_type == PNG_COLOR_TYPE_GRAY_ALPHA ))\n     png_set_gray_to_rgb(png_ptr);\n  \n-  if ( info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA \n-       || info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA\n+  if ( color_type == PNG_COLOR_TYPE_RGB_ALPHA \n+       || color_type == PNG_COLOR_TYPE_GRAY_ALPHA\n        )\n     *has_alpha = 1;\n   else\n"
  },
  {
    "path": "package/matchbox-lib/0003-include-setjmp-h.patch",
    "content": "matchbox-lib: include setjmp.h\n\nBased on this upstream patch:\n\n   http://git.yoctoproject.org/cgit/cgit.cgi/libmatchbox/commit/?id=9315bcce1f01e7d6c00161442d61d3c676794d9d\n\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n--- libmatchbox-1.9/libmb/mbpixbuf.c.orig\t2014-02-21 12:45:46.867035956 +0000\n+++ libmatchbox-1.9/libmb/mbpixbuf.c\t2014-02-21 12:46:43.482949583 +0000\n@@ -22,6 +22,7 @@\n \n #include <strings.h>\n #include \"mbpixbuf.h\"\n+#include <setjmp.h>\n \n #define BYTE_ORD_24_RGB  0\n #define BYTE_ORD_24_RBG  1\n"
  },
  {
    "path": "package/matchbox-lib/Config.in",
    "content": "config BR2_PACKAGE_MATCHBOX_LIB\n\tbool \"matchbox-lib\"\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\thelp\n\t  Matchbox common functionality library.\n\n\t  http://git.yoctoproject.org/cgit/cgit.cgi/libmatchbox\n"
  },
  {
    "path": "package/matchbox-lib/matchbox-lib.hash",
    "content": "# From http://downloads.yoctoproject.org/releases/matchbox/libmatchbox/1.9/libmatchbox-1.9.tar.bz2.md5\nmd5\t9f73e7515cc4679171a5db180dc1343b\tlibmatchbox-1.9.tar.bz2\n# Locally computed\nsha256  a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7  COPYING\n"
  },
  {
    "path": "package/matchbox-lib/matchbox-lib.mk",
    "content": "################################################################################\n#\n# matchbox-lib\n#\n################################################################################\n\nMATCHBOX_LIB_VERSION = 1.9\nMATCHBOX_LIB_SOURCE = libmatchbox-$(MATCHBOX_LIB_VERSION).tar.bz2\nMATCHBOX_LIB_SITE = http://downloads.yoctoproject.org/releases/matchbox/libmatchbox/$(MATCHBOX_LIB_VERSION)\nMATCHBOX_LIB_LICENSE = LGPL-2.1+\nMATCHBOX_LIB_LICENSE_FILES = COPYING\nMATCHBOX_LIB_INSTALL_STAGING = YES\nMATCHBOX_LIB_DEPENDENCIES = host-pkgconf xlib_libXext\nMATCHBOX_LIB_CONF_OPTS = --disable-doxygen-docs\nMATCHBOX_LIB_CONF_ENV = LIBS=\"-lX11\"\n\ndefine MATCHBOX_LIB_POST_INSTALL_FIXES\n\t$(SED) 's:-I$(STAGING_DIR)/:-I/:g' \\\n\t\t-e 's:-I/usr/include\\( \\|$$\\)::g' \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/libmb.pc\nendef\n\nMATCHBOX_LIB_POST_INSTALL_STAGING_HOOKS += MATCHBOX_LIB_POST_INSTALL_FIXES\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y)\nifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y)\nMATCHBOX_LIB_DEPENDENCIES += xlib_libXpm\nendif\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nMATCHBOX_LIB_CONF_OPTS += --enable-jpeg\nMATCHBOX_LIB_DEPENDENCIES += jpeg\nelse\nMATCHBOX_LIB_CONF_OPTS += --disable-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nMATCHBOX_LIB_CONF_OPTS += --enable-png\nMATCHBOX_LIB_DEPENDENCIES += libpng\nelse\nMATCHBOX_LIB_CONF_OPTS += --disable-png\nendif\n\nifeq ($(BR2_PACKAGE_PANGO)$(BR2_PACKAGE_XLIB_LIBXFT)$(BR2_PACKAGE_XLIB_LIBXRENDER),yyy)\nMATCHBOX_LIB_CONF_OPTS += --enable-pango\nMATCHBOX_LIB_DEPENDENCIES += pango\nelse\nMATCHBOX_LIB_CONF_OPTS += --disable-pango\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y)\nMATCHBOX_LIB_CONF_OPTS += --enable-xft\nMATCHBOX_LIB_DEPENDENCIES += xlib_libXft\nelse\nMATCHBOX_LIB_CONF_OPTS += --disable-xft\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/matchbox-panel/0001-index-is-legacy.patch",
    "content": "Replace the legacy index() with strchr()\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n applets/mb-applet-menu-launcher.c |    2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\nIndex: matchbox-panel-0.9.3/applets/mb-applet-menu-launcher.c\n===================================================================\n--- matchbox-panel-0.9.3.orig/applets/mb-applet-menu-launcher.c\n+++ matchbox-panel-0.9.3/applets/mb-applet-menu-launcher.c\n@@ -280,7 +280,7 @@\n \t DBG(\"\\tkey %s \", key);\n          if (*(++p) == '\"') { p++; tc = sc; } /* skip \"'s */\n \t val = p;\n-\t while(index(tc,*p) == NULL)\n+\t while(strchr(tc,*p) == NULL)\n \t {\n \t    if (*p == '\\\\' && *(p+1) == '\"') p++;  /* skip \\\" */\n \t    p++;\n"
  },
  {
    "path": "package/matchbox-panel/0002-mb-applet-wireless.patch",
    "content": "mb-applet-wireless: fix undefined reference to `log' and `lrint'\n\nmb-applet-wireless.o: In function `update_wireless':\n.. matchbox-panel-0.9.3/applets/mb-applet-wireless.c:143: undefined reference to `log'\n.. matchbox-panel-0.9.3/applets/mb-applet-wireless.c:143: undefined reference to `lrint'\n\nSigned-off-by: Jean-Paul Etienne <fractalclone@gmail.com>\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n[arnout: add description and Signed-off-by]\n---\ndiff -rup matchbox-panel-0.9.3.orig/applets/Makefile.in matchbox-panel-0.9.3/applets/Makefile.in\n--- matchbox-panel-0.9.3.orig/applets/Makefile.in\t2015-01-23 00:16:47.594850985 +0100\n+++ matchbox-panel-0.9.3/applets/Makefile.in\t2015-01-23 00:15:18.458694947 +0100\n@@ -198,7 +198,7 @@ WANT_SMALL_ICONS_FALSE = @WANT_SMALL_ICO\n WANT_SMALL_ICONS_TRUE = @WANT_SMALL_ICONS_TRUE@\n WANT_WIFI_FALSE = @WANT_WIFI_FALSE@\n WANT_WIFI_TRUE = @WANT_WIFI_TRUE@\n-WIRELESS_LIBS = @WIRELESS_LIBS@\n+WIRELESS_LIBS = @WIRELESS_LIBS@ -lm\n XGETTEXT = @XGETTEXT@\n ac_ct_CC = @ac_ct_CC@\n ac_ct_STRIP = @ac_ct_STRIP@\ndiff -rup matchbox-panel-0.9.3.orig/applets/mb-applet-wireless.c matchbox-panel-0.9.3/applets/mb-applet-wireless.c\n--- matchbox-panel-0.9.3.orig/applets/mb-applet-wireless.c\t2015-01-23 00:16:31.531822865 +0100\n+++ matchbox-panel-0.9.3/applets/mb-applet-wireless.c\t2015-01-23 00:03:43.067563827 +0100\n@@ -50,6 +50,8 @@\n \n #endif\n \n+#include <math.h>\n+\n #ifdef MB_HAVE_PNG\n #define IMG_EXT \"png\"\n #else\n"
  },
  {
    "path": "package/matchbox-panel/0003-mb-applet-battery.patch",
    "content": "mb-applet-battery: don't declare line_parse as static\n\nFix this build failure:\n    mb-applet-battery.c: In function 'read_apm':\n    mb-applet-battery.c:181:2: error: invalid storage class for function 'line_parse'\n\nReported-by: Arnout Vandecappelle <arnout@mind.be>\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN matchbox-panel-0.9.3.orig/applets/mb-applet-battery.c matchbox-panel-0.9.3/applets/mb-applet-battery.c\n--- matchbox-panel-0.9.3.orig/applets/mb-applet-battery.c\t2006-02-07 23:27:24.000000000 +0100\n+++ matchbox-panel-0.9.3/applets/mb-applet-battery.c\t2015-05-02 17:13:00.843578796 +0200\n@@ -177,7 +177,7 @@\n \t\tunsigned long\tpresent_rate;\n \t};\n \n-\tstatic int\n+\tint\n \tline_parse(char *line, struct entry *e)\n \t{\n \t\tchar *ptr;\n"
  },
  {
    "path": "package/matchbox-panel/Config.in",
    "content": "config BR2_PACKAGE_MATCHBOX_PANEL\n\tbool \"matchbox-panel\"\n\tselect BR2_PACKAGE_MATCHBOX_LIB\n\thelp\n\t  A flexible always present 'window bar' for holding\n\t  application launchers.\n\n\t  http://git.yoctoproject.org/cgit/cgit.cgi/matchbox-panel/\n"
  },
  {
    "path": "package/matchbox-panel/matchbox-panel.hash",
    "content": "# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-panel/0.9/matchbox-panel-0.9.3.tar.bz2.md5\nmd5\t56d1807636f3919e22e51896ab7ccd2e\tmatchbox-panel-0.9.3.tar.bz2\n# Locally computed\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/matchbox-panel/matchbox-panel.mk",
    "content": "################################################################################\n#\n# matchbox-panel\n#\n################################################################################\n\nMATCHBOX_PANEL_VERSION_MAJOR = 0.9\nMATCHBOX_PANEL_VERSION = $(MATCHBOX_PANEL_VERSION_MAJOR).3\nMATCHBOX_PANEL_SOURCE = matchbox-panel-$(MATCHBOX_PANEL_VERSION).tar.bz2\nMATCHBOX_PANEL_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-panel/$(MATCHBOX_PANEL_VERSION_MAJOR)\nMATCHBOX_PANEL_LICENSE = GPL-2.0+\nMATCHBOX_PANEL_LICENSE_FILES = COPYING\nMATCHBOX_PANEL_DEPENDENCIES = matchbox-lib $(TARGET_NLS_DEPENDENCIES)\nMATCHBOX_PANEL_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\nMATCHBOX_PANEL_CONF_OPTS = --enable-expat --enable-dnotify\n\nifeq ($(BR2_PACKAGE_MATCHBOX_STARTUP_MONITOR),y)\nMATCHBOX_PANEL_CONF_OPTS += --enable-startup-notification\nMATCHBOX_PANEL_DEPENDENCIES += matchbox-startup-monitor\nelse\nMATCHBOX_PANEL_CONF_OPTS += --disable-startup-notification\nendif\n\n# Using ACPI is only possible on x86 (32- or 64-bit) or AArch64\nifeq ($(BR2_aarch64)$(BR2_i386)$(BR2_x86_64),y)\nMATCHBOX_PANEL_CONF_OPTS += --enable-acpi-linux\nelse\nMATCHBOX_PANEL_CONF_OPTS += --disable-acpi-linux\nendif\n\nifeq ($(BR2_PACKAGE_WIRELESS_TOOLS_LIB),y)\nMATCHBOX_PANEL_DEPENDENCIES += wireless_tools\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/matchbox-startup-monitor/0001-true-false.patch",
    "content": "mbmonitor uses TRUE / FALSE without defining them\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n---\n mbmonitor.c |    3 +++\n 1 file changed, 3 insertions(+)\n\nIndex: mb-applet-startup-monitor-0.1/mbmonitor.c\n===================================================================\n--- mb-applet-startup-monitor-0.1.orig/mbmonitor.c\n+++ mb-applet-startup-monitor-0.1/mbmonitor.c\n@@ -43,6 +43,9 @@\n #define POLLTIME\t   10\n #define HOURGLASS_N_FRAMES 8 \n \n+#define FALSE\t\t   0\n+#define TRUE\t\t   1\n+\n typedef struct LaunchList LaunchList;\n \n struct LaunchList\n"
  },
  {
    "path": "package/matchbox-startup-monitor/Config.in",
    "content": "config BR2_PACKAGE_MATCHBOX_STARTUP_MONITOR\n\tbool \"matchbox-startup-monitor\"\n\tselect BR2_PACKAGE_MATCHBOX_LIB\n\tselect BR2_PACKAGE_STARTUP_NOTIFICATION\n\thelp\n\t  Matchbox Panel Startup Monitor Applet.\n\n\t  http://git.yoctoproject.org/cgit.cgi/mb-applet-startup-monitor/\n"
  },
  {
    "path": "package/matchbox-startup-monitor/matchbox-startup-monitor.hash",
    "content": "# From http://downloads.yoctoproject.org/releases/matchbox/mb-applet-startup-monitor/0.1/mb-applet-startup-monitor-0.1.tar.bz2.md5\nmd5\tea4b3c1ebee3f731b77a2d4bf8e9aa3c\tmb-applet-startup-monitor-0.1.tar.bz2\n# Locally computed\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/matchbox-startup-monitor/matchbox-startup-monitor.mk",
    "content": "################################################################################\n#\n# matchbox-startup-monitor\n#\n################################################################################\n\nMATCHBOX_STARTUP_MONITOR_VERSION = 0.1\nMATCHBOX_STARTUP_MONITOR_SOURCE = mb-applet-startup-monitor-$(MATCHBOX_STARTUP_MONITOR_VERSION).tar.bz2\nMATCHBOX_STARTUP_MONITOR_SITE = http://downloads.yoctoproject.org/releases/matchbox/mb-applet-startup-monitor/$(MATCHBOX_STARTUP_MONITOR_VERSION)\nMATCHBOX_STARTUP_MONITOR_LICENSE = GPL-2.0+\nMATCHBOX_STARTUP_MONITOR_LICENSE_FILES = COPYING\nMATCHBOX_STARTUP_MONITOR_DEPENDENCIES = matchbox-lib startup-notification\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/matio/Config.in",
    "content": "config BR2_PACKAGE_MATIO\n\tbool \"matio\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  matio is an C library for reading and writing MATLAB MAT\n\t  files.\n\n\t  https://sourceforge.net/projects/matio\n"
  },
  {
    "path": "package/matio/matio.hash",
    "content": "# From https://sourceforge.net/projects/matio/files/matio/1.5.21/\nsha512  b00bcad807e6a7e10afa656eb77a0e3e9fb08d9cecc3e94ba41ef91ce60367d6686e6d387a874bbb83eb2f895d4a97caac554a70e7f5f6f5cb750052702d411c  matio-1.5.21.tar.gz\n# Locally computed\nsha256  69143d4a8f1933022bb909327df1ce812dd2420ed57949812dd8f370856bf2a1  COPYING\n"
  },
  {
    "path": "package/matio/matio.mk",
    "content": "################################################################################\n#\n# matio\n#\n################################################################################\n\nMATIO_VERSION = 1.5.21\nMATIO_SITE = http://downloads.sourceforge.net/project/matio/matio/$(MATIO_VERSION)\nMATIO_LICENSE = BSD-2-Clause\nMATIO_LICENSE_FILES = COPYING\nMATIO_CPE_ID_VENDOR = matio_project\nMATIO_DEPENDENCIES = zlib\nMATIO_INSTALL_STAGING = YES\n\n# va_copy()\nMATIO_CONF_ENV = ac_cv_va_copy=yes\n\n# mat73 require hdf5 (not available), extented-sparse take 2KB\nMATIO_CONF_OPTS = --disable-mat73 --enable-extended-sparse\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mawk/Config.in",
    "content": "config BR2_PACKAGE_MAWK\n\tbool \"mawk\"\n\thelp\n\t  Interpreter for the AWK Programming Language.\n\n\t  http://invisible-island.net/mawk/mawk.html\n"
  },
  {
    "path": "package/mawk/mawk.hash",
    "content": "sha256  7fd4cd1e1fae9290fe089171181bbc6291dfd9bca939ca804f0ddb851c8b8237  mawk-1.3.4-20200120.tgz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/mawk/mawk.mk",
    "content": "################################################################################\n#\n# mawk\n#\n################################################################################\n\nMAWK_VERSION = 1.3.4-20200120\nMAWK_SITE = https://invisible-mirror.net/archives/mawk\nMAWK_SOURCE = mawk-$(MAWK_VERSION).tgz\nMAWK_LICENSE = GPL-2.0\nMAWK_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mbedtls/0001-bn_mul.h-fix-x86-PIC-inline-ASM-compilation-with-GCC.patch",
    "content": "From a0ae2ba37ca479c6edddec8634b25686be965e0d Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <peter@korsgaard.com>\nDate: Mon, 27 Aug 2018 22:50:57 +0200\nSubject: [PATCH] bn_mul.h: fix x86 PIC inline ASM compilation with GCC < 5\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes #1910\n\nWith ebx added to the MULADDC_STOP clobber list to fix #1550, the inline\nassembly fails to build with GCC < 5 in PIC mode with the following error:\n\ninclude/mbedtls/bn_mul.h:46:13: error: PIC register clobbered by ‘ebx’ in ‘asm’\n\nThis is because older GCC versions treated the x86 ebx register (which is\nused for the GOT) as a fixed reserved register when building as PIC.\n\nThis is fixed by an improved register allocator in GCC 5+.  From the release\nnotes:\n\nRegister allocation improvements: Reuse of the PIC hard register, instead of\nusing a fixed register, was implemented on x86/x86-64 targets.  This\nimproves generated PIC code performance as more hard registers can be used.\n\nhttps://www.gnu.org/software/gcc/gcc-5/changes.html\n\nAs a workaround, detect this situation and disable the inline assembly,\nsimilar to the MULADDC_CANNOT_USE_R7 logic.\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\nUpstream: https://github.com/ARMmbed/mbedtls/pull/1986\n---\n include/mbedtls/bn_mul.h | 18 +++++++++++++++++-\n 1 file changed, 17 insertions(+), 1 deletion(-)\n\ndiff --git a/include/mbedtls/bn_mul.h b/include/mbedtls/bn_mul.h\nindex b587317d9..74a2d29be 100644\n--- a/include/mbedtls/bn_mul.h\n+++ b/include/mbedtls/bn_mul.h\n@@ -50,13 +50,29 @@\n #if defined(__GNUC__) && \\\n     ( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 )\n \n+/*\n+ * GCC < 5.0 treated the x86 ebx (which is used for the GOT) as a\n+ * fixed reserved register when building as PIC, leading to errors\n+ * like: bn_mul.h:46:13: error: PIC register clobbered by ‘ebx’ in ‘asm’\n+ *\n+ * This is fixed by an improved register allocator in GCC 5+. From the\n+ * release notes:\n+ * Register allocation improvements: Reuse of the PIC hard register,\n+ * instead of using a fixed register, was implemented on x86/x86-64\n+ * targets. This improves generated PIC code performance as more hard\n+ * registers can be used.\n+ */\n+#if defined(__GNUC__) && __GNUC__ < 5 && defined(__PIC__)\n+#define MULADDC_CANNOT_USE_EBX\n+#endif\n+\n /*\n  * Disable use of the i386 assembly code below if option -O0, to disable all\n  * compiler optimisations, is passed, detected with __OPTIMIZE__\n  * This is done as the number of registers used in the assembly code doesn't\n  * work with the -O0 option.\n  */\n-#if defined(__i386__) && defined(__OPTIMIZE__)\n+#if defined(__i386__) && defined(__OPTIMIZE__) && !defined(MULADDC_CANNOT_USE_EBX)\n \n #define MULADDC_INIT                        \\\n     asm(                                    \\\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/mbedtls/Config.in",
    "content": "config BR2_PACKAGE_MBEDTLS\n\tbool \"mbedtls\"\n\thelp\n\t  mbed TLS (formerly known as PolarSSL) makes it trivially easy\n\t  for developers to include cryptographic and SSL/TLS\n\t  capabilities in their (embedded) products, facilitating this\n\t  functionality with a minimal coding footprint.\n\n\t  https://tls.mbed.org/\n\nif BR2_PACKAGE_MBEDTLS\n\nconfig BR2_PACKAGE_MBEDTLS_PROGRAMS\n\tbool \"mbedtls programs\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  This option enables the installation and the build of\n\t  mbed TLS companion programs.\n\nconfig BR2_PACKAGE_MBEDTLS_COMPRESSION\n\tbool \"enable compression support\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Enable support for compression of the content data before it\n\t  enters the secure channel as described in RFC 3749.\n\n\t  Warning: TLS compression may make you vulnerable to the\n\t  CRIME attack. You should not enable it unless you know for\n\t  sure CRIME and similar attacks are not applicable to your\n\t  particular situation.\n\nendif\n"
  },
  {
    "path": "package/mbedtls/mbedtls.hash",
    "content": "# From https://github.com/ARMmbed/mbedtls/releases/tag/v2.16.11:\nsha256  c18e7e9abf95e69e425260493720470021384a1728417042060a35d0b7b18b41  mbedtls-2.16.11.tar.gz\n# Locally calculated\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  apache-2.0.txt\n"
  },
  {
    "path": "package/mbedtls/mbedtls.mk",
    "content": "################################################################################\n#\n# mbedtls\n#\n################################################################################\n\nMBEDTLS_VERSION = 2.16.11\nMBEDTLS_SITE = $(call github,ARMmbed,mbedtls,v$(MBEDTLS_VERSION))\nMBEDTLS_CONF_OPTS = \\\n\t-DENABLE_PROGRAMS=$(if $(BR2_PACKAGE_MBEDTLS_PROGRAMS),ON,OFF) \\\n\t-DENABLE_TESTING=OFF\nMBEDTLS_INSTALL_STAGING = YES\nMBEDTLS_LICENSE = Apache-2.0\nMBEDTLS_LICENSE_FILES = apache-2.0.txt\nMBEDTLS_CPE_ID_VENDOR = arm\nMBEDTLS_CPE_ID_PRODUCT = mbed_tls\n\n# This is mandatory for hiawatha\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\ndefine MBEDTLS_ENABLE_THREADING\n\t$(SED) \"s://#define MBEDTLS_THREADING_C:#define MBEDTLS_THREADING_C:\" \\\n\t\t$(@D)/include/mbedtls/config.h\n\t$(SED) \"s://#define MBEDTLS_THREADING_PTHREAD:#define MBEDTLS_THREADING_PTHREAD:\" \\\n\t\t$(@D)/include/mbedtls/config.h\nendef\nMBEDTLS_POST_PATCH_HOOKS += MBEDTLS_ENABLE_THREADING\nifeq ($(BR2_STATIC_LIBS),y)\nMBEDTLS_CONF_OPTS += -DLINK_WITH_PTHREAD=ON\nendif\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nMBEDTLS_CONF_OPTS += \\\n\t-DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DUSE_STATIC_MBEDTLS_LIBRARY=ON\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nMBEDTLS_CONF_OPTS += \\\n\t-DUSE_SHARED_MBEDTLS_LIBRARY=ON -DUSE_STATIC_MBEDTLS_LIBRARY=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nMBEDTLS_CONF_OPTS += \\\n\t-DUSE_SHARED_MBEDTLS_LIBRARY=ON -DUSE_STATIC_MBEDTLS_LIBRARY=OFF\nendif\n\nifeq ($(BR2_PACKAGE_MBEDTLS_COMPRESSION),y)\nMBEDTLS_CONF_OPTS += -DENABLE_ZLIB_SUPPORT=ON\nMBEDTLS_DEPENDENCIES += zlib\ndefine MBEDTLS_ENABLE_ZLIB\n\t$(SED) \"s://#define MBEDTLS_ZLIB_SUPPORT:#define MBEDTLS_ZLIB_SUPPORT:\" \\\n\t\t$(@D)/include/mbedtls/config.h\nendef\nMBEDTLS_POST_PATCH_HOOKS += MBEDTLS_ENABLE_ZLIB\nelse\nMBEDTLS_CONF_OPTS += -DENABLE_ZLIB_SUPPORT=OFF\nendif\n\ndefine MBEDTLS_DISABLE_ASM\n\t$(SED) '/^#define MBEDTLS_AESNI_C/d' \\\n\t\t$(@D)/include/mbedtls/config.h\n\t$(SED) '/^#define MBEDTLS_HAVE_ASM/d' \\\n\t\t$(@D)/include/mbedtls/config.h\n\t$(SED) '/^#define MBEDTLS_PADLOCK_C/d' \\\n\t\t$(@D)/include/mbedtls/config.h\nendef\n\n# ARM in thumb mode breaks debugging with asm optimizations\n# Microblaze asm optimizations are broken in general\n# MIPS R6 asm is not yet supported\nifeq ($(BR2_ENABLE_DEBUG)$(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_ARM_INSTRUCTIONS_THUMB2),yy)\nMBEDTLS_POST_CONFIGURE_HOOKS += MBEDTLS_DISABLE_ASM\nelse ifeq ($(BR2_microblaze)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y)\nMBEDTLS_POST_CONFIGURE_HOOKS += MBEDTLS_DISABLE_ASM\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/mbpfan/Config.in",
    "content": "config BR2_PACKAGE_MBPFAN\n\tbool \"mbpfan\"\n\tdepends on BR2_USE_MMU\n\thelp\n\t  Mbpfan is a daemon for MacBook laptops which monitors the\n\t  CPU temperature with the coretemp module, and sets the fan\n\t  speeds with the applesmc module.\n\n\t  https://github.com/linux-on-mac/mbpfan\n"
  },
  {
    "path": "package/mbpfan/mbpfan.hash",
    "content": "# Locally computed:\nsha256  52a3a79d99f775fe90917a0958e527ea14ff5b83d010164bd91f7cc3ce046b6a  mbpfan-2.2.1.tar.gz\nsha256  589ed823e9a84c56feb95ac58e7cf384626b9cbf4fda2a907bc36e103de1bad2  COPYING\n"
  },
  {
    "path": "package/mbpfan/mbpfan.mk",
    "content": "################################################################################\n#\n# mbpfan\n#\n################################################################################\n\nMBPFAN_VERSION = 2.2.1\nMBPFAN_SITE = $(call github,linux-on-mac,mbpfan,v$(MBPFAN_VERSION))\nMBPFAN_LICENSE = GPL-3.0+\nMBPFAN_LICENSE_FILES = COPYING\n\ndefine MBPFAN_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\t\t$(MAKE) CC=\"$(TARGET_CC)\" -C $(@D)\nendef\n\ndefine MBPFAN_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/mbpfan.conf \\\n\t\t$(TARGET_DIR)/etc/mbpfan.conf\n\t$(INSTALL) -m 0755 $(@D)/bin/mbpfan $(TARGET_DIR)/usr/sbin/mbpfan\nendef\n\ndefine MBPFAN_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(@D)/mbpfan.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/mbpfan.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mbuffer/Config.in",
    "content": "config BR2_PACKAGE_MBUFFER\n\tbool \"mbuffer\"\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  mbuffer is a tool for buffering data streams with a large set\n\t  of unique features.\n\n\t  http://www.maier-komor.de/mbuffer.html\n\ncomment \"mbuffer needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/mbuffer/mbuffer.hash",
    "content": "# From http://www.maier-komor.de/mbuffer.html\nmd5  4e4712db5fbd4e71bfbfa2c145c6c646  mbuffer-20210328.tgz\n\n# Locally computed after checking signature upstream\nsha256  51b5b8d8488991a55fe1dfce90130f9e47bc1ce286ba03b4f628c04b784fdc5d  mbuffer-20210328.tgz\n\n# Hash for license file\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE\n"
  },
  {
    "path": "package/mbuffer/mbuffer.mk",
    "content": "################################################################################\n#\n# mbuffer\n#\n################################################################################\n\nMBUFFER_VERSION = 20210328\nMBUFFER_SOURCE = mbuffer-$(MBUFFER_VERSION).tgz\nMBUFFER_SITE = http://www.maier-komor.de/software/mbuffer\nMBUFFER_LICENSE = GPL-3.0+\nMBUFFER_LICENSE_FILES = LICENSE\nMBUFFER_CONF_OPTS = --disable-debug\n\n# we don't need tests & co. so we specify a target\n# so that the others don't get built, e.g idev.so\nMBUFFER_MAKE_OPTS += mbuffer\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mc/Config.in",
    "content": "config BR2_PACKAGE_MC\n\tbool \"mc\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2, slang\n\tselect BR2_PACKAGE_LIBGLIB2\n\t# mc prefers slang, but can use ncurses too\n\tselect BR2_PACKAGE_SLANG if !BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_NCURSES_WCHAR if BR2_PACKAGE_NCURSES\n\thelp\n\t  GNU Midnight Commander is a visual file manager, licensed\n\t  under GNU General Public License. It can use either SLang\n\t  (preferred) or ncurses for screen handling; if neither is\n\t  enabled SLang will be automatically chosen.\n\n\t  https://www.midnight-commander.org\n\ncomment \"mc needs a toolchain w/ threads, wchar\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/mc/mc.hash",
    "content": "# Hash from http://ftp.midnight-commander.org/mc-4.8.27.sha256\nsha256  31be59225ffa9920816e9a8b3be0ab225a16d19e4faf46890f25bdffa02a4ff4  mc-4.8.27.tar.xz\n# sha256 locally computed:\nsha256  5576bbec76296e1c8e081f7037ebd01bdada388635f58d844a2f20d37bbe4284  COPYING\n"
  },
  {
    "path": "package/mc/mc.mk",
    "content": "################################################################################\n#\n# mc\n#\n################################################################################\n\nMC_VERSION = 4.8.27\nMC_SOURCE = mc-$(MC_VERSION).tar.xz\nMC_SITE = http://ftp.midnight-commander.org\nMC_LICENSE = GPL-3.0+\nMC_LICENSE_FILES = COPYING\nMC_DEPENDENCIES = libglib2 host-pkgconf $(TARGET_NLS_DEPENDENCIES)\nMC_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_GPM),y)\nMC_CONF_OPTS += --with-gpm-mouse\nMC_DEPENDENCIES += gpm\nelse\nMC_CONF_OPTS += --without-gpm-mouse\nendif\n\nifeq ($(BR2_PACKAGE_LIBSSH2),y)\nMC_CONF_OPTS += --enable-vfs-sftp\nMC_DEPENDENCIES += libssh2\nelse\nMC_CONF_OPTS += --disable-vfs-sftp\nendif\n\n# mc prefers slang, so use that if enabled, otherwise\n# fallback to using ncurses.\n# Either or both will be enabled, but we prefer slang.\nifeq ($(BR2_PACKAGE_SLANG),y)\nMC_DEPENDENCIES += slang\nMC_CONF_OPTS += --with-screen=slang\nelse\nMC_DEPENDENCIES += ncurses\nMC_CONF_OPTS += --with-screen=ncurses\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)\nMC_CONF_OPTS += --with-x\nMC_DEPENDENCIES += xlib_libX11\nelse\nMC_CONF_OPTS += --without-x\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mcelog/Config.in",
    "content": "config BR2_PACKAGE_MCELOG\n\tbool \"mcelog\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  mcelog processes machine checks (in particular memory and\n\t  CPU hardware errors) on modern x86 Linux systems.\n\n\t  http://www.mcelog.org/\n"
  },
  {
    "path": "package/mcelog/mcelog.hash",
    "content": "# Locally computed\nsha256  d21dfddaaa8e6f4ebd59ce353165c8d8079d0d5ed563492a0415af2248d8b3a5  mcelog-172.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/mcelog/mcelog.mk",
    "content": "################################################################################\n#\n# mcelog\n#\n################################################################################\n\nMCELOG_VERSION = 172\nMCELOG_SITE = $(call github,andikleen,mcelog,v$(MCELOG_VERSION))\nMCELOG_LICENSE = GPL-2.0\nMCELOG_LICENSE_FILES = LICENSE\nMCELOG_SELINUX_MODULES = mcelog\n\ndefine MCELOG_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all\nendef\n\ndefine MCELOG_INSTALL_TARGET_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\ndefine MCELOG_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 $(@D)/mcelog.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/mcelog.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mdadm/0001-add-install-targets-for-mdadm-and-mdmon.patch",
    "content": "From a1a9243671b1e23123f57e879890325154b8e00d Mon Sep 17 00:00:00 2001\nFrom: Christophe Vu-Brugier <cvubrugier@lacie.com>\nDate: Wed, 6 Mar 2013 16:03:14 +0100\nSubject: [PATCH] Add install targets for mdadm and mdmon\n\n\nSigned-off-by: Christophe Vu-Brugier <cvubrugier@lacie.com>\n---\n Makefile |    6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 315455b..27d8eeb 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -231,8 +231,12 @@ $(MON_OBJS) : $(INCL) mdmon.h\n sha1.o : sha1.c sha1.h md5.h\n \t$(CC) $(CFLAGS) -DHAVE_STDINT_H -o sha1.o -c sha1.c\n \n-install : mdadm mdmon install-man install-udev\n+install : install-mdadm install-mdmon install-man install-udev\n+\n+install-mdadm :\n \t$(INSTALL) -D $(STRIP) -m 755 mdadm $(DESTDIR)$(BINDIR)/mdadm\n+\n+install-mdmon :\n \t$(INSTALL) -D $(STRIP) -m 755 mdmon $(DESTDIR)$(BINDIR)/mdmon\n \n install-static : mdadm.static install-man\n-- \n1.7.10.4\n\n"
  },
  {
    "path": "package/mdadm/0002-mdadm.h-include-sysmacros.h-unconditionally.patch",
    "content": "From 6c781ad75d92c6f65832810c44afcba1b2dffc41 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Tue, 6 Aug 2019 16:01:15 +0300\nSubject: [PATCH] mdadm.h: include sysmacros.h unconditionally\n\nmusl libc now also requires sys/sysmacros.h for the major/minor macros.\nAll supported libc implementations carry sys/sysmacros.h, including\ndiet-libc, klibc, and uclibc-ng.\n\nCc: Hauke Mehrtens <hauke@hauke-m.de>\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: https://marc.info/?l=linux-raid&m=156509677018508\n\n mdadm.h | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/mdadm.h b/mdadm.h\nindex c36d7fdb10f6..d61a9ca82dc1 100644\n--- a/mdadm.h\n+++ b/mdadm.h\n@@ -45,10 +45,8 @@ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));\n #include\t<errno.h>\n #include\t<string.h>\n #include\t<syslog.h>\n-#ifdef __GLIBC__\n /* Newer glibc requires sys/sysmacros.h directly for makedev() */\n #include\t<sys/sysmacros.h>\n-#endif\n #ifdef __dietlibc__\n #include\t<strings.h>\n /* dietlibc has deprecated random and srandom!! */\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/mdadm/Config.in",
    "content": "config BR2_PACKAGE_MDADM\n\tbool \"mdadm\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Utility for managing Linux Software RAID arrays.\n\n\t  https://raid.wiki.kernel.org/index.php/A_guide_to_mdadm\n\ncomment \"mdadm needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/mdadm/mdadm.hash",
    "content": "# From https://www.kernel.org/pub/linux/utils/raid/mdadm/sha256sums.asc\nsha256 ab7688842908d3583a704d491956f31324c3a5fc9f6a04653cb75d19f1934f4a  mdadm-4.1.tar.xz\n# Locally calculated\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/mdadm/mdadm.mk",
    "content": "################################################################################\n#\n# mdadm\n#\n################################################################################\n\nMDADM_VERSION = 4.1\nMDADM_SOURCE = mdadm-$(MDADM_VERSION).tar.xz\nMDADM_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/raid/mdadm\nMDADM_LICENSE = GPL-2.0+\nMDADM_LICENSE_FILES = COPYING\n\nMDADM_BUILD_OPTS = $(TARGET_CONFIGURE_OPTS) \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -DNO_COROSYNC -DNO_DLM\" \\\n\tCPPFLAGS=\"$(TARGET_CPPFLAGS) -DBINDIR=\\\\\\\"/sbin\\\\\\\"\" \\\n\tCHECK_RUN_DIR=0\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),)\nMDADM_BUILD_OPTS += USE_PTHREADS=\nendif\n\ndefine MDADM_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(MDADM_BUILD_OPTS) mdadm mdmon\nendef\n\ndefine MDADM_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tinstall-mdadm install-mdmon\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mdevd/Config.in",
    "content": "config BR2_PACKAGE_MDEVD\n\tbool \"mdevd\"\n\tdepends on BR2_USE_MMU # skalibs\n\tselect BR2_PACKAGE_SKALIBS\n\thelp\n\t  mdevd is a small daemon managing kernel hotplug events,\n\t  similarly to udevd.\n\n\t  http://skarnet.org/software/mdevd/\n"
  },
  {
    "path": "package/mdevd/mdevd.hash",
    "content": "# Locally generated\nsha256  ffd3b223b4cf0e51253b4a8f09cb88d70bf22693228ab0818af174a3f099dcd2  mdevd-0.1.4.0.tar.gz\nsha256  31b60c66aba1fa0a7f8847339ac35c28638e25ff96da700d995533ad810e3995  COPYING\n"
  },
  {
    "path": "package/mdevd/mdevd.mk",
    "content": "################################################################################\n#\n# mdevd\n#\n################################################################################\n\nMDEVD_VERSION = 0.1.4.0\nMDEVD_SITE = http://skarnet.org/software/mdevd\nMDEVD_LICENSE = ISC\nMDEVD_LICENSE_FILES = COPYING\nMDEVD_INSTALL_STAGING = YES\nMDEVD_DEPENDENCIES = skalibs\n\nMDEVD_CONF_OPTS = \\\n\t--prefix=/ \\\n\t--with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \\\n\t--with-include=$(STAGING_DIR)/include \\\n\t--with-dynlib=$(STAGING_DIR)/lib \\\n\t--with-lib=$(STAGING_DIR)/lib/skalibs \\\n\t$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \\\n\t$(SHARED_STATIC_LIBS_OPTS)\n\ndefine MDEVD_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(MDEVD_CONF_OPTS))\nendef\n\ndefine MDEVD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine MDEVD_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\ndefine MDEVD_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mediastreamer/0001-src-videofilters-nowebcam.c-fix-build-without-ffmpeg.patch",
    "content": "From 342f59f1603f759b6dd90754f8dba14d08947f55 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 27 Feb 2020 16:18:35 +0100\nSubject: [PATCH] src/videofilters/nowebcam.c: fix build without ffmpeg or jpeg\n\njpeg2yuv is only defined if ffmpeg or turbojpeg is available\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n CMakeLists.txt              | 3 +++\n src/videofilters/nowebcam.c | 4 ++++\n 2 files changed, 7 insertions(+)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 0efc1a5f..6668db2b 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -336,7 +336,10 @@ if(ENABLE_JPEG)\n \tif(NOT TURBOJPEG_FOUND)\n \t\tmessage(WARNING \"Could not find libturbo-jpeg, mediastreamer2 will be compiled without LibJpeg-Turbo\")\n \t\tset(ENABLE_JPEG OFF CACHE BOOL \"Enable JPEG support\" FORCE)\n+\t\tadd_definitions(-DNO_JPEG)\n \tendif()\n+else()\n+\tadd_definitions(-DNO_JPEG)\n endif()\n if(ENABLE_QRCODE)\n \tfind_package(Zxing)\ndiff --git a/src/videofilters/nowebcam.c b/src/videofilters/nowebcam.c\nindex a2344dcd..afb0d7b1 100644\n--- a/src/videofilters/nowebcam.c\n+++ b/src/videofilters/nowebcam.c\n@@ -107,7 +107,9 @@ static mblk_t *_ms_load_jpeg_as_yuv(const char *jpgpath, MSVideoSize *reqsize) {\n \tif (err != st_sizel) {\n \t\t  ms_error(\"Could not read as much as wanted !\");\n \t}\n+#if !(defined(NO_FFMPEG) && defined(NO_JPEG))\n \tm = jpeg2yuv(jpgbuf, st_sizel, reqsize);\n+#endif\n \tms_free(jpgbuf);\n \tif (m == NULL) {\n \t\tCloseHandle(fd);\n@@ -140,7 +142,9 @@ static mblk_t *_ms_load_jpeg_as_yuv(const char *jpgpath, MSVideoSize *reqsize) {\n \t\tif (err != statbuf.st_size) {\n \t\t\tms_error(\"Could not read as much as wanted: %i<>%li !\", err, (long)statbuf.st_size);\n \t\t}\n+#if !(defined(NO_FFMPEG) && defined(NO_JPEG))\n \t\tm = jpeg2yuv(jpgbuf,statbuf.st_size,reqsize);\n+#endif\n \t\tms_free(jpgbuf);\n \t\tif (m == NULL) {\n \t\t\tclose(fd);\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/mediastreamer/0002-Use-AV_INPUT_BUFFER_PADDING_SIZE-to-determine-paddin.patch",
    "content": "From 84b1919124884232e0fa30b30458470db27c73fc Mon Sep 17 00:00:00 2001\nFrom: James Cowgill <jcowgill@debian.org>\nDate: Sat, 18 Aug 2018 12:56:38 +0200\nSubject: [PATCH] Use AV_INPUT_BUFFER_PADDING_SIZE to determine padding\n size\n\nHardcoding the value for FF_INPUT_BUFFER_PADDING_SIZE is not safe\nbecause  upstream FFmpeg might change it (as they did in FFmpeg 4.0).\n\nInstead, use FFmpeg's AV_INPUT_BUFFER_PADDING_SIZE if available and\nonly hardcode a value if FFmpeg is disabled (in which case the value\ndoesn't particularly matter anyway). For compatibility with older\nFFmpeg versions, define AV_INPUT_BUFFER_PADDING_SIZE if hasn't been\ndefined yet.\n\nDownloaded from\nhttps://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901735\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Fabrice: updated for 4.3.1]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/utils/ffmpeg-priv.h     | 4 ++++\n src/videofilters/nowebcam.c | 4 ++--\n 2 files changed, 6 insertions(+), 2 deletions(-)\n\ndiff --git a/src/utils/ffmpeg-priv.h b/src/utils/ffmpeg-priv.h\nindex c0745a9a..d59ea0e1 100644\n--- a/src/utils/ffmpeg-priv.h\n+++ b/src/utils/ffmpeg-priv.h\n@@ -102,6 +102,10 @@ static inline int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,\n #endif\n #endif\n \n+#ifndef AV_INPUT_BUFFER_PADDING_SIZE\n+#define AV_INPUT_BUFFER_PADDING_SIZE FF_INPUT_BUFFER_PADDING_SIZE\n+#endif\n+\n #ifndef HAVE_FUN_avcodec_encode_video2\n int avcodec_encode_video2 (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr);\n #endif\n-- \n2.18.0\n\n"
  },
  {
    "path": "package/mediastreamer/Config.in",
    "content": "config BR2_PACKAGE_MEDIASTREAMER\n\tbool \"mediastreamer\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # ortp\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # ortp\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14\n\tselect BR2_PACKAGE_MBEDTLS\n\tselect BR2_PACKAGE_ORTP\n\thelp\n\t  Mediastreamer is a powerful and lightweighted streaming\n\t  engine specialized for voice/video telephony applications.\n\n\t  It is the library that is responsible for all the receiving\n\t  and sending of multimedia streams in linphone, including\n\t  voice/video capture, encoding and decoding, and rendering.\n\n\t  http://www.linphone.org/technical-corner/mediastreamer2\n\ncomment \"mediastreamer needs a toolchain w/ threads, C++, dynamic library, gcc >= 5\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\ncomment \"mediastreamer needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/mediastreamer/mediastreamer.hash",
    "content": "# Locally calculated\nsha256  64bdfe9dd6bfa64b492b21a45ad4bb36d67626a7f3b3ab2084a708864f129e84  mediastreamer-4.4.8.tar.gz\nsha256  1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68  LICENSE.txt\n"
  },
  {
    "path": "package/mediastreamer/mediastreamer.mk",
    "content": "################################################################################\n#\n# mediastreamer\n#\n################################################################################\n\nMEDIASTREAMER_VERSION = 4.4.8\nMEDIASTREAMER_SITE = \\\n\thttps://gitlab.linphone.org/BC/public/mediastreamer2/-/archive/$(MEDIASTREAMER_VERSION)\nMEDIASTREAMER_LICENSE = GPL-3.0+\nMEDIASTREAMER_LICENSE_FILES = LICENSE.txt\nMEDIASTREAMER_INSTALL_STAGING = YES\nMEDIASTREAMER_DEPENDENCIES = ortp\nMEDIASTREAMER_CONF_OPTS = \\\n\t-DENABLE_DOC=OFF \\\n\t-DENABLE_GL=OFF \\\n\t-DENABLE_GLX=OFF \\\n\t-DENABLE_MKV=OFF \\\n\t-DENABLE_SOUND=OFF \\\n\t-DENABLE_STRICT=OFF \\\n\t-DENABLE_TOOLS=OFF \\\n\t-DENABLE_UNIT_TESTS=OFF \\\n\t-DENABLE_ZRTP=OFF\n\nifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER)$(BR2_PACKAGE_ALSA_LIB_PCM),yy)\nMEDIASTREAMER_CONF_OPTS += \\\n\t-DENABLE_ALSA=ON \\\n\t-DENABLE_SOUND=ON\nMEDIASTREAMER_DEPENDENCIES += alsa-lib\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_ALSA=OFF\nendif\n\nifeq ($(BR2_PACKAGE_BCG729),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_G729=ON\nMEDIASTREAMER_DEPENDENCIES += bcg729\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_G729=OFF\nendif\n\nifeq ($(BR2_PACKAGE_JPEG_TURBO),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_JPEG=ON\nMEDIASTREAMER_DEPENDENCIES += jpeg\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_JPEG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBGSM),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_GSM=ON\nMEDIASTREAMER_DEPENDENCIES += libgsm\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_GSM=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBPCAP),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_PCAP=ON\nMEDIASTREAMER_DEPENDENCIES += libpcap\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_PCAP=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBSRTP),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_SRTP=ON\nMEDIASTREAMER_DEPENDENCIES += libsrtp\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_SRTP=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBVPX),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_VPX=ON\nMEDIASTREAMER_DEPENDENCIES += libvpx\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_VPX=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPUS),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_OPUS=ON\nMEDIASTREAMER_DEPENDENCIES += opus\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_OPUS=OFF\nendif\n\n# portaudio backend needs speexdsp as well\nifeq ($(BR2_PACKAGE_PORTAUDIO)$(BR2_PACKAGE_SPEEXDSP),yy)\nMEDIASTREAMER_CONF_OPTS += \\\n\t-DENABLE_PORTAUDIO=ON \\\n\t-DENABLE_SOUND=ON\nMEDIASTREAMER_DEPENDENCIES += portaudio\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_PORTAUDIO=OFF\nendif\n\nifeq ($(BR2_PACKAGE_PULSEAUDIO),y)\nMEDIASTREAMER_CONF_OPTS += \\\n\t-DENABLE_PULSEAUDIO=ON \\\n\t-DENABLE_SOUND=ON\nMEDIASTREAMER_DEPENDENCIES += pulseaudio\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_PULSEAUDIO=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SPEEX),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_SPEEX_CODEC=ON\nMEDIASTREAMER_DEPENDENCIES += speex\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_SPEEX_CODEC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SPEEXDSP),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_SPEEX_DSP=ON\nMEDIASTREAMER_DEPENDENCIES += speexdsp\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_SPEEX_DSP=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SPEEX)$(BR2_PACKAGE_SPEEXDSP),yy)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_RESAMPLE=ON\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_RESAMPLE=OFF\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_FFMPEG=ON\nMEDIASTREAMER_DEPENDENCIES += ffmpeg\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_FFMPEG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SDL),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_SDL=ON\nMEDIASTREAMER_DEPENDENCIES += sdl\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_SDL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_X11=ON\nMEDIASTREAMER_DEPENDENCIES += xlib_libX11\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_X11=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXV),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_XV=ON\nMEDIASTREAMER_DEPENDENCIES += xlib_libXv\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_XV=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBTHEORA),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_THEORA=ON\nMEDIASTREAMER_DEPENDENCIES += libtheora\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_THEORA=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBV4L),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_V4L=ON\nMEDIASTREAMER_DEPENDENCIES += libv4l\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_V4L=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ZXING_CPP),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_QRCODE=ON\nMEDIASTREAMER_DEPENDENCIES += zxing-cpp\nelse\nMEDIASTREAMER_CONF_OPTS += -DENABLE_QRCODE=OFF\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nMEDIASTREAMER_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/memcached/Config.in",
    "content": "config BR2_PACKAGE_MEMCACHED\n\tbool \"memcached\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBEVENT\n\thelp\n\t  Memcached is an in-memory key-value store for small chunks\n\t  of arbitrary data (strings, objects) from results of\n\t  database calls, API calls, or page rendering.\n\n\t  http://www.memcached.org/\n\ncomment \"memcached needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/memcached/memcached.hash",
    "content": "# From http://www.memcached.org/files/memcached-1.6.9.tar.gz.sha1\nsha1  42ae062094fdf083cfe7b21ff377c781011c2be1  memcached-1.6.9.tar.gz\n\n# Locally computed\nsha256  d5a62ce377314dbffdb37c4467e7763e3abae376a16171e613cbe69956f092d1  memcached-1.6.9.tar.gz\nsha256  bc887c4ad8051fe690ace9528fe37a2e0bb362e6d963331d82e845ca9b585a0c  COPYING\n"
  },
  {
    "path": "package/memcached/memcached.mk",
    "content": "################################################################################\n#\n# memcached\n#\n################################################################################\n\nMEMCACHED_VERSION = 1.6.9\nMEMCACHED_SITE = http://www.memcached.org/files\nMEMCACHED_DEPENDENCIES = libevent\nMEMCACHED_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'\nMEMCACHED_CONF_OPTS = --disable-coverage\nMEMCACHED_LICENSE = BSD-3-Clause\nMEMCACHED_LICENSE_FILES = COPYING\nMEMCACHED_CPE_ID_VENDOR = memcached\nMEMCACHED_SELINUX_MODULES = memcached\n\nifeq ($(BR2_ENDIAN),\"BIG\")\nMEMCACHED_CONF_ENV += ac_cv_c_endian=big\nelse\nMEMCACHED_CONF_ENV += ac_cv_c_endian=little\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/memstat/0001-PATH_MAX.patch",
    "content": "Add missing #include for PATH_MAX\n\nSigned-off-by: Maarten ter Huurne <maarten@treewalker.org>\n\n--- memstat-0.8.org/memstat.c\t2009-06-08 14:38:05.000000000 +0200\n+++ memstat-0.8/memstat.c\t2014-09-12 03:55:43.096035374 +0200\n@@ -19,6 +19,7 @@\n #include <unistd.h>\n #include <getopt.h>\n #include <errno.h>\n+#include <limits.h>\n \n /* blacklist devices that just map physical memory */\n char *blacklist[] = { \"/dev/mem\",\n"
  },
  {
    "path": "package/memstat/Config.in",
    "content": "config BR2_PACKAGE_MEMSTAT\n\tbool \"memstat\"\n\thelp\n\t  Memstat lists all the processes, executables, and shared\n\t  libraries that are using up virtual memory. It's helpful to\n\t  see how the shared memory is used and which 'old' libs are\n\t  loaded.\n\n\t  http://sourceforge.net/projects/memstattool\n"
  },
  {
    "path": "package/memstat/memstat.hash",
    "content": "# From http://sourceforge.net/projects/memstattool/files/\nsha1\t26071dbc30a2796c0503c7d8060a548ca36f8df9\tmemstat_1.0.tar.gz\n# Locally computed\nsha256  5e5db2a2fab637bbbc5d2400141fcb9f1b4b55540d025c2dc54378dc497cb524  debian/copyright\n"
  },
  {
    "path": "package/memstat/memstat.mk",
    "content": "################################################################################\n#\n# memstat\n#\n################################################################################\n\nMEMSTAT_VERSION = 1.0\nMEMSTAT_SITE = http://downloads.sourceforge.net/project/memstattool\nMEMSTAT_SOURCE = memstat_$(MEMSTAT_VERSION).tar.gz\nMEMSTAT_LICENSE = GPL\nMEMSTAT_LICENSE_FILES = debian/copyright\n\ndefine MEMSTAT_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" LD=\"$(TARGET_LD)\" CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\t-C $(@D) memstat\nendef\n\ndefine MEMSTAT_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D $(@D)/memstat.conf -m 0644 \\\n\t\t$(TARGET_DIR)/etc/memstat.conf\n\t$(INSTALL) -D $(@D)/memstat $(TARGET_DIR)/usr/bin/memstat\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/memtest86/Config.in",
    "content": "config BR2_PACKAGE_MEMTEST86\n\tbool \"memtest86\"\n\tdepends on BR2_i386 || BR2_x86_64\n\thelp\n\t  Memtest86+ is a bootable standalone memory test program.\n\n\t  Buildroot does not support packages with a '+' sign in their\n\t  name, which explains why it is named memtest86 and not\n\t  memtest86+.\n\n\t  Memtest86+ is a utility designed to test whether your memory\n\t  is in working order. It repeatedly writes an enormous amount\n\t  of different patterns to all memory locations and reads them\n\t  back again and verifies whether the result of the read is the\n\t  same as what was written to memory.\n\n\t  Memtest86+ will only work on 32-bit or 64-bit x86 targets.\n\t  It boots as an i486 program and autodetects hardware. It can\n\t  be added to the grub2 boot menu by adding the following\n\t  lines to the bottom of /boot/grub/grub.cfg - note the use of\n\t  linux16.\n\n\t  menuentry \"Memtest86+\" {\n\t    linux16 /boot/memtest86+.bin\n\t  }\n\n\t  Other boot loaders will have similar requirements.\n\n\t  http://www.memtest.org\n"
  },
  {
    "path": "package/memtest86/memtest86.hash",
    "content": "# locally computed using sha256sum\nsha256  142127b7953fbd829b1057fb64a78d3340c2b771484230a7347e94530a0d9039  memtest86+-5.01.tar.gz\nsha256  2e15e2174b86640d7fbfcb62b51d9182062d9db71d66a46e5b01d736c68150ea  README\n"
  },
  {
    "path": "package/memtest86/memtest86.mk",
    "content": "################################################################################\n#\n# memtest86\n#\n################################################################################\n\nMEMTEST86_VERSION = 5.01\nMEMTEST86_SOURCE = memtest86+-$(MEMTEST86_VERSION).tar.gz\nMEMTEST86_SITE = http://www.memtest.org/download/$(MEMTEST86_VERSION)\nMEMTEST86_LICENSE = GPL-2.0\nMEMTEST86_LICENSE_FILES = README\n\n# memtest86+ is sensitive to toolchain changes, use the shipped binary version\ndefine MEMTEST86_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/precomp.bin $(TARGET_DIR)/boot/memtest86+.bin\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/memtester/Config.in",
    "content": "config BR2_PACKAGE_MEMTESTER\n\tbool \"memtester\"\n\thelp\n\t  A userspace utility for testing the memory subsystem for\n\t  faults.\n\n\t  http://pyropus.ca/software/memtester/\n"
  },
  {
    "path": "package/memtester/memtester.hash",
    "content": "# Locally computed\nsha256  8ed52b0d06d4aeb61954994146e2a5b2d20448a8f3ce3ee995120e6dbde2ae37  memtester-4.5.0.tar.gz\nsha256  dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa  COPYING\n"
  },
  {
    "path": "package/memtester/memtester.mk",
    "content": "################################################################################\n#\n# memtester\n#\n################################################################################\n\nMEMTESTER_VERSION = 4.5.0\nMEMTESTER_SITE = http://pyropus.ca/software/memtester/old-versions\nMEMTESTER_LICENSE = GPL-2.0\nMEMTESTER_LICENSE_FILES = COPYING\nMEMTESTER_CPE_ID_VENDOR = pryopus\n\nMEMTESTER_TARGET_INSTALL_OPTS = INSTALLPATH=$(TARGET_DIR)/usr\n\ndefine MEMTESTER_BUILD_CMDS\n\t$(SED) \"s%^cc%$(TARGET_CC) $(TARGET_CFLAGS)%\" $(@D)/conf-cc\n\t$(SED) \"s%^cc%$(TARGET_CC) $(TARGET_LDFLAGS)%\" $(@D)/conf-ld\n\t$(MAKE) -C $(@D)\nendef\n\ndefine MEMTESTER_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(MEMTESTER_TARGET_INSTALL_OPTS) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/memtool/Config.in",
    "content": "config BR2_PACKAGE_MEMTOOL\n\tbool \"memtool\"\n\thelp\n\t  Development tool to modify memory mapped registers.\n\n\t  memtool allows one to read and write memory mapped registers\n\t  via /dev/mem. The commands are inspired by the respective\n\t  commands of the barebox bootloader.  This is handy during\n\t  driver development to inspect and modify register\n\t  settings. It can also be used to modify regular files and\n\t  character devices (e.g. to paint to /dev/fb0).\n\n\t  http://www.pengutronix.de/software/memtool/index_en.html\n"
  },
  {
    "path": "package/memtool/memtool.hash",
    "content": "# Locally computed:\nsha256  87cb7175266ff3a00a9c1f541c4c6c93693ffbe8dcc0d97a60d13c45ff860900  memtool-2018.03.0.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/memtool/memtool.mk",
    "content": "################################################################################\n#\n# memtool\n#\n################################################################################\n\nMEMTOOL_VERSION = 2018.03.0\nMEMTOOL_SITE = http://public.pengutronix.de/software/memtool\nMEMTOOL_SOURCE = memtool-$(MEMTOOL_VERSION).tar.xz\nMEMTOOL_LICENSE = GPL-2.0\nMEMTOOL_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mender/Config.in",
    "content": "config BR2_PACKAGE_MENDER\n\tbool \"mender\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Mender is an open source over-the-air (OTA) software updater\n\t  for embedded Linux devices. Mender comprises a client\n\t  running at the embedded device, as well as a server that\n\t  manages deployments across many devices.\n\n\t  Notes:\n\t  For systems using uboot as the bootloader:\n\t    - uboot must have the mender uboot patches applied.\n\t    - uboot-tools must be selected.\n\t    - fw_printenv must be functional on the device.\n\t  The Mender Uboot patches are at:\n\t  https://github.com/mendersoftware/meta-mender/\n\n\t  For more information on Manual U-Boot integration, see:\n\t  https://docs.mender.io/2.6/system-updates-yocto-project/board-integration/bootloader-support/u-boot/manual-u-boot-integration\n\n\t  For systems using Grub2 as the bootloader:\n\t    - Mender depends on the mender-grubenv package.\n\t    - The mender-grubenv package provides a fw_printenv script,\n\t      which is not compatible with the uboot-tools fw_printenv\n\t      script.\n\n\t  The mender project recommends using uboot to load Grub2 as a\n\t  secondary bootloader whenever possible. Using Grub2 as a\n\t  secondary bootloader prevents users from porting the patches\n\t  for uboot to each new device.\n\n\t  https://github.com/mendersoftware/mender\n\ncomment \"mender needs a toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/mender/S42mender",
    "content": "#!/bin/sh\n#\n# Starts mender service.\n#\n\nstart() {\n\t# If /var/lib/mender is a symlink to /var/run/mender, and\n\t#   - the filesystem is RO (i.e. we can not rm the symlink),\n\t#     create the directory pointed to by the symlink.\n\t#   - the filesystem is RW (i.e. we can rm the symlink),\n\t#     replace the symlink with an actual directory\n\tif [ -L /var/lib/mender \\\n\t     -a \"$(readlink /var/lib/mender)\" = \"/var/run/mender\" ]\n\tthen\n\t\tif rm -f /var/lib/mender >/dev/null 2>&1; then\n\t\t\tmkdir -p /var/lib/mender\n\t\telse\n\t\t\techo \"No persistent location to store mender data. Data will be lost\"\n\t\t\techo \"at reboot. Are you sure this is what you want to do?\"\n\t\t\tmkdir -p \"$(readlink /var/lib/mender)\"\n\t\tfi\n\tfi\n\n\tprintf \"Starting mender service: \"\n\tumask 077\n\n\tstart-stop-daemon -S -q -b -m -p /var/run/mender.pid \\\n\t\t--exec /usr/bin/mender -- -daemon\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping mender service: \"\n\tstart-stop-daemon -K -q -p /var/run/mender.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t\t;;\n\tstop)\n\t\tstop\n\t\t;;\n\trestart|reload)\n\t\trestart\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/mender/artifact_info",
    "content": "artifact_name=BUILDROOT_ARTIFACT\n"
  },
  {
    "path": "package/mender/device_type",
    "content": "device_type=BUILDROOT_DEVICE\n"
  },
  {
    "path": "package/mender/mender-client.service",
    "content": "[Unit]\nDescription=Mender OTA update service\nAfter=systemd-resolved.service\n\n[Service]\nType=idle\nUser=root\nGroup=root\nExecStartPre=/bin/sh -c '\\\nif [ -L /var/lib/mender \\\n     -a \"$(readlink /var/lib/mender)\" = \"/var/run/mender\" ]; then \\\n    if rm -f /var/lib/mender >/dev/null 2>&1; then \\\n        mkdir -p /var/lib/mender; \\\n    else \\\n        echo \"No persistent location to store mender data. Data will be lost\" \\\n        echo \"at reboot. Are you sure this is what you want to do?\"; \\\n        mkdir -p \"$(readlink /var/lib/mender)\"; \\\n    fi; \\\nfi'\nExecStart=/usr/bin/mender -daemon\nRestart=on-abort\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/mender/mender.conf",
    "content": "{\n  \"InventoryPollIntervalSeconds\": 1800,\n  \"UpdatePollIntervalSeconds\": 1800,\n  \"RetryPollIntervalSeconds\": 300,\n  \"RootfsPartA\": \"/dev/mmcblk0p2\",\n  \"RootfsPartB\": \"/dev/mmcblk0p3\",\n  \"ServerCertificate\": \"/etc/mender/server.crt\",\n  \"ServerURL\": \"https://docker.mender.io\",\n  \"TenantToken\": \"dummy\"\n}\n"
  },
  {
    "path": "package/mender/mender.hash",
    "content": "# Locally computed:\nsha256  716ba7110dd68cdafc5caa989706ff67bbac0617c284d666aa81605850be5763  3.1.0.tar.gz\n\n# Vendor licenses\n# Generated with sed '/^[A-Za-z0-9_]/s/^/sha256  /' LIC_FILES_CHKSUM.sha256\n\n# Apache-2.0 license.\nsha256  b4acfcfa2a0ba1a8c82ec3965fbcee886cff8394ca4214e0ddac0a36beb1e05a  LICENSE\nsha256  32714818ad6f98ee0185a52e23a475d89122e3efd2b2c26c733781c28e798c99  vendor/github.com/mendersoftware/mender-artifact/LICENSE\nsha256  73ba74dfaa520b49a401b5d21459a8523a146f3b7518a833eea5efa85130bf68  vendor/github.com/mendersoftware/openssl/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  vendor/github.com/minio/sha256-simd/LICENSE\nsha256  8f5d89b47d7a05a199b77b7e0f362dad391d451ebda4ef48ba11c50c071564c7  vendor/github.com/mendersoftware/progressbar/LICENSE\n#\n# BSD 2 Clause license.\nsha256  8d427fd87bc9579ea368fde3d49f9ca22eac857f91a9dec7e3004bdfab7dee86  vendor/github.com/pkg/errors/LICENSE\nsha256  e4646a82a976369d7ae8f6ed5c11d35dc0af18433a8ccc24c85b459ad8b95128  vendor/github.com/godbus/dbus/LICENSE\n#\n# BSD 3 Clause license.\nsha256  16f848582e4b276a7392cd34496b7a33d6f65c0e190c163ff3a056a7c61219ce  vendor/github.com/klauspost/compress/LICENSE\nsha256  2eb550be6801c1ea434feba53bf6d12e7c71c90253e0a9de4a4f46cf88b56477  vendor/github.com/pmezard/go-difflib/LICENSE\nsha256  2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067  vendor/golang.org/x/crypto/LICENSE\nsha256  2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067  vendor/golang.org/x/sys/LICENSE\nsha256  0634b008cee55ca01f0888d2f5aba2d34e66c3f52c31a4e16a5d5d33d0c2a03e  vendor/github.com/bmatsuo/lmdb-go/LICENSE.md\nsha256  87640bc4df2ceb1559f268a3db1ba859ab780f7ba5b1b4545173d4680a3d918b  vendor/github.com/remyoudompheng/go-liblzma/LICENSE\n#\n# ISC license.\nsha256  1b93a317849ee09d3d7e4f1d20c2b78ddb230b4becb12d7c224c927b9d470251  vendor/github.com/davecgh/go-spew/LICENSE\n#\n# MIT license.\nsha256  6d2de1cde19c4d2bd8bcd9aaa1d581f4cfa3db9cf71896140330eaa2f2687685  vendor/github.com/klauspost/pgzip/LICENSE\nsha256  51a0c9ec7f8b7634181b8d4c03e5b5d204ac21d6e72f46c313973424664b2e6b  vendor/github.com/sirupsen/logrus/LICENSE\nsha256  f8e536c1c7b695810427095dc85f5f80d44ff7c10535e8a9486cf393e2599189  vendor/github.com/stretchr/testify/LICENSE\nsha256  ffa15bdce332058a03a1d923910864fb6e58bf6df66a0e3914284725b327183e  vendor/github.com/ungerik/go-sysfs/LICENSE\nsha256  da277af11b85227490377fbcac6afccc68be560c4fff36ac05ca62de55345fd7  vendor/github.com/urfave/cli/v2/LICENSE\nsha256  b2663894033a05fd80261176cd8da1d72546e25842d5c1abcc852ca23b6b61b0  vendor/github.com/stretchr/objx/LICENSE\nsha256  95b8ef9c4137a8f75ddd3101ffdc4cfd594fa875b261697b68baddc16b0e537c  vendor/github.com/konsorten/go-windows-terminal-sequences/LICENSE\nsha256  d18f6323b71b0b768bb5e9616e36da390fbd39369a81807cca352de4e4e6aa0b  vendor/gopkg.in/yaml.v3/LICENSE\nsha256  08eab1118c80885fa1fa6a6dd7303f65a379fcb3733e063d20d1bbc2c76e6fa1  vendor/github.com/mattn/go-isatty/LICENSE\n#\n# OpenLDAP Public License\nsha256  310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569  vendor/github.com/bmatsuo/lmdb-go/LICENSE.mdb.md\n\n# sha256 of all the vendor licenses combined\nsha256  4f3541ea69b9b6e3959679576c146b42ba9a840a9dc4e593bff43e5e3a313d24  LIC_FILES_CHKSUM.sha256\n"
  },
  {
    "path": "package/mender/mender.mk",
    "content": "################################################################################\n#\n# mender\n#\n################################################################################\n\nMENDER_VERSION = 3.1.0\nMENDER_SITE = https://github.com/mendersoftware/mender/archive\nMENDER_SOURCE = $(MENDER_VERSION).tar.gz\nMENDER_LICENSE = Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, MIT, OLDAP-2.8\n\n# Vendor license paths generated with:\n#    awk '{print $2}' LIC_FILES_CHKSUM.sha256 | grep vendor\nMENDER_LICENSE_FILES = \\\n\tLICENSE \\\n\tLIC_FILES_CHKSUM.sha256 \\\n\tvendor/github.com/mendersoftware/mender-artifact/LICENSE \\\n\tvendor/github.com/mendersoftware/openssl/LICENSE \\\n\tvendor/github.com/minio/sha256-simd/LICENSE \\\n\tvendor/github.com/mendersoftware/progressbar/LICENSE \\\n\tvendor/github.com/pkg/errors/LICENSE \\\n\tvendor/github.com/godbus/dbus/LICENSE \\\n\tvendor/github.com/klauspost/compress/LICENSE \\\n\tvendor/github.com/pmezard/go-difflib/LICENSE \\\n\tvendor/golang.org/x/crypto/LICENSE \\\n\tvendor/golang.org/x/sys/LICENSE \\\n\tvendor/github.com/bmatsuo/lmdb-go/LICENSE.md \\\n\tvendor/github.com/remyoudompheng/go-liblzma/LICENSE \\\n\tvendor/github.com/davecgh/go-spew/LICENSE \\\n\tvendor/github.com/klauspost/pgzip/LICENSE \\\n\tvendor/github.com/sirupsen/logrus/LICENSE \\\n\tvendor/github.com/stretchr/testify/LICENSE \\\n\tvendor/github.com/ungerik/go-sysfs/LICENSE \\\n\tvendor/github.com/urfave/cli/v2/LICENSE \\\n\tvendor/github.com/stretchr/objx/LICENSE \\\n\tvendor/github.com/konsorten/go-windows-terminal-sequences/LICENSE \\\n\tvendor/gopkg.in/yaml.v3/LICENSE \\\n\tvendor/github.com/mattn/go-isatty/LICENSE \\\n\tvendor/github.com/bmatsuo/lmdb-go/LICENSE.mdb.md\n\nMENDER_DEPENDENCIES = host-pkgconf openssl\n\nMENDER_LDFLAGS = -X github.com/mendersoftware/mender/conf.Version=$(MENDER_VERSION)\n\nMENDER_UPDATE_MODULES_FILES = \\\n\tdirectory \\\n\tscript \\\n\tsingle-file \\\n\t$(if $(BR2_PACKAGE_DOCKER_CLI),docker) \\\n\t$(if $(BR2_PACKAGE_RPM),rpm)\n\ndefine MENDER_INSTALL_CONFIG_FILES\n\t$(INSTALL) -d -m 755 $(TARGET_DIR)/etc/mender/scripts\n\techo -n \"3\" > $(TARGET_DIR)/etc/mender/scripts/version\n\n\t$(INSTALL) -D -m 0644 $(MENDER_PKGDIR)/mender.conf \\\n\t\t$(TARGET_DIR)/etc/mender/mender.conf\n\t$(INSTALL) -D -m 0644 $(MENDER_PKGDIR)/server.crt \\\n\t\t$(TARGET_DIR)/etc/mender/server.crt\n\n\t$(INSTALL) -D -m 0755 $(@D)/support/mender-device-identity \\\n\t\t$(TARGET_DIR)/usr/share/mender/identity/mender-device-identity\n\t$(foreach f,hostinfo network os rootfs-type, \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/support/mender-inventory-$(f) \\\n\t\t\t$(TARGET_DIR)/usr/share/mender/inventory/mender-inventory-$(f)\n\t)\n\n\t$(INSTALL) -D -m 0755 $(MENDER_PKGDIR)/artifact_info \\\n\t\t\t$(TARGET_DIR)/etc/mender/artifact_info\n\n\t$(INSTALL) -D -m 0755 $(MENDER_PKGDIR)/device_type \\\n\t\t\t$(TARGET_DIR)/etc/mender/device_type\n\n\tmkdir -p $(TARGET_DIR)/var/lib\n\tln -snf /var/run/mender $(TARGET_DIR)/var/lib/mender\n\t$(foreach f,$(MENDER_UPDATE_MODULES_FILES), \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/support/modules/$(notdir $(f)) \\\n\t\t\t$(TARGET_DIR)/usr/share/mender/modules/v3/$(notdir $(f))\n\t)\nendef\n\nMENDER_POST_INSTALL_TARGET_HOOKS += MENDER_INSTALL_CONFIG_FILES\n\nifeq ($(BR2_PACKAGE_XZ),y)\nMENDER_DEPENDENCIES += xz\nelse\nMENDER_TAGS += nolzma\nendif\n\nifeq ($(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_LIBGLIB2),yy)\nMENDER_DEPENDENCIES += libglib2\ndefine MENDER_INSTALL_DBUS_AUTHENTICATION_MANAGER_CONF\n\t$(INSTALL) -D -m 0755 $(@D)/support/dbus/io.mender.AuthenticationManager.conf \\\n\t\t$(TARGET_DIR)/etc/dbus-1/system.d/io.mender.AuthenticationManager.conf\n\n\t$(INSTALL) -D -m 0755 $(@D)/support/dbus/io.mender.UpdateManager.conf \\\n\t\t$(TARGET_DIR)/etc/dbus-1/system.d/io.mender.UpdateManager.conf\nendef\nMENDER_POST_INSTALL_TARGET_HOOKS += MENDER_INSTALL_DBUS_AUTHENTICATION_MANAGER_CONF\nelse\nMENDER_TAGS += nodbus\nendif\n\ndefine MENDER_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 $(MENDER_PKGDIR)/mender-client.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/mender-client.service\nendef\n\ndefine MENDER_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 $(MENDER_PKGDIR)/S42mender \\\n\t\t$(TARGET_DIR)/etc/init.d/S42mender\nendef\n\n$(eval $(golang-package))\n"
  },
  {
    "path": "package/mender/readme.txt",
    "content": "=== Notes on using Mender on Buildroot\n======================================\n\nMender is an open source over-the-air (OTA) software updater for\nembedded Linux devices. Mender comprises a client running at the\nembedded device, as well as a server that manages deployments across\nmany devices. There is also various tooling around the Mender project,\nsuch as 'mender-artifact' which is used to create Mender Artifacts\nthat are compatible with the Mender client and server.\n\nMender aims to address this challenge with a robust and easy to use\nupdater for embedded Linux devices, which is open source and available\nto anyone.\n\nRobustness is ensured with atomic image-based deployments using a dual\nA/B rootfs partition layout. This makes it always possible to roll\nback to a working state, even when losing power at any time during the\nupdate process.\n\nThe official documentation is a good resource to get an in depth\nunderstanding of how Mender works:\n\n    https://docs.mender.io\n\nIn Buildroot the following packages are provided:\n\n- BR2_PACKAGE_MENDER\n    - This will install the client on target rootfs\n- BR2_PACKAGE_HOST_MENDER_ARTIFACT\n    - This will install the 'mender-artifact' tool in host rootfs.\n\nTo fully utilize atomic image-based deployments using the A/B update\nstrategy, additional integration is required in the bootloader. This\nintegration is board specific.\n\nCurrently supported bootloaders are GRUB and U-boot, and for reference\nintegrations please visit:\n\n    https://github.com/mendersoftware/buildroot-mender\n\nDefault configurations files\n----------------------------\n\nBuildroot comes with a default configuration and there a couple of\nfiles that need your attention:\n\n- /etc/mender/mender.conf\n    - main configuration file for the Mender client\n    - https://docs.mender.io/client-configuration/configuration-file/configuration-options\n\n- /etc/mender/artifact_info\n    - The name of the image or update that will be built. This is what the\n      device will report that it is running, and different updates must have\n      different names\n\n- /var/lib/mender/device_type\n    - A string that defines the type of device\n\nMender server configuration\n---------------------------\n\nThe Mender server can be setup in different ways, and how you\nconfigure the Mender client differs slightly depending on which server\nenvironment is used.\n\n- Mender demo environment\n\nThis is if you have followed the Getting started documentation where\nyou launch a Mender server locally and to configure your environment\nto connect to this local server you need to provide the IP address of\nthe server on the local network.\n\nBy default the demo environment will connect to 'docker.mender.io' and\n's3.docker.mender.io' and we need to make sure that these are resolved\nto the local IP address of the running server by adding the following\nentry to '/etc/hosts'\n\n    <ip address of demo environment> docker.mender.io s3.docker.mender.io\n\nThis is required because the communication between client and server\nis utilizing TLS and the provided demo server certificate (server.crt)\nis only valid for 'docker.mender.io' and 's3.docker.mender.io'\ndomains.\n\n- Hosted Mender\n\nTo authenticate the Mender client with the Hosted Mender server you\nneed a tenant token.\n\nTo get your tenant token:\n\n- log in to https://hosted.mender.io\n- click your email at the top right and then “My organization”\n- press the “COPY TO CLIPBOARD”\n- assign content of clipboard to TenantToken\n\nExample mender.conf options for Hosted Mender:\n\n    {\n      ...\n      \"ServerURL\": \"https://hosted.mender.io\",\n      \"TenantToken\": \"<paste tenant token here>\"\n      ...\n    }\n\n\nCreating Mender Artifacts\n-------------------------\n\nTo create Mender Artifacts based on Buildroot build output you must\ninclude BR2_PACKAGE_HOST_MENDER_ARTIFACT in your configuration, and\nthen you would typically create the Mender Artifact in a post image\nscript (BR2_ROOTFS_POST_IMAGE_SCRIPT). Below is an example of such a\nscript:\n\n    #!/bin/sh\n\n    set -e\n    set -x\n\n    device_type=$(cat ${TARGET_DIR}/var/lib/mender/device_type | sed 's/[^=]*=//')\n    artifact_name=$(cat ${TARGET_DIR}/etc/mender/artifact_info | sed 's/[^=]*=//')\n\n    if [ -z \"${device_type}\" ] || [ -z \"${artifact_name}\" ]; then\n        echo \"missing files required by Mender\"\n        exit 1\n    fi\n\n    ${HOST_DIR}/usr/bin/mender-artifact write rootfs-image \\\n        --update ${BINARIES_DIR}/rootfs.ext4 \\\n        --output-path ${BINARIES_DIR}/${artifact_name}.mender \\\n        --artifact-name ${artifact_name} \\\n        --device-type ${device_type}\n\nAs you can see some properties are extracted from target rootfs, and\nthis is because these values are used for compatibility checks,\nmeaning that the information must be present in both rootfs and in\nMender Artifact meta data.\n\n- device_type - must be an exact match between rootfs and Mender\n                Artifact meta-data to apply update. You can set an\n                array of devices here as well, e.g if your image is\n                compatible with multiple hardware revisions\n\n- artifact_name - must be an exact match between rootfs and Mender\n                  Artifact meta-data to apply update.\n\nConfiguring Mender with certificates\n------------------------------------\n\nMender uses TLS to communicate with the management server, and if you\nuse a CA-signed certificate on the server, you must include\nBR2_PACKAGE_CA_CERTIFICATES in your configuration to authenticate TLS\nconnections.\n"
  },
  {
    "path": "package/mender/server.crt",
    "content": "-----BEGIN CERTIFICATE-----\nMIIBfTCCASOgAwIBAgIJAJOS76a0qWuZMAoGCCqGSM49BAMCMBsxGTAXBgNVBAMM\nEGRvY2tlci5tZW5kZXIuaW8wHhcNMTYxMjE0MTk1MjQ2WhcNMjYxMjEyMTk1MjQ2\nWjAbMRkwFwYDVQQDDBBkb2NrZXIubWVuZGVyLmlvMFkwEwYHKoZIzj0CAQYIKoZI\nzj0DAQcDQgAE7AVYis6MWGPGQYU1/tlLEnskRifDIhvkRb8Y4nQPekRkLkiBYYT3\niJ46wHrnejbHaLstU9GRdKWOmOuU6HGdO6NQME4wHQYDVR0OBBYEFGOIU4q++Vz8\n9HuT1jg9V+wFeJcyMB8GA1UdIwQYMBaAFGOIU4q++Vz89HuT1jg9V+wFeJcyMAwG\nA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIhAPLnEeWPNeN7eDCEYRitBfyO\nX1yf2kzOm4ohBE5GY9gzAiBCq7HOSkzQDkelmQCCCpGXf/UwYNgQJjSoeGfk0j1a\nTQ==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIBhDCCASmgAwIBAgIJALQrf4QDot4IMAoGCCqGSM49BAMCMB4xHDAaBgNVBAMM\nE3MzLmRvY2tlci5tZW5kZXIuaW8wHhcNMTYxMjE0MTk1MjQ2WhcNMjYxMjEyMTk1\nMjQ2WjAeMRwwGgYDVQQDDBNzMy5kb2NrZXIubWVuZGVyLmlvMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEc/Y3T+l3DvINePkpvVZORMIdHVs29jgsl48ia7z/NRX\nHlKtKxVGJyFN5Y7sBZeLgBYH3F4Bo3KfmxI7ad0tI6NQME4wHQYDVR0OBBYEFIUm\ncip00QZYpe4ULflbGNJan+Y9MB8GA1UdIwQYMBaAFIUmcip00QZYpe4ULflbGNJa\nn+Y9MAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhANHij9VZBDHOUPaC\npFiagnWnYL2HBR72W1xTKQbrLLTXAiEAvpwA4HzSnGmLd3010+jqQuMRHArN5WaX\nh0fy7niBbIQ=\n-----END CERTIFICATE-----\n"
  },
  {
    "path": "package/mender-artifact/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_MENDER_ARTIFACT\n\tbool \"host mender-artifact\"\n\tdepends on BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS\n\thelp\n\t  The mender-artifact tool is a CLI implementation of the\n\t  Mender artifacts library.\n\n\t  A Mender artifact can be recognized by its .mender suffix.\n\t  Mender artifacts can contain binaries, metadata, checksums,\n\t  signatures and scripts that are used during a deployment.\n\t  The artifact format acts as a wrapper, and uses the tar\n\t  format to bundle several files into one.\n\n\t  In its simplest form, an artifact contains just a rootfs\n\t  image, along with its checksum, id and device type\n\t  compatibility.\n\n\t  https://github.com/mendersoftware/mender-artifact\n"
  },
  {
    "path": "package/mender-artifact/mender-artifact.hash",
    "content": "# Locally computed:\nsha256  c46c305616cf53e65b786862addf04d97c388e451f11478886967b494c4ce5d9  mender-artifact-3.6.1.tar.gz\nsha256  ac23df36801aea6a28685b60a742f68f99d357e0d9973d5c36aa2e72599d8e2a  LIC_FILES_CHKSUM.sha256\n\n# License hash extracted from LIC_FILES_CHKSUM.sha256 using the\n# following command:\n#\n#     sed '/^[A-Za-z0-9_]/s/^/sha256  /' LIC_FILES_CHKSUM.sha256\n\n# Apache 2.0 licenses.\nsha256  b4acfcfa2a0ba1a8c82ec3965fbcee886cff8394ca4214e0ddac0a36beb1e05a  LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  vendor/github.com/minio/sha256-simd/LICENSE\nsha256  8f5d89b47d7a05a199b77b7e0f362dad391d451ebda4ef48ba11c50c071564c7  vendor/github.com/mendersoftware/progressbar/LICENSE\n#\n# BSD 2 Clause licenses.\nsha256  8d427fd87bc9579ea368fde3d49f9ca22eac857f91a9dec7e3004bdfab7dee86  vendor/github.com/pkg/errors/LICENSE\n#\n# BSD 3 Clause licenses.\nsha256  2eb550be6801c1ea434feba53bf6d12e7c71c90253e0a9de4a4f46cf88b56477  vendor/github.com/pmezard/go-difflib/LICENSE\nsha256  2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067  vendor/golang.org/x/sys/LICENSE\nsha256  2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067  vendor/golang.org/x/crypto/LICENSE\nsha256  a284e538f3e5649ae6a8f32da2bbd18e9daabf2c1ebbfb99ed92e797b159be1a  vendor/github.com/remyoudompheng/go-liblzma/LICENSE\nsha256  16f848582e4b276a7392cd34496b7a33d6f65c0e190c163ff3a056a7c61219ce  vendor/github.com/klauspost/compress/LICENSE\nsha256  75e1ca97a84a9da6051dee0114333388216f2c4a5a028296b882ff3d57274735  vendor/github.com/russross/blackfriday/v2/LICENSE.txt\n#\n# ISC licenses.\nsha256  1b93a317849ee09d3d7e4f1d20c2b78ddb230b4becb12d7c224c927b9d470251  vendor/github.com/davecgh/go-spew/LICENSE\n#\n# MIT licenses.\nsha256  f8e536c1c7b695810427095dc85f5f80d44ff7c10535e8a9486cf393e2599189  vendor/github.com/stretchr/testify/LICENSE\nsha256  da277af11b85227490377fbcac6afccc68be560c4fff36ac05ca62de55345fd7  vendor/github.com/urfave/cli/LICENSE\nsha256  51a0c9ec7f8b7634181b8d4c03e5b5d204ac21d6e72f46c313973424664b2e6b  vendor/github.com/sirupsen/logrus/LICENSE\nsha256  6d2de1cde19c4d2bd8bcd9aaa1d581f4cfa3db9cf71896140330eaa2f2687685  vendor/github.com/klauspost/pgzip/LICENSE\nsha256  a55959c4e3e8917bfa857359bb641115336276a6cc97408fd8197e079fb18470  vendor/github.com/cpuguy83/go-md2man/v2/LICENSE.md\nsha256  c8024e31c1de453fea90f22a221968835cc7af9d520274a2576c9ec9976055b0  vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE\nsha256  d18f6323b71b0b768bb5e9616e36da390fbd39369a81807cca352de4e4e6aa0b  vendor/gopkg.in/yaml.v3/LICENSE\nsha256  08eab1118c80885fa1fa6a6dd7303f65a379fcb3733e063d20d1bbc2c76e6fa1  vendor/github.com/mattn/go-isatty/LICENSE\n"
  },
  {
    "path": "package/mender-artifact/mender-artifact.mk",
    "content": "################################################################################\n#\n# host-mender-artifact\n#\n################################################################################\n\nHOST_MENDER_ARTIFACT_VERSION = 3.6.1\nHOST_MENDER_ARTIFACT_SITE = $(call github,mendersoftware,mender-artifact,$(HOST_MENDER_ARTIFACT_VERSION))\nHOST_MENDER_ARTIFACT_LICENSE = Apache2.0, BSD-2-Clause, BSD-3-Clause, ISC, MIT\nHOST_MENDER_ARTIFACT_LICENSE_FILES = \\\n\tLICENSE \\\n\tLIC_FILES_CHKSUM.sha256 \\\n\tvendor/github.com/minio/sha256-simd/LICENSE \\\n\tvendor/github.com/mendersoftware/progressbar/LICENSE \\\n\tvendor/github.com/pkg/errors/LICENSE \\\n\tvendor/github.com/pmezard/go-difflib/LICENSE \\\n\tvendor/golang.org/x/sys/LICENSE \\\n\tvendor/golang.org/x/crypto/LICENSE \\\n\tvendor/github.com/remyoudompheng/go-liblzma/LICENSE \\\n\tvendor/github.com/klauspost/compress/LICENSE \\\n\tvendor/github.com/russross/blackfriday/v2/LICENSE.txt \\\n\tvendor/github.com/davecgh/go-spew/LICENSE \\\n\tvendor/github.com/stretchr/testify/LICENSE \\\n\tvendor/github.com/urfave/cli/LICENSE \\\n\tvendor/github.com/sirupsen/logrus/LICENSE \\\n\tvendor/github.com/klauspost/pgzip/LICENSE \\\n\tvendor/github.com/cpuguy83/go-md2man/v2/LICENSE.md \\\n\tvendor/github.com/shurcooL/sanitized_anchor_name/LICENSE \\\n\tvendor/gopkg.in/yaml.v3/LICENSE \\\n\tvendor/github.com/mattn/go-isatty/LICENSE\n\nHOST_MENDER_ARTIFACT_DEPENDENCIES = host-xz\n\n# By default, go will attempt to download needed modules before building, which\n# is not desirable. This behavior also causes permission issues when cleaning,\n# as go downloads modules as read-only by default. Because mender-artifact\n# includes the modules in the vendor directory, mod=vendor prevents the package\n# from downloading the go modules during the build process and prevents\n# permission issues when cleaning.\nHOST_MENDER_ARTIFACT_GO_ENV = GOFLAGS=\"-mod=vendor\"\n\nHOST_MENDER_ARTIFACT_LDFLAGS = -X github.com/mendersoftware/mender-artifact/cli.Version=$(HOST_MENDER_ARTIFACT_VERSION)\n\nHOST_MENDER_ARTIFACT_BIN_NAME = mender-artifact\nHOST_MENDER_ARTIFACT_INSTALL_BINS = $(HOST_MENDER_ARTIFACT_BIN_NAME)\n\n$(eval $(host-golang-package))\n"
  },
  {
    "path": "package/mender-grubenv/Config.in",
    "content": "config BR2_PACKAGE_MENDER_GRUBENV\n\tbool \"mender-grubenv\"\n\tdepends on BR2_TARGET_GRUB2_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_MENDER # runtime\n\tdepends on BR2_TARGET_GRUB2\n\tdepends on !(BR2_TARGET_GRUB2_HAS_LEGACY_BOOT && BR2_TARGET_GRUB2_HAS_EFI_BOOT)\n\thelp\n\t  Contains the boot scripts and tools used by Mender to\n\t  integrate with the GRUB bootloader.\n\n\t  The following Grub modules must be selected for this package:\n\t  loadenv hashsum echo halt gcry_sha256 test regexp\n\n\t  https://github.com/mendersoftware/grub-mender-grubenv\n\nif BR2_PACKAGE_MENDER_GRUBENV\n\nconfig BR2_PACKAGE_MENDER_GRUBENV_DEFINES\n\tstring \"path to grubenv defines\"\n\thelp\n\t  Specify a path to the mender grubenv defines file.\n\t  If no path is specified, the example file in the source\n\t  directory will be used.\n\n\t  The example file in the source directory sets the following:\n\t  mender_rootfsa_part=2\n\t  mender_rootfsb_part=3\n\t  mender_kernel_root_base=/dev/mmcblk0p\n\t  mender_grub_storage_device=hd0\n\t  kernel_imagetype=bzImage\n\nendif\n\ncomment \"mender-grubenv needs a grub2 bootloader\"\n\tdepends on BR2_TARGET_GRUB2_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_MENDER\n\tdepends on !BR2_TARGET_GRUB2\n\ncomment \"mender-grubenv does not support both legacy and EFI grub2 bootloaders at the same time\"\n\tdepends on BR2_PACKAGE_MENDER\n\tdepends on BR2_TARGET_GRUB2_HAS_LEGACY_BOOT && BR2_TARGET_GRUB2_HAS_EFI_BOOT\n"
  },
  {
    "path": "package/mender-grubenv/mender-grubenv.hash",
    "content": "# Locally computed\nsha256 00a574d2bed8d54ba6739700da789a420a02de900df56dd2cfbe0df460a98dca mender-grubenv-1a7db967495bbe8be53b7a69dcb42822f39d9a74.tar.gz\nsha256 b4acfcfa2a0ba1a8c82ec3965fbcee886cff8394ca4214e0ddac0a36beb1e05a LICENSE\n"
  },
  {
    "path": "package/mender-grubenv/mender-grubenv.mk",
    "content": "################################################################################\n#\n# mender-grubenv\n#\n################################################################################\n\nMENDER_GRUBENV_VERSION = 1a7db967495bbe8be53b7a69dcb42822f39d9a74\nMENDER_GRUBENV_SITE = $(call github,mendersoftware,grub-mender-grubenv,$(MENDER_GRUBENV_VERSION))\nMENDER_GRUBENV_LICENSE = Apache-2.0\nMENDER_GRUBENV_LICENSE_FILES = LICENSE\n# Grub2 must be built first so this package can overwrite the config files\n# provided by grub.\nMENDER_GRUBENV_DEPENDENCIES = grub2\nMENDER_GRUBENV_INSTALL_IMAGES = YES\n\nMENDER_GRUBENV_MAKE_ENV = \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\t$(TARGET_MAKE_ENV)\n\nMENDER_GRUBENV_DEFINES = \\\n\t$(or $(call qstrip,$(BR2_PACKAGE_MENDER_GRUBENV_DEFINES)),\\\n\t\t$(@D)/mender_grubenv_defines.example)\n\n# These grub modules must be built in for the grub scripts to work properly.\n# Without them, the system will not boot.\nMENDER_GRUBENV_MANDATORY_MODULES = loadenv hashsum echo halt gcry_sha256 test regexp\n\nifeq ($(BR2_TARGET_GRUB2_HAS_LEGACY_BOOT),y)\nMENDER_GRUBENV_MODULES_MISSING_PC = \\\n\t$(filter-out $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_PC)),\\\n\t\t$(MENDER_GRUBENV_MANDATORY_MODULES))\n\nMENDER_GRUBENV_MAKE_ENV += ENV_DIR=/boot/grub\n\ndefine MENDER_GRUBENV_INSTALL_I386_CFG\n\tmkdir -p $(BINARIES_DIR)/boot-part/grub\n\tcp -dpfr $(TARGET_DIR)/boot/grub/grub.cfg \\\n\t\t$(TARGET_DIR)/boot/grub/mender_grubenv* \\\n\t\t$(BINARIES_DIR)/boot-part/grub\nendef\nendif # BR2_TARGET_GRUB2_HAS_LEGACY_BOOT\n\nifeq ($(BR2_TARGET_GRUB2_HAS_EFI_BOOT),y)\nMENDER_GRUBENV_MODULES_MISSING_EFI = \\\n\t$(filter-out $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI)),\\\n\t\t$(MENDER_GRUBENV_MANDATORY_MODULES))\n\nMENDER_GRUBENV_MAKE_ENV += ENV_DIR=/boot/EFI/BOOT\n\ndefine MENDER_GRUBENV_INSTALL_EFI_CFG\n\tmkdir -p $(BINARIES_DIR)/efi-part/EFI/BOOT\n\tcp -dpfr $(TARGET_DIR)/boot/EFI/BOOT/grub.cfg \\\n\t\t$(TARGET_DIR)/boot/EFI/BOOT/mender_grubenv* \\\n\t\t$(BINARIES_DIR)/efi-part/EFI/BOOT\nendef\nendif # BR2_TARGET_GRUB2_HAS_EFI_BOOT\n\nifeq ($(BR2_PACKAGE_MENDER_GRUBENV)$(BR_BUILDING),yy)\nifneq ($(MENDER_GRUBENV_MODULES_MISSING_EFI),)\n$(error The following missing grub2 efi modules must be enabled for mender-grubenv \\\n\tto work: $(MENDER_GRUBENV_MODULES_MISSING_EFI))\nendif\nifneq ($(MENDER_GRUBENV_MODULES_MISSING_PC),)\n$(error The following missing grub2 pc modules must be enabled for mender-grubenv \\\n\tto work: $(MENDER_GRUBENV_MODULES_MISSING_PC))\nendif\nendif\n\ndefine MENDER_GRUBENV_CONFIGURE_CMDS\n\t$(INSTALL) -m 0644 $(MENDER_GRUBENV_DEFINES) $(@D)/mender_grubenv_defines\nendef\n\ndefine MENDER_GRUBENV_BUILD_CMDS\n\t$(MENDER_GRUBENV_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine MENDER_GRUBENV_INSTALL_TARGET_CMDS\n\t$(MENDER_GRUBENV_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install\nendef\n\ndefine MENDER_GRUBENV_INSTALL_IMAGES_CMDS\n\t$(MENDER_GRUBENV_INSTALL_I386_CFG)\n\t$(MENDER_GRUBENV_INSTALL_EFI_CFG)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/menu-cache/0001-Support-gcc10-compilation.patch",
    "content": "From 1ce739649b4d66339a03fc0ec9ee7a2f7c141780 Mon Sep 17 00:00:00 2001\nFrom: Mamoru TASAKA <mtasaka@fedoraproject.org>\nDate: Fri, 24 Jan 2020 13:33:00 +0900\nSubject: [PATCH] Support gcc10 compilation\n\ngcc10 now defaults to -fno-common, and with gcc10 menu-cache compilation fails like\n\n/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:167: multiple definition of `DirDirs'; main.o:menu-cache-gen/menu-tags.h:167: first defined here\n/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:164: multiple definition of `AppDirs'; main.o:menu-cache-gen/menu-tags.h:164: first defined here\n/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:52: multiple definition of `menuTag_Layout'; main.o:menu-cache-gen/menu-tags.h:52: first defined here\n....\n\nThis patch fixes compilation with gcc10: properly declaring variables in header with \"extern\", and also removing some unneeded variables in header files.\n\n[Retrieved from:\nhttps://github.com/lxde/menu-cache/pull/19/commits/1ce739649b4d66339a03fc0ec9ee7a2f7c141780]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n menu-cache-gen/menu-tags.h | 55 ++++++++++++--------------------------\n 1 file changed, 17 insertions(+), 38 deletions(-)\n\ndiff --git a/menu-cache-gen/menu-tags.h b/menu-cache-gen/menu-tags.h\nindex f3fd7d3..f71c0bc 100644\n--- a/menu-cache-gen/menu-tags.h\n+++ b/menu-cache-gen/menu-tags.h\n@@ -22,38 +22,17 @@\n #include <libfm/fm-extra.h>\n #include <menu-cache.h>\n \n-FmXmlFileTag menuTag_Menu;\n-FmXmlFileTag menuTag_AppDir;\n-FmXmlFileTag menuTag_DefaultAppDirs;\n-FmXmlFileTag menuTag_DirectoryDir;\n-FmXmlFileTag menuTag_DefaultDirectoryDirs;\n-FmXmlFileTag menuTag_Include;\n-FmXmlFileTag menuTag_Exclude;\n-FmXmlFileTag menuTag_Filename;\n-FmXmlFileTag menuTag_Or;\n-FmXmlFileTag menuTag_And;\n-FmXmlFileTag menuTag_Not;\n-FmXmlFileTag menuTag_Category;\n-FmXmlFileTag menuTag_MergeFile;\n-FmXmlFileTag menuTag_MergeDir;\n-FmXmlFileTag menuTag_DefaultMergeDirs;\n-FmXmlFileTag menuTag_Directory;\n-FmXmlFileTag menuTag_Name;\n-FmXmlFileTag menuTag_Deleted;\n-FmXmlFileTag menuTag_NotDeleted;\n-FmXmlFileTag menuTag_OnlyUnallocated;\n-FmXmlFileTag menuTag_NotOnlyUnallocated;\n-FmXmlFileTag menuTag_All;\n-FmXmlFileTag menuTag_LegacyDir;\n-FmXmlFileTag menuTag_KDELegacyDirs;\n-FmXmlFileTag menuTag_Move;\n-FmXmlFileTag menuTag_Old;\n-FmXmlFileTag menuTag_New;\n-FmXmlFileTag menuTag_Layout;\n-FmXmlFileTag menuTag_DefaultLayout;\n-FmXmlFileTag menuTag_Menuname;\n-FmXmlFileTag menuTag_Separator;\n-FmXmlFileTag menuTag_Merge;\n+extern FmXmlFileTag menuTag_AppDir;\n+extern FmXmlFileTag menuTag_DirectoryDir;\n+extern FmXmlFileTag menuTag_Include;\n+extern FmXmlFileTag menuTag_Exclude;\n+extern FmXmlFileTag menuTag_Filename;\n+extern FmXmlFileTag menuTag_Or;\n+extern FmXmlFileTag menuTag_And;\n+extern FmXmlFileTag menuTag_Not;\n+extern FmXmlFileTag menuTag_Category;\n+extern FmXmlFileTag menuTag_All;\n+extern FmXmlFileTag menuTag_LegacyDir;\n \n typedef enum {\n     MERGE_NONE, /* starting value */\n@@ -152,19 +131,19 @@ typedef struct {\n } MenuRule;\n \n /* requested language(s) */\n-char **languages;\n+extern char **languages;\n \n /* list of menu files to monitor */\n-GSList *MenuFiles;\n+extern GSList *MenuFiles;\n \n /* list of menu dirs to monitor */\n-GSList *MenuDirs;\n+extern GSList *MenuDirs;\n \n /* list of available app dirs */\n-GSList *AppDirs;\n+extern GSList *AppDirs;\n \n /* list of available dir dirs */\n-GSList *DirDirs;\n+extern GSList *DirDirs;\n \n /* parse and merge menu files */\n MenuMenu *get_merged_menu(const char *file, FmXmlFile **xmlfile, GError **error);\n@@ -177,7 +156,7 @@ gboolean save_menu_cache(MenuMenu *layout, const char *menuname, const char *fil\n void _free_layout_items(GList *data);\n \n /* verbosity level */\n-gint verbose;\n+extern gint verbose;\n \n #define DBG if (verbose) g_debug\n #define VDBG if (verbose > 1) g_debug\n"
  },
  {
    "path": "package/menu-cache/Config.in",
    "content": "config BR2_PACKAGE_MENU_CACHE\n\tbool \"menu-cache\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBFM_EXTRA\n\thelp\n\t  Small library from LXDE project used for application menu\n\t  integration\n\n\t  http://wiki.lxde.org/\n\ncomment \"menu-cache needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/menu-cache/menu-cache.hash",
    "content": "# From https://sourceforge.net/projects/lxde/files/menu-cache/1.1/\nmd5\t99999a0bca48b980105208760c8fd893\tmenu-cache-1.1.0.tar.xz\nsha1\t01e6035aa1fe76d7047bdec235254aa5ce17394a\tmenu-cache-1.1.0.tar.xz\n\n# Hash for license file:\nsha256\t7459fbad62653e4061dbfde3b0cad7c72777838beb10d2d11d969fac6226e7de\tCOPYING\n"
  },
  {
    "path": "package/menu-cache/menu-cache.mk",
    "content": "################################################################################\n#\n# menu-cache\n#\n################################################################################\n\nMENU_CACHE_VERSION_MAJOR = 1.1\nMENU_CACHE_VERSION = $(MENU_CACHE_VERSION_MAJOR).0\nMENU_CACHE_SOURCE = menu-cache-$(MENU_CACHE_VERSION).tar.xz\nMENU_CACHE_SITE = http://sourceforge.net/projects/lxde/files/menu-cache/$(MENU_CACHE_VERSION_MAJOR)\nMENU_CACHE_DEPENDENCIES = libfm-extra libglib2\nMENU_CACHE_LICENSE = LGPL-2.1\nMENU_CACHE_LICENSE_FILES = COPYING\nMENU_CACHE_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mesa3d/0001-c99_math-import-isinf-for-uclibc-based-toolchains.patch",
    "content": "From 705490763fcc052defa2d49a5c5200775cd12c54 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Wed, 4 Mar 2020 08:27:24 +0100\nSubject: [PATCH] c99_math: import isinf for uclibc based toolchains\n\nThe same fix as for glibc >= 2.23 is needed for uclibc\nbased toolchains.\n\n[Upstream suggested: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4042]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n include/c99_math.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/include/c99_math.h b/include/c99_math.h\nindex e906c26aa54..c8a73a2d2c7 100644\n--- a/include/c99_math.h\n+++ b/include/c99_math.h\n@@ -190,7 +190,7 @@ fpclassify(double x)\n  * undefines those functions, which in glibc 2.23, are defined as macros rather\n  * than functions as in glibc 2.22.\n  */\n-#if __cplusplus >= 201103L && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 23))\n+#if __cplusplus >= 201103L && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 23) || defined(__UCLIBC__))\n #include <cmath>\n \n using std::fpclassify;\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/mesa3d/0002-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch",
    "content": "From 7b46756a99aca7f27a45c3b99460f088570f6f53 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@smile.fr>\nDate: Wed, 17 Apr 2019 23:07:42 +0200\nSubject: [PATCH] meson: Set proper value for LIBCLC_INCLUDEDIR\n\nLIBCLC_INCLUDEDIR is the location where mesa3d OpenCL implementation\nwill look for OpenCL \"headers\" on the target, when building the OpenCL\nkernels.\n\nThe value returned by pkg-config for includedir is relevant when\ncross-compiling, on the build machine. But in this specific case, we\nreally need a value that is valid on the target.\n\nThose headers are installed by the libclc package in /usr/share so\nthat they are not removed by Buildroot target-finalize logic.\n\nBased on the patch for autotools provided by Valentin Korenblit.\n\nSigned-off-by: Romain Naour <romain.naour@smile.fr>\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[rebased for 20.2.0 & 20.3.0]\n---\n src/gallium/frontends/clover/meson.build | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/gallium/frontends/clover/meson.build b/src/gallium/frontends/clover/meson.build\nindex 62ac5f5278d..ecdeb39669c 100644\n--- a/src/gallium/frontends/clover/meson.build\n+++ b/src/gallium/frontends/clover/meson.build\n@@ -27,7 +27,7 @@\n   '-DCL_USE_DEPRECATED_OPENCL_2_0_APIS',\n   '-DCL_USE_DEPRECATED_OPENCL_2_1_APIS',\n   '-DCL_USE_DEPRECATED_OPENCL_2_2_APIS',\n-  '-DLIBCLC_INCLUDEDIR=\"@0@/\"'.format(dep_clc.get_variable(pkgconfig : 'includedir')),\n+  '-DLIBCLC_INCLUDEDIR=\"/usr/share\"',\n   '-DLIBCLC_LIBEXECDIR=\"@0@/\"'.format(dep_clc.get_variable(pkgconfig : 'libexecdir'))\n ]\n clover_spirv_cpp_args = []\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/mesa3d/0003-vc4-add-meson-option-to-disable-optional-neon-suppor.patch",
    "content": "From e3b47c1b84964c62b3e1fa782f1ffa4be0ae62f9 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Mon, 9 Mar 2020 13:01:14 +0100\nSubject: [PATCH] vc4: add meson option to disable optional neon support\n\nNot all toolchains are able to compile the runtime\noptional vc4 neon support, so add an meson option\nto force disabling it at compile time.\n\n[Upstream: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4114]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[rebased for 20.2.0, 20.3.0 & 21.1.0]\n---\n meson_options.txt                    | 7 +++++++\n src/gallium/drivers/vc4/meson.build  | 4 ++--\n src/gallium/drivers/vc4/vc4_tiling.h | 4 ++--\n 3 files changed, 11 insertions(+), 4 deletions(-)\n\ndiff --git a/meson_options.txt b/meson_options.txt\nindex a39596a6f19..0f6b6c62b55 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -123,6 +123,13 @@ option(\n   choices : ['auto', 'true', 'false', 'enabled', 'disabled'],\n   description : 'enable gallium va frontend.',\n )\n+option(\n+  'gallium-vc4-neon',\n+  type : 'combo',\n+  value : 'auto',\n+  choices : ['auto', 'disabled'],\n+  description : 'enable gallium vc4 optional neon support.',\n+)\n option(\n   'va-libs-path',\n   type : 'string',\ndiff --git a/src/gallium/drivers/vc4/meson.build b/src/gallium/drivers/vc4/meson.build\nindex 5ce5af5f6b4..e3f7d8d62ae 100644\n--- a/src/gallium/drivers/vc4/meson.build\n+++ b/src/gallium/drivers/vc4/meson.build\n@@ -84,7 +84,7 @@ files_libvc4 = files(\n vc4_c_args = []\n \n libvc4_neon = []\n-if host_machine.cpu_family() == 'arm'\n+if host_machine.cpu_family() == 'arm' and get_option('gallium-vc4-neon') != 'disabled'\n   libvc4_neon = static_library(\n     'vc4_neon',\n     'vc4_tiling_lt_neon.c',\n@@ -93,7 +93,7 @@ if host_machine.cpu_family() == 'arm'\n     ],\n     c_args : '-mfpu=neon',\n   )\n-  vc4_c_args += '-DUSE_ARM_ASM'\n+  vc4_c_args += '-DVC4_TILING_LT_NEON'\n endif\n \n if dep_simpenrose.found()\ndiff --git a/src/gallium/drivers/vc4/vc4_tiling.h b/src/gallium/drivers/vc4/vc4_tiling.h\nindex 66767e7f1f8..7446f1c3d0c 100644\n--- a/src/gallium/drivers/vc4/vc4_tiling.h\n+++ b/src/gallium/drivers/vc4/vc4_tiling.h\n@@ -89,7 +89,7 @@ vc4_load_lt_image(void *dst, uint32_t dst_stride,\n                   void *src, uint32_t src_stride,\n                   int cpp, const struct pipe_box *box)\n {\n-#ifdef USE_ARM_ASM\n+#ifdef VC4_TILING_LT_NEON\n         if (util_get_cpu_caps()->has_neon) {\n                 vc4_load_lt_image_neon(dst, dst_stride, src, src_stride,\n                                        cpp, box);\n@@ -105,7 +105,7 @@ vc4_store_lt_image(void *dst, uint32_t dst_stride,\n                    void *src, uint32_t src_stride,\n                    int cpp, const struct pipe_box *box)\n {\n-#ifdef USE_ARM_ASM\n+#ifdef VC4_TILING_LT_NEON\n         if (util_get_cpu_caps()->has_neon) {\n                 vc4_store_lt_image_neon(dst, dst_stride, src, src_stride,\n                                         cpp, box);\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/mesa3d/0004-src-util-rand_xor-Include-stddef.h-to-fix-build-erro.patch",
    "content": "From fdc8b5a205e2116408aeb9fd305e57f656e2e89d Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sun, 9 Aug 2020 17:06:26 +0200\nSubject: [PATCH] src/util/rand_xor: Include stddef.h to fix build error\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes\n\nIn file included from ../src/util/rand_xor.c:29:\noutput/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35:\n error: unknown type name ‘size_t’\n extern int getrandom(void *__buf, size_t count, unsigned int flags)\n\nseen with gcc version 8.3.0 (Buildroot 2020.02) and uClibc.\n\nPatch sent upstream:\nhttps://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6248\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n src/util/rand_xor.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/util/rand_xor.c b/src/util/rand_xor.c\nindex 81b64f1ea71..fcb481487fa 100644\n--- a/src/util/rand_xor.c\n+++ b/src/util/rand_xor.c\n@@ -25,6 +25,7 @@\n #include \"detect_os.h\"\n \n #if !DETECT_OS_WINDOWS\n+#include <stddef.h>\n #if defined(HAVE_GETRANDOM)\n #include <sys/random.h>\n #endif\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/mesa3d/0005-src-util-futex.h-fix-build-on-32-bit-architectures-u.patch",
    "content": "From e501b7c17ada9c694d3f8302622b78d733485b38 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 21 Aug 2021 17:55:33 +0200\nSubject: [PATCH] src/util/futex.h: fix build on 32-bit architectures using\n 64-bit time_t\n\nFix the following build failure on 32-bit architectures using 64-bit\ntime_t (e.g. riscv32):\n\n../src/util/futex.h: In function 'sys_futex':\n../src/util/futex.h:39:19: error: 'SYS_futex' undeclared (first use in this function); did you mean 'sys_futex'?\n   39 |    return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3);\n      |                   ^~~~~~~~~\n      |                   sys_futex\n\nFixes:\n - http://autobuild.buildroot.org/results/692700a5f967760a0b8cd358b1712f1d5a7b681e\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12496]\n---\n src/util/futex.h | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/src/util/futex.h b/src/util/futex.h\nindex 43097f4cd5b..221eda9db0c 100644\n--- a/src/util/futex.h\n+++ b/src/util/futex.h\n@@ -34,6 +34,10 @@\n #include <sys/syscall.h>\n #include <sys/time.h>\n \n+#ifndef SYS_futex\n+#define SYS_futex SYS_futex_time64\n+#endif\n+\n static inline long sys_futex(void *addr1, int op, int val1, const struct timespec *timeout, void *addr2, int val3)\n {\n    return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3);\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/mesa3d/Config.in",
    "content": "menuconfig BR2_PACKAGE_MESA3D\n\tbool \"mesa3d\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_1\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on !BR2_m68k || BR2_TOOLCHAIN_GCC_AT_LEAST_7 # m68k needs gcc >= 7.x\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Mesa 3D, an open-source implementation of the OpenGL\n\t  specification.\n\n\t  http://mesa3d.org\n\nif BR2_PACKAGE_MESA3D\n\n# Some Gallium driver needs libelf when built with LLVM support\nconfig BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS\n\tbool\n\nconfig BR2_PACKAGE_MESA3D_LLVM\n\tbool \"llvm support\"\n\tdepends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR # std::wstring\n\tselect BR2_PACKAGE_LLVM\n\ncomment \"llvm support needs a toolchain w/ wchar, threads, C++, gcc >= 4.8, dynamic library\"\n\tdepends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \\\n\t\t|| BR2_STATIC_LIBS || !BR2_USE_WCHAR\n\ncomment \"llvm support needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\n# clang and libclc dependencies are satisfied by\n# BR2_PACKAGE_MESA3D_LLVM\nconfig BR2_PACKAGE_MESA3D_OPENCL\n\tbool \"OpenCL support\"\n\tdepends on BR2_PACKAGE_MESA3D_LLVM\n\tdepends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 || \\\n\t\tBR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI\n\tselect BR2_PACKAGE_LLVM_RTTI\n\tselect BR2_PACKAGE_CLANG\n\tselect BR2_PACKAGE_LIBCLC\n\tselect BR2_PACKAGE_HAS_LIBOPENCL\n\n# inform the .mk file of gallium, dri or vulkan driver selection\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tbool\n\tselect BR2_PACKAGE_MESA3D_DRIVER\n\nconfig BR2_PACKAGE_MESA3D_DRI_DRIVER\n\tbool\n\tselect BR2_PACKAGE_MESA3D_DRIVER\n\tselect BR2_PACKAGE_MESA3D_GBM if \\\n\t\t!BR2_PACKAGE_MESA3D_OPENGL_GLX && \\\n\t\t!BR2_PACKAGE_MESA3D_OPENGL_EGL\n\tselect BR2_PACKAGE_XLIB_LIBXSHMFENCE if \\\n\t\t(BR2_PACKAGE_XORG7 && BR2_TOOLCHAIN_HAS_SYNC_4 && \\\n\t\t\t!BR2_RISCV_32)\n\nconfig BR2_PACKAGE_MESA3D_VULKAN_DRIVER\n\tbool\n\tselect BR2_PACKAGE_MESA3D_DRIVER\n\nconfig BR2_PACKAGE_MESA3D_DRIVER\n\tbool\n\n# Gallium xa state tracker.\n# Quote from mesa3d meson.build: \"XA state tracker requires at least\n# one of the following gallium drivers: nouveau, freedreno, i915, svga.\nconfig BR2_PACKAGE_MESA3D_NEEDS_XA\n\tbool\n\n# OpenGL GLX and Gallium VDPAU both needs X11\nconfig BR2_PACKAGE_MESA3D_NEEDS_X11\n\tbool\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_LIBXCB\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXDAMAGE\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\tselect BR2_PACKAGE_XLIB_LIBXXF86VM\n\tselect BR2_PACKAGE_XORGPROTO\n\ncomment \"Gallium drivers\"\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV\n\tbool \"Gallium Etnaviv driver\"\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_ETNAVIV\n\thelp\n\t  Mesa driver for Vivante GPUs.\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO\n\tbool \"Gallium freedreno driver\"\n\tdepends on BR2_arm || BR2_aarch64 || BR2_aarch64_be # libdrm-freedreno\n\t# libdrm's freedreno option depends on LIBDRM_HAS_ATOMIC. Propagating\n\t# that dependency here causes a circular dependency that Kconfig\n\t# can't see is just spurious. However, that dependency is about\n\t# the toolchain having sync4 primitives, which is always a given\n\t# for arm/aarch64.\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_FREEDRENO\n\thelp\n\t  Mesa driver for Freedreno GPUs.\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915\n\tbool \"Gallium i915 driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_PACKAGE_MESA3D_DRI_DRIVER_I915\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_INTEL\n\thelp\n\t  Support for i915-based Intel GPUs.\n\ncomment \"Gallium i915: Only one i915 provider can be built\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_PACKAGE_MESA3D_DRI_DRIVER_I915\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS\n\tbool \"Gallium iris driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\thelp\n\t  Mesa driver for iris-based Intel GPUs.\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA\n\tbool \"Gallium lima driver\"\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\thelp\n\t  Mesa driver for ARM Mali Utgard GPUs.\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU\n\tbool \"Gallium nouveau driver\"\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_NOUVEAU\n\tselect BR2_PACKAGE_MESA3D_NEEDS_XA\n\tselect BR2_PACKAGE_LLVM_RTTI if BR2_PACKAGE_MESA3D_LLVM\n\thelp\n\t  Supports all Nvidia GPUs.\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST\n\tbool \"Gallium panfrost driver\"\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\thelp\n\t  Mesa driver for ARM Mali Midgard and Bifrost GPUs.\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300\n\tbool \"Gallium Radeon R300 driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\t# lbdrm's radeon option depends on LIBDRM_HAS_ATOMIC. Propagating\n\t# that dependency here causes a circular dependency that Kconfig\n\t# can't see is just spurious. However, that dependency is about\n\t# the toolchain having sync4 primitives, which is always a given\n\t# for x86.\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_RADEON\n\thelp\n\t  Driver for ATI/AMD Radeon R300/R400/R500 GPUs.\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600\n\tbool \"Gallium Radeon R600 driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_PACKAGE_MESA3D_LLVM || \\\n\t\t(BR2_PACKAGE_MESA3D_LLVM && (BR2_TOOLCHAIN_USES_UCLIBC || \\\n\t\t\tBR2_TOOLCHAIN_USES_GLIBC)) # elfutils\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_RADEON\n\tselect BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM\n\tselect BR2_PACKAGE_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM\n\tselect BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM\n\thelp\n\t  Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs.\n\n# R600 needs libelf when Mesa3D is built with LLVM support\n# musl is not currently compatible with elfutils\ncomment \"R600 driver needs a uClibc or glibc toolchain when llvm is enabled\"\n\tdepends on BR2_PACKAGE_MESA3D_LLVM\n\tdepends on !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI\n\tbool \"Gallium Radeon SI driver\"\n\tdepends on BR2_USE_MMU # libdrm\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_PACKAGE_MESA3D_LLVM\n\tdepends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_AMDGPU\n\tselect BR2_PACKAGE_LIBDRM_RADEON\n\tselect BR2_PACKAGE_LLVM_AMDGPU\n\tselect BR2_PACKAGE_ELFUTILS\n\tselect BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS\n\thelp\n\t  Driver for ATI/AMD Radeon HD7000/HD8000/Rx200 GPUs.\n\n# Radeon SI needs libelf\n# musl is not currently compatible with elfutils\ncomment \"Radeon SI driver needs a uClibc or glibc toolchain\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_MESA3D_LLVM\n\tdepends on !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA\n\tbool \"Gallium vmware svga driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_VMWGFX\n\tselect BR2_PACKAGE_MESA3D_NEEDS_XA\n\thelp\n\t  This is a virtual GPU driver for VMWare virtual machines.\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST\n\tbool \"Gallium swrast driver\"\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\thelp\n\t  This is a software opengl implementation using the Gallium3D\n\t  infrastructure.\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA\n\tbool \"Gallium tegra driver\"\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU\n\tselect BR2_PACKAGE_LIBDRM_NOUVEAU\n\tselect BR2_PACKAGE_MESA3D_NEEDS_XA\n\thelp\n\t  Adds support for Nvidia Tegra GPUs, requires nouveau.\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D\n\tbool \"Gallium v3d driver\"\n\tdepends on (BR2_arm && BR2_ARM_CPU_HAS_NEON) || BR2_aarch64\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_VC4\n\tselect BR2_PACKAGE_MESA3D_OPENGL_EGL\n\thelp\n\t  Driver for Broadcom VC6 (rpi4) GPUs (needs vc4).\n\n\t  It requires a kernel 4.18+ with DRM V3D support enabled:\n\n\t  - CONFIG_DRM_V3D\n\t  - CONFIG_DRM_VC4\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4\n\tbool \"Gallium vc4 driver\"\n\tdepends on BR2_arm || BR2_aarch64\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_VC4\n\tselect BR2_PACKAGE_MESA3D_OPENGL_EGL\n\thelp\n\t  Driver for Broadcom VC4 (rpi2/3) GPUs.\n\t  It requires a vanilla 4.5+ kernel with drm vc4 (open) support.\n\nconfig BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL\n\tbool \"Gallium virgl driver\"\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER\n\tselect BR2_PACKAGE_MESA3D_OPENGL_EGL\n\thelp\n\t  virgl is the 3D acceleration backend for the virtio-gpu\n\t  shipping with qemu.\n\nconfig BR2_PACKAGE_MESA3D_VDPAU\n\tbool \"Gallium VDPAU state tracker\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \\\n\t\t|| BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300 \\\n\t\t|| BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 \\\n\t\t|| BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI\n\tselect BR2_PACKAGE_MESA3D_NEEDS_X11\n\tselect BR2_PACKAGE_LIBVDPAU\n\thelp\n\t  VDPAU state tracker (needs r300, r600, radeonsi or nouveau\n\t  gallium drivers).\n\ncomment \"Gallium VDPAU state tracker needs X.org and gallium drivers r300, r600, radeonsi or nouveau\"\n\tdepends on !BR2_PACKAGE_XORG7 || \\\n\t\t!(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \\\n\t\t|| BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300 \\\n\t\t|| BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 \\\n\t\t|| BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI)\n\nconfig BR2_PACKAGE_MESA3D_XVMC\n\tbool \"Gallium XvMC state tracker\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \\\n\t\t|| BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600\n\tselect BR2_PACKAGE_MESA3D_NEEDS_X11\n\tselect BR2_PACKAGE_XLIB_LIBXV\n\tselect BR2_PACKAGE_XLIB_LIBXVMC\n\thelp\n\t  XvMC state tracker (needs r600 or nouveau gallium drivers).\n\ncomment \"Gallium XvMC state tracker needs X.org and gallium drivers r600 or nouveau\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_PACKAGE_XORG7 || \\\n\t\t!(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU \\\n\t\t|| BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600)\n\ncomment \"DRI drivers\"\n\nconfig BR2_PACKAGE_MESA3D_DRI_DRIVER_I915\n\tbool \"DRI i915 driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tselect BR2_PACKAGE_MESA3D_DRI_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_INTEL\n\thelp\n\t  Support for i915-based Intel GPUs.\n\nconfig BR2_PACKAGE_MESA3D_DRI_DRIVER_I965\n\tbool \"DRI i965 driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h\n\tselect BR2_PACKAGE_MESA3D_DRI_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_INTEL\n\thelp\n\t  Support for i965-based Intel GPUs.\n\ncomment \"DRI i965 driver needs a toolchain w/ headers >= 3.17\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17\n\nconfig BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU\n\tbool \"DRI nouveau driver\"\n\tselect BR2_PACKAGE_MESA3D_DRI_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_NOUVEAU\n\thelp\n\t  Support for Nvidia-based GPUs.\n\nconfig BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON\n\tbool \"DRI radeon r100 driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\t# libdrm's radeon option depends on LIBDRM_HAS_ATOMIC. Propagating\n\t# that dependency here causes a circular dependency that Kconfig\n\t# can't see is just spurious. However, that dependency is about\n\t# the toolchain having sync4 primitives, which is always a given\n\t# for i386 and x86_64.\n\tselect BR2_PACKAGE_MESA3D_DRI_DRIVER\n\tselect BR2_PACKAGE_LIBDRM_RADEON\n\thelp\n\t  Legacy Radeon driver for R100 series GPUs.\n\ncomment \"Vulkan drivers\"\n\nconfig BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL\n\tbool \"Vulkan Intel driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libxshmfence\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # memfd.h\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert\n\tdepends on BR2_PACKAGE_XORG7 # xorgproto\n\tselect BR2_PACKAGE_MESA3D_VULKAN_DRIVER\n\tselect BR2_PACKAGE_XORGPROTO\n\tselect BR2_PACKAGE_XLIB_LIBXSHMFENCE\n\thelp\n\t  Vulkan driver for Intel hardware from Ivy Bridge onward.\n\ncomment \"intel vulkan depends on X.org and needs a glibc toolchain w/ headers >= 3.17\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 || \\\n\t\t!BR2_TOOLCHAIN_USES_GLIBC || !BR2_PACKAGE_XORG7\n\ncomment \"Off-screen Rendering\"\n\nconfig BR2_PACKAGE_MESA3D_OSMESA_GALLIUM\n\tbool \"OSMesa (Gallium) library\"\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST\n\thelp\n\t  The OSMesa API provides functions for off-screen rendering.\n\nif BR2_PACKAGE_MESA3D_DRIVER\n\ncomment \"OpenGL API Support\"\n\nconfig BR2_PACKAGE_MESA3D_GBM\n\tbool \"gbm\"\n\tdepends on BR2_PACKAGE_MESA3D_DRI_DRIVER \\\n\t\t|| (BR2_PACKAGE_MESA3D_GALLIUM_DRIVER && BR2_PACKAGE_MESA3D_OPENGL_EGL)\n\tselect BR2_PACKAGE_HAS_LIBGBM\n\tselect BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT\n\tselect BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF\n\thelp\n\t  Enable Generic Buffer Management (gbm)\n\ncomment \"gbm support needs a dri driver or a gallium driver w/ EGL support.\"\n\tdepends on !BR2_PACKAGE_MESA3D_DRI_DRIVER \\\n\t\t&& !(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER && BR2_PACKAGE_MESA3D_OPENGL_EGL)\n\nconfig BR2_PACKAGE_MESA3D_OPENGL_GLX\n\tbool \"OpenGL GLX\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_MESA3D_NEEDS_X11\n\thelp\n\t  Enable GLX graphic acceleration (OpenGL + X11).\n\ncomment \"OpenGL GLX support needs X11\"\n\tdepends on !BR2_PACKAGE_XORG7\n\nconfig BR2_PACKAGE_MESA3D_OPENGL_EGL\n\tbool \"OpenGL EGL\"\n\tselect BR2_PACKAGE_HAS_LIBEGL\n\tselect BR2_PACKAGE_HAS_LIBEGL_WAYLAND\n\tselect BR2_PACKAGE_MESA3D_GBM\n\thelp\n\t  Use the Khronos EGL APIs. EGL is a window manager for OpenGL\n\t  applications similar to GLX, for X, and WGL, for Windows.\n\nconfig BR2_PACKAGE_MESA3D_OPENGL_ES\n\tbool \"OpenGL ES\"\n\tselect BR2_PACKAGE_HAS_LIBGLES\n\thelp\n\t  Use the Khronos OpenGL ES APIs. This is commonly used on\n\t  embedded systems and represents a subset of the OpenGL API.\n\nendif # BR2_PACKAGE_MESA3D_DRIVER\n\nconfig BR2_PACKAGE_PROVIDES_LIBGBM\n\tdefault \"mesa3d\" if BR2_PACKAGE_MESA3D_GBM\n\nconfig BR2_PACKAGE_PROVIDES_LIBGL\n\tdefault \"mesa3d\" if BR2_PACKAGE_MESA3D_OPENGL_GLX\n\nconfig BR2_PACKAGE_PROVIDES_LIBEGL\n\tdefault \"mesa3d\" if BR2_PACKAGE_MESA3D_OPENGL_EGL\n\nconfig BR2_PACKAGE_PROVIDES_LIBGLES\n\tdefault \"mesa3d\" if BR2_PACKAGE_MESA3D_OPENGL_ES\n\nconfig BR2_PACKAGE_PROVIDES_LIBOPENCL\n\tdefault \"mesa3d\" if BR2_PACKAGE_MESA3D_OPENCL\n\nendif # BR2_PACKAGE_MESA3D\n\ncomment \"mesa3d needs a toolchain w/ C++, NPTL, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\tBR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_1\n\ncomment \"mesa3d needs a toolchain w/ gcc >= 7\"\n\tdepends on BR2_m68k\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7\n"
  },
  {
    "path": "package/mesa3d/mesa3d.hash",
    "content": "# From https://lists.freedesktop.org/archives/mesa-announce/2021-September/000644.html\nsha256  5cd32f5d089dca75300578a3d771a656eaed652090573a2655fe4e7022d56bfc  mesa-21.1.8.tar.xz\nsha512  80fcf2b1d59b49e384e9aa1ae63a3ce709833059af1ffd8eb821054c1976709134098cfc79fac1578a2f08a003223f1c96b38e2e650c5be49821c6f2fe1047af  mesa-21.1.8.tar.xz\n\n# License\nsha256  998437f3f75f0c542046f83c1cb349408122268168fb13eb4ae6967aa18b7d98  docs/license.rst\n"
  },
  {
    "path": "package/mesa3d/mesa3d.mk",
    "content": "################################################################################\n#\n# mesa3d\n#\n################################################################################\n\n# When updating the version, please also update mesa3d-headers\nMESA3D_VERSION = 21.1.8\nMESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz\nMESA3D_SITE = https://archive.mesa3d.org\nMESA3D_LICENSE = MIT, SGI, Khronos\nMESA3D_LICENSE_FILES = docs/license.rst\nMESA3D_CPE_ID_VENDOR = mesa3d\nMESA3D_CPE_ID_PRODUCT = mesa\n\nMESA3D_INSTALL_STAGING = YES\n\nMESA3D_PROVIDES =\n\nMESA3D_DEPENDENCIES = \\\n\thost-bison \\\n\thost-flex \\\n\thost-python-mako \\\n\texpat \\\n\tlibdrm \\\n\tzlib\n\nMESA3D_CONF_OPTS = \\\n\t-Dgallium-omx=disabled \\\n\t-Dpower8=disabled\n\n# Codesourcery ARM 2014.05 fail to link libmesa_dri_drivers.so with --as-needed linker\n# flag due to a linker bug between binutils 2.24 and 2.25 (2.24.51.20140217).\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)\nMESA3D_CONF_OPTS += -Db_asneeded=false\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)\nMESA3D_DEPENDENCIES += host-llvm llvm\nMESA3D_MESON_EXTRA_BINARIES += llvm-config='$(STAGING_DIR)/usr/bin/llvm-config'\nMESA3D_CONF_OPTS += -Dllvm=enabled\nelse\n# Avoid automatic search of llvm-config\nMESA3D_CONF_OPTS += -Dllvm=disabled\nendif\n\n# Disable opencl-icd: OpenCL lib will be named libOpenCL instead of\n# libMesaOpenCL and CL headers are installed\nifeq ($(BR2_PACKAGE_MESA3D_OPENCL),y)\nMESA3D_PROVIDES += libopencl\nMESA3D_DEPENDENCIES += clang libclc\nMESA3D_CONF_OPTS += -Dgallium-opencl=standalone\nelse\nMESA3D_CONF_OPTS += -Dgallium-opencl=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS),y)\nMESA3D_DEPENDENCIES += elfutils\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_OPENGL_GLX),y)\n# Disable-mangling not yet supported by meson build system.\n# glx:\n#  dri          : dri based GLX requires at least one DRI driver || dri based GLX requires shared-glapi\n#  xlib         : xlib conflicts with any dri driver\n#  gallium-xlib : Gallium-xlib based GLX requires at least one gallium driver || Gallium-xlib based GLX requires softpipe or llvmpipe || gallium-xlib conflicts with any dri driver.\nMESA3D_CONF_OPTS += -Dglx=dri\nifeq ($(BR2_PACKAGE_MESA3D_NEEDS_XA),y)\nMESA3D_CONF_OPTS += -Dgallium-xa=enabled\nelse\nMESA3D_CONF_OPTS += -Dgallium-xa=disabled\nendif\nelse\nMESA3D_CONF_OPTS += \\\n\t-Dglx=disabled \\\n\t-Dgallium-xa=disabled\nendif\n\nifeq ($(BR2_ARM_CPU_HAS_NEON),y)\nMESA3D_CONF_OPTS += -Dgallium-vc4-neon=auto\nelse\nMESA3D_CONF_OPTS += -Dgallium-vc4-neon=disabled\nendif\n\n# Drivers\n\n#Gallium Drivers\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV)  += etnaviv\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO) += freedreno\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915)     += i915\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS)     += iris\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LIMA)     += lima\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU)  += nouveau\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST) += panfrost\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R300)     += r300\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600)     += r600\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI) += radeonsi\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA)     += svga\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST)   += swrast\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_TEGRA)    += tegra\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D)      += v3d\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4)      += vc4\nMESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL)    += virgl\n# DRI Drivers\nMESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I915)   += i915\nMESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I965)   += i965\nMESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU) += nouveau\nMESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON) += r100\n# Vulkan Drivers\nMESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL)   += intel\n\nifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER),)\nMESA3D_CONF_OPTS += \\\n\t-Dgallium-drivers= \\\n\t-Dgallium-extra-hud=false\nelse\nMESA3D_CONF_OPTS += \\\n\t-Dshared-glapi=enabled \\\n\t-Dgallium-drivers=$(subst $(space),$(comma),$(MESA3D_GALLIUM_DRIVERS-y)) \\\n\t-Dgallium-extra-hud=true\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)\nMESA3D_CONF_OPTS += \\\n\t-Ddri-drivers= -Ddri3=disabled\nelse\nifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)\nMESA3D_DEPENDENCIES += xlib_libxshmfence\nMESA3D_CONF_OPTS += -Ddri3=enabled\nelse\nMESA3D_CONF_OPTS += -Ddri3=disabled\nendif\nMESA3D_CONF_OPTS += \\\n\t-Dshared-glapi=enabled \\\n\t-Dglx-direct=true \\\n\t-Ddri-drivers=$(subst $(space),$(comma),$(MESA3D_DRI_DRIVERS-y))\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),)\nMESA3D_CONF_OPTS += \\\n\t-Dvulkan-drivers=\nelse\nMESA3D_DEPENDENCIES += xlib_libxshmfence\nMESA3D_CONF_OPTS += \\\n\t-Ddri3=enabled \\\n\t-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))\nendif\n\n# APIs\n\nifeq ($(BR2_PACKAGE_MESA3D_OSMESA_GALLIUM),y)\nMESA3D_CONF_OPTS += -Dosmesa=true\nelse\nMESA3D_CONF_OPTS += -Dosmesa=false\nendif\n\n# Always enable OpenGL:\n#   - Building OpenGL ES without OpenGL is not supported, so always keep opengl enabled.\nMESA3D_CONF_OPTS += -Dopengl=true\n\n# libva and mesa3d have a circular dependency\n# we do not need libva support in mesa3d, therefore disable this option\nMESA3D_CONF_OPTS += -Dgallium-va=disabled\n\n# libGL is only provided for a full xorg stack\nifeq ($(BR2_PACKAGE_MESA3D_OPENGL_GLX),y)\nMESA3D_PROVIDES += libgl\nelse\ndefine MESA3D_REMOVE_OPENGL_HEADERS\n\trm -rf $(STAGING_DIR)/usr/include/GL/\nendef\n\nMESA3D_POST_INSTALL_STAGING_HOOKS += MESA3D_REMOVE_OPENGL_HEADERS\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_NEEDS_X11),y)\nMESA3D_DEPENDENCIES += \\\n\txlib_libX11 \\\n\txlib_libXext \\\n\txlib_libXdamage \\\n\txlib_libXfixes \\\n\txlib_libXrandr \\\n\txlib_libXxf86vm \\\n\txorgproto \\\n\tlibxcb\nMESA3D_PLATFORMS += x11\nendif\nifeq ($(BR2_PACKAGE_WAYLAND),y)\nMESA3D_DEPENDENCIES += wayland wayland-protocols\nMESA3D_PLATFORMS += wayland\nendif\n\nMESA3D_CONF_OPTS += \\\n\t-Dplatforms=$(subst $(space),$(comma),$(MESA3D_PLATFORMS))\n\nifeq ($(BR2_PACKAGE_MESA3D_GBM),y)\nMESA3D_CONF_OPTS += \\\n\t-Dgbm=enabled\nelse\nMESA3D_CONF_OPTS += \\\n\t-Dgbm=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y)\nMESA3D_PROVIDES += libegl\nMESA3D_CONF_OPTS += \\\n\t-Degl=enabled\nelse\nMESA3D_CONF_OPTS += \\\n\t-Degl=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_OPENGL_ES),y)\nMESA3D_PROVIDES += libgles\nMESA3D_CONF_OPTS += -Dgles1=enabled -Dgles2=enabled\nelse\nMESA3D_CONF_OPTS += -Dgles1=disabled -Dgles2=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_XVMC),y)\nMESA3D_DEPENDENCIES += xlib_libXv xlib_libXvMC\nMESA3D_CONF_OPTS += -Dgallium-xvmc=enabled\nelse\nMESA3D_CONF_OPTS += -Dgallium-xvmc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND),y)\nMESA3D_CONF_OPTS += -Dvalgrind=enabled\nMESA3D_DEPENDENCIES += valgrind\nelse\nMESA3D_CONF_OPTS += -Dvalgrind=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBUNWIND),y)\nMESA3D_CONF_OPTS += -Dlibunwind=enabled\nMESA3D_DEPENDENCIES += libunwind\nelse\nMESA3D_CONF_OPTS += -Dlibunwind=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_VDPAU),y)\nMESA3D_DEPENDENCIES += libvdpau\nMESA3D_CONF_OPTS += -Dgallium-vdpau=enabled\nelse\nMESA3D_CONF_OPTS += -Dgallium-vdpau=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LM_SENSORS),y)\nMESA3D_CONF_OPTS += -Dlmsensors=enabled\nMESA3D_DEPENDENCIES += lm-sensors\nelse\nMESA3D_CONF_OPTS += -Dlmsensors=disabled\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nMESA3D_CONF_OPTS += -Dzstd=enabled\nMESA3D_DEPENDENCIES += zstd\nelse\nMESA3D_CONF_OPTS += -Dzstd=disabled\nendif\n\nMESA3D_CFLAGS = $(TARGET_CFLAGS)\n\n# m68k needs 32-bit offsets in switch tables to build\nifeq ($(BR2_m68k),y)\nMESA3D_CFLAGS += -mlong-jump-table-offsets\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/mesa3d-demos/0001-demos-makes-opengl-an-optional-component.patch",
    "content": "From bb0ffae7164d296d32da24fa5499534de259169a Mon Sep 17 00:00:00 2001\nFrom: Spenser Gilliland <spenser@gillilanding.com>\nDate: Sat, 24 Feb 2018 11:36:17 +0100\nSubject: [PATCH] demos: makes opengl an optional component\n\nSigned-off-by: Spenser Gilliland <spenser@gillilanding.com>\n[Romain: convert to git patch, rebase on 8.4.0]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n configure.ac               | 12 +++++++++++-\n src/egl/opengl/Makefile.am |  2 ++\n src/util/Makefile.am       |  2 ++\n 3 files changed, 15 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 0b5e9a76..24298c44 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -51,6 +51,14 @@ m4_ifndef([PKG_PROG_PKG_CONFIG],\n   ACLOCAL=\"aclocal -I/other/macro/dir\" before running autoreconf.])])\n PKG_PROG_PKG_CONFIG()\n \n+AC_ARG_ENABLE([gl],\n+    [AS_HELP_STRING([--enable-gl],\n+        [enable GL library @<:@default=no@:>@])],\n+    [gl_enabled=\"$enableval\"],\n+    [gl_enabled=auto])\n+\n+if test \"x$gl_enabled\" != \"xno\"; then\n+\n dnl Get the pkg-config definitions for libGL.  We include a fallback\n dnl path for GL implementation that don't provide a .pc file\n PKG_CHECK_MODULES(GL, [gl], [], [\n@@ -112,6 +120,8 @@ PKG_CHECK_MODULES(GLU, [glu], [],\n DEMO_CFLAGS=\"$DEMO_CFLAGS $GLU_CFLAGS\"\n DEMO_LIBS=\"$DEMO_LIBS $GLU_LIBS\"\n \n+fi\n+\n AC_ARG_ENABLE([egl],\n     [AS_HELP_STRING([--enable-egl],\n         [enable EGL library @<:@default=auto@:>@])],\n@@ -302,7 +312,7 @@ AC_SUBST([MESA_GLAPI])\n AC_SUBST([WAYLAND_CFLAGS])\n AC_SUBST([WAYLAND_LIBS])\n \n-\n+AM_CONDITIONAL(HAVE_GL, test \"x$gl_enabled\" = \"xyes\")\n AM_CONDITIONAL(HAVE_EGL, test \"x$egl_enabled\" = \"xyes\")\n AM_CONDITIONAL(HAVE_GLESV1, test \"x$glesv1_enabled\" = \"xyes\")\n AM_CONDITIONAL(HAVE_GLESV2, test \"x$glesv2_enabled\" = \"xyes\")\ndiff --git a/src/egl/opengl/Makefile.am b/src/egl/opengl/Makefile.am\nindex 6d184ff6..219ab850 100644\n--- a/src/egl/opengl/Makefile.am\n+++ b/src/egl/opengl/Makefile.am\n@@ -56,6 +56,7 @@ endif\n endif\n \n if HAVE_EGL\n+if HAVE_GL\n bin_PROGRAMS = \\\n \teglinfo\n noinst_PROGRAMS = \\\n@@ -64,6 +65,7 @@ noinst_PROGRAMS = \\\n \t$(EGL_X11_DEMOS) \\\n \t$(EGL_WL_DEMOS)\n endif\n+endif\n \n egltri_x11_SOURCES = egltri.c\n eglgears_x11_SOURCES = eglgears.c\ndiff --git a/src/util/Makefile.am b/src/util/Makefile.am\nindex 759a293a..012b9c75 100644\n--- a/src/util/Makefile.am\n+++ b/src/util/Makefile.am\n@@ -27,7 +27,9 @@ AM_CFLAGS = \\\n AM_LDFLAGS = \\\n \t$(DEMO_LIBS)\n \n+if HAVE_GL\n noinst_LTLIBRARIES = libutil.la\n+endif\n \n if HAVE_GLUT\n AM_CFLAGS += \\\n-- \n2.14.3\n\n"
  },
  {
    "path": "package/mesa3d-demos/Config.in",
    "content": "config BR2_PACKAGE_MESA3D_DEMOS\n\tbool \"mesa3d-demos\"\n\tdepends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES \\\n\t\t|| BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBOPENVG\n\tselect BR2_PACKAGE_LIBGLEW if BR2_PACKAGE_XORG7 && BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_LIBGLU if BR2_PACKAGE_XORG7 && BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 && BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 && BR2_PACKAGE_HAS_LIBGL\n\thelp\n\t  OpenGL demos from the Mesa 3D project.\n\n\t  http://mesa3d.org\n"
  },
  {
    "path": "package/mesa3d-demos/mesa3d-demos.hash",
    "content": "# From https://lists.freedesktop.org/archives/mesa-dev/2018-February/186542.html\nmd5  6b65a02622765522176d00f553086fa3  mesa-demos-8.4.0.tar.bz2\nsha1 57ba892e919fa22ce3db9f25e7331a6fa33c652c  mesa-demos-8.4.0.tar.bz2\nsha256 01e99c94a0184e63e796728af89bfac559795fb2a0d6f506fa900455ca5fff7d  mesa-demos-8.4.0.tar.bz2\nsha512 b72d03cad36e0535ff18dcfb222ec4200064b9264f6da51a6e5f03b0dd912abe188bc1d600b6698de3ce6f63b28d2ce01565886ca8e7079edc4967fbf2fb0957  mesa-demos-8.4.0.tar.bz2\n"
  },
  {
    "path": "package/mesa3d-demos/mesa3d-demos.mk",
    "content": "################################################################################\n#\n# mesa3d-demos\n#\n################################################################################\n\nMESA3D_DEMOS_VERSION = 8.4.0\nMESA3D_DEMOS_SOURCE = mesa-demos-$(MESA3D_DEMOS_VERSION).tar.bz2\nMESA3D_DEMOS_SITE = ftp://ftp.freedesktop.org/pub/mesa/demos\n# 0001-demos-makes-opengl-an-optional-component.patch\nMESA3D_DEMOS_AUTORECONF = YES\nMESA3D_DEMOS_DEPENDENCIES = host-pkgconf\nMESA3D_DEMOS_LICENSE = MIT\n\nMESA3D_DEMOS_CONF_OPTS += \\\n\t--disable-gles1\n\nifeq ($(BR2_PACKAGE_XORG7)$(BR2_PACKAGE_HAS_LIBGL),yy)\nMESA3D_DEMOS_DEPENDENCIES += libgl libglew libglu xlib_libX11 xlib_libXext\nMESA3D_DEMOS_CONF_OPTS += --enable-gl --enable-x11\nelse\nMESA3D_DEMOS_CONF_OPTS += --disable-gl --disable-x11\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBEGL),y)\nMESA3D_DEMOS_DEPENDENCIES += libegl\nMESA3D_DEMOS_CONF_OPTS += --enable-egl\nelse\nMESA3D_DEMOS_CONF_OPTS += --disable-egl\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBGLES),y)\nMESA3D_DEMOS_DEPENDENCIES += libgles\nMESA3D_DEMOS_CONF_OPTS += --enable-gles2\nelse\nMESA3D_DEMOS_CONF_OPTS += --disable-gles2\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBOPENVG),y)\nMESA3D_DEMOS_DEPENDENCIES += libopenvg\nMESA3D_DEMOS_CONF_OPTS += --enable-vg\nelse\nMESA3D_DEMOS_CONF_OPTS += --disable-vg\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_GBM),y)\nMESA3D_DEMOS_DEPENDENCIES += mesa3d\nMESA3D_DEMOS_CONF_OPTS += --enable-gbm\nelse\nMESA3D_DEMOS_CONF_OPTS += --disable-gbm\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nMESA3D_DEMOS_DEPENDENCIES += freetype\nMESA3D_DEMOS_CONF_OPTS += --enable-freetype2\nelse\nMESA3D_DEMOS_CONF_OPTS += --disable-freetype2\nendif\n\nifeq ($(BR2_PACKAGE_LIBFREEGLUT),y)\nMESA3D_DEMOS_DEPENDENCIES += libfreeglut\nMESA3D_DEMOS_CONF_OPTS += --with-glut=$(STAGING_DIR)/usr\n# osmesa support depends on glut\nifeq ($(BR2_PACKAGE_MESA3D_OSMESA_GALLIUM),y)\nMESA3D_DEMOS_CONF_OPTS += --enable-osmesa\nelse\nMESA3D_DEMOS_CONF_OPTS += --disable-osmesa\nendif\nelse\nMESA3D_DEMOS_CONF_OPTS += --without-glut --disable-osmesa\nendif\n\nifeq ($(BR2_PACKAGE_WAYLAND),y)\nMESA3D_DEMOS_DEPENDENCIES += wayland\nMESA3D_DEMOS_CONF_OPTS += --enable-wayland\nelse\nMESA3D_DEMOS_CONF_OPTS += --disable-wayland\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mesa3d-headers/Config.in",
    "content": "config BR2_PACKAGE_MESA3D_HEADERS\n\tbool\n\thelp\n\t  Mesa 3D, an open-source implementation of the OpenGL\n\t  specification.\n\n\t  This package only installs headers needed by other packages.\n\n\t  http://mesa3d.org\n"
  },
  {
    "path": "package/mesa3d-headers/dri.pc",
    "content": "prefix=/usr\nlibdir=${prefix}/lib\nincludedir=${prefix}/include\n\ndridriverdir=/usr/lib/dri\n\nName: dri\nDescription: Direct Rendering Infrastructure\nVersion: @VERSION@\nCflags: -I${includedir}\n"
  },
  {
    "path": "package/mesa3d-headers/mesa3d-headers.mk",
    "content": "################################################################################\n#\n# mesa3d-headers\n#\n################################################################################\n\n# mesa3d-headers is inherently incompatible with mesa3d, so error out\n# if both are enabled.\nifeq ($(BR2_PACKAGE_MESA3D)$(BR2_PACKAGE_MESA3D_HEADERS),yy)\n$(error mesa3d-headers enabled, but mesa3d enabled too)\nendif\n\n# Not possible to directly refer to mesa3d variables, because of\n# first/second expansion trickery...\nMESA3D_HEADERS_VERSION = 21.1.8\nMESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz\nMESA3D_HEADERS_SITE = https://archive.mesa3d.org\nMESA3D_HEADERS_DL_SUBDIR = mesa3d\nMESA3D_HEADERS_LICENSE = MIT, SGI, Khronos\nMESA3D_HEADERS_LICENSE_FILES = docs/license.rst\nMESA3D_HEADERS_CPE_ID_VENDOR = mesa3d\nMESA3D_HEADERS_CPE_ID_PRODUCT = mesa\n\n# Only installs header files\nMESA3D_HEADERS_INSTALL_STAGING = YES\nMESA3D_HEADERS_INSTALL_TARGET = NO\n\nMESA3D_HEADERS_DIRS = KHR\n\nifeq ($(BR2_PACKAGE_HAS_LIBGL),y)\n\nMESA3D_HEADERS_DIRS += GL\n\nifeq ($(BR2_PACKAGE_XORG7),y)\n\n# Not using $(SED) because we do not want to work in-place, and $(SED)\n# contains -i.\ndefine MESA3D_HEADERS_BUILD_DRI_PC\n\tsed -e 's:@VERSION@:$(MESA3D_HEADERS_VERSION):' \\\n\t    package/mesa3d-headers/dri.pc \\\n\t    >$(@D)/src/mesa/drivers/dri/dri.pc\nendef\n\ndefine MESA3D_HEADERS_INSTALL_DRI_PC\n\t$(INSTALL) -D -m 0644 $(@D)/include/GL/internal/dri_interface.h \\\n\t\t$(STAGING_DIR)/usr/include/GL/internal/dri_interface.h\n\t$(INSTALL) -D -m 0644 $(@D)/src/mesa/drivers/dri/dri.pc \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/dri.pc\nendef\n\nendif # Xorg\n\nendif # OpenGL\n\nifeq ($(BR2_PACKAGE_HAS_LIBEGL),y)\nMESA3D_HEADERS_DIRS += EGL\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBGLES),y)\nMESA3D_HEADERS_DIRS += GLES GLES2\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBOPENCL),y)\nMESA3D_HEADERS_DIRS += CL\nendif\n\ndefine MESA3D_HEADERS_BUILD_CMDS\n\t$(MESA3D_HEADERS_BUILD_DRI_PC)\nendef\n\ndefine MESA3D_HEADERS_INSTALL_STAGING_CMDS\n\t$(foreach d,$(MESA3D_HEADERS_DIRS),\\\n\t\tcp -dpfr $(@D)/include/$(d) $(STAGING_DIR)/usr/include/ || exit 1$(sep))\n\t$(MESA3D_HEADERS_INSTALL_DRI_PC)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/meson/0001-Prefer-ext-static-libs-when-default-library-static.patch",
    "content": "From c1359a49b61016031287d62f44a363cb76242c91 Mon Sep 17 00:00:00 2001\nFrom: Matt Weber <matthew.weber@rockwellcollins.com>\nDate: Sat, 26 Oct 2019 09:17:29 -0500\nSubject: [PATCH] Prefer ext static libs when --default-library=static\n\nThis patch adds a case in the library pattern logic to prefer static\nlibraries when the Meson Core option for \"default_library\" is set to\nsolely static.\n\nThe existing library search order makes sense for cases of shared and\nshared / static mixed. However if using a prebuilt cross-toolchain,\nthey usually provide both a static and shared version of sysroot\nlibraries. This presents a problem in a complete static build where\nthere won't be shared libraries at runtime and during build time there\nare failures like \"ld: attempted static link of dynamic object\".\n\nBug:\nhttps://github.com/mesonbuild/meson/issues/6108\n\nFixes:\nhttp://autobuild.buildroot.net/results/db1740b4777f436324218c52bc7b08e5c21b667d/\nhttp://autobuild.buildroot.net/results/c17/c17bbb12d9deadd64a441b36e324cfbbe8aba5be/\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n[Updated for 0.57.1 - get_builtin_option() vs. get_option(OptionKey())]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n mesonbuild/compilers/mixins/clike.py | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/mesonbuild/compilers/mixins/clike.py b/mesonbuild/compilers/mixins/clike.py\nindex 09ad837b1..b7f6b9f22 100644\n--- a/mesonbuild/compilers/mixins/clike.py\n+++ b/mesonbuild/compilers/mixins/clike.py\n@@ -978,6 +978,9 @@ class CLikeCompiler(Compiler):\n         elif env.machines[self.for_machine].is_cygwin():\n             shlibext = ['dll', 'dll.a']\n             prefixes = ['cyg'] + prefixes\n+        elif env.coredata.get_option(OptionKey('default_library')) == 'static':\n+            # Linux/BSDs\n+            shlibext = ['a']\n         else:\n             # Linux/BSDs\n             shlibext = ['so']\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/meson/0002-mesonbuild-dependencies-base.py-add-pkg_config_stati.patch",
    "content": "From 3d6a2db2270346236dd6247e0648ea0c949ba468 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 15 Feb 2020 15:13:59 +0100\nSubject: [PATCH] mesonbuild/dependencies/base.py: add pkg_config_static\n\nAllow the user to always call pkg-config with --static thanks to a\npkg_config_static property. This will allow to fix static build failures\nwith libglib2:\n\nFAILED: gio/gio\n/home/naourr/work/instance-0/output-1/host/bin/arm-linux-gcc  -o gio/gio 'gio/6ae6c9e@@gio@exe/gio-tool.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-cat.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-copy.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-info.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-list.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-mime.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-mkdir.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-monitor.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-mount.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-move.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-open.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-rename.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-remove.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-save.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-set.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-trash.c.o' 'gio/6ae6c9e@@gio@exe/gio-tool-tree.c.o' -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -static -Wl,--start-group gio/libgio-2.0.a glib/libglib-2.0.a gobject/libgobject-2.0.a gmodule/libgmodule-2.0.a -pthread /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libz.a /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libmount.a /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libpcre.a -lm /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libffi.a -Wl,--end-group '-Wl,-rpath,$ORIGIN/:$ORIGIN/../glib:$ORIGIN/../gobject:$ORIGIN/../gmodule' -Wl,-rpath-link,/home/naourr/work/instance-0/output-1/build/libglib2-2.62.4/build/gio -Wl,-rpath-link,/home/naourr/work/instance-0/output-1/build/libglib2-2.62.4/build/glib -Wl,-rpath-link,/home/naourr/work/instance-0/output-1/build/libglib2-2.62.4/build/gobject -Wl,-rpath-link,/home/naourr/work/instance-0/output-1/build/libglib2-2.62.4/build/gmodule\n/home/naourr/work/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /home/naourr/work/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libmount.a(la-fs.o): in function `__mnt_fs_set_source_ptr':\nfs.c:(.text+0x5ec): undefined reference to `blkid_parse_tag_string'\n\nFixes:\n - http://autobuild.buildroot.org/results/0d36952def63cb69628697fa6408aeb6ce10cb5b\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Romain: Fix if condition, pkg_config_static is a string not a boolean]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n[Rebased on 0.57.1]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n mesonbuild/dependencies/pkgconfig.py | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/mesonbuild/dependencies/pkgconfig.py b/mesonbuild/dependencies/pkgconfig.py\nindex 1e8d9132e..d902ba215 100644\n--- a/mesonbuild/dependencies/pkgconfig.py\n+++ b/mesonbuild/dependencies/pkgconfig.py\n@@ -338,7 +338,8 @@ class PkgConfigDependency(ExternalDependency):\n         env = None\n         libcmd = ['--libs']\n \n-        if self.static:\n+        if self.static or \\\n+            (self.env.properties[self.for_machine].get('pkg_config_static', None) == 'true'):\n             libcmd.append('--static')\n \n         libcmd.append(self.name)\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/meson/cross-compilation.conf.in",
    "content": "# Note: Buildroot's and Meson's terminologies differ about the meaning\n# of 'build', 'host' and 'target':\n# - Buildroot's 'host' is Meson's 'build'\n# - Buildroot's 'target' is Meson's 'host'\n\n[binaries]\nc = '@TARGET_CROSS@gcc'\ncpp = '@TARGET_CROSS@g++'\nar = '@TARGET_CROSS@ar'\nstrip = '@TARGET_CROSS@strip'\npkgconfig = '@HOST_DIR@/bin/pkgconf'\ng-ir-compiler = '@STAGING_DIR@/usr/bin/g-ir-compiler'\ng-ir-scanner = '@STAGING_DIR@/usr/bin/g-ir-scanner'\n\n[built-in options]\nc_args = [@TARGET_CFLAGS@]\nc_link_args = [@TARGET_LDFLAGS@]\ncpp_args = [@TARGET_CXXFLAGS@]\ncpp_link_args = [@TARGET_LDFLAGS@]\nwrap_mode = 'nodownload'\n\n[properties]\nneeds_exe_wrapper = true\nsys_root = '@STAGING_DIR@'\npkg_config_libdir = '@STAGING_DIR@/usr/lib/pkgconfig:@STAGING_DIR@/usr/share/pkgconfig'\npkg_config_static = '@STATIC@'\n\n[host_machine]\nsystem = 'linux'\ncpu_family = '@TARGET_ARCH@'\ncpu = '@TARGET_CPU@'\nendian = '@TARGET_ENDIAN@'\n"
  },
  {
    "path": "package/meson/meson.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://github.com/mesonbuild/meson/releases/download/0.61.4/meson-0.61.4.tar.gz.asc\nsha256  4e3733ddc66bac38e38c63b739c9b8b8fc5a866de5333396b0c85c2b144ddee9  meson-0.61.4.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  COPYING\n"
  },
  {
    "path": "package/meson/meson.mk",
    "content": "################################################################################\n#\n# meson\n#\n################################################################################\n\nMESON_VERSION = 0.61.4\nMESON_SITE = https://github.com/mesonbuild/meson/releases/download/$(MESON_VERSION)\nMESON_LICENSE = Apache-2.0\nMESON_LICENSE_FILES = COPYING\nMESON_SETUP_TYPE = setuptools\n\nHOST_MESON_DEPENDENCIES = host-ninja\nHOST_MESON_NEEDS_HOST_PYTHON = python3\n\n# Avoid interpreter shebang longer than 128 chars\ndefine HOST_MESON_SET_INTERPRETER\n\t$(SED) '1s:.*:#!/usr/bin/env python3:' $(HOST_DIR)/bin/meson\nendef\nHOST_MESON_POST_INSTALL_HOOKS += HOST_MESON_SET_INTERPRETER\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/meson-tools/0001-amlbootenc-gxl-remove-non-std-C-convention-in-for.patch",
    "content": "From 7c5475187d1bdf861360ffd8bc1aaea84a341db3 Mon Sep 17 00:00:00 2001\nFrom: Dagg Stompler <daggs@gmx.com>\nDate: Fri, 11 Sep 2020 12:28:52 +0300\nSubject: [PATCH] amlbootenc-gxl: remove non std C convention in for\n\nnot all compilers have c99 or gnu99 enabled, so try not to use a\nnon std C convention in for call loops\n\nSigned-off-by: Dagg Stompler <daggs@gmx.com>\n---\n amlbootenc-gxl.c | 7 ++++---\n 1 file changed, 4 insertions(+), 3 deletions(-)\n\ndiff --git a/amlbootenc-gxl.c b/amlbootenc-gxl.c\nindex 3695e13..233563d 100644\n--- a/amlbootenc-gxl.c\n+++ b/amlbootenc-gxl.c\n@@ -51,6 +51,7 @@ static int boot_enc(const char *input, const char *output)\n \t\t._unknown3 = 0x02000000,\n \t\t.sig2 = AMLOGIC_C_SIGNATURE,\n \t};\n+\tint i;\n\n \tassert(sizeof(hdr) == 0x100);\n\n@@ -130,10 +131,10 @@ static int boot_enc(const char *input, const char *output)\n \tmemcpy(hdr.iv, (uint8_t[]){ 0x14, 0x82, 0x5b, 0x1b, 0x10, 0xc1, 0x49, 0x0d, 0x8f, 0x13, 0x0a, 0x99, 0x15, 0x50, 0x1d, 0x37 }, 16);\n \t}\n #else\n-\tfor (int i = 0; i < sizeof(hdr.key); i++) {\n+\tfor (i = 0; i < sizeof(hdr.key); i++) {\n \t\thdr.key[i] = rand();\n \t}\n-\tfor (int i = 0; i < sizeof(hdr.iv); i++) {\n+\tfor (i = 0; i < sizeof(hdr.iv); i++) {\n \t\thdr.iv[i] = rand();\n \t}\n #endif\n@@ -151,7 +152,7 @@ static int boot_enc(const char *input, const char *output)\n \tAES_cbc_encrypt(src_buf, buf + hdr.first_offset, hdr.block_size, &aes_key, iv, AES_ENCRYPT);\n \tSHA256_Update(&sha256_ctx, buf + hdr.first_offset, hdr.block_size);\n\n-\tfor (int i = 1; i < hdr.payload_size / hdr.block_size; i++) {\n+\tfor (i = 1; i < hdr.payload_size / hdr.block_size; i++) {\n \t\tmemset(src_buf, 0, hdr.block_size);\n \t\tfread(src_buf, 1, hdr.block_size, fin);\n \t\tAES_cbc_encrypt(src_buf, buf + hdr.data_offset + (i - 1) * hdr.block_size, hdr.block_size, &aes_key, iv, AES_ENCRYPT);\n--\n2.28.0\n\n"
  },
  {
    "path": "package/meson-tools/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_MESON_TOOLS\n\tbool \"host meson-tools\"\n\thelp\n\t  meson-tools is a collection of tools for use with the\n\t  Amlogic Meson family of ARM based SoCs. It allows management\n\t  of signatures which are required for booting amlogic based\n\t  boards with u-boot.\n\n\t  https://github.com/afaerber/meson-tools\n"
  },
  {
    "path": "package/meson-tools/meson-tools.hash",
    "content": "# Locally calculated\nsha256  10d707b2f741df03ff5000f2a82c6f577036ce1cd34d9278b22b92cb616b6fce  meson-tools-0a02e2d34413f4bf9b15946352bc8c8ee13a5843.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/meson-tools/meson-tools.mk",
    "content": "################################################################################\n#\n# meson-tools\n#\n################################################################################\n\nHOST_MESON_TOOLS_VERSION = 0a02e2d34413f4bf9b15946352bc8c8ee13a5843\nHOST_MESON_TOOLS_SITE = $(call github,afaerber,meson-tools,$(HOST_MESON_TOOLS_VERSION))\nHOST_MESON_TOOLS_LICENSE = GPL-2.0+\nHOST_MESON_TOOLS_LICENSE_FILES = COPYING\nHOST_MESON_TOOLS_DEPENDENCIES = host-openssl\n\nHOST_MESON_TOOLS_PROGS = amlbootsig unamlbootsig amlinfo\n\ndefine HOST_MESON_TOOLS_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CONFIGURE_OPTS) \\\n\t\tLDFLAGS=\"$(HOST_LDFLAGS) -lssl -lcrypto\"\nendef\n\ndefine HOST_MESON_TOOLS_INSTALL_CMDS\n\t$(foreach f,$(HOST_MESON_TOOLS_PROGS), \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$(f) $(HOST_DIR)/bin/$(f)\n\t)\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/metacity/0001-add-libm-reference.patch",
    "content": "Upstream fix to link metacity itself against libm\n\nThe upstream fix is modified to also include the changes on the\nconfigure script directly, so that autoreconfiguring is not\nneeded. Autoreconfiguring cannot be done easily on metacity, due to\nmissing AM_GCONF_SOURCE_2 and AM_NLS macros.\n\nhttp://git.gnome.org/browse/metacity/commit/configure.in?id=9cb0b6ff520ea69bdff6c328a21787202aee1bcc\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nFrom 9cb0b6ff520ea69bdff6c328a21787202aee1bcc Mon Sep 17 00:00:00 2001\nFrom: Götz Waschk <waschk@mandriva.org>\nDate: Wed, 22 Oct 2008 12:08:48 +0000\nSubject: add libm reference. Closes #557357.\n\n2008-10-22  Götz Waschk  <waschk@mandriva.org>\n\n        * configure.in: add libm reference.  Closes #557357.\n\n\nsvn path=/trunk/; revision=3984\n---\n(limited to 'configure.in')\n\nIndex: b/configure.in\n===================================================================\n--- a/configure.in\n+++ b/configure.in\n@@ -413,7 +413,7 @@\n    AC_DEFINE(HAVE_XSYNC, , [Have the Xsync extension library])\n fi\n \n-METACITY_LIBS=\"$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS\"\n+METACITY_LIBS=\"$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm\"\n METACITY_MESSAGE_LIBS=\"$METACITY_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS\"\n METACITY_WINDOW_DEMO_LIBS=\"$METACITY_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS\"\n METACITY_PROPS_LIBS=\"$METACITY_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS\"\nIndex: b/configure\n===================================================================\n--- a/configure\n+++ b/configure\n@@ -29509,7 +29509,7 @@\n \n fi\n \n-METACITY_LIBS=\"$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS\"\n+METACITY_LIBS=\"$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm\"\n METACITY_MESSAGE_LIBS=\"$METACITY_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS\"\n METACITY_WINDOW_DEMO_LIBS=\"$METACITY_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS\"\n METACITY_PROPS_LIBS=\"$METACITY_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS\"\n"
  },
  {
    "path": "package/metacity/0002-gconf.patch",
    "content": "[PATCH] fix build with --disable-gconf\n\nsrc/core/prefs.c still contain a call to gconf_client_set_bool() when\nbuilt with --disable-gconf, breaking the build.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n---\n src/core/prefs.c |    2 ++\n 1 file changed, 2 insertions(+)\n\nIndex: metacity-2.25.1/src/core/prefs.c\n===================================================================\n--- metacity-2.25.1.orig/src/core/prefs.c\n+++ metacity-2.25.1/src/core/prefs.c\n@@ -2949,6 +2949,7 @@\n void\n meta_prefs_set_compositing_manager (gboolean whether)\n {\n+#if HAVE_GCONF\n   GError *err = NULL;\n \n   gconf_client_set_bool (default_client,\n@@ -2962,6 +2963,7 @@\n                     err->message);\n       g_error_free (err);\n     }\n+#endif\n }\n \n #ifndef HAVE_GCONF\n"
  },
  {
    "path": "package/metacity/0003-mag-add-libm-reference.patch",
    "content": "Upstream patch to fix link against libm\n\nThe upstream patch is modified to also include the necessary\nMakefile.in, which avoids the need for autoreconfiguring the\npackage. Autoreconfiguring the package unfortunately doesn't work, due\nto AM_GCONF_SOURCE_2 and AM_NLS macros being missing.\n\nhttp://git.gnome.org/browse/metacity/commit/src/tools/Makefile.am?id=13d0d52eb885598885b6ff4b73c795c8f29c2a6b\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nFrom 13d0d52eb885598885b6ff4b73c795c8f29c2a6b Mon Sep 17 00:00:00 2001\nFrom: Matthias Clasen <mclasen@redhat.com>\nDate: Sun, 02 May 2010 14:50:42 +0000\nSubject: fails to link with pedantic linkers\n\n---\n(limited to 'src/tools/Makefile.am')\n\nIndex: b/src/tools/Makefile.am\n===================================================================\n--- a/src/tools/Makefile.am\n+++ b/src/tools/Makefile.am\n@@ -26,7 +26,7 @@\n \n metacity_message_LDADD= @METACITY_MESSAGE_LIBS@\n metacity_window_demo_LDADD= @METACITY_WINDOW_DEMO_LIBS@\n-metacity_mag_LDADD= @METACITY_WINDOW_DEMO_LIBS@\n+metacity_mag_LDADD= @METACITY_WINDOW_DEMO_LIBS@ -lm\n metacity_grayscale_LDADD = @METACITY_WINDOW_DEMO_LIBS@\n \n EXTRA_DIST=$(icon_DATA)\nIndex: b/src/tools/Makefile.in\n===================================================================\n--- a/src/tools/Makefile.in\n+++ b/src/tools/Makefile.in\n@@ -281,7 +281,7 @@\n \n metacity_message_LDADD = @METACITY_MESSAGE_LIBS@\n metacity_window_demo_LDADD = @METACITY_WINDOW_DEMO_LIBS@\n-metacity_mag_LDADD = @METACITY_WINDOW_DEMO_LIBS@\n+metacity_mag_LDADD = @METACITY_WINDOW_DEMO_LIBS@ -lm\n metacity_grayscale_LDADD = @METACITY_WINDOW_DEMO_LIBS@\n EXTRA_DIST = $(icon_DATA)\n all: all-am\n"
  },
  {
    "path": "package/metacity/Config.in",
    "content": "config BR2_PACKAGE_METACITY\n\tbool \"metacity\"\n\tdepends on BR2_PACKAGE_LIBGTK2\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\t# Metacity configure.ac pretends it can be built without\n\t# Composite, but in reality, it doesn't build.\n\tselect BR2_PACKAGE_XLIB_LIBXCOMPOSITE\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\tselect BR2_PACKAGE_XLIB_LIBXDAMAGE\n\t# We do not directly depend on Xft, but they are needed to get\n\t# Xft support in Pango, which we require.\n\tselect BR2_PACKAGE_XLIB_LIBXFT\n\thelp\n\t  Metacity is a window manager for the X Window System.\n\n\t  https://wiki.gnome.org/Projects/Metacity\n"
  },
  {
    "path": "package/metacity/Xsession",
    "content": "#!/bin/sh\nexport GDK_USE_XFT=1\nexport LANG=\"en_US.UTF-8\"\nexport LC_ALL=\"en_US.UTF-8\"\n/usr/bin/X11/rxvt -bg black -fg gray90 &\nexec /bin/metacity\n"
  },
  {
    "path": "package/metacity/metacity.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/metacity/2.25/metacity-2.25.1.sha256sum\nsha256  fb2ede4ac02d7da08d3c3323fb76afaf945c8cccc07cb2d3a4b7f44fb49f1c47  metacity-2.25.1.tar.bz2\n\n# Locally computed\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/metacity/metacity.mk",
    "content": "################################################################################\n#\n# metacity\n#\n################################################################################\n\n# newer versions need libcanberra-gtk and gnome-doc-utils\nMETACITY_VERSION_MAJOR = 2.25\nMETACITY_VERSION = $(METACITY_VERSION_MAJOR).1\nMETACITY_SOURCE = metacity-$(METACITY_VERSION).tar.bz2\nMETACITY_SITE = http://ftp.gnome.org/pub/gnome/sources/metacity/$(METACITY_VERSION_MAJOR)\nMETACITY_LICENSE = GPL-2.0+\nMETACITY_LICENSE_FILES = COPYING\n\nMETACITY_CONF_OPTS = \\\n\t--x-includes=$(STAGING_DIR)/usr/include/X11 \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib \\\n\t--disable-glibtest \\\n\t--disable-gconf \\\n\t--disable-sm \\\n\t--disable-startup-notification\n\nMETACITY_DEPENDENCIES = libgtk2 \\\n\txlib_libX11 \\\n\thost-libxml-parser-perl \\\n\txlib_libXcomposite \\\n\txlib_libXfixes \\\n\txlib_libXrender \\\n\txlib_libXdamage \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nMETACITY_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y)\nMETACITY_DEPENDENCIES += xlib_libXcursor\nendif\n\ndefine METACITY_INSTALL_XSESSION\n\t$(INSTALL) -D package/metacity/Xsession $(TARGET_DIR)/etc/X11/Xsession\nendef\n\nMETACITY_POST_INSTALL_TARGET_HOOKS += METACITY_INSTALL_XSESSION\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mfgtools/0001-lnx_def.h-fix-conflicting-declaration-of-__time64_t.patch",
    "content": "From 1af7bc09451e0b779f7bfb0dcc58ffb3abe9c584 Mon Sep 17 00:00:00 2001\nFrom: Gary Bisson <bisson.gary@gmail.com>\nDate: Tue, 11 Feb 2020 15:30:12 +0100\nSubject: [PATCH] lnx_def.h: fix conflicting declaration of __time64_t\n\nSigned-off-by: Gary Bisson <bisson.gary@gmail.com>\n---\n MfgToolLib/lnx_def.h | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/MfgToolLib/lnx_def.h b/MfgToolLib/lnx_def.h\nindex c6869dd..a38bb99 100644\n--- a/MfgToolLib/lnx_def.h\n+++ b/MfgToolLib/lnx_def.h\n@@ -124,7 +124,9 @@ typedef unsigned long * ULONG_PTR;\n typedef char * LPOLESTR;\n typedef void * HDEVINFO;\n typedef unsigned long long ULONGLONG;\n+#ifndef __time64_t\n typedef long long __time64_t;\n+#endif\n typedef long long __int64;\n typedef unsigned long DWORD_PTR;\n typedef unsigned int UINT;\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/mfgtools/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_MFGTOOLS\n\tbool \"host mfgtools\"\n\tdepends on BR2_arm\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb\n\thelp\n\t  This package contains the Freescale manufacturing tool.\n\t  It is designed to program firmware to i.MX boards during\n\t  production. The communication is done over USB using the\n\t  Freescale UTP protocol.\n\n\t  https://github.com/codeauroraforum/mfgtools\n\ncomment \"host mfgtools needs a toolchain w/ host gcc >= 4.9\"\n\tdepends on BR2_arm\n\tdepends on !BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/mfgtools/mfgtools.hash",
    "content": "# locally computed\nsha256  055d71227d18883d6e8bc9e854c076015f9a7749820a94272e19071bf0b25c89  mfgtools-0.02.tar.gz\nsha256  2655559a6bb1179eae514f5c7166f4ede4f2453efa9cf4dc3c045cab5d57dede  LICENSE\nsha256  0963b6e5086bf454265b0f57821a02b681d1211e40ad74c310231cb4d94815c9  README.txt\n"
  },
  {
    "path": "package/mfgtools/mfgtools.mk",
    "content": "################################################################################\n#\n# mfgtools\n#\n################################################################################\n\nMFGTOOLS_VERSION = 0.02\nMFGTOOLS_SITE = $(call github,codeauroraforum,mfgtools,v$(MFGTOOLS_VERSION))\nMFGTOOLS_SUBDIR = MfgToolLib\nMFGTOOLS_LICENSE = BSD-3-Clause or CPOL\nMFGTOOLS_LICENSE_FILES = LICENSE README.txt\nHOST_MFGTOOLS_DEPENDENCIES = host-libusb\n\nHOST_MFGTOOLS_CFLAGS = \\\n\t$(HOST_CFLAGS) $(HOST_LDFLAGS) -std=c++11 -lpthread \\\n\t-L$(@D)/MfgToolLib -lMfgToolLib -I$(@D)/MfgToolLib \\\n\t-lusb-1.0 -I$(HOST_DIR)/include/libusb-1.0 \\\n\t-fpermissive -Wno-write-strings\n\ndefine HOST_MFGTOOLS_CLI_BUILD\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) CC=\"$(HOSTCXX)\" \\\n\t\tCFLAGS=\"$(HOST_MFGTOOLS_CFLAGS)\" -C $(@D)/TestPrgm\nendef\n\nHOST_MFGTOOLS_POST_BUILD_HOOKS += HOST_MFGTOOLS_CLI_BUILD\n\ndefine HOST_MFGTOOLS_INSTALL_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/MfgToolLib/libMfgToolLib.so \\\n\t\t$(HOST_DIR)/lib/libMfgToolLib.so\n\t$(INSTALL) -D -m 755 $(@D)/TestPrgm/mfgtoolcli \\\n\t\t$(HOST_DIR)/bin/mfgtoolcli\nendef\n\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/mfgtools/readme.txt",
    "content": "MfgTools Howto\n==============\n\n1. Build your mfgtool image\n\nMake sure to enable the following Buildroot options:\n\nBR2_PACKAGE_FREESCALE_IMX=y\nBR2_PACKAGE_IMX_UUC=y\nBR2_TARGET_ROOTFS_CPIO=y\nBR2_TARGET_ROOTFS_CPIO_GZIP=y\nBR2_TARGET_ROOTFS_CPIO_UIMAGE=y\n\nAlso modify your kernel configuration to have:\n\nCONFIG_USB_GADGET=y\nCONFIG_USB_MASS_STORAGE=y\nCONFIG_FSL_UTP=y\nCONFIG_MMC_BLOCK_MINORS=16\n\n2. Go into the output and create the necessary folders\n\n$ cd output\n$ mkdir -p \"Profiles/Linux/OS Firmware/firmware\"\n\n3. Create your XML update script named ucl2.xml\n\nYou can find a sample XML at:\n\n$ wget https://storage.googleapis.com/boundarydevices.com/ucl2.xml \\\n  -O Profiles/Linux/OS\\ Firmware/ucl2.xml\n\n4. Copy the U-Boot, Kernel and initramfs images to the appropriate\nfolder\n\n$ cp images/u-boot.imx images/zImage images/imx6q-sabrelite.dtb \\\n  images/rootfs.cpio.uboot Profiles/Linux/OS\\ Firmware/firmware/\n\n5. Copy the prebuilt binaries to be flashed\n\nDepending on your ucl2.xml file, the sample doesn't flash anything.\n\n6. Run the MfgTools client:\n\n$ ./host/bin/mfgtoolcli -l mmc -s uboot_defconfig=imx \\\n  -s dtbname=imx6q-sabrelite.dtb -s initramfs=rootfs.cpio.uboot \\\n  -s mmc=1 -p 1\n\nFor more information about the tools options, please read the\n\"Manufacturing Tool V2 Quick Start Guide.docx\" documentation contained\nin every mfgtools package from NXP website[1].\n\nNote: All the above commands require your Linux host user to have\npermissions to access the USB devices. Please make sure to have udev\nrules that allow the user to communicate with the BootROM IDs\n(Freescale USB recovery) as well as the one used for the UTP Linux\nimage (0x066F:0x37FF).  Using 'sudo' in front of the mfgtoolcli\ncommand would also grant you the necessary permission but it is *not*\nrecommended.\n\nAlso, if your U-Boot environment doesn't include mfgtools bootargs,\nmake sure to set the following:\n\nsetenv bootargs \"console=${console},${baudrate} g_mass_storage.stall=0 \\\n\tg_mass_storage.removable=1 g_mass_storage.idVendor=0x066F \\\n\tg_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber=\\\"\\\" \\\n\tg_mass_storage.file=/fat\"\n\n[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\n"
  },
  {
    "path": "package/mfoc/Config.in",
    "content": "config BR2_PACKAGE_MFOC\n\tbool \"mfoc\"\n\tselect BR2_PACKAGE_LIBNFC\n\thelp\n\t  Mifare Classic Offline Cracker\n\n\t  https://github.com/nfc-tools/mfoc\n"
  },
  {
    "path": "package/mfoc/mfoc.hash",
    "content": "# locally computed\nsha256  2dfd8ffa4a8b357807680d190a91c8cf3db54b4211a781edc1108af401dbaad7  mfoc-0.10.7.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/mfoc/mfoc.mk",
    "content": "################################################################################\n#\n# mfoc\n#\n################################################################################\n\nMFOC_VERSION = 0.10.7\nMFOC_SITE = $(call github,nfc-tools,mfoc,mfoc-$(MFOC_VERSION))\nMFOC_LICENSE = GPL-2.0\nMFOC_LICENSE_FILES = COPYING\nMFOC_DEPENDENCIES = libnfc\n# Fetching from github, we need to generate the configure script\nMFOC_AUTORECONF = YES\nMFOC_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mg/Config.in",
    "content": "config BR2_PACKAGE_MG\n\tbool \"mg\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Emacs-like text editor (130 kiB)\n\n\t  Mg is a MicroEMACS clone with the goal of being compatible\n\t  with GNU Emacs, because there should never be any reason to\n\t  learn more than one Emacs flavor.\n\n\t  Unlike many other editors it does not require ncurses, only a\n\t  standard C library, making it suitable for really small and\n\t  embedded systems.\n\n\t  This version is based on mg2a from OpenBSD, with more features\n\t  and, in particular, no requirement on ncurses or termcap.\n\n\t  https://github.com/troglobit/mg/\n"
  },
  {
    "path": "package/mg/mg.hash",
    "content": "# From https://github.com/troglobit/mg/releases/tag/v3.5\nsha256 a906eab9370c0f24a5fa25923561ad933b74ad339d0b2851d2067badf0d7e4ce  mg-3.5.tar.gz\n# Locally computed:\nsha256 7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c  UNLICENSE\n"
  },
  {
    "path": "package/mg/mg.mk",
    "content": "################################################################################\n#\n# mg\n#\n################################################################################\n\nMG_VERSION = 3.5\nMG_SITE = https://github.com/troglobit/mg/releases/download/v$(MG_VERSION)\nMG_LICENSE = Public Domain\nMG_LICENSE_FILES = UNLICENSE\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nMG_DEPENDENCIES += ncurses\nMG_CONF_OPTS += --with-curses\nelse\nMG_CONF_OPTS += --without-curses\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/micropython/Config.in",
    "content": "config BR2_PACKAGE_MICROPYTHON\n\tbool \"micropython\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBFFI\n\thelp\n\t  Micro Python is a lean and fast implementation of the Python\n\t  3 programming language that is optimised to run on a\n\t  microcontroller.\n\n\t  http://micropython.org\n\ncomment \"micropython needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/micropython/micropython.hash",
    "content": "#locally computed\nsha256  c21dbf8144237b3dbe3847c9ad5264cd0f3104eb078c810b3986004cce8fcd70  micropython-1.17.tar.gz\nsha256  59b1f0947a87c90d0d29dbe2c8deb3d1f8263bbbd2fb5ebcc79a649cff6dfcba  LICENSE\n"
  },
  {
    "path": "package/micropython/micropython.mk",
    "content": "################################################################################\n#\n# micropython\n#\n################################################################################\n\nMICROPYTHON_VERSION = 1.17\nMICROPYTHON_SITE = $(call github,micropython,micropython,v$(MICROPYTHON_VERSION))\n# Micropython has a lot of code copied from other projects, and also a number\n# of submodules for various libs. However, we don't even clone the submodules,\n# and most of the copied code is not used in the unix build.\nMICROPYTHON_LICENSE = MIT, BSD-1-Clause, BSD-3-Clause, Zlib\nMICROPYTHON_LICENSE_FILES = LICENSE\nMICROPYTHON_DEPENDENCIES = host-pkgconf libffi host-python3\n\n# Set GIT_DIR so package won't use buildroot's version number\nMICROPYTHON_MAKE_ENV = \\\n\t$(TARGET_MAKE_ENV) \\\n\tGIT_DIR=.\n\n# Use fallback implementation for exception handling on architectures that don't\n# have explicit support.\nifeq ($(BR2_i386)$(BR2_x86_64)$(BR2_arm)$(BR2_armeb),)\nMICROPYTHON_CFLAGS = -DMICROPY_GCREGS_SETJMP=1\nendif\n\n# xtensa has problems with nlr_push, use setjmp based implementation instead\nifeq ($(BR2_xtensa),y)\nMICROPYTHON_CFLAGS = -DMICROPY_NLR_SETJMP=1\nendif\n\n# When building from a tarball we don't have some of the dependencies that are in\n# the git repository as submodules\nMICROPYTHON_MAKE_OPTS += \\\n\tMICROPY_PY_BTREE=0 \\\n\tMICROPY_PY_USSL=0 \\\n\tCROSS_COMPILE=$(TARGET_CROSS) \\\n\tCFLAGS_EXTRA=$(MICROPYTHON_CFLAGS) \\\n\tCWARN=\n\ndefine MICROPYTHON_BUILD_CMDS\n\t$(MICROPYTHON_MAKE_ENV) $(MAKE) -C $(@D)/mpy-cross\n\t$(MICROPYTHON_MAKE_ENV) $(MAKE) -C $(@D)/ports/unix \\\n\t\t$(MICROPYTHON_MAKE_OPTS)\nendef\n\ndefine MICROPYTHON_INSTALL_TARGET_CMDS\n\t$(MICROPYTHON_MAKE_ENV) $(MAKE) -C $(@D)/ports/unix \\\n\t\t$(MICROPYTHON_MAKE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tPREFIX=/usr \\\n\t\tinstall\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/micropython-lib/Config.in",
    "content": "config BR2_PACKAGE_MICROPYTHON_LIB\n\tbool \"micropython-lib\"\n\tdepends on BR2_PACKAGE_MICROPYTHON\n\tselect BR2_PACKAGE_PCRE # runtime\n\thelp\n\t  Core Python libraries ported to MicroPython.\n\n\t  http://micropython.org\n"
  },
  {
    "path": "package/micropython-lib/micropython-lib.hash",
    "content": "# Locally computed\nsha256  66e15380eb109613263beb6825b8eecb9191088270c1a59e8c7d922dd57183c7  micropython-lib-1.9.3.tar.gz\nsha256  baed4196a4310c576c2010f0a49f987a49e63856df7cd45af11cb3571df4bf74  LICENSE\n"
  },
  {
    "path": "package/micropython-lib/micropython-lib.mk",
    "content": "################################################################################\n#\n# micropython-lib\n#\n################################################################################\n\nMICROPYTHON_LIB_VERSION = 1.9.3\nMICROPYTHON_LIB_SITE = $(call github,micropython,micropython-lib,v$(MICROPYTHON_LIB_VERSION))\nMICROPYTHON_LIB_LICENSE = Python-2.0 (some modules), MIT (everything else)\nMICROPYTHON_LIB_LICENSE_FILES = LICENSE\n\ndefine MICROPYTHON_LIB_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tPREFIX=$(TARGET_DIR)/usr/lib/micropython \\\n\t\tinstall\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/midori/0001-fix-bug-1492932.patch",
    "content": "Fix for https://bugs.launchpad.net/midori/+bug/1492932\nPatch status: upstream\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\n--- a/midori/midori-browser.c\t2015-07-11 16:03:43 +0000\n+++ b/midori/midori-browser.c\t2015-09-25 21:30:31 +0000\n@@ -5953,11 +5953,6 @@\n                       G_CALLBACK (midori_browser_destroy_cb), NULL);\n     gtk_window_set_role (GTK_WINDOW (browser), \"browser\");\n     gtk_window_set_icon_name (GTK_WINDOW (browser), MIDORI_STOCK_WEB_BROWSER);\n-    #if GTK_CHECK_VERSION (3, 4, 0)\n-    #ifndef HAVE_GRANITE\n-    gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (browser), TRUE);\n-    #endif\n-    #endif\n     vbox = gtk_vbox_new (FALSE, 0);\n     /* gtk_container_add (GTK_CONTAINER (browser), vbox);\n     gtk_widget_show (vbox); */\n\n--- a/midori/midori-view.c\t2015-07-06 21:26:46 +0000\n+++ b/midori/midori-view.c\t2015-09-25 21:30:31 +0000\n@@ -3495,9 +3495,6 @@\n     }\n     else\n         gtk_window_set_icon_name (GTK_WINDOW (window), icon_name);\n-    #if GTK_CHECK_VERSION (3, 4, 0)\n-    gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (window), TRUE);\n-    #endif\n     gtk_widget_set_size_request (GTK_WIDGET (inspector_view), 700, 100);\n     #if GTK_CHECK_VERSION (3, 0, 0)\n     scrolled = gtk_scrolled_window_new (NULL, NULL);\n\n--- a/midori/midori-window.vala\t2015-08-16 00:14:26 +0000\n+++ b/midori/midori-window.vala\t2015-09-25 21:30:31 +0000\n@@ -28,7 +28,6 @@\n                 toolbar.show_arrow = true;\n #if HAVE_GTK3\n                 toolbar.get_style_context ().add_class (\"primary-toolbar\");\n-                hide_titlebar_when_maximized = true;\n #endif\n                 toolbar.popup_context_menu.connect ((x, y, button) => {\n                     return button == 3 && context_menu (toolbar); });\n\n"
  },
  {
    "path": "package/midori/0002-gcr-for-x11-only.patch",
    "content": "GCR support only works/is useful with X11 support.\n\nReported upstream: https://bugs.launchpad.net/midori/+bug/1515985\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura midori-0.5.11.orig/CMakeLists.txt midori-0.5.11/CMakeLists.txt\n--- midori-0.5.11.orig/CMakeLists.txt\t2015-11-12 13:41:02.045898814 -0300\n+++ midori-0.5.11/CMakeLists.txt\t2015-11-12 14:00:09.765545018 -0300\n@@ -175,18 +175,14 @@\n     set(PKGS ${PKGS} zeitgeist-2.0)\n endif()\n \n-if (WIN32)\n-    add_definitions(\"-DGCR_VERSION=\\\"No\\\"\")\n-else ()\n-    if (USE_GTK3)\n-        pkg_check_modules(GCR REQUIRED gcr-3>=2.32)\n-    else ()\n-        pkg_check_modules(GCR REQUIRED gcr-base-3>=2.32)\n-    endif ()\n+if (USE_GTK3 AND X11)\n+    pkg_check_modules(GCR REQUIRED gcr-3>=2.32)\n     add_definitions(\"-DGCR_VERSION=\\\"${GCR_VERSION}\\\"\")\n     add_definitions(\"-DHAVE_GCR\")\n     set(OPTS_INCLUDE_DIRS ${OPTS_INCLUDE_DIRS} ${GCR_INCLUDE_DIRS})\n     set(OPTS_LIBRARIES ${OPTS_LIBRARIES} ${GCR_LIBRARIES})\n+else ()\n+    add_definitions(\"-DGCR_VERSION=\\\"No\\\"\")\n endif ()\n \n if (HALF_BRO_INCOM_WEBKIT2)\n"
  },
  {
    "path": "package/midori/Config.in",
    "content": "comment \"midori needs libgtk3 and a glibc toolchain w/ C++, gcc >= 7, host gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_LIBGTK3 || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_TOOLCHAIN_USES_GLIBC\n\nconfig BR2_PACKAGE_MIDORI\n\tbool \"midori\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS # host-librsvg\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt, gcr, gnupg2\n\tdepends on BR2_PACKAGE_LIBGTK3\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # webkitgtk\n\tdepends on BR2_INSTALL_LIBSTDCPP # webkitgtk\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # webkitgtk\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # webkitgtk\n\tdepends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS\n\t# GCR can only be used with the X11 backend\n\tselect BR2_PACKAGE_GCR if BR2_PACKAGE_LIBGTK3_X11\n\tselect BR2_PACKAGE_GRANITE\n\tselect BR2_PACKAGE_LIBSOUP\n\tselect BR2_PACKAGE_LIBSOUP_GNOME\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_WEBKITGTK\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Midori is a lightweight web browser based on WebKit\n\n\t  http://www.midori-browser.org/\n"
  },
  {
    "path": "package/midori/midori.hash",
    "content": "# From download link @ http://midori-browser.org/download/source/\nsha1\t64c86935028feb5f89d799c2acacaad67764da6f\tmidori_0.5.11_all_.tar.bz2\n\n# Locally computed\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING\n"
  },
  {
    "path": "package/midori/midori.mk",
    "content": "################################################################################\n#\n# midori\n#\n################################################################################\n\nMIDORI_VERSION = 0.5.11\nMIDORI_SOURCE = midori_$(MIDORI_VERSION)_all_.tar.bz2\nMIDORI_SITE = http://midori-browser.org/downloads\nMIDORI_LICENSE = LGPL-2.1+\nMIDORI_LICENSE_FILES = COPYING\nMIDORI_CPE_ID_VENDOR = midori-browser\nMIDORI_DEPENDENCIES = \\\n\thost-intltool \\\n\thost-librsvg \\\n\thost-pkgconf \\\n\thost-vala \\\n\thost-python \\\n\t$(if $(BR2_PACKAGE_LIBGTK3_X11),gcr) \\\n\tgranite \\\n\tlibgtk3 \\\n\tlibsoup \\\n\tlibxml2 \\\n\tsqlite \\\n\twebkitgtk \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\nMIDORI_CONF_OPTS = \\\n\t-DHALF_BRO_INCOM_WEBKIT2=ON \\\n\t-DUSE_GRANITE=ON \\\n\t-DUSE_GTK3=ON \\\n\t-DUSE_ZEITGEIST=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/mii-diag/0001-strchr.patch",
    "content": "Use the strrchr() function instead of the deprecated rindex()\nfunction.\n\n--- mii-diag-2.11.orig/mii-diag.c.orig\t2008-06-25 11:08:52.000000000 +1000\n+++ mii-diag-2.11.orig/mii-diag.c\t2005-03-27 03:56:33.000000000 +1000\n@@ -174,7 +174,7 @@\n {\n \tint c, errflag = 0;\n \tchar **spp, *ifname;\n-    char *progname = rindex(argv[0], '/') ? rindex(argv[0], '/')+1 : argv[0];\n+    char *progname = strrchr(argv[0], '/') ? strrchr(argv[0], '/')+1 : argv[0];\n \n \twhile ((c = getopt_long(argc, argv, shortopts, longopts, 0)) != EOF)\n \t\tswitch (c) {\n@@ -310,7 +310,7 @@\n \t\t\t\t\tstr = endstr+1;\n \t\t\t\telse {\n \t\t\t\t\tfprintf(stderr, \"Invalid driver parameter '%s'.\\n\", str);\n-\t\t\t\t\tstr = index(str, ',');\n+\t\t\t\t\tstr = strchr(str, ',');\n \t\t\t\t}\n \t\t\t} else if (endstr[0] == ',') {\n \t\t\t\tdata32[i] = newval;\n"
  },
  {
    "path": "package/mii-diag/Config.in",
    "content": "config BR2_PACKAGE_MII_DIAG\n\tbool \"mii-diag\"\n\thelp\n\t  mii-diag allows you to manipulate the MII registers of\n\t  network cards.\n\n\t  https://launchpad.net/ubuntu/+source/mii-diag\n"
  },
  {
    "path": "package/mii-diag/mii-diag.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/m/mii-diag/mii-diag_2.11-3.dsc\nsha256  c690e87e6010607593c1cc2ccd5c481eb3be179387220ad445d8ab83d73ad41c  mii-diag_2.11.orig.tar.gz\nsha256  b49fd3e7c0c446a949c3ca246cc441824d7ef5a61530f884756a82b0b2997190  mii-diag_2.11-3.diff.gz\nsha256  c83cf866874d6171fbea4e3786370483beb6d2898ac2ea91123b144effec7fcb  mii-diag.c\n"
  },
  {
    "path": "package/mii-diag/mii-diag.mk",
    "content": "################################################################################\n#\n# mii-diag\n#\n################################################################################\n\nMII_DIAG_VERSION = 2.11\nMII_DIAG_SOURCE = mii-diag_$(MII_DIAG_VERSION).orig.tar.gz\nMII_DIAG_PATCH = mii-diag_$(MII_DIAG_VERSION)-3.diff.gz\nMII_DIAG_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/m/mii-diag\nMII_DIAG_LICENSE = GPL # No version specified\nMII_DIAG_LICENSE_FILES = mii-diag.c\nMII_DIAG_CPE_ID_VENDOR = debian\n\nMII_DIAG_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS)\n\ndefine MII_DIAG_DEBIAN_PATCHES\n\tif [ -d $(@D)/debian/patches ]; then \\\n\t\t$(APPLY_PATCHES) $(@D) $(@D)/debian/patches \\*.patch; \\\n\tfi\nendef\n\nMII_DIAG_POST_PATCH_HOOKS = MII_DIAG_DEBIAN_PATCHES\n\ndefine MII_DIAG_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(MII_DIAG_MAKE_OPTS) -C $(@D) mii-diag\nendef\n\ndefine MII_DIAG_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install-mii-diag\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mimic/0001-Fix-linking-on-gcc-10.2.0-or-newer.patch",
    "content": "From 77b36eaeb2c38eba571b8db7e9bb0fd507774e6d Mon Sep 17 00:00:00 2001\nFrom: Kris Gesling <kris.gesling@mycroft.ai>\nDate: Tue, 11 May 2021 09:15:22 +0930\nSubject: [PATCH] Fix linking on gcc 10.2.0 or newer\n\nCo-authored-by: MichaelSabal <michaelsabal@users.noreply.github.com>\n\n[Retrieved from:\nhttps://github.com/MycroftAI/mimic1/commit/77b36eaeb2c38eba571b8db7e9bb0fd507774e6d]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n lang/cmu_indic_lang/cmu_indic_lang.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/lang/cmu_indic_lang/cmu_indic_lang.h b/lang/cmu_indic_lang/cmu_indic_lang.h\nindex 75ee46c..83e2afa 100644\n--- a/lang/cmu_indic_lang/cmu_indic_lang.h\n+++ b/lang/cmu_indic_lang/cmu_indic_lang.h\n@@ -51,7 +51,7 @@ void cmu_indic_lang_init(cst_voice *v);\n extern const cst_phoneset cmu_indic_phoneset;\n extern const cst_cart cmu_indic_phrasing_cart; \n \n-const cst_regex * const cst_rx_not_indic;\n+extern const cst_regex * const cst_rx_not_indic;\n \n #ifdef __cplusplus\n } /* extern \"C\" */\n"
  },
  {
    "path": "package/mimic/Config.in",
    "content": "comment \"mimic needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_MIMIC\n\tbool \"mimic\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Mimic is a fast, lightweight Text-to-speech engine developed\n\t  by Mycroft A.I. and VocaliD, based on Carnegie Mellon\n\t  University's Flite (Festival-Lite) software. Mimic takes in\n\t  text and reads it out loud to create a high quality voice.\n\n\t  https://github.com/MycroftAI/mimic\n\nif BR2_PACKAGE_MIMIC\n\nchoice\n\tprompt \"audio backend\"\n\tdefault BR2_PACKAGE_MIMIC_AUDIO_BACKEND_NONE\n\nconfig BR2_PACKAGE_MIMIC_AUDIO_BACKEND_NONE\n\tbool \"none\"\n\thelp\n\t  With no backend, mimic will only be able to produce .wav\n\t  files.\n\nconfig BR2_PACKAGE_MIMIC_AUDIO_BACKEND_ALSA\n\tbool \"alsa\"\n\tdepends on BR2_PACKAGE_ALSA_LIB\n\nconfig BR2_PACKAGE_MIMIC_AUDIO_BACKEND_PORTAUDIO\n\tbool \"alsa via portaudio\"\n\tdepends on BR2_PACKAGE_PORTAUDIO\n\nconfig BR2_PACKAGE_MIMIC_AUDIO_BACKEND_PULSEAUDIO\n\tbool \"pulseaudio\"\n\tdepends on BR2_PACKAGE_PULSEAUDIO\n\nendchoice\n\nendif # BR2_PACKAGE_MIMIC\n"
  },
  {
    "path": "package/mimic/mimic.hash",
    "content": "# Locally calculated\nsha256  725003c9972d5b67c49d5ea6a89cb26b63414ff2c7adbbaf9200cf9eb55f80eb  mimic-1.1.0.tar.gz\nsha256  c423c1c6d260091d80ee4c00f386a10fea39963a3f1530f2c245f15dd20324ee  COPYING\n"
  },
  {
    "path": "package/mimic/mimic.mk",
    "content": "################################################################################\n#\n# mimic\n#\n################################################################################\n\nMIMIC_VERSION = 1.1.0\nMIMIC_SITE = $(call github,MycroftAI,mimic,$(MIMIC_VERSION))\nMIMIC_LICENSE = MIT\nMIMIC_LICENSE_FILES = COPYING\n\nMIMIC_DEPENDENCIES = host-pkgconf\n\nifeq ($(BR2_PACKAGE_MIMIC_AUDIO_BACKEND_ALSA),y)\nMIMIC_AUDIO_BACKEND = alsa\nMIMIC_DEPENDENCIES += alsa-lib\nelse ifeq ($(BR2_PACKAGE_MIMIC_AUDIO_BACKEND_PORTAUDIO),y)\nMIMIC_AUDIO_BACKEND = portaudio\nMIMIC_DEPENDENCIES += portaudio\nelse ifeq ($(BR2_PACKAGE_MIMIC_AUDIO_BACKEND_PULSEAUDIO),y)\nMIMIC_AUDIO_BACKEND = pulseaudio\nMIMIC_DEPENDENCIES += pulseaudio\nelse ifeq ($(BR2_PACKAGE_MIMIC_AUDIO_BACKEND_NONE),y)\nMIMIC_AUDIO_BACKEND = none\nendif\n\nMIMIC_CONF_OPTS += --with-audio=$(MIMIC_AUDIO_BACKEND)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/minetest/Config.in",
    "content": "config BR2_PACKAGE_MINETEST\n\tbool \"minetest\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # irrlicht\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_XORG7 # irrlicht\n\tdepends on BR2_PACKAGE_HAS_LIBGL # irrlicht\n\tdepends on BR2_PACKAGE_LUAJIT\n\tselect BR2_PACKAGE_IRRLICHT\n\tselect BR2_PACKAGE_GMP\n\tselect BR2_PACKAGE_JSONCPP\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_ZLIB\n\t# At least one option must be enabled\n\tselect BR2_PACKAGE_MINETEST_CLIENT if !BR2_PACKAGE_MINETEST_SERVER\n\thelp\n\t  Minetest is a near-infinite-world block sandbox game and a\n\t  game engine, inspired by InfiniMiner, Minecraft, and the\n\t  like.\n\n\t  http://www.minetest.net\n\nif BR2_PACKAGE_MINETEST\n\nconfig BR2_PACKAGE_MINETEST_CLIENT\n\tbool \"minetest client\"\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_XLIB_LIBXXF86VM\n\thelp\n\t  Build Minetest client.\n\nconfig BR2_PACKAGE_MINETEST_SERVER\n\tbool \"minetest server\"\n\thelp\n\t  Build Minetest server.\n\nconfig BR2_PACKAGE_MINETEST_SOUND\n\tbool \"enable sound\"\n\tdepends on BR2_PACKAGE_MINETEST_CLIENT\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal\n\tselect BR2_PACKAGE_LIBVORBIS\n\tselect BR2_PACKAGE_OPENAL\n\ncomment \"sound support needs a toolchain w/ threads NPTL\"\n\tdepends on BR2_PACKAGE_MINETEST_CLIENT\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\nendif\n\ncomment \"minetest needs a toolchain w/ C++, gcc >= 4.9, threads\"\n\tdepends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS\n\ncomment \"minetest needs X11 and an OpenGL provider\"\n\tdepends on (BR2_INSTALL_LIBSTDCPP \\\n\t\t&& BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t&& BR2_TOOLCHAIN_HAS_THREADS)\n\tdepends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7\n"
  },
  {
    "path": "package/minetest/minetest.hash",
    "content": "# Locally calculated\nsha256  de9e4410583c845c104b4be25f9d0b8743d8573c120149b8910ae2519f9ab14e  minetest-5.4.1.tar.gz\n\nsha256  5bc4bb4ff369d5039bcfff5a83a378335240ca86c58299e7de25097153c70132  LICENSE.txt\n"
  },
  {
    "path": "package/minetest/minetest.mk",
    "content": "################################################################################\n#\n# minetest\n#\n################################################################################\n\nMINETEST_VERSION = 5.4.1\nMINETEST_SITE = $(call github,minetest,minetest,$(MINETEST_VERSION))\nMINETEST_LICENSE = LGPL-2.1+ (code), CC-BY-SA-3.0 (textures and sounds)\nMINETEST_LICENSE_FILES = LICENSE.txt\n\nMINETEST_DEPENDENCIES = gmp irrlicht jsoncpp luajit sqlite zlib\n\nMINETEST_CONF_OPTS = \\\n\t-DDEFAULT_RUN_IN_PLACE=OFF \\\n\t-DENABLE_GLES=OFF \\\n\t-DENABLE_LUAJIT=ON \\\n\t-DENABLE_CURSES=OFF \\\n\t-DAPPLY_LOCALE_BLACKLIST=OFF \\\n\t-DENABLE_SYSTEM_GMP=ON \\\n\t-DENABLE_SYSTEM_JSONCPP=ON \\\n\t-DBUILD_UNITTESTS=OFF\n\nifeq ($(BR2_PACKAGE_MINETEST_CLIENT),y)\nMINETEST_DEPENDENCIES += bzip2 jpeg libgl libpng xlib_libXxf86vm\nMINETEST_CONF_OPTS += -DBUILD_CLIENT=ON\nelse\nMINETEST_CONF_OPTS += -DBUILD_CLIENT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_MINETEST_SERVER),y)\nMINETEST_CONF_OPTS += -DBUILD_SERVER=ON\nelse\nMINETEST_CONF_OPTS += -DBUILD_SERVER=OFF\nendif\n\nifeq ($(BR2_PACKAGE_MINETEST_SOUND),y)\nMINETEST_DEPENDENCIES += libvorbis openal\nMINETEST_CONF_OPTS += -DENABLE_SOUND=ON\nelse\nMINETEST_CONF_OPTS += -DENABLE_SOUND=OFF\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nMINETEST_DEPENDENCIES += freetype\nMINETEST_CONF_OPTS += -DENABLE_FREETYPE=ON\nelse\nMINETEST_CONF_OPTS += -DENABLE_FREETYPE=OFF\nendif\n\nifeq ($(BR2_PACKAGE_HIREDIS),y)\nMINETEST_DEPENDENCIES += hiredis\nMINETEST_CONF_OPTS += -DENABLE_REDIS=ON\nelse\nMINETEST_CONF_OPTS += -DENABLE_REDIS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LEVELDB),y)\nMINETEST_DEPENDENCIES += leveldb\nMINETEST_CONF_OPTS += -DENABLE_LEVELDB=ON\nelse\nMINETEST_CONF_OPTS += -DENABLE_LEVELDB=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nMINETEST_DEPENDENCIES += libcurl\nMINETEST_CONF_OPTS += -DENABLE_CURL=ON\nelse\nMINETEST_CONF_OPTS += -DENABLE_CURL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBSPATIALINDEX),y)\nMINETEST_DEPENDENCIES += libspatialindex\nMINETEST_CONF_OPTS += -DENABLE_SPATIAL=ON\nelse\nMINETEST_CONF_OPTS += -DENABLE_SPATIAL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_POSTGRESQL),y)\nMINETEST_DEPENDENCIES += postgresql\nMINETEST_CONF_OPTS += -DENABLE_POSTGRESQL=ON\nelse\nMINETEST_CONF_OPTS += -DENABLE_POSTGRESQL=OFF\nendif\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nMINETEST_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES)\nMINETEST_CONF_OPTS += -DENABLE_GETTEXT=ON\nelse\nMINETEST_CONF_OPTS += -DENABLE_GETTEXT=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/minetest-game/Config.in",
    "content": "config BR2_PACKAGE_MINETEST_GAME\n\tbool \"minetest-game\"\n\tdepends on BR2_PACKAGE_MINETEST\n\thelp\n\t  The main subgame for the Minetest engine.\n\n\t  https://github.com/minetest/minetest_game\n"
  },
  {
    "path": "package/minetest-game/minetest-game.hash",
    "content": "# Locally calculated\nsha256  b4bfa0755b88230cf4bdb6af6a0951dd1248f6cdf87fecc340e43ac12c80b0b2  minetest-game-5.4.1.tar.gz\n\nsha256  f8a254e8d5f6b3ca3873f990986e86c864f943aa5dc9bf56808c5f4bfa509db0  LICENSE.txt\nsha256  ed2afed388c470e08edc1104e4ff6d12b68a32a76b8c52d760a99d4d2d7716f3  mods/beds/license.txt\nsha256  559749ba0d269b768e1b85bdac0f8b7a0cf100ecb3edd0df8529fe57cd4bfc0d  mods/binoculars/license.txt\nsha256  9e9dbe5236ba70d0337f9879b988c19c6a7b0c902eed202f775200b8bee6980d  mods/boats/license.txt\nsha256  e642798b595fb41901ae695326da9a167b0bd6b4055edec2396672f5f01bb16c  mods/bones/license.txt\nsha256  baf438bc48b7da1b8fc03d37d134473e1c1f33ffe2e926fa650e6d0c64872785  mods/bucket/license.txt\nsha256  01370a00e7b2157a07ee21fa4dac9cc108c7449442f612a3e55cfe18b5b03c2b  mods/butterflies/license.txt\nsha256  6196d390ee0b6331766219aa82f31613fffb62476c03cf960190ab8c232b8822  mods/carts/license.txt\nsha256  b6c3aca8da2f6c272fe431740dda0a349cff419f1f72e55c6de677379fc04169  mods/creative/license.txt\nsha256  f78424e0872260d3f3af98e74faf1bbe6b9387cd5464b7ae931d1fc1cc93223c  mods/default/license.txt\nsha256  c0c652890fc80af8eefedbcfe1cd0d16b13b14cd1c7105c9c2bc9abe8cf1620c  mods/doors/license.txt\nsha256  33d0b8726dd27c8f0c96d6dfd611e0e980bbdbb8075fac7476d055518319ec1c  mods/dungeon_loot/license.txt\nsha256  011ebc82e96df3b825777e7531cb5d34cfce1f6ca27b7d3c80793c033d7c4f4e  mods/dye/license.txt\nsha256  29a05b102726b9a3115f7ec06d5188dac7b1c005d8cf1c4d6dc2d5544405a45c  mods/env_sounds/license.txt\nsha256  bdb104cdbe72a27407ade35144a8d1d52dd60c3ca626b5a87555b9d5d5c8af98  mods/farming/license.txt\nsha256  61f826be9adee70ef0e37f3bf4891fecc4b027a21637b32981b98220723d6f37  mods/fire/license.txt\nsha256  01370a00e7b2157a07ee21fa4dac9cc108c7449442f612a3e55cfe18b5b03c2b  mods/fireflies/license.txt\nsha256  d92ac36a0235f4c02f8cfe2137d7d632bd53374c44ead97f20c152dddf475837  mods/flowers/license.txt\nsha256  ffbac006d197fcb8e36e9cdda638053ac80eef4e6446bbe36cb94bd28f54ba0b  mods/game_commands/license.txt\nsha256  857f64cd62c13e27f25363584342fe049885b16c6b2392f1ebd7c3a7fb6ca436  mods/give_initial_stuff/license.txt\nsha256  dcbab8d7dc4137789958d19471807b37447fd303bced310d7d76d901eefca8ff  mods/map/license.txt\nsha256  88385cd60d15c4fb4856c3c4c551c76c30958268c5c1160c1aa4e520c037a623  mods/player_api/license.txt\nsha256  0066e63d682d54a014ad3359794365a1abb87562d2b1e5e32093976d88c295b4  mods/screwdriver/license.txt\nsha256  b903866d052774e4127952690ce62ca26aa5bc4c2ddd48fceae501fa0d24ed74  mods/sethome/license.txt\nsha256  478b9944a446b4d88496d10736ddcd8ad5a3ca52f8b75f747315583d4012cb3c  mods/sfinv/license.txt\nsha256  e361fc900d9203859391d35c38c3284c91600d23c1617076c641ff7e9fe10b15  mods/spawn/license.txt\nsha256  eab4c0cb318bb83c13362047a5a0fc5cb650a4e561ceb5a9124e5a1253cbc21a  mods/stairs/license.txt\nsha256  e8593deed04ed4199ce9303db900f32276e0b629fd7f0089074d13370c12d00a  mods/tnt/license.txt\nsha256  a0814bccd28157a160049efeac03864ff4c4dd6a34bc9cfcd3cc62de66fb156a  mods/vessels/license.txt\nsha256  e9ebf1b4b170e64a0ea6e246edd03689aeb859d6560b8372a8081c004b30cb65  mods/walls/license.txt\nsha256  551b19e2c8b18c143301e090a1ceb5dc5d4ca243cad846de179d693439910816  mods/wool/license.txt\nsha256  c71155c9a68a5242223c5f814c1b9b1270492729b0ff0add770b6418bccf17c9  mods/xpanes/license.txt\n"
  },
  {
    "path": "package/minetest-game/minetest-game.mk",
    "content": "################################################################################\n#\n# minetest_game\n#\n################################################################################\n\nMINETEST_GAME_VERSION = 5.4.1\nMINETEST_GAME_SITE = $(call github,minetest,minetest_game,$(MINETEST_GAME_VERSION))\nMINETEST_GAME_LICENSE = LGPL-2.1+ (code), CC-BY-SA-2.0, CC-BY-SA-3.0, \\\n\tCC-BY-SA-4.0, MIT, CC0 1.0, CC-BY-2.0 (mods)\nMINETEST_GAME_LICENSE_FILES = LICENSE.txt \\\n\tmods/beds/license.txt \\\n\tmods/binoculars/license.txt \\\n\tmods/boats/license.txt \\\n\tmods/bones/license.txt \\\n\tmods/bucket/license.txt \\\n\tmods/butterflies/license.txt \\\n\tmods/carts/license.txt \\\n\tmods/creative/license.txt \\\n\tmods/default/license.txt \\\n\tmods/doors/license.txt \\\n\tmods/dungeon_loot/license.txt \\\n\tmods/dye/license.txt \\\n\tmods/env_sounds/license.txt \\\n\tmods/farming/license.txt \\\n\tmods/fire/license.txt \\\n\tmods/fireflies/license.txt \\\n\tmods/flowers/license.txt \\\n\tmods/game_commands/license.txt \\\n\tmods/give_initial_stuff/license.txt \\\n\tmods/map/license.txt \\\n\tmods/player_api/license.txt \\\n\tmods/screwdriver/license.txt \\\n\tmods/sethome/license.txt \\\n\tmods/sfinv/license.txt \\\n\tmods/spawn/license.txt \\\n\tmods/stairs/license.txt \\\n\tmods/tnt/license.txt \\\n\tmods/vessels/license.txt \\\n\tmods/walls/license.txt \\\n\tmods/wool/license.txt \\\n\tmods/xpanes/license.txt\n\ndefine MINETEST_GAME_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/share/minetest/games/minetest_game\n\tcp -dpfr $(@D)/* $(TARGET_DIR)/usr/share/minetest/games/minetest_game\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mini-snmpd/0001-linux.c-fix-musl-build.patch",
    "content": "From 73fa408f51ec25121075aaccac9c9db1c68567cd Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 12 Mar 2020 10:02:18 +0100\nSubject: [PATCH] linux.c: fix musl build\n\nRemove include on linux/if_link.h to avoid the following build failure\nwith musl:\n\nIn file included from /home/buildroot/autobuild/instance-2/output-1/host/i586-buildroot-linux-musl/sysroot/usr/include/linux/kernel.h:4,\n                 from /home/buildroot/autobuild/instance-2/output-1/host/i586-buildroot-linux-musl/sysroot/usr/include/linux/netlink.h:4,\n                 from /home/buildroot/autobuild/instance-2/output-1/host/i586-buildroot-linux-musl/sysroot/usr/include/linux/if_link.h:5,\n                 from linux.c:21:\n/home/buildroot/autobuild/instance-2/output-1/host/i586-buildroot-linux-musl/sysroot/usr/include/linux/sysinfo.h:7:8: error: redefinition of 'struct sysinfo'\n struct sysinfo {\n        ^~~~~~~\nIn file included from linux.c:19:\n/home/buildroot/autobuild/instance-2/output-1/host/i586-buildroot-linux-musl/sysroot/usr/include/sys/sysinfo.h:10:8: note: originally defined here\n struct sysinfo {\n        ^~~~~~~\n  CC       mini_snmpd-globals.o\n\nFixes:\n - http://autobuild.buildroot.org/results/6903a0f685076b4a2c2824de6158da40e9e712d8\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/troglobit/mini-snmpd/commit/73fa408f51ec25121075aaccac9c9db1c68567cd]\n---\n linux.c | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/linux.c b/linux.c\nindex a657912..86a7085 100644\n--- a/linux.c\n+++ b/linux.c\n@@ -18,7 +18,6 @@\n #include <netpacket/packet.h>\n #include <sys/sysinfo.h>\n #include <sys/socket.h>\n-#include <linux/if_link.h>\n #include <sys/ioctl.h>\n #include <sys/types.h>\n #include <sys/time.h>\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/mini-snmpd/Config.in",
    "content": "config BR2_PACKAGE_MINI_SNMPD\n\tbool \"mini-snmpd\"\n\thelp\n\t  Mini SNMPd is a minimal implementation targeted at small or\n\t  embedded UNIX systems with limited resources\n\n\t  http://troglobit.com/mini-snmpd.html\n"
  },
  {
    "path": "package/mini-snmpd/mini-snmpd",
    "content": "# Require client authentication, thus SNMP version 2c\nEXTRA_PARAMS=-a\n"
  },
  {
    "path": "package/mini-snmpd/mini-snmpd.hash",
    "content": "# Locally calculated\nsha256 de00c475a3c70c56f3ee97cd683cb71009d3521d60b1f589c5a91b4671ede9f3 mini-snmpd-1.6.tar.gz\nsha256 8a43b895972a24567297f44f35dab0f5f9ed3b7db6dac0bf6094075b27ab9d56 COPYING\n"
  },
  {
    "path": "package/mini-snmpd/mini-snmpd.mk",
    "content": "################################################################################\n#\n# mini-snmpd\n#\n################################################################################\n\nMINI_SNMPD_VERSION = 1.6\nMINI_SNMPD_SITE = $(call github,troglobit,mini-snmpd,v$(MINI_SNMPD_VERSION))\nMINI_SNMPD_LICENSE = GPL-2.0\nMINI_SNMPD_LICENSE_FILES = COPYING\nMINI_SNMPD_CPE_ID_VENDOR = minisnmpd_project\nMINI_SNMPD_CPE_ID_PRODUCT = minisnmpd\nMINI_SNMPD_AUTORECONF = YES\nMINI_SNMPD_DEPENDENCIES = host-pkgconf\n\ndefine MINI_SNMPD_INSTALL_ETC_DEFAULT\n\t$(INSTALL) -D -m 644 package/mini-snmpd/mini-snmpd \\\n\t\t$(TARGET_DIR)/etc/default/mini-snmpd\nendef\n\nMINI_SNMPD_POST_INSTALL_TARGET_HOOKS += MINI_SNMPD_INSTALL_ETC_DEFAULT\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/minicom/Config.in",
    "content": "config BR2_PACKAGE_MINICOM\n\tbool \"minicom\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Minicom is a menu driven communications program. It emulates\n\t  ANSI and VT102 terminals. It has a dialing directory and auto\n\t  zmodem download.\n\n\t  https://salsa.debian.org/minicom-team/minicom\n\ncomment \"minicom needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/minicom/minicom.hash",
    "content": "# Locally calculated\nsha256  38cea30913a20349326ff3f1763ee1512b7b41601c24f065f365e18e9db0beba  minicom-2.8.tar.bz2\nsha256  cf80a758014eefbf068afffe3d462fc34ff4f528527524d8e100329c42094e15  COPYING\n"
  },
  {
    "path": "package/minicom/minicom.mk",
    "content": "################################################################################\n#\n# minicom\n#\n################################################################################\n\nMINICOM_VERSION = 2.8\nMINICOM_SOURCE = minicom-$(MINICOM_VERSION).tar.bz2\nMINICOM_SITE = \\\n\thttps://salsa.debian.org/minicom-team/minicom/-/archive/$(MINICOM_VERSION)\nMINICOM_LICENSE = GPL-2.0+\nMINICOM_LICENSE_FILES = COPYING\nMINICOM_CPE_ID_VENDOR = minicom_project\n\nMINICOM_DEPENDENCIES = ncurses $(if $(BR2_ENABLE_LOCALE),,libiconv) \\\n\t$(TARGET_NLS_DEPENDENCIES) host-pkgconf\n\nMINICOM_CONF_OPTS = \\\n\t--enable-dfl-port=/dev/ttyS1 \\\n\t--enable-lock-dir=/var/lock\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/minidlna/Config.in",
    "content": "config BR2_PACKAGE_MINIDLNA\n\tbool \"minidlna\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR # flac\n\tdepends on BR2_USE_MMU # fork\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_FLAC\n\tselect BR2_PACKAGE_LIBVORBIS # selects libogg\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_LIBID3TAG # selects zlib\n\tselect BR2_PACKAGE_LIBEXIF\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  MiniDLNA (aka ReadyDLNA) is server software with the aim of\n\t  being fully compliant with DLNA/UPnP-AV clients.\n\n\t  http://minidlna.sourceforge.net/\n\ncomment \"minidlna needs a toolchain w/ dynamic library, threads, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/minidlna/S60minidlnad",
    "content": "#!/bin/sh\n#\n# minidlnad        Starts minidlnad.\n#\n\nstart() {\n\tprintf \"Starting minidlna: \"\n\tumask 077\n\tstart-stop-daemon -S -q -p /var/run/minidlna/minidlna.pid \\\n\t\t--exec /usr/sbin/minidlnad -- \"$@\"\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping minidlna: \"\n\tstart-stop-daemon -K -q -p /var/run/minidlna/minidlna.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\t# Sleep needed for minidlna to restart properly\n\tsleep 1\n\tstart \"$@\"\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  force-reload)\n\trestart -R\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart|force-reload}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/minidlna/minidlna.hash",
    "content": "# From https://sourceforge.net/projects/minidlna/files/minidlna/1.3.0/\nsha1  6563a881884879b2aef52611934e08bb42985964  minidlna-1.3.0.tar.gz\n# Locally computed\nsha256  47d9b06b4c48801a4c1112ec23d24782728b5495e95ec2195bbe5c81bc2d3c63  minidlna-1.3.0.tar.gz\nsha256  79146b7f558e56510b9a714ff75318c05ab93aeccfd6597497b9bce212cf92ea  COPYING\nsha256  94876d7886116e176e702b4902bd9f19731a6883db5f229ac2a7058a22aa6529  LICENCE.miniupnpd\n"
  },
  {
    "path": "package/minidlna/minidlna.mk",
    "content": "################################################################################\n#\n# minidlna\n#\n################################################################################\n\nMINIDLNA_VERSION = 1.3.0\nMINIDLNA_SITE = https://downloads.sourceforge.net/project/minidlna/minidlna/$(MINIDLNA_VERSION)\nMINIDLNA_LICENSE = GPL-2.0, BSD-3-Clause\nMINIDLNA_LICENSE_FILES = COPYING LICENCE.miniupnpd\nMINIDLNA_CPE_ID_VENDOR = readymedia_project\nMINIDLNA_CPE_ID_PRODUCT = readymedia\nMINIDLNA_SELINUX_MODULES = minidlna\n\nMINIDLNA_DEPENDENCIES = \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\tffmpeg flac libvorbis libogg libid3tag libexif jpeg sqlite \\\n\thost-xutil_makedepend\n\nMINIDLNA_CONF_OPTS = \\\n\t--disable-static\n\ndefine MINIDLNA_INSTALL_CONF\n\t$(INSTALL) -D -m 644 $(@D)/minidlna.conf $(TARGET_DIR)/etc/minidlna.conf\nendef\n\nMINIDLNA_POST_INSTALL_TARGET_HOOKS += MINIDLNA_INSTALL_CONF\n\ndefine MINIDLNA_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/minidlna/S60minidlnad \\\n\t\t$(TARGET_DIR)/etc/init.d/S60minidlnad\nendef\n\ndefine MINIDLNA_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/minidlna/minidlnad.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/minidlnad.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/minidlna/minidlnad.service",
    "content": "[Unit]\nDescription=minidlna server\nAfter=network.target\n\n[Service]\nType=forking\nExecStart=/usr/sbin/minidlnad\nPIDFile=/run/minidlna/minidlna.pid\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/minimodem/Config.in",
    "content": "config BR2_PACKAGE_MINIMODEM\n\tbool \"minimodem\"\n\tselect BR2_PACKAGE_FFTW\n\tselect BR2_PACKAGE_FFTW_SINGLE\n\tselect BR2_PACKAGE_LIBSNDFILE if !BR2_PACKAGE_ALSA_LIB_PCM && !BR2_PACKAGE_PULSEAUDIO\n\thelp\n\t  Minimodem is a command-line program which decodes (or\n\t  generates) audio modem tones at any specified baud rate,\n\t  using various framing protocols. It acts a general-purpose\n\t  software FSK modem, and includes support for various\n\t  standard FSK protocols such as Bell103, Bell202, RTTY,\n\t  TTY/TDD NOAA SAME, and Caller-ID.\n\n\t  http://www.whence.com/minimodem/\n"
  },
  {
    "path": "package/minimodem/minimodem.hash",
    "content": "sha256 f8cca4db8e3f284d67f843054d6bb4d88a3db5e77b26192410e41e9a06f4378e  minimodem-0.24.tar.gz\nsha256 c298178753129680ef6d3112f0f8b61acc405c86c1997dfe59735257988f8b33  COPYING\n"
  },
  {
    "path": "package/minimodem/minimodem.mk",
    "content": "################################################################################\n#\n# minimodem\n#\n################################################################################\n\nMINIMODEM_VERSION = 0.24\nMINIMODEM_SITE = http://www.whence.com/minimodem\nMINIMODEM_LICENSE = GPL-3.0+\nMINIMODEM_LICENSE_FILES = COPYING\n\nMINIMODEM_DEPENDENCIES = fftw-single host-pkgconf\n\nifeq ($(BR2_PACKAGE_ALSA_LIB_PCM),y)\nMINIMODEM_DEPENDENCIES += alsa-lib\nMINIMODEM_CONF_OPTS += --with-alsa\nelse\nMINIMODEM_CONF_OPTS += --without-alsa\nendif\n\nifeq ($(BR2_PACKAGE_PULSEAUDIO),y)\nMINIMODEM_DEPENDENCIES += pulseaudio\nMINIMODEM_CONF_OPTS += --with-pulseaudio\nelse\nMINIMODEM_CONF_OPTS += --without-pulseaudio\nendif\n\nifeq ($(BR2_PACKAGE_LIBSNDFILE),y)\nMINIMODEM_DEPENDENCIES += libsndfile\nMINIMODEM_CONF_OPTS += --with-sndfile\nelse\nMINIMODEM_CONF_OPTS += --without-sndfile\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/minissdpd/Config.in",
    "content": "config BR2_PACKAGE_MINISSDPD\n\tbool \"minissdpd\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBNFNETLINK\n\thelp\n\t  SSDP managing daemon. Designed to work with miniupnpc,\n\t  miniupnpd, minidlna, etc.\n\n\t  http://miniupnp.free.fr/\n"
  },
  {
    "path": "package/minissdpd/S50minissdpd",
    "content": "#!/bin/sh\n\nNAME=minissdpd\nPIDFILE=/var/run/$NAME.pid\nDAEMON=/usr/sbin/$NAME\nCFGFILE=/etc/default/$NAME\n\nIFACE=eth0\n\n# Read configuration variable file if it is present\nif [ -f $CFGFILE ]; then\n        . $CFGFILE\nfi\n\nDAEMON_ARGS=\"-i $IFACE\"\n\nstart() {\n\tprintf \"Starting $NAME: \"\n\tstart-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping $NAME: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/minissdpd/minissdpd.hash",
    "content": "# Locally computed:\nsha256  177ab1907cc0fd20c8cafd13ca8674c7ec1828aa6101da9bb066408ccada7350  minissdpd-1.5.20200928.tar.gz\nsha256  00c8368dd1574b025df65f24f61c32d1297ff9b6dc695fda964b1b1efc7a53d3  LICENSE\n"
  },
  {
    "path": "package/minissdpd/minissdpd.mk",
    "content": "################################################################################\n#\n# minissdpd\n#\n################################################################################\n\nMINISSDPD_VERSION = 1.5.20200928\nMINISSDPD_SITE = http://miniupnp.free.fr/files\nMINISSDPD_LICENSE = BSD-3-Clause\nMINISSDPD_LICENSE_FILES = LICENSE\nMINISSDPD_CPE_ID_VENDOR = miniupnp_project\nMINISSDPD_SELINUX_MODULES = minissdpd\nMINISSDPD_DEPENDENCIES = libnfnetlink\n\ndefine MINISSDPD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -D_GNU_SOURCE\" \\\n\t\t-C $(@D)\nendef\n\ndefine MINISSDPD_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tPREFIX=$(TARGET_DIR) install\nendef\n\n# Use dedicated init scripts for systemV and systemd instead of using\n# minissdpd.init.d.script as it is not compatible with buildroot init system\ndefine MINISSDPD_INSTALL_INIT_SYSV\n\t$(RM) $(TARGET_DIR)/etc/init.d/minissdpd\n\t$(INSTALL) -D -m 0755 package/minissdpd/S50minissdpd \\\n\t\t$(TARGET_DIR)/etc/init.d/S50minissdpd\nendef\n\ndefine MINISSDPD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/minissdpd/minissdpd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/minissdpd.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/minissdpd/minissdpd.service",
    "content": "[Unit]\nDescription=SSDP managing daemon\nAfter=network.target\n\n[Service]\nEnvironment=\"IFACE=eth0\"\nEnvironmentFile=/etc/default/minissdpd\nExecStart=/usr/sbin/minissdpd -i $IFACE\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/minizip/Config.in",
    "content": "config BR2_PACKAGE_MINIZIP\n\tbool \"minizip\"\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Enables to extract files from a .zip archive file.\n\t  It is compatible with PKZip 2.04g, WinZip, InfoZip,\n\t  MimarSinan Codex Suite 2002 tools, and compatible sofware.\n\n\t  https://github.com/nmoinvaz/minizip\n\nconfig BR2_PACKAGE_MINIZIP_DEMOS\n\tbool \"minizip\"\n\tdepends on BR2_PACKAGE_MINIZIP\n\thelp\n\t  Enable minizip binary tool.\n\ncomment \"minizip needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/minizip/minizip.hash",
    "content": "# Locally computed\nsha256  5f1dd0d38adbe9785cb9c4e6e47738c109d73a0afa86e58c4025ce3e2cc504ed  minizip-3.0.3.tar.gz\nsha256  675181c03fc1302a1c8554c00f7be9bb420c5dbc9dcc2013433cec144413de03  LICENSE\n"
  },
  {
    "path": "package/minizip/minizip.mk",
    "content": "################################################################################\n#\n# minizip\n#\n################################################################################\n\nMINIZIP_VERSION = 3.0.3\nMINIZIP_SITE = $(call github,nmoinvaz,minizip,$(MINIZIP_VERSION))\nMINIZIP_DEPENDENCIES = host-pkgconf\nMINIZIP_INSTALL_STAGING = YES\nMINIZIP_CONF_OPTS = \\\n\t$(if $(BR2_PACKAGE_MINIZIP_DEMOS),-DMZ_BUILD_TEST=ON) \\\n\t-DMZ_COMPAT=OFF \\\n\t-DMZ_FETCH_LIBS=OFF\nMINIZIP_LICENSE = Zlib\nMINIZIP_LICENSE_FILES = LICENSE\nMINIZIP_CPE_ID_VENDOR = minizip_project\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nMINIZIP_DEPENDENCIES += bzip2\nMINIZIP_CONF_OPTS += -DMZ_BZIP2=ON\nelse\nMINIZIP_CONF_OPTS += -DMZ_BZIP2=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nMINIZIP_DEPENDENCIES += libiconv\nMINIZIP_CONF_OPTS += -DMZ_ICONV=ON\nelse\nMINIZIP_CONF_OPTS += -DMZ_ICONV=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBBSD),y)\nMINIZIP_DEPENDENCIES += libbsd\nMINIZIP_CONF_OPTS += -DMZ_LIBBSD=ON\nelse\nMINIZIP_CONF_OPTS += -DMZ_LIBBSD=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nMINIZIP_DEPENDENCIES += openssl\nMINIZIP_CONF_OPTS += \\\n\t-DMZ_OPENSSL=ON \\\n\t-DMZ_PKCRYPT=ON \\\n\t-DMZ_WZAES=ON\nelse\nMINIZIP_CONF_OPTS += \\\n\t-DMZ_OPENSSL=OFF \\\n\t-DMZ_PKCRYPT=OFF \\\n\t-DMZ_WZAES=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nMINIZIP_DEPENDENCIES += xz\nMINIZIP_CONF_OPTS += -DMZ_LZMA=ON\nelse\nMINIZIP_CONF_OPTS += -DMZ_LZMA=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nMINIZIP_DEPENDENCIES += zlib\nMINIZIP_CONF_OPTS += -DMZ_ZLIB=ON\nelse\nMINIZIP_CONF_OPTS += -DMZ_ZLIB=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nMINIZIP_DEPENDENCIES += zstd\nMINIZIP_CONF_OPTS += -DMZ_ZSTD=ON\nelse\nMINIZIP_CONF_OPTS += -DMZ_ZSTD=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/miraclecast/Config.in",
    "content": "config BR2_PACKAGE_MIRACLECAST\n\tbool \"miraclecast\"\n\tdepends on BR2_PACKAGE_SYSTEMD\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_GSTREAMER1\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  The MiracleCast project provides software to connect external\n\t  monitors to your system via Wifi. It is compatible to the\n\t  Wifi-Display specification also known as Miracast. MiracleCast\n\t  implements the Display-Source as well as Display-Sink side.\n\n\t  https://github.com/albfan/miraclecast\n\ncomment \"miraclecast needs systemd and a glibc toolchain w/ threads and wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_USE_WCHAR \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_SYSTEMD\n"
  },
  {
    "path": "package/miraclecast/miraclecast.hash",
    "content": "# Locally calculated\nsha256  e11440f782519663db367285dd54b53eb5feb78682dac42bd90230222de9f0fd  miraclecast-c94be167c85c6ec8badd7ac79e3dea2e0b73225c.tar.gz\nsha256  66bdcc8bcbd1d5ee336c4c8e8749ea538e17b0c0e22b0f705025deb1e912a6d3  COPYING\nsha256  8e136a0e16783d79792e6a57a1422a40acea2e18affb5e2cecb858382f8b0a6c  LICENSE_gdhcp\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  LICENSE_htable\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSE_lgpl\n"
  },
  {
    "path": "package/miraclecast/miraclecast.mk",
    "content": "################################################################################\n#\n# miraclecast\n#\n################################################################################\n\nMIRACLECAST_VERSION = c94be167c85c6ec8badd7ac79e3dea2e0b73225c\nMIRACLECAST_SITE = $(call github,albfan,miraclecast,$(MIRACLECAST_VERSION))\nMIRACLECAST_LICENSE = LGPL-2.1+, GPL-2.0 (gdhcp)\nMIRACLECAST_LICENSE_FILES = COPYING LICENSE_gdhcp LICENSE_htable LICENSE_lgpl\nMIRACLECAST_DEPENDENCIES = host-pkgconf systemd gstreamer1 \\\n\treadline libglib2\n# Straight out the repository, no ./configure\nMIRACLECAST_AUTORECONF = YES\n\ndefine MIRACLECAST_INSTALL_DBUS_POLICY\n\t$(INSTALL) -m 0644 -D \\\n\t\t$(@D)/res/org.freedesktop.miracle.conf \\\n\t\t$(TARGET_DIR)/etc/dbus-1/system.d/org.freedesktop.miracle.conf\nendef\nMIRACLECAST_POST_INSTALL_TARGET_HOOKS += MIRACLECAST_INSTALL_DBUS_POLICY\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mjpegtools/Config.in",
    "content": "config BR2_PACKAGE_MJPEGTOOLS\n\tbool \"mjpegtools\"\n\tdepends on BR2_USE_MMU # fork\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_JPEG\n\thelp\n\t  The mjpegtools programs are a set of tools\n\t  that can do recording of videos and playback,\n\t  simple cut-and-paste editing and the MPEG\n\t  compression of audio and video under Linux.\n\n\t  http://mjpeg.sourceforge.net\n\nconfig BR2_PACKAGE_MJPEGTOOLS_SIMD_SUPPORT\n\tbool\n\tdefault y if BR2_X86_CPU_HAS_MMX\n\tdefault y if BR2_POWERPC_CPU_HAS_ALTIVEC\n\ncomment \"mjpegtools needs a toolchain w/ C++, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/mjpegtools/mjpegtools.hash",
    "content": "# From http://sourceforge.net/projects/mjpeg/files/mjpegtools/2.2.1/\nmd5  168e0131c0b8a2e31df7a73eb602fc32  mjpegtools-2.2.1.tar.gz\nsha1  26e980912cd06f31033964acbc4b8d1932788bfc  mjpegtools-2.2.1.tar.gz\n# Locally computed\nsha256  b180536d7d9960b05e0023a197b00dcb100929a49aab71d19d55f4a1b210f49a  mjpegtools-2.2.1.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/mjpegtools/mjpegtools.mk",
    "content": "################################################################################\n#\n# mjpegtools\n#\n################################################################################\n\nMJPEGTOOLS_VERSION = 2.2.1\nMJPEGTOOLS_SITE = http://sourceforge.net/projects/mjpeg/files/mjpegtools/$(MJPEGTOOLS_VERSION)\nMJPEGTOOLS_DEPENDENCIES = host-pkgconf jpeg\nMJPEGTOOLS_INSTALL_STAGING = YES\nMJPEGTOOLS_LICENSE = GPL-2.0+\nMJPEGTOOLS_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_MJPEGTOOLS_SIMD_SUPPORT),y)\nMJPEGTOOLS_CONF_OPTS += --enable-simd-accel\nelse\nMJPEGTOOLS_CONF_OPTS += --disable-simd-accel\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nMJPEGTOOLS_CONF_OPTS += --with-libpng\nMJPEGTOOLS_DEPENDENCIES += libpng\nelse\nMJPEGTOOLS_CONF_OPTS += --without-libpng\nendif\n\n# expects X11 backend in sdl\nifeq ($(BR2_PACKAGE_SDL_X11),y)\nMJPEGTOOLS_CONF_OPTS += --with-libsdl\nMJPEGTOOLS_DEPENDENCIES += sdl\nelse\nMJPEGTOOLS_CONF_OPTS += --without-libsdl\nendif\n\nifeq ($(BR2_PACKAGE_SDL_GFX),y)\nMJPEGTOOLS_CONF_OPTS += --with-sdlgfx\nMJPEGTOOLS_DEPENDENCIES += sdl_gfx\nelse\nMJPEGTOOLS_CONF_OPTS += --without-sdlgfx\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)\nMJPEGTOOLS_CONF_OPTS += --with-x\nMJPEGTOOLS_DEPENDENCIES += xlib_libX11\nelse\nMJPEGTOOLS_CONF_OPTS += --without-x\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXXF86DGA),y)\nMJPEGTOOLS_CONF_OPTS += --with-dga\nMJPEGTOOLS_DEPENDENCIES += xlib_libXxf86dga\nelse\nMJPEGTOOLS_CONF_OPTS += --without-dga\nendif\n\nifeq ($(BR2_PACKAGE_LIBGTK2),y)\nMJPEGTOOLS_CONF_OPTS += --with-gtk\nMJPEGTOOLS_DEPENDENCIES += libgtk2\nelse\nMJPEGTOOLS_CONF_OPTS += --without-gtk\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mjpg-streamer/Config.in",
    "content": "config BR2_PACKAGE_MJPG_STREAMER\n\tbool \"mjpg-streamer\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 # V4L2_EVENT_SOURCE_CHANGE\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # plugins need dlopen()\n\tselect BR2_PACKAGE_JPEG\n\thelp\n\t  MJPG-streamer takes JPGs from Linux-UVC compatible webcams,\n\t  filesystem or other input plugins and streams them as\n\t  M-JPEG via HTTP to webbrowsers, VLC and other software.\n\n\t  https://github.com/jacksonliam/mjpg-streamer\n\ncomment \"mjpg-streamer needs a toolchain w/ threads, headers >= 3.16, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/mjpg-streamer/mjpg-streamer.hash",
    "content": "# Locally computed\nsha256 5b427b07c03c2c0468cc782daf1510d315141170246828fcbb7c07f927879973  mjpg-streamer-5a6e0a2db163e6ae9461552b59079870d0959340.tar.gz\nsha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  mjpg-streamer-experimental/LICENSE\n"
  },
  {
    "path": "package/mjpg-streamer/mjpg-streamer.mk",
    "content": "################################################################################\n#\n# mjpg-streamer\n#\n################################################################################\n\nMJPG_STREAMER_VERSION = 5a6e0a2db163e6ae9461552b59079870d0959340\nMJPG_STREAMER_SITE = $(call github,jacksonliam,mjpg-streamer,$(MJPG_STREAMER_VERSION))\nMJPG_STREAMER_SUBDIR = mjpg-streamer-experimental\nMJPG_STREAMER_LICENSE = GPL-2.0+\nMJPG_STREAMER_LICENSE_FILES = $(MJPG_STREAMER_SUBDIR)/LICENSE\nMJPG_STREAMER_DEPENDENCIES = jpeg\n\nifeq ($(BR2_PACKAGE_LIBGPHOTO2),y)\nMJPG_STREAMER_CONF_OPTS += -DPLUGIN_INPUT_PTP2=ON\nMJPG_STREAMER_DEPENDENCIES += host-pkgconf libgphoto2\nelse\nMJPG_STREAMER_CONF_OPTS += -DPLUGIN_INPUT_PTP2=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBV4L),y)\nMJPG_STREAMER_DEPENDENCIES += libv4l\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_LIB_HIGHGUI)$(BR2_PACKAGE_OPENCV3_LIB_IMGPROC)$(BR2_PACKAGE_OPENCV3_LIB_VIDEOIO),yyy)\nMJPG_STREAMER_CONF_OPTS += \\\n\t-DPLUGIN_INPUT_OPENCV=ON \\\n\t-DPLUGIN_CVFILTER_CPP=OFF \\\n\t-DPLUGIN_CVFILTER_PY=OFF\nMJPG_STREAMER_DEPENDENCIES += host-pkgconf opencv3\nelse\nMJPG_STREAMER_CONF_OPTS += -DPLUGIN_INPUT_OPENCV=OFF\nendif\n\nifeq ($(BR2_PACKAGE_PROTOBUF_C)$(BR2_PACKAGE_ZEROMQ),yy)\nMJPG_STREAMER_CONF_OPTS += -DPLUGIN_OUTPUT_ZMQSERVER=ON\nMJPG_STREAMER_DEPENDENCIES += host-pkgconf protobuf-c zeromq\nelse\nMJPG_STREAMER_CONF_OPTS += -DPLUGIN_OUTPUT_ZMQSERVER=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SDL),y)\nMJPG_STREAMER_CONF_OPTS += -DPLUGIN_OUTPUT_VIEWER=ON\nMJPG_STREAMER_DEPENDENCIES += host-pkgconf sdl\nelse\nMJPG_STREAMER_CONF_OPTS += -DPLUGIN_OUTPUT_VIEWER=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/mkpasswd/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_MKPASSWD\n\tbool \"host mkpasswd\"\n"
  },
  {
    "path": "package/mkpasswd/config.h",
    "content": "/* Program version */\n#define VERSION \"5.0.26\"\n\n/* Configurable features */\n\n/* Always hide legal disclaimers */\n#undef ALWAYS_HIDE_DISCL\n\n/* Default server */\n#define DEFAULTSERVER   \"whois.arin.net\"\n\n/* Configuration file */\n/*\n#define CONFIG_FILE \"/etc/whois.conf\"\n*/\n\n\n/* autoconf in cpp macros */\n#ifdef linux\n# define ENABLE_NLS\n#endif\n\n#ifdef __FreeBSD__\n/* which versions? */\n# define HAVE_GETOPT_LONG\n# define HAVE_GETADDRINFO\n# define ENABLE_NLS\n# ifndef LOCALEDIR\n#  define LOCALEDIR \"/usr/local/share/locale\"\n# endif\n#endif\n\n/* needs unistd.h */\n#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 200112L\n# define HAVE_GETADDRINFO\n# define HAVE_REGEXEC\n#endif\n\n#if defined __APPLE__ && defined __MACH__\n# define HAVE_GETOPT_LONG\n# define HAVE_GETADDRINFO\n#endif\n\n#if defined __GLIBC__\n# define HAVE_GETOPT_LONG\n# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1\n#  define HAVE_GETADDRINFO\n# endif\n# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 7\n#  define HAVE_SHA_CRYPT\n# endif\n#endif\n\n/* Unknown versions of Solaris */\n#if defined __SVR4 && defined __sun\n# define HAVE_SHA_CRYPT\n# define HAVE_SOLARIS_CRYPT_GENSALT\n#endif\n\n/* FIXME: which systems lack this? */\n#define HAVE_GETTIMEOFDAY\n/* FIXME: disabled because it does not parse addresses with a netmask length.\n * The code using it needs to be either fixed or removed.\n#define HAVE_INET_PTON\n*/\n\n/*\n * Please send patches to correctly ignore old releases which lack a RNG\n * and add more systems which have one.\n */\n#ifdef RANDOM_DEVICE\n#elif defined __GLIBC__ \\\n\t|| defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ \\\n\t/* AIX >= 5.2? */ \\\n\t|| defined _AIX52 \\\n\t/* HP-UX >= B.11.11.09? */ \\\n\t|| defined  __hpux \\\n\t/* OS X: */ \\\n\t|| (defined __APPLE__ && defined __MACH__) \\\n\t/* Solaris >= 9 (this is >= 7): */ \\\n\t|| (defined __SVR4 && defined __sun && defined SUSv2) \\\n\t/* Tru64 UNIX >= 5.1B? */ \\\n\t|| defined __osf\n# define RANDOM_DEVICE \"/dev/urandom\"\n#endif\n\n#ifdef ENABLE_NLS\n# ifndef NLS_CAT_NAME\n#  define NLS_CAT_NAME   \"whois\"\n# endif\n# ifndef LOCALEDIR\n#  define LOCALEDIR     \"/usr/share/locale\"\n# endif\n#endif\n\n"
  },
  {
    "path": "package/mkpasswd/mkpasswd.c",
    "content": "/*\n * Copyright (C) 2001-2008  Marco d'Itri\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation; either version 2 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n */\n\n/* for crypt, snprintf and strcasecmp */\n#define _XOPEN_SOURCE\n/*\n * _BSD_SOURCE is deprecated as of GLIBC 2.20; _DEFAULT_SOURCE should be used\n * instead. (https://lwn.net/Articles/611162/)\n */\n#define _DEFAULT_SOURCE\n#define _BSD_SOURCE\n\n/* System library */\n#include <stdio.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include \"config.h\"\n#ifdef HAVE_GETOPT_LONG\n#include <getopt.h>\n#endif\n#include <fcntl.h>\n#include <string.h>\n#include <time.h>\n#include <sys/types.h>\n#ifdef HAVE_XCRYPT\n#include <xcrypt.h>\n#include <sys/stat.h>\n#endif\n#ifdef HAVE_LINUX_CRYPT_GENSALT\n#define _OW_SOURCE\n#include <crypt.h>\n#endif\n#ifdef HAVE_GETTIMEOFDAY\n#include <sys/time.h>\n#endif\n\n/* glibc without crypt() */\n#ifndef _XOPEN_CRYPT\n#include <crypt.h>\n#endif\n\n/* Application-specific */\n#include \"utils.h\"\n\n/* Global variables */\n#ifdef HAVE_GETOPT_LONG\nstatic const struct option longopts[] = {\n    {\"method\",\t\toptional_argument,\tNULL, 'm'},\n    /* for backward compatibility with versions < 4.7.25 (< 20080321): */\n    {\"hash\",\t\toptional_argument,\tNULL, 'H'},\n    {\"help\",\t\tno_argument,\t\tNULL, 'h'},\n    {\"password-fd\",\trequired_argument,\tNULL, 'P'},\n    {\"stdin\",\t\tno_argument,\t\tNULL, 's'},\n    {\"salt\",\t\trequired_argument,\tNULL, 'S'},\n    {\"rounds\",\t\trequired_argument,\tNULL, 'R'},\n    {\"version\",\t\tno_argument,\t\tNULL, 'V'},\n    {NULL,\t\t0,\t\t\tNULL, 0  }\n};\n#else\nextern char *optarg;\nextern int optind;\n#endif\n\nstatic const char valid_salts[] = \"abcdefghijklmnopqrstuvwxyz\"\n\"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./\";\n\nstruct crypt_method {\n    const char *method;\t\t/* short name used by the command line option */\n    const char *prefix;\t\t/* salt prefix */\n    const unsigned int minlen;\t/* minimum salt length */\n    const unsigned int maxlen;\t/* maximum salt length */\n    const unsigned int rounds;\t/* supports a variable number of rounds */\n    const char *desc;\t\t/* long description for the methods list */\n};\n\nstatic const struct crypt_method methods[] = {\n    /* method\t\tprefix\tminlen,\tmaxlen\trounds description */\n    { \"des\",\t\t\"\",\t2,\t2,\t0,\n\tN_(\"standard 56 bit DES-based crypt(3)\") },\n    { \"md5\",\t\t\"$1$\",\t8,\t8,\t0, \"MD5\" },\n#if defined OpenBSD || defined FreeBSD || (defined __SVR4 && defined __sun)\n    { \"bf\",\t\t\"$2a$\", 22,\t22,\t1, \"Blowfish\" },\n#endif\n#if defined HAVE_LINUX_CRYPT_GENSALT\n    { \"bf\",\t\t\"$2a$\", 22,\t22,\t1, \"Blowfish, system-specific on 8-bit chars\" },\n    /* algorithm 2y fixes CVE-2011-2483 */\n    { \"bfy\",\t\t\"$2y$\", 22,\t22,\t1, \"Blowfish, correct handling of 8-bit chars\" },\n#endif\n#if defined FreeBSD\n    { \"nt\",\t\t\"$3$\",  0,\t0,\t0, \"NT-Hash\" },\n#endif\n#if defined HAVE_SHA_CRYPT\n    /* http://people.redhat.com/drepper/SHA-crypt.txt */\n    { \"sha-256\",\t\"$5$\",\t8,\t16,\t1, \"SHA-256\" },\n    { \"sha-512\",\t\"$6$\",\t8,\t16,\t1, \"SHA-512\" },\n#endif\n    /* http://www.crypticide.com/dropsafe/article/1389 */\n    /*\n     * Actually the maximum salt length is arbitrary, but Solaris by default\n     * always uses 8 characters:\n     * http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/ \\\n     *   usr/src/lib/crypt_modules/sunmd5/sunmd5.c#crypt_gensalt_impl\n     */\n#if defined __SVR4 && defined __sun\n    { \"sunmd5\",\t\t\"$md5$\", 8,\t8,\t1, \"SunMD5\" },\n#endif\n    { NULL,\t\tNULL,\t0,\t0,\t0, NULL }\n};\n\nvoid generate_salt(char *const buf, const unsigned int len);\nvoid *get_random_bytes(const int len);\nvoid display_help(int error);\nvoid display_version(void);\nvoid display_methods(void);\n\nint main(int argc, char *argv[])\n{\n    int ch, i;\n    int password_fd = -1;\n    unsigned int salt_minlen = 0;\n    unsigned int salt_maxlen = 0;\n    unsigned int rounds_support = 0;\n    const char *salt_prefix = NULL;\n    const char *salt_arg = NULL;\n    unsigned int rounds = 0;\n    char *salt = NULL;\n    char rounds_str[30];\n    char *password = NULL;\n\n#ifdef ENABLE_NLS\n    setlocale(LC_ALL, \"\");\n    bindtextdomain(NLS_CAT_NAME, LOCALEDIR);\n    textdomain(NLS_CAT_NAME);\n#endif\n\n    /* prepend options from environment */\n    argv = merge_args(getenv(\"MKPASSWD_OPTIONS\"), argv, &argc);\n\n    while ((ch = GETOPT_LONGISH(argc, argv, \"hH:m:5P:R:sS:V\", longopts, 0))\n\t    > 0) {\n\tswitch (ch) {\n\tcase '5':\n\t    optarg = (char *) \"md5\";\n\t    /* fall through */\n\tcase 'm':\n\tcase 'H':\n\t    if (!optarg || strcaseeq(\"help\", optarg)) {\n\t\tdisplay_methods();\n\t\texit(0);\n\t    }\n\t    for (i = 0; methods[i].method != NULL; i++)\n\t\tif (strcaseeq(methods[i].method, optarg)) {\n\t\t    salt_prefix = methods[i].prefix;\n\t\t    salt_minlen = methods[i].minlen;\n\t\t    salt_maxlen = methods[i].maxlen;\n\t\t    rounds_support = methods[i].rounds;\n\t\t    break;\n\t\t}\n\t    if (!salt_prefix) {\n\t\tfprintf(stderr, _(\"Invalid method '%s'.\\n\"), optarg);\n\t\texit(1);\n\t    }\n\t    break;\n\tcase 'P':\n\t    {\n\t\tchar *p;\n\t\tpassword_fd = strtol(optarg, &p, 10);\n\t\tif (p == NULL || *p != '\\0' || password_fd < 0) {\n\t\t    fprintf(stderr, _(\"Invalid number '%s'.\\n\"), optarg);\n\t\t    exit(1);\n\t\t}\n\t    }\n\t    break;\n\tcase 'R':\n\t    {\n\t\tchar *p;\n\t\trounds = strtol(optarg, &p, 10);\n\t\tif (p == NULL || *p != '\\0' || rounds < 0) {\n\t\t    fprintf(stderr, _(\"Invalid number '%s'.\\n\"), optarg);\n\t\t    exit(1);\n\t\t}\n\t    }\n\t    break;\n\tcase 's':\n\t    password_fd = 0;\n\t    break;\n\tcase 'S':\n\t    salt_arg = optarg;\n\t    break;\n\tcase 'V':\n\t    display_version();\n\t    exit(0);\n\tcase 'h':\n\t    display_help(EXIT_SUCCESS);\n\tdefault:\n\t    fprintf(stderr, _(\"Try '%s --help' for more information.\\n\"),\n\t\t    argv[0]);\n\t    exit(1);\n\t}\n    }\n    argc -= optind;\n    argv += optind;\n\n    if (argc == 2 && !salt_arg) {\n\tpassword = argv[0];\n\tsalt_arg = argv[1];\n    } else if (argc == 1) {\n\tpassword = argv[0];\n    } else if (argc == 0) {\n    } else {\n\tdisplay_help(EXIT_FAILURE);\n    }\n\n    /* default: DES password */\n    if (!salt_prefix) {\n\tsalt_minlen = methods[0].minlen;\n\tsalt_maxlen = methods[0].maxlen;\n\tsalt_prefix = methods[0].prefix;\n    }\n\n    if (streq(salt_prefix, \"$2a$\") || streq(salt_prefix, \"$2y$\")) {\n\t/* OpenBSD Blowfish and derivatives */\n\tif (rounds <= 5)\n\t    rounds = 5;\n\t/* actually for 2a/2y it is the logarithm of the number of rounds */\n\tsnprintf(rounds_str, sizeof(rounds_str), \"%02u$\", rounds);\n    } else if (rounds_support && rounds)\n\tsnprintf(rounds_str, sizeof(rounds_str), \"rounds=%u$\", rounds);\n    else\n\trounds_str[0] = '\\0';\n\n    if (salt_arg) {\n\tunsigned int c = strlen(salt_arg);\n\tif (c < salt_minlen || c > salt_maxlen) {\n\t    if (salt_minlen == salt_maxlen)\n\t\tfprintf(stderr, ngettext(\n\t\t\t\"Wrong salt length: %d byte when %d expected.\\n\",\n\t\t\t\"Wrong salt length: %d bytes when %d expected.\\n\", c),\n\t\t\tc, salt_maxlen);\n\t    else\n\t\tfprintf(stderr, ngettext(\n\t\t\t\"Wrong salt length: %d byte when %d <= n <= %d\"\n\t\t\t\" expected.\\n\",\n\t\t\t\"Wrong salt length: %d bytes when %d <= n <= %d\"\n\t\t\t\" expected.\\n\", c),\n\t\t\tc, salt_minlen, salt_maxlen);\n\t    exit(1);\n\t}\n\twhile (c-- > 0) {\n\t    if (strchr(valid_salts, salt_arg[c]) == NULL) {\n\t\tfprintf(stderr, _(\"Illegal salt character '%c'.\\n\"),\n\t\t\tsalt_arg[c]);\n\t\texit(1);\n\t    }\n\t}\n\n\tsalt = NOFAIL(malloc(strlen(salt_prefix) + strlen(rounds_str)\n\t\t+ strlen(salt_arg) + 1));\n\t*salt = '\\0';\n\tstrcat(salt, salt_prefix);\n\tstrcat(salt, rounds_str);\n\tstrcat(salt, salt_arg);\n    } else {\n#ifdef HAVE_SOLARIS_CRYPT_GENSALT\n#error \"This code path is untested on Solaris. Please send a patch.\"\n\tsalt = crypt_gensalt(salt_prefix, NULL);\n\tif (!salt)\n\t\tperror(stderr, \"crypt_gensalt\");\n#elif defined HAVE_LINUX_CRYPT_GENSALT\n\tvoid *entropy = get_random_bytes(64);\n\n\tsalt = crypt_gensalt(salt_prefix, rounds, entropy, 64);\n\tif (!salt) {\n\t\tfprintf(stderr, \"crypt_gensalt failed.\\n\");\n\t\texit(2);\n\t}\n\tfree(entropy);\n#else\n\tunsigned int salt_len = salt_maxlen;\n\n\tif (salt_minlen != salt_maxlen) { /* salt length can vary */\n\t    srand(time(NULL) + getpid());\n\t    salt_len = rand() % (salt_maxlen - salt_minlen + 1) + salt_minlen;\n\t}\n\n\tsalt = NOFAIL(malloc(strlen(salt_prefix) + strlen(rounds_str)\n\t\t+ salt_len + 1));\n\t*salt = '\\0';\n\tstrcat(salt, salt_prefix);\n\tstrcat(salt, rounds_str);\n\tgenerate_salt(salt + strlen(salt), salt_len);\n#endif\n    }\n\n    if (password) {\n    } else if (password_fd != -1) {\n\tFILE *fp;\n\tchar *p;\n\n\tif (isatty(password_fd))\n\t    fprintf(stderr, _(\"Password: \"));\n\tpassword = NOFAIL(malloc(128));\n\tfp = fdopen(password_fd, \"r\");\n\tif (!fp) {\n\t    perror(\"fdopen\");\n\t    exit(2);\n\t}\n\tif (!fgets(password, 128, fp)) {\n\t    perror(\"fgets\");\n\t    exit(2);\n\t}\n\n\tp = strpbrk(password, \"\\n\\r\");\n\tif (p)\n\t    *p = '\\0';\n    } else {\n\tpassword = getpass(_(\"Password: \"));\n\tif (!password) {\n\t    perror(\"getpass\");\n\t    exit(2);\n\t}\n    }\n\n    {\n\tconst char *result;\n\tresult = crypt(password, salt);\n\t/* xcrypt returns \"*0\" on errors */\n\tif (!result || result[0] == '*') {\n\t    fprintf(stderr, \"crypt failed.\\n\");\n\t    exit(2);\n\t}\n\t/* yes, using strlen(salt_prefix) on salt. It's not\n\t * documented whether crypt_gensalt may change the prefix */\n\tif (!strneq(result, salt, strlen(salt_prefix))) {\n\t    fprintf(stderr, _(\"Method not supported by crypt(3).\\n\"));\n\t    exit(2);\n\t}\n\tprintf(\"%s\\n\", result);\n    }\n\n    exit(0);\n}\n\n#ifdef RANDOM_DEVICE\nvoid* get_random_bytes(const int count)\n{\n    char *buf;\n    int fd;\n\n    buf = NOFAIL(malloc(count));\n    fd = open(RANDOM_DEVICE, O_RDONLY);\n    if (fd < 0) {\n\tperror(\"open(\" RANDOM_DEVICE \")\");\n\texit(2);\n    }\n    if (read(fd, buf, count) != count) {\n\tif (count < 0)\n\t    perror(\"read(\" RANDOM_DEVICE \")\");\n\telse\n\t    fprintf(stderr, \"Short read of %s.\\n\", RANDOM_DEVICE);\n\texit(2);\n    }\n    close(fd);\n\n    return buf;\n}\n#endif\n\n#ifdef RANDOM_DEVICE\n\nvoid generate_salt(char *const buf, const unsigned int len)\n{\n    unsigned int i;\n\n    unsigned char *entropy = get_random_bytes(len * sizeof(unsigned char));\n    for (i = 0; i < len; i++)\n\tbuf[i] = valid_salts[entropy[i] % (sizeof valid_salts - 1)];\n    buf[i] = '\\0';\n}\n\n#else /* RANDOM_DEVICE */\n\nvoid generate_salt(char *const buf, const unsigned int len)\n{\n    unsigned int i;\n\n# ifdef HAVE_GETTIMEOFDAY\n    struct timeval tv;\n\n    gettimeofday(&tv, NULL);\n    srand(tv.tv_sec ^ tv.tv_usec);\n\n# else /* HAVE_GETTIMEOFDAY */\n#  warning \"This system lacks a strong enough random numbers generator!\"\n\n    /*\n     * The possible values of time over one year are 31536000, which is\n     * two orders of magnitude less than the allowed entropy range (2^32).\n     */\n    srand(time(NULL) + getpid());\n\n# endif /* HAVE_GETTIMEOFDAY */\n\n    for (i = 0; i < len; i++)\n\tbuf[i] = valid_salts[rand() % (sizeof valid_salts - 1)];\n    buf[i] = '\\0';\n}\n\n#endif /* RANDOM_DEVICE */\n\nvoid display_help(int error)\n{\n    fprintf((EXIT_SUCCESS == error) ? stdout : stderr,\n\t    _(\"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\\n\"\n\t    \"Crypts the PASSWORD using crypt(3).\\n\\n\"));\n    fprintf(stderr, _(\n\"      -m, --method=TYPE     select method TYPE\\n\"\n\"      -5                    like --method=md5\\n\"\n\"      -S, --salt=SALT       use the specified SALT\\n\"\n\"      -R, --rounds=NUMBER   use the specified NUMBER of rounds\\n\"\n\"      -P, --password-fd=NUM read the password from file descriptor NUM\\n\"\n\"                            instead of /dev/tty\\n\"\n\"      -s, --stdin           like --password-fd=0\\n\"\n\"      -h, --help            display this help and exit\\n\"\n\"      -V, --version         output version information and exit\\n\"\n\"\\n\"\n\"If PASSWORD is missing then it is asked interactively.\\n\"\n\"If no SALT is specified, a random one is generated.\\n\"\n\"If TYPE is 'help', available methods are printed.\\n\"\n\"\\n\"\n\"Report bugs to %s.\\n\"), \"<md+whois@linux.it>\");\n    exit(error);\n}\n\nvoid display_version(void)\n{\n    printf(\"mkpasswd %s\\n\\n\", VERSION);\n    puts(\"Copyright (C) 2001-2008 Marco d'Itri\\n\"\n\"This is free software; see the source for copying conditions.  There is NO\\n\"\n\"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\");\n}\n\nvoid display_methods(void)\n{\n    unsigned int i;\n\n    printf(_(\"Available methods:\\n\"));\n    for (i = 0; methods[i].method != NULL; i++)\n\tprintf(\"%s\\t%s\\n\", methods[i].method, methods[i].desc);\n}\n\n"
  },
  {
    "path": "package/mkpasswd/mkpasswd.mk",
    "content": "################################################################################\n#\n# mkpasswd\n#\n################################################################################\n\n# source included in buildroot, taken from\n# https://github.com/rfc1036/whois/blob/master/\n# at revision 5a0f08500fa51608b6d3b73ee338be38c692eadb\nHOST_MKPASSWD_LICENSE = GPL-2.0+\n\ndefine HOST_MKPASSWD_EXTRACT_CMDS\n\tcp $(HOST_MKPASSWD_PKGDIR)/*.c $(HOST_MKPASSWD_PKGDIR)/*.h $(@D)\nendef\n\ndefine HOST_MKPASSWD_BUILD_CMDS\n\t$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \\\n\t\t$(@D)/mkpasswd.c $(@D)/utils.c \\\n\t\t-o $(@D)/mkpasswd -lcrypt\nendef\n\ndefine HOST_MKPASSWD_INSTALL_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/mkpasswd $(HOST_DIR)/bin/mkpasswd\nendef\n\n$(eval $(host-generic-package))\n\nMKPASSWD = $(HOST_DIR)/bin/mkpasswd\n"
  },
  {
    "path": "package/mkpasswd/utils.c",
    "content": "/*\n * Copyright 1999-2008 by Marco d'Itri <md@linux.it>.\n *\n * do_nofail and merge_args come from the module-init-tools package.\n * Copyright 2001 by Rusty Russell.\n * Copyright 2002, 2003 by Rusty Russell, IBM Corporation.\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation; either version 2 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License along\n * with this program; if not, write to the Free Software Foundation, Inc.,\n * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n */\n\n/* for strdup */\n#define _XOPEN_SOURCE 500\n\n/* System library */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdarg.h>\n#include <string.h>\n#include <errno.h>\n\n/* Application-specific */\n#include \"utils.h\"\n\nvoid *do_nofail(void *ptr, const char *file, const int line)\n{\n    if (ptr)\n\treturn ptr;\n\n    err_quit(\"Memory allocation failure at %s:%d.\", file, line);\n}\n\n/* Prepend options from a string. */\nchar **merge_args(char *args, char *argv[], int *argc)\n{\n    char *arg, *argstring;\n    char **newargs = NULL;\n    unsigned int i, num_env = 0;\n\n    if (!args)\n\treturn argv;\n\n    argstring = NOFAIL(strdup(args));\n    for (arg = strtok(argstring, \" \"); arg; arg = strtok(NULL, \" \")) {\n\tnum_env++;\n\tnewargs = NOFAIL(realloc(newargs,\n\t\t    sizeof(newargs[0]) * (num_env + *argc + 1)));\n\tnewargs[num_env] = arg;\n    }\n\n    if (!newargs)\n\treturn argv;\n\n    /* Append commandline args */\n    newargs[0] = argv[0];\n    for (i = 1; i <= *argc; i++)\n\tnewargs[num_env + i] = argv[i];\n\n    *argc += num_env;\n    return newargs;\n}\n\n/* Error routines */\nvoid err_sys(const char *fmt, ...)\n{\n    va_list ap;\n\n    va_start(ap, fmt);\n    vfprintf(stderr, fmt, ap);\n    fprintf(stderr, \": %s\\n\", strerror(errno));\n    va_end(ap);\n    exit(2);\n}\n\nvoid err_quit(const char *fmt, ...)\n{\n    va_list ap;\n\n    va_start(ap, fmt);\n    vfprintf(stderr, fmt, ap);\n    fputs(\"\\n\", stderr);\n    va_end(ap);\n    exit(2);\n}\n\n"
  },
  {
    "path": "package/mkpasswd/utils.h",
    "content": "#ifndef WHOIS_UTILS_H\n#define WHOIS_UTILS_H\n\n/* Convenience macros */\n#define streq(a, b) (strcmp(a, b) == 0)\n#define strcaseeq(a, b) (strcasecmp(a, b) == 0)\n#define strneq(a, b, n) (strncmp(a, b, n) == 0)\n#define strncaseeq(a, b, n) (strncasecmp(a, b, n) == 0)\n\n#define NOFAIL(ptr) do_nofail((ptr), __FILE__, __LINE__)\n\n/* Portability macros */\n#ifdef __GNUC__\n# define NORETURN __attribute__((noreturn))\n#else\n# define NORETURN\n#endif\n\n#ifndef AI_IDN\n# define AI_IDN 0\n#endif\n\n#ifndef AI_ADDRCONFIG\n# define AI_ADDRCONFIG 0\n#endif\n\n#ifdef HAVE_GETOPT_LONG\n# define GETOPT_LONGISH(c, v, o, l, i) getopt_long(c, v, o, l, i)\n#else\n# define GETOPT_LONGISH(c, v, o, l, i) getopt(c, v, o)\n#endif\n\n#ifdef ENABLE_NLS\n# include <libintl.h>\n# include <locale.h>\n# define _(a) (gettext(a))\n# ifdef gettext_noop\n#  define N_(a) gettext_noop(a)\n# else\n#  define N_(a) (a)\n# endif\n#else\n# define _(a) (a)\n# define N_(a) (a)\n# define ngettext(a, b, c) ((c==1) ? (a) : (b))\n#endif\n\n\n/* Prototypes */\nvoid *do_nofail(void *ptr, const char *file, const int line);\nchar **merge_args(char *args, char *argv[], int *argc);\n\nvoid err_quit(const char *fmt, ...) NORETURN;\nvoid err_sys(const char *fmt, ...) NORETURN;\n\n#endif\n"
  },
  {
    "path": "package/mkpimage/mkpimage.c",
    "content": "#include <stdio.h>\n#include <unistd.h>\n#include <getopt.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <string.h>\n#include <errno.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <fcntl.h>\n#include <endian.h>\n\n#define VALIDATION_WORD 0x31305341\n\n#define BRANCH_INST 0xea /* ARM opcode for \"b\" (unconditional branch) */\n\n#define MAX_V0IMAGE_SIZE (60 * 1024 - 4)\n/* Max size without authentication is 224 KB, due to memory used by\n * the ROM boot code as a workspace out of the 256 KB of OCRAM */\n#define MAX_V1IMAGE_SIZE (224 * 1024 - 4)\n\nstatic int add_barebox_header;\n\nstruct socfpga_header {\n\tuint8_t validation_word[4];\n\tuint8_t version;\n\tuint8_t flags;\n\tunion {\n\t\tstruct {\n\t\t\tuint8_t program_length[2];\n\t\t\tuint8_t spare[2];\n\t\t\tuint8_t checksum[2];\n\t\t\tuint8_t start_vector[4];\n\t\t} v0;\n\t\tstruct {\n\t\t\tuint8_t header_length[2];\n\t\t\tuint8_t program_length[4];\n\t\t\tuint8_t entry_offset[4];\n\t\t\tuint8_t spare[2];\n\t\t\tuint8_t checksum[2];\n\t\t} v1;\n\t};\n};\n\nstatic uint32_t bb_header[] = {\n\t0xea00007e,\t/* b 0x200  */\n\t0xeafffffe,\t/* 1: b 1b  */\n\t0xeafffffe,\t/* 1: b 1b  */\n\t0xeafffffe,\t/* 1: b 1b  */\n\t0xeafffffe,\t/* 1: b 1b  */\n\t0xeafffffe,\t/* 1: b 1b  */\n\t0xeafffffe,\t/* 1: b 1b  */\n\t0xeafffffe,\t/* 1: b 1b  */\n\t0x65726162,\t/* 'bare'   */\n\t0x00786f62,\t/* 'box\\0'  */\n\t0x00000000,\t/* padding  */\n\t0x00000000,\t/* padding  */\n\t0x00000000,\t/* padding  */\n\t0x00000000,\t/* padding  */\n\t0x00000000,\t/* padding  */\n\t0x00000000,\t/* padding  */\n\t0x00000000,\t/* socfpga header */\n\t0x00000000,\t/* socfpga header */\n\t0x00000000,\t/* socfpga header */\n\t0xea00006b,\t/* entry. b 0x200 (offset may be adjusted) */\n};\n\nstatic int read_full(int fd, void *buf, size_t size)\n{\n\tsize_t insize = size;\n\tint now;\n\tint total = 0;\n\n\twhile (size) {\n\t\tnow = read(fd, buf, size);\n\t\tif (now == 0)\n\t\t\treturn total;\n\t\tif (now < 0)\n\t\t\treturn now;\n\t\ttotal += now;\n\t\tsize -= now;\n\t\tbuf += now;\n\t}\n\n\treturn insize;\n}\n\nstatic int write_full(int fd, void *buf, size_t size)\n{\n\tsize_t insize = size;\n\tint now;\n\n\twhile (size) {\n\t\tnow = write(fd, buf, size);\n\t\tif (now <= 0)\n\t\t\treturn now;\n\t\tsize -= now;\n\t\tbuf += now;\n\t}\n\n\treturn insize;\n}\n\nstatic const uint32_t crc_table[256] = {\n\t0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,\n\t0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,\n\t0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7,\n\t0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,\n\t0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3,\n\t0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,\n\t0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef,\n\t0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,\n\t0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb,\n\t0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,\n\t0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,\n\t0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,\n\t0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4,\n\t0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,\n\t0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08,\n\t0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,\n\t0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc,\n\t0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,\n\t0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050,\n\t0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,\n\t0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,\n\t0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,\n\t0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1,\n\t0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,\n\t0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5,\n\t0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,\n\t0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9,\n\t0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,\n\t0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd,\n\t0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,\n\t0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,\n\t0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,\n\t0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2,\n\t0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,\n\t0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e,\n\t0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,\n\t0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a,\n\t0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,\n\t0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676,\n\t0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,\n\t0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,\n\t0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,\n\t0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4\n};\n\nuint32_t crc32(uint32_t crc, void *_buf, int length)\n{\n\tuint8_t *buf = _buf;\n\n\twhile (length--)\n\t\tcrc = crc << 8 ^ crc_table[(crc >> 24 ^ *(buf++)) & 0xff];\n\n\treturn crc;\n}\n\n/* Create an ARM relative branch instuction \n * branch is where the instruction will be placed and dest points to where\n * it should branch too. */\nstatic void branch(uint8_t *branch, uint8_t *dest)\n{\n\tint offset = dest - branch - 8; /* PC is offset +8 bytes on ARM */\n\n\tbranch[0] = (offset >> 2) & 0xff; /* instruction uses offset/4 */\n\tbranch[1] = (offset >> 10) & 0xff;\n\tbranch[2] = (offset >> 18) & 0xff;\n\tbranch[3] = BRANCH_INST;\n}\n\n/* start_addr is where the socfpga header's start instruction should branch to.\n * It should be relative to the start of buf */\nstatic int add_socfpga_header(void *buf, size_t size, unsigned start_addr, unsigned version)\n{\n\tstruct socfpga_header *header = buf + 0x40;\n\tvoid *entry;\n\tuint8_t *bufp, *sumendp;\n\tuint32_t *crc;\n\tunsigned checksum;\n\n\tif (size & 0x3) {\n\t\tfprintf(stderr, \"%s: size must be multiple of 4\\n\", __func__);\n\t\treturn -EINVAL;\n\t}\n\n\t/* Absolute address of entry point in buf */\n\tentry = buf + start_addr;\n\tif (version == 0) {\n\t\tsumendp = &header->v0.checksum[0];\n\t} else {\n\t\tsumendp = &header->v1.checksum[0];\n\n\t\t/* The ROM loader can't handle a negative offset */\n\t\tif (entry < (void*)header) {\n\t\t\t/* add a trampoline branch inst after end of the header */\n\t\t\tuint8_t *trampoline = (void*)(header + 1);\n\t\t\tbranch(trampoline, entry);\n\n\t\t\t/* and then make the trampoline the entry point */\n\t\t\tentry = trampoline;\n\t\t}\n\t\t/* Calculate start address as offset relative to start of header */\n\t\tstart_addr = entry - (void*)header;\n\t}\n\n\theader->validation_word[0] = VALIDATION_WORD & 0xff;\n\theader->validation_word[1] = (VALIDATION_WORD >> 8) & 0xff;\n\theader->validation_word[2] = (VALIDATION_WORD >> 16) & 0xff;\n\theader->validation_word[3] = (VALIDATION_WORD >> 24) & 0xff;\n\theader->version = version;\n\theader->flags = 0;\n\n\tif (version == 0) {\n\t\theader->v0.program_length[0] = (size >>  2) & 0xff; /* length in words */\n\t\theader->v0.program_length[1] = (size >> 10) & 0xff;\n\t\theader->v0.spare[0] = 0;\n\t\theader->v0.spare[1] = 0;\n\t\tbranch(header->v0.start_vector, entry);\n\t} else {\n\t\theader->v1.header_length[0] = (sizeof(*header) >> 0) & 0xff;\n\t\theader->v1.header_length[1] = (sizeof(*header) >> 8) & 0xff;\n\t\theader->v1.program_length[0] = (size >>  0) & 0xff;\n\t\theader->v1.program_length[1] = (size >>  8) & 0xff;\n\t\theader->v1.program_length[2] = (size >> 16) & 0xff;\n\t\theader->v1.program_length[3] = (size >> 24) & 0xff;\n\t\theader->v1.entry_offset[0] = (start_addr >>  0) & 0xff;\n\t\theader->v1.entry_offset[1] = (start_addr >>  8) & 0xff;\n\t\theader->v1.entry_offset[2] = (start_addr >> 16) & 0xff;\n\t\theader->v1.entry_offset[3] = (start_addr >> 24) & 0xff;\n\t\theader->v1.spare[0] = 0;\n\t\theader->v1.spare[1] = 0;\n\t}\n\n\t/* Sum from beginning of header to start of checksum field */\n\tchecksum = 0;\n\tfor (bufp = (uint8_t*)header; bufp < sumendp; bufp++)\n\t\tchecksum += *bufp;\n\n\tif (version == 0) {\n\t\theader->v0.checksum[0] = checksum & 0xff;;\n\t\theader->v0.checksum[1] = (checksum >> 8) & 0xff;;\n\t} else {\n\t\theader->v1.checksum[0] = checksum & 0xff;;\n\t\theader->v1.checksum[1] = (checksum >> 8) & 0xff;;\n\t}\n\n\tcrc = buf + size - sizeof(uint32_t);\n\n\t*crc = crc32(0xffffffff, buf, size - sizeof(uint32_t));\n\t*crc ^= 0xffffffff;\n\n\treturn 0;\n}\n\nstatic void usage(const char *prgname)\n{\n\tfprintf(stderr, \"usage: %s [-hb] [-v version] <infile> -o <outfile>\\n\", prgname);\n}\n\nint main(int argc, char *argv[])\n{\n\tint opt, ret;\n\tconst char *outfile = NULL, *infile;\n\tstruct stat s;\n\tvoid *buf;\n\tint fd;\n\tint max_image_size, min_image_size = 80;\n\tint addsize = 0, pad;\n\tunsigned int version = 0;\n\n\twhile ((opt = getopt(argc, argv, \"o:hbv:\")) != -1) {\n\t\tswitch (opt) {\n\t\tcase 'v':\n\t\t\tversion = atoi(optarg);\n\t\t\tif (version > 1) {\n\t\t\t\tprintf(\"Versions supported: 0 or 1\\n\");\n\t\t\t\tusage(argv[0]);\n\t\t\t\texit(1);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'b':\n\t\t\tadd_barebox_header = 1;\n\t\t\tmin_image_size = 0;\n\t\t\taddsize = 512;\n\t\t\tbreak;\n\t\tcase 'h':\n\t\t\tusage(argv[0]);\n\t\t\texit(0);\n\t\tcase 'o':\n\t\t\toutfile = optarg;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tusage(argv[0]);\n\t\t\texit(1);\n\t\t}\n\t}\n\tif (version == 0) {\n\t\tmax_image_size = MAX_V0IMAGE_SIZE;\n\t} else {\n\t\tmax_image_size = MAX_V1IMAGE_SIZE;\n\t}\n\tmax_image_size -= addsize;\n\n\tif (optind == argc || !outfile) {\n\t\tusage(argv[0]);\n\t\texit(1);\n\t}\n\tinfile = argv[optind];\n\n\tret = stat(infile, &s);\n\tif (ret) {\n\t\tperror(\"stat\");\n\t\texit(1);\n\t}\n\n\tif (s.st_size < min_image_size) {\n\t\tfprintf(stderr, \"input image too small. Minimum is %d bytes\\n\",\n\t\t\tmin_image_size);\n\t\texit(1);\n\t}\n\n\tif (s.st_size > max_image_size) {\n\t\tfprintf(stderr, \"input image too big. Maximum is %d bytes, got %ld bytes\\n\",\n\t\t\t\tmax_image_size, s.st_size);\n\t\texit(1);\n\t}\n\n\tfd = open(infile, O_RDONLY);\n\tif (fd == -1) {\n\t\tperror(\"open infile\");\n\t\texit(1);\n\t}\n\n\tpad = s.st_size & 0x3;\n\tif (pad)\n\t\tpad = 4 - pad;\n\n\tbuf = calloc(s.st_size + 4 + addsize + pad, 1);\n\tif (!buf) {\n\t\tperror(\"malloc\");\n\t\texit(1);\n\t}\n\n\tret = read_full(fd, buf + addsize, s.st_size);\n\tif (ret < 0) {\n\t\tperror(\"read infile\");\n\t\texit(1);\n\t}\n\n\tclose(fd);\n\n\tif (add_barebox_header) {\n\t\tmemcpy(buf, bb_header, sizeof(bb_header));\n\t}\n\n\tret = add_socfpga_header(buf, s.st_size + 4 + addsize + pad, addsize,\n\t                         version);\n\tif (ret)\n\t\texit(1);\n\n\tfd = open(outfile, O_WRONLY | O_CREAT | O_TRUNC, 0644);\n\tif (fd < 0) {\n\t\tperror(\"open outfile\");\n\t\texit(1);\n\t}\n\n\tret = write_full(fd, buf, s.st_size + 4 + addsize + pad);\n\tif (ret < 0) {\n\t\tperror(\"write outfile\");\n\t\texit(1);\n\t}\n\n\texit(0);\n}\n"
  },
  {
    "path": "package/mkpimage/mkpimage.mk",
    "content": "################################################################################\n#\n# mkpimage\n#\n################################################################################\n\nHOST_MKPIMAGE_LICENSE = GPL-2.0\n\n# source included in the package\n# came from barebox's repository:\n# https://git.pengutronix.de/cgit/barebox/tree/scripts/socfpga_mkimage.c?id=55d29525146dcd280987dfd565bfd34f08858fb3\ndefine HOST_MKPIMAGE_EXTRACT_CMDS\n\tcp $(HOST_MKPIMAGE_PKGDIR)/mkpimage.c $(@D)\nendef\n\ndefine HOST_MKPIMAGE_BUILD_CMDS\n\t$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \\\n\t\t$(@D)/mkpimage.c -o $(@D)/mkpimage\nendef\n\ndefine HOST_MKPIMAGE_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/mkpimage $(HOST_DIR)/bin/mkpimage\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/mksh/Config.in",
    "content": "config BR2_PACKAGE_MKSH\n\tbool \"mksh\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  The MirBSD Korn Shell,\n\n\t  mksh is a successor of pdksh but not affiliated with the\n\t  pdksh developers or contributors. mksh is not affiliated\n\t  with the AT&T Korn Shell, its past or present owners,\n\t  other than that both attempt to implement the Korn Shell\n\t  programming language.\n\n\t  mksh targets users who desire a compact, fast, reliable,\n\t  secure shell not cut off modern extensions; a shell with\n\t  Unicode support; an actively developed, current, and\n\t  portable product; one with developers that listen to\n\t  their users' requests and implement them if they\n\t  actually make sense.\n\n\t  mksh aims to replace pdksh in all but very rare use cases\n\t  (such as support for checking the Unix mbox) and in all\n\t  operating environments\n\t  (thus including patches from pdksh on e.g. Debian).\n\n\t  http://www.mirbsd.org/mksh.htm\n"
  },
  {
    "path": "package/mksh/mksh.hash",
    "content": "# From http://www.mirbsd.org/mksh.htm#build\nsha256  77ae1665a337f1c48c61d6b961db3e52119b38e58884d1c89684af31f87bc506  mksh-R59c.tgz\n# Locally computed\nsha256  abf44a61ec777c98f8ae7e08e4fe25fe258e0c470215e2eeb22816f6bae72c80  mksh.1\n"
  },
  {
    "path": "package/mksh/mksh.mk",
    "content": "################################################################################\n#\n# mksh\n#\n################################################################################\n\nMKSH_VERSION = 59c\nMKSH_SOURCE = mksh-R$(MKSH_VERSION).tgz\nMKSH_SITE = http://www.mirbsd.org/MirOS/dist/mir/mksh\n# For MirOS License see http://www.mirbsd.org/TaC-mksh.txt\nMKSH_LICENSE = MirOS, ISC\nMKSH_LICENSE_FILES = mksh.1\n\ndefine MKSH_BUILD_CMDS\n\tcd $(@D) && $(TARGET_MAKE_ENV) \\\n\t\tTARGET_OS=Linux $(TARGET_CONFIGURE_OPTS) \\\n\t\tsh ./Build.sh\nendef\n\ndefine MKSH_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/mksh $(TARGET_DIR)/bin/mksh\nendef\n\n# Add /bin/mksh to /etc/shells otherwise some login tools like dropbear\n# can reject the user connection. See man shells.\ndefine MKSH_ADD_MKSH_TO_SHELLS\n\tgrep -qsE '^/bin/mksh$$' $(TARGET_DIR)/etc/shells \\\n\t\t|| echo \"/bin/mksh\" >> $(TARGET_DIR)/etc/shells\nendef\nMKSH_TARGET_FINALIZE_HOOKS += MKSH_ADD_MKSH_TO_SHELLS\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mmc-utils/0001-mmc_cmds.c-fix-build-with-gcc-4.9.patch",
    "content": "From 6208cc78f6efd1fafc4f5bc6a487247a383df80f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 28 Sep 2019 20:44:52 +0200\nSubject: [PATCH] mmc_cmds.c: fix build with gcc 4.9\n\nFix following error with gcc 4.9:\n\nmmc_cmds.c:1918:9: error: missing braces around initializer [-Werror=missing-braces]\n  struct rpmb_frame frame_status = {0};\n\nFixes:\n - http://autobuild.buildroot.org/results/bf3b6f9f6ef39b99842b3c92495b7bf359c68158\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to linux-mmc@vger.kernel.org]\n---\n mmc_cmds.c | 4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/mmc_cmds.c b/mmc_cmds.c\nindex fb37189..6b09f26 100644\n--- a/mmc_cmds.c\n+++ b/mmc_cmds.c\n@@ -1915,7 +1915,9 @@ static int do_rpmb_op(int fd,\n \tu_int16_t rpmb_type;\n \tstruct mmc_ioc_multi_cmd *mioc;\n \tstruct mmc_ioc_cmd *ioc;\n-\tstruct rpmb_frame frame_status = {0};\n+\tstruct rpmb_frame frame_status;\n+\n+\tmemset(&frame_status, 0, sizeof(frame_status));\n \n \tif (!frame_in || !frame_out || !out_cnt)\n \t\treturn -EINVAL;\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/mmc-utils/Config.in",
    "content": "config BR2_PACKAGE_MMC_UTILS\n\tbool \"mmc-utils\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\thelp\n\t  MMC utils\n\n\t  https://git.kernel.org/cgit/linux/kernel/git/cjb/mmc-utils.git\n\ncomment \"mmc-utils needs a toolchain w/ headers >= 3.0\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n"
  },
  {
    "path": "package/mmc-utils/mmc-utils.hash",
    "content": "# Locally computed\nsha256  ffc8f77233d1bd39ce4ec68835ad94aa6762624e4e96fb60102e87ba82db083e  mmc-utils-d40ec535b9d4e4c974e8c2fbfb422cd0348cc5e8-br1.tar.gz\nsha256  c3165393bcd710624e2909327a6fbeb736c47bdbe66de1c1a364ac7324d3e4d6  mmc.h\n"
  },
  {
    "path": "package/mmc-utils/mmc-utils.mk",
    "content": "################################################################################\n#\n# mmc-utils\n#\n################################################################################\n\nMMC_UTILS_VERSION = d40ec535b9d4e4c974e8c2fbfb422cd0348cc5e8\nMMC_UTILS_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git\nMMC_UTILS_LICENSE = GPL-2.0\nMMC_UTILS_LICENSE_FILES = mmc.h\n\n# override AM_CFLAGS as the project Makefile uses it to pass\n# -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2, and the latter conflicts\n# with the _FORTIFY_SOURCE that we pass when hardening options are\n# enabled.\ndefine MMC_UTILS_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) AM_CFLAGS=\nendef\n\ndefine MMC_UTILS_INSTALL_TARGET_CMDS\n\t$(MAKE) -C $(@D) prefix=/usr DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/moarvm/Config.in",
    "content": "config BR2_PACKAGE_MOARVM\n\tbool \"moarvm\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv\n\tdepends on !BR2_STATIC_LIBS # libuv\n\tdepends on BR2_USE_MMU # libuv\n\tdepends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS # libatomic_ops\n\t# needs AO_fetch_compare_and_swap, not implemented for sparcv8/sparcv9\n\tdepends on !BR2_sparc64 && !BR2_sparc\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv\n\tselect BR2_PACKAGE_LIBUV\n\tselect BR2_PACKAGE_LIBTOMMATH\n\tselect BR2_PACKAGE_LIBATOMIC_OPS\n\t# dyncall does not work on MIPS; libffi needs to be used.\n\t# See: https://github.com/MoarVM/MoarVM/issues/222\n\t# dyncall does not work also on powerpc64 and powerpc64le\n\tselect BR2_PACKAGE_LIBFFI if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || BR2_powerpc64 || BR2_powerpc64le\n\tselect BR2_PACKAGE_ZSTD\n\thelp\n\t  Short for \"Metamodel On A Runtime\", MoarVM is a virtual\n\t  machine built especially for Rakudo Perl 6 and the NQP\n\t  Compiler Toolchain.\n\n\t  http://moarvm.com\n\ncomment \"moarvm needs a toolchain w/ NPTL, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS\n\tdepends on !BR2_sparc64 && !BR2_sparc\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n"
  },
  {
    "path": "package/moarvm/moarvm.hash",
    "content": "# Locally computed\nsha256  7f3487a70e8b77be0e4e2f12b14c49f6a01d0378e0940c86958c9016c495ad75  MoarVM-2021.10.tar.gz\nsha256  c53c6b96081b0a5b9b2fb4d0133d55c20e5e00e4c127ade62f03434ee7b3d2de  Artistic2.txt\n"
  },
  {
    "path": "package/moarvm/moarvm.mk",
    "content": "################################################################################\n#\n# moarvm\n#\n################################################################################\n\nMOARVM_VERSION = 2021.10\nMOARVM_SITE = http://moarvm.com/releases\nMOARVM_SOURCE = MoarVM-$(MOARVM_VERSION).tar.gz\nMOARVM_LICENSE = Artistic-2.0\nMOARVM_LICENSE_FILES = Artistic2.txt\nMOARVM_INSTALL_STAGING = YES\nMOARVM_DEPENDENCIES = host-pkgconf libuv libtommath libatomic_ops zstd\n\nMOARVM_CONF_OPTS = \\\n\t--build=$(GNU_HOST_NAME) \\\n\t--host=$(GNU_TARGET_NAME) \\\n\t--ar=\"$(TARGET_AR)\" \\\n\t--cc=\"$(TARGET_CC)\" \\\n\t--ld=\"$(TARGET_CC)\" \\\n\t--prefix=\"/usr\" \\\n\t--pkgconfig=$(PKG_CONFIG_HOST_BINARY) \\\n\t--has-libuv \\\n\t--has-libtommath \\\n\t--has-libatomic\n\nifeq ($(BR2_PACKAGE_LIBFFI),y)\nMOARVM_CONF_OPTS += --has-libffi\nMOARVM_DEPENDENCIES += libffi\nendif\n\nifeq ($(BR2_ENDIAN),\"BIG\")\nMOARVM_CONF_OPTS += --big-endian\nendif\n\ndefine MOARVM_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_MAKE_ENV) perl Configure.pl $(MOARVM_CONF_OPTS))\nendef\n\ndefine MOARVM_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine MOARVM_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\ndefine MOARVM_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mobile-broadband-provider-info/Config.in",
    "content": "config BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO\n\tbool \"mobile-broadband-provider-info\"\n\thelp\n\t  Mobile broadband provider database.\n\n\t  http://live.gnome.org/NetworkManager/MobileBroadband/ServiceProviders\n"
  },
  {
    "path": "package/mobile-broadband-provider-info/mobile-broadband-provider-info.hash",
    "content": "# http://ftp.acc.umu.se/pub/GNOME/sources/mobile-broadband-provider-info/20190618/mobile-broadband-provider-info-20190618.sha256sum\nsha256\tc22d64a565d1975b9eecb6ed2eeaef18634bc6f385c8137d05e845d8fb3cce5b  mobile-broadband-provider-info-20190618.tar.xz\n# Locally computed\nsha256\t3d510b215a33087b9ceb9592da21575ea1f9f98bd4d983a38e65fe851a552174  COPYING\n"
  },
  {
    "path": "package/mobile-broadband-provider-info/mobile-broadband-provider-info.mk",
    "content": "################################################################################\n#\n# mobile-broadband-provider-info\n#\n################################################################################\n\nMOBILE_BROADBAND_PROVIDER_INFO_VERSION = 20190618\nMOBILE_BROADBAND_PROVIDER_INFO_SITE = http://ftp.gnome.org/pub/GNOME/sources/mobile-broadband-provider-info/$(MOBILE_BROADBAND_PROVIDER_INFO_VERSION)\nMOBILE_BROADBAND_PROVIDER_INFO_SOURCE = mobile-broadband-provider-info-$(MOBILE_BROADBAND_PROVIDER_INFO_VERSION).tar.xz\nMOBILE_BROADBAND_PROVIDER_INFO_LICENSE = Public domain\nMOBILE_BROADBAND_PROVIDER_INFO_LICENSE_FILES = COPYING\nMOBILE_BROADBAND_PROVIDER_INFO_INSTALL_STAGING = YES\nMOBILE_BROADBAND_PROVIDER_INFO_DEPENDENCIES = host-pkgconf host-libxslt\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/modem-manager/Config.in",
    "content": "config BR2_PACKAGE_MODEM_MANAGER\n\tbool \"modem-manager\"\n\tdepends on BR2_USE_WCHAR # libglib2 and gnutls\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2\n\tdepends on BR2_USE_MMU # dbus\n\tselect BR2_PACKAGE_DBUS # runtime dependency\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBGUDEV if BR2_PACKAGE_HAS_UDEV\n\thelp\n\t  ModemManager is a DBus-activated daemon which controls mobile\n\t  broadband (2G/3G/4G) devices and connections.\n\n\t  http://www.freedesktop.org/wiki/Software/ModemManager/\n\nif BR2_PACKAGE_MODEM_MANAGER\n\nconfig BR2_PACKAGE_MODEM_MANAGER_LIBMBIM\n\tbool \"MBIM support\"\n\tselect BR2_PACKAGE_LIBMBIM\n\thelp\n\t  This option enables support for MBIM protocol\n\nconfig BR2_PACKAGE_MODEM_MANAGER_LIBQMI\n\tbool \"QMI support\"\n\tselect BR2_PACKAGE_LIBQMI\n\thelp\n\t  This option enables support for QMI protocol\nendif\n\ncomment \"modemmanager needs a toolchain w/ wchar, threads\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/modem-manager/S44modem-manager",
    "content": "#!/bin/sh\n#\n# Starts ModemManager\n#\n\n# Allow a few customizations from a config file\ntest -r /etc/default/ModemManager && . /etc/default/ModemManager\n\nPIDFILE=/var/run/ModemManager.pid\n\nstart() {\n\tprintf \"Starting ModemManager: \"\n\tumask 077\n\tstart-stop-daemon -S -q -b -m -p $PIDFILE \\\n\t\t--exec /usr/sbin/ModemManager -- $MODEMMANAGER_ARGS\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping ModemManager: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\t[ $? = 0 ] && { echo \"OK\"; rm -f $PIDFILE; } || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t\t;;\n\tstop)\n\t\tstop\n\t\t;;\n\trestart|reload)\n\t\trestart\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\nesac\n\nexit $ret\n"
  },
  {
    "path": "package/modem-manager/modem-manager.hash",
    "content": "# Locally computed\nsha256  2ccf1f716c2d121e8e6709bcf8af29ee86971a90adacca2e8d6288b30278862e  ModemManager-1.16.10.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\n"
  },
  {
    "path": "package/modem-manager/modem-manager.mk",
    "content": "################################################################################\n#\n# modem-manager\n#\n################################################################################\n\nMODEM_MANAGER_VERSION = 1.16.10\nMODEM_MANAGER_SOURCE = ModemManager-$(MODEM_MANAGER_VERSION).tar.xz\nMODEM_MANAGER_SITE = http://www.freedesktop.org/software/ModemManager\nMODEM_MANAGER_LICENSE = GPL-2.0+ (programs, plugins), LGPL-2.0+ (libmm-glib)\nMODEM_MANAGER_LICENSE_FILES = COPYING COPYING.LIB\nMODEM_MANAGER_SELINUX_MODULES = modemmanager\nMODEM_MANAGER_DEPENDENCIES = host-pkgconf libglib2 $(TARGET_NLS_DEPENDENCIES)\nMODEM_MANAGER_INSTALL_STAGING = YES\nMODEM_MANAGER_CONF_OPTS = --disable-more-warnings\n\nifeq ($(BR2_PACKAGE_MODEM_MANAGER_LIBQMI),y)\nMODEM_MANAGER_DEPENDENCIES += libqmi\nMODEM_MANAGER_CONF_OPTS += --with-qmi\nelse\nMODEM_MANAGER_CONF_OPTS += --without-qmi\nendif\n\nifeq ($(BR2_PACKAGE_LIBGUDEV),y)\nMODEM_MANAGER_DEPENDENCIES += libgudev\nMODEM_MANAGER_CONF_OPTS += --with-udev\nelse\nMODEM_MANAGER_CONF_OPTS += --without-udev\nendif\n\nifeq ($(BR2_PACKAGE_MODEM_MANAGER_LIBMBIM),y)\nMODEM_MANAGER_DEPENDENCIES += libmbim\nMODEM_MANAGER_CONF_OPTS += --with-mbim\nelse\nMODEM_MANAGER_CONF_OPTS += --without-mbim\nendif\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nMODEM_MANAGER_DEPENDENCIES += gobject-introspection\nMODEM_MANAGER_CONF_OPTS += --enable-introspection\nelse\nMODEM_MANAGER_CONF_OPTS += --disable-introspection\nendif\n\ndefine MODEM_MANAGER_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/modem-manager/S44modem-manager \\\n\t\t$(TARGET_DIR)/etc/init.d/S44modem-manager\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/modplugtools/Config.in",
    "content": "config BR2_PACKAGE_MODPLUGTOOLS\n\tbool \"modplugtools\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # libmodplug\n\tselect BR2_PACKAGE_LIBAO\n\tselect BR2_PACKAGE_LIBMODPLUG\n\thelp\n\t  This installs the 'modplug123' command line tool to play\n\t  music files in the tracker formats supported by libmodplug:\n\t  MOD, S3M, XM etc.  Audio output is handled by libao.\n\n\t  http://modplug-xmms.sourceforge.net/\n\ncomment \"modplugtools needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/modplugtools/modplugtools.hash",
    "content": "# Locally computed:\nsha256  0122d44ea0513b928cf9d463acc886d08a2664579aa96ddeeb270d5c81193a4e  modplugtools-0.5.3.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/modplugtools/modplugtools.mk",
    "content": "################################################################################\n#\n# modplugtools\n#\n################################################################################\n\nMODPLUGTOOLS_VERSION = 0.5.3\nMODPLUGTOOLS_SITE = http://downloads.sourceforge.net/project/modplug-xmms/modplug-tools\nMODPLUGTOOLS_LICENSE = GPL-3.0\nMODPLUGTOOLS_LICENSE_FILES = COPYING\n\nMODPLUGTOOLS_DEPENDENCIES = libao libmodplug\n\n# Only build the 'mp123' subdir, which contains 'modplug123' that plays through\n# various backends via libao. This excludes the 'mpplay' subdir, which contains\n# 'modplugplay' that can play only through the deprecated OSS interface.\nMODPLUGTOOLS_MAKE_OPTS = SUBDIRS=mp123\nMODPLUGTOOLS_INSTALL_TARGET_OPTS = SUBDIRS=mp123 DESTDIR=$(TARGET_DIR) install\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mongodb/0001-ssl_manager.cpp-fix-build-with-gcc-7-and-fpermissive.patch",
    "content": "From 362be06fc16a5ad0f9e9aa90cc763c5242e8e35c Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 9 Feb 2019 12:41:45 +0100\nSubject: [PATCH] ssl_manager.cpp: fix build with gcc 7 and -fpermissive\n\nChange prototype of DERToken::parse function from\nparse(ConstDataRange cdr, size_t* outLength);\nto parse(ConstDataRange cdr, uint64_t* outLength);\n\nOtherwise, we got the following error:\n\nsrc/mongo/util/net/ssl_manager.cpp: In static member function 'static mongo::StatusWith<mongo::{anonymous}::DERToken> mongo::{anonymous}::DERToken::parse(mongo::ConstDataRange, size_t*)':\nsrc/mongo/util/net/ssl_manager.cpp:575:79: error: invalid conversion from 'size_t* {aka unsigned int*}' to 'long unsigned int*' [-fpermissive]\n  if (mongoUnsignedAddOverflow64(tagAndLengthByteCount, derLength, outLength) ||\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/mongodb/mongo/pull/1296]\n---\n src/mongo/util/net/ssl_manager.cpp | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/src/mongo/util/net/ssl_manager.cpp b/src/mongo/util/net/ssl_manager.cpp\nindex b93ebe84a4..3511eb5d99 100644\n--- a/src/mongo/util/net/ssl_manager.cpp\n+++ b/src/mongo/util/net/ssl_manager.cpp\n@@ -782,7 +782,7 @@ public:\n      *\n      * Returns a DERToken which consists of the (tag, length, value) tuple.\n      */\n-    static StatusWith<DERToken> parse(ConstDataRange cdr, size_t* outLength);\n+    static StatusWith<DERToken> parse(ConstDataRange cdr, uint64_t* outLength);\n \n private:\n     DERType _type{DERType::EndOfContent};\n@@ -799,7 +799,7 @@ struct DataType::Handler<DERToken> {\n                        size_t length,\n                        size_t* advanced,\n                        std::ptrdiff_t debug_offset) {\n-        size_t outLength;\n+        uint64_t outLength;\n \n         auto swPair = DERToken::parse(ConstDataRange(ptr, length), &outLength);\n \n@@ -844,7 +844,7 @@ StatusWith<std::string> readDERString(ConstDataRangeCursor& cdc) {\n }\n \n \n-StatusWith<DERToken> DERToken::parse(ConstDataRange cdr, size_t* outLength) {\n+StatusWith<DERToken> DERToken::parse(ConstDataRange cdr, uint64_t* outLength) {\n     const size_t kTagLength = 1;\n     const size_t kTagLengthAndInitialLengthByteLength = kTagLength + 1;\n \n-- \n2.14.1\n\n"
  },
  {
    "path": "package/mongodb/0002-src-mongo-db-exec-plan_stats.h-fix-build-with-gcc-11.patch",
    "content": "From 0941e560850d54160c24778fa66b605714fd5012 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 9 Aug 2021 21:18:50 +0200\nSubject: [PATCH] src/mongo/db/exec/plan_stats.h: fix build with gcc\n 11\n\nFix the following build failure with gcc 11:\n\nIn file included from src/mongo/db/query/plan_cache.h:36,\n                 from src/mongo/db/catalog/collection_info_cache.h:33,\n                 from src/mongo/db/catalog/collection.h:42,\n                 from src/mongo/db/exec/requires_collection_stage.h:32,\n                 from src/mongo/db/exec/delete.h:32,\n                 from src/mongo/db/query/internal_plans.h:33,\n                 from src/mongo/db/query/internal_plans.cpp:32:\nsrc/mongo/db/exec/plan_stats.h:214:10: error: 'optional' in namespace 'std' does not name a template type\n  214 |     std::optional<std::string> replanReason;\n      |          ^~~~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/8c0875fa413923504515a83d8b679366418c2444\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: already fixed by\nhttps://github.com/mongodb/mongo/commit/e78b2bf6eaa0c43bd76dbb841add167b443d2bb0]\n---\n src/mongo/db/exec/plan_stats.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/mongo/db/exec/plan_stats.h b/src/mongo/db/exec/plan_stats.h\nindex 43053e27be..813e4edc9e 100644\n--- a/src/mongo/db/exec/plan_stats.h\n+++ b/src/mongo/db/exec/plan_stats.h\n@@ -31,6 +31,7 @@\n \n #include <cstdint>\n #include <cstdlib>\n+#include <optional>\n #include <string>\n #include <vector>\n \n-- \n2.30.2\n\n"
  },
  {
    "path": "package/mongodb/0003-SERVER-59459-With-glibc-2-34-MINSIGSTKSZ-is-no-longer-a-constant.patch",
    "content": "From ef08d0dbc99db8c4620512e92bfb3154282eb5d3 Mon Sep 17 00:00:00 2001\nFrom: Andrew Morrow <acm@mongodb.com>\nDate: Wed, 15 Sep 2021 15:23:42 -0400\nSubject: [PATCH] SERVER-59459 With glibc-2.34, MINSIGSTKSZ is no longer a\n constant\n\n[Retrieved (and backported) from:\nhttps://github.com/mongodb/mongo/commit/ef08d0dbc99db8c4620512e92bfb3154282eb5d3]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/mongo/stdx/thread.h | 14 ++++++++++----\n 1 file changed, 10 insertions(+), 4 deletions(-)\n\ndiff --git a/src/mongo/stdx/thread.h b/src/mongo/stdx/thread.h\nindex 7b15bb561bd9..6f1e16cdeb36 100644\n--- a/src/mongo/stdx/thread.h\n+++ b/src/mongo/stdx/thread.h\n@@ -76,11 +76,19 @@ class SigAltStackController {\n     }\n \n private:\n+    static size_t _getStackSize() {\n+        // It would be nice for this to be a constexpr, but\n+        // MINSIGSTKSZ became a macro that invoked `sysconf` in glibc\n+        // 2.34.\n+        static const std::size_t kMinSigStkSz = MINSIGSTKSZ;\n+        return std::max(kMongoMinSignalStackSize, kMinSigStkSz);\n+    }\n+\n     void _install() const {\n         stack_t ss;\n         ss.ss_sp = _stackStorage.get();\n         ss.ss_flags = 0;\n-        ss.ss_size = kStackSize;\n+        ss.ss_size = _getStackSize();\n         if (sigaltstack(&ss, nullptr)) {\n             abort();\n         }\n@@ -107,9 +115,7 @@ class SigAltStackController {\n     //   ( https://jira.mongodb.org/secure/attachment/233569/233569_stacktrace-writeup.txt )\n     static constexpr std::size_t kMongoMinSignalStackSize = std::size_t{64} << 10;\n \n-    static constexpr std::size_t kStackSize =\n-        std::max(kMongoMinSignalStackSize, std::size_t{MINSIGSTKSZ});\n-    std::unique_ptr<std::byte[]> _stackStorage = std::make_unique<std::byte[]>(kStackSize);\n+    std::unique_ptr<std::byte[]> _stackStorage = std::make_unique<std::byte[]>(_getStackSize());\n \n #else   // !MONGO_HAS_SIGALTSTACK\n     auto makeInstallGuard() const {\n"
  },
  {
    "path": "package/mongodb/Config.in",
    "content": "# from https://docs.mongodb.com/manual/installation/#supported-platforms\nconfig BR2_PACKAGE_MONGODB_ARCH_SUPPORTS\n\tbool\n\t# ARM needs LDREX/STREX, so ARMv6+\n\tdefault y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5\n\tdefault y if BR2_aarch64 || BR2_x86_64\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem\n\nconfig BR2_PACKAGE_MONGODB\n\tbool \"mongodb\"\n\tdepends on BR2_PACKAGE_MONGODB_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # needs glibc malloc_usable_size\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\tselect BR2_PACKAGE_BOOST_IOSTREAMS\n\tselect BR2_PACKAGE_BOOST_PROGRAM_OPTIONS\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_PCRE_UTF # runtime\n\tselect BR2_PACKAGE_SNAPPY\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_YAML_CPP\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  MongoDB is a cross-platform document-oriented database\n\t  (NoSQL).\n\n\t  It uses JSON-like documents with dynamic schemas (BSON),\n\t  making the integration of data in certain types of\n\t  applications easier and faster.\n\n\t  https://www.mongodb.org/\n\ncomment \"mongodb needs a glibc toolchain w/ wchar, threads, C++, gcc >= 7\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_USES_GLIBC || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tdepends on BR2_PACKAGE_MONGODB_ARCH_SUPPORTS\n"
  },
  {
    "path": "package/mongodb/mongodb.hash",
    "content": "# Locally computed:\nsha256  ab5a8b6e967614a8ad67c0ca87124c4f380d4a476508973a7995d54ed902b02e  mongodb-src-r4.2.11.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  APACHE-2.0.txt\nsha256  09d99ca61eb07873d5334077acba22c33e7f7d0a9fa08c92734e0ac8430d6e27  LICENSE-Community.txt\n"
  },
  {
    "path": "package/mongodb/mongodb.mk",
    "content": "################################################################################\n#\n# mongodb\n#\n################################################################################\n\nMONGODB_VERSION = 4.2.11\nMONGODB_SITE = https://fastdl.mongodb.org/src\nMONGODB_SOURCE = mongodb-src-r$(MONGODB_VERSION).tar.gz\n\nMONGODB_LICENSE = Apache-2.0 (drivers), SSPL (database)\nMONGODB_LICENSE_FILES = APACHE-2.0.txt LICENSE-Community.txt\n\nMONGODB_CPE_ID_VENDOR = mongodb\nMONGODB_SELINUX_MODULES = mongodb\n\nMONGODB_DEPENDENCIES = \\\n\tboost \\\n\thost-python3-cheetah \\\n\thost-python3-psutil \\\n\thost-python3-pyyaml \\\n\thost-python3-regex \\\n\thost-python-requests \\\n\thost-scons \\\n\tpcre \\\n\tsnappy \\\n\tsqlite \\\n\tyaml-cpp \\\n\tzlib\n\nMONGODB_SCONS_TARGETS = mongod mongos\n\nMONGODB_SCONS_ENV = CC=\"$(TARGET_CC)\" CXX=\"$(TARGET_CXX)\" \\\n\t-j\"$(PARALLEL_JOBS)\"\n\nMONGODB_SCONS_OPTS = \\\n\t--disable-minimum-compiler-version-enforcement \\\n\t--disable-warnings-as-errors \\\n\t--use-system-boost \\\n\t--use-system-pcre \\\n\t--use-system-snappy \\\n\t--use-system-sqlite \\\n\t--use-system-yaml \\\n\t--use-system-zlib\n\n# need to pass mongo version when not building from git repo\nMONGODB_SCONS_OPTS += MONGO_VERSION=$(MONGODB_VERSION)-\n\n# WiredTiger database storage engine only supported on 64 bits\nifeq ($(BR2_ARCH_IS_64),y)\nMONGODB_SCONS_OPTS += --wiredtiger=on\nelse\nMONGODB_SCONS_OPTS += --wiredtiger=off\nendif\n\n# JavaScript scripting engine and tcmalloc supported only on\n# x86/x86-64 systems. Mongo target is a shell interface that\n# depends on the javascript engine, so it will also only be\n# built on x86/x86-64 systems.\nifeq ($(BR2_i386)$(BR2_x86_64),y)\nMONGODB_SCONS_OPTS += --js-engine=mozjs --allocator=tcmalloc\nMONGODB_SCONS_TARGETS += mongo\nelse\nMONGODB_SCONS_OPTS += --js-engine=none --allocator=system\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nMONGODB_DEPENDENCIES += libcurl\nMONGODB_SCONS_OPTS += \\\n\t--enable-free-mon=on \\\n\t--enable-http-client=on\nelse\nMONGODB_SCONS_OPTS += \\\n\t--enable-free-mon=off \\\n\t--enable-http-client=off\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nMONGODB_DEPENDENCIES += openssl\nMONGODB_SCONS_OPTS += \\\n\t--ssl=on \\\n\t--ssl-provider=openssl\nelse\nMONGODB_SCONS_OPTS += --ssl=off\nendif\n\ndefine MONGODB_BUILD_CMDS\n\t(cd $(@D); \\\n\t\t$(HOST_DIR)/bin/python3 $(SCONS) \\\n\t\t$(MONGODB_SCONS_ENV) \\\n\t\t$(MONGODB_SCONS_OPTS) \\\n\t\t$(MONGODB_SCONS_TARGETS))\nendef\n\ndefine MONGODB_INSTALL_TARGET_CMDS\n\t(cd $(@D); \\\n\t\t$(HOST_DIR)/bin/python3 $(SCONS) \\\n\t\t$(MONGODB_SCONS_ENV) \\\n\t\t$(MONGODB_SCONS_OPTS) \\\n\t\t--prefix=$(TARGET_DIR)/usr \\\n\t\tinstall)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mongoose/Config.in",
    "content": "config BR2_PACKAGE_MONGOOSE\n\tbool \"mongoose\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Mongoose is an embedded networking library, which can turn\n\t  anything into a web server\n\n\t  https://github.com/cesanta/mongoose\n\ncomment \"mongoose needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/mongoose/mongoose.hash",
    "content": "# Locally computed:\nsha256  8c5024a4e5b5a0c7fdae3c24ebc68e2b3ccfaba08cf25c2e76fc7f14f92fd4a5  mongoose-7.2.tar.gz\nsha256  9553d057f2ba980642f2c18d87ed38896cff1c9612d77d684a73a11fe1443b05  LICENSE\n"
  },
  {
    "path": "package/mongoose/mongoose.mk",
    "content": "################################################################################\n#\n# mongoose\n#\n################################################################################\n\nMONGOOSE_VERSION = 7.2\nMONGOOSE_SITE = $(call github,cesanta,mongoose,$(MONGOOSE_VERSION))\nMONGOOSE_LICENSE = GPL-2.0\nMONGOOSE_LICENSE_FILES = LICENSE\nMONGOOSE_CPE_ID_VENDOR = cesenta\nMONGOOSE_INSTALL_STAGING = YES\n# static library\nMONGOOSE_INSTALL_TARGET = NO\n\nMONGOOSE_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nMONGOOSE_DEPENDENCIES += openssl\nMONGOOSE_CFLAGS += -DMG_ENABLE_OPENSSL=1\nelse ifeq ($(BR2_PACKAGE_MBEDTLS),y)\nMONGOOSE_DEPENDENCIES += mbedtls\nMONGOOSE_CFLAGS += -DMG_ENABLE_MBEDTLS=1\nendif\n\ndefine MONGOOSE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CC) -c $(@D)/mongoose.c $(MONGOOSE_CFLAGS) -o $(@D)/mongoose.o\n\t$(TARGET_MAKE_ENV) $(TARGET_AR) rcs $(@D)/libmongoose.a $(@D)/mongoose.o\nendef\n\ndefine MONGOOSE_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 644 $(@D)/libmongoose.a \\\n\t\t$(STAGING_DIR)/usr/lib/libmongoose.a\n\t$(INSTALL) -D -m 644 $(@D)/mongoose.h \\\n\t\t$(STAGING_DIR)/usr/include/mongoose.h\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mongrel2/0001-Do-not-run-tests.patch",
    "content": "From 3cbef2195533f357c8a80c2840108662461273b7 Mon Sep 17 00:00:00 2001\nFrom: Lionel Orry <lionel.orry@gmail.com>\nDate: Wed, 27 Mar 2013 14:48:19 +0100\nSubject: [PATCH 4/4] Do not run tests.\n\nThis patch is specific to cross-compiled environments and avoids running\nthe tests on the host. It is not meant to be applied upstream.\n\nSigned-off-by: Lionel Orry <lionel.orry@gmail.com>\n---\n Makefile            | 2 +-\n tools/m2sh/Makefile | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 7dc4089..ca72630 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -16,7 +16,7 @@ TEST_SRC=$(wildcard tests/*_tests.c)\n TESTS=$(patsubst %.c,%,${TEST_SRC})\n MAKEOPTS=OPTFLAGS=\"${NOEXTCFLAGS} ${OPTFLAGS}\" OPTLIBS=\"${OPTLIBS}\" LIBS=\"${LIBS}\" DESTDIR=\"${DESTDIR}\" PREFIX=\"${PREFIX}\"\n \n-all: bin/mongrel2 tests m2sh procer\n+all: bin/mongrel2 m2sh procer filters config_modules\n \n dev: CFLAGS=-g -Wall -Isrc -Wall -Wextra $(OPTFLAGS) -D_FILE_OFFSET_BITS=64\n dev: all\ndiff --git a/tools/m2sh/Makefile b/tools/m2sh/Makefile\nindex b50d8a0..334e4da 100644\n--- a/tools/m2sh/Makefile\n+++ b/tools/m2sh/Makefile\n@@ -9,7 +9,7 @@ TESTS=$(patsubst %.c,%,${TEST_SRC})\n LIB_SRC=$(filter-out src/m2sh.c,${SOURCES})\n LIB_OBJ=$(filter-out src/m2sh.o,${OBJECTS})\n \n-all: ../lemon/lemon tests build/m2sh\n+all: ../lemon/lemon build/m2sh\n \n dev: CFLAGS=-g -Wall -Wextra -Isrc -I../../src $(OPTFLAGS)\n dev: all\n-- \n1.8.1.4\n\n"
  },
  {
    "path": "package/mongrel2/0002-Fix-Makefiles-for-cross-compilation.patch",
    "content": "From 298356c44a7df2b34c4e307c531d2010e2cb4b79 Mon Sep 17 00:00:00 2001\nFrom: Lionel Orry <lionel.orry@gmail.com>\nDate: Wed, 27 Mar 2013 15:56:56 +0100\nSubject: [PATCH] Fix Makefiles for cross-compilation\n\nThe CFLAGS handling in mongrel2 is really messy and it is hard to make\nit behave correctly with cross-compiling environments. This patch\nrestricts the Makefiles syntax to GNU Make, but help cross-compiling.\n\nThis is not meant to be applied upstream.\n\nSigned-off-by: Lionel Orry <lionel.orry@gmail.com>\n[Fabrice: refresh for 1.12.2]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile                      | 2 +-\n tools/config_modules/Makefile | 2 +-\n tools/filters/Makefile        | 2 +-\n tools/m2sh/Makefile           | 2 +-\n tools/procer/Makefile         | 2 +-\n 5 files changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 4e89c33..2f549a8 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1,5 +1,5 @@\n CFLAGS?=-g -O2\n-CFLAGS += -Wall -Wextra -Wno-implicit-fallthrough -Wno-unused-const-variable -I./src -DNDEBUG -D_FILE_OFFSET_BITS=64 -pthread\n+override CFLAGS += -Wall -Wextra -Wno-implicit-fallthrough -Wno-unused-const-variable -I./src -DNDEBUG -D_FILE_OFFSET_BITS=64 -pthread\n CFLAGS += ${OPTFLAGS}\n LIBS+=-lzmq -ldl -lsqlite3 -lmbedtls -lmbedx509 -lmbedcrypto\n PREFIX?=/usr/local\ndiff --git a/tools/config_modules/Makefile b/tools/config_modules/Makefile\nindex c2680d1..ada3169 100644\n--- a/tools/config_modules/Makefile\n+++ b/tools/config_modules/Makefile\n@@ -1,5 +1,5 @@\n PREFIX?=/usr/local\n-CFLAGS=-I../../src -I../../src/mbedtls/include $(OPTFLAGS) -fPIC -shared -nostartfiles -L../../build\n+override CFLAGS=-I../../src -I../../src/mbedtls/include $(OPTFLAGS) -fPIC -shared -nostartfiles -L../../build\n LDFLAGS=$(OPTLIBS)\n \n MONGO_SRC = mongo-c-driver/src/bson.c \\\ndiff --git a/tools/filters/Makefile b/tools/filters/Makefile\nindex 6505ad5..a968ef6 100644\n--- a/tools/filters/Makefile\n+++ b/tools/filters/Makefile\n@@ -1,5 +1,5 @@\n PREFIX?=/usr/local\n-CFLAGS=-I../../src -I../../src/mbedtls/include $(OPTFLAGS) -g -fPIC -shared -nostartfiles -L../../build\n+override CFLAGS=-I../../src -I../../src/mbedtls/include $(OPTFLAGS) -g -fPIC -shared -nostartfiles -L../../build\n LDFLAGS=$(OPTLIBS)\n \n all: null.so rewrite.so sendfile.so\ndiff --git a/tools/m2sh/Makefile b/tools/m2sh/Makefile\nindex b50d8a0..cc00062 100644\n--- a/tools/m2sh/Makefile\n+++ b/tools/m2sh/Makefile\n@@ -1,4 +1,4 @@\n-CFLAGS=-DNDEBUG -DNO_LINENOS -pthread -g -I../../src -Isrc -Wall $(OPTFLAGS)\n+override CFLAGS=-DNDEBUG -DNO_LINENOS -pthread -g -I../../src -Isrc -Wall $(OPTFLAGS)\n LIBS=-lzmq -lsqlite3 ../../build/libm2.a $(OPTLIBS)\n \n PREFIX?=/usr/local\ndiff --git a/tools/procer/Makefile b/tools/procer/Makefile\nindex bb9aa31..d377f7f 100644\n--- a/tools/procer/Makefile\n+++ b/tools/procer/Makefile\n@@ -1,4 +1,4 @@\n-CFLAGS=-DNDEBUG -pthread -g -I../../src -Wall $(OPTFLAGS)\n+override CFLAGS=-DNDEBUG -pthread -g -I../../src -Wall $(OPTFLAGS)\n PREFIX?=/usr/local\n LIBS?=-lzmq \n SOURCES=$(wildcard *.c)\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/mongrel2/0003-fix-multiple-definition-error-when-building-with-gcc10.patch",
    "content": "From c51815b10c39c6e802bd1b56549f1d479b480fcc Mon Sep 17 00:00:00 2001\nFrom: Andrew Sun <adsun701@gmail.com>\nDate: Sat, 18 Jul 2020 09:11:11 -0400\nSubject: [PATCH] fix multiple definition error when building with gcc10\n\n[Retrieved from:\nhttps://github.com/mongrel2/mongrel2/pull/343/commits/c51815b10c39c6e802bd1b56549f1d479b480fcc]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/unixy.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/unixy.h b/src/unixy.h\nindex 045e7c28..4225220c 100644\n--- a/src/unixy.h\n+++ b/src/unixy.h\n@@ -38,7 +38,7 @@\n #include <bstring.h>\n #include <unistd.h>\n \n-char *m2program;\n+extern char *m2program;\n \n int Unixy_chroot(bstring path);\n \n"
  },
  {
    "path": "package/mongrel2/0004-Support-urandom-inside-chroot.patch",
    "content": "From 330e8c8352eb0ed3c178ac6e0102403c0a835492 Mon Sep 17 00:00:00 2001\nFrom: Jason Miller <jason@milr.com>\nDate: Thu, 5 Jul 2018 20:53:51 -0700\nSubject: [PATCH] Support urandom inside chroot\n\nThis adds a new default entropy function that uses a /dev/urandom stream\nopened before the chroot.  If initializing that fails, it fallsback on\nHAVEGE only if HAVEGE is supported by the mbedTLS.\n\nThis should remove the hard requirement on HAVEGE\n\nresolves #326\nresolves #327\n\n[Upstream status: https://github.com/mongrel2/mongrel2/pull/328]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/mongrel2.c |  7 -------\n src/server.c   | 36 +++++++++++++++++++++++-------------\n 2 files changed, 23 insertions(+), 20 deletions(-)\n\ndiff --git a/src/mongrel2.c b/src/mongrel2.c\nindex da632d95..48ece8a5 100644\n--- a/src/mongrel2.c\n+++ b/src/mongrel2.c\n@@ -404,13 +404,6 @@ void taskmain(int argc, char **argv)\n     rc = attempt_chroot_drop(srv);\n     check(rc == 0, \"Major failure in chroot/droppriv, aborting.\"); \n \n-    // set up rng after chroot\n-    // TODO: once mbedtls is updated, we can move this back into Server_create\n-    if(srv->use_ssl) {\n-        rc = Server_init_rng(srv);\n-        check(rc == 0, \"Failed to initialize rng for server %s\", bdata(srv->uuid));\n-    }\n-\n     final_setup();\n \n     taskcreate(tickertask, NULL, TICKER_TASK_STACK);\ndiff --git a/src/server.c b/src/server.c\nindex 45761db4..e44e199b 100644\n--- a/src/server.c\n+++ b/src/server.c\n@@ -149,35 +149,45 @@ static int Server_load_ciphers(Server *srv, bstring ssl_ciphers_val)\n     return -1;\n }\n \n+static int urandom_entropy_func(void *data, unsigned char *output, size_t len)\n+{\n+    FILE* urandom = (FILE *)data;\n+    size_t rc = fread(output, 1, len, urandom);\n+\n+    if (rc != len) return MBEDTLS_ERR_ENTROPY_SOURCE_FAILED;\n+\n+    return 0;\n+}\n+\n int Server_init_rng(Server *srv)\n {\n     int rc;\n-    unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE];\n     void *ctx = NULL;\n \n-    mbedtls_entropy_init( &srv->entropy );\n+    FILE *urandom = fopen(\"/dev/urandom\",\"r\");\n \n-    // test the entropy source\n-    rc = mbedtls_entropy_func(&srv->entropy, buf, MBEDTLS_ENTROPY_BLOCK_SIZE);\n-\n-    if(rc == 0) {\n+    if(urandom != NULL) {\n         ctx = calloc(sizeof(mbedtls_ctr_drbg_context), 1);\n \n         mbedtls_ctr_drbg_init((mbedtls_ctr_drbg_context *)ctx);\n         rc = mbedtls_ctr_drbg_seed((mbedtls_ctr_drbg_context *)ctx,\n-            mbedtls_entropy_func, &srv->entropy, NULL, 0);\n+            urandom_entropy_func, urandom, NULL, 0);\n         check(rc == 0, \"Init rng failed: ctr_drbg_init returned %d\\n\", rc);\n \n         srv->rng_func = mbedtls_ctr_drbg_random;\n         srv->rng_ctx = ctx;\n     } else {\n-        log_warn(\"entropy source unavailable. falling back to havege rng\");\n \n+#if defined(MBEDTLS_HAVEGE_C)\n+        log_warn(\"entropy source unavailable. falling back to havege rng\");\n         ctx = calloc(sizeof(mbedtls_havege_state), 1);\n         mbedtls_havege_init((mbedtls_havege_state *)ctx);\n-\n         srv->rng_func = mbedtls_havege_random;\n         srv->rng_ctx = ctx;\n+#else\n+        log_err(\"Unable to initialize urandom entropy source, and mbedTLS compiled without HAVEGE\");\n+        goto error;\n+#endif\n     }\n \n     return 0;\n@@ -278,10 +288,10 @@ Server *Server_create(bstring uuid, bstring default_host,\n \n     // TODO: once mbedtls supports opening urandom early and keeping it open,\n     //   put the rng initialization back here (before chroot)\n-    //if(use_ssl) {\n-    //    rc = Server_init_rng(srv);\n-    //    check(rc == 0, \"Failed to initialize rng for server %s\", bdata(uuid));\n-    //}\n+    if(use_ssl) {\n+        rc = Server_init_rng(srv);\n+        check(rc == 0, \"Failed to initialize rng for server %s\", bdata(uuid));\n+    }\n \n     if(blength(chroot) > 0) {\n         srv->chroot = bstrcpy(chroot); check_mem(srv->chroot);\n"
  },
  {
    "path": "package/mongrel2/Config.in",
    "content": "# mongrel2 uses {get,make,swap}context() functions, which are\n# available in glibc for all architectures and in uClibc only for a\n# subset of the architectures\nconfig BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS\n\tbool\n\tdefault y if BR2_TOOLCHAIN_USES_GLIBC\n\tdefault y if BR2_TOOLCHAIN_USES_UCLIBC && \\\n\t\t(BR2_arm || BR2_armeb || BR2_i386 || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || BR2_sparc || BR2_x86_64)\n\ncomment \"mongrel2 needs a uClibc or glibc toolchain w/ C++, threads, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS\n\nconfig BR2_PACKAGE_MONGREL2\n\tbool \"mongrel2\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # zeromq\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # zeromq\n\tdepends on !BR2_STATIC_LIBS # uses dlopen()\n\tdepends on BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS\n\tselect BR2_PACKAGE_MBEDTLS\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_ZEROMQ\n\thelp\n\t  Mongrel2 is an application, language, and network architecture\n\t  agnostic web server that focuses on web applications using\n\t  modern browser technologies.\n\n\t  Mongrel2 supports 17 languages and platforms, HTTP, Flash\n\t  sockets, WebSockets, Long Polling, and many ways to deploy\n\t  and hack on it.\n\n\t  http://www.mongrel2.org\n"
  },
  {
    "path": "package/mongrel2/mongrel2.hash",
    "content": "# From https://mongrel2.org\nsha1  6f81fa747a1e198d1a655c3677b6de686a5a51f7  mongrel2-v1.12.2.tar.bz2\n\n# Locally computed\nsha256  3bffeae198c37a1efc9c12f77d5f1eb61cdf62b35d661babc2527dd030aa7d8f  mongrel2-v1.12.2.tar.bz2\nsha256  eb6e2a2baa637d06f6aa762886fbc8939934eb5fdb0b3a5b3882f2a61e9a4357  LICENSE\n"
  },
  {
    "path": "package/mongrel2/mongrel2.mk",
    "content": "################################################################################\n#\n# mongrel2\n#\n################################################################################\n\nMONGREL2_VERSION = 1.12.2\nMONGREL2_SOURCE = mongrel2-v$(MONGREL2_VERSION).tar.bz2\n# Do not use the github helper here, the generated tarball is *NOT* the same\n# as the one uploaded by upstream for the release.\nMONGREL2_SITE = https://github.com/mongrel2/mongrel2/releases/download/v$(MONGREL2_VERSION)\nMONGREL2_LICENSE = BSD-3-Clause\nMONGREL2_LICENSE_FILES = LICENSE\nMONGREL2_DEPENDENCIES = mbedtls sqlite zeromq\n\ndefine MONGREL2_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\tPREFIX=/usr all\nendef\n\ndefine MONGREL2_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\tPREFIX=/usr DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/monit/0001-no-force-static.patch",
    "content": "Do not force building a statically-linked binary\n\nStatically-linked binary do not work well with glibc, because it\nstill dlopen()s the NSS libraries.\n\nReported-by: Peter Kümmel <syntheticpp@gmx.net>\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN monit-5.7.orig/Makefile.am monit-5.7/Makefile.am\n--- monit-5.7.orig/Makefile.am\t2014-02-20 09:00:42.000000000 +0100\n+++ monit-5.7/Makefile.am\t2014-09-05 12:49:43.711104001 +0200\n@@ -85,7 +85,7 @@\n \t\t  src/process/sysdep_@ARCH@.c\n  \n monit_LDADD \t= libmonit/libmonit.la\n-monit_LDFLAGS \t= -static $(EXTLDFLAGS)\n+monit_LDFLAGS \t= $(EXTLDFLAGS)\n \n man_MANS \t= monit.1\n \n"
  },
  {
    "path": "package/monit/Config.in",
    "content": "config BR2_PACKAGE_MONIT\n\tbool \"monit\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Monit is a free open source utility for managing and\n\t  monitoring, processes, programs, files, directories and\n\t  filesystems on a UNIX system. Monit conducts automatic\n\t  maintenance and repair and can execute meaningful causal\n\t  actions in error situations.\n\n\t  http://mmonit.com/monit/\n\ncomment \"monit needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/monit/monit.hash",
    "content": "# From https://mmonit.com/monit/dist/monit-5.26.0.tar.gz.sha256:\nsha256  87fc4568a3af9a2be89040efb169e3a2e47b262f99e78d5ddde99dd89f02f3c2  monit-5.26.0.tar.gz\n# Locally computed\nsha256  d5a4f52b1a5e1e7fe14e01a76aac8b08dc6bbea15466058f271456c97aac1ada  COPYING\n"
  },
  {
    "path": "package/monit/monit.mk",
    "content": "################################################################################\n#\n# monit\n#\n################################################################################\n\nMONIT_VERSION = 5.26.0\nMONIT_SITE = http://mmonit.com/monit/dist\nMONIT_LICENSE = AGPL-3.0 with OpenSSL exception\nMONIT_LICENSE_FILES = COPYING\nMONIT_CPE_ID_VENDOR = mmonit\nMONIT_SELINUX_MODULES = monit\n#\n# Touching Makefile.am:\nMONIT_AUTORECONF = YES\n\nMONIT_CONF_ENV = \\\n\tlibmonit_cv_setjmp_available=yes \\\n\tlibmonit_cv_vsnprintf_c99_conformant=yes\n\nMONIT_CONF_OPTS += \\\n\t--without-pam \\\n\t--with-largefiles\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nMONIT_CONF_OPTS += --with-ssl=$(STAGING_DIR)/usr\nMONIT_DEPENDENCIES += openssl\nelse\nMONIT_CONF_OPTS += --without-ssl\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nMONIT_CONF_OPTS += --with-zlib\nMONIT_DEPENDENCIES += zlib\nelse\nMONIT_CONF_OPTS += --without-zlib\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch",
    "content": "From 02a44ee1df8176c72e75fd706d1a8f063d3196d5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 5 Nov 2018 22:50:40 +0100\nSubject: Fix linkage with a system libatomic_ops shared library\n\nIssue #247 (bdwgc).\n\nWhen bdwgc is linked with the external libatomic_ops, bdw-gc.pc must\ncontain the needed dynamic libraries (such as -latomic_ops) otherwise\nbuild of applications could fail on the link stage on some hosts:\n* libgc.so: undefined reference to 'AO_fetch_compare_and_swap_emulation'\n* libgc.so: undefined reference to 'AO_store_full_emulation'\n\nSo, this commit sets ATOMIC_OPS_LIBS to \"-latomic_ops\" when a system\natomic_ops library is used and uses ATOMIC_OPS_LIBS in bdw-gc.pc.in.\n\n* bdw-gc.pc.in (Libs): Add @ATOMIC_OPS_LIBS@.\n* configure.ac [$with_libatomic_ops!=no && $with_libatomic_ops!=none\n&& $THREADS!=none] (ATOMIC_OPS_LIBS): Set to -latomic_ops; do AC_SUBST.\n\nFix is cherry-picked from bdwgc upstream\n\nLink to original commit https://github.com/ivmai/bdwgc/commit/02a44ee1df8176c72e75fd706d1a8f063d3196d5?branch=02a44ee1df8176c72e75fd706d1a8f063d3196d5&diff=unified  \n\nSigned-off-by: Illia Bitkov <illia.bitkov@mind.be>\n\ndiff --git a/external/bdwgc/bdw-gc.pc.in b/external/bdwgc/bdw-gc.pc.in\nindex ef4c2341..a32e7598 100644\n--- a/external/bdwgc/bdw-gc.pc.in\n+++ b/external/bdwgc/bdw-gc.pc.in\n@@ -6,5 +6,5 @@ includedir=@includedir@\n Name: Boehm-Demers-Weiser Conservative Garbage Collector\n Description: A garbage collector for C and C++\n Version: @PACKAGE_VERSION@\n-Libs: -L${libdir} -lgc\n+Libs: -L${libdir} @ATOMIC_OPS_LIBS@ -lgc\n Cflags: -I${includedir}\ndiff --git a/external/bdwgc/configure.ac b/external/bdwgc/configure.ac\nindex 21abe8fa..9ffe81de 100644\n--- a/external/bdwgc/configure.ac\n+++ b/external/bdwgc/configure.ac\n@@ -1081,7 +1081,9 @@ AS_IF([test x\"$with_libatomic_ops\" = xno \\\n AC_MSG_CHECKING([which libatomic_ops to use])\n AS_IF([test x\"$with_libatomic_ops\" != xno],\n   [ AS_IF([test x\"$with_libatomic_ops\" != xnone -a x\"$THREADS\" != xnone],\n-          [ AC_MSG_RESULT([external]) ],\n+          [ AC_MSG_RESULT([external])\n+            ATOMIC_OPS_LIBS=\"-latomic_ops\"\n+            AC_SUBST([ATOMIC_OPS_LIBS]) ],\n           [ AC_MSG_RESULT([none])\n             AS_IF([test x\"$THREADS\" != xnone],\n                   [ AC_DEFINE([GC_BUILTIN_ATOMIC], [1],\n"
  },
  {
    "path": "package/mono/0002-Ongoing-work-on-the-cmake-build.patch",
    "content": "From 17650f7e0f571287bb14bb9b4fbde7b91d842bb4 Mon Sep 17 00:00:00 2001\nFrom: monojenkins <jo.shields+jenkins@xamarin.com>\nDate: Thu, 24 Sep 2020 12:17:34 -0400\nSubject: [PATCH] Ongoing work on the cmake build. (#20428)\n\n* Fix some warnings.\n* Avoid creating netcore/config.make.\n* Fix CPU_COUNT test.\n* Add missing source file.\n\nCo-authored-by: vargaz <vargaz@users.noreply.github.com>\n\n[Retrieved (and updated to keep only update of icall.c) from:\nhttps://github.com/mono/mono/commit/17650f7e0f571287bb14bb9b4fbde7b91d842bb4]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n mono/metadata/CMakeLists.txt | 1 +\n mono/metadata/icall.c        | 2 +-\n mono/mini/CMakeLists.txt     | 5 +++++\n 3 files changed, 7 insertions(+), 1 deletion(-)\n\ndiff --git a/mono/metadata/icall.c b/mono/metadata/icall.c\nindex fa991bc72e57..f2c003ac1ff1 100644\n--- a/mono/metadata/icall.c\n+++ b/mono/metadata/icall.c\n@@ -9605,7 +9605,7 @@ mono_create_icall_signatures (void)\n \tint n;\n \twhile ((n = sig->param_count)) {\n \t\t--sig->param_count; // remove ret\n-\t\tgsize_a *types = (gsize*)(sig + 1);\n+\t\tgsize_a *types = (gsize_a*)(sig + 1);\n \t\tfor (int i = 0; i < n; ++i) {\n \t\t\tgsize index = *types++;\n \t\t\tg_assert (index < G_N_ELEMENTS (lookup));\n"
  },
  {
    "path": "package/mono/Config.in",
    "content": "config BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_HOSTARCH = \"x86_64\"\n\tdefault y if BR2_HOSTARCH = \"x86\"\n\nconfig BR2_PACKAGE_MONO_ARCH_SUPPORTS\n\tbool\n\tdefault y if (BR2_arm || BR2_armeb || BR2_i386 || \\\n\t\t      BR2_powerpc || BR2_x86_64)\n\tdepends on BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS\n\nconfig BR2_PACKAGE_MONO\n\tbool \"mono\"\n\tdepends on BR2_PACKAGE_MONO_ARCH_SUPPORTS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBATOMIC_OPS\n\thelp\n\t  An open source, cross-platform, implementation of C#\n\t  and the CLR that is binary compatible with Microsoft.NET.\n\n\t  http://download.mono-project.com/sources/mono/\n\ncomment \"mono needs a toolchain w/ C++, threads, dynamic library\"\n\tdepends on BR2_PACKAGE_MONO_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/mono/mono.hash",
    "content": "# sha256 locally computed\nsha256 51de5c02ad511333f93ff585bca54c8784de35af4ff27b759d16b46c4402cdac  mono-6.12.0.90.tar.xz\nsha256 923c7053ad0d430cd9b0b69a0ccf3abb7170a1ce50ecbf01915b565a35823d10  LICENSE\nsha256 fc488f3ec9f36856bea8cce5cdde1449176341ef93a3962b691970f8981799f4  mcs/COPYING\nsha256 2c3c3ef532828bcd42bb3127349625a25291ff5ae7e6f8d42e0fe9b5be836a99  external/Newtonsoft.Json/Tools/7-zip/copying.txt\n"
  },
  {
    "path": "package/mono/mono.mk",
    "content": "################################################################################\n#\n# mono\n#\n################################################################################\n\nMONO_VERSION = 6.12.0.90\nMONO_SITE = http://download.mono-project.com/sources/mono\nMONO_SOURCE = mono-$(MONO_VERSION).tar.xz\nMONO_LICENSE = GPL-2.0 or MIT (compiler, tools), MIT (libs) or commercial\nMONO_LICENSE_FILES = LICENSE mcs/COPYING \\\n\texternal/Newtonsoft.Json/Tools/7-zip/copying.txt\nMONO_CPE_ID_VENDOR = mono-project\nMONO_INSTALL_STAGING = YES\n\n## Mono native\n\n# patching configure.ac\nMONO_AUTORECONF = YES\n\nMONO_COMMON_CONF_OPTS = --with-mcs-docs=no \\\n\t--with-ikvm-native=no \\\n\t--enable-minimal=profiler,debug \\\n\t--enable-static \\\n\t--disable-btls \\\n\t--disable-system-aot\n\n# Disable managed code (mcs folder) from building\nMONO_CONF_OPTS = $(MONO_COMMON_CONF_OPTS) --disable-mcs-build\n\n# The libraries have been built by the host-mono build. Since they are\n# architecture-independent, we simply copy them to the target.\ndefine MONO_INSTALL_LIBS\n\trsync -av --exclude=*.so --exclude=*.mdb \\\n\t\t$(HOST_DIR)/lib/mono $(TARGET_DIR)/usr/lib/\nendef\n\nMONO_POST_INSTALL_TARGET_HOOKS += MONO_INSTALL_LIBS\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nMONO_DEPENDENCIES += libiconv\nendif\n\nMONO_DEPENDENCIES += \\\n\thost-mono \\\n\t$(if $(BR2_PACKAGE_LIBUNWIND),libunwind) \\\n\tlibatomic_ops\n\n## Mono managed\n\nHOST_MONO_CONF_OPTS = $(MONO_COMMON_CONF_OPTS) --disable-libraries\n\n# ensure monolite is used\nHOST_MONO_MAKE_OPTS += EXTERNAL_MCS=false\n\nHOST_MONO_DEPENDENCIES = host-monolite host-gettext host-python3\n\ndefine HOST_MONO_SETUP_MONOLITE\n\trm -rf $(@D)/mcs/class/lib/monolite\n\t(cd $(@D)/mcs/class/lib; ln -s $(HOST_DIR)/lib/monolite monolite)\nendef\n\nHOST_MONO_POST_CONFIGURE_HOOKS += HOST_MONO_SETUP_MONOLITE\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/mono-gtksharp3/0001-Fixes-MONO_PROFILE_ENTER_LEAVE-undeclared.patch",
    "content": "From c1b9bd4214b78dc426bc6e6a07c23a8ab4ab50ea Mon Sep 17 00:00:00 2001\nFrom: Jordi Mas <jmas@softcatala.org>\nDate: Tue, 12 Mar 2019 12:24:19 +0100\nSubject: [PATCH] Fixes MONO_PROFILE_ENTER_LEAVE undeclared when compiling with\n newer versions of Mono (#266)\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/mono/gtk-sharp/commit/c1b9bd4214b78dc426bc6e6a07c23a8ab4ab50ea]\n---\n gtk/gui-thread-check/profiler/gui-thread-check.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/gtk/gui-thread-check/profiler/gui-thread-check.c b/gtk/gui-thread-check/profiler/gui-thread-check.c\nindex 11838e3b0..9f45fe6b2 100644\n--- a/gtk/gui-thread-check/profiler/gui-thread-check.c\n+++ b/gtk/gui-thread-check/profiler/gui-thread-check.c\n@@ -86,6 +86,10 @@ simple_method_enter (MonoProfiler *prof, MonoMethod *method)\n \t}\n }\n \n+#ifndef MONO_PROFILE_ENTER_LEAVE\n+#define MONO_PROFILE_ENTER_LEAVE (1 << 12)\n+#endif\n+\n void\n mono_profiler_startup (const char *desc)\n {\n"
  },
  {
    "path": "package/mono-gtksharp3/0002-Mono-compilation-error-branch.patch",
    "content": "From fe18352a4bc9f0cf3b6cf63b8cc03c5d6e41863b Mon Sep 17 00:00:00 2001\nFrom: plprevost <plprevost@sii.fr>\nDate: Wed, 12 May 2021 16:46:16 +0200\nSubject: [PATCH] refs issue:#298 Fix mono compilation errors\n\n[Retrieved from:\nhttps://github.com/mono/gtk-sharp/pull/299/commits/fe18352a4bc9f0cf3b6cf63b8cc03c5d6e41863b]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n sample/test/TestRange.cs | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/sample/test/TestRange.cs b/sample/test/TestRange.cs\nindex 82fb81105..8727c9a77 100644\n--- a/sample/test/TestRange.cs\n+++ b/sample/test/TestRange.cs\n@@ -8,7 +8,7 @@\n \n using System;\n \n-using Gtk;\n+using Gtk; using Range = Gtk.Range;\n \n namespace WidgetViewer {\n \n"
  },
  {
    "path": "package/mono-gtksharp3/Config.in",
    "content": "config BR2_PACKAGE_MONO_GTKSHARP3\n\tbool \"gtk# 3\"\n\tdepends on BR2_PACKAGE_LIBGTK3\n\thelp\n\t  Gtk# is a .NET language binding for the GTK+ toolkit.\n\t  This package provides version 3 of the bindings.\n\n\t  http://www.mono-project.com/docs/gui/gtksharp/\n"
  },
  {
    "path": "package/mono-gtksharp3/mono-gtksharp3.hash",
    "content": "# sha256 from https://download.gnome.org/sources/gtk-sharp/2.99/gtk-sharp-2.99.3.sha256sum\nsha256  6440f571416267ae0cb5698071d087b31e3084693fa2c829b1db37ca7ea2c3a2  gtk-sharp-2.99.3.tar.xz\n\n# Locally computed\nsha256  4b96eca92e6964e89c2faf6a810c9a0214daf6be651fa848fdfbb8cef80c04b1  COPYING\n"
  },
  {
    "path": "package/mono-gtksharp3/mono-gtksharp3.mk",
    "content": "################################################################################\n#\n# gtksharp3\n#\n################################################################################\n\nMONO_GTKSHARP3_VERSION_MAJOR = 2.99\nMONO_GTKSHARP3_VERSION = $(MONO_GTKSHARP3_VERSION_MAJOR).3\nMONO_GTKSHARP3_SITE = http://ftp.gnome.org/pub/gnome/sources/gtk-sharp/$(MONO_GTKSHARP3_VERSION_MAJOR)\nMONO_GTKSHARP3_SOURCE = gtk-sharp-$(MONO_GTKSHARP3_VERSION).tar.xz\nMONO_GTKSHARP3_LICENSE = LGPL-2.0, MIT (cairo)\nMONO_GTKSHARP3_LICENSE_FILES = COPYING\nMONO_GTKSHARP3_INSTALL_STAGING = YES\nMONO_GTKSHARP3_DEPENDENCIES = mono libgtk3\nMONO_GTKSHARP3_CONF_OPTS += CSC=$(HOST_DIR)/bin/mcs\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/monolite/monolite.hash",
    "content": "# sha256 locally computed\nsha256 0ac314f75ca2bc4455785f12ceb50da89b6dac90162f9f46afbbb988a8752d4b  monolite-linux-1A5E0066-58DC-428A-B21C-0AD6CDAE2789-latest.tar.gz\n"
  },
  {
    "path": "package/monolite/monolite.mk",
    "content": "################################################################################\n#\n# monolite\n#\n################################################################################\n\nMONOLITE_VERSION = 1A5E0066-58DC-428A-B21C-0AD6CDAE2789\nMONOLITE_SITE = http://download.mono-project.com/monolite\nMONOLITE_SOURCE = monolite-linux-$(MONOLITE_VERSION)-latest.tar.gz\nMONOLITE_LICENSE = LGPL-2.0 or commercial\n\ndefine HOST_MONOLITE_INSTALL_CMDS\n\tmkdir -p $(HOST_DIR)/lib/monolite-linux/$(MONOLITE_VERSION)\n\tcp -r $(@D)/* $(HOST_DIR)/lib/monolite-linux/$(MONOLITE_VERSION)\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/mosh/Config.in",
    "content": "comment \"mosh needs a toolchain w/ C++, threads, dynamic library, wchar, gcc >= 4.8\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| BR2_STATIC_LIBS || !BR2_USE_WCHAR \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n\nconfig BR2_PACKAGE_MOSH\n\tbool \"mosh\"\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n\tdepends on BR2_INSTALL_LIBSTDCPP # protobuf\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # protobuf\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # protobuf\n\tdepends on !BR2_STATIC_LIBS # protobuf\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_PROTOBUF\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_NETTLE if !BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\t# runtime dependency\n\tselect BR2_PACKAGE_OPENSSH if !BR2_PACKAGE_DROPBEAR_CLIENT\n\thelp\n\t  Remote terminal application that supports intermittent\n\t  connectivity, allows roaming, and provides speculative local\n\t  echo and line editing of user keystrokes.\n\n\t  Mosh requires that the remote machine has a locale setting\n\t  matching the one on the client.\n\n\t  When using mosh with dropbear on a remote machine, the\n\t  client needs mosh with a version above 1.3.0 and the\n\t  --no-ssh-pty option needs to be passed when starting the\n\t  connection.\n\n\t  https://mosh.org\n"
  },
  {
    "path": "package/mosh/mosh.hash",
    "content": "# From https://mailman.mit.edu/pipermail/mosh-users/2017-July/000357.html\nsha256 da600573dfa827d88ce114e0fed30210689381bbdcff543c931e4d6a2e851216 mosh-1.3.2.tar.gz\n# Locally calculcated\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\nsha256 8042495ddc8d99b883335d53552554eccf825fc1f0ba487d0f8e6656baaa8199  COPYING.iOS\n"
  },
  {
    "path": "package/mosh/mosh.mk",
    "content": "################################################################################\n#\n# mosh\n#\n################################################################################\n\nMOSH_VERSION = 1.3.2\nMOSH_SITE = https://mosh.org\nMOSH_DEPENDENCIES = zlib ncurses protobuf host-pkgconf\nMOSH_LICENSE = GPL-3.0+ with exception\nMOSH_LICENSE_FILES = COPYING COPYING.iOS\n\n# protobuf needs c++11 (since 3.6.0)\nMOSH_CONF_ENV += CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nMOSH_CONF_OPTS += --with-crypto-library=openssl\nMOSH_DEPENDENCIES += openssl\nelse\nMOSH_CONF_OPTS += --with-crypto-library=nettle\nMOSH_DEPENDENCIES += nettle\nendif\n\n# help the detection of the SSP support: mosh configure.ac doesn't do\n# a link test, so it doesn't detect when the toolchain doesn't have\n# libssp.\nifeq ($(BR2_TOOLCHAIN_HAS_SSP),)\nMOSH_CONF_ENV += \\\n\tax_cv_check_cflags__Werror___fstack_protector_all=no \\\n\tax_cv_check_cxxflags__Werror___fstack_protector_all=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mosquitto/Config.in",
    "content": "config BR2_PACKAGE_MOSQUITTO\n\tbool \"mosquitto\"\n\thelp\n\t  Eclipse Mosquitto is an open source (EPL/EDL licensed) message\n\t  broker that implements the MQTT protocol versions 5.0, 3.1.1\n\t  and 3.1. Mosquitto is lightweight and is suitable for use on\n\t  all devices from low power single board computers to full\n\t  servers.\n\n\t  The MQTT protocol provides a lightweight method of carrying\n\t  out messaging using a publish/subscribe model. This makes it\n\t  suitable for Internet of Things messaging such as with low\n\t  power sensors or mobile devices such as phones,\n\t  embedded computers or microcontrollers.\n\n\t  The Mosquitto project also provides a C library for\n\t  implementing MQTT clients, and the very popular mosquitto_pub\n\t  and mosquitto_sub command line MQTT clients.\n\n\t  http://mosquitto.org/\n\nconfig BR2_PACKAGE_MOSQUITTO_BROKER\n\tbool \"install the mosquitto broker\"\n\tdefault y\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # include <dlfcn.h>\n\tdepends on BR2_PACKAGE_MOSQUITTO\n\thelp\n\t  Build and install the mosquitto broker onto target.\n\ncomment \"mosquitto broker needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_MOSQUITTO\n"
  },
  {
    "path": "package/mosquitto/S50mosquitto",
    "content": "#!/bin/sh\n\nstart() {\n\tprintf \"Starting mosquitto: \"\n\tstart-stop-daemon -S -q -m -b -p /var/run/mosquitto.pid \\\n\t\t--exec /usr/sbin/mosquitto \\\n\t\t-- -c /etc/mosquitto/mosquitto.conf\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping mosquitto: \"\n\tstart-stop-daemon -K -q -p /var/run/mosquitto.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/mosquitto/mosquitto.hash",
    "content": "# Locally calculated after checking gpg signature\n# from https://mosquitto.org/files/source/mosquitto-2.0.13.tar.gz.asc\nsha256  d0dde8fdb12caf6e2426b4f28081919a2fce3448773bdb8af0d3cd5fe5776925  mosquitto-2.0.14.tar.gz\n\n# License files\nsha256  d3c4ccace4e5d3cc89d34cf2a0bc85b8596bfc0a32b815d0d77f9b7c41b5350c  LICENSE.txt\nsha256  8c349f80764d0648e645f41ef23772a70c995a0924b5235f735f4a3d09df127c  epl-v20\nsha256  86fc4a3f97cb769c04e8da557036c1066eb8bb22b2d0a5dd31464990fe84047c  edl-v10\n"
  },
  {
    "path": "package/mosquitto/mosquitto.mk",
    "content": "################################################################################\n#\n# mosquitto\n#\n################################################################################\n\nMOSQUITTO_VERSION = 2.0.14\nMOSQUITTO_SITE = https://mosquitto.org/files/source\nMOSQUITTO_LICENSE = EPL-2.0 or EDLv1.0\nMOSQUITTO_LICENSE_FILES = LICENSE.txt epl-v20 edl-v10\nMOSQUITTO_CPE_ID_VENDOR = eclipse\nMOSQUITTO_INSTALL_STAGING = YES\n\nMOSQUITTO_MAKE_OPTS = \\\n\tCLIENT_STATIC_LDADD=\"$(MOSQUITTO_STATIC_LIBS)\" \\\n\tUNAME=Linux \\\n\tSTRIP=true \\\n\tprefix=/usr \\\n\tWITH_WRAP=no \\\n\tWITH_DOCS=no\n\nifeq ($(BR2_SHARED_LIBS),y)\nMOSQUITTO_MAKE_OPTS += WITH_STATIC_LIBRARIES=no\nelse\nMOSQUITTO_MAKE_OPTS += WITH_STATIC_LIBRARIES=yes\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nMOSQUITTO_MAKE_OPTS += WITH_SHARED_LIBRARIES=no\nelse\nMOSQUITTO_MAKE_OPTS += WITH_SHARED_LIBRARIES=yes\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nMOSQUITTO_MAKE_OPTS += WITH_SYSTEMD=yes\nMOSQUITTO_DEPENDENCIES += systemd\nendif\n\n# adns uses getaddrinfo_a\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)\nMOSQUITTO_MAKE_OPTS += WITH_ADNS=yes\nelse\nMOSQUITTO_MAKE_OPTS += WITH_ADNS=no\nendif\n\n# threaded API uses pthread_setname_np\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),y)\nMOSQUITTO_MAKE_OPTS += WITH_THREADING=yes\nelse\nMOSQUITTO_MAKE_OPTS += WITH_THREADING=no\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nMOSQUITTO_DEPENDENCIES += host-pkgconf openssl\nMOSQUITTO_MAKE_OPTS += WITH_TLS=yes\nMOSQUITTO_STATIC_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nelse\nMOSQUITTO_MAKE_OPTS += WITH_TLS=no\nendif\n\nifeq ($(BR2_PACKAGE_CJSON),y)\nMOSQUITTO_DEPENDENCIES += cjson\nMOSQUITTO_MAKE_OPTS += WITH_CJSON=yes\nMOSQUITTO_STATIC_LIBS += -lcjson\nelse\nMOSQUITTO_MAKE_OPTS += WITH_CJSON=no\nendif\n\nifeq ($(BR2_PACKAGE_C_ARES),y)\nMOSQUITTO_DEPENDENCIES += c-ares\nMOSQUITTO_MAKE_OPTS += WITH_SRV=yes\nelse\nMOSQUITTO_MAKE_OPTS += WITH_SRV=no\nendif\n\nifeq ($(BR2_PACKAGE_LIBWEBSOCKETS),y)\nMOSQUITTO_DEPENDENCIES += libwebsockets\nMOSQUITTO_MAKE_OPTS += WITH_WEBSOCKETS=yes\nelse\nMOSQUITTO_MAKE_OPTS += WITH_WEBSOCKETS=no\nendif\n\n# C++ support is only used to create a wrapper library\nifneq ($(BR2_INSTALL_LIBSTDCPP),y)\ndefine MOSQUITTO_DISABLE_CPP\n\t$(SED) '/-C cpp/d' $(@D)/lib/Makefile\nendef\n\nMOSQUITTO_POST_PATCH_HOOKS += MOSQUITTO_DISABLE_CPP\nendif\n\nMOSQUITTO_MAKE_DIRS = lib client\nifeq ($(BR2_PACKAGE_MOSQUITTO_BROKER),y)\nMOSQUITTO_MAKE_DIRS += src\nendif\n\ndefine MOSQUITTO_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) DIRS=\"$(MOSQUITTO_MAKE_DIRS)\" \\\n\t\t$(MOSQUITTO_MAKE_OPTS)\nendef\n\ndefine MOSQUITTO_INSTALL_STAGING_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) DIRS=\"$(MOSQUITTO_MAKE_DIRS)\" \\\n\t\t$(MOSQUITTO_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install\nendef\n\ndefine MOSQUITTO_INSTALL_TARGET_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) DIRS=\"$(MOSQUITTO_MAKE_DIRS)\" \\\n\t\t$(MOSQUITTO_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install\n\trm -f $(TARGET_DIR)/etc/mosquitto/*.example\n\t$(INSTALL) -D -m 0644 $(@D)/mosquitto.conf \\\n\t\t$(TARGET_DIR)/etc/mosquitto/mosquitto.conf\nendef\n\nifeq ($(BR2_PACKAGE_MOSQUITTO_BROKER),y)\ndefine MOSQUITTO_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/mosquitto/S50mosquitto \\\n\t\t$(TARGET_DIR)/etc/init.d/S50mosquitto\nendef\n\ndefine MOSQUITTO_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(@D)/service/systemd/mosquitto.service.notify \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/mosquitto.service\nendef\n\ndefine MOSQUITTO_USERS\n\tmosquitto -1 nobody -1 * - - - Mosquitto user\nendef\nendif\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/most/Config.in",
    "content": "config BR2_PACKAGE_MOST\n\tbool \"most\"\n\tdepends on BR2_USE_MMU # slang\n\tselect BR2_PACKAGE_SLANG\n\thelp\n\t  most is a powerful pager, including features like multi\n\t  document support, hex view and unpack on-the-fly.\n\n\t  Note: this program depends on the slang library which is\n\t  rather large to be used just for this pager.\n\n\t  https://www.jedsoft.org/most/\n"
  },
  {
    "path": "package/most/most.hash",
    "content": "# From https://www.jedsoft.org/releases/most/\nsha1 db811669a6b22c15478c957b439b5e4483ce1c95 most-5.1.0.tar.gz\n# Locally computed\nsha256 db805d1ffad3e85890802061ac8c90e3c89e25afb184a794e03715a3ed190501  most-5.1.0.tar.gz\nsha256 1b2a567f289f66a143c56353e7b3d4fa5862514a5e3c5cfdf8b02ee5e5aaa953  COPYING\nsha256 47ad1c3f9b94d6ec42d9bee6c5df980c5c2daa5b9d22113545ae6a3f21ca2f52  COPYRIGHT\n"
  },
  {
    "path": "package/most/most.mk",
    "content": "################################################################################\n#\n# most\n#\n################################################################################\n\nMOST_SITE = http://www.jedsoft.org/releases/most\nMOST_VERSION = 5.1.0\nMOST_LICENSE = GPL-2.0+\nMOST_LICENSE_FILES = COPYING COPYRIGHT\nMOST_DEPENDENCIES = slang\n\nMOST_CONF_OPTS = --with-slang=$(STAGING_DIR)/usr\nMOST_MAKE = $(MAKE1)\n\ndefine MOST_REMOVE_LOCAL_SLANG_CHECK\n\t$(SED) 's/ slangversion / /g' $(@D)/src/Makefile.in\nendef\nMOST_POST_PATCH_HOOKS += MOST_REMOVE_LOCAL_SLANG_CHECK\n\ndefine MOST_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/src/objs/most $(TARGET_DIR)/usr/bin/most\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/motion/0001-Fix-build-with-GCC-10.patch",
    "content": "From a4a48baf86b18b792fb5e53648b4efd02b3db7b7 Mon Sep 17 00:00:00 2001\nFrom: Vasiliy Glazov <vascom2@gmail.com>\nDate: Sun, 8 Mar 2020 03:00:21 +0300\nSubject: [PATCH] Fix build with GCC 10.\n\n[Retrieved (and backported) from:\nhttps://github.com/Motion-Project/motion/commit/a4a48baf86b18b792fb5e53648b4efd02b3db7b7]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/netcam.h    | 2 +-\n src/translate.c | 2 ++\n src/translate.h | 2 +-\n 3 files changed, 4 insertions(+), 2 deletions(-)\n\ndiff --git a/netcam.h b/netcam.h\nindex 2951d917..4ee0e1c8 100644\n--- a/netcam.h\n+++ b/netcam.h\n@@ -113,7 +113,7 @@ typedef struct netcam_image_buff {\n } netcam_buff;\n typedef netcam_buff *netcam_buff_ptr;\n \n-struct netcam_caps {                    /* netcam capabilities: */\n+extern struct netcam_caps {                    /* netcam capabilities: */\n         unsigned char streaming;        /*  See the NCS_* defines */\n         unsigned char content_length;   /*  0 - unsupported     */\n } caps;\ndiff --git a/translate.c b/translate.c\nindex 0c9f1105..a212d9de 100644\n--- a/translate.c\n+++ b/translate.c\n@@ -10,6 +10,8 @@\n #include \"motion.h\"\n #include \"translate.h\"\n \n+int nls_enabled;\n+\n void translate_locale_chg(const char *langcd){\n #ifdef HAVE_GETTEXT\n     /* This routine is for development testing only.  It is not used for\ndiff --git a/translate.h b/translate.h\nindex 0832ffd8..eeba3745 100644\n--- a/translate.h\n+++ b/translate.h\n@@ -10,7 +10,7 @@\n #ifndef _INCLUDE_TRANSLATE_H_\n #define _INCLUDE_TRANSLATE_H_\n \n-int nls_enabled;\n+extern int nls_enabled;\n \n #ifdef HAVE_GETTEXT\n #   include <libintl.h>\n"
  },
  {
    "path": "package/motion/0001-configure.ac-remove-po-Makefile.in.patch",
    "content": "From 0e05d4116678de3a7d913177a8fc63f10e58ad24 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 18 Jan 2020 00:00:21 +0100\nSubject: [PATCH] configure.ac: remove po/Makefile.in\n\nThe file po/Makefile.in is automatically added to AC_OUTPUT while using\ngettexize\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not upstreamable]\n---\n configure.ac | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 3876adb..221dacf 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -471,7 +471,6 @@ LDFLAGS=\"$TEMP_LDFLAGS\"\n AC_CONFIG_FILES([\n \tMakefile\n \tsrc/Makefile\n-  po/Makefile.in\n   man/Makefile\n   data/camera1-dist.conf\n   data/camera2-dist.conf\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/motion/0001-without-nls.patch",
    "content": "gist 4d213af40bb4786c3a51535bf7cc1fdd\nAuthor: Mr-DaveDev\nDate:   Thu Sep 29 22:07:12 2019\n\ndiff --git a/Makefile.am b/Makefile.am\nindex ecc20f1..8b262c0 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -1,6 +1,4 @@\n-ACLOCAL_AMFLAGS = -I m4\n-\n-SUBDIRS = src po man\n+SUBDIRS = src man\n \n sysconfdir = @sysconfdir@/$(PACKAGE)\n sysconf_DATA = \\\ndiff --git a/configure.ac b/configure.ac\nindex 6ee2554..42b1c36 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -6,10 +6,6 @@ AC_GNU_SOURCE\n AC_CONFIG_HEADERS([config.h])\n AC_CONFIG_SRCDIR([src/motion.c])\n AC_CANONICAL_HOST\n-AC_CONFIG_MACRO_DIR([m4])\n-\n-AM_GNU_GETTEXT([external])\n-AM_GNU_GETTEXT_VERSION([0.19])\n \n ##############################################################################\n ###  Check additional system headers\n@@ -470,7 +466,6 @@ LDFLAGS=\"$TEMP_LDFLAGS\"\n AC_CONFIG_FILES([\n \tMakefile\n \tsrc/Makefile\n-  po/Makefile.in\n   man/Makefile\n   data/camera1-dist.conf\n   data/camera2-dist.conf\ndiff --git a/src/Makefile.am b/src/Makefile.am\nindex bedd1b3..aa253ca 100644\n--- a/src/Makefile.am\n+++ b/src/Makefile.am\n@@ -4,7 +4,6 @@ if INC_MMAL_SRC\n MMAL_SRC=raspicam/RaspiCamControl.c raspicam/RaspiCLI.c\n endif\n \n-LIBS = @LIBINTL@ @LIBS@\n \n bin_PROGRAMS = motion\n \n"
  },
  {
    "path": "package/motion/0002-enable-h264-omx-codec.patch",
    "content": "Author: jasaw\n\n\ndiff --git a/src/ffmpeg.c b/src/ffmpeg.c\nindex 3af961a..d59f0e1 100644\n--- a/src/ffmpeg.c\n+++ b/src/ffmpeg.c\n@@ -680,7 +680,7 @@ static const char *ffmpeg_codec_is_blacklisted(const char *codec_name){\n          * - remove the \"h264_omx\" from this blacklist.\n          * More information: https://github.com/Motion-Project/motion/issues/433\n          */\n-        {\"h264_omx\", \"Codec causes lock up on your FFMpeg version\"},\n+        //{\"h264_omx\", \"Codec causes lock up on your FFMpeg version\"},\n #endif\n #if (LIBAVFORMAT_VERSION_MAJOR < 57) || ((LIBAVFORMAT_VERSION_MAJOR == 57) && (LIBAVFORMAT_VERSION_MINOR < 41))\n         {\"h264_v4l2m2m\", \"FFMpeg version is too old\"},\n\n"
  },
  {
    "path": "package/motion/Config.in",
    "content": "config BR2_PACKAGE_MOTION\n\tbool \"motion\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_FFMPEG_SWSCALE\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBMICROHTTPD\n\thelp\n\t  Motion is a program that monitors the video signal from\n\t  cameras. It is able to detect if a significant part of\n\t  the picture has changed; in other words, it can detect motion.\n\n\t  libv4l has to be selected to be able to use a local camera.\n\n\t  https://motion-project.github.io\n\ncomment \"motion needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/motion/S99motion",
    "content": "#!/bin/sh\n\nNAME=motion\nPIDFILE=/var/run/$NAME.pid\nDAEMON=/usr/bin/$NAME\n\nstart() {\n\tprintf \"Starting $NAME: \"\n\tstart-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping $NAME: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart|reload}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/motion/motion.hash",
    "content": "# Locally computed:\nsha256  3fb0d14fff8a8a143716223b5d2d55c0f52b11badf13a2e485b98bae3cf1b572  motion-4.4.0.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/motion/motion.mk",
    "content": "################################################################################\n#\n# motion\n#\n################################################################################\n\nMOTION_VERSION = 4.4.0\nMOTION_SITE = $(call github,Motion-Project,motion,release-$(MOTION_VERSION))\nMOTION_LICENSE = GPL-2.0\nMOTION_LICENSE_FILES = LICENSE\nMOTION_CPE_ID_VENDOR = motion_project\nMOTION_DEPENDENCIES = host-pkgconf jpeg libmicrohttpd $(TARGET_NLS_DEPENDENCIES)\n# From git\nMOTION_AUTORECONF = YES\nMOTION_GETTEXTIZE = YES\n\nMOTION_CONF_OPTS += --without-optimizecpu\n\nifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y)\nMOTION_DEPENDENCIES += ffmpeg\nMOTION_CONF_OPTS += --with-ffmpeg\nelse\nMOTION_CONF_OPTS += --without-ffmpeg\nendif\n\nifeq ($(BR2_PACKAGE_MYSQL),y)\nMOTION_DEPENDENCIES += mysql\nMOTION_CONF_OPTS += --with-mysql\nelse\nMOTION_CONF_OPTS += --without-mysql\nendif\n\nifeq ($(BR2_PACKAGE_POSTGRESQL),y)\nMOTION_DEPENDENCIES += postgresql\nMOTION_CONF_OPTS += --with-pgsql\nelse\nMOTION_CONF_OPTS += --without-pgsql\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE),y)\nMOTION_DEPENDENCIES += sqlite\nMOTION_CONF_OPTS += --with-sqlite3\nelse\nMOTION_CONF_OPTS += --without-sqlite3\nendif\n\nifeq ($(BR2_PACKAGE_WEBP_MUX),y)\nMOTION_DEPENDENCIES += webp\nMOTION_CONF_OPTS += --with-webp\nelse\nMOTION_CONF_OPTS += --without-webp\nendif\n\n# Do not use default install target as it installs many unneeded files and\n# directories: docs, examples and init scripts\ndefine MOTION_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/data/motion-dist.conf \\\n\t\t$(TARGET_DIR)/etc/motion/motion.conf\n\t$(INSTALL) -D -m 0755 $(@D)/src/motion $(TARGET_DIR)/usr/bin/motion\nendef\n\ndefine MOTION_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/motion/S99motion \\\n\t\t$(TARGET_DIR)/etc/init.d/S99motion\nendef\n\ndefine MOTION_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/motion/motion.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/motion.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/motion/motion.service",
    "content": "[Unit]\nDescription=Motion camera monitoring system\nAfter=network.target\n\n[Service]\nExecStart=/usr/bin/motion\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/mp4v2/0001-Fix-GCC7-build.patch",
    "content": "From 855e9674232808ff3be7191b697dfb56917db21f Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?S=C3=A9rgio=20M=2E=20Basto?= <sergio@serjux.com>\nDate: Wed, 8 Feb 2017 00:56:32 +0000\nSubject: [PATCH] Fix GCC7 build\n\nif (*pSlash != '\\0') {\n\nAs it stands the body of that if will always execute and when there are\nno encoding parameters ppEncodingParams will be returned as a pointer to\nan empty string rather than as a null pointer\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n[Upstream status: https://github.com/TechSmith/mp4v2/pull/36]\n---\n src/rtphint.cpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/rtphint.cpp b/src/rtphint.cpp\nindex e07309d..1eb01f5 100644\n--- a/src/rtphint.cpp\n+++ b/src/rtphint.cpp\n@@ -339,7 +339,7 @@ void MP4RtpHintTrack::GetPayload(\n                 pSlash = strchr(pSlash, '/');\n                 if (pSlash != NULL) {\n                     pSlash++;\n-                    if (pSlash != '\\0') {\n+                    if (*pSlash != '\\0') {\n                         length = (uint32_t)strlen(pRtpMap) - (pSlash - pRtpMap);\n                         *ppEncodingParams = (char *)MP4Calloc(length + 1);\n                         strncpy(*ppEncodingParams, pSlash, length);\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/mp4v2/0002-src-mp4track.cpp-replace-nullptr-by-NULL.patch",
    "content": "From 78cf76b5d661e37e958163c37c0ad95940c09591 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 30 May 2020 11:42:19 +0200\nSubject: [PATCH] src/mp4track.cpp: replace nullptr by NULL\n\nCommit 15ec11166ba9ee7b77631d0d9234522f656cfd66 added code that uses\nnullptr. nullptr is C++11, it will break the build with gcc < 5.\n\nSemantically, NULL and nullptr are different, so should not be mixed.\nIn this situaiton, m_File.FindAtom() indeed does not return nullptr,\nbut NULL (on error, that is).\n\nSwitch back to comparing against NULL.\n\nFixes:\n - http://autobuild.buildroot.org/results/14937c96a82fb3d10e5d83bd7b2905b846fb09f9\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not sent yet]\n---\n src/mp4track.cpp | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/src/mp4track.cpp b/src/mp4track.cpp\nindex 4b8fc9d..42489eb 100644\n--- a/src/mp4track.cpp\n+++ b/src/mp4track.cpp\n@@ -908,16 +908,16 @@ File* MP4Track::GetSampleFile( MP4SampleId sampleId )\n        MP4FtypAtom *pFtypAtom = reinterpret_cast<MP4FtypAtom *>( m_File.FindAtom( \"ftyp\" ) );\n \n        // MOV spec does not require \"ftyp\" atom...\n-       if ( pFtypAtom == nullptr )\n+       if ( pFtypAtom == NULL )\n        {\n-          return nullptr;\n+          return NULL;\n        }\n        else\n        {\n           // ... but most often it is present with a \"qt  \" value\n           const char *majorBrand = pFtypAtom->majorBrand.GetValue();\n           if ( ::strcmp( pFtypAtom->majorBrand.GetValue(), \"qt  \" ) == 0 )\n-             return nullptr;\n+             return NULL;\n        }\n        throw new Exception( \"invalid stsd entry\", __FILE__, __LINE__, __FUNCTION__ );\n     }\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/mp4v2/0003-Static-cast-to-unsigned-int-for-cases.patch",
    "content": "From a5ca35b044bbf13c0b16f0066bf24646604bb218 Mon Sep 17 00:00:00 2001\nFrom: \"Jason A. Donenfeld\" <Jason@zx2c4.com>\nDate: Thu, 6 Aug 2020 15:22:04 +0200\nSubject: [PATCH] Static cast to unsigned int for cases\n\nSigned-off-by: Jason A. Donenfeld <Jason@zx2c4.com>\n[Retrieved from:\nhttps://gitweb.gentoo.org/repo/gentoo.git/tree/media-libs/libmp4v2/files/libmp4v2-2.0.0-unsigned-int-cast.patch]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n libutil/Utility.cpp  | 2 +-\n util/mp4art.cpp      | 2 +-\n util/mp4chaps.cpp    | 2 +-\n util/mp4file.cpp     | 2 +-\n util/mp4subtitle.cpp | 2 +-\n util/mp4track.cpp    | 2 +-\n 6 files changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/libutil/Utility.cpp b/libutil/Utility.cpp\nindex 76cdd12..d6739d4 100644\n--- a/libutil/Utility.cpp\n+++ b/libutil/Utility.cpp\n@@ -493,7 +493,7 @@ Utility::process_impl()\n         if( codes.find( code ) == codes.end() )\n             continue;\n \n-        switch( code ) {\n+        switch( static_cast<unsigned int>( code ) ) {\n             case 'z':\n                 _optimize = true;\n                 break;\ndiff --git a/util/mp4art.cpp b/util/mp4art.cpp\nindex add935e..6e7f531 100644\n--- a/util/mp4art.cpp\n+++ b/util/mp4art.cpp\n@@ -376,7 +376,7 @@ ArtUtility::utility_option( int code, bool& handled )\n {\n     handled = true;\n \n-    switch( code ) {\n+    switch( static_cast<unsigned int> ( code ) ) {\n         case LC_ART_ANY:\n             _artFilter = numeric_limits<uint32_t>::max();\n             break;\ndiff --git a/util/mp4chaps.cpp b/util/mp4chaps.cpp\nindex 98400f8..ccc8b70 100644\n--- a/util/mp4chaps.cpp\n+++ b/util/mp4chaps.cpp\n@@ -632,7 +632,7 @@ ChapterUtility::utility_option( int code, bool& handled )\n {\n     handled = true;\n \n-    switch( code ) {\n+    switch( static_cast<unsigned int> ( code ) ) {\n         case 'A':\n         case LC_CHPT_ANY:\n             _ChapterType = MP4ChapterTypeAny;\ndiff --git a/util/mp4file.cpp b/util/mp4file.cpp\nindex c27844b..b127cd1 100644\n--- a/util/mp4file.cpp\n+++ b/util/mp4file.cpp\n@@ -189,7 +189,7 @@ FileUtility::utility_option( int code, bool& handled )\n {\n     handled = true;\n \n-    switch( code ) {\n+    switch( static_cast<unsigned int>( code ) ) {\n         case LC_LIST:\n             _action = &FileUtility::actionList;\n             break;\ndiff --git a/util/mp4subtitle.cpp b/util/mp4subtitle.cpp\nindex 7462153..19d977d 100644\n--- a/util/mp4subtitle.cpp\n+++ b/util/mp4subtitle.cpp\n@@ -164,7 +164,7 @@ SubtitleUtility::utility_option( int code, bool& handled )\n {\n     handled = true;\n \n-    switch( code ) {\n+    switch( static_cast<unsigned int>( code ) ) {\n         case LC_LIST:\n             _action = &SubtitleUtility::actionList;\n             break;\ndiff --git a/util/mp4track.cpp b/util/mp4track.cpp\nindex d550506..cd63d7e 100644\n--- a/util/mp4track.cpp\n+++ b/util/mp4track.cpp\n@@ -788,7 +788,7 @@ TrackUtility::utility_option( int code, bool& handled )\n {\n     handled = true;\n \n-    switch( code ) {\n+    switch( static_cast<unsigned int>( code ) ) {\n         case LC_TRACK_WILDCARD:\n             _trackMode = TM_WILDCARD;\n             break;\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/mp4v2/Config.in",
    "content": "config BR2_PACKAGE_MP4V2\n\tbool \"mp4v2\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  The MP4v2 library provides functions to read, create, and\n\t  modify mp4 files.\n\n\t  https://github.com/TechSmith/mp4v2/\n\nif BR2_PACKAGE_MP4V2\n\nconfig BR2_PACKAGE_MP4V2_UTIL\n\tbool \"Install mp4 command line tools\"\n\thelp\n\t  Enable to install the mp4 command line tools mp4art,\n\t  mp4chaps, mp4extract, mp4info, mp4subtitle, mp4tags, and\n\t  mp4trackdump.\n\nendif\n\ncomment \"mp4v2 needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/mp4v2/mp4v2.hash",
    "content": "# Locally computed\nsha256  e3ad6c2dc451b0875dbe34bfe7f51f4fe278b391434c886083e6d3ecd5fa08c2  mp4v2-4.1.3.tar.gz\nsha256  15e38684c940176e2fc76331a2299d2ab5115ac997078f768ef31b896af69fc5  COPYING\n"
  },
  {
    "path": "package/mp4v2/mp4v2.mk",
    "content": "################################################################################\n#\n# mp4v2\n#\n################################################################################\n\nMP4V2_VERSION = 4.1.3\nMP4V2_SITE = \\\n\t$(call github,TechSmith,mp4v2,Release-ThirdParty-MP4v2-$(MP4V2_VERSION))\nMP4V2_INSTALL_STAGING = YES\nMP4V2_LICENSE = MPL-1.1\nMP4V2_LICENSE_FILES = COPYING\n\n# help2man expects to be able to run utilities on the build machine to\n# grab --help output which doesn't work when cross compiling, so\n# disable it\nMP4V2_CONF_ENV = ac_cv_prog_FOUND_HELP2MAN=no\n\nifeq ($(BR2_PACKAGE_MP4V2_UTIL),y)\nMP4V2_CONF_OPTS += --enable-util\nelse\nMP4V2_CONF_OPTS += --disable-util\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mpc/Config.in",
    "content": "config BR2_PACKAGE_MPC\n\tbool \"mpc\"\n\tselect BR2_PACKAGE_MPFR\n\tselect BR2_PACKAGE_GMP\n\thelp\n\t  Mpc is a C library for the arithmetic of complex numbers with\n\t  arbitrarily high precision and correct rounding of the result.\n\t  It is built upon and follows the same principles as Mpfr.\n\n\t  http://www.multiprecision.org/\n"
  },
  {
    "path": "package/mpc/mpc.hash",
    "content": "# Locally calculated\nsha256  17503d2c395dfcf106b622dc142683c1199431d095367c6aacba6eec30340459  mpc-1.2.1.tar.gz\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING.LESSER\n"
  },
  {
    "path": "package/mpc/mpc.mk",
    "content": "################################################################################\n#\n# mpc\n#\n################################################################################\n\nMPC_VERSION = 1.2.1\nMPC_SITE = $(BR2_GNU_MIRROR)/mpc\nMPC_LICENSE = LGPL-3.0+\nMPC_LICENSE_FILES = COPYING.LESSER\nMPC_INSTALL_STAGING = YES\nMPC_DEPENDENCIES = gmp mpfr\nHOST_MPC_DEPENDENCIES = host-gmp host-mpfr\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/mpd/0001-src-event-meson.build-add-atomic-dependency-for-spar.patch",
    "content": "From cb190801706da046823c74f89472af83ff947ce1 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 17 Aug 2019 22:25:06 +0200\nSubject: [PATCH] src/event/meson.build: add atomic dependency for sparc\n\nLinking with libatomic is needed on sparc otherwise build fails on:\n/usr/lfs/v0/rc-buildroot-test/scripts/instance-0/output/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/7.4.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: src/event/libevent.a(MaskMonitor.cxx.o): undefined reference to symbol '__atomic_fetch_or_4@@LIBATOMIC_1.0'\n\nFixes:\n - http://autobuild.buildroot.org/results/7a9fdb7e323892fb6ed85a2441054303e889c089\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not sent (the same kind of patch for ncmpc was\nrefused: https://github.com/MusicPlayerDaemon/ncmpc/pull/45)]\n---\n src/event/meson.build | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/src/event/meson.build b/src/event/meson.build\nindex bc13bbcd2..88370c03a 100644\n--- a/src/event/meson.build\n+++ b/src/event/meson.build\n@@ -21,9 +21,13 @@ event = static_library(\n   ],\n )\n \n+# Needed on sparc\n+atomic_dep = c_compiler.find_library('atomic', required: false)\n+\n event_dep = declare_dependency(\n   link_with: event,\n   dependencies: [\n+    atomic_dep,\n     thread_dep,\n     system_dep,\n     boost_dep,\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/mpd/Config.in",
    "content": "menuconfig BR2_PACKAGE_MPD\n\tbool \"mpd\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR # flac\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_8 # C++17\n\tdepends on BR2_HOST_GCC_AT_LEAST_8 # C++17\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  MPD is a flexible, powerful, server-side application\n\t  for playing music. Through plugins and libraries\n\t  it can play a variety of sound files while being\n\t  controlled by its network protocol.\n\n\t  http://www.musicpd.org\n\nif BR2_PACKAGE_MPD\n\ncomment \"Archive plugins\"\n\nconfig BR2_PACKAGE_MPD_BZIP2\n\tbool \"bzip2\"\n\tselect BR2_PACKAGE_BZIP2\n\thelp\n\t  Enable bzip2 archive support.\n\nconfig BR2_PACKAGE_MPD_SQLITE\n\tbool \"sqlite\"\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  Enable sqlite database support.\n\t  If you don't use sqlite it will use an ASCII database.\n\nconfig BR2_PACKAGE_MPD_ZZIP\n\tbool \"zzip\"\n\tselect BR2_PACKAGE_ZZIPLIB\n\thelp\n\t  Enable ZIP archive support.\n\ncomment \"Commercial services\"\n\nconfig BR2_PACKAGE_MPD_QOBUZ\n\tbool \"qobuz\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_MPD_CURL\n\tselect BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_YAJL\n\thelp\n\t  Play songs from the commercial streaming service Qobuz.\n\nconfig BR2_PACKAGE_MPD_SOUNDCLOUD\n\tbool \"soundcloud\"\n\tselect BR2_PACKAGE_MPD_CURL\n\tselect BR2_PACKAGE_YAJL\n\thelp\n\t  Enable soundcloud.com playlist support.\n\ncomment \"Converter plugins\"\n\nconfig BR2_PACKAGE_MPD_LIBSAMPLERATE\n\tbool \"libsamplerate\"\n\tselect BR2_PACKAGE_LIBSAMPLERATE\n\thelp\n\t  Enable libsamplerate input support.\n\t  Select this for software sample rate conversion.\n\nconfig BR2_PACKAGE_MPD_LIBSOXR\n\tbool \"libsoxr\"\n\tselect BR2_PACKAGE_LIBSOXR\n\thelp\n\t  Enable libsoxr resampler support.\n\t  The SoX Resampler library performs software sample-rate\n\t  conversion.\n\ncomment \"Decoder plugins\"\n\nconfig BR2_PACKAGE_MPD_DSD\n\tbool \"dsd\"\n\thelp\n\t  Enable Digital Speech Decoder (DSD) support to play audio\n\t  files encoded in a digital speech format.\n\nconfig BR2_PACKAGE_MPD_FAAD2\n\tbool \"faad2\"\n\tselect BR2_PACKAGE_FAAD2\n\thelp\n\t  Enable faad2 input support.\n\t  Select this if you want to play back MP4/AAC files.\n\nconfig BR2_PACKAGE_MPD_FFMPEG\n\tbool \"ffmpeg\"\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_FFMPEG\n\thelp\n\t  Enable ffmpeg input support.\n\t  Select this if you want to play back files supported by\n\t  ffmpeg.\n\nconfig BR2_PACKAGE_MPD_FLAC\n\tbool \"flac\"\n\tselect BR2_PACKAGE_FLAC\n\thelp\n\t  Enable flac input/streaming support.\n\t  Select this if you want to play back FLAC files.\n\nconfig BR2_PACKAGE_MPD_FLUIDSYNTH\n\tbool \"fluidsynth\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_FLUIDSYNTH\n\thelp\n\t  Enable fluidsynth MIDI decoder support.\n\ncomment \"fluidsynth support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_MPD_LIBSNDFILE\n\tbool \"libsndfile\"\n\tselect BR2_PACKAGE_LIBSNDFILE\n\thelp\n\t  Enable libsndfile input/streaming support.\n\t  Select this if you want to play back WAV files.\n\nconfig BR2_PACKAGE_MPD_MAD\n\tbool \"mad\"\n\tdefault y\n\tselect BR2_PACKAGE_LIBID3TAG\n\tselect BR2_PACKAGE_LIBMAD\n\thelp\n\t  Enable mad input support.\n\t  Select this if you want to play back MP3 files.\n\nconfig BR2_PACKAGE_MPD_MODPLUG\n\tbool \"modplug\"\n\tselect BR2_PACKAGE_LIBMODPLUG\n\thelp\n\t  Enable Modplug decoder support.\n\nconfig BR2_PACKAGE_MPD_MPG123\n\tbool \"mpg123\"\n\tselect BR2_PACKAGE_LIBID3TAG\n\tselect BR2_PACKAGE_MPG123\n\thelp\n\t  Enable mpg123 input support.\n\t  Select this if you want to play back MP3 files.\n\nconfig BR2_PACKAGE_MPD_MUSEPACK\n\tbool \"musepack\"\n\tselect BR2_PACKAGE_LIBCUEFILE\n\tselect BR2_PACKAGE_LIBREPLAYGAIN\n\tselect BR2_PACKAGE_MUSEPACK\n\thelp\n\t  Enable musepack input support.\n\t  Select this if you want to play back MPC files.\n\nconfig BR2_PACKAGE_MPD_OPUS\n\tbool \"opus\"\n\tselect BR2_PACKAGE_OPUS\n\tselect BR2_PACKAGE_LIBOGG\n\thelp\n\t  Enable opus input support.\n\t  Select this if you want to play back OPUS encoded files.\n\nconfig BR2_PACKAGE_MPD_SIDPLAY\n\tbool \"sidplay\"\n\tselect BR2_PACKAGE_LIBSIDPLAY2\n\thelp\n\t  Enable C64 SID support.\n\nconfig BR2_PACKAGE_MPD_TREMOR\n\tbool \"tremor\"\n\tdepends on !BR2_PACKAGE_MPD_VORBIS\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_TREMOR\n\thelp\n\t  Enable vorbis input support.\n\t  Select this if you want to play back OGG files on softfloat\n\t  targets.\n\nconfig BR2_PACKAGE_MPD_VORBIS\n\tbool \"vorbis\"\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_LIBVORBIS\n\thelp\n\t  Enable vorbis input/streaming support.\n\t  Select this if you want to play back OGG files on hardfloat\n\t  targets.\n\nconfig BR2_PACKAGE_MPD_WAVPACK\n\tbool \"wavpack\"\n\tselect BR2_PACKAGE_WAVPACK\n\thelp\n\t  Enable wavpack input support.\n\t  Select this if you want to play back WV files.\n\ncomment \"Encoder plugins\"\n\nconfig BR2_PACKAGE_MPD_LAME\n\tbool \"lame\"\n\tselect BR2_PACKAGE_LAME\n\thelp\n\t  Enable lame (mp3) encoding support.\n\nconfig BR2_PACKAGE_MPD_TWOLAME\n\tbool \"twolame\"\n\tselect BR2_PACKAGE_TWOLAME\n\thelp\n\t  Enable TwoLAME mp2 encoding.\n\ncomment \"Input plugins\"\n\nconfig BR2_PACKAGE_MPD_CDIO_PARANOIA\n\tbool \"cdio-paranoia\"\n\tselect BR2_PACKAGE_LIBCDIO_PARANOIA\n\thelp\n\t  Enable cdio-paranoia support.\n\nconfig BR2_PACKAGE_MPD_CURL\n\tbool \"curl\"\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  Enable curl streaming (http) support.\n\nconfig BR2_PACKAGE_MPD_LIBMMS\n\tbool \"mms\"\n\tselect BR2_PACKAGE_LIBMMS\n\thelp\n\t  Enable MMS support.\n\nconfig BR2_PACKAGE_MPD_LIBNFS\n\tbool \"nfs\"\n\t# libnfs -> libtirpc\n\tdepends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBNFS\n\thelp\n\t  Enable Network File System (NFS) support.\n\ncomment \"nfs support needs a toolchain w/ threads support\"\n\tdepends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC)\n\ncomment \"samba support needs a glibc toolchain w/ dynamic library, RPC\"\n\tdepends on !BR2_nios2\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\nconfig BR2_PACKAGE_MPD_LIBSMBCLIENT\n\tbool \"samba\"\n\tdepends on !BR2_nios2 # samba\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_SAMBA4\n\thelp\n\t  Enable Samba support.\n\ncomment \"Output plugins\"\n\nconfig BR2_PACKAGE_MPD_ALSA\n\tbool \"alsa\"\n\tdefault y\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_PCM\n\tselect BR2_PACKAGE_ALSA_LIB_MIXER\n\thelp\n\t  Enable alsa output support.\n\nconfig BR2_PACKAGE_MPD_AO\n\tbool \"ao\"\n\tselect BR2_PACKAGE_LIBAO\n\thelp\n\t  Enable libao output support.\n\nconfig BR2_PACKAGE_MPD_HTTPD_OUTPUT\n\tbool \"httpd output\"\n\thelp\n\t  Enable httpd output support.\n\nconfig BR2_PACKAGE_MPD_JACK2\n\tbool \"jack2\"\n\tdepends on !BR2_STATIC_LIBS # jack2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_JACK2\n\thelp\n\t  Enable jack output support.\n\ncomment \"jack support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_MPD_OPENAL\n\tbool \"openal\"\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_PACKAGE_OPENAL\n\thelp\n\t  Enable OpenAL output support.\n\ncomment \"openal support needs a toolchain w/ NPTL\"\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\nconfig BR2_PACKAGE_MPD_OSS\n\tbool \"oss\"\n\thelp\n\t  Enable OSS (Open Sound System) output support.\n\nconfig BR2_PACKAGE_MPD_PULSEAUDIO\n\tbool \"pulseaudio\"\n\tdepends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_PULSEAUDIO\n\thelp\n\t  Enable pulseaudio output support.\n\ncomment \"pulseaudio support needs a toolchain w/ threads, wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_MPD_SHOUTCAST\n\tbool \"shoutcast\"\n\tselect BR2_PACKAGE_LIBSHOUT\n\thelp\n\t  Enable shoutcast streaming output support.\n\ncomment \"Miscellaneous plugins\"\n\nconfig BR2_PACKAGE_MPD_AVAHI_SUPPORT\n\tbool \"avahi (zeroconf) support\"\n\tdepends on !BR2_STATIC_LIBS # avahi\n\tselect BR2_PACKAGE_AVAHI\n\tselect BR2_PACKAGE_AVAHI_DAEMON\n\tselect BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY\n\thelp\n\t  Enable Avahi (zeroconf) support.\n\t  Select this for multicast DNS/DNS-SD service discovery\n\t  support. This allows MPD to publish service information on a\n\t  local network.\n\ncomment \"avahi support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_MPD_LIBMPDCLIENT\n\tbool \"libmpdclient\"\n\tselect BR2_PACKAGE_LIBMPDCLIENT\n\thelp\n\t  Enable libmpdclient support.\n\nconfig BR2_PACKAGE_MPD_NEIGHBOR_DISCOVERY_SUPPORT\n\tbool \"neighbor discovery support\"\n\tdepends on BR2_PACKAGE_MPD_LIBSMBCLIENT || BR2_PACKAGE_MPD_UPNP\n\thelp\n\t  Enable support for neighbor discovery.\n\t  This option can be used in conjunction with the smbclient\n\t  plugin to provide a list of SMB/CIFS servers or with the\n\t  UPnP plugin to provide a list of UPnP servers on the local\n\t  network. The neighbor plugin needs configuration in\n\t  mpd.conf. For further information take a look at the MPD\n\t  documentation.\n\nconfig BR2_PACKAGE_MPD_TCP\n\tbool \"tcp sockets\"\n\tdefault y\n\thelp\n\t  Enable MPD to listen on tcp sockets.\n\n\t  You want this on if MPD and the client(s) work\n\t  on different machines (the usual scenario).\n\nconfig BR2_PACKAGE_MPD_UPNP\n\tbool \"UPnP\"\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_LIBUPNP\n\tselect BR2_PACKAGE_MPD_CURL\n\thelp\n\t  Enable MPD UPnP client support.\n\ncomment \"Tag plugins\"\n\nconfig BR2_PACKAGE_MPD_ID3TAG\n\tbool \"id3tag\"\n\tselect BR2_PACKAGE_LIBID3TAG\n\thelp\n\t  Enable ID3 support.\n\nendif\n\ncomment \"mpd needs a toolchain w/ C++, threads, wchar, gcc >= 7, host gcc >= 7\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_8 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_8\n"
  },
  {
    "path": "package/mpd/S95mpd",
    "content": "#!/bin/sh\n\n# Sanity checks\ntest -f /etc/mpd.conf || exit 0\n\nstart() {\n\tprintf \"Starting mpd: \"\n\tstart-stop-daemon --start --quiet --background --exec /usr/bin/mpd \\\n\t\t&& echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n\tprintf \"Stopping mpd: \"\n\tstart-stop-daemon --stop --quiet --pidfile /var/run/mpd.pid \\\n\t\t&& echo \"OK\" || echo \"FAIL\"\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t\t;;\n\tstop)\n\t\tstop\n\t\t;;\n\trestart|reload)\n\t\tstop\n\t\tsleep 1\n\t\tstart\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/mpd/mpd.conf",
    "content": "#\n# Sample configuration file for mpd\n# This is a minimal configuration, see the manpage for more options\n#\n\n# Directory where the music is stored\nmusic_directory\t\t\"/var/lib/mpd/music\"\n\n# Directory where user-made playlists are stored (RW)\nplaylist_directory\t\"/var/lib/mpd/playlists\"\n\n# Database file (RW)\ndb_file\t\t\t\"/var/lib/mpd/database\"\n\n# Log file (RW)\nlog_file\t\t\"/var/log/mpd.log\"\n\n# Process ID file (RW)\npid_file\t\t\"/var/run/mpd.pid\"\n\n# State file (RW)\nstate_file\t\t\"/var/lib/mpd/state\"\n\n# User id to run the daemon as\n#user\t\t\t\"nobody\"\n\n# TCP socket binding\nbind_to_address\t\t\"any\"\n#bind_to_address\t\"localhost\"\n\n# Unix socket to listen on\nbind_to_address\t\t\"/var/lib/mpd/socket\"\n"
  },
  {
    "path": "package/mpd/mpd.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  143f7f34aaee6e87888f3dd35d49aade6656052651b960ca42b46cbb518ca0a0  mpd-0.22.11.tar.xz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/mpd/mpd.mk",
    "content": "################################################################################\n#\n# mpd\n#\n################################################################################\n\nMPD_VERSION_MAJOR = 0.22\nMPD_VERSION = $(MPD_VERSION_MAJOR).11\nMPD_SOURCE = mpd-$(MPD_VERSION).tar.xz\nMPD_SITE = http://www.musicpd.org/download/mpd/$(MPD_VERSION_MAJOR)\nMPD_DEPENDENCIES = host-pkgconf boost\nMPD_LICENSE = GPL-2.0+\nMPD_LICENSE_FILES = COPYING\nMPD_SELINUX_MODULES = mpd\nMPD_CONF_OPTS = \\\n\t-Daudiofile=disabled \\\n\t-Ddocumentation=disabled\n\n# Zeroconf support depends on libdns_sd from avahi.\nifeq ($(BR2_PACKAGE_MPD_AVAHI_SUPPORT),y)\nMPD_DEPENDENCIES += avahi\nMPD_CONF_OPTS += -Dzeroconf=avahi\nelse\nMPD_CONF_OPTS += -Dzeroconf=disabled\nendif\n\n# MPD prefers libicu for utf8 collation instead of libglib2.\nifeq ($(BR2_PACKAGE_ICU),y)\nMPD_DEPENDENCIES += icu\nMPD_CONF_OPTS += -Dicu=enabled\nelse\nMPD_CONF_OPTS += -Dicu=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_ALSA),y)\nMPD_DEPENDENCIES += alsa-lib\nMPD_CONF_OPTS += -Dalsa=enabled\nelse\nMPD_CONF_OPTS += -Dalsa=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_AO),y)\nMPD_DEPENDENCIES += libao\nMPD_CONF_OPTS += -Dao=enabled\nelse\nMPD_CONF_OPTS += -Dao=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_BZIP2),y)\nMPD_DEPENDENCIES += bzip2\nMPD_CONF_OPTS += -Dbzip2=enabled\nelse\nMPD_CONF_OPTS += -Dbzip2=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_CDIO_PARANOIA),y)\nMPD_DEPENDENCIES += libcdio-paranoia\nMPD_CONF_OPTS += -Dcdio_paranoia=enabled\nelse\nMPD_CONF_OPTS += -Dcdio_paranoia=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_CURL),y)\nMPD_DEPENDENCIES += libcurl\nMPD_CONF_OPTS += -Dcurl=enabled\nelse\nMPD_CONF_OPTS += -Dcurl=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_DSD),y)\nMPD_CONF_OPTS += -Ddsd=true\nelse\nMPD_CONF_OPTS += -Ddsd=false\nendif\n\nifeq ($(BR2_PACKAGE_MPD_FAAD2),y)\nMPD_DEPENDENCIES += faad2\nMPD_CONF_OPTS += -Dfaad=enabled\nelse\nMPD_CONF_OPTS += -Dfaad=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_FFMPEG),y)\nMPD_DEPENDENCIES += ffmpeg\nMPD_CONF_OPTS += -Dffmpeg=enabled\nelse\nMPD_CONF_OPTS += -Dffmpeg=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_FLAC),y)\nMPD_DEPENDENCIES += flac\nMPD_CONF_OPTS += -Dflac=enabled\nelse\nMPD_CONF_OPTS += -Dflac=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_FLUIDSYNTH),y)\nMPD_DEPENDENCIES += fluidsynth\nMPD_CONF_OPTS += -Dfluidsynth=enabled\nelse\nMPD_CONF_OPTS += -Dfluidsynth=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_HTTPD_OUTPUT),y)\nMPD_CONF_OPTS += -Dhttpd=true\nelse\nMPD_CONF_OPTS += -Dhttpd=false\nendif\n\nifeq ($(BR2_PACKAGE_MPD_ID3TAG),y)\nMPD_DEPENDENCIES += libid3tag\nMPD_CONF_OPTS += -Did3tag=enabled\nelse\nMPD_CONF_OPTS += -Did3tag=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_JACK2),y)\nMPD_DEPENDENCIES += jack2\nMPD_CONF_OPTS += -Djack=enabled\nelse\nMPD_CONF_OPTS += -Djack=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_LAME),y)\nMPD_DEPENDENCIES += lame\nMPD_CONF_OPTS += -Dlame=enabled\nelse\nMPD_CONF_OPTS += -Dlame=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_LIBMPDCLIENT),y)\nMPD_DEPENDENCIES += libmpdclient\nMPD_CONF_OPTS += -Dlibmpdclient=enabled\nelse\nMPD_CONF_OPTS += -Dlibmpdclient=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_LIBMMS),y)\nMPD_DEPENDENCIES += libmms\nMPD_CONF_OPTS += -Dmms=enabled\nelse\nMPD_CONF_OPTS += -Dmms=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_LIBNFS),y)\nMPD_DEPENDENCIES += libnfs\nMPD_CONF_OPTS += -Dnfs=enabled\nelse\nMPD_CONF_OPTS += -Dnfs=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_LIBSMBCLIENT),y)\nMPD_DEPENDENCIES += samba4\nMPD_CONF_OPTS += -Dsmbclient=enabled\nelse\nMPD_CONF_OPTS += -Dsmbclient=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_LIBSAMPLERATE),y)\nMPD_DEPENDENCIES += libsamplerate\nMPD_CONF_OPTS += -Dlibsamplerate=enabled\nelse\nMPD_CONF_OPTS += -Dlibsamplerate=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_LIBSNDFILE),y)\nMPD_DEPENDENCIES += libsndfile\nMPD_CONF_OPTS += -Dsndfile=enabled\nelse\nMPD_CONF_OPTS += -Dsndfile=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_LIBSOXR),y)\nMPD_DEPENDENCIES += libsoxr\nMPD_CONF_OPTS += -Dsoxr=enabled\nelse\nMPD_CONF_OPTS += -Dsoxr=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_MAD),y)\nMPD_DEPENDENCIES += libid3tag libmad\nMPD_CONF_OPTS += -Dmad=enabled\nelse\nMPD_CONF_OPTS += -Dmad=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_MODPLUG),y)\nMPD_DEPENDENCIES += libmodplug\nMPD_CONF_OPTS += -Dmodplug=enabled\nelse\nMPD_CONF_OPTS += -Dmodplug=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_MPG123),y)\nMPD_DEPENDENCIES += libid3tag mpg123\nMPD_CONF_OPTS += -Dmpg123=enabled\nelse\nMPD_CONF_OPTS += -Dmpg123=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_MUSEPACK),y)\nMPD_DEPENDENCIES += musepack\nMPD_CONF_OPTS += -Dmpcdec=enabled\nelse\nMPD_CONF_OPTS += -Dmpcdec=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_NEIGHBOR_DISCOVERY_SUPPORT),y)\nMPD_CONF_OPTS += -Dneighbor=true\nelse\nMPD_CONF_OPTS += -Dneighbor=false\nendif\n\nifeq ($(BR2_PACKAGE_MPD_OPENAL),y)\nMPD_DEPENDENCIES += openal\nMPD_CONF_OPTS += -Dopenal=enabled\nelse\nMPD_CONF_OPTS += -Dopenal=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_OPUS),y)\nMPD_DEPENDENCIES += opus libogg\nMPD_CONF_OPTS += -Dopus=enabled\nelse\nMPD_CONF_OPTS += -Dopus=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_OSS),y)\nMPD_CONF_OPTS += -Doss=enabled\nelse\nMPD_CONF_OPTS += -Doss=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_PULSEAUDIO),y)\nMPD_DEPENDENCIES += pulseaudio\nMPD_CONF_OPTS += -Dpulse=enabled\nelse\nMPD_CONF_OPTS += -Dpulse=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_QOBUZ),y)\nMPD_DEPENDENCIES += libgcrypt yajl\nMPD_CONF_OPTS += -Dqobuz=enabled\nelse\nMPD_CONF_OPTS += -Dqobuz=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_SHOUTCAST),y)\nMPD_DEPENDENCIES += libshout\nMPD_CONF_OPTS += -Dshout=enabled\nelse\nMPD_CONF_OPTS += -Dshout=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_SIDPLAY),y)\nMPD_DEPENDENCIES += libsidplay2\nMPD_CONF_OPTS += -Dsidplay=enabled\nelse\nMPD_CONF_OPTS += -Dsidplay=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_SOUNDCLOUD),y)\nMPD_DEPENDENCIES += yajl\nMPD_CONF_OPTS += -Dsoundcloud=enabled\nelse\nMPD_CONF_OPTS += -Dsoundcloud=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_SQLITE),y)\nMPD_DEPENDENCIES += sqlite\nMPD_CONF_OPTS += -Dsqlite=enabled\nelse\nMPD_CONF_OPTS += -Dsqlite=disabled\nendif\n\nifneq ($(BR2_PACKAGE_MPD_TCP),y)\nMPD_CONF_OPTS += -Dtcp=true\nendif\n\nifeq ($(BR2_PACKAGE_MPD_TREMOR),y)\nMPD_DEPENDENCIES += tremor\nMPD_CONF_OPTS += -Dtremor=enabled\nelse\nMPD_CONF_OPTS += -Dtremor=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_TWOLAME),y)\nMPD_DEPENDENCIES += twolame\nMPD_CONF_OPTS += -Dtwolame=enabled\nelse\nMPD_CONF_OPTS += -Dtwolame=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_UPNP),y)\nMPD_DEPENDENCIES += \\\n\texpat \\\n\tlibupnp\nMPD_CONF_OPTS += -Dupnp=enabled\nelse\nMPD_CONF_OPTS += -Dupnp=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_VORBIS),y)\nMPD_DEPENDENCIES += libvorbis\nMPD_CONF_OPTS += -Dvorbis=enabled -Dvorbisenc=enabled\nelse\nMPD_CONF_OPTS += -Dvorbis=disabled -Dvorbisenc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_WAVPACK),y)\nMPD_DEPENDENCIES += wavpack\nMPD_CONF_OPTS += -Dwavpack=enabled\nelse\nMPD_CONF_OPTS += -Dwavpack=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MPD_ZZIP),y)\nMPD_DEPENDENCIES += zziplib\nMPD_CONF_OPTS += -Dzzip=enabled\nelse\nMPD_CONF_OPTS += -Dzzip=disabled\nendif\n\ndefine MPD_INSTALL_EXTRA_FILES\n\t$(INSTALL) -m 0644 -D package/mpd/mpd.conf $(TARGET_DIR)/etc/mpd.conf\n\tmkdir -p $(TARGET_DIR)/var/lib/mpd/music\n\tmkdir -p $(TARGET_DIR)/var/lib/mpd/playlists\nendef\n\nMPD_POST_INSTALL_TARGET_HOOKS += MPD_INSTALL_EXTRA_FILES\n\ndefine MPD_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/mpd/S95mpd \\\n\t\t$(TARGET_DIR)/etc/init.d/S95mpd\nendef\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/mpd-mpc/Config.in",
    "content": "config BR2_PACKAGE_MPD_MPC\n\tbool \"mpd-mpc\"\n\tselect BR2_PACKAGE_LIBMPDCLIENT\n\thelp\n\t  A minimalist command line interface to MPD.\n\n\t  http://www.musicpd.org/clients/mpc/\n"
  },
  {
    "path": "package/mpd-mpc/mpd-mpc.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  4f40ccbe18f5095437283cfc525a97815e983cbfd3a29e48ff610fa4f1bf1296  mpc-0.33.tar.xz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/mpd-mpc/mpd-mpc.mk",
    "content": "################################################################################\n#\n# mpd-mpc\n#\n################################################################################\n\nMPD_MPC_VERSION_MAJOR = 0\nMPD_MPC_VERSION = $(MPD_MPC_VERSION_MAJOR).33\nMPD_MPC_SITE = http://www.musicpd.org/download/mpc/$(MPD_MPC_VERSION_MAJOR)\nMPD_MPC_SOURCE = mpc-$(MPD_MPC_VERSION).tar.xz\nMPD_MPC_LICENSE = GPL-2.0+\nMPD_MPC_LICENSE_FILES = COPYING\nMPD_MPC_DEPENDENCIES = host-pkgconf libmpdclient\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/mpdecimal/0001-Add-minimal-support-for-enable-disable-shared-static.patch",
    "content": "From c349964887901848fb4cd5db53a5bcb6dae27aaa Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sun, 23 Nov 2014 10:16:33 +0100\nSubject: [PATCH] Add minimal support for --{enable,disable}-{shared,static}\n\nmpdecimal uses autoconf, but not automake or libtool, so this commit\nadds some basic handling of --{enable,disable}-{shared,static}, so\nthat building the shared library can be disabled in pure static\nlibrary contexts.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Fabrice: update for 2.5.0 (add libmpdec++)]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile.in          |  6 ++++++\n configure.ac         | 13 +++++++++++++\n libmpdec/Makefile.in | 11 ++++++++++-\n 3 files changed, 29 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 2c91891..0c44f36 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -9,6 +9,8 @@ LIBSTATIC = @LIBSTATIC@\n LIBSONAME = @LIBSONAME@\n LIBSHARED = @LIBSHARED@\n INSTALL = @INSTALL@\n+BUILD_SHARED = @BUILD_SHARED@\n+BUILD_STATIC = @BUILD_STATIC@\n \n prefix = @prefix@\n exec_prefix = @exec_prefix@\n@@ -32,9 +34,13 @@ install: FORCE\n \t$(INSTALL) -d -m 755 $(DESTDIR)$(includedir)\n \t$(INSTALL) -m 644 libmpdec/mpdecimal.h $(DESTDIR)$(includedir)\n \t$(INSTALL) -d -m 755 $(DESTDIR)$(libdir)\n+ifeq ($(BUILD_STATIC),yes)\n \t$(INSTALL) -m 644 libmpdec/$(LIBSTATIC) $(DESTDIR)$(libdir)\n+endif\n+ifeq ($(BUILD_SHARED),yes)\n \t$(INSTALL) -m 755 libmpdec/$(LIBSHARED) $(DESTDIR)$(libdir)\n \tcd $(DESTDIR)$(libdir) && ln -sf $(LIBSHARED) $(LIBSONAME) && ln -sf $(LIBSHARED) $(LIBNAME)\n+endif\n \t$(INSTALL) -d -m 755 $(DESTDIR)$(docdir)\n \tcp -R doc/* $(DESTDIR)$(docdir)\n \n@@ -74,9 +80,13 @@ install_libcxx: install_lib\n \t$(INSTALL) -d -m 755 $(DESTDIR)$(includedir)\n \t$(INSTALL) -m 644 libmpdec++/decimal.hh $(DESTDIR)$(includedir)\n \t$(INSTALL) -d -m 755 $(DESTDIR)$(libdir)\n+ifeq ($(BUILD_STATIC),yes)\n \t$(INSTALL) -m 644 libmpdec++/$(LIBSTATIC_CXX) $(DESTDIR)$(libdir)\n+endif\n+ifeq ($(BUILD_SHARED),yes)\n \t$(INSTALL) -m 755 libmpdec++/$(LIBSHARED_CXX) $(DESTDIR)$(libdir)\n \tcd $(DESTDIR)$(libdir) && ln -sf $(LIBSHARED_CXX) $(LIBSONAME_CXX) && ln -sf $(LIBSHARED_CXX) $(LIBNAME_CXX)\n+endif\n \tcp -R doc/libmpdec++ $(DESTDIR)$(docdir)\n \n \ndiff --git a/configure.ac b/configure.ac\nindex 7ee8f86..2b3e505 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -88,6 +88,19 @@ CFLAGS=\"$saved_cflags\"\n AC_PROG_INSTALL\n AC_SUBST(INSTALL)\n \n+AC_ARG_ENABLE([shared],\n+\t[AS_HELP_STRING([--enable-shared], [build shared library])],\n+\t[BUILD_SHARED=$enableval],\n+\t[BUILD_SHARED=yes])\n+\n+AC_ARG_ENABLE([static],\n+\t[AS_HELP_STRING([--enable-static], [build static library])],\n+\t[BUILD_STATIC=$enableval],\n+\t[BUILD_STATIC=yes])\n+\n+AC_SUBST(BUILD_SHARED)\n+AC_SUBST(BUILD_STATIC)\n+\n # _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect:\n # http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html\n AC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug)\ndiff --git a/libmpdec/Makefile.in b/libmpdec/Makefile.in\nindex d9619a3..985c73c 100644\n--- a/libmpdec/Makefile.in\n+++ b/libmpdec/Makefile.in\n@@ -7,6 +7,8 @@\n LIBSTATIC = @LIBSTATIC@\n LIBSONAME = @LIBSONAME@\n LIBSHARED = @LIBSHARED@\n+BUILD_SHARED = @BUILD_SHARED@\n+BUILD_STATIC = @BUILD_STATIC@\n \n CC = @CC@\n LD = @LD@\n@@ -32,8 +34,15 @@ ifeq ($(MAKECMDGOALS), profile_use)\n   MPD_LDFLAGS += $(MPD_PUSE)\n endif\n \n+ifeq ($(BUILD_SHARED),yes)\n+TARGETS += $(LIBSHARED)\n+endif\n+\n+ifeq ($(BUILD_STATIC),yes)\n+TARGETS += $(LIBSTATIC)\n+endif\n \n-default: $(LIBSTATIC) $(LIBSHARED)\n+default: $(TARGETS)\n \n \n OBJS := basearith.o context.o constants.o convolute.o crt.o mpdecimal.o \\\ndiff --git a/libmpdec/Makefile.in b/libmpdec/Makefile.in\nindex d9619a3..985c73c 100644\n--- a/libmpdec++/Makefile.in\n+++ b/libmpdec++/Makefile.in\n@@ -13,6 +13,8 @@ LIBSTATIC_CXX = @LIBSTATIC_CXX@\n LIBNAME_CXX = @LIBNAME_CXX@\n LIBSONAME_CXX = @LIBSONAME_CXX@\n LIBSHARED_CXX = @LIBSHARED_CXX@\n+BUILD_SHARED = @BUILD_SHARED@\n+BUILD_STATIC = @BUILD_STATIC@\n \n CXX = @CXX@\n LDXX = @LDXX@\n@@ -39,8 +41,15 @@ ifeq ($(MAKECMDGOALS), profile_use)\n   MPD_LDXXFLAGS += $(MPD_PUSE)\n endif\n \n+ifeq ($(BUILD_SHARED),yes)\n+TARGETS += $(LIBSHARED_CXX)\n+endif\n+\n+ifeq ($(BUILD_STATIC),yes)\n+TARGETS += $(LIBSTATIC_CXX)\n+endif\n \n-default: $(LIBSTATIC_CXX) $(LIBSHARED_CXX)\n+default: $(TARGETS)\n \n \n OBJS := decimal.o\n-- \n2.1.0\n\n"
  },
  {
    "path": "package/mpdecimal/Config.in",
    "content": "config BR2_PACKAGE_MPDECIMAL\n\tbool \"mpdecimal\"\n\thelp\n\t  mpdecimal is a package for correctly-rounded arbitrary\n\t  precision decimal floating point arithmetic. Starting from\n\t  version 2.4, mpdecimal includes only the libmpdec\n\t  library. Further mpdecimal development will focus\n\t  exclusively on libmpdec.\n\n\t  http://www.bytereef.org/mpdecimal/\n"
  },
  {
    "path": "package/mpdecimal/mpdecimal.hash",
    "content": "# From http://www.bytereef.org/mpdecimal/download.html\nsha256  15417edc8e12a57d1d9d75fa7e3f22b158a3b98f44db9d694cfd2acde8dfa0ca  mpdecimal-2.5.0.tar.gz\n# Locally computed\nsha256  b07528d8b1dbf1e2d2741052996f0876e23342ce2d30d0effa39c5457716c25a  LICENSE.txt\n"
  },
  {
    "path": "package/mpdecimal/mpdecimal.mk",
    "content": "################################################################################\n#\n# mpdecimal\n#\n################################################################################\n\nMPDECIMAL_SITE = http://www.bytereef.org/software/mpdecimal/releases\nMPDECIMAL_VERSION = 2.5.0\nMPDECIMAL_INSTALL_STAGING = YES\nMPDECIMAL_LICENSE = BSD-2-Clause\nMPDECIMAL_LICENSE_FILES = LICENSE.txt\nMPDECIMAL_CONF_OPTS = LD=\"$(TARGET_CC)\"\nMPDECIMAL_AUTORECONF = YES\n\n# On i386, by default, mpdecimal tries to uses <fenv.h> which is not\n# available in musl/uclibc. So in this case, we tell mpdecimal to use\n# the generic 32 bits code, which is anyway the one used on ARM,\n# PowerPC, etc.\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),)\nifeq ($(BR2_i386),y)\nMPDECIMAL_CONF_ENV += MACHINE=ansi32\nendif\nendif\n\nifeq ($(BR2_INSTALL_LIBSTDCPP),y)\nMPDECIMAL_CONF_OPTS += --enable-cxx\nelse\nMPDECIMAL_CONF_OPTS += --disable-cxx\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mpfr/Config.in",
    "content": "config BR2_PACKAGE_MPFR\n\tbool \"mpfr\"\n\tselect BR2_PACKAGE_GMP\n\thelp\n\t  C library for multiple-precision floating-point computations\n\t  with exact rounding.\n\n\t  http://www.mpfr.org/\n"
  },
  {
    "path": "package/mpfr/mpfr.hash",
    "content": "# Locally calculated\nsha256  0c98a3f1732ff6ca4ea690552079da9c597872d30e96ec28414ee23c95558a7f  mpfr-4.1.0.tar.xz\n\n# Hash for license file\nsha256  e3a994d82e644b03a792a930f574002658412f62407f5fee083f2555c5f23118  COPYING.LESSER\n"
  },
  {
    "path": "package/mpfr/mpfr.mk",
    "content": "################################################################################\n#\n# mpfr\n#\n################################################################################\n\nMPFR_VERSION = 4.1.0\nMPFR_SITE = http://www.mpfr.org/mpfr-$(MPFR_VERSION)\nMPFR_SOURCE = mpfr-$(MPFR_VERSION).tar.xz\nMPFR_LICENSE = LGPL-3.0+\nMPFR_LICENSE_FILES = COPYING.LESSER\nMPFR_CPE_ID_VENDOR = gnu\nMPFR_INSTALL_STAGING = YES\nMPFR_DEPENDENCIES = gmp\nHOST_MPFR_DEPENDENCIES = host-gmp\nMPFR_MAKE_OPTS = RANLIB=$(TARGET_RANLIB)\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/mpg123/Config.in",
    "content": "config BR2_PACKAGE_MPG123\n\tbool \"mpg123\"\n\tdepends on BR2_USE_MMU # fork - in the application\n\thelp\n\t  Fast, free and portable MPEG audio player for Unix. It\n\t  supports MPEG 1.0/2.0 layers 1, 2 and 3.\n\n\t  http://www.mpg123.de/\n"
  },
  {
    "path": "package/mpg123/mpg123.hash",
    "content": "# From https://sourceforge.net/projects/mpg123/files/mpg123/1.25.15/\nsha1  286fcb83afad3ecbfea60434d3ee1b6d7f41bb7c  mpg123-1.25.15.tar.bz2\nmd5  9a050d4b3573661c606f8095a3f34ca3  mpg123-1.25.15.tar.bz2\n# Locally calculated\nsha256  503a76d82d97f1a6513bbeb284e460a99fb17ef80f23a661d8fc026ce6adcbbc  mpg123-1.25.15.tar.bz2\n# License file\nsha256  f40e0dd86b27b52e429b693a87b3ca63ae0a98a4d142e77207aa6bdf1db7a295  COPYING\n"
  },
  {
    "path": "package/mpg123/mpg123.mk",
    "content": "################################################################################\n#\n# mpg123\n#\n################################################################################\n\nMPG123_VERSION = 1.25.15\nMPG123_SOURCE = mpg123-$(MPG123_VERSION).tar.bz2\nMPG123_SITE = http://downloads.sourceforge.net/project/mpg123/mpg123/$(MPG123_VERSION)\nMPG123_INSTALL_STAGING = YES\nMPG123_LICENSE = LGPL-2.1\nMPG123_LICENSE_FILES = COPYING\nMPG123_CPE_ID_VENDOR = mpg123\nMPG123_DEPENDENCIES = host-pkgconf\n\nMPG123_CPU = $(if $(BR2_SOFT_FLOAT),generic_nofpu,generic_fpu)\n\nifeq ($(BR2_aarch64),y)\nMPG123_CPU = aarch64\nendif\n\nifeq ($(BR2_arm),y)\nifeq ($(or $(BR2_ARM_CPU_HAS_NEON),$(BR2_ARM_CPU_HAS_VFPV2)),y)\nMPG123_CPU = arm_fpu\nelse\nMPG123_CPU = arm_nofpu\nendif\nendif\n\nifeq ($(BR2_i386),y)\nMPG123_CPU = x86\nendif\n\nifeq ($(BR2_powerpc),y)\nifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y)\nMPG123_CPU = altivec\nendif\nifeq ($(BR2_SOFT_FLOAT),y)\nMPG123_CPU = ppc_nofpu\nendif\nendif # powerpc\n\nifeq ($(BR2_x86_64),y)\nMPG123_CPU = x86-64\nendif\n\nMPG123_CONF_OPTS += --with-cpu=$(MPG123_CPU)\n\nMPG123_AUDIO = dummy oss\n\nifeq ($(BR2_PACKAGE_PORTAUDIO),y)\nMPG123_AUDIO += portaudio\nMPG123_CONF_OPTS += --with-default-audio=portaudio\nMPG123_DEPENDENCIES += portaudio\n# configure script does NOT use pkg-config to figure out how to link\n# with portaudio, breaking static linking as portaudio uses pthreads\nMPG123_CONF_ENV += LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs portaudio-2.0`\"\nendif\n\nifeq ($(BR2_PACKAGE_SDL),y)\nMPG123_AUDIO += sdl\nMPG123_CONF_OPTS += --with-default-audio=sdl\nMPG123_DEPENDENCIES += sdl\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nMPG123_AUDIO += alsa\nMPG123_CONF_OPTS += --with-default-audio=alsa\nMPG123_DEPENDENCIES += alsa-lib\n# configure script does NOT use pkg-config to figure out how to link\n# with alsa, breaking static linking as alsa uses pthreads\nMPG123_CONF_ENV += LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs alsa`\"\nendif\n\nMPG123_CONF_OPTS += --with-audio=$(subst $(space),$(comma),$(MPG123_AUDIO))\n\n# output modules are loaded with dlopen()\nifeq ($(BR2_STATIC_LIBS),y)\nMPG123_CONF_OPTS += --disable-modules\nelse\nMPG123_CONF_OPTS += --enable-modules\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch",
    "content": "From d858ce52d1971cb4e8500b0ebc0472fdae4686ec Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sun, 7 May 2017 23:12:04 +0200\nSubject: [PATCH] mpn/arm/udiv.asm: workaround binutils bug #14887\n\nOld binutils versions are affected by bug #14887,\nhttps://sourceware.org/bugzilla/show_bug.cgi?id=14887, which causes a\nbuild failure when a register specification is surrounded by\nwhitespaces. Removing those whitespaces works around the issue.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n mpn/arm/udiv.asm | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/mpn/arm/udiv.asm b/mpn/arm/udiv.asm\nindex 25197a6..ed11eb3 100644\n--- a/mpn/arm/udiv.asm\n+++ b/mpn/arm/udiv.asm\n@@ -50,7 +50,7 @@ L(oop):\tdivstep(n1,n0,d)\n \tteq\tr12, #0\n \tbne\tL(oop)\n \n-\tstr\tn1, [ rem_ptr ]\t\tC store remainder\n+\tstr\tn1, [rem_ptr]\t\tC store remainder\n \tadc\tr0, n0, n0\t\tC quotient: add last carry from divstep\n \tmov\tpc, lr\n \n@@ -89,7 +89,7 @@ L(oop2):\n \taddcs\tn0, n0, #1\t\tC adjust quotient\n \n L(_even_divisor):\n-\tstr\tn1, [ rem_ptr ]\t\tC store remainder\n+\tstr\tn1, [rem_ptr]\t\tC store remainder\n \tmov\tr0, n0\t\t\tC quotient\n \tldmfd\tsp!, { r8, pc }\n EPILOGUE(mpn_udiv_qrnnd)\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/mpir/Config.in",
    "content": "config BR2_PACKAGE_MPIR\n\tbool \"mpir\"\n\tselect BR2_PACKAGE_GMP\n\thelp\n\t  MPIR is a highly optimised library for bignum arithmetic\n\t  forked from the GMP bignum library.\n\n\t  http://www.mpir.org/\n"
  },
  {
    "path": "package/mpir/mpir.hash",
    "content": "# Locally calculated\nsha256  52f63459cf3f9478859de29e00357f004050ead70b45913f2c2269d9708675bb  mpir-3.0.0.tar.bz2\nsha256  9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1  COPYING.LIB\n"
  },
  {
    "path": "package/mpir/mpir.mk",
    "content": "################################################################################\n#\n# mpir\n#\n################################################################################\n\nMPIR_VERSION = 3.0.0\nMPIR_SITE = http://www.mpir.org\nMPIR_SOURCE = mpir-$(MPIR_VERSION).tar.bz2\nMPIR_LICENSE = LGPL-3.0+\nMPIR_LICENSE_FILES = COPYING.LIB\nMPIR_INSTALL_STAGING = YES\nMPIR_DEPENDENCIES = gmp host-yasm\n\nifeq ($(BR2_MIPS_NABI32),y)\nMPIR_CONF_OPTS += ABI=n32\nendif\n\nifeq ($(BR2_MIPS_NABI64),y)\nMPIR_CONF_OPTS += ABI=64\nendif\n\n# The optimized ARM assembly code uses ARM-only (i.e not Thumb1/2\n# compatible) instructions.\nifeq ($(BR2_arm)$(BR2_armeb):$(BR2_ARM_CPU_HAS_ARM),y:)\nMPIR_CONF_ENV += MPN_PATH=\"generic\"\nendif\n\n# Optimized mips32/mips64 code not suitable for mips32r6/mips64r6\nifeq ($(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y)\nMPIR_CONF_ENV += MPN_PATH=\"generic\"\nendif\n\n# Optimized powerpc64 code is not suitable for powerpc64le\nifeq ($(BR2_powerpc64le),y)\nMPIR_CONF_ENV += MPN_PATH=\"generic\"\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mpv/0001-fix-powerpc64-altivec.patch",
    "content": "Subject: [PATCH] Work around bool type redefinition by altivec\n\nOn powerpc64le, the SDL header may include altivec.h and this\n(combined with -std=c99) will cause a compile failure due to bool\nbeing redefined as a vector type.\n\nAdjust the compiler flags to add -std=gnu99 (which is compatible with\naltivec) when using gcc. The generic flag '-std=c99' is left in place for other\ncompilers (in the gcc case it is overridden by the (later) gnu flag).\n\nSigned-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>\n---\n waftools/detections/compiler.py | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/waftools/detections/compiler.py b/waftools/detections/compiler.py\nindex 5bbba87..50836a2 100644\n--- a/waftools/detections/compiler.py\n+++ b/waftools/detections/compiler.py\n@@ -43,7 +43,8 @@ def __add_gcc_flags__(ctx):\n                        \"-Wno-switch\", \"-Wparentheses\", \"-Wpointer-arith\",\n                        \"-Wno-pointer-sign\",\n                        # GCC bug 66425\n-                       \"-Wno-unused-result\"]\n+                       \"-Wno-unused-result\",\n+                       \"-std=gnu99\"]\n \n def __add_clang_flags__(ctx):\n     ctx.env.CFLAGS += [\"-Wno-logical-op-parentheses\", \"-fcolor-diagnostics\",\n-- \n2.10.0.297.gf6727b0\n\n"
  },
  {
    "path": "package/mpv/Config.in",
    "content": "config BR2_PACKAGE_MPV_SUPPORTS_VAAPI\n\tbool\n\tdefault y if BR2_PACKAGE_LIBDRM && BR2_PACKAGE_MESA3D_OPENGL_EGL\n\tdefault y if BR2_PACKAGE_WAYLAND\n\tdefault y if BR2_PACKAGE_XORG7\n\nconfig BR2_PACKAGE_MPV\n\tbool \"mpv\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # libass\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libass\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_FFMPEG_SWSCALE\n\tselect BR2_PACKAGE_LIBASS\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND\n\t# Select xkbcommon for wayland to avoid being mysterious\n\tselect BR2_PACKAGE_LIBXKBCOMMON if BR2_PACKAGE_WAYLAND\n\t# Select all necessary X11 dependencies if X.org is enabled\n\tselect BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXINERAMA if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXSCRNSAVER if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_XORG7\n\thelp\n\t  mpv is a fork of mplayer2 and MPlayer. It shares some features\n\t  with the former projects while introducing many more.\n\n\t  https://mpv.io/\n\ncomment \"mpv needs a toolchain w/ C++, threads, gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/mpv/mpv.hash",
    "content": "# Locally calculated\nsha256  100a116b9f23bdcda3a596e9f26be3a69f166a4f1d00910d1789b6571c46f3a9  mpv-0.33.1.tar.gz\nsha256  a99d7b0625a0566271aad6de694e52eafd566db024f9516720d526c680d3ee30  LICENSE.GPL\n"
  },
  {
    "path": "package/mpv/mpv.mk",
    "content": "################################################################################\n#\n# mpv\n#\n################################################################################\n\nMPV_VERSION = 0.33.1\nMPV_SITE = $(call github,mpv-player,mpv,v$(MPV_VERSION))\nMPV_DEPENDENCIES = \\\n\thost-pkgconf ffmpeg libass zlib \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv)\nMPV_LICENSE = GPL-2.0+\nMPV_LICENSE_FILES = LICENSE.GPL\nMPV_CPE_ID_VENDOR = mpv\nMPV_INSTALL_STAGING = YES\n\nMPV_NEEDS_EXTERNAL_WAF = YES\n\n# Some of these options need testing and/or tweaks\nMPV_CONF_OPTS = \\\n\t--prefix=/usr \\\n\t--disable-android \\\n\t--disable-caca \\\n\t--disable-cocoa \\\n\t--disable-coreaudio \\\n\t--disable-cuda-hwaccel \\\n\t--disable-opensles \\\n\t--disable-rubberband \\\n\t--disable-uchardet \\\n\t--disable-vapoursynth\n\nifeq ($(BR2_REPRODUCIBLE),y)\nMPV_CONF_OPTS += --disable-build-date\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nMPV_CONF_OPTS += --disable-libmpv-shared --enable-libmpv-static\nelse\nMPV_CONF_OPTS += --enable-libmpv-shared --disable-libmpv-static\nendif\n\n# ALSA support requires pcm+mixer\nifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER)$(BR2_PACKAGE_ALSA_LIB_PCM),yy)\nMPV_CONF_OPTS += --enable-alsa\nMPV_DEPENDENCIES += alsa-lib\nelse\nMPV_CONF_OPTS += --disable-alsa\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_GBM),y)\nMPV_CONF_OPTS += --enable-gbm\nMPV_DEPENDENCIES += mesa3d\nifeq ($(BR2_PACKAGE_LIBDRM),y)\nMPV_CONF_OPTS += --enable-egl-drm\nelse\nMPV_CONF_OPTS += --disable-egl-drm\nendif\nelse\nMPV_CONF_OPTS += --disable-gbm --disable-egl-drm\nendif\n\n# jack support\n# It also requires 64-bit sync intrinsics\nifeq ($(BR2_TOOLCHAIN_HAS_SYNC_8)$(BR2_PACKAGE_JACK2),yy)\nMPV_CONF_OPTS += --enable-jack\nMPV_DEPENDENCIES += jack2\nelse\nMPV_CONF_OPTS += --disable-jack\nendif\n\n# jpeg support\nifeq ($(BR2_PACKAGE_JPEG),y)\nMPV_CONF_OPTS += --enable-jpeg\nMPV_DEPENDENCIES += jpeg\nelse\nMPV_CONF_OPTS += --disable-jpeg\nendif\n\n# lcms2 support\nifeq ($(BR2_PACKAGE_LCMS2),y)\nMPV_CONF_OPTS += --enable-lcms2\nMPV_DEPENDENCIES += lcms2\nelse\nMPV_CONF_OPTS += --disable-lcms2\nendif\n\n# libarchive support\nifeq ($(BR2_PACKAGE_LIBARCHIVE),y)\nMPV_CONF_OPTS += --enable-libarchive\nMPV_DEPENDENCIES += libarchive\nelse\nMPV_CONF_OPTS += --disable-libarchive\nendif\n\n# bluray support\nifeq ($(BR2_PACKAGE_LIBBLURAY),y)\nMPV_CONF_OPTS += --enable-libbluray\nMPV_DEPENDENCIES += libbluray\nelse\nMPV_CONF_OPTS += --disable-libbluray\nendif\n\n# libcdio-paranoia\nifeq ($(BR2_PACKAGE_LIBCDIO_PARANOIA),y)\nMPV_CONF_OPTS += --enable-cdda\nMPV_DEPENDENCIES += libcdio-paranoia\nelse\nMPV_CONF_OPTS += --disable-cdda\nendif\n\n# libdvdnav\nifeq ($(BR2_PACKAGE_LIBDVDNAV),y)\nMPV_CONF_OPTS += --enable-dvdnav\nMPV_DEPENDENCIES += libdvdnav\nelse\nMPV_CONF_OPTS += --disable-dvdnav\nendif\n\n# libdrm\nifeq ($(BR2_PACKAGE_LIBDRM),y)\nMPV_CONF_OPTS += --enable-drm\nMPV_DEPENDENCIES += libdrm\nelse\nMPV_CONF_OPTS += --disable-drm\nendif\n\n# libvdpau\nifeq ($(BR2_PACKAGE_LIBVDPAU),y)\nMPV_CONF_OPTS += --enable-vdpau\nMPV_DEPENDENCIES += libvdpau\nelse\nMPV_CONF_OPTS += --disable-vdpau\nendif\n\n# LUA support, only for lua51/lua52/luajit\n# This enables the controller (OSD) together with libass\nifeq ($(BR2_PACKAGE_LUA_5_1)$(BR2_PACKAGE_LUAJIT),y)\nMPV_CONF_OPTS += --enable-lua\nMPV_DEPENDENCIES += luainterpreter\nelse\nMPV_CONF_OPTS += --disable-lua\nendif\n\n# OpenGL support\nifeq ($(BR2_PACKAGE_HAS_LIBGL),y)\nMPV_CONF_OPTS += --enable-gl\nMPV_DEPENDENCIES += libgl\nelse ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y)\nMPV_CONF_OPTS += --enable-gl\nMPV_DEPENDENCIES += libgles\nelse ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y)\nMPV_CONF_OPTS += --enable-gl\nMPV_DEPENDENCIES += libegl\nelse\nMPV_CONF_OPTS += --disable-gl\nendif\n\n# pulseaudio support\nifeq ($(BR2_PACKAGE_PULSEAUDIO),y)\nMPV_CONF_OPTS += --enable-pulse\nMPV_DEPENDENCIES += pulseaudio\nelse\nMPV_CONF_OPTS += --disable-pulse\nendif\n\n# SDL support\n# Sdl2 requires 64-bit sync intrinsics\nifeq ($(BR2_TOOLCHAIN_HAS_SYNC_8)$(BR2_PACKAGE_SDL2),yy)\nMPV_CONF_OPTS += --enable-sdl2\nMPV_DEPENDENCIES += sdl2\nelse\nMPV_CONF_OPTS += --disable-sdl2\nendif\n\n# Raspberry Pi support\nifeq ($(BR2_PACKAGE_RPI_USERLAND),y)\nMPV_CONF_OPTS += --enable-rpi --enable-gl\nMPV_DEPENDENCIES += rpi-userland\nelse\nMPV_CONF_OPTS += --disable-rpi\nendif\n\n# va-api support\nifeq ($(BR2_PACKAGE_LIBVA)$(BR2_PACKAGE_MPV_SUPPORTS_VAAPI),yy)\nMPV_CONF_OPTS += --enable-vaapi\nMPV_DEPENDENCIES += libva\nifeq ($(BR2_PACKAGE_LIBDRM)$(BR2_PACKAGE_MESA3D_OPENGL_EGL),yy)\nMPV_CONF_OPTS += --enable-vaapi-drm\nelse\nMPV_CONF_OPTS += --disable-vaapi-drm\nendif\nelse\nMPV_CONF_OPTS += --disable-vaapi --disable-vaapi-drm\nendif\n\n# wayland support\nifeq ($(BR2_PACKAGE_WAYLAND),y)\nMPV_CONF_OPTS += --enable-wayland\nMPV_DEPENDENCIES += libxkbcommon wayland wayland-protocols\nelse\nMPV_CONF_OPTS += --disable-wayland\nendif\n\n# Base X11 support. Config.in ensures that if BR2_PACKAGE_XORG7 is\n# enabled, xlib_libX11, xlib_libXext, xlib_libXinerama,\n# xlib_libXrandr, xlib_libXScrnSaver.\nifeq ($(BR2_PACKAGE_XORG7),y)\nMPV_CONF_OPTS += --enable-x11\nMPV_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXinerama xlib_libXrandr xlib_libXScrnSaver\n# XVideo\nifeq ($(BR2_PACKAGE_XLIB_LIBXV),y)\nMPV_CONF_OPTS += --enable-xv\nMPV_DEPENDENCIES += xlib_libXv\nelse\nMPV_CONF_OPTS += --disable-xv\nendif\nelse\nMPV_CONF_OPTS += --disable-x11\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nMPV_CONF_ENV += LDFLAGS=\"$(TARGET_LDFLAGS) -latomic\"\nendif\n\n$(eval $(waf-package))\n"
  },
  {
    "path": "package/mraa/0001-include-Declare-gVERSION-global-as-extern.patch",
    "content": "From dbb5961f106ec42cd70689d933674c9c37aedfe1 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Bj=C3=B6rn=20Esser?= <besser82@fedoraproject.org>\nDate: Mon, 13 Apr 2020 20:12:11 +0200\nSubject: [PATCH] include: Declare gVERSION global as 'extern'.\n\nFixes build with '-fno-common'.\n\n[Retrieved from:\nhttps://github.com/eclipse/mraa/pull/1012/commits/dbb5961f106ec42cd70689d933674c9c37aedfe1]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmaail.com>\n---\n include/version.h | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/include/version.h b/include/version.h\nindex 47366ef6f..3a567a1d5 100644\n--- a/include/version.h\n+++ b/include/version.h\n@@ -11,8 +11,8 @@\n extern \"C\" {\n #endif\n \n-const char* gVERSION;\n-const char* gVERSION_SHORT;\n+extern const char* gVERSION;\n+extern const char* gVERSION_SHORT;\n \n #ifdef __cplusplus\n }\n"
  },
  {
    "path": "package/mraa/0002-CMakeLists.txt-add-BUILDCPP-option.patch",
    "content": "From cb88e4dd1fbbb9d24e625dba2768b88ed99da309 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 13 Jun 2020 22:51:37 +0200\nSubject: [PATCH] CMakeLists.txt: add BUILDCPP option\n\nC++ is a mandatory dependency since version 1.4.0 and\nhttps://github.com/eclipse/mraa/commit/122cab1f1e53b7c9c7cd82905b962071f9bad9dc\n\nAs a result, build on embedded toolchains that do not support C++ fails\non:\n\nCMake Error at CMakeLists.txt:2 (project):\n  The CMAKE_CXX_COMPILER:\n\n    /home/naourr/work/instance-1/output-1/per-package/mraa/host/bin/arm-linux-g++\n\n  is not a full path to an existing compiler tool.\n\nFixes:\n - http://autobuild.buildroot.org/results/31086422e03611c16ab59c4418e3669b580bc0c0\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/eclipse/mraa/commit/cb88e4dd1fbbb9d24e625dba2768b88ed99da309]\n---\n CMakeLists.txt                | 69 +++++++++++++++++++----------------\n src/java/CMakeLists.txt       |  4 +-\n src/javascript/CMakeLists.txt | 34 +++++++++--------\n 3 files changed, 59 insertions(+), 48 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 250d9106e..90c0dc920 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -1,5 +1,5 @@\n cmake_minimum_required (VERSION 2.8.11)\n-project (mraa C CXX)\n+project (mraa C)\n \n FIND_PACKAGE (Threads REQUIRED)\n \n@@ -11,6 +11,8 @@ else ()\n   set (CMAKE_C_STANDARD 99)\n endif ()\n \n+option (BUILDCPP \"Enable C++ (needed by FTDI4222 and tests)\" ON)\n+\n ###############################################################################\n # Detect supported warning flags\n # Modified from work By Dan Liew (fpbench - MIT)\n@@ -33,15 +35,18 @@ set (MRAA_C_WARNING_FLAGS\n   -Werror=missing-parameter-type\n )\n \n-# Warning flags for the C++ compiler only\n-set (MRAA_CXX_WARNING_FLAGS\n-  -Wnon-virtual-dtor\n-  -Woverloaded-virtual\n-  -Wreorder\n-)\n-\n include (CheckCCompilerFlag)\n-include (CheckCXXCompilerFlag)\n+if (BUILDCPP)\n+  # Warning flags for the C++ compiler only\n+  set (MRAA_CXX_WARNING_FLAGS\n+    -Wnon-virtual-dtor\n+    -Woverloaded-virtual\n+    -Wreorder\n+  )\n+\n+  enable_language (CXX)\n+  include (CheckCXXCompilerFlag)\n+endif ()\n function (MRAA_SANITIZE_FLAG_NAME OUTPUT_VAR FLAG)\n   string (REPLACE \"-\" \"_\" SANITIZED_FLAG_NAME \"${FLAG}\")\n   string (REPLACE \"/\" \"_\" SANITIZED_FLAG_NAME \"${SANITIZED_FLAG_NAME}\")\n@@ -62,28 +67,30 @@ foreach (flag ${MRAA_BOTH_WARNING_FLAGS} ${MRAA_C_WARNING_FLAGS})\n   endif ()\n endforeach ()\n \n-# Globally set C++ compiler warning flags that are supported and emit\n-# a warning about unsupported flags\n-foreach (flag ${MRAA_BOTH_WARNING_FLAGS} ${MRAA_CXX_WARNING_FLAGS})\n-  MRAA_SANITIZE_FLAG_NAME (SANITIZED_FLAG_NAME \"${flag}\")\n-  CHECK_CXX_COMPILER_FLAG (\"${flag}\" HAS_CXX_${SANITIZED_FLAG_NAME})\n-  if (HAS_CXX_${SANITIZED_FLAG_NAME})\n-    set (CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} ${flag}\")\n-  else ()\n-    message (WARNING \"C++ compiler does not support flag \\\"${flag}\\\"\")\n-  endif ()\n-endforeach ()\n-\n-# This function adds the c++11 flag to a c++ target (if supported)\n-function(use_cxx_11 targetname)\n-  include(CheckCXXCompilerFlag)\n-  CHECK_CXX_COMPILER_FLAG(\"-std=c++11\" COMPILER_SUPPORTS_CXX11)\n-  if (COMPILER_SUPPORTS_CXX11)\n-    set_target_properties(${targetname} PROPERTIES COMPILE_FLAGS \"-std=c++11\")\n-  else()\n-    message(FATAL_ERROR \"Target '${targetname}' requires c++11 which is not supported by this compiler\")\n-  endif()\n-endfunction()\n+if (BUILDCPP)\n+  # Globally set C++ compiler warning flags that are supported and emit\n+  # a warning about unsupported flags\n+  foreach (flag ${MRAA_BOTH_WARNING_FLAGS} ${MRAA_CXX_WARNING_FLAGS})\n+    MRAA_SANITIZE_FLAG_NAME (SANITIZED_FLAG_NAME \"${flag}\")\n+    CHECK_CXX_COMPILER_FLAG (\"${flag}\" HAS_CXX_${SANITIZED_FLAG_NAME})\n+    if (HAS_CXX_${SANITIZED_FLAG_NAME})\n+      set (CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} ${flag}\")\n+    else ()\n+      message (WARNING \"C++ compiler does not support flag \\\"${flag}\\\"\")\n+    endif ()\n+  endforeach ()\n+\n+  # This function adds the c++11 flag to a c++ target (if supported)\n+  function(use_cxx_11 targetname)\n+    include(CheckCXXCompilerFlag)\n+    CHECK_CXX_COMPILER_FLAG(\"-std=c++11\" COMPILER_SUPPORTS_CXX11)\n+    if (COMPILER_SUPPORTS_CXX11)\n+      set_target_properties(${targetname} PROPERTIES COMPILE_FLAGS \"-std=c++11\")\n+    else()\n+      message(FATAL_ERROR \"Target '${targetname}' requires c++11 which is not supported by this compiler\")\n+    endif()\n+  endfunction()\n+endif()\n \n # Set CMAKE_INSTALL_LIBDIR if not defined\n include(GNUInstallDirs)\ndiff --git a/src/java/CMakeLists.txt b/src/java/CMakeLists.txt\nindex 231c755fa..cfa72a0df 100644\n--- a/src/java/CMakeLists.txt\n+++ b/src/java/CMakeLists.txt\n@@ -16,7 +16,9 @@ include_directories (\n set_source_files_properties (mraajava.i PROPERTIES SWIG_FLAGS \";-package;mraa;-I${CMAKE_BINARY_DIR}/src\")\n set_source_files_properties (mraajava.i PROPERTIES CPLUSPLUS ON)\n \n-set (CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -fpermissive -DJAVACALLBACK\")\n+if (BUILDCPP)\n+  set (CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -fpermissive -DJAVACALLBACK\")\n+endif()\n set (CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -DJAVACALLBACK\")\n \n if (NOT DEFINED ENV{JAVA_HOME_NATIVE})\ndiff --git a/src/javascript/CMakeLists.txt b/src/javascript/CMakeLists.txt\nindex 25fd36275..99a96b49d 100644\n--- a/src/javascript/CMakeLists.txt\n+++ b/src/javascript/CMakeLists.txt\n@@ -36,25 +36,27 @@ set_target_properties (mraajs PROPERTIES\n )\n \n message (STATUS \"INFO - swig Version ${SWIG_VERSION}\")\n-message (STATUS \"INFO - CXX compiler Version ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}\")\n+if (BUILDCPP)\n+  message (STATUS \"INFO - CXX compiler Version ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}\")\n \n-if (${V8_VERSION_MAJOR} GREATER 3)\n-  message (STATUS \"INFO - Using V8 version > 3 so requiring C++11 compiler\")\n-  # Node 0.12.x V8 engine major version is '3'.\n-  # Node 2.1.0  V8 engine major version is '4'.\n-  set_property (TARGET mraajs PROPERTY CXX_STANDARD 11)\n-  set_property (TARGET mraajs PROPERTY CXX_STANDARD_REQUIRED ON)\n-  if (CMAKE_VERSION VERSION_LESS \"3.1\")\n-    message (WARNING \"Need to use CMAKE version 3.1+, but it is ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}, using a workaround.\")\n-    if (CMAKE_COMPILER_IS_GNUCXX)\n-      if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS \"4.7\")\n-        message (FATAL_ERROR \"GNU gcc compiler is also too old (need 4.7+, but ${CMAKE_CXX_COMPILER_VERSION}) and does not support C++11 standard.\")\n+  if (${V8_VERSION_MAJOR} GREATER 3)\n+    message (STATUS \"INFO - Using V8 version > 3 so requiring C++11 compiler\")\n+    # Node 0.12.x V8 engine major version is '3'.\n+    # Node 2.1.0  V8 engine major version is '4'.\n+    set_property (TARGET mraajs PROPERTY CXX_STANDARD 11)\n+    set_property (TARGET mraajs PROPERTY CXX_STANDARD_REQUIRED ON)\n+    if (CMAKE_VERSION VERSION_LESS \"3.1\")\n+      message (WARNING \"Need to use CMAKE version 3.1+, but it is ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}, using a workaround.\")\n+      if (CMAKE_COMPILER_IS_GNUCXX)\n+        if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS \"4.7\")\n+          message (FATAL_ERROR \"GNU gcc compiler is also too old (need 4.7+, but ${CMAKE_CXX_COMPILER_VERSION}) and does not support C++11 standard.\")\n+        endif ()\n+        set (MRAA_CXX11_WORKAROUND_OPTION \"-std=gnu++11\")\n+      else ()\n+        set (MRAA_CXX11_WORKAROUND_OPTION \"-std=c++11\")\n       endif ()\n-      set (MRAA_CXX11_WORKAROUND_OPTION \"-std=gnu++11\")\n-    else ()\n-      set (MRAA_CXX11_WORKAROUND_OPTION \"-std=c++11\")\n+      set (CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} ${MRAA_CXX11_WORKAROUND_OPTION} \")\n     endif ()\n-    set (CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} ${MRAA_CXX11_WORKAROUND_OPTION} \")\n   endif ()\n endif ()\n \n"
  },
  {
    "path": "package/mraa/Config.in",
    "content": "config BR2_PACKAGE_MRAA_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\tdefault y if BR2_arm || BR2_armeb\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\nconfig BR2_PACKAGE_MRAA\n\tbool \"mraa\"\n\tdepends on BR2_PACKAGE_MRAA_ARCH_SUPPORTS\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  mraa is a C/C++ library with bindings to javascript & python\n\t  to interface with the IO on Galileo, Edison & other\n\t  platforms, with a structured and sane API where port\n\t  names/numbering matches the board that you are on.\n\n\t  http://iotdk.intel.com/docs/master/mraa\n\ncomment \"mraa needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_PACKAGE_MRAA_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/mraa/mraa.hash",
    "content": "# Locally calculated\nsha256  5351ce9eb654014d8ea7f43bdb2d17e6d1955536938a2ea0d467f4008e614345  mraa-2.1.0.tar.gz\nsha256  fac52622ed3badd86b34857b21777ab90296d6ccbc2ac0fd457c09fdeefa9ef1  COPYING\n"
  },
  {
    "path": "package/mraa/mraa.mk",
    "content": "################################################################################\n#\n# mraa\n#\n################################################################################\n\nMRAA_VERSION = 2.1.0\nMRAA_SITE = $(call github,eclipse,mraa,v$(MRAA_VERSION))\nMRAA_LICENSE = MIT\nMRAA_LICENSE_FILES = COPYING\nMRAA_INSTALL_STAGING = YES\n\nifeq ($(BR2_i386),y)\nMRAA_ARCH = i386\nelse ifeq ($(BR2_x86_64),y)\nMRAA_ARCH = x86_64\nelse ifeq ($(BR2_arm)$(BR2_armeb),y)\nMRAA_ARCH = arm\nelse ifeq ($(BR2_aarch64)$(BR2_aarch64_be),y)\nMRAA_ARCH = aarch64\nelse ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y)\nMRAA_ARCH = mips\nendif\n\n# USBPLAT only makes sense with FTDI4222, which requires the ftd2xx library,\n# which doesn't exist in buildroot\n# Disable C++ as it is used only by FTDI4222 and tests\nMRAA_CONF_OPTS += \\\n\t-DBUILDARCH=$(MRAA_ARCH) \\\n\t-DBUILDCPP=OFF \\\n\t-DBUILDSWIG=OFF \\\n\t-DUSBPLAT=OFF \\\n\t-DFTDI4222=OFF \\\n\t-DENABLEEXAMPLES=OFF \\\n\t-DBUILDTESTS=OFF\n\nifeq ($(BR2_PACKAGE_JSON_C),y)\nMRAA_CONF_OPTS += -DJSONPLAT=ON\nMRAA_DEPENDENCIES += json-c\nelse\nMRAA_CONF_OPTS += -DJSONPLAT=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/mrouted/Config.in",
    "content": "config BR2_PACKAGE_MROUTED\n\tbool \"mrouted\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  An implementation of the DVMRP multicast routing protocol.\n\t  Unlike PIM a DVMRP router has a distance vector protocol (like\n\t  RIP) built-in to figure out the reverse-path to the multicast\n\t  source. This package comes with mrouted and mroutectl.  Where\n\t  the latter is used to query status and control operation.\n\n\t  Note: at least two interfaces with MULTICAST flag is requried.\n\n\t  http://github.com/troglobit/mrouted\n"
  },
  {
    "path": "package/mrouted/S41mrouted",
    "content": "#!/bin/sh\n\nDAEMON=\"mrouted\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nMROUTED_ARGS=\"-w 30\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"/sbin/$DAEMON\" \\\n\t\t-- $MROUTED_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\n# SIGHUP makes mrouted reload its configuration\nreload() {\n\tprintf 'Reloading %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -s HUP -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\ncase \"$1\" in\n\tstart|stop|restart|reload)\n\t\t\"$1\";;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/mrouted/mrouted.hash",
    "content": "# From https://github.com/troglobit/mrouted/releases/download/4.4/mrouted-4.4.tar.gz.sha256\nsha256  095439e544d69c91ed64fa87db7e35bc2155eef48b7f268281d80946d2c6b953  mrouted-4.4.tar.gz\n\n# Locally calculated\nsha256  834f45ed282fd010f354ecc0a50538af519a1cfcc4d2866de3be06982fa9ed29  LICENSE\n"
  },
  {
    "path": "package/mrouted/mrouted.mk",
    "content": "################################################################################\n#\n# mrouted\n#\n################################################################################\n\nMROUTED_VERSION = 4.4\nMROUTED_SITE = \\\n\thttps://github.com/troglobit/mrouted/releases/download/$(MROUTED_VERSION)\nMROUTED_DEPENDENCIES = host-bison\nMROUTED_LICENSE = BSD-3-Clause\nMROUTED_LICENSE_FILES = LICENSE\nMROUTED_CPE_ID_VENDOR = troglobit\n\ndefine MROUTED_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/mrouted/S41mrouted \\\n\t\t$(TARGET_DIR)/etc/init.d/S41mrouted\nendef\n\ndefine MROUTED_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(@D)/mrouted.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/mrouted.service\nendef\n\n# We will asume that CONFIG_NET and CONFIG_INET are already\n# set in the kernel configuration provided by the user.\ndefine MROUTED_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_MULTICAST)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_MROUTE)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mrp/Config.in",
    "content": "config BR2_PACKAGE_MRP\n\tbool \"mrp\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0\n\tselect BR2_PACKAGE_LIBEV\n\tselect BR2_PACKAGE_LIBMNL\n\tselect BR2_PACKAGE_LIBNL\n\thelp\n\t  This is the userspace application that configures the kernel\n\t  to run MRP protocol. The userspace application is made of 2\n\t  applications, one daemon and a client.\n\n\t  https://github.com/microchip-ung/mrp\n\ncomment \"mrp needs a toolchain w/ threads, kernel headers >= 5.0\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0\n"
  },
  {
    "path": "package/mrp/S65mrp",
    "content": "#!/bin/sh\n#\n# Start mrp\n#\n\nDAEMON=\"mrp_server\"\n\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/mrp_server\" ] && . \"/etc/default/mrp_server\"\n\nstart() {\n\tprintf \"Starting mrp daemon: \"\n\tstart-stop-daemon -S -b -q -m -p $PIDFILE \\\n\t\t-x /usr/bin/$DAEMON\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn $status\n}\n\nstop() {\n\tprintf \"Stopping mrp daemon: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn $status\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\tstop\n\tstart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/mrp/mrp.hash",
    "content": "# locally calculated\nsha256  1a6c76d058bb425a7ec8b69a65de797650961161ec016b51ac8a1965e1ac304f  mrp-1.1.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/mrp/mrp.mk",
    "content": "################################################################################\n#\n# mrp\n#\n################################################################################\n\nMRP_VERSION = 1.1\nMRP_SITE = $(call github,microchip-ung,mrp,v$(MRP_VERSION))\nMRP_DEPENDENCIES = libev libmnl libnl\nMRP_LICENSE = GPL-2.0\nMRP_LICENSE_FILES = LICENSE\n\ndefine MRP_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D $(MRP_PKGDIR)/S65mrp \\\n\t\t$(TARGET_DIR)/etc/init.d/S65mrp\nendef\n\ndefine MRP_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(MRP_PKGDIR)/mrp.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/mrp.service\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/mrp/mrp.service",
    "content": "[Unit]\nDescription=Media Redundancy Protocol\nAfter=network.target\n\n[Service]\nExecStart=/usr/bin/mrp\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/msgpack/Config.in",
    "content": "config BR2_PACKAGE_MSGPACK\n\tbool \"msgpack\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\thelp\n\t  MessagePack is an efficient binary serialization format.\n\n\t  It lets you exchange data among multiple languages like JSON\n\t  but it's faster and smaller.\n\n\t  http://msgpack.org/\n\ncomment \"msgpack needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n"
  },
  {
    "path": "package/msgpack/msgpack.hash",
    "content": "# Locally computed:\nsha256  6e114d12a5ddb8cb11f669f83f32246e484a8addd0ce93f274996f1941c1f07b  msgpack-3.3.0.tar.gz\nsha256  664550b43996452a5a2c7471bb0ff77185a58c69ccafa60f983dc4c162e1ee22  COPYING\nsha256  c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566  LICENSE_1_0.txt\n"
  },
  {
    "path": "package/msgpack/msgpack.mk",
    "content": "################################################################################\n#\n# msgpack\n#\n################################################################################\n\nMSGPACK_VERSION = 3.3.0\nMSGPACK_SITE = https://github.com/msgpack/msgpack-c/releases/download/cpp-$(MSGPACK_VERSION)\nMSGPACK_LICENSE = BSL-1.0\nMSGPACK_LICENSE_FILES = COPYING LICENSE_1_0.txt\nMSGPACK_INSTALL_STAGING = YES\nMSGPACK_CONF_OPTS = -DMSGPACK_BUILD_EXAMPLES=OFF -DMSGPACK_BUILD_TESTS=OFF\n\nifeq ($(BR2_STATIC_LIBS),y)\nMSGPACK_CONF_OPTS += -DMSGPACK_ENABLE_SHARED=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/msmtp/Config.in",
    "content": "config BR2_PACKAGE_MSMTP\n\tbool \"msmtp\"\n\thelp\n\t  msmtp is an SMTP client. In the default mode, it transmits a\n\t  mail to an SMTP server (for example at a free mail provider)\n\t  which takes care of further delivery.\n\n\t  https://marlam.de/msmtp/\n"
  },
  {
    "path": "package/msmtp/msmtp.hash",
    "content": "# Locally calculated after checking signature\n# https://marlam.de/msmtp/releases/msmtp-1.8.14.tar.xz.sig\n# with key 2F61B4828BBA779AECB3F32703A2A4AB1E32FD34\nsha256  d56f065d711486e9c234618515a02a48a48dab4051b34f3e108fbecb6fb773b4  msmtp-1.8.14.tar.xz\n\n# Hash for license file:\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/msmtp/msmtp.mk",
    "content": "################################################################################\n#\n# msmtp\n#\n################################################################################\n\nMSMTP_VERSION = 1.8.14\nMSMTP_SITE = https://marlam.de/msmtp/releases\nMSMTP_SOURCE = msmtp-$(MSMTP_VERSION).tar.xz\nMSMTP_DEPENDENCIES = host-pkgconf\nMSMTP_CONF_OPTS = --disable-gai-idn\nMSMTP_LICENSE = GPL-3.0+\nMSMTP_LICENSE_FILES = COPYING\nMSMTP_CPE_ID_VENDOR = marlam\n\n# msmtpd needs fork\nifeq ($(BR2_USE_MMU),y)\nMSMTP_CONF_OPTS += --with-msmtpd\nelse\nMSMTP_CONF_OPTS += --without-msmtpd\nendif\n\nifeq ($(BR2_PACKAGE_LIBGSASL),y)\nMSMTP_CONF_OPTS += --with-libgsasl\nMSMTP_DEPENDENCIES += libgsasl\nelse\nMSMTP_CONF_OPTS += --without-libgsasl\nendif\n\nifeq ($(BR2_PACKAGE_LIBIDN2),y)\nMSMTP_CONF_OPTS += --with-libidn\nMSMTP_DEPENDENCIES += libidn2\nelse\nMSMTP_CONF_OPTS += --without-libidn\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECRET),y)\nMSMTP_CONF_OPTS += --with-libsecret\nMSMTP_DEPENDENCIES += libsecret\nelse\nMSMTP_CONF_OPTS += --without-libsecret\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nMSMTP_CONF_OPTS += --with-tls=gnutls\nMSMTP_DEPENDENCIES += gnutls\nelse ifeq ($(BR2_PACKAGE_OPENSSL),y)\nMSMTP_CONF_OPTS += --with-tls=openssl\nMSMTP_DEPENDENCIES += openssl\nelse\nMSMTP_CONF_OPTS += --with-tls=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/msr-tools/Config.in",
    "content": "config BR2_PACKAGE_MSR_TOOLS\n\tbool \"msr-tools\"\n\tdepends on BR2_i386 || BR2_x86_64\n\thelp\n\t  The MSR Tools project provides utilities to access x86\n\t  processor MSRs and CPU ID directly.\n\n\t  Those tools access the hardware through the\n\t  /dev/cpu/<cpu#>/msr and /dev/cpu/<cpu#>/cpuid devices. This\n\t  necessitates msr and cpuid support in the kernel, which\n\t  means you need a kernel compiled with configuration options\n\t  CONFIG_X86_CPUID and CONFIG_X86_MSR enabled.\n\n\t  https://01.org/msr-tools\n"
  },
  {
    "path": "package/msr-tools/msr-tools.hash",
    "content": "# Locally computed:\nsha256  9b87245ee091a798184e447066e9e0d7709b7c81f5e6ad55f2b958c1aa50c4a3  msr-tools-1.3.tar.gz\nsha256  98398b08cd0dab9a04115b049758d4a7917af3c74389a4576d26c8a240d38a73  cpuid.c\n"
  },
  {
    "path": "package/msr-tools/msr-tools.mk",
    "content": "################################################################################\n#\n# msr-tools\n#\n################################################################################\n\nMSR_TOOLS_VERSION = 1.3\nMSR_TOOLS_SITE = $(call github,01org,msr-tools,msr-tools-$(MSR_TOOLS_VERSION))\nMSR_TOOLS_LICENSE = GPL-2.0\nMSR_TOOLS_LICENSE_FILES = cpuid.c\n\ndefine MSR_TOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine MSR_TOOLS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) install \\\n\t\tsbindir=\"$(TARGET_DIR)/usr/sbin\"\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mstpd/Config.in",
    "content": "config BR2_PACKAGE_MSTPD\n\tbool \"mstpd\"\n\thelp\n\t  Multiple Spanning Tree Protocol Daemon.\n\t  This package provides a user-space daemon which replaces\n\t  the STP handling that is built into the Linux kernel Ethernet\n\t  bridge and adds support for RSTP and PVST+.\n\n\t  https://github.com/mstpd/mstpd\n"
  },
  {
    "path": "package/mstpd/mstpd.hash",
    "content": "# locally computed\nsha256  91a1862548b5b509caa2e96e5fb9912bc98d4d58cc98e99a577824735756c14d  mstpd-0.0.9.tar.gz\nsha256  c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42  LICENSE\nsha256  c5cfd44652276184374adf454150d436ce958ce50acc4ef9ccb3605a5ca7a9d3  hmac_md5.c\n"
  },
  {
    "path": "package/mstpd/mstpd.mk",
    "content": "################################################################################\n#\n# mstpd\n#\n################################################################################\n\nMSTPD_VERSION = 0.0.9\nMSTPD_SITE = $(call github,mstpd,mstpd,$(MSTPD_VERSION))\nMSTPD_AUTORECONF = YES\nMSTPD_LICENSE = GPL-2.0, RSA Data Security (md5)\nMSTPD_LICENSE_FILES = LICENSE hmac_md5.c\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mtd/Config.in",
    "content": "config BR2_PACKAGE_MTD\n\tbool \"mtd, jffs2 and ubi/ubifs tools\"\n\thelp\n\t  Build mtd, jffs2 and ubi/ubifs tools\n\n\t  http://www.linux-mtd.infradead.org/\n\nif BR2_PACKAGE_MTD\n\n# The two hidden options below match mtd configure script options\n# --enable-jffs and --enable-ubifs\n\nconfig BR2_PACKAGE_MTD_JFFS_UTILS\n\tbool\n\tselect BR2_PACKAGE_LZO\n\tselect BR2_PACKAGE_ZLIB\n\nconfig BR2_PACKAGE_MTD_UBIFS_UTILS\n\tbool\n\tselect BR2_PACKAGE_LZO\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_ZLIB\n\ncomment \"MTD tools selection\"\n\nconfig BR2_PACKAGE_MTD_DOCFDISK\n\tbool \"docfdisk\"\n\nconfig BR2_PACKAGE_MTD_DOC_LOADBIOS\n\tbool \"doc_loadbios\"\n\nconfig BR2_PACKAGE_MTD_FLASHCP\n\tbool \"flashcp\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_FLASH_ERASE\n\tbool \"flash_erase\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_FLASH_LOCK\n\tbool \"flash_lock\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_FLASH_OTP_DUMP\n\tbool \"flash_otp_dump\"\n\nconfig BR2_PACKAGE_MTD_FLASH_OTP_INFO\n\tbool \"flash_otp_info\"\n\nconfig BR2_PACKAGE_MTD_FLASH_OTP_LOCK\n\tbool \"flash_otp_lock\"\n\nconfig BR2_PACKAGE_MTD_FLASH_OTP_WRITE\n\tbool \"flash_otp_write\"\n\nconfig BR2_PACKAGE_MTD_FLASH_OTP_ERASE\n\tbool \"flash_otp_erase\"\n\nconfig BR2_PACKAGE_MTD_FLASH_UNLOCK\n\tbool \"flash_unlock\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_FTL_CHECK\n\tbool \"ftl_check\"\n\nconfig BR2_PACKAGE_MTD_FTL_FORMAT\n\tbool \"ftl_format\"\n\nconfig BR2_PACKAGE_MTD_JFFS2DUMP\n\tbool \"jffs2dump\"\n\tselect BR2_PACKAGE_MTD_JFFS_UTILS\n\nconfig BR2_PACKAGE_MTD_MKFSJFFS2\n\tbool \"mkfs.jffs2\"\n\tselect BR2_PACKAGE_MTD_JFFS_UTILS\n\nconfig BR2_PACKAGE_MTD_MKFSUBIFS\n\tbool \"mkfs.ubifs\"\n\tselect BR2_PACKAGE_MTD_UBIFS_UTILS\n\nconfig BR2_PACKAGE_MTD_MTD_DEBUG\n\tbool \"mtd_debug\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_MTDPART\n\tbool \"mtdpart\"\n\nconfig BR2_PACKAGE_MTD_NANDDUMP\n\tbool \"nanddump\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_NANDTEST\n\tbool \"nandtest\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_NANDWRITE\n\tbool \"nandwrite\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_NANDFLIPBITS\n\tbool \"nandflipbits\"\n\nconfig BR2_PACKAGE_MTD_NFTLDUMP\n\tbool \"nftldump\"\n\nconfig BR2_PACKAGE_MTD_NFTL_FORMAT\n\tbool \"nftl_format\"\n\nconfig BR2_PACKAGE_MTD_RECV_IMAGE\n\tbool \"recv_image\"\n\nconfig BR2_PACKAGE_MTD_RFDDUMP\n\tbool \"rfddump\"\n\nconfig BR2_PACKAGE_MTD_RFDFORMAT\n\tbool \"rfdformat\"\n\nconfig BR2_PACKAGE_MTD_SERVE_IMAGE\n\tbool \"serve_image\"\n\nconfig BR2_PACKAGE_MTD_SUMTOOL\n\tbool \"sumtool\"\n\tselect BR2_PACKAGE_MTD_JFFS_UTILS\n\nconfig BR2_PACKAGE_MTD_MTDINFO\n\tbool \"mtdinfo\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_UBIATTACH\n\tbool \"ubiattach\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_UBICRC32\n\tbool \"ubicrc32\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_UBIDETACH\n\tbool \"ubidetach\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_UBIFORMAT\n\tbool \"ubiformat\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_UBIHEALTHD\n\tbool \"ubihealthd\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # getrandom()\n\ncomment \"ubihealthd needs a toolchain w/ headers >= 3.17\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17\n\nconfig BR2_PACKAGE_MTD_UBIMKVOL\n\tbool \"ubimkvol\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_UBINFO\n\tbool \"ubinfo\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_UBINIZE\n\tbool \"ubinize\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_UBIRENAME\n\tbool \"ubirename\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_UBIRMVOL\n\tbool \"ubirmvol\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_UBIRSVOL\n\tbool \"ubirsvol\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_UBIUPDATEVOL\n\tbool \"ubiupdatevol\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_UBIBLOCK\n\tbool \"ubiblock\"\n\tdefault y\n\nconfig BR2_PACKAGE_MTD_TESTS\n\tbool \"MTD test tools\"\n\tdepends on BR2_USE_MMU # fork() in fstests\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Build and install tools for testing MTD devices and drivers.\n\nif BR2_PACKAGE_MTD_TESTS\n\nconfig BR2_PACKAGE_MTD_FLASH_READTEST\n\tbool \"flash_readtest\"\n\nconfig BR2_PACKAGE_MTD_FLASH_SPEED\n\tbool \"flash_speed\"\n\nconfig BR2_PACKAGE_MTD_FLASH_STRESS\n\tbool \"flash_stress\"\n\nconfig BR2_PACKAGE_MTD_FLASH_TORTURE\n\tbool \"flash_torture\"\n\nconfig BR2_PACKAGE_MTD_INTEGCK\n\tbool \"integck\"\n\nconfig BR2_PACKAGE_MTD_NANDBITERRS\n\tbool \"nandbiterrs\"\n\nconfig BR2_PACKAGE_MTD_NANDPAGETEST\n\tbool \"nandpagetest\"\n\nconfig BR2_PACKAGE_MTD_NANDSUBPAGETEST\n\tbool \"nandsubpagetest\"\n\nendif\n\ncomment \"MTD test tools need a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nendif\n"
  },
  {
    "path": "package/mtd/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_MTD\n\tbool \"host mtd, jffs2 and ubi/ubifs tools\"\n\thelp\n\t  Build mtd, jffs2 and ubi/ubifs tools\n\n\t  http://www.linux-mtd.infradead.org/\n"
  },
  {
    "path": "package/mtd/mtd.hash",
    "content": "# Locally calculated after checking pgp signature\n# ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-2.1.3.tar.bz2.asc\nsha256  11305a5daf6fc6ed85120695c8593290b577effb039adbfa63d35b4418ff5630  mtd-utils-2.1.3.tar.bz2\nsha256  dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa  COPYING\n"
  },
  {
    "path": "package/mtd/mtd.mk",
    "content": "################################################################################\n#\n# mtd\n#\n################################################################################\n\nMTD_VERSION = 2.1.3\nMTD_SOURCE = mtd-utils-$(MTD_VERSION).tar.bz2\nMTD_SITE = ftp://ftp.infradead.org/pub/mtd-utils\nMTD_LICENSE = GPL-2.0\nMTD_LICENSE_FILES = COPYING\nMTD_CPE_ID_VENDOR = mtd-utils_project\nMTD_CPE_ID_PRODUCT = mtd-utils\nMTD_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_MTD_JFFS_UTILS),y)\nMTD_DEPENDENCIES += zlib lzo host-pkgconf\nMTD_CONF_OPTS += --with-jffs\nelse\nMTD_CONF_OPTS += --without-jffs\nendif\n\nifeq ($(BR2_PACKAGE_MTD_UBIFS_UTILS),y)\nMTD_DEPENDENCIES += util-linux zlib lzo host-pkgconf\nMTD_CONF_OPTS += --with-ubifs\n# crypto needs linux/hash_info.h\nifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12)$(BR2_PACKAGE_OPENSSL),yy)\nMTD_DEPENDENCIES += openssl\nMTD_CONF_OPTS += --with-crypto\nelse\nMTD_CONF_OPTS += --without-crypto\nendif\nifeq ($(BR2_PACKAGE_ZSTD),y)\nMTD_DEPENDENCIES += zstd\nMTD_CONF_OPTS += --with-zstd\nelse\nMTD_CONF_OPTS += --without-zstd\nendif\nelse\nMTD_CONF_OPTS += --without-ubifs\nendif\n\nifeq ($(BR2_PACKAGE_MTD_UBIHEALTHD),y)\nMTD_CONF_OPTS += --enable-ubihealthd\nelse\nMTD_CONF_OPTS += --disable-ubihealthd\nendif\n\nifeq ($(BR2_PACKAGE_MTD_TESTS),y)\nMTD_CONF_OPTS += --enable-tests\nelse\nMTD_CONF_OPTS += --disable-tests\nendif\n\n# If extended attributes are required, the acl package must\n# also be enabled which will also include the attr package.\nifeq ($(BR2_PACKAGE_ACL),y)\nMTD_DEPENDENCIES += acl\nMTD_CONF_OPTS += --with-xattr\nelse\nMTD_CONF_OPTS += --without-xattr\nendif\n\nHOST_MTD_DEPENDENCIES = host-acl host-zlib host-lzo host-util-linux host-zstd\nHOST_MTD_CONF_OPTS = \\\n\t--with-jffs \\\n\t--with-ubifs \\\n\t--without-crypto \\\n\t--disable-tests\n\nMKFS_JFFS2 = $(HOST_DIR)/sbin/mkfs.jffs2\nSUMTOOL = $(HOST_DIR)/sbin/sumtool\n\nMTD_TARGETS_$(BR2_PACKAGE_MTD_DOCFDISK)\t\t+= docfdisk\nMTD_TARGETS_$(BR2_PACKAGE_MTD_DOC_LOADBIOS)\t+= doc_loadbios\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASHCP)\t\t+= flashcp\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_ERASE)\t+= flash_erase\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_LOCK)\t+= flash_lock\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_DUMP)\t+= flash_otp_dump\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_INFO)\t+= flash_otp_info\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_LOCK)\t+= flash_otp_lock\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_WRITE)\t+= flash_otp_write\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_ERASE)\t+= flash_otp_erase\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_UNLOCK)\t+= flash_unlock\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_CHECK)\t+= ftl_check\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_FORMAT)\t+= ftl_format\nMTD_TARGETS_$(BR2_PACKAGE_MTD_JFFS2DUMP)\t+= jffs2dump\nMTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSJFFS2)\t+= mkfs.jffs2\nMTD_TARGETS_$(BR2_PACKAGE_MTD_MTD_DEBUG)\t+= mtd_debug\nMTD_TARGETS_$(BR2_PACKAGE_MTD_MTDPART)\t\t+= mtdpart\nMTD_TARGETS_$(BR2_PACKAGE_MTD_NANDDUMP)\t\t+= nanddump\nMTD_TARGETS_$(BR2_PACKAGE_MTD_NANDTEST)\t\t+= nandtest\nMTD_TARGETS_$(BR2_PACKAGE_MTD_NANDWRITE)\t+= nandwrite\nMTD_TARGETS_$(BR2_PACKAGE_MTD_NFTLDUMP)\t\t+= nftldump\nMTD_TARGETS_$(BR2_PACKAGE_MTD_NFTL_FORMAT)\t+= nftl_format\nMTD_TARGETS_$(BR2_PACKAGE_MTD_RECV_IMAGE)\t+= recv_image\nMTD_TARGETS_$(BR2_PACKAGE_MTD_RFDDUMP)\t\t+= rfddump\nMTD_TARGETS_$(BR2_PACKAGE_MTD_RFDFORMAT)\t+= rfdformat\nMTD_TARGETS_$(BR2_PACKAGE_MTD_SERVE_IMAGE)\t+= serve_image\nMTD_TARGETS_$(BR2_PACKAGE_MTD_SUMTOOL)\t\t+= sumtool\nMTD_TARGETS_$(BR2_PACKAGE_MTD_MTDINFO)\t\t+= mtdinfo\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBIATTACH)\t+= ubiattach\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBICRC32)\t\t+= ubicrc32\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBIDETACH)\t+= ubidetach\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBIFORMAT)\t+= ubiformat\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBIHEALTHD)\t+= ubihealthd\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBIMKVOL)\t\t+= ubimkvol\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBINFO)\t\t+= ubinfo\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBINIZE)\t\t+= ubinize\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBIRENAME)\t+= ubirename\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBIRMVOL)\t\t+= ubirmvol\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBIRSVOL)\t\t+= ubirsvol\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBIUPDATEVOL)\t+= ubiupdatevol\nMTD_TARGETS_$(BR2_PACKAGE_MTD_UBIBLOCK)\t\t+= ubiblock\nMTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSUBIFS)\t+= mkfs.ubifs\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_READTEST)\t+= flash_readtest\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_SPEED)\t+= flash_speed\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_STRESS)\t+= flash_stress\nMTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_TORTURE)\t+= flash_torture\nMTD_TARGETS_$(BR2_PACKAGE_MTD_INTEGCK)\t\t+= integck\nMTD_TARGETS_$(BR2_PACKAGE_MTD_NANDBITERRS)\t+= nandbiterrs\nMTD_TARGETS_$(BR2_PACKAGE_MTD_NANDPAGETEST)\t+= nandpagetest\nMTD_TARGETS_$(BR2_PACKAGE_MTD_NANDSUBPAGETEST)\t+= nandsubpagetest\nMTD_TARGETS_$(BR2_PACKAGE_MTD_NANDFLIPBITS)\t+= nandflipbits\n\ndefine MTD_INSTALL_TARGET_CMDS\n\t$(foreach f,$(MTD_TARGETS_y), \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$(f) $(TARGET_DIR)/usr/sbin/$(notdir $(f))\n\t)\nendef\n\n# Those libraries are not installed by \"make install\", but are needed\n# by other packages, such as swupdate.\ndefine MTD_INSTALL_LIBS\n\t$(INSTALL) -D -m 0755 $(@D)/include/libmtd.h $(STAGING_DIR)/usr/include/libmtd.h\n\t$(INSTALL) -D -m 0755 $(@D)/include/libubi.h $(STAGING_DIR)/usr/include/libubi.h\n\t$(INSTALL) -D -m 0755 $(@D)/include/mtd/ubi-media.h $(STAGING_DIR)/usr/include/mtd/ubi-media.h\n\t$(INSTALL) -D -m 0755 $(@D)/libmtd.a $(STAGING_DIR)/usr/lib/libmtd.a\n\t$(INSTALL) -D -m 0755 $(@D)/libubi.a $(STAGING_DIR)/usr/lib/libubi.a\nendef\n\nMTD_POST_INSTALL_STAGING_HOOKS += MTD_INSTALL_LIBS\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/mtdev/Config.in",
    "content": "config BR2_PACKAGE_MTDEV\n\tbool \"mtdev\"\n\thelp\n\t  The mtdev is a stand-alone library which transforms all\n\t  variants of kernel MT events to the slotted type B protocol.\n\n\t  http://bitmath.org/code/mtdev/\n"
  },
  {
    "path": "package/mtdev/mtdev.hash",
    "content": "# Locally calculated\nsha256  15d7b28da8ac71d8bc8c9287c2045fd174267bc740bec10cfda332dc1204e0e0  mtdev-1.1.6.tar.bz2\nsha256  795bfe74daae59a97d3a0c8ec0ba0f08c243adf94a3aa7981a4136fce31d55b4  COPYING\n"
  },
  {
    "path": "package/mtdev/mtdev.mk",
    "content": "################################################################################\n#\n# mtdev\n#\n################################################################################\n\nMTDEV_VERSION = 1.1.6\nMTDEV_SOURCE = mtdev-$(MTDEV_VERSION).tar.bz2\nMTDEV_SITE = http://bitmath.org/code/mtdev\n\nMTDEV_LICENSE = MIT\nMTDEV_LICENSE_FILES = COPYING\nMTDEV_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mtools/Config.in",
    "content": "config BR2_PACKAGE_MTOOLS\n\tbool \"mtools\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\t# runtime UTF conversion support\n\tselect BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY if BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  Mtools is a collection of utilities to access MS-DOS disks\n\t  from Unix without mounting them. It supports Win'95 style\n\t  long file names, OS/2 Xdf disks and 2m disks (store up to\n\t  1992k on a high density 3 1/2 disk).\n\n\t  http://www.gnu.org/software/mtools/\n\ncomment \"mtools needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/mtools/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_MTOOLS\n\tbool \"host mtools\"\n\thelp\n\t  Mtools is a collection of utilities to access MS-DOS disks\n\t  from Unix without mounting them. It supports Win'95 style long\n\t  file names, OS/2 Xdf disks and 2m disks (store up to 1992k on\n\t  a high density 3 1/2 disk).\n\n\t  http://www.gnu.org/software/mtools/\n"
  },
  {
    "path": "package/mtools/mtools.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  d09cff66d7277ad36a7573fc3e9803bfa558cdda83baabaafbf7761317462283  mtools-4.0.26.tar.lz\n\n# Locally calculated\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/mtools/mtools.mk",
    "content": "################################################################################\n#\n# mtools\n#\n################################################################################\n\nMTOOLS_VERSION = 4.0.26\nMTOOLS_SOURCE = mtools-$(MTOOLS_VERSION).tar.lz\nMTOOLS_SITE = $(BR2_GNU_MIRROR)/mtools\nMTOOLS_LICENSE = GPL-3.0+\nMTOOLS_LICENSE_FILES = COPYING\nMTOOLS_CONF_OPTS = --without-x\n# info documentation not needed\nMTOOLS_CONF_ENV = \\\n\tac_cv_func_setpgrp_void=yes \\\n\tac_cv_lib_bsd_gethostbyname=no \\\n\tac_cv_lib_bsd_main=no \\\n\tac_cv_path_INSTALL_INFO=\n\nHOST_MTOOLS_CONF_ENV = \\\n\tac_cv_lib_bsd_gethostbyname=no \\\n\tac_cv_lib_bsd_main=no \\\n\tac_cv_path_INSTALL_INFO=\n\n# link with iconv if enabled\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nMTOOLS_DEPENDENCIES += libiconv\nMTOOLS_CONF_ENV += LIBS=-liconv\nendif\n\n# Package does not build in parallel due to improper make rules\nMTOOLS_MAKE = $(MAKE1)\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/mtr/Config.in",
    "content": "config BR2_PACKAGE_MTR\n\tbool \"mtr\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  mtr combines the functionality of the 'traceroute' and 'ping'\n\t  programs in a single network diagnostic tool.\n\n\t  http://www.bitwizard.nl/mtr/\n"
  },
  {
    "path": "package/mtr/mtr.hash",
    "content": "# Locally calculated\nsha256  ea036fdd45da488c241603f6ea59a06bbcfe6c26177ebd34fff54336a44494b8  mtr-0.94.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/mtr/mtr.mk",
    "content": "################################################################################\n#\n# mtr\n#\n################################################################################\n\nMTR_VERSION = 0.94\nMTR_SITE = $(call github,traviscross,mtr,v$(MTR_VERSION))\nMTR_AUTORECONF = YES\nMTR_DEPENDENCIES = \\\n\thost-pkgconf \\\n\t$(if $(BR2_PACKAGE_LIBCAP),libcap)\nMTR_LICENSE = GPL-2.0\nMTR_LICENSE_FILES = COPYING\nMTR_SELINUX_MODULES = netutils\n\nifeq ($(BR2_PACKAGE_JANSSON),y)\nMTR_CONF_OPTS += --with-jansson\nMTR_DEPENDENCIES += jansson\nelse\nMTR_CONF_OPTS += --without-jansson\nendif\n\nifeq ($(BR2_PACKAGE_LIBGTK3),y)\nMTR_CONF_OPTS += --with-gtk\nMTR_DEPENDENCIES += libgtk3\nelse\nMTR_CONF_OPTS += --without-gtk\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nMTR_CONF_OPTS += --with-ncurses\nMTR_DEPENDENCIES += ncurses\nelse\nMTR_CONF_OPTS += --without-ncurses\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/multicat/Config.in",
    "content": "config BR2_PACKAGE_MULTICAT\n\tbool \"multicat\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_BITSTREAM\n\thelp\n\t  Simple and efficient multicast and transport stream\n\t  manipulation.\n\n\t  http://www.videolan.org/projects/multicat.html\n\ncomment \"multicat needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/multicat/multicat.hash",
    "content": "# From https://get.videolan.org/multicat/2.3/multicat-2.3.tar.bz2.md5\nmd5 cf4e4bc07d72eda110050d755db14620  multicat-2.3.tar.bz2\n# From https://get.videolan.org/multicat/2.3/multicat-2.3.tar.bz2.sha256\nsha256 2be162e9e8b2e6f6aa7686431f102db6c72c8288bd82dbc67ffed631f4a3361e  multicat-2.3.tar.bz2\n# locally calculated\nsha256 94f68aec169fb6c9937eade757251714d38a56812be5dbfc3973914a71ad8d2d COPYING\n"
  },
  {
    "path": "package/multicat/multicat.mk",
    "content": "################################################################################\n#\n# multicat\n#\n################################################################################\n\nMULTICAT_VERSION = 2.3\nMULTICAT_SOURCE = multicat-$(MULTICAT_VERSION).tar.bz2\nMULTICAT_SITE = https://get.videolan.org/multicat/$(MULTICAT_VERSION)\nMULTICAT_LICENSE = GPL-2.0+\nMULTICAT_LICENSE_FILES = COPYING\n\nMULTICAT_DEPENDENCIES = bitstream\n\n# Makefile does not use LDFLAGS. Use LDLIBS for that instead.\nMULTICAT_MAKE_ENV = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \\\n\tLDLIBS=\"$(TARGET_LDFLAGS)\"\n\ndefine MULTICAT_BUILD_CMDS\n\t$(MULTICAT_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine MULTICAT_INSTALL_TARGET_CMDS\n\t$(MULTICAT_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) PREFIX=/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/multipath-tools/0001-kpartx-libmultipath-use-pkg-config-to-get-path-to-he.patch",
    "content": "From 922855e245c8bdadc0d24b5b706549b18fb5f079 Mon Sep 17 00:00:00 2001\nFrom: Alexander Egorenkov <egorenar-dev@posteo.net>\nDate: Sat, 21 Nov 2020 11:08:56 +0100\nSubject: [PATCH] kpartx, libmultipath: use pkg-config to get path to\n headers\n\nUse pkg-config in Makefile to find path to devmapper and udev headers\nto enable cross-compilation.\n\nSigned-off-by: Alexander Egorenkov <egorenar-dev@posteo.net>\n---\n kpartx/Makefile       |  2 +-\n libmultipath/Makefile | 12 ++++++------\n 2 files changed, 7 insertions(+), 7 deletions(-)\n\ndiff --git a/kpartx/Makefile b/kpartx/Makefile\nindex 2906a984..29573890 100644\n--- a/kpartx/Makefile\n+++ b/kpartx/Makefile\n@@ -8,7 +8,7 @@ LDFLAGS += $(BIN_LDFLAGS)\n \n LIBDEPS += -ldevmapper\n \n-ifneq ($(call check_func,dm_task_set_cookie,/usr/include/libdevmapper.h),0)\n+ifneq ($(call check_func,dm_task_set_cookie,$(shell $(PKG_CONFIG) --variable=includedir devmapper)/libdevmapper.h),0)\n \tCFLAGS += -DLIBDM_API_COOKIE\n endif\n \ndiff --git a/libmultipath/Makefile b/libmultipath/Makefile\nindex 62ba16e8..3ad9130c 100644\n--- a/libmultipath/Makefile\n+++ b/libmultipath/Makefile\n@@ -20,27 +20,27 @@ ifdef SYSTEMD\n \tendif\n endif\n \n-ifneq ($(call check_func,dm_task_no_flush,/usr/include/libdevmapper.h),0)\n+ifneq ($(call check_func,dm_task_no_flush,$(shell $(PKG_CONFIG) --variable=includedir devmapper)/libdevmapper.h),0)\n \tCFLAGS += -DLIBDM_API_FLUSH -D_GNU_SOURCE\n endif\n \n-ifneq ($(call check_func,dm_task_get_errno,/usr/include/libdevmapper.h),0)\n+ifneq ($(call check_func,dm_task_get_errno,$(shell $(PKG_CONFIG) --variable=includedir devmapper)/libdevmapper.h),0)\n \tCFLAGS += -DLIBDM_API_GET_ERRNO\n endif\n \n-ifneq ($(call check_func,dm_task_set_cookie,/usr/include/libdevmapper.h),0)\n+ifneq ($(call check_func,dm_task_set_cookie,$(shell $(PKG_CONFIG) --variable=includedir devmapper)/libdevmapper.h),0)\n \tCFLAGS += -DLIBDM_API_COOKIE\n endif\n \n-ifneq ($(call check_func,udev_monitor_set_receive_buffer_size,/usr/include/libudev.h),0)\n+ifneq ($(call check_func,udev_monitor_set_receive_buffer_size,$(shell $(PKG_CONFIG) --variable=includedir libudev)/libudev.h),0)\n \tCFLAGS += -DLIBUDEV_API_RECVBUF\n endif\n \n-ifneq ($(call check_func,dm_task_deferred_remove,/usr/include/libdevmapper.h),0)\n+ifneq ($(call check_func,dm_task_deferred_remove,$(shell $(PKG_CONFIG) --variable=includedir devmapper)/libdevmapper.h),0)\n \tCFLAGS += -DLIBDM_API_DEFERRED\n endif\n \n-ifneq ($(call check_func,dm_hold_control_dev,/usr/include/libdevmapper.h),0)\n+ifneq ($(call check_func,dm_hold_control_dev,$(shell $(PKG_CONFIG) --variable=includedir devmapper)/libdevmapper.h),0)\n \tCFLAGS += -DLIBDM_API_HOLD_CONTROL\n endif\n \n-- \n2.29.2\n\n"
  },
  {
    "path": "package/multipath-tools/0002-Makefile.inc-Enable-systemd-if-ENABLE_SYSTEMD-is-def.patch",
    "content": "From 8370da992c752e4238de7a8b02ce0e179353c959 Mon Sep 17 00:00:00 2001\nFrom: Alexander Egorenkov <egorenar-dev@posteo.net>\nDate: Sun, 6 Sep 2020 10:37:41 +0200\nSubject: [PATCH] Makefile.inc: Enable systemd if ENABLE_SYSTEMD is defined\n\nsystemd is disabled by default, to activate it set ENABLE_SYSTEMD.\n\nSigned-off-by: Alexander Egorenkov <egorenar-dev@posteo.net>\n---\n Makefile.inc | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/Makefile.inc b/Makefile.inc\nindex d4d1e0dd..32bc1846 100644\n--- a/Makefile.inc\n+++ b/Makefile.inc\n@@ -35,6 +35,7 @@ ifndef RUN\n \tendif\n endif\n \n+ifdef ENABLE_SYSTEMD\n ifndef SYSTEMD\n \tifeq ($(shell pkg-config --modversion libsystemd >/dev/null 2>&1 && echo 1), 1)\n \t\tSYSTEMD = $(shell pkg-config --modversion libsystemd)\n@@ -45,6 +46,7 @@ ifndef SYSTEMD\n \t\tendif\n \tendif\n endif\n+endif\n \n ifndef SYSTEMDPATH\n \tSYSTEMDPATH=usr/lib\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/multipath-tools/Config.in",
    "content": "comment \"multipath-tools needs udev and a uClibc or glibc toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\tdepends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || !BR2_PACKAGE_HAS_UDEV\n\nconfig BR2_PACKAGE_MULTIPATH_TOOLS\n\tbool \"multipath-tools\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_JSON_C\n\tselect BR2_PACKAGE_LIBURCU\n\tselect BR2_PACKAGE_LIBAIO\n\tselect BR2_PACKAGE_LVM2\n\tselect BR2_PACKAGE_LVM2_STANDARD_INSTALL\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  This package provides the following binaries to drive\n\t  the Device Mapper multipathing driver:\n\t    * multipath - Device mapper target autoconfig.\n\t    * multipathd - Multipath daemon.\n\t    * mpathpersist - Manages SCSI persistent reservations on\n\t      dm multipath devices.\n\t    * kpartx - Create device maps from partition tables.\n\n\t  https://github.com/openSUSE/multipath-tools\n"
  },
  {
    "path": "package/multipath-tools/S60multipathd",
    "content": "#!/bin/sh\n\nDAEMON=\"multipathd\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\tstart-stop-daemon -b -m -S -q -p \"$PIDFILE\" -x \"/sbin/$DAEMON\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/multipath-tools/multipath-tools.hash",
    "content": "# Locally computed:\nsha256  7c5962be6068c78d5256e8fc979cf327988f7560705bb9cc25b508c50ca997c0  multipath-tools-0.8.7.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSES/GPL-2.0\nsha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  LICENSES/GPL-3.0\nsha256  b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c  LICENSES/LGPL-2.0\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSES/LGPL-2.1\nsha256  b1bd70cc61ab014cc2e744af6b117db481ef4fa5d59cb3a21d86059935c666df  README.md\n"
  },
  {
    "path": "package/multipath-tools/multipath-tools.mk",
    "content": "################################################################################\n#\n# multipath-tools\n#\n################################################################################\n\nMULTIPATH_TOOLS_VERSION = 0.8.7\nMULTIPATH_TOOLS_SITE = $(call github,opensvc,multipath-tools,$(MULTIPATH_TOOLS_VERSION))\n\nMULTIPATH_TOOLS_LICENSE = \\\n\tLGPL-2.0 (default), \\\n\tLGPL-2.1+ (libmpathcmd), \\\n\tGPL-2.0+ (libmultipath), \\\n\tGPL-3.0+ (libdmmp)\nMULTIPATH_TOOLS_LICENSE_FILES = \\\n\tLICENSES/GPL-2.0 \\\n\tLICENSES/GPL-3.0 \\\n\tLICENSES/LGPL-2.0 \\\n\tLICENSES/LGPL-2.1 \\\n\tREADME.md\n\nMULTIPATH_TOOLS_DEPENDENCIES = lvm2 json-c readline udev liburcu libaio host-pkgconf\nMULTIPATH_TOOLS_MAKE_OPTS = \\\n\tLIB=\"lib\" \\\n\tRUN=\"run\" \\\n\tOPTFLAGS=\"\" \\\n\tSTACKPROT=\"\" \\\n\tWARNFLAGS=\"\"\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nMULTIPATH_TOOLS_DEPENDENCIES += systemd\nMULTIPATH_TOOLS_MAKE_OPTS += ENABLE_SYSTEMD=1\nendif\n\ndefine MULTIPATH_TOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(MULTIPATH_TOOLS_MAKE_OPTS)\nendef\n\ndefine MULTIPATH_TOOLS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install \\\n\t\t$(MULTIPATH_TOOLS_MAKE_OPTS) DESTDIR=\"$(TARGET_DIR)\"\nendef\n\ndefine MULTIPATH_TOOLS_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/multipath-tools/S60multipathd \\\n\t\t$(TARGET_DIR)/etc/init.d/S60multipathd\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/mupdf/0001-Makefile-add-an-install_libs-target.patch",
    "content": "From 0989f13ecbc2155b05da0cb091801d32d750d2d4 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Rapha=C3=ABl=20M=C3=A9lotte?=\n <raphael.melotte@essensium.com>\nDate: Thu, 29 Aug 2019 09:51:02 +0200\nSubject: [PATCH] Makefile: add an install_libs target.\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis allows to install only the library files (if you need pymupdf but\nnot mupdf binaries for example).\n\nSigned-off-by: Raphaël Mélotte <raphael.melotte@essensium.com>\n---\n Makefile | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex c5bc541ac..e14f88526 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -322,7 +322,7 @@ libs: $(INSTALL_LIBS)\n tools: $(TOOL_APPS)\n apps: $(TOOL_APPS) $(VIEW_APPS)\n \n-install: libs apps\n+install_libs:\n \tinstall -d $(DESTDIR)$(incdir)/mupdf\n \tinstall -d $(DESTDIR)$(incdir)/mupdf/fitz\n \tinstall -d $(DESTDIR)$(incdir)/mupdf/pdf\n@@ -333,6 +333,7 @@ install: libs apps\n \tinstall -d $(DESTDIR)$(libdir)\n \tinstall -m 644 $(INSTALL_LIBS) $(DESTDIR)$(libdir)\n \n+install: libs apps install_libs\n \tinstall -d $(DESTDIR)$(bindir)\n \tinstall -m 755 $(TOOL_APPS) $(VIEW_APPS) $(DESTDIR)$(bindir)\n \n-- \n2.21.0\n\n"
  },
  {
    "path": "package/mupdf/0002-Bug-703366-Fix-double-free-of-object-during-linearization.patch",
    "content": "From cee7cefc610d42fd383b3c80c12cbc675443176a Mon Sep 17 00:00:00 2001\nFrom: Robin Watts <Robin.Watts@artifex.com>\nDate: Fri, 22 Jan 2021 17:05:15 +0000\nSubject: [PATCH] Bug 703366: Fix double free of object during linearization.\n\nThis appears to happen because we parse an illegal object from\na broken file and assign it to object 0, which is defined to\nbe free.\n\nHere, we fix the parsing code so this can't happen.\n\n[Retrieved from:\nhttp://git.ghostscript.com/?p=mupdf.git;h=cee7cefc610d42fd383b3c80c12cbc675443176a]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n source/pdf/pdf-parse.c | 6 ++++++\n source/pdf/pdf-xref.c  | 2 ++\n 2 files changed, 8 insertions(+)\n\ndiff --git a/source/pdf/pdf-parse.c b/source/pdf/pdf-parse.c\nindex 7abc8c3d4..5761c3351 100644\n--- a/source/pdf/pdf-parse.c\n+++ b/source/pdf/pdf-parse.c\n@@ -749,6 +749,12 @@ pdf_parse_ind_obj(fz_context *ctx, pdf_document *doc,\n \t\tfz_throw(ctx, FZ_ERROR_SYNTAX, \"expected generation number (%d ? obj)\", num);\n \t}\n \tgen = buf->i;\n+\tif (gen < 0 || gen >= 65536)\n+\t{\n+\t\tif (try_repair)\n+\t\t\t*try_repair = 1;\n+\t\tfz_throw(ctx, FZ_ERROR_SYNTAX, \"invalid generation number (%d)\", gen);\n+\t}\n \n \ttok = pdf_lex(ctx, file, buf);\n \tif (tok != PDF_TOK_OBJ)\ndiff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c\nindex 1b2bdcd59..30197b4b8 100644\n--- a/source/pdf/pdf-xref.c\n+++ b/source/pdf/pdf-xref.c\n@@ -1190,6 +1190,8 @@ pdf_read_new_xref(fz_context *ctx, pdf_document *doc, pdf_lexbuf *buf)\n \t{\n \t\tofs = fz_tell(ctx, doc->file);\n \t\ttrailer = pdf_parse_ind_obj(ctx, doc, doc->file, buf, &num, &gen, &stm_ofs, NULL);\n+\t\tif (num == 0)\n+\t\t\tfz_throw(ctx, FZ_ERROR_GENERIC, \"Trailer object number cannot be 0\\n\");\n \t}\n \tfz_catch(ctx)\n \t{\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/mupdf/0003-Bug-703791-Stay-within-hash-table-max-key-size-in-cached-color-converter.patch",
    "content": "From f5712c9949d026e4b891b25837edd2edc166151f Mon Sep 17 00:00:00 2001\nFrom: Tor Andersson <tor.andersson@artifex.com>\nDate: Tue, 20 Apr 2021 14:46:48 +0200\nSubject: [PATCH] Bug 703791: Stay within hash table max key size in cached\n color converter.\n\n[Retrieved from:\nhttp://git.ghostscript.com/?p=mupdf.git;h=f5712c9949d026e4b891b25837edd2edc166151f]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/mupdf/fitz/hash.h |  2 ++\n source/fitz/colorspace.c  | 40 ++++++++++++++++++++++++---------------\n source/fitz/hash.c        |  7 +++----\n 3 files changed, 30 insertions(+), 19 deletions(-)\n\ndiff --git a/include/mupdf/fitz/hash.h b/include/mupdf/fitz/hash.h\nindex e92eb0458..feb37a5e4 100644\n--- a/include/mupdf/fitz/hash.h\n+++ b/include/mupdf/fitz/hash.h\n@@ -5,6 +5,8 @@\n #include \"mupdf/fitz/context.h\"\n #include \"mupdf/fitz/output.h\"\n \n+#define FZ_HASH_TABLE_KEY_LENGTH 48\n+\n /**\n \tGeneric hash-table with fixed-length keys.\n \ndiff --git a/source/fitz/colorspace.c b/source/fitz/colorspace.c\nindex af454caf1..f4db9d3d2 100644\n--- a/source/fitz/colorspace.c\n+++ b/source/fitz/colorspace.c\n@@ -1025,23 +1025,30 @@ typedef struct fz_cached_color_converter\n static void fz_cached_color_convert(fz_context *ctx, fz_color_converter *cc_, const float *ss, float *ds)\n {\n \tfz_cached_color_converter *cc = cc_->opaque;\n-\tfloat *val = fz_hash_find(ctx, cc->hash, ss);\n-\tint n = cc->base.ds->n * sizeof(float);\n-\n-\tif (val)\n+\tif (cc->hash)\n \t{\n-\t\tmemcpy(ds, val, n);\n-\t\treturn;\n-\t}\n+\t\tfloat *val = fz_hash_find(ctx, cc->hash, ss);\n+\t\tint n = cc->base.ds->n * sizeof(float);\n \n-\tcc->base.convert(ctx, &cc->base, ss, ds);\n+\t\tif (val)\n+\t\t{\n+\t\t\tmemcpy(ds, val, n);\n+\t\t\treturn;\n+\t\t}\n \n-\tval = Memento_label(fz_malloc_array(ctx, cc->base.ds->n, float), \"cached_color_convert\");\n-\tmemcpy(val, ds, n);\n-\tfz_try(ctx)\n-\t\tfz_hash_insert(ctx, cc->hash, ss, val);\n-\tfz_catch(ctx)\n-\t\tfz_free(ctx, val);\n+\t\tcc->base.convert(ctx, &cc->base, ss, ds);\n+\n+\t\tval = Memento_label(fz_malloc_array(ctx, cc->base.ds->n, float), \"cached_color_convert\");\n+\t\tmemcpy(val, ds, n);\n+\t\tfz_try(ctx)\n+\t\t\tfz_hash_insert(ctx, cc->hash, ss, val);\n+\t\tfz_catch(ctx)\n+\t\t\tfz_free(ctx, val);\n+\t}\n+\telse\n+\t{\n+\t\tcc->base.convert(ctx, &cc->base, ss, ds);\n+\t}\n }\n \n void fz_init_cached_color_converter(fz_context *ctx, fz_color_converter *cc, fz_colorspace *ss, fz_colorspace *ds, fz_colorspace *is, fz_color_params params)\n@@ -1060,7 +1067,10 @@ void fz_init_cached_color_converter(fz_context *ctx, fz_color_converter *cc, fz_\n \tfz_try(ctx)\n \t{\n \t\tfz_find_color_converter(ctx, &cached->base, ss, ds, is, params);\n-\t\tcached->hash = fz_new_hash_table(ctx, 256, n * sizeof(float), -1, fz_free);\n+\t\tif (n * sizeof(float) <= FZ_HASH_TABLE_KEY_LENGTH)\n+\t\t\tcached->hash = fz_new_hash_table(ctx, 256, n * sizeof(float), -1, fz_free);\n+\t\telse\n+\t\t\tfz_warn(ctx, \"colorspace has too many components to be cached\");\n \t}\n \tfz_catch(ctx)\n \t{\ndiff --git a/source/fitz/hash.c b/source/fitz/hash.c\nindex 882b886c9..287d43f03 100644\n--- a/source/fitz/hash.c\n+++ b/source/fitz/hash.c\n@@ -11,11 +11,9 @@\n \tand removed frequently.\n */\n \n-enum { MAX_KEY_LEN = 48 };\n-\n typedef struct\n {\n-\tunsigned char key[MAX_KEY_LEN];\n+\tunsigned char key[FZ_HASH_TABLE_KEY_LENGTH];\n \tvoid *val;\n } fz_hash_entry;\n \n@@ -50,7 +48,8 @@ fz_new_hash_table(fz_context *ctx, int initialsize, int keylen, int lock, fz_has\n {\n \tfz_hash_table *table;\n \n-\tassert(keylen <= MAX_KEY_LEN);\n+\tif (keylen > FZ_HASH_TABLE_KEY_LENGTH)\n+\t\tfz_throw(ctx, FZ_ERROR_GENERIC, \"hash table key length too large\");\n \n \ttable = fz_malloc_struct(ctx, fz_hash_table);\n \ttable->keylen = keylen;\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/mupdf/0004-Makefile-compile-hexdump.exe-with-HOSTCC.patch",
    "content": "From c0036573a995dc78d3cf60a30ff0af2b47f3680a Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 14 Nov 2021 23:24:27 +0100\nSubject: [PATCH] Makefile: compile hexdump.exe with HOSTCC\n\nhexdump.exe must be compiled for the host or the build will fail when\ncross-compiling with HAVE_OBJCOPY=no\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://bugs.ghostscript.com/show_bug.cgi?id=704442]\n---\n Makefile | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/Makefile b/Makefile\nindex 6492b1ca3..0732b358f 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -60,6 +60,8 @@ AR_CMD = $(QUIET_AR) $(MKTGTDIR) ; $(AR) cr $@ $^\n ifdef RANLIB\n   RANLIB_CMD = $(QUIET_RANLIB) $(RANLIB) $@\n endif\n+HOSTCC ?= $(CC)\n+HOST_LINK_CMD = $(QUIET_LINK) $(MKTGTDIR) ; $(HOSTCC) -o $@ $^\n LINK_CMD = $(QUIET_LINK) $(MKTGTDIR) ; $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)\n TAGS_CMD = $(QUIET_TAGS) ctags -R --c-kinds=+p --exclude=platform/python --exclude=platform/c++\n WINDRES_CMD = $(QUIET_WINDRES) $(MKTGTDIR) ; $(WINDRES) $< $@\n@@ -81,6 +83,9 @@ $(OUT)/%.a :\n \t$(AR_CMD)\n \t$(RANLIB_CMD)\n \n+$(OUT)/scripts/hexdump.exe: scripts/hexdump.c\n+\t$(HOST_LINK_CMD)\n+\n $(OUT)/%.exe: %.c\n \t$(LINK_CMD)\n \n-- \n2.33.0\n\n"
  },
  {
    "path": "package/mupdf/Config.in",
    "content": "config BR2_PACKAGE_MUPDF\n\tbool \"mupdf\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # harfbuzz\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # harfbuzz\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_GUMBO_PARSER\n\tselect BR2_PACKAGE_HARFBUZZ\n\tselect BR2_PACKAGE_JBIG2DEC\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LCMS2\n\tselect BR2_PACKAGE_OPENJPEG\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  MuPDF is a lightweight PDF, XPS, and E-book viewer.\n\n\t  https://www.mupdf.com/index.html\n\ncomment \"mupdf needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/mupdf/mupdf.hash",
    "content": "# From https://mupdf.com/downloads/index.html:\nsha1  fc17bd01d5860e49b009f28a5ddb629e94af4510  mupdf-1.18.0-source.tar.xz\n\n# Locally computed:\nsha256 592d4f6c0fba41bb954eb1a41616661b62b134d5b383e33bd45a081af5d4a59a  mupdf-1.18.0-source.tar.xz\n\n# Hash for license files:\nsha256  57c8ff33c9c0cfc3ef00e650a1cc910d7ee479a8bc509f6c9209a7c2a11399d6  COPYING\n"
  },
  {
    "path": "package/mupdf/mupdf.mk",
    "content": "################################################################################\n#\n# mudpf\n#\n################################################################################\n\n# python-pymupdf's version must match mupdf's version\nMUPDF_VERSION = 1.18.0\nMUPDF_SOURCE = mupdf-$(MUPDF_VERSION)-source.tar.xz\nMUPDF_SITE = https://mupdf.com/downloads/archive\nMUPDF_LICENSE = AGPL-3.0+\nMUPDF_LICENSE_FILES = COPYING\nMUPDF_CPE_ID_VENDOR = artifex\nMUPDF_INSTALL_STAGING = YES\nMUPDF_DEPENDENCIES = \\\n\tfreetype \\\n\tgumbo-parser \\\n\tharfbuzz \\\n\thost-pkgconf \\\n\tjbig2dec jpeg \\\n\tlcms2 openjpeg \\\n\txlib_libX11 \\\n\tzlib\n\n# 0002-Bug-703366-Fix-double-free-of-object-during-linearization.patch\nMUPDF_IGNORE_CVES += CVE-2021-3407\n\n# 0003-Bug-703791-Stay-within-hash-table-max-key-size-in-cached-color-converter.patch\nMUPDF_IGNORE_CVES += CVE-2021-37220\n\n# The pkg-config name for gumbo-parser is `gumbo`.\nMUPDF_PKG_CONFIG_PACKAGES = \\\n\tfreetype2 \\\n\tgumbo \\\n\tharfbuzz \\\n\tlibjpeg \\\n\tzlib\n\nMUPDF_CFLAGS = \\\n\t$(TARGET_CFLAGS) \\\n\t`$(PKG_CONFIG_HOST_BINARY) --cflags $(MUPDF_PKG_CONFIG_PACKAGES)` \\\n\t-fPIC # -fPIC is needed because the Makefile doesn't append it.\n\nMUPDF_LDFLAGS = \\\n\t$(TARGET_LDFLAGS) \\\n\t`$(PKG_CONFIG_HOST_BINARY) --libs $(MUPDF_PKG_CONFIG_PACKAGES)`\n\n# mupdf doesn't use CFLAGS and LIBS but XCFLAGS and XLIBS instead.\n# with USE_SYSTEM_LIBS it will try to use system libraries instead of the bundled ones.\nMUPDF_MAKE_ENV = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \\\n\tXCFLAGS=\"$(MUPDF_CFLAGS)\" \\\n\tXLIBS=\"$(MUPDF_LDFLAGS)\" \\\n\tUSE_SYSTEM_LIBS=yes\n\nMUPDF_MAKE_OPTS = \\\n\tHAVE_OBJCOPY=no \\\n\tprefix=\"/usr\"\n\nifeq ($(BR2_PACKAGE_LIBFREEGLUT),y)\nMUPDF_DEPENDENCIES += libfreeglut\nelse\nMUPDF_MAKE_OPTS += HAVE_GLUT=no\nendif\n\ndefine MUPDF_BUILD_CMDS\n\t$(MUPDF_MAKE_ENV) $(MAKE) -C $(@D) $(MUPDF_MAKE_OPTS) all\nendef\n\ndefine MUPDF_INSTALL_STAGING_CMDS\n\t$(MUPDF_MAKE_ENV) $(MAKE) -C $(@D) $(MUPDF_MAKE_OPTS) \\\n\t\tDESTDIR=\"$(STAGING_DIR)\" install_libs\nendef\n\ndefine MUPDF_INSTALL_TARGET_CMDS\n\t$(MUPDF_MAKE_ENV) $(MAKE) -C $(@D) $(MUPDF_MAKE_OPTS) \\\n\t\tDESTDIR=\"$(TARGET_DIR)\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/murata-cyw-fw/Config.in",
    "content": "config BR2_PACKAGE_MURATA_CYW_FW\n\tbool \"murata-cyw-fw\"\n\thelp\n\t  Murata Wireless firmware, NVRAM and Bluetooth HCD patch files.\n\n\t  https://github.com/murata-wireless/cyw-fmac-fw\n\t  https://github.com/murata-wireless/cyw-fmac-nvram\n\t  https://github.com/murata-wireless/cyw-bt-patch\n\nif BR2_PACKAGE_MURATA_CYW_FW\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW43012\n\tbool \"CYW43012 (1LV)\"\n\thelp\n\t  Murata Wireless CYW43012 (1LV) module firmware files.\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW43340\n\tbool \"CYW43340/CYW43341 (1BW)\"\n\thelp\n\t  Murata Wireless CYW43340/CYW43341 (1BW) module firmware files.\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW43362\n\tbool \"CYW43362 (SN8000)\"\n\thelp\n\t  Murata Wireless CYW43362 (SN8000) module firmware files.\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW4339\n\tbool \"CYW4339 (1CK/ZP)\"\n\thelp\n\t  Murata Wireless CYW4339 (1CK/ZP) module firmware files.\n\nchoice\n\tprompt \"CYW4339 module\" if BR2_PACKAGE_MURATA_CYW_FW_CYW4339\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW4339_1CK\n\tbool \"1CK\"\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW4339_ZP\n\tbool \"ZP\"\n\nendchoice\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW43430\n\tbool \"CYW43430/CYW4343W/CYW43364 (1DX/1FX/1LN)\"\n\thelp\n\t  Murata Wireless CYW43430/CYW4343W/CYW43364 (1DX/1FX/1LN)\n\t  module firmware files.\n\nchoice\n\tprompt \"CYW43430/CYW4343W/CYW43364 module\" if BR2_PACKAGE_MURATA_CYW_FW_CYW43430\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW43430_1DX\n\tbool \"1DX\"\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW43430_1FX\n\tbool \"1FX\"\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW43430_1LN\n\tbool \"1LN\"\n\nendchoice\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW43455\n\tbool \"CYW43455 (1HK/1LC/1MW)\"\n\thelp\n\t  Murata Wireless CYW43455 (1HK/1LC/1MW) module firmware files.\n\nchoice\n\tprompt \"CYW43455 module\" if BR2_PACKAGE_MURATA_CYW_FW_CYW43455\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW43455_1HK\n\tbool \"1HK\"\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW43455_1LC\n\tbool \"1LC\"\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW43455_1MW\n\tbool \"1MW\"\n\nendchoice\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW4354\n\tbool \"CYW4354 (1BB)\"\n\thelp\n\t  Murata Wireless CYW4354 (1BB) module firmware files.\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW4356\n\tbool \"CYW4356 (1CX)\"\n\thelp\n\t  Murata Wireless CYW4356 (1CX) module firmware files.\n\nconfig BR2_PACKAGE_MURATA_CYW_FW_CYW4359\n\tbool \"CYW4359 (1FD)\"\n\thelp\n\t  Murata Wireless CYW4359 (1FD) module firmware files.\n\nendif\n"
  },
  {
    "path": "package/murata-cyw-fw/murata-cyw-fw.hash",
    "content": "# Locally calculated\nsha256 c3ecf357786d6db6f3283c0ea36ec067b1728f801fd8871694aed1502a82e9bc murata-cyw-fw-8d87950bfad28c65926695b7357bd8995b60016a.tar.gz\nsha256 03c140ae04f9c2036678262d6457b9c4b4a9ebb523c5e681af6d57b97c11da37 cyw-fmac-nvram-d27f1bf105fa1e5b828e355793b88d4b66188411.tar.gz\nsha256 8f23ebb9a262112b62ace1e1bedcdeb00523d9a45e8d48a829d4ca35db4f0280 cyw-bt-patch-748462f0b02ec4aeb500bedd60780ac51c37be31.tar.gz\nsha256 3a892759b73e8b459f1a750954b316118b0061fd9d1868d11fa258c104ee7e0c LICENCE.cypress\n"
  },
  {
    "path": "package/murata-cyw-fw/murata-cyw-fw.mk",
    "content": "################################################################################\n#\n# murata-cyw-fw\n#\n################################################################################\n\nMURATA_CYW_FW_VERSION = 8d87950bfad28c65926695b7357bd8995b60016a\nMURATA_CYW_FW_VERSION_NVRAM = d27f1bf105fa1e5b828e355793b88d4b66188411\nMURATA_CYW_FW_VERSION_BT_PATCH = 748462f0b02ec4aeb500bedd60780ac51c37be31\nMURATA_CYW_FW_SITE = $(call github,murata-wireless,cyw-fmac-fw,$(MURATA_CYW_FW_VERSION))\nMURATA_CYW_FW_EXTRA_DOWNLOADS = \\\n\t$(call github,murata-wireless,cyw-fmac-nvram,$(MURATA_CYW_FW_VERSION_NVRAM))/cyw-fmac-nvram-$(MURATA_CYW_FW_VERSION_NVRAM).tar.gz \\\n\t$(call github,murata-wireless,cyw-bt-patch,$(MURATA_CYW_FW_VERSION_BT_PATCH))/cyw-bt-patch-$(MURATA_CYW_FW_VERSION_BT_PATCH).tar.gz\nMURATA_CYW_FW_LICENSE = PROPRIETARY\nMURATA_CYW_FW_LICENSE_FILES = LICENCE.cypress\nMURATA_CYW_FW_REDISTRIBUTE = NO\n\ndefine MURATA_CYW_FW_EXTRACT_NVRAM_PATCH\n\t$(foreach tar,$(notdir $(MURATA_CYW_FW_EXTRA_DOWNLOADS)), \\\n\t\t$(call suitable-extractor,$(tar)) $(MURATA_CYW_FW_DL_DIR)/$(tar) | \\\n\t\t$(TAR) --strip-components=1 -C $(@D) $(TAR_OPTIONS) -\n\t)\nendef\nMURATA_CYW_FW_POST_EXTRACT_HOOKS += MURATA_CYW_FW_EXTRACT_NVRAM_PATCH\n\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43012) += \\\n\tbrcmfmac43012-sdio.bin \\\n\tbrcmfmac43012-sdio.1LV.clm_blob \\\n\tbrcmfmac43012-sdio.1LV.txt \\\n\tCYW43012C0.1LV.hcd\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43340) += \\\n\tbrcmfmac43340-sdio.bin \\\n\tbrcmfmac43340-sdio.1BW.txt \\\n\tCYW43341B0.1BW.hcd\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43362) += \\\n\tbrcmfmac43362-sdio.bin \\\n\tbrcmfmac43362-sdio.SN8000.txt\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW4339) += \\\n\tbrcmfmac4339-sdio.bin\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW4339_1CK) += \\\n\tbrcmfmac4339-sdio.1CK.txt\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW4339_ZP) += \\\n\tbrcmfmac4339-sdio.ZP.txt \\\n\tCYW4335C0.ZP.hcd\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43430) += \\\n\tbrcmfmac43430-sdio.bin\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43430_1DX) += \\\n\tbrcmfmac43430-sdio.1DX.clm_blob \\\n\tbrcmfmac43430-sdio.1DX.txt \\\n\tCYW43430A1.1DX.hcd\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43430_1FX) += \\\n\tbrcmfmac43430-sdio.1FX.clm_blob \\\n\tbrcmfmac43430-sdio.1FX.txt\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43430_1LN) += \\\n\tbrcmfmac43430-sdio.1LN.clm_blob \\\n\tbrcmfmac43430-sdio.1LN.txt\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43455) += \\\n\tbrcmfmac43455-sdio.bin\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43455_1HK) += \\\n\tbrcmfmac43455-sdio.1HK.clm_blob \\\n\tbrcmfmac43455-sdio.1HK.txt\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43455_1LC) += \\\n\tbrcmfmac43455-sdio.1LC.clm_blob \\\n\tbrcmfmac43455-sdio.1LC.txt\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW43455_1MW) += \\\n\tbrcmfmac43455-sdio.1MW.clm_blob \\\n\tbrcmfmac43455-sdio.1MW.txt \\\n\tCYW4345C0.1MW.hcd\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW4354) += \\\n\tbrcmfmac4354-sdio.bin \\\n\tbrcmfmac4354-sdio.1BB.clm_blob \\\n\tbrcmfmac4354-sdio.1BB.txt \\\n\tCYW4350C0.1BB.hcd\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW4356) += \\\n\tbrcmfmac4356-pcie.bin \\\n\tbrcmfmac4356-pcie.1CX.clm_blob \\\n\tbrcmfmac4356-pcie.1CX.txt \\\n\tCYW4354A2.1CX.hcd\nMURATA_CYW_FW_FILES_$(BR2_PACKAGE_MURATA_CYW_FW_CYW4359) += \\\n\tbrcmfmac4359-pcie.bin \\\n\tbrcmfmac4359-pcie.1FD.clm_blob\n\n# Helper that assumes filename with model has two dots (CHIP.MODEL.EXT),\n# but filename without model has only single dot (CHIP.EXT).\nmurata-cyw-fw-strip-model = $(shell echo -n $(1) | sed 's/\\..*\\./\\./')\n\n# Helper that strips model name and renames Bluetooth patch files to the ones\n# expected by Linux kernel.\nmurata-cyw-fw-file-rename = $(call murata-cyw-fw-strip-model,$(patsubst CYW%,BCM%,$(f)))\n\ndefine MURATA_CYW_FW_INSTALL_TARGET_CMDS\n\t$(foreach f,$(MURATA_CYW_FW_FILES_y), \\\n\t\t$(INSTALL) -m 0644 -D $(@D)/$(f) \\\n\t\t\t$(TARGET_DIR)/lib/firmware/brcm/$(call murata-cyw-fw-file-rename,$(f))\n\t)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/musepack/0001-shared.patch",
    "content": "Fixup installation of shared mpcdec library.\nBased on gentoo patch.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n---\n\ndiff -Nura musepack_src_r475.orig/libmpcdec/CMakeLists.txt musepack_src_r475/libmpcdec/CMakeLists.txt\n--- musepack_src_r475.orig/libmpcdec/CMakeLists.txt\t2010-08-21 12:55:01.000000000 -0300\n+++ musepack_src_r475/libmpcdec/CMakeLists.txt\t2011-08-17 15:53:06.126873408 -0300\n@@ -1,7 +1,12 @@\n include_directories(${libmpc_SOURCE_DIR}/include)\n if(SHARED)\n-  add_library(mpcdec SHARED huffman mpc_decoder mpc_reader streaminfo mpc_bits_reader mpc_demux requant synth_filter ${libmpc_SOURCE_DIR}/common/crc32)\n+  add_library(mpcdec_shared SHARED huffman mpc_decoder mpc_reader streaminfo mpc_bits_reader mpc_demux requant synth_filter ${libmpc_SOURCE_DIR}/common/crc32)\n+  set_target_properties(mpcdec_shared PROPERTIES OUTPUT_NAME mpcdec CLEAN_DIRECT_OUTPUT 1 VERSION 7.0.1 SOVERSION 7)\n+  target_link_libraries(mpcdec_shared m)\n+  install(TARGETS mpcdec_shared LIBRARY DESTINATION \"lib${LIB_SUFFIX}\" ARCHIVE DESTINATION \"lib${LIB_SUFFIX}\")\n else(SHARED)\n   add_library(mpcdec_static STATIC huffman mpc_decoder mpc_reader streaminfo mpc_bits_reader mpc_demux requant synth_filter ${libmpc_SOURCE_DIR}/common/crc32)\n+  set_target_properties(mpcdec_static PROPERTIES OUTPUT_NAME mpcdec CLEAN_DIRECT_OUTPUT 1)\n+  target_link_libraries(mpcdec_static m)\n+  install(TARGETS mpcdec_static LIBRARY DESTINATION \"lib${LIB_SUFFIX}\" ARCHIVE DESTINATION \"lib${LIB_SUFFIX}\")\n endif(SHARED)\n-\n"
  },
  {
    "path": "package/musepack/0002-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch",
    "content": "From d2f01ba6fa2a065156fad686d1849309c661e527 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Sun, 31 Aug 2014 12:07:31 +0200\nSubject: [PATCH 2/2] cmake: use the standard CMake flag to drive the shared\n object build\n\nIf BUILD_SHARED_LIBS is set and SHARED undefined, then drive SHARED with\nthe BUILD_SHARED_LIBS value.\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n---\n CMakeLists.txt | 15 ++++++++++-----\n 1 file changed, 10 insertions(+), 5 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex b13f78c..db75510 100755\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -7,11 +7,16 @@ project(libmpc C)\n set(CMAKE_VERBOSE_MAKEFILE false)\n TEST_BIG_ENDIAN(MPC_ENDIANNESS)\n \n-if(WIN32)\n-  option(SHARED \"Use shared libmpcdec\" OFF)\n-else(WIN32)\n-  option(SHARED \"Use shared libmpcdec\" ON)\n-endif(WIN32)\n+# Use the standard CMake flag to drive the shared object build.\n+if(DEFINED BUILD_SHARED_LIBS AND NOT DEFINED SHARED)\n+  set(SHARED ${BUILD_SHARED_LIBS})\n+else()\n+  if(WIN32)\n+    option(SHARED \"Use shared libmpcdec\" OFF)\n+  else(WIN32)\n+    option(SHARED \"Use shared libmpcdec\" ON)\n+  endif(WIN32)\n+endif()\n \n add_definitions(-DFAST_MATH -DCVD_FASTLOG)\n \n-- \n2.1.0\n\n"
  },
  {
    "path": "package/musepack/0003-include-fpu-control-with-glibc-only.patch",
    "content": "Include <fpu_control.h> only on glibc systems\n\nThe <fpu_control.h> header provides _FPU_*() macros, which the\nInit_FPU() function uses only on i386, and only when they are\ndefined. Since <fpu_control.h> is not available, this causes a build\nfailure with C libraries such as musl. By simply including\n<fpu_control.h> explicitly on glibc systems, we avoid the build\nfailure, since mpcenc.c already conditionally uses the <fpu_control.h>\nmacros only if they are defined.\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Thomas: better commit log.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\ndiff -uNr musepack_src_r475.org/mpcenc/mpcenc.h musepack_src_r475/mpcenc/mpcenc.h\n--- musepack_src_r475.org/mpcenc/mpcenc.h\t2009-02-23 19:15:46.000000000 +0100\n+++ musepack_src_r475/mpcenc/mpcenc.h\t2016-01-30 09:29:08.000000000 +0100\n@@ -50,7 +51,7 @@\n # include <unistd.h>\n #endif\n \n-#if   defined __linux__\n+#if   defined __GLIBC__\n #  include <fpu_control.h>\n #elif defined __FreeBSD__\n # include <machine/floatingpoint.h>\n"
  },
  {
    "path": "package/musepack/0004-missing-sys-select.patch",
    "content": "Add missing <sys/select.h> include\n\nThis header is needed when types like fd_set are used. This fixes a\nbuild issue occuring on the musl C library.\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Thomas: better commit log.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/mpcenc/mpcenc.h\n===================================================================\n--- a/mpcenc/mpcenc.h\n+++ b/mpcenc/mpcenc.h\n@@ -34,6 +34,7 @@\n //// portable system includes //////////////////////////////////////\n #include <stddef.h>\n #include <math.h>\n+#include <sys/select.h>\n \n //// system dependent system includes //////////////////////////////\n // low level I/O, where are prototypes and constants?\n"
  },
  {
    "path": "package/musepack/0005-fix-build-with-gcc-10.patch",
    "content": "fix build with gcc 10\n\nDefine __Cc, __Dc and Res_bit as extern to avoid the following build\nfailure with gcc 10 (which defaults to -fno-common):\n\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: CMakeFiles/mpcdec_shared.dir/requant.o:(.rodata+0x0): multiple definition of `__Dc'; CMakeFiles/mpcdec_shared.dir/mpc_decoder.o:(.rodata+0x430): first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: CMakeFiles/mpcdec_shared.dir/requant.o:(.rodata+0x28): multiple definition of `__Cc'; CMakeFiles/mpcdec_shared.dir/mpc_decoder.o:(.rodata+0x458): first defined here\n/nvme/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: CMakeFiles/mpcdec_shared.dir/requant.o:(.rodata+0x74): multiple definition of `Res_bit'; CMakeFiles/mpcdec_shared.dir/mpc_decoder.o:(.rodata+0x4a4): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/9971da8c59484a6a26eb79d6e157461a47855dbf\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -Naur musepack_src_r475.orig/libmpcdec/requant.h musepack_src_r475/libmpcdec/requant.h\n--- musepack_src_r475.orig/libmpcdec/requant.h\t2020-09-10 08:31:50.696105246 +0200\n+++ musepack_src_r475/libmpcdec/requant.h\t2020-09-10 08:32:52.944106476 +0200\n@@ -47,9 +47,9 @@\n \n \n /* C O N S T A N T S */\n-const mpc_uint8_t      Res_bit [18];     ///< Bits per sample for chosen quantizer\n-const MPC_SAMPLE_FORMAT __Cc    [1 + 18]; ///< Requantization coefficients\n-const mpc_int16_t       __Dc    [1 + 18]; ///< Requantization offset\n+extern const mpc_uint8_t      Res_bit [18];     ///< Bits per sample for chosen quantizer\n+extern const MPC_SAMPLE_FORMAT __Cc    [1 + 18]; ///< Requantization coefficients\n+extern const mpc_int16_t       __Dc    [1 + 18]; ///< Requantization offset\n \n #define Cc (__Cc + 1)\n #define Dc (__Dc + 1)\n"
  },
  {
    "path": "package/musepack/Config.in",
    "content": "config BR2_PACKAGE_MUSEPACK\n\tbool \"musepack\"\n\tselect BR2_PACKAGE_LIBCUEFILE\n\tselect BR2_PACKAGE_LIBREPLAYGAIN\n\thelp\n\t  Musepack is an audio compression format with a strong\n\t  emphasis on high quality. It's not lossless, but it is\n\t  designed for transparency, so that you won't be able to hear\n\t  differences between the original wave file and the much\n\t  smaller MPC file.\n\n\t  http://www.musepack.net/\n"
  },
  {
    "path": "package/musepack/musepack.hash",
    "content": "# From https://www.musepack.net/index.php?pg=src\nmd5\t754d67be67f713e54baf70fcfdb2817e\tmusepack_src_r475.tar.gz\n# Calculated based on the hash above\nsha256  a4b1742f997f83e1056142d556a8c20845ba764b70365ff9ccf2e3f81c427b2b  musepack_src_r475.tar.gz\n# Locally computed\nsha256  141f551d8e4f037b7f6bc9136b7d3116c7ae9ec8da10c4f14c07c6dc34bc9aa5  libmpcdec/COPYING\nsha256  0da88639aebbd614151ee52294fa13789f8cd28d9f2e0a56998b89b5c21ddc2b  libmpcenc/quant.c\n"
  },
  {
    "path": "package/musepack/musepack.mk",
    "content": "################################################################################\n#\n# musepack\n#\n################################################################################\n\nMUSEPACK_VERSION = r475\nMUSEPACK_SITE = http://files.musepack.net/source\nMUSEPACK_SOURCE = musepack_src_$(MUSEPACK_VERSION).tar.gz\nMUSEPACK_DEPENDENCIES = libcuefile libreplaygain\nMUSEPACK_INSTALL_STAGING = YES\nMUSEPACK_MAKE = $(MAKE1)\nMUSEPACK_LICENSE = BSD-3-Clause (*mpcdec), LGPL-2.1+ (*mpcenc)\nMUSEPACK_LICENSE_FILES = libmpcdec/COPYING libmpcenc/quant.c\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/musl/0001-avoid-kernel-if_ether.h.patch",
    "content": "From 3984adc4976de7553f51e0cf4de1e18c373b332b Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Thu, 15 Dec 2016 15:10:19 +0200\nSubject: [PATCH] Avoid redefinition of struct ethhdr\n\nThis is a workaround to the if_ether.h conflict between musl and the kernel.\nBoth define struct ethhdr.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\n include/netinet/if_ether.h | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/include/netinet/if_ether.h b/include/netinet/if_ether.h\nindex 11ee65823f93..cfe1949d3371 100644\n--- a/include/netinet/if_ether.h\n+++ b/include/netinet/if_ether.h\n@@ -1,6 +1,9 @@\n #ifndef _NETINET_IF_ETHER_H\n #define _NETINET_IF_ETHER_H\n \n+/* Suppress kernel if_ether.h header inclusion */\n+#define _LINUX_IF_ETHER_H\n+\n #include <stdint.h>\n #include <sys/types.h>\n \n-- \n2.10.2\n\n"
  },
  {
    "path": "package/musl/0002-package-musl-Make-scheduler-functions-Linux-compatib.patch",
    "content": "From 407c96fc790d0d11ca9603a2a533216c745b5051 Mon Sep 17 00:00:00 2001\nFrom: Stefan Nickl <Stefan.Nickl@gmail.com>\nDate: Mon, 13 May 2019 22:33:21 +0200\nSubject: [PATCH] Make scheduler functions Linux-compatible\n\nLet sched_getscheduler(), sched_setscheduler(), sched_getparam(),\nsched_setparam() invoke the Linux syscalls of the same name instead\nof returning -ENOSYS.\n\nSigned-off-by: Stefan Nickl <Stefan.Nickl@gmail.com>\n---\n src/sched/sched_getparam.c     | 3 +--\n src/sched/sched_getscheduler.c | 3 +--\n src/sched/sched_setparam.c     | 3 +--\n src/sched/sched_setscheduler.c | 3 +--\n 4 files changed, 4 insertions(+), 8 deletions(-)\n\ndiff --git a/src/sched/sched_getparam.c b/src/sched/sched_getparam.c\nindex 76f10e4..65be107 100644\n--- a/src/sched/sched_getparam.c\n+++ b/src/sched/sched_getparam.c\n@@ -1,8 +1,7 @@\n #include <sched.h>\n-#include <errno.h>\n #include \"syscall.h\"\n \n int sched_getparam(pid_t pid, struct sched_param *param)\n {\n-\treturn __syscall_ret(-ENOSYS);\n+\treturn syscall(SYS_sched_getparam, pid, param);\n }\ndiff --git a/src/sched/sched_getscheduler.c b/src/sched/sched_getscheduler.c\nindex 394e508..4c922f6 100644\n--- a/src/sched/sched_getscheduler.c\n+++ b/src/sched/sched_getscheduler.c\n@@ -1,8 +1,7 @@\n #include <sched.h>\n-#include <errno.h>\n #include \"syscall.h\"\n \n int sched_getscheduler(pid_t pid)\n {\n-\treturn __syscall_ret(-ENOSYS);\n+\treturn syscall(SYS_sched_getscheduler, pid);\n }\ndiff --git a/src/sched/sched_setparam.c b/src/sched/sched_setparam.c\nindex 18623ee..f699faf 100644\n--- a/src/sched/sched_setparam.c\n+++ b/src/sched/sched_setparam.c\n@@ -1,8 +1,7 @@\n #include <sched.h>\n-#include <errno.h>\n #include \"syscall.h\"\n \n int sched_setparam(pid_t pid, const struct sched_param *param)\n {\n-\treturn __syscall_ret(-ENOSYS);\n+\treturn syscall(SYS_sched_setparam, pid, param);\n }\ndiff --git a/src/sched/sched_setscheduler.c b/src/sched/sched_setscheduler.c\nindex 4435f21..e678221 100644\n--- a/src/sched/sched_setscheduler.c\n+++ b/src/sched/sched_setscheduler.c\n@@ -1,8 +1,7 @@\n #include <sched.h>\n-#include <errno.h>\n #include \"syscall.h\"\n \n int sched_setscheduler(pid_t pid, int sched, const struct sched_param *param)\n {\n-\treturn __syscall_ret(-ENOSYS);\n+\treturn syscall(SYS_sched_setscheduler, pid, sched, param);\n }\n-- \n2.21.0\n\n"
  },
  {
    "path": "package/musl/Config.in",
    "content": "config BR2_PACKAGE_MUSL\n\tbool\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_USES_MUSL\n\tselect BR2_PACKAGE_LINUX_HEADERS\n\t# SSP broken on i386/ppc: http://www.openwall.com/lists/musl/2016/12/04/2\n\tselect BR2_TOOLCHAIN_HAS_SSP if BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI \\\n\t\t&& !(BR2_i386 || BR2_powerpc)\n\t# Compatibility headers: cdefs.h, queue.h\n\tselect BR2_PACKAGE_MUSL_COMPAT_HEADERS\n\thelp\n\t  https://www.musl-libc.org/\n"
  },
  {
    "path": "package/musl/musl.hash",
    "content": "# Locally calculated after checking pgp signature from\n# https://musl.libc.org/releases/musl-1.2.2.tar.gz.asc\nsha256  9b969322012d796dc23dda27a35866034fa67d8fb67e0e2c45c913c3d43219dd  musl-1.2.2.tar.gz\nsha256  f9bc4423732350eb0b3f7ed7e91d530298476f8fec0c6c427a1c04ade22655af  COPYRIGHT\n"
  },
  {
    "path": "package/musl/musl.mk",
    "content": "################################################################################\n#\n# musl\n#\n################################################################################\n\nMUSL_VERSION = 1.2.2\nMUSL_SITE = http://www.musl-libc.org/releases\nMUSL_LICENSE = MIT\nMUSL_LICENSE_FILES = COPYRIGHT\nMUSL_CPE_ID_VENDOR = musl-libc\n\n# Before musl is configured, we must have the first stage\n# cross-compiler and the kernel headers\nMUSL_DEPENDENCIES = host-gcc-initial linux-headers\n\n# musl does not provide an implementation for sys/queue.h or sys/cdefs.h.\n# So, add the musl-compat-headers package that will install those files,\n# into the staging directory:\n#   sys/queue.h:  header from NetBSD\n#   sys/cdefs.h:  minimalist header bundled in Buildroot\nMUSL_DEPENDENCIES += musl-compat-headers\n\n# musl is part of the toolchain so disable the toolchain dependency\nMUSL_ADD_TOOLCHAIN_DEPENDENCY = NO\n\nMUSL_INSTALL_STAGING = YES\n\n# Thumb build is broken, build in ARM mode, since all architectures\n# that support Thumb1 also support ARM.\nifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)\nMUSL_EXTRA_CFLAGS += -marm\nendif\n\ndefine MUSL_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64,$(TARGET_CFLAGS)) $(MUSL_EXTRA_CFLAGS)\" \\\n\t\tCPPFLAGS=\"$(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64,$(TARGET_CPPFLAGS))\" \\\n\t\t./configure \\\n\t\t\t--target=$(GNU_TARGET_NAME) \\\n\t\t\t--host=$(GNU_TARGET_NAME) \\\n\t\t\t--prefix=/usr \\\n\t\t\t--libdir=/lib \\\n\t\t\t--disable-gcc-wrapper \\\n\t\t\t--enable-static \\\n\t\t\t$(if $(BR2_STATIC_LIBS),--disable-shared,--enable-shared))\nendef\n\ndefine MUSL_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine MUSL_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tDESTDIR=$(STAGING_DIR) install-libs install-tools install-headers\nendef\n\ndefine MUSL_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tDESTDIR=$(TARGET_DIR) install-libs\n\t$(RM) $(addprefix $(TARGET_DIR)/lib/,crt1.o crtn.o crti.o rcrt1.o Scrt1.o)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/musl-compat-headers/Config.in",
    "content": "config BR2_PACKAGE_MUSL_COMPAT_HEADERS\n\tbool\n"
  },
  {
    "path": "package/musl-compat-headers/cdefs.h",
    "content": "/* Copyright (C) 2016 Yann E. MORIN <yann.morin.1998@free.fr>\n *\n * This file is in the Public Domain.\n *\n * For jurisdictions in which the Public Domain does not exist\n * or it is not otherwise applicable, this file is licensed CC0\n * (Creative Commons Zero).\n */\n\n/* This file contains definitions for non-standard macros defined by\n * glibc, but quite commonly used in packages.\n *\n * Because they are non-standard, musl does not define those macros.\n * It does not provide cdefs.h either.\n *\n * This file is a compatibility header written from scratch, to be\n * installed when the C library is musl.\n *\n * Not all macros from the glibc's cdefs.h are available, only the\n * most commonly used ones.\n *\n * Please refer to the glibc documentation and source code for\n * explanations about those macros.\n */\n\n#ifndef BUILDROOT_SYS_CDEFS_H\n#define BUILDROOT_SYS_CDEFS_H\n\n/* Function prototypes. */\n#undef __P\n#define __P(arg) arg\n\n/* C declarations in C++ mode. */\n#ifdef __cplusplus\n# define __BEGIN_DECLS extern \"C\" {\n# define __END_DECLS   }\n#else\n# define __BEGIN_DECLS\n# define __END_DECLS\n#endif\n\n/* Don't throw exceptions in C functions. */\n#ifndef __cplusplus\n# define __THROW  __attribute__ ((__nothrow__))\n# define __NTH(f) __attribute__ ((__nothrow__)) f\n#else\n# define __THROW\n# define __NTH(f) f\n#endif\n\n#endif /* ifndef BUILDROOT_SYS_CDEFS_H */\n"
  },
  {
    "path": "package/musl-compat-headers/musl-compat-headers.hash",
    "content": "# Locally calculated\nsha256 c13407edd0e33be73cae72514cb234f8612e1c0e54401c9448daffd3a240158b  queue.h?rev=1.70\n"
  },
  {
    "path": "package/musl-compat-headers/musl-compat-headers.mk",
    "content": "################################################################################\n#\n# musl-compat-headers\n#\n################################################################################\n\n# No main site, just using extra downloads\nMUSL_COMPAT_HEADERS_QUEUE_H = http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys/queue.h?rev=1.70\n\nMUSL_COMPAT_HEADERS_EXTRA_DOWNLOADS = $(MUSL_COMPAT_HEADERS_QUEUE_H)\n\nMUSL_COMPAT_HEADERS_LICENSE = BSD-3-Clause, Public Domain or CC0\nMUSL_COMPAT_HEADERS_LICENSE_FILES = queue.h cdefs.h\n\nMUSL_COMPAT_HEADERS_ADD_TOOLCHAIN_DEPENDENCY = NO\n\n# Only installs headers\nMUSL_COMPAT_HEADERS_INSTALL_TARGET = NO\nMUSL_COMPAT_HEADERS_INSTALL_STAGING = YES\n\n# Copying both headers so legal-info finds them (they are _LICENSE_FILES)\ndefine MUSL_COMPAT_HEADERS_EXTRACT_CMDS\n\t$(INSTALL) -m 0644 -D $(MUSL_COMPAT_HEADERS_DL_DIR)/$(notdir $(MUSL_COMPAT_HEADERS_QUEUE_H)) $(@D)/queue.h\n\t$(INSTALL) -m 0644 -D $(MUSL_COMPAT_HEADERS_PKGDIR)/cdefs.h $(@D)/cdefs.h\nendef\n\ndefine MUSL_COMPAT_HEADERS_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/queue.h \\\n\t\t$(STAGING_DIR)/usr/include/sys/queue.h\n\t$(INSTALL) -D -m 0644 $(@D)/cdefs.h \\\n\t\t$(STAGING_DIR)/usr/include/sys/cdefs.h\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/musl-fts/Config.in",
    "content": "config BR2_PACKAGE_MUSL_FTS\n\tbool \"musl-fts\"\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  The musl-fts package implements the fts(3) functions\n\t  fts_open, fts_read, fts_children, fts_set and fts_close,\n\t  which are missing in musl and uClibc-ng C libraries.\n\n\t  https://github.com/void-linux/musl-fts\n"
  },
  {
    "path": "package/musl-fts/musl-fts.hash",
    "content": "# Locally calculated\nsha256\t  49ae567a96dbab22823d045ffebe0d6b14b9b799925e9ca9274d47d26ff482a6  musl-fts-1.2.7.tar.gz\nsha256\t  55af87e4017668f54467a3380e7ebbac5e672d8c763bfe95e6fc882a6fdc4046  COPYING\n"
  },
  {
    "path": "package/musl-fts/musl-fts.mk",
    "content": "################################################################################\n#\n# musl-fts\n#\n################################################################################\n\nMUSL_FTS_VERSION = 1.2.7\nMUSL_FTS_SITE = $(call github,void-linux,musl-fts,v$(MUSL_FTS_VERSION))\nMUSL_FTS_AUTORECONF = YES\nMUSL_FTS_LICENSE = BSD-3-Clause\nMUSL_FTS_LICENSE_FILES = COPYING\n# pkg-config needed for autoreconf\nMUSL_FTS_DEPENDENCIES = host-pkgconf\nMUSL_FTS_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mutt/Config.in",
    "content": "config BR2_PACKAGE_MUTT\n\tbool \"mutt\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Mutt is a sophisticated text-based Mail User Agent (MUA)\n\n\t  http://www.mutt.org/\n\nif BR2_PACKAGE_MUTT\n\nconfig BR2_PACKAGE_MUTT_IMAP\n\tbool \"imap\"\n\thelp\n\t  IMAP support\n\nconfig BR2_PACKAGE_MUTT_POP3\n\tbool \"pop3\"\n\thelp\n\t  POP3 support\n\nendif # BR2_PACKAGE_MUTT\n\ncomment \"mutt needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/mutt/mutt.hash",
    "content": "# Locally calculated\nsha256  4ae6d60f7f19854c375cc1c27b5768b71e9f450c2adc10c22e45de8a27de524a  mutt-2.1.1.tar.gz\nsha256  732f24b69a6c71cd8e01e4672bb8e12cc1cbb88a50a4665e6ca4fd95000a57ee  GPL\n"
  },
  {
    "path": "package/mutt/mutt.mk",
    "content": "################################################################################\n#\n# mutt\n#\n################################################################################\n\nMUTT_VERSION = 2.1.1\nMUTT_SITE = https://bitbucket.org/mutt/mutt/downloads\nMUTT_LICENSE = GPL-2.0+\nMUTT_LICENSE_FILES = GPL\nMUTT_CPE_ID_VENDOR = mutt\nMUTT_DEPENDENCIES = ncurses\nMUTT_CONF_OPTS = --disable-doc --disable-smtp\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nMUTT_CONF_ENV += LIBS=-latomic\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nMUTT_DEPENDENCIES += libiconv\nMUTT_CONF_OPTS += --enable-iconv\nendif\n\n# Both options can't be selected at the same time so prefer libidn2\nifeq ($(BR2_PACKAGE_LIBIDN2),y)\nMUTT_DEPENDENCIES += libidn2\nMUTT_CONF_OPTS += --with-idn2 --without-idn\nelse ifeq ($(BR2_PACKAGE_LIBIDN),y)\nMUTT_DEPENDENCIES += libidn\nMUTT_CONF_OPTS += --with-idn --without-idn2\nelse\nMUTT_CONF_OPTS += --without-idn --without-idn2\nendif\n\nifeq ($(BR2_PACKAGE_LIBGPGME),y)\nMUTT_DEPENDENCIES += libgpgme\nMUTT_CONF_OPTS += \\\n\t--enable-gpgme \\\n\t--with-gpgme-prefix=$(STAGING_DIR)/usr\nelse\nMUTT_CONF_OPTS += --disable-gpgme\nendif\n\nifeq ($(BR2_PACKAGE_MUTT_IMAP),y)\nMUTT_CONF_OPTS += --enable-imap\nelse\nMUTT_CONF_OPTS += --disable-imap\nendif\n\nifeq ($(BR2_PACKAGE_MUTT_POP3),y)\nMUTT_CONF_OPTS += --enable-pop\nelse\nMUTT_CONF_OPTS += --disable-pop\nendif\n\n# SSL support is only used by imap or pop3 module\nifneq ($(BR2_PACKAGE_MUTT_IMAP)$(BR2_PACKAGE_MUTT_POP3),)\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nMUTT_DEPENDENCIES += openssl\nMUTT_CONF_OPTS += \\\n\t--without-gnutls \\\n\t--with-ssl=$(STAGING_DIR)/usr\nelse ifeq ($(BR2_PACKAGE_GNUTLS),y)\nMUTT_DEPENDENCIES += gnutls\nMUTT_CONF_OPTS += \\\n\t--with-gnutls=$(STAGING_DIR)/usr \\\n\t--without-ssl\nelse\nMUTT_CONF_OPTS += \\\n\t--without-gnutls \\\n\t--without-ssl\nendif\nelse\nMUTT_CONF_OPTS += \\\n\t--without-gnutls \\\n\t--without-ssl\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE),y)\nMUTT_DEPENDENCIES += sqlite\nMUTT_CONF_OPTS += --with-sqlite3\nelse\nMUTT_CONF_OPTS += --without-sqlite3\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nMUTT_DEPENDENCIES += zlib\nMUTT_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr\nelse\nMUTT_CONF_OPTS += --without-zlib\nendif\n\n# Avoid running tests to check for:\n#  - target system is *BSD\n#  - C99 conformance (snprintf, vsnprintf)\n#  - behaviour of the regex library\n#  - if mail spool directory is world/group writable\n#  - we have a working libiconv\nMUTT_CONF_ENV += \\\n\tmutt_cv_bsdish=no \\\n\tmutt_cv_c99_snprintf=yes \\\n\tmutt_cv_c99_vsnprintf=yes \\\n\tmutt_cv_regex_broken=no \\\n\tmutt_cv_worldwrite=yes \\\n\tmutt_cv_groupwrite=yes \\\n\tmutt_cv_iconv_good=yes \\\n\tmutt_cv_iconv_nontrans=no\n\nMUTT_CONF_OPTS += --with-mailpath=/var/mail\n\ndefine MUTT_VAR_MAIL\n\tmkdir -p $(TARGET_DIR)/var\n\tln -sf /tmp $(TARGET_DIR)/var/mail\nendef\nMUTT_POST_INSTALL_TARGET_HOOKS += MUTT_VAR_MAIL\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mxml/Config.in",
    "content": "config BR2_PACKAGE_MXML\n\tbool \"Mini-XML\"\n\thelp\n\t  Lightweight XML Library\n\n\t  http://www.minixml.org\n"
  },
  {
    "path": "package/mxml/mxml.hash",
    "content": "# Locally computed\nsha256  b894f6c64964f2e77902564c17ba00f5d077a7a24054e7c1937903b0bd42c974  mxml-3.2.tar.gz\nsha256  c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4  LICENSE\nsha256  ed63aec4c75b9c21a5156b40052138032269bd27fd6f4bc0c51389807cdc7db9  NOTICE\n"
  },
  {
    "path": "package/mxml/mxml.mk",
    "content": "################################################################################\n#\n# mxml\n#\n################################################################################\n\nMXML_VERSION = 3.2\nMXML_SITE = https://github.com/michaelrsweet/mxml/releases/download/v$(MXML_VERSION)\nMXML_LICENSE = Apache-2.0 with exceptions\nMXML_LICENSE_FILES = LICENSE NOTICE\nMXML_CPE_ID_VENDOR = mini-xml_project\nMXML_CPE_ID_PRODUCT = mini-xml\nMXML_INSTALL_STAGING = YES\n\nMXML_INSTALL_STAGING_OPTS = DSTROOT=$(STAGING_DIR) install\nMXML_INSTALL_TARGET_OPTS = DSTROOT=$(TARGET_DIR) install\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/mxsldr/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_MXSLDR\n\tbool \"host mxsldr\"\n\tdepends on BR2_arm || BR2_armeb\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb\n\thelp\n\t  This package contains tools to download and execute code on\n\t  Freescale i.MX23 and i.MX28 SoC's through the Serial\n\t  Download Protocol.\n\n\t  https://gitlab.denx.de/denx/mxsldr\n\ncomment \"host mxsldr needs a toolchain w/ host gcc >= 4.9\"\n\tdepends on BR2_arm || BR2_armeb\n\tdepends on !BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/mxsldr/mxsldr.mk",
    "content": "################################################################################\n#\n# mxsldr\n#\n################################################################################\n\nMXSLDR_VERSION = 2793a657ab7a22487d21c1b020957806f8ae8383\nMXSLDR_SITE = git://git.denx.de/mxsldr.git\nMXSLDR_LICENSE = GPL-2.0+\nMXSLDR_LICENSE_FILES = COPYING\nHOST_MXSLDR_DEPENDENCIES = host-libusb host-pkgconf\n\ndefine HOST_MXSLDR_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_MXSLDR_INSTALL_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/mxsldr $(HOST_DIR)/bin/mxsldr\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/mysql/Config.in",
    "content": "config BR2_PACKAGE_MYSQL\n\tbool \"mysql support\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Select the desired mysql provider.\n\nif BR2_PACKAGE_MYSQL\n\nchoice\n\tprompt \"mysql variant\"\n\tdefault BR2_PACKAGE_ORACLE_MYSQL\n\thelp\n\t  Select either the oracle mysql server or the mariadb server\n\nconfig BR2_PACKAGE_MARIADB\n\tbool \"mariadb\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8\n\tselect BR2_PACKAGE_LIBAIO\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_HAS_MYSQL\n\thelp\n\t  MariaDB is one of the most popular database servers in the\n\t  world.  It's made by the original developers of MySQL and\n\t  guaranteed to stay open source.\n\n\t  http://www.mariadb.org/\n\ncomment \"mariadb needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8\n\nconfig BR2_PACKAGE_ORACLE_MYSQL\n\tbool \"oracle mysql\"\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_HAS_MYSQL\n\thelp\n\t  The MySQL Open Source Database System\n\n\t  http://www.mysql.com/\n\nendchoice\n\nif BR2_PACKAGE_MARIADB\n\nconfig BR2_PACKAGE_MARIADB_SERVER\n\tbool \"mariadb server\"\n\thelp\n\t  Install the mariadb server on the target.\n\nconfig BR2_PACKAGE_MARIADB_SERVER_EMBEDDED\n\tbool \"mariadb embedded server\"\n\tdepends on BR2_PACKAGE_MARIADB_SERVER\n\thelp\n\t  Install the mariadb embedded server on the target.\n\nendif\n\nif BR2_PACKAGE_ORACLE_MYSQL\n\nconfig BR2_PACKAGE_ORACLE_MYSQL_SERVER\n\tbool \"oracle mysql server\"\n\thelp\n\t  Install the MySQL server on the target.\n\nendif\n\nconfig BR2_PACKAGE_HAS_MYSQL\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_MYSQL\n\tstring\n\tdefault \"mariadb\"      if BR2_PACKAGE_MARIADB\n\tdefault \"oracle-mysql\" if BR2_PACKAGE_ORACLE_MYSQL\n\nendif\n\ncomment \"mysql needs a toolchain w/ C++, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/mysql/mysql.mk",
    "content": "################################################################################\n#\n# mysql\n#\n################################################################################\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "package/nano/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch",
    "content": "From a0594387565e1e6b4a8a8ba04ad13b135cc1f0b5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 1 Apr 2021 07:49:46 +0200\nSubject: [PATCH] lib/getrandom.c: fix build with uclibc < 1.0.35\n\nFix the following build failure with uclibc < 1.0.35 which is raised\nsince the addition of getrandom module in\nhttps://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=682cc4e678aceff32dea2a84b6e5147bdf5a20a7:\n\nIn file included from ./sys/random.h:40,\n                 from getrandom.c:22:\n/home/fabrice/buildroot/output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name 'size_t'\n   27 | extern int getrandom(void *__buf, size_t count, unsigned int flags)\n      |                                   ^~~~~~\n/home/fabrice/buildroot/output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:8:1: note: 'size_t' is defined in header '<stddef.h>'; did you forget to '#include <stddef.h>'?\n    7 | #include <features.h>\n  +++ |+#include <stddef.h>\n    8 |\n\nThis patch is not upstreamable as it is only a workaround for\nuclibc < 1.0.35, upstream uclibc has been patched with\nhttps://github.com/wbx-github/uclibc-ng/commit/00972c02c2b6e0a95d5def4a71bdfb188e091782\n\nFixes:\n - http://autobuild.buildroot.org/results/1932c524aa6b6a3337a0fc21b44adaac60972d30\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n lib/getrandom.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/lib/getrandom.c b/lib/getrandom.c\nindex 41212fb32..0ad3f9648 100644\n--- a/lib/getrandom.c\n+++ b/lib/getrandom.c\n@@ -19,6 +19,7 @@\n \n #include <config.h>\n \n+#include <stddef.h>\n #include <sys/random.h>\n \n #include <errno.h>\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/nano/Config.in",
    "content": "config BR2_PACKAGE_NANO\n\tbool \"nano\"\n\tdepends on BR2_USE_WCHAR\n\t# full version uses fork()\n\tselect BR2_PACKAGE_NANO_TINY if !BR2_USE_MMU\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  A nice ncurses-based editor. Started out as a clone of pico.\n\t  Great editor for new users.\n\n\t  https://www.nano-editor.org/\n\nif BR2_PACKAGE_NANO\n\nconfig BR2_PACKAGE_NANO_TINY\n\tbool \"optimize for size\"\n\tdefault y\n\thelp\n\t  Disable all features for the sake of size.\n\nendif\n\ncomment \"nano needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/nano/nano.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://www.nano-editor.org/dist/v5/nano-5.9.tar.xz.asc\n# using key BFD009061E535052AD0DF2150D28D4D2A0ACE884\nsha256  757db8cda4bb2873599e47783af463e3b547a627b0cabb30ea7bf71fb4c24937  nano-5.9.tar.xz\nsha256  fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7  COPYING\n"
  },
  {
    "path": "package/nano/nano.mk",
    "content": "################################################################################\n#\n# nano\n#\n################################################################################\n\nNANO_VERSION_MAJOR = 5\nNANO_VERSION = $(NANO_VERSION_MAJOR).9\nNANO_SITE = https://www.nano-editor.org/dist/v$(NANO_VERSION_MAJOR)\nNANO_SOURCE = nano-$(NANO_VERSION).tar.xz\nNANO_LICENSE = GPL-3.0+\nNANO_LICENSE_FILES = COPYING\nNANO_DEPENDENCIES = ncurses\n\nifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)\nNANO_CONF_ENV += ac_cv_prog_NCURSESW_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS)\nelse\nNANO_CONF_ENV += ac_cv_prog_NCURSESW_CONFIG=false\nNANO_MAKE_ENV += CURSES_LIB=\"-lncurses\"\nendif\n\nifeq ($(BR2_PACKAGE_NANO_TINY),y)\nNANO_CONF_OPTS += \\\n\t--enable-tiny \\\n\t--disable-libmagic \\\n\t--disable-color \\\n\t--disable-nanorc\ndefine NANO_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 $(@D)/src/nano $(TARGET_DIR)/usr/bin/nano\nendef\nelse\nNANO_CONF_OPTS += --disable-tiny\nifeq ($(BR2_PACKAGE_FILE),y)\nNANO_DEPENDENCIES += file\nNANO_CONF_OPTS += --enable-libmagic --enable-color --enable-nanorc\nelse\nNANO_CONF_OPTS += --disable-libmagic --disable-libmagic --disable-color\nendif # BR2_PACKAGE_FILE\nendif # BR2_PACKAGE_NANO_TINY\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nanocom/0001-fix-build-with-gcc-10.patch",
    "content": "fix build with gcc 10\n\nDefine curr_state as extern in nanocom.h to avoid the following build\nfailure with gcc 10 (which defaults to -fno-common):\n\n/home/buildroot/autobuild/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: /tmp/ccLQeiek.o:(.bss+0x7c): multiple definition of `curr_state'; /tmp/ccse155z.o:(.bss+0x0): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/4af4710cb9bbb1bc770b9824339dd7dbf8a80b05\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -Naurp nanocom-1.0.orig/nanocom.c nanocom-1.0/nanocom.c\n--- nanocom-1.0.orig/nanocom.c\t2020-09-04 14:50:15.973320870 +0200\n+++ nanocom-1.0/nanocom.c\t2020-09-04 14:53:49.429325087 +0200\n@@ -20,6 +20,8 @@ Based upon microcom by Anca and Lucian J\n \n #include \"nanocom.h\"\n \n+state curr_state;\n+\n int crnl_mapping; //0 - no mapping, 1 mapping\n \n char device[MAX_DEVICE_NAME]; /* serial device name */\ndiff -Naurp nanocom-1.0.orig/nanocom.h nanocom-1.0/nanocom.h\n--- nanocom-1.0.orig/nanocom.h\t2020-09-04 14:50:15.973320870 +0200\n+++ nanocom-1.0/nanocom.h\t2020-09-04 14:51:12.269321982 +0200\n@@ -73,7 +73,7 @@ typedef struct {\n     char echo_type; /*r for remote, l for local and n for none*/\n } state;\n \n-state curr_state;\n+extern state curr_state;\n    \n #endif /* NANOCOM_H */\n \n"
  },
  {
    "path": "package/nanocom/Config.in",
    "content": "config BR2_PACKAGE_NANOCOM\n\tbool \"nanocom\"\n\thelp\n\t  Nanocom is based upon microcom (http://microcom.port5.com/)\n\t  but removes the scripting and logging features while\n\t  introducing support for setting local/remote echo, parity\n\t  and stop bits. It also follows a more standard command line\n\t  style using the getopt function.  Internally much of the\n\t  code has been rewritten and reformatted, the menu system in\n\t  particular is almost entirely different.\n\n\t  http://nanocom.sourceforge.net/\n"
  },
  {
    "path": "package/nanocom/nanocom.hash",
    "content": "# Locally computed:\nsha256  5cb26e3e232cfc4a7cb16da432db532b775c5ebdb887ac9d39df5632f2c9a5e5  nanocom.tar.gz\nsha256  e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING\n"
  },
  {
    "path": "package/nanocom/nanocom.mk",
    "content": "################################################################################\n#\n# nanocom\n#\n################################################################################\n\nNANOCOM_VERSION = 1.0\nNANOCOM_SOURCE = nanocom.tar.gz\nNANOCOM_SITE = http://downloads.sourceforge.net/project/nanocom/nanocom/v$(NANOCOM_VERSION)\nNANOCOM_STRIP_COMPONENTS = 0\nNANOCOM_LICENSE = GPL-2.0+\nNANOCOM_LICENSE_FILES = COPYING\n\ndefine NANOCOM_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)\" -C $(@D)\nendef\n\ndefine NANOCOM_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/nanocom $(TARGET_DIR)/usr/bin/nanocom\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/nanomsg/Config.in",
    "content": "config BR2_PACKAGE_NANOMSG\n\tbool \"nanomsg\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  nanomsg is a socket library that provides several common\n\t  communication patterns. It aims to make the networking layer\n\t  fast, scalable, and easy to use. Implemented in C, it works\n\t  on a wide range of operating systems with no further\n\t  dependencies.\n\n\t  http://nanomsg.org/\n\nif BR2_PACKAGE_NANOMSG\n\nconfig BR2_PACKAGE_NANOMSG_TOOLS\n\tbool \"Build nanomsg tools\"\n\thelp\n\t  Build nanomsg tools\n\nendif\n\ncomment \"nanomsg needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/nanomsg/nanomsg.hash",
    "content": "# Locally computed\nsha256 218b31ae1534ab897cb5c419973603de9ca1a5f54df2e724ab4a188eb416df5a  nanomsg-1.1.5.tar.gz\n\n# Hash for license file:\nsha256 4e51f6a04312ea7c5f4f0e92d91b6415c1eeb09bdaf86a6fd11d93499457c07a  COPYING\n"
  },
  {
    "path": "package/nanomsg/nanomsg.mk",
    "content": "################################################################################\n#\n# nanomsg\n#\n################################################################################\n\nNANOMSG_VERSION = 1.1.5\nNANOMSG_SITE = $(call github,nanomsg,nanomsg,$(NANOMSG_VERSION))\nNANOMSG_INSTALL_STAGING = YES\nNANOMSG_LICENSE = MIT\nNANOMSG_LICENSE_FILES = COPYING\nNANOMSG_CONF_OPTS = -DNN_ENABLE_DOC=OFF -DNN_TESTS=OFF\n\nifeq ($(BR2_STATIC_LIBS),y)\nNANOMSG_CONF_OPTS += -DNN_STATIC_LIB=ON\nendif\n\nifeq ($(BR2_PACKAGE_NANOMSG_TOOLS),y)\nNANOMSG_CONF_OPTS += -DNN_TOOLS=ON\nelse\nNANOMSG_CONF_OPTS += -DNN_TOOLS=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/nasm/nasm.hash",
    "content": "# Locally calculated\nsha256  3caf6729c1073bf96629b57cee31eeb54f4f8129b01902c73428836550b30a3f  nasm-2.15.05.tar.xz\nsha256  1563996c52e220e15ef2418e67d39488255aa8c28c89e617074d3afe3ee329e0  LICENSE\n"
  },
  {
    "path": "package/nasm/nasm.mk",
    "content": "################################################################################\n#\n# nasm\n#\n################################################################################\n\nNASM_VERSION = 2.15.05\nNASM_SOURCE = nasm-$(NASM_VERSION).tar.xz\nNASM_SITE = https://www.nasm.us/pub/nasm/releasebuilds/$(NASM_VERSION)\nNASM_LICENSE = BSD-2-Clause\nNASM_LICENSE_FILES = LICENSE\nNASM_CPE_ID_VENDOR = nasm\nNASM_CPE_ID_PRODUCT = netwide_assembler\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/nbd/Config.in",
    "content": "config BR2_PACKAGE_NBD\n\tbool \"nbd\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  NBD is a set of utilities to configure network block devices,\n\t  allowing access to remote block devices over TCP/IP network.\n\n\t  http://nbd.sf.net/\n\nif BR2_PACKAGE_NBD\n\nconfig BR2_PACKAGE_NBD_CLIENT\n\tbool \"nbd client\"\n\tdefault y\n\thelp\n\t  The client part of NBD.\n\nconfig BR2_PACKAGE_NBD_SERVER\n\tbool \"nbd server\"\n\thelp\n\t  The server part of NBD.\n\nconfig BR2_PACKAGE_NBD_TRDUMP\n\tbool \"nbd trdump\"\n\thelp\n\t  Utility to dump server logs in human-readable form.\n\nendif\n\ncomment \"nbd needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/nbd/nbd.hash",
    "content": "# From http://sourceforge.net/projects/nbd/files/nbd/3.21/\nmd5  c51c4c500fe1ed84c3d5d5dd2ca71d23  nbd-3.21.tar.xz\nsha1  88c3296d43d20d7bda97e0f1bab0243a4f6fa880  nbd-3.21.tar.xz\n\n# Locally calculated\nsha256  e7688af39d91733bbcd2db08062c44fe503d004e51528740139c44aff6a6bef9  nbd-3.21.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/nbd/nbd.mk",
    "content": "################################################################################\n#\n# nbd\n#\n################################################################################\n\nNBD_VERSION = 3.21\nNBD_SOURCE = nbd-$(NBD_VERSION).tar.xz\nNBD_SITE = http://downloads.sourceforge.net/project/nbd/nbd/$(NBD_VERSION)\nNBD_CONF_OPTS = --enable-lfs\nNBD_DEPENDENCIES = host-pkgconf libglib2\nNBD_LICENSE = GPL-2.0\nNBD_LICENSE_FILES = COPYING\nNBD_CPE_ID_VENDOR = network_block_device_project\nNBD_CPE_ID_PRODUCT = network_block_device\n\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\n# We have linux/falloc.h\n# but uClibc lacks fallocate(2) which is a glibc-ism\nNBD_CONF_ENV = ac_cv_header_linux_falloc_h=no\nendif\n\nifneq ($(BR2_PACKAGE_NBD_CLIENT),y)\nNBD_TOREMOVE += /usr/sbin/nbd-client\nendif\nifneq ($(BR2_PACKAGE_NBD_SERVER),y)\nNBD_TOREMOVE += /usr/bin/nbd-server\nendif\nifneq ($(BR2_PACKAGE_NBD_TRDUMP),y)\nNBD_TOREMOVE += /usr/bin/nbd-trdump\nendif\n\ndefine NBD_CLEANUP_AFTER_INSTALL\n\trm -f $(addprefix $(TARGET_DIR), $(NBD_TOREMOVE))\nendef\n\nNBD_POST_INSTALL_TARGET_HOOKS += NBD_CLEANUP_AFTER_INSTALL\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ncdu/Config.in",
    "content": "config BR2_PACKAGE_NCDU\n\tbool \"ncdu\"\n\tdepends on BR2_USE_MMU # system()\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  ncdu is a disk usage analyzer with an ncurses interface\n\n\t  http://dev.yorhel.nl/ncdu\n"
  },
  {
    "path": "package/ncdu/ncdu.hash",
    "content": "# From https://dev.yorhel.nl/ncdu\nsha256  2b915752a183fae014b5e5b1f0a135b4b408de7488c716e325217c2513980fd4  ncdu-1.16.tar.gz\n\n# computed locally\nsha256  e9ed7095eee84ad6804450495738277b539da0c0b2006f50faf8e6e67a0a15aa  COPYING\n"
  },
  {
    "path": "package/ncdu/ncdu.mk",
    "content": "################################################################################\n#\n# ncdu\n#\n################################################################################\n\nNCDU_VERSION = 1.16\nNCDU_SITE = http://dev.yorhel.nl/download\n\nNCDU_DEPENDENCIES = ncurses\n\nNCDU_LICENSE = MIT\nNCDU_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ncftp/0001-fix-gcc-10.patch",
    "content": "Fix build with gcc 10\n\nAdd missing extern to gBm to fix the following build failure with\n-fno-common which is enabled by default with gcc 10:\n\n/usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-0/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: bookmark.o:(.bss+0x10): multiple definition of `gBm'; gpshare.o:(.bss+0x24): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/78822bc0e0039e8f8949011a256cac022863276f\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -Nura ncftp-3.2.6-orig/sh_util/gpshare.c ncftp-3.2.6/sh_util/gpshare.c\n--- ncftp-3.2.6-orig/sh_util/gpshare.c\t2020-08-21 10:46:34.173816750 +0200\n+++ ncftp-3.2.6/sh_util/gpshare.c\t2020-08-21 10:52:25.407976319 +0200\n@@ -28,7 +28,7 @@\n \n static int gIsAtty1 = 1, gIsAtty2 = 1;\n extern int gLoadedBm, gBookmarkMatchMode;\n-Bookmark gBm;\n+extern Bookmark gBm;\n \n double\n FileSize(double size, const char **uStr0, double *uMult0)\n"
  },
  {
    "path": "package/ncftp/Config.in",
    "content": "config BR2_PACKAGE_NCFTP\n\tbool \"ncftp\"\n\t# fork()\n\tdepends on BR2_USE_MMU\n\thelp\n\t  NcFTP Client (also known as just NcFTP) is a set of FREE\n\t  application programs implementing the File Transfer Protocol\n\t  (FTP).\n\n\t  http://www.ncftp.com/ncftp/\n\nif BR2_PACKAGE_NCFTP\n\nconfig BR2_PACKAGE_NCFTP_GET\n\tbool \"ncftpget\"\n\tdefault y\n\nconfig BR2_PACKAGE_NCFTP_PUT\n\tbool \"ncftpput\"\n\tdefault y\n\nconfig BR2_PACKAGE_NCFTP_LS\n\tbool \"ncftpls\"\n\tdefault y\n\nconfig BR2_PACKAGE_NCFTP_BATCH\n\tbool \"ncftpbatch/ncftpspooler\"\n\tdefault y\n\nconfig BR2_PACKAGE_NCFTP_BOOKMARKS\n\tbool \"ncftpbookmarks\"\n\tselect BR2_PACKAGE_NCURSES\n\nendif\n"
  },
  {
    "path": "package/ncftp/ncftp.hash",
    "content": "# Locally computed:\nsha256  129e5954850290da98af012559e6743de193de0012e972ff939df9b604f81c23  ncftp-3.2.6-src.tar.gz\nsha256  4fe2f063d25d79c49712a272ebb68e050c703eed9c66c80108427edfe3285580  doc/LICENSE.txt\n"
  },
  {
    "path": "package/ncftp/ncftp.mk",
    "content": "################################################################################\n#\n# ncftp\n#\n################################################################################\n\nNCFTP_VERSION = 3.2.6\n# use .gz as upstream .xz tarball has changed after the hash was added for\n# 2017.02. Can be changed back to .xz when version is bumped\nNCFTP_SOURCE = ncftp-$(NCFTP_VERSION)-src.tar.gz\nNCFTP_SITE = ftp://ftp.ncftp.com/ncftp\nNCFTP_TARGET_BINS = ncftp\nNCFTP_LICENSE = Clarified Artistic License\nNCFTP_LICENSE_FILES = doc/LICENSE.txt\n\nNCFTP_DEPENDENCIES = host-autoconf\nNCFTP_CONF_OPTS = --disable-ccdv\n\n# The bundled configure script is generated by autoconf 2.13 and doesn't\n# detect cross-compilation correctly. Therefore, we have to regenerate it.\n# We need to pass -I because of the non-standard m4 directory name, and\n# none of the other autotools are used, so the below is the easiest.\ndefine NCFTP_RUN_AUTOCONF\n\t(cd $(@D); $(AUTOCONF) -I$(@D)/autoconf_local/)\nendef\nNCFTP_PRE_CONFIGURE_HOOKS += NCFTP_RUN_AUTOCONF\n\nifeq ($(BR2_PACKAGE_NCFTP_GET),y)\nNCFTP_TARGET_BINS += ncftpget\nendif\n\nifeq ($(BR2_PACKAGE_NCFTP_PUT),y)\nNCFTP_TARGET_BINS += ncftpput\nendif\n\nifeq ($(BR2_PACKAGE_NCFTP_LS),y)\nNCFTP_TARGET_BINS += ncftpls\nendif\n\nifeq ($(BR2_PACKAGE_NCFTP_BATCH),y)\nNCFTP_TARGET_BINS += ncftpbatch\nNCFTP_INSTALL_NCFTP_BATCH = \\\n\tln -sf /usr/bin/ncftpbatch $(TARGET_DIR)/usr/bin/ncftpspooler\nendif\n\nifeq ($(BR2_PACKAGE_NCFTP_BOOKMARKS),y)\nNCFTP_TARGET_BINS += ncftpbookmarks\nNCFTP_DEPENDENCIES += ncurses\nendif\n\ndefine NCFTP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 $(addprefix $(NCFTP_DIR)/bin/, $(NCFTP_TARGET_BINS)) $(TARGET_DIR)/usr/bin\n\t$(NCFTP_INSTALL_NCFTP_BATCH)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ncmpc/0001-meson.build-add-atomic-dependency-for-sparc.patch",
    "content": "From d2bd33ec18c146b27fb5aff7dd0089faa195ef9b Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 11 Feb 2019 21:42:01 +0100\nSubject: [PATCH] meson.build: add atomic dependency for sparc\n\nLinking with libatomic is needed on sparc otherwise build fails on:\nncmpc@exe/src_Main.cxx.o: In function `std::__atomic_base<long>::operator++()':\n/home/buildroot/autobuild/instance-1/output/host/opt/ext-toolchain/sparc-buildroot-linux-uclibc/include/c++/6.4.0/bits/atomic_base.h:296: undefined reference to `__atomic_fetch_add_4'\n\nFixes:\n - http://autobuild.buildroot.org/results/7ac1a07e4f72633d3ec92b79dc5d8c062490abdc\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/MusicPlayerDaemon/ncmpc/pull/45]\n---\n meson.build | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/meson.build b/meson.build\nindex 2e6defc..b393e39 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -174,6 +174,9 @@ else\n   pcre_dep = declare_dependency()\n endif\n \n+# Needed on sparc \n+atomic_dep = cc.find_library('atomic', required: false)\n+\n inc = include_directories(\n   'src',\n \n@@ -352,6 +355,7 @@ ncmpc = executable('ncmpc',\n   sources,\n   include_directories: inc,\n   dependencies: [\n+    atomic_dep,\n     thread_dep,\n     boost_dep,\n     pcre_dep,\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/ncmpc/0002-meson.build-link-with-lintl-if-needed.patch",
    "content": "From 21ad6bf2bcb0745c25a28637449a72eee883a8e2 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 21 Apr 2019 19:19:10 +0200\nSubject: [PATCH] meson.build: link with lintl if needed\n\nFixes:\n - http://autobuild.buildroot.org/results/d53978fb30d77cb4d10921bf721eff3d066567ce\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not sent as upstream already rejected the first patch\non atomic: https://github.com/MusicPlayerDaemon/ncmpc/pull/45]\n---\n meson.build | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/meson.build b/meson.build\nindex 2e6defc..28e9d29 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -42,6 +42,7 @@ else\n   error('libintl.h not found')\n endif\n conf.set('ENABLE_NLS', enable_nls)\n+intl_dep = cc.find_library('intl', required: false)\n if enable_nls\n   conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())\n   subdir('po')\n@@ -356,6 +357,7 @@ ncmpc = executable('ncmpc',\n     boost_dep,\n     pcre_dep,\n     curses_dep,\n+    intl_dep,\n     lirc_dep,\n     libmpdclient_dep,\n   ],\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/ncmpc/Config.in",
    "content": "config BR2_PACKAGE_NCMPC\n\tbool \"ncmpc\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR # boost\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # boost\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_LIBMPDCLIENT\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  ncmpc is a fully featured MPD client, which runs in a terminal\n\t  (using ncurses). Its goal is to provide a keyboard oriented\n\t  and consistent interface to MPD, without wasting resources.\n\n\t  http://www.musicpd.org/clients/ncmpc/\n\ncomment \"ncmpc needs a toolchain w/ C++, wchar, threads, gcc >= 7\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_7\n"
  },
  {
    "path": "package/ncmpc/ncmpc.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  17ff446447e002f2ed4342b7324263a830df7d76bcf177dce928f7d3a6f1f785  ncmpc-0.45.tar.xz\n\n# Hash for license file:\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/ncmpc/ncmpc.mk",
    "content": "################################################################################\n#\n# ncmpc\n#\n################################################################################\n\nNCMPC_VERSION_MAJOR = 0\nNCMPC_VERSION = $(NCMPC_VERSION_MAJOR).45\nNCMPC_SOURCE = ncmpc-$(NCMPC_VERSION).tar.xz\nNCMPC_SITE = http://www.musicpd.org/download/ncmpc/$(NCMPC_VERSION_MAJOR)\nNCMPC_DEPENDENCIES = \\\n\tboost \\\n\thost-pkgconf \\\n\tlibmpdclient \\\n\tncurses \\\n\t$(TARGET_NLS_DEPENDENCIES)\nNCMPC_LICENSE = GPL-2.0+\nNCMPC_LICENSE_FILES = COPYING\nNCMPC_CPE_ID_VENDOR = ncmpc_project\n\nNCMPC_CONF_OPTS = \\\n\t-Dcurses=ncurses \\\n\t-Ddocumentation=disabled \\\n\t$(if $(BR2_SYSTEM_ENABLE_NLS),-Dnls=enabled,-Dnls=disabled)\n\nifeq ($(BR2_PACKAGE_LIRC_TOOLS),y)\nNCMPC_DEPENDENCIES += lirc-tools\nNCMPC_CONF_OPTS += -Dlirc=enabled\nelse\nNCMPC_CONF_OPTS += -Dlirc=disabled\nendif\n\nifeq ($(BR2_PACKAGE_PCRE),y)\nNCMPC_DEPENDENCIES += pcre\nNCMPC_CONF_OPTS += -Dregex=enabled\nelse\nNCMPC_CONF_OPTS += -Dregex=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/ncurses/0001-gcc-5.x-MKlib_gen.patch",
    "content": "Fix gcc 5.x build failure\n\nExtracted from upstream commit\nhttp://ncurses.scripts.mit.edu/?p=ncurses.git;a=commit;h=97bb4678dc03e753290b39bbff30ba2825df9517.\n\n+ modify MKlib_gen.sh to work around change in development version of\n  gcc introduced here:\n  https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html\n  https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00236.html\n  (reports by Marcus Shawcroft, Maohui Lei).\n\nOriginal author: Thomas E. Dickey <dickey@invisible-island.net>\nSigned-off-by: Mikhail Peselnik <bas@bmail.ru>\n[Adam Duskett: Refresh for 6.1]\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n--- a/ncurses/base/MKlib_gen.sh 2015-08-06 20:48:24.000000000 -0400\n+++ b/ncurses/base/MKlib_gen.sh\t2017-02-07 10:09:01.293962392 -0500\n@@ -505,11 +505,22 @@\n \t-e 's/gen_$//' \\\n \t-e 's/  / /g' >>$TMP\n \n+cat >$ED1 <<EOF\n+s/  / /g\n+s/^ //\n+s/ $//\n+s/P_NCURSES_BOOL/NCURSES_BOOL/g\n+EOF\n+\n+# A patch discussed here:\n+#       https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html\n+# introduces spurious #line markers.  Work around that by ignoring the system's\n+# attempt to define \"bool\" and using our own symbol here.\n+sed -e 's/bool/P_NCURSES_BOOL/g' $TMP > $ED2\n+cat $ED2 >$TMP\n+\n $preprocessor $TMP 2>/dev/null \\\n-| sed \\\n-\t-e 's/  / /g' \\\n-\t-e 's/^ //' \\\n-\t-e 's/_Bool/NCURSES_BOOL/g' \\\n+| sed -f $ED1 \\\n | $AWK -f $AW2 \\\n | sed -f $ED3 \\\n | sed \\\n"
  },
  {
    "path": "package/ncurses/Config.in",
    "content": "config BR2_PACKAGE_NCURSES\n\tbool \"ncurses\"\n\thelp\n\t  The Ncurses (new curses) library is a free software\n\t  emulation of curses in System V Release 4.0, and more.\n\n\t  This package installs only a few vital termcap entries\n\n\t  http://www.gnu.org/software/ncurses/\n\nif BR2_PACKAGE_NCURSES\n\nconfig BR2_PACKAGE_NCURSES_WCHAR\n\tbool \"enable wide char support\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Enable wide char & UTF-8 support in ncurses libraries\n\nconfig BR2_PACKAGE_NCURSES_TARGET_PROGS\n\tbool \"ncurses programs\"\n\thelp\n\t  Include ncurses programs in target (clear, reset, tput, ...)\n\nconfig BR2_PACKAGE_NCURSES_ADDITIONAL_TERMINFO\n\tstring \"additional terminfo files to install\"\n\thelp\n\t  Whitespace separated list of terminfo files to install on the\n\t  target. A small number of vital terminfo files are always\n\t  installed. This list is in addition to the vital ones.\n\n\t  The terminfo filenames should have the single letter path\n\t  prefix. e.g. t/tmux.\n\nendif\n"
  },
  {
    "path": "package/ncurses/ncurses.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  aa057eeeb4a14d470101eff4597d5833dcef5965331be3528c08d99cebaa0d17  ncurses-6.1.tar.gz\nsha256  cf9038be62c49a6b5fe93f33b32f983649b2f4c4c31cc99bd18e1e5871c31443  ncurses-6.1-20190609-patch.sh.bz2\nsha256  4b0a4c6abce4543ac4fd4c3389b14825e73b7cddcbb01a687c5dd837f21a3b04  ncurses-6.1-20190615.patch.gz\nsha256  b2302625ec2fa6dce79622670452e56ff6130dc02e655b52177264cfeff84c51  ncurses-6.1-20190623.patch.gz\nsha256  48b004a3e5409a02a5e751f996fe487f5ce45be1fff38572f7cc8167b22179bf  ncurses-6.1-20190630.patch.gz\nsha256  faf849eed92161ac09782badf84a19ad6beae472e87d460905865e08a6ed46e4  ncurses-6.1-20190706.patch.gz\nsha256  62d4954bf818659105aa1c21cc27cb2c133e02bdc7d3f6aa548caae2d1db7440  ncurses-6.1-20190713.patch.gz\nsha256  0c1a54bd5de9c890d1fabcfa92bf5bf46f7eccc54a48051367e82bdb29636450  ncurses-6.1-20190720.patch.gz\nsha256  0bbd08d3bd12686d4427c242d6a8fde2e299698039cd597303af713c5f538f17  ncurses-6.1-20190727.patch.gz\nsha256  40e5f350a921dbd03e3d9ff93bc477ec4f1f65878f307c534882fba3b0b40507  ncurses-6.1-20190728.patch.gz\nsha256  9648104311e209d17db9556d6efc898d5c80ed5fc80e8aa3cd08769544c839b8  ncurses-6.1-20190803.patch.gz\nsha256  fa1f583575717b2538d3a4ea59a67bc17dd07ed46cb99fe2beaf23d1b006e9df  ncurses-6.1-20190810.patch.gz\nsha256  5e9ae4f1b3e2e2d567a01a8fb2c9b7f3804cae97f28cd483d239afee781b8c2b  ncurses-6.1-20190817.patch.gz\nsha256  7592e5e610b3e9eeca78897da2330b7518f00e0a59d20df873c88a9b26bc4da9  ncurses-6.1-20190824.patch.gz\nsha256  1a9800a5ccc4f2cb572b63cdc8f1431642e014a58a30151af73977614d5c4aac  ncurses-6.1-20190831.patch.gz\nsha256  87685a6b90225efcd03375eb11b124fd9e95ee4b0f36bcbc82e56a70cd466b33  ncurses-6.1-20190907.patch.gz\nsha256  4ddebb6e0e5a67028eb3aca2352c9bd48cf122a512719f93e449e00a3c6634f8  ncurses-6.1-20190914.patch.gz\nsha256  4c725fa729d754f4e75af78fda4cf67d60e71c1625b5f4f49b7930c95bb8dd36  ncurses-6.1-20190921.patch.gz\nsha256  a830b879b57906b1e480e4785b32cec05081b7849c06c4b116459c4d343ba21b  ncurses-6.1-20190928.patch.gz\nsha256  d5eae35d920409613f565825e1e215fed89828040aab541328455da38e1a9b7c  ncurses-6.1-20191005.patch.gz\nsha256  136dbd07254810728c1fcb7614b566e7c3cb6af8c0783019bbb6b4b5e3c1e2c6  ncurses-6.1-20191012.patch.gz\nsha256  1d5125b20792e9f534432c3ef2aa68984c713416addeb2c4364c5ae897a3b8b7  ncurses-6.1-20191015.patch.gz\nsha256  a6475c05312ba0b12b72b83529c1d283a14c4470414c505fa45451e35f3ffcf5  ncurses-6.1-20191019.patch.gz\nsha256  f6c7469f33065faf1d04ac9e9bea1a88142b00b82e3db3674cca9ec24920b4af  ncurses-6.1-20191026.patch.gz\nsha256  0d0443937b9c04663de25b405bb95e658e7c87e1dd7a726b3813aa7f9b55f69a  ncurses-6.1-20191102.patch.gz\nsha256  f3b75787918d2f02a2005877e81fdc054c45b8249b43aabb531e3b817bcf7576  ncurses-6.1-20191109.patch.gz\nsha256  801d138b55986719aea7f42dc8c0cb618fa9a6edf92d1789a6ba5d61678f7761  ncurses-6.1-20191116.patch.gz\nsha256  45f447cf2c7a24295c7b9210473e943a238c57ca80581d121c9a1a3aa05332a6  ncurses-6.1-20191123.patch.gz\nsha256  ea758e3b0162348c4d5d6dac56f95809da3b7d0589205661a13430eb93f72f75  ncurses-6.1-20191130.patch.gz\nsha256  16b5a588c56a53c468d2359b21d5d8a007c4ef7696de12c964a1b661ed185f72  ncurses-6.1-20191207.patch.gz\nsha256  8725a2dc8f1cfdab41cb5fe56f930e070f8cdc81a77f303ef2658f65cd0b8edd  ncurses-6.1-20191214.patch.gz\nsha256  7e2a06fb0af6c84269d23ffe06c689bf1a8a57af39369690ee0698778d4b6cda  ncurses-6.1-20191221.patch.gz\nsha256  d052bcdb38f8b45a00c0a3190dec7ac1e72d5682f3a16d8accda239308aad62f  ncurses-6.1-20191228.patch.gz\nsha256  7b6253bae438154a88c7f3e301b872ed7ad71f943c873f4e6c82d8d36a5df72b  ncurses-6.1-20200104.patch.gz\nsha256  e438f28025c7d97c7f8fabf40eeab68bbf8ca871a0ba349e3fdec9165efe85cb  ncurses-6.1-20200111.patch.gz\nsha256  06d002c33f727c4a36a0b502c226ea3c3c5b80770703d2f783fffa6a0db04d92  ncurses-6.1-20200118.patch.gz\n# Locally computed\nsha256  4d1fde61868c73776a539366dccf5d5a4857e7fd7299efb1f02e07c2afe9ea87  COPYING\n"
  },
  {
    "path": "package/ncurses/ncurses.mk",
    "content": "################################################################################\n#\n# ncurses\n#\n################################################################################\n\nNCURSES_VERSION = 6.1\nNCURSES_SITE = $(BR2_GNU_MIRROR)/ncurses\nNCURSES_INSTALL_STAGING = YES\nNCURSES_DEPENDENCIES = host-ncurses\nNCURSES_LICENSE = MIT with advertising clause\nNCURSES_LICENSE_FILES = COPYING\nNCURSES_CPE_ID_VENDOR = gnu\n# Commit 4b21273d71d09 added upstream (security) patches up to 20200118\nNCURSES_IGNORE_CVES += CVE-2018-10754\nNCURSES_IGNORE_CVES += CVE-2018-19211\nNCURSES_IGNORE_CVES += CVE-2018-19217\nNCURSES_IGNORE_CVES += CVE-2019-17594\nNCURSES_IGNORE_CVES += CVE-2019-17595\nNCURSES_CONFIG_SCRIPTS = ncurses$(NCURSES_LIB_SUFFIX)6-config\nNCURSES_PATCH = \\\n\t$(addprefix https://invisible-mirror.net/archives/ncurses/$(NCURSES_VERSION)/, \\\n\t\tncurses-6.1-20190609-patch.sh.bz2 \\\n\t\tncurses-6.1-20190615.patch.gz \\\n\t\tncurses-6.1-20190623.patch.gz \\\n\t\tncurses-6.1-20190630.patch.gz \\\n\t\tncurses-6.1-20190706.patch.gz \\\n\t\tncurses-6.1-20190713.patch.gz \\\n\t\tncurses-6.1-20190720.patch.gz \\\n\t\tncurses-6.1-20190727.patch.gz \\\n\t\tncurses-6.1-20190728.patch.gz \\\n\t\tncurses-6.1-20190803.patch.gz \\\n\t\tncurses-6.1-20190810.patch.gz \\\n\t\tncurses-6.1-20190817.patch.gz \\\n\t\tncurses-6.1-20190824.patch.gz \\\n\t\tncurses-6.1-20190831.patch.gz \\\n\t\tncurses-6.1-20190907.patch.gz \\\n\t\tncurses-6.1-20190914.patch.gz \\\n\t\tncurses-6.1-20190921.patch.gz \\\n\t\tncurses-6.1-20190928.patch.gz \\\n\t\tncurses-6.1-20191005.patch.gz \\\n\t\tncurses-6.1-20191012.patch.gz \\\n\t\tncurses-6.1-20191015.patch.gz \\\n\t\tncurses-6.1-20191019.patch.gz \\\n\t\tncurses-6.1-20191026.patch.gz \\\n\t\tncurses-6.1-20191102.patch.gz \\\n\t\tncurses-6.1-20191109.patch.gz \\\n\t\tncurses-6.1-20191116.patch.gz \\\n\t\tncurses-6.1-20191123.patch.gz \\\n\t\tncurses-6.1-20191130.patch.gz \\\n\t\tncurses-6.1-20191207.patch.gz \\\n\t\tncurses-6.1-20191214.patch.gz \\\n\t\tncurses-6.1-20191221.patch.gz \\\n\t\tncurses-6.1-20191228.patch.gz \\\n\t\tncurses-6.1-20200104.patch.gz \\\n\t\tncurses-6.1-20200111.patch.gz \\\n\t\tncurses-6.1-20200118.patch.gz \\\n\t)\n\n# ncurses-6.1-20191012.patch.gz\nNCURSES_IGNORE_CVES += CVE-2019-17594 CVE-2019-17595\n\nNCURSES_CONF_OPTS = \\\n\t--without-cxx \\\n\t--without-cxx-binding \\\n\t--without-ada \\\n\t--without-tests \\\n\t--disable-big-core \\\n\t--without-profile \\\n\t--disable-rpath \\\n\t--disable-rpath-hack \\\n\t--enable-echo \\\n\t--enable-const \\\n\t--enable-overwrite \\\n\t--enable-pc-files \\\n\t--disable-stripping \\\n\t--with-pkg-config-libdir=\"/usr/lib/pkgconfig\" \\\n\t$(if $(BR2_PACKAGE_NCURSES_TARGET_PROGS),,--without-progs) \\\n\t--without-manpages\n\nifeq ($(BR2_STATIC_LIBS),y)\nNCURSES_CONF_OPTS += --without-shared --with-normal\nelse ifeq ($(BR2_SHARED_LIBS),y)\nNCURSES_CONF_OPTS += --with-shared --without-normal\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nNCURSES_CONF_OPTS += --with-shared --with-normal\nendif\n\n# configure can't find the soname for libgpm when cross compiling\nifeq ($(BR2_PACKAGE_GPM),y)\nNCURSES_CONF_OPTS += --with-gpm=libgpm.so.2\nNCURSES_DEPENDENCIES += gpm\nelse\nNCURSES_CONF_OPTS += --without-gpm\nendif\n\nNCURSES_TERMINFO_FILES = \\\n\ta/ansi \\\n\td/dumb \\\n\tl/linux \\\n\tp/putty \\\n\tp/putty-256color \\\n\tp/putty-vt100 \\\n\ts/screen \\\n\ts/screen-256color \\\n\tv/vt100 \\\n\tv/vt100-putty \\\n\tv/vt102 \\\n\tv/vt200 \\\n\tv/vt220 \\\n\tx/xterm \\\n\tx/xterm+256color \\\n\tx/xterm-256color \\\n\tx/xterm-color \\\n\tx/xterm-xfree86 \\\n\t$(call qstrip,$(BR2_PACKAGE_NCURSES_ADDITIONAL_TERMINFO))\n\nifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)\nNCURSES_CONF_OPTS += --enable-widec\nNCURSES_LIB_SUFFIX = w\nNCURSES_LIBS = ncurses menu panel form\n\ndefine NCURSES_LINK_LIBS_STATIC\n\t$(foreach lib,$(NCURSES_LIBS:%=lib%), \\\n\t\tln -sf $(lib)$(NCURSES_LIB_SUFFIX).a $(STAGING_DIR)/usr/lib/$(lib).a\n\t)\n\tln -sf libncurses$(NCURSES_LIB_SUFFIX).a \\\n\t\t$(STAGING_DIR)/usr/lib/libcurses.a\nendef\n\ndefine NCURSES_LINK_LIBS_SHARED\n\t$(foreach lib,$(NCURSES_LIBS:%=lib%), \\\n\t\tln -sf $(lib)$(NCURSES_LIB_SUFFIX).so $(STAGING_DIR)/usr/lib/$(lib).so\n\t)\n\tln -sf libncurses$(NCURSES_LIB_SUFFIX).so \\\n\t\t$(STAGING_DIR)/usr/lib/libcurses.so\nendef\n\ndefine NCURSES_LINK_PC\n\t$(foreach pc,$(NCURSES_LIBS), \\\n\t\tln -sf $(pc)$(NCURSES_LIB_SUFFIX).pc \\\n\t\t\t$(STAGING_DIR)/usr/lib/pkgconfig/$(pc).pc\n\t)\nendef\n\nNCURSES_LINK_STAGING_LIBS = \\\n\t$(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_STATIC);) \\\n\t$(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_SHARED))\n\nNCURSES_LINK_STAGING_PC = $(call NCURSES_LINK_PC)\n\nNCURSES_CONF_OPTS += --enable-ext-colors\n\nNCURSES_POST_INSTALL_STAGING_HOOKS += NCURSES_LINK_STAGING_LIBS\nNCURSES_POST_INSTALL_STAGING_HOOKS += NCURSES_LINK_STAGING_PC\n\nendif # BR2_PACKAGE_NCURSES_WCHAR\n\nifneq ($(BR2_ENABLE_DEBUG),y)\nNCURSES_CONF_OPTS += --without-debug\nendif\n\n# ncurses breaks with parallel build, but takes quite a while to\n# build single threaded. Work around it similar to how Gentoo does\ndefine NCURSES_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) sources\n\trm -rf $(@D)/misc/pc-files\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR)\nendef\n\nifeq ($(BR2_PACKAGE_NCURSES_TARGET_PROGS),y)\ndefine NCURSES_TARGET_SYMLINK_RESET\n\tln -sf tset $(TARGET_DIR)/usr/bin/reset\nendef\nNCURSES_POST_INSTALL_TARGET_HOOKS += NCURSES_TARGET_SYMLINK_RESET\nendif\n\ndefine NCURSES_TARGET_CLEANUP_TERMINFO\n\t$(RM) -rf $(TARGET_DIR)/usr/share/terminfo $(TARGET_DIR)/usr/share/tabset\n\t$(foreach t,$(NCURSES_TERMINFO_FILES), \\\n\t\t$(INSTALL) -D -m 0644 $(STAGING_DIR)/usr/share/terminfo/$(t) \\\n\t\t\t$(TARGET_DIR)/usr/share/terminfo/$(t)\n\t)\nendef\nNCURSES_POST_INSTALL_TARGET_HOOKS += NCURSES_TARGET_CLEANUP_TERMINFO\n\n#\n# On systems with an older version of tic, the installation of ncurses hangs\n# forever. To resolve the problem, build a static version of tic on host\n# ourselves, and use that during installation.\n#\ndefine HOST_NCURSES_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE1) -C $(@D) sources\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/progs tic\nendef\n\nHOST_NCURSES_CONF_ENV = \\\n\tac_cv_path_LDCONFIG=\"\"\n\nHOST_NCURSES_CONF_OPTS = \\\n\t--with-shared \\\n\t--without-gpm \\\n\t--without-manpages \\\n\t--without-cxx \\\n\t--without-cxx-binding \\\n\t--without-ada \\\n\t--with-default-terminfo-dir=/usr/share/terminfo \\\n\t--disable-db-install \\\n\t--without-normal\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/ndisc6/Config.in",
    "content": "config BR2_PACKAGE_NDISC6\n\tbool \"ndisc6 tools\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # c11\n\thelp\n\t  NDisc6 is a small collection of useful tools for IPv6\n\t  networking\n\n\t  http://www.remlab.net/ndisc6/\n\nif BR2_PACKAGE_NDISC6\n\nconfig BR2_PACKAGE_NDISC6_NAME2ADDR\n\tbool \"name2addr\"\n\thelp\n\t  name2addr perform DNS lookups from scripts.\n\nconfig BR2_PACKAGE_NDISC6_NDISC6\n\tbool \"ndisc6\"\n\thelp\n\t  ndisc6 performs ICMPv6 Neighbor Discovery in userland.\n\nconfig BR2_PACKAGE_NDISC6_RDISC6\n\tbool \"rdisc6\"\n\thelp\n\t  rdisc6 performs ICMPv6 Router Discovery in userland.\n\nconfig BR2_PACKAGE_NDISC6_RDNSSD\n\tbool \"rdnssd\"\n\thelp\n\t  IPv6 Recursive DNS Server discovery Daemon.\n\nconfig BR2_PACKAGE_NDISC6_RLTRACEROUTE6\n\tbool \"rltraceroute6\"\n\thelp\n\t  rltraceroute6 is an IPv6 traceroute implementation.\n\nconfig BR2_PACKAGE_NDISC6_TCPTRACEROUTE6\n\tbool \"tcptraceroute6\"\n\thelp\n\t  tcptraceroute6 is an TCP/IPv6 traceroute implementation.\n\nconfig BR2_PACKAGE_NDISC6_TCPSPRAY\n\tbool \"tcpspray\"\n\thelp\n\t  TCP/IP bandwidth measurement tool (Discard and Echo client).\n\nendif\n\ncomment \"ndisc6 needs a toolchain w/ gcc >= 4.7\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/ndisc6/ndisc6.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  36932f9fc47e2844abcda7550fa1343b3af4b4208dfb61e0c9d9224aad5df351  ndisc6-1.0.5.tar.bz2\n# Locally computed\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/ndisc6/ndisc6.mk",
    "content": "################################################################################\n#\n# ndisc6\n#\n################################################################################\n\nNDISC6_VERSION = 1.0.5\nNDISC6_SOURCE = ndisc6-$(NDISC6_VERSION).tar.bz2\nNDISC6_SITE = http://www.remlab.net/files/ndisc6\nNDISC6_CONF_ENV = CC=\"$(TARGET_CC) -std=c11\" LIBS=$(TARGET_NLS_LIBS)\nNDISC6_CONF_OPTS = --disable-rpath --disable-suid-install\nNDISC6_LICENSE = GPL-2.0 or GPL-3.0\nNDISC6_LICENSE_FILES = COPYING\nNDISC6_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\n\nNDISC6_BIN_ += dnssort # perl script\nNDISC6_BIN_$(BR2_PACKAGE_NDISC6_NAME2ADDR) += name2addr addr2name\nNDISC6_BIN_$(BR2_PACKAGE_NDISC6_TCPSPRAY) += tcpspray tcpspray6\n\nNDISC6_SBIN_$(BR2_PACKAGE_NDISC6_NDISC6) += ndisc6\nNDISC6_SBIN_$(BR2_PACKAGE_NDISC6_RDISC6) += rdisc6\nNDISC6_SBIN_$(BR2_PACKAGE_NDISC6_RDNSSD) += rdnssd\nNDISC6_SBIN_$(BR2_PACKAGE_NDISC6_RLTRACEROUTE6) += rltraceroute6 tracert6\nNDISC6_SBIN_$(BR2_PACKAGE_NDISC6_TCPTRACEROUTE6) += tcptraceroute6\n\ndefine NDISC6_REMOVE_UNNEEDED\n\trm -rf $(addprefix $(TARGET_DIR)/usr/bin/,$(NDISC6_BIN_)) \\\n\t\t$(addprefix $(TARGET_DIR)/usr/sbin/,$(NDISC6_SBIN_))\n\t$(if $(BR2_PACKAGE_NDISC6_RDNSSD),,\\\n\t\trm -rf $(TARGET_DIR)/etc/rdnssd $(TARGET_DIR)/var/run/rdnssd)\nendef\n\nNDISC6_POST_INSTALL_TARGET_HOOKS += NDISC6_REMOVE_UNNEEDED\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ne10/0001-CMakeLists-don-t-hard-code-thumb-code-generation.patch",
    "content": "From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001\nFrom: Cody Guldner <cody.guldner@rockwellcollins.com>\nDate: Tue, 14 Apr 2020 09:12:01 -0500\nSubject: [PATCH] CMakeLists: don't hard code thumb code generation\n\nMigrating to version 1.2.1\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\nSigned-off-by: Clayton Shotwell <clayton.shotwell@rockwellcollins.com>\nSigned-off-by: Cody Guldner <cody.guldner@rockwellcollins.com>\n---\n CMakeLists.txt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex fc2a5e3..25da215 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -135,7 +135,7 @@ if(ANDROID_PLATFORM)\n     ${CMAKE_C_FLAGS}\")\n elseif(GNULINUX_PLATFORM)\n     if(${NE10_TARGET_ARCH} STREQUAL \"armv7\")\n-      set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -mthumb-interwork -mthumb -march=armv7-a -mfpu=vfp3 -funsafe-math-optimizations\")\n+      set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -mthumb-interwork -march=armv7-a -mfpu=vfp3 -funsafe-math-optimizations\")\n       set(CMAKE_ASM_FLAGS \"${CMAKE_C_FLAGS} -mthumb-interwork -mthumb -march=armv7-a -mfpu=neon\")\n       # Turn on asm optimization for Linux on ARM v7.\n       set(NE10_ASM_OPTIMIZATION on)\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/ne10/Config.in",
    "content": "config BR2_PACKAGE_NE10_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_arm && (BR2_ARM_FPU_NEON || BR2_ARM_FPU_NEON_VFPV4)\n\nconfig BR2_PACKAGE_NE10\n\tbool \"ne10\"\n\tdepends on BR2_PACKAGE_NE10_ARCH_SUPPORTS\n\thelp\n\t  The Ne10 project has been set up to provide a set of common,\n\t  useful functions which have been heavily optimized for the\n\t  ARM and AArch64 Architecture and provide consistent well\n\t  tested behavior that can be easily incorporated into\n\t  applications. C interfaces to the functions are provided for\n\t  both assembler and NEON implementations.\n\n\t  http://projectne10.github.io/Ne10/\n"
  },
  {
    "path": "package/ne10/ne10.hash",
    "content": "# Locally calculated\nsha256  dd1a96610c0692cc80154ae123edd5d25e6e0a3f81d0c16a96425f3ef57b9929  ne10-1.2.1.tar.gz\nsha256  eb48041c8e0ad556cf72f2a6eff89c893aa5702bba4e163ca7798cce07e6c55e  doc/LICENSE\n"
  },
  {
    "path": "package/ne10/ne10.mk",
    "content": "################################################################################\n#\n# ne10\n#\n################################################################################\n\nNE10_VERSION = 1.2.1\nNE10_SITE = $(call github,projectNe10,Ne10,v$(NE10_VERSION))\nNE10_LICENSE = BSD-3-Clause or Apache-2.0\nNE10_LICENSE_FILES = doc/LICENSE\nNE10_INSTALL_STAGING = YES\n\nNE10_CONF_OPTS = \\\n\t-DGNULINUX_PLATFORM=ON \\\n\t-DNE10_BUILD_EXAMPLES=OFF \\\n\t-DNE10_BUILD_UNIT_TEST=OFF \\\n\t-DNE10_LINUX_TARGET_ARCH=$(if $(BR2_aarch64),aarch64,armv7)\n\nifeq ($(BR2_STATIC_LIBS),)\nNE10_CONF_OPTS += \\\n\t-DNE10_BUILD_SHARED=ON\nendif\n\n# The package does not have any install target, so have to provide\n# INSTALL_STAGING_CMDS and INSTALL_TARGET_CMDS.\n\nifeq ($(BR2_STATIC_LIBS),)\ndefine NE10_INSTALL_STAGING_SHARED_LIB\n\tcp -dpf $(@D)/modules/libNE10*.so* $(STAGING_DIR)/usr/lib/\nendef\nendif\n\ndefine NE10_INSTALL_STAGING_CMDS\n\tcp -dpf $(@D)/inc/NE10*h $(STAGING_DIR)/usr/include/\n\tcp -dpf $(@D)/modules/libNE10.a $(STAGING_DIR)/usr/lib/\n\t$(NE10_INSTALL_STAGING_SHARED_LIB)\nendef\n\ndefine NE10_INSTALL_TARGET_CMDS\n\tcp -dpf $(@D)/modules/libNE10*.so* $(TARGET_DIR)/usr/lib/\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/neard/Config.in",
    "content": "config BR2_PACKAGE_NEARD\n\tbool \"neard\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl, dbus, libglib2\n\tdepends on BR2_USE_MMU # dbus, libglib2\n\tdepends on !BR2_STATIC_LIBS # dlopen\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBNL\n\thelp\n\t  Near Field Communication (NFC) manager. This userspace\n\t  daemon is a part of the NFC stack provided by the Linux NFC\n\t  project.\n\n\t  https://git.kernel.org/pub/scm/network/nfc/neard.git\n\nif BR2_PACKAGE_NEARD\n\nconfig BR2_PACKAGE_NEARD_TOOLS\n\tbool \"neard tools\"\n\thelp\n\t  Build and install neard tools.\n\nendif\n\ncomment \"neard needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/neard/S53neard",
    "content": "#!/bin/sh\n#\n# Starts neard\n#\n\nNAME=neard\n\ncase \"$1\" in\n  start)\n    printf \"Starting $NAME: \"\n    start-stop-daemon -S -q -p /var/run/${NAME}.pid -x /usr/libexec/nfc/neard -- -d '*'\n    echo \"OK\"\n    ;;\n  stop)\n    printf \"Stopping $NAME: \"\n    start-stop-daemon -K -q -p /var/run/${NAME}.pid\n    echo \"OK\"\n    ;;\n  restart|reload)\n    $0 stop\n    sleep 1\n    $0 start\n    ;;\n  *)\n    echo \"Usage: $0 {start|stop|restart}\"\n    exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/neard/neard.hash",
    "content": "# From https://www.kernel.org/pub/linux/network/nfc/sha256sums.asc\nsha256  eae3b11c541a988ec11ca94b7deab01080cd5b58cfef3ced6ceac9b6e6e65b36  neard-0.16.tar.xz\n# Locally computed\nsha256  b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259  COPYING\n"
  },
  {
    "path": "package/neard/neard.mk",
    "content": "################################################################################\n#\n# neard\n#\n################################################################################\n\nNEARD_VERSION = 0.16\nNEARD_SOURCE = neard-$(NEARD_VERSION).tar.xz\nNEARD_SITE = $(BR2_KERNEL_MIRROR)/linux/network/nfc\nNEARD_LICENSE = GPL-2.0\nNEARD_LICENSE_FILES = COPYING\n\nNEARD_DEPENDENCIES = host-pkgconf dbus libglib2 libnl\nNEARD_CONF_OPTS = --disable-traces\n\nifeq ($(BR2_PACKAGE_NEARD_TOOLS),y)\nNEARD_CONF_OPTS += --enable-tools\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nNEARD_CONF_OPTS += --enable-systemd\nNEARD_DEPENDENCIES += systemd\nelse\nNEARD_CONF_OPTS += --disable-systemd\nendif\n\ndefine NEARD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/neard/S53neard \\\n\t\t$(TARGET_DIR)/etc/init.d/S53neard\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/neardal/0001-lib-neardal.h-fix-build-with-gcc-10.patch",
    "content": "From 08467411d7dfc2a2b7ede62e5fdc640748ea1db2 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 9 Sep 2020 19:14:52 +0200\nSubject: [PATCH] lib/neardal.h: fix build with gcc 10\n\nDefine neardal_output_cb as extern to avoid the following build failure\nwith gcc 10 (which defaults to -fno-common):\n\n/srv/storage/autobuild/run/instance-2/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: ./.libs/neardal_adapter.o:(.bss+0x0): multiple definition of `neardal_output_cb'; ./.libs/neardal.o:(.bss+0x68): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/7efb100c899b67ffd570f73c202442f95ca5397e\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/connectivity/neardal/pull/10]\n---\n lib/neardal.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/lib/neardal.h b/lib/neardal.h\nindex d1cd18b..3e83595 100644\n--- a/lib/neardal.h\n+++ b/lib/neardal.h\n@@ -638,7 +638,7 @@ neardal_record *neardal_g_variant_to_record(GVariant *in);\n \n void neardal_trace(const char *func, FILE *fp, char *fmt, ...)\n \t__attribute__((format(printf, 3, 4)));\n-int (*neardal_output_cb)(FILE *fp, const char *fmt, va_list ap);\n+extern int (*neardal_output_cb)(FILE *fp, const char *fmt, va_list ap);\n \n #ifdef __cplusplus\n }\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/neardal/Config.in",
    "content": "config BR2_PACKAGE_NEARDAL\n\tbool \"neardal\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus, glib2\n\tdepends on BR2_USE_MMU # dbus\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_DBUS_GLIB\n\tselect BR2_PACKAGE_LIBEDIT\n\thelp\n\t  Provides a simple C API to exchange data with the neard NFC\n\t  manager daemon.\n\n\t  https://github.com/connectivity/neardal\n\nif BR2_PACKAGE_NEARDAL\n\nconfig BR2_PACKAGE_NEARDAL_NCL\n\tbool \"ncl tool\"\n\thelp\n\t  Build and install neardal ncl command line interpreter tool.\n\nendif\n\ncomment \"neardal needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/neardal/neardal.hash",
    "content": "# Locally calculated\nsha256 dae3c432e619a0d3102c5222d0b8fde74413ae519a64ccaae0fc81d31504aecb  neardal-4143d130ed39299bfc59d08d2c7c77dbc7f809e9.tar.gz\nsha256 296a87e9098d3f2ce1ef80c73c53399dc2c7412f35d4175c45810ea15ed86406  COPYING\n"
  },
  {
    "path": "package/neardal/neardal.mk",
    "content": "################################################################################\n#\n# neardal\n#\n################################################################################\n\nNEARDAL_VERSION = 4143d130ed39299bfc59d08d2c7c77dbc7f809e9\nNEARDAL_SITE = $(call github,connectivity,neardal,$(NEARDAL_VERSION))\nNEARDAL_INSTALL_STAGING = YES\nNEARDAL_LICENSE = LGPL-2.0\nNEARDAL_LICENSE_FILES = COPYING\n\nNEARDAL_DEPENDENCIES = host-pkgconf dbus dbus-glib libedit\nNEARDAL_AUTORECONF = YES\n\ndefine NEARDAL_INSTALL_NCL\n\t$(INSTALL) -m 0755 -D $(@D)/ncl/ncl $(TARGET_DIR)/usr/bin/ncl\nendef\n\nifeq ($(BR2_PACKAGE_NEARDAL_NCL),y)\nNEARDAL_POST_INSTALL_TARGET_HOOKS += NEARDAL_INSTALL_NCL\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/neofetch/Config.in",
    "content": "config BR2_PACKAGE_NEOFETCH\n\tbool \"neofetch\"\n\tdepends on BR2_USE_MMU # bash\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash\n\tselect BR2_PACKAGE_BASH # runtime dependency\n\thelp\n\t  Neofetch is a bash script to display system information,\n\t  including hardware, in a visually pleasing way.\n\n\t  https://github.com/dylanaraps/neofetch\n"
  },
  {
    "path": "package/neofetch/neofetch.hash",
    "content": "sha256  58a95e6b714e41efc804eca389a223309169b2def35e57fa934482a6b47c27e7  neofetch-7.1.0.tar.gz\nsha256  fc3034b3dd3a08db109949b629210213bba52aa95455cbc5c2fefa2fc1183efe  LICENSE.md\n"
  },
  {
    "path": "package/neofetch/neofetch.mk",
    "content": "################################################################################\n#\n# neofetch\n#\n################################################################################\n\nNEOFETCH_VERSION = 7.1.0\nNEOFETCH_SITE = $(call github,dylanaraps,neofetch,$(NEOFETCH_VERSION))\nNEOFETCH_LICENSE = MIT\nNEOFETCH_LICENSE_FILES = LICENSE.md\n\ndefine NEOFETCH_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/neofetch \\\n\t\t$(TARGET_DIR)/usr/bin/neofetch\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/neon/Config.in",
    "content": "config BR2_PACKAGE_NEON\n\tbool \"libneon\"\n\thelp\n\t  HTTP and WebDAV client library, with a C interface.\n\n\t  http://www.webdav.org/neon/\n\nif BR2_PACKAGE_NEON\n\nconfig BR2_PACKAGE_NEON_ZLIB\n\tbool \"ZLIB support\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  build with ZLIB support\n\nconfig BR2_PACKAGE_NEON_SSL\n\tbool \"SSL support\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  build with SSL support\n\n# This is an hidden symbol other packages can select to ensure that\n# Neon has XML support, either provided by Expat or libxml2.\nconfig BR2_PACKAGE_NEON_XML\n\tbool\n\tselect BR2_PACKAGE_NEON_EXPAT if !BR2_PACKAGE_NEON_LIBXML2\n\nconfig BR2_PACKAGE_NEON_EXPAT\n\tbool \"XML support with expat\"\n\tdepends on !BR2_PACKAGE_NEON_LIBXML2\n\tselect BR2_PACKAGE_EXPAT\n\thelp\n\t  Enable XML support in neon, using the Expat XML library.\n\nconfig BR2_PACKAGE_NEON_LIBXML2\n\tbool \"XML support with libxml2\"\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  Enable XML support in neon, using the libxml2 XML library.\n\nendif\n"
  },
  {
    "path": "package/neon/neon.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\tdb0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca\tneon-0.30.2.tar.gz\n# Locally computed\nsha256 95f77624e96f6728145826fc895142275451f43f41c073766db3dbbcc8b790b0  README\nsha256 d7bf9d064ac3e5840f9dd02422b7eeec4f1fd03f37fadbd043602be5e882304f  src/COPYING.LIB\nsha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  test/COPYING\n"
  },
  {
    "path": "package/neon/neon.mk",
    "content": "################################################################################\n#\n# neon\n#\n################################################################################\n\nNEON_VERSION = 0.30.2\nNEON_SITE = http://www.webdav.org/neon\nNEON_LICENSE = LGPL-2.0+ (library), GPL-2.0+ (manual and tests)\nNEON_LICENSE_FILES = src/COPYING.LIB test/COPYING README\nNEON_CPE_ID_VENDOR = webdav\nNEON_INSTALL_STAGING = YES\nNEON_CONF_OPTS = --without-gssapi --disable-rpath\nNEON_CONFIG_SCRIPTS = neon-config\nNEON_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES)\nNEON_CONF_ENV = ne_cv_libsfor_bindtextdomain=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_NEON_ZLIB),y)\nNEON_CONF_OPTS += --with-zlib=$(STAGING_DIR)\nNEON_DEPENDENCIES += zlib\nelse\nNEON_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_NEON_SSL),y)\nNEON_CONF_OPTS += --with-ssl\nNEON_DEPENDENCIES += openssl\nelse\nNEON_CONF_OPTS += --without-ssl\nendif\n\nifeq ($(BR2_PACKAGE_NEON_EXPAT),y)\nNEON_CONF_OPTS += --with-expat=yes\nNEON_DEPENDENCIES += expat\nelse\nNEON_CONF_OPTS += --with-expat=no\nendif\n\nifeq ($(BR2_PACKAGE_NEON_LIBXML2),y)\nNEON_CONF_OPTS += --with-libxml2=yes\nNEON_CONF_ENV += ac_cv_prog_XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config\nNEON_DEPENDENCIES += libxml2\nelse\nNEON_CONF_OPTS += --with-libxml2=no\nendif\n\nifeq ($(BR2_PACKAGE_NEON_EXPAT)$(BR2_PACKAGE_NEON_LIBXML2),)\n# webdav needs xml support\nNEON_CONF_OPTS += --disable-webdav\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/net-tools/Config.in",
    "content": "config BR2_PACKAGE_NET_TOOLS\n\tbool \"net-tools\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  A collection of programs that form the base set of the NET-3\n\t  networking distribution for the Linux operating system.\n\t  Includes: arp, hostname, ifconfig, netstat, rarp, route,\n\t  plipconfig, slattach, mii-tool, iptunnel and ipmaddr.\n\n\t  http://sourceforge.net/projects/net-tools/\n"
  },
  {
    "path": "package/net-tools/net-tools.hash",
    "content": "# From http://sourceforge.net/projects/net-tools/files/\nsha1  4080baab0486dc882c3b293d5559c27251ae4268  net-tools-2.10.tar.xz\nmd5  78aae762c95e2d731faf88d482e4cde5  net-tools-2.10.tar.xz\n# Locally computed\nsha256  b262435a5241e89bfa51c3cabd5133753952f7a7b7b93f32e08cb9d96f580d69  net-tools-2.10.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/net-tools/net-tools.mk",
    "content": "################################################################################\n#\n# net-tools\n#\n################################################################################\n\nNET_TOOLS_VERSION = 2.10\nNET_TOOLS_SOURCE = net-tools-$(NET_TOOLS_VERSION).tar.xz\nNET_TOOLS_SITE = http://downloads.sourceforge.net/project/net-tools\nNET_TOOLS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\nNET_TOOLS_LICENSE = GPL-2.0+\nNET_TOOLS_LICENSE_FILES = COPYING\nNET_TOOLS_CPE_ID_VENDOR = net-tools_project\n\ndefine NET_TOOLS_CONFIGURE_CMDS\n\t(cd $(@D); yes \"\" | ./configure.sh config.in )\nendef\n\n# Enable I18N when appropiate\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\ndefine NET_TOOLS_ENABLE_I18N\n\t$(SED) 's:I18N 0:I18N 1:' $(@D)/config.h\nendef\nendif\n\n# Enable IPv6\ndefine NET_TOOLS_ENABLE_IPV6\n\t$(SED) 's:_AFINET6 0:_AFINET6 1:' $(@D)/config.h\nendef\n\nNET_TOOLS_POST_CONFIGURE_HOOKS += NET_TOOLS_ENABLE_I18N NET_TOOLS_ENABLE_IPV6\n\ndefine NET_TOOLS_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\" \\\n\t\t$(MAKE) -C $(@D)\nendef\n\n# ifconfig & route reside in /sbin for busybox, so ensure we don't end\n# up with two versions of those.\ndefine NET_TOOLS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\n\tmv -f $(TARGET_DIR)/bin/ifconfig $(TARGET_DIR)/sbin/ifconfig\n\tmv -f $(TARGET_DIR)/bin/route $(TARGET_DIR)/sbin/route\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/netatalk/0001-Fix-setting-of-LD_LIBRARY_FLAGS-shlibpath_var.patch",
    "content": "From 60d100713b5289948e9cdf5b0646ff3cdd2c206b Mon Sep 17 00:00:00 2001\nFrom: \"Arnout Vandecappelle (Essensium/Mind)\" <arnout@mind.be>\nDate: Mon, 17 Dec 2012 22:32:44 +0100\nSubject: [PATCH] Fix setting of LD_LIBRARY_FLAGS ($shlibpath_var).\n\nLD_LIBRARY_PATH should not be set when cross-compiling, because it\nadds the cross-libraries to the build's LD-path.\n\nAlso the restoring of LD_LIBRARY_PATH was done incorrectly: it would\nset LD_LIBRARY_PATH=LD_LIBRARY_PATH.\n\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n---\n macros/db3-check.m4 |    6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/macros/db3-check.m4 b/macros/db3-check.m4\nindex 902220b..d5a5446 100644\n--- a/macros/db3-check.m4\n+++ b/macros/db3-check.m4\n@@ -94,7 +94,7 @@ if test \"x$bdb_required\" = \"xyes\"; then\n     savedldflags=\"$LDFLAGS\"\n     savedcppflags=\"$CPPFLAGS\"\n     savedlibs=\"$LIBS\"\n-    saved_shlibpath_var=$shlibpath_var\n+    eval saved_shlibpath_var=\\$$shlibpath_var\n \n     dnl required BDB version: 4.6, because of cursor API change\n     DB_MAJOR_REQ=4\n@@ -148,7 +148,7 @@ if test \"x$bdb_required\" = \"xyes\"; then\n                         dnl -- LD_LIBRARY_PATH on many platforms. This will be fairly\n                         dnl -- portable hopefully. Reference:\n                         dnl -- http://lists.gnu.org/archive/html/autoconf/2009-03/msg00040.html\n-                        eval export $shlibpath_var=$bdblibdir\n+                        test \"$cross_compiling\" = yes || eval export $shlibpath_var=$bdblibdir\n                         NETATALK_BDB_TRY_LINK\n                         eval export $shlibpath_var=$saved_shlibpath_var\n \n@@ -171,7 +171,7 @@ if test \"x$bdb_required\" = \"xyes\"; then\n                            CPPFLAGS=\"-I${bdbdir}/include${subdir} $CPPFLAGS\"\n                            LDFLAGS=\"-L$bdblibdir $LDFLAGS\"\n \n-                           eval export $shlibpath_var=$bdblibdir\n+                           test \"$cross_compiling\" = yes || eval export $shlibpath_var=$bdblibdir\n                            NETATALK_BDB_TRY_LINK\n                            eval export $shlibpath_var=$saved_shlibpath_var\n \n-- \n"
  },
  {
    "path": "package/netatalk/0002-fix-ftbs-multiple-def-of-invalid_dircache_entries.patch",
    "content": "From 32df6e155ccfc83216321925273c3e75e631ebe6 Mon Sep 17 00:00:00 2001\nFrom: Andrew Bauer <zonexpertconsulting@outlook.com>\nDate: Wed, 22 Jan 2020 09:59:47 -0600\nSubject: [PATCH] fix ftbs multiple def of invalid_dircache_entries\n\n[Retrieved from:\nhttps://github.com/Netatalk/Netatalk/pull/125/commits/32df6e155ccfc83216321925273c3e75e631ebe6]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n etc/afpd/directory.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/etc/afpd/directory.h b/etc/afpd/directory.h\nindex eb89c606..81bfa9cb 100644\n--- a/etc/afpd/directory.h\n+++ b/etc/afpd/directory.h\n@@ -91,7 +91,7 @@ struct maccess {\n #define\tAR_UWRITE\t(1<<2)\n #define\tAR_UOWN\t\t(1<<7)\n \n-q_t *invalid_dircache_entries;\n+extern q_t *invalid_dircache_entries;\n \n typedef int (*dir_loop)(struct dirent *, char *, void *);\n \n"
  },
  {
    "path": "package/netatalk/Config.in",
    "content": "config BR2_PACKAGE_NETATALK\n\tbool \"netatalk\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_BERKELEYDB\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBEVENT\n\tselect BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_LIBGPG_ERROR\n\thelp\n\t  Netatalk can be used to turn a *NIX machine into an\n\t  extremely high-performance and reliable file server for\n\t  Macintosh computers.\n\n\t  http://netatalk.sourceforge.net/\n\ncomment \"netatalk needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/netatalk/S50netatalk",
    "content": "#!/bin/sh\n#\n# Start netatalk\n#\n\nstart() {\n    echo \"Starting Netatalk\"\n    start-stop-daemon -S -q -p /var/run/netatalk.pid --exec /usr/sbin/netatalk\n}\n\nstop(){\n    echo \"Stopping Netatalk\"\n    start-stop-daemon -K -q -p /var/run/netatalk.pid\n}\n\ncase \"$1\" in\n    start)\n        start\n    ;;\n    stop)\n        stop\n    ;;\n    restart)\n        start\n        stop\n    ;;\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "package/netatalk/netatalk.hash",
    "content": "# From http://sourceforge.net/projects/netatalk/files/netatalk/3.1.12/\nmd5 021d2330cb7f7cd2977aec46299dcc1b  netatalk-3.1.12.tar.bz2\nsha1 cc1fe1ebdbdb4da9cf82835c440e82ba28a832c5  netatalk-3.1.12.tar.bz2\n# Locally computed\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\nsha256  7599ae145e53be03a08f8b558b2f2e0c828e1630f1843cc04f41981b8cefcd65  COPYRIGHT\n"
  },
  {
    "path": "package/netatalk/netatalk.mk",
    "content": "################################################################################\n#\n# netatalk\n#\n################################################################################\n\nNETATALK_VERSION = 3.1.12\nNETATALK_SITE = http://downloads.sourceforge.net/project/netatalk/netatalk/$(NETATALK_VERSION)\nNETATALK_SOURCE = netatalk-$(NETATALK_VERSION).tar.bz2\n# For 0001-Fix-setting-of-LD_LIBRARY_FLAGS-shlibpath_var.patch\nNETATALK_AUTORECONF = YES\nNETATALK_CONFIG_SCRIPTS = netatalk-config\nNETATALK_DEPENDENCIES = host-pkgconf openssl berkeleydb libgcrypt libgpg-error \\\n\tlibevent\nNETATALK_LICENSE = GPL-2.0+, LGPL-3.0+, MIT-like\nNETATALK_LICENSE_FILES = COPYING COPYRIGHT\nNETATALK_CPE_ID_VENDOR = netatalk_project\n\n# Don't run ldconfig!\nNETATALK_CONF_ENV += CC=\"$(TARGET_CC) -std=gnu99\" \\\n\tac_cv_path_NETA_LDCONFIG=\"\"\nNETATALK_CONF_OPTS += \\\n\t--with-cnid-cdb-backend \\\n\t--with-bdb=$(STAGING_DIR)/usr \\\n\t--with-ssl-dir=$(STAGING_DIR)/usr \\\n\t--with-libgcrypt-dir=$(STAGING_DIR)/usr \\\n\t--with-shadow \\\n\t--disable-shell-check \\\n\t--without-kerberos \\\n\t--without-pam \\\n\t--with-libevent=no \\\n\t--with-dtrace=no \\\n\t--with-mysql-config=no\n\nifeq ($(BR2_PACKAGE_ACL),y)\nNETATALK_DEPENDENCIES += acl\nelse\nNETATALK_CONF_OPTS += --with-acls=no\nendif\n\nifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy)\nNETATALK_DEPENDENCIES += avahi\nNETATALK_CONF_OPTS += --enable-zeroconf=$(STAGING_DIR)/usr\nelse\nNETATALK_CONF_OPTS += --disable-zeroconf\nendif\n\nifeq ($(BR2_PACKAGE_CUPS),y)\nNETATALK_DEPENDENCIES += cups\nNETATALK_CONF_ENV += ac_cv_path_CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config\nNETATALK_CONF_OPTS += --enable-cups\nelse\nNETATALK_CONF_OPTS += --disable-cups\nendif\n\ndefine NETATALK_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/netatalk/S50netatalk \\\n\t\t$(TARGET_DIR)/etc/init.d/S50netatalk\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/netcalc/Config.in",
    "content": "config BR2_PACKAGE_NETCALC\n\tbool \"netcalc\"\n\thelp\n\t  netcalc (40 kiB) is a slimmed down version of sipcalc\n\t  using the popular output format of ipcalc.  Both IPv4\n\t  and IPv6 are supported.\n\n\t  https://github.com/troglobit/netcalc/\n"
  },
  {
    "path": "package/netcalc/netcalc.hash",
    "content": "# From https://github.com/troglobit/netcalc/releases/tag/v2.1.6\nmd5 c8660b61370c76d866247fe65966a35b  netcalc-2.1.6.tar.gz\n# Locally computed:\nsha256 cff41782fcf63d7d4ce6d35f95ed302127f6ddf6fc0ca03a8188af95a7c3243b  netcalc-2.1.6.tar.gz\nsha256 745538f8d515d37af6f03442df982a8b211b129e8dc10d0195e33c4b42f8fe5f  LICENSE\n"
  },
  {
    "path": "package/netcalc/netcalc.mk",
    "content": "################################################################################\n#\n# netcalc\n#\n################################################################################\n\nNETCALC_VERSION = 2.1.6\nNETCALC_SITE = https://github.com/troglobit/netcalc/releases/download/v$(NETCALC_VERSION)\nNETCALC_LICENSE = BSD-3-Clause\nNETCALC_LICENSE_FILES = LICENSE\nNETCALC_CONF_OPTS = --disable-ipcalc-symlink\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/netcat/0001-signed-bit-counting.patch",
    "content": "# Fix the endian-specific bit-counting code so that it works.\n# SF:1068324 \"netcat_flag_count() fix\"\n#   http://sourceforge.net/tracker/?func=detail&aid=1205729&group_id=52204&atid=466046\n# SF:1205729 \"doen't work on arm linux platform\":\n#   http://sourceforge.net/tracker/?func=detail&aid=1068324&group_id=52204&atid=466046\n\nIndex: netcat-0.7.1/src/flagset.c\n===================================================================\n--- netcat-0.7.1.orig/src/flagset.c\t2010-07-19 13:51:46.000000000 +0100\n+++ netcat-0.7.1/src/flagset.c\t2010-07-19 13:52:27.000000000 +0100\n@@ -134,7 +134,7 @@\n \n int netcat_flag_count(void)\n {\n-  register char c;\n+  register unsigned char c;\n   register int i;\n   int ret = 0;\n \n@@ -154,8 +154,8 @@\n \tAssumed that the bit number 1 is the sign, and that we will shift the\n \tbit 1 (or the bit that takes its place later) until the the most right,\n \tWHY it has to keep the wrong sign? */\n-      ret -= (c >> 7);\n-      c <<= 1;\n+      ret += c&1;\n+      c>>=1;\n     }\n   }\n \n"
  },
  {
    "path": "package/netcat/Config.in",
    "content": "config BR2_PACKAGE_NETCAT\n\tbool \"netcat\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  Netcat is a featured networking utility which reads and\n\t  writes data across network connections, using the TCP/IP\n\t  protocol.\n\t  It is designed to be a reliable \"back-end\" tool that can be\n\t  used directly or easily driven by other programs and\n\t  scripts. At the same time, it is a feature-rich network\n\t  debugging and exploration tool, since it can create almost\n\t  any kind of connection you would need and has several\n\t  interesting built-in capabilities.\n\n\t  http://netcat.sourceforge.net/download.php\n"
  },
  {
    "path": "package/netcat/netcat.hash",
    "content": "# Locally computed:\nsha256  30719c9a4ffbcf15676b8f528233ccc54ee6cba96cb4590975f5fd60c68a066f  netcat-0.7.1.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/netcat/netcat.mk",
    "content": "################################################################################\n#\n# netcat\n#\n################################################################################\n\nNETCAT_VERSION = 0.7.1\nNETCAT_SITE = http://downloads.sourceforge.net/project/netcat/netcat/$(NETCAT_VERSION)\nNETCAT_LICENSE = GPL-2.0+\nNETCAT_LICENSE_FILES = COPYING\nNETCAT_CPE_ID_VENDOR = netcat_project\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/netcat-openbsd/Config.in",
    "content": "config BR2_PACKAGE_NETCAT_OPENBSD\n\tbool \"netcat-openbsd\"\n\tdepends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS\n\tdepends on !BR2_STATIC_LIBS # libbsd\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\tselect BR2_PACKAGE_LIBBSD\n\thelp\n\t  A simple Unix utility which reads and writes data across\n\t  network connections using TCP or UDP protocol. It is\n\t  designed to be a reliable \"back-end\" tool that can be used\n\t  directly or easily driven by other programs and scripts. At\n\t  the same time it is a feature-rich network debugging and\n\t  exploration tool, since it can create almost any kind of\n\t  connection you would need and has several interesting\n\t  built-in capabilities.\n\n\t  This package contains the OpenBSD rewrite of netcat,\n\t  including support for IPv6, proxies, and Unix sockets.\n\n\t  https://packages.debian.org/sid/netcat-openbsd\n\ncomment \"netcat-openbsd needs a glibc toolchain w/ dynamic library, threads, headers >= 3.12\"\n\tdepends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_USES_GLIBC || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/netcat-openbsd/netcat-openbsd.hash",
    "content": "# Locally calculated\nsha256  55e578f652cbf6ffc95f75ea3e2645ab335fab63649568bd7cdb0a6331ca87de  netcat-openbsd-debian_1.195-2-br1.tar.gz\nsha256  e2e86d58c38f044a49f51e45515747585db58a2305419c73323eaad88fcaef5c  debian/copyright\n"
  },
  {
    "path": "package/netcat-openbsd/netcat-openbsd.mk",
    "content": "################################################################################\n#\n# netcat-openbsd\n#\n################################################################################\n\nNETCAT_OPENBSD_VERSION = debian/1.195-2\nNETCAT_OPENBSD_SITE = https://salsa.debian.org/debian/netcat-openbsd.git\nNETCAT_OPENBSD_SITE_METHOD = git\nNETCAT_OPENBSD_LICENSE = BSD-3-Clause\nNETCAT_OPENBSD_LICENSE_FILES = debian/copyright\nNETCAT_OPENBSD_DEPENDENCIES = host-pkgconf libbsd\n\ndefine NETCAT_OPENBSD_APPLY_DEBIAN_PATCHES\n\tif [ -d $(@D)/debian/patches ]; then \\\n\t\t$(APPLY_PATCHES) $(@D) $(@D)/debian/patches *.dpatch; \\\n\tfi\nendef\n\nNETCAT_OPENBSD_POST_PATCH_HOOKS += NETCAT_OPENBSD_APPLY_DEBIAN_PATCHES\n\ndefine NETCAT_OPENBSD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine NETCAT_OPENBSD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 -D $(@D)/nc $(TARGET_DIR)/usr/bin/nc\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/netdata/Config.in",
    "content": "config BR2_PACKAGE_NETDATA\n\tbool \"netdata\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # libuv\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv\n\tselect BR2_PACKAGE_LIBUV\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Netdata is distributed, real-time, performance and health\n\t  monitoring for systems and applications. It is a highly\n\t  optimized monitoring agent you install on all your systems and\n\t  containers.\n\n\t  https://github.com/netdata/netdata\n\ncomment \"netdata needs a toolchain w/ NPTL, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n"
  },
  {
    "path": "package/netdata/S60netdata",
    "content": "#!/bin/sh\n\nDAEMON=\"netdata\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nNETDATA_ARGS=\"-u root -P $PIDFILE\"\n\n# Create needed directories.\nmkdir -p /var/cache/$DAEMON /var/lib/$DAEMON /var/log/$DAEMON\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \\\n\t\t-- $NETDATA_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/netdata/netdata.hash",
    "content": "# Locally calculated\nsha256 60cdde3f1f8bd9035fef6a566053c0a7195d1714b5da6814473263e85382b4a8  netdata-1.21.1.tar.gz\nsha256 0e5fd9d833efe9b79f784d1903281554af82d1b4261af67d35455728e5572aa6  LICENSE\n"
  },
  {
    "path": "package/netdata/netdata.mk",
    "content": "################################################################################\n#\n# netdata\n#\n################################################################################\n\nNETDATA_VERSION = 1.21.1\nNETDATA_SITE = $(call github,netdata,netdata,v$(NETDATA_VERSION))\nNETDATA_LICENSE = GPL-3.0+\nNETDATA_LICENSE_FILES = LICENSE\nNETDATA_CPE_ID_VENDOR = netdata\n# netdata's source code is released without a generated configure script\nNETDATA_AUTORECONF = YES\nNETDATA_CONF_OPTS = \\\n\t--disable-dbengine \\\n\t--disable-unit-tests\nNETDATA_DEPENDENCIES = libuv util-linux zlib\n\nifeq ($(BR2_GCC_ENABLE_LTO),y)\nNETDATA_CONF_OPTS += --enable-lto\nelse\nNETDATA_CONF_OPTS += --disable-lto\nendif\n\nifeq ($(BR2_PACKAGE_CUPS),y)\nNETDATA_CONF_OPTS += --enable-plugin-cups\nNETDATA_DEPENDENCIES += cups\nelse\nNETDATA_CONF_OPTS += --disable-plugin-cups\nendif\n\nifeq ($(BR2_PACKAGE_JSON_C),y)\nNETDATA_CONF_OPTS += --enable-jsonc\nNETDATA_DEPENDENCIES += json-c\nelse\nNETDATA_CONF_OPTS += --disable-jsonc\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nNETDATA_CONF_OPTS += --with-libcap\nNETDATA_DEPENDENCIES += libcap\nelse\nNETDATA_CONF_OPTS += --without-libcap\nendif\n\nifeq ($(BR2_PACKAGE_NFACCT),y)\nNETDATA_CONF_OPTS += --enable-plugin-nfacct\nNETDATA_DEPENDENCIES += nfacct\nelse\nNETDATA_CONF_OPTS += --disable-plugin-nfacct\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nNETDATA_CONF_OPTS += --enable-https\nNETDATA_DEPENDENCIES += openssl\nelse\nNETDATA_CONF_OPTS += --disable-https\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nNETDATA_CONF_ENV += LIBS=-latomic\nendif\n\ndefine NETDATA_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/netdata/S60netdata \\\n\t\t$(TARGET_DIR)/etc/init.d/S60netdata\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/netifrc/Config.in",
    "content": "config BR2_PACKAGE_NETIFRC\n\tbool \"netifrc\"\n\tdepends on BR2_PACKAGE_OPENRC\n\thelp\n\t  netifrc is a collection of modules created to configure and\n\t  manage network interfaces via individual, per-interface\n\t  scripts.\n\n\t  https://wiki.gentoo.org/wiki/Netifrc\n\ncomment \"netifrc needs openrc as init system\"\n\tdepends on !BR2_PACKAGE_OPENRC\n"
  },
  {
    "path": "package/netifrc/netifrc.hash",
    "content": "# Calculated manually\nsha256\t004907e0c3db2d106d6a51d604d79f971f1013fa7642054ad7efe5076e52f7b3\tnetifrc-0.6.1.tar.gz\nsha256\tda376c9e2244f2a7220767ea4dd88cf423ff5b548e7c2f96b0f3b9dac727748a\tLICENSE\n"
  },
  {
    "path": "package/netifrc/netifrc.mk",
    "content": "################################################################################\n#\n# netifrc\n#\n################################################################################\n\nNETIFRC_VERSION = 0.6.1\nNETIFRC_SITE = $(call github,gentoo,netifrc,$(NETIFRC_VERSION))\nNETIFRC_LICENSE = BSD-2-Clause\nNETIFRC_LICENSE_FILES = LICENSE\n\nNETIFRC_DEPENDENCIES = openrc\n\n# set LIBNAME so netifrc puts files in proper directories and sets proper\n# paths in installed files. Since in buildroot /lib64 and /lib32 always\n# points to /lib, it's safe to hardcode it to \"lib\"\nNETIFRC_MAKE_OPTS = \\\n\tLIBNAME=lib \\\n\tUDEVDIR=/lib/udev \\\n\tLIBEXECDIR=/usr/libexec/netifrc\n\ndefine NETIFRC_BUILD_CMDS\n\t$(MAKE) $(NETIFRC_MAKE_OPTS) -C $(@D)\nendef\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),)\ndefine NETIFRC_REMOVE_UDEV\n\t$(RM) $(TARGET_DIR)/lib/udev/net.sh\n\t$(RM) $(TARGET_DIR)/lib/udev/rules.d/90-network.rules\n\trmdir --ignore-fail-on-non-empty $(TARGET_DIR)/lib/udev/rules.d\n\trmdir --ignore-fail-on-non-empty $(TARGET_DIR)/lib/udev\nendef\nendif # BR2_PACKAGE_HAS_UDEV\n\nNETIFRC_DHCP_IFACE = $(call qstrip,$(BR2_SYSTEM_DHCP))\nifneq ($(NETIFRC_DHCP_IFACE),)\nNETIFRC_DHCP_CFG = config_$(NETIFRC_DHCP_IFACE)=\"dhcp\"\ndefine NETIFRC_DHCP_SERVICE\n\tln -sf net.lo $(TARGET_DIR)/etc/init.d/net.$(NETIFRC_DHCP_IFACE)\n\tln -sf /etc/init.d/net.$(NETIFRC_DHCP_IFACE) \\\n\t\t$(TARGET_DIR)/etc/runlevels/default/net.$(NETIFRC_DHCP_IFACE)\nendef\nendif # BR2_SYSTEM_DHCP != \"\"\n\ndefine NETIFRC_NET_CFG\n\tconfig_lo=\"127.0.0.1/8\"\n\t$(NETIFRC_DHCP_CFG)\nendef\n\ndefine NETIFRC_INSTALL_TARGET_CMDS\n\t$(MAKE) $(NETIFRC_MAKE_OPTS) DESTDIR=$(TARGET_DIR) -C $(@D) install\n\t$(NETIFRC_REMOVE_UDEV)\n\t$(call PRINTF,$(NETIFRC_NET_CFG)) > $(TARGET_DIR)/etc/conf.d/net\n\tln -sf /etc/init.d/net.lo $(TARGET_DIR)/etc/runlevels/default/net.lo\n\t$(NETIFRC_DHCP_SERVICE)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/netopeer2/Config.in",
    "content": "comment \"netopeer2 needs a toolchain w/ gcc >= 4.8, C++, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\nconfig BR2_PACKAGE_NETOPEER2\n\tbool \"netopeer2\"\n\tdepends on BR2_USE_MMU # libnetconf2, libssh, sysrepo\n\tdepends on !BR2_STATIC_LIBS # libnetconf2, libssh, libyang, sysrepo\n\tdepends on BR2_INSTALL_LIBSTDCPP # sysrepo\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # sysrepo\n\tselect BR2_PACKAGE_LIBNETCONF2\n\tselect BR2_PACKAGE_LIBSSH\n\tselect BR2_PACKAGE_LIBSSH_SERVER # For libnetconf2 to have SSH\n\tselect BR2_PACKAGE_LIBYANG\n\tselect BR2_PACKAGE_OPENSSL # For libnetconf2 to have TLS\n\tselect BR2_PACKAGE_SYSREPO\n\thelp\n\t  Netopeer2 is a set of tools implementing network configuration\n\t  tools based on the NETCONF Protocol.\n\n\t  This is the server part.\n\n\t  https://github.com/CESNET/Netopeer2\n\nif BR2_PACKAGE_NETOPEER2\n\nconfig BR2_PACKAGE_NETOPEER2_CLI\n\tbool \"cli\"\n\thelp\n\t  Enable netopeer2 CLI.\n\nendif\n"
  },
  {
    "path": "package/netopeer2/S52netopeer2",
    "content": "#!/bin/sh\n\nDAEMON=\"netopeer2-server\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nNETOPEER2_SERVER_ARGS=\"\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\n\tstart-stop-daemon -S -b -q -p $PIDFILE -x \"/usr/bin/$DAEMON\" \\\n\t\t-- $NETOPEER2_SERVER_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\nreload() {\n\t# we do not support real reload .. just restart\n\trestart\n}\n\ncase \"$1\" in\n\tstart|stop|restart|reload)\n\t\t\"$1\";;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\nesac\n"
  },
  {
    "path": "package/netopeer2/netopeer2.hash",
    "content": "# Locally calculated\nsha256  7fc1a3520ee4bb488112f502e34cea465464dc933d2a5742a72eb32a6dfe3b3f  netopeer2-1.1.70.tar.gz\nsha256  b46f161fbdcf127d3ef22602e15958c3092fe3294f71a2dc8cdf8f6689cba95b  LICENSE\n"
  },
  {
    "path": "package/netopeer2/netopeer2.mk",
    "content": "################################################################################\n#\n# netopeer2\n#\n################################################################################\n\nNETOPEER2_VERSION = 1.1.70\nNETOPEER2_SITE = $(call github,CESNET,Netopeer2,v$(NETOPEER2_VERSION))\nNETOPEER2_DL_SUBDIR = netopeer2\nNETOPEER2_LICENSE = BSD-3-Clause\nNETOPEER2_LICENSE_FILES = LICENSE\nNETOPEER2_DEPENDENCIES = libnetconf2 libyang sysrepo host-sysrepo\n\nNETOPEER2_CONF_OPTS = -DBUILD_CLI=$(if $(BR2_PACKAGE_NETOPEER2_CLI),ON,OFF)\n\n# Set a build specific SYSREPO_SHM_PREFIX to ensure we can safely delete the\n# files. This also ensures that concurrent parallel builds will not be\n# affected mutualy.\nNETOPEER2_SYSREPO_SHM_PREFIX = sr_buildroot$(subst /,_,$(CONFIG_DIR))_netopeer2\n\nNETOPEER2_MAKE_ENV = \\\n\tSYSREPOCTL_EXECUTABLE=$(HOST_DIR)/bin/sysrepoctl \\\n\tSYSREPO_SHM_PREFIX=$(NETOPEER2_SYSREPO_SHM_PREFIX)\n\ndefine NETOPEER2_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/netopeer2/S52netopeer2 \\\n\t\t$(TARGET_DIR)/etc/init.d/S52netopeer2\nendef\n\n# The host sysrepo used to install the netopeer2 modules will leave\n# its shared memory files lingering about. Clean up in its stead...\n# We need to clean up both before and after installation, to catch\n# the case of a previous build that failed before we run that hook.\ndefine NETOPEER2_CLEANUP\n\trm -f /dev/shm/$(NETOPEER2_SYSREPO_SHM_PREFIX)*\nendef\nNETOPEER2_PRE_INSTALL_TARGET_HOOKS += NETOPEER2_CLEANUP\nNETOPEER2_POST_INSTALL_TARGET_HOOKS += NETOPEER2_CLEANUP\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/netperf/0001-src-nettest_omni.c-fix-compilation-with-GCC10.patch",
    "content": "From b2fd0f324002d0cf52ae905b2a469bf1067f182a Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 5 Sep 2020 14:30:20 +0200\nSubject: [PATCH] src/nettest_omni.c: fix compilation with GCC10\n\nGCC10 defaults to -fno-common, which breaks compilation when there are\nmultiple definitions of implicit \"extern\" variables. Remove the extra\ndefinitions.\n\nFix #42\n\nSigned-off-by: Tony Ambardar <itugrok@yahoo.com>\n[Retrieved from:\nhttps://github.com/openwrt/packages/blob/master/net/netperf/patches/010-gcc10_multiple_definition_fix.patch]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/HewlettPackard/netperf/pull/48]\n---\n src/nettest_omni.c | 8 --------\n 1 file changed, 8 deletions(-)\n\ndiff --git a/src/nettest_omni.c b/src/nettest_omni.c\nindex 852eeb1..862088a 100644\n--- a/src/nettest_omni.c\n+++ b/src/nettest_omni.c\n@@ -458,14 +458,6 @@ static int client_port_max = 65535;\n \n  /* different options for the sockets\t\t\t\t*/\n \n-int\n-  loc_nodelay,\t\t/* don't/do use NODELAY\tlocally\t\t*/\n-  rem_nodelay,\t\t/* don't/do use NODELAY remotely\t*/\n-  loc_sndavoid,\t\t/* avoid send copies locally\t\t*/\n-  loc_rcvavoid,\t\t/* avoid recv copies locally\t\t*/\n-  rem_sndavoid,\t\t/* avoid send copies remotely\t\t*/\n-  rem_rcvavoid; \t/* avoid recv_copies remotely\t\t*/\n-\n extern int\n   loc_tcpcork,\n   rem_tcpcork,\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/netperf/Config.in",
    "content": "config BR2_PACKAGE_NETPERF\n\tbool \"netperf\"\n\thelp\n\t  Network performance benchmark tool\n\n\t  https://hewlettpackard.github.io/netperf/\n"
  },
  {
    "path": "package/netperf/netperf.hash",
    "content": "# Locally calculated\nsha256  842af17655835c8be7203808c3393e6cb327a8067f3ed1f1053eb78b4e40375a  netperf-2.7.0.tar.bz2\nsha256  dc874b3047b6259336431e813961fb6c5945561c6ad7a732aa8531a3c6b1a9fa  COPYING\n"
  },
  {
    "path": "package/netperf/netperf.mk",
    "content": "################################################################################\n#\n# netperf\n#\n################################################################################\n\nNETPERF_VERSION = 2.7.0\nNETPERF_SITE = http://sources.buildroot.org/netperf\nNETPERF_SOURCE = netperf-$(NETPERF_VERSION).tar.bz2\n# gcc 5+ defaults to gnu99 which breaks netperf\nNETPERF_CONF_ENV = \\\n\tac_cv_func_setpgrp_void=set \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -std=gnu89\"\nNETPERF_CONF_OPTS = --enable-demo=yes\nNETPERF_LICENSE = netperf license\nNETPERF_LICENSE_FILES = COPYING\n\ndefine NETPERF_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 $(@D)/src/netperf \\\n\t\t$(TARGET_DIR)/usr/bin/netperf\n\t$(INSTALL) -m 0755 $(@D)/src/netserver \\\n\t\t$(TARGET_DIR)/usr/bin/netserver\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/netplug/0001-makefile-flags.patch",
    "content": "Preserve the cflags settings, because buildroot clobbers them.\n\n--- a/Makefile\t2010-10-05 00:06:38.000000000 -0700\n+++ b/Makefile\t2010-10-05 00:15:27.000000000 -0700\n@@ -11,11 +11,14 @@ mandir ?= $(prefix)/usr/share/man\n \n install_opts :=\n \n-CFLAGS += -Wall -std=gnu99 -DNP_ETC_DIR='\"$(etcdir)\"' \\\n+NETPLUG_CFLAGS += -Wall -std=gnu99 -DNP_ETC_DIR='\"$(etcdir)\"' \\\n \t-DNP_SCRIPT_DIR='\"$(scriptdir)\"' -ggdb3 -O3 -DNP_VERSION='\"$(version)\"'\n \n+%.o: %.c\n+\t$(CC) $(NETPLUG_CFLAGS) $(CFLAGS) -c -o $@ $<\n+\n netplugd: config.o netlink.o lib.o if_info.o main.o\n-\t$(CC) $(LDFLAGS) -o $@ $^\n+\t$(CC) $(LDFLAGS) -o $@ $(NETPLUG_CFLAGS) $^\n \n install:\n \tinstall -d $(install_opts) -m 755 \\\n"
  },
  {
    "path": "package/netplug/0002-add-missing-time-include.patch",
    "content": "Add missing <time.h> include\n\nnetplug.h uses time_t, so it must include <time.h>. This fixes a build\nissue with the musl C library.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/netplug.h\n===================================================================\n--- a/netplug.h\n+++ b/netplug.h\n@@ -20,7 +20,7 @@\n #ifndef __netplug_h\n #define __netplug_h\n \n-\n+#include <time.h>\n #include <asm/types.h>\n #include <sys/socket.h>\n #include <linux/netlink.h>\n"
  },
  {
    "path": "package/netplug/0003-remove-assert-fail.patch",
    "content": "Remove __assert_fail()\n\nThe netplug code uses the assert() macro in various places. In glibc\ninternally, assert() uses a function called __assert_fail() to print a\nmessage and abort. Relying on internal glibc details, netplug\nre-defines __assert_fail() in the hope that it will get called instead\nof glibc internal version.\n\nThis attempt:\n\n * Doesn't work with uClibc, which doesn't use any __assert_fail()\n   function at all. It doesn't fail to build, but it is entirely\n   useless.\n\n * Fails to build with musl, which also defines __assert_fail(), but\n   with a different prototype.\n\nWe simply remove the __assert_fail() implementation, so that the C\nlibrary implementation of assert() just does its normal work. The only\nfunctionality lost is that the message is displayed on the standard\noutput rather than in netplug's logs (and this was only working with\nglibc anyway).\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/lib.c\n===================================================================\n--- a/lib.c\n+++ b/lib.c\n@@ -199,21 +199,6 @@\n     return x;\n }\n \n-\n-void\n-__assert_fail(const char *assertion, const char *file,\n-              unsigned int line, const char *function)\n-{\n-    do_log(LOG_CRIT, \"%s:%u: %s%sAssertion `%s' failed\",\n-           file, line,\n-           function ? function : \"\",\n-           function ? \": \" : \"\",\n-           assertion);\n-\n-    abort();\n-}\n-\n-\n /*\n  * Local variables:\n  * c-file-style: \"stroustrup\"\n"
  },
  {
    "path": "package/netplug/Config.in",
    "content": "config BR2_PACKAGE_NETPLUG\n\tbool \"netplug\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  A Linux daemon that manages network interfaces in\n\t  response to network cables being plugged in and out.\n\n\t  http://www.red-bean.com/~bos/\n"
  },
  {
    "path": "package/netplug/S29netplug",
    "content": "#!/bin/sh\n#\n# netplugd     This shell script takes care of starting and stopping\n#              the network plug management daemon.\n#\n# chkconfig: - 11 89\n# description: netplugd is a daemon for managing non-static network \\\n#              interfaces.\n# processname: netplugd\n# pidfile: /var/run/netplugd.pid\n\n# Copyright 2003 Key Research, Inc.\n\n# Create needed directories\nmkdir -p /var/lock/subsys\n\n# Source function library.\nif [ -f /etc/init.d/functions ]; then\n\t. /etc/init.d/functions\nelif [ -f /etc/rc.d/init.d/functions ]; then\n\t. /etc/rc.d/init.d/functions\nfi\n\n# Source networking configuration.\nif [ -f /etc/default/network ]; then\n\t. /etc/default/network\n\n\t# Check that networking is up.\n\t[ \"${NETWORKING}\" = \"no\" ] && exit 0\nelif [ ! -f /etc/network/interfaces ]; then\n\t# No network support\n\texit 0\nfi\n\nif [ -f /etc/default/netplugd ]; then\n    . /etc/default/netplugd\nfi\n\n# See how we were called.\ncase \"$1\" in\n  start)\n\t# Start daemon.\n\tprintf \"Starting network plug daemon: \"\n\tstart-stop-daemon -S -q -x /sbin/netplugd -- -p /var/run/netplugd.pid ${NETPLUGDARGS}\n\tRETVAL=$?\n\techo\n\t[ $RETVAL -eq 0 ] && touch /var/lock/subsys/netplugd\n\t;;\n  stop)\n\t# Stop daemon.\n\tprintf \"Shutting down network plug daemon: \"\n\tstart-stop-daemon -K -q -p /var/run/netplugd.pid\n\tRETVAL=$?\n\techo\n\t[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/netplugd\n\t;;\n  restart|reload)\n\t$0 stop\n\t$0 start\n\t;;\n  condrestart)\n\t[ -f /var/lock/subsys/netplugd ] && $0 restart || :\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\tRETVAL=1\n\t;;\nesac\n\nexit $RETVAL\n"
  },
  {
    "path": "package/netplug/netplug-script",
    "content": "#!/bin/sh\n#\n# netplug - policy agent for netplugd\n#\n# Copyright 2003 Key Research, Inc.\n#\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License, version 2, as\n# published by the Free Software Foundation.  You are forbidden from\n# redistributing or modifying it under the terms of any other license,\n# including other versions of the GNU General Public License.\n#\n# This program is distributed in the hope that it will be useful, but\n# WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n# General Public License for more details.\n\n\nPATH=/usr/bin:/bin:/usr/sbin:/sbin\nexport PATH\n\ndev=\"$1\"\naction=\"$2\"\n\ncase \"$action\" in\nin)\n    if [ -x /sbin/ifup ]; then\n\texec /sbin/ifup $dev\n    else\n\techo \"Please teach me how to plug in an interface!\" 1>&2\n\texit 1\n    fi\n    ;;\nout)\n    if [ -x /sbin/ifdown ]; then\n\t# At least on Fedora Core 1, the call to ip addr flush infloops\n\t# /sbin/ifdown $dev && exec /sbin/ip addr flush $dev\n\texec /sbin/ifdown $dev\n    else\n\techo \"Please teach me how to unplug an interface!\" 1>&2\n\texit 1\n    fi\n    ;;\nprobe)\n    # exec /sbin/ip link set $dev up >/dev/null 2>&1\n    if [ -x /sbin/ifconfig ]; then\n\texec /sbin/ifconfig $dev up >/dev/null 2>&1\n    else\n\techo \"Failed to probe an interface!\" 1>&2\n\texit 1\n    fi\n    ;;\n*)\n    echo \"I have been called with a funny action of '%s'!\" 1>&2\n    exit 1\n    ;;\nesac\n"
  },
  {
    "path": "package/netplug/netplug.hash",
    "content": "# Locally calculated\nsha256  5180dfd9a7d3d0633a027b0a04f01b45a6a64623813cd48bd54423b90814864e  netplug-1.2.9.2.tar.bz2\nsha256  08ce3ddda499d6befdc80161c7cc82e90da05c31eb1047dae41ef531d5170e9b  COPYING\n"
  },
  {
    "path": "package/netplug/netplug.mk",
    "content": "################################################################################\n#\n# netplug\n#\n################################################################################\n\nNETPLUG_VERSION = 1.2.9.2\nNETPLUG_SOURCE = netplug-$(NETPLUG_VERSION).tar.bz2\nNETPLUG_SITE = http://www.red-bean.com/~bos/netplug\nNETPLUG_LICENSE = GPL-2.0\nNETPLUG_LICENSE_FILES = COPYING\n\ndefine NETPLUG_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine NETPLUG_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install\nendef\n\ndefine NETPLUG_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/netplug/S29netplug \\\n\t\t$(TARGET_DIR)/etc/init.d/S29netplug\nendef\n\ndefine NETPLUG_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/netplug/netplug.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/netplug.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/netplug/netplug.service",
    "content": "[Unit]\nDescription=Network cable hotplug management daemon\nAfter=syslog.target network.target\n\n[Service]\nExecStart=/sbin/netplugd -F\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/netsniff-ng/0001-Detect-libpcap-dependencies-using-pkg-config.patch",
    "content": "From 194ec61843b9598ce90873c812b817c4b96e2e0d Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Thu, 2 Sep 2021 12:56:00 +0300\nSubject: [PATCH] Detect libpcap dependencies using pkg-config\n\nWhen building statically the link command line must include all\ndependencies of all libraries. libpcap can optionally depend on libnl.\nmausezahn can't build statically in this case.\n\nUse pkg-config in configure and in the link command to construct the\nlibrary flags we need to link with libpcap.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\nSigned-off-by: Tobias Klauser <tklauser@distanz.ch>\n---\nUpstream status: commit 194ec61843b9598ce90873c812b817c4b96e2e0d\n\n configure          | 4 +++-\n mausezahn/Makefile | 2 +-\n 2 files changed, 4 insertions(+), 2 deletions(-)\n\ndiff --git a/configure b/configure\nindex 510826a798f5..598ae2433a7a 100755\n--- a/configure\n+++ b/configure\n@@ -588,7 +588,9 @@ int main(void)\n }\n EOF\n \n-\t$CC -o $TMPDIR/pcaptest $TMPDIR/pcaptest.c -lpcap >> config.log 2>&1\n+\t$CC -o $TMPDIR/pcaptest $TMPDIR/pcaptest.c \\\n+\t\t$($PKG_CONFIG --libs libpcap 2>> config.log) \\\n+\t\t>> config.log 2>&1\n \tif [ ! -x $TMPDIR/pcaptest ] ; then\n \t\techo \"[NO]\"\n \t\techo \"CONFIG_LIBPCAP=0\" >> Config\ndiff --git a/mausezahn/Makefile b/mausezahn/Makefile\nindex ca16b6579583..9544565355cc 100644\n--- a/mausezahn/Makefile\n+++ b/mausezahn/Makefile\n@@ -1,6 +1,6 @@\n mausezahn-libs =\t-lcli \\\n \t\t\t-lnet \\\n-\t\t\t-lpcap \\\n+\t\t\t$(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKG_CONFIG) --libs libpcap 2> /dev/null ) \\\n \t\t\t-lrt \\\n \t\t\t-lpthread \\\n \t\t\t-lm\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/netsniff-ng/Config.in",
    "content": "config BR2_PACKAGE_NETSNIFF_NG\n\tbool \"netsniff-ng\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_LIBNL\n\tselect BR2_PACKAGE_LIBPCAP\n\tselect BR2_PACKAGE_LIBNETFILTER_CONNTRACK\n\tselect BR2_PACKAGE_LIBURCU\n\thelp\n\t  netsniff-ng is a free, performant Linux network analyzer and\n\t  networking toolkit. If you will, the Swiss army knife for\n\t  network packets.\n\n\t  http://netsniff-ng.org\n\nif BR2_PACKAGE_NETSNIFF_NG\n\nconfig BR2_PACKAGE_NETSNIFF_NG_MAUSEZAHN\n\tbool \"mausezahn\"\n\tdefault y\n\t# Build with uClibc fails due to missing ceill()\n\tdepends on !BR2_TOOLCHAIN_USES_UCLIBC\n\tselect BR2_PACKAGE_LIBCLI\n\tselect BR2_PACKAGE_LIBNET\n\ncomment \"mausezahn needs glibc or musl toolchain\"\n\tdepends on BR2_TOOLCHAIN_USES_UCLIBC\n\nendif\n\ncomment \"netsniff-ng needs a toolchain w/ threads, headers >= 3.0\"\n\tdepends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS  || \\\n\t\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n"
  },
  {
    "path": "package/netsniff-ng/netsniff-ng.hash",
    "content": "# Locally calculated after checking signature\nsha256  77d17d4158faf1d93c7d922a1bd7f093a8b437bd658292c830708540e10894ba  netsniff-ng-0.6.8.tar.xz\n# Locally computed\nsha256  b353349ba51e0d4b59cf2f188f0c285296e154ce8c58954bc5e0dc0282a4db2d  README\nsha256  8f6d85366f3763557d6ddd0637988b9ba11edef354e3c9302fff4262a235c387  COPYING\n"
  },
  {
    "path": "package/netsniff-ng/netsniff-ng.mk",
    "content": "################################################################################\n#\n# netsniff-ng\n#\n################################################################################\n\nNETSNIFF_NG_VERSION = 0.6.8\nNETSNIFF_NG_SITE = http://pub.netsniff-ng.org/netsniff-ng\nNETSNIFF_NG_SOURCE = netsniff-ng-$(NETSNIFF_NG_VERSION).tar.xz\nNETSNIFF_NG_LICENSE = GPL-2.0\nNETSNIFF_NG_LICENSE_FILES = README COPYING\n# Prevent netsniff-ng configure script from finding a host installed nacl\nNETSNIFF_NG_CONF_ENV = \\\n\tNACL_INC_DIR=/dev/null \\\n\tNACL_LIB_DIR=/dev/null\nNETSNIFF_NG_DEPENDENCIES = host-pkgconf libnl libpcap libnetfilter_conntrack liburcu\n\nifeq ($(BR2_PACKAGE_NETSNIFF_NG_MAUSEZAHN),y)\nNETSNIFF_NG_DEPENDENCIES += libcli libnet\nNETSNIFF_NG_BUILD_MAKE_TARGET = all\nNETSNIFF_NG_INSTALL_MAKE_TARGET = install\nelse\nNETSNIFF_NG_BUILD_MAKE_TARGET = allbutmausezahn\nNETSNIFF_NG_INSTALL_MAKE_TARGET = install_allbutmausezahn\nendif\n\nifeq ($(BR2_PACKAGE_GEOIP),y)\nNETSNIFF_NG_DEPENDENCIES += geoip\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nNETSNIFF_NG_DEPENDENCIES += ncurses\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nNETSNIFF_NG_DEPENDENCIES += zlib\nendif\n\n# hand-written configure script and makefile\ndefine NETSNIFF_NG_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(NETSNIFF_NG_CONF_ENV) \\\n\t\t$(TARGET_CONFIGURE_ARGS) \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t./configure \\\n\t\t--prefix=$(TARGET_DIR)/usr \\\n\t)\nendef\n\ndefine NETSNIFF_NG_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\t$(NETSNIFF_NG_BUILD_MAKE_TARGET)\nendef\n\ndefine NETSNIFF_NG_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tPREFIX=$(TARGET_DIR)/usr ETCDIR=$(TARGET_DIR)/etc \\\n\t\t\t-C $(@D) $(NETSNIFF_NG_INSTALL_MAKE_TARGET)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/netsnmp/0001-configure-static-linking-Fix-SSL-checks.patch",
    "content": "From bd59be8e4e339870a1400f6866a7b73ca11f6460 Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@micronovasrl.com>\nDate: Wed, 12 Sep 2018 20:16:39 +0200\nSubject: [PATCH] configure, static linking: Fix SSL checks\n\nDuring checking of DTLS_method, the stub program is linked only with -ssl\nlibssl.a lacks some function from -lcrypto:\nRAND_*()\nERR_*()\nBUF_MEM_*()\netc.\nand -lz:\n- inflate()\n- deflate()\n\nAppend -lcrypto and -lz to LIBS variable when checking DTLS_method.\n\nSee also https://sourceforge.net/p/net-snmp/patches/1374/.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>\n[bvanassche: Edited subject / rewrote this patch]\n[yann.morin.1998@free.fr:\n  - use an actual backport of bd59be8e4e339870a1400f6866a7b73ca11f6460\n]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n configure                   | 52 ++++++++++++++++++++++++++++++++++---\n configure.d/config_os_libs2 | 14 +++++++---\n 2 files changed, 58 insertions(+), 8 deletions(-)\n\ndiff --git a/configure b/configure\nindex 6504a8e58a..1116cecaad 100755\n--- a/configure\n+++ b/configure\n@@ -23228,16 +23228,60 @@ fi\n { $as_echo \"$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_EVP_md5\" >&5\n $as_echo \"$ac_cv_lib_crypto_EVP_md5\" >&6; }\n if test \"x$ac_cv_lib_crypto_EVP_md5\" = xyes; then :\n-  CRYPTO=\"crypto\"\n+  CRYPTO=\"crypto\"; LIBCRYPTO=\"-lcrypto\"\n+else\n+\n+\t\t{ $as_echo \"$as_me:${as_lineno-$LINENO}: checking for EVP_md5 in -lcrypto\" >&5\n+$as_echo_n \"checking for EVP_md5 in -lcrypto... \" >&6; }\n+if ${ac_cv_lib_crypto_EVP_md5+:} false; then :\n+  $as_echo_n \"(cached) \" >&6\n+else\n+  ac_check_lib_save_LIBS=$LIBS\n+LIBS=\"-lcrypto -lz $LIBS\"\n+cat confdefs.h - <<_ACEOF >conftest.$ac_ext\n+/* end confdefs.h.  */\n+\n+/* Override any GCC internal prototype to avoid an error.\n+   Use char because int might match the return type of a GCC\n+   builtin and then its argument prototype would still apply.  */\n+#ifdef __cplusplus\n+extern \"C\"\n+#endif\n+char EVP_md5 ();\n+int\n+main ()\n+{\n+return EVP_md5 ();\n+  ;\n+  return 0;\n+}\n+_ACEOF\n+if ac_fn_c_try_link \"$LINENO\"; then :\n+  ac_cv_lib_crypto_EVP_md5=yes\n+else\n+  ac_cv_lib_crypto_EVP_md5=no\n+fi\n+rm -f core conftest.err conftest.$ac_objext \\\n+    conftest$ac_exeext conftest.$ac_ext\n+LIBS=$ac_check_lib_save_LIBS\n+fi\n+{ $as_echo \"$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_EVP_md5\" >&5\n+$as_echo \"$ac_cv_lib_crypto_EVP_md5\" >&6; }\n+if test \"x$ac_cv_lib_crypto_EVP_md5\" = xyes; then :\n+  CRYPTO=\"crypto\"; LIBCRYPTO=\"-lcrypto -lz\"\n+fi\n+\n+\n fi\n \n-        fi\n+\telse\n+\t    LIBCRYPTO=\"-l${CRYPTO}\"\n+\tfi\n \n         if test x$CRYPTO != x; then\n \n $as_echo \"#define HAVE_LIBCRYPTO 1\" >>confdefs.h\n \n-            LIBCRYPTO=\"-l${CRYPTO}\"\n             netsnmp_save_LIBS=\"$LIBS\"\n             LIBS=\"$LIBCRYPTO\"\n             for ac_func in AES_cfb128_encrypt                           EVP_sha224        EVP_sha384                                   EVP_MD_CTX_create EVP_MD_CTX_destroy                           EVP_MD_CTX_new    EVP_MD_CTX_free                              DH_set0_pqg DH_get0_pqg DH_get0_key                           ASN1_STRING_get0_data X509_NAME_ENTRY_get_object                           X509_NAME_ENTRY_get_data X509_get_signature_nid\n@@ -23291,7 +23335,7 @@ _ACEOF\n             LIBS=\"$netsnmp_save_LIBS\"\n         fi\n         netsnmp_save_LIBS=\"$LIBS\"\n-        LIBS=\"-lssl\"\n+        LIBS=\"-lssl $LIBCRYPTO\"\n         for ac_func in TLS_method TLSv1_method DTLS_method DTLSv1_method                       SSL_library_init SSL_load_error_strings\t\t       ERR_get_error_all\n do :\n   as_ac_var=`$as_echo \"ac_cv_func_$ac_func\" | $as_tr_sh`\ndiff --git a/configure.d/config_os_libs2 b/configure.d/config_os_libs2\nindex 4a1ad1551f..75214cfff3 100644\n--- a/configure.d/config_os_libs2\n+++ b/configure.d/config_os_libs2\n@@ -306,13 +306,19 @@ if test \"x$tryopenssl\" != \"xno\" -a \"x$tryopenssl\" != \"xinternal\"; then\n         LIBS=\"$netsnmp_save_LIBS\"\n \n         if test x$CRYPTO = x; then\n-            AC_CHECK_LIB([crypto], [EVP_md5], [CRYPTO=\"crypto\"])\n-        fi\n+            AC_CHECK_LIB([crypto], [EVP_md5],\n+\t\t\t [CRYPTO=\"crypto\"; LIBCRYPTO=\"-lcrypto\"], [\n+\t\tAC_CHECK_LIB([crypto], [EVP_md5],\n+\t\t\t     [CRYPTO=\"crypto\"; LIBCRYPTO=\"-lcrypto -lz\"], [],\n+\t\t\t     [-lz])\n+\t    ])\n+\telse\n+\t    LIBCRYPTO=\"-l${CRYPTO}\"\n+\tfi\n \n         if test x$CRYPTO != x; then\n             AC_DEFINE(HAVE_LIBCRYPTO, 1,\n                 [Define to 1 if you have the OpenSSL library (-lcrypto or -leay32).])\n-            LIBCRYPTO=\"-l${CRYPTO}\"\n             netsnmp_save_LIBS=\"$LIBS\"\n             LIBS=\"$LIBCRYPTO\"\n             AC_CHECK_FUNCS([AES_cfb128_encrypt]dnl\n@@ -342,7 +348,7 @@ if test \"x$tryopenssl\" != \"xno\" -a \"x$tryopenssl\" != \"xinternal\"; then\n             LIBS=\"$netsnmp_save_LIBS\"\n         fi\n         netsnmp_save_LIBS=\"$LIBS\"\n-        LIBS=\"-lssl\"\n+        LIBS=\"-lssl $LIBCRYPTO\"\n         AC_CHECK_FUNCS([TLS_method TLSv1_method DTLS_method DTLSv1_method]dnl\n                        [SSL_library_init SSL_load_error_strings])\n         LIBS=\"$netsnmp_save_LIBS\"\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/netsnmp/0002-configure-Fix-lcrypto-lz-test.patch",
    "content": "From 13da2bcde8e22dd0127a668374fdf79bed04d353 Mon Sep 17 00:00:00 2001\nFrom: Bart Van Assche <bvanassche@acm.org>\nDate: Mon, 17 Sep 2018 07:33:34 -0700\nSubject: [PATCH] configure: Fix -lcrypto -lz test\n\nAvoid that the second crypto library test uses the cached result from\nthe first test by explicitly clearing the cached test result.\n\n[yann.morin.1998@free.fr:\n  - use an actual backport of 13da2bcde8e22dd0127a668374fdf79bed04d353\n]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n configure                   | 1 +\n configure.d/config_os_libs2 | 1 +\n 2 files changed, 2 insertions(+)\n\ndiff --git a/configure b/configure\nindex 1116cecaad..33b8c93e57 100755\n--- a/configure\n+++ b/configure\n@@ -23231,6 +23231,7 @@ if test \"x$ac_cv_lib_crypto_EVP_md5\" = xyes; then :\n   CRYPTO=\"crypto\"; LIBCRYPTO=\"-lcrypto\"\n else\n \n+\t\tunset ac_cv_lib_crypto_EVP_md5\n \t\t{ $as_echo \"$as_me:${as_lineno-$LINENO}: checking for EVP_md5 in -lcrypto\" >&5\n $as_echo_n \"checking for EVP_md5 in -lcrypto... \" >&6; }\n if ${ac_cv_lib_crypto_EVP_md5+:} false; then :\ndiff --git a/configure.d/config_os_libs2 b/configure.d/config_os_libs2\nindex 75214cfff3..81788a2096 100644\n--- a/configure.d/config_os_libs2\n+++ b/configure.d/config_os_libs2\n@@ -308,6 +308,7 @@ if test \"x$tryopenssl\" != \"xno\" -a \"x$tryopenssl\" != \"xinternal\"; then\n         if test x$CRYPTO = x; then\n             AC_CHECK_LIB([crypto], [EVP_md5],\n \t\t\t [CRYPTO=\"crypto\"; LIBCRYPTO=\"-lcrypto\"], [\n+\t\tunset ac_cv_lib_crypto_EVP_md5\n \t\tAC_CHECK_LIB([crypto], [EVP_md5],\n \t\t\t     [CRYPTO=\"crypto\"; LIBCRYPTO=\"-lcrypto -lz\"], [],\n \t\t\t     [-lz])\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/netsnmp/0003-configure-fix-AC_CHECK_FUNCS-EVP_sha224-EVP_sha384-..patch",
    "content": "From 8e273c688aa235ed9c68570a700d31596bac14df Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@micronovasrl.com>\nDate: Mon, 15 Oct 2018 19:07:05 +0200\nSubject: [PATCH 1/2] configure: fix AC_CHECK_FUNCS(EVP_sha224 EVP_sha384 ...)\n failure on static linking\n\nIf building as static lib, AC_CHECK_FUNCS(EVP_sha224 EVP_sha384 ...)\nfails due to missing -lz in $LIBS.\nAt the moment, $LIBS contains $LIBCRYPTO only discarding previous $LIBS\ncontent.\n\nAdd $LIBS to:\nLIBS=\"$LIBCRYPTO\"\nas:\nLIBS=\"$LIBCRYPTO $LIBS\"\nThis way $LIBS will contain -lz at the end of linking command that in\nstatic linking build is mandatory.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>\n---\n configure.d/config_os_libs2 | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.d/config_os_libs2 b/configure.d/config_os_libs2\nindex 81788a209..93044000b 100644\n--- a/configure.d/config_os_libs2\n+++ b/configure.d/config_os_libs2\n@@ -321,7 +321,7 @@ if test \"x$tryopenssl\" != \"xno\" -a \"x$tryopenssl\" != \"xinternal\"; then\n             AC_DEFINE(HAVE_LIBCRYPTO, 1,\n                 [Define to 1 if you have the OpenSSL library (-lcrypto or -leay32).])\n             netsnmp_save_LIBS=\"$LIBS\"\n-            LIBS=\"$LIBCRYPTO\"\n+            LIBS=\"$LIBCRYPTO $LIBS\"\n             AC_CHECK_FUNCS([AES_cfb128_encrypt]dnl\n                            [EVP_sha224        EVP_sha384        ]dnl\n                            [EVP_MD_CTX_create EVP_MD_CTX_destroy]dnl\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/netsnmp/0004-configure-fix-AC_CHECK_FUNCS-TLS_method-TLSv1_method.patch",
    "content": "From 1ab6e3fc3cf61fa5a7b7363e59095e868474524b Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@micronovasrl.com>\nDate: Mon, 15 Oct 2018 19:34:26 +0200\nSubject: [PATCH 2/2] configure: fix AC_CHECK_FUNCS(TLS_method TLSv1_method\n ...) failure on static linking\n\nIf building as static lib, AC_CHECK_FUNCS(TLS_method TLSv1_method ...)\nfails due to missing -lz in $LIBS.\nAt the moment, $LIBS contains \"-lssl $LIBCRYPTO\" only discarding\nprevious $LIBS content.\n\nAdd $LIBS to:\nLIBS=\"-lssl $LIBCRYPTO\"\nas:\nLIBS=\"-lssl $LIBCRYPTO $LIBS\"\nThis way $LIBS will contain -lz at the end of linking command that in\nstatic linking build is mandatory.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>\n---\n configure.d/config_os_libs2 | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.d/config_os_libs2 b/configure.d/config_os_libs2\nindex 93044000b..c811c63ec 100644\n--- a/configure.d/config_os_libs2\n+++ b/configure.d/config_os_libs2\n@@ -349,7 +349,7 @@ if test \"x$tryopenssl\" != \"xno\" -a \"x$tryopenssl\" != \"xinternal\"; then\n             LIBS=\"$netsnmp_save_LIBS\"\n         fi\n         netsnmp_save_LIBS=\"$LIBS\"\n-        LIBS=\"-lssl $LIBCRYPTO\"\n+        LIBS=\"-lssl $LIBCRYPTO $LIBS\"\n         AC_CHECK_FUNCS([TLS_method TLSv1_method DTLS_method DTLSv1_method]dnl\n                        [SSL_library_init SSL_load_error_strings]dnl\n \t\t       [ERR_get_error_all])\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/netsnmp/Config.in",
    "content": "config BR2_PACKAGE_NETSNMP\n\tbool \"netsnmp\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Suite of applications used to implement SNMP v1, SNMP v2c, and\n\t  SNMP v3 using both IPv4 and IPv6.\n\n\t  http://net-snmp.sourceforge.net/\n\nif BR2_PACKAGE_NETSNMP\n\nconfig BR2_PACKAGE_NETSNMP_SERVER\n\tbool \"server\"\n\tdefault y\n\thelp\n\t  The snmpd server.\n\nconfig BR2_PACKAGE_NETSNMP_CLIENTS\n\tbool \"clients\"\n\tdefault y\n\thelp\n\t  The net-snmp clients (snmpget, snmpwalk, etc).\n\nconfig BR2_PACKAGE_NETSNMP_ENABLE_MIBS\n\tbool \"Install MIB files on target and enable MIB loading code\"\n\tdefault y\n\thelp\n\t  The net-snmp package contains a selection of MIB files.\n\t  Say yes if you want those MIB files installed on the target\n\t  and enable the code that parses the MIB files.\n\nconfig BR2_PACKAGE_NETSNMP_WITH_MIB_MODULES\n\tstring \"Build with these MIB modules\"\n\tdefault \"host ucd-snmp/dlmod agentx\" if !BR2_STATIC_LIBS\n\tdefault \"host agentx\" if BR2_STATIC_LIBS\n\thelp\n\t  Specify which MIB modules to include.\n\nconfig BR2_PACKAGE_NETSNMP_WITHOUT_MIB_MODULES\n\tstring \"Build without these MIB modules\"\n\tdefault \"disman/event disman/schedule utilities\"\n\thelp\n\t  Specify which MIB modules to exclude.\n\nconfig BR2_PACKAGE_NETSNMP_ENABLE_DEBUGGING\n\tbool \"Enable debugging code\"\n\thelp\n\t  By default net-snmp is compiled without debugging support\n\t  (--disable-debugging). Enable this options if you need\n\t  debugging support, including the ability to log with\n\t  DEBUGMSG(), DEBUGMSGTL() and companion macros.\n\nconfig BR2_PACKAGE_NETSNMP_OPENSSL_INTERNAL\n\tbool \"Enable minimal internal OpenSSL code\"\n\tdepends on !BR2_PACKAGE_OPENSSL\n\thelp\n\t  Enable a minimal internal copy of OpenSSL usable for USM\n\t  security. It will not enable the usage of SNMP over (D)TLS.\n\nendif\n"
  },
  {
    "path": "package/netsnmp/S59snmpd",
    "content": "#! /bin/sh\n### BEGIN INIT INFO\n# Provides:           snmpd snmptrapd\n# Required-Start:     $network $local_fs\n# Required-Stop:      $network $local_fs\n# Default-Start:      2 3 4 5\n# Default-Stop:       0 6\n# Short-Description:  SNMP agents\n# Description:        NET SNMP (Simple Network Management Protocol) Agents\n### END INIT INFO\n#\n# Author:    Jochen Friedrich <jochen@scram.de>\n#\n\nexport PATH=/sbin:/usr/sbin:/bin:/usr/bin\n\n# Defaults\nexport MIBDIRS=/usr/share/snmp/mibs\nSNMPDRUN=yes\nSNMPDOPTS='-Lsd -Lf /dev/null -p /var/run/snmpd.pid 127.0.0.1'\nTRAPDRUN=no\nTRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid'\n\n# Reads config file (will override defaults above)\n[ -r /etc/default/snmpd ] && . /etc/default/snmpd\n\nssd_oknodo=\"-o\"\n\n# Cd to / before starting any daemons.\ncd /\n\n# Create compatibility link to old AgentX socket location\nif [ \"$SNMPDCOMPAT\" = \"yes\" ]; then\n  ln -sf /var/agentx/master /var/run/agentx\nfi\n\nstart() {\n    if [ \"$SNMPDRUN\" = \"yes\" -a -f /etc/snmp/snmpd.conf ]; then\n        printf \"Starting SNMP daemon: \"\n        start-stop-daemon -q -S -x /usr/sbin/snmpd -- $SNMPDOPTS\n        [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    fi\n\n    if [ \"$TRAPDRUN\" = \"yes\" -a -f /etc/snmp/snmptrapd.conf ]; then\n        printf \"Starting SNMP trap daemon: \"\n        start-stop-daemon -q -S -x /usr/sbin/snmptrapd -- $TRAPDOPTS\n        [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    fi\n}\n\nstop() {\n    if [ \"$SNMPDRUN\" = \"yes\" -a -f /etc/snmp/snmpd.conf ]; then\n        printf \"Stopping SNMP daemon: \"\n        start-stop-daemon -q -K $ssd_oknodo -x /usr/sbin/snmpd\n        [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    fi\n\n    if [ \"$TRAPDRUN\" = \"yes\" -a -f /etc/snmp/snmptrapd.conf ]; then\n        printf \"Stopping SNMP trap daemon: \"\n        start-stop-daemon -q -K $ssd_oknodo -x /usr/sbin/snmptrapd\n        [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    fi\n}\n\nreload() {\n    if [ \"$SNMPDRUN\" = \"yes\" -a -f /etc/snmp/snmpd.conf ]; then\n        printf \"Reloading SNMP daemon: \"\n        start-stop-daemon -q -K -s 1 -p /var/run/snmpd.pid -x /usr/sbin/snmpd\n        [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    fi\n\n    if [ \"$TRAPDRUN\" = \"yes\" -a -f /etc/snmp/snmptrapd.conf ]; then\n        printf \"Reloading SNMP trap daemon: \"\n        start-stop-daemon -q -K -s 1 -p /var/run/snmptrapd.pid -x /usr/sbin/snmptrapd\n        [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    fi\n}\n\ncase \"$1\" in\n    start)\n        start\n        ;;\n\n    stop)\n        stop\n        ;;\n\n    restart)\n        stop\n        # Allow the daemons time to exit completely.\n        sleep 2\n        start\n        ;;\n\n    reload|force-reload)\n        reload\n        ;;\n\n    *)\n        echo \"Usage: $0 {start|stop|restart|reload|force-reload}\"\n        exit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "package/netsnmp/netsnmp.hash",
    "content": "# Locally calculated after checking pgp signature at\n# https://sourceforge.net/projects/net-snmp/files/net-snmp/5.9/net-snmp-5.9.tar.gz.asc\n# using key D0F8F495DA6160C44EFFBF10F07B9D2DACB19FD6\nsha256  04303a66f85d6d8b16d3cc53bde50428877c82ab524e17591dfceaeb94df6071  net-snmp-5.9.tar.gz\n\n# Hash for license file\nsha256  ed869ea395a1f125819a56676385ab0557a21507764bf56f2943302011381e59  COPYING\n"
  },
  {
    "path": "package/netsnmp/netsnmp.mk",
    "content": "################################################################################\n#\n# netsnmp\n#\n################################################################################\n\nNETSNMP_VERSION = 5.9\nNETSNMP_SITE = https://downloads.sourceforge.net/project/net-snmp/net-snmp/$(NETSNMP_VERSION)\nNETSNMP_SOURCE = net-snmp-$(NETSNMP_VERSION).tar.gz\nNETSNMP_LICENSE = Various BSD-like\nNETSNMP_LICENSE_FILES = COPYING\nNETSNMP_CPE_ID_VENDOR = net-snmp\nNETSNMP_CPE_ID_PRODUCT = $(NETSNMP_CPE_ID_VENDOR)\nNETSNMP_SELINUX_MODULES = snmp\nNETSNMP_INSTALL_STAGING = YES\nNETSNMP_CONF_ENV = \\\n\tac_cv_NETSNMP_CAN_USE_SYSCTL=no \\\n\tac_cv_path_PSPROG=/bin/ps\nNETSNMP_CONF_OPTS = \\\n\t--with-persistent-directory=/var/lib/snmp \\\n\t--with-defaults \\\n\t--enable-mini-agent \\\n\t--without-rpm \\\n\t--with-logfile=none \\\n\t--without-kmem-usage \\\n\t--enable-as-needed \\\n\t--without-perl-modules \\\n\t--disable-embedded-perl \\\n\t--disable-perl-cc-checks \\\n\t--disable-scripts \\\n\t--with-default-snmp-version=\"1\" \\\n\t--enable-silent-libtool \\\n\t--enable-mfd-rewrites \\\n\t--with-sys-contact=\"root@localhost\" \\\n\t--with-sys-location=\"Unknown\" \\\n\t--with-mib-modules=\"$(call qstrip,$(BR2_PACKAGE_NETSNMP_WITH_MIB_MODULES))\" \\\n\t--with-out-mib-modules=\"$(call qstrip,$(BR2_PACKAGE_NETSNMP_WITHOUT_MIB_MODULES))\" \\\n\t--disable-manuals\nNETSNMP_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LIB_LDCONFIG_CMD=true install\nNETSNMP_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) LIB_LDCONFIG_CMD=true install\nNETSNMP_MAKE = $(MAKE1)\nNETSNMP_CONFIG_SCRIPTS = net-snmp-config\nNETSNMP_AUTORECONF = YES\n\nifeq ($(BR2_ENDIAN),\"BIG\")\nNETSNMP_CONF_OPTS += --with-endianness=big\nelse\nNETSNMP_CONF_OPTS += --with-endianness=little\nendif\n\nifeq ($(BR2_PACKAGE_LIBNL),y)\nNETSNMP_DEPENDENCIES += host-pkgconf libnl\nNETSNMP_CONF_OPTS += --with-nl\nelse\nNETSNMP_CONF_OPTS += --without-nl\nendif\n\n# OpenSSL\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nNETSNMP_DEPENDENCIES += host-pkgconf openssl\nNETSNMP_CONF_OPTS += \\\n\t--with-openssl=$(STAGING_DIR)/usr/include/openssl \\\n\t--with-security-modules=\"tsm,usm\" \\\n\t--with-transports=\"DTLSUDP,TLSTCP\"\nNETSNMP_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nelse ifeq ($(BR2_PACKAGE_NETSNMP_OPENSSL_INTERNAL),y)\nNETSNMP_CONF_OPTS += --with-openssl=internal\nelse\nNETSNMP_CONF_OPTS += --without-openssl\nendif\n\n# There's no option to forcibly enable or disable it\nifeq ($(BR2_PACKAGE_PCIUTILS),y)\nNETSNMP_DEPENDENCIES += pciutils\nendif\n\n# For ucd-snmp/lmsensorsMib\nifeq ($(BR2_PACKAGE_LM_SENSORS),y)\nNETSNMP_DEPENDENCIES += lm-sensors\nendif\n\nifneq ($(BR2_PACKAGE_NETSNMP_ENABLE_MIBS),y)\nNETSNMP_CONF_OPTS += --disable-mib-loading\nNETSNMP_CONF_OPTS += --disable-mibs\nendif\n\nifneq ($(BR2_PACKAGE_NETSNMP_ENABLE_DEBUGGING),y)\nNETSNMP_CONF_OPTS += --disable-debugging\nendif\n\nifeq ($(BR2_PACKAGE_NETSNMP_SERVER),y)\nNETSNMP_CONF_OPTS += --enable-agent\nelse\nNETSNMP_CONF_OPTS += --disable-agent\nendif\n\nifeq ($(BR2_PACKAGE_NETSNMP_CLIENTS),y)\nNETSNMP_CONF_OPTS += --enable-applications\nelse\nNETSNMP_CONF_OPTS += --disable-applications\nendif\n\nifeq ($(BR2_PACKAGE_NETSNMP_SERVER),y)\ndefine NETSNMP_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/netsnmp/S59snmpd \\\n\t\t$(TARGET_DIR)/etc/init.d/S59snmpd\nendef\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/netstat-nat/Config.in",
    "content": "config BR2_PACKAGE_NETSTAT_NAT\n\tbool \"netstat-nat\"\n\thelp\n\t  Displays NAT connections\n\n\t  http://tweegy.nl/projects/netstat-nat/\n"
  },
  {
    "path": "package/netstat-nat/netstat-nat.hash",
    "content": "# Locally calculated\nsha256  e945faa283a49f33af15de915a949c9273a230fc17154925364c547adab676ca  netstat-nat-1.4.10.tar.gz\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/netstat-nat/netstat-nat.mk",
    "content": "################################################################################\n#\n# netstat-nat\n#\n################################################################################\n\nNETSTAT_NAT_VERSION = 1.4.10\nNETSTAT_NAT_SITE = http://tweegy.nl/download\nNETSTAT_NAT_LICENSE = GPL-2.0+\nNETSTAT_NAT_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/netsurf/0001-avoid-system-perl-dependencies.patch",
    "content": "From b42e4b5bfca030965dcfca993a47a6ddaa941287 Mon Sep 17 00:00:00 2001\nFrom: Francois Perrad <francois.perrad@gadz.org>\nDate: Sun, 25 Nov 2018 18:27:54 +0100\nSubject: [PATCH] avoid system perl dependencies\n\nthis subroutine format is used for android target.\nwith eval the load of HTML::Entities is deferred.\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n---\n netsurf/utils/split-messages.pl | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/netsurf/utils/split-messages.pl b/netsurf/utils/split-messages.pl\nindex 4b50dde..e47dded 100644\n--- a/netsurf/utils/split-messages.pl\n+++ b/netsurf/utils/split-messages.pl\n@@ -311,7 +311,7 @@ TXT\n     sub footer { qq|</resources>| }\n     sub format\n     {\n-\tuse HTML::Entities qw(encode_entities);\n+\teval q|use HTML::Entities qw(encode_entities);|;\n \tmy $escaped = encode_entities( $_[1], '<>&\"' );\n \tqq|  <string name=\"$_[0]\">$escaped</string>\\n|;\n     }\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/netsurf/0002-do-not-cross-compile-nsgenbind.patch",
    "content": "From 2419ad79b25fcc1746178aba609fddbb0aa8c9e0 Mon Sep 17 00:00:00 2001\nFrom: Francois Perrad <francois.perrad@gadz.org>\nDate: Sat, 1 Dec 2018 16:10:13 +0100\nSubject: [PATCH] build nsgenbind for the build machine\n\nThe nsgenbind tool is meant to be executed on the build machine during\nthe build, so it should not be built with the cross-compiler, but with\nthe native compiler.\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex f279f01..5698c87 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -110,7 +110,7 @@ endef\n \n # prefixed install macro for each host sub target\n define do_build_prefix_install\n-\t$(MAKE) install --directory=$1 HOST=$(BUILD) PREFIX=$(TMP_PREFIX) Q=$(Q) DESTDIR=\n+\t$(MAKE) install --directory=$1 HOST=$(BUILD) CC=$(BUILD_CC) PREFIX=$(TMP_PREFIX) Q=$(Q) DESTDIR=\n \n endef\n \n-- \n2.17.1\n\n"
  },
  {
    "path": "package/netsurf/0003-fix-compilation-without-curl.patch",
    "content": "From 7d7c59dbfc92fcbcd0eac2c84e0fb98662c4bd71 Mon Sep 17 00:00:00 2001\nFrom: Francois Perrad <francois.perrad@gadz.org>\nDate: Sat, 8 Dec 2018 09:43:40 +0100\nSubject: [PATCH] fix compilation without curl\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n---\n netsurf/content/fetch.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/netsurf/content/fetch.c b/netsurf/content/fetch.c\nindex 7665029..0f41c49 100644\n--- a/netsurf/content/fetch.c\n+++ b/netsurf/content/fetch.c\n@@ -54,7 +54,9 @@\n #include \"content/fetchers.h\"\n #include \"content/fetchers/resource.h\"\n #include \"content/fetchers/about.h\"\n+#ifdef WITH_CURL\n #include \"content/fetchers/curl.h\"\n+#endif\n #include \"content/fetchers/data.h\"\n #include \"content/fetchers/file.h\"\n #include \"javascript/fetcher.h\"\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/netsurf/0004-framebuffer-Fix-internal-font-generated-source-for-GCC-10.patch",
    "content": "From 434f6c3fe7d1d2c6a3e6ae6338608a4a4421ab1b Mon Sep 17 00:00:00 2001\nFrom: Michael Drake <michael.drake@codethink.co.uk>\nDate: Fri, 13 Nov 2020 11:12:58 +0000\nSubject: framebuffer: Fix internal font generated source for GCC 10.\n\n[Retrieved (and backported) from:\nhttps://git.netsurf-browser.org/netsurf.git/commit/?id=434f6c3fe7d1d2c6a3e6ae6338608a4a4421ab1b]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n tools/convert_font.c | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/netsurf/frontends/framebuffer/convert_font.c b/netsurf/frontends/framebuffer/convert_font.c\nindex 9f5734b71..d22c85920 100644\n--- a/netsurf/frontends/framebuffer/convert_font.c\n+++ b/netsurf/frontends/framebuffer/convert_font.c\n@@ -290,14 +290,14 @@ static bool generate_font_header(const char *path, struct font_data *data)\n \n \n \tfor (s = 0; s < 4; s++) {\n-\t\tfprintf(fp, \"const uint8_t *%s_section_table;\\n\",\n+\t\tfprintf(fp, \"extern const uint8_t *%s_section_table;\\n\",\n \t\t\tvar_lables[s]);\n-\t\tfprintf(fp, \"const uint16_t *%s_sections;\\n\",\n+\t\tfprintf(fp, \"extern const uint16_t *%s_sections;\\n\",\n \t\t\tvar_lables[s]);\n \n \t}\n \n-\tfprintf(fp, \"const uint8_t *font_glyph_data;\\n\");\n+\tfprintf(fp, \"extern const uint8_t *font_glyph_data;\\n\");\n \n \tfprintf(fp, \"\\n\\n\");\n \n-- \ncgit v1.2.1\n\n"
  },
  {
    "path": "package/netsurf/Config.in",
    "content": "# netsurf mixes up host and target CFLAGS, so it isn't compatible with\n# architectures where we pass ABI specific compiler flags (TARGET_ABI)\nconfig BR2_PACKAGE_NETSURF_ARCH_SUPPORTS\n\tbool\n\tdefault y if !((BR2_arc && BR2_ARC_ATOMIC_EXT) || \\\n\t\tBR2_powerpc_8540 || BR2_powerpc_8548 || BR2_powerpc_e500mc || \\\n\t\tBR2_xtensa)\n\ncomment \"netsurf needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_NETSURF_ARCH_SUPPORTS\n\nconfig BR2_PACKAGE_NETSURF\n\tbool \"netsurf\"\n\t# static linking support is broken beyond repair\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_NETSURF_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_OPENSSL if BR2_PACKAGE_LIBCURL\n\thelp\n\t  NetSurf is a compact graphical web browser which aims for\n\t  HTML5, CSS and JavaScript support.\n\t  Frontends: GTK (X11), SDL 1.2 (framebuffer)\n\n\t  http://www.netsurf-browser.org/\n\nif BR2_PACKAGE_NETSURF\n\nchoice\n\tprompt \"Netsurf frontend\"\n\tdefault BR2_PACKAGE_NETSURF_SDL\n\nconfig BR2_PACKAGE_NETSURF_SDL\n\tbool \"sdl frontend\"\n\tselect BR2_PACKAGE_SDL\n\thelp\n\t  Select SDL 1.2 frontend.\n\nconfig BR2_PACKAGE_NETSURF_GTK\n\tbool \"gtk2 frontend\"\n\tdepends on BR2_PACKAGE_LIBGTK2\n\thelp\n\t  Select GTK+ 2 frontend.\n\nconfig BR2_PACKAGE_NETSURF_GTK3\n\tbool \"gtk3 frontend\"\n\tdepends on BR2_PACKAGE_LIBGTK3\n\thelp\n\t  Select GTK+ 3 frontend.\n\nendchoice\n\nendif\n"
  },
  {
    "path": "package/netsurf/netsurf.hash",
    "content": "# Locally computed\nsha256  495adf6b6614ce36fca6c605f7c321f9cb4a3df838043158122678ce2b3325b7  netsurf-all-3.10.tar.gz\nsha256  55c4a7ae3953d720a462e69d1f128a20004933d12538be5314a33f8821675378  netsurf/COPYING\n"
  },
  {
    "path": "package/netsurf/netsurf.mk",
    "content": "################################################################################\n#\n# netsurf\n#\n################################################################################\n\nNETSURF_VERSION = 3.10\nNETSURF_SOURCE = netsurf-all-$(NETSURF_VERSION).tar.gz\nNETSURF_SITE = http://download.netsurf-browser.org/netsurf/releases/source-full\nNETSURF_LICENSE = GPL-2.0\nNETSURF_LICENSE_FILES = netsurf/COPYING\nNETSURF_CPE_ID_VENDOR = netsurf-browser\n# host-vim needed for the xxd utility\nNETSURF_DEPENDENCIES = expat jpeg libpng \\\n\thost-bison host-flex host-gperf host-pkgconf host-vim\n\nifeq ($(BR2_PACKAGE_NETSURF_GTK),y)\nNETSURF_DEPENDENCIES += libgtk2\nNETSURF_FRONTEND = gtk2\nendif\n\nifeq ($(BR2_PACKAGE_NETSURF_GTK3),y)\nNETSURF_DEPENDENCIES += libgtk3\nNETSURF_FRONTEND = gtk3\nendif\n\nifeq ($(BR2_PACKAGE_NETSURF_GTK)$(BR2_PACKAGE_NETSURF_GTK3),y)\nifeq ($(BR2_PACKAGE_LIBRSVG),y)\nNETSURF_DEPENDENCIES += librsvg\ndefine NETSURF_SVG_CONFIGURE_CMDS\n\techo \"override NETSURF_USE_RSVG := YES\"         >> $(@D)/netsurf/Makefile.config\n\techo \"override NETSURF_USE_NSSVG := NO\"         >> $(@D)/netsurf/Makefile.config\nendef\nendif\nendif\n\nifeq ($(BR2_PACKAGE_NETSURF_SDL),y)\nNETSURF_DEPENDENCIES += sdl host-libpng\nNETSURF_FRONTEND = framebuffer\nNETSURF_CONFIG = \\\n\tBUILD_CFLAGS='$(HOST_CFLAGS)' \\\n\tBUILD_LDFLAGS='$(HOST_LDFLAGS) -lpng'\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nNETSURF_DEPENDENCIES += freetype\ndefine NETSURF_FONTLIB_CONFIGURE_CMDS\n\techo \"override NETSURF_FB_FONTLIB := freetype\"  >> $(@D)/netsurf/Makefile.config\nendef\nendif\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nNETSURF_DEPENDENCIES += libiconv\ndefine NETSURF_ICONV_CONFIGURE_CMDS\n\techo \"CFLAGS += -DWITH_ICONV_FILTER\"            >> $(@D)/libparserutils/Makefile.config.override\n\techo \"override NETSURF_USE_LIBICONV_PLUG := NO\" >> $(@D)/netsurf/Makefile.config\nendef\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nNETSURF_DEPENDENCIES += libcurl openssl\nelse\ndefine NETSURF_CURL_CONFIGURE_CMDS\n\techo \"override NETSURF_USE_CURL := NO\"          >> $(@D)/netsurf/Makefile.config\n\techo \"override NETSURF_USE_OPENSSL := NO\"       >> $(@D)/netsurf/Makefile.config\nendef\nendif\n\nifeq ($(BR2_PACKAGE_WEBP),y)\nNETSURF_DEPENDENCIES += webp\ndefine NETSURF_WEBP_CONFIGURE_CMDS\n\techo \"override NETSURF_USE_WEBP := YES\"         >> $(@D)/netsurf/Makefile.config\nendef\nelse\ndefine NETSURF_WEBP_CONFIGURE_CMDS\n\techo \"override NETSURF_USE_WEBP := NO\"          >> $(@D)/netsurf/Makefile.config\nendef\nendif\n\ndefine NETSURF_CONFIGURE_CMDS\n\t$(NETSURF_ICONV_CONFIGURE_CMDS)\n\t$(NETSURF_SVG_CONFIGURE_CMDS)\n\t$(NETSURF_FONTLIB_CONFIGURE_CMDS)\n\t$(NETSURF_CURL_CONFIGURE_CMDS)\n\t$(NETSURF_WEBP_CONFIGURE_CMDS)\nendef\n\nNETSURF_MAKE_ENV = \\\n\t$(TARGET_MAKE_ENV) \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -I$(@D)/tmpusr/include\" \\\n\tLDFLAGS=\"$(TARGET_LDFLAGS) -L$(@D)/tmpusr/lib\"\n\nNETSURF_MAKE_OPTS = \\\n\tTARGET=$(NETSURF_FRONTEND) \\\n\tBISON=\"$(HOST_DIR)/bin/bison\" \\\n\tFLEX=\"$(HOST_DIR)/bin/flex\" \\\n\tPKG_CONFIG=\"$(PKG_CONFIG_HOST_BINARY)\" \\\n\tBUILD_CC=\"$(HOSTCC)\" \\\n\tCC=\"$(TARGET_CC)\" \\\n\tAR=\"$(TARGET_AR)\" \\\n\tTMP_PREFIX=$(@D)/tmpusr \\\n\tNETSURF_CONFIG=\"$(NETSURF_CONFIG)\" \\\n\tPREFIX=/usr\n\ndefine NETSURF_BUILD_CMDS\n\tmkdir -p $(@D)/tmpusr\n\t$(NETSURF_MAKE_ENV) $(MAKE) -C $(@D) $(NETSURF_MAKE_OPTS) \\\n\t\tbuild\nendef\n\ndefine NETSURF_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(NETSURF_MAKE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/netsurf-buildsystem/netsurf-buildsystem.hash",
    "content": "# Locally computed\nsha256  150a3a45c3f433a35451506b316a35c14630112fc557f9e1f02c9e08b50e0cce  netsurf-buildsystem-7574b41345968b5f7e9ca5875faccb1478ce0555-br1.tar.gz\nsha256  b2ddc1d607332423f6cf415b2ac619a1c03dd565facdc39a571282a520929a65  llvm/LICENSE.TXT\n"
  },
  {
    "path": "package/netsurf-buildsystem/netsurf-buildsystem.mk",
    "content": "################################################################################\n#\n# netsurf-buildsystem\n#\n################################################################################\n\nNETSURF_BUILDSYSTEM_VERSION = 7574b41345968b5f7e9ca5875faccb1478ce0555\nNETSURF_BUILDSYSTEM_SITE = http://git.netsurf-browser.org/buildsystem.git\nNETSURF_BUILDSYSTEM_SITE_METHOD = git\nNETSURF_BUILDSYSTEM_LICENSE = MIT, BSD-3-Clause (for llvm/* files)\nNETSURF_BUILDSYSTEM_LICENSE_FILES = llvm/LICENSE.TXT\n\nNETSURF_BUILDSYSTEM_INSTALL_DIR = $(HOST_DIR)/share/netsurf-buildsystem\n\ndefine HOST_NETSURF_BUILDSYSTEM_INSTALL_CMDS\n\tmkdir -p $(NETSURF_BUILDSYSTEM_INSTALL_DIR)\n\tcp -dpfr $(@D)/* $(NETSURF_BUILDSYSTEM_INSTALL_DIR)\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/nettle/0001-disable-testsuite-examples.patch",
    "content": "Makefile: disable testsuite and example\n\nWe do not need them in the context of Buildroot.\n\nAlso, they break for a shared-only build (but it's fixed in patch 0001).\n\nSigned-off-by:  \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN nettle-2.7.1.orig/Makefile.in nettle-2.7.1/Makefile.in\n--- nettle-2.7.1.orig/Makefile.in\t2013-05-28 16:21:54.000000000 +0200\n+++ nettle-2.7.1/Makefile.in\t2014-12-12 19:57:12.499805574 +0100\n@@ -19,7 +19,7 @@\n \n FAT_TEST_LIST = @FAT_TEST_LIST@\n \n-SUBDIRS = tools testsuite examples\n+SUBDIRS = tools\n \n include config.make\n \n"
  },
  {
    "path": "package/nettle/Config.in",
    "content": "config BR2_PACKAGE_NETTLE\n\tbool \"nettle\"\n\tselect BR2_PACKAGE_GMP\n\thelp\n\t  Nettle is a cryptographic library that is designed to fit\n\t  easily in more or less any context: In crypto toolkits for\n\t  object-oriented languages, in applications like LSH or\n\t  GNUPG, or even in kernel space\n\n\t  https://www.lysator.liu.se/~nisse/nettle/\n"
  },
  {
    "path": "package/nettle/nettle.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://ftp.gnu.org/gnu/nettle/nettle-3.7.3.tar.gz.sig\nsha256  661f5eb03f048a3b924c3a8ad2515d4068e40f67e774e8a26827658007e3bcf0  nettle-3.7.3.tar.gz\n# Locally calculated\nsha256  a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c  COPYING.LESSERv3\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYINGv2\n"
  },
  {
    "path": "package/nettle/nettle.mk",
    "content": "################################################################################\n#\n# nettle\n#\n################################################################################\n\nNETTLE_VERSION = 3.7.3\nNETTLE_SITE = http://www.lysator.liu.se/~nisse/archive\nNETTLE_DEPENDENCIES = gmp\nNETTLE_INSTALL_STAGING = YES\nNETTLE_LICENSE = Dual GPL-2.0+/LGPL-3.0+\nNETTLE_LICENSE_FILES = COPYING.LESSERv3 COPYINGv2\nNETTLE_CPE_ID_VENDOR = nettle_project\n# don't include openssl support for (unused) examples as it has problems\n# with static linking\nNETTLE_CONF_OPTS = --disable-openssl\n\n# ARM assembly requires v6+ ISA\nifeq ($(BR2_ARM_CPU_ARMV4)$(BR2_ARM_CPU_ARMV5)$(BR2_ARM_CPU_ARMV7M),y)\nNETTLE_CONF_OPTS += --disable-assembler\nendif\n\nifeq ($(BR2_ARM_CPU_HAS_NEON),y)\nNETTLE_CONF_OPTS += --enable-arm-neon\nelse\nNETTLE_CONF_OPTS += --disable-arm-neon\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/network-manager/Config.in",
    "content": "config BR2_PACKAGE_NETWORK_MANAGER\n\tbool \"network-manager\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt\n\tdepends on !BR2_STATIC_LIBS # gnutls\n\tdepends on BR2_USE_MMU # dbus\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\t# Tested with 3.2, but may even work with earlier versions\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # CLOCK_BOOTTIME, IPTOS_CLASS_*\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_WCHAR # libglib2\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_GNUTLS\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_WIRELESS_TOOLS\n\tselect BR2_PACKAGE_WIRELESS_TOOLS_LIB\n\tselect BR2_PACKAGE_READLINE\n\tselect BR2_PACKAGE_LIBNDP\n\thelp\n\t  NetworkManager is a set of co-operative tools that make\n\t  networking simple and straightforward. Whether WiFi, wired,\n\t  3G, or Bluetooth, NetworkManager allows you to quickly move\n\t  from one network to another: once a network has been\n\t  configured and joined once, it can be detected and re-joined\n\t  automatically the next time it's available.\n\n\t  http://projects.gnome.org/NetworkManager/\n\nif BR2_PACKAGE_NETWORK_MANAGER\n\nconfig BR2_PACKAGE_NETWORK_MANAGER_TUI\n\tbool \"nmtui support\"\n\tselect BR2_PACKAGE_NEWT\n\thelp\n\t  This option enables terminal based UI\n\nconfig BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER\n\tbool \"modem-manager support\"\n\tselect BR2_PACKAGE_MODEM_MANAGER\n\thelp\n\t  This option enables support for ModemManager\n\nconfig BR2_PACKAGE_NETWORK_MANAGER_PPPD\n\tbool \"pppd support\"\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # pppd\n\tselect BR2_PACKAGE_PPPD\n\thelp\n\t  This option enables support for PPPD daemon\n\ncomment \"pppd support needs a glibc or uClibc toolchain\"\n\tdepends on BR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_NETWORK_MANAGER_OVS\n\tbool \"OpenVSwitch support\"\n\tselect BR2_PACKAGE_JANSSON\n\thelp\n\t  This option enables support for OpenVSwitch\n\nendif\n\ncomment \"NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 4.6, dynamic library, wchar, threads, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_HAS_UDEV || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 || \\\n\t\t!BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS || \\\n\t\t!BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/network-manager/S45network-manager",
    "content": "#!/bin/sh\n\n# Allow a few customizations from a config file\ntest -r /etc/default/NetworkManager && . /etc/default/NetworkManager\n\nPID=`pidof NetworkManager`\ncase \"$1\" in\n\tstart)\n\t\tprintf \"Starting NetworkManager ... \"\n\t\t[ ! -d /var/run/NetworkManager ] && install -d /var/run/NetworkManager\n\t\tif [ -z \"$PID\" ]; then\n\t\t\t/usr/sbin/NetworkManager $NETWORKMANAGER_ARGS\n\t\tfi\n\t\tif [ ! -z \"$PID\" -o $? -gt 0 ]; then\n\t\t\techo \"failed!\"\n\t\telse\n\t\t\techo \"done.\"\n\t\tfi\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping NetworkManager ... \"\n\t\t\t[ ! -z \"$PID\" ] && kill $PID > /dev/null 2>&1\n\t\tif [ $? -gt 0 ]; then\n\t\t\techo \"failed!\"\n\t\telse\n\t\t\techo \"done.\"\n\t\tfi\n\t\t;;\n\trestart)\n\t\t$0 stop\n\t\tsleep 1\n\t\t$0 start\n\t\t;;\n\t*)\n\t\techo \"usage: $0 {start|stop|restart|sleep|wake}\"\n\t\t;;\nesac\nexit 0\n\n\n\n"
  },
  {
    "path": "package/network-manager/network-manager.hash",
    "content": "# From https://download.gnome.org/sources/NetworkManager/1.32/NetworkManager-1.32.2.sha256sum\nsha256  701d511067f757d0f92f412c98cdb49a74a6ba69448aabb1beadacbc171e3873  NetworkManager-1.32.2.tar.xz\n# Locally computed\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LGPL\nsha256  e70c2d84a038b972beff16d8662f35567709dff2d552220bd1af6014f6d2215d  CONTRIBUTING.md\n"
  },
  {
    "path": "package/network-manager/network-manager.mk",
    "content": "################################################################################\n#\n# network-manager\n#\n################################################################################\n\nNETWORK_MANAGER_VERSION_MAJOR = 1.32\nNETWORK_MANAGER_VERSION = $(NETWORK_MANAGER_VERSION_MAJOR).2\nNETWORK_MANAGER_SOURCE = NetworkManager-$(NETWORK_MANAGER_VERSION).tar.xz\nNETWORK_MANAGER_SITE = https://download.gnome.org/sources/NetworkManager/$(NETWORK_MANAGER_VERSION_MAJOR)\nNETWORK_MANAGER_INSTALL_STAGING = YES\nNETWORK_MANAGER_DEPENDENCIES = host-pkgconf udev gnutls libglib2 \\\n\tlibgcrypt wireless_tools util-linux host-intltool readline libndp\nNETWORK_MANAGER_LICENSE = GPL-2.0+ (app), LGPL-2.1+ (libnm)\nNETWORK_MANAGER_LICENSE_FILES = COPYING COPYING.LGPL CONTRIBUTING.md\nNETWORK_MANAGER_CPE_ID_VENDOR = gnome\nNETWORK_MANAGER_CPE_ID_PRODUCT = networkmanager\nNETWORK_MANAGER_SELINUX_MODULES = networkmanager\n\nNETWORK_MANAGER_CONF_ENV = \\\n\tac_cv_path_LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config \\\n\tac_cv_file__etc_fedora_release=no \\\n\tac_cv_file__etc_mandriva_release=no \\\n\tac_cv_file__etc_debian_version=no \\\n\tac_cv_file__etc_redhat_release=no \\\n\tac_cv_file__etc_SuSE_release=no\n\nNETWORK_MANAGER_CONF_OPTS = \\\n\t--disable-introspection \\\n\t--disable-tests \\\n\t--disable-qt \\\n\t--disable-more-warnings \\\n\t--with-crypto=gnutls \\\n\t--with-iptables=/usr/sbin/iptables \\\n\t--disable-ifupdown \\\n\t--without-nm-cloud-setup\n\nifeq ($(BR2_PACKAGE_OFONO),y)\nNETWORK_MANAGER_DEPENDENCIES += ofono\nNETWORK_MANAGER_CONF_OPTS += --with-ofono\nelse\nNETWORK_MANAGER_CONF_OPTS += --without-ofono\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nNETWORK_MANAGER_DEPENDENCIES += libcurl\nNETWORK_MANAGER_CONF_OPTS += --enable-concheck\nelse\nNETWORK_MANAGER_CONF_OPTS += --disable-concheck\nendif\n\nifeq ($(BR2_PACKAGE_NETWORK_MANAGER_TUI),y)\nNETWORK_MANAGER_DEPENDENCIES += newt\nNETWORK_MANAGER_CONF_OPTS += --with-nmtui=yes\nelse\nNETWORK_MANAGER_CONF_OPTS += --with-nmtui=no\nendif\n\nifeq ($(BR2_PACKAGE_NETWORK_MANAGER_PPPD),y)\nNETWORK_MANAGER_DEPENDENCIES += pppd\nNETWORK_MANAGER_CONF_OPTS += --enable-ppp\nelse\nNETWORK_MANAGER_CONF_OPTS += --disable-ppp\nendif\n\nifeq ($(BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER),y)\nNETWORK_MANAGER_DEPENDENCIES += modem-manager\nNETWORK_MANAGER_CONF_OPTS += --with-modem-manager-1\nelse\nNETWORK_MANAGER_CONF_OPTS += --without-modem-manager-1\nendif\n\nifeq ($(BR2_PACKAGE_DHCP_CLIENT),y)\nNETWORK_MANAGER_CONF_OPTS += --with-dhclient=/sbin/dhclient\nendif\n\nifeq ($(BR2_PACKAGE_DHCPCD),y)\nNETWORK_MANAGER_CONF_OPTS += --with-dhcpcd=/sbin/dhcpcd\nendif\n\nifeq ($(BR2_PACKAGE_NETWORK_MANAGER_OVS),y)\nNETWORK_MANAGER_CONF_OPTS += --enable-ovs\nNETWORK_MANAGER_DEPENDENCIES += jansson\nelse\nNETWORK_MANAGER_CONF_OPTS += --disable-ovs\nendif\n\ndefine NETWORK_MANAGER_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/network-manager/S45network-manager $(TARGET_DIR)/etc/init.d/S45network-manager\nendef\n\ndefine NETWORK_MANAGER_INSTALL_INIT_SYSTEMD\n\tln -sf /usr/lib/systemd/system/NetworkManager.service \\\n\t\t$(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service\n\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/network-manager-openvpn/Config.in",
    "content": "config BR2_PACKAGE_NETWORK_MANAGER_OPENVPN\n\tbool \"network-manager-openvpn\"\n\tdepends on BR2_PACKAGE_NETWORK_MANAGER\n\tdepends on BR2_PACKAGE_OPENVPN\n\thelp\n\t  OpenVPN support for NetworkManager\n\n\t  https://gitlab.gnome.org/GNOME/NetworkManager-openvpn\n"
  },
  {
    "path": "package/network-manager-openvpn/network-manager-openvpn.hash",
    "content": "# From https://download.gnome.org/sources/NetworkManager-openvpn/1.8/NetworkManager-openvpn-1.8.14.sha256sum\nsha256  e7419053fc3b5a7e25f1a7517c313ad4531b6ea280255524ebb85a70c76fdbeb  NetworkManager-openvpn-1.8.14.tar.xz\n# Locally computed\nsha256  c39e345d992dfba62db265f8c6d6ff1d90c61d92876635ae05adbfa2f45fff46  COPYING\n"
  },
  {
    "path": "package/network-manager-openvpn/network-manager-openvpn.mk",
    "content": "################################################################################\n#\n# network-manager-openvpn\n#\n################################################################################\n\nNETWORK_MANAGER_OPENVPN_VERSION_MAJOR = 1.8\nNETWORK_MANAGER_OPENVPN_VERSION = $(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR).14\nNETWORK_MANAGER_OPENVPN_SOURCE = NetworkManager-openvpn-$(NETWORK_MANAGER_OPENVPN_VERSION).tar.xz\nNETWORK_MANAGER_OPENVPN_SITE = https://download.gnome.org/sources/NetworkManager-openvpn/$(NETWORK_MANAGER_OPENVPN_VERSION_MAJOR)\nNETWORK_MANAGER_OPENVPN_DEPENDENCIES = network-manager openvpn\nNETWORK_MANAGER_OPENVPN_LICENSE = GPL-2.0+\nNETWORK_MANAGER_OPENVPN_LICENSE_FILES = COPYING\n\nNETWORK_MANAGER_OPENVPN_CONF_OPTS = \\\n\t--without-gnome\n\ndefine NETWORK_MANAGER_OPENVPN_USERS\n\tnm-openvpn -1 nm-openvpn -1 * - - - Openvpn user\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/newt/Config.in",
    "content": "config BR2_PACKAGE_NEWT\n\tbool \"newt\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # slang\n\tdepends on !BR2_STATIC_LIBS # unconditionally creates .so\n\tselect BR2_PACKAGE_SLANG\n\tselect BR2_PACKAGE_POPT\n\thelp\n\t  Programming library for color text mode, widget based user\n\t  interfaces.\n\n\t  http://www.redhat.com/\n\ncomment \"newt needs a toolchain w/ wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/newt/newt.hash",
    "content": "# From https://releases.pagure.org/newt/CHECKSUMS\nsha256 265eb46b55d7eaeb887fca7a1d51fe115658882dfe148164b6c49fccac5abb31  newt-0.52.21.tar.gz\nsha512 d53d927996d17223e688bf54dccfabb2a3dc02bfe38ffc455964e86feaca3cd9f9ab5b19774433be430fa4d761cd9b6680b558f297acb86f80daeb6942f7d23c  newt-0.52.21.tar.gz\n# Locally calculated\nsha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c  COPYING\n"
  },
  {
    "path": "package/newt/newt.mk",
    "content": "################################################################################\n#\n# newt\n#\n################################################################################\n\nNEWT_VERSION = 0.52.21\nNEWT_SITE = https://pagure.io/releases/newt\nNEWT_INSTALL_STAGING = YES\nNEWT_DEPENDENCIES = popt slang $(TARGET_NLS_DEPENDENCIES)\n# Force to use libintl, otherwise it finds gettext functions in the C\n# library, and does not link against libintl.\nNEWT_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\nNEWT_CONF_OPTS = --without-python --without-tcl\nNEWT_LICENSE = GPL-2.0\nNEWT_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nfacct/Config.in",
    "content": "config BR2_PACKAGE_NFACCT\n\tbool \"nfacct\"\n\tselect BR2_PACKAGE_LIBNETFILTER_ACCT\n\thelp\n\t  nfacct is the command line tool to create/retrieve/delete\n\t  netfilter accounting objects.\n\n\t  http://www.netfilter.org/projects/nfacct/\n"
  },
  {
    "path": "package/nfacct/nfacct.hash",
    "content": "# From ftp://ftp.netfilter.org/pub/nfacct/nfacct-1.0.2.tar.bz2.{md5sum,sha1sum}\nmd5\t94faafdaaed85ca9220c5692be8a408e\tnfacct-1.0.2.tar.bz2\nsha1\t17d6576778227ea93c62600d9b18ff4932963c6a\tnfacct-1.0.2.tar.bz2\n# Locally computed\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/nfacct/nfacct.mk",
    "content": "################################################################################\n#\n# nfacct\n#\n################################################################################\n\nNFACCT_VERSION = 1.0.2\nNFACCT_SOURCE = nfacct-$(NFACCT_VERSION).tar.bz2\nNFACCT_SITE = http://www.netfilter.org/projects/nfacct/files\nNFACCT_DEPENDENCIES = host-pkgconf \\\n\tlibnetfilter_acct\nNFACCT_LICENSE = GPL-2.0\nNFACCT_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nfs-utils/0001-nfsdcltrack-sqlite-Fix-printf-format.patch",
    "content": "From d05ba5335e869bcd68c0def795c55fd5037914e3 Mon Sep 17 00:00:00 2001\nFrom: Petr Vorel <petr.vorel () gmail ! com>\nDate: Thu, 22 Jul 2021 16:15:44 +0000\nSubject: [PATCH] nfsdcltrack/sqlite: Fix printf format\n\nsqlite.c: In function 'sqlite_remove_unreclaimed':\nsqlite.c:547:71: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'time_t' {aka 'long long int'} [-Werror=format=]\n  547 |  ret = snprintf(buf, sizeof(buf), \"DELETE FROM clients WHERE time < %ld\",\n      |                                                                     ~~^\n      |                                                                       |\n      |                                                                       long int\n      |                                                                     %lld\n  548 |    grace_start);\n      |    ~~~~~~~~~~~\n      |    |\n      |    time_t {aka long long int}\n\nFound in Buildroot riscv32 build.\n\nLink: http://autobuild.buildroot.net/results/9bc1d43a588338b7395af7bc97535ee16a6ea2d9/build-end.log\n\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\nUpstream: http://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commit;h=4f2a5b64386600430ec6b71e57b88c5efaa70aed\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n utils/nfsdcltrack/sqlite.c | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/utils/nfsdcltrack/sqlite.c b/utils/nfsdcltrack/sqlite.c\nindex f79aebb3..cea4a411 100644\n--- a/utils/nfsdcltrack/sqlite.c\n+++ b/utils/nfsdcltrack/sqlite.c\n@@ -46,6 +46,7 @@\n #include <sys/stat.h>\n #include <sys/types.h>\n #include <fcntl.h>\n+#include <inttypes.h>\n #include <unistd.h>\n #include <sqlite3.h>\n #include <linux/limits.h>\n@@ -544,7 +545,7 @@ sqlite_remove_unreclaimed(time_t grace_start)\n \tint ret;\n \tchar *err = NULL;\n \n-\tret = snprintf(buf, sizeof(buf), \"DELETE FROM clients WHERE time < %ld\",\n+\tret = snprintf(buf, sizeof(buf), \"DELETE FROM clients WHERE time < %\"PRIu64,\n \t\t\tgrace_start);\n \tif (ret < 0) {\n \t\treturn ret;\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/nfs-utils/0002-nfsdcltrack-nfsdcltrack.c-Fix-printf-format.patch",
    "content": "From 14eb2cae4fca95609ae4efde2444fd0a5ddfca04 Mon Sep 17 00:00:00 2001\nFrom: Petr Vorel <petr.vorel () gmail ! com>\nDate: Thu, 22 Jul 2021 16:15:45 +0000\nSubject: [PATCH] nfsdcltrack/nfsdcltrack.c: Fix printf format\n\nnfsdcltrack.c: In function 'cltrack_gracedone':\nnfsdcltrack.c:528:47: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'time_t' {aka 'long long int'} [-Werror=format=]\n  528 |  xlog(D_GENERAL, \"%s: grace done. gracetime=%ld\", __func__, gracetime);\n      |                                             ~~^             ~~~~~~~~~\n      |                                               |             |\n      |                                               long int      time_t {aka long long int}\n      |                                             %lld\n\nFound in Buildroot riscv32 build.\n\nLink: http://autobuild.buildroot.net/results/9bc1d43a588338b7395af7bc97535ee16a6ea2d9/build-end.log\n\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\nUpstream: http://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commit;h=5a53426c0f4e84f6644c11e4f01015597d3bb82c\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n utils/nfsdcltrack/nfsdcltrack.c | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/utils/nfsdcltrack/nfsdcltrack.c b/utils/nfsdcltrack/nfsdcltrack.c\nindex e926f1c0..0b37c094 100644\n--- a/utils/nfsdcltrack/nfsdcltrack.c\n+++ b/utils/nfsdcltrack/nfsdcltrack.c\n@@ -33,6 +33,7 @@\n #include <sys/stat.h>\n #include <sys/types.h>\n #include <fcntl.h>\n+#include <inttypes.h>\n #include <unistd.h>\n #include <libgen.h>\n #include <sys/inotify.h>\n@@ -525,7 +526,7 @@ cltrack_gracedone(const char *timestr)\n \tif (*tail)\n \t\treturn -EINVAL;\n \n-\txlog(D_GENERAL, \"%s: grace done. gracetime=%ld\", __func__, gracetime);\n+\txlog(D_GENERAL, \"%s: grace done. gracetime=%\"PRIu64, __func__, gracetime);\n \n \tret = sqlite_remove_unreclaimed(gracetime);\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/nfs-utils/0003-nfsdcltrack-Use-uint64_t-instead-of-time_t.patch",
    "content": "From 383d787d1b77f165da68495cb0363220b66935a4 Mon Sep 17 00:00:00 2001\nFrom: Steve Dickson <steved@redhat.com>\nDate: Tue, 27 Jul 2021 21:12:17 -0400\nSubject: [PATCH] nfsdcltrack: Use uint64_t instead of time_t\n\nWith recent commits (4f2a5b64,5a53426c) that fixed\ncompile errors on x86_64 machines, caused similar\nerrors on i686 machines.\n\nThe variable type that was being used was a time_t,\nwhich changes size between architects, which\ncaused the compile error.\n\nChanging the variable to uint64_t fixed the issue.\n\nSigned-off-by: Steve Dickson <steved@redhat.com>\nUpstream: http://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commit;h=383d787d1b77f165da68495cb0363220b66935a4\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n---\n utils/nfsdcltrack/nfsdcltrack.c | 2 +-\n utils/nfsdcltrack/sqlite.c      | 2 +-\n utils/nfsdcltrack/sqlite.h      | 2 +-\n 3 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/utils/nfsdcltrack/nfsdcltrack.c b/utils/nfsdcltrack/nfsdcltrack.c\nindex 0b37c094..7c1c4bcc 100644\n--- a/utils/nfsdcltrack/nfsdcltrack.c\n+++ b/utils/nfsdcltrack/nfsdcltrack.c\n@@ -508,7 +508,7 @@ cltrack_gracedone(const char *timestr)\n {\n \tint ret;\n \tchar *tail;\n-\ttime_t gracetime;\n+\tuint64_t gracetime;\n \n \n \tret = sqlite_prepare_dbh(storagedir);\ndiff --git a/utils/nfsdcltrack/sqlite.c b/utils/nfsdcltrack/sqlite.c\nindex cea4a411..cf0c6a45 100644\n--- a/utils/nfsdcltrack/sqlite.c\n+++ b/utils/nfsdcltrack/sqlite.c\n@@ -540,7 +540,7 @@ out_err:\n  * remove any client records that were not reclaimed since grace_start.\n  */\n int\n-sqlite_remove_unreclaimed(time_t grace_start)\n+sqlite_remove_unreclaimed(uint64_t grace_start)\n {\n \tint ret;\n \tchar *err = NULL;\ndiff --git a/utils/nfsdcltrack/sqlite.h b/utils/nfsdcltrack/sqlite.h\nindex 06e7c044..ba8cdfa8 100644\n--- a/utils/nfsdcltrack/sqlite.h\n+++ b/utils/nfsdcltrack/sqlite.h\n@@ -26,7 +26,7 @@ int sqlite_insert_client(const unsigned char *clname, const size_t namelen,\n int sqlite_remove_client(const unsigned char *clname, const size_t namelen);\n int sqlite_check_client(const unsigned char *clname, const size_t namelen,\n \t\t\t\tconst bool has_session);\n-int sqlite_remove_unreclaimed(const time_t grace_start);\n+int sqlite_remove_unreclaimed(const uint64_t grace_start);\n int sqlite_query_reclaiming(const time_t grace_start);\n \n #endif /* _SQLITE_H */\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/nfs-utils/Config.in",
    "content": "comment \"nfs-utils needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_NFS_UTILS\n\tbool \"nfs-utils\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libtirpc, rpcbind\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBTIRPC # IPv6 requires libtirpc\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  The NFS Linux kernel server.\n\n\t  http://linux-nfs.org/\n\nif BR2_PACKAGE_NFS_UTILS\n\nconfig BR2_PACKAGE_NFS_UTILS_NFSV4\n\tbool \"NFSv4/NFSv4.1\"\n\tdepends on !BR2_STATIC_LIBS # keyutils, lvm2\n\tselect BR2_PACKAGE_KEYUTILS\n\tselect BR2_PACKAGE_LIBEVENT\n\tselect BR2_PACKAGE_LVM2\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  Enable NFSv4/NFSv4.1 support\n\ncomment \"NFSv4/NFSv4.1 support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_NFS_UTILS_GSS\n\tbool \"gss\"\n\tdepends on BR2_PACKAGE_NFS_UTILS_NFSV4\n\tselect BR2_PACKAGE_LIBTIRPC_GSS\n\thelp\n\t  Enable GSS support\n\nconfig BR2_PACKAGE_NFS_UTILS_RPCDEBUG\n\tbool \"rpcdebug\"\n\thelp\n\t  The RPC debugging utility\n\nconfig BR2_PACKAGE_NFS_UTILS_RPC_LOCKD\n\tbool \"rpc.lockd\"\n\thelp\n\t  NFS lock manager for Linux kernels older than 2.4\n\nconfig BR2_PACKAGE_NFS_UTILS_RPC_NFSD\n\tbool \"rpc.nfsd\"\n\tdefault y\n\tselect BR2_PACKAGE_RPCBIND # runtime\n\thelp\n\t  NFS server\n\nconfig BR2_PACKAGE_NFS_UTILS_RPC_RQUOTAD\n\tbool \"rpc.rquotad\"\n\thelp\n\t  NFS remote quota server\n\nendif\n"
  },
  {
    "path": "package/nfs-utils/S60nfs",
    "content": "#!/bin/sh\n#\n# nfs           This shell script takes care of starting and stopping\n#               the NFS services. Stolen from RedHat FC5.\n\nmkdir -p /var/lock/subsys\nmkdir -p /run/nfs/sm\nmkdir -p /run/nfs/sm.bak\ntouch /run/nfs/rmtab\n\nCFG_FILE=/etc/default/nfsd\n\nNR_THREADS=2\nif [ -f \"${CFG_FILE}\" ]; then\n\t. \"${CFG_FILE}\"\nfi\n\n\nstart() {\n\t# Start daemons.\n\tprintf \"Starting NFS statd: \"\n\trpc.statd\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\ttouch /var/lock/subsys/nfslock\n\n\tprintf \"Starting NFS services: \"\n\t/usr/sbin/exportfs -r\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\n\tprintf \"Starting NFS daemon: \"\n\trpc.nfsd ${NR_THREADS}\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\n\tprintf \"Starting NFS mountd: \"\n\trpc.mountd\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\ttouch /var/lock/subsys/nfs\n}\n\nstop() {\n\t# Stop daemons.\n\tprintf \"Shutting down NFS mountd: \"\n\tkillall -q rpc.mountd 2>/dev/null\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\n\tprintf \"Shutting down NFS daemon: \"\n\tkillall -q nfsd 2>/dev/null\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\n\tprintf \"Shutting down NFS services: \"\n\t/usr/sbin/exportfs -au\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\n\tprintf \"Stopping NFS statd: \"\n\tkillall -q rpc.statd 2>/dev/null\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\trm -f /var/lock/subsys/nfs\n\trm -f /var/run/rpc.statd.pid\n\trm -f /var/lock/subsys/nfslock\n}\n\n# See how we were called.\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t\t;;\n\tstop)\n\t\tstop\n\t\t;;\n\trestart)\n\t\tstop\n\t\tstart\n\t\t;;\n\treload)\n\t\t/usr/sbin/exportfs -r\n\t\ttouch /var/lock/subsys/nfs\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "package/nfs-utils/nfs-utils.hash",
    "content": "# From https://www.kernel.org/pub/linux/utils/nfs-utils/2.5.4/sha256sums.asc\nsha256  51997d94e4c8bcef5456dd36a9ccc38e231207c4e9b6a9a2c108841e6aebe3dd  nfs-utils-2.5.4.tar.xz\n# Locally computed\nsha256  576540abf5e95029ad4ad90e32071385a5e95b2c30708c706116f3eb87b9a3de  COPYING\n"
  },
  {
    "path": "package/nfs-utils/nfs-utils.mk",
    "content": "################################################################################\n#\n# nfs-utils\n#\n################################################################################\n\nNFS_UTILS_VERSION = 2.5.4\nNFS_UTILS_SOURCE = nfs-utils-$(NFS_UTILS_VERSION).tar.xz\nNFS_UTILS_SITE = https://www.kernel.org/pub/linux/utils/nfs-utils/$(NFS_UTILS_VERSION)\nNFS_UTILS_LICENSE = GPL-2.0+\nNFS_UTILS_LICENSE_FILES = COPYING\nNFS_UTILS_DEPENDENCIES = host-nfs-utils host-pkgconf libtirpc util-linux\nNFS_UTILS_CPE_ID_VENDOR = linux-nfs\nNFS_UTILS_AUTORECONF = YES\n\nNFS_UTILS_CONF_ENV = knfsd_cv_bsd_signals=no\n\nNFS_UTILS_CONF_OPTS = \\\n\t--enable-tirpc \\\n\t--enable-ipv6 \\\n\t--without-tcp-wrappers \\\n\t--with-statedir=/run/nfs \\\n\t--with-rpcgen=$(HOST_DIR)/bin/rpcgen\n\nHOST_NFS_UTILS_DEPENDENCIES = host-pkgconf host-libtirpc\n\nHOST_NFS_UTILS_CONF_OPTS = \\\n\t--enable-tirpc \\\n\t--disable-nfsv4 \\\n\t--disable-nfsv41 \\\n\t--disable-gss \\\n\t--disable-uuid \\\n\t--disable-ipv6 \\\n\t--without-tcp-wrappers \\\n\t--with-statedir=/run/nfs \\\n\t--disable-caps \\\n\t--without-systemd \\\n\t--with-rpcgen=internal \\\n\t--with-tirpcinclude=$(HOST_DIR)/include/tirpc\n\nNFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPCDEBUG) += usr/sbin/rpcdebug\nNFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPC_LOCKD) += usr/sbin/rpc.lockd\nNFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPC_RQUOTAD) += usr/sbin/rpc.rquotad\nNFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPC_NFSD) += usr/sbin/exportfs \\\n\tusr/sbin/rpc.mountd usr/sbin/rpc.nfsd usr/lib/systemd/system/nfs-server.service\n\nifeq ($(BR2_PACKAGE_NFS_UTILS_NFSV4),y)\nNFS_UTILS_CONF_OPTS += --enable-nfsv4 --enable-nfsv41\nNFS_UTILS_DEPENDENCIES += keyutils libevent lvm2 sqlite\nelse\nNFS_UTILS_CONF_OPTS += --disable-nfsv4 --disable-nfsv41\nendif\n\nifeq ($(BR2_PACKAGE_NFS_UTILS_GSS),y)\nNFS_UTILS_CONF_OPTS += \\\n\t--enable-gss \\\n\t--enable-svcgss \\\n\t--with-krb5=$(STAGING_DIR)/usr\nNFS_UTILS_DEPENDENCIES += libkrb5\nelse\nNFS_UTILS_CONF_OPTS += --disable-gss --disable-svcgss\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nNFS_UTILS_CONF_OPTS += --enable-caps\nNFS_UTILS_DEPENDENCIES += libcap\nelse\nNFS_UTILS_CONF_OPTS += --disable-caps\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y)\nNFS_UTILS_CONF_OPTS += --enable-uuid\nelse\nNFS_UTILS_CONF_OPTS += --disable-uuid\nendif\n\ndefine NFS_UTILS_INSTALL_FIXUP\n\tcd $(TARGET_DIR) && rm -f $(NFS_UTILS_TARGETS_)\n\ttouch $(TARGET_DIR)/etc/exports\n\t$(INSTALL) -D -m 644 \\\n\t\t$(@D)/utils/mount/nfsmount.conf $(TARGET_DIR)/etc/nfsmount.conf\nendef\nNFS_UTILS_POST_INSTALL_TARGET_HOOKS += NFS_UTILS_INSTALL_FIXUP\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nNFS_UTILS_CONF_OPTS += --with-systemd=/usr/lib/systemd/system\nNFS_UTILS_DEPENDENCIES += systemd\nelse\nNFS_UTILS_CONF_OPTS += --without-systemd\nendif\n\nifeq ($(BR2_PACKAGE_NFS_UTILS_RPC_NFSD),y)\ndefine NFS_UTILS_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NFSD)\nendef\n\ndefine NFS_UTILS_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/nfs-utils/S60nfs \\\n\t\t$(TARGET_DIR)/etc/init.d/S60nfs\nendef\n\nendif\n\ndefine NFS_UTILS_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0755 package/nfs-utils/nfs-utils_env.sh \\\n\t\t$(TARGET_DIR)/usr/libexec/nfs-utils/nfs-utils_env.sh\n\n\t$(INSTALL) -D -m 0644 package/nfs-utils/nfs-utils_tmpfiles.conf \\\n\t\t$(TARGET_DIR)/usr/lib/tmpfiles.d/nfs-utils.conf\nendef\n\ndefine NFS_UTILS_REMOVE_NFSIOSTAT\n\trm -f $(TARGET_DIR)/usr/sbin/nfsiostat\nendef\n\n# nfsiostat is interpreted python, so remove it unless it's in the target\nNFS_UTILS_POST_INSTALL_TARGET_HOOKS += $(if $(BR2_PACKAGE_PYTHON),,NFS_UTILS_REMOVE_NFSIOSTAT)\n\ndefine HOST_NFS_UTILS_BUILD_CMDS\n\t$(MAKE) -C $(@D)/tools/rpcgen\nendef\n\ndefine HOST_NFS_UTILS_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/tools/rpcgen/rpcgen $(HOST_DIR)/bin/rpcgen\nendef\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/nfs-utils/nfs-utils_env.sh",
    "content": "#!/bin/sh\n# This script is empty, it simply needs to exist to make the\n# nfs-config.service happy.\n"
  },
  {
    "path": "package/nfs-utils/nfs-utils_tmpfiles.conf",
    "content": "d /run/nfs/sm 0700 root root -\nd /run/nfs/sm.bak 0700 root root -\nf /run/nfs/rmtab 0644 root root -\nf /run/nfs/etab 0644 root root -\n"
  },
  {
    "path": "package/nftables/Config.in",
    "content": "config BR2_PACKAGE_NFTABLES\n\tbool \"nftables\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\tselect BR2_PACKAGE_LIBMNL\n\tselect BR2_PACKAGE_LIBNFTNL\n\thelp\n\t  nftables is the project that aims to replace the existing\n\t  {ip,ip6,arp,eb}tables framework.\n\t  Basically, this project provides a new packet filtering\n\t  framework, a new userspace utility and also a compatibility\n\t  layer for {ip,ip6}tables.\n\n\t  http://www.netfilter.org/projects/nftables/index.html\n\ncomment \"nftables needs a toolchain w/ wchar, headers >= 3.12\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n"
  },
  {
    "path": "package/nftables/nftables.hash",
    "content": "# From https://netfilter.org/projects/nftables/downloads.html\nsha256  58bf547daf967a2b88ecb4f425f126006ebde22711db806b25c1d6cf84fe45f4  nftables-1.0.0.tar.bz2\nsha256  c17bc4fa5b2434c6f283ffcb2312e5bf3c7cdf5787b79505f094d8de734ac53e  COPYING\n"
  },
  {
    "path": "package/nftables/nftables.mk",
    "content": "################################################################################\n#\n# nftables\n#\n################################################################################\n\nNFTABLES_VERSION = 1.0.0\nNFTABLES_SOURCE = nftables-$(NFTABLES_VERSION).tar.bz2\nNFTABLES_SITE = https://www.netfilter.org/projects/nftables/files\nNFTABLES_DEPENDENCIES = libmnl libnftnl host-pkgconf $(TARGET_NLS_DEPENDENCIES)\nNFTABLES_LICENSE = GPL-2.0\nNFTABLES_LICENSE_FILES = COPYING\nNFTABLES_CONF_OPTS = --disable-debug --disable-man-doc --disable-pdf-doc\nNFTABLES_SELINUX_MODULES = iptables\n\nifeq ($(BR2_PACKAGE_GMP),y)\nNFTABLES_DEPENDENCIES += gmp\nNFTABLES_CONF_OPTS += --without-mini-gmp\nelse\nNFTABLES_CONF_OPTS += --with-mini-gmp\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nNFTABLES_DEPENDENCIES += readline\nNFTABLES_LIBS += -lncurses\nelse\nNFTABLES_CONF_OPTS += --without-cli\nendif\n\nifeq ($(BR2_PACKAGE_JANSSON),y)\nNFTABLES_DEPENDENCIES += jansson\nNFTABLES_CONF_OPTS += --with-json\nelse\nNFTABLES_CONF_OPTS += --without-json\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)\nNFTABLES_CONF_OPTS += --enable-python\nNFTABLES_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,python3)\nelse\nNFTABLES_CONF_OPTS += --disable-python\nendif\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_LIBNFTNL_JSON),yy)\nNFTABLES_LIBS += -ljansson -lm\nendif\n\nNFTABLES_CONF_ENV = LIBS=\"$(NFTABLES_LIBS)\"\n\ndefine NFTABLES_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NF_TABLES_INET)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nghttp2/Config.in",
    "content": "config BR2_PACKAGE_NGHTTP2\n\tbool \"nghttp2\"\n\thelp\n\t  nghttp2 is an implementation of HTTP/2 and its header\n\t  compression algorithm HPACK in C.\n\n\t  https://nghttp2.org/\n"
  },
  {
    "path": "package/nghttp2/nghttp2.hash",
    "content": "# Locally calculated\nsha256  eacc6f0f8543583ecd659faf0a3f906ed03826f1d4157b536b4b385fe47c5bb8  nghttp2-1.41.0.tar.gz\nsha256  6b94f3abc1aabd0c72a7c7d92a77f79dda7c8a0cb3df839a97890b4116a2de2a  COPYING\n"
  },
  {
    "path": "package/nghttp2/nghttp2.mk",
    "content": "################################################################################\n#\n# nghttp2\n#\n################################################################################\n\nNGHTTP2_VERSION = 1.41.0\nNGHTTP2_SITE = https://github.com/nghttp2/nghttp2/releases/download/v$(NGHTTP2_VERSION)\nNGHTTP2_LICENSE = MIT\nNGHTTP2_LICENSE_FILES = COPYING\nNGHTTP2_INSTALL_STAGING = YES\nNGHTTP2_CPE_ID_VENDOR = nghttp2\nNGHTTP2_DEPENDENCIES = host-pkgconf\nNGHTTP2_CONF_OPTS = --enable-lib-only\n\ndefine NGHTTP2_INSTALL_CLEAN_HOOK\n\t# Remove fetch-ocsp-response script unused by library\n\t$(Q)$(RM) -rf $(TARGET_DIR)/usr/share/nghttp2\nendef\n\nNGHTTP2_POST_INSTALL_TARGET_HOOKS += NGHTTP2_INSTALL_CLEAN_HOOK\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nginx/0001-auto-type-sizeof-rework-autotest-to-be-cross-compila.patch",
    "content": "From fb158af083e72c9aa0a8dfd4c6965f950192a230 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Tue, 4 Jul 2017 11:09:20 -0400\nSubject: [PATCH] auto/type/sizeof: rework autotest to be cross-compilation\n friendly\n\nRework the sizeof test to do the checks at compile time instead of at\nruntime. This way, it does not break when cross-compiling for a\ndifferent CPU architecture.\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n\nRefresh for 1.8.0.\n\nSigned-off-by: Danomi Manchego <danomimanchego123@gmail.com>\n[martin@barkynet.com: Updated for 1.10.0]\nSigned-off-by: Martin Bark <martin@barkynet.com>\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\nRefresh for 1.12.0\n---\n auto/types/sizeof | 37 ++++++++++++++++++++++++++++---------\n 1 file changed, 28 insertions(+), 9 deletions(-)\n\ndiff --git a/auto/types/sizeof b/auto/types/sizeof\nindex 480d8cf..61dcd2d 100644\n--- a/auto/types/sizeof\n+++ b/auto/types/sizeof\n@@ -14,7 +14,7 @@ END\n \n ngx_size=\n \n-cat << END > $NGX_AUTOTEST.c\n+cat << _EOF > $NGX_AUTOTEST.c\n \n #include <sys/types.h>\n #include <sys/time.h>\n@@ -25,22 +25,41 @@ $NGX_INCLUDE_UNISTD_H\n $NGX_INCLUDE_INTTYPES_H\n $NGX_INCLUDE_AUTO_CONFIG_H\n \n-int main(void) {\n-    printf(\"%d\", (int) sizeof($ngx_type));\n+#if !defined( PASTE)\n+#define PASTE2( x, y) x##y\n+#define PASTE( x, y)  PASTE2( x, y)\n+#endif /* PASTE */\n+\n+#define SAY_IF_SIZEOF( typename, type, size)   \\\\\n+    static char PASTE( PASTE( PASTE( sizeof_, typename), _is_), size) \\\\\n+    [(sizeof(type) == (size)) ? 1 : -1]\n+\n+SAY_IF_SIZEOF(TEST_TYPENAME, TEST_TYPE, TEST_SIZE);\n+\n+int main(void)\n+{\n     return 0;\n }\n \n-END\n+_EOF\n \n \n-ngx_test=\"$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \\\n-          -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs\"\n+_ngx_typename=`echo \"$ngx_type\" | sed 's/ /_/g;s/\\*/p/'`\n+ngx_size=\"-1\"\n+ngx_size=`for i in 1 2 4 8 16 ; do \\\n+    $CC $CC_TEST_FLAGS $CC_AUX_FLAGS \\\n+    -DTEST_TYPENAME=\"$_ngx_typename\" -DTEST_TYPE=\"$ngx_type\" -DTEST_SIZE=\"$i\" \\\n+    $NGX_AUTOTEST.c -o $NGX_AUTOTEST \\\n+    $NGX_LD_OPT $ngx_feature_libs >/dev/null 2>&1 || continue ;\\\n+    echo $i ; break ; done`\n \n-eval \"$ngx_test >> $NGX_AUTOCONF_ERR 2>&1\"\n+rm -rf $NGX_AUTOTEST*\n \n+if test -z $ngx_size ; then\n+    ngx_size=-1\n+fi\n \n-if [ -x $NGX_AUTOTEST ]; then\n-    ngx_size=`$NGX_AUTOTEST`\n+if [ $ngx_size -gt 0 ]; then\n     echo \" $ngx_size bytes\"\n fi\n \n-- \n2.9.4\n\n"
  },
  {
    "path": "package/nginx/0002-auto-feature-add-mechanism-allowing-to-force-feature.patch",
    "content": "From ef72be22ad6d58e230f75553d80b470b80c3303a Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Sun, 4 May 2014 00:40:49 +0200\nSubject: [PATCH] auto/feature: add mechanism allowing to force feature run\n test result\n\nWhenever a feature needs to run a test, the ngx_feature_run_force_result\nvariable can be set to the desired test result, and thus skip the test.\n\nTherefore, the generated config.h file will honor these presets.\n\nThis mechanism aims to make easier cross-compilation support.\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n---\n auto/feature | 80 ++++++++++++++++++++++++++++++++++++++++++++----------------\n 1 file changed, 59 insertions(+), 21 deletions(-)\n\ndiff --git a/auto/feature b/auto/feature\nindex 1145f28..a194b85 100644\n--- a/auto/feature\n+++ b/auto/feature\n@@ -52,50 +52,88 @@ if [ -x $NGX_AUTOTEST ]; then\n     case \"$ngx_feature_run\" in\n \n         yes)\n-            # /bin/sh is used to intercept \"Killed\" or \"Abort trap\" messages\n-            if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then\n-                echo \" found\"\n+            if test -n \"$ngx_feature_run_force_result\" ; then\n+                echo \" not tested (maybe cross-compiling)\"\n+                if test -n \"$ngx_feature_name\" ; then\n+                    if test \"$ngx_feature_run_force_result\" = \"yes\" ; then\n+                        have=$ngx_have_feature . auto/have\n+                    fi\n+                fi\n                 ngx_found=yes\n+            else\n \n-                if test -n \"$ngx_feature_name\"; then\n-                    have=$ngx_have_feature . auto/have\n+                # /bin/sh is used to intercept \"Killed\" or \"Abort trap\" messages\n+                if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then\n+                    echo \" found\"\n+                    ngx_found=yes\n+\n+                    if test -n \"$ngx_feature_name\"; then\n+                        have=$ngx_have_feature . auto/have\n+                    fi\n+\n+                else\n+                    echo \" found but is not working\"\n                 fi\n \n-            else\n-                echo \" found but is not working\"\n             fi\n         ;;\n \n         value)\n-            # /bin/sh is used to intercept \"Killed\" or \"Abort trap\" messages\n-            if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then\n-                echo \" found\"\n+            if test -n \"$ngx_feature_run_force_result\" ; then\n+                echo \" not tested (maybe cross-compiling)\"\n+                cat << END >> $NGX_AUTO_CONFIG_H\n+\n+#ifndef $ngx_feature_name\n+#define $ngx_feature_name  $ngx_feature_run_force_result\n+#endif\n+\n+END\n                 ngx_found=yes\n+            else\n \n-                cat << END >> $NGX_AUTO_CONFIG_H\n+                # /bin/sh is used to intercept \"Killed\" or \"Abort trap\" messages\n+                if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then\n+                    echo \" found\"\n+                    ngx_found=yes\n+\n+                    cat << END >> $NGX_AUTO_CONFIG_H\n \n #ifndef $ngx_feature_name\n #define $ngx_feature_name  `$NGX_AUTOTEST`\n #endif\n \n END\n-            else\n-                echo \" found but is not working\"\n+                else\n+                    echo \" found but is not working\"\n+                fi\n+\n             fi\n         ;;\n \n         bug)\n-            # /bin/sh is used to intercept \"Killed\" or \"Abort trap\" messages\n-            if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then\n-                echo \" not found\"\n-\n-            else\n-                echo \" found\"\n+            if test -n \"$ngx_feature_run_force_result\" ; then\n+                echo \" not tested (maybe cross-compiling)\"\n+                if test -n \"$ngx_feature_name\"; then\n+                    if test \"$ngx_feature_run_force_result\" = \"yes\" ; then\n+                        have=$ngx_have_feature . auto/have\n+                    fi\n+                fi\n                 ngx_found=yes\n+            else\n \n-                if test -n \"$ngx_feature_name\"; then\n-                    have=$ngx_have_feature . auto/have\n+                # /bin/sh is used to intercept \"Killed\" or \"Abort trap\" messages\n+                if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then\n+                    echo \" not found\"\n+\n+                else\n+                    echo \" found\"\n+                    ngx_found=yes\n+\n+                    if test -n \"$ngx_feature_name\"; then\n+                        have=$ngx_have_feature . auto/have\n+                    fi\n                 fi\n+\n             fi\n         ;;\n \n-- \n1.9.2\n\n"
  },
  {
    "path": "package/nginx/0003-auto-set-ngx_feature_run_force_result-for-each-featu.patch",
    "content": "From 57d9d632be9a9f7e3ac00f9eb10b069afd0b1543 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Thu, 29 May 2014 18:52:10 +0200\nSubject: [PATCH] auto/*: set ngx_feature_run_force_result for each feature\n requiring run test\n\nEach feature requiring a run test has a matching preset variable (called\nngx_force_*) used to set ngx_feature_run_force_result.\n\nThese ngx_force_* variables are passed through the environment at configure\ntime.\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n\nRefresh for 1.8.0.\n\nSigned-off-by: Danomi Manchego <danomimanchego123@gmail.com>\n[rebased against v1.20.1]\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\n---\n auto/cc/conf            | 3 +++\n auto/cc/name            | 1 +\n auto/lib/libatomic/conf | 1 +\n auto/os/darwin          | 3 +++\n auto/os/linux           | 4 ++++\n auto/unix               | 7 +++++++\n 6 files changed, 19 insertions(+)\n\ndiff --git a/auto/cc/conf b/auto/cc/conf\nindex afbca62b..ad42c800 100644\n--- a/auto/cc/conf\n+++ b/auto/cc/conf\n@@ -184,6 +184,7 @@ if [ \"$NGX_PLATFORM\" != win32 ]; then\n         ngx_feature=\"gcc builtin atomic operations\"\n         ngx_feature_name=NGX_HAVE_GCC_ATOMIC\n         ngx_feature_run=yes\n+        ngx_feature_run_force_result=\"$ngx_force_gcc_have_atomic\"\n         ngx_feature_incs=\n         ngx_feature_path=\n         ngx_feature_libs=\n@@ -205,6 +206,7 @@ if [ \"$NGX_PLATFORM\" != win32 ]; then\n         ngx_feature=\"C99 variadic macros\"\n         ngx_feature_name=\"NGX_HAVE_C99_VARIADIC_MACROS\"\n         ngx_feature_run=yes\n+        ngx_feature_run_force_result=\"$ngx_force_c99_have_variadic_macros\"\n         ngx_feature_incs=\"#include <stdio.h>\n #define var(dummy, ...)  sprintf(__VA_ARGS__)\"\n         ngx_feature_path=\n@@ -219,6 +221,7 @@ if [ \"$NGX_PLATFORM\" != win32 ]; then\n     ngx_feature=\"gcc variadic macros\"\n     ngx_feature_name=\"NGX_HAVE_GCC_VARIADIC_MACROS\"\n     ngx_feature_run=yes\n+    ngx_feature_run_force_result=\"$ngx_force_gcc_have_variadic_macros\"\n     ngx_feature_incs=\"#include <stdio.h>\n #define var(dummy, args...)  sprintf(args)\"\n     ngx_feature_path=\ndiff --git a/auto/cc/name b/auto/cc/name\nindex ded93f5b..7c3cb74a 100644\n--- a/auto/cc/name\n+++ b/auto/cc/name\n@@ -8,6 +8,7 @@ if [ \"$NGX_PLATFORM\" != win32 ]; then\n     ngx_feature=\"C compiler\"\n     ngx_feature_name=\n     ngx_feature_run=yes\n+    ngx_feature_run_force_result=\"$ngx_force_c_compiler\"\n     ngx_feature_incs=\n     ngx_feature_path=\n     ngx_feature_libs=\ndiff --git a/auto/lib/libatomic/conf b/auto/lib/libatomic/conf\nindex d1e484ab..37249161 100644\n--- a/auto/lib/libatomic/conf\n+++ b/auto/lib/libatomic/conf\n@@ -15,6 +15,7 @@ else\n     ngx_feature=\"atomic_ops library\"\n     ngx_feature_name=NGX_HAVE_LIBATOMIC\n     ngx_feature_run=yes\n+    ngx_feature_run_force_result=\"$ngx_force_have_libatomic\"\n     ngx_feature_incs=\"#define AO_REQUIRE_CAS\n                       #include <atomic_ops.h>\"\n     ngx_feature_path=\ndiff --git a/auto/os/darwin b/auto/os/darwin\nindex 429468f7..1ed47cca 100644\n--- a/auto/os/darwin\n+++ b/auto/os/darwin\n@@ -33,6 +33,7 @@ NGX_KQUEUE_CHECKED=YES\n ngx_feature=\"kqueue's EVFILT_TIMER\"\n ngx_feature_name=\"NGX_HAVE_TIMER_EVENT\"\n ngx_feature_run=yes\n+ngx_feature_run_force_result=\"$ngx_force_have_timer_event\"\n ngx_feature_incs=\"#include <sys/event.h>\n                   #include <sys/time.h>\"\n ngx_feature_path=\n@@ -63,6 +64,7 @@ ngx_feature_test=\"int      kq;\n ngx_feature=\"Darwin 64-bit kqueue millisecond timeout bug\"\n ngx_feature_name=NGX_DARWIN_KEVENT_BUG\n ngx_feature_run=bug\n+ngx_feature_run_force_result=\"$ngx_force_kevent_bug\"\n ngx_feature_incs=\"#include <sys/event.h>\n                   #include <sys/time.h>\"\n ngx_feature_path=\n@@ -92,6 +94,7 @@ ngx_feature_test=\"int  kq;\n ngx_feature=\"sendfile()\"\n ngx_feature_name=\"NGX_HAVE_SENDFILE\"\n ngx_feature_run=yes\n+ngx_feature_run_force_result=\"$ngx_force_have_sendfile\"\n ngx_feature_incs=\"#include <sys/types.h>\n                   #include <sys/socket.h>\n                   #include <sys/uio.h>\ndiff --git a/auto/os/linux b/auto/os/linux\nindex 2c8a9bb8..eb4513ee 100644\n--- a/auto/os/linux\n+++ b/auto/os/linux\n@@ -37,6 +37,7 @@ fi\n ngx_feature=\"epoll\"\n ngx_feature_name=\"NGX_HAVE_EPOLL\"\n ngx_feature_run=yes\n+ngx_feature_run_force_result=\"$ngx_force_have_epoll\"\n ngx_feature_incs=\"#include <sys/epoll.h>\"\n ngx_feature_path=\n ngx_feature_libs=\n@@ -136,6 +137,7 @@ CC_AUX_FLAGS=\"$cc_aux_flags -D_GNU_SOURCE\"\n ngx_feature=\"sendfile()\"\n ngx_feature_name=\"NGX_HAVE_SENDFILE\"\n ngx_feature_run=yes\n+ngx_feature_run_force_result=\"$ngx_force_have_sendfile\"\n ngx_feature_incs=\"#include <sys/sendfile.h>\n                   #include <errno.h>\"\n ngx_feature_path=\n@@ -157,6 +159,7 @@ CC_AUX_FLAGS=\"$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64\"\n ngx_feature=\"sendfile64()\"\n ngx_feature_name=\"NGX_HAVE_SENDFILE64\"\n ngx_feature_run=yes\n+ngx_feature_run_force_result=\"$ngx_force_have_sendfile64\"\n ngx_feature_incs=\"#include <sys/sendfile.h>\n                   #include <errno.h>\"\n ngx_feature_path=\n@@ -175,6 +178,7 @@ ngx_include=\"sys/prctl.h\"; . auto/include\n ngx_feature=\"prctl(PR_SET_DUMPABLE)\"\n ngx_feature_name=\"NGX_HAVE_PR_SET_DUMPABLE\"\n ngx_feature_run=yes\n+ngx_feature_run_force_result=\"$ngx_force_have_pr_set_dumpable\"\n ngx_feature_incs=\"#include <sys/prctl.h>\"\n ngx_feature_path=\n ngx_feature_libs=\ndiff --git a/auto/unix b/auto/unix\nindex 43d3b25a..3da00537 100644\n--- a/auto/unix\n+++ b/auto/unix\n@@ -100,6 +100,7 @@ if test -z \"$NGX_KQUEUE_CHECKED\"; then\n         ngx_feature=\"kqueue's EVFILT_TIMER\"\n         ngx_feature_name=\"NGX_HAVE_TIMER_EVENT\"\n         ngx_feature_run=yes\n+        ngx_feature_run_force_result=\"$ngx_force_have_timer_event\"\n         ngx_feature_incs=\"#include <sys/event.h>\n                           #include <sys/time.h>\"\n         ngx_feature_path=\n@@ -722,6 +723,7 @@ if [ $ngx_found = no ]; then\n     ngx_feature=\"sys_nerr\"\n     ngx_feature_name=\"NGX_SYS_NERR\"\n     ngx_feature_run=value\n+    ngx_feature_run_force_result=\"$ngx_force_sys_nerr\"\n     ngx_feature_incs='#include <errno.h>\n                       #include <stdio.h>'\n     ngx_feature_path=\n@@ -737,6 +739,7 @@ if [ $ngx_found = no ]; then\n     ngx_feature=\"_sys_nerr\"\n     ngx_feature_name=\"NGX_SYS_NERR\"\n     ngx_feature_run=value\n+    ngx_feature_run_force_result=\"$ngx_force_sys_nerr\"\n     ngx_feature_incs='#include <errno.h>\n                       #include <stdio.h>'\n     ngx_feature_path=\n@@ -806,6 +809,7 @@ ngx_feature_test=\"void *p; p = memalign(4096, 4096);\n ngx_feature=\"mmap(MAP_ANON|MAP_SHARED)\"\n ngx_feature_name=\"NGX_HAVE_MAP_ANON\"\n ngx_feature_run=yes\n+ngx_feature_run_force_result=\"$ngx_force_have_map_anon\"\n ngx_feature_incs=\"#include <sys/mman.h>\"\n ngx_feature_path=\n ngx_feature_libs=\n@@ -819,6 +823,7 @@ ngx_feature_test=\"void *p;\n ngx_feature='mmap(\"/dev/zero\", MAP_SHARED)'\n ngx_feature_name=\"NGX_HAVE_MAP_DEVZERO\"\n ngx_feature_run=yes\n+ngx_feature_run_force_result=\"$ngx_force_have_map_devzero\"\n ngx_feature_incs=\"#include <sys/mman.h>\n                   #include <sys/stat.h>\n                   #include <fcntl.h>\"\n@@ -834,6 +839,7 @@ ngx_feature_test='void *p; int  fd;\n ngx_feature=\"System V shared memory\"\n ngx_feature_name=\"NGX_HAVE_SYSVSHM\"\n ngx_feature_run=yes\n+ngx_feature_run_force_result=\"$ngx_force_have_sysvshm\"\n ngx_feature_incs=\"#include <sys/ipc.h>\n                   #include <sys/shm.h>\"\n ngx_feature_path=\n@@ -848,6 +854,7 @@ ngx_feature_test=\"int  id;\n ngx_feature=\"POSIX semaphores\"\n ngx_feature_name=\"NGX_HAVE_POSIX_SEM\"\n ngx_feature_run=yes\n+ngx_feature_run_force_result=\"$ngx_force_have_posix_sem\"\n ngx_feature_incs=\"#include <semaphore.h>\"\n ngx_feature_path=\n ngx_feature_libs=\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/nginx/0004-auto-lib-libxslt-conf-use-pkg-config.patch",
    "content": "From 7783d63c87f94797aa134786214b0a84c000be75 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Thu, 29 May 2014 19:22:27 +0200\nSubject: [PATCH] auto/lib/libxslt/conf: use pkg-config\n\nChange to using pkg-config to find the path to libxslt and its\ndependencies.\n\nSigned-off-by: Martin Bark <martin@barkynet.com>\n[Peter: updated for 1.15.6]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n auto/lib/libxslt/conf | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/auto/lib/libxslt/conf b/auto/lib/libxslt/conf\nindex 3063ac7c..3209e364 100644\n--- a/auto/lib/libxslt/conf\n+++ b/auto/lib/libxslt/conf\n@@ -12,8 +12,9 @@\n                       #include <libxslt/xsltInternals.h>\n                       #include <libxslt/transform.h>\n                       #include <libxslt/xsltutils.h>\"\n-    ngx_feature_path=\"/usr/include/libxml2\"\n-    ngx_feature_libs=\"-lxml2 -lxslt\"\n+    ngx_feature_path=\"$(${PKG_CONFIG:=pkg-config} --cflags-only-I libxslt|\n+\t\t\t sed -re 's/(^|\\s)-I\\s*(\\S+)/\\1\\2/g')\"\n+    ngx_feature_libs=\"$(${PKG_CONFIG:=pkg-config} --libs libxslt)\"\n     ngx_feature_test=\"xmlParserCtxtPtr    ctxt = NULL;\n                       xsltStylesheetPtr   sheet = NULL;\n                       xmlDocPtr           doc = NULL;\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/nginx/0005-auto-unix-make-sys_nerr-guessing-cross-friendly.patch",
    "content": "From 08617a8d29ee22831175697555558fec8f52772c Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Sun, 1 Jun 2014 16:05:04 +0200\nSubject: [PATCH] auto/unix: make sys_nerr guessing cross-friendly\n\nThis patch replaces the default sys_nerr runtest with a test done at\nbuildtime.\n\nThe idea behind this buildtime test is finding the value of the ERR_MAX\nmacro if defined, or the EHWPOISON (which is currently the last errno)\notherwise.\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n\nRefresh for 1.8.0.\n\nSigned-off-by: Danomi Manchego <danomimanchego123@gmail.com>\n[rebased against v1.20.1]\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\n---\n auto/os/sys_nerr | 78 ++++++++++++++++++++++++++++++++++++++++++++++++\n auto/unix        |  8 +++++\n 2 files changed, 86 insertions(+)\n create mode 100644 auto/os/sys_nerr\n\ndiff --git a/auto/os/sys_nerr b/auto/os/sys_nerr\nnew file mode 100644\nindex 0000000..8970f5f\n--- /dev/null\n+++ b/auto/os/sys_nerr\n@@ -0,0 +1,78 @@\n+\n+# Copyright (C) Samuel Martin <s.martin49@gmail.com>\n+\n+\n+echo $ngx_n \"checking for sys_nerr value...$ngx_c\"\n+\n+# sys_nerr guessing is done using a (very) poor (but working)\n+# heuristics, by checking for the value of ERR_MAX if defined, or\n+# EHWPOISON otherwise.\n+\n+cat << END >> $NGX_AUTOCONF_ERR\n+\n+----------------------------------------\n+checking for sys_nerr value\n+\n+END\n+\n+ngx_sys_nerr=\n+\n+cat << _EOF > $NGX_AUTOTEST.c\n+\n+#include <stdio.h>\n+#include <errno.h>\n+\n+static char sys_nerr_test[ERR_MAX];\n+int main(void)\n+{\n+    return 0;\n+}\n+\n+_EOF\n+\n+if $CC $CC_TEST_FLAGS $CC_AUX_FLAGS \\\n+        $NGX_AUTOTEST.c -o $NGX_AUTOTEST \\\n+        $NGX_LD_OPT $ngx_feature_libs >/dev/null 2>&1 ; then\n+    _ngx_max_err_macro=ERR_MAX\n+else\n+    # the +2 has been empirically found!\n+    _ngx_max_err_macro=\"EHWPOISON + 2\"\n+fi\n+\n+cat << _EOF > $NGX_AUTOTEST.c\n+\n+#include <stdio.h>\n+#include <errno.h>\n+\n+static char sys_nerr_test[(TEST_ERR_MAX == $_ngx_max_err_macro) ? 1 : -1];\n+int main(void)\n+{\n+    return 0;\n+}\n+\n+_EOF\n+\n+\n+ngx_sys_nerr=`for i in $(seq 0 2000) ; do \\\n+    $CC $CC_TEST_FLAGS $CC_AUX_FLAGS \\\n+    -DTEST_ERR_MAX=\"$i\" \\\n+    $NGX_AUTOTEST.c -o $NGX_AUTOTEST \\\n+    $NGX_LD_OPT $ngx_feature_libs >/dev/null 2>&1 || continue ;\\\n+    echo $i ; break ; done`\n+\n+rm -rf $NGX_AUTOTEST*\n+\n+if test -z $ngx_sys_nerr ; then\n+    ngx_size=0\n+    ngx_sys_nerr=0\n+fi\n+\n+cat << END >> $NGX_AUTO_CONFIG_H\n+\n+#ifndef $ngx_feature_name\n+#define $ngx_feature_name $ngx_sys_nerr\n+#endif\n+\n+END\n+\n+echo \" $ngx_sys_nerr\"\ndiff --git a/auto/unix b/auto/unix\nindex 7dbf9d1..00a7370 100755\n--- a/auto/unix\n+++ b/auto/unix\n@@ -744,10 +744,18 @@ if [ $ngx_found = no ]; then\n                       #include <stdio.h>'\n     ngx_feature_path=\n     ngx_feature_libs=\n+    if false ; then\n+    # Disabled because only valid for native build.\n     ngx_feature_test='printf(\"%d\", _sys_nerr);'\n     . auto/feature\n fi\n \n+else\n+    # Cross-compilation support\n+    . auto/os/sys_nerr\n+\n+fi\n+\n \n ngx_feature=\"localtime_r()\"\n ngx_feature_name=\"NGX_HAVE_LOCALTIME_R\"\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/nginx/0006-auto-lib-openssl-conf-use-pkg-config.patch",
    "content": "From 4ba4b1e0bd1b69e124eb34c95ae9e7c087370efa Mon Sep 17 00:00:00 2001\nFrom: Martin Bark <martin@barkynet.com>\nDate: Fri, 6 May 2016 14:48:31 +0100\nSubject: [PATCH] auto/lib/openssl/conf: use pkg-config\n\nChange to using pkg-config to find the path to openssl and its\ndependencies.\n\nSigned-off-by: Martin Bark <martin@barkynet.com>\n---\n auto/lib/openssl/conf | 187 +++++++++++++++++++++---------------------\n 1 file changed, 94 insertions(+), 93 deletions(-)\n\ndiff --git a/auto/lib/openssl/conf b/auto/lib/openssl/conf\nindex 4fb52df7..9f30490d 100644\n--- a/auto/lib/openssl/conf\n+++ b/auto/lib/openssl/conf\n@@ -1,4 +1,3 @@\n-\n # Copyright (C) Igor Sysoev\n # Copyright (C) Nginx, Inc.\n \n@@ -7,123 +6,125 @@ if [ $OPENSSL != NONE ]; then\n \n     case \"$CC\" in\n \n-        cl | bcc32)\n-            have=NGX_OPENSSL . auto/have\n-            have=NGX_SSL . auto/have\n-\n-            CFLAGS=\"$CFLAGS -DNO_SYS_TYPES_H\"\n-\n-            CORE_INCS=\"$CORE_INCS $OPENSSL/openssl/include\"\n-            CORE_DEPS=\"$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h\"\n-\n-            if [ -f $OPENSSL/ms/do_ms.bat ]; then\n-                # before OpenSSL 1.1.0\n-                CORE_LIBS=\"$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib\"\n-                CORE_LIBS=\"$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib\"\n-            else\n-                # OpenSSL 1.1.0+\n-                CORE_LIBS=\"$CORE_LIBS $OPENSSL/openssl/lib/libssl.lib\"\n-                CORE_LIBS=\"$CORE_LIBS $OPENSSL/openssl/lib/libcrypto.lib\"\n-            fi\n-\n-            # libeay32.lib requires gdi32.lib\n-            CORE_LIBS=\"$CORE_LIBS gdi32.lib\"\n-            # OpenSSL 1.0.0 requires crypt32.lib\n-            CORE_LIBS=\"$CORE_LIBS crypt32.lib\"\n-        ;;\n-\n-        *)\n-            have=NGX_OPENSSL . auto/have\n-            have=NGX_SSL . auto/have\n-\n-            CORE_INCS=\"$CORE_INCS $OPENSSL/.openssl/include\"\n-            CORE_DEPS=\"$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h\"\n-            CORE_LIBS=\"$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a\"\n-            CORE_LIBS=\"$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a\"\n-            CORE_LIBS=\"$CORE_LIBS $NGX_LIBDL\"\n-            CORE_LIBS=\"$CORE_LIBS $NGX_LIBPTHREAD\"\n-\n-            if [ \"$NGX_PLATFORM\" = win32 ]; then\n-                CORE_LIBS=\"$CORE_LIBS -lgdi32 -lcrypt32 -lws2_32\"\n-            fi\n-        ;;\n+\tcl | bcc32)\n+\t    have=NGX_OPENSSL . auto/have\n+\t    have=NGX_SSL . auto/have\n+\n+\t    CFLAGS=\"$CFLAGS -DNO_SYS_TYPES_H\"\n+\n+\t    CORE_INCS=\"$CORE_INCS $OPENSSL/openssl/include\"\n+\t    CORE_DEPS=\"$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h\"\n+\n+\t    if [ -f $OPENSSL/ms/do_ms.bat ]; then\n+\t\t# before OpenSSL 1.1.0\n+\t\tCORE_LIBS=\"$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib\"\n+\t\tCORE_LIBS=\"$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib\"\n+\t    else\n+\t\t# OpenSSL 1.1.0+\n+\t\tCORE_LIBS=\"$CORE_LIBS $OPENSSL/openssl/lib/libssl.lib\"\n+\t\tCORE_LIBS=\"$CORE_LIBS $OPENSSL/openssl/lib/libcrypto.lib\"\n+\t    fi\n+\n+\t    # libeay32.lib requires gdi32.lib\n+\t    CORE_LIBS=\"$CORE_LIBS gdi32.lib\"\n+\t    # OpenSSL 1.0.0 requires crypt32.lib\n+\t    CORE_LIBS=\"$CORE_LIBS crypt32.lib\"\n+\t;;\n+\n+\t*)\n+\t    have=NGX_OPENSSL . auto/have\n+\t    have=NGX_SSL . auto/have\n+\n+\t    CORE_INCS=\"$CORE_INCS $OPENSSL/.openssl/include\"\n+\t    CORE_DEPS=\"$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h\"\n+\t    CORE_LIBS=\"$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a\"\n+\t    CORE_LIBS=\"$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a\"\n+\t    CORE_LIBS=\"$CORE_LIBS $NGX_LIBDL\"\n+\t    CORE_LIBS=\"$CORE_LIBS $NGX_LIBPTHREAD\"\n+\n+\t    if [ \"$NGX_PLATFORM\" = win32 ]; then\n+\t\tCORE_LIBS=\"$CORE_LIBS -lgdi32 -lcrypt32 -lws2_32\"\n+\t    fi\n+\t;;\n     esac\n \n else\n \n     if [ \"$NGX_PLATFORM\" != win32 ]; then\n \n-        OPENSSL=NO\n+\tOPENSSL=NO\n \n-        ngx_feature=\"OpenSSL library\"\n-        ngx_feature_name=\"NGX_OPENSSL\"\n-        ngx_feature_run=no\n-        ngx_feature_incs=\"#include <openssl/ssl.h>\"\n-        ngx_feature_path=\n-        ngx_feature_libs=\"-lssl -lcrypto $NGX_LIBDL $NGX_LIBPTHREAD\"\n-        ngx_feature_test=\"SSL_CTX_set_options(NULL, 0)\"\n-        . auto/feature\n+\tngx_feature=\"OpenSSL library\"\n+\tngx_feature_name=\"NGX_OPENSSL\"\n+\tngx_feature_run=no\n+\tngx_feature_incs=\"#include <openssl/ssl.h>\"\n+\tngx_feature_path=\n+\tngx_feature_path=\"$(${PKG_CONFIG:=pkg-config} --cflags-only-I openssl|\n+\t\t\t    sed -re 's/(^|\\s)-I\\s*(\\S+)/\\1\\2/g')\"\n+\tngx_feature_libs=\"$(${PKG_CONFIG:=pkg-config} --libs openssl)\"\n+\tngx_feature_test=\"SSL_CTX_set_options(NULL, 0)\"\n+\t. auto/feature\n \n-        if [ $ngx_found = no ]; then\n+\tif [ $ngx_found = no ]; then\n \n-            # FreeBSD port\n+\t    # FreeBSD port\n \n-            ngx_feature=\"OpenSSL library in /usr/local/\"\n-            ngx_feature_path=\"/usr/local/include\"\n+\t    ngx_feature=\"OpenSSL library in /usr/local/\"\n+\t    ngx_feature_path=\"/usr/local/include\"\n \n-            if [ $NGX_RPATH = YES ]; then\n-                ngx_feature_libs=\"-R/usr/local/lib -L/usr/local/lib -lssl -lcrypto\"\n-            else\n-                ngx_feature_libs=\"-L/usr/local/lib -lssl -lcrypto\"\n-            fi\n+\t    if [ $NGX_RPATH = YES ]; then\n+\t\tngx_feature_libs=\"-R/usr/local/lib -L/usr/local/lib -lssl -lcrypto\"\n+\t    else\n+\t\tngx_feature_libs=\"-L/usr/local/lib -lssl -lcrypto\"\n+\t    fi\n \n-            ngx_feature_libs=\"$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD\"\n+\t    ngx_feature_libs=\"$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD\"\n \n-            . auto/feature\n-        fi\n+\t    . auto/feature\n+\tfi\n \n-        if [ $ngx_found = no ]; then\n+\tif [ $ngx_found = no ]; then\n \n-            # NetBSD port\n+\t    # NetBSD port\n \n-            ngx_feature=\"OpenSSL library in /usr/pkg/\"\n-            ngx_feature_path=\"/usr/pkg/include\"\n+\t    ngx_feature=\"OpenSSL library in /usr/pkg/\"\n+\t    ngx_feature_path=\"/usr/pkg/include\"\n \n-            if [ $NGX_RPATH = YES ]; then\n-                ngx_feature_libs=\"-R/usr/pkg/lib -L/usr/pkg/lib -lssl -lcrypto\"\n-            else\n-                ngx_feature_libs=\"-L/usr/pkg/lib -lssl -lcrypto\"\n-            fi\n+\t    if [ $NGX_RPATH = YES ]; then\n+\t\tngx_feature_libs=\"-R/usr/pkg/lib -L/usr/pkg/lib -lssl -lcrypto\"\n+\t    else\n+\t\tngx_feature_libs=\"-L/usr/pkg/lib -lssl -lcrypto\"\n+\t    fi\n \n-            ngx_feature_libs=\"$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD\"\n+\t    ngx_feature_libs=\"$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD\"\n \n-            . auto/feature\n-        fi\n+\t    . auto/feature\n+\tfi\n \n-        if [ $ngx_found = no ]; then\n+\tif [ $ngx_found = no ]; then\n \n-            # MacPorts\n+\t    # MacPorts\n \n-            ngx_feature=\"OpenSSL library in /opt/local/\"\n-            ngx_feature_path=\"/opt/local/include\"\n+\t    ngx_feature=\"OpenSSL library in /opt/local/\"\n+\t    ngx_feature_path=\"/opt/local/include\"\n \n-            if [ $NGX_RPATH = YES ]; then\n-                ngx_feature_libs=\"-R/opt/local/lib -L/opt/local/lib -lssl -lcrypto\"\n-            else\n-                ngx_feature_libs=\"-L/opt/local/lib -lssl -lcrypto\"\n-            fi\n+\t    if [ $NGX_RPATH = YES ]; then\n+\t\tngx_feature_libs=\"-R/opt/local/lib -L/opt/local/lib -lssl -lcrypto\"\n+\t    else\n+\t\tngx_feature_libs=\"-L/opt/local/lib -lssl -lcrypto\"\n+\t    fi\n \n-            ngx_feature_libs=\"$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD\"\n+\t    ngx_feature_libs=\"$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD\"\n \n-            . auto/feature\n-        fi\n+\t    . auto/feature\n+\tfi\n \n-        if [ $ngx_found = yes ]; then\n-            have=NGX_SSL . auto/have\n-            CORE_INCS=\"$CORE_INCS $ngx_feature_path\"\n-            CORE_LIBS=\"$CORE_LIBS $ngx_feature_libs\"\n-            OPENSSL=YES\n-        fi\n+\tif [ $ngx_found = yes ]; then\n+\t    have=NGX_SSL . auto/have\n+\t    CORE_INCS=\"$CORE_INCS $ngx_feature_path\"\n+\t    CORE_LIBS=\"$CORE_LIBS $ngx_feature_libs\"\n+\t    OPENSSL=YES\n+\tfi\n     fi\n \n     if [ $OPENSSL != YES ]; then\n@@ -136,7 +137,7 @@ into the system, or build the OpenSSL library statically from the source\n with nginx by using --with-openssl=<path> option.\n \n END\n-        exit 1\n+\texit 1\n     fi\n \n fi\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/nginx/0007-auto-lib-libgd-conf-use-pkg-config.patch",
    "content": "From 0551f2e5eb4143be0aacc0185cdc4afc9ca80204 Mon Sep 17 00:00:00 2001\nFrom: Martin Bark <martin@barkynet.com>\nDate: Fri, 6 May 2016 14:48:49 +0100\nSubject: [PATCH] auto/lib/libgd/conf: use pkg-config\n\nChange to using pkg-config to find the path to libgd and its\ndependencies.\n\nSigned-off-by: Martin Bark <martin@barkynet.com>\n[Peter: updated for 1.15.6]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n[Fabrice: use pkg-config instead of gdlib-config]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n auto/lib/libgd/conf | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/auto/lib/libgd/conf b/auto/lib/libgd/conf\nindex 67863976..1a4379a5 100644\n--- a/auto/lib/libgd/conf\n+++ b/auto/lib/libgd/conf\n@@ -7,8 +7,9 @@\n     ngx_feature_name=\n     ngx_feature_run=no\n     ngx_feature_incs=\"#include <gd.h>\"\n-    ngx_feature_path=\n-    ngx_feature_libs=\"-lgd\"\n+    ngx_feature_path=\"$(${PKG_CONFIG:=pkg-config} --cflags-only-I gdlib|\n+\t\t\t sed -re 's/(^|\\s)-I\\s*(\\S+)/\\1\\2/g')\"\n+    ngx_feature_libs=\"$(${PKG_CONFIG:=pkg-config} --libs gdlib)\"\n     ngx_feature_test=\"gdImagePtr img = gdImageCreateFromGifPtr(1, NULL);\n                       (void) img\"\n     . auto/feature\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/nginx/0008-src-os-unix-ngx_linux_config.h-only-include-dlfcn.h-.patch",
    "content": "From 8dc9dffc1f99ac951865f3135dfb5061a08d1f85 Mon Sep 17 00:00:00 2001\nFrom: Martin Bark <martin@barkynet.com>\nDate: Fri, 6 May 2016 16:29:17 +0100\nSubject: [PATCH] src/os/unix/ngx_linux_config.h: only include dlfcn.h if\n available\n\nSigned-off-by: Martin Bark <martin@barkynet.com>\n---\n src/os/unix/ngx_linux_config.h | 6 ++++--\n 1 file changed, 4 insertions(+), 2 deletions(-)\n\ndiff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h\nindex 2f6129d..4244086 100644\n--- a/src/os/unix/ngx_linux_config.h\n+++ b/src/os/unix/ngx_linux_config.h\n@@ -55,10 +55,12 @@\n #include <crypt.h>\n #include <sys/utsname.h>        /* uname() */\n \n-#include <dlfcn.h>\n+#include <ngx_auto_config.h>\n \n \n-#include <ngx_auto_config.h>\n+#if (NGX_HAVE_DLOPEN)\n+#include <dlfcn.h>\n+#endif\n \n \n #if (NGX_HAVE_POSIX_SEM)\n-- \n2.8.2\n\n"
  },
  {
    "path": "package/nginx/0009-auto-os-linux-fix-build-with-libxcrypt.patch",
    "content": "From 79f1fe5251afc4e22a138b0c8f44fc9c94093b8b Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 2 Apr 2021 09:18:26 +0200\nSubject: [PATCH] auto/os/linux: fix build with libxcrypt\n\nIf crypt_r is found in libcrypt, add -lcrypt to CORE_LIBS to avoid the\nfollowing build failure with libxcrypt:\n\nobjs/ngx_modules.o \\\n-lpcre -L/home/giuliobenetti/autobuild/run/instance-3/output-1/host/bin/../xtensa-buildroot-linux-uclibc/sysroot/usr/lib -lssl -lcrypto -L/home/giuliobenetti/autobuild/run/instance-3/output-1/host/bin/../xtensa-buildroot-linux-uclibc/sysroot/usr/lib -lxslt -lxml2 -lGeoIP \\\n-Wl,-E\n/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/xtensa-buildroot-linux-uclibc/9.3.0/../../../../xtensa-buildroot-linux-uclibc/bin/ld: objs/src/os/unix/ngx_user.o:/home/giuliobenetti/autobuild/run/instance-3/output-1/build/nginx-1.18.0/src/os/unix/ngx_user.c:18: undefined reference to `crypt_r'\n\nFixes:\n - http://autobuild.buildroot.org/results/79a51b0d348e756517b5c9ce815a67f5c657e7e6\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n auto/os/linux | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/auto/os/linux b/auto/os/linux\nindex 5e280eca..04682812 100644\n--- a/auto/os/linux\n+++ b/auto/os/linux\n@@ -232,6 +232,9 @@ ngx_feature_test=\"struct crypt_data  cd;\n                   crypt_r(\\\"key\\\", \\\"salt\\\", &cd);\"\n . auto/feature\n \n+if [ $ngx_found = yes ]; then\n+    CORE_LIBS=\"$CORE_LIBS $ngx_feature_libs\"\n+fi\n \n ngx_include=\"sys/vfs.h\";     . auto/include\n \n-- \n2.30.2\n\n"
  },
  {
    "path": "package/nginx/0010-Allow-forcing-of-endianness-for-cross-compilation.patch",
    "content": "From 4bd8fe780ff2064f2d4e9c905d8a98dd0f9b6191 Mon Sep 17 00:00:00 2001\nFrom: Nevo Hed <nhed+buildroot@starry.com>\nDate: Mon, 30 Aug 2021 13:28:13 -0400\nSubject: [PATCH] Allow forcing of endianness for cross-compilation\n\nUpstream-status: Invalid (upstream doesn't support cross-compilation)\nSee https://trac.nginx.org/nginx/ticket/2240\n\nSigned-off-by: Nevo Hed <nhed+buildroot@starry.com>\n---\n auto/endianness | 61 ++++++++++++++++++++++++++++++++-----------------\n auto/options    |  6 +++++\n 2 files changed, 46 insertions(+), 21 deletions(-)\n\ndiff --git a/auto/endianness b/auto/endianness\nindex 1b552b6b..4b2a3cd7 100644\n--- a/auto/endianness\n+++ b/auto/endianness\n@@ -26,25 +26,44 @@ int main(void) {\n \n END\n \n-ngx_test=\"$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \\\n-          -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs\"\n-\n-eval \"$ngx_test >> $NGX_AUTOCONF_ERR 2>&1\"\n-\n-if [ -x $NGX_AUTOTEST ]; then\n-    if $NGX_AUTOTEST >/dev/null 2>&1; then\n-        echo \" little endian\"\n+case \"${NGX_FORCE_ENDIANNESS}\" in\n+    little)\n+        echo \" little endian (forced)\"\n         have=NGX_HAVE_LITTLE_ENDIAN . auto/have\n-    else\n-        echo \" big endian\"\n-    fi\n-\n-    rm -rf $NGX_AUTOTEST*\n-\n-else\n-    rm -rf $NGX_AUTOTEST*\n-\n-    echo\n-    echo \"$0: error: cannot detect system byte ordering\"\n-    exit 1\n-fi\n+    ;;\n+\n+    big)\n+        echo \" big endian (forced)\"\n+    ;;\n+\n+    \"\")\n+        ngx_test=\"$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \\\n+                  -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs\"\n+\n+        eval \"$ngx_test >> $NGX_AUTOCONF_ERR 2>&1\"\n+\n+        if [ -x $NGX_AUTOTEST ]; then\n+            if $NGX_AUTOTEST >/dev/null 2>&1; then\n+                echo \" little endian\"\n+                have=NGX_HAVE_LITTLE_ENDIAN . auto/have\n+            else\n+                echo \" big endian\"\n+            fi\n+\n+            rm -rf $NGX_AUTOTEST*\n+\n+        else\n+            rm -rf $NGX_AUTOTEST*\n+\n+            echo\n+            echo \"$0: error: cannot detect system byte ordering\"\n+            exit 1\n+        fi\n+    ;;\n+\n+    *)\n+        echo\n+        echo \"$0: error: invalid \\\"--force-endianness=${NGX_FORCE_ENDIANNESS}\\\"\"\n+        exit 1\n+    ;;\n+esac\ndiff --git a/auto/options b/auto/options\nindex 80be906e..85a06456 100644\n--- a/auto/options\n+++ b/auto/options\n@@ -17,6 +17,8 @@ NGX_USER=\n NGX_GROUP=\n NGX_BUILD=\n \n+NGX_FORCE_ENDIANNESS=\n+\n CC=${CC:-cc}\n CPP=\n NGX_OBJS=objs\n@@ -196,6 +198,8 @@ do\n         --user=*)                        NGX_USER=\"$value\"          ;;\n         --group=*)                       NGX_GROUP=\"$value\"         ;;\n \n+        --force-endianness=*)            NGX_FORCE_ENDIANNESS=\"$value\" ;;\n+\n         --crossbuild=*)                  NGX_PLATFORM=\"$value\"      ;;\n \n         --build=*)                       NGX_BUILD=\"$value\"         ;;\n@@ -432,6 +436,8 @@ cat << END\n   --build=NAME                       set build name\n   --builddir=DIR                     set build directory\n \n+  --force-endianness=<big>|<little>  force endianness\n+\n   --with-select_module               enable select module\n   --without-select_module            disable select module\n   --with-poll_module                 enable poll module\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/nginx/Config.in",
    "content": "menuconfig BR2_PACKAGE_NGINX\n\tbool \"nginx\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBATOMIC_OPS if BR2_sparc_v8 || BR2_sparc_leon3\n\thelp\n\t  nginx is an HTTP and reverse proxy server, as well as a mail\n\t  proxy server.\n\n\t  http://nginx.org/\n\nif BR2_PACKAGE_NGINX\n\nconfig BR2_PACKAGE_NGINX_FILE_AIO\n\tbool \"file AIO support\"\n\t# Does not build, because nginx hardcodes using SYS_eventfd,\n\t# but it's available on neither AArch64 nor ARC where only\n\t# eventfd() is available. See\n\t# https://bugs.launchpad.net/linaro-aarch64/+bug/1160013\n\tdepends on !BR2_aarch64\n\tdepends on !BR2_arc\n\nconfig BR2_PACKAGE_NGINX_THREADS\n\tbool \"thread pool support\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\ncomment \"thread pool support needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_NGINX_HTTP\n\tbool \"http server\"\n\tdefault y\n\nif BR2_PACKAGE_NGINX_HTTP\n\nconfig BR2_PACKAGE_NGINX_HTTP_CACHE\n\tbool \"http cache support\"\n\tselect BR2_PACKAGE_OPENSSL\n\ncomment \"http modules\"\n\nconfig BR2_PACKAGE_NGINX_HTTP_SSL_MODULE\n\tbool \"ngx_http_ssl_module\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Enable ngx_http_ssl_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_V2_MODULE\n\tbool \"ngx_http_v2_module\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Enable ngx_http_spdy_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_REALIP_MODULE\n\tbool \"ngx_http_realip_module\"\n\thelp\n\t  Enable ngx_http_realip_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_ADDITION_MODULE\n\tbool \"ngx_http_addition_module\"\n\thelp\n\t  Enable ngx_http_addition_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_XSLT_MODULE\n\tbool \"ngx_http_xslt_module\"\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_LIBXSLT\n\thelp\n\t  Enable ngx_http_xslt_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_IMAGE_FILTER_MODULE\n\tbool \"ngx_http_image_filter_module\"\n\tselect BR2_PACKAGE_GD\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  Enable ngx_http_image_filter_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_GEOIP_MODULE\n\tbool \"ngx_http_geoip_module\"\n\tselect BR2_PACKAGE_GEOIP\n\thelp\n\t  Enable ngx_http_geoip_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_SUB_MODULE\n\tbool \"ngx_http_sub_module\"\n\thelp\n\t  Enable ngx_http_sub_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_DAV_MODULE\n\tbool \"ngx_http_dav_module\"\n\thelp\n\t  Enable ngx_http_dav_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_FLV_MODULE\n\tbool \"ngx_http_flv_module\"\n\thelp\n\t  Enable ngx_http_flv_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_MP4_MODULE\n\tbool \"ngx_http_mp4_module\"\n\thelp\n\t  Enable ngx_http_mp4_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_GUNZIP_MODULE\n\tbool \"ngx_http_gunzip_module\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Enable ngx_http_gunzip_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_GZIP_STATIC_MODULE\n\tbool \"ngx_http_gzip_static_module\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Enable ngx_http_gzip_static_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_AUTH_REQUEST_MODULE\n\tbool \"ngx_http_auth_request_module\"\n\thelp\n\t  Enable ngx_http_auth_request_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_RANDOM_INDEX_MODULE\n\tbool \"ngx_http_random_index_module\"\n\thelp\n\t  Enable ngx_http_random_index_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_SECURE_LINK_MODULE\n\tbool \"ngx_http_secure_link_module\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Enable ngx_http_secure_link_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_DEGRADATION_MODULE\n\tbool \"ngx_http_degradation_module\"\n\thelp\n\t  Enable ngx_http_degradation_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_SLICE_MODULE\n\tbool \"ngx_http_slice_module\"\n\thelp\n\t  Enable ngx_http_slice_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_STUB_STATUS_MODULE\n\tbool \"ngx_http_stub_status_module\"\n\thelp\n\t  Enable ngx_http_stub_status_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_CHARSET_MODULE\n\tbool \"ngx_http_charset_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_charset_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_GZIP_MODULE\n\tbool \"ngx_http_gzip_module\"\n\tdefault y\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Enable ngx_http_gzip_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_SSI_MODULE\n\tbool \"ngx_http_ssi_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_ssi_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_USERID_MODULE\n\tbool \"ngx_http_userid_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_userid_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_ACCESS_MODULE\n\tbool \"ngx_http_access_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_access_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_AUTH_BASIC_MODULE\n\tbool \"ngx_http_auth_basic_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_auth_basic_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_AUTOINDEX_MODULE\n\tbool \"ngx_http_autoindex_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_autoindex_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_GEO_MODULE\n\tbool \"ngx_http_geo_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_geo_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_MAP_MODULE\n\tbool \"ngx_http_map_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_map_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_SPLIT_CLIENTS_MODULE\n\tbool \"ngx_http_split_clients_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_split_clients_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_REFERER_MODULE\n\tbool \"ngx_http_referer_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_referer_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_REWRITE_MODULE\n\tbool \"ngx_http_rewrite_module\"\n\tdefault y\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  Enable ngx_http_rewrite_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_PROXY_MODULE\n\tbool \"ngx_http_proxy_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_proxy_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_FASTCGI_MODULE\n\tbool \"ngx_http_fastcgi_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_fastcgi_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_UWSGI_MODULE\n\tbool \"ngx_http_uwsgi_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_uwsgi_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_SCGI_MODULE\n\tbool \"ngx_http_scgi_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_scgi_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_MEMCACHED_MODULE\n\tbool \"ngx_http_memcached_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_memcached_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_LIMIT_CONN_MODULE\n\tbool \"ngx_http_limit_conn_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_limit_conn_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_LIMIT_REQ_MODULE\n\tbool \"ngx_http_limit_req_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_limit_req_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_EMPTY_GIF_MODULE\n\tbool \"ngx_http_empty_gif_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_empty_gif_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_BROWSER_MODULE\n\tbool \"ngx_http_browser_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_browser_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_UPSTREAM_IP_HASH_MODULE\n\tbool \"ngx_http_upstream_ip_hash_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_upstream_ip_hash_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_UPSTREAM_LEAST_CONN_MODULE\n\tbool \"ngx_http_upstream_least_conn_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_upstream_least_conn_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_UPSTREAM_KEEPALIVE_MODULE\n\tbool \"ngx_http_upstream_keepalive_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_upstream_keepalive_module\n\nconfig BR2_PACKAGE_NGINX_HTTP_UPSTREAM_RANDOM_MODULE\n\tbool \"ngx_http_upstream_random_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_http_upstream_random_module\n\nendif #BR2_PACKAGE_NGINX_HTTP\n\nconfig BR2_PACKAGE_NGINX_MAIL\n\tbool \"mail proxy modules\"\n\nif BR2_PACKAGE_NGINX_MAIL\n\nconfig BR2_PACKAGE_NGINX_MAIL_SSL_MODULE\n\tbool \"ngx_mail_ssl_module\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Enable ngx_mail_ssl_module\n\nconfig BR2_PACKAGE_NGINX_MAIL_POP3_MODULE\n\tbool \"ngx_mail_pop3_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_mail_pop3_module\n\nconfig BR2_PACKAGE_NGINX_MAIL_IMAP_MODULE\n\tbool \"ngx_mail_imap_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_mail_imap_module\n\nconfig BR2_PACKAGE_NGINX_MAIL_SMTP_MODULE\n\tbool \"ngx_mail_smtp_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_mail_smtp_module\n\nendif #BR2_PACKAGE_NGINX_MAIL\n\nconfig BR2_PACKAGE_NGINX_STREAM\n\tbool \"stream proxy modules\"\n\nif BR2_PACKAGE_NGINX_STREAM\n\nconfig BR2_PACKAGE_NGINX_STREAM_REALIP_MODULE\n\tbool \"ngx_stream_realip_module\"\n\thelp\n\t  Enable ngx_stream_realip_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_SET_MODULE\n\tbool \"ngx_stream_set_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_stream_set_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_SSL_MODULE\n\tbool \"ngx_stream_ssl_module\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Enable ngx_stream_ssl_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_GEOIP_MODULE\n\tbool \"ngx_stream_geoip_module\"\n\tselect BR2_PACKAGE_GEOIP\n\thelp\n\t  Enable ngx_stream_geoip_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_SSL_PREREAD_MODULE\n\tbool \"ngx_stream_ssl_preread_module\"\n\thelp\n\t  Enable ngx_stream_ssl_preread_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_LIMIT_CONN_MODULE\n\tbool \"ngx_stream_limit_conn_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_stream_limit_conn_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_ACCESS_MODULE\n\tbool \"ngx_stream_access_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_stream_access_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_GEO_MODULE\n\tbool \"ngx_stream_geo_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_stream_geo_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_MAP_MODULE\n\tbool \"ngx_stream_map_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_stream_map_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_SPLIT_CLIENTS_MODULE\n\tbool \"ngx_stream_split_clients_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_stream_split_clients_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_RETURN_MODULE\n\tbool \"ngx_stream_return_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_stream_return_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_UPSTREAM_HASH_MODULE\n\tbool \"ngx_stream_upstream_hash_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_stream_upstream_hash_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_UPSTREAM_LEAST_CONN_MODULE\n\tbool \"ngx_stream_upstream_least_conn_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_stream_upstream_least_conn_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_UPSTREAM_RANDOM_MODULE\n\tbool \"ngx_stream_upstream_random_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_stream_upstream_random_module\n\nconfig BR2_PACKAGE_NGINX_STREAM_UPSTREAM_ZONE_MODULE\n\tbool \"ngx_stream_upstream_zone_module\"\n\tdefault y\n\thelp\n\t  Enable ngx_stream_upstream_zone_module\n\nendif #BR2_PACKAGE_NGINX_STREAM\n\nconfig BR2_PACKAGE_NGINX_DEBUG\n\tbool \"debug logging\"\n\thelp\n\t  Enable debug logging. The debug level should be set with\n\t  the error_log directive. For example\n\n\t  error_log /var/log/nginx/error.log debug;\n\ncomment \"misc. modules\"\n\nconfig BR2_PACKAGE_NGINX_SELECT_MODULE\n\tbool \"ngx_select_module\"\n\thelp\n\t  Enable ngx_select_module\n\nconfig BR2_PACKAGE_NGINX_POLL_MODULE\n\tbool \"ngx_poll_module\"\n\thelp\n\t  Enable ngx_poll_module\n\nconfig BR2_PACKAGE_NGINX_ADD_MODULES\n\tstring \"additional modules\"\n\thelp\n\t  Space separated list of urls of the additional modules\n\nendif\n"
  },
  {
    "path": "package/nginx/S50nginx",
    "content": "#!/bin/sh\n#\n# Start/stop nginx\n#\n\nNGINX=/usr/sbin/nginx\nPIDFILE=/var/run/nginx.pid\n\ncase \"$1\" in\n  start)\n\techo \"Starting nginx...\"\n\tmkdir -p /var/log/nginx /var/cache/nginx\n\tstart-stop-daemon -S -x \"$NGINX\" -p \"$PIDFILE\"\n\t;;\n  stop)\n\techo \"Stopping nginx...\"\n\tstart-stop-daemon -K -x \"$NGINX\" -p \"$PIDFILE\" -o\n\t;;\n  reload|force-reload)\n\techo \"Reloading nginx configuration...\"\n\t\"$NGINX\" -s reload\n\t;;\n  restart)\n\t\"$0\" stop\n\tsleep 1 # Prevent race condition: ensure nginx stops before start.\n\t\"$0\" start\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart|reload|force-reload}\"\n\texit 1\nesac\n"
  },
  {
    "path": "package/nginx/nginx.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  e462e11533d5c30baa05df7652160ff5979591d291736cfa5edb9fd2edb48c49  nginx-1.20.1.tar.gz\n# License files, locally calculated\nsha256  b57270c1f73eb6624b38b2d0a1affcec56b21fab39efbf8c837428f05cef1d73  LICENSE\n"
  },
  {
    "path": "package/nginx/nginx.logrotate",
    "content": "/var/log/nginx/*log {\n\tmissingok\n\tcreate 640 http log\n\tsharedscripts\n\tcompress\n\tpostrotate\n\t\ttest ! -r /var/run/nginx.pid || kill -USR1 `cat /var/run/nginx.pid`\n\tendscript\n}\n"
  },
  {
    "path": "package/nginx/nginx.mk",
    "content": "################################################################################\n#\n# nginx\n#\n################################################################################\n\nNGINX_VERSION = 1.20.1\nNGINX_SITE = http://nginx.org/download\nNGINX_LICENSE = BSD-2-Clause\nNGINX_LICENSE_FILES = LICENSE\nNGINX_CPE_ID_VENDOR = nginx\nNGINX_DEPENDENCIES = \\\n\thost-pkgconf \\\n\t$(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt)\n\nNGINX_CONF_OPTS = \\\n\t--crossbuild=Linux::$(BR2_ARCH) \\\n\t--with-cc=\"$(TARGET_CC)\" \\\n\t--with-cpp=\"$(TARGET_CC)\" \\\n\t--with-ld-opt=\"$(TARGET_LDFLAGS)\"\n\n# www-data user and group are used for nginx. Because these user and group\n# are already set by buildroot, it is not necessary to redefine them.\n# See system/skeleton/etc/passwd\n#   username: www-data    uid: 33\n#   groupname: www-data   gid: 33\n#\n# So, we just need to create the directories used by nginx with the right\n# ownership.\ndefine NGINX_PERMISSIONS\n\t/var/lib/nginx d 755 33 33 - - - - -\nendef\n\n# disable external libatomic_ops because its detection fails.\nNGINX_CONF_ENV += \\\n\tngx_force_c_compiler=yes \\\n\tngx_force_c99_have_variadic_macros=yes \\\n\tngx_force_gcc_have_variadic_macros=yes \\\n\tngx_force_gcc_have_atomic=yes \\\n\tngx_force_have_epoll=yes \\\n\tngx_force_have_sendfile=yes \\\n\tngx_force_have_sendfile64=yes \\\n\tngx_force_have_pr_set_dumpable=yes \\\n\tngx_force_have_timer_event=yes \\\n\tngx_force_have_map_anon=yes \\\n\tngx_force_have_map_devzero=yes \\\n\tngx_force_have_sysvshm=yes \\\n\tngx_force_have_posix_sem=yes\n\n# prefix: nginx root configuration location\nNGINX_CONF_OPTS += \\\n\t--force-endianness=$(call qstrip,$(call LOWERCASE,$(BR2_ENDIAN))) \\\n\t--prefix=/usr \\\n\t--conf-path=/etc/nginx/nginx.conf \\\n\t--sbin-path=/usr/sbin/nginx \\\n\t--pid-path=/run/nginx.pid \\\n\t--lock-path=/run/lock/nginx.lock \\\n\t--user=www-data \\\n\t--group=www-data \\\n\t--error-log-path=/var/log/nginx/error.log \\\n\t--http-log-path=/var/log/nginx/access.log \\\n\t--http-client-body-temp-path=/var/cache/nginx/client-body \\\n\t--http-proxy-temp-path=/var/cache/nginx/proxy \\\n\t--http-fastcgi-temp-path=/var/cache/nginx/fastcgi \\\n\t--http-scgi-temp-path=/var/cache/nginx/scgi \\\n\t--http-uwsgi-temp-path=/var/cache/nginx/uwsgi\n\nNGINX_CONF_OPTS += \\\n\t$(if $(BR2_PACKAGE_NGINX_FILE_AIO),--with-file-aio) \\\n\t$(if $(BR2_PACKAGE_NGINX_THREADS),--with-threads)\n\nifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y)\nNGINX_DEPENDENCIES += libatomic_ops\nNGINX_CONF_OPTS += --with-libatomic\nNGINX_CONF_ENV += ngx_force_have_libatomic=yes\nifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)\nNGINX_CFLAGS += \"-DAO_NO_SPARC_V9\"\nendif\nelse\nNGINX_CONF_ENV += ngx_force_have_libatomic=no\nendif\n\nifeq ($(BR2_PACKAGE_PCRE),y)\nNGINX_DEPENDENCIES += pcre\nNGINX_CONF_OPTS += --with-pcre\nelse\nNGINX_CONF_OPTS += --without-pcre\nendif\n\n# modules disabled or not activated because of missing dependencies:\n# - google_perftools  (googleperftools)\n# - http_perl_module  (host-perl)\n# - pcre-jit          (want to rebuild pcre)\n\n# Notes:\n# * Feature/module option are *not* symetric.\n#   If a feature is on by default, only its --without-xxx option exists;\n#   if a feature is off by default, only its --with-xxx option exists.\n# * The configure script fails if unknown options are passed on the command\n#   line.\n\n# misc. modules\nNGINX_CONF_OPTS += \\\n\t$(if $(BR2_PACKAGE_NGINX_SELECT_MODULE),--with-select_module,--without-select_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_POLL_MODULE),--with-poll_module,--without-poll_module)\n\nifneq ($(BR2_PACKAGE_NGINX_ADD_MODULES),)\nNGINX_CONF_OPTS += \\\n\t$(addprefix --add-module=,$(call qstrip,$(BR2_PACKAGE_NGINX_ADD_MODULES)))\nendif\n\n# http server modules\nifeq ($(BR2_PACKAGE_NGINX_HTTP),y)\nifeq ($(BR2_PACKAGE_NGINX_HTTP_CACHE),y)\nNGINX_DEPENDENCIES += openssl\nelse\nNGINX_CONF_OPTS += --without-http-cache\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_HTTP_V2_MODULE),y)\nNGINX_DEPENDENCIES += zlib\nNGINX_CONF_OPTS += --with-http_v2_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_HTTP_SSL_MODULE),y)\nNGINX_DEPENDENCIES += openssl\nNGINX_CONF_OPTS += --with-http_ssl_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_HTTP_XSLT_MODULE),y)\nNGINX_DEPENDENCIES += libxml2 libxslt\nNGINX_CONF_OPTS += --with-http_xslt_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_HTTP_IMAGE_FILTER_MODULE),y)\nNGINX_DEPENDENCIES += gd jpeg libpng\nNGINX_CONF_OPTS += --with-http_image_filter_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_HTTP_GEOIP_MODULE),y)\nNGINX_DEPENDENCIES += geoip\nNGINX_CONF_OPTS += --with-http_geoip_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_HTTP_GUNZIP_MODULE),y)\nNGINX_DEPENDENCIES += zlib\nNGINX_CONF_OPTS += --with-http_gunzip_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_HTTP_GZIP_STATIC_MODULE),y)\nNGINX_DEPENDENCIES += zlib\nNGINX_CONF_OPTS += --with-http_gzip_static_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_HTTP_SECURE_LINK_MODULE),y)\nNGINX_DEPENDENCIES += openssl\nNGINX_CONF_OPTS += --with-http_secure_link_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_HTTP_GZIP_MODULE),y)\nNGINX_DEPENDENCIES += zlib\nelse\nNGINX_CONF_OPTS += --without-http_gzip_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_HTTP_REWRITE_MODULE),y)\nNGINX_DEPENDENCIES += pcre\nelse\nNGINX_CONF_OPTS += --without-http_rewrite_module\nendif\n\nNGINX_CONF_OPTS += \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_REALIP_MODULE),--with-http_realip_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_ADDITION_MODULE),--with-http_addition_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_SUB_MODULE),--with-http_sub_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_DAV_MODULE),--with-http_dav_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_FLV_MODULE),--with-http_flv_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_MP4_MODULE),--with-http_mp4_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_AUTH_REQUEST_MODULE),--with-http_auth_request_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_RANDOM_INDEX_MODULE),--with-http_random_index_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_DEGRADATION_MODULE),--with-http_degradation_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_SLICE_MODULE),--with-http_slice_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_STUB_STATUS_MODULE),--with-http_stub_status_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_CHARSET_MODULE),,--without-http_charset_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_SSI_MODULE),,--without-http_ssi_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_USERID_MODULE),,--without-http_userid_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_ACCESS_MODULE),,--without-http_access_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_AUTH_BASIC_MODULE),,--without-http_auth_basic_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_AUTOINDEX_MODULE),,--without-http_autoindex_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_GEO_MODULE),,--without-http_geo_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_MAP_MODULE),,--without-http_map_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_SPLIT_CLIENTS_MODULE),,--without-http_split_clients_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_REFERER_MODULE),,--without-http_referer_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_PROXY_MODULE),,--without-http_proxy_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_FASTCGI_MODULE),,--without-http_fastcgi_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_UWSGI_MODULE),,--without-http_uwsgi_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_SCGI_MODULE),,--without-http_scgi_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_MEMCACHED_MODULE),,--without-http_memcached_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_LIMIT_CONN_MODULE),,--without-http_limit_conn_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_LIMIT_REQ_MODULE),,--without-http_limit_req_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_EMPTY_GIF_MODULE),,--without-http_empty_gif_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_BROWSER_MODULE),,--without-http_browser_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_UPSTREAM_IP_HASH_MODULE),,--without-http_upstream_ip_hash_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_UPSTREAM_LEAST_CONN_MODULE),,--without-http_upstream_least_conn_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_UPSTREAM_RANDOM_MODULE),,--without-http_upstream_random_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_HTTP_UPSTREAM_KEEPALIVE_MODULE),,--without-http_upstream_keepalive_module)\n\nelse # !BR2_PACKAGE_NGINX_HTTP\nNGINX_CONF_OPTS += --without-http\nendif # BR2_PACKAGE_NGINX_HTTP\n\n# mail modules\nifeq ($(BR2_PACKAGE_NGINX_MAIL),y)\nNGINX_CONF_OPTS += --with-mail\n\nifeq ($(BR2_PACKAGE_NGINX_MAIL_SSL_MODULE),y)\nNGINX_DEPENDENCIES += openssl\nNGINX_CONF_OPTS += --with-mail_ssl_module\nendif\n\nNGINX_CONF_OPTS += \\\n\t$(if $(BR2_PACKAGE_NGINX_MAIL_POP3_MODULE),,--without-mail_pop3_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_MAIL_IMAP_MODULE),,--without-mail_imap_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_MAIL_SMTP_MODULE),,--without-mail_smtp_module)\n\nendif # BR2_PACKAGE_NGINX_MAIL\n\n# stream modules\nifeq ($(BR2_PACKAGE_NGINX_STREAM),y)\nNGINX_CONF_OPTS += --with-stream\n\nifeq ($(BR2_PACKAGE_NGINX_STREAM_REALIP_MODULE),y)\nNGINX_CONF_OPTS += --with-stream_realip_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_STREAM_SET_MODULE),)\nNGINX_CONF_OPTS += --without-stream_set_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_STREAM_SSL_MODULE),y)\nNGINX_DEPENDENCIES += openssl\nNGINX_CONF_OPTS += --with-stream_ssl_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_STREAM_GEOIP_MODULE),y)\nNGINX_DEPENDENCIES += geoip\nNGINX_CONF_OPTS += --with-stream_geoip_module\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_STREAM_SSL_PREREAD_MODULE),y)\nNGINX_CONF_OPTS += --with-stream_ssl_preread_module\nendif\n\nNGINX_CONF_OPTS += \\\n\t$(if $(BR2_PACKAGE_NGINX_STREAM_LIMIT_CONN_MODULE),,--without-stream_limit_conn_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_STREAM_ACCESS_MODULE),,--without-stream_access_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_STREAM_GEO_MODULE),,--without-stream_geo_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_STREAM_MAP_MODULE),,--without-stream_map_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_STREAM_SPLIT_CLIENTS_MODULE),,--without-stream_split_clients_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_STREAM_RETURN_MODULE),,--without-stream_return_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_STREAM_UPSTREAM_HASH_MODULE),,--without-stream_upstream_hash_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_STREAM_UPSTREAM_LEAST_CONN_MODULE),,--without-stream_upstream_least_conn_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_STREAM_UPSTREAM_RANDOM_MODULE),,--without-stream_upstream_random_module) \\\n\t$(if $(BR2_PACKAGE_NGINX_STREAM_UPSTREAM_ZONE_MODULE),,--without-stream_upstream_zone_module)\n\nendif # BR2_PACKAGE_NGINX_STREAM\n\n# external modules\nifeq ($(BR2_PACKAGE_NGINX_UPLOAD),y)\nNGINX_CONF_OPTS += $(addprefix --add-module=,$(NGINX_UPLOAD_DIR))\nNGINX_DEPENDENCIES += nginx-upload\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_DAV_EXT),y)\nNGINX_CONF_OPTS += --add-module=$(NGINX_DAV_EXT_DIR)\nNGINX_DEPENDENCIES += nginx-dav-ext\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_NAXSI),y)\nNGINX_DEPENDENCIES += nginx-naxsi\nNGINX_CONF_OPTS += --add-module=$(NGINX_NAXSI_DIR)/naxsi_src\nendif\n\nifeq ($(BR2_PACKAGE_NGINX_MODSECURITY),y)\nNGINX_DEPENDENCIES += nginx-modsecurity\nNGINX_CONF_OPTS += --add-module=$(NGINX_MODSECURITY_DIR)\nendif\n\n# Debug logging\nNGINX_CONF_OPTS += $(if $(BR2_PACKAGE_NGINX_DEBUG),--with-debug)\n\ndefine NGINX_DISABLE_WERROR\n\t$(SED) 's/-Werror//g' -i $(@D)/auto/cc/*\nendef\n\nNGINX_PRE_CONFIGURE_HOOKS += NGINX_DISABLE_WERROR\n\ndefine NGINX_CONFIGURE_CMDS\n\tcd $(@D) ; $(NGINX_CONF_ENV) \\\n\t\tPKG_CONFIG=\"$(PKG_CONFIG_HOST_BINARY)\" \\\n\t\t./configure $(NGINX_CONF_OPTS) \\\n\t\t\t--with-cc-opt=\"$(TARGET_CFLAGS) $(NGINX_CFLAGS)\"\nendef\n\ndefine NGINX_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine NGINX_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\n\t$(RM) $(TARGET_DIR)/usr/sbin/nginx.old\n\t$(INSTALL) -D -m 0664 package/nginx/nginx.logrotate \\\n\t\t$(TARGET_DIR)/etc/logrotate.d/nginx\nendef\n\ndefine NGINX_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/nginx/nginx.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/nginx.service\nendef\n\ndefine NGINX_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/nginx/S50nginx \\\n\t\t$(TARGET_DIR)/etc/init.d/S50nginx\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/nginx/nginx.service",
    "content": "[Unit]\nDescription=A high performance web server and a reverse proxy server\nAfter=syslog.target network.target\n\n[Service]\nType=forking\nLogsDirectory=nginx\nCacheDirectory=nginx\nPIDFile=/run/nginx.pid\nExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'\nExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'\nExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload\nExecStop=/usr/sbin/nginx -s quit\nPrivateDevices=yes\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/nginx-dav-ext/Config.in",
    "content": "config BR2_PACKAGE_NGINX_DAV_EXT\n\tbool \"nginx-dav-ext\"\n\tdepends on BR2_PACKAGE_NGINX_HTTP_DAV_MODULE\n\tselect BR2_PACKAGE_LIBXSLT\n\thelp\n\t  NGINX WebDAV missing commands support (PROPFIND & OPTIONS).\n\n\t  https://github.com/arut/nginx-dav-ext-module\n"
  },
  {
    "path": "package/nginx-dav-ext/nginx-dav-ext.hash",
    "content": "# Locally computed\nsha256 d2499d94d82d4e4eac8425d799e52883131ae86a956524040ff2fd230ef9f859  nginx-dav-ext-3.0.0.tar.gz\nsha256 e377bb81e5024682a66438306e8ff9541d843d3831e480aec2f58eb8d83e48de  LICENSE\n"
  },
  {
    "path": "package/nginx-dav-ext/nginx-dav-ext.mk",
    "content": "################################################################################\n#\n# nginx-dav-ext\n#\n################################################################################\n\nNGINX_DAV_EXT_VERSION = 3.0.0\nNGINX_DAV_EXT_SITE = $(call github,arut,nginx-dav-ext-module,v$(NGINX_DAV_EXT_VERSION))\nNGINX_DAV_EXT_LICENSE = BSD-2-Clause\nNGINX_DAV_EXT_LICENSE_FILES = LICENSE\nNGINX_DAV_EXT_DEPENDENCIES = libxslt\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/nginx-modsecurity/0001-config-use-pkg-config.patch",
    "content": "From 2907dcd628242eb29920321fb3a744915d11888f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 26 Jul 2021 08:29:21 +0200\nSubject: [PATCH] config: use pkg-config\n\nChange to using pkg-config to find the path to modsecurity and its\ndependencies.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n config | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/config b/config\nindex c6e7467..e20190f 100644\n--- a/config\n+++ b/config\n@@ -50,7 +50,7 @@ END\n else\n     # auto-discovery\n     ngx_feature=\"ModSecurity library\"\n-    ngx_feature_libs=\"-lmodsecurity\"\n+    ngx_feature_libs=\"$(${PKG_CONFIG:=pkg-config} --libs modsecurity)\"\n \n     . auto/feature\n \n-- \n2.30.2\n\n"
  },
  {
    "path": "package/nginx-modsecurity/Config.in",
    "content": "config BR2_PACKAGE_NGINX_MODSECURITY\n\tbool \"nginx-modsecurity\"\n\tdepends on BR2_PACKAGE_NGINX_HTTP\n\tdepends on BR2_INSTALL_LIBSTDCPP # libmodsecurity\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libmodsecurity\n\tselect BR2_PACKAGE_LIBMODSECURITY\n\thelp\n\t  The ModSecurity-nginx connector is the connection\n\t  point between nginx and libmodsecurity\n\t  (ModSecurity v3).\n\n\t  https://github.com/SpiderLabs/ModSecurity-nginx\n\ncomment \"nginx-modsecurity needs a toolchain w/ C++, threads\"\n\tdepends on BR2_PACKAGE_NGINX_HTTP\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/nginx-modsecurity/nginx-modsecurity.hash",
    "content": "# From https://github.com/SpiderLabs/ModSecurity-nginx/releases/download/v1.0.2/modsecurity-nginx-v1.0.2.tar.gz.sha256\nsha256  41a6660c50508c60df59f8f09c444d18ef8112a4c118cdc791a3992390b78c32  modsecurity-nginx-v1.0.2.tar.gz\n# Localy calculated\nsha256  c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4  LICENSE\n"
  },
  {
    "path": "package/nginx-modsecurity/nginx-modsecurity.mk",
    "content": "################################################################################\n#\n# nginx-modsecurity\n#\n################################################################################\n\nNGINX_MODSECURITY_VERSION = 1.0.2\nNGINX_MODSECURITY_SOURCE = modsecurity-nginx-v$(NGINX_MODSECURITY_VERSION).tar.gz\nNGINX_MODSECURITY_SITE = https://github.com/SpiderLabs/ModSecurity-nginx/releases/download/v$(NGINX_MODSECURITY_VERSION)\nNGINX_MODSECURITY_LICENSE = Apache-2.0\nNGINX_MODSECURITY_LICENSE_FILES = LICENSE\nNGINX_MODSECURITY_DEPENDENCIES = libmodsecurity\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/nginx-naxsi/0001-naxsi_src-naxsi_runtime.c-fix-build-without-x_forwar.patch",
    "content": "From 8ea5218b07f715e9616a846bf305633ef1b3aa2a Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 14 Aug 2021 11:46:08 +0200\nSubject: [PATCH] naxsi_src/naxsi_runtime.c: fix build without x_forwarded_for\n\nx_forwarded_for is not available if realip, geo, geoip or proxy modules\naren't enabled resulting in the following build failure since version\n1.1a and\nhttps://github.com/nbs-system/naxsi/commit/07a056ccd36bc3c5c40dc17991db226cb8cf6241:\n\n/home/buildroot/autobuild/instance-3/output-1/build/nginx-naxsi-1.3/naxsi_src/naxsi_runtime.c: In function 'ngx_http_naxsi_data_parse':\n/home/buildroot/autobuild/instance-3/output-1/build/nginx-naxsi-1.3/naxsi_src/naxsi_runtime.c:2846:20: error: 'ngx_http_headers_in_t' has no member named 'x_forwarded_for'\n   if (r->headers_in.x_forwarded_for.nelts >= 1) {\n                    ^\n\nFixes:\n - http://autobuild.buildroot.org/results/cdbc1536f6b5de3d4c836efa2f0dcaf0cdbb1462\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/nbs-system/naxsi/pull/568]\n---\n naxsi_src/naxsi_runtime.c | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/naxsi_src/naxsi_runtime.c b/naxsi_src/naxsi_runtime.c\nindex 28e0b29..6a723d2 100644\n--- a/naxsi_src/naxsi_runtime.c\n+++ b/naxsi_src/naxsi_runtime.c\n@@ -2842,10 +2842,12 @@ ngx_http_naxsi_data_parse(ngx_http_request_ctx_t* ctx, ngx_http_request_t* r)\n   unsigned int      n = 0;\n   ngx_table_elt_t** h = NULL;\n   ngx_array_t       a;\n+#if (NGX_HTTP_X_FORWARDED_FOR)\n   if (r->headers_in.x_forwarded_for.nelts >= 1) {\n     a = r->headers_in.x_forwarded_for;\n     n = a.nelts;\n   }\n+#endif\n   if (n >= 1)\n     h = a.elts;\n   if (n >= 1) {\n@@ -2879,6 +2881,7 @@ ngx_http_naxsi_update_current_ctx_status(ngx_http_request_ctx_t*    ctx,\n \n   /*cr, sc, cf, ctx*/\n   if (cf->check_rules && ctx->special_scores) {\n+#if (NGX_HTTP_X_FORWARDED_FOR)\n     if (r->headers_in.x_forwarded_for.nelts >= 1) {\n       a = r->headers_in.x_forwarded_for;\n       n = a.nelts;\n@@ -2896,7 +2899,9 @@ ngx_http_naxsi_update_current_ctx_status(ngx_http_request_ctx_t*    ctx,\n         memcpy(ip.data, h[0]->value.data, ip.len);\n         ignore = nx_can_ignore_ip(&ip, cf) || nx_can_ignore_cidr(&ip, cf);\n       }\n-    } else {\n+    } else\n+#endif\n+    {\n       ngx_str_t* ip = &r->connection->addr_text;\n       NX_DEBUG(_debug_whitelist_ignore,\n                NGX_LOG_DEBUG_HTTP,\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/nginx-naxsi/Config.in",
    "content": "config BR2_PACKAGE_NGINX_NAXSI\n\tbool \"nginx-naxsi\"\n\tdepends on BR2_PACKAGE_NGINX_HTTP\n\t# uses pcre, so nginx needs to be built with pcre support\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  NAXSI means Nginx Anti XSS & SQL Injection.\n\n\t  Technically, it is a third party nginx module, available as\n\t  a package for many UNIX-like platforms. This module, by\n\t  default, reads a small subset of simple (and readable) rules\n\t  containing 99% of known patterns involved in website\n\t  vulnerabilities. For example, <, | or drop are not supposed\n\t  to be part of a URI.\n\n\t  Being very simple, those patterns may match legitimate\n\t  queries, it is the Naxsi's administrator duty to add\n\t  specific rules that will whitelist legitimate\n\t  behaviours. The administrator can either add whitelists\n\t  manually by analyzing nginx's error log, or (recommended)\n\t  start the project with an intensive auto-learning phase that\n\t  will automatically generate whitelisting rules regarding a\n\t  website's behaviour.\n\n\t  In short, Naxsi behaves like a DROP-by-default firewall, the\n\t  only task is to add required ACCEPT rules for the target\n\t  website to work properly.\n\n\t  https://github.com/nbs-system/naxsi\n"
  },
  {
    "path": "package/nginx-naxsi/nginx-naxsi.hash",
    "content": "# Locally calculated\nsha256  439c8677372d2597b4360bbcc10bc86490de1fc75695b193ad5df154a214d628  nginx-naxsi-1.3.tar.gz\nsha256  589ed823e9a84c56feb95ac58e7cf384626b9cbf4fda2a907bc36e103de1bad2  LICENSE\nsha256  d0732bc23658db5b9749e3f9cd4fe0f9b3e132b5955adccb08821845fe2a21c8  naxsi_src/ext/libinjection/COPYING\n"
  },
  {
    "path": "package/nginx-naxsi/nginx-naxsi.mk",
    "content": "################################################################################\n#\n# nginx-naxsi\n#\n################################################################################\n\nNGINX_NAXSI_VERSION = 1.3\nNGINX_NAXSI_SITE = $(call github,nbs-system,naxsi,$(NGINX_NAXSI_VERSION))\nNGINX_NAXSI_LICENSE = GPL-3.0, BSD-3-Clause (libinjection)\nNGINX_NAXSI_LICENSE_FILES = LICENSE naxsi_src/ext/libinjection/COPYING\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/nginx-upload/Config.in",
    "content": "config BR2_PACKAGE_NGINX_UPLOAD\n\tbool \"nginx-upload\"\n\tdepends on BR2_PACKAGE_NGINX_HTTP\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  A module for nginx web server for handling file uploads\n\t  using multipart/form-data encoding (RFC 1867).\n\n\t  https://github.com/vkholodkov/nginx-upload-module\n"
  },
  {
    "path": "package/nginx-upload/nginx-upload.hash",
    "content": "#Locally Computed:\nsha256  61ad5bcb67c8f688a4c7a5611311a351049361840b8dfe78be542066f475166e  nginx-upload-4423994c7d8fb491d95867f6af968585d949e7a9.tar.gz\nsha256  825f9684c427e29fd1ab085d5c421a4cbf96a460f3c58884a42c28bfbac5e544  LICENCE\n"
  },
  {
    "path": "package/nginx-upload/nginx-upload.mk",
    "content": "################################################################################\n#\n# nginx-upload\n#\n################################################################################\n\nNGINX_UPLOAD_VERSION = 4423994c7d8fb491d95867f6af968585d949e7a9\nNGINX_UPLOAD_SITE = $(call github,vkholodkov,nginx-upload-module,$(NGINX_UPLOAD_VERSION))\nNGINX_UPLOAD_LICENSE = BSD-3-Clause\nNGINX_UPLOAD_LICENSE_FILES = LICENCE\nNGINX_UPLOAD_DEPENDENCIES = openssl\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ngircd/Config.in",
    "content": "config BR2_PACKAGE_NGIRCD\n\tbool \"ngircd\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Next Generation IRC server deamon.\n\n\t  http://ngircd.barton.de\n"
  },
  {
    "path": "package/ngircd/ngircd.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  55c16fd26009f6fc6a007df4efac87a02e122f680612cda1ce26e17a18d86254  ngircd-26.1.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/ngircd/ngircd.mk",
    "content": "################################################################################\n#\n# ngircd\n#\n################################################################################\n\nNGIRCD_VERSION = 26.1\nNGIRCD_SOURCE = ngircd-$(NGIRCD_VERSION).tar.xz\nNGIRCD_SITE = https://arthur.barton.de/pub/ngircd\nNGIRCD_LICENSE = GPL-2.0+\nNGIRCD_LICENSE_FILES = COPYING\nNGIRCD_CPE_ID_VENDOR = barton\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nNGIRCD_CONF_OPTS += --with-pam=$(STAGING_DIR)/usr\nNGIRCD_DEPENDENCIES += linux-pam\nelse\nNGIRCD_CONF_OPTS += --without-pam\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nNGIRCD_CONF_OPTS += --with-openssl\nNGIRCD_DEPENDENCIES += host-pkgconf openssl\nelse\nNGIRCD_CONF_OPTS += --without-openssl\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nNGIRCD_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr\nNGIRCD_DEPENDENCIES += gnutls\nelse\nNGIRCD_CONF_OPTS += --without-gnutls\nendif\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nNGIRCD_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr\nNGIRCD_DEPENDENCIES += zlib\nelse\nNGIRCD_CONF_OPTS += --without-zlib\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ngrep/0001-Fix-typo-in-configure-in-when-testing-for-use_pcre.patch",
    "content": "From b8b1e9751e1d074af0dd77c2554c1b25fd8f7abe Mon Sep 17 00:00:00 2001\nFrom: Romain Francoise <romain@rfr.io>\nDate: Mon, 1 Jan 2018 18:00:34 +0100\nSubject: [PATCH] Fix typo in configure.in when testing for use_pcre\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/jpr5/ngrep/commit/b8b1e9751e1d074af0dd77c2554c1b25fd8f7abe]\n---\n configure.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.in b/configure.in\nindex cff37e9..06c050a 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -146,7 +146,7 @@ AC_ARG_ENABLE(pcre,\n [ use_pcre=\"$enableval\" ],\n [ use_pcre=\"no\" ])\n \n-if test use_pcre = yes; then\n+if test $use_pcre = yes; then\n   USE_PCRE=\"1\"\n   EXTRA_LIBS=\"$EXTRA_LIBS -lpcre\"\n else\n"
  },
  {
    "path": "package/ngrep/0002-Check-for-libnet_init-in-configure-in.patch",
    "content": "From 0a51c8bc62c7b49b8d67a360daa6b1957256f4f5 Mon Sep 17 00:00:00 2001\nFrom: Romain Francoise <romain@rfr.io>\nDate: Mon, 1 Jan 2018 18:01:13 +0100\nSubject: [PATCH] Check for libnet_init in configure.in\n\nlibnet_init_packet was the old libnet 1.0 function which is now long\ndeprecated.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/jpr5/ngrep/commit/0a51c8bc62c7b49b8d67a360daa6b1957256f4f5]\n---\n configure.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.in b/configure.in\nindex 06c050a..dbef39b 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -174,7 +174,7 @@ dnl\n AC_ARG_ENABLE(tcpkill,\n [  --enable-tcpkill        enable connection killing support (default off)],\n [\n-  AC_CHECK_LIB(net, libnet_init_packet,,echo !!! error: tcpkill feature enabled but no libnet found; exit)\n+  AC_CHECK_LIB(net, libnet_init,,echo !!! error: tcpkill feature enabled but no libnet found; exit)\n   use_tcpkill=\"$enableval\"\n ],\n [ use_tcpkill=\"no\" ])\n"
  },
  {
    "path": "package/ngrep/0003-fix-disable-tcpkill.patch",
    "content": "From e8522284ef326bd9f222e04c4a970ffafa56fba6 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 3 Nov 2018 23:23:36 +0100\nSubject: [PATCH] fix --disable-tcpkill\n\nIf the user uses --disable-tcpkill, build can fail if libnet is not\nfound on the system.\n\nTo fix this, move AC_CHECK_LIB to found libnet outside AC_ARG_ENABLE\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/jpr5/ngrep/pull/15]\n---\n configure.in | 6 ++----\n 1 file changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/configure.in b/configure.in\nindex dbef39b..7c3dd43 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -173,13 +173,11 @@ dnl\n \n AC_ARG_ENABLE(tcpkill,\n [  --enable-tcpkill        enable connection killing support (default off)],\n-[\n-  AC_CHECK_LIB(net, libnet_init,,echo !!! error: tcpkill feature enabled but no libnet found; exit)\n-  use_tcpkill=\"$enableval\"\n-],\n+[ use_tcpkill=\"$enableval\" ],\n [ use_tcpkill=\"no\" ])\n \n if test $use_tcpkill = yes; then\n+  AC_CHECK_LIB(net, libnet_init,,echo !!! error: tcpkill feature enabled but no libnet found; exit)\n   USE_TCPKILL=\"1\"\n   EXTRA_OBJS=\"$EXTRA_OBJS tcpkill.o\"\n   EXTRA_DEFINES=\"$EXTRA_DEFINES $(libnet-config --defines)\"\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/ngrep/Config.in",
    "content": "config BR2_PACKAGE_NGREP\n\tbool \"ngrep\"\n\tselect BR2_PACKAGE_LIBPCAP\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  Network grep.\n\n\t  https://github.com/jpr5/ngrep/\n"
  },
  {
    "path": "package/ngrep/ngrep.hash",
    "content": "# Locally computed:\nsha256  dc4dbe20991cc36bac5e97e99475e2a1522fd88c59ee2e08f813432c04c5fff3  ngrep-1.47.tar.gz\nsha256  d46e593e048e0b9fc803561ed4c283f37a2d5447e4dcfa10cad29b394c2b8b9e  LICENSE\n"
  },
  {
    "path": "package/ngrep/ngrep.mk",
    "content": "################################################################################\n#\n# ngrep\n#\n################################################################################\n\nNGREP_VERSION = 1.47\nNGREP_SITE = $(call github,jpr5,ngrep,$(subst .,_,V$(NGREP_VERSION)))\nNGREP_LICENSE = BSD-4-Clause-like, BSD-3-Clause (tcpkill)\nNGREP_LICENSE_FILES = LICENSE\nNGREP_INSTALL_STAGING = YES\n# We're patching configure.in\nNGREP_AUTORECONF = YES\n\nifeq ($(BR2_STATIC_LIBS),y)\nNGREP_CONF_ENV += LIBS=`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\nendif\n\nNGREP_CONF_OPTS = \\\n\t--with-pcap-includes=$(STAGING_DIR)/usr/include/pcap \\\n\t--enable-pcre \\\n\t--disable-dropprivs \\\n\t--disable-pcap-restart\n\nNGREP_DEPENDENCIES = libpcap pcre\n\nifeq ($(BR2_PACKAGE_LIBNET),y)\nNGREP_DEPENDENCIES += libnet\nNGREP_CONF_OPTS += --enable-tcpkill\nelse\nNGREP_CONF_OPTS += --disable-tcpkill\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nilfs-utils/0001-nilfs_cleanerd-link-dynamically.patch",
    "content": "From 7888f8f24ec08cdfd51929cde4e177396d7504e7 Mon Sep 17 00:00:00 2001\nFrom: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>\nDate: Thu, 28 Dec 2017 20:22:00 +0100\nSubject: [PATCH] nilfs_cleanerd: link dynamically\n\nWhen nilfs_cleanerd does not run due to shared object problems,\nnilfs2 filesystems may run out of space soon.\nThis logic that justified linking nilfs_cleanerd statically\ndoes IMO not apply to embedded systems built by buildroot.\nThis commit therefore drops the static linking.\n\nSigned-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>\n---\n sbin/cleanerd/Makefile.am | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/sbin/cleanerd/Makefile.am b/sbin/cleanerd/Makefile.am\nindex 3a5335d..06f0847 100644\n--- a/sbin/cleanerd/Makefile.am\n+++ b/sbin/cleanerd/Makefile.am\n@@ -9,8 +9,6 @@ nilfs_cleanerd_SOURCES = cleanerd.c cldconfig.c \\\n nilfs_cleanerd_CFLAGS = -Wall\n nilfs_cleanerd_CPPFLAGS = -I$(top_srcdir)/include \\\n \t-DSYSCONFDIR=\\\"$(sysconfdir)\\\"\n-# Use -static option to make nilfs_cleanerd self-contained.\n-nilfs_cleanerd_LDFLAGS = -static\n \n dist_sysconf_DATA = nilfs_cleanerd.conf\n \n-- \n1.8.5.rc3\n\n"
  },
  {
    "path": "package/nilfs-utils/Config.in",
    "content": "config BR2_PACKAGE_NILFS_UTILS\n\tbool \"nilfs-utils\"\n\tdepends on BR2_USE_MMU # util-linux libmount, libblkid\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # sem_open()\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBMOUNT\n\tselect BR2_PACKAGE_UTIL_LINUX\n\thelp\n\t  Tools for creating and managing NILFS2 filesystems.\n\n\t  https://nilfs.sourceforge.io\n\ncomment \"nilfs-utils needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/nilfs-utils/nilfs-utils.hash",
    "content": "# Locally calculated after checking pgp signature\nsha512\t3232390581f63de5ebe7b461b178a40dfbdaa4bc6aa96b218ea8182c5bf81b162a1e632a1c21d9f1e89fdba9393b4e268e001c335a99ce22f645a62ae3154783  nilfs-utils-2.2.8.tar.bz2\nsha512\t4fc92d3998910acb108f81b1aee70a55a572b661a2766d0e57a55e48e2b737eea41415356cbd62593f26aec5797ab9fbb40211d7782b5834b4855ff1ce6ad5f7  COPYING\n"
  },
  {
    "path": "package/nilfs-utils/nilfs-utils.mk",
    "content": "################################################################################\n#\n# nilfs-utils\n#\n################################################################################\n\nNILFS_UTILS_VERSION = 2.2.8\nNILFS_UTILS_SOURCE = nilfs-utils-$(NILFS_UTILS_VERSION).tar.bz2\nNILFS_UTILS_SITE = https://nilfs.sourceforge.io/download\nNILFS_UTILS_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries)\nNILFS_UTILS_LICENSE_FILES = COPYING\n\n# need libuuid, libblkid, libmount\nNILFS_UTILS_DEPENDENCIES = util-linux\n\n# We're patching sbin/cleanerd/Makefile.am\nNILFS_UTILS_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nNILFS_UTILS_CONF_OPTS += --with-selinux\nNILFS_UTILS_DEPENDENCIES += libselinux\nelse\nNILFS_UTILS_CONF_OPTS += --without-selinux\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ninja/ninja.hash",
    "content": "# Locally generated\nsha256  ce35865411f0490368a8fc383f29071de6690cbadc27704734978221f25e2bed  ninja-1.10.2.tar.gz\nsha256  eb7e9ab9690124c5c9f42bdc81383d886a3dede26345b6ed15bbad7caf81f7ea  COPYING\n"
  },
  {
    "path": "package/ninja/ninja.mk",
    "content": "################################################################################\n#\n# ninja\n#\n################################################################################\n\nNINJA_VERSION = 1.10.2\nNINJA_SITE = $(call github,ninja-build,ninja,v$(NINJA_VERSION))\nNINJA_LICENSE = Apache-2.0\nNINJA_LICENSE_FILES = COPYING\n\ndefine HOST_NINJA_INSTALL_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/ninja $(HOST_DIR)/bin/ninja\nendef\n\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/nload/Config.in",
    "content": "comment \"nload needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_NLOAD\n\tbool \"nload\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  nload is a console application which monitors network traffic\n\t  and bandwidth usage in real time. It visualizes the in- and\n\t  outgoing traffic using two graphs and provides additional info\n\t  like total amount of transfered data and min/max network\n\t  usage.\n\n\t  http://www.roland-riegel.de/nload/\n"
  },
  {
    "path": "package/nload/nload.hash",
    "content": "# From https://sourceforge.net/projects/nload/files/nload/0.7.4/\nmd5\t3c733c528f244ca5a4f76bf185729c39\tnload-0.7.4.tar.gz\nsha1\tbb0a168c93c588ad4fd5e3a653b3620b79ada1e8\tnload-0.7.4.tar.gz\n# Locally computed\nsha256  67f82e045cf7acfef853ea0f426575a8359161a0a325e19f02b529a87c4b6c34  COPYING\n"
  },
  {
    "path": "package/nload/nload.mk",
    "content": "################################################################################\n#\n# nload\n#\n################################################################################\n\nNLOAD_VERSION = 0.7.4\nNLOAD_SITE = http://www.roland-riegel.de/nload\nNLOAD_DEPENDENCIES = ncurses\nNLOAD_LICENSE = GPL-2.0+\nNLOAD_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nmap/0001-libdnet-wrapper-configure.patch",
    "content": "libdnet: always build a static library\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff --git a/libdnet-stripped/configure.gnu b/libdnet-stripped/configure.gnu\n--- /dev/null\n+++ b/libdnet-stripped/configure.gnu\n@@ -0,0 +1,3 @@\n+#!/bin/sh\n+\n+exec \"${0%.gnu}\" \"${@}\" --enable-static --disable-shared\n"
  },
  {
    "path": "package/nmap/Config.in",
    "content": "config BR2_PACKAGE_NMAP\n\tbool \"nmap\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBLINEAR\n\tselect BR2_PACKAGE_LIBPCAP\n\tselect BR2_PACKAGE_NMAP_NMAP \\\n\t       if !BR2_PACKAGE_NMAP_NCAT && !BR2_PACKAGE_NMAP_NPING\n\thelp\n\t  Nmap (\"Network Mapper\") is a free and open source (license)\n\t  utility for network discovery and security auditing.\n\n\t  http://nmap.org\n\nif  BR2_PACKAGE_NMAP\n\nconfig BR2_PACKAGE_NMAP_NCAT\n\tbool \"install ncat\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  Ncat is a feature-packed networking utility which reads and\n\t  writes data across networks from the command line. Ncat was\n\t  written for the Nmap Project as a much-improved\n\t  reimplementation of the venerable Netcat.\n\n\t  If symlink to \"nc\" is installed if neither netcat or\n\t  netcat-openbsd is selected.\n\ncomment \"a symlink from ncat to 'nc' will be installed\"\n\tdepends on BR2_PACKAGE_NMAP_NCAT\n\tdepends on !BR2_PACKAGE_NETCAT\n\tdepends on !BR2_PACKAGE_NETCAT_OPENBSD\n\nconfig BR2_PACKAGE_NMAP_NMAP\n\tbool \"install nmap\"\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  This option installs 'nmap' itself.\n\nconfig BR2_PACKAGE_NMAP_NPING\n\tbool \"install nping\"\n\thelp\n\t  This option installs the 'nping' tool.\n\nendif\n\ncomment \"nmap-nmap needs a toolchain w/ C++, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS)\n"
  },
  {
    "path": "package/nmap/nmap.hash",
    "content": "# From https://nmap.org/dist/sigs/nmap-7.92.tar.bz2.digest.txt (lowercase)\nsha256  a5479f2f8a6b0b2516767d2f7189c386c1dc858d997167d7ec5cfc798c7571a1  nmap-7.92.tar.bz2\n\n# Locally calculated\nsha256  133794301a764dfe8a60e38601e56657b7113e0337b452189725bbbed58baea0  LICENSE\n"
  },
  {
    "path": "package/nmap/nmap.mk",
    "content": "################################################################################\n#\n# nmap\n#\n################################################################################\n\nNMAP_VERSION = 7.92\nNMAP_SITE = https://nmap.org/dist\nNMAP_SOURCE = nmap-$(NMAP_VERSION).tar.bz2\nNMAP_DEPENDENCIES = liblinear libpcap\nNMAP_CONF_OPTS = --without-liblua --without-zenmap \\\n\t--with-libdnet=included\nNMAP_LICENSE = nmap license\nNMAP_LICENSE_FILES = LICENSE\nNMAP_CPE_ID_VENDOR = nmap\nNMAP_SELINUX_MODULES = netutils\n\n# needed by libpcap\nNMAP_LIBS_FOR_STATIC_LINK += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\n\nifeq ($(BR2_STATIC_LIBS),y)\nNMAP_CONF_ENV += LIBS=\"$(NMAP_LIBS_FOR_STATIC_LINK)\"\nendif\n\n# for 0001-libdnet-wrapper-configure.patch\ndefine NMAP_WRAPPER_EXEC\n\tchmod +x $(@D)/libdnet-stripped/configure.gnu\nendef\nNMAP_POST_PATCH_HOOKS += NMAP_WRAPPER_EXEC\n\nifeq ($(BR2_PACKAGE_LIBSSH2),y)\nNMAP_CONF_OPTS += --with-libssh2=\"$(STAGING_DIR)/usr\"\nNMAP_DEPENDENCIES += libssh2\nNMAP_LIBS_FOR_STATIC_LINK += `$(PKG_CONFIG_HOST_BINARY) --libs libssh2`\nelse\nNMAP_CONF_OPTS += --without-libssh2\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nNMAP_CONF_OPTS += --with-openssl=\"$(STAGING_DIR)/usr\"\nNMAP_DEPENDENCIES += host-pkgconf openssl\nNMAP_LIBS_FOR_STATIC_LINK += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nelse\nNMAP_CONF_OPTS += --without-openssl\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nNMAP_CONF_OPTS += --with-libz=\"$(STAGING_DIR)/usr\"\nNMAP_DEPENDENCIES += zlib\nelse\nNMAP_CONF_OPTS += --without-libz\nendif\n\nNMAP_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR)\n\nifeq ($(BR2_PACKAGE_NMAP_NCAT),y)\nNMAP_CONF_OPTS += --with-ncat\nNMAP_MAKE_OPTS += build-ncat\nNMAP_INSTALL_TARGET_OPTS += install-ncat\nelse\nNMAP_CONF_OPTS += --without-ncat\nendif\n\nifeq ($(BR2_PACKAGE_NMAP_NMAP),y)\nNMAP_DEPENDENCIES += pcre\nNMAP_CONF_OPTS += --with-libpcre=\"$(STAGING_DIR)/usr\"\nNMAP_MAKE_OPTS += nmap\nNMAP_INSTALL_TARGET_OPTS += install-nmap\nendif\n\nifeq ($(BR2_PACKAGE_NMAP_NPING),y)\nNMAP_CONF_OPTS += --with-nping\nNMAP_MAKE_OPTS += build-nping\nNMAP_INSTALL_TARGET_OPTS += install-nping\nelse\nNMAP_CONF_OPTS += --without-nping\nendif\n\n# Add a symlink to \"nc\" if none of the competing netcats is selected\nifeq ($(BR2_PACKAGE_NMAP_NCAT):$(BR2_PACKAGE_NETCAT)$(BR2_PACKAGE_NETCAT_OPENBSD),y:)\ndefine NMAP_INSTALL_NCAT_SYMLINK\n\tln -fs ncat $(TARGET_DIR)/usr/bin/nc\nendef\nNMAP_POST_INSTALL_TARGET_HOOKS += NMAP_INSTALL_NCAT_SYMLINK\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nmon/Config.in",
    "content": "config BR2_PACKAGE_NMON\n\tbool \"nmon\"\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # fstab.h\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Nmon is short for Nigel's performance Monitor for Linux\n\n\t  http://nmon.sourceforge.net/pmwiki.php\n\ncomment \"nmon needs a glibc toolchain\"\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/nmon/nmon.hash",
    "content": "# From https://sourceforge.net/projects/nmon/files/\nmd5 df67f07ea4006c6204acff586beada81  lmon16m.c\nsha1 68cd02be19036a287fe352823db93223e73a9411  lmon16m.c\n# Locally computed\nsha256 2bed4d45fdfdf1d1387ec91e139c04975d5f838e3e0d53c0fe2d803a707e5fc1  lmon16m.c\n"
  },
  {
    "path": "package/nmon/nmon.mk",
    "content": "################################################################################\n#\n# nmon\n#\n################################################################################\n\nNMON_VERSION = 16m\nNMON_SITE = https://sourceforge.net/projects/nmon/files\nNMON_SOURCE = lmon$(NMON_VERSION).c\nNMON_LICENSE = GPL-3.0+\nNMON_LICENSE_FILES = $(NMON_SOURCE)\nNMON_DEPENDENCIES = ncurses\nNMON_CFLAGS = $(TARGET_CFLAGS) -D JFS -D GETUSER -D LARGEMEM -D DEBIAN\n\ndefine NMON_EXTRACT_CMDS\n\tcp $(NMON_DL_DIR)/$(NMON_SOURCE) $(@D)\nendef\n\ndefine NMON_BUILD_CMDS\n\t$(TARGET_CC) $(NMON_CFLAGS) $(TARGET_LDFLAGS) -o $(@D)/nmon \\\n\t\t$(@D)/$(NMON_SOURCE) -lncurses -lm\nendef\n\ndefine NMON_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/nmon $(TARGET_DIR)/usr/bin/\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/nodejs/0001-add-qemu-wrapper-support.patch",
    "content": "From 1f6c55d7318e7075169004b4314708f4766ec193 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <aduskett@gmail.com>\nDate: Mon, 27 Sep 2021 12:55:09 -0700\nSubject: [PATCH] add qemu-wrapper support\n\nV8's JIT infrastructure requires binaries such as mksnapshot and mkpeephole to\nbe run in the host during the build. However, these binaries must have the\nsame bit-width as the target (e.g. a x86_64 host targeting ARMv6 needs to\nproduce a 32-bit binary). To work around this issue, cross-compile the\nbinaries for the target and run them on the host with QEMU, much like\ngobject-introspection.\n\nHowever, for the host-variant we do not want to use a\nqemu-wrapper, so add @MAYBE_WRAPPER@ to the needed files and sed the path to\nthe qemu-wrapper on target builds, and remove @MAYBE_WRAPPER@ entirely on\nhost-builds.\n\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n node.gyp                 |  4 ++--\n tools/v8_gypfiles/v8.gyp | 10 +++++-----\n 2 files changed, 7 insertions(+), 7 deletions(-)\n\ndiff --git a/node.gyp b/node.gyp\nindex 97cdbb531d..db5cf51ce6 100644\n--- a/node.gyp\n+++ b/node.gyp\n@@ -319,7 +319,7 @@\n               'action_name': 'run_mkcodecache',\n               'process_outputs_as_sources': 1,\n               'inputs': [\n-                '<(mkcodecache_exec)',\n+                @MAYBE_WRAPPER@ '<(mkcodecache_exec)',\n               ],\n               'outputs': [\n                 '<(SHARED_INTERMEDIATE_DIR)/node_code_cache.cc',\n@@ -346,7 +346,7 @@\n                   'action_name': 'node_mksnapshot',\n                   'process_outputs_as_sources': 1,\n                   'inputs': [\n-                    '<(node_mksnapshot_exec)',\n+                    @MAYBE_WRAPPER@ '<(node_mksnapshot_exec)',\n                     '<(node_snapshot_main)',\n                   ],\n                   'outputs': [\ndiff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp\nindex 73099a03e4..88ca91efb4 100644\n--- a/tools/v8_gypfiles/v8.gyp\n+++ b/tools/v8_gypfiles/v8.gyp\n@@ -68,7 +68,7 @@\n         {\n           'action_name': 'run_torque_action',\n           'inputs': [  # Order matters.\n-            '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)',\n+            @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)',\n             '<@(torque_files)',\n           ],\n           'outputs': [\n@@ -99,7 +99,7 @@\n             '<@(torque_outputs_inc)',\n           ],\n           'action': [\n-            '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)',\n+            @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)',\n             '-o', '<(SHARED_INTERMEDIATE_DIR)/torque-generated',\n             '-v8-root', '<(V8_ROOT)',\n             '<@(torque_files_without_v8_root)',\n@@ -211,7 +211,7 @@\n         {\n           'action_name': 'generate_bytecode_builtins_list_action',\n           'inputs': [\n-            '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)bytecode_builtins_list_generator<(EXECUTABLE_SUFFIX)',\n+            @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)bytecode_builtins_list_generator<(EXECUTABLE_SUFFIX)',\n           ],\n           'outputs': [\n             '<(generate_bytecode_builtins_list_output)',\n@@ -395,7 +395,7 @@\n             ],\n           },\n           'inputs': [\n-            '<(mksnapshot_exec)',\n+            @MAYBE_WRAPPER@ '<(mksnapshot_exec)',\n           ],\n           'outputs': [\n             '<(INTERMEDIATE_DIR)/snapshot.cc',\n@@ -1505,7 +1505,7 @@\n         {\n           'action_name': 'run_gen-regexp-special-case_action',\n           'inputs': [\n-            '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)gen-regexp-special-case<(EXECUTABLE_SUFFIX)',\n+            @MAYBE_WRAPPER@ '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)gen-regexp-special-case<(EXECUTABLE_SUFFIX)',\n           ],\n           'outputs': [\n             '<(SHARED_INTERMEDIATE_DIR)/src/regexp/special-case.cc',\n-- \n2.37.3\n\n"
  },
  {
    "path": "package/nodejs/0001-check-if-uclibc-has-backtrace-support.patch",
    "content": "From f1a15cea9a47d0a9b0ae78fb22fef3a268e355ad Mon Sep 17 00:00:00 2001\nFrom: Martin Bark <martin@barkynet.com>\nDate: Sat, 4 Mar 2017 20:41:40 +0000\nSubject: [PATCH] check if uclibc has backtrace support\n\nSigned-off-by: Martin Bark <martin@barkynet.com>\n---\n deps/v8/src/base/debug/stack_trace_posix.cc | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/deps/v8/src/base/debug/stack_trace_posix.cc b/deps/v8/src/base/debug/stack_trace_posix.cc\nindex 270f1ca4e0..5227e88671 100644\n--- a/deps/v8/src/base/debug/stack_trace_posix.cc\n+++ b/deps/v8/src/base/debug/stack_trace_posix.cc\n@@ -25,7 +25,7 @@\n #include <string>\n #include <vector>\n \n-#if V8_LIBC_GLIBC || V8_LIBC_BSD || V8_LIBC_UCLIBC || V8_OS_SOLARIS\n+#if V8_LIBC_GLIBC || V8_LIBC_BSD || ( V8_LIBC_UCLIBC && __UCLIBC_HAS_BACKTRACE__ ) || V8_OS_SOLARIS\n #define HAVE_EXECINFO_H 1\n #endif\n \n-- \n2.37.3\n\n"
  },
  {
    "path": "package/nodejs/0003-include-obj-name-in-shared-intermediate.patch",
    "content": "From af47d317e5ae12978c1cdc40627008ada144f98b Mon Sep 17 00:00:00 2001\nFrom: Min RK <benjaminrk@gmail.com>\nDate: Fri, 19 Feb 2021 11:57:04 +0100\nSubject: [PATCH] include obj name in shared intermediate\n\navoids duplicate ninja rules for v8 used in host and target\n\nFrom: https://github.com/minrk/node/commit/5e533cb943eef68b270f55f0cba02c0ec67c699d\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n tools/gyp/pylib/gyp/generator/ninja.py | 8 +++++++-\n 1 file changed, 7 insertions(+), 1 deletion(-)\n\ndiff --git a/tools/gyp/pylib/gyp/generator/ninja.py b/tools/gyp/pylib/gyp/generator/ninja.py\nindex 3db3771ac9..2e0a021703 100644\n--- a/tools/gyp/pylib/gyp/generator/ninja.py\n+++ b/tools/gyp/pylib/gyp/generator/ninja.py\n@@ -42,7 +42,7 @@ generator_default_variables = {\n     # the start of a string, while $| is used for variables that can appear\n     # anywhere in a string.\n     \"INTERMEDIATE_DIR\": \"$!INTERMEDIATE_DIR\",\n-    \"SHARED_INTERMEDIATE_DIR\": \"$!PRODUCT_DIR/gen\",\n+    \"SHARED_INTERMEDIATE_DIR\": \"$!PRODUCT_DIR/$|OBJ/gen\",\n     \"PRODUCT_DIR\": \"$!PRODUCT_DIR\",\n     \"CONFIGURATION_NAME\": \"$|CONFIGURATION_NAME\",\n     # Special variables that may be used by gyp 'rule' targets.\n@@ -285,6 +285,12 @@ class NinjaWriter:\n         CONFIGURATION_NAME = \"$|CONFIGURATION_NAME\"\n         path = path.replace(CONFIGURATION_NAME, self.config_name)\n \n+        obj = \"obj\"\n+        if self.toolset != \"target\":\n+            obj += \".\" + self.toolset\n+\n+        path = path.replace(\"$|OBJ\", obj)\n+\n         return path\n \n     def ExpandRuleVariables(self, path, root, dirname, source, ext, name):\n-- \n2.37.3\n\n"
  },
  {
    "path": "package/nodejs/Config.in",
    "content": "config BR2_PACKAGE_NODEJS_ARCH_SUPPORTS\n\tbool\n\t# On ARM, at least ARMv6+ with VFPv2+ is needed\n\tdefault y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 && BR2_ARM_CPU_HAS_VFPV2\n\tdefault y if BR2_mipsel && !BR2_MIPS_SOFT_FLOAT\n\tdefault y if BR2_aarch64 || BR2_i386 || BR2_x86_64\n\t# libuv\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET\n\ncomment \"nodejs needs a toolchain w/ C++, dynamic library, NPTL, gcc >= 7, wchar, host gcc >= 8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_NODEJS_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_8 || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_NODEJS\n\tbool \"nodejs\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_NODEJS_ARCH_SUPPORTS\n\tdepends on BR2_HOST_GCC_AT_LEAST_8 # qemu\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tdepends on BR2_USE_WCHAR\n\t# uses fork()\n\tdepends on BR2_USE_MMU\n\t# uses dlopen(). On ARMv5, we could technically support static\n\t# linking, but that's too much of a corner case to support it.\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_HOST_NODEJS if BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL != \"\"\n\tselect BR2_PACKAGE_HOST_PYTHON3\n\tselect BR2_PACKAGE_HOST_PYTHON3_BZIP2\n\tselect BR2_PACKAGE_HOST_PYTHON3_SSL\n\tselect BR2_PACKAGE_C_ARES\n\tselect BR2_PACKAGE_LIBUV\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_NGHTTP2\n\thelp\n\t  Event-driven I/O server-side JavaScript environment based on\n\t  V8.\n\n\t  http://nodejs.org/\n\nif BR2_PACKAGE_NODEJS\n\nconfig BR2_PACKAGE_NODEJS_NPM\n\tbool \"NPM for the target\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  NPM is the package manager for the Node JavaScript platform.\n\t  Note that enabling NPM on the target also selects OpenSSL\n\t  for the target.\n\n\t  http://www.npmjs.org\n\n\t  Note that NPM is always built for the buildroot host.\n\nconfig BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL\n\tstring \"Additional modules\"\n\thelp\n\t  List of space-separated nodejs modules to install via npm.\n\t  See https://npmjs.org/ to find modules and 'npm help install'\n\t  for available installation methods. For repeatable builds,\n\t  download and save tgz files or clone git repos for the\n\t  components you care about.\n\n\t  Example:\n\t  serialport uglify-js@1.3.4 /my/module/mymodule.tgz \\\n\t    git://github.com/someuser/somemodule.git#v1.2\n\n\t  This would install the serialport module (at the newest\n\t  version), the uglify-js module at 1.3.4, a module from a\n\t  filesystem path, and a module from a git repository.\n\nconfig BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL_DEPS\n\tstring \"Additional module dependencies\"\n\thelp\n\t  List of space-separated buildroot recipes which must be\n\t  built before your npms can be installed. For example, if in\n\t  'Additional modules' you specified 'node-curl' (see:\n\t  https://github.com/jiangmiao/node-curl), you could then\n\t  specify 'libcurl' here, to ensure that buildroot builds the\n\t  libcurl package, and does so before building your node\n\t  modules.\n\nendif\n"
  },
  {
    "path": "package/nodejs/nodejs.hash",
    "content": "# From https://nodejs.org/dist/v16.18.1/SHASUMS256.txt\nsha256  1f8051a88f86f42064f4415fe7a980e59b0a502ecc8def583f6303bc4d445238  node-v16.18.1.tar.xz\n\n# Hash for license file\nsha256  0bec08634ba79b5404f6b7f92ea850f3c2a06e27e6f83f2267e4f5e55ae33334  LICENSE\n"
  },
  {
    "path": "package/nodejs/nodejs.mk",
    "content": "################################################################################\n#\n# nodejs\n#\n################################################################################\n\nNODEJS_VERSION = 16.18.1\nNODEJS_SOURCE = node-v$(NODEJS_VERSION).tar.xz\nNODEJS_SITE = http://nodejs.org/dist/v$(NODEJS_VERSION)\nNODEJS_DEPENDENCIES = \\\n\thost-ninja \\\n\thost-pkgconf \\\n\thost-python3 \\\n\thost-qemu \\\n\tc-ares \\\n\tlibuv \\\n\tnghttp2 \\\n\tzlib \\\n\t$(call qstrip,$(BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL_DEPS))\nHOST_NODEJS_DEPENDENCIES = \\\n\thost-icu \\\n\thost-libopenssl \\\n\thost-ninja \\\n\thost-pkgconf \\\n\thost-python3 \\\n\thost-zlib\nNODEJS_INSTALL_STAGING = YES\nNODEJS_LICENSE = MIT (core code); MIT, Apache and BSD family licenses (Bundled components)\nNODEJS_LICENSE_FILES = LICENSE\nNODEJS_CPE_ID_VENDOR = nodejs\nNODEJS_CPE_ID_PRODUCT = node.js\n\nNODEJS_CONF_OPTS = \\\n\t--shared-zlib \\\n\t--shared-cares \\\n\t--shared-libuv \\\n\t--shared-nghttp2 \\\n\t--without-dtrace \\\n\t--without-etw \\\n\t--cross-compiling \\\n\t--dest-os=linux \\\n\t--ninja\n\nHOST_NODEJS_MAKE_OPTS = \\\n\t$(HOST_CONFIGURE_OPTS) \\\n\tCXXFLAGS=\"$(HOST_NODEJS_CXXFLAGS)\" \\\n\tLDFLAGS.host=\"$(HOST_LDFLAGS)\" \\\n\tNO_LOAD=cctest.target.mk \\\n\tPATH=$(@D)/bin:$(BR_PATH)\n\nNODEJS_MAKE_OPTS = \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tNO_LOAD=cctest.target.mk \\\n\tPATH=$(@D)/bin:$(BR_PATH) \\\n\tLDFLAGS=\"$(NODEJS_LDFLAGS)\" \\\n\tLD=\"$(TARGET_CXX)\"\n\n# nodejs's build system uses python which can be a symlink to an unsupported\n# python version (e.g. python 3.10 with nodejs 14.18.1). We work around this by\n# forcing host-python3 early in the PATH, via a python->python3 symlink.\ndefine NODEJS_PYTHON3_SYMLINK\n\tmkdir -p $(@D)/bin\n\tln -sf $(HOST_DIR)/bin/python3 $(@D)/bin/python\nendef\nHOST_NODEJS_PRE_CONFIGURE_HOOKS += NODEJS_PYTHON3_SYMLINK\nNODEJS_PRE_CONFIGURE_HOOKS += NODEJS_PYTHON3_SYMLINK\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nNODEJS_DEPENDENCIES += openssl\nNODEJS_CONF_OPTS += --shared-openssl\nelse\nNODEJS_CONF_OPTS += --without-ssl\nendif\n\nifeq ($(BR2_PACKAGE_ICU),y)\nNODEJS_DEPENDENCIES += icu\nNODEJS_CONF_OPTS += --with-intl=system-icu\nelse\nNODEJS_CONF_OPTS += --with-intl=none\nendif\n\nifneq ($(BR2_PACKAGE_NODEJS_NPM),y)\nNODEJS_CONF_OPTS += --without-npm\nendif\n\ndefine HOST_NODEJS_CONFIGURE_CMDS\n\tcd $(@D); \\\n\t\t$(HOST_CONFIGURE_OPTS) \\\n\t\tPATH=$(@D)/bin:$(BR_PATH) \\\n\t\tPYTHON=$(HOST_DIR)/bin/python3 \\\n\t\t$(HOST_DIR)/bin/python3 configure.py \\\n\t\t--prefix=$(HOST_DIR) \\\n\t\t--without-dtrace \\\n\t\t--without-etw \\\n\t\t--shared-openssl \\\n\t\t--shared-openssl-includes=$(HOST_DIR)/include \\\n\t\t--shared-openssl-libpath=$(HOST_DIR)/lib \\\n\t\t--shared-zlib \\\n\t\t--no-cross-compiling \\\n\t\t--with-intl=system-icu \\\n\t\t--ninja\nendef\n\nHOST_NODEJS_CXXFLAGS = $(HOST_CXXFLAGS)\n\ndefine HOST_NODEJS_BUILD_CMDS\n\t$(HOST_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \\\n\t\t$(MAKE) -C $(@D) \\\n\t\t$(HOST_NODEJS_MAKE_OPTS)\nendef\n\ndefine HOST_NODEJS_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \\\n\t\t$(MAKE) -C $(@D) install \\\n\t\t$(HOST_NODEJS_MAKE_OPTS)\nendef\n\nifeq ($(BR2_i386),y)\nNODEJS_CPU = ia32\nelse ifeq ($(BR2_x86_64),y)\nNODEJS_CPU = x64\nelse ifeq ($(BR2_mips),y)\nNODEJS_CPU = mips\nelse ifeq ($(BR2_mipsel),y)\nNODEJS_CPU = mipsel\nelse ifeq ($(BR2_arm),y)\nNODEJS_CPU = arm\n# V8 needs to know what floating point ABI the target is using.\nNODEJS_ARM_FP = $(GCC_TARGET_FLOAT_ABI)\n# it also wants to know which FPU to use, but only has support for\n# vfp, vfpv3, vfpv3-d16 and neon.\nifeq ($(BR2_ARM_FPU_VFPV2),y)\nNODEJS_ARM_FPU = vfp\n# vfpv4 is a superset of vfpv3\nelse ifeq ($(BR2_ARM_FPU_VFPV3)$(BR2_ARM_FPU_VFPV4),y)\nNODEJS_ARM_FPU = vfpv3\n# vfpv4-d16 is a superset of vfpv3-d16\nelse ifeq ($(BR2_ARM_FPU_VFPV3D16)$(BR2_ARM_FPU_VFPV4D16),y)\nNODEJS_ARM_FPU = vfpv3-d16\nelse ifeq ($(BR2_ARM_FPU_NEON),y)\nNODEJS_ARM_FPU = neon\nendif\nelse ifeq ($(BR2_aarch64),y)\nNODEJS_CPU = arm64\nendif\n\n# MIPS architecture specific options\nifeq ($(BR2_mips)$(BR2_mipsel),y)\nifeq ($(BR2_MIPS_CPU_MIPS32R6),y)\nNODEJS_MIPS_ARCH_VARIANT = r6\nNODEJS_MIPS_FPU_MODE = fp64\nelse ifeq ($(BR2_MIPS_CPU_MIPS32R2),y)\nNODEJS_MIPS_ARCH_VARIANT = r2\nelse ifeq ($(BR2_MIPS_CPU_MIPS32),y)\nNODEJS_MIPS_ARCH_VARIANT = r1\nendif\nendif\n\nNODEJS_LDFLAGS = $(TARGET_LDFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nNODEJS_LDFLAGS += -latomic\nendif\n\n# V8's JIT infrastructure requires binaries such as mksnapshot and\n# mkpeephole to be run in the host during the build. However, these\n# binaries must have the same bit-width as the target (e.g. a x86_64\n# host targeting ARMv6 needs to produce a 32-bit binary). To work around this\n# issue, cross-compile the binaries for the target and run them on the\n# host with QEMU, much like gobject-introspection.\ndefine NODEJS_INSTALL_V8_QEMU_WRAPPER\n\t$(INSTALL) -D -m 755 $(NODEJS_PKGDIR)/v8-qemu-wrapper.in \\\n\t\t$(@D)/out/Release/v8-qemu-wrapper\n\t$(SED) \"s%@QEMU_USER@%$(QEMU_USER)%g\" \\\n\t\t$(@D)/out/Release/v8-qemu-wrapper\n\t$(SED) \"s%@TOOLCHAIN_HEADERS_VERSION@%$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)%g\" \\\n\t\t$(@D)/out/Release/v8-qemu-wrapper\n\t$(SED) \"s%@QEMU_USERMODE_ARGS@%$(call qstrip,$(BR2_PACKAGE_HOST_QEMU_USER_MODE_ARGS))%g\" \\\n\t\t$(@D)/out/Release/v8-qemu-wrapper\nendef\nNODEJS_PRE_CONFIGURE_HOOKS += NODEJS_INSTALL_V8_QEMU_WRAPPER\n\ndefine NODEJS_WRAPPER_FIXUP\n\t$(SED) \"s%@MAYBE_WRAPPER@%'<(PRODUCT_DIR)/v8-qemu-wrapper',%g\" $(@D)/node.gyp\n\t$(SED) \"s%@MAYBE_WRAPPER@%'<(PRODUCT_DIR)/v8-qemu-wrapper',%g\" $(@D)/tools/v8_gypfiles/v8.gyp\nendef\nNODEJS_PRE_CONFIGURE_HOOKS += NODEJS_WRAPPER_FIXUP\n\n# Do not run the qemu-wrapper for the host build.\ndefine HOST_NODEJS_WRAPPER_FIXUP\n\t$(SED) \"s%@MAYBE_WRAPPER@%%g\" $(@D)/node.gyp\n\t$(SED) \"s%@MAYBE_WRAPPER@%%g\" $(@D)/tools/v8_gypfiles/v8.gyp\nendef\nHOST_NODEJS_PRE_CONFIGURE_HOOKS += HOST_NODEJS_WRAPPER_FIXUP\n\ndefine NODEJS_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\tPATH=$(@D)/bin:$(BR_PATH) \\\n\t\tLDFLAGS=\"$(NODEJS_LDFLAGS)\" \\\n\t\tLD=\"$(TARGET_CXX)\" \\\n\t\tPYTHON=$(HOST_DIR)/bin/python3 \\\n\t\t$(HOST_DIR)/bin/python3 configure.py \\\n\t\t--prefix=/usr \\\n\t\t--dest-cpu=$(NODEJS_CPU) \\\n\t\t$(if $(NODEJS_ARM_FP),--with-arm-float-abi=$(NODEJS_ARM_FP)) \\\n\t\t$(if $(NODEJS_ARM_FPU),--with-arm-fpu=$(NODEJS_ARM_FPU)) \\\n\t\t$(if $(NODEJS_MIPS_ARCH_VARIANT),--with-mips-arch-variant=$(NODEJS_MIPS_ARCH_VARIANT)) \\\n\t\t$(if $(NODEJS_MIPS_FPU_MODE),--with-mips-fpu-mode=$(NODEJS_MIPS_FPU_MODE)) \\\n\t\t$(NODEJS_CONF_OPTS) \\\n\t)\nendef\n\ndefine NODEJS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \\\n\t\t$(MAKE) -C $(@D) \\\n\t\t$(NODEJS_MAKE_OPTS)\nendef\n\n#\n# Build the list of modules to install.\n#\nNODEJS_MODULES_LIST= $(call qstrip,\\\n\t$(BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL))\n\n# Define NPM for other packages to use\nNPM = $(TARGET_CONFIGURE_OPTS) \\\n\tLDFLAGS=\"$(NODEJS_LDFLAGS)\" \\\n\tLD=\"$(TARGET_CXX)\" \\\n\tnpm_config_arch=$(NODEJS_CPU) \\\n\tnpm_config_target_arch=$(NODEJS_CPU) \\\n\tnpm_config_build_from_source=true \\\n\tnpm_config_nodedir=$(BUILD_DIR)/nodejs-$(NODEJS_VERSION) \\\n\tnpm_config_prefix=$(TARGET_DIR)/usr \\\n\tnpm_config_cache=$(BUILD_DIR)/.npm-cache \\\n\t$(HOST_DIR)/bin/npm\n\n#\n# We can only call NPM if there's something to install.\n#\nifneq ($(NODEJS_MODULES_LIST),)\nNODEJS_DEPENDENCIES += host-nodejs\ndefine NODEJS_INSTALL_MODULES\n\t# If you're having trouble with module installation, adding -d to the\n\t# npm install call below and setting npm_config_rollback=false can both\n\t# help in diagnosing the problem.\n\t$(NPM) install -g $(NODEJS_MODULES_LIST)\nendef\nendif\n\ndefine NODEJS_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \\\n\t\t$(MAKE) -C $(@D) install \\\n\t\tDESTDIR=$(STAGING_DIR) \\\n\t\t$(NODEJS_MAKE_OPTS)\nendef\n\ndefine NODEJS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python3 \\\n\t\t$(MAKE) -C $(@D) install \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\t$(NODEJS_MAKE_OPTS)\n\t$(NODEJS_INSTALL_MODULES)\nendef\n\n# node.js configure is a Python script and does not use autotools\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/nodejs/v8-qemu-wrapper.in",
    "content": "#!/usr/bin/env sh\n\n# Pass -r to qemu-user as to trick glibc into not errorings out if the host kernel\n# is older than the target kernel.\nexec @QEMU_USER@ -r @TOOLCHAIN_HEADERS_VERSION@ \\\n    @QEMU_USERMODE_ARGS@ \\\n   -L \"${STAGING_DIR}/\" \\\n    \"$@\"\n\n"
  },
  {
    "path": "package/nodm/Config.in",
    "content": "config BR2_PACKAGE_NODM\n\tbool \"nodm\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam\n\tdepends on !BR2_STATIC_LIBS # linux-pam\n\tdepends on BR2_USE_MMU # linux-pam\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_LINUX_PAM\n\thelp\n\t  nodm is a minimal display manager that simply logs in\n\t  as a given user and starts an X session, without asking\n\t  for username or password.\n\n\t  For those cases where automatic login is needed (and\n\t  does not imply a security issue), nodm is simple to setup,\n\t  lightweight, and it should do exactly the right thing.\n\n\t  https://github.com/spanezz/nodm/\n\ncomment \"nodm needs a toolchain w/ wchar, locale, dynamic library\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \\\n\t\t|| BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/nodm/S90nodm",
    "content": "#!/bin/sh\n#\n# Starts nodm\n#\n\nNODM_FIRST_VT=7\nNODM_XSESSION=/etc/X11/Xsession\nNODM_OPTIONS=\nNODM_X_OPTIONS=\"-nolisten tcp\"\nNODM_USER=root\nNODM_MIN_SESSION_TIME=60\nNODM_X_TIMEOUT=300\n\n[ -r /etc/default/nodm ] && . /etc/default/nodm\n\nexport NODM_XSESSION NODM_X_OPTIONS NODM_USER NODM_MIN_SESSION_TIME NODM_FIRST_VT NODM_X_TIMEOUT\n\nstart() {\n\tprintf \"Starting nodm: \"\n\tstart-stop-daemon -S -q -p /var/run/nodm.pid --exec /usr/sbin/nodm -b -m -S -- ${NODM_OPTIONS}\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping nodm: \"\n\tstart-stop-daemon -K -q -p /var/run/nodm.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/nodm/nodm.hash",
    "content": "# locally calculated\nsha256  ef11667ae82846801a9633df36c20f632cc03319bb1da35f062ac0f950771273  nodm-0.13.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/nodm/nodm.mk",
    "content": "################################################################################\n#\n# nodm\n#\n################################################################################\n\nNODM_VERSION = 0.13\nNODM_SITE = $(call github,spanezz,nodm,$(NODM_VERSION))\nNODM_LICENSE = GPL-2.0+\nNODM_LICENSE_FILES = COPYING\nNODM_AUTORECONF = YES\n\nNODM_DEPENDENCIES = xlib_libX11 linux-pam\n\n# help2man doesn't work when cross compiling\ndefine NODM_DISABLE_HELP2MAN\n\t$(SED) 's/help2man/true/' $(@D)/Makefile.am\nendef\n\nNODM_POST_PATCH_HOOKS += NODM_DISABLE_HELP2MAN\n\ndefine NODM_INSTALL_PAM\n\t$(INSTALL) -D -m 0644 package/nodm/nodm.pam \\\n\t\t$(TARGET_DIR)/etc/pam.d/nodm\nendef\n\nNODM_POST_INSTALL_TARGET_HOOKS += NODM_INSTALL_PAM\n\ndefine NODM_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/nodm/S90nodm \\\n\t\t$(TARGET_DIR)/etc/init.d/S90nodm\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nodm/nodm.pam",
    "content": "# Log service and allow promiscuously\n#\nauth\t\trequired\tpam_warn.so\nauth\t\trequired\tpam_unix.so\n\naccount\t\trequired\tpam_warn.so\naccount\t\trequired\tpam_permit.so\n\npassword\trequired\tpam_warn.so\npassword\trequired\tpam_permit.so\n\nsession\t\trequired\tpam_warn.so\nsession\t\trequired\tpam_permit.so\nsession\t\trequired\tpam_env.so\n"
  },
  {
    "path": "package/noip/Config.in",
    "content": "config BR2_PACKAGE_NOIP\n\tbool \"noip\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Dynamic DNS update client for no-ip.com\n\n\t  http://www.no-ip.com/downloads.php\n"
  },
  {
    "path": "package/noip/noip.hash",
    "content": "# Locally calculated\nsha256  82b9bafab96a0c53b21aaef688bf70b3572e26217b5e2072bdb09da3c4a6f593  noip-duc-linux.tar.gz\nsha256  5aaf7e9e1790c6e372b6c5dec8c6c4b60504414a8c56f64c3071d281d3c251fa  COPYING\n"
  },
  {
    "path": "package/noip/noip.mk",
    "content": "################################################################################\n#\n# noip\n#\n################################################################################\n\nNOIP_VERSION = 2.1.9\nNOIP_SITE = http://www.no-ip.com/client/linux\nNOIP_SOURCE = noip-duc-linux.tar.gz\nNOIP_LICENSE = GPL-2.0+\nNOIP_LICENSE_FILES = COPYING\n\ndefine NOIP_BUILD_CMDS\n\t$(SED) \"/^#define CONFIG_FILENAME/ s/PREFIX//\" $(@D)/noip2.c\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC=\"$(TARGET_CC)\" \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS)\" PREFIX=/usr CONFDIR=/etc\nendef\n\ndefine NOIP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/noip2 $(TARGET_DIR)/usr/sbin/noip2\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/norm/0001-protolib-drop-linux-version-check.patch",
    "content": "The char * to unsigned char * change happened for the libnetfilter_queue\n1.0.0 release, not the linux headers.\nSo drop the linux headers version check since it causes more harm than\ngood by trying the old API when the toolchain uses old linux headers\nwith a new-enough libnetfilter_queue.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura norm-1.5r6.orig/protolib/src/linux/linuxDetour.cpp norm-1.5r6/protolib/src/linux/linuxDetour.cpp\n--- norm-1.5r6.orig/protolib/src/linux/linuxDetour.cpp\t2016-03-31 10:17:20.674745597 -0300\n+++ norm-1.5r6/protolib/src/linux/linuxDetour.cpp\t2016-03-31 10:36:58.923084395 -0300\n@@ -16,8 +16,6 @@\n #include <linux/if_ether.h>  // for ETH_P_IP\n #include <net/if_arp.h>   // for ARPHRD_ETHER\n \n-#include <linux/version.h>  // for LINUX_VERSION_CODE\n-\n /** NOTES: \n  *\n  * 1) This newer implementation of LinuxDetour uses netfilter_queue\n@@ -591,17 +589,7 @@\n     \n     // Finally record packet length and cache pointer to IP packet data\n     \n-    // A change to the nfq_get_payload() prototype seemed to kick in around Linux header files\n-    // version 3.6?  (This will probably need to be fine tuned for the right version threshold.)\n-\n-#define LINUX_VERSION_MAJOR (LINUX_VERSION_CODE/65536)\n-#define LINUX_VERSION_MINOR ((LINUX_VERSION_CODE - (LINUX_VERSION_MAJOR*65536)) / 256)\n-\n-#if ((LINUX_VERSION_MAJOR > 3) || ((LINUX_VERSION_MAJOR == 3) && (LINUX_VERSION_MINOR > 5)))\n     linuxDetour->nfq_pkt_len = nfq_get_payload(nfqData, (unsigned char**)(&linuxDetour->nfq_pkt_data));\n-#else\n-    linuxDetour->nfq_pkt_len = nfq_get_payload(nfqData, &linuxDetour->nfq_pkt_data);\n-#endif //\n     return 0;\n }  // end LinuxDetour::NfqCallback()\n \n"
  },
  {
    "path": "package/norm/0002-Use-print-as-function-call-for-Python3-compatibility.patch",
    "content": "From 8c02c2cbc6f07ddaef23e6bf2f6b9a269ed85ff4 Mon Sep 17 00:00:00 2001\nFrom: Titouan Christophe <titouan.christophe@railnova.eu>\nDate: Tue, 4 Feb 2020 11:59:07 +0100\nSubject: [PATCH] Use print as function call for Python3 compatibility\n\nA similar patch has already been applied upstream, in commit\nada15125a1cbb3b1718d6eef78512a36ed327fcc, which will therefore be\navailable in the next norm release\n\nSigned-off-by: Titouan Christophe <titouan.christophe@railnova.eu>\n---\n wscript | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/wscript b/wscript\nindex 8428899..0fdae96 100644\n--- a/wscript\n+++ b/wscript\n@@ -32,7 +32,7 @@ for line in vfile.readlines():\n     if \"#define\" == line[0] and \"VERSION\" == line[1]:\n         VERSION = line[2].strip('\"')\n if VERSION is None:\n-    print \"Warning: NORM VERSION not found!?\"\n+    print(\"Warning: NORM VERSION not found!?\")\n \n # So you don't need to do ./waf configure if you are just using the defaults\n waflib.Configure.autoconfig = True\n-- \n2.24.1\n"
  },
  {
    "path": "package/norm/0003-Fix-mixed-tabs-spaces-in-protolib-wscript.patch",
    "content": "From 0ff75628845d3c86974c31b50ecd60c0b0144c6d Mon Sep 17 00:00:00 2001\nFrom: Titouan Christophe <titouan.christophe@railnova.eu>\nDate: Tue, 4 Feb 2020 13:44:27 +0100\nSubject: [PATCH] Fix mixed tabs/spaces in protolib wscript\n\nThis fixes the following error when using waf in Python3:\n    TabError: inconsistent use of tabs and spaces in indentation\n\nThe upstream file has since diverged, but with similar issues.\n[Upstream status: https://github.com/USNavalResearchLaboratory/protolib/pull/6]\n\nSigned-off-by: Titouan Christophe <titouan.christophe@railnova.eu>\n---\n protolib/wscript | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/protolib/wscript b/protolib/wscript\nindex 155a660..97dda93 100644\n--- a/protolib/wscript\n+++ b/protolib/wscript\n@@ -120,7 +120,7 @@ def configure(ctx):\n     # Compiler-specific flags\n     if ctx.options.debug:\n         #ctx.env.DEFINES_BUILD_PROTOLIB += ['PROTO_DEBUG', 'DEBUG', '_DEBUG']\n-\t\tctx.env.DEFINES_BUILD_PROTOLIB += ['PROTO_DEBUG', 'DEBUG']\n+        ctx.env.DEFINES_BUILD_PROTOLIB += ['PROTO_DEBUG', 'DEBUG']\n     else:\n         ctx.env.DEFINES_BUILD_PROTOLIB += ['NDEBUG', \"PROTO_DEBUG\"]\n \n@@ -139,7 +139,7 @@ def configure(ctx):\n             ctx.env.CFLAGS += ['/Od', '/RTC1', '/ZI']\n         else:\n             ctx.env.CXXFLAGS += ['/Ox', '/DNDEBUG']\n-        \t#ctx.env.CXXFLAGS += ['/Ox', '/DNDEBUG', '/DWINVER=0x0501']\n+            #ctx.env.CXXFLAGS += ['/Ox', '/DNDEBUG', '/DWINVER=0x0501']\n         ctx.env.CFLAGS\n \n def build(ctx):\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/norm/Config.in",
    "content": "comment \"norm needs a toolchain w/ C++, threads, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_NORM\n\tbool \"norm\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  The NORM protocol is designed to provide end-to-end reliable\n\t  transport of bulk data objects or streams over generic IP\n\t  multicast routing and forwarding services.\n\n\t  http://www.nrl.navy.mil/itd/ncs/products/norm\n"
  },
  {
    "path": "package/norm/norm.hash",
    "content": "# Locally calculated\nsha256  4480a6ea53fb7ce45b4bc2061d18fbfd46ee9990fc2ed9a9dc303ce4d87888a6  src-norm-with-protolib-1.5.8.tgz\nsha256  ba4b7e49b0163d6839830e3f47505696c6eaac77ccd93531831dc837b2160608  LICENSE.TXT\n"
  },
  {
    "path": "package/norm/norm.mk",
    "content": "################################################################################\n#\n# norm\n#\n################################################################################\n\nNORM_VERSION = 1.5.8\nNORM_SITE = https://github.com/USNavalResearchLaboratory/norm/releases/download/v$(NORM_VERSION)\nNORM_SOURCE = src-norm-with-protolib-$(NORM_VERSION).tgz\nNORM_INSTALL_STAGING = YES\nNORM_LICENSE = NRL License\nNORM_LICENSE_FILES = LICENSE.TXT\n\nifeq ($(BR2_PACKAGE_LIBNETFILTER_QUEUE),y)\nNORM_DEPENDENCIES += libnetfilter_queue\nendif\n\n# install target doesn't install headers unfortunately...\ndefine NORM_INSTALL_HEADERS\n\tcp -f $(@D)/include/norm* $(STAGING_DIR)/usr/include\nendef\nNORM_POST_INSTALL_STAGING_HOOKS += NORM_INSTALL_HEADERS\n\n$(eval $(waf-package))\n"
  },
  {
    "path": "package/nss-mdns/Config.in",
    "content": "config BR2_PACKAGE_NSS_MDNS\n\tbool \"nss-mdns\"\n\t# libdaemon->avahi uses fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on BR2_PACKAGE_AVAHI_DAEMON\n\thelp\n\t  nss-mdns is a plugin for the GNU Name Service Switch (NSS)\n\t  functionality of the GNU C Library (glibc) providing host\n\t  name resolution via Multicast DNS (aka Zeroconf, aka Apple\n\t  Rendezvous, aka Apple Bonjour), effectively allowing name\n\t  resolution by common Unix/Linux programs in the ad-hoc\n\t  mDNS domain .local.\n\n\t  https://github.com/lathiat/nss-mdns\n\ncomment \"nss-mdns needs a glibc toolchain\"\n\tdepends on BR2_USE_MMU && BR2_PACKAGE_AVAHI_DAEMON\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/nss-mdns/nss-mdns.hash",
    "content": "# Locally calculated\nsha256\ta2094101b735cade45048764ea594bdae2bfa9399837f3c852a5b264416e9c8c\tnss-mdns-0.14.1.tar.gz\nsha256\ta9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861\tLICENSE\n"
  },
  {
    "path": "package/nss-mdns/nss-mdns.mk",
    "content": "################################################################################\n#\n# nss-mdns\n#\n################################################################################\n\nNSS_MDNS_VERSION = 0.14.1\nNSS_MDNS_SITE = \\\n\thttps://github.com/lathiat/nss-mdns/releases/download/v$(NSS_MDNS_VERSION)\nNSS_MDNS_LICENSE = LGPL-2.1+\nNSS_MDNS_LICENSE_FILES = LICENSE\nNSS_MDNS_CONF_OPTS = --disable-tests\n\n# add mdns4_minimal / mdns around the dns provider if missing\ndefine NSS_MDNS_INSTALL_CONFIG\n\t$(SED) '/^hosts:/ {/mdns4/! s/dns/mdns4_minimal [NOTFOUND=return] dns mdns4/}' \\\n\t\t$(TARGET_DIR)/etc/nsswitch.conf\nendef\n\nNSS_MDNS_TARGET_FINALIZE_HOOKS += NSS_MDNS_INSTALL_CONFIG\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nss-myhostname/Config.in",
    "content": "config BR2_PACKAGE_NSS_MYHOSTNAME\n\tbool \"nss-myhostname\"\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on !BR2_PACKAGE_SYSTEMD_MYHOSTNAME\n\thelp\n\t  Name Service Switch module for resolving the local hostname\n\n\t  http://0pointer.de/lennart/projects/nss-myhostname\n\ncomment \"nss-myhostname needs a glibc toolchain\"\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on !BR2_PACKAGE_SYSTEMD_MYHOSTNAME\n"
  },
  {
    "path": "package/nss-myhostname/nss-myhostname.hash",
    "content": "# locally computed\nsha256  2ba744ea8d578d1c57c85884e94a3042ee17843a5294434d3a7f6c4d67e7caf2 nss-myhostname-0.3.tar.gz\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LICENSE\n"
  },
  {
    "path": "package/nss-myhostname/nss-myhostname.mk",
    "content": "################################################################################\n#\n## nss-myhostname\n#\n################################################################################\n\nNSS_MYHOSTNAME_VERSION = 0.3\nNSS_MYHOSTNAME_SITE = http://0pointer.de/lennart/projects/nss-myhostname\nNSS_MYHOSTNAME_LICENSE = LGPL-2.1+\nNSS_MYHOSTNAME_LICENSE_FILES = LICENSE\n\n# add myhostname after files if missing\ndefine NSS_MYHOSTNAME_SET_NSSWITCH\n\t$(SED) '/^hosts:/ {/myhostname/! s/files/files myhostname/}' \\\n\t\t$(TARGET_DIR)/etc/nsswitch.conf\nendef\n\nNSS_MYHOSTNAME_TARGET_FINALIZE_HOOKS += NSS_MYHOSTNAME_SET_NSSWITCH\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nss-pam-ldapd/Config.in",
    "content": "config BR2_PACKAGE_NSS_PAM_LDAPD\n\tbool \"nss-pam-ldapd\"\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tselect BR2_PACKAGE_OPENLDAP\n\thelp\n\t  Name Service Switch (NSS) module that allows your LDAP\n\t  server to provide user account, group, host name, alias,\n\t  netgroup, and basically any other information that you would\n\t  normally get from /etc flat files or NIS. It also provides a\n\t  Pluggable Authentication Module (PAM) to do authentication\n\t  to an LDAP server.\n\n\t  http://arthurdejong.org/nss-pam-ldapd/\n\nif BR2_PACKAGE_NSS_PAM_LDAPD\n\nconfig BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES\n\tbool \"nss-pam-ldapd utilities\"\n\thelp\n\t  Build/Install command-line utilities.\n\nendif\n\ncomment \"nss-pam-ldapd needs a glibc toolchain\"\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/nss-pam-ldapd/S45nslcd",
    "content": "#!/bin/sh\n\nNAME=\"nslcd\"\nDAEMON=\"/usr/sbin/${NAME}\"\n\ncase \"$1\" in\nstart)\n        echo -n \"Starting ${NAME}: \"\n        start-stop-daemon -S -x ${DAEMON}\n        [ $? -eq 0 ] && echo \"OK\" || echo \"FAIL\"\n        ;;\nstop)\n        echo -n \"Stopping ${NAME}: \"\n        start-stop-daemon -K -x ${DAEMON}\n        [ $? -eq 0 ] && echo \"OK\" || echo \"FAIL\"\n        ;;\nrestart|reload)\n        $0 stop\n        $0 start\n        ;;\n*)\n        echo \"Usage: $0 {start|stop|restart|reload}\"\n        exit 1\nesac\n\n"
  },
  {
    "path": "package/nss-pam-ldapd/nslcd.service",
    "content": "[Unit]\nDescription=Naming services LDAP client daemon.\nAfter=syslog.target network.target\n\n[Service]\nType=forking\nPIDFile=/run/nslcd/nslcd.pid\nExecStart=/usr/sbin/nslcd\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/nss-pam-ldapd/nss-pam-ldapd.hash",
    "content": "# From https://arthurdejong.org/nss-pam-ldapd/nss-pam-ldapd-0.9.11.tar.gz.md5\nmd5 91df9d46a548aa7aa95d0e7c672215d0  nss-pam-ldapd-0.9.8.tar.gz\n# Locally computed:\nsha256 d0d71be06d1a90940b7566ce00cef1a465aae7171d5d062785506a83411ecab6  nss-pam-ldapd-0.9.11.tar.gz\nsha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING\n"
  },
  {
    "path": "package/nss-pam-ldapd/nss-pam-ldapd.mk",
    "content": "################################################################################\n#\n# nss-pam-ldapd\n#\n################################################################################\n\nNSS_PAM_LDAPD_VERSION = 0.9.11\nNSS_PAM_LDAPD_SITE = http://arthurdejong.org/nss-pam-ldapd\nNSS_PAM_LDAPD_LICENSE = LGPL-2.1+\nNSS_PAM_LDAPD_LICENSE_FILES = COPYING\nNSS_PAM_LDAPD_INSTALL_STAGING = YES\n\nNSS_PAM_LDAPD_CONF_OPTS = --disable-sasl\nNSS_PAM_LDAPD_DEPENDENCIES = openldap\n\nifeq ($(BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES),y)\nNSS_PAM_LDAPD_CONF_OPTS += --enable-utils\nelse\nNSS_PAM_LDAPD_CONF_OPTS += --disable-utils\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nNSS_PAM_LDAPD_CONF_OPTS += --enable-pam\nNSS_PAM_LDAPD_DEPENDENCIES += linux-pam\nelse\nNSS_PAM_LDAPD_CONF_OPTS += --disable-pam\nendif\n\ndefine NSS_PAM_LDAPD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -m 644 -D package/nss-pam-ldapd/nslcd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/nslcd.service\nendef\n\ndefine NSS_PAM_LDAPD_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/nss-pam-ldapd/S45nslcd \\\n\t\t$(TARGET_DIR)/etc/init.d/S45nslcd\nendef\n\ndefine NSS_PAM_LDAPD_USERS\n\tnslcd -1 nslcd -1 * - - - nslcd user\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ntfs-3g/Config.in",
    "content": "config BR2_PACKAGE_NTFS_3G\n\tbool \"ntfs-3g\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  The NTFS-3G driver is an open source, freely available\n\t  read/write NTFS driver for Linux, FreeBSD, Mac OS X, NetBSD,\n\t  and Haiku. It provides safe and fast handling of the Windows\n\t  XP, Windows Server 2003, Windows 2000 and Windows Vista file\n\t  systems. Most POSIX file system operations are supported, with\n\t  the exception of full file ownership and access right support.\n\n\t  http://www.ntfs-3g.org/\n\nif BR2_PACKAGE_NTFS_3G\n\nconfig BR2_PACKAGE_NTFS_3G_ENCRYPTED\n\tbool \"encrypted volumes\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt\n\tselect BR2_PACKAGE_GNUTLS\n\tselect BR2_PACKAGE_LIBGCRYPT\n\thelp\n\t  Enable support for NTFS encrypted volumes.\n\nconfig BR2_PACKAGE_NTFS_3G_NTFSPROGS\n\tbool \"ntfsprogs\"\n\thelp\n\t  Install NTFS utilities.\n\nendif\n\ncomment \"ntfs-3g needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/ntfs-3g/ntfs-3g.hash",
    "content": "# Locally calculated\nsha256  55b883aa05d94b2ec746ef3966cb41e66bed6db99f22ddd41d1b8b94bb202efb  ntfs-3g_ntfsprogs-2021.8.22.tgz\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\nsha256  d7bf9d064ac3e5840f9dd02422b7eeec4f1fd03f37fadbd043602be5e882304f  COPYING.LIB\n"
  },
  {
    "path": "package/ntfs-3g/ntfs-3g.mk",
    "content": "################################################################################\n#\n# ntfs-3g\n#\n################################################################################\n\nNTFS_3G_VERSION = 2021.8.22\nNTFS_3G_SOURCE = ntfs-3g_ntfsprogs-$(NTFS_3G_VERSION).tgz\nNTFS_3G_SITE = http://tuxera.com/opensource\nNTFS_3G_CONF_OPTS = --disable-ldconfig\nNTFS_3G_INSTALL_STAGING = YES\nNTFS_3G_DEPENDENCIES = host-pkgconf\nNTFS_3G_LICENSE = GPL-2.0+, LGPL-2.0+\nNTFS_3G_LICENSE_FILES = COPYING COPYING.LIB\nNTFS_3G_CPE_ID_VENDOR = tuxera\n\nifeq ($(BR2_PACKAGE_LIBFUSE),y)\nNTFS_3G_CONF_OPTS += --with-fuse=external\nNTFS_3G_DEPENDENCIES += libfuse\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)\nNTFS_3G_DEPENDENCIES += util-linux\nendif\n\nifeq ($(BR2_PACKAGE_NTFS_3G_ENCRYPTED),y)\nNTFS_3G_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config\nNTFS_3G_CONF_OPTS += --enable-crypto\nNTFS_3G_DEPENDENCIES += gnutls libgcrypt\nendif\n\nifneq ($(BR2_PACKAGE_NTFS_3G_NTFSPROGS),y)\nNTFS_3G_CONF_OPTS += --disable-ntfsprogs\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ntp/0001-nano.patch",
    "content": "Fixes issues with glibc header files, see\nhttp://bugs.gentoo.org/show_bug.cgi?id=270483\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\nRebase to apply cleanly.\n\nSigned-off-by: Danomi Manchego <danomimanchego123@gmail.com>\n\n\ndiff -purN a/include/ntp_syscall.h b/include/ntp_syscall.h\n--- a/include/ntp_syscall.h\t2015-02-11 08:42:37.794576469 -0500\n+++ b/include/ntp_syscall.h\t2015-02-11 08:43:03.216957279 -0500\n@@ -10,6 +10,14 @@\n # include <sys/timex.h>\n #endif\n \n+#if defined(ADJ_NANO) && !defined(MOD_NANO)\n+#define MOD_NANO ADJ_NANO\n+#endif\n+\n+#if defined(ADJ_TAI) && !defined(MOD_TAI)\n+#define MOD_TAI ADJ_TAI\n+#endif\n+\n #ifndef NTP_SYSCALLS_LIBC\n # ifdef NTP_SYSCALLS_STD\n #  define ntp_adjtime(t)\tsyscall(SYS_ntp_adjtime, (t))\n"
  },
  {
    "path": "package/ntp/0002-ntp-syscalls-fallback.patch",
    "content": "inline ntp syscalls fallback\n\nReference:\n https://bugs.ntp.org/show_bug.cgi?id=769\n\nSigned-off-by: James Knight <james.knight@rockwellcollins.com>\n---\n configure.ac | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1523,11 +1523,11 @@ AC_CACHE_CHECK(\n     [ntp_cv_var_ntp_syscalls],\n     [\n \tntp_cv_var_ntp_syscalls=no\n-\tcase \"$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime$ac_cv_func___adjtimex\" in\n+\tcase \"$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime$ac_cv_func___adjtimex$ac_cv_func_adjtimex\" in\n \t yesyes*)\n \t    ntp_cv_var_ntp_syscalls=libc\n \t    ;;\n-\t *yes)\n+\t *yesyes | *yesno | *noyes)\n \t    ntp_cv_var_ntp_syscalls=inline\n \t    ;;\n \t *)\n"
  },
  {
    "path": "package/ntp/0003-override-shell.patch",
    "content": "sntp/libopts/m4/libopts.m4: allow override shell with POSIX_SHELL\n\nPull in fix from upstream AutoGen [1] to accept POSIX_SHELL from the\nenvironment during the configure step.\n\n[1] http://git.savannah.gnu.org/cgit/autogen.git/commit/?id=db064b9a252f3ef3d8db25411ea0edb0ff8ea758\n\nSigned-off-by: James Byrne <james.byrne@origamienergy.com>\n\ndiff --git a/sntp/libopts/m4/libopts.m4 b/sntp/libopts/m4/libopts.m4\n--- a/sntp/libopts/m4/libopts.m4\n+++ b/sntp/libopts/m4/libopts.m4\n@@ -114,6 +114,7 @@\n   AC_PROG_SED\n   [while :\n   do\n+      test -x \"$POSIX_SHELL\" && break\n       POSIX_SHELL=`which bash`\n       test -x \"$POSIX_SHELL\" && break\n       POSIX_SHELL=`which dash`\n"
  },
  {
    "path": "package/ntp/0004-libntp-Do-not-use-PTHREAD_STACK_MIN-on-glibc.patch",
    "content": "From 082a504cfcc046c3d8adaae1164268bc94e5108a Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Sat, 31 Jul 2021 10:51:41 -0700\nSubject: [PATCH] libntp: Do not use PTHREAD_STACK_MIN on glibc\n\nIn glibc 2.34+ PTHREAD_STACK_MIN is not a compile-time constant which\ncould mean different stack sizes at runtime on different architectures\nand it also causes compile failure. Default glibc thread stack size\nor 64Kb set by ntp should be good in glibc these days.\n\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\n[Copied from https://github.com/openembedded/meta-openembedded/blob/master/meta-networking/recipes-support/ntp/ntp/0001-libntp-Do-not-use-PTHREAD_STACK_MIN-on-glibc.patch]\nSigned-off-by: Alexey Brodkin <abrokdin@synopsys.com>\n---\n libntp/work_thread.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/libntp/work_thread.c b/libntp/work_thread.c\nindex 03a5647..3ddd751 100644\n--- a/libntp/work_thread.c\n+++ b/libntp/work_thread.c\n@@ -41,7 +41,7 @@\n #ifndef THREAD_MINSTACKSIZE\n # define THREAD_MINSTACKSIZE\t(64U * 1024)\n #endif\n-#ifndef __sun\n+#if !defined(__sun) && !defined(__GLIBC__)\n #if defined(PTHREAD_STACK_MIN) && THREAD_MINSTACKSIZE < PTHREAD_STACK_MIN\n # undef THREAD_MINSTACKSIZE\n # define THREAD_MINSTACKSIZE PTHREAD_STACK_MIN\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/ntp/Config.in",
    "content": "config BR2_PACKAGE_NTP\n\tbool \"ntp\"\n\tselect BR2_PACKAGE_LIBEVENT\n\thelp\n\t  Network Time Protocol suite/programs.\n\t  Provides things like ntpd, ntpdate, ntpq, etc...\n\n\t  http://www.ntp.org/\n\nif BR2_PACKAGE_NTP\n\nconfig BR2_PACKAGE_NTP_SNTP\n\tbool \"sntp\"\n\thelp\n\t  Simple network time protocol program (a replacement\n\t  for the ntpdate tool)\n\n\t  A script is installed as S48sntp which will retrieve and\n\t  step the time if there is a large difference before ntpd\n\t  takes over the necessary slew adjustments in S49ntp.\n\nconfig BR2_PACKAGE_NTP_NTP_KEYGEN\n\tbool \"ntp-keygen\"\n\thelp\n\t  Create a NTP host key\n\nconfig BR2_PACKAGE_NTP_NTP_SHM_CLK\n\tbool \"SHM clock support\"\n\thelp\n\t  Compile ntp with support for a SHM clock attached through\n\t  shared memory.\n\nconfig BR2_PACKAGE_NTP_NTP_WAIT\n\tbool \"ntp-wait\"\n\tdepends on BR2_PACKAGE_PERL\n\thelp\n\t  ntp-wait waits until the locally running ntpd is in state 4\n\t  (synchronized). This could be useful at boot time, to delay\n\t  the boot sequence until after \"ntpd -g\" has set the time.\n\nconfig BR2_PACKAGE_NTP_NTPD\n\tbool \"ntpd\"\n\tdefault y\n\thelp\n\t  ntpd is the time synchronization daemon keeping your local\n\t  system date and time in sync and optionally serving time and\n\t  date information on the network via the NTP protocol.\n\nconfig BR2_PACKAGE_NTP_NTPD_ATOM_PPS\n\tbool \"PPS support\"\n\tdepends on BR2_PACKAGE_NTP_NTPD\n\tselect BR2_PACKAGE_PPS_TOOLS\n\thelp\n\t  Compile ntpd with the ability to use an ATOM PPS source.\n\nconfig BR2_PACKAGE_NTP_NTPDATE\n\tbool \"ntpdate\"\n\thelp\n\t  The ntpdate utility program is used to set the local date\n\t  and time from an NTP server given as an argument.\n\nconfig BR2_PACKAGE_NTP_NTPDC\n\tbool \"ntpdc\"\n\thelp\n\t  The ntpdc utility program is used to query an NTP daemon about\n\t  its current state and to request changes in that state.\n\nconfig BR2_PACKAGE_NTP_NTPQ\n\tbool \"ntpq\"\n\thelp\n\t  The ntpq utility program is used to query NTP servers\n\t  requesting information about current state and/or changes in\n\t  that state.\n\nconfig BR2_PACKAGE_NTP_NTPSNMPD\n\tbool \"ntpsnmpd\"\n\tdepends on BR2_USE_MMU # netsnmp fork()\n\tselect BR2_PACKAGE_NETSNMP\n\thelp\n\t  Install ntpsnmpd NTP SNMP MIB agent.\n\nconfig BR2_PACKAGE_NTP_NTPTIME\n\tbool \"ntptime\"\n\thelp\n\t  The ntptime utility program is used to read and set kernel\n\t  time variables.\n\nconfig BR2_PACKAGE_NTP_NTPTRACE\n\tbool \"ntptrace\"\n\tdepends on BR2_PACKAGE_PERL\n\thelp\n\t  ntptrace is a perl script that uses the ntpq utility program\n\t  to follow the chain of NTP servers from a given host back to\n\t  the primary time source\n\nconfig BR2_PACKAGE_NTP_TICKADJ\n\tbool \"tickadj\"\n\thelp\n\t  set time-related kernel variables\n\nendif\n"
  },
  {
    "path": "package/ntp/S48sntp",
    "content": "#!/bin/sh\n\nDAEMON=\"sntp\"\n# sntp uses all the IPs resolved for the hostname (i.e. pool.ntp.org has 4).\n# It will try each until they either all timeout or time has been set. Thus\n# default to only providing one NTP pool host.\nSNTP_SERVERS=\"pool.ntp.org\"\n# Step if time delta is greater then 128ms, otherwise slew\nSNTP_ARGS=\"-Ss -M 128\"\nSNTP_KEY_CACHE=\"/tmp/kod\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# Create key cache file to prevents warning that file is missing\n\ttouch $SNTP_KEY_CACHE\n\t# shellcheck disable=SC2086 # we need the word splitting\n\t/usr/bin/$DAEMON $SNTP_ARGS -K $SNTP_KEY_CACHE $SNTP_SERVERS\n\t# sntp behavior\n\t# - Does not background\n\t# - Does not infinitely block\n\t# - Time-out w/o network = ~2 sec\n\t# - Time-out w/ network = ~5sec * # of servers\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\techo \"Nothing to do, $DAEMON is not a daemon.\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\nreload() {\n\techo \"Nothing to do, $DAEMON does not support reload.\"\n}\n\ncase \"$1\" in\n\tstart|stop|restart|reload)\n\t\t\"$1\";;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/ntp/S49ntp",
    "content": "#!/bin/sh\n#\n# Starts Network Time Protocol daemon\n#\n\nDAEMON=\"ntpd\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nNTPD_ARGS=\"-g\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \\\n\t\t-- $NTPD_ARGS -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/ntp/ntp.hash",
    "content": "# From http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p15.tar.gz.md5\nmd5  e1e6b23d2fc75cced41801dbcd6c2561  ntp-4.2.8p15.tar.gz\n# Calculated based on the hash above\nsha256  f65840deab68614d5d7ceb2d0bb9304ff70dcdedd09abb79754a87536b849c19  ntp-4.2.8p15.tar.gz\nsha256  957e6a13445cc61ab1ca3dc80d8c269cf9b0a6d9eaec20f9f39639b0b3e66ee8  COPYRIGHT\n"
  },
  {
    "path": "package/ntp/ntp.mk",
    "content": "################################################################################\n#\n# ntp\n#\n################################################################################\n\nNTP_VERSION_MAJOR = 4.2\nNTP_VERSION_MINOR = 8\nNTP_VERSION_POINT = 15\nNTP_VERSION = $(NTP_VERSION_MAJOR).$(NTP_VERSION_MINOR)p$(NTP_VERSION_POINT)\nNTP_SITE = https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-$(NTP_VERSION_MAJOR)\nNTP_DEPENDENCIES = host-pkgconf libevent\nNTP_LICENSE = NTP\nNTP_LICENSE_FILES = COPYRIGHT\nNTP_CPE_ID_VENDOR = ntp\nNTP_CPE_ID_VERSION = $(NTP_VERSION_MAJOR).$(NTP_VERSION_MINOR)\nNTP_CPE_ID_UPDATE = p$(NTP_VERSION_POINT)\nNTP_SELINUX_MODULES = ntp\nNTP_CONF_ENV = ac_cv_lib_md5_MD5Init=no POSIX_SHELL=/bin/sh\nNTP_CONF_OPTS = \\\n\t--with-shared \\\n\t--program-transform-name=s,,, \\\n\t--disable-tickadj \\\n\t--disable-debugging \\\n\t--with-yielding-select=yes \\\n\t--disable-local-libevent\n\n# 0002-ntp-syscalls-fallback.patch\nNTP_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nNTP_CONF_OPTS += --with-crypto --enable-openssl-random\nNTP_DEPENDENCIES += openssl\nelse\nNTP_CONF_OPTS += --without-crypto --disable-openssl-random\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_SSP),y)\nNTP_CONF_OPTS += --with-hardenfile=linux\nelse\nNTP_CONF_OPTS += --with-hardenfile=default\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nNTP_CONF_OPTS += --enable-linuxcaps\nNTP_DEPENDENCIES += libcap\nelse\nNTP_CONF_OPTS += --disable-linuxcaps\nendif\n\nifeq ($(BR2_PACKAGE_LIBEDIT),y)\nNTP_CONF_OPTS += --with-lineeditlibs=edit\nNTP_DEPENDENCIES += libedit\nelse\nNTP_CONF_OPTS += --without-lineeditlibs\nendif\n\nifeq ($(BR2_PACKAGE_NTP_NTPSNMPD),y)\nNTP_CONF_OPTS += \\\n\t--with-net-snmp-config=$(STAGING_DIR)/usr/bin/net-snmp-config\nNTP_DEPENDENCIES += netsnmp\nelse\nNTP_CONF_OPTS += --without-ntpsnmpd\nendif\n\nifeq ($(BR2_PACKAGE_NTP_NTPD_ATOM_PPS),y)\nNTP_CONF_OPTS += --enable-ATOM\nNTP_DEPENDENCIES += pps-tools\nelse\nNTP_CONF_OPTS += --disable-ATOM\nendif\n\nifeq ($(BR2_PACKAGE_NTP_NTP_SHM_CLK),y)\nNTP_CONF_OPTS += --enable-SHM\nelse\nNTP_CONF_OPTS += --disable-SHM\nendif\n\nifeq ($(BR2_PACKAGE_NTP_SNTP),y)\nNTP_CONF_OPTS += --with-sntp\nelse\nNTP_CONF_OPTS += --without-sntp\nendif\n\nNTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTP_KEYGEN) += util/ntp-keygen\nNTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTP_WAIT) += scripts/ntp-wait/ntp-wait\nNTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPDATE) += ntpdate/ntpdate\nNTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPDC) += ntpdc/ntpdc\nNTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPQ) += ntpq/ntpq\nNTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPSNMPD) += ntpsnmpd/ntpsnmpd\nNTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPTIME) += util/ntptime\nNTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPTRACE) += scripts/ntptrace/ntptrace\nNTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_SNTP) += sntp/sntp\nNTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_TICKADJ) += util/tickadj\n\ndefine NTP_INSTALL_TARGET_CMDS\n\t$(if $(BR2_PACKAGE_NTP_NTPD), install -m 755 $(@D)/ntpd/ntpd $(TARGET_DIR)/usr/sbin/ntpd)\n\ttest -z \"$(NTP_INSTALL_FILES_y)\" || install -m 755 $(addprefix $(@D)/,$(NTP_INSTALL_FILES_y)) $(TARGET_DIR)/usr/bin/\n\t$(INSTALL) -m 644 package/ntp/ntpd.etc.conf $(TARGET_DIR)/etc/ntp.conf\nendef\n\n# This script will step the time if there is a large difference\n# before ntpd takes over the necessary slew adjustments\nifeq ($(BR2_PACKAGE_NTP_SNTP),y)\ndefine NTP_INSTALL_INIT_SYSV_SNTP\n\t$(INSTALL) -D -m 755 package/ntp/S48sntp $(TARGET_DIR)/etc/init.d/S48sntp\nendef\nendif\n\nifeq ($(BR2_PACKAGE_NTP_NTPD),y)\ndefine NTP_INSTALL_INIT_SYSV_NTPD\n\t$(INSTALL) -D -m 755 package/ntp/S49ntp $(TARGET_DIR)/etc/init.d/S49ntp\nendef\n\ndefine NTP_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/ntp/ntpd.service $(TARGET_DIR)/usr/lib/systemd/system/ntpd.service\nendef\nendif\n\ndefine NTP_INSTALL_INIT_SYSV\n\t$(NTP_INSTALL_INIT_SYSV_NTPD)\n\t$(NTP_INSTALL_INIT_SYSV_SNTP)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ntp/ntpd.etc.conf",
    "content": "server 0.pool.ntp.org iburst\nserver 1.pool.ntp.org iburst\nserver 2.pool.ntp.org iburst\nserver 3.pool.ntp.org iburst\n\n# Allow only time queries, at a limited rate, sending KoD when in excess.\n# Allow all local queries (IPv4, IPv6)\nrestrict default nomodify nopeer noquery limited kod\nrestrict 127.0.0.1\nrestrict [::1]\n"
  },
  {
    "path": "package/ntp/ntpd.service",
    "content": "[Unit]\nDescription=Network Time Service\nAfter=network.target\n\n[Service]\nType=forking\nPIDFile=/run/ntpd.pid\n# Turn off DNSSEC validation for hostname look-ups, since those need the\n# correct time to work, but we likely won't acquire that without NTP. Let's\n# break this chicken-and-egg cycle here.\nEnvironment=SYSTEMD_NSS_RESOLVE_VALIDATE=0\nExecStart=/usr/sbin/ntpd -g -p /run/ntpd.pid\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/numactl/0001-Do-not-stringify-SYMVER-symbols.patch",
    "content": "From f96c96af7fbf2779b15f66f03b10315a24fb4f5a Mon Sep 17 00:00:00 2001\nFrom: Scott McMillan <smcmillan@nvidia.com>\nDate: Fri, 9 Oct 2020 08:56:52 -0500\nSubject: [PATCH] Do not stringify SYMVER symbols\n\nUpstream: f96c96af7fbf2779b15f66f03b10315a24fb4f5a\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n util.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/util.h b/util.h\nindex 99ada33..f2a20ac 100644\n--- a/util.h\n+++ b/util.h\n@@ -22,5 +22,5 @@ extern char *policy_name(int policy);\n #if HAVE_ATTRIBUTE_SYMVER\n #define SYMVER(a,b) __attribute__ ((symver (b)))\n #else\n-#define SYMVER(a,b) __asm__ (\".symver \" #a \",\" #b);\n+#define SYMVER(a,b) __asm__ (\".symver \" a \",\" b);\n #endif\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/numactl/0002-link-with-latomic-if-needed.patch",
    "content": "From e0de0d9e981ddb53bdeb4a4b9dc43046c9ff4ff9 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 6 May 2021 23:08:36 +0200\nSubject: [PATCH] link with -latomic if needed\n\nnumactl unconditionally uses __atomic_fetch_and but some architectures\n(e.g. sparc) needs to link with -latomic to be able to use it. So check\nif -latomic is needed and update numa.pc accordingly\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/numactl/numactl/commit/e0de0d9e981ddb53bdeb4a4b9dc43046c9ff4ff9]\n---\n Makefile.am  | 1 +\n configure.ac | 2 ++\n numa.pc.in   | 1 +\n 3 files changed, 4 insertions(+)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 44d0d76..34f6815 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -151,6 +151,7 @@ SED_PROCESS = \\\n         -e 's,@exec_prefix\\@,$(exec_prefix),g' \\\n         -e 's,@libdir\\@,$(libdir),g' \\\n         -e 's,@includedir\\@,$(includedir),g' \\\n+        -e 's,@LIBS\\@,$(LIBS),g' \\\n         < $< > $@ || rm $@\n \n %.pc: %.pc.in Makefile\ndiff --git a/configure.ac b/configure.ac\nindex 659a765..e3b0eb3 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -24,6 +24,8 @@ AM_CONDITIONAL([HAVE_TREE_VECTORIZE], [test x\"${tree_vectorize}\" = x\"true\"])\n \n AC_CONFIG_FILES([Makefile])\n \n+AC_SEARCH_LIBS([__atomic_fetch_and_1], [atomic])\n+\n # GCC tries to be \"helpful\" and only issue a warning for unrecognized\n # attributes.  So we compile the test with Werror, so that if the\n # attribute is not recognized the compilation fails\ndiff --git a/numa.pc.in b/numa.pc.in\nindex 8a0f202..cc04d50 100644\n--- a/numa.pc.in\n+++ b/numa.pc.in\n@@ -8,3 +8,4 @@ Description: NUMA policy library\n Version: @VERSION@\n Cflags: -I${includedir}\n Libs: -L${libdir} -lnuma\n+Libs.Private: @LIBS@\n"
  },
  {
    "path": "package/numactl/Config.in",
    "content": "config BR2_PACKAGE_NUMACTL\n\tbool \"numactl\"\n\tdepends on BR2_USE_MMU # madvise()\n\thelp\n\t  numactl allows you to run your application on specific cpus\n\t  and memory nodes. It does this by supplying a NUMA memory\n\t  policy to the operating system before running your program.\n\n\t  https://github.com/numactl/numactl\n"
  },
  {
    "path": "package/numactl/numactl.hash",
    "content": "# Locally calculated\nsha256  1ee27abd07ff6ba140aaf9bc6379b37825e54496e01d6f7343330cf1a4487035  numactl-2.0.14.tar.gz\nsha256  e2b738b1303c088421b09933a78c1326fe43692e2c05a7c510a2eb7e7a8eb575  README.md\n"
  },
  {
    "path": "package/numactl/numactl.mk",
    "content": "################################################################################\n#\n# numactl\n#\n################################################################################\n\nNUMACTL_VERSION = 2.0.14\nNUMACTL_SITE = $(call github,numactl,numactl,v$(NUMACTL_VERSION))\nNUMACTL_LICENSE = LGPL-2.1 (libnuma), GPL-2.0 (programs)\nNUMACTL_LICENSE_FILES = README.md\nNUMACTL_INSTALL_STAGING = YES\nNUMACTL_AUTORECONF = YES\nNUMACTL_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -fPIC\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nut/Config.in",
    "content": "comment \"nut needs a toolchain w/ C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_NUT\n\tbool \"nut\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Network UPS tools\n\n\t  The primary goal of the Network UPS Tools (NUT) project is\n\t  to provide support for Power Devices, such as\n\t  Uninterruptible Power Supplies, Power Distribution Units and\n\t  Solar Controllers.\n\n\t  http://www.networkupstools.org/\n\nif BR2_PACKAGE_NUT\n\nconfig BR2_PACKAGE_NUT_DRIVERS\n\tstring \"drivers\"\n\thelp\n\t  Select the individual drivers to enable, in a\n\t  comma-separated list. Leave empty for all.\n\nendif # BR2_PACKAGE_NUT\n"
  },
  {
    "path": "package/nut/nut.hash",
    "content": "# Locally computed\nsha256  7129b2df45f9a9df3943f4d09f2b95b5a63d66ca4913431352570206968ca97b  nut-03c3bbe8df9a2caf3c09c120ae7045d35af99b76.tar.gz\nsha256  9f562d0e6be5108a06684dd249686d378abe1653df14b1944e971e084f6751f0  COPYING\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  LICENSE-GPL2\nsha256  fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7  LICENSE-GPL3\n"
  },
  {
    "path": "package/nut/nut.mk",
    "content": "################################################################################\n#\n# nut\n#\n################################################################################\n\nNUT_VERSION = 03c3bbe8df9a2caf3c09c120ae7045d35af99b76\nNUT_SITE = $(call github,networkupstools,nut,$(NUT_VERSION))\nNUT_LICENSE = GPL-2.0+, GPL-3.0+ (python scripts), GPL/Artistic (perl client)\nNUT_LICENSE_FILES = COPYING LICENSE-GPL2 LICENSE-GPL3\nNUT_SELINUX_MODULES = apache nut\nNUT_INSTALL_STAGING = YES\nNUT_DEPENDENCIES = host-pkgconf host-perl\n\n# From git:\nNUT_AUTORECONF = YES\n\n# Generate files otherwise generated by autogen.sh\n# buildroot does not support augeas, creating an empty file prevents\n# us from adding a dependency to host-python\ndefine NUT_PREGEN\n\ttouch $(@D)/scripts/augeas/nutupsconf.aug.in\n\tcd $(@D)/tools && PATH=$(BR_PATH) ./nut-usbinfo.pl\nendef\nNUT_PRE_CONFIGURE_HOOKS += NUT_PREGEN\n\n# Race condition in tools generation\nNUT_MAKE = $(MAKE1)\n\n# Put the PID files in a read-write place (/var/run is a tmpfs)\n# since the default location (/var/state/ups) maybe readonly.\nNUT_CONF_OPTS = \\\n\t--with-altpidpath=/var/run/upsd \\\n\t--with-dev\n\nNUT_CONF_ENV = ax_cv__printf_string_null=yes\n\n# For uClibc-based toolchains, nut forgets to link with -lm\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\nNUT_CONF_ENV += LDFLAGS=\"$(TARGET_LDFLAGS) -lm\"\nendif\n\nifeq ($(call qstrip,$(BR2_PACKAGE_NUT_DRIVERS)),)\nNUT_CONF_OPTS += --with-drivers=all\nelse\nNUT_CONF_OPTS += --with-drivers=$(BR2_PACKAGE_NUT_DRIVERS)\nendif\n\nifeq ($(BR2_PACKAGE_AVAHI)$(BR2_PACKAGE_DBUS),yy)\nNUT_DEPENDENCIES += avahi dbus\nNUT_CONF_OPTS += --with-avahi\nelse\nNUT_CONF_OPTS += --without-avahi\nendif\n\n# gd with support for png is required for the CGI\nifeq ($(BR2_PACKAGE_GD)$(BR2_PACKAGE_LIBPNG),yy)\nNUT_DEPENDENCIES += gd libpng\nNUT_CONF_OPTS += --with-cgi\nelse\nNUT_CONF_OPTS += --without-cgi\nendif\n\n# nut-scanner needs libltdl, which is a wrapper arounf dlopen/dlsym,\n# so is not available for static-only builds.\n# There is no flag to directly enable/disable nut-scanner, it's done\n# via the --enable/disable-libltdl flag.\nifeq ($(BR2_STATIC_LIBS):$(BR2_PACKAGE_LIBTOOL),:y)\nNUT_DEPENDENCIES += libtool\nNUT_CONF_OPTS += --with-libltdl\nelse\nNUT_CONF_OPTS += --without-libltdl\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB_COMPAT),y)\nNUT_DEPENDENCIES += libusb-compat\nNUT_CONF_OPTS += --with-usb\nelse\nNUT_CONF_OPTS += --without-usb\nendif\n\nifeq ($(BR2_PACKAGE_NEON_EXPAT)$(BR2_PACKAGE_NEON_LIBXML2),y)\nNUT_DEPENDENCIES += neon\nNUT_CONF_OPTS += --with-neon\nelse\nNUT_CONF_OPTS += --without-neon\nendif\n\nifeq ($(BR2_PACKAGE_NETSNMP),y)\nNUT_DEPENDENCIES += netsnmp\nNUT_CONF_OPTS += \\\n\t--with-snmp \\\n\t--with-net-snmp-config=$(STAGING_DIR)/usr/bin/net-snmp-config\nelse\nNUT_CONF_OPTS += --without-snmp\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nNUT_DEPENDENCIES += openssl\nNUT_CONF_OPTS += --with-ssl\nelse\nNUT_CONF_OPTS += --without-ssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/nuttcp/0001-susv3-legacy.patch",
    "content": "[PATCH] Replace susv3 legacy function with modern equivalents\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n---\n nuttcp-6.1.2.c |   90 ++++++++++++++++++++++++++++-----------------------------\n 1 file changed, 45 insertions(+), 45 deletions(-)\n\nIndex: nuttcp-6.1.2/nuttcp-6.1.2.c\n===================================================================\n--- nuttcp-6.1.2.orig/nuttcp-6.1.2.c\n+++ nuttcp-6.1.2/nuttcp-6.1.2.c\n@@ -1925,11 +1925,11 @@\n \tif (udp && !haverateopt)\n \t\trate = DEFAULT_UDP_RATE;\n \n-\tbzero((char *)&frominet, sizeof(frominet));\n-\tbzero((char *)&clientaddr, sizeof(clientaddr));\n+\tmemset((char *)&frominet, 0, sizeof(frominet));\n+\tmemset((char *)&clientaddr, 0, sizeof(clientaddr));\n \n #ifdef AF_INET6\n-\tbzero((char *)&clientaddr6, sizeof(clientaddr6));\n+\tmemset((char *)&clientaddr6, 0, sizeof(clientaddr6));\n \tclientscope6 = 0;\n #endif\n \n@@ -1985,7 +1985,7 @@\n \t\t}\n \n \t\twhile (stream_idx <= nstream) {\n-\t\t\tbzero(&hints, sizeof(hints));\n+\t\t\tmemset(&hints, 0, sizeof(hints));\n \t\t\tres[stream_idx] = NULL;\n \t\t\tif (explicitaf) hints.ai_family = af;\n \t\t\tif ((cp2 = strchr(cp1, '/'))) {\n@@ -3013,12 +3013,12 @@\n \t\tif ((stream_idx > 0) && skip_data)\n \t\t\tbreak;\n \n-\t\tbzero((char *)&sinme[stream_idx], sizeof(sinme[stream_idx]));\n-\t\tbzero((char *)&sinhim[stream_idx], sizeof(sinhim[stream_idx]));\n+\t\tmemset((char *)&sinme[stream_idx], 0, sizeof(sinme[stream_idx]));\n+\t\tmemset((char *)&sinhim[stream_idx], 0, sizeof(sinhim[stream_idx]));\n \n #ifdef AF_INET6\n-\t\tbzero((char *)&sinme6[stream_idx], sizeof(sinme6[stream_idx]));\n-\t\tbzero((char *)&sinhim6[stream_idx], sizeof(sinhim6[stream_idx]));\n+\t\tmemset((char *)&sinme6[stream_idx], 0, sizeof(sinme6[stream_idx]));\n+\t\tmemset((char *)&sinhim6[stream_idx], 0, sizeof(sinhim6[stream_idx]));\n #endif\n \n \t\tif (((trans && !reverse) && (stream_idx > 0)) ||\n@@ -3028,15 +3028,15 @@\n \t\t\tif (client) {\n \t\t\t\tif (af == AF_INET) {\n \t\t\t\t    sinhim[stream_idx].sin_family = af;\n-\t\t\t\t    bcopy((char *)&(((struct sockaddr_in *)res[stream_idx]->ai_addr)->sin_addr),\n-\t\t\t\t\t  (char *)&sinhim[stream_idx].sin_addr.s_addr,\n+\t\t\t\t    memcpy((char *)&sinhim[stream_idx].sin_addr.s_addr,\n+\t\t\t\t\t  (char *)&(((struct sockaddr_in *)res[stream_idx]->ai_addr)->sin_addr),\n \t\t\t\t\t  sizeof(sinhim[stream_idx].sin_addr.s_addr));\n \t\t\t\t}\n #ifdef AF_INET6\n \t\t\t\telse if (af == AF_INET6) {\n \t\t\t\t    sinhim6[stream_idx].sin6_family = af;\n-\t\t\t\t    bcopy((char *)&(((struct sockaddr_in6 *)res[stream_idx]->ai_addr)->sin6_addr),\n-\t\t\t\t\t  (char *)&sinhim6[stream_idx].sin6_addr.s6_addr,\n+\t\t\t\t    memcpy((char *)&sinhim6[stream_idx].sin6_addr.s6_addr,\n+\t\t\t\t\t  (char *)&(((struct sockaddr_in6 *)res[stream_idx]->ai_addr)->sin6_addr),\n \t\t\t\t\t  sizeof(sinhim6[stream_idx].sin6_addr.s6_addr));\n \t\t\t\t    sinhim6[stream_idx].sin6_scope_id = ((struct sockaddr_in6 *)res[stream_idx]->ai_addr)->sin6_scope_id;\n \t\t\t\t}\n@@ -3113,8 +3113,8 @@\n \t\t\t\t * to the multicast group\n \t\t\t\t */\n \t\t\t\tif (af == AF_INET) {\n-\t\t\t\t    bcopy((char *)&sinhim[1].sin_addr.s_addr,\n-\t\t\t\t\t(char *)&save_sinhim.sin_addr.s_addr,\n+\t\t\t\t    memcpy((char *)&save_sinhim.sin_addr.s_addr,\n+\t\t\t\t\t(char *)&sinhim[1].sin_addr.s_addr,\n \t\t\t\t\tsizeof(struct in_addr));\n \t\t\t\t    if (!client && (irvers >= 50505)) {\n \t\t\t\t\tstruct sockaddr_in peer;\n@@ -3124,8 +3124,8 @@\n \t\t\t\t\t\t      &peerlen) < 0) {\n \t\t\t\t\t\terr(\"getpeername\");\n \t\t\t\t\t}\n-\t\t\t\t\tbcopy((char *)&peer.sin_addr.s_addr,\n-\t\t\t\t\t    (char *)&sinhim[1].sin_addr.s_addr,\n+\t\t\t\t\tmemcpy((char *)&sinhim[1].sin_addr.s_addr,\n+\t\t\t\t\t    (char *)&peer.sin_addr.s_addr,\n \t\t\t\t\t    sizeof(struct in_addr));\n \t\t\t\t    }\n \t\t\t\t    else {\n@@ -3136,8 +3136,8 @@\n \t\t\t\t\t\t\t&melen) < 0) {\n \t\t\t\t\t\terr(\"getsockname\");\n \t\t\t\t\t}\n-\t\t\t\t\tbcopy((char *)&me.sin_addr.s_addr,\n-\t\t\t\t\t    (char *)&sinhim[1].sin_addr.s_addr,\n+\t\t\t\t\tmemcpy((char *)&sinhim[1].sin_addr.s_addr,\n+\t\t\t\t\t    (char *)&me.sin_addr.s_addr,\n \t\t\t\t\t    sizeof(struct in_addr));\n \t\t\t\t    }\n \t\t\t\t    sinhim[1].sin_addr.s_addr &=\n@@ -4197,13 +4197,13 @@\n \t\t\t\t\t\t&melen) < 0) {\n \t\t\t\t\terr(\"getsockname\");\n \t\t\t\t}\n-\t\t\t\tbcopy((char *)&me.sin_addr.s_addr,\n-\t\t\t\t      (char *)&mc_group.imr_multiaddr.s_addr,\n+\t\t\t\tmemcpy((char *)&mc_group.imr_multiaddr.s_addr,\n+\t\t\t\t      (char *)&me.sin_addr.s_addr,\n \t\t\t\t      sizeof(struct in_addr));\n \t\t\t}\n \t\t\telse {\n-\t\t\t\tbcopy((char *)&peer.sin_addr.s_addr,\n-\t\t\t\t      (char *)&mc_group.imr_multiaddr.s_addr,\n+\t\t\t\tmemcpy((char *)&mc_group.imr_multiaddr.s_addr,\n+\t\t\t\t      (char *)&peer.sin_addr.s_addr,\n \t\t\t\t      sizeof(struct in_addr));\n \t\t\t}\n \t\t\tmc_group.imr_multiaddr.s_addr &= htonl(0xFFFFFF);\n@@ -4330,12 +4330,12 @@\n \t\t\tif(udp) {\n \t\t\t\tstrcpy(buf, \"BOD0\");\n \t\t\t\tif (multicast) {\n-\t\t\t\t    bcopy((char *)&sinhim[1].sin_addr.s_addr,\n-\t\t\t\t\t  (char *)&save_mc.sin_addr.s_addr,\n-\t\t\t\t\t  sizeof(struct in_addr));\n-\t\t\t\t    bcopy((char *)&save_sinhim.sin_addr.s_addr,\n+\t\t\t\t    memcpy((char *)&save_mc.sin_addr.s_addr,\n \t\t\t\t\t  (char *)&sinhim[1].sin_addr.s_addr,\n \t\t\t\t\t  sizeof(struct in_addr));\n+\t\t\t\t    memcpy((char *)&sinhim[1].sin_addr.s_addr,\n+\t\t\t\t\t  (char *)&save_sinhim.sin_addr.s_addr,\n+\t\t\t\t\t  sizeof(struct in_addr));\n \t\t\t\t}\n \t\t\t\t(void)Nwrite( fd[stream_idx + 1], buf, 4 ); /* rcvr start */\n \t\t\t\tif (two_bod) {\n@@ -4344,8 +4344,8 @@\n \t\t\t\t\t(void)Nwrite( fd[stream_idx + 1], buf, 4 ); /* rcvr start */\n \t\t\t\t}\n \t\t\t\tif (multicast) {\n-\t\t\t\t    bcopy((char *)&save_mc.sin_addr.s_addr,\n-\t\t\t\t\t  (char *)&sinhim[1].sin_addr.s_addr,\n+\t\t\t\t    memcpy((char *)&sinhim[1].sin_addr.s_addr,\n+\t\t\t\t\t  (char *)&save_mc.sin_addr.s_addr,\n \t\t\t\t\t  sizeof(struct in_addr));\n \t\t\t\t}\n \t\t\t\tif (timeout)\n@@ -4361,7 +4361,7 @@\n \t\t\t\tfflush(stdout);\n \t\t\t}\n \t\t\tif (udplossinfo)\n-\t\t\t\tbcopy(&nbytes, buf + 24, 8);\n+\t\t\t\tmemcpy(buf + 24, &nbytes, 8);\n \t\t\tif (!udp && interval && !(format & NORETRANS) &&\n \t\t\t    ((retransinfo == 1) ||\n \t\t\t     ((retransinfo >= 2) &&\n@@ -4372,13 +4372,13 @@\n \t\t\t\t\ttmp = 0x5254524Eu;\t/* \"RTRN\" */\n \t\t\t\telse\n \t\t\t\t\ttmp = 0x48525452u;\t/* \"HRTR\" */\n-\t\t\t\tbcopy(&nretrans, buf + 24, 4);\n-\t\t\t\tbcopy(&tmp, buf + 28, 4);\n+\t\t\t\tmemcpy(buf + 24, &nretrans, 4);\n+\t\t\t\tmemcpy(buf + 28, &tmp, 4);\n \t\t\t}\n \t\t\telse {\n \t\t\t\tsend_retrans = 0;\n \t\t\t\tif (!udp)\n-\t\t\t\t\tbzero(buf + 24, 8);\n+\t\t\t\t\tmemset(buf + 24, 0, 8);\n \t\t\t}\n \t\t\tif (nbuf == INT_MAX)\n \t\t\t\tnbuf = ULLONG_MAX;\n@@ -4423,12 +4423,12 @@\n \t\t\t\tnbytes += buflen;\n \t\t\t\tcnt = 0;\n \t\t\t\tif (udplossinfo)\n-\t\t\t\t\tbcopy(&nbytes, buf + 24, 8);\n+\t\t\t\t\tmemcpy(buf + 24, &nbytes, 8);\n \t\t\t\tif (send_retrans) {\n \t\t\t\t\tnretrans = get_retrans(\n \t\t\t\t\t\t\tfd[stream_idx + 1]);\n \t\t\t\t\tnretrans -= iretrans;\n-\t\t\t\t\tbcopy(&nretrans, buf + 24, 4);\n+\t\t\t\t\tmemcpy(buf + 24, &nretrans, 4);\n \t\t\t\t}\n \t\t\t\tstream_idx++;\n \t\t\t\tstream_idx = stream_idx % nstream;\n@@ -4523,8 +4523,8 @@\n \t\t\t\tnbytes += cnt;\n \t\t\tif(udp) {\n \t\t\t\tif (multicast)\n-\t\t\t\t    bcopy((char *)&save_sinhim.sin_addr.s_addr,\n-\t\t\t\t\t  (char *)&sinhim[1].sin_addr.s_addr,\n+\t\t\t\t    memcpy((char *)&sinhim[1].sin_addr.s_addr,\n+\t\t\t\t\t  (char *)&save_sinhim.sin_addr.s_addr,\n \t\t\t\t\t  sizeof(struct in_addr));\n \t\t\t\tstrcpy(buf, \"EOD0\");\n \t\t\t\t(void)Nwrite( fd[stream_idx + 1], buf, 4 ); /* rcvr end */\n@@ -4532,7 +4532,7 @@\n \t\t} else {\n \t\t\tfirst_read = 1;\n \t\t\tneed_swap = 0;\n-\t\t\tbzero(buf + 24, 8);\n+\t\t\tmemset(buf + 24, 0, 8);\n \t\t\tif (udp) {\n \t\t\t    ntbytesc = 0;\n \t\t\t    got_eod0 = 0;\n@@ -4584,7 +4584,7 @@\n \t\t\t\t     * goes off right here */\n \t\t\t\t    if (udplossinfo) {\n \t\t\t\t\t    if (first_read) {\n-\t\t\t\t\t\t    bcopy(buf + 24, &ntbytesc,\n+\t\t\t\t\t\t    memcpy(&ntbytesc, buf + 24,\n \t\t\t\t\t\t\t\t8);\n \t\t\t\t\t\t    first_read = 0;\n \t\t\t\t\t\t    if (ntbytesc > 0x100000000ull)\n@@ -4598,7 +4598,7 @@\n \t\t\t\t\t\t    }\n \t\t\t\t\t    }\n \t\t\t\t\t    if (!need_swap)\n-\t\t\t\t\t\t    bcopy(buf + 24, &ntbytesc,\n+\t\t\t\t\t\t    memcpy(&ntbytesc, buf + 24,\n \t\t\t\t\t\t\t\t8);\n \t\t\t\t\t    else {\n \t\t\t\t\t\t    cp1 = (char *)&ntbytesc;\n@@ -4627,8 +4627,8 @@\n \t\t\t\t\t    uint32_t tmp;\n \n \t\t\t\t\t    first_read = 0;\n-\t\t\t\t\t    bcopy(buf + 24, &nretrans, 4);\n-\t\t\t\t\t    bcopy(buf + 28, &tmp, 4);\n+\t\t\t\t\t    memcpy(&nretrans, buf + 24, 4);\n+\t\t\t\t\t    memcpy(&tmp, buf + 28, 4);\n \t\t\t\t\t    if (tmp == 0x5254524Eu) {\n \t\t\t\t\t\t    /* \"RTRN\" */\n \t\t\t\t\t\t    retransinfo = 1;\n@@ -4661,7 +4661,7 @@\n \t\t\t\t    }\n \t\t\t\t    if (read_retrans) {\n \t\t\t\t\t    if (!need_swap)\n-\t\t\t\t\t\t    bcopy(buf + 24, &nretrans,\n+\t\t\t\t\t\t    memcpy(&nretrans, buf + 24,\n \t\t\t\t\t\t\t\t4);\n \t\t\t\t\t    else {\n \t\t\t\t\t\t    cp1 = (char *)&nretrans;\n@@ -5327,10 +5327,10 @@\n \t\titimer.it_interval.tv_usec = 0;\n \t\tsetitimer(ITIMER_REAL, &itimer, 0);\n \t\tsignal(SIGALRM, SIG_DFL);\n-\t\tbzero((char *)&frominet, sizeof(frominet));\n-\t\tbzero((char *)&clientaddr, sizeof(clientaddr));\n+\t\tmemset((char *)&frominet, 0, sizeof(frominet));\n+\t\tmemset((char *)&clientaddr, 0, sizeof(clientaddr));\n #ifdef AF_INET6\n-\t\tbzero((char *)&clientaddr6, sizeof(clientaddr));\n+\t\tmemset((char *)&clientaddr6, 0, sizeof(clientaddr));\n \t\tclientscope6 = 0;\n #endif\n \t\tcput = 0.000001;\n"
  },
  {
    "path": "package/nuttcp/Config.in",
    "content": "config BR2_PACKAGE_NUTTCP\n\tbool \"nuttcp\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  nuttcp is a TCP/UDP network testing tool, much like iperf\n\n\t  http://nuttcp.net\n"
  },
  {
    "path": "package/nuttcp/nuttcp.hash",
    "content": "# From http://lists.freebsd.org/pipermail/freebsd-ports-bugs/2009-August/170685.html\nsha256  054e96d9d68fe917df6f25fab15c7755bdd480f6420d7d48d9194a1a52378169  nuttcp-6.1.2.tar.bz2\n# Locally computed\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  LICENSE\n"
  },
  {
    "path": "package/nuttcp/nuttcp.mk",
    "content": "################################################################################\n#\n# nuttcp\n#\n################################################################################\n\nNUTTCP_VERSION = 6.1.2\nNUTTCP_SITE = http://nuttcp.net/nuttcp\nNUTTCP_SOURCE = nuttcp-$(NUTTCP_VERSION).tar.bz2\nNUTTCP_LICENSE = GPL-2.0\nNUTTCP_LICENSE_FILES = LICENSE\n\ndefine NUTTCP_BUILD_CMDS\n\t$(MAKE1) CC=\"$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)\" \\\n\t\t-C $(@D) all\nendef\n\ndefine NUTTCP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 $(@D)/nuttcp-$(NUTTCP_VERSION) \\\n\t\t$(TARGET_DIR)/usr/bin/nuttcp\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/nvidia-driver/0001-use-LDFLAGS.patch",
    "content": "kernel: use LDFLAGS when linking modules\n\nCurrently, linking module objects is simply using $(LD), assuming that\nthe default emulation is correct for the current architecture.\n\nHowever, that might not be the case when the toolchain default is not\nthe same as the current arch. For example, if the toolchain defaults to\ni386 and is capable of x86_64, and we're targetting x86_64 (or the\nopposite), the link would fail because the ld emulation is incorrect:\n\n    .../i686-pc-linux-gnu-ld: Relocatable linking with relocations from\n    format elf64-x86-64 (.../nvidia-driver-370.23/kernel/nvidia/nv-frontend.o)\n    to format elf32-i386 (.../nvidia-driver-370.23/kernel/nvidia/nv-interface.o)\n    is not supported\n\nAdd use of $(LDFLAGS) when doing the link, as the kernel provides the\nproper emulation in those.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\n---\nIssue reported upstream:\n    https://devtalk.nvidia.com/default/topic/958653/\n\ndiff -durN nvidia-driver-370.23.orig/kernel/nvidia/nvidia.Kbuild nvidia-driver-370.23/kernel/nvidia/nvidia.Kbuild\n--- nvidia-driver-370.23.orig/kernel/nvidia/nvidia.Kbuild\t2016-08-09 01:57:50.000000000 +0200\n+++ nvidia-driver-370.23/kernel/nvidia/nvidia.Kbuild\t2016-08-20 12:25:02.780233423 +0200\n@@ -87,7 +87,7 @@\n always += $(NVIDIA_INTERFACE)\n \n $(obj)/$(NVIDIA_INTERFACE): $(addprefix $(obj)/,$(NVIDIA_OBJECTS))\n-\t$(LD) -r -o $@ $^\n+\t$(LD) $(LDFLAGS) -r -o $@ $^\n \n \n #\ndiff -durN nvidia-driver-370.23.orig/kernel/nvidia-modeset/nvidia-modeset.Kbuild nvidia-driver-370.23/kernel/nvidia-modeset/nvidia-modeset.Kbuild\n--- nvidia-driver-370.23.orig/kernel/nvidia-modeset/nvidia-modeset.Kbuild\t2016-08-09 01:43:19.000000000 +0200\n+++ nvidia-driver-370.23/kernel/nvidia-modeset/nvidia-modeset.Kbuild\t2016-08-20 12:25:39.596772662 +0200\n@@ -70,7 +70,7 @@\n always += $(NVIDIA_MODESET_INTERFACE)\n \n $(obj)/$(NVIDIA_MODESET_INTERFACE): $(addprefix $(obj)/,$(NVIDIA_MODESET_OBJECTS))\n-\t$(LD) -r -o $@ $^\n+\t$(LD) $(LDFLAGS) -r -o $@ $^\n \n #\n # Register the conftests needed by nvidia-modeset.ko\n"
  },
  {
    "path": "package/nvidia-driver/Config.in",
    "content": "comment \"nvidia-driver needs a glibc toolchain\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n\nconfig BR2_PACKAGE_NVIDIA_DRIVER\n\tbool \"nvidia-driver\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  The binary-only driver blob for NVidia cards.\n\t  This is the userland part only.\n\n\t  http://www.nvidia.com/\n\nif BR2_PACKAGE_NVIDIA_DRIVER\n\ncomment \"nvidia-driver X.org drivers needs a modular Xorg server\"\n\tdepends on !BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR\n\nconfig BR2_PACKAGE_NVIDIA_DRIVER_XORG\n\tbool \"X.org drivers\"\n\tdefault y\n\tdepends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR\n\tselect BR2_PACKAGE_MESA3D_HEADERS\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_HAS_LIBEGL\n\tselect BR2_PACKAGE_HAS_LIBEGL_WAYLAND\n\tselect BR2_PACKAGE_HAS_LIBGLES\n\nif BR2_PACKAGE_NVIDIA_DRIVER_XORG\n\nconfig BR2_PACKAGE_PROVIDES_LIBGL\n\tdefault \"nvidia-driver\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBEGL\n\tdefault \"nvidia-driver\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBGLES\n\tdefault \"nvidia-driver\"\n\nconfig BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS\n\tbool \"Install private libraries\"\n\thelp\n\t  Two libraries require special agreement with NVidia to\n\t  develop code linking to those libraries: libnvidia-ifr.so\n\t  and libnvidia-fbc.so (to grab and encode an OpenGL buffer or\n\t  an X framebuffer.)\n\n\t  Say 'y' here if you plan on running a program that uses\n\t  those private libraries.\n\nendif # BR2_PACKAGE_NVIDIA_DRIVER_XORG\n\nconfig BR2_PACKAGE_NVIDIA_DRIVER_CUDA\n\tbool \"CUDA support\"\n\nif BR2_PACKAGE_NVIDIA_DRIVER_CUDA\n\nconfig BR2_PACKAGE_NVIDIA_DRIVER_OPENCL\n\tbool \"OpenCL support\"\n\tselect BR2_PACKAGE_MESA3D_HEADERS\n\tselect BR2_PACKAGE_HAS_LIBOPENCL\n\nconfig BR2_PACKAGE_PROVIDES_LIBOPENCL\n\tdefault \"nvidia-driver\" if BR2_PACKAGE_NVIDIA_DRIVER_OPENCL\n\nconfig BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS\n\tbool \"CUDA MPS server and control\"\n\thelp\n\t  Say 'y' here if you need to run more than one program\n\t  doing CUDA at the same time. The MPS server will be\n\t  launched automatically when needed.\n\nendif # BR2_PACKAGE_NVIDIA_DRIVER_CUDA\n\ncomment \"nvidia kernel module needs a kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_NVIDIA_DRIVER_MODULE\n\tbool \"nvidia kernel module\"\n\tdepends on BR2_LINUX_KERNEL\n\tselect BR2_LINUX_NEEDS_MODULES # not using kernel-module infra\n\thelp\n\t  Build the nvidia.ko kernel module.\n\n\t  If CUDA support (above) is set, and the target is x86_64, then\n\t  this will also build the nvidia-uvm.ko kernel module, which\n\t  provides Unified Memory access to the GPU and CPU memories for\n\t  CUDA programs.\n\nendif # BR2_PACKAGE_NVIDIA_DRIVER\n"
  },
  {
    "path": "package/nvidia-driver/egl.pc",
    "content": "prefix=/usr\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: egl\nDescription: Nvidia OpenGL library\nVersion: 1\nCflags: -I${includedir}\nLibs: -L${libdir} -lEGL\n"
  },
  {
    "path": "package/nvidia-driver/gl.pc",
    "content": "prefix=/usr\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: gl\nDescription: Nvidia OpenGL library\nVersion: 10.4.2\nLibs: -L${libdir} -lGL -lm -lXext -lX11 -ldl\nCflags: -I${includedir}  -DEGL_NO_X11\nglx_tls: no\n"
  },
  {
    "path": "package/nvidia-driver/nvidia-driver.hash",
    "content": "# Locally computed\nsha256 51adb28f0ed4548f35a88a93ad6767ebd807fa14f418bf5e51a6d63a3ff7f275  NVIDIA-Linux-x86-390.132.run\nsha256 b6b4b8af37e78e026c9ebdf4a5c64ea412dfcb710931dd028c22dac228de659d  NVIDIA-Linux-x86_64-390.132-no-compat32.run\nsha256 bd28b0c5aeeb00eb11d3ec6f6f3449d4b3a40100914258332734a53527997526  LICENSE\n"
  },
  {
    "path": "package/nvidia-driver/nvidia-driver.mk",
    "content": "################################################################################\n#\n# nvidia-driver\n#\n################################################################################\n\nNVIDIA_DRIVER_VERSION = 390.132\nNVIDIA_DRIVER_SUFFIX = $(if $(BR2_x86_64),_64)\nNVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux-x86$(NVIDIA_DRIVER_SUFFIX)/$(NVIDIA_DRIVER_VERSION)\nNVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86$(NVIDIA_DRIVER_SUFFIX)-$(NVIDIA_DRIVER_VERSION)$(if $(BR2_x86_64),-no-compat32).run\nNVIDIA_DRIVER_LICENSE = NVIDIA Software License\nNVIDIA_DRIVER_LICENSE_FILES = LICENSE\nNVIDIA_DRIVER_REDISTRIBUTE = NO\nNVIDIA_DRIVER_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_XORG),y)\n\n# Since nvidia-driver are binary blobs, the below dependencies are not\n# strictly speaking build dependencies of nvidia-driver. However, they\n# are build dependencies of packages that depend on nvidia-driver, so\n# they should be built prior to those packages, and the only simple\n# way to do so is to make nvidia-driver depend on them.\nNVIDIA_DRIVER_DEPENDENCIES += mesa3d-headers xlib_libX11 xlib_libXext\nNVIDIA_DRIVER_PROVIDES += libgl libegl libgles\n\n# libGL.so.$(NVIDIA_DRIVER_VERSION) is the legacy libGL.so library; it\n# has been replaced with libGL.so.1.0.0. Installing both is technically\n# possible, but great care must be taken to ensure they do not conflict,\n# so that EGL still works. The legacy library exposes an NVidia-specific\n# API, so it should not be needed, except for legacy, binary-only\n# applications (in other words: we don't care).\n#\n# libGL.so.1.0.0 is the new vendor-neutral library, aimed at replacing\n# the old libGL.so.$(NVIDIA_DRIVER_VERSION) library. The latter contains\n# NVidia extensions (which is deemed bad now), while the former follows\n# the newly-introduced vendor-neutral \"dispatching\" API/ABI:\n#   https://github.com/aritger/linux-opengl-abi-proposal/blob/master/linux-opengl-abi-proposal.txt\n# However, this is not very useful to us, as we don't support multiple\n# GL providers at the same time on the system, which this proposal is\n# aimed at supporting.\n#\n# So we only install the legacy library for now.\nNVIDIA_DRIVER_LIBS_GL = \\\n\tlibGLX.so.0 \\\n\tlibGL.so.$(NVIDIA_DRIVER_VERSION) \\\n\tlibGLX_nvidia.so.$(NVIDIA_DRIVER_VERSION)\n\nNVIDIA_DRIVER_LIBS_EGL = \\\n\tlibEGL.so.1.1.0 \\\n\tlibGLdispatch.so.0 \\\n\tlibEGL_nvidia.so.$(NVIDIA_DRIVER_VERSION)\n\nNVIDIA_DRIVER_LIBS_GLES = \\\n\tlibGLESv1_CM.so.1.2.0 \\\n\tlibGLESv2.so.2.1.0 \\\n\tlibGLESv1_CM_nvidia.so.$(NVIDIA_DRIVER_VERSION) \\\n\tlibGLESv2_nvidia.so.$(NVIDIA_DRIVER_VERSION)\n\nNVIDIA_DRIVER_LIBS_MISC = \\\n\tlibnvidia-eglcore.so.$(NVIDIA_DRIVER_VERSION) \\\n\tlibnvidia-egl-wayland.so.1.0.2 \\\n\tlibnvidia-glcore.so.$(NVIDIA_DRIVER_VERSION) \\\n\tlibnvidia-glsi.so.$(NVIDIA_DRIVER_VERSION) \\\n\ttls/libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \\\n\tlibvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION):vdpau/ \\\n\tlibnvidia-ml.so.$(NVIDIA_DRIVER_VERSION)\n\nNVIDIA_DRIVER_LIBS += \\\n\t$(NVIDIA_DRIVER_LIBS_GL) \\\n\t$(NVIDIA_DRIVER_LIBS_EGL) \\\n\t$(NVIDIA_DRIVER_LIBS_GLES) \\\n\t$(NVIDIA_DRIVER_LIBS_MISC)\n\n# Install the gl.pc file\ndefine NVIDIA_DRIVER_INSTALL_GL_DEV\n\t$(INSTALL) -D -m 0644 $(@D)/libGL.la $(STAGING_DIR)/usr/lib/libGL.la\n\t$(SED) 's:__GENERATED_BY__:Buildroot:' $(STAGING_DIR)/usr/lib/libGL.la\n\t$(SED) 's:__LIBGL_PATH__:/usr/lib:' $(STAGING_DIR)/usr/lib/libGL.la\n\t$(SED) 's:-L[^[:space:]]\\+::' $(STAGING_DIR)/usr/lib/libGL.la\n\t$(INSTALL) -D -m 0644 package/nvidia-driver/gl.pc $(STAGING_DIR)/usr/lib/pkgconfig/gl.pc\n\t$(INSTALL) -D -m 0644 package/nvidia-driver/egl.pc $(STAGING_DIR)/usr/lib/pkgconfig/egl.pc\nendef\n\n# Those libraries are 'private' libraries requiring an agreement with\n# NVidia to develop code for those libs. There seems to be no restriction\n# on using those libraries (e.g. if the user has such an agreement, or\n# wants to run a third-party program developed under such an agreement).\nifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS),y)\nNVIDIA_DRIVER_LIBS += \\\n\tlibnvidia-ifr.so.$(NVIDIA_DRIVER_VERSION) \\\n\tlibnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION)\nendif\n\n# We refer to the destination path; the origin file has no directory component\nNVIDIA_DRIVER_LIBS += \\\n\tnvidia_drv.so:xorg/modules/drivers/ \\\n\tlibglx.so.$(NVIDIA_DRIVER_VERSION):xorg/modules/extensions/\n\n# libglx needs a symlink according to the driver README. It has no SONAME\ndefine NVIDIA_DRIVER_SYMLINK_LIBGLX\n\tln -sf libglx.so.$(NVIDIA_DRIVER_VERSION) \\\n\t\t$(TARGET_DIR)/usr/lib/xorg/modules/extensions/libglx.so\nendef\n\nendif # X drivers\n\nifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y)\nNVIDIA_DRIVER_LIBS += \\\n\tlibcuda.so.$(NVIDIA_DRIVER_VERSION) \\\n\tlibnvidia-compiler.so.$(NVIDIA_DRIVER_VERSION) \\\n\tlibnvcuvid.so.$(NVIDIA_DRIVER_VERSION) \\\n\tlibnvidia-fatbinaryloader.so.$(NVIDIA_DRIVER_VERSION) \\\n\tlibnvidia-ptxjitcompiler.so.$(NVIDIA_DRIVER_VERSION) \\\n\tlibnvidia-encode.so.$(NVIDIA_DRIVER_VERSION)\nifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS),y)\nNVIDIA_DRIVER_PROGS = nvidia-cuda-mps-control nvidia-cuda-mps-server\nendif\nendif\n\nifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_OPENCL),y)\nNVIDIA_DRIVER_LIBS += \\\n\tlibOpenCL.so.1.0.0 \\\n\tlibnvidia-opencl.so.$(NVIDIA_DRIVER_VERSION)\nNVIDIA_DRIVER_DEPENDENCIES += mesa3d-headers\nNVIDIA_DRIVER_PROVIDES += libopencl\nendif\n\n# Build and install the kernel modules if needed\nifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_MODULE),y)\n\nNVIDIA_DRIVER_MODULES = nvidia nvidia-modeset nvidia-drm\nifeq ($(BR2_x86_64),y)\nNVIDIA_DRIVER_MODULES += nvidia-uvm\nendif\n\n# They can't do everything like everyone. They need those variables,\n# because they don't recognise the usual variables set by the kernel\n# build system. We also need to tell them what modules to build.\nNVIDIA_DRIVER_MODULE_MAKE_OPTS = \\\n\tNV_KERNEL_SOURCES=\"$(LINUX_DIR)\" \\\n\tNV_KERNEL_OUTPUT=\"$(LINUX_DIR)\" \\\n\tNV_KERNEL_MODULES=\"$(NVIDIA_DRIVER_MODULES)\"\n\nNVIDIA_DRIVER_MODULE_SUBDIRS = kernel\n\n$(eval $(kernel-module))\n\nendif # BR2_PACKAGE_NVIDIA_DRIVER_MODULE == y\n\n# The downloaded archive is in fact an auto-extract script. So, it can run\n# virtually everywhere, and it is fine enough to provide useful options.\n# Except it can't extract into an existing (even empty) directory.\ndefine NVIDIA_DRIVER_EXTRACT_CMDS\n\t$(SHELL) $(NVIDIA_DRIVER_DL_DIR)/$(NVIDIA_DRIVER_SOURCE) --extract-only --target \\\n\t\t$(@D)/tmp-extract\n\tchmod u+w -R $(@D)\n\tmv $(@D)/tmp-extract/* $(@D)/tmp-extract/.manifest $(@D)\n\trm -rf $(@D)/tmp-extract\nendef\n\n# Helper to install libraries\n# $1: library name\n# $2: target directory\n#\n# For all libraries, we install them and create a symlink using\n# their SONAME, so we can link to them at runtime; we also create\n# the no-version symlink, so we can link to them at build time.\ndefine NVIDIA_DRIVER_INSTALL_LIB\n\t$(INSTALL) -D -m 0644 $(@D)/$(1) $(2)$(notdir $(1))\n\tlibsoname=\"$$( $(TARGET_READELF) -d \"$(@D)/$(1)\" \\\n\t\t|sed -r -e '/.*\\(SONAME\\).*\\[(.*)\\]$$/!d; s//\\1/;' )\"; \\\n\tif [ -n \"$${libsoname}\" -a \"$${libsoname}\" != \"$(notdir $(1))\" ]; then \\\n\t\tln -sf $(notdir $(1)) $(2)$${libsoname}; \\\n\tfi\n\tbaseso=$(firstword $(subst .,$(space),$(notdir $(1)))).so; \\\n\tif [ -n \"$${baseso}\" -a \"$${baseso}\" != \"$(notdir $(1))\" ]; then \\\n\t\tln -sf $(notdir $(1)) $(2)$${baseso}; \\\n\tfi\nendef\n\n# Helper to install libraries\n# $1: destination directory (target or staging)\ndefine NVIDIA_DRIVER_INSTALL_LIBS\n\t$(foreach lib,$(NVIDIA_DRIVER_LIBS),\n\t\t$(call NVIDIA_DRIVER_INSTALL_LIB,$(word 1,$(subst :, ,$(lib))), \\\n\t\t\t$(1)/usr/lib/$(word 2,$(subst :, ,$(lib))))\n\t)\nendef\n\n# For staging, install libraries and development files\ndefine NVIDIA_DRIVER_INSTALL_STAGING_CMDS\n\t$(call NVIDIA_DRIVER_INSTALL_LIBS,$(STAGING_DIR))\n\t$(NVIDIA_DRIVER_INSTALL_GL_DEV)\nendef\n\n# For target, install libraries and X.org modules\ndefine NVIDIA_DRIVER_INSTALL_TARGET_CMDS\n\t$(call NVIDIA_DRIVER_INSTALL_LIBS,$(TARGET_DIR))\n\t$(foreach p,$(NVIDIA_DRIVER_PROGS), \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$(p) \\\n\t\t\t$(TARGET_DIR)/usr/bin/$(p)\n\t)\n\t$(NVIDIA_DRIVER_SYMLINK_LIBGLX)\n\t$(NVIDIA_DRIVER_INSTALL_KERNEL_MODULE)\nendef\n\n# Due to a conflict with xserver_xorg-server, this needs to be performed when\n# finalizing the target filesystem to make sure this version is used.\nNVIDIA_DRIVER_TARGET_FINALIZE_HOOKS += NVIDIA_DRIVER_SYMLINK_LIBGLX\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/nvidia-modprobe/Config.in",
    "content": "config BR2_PACKAGE_NVIDIA_MODPROBE\n\tbool \"nvidia-modprobe\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  nvidia-modprobe package adds a utility and headers for\n\t  probing the NVIDIA hardware at runtime.\n\n\t  https://github.com/NVIDIA/nvidia-modprobe\n"
  },
  {
    "path": "package/nvidia-modprobe/nvidia-modprobe.hash",
    "content": "# Locally computed:\nsha256 396b4102d3075a2dee3024652fae206a1b38ace54b8efb1e2c20757a11ec19f1  nvidia-modprobe-450.57.tar.gz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/nvidia-modprobe/nvidia-modprobe.mk",
    "content": "################################################################################\n#\n# nvidia-modprobe\n#\n################################################################################\n\nNVIDIA_MODPROBE_VERSION = 450.57\nNVIDIA_MODPROBE_SITE = $(call github,NVIDIA,nvidia-modprobe,$(NVIDIA_MODPROBE_VERSION))\nNVIDIA_MODPROBE_LICENSE = GPL-2.0\nNVIDIA_MODPROBE_LICENSE_FILES = COPYING\n\ndefine NVIDIA_MODPROBE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tOUTPUTDIR=. ./nvidia-modprobe.unstripped\nendef\n\ndefine NVIDIA_MODPROBE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 $(@D)/nvidia-modprobe.unstripped \\\n\t\t$(TARGET_DIR)/usr/bin/nvidia-modprobe\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/nvme/Config.in",
    "content": "config BR2_PACKAGE_NVME\n\tbool \"nvme\"\n\thelp\n\t  NVME utility, a utility for interacting with standard NVM\n\t  Express (optimized PCI Express SSD interface) devices.\n\n\t  https://github.com/linux-nvme/nvme-cli\n"
  },
  {
    "path": "package/nvme/nvme.hash",
    "content": "# Locally computed:\nsha256  a75270e65a4a7a6add48f748ba216d8f68d78f90f8cb77e88e9753b74d527991  nvme-1.12.tar.gz\nsha256  a45d0bb572ed792ed34627a72621834b3ba92aab6e2cc4e04301dee7a728d753  LICENSE\n"
  },
  {
    "path": "package/nvme/nvme.mk",
    "content": "################################################################################\n#\n# nvme\n#\n################################################################################\n\nNVME_VERSION = 1.12\nNVME_SITE = $(call github,linux-nvme,nvme-cli,v$(NVME_VERSION))\nNVME_LICENSE = GPL-2.0+\nNVME_LICENSE_FILES = LICENSE\n\n# Yes, LIBUUID=0 means libuuid support enabled.\n# LIBUUID=1 means libuuid support disabled.\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)\nNVME_DEPENDENCIES += util-linux\nNVME_MAKE_OPTS += LIBUUID=0\nelse\nNVME_MAKE_OPTS += LIBUUID=1\nendif\n\n# Yes, HAVE_SYSTEMD=0 means systemd support enabled.\n# HAVE_SYSTEMD=1 means systemd support disabled.\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nNVME_DEPENDENCIES += systemd\nNVME_MAKE_OPTS += HAVE_SYSTEMD=0\nelse\nNVME_MAKE_OPTS += HAVE_SYSTEMD=1\nendif\n\ndefine NVME_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \\\n\t\t$(NVME_MAKE_OPTS) -C $(@D)\nendef\n\ndefine NVME_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(NVME_MAKE_OPTS) -C $(@D) \\\n\t\tDESTDIR=$(TARGET_DIR) PREFIX=/usr install-bin\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/obsidian-cursors/Config.in",
    "content": "config BR2_PACKAGE_OBSIDIAN_CURSORS\n\tbool \"obsidian-cursors\"\n\thelp\n\t  Obsidian Cursors is a shiny and clean cursor set.\n\n\t  http://kde-look.org/content/show.php/Obsidian+Cursors?content=73135\n"
  },
  {
    "path": "package/obsidian-cursors/obsidian-cursors.hash",
    "content": "# Locally calculated\nsha256\t3d38fe875f6feae8b7772e02cfda530fcf669479807915cd2c12c149da17cfb9\t73135-Obsidian.tar.bz2\n"
  },
  {
    "path": "package/obsidian-cursors/obsidian-cursors.mk",
    "content": "################################################################################\n#\n# obsidian-cursors\n#\n################################################################################\n\nOBSIDIAN_CURSORS_VERSION = 1.0\nOBSIDIAN_CURSORS_SITE = http://kde-look.org/CONTENT/content-files\nOBSIDIAN_CURSORS_SOURCE = 73135-Obsidian.tar.bz2\nOBSIDIAN_CURSORS_LICENSE = GPL\n\ndefine OBSIDIAN_CURSORS_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/share/cursors/xorg-x11/Obsidian\n\tcp -a $(@D)/cursors \\\n\t\t$(TARGET_DIR)/usr/share/cursors/xorg-x11/Obsidian\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ocf-linux/ocf-linux.hash",
    "content": "# Locally computed:\nsha256  5113609d2c2c43fde962bec1238fe5a81211a751ebb0337b54a9804d40cfef53  ocf-linux-20120127.tar.gz\n"
  },
  {
    "path": "package/ocf-linux/ocf-linux.mk",
    "content": "################################################################################\n#\n# ocf-linux\n#\n################################################################################\n\nOCF_LINUX_VERSION = 20120127\nOCF_LINUX_SITE = http://downloads.sourceforge.net/project/ocf-linux/ocf-linux/$(OCF_LINUX_VERSION)\nOCF_LINUX_INSTALL_STAGING = YES\n\nOCF_LINUX_PROVIDES = cryptodev\n\nOCF_LINUX_MODULE_SUBDIRS = ocf\nOCF_LINUX_MODULE_MAKE_OPTS = \\\n\tCONFIG_OCF_OCF=m \\\n\tCONFIG_OCF_CRYPTOSOFT=m \\\n\tCONFIG_OCF_BENCH=m \\\n\tCONFIG_OCF_OCFNULL=m\n\ndefine OCF_LINUX_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 644 $(@D)/ocf/cryptodev.h \\\n\t\t$(STAGING_DIR)/usr/include/crypto/cryptodev.h\nendef\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ocrad/Config.in",
    "content": "config BR2_PACKAGE_OCRAD\n\tbool \"ocrad\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  GNU Ocrad is an OCR (Optical Character Recognition) program\n\t  based on a feature extraction method.\n\t  It reads images in pbm (bitmap), pgm (greyscale) or\n\t  ppm (color) formats and produces text in byte (8-bit) or\n\t  UTF-8 formats.\n\n\t  http://www.gnu.org/software/ocrad/\n\ncomment \"ocrad needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/ocrad/ocrad.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256 a9bfe67e9a040907aff5640dca56392476b6a89e48e37dc94ba846c5b6733b36  ocrad-0.27.tar.lz\nsha256 3d77c1a58fbde5ddba612d1fe09965e20a3804953eca12e8c1892298bb8a5eef  COPYING\n"
  },
  {
    "path": "package/ocrad/ocrad.mk",
    "content": "################################################################################\n#\n# ocrad\n#\n################################################################################\n\nOCRAD_VERSION = 0.27\nOCRAD_SOURCE = ocrad-$(OCRAD_VERSION).tar.lz\nOCRAD_SITE = $(BR2_GNU_MIRROR)/ocrad\nOCRAD_LICENSE = GPL-3.0+\nOCRAD_LICENSE_FILES = COPYING\nOCRAD_INSTALL_STAGING = YES\n\n# This is not a true autotools package.\ndefine OCRAD_CONFIGURE_CMDS\n\tcd $(@D) && \\\n\t$(TARGET_MAKE_ENV) ./configure --prefix=/usr --sysconfdir=/etc $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine OCRAD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine OCRAD_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\ndefine OCRAD_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/odb/0001-tm.h-include-in-gcc.hxx-appears-to-be-no-longer-nece.patch",
    "content": "From f0bbc17aeed1b636782a4b92e8191d90f310d0a2 Mon Sep 17 00:00:00 2001\nFrom: Boris Kolpackov <boris@codesynthesis.com>\nDate: Mon, 1 Jun 2015 19:08:33 +0200\nSubject: [PATCH] <tm.h> include in gcc.hxx appears to be no longer necessary\n\nOn MIPS this file pulls in enum processor which conflicts with\nour class processor.\n\n[Upstream: f0bbc17aeed1b636782a4b92e8191d90f310d0a2]\nSigned-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>\n---\n odb/gcc.hxx | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/odb/gcc.hxx b/odb/gcc.hxx\nindex 504b59b..c953047 100644\n--- a/odb/gcc.hxx\n+++ b/odb/gcc.hxx\n@@ -46,8 +46,6 @@ extern \"C\"\n #include <tree.h>\n #include <real.h>\n \n-#include <tm.h>\n-\n #include <cpplib.h>\n #include <cp/cp-tree.h>\n \n-- \n2.26.2\n\n"
  },
  {
    "path": "package/odb/0002-Remove-gratuitous-classes.patch",
    "content": "From 5486c8c85b9cfb92232518b2fadf6d8ed7b332d5 Mon Sep 17 00:00:00 2001\nFrom: Boris Kolpackov <boris@codesynthesis.com>\nDate: Wed, 3 Jun 2015 21:35:43 +0200\nSubject: [PATCH] Remove gratuitous classes\n\nIn the process also get rid of global class processor which conflicts\nwith enum processor on MIPS.\n\n[Upstream: bbc39ffe31c67506b4c03fc56fa3adcb925b6325]\nSigned-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>\n---\n odb/context.hxx              |  3 ++-\n odb/generator.cxx            | 24 ++++++++++++------------\n odb/generator.hxx            | 26 ++++++++------------------\n odb/plugin.cxx               | 18 +++++++-----------\n odb/processor.cxx            |  4 ++--\n odb/processor.hxx            | 22 ++++++----------------\n odb/relational/validator.cxx |  6 +++---\n odb/relational/validator.hxx | 29 +++++++++--------------------\n odb/validator.cxx            | 13 ++++++-------\n odb/validator.hxx            | 28 +++++++++-------------------\n 10 files changed, 64 insertions(+), 109 deletions(-)\n\ndiff --git a/odb/context.hxx b/odb/context.hxx\nindex 1cf002a..351bc61 100644\n--- a/odb/context.hxx\n+++ b/odb/context.hxx\n@@ -41,7 +41,8 @@ typedef cutl::re::format regex_format;\n \n typedef std::vector<regexsub> regex_mapping;\n \n-//\n+// Generic exception thrown to indicate a failure when diagnostics\n+// has already been issued (to stderr).\n //\n class operation_failed {};\n \ndiff --git a/odb/generator.cxx b/odb/generator.cxx\nindex e165faf..6aa5151 100644\n--- a/odb/generator.cxx\n+++ b/odb/generator.cxx\n@@ -58,7 +58,7 @@ namespace\n     if (!ifs.is_open ())\n     {\n       cerr << \"error: unable to open '\" << p << \"' in read mode\" << endl;\n-      throw generator::failed ();\n+      throw generator_failed ();\n     }\n   }\n \n@@ -70,7 +70,7 @@ namespace\n     if (!ofs.is_open ())\n     {\n       cerr << \"error: unable to open '\" << p << \"' in write mode\" << endl;\n-      throw generator::failed ();\n+      throw generator_failed ();\n     }\n   }\n \n@@ -118,7 +118,7 @@ namespace\n   }\n }\n \n-void generator::\n+void\n generate (options const& ops,\n           features& fts,\n           semantics::unit& unit,\n@@ -259,7 +259,7 @@ generate (options const& ops,\n             cerr << in_log_path << \": error: wrong database '\" <<\n               old_changelog->database () << \"', expected '\" << db <<\n               \"'\" << endl;\n-            throw generator::failed ();\n+            throw generator_failed ();\n           }\n \n           string sn (ops.schema_name ()[db]);\n@@ -268,18 +268,18 @@ generate (options const& ops,\n             cerr << in_log_path << \": error: wrong schema name '\" <<\n               old_changelog->schema_name () << \"', expected '\" << sn <<\n               \"'\" << endl;\n-            throw generator::failed ();\n+            throw generator_failed ();\n           }\n         }\n         catch (const ios_base::failure& e)\n         {\n           cerr << in_log_path << \": read failure\" << endl;\n-          throw failed ();\n+          throw generator_failed ();\n         }\n         catch (const xml::parsing& e)\n         {\n           cerr << e.what () << endl;\n-          throw failed ();\n+          throw generator_failed ();\n         }\n       }\n \n@@ -976,12 +976,12 @@ generate (options const& ops,\n       catch (const ios_base::failure& e)\n       {\n         cerr << out_log_path << \": write failure\" << endl;\n-        throw failed ();\n+        throw generator_failed ();\n       }\n       catch (const xml::serialization& e)\n       {\n         cerr << e.what () << endl;\n-        throw failed ();\n+        throw generator_failed ();\n       }\n     }\n \n@@ -998,18 +998,18 @@ generate (options const& ops,\n   {\n     // Code generation failed. Diagnostics has already been issued.\n     //\n-    throw failed ();\n+    throw generator_failed ();\n   }\n   catch (semantics::invalid_path const& e)\n   {\n     cerr << \"error: '\" << e.path () << \"' is not a valid filesystem path\"\n          << endl;\n-    throw failed ();\n+    throw generator_failed ();\n   }\n   catch (fs::error const&)\n   {\n     // Auto-removal of generated files failed. Ignore it.\n     //\n-    throw failed ();\n+    throw generator_failed ();\n   }\n }\ndiff --git a/odb/generator.hxx b/odb/generator.hxx\nindex ce49295..e83d94d 100644\n--- a/odb/generator.hxx\n+++ b/odb/generator.hxx\n@@ -11,23 +11,13 @@\n #include <odb/features.hxx>\n #include <odb/semantics/unit.hxx>\n \n-class generator\n-{\n-public:\n-  class failed {};\n-\n-  void\n-  generate (options const&,\n-            features&,\n-            semantics::unit&,\n-            semantics::path const& file,\n-            std::vector<semantics::path> const& inputs);\n-\n-  generator () {}\n-\n-private:\n-  generator (generator const&);\n-  generator& operator= (generator const&);\n-};\n+class generator_failed {};\n+\n+void\n+generate (options const&,\n+          features&,\n+          semantics::unit&,\n+          semantics::path const& file,\n+          std::vector<semantics::path> const& inputs);\n \n #endif // ODB_GENERATOR_HXX\ndiff --git a/odb/plugin.cxx b/odb/plugin.cxx\nindex e32f225..51f0cb1 100644\n--- a/odb/plugin.cxx\n+++ b/odb/plugin.cxx\n@@ -199,27 +199,23 @@ gate_callback (void*, void*)\n     parser p (*options_, loc_pragmas_, ns_loc_pragmas_, decl_pragmas_);\n     auto_ptr<unit> u (p.parse (global_namespace, file_));\n \n-\n     features f;\n \n     // Validate, pass 1.\n     //\n-    validator v;\n-    v.validate (*options_, f, *u, file_, 1);\n+    validate (*options_, f, *u, file_, 1);\n \n     // Process.\n     //\n-    processor pr;\n-    pr.process (*options_, f, *u, file_);\n+    process (*options_, f, *u, file_);\n \n     // Validate, pass 2.\n     //\n-    v.validate (*options_, f, *u, file_, 2);\n+    validate (*options_, f, *u, file_, 2);\n \n     // Generate.\n     //\n-    generator g;\n-    g.generate (*options_, f, *u, file_, inputs_);\n+    generate (*options_, f, *u, file_, inputs_);\n   }\n   catch (cutl::re::format const& e)\n   {\n@@ -239,19 +235,19 @@ gate_callback (void*, void*)\n     //\n     r = 1;\n   }\n-  catch (validator::failed const&)\n+  catch (validator_failed const&)\n   {\n     // Diagnostics has aready been issued.\n     //\n     r = 1;\n   }\n-  catch (processor::failed const&)\n+  catch (processor_failed const&)\n   {\n     // Diagnostics has aready been issued.\n     //\n     r = 1;\n   }\n-  catch (generator::failed const&)\n+  catch (generator_failed const&)\n   {\n     // Diagnostics has aready been issued.\n     //\ndiff --git a/odb/processor.cxx b/odb/processor.cxx\nindex a808a52..3a2cb1d 100644\n--- a/odb/processor.cxx\n+++ b/odb/processor.cxx\n@@ -3064,7 +3064,7 @@ namespace\n   };\n }\n \n-void processor::\n+void\n process (options const& ops,\n          features& f,\n          semantics::unit& unit,\n@@ -3120,6 +3120,6 @@ process (options const& ops,\n   {\n     // Processing failed. Diagnostics has already been issued.\n     //\n-    throw failed ();\n+    throw processor_failed ();\n   }\n }\ndiff --git a/odb/processor.hxx b/odb/processor.hxx\nindex 602b999..e62dd25 100644\n--- a/odb/processor.hxx\n+++ b/odb/processor.hxx\n@@ -9,22 +9,12 @@\n #include <odb/features.hxx>\n #include <odb/semantics/unit.hxx>\n \n-class processor\n-{\n-public:\n-  class failed {};\n+class processor_failed {};\n \n-  void\n-  process (options const&,\n-           features&,\n-           semantics::unit&,\n-           semantics::path const&);\n-\n-  processor () {}\n-\n-private:\n-  processor (processor const&);\n-  processor& operator= (processor const&);\n-};\n+void\n+process (options const&,\n+         features&,\n+         semantics::unit&,\n+         semantics::path const&);\n \n #endif // ODB_PROCESSOR_HXX\ndiff --git a/odb/relational/validator.cxx b/odb/relational/validator.cxx\nindex 1d51c9a..47f089c 100644\n--- a/odb/relational/validator.cxx\n+++ b/odb/relational/validator.cxx\n@@ -528,7 +528,7 @@ namespace relational\n     };\n   }\n \n-  void validator::\n+  void\n   validate (options const&,\n             features&,\n             semantics::unit& u,\n@@ -608,7 +608,7 @@ namespace relational\n     }\n \n     if (!valid)\n-      throw failed ();\n+      throw operation_failed ();\n \n     if (pass == 1)\n     {\n@@ -636,6 +636,6 @@ namespace relational\n     }\n \n     if (!valid)\n-      throw failed ();\n+      throw operation_failed ();\n   }\n }\ndiff --git a/odb/relational/validator.hxx b/odb/relational/validator.hxx\nindex f0ede53..93360c3 100644\n--- a/odb/relational/validator.hxx\n+++ b/odb/relational/validator.hxx\n@@ -11,26 +11,15 @@\n \n namespace relational\n {\n-  class validator\n-  {\n-  public:\n-    struct failed {};\n-\n-    // The first pass is performed before processing. The second -- after.\n-    //\n-    void\n-    validate (options const&,\n-              features&,\n-              semantics::unit&,\n-              semantics::path const&,\n-              unsigned short pass);\n-\n-    validator () {}\n-\n-  private:\n-    validator (validator const&);\n-    validator& operator= (validator const&);\n-  };\n+  // The first pass is performed before processing. The second -- after.\n+  // Throws operation_failed to signal a failure.\n+  //\n+  void\n+  validate (options const&,\n+            features&,\n+            semantics::unit&,\n+            semantics::path const&,\n+            unsigned short pass);\n }\n \n #endif // ODB_RELATIONAL_VALIDATOR_HXX\ndiff --git a/odb/validator.cxx b/odb/validator.cxx\nindex e80f4d8..91d91e5 100644\n--- a/odb/validator.cxx\n+++ b/odb/validator.cxx\n@@ -1457,7 +1457,7 @@ namespace\n   };\n }\n \n-void validator::\n+void\n validate (options const& ops,\n           features& f,\n           semantics::unit& u,\n@@ -1506,7 +1506,7 @@ validate (options const& ops,\n   }\n \n   if (!valid)\n-    throw failed ();\n+    throw validator_failed ();\n \n   auto_ptr<context> ctx (create_context (cerr, u, ops, f, 0));\n \n@@ -1559,7 +1559,7 @@ validate (options const& ops,\n   }\n \n   if (!valid)\n-    throw failed ();\n+    throw validator_failed ();\n \n   switch (db)\n   {\n@@ -1575,12 +1575,11 @@ validate (options const& ops,\n     {\n       try\n       {\n-        relational::validator v;\n-        v.validate (ops, f, u, p, pass);\n+        relational::validate (ops, f, u, p, pass);\n       }\n-      catch (relational::validator::failed const&)\n+      catch (operation_failed const&)\n       {\n-        throw failed ();\n+        throw validator_failed ();\n       }\n \n       break;\ndiff --git a/odb/validator.hxx b/odb/validator.hxx\nindex f913049..3ffa470 100644\n--- a/odb/validator.hxx\n+++ b/odb/validator.hxx\n@@ -9,25 +9,15 @@\n #include <odb/features.hxx>\n #include <odb/semantics/unit.hxx>\n \n-class validator\n-{\n-public:\n-  struct failed {};\n+class validator_failed {};\n \n-  // The first pass is performed before processing. The second -- after.\n-  //\n-  void\n-  validate (options const&,\n-            features&,\n-            semantics::unit&,\n-            semantics::path const&,\n-            unsigned short pass);\n-\n-  validator () {}\n-\n-private:\n-  validator (validator const&);\n-  validator& operator= (validator const&);\n-};\n+// The first pass is performed before processing. The second -- after.\n+//\n+void\n+validate (options const&,\n+          features&,\n+          semantics::unit&,\n+          semantics::path const&,\n+          unsigned short pass);\n \n #endif // ODB_VALIDATOR_HXX\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/odb/0003-Initial-work-to-make-ODB-compatible-with-GCC-6.patch",
    "content": "From bf389fd5185143847b1d91aed423e79c322dba51 Mon Sep 17 00:00:00 2001\nFrom: Boris Kolpackov <boris@codesynthesis.com>\nDate: Fri, 5 Feb 2016 16:01:42 +0200\nSubject: [PATCH] Initial work to make ODB compatible with GCC 6\n\n[Upstream: 511dcf67322ad87fb32f97d1cf7725c129e83898]\nSigned-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>\n---\n odb/cxx-lexer.cxx          |  4 ++++\n odb/gcc-fwd.hxx            | 23 ++++++++++++++++++++++-\n odb/gcc.hxx                | 10 ++++++++++\n odb/include.cxx            | 31 +++++++++++++++++++++----------\n odb/parser.cxx             |  8 ++++----\n odb/plugin.cxx             | 29 +++++++++++++++++++++++++++--\n odb/semantics/elements.cxx |  4 ++--\n 7 files changed, 90 insertions(+), 19 deletions(-)\n\ndiff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx\nindex 7029c7e..64df296 100644\n--- a/odb/cxx-lexer.cxx\n+++ b/odb/cxx-lexer.cxx\n@@ -135,8 +135,12 @@ cpp_error_callback (\n #if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 5\n   int /*reason*/, // Added in GCC 4.6.0.\n #endif\n+#if BUILDING_GCC_MAJOR <= 5\n   location_t,\n   unsigned int,\n+#else\n+  rich_location*,\n+#endif\n   char const* msg,\n   va_list *ap)\n {\ndiff --git a/odb/gcc-fwd.hxx b/odb/gcc-fwd.hxx\nindex a120f05..618b106 100644\n--- a/odb/gcc-fwd.hxx\n+++ b/odb/gcc-fwd.hxx\n@@ -7,6 +7,24 @@\n \n #include <bversion.h>\n \n+#if BUILDING_GCC_MAJOR >= 6\n+\n+// If we include <system.h> here, it pulls in all kinds of GCC trouble that\n+// \"poisons\" standard C/C++ declarations; see safe-ctype.h. So instead we\n+// are going to \"exclude\" safe-ctype.h. To compensate, however, we will\n+// include it first thing in gcc.hxx.\n+//\n+#  include <config.h>\n+#  define SAFE_CTYPE_H\n+#  include <system.h>\n+#  undef SAFE_CTYPE_H\n+#  include <coretypes.h>\n+\n+typedef unsigned int source_location; // <line-map.h>\n+typedef source_location location_t;   // <input.h>\n+\n+#else // GCC < 6\n+\n #if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 8\n #  include <limits.h> // CHAR_BIT\n #  include <config.h>\n@@ -33,6 +51,9 @@ extern \"C\"\n \n typedef unsigned int source_location; // <line-map.h>\n typedef source_location location_t;   // <input.h>\n-}\n+\n+} // extern \"C\"\n+\n+#endif\n \n #endif // ODB_GCC_FWD_HXX\ndiff --git a/odb/gcc.hxx b/odb/gcc.hxx\nindex c953047..858d685 100644\n--- a/odb/gcc.hxx\n+++ b/odb/gcc.hxx\n@@ -7,6 +7,10 @@\n \n #include <odb/gcc-fwd.hxx>\n \n+#if BUILDING_GCC_MAJOR >= 6\n+#  include <safe-ctype.h> // See gcc-fwd.hxx.\n+#endif\n+\n // GCC header includes to get the plugin and parse tree declarations.\n // The order is important and doesn't follow any kind of logic.\n //\n@@ -145,4 +149,10 @@ gcc_tree_code_name (gcc_tree_code_type tc) {return tree_code_name[tc];}\n #define DECL_CHAIN(x) TREE_CHAIN(x)\n #endif\n \n+// In GCC 6, ANON_AGGRNAME_P became anon_aggrname_p().\n+//\n+#if BUILDING_GCC_MAJOR < 6\n+#  define anon_aggrname_p(X) ANON_AGGRNAME_P(X)\n+#endif\n+\n #endif // ODB_GCC_HXX\ndiff --git a/odb/include.cxx b/odb/include.cxx\nindex c397993..08c93ce 100644\n--- a/odb/include.cxx\n+++ b/odb/include.cxx\n@@ -30,9 +30,18 @@ namespace\n     path path_;\n   };\n \n+#if BUILDING_GCC_MAJOR >= 6\n+  typedef line_map_ordinary line_map_type;\n+#else\n+  typedef line_map line_map_type;\n+# ifndef linemap_check_ordinary\n+#   define linemap_check_ordinary(X) (X)\n+# endif\n+#endif\n+\n   struct includes\n   {\n-    typedef std::map<line_map const*, include_directive> map_type;\n+    typedef std::map<line_map_type const*, include_directive> map_type;\n     bool trailing; // Included at the beginning or at the end of the main file.\n     map_type map;\n   };\n@@ -144,7 +153,9 @@ namespace\n       //\n       if (l > BUILTINS_LOCATION)\n       {\n-        line_map const* lm (linemap_lookup (line_table, l));\n+        line_map_type const* lm (\n+          linemap_check_ordinary (\n+            linemap_lookup (line_table, l)));\n \n         if (lm != 0 && !MAIN_FILE_P (lm))\n         {\n@@ -537,20 +548,20 @@ namespace\n     //\n #if BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR <= 6\n     size_t used (line_table->used);\n-    line_map const* maps (line_table->maps);\n+    line_map_type const* maps (line_table->maps);\n #else\n     size_t used (line_table->info_ordinary.used);\n-    line_map const* maps (line_table->info_ordinary.maps);\n+    line_map_type const* maps (line_table->info_ordinary.maps);\n #endif\n \n     for (size_t i (0); i < used; ++i)\n     {\n-      line_map const* m (maps + i);\n+      line_map_type const* m (maps + i);\n \n       if (MAIN_FILE_P (m) || m->reason != LC_ENTER)\n         continue;\n \n-      line_map const* ifm (INCLUDED_FROM (line_table, m));\n+      line_map_type const* ifm (INCLUDED_FROM (line_table, m));\n \n #if BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR <= 6\n       path f (m->to_file);\n@@ -580,7 +591,7 @@ namespace\n       for (includes::iterator j (i->second.begin ());\n            j != i->second.end (); ++j)\n       {\n-        line_map const* lm (j->first);\n+        line_map_type const* lm (j->first);\n         cerr << '\\t' << lm->to_file << \":\" << LAST_SOURCE_LINE (lm) << endl;\n       }\n       */\n@@ -589,13 +600,13 @@ namespace\n       // it is preferred over all others. Use the first one if there are\n       // several.\n       //\n-      line_map const* main_lm (0);\n+      line_map_type const* main_lm (0);\n       include_directive* main_inc (0);\n \n       for (includes::map_type::iterator j (i->second.map.begin ());\n            j != i->second.map.end (); ++j)\n       {\n-        line_map const* lm (j->first);\n+        line_map_type const* lm (j->first);\n \n         if (MAIN_FILE_P (lm))\n         {\n@@ -636,7 +647,7 @@ namespace\n       for (includes::map_type::iterator j (i->second.map.begin ());\n            j != i->second.map.end (); ++j)\n       {\n-        line_map const* lm (j->first);\n+        line_map_type const* lm (j->first);\n \n #if BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR <= 6\n         string f (lm->to_file);\ndiff --git a/odb/parser.cxx b/odb/parser.cxx\nindex a8e6a6a..feda9d4 100644\n--- a/odb/parser.cxx\n+++ b/odb/parser.cxx\n@@ -1044,14 +1044,14 @@ emit_type_decl (tree decl)\n     // says that in typedef struct {} S; S becomes struct's\n     // name.\n     //\n-    if (ANON_AGGRNAME_P (decl_name))\n+    if (anon_aggrname_p (decl_name))\n     {\n       tree d (TYPE_NAME (t));\n \n       if (d != NULL_TREE &&\n           !DECL_ARTIFICIAL (d) &&\n           DECL_NAME (d) != NULL_TREE &&\n-          !ANON_AGGRNAME_P (DECL_NAME (d)))\n+          !anon_aggrname_p (DECL_NAME (d)))\n       {\n         decl = d;\n         decl_name = DECL_NAME (decl);\n@@ -1668,7 +1668,7 @@ create_type (tree t,\n             ts << \"start anon/stub \" << gcc_tree_code_name(tc) << \" at \"\n                << file << \":\" << line << endl;\n \n-          if (d == NULL_TREE || ANON_AGGRNAME_P (DECL_NAME (d)))\n+          if (d == NULL_TREE || anon_aggrname_p (DECL_NAME (d)))\n           {\n             if (tc == RECORD_TYPE)\n               r = &emit_class<class_> (t, file, line, clmn);\n@@ -1765,7 +1765,7 @@ create_type (tree t,\n         ts << \"start anon/stub \" << gcc_tree_code_name(tc) << \" at \"\n            << file << \":\" << line << endl;\n \n-      if (d == NULL_TREE || ANON_AGGRNAME_P (DECL_NAME (d)))\n+      if (d == NULL_TREE || anon_aggrname_p (DECL_NAME (d)))\n       {\n         r = &emit_enum (t, access, file, line, clmn);\n       }\ndiff --git a/odb/plugin.cxx b/odb/plugin.cxx\nindex 51f0cb1..779faed 100644\n--- a/odb/plugin.cxx\n+++ b/odb/plugin.cxx\n@@ -45,14 +45,28 @@ path file_;    // File being compiled.\n paths inputs_; // List of input files in at-once mode or just file_.\n \n bool (*cpp_error_prev) (\n-  cpp_reader*, int, int, location_t, unsigned int, const char*, va_list*);\n+  cpp_reader*,\n+  int,\n+  int,\n+#if BUILDING_GCC_MAJOR >= 6\n+  rich_location*,\n+#else\n+  location_t,\n+  unsigned int,\n+#endif\n+  const char*,\n+  va_list*);\n \n static bool\n cpp_error_filter (cpp_reader* r,\n                   int level,\n                   int reason,\n+#if BUILDING_GCC_MAJOR >= 6\n+                  rich_location* l,\n+#else\n                   location_t l,\n                   unsigned int column_override,\n+#endif\n                   const char* msg,\n                   va_list* ap)\n {\n@@ -66,7 +80,18 @@ cpp_error_filter (cpp_reader* r,\n   if (strstr (msg, \"#pragma once\") != 0)\n     return true;\n \n-  return cpp_error_prev (r, level, reason, l, column_override, msg, ap);\n+  return cpp_error_prev (\n+    r,\n+    level,\n+    reason,\n+#if BUILDING_GCC_MAJOR >= 6\n+    l,\n+#else\n+    l,\n+    column_override,\n+#endif\n+    msg,\n+    ap);\n }\n \n // A prefix of the _cpp_file struct. This struct is not part of the\ndiff --git a/odb/semantics/elements.cxx b/odb/semantics/elements.cxx\nindex 21e3260..399d5e9 100644\n--- a/odb/semantics/elements.cxx\n+++ b/odb/semantics/elements.cxx\n@@ -59,7 +59,7 @@ namespace semantics\n       if (tree decl = TYPE_NAME (n))\n         name = DECL_NAME (decl);\n \n-      return name != 0 && ANON_AGGRNAME_P (name);\n+      return name != 0 && anon_aggrname_p (name);\n     }\n \n     return true;\n@@ -108,7 +108,7 @@ namespace semantics\n       if (tree decl = TYPE_NAME (type))\n       {\n         name = DECL_NAME (decl);\n-        if (name != 0 && ANON_AGGRNAME_P (name))\n+        if (name != 0 && anon_aggrname_p (name))\n           return true;\n \n         tree s (CP_DECL_CONTEXT (decl));\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/odb/0004-Make-compilable-with-GCC-6-in-C-14-mode.patch",
    "content": "From 4584b69c45b701c3689d6a974f1ee560a79a243e Mon Sep 17 00:00:00 2001\nFrom: Boris Kolpackov <boris@codesynthesis.com>\nDate: Mon, 8 Feb 2016 18:39:21 +0200\nSubject: [PATCH] Make compilable with GCC 6 in C++14 mode\n\n[Upstream: 61d13eb53ade9f30a64892a901401bda5e42c335]\nSigned-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>\n---\n odb/gcc.hxx    | 9 ++++++---\n odb/parser.cxx | 2 ++\n 2 files changed, 8 insertions(+), 3 deletions(-)\n\ndiff --git a/odb/gcc.hxx b/odb/gcc.hxx\nindex 858d685..a22357d 100644\n--- a/odb/gcc.hxx\n+++ b/odb/gcc.hxx\n@@ -7,9 +7,12 @@\n \n #include <odb/gcc-fwd.hxx>\n \n-#if BUILDING_GCC_MAJOR >= 6\n-#  include <safe-ctype.h> // See gcc-fwd.hxx.\n-#endif\n+// Actually, let's keep it out. With it included we can compile in C++98\n+// but not in C++14 (GCC 6 default).\n+//\n+// #if BUILDING_GCC_MAJOR >= 6\n+// #  include <safe-ctype.h> // See gcc-fwd.hxx.\n+// #endif\n \n // GCC header includes to get the plugin and parse tree declarations.\n // The order is important and doesn't follow any kind of logic.\ndiff --git a/odb/parser.cxx b/odb/parser.cxx\nindex feda9d4..a9d22fb 100644\n--- a/odb/parser.cxx\n+++ b/odb/parser.cxx\n@@ -1831,6 +1831,8 @@ create_type (tree t,\n       // the array type. In other words, we view it as \"constant array\"\n       // rather than \"array of constant elements\".\n       //\n+      using semantics::array; // vs std::array.\n+\n       tree bt (TREE_TYPE (t));\n       tree bt_mv (TYPE_MAIN_VARIANT (bt));\n       type& bt_node (emit_type (bt_mv, access::public_, file, line, clmn));\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/odb/0005-Fix-bug-in-GCC-6-input_location-translation.patch",
    "content": "From 029687831099bf1dcc944517f9e48af1db5b0361 Mon Sep 17 00:00:00 2001\nFrom: Boris Kolpackov <boris@codesynthesis.com>\nDate: Fri, 23 Dec 2016 10:18:01 +0200\nSubject: [PATCH] Fix bug in GCC 6 input_location translation\n\n[Upstream: ec777147024fde72e4411cc6b1e1e49f4a1d1804]\nSigned-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>\n---\n odb/cxx-lexer.cxx | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx\nindex 64df296..ae045d9 100644\n--- a/odb/cxx-lexer.cxx\n+++ b/odb/cxx-lexer.cxx\n@@ -106,7 +106,15 @@ next (string& token, tree* node)\n location_t cxx_pragma_lexer::\n location () const\n {\n+  // Starting from GCC 6 the input location seem to require the same\n+  // translation as what we do in real_source_location().\n+  //\n+#if BUILDING_GCC_MAJOR >= 6\n+  return linemap_resolve_location (\n+    line_table, input_location, LRK_MACRO_EXPANSION_POINT, 0);\n+#else\n   return input_location;\n+#endif\n }\n \n string cxx_pragma_lexer::\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/odb/0006-Adapt-to-changes-in-GCC-8.patch",
    "content": "From aca617685045b1984c19c415a474893407578394 Mon Sep 17 00:00:00 2001\nFrom: Boris Kolpackov <boris@codesynthesis.com>\nDate: Tue, 7 Nov 2017 14:58:43 +0200\nSubject: [PATCH] Adapt to changes in GCC 8\n\n[Upstream: 356630ced28f3101e8e2d88e3c52f8d3008515c7]\nSigned-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>\n---\n odb/cxx-lexer.cxx          | 16 ++++++++++++++--\n odb/parser.cxx             | 27 ++++++++++++++++++++++++++-\n odb/processor.cxx          | 30 ++++++++++++++++++++++--------\n odb/semantics/elements.cxx |  8 ++++++++\n odb/validator.cxx          | 10 +++++++++-\n 5 files changed, 79 insertions(+), 12 deletions(-)\n\ndiff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx\nindex ae045d9..cfebbb5 100644\n--- a/odb/cxx-lexer.cxx\n+++ b/odb/cxx-lexer.cxx\n@@ -93,7 +93,13 @@ next (string& token, tree* node)\n   // See if this is a keyword using the C++ parser machinery and\n   // the current C++ dialect.\n   //\n-  if (*type_ == CPP_NAME && C_IS_RESERVED_WORD (*token_))\n+  if (*type_ == CPP_NAME &&\n+#if BUILDING_GCC_MAJOR >= 8\n+      IDENTIFIER_KEYWORD_P (*token_)\n+#else\n+      C_IS_RESERVED_WORD (*token_)\n+#endif\n+  )\n     *type_ = CPP_KEYWORD;\n \n   if (node != 0 && node != token_)\n@@ -281,7 +287,13 @@ next (string& token, tree* node)\n       //\n       tree id (get_identifier (name));\n \n-      if (C_IS_RESERVED_WORD (id))\n+      if (\n+#if BUILDING_GCC_MAJOR >= 8\n+        IDENTIFIER_KEYWORD_P (id)\n+#else\n+        C_IS_RESERVED_WORD (id)\n+#endif\n+      )\n         tt = CPP_KEYWORD;\n \n       if (node != 0)\ndiff --git a/odb/parser.cxx b/odb/parser.cxx\nindex a9d22fb..927063b 100644\n--- a/odb/parser.cxx\n+++ b/odb/parser.cxx\n@@ -889,8 +889,23 @@ collect (tree ns)\n \n   // Traverse namespaces.\n   //\n-  for (decl = level->namespaces; decl != NULL_TREE; decl = TREE_CHAIN (decl))\n+  for (\n+#if BUILDING_GCC_MAJOR >= 8\n+    decl = level->names;\n+#else\n+    decl = level->namespaces;\n+#endif\n+    decl != NULL_TREE;\n+    decl = TREE_CHAIN (decl))\n   {\n+#if BUILDING_GCC_MAJOR >= 8\n+    // Now namespaces are interleaved with other declarations. In fact, we\n+    // could probably collect everything in a single pass.\n+    //\n+    if (TREE_CODE (decl) != NAMESPACE_DECL)\n+      continue;\n+#endif\n+\n     if (!DECL_IS_BUILTIN (decl) || DECL_NAMESPACE_STD_P (decl))\n     {\n       if (trace)\n@@ -960,9 +975,15 @@ emit ()\n         // approximation for this namespace origin. Also resolve\n         // the tree node for this namespace.\n         //\n+#if BUILDING_GCC_MAJOR >= 8\n+        tree tree_node (\n+          get_namespace_binding (\n+            scope_->tree_node (), get_identifier (n.c_str ())));\n+#else\n         tree tree_node (\n           namespace_binding (\n             get_identifier (n.c_str ()), scope_->tree_node ()));\n+#endif\n \n         namespace_& node (unit_->new_node<namespace_> (f, l, c, tree_node));\n         unit_->new_edge<defines> (*scope_, node, n);\n@@ -2218,7 +2239,11 @@ fq_scope (tree decl)\n \n     // If this is an inline namespace, pretend it doesn't exist.\n     //\n+#if BUILDING_GCC_MAJOR >= 8\n+    if (!is_nested_namespace (prev, scope, true))\n+#else\n     if (!is_associated_namespace (prev, scope))\n+#endif\n     {\n       tree n = DECL_NAME (scope);\n \ndiff --git a/odb/processor.cxx b/odb/processor.cxx\nindex 3a2cb1d..bea3624 100644\n--- a/odb/processor.cxx\n+++ b/odb/processor.cxx\n@@ -423,12 +423,17 @@ namespace\n \n             // OVL_* macros work for both FUNCTION_DECL and OVERLOAD.\n             //\n-            for (tree o (BASELINK_FUNCTIONS (decl));\n-                 o != 0;\n-                 o = OVL_NEXT (o))\n+#if BUILDING_GCC_MAJOR >= 8\n+            for (ovl_iterator i (BASELINK_FUNCTIONS (decl)); i; ++i)\n+#else\n+            for (tree o (BASELINK_FUNCTIONS (decl)); o != 0; o = OVL_NEXT (o))\n+#endif\n             {\n+#if BUILDING_GCC_MAJOR >= 8\n+              tree f (*i);\n+#else\n               tree f (OVL_CURRENT (o));\n-\n+#endif\n               // We are only interested in public non-static member\n               // functions. Note that TREE_PUBLIC() returns something\n               // other than what we need.\n@@ -530,12 +535,17 @@ namespace\n           {\n             // OVL_* macros work for both FUNCTION_DECL and OVERLOAD.\n             //\n-            for (tree o (BASELINK_FUNCTIONS (decl));\n-                 o != 0;\n-                 o = OVL_NEXT (o))\n+#if BUILDING_GCC_MAJOR >= 8\n+            for (ovl_iterator i (BASELINK_FUNCTIONS (decl)); i; ++i)\n+#else\n+            for (tree o (BASELINK_FUNCTIONS (decl)); o != 0; o = OVL_NEXT (o))\n+#endif\n             {\n+#if BUILDING_GCC_MAJOR >= 8\n+              tree f (*i);\n+#else\n               tree f (OVL_CURRENT (o));\n-\n+#endif\n               // We are only interested in non-static member functions.\n               //\n               if (!DECL_NONSTATIC_MEMBER_FUNCTION_P (f))\n@@ -2934,7 +2944,11 @@ namespace\n                   {\n                     tree prev (CP_DECL_CONTEXT (scope));\n \n+#if BUILDING_GCC_MAJOR >= 8\n+                    if (!is_nested_namespace (prev, scope, true))\n+#else\n                     if (!is_associated_namespace (prev, scope))\n+#endif\n                       break;\n \n                     scope = prev;\ndiff --git a/odb/semantics/elements.cxx b/odb/semantics/elements.cxx\nindex 399d5e9..4c380d8 100644\n--- a/odb/semantics/elements.cxx\n+++ b/odb/semantics/elements.cxx\n@@ -126,7 +126,11 @@ namespace semantics\n           {\n             tree prev (CP_DECL_CONTEXT (s));\n \n+#if BUILDING_GCC_MAJOR >= 8\n+            if (!is_nested_namespace (prev, s, true))\n+#else\n             if (!is_associated_namespace (prev, s))\n+#endif\n               break;\n \n             s = prev;\n@@ -223,7 +227,11 @@ namespace semantics\n             {\n               // Check if this is an inline namespace and skip it if so.\n               //\n+#if BUILDING_GCC_MAJOR >= 8\n+              if (is_nested_namespace (ns, new_ns, true))\n+#else\n               if (is_associated_namespace (ns, new_ns))\n+#endif\n               {\n                 // Skip also the following scope operator. Strictly speaking\n                 // there could be none (i.e., this is a name of an inline\ndiff --git a/odb/validator.cxx b/odb/validator.cxx\nindex 91d91e5..aac52e4 100644\n--- a/odb/validator.cxx\n+++ b/odb/validator.cxx\n@@ -520,9 +520,17 @@ namespace\n         // Figure out if we have a const version of the callback. OVL_*\n         // macros work for both FUNCTION_DECL and OVERLOAD.\n         //\n+#if BUILDING_GCC_MAJOR >= 8\n+          for (ovl_iterator i (BASELINK_FUNCTIONS (decl)); i; ++i)\n+#else\n         for (tree o (BASELINK_FUNCTIONS (decl)); o != 0; o = OVL_NEXT (o))\n+#endif\n         {\n+#if BUILDING_GCC_MAJOR >= 8\n+            tree f (*i);\n+#else\n           tree f (OVL_CURRENT (o));\n+#endif\n           if (DECL_CONST_MEMFUNC_P (f))\n           {\n             c.set (\"callback-const\", true);\n@@ -1223,7 +1231,7 @@ namespace\n             compiler, get_identifier (\"has_lt_operator\"), false, false);\n \n           if (has_lt_operator_ != error_mark_node)\n-            has_lt_operator_ = OVL_CURRENT (has_lt_operator_);\n+            has_lt_operator_ = OVL_FIRST (has_lt_operator_);\n           else\n           {\n             os << unit.file () << \": error: unable to resolve has_lt_operator \"\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/odb/0007-Switch-to-C-11-get-rid-of-auto_ptr-use.patch",
    "content": "From c5bea9562929c6b55ca208a530ae80033eeb1614 Mon Sep 17 00:00:00 2001\nFrom: Boris Kolpackov <boris@codesynthesis.com>\nDate: Tue, 7 Nov 2017 10:37:53 +0200\nSubject: [PATCH] Switch to C++11, get rid of auto_ptr use\n\n[Upstream: 6e374de9ae2f2978f2fca3390aba4ea3f72bfade]\nSigned-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>\n---\n odb/Makefile.am   |  5 +++++\n odb/context.cxx   |  4 ++--\n odb/context.hxx   |  4 ++--\n odb/generator.cxx | 18 +++++++++---------\n odb/options.cli   |  4 ++--\n odb/parser.cxx    | 14 ++++++++++----\n odb/parser.hxx    |  7 ++++---\n odb/plugin.cxx    | 10 +++++-----\n odb/processor.cxx |  6 +++---\n odb/validator.cxx |  2 +-\n 10 files changed, 43 insertions(+), 31 deletions(-)\n\ndiff --git a/odb/Makefile.am b/odb/Makefile.am\nindex 2f01398..d9e83d7 100644\n--- a/odb/Makefile.am\n+++ b/odb/Makefile.am\n@@ -9,6 +9,11 @@ plugin_LTLIBRARIES = odb.la\n \n AM_CPPFLAGS = -I'$(top_builddir)' -I'$(top_srcdir)'\n \n+# Note: not passed by libtool when linking odb.so. Seems to be harmless for\n+# now.\n+#\n+AM_CXXFLAGS = -std=c++0x\n+\n EXTRA_DIST = common-query.hxx common.hxx context.hxx context.ixx cxx-lexer.hxx cxx-token.hxx diagnostics.hxx emitter.hxx features.hxx gcc-fwd.hxx gcc.hxx generate.hxx generator.hxx instance.hxx location.hxx lookup.hxx option-functions.hxx option-parsers.hxx option-types.hxx options.hxx options.ixx parser.hxx pragma.hxx processor.hxx profile.hxx relational/common-query.hxx relational/common.hxx relational/common.txx relational/context.hxx relational/context.ixx relational/generate.hxx relational/header.hxx relational/inline.hxx relational/model.hxx relational/mssql/common.hxx relational/mssql/context.hxx relational/mysql/common.hxx relational/mysql/context.hxx relational/oracle/common.hxx relational/oracle/context.hxx relational/pgsql/common.hxx relational/pgsql/context.hxx relational/processor.hxx relational/schema-source.hxx relational/schema.hxx relational/source.hxx relational/sqlite/common.hxx relational/sqlite/context.hxx relational/validator.hxx semantics.hxx semantics/class-template.hxx semantics/class.hxx semantics/derived.hxx semantics/elements.hxx semantics/elements.ixx semantics/enum.hxx semantics/fundamental.hxx semantics/namespace.hxx semantics/relational.hxx semantics/relational/changelog.hxx semantics/relational/changeset.hxx semantics/relational/column.hxx semantics/relational/deferrable.hxx semantics/relational/elements.hxx semantics/relational/elements.txx semantics/relational/foreign-key.hxx semantics/relational/index.hxx semantics/relational/key.hxx semantics/relational/model.hxx semantics/relational/name.hxx semantics/relational/primary-key.hxx semantics/relational/table.hxx semantics/template.hxx semantics/union-template.hxx semantics/union.hxx semantics/unit.hxx sql-lexer.hxx sql-lexer.ixx sql-token.hxx sql-token.ixx traversal.hxx traversal/class-template.hxx traversal/class.hxx traversal/derived.hxx traversal/elements.hxx traversal/enum.hxx traversal/fundamental.hxx traversal/namespace.hxx traversal/relational.hxx traversal/relational/changelog.hxx traversal/relational/changeset.hxx traversal/relational/column.hxx traversal/relational/elements.hxx traversal/relational/foreign-key.hxx traversal/relational/index.hxx traversal/relational/key.hxx traversal/relational/model.hxx traversal/relational/primary-key.hxx traversal/relational/table.hxx traversal/template.hxx traversal/union-template.hxx traversal/union.hxx traversal/unit.hxx validator.hxx version.hxx options.cli\n \n # Plugin.\ndiff --git a/odb/context.cxx b/odb/context.cxx\nindex d62fa88..87f1c32 100644\n--- a/odb/context.cxx\n+++ b/odb/context.cxx\n@@ -564,14 +564,14 @@ namespace\n   };\n }\n \n-auto_ptr<context>\n+unique_ptr<context>\n create_context (ostream& os,\n                 semantics::unit& unit,\n                 options const& ops,\n                 features& f,\n                 semantics::relational::model* m)\n {\n-  auto_ptr<context> r;\n+  unique_ptr<context> r;\n \n   switch (ops.database ()[0])\n   {\ndiff --git a/odb/context.hxx b/odb/context.hxx\nindex 351bc61..10de237 100644\n--- a/odb/context.hxx\n+++ b/odb/context.hxx\n@@ -13,7 +13,7 @@\n #include <stack>\n #include <vector>\n #include <string>\n-#include <memory>  // std::auto_ptr\n+#include <memory>  // std::unique_ptr\n #include <ostream>\n #include <cstddef> // std::size_t\n #include <iostream>\n@@ -1691,7 +1691,7 @@ private:\n \n // Create concrete database context.\n //\n-std::auto_ptr<context>\n+std::unique_ptr<context>\n create_context (std::ostream&,\n                 semantics::unit&,\n                 options const&,\ndiff --git a/odb/generator.cxx b/odb/generator.cxx\nindex 6aa5151..266b75f 100644\n--- a/odb/generator.cxx\n+++ b/odb/generator.cxx\n@@ -4,7 +4,7 @@\n \n #include <cctype>  // std::toupper, std::is{alpha,upper,lower}\n #include <string>\n-#include <memory>  // std::auto_ptr\n+#include <memory>  // std::unique_ptr\n #include <iomanip>\n #include <fstream>\n #include <sstream>\n@@ -141,7 +141,7 @@ generate (options const& ops,\n \n     if (gen_schema)\n     {\n-      auto_ptr<context> ctx (create_context (cerr, unit, ops, fts, 0));\n+      unique_ptr<context> ctx (create_context (cerr, unit, ops, fts, 0));\n \n       switch (db)\n       {\n@@ -471,7 +471,7 @@ generate (options const& ops,\n     //\n     if (gen_cxx)\n     {\n-      auto_ptr<context> ctx (\n+      unique_ptr<context> ctx (\n         create_context (hxx, unit, ops, fts, model.get ()));\n \n       sloc_filter sloc (ctx->os);\n@@ -581,7 +581,7 @@ generate (options const& ops,\n     //\n     if (gen_cxx)\n     {\n-      auto_ptr<context> ctx (\n+      unique_ptr<context> ctx (\n         create_context (ixx, unit, ops, fts, model.get ()));\n \n       sloc_filter sloc (ctx->os);\n@@ -641,7 +641,7 @@ generate (options const& ops,\n     //\n     if (gen_cxx && (db != database::common || md == multi_database::dynamic))\n     {\n-      auto_ptr<context> ctx (\n+      unique_ptr<context> ctx (\n         create_context (cxx, unit, ops, fts, model.get ()));\n \n       sloc_filter sloc (ctx->os);\n@@ -734,7 +734,7 @@ generate (options const& ops,\n     //\n     if (gen_sep_schema)\n     {\n-      auto_ptr<context> ctx (\n+      unique_ptr<context> ctx (\n         create_context (sch, unit, ops, fts, model.get ()));\n \n       sloc_filter sloc (ctx->os);\n@@ -799,7 +799,7 @@ generate (options const& ops,\n     //\n     if (gen_sql_schema)\n     {\n-      auto_ptr<context> ctx (\n+      unique_ptr<context> ctx (\n         create_context (sql, unit, ops, fts, model.get ()));\n \n       switch (db)\n@@ -865,7 +865,7 @@ generate (options const& ops,\n         //\n         {\n           ofstream& mig (*mig_pre[i]);\n-          auto_ptr<context> ctx (create_context (mig, unit, ops, fts, 0));\n+          unique_ptr<context> ctx (create_context (mig, unit, ops, fts, 0));\n \n           switch (db)\n           {\n@@ -908,7 +908,7 @@ generate (options const& ops,\n         //\n         {\n           ofstream& mig (*mig_post[i]);\n-          auto_ptr<context> ctx (create_context (mig, unit, ops, fts, 0));\n+          unique_ptr<context> ctx (create_context (mig, unit, ops, fts, 0));\n \n           switch (db)\n           {\ndiff --git a/odb/options.cli b/odb/options.cli\nindex cf278cb..c994975 100644\n--- a/odb/options.cli\n+++ b/odb/options.cli\n@@ -211,10 +211,10 @@ class options\n      \\cb{db pointer} pragma will use this pointer by default. The value\n      of this option can be \\cb{*} which denotes the raw pointer and is\n      the default, or qualified name of a smart pointer class template,\n-     for example, \\cb{std::auto_ptr}. In the latter case, the ODB compiler\n+     for example, \\cb{std::shared_ptr}. In the latter case, the ODB compiler\n      constructs the object or view pointer by adding a single template\n      argument of the object or view type to the qualified name, for example\n-     \\cb{std::auto_ptr<object>}. The ODB runtime uses object and view\n+     \\cb{std::shared_ptr<object>}. The ODB runtime uses object and view\n      pointers to return, and, in case of objects, pass and cache\n      dynamically allocated instances of object and view types.\n \ndiff --git a/odb/parser.cxx b/odb/parser.cxx\nindex 927063b..30e45af 100644\n--- a/odb/parser.cxx\n+++ b/odb/parser.cxx\n@@ -26,7 +26,7 @@ public:\n \n   impl (options const&, loc_pragmas&, ns_loc_pragmas&, decl_pragmas&);\n \n-  auto_ptr<unit>\n+  unique_ptr<unit>\n   parse (tree global_scope, path const& main_file);\n \n private:\n@@ -728,10 +728,10 @@ impl (options const& ops,\n {\n }\n \n-auto_ptr<unit> parser::impl::\n+unique_ptr<unit> parser::impl::\n parse (tree global_scope, path const& main_file)\n {\n-  auto_ptr<unit> u (new unit (main_file));\n+  unique_ptr<unit> u (new unit (main_file));\n   u->insert (global_namespace, *u);\n   process_named_pragmas (global_namespace, *u);\n \n@@ -2263,6 +2263,12 @@ fq_scope (tree decl)\n // parser\n //\n \n+parser::\n+~parser ()\n+{\n+  // Needs parser::impl definition.\n+}\n+\n parser::\n parser (options const& ops,\n         loc_pragmas& lp,\n@@ -2272,7 +2278,7 @@ parser (options const& ops,\n {\n }\n \n-auto_ptr<unit> parser::\n+unique_ptr<unit> parser::\n parse (tree global_scope, path const& main_file)\n {\n   return impl_->parse (global_scope, main_file);\ndiff --git a/odb/parser.hxx b/odb/parser.hxx\nindex 80e4aa4..648337f 100644\n--- a/odb/parser.hxx\n+++ b/odb/parser.hxx\n@@ -7,7 +7,7 @@\n \n #include <odb/gcc.hxx>\n \n-#include <memory>  // std::auto_ptr\n+#include <memory>  // std::unique_ptr\n \n #include <odb/pragma.hxx>\n #include <odb/options.hxx>\n@@ -18,9 +18,10 @@ class parser\n public:\n   class failed {};\n \n+  ~parser ();\n   parser (options const&, loc_pragmas&, ns_loc_pragmas&, decl_pragmas&);\n \n-  std::auto_ptr<semantics::unit>\n+  std::unique_ptr<semantics::unit>\n   parse (tree global_scope, semantics::path const& main_file);\n \n private:\n@@ -31,7 +32,7 @@ private:\n \n private:\n   class impl;\n-  std::auto_ptr<impl> impl_;\n+  std::unique_ptr<impl> impl_;\n };\n \n #endif // ODB_PARSER_HXX\ndiff --git a/odb/plugin.cxx b/odb/plugin.cxx\nindex 779faed..0fac632 100644\n--- a/odb/plugin.cxx\n+++ b/odb/plugin.cxx\n@@ -8,7 +8,7 @@\n #include <sys/types.h> // stat\n #include <sys/stat.h>  // stat\n \n-#include <memory>  // std::auto_ptr\n+#include <memory>  // std::unique_ptr\n #include <string>\n #include <vector>\n #include <cstring> // std::strcpy, std::strstr\n@@ -39,7 +39,7 @@ using cutl::fs::invalid_path;\n typedef vector<path> paths;\n \n int plugin_is_GPL_compatible;\n-auto_ptr<options const> options_;\n+unique_ptr<options const> options_;\n paths profile_paths_;\n path file_;    // File being compiled.\n paths inputs_; // List of input files in at-once mode or just file_.\n@@ -222,7 +222,7 @@ gate_callback (void*, void*)\n     // Parse the GCC tree to semantic graph.\n     //\n     parser p (*options_, loc_pragmas_, ns_loc_pragmas_, decl_pragmas_);\n-    auto_ptr<unit> u (p.parse (global_namespace, file_));\n+    unique_ptr<unit> u (p.parse (global_namespace, file_));\n \n     features f;\n \n@@ -377,14 +377,14 @@ plugin_init (plugin_name_args* plugin_info, plugin_gcc_version*)\n       oi[2].arg = &pd;\n \n       cli::argv_file_scanner scan (argc, &argv[0], oi, 3);\n-      auto_ptr<options> ops (\n+      unique_ptr<options> ops (\n         new options (scan, cli::unknown_mode::fail, cli::unknown_mode::fail));\n \n       // Process options.\n       //\n       process_options (*ops);\n \n-      options_ = ops;\n+      options_ = move (ops);\n       pragma_db_ = db;\n       pragma_multi_ = options_->multi_database ();\n     }\ndiff --git a/odb/processor.cxx b/odb/processor.cxx\nindex bea3624..c787e0d 100644\n--- a/odb/processor.cxx\n+++ b/odb/processor.cxx\n@@ -120,8 +120,8 @@ namespace\n       // both the wrapper type and the wrapped type must be const.\n       // To see why, consider these possibilities:\n       //\n-      // auto_ptr<const T> - can modify by setting a new pointer\n-      // const auto_ptr<T> - can modify by changing the pointed-to value\n+      // unique_ptr<const T> - can modify by setting a new pointer\n+      // const unique_ptr<T> - can modify by changing the pointed-to value\n       //\n       if (const_type (m.type ()) &&\n           !(id (m) || version (m) || m.count (\"inverse\")))\n@@ -3086,7 +3086,7 @@ process (options const& ops,\n {\n   try\n   {\n-    auto_ptr<context> ctx (create_context (cerr, unit, ops, f, 0));\n+    unique_ptr<context> ctx (create_context (cerr, unit, ops, f, 0));\n \n     // Common processing.\n     //\ndiff --git a/odb/validator.cxx b/odb/validator.cxx\nindex aac52e4..196386c 100644\n--- a/odb/validator.cxx\n+++ b/odb/validator.cxx\n@@ -1516,7 +1516,7 @@ validate (options const& ops,\n   if (!valid)\n     throw validator_failed ();\n \n-  auto_ptr<context> ctx (create_context (cerr, u, ops, f, 0));\n+  unique_ptr<context> ctx (create_context (cerr, u, ops, f, 0));\n \n   if (pass == 1)\n   {\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/odb/0008-Fix-GCC-8-adaptation-to-be-compatible-with-previous-.patch",
    "content": "From 8cc165a2f7f945db36a18e462138553a000292cd Mon Sep 17 00:00:00 2001\nFrom: Boris Kolpackov <boris@codesynthesis.com>\nDate: Tue, 7 Nov 2017 16:57:35 +0200\nSubject: [PATCH] Fix GCC 8 adaptation to be compatible with previous\n versions\n\n[Upstream: 006bbc5748a8197d7874550cc9186545f1c55ad8]\nSigned-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>\n---\n odb/validator.cxx | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/odb/validator.cxx b/odb/validator.cxx\nindex 196386c..f0edaaf 100644\n--- a/odb/validator.cxx\n+++ b/odb/validator.cxx\n@@ -1231,7 +1231,13 @@ namespace\n             compiler, get_identifier (\"has_lt_operator\"), false, false);\n \n           if (has_lt_operator_ != error_mark_node)\n+          {\n+#if BUILDING_GCC_MAJOR >= 8\n             has_lt_operator_ = OVL_FIRST (has_lt_operator_);\n+#else\n+            has_lt_operator_ = OVL_CURRENT (has_lt_operator_);\n+#endif\n+          }\n           else\n           {\n             os << unit.file () << \": error: unable to resolve has_lt_operator \"\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/odb/0009-Handle-namespace-aliases-when-parsing-GCC-tree.patch",
    "content": "From 2d37e44753c1e67de4658b6fdf95760432c74ead Mon Sep 17 00:00:00 2001\nFrom: Boris Kolpackov <boris@codesynthesis.com>\nDate: Fri, 5 Oct 2018 07:20:18 +0200\nSubject: [PATCH] Handle namespace aliases when parsing GCC tree\n\n[Upstream: 3a1788234bfaa96ee093b68e9ba02cf7d5bdffe6]\nSigned-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>\n---\n odb/parser.cxx | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/odb/parser.cxx b/odb/parser.cxx\nindex 30e45af..03bcb01 100644\n--- a/odb/parser.cxx\n+++ b/odb/parser.cxx\n@@ -906,6 +906,11 @@ collect (tree ns)\n       continue;\n #endif\n \n+    // Ignore namespace aliases.\n+    //\n+    if (DECL_NAMESPACE_ALIAS (decl))\n+      continue;\n+\n     if (!DECL_IS_BUILTIN (decl) || DECL_NAMESPACE_STD_P (decl))\n     {\n       if (trace)\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/odb/0010-Add-initial-support-for-GCC-9.patch",
    "content": "From cd9a15f42ef35449a8ad480352f9f5495eb37c30 Mon Sep 17 00:00:00 2001\nFrom: Boris Kolpackov <boris@codesynthesis.com>\nDate: Fri, 15 Mar 2019 17:37:28 +0200\nSubject: [PATCH] Add initial support for GCC 9\n\n[Upstream: 841140bbf13ae2bfaa5978a181718cda0a8edae7]\nSigned-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>\n---\n odb/cxx-lexer.cxx | 33 +++++++++++++++++++++++++++------\n odb/gcc.hxx       | 32 ++++++++++++++++++++++++++++++++\n odb/include.cxx   |  3 +++\n odb/plugin.cxx    | 45 ++++++++++++++++++++++++++++++---------------\n 4 files changed, 92 insertions(+), 21 deletions(-)\n\ndiff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx\nindex cfebbb5..acd13be 100644\n--- a/odb/cxx-lexer.cxx\n+++ b/odb/cxx-lexer.cxx\n@@ -143,12 +143,20 @@ translate ()\n // Diagnostics callback.\n //\n extern \"C\" bool\n-cpp_error_callback (\n+cpp_diagnostic_callback (\n   cpp_reader* reader,\n+#if BUILDING_GCC_MAJOR >= 9\n+  cpp_diagnostic_level level,\n+#else\n   int level,\n+#endif\n #if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 5\n+#if BUILDING_GCC_MAJOR >= 9\n+  cpp_warning_reason,\n+#else\n   int /*reason*/, // Added in GCC 4.6.0.\n #endif\n+#endif\n #if BUILDING_GCC_MAJOR <= 5\n   location_t,\n   unsigned int,\n@@ -185,10 +193,14 @@ cpp_error_callback (\n     vfprintf (stderr, msg, *ap);\n     fprintf (stderr, \"\\n\");\n \n-    // By resetting the error callback we indicate to cxx_string_lexer\n-    // that there was an error.\n+    // By resetting the callback we indicate to cxx_string_lexer that there\n+    // was an error.\n     //\n+#if BUILDING_GCC_MAJOR >= 9\n+    cpp_get_callbacks (reader)->diagnostic = 0;\n+#else\n     cpp_get_callbacks (reader)->error = 0;\n+#endif\n     return true;\n   }\n \n@@ -247,7 +259,12 @@ start (string const& data)\n   // The previous lexing session should have popped the buffer.\n   //\n   assert (cpp_get_buffer (reader_) == 0);\n-  callbacks_->error = &cpp_error_callback;\n+\n+#if BUILDING_GCC_MAJOR >= 9\n+  callbacks_->diagnostic = &cpp_diagnostic_callback;\n+#else\n+  callbacks_->error = &cpp_diagnostic_callback;\n+#endif\n \n   data_ = data;\n   buf_ = data;\n@@ -267,10 +284,14 @@ next (string& token, tree* node)\n   token.clear ();\n   cpp_token const* t (cpp_get_token (reader_));\n \n-  // If there was an error, the error callback will be reset to 0.\n-  // Diagnostics has already been issued.\n+  // If there was an error, the callback will be reset to 0. Diagnostics has\n+  // already been issued.\n   //\n+#if BUILDING_GCC_MAJOR >= 9\n+  if (callbacks_->diagnostic == 0)\n+#else\n   if (callbacks_->error == 0)\n+#endif\n     throw invalid_input ();\n \n   cpp_ttype tt (t->type);\ndiff --git a/odb/gcc.hxx b/odb/gcc.hxx\nindex a22357d..0304192 100644\n--- a/odb/gcc.hxx\n+++ b/odb/gcc.hxx\n@@ -158,4 +158,36 @@ gcc_tree_code_name (gcc_tree_code_type tc) {return tree_code_name[tc];}\n #  define anon_aggrname_p(X) ANON_AGGRNAME_P(X)\n #endif\n \n+// In GCC 9:\n+//\n+// INCLUDED_FROM     Became linemap_included_from_linemap().\n+// LAST_SOURCE_LINE  Was removed apparently as no longer used. Studying\n+//                   the line-map.h diff from 8.3 suggests that the old\n+//                   implementation should still work.\n+//\n+#if BUILDING_GCC_MAJOR >= 9\n+\n+inline const line_map_ordinary*\n+INCLUDED_FROM (line_maps* set, const line_map_ordinary* map)\n+{\n+  return linemap_included_from_linemap (set, map);\n+}\n+\n+inline source_location\n+LAST_SOURCE_LINE_LOCATION (const line_map_ordinary* map)\n+{\n+  return (((map[1].start_location - 1\n+\t    - map->start_location)\n+\t   & ~((1 << map->m_column_and_range_bits) - 1))\n+\t  + map->start_location);\n+}\n+\n+inline linenum_type\n+LAST_SOURCE_LINE (const line_map_ordinary* map)\n+{\n+  return SOURCE_LINE (map, LAST_SOURCE_LINE_LOCATION (map));\n+}\n+\n+#endif\n+\n #endif // ODB_GCC_HXX\ndiff --git a/odb/include.cxx b/odb/include.cxx\nindex 08c93ce..0082f5e 100644\n--- a/odb/include.cxx\n+++ b/odb/include.cxx\n@@ -584,6 +584,9 @@ namespace\n \n     for (include_map::iterator i (imap.begin ()), e (imap.end ()); i != e; ++i)\n     {\n+      // Note that the LAST_SOURCE_LINE value of a map that includes another\n+      // map is the line of that include.\n+\n       /*\n       cerr << endl\n            << i->first << \" included from\" << endl;\ndiff --git a/odb/plugin.cxx b/odb/plugin.cxx\nindex 0fac632..892f27c 100644\n--- a/odb/plugin.cxx\n+++ b/odb/plugin.cxx\n@@ -44,10 +44,15 @@ paths profile_paths_;\n path file_;    // File being compiled.\n paths inputs_; // List of input files in at-once mode or just file_.\n \n-bool (*cpp_error_prev) (\n+bool (*cpp_diagnostic_prev) (\n   cpp_reader*,\n+#if BUILDING_GCC_MAJOR >= 9\n+  cpp_diagnostic_level,\n+  cpp_warning_reason,\n+#else\n   int,\n   int,\n+#endif\n #if BUILDING_GCC_MAJOR >= 6\n   rich_location*,\n #else\n@@ -58,17 +63,22 @@ bool (*cpp_error_prev) (\n   va_list*);\n \n static bool\n-cpp_error_filter (cpp_reader* r,\n-                  int level,\n-                  int reason,\n+cpp_diagnostic_filter (cpp_reader* r,\n+#if BUILDING_GCC_MAJOR >= 9\n+                       cpp_diagnostic_level level,\n+                       cpp_warning_reason reason,\n+#else\n+                       int level,\n+                       int reason,\n+#endif\n #if BUILDING_GCC_MAJOR >= 6\n-                  rich_location* l,\n+                       rich_location* l,\n #else\n-                  location_t l,\n-                  unsigned int column_override,\n+                       location_t l,\n+                       unsigned int column_override,\n #endif\n-                  const char* msg,\n-                  va_list* ap)\n+                       const char* msg,\n+                       va_list* ap)\n {\n   // #pragma once in the main file. Note that the message that we get is\n   // potentially translated so we search for the substring (there is\n@@ -80,7 +90,7 @@ cpp_error_filter (cpp_reader* r,\n   if (strstr (msg, \"#pragma once\") != 0)\n     return true;\n \n-  return cpp_error_prev (\n+  return cpp_diagnostic_prev (\n     r,\n     level,\n     reason,\n@@ -119,15 +129,20 @@ start_unit_callback (void*, void*)\n   //\n   cpp_callbacks* cb (cpp_get_callbacks (parse_in));\n \n-  if (cb->error == 0)\n+#if BUILDING_GCC_MAJOR >= 9\n+  cpp_diagnostic_prev = cb->diagnostic;\n+  cb->diagnostic = &cpp_diagnostic_filter;\n+#else\n+  cpp_diagnostic_prev = cb->error;\n+  cb->error = &cpp_diagnostic_filter;\n+#endif\n+\n+  if (cpp_diagnostic_prev == 0)\n   {\n-    cerr << \"ice: expected cpp error callback to be set\" << endl;\n+    cerr << \"ice: expected cpp diagnostic callback to be set\" << endl;\n     exit (1);\n   }\n \n-  cpp_error_prev = cb->error;\n-  cb->error = &cpp_error_filter;\n-\n   // Set the directory of the main file (stdin) to that of the orginal\n   // file so that relative inclusion works. Also adjust the path and\n   // re-stat the file so that #pragma once works.\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/odb/0011-Adjust-to-changes-in-GCC-10.patch",
    "content": "From 060bb7eb4d008fbd4a9fa8ef7c5e33c9e483eb52 Mon Sep 17 00:00:00 2001\nFrom: Boris Kolpackov <boris@codesynthesis.com>\nDate: Wed, 17 Jun 2020 11:22:11 +0200\nSubject: [PATCH] Adjust to changes in GCC 10\n\n[Upstream: 060bb7eb4d008fbd4a9fa8ef7c5e33c9e483eb52]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n odb/gcc.hxx                | 7 +++++--\n odb/parser.cxx             | 8 ++++----\n odb/semantics/elements.cxx | 4 ++--\n 3 files changed, 11 insertions(+), 8 deletions(-)\n\ndiff --git a/odb/gcc.hxx b/odb/gcc.hxx\nindex 9b644d7..af0e2a0 100644\n--- a/odb/gcc.hxx\n+++ b/odb/gcc.hxx\n@@ -151,10 +151,13 @@ gcc_tree_code_name (gcc_tree_code_type tc) {return tree_code_name[tc];}\n #define DECL_CHAIN(x) TREE_CHAIN(x)\n #endif\n \n-// In GCC 6, ANON_AGGRNAME_P became anon_aggrname_p().\n+// In GCC 6  ANON_AGGRNAME_P became anon_aggrname_p().\n+// In GCC 10 anon_aggrname_p() became IDENTIFIER_ANON_P.\n //\n #if BUILDING_GCC_MAJOR < 6\n-#  define anon_aggrname_p(X) ANON_AGGRNAME_P(X)\n+#  define IDENTIFIER_ANON_P(X) ANON_AGGRNAME_P(X)\n+#elif BUILDING_GCC_MAJOR < 10\n+#  define IDENTIFIER_ANON_P(X) anon_aggrname_p(X)\n #endif\n \n // In GCC 9:\ndiff --git a/odb/parser.cxx b/odb/parser.cxx\nindex 69d9b28..58388c9 100644\n--- a/odb/parser.cxx\n+++ b/odb/parser.cxx\n@@ -1103,14 +1103,14 @@ emit_type_decl (tree decl)\n     // says that in typedef struct {} S; S becomes struct's\n     // name.\n     //\n-    if (anon_aggrname_p (decl_name))\n+    if (IDENTIFIER_ANON_P (decl_name))\n     {\n       tree d (TYPE_NAME (t));\n \n       if (d != NULL_TREE &&\n           !DECL_ARTIFICIAL (d) &&\n           DECL_NAME (d) != NULL_TREE &&\n-          !anon_aggrname_p (DECL_NAME (d)))\n+          !IDENTIFIER_ANON_P (DECL_NAME (d)))\n       {\n         decl = d;\n         decl_name = DECL_NAME (decl);\n@@ -1727,7 +1727,7 @@ create_type (tree t,\n             ts << \"start anon/stub \" << gcc_tree_code_name(tc) << \" at \"\n                << file << \":\" << line << endl;\n \n-          if (d == NULL_TREE || anon_aggrname_p (DECL_NAME (d)))\n+          if (d == NULL_TREE || IDENTIFIER_ANON_P (DECL_NAME (d)))\n           {\n             if (tc == RECORD_TYPE)\n               r = &emit_class<class_> (t, file, line, clmn);\n@@ -1824,7 +1824,7 @@ create_type (tree t,\n         ts << \"start anon/stub \" << gcc_tree_code_name(tc) << \" at \"\n            << file << \":\" << line << endl;\n \n-      if (d == NULL_TREE || anon_aggrname_p (DECL_NAME (d)))\n+      if (d == NULL_TREE || IDENTIFIER_ANON_P (DECL_NAME (d)))\n       {\n         r = &emit_enum (t, access, file, line, clmn);\n       }\ndiff --git a/odb/semantics/elements.cxx b/odb/semantics/elements.cxx\nindex f937f54..2d266cf 100644\n--- a/odb/semantics/elements.cxx\n+++ b/odb/semantics/elements.cxx\n@@ -75,7 +75,7 @@ namespace semantics\n       if (tree decl = TYPE_NAME (n))\n         name = DECL_NAME (decl);\n \n-      return name != 0 && anon_aggrname_p (name);\n+      return name != 0 && IDENTIFIER_ANON_P (name);\n     }\n \n     return true;\n@@ -124,7 +124,7 @@ namespace semantics\n       if (tree decl = TYPE_NAME (type))\n       {\n         name = DECL_NAME (decl);\n-        if (name != 0 && anon_aggrname_p (name))\n+        if (name != 0 && IDENTIFIER_ANON_P (name))\n           return true;\n \n         tree s (CP_DECL_CONTEXT (decl));\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/odb/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_ODB\n\tbool \"host-odb\"\n\tselect BR2_NEEDS_HOST_GCC_PLUGIN_SUPPORT\n\thelp\n\t  This is a compiler that takes a specially crafted c++ header\n\t  file and auto-generates a schema that works with libodb and\n\t  the subsequent libodb-database library.\n\n\t  https://www.codesynthesis.com/products/odb/\n"
  },
  {
    "path": "package/odb/odb.hash",
    "content": "# From https://www.codesynthesis.com/products/odb/download.xhtml\nsha1\t810fc02e591429ed19f5a2699d144fb611fb121b\todb-2.4.0.tar.bz2\n\n# Locally computed\nsha256\t6785154fa98ea3977c8c2ab38cec16c4aa78c2c2039e80cd2908347b1c1d4198\todb-2.4.0.tar.bz2\nsha256\t7983b82cb1f1686ac2b55420ded9c0f348f93dd17bf3e048ae3b25c1da51b80e\tLICENSE\n"
  },
  {
    "path": "package/odb/odb.mk",
    "content": "################################################################################\n#\n# odb\n#\n################################################################################\n\nODB_VERSION_MAJOR = 2.4\nODB_VERSION = $(ODB_VERSION_MAJOR).0\nODB_SOURCE = odb-$(ODB_VERSION).tar.bz2\nODB_SITE = https://www.codesynthesis.com/download/odb/$(ODB_VERSION_MAJOR)\nODB_LICENSE = GPL-3.0\nODB_LICENSE_FILES = LICENSE\nHOST_ODB_DEPENDENCIES = host-libcutl\nHOST_ODB_CONF_ENV = CXXFLAGS=\"$(HOST_CXXFLAGS) -std=c++11\"\n\n# Prevent odb from trying to install the gcc plugin into the hosts\n# gcc plugin directory. Instead, this will install the gcc plugin\n# into host/libexec/odb\nHOST_ODB_CONF_OPTS = --with-gcc-plugin-dir=no\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/odhcp6c/Config.in",
    "content": "config BR2_PACKAGE_ODHCP6C\n\tbool \"odhcp6c\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  odhcp6c is a minimal DHCPv6 and RA-client for use in\n\t  embedded Linux systems, especially routers.\n\n\t  https://git.openwrt.org/project/odhcp6c.git\n"
  },
  {
    "path": "package/odhcp6c/odhcp6c.hash",
    "content": "# Locally computed\nsha256  7274a304016838483e2da48193309e5f84ca0a8a407647033283d1249eebe986  odhcp6c-53f07e90b7f1da6977143a488dd5cb73a33b233b-br1.tar.gz\nsha256  e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING\n"
  },
  {
    "path": "package/odhcp6c/odhcp6c.mk",
    "content": "################################################################################\n#\n# odhcp6c\n#\n################################################################################\n\nODHCP6C_VERSION = 53f07e90b7f1da6977143a488dd5cb73a33b233b\nODHCP6C_SITE = https://git.openwrt.org/project/odhcp6c.git\nODHCP6C_SITE_METHOD = git\nODHCP6C_LICENSE = GPL-2.0\nODHCP6C_LICENSE_FILES = COPYING\n\ndefine ODHCP6C_INSTALL_SCRIPT\n\t$(INSTALL) -m 0755 -D $(@D)/odhcp6c-example-script.sh \\\n\t\t$(TARGET_DIR)/usr/sbin/odhcp6c-update\nendef\n\nODHCP6C_POST_INSTALL_TARGET_HOOKS += ODHCP6C_INSTALL_SCRIPT\n\nifeq ($(BR2_PACKAGE_LIBUBOX),y)\nODHCP6C_CONF_OPTS += -DUSE_LIBUBOX=1\nODHCP6C_DEPENDENCIES += libubox\nelse\nODHCP6C_CONF_OPTS += -DUSE_LIBUBOX=0\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/odhcploc/Config.in",
    "content": "config BR2_PACKAGE_ODHCPLOC\n\tbool \"odhcploc\"\n\thelp\n\t  Open DHCP Locate (ODHCPLoc) is program to locate and\n\t  display active DHCP servers on a subnet.\n\t  Can be used to scan for rogue DHCP servers.\n\n\t  http://odhcploc.sourceforge.net/\n"
  },
  {
    "path": "package/odhcploc/odhcploc.hash",
    "content": "# Locally computed:\nsha256  b0360a3aece8a29d131531da7bfc36d57c30c6eed30ff1ea360f7cccea1d62d7  odhcploc-20111021.tar.gz\nsha256  092a5b7be2a7ff088be7ec99adf68629509911b66f304b8ea0c835cdc138d544  COPYING\n"
  },
  {
    "path": "package/odhcploc/odhcploc.mk",
    "content": "################################################################################\n#\n# odhcploc\n#\n################################################################################\n\nODHCPLOC_VERSION = 20111021\nODHCPLOC_SITE = http://downloads.sourceforge.net/project/odhcploc/$(ODHCPLOC_VERSION)\nODHCPLOC_LICENSE = ISC\nODHCPLOC_LICENSE_FILES = COPYING\n\ndefine ODHCPLOC_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all\nendef\n\ndefine ODHCPLOC_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) PREFIX=/usr DESTDIR=$(TARGET_DIR) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/odroidc2-firmware/Config.in",
    "content": "config BR2_PACKAGE_ODROIDC2_FIRMWARE\n\tbool \"odroidc2-firmware\"\n\thelp\n\t  This package extracts from\n\t  https://github.com/hardkernel/u-boot/tree/odroidc2-v2015.01\n\t  the pre-built firmware files, as well as the host tool\n\t  fip_create that are needed to create bootable images for the\n\t  Odroid C2 platform. See doc/board/amlogic/odroid-c2.rst in\n\t  upstream U-Boot for more details.\n\n\t  https://github.com/hardkernel/u-boot/tree/odroidc2-v2015.01\n"
  },
  {
    "path": "package/odroidc2-firmware/odroidc2-firmware.hash",
    "content": "# Locally calculated\nsha256  a2fba4c6d9332ecc5f04283f370d5c275f35d6cb62dba1f685d011269bacb6d0  odroidc2-firmware-s905_6.0.1_v5.5.tar.gz\n"
  },
  {
    "path": "package/odroidc2-firmware/odroidc2-firmware.mk",
    "content": "################################################################################\n#\n# odroidc2-firmware\n#\n################################################################################\n\nODROIDC2_FIRMWARE_VERSION = s905_6.0.1_v5.5\nODROIDC2_FIRMWARE_SITE = $(call github,hardkernel,u-boot,$(ODROIDC2_FIRMWARE_VERSION))\nODROIDC2_FIRMWARE_INSTALL_IMAGES = YES\n\ndefine ODROIDC2_FIRMWARE_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) \\\n\t\t-C $(@D)/tools/fip_create/\nendef\n\nODROIDC2_FIRMWARE_FILES = \\\n\tfip/gxb/bl301.bin \\\n\tfip/gxb/bl30.bin \\\n\tfip/gxb/bl31.bin \\\n\tfip/gxb/bl2.package \\\n\tsd_fuse/bl1.bin.hardkernel\n\ndefine ODROIDC2_FIRMWARE_INSTALL_IMAGES_CMDS\n\t$(foreach f,$(ODROIDC2_FIRMWARE_FILES), \\\n\t\t$(INSTALL) -D -m 0644 $(@D)/$(f) $(BINARIES_DIR)/$(notdir $(f))\n\t)\n\t$(INSTALL) -D -m0755 $(@D)/tools/fip_create/fip_create \\\n\t\t$(HOST_DIR)/bin/fip_create\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ofono/0001-uclibc-backtrace.patch",
    "content": "[PATCH] fix build on uClibc without UCLIBC_HAS_BACKTRACE\n\nBacktrace support is only used for logging on signal errors, which\nisn't really critical, so simply remove backtrace info if not\navailable in uClibc.\n\nNOTE: based on patch from Peter Korsgaard <jacmet@sunsite.dk>\n\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n---\n--- ofono-1.7.orig/src/log.c\n+++ ofono-1.7/src/log.c\n@@ -30,7 +30,8 @@\n #include <stdlib.h>\n #include <string.h>\n #include <syslog.h>\n-#ifdef __GLIBC__\n+#if defined(__GLIBC__) && !(defined(__UCLIBC__) && !defined (__UCLIBC_HAS_BACKTRACE__))\n+#define HAVE_BACKTRACE\n #include <execinfo.h>\n #endif\n #include <dlfcn.h>\n@@ -115,7 +116,7 @@\n\tva_end(ap);\n }\n \n-#ifdef __GLIBC__\n+#ifdef HAVE_BACKTRACE\n static void print_backtrace(unsigned int offset)\n {\n \tvoid *frames[99];\n@@ -312,7 +313,7 @@\n\tif (detach == FALSE)\n\t\toption |= LOG_PERROR;\n \n-#ifdef __GLIBC__\n+#ifdef HAVE_BACKTRACE\n\tsignal_setup(signal_handler);\n #endif\n\n@@ -329,7 +330,7 @@\n\n\tcloselog();\n\n-#ifdef __GLIBC__\n+#ifdef HAVE_BACKTRACE\n\tsignal_setup(SIG_DFL);\n #endif\n \n"
  },
  {
    "path": "package/ofono/0002-fix-musl-compile.patch",
    "content": "From 4a1d114fa3a5d6bef1f71222787c1f6c3a952284 Mon Sep 17 00:00:00 2001\nFrom: Nicolas Serafini <nicolas.serafini@sensefly.com>\nDate: Thu, 24 Jan 2019 10:11:42 +0100\nSubject: [PATCH] mbim: add optional copy of TEMP_FAILURE_RETRY macro (fix musl\n compile)\n\nTEMP_FAILURE_RETRY is not available on musl.\n\nSigned-off-by: Nicolas Serafini <nicolas.serafini@sensefly.com>\n---\n drivers/mbimmodem/mbim.c | 10 ++++++++++\n 1 file changed, 10 insertions(+)\n\ndiff --git a/drivers/mbimmodem/mbim.c b/drivers/mbimmodem/mbim.c\nindex 54b18acf..4b040528 100644\n--- a/drivers/mbimmodem/mbim.c\n+++ b/drivers/mbimmodem/mbim.c\n@@ -37,6 +37,16 @@\n #include \"mbim-message.h\"\n #include \"mbim-private.h\"\n \n+/* taken from glibc unistd.h for musl support */\n+#ifndef TEMP_FAILURE_RETRY\n+#define TEMP_FAILURE_RETRY(expression)             \\\n+  (__extension__                                   \\\n+    ({ long int __result;                          \\\n+       do __result = (long int) (expression);      \\\n+       while (__result == -1L && errno == EINTR);  \\\n+       __result; }))\n+#endif\n+\n #define MAX_CONTROL_TRANSFER 4096\n #define HEADER_SIZE (sizeof(struct mbim_message_header) + \\\n \t\t\t\t\tsizeof(struct mbim_fragment_header))\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/ofono/Config.in",
    "content": "config BR2_PACKAGE_OFONO\n\tbool \"ofono\"\n\tdepends on BR2_USE_WCHAR # gettext, libglib2, ell\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2\n\tdepends on BR2_USE_MMU # dbus, libglib2\n\tdepends on !BR2_STATIC_LIBS # dlopen(), ell\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 # ell\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_ELL\n\tselect BR2_PACKAGE_LIBCAP_NG\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO\n\thelp\n\t  oFono is a free, open source project for mobile telephony\n\t  (GSM/UMTS) applications. It uses high-level D-Bus API for\n\t  use by telephony applications. It uses 3GPP standard.\n\n\t  http://ofono.org/\n\ncomment \"ofono needs a toolchain w/ dynamic library, wchar, threads, headers >= 4.12\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n"
  },
  {
    "path": "package/ofono/S46ofono",
    "content": "#!/bin/sh\n\ncase \"$1\" in\n\tstart)\n\t\tprintf \"Starting ofono ... \"\n\t\tstart-stop-daemon -S -q -m -b -p /var/run/ofonod.pid --exec /usr/sbin/ofonod -- -n\n\t\techo \"done.\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping ofono ...\"\n\t\tstart-stop-daemon -K -q -p /var/run/ofonod.pid\n\t\techo \"done.\"\n\t\t;;\n\trestart)\n\t\t$0 stop\n\t\tsleep 1\n\t\t$0 start\n\t\t;;\n\t*)\n\t\techo \"usage: $0 {start|stop|restart}\"\n\t\t;;\nesac\n"
  },
  {
    "path": "package/ofono/ofono.hash",
    "content": "# From https://www.kernel.org/pub/linux/network/ofono/sha256sums.asc\nsha256 a15c5d28096c10eb30e47a68b6dc2e7c4a5a99d7f4cfedf0b69624f33d859e9b  ofono-1.31.tar.xz\n# Locally computed\nsha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4\tCOPYING\n"
  },
  {
    "path": "package/ofono/ofono.mk",
    "content": "################################################################################\n#\n# ofono\n#\n################################################################################\n\nOFONO_VERSION = 1.31\nOFONO_SOURCE = ofono-$(OFONO_VERSION).tar.xz\nOFONO_SITE = $(BR2_KERNEL_MIRROR)/linux/network/ofono\nOFONO_LICENSE = GPL-2.0\nOFONO_LICENSE_FILES = COPYING\nOFONO_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tdbus \\\n\tell \\\n\tlibcap-ng \\\n\tlibglib2 \\\n\tmobile-broadband-provider-info\n\nOFONO_CONF_OPTS = \\\n\t--enable-external-ell \\\n\t--disable-test \\\n\t--with-dbusconfdir=/etc \\\n\t$(if $(BR2_INIT_SYSTEMD),--with-systemdunitdir=/usr/lib/systemd/system)\n\n# N.B. Qualcomm QMI modem support requires O_CLOEXEC; so\n# make sure that it is defined.\nOFONO_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -D_GNU_SOURCE\"\n\ndefine OFONO_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/ofono/S46ofono $(TARGET_DIR)/etc/init.d/S46ofono\nendef\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nOFONO_CONF_OPTS += --enable-udev\nOFONO_DEPENDENCIES += udev\nelse\nOFONO_CONF_OPTS += --disable-udev\nendif\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y)\nOFONO_CONF_OPTS += --enable-bluetooth\nOFONO_DEPENDENCIES += bluez5_utils\nelse\nOFONO_CONF_OPTS += --disable-bluetooth\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ogre/0001-CMake-Utils-PrecompiledHeader.cmake-Add-c-argument-t.patch",
    "content": "From f480ac538eb69086d4b7db855c2a457d5d6420d4 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 10 Feb 2020 14:05:12 +0100\nSubject: [PATCH] CMake/Utils/PrecompiledHeader.cmake: Add -c argument to build\n precompiled headers\n\nAdd \"-c\" argument when building precompiled headers to fix build with\nRELRO.\n\nMore information on a similar issue with domoticz can be found here:\nhttps://patchwork.ozlabs.org/patch/1187328:\n\n\"The problem AFAICS is that if no -c or similar option is given, GCC\ndecides what needs to be done based on the rest of the arguments. If the\nrest of the arguments include a -Wl,... option, it decides that linking\nneeds to be done. If the rest of the arguments are just header files, it\ndecides to create a precompiled header.\"\n\nFixes:\n - http://autobuild.buildroot.org/results/8fabf8d270b9257c3a9db6a2f17f1c08ec9428d3\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream: https://github.com/OGRECave/ogre/commit/de4d5c920e23e1e2b21dc5c8192ef74ba6210cca]\n---\n CMake/Utils/PrecompiledHeader.cmake | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/CMake/Utils/PrecompiledHeader.cmake b/CMake/Utils/PrecompiledHeader.cmake\nindex a02d99acd..bfb0059db 100644\n--- a/CMake/Utils/PrecompiledHeader.cmake\n+++ b/CMake/Utils/PrecompiledHeader.cmake\n@@ -133,11 +133,11 @@ MACRO(_PCH_GET_COMPILE_COMMAND out_command _input _output)\n             STRING(REGEX REPLACE \"^ +\" \"\" pchsupport_compiler_cxx_arg1 ${CMAKE_CXX_COMPILER_ARG1})\n \n             SET(${out_command}\n-              ${CMAKE_CXX_COMPILER} ${pchsupport_compiler_cxx_arg1} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input}\n+              ${CMAKE_CXX_COMPILER} ${pchsupport_compiler_cxx_arg1} ${_compile_FLAGS} -x c++-header -c -o ${_output} ${_input}\n               )\n         ELSE(CMAKE_CXX_COMPILER_ARG1)\n             SET(${out_command}\n-              ${CMAKE_CXX_COMPILER}  ${_compile_FLAGS} -x c++-header -o ${_output} ${_input}\n+              ${CMAKE_CXX_COMPILER}  ${_compile_FLAGS} -x c++-header -c -o ${_output} ${_input}\n               )\n         ENDIF(CMAKE_CXX_COMPILER_ARG1)\n     ELSE(CMAKE_COMPILER_IS_GNUCXX)\n@@ -291,7 +291,7 @@ MACRO(ADD_PRECOMPILED_HEADER _targetName _input)\n     set_target_properties(${_targetName}_pch_dephelp PROPERTIES INCLUDE_DIRECTORIES \"${DIRINC}\")\n \n     #MESSAGE(\"_compile_FLAGS: ${_compile_FLAGS}\")\n-    #message(\"COMMAND ${CMAKE_CXX_COMPILER}\t${_compile_FLAGS} -x c++-header -o ${_output} ${_input}\")\n+    #message(\"COMMAND ${CMAKE_CXX_COMPILER}\t${_compile_FLAGS} -x c++-header -c -o ${_output} ${_input}\")\n \n     ADD_CUSTOM_COMMAND(\n       OUTPUT \"${CMAKE_CURRENT_BINARY_DIR}/${_name}\"\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/ogre/0002-Checks-for-strtol_l-function.patch",
    "content": "From 3f182b7e743662ec3fa63e1c7f213171d99485ba Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 10 Feb 2020 21:45:58 +0100\nSubject: [PATCH] Checks for strtol_l function\n\nstrtol_l (and strtoul_l, strtoll_l, strtoull_l) are not always available\n(for example on musl) so check for strtol_l and reuse android fallback if\nneeded to avoid the following build failure:\n\n/home/buildroot/autobuild/instance-1/output-1/build/ogre-1.12.0/OgreMain/src/OgreStringConverter.cpp: In static member function 'static bool Ogre::StringConverter::parse(const String&, Ogre::int32&)':\n/home/buildroot/autobuild/instance-1/output-1/build/ogre-1.12.0/OgreMain/src/OgreStringConverter.cpp:253:22: error: 'strtol_l' was not declared in this scope\n         ret = (int32)strtol_l(val.c_str(), &end, 0, _numLocale);\n                      ^~~~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/107cffe41081ce46441dec8699d6ad0f152bc152\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/OGRECave/ogre/commit/3f182b7e743662ec3fa63e1c7f213171d99485ba]\n---\n CMake/ConfigureBuild.cmake             | 7 +++++++\n CMake/Templates/OgreBuildSettings.h.in | 2 ++\n OgreMain/include/OgreString.h          | 3 +++\n 3 files changed, 12 insertions(+)\n\ndiff --git a/CMake/ConfigureBuild.cmake b/CMake/ConfigureBuild.cmake\nindex ab049a525ae..73606c997c1 100644\n--- a/CMake/ConfigureBuild.cmake\n+++ b/CMake/ConfigureBuild.cmake\n@@ -133,6 +133,13 @@ if(SDL2_FOUND OR EMSCRIPTEN)\n     set(OGRE_BITES_HAVE_SDL 1)\n endif()\n \n+# determine if strtol_l is supported\n+include(CheckFunctionExists)\n+CHECK_FUNCTION_EXISTS(strtol_l HAVE_STRTOL_L)\n+if (NOT HAVE_STRTOL_L)\n+  set(OGRE_NO_LOCALE_STRCONVERT 1)\n+endif ()\n+\n # generate OgreBuildSettings.h\n configure_file(${OGRE_TEMPLATES_DIR}/OgreComponents.h.in ${PROJECT_BINARY_DIR}/include/OgreComponents.h @ONLY)\n configure_file(${OGRE_TEMPLATES_DIR}/OgreBuildSettings.h.in ${PROJECT_BINARY_DIR}/include/OgreBuildSettings.h @ONLY)\ndiff --git a/CMake/Templates/OgreBuildSettings.h.in b/CMake/Templates/OgreBuildSettings.h.in\nindex a491d09624c..95eb1b71d64 100644\n--- a/CMake/Templates/OgreBuildSettings.h.in\n+++ b/CMake/Templates/OgreBuildSettings.h.in\n@@ -107,4 +107,6 @@ WARNING: Disabling this will make the samples unusable.\n \n #cmakedefine01 OGRE_NO_QUAD_BUFFER_STEREO\n \n+#cmakedefine01 OGRE_NO_LOCALE_STRCONVERT\n+\n #endif\ndiff --git a/OgreMain/include/OgreString.h b/OgreMain/include/OgreString.h\nindex a81c220012e..1f544195dee 100644\n--- a/OgreMain/include/OgreString.h\n+++ b/OgreMain/include/OgreString.h\n@@ -46,8 +46,11 @@ THE SOFTWARE.\n #   define strnicmp strncasecmp\n #endif\n \n+#if OGRE_PLATFORM == OGRE_PLATFORM_ANDROID || OGRE_PLATFORM == OGRE_PLATFORM_EMSCRIPTEN || \\\n+\t(OGRE_PLATFORM == OGRE_PLATFORM_LINUX && OGRE_NO_LOCALE_STRCONVERT == 1)\n #if OGRE_PLATFORM == OGRE_PLATFORM_ANDROID || OGRE_PLATFORM == OGRE_PLATFORM_EMSCRIPTEN\n #   define locale_t int\n+#endif\n #   define strtod_l(ptr, end, l) strtod(ptr, end)\n #   define strtoul_l(ptr, end, base, l) strtoul(ptr, end, base)\n #   define strtol_l(ptr, end, base, l) strtol(ptr, end, base)\n"
  },
  {
    "path": "package/ogre/Config.in",
    "content": "config BR2_PACKAGE_OGRE\n\tbool \"ogre\"\n\tdepends on BR2_PACKAGE_HAS_LIBGL # libglu\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_USE_WCHAR # use wchar_t\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_LIBFREEIMAGE\n\tselect BR2_PACKAGE_SDL2\n\tselect BR2_PACKAGE_SDL2_OPENGL\n\tselect BR2_PACKAGE_SDL2_X11 # use wmInfo.info.x11\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\tselect BR2_PACKAGE_ZZIPLIB\n\thelp\n\t  OGRE is a scene-oriented, flexible 3D engine written in C++\n\t  designed to make it easier and more intuitive for developers\n\t  to produce games and demos utilising 3D hardware. The class\n\t  library abstracts all the details of using the underlying\n\t  system libraries like Direct3D and OpenGL and provides an\n\t  interface based on world objects and other intuitive classes.\n\n\t  https://ogrecave.github.io/ogre\n\ncomment \"ogre needs X11 and an OpenGL provider\"\n\tdepends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \\\n\t\t&& BR2_INSTALL_LIBSTDCPP && !BR2_STATIC_LIBS && BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU\n\ncomment \"ogre needs a toolchain w/ C++, dynamic library, gcc >= 4.8, threads, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \\\n\t\t|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/ogre/ogre.hash",
    "content": "# sha256 locally computed\nsha256 163e7700e319532d4389ecba91e3ab88551f78610886fa36f8f262f9a5080988  ogre-1.12.0.tar.gz\nsha256 82758e8d1d72139904b9b7472ef0f6544413d2871b58540307fdcc20e473e5f8  LICENSE\n"
  },
  {
    "path": "package/ogre/ogre.mk",
    "content": "################################################################################\n#\n# ogre\n#\n################################################################################\n\nOGRE_VERSION = 1.12.0\nOGRE_SITE = $(call github,OGRECave,ogre,v$(OGRE_VERSION))\nOGRE_LICENSE = MIT (main library, DeferredShadingMedia samples), Public Domain (samples and plugins), Zlib (tinyxml)\nOGRE_LICENSE_FILES = LICENSE\nOGRE_INSTALL_STAGING = YES\n\n# Ogre use a bundled version of tinyxml\nOGRE_DEPENDENCIES = host-pkgconf \\\n\tfreetype \\\n\tlibfreeimage \\\n\tlibgl \\\n\tsdl2 \\\n\txlib_libX11 \\\n\txlib_libXaw \\\n\txlib_libXext \\\n\txlib_libXrandr \\\n\tzziplib\n\nOGRE_CFLAGS = $(TARGET_CFLAGS) -DGLEW_NO_GLU\nOGRE_CXXFLAGS = $(TARGET_CXXFLAGS) -DGLEW_NO_GLU\n\n# Unbundle freetype and zziplib.\n# Disable java and nvidia cg support.\nOGRE_CONF_OPTS = -DOGRE_BUILD_DEPENDENCIES=OFF \\\n\t-DOGRE_BUILD_COMPONENT_JAVA=OFF \\\n\t-DOGRE_BUILD_PLUGIN_CG=OFF \\\n\t-DOGRE_INSTALL_DOCS=OFF \\\n\t-DCMAKE_C_FLAGS=\"$(OGRE_CFLAGS)\" \\\n\t-DCMAKE_CXX_FLAGS=\"$(OGRE_CXXFLAGS)\"\n\n# Enable optional python component if python interpreter is present on the target.\nifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)\nOGRE_DEPENDENCIES += host-swig \\\n\t$(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python)\nOGRE_CONF_OPTS += -DOGRE_BUILD_COMPONENT_PYTHON=ON\nelse\nOGRE_CONF_OPTS += -DOGRE_BUILD_COMPONENT_PYTHON=OFF\nendif\n\n# Uses __atomic_fetch_add_8\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nOGRE_CXXFLAGS += -latomic\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/olsr/0001-olsrd-migrate-to-using-bison-3.7.1.patch",
    "content": "From f31eec323ae65124474664f8a0444f7c035556dd Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 6 Sep 2020 22:31:12 +0200\nSubject: [PATCH] olsrd: migrate to using bison 3.7.1\n\nWith the upgrade to bison 3.7.1 (openwrt commit 1cf842d) building\nolsrd was failing.  Now, instead of the contents of header files\nbeing directly inserted into the generated source files, they are\ninstead included with a #include directive.\n\nThe local.mk has, until now, done some magic with *-tmp files,\nwhich is not longer necessary and even causes builds to fail.\n\nsrc/cfgparser/oparse.c:265:10: fatal error: oparse.h-tmp: No such file or directory\n #include \"oparse.h-tmp\"\n\nSuggested-by: Jo-Philipp Wich <jo@mein.io>\nSigned-off-by: Perry Melange <isprotejesvalkata@gmail.com>\n[Retrieved from:\nhttps://github.com/openwrt-routing/packages/commit/5cc8e058850acbc22fe92c5e2b24863efc577971]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/OLSR/olsrd/pull/87]\n---\n src/cfgparser/local.mk | 8 ++------\n 1 file changed, 2 insertions(+), 6 deletions(-)\n\ndiff --git a/src/cfgparser/local.mk b/src/cfgparser/local.mk\nindex e767abfc..56e594e4 100644\n--- a/src/cfgparser/local.mk\n+++ b/src/cfgparser/local.mk\n@@ -74,12 +74,8 @@ $(C)oparse.c: $(C)oparse.y $(C)olsrd_conf.h $(C)Makefile\n ifeq ($(VERBOSE),0)\n \t@echo \"[BISON] $@\"\n endif\n-\t$(MAKECMDPREFIX)$(BISON) -d -o \"$@-tmp\" \"$<\"\n-\t$(MAKECMDPREFIX)sed\t-e 's/register //' \\\n-\t\t-e '/^#line/s/$(call quote,$@-tmp)/$(call quote,$@)/' \\\n-\t\t< \"$@-tmp\" >\"$@\"\n-\t$(MAKECMDPREFIX)mv \"$(subst .c,.h,$@-tmp)\" \"$(subst .c,.h,$@)\"\n-\t$(MAKECMDPREFIX)$(RM) \"$@-tmp\" \"$(subst .c,.h,$@-tmp)\"\n+\t$(MAKECMDPREFIX)$(BISON) -d -o \"$@\" \"$<\"\n+\t$(MAKECMDPREFIX)sed -e 's/register //' \"$@\" > \"$@.o\" && mv \"$@.o\" \"$@\"\n \n $(C)oparse.o: CFLAGS := $(filter-out -Wunreachable-code,$(CFLAGS))\n \n-- \n2.28.0\n\n"
  },
  {
    "path": "package/olsr/0002-lib-pud-Makefile-fix-parallel-build.patch",
    "content": "From 2f9311668dfdeee0453f5fceb27e8c95c065c4b6 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 18 Jan 2020 17:29:56 +0100\nSubject: [PATCH] lib/pud/Makefile: fix parallel build\n\nnmealib is needed to build olsrd_pud plugin otherwise build fails on:\n\n[LD] olsrd_pud.so.3.0.0 (nmealib dynamically linked)\n/home/fabrice/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lnmea\nwireformat/lib/libOlsrdPudWireFormat.so: file not recognized: File truncated\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/OLSR/olsrd/pull/78]\n---\n lib/pud/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/lib/pud/Makefile b/lib/pud/Makefile\nindex e2524421..28330d92 100644\n--- a/lib/pud/Makefile\n+++ b/lib/pud/Makefile\n@@ -108,7 +108,7 @@ endif\n \n default_target: nmealib library $(PLUGIN_FULLNAME)\n \n-$(PLUGIN_FULLNAME): $(OBJS) version-script.txt\n+$(PLUGIN_FULLNAME): $(OBJS) version-script.txt nmealib\n ifeq ($(PUD_NMEALIB_STATICALLY_LINKED),)\n ifeq ($(VERBOSE),0)\n \t@echo \"[LD] $@ (nmealib dynamically linked)\"\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/olsr/0003-pud-adapt-to-API-changes-in-gpsd-3-20.patch",
    "content": "From b2dfb6c27fcf4ddae87b0e99492f4bb8472fa39a Mon Sep 17 00:00:00 2001\nFrom: Eneas U de Queiroz <cotequeiroz@gmail.com>\nDate: Thu, 13 Feb 2020 17:26:41 -0300\nSubject: [PATCH] pud: adapt to API changes in gpsd 3.20\n\nThe timestamp fields were changed from double to struct timespec, and\nthe geoid separation field was moved to fix.geoid_sep.\n\nSigned-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>\n\n[Retrieved from:\nhttps://github.com/OLSR/olsrd/commit/b2dfb6c27fcf4ddae87b0e99492f4bb8472fa39a]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n lib/pud/src/gpsdclient.c | 36 ++++++++++++++++++++++++++++++++----\n 1 file changed, 32 insertions(+), 4 deletions(-)\n\ndiff --git a/lib/pud/src/gpsdclient.c b/lib/pud/src/gpsdclient.c\nindex 9e7fb708d..2a7a26eef 100644\n--- a/lib/pud/src/gpsdclient.c\n+++ b/lib/pud/src/gpsdclient.c\n@@ -79,6 +79,23 @@ static void gpsdError(const char *s) {\n   syslog(LOG_ERR, \"gpsd error: %s\", s);\n }\n \n+#if GPSD_API_MAJOR_VERSION >= 9\n+static double time_as_double(struct timespec *ts) {\n+ return (ts->tv_sec + ts->tv_nsec * 1e-9);\n+}\n+\n+static bool is_online(struct gps_data_t *gpsdata) {\n+  return !!gpsdata->online.tv_sec;\n+}\n+#else\n+\n+#define time_as_double(x) *(x)\n+\n+static bool is_online(struct gps_data_t *gpsdata) {\n+  return !!gpsdata->online;\n+}\n+#endif\n+\n /* standard parsing of a GPS data source spec */\n void gpsdParseSourceSpec(char *arg, GpsDaemon *gpsDaemon) {\n   if (!arg //\n@@ -298,8 +315,8 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon\n             8, //\n             dev->parity, //\n             dev->stopbits, //\n-            dev->cycle, //\n-            dev->mincycle);\n+            time_as_double(&dev->cycle), //\n+            time_as_double(&dev->mincycle));\n \n         connectionTracking->devSeen[i] = true;\n         connectionTracking->dev[i] = *dev;\n@@ -367,11 +384,18 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon\n   nmeaInfoSetPresent(&info->present, NMEALIB_PRESENT_SMASK);\n \n   /* date & time */\n+#if GPSD_API_MAJOR_VERSION >= 9\n+  if (gpsdata->fix.time.tv_sec > 0) {\n+    struct tm *time = gmtime(&gpsdata->fix.time.tv_sec);\n+    unsigned int hsec = (unsigned int) (gpsdata->fix.time.tv_nsec / 10000000);\n+#else\n   if (!isNaN(gpsdata->fix.time)) {\n     double seconds;\n     double fraction = modf(fabs(gpsdata->fix.time), &seconds);\n     long sec = lrint(seconds);\n     struct tm *time = gmtime(&sec);\n+    unsigned int hsec = (unsigned int) lrint(fraction * 100);\n+#endif\n     if (time) {\n       info->utc.year = (unsigned int) time->tm_year + 1900;\n       info->utc.mon = (unsigned int) time->tm_mon + 1;\n@@ -379,7 +403,7 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon\n       info->utc.hour = (unsigned int) time->tm_hour;\n       info->utc.min = (unsigned int) time->tm_min;\n       info->utc.sec = (unsigned int) time->tm_sec;\n-      info->utc.hsec = (unsigned int) lrint(fraction * 100);\n+      info->utc.hsec = hsec;\n \n       nmeaInfoSetPresent(&info->present, NMEALIB_PRESENT_UTCDATE | NMEALIB_PRESENT_UTCTIME);\n     }\n@@ -387,7 +411,7 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon\n   gpsdata->set &= ~TIME_SET;\n \n   /* sig & fix */\n-  if (!gpsdata->online) {\n+  if (!is_online(gpsdata)) {\n     gpsdata->fix.mode = MODE_NO_FIX;\n   }\n \n@@ -454,7 +478,11 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon\n   if ((gpsdata->fix.mode >= MODE_3D) //\n       && !isNaN(gpsdata->fix.altitude)) {\n     info->elevation = gpsdata->fix.altitude;\n+#if GPSD_API_MAJOR_VERSION >= 9\n+    info->height = gpsdata->fix.geoid_sep;\n+#else\n     info->height = gpsdata->separation;\n+#endif\n     nmeaInfoSetPresent(&info->present, NMEALIB_PRESENT_ELV | NMEALIB_PRESENT_HEIGHT);\n   }\n   gpsdata->set &= ~ALTITUDE_SET;\n"
  },
  {
    "path": "package/olsr/0004-pud-adapt-gpsdclient.c-to-new-gpsd-3.21.patch",
    "content": "From 2f9ee6079b20fb5d3884472825a40c5c65550fa2 Mon Sep 17 00:00:00 2001\nFrom: Nick Hainke <vincent@systemli.org>\nDate: Sun, 30 May 2021 19:13:48 +0200\nSubject: [PATCH] pud: adapt gpsdclient.c to new gpsd 3.21\n\nAs mentioned:\n\"Move gps_data_t->status to gps_fix_t.status for better fix merging\"\nhttps://gitlab.com/gpsd/gpsd/-/commit/29991d6ffeb41ecfc8297db68bb68be0128c8514\n\nSigned-off-by: Nick Hainke <vincent@systemli.org>\nUpstream: 79a28cdb4083b66c5d3a5f9c0d70dbdc86c0420c\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n lib/pud/src/gpsdclient.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/lib/pud/src/gpsdclient.c b/lib/pud/src/gpsdclient.c\nindex 2a7a26ee..a2a9cee0 100644\n--- a/lib/pud/src/gpsdclient.c\n+++ b/lib/pud/src/gpsdclient.c\n@@ -370,7 +370,11 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon\n           );\n \n   gpsdata->set &= ~STATUS_SET; /* always valid */\n+  #if GPSD_API_MAJOR_VERSION >= 10\n+  if (gpsdata->fix.status == STATUS_NO_FIX) {\n+  #else\n   if (gpsdata->status == STATUS_NO_FIX) {\n+  #endif\n     nmeaInfoClear(info);\n     nmeaTimeSet(&info->utc, &info->present, NULL);\n     return;\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/olsr/0005-lib-pud-src-gpsdclient.c-drop-handling-of-gpsdata-fi.patch",
    "content": "From 665051a845464c0f95edb81432104dac39426f79 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 6 Nov 2021 15:50:58 +0100\nSubject: [PATCH] lib/pud/src/gpsdclient.c: drop handling of\n gpsdata->fix.status\n\nHere is an extract of https://gpsd.gitlab.io/gpsd/gpsd_json.html:\n\nThe optional \"status\" field (aka fix type), is a modifier (adjective) to\nmode. It is not a replacement for, or superset of, the \"mode\" field. It\nis almost, but not quite, the same as the NMEA 4.x xxGGA GPS Quality\nIndicator Values. Many GNSS receivers do not supply it. Those that do\ninterpret the specification in various incompatible ways.\n\nSo status field is optional and STATUS_NO_FIX has been explicitly\nrenamed into STATUS_UNK to avoid confusion with MODE_NO_FIX (which is\nalready handled by gpsdclient.c) so drop the if block to fix the build\nfailure with gpsd >= 3.23.1.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream: https://github.com/OLSR/olsrd/commit/665051a845464c0f95edb81432104dac39426f79]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n lib/pud/src/gpsdclient.c | 9 ---------\n 1 file changed, 9 deletions(-)\n\ndiff --git a/lib/pud/src/gpsdclient.c b/lib/pud/src/gpsdclient.c\nindex a2a9cee0..d448867d 100644\n--- a/lib/pud/src/gpsdclient.c\n+++ b/lib/pud/src/gpsdclient.c\n@@ -370,15 +370,6 @@ void nmeaInfoFromGpsd(struct gps_data_t *gpsdata, NmeaInfo *info, struct GpsdCon\n           );\n \n   gpsdata->set &= ~STATUS_SET; /* always valid */\n-  #if GPSD_API_MAJOR_VERSION >= 10\n-  if (gpsdata->fix.status == STATUS_NO_FIX) {\n-  #else\n-  if (gpsdata->status == STATUS_NO_FIX) {\n-  #endif\n-    nmeaInfoClear(info);\n-    nmeaTimeSet(&info->utc, &info->present, NULL);\n-    return;\n-  }\n \n   if (!gpsdata->set) {\n     return;\n-- \n2.33.1\n\n"
  },
  {
    "path": "package/olsr/Config.in",
    "content": "config BR2_PACKAGE_OLSR\n\tbool \"olsr\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\t# https://github.com/OLSR/olsrd/issues/6\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL || BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15\n\thelp\n\t  The Optimized Link State Routing protocol (OLSR) is a\n\t  routing protocol that is optimised for mobile ad-hoc\n\t  networks, sometimes called wireless mesh networks. It is a\n\t  proactive link-state routing protocol that floods a full\n\t  topology table to all nodes in the network which then\n\t  compute optimal forwarding paths locally.\n\n\t  http://www.olsr.org/\n\ncomment \"olsr needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\ncomment \"olsr needs a musl toolchain w/ headers >= 4.15\"\n\tdepends on BR2_TOOLCHAIN_USES_MUSL\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15\n"
  },
  {
    "path": "package/olsr/S50olsr",
    "content": "#!/bin/sh\n\ncase \"$1\" in\n  start)\n    printf \"Starting oslrd daemon: \"\n    start-stop-daemon -S -q -x /usr/sbin/olsrd -- -d 0 -pidfile /run/olsrd.pid\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    ;;\n  stop)\n    printf \"Stopping olsrd daemon: \"\n    start-stop-daemon -K -q -p /run/olsrd.pid\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    ;;\n  restart)\n    $0 stop\n    $0 start\n    ;;\n  *)\n    echo \"Usage: $0 {start|stop|restart}\"\n    exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/olsr/olsr.hash",
    "content": "# Locally computed\nsha256 ee9e524224e5d5304dcf61f1dc5485c569da09d382934ff85b233be3e24821a3  olsr-0.9.8.tar.gz\nsha256 7dcf1fb93ef105e2708b02603bb6ee443115d4819fbf2c5a3a001b46887acb9a  license.txt\nsha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  lib/pud/nmealib/LICENSE\n"
  },
  {
    "path": "package/olsr/olsr.mk",
    "content": "################################################################################\n#\n# olsr\n#\n################################################################################\n\nOLSR_VERSION = 0.9.8\nOLSR_SITE = $(call github,OLSR,olsrd,v$(OLSR_VERSION))\nOLSR_PLUGINS = arprefresh bmf dot_draw dyn_gw dyn_gw_plain httpinfo jsoninfo \\\n\tmdns nameservice netjson poprouting p2pd pgraph secure txtinfo watchdog\n# Doesn't really need quagga but not very useful without it\nOLSR_PLUGINS += $(if $(BR2_PACKAGE_QUAGGA),quagga)\nOLSR_LICENSE = BSD-3-Clause\nOLSR_LICENSE_FILES = license.txt\nOLSR_DEPENDENCIES = host-flex host-bison\n\nOLSR_CFLAGS = $(TARGET_CFLAGS)\n\n# it needs -fPIC to link on lot of architectures\nOLSR_CFLAGS += -fPIC\n\nifeq ($(BR2_PACKAGE_GPSD),y)\nOLSR_LICENSE += , LGPL-2.1+ (nmealib)\nOLSR_LICENSE_FILES += lib/pud/nmealib/LICENSE\nOLSR_DEPENDENCIES += gpsd\nOLSR_PLUGINS += pud\nendif\n\ndefine OLSR_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) ARCH=$(KERNEL_ARCH) \\\n\t\tCFLAGS=\"$(OLSR_CFLAGS)\" -C $(@D) olsrd\n\t$(foreach p,$(OLSR_PLUGINS), \\\n\t\t$(TARGET_CONFIGURE_OPTS) $(MAKE) ARCH=$(KERNEL_ARCH) \\\n\t\t\tCFLAGS=\"$(OLSR_CFLAGS)\" -C $(@D)/lib/$(p)\n\t)\nendef\n\ndefine OLSR_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \\\n\t\tprefix=\"/usr\" install_bin\n\t$(foreach p,$(OLSR_PLUGINS), \\\n\t\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/lib/$(p) \\\n\t\t\tLDCONFIG=/bin/true DESTDIR=$(TARGET_DIR) \\\n\t\t\tprefix=\"/usr\" install\n\t)\n\t$(INSTALL) -D -m 0644 $(@D)/files/olsrd.conf.default.lq \\\n\t\t$(TARGET_DIR)/etc/olsrd/olsrd.conf\nendef\n\ndefine OLSR_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/olsr/S50olsr \\\n\t\t$(TARGET_DIR)/etc/init.d/S50olsr\nendef\n\ndefine OLSR_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/olsr/olsr.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/olsr.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/olsr/olsr.service",
    "content": "[Unit]\nDescription=Ad-hoc wireless mesh routing daemon\nAfter=network.target\n\n[Service]\nExecStart=/usr/sbin/olsrd -nofork\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/omap-u-boot-utils/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS\n\tbool \"host omap-u-boot-utils\"\n\tdepends on BR2_arm || BR2_armeb\n\thelp\n\t  U-Boot Utilities for Texas Instrument's OMAP platforms.\n\t  This is a set of tools to control U-Boot from scripts,\n\t  generate OMAP-specific signed image files and more.\n\n\t  https://github.com/nmenon/omap-u-boot-utils\n"
  },
  {
    "path": "package/omap-u-boot-utils/omap-u-boot-utils.hash",
    "content": "# locally computed\nsha256  f9c2553efeff1289b2b964a266a0b4a03a377f84a14d0599a779f6e3d7b75d5f  omap-u-boot-utils-3f07426cddc0be9e24702e7aacc7574ddd7fba28.tar.gz\nsha256  1080312c3230fb7dd32fe807ed8c8cd11f4061bf1a2f065b651630bfe30157b2  COPYING\n"
  },
  {
    "path": "package/omap-u-boot-utils/omap-u-boot-utils.mk",
    "content": "################################################################################\n#\n# omap-u-boot-utils\n#\n################################################################################\n\nOMAP_U_BOOT_UTILS_VERSION = 3f07426cddc0be9e24702e7aacc7574ddd7fba28\nOMAP_U_BOOT_UTILS_SITE = $(call github,nmenon,omap-u-boot-utils,$(OMAP_U_BOOT_UTILS_VERSION))\nOMAP_U_BOOT_UTILS_LICENSE = GPL-2.0, GPL-2.0+\nOMAP_U_BOOT_UTILS_LICENSE_FILES = COPYING\n\ndefine HOST_OMAP_U_BOOT_UTILS_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_OMAP_U_BOOT_UTILS_INSTALL_CMDS\n\tfor f in gpsign pserial tagger ucmd ukermit ; do \\\n\t\t$(INSTALL) -D -m 755 $(@D)/$$f $(HOST_DIR)/bin/$$f ; \\\n\tdone\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/omniorb/Config.in",
    "content": "\ncomment \"omniORB needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_OMNIORB\n\tbool \"omniorb\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  omniORB is a robust high performance CORBA ORB for C++ and\n\t  Python.\n\t  omniORB is largely CORBA 2.6 compliant. omniORB is one of\n\t  only three ORBs to have been awarded the Open Group's Open\n\t  Brand for CORBA. This means that omniORB has been tested and\n\t  certified CORBA compliant, to version 2.1 of the CORBA\n\t  specification.\n\n\t  http://omniorb.sourceforge.net/\n\nif BR2_PACKAGE_OMNIORB\n\nconfig BR2_PACKAGE_OMNIORB_WITH_APPS\n\tbool \"Enable Apps and Services\"\n\thelp\n\t  omniORB applications and services disabled by default\n\t  embedded system build configuration.\n\nendif\n"
  },
  {
    "path": "package/omniorb/omniorb.hash",
    "content": "# From https://sourceforge.net/projects/omniorb/files/omniORB/omniORB-4.2.4/\nsha1 a6f3c8e96fc09c4ef8d75bd495bbc5256a4773ee  omniORB-4.2.4.tar.bz2\nmd5 de961e8aa29f3eed95ea40a94c1cccdf  omniORB-4.2.4.tar.bz2\n\n# Locally generated\nsha256\t28c01cd0df76c1e81524ca369dc9e6e75f57dc70f30688c99c67926e4bdc7a6f  omniORB-4.2.4.tar.bz2\nsha256\t126647a6ee062fe46f8f3766965dc62e031c0a31238a347e4bc07aab2ac1e2a7  COPYING\nsha256\teaf5b13ffd5355da7c0b83074e4b798152ff7086c95c4f3045122a06e2673eb9  COPYING.LIB\n"
  },
  {
    "path": "package/omniorb/omniorb.mk",
    "content": "################################################################################\n#\n# omniorb\n#\n################################################################################\n\nOMNIORB_VERSION = 4.2.4\nOMNIORB_SITE = http://downloads.sourceforge.net/project/omniorb/omniORB/omniORB-$(OMNIORB_VERSION)\nOMNIORB_SOURCE = omniORB-$(OMNIORB_VERSION).tar.bz2\nOMNIORB_INSTALL_STAGING = YES\nOMNIORB_LICENSE = GPL2+, LGPL-2.1+\nOMNIORB_LICENSE_FILES = COPYING COPYING.LIB\nOMNIORB_DEPENDENCIES = host-omniorb\nHOST_OMNIORB_DEPENDENCIES = host-python\n\n# omniorb is not python3 friendly, so force the python interpreter\nOMNIORB_CONF_OPTS = ac_cv_path_PYTHON=$(HOST_DIR)/bin/python2\nHOST_OMNIORB_CONF_OPTS = ac_cv_path_PYTHON=$(HOST_DIR)/bin/python2\n\n# Defaulting long double support to a safe option for the\n# mix of embedded targets, this could later be automated\n# based on checking the capability of the cross toolchain\n# for \"__LONG_DOUBLE_128__\".  Currently the host and target\n# need to match because of the code generation done by the\n# host tools during the target compile (ie headers generated\n# on host are used in target build).\nOMNIORB_CONF_OPTS += --disable-longdouble\nHOST_OMNIORB_CONF_OPTS += --disable-longdouble\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nOMNIORB_CONF_OPTS += --with-openssl\nOMNIORB_DEPENDENCIES += openssl\nelse\nOMNIORB_CONF_OPTS += --without-openssl\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nOMNIORB_DEPENDENCIES += zlib\nendif\n\n# The EmbeddedSystem define (set below in OMNIORB_ADJUST_TOOLDIR)\n# enables building of just the lib and disables building of\n# tools/apps/services.  In some cases the apps/services are still\n# required.  The tools however are host related and should never\n# be required on target.\ndefine OMNIORB_ENABLE_EXTRA_APPS\n\t$(SED) 's:SUBDIRS += lib:SUBDIRS += lib appl services:g' $(@D)/src/dir.mk\nendef\n\nifeq ($(BR2_PACKAGE_OMNIORB_WITH_APPS),y)\nOMNIORB_POST_PATCH_HOOKS += OMNIORB_ENABLE_EXTRA_APPS\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\ndefine OMNIORB_DISABLE_SHARED\n\techo \"BuildSharedLibrary =\" >> $(@D)/mk/beforeauto.mk\nendef\nOMNIORB_POST_CONFIGURE_HOOKS += OMNIORB_DISABLE_SHARED\nendif\n\n# omniORB is not completely cross-compile friendly and has some\n# assumptions where a couple host tools must be built and then\n# used by the target build.  The host tools generate code from\n# the IDL description language, which is then built into the\n# cross compiled target OMNIORB application.\ndefine OMNIORB_ADJUST_TOOLDIR\n\t# Point to the host folder to get HOST_OMNIORB tools\n\t$(SED) 's:TOOLBINDIR = $$(TOP)/$$(BINDIR):TOOLBINDIR = $(HOST_DIR)/bin:g' $(@D)/mk/beforeauto.mk\n\t# Disables OMNIORB app/service/tool building\n\techo \"EmbeddedSystem=1\" >> $(@D)/mk/beforeauto.mk\nendef\nOMNIORB_POST_CONFIGURE_HOOKS += OMNIORB_ADJUST_TOOLDIR\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/omxplayer/0001-Update-Makefile-to-be-compatible-with-buildroot.patch",
    "content": "From 40bf9c0960becaf0e592cac901466af93f24e52b Mon Sep 17 00:00:00 2001\nFrom: Julius Kriukas <julius@kriukas.lt>\nDate: Fri, 1 Dec 2017 18:29:24 +0200\nSubject: [PATCH] Update Makefile to be compatible with buildroot\n\n- Append to existing CFLAGS instead of overwriting.\n- Remove cross-compilation specific options from CFLAGS, they will be\n  set by buildroot.\n- Remove local ffmpeg_compiled include, buildroot will build ffmpeg\n  separately.\n- Remove hard-coded dbus, freetype, rpi-firmware include paths, they\n  will be added by buildroot.\n\nSigned-off-by: Julius Kriukas <julius@kriukas.lt>\n---\n Makefile | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 5f4e414..53fa1bc 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -1,10 +1,10 @@\n-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\n+CFLAGS+=-fomit-frame-pointer -Wno-psabi -mno-apcs-stack-check -g -mstructure-size-boundary=32 -mno-sched-prolog\n 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\n \n LDFLAGS=-L$(SDKSTAGE)/opt/vc/lib/\n-LDFLAGS+=-L./ -Lffmpeg_compiled/usr/local/lib/ -lc -lbrcmGLESv2 -lbrcmEGL -lbcm_host -lopenmaxil -lfreetype -lz -lasound\n+LDFLAGS+=-L./ -lc -lbrcmGLESv2 -lbrcmEGL -lbcm_host -lopenmaxil -lfreetype -lz -lasound\n \n-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\n+INCLUDES+=-I./ -Ilinux\n \n DIST ?= omxplayer-dist\n STRIP ?= strip\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/omxplayer/Config.in",
    "content": "config BR2_PACKAGE_OMXPLAYER\n\tbool \"omxplayer\"\n\tdepends on BR2_arm\n\tdepends on BR2_USE_MMU # dbus\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS # ffmpeg\n\tdepends on BR2_INSTALL_LIBSTDCPP # boost\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib, boost, libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tdepends on BR2_USE_WCHAR # boost\n\tdepends on BR2_PACKAGE_RPI_USERLAND\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_FFMPEG_AVRESAMPLE\n\tselect BR2_PACKAGE_FFMPEG_SWSCALE\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_LIBIDN\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  OMXPlayer is a commandline OMX player for the Raspberry\n\t  Pi. It was developed as a testbed for the XBMC Raspberry PI\n\t  implementation and is quite handy to use standalone.\n\n\t  https://github.com/popcornmix/omxplayer\n\ncomment \"omxplayer needs rpi-userland and a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 4.9\"\n\tdepends on BR2_arm\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tdepends on !BR2_PACKAGE_RPI_USERLAND\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_USE_WCHAR || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/omxplayer/omxplayer.hash",
    "content": "# Locally computed:\nsha1    a9106203f822fe88eb35980479f46a555086d4a7                          omxplayer-f06235cc9690a6d58187514452df8cf8fcdaacec.tar.gz\nsha256  af2d9450f8947842ea8c401fe9f71eec444013ebbdee29f2ac828c9c493c1329  omxplayer-f06235cc9690a6d58187514452df8cf8fcdaacec.tar.gz\n\n# Hash for license file:\nsha256  60e78ba9f921bb06bcf957575245414b1577c9688a63ddd73bc65f9d48fe31c9  COPYING\n"
  },
  {
    "path": "package/omxplayer/omxplayer.mk",
    "content": "################################################################################\n#\n# omxplayer\n#\n################################################################################\n\nOMXPLAYER_VERSION = f06235cc9690a6d58187514452df8cf8fcdaacec\nOMXPLAYER_SITE = $(call github,popcornmix,omxplayer,$(OMXPLAYER_VERSION))\nOMXPLAYER_LICENSE = GPL-2.0+\nOMXPLAYER_LICENSE_FILES = COPYING\n\nOMXPLAYER_DEPENDENCIES = \\\n\thost-pkgconf alsa-lib boost dbus ffmpeg freetype libidn libusb pcre \\\n\trpi-userland zlib\n\nOMXPLAYER_EXTRA_CFLAGS = \\\n\t-DTARGET_LINUX -DTARGET_POSIX \\\n\t`$(PKG_CONFIG_HOST_BINARY) --cflags bcm_host` \\\n\t`$(PKG_CONFIG_HOST_BINARY) --cflags freetype2` \\\n\t`$(PKG_CONFIG_HOST_BINARY) --cflags dbus-1`\n\n# OMXplayer has support for building in Buildroot, but that\n# procedure is, well, tainted. Fix this by forcing the real,\n# correct values.\nOMXPLAYER_MAKE_ENV = \\\n\tSDKSTAGE=$(STAGING_DIR) \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tSTRIP=true \\\n\tCFLAGS=\"$(TARGET_CFLAGS) $(OMXPLAYER_EXTRA_CFLAGS)\"\n\ndefine OMXPLAYER_BUILD_CMDS\n\t$(OMXPLAYER_MAKE_ENV) $(MAKE) -C $(@D) omxplayer.bin\nendef\n\ndefine OMXPLAYER_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/omxplayer.bin $(TARGET_DIR)/usr/bin/omxplayer\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/on2-8170-libs/Config.in",
    "content": "config BR2_PACKAGE_ON2_8170_LIBS\n\tbool \"on2-8170-libs\"\n\t#This is a binary only package which has been compiled for glibc\n\tdepends on BR2_arm926t\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on BR2_LINUX_KERNEL # on2-8170-modules\n\tselect BR2_PACKAGE_ON2_8170_MODULES # runtime\n\thelp\n\t  Libraries for Hantro X170 video decoder\n\n\t  http://www.at91.com/linux4sam/bin/view/Linux4SAM/SAM9M10Gstreamer\n\ncomment \"on2-8170-libs needs a glibc toolchain and a Linux kernel to be built\"\n\tdepends on BR2_arm926t\n\tdepends on !BR2_LINUX_KERNEL || !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/on2-8170-libs/on2-8170-libs.hash",
    "content": "# locally computed\nsha256  db7390a13e7c0426894a6f966ecde1f89e6566416088c50729750e800306a2de  on2-8170-libs-1.0.tar.gz\n"
  },
  {
    "path": "package/on2-8170-libs/on2-8170-libs.mk",
    "content": "################################################################################\n#\n# on2-8170-libs\n#\n################################################################################\n\nON2_8170_LIBS_VERSION = 1.0\nON2_8170_LIBS_SITE = ftp://ftp.linux4sam.org/pub/demo/linux4sam_1.9/codec\n\nON2_8170_LIBS_LICENSE = PROPRIETARY\n# No license file is included in the archive\n\nON2_8170_LIBS_INSTALL_STAGING = YES\n\ndefine ON2_8170_LIBS_INSTALL_STAGING_CMDS\n\tmkdir -p $(STAGING_DIR)/usr/lib $(STAGING_DIR)/usr/include\n\tcp -dpf $(@D)/*.a $(@D)/*.so $(STAGING_DIR)/usr/lib\n\tcp -dpf $(@D)/*.h $(STAGING_DIR)/usr/include\nendef\n\ndefine ON2_8170_LIBS_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/lib\n\tcp -dpf $(@D)/*.so $(TARGET_DIR)/usr/lib\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/on2-8170-modules/Config.in",
    "content": "config BR2_PACKAGE_ON2_8170_MODULES\n\tbool \"on2-8170-modules\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_arm926t\n\thelp\n\t  Kernel modules for Hantro x170 hardware video decompression\n\t  support.\n\n\t  http://www.at91.com/linux4sam/bin/view/Linux4SAM/SAM9M10Gstreamer\n\ncomment \"on2-8170-modules needs a Linux kernel to be built\"\n\tdepends on BR2_arm926t\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/on2-8170-modules/on2-8170-modules.hash",
    "content": "# locally computed\nsha256  d04d3acb8755281f6721d2a2efe04014060f83f38972208f356a486d52ca8bfc  on2-8170-modules-73b08061d30789178e692bc332b73d1d9922bf39.tar.gz\n"
  },
  {
    "path": "package/on2-8170-modules/on2-8170-modules.mk",
    "content": "################################################################################\n#\n# on2-8170-modules\n#\n################################################################################\n\nON2_8170_MODULES_VERSION = 73b08061d30789178e692bc332b73d1d9922bf39\nON2_8170_MODULES_SITE = $(call github,alexandrebelloni,on2-8170-modules,$(ON2_8170_MODULES_VERSION))\n\nON2_8170_MODULES_LICENSE = GPL-2.0+\n#There is no license file\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/oniguruma/Config.in",
    "content": "config BR2_PACKAGE_ONIGURUMA\n\tbool \"oniguruma\"\n\thelp\n\t  Oniguruma is a modern and flexible regular expressions\n\t  library. It encompasses features from different regular\n\t  expression implementations that traditionally exist in\n\t  different languages.\n\n\t  https://github.com/kkos/oniguruma\n"
  },
  {
    "path": "package/oniguruma/oniguruma.hash",
    "content": "# From https://github.com/kkos/oniguruma/releases/download/v6.9.7/onig-6.9.7.1.tar.gz.sha256\nsha256  6444204b9c34e6eb6c0b23021ce89a0370dad2b2f5c00cd44c342753e0b204d9  onig-6.9.7.1.tar.gz\n# Hash for license file\nsha256  70ba5469ea0bab6e18a32d7009068f996503168d27be57747e08da34337ff26f  COPYING\n"
  },
  {
    "path": "package/oniguruma/oniguruma.mk",
    "content": "################################################################################\n#\n# oniguruma\n#\n################################################################################\n\nONIGURUMA_VERSION = 6.9.7.1\nONIGURUMA_SITE = \\\n\thttps://github.com/kkos/oniguruma/releases/download/v$(ONIGURUMA_VERSION)\nONIGURUMA_SOURCE = onig-$(ONIGURUMA_VERSION).tar.gz\nONIGURUMA_LICENSE = BSD-2-Clause\nONIGURUMA_LICENSE_FILES = COPYING\nONIGURUMA_CPE_ID_VENDOR = oniguruma_project\nONIGURUMA_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/open-lldp/Config.in",
    "content": "config BR2_PACKAGE_OPEN_LLDP\n\tbool \"open-lldp\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tselect BR2_PACKAGE_LIBCONFIG\n\tselect BR2_PACKAGE_LIBNL\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  This package contains the Linux user space daemon and\n\t  configuration tool for Intel LLDP Agent with Enhanced Ethernet\n\t  support for the Data Center.\n\n\t  https://github.com/intel/openlldp/\n\ncomment \"open-lldp needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/open-lldp/open-lldp.hash",
    "content": "# Locally computed\nsha256  13e0890527192a6289e6dac82056c447a1e2624ff93b0b6bbd8a42d15b2cbc8c  open-lldp-1.1.tar.gz\nsha256  67af5abeb092213cd9c53781503320f635ba28b641e0c3f24d367e8e93a9839b  COPYING\n"
  },
  {
    "path": "package/open-lldp/open-lldp.mk",
    "content": "################################################################################\n#\n# open-lldp\n#\n################################################################################\n\nOPEN_LLDP_VERSION = 1.1\nOPEN_LLDP_SITE = $(call github,intel,openlldp,v$(OPEN_LLDP_VERSION))\nOPEN_LLDP_DEPENDENCIES = readline libnl libconfig host-pkgconf\nOPEN_LLDP_LICENSE = GPL-2.0\nOPEN_LLDP_LICENSE_FILES = COPYING\n\n# Fetching from git\nOPEN_LLDP_AUTORECONF = YES\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nOPEN_LLDP_DEPENDENCIES += systemd\nOPEN_LLDP_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/open-plc-utils/0001-Remove-OWNER-and-GROUPS-parameters-to-install.patch",
    "content": "From 1fe7b756365254f7175558e7a89c1d89f95c5e2e Mon Sep 17 00:00:00 2001\nFrom: Maxime Hadjinlian <maxime.hadjinlian@devialet.com>\nDate: Tue, 30 Sep 2014 13:46:59 +0200\nSubject: [PATCH] Remove OWNER and GROUPS parameters to install\n\nThe Install tries to change the owner and groups of the binary. In\nBuildroot we don't want that, since fakeroot will do its job when we\nfinalize the rootfs.\n\nSigned-off-by: Maxime Hadjinlian <maxime.hadjinlian@devialet.com>\n[aduskett@gmail.com: Updated for 32408520fcebe785983a68e39ec83830a3005779]\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\n---\n docbook/Makefile | 4 ++--\n ether/Makefile   | 8 ++++----\n key/Makefile     | 8 ++++----\n mdio/Makefile    | 8 ++++----\n mme/Makefile     | 8 ++++----\n nvm/Makefile     | 8 ++++----\n pib/Makefile     | 8 ++++----\n plc/Makefile     | 8 ++++----\n ram/Makefile     | 8 ++++----\n serial/Makefile  | 8 ++++----\n slac/Makefile    | 8 ++++----\n tools/Makefile   | 2 +-\n 12 files changed, 43 insertions(+), 43 deletions(-)\n\ndiff --git a/docbook/Makefile b/docbook/Makefile\nindex d630822..039d62a 100755\n--- a/docbook/Makefile\n+++ b/docbook/Makefile\n@@ -32,9 +32,9 @@ manuals:\n \t${SHELL} ../docbook/manuals\n scripts:\n library:\n-\tinstall -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${LIBRARY}\n+\tinstall -m ${DIR_PERM} -d ${LIBRARY}\n install: library\n-\tif [ -d ${LIBRARY} ]; then install -m ${WWW_PERM} -o ${OWNER} -g ${GROUP} *.html *.css *.png ${LIBRARY}; fi\n+\tif [ -d ${LIBRARY} ]; then install -m ${WWW_PERM} *.html *.css *.png ${LIBRARY}; fi\n uninstall:\n \trm -f ${LIBRARY}/*.c.html ${LIBRARY}/*.h.html ${LIBRARY}/*.1.html\n setup:\ndiff --git a/ether/Makefile b/ether/Makefile\nindex 89174cb..8256d50 100755\n--- a/ether/Makefile\n+++ b/ether/Makefile\n@@ -27,13 +27,13 @@ compact: compile\n \tif [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi\n \tif [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi\n library:\n-\tinstall -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN}\n+\tinstall -m ${DIR_PERM} -d ${BIN}\n scripts:\n manuals:\n-\ttest -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}\n-\tinstall -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN}\n+\ttest -d ${MAN} || install -m ${DIR_PERM} -d ${MAN}\n+\tinstall -m ${MAN_PERM} ${PAGES} ${MAN}\n install: $(TOOLS) library\n-\tinstall -m ${SUID_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN}\n+\tinstall -m ${SUID_PERM} ${TOOLS} ${BIN}\n uninstall:\n \tcd ${BIN}; rm -f ${TOOLS}\n \tcd ${MAN}; rm -f ${PAGES}\ndiff --git a/key/Makefile b/key/Makefile\nindex de62a49..78fa200 100755\n--- a/key/Makefile\n+++ b/key/Makefile\n@@ -28,13 +28,13 @@ compact: compile\n \tif [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi\n \tif [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi\n library:\n-\tinstall -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN}\n+\tinstall -m ${DIR_PERM} -d ${BIN}\n scripts:\n manuals:\n-\ttest -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}\n-\tinstall -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN}\n+\ttest -d ${MAN} || install -m ${DIR_PERM} -d ${MAN}\n+\tinstall -m ${MAN_PERM} ${PAGES} ${MAN}\n install: $(TOOLS)\n-\tinstall -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN}\n+\tinstall -m ${BIN_PERM} ${TOOLS} ${BIN}\n uninstall:\n \tcd ${BIN}; rm -f ${TOOLS}\n \tcd ${MAN}; rm -f ${PAGES}\ndiff --git a/mdio/Makefile b/mdio/Makefile\nindex 049b08e..3ff4c26 100755\n--- a/mdio/Makefile\n+++ b/mdio/Makefile\n@@ -27,13 +27,13 @@ compact: compile\n \tif [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi\n \tif [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi\n library:\n-\tinstall -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN}\n+\tinstall -m ${DIR_PERM} -d ${BIN}\n scripts:\n manuals:\n-\ttest -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}\n-\tinstall -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN}\n+\ttest -d ${MAN} || install -m ${DIR_PERM} -d ${MAN}\n+\tinstall -m ${MAN_PERM} ${PAGES} ${MAN}\n install: $(TOOLS) library\n-\tinstall -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN}\n+\tinstall -m ${BIN_PERM} ${TOOLS} ${BIN}\n uninstall:\n \tcd ${BIN}; rm -f int6k ${TOOLS}\n \tcd ${MAN}; rm -f int6k ${PAGES}\ndiff --git a/mme/Makefile b/mme/Makefile\nindex 0313aea..77a6b96 100755\n--- a/mme/Makefile\n+++ b/mme/Makefile\n@@ -27,13 +27,13 @@ compact: compile\n \tif [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi\n \tif [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi\n library:\n-\tinstall -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN}\n+\tinstall -m ${DIR_PERM} -d ${BIN}\n scripts:\n manuals:\n-\ttest -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}\n-\tinstall -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN}\n+\ttest -d ${MAN} || install -m ${DIR_PERM} -d ${MAN}\n+\tinstall -m ${MAN_PERM} ${PAGES} ${MAN}\n install: $(TOOLS) library\n-\tinstall -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN}\n+\tinstall -m ${BIN_PERM} ${TOOLS} ${BIN}\n uninstall:\n \tcd ${BIN}; rm -f ${TOOLS}\n \tcd ${MAN}; rm -f ${PAGES}\ndiff --git a/nvm/Makefile b/nvm/Makefile\nindex 9aa05ec..b468e70 100755\n--- a/nvm/Makefile\n+++ b/nvm/Makefile\n@@ -28,12 +28,12 @@ compact: compile\n \tif [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi\n scripts:\n manuals:\n-\ttest -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}\n-\tinstall -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN}\n+\ttest -d ${MAN} || install -m ${DIR_PERM} -d ${MAN}\n+\tinstall -m ${MAN_PERM} ${PAGES} ${MAN}\n library:\n-\tinstall -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN}\n+\tinstall -m ${DIR_PERM} -d ${BIN}\n install: $(TOOLS) library\n-\tinstall -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN}\n+\tinstall -m ${BIN_PERM} ${TOOLS} ${BIN}\n uninstall:\n \tcd ${BIN}; rm -f ${TOOLS}\n \tcd ${MAN}; rm -f ${PAGES}\ndiff --git a/pib/Makefile b/pib/Makefile\nindex 93f0c3b..23195b4 100644\n--- a/pib/Makefile\n+++ b/pib/Makefile\n@@ -30,12 +30,12 @@ compact: compile\n \tif [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi\n scripts:\n manuals:\n-\ttest -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}\n-\tinstall -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN}\n+\ttest -d ${MAN} || install -m ${DIR_PERM} -d ${MAN}\n+\tinstall -m ${MAN_PERM} ${PAGES} ${MAN}\n library:\n-\tinstall -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN}\n+\tinstall -m ${DIR_PERM} -d ${BIN}\n install: $(TOOLS) library\n-\tinstall -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN}\n+\tinstall -m ${BIN_PERM} ${TOOLS} ${BIN}\n uninstall:\n \tcd ${BIN}; rm -f ${TOOLS}\n \tcd ${MAN}; rm -f ${PAGES}\ndiff --git a/plc/Makefile b/plc/Makefile\nindex 43d6bd5..9fd4e0a 100644\n--- a/plc/Makefile\n+++ b/plc/Makefile\n@@ -32,13 +32,13 @@ compact: compile\n \tif [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi\n \tif [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi\n library:\n-\tinstall -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN}\n+\tinstall -m ${DIR_PERM} -d ${BIN}\n scripts:\n manuals:\n-\ttest -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}\n-\tinstall -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN}\n+\ttest -d ${MAN} || install -m ${DIR_PERM} -d ${MAN}\n+\tinstall -m ${MAN_PERM} ${PAGES} ${MAN}\n install: $(TOOLS) library\n-\tinstall -m ${SUID_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN}\n+\tinstall -m ${SUID_PERM} ${TOOLS} ${BIN}\n uninstall:\n \tcd ${BIN}; rm -f ${TOOLS}\n \tcd ${MAN}; rm -f ${PAGES}\ndiff --git a/ram/Makefile b/ram/Makefile\nindex 60b9bb3..c34ddd0 100755\n--- a/ram/Makefile\n+++ b/ram/Makefile\n@@ -27,13 +27,13 @@ compact: compile\n \tif [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi\n \tif [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi\n library:\n-\tinstall -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN}\n+\tinstall -m ${DIR_PERM} -d ${BIN}\n scripts:\n manuals:\n-\ttest -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}\n-\tinstall -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN}\n+\ttest -d ${MAN} || install -m ${DIR_PERM} -d ${MAN}\n+\tinstall -m ${MAN_PERM} ${PAGES} ${MAN}\n install: $(TOOLS) library\n-\tinstall -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN}\n+\tinstall -m ${BIN_PERM} ${TOOLS} ${BIN}\n uninstall:\n \tcd ${BIN}; rm -f ${TOOLS}\n \tcd ${MAN}; rm -f ${PAGES}\ndiff --git a/serial/Makefile b/serial/Makefile\nindex c25f1a6..aebbac9 100755\n--- a/serial/Makefile\n+++ b/serial/Makefile\n@@ -27,13 +27,13 @@ compact: compile\n \tif [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi\n \tif [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi\n library:\n-\tinstall -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN}\n+\tinstall -m ${DIR_PERM} -d ${BIN}\n scripts:\n manuals:\n-\ttest -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}\n-\tinstall -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN}\n+\ttest -d ${MAN} || install -m ${DIR_PERM} -d ${MAN}\n+\tinstall -m ${MAN_PERM} ${PAGES} ${MAN}\n install: $(TOOLS) library\n-\tinstall -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN}\n+\tinstall -m ${BIN_PERM} ${TOOLS} ${BIN}\n uninstall:\n \tcd ${BIN}; rm -f int6k ${TOOLS}\n \tcd ${MAN}; rm -f int6k ${PAGES}\ndiff --git a/slac/Makefile b/slac/Makefile\nindex bd12db9..1f0b65d 100755\n--- a/slac/Makefile\n+++ b/slac/Makefile\n@@ -27,13 +27,13 @@ compact: compile\n \tif [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi\n \tif [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi\n library:\n-\tinstall -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN}\n+\tinstall -m ${DIR_PERM} -d ${BIN}\n scripts:\n manuals:\n-\tif [ ! -d ${MAN} ]; then install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}; fi\n-\tinstall -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN}\n+\tif [ ! -d ${MAN} ]; then install -m ${DIR_PERM} -d ${MAN}; fi\n+\tinstall -m ${MAN_PERM} ${PAGES} ${MAN}\n install: compile library\n-\tinstall -m ${SUID_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN}\n+\tinstall -m ${SUID_PERM} ${TOOLS} ${BIN}\n uninstall:\n \tcd ${BIN}; rm -f ${TOOLS}\n \tcd ${MAN}; rm -f ${PAGES}\ndiff --git a/tools/Makefile b/tools/Makefile\nindex 1d992cf..a74fd24 100755\n--- a/tools/Makefile\n+++ b/tools/Makefile\n@@ -27,7 +27,7 @@ compact: compile\n \tif [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi\n \tif [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi\n library:\n-\tinstall -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN}\n+\tinstall -m ${DIR_PERM} -d ${BIN}\n scripts:\n manuals:\n #\tinstall -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN}\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/open-plc-utils/0002-plc-plc.h-fix-build-with-gcc-10.patch",
    "content": "From 27222be0b8db59cae30a5fcca93255daea147bb6 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 23 Sep 2020 19:05:23 +0200\nSubject: [PATCH] plc/plc.h: fix build with gcc 10\n\nDrop plcproperty from plc/plc.h to avoid the following build failure\nwith gcc 10 (which defaults to -fno-common):\n\n/home/buildroot/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: rules.o:(.bss+0x0): multiple definition of `plcproperty'; pibruin.o:(.bss+0x0): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/6b3064b64dea3d4aaf219f787429c25918101483\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/qca/open-plc-utils/pull/141]\n---\n plc/plc.h | 4 +---\n 1 file changed, 1 insertion(+), 3 deletions(-)\n\ndiff --git a/plc/plc.h b/plc/plc.h\nindex 1fa32b53..208cf91a 100644\n--- a/plc/plc.h\n+++ b/plc/plc.h\n@@ -496,9 +496,7 @@ struct __packed plcproperty\n \tuint8_t DATA_FORMAT;\n \tuint32_t DATA_LENGTH;\n \tuint8_t DATA_BUFFER [128];\n-}\n-\n-plcproperty;\n+};\n \n #ifndef __GNUC__\n #pragma pack (pop)\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/open-plc-utils/Config.in",
    "content": "config BR2_PACKAGE_OPEN_PLC_UTILS\n\tbool \"open-plc-utils\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Open version of the Qualcomm Atheros Powerline Toolkit\n\n\t  https://github.com/qca/open-plc-utils\n"
  },
  {
    "path": "package/open-plc-utils/open-plc-utils.hash",
    "content": "# Locally computed\nsha256  b0156567a71c608cc1a0b18bbb1c5a97dd0ad9180097435f7e99119712bb299b  open-plc-utils-32408520fcebe785983a68e39ec83830a3005779.tar.gz\nsha256  3137c632bbcec5e88b72dc13f4fe06ee184eea364fec8f7494bdfa57672ef921  LICENSE\n"
  },
  {
    "path": "package/open-plc-utils/open-plc-utils.mk",
    "content": "################################################################################\n#\n# open-plc-utils\n#\n################################################################################\n\nOPEN_PLC_UTILS_VERSION = 32408520fcebe785983a68e39ec83830a3005779\nOPEN_PLC_UTILS_SITE = $(call github,qca,open-plc-utils,$(OPEN_PLC_UTILS_VERSION))\nOPEN_PLC_UTILS_LICENSE = BSD-3-Clause\nOPEN_PLC_UTILS_LICENSE_FILES = LICENSE\n\n# We unfortunately can't use TARGET_CONFIGURE_OPTS, as it would\n# override the package CFLAGS, LDFLAGS and CXXFLAGS definitions.\n#\n# Yes, we're passing __UCLIBC__ in EXTRA_CFLAGS, as it fixes a build\n# issue for non-uClibc toolchains. It is the very crappy solution\n# suggested at https://github.com/qca/open-plc-utils/issues/36.\nOPEN_PLC_UTILS_MAKE_OPTS = \\\n\tEXTRA_CFLAGS=\"$(TARGET_CFLAGS) -D__UCLIBC__\" \\\n\tEXTRA_CXXFLAGS=\"$(TARGET_CXXFLAGS)\" \\\n\tEXTRA_LDFLAGS=\"$(TARGET_LDFLAGS)\"\n\ndefine OPEN_PLC_UTILS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CROSS=$(TARGET_CROSS) \\\n\t\t$(OPEN_PLC_UTILS_MAKE_OPTS) -C $(@D)\nendef\n\ndefine OPEN_PLC_UTILS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) ROOTFS=$(TARGET_DIR) \\\n\t\tBIN=\"$(TARGET_DIR)/usr/bin\" -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/open2300/0001-fix-makefile.patch",
    "content": "From b0a1f12349bee43040a889c7e74873cfb253b9d8 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Thu, 6 Feb 2014 21:42:50 +0100\nSubject: [PATCH] fix makefile\n\n- allow to extend CFLAGS and CC_LDFLAGS\n- remove hard-coded include dirs. and lib. dirs. (which pointed to some\n  location in the host system)\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n---\n Makefile | 10 +++++-----\n 1 file changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 92a2cc0..1b54175 100755\n--- a/Makefile\n+++ b/Makefile\n@@ -37,9 +37,9 @@ MYSQLHISTLOGOBJ = mysqlhistlog2300.o rw2300.o linux2300.o win2300.o\n \n VERSION = 1.11\n \n-CFLAGS = -Wall -O3 -DVERSION=\\\"$(VERSION)\\\"\n-CC_LDFLAGS = -lm\n-CC_WINFLAG = \n+override CFLAGS += -Wall -O3 -DVERSION=\\\"$(VERSION)\\\"\n+override CC_LDFLAGS += -lm\n+CC_WINFLAG =\n # For Windows - comment the two line above and un-comment the two lines below.\n #CC_LDFLAGS = -lm -lwsock32\n #CC_WINFLAG = -mwindows\n@@ -80,7 +80,7 @@ xml2300 : $(XMLOBJ)\n \t$(CC) $(CFLAGS) -o $@ $(XMLOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)\n \n mysql2300:\n-\t$(CC) $(CFLAGS) -o mysql2300 mysql2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient\n+\t$(CC) $(CFLAGS) -o mysql2300 mysql2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG)\n \n pgsql2300: $(PGSQLOBJ)\n \t$(CC) $(CFLAGS) -o $@ $(PGSQLOBJ) $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/pgsql -L/usr/lib/pgsql -lpq\n@@ -95,7 +95,7 @@ minmax2300: $(MINMAXOBJ)\n \t$(CC) $(CFLAGS) -o $@ $(MINMAXOBJ) $(CC_LDFLAGS) $(CC_WINFLAG)\n \t\n mysqlhistlog2300 :\n-\t$(CC) $(CFLAGS) -o mysqlhistlog2300 mysqlhistlog2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient\n+\t$(CC) $(CFLAGS) -o mysqlhistlog2300 mysqlhistlog2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG)\n \n \n install:\n-- \n1.8.5.3\n\n"
  },
  {
    "path": "package/open2300/Config.in",
    "content": "config BR2_PACKAGE_OPEN2300\n\tbool \"open2300\"\n\thelp\n\t  open2300 reads (and writes) data from a Lacrosse\n\t  WS2300/WS2305/WS2310/WS2315 Weather Station\n\n\t  http://www.lavrsen.dk/foswiki/bin/view/Open2300/WebHome\n"
  },
  {
    "path": "package/open2300/open2300.hash",
    "content": "# Localy computed\nsha256  ffa7f8d35b16abfbf5e52285cb21f2a7fc6afb901abb40c0c80eef9d23d08aab  open2300-f21982e0b1f8321561e5ad1668307fde97700e1b.tar.gz\n\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/open2300/open2300.mk",
    "content": "################################################################################\n#\n# open2300\n#\n################################################################################\n\nOPEN2300_VERSION = f21982e0b1f8321561e5ad1668307fde97700e1b\nOPEN2300_SITE = $(call github,wezm,open2300,$(OPEN2300_VERSION))\nOPEN2300_LICENSE = GPL-2.0\nOPEN2300_LICENSE_FILES = COPYING\n\nOPEN2300_BINS = \\\n\topen2300 dump2300 log2300 fetch2300 wu2300 cw2300 history2300 \\\n\thistlog2300 bin2300 xml2300 light2300 interval2300 minmax2300\nOPEN2300_CFLAGS = $(TARGET_CFLAGS)\nOPEN2300_LDFLAGS = $(TARGET_LDFLAGS)\n\nifeq ($(BR2_PACKAGE_MYSQL),y)\nOPEN2300_DEPENDENCIES += mysql\nOPEN2300_BINS += mysql2300 mysqlhistlog2300\nOPEN2300_CFLAGS += $(shell $(STAGING_DIR)/usr/bin/mysql_config --cflags)\nOPEN2300_LDFLAGS += $(shell $(STAGING_DIR)/usr/bin/mysql_config --libs)\nendif\n\ndefine OPEN2300_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" LD=\"$(TARGET_LD)\" \\\n\t\tCFLAGS=\"$(OPEN2300_CFLAGS)\" CC_LDFLAGS=\"$(OPEN2300_LDFLAGS)\" \\\n\t\t-C $(@D) $(OPEN2300_BINS)\nendef\n\ndefine OPEN2300_INSTALL_TARGET_CMDS\n\tfor prog in $(OPEN2300_BINS); do \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$$prog $(TARGET_DIR)/usr/bin/$$prog ; \\\n\tdone\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/open62541/0001-CMakeLists.txt-project-only-contains-C-code.patch",
    "content": "From 61f9440dfeacad517965451773371aca0332d700 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Tue, 5 Jan 2021 23:08:53 +0100\nSubject: [PATCH] CMakeLists.txt: project only contains C code\n\nMake sure CMake doesn't check for a C++ compiler when it's not needed,\nas open62541 is in C.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n CMakeLists.txt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 94ceb127..acc41ab2 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -1,5 +1,5 @@\n cmake_minimum_required(VERSION 3.0...3.12)\n-project(open62541)\n+project(open62541 C)\n # set(CMAKE_VERBOSE_MAKEFILE ON)\n if(${CMAKE_VERSION} VERSION_LESS 3.12)\n     cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/open62541/0002-arch-posix-CMakeLists.txt-fix-build-without-threads.patch",
    "content": "From a312e82124fb8c9f139d5a40fa5a28123bb77a33 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 10 Jan 2021 14:25:56 +0100\nSubject: [PATCH] arch/posix/CMakeLists.txt: fix build without threads\n\nFix the following build failure without threads:\n\n[100%] Linking C shared library bin/libopen62541.so\n/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabihf/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabihf/bin/ld: cannot find -lpthread\ncollect2: error: ld returned 1 exit status\nCMakeFiles/open62541.dir/build.make:192: recipe for target 'bin/libopen62541.so.0.0.0' failed\nmake[3]: *** [bin/libopen62541.so.0.0.0] Error 1\n\nFixes:\n - http://autobuild.buildroot.org/results/87ec3c987c991f790757276316d6caf81e635fa2\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n arch/posix/CMakeLists.txt | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/arch/posix/CMakeLists.txt b/arch/posix/CMakeLists.txt\nindex bb24757c..a53c9f2c 100644\n--- a/arch/posix/CMakeLists.txt\n+++ b/arch/posix/CMakeLists.txt\n@@ -20,8 +20,6 @@ if (${_index} GREATER -1 OR \"${UA_ARCHITECTURE}\" STREQUAL \"posix\")\n           ua_architecture_append_to_library(netdb ndblib socket)\n         else()\n           ua_architecture_append_to_library(m)\n-          #TODO - Error on first make run if pthread is included conditional?\n-          ua_architecture_append_to_library(pthread)\n           if(UA_MULTITHREADING OR UA_BUILD_UNIT_TESTS)\n             ua_architecture_append_to_library(pthread)\n           endif()\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/open62541/0003-fix-core-Explicit-cast-to-avoid-compiler-warning.patch",
    "content": "From 0c53fd776af9631c915c8722e1d68ce9a69fa3f6 Mon Sep 17 00:00:00 2001\nFrom: Andreas Walter <andreas.walter@waltronix.de>\nDate: Fri, 26 Feb 2021 11:49:25 +0100\nSubject: [PATCH] fix(core): Explicit cast to avoid compiler warning (#4203)\n\n[Retrieved from:\nhttps://github.com/open62541/open62541/commit/0c53fd776af9631c915c8722e1d68ce9a69fa3f6]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/ua_types_encoding_binary.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/ua_types_encoding_binary.c b/src/ua_types_encoding_binary.c\nindex 0fe88eb98e0..abbd23735d3 100644\n--- a/src/ua_types_encoding_binary.c\n+++ b/src/ua_types_encoding_binary.c\n@@ -319,7 +319,7 @@ static long double\n unpack754(uint64_t i, unsigned bits, unsigned expbits) {\n     unsigned significandbits = bits - expbits - 1;\n     long double result = (long double)(i&(uint64_t)((1LL<<significandbits)-1));\n-    result /= (1LL<<significandbits);\n+    result /= (long double)(1LL<<significandbits);\n     result += 1.0f;\n     unsigned bias = (unsigned)(1<<(expbits-1)) - 1;\n     long long shift = (long long)((i>>significandbits) & (uint64_t)((1LL<<expbits)-1)) - bias;\n"
  },
  {
    "path": "package/open62541/0004-CMakeLists.txt-add-UA_FORCE_WERROR.patch",
    "content": "From a439daafdc98391eed13e23f93ecfca81d71c731 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 2 Aug 2021 09:49:48 +0200\nSubject: [PATCH] CMakeLists.txt: add UA_FORCE_WERROR\n\nAllow the user to disable -Werror to avoid the following build failures:\n\n/tmp/instance-0/output-1/build/open62541-v1.2.2/arch/network_tcp.c: In function 'connection_recv':\n/tmp/instance-0/output-1/build/open62541-v1.2.2/arch/network_tcp.c:96:5: error: conversion to 'unsigned int' from 'int' may change the sign of the result [-Werror=sign-conversion]\n   96 |     UA_fd_set(connection->sockfd, &fdset);\n      |     ^~~~~~~~~\n\n/tmp/instance-6/output-1/build/open62541-v1.2.2/plugins/ua_pubsub_udp.c: In function 'UA_PubSubChannelUDPMC_receive':\n/tmp/instance-6/output-1/build/open62541-v1.2.2/plugins/ua_pubsub_udp.c:477:21: error: conversion to '__suseconds_t' {aka 'int'} from 'UA_UInt32' {aka 'unsigned int'} may change the sign of the result [-Werror=sign-conversion]\n  477 |     tmptv.tv_usec = (long int)(timeout % 1000000);\n      |                     ^\n\nFixes:\n - http://autobuild.buildroot.org/results/911811de81d8abb2a31feb8f27af1592641c6fbc\n - http://autobuild.buildroot.org/results/f0187b3f2d62e955fddeef4e90f84ba4fd642bd2\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/open62541/open62541/pull/4572]\n---\n CMakeLists.txt | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex bc839f27..963460d0 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -292,6 +292,8 @@ if(UA_FORCE_CPP)\n     add_definitions(-D__STDC_CONSTANT_MACROS) # We need the UINT32_C define\n endif()\n \n+option(UA_FORCE_WERROR \"Force compilation with -Werror\" ON)\n+\n #General PubSub setup\n option(UA_ENABLE_PUBSUB \"Enable the PubSub protocol\" OFF)\n \n@@ -589,7 +591,9 @@ if(NOT UA_FORCE_CPP AND (CMAKE_COMPILER_IS_GNUCC OR \"x${CMAKE_C_COMPILER_ID}\" ST\n     check_add_cc_flag(\"-Wall\")      # Warnings\n     check_add_cc_flag(\"-Wextra\")    # More warnings\n     check_add_cc_flag(\"-Wpedantic\") # Standard compliance\n-    check_add_cc_flag(\"-Werror\")    # All warnings are errors\n+    if(UA_FORCE_WERROR)\n+        check_add_cc_flag(\"-Werror\")    # All warnings are errors\n+    endif()\n \n     check_add_cc_flag(\"-Wno-static-in-inline\") # Clang doesn't like the use of static inline methods inside static inline methods\n     check_add_cc_flag(\"-Wno-overlength-strings\") # May happen in the nodeset compiler when complex values are directly encoded\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/open62541/Config.in",
    "content": "config BR2_PACKAGE_OPEN62541\n\tbool \"open62541\"\n\thelp\n\t  open62541 is an open source and free implementation of OPC UA.\n\n\t  http://open62541.org\n\nif BR2_PACKAGE_OPEN62541\n\nchoice\n\tprompt \"namespace zero nodes\"\n\thelp\n\t  Namespace zero contains the standard-defined nodes. The full\n\t  namespace zero may not be required for all applications.\n\nconfig BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_DEFAULT\n\tbool \"default\"\n\thelp\n\t  Use the default namespace zero contents.\n\nconfig BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_MINIMAL\n\tbool \"minimal\"\n\thelp\n\t  A barebones namespace zero that is compatible with most\n\t  clients.  But this namespace 0 is so small that it does not\n\t  pass the CTT (Conformance Testing Tools of the OPC\n\t  Foundation).\n\nconfig BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_REDUCED\n\tbool \"reduced\"\n\thelp\n\t  Small namespace zero that passes the CTT.\n\nconfig BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_FULL\n\tbool \"full\"\n\thelp\n\t  Full namespace zero generated from the official XML\n\t  definitions.\n\nendchoice\n\nconfig BR2_PACKAGE_OPEN62541_JSON_ENCODING\n\tbool \"json encoding\"\n\nconfig BR2_PACKAGE_OPEN62541_PUBSUB\n\tbool \"publish/subscribe\"\n\thelp\n\t  Enable the experimental OPC UA PubSub support. The option\n\t  will include the PubSub UDP multicast plugin.\n\nif BR2_PACKAGE_OPEN62541_PUBSUB\n\nconfig BR2_PACKAGE_OPEN62541_PUBSUB_DELTAFRAMES\n\tbool \"publish/subscribe deltaframes\"\n\thelp\n\t  The PubSub messages differentiate between keyframe (all\n\t  published values contained) and deltaframe (only changed\n\t  values contained) messages. Deltaframe messages creation\n\t  consumes some additional ressources.\n\nconfig BR2_PACKAGE_OPEN62541_PUBSUB_INFORMATIONMODEL\n\tbool \"publish/subscribe information model\"\n\tdepends on BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_REDUCED || \\\n\t\tBR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_FULL\n\thelp\n\t  Enable the information model representation of the PubSub\n\t  configuration.\n\nendif # BR2_PACKAGE_OPEN62541_PUBSUB\n\nendif\n"
  },
  {
    "path": "package/open62541/open62541.hash",
    "content": "# Locally calculated\nsha256  c59c85b519a18350f5014b6e7b7545ee144ceeb15094e75b0b7ecec7dce43dd0  open62541-v1.2.2-br1.tar.gz\nsha256  fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85  LICENSE\n"
  },
  {
    "path": "package/open62541/open62541.mk",
    "content": "################################################################################\n#\n# open62541\n#\n################################################################################\n\nOPEN62541_VERSION = v1.2.2\nOPEN62541_SITE_METHOD = git\nOPEN62541_SITE = git://github.com/open62541/open62541.git\nOPEN62541_GIT_SUBMODULES = YES\nOPEN62541_INSTALL_STAGING = YES\nOPEN62541_LICENSE = MPL-2.0\nOPEN62541_LICENSE_FILES = LICENSE\n\n# Force Release build to remove -Werror.\n# Don't use git describe to get the version number.\n# Disable hardening options to let Buildroot handle it.\nOPEN62541_CONF_OPTS = \\\n\t-DCMAKE_BUILD_TYPE=Release \\\n\t-DGIT_EXECUTABLE=NO \\\n\t-DOPEN62541_VERSION=$(OPEN62541_VERSION) \\\n\t-DUA_ENABLE_HARDENING=OFF \\\n\t-DUA_FORCE_WERROR=OFF\n\nifeq ($(BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_MINIMAL),y)\nOPEN62541_CONF_OPTS += -DUA_NAMESPACE_ZERO=MINIMAL\nelse ifeq ($(BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_REDUCED),y)\nOPEN62541_CONF_OPTS += -DUA_NAMESPACE_ZERO=REDUCED\nelse ifeq ($(BR2_PACKAGE_OPEN62541_UA_NAMESPACE_ZERO_FULL),y)\nOPEN62541_CONF_OPTS += -DUA_NAMESPACE_ZERO=FULL\nendif\n\nifeq ($(BR2_PACKAGE_OPEN62541_JSON_ENCODING),y)\nOPEN62541_CONF_OPTS += -DUA_ENABLE_JSON_ENCODING=ON\nelse\nOPEN62541_CONF_OPTS += -DUA_ENABLE_JSON_ENCODING=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPEN62541_PUBSUB),y)\nOPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB=ON\nelse\nOPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPEN62541_PUBSUB_DELTAFRAMES),y)\nOPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB_DELTAFRAMES=ON\nelse\nOPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB_DELTAFRAMES=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPEN62541_PUBSUB_INFORMATIONMODEL),y)\nOPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB_INFORMATIONMODEL=ON\nelse\nOPEN62541_CONF_OPTS += -DUA_ENABLE_PUBSUB_INFORMATIONMODEL=OFF\nendif\n\n# Remove unneeded files\ndefine OPEN62541_REMOVE_UNNEEDED_FILES\n\t$(RM) -r $(TARGET_DIR)/usr/share/open62541\nendef\n\nOPEN62541_POST_INSTALL_TARGET_HOOKS += OPEN62541_REMOVE_UNNEEDED_FILES\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/openal/Config.in",
    "content": "# openal can:\n# - use __atomic_*() intrinsics when available\n# - otherwise use __sync_*() intrinsics when available. It needs the\n#   4-byte ones on 32 bits architectures, and the 4-byte and 8-byte\n#   one on 64 bits architecture\n# - it also provides its one implementation of atomic operations on\n#   x86 and x86_64, but we dont take those into account since in most\n#   situations __atomic_*() or __sync_*() will be available, and not\n#   all x86 CPUs provide the necessary assembly instructions.\nconfig BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_TOOLCHAIN_HAS_ATOMIC\n\tdefault y if BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_ARCH_IS_64\n\tdefault y if BR2_TOOLCHAIN_HAS_SYNC_4 && BR2_TOOLCHAIN_HAS_SYNC_8 && BR2_ARCH_IS_64\n\nconfig BR2_PACKAGE_OPENAL\n\tbool \"openal\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 PR56019\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\thelp\n\t  OpenAL provides capabilities for playing audio in a virtual\n\t  3D environment. Distance attenuation, doppler shift, and\n\t  directional sound emitters are among the features handled by\n\t  the API.\n\n\t  http://kcat.strangesoft.net/openal.html\n\ncomment \"openal needs a toolchain w/ NPTL, C++, gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/openal/openal.hash",
    "content": "# Locally calculated\nsha256  8ac17e4e3b32c1af3d5508acfffb838640669b4274606b7892aa796ca9d7467f  openal-1.21.1.tar.gz\nsha256  d808ce217e5b611854da622b57ec29fe545584c48bc5352fae72a4b6e5074a15  COPYING\n"
  },
  {
    "path": "package/openal/openal.mk",
    "content": "################################################################################\n#\n# openal\n#\n################################################################################\n\nOPENAL_VERSION = 1.21.1\nOPENAL_SITE = $(call github,kcat,openal-soft,$(OPENAL_VERSION))\nOPENAL_LICENSE = LGPL-2.0+\nOPENAL_LICENSE_FILES = COPYING\nOPENAL_INSTALL_STAGING = YES\n\n# We don't need examples, tests and utilities, Distros don't ship them either\nOPENAL_CONF_OPTS += -DALSOFT_UTILS=OFF -DALSOFT_EXAMPLES=OFF -DALSOFT_TESTS=OFF\n\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_8),y)\nOPENAL_CONF_OPTS += -DEXTRA_LIBS=atomic\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nOPENAL_DEPENDENCIES += alsa-lib\nOPENAL_CONF_OPTS += -DALSOFT_REQUIRE_ALSA=ON\nelse\nOPENAL_CONF_OPTS += -DALSOFT_REQUIRE_ALSA=OFF\nendif\n\nifeq ($(BR2_PACKAGE_JACK2),y)\nOPENAL_DEPENDENCIES += jack2\nOPENAL_CONF_OPTS += -DALSOFT_REQUIRE_JACK=ON\nelse\nOPENAL_CONF_OPTS += -DALSOFT_REQUIRE_JACK=OFF\nendif\n\nifeq ($(BR2_PACKAGE_PORTAUDIO),y)\nOPENAL_DEPENDENCIES += portaudio\nOPENAL_CONF_OPTS += -DALSOFT_REQUIRE_PORTAUDIO=ON\nelse\nOPENAL_CONF_OPTS += -DALSOFT_REQUIRE_PORTAUDIO=OFF\nendif\n\nifeq ($(BR2_PACKAGE_PULSEAUDIO),y)\nOPENAL_DEPENDENCIES += pulseaudio\nOPENAL_CONF_OPTS += -DALSOFT_REQUIRE_PULSEAUDIO=ON\nelse\nOPENAL_CONF_OPTS += -DALSOFT_REQUIRE_PULSEAUDIO=OFF\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nOPENAL_CONF_OPTS += -DLIBTYPE=STATIC\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/openblas/0001-fix-gfortran-detection.patch",
    "content": "From ece3ce581e3ec530eaccfe7f284c52e115ec7aa9 Mon Sep 17 00:00:00 2001\nFrom: Martin Kroeker <martin@ruby.chemie.uni-freiburg.de>\nDate: Wed, 10 Feb 2021 14:22:59 +0100\nSubject: [PATCH] Strip parenthesized (pkgversion) data from GCC version string\n to avoid misinterpretation\n\nSee https://github.com/xianyi/OpenBLAS/issues/3099 for details.\n\nUpstream-status: backport\n\n[for import into Buildroot]\nSigned-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\n\n\n---\n f_check | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/f_check b/f_check\nindex e9aca4ff9..ffe9c6b46 100644\n--- a/f_check\n+++ b/f_check\n@@ -75,6 +75,7 @@ if ($compiler eq \"\") {\n \n \t} elsif ($data =~ /GNU/ || $data =~ /GCC/ ) {\n \n+            $data =~ s/\\(+.*?\\)+//g;\n \t    $data =~ /(\\d+)\\.(\\d+).(\\d+)/;\n \t    $major = $1;\n \t    $minor = $2;\n"
  },
  {
    "path": "package/openblas/0002-Makefile-fix-support-for-passing-FFLAGS-on-the-make-.patch",
    "content": "From 4d3829fa52240c2b7e48770ab19584db33ba7863 Mon Sep 17 00:00:00 2001\nFrom: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\nDate: Fri, 5 Mar 2021 11:17:59 +0100\nSubject: [PATCH] Makefile: fix support for passing FFLAGS on the make\n command line\n\nWhen openblas is built while passing FFLAGS on the make command line, the\ncompilation of lapack objects will not contain the flags specified in\nMakefile but _only_ those passed in FFLAGS.\n\nThis can lead to build failure, e.g. because -fPIC is not passed to the\ncompilation of most lapack objects, but is given to the link command:\n\n.../buildroot/output/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os   -O2 -DMAX_STACK_ALLOC=2048 -Wall -m64 -DF_INTERFACE_GFORT -fPIC -DNO_WARMUP -DMAX_CPU_NUMBER=4 -DMAX_PARALLEL_NUMBER=1 -DVERSION=\\\"0.3.9\\\" -DASMNAME= -DASMFNAME=_ -DNAME=_ -DCNAME= -DCHAR_NAME=\\\"_\\\" -DCHAR_CNAME=\\\"\\\" -DNO_AFFINITY -I..  -shared -o ../libopenblas_nehalem-r0.3.9.so \\\n-Wl,--whole-archive ../libopenblas_nehalem-r0.3.9.a -Wl,--no-whole-archive \\\n-Wl,-soname,libopenblas.so.0 -lm -lgfortran -lm -lgfortran\n.../buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/9.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: ../libopenblas_nehalem-r0.3.9.a(sbdsvdx.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC\n\nIn the initial support for this principle, added in commit\nd0e731e8b825e7a554f245aa8f1118dcec9e2728, the flags specified in the\nmakefile were appended to the flags specified on the command-line.\n\nFix this situation by using 'override' for 'FFLAGS' in\nlapack-netlib/make.inc. The flags passed on the command-line are already\npart of the LAPACK_FFLAGS variable, so no '+=' is needed here.\n\nSigned-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex fc5fe3f5..8ae1ff47 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -248,7 +248,7 @@ prof_lapack : lapack_prebuild\n lapack_prebuild :\n ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTRAN)))\n \t-@echo \"FC          = $(FC)\" > $(NETLIB_LAPACK_DIR)/make.inc\n-\t-@echo \"FFLAGS      = $(LAPACK_FFLAGS)\" >> $(NETLIB_LAPACK_DIR)/make.inc\n+\t-@echo \"override FFLAGS      = $(LAPACK_FFLAGS)\" >> $(NETLIB_LAPACK_DIR)/make.inc\n \t-@echo \"POPTS       = $(LAPACK_FPFLAGS)\" >> $(NETLIB_LAPACK_DIR)/make.inc\n \t-@echo \"FFLAGS_NOOPT       = -O0 $(LAPACK_NOOPT)\" >> $(NETLIB_LAPACK_DIR)/make.inc\n \t-@echo \"PNOOPT      = $(LAPACK_FPFLAGS) -O0\" >> $(NETLIB_LAPACK_DIR)/make.inc\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/openblas/0003-Makefile-also-consider-Os-when-determining-LAPACK_NO.patch",
    "content": "From ced08de1ad74811bc23d74121751537bfd8e9556 Mon Sep 17 00:00:00 2001\nFrom: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\nDate: Fri, 5 Mar 2021 11:15:52 +0100\nSubject: [PATCH] Makefile: also consider -O, -Og and -Os when stripping flags\n\ngcc also supports -O, -Og and -Os as optimization flags.\nThey may be given on the make command-line by users.\n\nFor the calculation of LAPACK_NOOPT, all such flags should be considered.\n\nSigned-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex a22e16ba..fc5fe3f5 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -32,7 +32,7 @@ export NOFORTRAN\n export NO_LAPACK\n endif\n \n-LAPACK_NOOPT := $(filter-out -O0 -O1 -O2 -O3 -Ofast,$(LAPACK_FFLAGS))\n+LAPACK_NOOPT := $(filter-out -O0 -O1 -O2 -O3 -Ofast -O -Og -Os,$(LAPACK_FFLAGS))\n \n SUBDIRS_ALL = $(SUBDIRS) test ctest utest exports benchmark ../laswp ../bench cpp_thread_test\n \n-- \n2.26.2\n\n"
  },
  {
    "path": "package/openblas/0004-Makefile.system-don-t-specify-optimization-level-bui.patch",
    "content": "From 6d1c1350977d74fb2239f765bd92a5763cd3bb73 Mon Sep 17 00:00:00 2001\nFrom: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\nDate: Fri, 5 Mar 2021 14:09:23 +0100\nSubject: [PATCH] Makefile.system: don't specify optimization level\n [buildroot-specific]\n\nBuildroot will pass an optimization level, but it is ignored because the\nopenblas makefiles _append_ to the flags passed on the command-line.\n\nThe CFLAGS/FFLAGS would e.g. contain '-Os -O2' in which -O2 survives.\n\nRemove the optimization level specified in openblas itself.\n\nSigned-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>\n\n---\n Makefile.system | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.system b/Makefile.system\nindex 1e30d05a..04b0be16 100644\n--- a/Makefile.system\n+++ b/Makefile.system\n@@ -1216,11 +1216,11 @@ FCOMMON_OPT += -g\n endif\n \n ifndef COMMON_OPT\n-COMMON_OPT = -O2\n+COMMON_OPT =\n endif\n \n ifndef FCOMMON_OPT\n-FCOMMON_OPT = -O2 -frecursive\n+FCOMMON_OPT = -frecursive\n endif\n \n override CFLAGS     += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR)\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/openblas/Config.in",
    "content": "config BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET\n\tstring\n\tdefault \"P2\"           if BR2_x86_pentium2\n\tdefault \"KATMAI\"       if BR2_x86_pentium3\n\tdefault \"NORTHWOOD\"    if BR2_x86_pentium4\n\tdefault \"PRESCOTT\"     if BR2_x86_prescott || BR2_x86_nocona\n\tdefault \"BANIAS\"       if BR2_x86_pentium_m\n\tdefault \"CORE2\"        if BR2_x86_core2\n\tdefault \"NEHALEM\"      if BR2_x86_corei7 || BR2_x86_silvermont || BR2_x86_westmere\n\tdefault \"SANDYBRIDGE\"  if BR2_x86_corei7_avx\n\tdefault \"HASWELL\"      if BR2_x86_core_avx2\n\tdefault \"ATOM\"         if BR2_x86_atom\n\tdefault \"ATHLON\"       if BR2_x86_athlon || BR2_x86_athlon_4\n\tdefault \"OPTERON\"      if BR2_x86_opteron\n\tdefault \"OPTERON_SSE3\" if BR2_x86_opteron_sse3\n\tdefault \"BARCELONA\"    if BR2_x86_barcelona\n\tdefault \"BOBCAT\"       if BR2_x86_jaguar\n\tdefault \"STEAMROLLER\"  if BR2_x86_steamroller\n\tdefault \"VIAC3\"        if BR2_x86_c3 || BR2_x86_c32\n\tdefault \"POWER4\"       if BR2_powerpc_power4\n\tdefault \"POWER5\"       if BR2_powerpc_power5\n\tdefault \"POWER6\"       if BR2_powerpc_power6\n\tdefault \"POWER7\"       if BR2_powerpc_power7\n\tdefault \"POWER8\"       if BR2_powerpc_power8\n\tdefault \"PPCG4\"        if BR2_powerpc_7400 || BR2_powerpc_7450\n\tdefault \"PPC970\"       if BR2_powerpc_970\n\tdefault \"PPC440\"       if BR2_powerpc_440\n\tdefault \"PPC440FP2\"    if BR2_powerpc_440fp\n\t# P5600 is built with MSA support which is only available in Codescape toolchains\n\tdefault \"P5600\"        if BR2_mips_p5600 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS\n\tdefault \"SICORTEX\"     if BR2_MIPS_CPU_MIPS64\n\t# I6400 is built with MSA support which is only available in Codescape toolchains\n\tdefault \"I6400\"        if BR2_mips_i6400 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS\n\t# OpenBLAS assumes SPARC=Sparc v9\n\tdefault \"SPARC\"        if BR2_sparc_v9\n\t# Cortex-A15 always have a VFPv4\n\tdefault \"CORTEXA15\"    if (BR2_cortex_a15 && BR2_ARM_EABIHF)\n\t# Cortex-A9 have an optional VFPv3, so we need to make sure it\n\t# is available\n\tdefault \"CORTEXA9\"     if (BR2_cortex_a9 && BR2_ARM_EABIHF && \\\n\t\t\t\t   BR2_ARM_CPU_HAS_VFPV3)\n\tdefault \"ARMV5\"        if BR2_ARM_CPU_ARMV5\n\t# On ARMv6, OpenBLAS assumes that a VFP is available, and\n\t# EABIhf is used\n\tdefault \"ARMV6\"        if (BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF && \\\n\t\t\t\t   BR2_ARM_CPU_HAS_VFPV2)\n\t# On ARMv7, OpenBLAS assumes that a full VFPv3+ is available\n\t# (and not the more limited D16 variant), and that EABIhf is\n\t# used.\n\tdefault \"ARMV7\"        if (BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF && \\\n\t\t\t\t   BR2_ARM_CPU_HAS_VFPV3)\n\tdefault \"ARMV8\"        if BR2_aarch64 || BR2_aarch64_be\n\thelp\n\t  OpenBLAS target CPU. See TargetList.txt in the source tree for\n\t  the possible target strings. A possible value is set\n\t  automatically based on your Target Architecture Variant.\n\nconfig BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET != \"\"\n\nconfig BR2_PACKAGE_OPENBLAS\n\tbool \"openblas\"\n\tdepends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS\n\thelp\n\t  An optimized BLAS library based on GotoBLAS2 1.13 BSD version.\n\n\t  https://www.openblas.net/\n\nif BR2_PACKAGE_OPENBLAS\n\nconfig BR2_PACKAGE_OPENBLAS_TARGET\n\tstring \"OpenBLAS target CPU\"\n\tdefault BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET\n\nconfig BR2_PACKAGE_OPENBLAS_USE_THREAD\n\tbool \"use multithreading\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Tell OpenBLAS to use multithreading, by passing USE_THREAD=1.\n\nconfig BR2_PACKAGE_OPENBLAS_USE_LOCKING\n\tbool \"use locking\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_PACKAGE_OPENBLAS_USE_THREAD\n\thelp\n\t  Tell OpenBLAS to use locking, by passing USE_LOCKING=1.\n\t  Locking is implicitly enabled when USE_THREAD=1.\n\t  However, if USE_THREAD=0 (i.e. OpenBLAS itself will run in\n\t  single-threaded mode) but an application makes OpenBLAS\n\t  function calls from multiple threads, then locking is\n\t  mandatory for correct operation.\n\nendif\n"
  },
  {
    "path": "package/openblas/openblas.hash",
    "content": "# Locally calculated\nsha256  17d4677264dfbc4433e97076220adc79b050e4f8a083ea3f853a53af253bc380  openblas-0.3.9.tar.gz\nsha256  190b5a9c8d9723fe958ad33916bd7346d96fab3c5ea90832bb02d854f620fcff  LICENSE\n"
  },
  {
    "path": "package/openblas/openblas.mk",
    "content": "################################################################################\n#\n# openblas\n#\n################################################################################\n\nOPENBLAS_VERSION = 0.3.9\nOPENBLAS_SITE = $(call github,xianyi,OpenBLAS,v$(OPENBLAS_VERSION))\nOPENBLAS_LICENSE = BSD-3-Clause\nOPENBLAS_LICENSE_FILES = LICENSE\nOPENBLAS_INSTALL_STAGING = YES\n\n# Initialise OpenBLAS make options to $(TARGET_CONFIGURE_OPTS)\nOPENBLAS_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS)\n\n# Enable cross-compiling\nOPENBLAS_MAKE_OPTS += CROSS=1\n\n# Set OpenBLAS target\nOPENBLAS_MAKE_OPTS += TARGET=$(BR2_PACKAGE_OPENBLAS_TARGET)\n\n# When Fortran is not available, only build the C version of BLAS\nifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),)\nOPENBLAS_MAKE_OPTS += ONLY_CBLAS=1\nendif\n\n# Enable/Disable multi-threading (not for static-only since it uses dlfcn.h)\nifeq ($(BR2_PACKAGE_OPENBLAS_USE_THREAD),y)\nOPENBLAS_MAKE_OPTS += USE_THREAD=1\nelse\nOPENBLAS_MAKE_OPTS += USE_THREAD=0\nendif\n\nifeq ($(BR2_PACKAGE_OPENBLAS_USE_LOCKING),y)\nOPENBLAS_MAKE_OPTS += USE_LOCKING=1\nelse\n# not passing USE_LOCKING=0 as this could be confusing: its effect is implicit\n# in case of USE_THREAD=1.\nendif\n\n# We don't know if OpenMP is available or not, so disable\nOPENBLAS_MAKE_OPTS += USE_OPENMP=0\n\n# Static-only/Shared-only toggle\n# Note: static library is always generated so that applications can link\n# statically for size reduction, even if BR2_STATIC_LIBS is not set.\nifeq ($(BR2_STATIC_LIBS),y)\nOPENBLAS_MAKE_OPTS += NO_SHARED=1\nendif\n\n# binutils version <= 2.23.2 has a bug\n# (https://sourceware.org/bugzilla/show_bug.cgi?id=14887) where\n# whitespaces in ARM register specifications such as [ r1, #12 ] or [\n# r2 ] cause the assembler to reject the code. Since there are\n# numerous instances of such cases in the code, we use sed rather than\n# a patch. We simply replace [ foobar ] by [foobar] to work around the\n# problem.\ndefine OPENBLAS_FIXUP_ARM_ASSEMBLY\n\t$(SED) 's%\\[\\s*%\\[%;s%\\s*\\]%\\]%' $(@D)/kernel/arm/*.S\nendef\n\nOPENBLAS_POST_PATCH_HOOKS += OPENBLAS_FIXUP_ARM_ASSEMBLY\n\ndefine OPENBLAS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \\\n\t\t-C $(@D)\nendef\n\ndefine OPENBLAS_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \\\n\t\t-C $(@D) install PREFIX=$(STAGING_DIR)/usr\nendef\n\ndefine OPENBLAS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \\\n\t\t-C $(@D) install PREFIX=$(TARGET_DIR)/usr\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/openbox/Config.in",
    "content": "config BR2_PACKAGE_OPENBOX\n\tbool \"openbox\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # pango -> harfbuzz\n\tdepends on BR2_INSTALL_LIBSTDCPP # pango -> freetype\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_PANGO\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\t# libxft and libxrender are needed to get xft support in pango\n\tselect BR2_PACKAGE_XLIB_LIBXFT\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\thelp\n\t  Openbox is a highly configurable, next generation window\n\t  manager with extensive standards support.\n\n\t  http://openbox.org\n\ncomment \"openbox needs a toolchain w/ C++, threads, wchar, gcc >= 4.8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \\\n\t\t!BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_XORG7\n"
  },
  {
    "path": "package/openbox/openbox.hash",
    "content": "# Locally computed:\nsha256  abe75855cc5616554ffd47134ad15291fe37ebbebf1a80b69cbde9d670f0e26d  openbox-3.6.1.tar.xz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/openbox/openbox.mk",
    "content": "################################################################################\n#\n# openbox\n#\n################################################################################\n\nOPENBOX_VERSION = 3.6.1\nOPENBOX_SOURCE = openbox-$(OPENBOX_VERSION).tar.xz\nOPENBOX_SITE = http://openbox.org/dist/openbox\nOPENBOX_LICENSE = GPL-2.0+\nOPENBOX_LICENSE_FILES = COPYING\n\nOPENBOX_CONF_OPTS = \\\n\t--x-includes=$(STAGING_DIR)/usr/include/X11 \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib\n\nOPENBOX_DEPENDENCIES = xlib_libX11 libxml2 libglib2 pango host-pkgconf\n\nifeq ($(BR2_PACKAGE_IMLIB2_X),y)\nOPENBOX_CONF_OPTS += --enable-imlib2\nOPENBOX_DEPENDENCIES += imlib2\nelse\nOPENBOX_CONF_OPTS += --disable-imlib2\nendif\n\nifeq ($(BR2_PACKAGE_STARTUP_NOTIFICATION),y)\nOPENBOX_CONF_OPTS += --enable-startup-notification\nOPENBOX_DEPENDENCIES += startup-notification\nelse\nOPENBOX_CONF_OPTS += --disable-startup-notification\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBSM),y)\nOPENBOX_CONF_OPTS += --enable-session-management\nOPENBOX_DEPENDENCIES += xlib_libSM\nelse\nOPENBOX_CONF_OPTS += --disable-session-management\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nOPENBOX_CONF_OPTS += --enable-xinerama\nOPENBOX_DEPENDENCIES += xlib_libXinerama\nelse\nOPENBOX_CONF_OPTS += --disable-xinerama\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)\nOPENBOX_CONF_OPTS += --enable-xrandr\nOPENBOX_DEPENDENCIES += xlib_libXrandr\nelse\nOPENBOX_CONF_OPTS += --disable-xrandr\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y)\nOPENBOX_DEPENDENCIES += xlib_libXcursor\nOPENBOX_CONF_OPTS += --enable-xcursor\nelse\nOPENBOX_CONF_OPTS += --disable-xcursor\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/opencore-amr/Config.in",
    "content": "config BR2_PACKAGE_OPENCORE_AMR\n\tbool \"opencore-amr\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Library of OpenCORE Framework implementation of Adaptive\n\t  Multi Rate Narrowband and Wideband (AMR-NB and AMR-WB)\n\t  speech codec.\n\n\t  http://opencore-amr.sourceforge.net/\n\ncomment \"opencore-amr needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/opencore-amr/opencore-amr.hash",
    "content": "# From https://sourceforge.net/projects/opencore-amr/files/opencore-amr/\nmd5 e0798587b91411cc092aa73091a97dfc  opencore-amr-0.1.5.tar.gz\nsha1 bef4d1e3a8a155b47569b6691a223843b33e279e  opencore-amr-0.1.5.tar.gz\n# Locally computed:\nsha256 2c006cb9d5f651bfb5e60156dbff6af3c9d35c7bbcc9015308c0aff1e14cd341  opencore-amr-0.1.5.tar.gz\nsha256 8b3f1762349248d444ab9acbafe73941254e36e1064954da56bb9ddbd5873ddb  LICENSE\n"
  },
  {
    "path": "package/opencore-amr/opencore-amr.mk",
    "content": "################################################################################\n#\n# opencore-amr\n#\n################################################################################\n\nOPENCORE_AMR_VERSION = 0.1.5\nOPENCORE_AMR_SITE = http://downloads.sourceforge.net/project/opencore-amr/opencore-amr\nOPENCORE_AMR_INSTALL_STAGING = YES\nOPENCORE_AMR_LICENSE = Apache-2.0\nOPENCORE_AMR_LICENSE_FILES = LICENSE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/opencv3/0001-Use-the-one-argument-version-of-SetTotalBytesLimit.patch",
    "content": "From 9cfa84313c5833d7295fcf57be93d5d2aaadfd88 Mon Sep 17 00:00:00 2001\nFrom: Vincent Rabaud <vrabaud@google.com>\nDate: Sat, 10 Jul 2021 00:21:52 +0200\nSubject: [PATCH] Use the one argument version of SetTotalBytesLimit.\n\nThe two argument versions has been deprecated, cf\nhttps://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.io.coded_stream\n\n[Retrieved from:\nhttps://github.com/opencv/opencv/commit/9cfa84313c5833d7295fcf57be93d5d2aaadfd88]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n modules/dnn/src/caffe/caffe_io.cpp | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/modules/dnn/src/caffe/caffe_io.cpp b/modules/dnn/src/caffe/caffe_io.cpp\nindex 2fc4d84f4604..ebecf95eea3a 100644\n--- a/modules/dnn/src/caffe/caffe_io.cpp\n+++ b/modules/dnn/src/caffe/caffe_io.cpp\n@@ -92,6 +92,7 @@\n #ifdef HAVE_PROTOBUF\n #include <google/protobuf/io/coded_stream.h>\n #include <google/protobuf/io/zero_copy_stream_impl.h>\n+#include <google/protobuf/stubs/common.h>\n #include <google/protobuf/text_format.h>\n \n #include <opencv2/core.hpp>\n@@ -1111,7 +1112,11 @@ static const int kProtoReadBytesLimit = INT_MAX;  // Max size of 2 GB minus 1 by\n \n bool ReadProtoFromBinary(ZeroCopyInputStream* input, Message *proto) {\n     CodedInputStream coded_input(input);\n+#if GOOGLE_PROTOBUF_VERSION >= 3006000\n+    coded_input.SetTotalBytesLimit(kProtoReadBytesLimit);\n+#else\n     coded_input.SetTotalBytesLimit(kProtoReadBytesLimit, 536870912);\n+#endif\n \n     return proto->ParseFromCodedStream(&coded_input);\n }\n"
  },
  {
    "path": "package/opencv3/Config.in",
    "content": "menuconfig BR2_PACKAGE_OPENCV3\n\tbool \"opencv3\"\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on !BR2_STATIC_LIBS # include dlfcn.h\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  OpenCV (Open Source Computer Vision) is a library of\n\t  programming functions for real time computer vision.\n\n\t  Note that the opencv_core module and the opencv_hal library\n\t  are always built and installed, not matter which other\n\t  modules are enabled below.\n\n\t  http://opencv.org/\n\nif BR2_PACKAGE_OPENCV3\n\ncomment \"OpenCV modules\"\n\nconfig BR2_PACKAGE_OPENCV3_LIB_CALIB3D\n\tbool \"calib3d\"\n\tselect BR2_PACKAGE_OPENCV3_LIB_FEATURES2D\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\thelp\n\t  Include opencv_calib3d (camera calibration and 3d\n\t  reconstruction) module into the OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_FEATURES2D\n\tbool \"features2d\"\n\tselect BR2_PACKAGE_OPENCV3_LIB_FLANN\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV3_LIB_ML\n\thelp\n\t  Include opencv_features2d (2d features framework) module\n\t  into the OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_FLANN\n\tbool \"flann\"\n\t# opencv_core dependency is already enabled\n\thelp\n\t  Include opencv_flann (clustering and search in\n\t  multi-dimensional spaces) module into the OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_HIGHGUI\n\tbool \"highgui\"\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGCODECS\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV3_LIB_VIDEOIO\n\thelp\n\t  Include opencv_highgui (high-level gui and media i/o) module\n\t  into the OpenCV build.\n\nif BR2_PACKAGE_OPENCV3_LIB_HIGHGUI\n\nchoice\n\tprompt \"gui toolkit\"\n\thelp\n\t  GUI toolkit to be used by the opencv_highgui module.\n\nconfig BR2_PACKAGE_OPENCV3_GUI_NONE\n\tbool \"none\"\n\nconfig BR2_PACKAGE_OPENCV3_WITH_GTK\n\tbool \"gtk2\"\n\tdepends on BR2_PACKAGE_LIBGTK2\n\ncomment \"gtk2 support needs libgtk2\"\n\tdepends on BR2_USE_MMU # libgtk2 -> glib2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_PACKAGE_LIBGTK2\n\nconfig BR2_PACKAGE_OPENCV3_WITH_GTK3\n\tbool \"gtk3\"\n\tdepends on BR2_PACKAGE_LIBGTK3\n\ncomment \"gtk3 support needs libgtk3\"\n\tdepends on BR2_USE_MMU # libgtk3 -> glib2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_PACKAGE_LIBGTK3\n\nconfig BR2_PACKAGE_OPENCV3_WITH_QT5\n\tbool \"qt5\"\n\tdepends on BR2_PACKAGE_QT5\n\tselect BR2_PACKAGE_QT5BASE_CONCURRENT\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\thelp\n\t  Use Qt5 with base, concurrent, test, gui and widgets\n\t  components, as GUI toolkit.\n\ncomment \"qt5 support needs qt5\"\n\tdepends on !BR2_PACKAGE_QT5\n\nendchoice\n\nconfig BR2_PACKAGE_OPENCV3_WITH_OPENGL\n\tbool \"opengl support\"\n\t# OpenGL support done using Qt5OpenGL, so depends on WITH_QT5\n\tdepends on BR2_PACKAGE_OPENCV3_WITH_QT5\n\t# OpenGL support requires Qt5OpenGL with GL support, not GLES\n\tdepends on BR2_PACKAGE_QT5_GL_AVAILABLE\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_QT5BASE_OPENGL\n\thelp\n\t  Enable OpenGL for UI.\n\ncomment \"opengl support needs an OpenGL provider\"\n\tdepends on BR2_PACKAGE_OPENCV3_WITH_QT5\n\tdepends on !BR2_PACKAGE_QT5_GL_AVAILABLE || \\\n\t\t!BR2_PACKAGE_HAS_LIBGL\n\nendif # BR2_PACKAGE_OPENCV3_LIB_HIGHGUI\n\nconfig BR2_PACKAGE_OPENCV3_LIB_IMGCODECS\n\tbool \"imgcodecs\"\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\thelp\n\t  Include opencv_imgcodecs (image codecs) module into the\n\t  OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\tbool \"imgproc\"\n\t# opencv_core dependency is already enabled\n\thelp\n\t  Include opencv_imgproc (image processing) module into the\n\t  OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_ML\n\tbool \"ml\"\n\t# opencv_core dependency is already enabled\n\thelp\n\t  Include opencv_ml (machine learning) module into the OpenCV\n\t  build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_OBJDETECT\n\tbool \"objdetect\"\n\t# opencv_core dependency is already enabled\n\tselect BR2_PACKAGE_OPENCV3_LIB_CALIB3D\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV3_LIB_ML\n\thelp\n\t  Include opencv_objdetect (object detection) module into the\n\t  OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_PHOTO\n\tbool \"photo\"\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\thelp\n\t  Include opencv_photo (computational photography) module into\n\t  the OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_PYTHON\n\tbool \"python\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy\n\tselect BR2_PACKAGE_PYTHON_NUMPY\n\thelp\n\t  Include opencv_python module into the OpenCV build.  No\n\t  python example is installed.\n\ncomment \"python support needs glibc or musl\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\tdepends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)\n\nconfig BR2_PACKAGE_OPENCV3_LIB_SHAPE\n\tbool \"shape\"\n\t# opencv_core dependency is already enabled\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV3_LIB_VIDEO\n\thelp\n\t  Include opencv_shape (shape descriptors and matchers) module\n\t  into the OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_STITCHING\n\tbool \"stitching\"\n\tselect BR2_PACKAGE_OPENCV3_LIB_CALIB3D\n\tselect BR2_PACKAGE_OPENCV3_LIB_FEATURES2D\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV3_LIB_OBJDETECT\n\thelp\n\t  Include opencv_stitching (images stitching) module into the\n\t  OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_SUPERRES\n\tbool \"superres\"\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV3_LIB_VIDEO\n\thelp\n\t  Include opencv_superres (super resolution) module into the\n\t  OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_TS\n\tbool \"ts\"\n\t# opencv_core dependency is already enabled\n\tselect BR2_PACKAGE_OPENCV3_LIB_HIGHGUI\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGCODECS\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV3_LIB_VIDEOIO\n\thelp\n\t  Include opencv_ts (test) module into the OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_VIDEOIO\n\tbool \"videoio\"\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGCODECS\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\thelp\n\t  Include opencv_videoio (media i/o) module into the OpenCV\n\t  build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_VIDEO\n\tbool \"video\"\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\thelp\n\t  Include opencv_video (video analysis) module into the OpenCV\n\t  build.\n\nconfig BR2_PACKAGE_OPENCV3_LIB_VIDEOSTAB\n\tbool \"videostab\"\n\tselect BR2_PACKAGE_OPENCV3_LIB_CALIB3D\n\tselect BR2_PACKAGE_OPENCV3_LIB_FEATURES2D\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV3_LIB_PHOTO\n\tselect BR2_PACKAGE_OPENCV3_LIB_VIDEO\n\thelp\n\t  Include opencv_videostab (video stabilization) module into\n\t  the OpenCV build.\n\ncomment \"Test sets\"\nconfig BR2_PACKAGE_OPENCV3_BUILD_TESTS\n\tbool \"build tests\"\n\nconfig BR2_PACKAGE_OPENCV3_BUILD_PERF_TESTS\n\tbool \"build performance tests\"\n\ncomment \"3rd party support\"\n\nconfig BR2_PACKAGE_OPENCV3_WITH_FFMPEG\n\tbool \"ffmpeg support\"\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_FFMPEG_AVRESAMPLE\n\tselect BR2_PACKAGE_FFMPEG_SWSCALE\n\thelp\n\t  Use ffmpeg from the target system.\n\nconfig BR2_PACKAGE_OPENCV3_WITH_GSTREAMER1\n\tbool \"gstreamer-1.x\"\n\tdepends on BR2_USE_MMU # gstreamer1 -> libglib2\n\tdepends on BR2_USE_WCHAR # gstreamer1 -> libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # gstreamer1 -> libglib2\n\tselect BR2_PACKAGE_GSTREAMER1\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP\n\thelp\n\t  Enable gstreamer support.\n\ncomment \"gstreamer support needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_OPENCV3_WITH_JASPER\n\tbool \"jpeg2000 support\"\n\tselect BR2_PACKAGE_JASPER\n\thelp\n\t  Enable jpeg2000 support.\n\n\t  Note: this does not use the libjasper bundled with opencv,\n\t  but uses the libjasper package installed system-wide by\n\t  Buildroot.\n\nconfig BR2_PACKAGE_OPENCV3_WITH_JPEG\n\tbool \"jpeg support\"\n\tselect BR2_PACKAGE_JPEG\n\thelp\n\t  Use shared libjpeg from the target system.\n\nconfig BR2_PACKAGE_OPENCV3_WITH_PNG\n\tbool \"png support\"\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  Use shared libpng from the target system.\n\nconfig BR2_PACKAGE_OPENCV3_WITH_PROTOBUF\n\tbool \"protobuf support\"\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # protobuf\n\tselect BR2_PACKAGE_PROTOBUF\n\thelp\n\t  Use shared protobuf from the target system.\n\ncomment \"protobuf support needs a toolchain w/ gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\nconfig BR2_PACKAGE_OPENCV3_WITH_TIFF\n\tbool \"tiff support\"\n\tselect BR2_PACKAGE_TIFF\n\thelp\n\t  Use shared libtiff from the target system.\n\nconfig BR2_PACKAGE_OPENCV3_WITH_V4L\n\tbool \"v4l support\"\n\thelp\n\t  Enable Video 4 Linux support.\n\n\t  If the package libv4l is enabled, its support is\n\t  automatically enabled.\n\nconfig BR2_PACKAGE_OPENCV3_WITH_WEBP\n\tbool \"webp support\"\n\tselect BR2_PACKAGE_WEBP\n\thelp\n\t  Enable WebP support.\n\n\t  Use shared libwebp from the target system.\n\ncomment \"Install options\"\n\nconfig BR2_PACKAGE_OPENCV3_INSTALL_DATA\n\tbool \"install extra data\"\n\thelp\n\t  Install various data that is used by cv libraries and/or\n\t  demo applications, specifically for haarcascades and\n\t  lbpcascades features.\n\n\t  For further information: see OpenCV documentation.\n\nendif # BR2_PACKAGE_OPENCV3\n\ncomment \"opencv3 needs a toolchain w/ C++, NPTL, wchar, dynamic library\"\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/opencv3/opencv3.hash",
    "content": "# Locally calculated\nsha256  b1e8470b18e9e793bf70b4ae051bbc9bf81fa45f8cbfee1e6c88858c90be8ff7  opencv3-3.4.15.tar.gz\nsha256  9076d3d934839a2f8e7bfe549abda6faea4751f1edd6e9460ff703559890ad5f  LICENSE\n"
  },
  {
    "path": "package/opencv3/opencv3.mk",
    "content": "################################################################################\n#\n# opencv3\n#\n################################################################################\n\nOPENCV3_VERSION = 3.4.15\nOPENCV3_SITE = $(call github,opencv,opencv,$(OPENCV3_VERSION))\nOPENCV3_INSTALL_STAGING = YES\nOPENCV3_LICENSE = BSD-3-Clause\nOPENCV3_LICENSE_FILES = LICENSE\nOPENCV3_CPE_ID_VENDOR = opencv\nOPENCV3_CPE_ID_PRODUCT = opencv\nOPENCV3_SUPPORTS_IN_SOURCE_BUILD = NO\n\nOPENCV3_CXXFLAGS = $(TARGET_CXXFLAGS)\n\n# Uses __atomic_fetch_add_4\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nOPENCV3_CXXFLAGS += -latomic\nendif\n\n# Fix c++11 build with missing std::exception_ptr\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_64735),y)\nOPENCV3_CXXFLAGS += -DCV__EXCEPTION_PTR=0\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)\nOPENCV3_CXXFLAGS += -O0\nendif\n\n# OpenCV component options\nOPENCV3_CONF_OPTS += \\\n\t-DCMAKE_CXX_FLAGS=\"$(OPENCV3_CXXFLAGS)\" \\\n\t-DBUILD_DOCS=OFF \\\n\t-DBUILD_PERF_TESTS=$(if $(BR2_PACKAGE_OPENCV3_BUILD_PERF_TESTS),ON,OFF) \\\n\t-DBUILD_TESTS=$(if $(BR2_PACKAGE_OPENCV3_BUILD_TESTS),ON,OFF) \\\n\t-DBUILD_WITH_DEBUG_INFO=OFF \\\n\t-DDOWNLOAD_EXTERNAL_TEST_DATA=OFF \\\n\t-DOPENCV_ENABLE_PKG_CONFIG=ON\n\nifeq ($(BR2_PACKAGE_OPENCV3_BUILD_TESTS)$(BR2_PACKAGE_OPENCV3_BUILD_PERF_TESTS),)\nOPENCV3_CONF_OPTS += -DINSTALL_TEST=OFF\nelse\nOPENCV3_CONF_OPTS += -DINSTALL_TEST=ON\nendif\n\n# OpenCV build options\nOPENCV3_CONF_OPTS += \\\n\t-DBUILD_WITH_STATIC_CRT=OFF \\\n\t-DENABLE_CCACHE=OFF \\\n\t-DENABLE_COVERAGE=OFF \\\n\t-DENABLE_FAST_MATH=ON \\\n\t-DENABLE_IMPL_COLLECTION=OFF \\\n\t-DENABLE_NOISY_WARNINGS=OFF \\\n\t-DENABLE_OMIT_FRAME_POINTER=ON \\\n\t-DENABLE_PRECOMPILED_HEADERS=OFF \\\n\t-DENABLE_PROFILING=OFF \\\n\t-DOPENCV_WARNINGS_ARE_ERRORS=OFF\n\n# OpenCV link options\nOPENCV3_CONF_OPTS += \\\n\t-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \\\n\t-DCMAKE_SKIP_RPATH=OFF \\\n\t-DCMAKE_USE_RELATIVE_PATHS=OFF\n\n# OpenCV packaging options:\nOPENCV3_CONF_OPTS += \\\n\t-DBUILD_PACKAGE=OFF \\\n\t-DENABLE_SOLUTION_FOLDERS=OFF \\\n\t-DINSTALL_CREATE_DISTRIB=OFF\n\n# OpenCV module selection\n# * Modules on:\n#   - core: if not set, opencv does not build anything\n#   - hal: core's dependency\n# * Modules off:\n#   - android*: android stuff\n#   - apps: programs for training classifiers\n#   - java: java bindings\n#   - viz: missing VTK dependency\n#   - world: all-in-one module\n#\n# * Contrib modules from [1] are disabled:\n#   - opencv_contrib package is not available in Buildroot;\n#   - OPENCV3_EXTRA_MODULES_PATH is not set.\n#\n# [1] https://github.com/Itseez/opencv_contrib\nOPENCV3_CONF_OPTS += \\\n\t-DBUILD_opencv_androidcamera=OFF \\\n\t-DBUILD_opencv_apps=OFF \\\n\t-DBUILD_opencv_calib3d=$(if $(BR2_PACKAGE_OPENCV3_LIB_CALIB3D),ON,OFF) \\\n\t-DBUILD_opencv_core=ON \\\n\t-DBUILD_opencv_features2d=$(if $(BR2_PACKAGE_OPENCV3_LIB_FEATURES2D),ON,OFF) \\\n\t-DBUILD_opencv_flann=$(if $(BR2_PACKAGE_OPENCV3_LIB_FLANN),ON,OFF) \\\n\t-DBUILD_opencv_highgui=$(if $(BR2_PACKAGE_OPENCV3_LIB_HIGHGUI),ON,OFF) \\\n\t-DBUILD_opencv_imgcodecs=$(if $(BR2_PACKAGE_OPENCV3_LIB_IMGCODECS),ON,OFF) \\\n\t-DBUILD_opencv_imgproc=$(if $(BR2_PACKAGE_OPENCV3_LIB_IMGPROC),ON,OFF) \\\n\t-DBUILD_opencv_java=OFF \\\n\t-DBUILD_opencv_ml=$(if $(BR2_PACKAGE_OPENCV3_LIB_ML),ON,OFF) \\\n\t-DBUILD_opencv_objdetect=$(if $(BR2_PACKAGE_OPENCV3_LIB_OBJDETECT),ON,OFF) \\\n\t-DBUILD_opencv_photo=$(if $(BR2_PACKAGE_OPENCV3_LIB_PHOTO),ON,OFF) \\\n\t-DBUILD_opencv_shape=$(if $(BR2_PACKAGE_OPENCV3_LIB_SHAPE),ON,OFF) \\\n\t-DBUILD_opencv_stitching=$(if $(BR2_PACKAGE_OPENCV3_LIB_STITCHING),ON,OFF) \\\n\t-DBUILD_opencv_superres=$(if $(BR2_PACKAGE_OPENCV3_LIB_SUPERRES),ON,OFF) \\\n\t-DBUILD_opencv_ts=$(if $(BR2_PACKAGE_OPENCV3_LIB_TS),ON,OFF) \\\n\t-DBUILD_opencv_video=$(if $(BR2_PACKAGE_OPENCV3_LIB_VIDEO),ON,OFF) \\\n\t-DBUILD_opencv_videoio=$(if $(BR2_PACKAGE_OPENCV3_LIB_VIDEOIO),ON,OFF) \\\n\t-DBUILD_opencv_videostab=$(if $(BR2_PACKAGE_OPENCV3_LIB_VIDEOSTAB),ON,OFF) \\\n\t-DBUILD_opencv_viz=OFF \\\n\t-DBUILD_opencv_world=OFF\n\n# Hardware support options.\n#\n# * PowerPC and VFPv3 support are turned off since their only effects\n#   are altering CFLAGS, adding '-mcpu=G3 -mtune=G5' or '-mfpu=vfpv3'\n#   to them, which is already handled by Buildroot.\n# * NEON logic is needed as it is not only used to add CFLAGS, but\n#   also to enable additional NEON code.\nOPENCV3_CONF_OPTS += \\\n\t-DENABLE_POWERPC=OFF \\\n\t-DENABLE_NEON=$(if $(BR2_ARM_CPU_HAS_NEON),ON,OFF) \\\n\t-DENABLE_VFPV3=OFF\n\n# Cuda stuff\nOPENCV3_CONF_OPTS += \\\n\t-DBUILD_CUDA_STUBS=OFF \\\n\t-DBUILD_opencv_cudaarithm=OFF \\\n\t-DBUILD_opencv_cudabgsegm=OFF \\\n\t-DBUILD_opencv_cudacodec=OFF \\\n\t-DBUILD_opencv_cudafeatures2d=OFF \\\n\t-DBUILD_opencv_cudafilters=OFF \\\n\t-DBUILD_opencv_cudaimgproc=OFF \\\n\t-DBUILD_opencv_cudalegacy=OFF \\\n\t-DBUILD_opencv_cudaobjdetect=OFF \\\n\t-DBUILD_opencv_cudaoptflow=OFF \\\n\t-DBUILD_opencv_cudastereo=OFF \\\n\t-DBUILD_opencv_cudawarping=OFF \\\n\t-DBUILD_opencv_cudev=OFF \\\n\t-DWITH_CUBLAS=OFF \\\n\t-DWITH_CUDA=OFF \\\n\t-DWITH_CUFFT=OFF\n\n# NVidia stuff\nOPENCV3_CONF_OPTS += -DWITH_NVCUVID=OFF\n\n# AMD stuff\nOPENCV3_CONF_OPTS += \\\n\t-DWITH_OPENCLAMDBLAS=OFF \\\n\t-DWITH_OPENCLAMDFFT=OFF\n\n# Intel stuff\nOPENCV3_CONF_OPTS += \\\n\t-DBUILD_WITH_DYNAMIC_IPP=OFF \\\n\t-DWITH_INTELPERC=OFF \\\n\t-DWITH_IPP=OFF \\\n\t-DWITH_IPP_A=OFF \\\n\t-DWITH_TBB=OFF\n\n# Smartek stuff\nOPENCV3_CONF_OPTS += -DWITH_GIGEAPI=OFF\n\n# Prosilica stuff\nOPENCV3_CONF_OPTS += -DWITH_PVAPI=OFF\n\n# Ximea stuff\nOPENCV3_CONF_OPTS += -DWITH_XIMEA=OFF\n\n# Non-Linux support (Android options) must remain OFF:\nOPENCV3_CONF_OPTS += \\\n\t-DANDROID=OFF \\\n\t-DBUILD_ANDROID_CAMERA_WRAPPER=OFF \\\n\t-DBUILD_ANDROID_EXAMPLES=OFF \\\n\t-DBUILD_ANDROID_SERVICE=OFF \\\n\t-DBUILD_FAT_JAVA_LIB=OFF \\\n\t-DINSTALL_ANDROID_EXAMPLES=OFF \\\n\t-DWITH_ANDROID_CAMERA=OFF\n\n# Non-Linux support (Mac OSX options) must remain OFF:\nOPENCV3_CONF_OPTS += \\\n\t-DWITH_AVFOUNDATION=OFF \\\n\t-DWITH_CARBON=OFF \\\n\t-DWITH_QUICKTIME=OFF\n\n# Non-Linux support (Windows options) must remain OFF:\nOPENCV3_CONF_OPTS += \\\n\t-DWITH_CSTRIPES=OFF \\\n\t-DWITH_DSHOW=OFF \\\n\t-DWITH_MSMF=OFF \\\n\t-DWITH_VFW=OFF \\\n\t-DWITH_VIDEOINPUT=OFF \\\n\t-DWITH_WIN32UI=OFF\n\n# Software/3rd-party support options:\n# - disable all examples\nOPENCV3_CONF_OPTS += \\\n\t-DBUILD_EXAMPLES=OFF \\\n\t-DBUILD_JASPER=OFF \\\n\t-DBUILD_JPEG=OFF \\\n\t-DBUILD_OPENEXR=OFF \\\n\t-DBUILD_PNG=OFF \\\n\t-DBUILD_PROTOBUF=OFF \\\n\t-DBUILD_TIFF=OFF \\\n\t-DBUILD_ZLIB=OFF \\\n\t-DINSTALL_C_EXAMPLES=OFF \\\n\t-DINSTALL_PYTHON_EXAMPLES=OFF \\\n\t-DINSTALL_TO_MANGLED_PATHS=OFF\n\n# Disabled features (mostly because they are not available in Buildroot), but\n# - eigen: OpenCV does not use it, not take any benefit from it.\nOPENCV3_CONF_OPTS += \\\n\t-DWITH_1394=OFF \\\n\t-DWITH_CLP=OFF \\\n\t-DWITH_EIGEN=OFF \\\n\t-DWITH_GDAL=OFF \\\n\t-DWITH_GPHOTO2=OFF \\\n\t-DWITH_GSTREAMER_0_10=OFF \\\n\t-DWITH_LAPACK=OFF \\\n\t-DWITH_MATLAB=OFF \\\n\t-DWITH_OPENCL=OFF \\\n\t-DWITH_OPENCL_SVM=OFF \\\n\t-DWITH_OPENEXR=OFF \\\n\t-DWITH_OPENNI2=OFF \\\n\t-DWITH_OPENNI=OFF \\\n\t-DWITH_UNICAP=OFF \\\n\t-DWITH_VA=OFF \\\n\t-DWITH_VA_INTEL=OFF \\\n\t-DWITH_VTK=OFF \\\n\t-DWITH_XINE=OFF\n\nOPENCV3_DEPENDENCIES += host-pkgconf zlib\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_FFMPEG),y)\nOPENCV3_CONF_OPTS += -DWITH_FFMPEG=ON\nOPENCV3_DEPENDENCIES += ffmpeg bzip2\nelse\nOPENCV3_CONF_OPTS += -DWITH_FFMPEG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_GSTREAMER1),y)\nOPENCV3_CONF_OPTS += -DWITH_GSTREAMER=ON\nOPENCV3_DEPENDENCIES += gstreamer1 gst1-plugins-base\nelse\nOPENCV3_CONF_OPTS += -DWITH_GSTREAMER=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_GTK)$(BR2_PACKAGE_OPENCV3_WITH_GTK3),)\nOPENCV3_CONF_OPTS += -DWITH_GTK=OFF -DWITH_GTK_2_X=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_GTK),y)\nOPENCV3_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=ON\nOPENCV3_DEPENDENCIES += libgtk2\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_GTK3),y)\nOPENCV3_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=OFF\nOPENCV3_DEPENDENCIES += libgtk3\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_JASPER),y)\nOPENCV3_CONF_OPTS += -DWITH_JASPER=ON\nOPENCV3_DEPENDENCIES += jasper\nelse\nOPENCV3_CONF_OPTS += -DWITH_JASPER=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_JPEG),y)\nOPENCV3_CONF_OPTS += -DWITH_JPEG=ON\nOPENCV3_DEPENDENCIES += jpeg\nelse\nOPENCV3_CONF_OPTS += -DWITH_JPEG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_OPENGL),y)\nOPENCV3_CONF_OPTS += -DWITH_OPENGL=ON\nOPENCV3_DEPENDENCIES += libgl\nelse\nOPENCV3_CONF_OPTS += -DWITH_OPENGL=OFF\nendif\n\nOPENCV3_CONF_OPTS += -DWITH_OPENMP=$(if $(BR2_TOOLCHAIN_HAS_OPENMP),ON,OFF)\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_PNG),y)\nOPENCV3_CONF_OPTS += -DWITH_PNG=ON\nOPENCV3_DEPENDENCIES += libpng\nelse\nOPENCV3_CONF_OPTS += -DWITH_PNG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_PROTOBUF),y)\n# protobuf needs c++11 (since 3.6.0)\nOPENCV3_CONF_OPTS += \\\n\t-DENABLE_CXX11=ON \\\n\t-DPROTOBUF_UPDATE_FILES=ON \\\n\t-DWITH_PROTOBUF=ON\nOPENCV3_DEPENDENCIES += protobuf\nelse\nOPENCV3_CONF_OPTS += -DWITH_PROTOBUF=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_QT5),y)\nOPENCV3_CONF_OPTS += -DWITH_QT=5\nOPENCV3_DEPENDENCIES += qt5base\nelse\nOPENCV3_CONF_OPTS += -DWITH_QT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_TIFF),y)\nOPENCV3_CONF_OPTS += -DWITH_TIFF=ON\nOPENCV3_DEPENDENCIES += tiff\nelse\nOPENCV3_CONF_OPTS += -DWITH_TIFF=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_V4L),y)\nOPENCV3_CONF_OPTS += \\\n\t-DWITH_LIBV4L=$(if $(BR2_PACKAGE_LIBV4L),ON,OFF) \\\n\t-DWITH_V4L=ON\nOPENCV3_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBV4L),libv4l)\nelse\nOPENCV3_CONF_OPTS += -DWITH_V4L=OFF -DWITH_LIBV4L=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_WITH_WEBP),y)\nOPENCV3_CONF_OPTS += -DWITH_WEBP=ON\nOPENCV3_DEPENDENCIES += webp\nelse\nOPENCV3_CONF_OPTS += -DWITH_WEBP=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_LIB_PYTHON),y)\nOPENCV3_CONF_OPTS += \\\n\t-DBUILD_opencv_python2=OFF \\\n\t-DBUILD_opencv_python3=ON \\\n\t-DPYTHON3_EXECUTABLE=$(HOST_DIR)/bin/python3 \\\n\t-DPYTHON3_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) \\\n\t-DPYTHON3_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON3_VERSION_MAJOR).so \\\n\t-DPYTHON3_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/core/include \\\n\t-DPYTHON3_PACKAGES_PATH=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \\\n\t-DPYTHON3_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION)\nOPENCV3_DEPENDENCIES += python3\nOPENCV3_KEEP_PY_FILES += usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/cv2/config*.py\nOPENCV3_CONF_ENV += $(PKG_PYTHON_DISTUTILS_ENV)\nOPENCV3_DEPENDENCIES += python-numpy\nelse\nOPENCV3_CONF_OPTS += \\\n\t-DBUILD_opencv_python2=OFF \\\n\t-DBUILD_opencv_python3=OFF\nendif\n\n# Installation hooks:\ndefine OPENCV3_CLEAN_INSTALL_LICENSE\n\t$(RM) -fr $(TARGET_DIR)/usr/share/licenses/opencv3\nendef\nOPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_LICENSE\n\ndefine OPENCV3_CLEAN_INSTALL_CMAKE\n\t$(RM) -f $(TARGET_DIR)/usr/share/OpenCV/OpenCV*.cmake\nendef\nOPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_CMAKE\n\ndefine OPENCV3_CLEAN_INSTALL_VALGRIND\n\t$(RM) -f $(TARGET_DIR)/usr/share/OpenCV/valgrind*\nendef\nOPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_VALGRIND\n\nifneq ($(BR2_PACKAGE_OPENCV3_INSTALL_DATA),y)\ndefine OPENCV3_CLEAN_INSTALL_DATA\n\t$(RM) -fr $(TARGET_DIR)/usr/share/OpenCV/haarcascades \\\n\t\t$(TARGET_DIR)/usr/share/OpenCV/lbpcascades\nendef\nOPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_DATA\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/opencv4/0001-modules-videoio-src-cap_ffmpeg_impl.hpp-fix-build-wi.patch",
    "content": "From 4c92a2869b9a8f736a12ba859b74e5cadce62387 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 12 Nov 2021 09:50:17 +0100\nSubject: [PATCH] modules/videoio/src/cap_ffmpeg_impl.hpp: fix build with gcc\n 4.8\n\nFix the following build failure with gcc 4.8:\n\nIn file included from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg_impl.hpp:100:0,\n                 from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg.cpp:50:\n/home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg_hw.hpp: In constructor 'HWAccelIterator::HWAccelIterator(cv::VideoAccelerationType, bool, AVDictionary*)':\n/home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg_hw.hpp:939:23: error: use of deleted function 'std::basic_istringstream<char>& std::basic_istringstream<char>::operator=(const std::basic_istringstream<char>&)'\n             s_stream_ = std::istringstream(accel_list);\n                       ^\nIn file included from /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/arm-none-linux-gnueabi/include/c++/4.8.3/complex:45:0,\n                 from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/core/include/opencv2/core/cvstd.inl.hpp:47,\n                 from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/core/include/opencv2/core.hpp:3306,\n                 from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/include/opencv2/videoio.hpp:46,\n                 from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/precomp.hpp:57,\n                 from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg.cpp:42:\n/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/arm-none-linux-gnueabi/include/c++/4.8.3/sstream:272:11: note: 'std::basic_istringstream<char>& std::basic_istringstream<char>::operator=(const std::basic_istringstream<char>&)' is implicitly deleted because the default definition would be ill-formed:\n     class basic_istringstream : public basic_istream<_CharT, _Traits>\n           ^\n/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/arm-none-linux-gnueabi/include/c++/4.8.3/sstream:272:11: error: use of deleted function 'std::basic_istream<char>& std::basic_istream<char>::operator=(const std::basic_istream<char>&)'\n\nFixes:\n - http://autobuild.buildroot.org/results/60f8846b435dafda0ced412d59ffe15bdff0810d\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/opencv/opencv/commit/4c92a2869b9a8f736a12ba859b74e5cadce62387]\n---\n modules/videoio/src/cap_ffmpeg_impl.hpp | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/modules/videoio/src/cap_ffmpeg_impl.hpp b/modules/videoio/src/cap_ffmpeg_impl.hpp\nindex d393b73ff4a2..76e1b855b7c8 100644\n--- a/modules/videoio/src/cap_ffmpeg_impl.hpp\n+++ b/modules/videoio/src/cap_ffmpeg_impl.hpp\n@@ -93,6 +93,12 @@ extern \"C\" {\n }\n #endif\n \n+// GCC 4.x compilation bug. Details: https://github.com/opencv/opencv/issues/20292\n+#if (defined(__GNUC__) && __GNUC__ < 5) && !defined(__clang__)\n+#undef USE_AV_HW_CODECS\n+#define USE_AV_HW_CODECS 0\n+#endif\n+\n //#define USE_AV_HW_CODECS 0\n #ifndef USE_AV_HW_CODECS\n #if LIBAVUTIL_VERSION_MAJOR >= 56 // FFMPEG 4.0+\n"
  },
  {
    "path": "package/opencv4/Config.in",
    "content": "menuconfig BR2_PACKAGE_OPENCV4\n\tbool \"opencv4\"\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on !BR2_STATIC_LIBS # include dlfcn.h\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on !BR2_PACKAGE_OPENCV3\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  OpenCV (Open Source Computer Vision) is a library of\n\t  programming functions for real time computer vision.\n\n\t  Note that the opencv_core module and the opencv_hal library\n\t  are always built and installed, not matter which other\n\t  modules are enabled below.\n\n\t  http://opencv.org/\n\nif BR2_PACKAGE_OPENCV4\n\ncomment \"OpenCV modules\"\n\nconfig BR2_PACKAGE_OPENCV4_LIB_CALIB3D\n\tbool \"calib3d\"\n\tselect BR2_PACKAGE_OPENCV4_LIB_FEATURES2D\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\thelp\n\t  Include opencv_calib3d (camera calibration and 3d\n\t  reconstruction) module into the OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_FEATURES2D\n\tbool \"features2d\"\n\tselect BR2_PACKAGE_OPENCV4_LIB_FLANN\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV4_LIB_ML\n\thelp\n\t  Include opencv_features2d (2d features framework) module\n\t  into the OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_FLANN\n\tbool \"flann\"\n\t# opencv_core dependency is already enabled\n\thelp\n\t  Include opencv_flann (clustering and search in\n\t  multi-dimensional spaces) module into the OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_HIGHGUI\n\tbool \"highgui\"\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGCODECS\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV4_LIB_VIDEOIO\n\thelp\n\t  Include opencv_highgui (high-level gui and media i/o) module\n\t  into the OpenCV build.\n\nif BR2_PACKAGE_OPENCV4_LIB_HIGHGUI\n\nchoice\n\tprompt \"gui toolkit\"\n\thelp\n\t  GUI toolkit to be used by the opencv_highgui module.\n\nconfig BR2_PACKAGE_OPENCV4_GUI_NONE\n\tbool \"none\"\n\nconfig BR2_PACKAGE_OPENCV4_WITH_GTK\n\tbool \"gtk2\"\n\tdepends on BR2_PACKAGE_LIBGTK2\n\ncomment \"gtk2 support needs libgtk2\"\n\tdepends on BR2_USE_MMU # libgtk2 -> glib2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_PACKAGE_LIBGTK2\n\nconfig BR2_PACKAGE_OPENCV4_WITH_GTK3\n\tbool \"gtk3\"\n\tdepends on BR2_PACKAGE_LIBGTK3\n\ncomment \"gtk3 support needs libgtk3\"\n\tdepends on BR2_USE_MMU # libgtk3 -> glib2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_PACKAGE_LIBGTK3\n\nconfig BR2_PACKAGE_OPENCV4_WITH_QT5\n\tbool \"qt5\"\n\tdepends on BR2_PACKAGE_QT5\n\tselect BR2_PACKAGE_QT5BASE_CONCURRENT\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\thelp\n\t  Use Qt5 with base, concurrent, test, gui and widgets\n\t  components, as GUI toolkit.\n\ncomment \"qt5 support needs qt5\"\n\tdepends on !BR2_PACKAGE_QT5\n\nendchoice\n\nconfig BR2_PACKAGE_OPENCV4_WITH_OPENGL\n\tbool \"opengl support\"\n\t# OpenGL support done using Qt5OpenGL, so depends on WITH_QT5\n\tdepends on BR2_PACKAGE_OPENCV4_WITH_QT5\n\t# OpenGL support requires Qt5OpenGL with GL support, not GLES\n\tdepends on BR2_PACKAGE_QT5_GL_AVAILABLE\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_QT5BASE_OPENGL\n\thelp\n\t  Enable OpenGL for UI.\n\ncomment \"opengl support needs an OpenGL provider\"\n\tdepends on BR2_PACKAGE_OPENCV4_WITH_QT5\n\tdepends on !BR2_PACKAGE_QT5_GL_AVAILABLE || \\\n\t\t!BR2_PACKAGE_HAS_LIBGL\n\nendif # BR2_PACKAGE_OPENCV4_LIB_HIGHGUI\n\nconfig BR2_PACKAGE_OPENCV4_LIB_IMGCODECS\n\tbool \"imgcodecs\"\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\thelp\n\t  Include opencv_imgcodecs (image codecs) module into the\n\t  OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\tbool \"imgproc\"\n\t# opencv_core dependency is already enabled\n\thelp\n\t  Include opencv_imgproc (image processing) module into the\n\t  OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_ML\n\tbool \"ml\"\n\t# opencv_core dependency is already enabled\n\thelp\n\t  Include opencv_ml (machine learning) module into the OpenCV\n\t  build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_OBJDETECT\n\tbool \"objdetect\"\n\t# opencv_core dependency is already enabled\n\tselect BR2_PACKAGE_OPENCV4_LIB_CALIB3D\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV4_LIB_ML\n\thelp\n\t  Include opencv_objdetect (object detection) module into the\n\t  OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_PHOTO\n\tbool \"photo\"\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\thelp\n\t  Include opencv_photo (computational photography) module into\n\t  the OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_PYTHON\n\tbool \"python\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy\n\tselect BR2_PACKAGE_PYTHON_NUMPY\n\thelp\n\t  Include opencv_python module into the OpenCV build.  No\n\t  python example is installed.\n\ncomment \"python support needs glibc or musl\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\tdepends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)\n\nconfig BR2_PACKAGE_OPENCV4_LIB_SHAPE\n\tbool \"shape\"\n\t# opencv_core dependency is already enabled\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV4_LIB_VIDEO\n\thelp\n\t  Include opencv_shape (shape descriptors and matchers) module\n\t  into the OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_STITCHING\n\tbool \"stitching\"\n\tselect BR2_PACKAGE_OPENCV4_LIB_CALIB3D\n\tselect BR2_PACKAGE_OPENCV4_LIB_FEATURES2D\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV4_LIB_OBJDETECT\n\thelp\n\t  Include opencv_stitching (images stitching) module into the\n\t  OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_SUPERRES\n\tbool \"superres\"\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV4_LIB_VIDEO\n\thelp\n\t  Include opencv_superres (super resolution) module into the\n\t  OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_TS\n\tbool \"ts\"\n\t# opencv_core dependency is already enabled\n\tselect BR2_PACKAGE_OPENCV4_LIB_HIGHGUI\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGCODECS\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV4_LIB_VIDEOIO\n\thelp\n\t  Include opencv_ts (test) module into the OpenCV build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_VIDEOIO\n\tbool \"videoio\"\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGCODECS\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\thelp\n\t  Include opencv_videoio (media i/o) module into the OpenCV\n\t  build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_VIDEO\n\tbool \"video\"\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\thelp\n\t  Include opencv_video (video analysis) module into the OpenCV\n\t  build.\n\nconfig BR2_PACKAGE_OPENCV4_LIB_VIDEOSTAB\n\tbool \"videostab\"\n\tselect BR2_PACKAGE_OPENCV4_LIB_CALIB3D\n\tselect BR2_PACKAGE_OPENCV4_LIB_FEATURES2D\n\tselect BR2_PACKAGE_OPENCV4_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV4_LIB_PHOTO\n\tselect BR2_PACKAGE_OPENCV4_LIB_VIDEO\n\thelp\n\t  Include opencv_videostab (video stabilization) module into\n\t  the OpenCV build.\n\ncomment \"Test sets\"\nconfig BR2_PACKAGE_OPENCV4_BUILD_TESTS\n\tbool \"build tests\"\n\nconfig BR2_PACKAGE_OPENCV4_BUILD_PERF_TESTS\n\tbool \"build performance tests\"\n\ncomment \"3rd party support\"\n\nconfig BR2_PACKAGE_OPENCV4_WITH_FFMPEG\n\tbool \"ffmpeg support\"\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_FFMPEG_AVRESAMPLE\n\tselect BR2_PACKAGE_FFMPEG_SWSCALE\n\thelp\n\t  Use ffmpeg from the target system.\n\nconfig BR2_PACKAGE_OPENCV4_WITH_GSTREAMER1\n\tbool \"gstreamer-1.x\"\n\tdepends on BR2_USE_MMU # gstreamer1 -> libglib2\n\tselect BR2_PACKAGE_GSTREAMER1\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP\n\thelp\n\t  Enable gstreamer support.\n\nchoice\n\tprompt \"jpeg2000 support\"\n\thelp\n\t  Select the desired jpeg2000 library provider.\n\nconfig BR2_PACKAGE_OPENCV4_JPEG2000_NONE\n\tbool \"none\"\n\nconfig BR2_PACKAGE_OPENCV4_JPEG2000_WITH_JASPER\n\tbool \"jasper\"\n\tselect BR2_PACKAGE_JASPER\n\thelp\n\t  Enable jpeg2000 support through jasper.\n\n\t  Note: this does not use the libjasper bundled with opencv,\n\t  but uses the libjasper package installed system-wide by\n\t  Buildroot.\n\nconfig BR2_PACKAGE_OPENCV4_JPEG2000_WITH_OPENJPEG\n\tbool \"openjpeg\"\n\tselect BR2_PACKAGE_OPENJPEG\n\thelp\n\t  Enable jpeg2000 support through openjpeg.\n\n\t  Note: this does not use the openjpeg bundled with opencv,\n\t  but uses the openjpeg package installed system-wide by\n\t  Buildroot.\n\nendchoice\n\nconfig BR2_PACKAGE_OPENCV4_WITH_JPEG\n\tbool \"jpeg support\"\n\tselect BR2_PACKAGE_JPEG\n\thelp\n\t  Use shared libjpeg from the target system.\n\nconfig BR2_PACKAGE_OPENCV4_WITH_PNG\n\tbool \"png support\"\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  Use shared libpng from the target system.\n\nconfig BR2_PACKAGE_OPENCV4_WITH_PROTOBUF\n\tbool \"protobuf support\"\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf\n\tselect BR2_PACKAGE_PROTOBUF\n\thelp\n\t  Use shared protobuf from the target system.\n\nconfig BR2_PACKAGE_OPENCV4_WITH_TIFF\n\tbool \"tiff support\"\n\tselect BR2_PACKAGE_TIFF\n\thelp\n\t  Use shared libtiff from the target system.\n\nconfig BR2_PACKAGE_OPENCV4_WITH_V4L\n\tbool \"v4l support\"\n\thelp\n\t  Enable Video 4 Linux support.\n\n\t  If the package libv4l is enabled, its support is\n\t  automatically enabled.\n\nconfig BR2_PACKAGE_OPENCV4_WITH_WEBP\n\tbool \"webp support\"\n\tselect BR2_PACKAGE_WEBP\n\thelp\n\t  Enable WebP support.\n\n\t  Use shared libwebp from the target system.\n\ncomment \"Install options\"\n\nconfig BR2_PACKAGE_OPENCV4_INSTALL_DATA\n\tbool \"install extra data\"\n\thelp\n\t  Install various data that is used by cv libraries and/or\n\t  demo applications, specifically for haarcascades and\n\t  lbpcascades features.\n\n\t  For further information: see OpenCV documentation.\n\nendif # BR2_PACKAGE_OPENCV4\n\ncomment \"opencv4 needs a toolchain w/ C++, NPTL, wchar, dynamic library, gcc >= 4.8\"\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/opencv4/opencv4.hash",
    "content": "# Locally calculated\nsha256  c20bb83dd790fc69df9f105477e24267706715a9d3c705ca1e7f613c7b3bad3d  opencv4-4.5.4.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/opencv4/opencv4.mk",
    "content": "################################################################################\n#\n# opencv4\n#\n################################################################################\n\nOPENCV4_VERSION = 4.5.4\nOPENCV4_SITE = $(call github,opencv,opencv,$(OPENCV4_VERSION))\nOPENCV4_INSTALL_STAGING = YES\nOPENCV4_LICENSE = Apache-2.0\nOPENCV4_LICENSE_FILES = LICENSE\nOPENCV4_CPE_ID_VENDOR = opencv\nOPENCV4_CPE_ID_PRODUCT = opencv\nOPENCV4_SUPPORTS_IN_SOURCE_BUILD = NO\n\nOPENCV4_CXXFLAGS = $(TARGET_CXXFLAGS)\n\n# Uses __atomic_fetch_add_4\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nOPENCV4_CXXFLAGS += -latomic\nendif\n\n# Fix c++11 build with missing std::exception_ptr\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_64735),y)\nOPENCV4_CXXFLAGS += -DCV__EXCEPTION_PTR=0\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)\nOPENCV4_CXXFLAGS += -O0\nendif\n\n# OpenCV component options\nOPENCV4_CONF_OPTS += \\\n\t-DCMAKE_CXX_FLAGS=\"$(OPENCV4_CXXFLAGS)\" \\\n\t-DBUILD_DOCS=OFF \\\n\t-DBUILD_PERF_TESTS=$(if $(BR2_PACKAGE_OPENCV4_BUILD_PERF_TESTS),ON,OFF) \\\n\t-DBUILD_TESTS=$(if $(BR2_PACKAGE_OPENCV4_BUILD_TESTS),ON,OFF) \\\n\t-DBUILD_WITH_DEBUG_INFO=OFF \\\n\t-DDOWNLOAD_EXTERNAL_TEST_DATA=OFF \\\n\t-DOPENCV_GENERATE_PKGCONFIG=ON \\\n\t-DOPENCV_ENABLE_PKG_CONFIG=ON\n\nifeq ($(BR2_PACKAGE_OPENCV4_BUILD_TESTS)$(BR2_PACKAGE_OPENCV4_BUILD_PERF_TESTS),)\nOPENCV4_CONF_OPTS += -DINSTALL_TEST=OFF\nelse\nOPENCV4_CONF_OPTS += -DINSTALL_TEST=ON\nendif\n\n# OpenCV build options\nOPENCV4_CONF_OPTS += \\\n\t-DBUILD_WITH_STATIC_CRT=OFF \\\n\t-DENABLE_CCACHE=OFF \\\n\t-DENABLE_COVERAGE=OFF \\\n\t-DENABLE_FAST_MATH=ON \\\n\t-DENABLE_IMPL_COLLECTION=OFF \\\n\t-DENABLE_NOISY_WARNINGS=OFF \\\n\t-DENABLE_OMIT_FRAME_POINTER=ON \\\n\t-DENABLE_PRECOMPILED_HEADERS=OFF \\\n\t-DENABLE_PROFILING=OFF \\\n\t-DOPENCV_WARNINGS_ARE_ERRORS=OFF\n\n# OpenCV link options\nOPENCV4_CONF_OPTS += \\\n\t-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \\\n\t-DCMAKE_SKIP_RPATH=OFF \\\n\t-DCMAKE_USE_RELATIVE_PATHS=OFF\n\n# OpenCV packaging options:\nOPENCV4_CONF_OPTS += \\\n\t-DBUILD_PACKAGE=OFF \\\n\t-DENABLE_SOLUTION_FOLDERS=OFF \\\n\t-DINSTALL_CREATE_DISTRIB=OFF\n\n# OpenCV module selection\n# * Modules on:\n#   - core: if not set, opencv does not build anything\n#   - hal: core's dependency\n# * Modules off:\n#   - android*: android stuff\n#   - apps: programs for training classifiers\n#   - java: java bindings\n#   - viz: missing VTK dependency\n#   - world: all-in-one module\n#\n# * Contrib modules from [1] are disabled:\n#   - opencv_contrib package is not available in Buildroot;\n#   - OPENCV_EXTRA_MODULES_PATH is not set.\n#\n# [1] https://github.com/Itseez/opencv_contrib\nOPENCV4_CONF_OPTS += \\\n\t-DBUILD_opencv_androidcamera=OFF \\\n\t-DBUILD_opencv_apps=OFF \\\n\t-DBUILD_opencv_calib3d=$(if $(BR2_PACKAGE_OPENCV4_LIB_CALIB3D),ON,OFF) \\\n\t-DBUILD_opencv_core=ON \\\n\t-DBUILD_opencv_features2d=$(if $(BR2_PACKAGE_OPENCV4_LIB_FEATURES2D),ON,OFF) \\\n\t-DBUILD_opencv_flann=$(if $(BR2_PACKAGE_OPENCV4_LIB_FLANN),ON,OFF) \\\n\t-DBUILD_opencv_highgui=$(if $(BR2_PACKAGE_OPENCV4_LIB_HIGHGUI),ON,OFF) \\\n\t-DBUILD_opencv_imgcodecs=$(if $(BR2_PACKAGE_OPENCV4_LIB_IMGCODECS),ON,OFF) \\\n\t-DBUILD_opencv_imgproc=$(if $(BR2_PACKAGE_OPENCV4_LIB_IMGPROC),ON,OFF) \\\n\t-DBUILD_opencv_java=OFF \\\n\t-DBUILD_opencv_ml=$(if $(BR2_PACKAGE_OPENCV4_LIB_ML),ON,OFF) \\\n\t-DBUILD_opencv_objdetect=$(if $(BR2_PACKAGE_OPENCV4_LIB_OBJDETECT),ON,OFF) \\\n\t-DBUILD_opencv_photo=$(if $(BR2_PACKAGE_OPENCV4_LIB_PHOTO),ON,OFF) \\\n\t-DBUILD_opencv_shape=$(if $(BR2_PACKAGE_OPENCV4_LIB_SHAPE),ON,OFF) \\\n\t-DBUILD_opencv_stitching=$(if $(BR2_PACKAGE_OPENCV4_LIB_STITCHING),ON,OFF) \\\n\t-DBUILD_opencv_superres=$(if $(BR2_PACKAGE_OPENCV4_LIB_SUPERRES),ON,OFF) \\\n\t-DBUILD_opencv_ts=$(if $(BR2_PACKAGE_OPENCV4_LIB_TS),ON,OFF) \\\n\t-DBUILD_opencv_video=$(if $(BR2_PACKAGE_OPENCV4_LIB_VIDEO),ON,OFF) \\\n\t-DBUILD_opencv_videoio=$(if $(BR2_PACKAGE_OPENCV4_LIB_VIDEOIO),ON,OFF) \\\n\t-DBUILD_opencv_videostab=$(if $(BR2_PACKAGE_OPENCV4_LIB_VIDEOSTAB),ON,OFF) \\\n\t-DBUILD_opencv_viz=OFF \\\n\t-DBUILD_opencv_world=OFF\n\n# Hardware support options.\n#\n# * PowerPC and VFPv3 support are turned off since their only effects\n#   are altering CFLAGS, adding '-mcpu=G3 -mtune=G5' or '-mfpu=vfpv3'\n#   to them, which is already handled by Buildroot.\n# * NEON logic is needed as it is not only used to add CFLAGS, but\n#   also to enable additional NEON code.\nOPENCV4_CONF_OPTS += \\\n\t-DENABLE_POWERPC=OFF \\\n\t-DENABLE_NEON=$(if $(BR2_ARM_CPU_HAS_NEON),ON,OFF) \\\n\t-DENABLE_VFPV3=OFF\n\n# Cuda stuff\nOPENCV4_CONF_OPTS += \\\n\t-DBUILD_CUDA_STUBS=OFF \\\n\t-DBUILD_opencv_cudaarithm=OFF \\\n\t-DBUILD_opencv_cudabgsegm=OFF \\\n\t-DBUILD_opencv_cudacodec=OFF \\\n\t-DBUILD_opencv_cudafeatures2d=OFF \\\n\t-DBUILD_opencv_cudafilters=OFF \\\n\t-DBUILD_opencv_cudaimgproc=OFF \\\n\t-DBUILD_opencv_cudalegacy=OFF \\\n\t-DBUILD_opencv_cudaobjdetect=OFF \\\n\t-DBUILD_opencv_cudaoptflow=OFF \\\n\t-DBUILD_opencv_cudastereo=OFF \\\n\t-DBUILD_opencv_cudawarping=OFF \\\n\t-DBUILD_opencv_cudev=OFF \\\n\t-DWITH_CUBLAS=OFF \\\n\t-DWITH_CUDA=OFF \\\n\t-DWITH_CUFFT=OFF\n\n# NVidia stuff\nOPENCV4_CONF_OPTS += -DWITH_NVCUVID=OFF\n\n# AMD stuff\nOPENCV4_CONF_OPTS += \\\n\t-DWITH_OPENCLAMDBLAS=OFF \\\n\t-DWITH_OPENCLAMDFFT=OFF\n\n# Intel stuff\nOPENCV4_CONF_OPTS += \\\n\t-DBUILD_WITH_DYNAMIC_IPP=OFF \\\n\t-DWITH_INTELPERC=OFF \\\n\t-DWITH_IPP=OFF \\\n\t-DWITH_IPP_A=OFF \\\n\t-DWITH_TBB=OFF\n\n# Smartek stuff\nOPENCV4_CONF_OPTS += -DWITH_GIGEAPI=OFF\n\n# Prosilica stuff\nOPENCV4_CONF_OPTS += -DWITH_PVAPI=OFF\n\n# Ximea stuff\nOPENCV4_CONF_OPTS += -DWITH_XIMEA=OFF\n\n# Non-Linux support (Android options) must remain OFF:\nOPENCV4_CONF_OPTS += \\\n\t-DANDROID=OFF \\\n\t-DBUILD_ANDROID_CAMERA_WRAPPER=OFF \\\n\t-DBUILD_ANDROID_EXAMPLES=OFF \\\n\t-DBUILD_ANDROID_SERVICE=OFF \\\n\t-DBUILD_FAT_JAVA_LIB=OFF \\\n\t-DINSTALL_ANDROID_EXAMPLES=OFF \\\n\t-DWITH_ANDROID_CAMERA=OFF\n\n# Non-Linux support (Mac OSX options) must remain OFF:\nOPENCV4_CONF_OPTS += \\\n\t-DWITH_AVFOUNDATION=OFF \\\n\t-DWITH_CARBON=OFF \\\n\t-DWITH_QUICKTIME=OFF\n\n# Non-Linux support (Windows options) must remain OFF:\nOPENCV4_CONF_OPTS += \\\n\t-DWITH_CSTRIPES=OFF \\\n\t-DWITH_DSHOW=OFF \\\n\t-DWITH_MSMF=OFF \\\n\t-DWITH_VFW=OFF \\\n\t-DWITH_VIDEOINPUT=OFF \\\n\t-DWITH_WIN32UI=OFF\n\n# Software/3rd-party support options:\n# - disable all examples\nOPENCV4_CONF_OPTS += \\\n\t-DBUILD_EXAMPLES=OFF \\\n\t-DBUILD_JASPER=OFF \\\n\t-DBUILD_JPEG=OFF \\\n\t-DBUILD_OPENEXR=OFF \\\n\t-DBUILD_OPENJPEG=OFF \\\n\t-DBUILD_PNG=OFF \\\n\t-DBUILD_PROTOBUF=OFF \\\n\t-DBUILD_TIFF=OFF \\\n\t-DBUILD_ZLIB=OFF \\\n\t-DINSTALL_C_EXAMPLES=OFF \\\n\t-DINSTALL_PYTHON_EXAMPLES=OFF \\\n\t-DINSTALL_TO_MANGLED_PATHS=OFF\n\n# Disabled features (mostly because they are not available in Buildroot), but\n# - eigen: OpenCV does not use it, not take any benefit from it.\nOPENCV4_CONF_OPTS += \\\n\t-DWITH_1394=OFF \\\n\t-DWITH_CLP=OFF \\\n\t-DWITH_EIGEN=OFF \\\n\t-DWITH_GDAL=OFF \\\n\t-DWITH_GPHOTO2=OFF \\\n\t-DWITH_GSTREAMER_0_10=OFF \\\n\t-DWITH_LAPACK=OFF \\\n\t-DWITH_MATLAB=OFF \\\n\t-DWITH_OPENCL=OFF \\\n\t-DWITH_OPENCL_SVM=OFF \\\n\t-DWITH_OPENEXR=OFF \\\n\t-DWITH_OPENNI2=OFF \\\n\t-DWITH_OPENNI=OFF \\\n\t-DWITH_UNICAP=OFF \\\n\t-DWITH_VA=OFF \\\n\t-DWITH_VA_INTEL=OFF \\\n\t-DWITH_VTK=OFF \\\n\t-DWITH_XINE=OFF\n\nOPENCV4_DEPENDENCIES += host-pkgconf zlib\n\nifeq ($(BR2_PACKAGE_OPENCV4_JPEG2000_WITH_JASPER),y)\nOPENCV4_CONF_OPTS += -DWITH_JASPER=ON\nOPENCV4_DEPENDENCIES += jasper\nelse\nOPENCV4_CONF_OPTS += -DWITH_JASPER=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_JPEG2000_WITH_OPENJPEG),y)\nOPENCV4_CONF_OPTS += -DWITH_OPENJPEG=ON\nOPENCV4_DEPENDENCIES += openjpeg\nelse\nOPENCV4_CONF_OPTS += -DWITH_OPENJPEG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_FFMPEG),y)\nOPENCV4_CONF_OPTS += -DWITH_FFMPEG=ON\nOPENCV4_DEPENDENCIES += ffmpeg bzip2\nelse\nOPENCV4_CONF_OPTS += -DWITH_FFMPEG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_GSTREAMER1),y)\nOPENCV4_CONF_OPTS += -DWITH_GSTREAMER=ON\nOPENCV4_DEPENDENCIES += gstreamer1 gst1-plugins-base\nelse\nOPENCV4_CONF_OPTS += -DWITH_GSTREAMER=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_GTK)$(BR2_PACKAGE_OPENCV4_WITH_GTK3),)\nOPENCV4_CONF_OPTS += -DWITH_GTK=OFF -DWITH_GTK_2_X=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_GTK),y)\nOPENCV4_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=ON\nOPENCV4_DEPENDENCIES += libgtk2\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_GTK3),y)\nOPENCV4_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=OFF\nOPENCV4_DEPENDENCIES += libgtk3\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_JPEG),y)\nOPENCV4_CONF_OPTS += -DWITH_JPEG=ON\nOPENCV4_DEPENDENCIES += jpeg\nelse\nOPENCV4_CONF_OPTS += -DWITH_JPEG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_OPENGL),y)\nOPENCV4_CONF_OPTS += -DWITH_OPENGL=ON\nOPENCV4_DEPENDENCIES += libgl\nelse\nOPENCV4_CONF_OPTS += -DWITH_OPENGL=OFF\nendif\n\nOPENCV4_CONF_OPTS += -DWITH_OPENMP=$(if $(BR2_TOOLCHAIN_HAS_OPENMP),ON,OFF)\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_PNG),y)\nOPENCV4_CONF_OPTS += -DWITH_PNG=ON\nOPENCV4_DEPENDENCIES += libpng\nelse\nOPENCV4_CONF_OPTS += -DWITH_PNG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_PROTOBUF),y)\nOPENCV4_CONF_OPTS += \\\n\t-DPROTOBUF_UPDATE_FILES=ON \\\n\t-DWITH_PROTOBUF=ON\nOPENCV4_DEPENDENCIES += protobuf\nelse\nOPENCV4_CONF_OPTS += -DWITH_PROTOBUF=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_QT5),y)\nOPENCV4_CONF_OPTS += -DWITH_QT=5\nOPENCV4_DEPENDENCIES += qt5base\nelse\nOPENCV4_CONF_OPTS += -DWITH_QT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_TIFF),y)\nOPENCV4_CONF_OPTS += -DWITH_TIFF=ON\nOPENCV4_DEPENDENCIES += tiff\nelse\nOPENCV4_CONF_OPTS += -DWITH_TIFF=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_V4L),y)\nOPENCV4_CONF_OPTS += \\\n\t-DWITH_LIBV4L=$(if $(BR2_PACKAGE_LIBV4L),ON,OFF) \\\n\t-DWITH_V4L=ON\nOPENCV4_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBV4L),libv4l)\nelse\nOPENCV4_CONF_OPTS += -DWITH_V4L=OFF -DWITH_LIBV4L=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_WITH_WEBP),y)\nOPENCV4_CONF_OPTS += -DWITH_WEBP=ON\nOPENCV4_DEPENDENCIES += webp\nelse\nOPENCV4_CONF_OPTS += -DWITH_WEBP=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV4_LIB_PYTHON),y)\nOPENCV4_CONF_OPTS += \\\n\t-DBUILD_opencv_python2=OFF \\\n\t-DBUILD_opencv_python3=ON \\\n\t-DPYTHON3_EXECUTABLE=$(HOST_DIR)/bin/python3 \\\n\t-DPYTHON3_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR) \\\n\t-DPYTHON3_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON3_VERSION_MAJOR).so \\\n\t-DPYTHON3_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/core/include \\\n\t-DPYTHON3_PACKAGES_PATH=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \\\n\t-DPYTHON3_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION)\nOPENCV4_DEPENDENCIES += python3\nOPENCV4_KEEP_PY_FILES += usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/cv2/config*.py\nOPENCV4_CONF_ENV += $(PKG_PYTHON_DISTUTILS_ENV)\nOPENCV4_DEPENDENCIES += python-numpy\nelse\nOPENCV4_CONF_OPTS += \\\n\t-DBUILD_opencv_python2=OFF \\\n\t-DBUILD_opencv_python3=OFF\nendif\n\n# Installation hooks:\ndefine OPENCV4_CLEAN_INSTALL_LICENSE\n\t$(RM) -fr $(TARGET_DIR)/usr/share/licenses/opencv4\nendef\nOPENCV4_POST_INSTALL_TARGET_HOOKS += OPENCV4_CLEAN_INSTALL_LICENSE\n\ndefine OPENCV4_CLEAN_INSTALL_VALGRIND\n\t$(RM) -f $(TARGET_DIR)/usr/share/opencv4/valgrind*\nendef\nOPENCV4_POST_INSTALL_TARGET_HOOKS += OPENCV4_CLEAN_INSTALL_VALGRIND\n\nifneq ($(BR2_PACKAGE_OPENCV4_INSTALL_DATA),y)\ndefine OPENCV4_CLEAN_INSTALL_DATA\n\t$(RM) -fr $(TARGET_DIR)/usr/share/opencv4/haarcascades \\\n\t\t$(TARGET_DIR)/usr/share/opencv4/lbpcascades\nendef\nOPENCV4_POST_INSTALL_TARGET_HOOKS += OPENCV4_CLEAN_INSTALL_DATA\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/openfpgaloader/Config.in",
    "content": "config BR2_PACKAGE_OPENFPGALOADER\n\tbool \"openfpgaloader\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libftdi1\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi1 -> libusb\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_LIBFTDI1\n\thelp\n\t  Universal utility for programming FPGA\n\n\t  https://github.com/trabucayre/openFPGALoader/\n\ncomment \"openfpgaloader needs a toolchain w/ threads, C++, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/openfpgaloader/openfpgaloader.hash",
    "content": "# Locally computed\nsha256  ef3ed60297ab560f15cd4362d61b7da86c44b84e18937e0411023f8d1cf6a606  openfpgaloader-381c67de00a3102cf6e9bb20ca84030a71c7a0f2.tar.gz\nsha256  8486a10c4393cee1c25392769ddd3b2d6c242d6ec7928e1414efff7dfb2f07ef  LICENSE\n"
  },
  {
    "path": "package/openfpgaloader/openfpgaloader.mk",
    "content": "################################################################################\n#\n# openfpgaloader\n#\n################################################################################\n\nOPENFPGALOADER_VERSION = 381c67de00a3102cf6e9bb20ca84030a71c7a0f2\nOPENFPGALOADER_SITE = $(call github,trabucayre,openFPGALoader,$(OPENFPGALOADER_VERSION))\nOPENFPGALOADER_LICENSE = AGPL-3.0\nOPENFPGALOADER_LICENSE_FILES = LICENSE\nOPENFPGALOADER_DEPENDENCIES = libftdi1\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nOPENFPGALOADER_DEPENDENCIES += udev\nOPENFPGALOADER_CONF_OPTS += -DENABLE_UDEV=ON\nelse\nOPENFPGALOADER_CONF_OPTS += -DENABLE_UDEV=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/opengl/Config.in",
    "content": "source \"package/opengl/libgl/Config.in\"\nsource \"package/opengl/libegl/Config.in\"\nsource \"package/opengl/libgbm/Config.in\"\nsource \"package/opengl/libgles/Config.in\"\nsource \"package/opengl/libopencl/Config.in\"\nsource \"package/opengl/libopenvg/Config.in\"\nsource \"package/opengl/libopenmax/Config.in\"\n"
  },
  {
    "path": "package/opengl/libegl/Config.in",
    "content": "config BR2_PACKAGE_HAS_LIBEGL\n\tbool\n\nconfig BR2_PACKAGE_HAS_LIBEGL_WAYLAND\n\tbool\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\nconfig BR2_PACKAGE_PROVIDES_LIBEGL\n\tstring\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n"
  },
  {
    "path": "package/opengl/libegl/libegl.mk",
    "content": "################################################################################\n#\n# libegl\n#\n################################################################################\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "package/opengl/libgbm/Config.in",
    "content": "config BR2_PACKAGE_HAS_LIBGBM\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_LIBGBM\n\tstring\n\tdepends on BR2_PACKAGE_HAS_LIBGBM\n\nconfig BR2_PACKAGE_LIBGBM_HAS_FEATURE_FORMAT_MODIFIER_PLANE_COUNT\n\tbool\n\tdepends on BR2_PACKAGE_HAS_LIBGBM\n\n# gbm implementations should select this option if they provide the\n# format modifier plane count feature. This API was initially introduced\n# in mesa3d version 17. A gbm implementation provides this feature if it\n# is implement function gbm_device_get_format_modifier_plane_count.\n\nconfig BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF\n\tbool\n\tdepends on BR2_PACKAGE_HAS_LIBGBM\n\n# gbm implementations should select this option if they provide the\n# dma buffer feature. This API was initially introduced in mesa3d\n# version 10. A gbm implementation provides this feature if it\n# is implement function gbm_bo_get_fd.\n"
  },
  {
    "path": "package/opengl/libgbm/libgbm.mk",
    "content": "################################################################################\n#\n# libgbm\n#\n################################################################################\n\n# This package requires to install a gbm.pc which needs\n# to be provided by GBM providers.\n$(eval $(virtual-package))\n"
  },
  {
    "path": "package/opengl/libgl/Config.in",
    "content": "config BR2_PACKAGE_HAS_LIBGL\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_LIBGL\n\tstring\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n"
  },
  {
    "path": "package/opengl/libgl/libgl.mk",
    "content": "################################################################################\n#\n# libgl\n#\n################################################################################\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "package/opengl/libgles/Config.in",
    "content": "config BR2_PACKAGE_HAS_LIBGLES\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_LIBGLES\n\tstring\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n"
  },
  {
    "path": "package/opengl/libgles/libgles.mk",
    "content": "################################################################################\n#\n# libgles\n#\n################################################################################\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "package/opengl/libopencl/Config.in",
    "content": "config BR2_PACKAGE_HAS_LIBOPENCL\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_LIBOPENCL\n\tstring\n\tdepends on BR2_PACKAGE_HAS_LIBOPENCL\n"
  },
  {
    "path": "package/opengl/libopencl/libopencl.mk",
    "content": "################################################################################\n#\n# libopencl\n#\n################################################################################\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "package/opengl/libopenmax/Config.in",
    "content": "config BR2_PACKAGE_HAS_LIBOPENMAX\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_LIBOPENMAX\n\tstring\n\tdepends on BR2_PACKAGE_HAS_LIBOPENMAX\n"
  },
  {
    "path": "package/opengl/libopenmax/libopenmax.mk",
    "content": "################################################################################\n#\n# libopenmax\n#\n################################################################################\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "package/opengl/libopenvg/Config.in",
    "content": "config BR2_PACKAGE_HAS_LIBOPENVG\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_LIBOPENVG\n\tstring\n\tdepends on BR2_PACKAGE_HAS_LIBOPENVG\n"
  },
  {
    "path": "package/opengl/libopenvg/libopenvg.mk",
    "content": "################################################################################\n#\n# libopenvg\n#\n################################################################################\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "package/opengl/opengl.mk",
    "content": "include $(sort $(wildcard package/opengl/*/*.mk))\n"
  },
  {
    "path": "package/openipmi/0001-Avoid-searching-host-library-path.patch",
    "content": "From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Wed, 22 Jul 2015 07:04:33 +0300\nSubject: [PATCH] Avoid searching host library path\n\nThe $(libdir) variable points to the location of the directory on the target\nsystem, /usr/lib by default. When cross compiling this directory contains the\nhost libraries which may be different than target libraries. Don't use\n$(libdir) in the library search path.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\nSigned-off-by: Joel Stanley <joel@jms.id.au>\n---\n cmdlang/Makefile.am | 3 +--\n unix/Makefile.am    | 6 ++----\n 2 files changed, 3 insertions(+), 6 deletions(-)\n\ndiff --git a/cmdlang/Makefile.am b/cmdlang/Makefile.am\nindex 264ee12be79f..0b3843784656 100644\n--- a/cmdlang/Makefile.am\n+++ b/cmdlang/Makefile.am\n@@ -15,8 +15,7 @@ libOpenIPMIcmdlang_la_SOURCES = cmdlang.c cmd_domain.c cmd_entity.c cmd_mc.c \\\n libOpenIPMIcmdlang_la_LIBADD = -lm \\\n \t$(top_builddir)/utils/libOpenIPMIutils.la \\\n \t$(top_builddir)/lib/libOpenIPMI.la\n-libOpenIPMIcmdlang_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) \\\n-\t-L$(libdir)\n+libOpenIPMIcmdlang_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION)\n \n bin_PROGRAMS = openipmish\n \ndiff --git a/unix/Makefile.am b/unix/Makefile.am\nindex 5128839dad13..bd0f897ba8d6 100644\n--- a/unix/Makefile.am\n+++ b/unix/Makefile.am\n@@ -10,14 +10,12 @@ lib_LTLIBRARIES = libOpenIPMIposix.la libOpenIPMIpthread.la\n libOpenIPMIpthread_la_SOURCES = posix_thread_os_hnd.c selector.c\n libOpenIPMIpthread_la_LIBADD = -lpthread $(GDBM_LIB) \\\n \t$(top_builddir)/utils/libOpenIPMIutils.la $(RT_LIB)\n-libOpenIPMIpthread_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) \\\n-\t-L$(libdir)\n+libOpenIPMIpthread_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION)\n \n libOpenIPMIposix_la_SOURCES = posix_os_hnd.c selector.c\n libOpenIPMIposix_la_LIBADD = $(top_builddir)/utils/libOpenIPMIutils.la \\\n \t$(GDBM_LIB) $(RT_LIB)\n-libOpenIPMIposix_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) \\\n-\t-L$(libdir)\n+libOpenIPMIposix_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION)\n \n noinst_HEADERS = heap.h\n \n"
  },
  {
    "path": "package/openipmi/Config.in",
    "content": "config BR2_PACKAGE_OPENIPMI\n\tbool \"openipmi\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_PACKAGE_POPT\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  IPMI allows remote monitoring and remote management of\n\t  devices. OpenIPMI provides a library and command line tools\n\t  to interact with IPMI enabled devices. OpenIPMI also provides\n\t  an IPMI BMC simulator.\n\n\t  http://openipmi.sourceforge.net\n\ncomment \"openipmi needs a toolchain w/ dynamic library, NPTL\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/openipmi/openipmi.hash",
    "content": "# From http://sourceforge.net/projects/openipmi/files/OpenIPMI%202.0%20Library/\nsha1 be0c87743a38e2fa00586df931f021c0b480385b OpenIPMI-2.0.28.tar.gz\nmd5 ba37f08e306062ec73c7ed2a2bd4d5f4 OpenIPMI-2.0.28.tar.gz\n# Locally computed\nsha256\t8e8b1de2a9a041b419133ecb21f956e999841cf2e759e973eeba9a36f8b40996\tOpenIPMI-2.0.28.tar.gz\nsha256\t32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670\tCOPYING\nsha256\t185323a62589e7ee80f86bf2ea29caad9a09fdda0ea3f1c00db8b778c7edf60e\tCOPYING.BSD\nsha256\t5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509\tCOPYING.LIB\n"
  },
  {
    "path": "package/openipmi/openipmi.mk",
    "content": "################################################################################\n#\n# openipmi\n#\n################################################################################\n\nOPENIPMI_VERSION = 2.0.28\nOPENIPMI_SITE = https://sourceforge.net/projects/openipmi/files/OpenIPMI%202.0%20Library\nOPENIPMI_SOURCE = OpenIPMI-$(OPENIPMI_VERSION).tar.gz\nOPENIPMI_LICENSE = LGPL-2.0+, GPL-2.0+, BSD-3-Clause\nOPENIPMI_LICENSE_FILES = COPYING.LIB COPYING COPYING.BSD\nOPENIPMI_DEPENDENCIES = popt ncurses readline host-pkgconf\nOPENIPMI_INSTALL_STAGING = YES\n# Patching Makefile.am\nOPENIPMI_AUTORECONF = YES\nOPENIPMI_CONF_ENV = ac_cv_path_pkgprog=\"$(PKG_CONFIG_HOST_BINARY)\"\nOPENIPMI_CONF_OPTS = \\\n\t--with-glib=no \\\n\t--with-tcl=no \\\n\t--with-perl=no \\\n\t--with-python=no \\\n\t--with-swig=no\n\nifeq ($(BR2_PACKAGE_GDBM),y)\nOPENIPMI_DEPENDENCIES += gdbm\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nOPENIPMI_DEPENDENCIES += openssl\nOPENIPMI_CONF_OPTS += --with-openssl=yes\nelse\nOPENIPMI_CONF_OPTS += --with-openssl=no\nendif\n\nifeq ($(BR2_PACKAGE_NETSNMP),y)\nOPENIPMI_DEPENDENCIES += netsnmp\nOPENIPMI_CONF_OPTS += --with-ucdsnmp=yes\nelse\nOPENIPMI_CONF_OPTS += --with-ucdsnmp=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/openjdk/Config.in",
    "content": "config BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_HOSTARCH = \"x86_64\"\n\n# Taken from make/autoconf/platform.m4\nconfig BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_arm\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_m68k\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdefault y if BR2_sh\n\nconfig BR2_PACKAGE_OPENJDK\n\tbool \"openjdk\"\n\tdepends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS\n\tdepends on !BR2_SOFT_FLOAT\n\tdepends on !BR2_STATIC_LIBS # glibc\n\tdepends on BR2_INSTALL_LIBSTDCPP # cups\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib, cups, libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb, C++14 for OpenJDK17\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on BR2_USE_MMU # cups\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_MIXER\n\tselect BR2_PACKAGE_ALSA_LIB_PCM\n\tselect BR2_PACKAGE_ALSA_LIB_RAWMIDI\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\tselect BR2_PACKAGE_CUPS\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_GIFLIB\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LCMS2\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_XLIB_LIBXTST\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  OpenJDK is a free and open-source implementation of the\n\t  Java Platform.\n\n\t  http://openjdk.java.net/\n\nif BR2_PACKAGE_OPENJDK\n\nchoice\n\tprompt \"openjdk version\"\n\tdefault BR2_PACKAGE_OPENJDK_VERSION_17\n\thelp\n\t  Select the version of OpenJDK you wish to use.\n\nconfig BR2_PACKAGE_OPENJDK_VERSION_11\n\tbool \"OpenJDK 11\"\n\nconfig BR2_PACKAGE_OPENJDK_VERSION_17\n\tbool \"OpenJDK 17\"\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # C++14\n\ncomment \"OpenJDK 17 needs a host gcc >= 4.9\"\n\tdepends on !BR2_HOST_GCC_AT_LEAST_4_9 # C++14\n\nendchoice\n\nconfig BR2_PACKAGE_OPENJDK_FULL_JDK\n\tbool \"Build the full JDK\"\n\thelp\n\t  Install the full JDK instead of just the run time.\n\t  The full JDK includes several packages used for debugging and\n\t  development. Some useful tools included with the JDK are:\n\t    - javaws\n\t      Command line tool for launching Java Web Start and setting\n\t      various options.\n\n\t    - jcmd:\n\t      JVM Diagnostic Commands tool: Sends diagnostic command\n\t      requests to a running Java Virtual Machine.\n\n\t    - jinfo\n\t      Configuration Info for Java: Prints configuration\n\t      information for a given process or core file or a remote\n\t      debug server.\n\n\t    - jmap\n\t      Memory Map for Java: Prints shared object memory maps or\n\t      heap memory details of a given process or core file or a\n\t      remote debug server.\n\n\t    - jsadebugd\n\t      Serviceability Agent Debug Daemon for Java: Attaches to a\n\t      process or core file and acts as a debug server.\n\n\t    - jstack\n\t      Stack Trace for Java - Prints a stack trace of threads for\n\t      a given process or core file or remote debug server.\n\n\t    - jstat\n\t      JVM Statistics Monitoring Tool: Attaches to an\n\t      instrumented HotSpot Java virtual machine and collects and\n\t      logs performance statistics as specified by the command\n\t      line options.\n\n\t    - jstatd\n\t      JVM jstat Daemon - Launches an RMI server application that\n\t      monitors for the creation and termination of instrumented\n\t      HotSpot Java virtual machines and provides an interface to\n\t      allow remote monitoring tools to attach to Java virtual\n\t      machines running on the local system.\n\n\t  Note:\n\t  While the JDK also comes with several tools which can be used\n\t  for developing java applications on a target, Buildroot does\n\t  not support development on a target. Building the full JDK is\n\t  supported for debugging purposes only.\n\n\t  Selecting this option increases the file system by\n\t  approximately 110M.\n\nchoice\n\tprompt \"openjdk variant\"\n\tdefault BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER if !BR2_powerpc\n\tdefault BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO if BR2_powerpc\n\nconfig BR2_PACKAGE_OPENJDK_JVM_VARIANT_CLIENT\n\tbool \"client\"\n\tdepends on !BR2_powerpc\n\thelp\n\t  Quick loading, but slower run-time performance.\n\nconfig BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER\n\tbool \"server\"\n\tdepends on !BR2_powerpc\n\thelp\n\t  Slower loading, but faster run-time performance.\n\nconfig BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO\n\tbool \"zero\"\n\tselect BR2_PACKAGE_LIBFFI\n\thelp\n\t  A non-assembler variant with wide arch support, however\n\t  performance is less then client/server.\n\n\t  http://openjdk.java.net/projects/zero\n\nendchoice\nendif\n\ncomment \"openjdk needs X.Org\"\n\tdepends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_XORG7\n\ncomment \"openjdk needs glibc, and a toolchain w/ wchar, dynamic library, threads, C++, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_USES_GLIBC || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\ncomment \"openjdk does not support soft float configurations\"\n\tdepends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_SOFT_FLOAT\n"
  },
  {
    "path": "package/openjdk/openjdk.hash",
    "content": "# Locally computed\nsha256  8c076203a6f85ab916b3e54de1992bcbcc5ffe580c52b1ac8d52ca7afb9f02d1  openjdk-17.0.1+12.tar.gz\nsha256  119c6233fe7ff5670c590e2f9d6686ac4d80c97b17065506998b75c547b54f2c  openjdk-11.0.13+8.tar.gz\nsha256  4b9abebc4338048a7c2dc184e9f800deb349366bdf28eb23c2677a77b4c87726  LICENSE\n"
  },
  {
    "path": "package/openjdk/openjdk.mk",
    "content": "################################################################################\n#\n# openjdk\n#\n################################################################################\n\nifeq ($(BR2_PACKAGE_OPENJDK_VERSION_17),y)\nOPENJDK_VERSION_MAJOR = 17\nOPENJDK_VERSION_MINOR = 0.1+12\nelse\nOPENJDK_VERSION_MAJOR = 11\nOPENJDK_VERSION_MINOR = 0.13+8\nendif\nOPENJDK_VERSION = $(OPENJDK_VERSION_MAJOR).$(OPENJDK_VERSION_MINOR)\nOPENJDK_SITE = $(call github,openjdk,jdk$(OPENJDK_VERSION_MAJOR)u,jdk-$(OPENJDK_VERSION))\n\nOPENJDK_LICENSE = GPL-2.0+ with exception\nOPENJDK_LICENSE_FILES = LICENSE\nOPENJDK_INSTALL_STAGING = YES\n\n# OpenJDK requires Alsa, cups, and X11 even for a headless build.\n# host-zip is needed for the zip executable.\nOPENJDK_DEPENDENCIES = \\\n\thost-gawk \\\n\thost-openjdk-bin \\\n\thost-pkgconf \\\n\thost-zip \\\n\thost-zlib \\\n\talsa-lib \\\n\tcups \\\n\tfontconfig \\\n\tgiflib \\\n\tjpeg \\\n\tlcms2 \\\n\tlibpng \\\n\tlibusb \\\n\txlib_libXrandr \\\n\txlib_libXrender \\\n\txlib_libXt \\\n\txlib_libXtst \\\n\tzlib\n\n# JVM variants\nifeq ($(BR2_PACKAGE_OPENJDK_JVM_VARIANT_CLIENT),y)\nOPENJDK_JVM_VARIANT = client\nendif\nifeq ($(BR2_PACKAGE_OPENJDK_JVM_VARIANT_SERVER),y)\nOPENJDK_JVM_VARIANT = server\nendif\nifeq ($(BR2_PACKAGE_OPENJDK_JVM_VARIANT_ZERO),y)\nOPENJDK_JVM_VARIANT = zero\nOPENJDK_DEPENDENCIES += libffi\nendif\n\nifeq ($(BR2_PACKAGE_OPENJDK_FULL_JDK),y)\nOPENJDK_VARIANT = jdk\nOPENJDK_MAKE_TARGET = jdk-image\nelse\nOPENJDK_VARIANT = jre\nOPENJDK_MAKE_TARGET = legacy-jre-image\nendif\n\n# OpenJDK installs a file named 'modules' in jre/lib, which gets installed as\n# /usr/lib/modules. However, with a merged /usr, this conflicts with the\n# directory named 'modules' installed by the kernel. If OpenJDK gets built\n# after the kernel, this manifests itself with: \"cp: cannot overwrite\n# directory '/usr/lib/modules with non-directory.\"\nOPENJDK_INSTALL_BASE = /usr/lib/jvm\n\n# OpenJDK ignores some variables unless passed via the environment.\n# These variables are PATH, LD, CC, CXX, and CPP.\n# OpenJDK defaults ld to the ld binary but passes -Xlinker and -z as\n# arguments during the linking process, which causes compilation failures.\n# To fix this issue, LD is set to point to gcc.\nOPENJDK_CONF_ENV = \\\n\tPATH=$(BR_PATH) \\\n\tCC=$(TARGET_CC) \\\n\tCPP=$(TARGET_CPP) \\\n\tCXX=$(TARGET_CXX) \\\n\tLD=$(TARGET_CC) \\\n\tBUILD_SYSROOT_CFLAGS=\"$(HOST_CFLAGS)\" \\\n\tBUILD_SYSROOT_LDFLAGS=\"$(HOST_LDFLAGS)\"\n\nOPENJDK_CONF_OPTS = \\\n\t--disable-full-docs \\\n\t--disable-hotspot-gtest \\\n\t--disable-manpages \\\n\t--disable-warnings-as-errors \\\n\t--enable-headless-only \\\n\t--enable-openjdk-only \\\n\t--enable-unlimited-crypto \\\n\t--openjdk-target=$(GNU_TARGET_NAME) \\\n\t--with-boot-jdk=$(HOST_OPENJDK_BIN_ROOT_DIR) \\\n\t--with-stdc++lib=dynamic \\\n\t--with-debug-level=release \\\n\t--with-devkit=$(HOST_DIR) \\\n\t--with-extra-cflags=\"$(TARGET_CFLAGS)\" \\\n\t--with-extra-cxxflags=\"$(TARGET_CXXFLAGS)\" \\\n\t--with-extra-ldflags=\"-Wl,-rpath,$(OPENJDK_INSTALL_BASE)/lib,-rpath,$(OPENJDK_INSTALL_BASE)/lib/$(OPENJDK_JVM_VARIANT)\" \\\n\t--with-giflib=system \\\n\t--with-jobs=$(PARALLEL_JOBS) \\\n\t--with-jvm-variants=$(OPENJDK_JVM_VARIANT) \\\n\t--with-lcms=system \\\n\t--with-libjpeg=system \\\n\t--with-libpng=system \\\n\t--with-zlib=system \\\n\t--with-native-debug-symbols=none \\\n\t--without-version-pre \\\n\t--with-sysroot=$(STAGING_DIR) \\\n\t--with-version-build=\"$(OPENJDK_VERSION_MAJOR)\" \\\n\t--with-version-string=\"$(OPENJDK_VERSION_MAJOR)\"\n\n# If building for AArch64, use the provided CPU port.\nifeq ($(BR2_aarch64),y)\nOPENJDK_CONF_OPTS += --with-abi-profile=aarch64\nendif\n\nifeq ($(BR2_CCACHE),y)\nOPENJDK_CONF_OPTS += \\\n\t--enable-ccache \\\n\t--with-ccache-dir=$(BR2_CCACHE_DIR)\nendif\n\n# Autogen and configure are performed in a single step.\ndefine OPENJDK_CONFIGURE_CMDS\n\tchmod +x $(@D)/configure\n\tcd $(@D); $(OPENJDK_CONF_ENV) ./configure autogen $(OPENJDK_CONF_OPTS)\nendef\n\n# Make -jn is unsupported. Instead, set the \"--with-jobs=\" configure option,\n# and use $(MAKE1).\ndefine OPENJDK_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(OPENJDK_CONF_ENV) $(MAKE1) -C $(@D) $(OPENJDK_MAKE_TARGET)\nendef\n\n# Calling make install always builds and installs the JDK instead of the JRE,\n# which makes manual installation necessary.\ndefine OPENJDK_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)$(OPENJDK_INSTALL_BASE)\n\tcp -dpfr $(@D)/build/linux-*-release/images/$(OPENJDK_VARIANT)/* \\\n\t\t$(TARGET_DIR)$(OPENJDK_INSTALL_BASE)/\n\tcd $(TARGET_DIR)/usr/bin && ln -snf ../..$(OPENJDK_INSTALL_BASE)/bin/* .\nendef\n\ndefine OPENJDK_INSTALL_STAGING_CMDS\n\tmkdir -p $(STAGING_DIR)/usr/include/jvm\n\tcp -dpfr $(@D)/build/linux-*-release/jdk/include/* \\\n\t\t$(STAGING_DIR)/usr/include/jvm\nendef\n\n# Demos and includes are not needed on the target\nifeq ($(BR2_PACKAGE_OPENJDK_FULL_JDK),y)\ndefine OPENJDK_REMOVE_UNEEDED_JDK_DIRECTORIES\n\t$(RM) -r $(TARGET_DIR)$(OPENJDK_INSTALL_BASE)/include/\n\t$(RM) -r $(TARGET_DIR)$(OPENJDK_INSTALL_BASE)/demo/\nendef\nOPENJDK_TARGET_FINALIZE_HOOKS += OPENJDK_REMOVE_UNEEDED_JDK_DIRECTORIES\nendif\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/openjdk-bin/openjdk-bin.hash",
    "content": "# https://github.com/adoptium/temurin17-binaries/releases\nsha256  6ea18c276dcbb8522feeebcfc3a4b5cb7c7e7368ba8590d3326c6c3efc5448b6  OpenJDK17U-jdk_x64_linux_hotspot_17.0.1_12.tar.gz\n\n# From https://github.com/adoptium/temurin11-binaries/releases\nsha256  3b1c0c34be4c894e64135a454f2d5aaa4bd10aea04ec2fa0c0efe6bb26528e30  OpenJDK11U-jdk_x64_linux_hotspot_11.0.13_8.tar.gz\n\n# Locally calculated\nsha256  4b9abebc4338048a7c2dc184e9f800deb349366bdf28eb23c2677a77b4c87726  legal/java.prefs/LICENSE\nsha256  a44eb7b5caf5534c6ef536b21edb40b4d6babf91bf97d9d45596868618b2c6fb  legal/java.prefs/ASSEMBLY_EXCEPTION\n"
  },
  {
    "path": "package/openjdk-bin/openjdk-bin.mk",
    "content": "################################################################################\n#\n# host-openjdk-bin\n#\n################################################################################\n\nifeq ($(BR2_PACKAGE_OPENJDK_VERSION_17),y)\nHOST_OPENJDK_BIN_VERSION_MAJOR = 17\nHOST_OPENJDK_BIN_VERSION_MINOR = 0.1_12\nelse\nHOST_OPENJDK_BIN_VERSION_MAJOR = 11\nHOST_OPENJDK_BIN_VERSION_MINOR = 0.13_8\nendif\nHOST_OPENJDK_BIN_VERSION = $(HOST_OPENJDK_BIN_VERSION_MAJOR).$(HOST_OPENJDK_BIN_VERSION_MINOR)\nHOST_OPENJDK_BIN_SOURCE = OpenJDK$(HOST_OPENJDK_BIN_VERSION_MAJOR)U-jdk_x64_linux_hotspot_$(HOST_OPENJDK_BIN_VERSION).tar.gz\nHOST_OPENJDK_BIN_SITE = https://github.com/adoptium/temurin$(HOST_OPENJDK_BIN_VERSION_MAJOR)-binaries/releases/download/jdk-$(subst _,%2B,$(HOST_OPENJDK_BIN_VERSION))\n\nHOST_OPENJDK_BIN_LICENSE = GPL-2.0+ with exception\nHOST_OPENJDK_BIN_LICENSE_FILES = legal/java.prefs/LICENSE legal/java.prefs/ASSEMBLY_EXCEPTION\n\nHOST_OPENJDK_BIN_ROOT_DIR = $(HOST_DIR)/usr/lib/jvm\n\n# unpack200 has an invalid RPATH and relies on libzlib. When\n# host-libzlib is installed on the system, the error \"ERROR: package\n# host-libzlib installs executables without proper RPATH: will occur.\n# Because unpack200 is a deprecated tool, removing it to fix this\n# issue is safe.\ndefine HOST_OPENJDK_BIN_INSTALL_CMDS\n\tmkdir -p $(HOST_OPENJDK_BIN_ROOT_DIR)\n\tcp -dpfr $(@D)/* $(HOST_OPENJDK_BIN_ROOT_DIR)\n\t$(RM) -f $(HOST_OPENJDK_BIN_ROOT_DIR)/bin/unpack200\nendef\n\n$(eval $(host-generic-package))\n\n# variables used by other packages\nJAVAC = $(HOST_OPENJDK_BIN_ROOT_DIR)/bin/javac\n"
  },
  {
    "path": "package/openjpeg/0001-thirdparty-tiff-append-flags-found-by-pkg-config-if-.patch",
    "content": "From 38f50c7d9ad3ba06b64583045665203afb53cbd9 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Sun, 6 Nov 2016 16:29:08 +0100\nSubject: [PATCH] thirdparty: tiff: append flags found by pkg-config if\n available\n\nThis change allows to get all required CFLAGS/LDFLAGS in case of static only\nbuild.\n\nThis build issue [1] was triggered by the Buildroot farms.\n\n[1] http://autobuild.buildroot.net/results/d0d/d0d22727311d6300e0e400728126170407bfd699/build-end.log\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n---\n thirdparty/CMakeLists.txt | 23 +++++++++++++++++++++--\n 1 file changed, 21 insertions(+), 2 deletions(-)\n\ndiff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt\nindex cb24b43b58e2..cd6a5e1391b0 100644\n--- a/thirdparty/CMakeLists.txt\n+++ b/thirdparty/CMakeLists.txt\n@@ -1,5 +1,9 @@\n # 3rd party libs\n \n+if(NOT BUILD_THIRDPARTY)\n+  include(FindPkgConfig)\n+endif(NOT BUILD_THIRDPARTY)\n+\n #------------\n # Try to find lib Z\n if(BUILD_THIRDPARTY)\n@@ -36,6 +40,9 @@ if(BUILD_THIRDPARTY)\n else(BUILD_THIRDPARTY)\n   if(ZLIB_FOUND)\n     find_package(PNG)\n+    # Static only build:\n+    #   it is not necessary to invoke pkg_check_module on libpng, because libpng\n+    #   only depends on zlib, which is already checked.\n     if(PNG_FOUND)\n       message(STATUS \"Your system seems to have a PNG lib available, we will use it\")\n       set(OPJ_HAVE_PNG_H 1 PARENT_SCOPE)\n@@ -66,12 +73,24 @@ if(BUILD_THIRDPARTY)\n   set(OPJ_HAVE_LIBTIFF 1 PARENT_SCOPE)\n else(BUILD_THIRDPARTY)\n   find_package(TIFF)\n+  # Static only build:\n+  #   it is necessary to invoke pkg_check_module on libtiff since it may have\n+  #   several other dependencies not declared by its cmake module, but they are\n+  #   in the its pkgconfig module.\n+  if(PKG_CONFIG_FOUND)\n+    foreach(pc_tiff_module tiff tiff3 tiff4 tiff-3 tiff-4 libtiff libtiff3 libtiff4 libtiff-3 libtiff-4)\n+      pkg_check_modules(PC_TIFF QUIET ${pc_tiff_module})\n+      if(PC_TIFF_FOUND)\n+        break()\n+      endif(PC_TIFF_FOUND)\n+    endforeach()\n+  endif(PKG_CONFIG_FOUND)\n   if(TIFF_FOUND)\n     message(STATUS \"Your system seems to have a TIFF lib available, we will use it\")\n     set(OPJ_HAVE_TIFF_H 1 PARENT_SCOPE)\n     set(OPJ_HAVE_LIBTIFF 1 PARENT_SCOPE)\n-    set(TIFF_LIBNAME ${TIFF_LIBRARIES} PARENT_SCOPE)\n-    set(TIFF_INCLUDE_DIRNAME ${TIFF_INCLUDE_DIR} PARENT_SCOPE)\n+    set(TIFF_LIBNAME ${TIFF_LIBRARIES} ${PC_TIFF_STATIC_LIBRARIES} PARENT_SCOPE)\n+    set(TIFF_INCLUDE_DIRNAME ${TIFF_INCLUDE_DIR} ${PC_TIFF_STATIC_INCLUDE_DIRS} PARENT_SCOPE)\n   else(TIFF_FOUND) # not found\n     set(OPJ_HAVE_TIFF_H 0 PARENT_SCOPE)\n     set(OPJ_HAVE_LIBTIFF 0 PARENT_SCOPE)\n-- \n2.10.2\n\n"
  },
  {
    "path": "package/openjpeg/0002-thirdparty-lcms2-append-flags-found-by-pkg-config-if.patch",
    "content": "From 226daa77ea5a35da306f9af2548f3e2c9e79f577 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Fri, 11 Nov 2016 23:35:13 +0100\nSubject: [PATCH] thirdparty: lcms2: append flags found by pkg-config if\n available\n\nThis change allows to get all required CFLAGS/LDFLAGS in case of static only\nbuild.\n\nFixes a buildroot build failure (see [1], [2] and [3]).\n\n[1] http://autobuild.buildroot.net/results/5ce/5cee20afd8bef5268832cddcb3a5270746be7a57\n[2] http://lists.busybox.net/pipermail/buildroot/2016-November/177187.html\n[3] http://lists.busybox.net/pipermail/buildroot/2016-November/177188.html\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n thirdparty/CMakeLists.txt | 11 +++++++++--\n 1 file changed, 9 insertions(+), 2 deletions(-)\n\ndiff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt\nindex cd6a5e1391b0..a3a8494d89b1 100644\n--- a/thirdparty/CMakeLists.txt\n+++ b/thirdparty/CMakeLists.txt\n@@ -113,12 +113,19 @@ if( BUILD_THIRDPARTY)\n   set(OPJ_HAVE_LIBLCMS2 1 PARENT_SCOPE)\n else(BUILD_THIRDPARTY)\n   find_package(LCMS2)\n+  # Static only build:\n+  #   it is necessary to invoke pkg_check_module on lcms2 since it may have\n+  #   several other dependencies not declared by its cmake module, but they are\n+  #   in the its pkgconfig module.\n+  if(PKG_CONFIG_FOUND)\n+    pkg_check_modules(PC_LCMS2 QUIET lcms2)\n+  endif(PKG_CONFIG_FOUND)\n   if(LCMS2_FOUND)\n     message(STATUS \"Your system seems to have a LCMS2 lib available, we will use it\")\n     set(OPJ_HAVE_LCMS2_H 1 PARENT_SCOPE)\n     set(OPJ_HAVE_LIBLCMS2 1 PARENT_SCOPE)\n-    set(LCMS_LIBNAME ${LCMS2_LIBRARIES} PARENT_SCOPE)\n-    set(LCMS_INCLUDE_DIRNAME ${LCMS2_INCLUDE_DIRS} PARENT_SCOPE)\n+    set(LCMS_LIBNAME ${LCMS2_LIBRARIES} ${PC_LCMS2_STATIC_LIBRARIES} PARENT_SCOPE)\n+    set(LCMS_INCLUDE_DIRNAME ${LCMS2_INCLUDE_DIRS} ${PC_LCMS2_STATIC_INCLUDE_DIRS} PARENT_SCOPE)\n   else(LCMS2_FOUND) # not found lcms2\n     # try to find LCMS\n     find_package(LCMS)\n-- \n2.10.2\n\n"
  },
  {
    "path": "package/openjpeg/0003-CMakeLists.txt-Don-t-require-a-C-compiler.patch",
    "content": "From 786ddcd1475adc6193c59d53e0d8ed2c502f2b00 Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <peter@korsgaard.com>\nDate: Sat, 23 Sep 2017 18:49:31 +0200\nSubject: [PATCH] CMakeLists.txt: Don't require a C++ compiler\n\nBy default, CMake assumes that the project is using both C and C++.  By\nexplicitly passing 'C' as argument of the project() macro, we tell CMake\nthat only C is used, which prevents CMake from erroring out if a C++\ncompiler doesn't exist.\n\nSubmitted upstream:\nhttps://github.com/uclouvain/openjpeg/pull/1027\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n CMakeLists.txt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex ec42bc99..d80eb48b 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -24,7 +24,7 @@ endif()\n #string(TOLOWER ${OPENJPEG_NAMESPACE} OPENJPEG_LIBRARY_NAME)\n set(OPENJPEG_LIBRARY_NAME openjp2)\n \n-project(${OPENJPEG_NAMESPACE})\n+project(${OPENJPEG_NAMESPACE} C)\n \n # Do full dependency headers.\n include_regular_expression(\"^.*$\")\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/openjpeg/0004-Revert-Use-INC_DIR-for-OPENJPEG_INCLUDE_DIRS-fixes-u.patch",
    "content": "From 14f4c27e7c91f745a1dda9991b5deea3cbef2072 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 7 Jan 2021 14:09:50 +0100\nSubject: [PATCH] Revert \"Use INC_DIR for OPENJPEG_INCLUDE_DIRS (fixes\n uclouvain#1174)\"\n\nThis reverts commit 65586374d639cfc0104419992f9022174b412594 which\nbreaks cross-compilation of poppler under buildroot (because of\nDESTDIR usage).\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/uclouvain/openjpeg/pull/1321]\n---\n cmake/OpenJPEGConfig.cmake.in | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/cmake/OpenJPEGConfig.cmake.in b/cmake/OpenJPEGConfig.cmake.in\nindex 8a726697..2925108a 100644\n--- a/cmake/OpenJPEGConfig.cmake.in\n+++ b/cmake/OpenJPEGConfig.cmake.in\n@@ -27,8 +27,12 @@ if(EXISTS ${SELF_DIR}/OpenJPEGTargets.cmake)\n   # This is an install tree\n   include(${SELF_DIR}/OpenJPEGTargets.cmake)\n \n+  # We find a relative path from the PKG directory to header files.\n+  set(PKG_DIR \"@CMAKE_INSTALL_PREFIX@/@OPENJPEG_INSTALL_PACKAGE_DIR@\")\n   set(INC_DIR \"@CMAKE_INSTALL_PREFIX@/@OPENJPEG_INSTALL_INCLUDE_DIR@\")\n-  get_filename_component(OPENJPEG_INCLUDE_DIRS \"${INC_DIR}\" ABSOLUTE)\n+  file(RELATIVE_PATH PKG_TO_INC_RPATH \"${PKG_DIR}\" \"${INC_DIR}\")\n+\n+  get_filename_component(OPENJPEG_INCLUDE_DIRS \"${SELF_DIR}/${PKG_TO_INC_RPATH}\" ABSOLUTE)\n \n else()\n   if(EXISTS ${SELF_DIR}/OpenJPEGExports.cmake)\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/openjpeg/Config.in",
    "content": "config BR2_PACKAGE_OPENJPEG\n\tbool \"openjpeg\"\n\thelp\n\t  The OpenJPEG library is an open-source JPEG 2000 codec\n\t  written in C.\n\n\t  http://www.openjpeg.org\n"
  },
  {
    "path": "package/openjpeg/openjpeg.hash",
    "content": "# Locally computed:\nsha256  8702ba68b442657f11aaeb2b338443ca8d5fb95b0d845757968a7be31ef7f16d  openjpeg-2.4.0.tar.gz\nsha256  a6af136f3e15038a666b61f376612a07d9a4e48cb7c01adbf3e33b3f14ab49b6  LICENSE\n"
  },
  {
    "path": "package/openjpeg/openjpeg.mk",
    "content": "################################################################################\n#\n# openjpeg\n#\n################################################################################\n\nOPENJPEG_VERSION = 2.4.0\nOPENJPEG_SITE = $(call github,uclouvain,openjpeg,v$(OPENJPEG_VERSION))\nOPENJPEG_LICENSE = BSD-2-Clause\nOPENJPEG_LICENSE_FILES = LICENSE\nOPENJPEG_CPE_ID_VENDOR = uclouvain\nOPENJPEG_INSTALL_STAGING = YES\n\nOPENJPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib)\nOPENJPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBPNG),libpng)\nOPENJPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_TIFF),tiff)\nOPENJPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_LCMS2),lcms2)\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nOPENJPEG_CONF_OPTS += -DOPJ_USE_THREAD=ON\nelse\nOPENJPEG_CONF_OPTS += -DOPJ_USE_THREAD=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/openlayers/Config.in",
    "content": "config BR2_PACKAGE_OPENLAYERS\n\tbool \"openlayers\"\n\thelp\n\t  OpenLayers makes it easy to put a dynamic map in any web\n\t  page. It can display map tiles, vector data and markers\n\t  loaded from any source. OpenLayers has been developed to\n\t  further the use of geographic information of all kinds. It\n\t  is completely free, Open Source JavaScript, released under\n\t  the 2-clause BSD License (also known as the FreeBSD).\n\n\t  https://openlayers.org\n"
  },
  {
    "path": "package/openlayers/openlayers.hash",
    "content": "# Locally computed:\nsha256\t07d06f17f44399d86ddeac8d8000d39ff9db503257f77c59e5743d5934463623\tv6.8.1-dist.zip\n"
  },
  {
    "path": "package/openlayers/openlayers.mk",
    "content": "################################################################################\n#\n# openlayers\n#\n################################################################################\n\nOPENLAYERS_VERSION = 6.8.1\nOPENLAYERS_SOURCE = v$(OPENLAYERS_VERSION)-dist.zip\nOPENLAYERS_SITE = https://github.com/openlayers/openlayers/releases/download/v$(OPENLAYERS_VERSION)\nOPENLAYERS_LICENSE = BSD-2-Clause\n# There's no separate license file in the archive, only minified files.\n\ndefine OPENLAYERS_EXTRACT_CMDS\n\tunzip $(OPENLAYERS_DL_DIR)/$(OPENLAYERS_SOURCE) -d $(@D)\n\tmv $(@D)/v$(OPENLAYERS_VERSION)-dist/* $(@D)\n\trmdir $(@D)/v$(OPENLAYERS_VERSION)-dist/\nendef\n\ndefine OPENLAYERS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/ol.css $(TARGET_DIR)/var/www/ol.css\n\t$(INSTALL) -D -m 0644 $(@D)/ol.js $(TARGET_DIR)/var/www/ol.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/openldap/0001-fix_cross_strip.patch",
    "content": "Fix stripping when cross-compiling\n\nProbably-Signed-off-by: Dave Bender <bender@benegon.com>\n[yann.morin.1998@free.fr: patch was made by Dave, but he\n forgot his SoB line, so I added it]\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -rupN openldap-2.4.40/build/shtool openldap-2.4.40-br/build/shtool\n--- openldap-2.4.40/build/shtool\t2014-09-18 21:48:49.000000000 -0400\n+++ openldap-2.4.40-br/build/shtool\t2015-01-21 13:21:35.689829372 -0500\n@@ -981,7 +981,7 @@ install )\n             if [ \".$opt_t\" = .yes ]; then\n                 echo \"strip $dsttmp\" 1>&2\n             fi\n-            strip $dsttmp || shtool_exit $?\n+            $STRIP $dsttmp || shtool_exit $?\n         fi\n         if [ \".$opt_o\" != . ]; then\n             if [ \".$opt_t\" = .yes ]; then\ndiff -rupN openldap-2.4.40/build/top.mk openldap-2.4.40-br/build/top.mk\n--- openldap-2.4.40/build/top.mk\t2014-09-18 21:48:49.000000000 -0400\n+++ openldap-2.4.40-br/build/top.mk\t2015-01-21 13:23:41.027810097 -0500\n@@ -59,7 +59,7 @@ INSTALL_PROGRAM = $(INSTALL)\n INSTALL_DATA = $(INSTALL) -m 644\n INSTALL_SCRIPT = $(INSTALL)\n \n-STRIP = -s\n+STRIP_OPTS = -s\n \n LINT = lint\n 5LINT = 5lint\ndiff -rupN openldap-2.4.40/clients/tools/Makefile.in openldap-2.4.40-br/clients/tools/Makefile.in\n--- openldap-2.4.40/clients/tools/Makefile.in\t2014-09-18 21:48:49.000000000 -0400\n+++ openldap-2.4.40-br/clients/tools/Makefile.in\t2015-01-21 13:23:35.827727946 -0500\n@@ -120,7 +120,7 @@ install-local:\tFORCE\n \t-$(MKDIR) $(DESTDIR)$(bindir)\n \t@(\t\t\t\t\t\t\t\t\\\n \t    for prg in $(PROGRAMS); do\t\t\t\t\t\\\n-\t\t$(LTINSTALL) $(INSTALLFLAGS) $(STRIP) -m 755 $$prg$(EXEEXT)\t\\\n+\t\t$(LTINSTALL) $(INSTALLFLAGS) $(STRIP_OPTS) -m 755 $$prg$(EXEEXT)\t\\\n \t\t    $(DESTDIR)$(bindir);\t\t\t\t\\\n \t    done\t\t\t\t\t\t\t\\\n \t)\ndiff -rupN openldap-2.4.40/configure.in openldap-2.4.40-br/configure.in\n--- openldap-2.4.40/configure.in\t2014-09-18 21:48:49.000000000 -0400\n+++ openldap-2.4.40-br/configure.in\t2015-01-16 15:50:48.874816786 -0500\n@@ -668,6 +668,15 @@ if test -z \"${AR}\"; then\n \tfi\n fi\n \n+if test -z \"${STRIP}\"; then\n+\tAC_CHECK_PROGS(STRIP,strip,missing)\n+\n+\tif test \"${STRIP}\" = \"missing\" ; then\n+\t\tAC_MSG_ERROR([Unable to locate strip(1) or suitable replacement.  Check PATH or set STRIP.])\n+\tfi\n+fi\n+\n+\n AC_LIBTOOL_WIN32_DLL\n AC_LIBTOOL_DLOPEN\n AC_PROG_LIBTOOL\ndiff -rupN openldap-2.4.40/servers/slapd/Makefile.in openldap-2.4.40-br/servers/slapd/Makefile.in\n--- openldap-2.4.40/servers/slapd/Makefile.in\t2015-01-16 15:04:52.507473256 -0500\n+++ openldap-2.4.40-br/servers/slapd/Makefile.in\t2015-01-16 15:05:02.299627229 -0500\n@@ -378,7 +378,7 @@ install-local-srv: install-slapd install\n install-slapd: FORCE\n \t-$(MKDIR) $(DESTDIR)$(libexecdir)\n \t-$(MKDIR) $(DESTDIR)$(localstatedir)/run\n-\t$(LTINSTALL) $(INSTALLFLAGS) $(STRIP) -m 755 \\\n+\t$(LTINSTALL) $(INSTALLFLAGS) $(STRIP_OPTS) -m 755 \\\n \t\tslapd$(EXEEXT) $(DESTDIR)$(libexecdir)\n \t@for i in $(SUBDIRS); do \\\n \t    if test -d $$i && test -f $$i/Makefile ; then \\\n"
  },
  {
    "path": "package/openldap/0002-fix-bignum.patch",
    "content": "configure: correctly detect bignum\n\nBuilding with bignum is currently not possible, since we're checking\nol_with_tls against a value it is never assigned in any case.\n\nSince bignum is from openssl, and openssl is the preferred TLS\nimplementation, if the bignum headers are found, it means we do have\nTLS and it is opensl.\n\nSo, keep the check for the bignum header, but check against ol_link_tls\nwhich means that openssl is enabled when we find the bignum headers.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN openldap-2.4.40.orig/configure openldap-2.4.40/configure\n--- openldap-2.4.40.orig/configure\t2014-09-19 03:48:49.000000000 +0200\n+++ openldap-2.4.40/configure\t2015-01-25 18:44:54.216879362 +0100\n@@ -23431,7 +23431,7 @@\n \n \tif test \"$ac_cv_header_openssl_bn_h\" = \"yes\" &&\n \t\ttest \"$ac_cv_header_openssl_crypto_h\" = \"yes\" &&\n-\t\ttest \"$ol_with_tls\" = \"found\" ; then\n+\t\ttest \"$ol_link_tls\" = \"yes\" ; then\n \t\tol_with_mp=bignum\n \n $as_echo \"#define USE_MP_BIGNUM 1\" >>confdefs.h\ndiff -durN openldap-2.4.40.orig/configure.in openldap-2.4.40/configure.in\n--- openldap-2.4.40.orig/configure.in\t2014-09-19 03:48:49.000000000 +0200\n+++ openldap-2.4.40/configure.in\t2015-01-25 18:44:37.628676446 +0100\n@@ -2383,7 +2383,7 @@\n \tAC_CHECK_HEADERS(openssl/crypto.h)\n \tif test \"$ac_cv_header_openssl_bn_h\" = \"yes\" &&\n \t\ttest \"$ac_cv_header_openssl_crypto_h\" = \"yes\" &&\n-\t\ttest \"$ol_with_tls\" = \"found\" ; then\n+\t\ttest \"$ol_link_tls\" = \"yes\" ; then\n \t\tol_with_mp=bignum\n \t\tAC_DEFINE(USE_MP_BIGNUM,1,[define to use OpenSSL BIGNUM for MP])\n \telif test $ol_with_mp = bignum ; then\n"
  },
  {
    "path": "package/openldap/0003-disable-docs.patch",
    "content": "doc: do not build\n\nBuilding the documentation fails on some autobuilders,\nso disable it as we're not interested in it.\n\nFixes:\n    http://autobuild.buildroot.org/results/1dc/1dc17a54e57130bffd19d360c9a7faae440b8916/\n    http://autobuild.buildroot.org/results/407/40797597024cbb9054fdda8bdf4d011bba966b06/\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN openldap-2.4.40.orig/Makefile.in openldap-2.4.40/Makefile.in\n--- openldap-2.4.40.orig/Makefile.in\t2014-09-19 03:48:49.000000000 +0200\n+++ openldap-2.4.40/Makefile.in\t2015-01-31 23:12:54.347678913 +0100\n@@ -13,7 +13,7 @@\n ## top-level directory of the distribution or, alternatively, at\n ## <http://www.OpenLDAP.org/license.html>.\n \n-SUBDIRS= include libraries clients servers tests doc\n+SUBDIRS= include libraries clients servers tests\n CLEANDIRS=\n INSTALLDIRS= \n \n"
  },
  {
    "path": "package/openldap/0004-revert-ITS-3977-fix-libtool-static-behavior-to-match.patch",
    "content": "From 88a0442a0f01076914af80db40571fd52914ffa3 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 28 Mar 2019 23:52:38 +0100\nSubject: [PATCH] revert ITS#3977, fix libtool -static behavior to match docs\n\nRevert\nhttps://github.com/openldap/openldap/commit/7b6a088a2590fdad10286d10050b769e48554e13\nas this patch does not work with our buildroot patches\n\nFixes:\n - http://autobuild.buildroot.org/results/ab4f85fd21cacfaef6b0b43a38da6a4a1d32ecb6\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: Not upstreamable]\n---\n build/ltmain.sh | 9 ++-------\n 1 file changed, 2 insertions(+), 7 deletions(-)\n\ndiff --git a/build/ltmain.sh b/build/ltmain.sh\nindex 1d079b91e..996dc7dad 100755\n--- a/build/ltmain.sh\n+++ b/build/ltmain.sh\n@@ -1190,15 +1190,14 @@ EOF\n \t  if test -n \"$link_static_flag\"; then\n \t    dlopen_self=$dlopen_self_static\n \t  fi\n-\t  prefer_static_libs=yes\n \telse\n \t  if test -z \"$pic_flag\" && test -n \"$link_static_flag\"; then\n \t    dlopen_self=$dlopen_self_static\n \t  fi\n-\t  prefer_static_libs=built\n \tfi\n \tbuild_libtool_libs=no\n \tbuild_old_libs=yes\n+\tprefer_static_libs=yes\n \tbreak\n \t;;\n       esac\n@@ -2602,12 +2601,8 @@ EOF\n \tfi\n \n \tlink_static=no # Whether the deplib will be linked statically\n-\tuse_static_libs=$prefer_static_libs\n-\tif test \"$use_static_libs\" = built && test \"$installed\" = yes ; then\n-\t  use_static_libs=no\n-\tfi\n \tif test -n \"$library_names\" &&\n-\t   { test \"$use_static_libs\" = no || test -z \"$old_library\"; }; then\n+\t   { test \"$prefer_static_libs\" = no || test -z \"$old_library\"; }; then\n \t  if test \"$installed\" = no; then\n \t    notinst_deplibs=\"$notinst_deplibs $lib\"\n \t    need_relink=yes\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/openldap/Config.in",
    "content": "config BR2_PACKAGE_OPENLDAP\n\tbool \"openldap\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # needs fork()\n\thelp\n\t  OpenLDAP Software is an open source implementation of the\n\t  Lightweight Directory Access Protocol.\n\n\t  This only installs client-side support.\n\n\t  https://www.openldap.org/\n\nif BR2_PACKAGE_OPENLDAP\n\nconfig BR2_PACKAGE_OPENLDAP_CLIENTS\n\tbool \"openldap client binaries\"\n\tdefault y\n\thelp\n\t  Install the OpenLDAP client tools (ldapadd, ldapcompare,\n\t  ldapdelete, ldapexop, ldapmodify, ldapmodrdn, ldappasswd,\n\t  ldapsearch, ldapurl, ldapwhoami)\n\nendif\n\ncomment \"openldap needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU # needs fork()\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/openldap/openldap.hash",
    "content": "# From https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.4.59.md5\nmd5  6036a03b3a67b4a1fe1246e0a2c7265a  openldap-2.4.59.tgz\n# From https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.4.59.sha1\nsha1  b154d06bbf40fafafb34fffc4b116946d931efef  openldap-2.4.59.tgz\n# Locally computed\nsha256  99f37d6747d88206c470067eda624d5e48c1011e943ec0ab217bae8712e22f34  openldap-2.4.59.tgz\nsha256  310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569  LICENSE\n"
  },
  {
    "path": "package/openldap/openldap.mk",
    "content": "################################################################################\n#\n# openldap\n#\n################################################################################\n\nOPENLDAP_VERSION = 2.4.59\nOPENLDAP_SOURCE = openldap-$(OPENLDAP_VERSION).tgz\nOPENLDAP_SITE = https://www.openldap.org/software/download/OpenLDAP/openldap-release\nOPENLDAP_LICENSE = OpenLDAP Public License\nOPENLDAP_LICENSE_FILES = LICENSE\nOPENLDAP_CPE_ID_VENDOR = openldap\nOPENLDAP_SELINUX_MODULES = ldap\nOPENLDAP_INSTALL_STAGING = YES\nOPENLDAP_DEPENDENCIES = host-pkgconf\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nOPENLDAP_TLS = openssl\nOPENLDAP_DEPENDENCIES += openssl\nelse ifeq ($(BR2_PACKAGE_GNUTLS),y)\nOPENLDAP_TLS = gnutls\nOPENLDAP_DEPENDENCIES += gnutls\nelse ifeq ($(BR2_PACKAGE_LIBNSS),y)\nOPENLDAP_TLS = moznss\nOPENLDAP_DEPENDENCIES += libnss\nOPENLDAP_CPPFLAGS = \\\n\t-I$(STAGING_DIR)/usr/include/nss \\\n\t-I$(STAGING_DIR)/usr/include/nspr\nelse\nOPENLDAP_TLS = no\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nOPENLDAP_MP = bignum\nOPENLDAP_DEPENDENCIES += openssl\nOPENLDAP_CONF_ENV = LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`\"\nelse ifeq ($(BR2_PACKAGE_GMP),y)\nOPENLDAP_MP = gmp\nOPENLDAP_DEPENDENCIES += gmp\nelse\nOPENLDAP_MP = longlong\nendif\n\nOPENLDAP_CONF_ENV += ac_cv_func_memcmp_working=yes\n\nOPENLDAP_CONF_OPTS += \\\n\t--enable-syslog \\\n\t--disable-proctitle \\\n\t--disable-slapd \\\n\t--with-yielding-select \\\n\t--sysconfdir=/etc \\\n\t--enable-dynamic=$(if $(BR2_STATIC_LIBS),no,yes) \\\n\t--with-tls=$(OPENLDAP_TLS) \\\n\t--with-mp=$(OPENLDAP_MP) \\\n\tCPPFLAGS=\"$(TARGET_CPPFLAGS) $(OPENLDAP_CPPFLAGS)\"\n\n# Somehow, ${STRIP} does not percolates through to the shtool script\n# used to install the executables; thus, that script tries to run the\n# executable it is supposed to install, resulting in an error.\nOPENLDAP_MAKE_ENV = STRIP=\"$(TARGET_STRIP)\"\n\nifeq ($(BR2_PACKAGE_OPENLDAP_CLIENTS),)\nOPENLDAP_CLIENTS = \\\n\tldapurl ldapexop ldapcompare ldapwhoami \\\n\tldappasswd ldapmodrdn ldapdelete ldapmodify \\\n\tldapsearch\ndefine OPENLDAP_REMOVE_CLIENTS\n\t$(RM) -f $(foreach p,$(OPENLDAP_CLIENTS),$(TARGET_DIR)/usr/bin/$(p))\n\t$(RM) -rf $(TARGET_DIR)/etc/openldap\nendef\nOPENLDAP_POST_INSTALL_TARGET_HOOKS += OPENLDAP_REMOVE_CLIENTS\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/openmpi/Config.in",
    "content": "comment \"openmpi needs a toolchain w/ dynamic library, NPTL, wchar, C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_sparc\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \\\n\t\t|| !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_OPENMPI\n\tbool \"openmpi\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\t# from the configure script: \"Sparc v8 target is not supported\n\t# in this release of Open MPI\"\n\tdepends on !BR2_sparc\n\thelp\n\t  A High Performance Message Passing Library.\n\n\t  https://www.open-mpi.org/\n"
  },
  {
    "path": "package/openmpi/openmpi-mips32-fortran.cache",
    "content": "ompi_cv_fortran_sizeof_CHARACTER=1\nompi_cv_fortran_sizeof_LOGICAL=4\nompi_cv_fortran_sizeof_LOGICALp1=1\nompi_cv_fortran_sizeof_LOGICALp2=2\nompi_cv_fortran_sizeof_LOGICALp4=4\nompi_cv_fortran_sizeof_LOGICALp8=8\nompi_cv_fortran_sizeof_INTEGER=4\nompi_cv_fortran_sizeof_INTEGERp1=1\nompi_cv_fortran_sizeof_INTEGERp2=2\nompi_cv_fortran_sizeof_INTEGERp4=4\nompi_cv_fortran_sizeof_INTEGERp8=8\nompi_cv_fortran_sizeof_REAL=4\nompi_cv_fortran_sizeof_REALp4=4\nompi_cv_fortran_sizeof_REALp8=8\nompi_cv_fortran_sizeof_DOUBLE_PRECISION=8\nompi_cv_fortran_sizeof_COMPLEX=8\nompi_cv_fortran_sizeof_COMPLEXp8=8\nompi_cv_fortran_sizeof_COMPLEXp16=16\nompi_cv_fortran_sizeof_DOUBLE_COMPLEX=16\nompi_cv_fortran_alignment_CHARACTER=1\nompi_cv_fortran_alignment_LOGICAL=4\nompi_cv_fortran_alignment_LOGICALp1=1\nompi_cv_fortran_alignment_LOGICALp2=2\nompi_cv_fortran_alignment_LOGICALp4=4\nompi_cv_fortran_alignment_LOGICALp8=8\nompi_cv_fortran_alignment_INTEGER=4\nompi_cv_fortran_alignment_INTEGERp1=1\nompi_cv_fortran_alignment_INTEGERp2=2\nompi_cv_fortran_alignment_INTEGERp4=4\nompi_cv_fortran_alignment_INTEGERp8=8\nompi_cv_fortran_alignment_REAL=4\nompi_cv_fortran_alignment_REALp4=4\nompi_cv_fortran_alignment_REALp8=8\nompi_cv_fortran_alignment_DOUBLE_PRECISION=8\nompi_cv_fortran_alignment_COMPLEX=4\nompi_cv_fortran_alignment_COMPLEXp8=4\nompi_cv_fortran_alignment_COMPLEXp16=8\nompi_cv_fortran_alignment_DOUBLE_COMPLEX=8\nompi_cv_fortran_kind_value_C_SIGNED_CHAR=1\nompi_cv_fortran_kind_value_C_SHORT=2\nompi_cv_fortran_kind_value_C_INT=4\nompi_cv_fortran_kind_value_C_INT16_T=2\nompi_cv_fortran_kind_value_C_INT32_T=4\nompi_cv_fortran_kind_value_C_INT64_T=8\nompi_cv_fortran_kind_value_C_LONG_LONG=8\nompi_cv_fortran_kind_value_C_FLOAT=4\nompi_cv_fortran_kind_value_C_FLOAT_COMPLEX=4\nompi_cv_fortran_kind_value_C_DOUBLE=8\nompi_cv_fortran_kind_value_C_DOUBLE_COMPLEX=8\nompi_cv_fortran_true_value=1\nompi_cv_fortran_sizeof_type_test_mpi_handle_=4\nompi_cv_fortran_alignment_type_test_mpi_handle_=4\n"
  },
  {
    "path": "package/openmpi/openmpi-mips64-fortran.cache",
    "content": "ompi_cv_fortran_sizeof_CHARACTER=1\nompi_cv_fortran_sizeof_LOGICAL=4\nompi_cv_fortran_sizeof_LOGICALp1=1\nompi_cv_fortran_sizeof_LOGICALp2=2\nompi_cv_fortran_sizeof_LOGICALp4=4\nompi_cv_fortran_sizeof_LOGICALp8=8\nompi_cv_fortran_sizeof_INTEGER=4\nompi_cv_fortran_sizeof_INTEGERp1=1\nompi_cv_fortran_sizeof_INTEGERp2=2\nompi_cv_fortran_sizeof_INTEGERp4=4\nompi_cv_fortran_sizeof_INTEGERp8=8\nompi_cv_fortran_sizeof_INTEGERp16=16\nompi_cv_fortran_sizeof_REAL=4\nompi_cv_fortran_sizeof_REALp4=4\nompi_cv_fortran_sizeof_REALp8=8\nompi_cv_fortran_sizeof_REALp16=16\nompi_cv_fortran_sizeof_DOUBLE_PRECISION=8\nompi_cv_fortran_sizeof_COMPLEX=8\nompi_cv_fortran_sizeof_COMPLEXp8=8\nompi_cv_fortran_sizeof_COMPLEXp16=16\nompi_cv_fortran_sizeof_COMPLEXp32=32\nompi_cv_fortran_sizeof_DOUBLE_COMPLEX=16\nompi_cv_fortran_alignment_CHARACTER=1\nompi_cv_fortran_alignment_LOGICAL=4\nompi_cv_fortran_alignment_LOGICALp1=1\nompi_cv_fortran_alignment_LOGICALp2=2\nompi_cv_fortran_alignment_LOGICALp4=4\nompi_cv_fortran_alignment_LOGICALp8=8\nompi_cv_fortran_alignment_INTEGER=4\nompi_cv_fortran_alignment_INTEGERp1=1\nompi_cv_fortran_alignment_INTEGERp2=2\nompi_cv_fortran_alignment_INTEGERp4=4\nompi_cv_fortran_alignment_INTEGERp8=8\nompi_cv_fortran_alignment_REAL=4\nompi_cv_fortran_alignment_REALp4=4\nompi_cv_fortran_alignment_REALp8=8\nompi_cv_fortran_alignment_REALp16=16\nompi_cv_fortran_alignment_DOUBLE_PRECISION=8\nompi_cv_fortran_alignment_COMPLEX=4\nompi_cv_fortran_alignment_COMPLEXp8=4\nompi_cv_fortran_alignment_COMPLEXp16=8\nompi_cv_fortran_alignment_COMPLEXp32=16\nompi_cv_fortran_alignment_DOUBLE_COMPLEX=8\nompi_cv_fortran_kind_value_C_SIGNED_CHAR=1\nompi_cv_fortran_kind_value_C_SHORT=2\nompi_cv_fortran_kind_value_C_INT=4\nompi_cv_fortran_kind_value_C_INT16_T=2\nompi_cv_fortran_kind_value_C_INT32_T=4\nompi_cv_fortran_kind_value_C_INT64_T=8\nompi_cv_fortran_kind_value_C_LONG_LONG=8\nompi_cv_fortran_kind_value_C_LONG_DOUBLE=16\nompi_cv_fortran_kind_value_C_LONG_DOUBLE_COMPLEX=16\nompi_cv_fortran_kind_value_C_FLOAT=4\nompi_cv_fortran_kind_value_C_FLOAT_COMPLEX=4\nompi_cv_fortran_kind_value_C_DOUBLE=8\nompi_cv_fortran_kind_value_C_DOUBLE_COMPLEX=8\nompi_cv_fortran_kind_value_0=0\nompi_cv_real16_c_equiv=yes\nompi_cv_fortran_true_value=1\nompi_cv_fortran_sizeof_type_test_mpi_handle_=4\nompi_cv_fortran_alignment_type_test_mpi_handle_=4\n"
  },
  {
    "path": "package/openmpi/openmpi.hash",
    "content": "# From: https://www.open-mpi.org/software/ompi/v4.0/\nmd5 e3da67df1e968c8798827e0e5fe9a510  openmpi-4.0.0.tar.bz2\nsha1 fee1d0287abfb150bae16957de342752c9bdd4e8  openmpi-4.0.0.tar.bz2\n# Locally computed\nsha256 2f0b8a36cfeb7354b45dda3c5425ef8393c9b04115570b615213faaa3f97366b  openmpi-4.0.0.tar.bz2\nsha256 8298a80ed5f09cfd007bae1c0e7d67d1c2810c6389876778dad070c31a691dac  LICENSE\n"
  },
  {
    "path": "package/openmpi/openmpi.mk",
    "content": "################################################################################\n#\n# openmpi\n#\n################################################################################\n\nOPENMPI_VERSION_MAJOR = 4.0\nOPENMPI_VERSION = $(OPENMPI_VERSION_MAJOR).0\nOPENMPI_SITE = https://www.open-mpi.org/software/ompi/v$(OPENMPI_VERSION_MAJOR)/downloads\nOPENMPI_SOURCE = openmpi-$(OPENMPI_VERSION).tar.bz2\nOPENMPI_LICENSE = BSD-3-Clause\nOPENMPI_LICENSE_FILES = LICENSE\nOPENMPI_INSTALL_STAGING = YES\n\n# Enabling Fortran support requires pre-seeding the configure script\n# with various values that cannot be guessed, so we provide cache\n# files for various architectures.\n\nifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y)\nifeq ($(BR2_mips)$(BR2_mipsel),y)\nOPENMPI_FORTRAN_CONF_CACHE = package/openmpi/openmpi-mips32-fortran.cache\nelse ifeq ($(BR2_mips64)$(BR2_mips64el),y)\nOPENMPI_FORTRAN_CONF_CACHE = package/openmpi/openmpi-mips64-fortran.cache\nendif\nendif\n\nifneq ($(OPENMPI_FORTRAN_CONF_CACHE),)\ndefine OPENMPI_COPY_FORTRAN_CACHE\n\tcp $(OPENMPI_FORTRAN_CONF_CACHE) $(@D)/openmpi-config.cache\nendef\n\nOPENMPI_POST_PATCH_HOOKS += OPENMPI_COPY_FORTRAN_CACHE\nOPENMPI_CONF_OPTS += \\\n\t--enable-mpi-fortran=yes \\\n\t--cache-file=$(@D)/openmpi-config.cache\nelse\nOPENMPI_CONF_OPTS += --enable-mpi-fortran=no\nendif\n\nOPENMPI_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)\nOPENMPI_CFLAGS += -O0\nendif\n\nOPENMPI_CONF_ENV = CFLAGS=\"$(OPENMPI_CFLAGS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/openntpd/Config.in",
    "content": "config BR2_PACKAGE_OPENNTPD\n\tbool \"openntpd\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_USE_MMU # fork ()\n\tdepends on !BR2_PACKAGE_NTP # conflicting binaries\n\thelp\n\t  OpenNTPD is an easy to use implementation of the Network Time\n\t  Protocol. It provides the ability to sync the local clock\n\t  to remote NTP servers and can act as NTP server itself,\n\t  redistributing the local clock. It just works.\n\n\t  Crypto support is available if the LibreSSL library is\n\t  enabled.\n\n\t  http://www.openntpd.org/\n\ncomment \"openntpd needs a toolchain w/ NPTL\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_NTP\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/openntpd/S49ntp",
    "content": "#!/bin/sh\n\n[ -f /etc/ntpd.conf ] || exit 0\n\ncase \"$1\" in\n\tstart)\n\t\tprintf \"Starting openntpd: \"\n\t\tstart-stop-daemon -S -x /usr/sbin/ntpd -- -s -p /run/ntpd.pid\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping openntpd: \"\n\t\tstart-stop-daemon -K -q -p /run/ntpd.pid\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\trestart)\n\t\t\"$0\" stop\n\t\tsleep 1\n\t\t\"$0\" start\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\t;;\nesac\n"
  },
  {
    "path": "package/openntpd/ntpd.service",
    "content": "[Unit]\nDescription=OpenNTP Daemon\nAfter=network.target\nConflicts=systemd-timesyncd.service\n\n[Service]\nType=simple\n# Turn off DNSSEC validation for hostname look-ups, since those need the\n# correct time to work, but we likely won't acquire that without NTP. Let's\n# break this chicken-and-egg cycle here.\nEnvironment=SYSTEMD_NSS_RESOLVE_VALIDATE=0\nExecStart=/usr/sbin/ntpd -s -d\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/openntpd/openntpd.hash",
    "content": "# from http://ftp.openbsd.org/pub/OpenBSD/OpenNTPD/SHA256\nsha256  8582db838a399153d4a17f2a76518b638cc3020f58028575bf54127518f55a46  openntpd-6.8p1.tar.gz\n\n# Locally computed\nsha256  6c1822ee950652c12bb3773849db18794f62c63452a70d018edf23e8cba71839  COPYING\n"
  },
  {
    "path": "package/openntpd/openntpd.mk",
    "content": "################################################################################\n#\n# openntpd\n#\n################################################################################\n\nOPENNTPD_VERSION = 6.8p1\nOPENNTPD_SITE = http://ftp.openbsd.org/pub/OpenBSD/OpenNTPD\nOPENNTPD_LICENSE = MIT-like, BSD-2-Clause, BSD-3-Clause\nOPENNTPD_LICENSE_FILES = COPYING\nOPENNTPD_CPE_ID_VENDOR = openntpd\nOPENNTPD_DEPENDENCIES = host-bison\n# Need to autoreconf for our libtool patch to apply properly\nOPENNTPD_AUTORECONF = YES\n\n# Openntpd searches for tls_config_set_ca_mem which is only available\n# in LibreSSL\nifeq ($(BR2_PACKAGE_LIBRESSL),y)\nOPENNTPD_DEPENDENCIES += openssl\nendif\n\n# openntpd uses pthread functions for arc4random emulation but forgets\n# to use -pthread\nOPENNTPD_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -pthread\"\n\ndefine OPENNTPD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/openntpd/ntpd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/ntpd.service\nendef\n\ndefine OPENNTPD_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/openntpd/S49ntp \\\n\t\t$(TARGET_DIR)/etc/init.d/S49ntp\nendef\n\ndefine OPENNTPD_USERS\n\t_ntp -1 _ntp -1 * - - - Network Time Protocol daemon\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/openobex/Config.in",
    "content": "config BR2_PACKAGE_OPENOBEX\n\tbool \"openobex\"\n\thelp\n\t  Free open source implementation of the Object Exchange (OBEX)\n\t  protocol.\n\n\t  http://sourceforge.net/projects/openobex\n"
  },
  {
    "path": "package/openobex/openobex.hash",
    "content": "# From http://sourceforge.net/projects/openobex/files/openobex/1.7.2/\nsha1 4a5098a62889134cbd2b54997e7ff3e959e601e6  openobex-1.7.2-Source.tar.gz\nmd5 f6e0b6cb7dcfd731460a7e9a91429a3a  openobex-1.7.2-Source.tar.gz\n# License files, locally calculated\nsha256\te6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING\nsha256\t6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  COPYING.LIB\n"
  },
  {
    "path": "package/openobex/openobex.mk",
    "content": "################################################################################\n#\n# openobex\n#\n################################################################################\n\nOPENOBEX_VERSION = 1.7.2\nOPENOBEX_SITE = http://downloads.sourceforge.net/project/openobex/openobex/$(OPENOBEX_VERSION)\nOPENOBEX_SOURCE = openobex-$(OPENOBEX_VERSION)-Source.tar.gz\n# Libraries seems to be released under LGPL-2.1+,\n# while other material is under GPL-2.0+.\nOPENOBEX_LICENSE = GPL-2.0+/LGPL-2.1+\nOPENOBEX_LICENSE_FILES = COPYING COPYING.LIB\nOPENOBEX_DEPENDENCIES = host-pkgconf\nOPENOBEX_INSTALL_STAGING = YES\nOPENOBEX_CONF_OPTS = -DBUILD_DOCUMENTATION=OFF\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y)\nOPENOBEX_DEPENDENCIES += bluez5_utils\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nOPENOBEX_DEPENDENCIES += libusb\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nOPENOBEX_DEPENDENCIES += udev\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/openocd/0001-configure-enable-build-on-uclinux.patch",
    "content": "From 11ea78c4d253bb90296e2dd8c3f7fbf59ba397b6 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Thu, 17 Aug 2017 06:30:31 +0200\nSubject: [PATCH] configure: enable build on uclinux\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex c680bda7..1a7980a0 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -327,7 +327,7 @@ AC_ARG_ENABLE([sysfsgpio],\n   [build_sysfsgpio=$enableval], [build_sysfsgpio=no])\n \n AS_CASE([$host_os],\n-  [linux*], [],\n+  [linux*|uclinux*], [],\n   [\n     AS_IF([test \"x$build_sysfsgpio\" = \"xyes\"], [\n       AC_MSG_ERROR([sysfsgpio is only available on linux])\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/openocd/0002-configure.ac-fix-autoreconf-with-autoconf-2.70.patch",
    "content": "From 3106d16bbc45de52bc0a8b638a84aa9d7c9abc46 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 6 Oct 2021 17:43:16 +0200\nSubject: [PATCH] configure.ac: fix autoreconf with autoconf >= 2.70\n\nFix the following build failure raised with openocd and autoconf >= 2.70\ndue to\nhttp://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commit;h=aba75f6d4a9c875a9d5d90a07c6b3678db66a4bf:\n\n>>> openocd 0.11.0 Autoreconfiguring\nautoreconf: error: configure.ac: AC_INIT not found; not an autoconf script?\n\nFixes:\n - http://autobuild.buildroot.org/results/5fb7aa28703aff61ba850eac11bd35c8804528ae\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/msteveb/jimtcl/pull/209]\n---\n configure.ac | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/jimtcl/configure.ac b/jimtcl/configure.ac\nindex b70b5d8..8c45114 100644\n--- a/jimtcl/configure.ac\n+++ b/jimtcl/configure.ac\n@@ -1 +1,3 @@\n # Dummy configure.ac to make automake happy\n+AC_INIT([jimtcl], [0.80])\n+AC_OUTPUT\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/openocd/Config.in",
    "content": "config BR2_PACKAGE_OPENOCD\n\tbool \"openocd\"\n\tselect BR2_PACKAGE_JIMTCL\n\thelp\n\t  OpenOCD - Open On-Chip Debugger\n\n\t  http://openocd.sourceforge.net/\n\nif BR2_PACKAGE_OPENOCD\n\ncomment \"Adapters\"\n\nconfig BR2_PACKAGE_OPENOCD_CMSIS_DAP\n\tbool \"CMSIS-DAP compliant debuggers\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tdepends on BR2_PACKAGE_HAS_UDEV # hidapi\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # hidapi\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_HIDAPI\n\thelp\n\t  Enable support for CMSIS-DAP compliant debuggers (i.e\n\t  Atmel/Microchip EDBG, etc.)\n\nconfig BR2_PACKAGE_OPENOCD_FTDI\n\tbool \"MPSSE mode of FTDI based devices\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Enable building support for the MPSSE mode of FTDI\n\t  (FT2xxx/FT4xxx) based devices (default is auto)\n\nconfig BR2_PACKAGE_OPENOCD_STLINK\n\tbool \"ST-Link JTAG Programmer\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Enable building support for the ST-Link JTAG\n\t  Programmer (default is auto)\n\nconfig BR2_PACKAGE_OPENOCD_TI_ICDI\n\tbool \"TI ICDI JTAG Programmer\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Enable building support for the TI ICDI JTAG\n\t  Programmer (default is auto)\n\nconfig BR2_PACKAGE_OPENOCD_ULINK\n\tbool \"Keil ULINK JTAG Programmer\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Enable building support for the Keil ULINK JTAG\n\t  Programmer (default is auto)\n\nconfig BR2_PACKAGE_OPENOCD_UBLASTER2\n\tbool \"Altera USB-Blaster II Compatible\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Enable building support for the Altera USB-Blaster\n\t  II Compatible (default is auto)\n\nconfig BR2_PACKAGE_OPENOCD_JLINK\n\tbool \"Segger J-Link JTAG Programmer\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Segger J-Link JTAG Programmer and clone such as Atmel\n\t  SAM-ICE\n\nconfig BR2_PACKAGE_OPENOCD_OSDBM\n\tbool \"OSDBM JTAG (only) Programmer\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Enable building support for the OSBDM (JTAG only)\n\t  Programmer (default is auto)\n\nconfig BR2_PACKAGE_OPENOCD_OPENDOUS\n\tbool \"eStick/opendous JTAG Programmer\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Enable building support for the eStick/opendous JTAG\n\t  Programmer (default is auto)\n\nconfig BR2_PACKAGE_OPENOCD_AICE\n\tbool \"Andes JTAG Programmer\"\n\tdepends on BR2_USE_MMU # use fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Enable building support for the Andes JTAG\n\t  Programmer (default is auto)\n\nconfig BR2_PACKAGE_OPENOCD_VSLLINK\n\tbool \"Versaloon-Link JTAG Programmer\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\thelp\n\t  Enable building support for the Versaloon-Link JTAG\n\t  Programmer (default is auto)\n\nconfig BR2_PACKAGE_OPENOCD_USBPROG\n\tbool \"USBProg JTAG Programmer\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\thelp\n\t  Enable building support for the USBProg JTAG\n\t  Programmer (default is auto)\n\nconfig BR2_PACKAGE_OPENOCD_RLINK\n\tbool \"Raisonance RLink JTAG Programmer\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\thelp\n\t  Enable building support for the Raisonance RLink\n\t  JTAG Programmer (default is auto)\n\nconfig BR2_PACKAGE_OPENOCD_ARMEW\n\tbool \"Olimex ARM-JTAG-EW Programmer\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\thelp\n\t  Enable building support for the Olimex ARM-JTAG-EW\n\t  Programmer (default is auto)\n\nconfig BR2_PACKAGE_OPENOCD_XDS110\n\tbool \"TI XDS110 Debug Probe\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Enable building support for the TI XDS110 Debug Probe.\n\nconfig BR2_PACKAGE_OPENOCD_PARPORT\n\tbool \"pc parallel port driver\"\n\thelp\n\t  Enable building the pc parallel port driver\n\nconfig BR2_PACKAGE_OPENOCD_VPI\n\tbool \"JTAG VPI\"\n\thelp\n\t  Enable building support for JTAG VPI\n\nconfig BR2_PACKAGE_OPENOCD_UBLASTER\n\tbool \"Altera USB-Blaster\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb\n\tselect BR2_PACKAGE_LIBFTDI1\n\thelp\n\t  Enable building support for the Altera USB-Blaster\n\t  using the libftdi driver, opensource alternate of\n\t  FTD2XX\n\nconfig BR2_PACKAGE_OPENOCD_AMTJT\n\tbool \"Amontec JTAG-Accelerator\"\n\thelp\n\t  Enable building the Amontec JTAG-Accelerator driver\n\nif BR2_arm\n\nconfig BR2_PACKAGE_OPENOCD_EP93XX\n\tbool \"EP93xx based SBCs\"\n\thelp\n\t  Enable building support for EP93xx based SBCs\n\nconfig BR2_PACKAGE_OPENOCD_AT91RM\n\tbool \"AT91RM9200 based SBCs\"\n\thelp\n\t  Enable building support for AT91RM9200 based SBCs\n\nconfig BR2_PACKAGE_OPENOCD_BCM2835\n\tbool \"bitbanging on BCM2835\"\n\thelp\n\t  Enable building support for bitbanging on BCM2835\n\t  (as found in Raspberry Pi)\n\nendif # BR2_arm\n\nconfig BR2_PACKAGE_OPENOCD_GW16012\n\tbool \"Gateworks GW16012 JTAG Programmer\"\n\thelp\n\t  Enable building support for the Gateworks GW16012\n\t  JTAG Programmer\n\nconfig BR2_PACKAGE_OPENOCD_PRESTO\n\tbool \"ASIX Presto Programmer\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb\n\tselect BR2_PACKAGE_LIBFTDI1\n\thelp\n\t  Enable building support for ASIX Presto Programmer\n\t  using the libftdi driver\n\nconfig BR2_PACKAGE_OPENOCD_OPENJTAG\n\tbool \"OpenJTAG Programmer\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb\n\tselect BR2_PACKAGE_LIBFTDI1\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT # needs usb.h\n\thelp\n\t  Enable building support for the OpenJTAG Programmer\n\t  with ftdi driver\n\nconfig BR2_PACKAGE_OPENOCD_BUSPIRATE\n\tbool \"Buspirate\"\n\thelp\n\t  Enable building support for the Buspirate\n\nconfig BR2_PACKAGE_OPENOCD_SYSFS\n\tbool \"programming via sysfs gpios\"\n\thelp\n\t  Enable building support for programming driven via\n\t  sysfs gpios.\n\n# Many adapters need libusb or libusb-compat, which require threads and\n# gcc >= 4.9 but we don't want to duplicate this comment for all\n# adapters that select libusb or libusb-compat.\ncomment \"many openocd adapters needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\ncomment \"xds110 adapter support needs toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nendif # BR2_PACKAGE_OPENOCD\n"
  },
  {
    "path": "package/openocd/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_OPENOCD\n\tbool \"host openocd\"\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb\n\thelp\n\t  OpenOCD - Open On-Chip Debugger\n\n\t  http://openocd.org/\n\ncomment \"host openocd needs a toolchain w/ host gcc >= 4.9\"\n\tdepends on !BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/openocd/openocd.hash",
    "content": "# From http://sourceforge.net/projects/openocd/files/openocd/0.11.0/\nsha256  43a3ce734aff1d3706ad87793a9f3a5371cb0e357f0ffd0a151656b06b3d1e7d  openocd-0.11.0.tar.bz2\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/openocd/openocd.mk",
    "content": "################################################################################\n#\n# openocd\n#\n################################################################################\n\nOPENOCD_VERSION = 0.11.0\nOPENOCD_SOURCE = openocd-$(OPENOCD_VERSION).tar.bz2\nOPENOCD_SITE = http://sourceforge.net/projects/openocd/files/openocd/$(OPENOCD_VERSION)\nOPENOCD_LICENSE = GPL-2.0+\nOPENOCD_LICENSE_FILES = COPYING\n# 0002-configure-enable-build-on-uclinux.patch patches configure.ac\nOPENOCD_AUTORECONF = YES\nOPENOCD_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -std=gnu99\"\n\nOPENOCD_CONF_OPTS = \\\n\t--oldincludedir=$(STAGING_DIR)/usr/include \\\n\t--includedir=$(STAGING_DIR)/usr/include \\\n\t--disable-doxygen-html \\\n\t--disable-internal-jimtcl \\\n\t--disable-shared \\\n\t--enable-dummy \\\n\t--disable-werror\n\n# Rely on the Config.in options of each individual adapter selecting\n# the dependencies they need.\n\nOPENOCD_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tjimtcl \\\n\t$(if $(BR2_PACKAGE_LIBFTDI1),libftdi1) \\\n\t$(if $(BR2_PACKAGE_LIBUSB),libusb) \\\n\t$(if $(BR2_PACKAGE_LIBUSB_COMPAT),libusb-compat) \\\n\t$(if $(BR2_PACKAGE_LIBHID),libhid) \\\n\t$(if $(BR2_PACKAGE_HIDAPI),hidapi) \\\n\t$(if $(BR2_PACKAGE_LIBGPIOD),libgpiod)\n\n# Adapters\nOPENOCD_CONF_OPTS += \\\n\t$(if $(BR2_PACKAGE_OPENOCD_FTDI),--enable-ftdi,--disable-ftdi) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_STLINK),--enable-stlink,--disable-stlink) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_TI_ICDI),--enable-ti-icdi,--disable-ti-icdi) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_ULINK),--enable-ulink,--disable-ulink) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_UBLASTER2),--enable-usb-blaster-2,--disable-usb-blaster-2) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_JLINK),--enable-jlink,--disable-jlink) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_OSDBM),--enable-osbdm,--disable-osbdm) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_OPENDOUS),--enable-opendous,--disable-opendous) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_AICE),--enable-aice,--disable-aice) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_VSLLINK),--enable-vsllink,--disable-vsllink) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_USBPROG),--enable-usbprog,--disable-usbprog) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_RLINK),--enable-rlink,--disable-rlink) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_XDS110),--enable-xds110,--disable-xds110) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_ARMEW),--enable-armjtagew,--disable-armjtagew) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_CMSIS_DAP),--enable-cmsis-dap,--disable-cmsis-dap) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_PARPORT),--enable-parport,--disable-parport) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_VPI),--enable-jtag_vpi,--disable-jtag_vpi) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_UBLASTER),--enable-usb-blaster,--disable-usb-blaster) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_AMTJT),--enable-amtjtagaccel,--disable-amjtagaccel) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_ZY1000_MASTER),--enable-zy1000-master,--disable-zy1000-master) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_ZY1000),--enable-zy1000,--disable-zy1000) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_EP93XX),--enable-ep93xx,--disable-ep93xx) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_AT91RM),--enable-at91rm9200,--disable-at91rm9200) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_BCM2835),--enable-bcm2835gpio,--disable-bcm2835gpio) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_GW16012),--enable-gw16012,--disable-gw16012) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_PRESTO),--enable-presto,--disable-presto) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_OPENJTAG),--enable-openjtag,--disable-openjtag) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_BUSPIRATE),--enable-buspirate,--disable-buspirate) \\\n\t$(if $(BR2_PACKAGE_OPENOCD_SYSFS),--enable-sysfsgpio,--disable-sysfsgpio)\n\n# Enable all configuration options for host build.\n#\n# Note that deprecated options have been removed. CMSIS_DAP needs\n# hidapi (currently not included in buildroot) and zy1000 stuff fails\n# to build, so they've been removed too.\n#\nHOST_OPENOCD_CONF_OPTS = \\\n\t--enable-ftdi \\\n\t--enable-stlink \\\n\t--enable-ti-icdi \\\n\t--enable-ulink \\\n\t--enable-usb-blaster-2 \\\n\t--enable-jlink \\\n\t--enable-osbdm \\\n\t--enable-opendous \\\n\t--enable-aice \\\n\t--enable-vsllink \\\n\t--enable-usbprog \\\n\t--enable-rlink \\\n\t--enable-armjtagew \\\n\t--enable-parport \\\n\t--enable-jtag_vpi \\\n\t--enable-usb-blaster \\\n\t--enable-amtjtagaccel \\\n\t--enable-gw16012 \\\n\t--enable-presto \\\n\t--enable-openjtag \\\n\t--enable-buspirate \\\n\t--enable-sysfsgpio \\\n\t--oldincludedir=$(HOST_DIR)/include \\\n\t--includedir=$(HOST_DIR)/include \\\n\t--disable-doxygen-html \\\n\t--disable-internal-jimtcl \\\n\t--disable-shared \\\n\t--enable-dummy \\\n\t--disable-werror\n\nHOST_OPENOCD_DEPENDENCIES = host-jimtcl host-libftdi host-libusb host-libusb-compat\n\n# Avoid documentation rebuild. On PowerPC64(le), we patch the\n# configure script. Due to this, the version.texi files gets\n# regenerated, and then since it has a newer date than openocd.info,\n# openocd build system rebuilds the documentation. Unfortunately, this\n# documentation rebuild fails on old machines. We work around this by\n# faking the date of the generated version.texi file, to make the\n# build system believe the documentation doesn't need to be\n# regenerated.\ndefine OPENOCD_FIX_VERSION_TEXI\n\ttouch -r $(@D)/doc/openocd.info $(@D)/doc/version.texi\nendef\nOPENOCD_POST_BUILD_HOOKS += OPENOCD_FIX_VERSION_TEXI\nHOST_OPENOCD_POST_BUILD_HOOKS += OPENOCD_FIX_VERSION_TEXI\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/openpgm/0001-Rename-openpgm-5.2.pc.in.patch",
    "content": "From 240634b1afb968a051f8c68696eae2a582a02450 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 31 Aug 2020 20:16:25 +0200\nSubject: [PATCH] Rename openpgm-5.2.pc.in\n\nThis will fix the following build failure:\n\nconfig.status: error: cannot find input file: `openpgm-5.3.pc.in'\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/steve-o/openpgm/pull/66]\n---\n openpgm/pgm/openpgm-5.2.pc.in | 12 ------------\n openpgm/pgm/openpgm-5.3.pc.in | 12 ++++++++++++\n 2 files changed, 12 insertions(+), 12 deletions(-)\n delete mode 100644 openpgm/pgm/openpgm-5.2.pc.in\n create mode 100644 openpgm/pgm/openpgm-5.3.pc.in\n\ndiff --git a/openpgm/pgm/openpgm-5.2.pc.in b/openpgm/pgm/openpgm-5.2.pc.in\ndeleted file mode 100644\nindex 9e30a6d..0000000\n--- a/openpgm/pgm/openpgm-5.2.pc.in\n+++ /dev/null\n@@ -1,12 +0,0 @@\n-prefix=@prefix@\n-exec_prefix=@exec_prefix@\n-libdir=@libdir@\n-includedir=@includedir@\n-\n-Name: OpenPGM\n-Description: PGM Protocol Library.\n-Version: @PACKAGE_VERSION@\n-# packagers may wish to move @LIBS@ to Libs.private for platforms with\n-# versions of pkg-config that support static linking.\n-Libs: -L${libdir} -lpgm @LIBS@\n-Cflags: -I${includedir}/pgm-@VERSION_MAJOR@.@VERSION_MINOR@\ndiff --git a/openpgm/pgm/openpgm-5.3.pc.in b/openpgm/pgm/openpgm-5.3.pc.in\nnew file mode 100644\nindex 0000000..9e30a6d\n--- /dev/null\n+++ b/openpgm/pgm/openpgm-5.3.pc.in\n@@ -0,0 +1,12 @@\n+prefix=@prefix@\n+exec_prefix=@exec_prefix@\n+libdir=@libdir@\n+includedir=@includedir@\n+\n+Name: OpenPGM\n+Description: PGM Protocol Library.\n+Version: @PACKAGE_VERSION@\n+# packagers may wish to move @LIBS@ to Libs.private for platforms with\n+# versions of pkg-config that support static linking.\n+Libs: -L${libdir} -lpgm @LIBS@\n+Cflags: -I${includedir}/pgm-@VERSION_MAJOR@.@VERSION_MINOR@\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/openpgm/0002-openpgm-pgm-checksum.c-fix-build-with-32-bits-MMX.patch",
    "content": "From b7fa865fa6b06d97d424c500fd1c4bc44c096359 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 1 Nov 2020 22:46:18 +0100\nSubject: [PATCH] openpgm/pgm/checksum.c: fix build with 32 bits MMX\n\nBuild with i386-pentium-mmx or i686 is broken since version 5-3-128 and\nhttps://github.com/steve-o/openpgm/commit/b276dc15be5d4e6e1143b9de25d09f63f9c85135\nbecause _mm_cvtm64_si64 is undefined resulting in the following build\nfailure for example on zeromq:\n\n/srv/storage/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/i586-buildroot-linux-musl/8.3.0/../../../../i586-buildroot-linux-musl/bin/ld: /srv/storage/autobuild/run/instance-3/output-1/host/i586-buildroot-linux-musl/sysroot/usr/lib32/libpgm-5.3.so.0: undefined reference to `_mm_cvtm64_si64'\n\nSo use the fallback if __x86_64__ is not defined\n\nFixes:\n - http://autobuild.buildroot.org/results/01d9be37e8a743307128f53f41785654c9971e1a\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: commit b7fa865fa6b06d97d424c500fd1c4bc44c096359\n\n openpgm/pgm/checksum.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/openpgm/pgm/checksum.c b/openpgm/pgm/checksum.c\nindex fef89bce237c..8d8dd3f32305 100644\n--- a/openpgm/pgm/checksum.c\n+++ b/openpgm/pgm/checksum.c\n@@ -948,7 +948,7 @@ do_csumcpy_mmx (\n \n \t\tsum = _mm_add_pi32 (sum, lo);\n \t\tsum = _mm_add_pi32 (sum, hi);\n-#if 1\n+#if defined(__x86_64__)\n \t\t*(int64_t*)dst = _mm_cvtm64_si64 (tmp);\n #else\t\t\n \t\t((int*)dst)[1] = _mm_cvtsi64_si32 (tmp);\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/openpgm/Config.in",
    "content": "config BR2_PACKAGE_OPENPGM\n\tbool \"openpgm\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  OpenPGM is an open source implementation of the Pragmatic\n\t  General Multicast (PGM) specification in RFC 3208 available at\n\t  www.ietf.org. PGM is a reliable and scalable multicast\n\t  protocol that enables receivers to detect loss, request\n\t  retransmission of lost data, or notify an application of\n\t  unrecoverable loss.\n\n\t  https://github.com/steve-o/openpgm/\n\ncomment \"openpgm needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !(BR2_TOOLCHAIN_HAS_THREADS && BR2_USE_WCHAR)\n"
  },
  {
    "path": "package/openpgm/openpgm.hash",
    "content": "# Locally calculated\nsha256  8d707ef8dda45f4a7bc91016d7f2fed6a418637185d76c7ab30b306499c6d393  openpgm-5-3-128.tar.gz\nsha256  4a7d4ec71fa60969399fd4caad64d5a3003fee2775445f271a5a36a8ae743a29  openpgm/pgm/LICENSE\n"
  },
  {
    "path": "package/openpgm/openpgm.mk",
    "content": "################################################################################\n#\n# openpgm\n#\n################################################################################\n\nOPENPGM_VERSION = 5-3-128\nOPENPGM_SITE = $(call github,steve-o,openpgm,release-$(OPENPGM_VERSION))\nOPENPGM_LICENSE = LGPL-2.1+\nOPENPGM_LICENSE_FILES = openpgm/pgm/LICENSE\nOPENPGM_INSTALL_STAGING = YES\nOPENPGM_SUBDIR = openpgm/pgm\nOPENPGM_AUTORECONF = YES\n\nOPENPGM_CONF_ENV = \\\n\tac_cv_file__proc_cpuinfo=yes \\\n\tac_cv_file__dev_rtc=no \\\n\tac_cv_file__dev_hpet=no\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch",
    "content": "From 16230b7f51bff2bdf061fa80e9a49c807596bb92 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Wed, 25 May 2016 15:57:10 +0200\nSubject: [PATCH] install the stack libraries to \"lib\" subdirectory\n\nUsing '.' to install the stack libraries is not correct since\nit will install them to /usr/.\n\nls /usr/liboplkmnapp-kernelintf.so\n\nFix this by using 'lib' instead of '.'\n\nThe problem with the openpowerlink build system is that it expect\nthe stack directory to be a \"local staging\" directory which\ncontains headers and libraries. So the libraries build by the\nstack project are installed in stack/lib by default.\n\nThis is wrong to do that because it becomes difficult to package\nopenpowerlink for normal Linux systems.\n\nBuildroot like others build system expect from a packaged software\nto install libraries and headers build/provided in a staging\ndirectory.\n\nIt seems that CMAKE_INSTALL_PREFIX is misused by the default value\n\"${CMAKE_CURRENT_SOURCE_DIR}/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR}\"\nsince it already contains the lib directory and therefore the\nentire build system is messed up.\n\nIt seems that the openpowerlink's build system doesn't allow/support\nCMAKE_INSTALL_PREFIX to be set externally\n(which is the standard approach).\n\nThe issue has been reported [1] upstream and a build system\nrefactoring is needed to fix this properly.\n\n[1] http://sourceforge.net/p/openpowerlink/discussion/newbie/thread/3f13af65/#8f80/a50a/4649/f07c\n\n[rebase on v2.5.0]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n stack/proj/linux/liboplkcn-sim/CMakeLists.txt           | 2 +-\n stack/proj/linux/liboplkcn/CMakeLists.txt               | 2 +-\n stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt | 2 +-\n stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt   | 2 +-\n stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt       | 2 +-\n stack/proj/linux/liboplkmn-sim/CMakeLists.txt           | 2 +-\n stack/proj/linux/liboplkmn/CMakeLists.txt               | 2 +-\n stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt | 2 +-\n stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt  | 2 +-\n stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt   | 2 +-\n stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt       | 2 +-\n 11 files changed, 11 insertions(+), 11 deletions(-)\n\ndiff --git a/stack/proj/linux/liboplkcn-sim/CMakeLists.txt b/stack/proj/linux/liboplkcn-sim/CMakeLists.txt\nindex 2b3da16..ddb3e92 100644\n--- a/stack/proj/linux/liboplkcn-sim/CMakeLists.txt\n+++ b/stack/proj/linux/liboplkcn-sim/CMakeLists.txt\n@@ -96,4 +96,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES})\n TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX \"_d\")\n-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .)\n+INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)\ndiff --git a/stack/proj/linux/liboplkcn/CMakeLists.txt b/stack/proj/linux/liboplkcn/CMakeLists.txt\nindex 3be6c52..cf1b1dd 100644\n--- a/stack/proj/linux/liboplkcn/CMakeLists.txt\n+++ b/stack/proj/linux/liboplkcn/CMakeLists.txt\n@@ -90,4 +90,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES})\n TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX \"_d\")\n-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .)\n+INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)\ndiff --git a/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt b/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt\nindex 904de6c..d8713a8 100644\n--- a/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt\n+++ b/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt\n@@ -83,4 +83,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES})\n TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX \"_d\")\n-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .)\n+INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)\ndiff --git a/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt b/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt\nindex e2514cf..a4e2b75 100644\n--- a/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt\n+++ b/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt\n@@ -83,4 +83,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES})\n TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX \"_d\")\n-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .)\n+INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)\ndiff --git a/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt b/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt\nindex 98f068c..bb20006 100644\n--- a/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt\n+++ b/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt\n@@ -76,4 +76,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES})\n TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX \"_d\")\n-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .)\n+INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)\ndiff --git a/stack/proj/linux/liboplkmn-sim/CMakeLists.txt b/stack/proj/linux/liboplkmn-sim/CMakeLists.txt\nindex eb6396a..5beaa07 100644\n--- a/stack/proj/linux/liboplkmn-sim/CMakeLists.txt\n+++ b/stack/proj/linux/liboplkmn-sim/CMakeLists.txt\n@@ -91,4 +91,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES})\n TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX \"_d\")\n-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .)\n+INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)\ndiff --git a/stack/proj/linux/liboplkmn/CMakeLists.txt b/stack/proj/linux/liboplkmn/CMakeLists.txt\nindex cf7927f..6b19557 100644\n--- a/stack/proj/linux/liboplkmn/CMakeLists.txt\n+++ b/stack/proj/linux/liboplkmn/CMakeLists.txt\n@@ -89,4 +89,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES})\n TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX \"_d\")\n-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .)\n+INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)\ndiff --git a/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt b/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt\nindex 9daa2df..bfccb25 100644\n--- a/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt\n+++ b/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt\n@@ -82,4 +82,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES})\n TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX \"_d\")\n-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .)\n+INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)\ndiff --git a/stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt b/stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt\nindex 0135f46..83128eb 100644\n--- a/stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt\n+++ b/stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt\n@@ -91,4 +91,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES})\n TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX \"_d\")\n-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .)\n+INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)\ndiff --git a/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt b/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt\nindex cd97882..aaaa526 100644\n--- a/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt\n+++ b/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt\n@@ -82,4 +82,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES})\n TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX \"_d\")\n-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .)\n+INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)\ndiff --git a/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt b/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt\nindex 0c29087..1783134 100644\n--- a/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt\n+++ b/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt\n@@ -79,4 +79,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES})\n TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL})\n SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX \"_d\")\n-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .)\n+INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)\n-- \n2.9.4\n\n"
  },
  {
    "path": "package/openpowerlink/0002-cmake-install-oplk-headers-files.patch",
    "content": "From f7679a4083de3a9dba80cd719ad4904fbade349b Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Wed, 25 May 2016 15:57:29 +0200\nSubject: [PATCH] cmake: install oplk headers files\n\nIn order to be able to link a third party application\nwith openpowerlink libraries, we need to install the\noplk headers files related to openpowerlink stack.\n\nInstall all headers file from STACK_INCLUDE_DIR/oplk.\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n stack/CMakeLists.txt | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/stack/CMakeLists.txt b/stack/CMakeLists.txt\nindex 69454f2..45f131d 100644\n--- a/stack/CMakeLists.txt\n+++ b/stack/CMakeLists.txt\n@@ -110,3 +110,8 @@ ELSEIF((CMAKE_SYSTEM_NAME STREQUAL \"Generic\") AND (CMAKE_SYSTEM_PROCESSOR STREQU\n ELSE()\n     MESSAGE(FATAL_ERROR \"Unknown Platform and processor combination ${CMAKE_SYSTEM_NAME} and ${CMAKE_SYSTEM_PROCESSOR}!!\")\n ENDIF()\n+\n+################################################################################\n+# Install oplk headers files\n+################################################################################\n+INSTALL(DIRECTORY ${STACK_INCLUDE_DIR}/oplk DESTINATION \"include\")\n-- \n2.9.4\n\n"
  },
  {
    "path": "package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch",
    "content": "From cd0945a323cecb638ce56f2e3d7fb4e8c004b98b Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Wed, 25 May 2016 15:59:20 +0200\nSubject: [PATCH] Add top level CMakeLists.txt\n\nThis CMakeLists.txt can be used to build openpowerlink\nusing a automated build system.\n\nDon't use FIND_LIBRARY when the stack is built from a top\nlevel build (ie CFG_OPLK_LIB is ON).\nFor a top level build, CMake will automatically add a build\ndependency on oplk libraries for building demos applications.\n\nAlso replace OPLKLIB_DEBUG by OPLKLIB in OPLK_LINK_LIBRARIES macro\nif CMAKE_BUILD_TYPE is \"Debug\", otherwise TARGET_LINK_LIBRARIES can't\nfind the openpowerlink library.\nThis issue may be related to:\nhttps://github.com/OpenAutomationTechnologies/openPOWERLINK_V2/issues/109\n\nFixes:\nhttp://autobuild.buildroot.net/results/da4/da445b65cb136d71577f04e3a17fdb2ef6302a9b\n\nThis patch has not been accepted by upstream:\nhttps://github.com/openPOWERLINK/openPOWERLINK_V2/pull/57\n\nAdd PCIe support (v2.3.2)\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n CMakeLists.txt                               | 42 +++++++++++++++++\n apps/common/cmake/findoplklib.cmake          | 68 +++++++++++++++-------------\n apps/common/cmake/linkoplklib.cmake          |  2 +-\n drivers/linux/drv_daemon_pcap/CMakeLists.txt | 12 +++--\n 4 files changed, 89 insertions(+), 35 deletions(-)\n create mode 100644 CMakeLists.txt\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nnew file mode 100644\nindex 0000000..28d4e7a\n--- /dev/null\n+++ b/CMakeLists.txt\n@@ -0,0 +1,42 @@\n+\n+CMAKE_MINIMUM_REQUIRED (VERSION 2.8.7)\n+\n+#### LIB ####\n+\n+IF (CFG_OPLK_LIB)\n+    ADD_SUBDIRECTORY(\"stack\")\n+ENDIF (CFG_OPLK_LIB)\n+\n+#### Linux kernel Ethernet module  ####\n+\n+IF (CFG_KERNEL_DRIVERS)\n+    ADD_SUBDIRECTORY(\"drivers/linux/drv_kernelmod_edrv\")\n+ENDIF (CFG_KERNEL_DRIVERS)\n+\n+#### Linux kernel PCIe module  ####\n+\n+IF (CFG_KERNEL_PCIE_DRIVERS)\n+    ADD_SUBDIRECTORY(\"drivers/linux/drv_kernelmod_pcie\")\n+ENDIF (CFG_KERNEL_PCIE_DRIVERS)\n+\n+#### Pcap userspace driver  ####\n+\n+IF (CFG_PCAP_DAEMON)\n+    ADD_SUBDIRECTORY(\"drivers/linux/drv_daemon_pcap\")\n+ENDIF (CFG_PCAP_DAEMON)\n+\n+#### OpenPowerLink Demos  ####\n+\n+# Add subdirectory of CN console demo application\n+IF (CFG_DEMO_CN_CONSOLE)\n+    ADD_SUBDIRECTORY(\"apps/demo_cn_console\")\n+ENDIF (CFG_DEMO_CN_CONSOLE)\n+\n+# Add subdirectory of MN console demo application\n+IF (CFG_DEMO_MN_CONSOLE)\n+    ADD_SUBDIRECTORY(\"apps/demo_mn_console\")\n+ENDIF (CFG_DEMO_MN_CONSOLE)\n+\n+IF (CFG_DEMO_MN_QT)\n+    ADD_SUBDIRECTORY(\"apps/demo_mn_qt\")\n+ENDIF (CFG_DEMO_MN_QT)\ndiff --git a/apps/common/cmake/findoplklib.cmake b/apps/common/cmake/findoplklib.cmake\nindex f7e710f..b8b04c5 100644\n--- a/apps/common/cmake/findoplklib.cmake\n+++ b/apps/common/cmake/findoplklib.cmake\n@@ -85,36 +85,42 @@ MACRO(FIND_OPLK_LIBRARY OPLK_NODE_TYPE)\n     # Set oplk library directory\n     SET(OPLKLIB_DIR ${OPLK_BASE_DIR}/stack/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR})\n \n-    IF((CMAKE_GENERATOR MATCHES \"Visual Studio\") OR (CMAKE_BUILD_TYPE STREQUAL \"Release\"))\n-        # Search for release library\n-        UNSET(OPLKLIB CACHE)\n-        MESSAGE(STATUS \"Searching for LIBRARY ${OPLKLIB_NAME} in ${OPLKLIB_DIR}\")\n-        FIND_LIBRARY(OPLKLIB NAME ${OPLKLIB_NAME}\n-                             HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME})\n-\n-        IF(CMAKE_SYSTEM_NAME STREQUAL \"Windows\")\n-\n-            UNSET(OPLKDLL CACHE)\n-            FIND_PROGRAM(OPLKDLL NAME ${OPLKLIB_NAME}.dll\n-                                 HINTS ${OPLKLIB_DIR})\n-\n-        ENDIF(CMAKE_SYSTEM_NAME STREQUAL \"Windows\")\n-    ENDIF()\n-\n-    IF((CMAKE_GENERATOR MATCHES \"Visual Studio\") OR (CMAKE_BUILD_TYPE STREQUAL \"Debug\"))\n-        # Search for debug library\n-        UNSET(OPLKLIB_DEBUG CACHE)\n-        MESSAGE(STATUS \"Searching for LIBRARY ${OPLKLIB_DEBUG_NAME} in ${OPLKLIB_DIR}\")\n-        FIND_LIBRARY(OPLKLIB_DEBUG NAME ${OPLKLIB_DEBUG_NAME}\n-                                   HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME})\n-\n-        IF(CMAKE_SYSTEM_NAME STREQUAL \"Windows\")\n-\n-            UNSET(OPLKDLL_DEBUG CACHE)\n-            FIND_PROGRAM(OPLKDLL_DEBUG NAME ${OPLKLIB_DEBUG_NAME}.dll\n-                                       HINTS ${OPLKLIB_DIR})\n-\n-        ENDIF(CMAKE_SYSTEM_NAME STREQUAL \"Windows\")\n-    ENDIF()\n+    # Don't look for oplk libraries for a top level build\n+    IF(CFG_OPLK_LIB)\n+        SET(OPLKLIB ${OPLKLIB_NAME})\n+        SET(OPLKLIB_DEBUG ${OPLKLIB_DEBUG_NAME})\n+    ELSE(CFG_OPLK_LIB)\n+        IF((CMAKE_GENERATOR MATCHES \"Visual Studio\") OR (CMAKE_BUILD_TYPE STREQUAL \"Release\"))\n+            # Search for release library\n+            UNSET(OPLKLIB CACHE)\n+            MESSAGE(STATUS \"Searching for LIBRARY ${OPLKLIB_NAME} in ${OPLKLIB_DIR}\")\n+            FIND_LIBRARY(OPLKLIB NAME ${OPLKLIB_NAME}\n+                                HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME})\n+\n+            IF(CMAKE_SYSTEM_NAME STREQUAL \"Windows\")\n+\n+                UNSET(OPLKDLL CACHE)\n+                FIND_PROGRAM(OPLKDLL NAME ${OPLKLIB_NAME}.dll\n+                                    HINTS ${OPLKLIB_DIR})\n+\n+            ENDIF(CMAKE_SYSTEM_NAME STREQUAL \"Windows\")\n+        ENDIF()\n+\n+        IF((CMAKE_GENERATOR MATCHES \"Visual Studio\") OR (CMAKE_BUILD_TYPE STREQUAL \"Debug\"))\n+            # Search for debug library\n+            UNSET(OPLKLIB_DEBUG CACHE)\n+            MESSAGE(STATUS \"Searching for LIBRARY ${OPLKLIB_DEBUG_NAME} in ${OPLKLIB_DIR}\")\n+            FIND_LIBRARY(OPLKLIB_DEBUG NAME ${OPLKLIB_DEBUG_NAME}\n+                                    HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME})\n+\n+            IF(CMAKE_SYSTEM_NAME STREQUAL \"Windows\")\n+\n+                UNSET(OPLKDLL_DEBUG CACHE)\n+                FIND_PROGRAM(OPLKDLL_DEBUG NAME ${OPLKLIB_DEBUG_NAME}.dll\n+                                        HINTS ${OPLKLIB_DIR})\n+\n+            ENDIF(CMAKE_SYSTEM_NAME STREQUAL \"Windows\")\n+        ENDIF()\n+    ENDIF(CFG_OPLK_LIB)\n \n ENDMACRO(FIND_OPLK_LIBRARY)\ndiff --git a/apps/common/cmake/linkoplklib.cmake b/apps/common/cmake/linkoplklib.cmake\nindex 49aab66..d9fd418 100644\n--- a/apps/common/cmake/linkoplklib.cmake\n+++ b/apps/common/cmake/linkoplklib.cmake\n@@ -33,7 +33,7 @@ MACRO(OPLK_LINK_LIBRARIES EXECUTABLE_NAME)\n         TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} optimized ${OPLKLIB} debug ${OPLKLIB_DEBUG})\n     ELSE()\n         IF(${CMAKE_BUILD_TYPE} STREQUAL \"Debug\")\n-            TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} debug ${OPLKLIB_DEBUG})\n+            TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} debug ${OPLKLIB})\n         ELSE ()\n             TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} optimized ${OPLKLIB})\n         ENDIF()\ndiff --git a/drivers/linux/drv_daemon_pcap/CMakeLists.txt b/drivers/linux/drv_daemon_pcap/CMakeLists.txt\nindex 2b4a2c1..ecceb4c 100644\n--- a/drivers/linux/drv_daemon_pcap/CMakeLists.txt\n+++ b/drivers/linux/drv_daemon_pcap/CMakeLists.txt\n@@ -109,9 +109,15 @@ ENDIF()\n SET(OPLKLIB_DIR ${OPLK_BASE_DIR}/stack/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR})\n SET(OPLKLIB_INCDIR ${OPLK_BASE_DIR}/stack/proj/${SYSTEM_NAME_DIR}/lib${LIB_NAME})\n \n-UNSET(OPLKLIB CACHE)\n-FIND_LIBRARY(OPLKLIB NAME ${LIB_NAME}${BUILD_TYPE_EXT}\n-                     HINTS ${OPLKLIB_DIR})\n+# Don't look for oplk libraries for a top level build\n+IF(CFG_OPLK_LIB)\n+    SET(OPLKLIB ${LIB_NAME}${BUILD_TYPE_EXT})\n+ELSE(CFG_OPLK_LIB)\n+    UNSET(OPLKLIB CACHE)\n+    FIND_LIBRARY(OPLKLIB NAME ${LIB_NAME}${BUILD_TYPE_EXT}\n+                        HINTS ${OPLKLIB_DIR})\n+ENDIF(CFG_OPLK_LIB)\n+\n INCLUDE_DIRECTORIES(${OPLKLIB_INCDIR})\n \n SET(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -Wall -Wextra -pedantic -std=c99 -pthread -fno-strict-aliasing\")\n-- \n2.9.4\n\n"
  },
  {
    "path": "package/openpowerlink/Config.in",
    "content": "comment \"openpowerlink needs a toolchain w/ C++, threads\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_OPENPOWERLINK\n\tbool \"openpowerlink\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_i386 || BR2_x86_64\n\thelp\n\t  openPOWERLINK is an Open Source Industrial Ethernet stack\n\t  implementing the POWERLINK protocol for Managing Node (MN,\n\t  POWERLINK Master) and Controlled Node (CN, POWERLINK Slave).\n\n\t  It is provided by\n\t  SYSTEC electronic (http://www.systec-electronic.com),\n\t  B&R (http://www.br-automation.com) and\n\t  Kalycito (http://www.kalycito.com).\n\n\t  http://openpowerlink.sourceforge.net/web/\n\nif BR2_PACKAGE_OPENPOWERLINK\n\nchoice\n\tprompt \"MN/CN mode\"\n\nconfig BR2_PACKAGE_OPENPOWERLINK_MN\n\tbool \"Managing Node\"\n\thelp\n\t  Enable Managing Node (master) mode\n\nconfig BR2_PACKAGE_OPENPOWERLINK_CN\n\tbool \"Controlled Node\"\n\thelp\n\t  Enable Controlled Node (slave) mode\n\nendchoice\n\nchoice\n\tprompt \"stack type\"\n\nconfig BR2_PACKAGE_OPENPOWERLINK_STACK_MONOLITHIC_USER_STACK_LIB\n\tbool \"linked into application\"\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  Compile a monolithic openPOWERLINK library. The library\n\t  contains an Ethernet driver which is using the PCAP library\n\t  for accessing the network. No kernel-side driver is needed.\n\nconfig BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB\n\tbool \"user-space pcap daemon\"\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  Compile openPOWERLINK application library which contains the\n\t  interface to a Linux user space driver, and the Linux user\n\t  space driver. It is used for implementing a multi-process\n\t  solution where the openPOWERLINK layer is running as a\n\t  separate Linux user space daemon (i.e. a PCAP based user\n\t  space daemon).  No kernel-side stack is needed.\n\nconfig BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB\n\tbool \"kernel-space driver\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  Compile openPOWERLINK application library which contains the\n\t  interface to a Linux kernel space driver. This will also\n\t  build and install a Linux kernel module openPOWERLINK\n\t  driver.\n\nconfig BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB\n\tbool \"kernel-space PCIe driver\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_PACKAGE_OPENPOWERLINK_MN # MN support only\n\thelp\n\t  Compile openPOWERLINK application library which contains the\n\t  interface to a Linux kernel PCIe interface driver. The kernel\n\t  part of the openPOWERLINK stack is located on an external PCIe\n\t  device. The status/control and data exchange between the\n\t  application and kernel stack is handled by the PCIe interface\n\t  driver.\n\ncomment \"openpowerlink kernel stack needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nendchoice\n\nif BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB\n\nmenu \"Ethernet drivers\"\n\nconfig BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_82573\n\tbool \"Intel 82573\"\n\tdefault y\n\nconfig BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_8255x\n\tbool \"Intel 8255x\"\n\nconfig BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_I210\n\tbool \"Intel I210\"\n\nconfig BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8111\n\tbool \"Realtek RTL-8111/8168\"\n\nconfig BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8139\n\tbool \"Realtek RTL-8139\"\n\nendmenu\n\nendif # BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB\n\nconfig BR2_PACKAGE_OPENPOWERLINK_KERNEL_PCIE_DRIVER\n\tbool \"PCIe Powerlink Driver\"\n\tdepends on BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB\n\nmenu \"demos\"\n\nconfig BR2_PACKAGE_OPENPOWERLINK_DEMO_MN_CONSOLE\n\tbool \"console MN demo\"\n\tdepends on BR2_PACKAGE_OPENPOWERLINK_MN\n\nconfig BR2_PACKAGE_OPENPOWERLINK_DEMO_CN_CONSOLE\n\tbool \"console CN demo\"\n\tdepends on BR2_PACKAGE_OPENPOWERLINK_CN\n\nendmenu\n\nendif # BR2_PACKAGE_OPENPOWERLINK\n"
  },
  {
    "path": "package/openpowerlink/openpowerlink.hash",
    "content": "# From https://sourceforge.net/projects/openpowerlink/files/openPOWERLINK/V2.7.1/\nmd5\t04524d1b1f9946176dce0ccb0eecf537\topenPOWERLINK_V2.7.1.tar.gz\nsha1\t4ee9c6e26bbc729fdbbb272155b093ffa0d9cefd\topenPOWERLINK_V2.7.1.tar.gz\n# sha256 locally computed\nsha256  d0d65f4fb8f2ad209cf9575714f88f33168a1cf71e8f1801e1e1ac4df6a37ffd  openPOWERLINK_V2.7.1.tar.gz\nsha256  348e31e9e5094104463d58d33abd31049fdf209afbc12ea7abb7fd4b4a147429  license.md\n"
  },
  {
    "path": "package/openpowerlink/openpowerlink.mk",
    "content": "################################################################################\n#\n# openpowerlink\n#\n################################################################################\n\nOPENPOWERLINK_VERSION = 2.7.1\nOPENPOWERLINK_SITE = https://downloads.sourceforge.net/project/openpowerlink/openPOWERLINK/V$(OPENPOWERLINK_VERSION)\nOPENPOWERLINK_SOURCE = openPOWERLINK_V$(OPENPOWERLINK_VERSION).tar.gz\nOPENPOWERLINK_LICENSE = BSD-2-Clause, GPL-2.0\nOPENPOWERLINK_LICENSE_FILES = license.md\n\nOPENPOWERLINK_INSTALL_STAGING = YES\n\n# The archive has no leading component.\nOPENPOWERLINK_STRIP_COMPONENTS = 0\n\nOPENPOWERLINK_MN_ONOFF = $(if $(BR2_PACKAGE_OPENPOWERLINK_MN),ON,OFF)\nOPENPOWERLINK_CN_ONOFF = $(if $(BR2_PACKAGE_OPENPOWERLINK_CN),ON,OFF)\n\n#### OPLK LIBRARY ####\n\n# Always build a oplk stack\n# Disable library with simulation interface\n# Disable zynq/FPGA (PCIe) interface\nOPENPOWERLINK_CONF_OPTS += -DCFG_OPLK_LIB=ON \\\n\t-DCFG_COMPILE_LIB_MN_SIM=OFF \\\n\t-DCFG_COMPILE_LIB_CN_SIM=OFF \\\n\t-DCFG_COMPILE_LIB_MNAPP_ZYNQINTF=OFF\n\n# All option are ON by default\nifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_MONOLITHIC_USER_STACK_LIB),y)\nOPENPOWERLINK_DEPENDENCIES += libpcap\nOPENPOWERLINK_CONF_OPTS += \\\n\t-DCFG_COMPILE_LIB_MN=$(OPENPOWERLINK_MN_ONOFF) \\\n\t-DCFG_COMPILE_LIB_MNAPP_USERINTF=OFF \\\n\t-DCFG_COMPILE_LIB_MNAPP_KERNELINTF=OFF \\\n\t-DCFG_COMPILE_LIB_MNAPP_PCIEINTF=OFF \\\n\t-DCFG_COMPILE_LIB_MNDRV_PCAP=OFF \\\n\t-DCFG_COMPILE_LIB_CN=$(OPENPOWERLINK_CN_ONOFF) \\\n\t-DCFG_COMPILE_LIB_CNAPP_USERINTF=OFF \\\n\t-DCFG_COMPILE_LIB_CNAPP_KERNELINTF=OFF \\\n\t-DCFG_COMPILE_LIB_CNDRV_PCAP=OFF \\\n\t-DPCAP_CONFIG=\"$(STAGING_DIR)/usr/bin/pcap-config\"\nelse ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB),y)\nOPENPOWERLINK_DEPENDENCIES += libpcap\nOPENPOWERLINK_CONF_OPTS += \\\n\t-DCFG_COMPILE_LIB_MN=OFF \\\n\t-DCFG_COMPILE_LIB_MNAPP_USERINTF=$(OPENPOWERLINK_MN_ONOFF) \\\n\t-DCFG_COMPILE_LIB_MNAPP_KERNELINTF=OFF \\\n\t-DCFG_COMPILE_LIB_MNAPP_PCIEINTF=OFF \\\n\t-DCFG_COMPILE_LIB_MNDRV_PCAP=$(OPENPOWERLINK_MN_ONOFF) \\\n\t-DCFG_COMPILE_LIB_CN=OFF \\\n\t-DCFG_COMPILE_LIB_CNAPP_USERINTF=$(OPENPOWERLINK_CN_ONOFF) \\\n\t-DCFG_COMPILE_LIB_CNAPP_KERNELINTF=OFF \\\n\t-DCFG_COMPILE_LIB_CNDRV_PCAP=$(OPENPOWERLINK_CN_ONOFF) \\\n\t-DPCAP_CONFIG=\"$(STAGING_DIR)/usr/bin/pcap-config\"\nelse ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB),y)\nOPENPOWERLINK_CONF_OPTS += \\\n\t-DCFG_COMPILE_LIB_MN=OFF \\\n\t-DCFG_COMPILE_LIB_MNAPP_USERINTF=OFF \\\n\t-DCFG_COMPILE_LIB_MNAPP_KERNELINTF=$(OPENPOWERLINK_MN_ONOFF) \\\n\t-DCFG_COMPILE_LIB_MNAPP_PCIEINTF=OFF \\\n\t-DCFG_COMPILE_LIB_MNDRV_PCAP=OFF \\\n\t-DCFG_COMPILE_LIB_CN=OFF \\\n\t-DCFG_COMPILE_LIB_CNAPP_USERINTF=OFF \\\n\t-DCFG_COMPILE_LIB_CNAPP_KERNELINTF=$(OPENPOWERLINK_CN_ONOFF) \\\n\t-DCFG_COMPILE_LIB_CNDRV_PCAP=OFF\nelse ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB),y)\nOPENPOWERLINK_CONF_OPTS += \\\n\t-DCFG_COMPILE_LIB_MN=OFF \\\n\t-DCFG_COMPILE_LIB_MNAPP_USERINTF=OFF \\\n\t-DCFG_COMPILE_LIB_MNAPP_KERNELINTF=OFF \\\n\t-DCFG_COMPILE_LIB_MNAPP_PCIEINTF=$(OPENPOWERLINK_MN_ONOFF) \\\n\t-DCFG_COMPILE_LIB_MNDRV_PCAP=OFF \\\n\t-DCFG_COMPILE_LIB_CN=OFF \\\n\t-DCFG_COMPILE_LIB_CNAPP_USERINTF=OFF \\\n\t-DCFG_COMPILE_LIB_CNAPP_KERNELINTF=OFF \\\n\t-DCFG_COMPILE_LIB_CNDRV_PCAP=OFF\nendif\n\nOPENPOWERLINK_CONF_OPTS += \\\n\t-DCFG_COMPILE_SHARED_LIBRARY=$(if $(BR2_STATIC_LIBS),OFF,ON)\n\n#### OPLK KERNEL DRIVERS ####\n\nifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB)$(BR2_PACKAGE_OPENPOWERLINK_KERNEL_PCIE_DRIVER),y)\nOPENPOWERLINK_DEPENDENCIES += linux\n\nOPENPOWERLINK_CONF_OPTS += \\\n\t-DCFG_KERNEL_DIR=\"$(LINUX_DIR)\" \\\n\t-DCMAKE_SYSTEM_VERSION=\"$(LINUX_VERSION)\" \\\n\t-DCFG_OPLK_MN=\"$(OPENPOWERLINK_MN_ONOFF)\" \\\n\t-DMAKE_KERNEL_ARCH=\"$(KERNEL_ARCH)\" \\\n\t-DMAKE_KERNEL_CROSS_COMPILE=\"$(CCACHE) $(TARGET_CROSS)\"\nendif\n\nifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB),y)\nOPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_DRIVERS=ON \\\n\t-DCFG_POWERLINK_EDRV_82573=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_82573),ON,OFF) \\\n\t-DCFG_POWERLINK_EDRV_8255X=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_8255x),ON,OFF) \\\n\t-DCFG_POWERLINK_EDRV_I210=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_I210),ON,OFF) \\\n\t-DCFG_POWERLINK_EDRV_8111=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8111),ON,OFF) \\\n\t-DCFG_POWERLINK_EDRV_8139=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8139),ON,OFF)\nelse\nOPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_DRIVERS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENPOWERLINK_KERNEL_PCIE_DRIVER),y)\nOPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_PCIE_DRIVERS=ON\nelse\nOPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_PCIE_DRIVERS=OFF\nendif\n\n#### OPLK PCAP DAEMON ####\n\nifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB),y)\nOPENPOWERLINK_CONF_OPTS += \\\n\t-DCFG_PCAP_DAEMON=ON \\\n\t-DCFG_OPLK_MN=$(OPENPOWERLINK_MN_ONOFF)\nendif\n\n#### OPLK DEMO APPS ####\n\n# See apps/common/cmake/configure-linux.cmake for available options list.\nifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_MONOLITHIC_USER_STACK_LIB),y)\nOPENPOWERLINK_CONF_OPTS += \\\n\t-DCFG_BUILD_KERNEL_STACK=\"Link to Application\"\nelse ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB),y)\nOPENPOWERLINK_CONF_OPTS += \\\n\t-DCFG_BUILD_KERNEL_STACK=\"Linux Userspace Daemon\"\nelse ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB),y)\nOPENPOWERLINK_CONF_OPTS += \\\n\t-DCFG_BUILD_KERNEL_STACK=\"Linux Kernel Module\"\nelse ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB),y)\nOPENPOWERLINK_CONF_OPTS += \\\n\t-DCFG_BUILD_KERNEL_STACK=\"Kernel stack on PCIe card\"\nendif\n\nifeq ($(BR2_PACKAGE_OPENPOWERLINK_DEMO_MN_CONSOLE),y)\nOPENPOWERLINK_CONF_OPTS += -DCFG_DEMO_MN_CONSOLE=ON \\\n\t-DCFG_DEMO_MN_CONSOLE_USE_SYNCTHREAD=ON\nelse\nOPENPOWERLINK_CONF_OPTS += -DCFG_DEMO_MN_CONSOLE=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENPOWERLINK_DEMO_CN_CONSOLE),y)\nOPENPOWERLINK_CONF_OPTS += -DCFG_DEMO_CN_CONSOLE=ON\nelse\nOPENPOWERLINK_CONF_OPTS += -DCFG_DEMO_CN_CONSOLE=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/openrc/0001-init.d-sysctl.in-add-support-for-busybox-sysctl.patch",
    "content": "From ec1a0c8fa2e7a7c6cf70f68bdabc07cbb1a567cf Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Micha=C5=82=20=C5=81yszczek?= <michal.lyszczek@bofc.pl>\nDate: Sun, 5 May 2019 23:43:40 +0200\nSubject: [PATCH] init.d/sysctl.in: add support for busybox sysctl\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nBusybox version of sysctl does not support --system argument,\nand files need to be loaded one by one. This patch adds code\nto recognize busybox sysctl and execute proper function based\non that.\n\nSigned-off-by: Michał Łyszczek <michal.lyszczek@bofc.pl>\n---\n init.d/sysctl.in | 27 ++++++++++++++++++++++++++-\n 1 file changed, 26 insertions(+), 1 deletion(-)\n\ndiff --git a/init.d/sysctl.in b/init.d/sysctl.in\nindex e49f4db2..a705b3d4 100644\n--- a/init.d/sysctl.in\n+++ b/init.d/sysctl.in\n@@ -37,6 +37,23 @@ BSD_sysctl()\n \treturn $retval\n }\n \n+Busybox_sysctl()\n+{\n+\tlocal quiet\n+\tyesno $rc_verbose || quiet=-q\n+\n+\teindent\n+\tfor conf in /etc/sysctl.conf /etc/sysctl.d/*.conf; do\n+\t\tif [ -r \"$conf\" ]; then\n+\t\t\tvebegin \"applying $conf\"\n+\t\t\tsysctl $quiet -p \"$conf\" || retval=1\n+\t\t\tveend $retval\n+\t\tfi\n+\tdone\n+\teoutdent\n+\treturn $retval\n+}\n+\n Linux_sysctl()\n {\n \tlocal quiet\n@@ -52,7 +69,15 @@ start()\n \tebegin \"Configuring kernel parameters\"\n \tcase \"$RC_UNAME\" in\n \t*BSD|GNU) BSD_sysctl; rc=$? ;;\n-\tLinux) Linux_sysctl; rc=$? ;;\n+\tLinux)\n+\t\tsysctl -h > /dev/null 2>&1\n+\t\tif [ $? -ne 0 ]; then\n+\t\t\t# busybox version of sysctl does not recognize -h option\n+\t\t\tBusybox_sysctl\n+\t\telse\n+\t\t\tLinux_sysctl\n+\t\tfi\n+\t\trc=$? ;;\n \tesac\n \teend $rc \"Unable to configure some kernel parameters\"\n }\n-- \n2.18.1\n\n"
  },
  {
    "path": "package/openrc/0002-sh-init.sh.Linux.in-change-run-lock-from-root-uucp-t.patch",
    "content": "From 5ae8209afad9a4284723712b46d8685e7f7fd72c Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Micha=C5=82=20=C5=81yszczek?= <michal.lyszczek@bofc.pl>\nDate: Mon, 6 May 2019 00:06:39 +0200\nSubject: [PATCH] sh/init.sh.Linux.in: change /run/lock from root:uucp to\n root:daemon\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nOn gentoo /run/lock is owned by uucp group because of historical\nreasons. However uucp does not exist on buildroot by default, and\nit makes more sense that 'daemon' group should own this directory.\n\nSigned-off-by: Michał Łyszczek <michal.lyszczek@bofc.pl>\n[Fabrice: update for 0.43.3]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n sh/init.sh.Linux.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/sh/init.sh.Linux.in b/sh/init.sh.Linux.in\nindex 222bbd3b..7f1a88db 100644\n--- a/sh/init.sh.Linux.in\n+++ b/sh/init.sh.Linux.in\n@@ -85,7 +85,7 @@ fi\n fi\n \n checkpath -d \"$RC_SVCDIR\"\n-checkpath -d -m 0775 -o root:uucp /run/lock\n+checkpath -d -m 0775 -o root:daemon /run/lock\n \n # Try to mount xenfs as early as possible, otherwise rc_sys() will always\n # return RC_SYS_XENU and will think that we are in a domU while it's not.\n-- \n2.18.1\n\n"
  },
  {
    "path": "package/openrc/0003-init.d-agetty-replace-sbin-agetty-by-sbin-getty.patch",
    "content": "From b39ab180358ed451eae9df900f49a72ef1eb7442 Mon Sep 17 00:00:00 2001\nFrom: Carlos Santos <unixmania@gmail.com>\nDate: Sun, 1 Mar 2020 09:04:48 -0300\nSubject: [PATCH] init.d/agetty: replace /sbin/agetty by /sbin/getty\n\nIn Buildroot getty is provided by BusyBox or util-linux (agetty). Both\ncreate a /sbin/getty symlink pointing to the actual program, so make the\nagetty service use that path instead of /sbin/agetty.\n\nThe patch is required because it's not possible to override the command\nby means of a configuration file.\n\nSigned-off-by: Carlos Santos <unixmania@gmail.com>\n---\n init.d/agetty.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/init.d/agetty.in b/init.d/agetty.in\nindex e4866f7a..e1864628 100644\n--- a/init.d/agetty.in\n+++ b/init.d/agetty.in\n@@ -14,7 +14,7 @@ supervisor=supervise-daemon\n port=\"${RC_SVCNAME#*.}\"\n respawn_period=\"${respawn_period:-60}\"\n term_type=\"${term_type:-linux}\"\n-command=/sbin/agetty\n+command=/sbin/getty\n command_args_foreground=\"${agetty_options} ${port} ${baud} ${term_type}\"\n pidfile=\"/run/${RC_SVCNAME}.pid\"\n \n-- \n2.18.2\n\n"
  },
  {
    "path": "package/openrc/0004-init.d-agetty-start-agetty-after-all-sevices.patch",
    "content": "From c2dc04f6b8c6784941b896e0b17c160dd43a566f Mon Sep 17 00:00:00 2001\nFrom: Carlos Santos <unixmania@gmail.com>\nDate: Sun, 1 Mar 2020 11:14:37 -0300\nSubject: [PATCH] init.d/agetty: start agetty after all services\n\nThis is required for Buildroot, to prevent mixing service initialization\nmessages with the getty prompt on devices with a single serial console.\n\nSigned-off-by: Carlos Santos <unixmania@gmail.com>\n---\n init.d/agetty.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/init.d/agetty.in b/init.d/agetty.in\nindex e1864628..a1ad4e9f 100644\n--- a/init.d/agetty.in\n+++ b/init.d/agetty.in\n@@ -19,7 +19,7 @@ command_args_foreground=\"${agetty_options} ${port} ${baud} ${term_type}\"\n pidfile=\"/run/${RC_SVCNAME}.pid\"\n \n depend() {\n-\tafter local\n+\tafter *\n \tkeyword -prefix\n \tprovide getty\n }\n-- \n2.18.2\n\n"
  },
  {
    "path": "package/openrc/0005-runlevels-do-not-add-agetty.tty-1-6-if-MKSYSVINIT-ye.patch",
    "content": "From 014dc43447fa553e875984ac4a528e5916cc9e06 Mon Sep 17 00:00:00 2001\nFrom: Carlos Santos <unixmania@gmail.com>\nDate: Sat, 29 Feb 2020 22:41:30 -0300\nSubject: [PATCH] runlevels: do not add agetty.tty[1-6] if MKSYSVINIT=yes\n\nBuildroot starts a single getty, according to the system configuration.\nAlso tty[1-6] may not exist (e.g. embedded devices with serial consoles\nonly).\n\nSigned-off-by: Carlos Santos <unixmania@gmail.com>\n---\n runlevels/Makefile | 6 ------\n 1 file changed, 6 deletions(-)\n\ndiff --git a/runlevels/Makefile b/runlevels/Makefile\nindex 73843d8b..dbfb59ca 100644\n--- a/runlevels/Makefile\n+++ b/runlevels/Makefile\n@@ -90,12 +90,6 @@ install:\n \t\t\tfi; \\\n \t\t\tln -snf ${INITDIR}/\"$$x\" ${SHUTDOWNDIR}/\"$$x\" || exit $$?; done \\\n \tfi\n-\tif test \"${MKSYSVINIT}\" = yes && test \"${OS}\" = Linux; then \\\n-\t\tfor x in tty1 tty2 tty3 tty4 tty5 tty6; do \\\n-\t\t\tln -snf ${INITDIR}/agetty ${DESTDIR}/${INITDIR}/\"agetty.$$x\" || exit $$?; \\\n-\t\t\tln -snf ${INITDIR}/agetty.$$x ${DEFAULTDIR}/\"agetty.$$x\" || exit $$?; \\\n-\t\tdone; \\\n-\tfi\n \n check test::\n \n-- \n2.18.2\n\n"
  },
  {
    "path": "package/openrc/Config.in",
    "content": "config BR2_PACKAGE_OPENRC\n\tbool \"openrc\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_INIT_OPENRC\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # kmod tools\n\tselect BR2_PACKAGE_KMOD # runtime\n\tselect BR2_PACKAGE_KMOD_TOOLS # runtime\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Init that works on top of pid 1 (for example\n\t  openrc-init). By default it does quite a lot on startup\n\t  (like setting hwclock, mounting directories, configuring\n\t  interfaces and so on). So for this init to properly work you\n\t  need at least these tools on the root filesystem (default\n\t  busybox configuration provides them all):\n\n\t  swapon, fsck, hwclock, getty, login, grep, mount, coreutils,\n\t  procps, modprobe (kmod), net-tools\n\n\t  Number of tools may be decreased by removing services that\n\t  use them.\n\n\t  https://github.com/OpenRC/openrc\n\ncomment \"openrc needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_INIT_OPENRC\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/openrc/openrc.hash",
    "content": "# Locally calculated\nsha256  968e81743a1de7a2348590b3b3286d6af5baf96da28fa1e6364e24f8203fc3b6  openrc-0.43.3.tar.gz\nsha256  96862463f4e77e2508e4fc2c83773fd24807cb699368b63fd93a5e2b466dd624  LICENSE\n"
  },
  {
    "path": "package/openrc/openrc.mk",
    "content": "################################################################################\n#\n# openrc\n#\n################################################################################\n\nOPENRC_VERSION = 0.43.3\nOPENRC_SITE = $(call github,OpenRC,openrc,$(OPENRC_VERSION))\nOPENRC_LICENSE = BSD-2-Clause\nOPENRC_LICENSE_FILES = LICENSE\nOPENRC_CPE_ID_VENDOR = openrc_project\n\nOPENRC_DEPENDENCIES = ncurses\n\n# set LIBNAME so openrc puts files in proper directories and sets proper\n# paths in installed files. Since in buildroot /lib64 and /lib32 always\n# points to /lib, it's safe to hardcode it to \"lib\"\nOPENRC_MAKE_OPTS = \\\n\tLIBNAME=lib \\\n\tLIBEXECDIR=/usr/libexec/rc \\\n\tMKPKGCONFIG=no \\\n\tMKSYSVINIT=yes \\\n\tBRANDING=\"Buildroot $(BR2_VERSION_FULL)\" \\\n\tCC=$(TARGET_CC)\n\nifeq ($(BR2_SHARED_LIBS),y)\nOPENRC_MAKE_OPTS += MKSTATICLIBS=no\nelse\nOPENRC_MAKE_OPTS += MKSTATICLIBS=yes\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nOPENRC_MAKE_OPTS += MKSELINUX=yes\nOPENRC_DEPENDENCIES += libselinux\nelse\nOPENRC_MAKE_OPTS += MKSELINUX=no\nendif\n\ndefine OPENRC_BUILD_CMDS\n\t$(MAKE) $(OPENRC_MAKE_OPTS) -C $(@D)\nendef\n\ndefine OPENRC_INSTALL_TARGET_CMDS\n\t$(MAKE) $(OPENRC_MAKE_OPTS) DESTDIR=$(TARGET_DIR) -C $(@D) install\n\t$(INSTALL) -D -m 0755 $(OPENRC_PKGDIR)/sysv-rcs \\\n\t\t$(TARGET_DIR)/etc/init.d/sysv-rcs\nendef\n\nifeq ($(BR2_PACKAGE_KBD),)\n# keymaps and save-keymaps require kbd_mode and dumpkeys, respectively, so\n# remove them if the kbd package is not selected (e.g. devices with serial\n# console, only).\ndefine OPENRC_NO_KBD\n\t$(RM) $(TARGET_DIR)/etc/runlevels/boot/{keymaps,save-keymaps}\n\t$(RM) $(TARGET_DIR)/etc/init.d/{keymaps,save-keymaps}\n\t$(RM) $(TARGET_DIR)/etc/conf.d/keymaps\nendef\nOPENRC_POST_INSTALL_TARGET_HOOKS += OPENRC_NO_KBD\nendif\n\nifeq ($(BR2_PACKAGE_NETIFRC),y)\n# netifrc replaces network, staticroute and loopback services which are\n# installed by openrc\ndefine OPENRC_NO_NET\n\t$(RM) $(TARGET_DIR)/etc/runlevels/boot/{network,staticroute,loopback}\n\t$(RM) $(TARGET_DIR)/etc/init.d/{network,staticroute,loopback}\n\t$(RM) $(TARGET_DIR)/etc/conf.d/{network,staticroute,loopback}\nendef\nOPENRC_POST_INSTALL_TARGET_HOOKS += OPENRC_NO_NET\nendif\n\ndefine OPENRC_REMOVE_UNNEEDED\n\t$(RM) -r $(TARGET_DIR)/usr/share/openrc\nendef\nOPENRC_TARGET_FINALIZE_HOOKS += OPENRC_REMOVE_UNNEEDED\n\nifeq ($(BR2_TARGET_GENERIC_GETTY),y)\nOPENRC_GETTY_SVCNAME = agetty.$(SYSTEM_GETTY_PORT)\nOPENRC_GETTY_CONF_D = $(TARGET_DIR)/etc/conf.d/$(OPENRC_GETTY_SVCNAME)\ndefine OPENRC_SET_GETTY\n\t{ \\\n\t\techo \"baud=\\\"$(SYSTEM_GETTY_BAUDRATE)\\\"\"; \\\n\t\techo \"term_type=\\\"$(SYSTEM_GETTY_TERM)\\\"\" ; \\\n\t\techo \"agetty_options=\\\"-L $(SYSTEM_GETTY_OPTIONS)\\\"\"; \\\n\t} > $(OPENRC_GETTY_CONF_D)\n\tln -sf agetty $(TARGET_DIR)/etc/init.d/$(OPENRC_GETTY_SVCNAME)\n\tln -sf /etc/init.d/$(OPENRC_GETTY_SVCNAME) \\\n\t\t$(TARGET_DIR)/etc/runlevels/default/$(OPENRC_GETTY_SVCNAME)\nendef\nOPENRC_TARGET_FINALIZE_HOOKS += OPENRC_SET_GETTY\nendif # BR2_TARGET_GENERIC_GETTY\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/openrc/sysv-rcs",
    "content": "#!/sbin/openrc-run\n\ndescription=\"start or stop sysv rc[S,K] scripts\"\n\ndepend() {\n    after local\n}\n\nstart() {\n    for i in /etc/init.d/S??*; do\n        # Ignore dangling symlinks (if any).\n        [ -e \"$i\" ] || continue\n        einfo \"Starting $i\"\n        $i start > /dev/null\n        eend $?\n    done\n}\n\nstop() {\n    for i in $(ls -r /etc/init.d/S??*); do\n        # Ignore dangling symlinks (if any).\n        [ -e \"$i\" ] || continue\n        einfo \"Stopping $i\"\n        $i stop > /dev/null\n        eend $?\n    done\n}\n"
  },
  {
    "path": "package/openresolv/Config.in",
    "content": "config BR2_PACKAGE_OPENRESOLV\n\tbool \"openresolv\"\n\thelp\n\t  openresolv is a resolvconf implementation which\n\t  manages resolv.conf. This tool provides a dns management\n\t  framework to track currently available nameservers.\n\n\t  https://roy.marples.name/projects/openresolv\n"
  },
  {
    "path": "package/openresolv/openresolv.hash",
    "content": "# Locally calculated\nsha256  96b573e26d145f208d3758c2cd6fbf824b01005fc4cb7cedbdae29b3a3c8cb02  openresolv-3.12.0.tar.gz\nsha256  384740bf5e19e7628d20f4dcc22925062fdc6020e9a6f074e567d4d797be57a0  LICENSE\n"
  },
  {
    "path": "package/openresolv/openresolv.mk",
    "content": "################################################################################\n#\n# openresolv\n#\n################################################################################\n\nOPENRESOLV_VERSION = 3.12.0\nOPENRESOLV_SITE = $(call github,rsmarples,openresolv,openresolv-$(OPENRESOLV_VERSION))\nOPENRESOLV_LICENSE = BSD-2-Clause\nOPENRESOLV_LICENSE_FILES = LICENSE\nOPENRESOLV_CPE_ID_VENDOR = openresolv_project\n\ndefine OPENRESOLV_CONFIGURE_CMDS\n\tcd $(@D) && $(TARGET_CONFIGURE_OPTS) ./configure --sysconfdir=/etc\nendef\n\ndefine OPENRESOLV_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine OPENRESOLV_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=\"$(TARGET_DIR)\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/openssh/Config.in",
    "content": "config BR2_PACKAGE_OPENSSH\n\tbool \"openssh\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  A free version of the SSH protocol suite of network\n\t  connectivity tools. The standard 'ssh', 'sshd', 'scp', and\n\t  friends.\n\n\t  http://www.openssh.com/\n\nif BR2_PACKAGE_OPENSSH\n\nconfig BR2_PACKAGE_OPENSSH_CLIENT\n\tbool \"client\"\n\tdefault y\n\thelp\n\t  Client programs: ssh, scp, sftp, ssh-agent, ssh-add,\n\t  ssh-copy-id.\n\nconfig BR2_PACKAGE_OPENSSH_SERVER\n\tbool \"server\"\n\tdefault y\n\thelp\n\t  Server programs: sshd, sftp-server\n\nconfig BR2_PACKAGE_OPENSSH_KEY_UTILS\n\tbool \"key utilities\"\n\tdefault y\n\thelp\n\t  Key utilities: ssh-keygen, ssh-keyscan.\n\nendif\n"
  },
  {
    "path": "package/openssh/S50sshd",
    "content": "#!/bin/sh\n#\n# sshd        Starts sshd.\n#\n\n# Make sure the ssh-keygen progam exists\n[ -f /usr/bin/ssh-keygen ] || exit 0\n\numask 077\n\nstart() {\n\t# Create any missing keys\n\t/usr/bin/ssh-keygen -A\n\n\tprintf \"Starting sshd: \"\n\t/usr/sbin/sshd\n\ttouch /var/lock/sshd\n\techo \"OK\"\n}\nstop() {\n\tprintf \"Stopping sshd: \"\n\tkillall sshd\n\trm -f /var/lock/sshd\n\techo \"OK\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "package/openssh/openssh.hash",
    "content": "# From https://www.openssh.com/txt/release-8.8 (base64 encoded)\nsha256  4590890ea9bb9ace4f71ae331785a3a5823232435161960ed5fc86588f331fe9  openssh-8.8p1.tar.gz\n# Locally calculated\nsha256  432abf7480fb31473a6706627212913fc70032e3fb71b90fecb28ae26a2d741d  LICENCE\n"
  },
  {
    "path": "package/openssh/openssh.mk",
    "content": "################################################################################\n#\n# openssh\n#\n################################################################################\n\nOPENSSH_VERSION_MAJOR = 8.8\nOPENSSH_VERSION_MINOR = p1\nOPENSSH_VERSION = $(OPENSSH_VERSION_MAJOR)$(OPENSSH_VERSION_MINOR)\nOPENSSH_CPE_ID_VERSION = $(OPENSSH_VERSION_MAJOR)\nOPENSSH_CPE_ID_UPDATE = $(OPENSSH_VERSION_MINOR)\nOPENSSH_SITE = http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable\nOPENSSH_LICENSE = BSD-4-Clause, BSD-3-Clause, BSD-2-Clause, Public Domain\nOPENSSH_LICENSE_FILES = LICENCE\nOPENSSH_CONF_ENV = \\\n\tLD=\"$(TARGET_CC)\" \\\n\tLDFLAGS=\"$(TARGET_CFLAGS)\" \\\n\tLIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nOPENSSH_CPE_ID_VENDOR = openbsd\nOPENSSH_CONF_OPTS = \\\n\t--sysconfdir=/etc/ssh \\\n\t--with-default-path=$(BR2_SYSTEM_DEFAULT_PATH) \\\n\t--disable-lastlog \\\n\t--disable-utmp \\\n\t--disable-utmpx \\\n\t--disable-wtmp \\\n\t--disable-wtmpx \\\n\t--disable-strip\n\ndefine OPENSSH_PERMISSIONS\n\t/var/empty d 755 root root - - - - -\nendef\n\nifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),)\nOPENSSH_CONF_OPTS += --without-pie\nendif\n\nOPENSSH_DEPENDENCIES = host-pkgconf zlib openssl\n\nifeq ($(BR2_PACKAGE_CRYPTODEV_LINUX),y)\nOPENSSH_DEPENDENCIES += cryptodev-linux\nOPENSSH_CONF_OPTS += --with-ssl-engine\nelse\nOPENSSH_CONF_OPTS += --without-ssl-engine\nendif\n\nifeq ($(BR2_PACKAGE_AUDIT),y)\nOPENSSH_DEPENDENCIES += audit\nOPENSSH_CONF_OPTS += --with-audit=linux\nelse\nOPENSSH_CONF_OPTS += --without-audit\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\ndefine OPENSSH_INSTALL_PAM_CONF\n\t$(INSTALL) -D -m 644 $(@D)/contrib/sshd.pam.generic $(TARGET_DIR)/etc/pam.d/sshd\n\t$(SED) '\\%password   required     /lib/security/pam_cracklib.so%d' $(TARGET_DIR)/etc/pam.d/sshd\n\t$(SED) 's/\\#UsePAM no/UsePAM yes/' $(TARGET_DIR)/etc/ssh/sshd_config\nendef\n\nOPENSSH_DEPENDENCIES += linux-pam\nOPENSSH_CONF_OPTS += --with-pam\nOPENSSH_POST_INSTALL_TARGET_HOOKS += OPENSSH_INSTALL_PAM_CONF\nelse\nOPENSSH_CONF_OPTS += --without-pam\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nOPENSSH_DEPENDENCIES += libselinux\nOPENSSH_CONF_OPTS += --with-selinux\nelse\nOPENSSH_CONF_OPTS += --without-selinux\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y)\ndefine OPENSSH_INSTALL_SYSTEMD_SYSUSERS\n\t$(INSTALL) -m 0644 -D package/openssh/sshd-sysusers.conf \\\n\t\t$(TARGET_DIR)/usr/lib/sysusers.d/sshd.conf\nendef\nelse\ndefine OPENSSH_USERS\n\tsshd -1 sshd -1 * /var/empty - - SSH drop priv user\nendef\nendif\n\n# Let the default install rule only install the configuration file.\n# The programs will be installed based on the config options selected.\nOPENSSH_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-sysconf\n\nifeq ($(BR2_PACKAGE_OPENSSH_CLIENT),y)\ndefine OPENSSH_INSTALL_CLIENT_PROGRAMS\n\t$(INSTALL) -D -m 0755 $(@D)/ssh $(TARGET_DIR)/usr/bin/ssh\n\t$(INSTALL) -D -m 0755 $(@D)/scp $(TARGET_DIR)/usr/bin/scp\n\t$(INSTALL) -D -m 0755 $(@D)/sftp $(TARGET_DIR)/usr/bin/sftp\n\t$(INSTALL) -D -m 0755 $(@D)/ssh-agent $(TARGET_DIR)/usr/bin/ssh-agent\n\t$(INSTALL) -D -m 0755 $(@D)/ssh-add $(TARGET_DIR)/usr/bin/ssh-add\n\t$(INSTALL) -D -m 4711 $(@D)/ssh-keysign $(TARGET_DIR)/usr/libexec/ssh-keysign\n\t$(INSTALL) -D -m 0755 $(@D)/ssh-pkcs11-helper $(TARGET_DIR)/usr/libexec/ssh-pkcs11-helper\n\t$(INSTALL) -D -m 0755 $(@D)/contrib/ssh-copy-id $(TARGET_DIR)/usr/bin/ssh-copy-id\nendef\nOPENSSH_POST_INSTALL_TARGET_HOOKS += OPENSSH_INSTALL_CLIENT_PROGRAMS\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSH_SERVER),y)\ndefine OPENSSH_INSTALL_SERVER_PROGRAMS\n\t$(INSTALL) -D -m 0755 $(@D)/sshd $(TARGET_DIR)/usr/sbin/sshd\n\t$(INSTALL) -D -m 0755 $(@D)/sftp-server $(TARGET_DIR)/usr/libexec/sftp-server\nendef\nOPENSSH_POST_INSTALL_TARGET_HOOKS += OPENSSH_INSTALL_SERVER_PROGRAMS\n\ndefine OPENSSH_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/openssh/sshd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/sshd.service\n\t$(OPENSSH_INSTALL_SYSTEMD_SYSUSERS)\nendef\n\ndefine OPENSSH_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/openssh/S50sshd \\\n\t\t$(TARGET_DIR)/etc/init.d/S50sshd\nendef\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSH_KEY_UTILS),y)\ndefine OPENSSH_INSTALL_KEY_UTILS\n\t$(INSTALL) -D -m 0755 $(@D)/ssh-keygen $(TARGET_DIR)/usr/bin/ssh-keygen\n\t$(INSTALL) -D -m 0755 $(@D)/ssh-keyscan $(TARGET_DIR)/usr/bin/ssh-keyscan\nendef\nOPENSSH_POST_INSTALL_TARGET_HOOKS += OPENSSH_INSTALL_KEY_UTILS\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/openssh/sshd-sysusers.conf",
    "content": "u sshd - \"SSH drop priv user\" /var/empty\n"
  },
  {
    "path": "package/openssh/sshd.service",
    "content": "[Unit]\nDescription=OpenSSH server daemon\nAfter=syslog.target network.target auditd.service\n\n[Service]\nExecStartPre=/usr/bin/ssh-keygen -A\nExecStart=/usr/sbin/sshd -D -e\nExecReload=/bin/kill -HUP $MAINPID\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/openssl/Config.in",
    "content": "config BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL\n\tbool\n\nconfig BR2_PACKAGE_OPENSSL\n\tbool \"openssl support\"\n\tselect BR2_PACKAGE_HAS_OPENSSL\n\thelp\n\t  Select the desired ssl library provider.\n\nif BR2_PACKAGE_OPENSSL\n\nchoice\n\tprompt \"ssl library\"\n\thelp\n\t  Select OpenSSL or LibreSSL.\n\nconfig BR2_PACKAGE_LIBOPENSSL\n\tbool \"openssl\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  A collaborative effort to develop a robust, commercial-grade,\n\t  fully featured, and Open Source toolkit implementing the\n\t  Secure Sockets Layer (SSL v2/v3) and Transport Security\n\t  (TLS v1) as well as a full-strength general-purpose\n\t  cryptography library.\n\n\t  http://www.openssl.org/\n\n\t  Note: Some helper scripts need perl.\n\nsource \"package/libopenssl/Config.in\"\n\nconfig BR2_PACKAGE_LIBRESSL\n\tbool \"libressl\"\n\tdepends on !BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# uClibc on noMMU doesn't provide __register_atfork()\n\tdepends on !(BR2_TOOLCHAIN_USES_UCLIBC && !BR2_USE_MMU)\n\thelp\n\t  LibreSSL is a version of the TLS/crypto stack forked from\n\t  OpenSSL in 2014, with goals of modernizing the codebase,\n\t  improving security, and applying best practice development\n\t  processes.\n\n\t  http://www.libressl.org/\n\nsource \"package/libressl/Config.in\"\n\n# openssl from br2-external trees, if any\nsource \"$BR2_BASE_DIR/.br2-external.in.openssl\"\n\nendchoice\n\nconfig BR2_PACKAGE_HAS_OPENSSL\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_OPENSSL\n\tstring\n\tdefault \"libopenssl\" if BR2_PACKAGE_LIBOPENSSL\n\tdefault \"libressl\" if BR2_PACKAGE_LIBRESSL\n\nendif\n\n# ensure libopenssl is used for the host variant\nconfig BR2_PACKAGE_PROVIDES_HOST_OPENSSL\n\tstring\n\tdefault \"host-libopenssl\"\n"
  },
  {
    "path": "package/openssl/openssl.mk",
    "content": "################################################################################\n#\n# openssl\n#\n################################################################################\n\n$(eval $(virtual-package))\n$(eval $(host-virtual-package))\n"
  },
  {
    "path": "package/openswan/Config.in",
    "content": "config BR2_PACKAGE_OPENSWAN\n\tbool \"openswan\"\n\tdepends on BR2_USE_MMU # iproute2\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # iproute2\n\tdepends on !BR2_TOOLCHAIN_USES_UCLIBC # ns_t_tkey\n\tselect BR2_PACKAGE_GMP\n\tselect BR2_PACKAGE_IPROUTE2\n\thelp\n\t  Openswan is an implementation of IPsec for Linux\n\n\t  http://www.openswan.org\n\ncomment \"openswan needs a glibc or musl toolchain w/ headers >= 3.4\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 || \\\n\t\tBR2_TOOLCHAIN_USES_UCLIBC\n"
  },
  {
    "path": "package/openswan/openswan.hash",
    "content": "# Locally calculated\nsha256  69fe7a71e54aaf0ea93b874db4963057c1ff4904b3617b36f2c9be2010c23331  openswan-3.0.0.tar.gz\nsha256  1c36ae1e7b0f6cce4b4ffe969b71f83635734804acdd38544443564b00f8783a  COPYING\nsha256  d7d012ef3be47faffba4d97a83d4986c9f4a63ac997ebf5961d33852e5f1801a  LICENSE\n"
  },
  {
    "path": "package/openswan/openswan.mk",
    "content": "################################################################################\n#\n# openswan\n#\n################################################################################\n\nOPENSWAN_VERSION = 3.0.0\nOPENSWAN_SITE = $(call github,xelerance,Openswan,v$(OPENSWAN_VERSION))\nOPENSWAN_LICENSE = GPL-2.0+, BSD-3-Clause\nOPENSWAN_LICENSE_FILES = COPYING LICENSE\nOPENSWAN_CPE_ID_VENDOR = xelerance\n\nOPENSWAN_DEPENDENCIES = host-bison host-flex gmp iproute2\nOPENSWAN_MAKE_OPTS = ARCH=$(BR2_ARCH) CC=\"$(TARGET_CC)\" POD2MAN=\"\" XMLTO=\"\" \\\n\tUSERCOMPILE=\"$(TARGET_CFLAGS) $(if $(BR2_TOOLCHAIN_SUPPORTS_PIE),-fPIE)\" \\\n\tUSERLINK=\"$(TARGET_LDFLAGS) $(if $(BR2_TOOLCHAIN_SUPPORTS_PIE),-fPIE)\" \\\n\tINC_USRLOCAL=/usr USE_KLIPS=false USE_MAST=false USE_NM=false \\\n\tUSE_NOMANINSTALL=true WERROR=\"\"\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nOPENSWAN_DEPENDENCIES += libcurl\nOPENSWAN_MAKE_OPTS += USE_LIBCURL=true\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nOPENSWAN_DEPENDENCIES += openssl\nOPENSWAN_MAKE_OPTS += HAVE_OPENSSL=true\nifeq ($(BR2_PACKAGE_OCF_LINUX),y)\nOPENSWAN_MAKE_OPTS += HAVE_OCF=true\nendif\nendif\n\ndefine OPENSWAN_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) \\\n\t\t$(OPENSWAN_MAKE_OPTS) programs\nendef\n\ndefine OPENSWAN_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) \\\n\t\t$(OPENSWAN_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/opentracing-cpp/Config.in",
    "content": "config BR2_PACKAGE_OPENTRACING_CPP\n\tbool \"opentracing-cpp\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr\n\thelp\n\t  OpenTracing API for C++\n\n\t  http://opentracing.io\n\ncomment \"opentracing-cpp needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\ncomment \"opentracing-cpp needs exception_ptr\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/opentracing-cpp/opentracing-cpp.hash",
    "content": "# Locally calculated\nsha256 015c4187f7a6426a2b5196f0ccd982aa87f010cf61f507ae3ce5c90523f92301 opentracing-cpp-1.5.1.tar.gz\nsha256 076d03156735d5ff2df2ea0f8b12351ef65e5e9222b5c8c6a35101dadb41e717 LICENSE\n"
  },
  {
    "path": "package/opentracing-cpp/opentracing-cpp.mk",
    "content": "################################################################################\n#\n# opentracing-cpp\n#\n################################################################################\n\nOPENTRACING_CPP_VERSION = 1.5.1\nOPENTRACING_CPP_SITE = $(call github,opentracing,opentracing-cpp,v$(OPENTRACING_CPP_VERSION))\nOPENTRACING_CPP_LICENSE = Apache-2.0\nOPENTRACING_CPP_LICENSE_FILES = LICENSE\n\nOPENTRACING_CPP_INSTALL_STAGING = YES\n\n# BUILD_SHARED_LIBS is handled in pkg-cmake.mk as it is a generic cmake variable\n# although BUILD_STATIC_LIBS=ON is default, make it explicit,\n# cmake and static/shared libs is confusing enough already.\nifeq ($(BR2_STATIC_LIBS),y)\nOPENTRACING_CPP_CONF_OPTS += -DBUILD_STATIC_LIBS=ON\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nOPENTRACING_CPP_CONF_OPTS += -DBUILD_STATIC_LIBS=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nOPENTRACING_CPP_CONF_OPTS += -DBUILD_STATIC_LIBS=OFF\nendif\n\nOPENTRACING_CPP_CONF_OPTS += -DENABLE_LINTING=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/opentyrian/0001-Move-definitions-that-don-t-need-to-be-exposed-from-opl-h-to-opl-c.patch",
    "content": "From 962ee8fc46ca51691bde1c8c1022dacbe8a037ed Mon Sep 17 00:00:00 2001\nFrom: Carl Reinke <carlreinke@users.noreply.github.com>\nDate: Sun, 14 Jun 2020 14:11:00 -0600\nSubject: [PATCH] Move definitions that don't need to be exposed from opl.h to\n opl.c\n\n[Retrieved from:\nhttps://github.com/opentyrian/opentyrian/commit/962ee8fc46ca51691bde1c8c1022dacbe8a037ed]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/opl.c | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++-\n src/opl.h | 157 ++----------------------------------------------------\n 2 files changed, 154 insertions(+), 156 deletions(-)\n\ndiff --git a/src/opl.c b/src/opl.c\nindex a4071c5..f15474c 100644\n--- a/src/opl.c\n+++ b/src/opl.c\n@@ -23,12 +23,161 @@\n  * Copyright (C) 1998-2001 Ken Silverman\n  * Ken Silverman's official web site: \"http://www.advsys.net/ken\"\n  */\n-\n+#include \"opl.h\"\n \n #include <math.h>\n+#include <stdbool.h>\n #include <stdlib.h> // rand()\n #include <string.h> // memset()\n-#include \"opl.h\"\n+\n+#define fltype double\n+\n+ /*\n+ define attribution that inlines/forces inlining of a function (optional)\n+ */\n+#define OPL_INLINE inline\n+\n+\n+#undef NUM_CHANNELS\n+#if defined(OPLTYPE_IS_OPL3)\n+#define NUM_CHANNELS\t18\n+#else\n+#define NUM_CHANNELS\t9\n+#endif\n+\n+#define MAXOPERATORS\t(NUM_CHANNELS*2)\n+\n+\n+#define FL05\t((fltype)0.5)\n+#define FL2\t\t((fltype)2.0)\n+#define PI\t\t((fltype)3.1415926535897932384626433832795)\n+\n+\n+#define FIXEDPT\t\t\t0x10000\t\t// fixed-point calculations using 16+16\n+#define FIXEDPT_LFO\t\t0x1000000\t// fixed-point calculations using 8+24\n+\n+#define WAVEPREC\t\t1024\t\t// waveform precision (10 bits)\n+\n+#define INTFREQU\t\t((fltype)(14318180.0 / 288.0))\t\t// clocking of the chip\n+\n+\n+#define OF_TYPE_ATT\t\t\t0\n+#define OF_TYPE_DEC\t\t\t1\n+#define OF_TYPE_REL\t\t\t2\n+#define OF_TYPE_SUS\t\t\t3\n+#define OF_TYPE_SUS_NOKEEP\t4\n+#define OF_TYPE_OFF\t\t\t5\n+\n+#define ARC_CONTROL\t\t\t0x00\n+#define ARC_TVS_KSR_MUL\t\t0x20\n+#define ARC_KSL_OUTLEV\t\t0x40\n+#define ARC_ATTR_DECR\t\t0x60\n+#define ARC_SUSL_RELR\t\t0x80\n+#define ARC_FREQ_NUM\t\t0xa0\n+#define ARC_KON_BNUM\t\t0xb0\n+#define ARC_PERC_MODE\t\t0xbd\n+#define ARC_FEEDBACK\t\t0xc0\n+#define ARC_WAVE_SEL\t\t0xe0\n+\n+#define ARC_SECONDSET\t\t0x100\t// second operator set for OPL3\n+\n+\n+#define OP_ACT_OFF\t\t\t0x00\n+#define OP_ACT_NORMAL\t\t0x01\t// regular channel activated (bitmasked)\n+#define OP_ACT_PERC\t\t\t0x02\t// percussion channel activated (bitmasked)\n+\n+#define BLOCKBUF_SIZE\t\t512\n+\n+\n+ // vibrato constants\n+#define VIBTAB_SIZE\t\t\t8\n+#define VIBFAC\t\t\t\t70/50000\t\t// no braces, integer mul/div\n+\n+ // tremolo constants and table\n+#define TREMTAB_SIZE\t\t53\n+#define TREM_FREQ\t\t\t((fltype)(3.7))\t\t\t// tremolo at 3.7hz\n+\n+\n+ /* operator struct definition\n+ For OPL2 all 9 channels consist of two operators each, carrier and modulator.\n+ Channel x has operators x as modulator and operators (9+x) as carrier.\n+ For OPL3 all 18 channels consist either of two operators (2op mode) or four\n+ operators (4op mode) which is determined through register4 of the second\n+ adlib register set.\n+ Only the channels 0,1,2 (first set) and 9,10,11 (second set) can act as\n+ 4op channels. The two additional operators for a channel y come from the\n+ 2op channel y+3 so the operatorss y, (9+y), y+3, (9+y)+3 make up a 4op\n+ channel.\n+ */\n+typedef struct operator_struct {\n+\tBit32s cval, lastcval;\t\t\t// current output/last output (used for feedback)\n+\tBit32u tcount, wfpos, tinc;\t\t// time (position in waveform) and time increment\n+\tfltype amp, step_amp;\t\t\t// and amplification (envelope)\n+\tfltype vol;\t\t\t\t\t\t// volume\n+\tfltype sustain_level;\t\t\t// sustain level\n+\tBit32s mfbi;\t\t\t\t\t// feedback amount\n+\tfltype a0, a1, a2, a3;\t\t\t// attack rate function coefficients\n+\tfltype decaymul, releasemul;\t// decay/release rate functions\n+\tBit32u op_state;\t\t\t\t// current state of operator (attack/decay/sustain/release/off)\n+\tBit32u toff;\n+\tBit32s freq_high;\t\t\t\t// highest three bits of the frequency, used for vibrato calculations\n+\tBit16s* cur_wform;\t\t\t\t// start of selected waveform\n+\tBit32u cur_wmask;\t\t\t\t// mask for selected waveform\n+\tBit32u act_state;\t\t\t\t// activity state (regular, percussion)\n+\tbool sus_keep;\t\t\t\t\t// keep sustain level when decay finished\n+\tbool vibrato,tremolo;\t\t\t// vibrato/tremolo enable bits\n+\n+\t\t\t\t\t\t\t\t\t// variables used to provide non-continuous envelopes\n+\tBit32u generator_pos;\t\t\t// for non-standard sample rates we need to determine how many samples have passed\n+\tBits cur_env_step;\t\t\t\t// current (standardized) sample position\n+\tBits env_step_a,env_step_d,env_step_r;\t// number of std samples of one step (for attack/decay/release mode)\n+\tBit8u step_skip_pos_a;\t\t\t// position of 8-cyclic step skipping (always 2^x to check against mask)\n+\tBits env_step_skip_a;\t\t\t// bitmask that determines if a step is skipped (respective bit is zero then)\n+\n+#if defined(OPLTYPE_IS_OPL3)\n+\tbool is_4op,is_4op_attached;\t// base of a 4op channel/part of a 4op channel\n+\tBit32s left_pan,right_pan;\t\t// opl3 stereo panning amount\n+#endif\n+} op_type;\n+\n+// per-chip variables\n+static op_type op[MAXOPERATORS];\n+\n+static Bits int_samplerate;\n+\n+static Bit8u status;\n+static Bit32u opl_index;\n+#if defined(OPLTYPE_IS_OPL3)\n+static Bit8u adlibreg[512];\t// adlib register set (including second set)\n+static Bit8u wave_sel[44];\t\t// waveform selection\n+#else\n+static Bit8u adlibreg[256];\t// adlib register set\n+static Bit8u wave_sel[22];\t\t// waveform selection\n+#endif\n+\n+\n+\t\t\t\t\t\t// vibrato/tremolo increment/counter\n+static Bit32u vibtab_pos;\n+static Bit32u vibtab_add;\n+static Bit32u tremtab_pos;\n+static Bit32u tremtab_add;\n+\n+\n+// enable an operator\n+void enable_operator(Bitu regbase, op_type* op_pt, Bit32u act_type);\n+\n+// functions to change parameters of an operator\n+void change_frequency(Bitu chanbase, Bitu regbase, op_type* op_pt);\n+\n+void change_attackrate(Bitu regbase, op_type* op_pt);\n+void change_decayrate(Bitu regbase, op_type* op_pt);\n+void change_releaserate(Bitu regbase, op_type* op_pt);\n+void change_sustainlevel(Bitu regbase, op_type* op_pt);\n+void change_waveform(Bitu regbase, op_type* op_pt);\n+void change_keepsustain(Bitu regbase, op_type* op_pt);\n+void change_vibrato(Bitu regbase, op_type* op_pt);\n+void change_feedback(Bitu chanbase, op_type* op_pt);\n+\n \n static Bit32u generator_add;\t// should be a chip parameter\n \ndiff --git a/src/opl.h b/src/opl.h\nindex c8e643b..cbb56ad 100644\n--- a/src/opl.h\n+++ b/src/opl.h\n@@ -25,11 +25,8 @@\n  * Ken Silverman's official web site: \"http://www.advsys.net/ken\"\n  */\n \n-\n-#define fltype double\n-\n-#include <stdbool.h>\n #include <stdint.h>\n+\n typedef uintptr_t\tBitu;\n typedef intptr_t\tBits;\n typedef uint32_t\tBit32u;\n@@ -39,154 +36,6 @@ typedef int16_t\t\tBit16s;\n typedef uint8_t\t\tBit8u;\n typedef int8_t\t\tBit8s;\n \n-\n-/*\n-\tdefine attribution that inlines/forces inlining of a function (optional)\n-*/\n-#define OPL_INLINE inline\n-\n-\n-#undef NUM_CHANNELS\n-#if defined(OPLTYPE_IS_OPL3)\n-#define NUM_CHANNELS\t18\n-#else\n-#define NUM_CHANNELS\t9\n-#endif\n-\n-#define MAXOPERATORS\t(NUM_CHANNELS*2)\n-\n-\n-#define FL05\t((fltype)0.5)\n-#define FL2\t\t((fltype)2.0)\n-#define PI\t\t((fltype)3.1415926535897932384626433832795)\n-\n-\n-#define FIXEDPT\t\t\t0x10000\t\t// fixed-point calculations using 16+16\n-#define FIXEDPT_LFO\t\t0x1000000\t// fixed-point calculations using 8+24\n-\n-#define WAVEPREC\t\t1024\t\t// waveform precision (10 bits)\n-\n-#define INTFREQU\t\t((fltype)(14318180.0 / 288.0))\t\t// clocking of the chip\n-\n-\n-#define OF_TYPE_ATT\t\t\t0\n-#define OF_TYPE_DEC\t\t\t1\n-#define OF_TYPE_REL\t\t\t2\n-#define OF_TYPE_SUS\t\t\t3\n-#define OF_TYPE_SUS_NOKEEP\t4\n-#define OF_TYPE_OFF\t\t\t5\n-\n-#define ARC_CONTROL\t\t\t0x00\n-#define ARC_TVS_KSR_MUL\t\t0x20\n-#define ARC_KSL_OUTLEV\t\t0x40\n-#define ARC_ATTR_DECR\t\t0x60\n-#define ARC_SUSL_RELR\t\t0x80\n-#define ARC_FREQ_NUM\t\t0xa0\n-#define ARC_KON_BNUM\t\t0xb0\n-#define ARC_PERC_MODE\t\t0xbd\n-#define ARC_FEEDBACK\t\t0xc0\n-#define ARC_WAVE_SEL\t\t0xe0\n-\n-#define ARC_SECONDSET\t\t0x100\t// second operator set for OPL3\n-\n-\n-#define OP_ACT_OFF\t\t\t0x00\n-#define OP_ACT_NORMAL\t\t0x01\t// regular channel activated (bitmasked)\n-#define OP_ACT_PERC\t\t\t0x02\t// percussion channel activated (bitmasked)\n-\n-#define BLOCKBUF_SIZE\t\t512\n-\n-\n-// vibrato constants\n-#define VIBTAB_SIZE\t\t\t8\n-#define VIBFAC\t\t\t\t70/50000\t\t// no braces, integer mul/div\n-\n-// tremolo constants and table\n-#define TREMTAB_SIZE\t\t53\n-#define TREM_FREQ\t\t\t((fltype)(3.7))\t\t\t// tremolo at 3.7hz\n-\n-\n-/* operator struct definition\n-     For OPL2 all 9 channels consist of two operators each, carrier and modulator.\n-     Channel x has operators x as modulator and operators (9+x) as carrier.\n-     For OPL3 all 18 channels consist either of two operators (2op mode) or four\n-     operators (4op mode) which is determined through register4 of the second\n-     adlib register set.\n-     Only the channels 0,1,2 (first set) and 9,10,11 (second set) can act as\n-     4op channels. The two additional operators for a channel y come from the\n-     2op channel y+3 so the operatorss y, (9+y), y+3, (9+y)+3 make up a 4op\n-     channel.\n-*/\n-typedef struct operator_struct {\n-\tBit32s cval, lastcval;\t\t\t// current output/last output (used for feedback)\n-\tBit32u tcount, wfpos, tinc;\t\t// time (position in waveform) and time increment\n-\tfltype amp, step_amp;\t\t\t// and amplification (envelope)\n-\tfltype vol;\t\t\t\t\t\t// volume\n-\tfltype sustain_level;\t\t\t// sustain level\n-\tBit32s mfbi;\t\t\t\t\t// feedback amount\n-\tfltype a0, a1, a2, a3;\t\t\t// attack rate function coefficients\n-\tfltype decaymul, releasemul;\t// decay/release rate functions\n-\tBit32u op_state;\t\t\t\t// current state of operator (attack/decay/sustain/release/off)\n-\tBit32u toff;\n-\tBit32s freq_high;\t\t\t\t// highest three bits of the frequency, used for vibrato calculations\n-\tBit16s* cur_wform;\t\t\t\t// start of selected waveform\n-\tBit32u cur_wmask;\t\t\t\t// mask for selected waveform\n-\tBit32u act_state;\t\t\t\t// activity state (regular, percussion)\n-\tbool sus_keep;\t\t\t\t\t// keep sustain level when decay finished\n-\tbool vibrato,tremolo;\t\t\t// vibrato/tremolo enable bits\n-\t\n-\t// variables used to provide non-continuous envelopes\n-\tBit32u generator_pos;\t\t\t// for non-standard sample rates we need to determine how many samples have passed\n-\tBits cur_env_step;\t\t\t\t// current (standardized) sample position\n-\tBits env_step_a,env_step_d,env_step_r;\t// number of std samples of one step (for attack/decay/release mode)\n-\tBit8u step_skip_pos_a;\t\t\t// position of 8-cyclic step skipping (always 2^x to check against mask)\n-\tBits env_step_skip_a;\t\t\t// bitmask that determines if a step is skipped (respective bit is zero then)\n-\n-#if defined(OPLTYPE_IS_OPL3)\n-\tbool is_4op,is_4op_attached;\t// base of a 4op channel/part of a 4op channel\n-\tBit32s left_pan,right_pan;\t\t// opl3 stereo panning amount\n-#endif\n-} op_type;\n-\n-// per-chip variables\n-Bitu chip_num;\n-op_type op[MAXOPERATORS];\n-\n-Bits int_samplerate;\n-\t\n-Bit8u status;\n-Bit32u opl_index;\n-#if defined(OPLTYPE_IS_OPL3)\n-Bit8u adlibreg[512];\t// adlib register set (including second set)\n-Bit8u wave_sel[44];\t\t// waveform selection\n-#else\n-Bit8u adlibreg[256];\t// adlib register set\n-Bit8u wave_sel[22];\t\t// waveform selection\n-#endif\n-\n-\n-// vibrato/tremolo increment/counter\n-Bit32u vibtab_pos;\n-Bit32u vibtab_add;\n-Bit32u tremtab_pos;\n-Bit32u tremtab_add;\n-\n-\n-// enable an operator\n-void enable_operator(Bitu regbase, op_type* op_pt, Bit32u act_type);\n-\n-// functions to change parameters of an operator\n-void change_frequency(Bitu chanbase, Bitu regbase, op_type* op_pt);\n-\n-void change_attackrate(Bitu regbase, op_type* op_pt);\n-void change_decayrate(Bitu regbase, op_type* op_pt);\n-void change_releaserate(Bitu regbase, op_type* op_pt);\n-void change_sustainlevel(Bitu regbase, op_type* op_pt);\n-void change_waveform(Bitu regbase, op_type* op_pt);\n-void change_keepsustain(Bitu regbase, op_type* op_pt);\n-void change_vibrato(Bitu regbase, op_type* op_pt);\n-void change_feedback(Bitu chanbase, op_type* op_pt);\n-\n // general functions\n void adlib_init(Bit32u samplerate);\n void adlib_write(Bitu idx, Bit8u val);\n@@ -195,8 +44,8 @@ void adlib_getsample(Bit16s* sndptr, Bits numsamples);\n Bitu adlib_reg_read(Bitu port);\n void adlib_write_index(Bitu port, Bit8u val);\n \n-#endif /* OPL_H */\n-\n #define opl_init() adlib_init(OUTPUT_QUALITY * 11025)\n #define opl_write(reg, val) adlib_write(reg, val)\n #define opl_update(buf, num) adlib_getsample(buf, num)\n+\n+#endif /* OPL_H */\n"
  },
  {
    "path": "package/opentyrian/Config.in",
    "content": "config BR2_PACKAGE_OPENTYRIAN\n\tbool \"OpenTyrian\"\n\tselect BR2_PACKAGE_SDL\n\tselect BR2_PACKAGE_OPENTYRIAN_DATA\n\thelp\n\t  OpenTyrian is a port of the DOS shoot-em-up Tyrian. It uses\n\t  SDL, making it easily cross-platform.\n\t  It requires the original data files to run.\n\t  A display with minimum 640x480 resolution and a keyboard are\n\t  needed to play the game.\n\t  If you want some sound, activate ALSA with OSS emulation.\n\n\t  https://bitbucket.org/opentyrian/opentyrian/wiki/Home\n\nif BR2_PACKAGE_OPENTYRIAN\n\nconfig BR2_PACKAGE_OPENTYRIAN_NET\n\tbool \"network support\"\n\tdefault y\n\tselect BR2_PACKAGE_SDL_NET\n\thelp\n\t  Activates network support in OpenTyrian. Will add SDL_net.\n\nendif\n"
  },
  {
    "path": "package/opentyrian/opentyrian.hash",
    "content": "# Locally computed\nsha256  2b0db65c735cc099279ea3da6d9b76f791633897cd0f5b67528f70de0758a944  opentyrian-cf5dbeb69eebd9ef9afc4473088d9469b79589eb.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/opentyrian/opentyrian.mk",
    "content": "################################################################################\n#\n# opentyrian\n#\n################################################################################\n\nOPENTYRIAN_VERSION = cf5dbeb69eebd9ef9afc4473088d9469b79589eb\nOPENTYRIAN_SITE = $(call github,opentyrian,opentyrian,$(OPENTYRIAN_VERSION))\nOPENTYRIAN_LICENSE = GPL-2.0+\nOPENTYRIAN_LICENSE_FILES = COPYING\n\nOPENTYRIAN_DEPENDENCIES = sdl\n\nifeq ($(BR2_PACKAGE_OPENTYRIAN_NET),y)\nOPENTYRIAN_DEPENDENCIES += sdl_net\nOPENTYRIAN_NETWORK = true\nelse\nOPENTYRIAN_NETWORK = false\nendif\n\ndefine OPENTYRIAN_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) PLATFORM=UNIX \\\n\t\tCC=\"$(TARGET_CC)\" \\\n\t\tSTRIP=\"/bin/true\" \\\n\t\tSDL_CONFIG=\"$(STAGING_DIR)/usr/bin/sdl-config\" \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS) -lm\" \\\n\t\tWITH_NETWORK=\"$(OPENTYRIAN_NETWORK)\" \\\n\t\t-C $(@D) release\nendef\n\ndefine OPENTYRIAN_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/opentyrian $(TARGET_DIR)/usr/bin/opentyrian\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/opentyrian-data/Config.in",
    "content": "config BR2_PACKAGE_OPENTYRIAN_DATA\n\tbool \"OpenTyrian data\"\n\tdepends on BR2_PACKAGE_OPENTYRIAN\n\thelp\n\t  Data files to use with OpenTyrian game. Currently only the\n\t  original Tyrian 2.1 data files, that have been released as\n\t  Freeware in 2004, are compatible.\n\n\t  https://bitbucket.org/opentyrian/opentyrian/wiki/Home\n"
  },
  {
    "path": "package/opentyrian-data/opentyrian-data.hash",
    "content": "# Locally calculated\nsha256 7790d09a2a3addcd33c66ef063d5900eb81cc9c342f4807eb8356364dd1d9277 tyrian21.zip\n"
  },
  {
    "path": "package/opentyrian-data/opentyrian-data.mk",
    "content": "################################################################################\n#\n# opentyrian-data\n#\n################################################################################\n\nOPENTYRIAN_DATA_VERSION = 2.1\nOPENTYRIAN_DATA_SITE = http://www.camanis.net/opentyrian\nOPENTYRIAN_DATA_SOURCE = tyrian21.zip\nOPENTYRIAN_DATA_LICENSE = Freeware\n\ndefine OPENTYRIAN_DATA_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(OPENTYRIAN_DATA_DL_DIR)/$(OPENTYRIAN_DATA_SOURCE)\nendef\n\ndefine OPENTYRIAN_DATA_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/share/opentyrian/data/\n\tcp $(@D)/tyrian21/* $(TARGET_DIR)/usr/share/opentyrian/data/\n\trm -f $(TARGET_DIR)/usr/share/opentyrian/data/*.doc\n\trm -f $(TARGET_DIR)/usr/share/opentyrian/data/*.exe\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/openvmtools/0001-no_cflags_werror.patch",
    "content": "configure.ac: disable -Werror\n\nDisable the mandatory flag -Werror in configure.ac.\n\nSigned-off-by: Karoly Kasza <kaszak@gmail.com>\n\n--- open-vm-tools/configure.ac\t2015-06-17 10:02:00.000000000 +0200\n+++ open-vm-tools/configure.ac\t2015-06-17 10:02:00.000000000 +0200\n@@ -935,7 +935,7 @@\n \n ### General flags / actions\n CFLAGS=\"$CFLAGS -Wall\"\n-CFLAGS=\"$CFLAGS -Werror\"\n+# CFLAGS=\"$CFLAGS -Werror\"\n \n # -Wno-unknown-pragmas is due to gcc not understanding '#pragma ident'\n # in Xlib.h on OpenSolaris.\n\n"
  },
  {
    "path": "package/openvmtools/0002-dont-force-cppflags.patch",
    "content": "m4: do not force -I/usr/include in CPPFLAGS\n\nThis is so horribly broken for cross-compilation. :-(\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\n--- open-vm-tools/m4/vmtools.m4\t2015-06-17 10:03:00.000000000 +0200\n+++ open-vm-tools/m4/vmtools.m4\t2015-06-17 10:03:00.000000000 +0200\n@@ -281,10 +281,10 @@\n       if test \"$os\" = freebsd; then\n          CUSTOM_$1_CPPFLAGS=\"-I/usr/local/include\"\n       else\n-         CUSTOM_$1_CPPFLAGS=\"-I/usr/include\"\n+         CUSTOM_$1_CPPFLAGS=\" \"\n       fi\n       if test -n \"$2\"; then\n-         CUSTOM_$1_CPPFLAGS=\"${CUSTOM_$1_CPPFLAGS}/$2\"\n+         : CUSTOM_$1_CPPFLAGS=\"${CUSTOM_$1_CPPFLAGS}/$2\"\n       fi\n    fi\n ])\n"
  },
  {
    "path": "package/openvmtools/0003-Rename-poll-h-into-vm_poll-h-to-fix-build-failure-on-musl.patch",
    "content": "From 9d13e32e362ad3ce5169f49b7f0fe1d9380e558c Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 30 Sep 2019 13:32:35 +0200\nSubject: [PATCH] Rename poll.h into vm_poll.h to fix build failure on musl\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nmusl libc redirects include of sys/poll.h to poll.h. But since poll.h is\nalso a local header file, the musl libc header is never included. This\nleads to the following build failure:\n\nIn file included from asyncsocket.c:73:0:\n.../host/i586-buildroot-linux-musl/sysroot/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]\n #warning redirecting incorrect #include <sys/poll.h> to <poll.h>\nasyncsocket.c: In function ‘AsyncTCPSocketPollWork’:\nasyncsocket.c:2537:13: error: invalid use of undefined type ‘struct pollfd’\n          pfd[i].fd = asock[i]->fd;\n             ^\nasyncsocket.c:2537:13: error: dereferencing pointer to incomplete type ‘struct pollfd’\nasyncsocket.c:2538:13: error: invalid use of undefined type ‘struct pollfd’\n          pfd[i].events = read ? POLLIN : POLLOUT;\n             ^\nasyncsocket.c:2538:33: error: ‘POLLIN’ undeclared (first use in this function); did you mean ‘POLL_IN’?\n          pfd[i].events = read ? POLLIN : POLLOUT;\n\nSo rename poll.h into vm_poll.h as suggested by srowe in\nhttps://github.com/vmware/open-vm-tools/issues/359#issuecomment-533529956\n\nFixes:\n - http://autobuild.buildroot.org/results/4f575ef42bbc4387a07e396205052b2da081c64d\n\nFix #359\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/vmware/open-vm-tools/pull/383]\n---\n lib/asyncsocket/asyncsocket.c |   4 +-\n lib/hgfsServer/hgfsServer.c   |   2 +-\n lib/include/asyncsocket.h     |   2 +-\n lib/include/poll.h            | 330 --------------------\n lib/include/pollImpl.h        |   2 +-\n lib/include/vm_poll.h         | 330 ++++++++++++++++++++\n lib/rpcIn/rpcin.c             |   2 +-\n 7 files changed, 336 insertions(+), 336 deletions(-)\n delete mode 100644 open-vm-tools/lib/include/poll.h\n create mode 100644 open-vm-tools/lib/include/vm_poll.h\n\ndiff --git a/lib/asyncsocket/asyncsocket.c b/lib/asyncsocket/asyncsocket.c\nindex 102638cc..01181a95 100644\n--- a/lib/asyncsocket/asyncsocket.c\n+++ b/lib/asyncsocket/asyncsocket.c\n@@ -69,8 +69,8 @@\n #else\n #include <stddef.h>\n #include <ctype.h>\n+#include <poll.h>\n #include <sys/types.h>\n-#include <sys/poll.h>\n #include <sys/socket.h>\n #include <sys/un.h>\n #include <netdb.h>\n@@ -86,7 +86,7 @@\n #include \"random.h\"\n #include \"asyncsocket.h\"\n #include \"asyncSocketBase.h\"\n-#include \"poll.h\"\n+#include \"vm_poll.h\"\n #include \"log.h\"\n #include \"err.h\"\n #include \"hostinfo.h\"\ndiff --git a/lib/hgfsServer/hgfsServer.c b/lib/hgfsServer/hgfsServer.c\nindex 46224551..fc691286 100644\n--- a/lib/hgfsServer/hgfsServer.c\n+++ b/lib/hgfsServer/hgfsServer.c\n@@ -48,7 +48,7 @@\n #include \"hgfsServerOplock.h\"\n #include \"hgfsDirNotify.h\"\n #include \"userlock.h\"\n-#include \"poll.h\"\n+#include \"vm_poll.h\"\n #include \"mutexRankLib.h\"\n #include \"vm_basic_asm.h\"\n #include \"unicodeOperations.h\"\ndiff --git a/lib/include/asyncsocket.h b/lib/include/asyncsocket.h\nindex 95a5e464..a4b4e5aa 100644\n--- a/lib/include/asyncsocket.h\n+++ b/lib/include/asyncsocket.h\n@@ -164,7 +164,7 @@ typedef struct AsyncSocket AsyncSocket;\n  * Or the client can specify its favorite poll class and locking behavior.\n  * Use of IVmdbPoll is only supported for regular sockets and for Attach.\n  */\n-#include \"poll.h\"\n+#include \"vm_poll.h\"\n struct IVmdbPoll;\n typedef struct AsyncSocketPollParams {\n    int flags;               /* Default 0, only POLL_FLAG_NO_BULL is valid */\ndiff --git a/lib/include/poll.h b/lib/include/poll.h\ndeleted file mode 100644\nindex 6acd4f35..00000000\n--- a/lib/include/poll.h\n+++ /dev/null\n@@ -1,330 +0,0 @@\n-/*********************************************************\n- * Copyright (C) 1998-2018 VMware, Inc. All rights reserved.\n- *\n- * This program is free software; you can redistribute it and/or modify it\n- * under the terms of the GNU Lesser General Public License as published\n- * by the Free Software Foundation version 2.1 and no later version.\n- *\n- * This program is distributed in the hope that it will be useful, but\n- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n- * or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public\n- * License for more details.\n- *\n- * You should have received a copy of the GNU Lesser General Public License\n- * along with this program; if not, write to the Free Software Foundation, Inc.,\n- * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.\n- *\n- *********************************************************/\n-\n-/*********************************************************\n- * The contents of this file are subject to the terms of the Common\n- * Development and Distribution License (the \"License\") version 1.0\n- * and no later version.  You may not use this file except in\n- * compliance with the License.\n- *\n- * You can obtain a copy of the License at\n- *         http://www.opensource.org/licenses/cddl1.php\n- *\n- * See the License for the specific language governing permissions\n- * and limitations under the License.\n- *\n- *********************************************************/\n-\n-\n-#ifndef _POLL_H_\n-#define _POLL_H_\n-\n-#define INCLUDE_ALLOW_USERLEVEL\n-#define INCLUDE_ALLOW_VMCORE\n-#include \"includeCheck.h\"\n-\n-#include \"vm_basic_types.h\"\n-#include \"vm_basic_defs.h\"\n-#include \"vmware.h\"\n-#include \"userlock.h\"\n-\n-#if defined(__cplusplus)\n-extern \"C\" {\n-#endif\n-\n-#ifdef _WIN32\n-#define HZ 100\n-#elif defined linux\n-#include <asm/param.h>\n-#elif __APPLE__\n-#include <TargetConditionals.h>\n-/*\n- * Old SDKs don't define TARGET_OS_IPHONE at all.\n- * New ones define it to 0 on Mac OS X, 1 on iOS.\n- */\n-#if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0\n-#include <sys/kernel.h>\n-#endif\n-#include <sys/poll.h>\n-#define HZ 100\n-#endif\n-#ifdef __ANDROID__\n-/*\n- * <poll.h> of android should be included, but its name is same\n- * with this file. So its content is put here to avoid conflict.\n- */\n-#include <asm/poll.h>\n-#define HZ 100\n-typedef unsigned int  nfds_t;\n-int poll(struct pollfd *, nfds_t, long);\n-#endif\n-\n-\n-/*\n- * Poll event types: each type has a different reason for firing,\n- * or condition that must be met before firing.\n- */\n-\n-typedef enum {\n-   /*\n-    * Actual Poll queue types against which you can register callbacks.\n-    */\n-   POLL_VIRTUALREALTIME = -1, /* Negative because it doesn't have its own Q */\n-   POLL_VTIME = 0,\n-   POLL_REALTIME,\n-   POLL_DEVICE,\n-   POLL_MAIN_LOOP,\n-   POLL_NUM_QUEUES\n-} PollEventType;\n-\n-\n-/*\n- * Classes of events\n- *\n- * These are the predefined classes.  More can be declared\n- * with Poll_AllocClass().\n- */\n-\n-typedef enum PollClass {\n-   POLL_CLASS_MAIN,\n-   POLL_CLASS_PAUSE,\n-   POLL_CLASS_IPC,\n-   POLL_CLASS_CPT,\n-   POLL_CLASS_MKS,\n-   POLL_FIXED_CLASSES,\n-   POLL_DEFAULT_FIXED_CLASSES,\n-   /* Size enum to maximum */\n-   POLL_MAX_CLASSES = 31,\n-} PollClass;\n-\n-/*\n- * Do not use; Special pseudo private poll class supported by\n- * PollDefault only\n- */\n-#define POLL_DEFAULT_CLASS_NET POLL_FIXED_CLASSES\n-#define POLL_DEFAULT_CS_NET    PollClassSet_Singleton(POLL_DEFAULT_CLASS_NET)\n-\n-/*\n- * Each callback is registered in a set of classes\n- */\n-\n-typedef struct PollClassSet {\n-   uintptr_t bits;\n-} PollClassSet;\n-\n-/* An empty PollClassSet. */\n-static INLINE PollClassSet\n-PollClassSet_Empty(void)\n-{\n-   PollClassSet set = { 0 };\n-   return set;\n-}\n-\n-/* A PollClassSet with the single member. */\n-static INLINE PollClassSet\n-PollClassSet_Singleton(PollClass c)\n-{\n-   PollClassSet s = PollClassSet_Empty();\n-\n-   ASSERT_ON_COMPILE(POLL_MAX_CLASSES < sizeof s.bits * 8);\n-   ASSERT(c < POLL_MAX_CLASSES);\n-\n-   s.bits = CONST3264U(1) << c;\n-   return s;\n-}\n-\n-/* Combine two PollClassSets. */\n-static INLINE PollClassSet\n-PollClassSet_Union(PollClassSet lhs, PollClassSet rhs)\n-{\n-   PollClassSet set;\n-   set.bits = lhs.bits | rhs.bits;\n-   return set;\n-}\n-\n-/* Add single class to PollClassSet. */\n-static INLINE PollClassSet\n-PollClassSet_Include(PollClassSet set, PollClass c)\n-{\n-   return PollClassSet_Union(set, PollClassSet_Singleton(c));\n-}\n-\n-\n-#define POLL_CS_MAIN    PollClassSet_Singleton(POLL_CLASS_MAIN)\n-#define POLL_CS_PAUSE   PollClassSet_Union(POLL_CS_MAIN,            \\\n-                           PollClassSet_Singleton(POLL_CLASS_PAUSE))\n-#define POLL_CS_CPT     PollClassSet_Union(POLL_CS_PAUSE,           \\\n-                           PollClassSet_Singleton(POLL_CLASS_CPT))\n-#define POLL_CS_IPC     PollClassSet_Union(POLL_CS_CPT,             \\\n-                           PollClassSet_Singleton(POLL_CLASS_IPC))\n-#define POLL_CS_VMDB    POLL_CS_PAUSE /* POLL_CLASS_VMDB is retired */\n-#define POLL_CS_MKS\tPollClassSet_Singleton(POLL_CLASS_MKS)\n-/* \n- * DANGER.  You don't need POLL_CS_ALWAYS.  Really.  So don't use it.\n- */\n-#define POLL_CS_ALWAYS  PollClassSet_Union(POLL_CS_CPT, POLL_CS_IPC)\n-\n-/*\n- * Poll class-set taxonomy:\n- * POLL_CS_MAIN\n- *    - Unless you NEED another class, use POLL_CS_MAIN.\n- * POLL_CS_PAUSE\n- *    - For callbacks that must occur even if the guest is paused.\n- *      Most VMDB or Foundry commands are in this category.\n- * POLL_CS_CPT\n- *    - Only for callbacks which can trigger intermediate Checkpoint \n- *      transitions.\n- *      The ONLY such callback is Migrate.\n- * POLL_CS_IPC\n- *    - Only for callbacks which can contain Msg_(Post|Hint|Question) \n- *      responses, and for signal handlers (why)?\n- *      Vigor, VMDB, and Foundry can contain Msg_* responses.\n- * POLL_CS_MKS\n- *    - Callback runs in MKS thread.\n- * POLL_CS_ALWAYS\n- *    - Only for events that must be processed immediately.\n- *      The ONLY such callback is OvhdMemVmxSizeCheck.\n- */\n-\n-\n-/*\n- * Poll_Callback flags\n- */\n-\n-#define POLL_FLAG_PERIODIC\t\t0x01    // keep after firing\n-#define POLL_FLAG_REMOVE_AT_POWEROFF\t0x02  \t// self-explanatory\n-#define POLL_FLAG_READ\t\t\t0x04\t// device is ready for reading\n-#define POLL_FLAG_WRITE\t\t\t0x08\t// device is ready for writing\n-#define POLL_FLAG_SOCKET                0x10    // device is a Windows socket\n-#define POLL_FLAG_NO_BULL               0x20    // callback does its own locking\n-#define POLL_FLAG_WINSOCK               0x40    // Winsock style write events\n-#define POLL_FLAG_FD                    0x80    // device is a Windows file descriptor.\n-#define POLL_FLAG_ACCEPT_INVALID_FDS    0x100   // For broken 3rd party libs, e.g. curl\n-#define POLL_FLAG_THUNK_TO_WND          0x200   // thunk callback to window message loop\n-\n-\n-typedef void (*PollerFunction)(void *clientData);\n-typedef void (*PollerFireWrapper)(PollerFunction func,\n-                                  void *funcData,\n-                                  void *wrapperData);\n-typedef Bool (*PollerErrorFn)(const char *errorStr);\n-\n-/*\n- * Initialisers:\n- *\n- *      For the sake of convenience, we declare the initialisers\n- *      for custom implmentations here, even though the actual\n- *      implementations are distinct from the core poll code.\n- */\n-\n-typedef struct PollOptions {\n-   Bool locked;           // Use internal MXUser for locking\n-   Bool allowFullQueue;   // Don't assert when device event queue is full.\n-   VThreadID windowsMsgThread;       // thread that processes Windows messages\n-   PollerFireWrapper fireWrapperFn;  // optional; may be useful for stats\n-   void *fireWrapperData; // optional\n-   PollerErrorFn errorFn; // optional; called upon unrecoverable error\n-} PollOptions;\n-\n-\n-void Poll_InitDefault(void);\n-void Poll_InitDefaultEx(const PollOptions *opts);\n-void Poll_InitGtk(void); // On top of glib for Linux\n-void Poll_InitCF(void);  // On top of CoreFoundation for OSX\n-\n-\n-/*\n- * Functions\n- */\n-int Poll_SocketPair(Bool vmci, Bool stream, int fds[2]);\n-void Poll_Loop(Bool loop, Bool *exit, PollClass c);\n-void Poll_LoopTimeout(Bool loop, Bool *exit, PollClass c, int timeout);\n-Bool Poll_LockingEnabled(void);\n-void Poll_Exit(void);\n-\n-\n-/*\n- * Poll_Callback adds a callback regardless of whether an identical one exists.\n- * The exception to this rule is POLL_DEVICE callbacks: there is a maximum of\n- * one read and one write callback per fd.\n- *\n- * Poll_CallbackRemove removes one callback. If there are multiple identical\n- * callbacks, which one is removed is an implementation detail. Note that in\n- * the case of POLL_DEVICE and POLL_REALTIME callbacks, the fd/delay used to\n- * create the callback is not specified when removing, so all callbacks\n- * of those types with the same flags, function, and clientData are considered\n- * \"identical\" even if their fd/delay differed.\n- */\n-\n-VMwareStatus Poll_Callback(PollClassSet classSet,\n-                           int flags,\n-                           PollerFunction f,\n-                           void *clientData,\n-                           PollEventType type,\n-                           PollDevHandle info, // fd/microsec delay\n-                           MXUserRecLock *lck);\n-Bool Poll_CallbackRemove(PollClassSet classSet,\n-                         int flags,\n-                         PollerFunction f,\n-                         void *clientData,\n-                         PollEventType type);\n-Bool Poll_CallbackRemoveOneByCB(PollClassSet classSet,\n-                                int flags,\n-                                PollerFunction f,\n-                                PollEventType type,\n-                                void **clientData);\n-\n-void Poll_NotifyChange(PollClassSet classSet);\n-\n-/*\n- * Wrappers for Poll_Callback and Poll_CallbackRemove that present\n- * simpler subsets of those interfaces.\n- */\n-\n-VMwareStatus Poll_CB_Device(PollerFunction f,\n-                            void *clientData,\n-                            PollDevHandle device,\n-                            Bool periodic);\n-\n-Bool Poll_CB_DeviceRemove(PollerFunction f,\n-                          void *clientData,\n-                          Bool periodic);\n-\n-\n-VMwareStatus Poll_CB_RTime(PollerFunction f,\n-                           void *clientData,\n-                           int64 delay,   // microseconds\n-                           Bool periodic,\n-                           MXUserRecLock *lock);\n-\n-Bool Poll_CB_RTimeRemove(PollerFunction f,\n-                         void *clientData,\n-                         Bool periodic);\n-\n-\n-#ifdef _WIN32\n-void Poll_SetPumpsWindowsMessages(Bool pumps);\n-void Poll_SetWindowMessageRecipient(HWND hWnd, UINT msg, Bool alwaysThunk);\n-Bool Poll_FireWndCallback(void *lparam);\n-#endif\n-\n-#if defined(__cplusplus)\n-}  // extern \"C\"\n-#endif\n-\n-#endif // _POLL_H_\ndiff --git a/lib/include/pollImpl.h b/lib/include/pollImpl.h\nindex 46442e55..8bc66997 100644\n--- a/lib/include/pollImpl.h\n+++ b/lib/include/pollImpl.h\n@@ -44,7 +44,7 @@\n #define INCLUDE_ALLOW_USERLEVEL\n #include \"includeCheck.h\"\n \n-#include \"poll.h\"\n+#include \"vm_poll.h\"\n #include \"vm_basic_asm.h\"\n \n #if defined(__cplusplus)\ndiff --git a/lib/include/vm_poll.h b/lib/include/vm_poll.h\nnew file mode 100644\nindex 00000000..6acd4f35\n--- /dev/null\n+++ b/lib/include/vm_poll.h\n@@ -0,0 +1,330 @@\n+/*********************************************************\n+ * Copyright (C) 1998-2018 VMware, Inc. All rights reserved.\n+ *\n+ * This program is free software; you can redistribute it and/or modify it\n+ * under the terms of the GNU Lesser General Public License as published\n+ * by the Free Software Foundation version 2.1 and no later version.\n+ *\n+ * This program is distributed in the hope that it will be useful, but\n+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public\n+ * License for more details.\n+ *\n+ * You should have received a copy of the GNU Lesser General Public License\n+ * along with this program; if not, write to the Free Software Foundation, Inc.,\n+ * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.\n+ *\n+ *********************************************************/\n+\n+/*********************************************************\n+ * The contents of this file are subject to the terms of the Common\n+ * Development and Distribution License (the \"License\") version 1.0\n+ * and no later version.  You may not use this file except in\n+ * compliance with the License.\n+ *\n+ * You can obtain a copy of the License at\n+ *         http://www.opensource.org/licenses/cddl1.php\n+ *\n+ * See the License for the specific language governing permissions\n+ * and limitations under the License.\n+ *\n+ *********************************************************/\n+\n+\n+#ifndef _POLL_H_\n+#define _POLL_H_\n+\n+#define INCLUDE_ALLOW_USERLEVEL\n+#define INCLUDE_ALLOW_VMCORE\n+#include \"includeCheck.h\"\n+\n+#include \"vm_basic_types.h\"\n+#include \"vm_basic_defs.h\"\n+#include \"vmware.h\"\n+#include \"userlock.h\"\n+\n+#if defined(__cplusplus)\n+extern \"C\" {\n+#endif\n+\n+#ifdef _WIN32\n+#define HZ 100\n+#elif defined linux\n+#include <asm/param.h>\n+#elif __APPLE__\n+#include <TargetConditionals.h>\n+/*\n+ * Old SDKs don't define TARGET_OS_IPHONE at all.\n+ * New ones define it to 0 on Mac OS X, 1 on iOS.\n+ */\n+#if !defined(TARGET_OS_IPHONE) || TARGET_OS_IPHONE == 0\n+#include <sys/kernel.h>\n+#endif\n+#include <sys/poll.h>\n+#define HZ 100\n+#endif\n+#ifdef __ANDROID__\n+/*\n+ * <poll.h> of android should be included, but its name is same\n+ * with this file. So its content is put here to avoid conflict.\n+ */\n+#include <asm/poll.h>\n+#define HZ 100\n+typedef unsigned int  nfds_t;\n+int poll(struct pollfd *, nfds_t, long);\n+#endif\n+\n+\n+/*\n+ * Poll event types: each type has a different reason for firing,\n+ * or condition that must be met before firing.\n+ */\n+\n+typedef enum {\n+   /*\n+    * Actual Poll queue types against which you can register callbacks.\n+    */\n+   POLL_VIRTUALREALTIME = -1, /* Negative because it doesn't have its own Q */\n+   POLL_VTIME = 0,\n+   POLL_REALTIME,\n+   POLL_DEVICE,\n+   POLL_MAIN_LOOP,\n+   POLL_NUM_QUEUES\n+} PollEventType;\n+\n+\n+/*\n+ * Classes of events\n+ *\n+ * These are the predefined classes.  More can be declared\n+ * with Poll_AllocClass().\n+ */\n+\n+typedef enum PollClass {\n+   POLL_CLASS_MAIN,\n+   POLL_CLASS_PAUSE,\n+   POLL_CLASS_IPC,\n+   POLL_CLASS_CPT,\n+   POLL_CLASS_MKS,\n+   POLL_FIXED_CLASSES,\n+   POLL_DEFAULT_FIXED_CLASSES,\n+   /* Size enum to maximum */\n+   POLL_MAX_CLASSES = 31,\n+} PollClass;\n+\n+/*\n+ * Do not use; Special pseudo private poll class supported by\n+ * PollDefault only\n+ */\n+#define POLL_DEFAULT_CLASS_NET POLL_FIXED_CLASSES\n+#define POLL_DEFAULT_CS_NET    PollClassSet_Singleton(POLL_DEFAULT_CLASS_NET)\n+\n+/*\n+ * Each callback is registered in a set of classes\n+ */\n+\n+typedef struct PollClassSet {\n+   uintptr_t bits;\n+} PollClassSet;\n+\n+/* An empty PollClassSet. */\n+static INLINE PollClassSet\n+PollClassSet_Empty(void)\n+{\n+   PollClassSet set = { 0 };\n+   return set;\n+}\n+\n+/* A PollClassSet with the single member. */\n+static INLINE PollClassSet\n+PollClassSet_Singleton(PollClass c)\n+{\n+   PollClassSet s = PollClassSet_Empty();\n+\n+   ASSERT_ON_COMPILE(POLL_MAX_CLASSES < sizeof s.bits * 8);\n+   ASSERT(c < POLL_MAX_CLASSES);\n+\n+   s.bits = CONST3264U(1) << c;\n+   return s;\n+}\n+\n+/* Combine two PollClassSets. */\n+static INLINE PollClassSet\n+PollClassSet_Union(PollClassSet lhs, PollClassSet rhs)\n+{\n+   PollClassSet set;\n+   set.bits = lhs.bits | rhs.bits;\n+   return set;\n+}\n+\n+/* Add single class to PollClassSet. */\n+static INLINE PollClassSet\n+PollClassSet_Include(PollClassSet set, PollClass c)\n+{\n+   return PollClassSet_Union(set, PollClassSet_Singleton(c));\n+}\n+\n+\n+#define POLL_CS_MAIN    PollClassSet_Singleton(POLL_CLASS_MAIN)\n+#define POLL_CS_PAUSE   PollClassSet_Union(POLL_CS_MAIN,            \\\n+                           PollClassSet_Singleton(POLL_CLASS_PAUSE))\n+#define POLL_CS_CPT     PollClassSet_Union(POLL_CS_PAUSE,           \\\n+                           PollClassSet_Singleton(POLL_CLASS_CPT))\n+#define POLL_CS_IPC     PollClassSet_Union(POLL_CS_CPT,             \\\n+                           PollClassSet_Singleton(POLL_CLASS_IPC))\n+#define POLL_CS_VMDB    POLL_CS_PAUSE /* POLL_CLASS_VMDB is retired */\n+#define POLL_CS_MKS\tPollClassSet_Singleton(POLL_CLASS_MKS)\n+/* \n+ * DANGER.  You don't need POLL_CS_ALWAYS.  Really.  So don't use it.\n+ */\n+#define POLL_CS_ALWAYS  PollClassSet_Union(POLL_CS_CPT, POLL_CS_IPC)\n+\n+/*\n+ * Poll class-set taxonomy:\n+ * POLL_CS_MAIN\n+ *    - Unless you NEED another class, use POLL_CS_MAIN.\n+ * POLL_CS_PAUSE\n+ *    - For callbacks that must occur even if the guest is paused.\n+ *      Most VMDB or Foundry commands are in this category.\n+ * POLL_CS_CPT\n+ *    - Only for callbacks which can trigger intermediate Checkpoint \n+ *      transitions.\n+ *      The ONLY such callback is Migrate.\n+ * POLL_CS_IPC\n+ *    - Only for callbacks which can contain Msg_(Post|Hint|Question) \n+ *      responses, and for signal handlers (why)?\n+ *      Vigor, VMDB, and Foundry can contain Msg_* responses.\n+ * POLL_CS_MKS\n+ *    - Callback runs in MKS thread.\n+ * POLL_CS_ALWAYS\n+ *    - Only for events that must be processed immediately.\n+ *      The ONLY such callback is OvhdMemVmxSizeCheck.\n+ */\n+\n+\n+/*\n+ * Poll_Callback flags\n+ */\n+\n+#define POLL_FLAG_PERIODIC\t\t0x01    // keep after firing\n+#define POLL_FLAG_REMOVE_AT_POWEROFF\t0x02  \t// self-explanatory\n+#define POLL_FLAG_READ\t\t\t0x04\t// device is ready for reading\n+#define POLL_FLAG_WRITE\t\t\t0x08\t// device is ready for writing\n+#define POLL_FLAG_SOCKET                0x10    // device is a Windows socket\n+#define POLL_FLAG_NO_BULL               0x20    // callback does its own locking\n+#define POLL_FLAG_WINSOCK               0x40    // Winsock style write events\n+#define POLL_FLAG_FD                    0x80    // device is a Windows file descriptor.\n+#define POLL_FLAG_ACCEPT_INVALID_FDS    0x100   // For broken 3rd party libs, e.g. curl\n+#define POLL_FLAG_THUNK_TO_WND          0x200   // thunk callback to window message loop\n+\n+\n+typedef void (*PollerFunction)(void *clientData);\n+typedef void (*PollerFireWrapper)(PollerFunction func,\n+                                  void *funcData,\n+                                  void *wrapperData);\n+typedef Bool (*PollerErrorFn)(const char *errorStr);\n+\n+/*\n+ * Initialisers:\n+ *\n+ *      For the sake of convenience, we declare the initialisers\n+ *      for custom implmentations here, even though the actual\n+ *      implementations are distinct from the core poll code.\n+ */\n+\n+typedef struct PollOptions {\n+   Bool locked;           // Use internal MXUser for locking\n+   Bool allowFullQueue;   // Don't assert when device event queue is full.\n+   VThreadID windowsMsgThread;       // thread that processes Windows messages\n+   PollerFireWrapper fireWrapperFn;  // optional; may be useful for stats\n+   void *fireWrapperData; // optional\n+   PollerErrorFn errorFn; // optional; called upon unrecoverable error\n+} PollOptions;\n+\n+\n+void Poll_InitDefault(void);\n+void Poll_InitDefaultEx(const PollOptions *opts);\n+void Poll_InitGtk(void); // On top of glib for Linux\n+void Poll_InitCF(void);  // On top of CoreFoundation for OSX\n+\n+\n+/*\n+ * Functions\n+ */\n+int Poll_SocketPair(Bool vmci, Bool stream, int fds[2]);\n+void Poll_Loop(Bool loop, Bool *exit, PollClass c);\n+void Poll_LoopTimeout(Bool loop, Bool *exit, PollClass c, int timeout);\n+Bool Poll_LockingEnabled(void);\n+void Poll_Exit(void);\n+\n+\n+/*\n+ * Poll_Callback adds a callback regardless of whether an identical one exists.\n+ * The exception to this rule is POLL_DEVICE callbacks: there is a maximum of\n+ * one read and one write callback per fd.\n+ *\n+ * Poll_CallbackRemove removes one callback. If there are multiple identical\n+ * callbacks, which one is removed is an implementation detail. Note that in\n+ * the case of POLL_DEVICE and POLL_REALTIME callbacks, the fd/delay used to\n+ * create the callback is not specified when removing, so all callbacks\n+ * of those types with the same flags, function, and clientData are considered\n+ * \"identical\" even if their fd/delay differed.\n+ */\n+\n+VMwareStatus Poll_Callback(PollClassSet classSet,\n+                           int flags,\n+                           PollerFunction f,\n+                           void *clientData,\n+                           PollEventType type,\n+                           PollDevHandle info, // fd/microsec delay\n+                           MXUserRecLock *lck);\n+Bool Poll_CallbackRemove(PollClassSet classSet,\n+                         int flags,\n+                         PollerFunction f,\n+                         void *clientData,\n+                         PollEventType type);\n+Bool Poll_CallbackRemoveOneByCB(PollClassSet classSet,\n+                                int flags,\n+                                PollerFunction f,\n+                                PollEventType type,\n+                                void **clientData);\n+\n+void Poll_NotifyChange(PollClassSet classSet);\n+\n+/*\n+ * Wrappers for Poll_Callback and Poll_CallbackRemove that present\n+ * simpler subsets of those interfaces.\n+ */\n+\n+VMwareStatus Poll_CB_Device(PollerFunction f,\n+                            void *clientData,\n+                            PollDevHandle device,\n+                            Bool periodic);\n+\n+Bool Poll_CB_DeviceRemove(PollerFunction f,\n+                          void *clientData,\n+                          Bool periodic);\n+\n+\n+VMwareStatus Poll_CB_RTime(PollerFunction f,\n+                           void *clientData,\n+                           int64 delay,   // microseconds\n+                           Bool periodic,\n+                           MXUserRecLock *lock);\n+\n+Bool Poll_CB_RTimeRemove(PollerFunction f,\n+                         void *clientData,\n+                         Bool periodic);\n+\n+\n+#ifdef _WIN32\n+void Poll_SetPumpsWindowsMessages(Bool pumps);\n+void Poll_SetWindowMessageRecipient(HWND hWnd, UINT msg, Bool alwaysThunk);\n+Bool Poll_FireWndCallback(void *lparam);\n+#endif\n+\n+#if defined(__cplusplus)\n+}  // extern \"C\"\n+#endif\n+\n+#endif // _POLL_H_\ndiff --git a/lib/rpcIn/rpcin.c b/lib/rpcIn/rpcin.c\nindex 47a3380e..660382c6 100644\n--- a/lib/rpcIn/rpcin.c\n+++ b/lib/rpcIn/rpcin.c\n@@ -57,7 +57,7 @@\n \n #if defined(VMTOOLS_USE_VSOCKET)\n #  include <glib.h>\n-#  include \"poll.h\"\n+#  include \"vm_poll.h\"\n #  include \"asyncsocket.h\"\n #  include \"vmci_defs.h\"\n #include \"dataMap.h\"\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/openvmtools/0004-Remove-assumptions-about-glibc-being-only-libc-imple.patch",
    "content": "From a0983d84185f04c4e40778fe951fde4439894882 Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Sun, 16 Jul 2017 07:37:03 -0700\nSubject: [PATCH] Remove assumptions about glibc being only libc\n implementation on linux\n\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\n[Retrieved (and updated to work on current version) from:\nhttp://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0001-Remove-assumptions-about-glibc-being-only-libc-imple.patch?h=sumo]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n open-vm-tools/lib/file/fileIOPosix.c      | 2 +-\n 2 files changed, 3 insertions(+), 1 deletion(-)\n\nIndex: open-vm-tools/lib/file/fileIOPosix.c\n===================================================================\n--- open-vm-tools.orig/lib/file/fileIOPosix.c\n+++ open-vm-tools/lib/file/fileIOPosix.c\n@@ -205,7 +205,7 @@ static AlignedPool alignedPool;\n  * are not available in any header file.\n  */\n \n-#if defined(__linux__) && !defined(__ANDROID__)\n+#if defined(__linux__) && defined(__GLIBC__)\n    #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)\n       /*\n        * We want preadv/pwritev. But due to FOB=64, the symbols are -64.\n"
  },
  {
    "path": "package/openvmtools/0005-Use-configure-test-for-struct-timespec.patch",
    "content": "From bf1eafb07297711baf9320b1edcca8a3376f117d Mon Sep 17 00:00:00 2001\nFrom: Natanael Copa <ncopa@alpinelinux.org>\nDate: Wed, 18 Nov 2015 09:03:00 +0000\nSubject: [PATCH] Use configure test for struct timespec\n\nUse the configure script to test for struct time spec instead of trying\nto keep track of what platforms has it.\n\nSigned-off-by: Natanael Copa <ncopa@alpinelinux.org>\n[Retrieved from:\nhttp://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0005-Use-configure-test-for-struct-timespec.patch?h=sumo]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n open-vm-tools/configure.ac           | 1 +\n open-vm-tools/lib/include/hgfsUtil.h | 8 +-------\n 2 files changed, 2 insertions(+), 7 deletions(-)\n\nIndex: open-vm-tools/configure.ac\n===================================================================\n--- open-vm-tools.orig/configure.ac\n+++ open-vm-tools/configure.ac\n@@ -1127,6 +1127,7 @@ AC_TYPE_OFF_T\n AC_TYPE_PID_T\n AC_TYPE_SIZE_T\n AC_CHECK_MEMBERS([struct stat.st_rdev])\n+AC_CHECK_MEMBERS([struct timespec.tv_sec],[],[],[[#include <time.h>]])\n AC_HEADER_TIME\n AC_STRUCT_TM\n AC_C_VOLATILE\nIndex: open-vm-tools/lib/include/hgfsUtil.h\n===================================================================\n--- open-vm-tools.orig/lib/include/hgfsUtil.h\n+++ open-vm-tools/lib/include/hgfsUtil.h\n@@ -53,13 +53,7 @@\n #      include <time.h>\n #   endif\n #   include \"vm_basic_types.h\"\n-#   if !defined _STRUCT_TIMESPEC &&   \\\n-       !defined _TIMESPEC_DECLARED && \\\n-       !defined __timespec_defined && \\\n-       !defined sun && \\\n-       !defined __FreeBSD__ && \\\n-       !__APPLE__ && \\\n-       !defined _WIN32\n+#   if !defined HAVE_STRUCT_TIMESPEC_TV_SEC\n struct timespec {\n    time_t tv_sec;\n    long   tv_nsec;\n"
  },
  {
    "path": "package/openvmtools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch",
    "content": "From 31ae6f42458f90d4994a4ad8e2b7673691612c36 Mon Sep 17 00:00:00 2001\nFrom: Natanael Copa <ncopa@alpinelinux.org>\nDate: Wed, 18 Nov 2015 09:10:14 +0000\nSubject: [PATCH] Fix definition of ALLPERMS and ACCESSPERMS\n\nThe ALLPERMS and ACCESSPERMS defines are not specified in POSIX so\nassume it is not there instead of testing for specific implementations.\n\nThis is needed for musl libc.\n\nSigned-off-by: Natanael Copa <ncopa@alpinelinux.org>\n[Retrieved from:\nhttp://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0006-Fix-definition-of-ALLPERMS-and-ACCESSPERMS.patch?h=sumo]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n open-vm-tools/lib/hgfsServer/hgfsServerLinux.c      | 8 +++++---\n open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c | 3 +--\n 2 files changed, 6 insertions(+), 5 deletions(-)\n\nIndex: open-vm-tools/lib/hgfsServer/hgfsServerLinux.c\n===================================================================\n--- open-vm-tools.orig/lib/hgfsServer/hgfsServerLinux.c\n+++ open-vm-tools/lib/hgfsServer/hgfsServerLinux.c\n@@ -107,11 +107,13 @@ typedef struct DirectoryEntry {\n #endif\n \n /*\n- * ALLPERMS (mode 07777) and ACCESSPERMS (mode 0777) are not defined in the\n- * Solaris version of <sys/stat.h>.\n+ * ALLPERMS (mode 07777) and ACCESSPERMS (mode 0777) are not specified in\n+ * POSIX.\n  */\n-#ifdef sun\n+#ifndef ACCESSPERMS\n #   define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO)\n+#endif\n+#ifndef ALLPERMS\n #   define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)\n #endif\n \nIndex: open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c\n===================================================================\n--- open-vm-tools.orig/services/plugins/dndcp/dnd/dndLinux.c\n+++ open-vm-tools/services/plugins/dndcp/dnd/dndLinux.c\n@@ -51,7 +51,7 @@\n \n #define DND_ROOTDIR_PERMS     (S_IRWXU | S_IRWXG | S_IRWXO)\n #define DND_STAGINGDIR_PERMS  (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)\n-#ifdef sun\n+#ifndef ACCESSPERMS\n #define ACCESSPERMS           (S_IRWXU | S_IRWXG | S_IRWXO)\n #endif\n #ifdef __ANDROID__\n@@ -60,7 +60,6 @@\n  */\n #define NO_SETMNTENT\n #define NO_ENDMNTENT\n-#define ACCESSPERMS           (S_IRWXU | S_IRWXG | S_IRWXO)\n #endif\n \n \n"
  },
  {
    "path": "package/openvmtools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch",
    "content": "From 6cc1c22cc30320f56da552a76bd956db8f255b6a Mon Sep 17 00:00:00 2001\nFrom: Natanael Copa <ncopa@alpinelinux.org>\nDate: Wed, 18 Nov 2015 10:05:07 +0000\nSubject: [PATCH] Use configure to test for feature instead of platform\n\nTest for various functions instead of trying to keep track of what\nplatform and what version of the given platform has support for what.\n\nThis should make it easier to port to currently unknown platforms and\nwill solve the issue if a platform add support for a missing feature in\nthe future.\n\nThe features we test for are:\n- getifaddrs\n- getauxval\n- issetugid\n- __secure_getenv\n\nThis is needed for musl libc.\n\nSigned-off-by: Natanael Copa <ncopa@alpinelinux.org>\n[Retrieved (and slightly updated) from:\nhttp://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0007-Use-configure-to-test-for-feature-instead-of-platfor.patch?h=sumo]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n open-vm-tools/configure.ac               |  4 ++++\n open-vm-tools/lib/misc/idLinux.c         | 30 ++++++++++++++----------------\n open-vm-tools/lib/nicInfo/nicInfoPosix.c |  8 ++++++--\n 3 files changed, 24 insertions(+), 18 deletions(-)\n\nIndex: open-vm-tools/configure.ac\n===================================================================\n--- open-vm-tools.orig/configure.ac\n+++ open-vm-tools/configure.ac\n@@ -798,6 +798,7 @@ AC_CHECK_FUNCS(\n \n AC_CHECK_FUNCS([ecvt])\n AC_CHECK_FUNCS([fcvt])\n+AC_CHECK_FUNCS([getifaddrs getauxval issetugid __secure_getenv])\n \n AC_CHECK_FUNC([mkdtemp], [have_mkdtemp=yes])\n \n@@ -1063,10 +1064,13 @@ AC_PATH_PROG(\n ###\n \n AC_CHECK_HEADERS([crypt.h])\n+AC_CHECK_HEADERS([ifaddrs.h])\n AC_CHECK_HEADERS([inttypes.h])\n AC_CHECK_HEADERS([stdint.h])\n AC_CHECK_HEADERS([stdlib.h])\n AC_CHECK_HEADERS([wchar.h])\n+AC_CHECK_HEADERS([net/if.h])\n+AC_CHECK_HEADERS([sys/auxv.h])\n AC_CHECK_HEADERS([sys/inttypes.h])\n AC_CHECK_HEADERS([sys/io.h])\n AC_CHECK_HEADERS([sys/param.h]) # Required to make the sys/user.h check work correctly on FreeBSD\nIndex: open-vm-tools/lib/misc/idLinux.c\n===================================================================\n--- open-vm-tools.orig/lib/misc/idLinux.c\n+++ open-vm-tools/lib/misc/idLinux.c\n@@ -27,12 +27,9 @@\n #include <sys/syscall.h>\n #include <string.h>\n #include <unistd.h>\n-#ifdef __linux__\n-#if defined(__GLIBC__) && \\\n-           (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))\n+#ifdef HAVE_SYS_AUXV_H\n #include <sys/auxv.h>\n #endif\n-#endif\n #ifdef __APPLE__\n #include <sys/socket.h>\n #include <TargetConditionals.h>\n@@ -997,31 +994,32 @@ Id_EndSuperUser(uid_t uid)  // IN:\n static Bool\n IdIsSetUGid(void)\n {\n-#if defined(__ANDROID__)\n-   /* Android does not have a secure_getenv, so be conservative. */\n-   return TRUE;\n-#else\n    /*\n     * We use __secure_getenv, which returns NULL if the binary is\n-    * setuid or setgid. Alternatives include,\n+    * setuid or setgid, when issetugid or getauxval(AT_SECURE) is not\n+    * available. Alternatives include,\n     *\n-    *   a) getauxval(AT_SECURE); not available until glibc 2.16.\n-    *   b) __libc_enable_secure; may not be exported.\n+    *   a) issetugid(); not (yet?) available in glibc.\n+    *   b) getauxval(AT_SECURE); not available until glibc 2.16.\n+    *   c) __libc_enable_secure; may not be exported.\n     *\n-    * Use (a) when we are based on glibc 2.16, or newer.\n+    * Use (b) when we are based on glibc 2.16, or newer.\n     */\n \n-#if defined(__GLIBC__) && \\\n-           (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))\n+#if HAVE_ISSETUGID\n+   return issetugid();\n+#elif HAVE_GETAUXVAL\n    return getauxval(AT_SECURE) != 0;\n-#else\n+#elif HAVE___SECURE_GETENV\n    static const char envName[] = \"VMW_SETUGID_TEST\";\n \n    if (setenv(envName, \"1\", TRUE) == -1) {\n       return TRUE; /* Conservative */\n    }\n    return __secure_getenv(envName) == NULL;\n-#endif\n+#else\n+   /* Android does not have a secure_getenv, so be conservative. */\n+   return TRUE;\n #endif\n }\n #endif\nIndex: open-vm-tools/lib/nicInfo/nicInfoPosix.c\n===================================================================\n--- open-vm-tools.orig/lib/nicInfo/nicInfoPosix.c\n+++ open-vm-tools/lib/nicInfo/nicInfoPosix.c\n@@ -34,9 +34,13 @@\n #include <sys/socket.h>\n #include <sys/stat.h>\n #include <errno.h>\n-#if defined(__FreeBSD__) || defined(__APPLE__)\n+#if HAVE_SYS_SYSCTL_H\n # include <sys/sysctl.h>\n+#endif\n+#if HAVE_IFADDRS_H\n # include <ifaddrs.h>\n+#endif\n+#if HAVE_NET_IF_H\n # include <net/if.h>\n #endif\n #ifndef NO_DNET\n@@ -348,10 +352,7 @@ GuestInfoGetNicInfo(NicInfoV3 *nicInfo)\n  *\n  ******************************************************************************\n  */\n-#if defined(__FreeBSD__) || \\\n-    defined(__APPLE__) || \\\n-    defined(USERWORLD) || \\\n-    (defined(__linux__) && defined(NO_DNET))\n+#if defined(NO_DNET) && defined(HAVE_GETIFADDRS)\n \n char *\n GuestInfoGetPrimaryIP(void)\n"
  },
  {
    "path": "package/openvmtools/0008-Use-configure-test-for-sys-stat.h-include.patch",
    "content": "From 95c6184d9ff70a47c41768850923a96de9e544aa Mon Sep 17 00:00:00 2001\nFrom: Natanael Copa <ncopa@alpinelinux.org>\nDate: Wed, 18 Nov 2015 10:41:01 +0000\nSubject: [PATCH] Use configure test for sys/stat.h include\n\nThis is needed for musl libc.\n\nSigned-off-by: Natanael Copa <ncopa@alpinelinux.org>\n[Retrieved from:\nhttp://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/open-vm-tools/open-vm-tools/0011-Use-configure-test-for-sys-stat.h-include.patch?h=sumo]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n open-vm-tools/services/plugins/vix/vixTools.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\nIndex: open-vm-tools/services/plugins/vix/vixTools.c\n===================================================================\n--- open-vm-tools.orig/services/plugins/vix/vixTools.c\n+++ open-vm-tools/services/plugins/vix/vixTools.c\n@@ -66,7 +66,7 @@\n #include <unistd.h>\n #endif\n \n-#if defined(sun) || defined(__FreeBSD__) || defined(__APPLE__)\n+#ifdef HAVE_SYS_STAT_H\n #include <sys/stat.h>\n #endif\n \n"
  },
  {
    "path": "package/openvmtools/0009-Set-permissions-on-rules-file.patch",
    "content": "From c3ef6a8285132871ad10f9300d8afff55d8d6de2 Mon Sep 17 00:00:00 2001\nFrom: puneetse <22071208+puneetse@users.noreply.github.com>\nDate: Wed, 16 Oct 2019 10:09:38 -0700\nSubject: [PATCH] Set permissions on rules file\n\nudevs rules should not be executable otherwise udev will log a warning in the journal\n\nSigned-off-by: Pascal de Bruijn <p.debruijn@unilogic.nl>\n---\n udev/Makefile.am | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/udev/Makefile.am b/udev/Makefile.am\nindex 68fbc3e27..8b9a4d716 100644\n--- a/udev/Makefile.am\n+++ b/udev/Makefile.am\n@@ -17,5 +17,5 @@\n \n install-data-local:\n \t$(INSTALL) -d $(DESTDIR)$(UDEVRULESDIR)\n-\t$(INSTALL) $(srcdir)/99-vmware-scsi-udev.rules $(DESTDIR)$(UDEVRULESDIR)\n+\t$(INSTALL) -m 0644 $(srcdir)/99-vmware-scsi-udev.rules $(DESTDIR)$(UDEVRULESDIR)\n \n"
  },
  {
    "path": "package/openvmtools/0010-Change-DEVPATH-to-devpath.patch",
    "content": "From 22f5d198b3b2f7e4debed83948ba1baf70d4749a Mon Sep 17 00:00:00 2001\nFrom: puneetse <22071208+puneetse@users.noreply.github.com>\nDate: Wed, 16 Oct 2019 10:04:41 -0700\nSubject: [PATCH] Change $DEVPATH to $devpath\n\n$DEVPATH throws a warning by udev.\n\nSigned-off-by: Pascal de Bruijn <p.debruijn@unilogic.nl>\n---\n udev/99-vmware-scsi-udev.rules | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/udev/99-vmware-scsi-udev.rules b/udev/99-vmware-scsi-udev.rules\nindex 053b59706..a605d80ef 100644\n--- a/udev/99-vmware-scsi-udev.rules\n+++ b/udev/99-vmware-scsi-udev.rules\n@@ -2,6 +2,6 @@\n #\n # This file is part of open-vm-tools\n \n-ACTION==\"add\", SUBSYSTEMS==\"scsi\", ATTRS{vendor}==\"VMware*\", ATTRS{model}==\"Virtual disk*\", ENV{DEVTYPE}==\"disk\", RUN+=\"/bin/sh -c 'echo 180 >/sys$DEVPATH/device/timeout'\"\n-ACTION==\"add\", SUBSYSTEMS==\"scsi\", ATTRS{vendor}==\"VMware*\", ATTRS{model}==\"VMware Virtual S\", ENV{DEVTYPE}==\"disk\", RUN+=\"/bin/sh -c 'echo 180 >/sys$DEVPATH/device/timeout'\"\n+ACTION==\"add\", SUBSYSTEMS==\"scsi\", ATTRS{vendor}==\"VMware*\", ATTRS{model}==\"Virtual disk*\", ENV{DEVTYPE}==\"disk\", RUN+=\"/bin/sh -c 'echo 180 >/sys/$devpath/device/timeout'\"\n+ACTION==\"add\", SUBSYSTEMS==\"scsi\", ATTRS{vendor}==\"VMware*\", ATTRS{model}==\"VMware Virtual S\", ENV{DEVTYPE}==\"disk\", RUN+=\"/bin/sh -c 'echo 180 >/sys/$devpath/device/timeout'\"\n \n"
  },
  {
    "path": "package/openvmtools/0011-open-vm-tools-vmhgfs-fuse-fsutils.h-fix-build-on-mus.patch",
    "content": "From 0a5032669951ffd6735c294a6f309b0ec6667ea5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 8 Mar 2020 18:49:00 +0100\nSubject: [PATCH] open-vm-tools/vmhgfs-fuse/fsutils.h: fix build on musl\n\nloff_t is not defined on musl so define it to avoid the following build\nfailure:\n\nIn file included from module.h:39,\n                 from bdhandler.c:31:\nfsutil.h:76:11: error: unknown type name 'loff_t'; did you mean 'off_t'?\n           loff_t offset);\n           ^~~~~~\n           off_t\n\nFixes:\n - http://autobuild.buildroot.org/results/4eba7c4585d318efdb9b965d58d879426588aa14\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not sent yet (upstream is not reactive on third patch]\n---\n vmhgfs-fuse/fsutil.h | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/vmhgfs-fuse/fsutil.h b/vmhgfs-fuse/fsutil.h\nindex 34b6d489..a94f9fbb 100644\n--- a/vmhgfs-fuse/fsutil.h\n+++ b/vmhgfs-fuse/fsutil.h\n@@ -32,7 +32,8 @@\n #include \"hgfsProto.h\"\n #include <fuse.h>\n \n-#if defined(__FreeBSD__) || defined(__SOLARIS__) || defined(__APPLE__)\n+#if defined(__FreeBSD__) || defined(__SOLARIS__) || defined(__APPLE__) || \\\n+\t!(defined(__GLIBC__) || defined(__UCLIBC__))\n typedef long long loff_t;\n #endif\n \n-- \n2.25.0\n\n"
  },
  {
    "path": "package/openvmtools/0012-Make-HgfsConvertFromNtTimeNsec-aware-of-64-bit-time_.patch",
    "content": "From 3f0580f2546de8be7acf1bc78a55a257bc638ebe Mon Sep 17 00:00:00 2001\nFrom: Bartosz Brachaczek <b.brachaczek@gmail.com>\nDate: Tue, 12 Nov 2019 14:31:08 +0100\nSubject: [PATCH] Make HgfsConvertFromNtTimeNsec aware of 64-bit time_t on i386\n\nI verified that this function behaves as expected on x86_64, i386 with\n32-bit time_t, and i386 with 64-bit time_t for the following values of\nntTtime:\n\nUNIX_EPOCH-1, UNIX_EPOCH, UNIX_EPOCH+1, UNIX_S32_MAX-1, UNIX_S32_MAX,\nUNIX_S32_MAX+1, UNIX_S32_MAX*2+1\n\nI did not verify whether the use of Div643264 is optimal, performance\nwise.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>\n---\n lib/hgfs/hgfsUtil.c | 34 +++++++++++++++++++---------------\n 1 file changed, 19 insertions(+), 15 deletions(-)\n\ndiff --git a/lib/hgfs/hgfsUtil.c b/lib/hgfs/hgfsUtil.c\nindex cc580ab8..49b10040 100644\n--- a/lib/hgfs/hgfsUtil.c\n+++ b/lib/hgfs/hgfsUtil.c\n@@ -110,23 +110,21 @@ HgfsConvertFromNtTimeNsec(struct timespec *unixTime, // OUT: Time in UNIX format\n \t\t\t  uint64 ntTime) // IN: Time in Windows NT format\n {\n #ifdef __i386__\n-   uint32 sec;\n-   uint32 nsec;\n+   uint64 sec64;\n+   uint32 sec32, nsec;\n+#endif\n \n    ASSERT(unixTime);\n-   /* We assume that time_t is 32bit */\n-   ASSERT_ON_COMPILE(sizeof (unixTime->tv_sec) == 4);\n \n-   /* Cap NT time values that are outside of Unix time's range */\n+   if (sizeof (unixTime->tv_sec) == 4) {\n+      /* Cap NT time values that are outside of Unix time's range */\n \n-   if (ntTime >= UNIX_S32_MAX) {\n-      unixTime->tv_sec = 0x7FFFFFFF;\n-      unixTime->tv_nsec = 0;\n-      return 1;\n+      if (ntTime >= UNIX_S32_MAX) {\n+         unixTime->tv_sec = 0x7FFFFFFF;\n+         unixTime->tv_nsec = 0;\n+         return 1;\n+      }\n    }\n-#else\n-   ASSERT(unixTime);\n-#endif\n \n    if (ntTime < UNIX_EPOCH) {\n       unixTime->tv_sec = 0;\n@@ -135,9 +133,15 @@ HgfsConvertFromNtTimeNsec(struct timespec *unixTime, // OUT: Time in UNIX format\n    }\n \n #ifdef __i386__\n-   Div643232(ntTime - UNIX_EPOCH, 10000000, &sec, &nsec);\n-   unixTime->tv_sec = sec;\n-   unixTime->tv_nsec = nsec * 100;\n+   if (sizeof (unixTime->tv_sec) == 4) {\n+      Div643232(ntTime - UNIX_EPOCH, 10000000, &sec32, &nsec);\n+      unixTime->tv_sec = sec32;\n+      unixTime->tv_nsec = nsec * 100;\n+   } else {\n+      Div643264(ntTime - UNIX_EPOCH, 10000000, &sec64, &nsec);\n+      unixTime->tv_sec = sec64;\n+      unixTime->tv_nsec = nsec * 100;\n+   }\n #else\n    unixTime->tv_sec = (ntTime - UNIX_EPOCH) / 10000000;\n    unixTime->tv_nsec = ((ntTime - UNIX_EPOCH) % 10000000) * 100;\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/openvmtools/Config.in",
    "content": "config BR2_PACKAGE_OPENVMTOOLS\n\tbool \"openvmtools\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_ENABLE_LOCALE\n\tdepends on !BR2_TOOLCHAIN_USES_UCLIBC\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBDNET\n\tselect BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Open Virtual Machine Tools for VMware guest OS\n\n\t  http://open-vm-tools.sourceforge.net/\n\n\t  ICU locales, Xerces, and X11 tools are currently not\n\t  supported.\n\n\t  NOTE: Support for vmblock-fuse will be enabled in\n\t  openvmtools if the libfuse package is selected.\n\nif BR2_PACKAGE_OPENVMTOOLS\n\nconfig BR2_PACKAGE_OPENVMTOOLS_PAM\n\tbool \"PAM support\"\n\t# linux-pam needs locale and wchar, but we already have this\n\t# dependency on the main symbol, above.\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LINUX_PAM\n\thelp\n\t  Support for PAM in openvmtools\n\ncomment \"PAM support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_OPENVMTOOLS_RESOLUTIONKMS\n\tbool \"resolutionkms support\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libdrm\n\tdepends on BR2_i386 || BR2_x86_64 # libdrm vmwgfx\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_LIBDRM_VMWGFX\n\thelp\n\t  Enable support for resolutionkms\n\ncomment \"resolutionkms needs udev, a toolchain w/ threads\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS\n\nendif\n\ncomment \"openvmtools needs a glibc or musl toolchain w/ wchar, threads, locale\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_ENABLE_LOCALE || \\\n\t\tBR2_TOOLCHAIN_USES_UCLIBC\n"
  },
  {
    "path": "package/openvmtools/S10vmtoolsd",
    "content": "#!/bin/sh\n#\n# Starts vmtoolsd for openvmtools\n#\n\nDAEMON=\"vmtoolsd\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nVMTOOLSD_ARGS=\"-b\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"/usr/bin/$DAEMON\" \\\n\t\t-- $VMTOOLSD_ARGS \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/openvmtools/openvmtools.hash",
    "content": "# locally computed\nsha256  364cd0fdfa5a05e872d08609659e6231ec99788669f7ebba24bfb8c94168daef  open-vm-tools-10.3.5-10430147.tar.gz\nsha256  f734933bd7d49aef25aaf897ed7281ee822e8635056e69b895a7d2e668937fc5  COPYING\n"
  },
  {
    "path": "package/openvmtools/openvmtools.mk",
    "content": "################################################################################\n#\n# openvmtools\n#\n################################################################################\n\nOPENVMTOOLS_VERSION_MAJOR = 10.3.5\nOPENVMTOOLS_VERSION = $(OPENVMTOOLS_VERSION_MAJOR)-10430147\nOPENVMTOOLS_SITE = https://github.com/vmware/open-vm-tools/releases/download/stable-$(OPENVMTOOLS_VERSION_MAJOR)\nOPENVMTOOLS_SOURCE = open-vm-tools-$(OPENVMTOOLS_VERSION).tar.gz\nOPENVMTOOLS_LICENSE = LGPL-2.1\nOPENVMTOOLS_LICENSE_FILES = COPYING\n\n# configure.ac is patched\nOPENVMTOOLS_AUTORECONF = YES\nOPENVMTOOLS_CONF_OPTS = --with-dnet \\\n\t--without-icu --without-x --without-gtk2 \\\n\t--without-gtkmm --without-kernel-modules \\\n\t--disable-deploypkg --without-xerces\nOPENVMTOOLS_CONF_ENV += \\\n\tCUSTOM_DNET_CPPFLAGS=\" \" \\\n\tLIBS=$(TARGET_NLS_LIBS)\nOPENVMTOOLS_DEPENDENCIES = \\\n\thost-nfs-utils \\\n\tlibglib2 \\\n\tlibdnet \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nOPENVMTOOLS_DEPENDENCIES += libtirpc\nendif\n\n# When libfuse is available, openvmtools can build vmblock-fuse, so\n# make sure that libfuse gets built first\nifeq ($(BR2_PACKAGE_LIBFUSE),y)\nOPENVMTOOLS_DEPENDENCIES += libfuse\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nOPENVMTOOLS_CONF_OPTS += --with-ssl\nOPENVMTOOLS_DEPENDENCIES += openssl\nelse\nOPENVMTOOLS_CONF_OPTS += --without-ssl\nendif\n\nifeq ($(BR2_PACKAGE_OPENVMTOOLS_PAM),y)\nOPENVMTOOLS_CONF_OPTS += --with-pam\nOPENVMTOOLS_DEPENDENCIES += linux-pam\nelse\nOPENVMTOOLS_CONF_OPTS += --without-pam\nendif\n\nifeq ($(BR2_PACKAGE_OPENVMTOOLS_RESOLUTIONKMS),y)\nOPENVMTOOLS_CONF_OPTS += --enable-resolutionkms\nOPENVMTOOLS_DEPENDENCIES += libdrm udev\nelse\nOPENVMTOOLS_CONF_OPTS += --disable-resolutionkms\nendif\n\n# symlink needed by lib/system/systemLinux.c (or will cry in /var/log/messages)\n# defined in lib/misc/hostinfoPosix.c\n# /sbin/shutdown needed for Guest OS restart/shutdown from hypervisor\ndefine OPENVMTOOLS_POST_INSTALL_TARGET_THINGIES\n\tln -fs os-release $(TARGET_DIR)/etc/lfs-release\n\tif [ ! -e $(TARGET_DIR)/sbin/shutdown ]; then \\\n\t\t$(INSTALL) -D -m 755 package/openvmtools/shutdown \\\n\t\t\t$(TARGET_DIR)/sbin/shutdown; \\\n\tfi\nendef\n\nOPENVMTOOLS_POST_INSTALL_TARGET_HOOKS += OPENVMTOOLS_POST_INSTALL_TARGET_THINGIES\n\ndefine OPENVMTOOLS_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/openvmtools/S10vmtoolsd \\\n\t\t$(TARGET_DIR)/etc/init.d/S10vmtoolsd\nendef\n\ndefine OPENVMTOOLS_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/openvmtools/vmtoolsd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/vmtoolsd.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/openvmtools/shutdown",
    "content": "#!/bin/sh\n#compatibility script for openvmtools\nif [ \"$1\" == \"-r\" ]; then\n/sbin/reboot\nelse\n/sbin/poweroff\nfi\n"
  },
  {
    "path": "package/openvmtools/vmtoolsd.service",
    "content": "[Unit]\nDescription=vmtoolsd for openvmtools\nAfter=syslog.target network.target\nConditionVirtualization=vmware\n\n[Service]\nType=forking\nPIDFile=/run/vmtoolsd.pid\nExecStart=/usr/bin/vmtoolsd -b /run/vmtoolsd.pid\nRestart=on-failure\nKillMode=process\nKillSignal=SIGKILL\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/openvpn/Config.in",
    "content": "config BR2_PACKAGE_OPENVPN\n\tbool \"openvpn\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_MBEDTLS\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  OpenVPN is a full-featured SSL VPN solution which can\n\t  accomodate a wide range of configurations, including road\n\t  warrior access, home/office/campus telecommuting, WiFi\n\t  security, secure branch office linking, and enterprise-scale\n\t  remote access solutions with load balancing, failover, and\n\t  fine-grained access-controls.\n\n\t  http://openvpn.net/\n\nif BR2_PACKAGE_OPENVPN\n\nconfig BR2_PACKAGE_OPENVPN_LZ4\n\tbool \"LZ4 compression\"\n\tdefault y\n\tselect BR2_PACKAGE_LZ4\n\thelp\n\t  Enable LZ4 compression.\n\nconfig BR2_PACKAGE_OPENVPN_LZO\n\tbool \"LZO compression\"\n\tdefault y\n\tselect BR2_PACKAGE_LZO\n\thelp\n\t  Enable LZO compression.\n\nconfig BR2_PACKAGE_OPENVPN_SMALL\n\tbool \"Optimize for small size\"\n\thelp\n\t  Make OpenVPN as small as possible.\n\t  You loose eurephia, debugging info, help messages and more.\n\t  It saves around 100 KiB in binary file size.\n\nendif\n"
  },
  {
    "path": "package/openvpn/S60openvpn",
    "content": "#!/bin/sh -e\n#\n# Original version by Robert Leslie\n# <rob@mars.org>, edited by iwj and cs\n# Modified for openvpn by Alberto Gonzalez Iniesta <agi@agi.as>\n# Modified for restarting / starting / stopping single tunnels by Richard Mueller <mueller@teamix.net>\n\ntest $DEBIAN_SCRIPT_DEBUG && set -v -x\n\nCONFIG_DIR=/etc/openvpn\ntest -d $CONFIG_DIR || exit 0\n\nstart_vpn () {\n    printf \" $NAME \"\n    start-stop-daemon -S -p /var/run/openvpn.$NAME.pid -x /usr/sbin/openvpn -- \\\n\t      --daemon --writepid /var/run/openvpn.$NAME.pid \\\n\t      --config $CONFIG_DIR/$NAME.conf --cd $CONFIG_DIR\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop_vpn () {\n    printf \" $NAME \"\n    start-stop-daemon -K -p /var/run/openvpn.$NAME.pid -x /usr/sbin/openvpn\n}\n\ncase \"$1\" in\nstart)\n  printf \"Starting openvpn:\"\n\n  if test -z $2 ; then\n    for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do\n      NAME=${CONFIG%%.conf}\n      start_vpn\n    done\n  else\n    if test -e $CONFIG_DIR/$2.conf ; then\n      NAME=$2\n      start_vpn\n    else\n      printf \" No such VPN: $2\"\n    fi\n  fi\n  echo \".\"\n\n  ;;\nstop)\n  printf \"Stopping openvpn:\"\n\n  if test -z $2 ; then\n    for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do\n      NAME=`echo $PIDFILE | cut -c18-`\n      NAME=${NAME%%.pid}\n      stop_vpn\n    done\n  else\n    if test -e /var/run/openvpn.$2.pid ; then\n      PIDFILE=`ls /var/run/openvpn.$2.pid 2> /dev/null`\n      NAME=`echo $PIDFILE | cut -c18-`\n      NAME=${NAME%%.pid}\n      stop_vpn\n    else\n      printf \" No such VPN: $2\"\n    fi\n  fi\n  echo \".\"\n  ;;\n# We only 'reload' for running VPNs. New ones will only start with 'start' or 'restart'.\nreload|force-reload)\n  printf \"Reloading openvpn:\"\n  for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do\n    NAME=`echo $PIDFILE | cut -c18-`\n    NAME=${NAME%%.pid}\n# If openvpn if running under a different user than root we'll need to restart\n    if egrep '^( |\\t)*user' $CONFIG_DIR/$NAME.conf > /dev/null 2>&1 ; then\n      stop_vpn\n      sleep 1\n      start_vpn\n      printf \"(restarted)\"\n    else\n      kill -HUP `cat $PIDFILE` || true\n    printf \" $NAME\"\n    fi\n  done\n  echo \".\"\n  ;;\n\nrestart)\n  $0 stop $2\n  sleep 1\n  $0 start $2\n  ;;\n*)\n  echo \"Usage: $0 {start|stop|reload|restart|force-reload}\" >&2\n  exit 1\n  ;;\nesac\n\nexit 0\n\n# vim:set ai et sts=2 sw=2 tw=0:\n"
  },
  {
    "path": "package/openvpn/openvpn.hash",
    "content": "# Locally calculated after checking signature\nsha256  56c0dcd27ab938c4ad07469c86eb8b7408ef64c3e68f98497db8c03f11792436  openvpn-2.5.4.tar.xz\nsha256  1fcb78d7e478bb8a9408010bdc91b36e213b1facfad093df3f7ce7e28af19043  COPYRIGHT.GPL\n"
  },
  {
    "path": "package/openvpn/openvpn.mk",
    "content": "################################################################################\n#\n# openvpn\n#\n################################################################################\n\nOPENVPN_VERSION = 2.5.4\nOPENVPN_SOURCE = openvpn-$(OPENVPN_VERSION).tar.xz\nOPENVPN_SITE = http://swupdate.openvpn.net/community/releases\nOPENVPN_DEPENDENCIES = host-pkgconf\nOPENVPN_LICENSE = GPL-2.0\nOPENVPN_LICENSE_FILES = COPYRIGHT.GPL\nOPENVPN_CPE_ID_VENDOR = openvpn\nOPENVPN_SELINUX_MODULES = openvpn\nOPENVPN_CONF_OPTS = \\\n\t--disable-unit-tests \\\n\t$(if $(BR2_STATIC_LIBS),--disable-plugins)\nOPENVPN_CONF_ENV = NETSTAT=/bin/netstat\n\nifeq ($(BR2_PACKAGE_OPENVPN_SMALL),y)\nOPENVPN_CONF_OPTS += \\\n\t--enable-small \\\n\t--disable-plugins\nendif\n\nifeq ($(BR2_PACKAGE_OPENVPN_LZ4),y)\nOPENVPN_DEPENDENCIES += lz4\nelse\nOPENVPN_CONF_OPTS += --disable-lz4\nendif\n\nifeq ($(BR2_PACKAGE_OPENVPN_LZO),y)\nOPENVPN_DEPENDENCIES += lzo\nelse\nOPENVPN_CONF_OPTS += --disable-lzo\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nOPENVPN_DEPENDENCIES += libselinux\nOPENVPN_CONF_OPTS += --enable-selinux\nelse\nOPENVPN_CONF_OPTS += --disable-selinux\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nOPENVPN_DEPENDENCIES += linux-pam\nOPENVPN_CONF_OPTS += --enable-plugin-auth-pam\nelse\nOPENVPN_CONF_OPTS += --disable-plugin-auth-pam\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nOPENVPN_DEPENDENCIES += openssl\nOPENVPN_CONF_OPTS += --with-crypto-library=openssl\nelse ifeq ($(BR2_PACKAGE_MBEDTLS),y)\nOPENVPN_DEPENDENCIES += mbedtls\nOPENVPN_CONF_OPTS += --with-crypto-library=mbedtls\nendif\n\nifeq ($(BR2_PACKAGE_PKCS11_HELPER),y)\nOPENVPN_DEPENDENCIES += pkcs11-helper\nOPENVPN_CONF_OPTS += --enable-pkcs11\nelse\nOPENVPN_CONF_OPTS += --disable-pkcs11\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nOPENVPN_DEPENDENCIES += systemd\nOPENVPN_CONF_OPTS += --enable-systemd\nelse\nOPENVPN_CONF_OPTS += --disable-systemd\nendif\n\ndefine OPENVPN_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/openvpn/S60openvpn \\\n\t\t$(TARGET_DIR)/etc/init.d/S60openvpn\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/openzwave/Config.in",
    "content": "config BR2_PACKAGE_OPENZWAVE\n\tbool \"openzwave\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_TINYXML\n\thelp\n\t  Free software library that interfaces with selected Z-Wave\n\t  PC controllers, allowing anyone to create applications that\n\t  manipulate and respond to devices on a Z-Wave network,\n\t  without requiring in-depth knowledge of the Z-Wave protocol\n\n\t  http://www.openzwave.net\n\ncomment \"openzwave needs a toolchain w/ C++, dynamic library, NPTL, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/openzwave/openzwave.hash",
    "content": "# Locally computed:\nsha256  3c0b7e63319832c0eea5a251facd8c4d43f8815356ea61361f8bb9652b2ad8be  openzwave-62444b0f979c337d2091d77d89cf63c2ae9775cf.tar.gz\nsha256  e3a994d82e644b03a792a930f574002658412f62407f5fee083f2555c5f23118  LICENSE\nsha256  c8db08727d03bea1213cdb29459b4b489b0d68a0866765df40ff205c6cd7224b  licenses/license.txt\nsha256  4da452226e9064b597020ad404e1c78d8175bc31ad7c1908485a92c0a4d70284  licenses/lgpl.txt\nsha256  33ffdead480674d5f33e2934822a3b93c93e3f8c894667a3bf30bd1195b38f83  licenses/gpl.txt\nsha256  6f50ebf9af9b6658c7936ffcc6fedd99254df984c0fec2e6ffb9f3aa1c4ef3e1  licenses/Apache-License-2.0.txt\n"
  },
  {
    "path": "package/openzwave/openzwave.mk",
    "content": "################################################################################\n#\n# openzwave\n#\n################################################################################\n\nOPENZWAVE_VERSION = 62444b0f979c337d2091d77d89cf63c2ae9775cf\nOPENZWAVE_SITE = $(call github,OpenZWave,open-zwave,$(OPENZWAVE_VERSION))\nOPENZWAVE_LICENSE = LGPL-3.0+, GPL-3.0 (examples), Apache-2.0 (sh2ju.sh)\nOPENZWAVE_LICENSE_FILES = LICENSE licenses/license.txt licenses/lgpl.txt \\\n\tlicenses/gpl.txt licenses/Apache-License-2.0.txt\nOPENZWAVE_DEPENDENCIES = tinyxml\n\nOPENZWAVE_INSTALL_STAGING = YES\n\n# Set instlibdir to install libopenzwave.so* in the correct directory\n# otherwise openzwave will check that /lib64 exists (on the host) to\n# know if the library should be installed in $(PREFIX)/lib or $(PREFIX)/lib64.\n# Set pkgconfigdir to /lib/pkgconfig to install libopenzwave.pc in the\n# correct directory otherwise openzwave will call\n# \"pkg-config --variable pc_path pkg-config\" which returns an incorrect value.\n# Set sysconfdir to /etc/openzwave to install openzwave configuration files in\n# the correct directory otherwise openzwave will install configuration files in\n# $(PREFIX)/etc/openzwave.\n# Disable doxygen documentation.\n# Set {DEBUG,RELEASE}_CFLAGS to remove -Werror.\nOPENZWAVE_MAKE_OPTS = \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tPREFIX=/usr \\\n\tinstlibdir=/usr/lib \\\n\tpkgconfigdir=/usr/lib/pkgconfig \\\n\tsysconfdir=/etc/openzwave \\\n\tDOXYGEN= \\\n\tDEBUG_CFLAGS=\"-fPIC -std=c++11\" \\\n\tRELEASE_CFLAGS=\"-fPIC -std=c++11\" \\\n\tUSE_BI_TXML=0\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nOPENZWAVE_DEPENDENCIES += host-pkgconf udev\nOPENZWAVE_MAKE_OPTS += USE_HID=1\nelse\nOPENZWAVE_MAKE_OPTS += USE_HID=0\nendif\n\ndefine OPENZWAVE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(OPENZWAVE_MAKE_OPTS) -C $(@D)\nendef\n\ndefine OPENZWAVE_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(OPENZWAVE_MAKE_OPTS) -C $(@D) \\\n\t\tDESTDIR=$(STAGING_DIR) install\nendef\n\n# Delete unneeded ozw_config binary from target directory as this is an utility\n# application used to get the openzwave build configuration.\ndefine OPENZWAVE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(OPENZWAVE_MAKE_OPTS) -C $(@D) \\\n\t\tDESTDIR=$(TARGET_DIR) install\n\trm -f $(TARGET_DIR)/usr/bin/ozw_config\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/opkg/Config.in",
    "content": "comment \"opkg needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_OPKG\n\tbool \"opkg\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR # libarchive\n\tselect BR2_PACKAGE_LIBARCHIVE\n\thelp\n\t  Opkg is a lightweight package management system, based on\n\t  ipkg. It is written in C and resembles apt/dpkg in\n\t  operation. It is intended for use on embedded Linux devices.\n\t  Opkg is maintained, stable, robust and conservative in its\n\t  memory usage, despite its buggy ipkg ancestry. As best it\n\t  can, opkg maintains backwards compatibility with ipkg and\n\t  conforms to a subset of debian's policy manual regarding\n\t  control files.\n\n\t  https://code.google.com/archive/p/opkg/\n\nif BR2_PACKAGE_OPKG\n\nconfig BR2_PACKAGE_OPKG_GPG_SIGN\n\tbool \"gnupg support\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error\n\tselect BR2_PACKAGE_LIBGPGME\n\tselect BR2_PACKAGE_LIBGPG_ERROR\n\thelp\n\t  Enable opkg package signature checking support using\n\t  gnupg/libgpgme.\n\nendif\n"
  },
  {
    "path": "package/opkg/opkg.hash",
    "content": "# From http://downloads.yoctoproject.org/releases/opkg/SHA256SUMS\nsha256  a1214a75fa34fb9228db8da47308e0e711b1c93fd8938cf164c10fd28eb50f1e  opkg-0.4.5.tar.gz\n# Locally calculated\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/opkg/opkg.mk",
    "content": "################################################################################\n#\n# opkg\n#\n################################################################################\n\nOPKG_VERSION = 0.4.5\nOPKG_SITE = https://downloads.yoctoproject.org/releases/opkg\nOPKG_DEPENDENCIES = host-pkgconf libarchive\nOPKG_LICENSE = GPL-2.0+\nOPKG_LICENSE_FILES = COPYING\nOPKG_INSTALL_STAGING = YES\nOPKG_CONF_OPTS = --disable-curl\n\n# Ensure directory for lockfile exists\ndefine OPKG_CREATE_LOCKDIR\n\tmkdir -p $(TARGET_DIR)/usr/lib/opkg\nendef\n\nifeq ($(BR2_PACKAGE_OPKG_GPG_SIGN),y)\nOPKG_CONF_OPTS += --enable-gpg\nOPKG_CONF_ENV += \\\n\tac_cv_path_GPGME_CONFIG=$(STAGING_DIR)/usr/bin/gpgme-config \\\n\tac_cv_path_GPGERR_CONFIG=$(STAGING_DIR)/usr/bin/gpg-error-config\nOPKG_DEPENDENCIES += libgpgme libgpg-error\nelse\nOPKG_CONF_OPTS += --disable-gpg\nendif\n\nOPKG_POST_INSTALL_TARGET_HOOKS += OPKG_CREATE_LOCKDIR\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/opkg-utils/Config.in",
    "content": "config BR2_PACKAGE_OPKG_UTILS\n\tbool \"opkg-utils\"\n\tdepends on !BR2_nios2 || BR2_PACKAGE_BUSYBOX # binutils\n\tdepends on BR2_USE_MMU # bash, python3\n\tdepends on BR2_USE_WCHAR # python3\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # python3 <- libffi\n\tdepends on !BR2_STATIC_LIBS # python3\n\tdepends on !BR2_PACKAGE_PYTHON # python3\n\tselect BR2_PACKAGE_BINUTILS if !BR2_PACKAGE_BUSYBOX # runtime\n\tselect BR2_PACKAGE_BINUTILS_TARGET if !BR2_PACKAGE_BUSYBOX # runtime\n\tselect BR2_PACKAGE_COREUTILS if !BR2_PACKAGE_BUSYBOX # runtime\n\tselect BR2_PACKAGE_DIFFUTILS if !BR2_PACKAGE_BUSYBOX # runtime\n\tselect BR2_PACKAGE_FINDUTILS if !BR2_PACKAGE_BUSYBOX # runtime\n\tselect BR2_PACKAGE_GREP if !BR2_PACKAGE_BUSYBOX # runtime\n\tselect BR2_PACKAGE_GZIP if !BR2_PACKAGE_BUSYBOX # runtime\n\tselect BR2_PACKAGE_SED if !BR2_PACKAGE_BUSYBOX # runtime\n\tselect BR2_PACKAGE_TAR if !BR2_PACKAGE_BUSYBOX # runtime\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash\n\tselect BR2_PACKAGE_BASH # runtime\n\tselect BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  Helper scripts for use with the opkg package manager.\n\n\t  https://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/\n\ncomment \"opkg-utils needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on !BR2_nios2 || BR2_PACKAGE_BUSYBOX\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\ncomment \"opkg-utils needs python3\"\n\tdepends on !BR2_nios2 || BR2_PACKAGE_BUSYBOX\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_PYTHON\n"
  },
  {
    "path": "package/opkg-utils/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_OPKG_UTILS\n\tbool \"host opkg-utils\"\n\thelp\n\t  Helper scripts for use with the opkg package manager.\n\n\t  https://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/\n"
  },
  {
    "path": "package/opkg-utils/opkg-utils.hash",
    "content": "# Locally calculated\nsha256  e0fcaab51bff2149bd6560fb4238319d502dd99b581f66763d702e75c224736d  opkg-utils-0.4.5-br1.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/opkg-utils/opkg-utils.mk",
    "content": "################################################################################\n#\n# opkg-utils\n#\n################################################################################\n\nOPKG_UTILS_VERSION = 0.4.5\nOPKG_UTILS_SITE = https://git.yoctoproject.org/git/opkg-utils\nOPKG_UTILS_SITE_METHOD = git\nOPKG_UTILS_LICENSE = GPL-2.0+\nOPKG_UTILS_LICENSE_FILES = COPYING\n\nHOST_OPKG_UTILS_DEPENDENCIES = \\\n\t$(BR2_PYTHON3_HOST_DEPENDENCY) \\\n\thost-diffutils \\\n\thost-lz4 \\\n\thost-xz\n\n# Nothing to build; only scripts to install.\ndefine OPKG_UTILS_INSTALL_CMDS\n\t$(MAKE) -C $(@D) PREFIX=$(TARGET_DIR) install-utils\nendef\n\n# Nothing to build; only scripts to install.\ndefine HOST_OPKG_UTILS_INSTALL_CMDS\n\t$(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install-utils\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/oprofile/0001-musl.patch",
    "content": "Remove non-Posix use of FTW_ACTIONRETVAL\n\nThe musl implementation of nftw doesn't support the glibc extension\nFTW_ACTIONRETVAL. Since none of the features of FTW_ACTIONRETVAL are\nused here, just use the normal nftw return value.\n\nDownloaded from:\nhttps://github.com/openwrt-mirror/openwrt/blob/f22d5e25660106a48727c7aa5d1a73e4171a7987/package/devel/oprofile/patches/100-musl.patch\nafter I found a hint for the patch here:\nhttp://patchwork.openembedded.org/patch/112675/\n\nRemoved unneeded patch for libop/op_events.c.\n\nBecause openwrt removed the oprofile package from their repo last week\nhttps://github.com/openwrt-mirror/openwrt/commit/aaf46a8524e138e1673a398e8d2dd9357405b313#diff-fe14456f94abf436d997e2c01c10f3bd\nI decided to put this patch into the buildroot repo instead of adding\n_PATCH to oprofile.mk\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- a/pe_profiling/operf.cpp\n+++ b/pe_profiling/operf.cpp\n@@ -857,11 +857,14 @@ static int __delete_old_previous_sample_\n                                 int tflag  __attribute__((unused)),\n                                 struct FTW *ftwbuf __attribute__((unused)))\n {\n+\tint err;\n+\n \tif (remove(fpath)) {\n+\t\terr = errno;\n \t\tperror(\"sample data removal error\");\n-\t\treturn FTW_STOP;\n+\t\treturn err;\n \t} else {\n-\t\treturn FTW_CONTINUE;\n+\t\treturn 0;\n \t}\n }\n \n@@ -896,7 +899,7 @@ static void convert_sample_data(void)\n \t\treturn;\n \n \tif (!operf_options::append) {\n-                int flags = FTW_DEPTH | FTW_ACTIONRETVAL;\n+                int flags = FTW_DEPTH;\n \t\terrno = 0;\n \t\tif (nftw(previous_sampledir.c_str(), __delete_old_previous_sample_data, 32, flags) !=0 &&\n \t\t\t\terrno != ENOENT) {\n"
  },
  {
    "path": "package/oprofile/Config.in",
    "content": "# memory barrier function implemented only for some architectures\nconfig BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on BR2_arceb || BR2_arcle || BR2_arm || BR2_armeb || \\\n\t\tBR2_aarch64 || BR2_aarch64_be || BR2_i386 || BR2_mips || \\\n\t\tBR2_mipsel || BR2_mips64 || BR2_mips64el || BR2_powerpc || \\\n\t\tBR2_powerpc64 || BR2_powerpc64le || BR2_sh || \\\n\t\tBR2_sparc || BR2_sparc64 || BR2_x86_64\n\nconfig BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4\n\tbool\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\nconfig BR2_PACKAGE_OPROFILE\n\tbool \"oprofile\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR # binutils\n\tdepends on BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS\n\t# libpfm4 is needed on PowerPC, and requires thread support\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4\n\tselect BR2_PACKAGE_POPT\n\tselect BR2_PACKAGE_BINUTILS\n\tselect BR2_PACKAGE_LIBPFM4 if BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4\n\thelp\n\t  OProfile is a system-wide profiler for Linux systems,\n\t  capable of profiling all running code at low overhead.\n\t  OProfile is released under the GNU GPL.\n\n\t  It consists of a kernel driver and a daemon for collecting\n\t  sample data, and several post-profiling tools for turning\n\t  data into information.\n\n\t  OProfile leverages the hardware performance counters of the\n\t  CPU to enable profiling of a wide variety of interesting\n\t  statistics, which can also be used for basic time-spent\n\t  profiling. All code is profiled: hardware and software\n\t  interrupt handlers, kernel modules, the kernel, shared\n\t  libraries, and applications.\n\n\t  https://sourceforge.net/projects/oprofile/\n\ncomment \"oprofile needs a toolchain w/ C++, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR\n\ncomment \"oprofile needs a toolchain w/ NPTL on PowerPC(64)\"\n\tdepends on BR2_USE_MMU && BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/oprofile/oprofile.hash",
    "content": "# From http://sourceforge.net/projects/oprofile/files/oprofile/oprofile-1.4.0/\nsha1  d4d7634372d18de821b33650ad0ff7392e94c6e3  oprofile-1.4.0.tar.gz\nmd5  ac0ff685ec9735e30d6a4d19de0efed7  oprofile-1.4.0.tar.gz\n\n# Hash for license file:\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/oprofile/oprofile.mk",
    "content": "################################################################################\n#\n# oprofile\n#\n################################################################################\n\nOPROFILE_VERSION = 1.4.0\nOPROFILE_SITE = http://downloads.sourceforge.net/project/oprofile/oprofile/oprofile-$(OPROFILE_VERSION)\nOPROFILE_LICENSE = GPL-2.0+\nOPROFILE_LICENSE_FILES = COPYING\nOPROFILE_CPE_ID_VENDOR = maynard_johnson\nOPROFILE_CONF_OPTS = \\\n\t--disable-account-check \\\n\t--enable-gui=no \\\n\t--with-kernel=$(STAGING_DIR)/usr\n\nOPROFILE_BINARIES = \\\n\tutils/ophelp pp/opannotate pp/oparchive pp/opgprof \\\n\tpp/opreport opjitconv/opjitconv \\\n\tutils/op-check-perfevents libabi/opimport \\\n\tpe_counting/ocount pe_profiling/operf\n\nifeq ($(BR2_i386),y)\nOPROFILE_ARCH = i386\nendif\nifeq ($(BR2_mipsel),y)\nOPROFILE_ARCH = mips\nendif\nifeq ($(BR2_powerpc),y)\nOPROFILE_ARCH = ppc\nendif\nifeq ($(BR2_x86_64),y)\nOPROFILE_ARCH = x86-64\nendif\nifeq ($(OPROFILE_ARCH),)\nOPROFILE_ARCH = $(BR2_ARCH)\nendif\n\nOPROFILE_DEPENDENCIES = popt binutils host-pkgconf\n\nifeq ($(BR2_PACKAGE_LIBPFM4),y)\nOPROFILE_DEPENDENCIES += libpfm4\nendif\n\nifeq ($(BR2_STATIC_LIBS),)\ndefine OPROFILE_INSTALL_SHARED_LIBRARY\n\t$(INSTALL) -m 755 $(@D)/libopagent/.libs/*.so* $(TARGET_DIR)/usr/lib/oprofile\nendef\nendif\n\ndefine OPROFILE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -d -m 755 $(TARGET_DIR)/usr/bin\n\t$(INSTALL) -d -m 755 $(TARGET_DIR)/usr/share/oprofile\n\t$(INSTALL) -d -m 755 $(TARGET_DIR)/usr/lib/oprofile\n\tif [ -d $(@D)/events/$(OPROFILE_ARCH) ]; then \\\n\t\tcp -dpfr $(@D)/events/$(OPROFILE_ARCH) \\\n\t\t\t$(TARGET_DIR)/usr/share/oprofile; \\\n\tfi\n\t$(INSTALL) -m 644 $(@D)/libregex/stl.pat $(TARGET_DIR)/usr/share/oprofile\n\t$(INSTALL) -m 755 $(addprefix $(@D)/, $(OPROFILE_BINARIES)) $(TARGET_DIR)/usr/bin\n\t$(OPROFILE_INSTALL_SHARED_LIBRARY)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/optee-benchmark/Config.in",
    "content": "config BR2_PACKAGE_OPTEE_BENCHMARK\n\tbool \"optee-benchmark\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # optee-client\n\tdepends on !BR2_STATIC_LIBS # optee-client\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 # optee-client\n\tselect BR2_PACKAGE_OPTEE_CLIENT\n\tselect BR2_PACKAGE_LIBYAML\n\thelp\n\t  Enable the OP-TEE benchmark package that brings facilities\n\t  for profiling traversal and execution timings when\n\t  invoking OP-TEE. OP-TEE benchmark is a component delivered\n\t  by the OP-TEE project.\n\n\t  http://github.com/linaro-swg/optee_benchmark\n\ncomment \"optee-benchmark needs a toolchain w/ threads, dynamic library, headers >= 4.3\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3\n"
  },
  {
    "path": "package/optee-benchmark/optee-benchmark.hash",
    "content": "# From https://github.com/linaro-swg/optee_benchmark/archive/3.15.0/optee-benchmark-3.15.0.tar.gz\nsha256 f1ddac5e9f58333194eb302e6d9840fa334300bc103abb3d9f783bf009a78c50 optee-benchmark-3.15.0.tar.gz\n# Locally computed\nsha256 0571be5b739142dc3e40e0a4e7e30d4ab8bff0d4d606a3f2db2010745587d383  LICENSE\n"
  },
  {
    "path": "package/optee-benchmark/optee-benchmark.mk",
    "content": "################################################################################\n#\n# optee-benchmark\n#\n################################################################################\n\nOPTEE_BENCHMARK_VERSION = 3.15.0\nOPTEE_BENCHMARK_SITE = $(call github,linaro-swg,optee_benchmark,$(OPTEE_BENCHMARK_VERSION))\nOPTEE_BENCHMARK_LICENSE = BSD-2-Clause\nOPTEE_BENCHMARK_LICENSE_FILES = LICENSE\n\nOPTEE_BENCHMARK_DEPENDENCIES = optee-client libyaml\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/optee-client/Config.in",
    "content": "config BR2_PACKAGE_OPTEE_CLIENT\n\tbool \"optee-client\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 # MMC_IOC_MULTI_CMD\n\thelp\n\t  Enable the OP-TEE client package that brings non-secure\n\t  client application resources for OP-TEE support. OP-TEE\n\t  client is a component delivered by the OP-TEE project.\n\n\t  The client API library allows application to invoke trusted\n\t  applications hosted in the OP-TEE OS secure world.  The\n\t  supplicant provides services hosted by the non-secure world\n\t  and invoked by the secure world.\n\n\t  https://github.com/OP-TEE/optee_client\n\nif BR2_PACKAGE_OPTEE_CLIENT\n\nconfig BR2_PACKAGE_OPTEE_CLIENT_TEE_FS_PATH\n\tstring \"Path for normal world OS secure storage\"\n\tdefault \"/data/tee\"\n\thelp\n\t  Path to storage area for secure storage based on the\n\t  normal world OS providing the actual storage via\n\t  tee-supplicant.\n\nconfig BR2_PACKAGE_OPTEE_CLIENT_RPMB_EMU\n\tbool \"Enable RPMB emulation\"\n\tdefault y\n\thelp\n\t  Enable RPMB device emulation in tee-supplicant.\n\nconfig BR2_PACKAGE_OPTEE_CLIENT_SUPP_PLUGINS\n\tbool \"Enable TEE supplicant plugins\"\n\tdefault y\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\thelp\n\t  Enable TEE supplicant plugin support.\n\nendif\n\ncomment \"optee-client needs a toolchain w/ threads, headers >= 4.3\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3\n"
  },
  {
    "path": "package/optee-client/S30optee",
    "content": "#!/bin/sh\n\nDAEMON=\"tee-supplicant\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nDAEMON_ARGS=\"-d /dev/teepriv0\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \\\n\t\t-- $DAEMON_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n        start|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature (does not\n\t\t# reconfigure/restart on SIGHUP, just closes all open files).\n\t\trestart;;\n        *)\n                echo \"Usage: $0 {start|stop|restart|reload}\"\n                exit 1\nesac\n"
  },
  {
    "path": "package/optee-client/optee-client.hash",
    "content": "# From https://github.com/OP-TEE/optee_client/archive/3.15.0/optee-client-3.15.0.tar.gz\nsha256 e1ea6c953e3584248d7a62050813e5ac0f0112933447954c44236a233a4cbba5  optee-client-3.15.0.tar.gz\n# Locally computed\nsha256 fda8385993f112d7ca61b88b54ba5b4cbeec7e43a0f9b317d5186703c1985e8f  LICENSE\n"
  },
  {
    "path": "package/optee-client/optee-client.mk",
    "content": "################################################################################\n#\n# optee-client\n#\n################################################################################\n\nOPTEE_CLIENT_VERSION = 3.15.0\nOPTEE_CLIENT_SITE = $(call github,OP-TEE,optee_client,$(OPTEE_CLIENT_VERSION))\nOPTEE_CLIENT_LICENSE = BSD-2-Clause\nOPTEE_CLIENT_LICENSE_FILES = LICENSE\nOPTEE_CLIENT_INSTALL_STAGING = YES\n\nOPTEE_CLIENT_CONF_OPTS = \\\n\t-DCFG_TEE_FS_PARENT_PATH=$(BR2_PACKAGE_OPTEE_CLIENT_TEE_FS_PATH) \\\n\t-DCFG_WERROR=OFF\n\nifeq ($(BR2_PACKAGE_OPTEE_CLIENT_RPMB_EMU),y)\nOPTEE_CLIENT_CONF_OPTS += -DRPMB_EMU=ON\nelse\nOPTEE_CLIENT_CONF_OPTS += -DRPMB_EMU=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPTEE_CLIENT_SUPP_PLUGINS),y)\nOPTEE_CLIENT_CONF_OPTS += -DCFG_TEE_SUPP_PLUGINS=ON\nelse\nOPTEE_CLIENT_CONF_OPTS += -DCFG_TEE_SUPP_PLUGINS=OFF\nendif\n\ndefine OPTEE_CLIENT_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D $(OPTEE_CLIENT_PKGDIR)/S30optee \\\n\t\t$(TARGET_DIR)/etc/init.d/S30optee\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/optee-examples/Config.in",
    "content": "config BR2_PACKAGE_OPTEE_EXAMPLES\n\tbool \"optee-examples\"\n\tdepends on BR2_TARGET_OPTEE_OS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # optee-client\n\tdepends on !BR2_STATIC_LIBS # optee-client\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 # optee-client\n\tselect BR2_PACKAGE_OPTEE_CLIENT\n\tselect BR2_TARGET_OPTEE_OS_SDK\n\thelp\n\t  Enable the OP-TEE examples package that brings examples of\n\t  implementation of OP-TEE non-secure client applications and\n\t  secure trusted applications. OP-TEE examples is a\n\t  component delivered by the OP-TEE project.\n\n\t  Trusted application binary files are installed in the target\n\t  directory /lib/optee_armtz as other trusted applications.\n\t  At runtime OP-TEE OS can load trusted applications from this\n\t  non-secure filesystem/directory into the secure world for\n\t  execution.\n\n\t  https://github.com/linaro-swg/optee_examples\n\ncomment \"optee-examples needs a toolchain w/ threads, dynamic library, headers >= 4.3\"\n\tdepends on BR2_TARGET_OPTEE_OS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3\n"
  },
  {
    "path": "package/optee-examples/optee-examples.hash",
    "content": "# From https://github.com/linaro-swg/optee_examples/archive/3.15.0/optee-examples-3.15.0.tar.gz\nsha256 9770827292eea85068913077d3406070f6182389779c5d4a5c0876bffd962353  optee-examples-3.15.0.tar.gz\n# Locally computed\nsha256 6f1ef8449cb82ae79d2155605f7985bdf0f08e7ab5007de9b4362e8bf28733b9  LICENSE\n"
  },
  {
    "path": "package/optee-examples/optee-examples.mk",
    "content": "################################################################################\n#\n# optee-examples\n#\n################################################################################\n\nOPTEE_EXAMPLES_VERSION = 3.15.0\nOPTEE_EXAMPLES_SITE = $(call github,linaro-swg,optee_examples,$(OPTEE_EXAMPLES_VERSION))\nOPTEE_EXAMPLES_LICENSE = BSD-2-Clause\nOPTEE_EXAMPLES_LICENSE_FILES = LICENSE\n\nOPTEE_EXAMPLES_DEPENDENCIES = optee-client optee-os\n\n# Trusted Application are not built from CMake due to ta_dev_kit dependencies.\n# We must build and install them on target.\ndefine OPTEE_EXAMPLES_BUILD_TAS\n\t$(foreach f,$(wildcard $(@D)/*/ta/Makefile), \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(MAKE) CROSS_COMPILE=$(TARGET_CROSS) \\\n\t\t\tTA_DEV_KIT_DIR=$(OPTEE_OS_SDK) \\\n\t\t\tO=out -C $(dir $f) all\n\t)\nendef\ndefine OPTEE_EXAMPLES_INSTALL_TAS\n\t@mkdir -p $(TARGET_DIR)/lib/optee_armtz\n\t@$(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz $(@D)/*/ta/out/*.ta\nendef\nOPTEE_EXAMPLES_POST_BUILD_HOOKS += OPTEE_EXAMPLES_BUILD_TAS\nOPTEE_EXAMPLES_POST_INSTALL_TARGET_HOOKS += OPTEE_EXAMPLES_INSTALL_TAS\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/optee-test/Config.in",
    "content": "config BR2_PACKAGE_OPTEE_TEST\n\tbool \"optee-test\"\n\tdepends on BR2_TARGET_OPTEE_OS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # optee-client\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # optee-client\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 # optee-client\n\tselect BR2_PACKAGE_OPTEE_CLIENT\n\tselect BR2_TARGET_OPTEE_OS_SDK\n\thelp\n\t  This build option enables OP-TEE test package from the\n\t  OP-TEE project. It helps platforms to verify the OP-TEE\n\t  installation against a set of regression and performance\n\t  tests.\n\n\t  The package generates userspace test applications and\n\t  data files for the Linux userland. It also generates\n\t  OP-TEE trusted applications.\n\n\t  Trusted application binary files are installed in the target\n\t  directory /lib/optee_armtz as other trusted applications.\n\t  At runtime OP-TEE OS can load trusted applications from this\n\t  non-secure filesystem/directory into the secure world for\n\t  execution.\n\n\t  http://github.com/OP-TEE/optee_test\n\ncomment \"optee-test needs a toolchain w/ threads, C++, dynamic library, headers >= 4.3\"\n\tdepends on BR2_TARGET_OPTEE_OS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3\n"
  },
  {
    "path": "package/optee-test/optee-test.hash",
    "content": "# From https://github.com/OP-TEE/optee_test/archive/3.15.0/optee-test-3.15.0.tar.gz\nsha256 9c2b6b80055cbef0f9bccce17dde494725bc71d9013dacaeb3e46d0926191098  optee-test-3.15.0.tar.gz\n# Locally computed\nsha256 6e6810981f0ddab9e0d44399d0700a15d9f760a3c2843cc866659c2074139ae7  LICENSE.md\n"
  },
  {
    "path": "package/optee-test/optee-test.mk",
    "content": "################################################################################\n#\n# optee-test\n#\n################################################################################\n\nOPTEE_TEST_VERSION = 3.15.0\nOPTEE_TEST_SITE = $(call github,OP-TEE,optee_test,$(OPTEE_TEST_VERSION))\nOPTEE_TEST_LICENSE = GPL-2.0, BSD-2-Clause,\nOPTEE_TEST_LICENSE_FILES = LICENSE.md\n\nOPTEE_TEST_DEPENDENCIES = optee-client optee-os\n\nifeq ($(BR2_PACKAGE_LIBOPENSSL),y)\nOPTEE_TEST_DEPENDENCIES += libopenssl\nendif\n\nOPTEE_TEST_CONF_OPTS = -DOPTEE_TEST_SDK=$(OPTEE_OS_SDK)\n\n# Trusted Application are not built from CMake due to ta_dev_kit\n# dependencies. We must build and install them on target.\ndefine OPTEE_TEST_BUILD_TAS\n\t$(foreach f,$(wildcard $(@D)/ta/*_lib/Makefile) $(wildcard $(@D)/ta/*/Makefile), \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(MAKE) CROSS_COMPILE=$(TARGET_CROSS) \\\n\t\t\tTA_DEV_KIT_DIR=$(OPTEE_OS_SDK) \\\n\t\t\t-C $(dir $f) all\n\t)\nendef\ndefine OPTEE_TEST_INSTALL_TAS\n\t@mkdir -p $(TARGET_DIR)/lib/optee_armtz\n\t@$(INSTALL) -D -m 444 -t $(TARGET_DIR)/lib/optee_armtz $(@D)/ta/*/*.ta\nendef\nOPTEE_TEST_POST_BUILD_HOOKS += OPTEE_TEST_BUILD_TAS\nOPTEE_TEST_POST_INSTALL_TARGET_HOOKS += OPTEE_TEST_INSTALL_TAS\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/opus/Config.in",
    "content": "config BR2_PACKAGE_OPUS\n\tbool \"opus\"\n\thelp\n\t  The Opus codec is designed for interactive speech and audio\n\t  transmission over the Internet. It is designed by the IETF\n\t  Codec Working Group and incorporates technology from Skype's\n\t  SILK codec and Xiph.Org's CELT codec.\n\n\t  It is intended to suit a wide range of interactive audio\n\t  applications, including Voice over IP, videoconferencing,\n\t  in-game chat, and even remote live music performances. It\n\t  can scale from low bit-rate narrowband speech to very high\n\t  quality stereo music.\n\n\t  http://opus-codec.org\n\nif BR2_PACKAGE_OPUS\n\nconfig BR2_PACKAGE_OPUS_FIXED_POINT\n\tbool \"use fixed-point\" if !BR2_SOFT_FLOAT\n\tdefault y if BR2_SOFT_FLOAT\n\thelp\n\t  Compile without floating point operations (for machines\n\t  without a fast enough FPU).\n\nendif\n"
  },
  {
    "path": "package/opus/opus.hash",
    "content": "# From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt\nsha256 65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d  opus-1.3.1.tar.gz\n\n# Hash for license file\nsha256 8338ce8d922bb4416ce3dd1e5680173332435e3f0755007ac7801ccd674fe682  COPYING\n"
  },
  {
    "path": "package/opus/opus.mk",
    "content": "################################################################################\n#\n# opus\n#\n################################################################################\n\nOPUS_VERSION = 1.3.1\nOPUS_SITE = https://downloads.xiph.org/releases/opus\nOPUS_LICENSE = BSD-3-Clause\nOPUS_LICENSE_FILES = COPYING\nOPUS_INSTALL_STAGING = YES\n\nOPUS_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nOPUS_CFLAGS += -O0\nendif\n\nOPUS_CONF_ENV = CFLAGS=\"$(OPUS_CFLAGS)\"\n\nifeq ($(BR2_PACKAGE_OPUS_FIXED_POINT),y)\nOPUS_CONF_OPTS += --enable-fixed-point\nendif\n\n# When we're on ARM, but we don't have ARM instructions (only\n# Thumb-2), disable the usage of assembly as it is not Thumb-ready.\nifeq ($(BR2_arm)$(BR2_armeb):$(BR2_ARM_CPU_HAS_ARM),y:)\nOPUS_CONF_OPTS += --disable-asm\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/opus-tools/Config.in",
    "content": "config BR2_PACKAGE_OPUS_TOOLS\n\tbool \"opus-tools\"\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_LIBOPUSENC\n\tselect BR2_PACKAGE_OPUS\n\tselect BR2_PACKAGE_OPUSFILE\n\thelp\n\t  Opus codec command line tools. This package provides the\n\t  reference implementations of encoder and decoder utilities\n\t  for libopus.\n\n\t  http://opus-codec.org\n"
  },
  {
    "path": "package/opus-tools/opus-tools.hash",
    "content": "# From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt\nsha256 b4e56cb00d3e509acfba9a9b627ffd8273b876b4e2408642259f6da28fa0ff86  opus-tools-0.2.tar.gz\n\n# Hash for license file\nsha256 c28016e58544119d6b93aea28297d040f17dcef7a9f548d3e6a4d0b558c5d248  COPYING\n"
  },
  {
    "path": "package/opus-tools/opus-tools.mk",
    "content": "################################################################################\n#\n# opus-tools\n#\n################################################################################\n\nOPUS_TOOLS_VERSION = 0.2\nOPUS_TOOLS_SITE = https://downloads.xiph.org/releases/opus\nOPUS_TOOLS_LICENSE = BSD-2-Clause, GPL-2.0 (opusinfo)\nOPUS_TOOLS_LICENSE_FILES = COPYING\nOPUS_TOOLS_CONF_OPTS = --disable-oggtest --disable-opustest\nOPUS_TOOLS_DEPENDENCIES = libogg libopusenc opus opusfile host-pkgconf\n\nifeq ($(BR2_PACKAGE_LIBPCAP),y)\nOPUS_TOOLS_DEPENDENCIES += libpcap\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE),y)\nOPUS_TOOLS_CONF_OPTS += --enable-sse\nelse\nOPUS_TOOLS_CONF_OPTS += --disable-sse\nendif\n\nifeq ($(BR2_PACKAGE_FLAC),y)\nOPUS_TOOLS_DEPENDENCIES += flac\nelse\nOPUS_TOOLS_CONF_OPTS += --without-flac\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/opusfile/Config.in",
    "content": "config BR2_PACKAGE_OPUSFILE\n\tbool \"opusfile\"\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_OPUS\n\thelp\n\t  A convenient high-level API for decoding and basic\n\t  manipulation of all Ogg Opus audio streams.\n\n\t  http://opus-codec.org\n"
  },
  {
    "path": "package/opusfile/opusfile.hash",
    "content": "# From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt\nsha256  118d8601c12dd6a44f52423e68ca9083cc9f2bfe72da7a8c1acb22a80ae3550b  opusfile-0.12.tar.gz\n\n# Hash for license file\nsha256  0267ae795ab744c4e0f9c45e249440fdf2e75dac8c804f36066b28649bf74aaf  COPYING\n"
  },
  {
    "path": "package/opusfile/opusfile.mk",
    "content": "################################################################################\n#\n# opusfile\n#\n################################################################################\n\nOPUSFILE_VERSION = 0.12\nOPUSFILE_SITE = https://downloads.xiph.org/releases/opus\nOPUSFILE_DEPENDENCIES = host-pkgconf libogg opus\nOPUSFILE_LICENSE = BSD-3-Clause\nOPUSFILE_LICENSE_FILES = COPYING\nOPUSFILE_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nOPUSFILE_DEPENDENCIES += openssl\nelse\nOPUSFILE_CONF_OPTS += --disable-http\nendif\n\n# Use the same as opus package since it's a dep and we can't mix\nifeq ($(BR2_PACKAGE_OPUS_FIXED_POINT),y)\nOPUSFILE_CONF_OPTS += --enable-fixed-point\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/oracle-mysql/0000-ac_cache_check.patch",
    "content": "Patch borrowed from\nhttp://code.google.com/p/minimyth/source/browse/trunk/gar-minimyth/script/db/mysql/files/mysql-5.1.47-ac_cache_check.patch?r=6493.\n\nIt allows to override through ac_cv_* variables various checks that\ncannot be performed when cross-compiling.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\n---\n storage/innodb_plugin/plug.in |   59 ++++++++++++++++++++++++++++--------------\n 1 file changed, 40 insertions(+), 19 deletions(-)\n\nIndex: mysql-5.1.53/storage/innodb_plugin/plug.in\n===================================================================\n--- mysql-5.1.53.orig/storage/innodb_plugin/plug.in\n+++ mysql-5.1.53/storage/innodb_plugin/plug.in\n@@ -53,9 +53,10 @@\n   esac\n   AC_SUBST(INNODB_DYNAMIC_CFLAGS)\n \n-  AC_MSG_CHECKING(whether GCC atomic builtins are available)\n+  AC_CACHE_CHECK([whether GCC atomic builtins are available],\n+                 [ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS],\n   # either define HAVE_IB_GCC_ATOMIC_BUILTINS or not\n-  AC_TRY_RUN(\n+  [AC_TRY_RUN(\n     [\n       int main()\n       {\n@@ -95,18 +96,23 @@\n       }\n     ],\n     [\n-      AC_DEFINE([HAVE_IB_GCC_ATOMIC_BUILTINS], [1],\n-                [GCC atomic builtins are available])\n       AC_MSG_RESULT(yes)\n+      ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=yes\n     ],\n     [\n       AC_MSG_RESULT(no)\n+      ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=no\n     ]\n-  )\n+  )])\n+  if test \"x$ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS\"= \"xyes\" ; then\n+    AC_DEFINE([HAVE_IB_GCC_ATOMIC_BUILTINS], [1],\n+              [GCC atomic builtins are available])\n+  fi\n \n-  AC_MSG_CHECKING(whether pthread_t can be used by GCC atomic builtins)\n+  AC_CACHE_CHECK([whether pthread_t can be used by GCC atomic builtins],\n+                 [ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC],\n   # either define HAVE_IB_ATOMIC_PTHREAD_T_GCC or not\n-  AC_TRY_RUN(\n+  [AC_TRY_RUN(\n     [\n       #include <pthread.h>\n       #include <string.h>\n@@ -126,14 +132,18 @@\n       }\n     ],\n     [\n-      AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_GCC], [1],\n-                [pthread_t can be used by GCC atomic builtins])\n       AC_MSG_RESULT(yes)\n+      ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=yes\n     ],\n     [\n       AC_MSG_RESULT(no)\n+      ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=no\n     ]\n-  )\n+  )])\n+  if test \"x$ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC\"= \"xyes\" ; then\n+    AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_GCC], [1],\n+              [pthread_t can be used by GCC atomic builtins])\n+  fi\n \n   AC_MSG_CHECKING(whether Solaris libc atomic functions are available)\n   # either define HAVE_IB_SOLARIS_ATOMICS or not\n@@ -148,9 +158,10 @@\n \t\t\t    are available])\n   )\n \n-  AC_MSG_CHECKING(whether pthread_t can be used by Solaris libc atomic functions)\n+  AC_CACHE_CHECK([whether pthread_t can be used by Solaris libc atomic functions],\n+                 [ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS],\n   # either define HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS or not\n-  AC_TRY_RUN(\n+  [AC_TRY_RUN(\n     [\n       #include <pthread.h>\n       #include <string.h>\n@@ -181,28 +192,33 @@\n       }\n     ],\n     [\n-      AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], [1],\n-                [pthread_t can be used by solaris atomics])\n       AC_MSG_RESULT(yes)\n+      ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=yes\n     ],\n     [\n       AC_MSG_RESULT(no)\n+      ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=no\n     ]\n-  )\n+  )])\n+  if test \"x$ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS\"= \"xyes\" ; then\n+    AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], [1],\n+              [pthread_t can be used by solaris atomics])\n+  fi\n \n   # this is needed to know which one of atomic_cas_32() or atomic_cas_64()\n   # to use in the source\n   AC_CHECK_SIZEOF([pthread_t], [], [#include <pthread.h>])\n \n   # Check for x86 PAUSE instruction\n-  AC_MSG_CHECKING(for x86 PAUSE instruction)\n+  AC_CACHE_CHECK([for x86 PAUSE instruction],\n+                 [ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION],\n   # We have to actually try running the test program, because of a bug\n   # in Solaris on x86_64, where it wrongly reports that PAUSE is not\n   # supported when trying to run an application. See\n   # http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6478684\n   # We use ib_ prefix to avoid collisoins if this code is added to\n   # mysql's configure.in.\n-  AC_TRY_RUN(\n+  [AC_TRY_RUN(\n     [\n       int main() {\n         __asm__ __volatile__ (\"pause\");\n@@ -210,16 +226,21 @@\n       }\n     ],\n     [\n-      AC_DEFINE([HAVE_IB_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist])\n       AC_MSG_RESULT(yes)\n+      ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION=yes\n     ],\n     [\n       AC_MSG_RESULT(no)\n+      ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION=no\n     ],\n     [\n       AC_MSG_RESULT(no)\n+      ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION=no\n     ]\n-  )\n+  )])\n+  if test \"x$ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION\"= \"xyes\" ; then\n+    AC_DEFINE([HAVE_IB_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist])\n+  fi\n   ])\n \n # vim: set ft=config:\n"
  },
  {
    "path": "package/oracle-mysql/0001-configure-ps-cache-check.patch",
    "content": "Patch borrowed from\nhttp://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/mysql/files/configure-ps-cache-check.patch\n\nIt allows to specify through ac_cv_FIND_PROC how ps should be used on\nthe target to find the PID of a program.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\n---\n configure.in |    9 +++++----\n 1 file changed, 5 insertions(+), 4 deletions(-)\n\nIndex: mysql-5.1.53/configure.in\n===================================================================\n--- mysql-5.1.53.orig/configure.in\n+++ mysql-5.1.53/configure.in\n@@ -462,8 +462,8 @@\n # then Make, then shell.  The autoconf substitution uses single quotes, so \n # no unprotected single quotes should appear in the expression.\n AC_PATH_PROG(PS, ps, ps)\n-AC_MSG_CHECKING(\"how to check if pid exists\")\n-PS=$ac_cv_path_PS\n+AC_CACHE_CHECK([how to check if pid exists], [ac_cv_FIND_PROC],\n+[\n # Linux style\n if $PS wwwp $$ 2> /dev/null | grep -- \"$0\" > /dev/null\n then\n@@ -502,8 +502,9 @@\n       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.])\n   esac\n fi\n-AC_SUBST(FIND_PROC)\n-AC_MSG_RESULT(\"$FIND_PROC\")\n+ac_cv_FIND_PROC=\"$FIND_PROC\"\n+])\n+AC_SUBST([FIND_PROC], [$ac_cv_FIND_PROC])\n \n # Check if a pid is valid\n AC_PATH_PROG(KILL, kill, kill)\n"
  },
  {
    "path": "package/oracle-mysql/0002-use-new-readline-iface.patch",
    "content": "Tell MySQL to use the new readline interface even when an external\nreadline is being used.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\n---\n configure.in |    1 +\n 1 file changed, 1 insertion(+)\n\nIndex: mysql-5.1.53/configure.in\n===================================================================\n--- mysql-5.1.53.orig/configure.in\n+++ mysql-5.1.53/configure.in\n@@ -2689,6 +2689,7 @@\n \t    # this way we avoid linking commercial source with GPL readline\n \t    readline_link=\"-lreadline\"\n \t    want_to_use_readline=\"yes\"\n+\t    AC_DEFINE_UNQUOTED(USE_NEW_READLINE_INTERFACE, 1)\n \telif [test \"$mysql_cv_libedit_interface\" = \"yes\"]\n \tthen\n \t    # Use libedit\n"
  },
  {
    "path": "package/oracle-mysql/0003-ac_stack_direction-is-unset.patch",
    "content": "misc.m4: ac_cv_c_stack_direction is unset.\n\nSigned-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>\n\n--- mysql-5.1.70.orig/config/ac-macros/misc.m4\n+++ mysql-5.1.70/config/ac-macros/misc.m4\n@@ -477,7 +477,7 @@\n     exit(ptr_f(&a) < 0);\n   }\n   ], ac_cv_c_stack_direction=1, ac_cv_c_stack_direction=-1,\n-   ac_cv_c_stack_direction=)])\n+   ac_cv_c_stack_direction=0)])\n  AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)\n ])dnl\n \n"
  },
  {
    "path": "package/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch",
    "content": "Makefile: fix cross-compiling the server\n\nMySQL Makefile believes it can run code it just compiled, to\ngenerate a header. This does not work for cross-compilation.\n\nInstead, use a pre-installed host-version of the required tool.\n\nSigned-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>\n\n--- mysql-5.1.70/sql/Makefile.am\n+++ mysql-5.1.70.patch/sql/Makefile.am\n@@ -177,7 +177,7 @@\n # this avoid the rebuild of the built files in a source dist\n lex_hash.h:\tgen_lex_hash.cc lex.h\n \t\t$(MAKE) $(AM_MAKEFLAGS) gen_lex_hash$(EXEEXT)\n-\t\t./gen_lex_hash$(EXEEXT) > $@-t\n+\t\tgen_lex_hash$(EXEEXT) > $@-t\n \t\t$(MV) $@-t $@\n \n # For testing of udf_example.so\n\n--- mysql-5.1.70/sql/Makefile.in\n+++ mysql-5.1.70.patch/sql/Makefile.in\n@@ -1310,7 +1310,7 @@\n # this avoid the rebuild of the built files in a source dist\n lex_hash.h:\tgen_lex_hash.cc lex.h\n \t\t$(MAKE) $(AM_MAKEFLAGS) gen_lex_hash$(EXEEXT)\n-\t\t./gen_lex_hash$(EXEEXT) > $@-t\n+\t\tgen_lex_hash$(EXEEXT) > $@-t\n \t\t$(MV) $@-t $@\n \n # We might have some stuff not built in this build, but that we want to install\n"
  },
  {
    "path": "package/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch",
    "content": "fix the yacc code in mysql\n\nSigned-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com>\n---\ndiff -uNr mysql-5.1.73.orig/sql/sql_lex.cc mysql-5.1.73/sql/sql_lex.cc\n--- mysql-5.1.73.orig/sql/sql_lex.cc\t2013-11-04 18:52:27.000000000 +0000\n+++ mysql-5.1.73/sql/sql_lex.cc\t2014-02-12 14:12:04.244111625 +0000\n@@ -775,14 +775,13 @@\n \t\t\t\t(which can't be followed by a signed number)\n */\n \n-int MYSQLlex(void *arg, void *yythd)\n+int MYSQLlex(void *arg, THD *thd)\n {\n   reg1\tuchar c= 0;\n   bool comment_closed;\n   int\ttokval, result_state;\n   uint length;\n   enum my_lex_states state;\n-  THD *thd= (THD *)yythd;\n   Lex_input_stream *lip= & thd->m_parser_state->m_lip;\n   LEX *lex= thd->lex;\n   YYSTYPE *yylval=(YYSTYPE*) arg;\ndiff -uNr mysql-5.1.73.orig/sql/sql_lex.h mysql-5.1.73/sql/sql_lex.h\n--- mysql-5.1.73.orig/sql/sql_lex.h\t2013-11-04 18:52:27.000000000 +0000\n+++ mysql-5.1.73/sql/sql_lex.h\t2014-02-12 14:17:19.424106423 +0000\n@@ -2072,7 +2072,7 @@\n extern void lex_free(void);\n extern void lex_start(THD *thd);\n extern void lex_end(LEX *lex);\n-extern int MYSQLlex(void *arg, void *yythd);\n+extern int MYSQLlex(void *arg, THD *thd);\n \n extern void trim_whitespace(CHARSET_INFO *cs, LEX_STRING *str);\n \ndiff -uNr mysql-5.1.73.orig/sql/sql_parse.cc mysql-5.1.73/sql/sql_parse.cc\n--- mysql-5.1.73.orig/sql/sql_parse.cc\t2013-11-04 18:52:27.000000000 +0000\n+++ mysql-5.1.73/sql/sql_parse.cc\t2014-02-12 14:19:20.424104427 +0000\n@@ -8012,7 +8012,7 @@\n }\n \n \n-extern int MYSQLparse(void *thd); // from sql_yacc.cc\n+extern int MYSQLparse(THD *thd); // from sql_yacc.cc\n \n \n /**\ndiff -uNr mysql-5.1.73.orig/sql/sql_yacc.yy mysql-5.1.73/sql/sql_yacc.yy\n--- mysql-5.1.73.orig/sql/sql_yacc.yy\t2013-11-04 18:52:27.000000000 +0000\n+++ mysql-5.1.73/sql/sql_yacc.yy\t2014-02-12 20:17:06.707750140 +0000\n@@ -23,19 +23,13 @@\n */\n \n %{\n-/* thd is passed as an argument to yyparse(), and subsequently to yylex().\n-** The type will be void*, so it must be  cast to (THD*) when used.\n-** Use the YYTHD macro for this.\n-*/\n-#define YYPARSE_PARAM yythd\n-#define YYLEX_PARAM yythd\n-#define YYTHD ((THD *)yythd)\n-#define YYLIP (& YYTHD->m_parser_state->m_lip)\n+\n+#define YYLIP (& thd->m_parser_state->m_lip)\n \n #define MYSQL_YACC\n #define YYINITDEPTH 100\n #define YYMAXDEPTH 3200                        /* Because of 64K stack */\n-#define Lex (YYTHD->lex)\n+#define Lex (thd->lex)\n #define Select Lex->current_select\n #include \"mysql_priv.h\"\n #include \"slave.h\"\n@@ -55,7 +49,7 @@\n #pragma warning (disable : 4065)\n #endif\n \n-int yylex(void *yylval, void *yythd);\n+int yylex(void *yylval, THD *thd);\n \n const LEX_STRING null_lex_str= {0,0};\n \n@@ -64,7 +58,7 @@\n     ulong val= *(F);                          \\\n     if (my_yyoverflow((B), (D), &val))        \\\n     {                                         \\\n-      yyerror((char*) (A));                   \\\n+      yyerror(current_thd, (char*) (A));      \\\n       return 2;                               \\\n     }                                         \\\n     else                                      \\\n@@ -76,7 +70,7 @@\n #define MYSQL_YYABORT                         \\\n   do                                          \\\n   {                                           \\\n-    LEX::cleanup_lex_after_parse_error(YYTHD);\\\n+    LEX::cleanup_lex_after_parse_error(thd);\\\n     YYABORT;                                  \\\n   } while (0)\n \n@@ -159,9 +153,8 @@\n   to abort from the parser.\n */\n \n-void MYSQLerror(const char *s)\n+void MYSQLerror(THD *thd, const char *s)\n {\n-  THD *thd= current_thd;\n \n   /*\n     Restore the original LEX if it was replaced when parsing\n@@ -675,7 +668,10 @@\n bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);\n %}\n \n-%pure_parser                                    /* We have threads */\n+/* We have threads */\n+%define api.pure\n+%parse-param { THD *thd }\n+%lex-param { THD *thd }\n /*\n   Currently there are 169 shift/reduce conflicts.\n   We should not introduce new conflicts any more.\n@@ -1516,7 +1512,6 @@\n query:\n           END_OF_INPUT\n           {\n-            THD *thd= YYTHD;\n             if (!thd->bootstrap &&\n               (!(thd->lex->select_lex.options & OPTION_FOUND_COMMENT)))\n             {\n@@ -1530,7 +1525,7 @@\n           {\n             Lex_input_stream *lip = YYLIP;\n \n-            if ((YYTHD->client_capabilities & CLIENT_MULTI_QUERIES) &&\n+            if ((thd->client_capabilities & CLIENT_MULTI_QUERIES) &&\n                 ! lip->stmt_prepare_mode &&\n                 ! lip->eof())\n             {\n@@ -1626,7 +1621,6 @@\n deallocate:\n           deallocate_or_drop PREPARE_SYM ident\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             lex->sql_command= SQLCOM_DEALLOCATE_PREPARE;\n             lex->prepared_stmt_name= $3;\n@@ -1641,7 +1635,6 @@\n prepare:\n           PREPARE_SYM ident FROM prepare_src\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             lex->sql_command= SQLCOM_PREPARE;\n             lex->prepared_stmt_name= $2;\n@@ -1651,14 +1644,12 @@\n prepare_src:\n           TEXT_STRING_sys\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             lex->prepared_stmt_code= $1;\n             lex->prepared_stmt_code_is_varref= FALSE;\n           }\n         | '@' ident_or_text\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             lex->prepared_stmt_code= $2;\n             lex->prepared_stmt_code_is_varref= TRUE;\n@@ -1668,7 +1659,6 @@\n execute:\n           EXECUTE_SYM ident\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             lex->sql_command= SQLCOM_EXECUTE;\n             lex->prepared_stmt_name= $2;\n@@ -1826,7 +1816,6 @@\n create:\n           CREATE opt_table_options TABLE_SYM opt_if_not_exists table_ident\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             lex->sql_command= SQLCOM_CREATE_TABLE;\n             if (!lex->select_lex.add_table_to_list(thd, $5, NULL,\n@@ -1844,13 +1833,13 @@\n           }\n           create2\n           {\n-            LEX *lex= YYTHD->lex;\n+            LEX *lex= thd->lex;\n             lex->current_select= &lex->select_lex; \n             if ((lex->create_info.used_fields & HA_CREATE_USED_ENGINE) &&\n                 !lex->create_info.db_type)\n             {\n-              lex->create_info.db_type= ha_default_handlerton(YYTHD);\n-              push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,\n+              lex->create_info.db_type= ha_default_handlerton(thd);\n+              push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,\n                                   ER_WARN_USING_OTHER_HANDLER,\n                                   ER(ER_WARN_USING_OTHER_HANDLER),\n                                   ha_resolve_storage_engine_name(lex->create_info.db_type),\n@@ -1979,7 +1968,7 @@\n event_tail:\n           remember_name EVENT_SYM opt_if_not_exists sp_name\n           {\n-            THD *thd= YYTHD;\n+            THD *thd= thd;\n             LEX *lex=Lex;\n \n             lex->stmt_definition_begin= $1;\n@@ -2046,7 +2035,7 @@\n ev_starts:\n           /* empty */\n           {\n-            Item *item= new (YYTHD->mem_root) Item_func_now_local();\n+            Item *item= new (thd->mem_root) Item_func_now_local();\n             if (item == NULL)\n               MYSQL_YYABORT;\n             Lex->event_parse_data->item_starts= item;\n@@ -2096,7 +2085,6 @@\n \n ev_sql_stmt:\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             Lex_input_stream *lip= YYLIP;\n \n@@ -2139,7 +2127,6 @@\n           }\n           ev_sql_stmt_inner\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n \n             /* return back to the original memory root ASAP */\n@@ -2198,11 +2185,10 @@\n             $$= new sp_name($1, $3, true);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n-            $$->init_qname(YYTHD);\n+            $$->init_qname(thd);\n           }\n         | ident\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             LEX_STRING db;\n             if (check_routine_name(&$1))\n@@ -2272,7 +2258,7 @@\n             lex->sql_command= SQLCOM_CALL;\n             lex->spname= $2;\n             lex->value_list.empty();\n-            sp_add_used_routine(lex, YYTHD, $2, TYPE_ENUM_PROCEDURE);\n+            sp_add_used_routine(lex, thd, $2, TYPE_ENUM_PROCEDURE);\n           }\n           opt_sp_cparam_list {}\n         ;\n@@ -2345,7 +2331,7 @@\n                                                      (enum enum_field_types)$3,\n                                                      sp_param_in);\n \n-            if (lex->sphead->fill_field_definition(YYTHD, lex,\n+            if (lex->sphead->fill_field_definition(thd, lex,\n                                                    (enum enum_field_types) $3,\n                                                    &spvar->field_def))\n             {\n@@ -2382,7 +2368,7 @@\n                                                      (enum enum_field_types)$4,\n                                                      (sp_param_mode_t)$1);\n \n-            if (lex->sphead->fill_field_definition(YYTHD, lex,\n+            if (lex->sphead->fill_field_definition(thd, lex,\n                                                    (enum enum_field_types) $4,\n                                                    &spvar->field_def))\n             {\n@@ -2445,13 +2431,12 @@\n           {\n             LEX *lex= Lex;\n \n-            lex->sphead->reset_lex(YYTHD);\n+            lex->sphead->reset_lex(thd);\n             lex->spcont->declare_var_boundary($2);\n           }\n           type\n           sp_opt_default\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= Lex;\n             sp_pcontext *pctx= lex->spcont;\n             uint num_vars= pctx->context_var_count();\n@@ -2477,7 +2462,7 @@\n               spvar->type= var_type;\n               spvar->dflt= dflt_value_item;\n             \n-              if (lex->sphead->fill_field_definition(YYTHD, lex, var_type,\n+              if (lex->sphead->fill_field_definition(thd, lex, var_type,\n                                                      &spvar->field_def))\n               {\n                 MYSQL_YYABORT;\n@@ -2501,7 +2486,7 @@\n             }\n \n             pctx->declare_var_boundary(0);\n-            if (lex->sphead->restore_lex(YYTHD))\n+            if (lex->sphead->restore_lex(thd))\n               MYSQL_YYABORT;\n             $$.vars= $2;\n             $$.conds= $$.hndlrs= $$.curs= 0;\n@@ -2516,7 +2501,7 @@\n \t      my_error(ER_SP_DUP_COND, MYF(0), $2.str);\n \t      MYSQL_YYABORT;\n \t    }\n-\t    if(YYTHD->lex->spcont->push_cond(&$2, $5))\n+\t    if(thd->lex->spcont->push_cond(&$2, $5))\n               MYSQL_YYABORT;\n             $$.vars= $$.hndlrs= $$.curs= 0;\n             $$.conds= 1;\n@@ -2602,7 +2587,7 @@\n \n sp_cursor_stmt:\n           {\n-            Lex->sphead->reset_lex(YYTHD);\n+            Lex->sphead->reset_lex(thd);\n           }\n           select\n           {\n@@ -2618,7 +2603,7 @@\n             }\n             lex->sp_lex_in_use= TRUE;\n             $$= lex;\n-            if (lex->sphead->restore_lex(YYTHD))\n+            if (lex->sphead->restore_lex(thd))\n               MYSQL_YYABORT;\n           }\n         ;\n@@ -2662,7 +2647,7 @@\n sp_cond:\n           ulong_num\n           { /* mysql errno */\n-            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));\n+            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             $$->type= sp_cond_type_t::number;\n@@ -2675,7 +2660,7 @@\n               my_error(ER_SP_BAD_SQLSTATE, MYF(0), $3.str);\n               MYSQL_YYABORT;\n             }\n-            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));\n+            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             $$->type= sp_cond_type_t::state;\n@@ -2705,21 +2690,21 @@\n           }\n         | SQLWARNING_SYM /* SQLSTATEs 01??? */\n           {\n-            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));\n+            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             $$->type= sp_cond_type_t::warning;\n           }\n         | not FOUND_SYM /* SQLSTATEs 02??? */\n           {\n-            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));\n+            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             $$->type= sp_cond_type_t::notfound;\n           }\n         | SQLEXCEPTION_SYM /* All other SQLSTATEs */\n           {\n-            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t));\n+            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t));\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             $$->type= sp_cond_type_t::exception;\n@@ -2789,7 +2774,6 @@\n         \n sp_proc_stmt_statement:\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             Lex_input_stream *lip= YYLIP;\n \n@@ -2798,7 +2782,6 @@\n           }\n           statement\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             Lex_input_stream *lip= YYLIP;\n             sp_head *sp= lex->sphead;\n@@ -2845,7 +2828,7 @@\n \n sp_proc_stmt_return:\n           RETURN_SYM \n-          { Lex->sphead->reset_lex(YYTHD); }\n+          { Lex->sphead->reset_lex(thd); }\n           expr\n           {\n             LEX *lex= Lex;\n@@ -2867,7 +2850,7 @@\n                 MYSQL_YYABORT;\n               sp->m_flags|= sp_head::HAS_RETURN;\n             }\n-            if (sp->restore_lex(YYTHD))\n+            if (sp->restore_lex(thd))\n               MYSQL_YYABORT;\n           }\n         ;\n@@ -3094,7 +3077,7 @@\n         ;\n \n sp_if:\n-          { Lex->sphead->reset_lex(YYTHD); }\n+          { Lex->sphead->reset_lex(thd); }\n           expr THEN_SYM\n           {\n             LEX *lex= Lex;\n@@ -3108,7 +3091,7 @@\n                 sp->add_cont_backpatch(i) ||\n                 sp->add_instr(i))\n               MYSQL_YYABORT;\n-            if (sp->restore_lex(YYTHD))\n+            if (sp->restore_lex(thd))\n               MYSQL_YYABORT;\n           }\n           sp_proc_stmts1\n@@ -3147,7 +3130,7 @@\n           {\n             LEX *lex= Lex;\n             case_stmt_action_case(lex);\n-            lex->sphead->reset_lex(YYTHD); /* For expr $3 */\n+            lex->sphead->reset_lex(thd); /* For expr $3 */\n           }\n           expr\n           {\n@@ -3156,7 +3139,7 @@\n               MYSQL_YYABORT;\n \n             /* For expr $3 */\n-            if (lex->sphead->restore_lex(YYTHD))\n+            if (lex->sphead->restore_lex(thd))\n               MYSQL_YYABORT;\n           }\n           simple_when_clause_list\n@@ -3198,7 +3181,7 @@\n simple_when_clause:\n           WHEN_SYM\n           {\n-            Lex->sphead->reset_lex(YYTHD); /* For expr $3 */\n+            Lex->sphead->reset_lex(thd); /* For expr $3 */\n           }\n           expr\n           {\n@@ -3208,7 +3191,7 @@\n             if (case_stmt_action_when(lex, $3, true))\n               MYSQL_YYABORT;\n             /* For expr $3 */\n-            if (lex->sphead->restore_lex(YYTHD))\n+            if (lex->sphead->restore_lex(thd))\n               MYSQL_YYABORT;\n           }\n           THEN_SYM\n@@ -3223,7 +3206,7 @@\n searched_when_clause:\n           WHEN_SYM\n           {\n-            Lex->sphead->reset_lex(YYTHD); /* For expr $3 */\n+            Lex->sphead->reset_lex(thd); /* For expr $3 */\n           }\n           expr\n           {\n@@ -3231,7 +3214,7 @@\n             if (case_stmt_action_when(lex, $3, false))\n               MYSQL_YYABORT;\n             /* For expr $3 */\n-            if (lex->sphead->restore_lex(YYTHD))\n+            if (lex->sphead->restore_lex(thd))\n               MYSQL_YYABORT;\n           }\n           THEN_SYM\n@@ -3395,7 +3378,7 @@\n               MYSQL_YYABORT;\n \t  }\n         | WHILE_SYM \n-          { Lex->sphead->reset_lex(YYTHD); }\n+          { Lex->sphead->reset_lex(thd); }\n           expr DO_SYM\n           {\n             LEX *lex= Lex;\n@@ -3409,7 +3392,7 @@\n                 sp->new_cont_backpatch(i) ||\n                 sp->add_instr(i))\n               MYSQL_YYABORT;\n-            if (sp->restore_lex(YYTHD))\n+            if (sp->restore_lex(thd))\n               MYSQL_YYABORT;\n           }\n           sp_proc_stmts1 END WHILE_SYM\n@@ -3424,7 +3407,7 @@\n             lex->sphead->do_cont_backpatch();\n           }\n         | REPEAT_SYM sp_proc_stmts1 UNTIL_SYM \n-          { Lex->sphead->reset_lex(YYTHD); }\n+          { Lex->sphead->reset_lex(thd); }\n           expr END REPEAT_SYM\n           {\n             LEX *lex= Lex;\n@@ -3436,7 +3419,7 @@\n             if (i == NULL ||\n                 lex->sphead->add_instr(i))\n               MYSQL_YYABORT;\n-            if (lex->sphead->restore_lex(YYTHD))\n+            if (lex->sphead->restore_lex(thd))\n               MYSQL_YYABORT;\n             /* We can shortcut the cont_backpatch here */\n             i->m_cont_dest= ip+1;\n@@ -3859,7 +3842,6 @@\n           create3 {}\n         | LIKE table_ident\n           {\n-            THD *thd= YYTHD;\n             TABLE_LIST *src_table;\n             LEX *lex= thd->lex;\n \n@@ -3873,7 +3855,6 @@\n           }\n         | '(' LIKE table_ident ')'\n           {\n-            THD *thd= YYTHD;\n             TABLE_LIST *src_table;\n             LEX *lex= thd->lex;\n \n@@ -4342,7 +4323,6 @@\n           bit_expr\n           {\n             Item *part_expr= $1;\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             Name_resolution_context *context= &lex->current_select->context;\n             TABLE_LIST *save_list= context->table_list;\n@@ -4364,7 +4344,7 @@\n               my_error(ER_PARTITION_FUNCTION_IS_NOT_ALLOWED, MYF(0));\n               MYSQL_YYABORT;\n             }\n-            if (part_expr->fix_fields(YYTHD, (Item**)0) ||\n+            if (part_expr->fix_fields(thd, (Item**)0) ||\n                 ((context->table_list= save_list), FALSE) ||\n                 (!part_expr->const_item()) ||\n                 (!lex->safe_to_cache_query))\n@@ -4629,7 +4609,7 @@\n         | TYPE_SYM opt_equal storage_engines\n           {\n             Lex->create_info.db_type= $3;\n-            WARN_DEPRECATED(yythd, \"6.0\", \"TYPE=storage_engine\",\n+            WARN_DEPRECATED(thd, \"6.0\", \"TYPE=storage_engine\",\n                             \"'ENGINE=storage_engine'\");\n             Lex->create_info.used_fields|= HA_CREATE_USED_ENGINE;\n           }\n@@ -4791,19 +4771,19 @@\n storage_engines:\n           ident_or_text\n           {\n-            plugin_ref plugin= ha_resolve_by_name(YYTHD, &$1);\n+            plugin_ref plugin= ha_resolve_by_name(thd, &$1);\n \n             if (plugin)\n               $$= plugin_data(plugin, handlerton*);\n             else\n             {\n-              if (YYTHD->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION)\n+              if (thd->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION)\n               {\n                 my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), $1.str);\n                 MYSQL_YYABORT;\n               }\n               $$= 0;\n-              push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,\n+              push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,\n                                   ER_UNKNOWN_STORAGE_ENGINE,\n                                   ER(ER_UNKNOWN_STORAGE_ENGINE),\n                                   $1.str);\n@@ -4815,7 +4795,7 @@\n           ident_or_text\n           {\n             plugin_ref plugin;\n-            if ((plugin= ha_resolve_by_name(YYTHD, &$1)))\n+            if ((plugin= ha_resolve_by_name(thd, &$1)))\n               $$= plugin_data(plugin, handlerton*);\n             else\n             {\n@@ -5043,7 +5023,7 @@\n               {\n                 char buff[sizeof(\"YEAR()\") + MY_INT64_NUM_DECIMAL_DIGITS + 1];\n                 my_snprintf(buff, sizeof(buff), \"YEAR(%lu)\", length);\n-                push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_NOTE,\n+                push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE,\n                                     ER_WARN_DEPRECATED_SYNTAX,\n                                     ER(ER_WARN_DEPRECATED_SYNTAX),\n                                     buff, \"YEAR(4)\");\n@@ -5057,7 +5037,7 @@\n           { $$=MYSQL_TYPE_TIME; }\n         | TIMESTAMP opt_field_length\n           {\n-            if (YYTHD->variables.sql_mode & MODE_MAXDB)\n+            if (thd->variables.sql_mode & MODE_MAXDB)\n               $$=MYSQL_TYPE_DATETIME;\n             else\n             {\n@@ -5189,7 +5169,7 @@\n real_type:\n           REAL\n           {\n-            $$= YYTHD->variables.sql_mode & MODE_REAL_AS_FLOAT ?\n+            $$= thd->variables.sql_mode & MODE_REAL_AS_FLOAT ?\n               MYSQL_TYPE_FLOAT : MYSQL_TYPE_DOUBLE;\n           }\n         | DOUBLE_SYM\n@@ -5263,7 +5243,7 @@\n         | DEFAULT now_or_signed_literal { Lex->default_value=$2; }\n         | ON UPDATE_SYM NOW_SYM optional_braces\n           {\n-            Item *item= new (YYTHD->mem_root) Item_func_now_local();\n+            Item *item= new (thd->mem_root) Item_func_now_local();\n             if (item == NULL)\n               MYSQL_YYABORT;\n             Lex->on_update_value= item;\n@@ -5312,7 +5292,7 @@\n now_or_signed_literal:\n           NOW_SYM optional_braces\n           {\n-            $$= new (YYTHD->mem_root) Item_func_now_local();\n+            $$= new (thd->mem_root) Item_func_now_local();\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -5673,7 +5653,6 @@\n alter:\n           ALTER opt_ignore TABLE_SYM table_ident\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             lex->name.str= 0;\n             lex->name.length= 0;\n@@ -5799,7 +5778,7 @@\n               Event_parse_data.\n             */\n \n-            if (!(Lex->event_parse_data= Event_parse_data::new_instance(YYTHD)))\n+            if (!(Lex->event_parse_data= Event_parse_data::new_instance(thd)))\n               MYSQL_YYABORT;\n             Lex->event_parse_data->identifier= $4;\n \n@@ -6192,7 +6171,6 @@\n           {\n             if (!$4)\n             {\n-              THD *thd= YYTHD;\n               $4= thd->variables.collation_database;\n             }\n             $5= $5 ? $5 : $4;\n@@ -6556,7 +6534,7 @@\n assign_to_keycache:\n           table_ident cache_keys_spec\n           {\n-            if (!Select->add_table_to_list(YYTHD, $1, NULL, 0, TL_READ, \n+            if (!Select->add_table_to_list(thd, $1, NULL, 0, TL_READ, \n                                            Select->pop_index_hints()))\n               MYSQL_YYABORT;\n           }\n@@ -6585,7 +6563,7 @@\n preload_keys:\n           table_ident cache_keys_spec opt_ignore_leaves\n           {\n-            if (!Select->add_table_to_list(YYTHD, $1, NULL, $3, TL_READ,\n+            if (!Select->add_table_to_list(thd, $1, NULL, $3, TL_READ,\n                                            Select->pop_index_hints()))\n               MYSQL_YYABORT;\n           }\n@@ -6593,7 +6571,7 @@\n \n cache_keys_spec:\n           {\n-            Lex->select_lex.alloc_index_hints(YYTHD);\n+            Lex->select_lex.alloc_index_hints(thd);\n             Select->set_index_hint_type(INDEX_HINT_USE, \n                                         global_system_variables.old_mode ? \n                                         INDEX_HINT_MASK_JOIN : \n@@ -6813,7 +6791,6 @@\n         | select_item\n         | '*'\n           {\n-            THD *thd= YYTHD;\n             Item *item= new (thd->mem_root)\n                           Item_field(&thd->lex->current_select->context,\n                                      NULL, NULL, \"*\");\n@@ -6828,7 +6805,6 @@\n select_item:\n           remember_name select_item2 remember_end select_alias\n           {\n-            THD *thd= YYTHD;\n             DBUG_ASSERT($1 < $3);\n \n             if (add_item_to_list(thd, $2))\n@@ -6929,7 +6905,7 @@\n             else\n             {\n               /* X OR Y */\n-              $$ = new (YYTHD->mem_root) Item_cond_or($1, $3);\n+              $$ = new (thd->mem_root) Item_cond_or($1, $3);\n               if ($$ == NULL)\n                 MYSQL_YYABORT;\n             }\n@@ -6937,7 +6913,7 @@\n         | expr XOR expr %prec XOR\n           {\n             /* XOR is a proprietary extension */\n-            $$ = new (YYTHD->mem_root) Item_cond_xor($1, $3);\n+            $$ = new (thd->mem_root) Item_cond_xor($1, $3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -6979,50 +6955,50 @@\n             else\n             {\n               /* X AND Y */\n-              $$ = new (YYTHD->mem_root) Item_cond_and($1, $3);\n+              $$ = new (thd->mem_root) Item_cond_and($1, $3);\n               if ($$ == NULL)\n                 MYSQL_YYABORT;\n             }\n           }\n         | NOT_SYM expr %prec NOT_SYM\n           {\n-            $$= negate_expression(YYTHD, $2);\n+            $$= negate_expression(thd, $2);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bool_pri IS TRUE_SYM %prec IS\n           {\n-            $$= new (YYTHD->mem_root) Item_func_istrue($1);\n+            $$= new (thd->mem_root) Item_func_istrue($1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bool_pri IS not TRUE_SYM %prec IS\n           {\n-            $$= new (YYTHD->mem_root) Item_func_isnottrue($1);\n+            $$= new (thd->mem_root) Item_func_isnottrue($1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bool_pri IS FALSE_SYM %prec IS\n           {\n-            $$= new (YYTHD->mem_root) Item_func_isfalse($1);\n+            $$= new (thd->mem_root) Item_func_isfalse($1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bool_pri IS not FALSE_SYM %prec IS\n           {\n-            $$= new (YYTHD->mem_root) Item_func_isnotfalse($1);\n+            $$= new (thd->mem_root) Item_func_isnotfalse($1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bool_pri IS UNKNOWN_SYM %prec IS\n           {\n-            $$= new (YYTHD->mem_root) Item_func_isnull($1);\n+            $$= new (thd->mem_root) Item_func_isnull($1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bool_pri IS not UNKNOWN_SYM %prec IS\n           {\n-            $$= new (YYTHD->mem_root) Item_func_isnotnull($1);\n+            $$= new (thd->mem_root) Item_func_isnotnull($1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7032,19 +7008,19 @@\n bool_pri:\n           bool_pri IS NULL_SYM %prec IS\n           {\n-            $$= new (YYTHD->mem_root) Item_func_isnull($1);\n+            $$= new (thd->mem_root) Item_func_isnull($1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bool_pri IS not NULL_SYM %prec IS\n           {\n-            $$= new (YYTHD->mem_root) Item_func_isnotnull($1);\n+            $$= new (thd->mem_root) Item_func_isnotnull($1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bool_pri EQUAL_SYM predicate %prec EQUAL_SYM\n           {\n-            $$= new (YYTHD->mem_root) Item_func_equal($1,$3);\n+            $$= new (thd->mem_root) Item_func_equal($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7066,13 +7042,12 @@\n predicate:\n           bit_expr IN_SYM '(' subselect ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_in_subselect($1, $4);\n+            $$= new (thd->mem_root) Item_in_subselect($1, $4);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr not IN_SYM '(' subselect ')'\n           {\n-            THD *thd= YYTHD;\n             Item *item= new (thd->mem_root) Item_in_subselect($1, $5);\n             if (item == NULL)\n               MYSQL_YYABORT;\n@@ -7082,7 +7057,7 @@\n           }\n         | bit_expr IN_SYM '(' expr ')'\n           {\n-            $$= handle_sql2003_note184_exception(YYTHD, $1, true, $4);\n+            $$= handle_sql2003_note184_exception(thd, $1, true, $4);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7090,13 +7065,13 @@\n           { \n             $6->push_front($4);\n             $6->push_front($1);\n-            $$= new (YYTHD->mem_root) Item_func_in(*$6);\n+            $$= new (thd->mem_root) Item_func_in(*$6);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr not IN_SYM '(' expr ')'\n           {\n-            $$= handle_sql2003_note184_exception(YYTHD, $1, false, $5);\n+            $$= handle_sql2003_note184_exception(thd, $1, false, $5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7104,7 +7079,7 @@\n           {\n             $7->push_front($5);\n             $7->push_front($1);\n-            Item_func_in *item = new (YYTHD->mem_root) Item_func_in(*$7);\n+            Item_func_in *item = new (thd->mem_root) Item_func_in(*$7);\n             if (item == NULL)\n               MYSQL_YYABORT;\n             item->negate();\n@@ -7112,14 +7087,14 @@\n           }\n         | bit_expr BETWEEN_SYM bit_expr AND_SYM predicate\n           {\n-            $$= new (YYTHD->mem_root) Item_func_between($1,$3,$5);\n+            $$= new (thd->mem_root) Item_func_between($1,$3,$5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr not BETWEEN_SYM bit_expr AND_SYM predicate\n           {\n             Item_func_between *item;\n-            item= new (YYTHD->mem_root) Item_func_between($1,$4,$6);\n+            item= new (thd->mem_root) Item_func_between($1,$4,$6);\n             if (item == NULL)\n               MYSQL_YYABORT;\n             item->negate();\n@@ -7127,42 +7102,42 @@\n           }\n         | bit_expr SOUNDS_SYM LIKE bit_expr\n           {\n-            Item *item1= new (YYTHD->mem_root) Item_func_soundex($1);\n-            Item *item4= new (YYTHD->mem_root) Item_func_soundex($4);\n+            Item *item1= new (thd->mem_root) Item_func_soundex($1);\n+            Item *item4= new (thd->mem_root) Item_func_soundex($4);\n             if ((item1 == NULL) || (item4 == NULL))\n               MYSQL_YYABORT;\n-            $$= new (YYTHD->mem_root) Item_func_eq(item1, item4);\n+            $$= new (thd->mem_root) Item_func_eq(item1, item4);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr LIKE simple_expr opt_escape\n           {\n-            $$= new (YYTHD->mem_root) Item_func_like($1,$3,$4,Lex->escape_used);\n+            $$= new (thd->mem_root) Item_func_like($1,$3,$4,Lex->escape_used);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr not LIKE simple_expr opt_escape\n           {\n-            Item *item= new (YYTHD->mem_root) Item_func_like($1,$4,$5,\n+            Item *item= new (thd->mem_root) Item_func_like($1,$4,$5,\n                                                              Lex->escape_used);\n             if (item == NULL)\n               MYSQL_YYABORT;\n-            $$= new (YYTHD->mem_root) Item_func_not(item);\n+            $$= new (thd->mem_root) Item_func_not(item);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr REGEXP bit_expr\n           {\n-            $$= new (YYTHD->mem_root) Item_func_regex($1,$3);\n+            $$= new (thd->mem_root) Item_func_regex($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr not REGEXP bit_expr\n           {\n-            Item *item= new (YYTHD->mem_root) Item_func_regex($1,$4);\n+            Item *item= new (thd->mem_root) Item_func_regex($1,$4);\n             if (item == NULL)\n               MYSQL_YYABORT;\n-            $$= negate_expression(YYTHD, item);\n+            $$= negate_expression(thd, item);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7172,85 +7147,85 @@\n bit_expr:\n           bit_expr '|' bit_expr %prec '|'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_bit_or($1,$3);\n+            $$= new (thd->mem_root) Item_func_bit_or($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr '&' bit_expr %prec '&'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_bit_and($1,$3);\n+            $$= new (thd->mem_root) Item_func_bit_and($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr SHIFT_LEFT bit_expr %prec SHIFT_LEFT\n           {\n-            $$= new (YYTHD->mem_root) Item_func_shift_left($1,$3);\n+            $$= new (thd->mem_root) Item_func_shift_left($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr SHIFT_RIGHT bit_expr %prec SHIFT_RIGHT\n           {\n-            $$= new (YYTHD->mem_root) Item_func_shift_right($1,$3);\n+            $$= new (thd->mem_root) Item_func_shift_right($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr '+' bit_expr %prec '+'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_plus($1,$3);\n+            $$= new (thd->mem_root) Item_func_plus($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr '-' bit_expr %prec '-'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_minus($1,$3);\n+            $$= new (thd->mem_root) Item_func_minus($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr '+' INTERVAL_SYM expr interval %prec '+'\n           {\n-            $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,0);\n+            $$= new (thd->mem_root) Item_date_add_interval($1,$4,$5,0);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr '-' INTERVAL_SYM expr interval %prec '-'\n           {\n-            $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,1);\n+            $$= new (thd->mem_root) Item_date_add_interval($1,$4,$5,1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr '*' bit_expr %prec '*'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_mul($1,$3);\n+            $$= new (thd->mem_root) Item_func_mul($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr '/' bit_expr %prec '/'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_div($1,$3);\n+            $$= new (thd->mem_root) Item_func_div($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr '%' bit_expr %prec '%'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_mod($1,$3);\n+            $$= new (thd->mem_root) Item_func_mod($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr DIV_SYM bit_expr %prec DIV_SYM\n           {\n-            $$= new (YYTHD->mem_root) Item_func_int_div($1,$3);\n+            $$= new (thd->mem_root) Item_func_int_div($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr MOD_SYM bit_expr %prec MOD_SYM\n           {\n-            $$= new (YYTHD->mem_root) Item_func_mod($1,$3);\n+            $$= new (thd->mem_root) Item_func_mod($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | bit_expr '^' bit_expr\n           {\n-            $$= new (YYTHD->mem_root) Item_func_bit_xor($1,$3);\n+            $$= new (thd->mem_root) Item_func_bit_xor($1,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7299,7 +7274,6 @@\n         | function_call_conflict\n         | simple_expr COLLATE_SYM ident_or_text %prec NEG\n           {\n-            THD *thd= YYTHD;\n             Item *i1= new (thd->mem_root) Item_string($3.str,\n                                                       $3.length,\n                                                       thd->charset());\n@@ -7315,7 +7289,7 @@\n         | sum_expr\n         | simple_expr OR_OR_SYM simple_expr\n           {\n-            $$= new (YYTHD->mem_root) Item_func_concat($1, $3);\n+            $$= new (thd->mem_root) Item_func_concat($1, $3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7325,25 +7299,25 @@\n           }\n         | '-' simple_expr %prec NEG\n           {\n-            $$= new (YYTHD->mem_root) Item_func_neg($2);\n+            $$= new (thd->mem_root) Item_func_neg($2);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | '~' simple_expr %prec NEG\n           {\n-            $$= new (YYTHD->mem_root) Item_func_bit_neg($2);\n+            $$= new (thd->mem_root) Item_func_bit_neg($2);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | not2 simple_expr %prec NEG\n           {\n-            $$= negate_expression(YYTHD, $2);\n+            $$= negate_expression(thd, $2);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | '(' subselect ')'\n           { \n-            $$= new (YYTHD->mem_root) Item_singlerow_subselect($2);\n+            $$= new (thd->mem_root) Item_singlerow_subselect($2);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7352,20 +7326,20 @@\n         | '(' expr ',' expr_list ')'\n           {\n             $4->push_front($2);\n-            $$= new (YYTHD->mem_root) Item_row(*$4);\n+            $$= new (thd->mem_root) Item_row(*$4);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | ROW_SYM '(' expr ',' expr_list ')'\n           {\n             $5->push_front($3);\n-            $$= new (YYTHD->mem_root) Item_row(*$5);\n+            $$= new (thd->mem_root) Item_row(*$5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | EXISTS '(' subselect ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_exists_subselect($3);\n+            $$= new (thd->mem_root) Item_exists_subselect($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7374,7 +7348,7 @@\n         | MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')'\n           {\n             $2->push_front($5);\n-            Item_func_match *i1= new (YYTHD->mem_root) Item_func_match(*$2, $6);\n+            Item_func_match *i1= new (thd->mem_root) Item_func_match(*$2, $6);\n             if (i1 == NULL)\n               MYSQL_YYABORT;\n             Select->add_ftfunc_to_list(i1);\n@@ -7382,7 +7356,7 @@\n           }\n         | BINARY simple_expr %prec NEG\n           {\n-            $$= create_func_cast(YYTHD, $2, ITEM_CAST_CHAR, NULL, NULL,\n+            $$= create_func_cast(thd, $2, ITEM_CAST_CHAR, NULL, NULL,\n                                  &my_charset_bin);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n@@ -7390,27 +7364,27 @@\n         | CAST_SYM '(' expr AS cast_type ')'\n           {\n             LEX *lex= Lex;\n-            $$= create_func_cast(YYTHD, $3, $5, lex->length, lex->dec,\n+            $$= create_func_cast(thd, $3, $5, lex->length, lex->dec,\n                                  lex->charset);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | CASE_SYM opt_expr when_list opt_else END\n           {\n-            $$= new (YYTHD->mem_root) Item_func_case(* $3, $2, $4 );\n+            $$= new (thd->mem_root) Item_func_case(* $3, $2, $4 );\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | CONVERT_SYM '(' expr ',' cast_type ')'\n           {\n-            $$= create_func_cast(YYTHD, $3, $5, Lex->length, Lex->dec,\n+            $$= create_func_cast(thd, $3, $5, Lex->length, Lex->dec,\n                                  Lex->charset);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | CONVERT_SYM '(' expr USING charset_name ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_conv_charset($3,$5);\n+            $$= new (thd->mem_root) Item_func_conv_charset($3,$5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7423,14 +7397,14 @@\n               my_error(ER_WRONG_COLUMN_NAME, MYF(0), il->my_name()->str);\n               MYSQL_YYABORT;\n             }\n-            $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context(),\n+            $$= new (thd->mem_root) Item_default_value(Lex->current_context(),\n                                                          $3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | VALUES '(' simple_ident_nospvar ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_insert_value(Lex->current_context(),\n+            $$= new (thd->mem_root) Item_insert_value(Lex->current_context(),\n                                                         $3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n@@ -7438,7 +7412,7 @@\n         | INTERVAL_SYM expr interval '+' expr %prec INTERVAL_SYM\n           /* we cannot put interval before - */\n           {\n-            $$= new (YYTHD->mem_root) Item_date_add_interval($5,$2,$3,0);\n+            $$= new (thd->mem_root) Item_date_add_interval($5,$2,$3,0);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7453,19 +7427,19 @@\n function_call_keyword:\n           CHAR_SYM '(' expr_list ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_char(*$3);\n+            $$= new (thd->mem_root) Item_func_char(*$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | CHAR_SYM '(' expr_list USING charset_name ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_char(*$3, $5);\n+            $$= new (thd->mem_root) Item_func_char(*$3, $5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | CURRENT_USER optional_braces\n           {\n-            $$= new (YYTHD->mem_root) Item_func_current_user(Lex->current_context());\n+            $$= new (thd->mem_root) Item_func_current_user(Lex->current_context());\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->set_stmt_unsafe();\n@@ -7473,31 +7447,30 @@\n           }\n         | DATE_SYM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_date_typecast($3);\n+            $$= new (thd->mem_root) Item_date_typecast($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | DAY_SYM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_dayofmonth($3);\n+            $$= new (thd->mem_root) Item_func_dayofmonth($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | HOUR_SYM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_hour($3);\n+            $$= new (thd->mem_root) Item_func_hour($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | INSERT '(' expr ',' expr ',' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_insert($3,$5,$7,$9);\n+            $$= new (thd->mem_root) Item_func_insert($3,$5,$7,$9);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | INTERVAL_SYM '(' expr ',' expr ')' %prec INTERVAL_SYM\n           {\n-            THD *thd= YYTHD;\n             List<Item> *list= new (thd->mem_root) List<Item>;\n             if (list == NULL)\n               MYSQL_YYABORT;\n@@ -7512,7 +7485,6 @@\n           }\n         | INTERVAL_SYM '(' expr ',' expr ',' expr_list ')' %prec INTERVAL_SYM\n           {\n-            THD *thd= YYTHD;\n             $7->push_front($5);\n             $7->push_front($3);\n             Item_row *item= new (thd->mem_root) Item_row(*$7);\n@@ -7524,103 +7496,103 @@\n           }\n         | LEFT '(' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_left($3,$5);\n+            $$= new (thd->mem_root) Item_func_left($3,$5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | MINUTE_SYM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_minute($3);\n+            $$= new (thd->mem_root) Item_func_minute($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | MONTH_SYM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_month($3);\n+            $$= new (thd->mem_root) Item_func_month($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | RIGHT '(' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_right($3,$5);\n+            $$= new (thd->mem_root) Item_func_right($3,$5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | SECOND_SYM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_second($3);\n+            $$= new (thd->mem_root) Item_func_second($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TIME_SYM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_time_typecast($3);\n+            $$= new (thd->mem_root) Item_time_typecast($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TIMESTAMP '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_datetime_typecast($3);\n+            $$= new (thd->mem_root) Item_datetime_typecast($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TIMESTAMP '(' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_add_time($3, $5, 1, 0);\n+            $$= new (thd->mem_root) Item_func_add_time($3, $5, 1, 0);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TRIM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_trim($3);\n+            $$= new (thd->mem_root) Item_func_trim($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TRIM '(' LEADING expr FROM expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_ltrim($6,$4);\n+            $$= new (thd->mem_root) Item_func_ltrim($6,$4);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TRIM '(' TRAILING expr FROM expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_rtrim($6,$4);\n+            $$= new (thd->mem_root) Item_func_rtrim($6,$4);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TRIM '(' BOTH expr FROM expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_trim($6,$4);\n+            $$= new (thd->mem_root) Item_func_trim($6,$4);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TRIM '(' LEADING FROM expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_ltrim($5);\n+            $$= new (thd->mem_root) Item_func_ltrim($5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TRIM '(' TRAILING FROM expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_rtrim($5);\n+            $$= new (thd->mem_root) Item_func_rtrim($5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TRIM '(' BOTH FROM expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_trim($5);\n+            $$= new (thd->mem_root) Item_func_trim($5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TRIM '(' expr FROM expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_trim($5,$3);\n+            $$= new (thd->mem_root) Item_func_trim($5,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | USER '(' ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_user();\n+            $$= new (thd->mem_root) Item_func_user();\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->set_stmt_unsafe();\n@@ -7628,7 +7600,7 @@\n           }\n         | YEAR_SYM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_year($3);\n+            $$= new (thd->mem_root) Item_func_year($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7649,34 +7621,34 @@\n function_call_nonkeyword:\n           ADDDATE_SYM '(' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5,\n+            $$= new (thd->mem_root) Item_date_add_interval($3, $5,\n                                                              INTERVAL_DAY, 0);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | ADDDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 0);\n+            $$= new (thd->mem_root) Item_date_add_interval($3, $6, $7, 0);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | CURDATE optional_braces\n           {\n-            $$= new (YYTHD->mem_root) Item_func_curdate_local();\n+            $$= new (thd->mem_root) Item_func_curdate_local();\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->safe_to_cache_query=0;\n           }\n         | CURTIME optional_braces\n           {\n-            $$= new (YYTHD->mem_root) Item_func_curtime_local();\n+            $$= new (thd->mem_root) Item_func_curtime_local();\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->safe_to_cache_query=0;\n           }\n         | CURTIME '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_curtime_local($3);\n+            $$= new (thd->mem_root) Item_func_curtime_local($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->safe_to_cache_query=0;\n@@ -7684,83 +7656,83 @@\n         | DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')'\n           %prec INTERVAL_SYM\n           {\n-            $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,0);\n+            $$= new (thd->mem_root) Item_date_add_interval($3,$6,$7,0);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | DATE_SUB_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')'\n           %prec INTERVAL_SYM\n           {\n-            $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,1);\n+            $$= new (thd->mem_root) Item_date_add_interval($3,$6,$7,1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | EXTRACT_SYM '(' interval FROM expr ')'\n           {\n-            $$=new (YYTHD->mem_root) Item_extract( $3, $5);\n+            $$=new (thd->mem_root) Item_extract( $3, $5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | GET_FORMAT '(' date_time_type  ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_get_format($3, $5);\n+            $$= new (thd->mem_root) Item_func_get_format($3, $5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | NOW_SYM optional_braces\n           {\n-            $$= new (YYTHD->mem_root) Item_func_now_local();\n+            $$= new (thd->mem_root) Item_func_now_local();\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->safe_to_cache_query=0;\n           }\n         | NOW_SYM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_now_local($3);\n+            $$= new (thd->mem_root) Item_func_now_local($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->safe_to_cache_query=0;\n           }\n         | POSITION_SYM '(' bit_expr IN_SYM expr ')'\n           {\n-            $$ = new (YYTHD->mem_root) Item_func_locate($5,$3);\n+            $$ = new (thd->mem_root) Item_func_locate($5,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | SUBDATE_SYM '(' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5,\n+            $$= new (thd->mem_root) Item_date_add_interval($3, $5,\n                                                              INTERVAL_DAY, 1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 1);\n+            $$= new (thd->mem_root) Item_date_add_interval($3, $6, $7, 1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | SUBSTRING '(' expr ',' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7);\n+            $$= new (thd->mem_root) Item_func_substr($3,$5,$7);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | SUBSTRING '(' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_substr($3,$5);\n+            $$= new (thd->mem_root) Item_func_substr($3,$5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | SUBSTRING '(' expr FROM expr FOR_SYM expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7);\n+            $$= new (thd->mem_root) Item_func_substr($3,$5,$7);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | SUBSTRING '(' expr FROM expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_substr($3,$5);\n+            $$= new (thd->mem_root) Item_func_substr($3,$5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7775,9 +7747,9 @@\n             */\n             Lex->set_stmt_unsafe();\n             if (global_system_variables.sysdate_is_now == 0)\n-              $$= new (YYTHD->mem_root) Item_func_sysdate_local();\n+              $$= new (thd->mem_root) Item_func_sysdate_local();\n             else\n-              $$= new (YYTHD->mem_root) Item_func_now_local();\n+              $$= new (thd->mem_root) Item_func_now_local();\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->safe_to_cache_query=0;\n@@ -7785,42 +7757,42 @@\n         | SYSDATE '(' expr ')'\n           {\n             if (global_system_variables.sysdate_is_now == 0)\n-              $$= new (YYTHD->mem_root) Item_func_sysdate_local($3);\n+              $$= new (thd->mem_root) Item_func_sysdate_local($3);\n             else\n-              $$= new (YYTHD->mem_root) Item_func_now_local($3);\n+              $$= new (thd->mem_root) Item_func_now_local($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->safe_to_cache_query=0;\n           }\n         | TIMESTAMP_ADD '(' interval_time_stamp ',' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_date_add_interval($7,$5,$3,0);\n+            $$= new (thd->mem_root) Item_date_add_interval($7,$5,$3,0);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TIMESTAMP_DIFF '(' interval_time_stamp ',' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_timestamp_diff($5,$7,$3);\n+            $$= new (thd->mem_root) Item_func_timestamp_diff($5,$7,$3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | UTC_DATE_SYM optional_braces\n           {\n-            $$= new (YYTHD->mem_root) Item_func_curdate_utc();\n+            $$= new (thd->mem_root) Item_func_curdate_utc();\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->safe_to_cache_query=0;\n           }\n         | UTC_TIME_SYM optional_braces\n           {\n-            $$= new (YYTHD->mem_root) Item_func_curtime_utc();\n+            $$= new (thd->mem_root) Item_func_curtime_utc();\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->safe_to_cache_query=0;\n           }\n         | UTC_TIMESTAMP_SYM optional_braces\n           {\n-            $$= new (YYTHD->mem_root) Item_func_now_utc();\n+            $$= new (thd->mem_root) Item_func_now_utc();\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->safe_to_cache_query=0;\n@@ -7835,62 +7807,61 @@\n function_call_conflict:\n           ASCII_SYM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_ascii($3);\n+            $$= new (thd->mem_root) Item_func_ascii($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | CHARSET '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_charset($3);\n+            $$= new (thd->mem_root) Item_func_charset($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | COALESCE '(' expr_list ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_coalesce(* $3);\n+            $$= new (thd->mem_root) Item_func_coalesce(* $3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | COLLATION_SYM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_collation($3);\n+            $$= new (thd->mem_root) Item_func_collation($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | DATABASE '(' ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_database();\n+            $$= new (thd->mem_root) Item_func_database();\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             Lex->safe_to_cache_query=0;\n           }\n         | IF '(' expr ',' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_if($3,$5,$7);\n+            $$= new (thd->mem_root) Item_func_if($3,$5,$7);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | MICROSECOND_SYM '(' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_microsecond($3);\n+            $$= new (thd->mem_root) Item_func_microsecond($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | MOD_SYM '(' expr ',' expr ')'\n           {\n-            $$ = new (YYTHD->mem_root) Item_func_mod($3, $5);\n+            $$ = new (thd->mem_root) Item_func_mod($3, $5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | OLD_PASSWORD '(' expr ')'\n           {\n-            $$=  new (YYTHD->mem_root) Item_func_old_password($3);\n+            $$=  new (thd->mem_root) Item_func_old_password($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | PASSWORD '(' expr ')'\n           {\n-            THD *thd= YYTHD;\n             Item* i1;\n             if (thd->variables.old_passwords)\n               i1= new (thd->mem_root) Item_func_old_password($3);\n@@ -7902,31 +7873,30 @@\n           }\n         | QUARTER_SYM '(' expr ')'\n           {\n-            $$ = new (YYTHD->mem_root) Item_func_quarter($3);\n+            $$ = new (thd->mem_root) Item_func_quarter($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | REPEAT_SYM '(' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_repeat($3,$5);\n+            $$= new (thd->mem_root) Item_func_repeat($3,$5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | REPLACE '(' expr ',' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_replace($3,$5,$7);\n+            $$= new (thd->mem_root) Item_func_replace($3,$5,$7);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TRUNCATE_SYM '(' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_round($3,$5,1);\n+            $$= new (thd->mem_root) Item_func_round($3,$5,1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | WEEK_SYM '(' expr ')'\n           {\n-            THD *thd= YYTHD;\n             Item *i1= new (thd->mem_root) Item_int((char*) \"0\",\n                                            thd->variables.default_week_format,\n                                                    1);\n@@ -7938,7 +7908,7 @@\n           }\n         | WEEK_SYM '(' expr ',' expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_func_week($3,$5);\n+            $$= new (thd->mem_root) Item_func_week($3,$5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -7960,52 +7930,52 @@\n geometry_function:\n           CONTAINS_SYM '(' expr ',' expr ')'\n           {\n-            $$= GEOM_NEW(YYTHD,\n+            $$= GEOM_NEW(thd,\n                          Item_func_spatial_rel($3, $5,\n                                                Item_func::SP_CONTAINS_FUNC));\n           }\n         | GEOMETRYCOLLECTION '(' expr_list ')'\n           {\n-            $$= GEOM_NEW(YYTHD,\n+            $$= GEOM_NEW(thd,\n                          Item_func_spatial_collection(* $3,\n                            Geometry::wkb_geometrycollection,\n                            Geometry::wkb_point));\n           }\n         | LINESTRING '(' expr_list ')'\n           {\n-            $$= GEOM_NEW(YYTHD,\n+            $$= GEOM_NEW(thd,\n                          Item_func_spatial_collection(* $3,\n                            Geometry::wkb_linestring,\n                            Geometry::wkb_point));\n           }\n         | MULTILINESTRING '(' expr_list ')'\n           {\n-            $$= GEOM_NEW(YYTHD,\n+            $$= GEOM_NEW(thd,\n                          Item_func_spatial_collection(* $3,\n                            Geometry::wkb_multilinestring,\n                            Geometry::wkb_linestring));\n           }\n         | MULTIPOINT '(' expr_list ')'\n           {\n-            $$= GEOM_NEW(YYTHD,\n+            $$= GEOM_NEW(thd,\n                          Item_func_spatial_collection(* $3,\n                            Geometry::wkb_multipoint,\n                            Geometry::wkb_point));\n           }\n         | MULTIPOLYGON '(' expr_list ')'\n           {\n-            $$= GEOM_NEW(YYTHD,\n+            $$= GEOM_NEW(thd,\n                          Item_func_spatial_collection(* $3,\n                            Geometry::wkb_multipolygon,\n                            Geometry::wkb_polygon));\n           }\n         | POINT_SYM '(' expr ',' expr ')'\n           {\n-            $$= GEOM_NEW(YYTHD, Item_func_point($3,$5));\n+            $$= GEOM_NEW(thd, Item_func_point($3,$5));\n           }\n         | POLYGON '(' expr_list ')'\n           {\n-            $$= GEOM_NEW(YYTHD,\n+            $$= GEOM_NEW(thd,\n                          Item_func_spatial_collection(* $3,\n                            Geometry::wkb_polygon,\n                            Geometry::wkb_linestring));\n@@ -8043,7 +8013,6 @@\n           }\n           opt_udf_expr_list ')'\n           {\n-            THD *thd= YYTHD;\n             Create_func *builder;\n             Item *item= NULL;\n \n@@ -8097,7 +8066,6 @@\n           }\n         | ident '.' ident '(' opt_expr_list ')'\n           {\n-            THD *thd= YYTHD;\n             Create_qfunc *builder;\n             Item *item= NULL;\n \n@@ -8161,7 +8129,7 @@\n udf_expr_list:\n           udf_expr\n           {\n-            $$= new (YYTHD->mem_root) List<Item>;\n+            $$= new (thd->mem_root) List<Item>;\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             $$->push_back($1);\n@@ -8194,7 +8162,7 @@\n                remember_name we may get quoted or escaped names.\n             */\n             else if ($2->type() != Item::FIELD_ITEM)\n-              $2->set_name($1, (uint) ($3 - $1), YYTHD->charset());\n+              $2->set_name($1, (uint) ($3 - $1), thd->charset());\n             $$= $2;\n           }\n         ;\n@@ -8202,46 +8170,46 @@\n sum_expr:\n           AVG_SYM '(' in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_avg($3);\n+            $$= new (thd->mem_root) Item_sum_avg($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | AVG_SYM '(' DISTINCT in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_avg_distinct($4);\n+            $$= new (thd->mem_root) Item_sum_avg_distinct($4);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | BIT_AND  '(' in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_and($3);\n+            $$= new (thd->mem_root) Item_sum_and($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | BIT_OR  '(' in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_or($3);\n+            $$= new (thd->mem_root) Item_sum_or($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | BIT_XOR  '(' in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_xor($3);\n+            $$= new (thd->mem_root) Item_sum_xor($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | COUNT_SYM '(' opt_all '*' ')'\n           {\n-            Item *item= new (YYTHD->mem_root) Item_int((int32) 0L,1);\n+            Item *item= new (thd->mem_root) Item_int((int32) 0L,1);\n             if (item == NULL)\n               MYSQL_YYABORT;\n-            $$= new (YYTHD->mem_root) Item_sum_count(item);\n+            $$= new (thd->mem_root) Item_sum_count(item);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | COUNT_SYM '(' in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_count($3);\n+            $$= new (thd->mem_root) Item_sum_count($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -8251,13 +8219,13 @@\n           { Select->in_sum_expr--; }\n           ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_count_distinct(* $5);\n+            $$= new (thd->mem_root) Item_sum_count_distinct(* $5);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | MIN_SYM '(' in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_min($3);\n+            $$= new (thd->mem_root) Item_sum_min($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -8268,55 +8236,55 @@\n         */\n         | MIN_SYM '(' DISTINCT in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_min($4);\n+            $$= new (thd->mem_root) Item_sum_min($4);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | MAX_SYM '(' in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_max($3);\n+            $$= new (thd->mem_root) Item_sum_max($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | MAX_SYM '(' DISTINCT in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_max($4);\n+            $$= new (thd->mem_root) Item_sum_max($4);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | STD_SYM '(' in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_std($3, 0);\n+            $$= new (thd->mem_root) Item_sum_std($3, 0);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | VARIANCE_SYM '(' in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_variance($3, 0);\n+            $$= new (thd->mem_root) Item_sum_variance($3, 0);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | STDDEV_SAMP_SYM '(' in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_std($3, 1);\n+            $$= new (thd->mem_root) Item_sum_std($3, 1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | VAR_SAMP_SYM '(' in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_variance($3, 1);\n+            $$= new (thd->mem_root) Item_sum_variance($3, 1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | SUM_SYM '(' in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_sum($3);\n+            $$= new (thd->mem_root) Item_sum_sum($3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | SUM_SYM '(' DISTINCT in_sum_expr ')'\n           {\n-            $$= new (YYTHD->mem_root) Item_sum_sum_distinct($4);\n+            $$= new (thd->mem_root) Item_sum_sum_distinct($4);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -8328,7 +8296,7 @@\n           {\n             SELECT_LEX *sel= Select;\n             sel->in_sum_expr--;\n-            $$= new (YYTHD->mem_root)\n+            $$= new (thd->mem_root)\n                   Item_func_group_concat(Lex->current_context(), $3, $5,\n                                          sel->gorder_list, $7);\n             if ($$ == NULL)\n@@ -8357,7 +8325,7 @@\n           ident_or_text SET_VAR expr\n           {\n             Item_func_set_user_var *item;\n-            $$= item= new (YYTHD->mem_root) Item_func_set_user_var($1, $3);\n+            $$= item= new (thd->mem_root) Item_func_set_user_var($1, $3);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             LEX *lex= Lex;\n@@ -8366,7 +8334,7 @@\n           }\n         | ident_or_text\n           {\n-            $$= new (YYTHD->mem_root) Item_func_get_user_var($1);\n+            $$= new (thd->mem_root) Item_func_get_user_var($1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             LEX *lex= Lex;\n@@ -8380,7 +8348,7 @@\n               my_parse_error(ER(ER_SYNTAX_ERROR));\n               MYSQL_YYABORT;\n             }\n-            if (!($$= get_system_var(YYTHD, $2, $3, $4)))\n+            if (!($$= get_system_var(thd, $2, $3, $4)))\n               MYSQL_YYABORT;\n             if (!((Item_func_get_system_var*) $$)->is_written_to_binlog())\n               Lex->set_stmt_unsafe();\n@@ -8395,7 +8363,7 @@\n opt_gconcat_separator:\n           /* empty */\n           {\n-            $$= new (YYTHD->mem_root) String(\",\", 1, &my_charset_latin1);\n+            $$= new (thd->mem_root) String(\",\", 1, &my_charset_latin1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -8422,9 +8390,9 @@\n \n gorder_list:\n           gorder_list ',' order_ident order_dir\n-          { if (add_gorder_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; }\n+          { if (add_gorder_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; }\n         | order_ident order_dir\n-          { if (add_gorder_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; }\n+          { if (add_gorder_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; }\n         ;\n \n in_sum_expr:\n@@ -8477,7 +8445,7 @@\n expr_list:\n           expr\n           {\n-            $$= new (YYTHD->mem_root) List<Item>;\n+            $$= new (thd->mem_root) List<Item>;\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             $$->push_back($1);\n@@ -8497,7 +8465,7 @@\n ident_list:\n           simple_ident\n           {\n-            $$= new (YYTHD->mem_root) List<Item>;\n+            $$= new (thd->mem_root) List<Item>;\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             $$->push_back($1);\n@@ -8595,7 +8563,7 @@\n           {\n             MYSQL_YYABORT_UNLESS($1 && $3);\n             /* Change the current name resolution context to a local context. */\n-            if (push_new_name_resolution_context(YYTHD, $1, $3))\n+            if (push_new_name_resolution_context(thd, $1, $3))\n               MYSQL_YYABORT;\n             Select->parsing_place= IN_ON;\n           }\n@@ -8610,7 +8578,7 @@\n           {\n             MYSQL_YYABORT_UNLESS($1 && $3);\n             /* Change the current name resolution context to a local context. */\n-            if (push_new_name_resolution_context(YYTHD, $1, $3))\n+            if (push_new_name_resolution_context(thd, $1, $3))\n               MYSQL_YYABORT;\n             Select->parsing_place= IN_ON;\n           }\n@@ -8640,7 +8608,7 @@\n           {\n             MYSQL_YYABORT_UNLESS($1 && $5);\n             /* Change the current name resolution context to a local context. */\n-            if (push_new_name_resolution_context(YYTHD, $1, $5))\n+            if (push_new_name_resolution_context(thd, $1, $5))\n               MYSQL_YYABORT;\n             Select->parsing_place= IN_ON;\n           }\n@@ -8676,7 +8644,7 @@\n           {\n             MYSQL_YYABORT_UNLESS($1 && $5);\n             /* Change the current name resolution context to a local context. */\n-            if (push_new_name_resolution_context(YYTHD, $1, $5))\n+            if (push_new_name_resolution_context(thd, $1, $5))\n               MYSQL_YYABORT;\n             Select->parsing_place= IN_ON;\n           }\n@@ -8724,7 +8692,7 @@\n           }\n           table_ident opt_table_alias opt_key_definition\n           {\n-            if (!($$= Select->add_table_to_list(YYTHD, $2, $3,\n+            if (!($$= Select->add_table_to_list(thd, $2, $3,\n                                                 Select->get_table_join_options(),\n                                                 Lex->lock_option,\n                                                 Select->pop_index_hints())))\n@@ -8922,7 +8890,7 @@\n \n opt_index_hints_list:\n           /* empty */\n-        | { Select->alloc_index_hints(YYTHD); } index_hints_list\n+        | { Select->alloc_index_hints(thd); } index_hints_list\n         ;\n \n opt_key_definition:\n@@ -8931,15 +8899,15 @@\n         ;\n \n opt_key_usage_list:\n-          /* empty */ { Select->add_index_hint(YYTHD, NULL, 0); }\n+          /* empty */ { Select->add_index_hint(thd, NULL, 0); }\n         | key_usage_list {}\n         ;\n \n key_usage_element:\n           ident\n-          { Select->add_index_hint(YYTHD, $1.str, $1.length); }\n+          { Select->add_index_hint(thd, $1.str, $1.length); }\n         | PRIMARY_SYM\n-          { Select->add_index_hint(YYTHD, (char *)\"PRIMARY\", 7); }\n+          { Select->add_index_hint(thd, (char *)\"PRIMARY\", 7); }\n         ;\n \n key_usage_list:\n@@ -8952,7 +8920,7 @@\n           {\n             if (!($$= new List<String>))\n               MYSQL_YYABORT;\n-            String *s= new (YYTHD->mem_root) String((const char *) $1.str,\n+            String *s= new (thd->mem_root) String((const char *) $1.str,\n                                                     $1.length,\n                                                     system_charset_info);\n             if (s == NULL)\n@@ -8961,7 +8929,7 @@\n           }\n         | using_list ',' ident\n           {\n-            String *s= new (YYTHD->mem_root) String((const char *) $3.str,\n+            String *s= new (thd->mem_root) String((const char *) $3.str,\n                                                     $3.length,\n                                                     system_charset_info);\n             if (s == NULL)\n@@ -9002,7 +8970,7 @@\n                                     implementation without changing its\n                                     resolution.\n                                   */\n-                                  WARN_DEPRECATED(yythd, VER_CELOSIA, \"FRAC_SECOND\", \"MICROSECOND\");\n+                                  WARN_DEPRECATED(thd, VER_CELOSIA, \"FRAC_SECOND\", \"MICROSECOND\");\n                                 }\n \t;\n \n@@ -9086,7 +9054,6 @@\n           }\n         | /* empty */\n           {\n-            THD *thd= YYTHD;\n             Lex->escape_used= FALSE;\n             $$= ((thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ?\n                  new (thd->mem_root) Item_string(\"\", 0, &my_charset_latin1) :\n@@ -9107,9 +9074,9 @@\n \n group_list:\n           group_list ',' order_ident order_dir\n-          { if (add_group_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; }\n+          { if (add_group_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; }\n         | order_ident order_dir\n-          { if (add_group_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; }\n+          { if (add_group_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; }\n         ;\n \n olap_opt:\n@@ -9156,7 +9123,6 @@\n alter_order_item:\n           simple_ident_nospvar order_dir\n           {\n-            THD *thd= YYTHD;\n             bool ascending= ($2 == 1) ? true : false;\n             if (add_order_to_list(thd, $1, ascending))\n               MYSQL_YYABORT;\n@@ -9209,9 +9175,9 @@\n \n order_list:\n           order_list ',' order_ident order_dir\n-          { if (add_order_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; }\n+          { if (add_order_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; }\n         | order_ident order_dir\n-          { if (add_order_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; }\n+          { if (add_order_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; }\n         ;\n \n order_dir:\n@@ -9271,19 +9237,19 @@\n         }\n         | ULONGLONG_NUM\n           {\n-            $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);\n+            $$= new (thd->mem_root) Item_uint($1.str, $1.length);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | LONG_NUM\n           {\n-            $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);\n+            $$= new (thd->mem_root) Item_uint($1.str, $1.length);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | NUM\n           {\n-            $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);\n+            $$= new (thd->mem_root) Item_uint($1.str, $1.length);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -9365,7 +9331,7 @@\n             lex->proc_list.elements=0;\n             lex->proc_list.first=0;\n             lex->proc_list.next= &lex->proc_list.first;\n-            Item_field *item= new (YYTHD->mem_root)\n+            Item_field *item= new (thd->mem_root)\n                                 Item_field(&lex->current_select->context,\n                                            NULL, NULL, $2.str);\n             if (item == NULL)\n@@ -9390,8 +9356,7 @@\n procedure_item:\n           remember_name expr remember_end\n           {\n-            THD *thd= YYTHD;\n-\n+            \n             if (add_proc_to_list(thd, $2))\n               MYSQL_YYABORT;\n             if (!$2->name)\n@@ -9560,7 +9525,6 @@\n           }\n         | DROP FUNCTION_SYM if_exists ident '.' ident\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             sp_name *spname;\n             if ($4.str && check_db_name(&$4))\n@@ -9583,7 +9547,6 @@\n           }\n         | DROP FUNCTION_SYM if_exists ident\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             LEX_STRING db= {0, 0};\n             sp_name *spname;\n@@ -9664,7 +9627,7 @@\n table_name:\n           table_ident\n           {\n-            if (!Select->add_table_to_list(YYTHD, $1, NULL, TL_OPTION_UPDATING))\n+            if (!Select->add_table_to_list(thd, $1, NULL, TL_OPTION_UPDATING))\n               MYSQL_YYABORT;\n           }\n         ;\n@@ -9677,7 +9640,7 @@\n table_alias_ref:\n           table_ident_opt_wild\n           {\n-            if (!Select->add_table_to_list(YYTHD, $1, NULL,\n+            if (!Select->add_table_to_list(thd, $1, NULL,\n                                            TL_OPTION_UPDATING | TL_OPTION_ALIAS,\n                                            Lex->lock_option ))\n               MYSQL_YYABORT;\n@@ -9868,7 +9831,7 @@\n           expr { $$= $1;}\n         | DEFAULT\n           {\n-            $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context());\n+            $$= new (thd->mem_root) Item_default_value(Lex->current_context());\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -9922,7 +9885,7 @@\n update_elem:\n           simple_ident_nospvar equal expr_or_default\n           {\n-            if (add_item_to_list(YYTHD, $1) || add_value_to_list(YYTHD, $3))\n+            if (add_item_to_list(thd, $1) || add_value_to_list(thd, $3))\n               MYSQL_YYABORT;\n           }\n         ;\n@@ -9965,7 +9928,7 @@\n single_multi:\n           FROM table_ident\n           {\n-            if (!Select->add_table_to_list(YYTHD, $2, NULL, TL_OPTION_UPDATING,\n+            if (!Select->add_table_to_list(thd, $2, NULL, TL_OPTION_UPDATING,\n                                            Lex->lock_option))\n               MYSQL_YYABORT;\n           }\n@@ -9998,7 +9961,7 @@\n             Table_ident *ti= new Table_ident($1);\n             if (ti == NULL)\n               MYSQL_YYABORT;\n-            if (!Select->add_table_to_list(YYTHD,\n+            if (!Select->add_table_to_list(thd,\n                                            ti,\n                                            $3,\n                                            TL_OPTION_UPDATING | TL_OPTION_ALIAS,\n@@ -10007,10 +9970,10 @@\n           }\n         | ident '.' ident opt_wild opt_table_alias\n           {\n-            Table_ident *ti= new Table_ident(YYTHD, $1, $3, 0);\n+            Table_ident *ti= new Table_ident(thd, $1, $3, 0);\n             if (ti == NULL)\n               MYSQL_YYABORT;\n-            if (!Select->add_table_to_list(YYTHD,\n+            if (!Select->add_table_to_list(thd,\n                                            ti,\n                                            $5, \n                                            TL_OPTION_UPDATING | TL_OPTION_ALIAS,\n@@ -10130,7 +10093,7 @@\n            {\n              LEX *lex= Lex;\n              lex->sql_command= SQLCOM_SHOW_DATABASES;\n-             if (prepare_schema_table(YYTHD, lex, 0, SCH_SCHEMATA))\n+             if (prepare_schema_table(thd, lex, 0, SCH_SCHEMATA))\n                MYSQL_YYABORT;\n            }\n          | opt_full TABLES opt_db wild_and_where\n@@ -10138,7 +10101,7 @@\n              LEX *lex= Lex;\n              lex->sql_command= SQLCOM_SHOW_TABLES;\n              lex->select_lex.db= $3;\n-             if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLE_NAMES))\n+             if (prepare_schema_table(thd, lex, 0, SCH_TABLE_NAMES))\n                MYSQL_YYABORT;\n            }\n          | opt_full TRIGGERS_SYM opt_db wild_and_where\n@@ -10146,7 +10109,7 @@\n              LEX *lex= Lex;\n              lex->sql_command= SQLCOM_SHOW_TRIGGERS;\n              lex->select_lex.db= $3;\n-             if (prepare_schema_table(YYTHD, lex, 0, SCH_TRIGGERS))\n+             if (prepare_schema_table(thd, lex, 0, SCH_TRIGGERS))\n                MYSQL_YYABORT;\n            }\n          | EVENTS_SYM opt_db wild_and_where\n@@ -10154,7 +10117,7 @@\n              LEX *lex= Lex;\n              lex->sql_command= SQLCOM_SHOW_EVENTS;\n              lex->select_lex.db= $2;\n-             if (prepare_schema_table(YYTHD, lex, 0, SCH_EVENTS))\n+             if (prepare_schema_table(thd, lex, 0, SCH_EVENTS))\n                MYSQL_YYABORT;\n            }\n          | TABLE_SYM STATUS_SYM opt_db wild_and_where\n@@ -10162,7 +10125,7 @@\n              LEX *lex= Lex;\n              lex->sql_command= SQLCOM_SHOW_TABLE_STATUS;\n              lex->select_lex.db= $3;\n-             if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLES))\n+             if (prepare_schema_table(thd, lex, 0, SCH_TABLES))\n                MYSQL_YYABORT;\n            }\n         | OPEN_SYM TABLES opt_db wild_and_where\n@@ -10170,22 +10133,22 @@\n             LEX *lex= Lex;\n             lex->sql_command= SQLCOM_SHOW_OPEN_TABLES;\n             lex->select_lex.db= $3;\n-            if (prepare_schema_table(YYTHD, lex, 0, SCH_OPEN_TABLES))\n+            if (prepare_schema_table(thd, lex, 0, SCH_OPEN_TABLES))\n               MYSQL_YYABORT;\n           }\n         | opt_full PLUGIN_SYM\n           {\n             LEX *lex= Lex;\n-            WARN_DEPRECATED(yythd, \"6.0\", \"SHOW PLUGIN\", \"'SHOW PLUGINS'\");\n+            WARN_DEPRECATED(thd, \"6.0\", \"SHOW PLUGIN\", \"'SHOW PLUGINS'\");\n             lex->sql_command= SQLCOM_SHOW_PLUGINS;\n-            if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS))\n+            if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS))\n               MYSQL_YYABORT;\n           }\n         | PLUGINS_SYM\n           {\n             LEX *lex= Lex;\n             lex->sql_command= SQLCOM_SHOW_PLUGINS;\n-            if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS))\n+            if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS))\n               MYSQL_YYABORT;\n           }\n         | ENGINE_SYM known_storage_engines show_engine_param\n@@ -10198,7 +10161,7 @@\n             lex->sql_command= SQLCOM_SHOW_FIELDS;\n             if ($5)\n               $4->change_db($5);\n-            if (prepare_schema_table(YYTHD, lex, $4, SCH_COLUMNS))\n+            if (prepare_schema_table(thd, lex, $4, SCH_COLUMNS))\n               MYSQL_YYABORT;\n           }\n         | NEW_SYM MASTER_SYM FOR_SYM SLAVE\n@@ -10233,7 +10196,7 @@\n             lex->sql_command= SQLCOM_SHOW_KEYS;\n             if ($4)\n               $3->change_db($4);\n-            if (prepare_schema_table(YYTHD, lex, $3, SCH_STATISTICS))\n+            if (prepare_schema_table(thd, lex, $3, SCH_STATISTICS))\n               MYSQL_YYABORT;\n           }\n         | COLUMN_SYM TYPES_SYM\n@@ -10245,15 +10208,15 @@\n           {\n             LEX *lex=Lex;\n             lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES;\n-            WARN_DEPRECATED(yythd, \"6.0\", \"SHOW TABLE TYPES\", \"'SHOW [STORAGE] ENGINES'\");\n-            if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES))\n+            WARN_DEPRECATED(thd, \"6.0\", \"SHOW TABLE TYPES\", \"'SHOW [STORAGE] ENGINES'\");\n+            if (prepare_schema_table(thd, lex, 0, SCH_ENGINES))\n               MYSQL_YYABORT;\n           }\n         | opt_storage ENGINES_SYM\n           {\n             LEX *lex=Lex;\n             lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES;\n-            if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES))\n+            if (prepare_schema_table(thd, lex, 0, SCH_ENGINES))\n               MYSQL_YYABORT;\n           }\n         | AUTHORS_SYM\n@@ -10285,7 +10248,7 @@\n           { \n             LEX *lex= Lex;\n             lex->sql_command= SQLCOM_SHOW_PROFILE;\n-            if (prepare_schema_table(YYTHD, lex, NULL, SCH_PROFILES) != 0)\n+            if (prepare_schema_table(thd, lex, NULL, SCH_PROFILES) != 0)\n               YYABORT;\n           }\n         | opt_var_type STATUS_SYM wild_and_where\n@@ -10293,7 +10256,7 @@\n             LEX *lex= Lex;\n             lex->sql_command= SQLCOM_SHOW_STATUS;\n             lex->option_type= $1;\n-            if (prepare_schema_table(YYTHD, lex, 0, SCH_STATUS))\n+            if (prepare_schema_table(thd, lex, 0, SCH_STATUS))\n               MYSQL_YYABORT;\n           }\n         | INNOBASE_SYM STATUS_SYM\n@@ -10301,24 +10264,24 @@\n             LEX *lex= Lex;\n             lex->sql_command = SQLCOM_SHOW_ENGINE_STATUS;\n             if (!(lex->create_info.db_type=\n-                  ha_resolve_by_legacy_type(YYTHD, DB_TYPE_INNODB)))\n+                  ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB)))\n             {\n               my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), \"InnoDB\");\n               MYSQL_YYABORT;\n             }\n-            WARN_DEPRECATED(yythd, \"6.0\", \"SHOW INNODB STATUS\", \"'SHOW ENGINE INNODB STATUS'\");\n+            WARN_DEPRECATED(thd, \"6.0\", \"SHOW INNODB STATUS\", \"'SHOW ENGINE INNODB STATUS'\");\n           }\n         | MUTEX_SYM STATUS_SYM\n           {\n             LEX *lex= Lex;\n             lex->sql_command = SQLCOM_SHOW_ENGINE_MUTEX;\n             if (!(lex->create_info.db_type=\n-                  ha_resolve_by_legacy_type(YYTHD, DB_TYPE_INNODB)))\n+                  ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB)))\n             {\n               my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), \"InnoDB\");\n               MYSQL_YYABORT;\n             }\n-            WARN_DEPRECATED(yythd, \"6.0\", \"SHOW MUTEX STATUS\", \"'SHOW ENGINE INNODB MUTEX'\");\n+            WARN_DEPRECATED(thd, \"6.0\", \"SHOW MUTEX STATUS\", \"'SHOW ENGINE INNODB MUTEX'\");\n           }\n         | opt_full PROCESSLIST_SYM\n           { Lex->sql_command= SQLCOM_SHOW_PROCESSLIST;}\n@@ -10327,21 +10290,21 @@\n             LEX *lex= Lex;\n             lex->sql_command= SQLCOM_SHOW_VARIABLES;\n             lex->option_type= $1;\n-            if (prepare_schema_table(YYTHD, lex, 0, SCH_VARIABLES))\n+            if (prepare_schema_table(thd, lex, 0, SCH_VARIABLES))\n               MYSQL_YYABORT;\n           }\n         | charset wild_and_where\n           {\n             LEX *lex= Lex;\n             lex->sql_command= SQLCOM_SHOW_CHARSETS;\n-            if (prepare_schema_table(YYTHD, lex, 0, SCH_CHARSETS))\n+            if (prepare_schema_table(thd, lex, 0, SCH_CHARSETS))\n               MYSQL_YYABORT;\n           }\n         | COLLATION_SYM wild_and_where\n           {\n             LEX *lex= Lex;\n             lex->sql_command= SQLCOM_SHOW_COLLATIONS;\n-            if (prepare_schema_table(YYTHD, lex, 0, SCH_COLLATIONS))\n+            if (prepare_schema_table(thd, lex, 0, SCH_COLLATIONS))\n               MYSQL_YYABORT;\n           }\n         | GRANTS\n@@ -10371,7 +10334,7 @@\n           {\n             LEX *lex= Lex;\n             lex->sql_command = SQLCOM_SHOW_CREATE;\n-            if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL,0))\n+            if (!lex->select_lex.add_table_to_list(thd, $3, NULL,0))\n               MYSQL_YYABORT;\n             lex->only_view= 0;\n             lex->create_info.storage_media= HA_SM_DEFAULT;\n@@ -10380,7 +10343,7 @@\n           {\n             LEX *lex= Lex;\n             lex->sql_command = SQLCOM_SHOW_CREATE;\n-            if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL, 0))\n+            if (!lex->select_lex.add_table_to_list(thd, $3, NULL, 0))\n               MYSQL_YYABORT;\n             lex->only_view= 1;\n           }\n@@ -10416,14 +10379,14 @@\n           {\n             LEX *lex= Lex;\n             lex->sql_command= SQLCOM_SHOW_STATUS_PROC;\n-            if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES))\n+            if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES))\n               MYSQL_YYABORT;\n           }\n         | FUNCTION_SYM STATUS_SYM wild_and_where\n           {\n             LEX *lex= Lex;\n             lex->sql_command= SQLCOM_SHOW_STATUS_FUNC;\n-            if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES))\n+            if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES))\n               MYSQL_YYABORT;\n           }\n         | PROCEDURE CODE_SYM sp_name\n@@ -10501,7 +10464,7 @@\n           /* empty */\n         | LIKE TEXT_STRING_sys\n           {\n-            Lex->wild= new (YYTHD->mem_root) String($2.str, $2.length,\n+            Lex->wild= new (thd->mem_root) String($2.str, $2.length,\n                                                     system_charset_info);\n             if (Lex->wild == NULL)\n               MYSQL_YYABORT;\n@@ -10525,7 +10488,7 @@\n             lex->sql_command= SQLCOM_SHOW_FIELDS;\n             lex->select_lex.db= 0;\n             lex->verbose= 0;\n-            if (prepare_schema_table(YYTHD, lex, $2, SCH_COLUMNS))\n+            if (prepare_schema_table(thd, lex, $2, SCH_COLUMNS))\n               MYSQL_YYABORT;\n           }\n           opt_describe_column {}\n@@ -10554,7 +10517,7 @@\n         | text_string { Lex->wild= $1; }\n         | ident\n           {\n-            Lex->wild= new (YYTHD->mem_root) String((const char*) $1.str,\n+            Lex->wild= new (thd->mem_root) String((const char*) $1.str,\n                                                     $1.length,\n                                                     system_charset_info);\n             if (Lex->wild == NULL)\n@@ -10697,7 +10660,6 @@\n load:\n           LOAD DATA_SYM\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n \n             if (lex->sphead)\n@@ -10711,7 +10673,7 @@\n         | LOAD TABLE_SYM table_ident FROM MASTER_SYM\n           {\n             LEX *lex=Lex;\n-            WARN_DEPRECATED(yythd, \"6.0\", \"LOAD TABLE FROM MASTER\",\n+            WARN_DEPRECATED(thd, \"6.0\", \"LOAD TABLE FROM MASTER\",\n                             \"MySQL Administrator (mysqldump, mysql)\");\n             if (lex->sphead)\n             {\n@@ -10719,7 +10681,7 @@\n               MYSQL_YYABORT;\n             }\n             lex->sql_command = SQLCOM_LOAD_MASTER_TABLE;\n-            if (!Select->add_table_to_list(YYTHD, $3, NULL, TL_OPTION_UPDATING))\n+            if (!Select->add_table_to_list(thd, $3, NULL, TL_OPTION_UPDATING))\n               MYSQL_YYABORT;\n           }\n         ;\n@@ -10739,7 +10701,7 @@\n           opt_duplicate INTO TABLE_SYM table_ident\n           {\n             LEX *lex=Lex;\n-            if (!Select->add_table_to_list(YYTHD, $9, NULL, TL_OPTION_UPDATING,\n+            if (!Select->add_table_to_list(thd, $9, NULL, TL_OPTION_UPDATING,\n                                            lex->lock_option))\n               MYSQL_YYABORT;\n             lex->field_list.empty();\n@@ -10754,7 +10716,7 @@\n         | FROM MASTER_SYM\n           {\n             Lex->sql_command = SQLCOM_LOAD_MASTER_DATA;\n-            WARN_DEPRECATED(yythd, \"6.0\", \"LOAD DATA FROM MASTER\",\n+            WARN_DEPRECATED(thd, \"6.0\", \"LOAD DATA FROM MASTER\",\n                             \"mysqldump or future \"\n                             \"BACKUP/RESTORE DATABASE facility\");\n           }\n@@ -10872,7 +10834,7 @@\n           simple_ident_nospvar {$$= $1;}\n         | '@' ident_or_text\n           {\n-            $$= new (YYTHD->mem_root) Item_user_var_as_out_param($2);\n+            $$= new (thd->mem_root) Item_user_var_as_out_param($2);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -10889,7 +10851,6 @@\n           TEXT_STRING\n           {\n             LEX_STRING tmp;\n-            THD *thd= YYTHD;\n             CHARSET_INFO *cs_con= thd->variables.collation_connection;\n             CHARSET_INFO *cs_cli= thd->variables.character_set_client;\n             uint repertoire= thd->lex->text_string_is_7bit &&\n@@ -10915,7 +10876,7 @@\n             uint repertoire= Lex->text_string_is_7bit ?\n                              MY_REPERTOIRE_ASCII : MY_REPERTOIRE_UNICODE30;\n             DBUG_ASSERT(my_charset_is_ascii_based(national_charset_info));\n-            $$= new (YYTHD->mem_root) Item_string($1.str, $1.length,\n+            $$= new (thd->mem_root) Item_string($1.str, $1.length,\n                                                   national_charset_info,\n                                                   DERIVATION_COERCIBLE,\n                                                   repertoire);\n@@ -10924,7 +10885,7 @@\n           }\n         | UNDERSCORE_CHARSET TEXT_STRING\n           {\n-            Item_string *str= new (YYTHD->mem_root) Item_string($2.str,\n+            Item_string *str= new (thd->mem_root) Item_string($2.str,\n                                                                 $2.length, $1);\n             if (str == NULL)\n               MYSQL_YYABORT;\n@@ -10943,7 +10904,7 @@\n                  If the string has been pure ASCII so far,\n                  check the new part.\n               */\n-              CHARSET_INFO *cs= YYTHD->variables.collation_connection;\n+              CHARSET_INFO *cs= thd->variables.collation_connection;\n               item->collation.repertoire|= my_string_repertoire(cs,\n                                                                 $2.str,\n                                                                 $2.length);\n@@ -10954,15 +10915,15 @@\n text_string:\n           TEXT_STRING_literal\n           {\n-            $$= new (YYTHD->mem_root) String($1.str,\n+            $$= new (thd->mem_root) String($1.str,\n                                              $1.length,\n-                                             YYTHD->variables.collation_connection);\n+                                             thd->variables.collation_connection);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | HEX_NUM\n           {\n-            Item *tmp= new (YYTHD->mem_root) Item_hex_string($1.str, $1.length);\n+            Item *tmp= new (thd->mem_root) Item_hex_string($1.str, $1.length);\n             if (tmp == NULL)\n               MYSQL_YYABORT;\n             /*\n@@ -10974,7 +10935,7 @@\n           }\n         | BIN_NUM\n           {\n-            Item *tmp= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length);\n+            Item *tmp= new (thd->mem_root) Item_bin_string($1.str, $1.length);\n             if (tmp == NULL)\n               MYSQL_YYABORT;\n             /*\n@@ -10989,7 +10950,6 @@\n param_marker:\n           PARAM_MARKER\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             Lex_input_stream *lip= YYLIP;\n             Item_param *item;\n@@ -11022,38 +10982,38 @@\n         | NUM_literal { $$ = $1; }\n         | NULL_SYM\n           {\n-            $$ = new (YYTHD->mem_root) Item_null();\n+            $$ = new (thd->mem_root) Item_null();\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n             YYLIP->next_state= MY_LEX_OPERATOR_OR_IDENT;\n           }\n         | FALSE_SYM\n           {\n-            $$= new (YYTHD->mem_root) Item_int((char*) \"FALSE\",0,1);\n+            $$= new (thd->mem_root) Item_int((char*) \"FALSE\",0,1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | TRUE_SYM\n           {\n-            $$= new (YYTHD->mem_root) Item_int((char*) \"TRUE\",1,1);\n+            $$= new (thd->mem_root) Item_int((char*) \"TRUE\",1,1);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | HEX_NUM\n           {\n-            $$ = new (YYTHD->mem_root) Item_hex_string($1.str, $1.length);\n+            $$ = new (thd->mem_root) Item_hex_string($1.str, $1.length);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | BIN_NUM\n           {\n-            $$= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length);\n+            $$= new (thd->mem_root) Item_bin_string($1.str, $1.length);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | UNDERSCORE_CHARSET HEX_NUM\n           {\n-            Item *tmp= new (YYTHD->mem_root) Item_hex_string($2.str, $2.length);\n+            Item *tmp= new (thd->mem_root) Item_hex_string($2.str, $2.length);\n             if (tmp == NULL)\n               MYSQL_YYABORT;\n             /*\n@@ -11064,7 +11024,7 @@\n             String *str= tmp->val_str((String*) 0);\n \n             Item_string *item_str;\n-            item_str= new (YYTHD->mem_root)\n+            item_str= new (thd->mem_root)\n                         Item_string(NULL, /* name will be set in select_item */\n                                     str ? str->ptr() : \"\",\n                                     str ? str->length() : 0,\n@@ -11082,7 +11042,7 @@\n           }\n         | UNDERSCORE_CHARSET BIN_NUM\n           {\n-            Item *tmp= new (YYTHD->mem_root) Item_bin_string($2.str, $2.length);\n+            Item *tmp= new (thd->mem_root) Item_bin_string($2.str, $2.length);\n             if (tmp == NULL)\n               MYSQL_YYABORT;\n             /*\n@@ -11093,7 +11053,7 @@\n             String *str= tmp->val_str((String*) 0);\n \n             Item_string *item_str;\n-            item_str= new (YYTHD->mem_root)\n+            item_str= new (thd->mem_root)\n                         Item_string(NULL, /* name will be set in select_item */\n                                     str ? str->ptr() : \"\",\n                                     str ? str->length() : 0,\n@@ -11117,7 +11077,7 @@\n           NUM\n           {\n             int error;\n-            $$= new (YYTHD->mem_root)\n+            $$= new (thd->mem_root)\n                   Item_int($1.str,\n                            (longlong) my_strtoll10($1.str, NULL, &error),\n                            $1.length);\n@@ -11127,7 +11087,7 @@\n         | LONG_NUM\n           {\n             int error;\n-            $$= new (YYTHD->mem_root)\n+            $$= new (thd->mem_root)\n                   Item_int($1.str,\n                            (longlong) my_strtoll10($1.str, NULL, &error),\n                            $1.length);\n@@ -11136,23 +11096,23 @@\n           }\n         | ULONGLONG_NUM\n           {\n-            $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length);\n+            $$= new (thd->mem_root) Item_uint($1.str, $1.length);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | DECIMAL_NUM\n           {\n-            $$= new (YYTHD->mem_root) Item_decimal($1.str, $1.length,\n-                                                   YYTHD->charset());\n-            if (($$ == NULL) || (YYTHD->is_error()))\n+            $$= new (thd->mem_root) Item_decimal($1.str, $1.length,\n+                                                   thd->charset());\n+            if (($$ == NULL) || (thd->is_error()))\n             {\n               MYSQL_YYABORT;\n             }\n           }\n         | FLOAT_NUM\n           {\n-            $$= new (YYTHD->mem_root) Item_float($1.str, $1.length);\n-            if (($$ == NULL) || (YYTHD->is_error()))\n+            $$= new (thd->mem_root) Item_float($1.str, $1.length);\n+            if (($$ == NULL) || (thd->is_error()))\n             {\n               MYSQL_YYABORT;\n             }\n@@ -11172,7 +11132,7 @@\n           ident '.' '*'\n           {\n             SELECT_LEX *sel= Select;\n-            $$= new (YYTHD->mem_root) Item_field(Lex->current_context(),\n+            $$= new (thd->mem_root) Item_field(Lex->current_context(),\n                                                  NullS, $1.str, \"*\");\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n@@ -11180,7 +11140,6 @@\n           }\n         | ident '.' ident '.' '*'\n           {\n-            THD *thd= YYTHD;\n             SELECT_LEX *sel= Select;\n             const char* schema= thd->client_capabilities & CLIENT_NO_SCHEMA ?\n                                   NullS : $1.str;\n@@ -11200,7 +11159,6 @@\n simple_ident:\n           ident\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             Lex_input_stream *lip= YYLIP;\n             sp_variable_t *spv;\n@@ -11251,7 +11209,6 @@\n simple_ident_nospvar:\n           ident\n           {\n-            THD *thd= YYTHD;\n             SELECT_LEX *sel=Select;\n             if ((sel->parsing_place != IN_HAVING) ||\n                 (sel->get_in_sum_expr() > 0))\n@@ -11273,7 +11230,6 @@\n simple_ident_q:\n           ident '.' ident\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n \n             /*\n@@ -11352,7 +11308,6 @@\n           }\n         | '.' ident '.' ident\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             SELECT_LEX *sel= lex->current_select;\n             if (sel->no_table_names_allowed)\n@@ -11377,7 +11332,6 @@\n           }\n         | ident '.' ident '.' ident\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             SELECT_LEX *sel= lex->current_select;\n             const char* schema= (thd->client_capabilities & CLIENT_NO_SCHEMA ?\n@@ -11445,7 +11399,7 @@\n           }\n         | ident '.' ident\n           {\n-            $$= new Table_ident(YYTHD, $1,$3,0);\n+            $$= new Table_ident(thd, $1,$3,0);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -11467,7 +11421,7 @@\n           }\n         | ident '.' ident opt_wild\n           {\n-            $$= new Table_ident(YYTHD, $1,$3,0);\n+            $$= new Table_ident(thd, $1,$3,0);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -11477,7 +11431,7 @@\n           ident\n           {\n             LEX_STRING db={(char*) any_db,3};\n-            $$= new Table_ident(YYTHD, db,$1,0);\n+            $$= new Table_ident(thd, db,$1,0);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -11487,8 +11441,7 @@\n           IDENT { $$= $1; }\n         | IDENT_QUOTED\n           {\n-            THD *thd= YYTHD;\n-\n+            \n             if (thd->charset_is_system_charset)\n             {\n               CHARSET_INFO *cs= system_charset_info;\n@@ -11516,8 +11469,6 @@\n TEXT_STRING_sys:\n           TEXT_STRING\n           {\n-            THD *thd= YYTHD;\n-\n             if (thd->charset_is_system_charset)\n               $$= $1;\n             else\n@@ -11532,8 +11483,6 @@\n TEXT_STRING_literal:\n           TEXT_STRING\n           {\n-            THD *thd= YYTHD;\n-\n             if (thd->charset_is_collation_connection)\n               $$= $1;\n             else\n@@ -11548,8 +11497,6 @@\n TEXT_STRING_filesystem:\n           TEXT_STRING\n           {\n-            THD *thd= YYTHD;\n-\n             if (thd->charset_is_character_set_filesystem)\n               $$= $1;\n             else\n@@ -11566,7 +11513,6 @@\n           IDENT_sys    { $$=$1; }\n         | keyword\n           {\n-            THD *thd= YYTHD;\n             $$.str= thd->strmake($1.str, $1.length);\n             if ($$.str == NULL)\n               MYSQL_YYABORT;\n@@ -11578,7 +11524,6 @@\n           IDENT_sys    { $$=$1; }\n         | keyword_sp\n           {\n-            THD *thd= YYTHD;\n             $$.str= thd->strmake($1.str, $1.length);\n             if ($$.str == NULL)\n               MYSQL_YYABORT;\n@@ -11595,7 +11540,6 @@\n user:\n           ident_or_text\n           {\n-            THD *thd= YYTHD;\n             if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))\n               MYSQL_YYABORT;\n             $$->user = $1;\n@@ -11609,7 +11553,6 @@\n           }\n         | ident_or_text '@' ident_or_text\n           {\n-            THD *thd= YYTHD;\n             if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))\n               MYSQL_YYABORT;\n             $$->user = $1; $$->host=$3;\n@@ -11628,7 +11571,7 @@\n           }\n         | CURRENT_USER optional_braces\n           {\n-            if (!($$=(LEX_USER*) YYTHD->alloc(sizeof(st_lex_user))))\n+            if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))\n               MYSQL_YYABORT;\n             /* \n               empty LEX_USER means current_user and \n@@ -11991,7 +11934,6 @@\n \n option_type_value:\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             Lex_input_stream *lip= YYLIP;\n \n@@ -12022,7 +11964,6 @@\n           }\n           ext_option_value\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             Lex_input_stream *lip= YYLIP;\n \n@@ -12105,7 +12046,6 @@\n sys_option_value:\n           option_type internal_variable_name equal set_expr_or_default\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= Lex;\n             LEX_STRING *name= &$2.base_name;\n \n@@ -12117,7 +12057,7 @@\n                 my_parse_error(ER(ER_SYNTAX_ERROR));\n                 MYSQL_YYABORT;\n               }\n-              if (set_trigger_new_row(YYTHD, name, $4))\n+              if (set_trigger_new_row(thd, name, $4))\n                 MYSQL_YYABORT;\n             }\n             else if ($2.var)\n@@ -12147,7 +12087,6 @@\n           }\n         | option_type TRANSACTION_SYM ISOLATION LEVEL_SYM isolation_types\n           {\n-            THD *thd= YYTHD;\n             LEX *lex=Lex;\n             lex->option_type= $1;\n             Item *item= new (thd->mem_root) Item_int((int32) $5);\n@@ -12167,7 +12106,7 @@\n           '@' ident_or_text equal expr\n           {\n             Item_func_set_user_var *item;\n-            item= new (YYTHD->mem_root) Item_func_set_user_var($2, $4);\n+            item= new (thd->mem_root) Item_func_set_user_var($2, $4);\n             if (item == NULL)\n               MYSQL_YYABORT;\n             set_var_user *var= new set_var_user(item);\n@@ -12177,7 +12116,6 @@\n           }\n         | '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default\n           {\n-            THD *thd= YYTHD;\n             struct sys_var_with_base tmp= $4;\n             /* Lookup if necessary: must be a system variable. */\n             if (tmp.var == NULL)\n@@ -12190,7 +12128,6 @@\n           }\n         | charset old_or_new_charset_name_or_default\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             CHARSET_INFO *cs2;\n             cs2= $2 ? $2: global_system_variables.character_set_client;\n@@ -12238,7 +12175,6 @@\n           }\n         | PASSWORD equal text_or_password\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             LEX_USER *user;\n             sp_pcontext *spc= lex->spcont;\n@@ -12278,7 +12214,6 @@\n internal_variable_name:\n           ident\n           {\n-            THD *thd= YYTHD;\n             sp_pcontext *spc= thd->lex->spcont;\n             sp_variable_t *spv;\n \n@@ -12337,7 +12272,7 @@\n             }\n             else\n             {\n-              sys_var *tmp=find_sys_var(YYTHD, $3.str, $3.length);\n+              sys_var *tmp=find_sys_var(thd, $3.str, $3.length);\n               if (!tmp)\n                 MYSQL_YYABORT;\n               if (!tmp->is_struct())\n@@ -12348,7 +12283,7 @@\n           }\n         | DEFAULT '.' ident\n           {\n-            sys_var *tmp=find_sys_var(YYTHD, $3.str, $3.length);\n+            sys_var *tmp=find_sys_var(thd, $3.str, $3.length);\n             if (!tmp)\n               MYSQL_YYABORT;\n             if (!tmp->is_struct())\n@@ -12370,16 +12305,16 @@\n           TEXT_STRING { $$=$1.str;}\n         | PASSWORD '(' TEXT_STRING ')'\n           {\n-            $$= $3.length ? YYTHD->variables.old_passwords ?\n-              Item_func_old_password::alloc(YYTHD, $3.str, $3.length) :\n-              Item_func_password::alloc(YYTHD, $3.str, $3.length) :\n+            $$= $3.length ? thd->variables.old_passwords ?\n+              Item_func_old_password::alloc(thd, $3.str, $3.length) :\n+              Item_func_password::alloc(thd, $3.str, $3.length) :\n               $3.str;\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | OLD_PASSWORD '(' TEXT_STRING ')'\n           {\n-            $$= $3.length ? Item_func_old_password::alloc(YYTHD, $3.str,\n+            $$= $3.length ? Item_func_old_password::alloc(thd, $3.str,\n                                                           $3.length) :\n               $3.str;\n             if ($$ == NULL)\n@@ -12393,19 +12328,19 @@\n         | DEFAULT { $$=0; }\n         | ON\n           {\n-            $$=new (YYTHD->mem_root) Item_string(\"ON\",  2, system_charset_info);\n+            $$=new (thd->mem_root) Item_string(\"ON\",  2, system_charset_info);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | ALL\n           {\n-            $$=new (YYTHD->mem_root) Item_string(\"ALL\", 3, system_charset_info);\n+            $$=new (thd->mem_root) Item_string(\"ALL\", 3, system_charset_info);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n         | BINARY\n           {\n-            $$=new (YYTHD->mem_root) Item_string(\"binary\", 6, system_charset_info);\n+            $$=new (thd->mem_root) Item_string(\"binary\", 6, system_charset_info);\n             if ($$ == NULL)\n               MYSQL_YYABORT;\n           }\n@@ -12443,7 +12378,7 @@\n           table_ident opt_table_alias lock_option\n           {\n             thr_lock_type lock_type= (thr_lock_type) $3;\n-            if (!Select->add_table_to_list(YYTHD, $1, $2, 0, lock_type))\n+            if (!Select->add_table_to_list(thd, $1, $2, 0, lock_type))\n               MYSQL_YYABORT;\n             /* If table is to be write locked, protect from a impending GRL. */\n             if (lock_type >= TL_WRITE_ALLOW_WRITE)\n@@ -12514,7 +12449,7 @@\n             lex->expr_allows_subselect= FALSE;\n             lex->sql_command = SQLCOM_HA_READ;\n             lex->ha_rkey_mode= HA_READ_KEY_EXACT; /* Avoid purify warnings */\n-            Item *one= new (YYTHD->mem_root) Item_int((int32) 1);\n+            Item *one= new (thd->mem_root) Item_int((int32) 1);\n             if (one == NULL)\n               MYSQL_YYABORT;\n             lex->current_select->select_limit= one;\n@@ -12836,10 +12771,10 @@\n             $$=$1; $1->password=$4;\n             if ($4.length)\n             {\n-              if (YYTHD->variables.old_passwords)\n+              if (thd->variables.old_passwords)\n               {\n                 char *buff= \n-                  (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1);\n+                  (char *) thd->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1);\n                 if (buff == NULL)\n                   MYSQL_YYABORT;\n                 my_make_scrambled_password_323(buff, $4.str, $4.length);\n@@ -12849,7 +12784,7 @@\n               else\n               {\n                 char *buff= \n-                  (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1);\n+                  (char *) thd->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1);\n                 if (buff == NULL)\n                   MYSQL_YYABORT;\n                 my_make_scrambled_password(buff, $4.str, $4.length);\n@@ -12881,7 +12816,7 @@\n column_list_id:\n           ident\n           {\n-            String *new_str = new (YYTHD->mem_root) String((const char*) $1.str,$1.length,system_charset_info);\n+            String *new_str = new (thd->mem_root) String((const char*) $1.str,$1.length,system_charset_info);\n             if (new_str == NULL)\n               MYSQL_YYABORT;\n             List_iterator <LEX_COLUMN> iter(Lex->columns);\n@@ -12981,14 +12916,14 @@\n \n opt_chain:\n           /* empty */\n-          { $$= (YYTHD->variables.completion_type == 1); }\n+          { $$= (thd->variables.completion_type == 1); }\n         | AND_SYM NO_SYM CHAIN_SYM { $$=0; }\n         | AND_SYM CHAIN_SYM        { $$=1; }\n         ;\n \n opt_release:\n           /* empty */\n-          { $$= (YYTHD->variables.completion_type == 2); }\n+          { $$= (thd->variables.completion_type == 2); }\n         | RELEASE_SYM        { $$=1; }\n         | NO_SYM RELEASE_SYM { $$=0; }\n ;\n@@ -13102,7 +13037,6 @@\n \n union_order_or_limit:\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             DBUG_ASSERT(lex->current_select->linkage != GLOBAL_OPTIONS_TYPE);\n             SELECT_LEX *sel= lex->current_select;\n@@ -13118,7 +13052,6 @@\n           }\n           order_or_limit\n           {\n-            THD *thd= YYTHD;\n             thd->lex->current_select->no_table_names_allowed= 0;\n             thd->where= \"\";\n           }\n@@ -13255,14 +13188,14 @@\n               from older master servers (i.e. to create non-suid trigger in this\n               case).\n             */\n-            YYTHD->lex->definer= 0;\n+            thd->lex->definer= 0;\n           }\n         ;\n \n definer:\n           DEFINER_SYM EQ user\n           {\n-            YYTHD->lex->definer= get_current_user(YYTHD, $3);\n+            thd->lex->definer= get_current_user(thd, $3);\n           }\n         ;\n \n@@ -13307,7 +13240,6 @@\n view_tail:\n           view_suid VIEW_SYM table_ident\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             lex->sql_command= SQLCOM_CREATE_VIEW;\n             /* first table in list is target VIEW name */\n@@ -13347,7 +13279,6 @@\n           }\n           view_select_aux view_check_option\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= Lex;\n             uint len= YYLIP->get_cpp_ptr() - lex->create_view_select.str;\n             void *create_view_select= thd->memdup(lex->create_view_select.str, len);\n@@ -13403,7 +13334,6 @@\n           EACH_SYM\n           ROW_SYM\n           { /* $15 */\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             Lex_input_stream *lip= YYLIP;\n             sp_head *sp;\n@@ -13437,8 +13367,8 @@\n             sp_head *sp= lex->sphead;\n \n             lex->sql_command= SQLCOM_CREATE_TRIGGER;\n-            sp->set_stmt_end(YYTHD);\n-            sp->restore_thd_mem_root(YYTHD);\n+            sp->set_stmt_end(thd);\n+            sp->restore_thd_mem_root(thd);\n \n             if (sp->is_not_allowed_in_function(\"trigger\"))\n               MYSQL_YYABORT;\n@@ -13448,7 +13378,7 @@\n               sp_proc_stmt alternatives are not saving/restoring LEX, so\n               lex->query_tables can be wiped out.\n             */\n-            if (!lex->select_lex.add_table_to_list(YYTHD, $9,\n+            if (!lex->select_lex.add_table_to_list(thd, $9,\n                                                    (LEX_STRING*) 0,\n                                                    TL_OPTION_UPDATING,\n                                                    TL_IGNORE))\n@@ -13466,7 +13396,6 @@\n           AGGREGATE_SYM remember_name FUNCTION_SYM ident\n           RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             if (is_native_function(thd, & $4))\n             {\n@@ -13484,7 +13413,6 @@\n         | remember_name FUNCTION_SYM ident\n           RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             if (is_native_function(thd, & $3))\n             {\n@@ -13507,7 +13435,6 @@\n           sp_name /* $3 */\n           '(' /* $4 */\n           { /* $5 */\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             Lex_input_stream *lip= YYLIP;\n             sp_head *sp;\n@@ -13565,7 +13492,7 @@\n               MYSQL_YYABORT;\n             }\n \n-            if (sp->fill_field_definition(YYTHD, lex,\n+            if (sp->fill_field_definition(thd, lex,\n                                           (enum enum_field_types) $11,\n                                           &sp->m_return_field_def))\n               MYSQL_YYABORT;\n@@ -13574,7 +13501,6 @@\n           }\n           sp_c_chistics /* $13 */\n           { /* $14 */\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             Lex_input_stream *lip= YYLIP;\n \n@@ -13583,7 +13509,6 @@\n           }\n           sp_proc_stmt /* $15 */\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n             sp_head *sp= lex->sphead;\n \n@@ -13654,10 +13579,10 @@\n             sp= new sp_head();\n             if (sp == NULL)\n               MYSQL_YYABORT;\n-            sp->reset_thd_mem_root(YYTHD);\n+            sp->reset_thd_mem_root(thd);\n             sp->init(lex);\n             sp->m_type= TYPE_ENUM_PROCEDURE;\n-            sp->init_sp_name(YYTHD, $3);\n+            sp->init_sp_name(thd, $3);\n \n             lex->sphead= sp;\n           }\n@@ -13672,7 +13597,6 @@\n           sp_pdparam_list\n           ')'\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n \n             lex->sphead->m_param_end= YYLIP->get_cpp_tok_start();\n@@ -13680,7 +13604,6 @@\n           }\n           sp_c_chistics\n           {\n-            THD *thd= YYTHD;\n             LEX *lex= thd->lex;\n \n             lex->sphead->m_chistics= &lex->sp_chistics;\n@@ -13691,9 +13614,9 @@\n             LEX *lex= Lex;\n             sp_head *sp= lex->sphead;\n \n-            sp->set_stmt_end(YYTHD);\n+            sp->set_stmt_end(thd);\n             lex->sql_command= SQLCOM_CREATE_PROCEDURE;\n-            sp->restore_thd_mem_root(YYTHD);\n+            sp->restore_thd_mem_root(thd);\n           }\n         ;\n \n@@ -13730,21 +13653,21 @@\n           text_string\n           {\n             MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE);\n-            if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID))))\n+            if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID))))\n               MYSQL_YYABORT;\n             Lex->xid->set(1L, $1->ptr(), $1->length(), 0, 0);\n           }\n           | text_string ',' text_string\n           {\n             MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE && $3->length() <= MAXBQUALSIZE);\n-            if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID))))\n+            if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID))))\n               MYSQL_YYABORT;\n             Lex->xid->set(1L, $1->ptr(), $1->length(), $3->ptr(), $3->length());\n           }\n           | text_string ',' text_string ',' ulong_num\n           {\n             MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE && $3->length() <= MAXBQUALSIZE);\n-            if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID))))\n+            if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID))))\n               MYSQL_YYABORT;\n             Lex->xid->set($5, $1->ptr(), $1->length(), $3->ptr(), $3->length());\n           }\n"
  },
  {
    "path": "package/oracle-mysql/0006-no-force-static-build.patch",
    "content": "configure: do not force a static link for non-installed programs\n\nOtherwise, it tries to link against a static libz, which may not exist\nin a shared-only system.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN mysql-5.1.73.orig/configure.in mysql-5.1.73/configure.in\n--- mysql-5.1.73.orig/configure.in\t2014-12-22 00:04:46.550508208 +0100\n+++ mysql-5.1.73/configure.in\t2014-12-22 00:05:56.415307480 +0100\n@@ -562,7 +562,6 @@\n   AC_MSG_ERROR([MySQL requires an ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.])\n fi\n \n-NOINST_LDFLAGS=\"-static\"\n \n static_nss=\"\"\n STATIC_NSS_FLAGS=\"\"\n"
  },
  {
    "path": "package/oracle-mysql/0007-dont-install-in-mysql-directory.patch",
    "content": "Don't install in mysql directory\n\nInstalling libraries in a subdirectory of /usr/lib leads to no end of\ntrouble. It requires either setting a RUN_PATH in the ELF files linked\nwith it or adding the path to ld.so.conf and calling ldconfig on the\ntarget.\n\nSo to simplify things, put everything in /usr/lib instead of\n/usr/lib/mysql\n\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n\ndiff -Nrup mysql-5.1.73.orig/dbug/Makefile.am mysql-5.1.73/dbug/Makefile.am\n--- mysql-5.1.73.orig/dbug/Makefile.am\t2013-11-04 19:52:27.000000000 +0100\n+++ mysql-5.1.73/dbug/Makefile.am\t2015-12-14 00:34:58.567937603 +0100\n@@ -17,7 +17,7 @@\n \n INCLUDES =              -I$(top_builddir)/include -I$(top_srcdir)/include\n LDADD =                 libdbug.a ../mysys/libmysys.a ../strings/libmystrings.a\n-pkglib_LIBRARIES =      libdbug.a\n+lib_LIBRARIES =      libdbug.a\n noinst_HEADERS =        dbug_long.h\n libdbug_a_SOURCES =     dbug.c sanity.c\n EXTRA_DIST =            CMakeLists.txt example1.c example2.c example3.c \\\ndiff -Nrup mysql-5.1.73.orig/libmysql/Makefile.shared mysql-5.1.73/libmysql/Makefile.shared\n--- mysql-5.1.73.orig/libmysql/Makefile.shared\t2013-11-04 19:52:27.000000000 +0100\n+++ mysql-5.1.73/libmysql/Makefile.shared\t2015-12-14 00:34:58.567937603 +0100\n@@ -25,7 +25,7 @@ MYSQLBASEdir=\t\t\t$(prefix)\n ## We'll use CLIENT_EXTRA_LDFLAGS for threaded and non-threaded\n ## until someone complains that they need separate options.\n LDADD =\t\t\t\t@CLIENT_EXTRA_LDFLAGS@ $(target)\n-pkglib_LTLIBRARIES =\t\t$(target)\n+lib_LTLIBRARIES =\t\t$(target)\n \n noinst_PROGRAMS = conf_to_src\n \ndiff -Nrup mysql-5.1.73.orig/libmysqld/Makefile.am mysql-5.1.73/libmysqld/Makefile.am\n--- mysql-5.1.73.orig/libmysqld/Makefile.am\t2013-11-04 19:52:27.000000000 +0100\n+++ mysql-5.1.73/libmysqld/Makefile.am\t2015-12-14 00:34:58.567937603 +0100\n@@ -38,7 +38,7 @@ INCLUDES=\t\t-I$(top_builddir)/include -I$\n \t\t\t@condition_dependent_plugin_includes@\n \n noinst_LIBRARIES =\tlibmysqld_int.a\n-pkglib_LIBRARIES =\tlibmysqld.a\n+lib_LIBRARIES =\tlibmysqld.a\n SUBDIRS =\t\t. examples\n libmysqld_sources=\tlibmysqld.c lib_sql.cc emb_qcache.cc\n libmysqlsources =\terrmsg.c get_password.c libmysql.c client.c pack.c \\\ndiff -Nrup mysql-5.1.73.orig/mysys/Makefile.am mysql-5.1.73/mysys/Makefile.am\n--- mysql-5.1.73.orig/mysys/Makefile.am\t2013-11-04 19:52:27.000000000 +0100\n+++ mysql-5.1.73/mysys/Makefile.am\t2015-12-14 00:34:58.567937603 +0100\n@@ -18,7 +18,7 @@ MYSQLSHAREdir =\t\t$(pkgdatadir)\n MYSQLBASEdir=\t\t$(prefix)\n INCLUDES =\t\t@ZLIB_INCLUDES@ -I$(top_builddir)/include \\\n \t\t\t-I$(top_srcdir)/include -I$(srcdir)\n-pkglib_LIBRARIES =\tlibmysys.a\n+lib_LIBRARIES =\tlibmysys.a\n LDADD =\t\t\tlibmysys.a $(top_builddir)/strings/libmystrings.a $(top_builddir)/dbug/libdbug.a\n noinst_HEADERS =\tmysys_priv.h my_static.h my_handler_errors.h\n libmysys_a_SOURCES =    my_init.c my_getwd.c mf_getdate.c my_mmap.c \\\ndiff -Nrup mysql-5.1.73.orig/storage/csv/Makefile.am mysql-5.1.73/storage/csv/Makefile.am\n--- mysql-5.1.73.orig/storage/csv/Makefile.am\t2013-11-04 19:52:27.000000000 +0100\n+++ mysql-5.1.73/storage/csv/Makefile.am\t2015-12-14 00:34:58.563937596 +0100\n@@ -30,7 +30,7 @@ DEFS =\t@DEFS@\n noinst_HEADERS\t  =\tha_tina.h transparent_file.h\n \n EXTRA_LTLIBRARIES =\tha_csv.la\n-pkglib_LTLIBRARIES =\t@plugin_csv_shared_target@\n+lib_LTLIBRARIES =\t@plugin_csv_shared_target@\n ha_csv_la_LDFLAGS =\t-module -rpath $(MYSQLLIBdir)\n ha_csv_la_CXXFLAGS =\t$(AM_CXXFLAGS) -DMYSQL_PLUGIN\n ha_csv_la_SOURCES =\ttransparent_file.cc ha_tina.cc \ndiff -Nrup mysql-5.1.73.orig/storage/heap/Makefile.am mysql-5.1.73/storage/heap/Makefile.am\n--- mysql-5.1.73.orig/storage/heap/Makefile.am\t2013-11-04 19:52:27.000000000 +0100\n+++ mysql-5.1.73/storage/heap/Makefile.am\t2015-12-14 00:34:58.563937596 +0100\n@@ -26,7 +26,7 @@ WRAPLIBS=\n LDADD =\n \n DEFS =                  @DEFS@\n-pkglib_LIBRARIES =\tlibheap.a\n+lib_LIBRARIES =\tlibheap.a\n noinst_PROGRAMS\t=\thp_test1 hp_test2\n noinst_LIBRARIES =\tlibheap.a\n hp_test1_LDFLAGS = @NOINST_LDFLAGS@\ndiff -Nrup mysql-5.1.73.orig/storage/myisam/Makefile.am mysql-5.1.73/storage/myisam/Makefile.am\n--- mysql-5.1.73.orig/storage/myisam/Makefile.am\t2013-11-04 19:52:27.000000000 +0100\n+++ mysql-5.1.73/storage/myisam/Makefile.am\t2015-12-14 00:34:58.563937596 +0100\n@@ -30,7 +30,7 @@ DEFS =                  @DEFS@\n EXTRA_DIST =\t\tmi_test_all.sh mi_test_all.res ft_stem.c CMakeLists.txt plug.in\n pkgdata_DATA =\t\tmi_test_all mi_test_all.res\n \n-pkglib_LIBRARIES =\tlibmyisam.a\n+lib_LIBRARIES =\tlibmyisam.a\n bin_PROGRAMS =\t\tmyisamchk myisamlog myisampack myisam_ftdump\n myisamchk_DEPENDENCIES=\t$(LIBRARIES)\n myisamchk_LDADD=\t\t@CLIENT_EXTRA_LDFLAGS@ libmyisam.a \\\ndiff -Nrup mysql-5.1.73.orig/storage/myisammrg/Makefile.am mysql-5.1.73/storage/myisammrg/Makefile.am\n--- mysql-5.1.73.orig/storage/myisammrg/Makefile.am\t2013-11-04 19:52:27.000000000 +0100\n+++ mysql-5.1.73/storage/myisammrg/Makefile.am\t2015-12-14 00:34:58.563937596 +0100\n@@ -26,7 +26,7 @@ WRAPLIBS=\n LDADD =\n \n DEFS =                  @DEFS@\n-pkglib_LIBRARIES =\tlibmyisammrg.a\n+lib_LIBRARIES =\tlibmyisammrg.a\n noinst_HEADERS =\tmyrg_def.h ha_myisammrg.h\n noinst_LIBRARIES =\tlibmyisammrg.a\n libmyisammrg_a_SOURCES = myrg_open.c myrg_extra.c myrg_info.c myrg_locking.c \\\ndiff -Nrup mysql-5.1.73.orig/strings/Makefile.am mysql-5.1.73/strings/Makefile.am\n--- mysql-5.1.73.orig/strings/Makefile.am\t2013-11-04 19:52:27.000000000 +0100\n+++ mysql-5.1.73/strings/Makefile.am\t2015-12-14 00:34:58.567937603 +0100\n@@ -16,7 +16,7 @@\n # This file is public domain and comes with NO WARRANTY of any kind\n \n INCLUDES =\t\t-I$(top_builddir)/include -I$(top_srcdir)/include\n-pkglib_LIBRARIES =\tlibmystrings.a\n+lib_LIBRARIES =\tlibmystrings.a\n \n # Exact one of ASSEMBLER_X\n if ASSEMBLER_x86\n@@ -69,15 +69,15 @@ conf_to_src_LDFLAGS= @NOINST_LDFLAGS@\n \n FLAGS=$(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) @NOINST_LDFLAGS@\n \n-str_test: str_test.c $(pkglib_LIBRARIES)\n-\t$(LINK) $(FLAGS) -DMAIN $(INCLUDES) $(srcdir)/str_test.c $(LDADD) $(pkglib_LIBRARIES)\n+str_test: str_test.c $(lib_LIBRARIES)\n+\t$(LINK) $(FLAGS) -DMAIN $(INCLUDES) $(srcdir)/str_test.c $(LDADD) $(lib_LIBRARIES)\n \n uctypedump: uctypedump.c\n \t$(LINK) $(INCLUDES) $(srcdir)/uctypedump.c\n \n-test_decimal$(EXEEXT): decimal.c $(pkglib_LIBRARIES)\n+test_decimal$(EXEEXT): decimal.c $(lib_LIBRARIES)\n \t$(CP) $(srcdir)/decimal.c ./test_decimal.c\n-\t$(LINK) $(FLAGS) -DMAIN  ./test_decimal.c $(LDADD) $(pkglib_LIBRARIES)\n+\t$(LINK) $(FLAGS) -DMAIN  ./test_decimal.c $(LDADD) $(lib_LIBRARIES)\n \t$(RM) -f ./test_decimal.c\n \n # Don't update the files from bitkeeper\ndiff -Nrup mysql-5.1.73.orig/tests/Makefile.am mysql-5.1.73/tests/Makefile.am\n--- mysql-5.1.73.orig/tests/Makefile.am\t2013-11-04 19:52:27.000000000 +0100\n+++ mysql-5.1.73/tests/Makefile.am\t2015-12-14 00:34:58.567937603 +0100\n@@ -51,11 +51,11 @@ mysql_client_test.o:\tmysql_client_fw.c\n \n insert_test_SOURCES=       insert_test.c\n select_test_SOURCES=       select_test.c\n-insert_test_DEPENDENCIES=\t$(LIBRARIES) $(pkglib_LTLIBRARIES)\n-select_test_DEPENDENCIES=\t$(LIBRARIES) $(pkglib_LTLIBRARIES)\n+insert_test_DEPENDENCIES=\t$(LIBRARIES) $(lib_LTLIBRARIES)\n+select_test_DEPENDENCIES=\t$(LIBRARIES) $(lib_LTLIBRARIES)\n \n bug25714_SOURCES=          bug25714.c\n-bug25714_DEPENDENCIES=     $(LIBRARIES) $(pkglib_LTLIBRARIES)\n+bug25714_DEPENDENCIES=     $(LIBRARIES) $(lib_LTLIBRARIES)\n \n # Fix for mit-threads\n DEFS =\t\t\t-DMYSQL_CLIENT_NO_THREADS\ndiff -Nrup mysql-5.1.73.orig/vio/Makefile.am mysql-5.1.73/vio/Makefile.am\n--- mysql-5.1.73.orig/vio/Makefile.am\t2013-11-04 19:52:27.000000000 +0100\n+++ mysql-5.1.73/vio/Makefile.am\t2015-12-14 00:34:58.567937603 +0100\n@@ -16,7 +16,7 @@\n INCLUDES =\t\t-I$(top_builddir)/include -I$(top_srcdir)/include \\\n \t\t\t$(openssl_includes)\n LDADD =\t\t\t@CLIENT_EXTRA_LDFLAGS@ $(openssl_libs) $(yassl_libs)\n-pkglib_LIBRARIES =\tlibvio.a\n+lib_LIBRARIES =\tlibvio.a\n \n noinst_HEADERS =\tvio_priv.h\n \ndiff -Nrup mysql-5.1.73.orig/zlib/Makefile.am mysql-5.1.73/zlib/Makefile.am\n--- mysql-5.1.73.orig/zlib/Makefile.am\t2013-11-04 19:52:27.000000000 +0100\n+++ mysql-5.1.73/zlib/Makefile.am\t2015-12-14 00:34:58.567937603 +0100\n@@ -19,7 +19,7 @@ INCLUDES=\t\t-I$(top_builddir)/include -I$\n \n LIBS= $(NON_THREADED_LIBS)\n \n-pkglib_LTLIBRARIES = libz.la\n+lib_LTLIBRARIES = libz.la\n noinst_LTLIBRARIES = libzlt.la\n \n libz_la_LDFLAGS    = -static\n"
  },
  {
    "path": "package/oracle-mysql/0008-fix-type-conversion.patch",
    "content": "Fix type conversion\n\nFixes the following build error with gcc 6.x:\n\nprotocol.cc:27:40: error: narrowing conversion of ''\\37777777776'' from 'char' to 'uchar {aka unsigned char}' inside { } [-Wnarrowing]\n static uchar eof_buff[1]= { (char) 254 }; /* Marker for end of fields */\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/server-tools/instance-manager/protocol.cc\n===================================================================\n--- a/server-tools/instance-manager/protocol.cc\n+++ b/server-tools/instance-manager/protocol.cc\n@@ -24,7 +24,7 @@\n #include <m_string.h>\n \n \n-static uchar eof_buff[1]= { (char) 254 }; /* Marker for end of fields */\n+static uchar eof_buff[1]= { (uchar) 254 }; /* Marker for end of fields */\n static const char ERROR_PACKET_CODE= (char) 255;\n \n \n"
  },
  {
    "path": "package/oracle-mysql/0009-gcc7.patch",
    "content": "Fix gcc7 compile\n\nmysql.cc: In function 'void build_completion_hash(bool, bool)':\nmysql.cc:2687:37: error: invalid conversion from 'char' to 'char*' [-fpermissive]\n       field_names[i][num_fields*2]= '\\0';\n                                     ^~~~\nPatch was partly backported from upstream commit:\nhttps://github.com/mysql/mysql-server/commit/ae21683d980d5fe9e39bd0193827ea3604256eb9\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Thomas: add more gcc 7.x fixes in instance_map.cc.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/client/mysql.cc\n===================================================================\n--- a/client/mysql.cc\n+++ b/client/mysql.cc\n@@ -2684,7 +2684,7 @@\n         mysql_free_result(fields);\n         break;\n       }\n-      field_names[i][num_fields*2]= '\\0';\n+      field_names[i][num_fields*2]= NULL;\n       j=0;\n       while ((sql_field=mysql_fetch_field(fields)))\n       {\nIndex: b/server-tools/instance-manager/instance_map.cc\n===================================================================\n--- a/server-tools/instance-manager/instance_map.cc\n+++ b/server-tools/instance-manager/instance_map.cc\n@@ -526,12 +526,12 @@\n              Options::Main::config_file);\n \n     argv_options[1]= defaults_file_arg;\n-    argv_options[2]= '\\0';\n+    argv_options[2]= NULL;\n \n     argc= 2;\n   }\n   else\n-    argv_options[1]= '\\0';\n+    argv_options[1]= NULL;\n \n   /*\n     If the routine failed, we'll simply fallback to defaults in\n"
  },
  {
    "path": "package/oracle-mysql/0010-fix-build-without-zlib.patch",
    "content": "Fix build without zlib\n\nDon't include unconditionally zlib.h, and compile out code that\nrequires zlib support.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -durN mysql-5.1.73.orig/mysys/checksum.c mysql-5.1.73/mysys/checksum.c\n--- mysql-5.1.73.orig/mysys/checksum.c\t2020-07-14 17:34:38.212304432 +0200\n+++ mysql-5.1.73/mysys/checksum.c\t2020-07-14 18:06:45.076342493 +0200\n@@ -16,7 +16,9 @@\n \n #include <my_global.h>\n #include <my_sys.h>\n+#ifdef HAVE_COMPRESS\n #include <zlib.h>\n+#endif\n \n /*\n   Calculate a long checksum for a memoryblock.\ndiff -durN mysql-5.1.73.orig/sql/item_strfunc.cc mysql-5.1.73/sql/item_strfunc.cc\n--- mysql-5.1.73.orig/sql/item_strfunc.cc\t2020-07-14 17:34:38.160304431 +0200\n+++ mysql-5.1.73/sql/item_strfunc.cc\t2020-07-14 18:04:36.956339962 +0200\n@@ -35,7 +35,9 @@\n #include \"my_md5.h\"\n #include \"sha1.h\"\n #include \"my_aes.h\"\n+#ifdef HAVE_COMPRESS\n #include <zlib.h>\n+#endif\n C_MODE_START\n #include \"../mysys/my_static.h\"\t\t\t// For soundex_map\n C_MODE_END\ndiff -durN mysql-5.1.73.orig/sql/sql_table.cc mysql-5.1.73/sql/sql_table.cc\n--- mysql-5.1.73.orig/sql/sql_table.cc\t2020-07-14 17:34:38.156304431 +0200\n+++ mysql-5.1.73/sql/sql_table.cc\t2020-07-14 18:14:48.628352044 +0200\n@@ -1681,6 +1681,7 @@\n       goto end;\n     }\n   }\n+#ifdef HAVE_COMPRESS\n   if (flags & WFRM_PACK_FRM)\n   {\n     /*\n@@ -1702,6 +1703,7 @@\n     }\n     error= my_delete(shadow_frm_name, MYF(MY_WME));\n   }\n+#endif\n   if (flags & WFRM_INSTALL_SHADOW)\n   {\n #ifdef WITH_PARTITION_STORAGE_ENGINE\n"
  },
  {
    "path": "package/oracle-mysql/0011-config-ac-macros-alloca.m4-Remove-obsolete-Cray-supp.patch",
    "content": "From 0d8ab9b020870c62c216fca77e7f8bd3eeb710c3 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 9 Oct 2021 19:23:46 +0200\nSubject: [PATCH] config/ac-macros/alloca.m4: Remove obsolete Cray support\n\nRemove obsolete Cray support to avoid the following build failure since\nautoconf >= 2.70 and\nhttp://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commit;h=15edf7fd8094fd14a89d9891dd72a9624762597a:\n\nautoheader: warning: missing template: CRAY_STACKSEG_END\nautoheader: warning: Use AC_DEFINE([CRAY_STACKSEG_END], [], [Description])\nautoreconf: error: /home/buildroot/autobuild/instance-2/output-1/host/bin/autoheader failed with exit status: 1\npackage/pkg-generic.mk:273: recipe for target '/home/buildroot/autobuild/instance-2/output-1/build/oracle-mysql-5.1.73/.stamp_configured' failed\n\nFixes:\n - http://autobuild.buildroot.org/results/e5329bcf166d46b2eb17f2bc727c0307bef5ed02\n\nUpstream: switched to CMake a very long time ago, so not sent upstream\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n config/ac-macros/alloca.m4 | 14 --------------\n 1 file changed, 14 deletions(-)\n\ndiff --git a/config/ac-macros/alloca.m4 b/config/ac-macros/alloca.m4\nindex 8c730dd671f..eecb8249573 100644\n--- a/config/ac-macros/alloca.m4\n+++ b/config/ac-macros/alloca.m4\n@@ -46,20 +46,6 @@ then\n    ALLOCA=alloca.o\n    AC_DEFINE(C_ALLOCA, 1)\n  \n- AC_CACHE_CHECK(whether alloca needs Cray hooks, ac_cv_os_cray,\n- [AC_EGREP_CPP(webecray,\n- [#if defined(CRAY) && ! defined(CRAY2)\n- webecray\n- #else\n- wenotbecray\n- #endif\n- ], ac_cv_os_cray=yes, ac_cv_os_cray=no)])\n- if test \"$ac_cv_os_cray\" = \"yes\"; then\n- for ac_func in _getb67 GETB67 getb67; do\n-   AC_CHECK_FUNC($ac_func, [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func)\n-   break])\n- done\n- fi\n  fi\n  AC_SUBST(ALLOCA)dnl\n else\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/oracle-mysql/S97mysqld",
    "content": "#!/bin/sh\n\nMYSQL_DIR=\"/var/mysql\"\nMYSQL_USER=\"mysql\"\n\n[ -r /etc/default/mysql ] && . /etc/default/mysql\n\ncase \"$1\" in\n\tstart)\n\t\tif [ ! -d $MYSQL_DIR/mysql ] ; then\n\t\t\techo \"Creating MySQL system tables...\"\n\t\t\tmysql_install_db --user=$MYSQL_USER --ldata=$MYSQL_DIR\n\t\tfi\n\n\t\t# mysqld runs as user mysql, but /run is only writable by root\n\t\t# so create a subdirectory for mysql.\n\t\tinstall -d -o mysql -g root -m 0755 /run/mysql\n\n\t\t# We don't use start-stop-daemon because mysqld has\n\t\t# its own wrapper script.\n\t\tprintf \"Starting mysql...\"\n\t\t/usr/bin/mysqld_safe --pid-file=/run/mysql/mysqld.pid &\n\t\techo \"done.\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping mysql...\"\n\t\tif test -f /run/mysql/mysqld.pid ; then\n\t\t\tkill `cat /run/mysql/mysqld.pid`\n\t\tfi\n\t\techo \"done.\"\n\t\t;;\n\trestart)\n\t\t$0 stop\n\t\t$0 start\n\t\t;;\n\t*)\n\t\techo \"Usage: /etc/init.d/mysqld {start|stop|restart}\"\n\t\t;;\nesac\n"
  },
  {
    "path": "package/oracle-mysql/mysqld.service",
    "content": "[Unit]\nDescription=MySQL database server\n\n[Service]\nExecStartPre=/bin/sh -c 'test -d /var/mysql/mysql || mysql_install_db --user=mysql --ldata=/var/mysql'\nExecStart=/usr/bin/mysqld_safe\nRestart=always\nUser=mysql\nRuntimeDirectory=mysql\nRuntimeDirectoryMode=0755\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/oracle-mysql/oracle-mysql.hash",
    "content": "# From https://downloads.mariadb.com/archives/mysql-5.1/mysql-5.1.73.tar.gz.md5\nmd5\t887f869bcc757957067b9198f707f32f\tmysql-5.1.73.tar.gz\n# Locally computed\nsha256  05ebe21305408b24407d14b77607a3e5ffa3c300e03f1359d3066f301989dcb5  mysql-5.1.73.tar.gz\nsha256  cbf0dbf56528a629f4358a1339f981202f1a9a0d9542c092b03f486064ced2db  README\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/oracle-mysql/oracle-mysql.mk",
    "content": "################################################################################\n#\n# oracle-mysql\n#\n################################################################################\n\nORACLE_MYSQL_VERSION_MAJOR = 5.1\nORACLE_MYSQL_VERSION = $(ORACLE_MYSQL_VERSION_MAJOR).73\nORACLE_MYSQL_SOURCE = mysql-$(ORACLE_MYSQL_VERSION).tar.gz\nORACLE_MYSQL_SITE = http://dev.mysql.com/get/Downloads/MySQL-$(ORACLE_MYSQL_VERSION_MAJOR)\nORACLE_MYSQL_INSTALL_STAGING = YES\nORACLE_MYSQL_DEPENDENCIES = ncurses\nORACLE_MYSQL_AUTORECONF = YES\nORACLE_MYSQL_LICENSE = GPL-2.0\nORACLE_MYSQL_LICENSE_FILES = README COPYING\nORACLE_MYSQL_SELINUX_MODULES = mysql\nORACLE_MYSQL_PROVIDES = mysql\nORACLE_MYSQL_CONFIG_SCRIPTS = mysql_config\n\n# Unix socket. This variable can also be consulted by other buildroot packages\nMYSQL_SOCKET = /run/mysql/mysql.sock\n\nORACLE_MYSQL_CONF_ENV = \\\n\tac_cv_sys_restartable_syscalls=yes \\\n\tac_cv_path_PS=/bin/ps \\\n\tac_cv_path_HOSTNAME=/bin/hostname \\\n\tac_cv_FIND_PROC=\"/bin/ps p \\$\\$PID | grep -v grep | grep mysqld > /dev/null\" \\\n\tac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=yes \\\n\tac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=no \\\n\tac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=yes \\\n\tmysql_cv_new_rl_interface=yes\n\nORACLE_MYSQL_CONF_OPTS = \\\n\t--without-ndb-binlog \\\n\t--without-docs \\\n\t--without-man \\\n\t--without-libedit \\\n\t--with-readline \\\n\t--with-low-memory \\\n\t--enable-thread-safe-client \\\n\t--with-unix-socket-path=$(MYSQL_SOCKET) \\\n\t--disable-mysql-maintainer-mode\n\n# host-oracle-mysql only installs what is needed to build mysql, i.e. the\n# gen_lex_hash tool, and it only builds the parts that are needed to\n# create this tool\nHOST_ORACLE_MYSQL_DEPENDENCIES = host-zlib host-ncurses\n\nHOST_ORACLE_MYSQL_CONF_OPTS = \\\n\t--with-embedded-server \\\n\t--disable-mysql-maintainer-mode\n\ndefine HOST_ORACLE_MYSQL_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/include my_config.h\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/mysys libmysys.a\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/strings libmystrings.a\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/vio libvio.a\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/dbug libdbug.a\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/regex libregex.a\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/sql gen_lex_hash\nendef\n\ndefine HOST_ORACLE_MYSQL_INSTALL_CMDS\n\t$(INSTALL) -m 0755 $(@D)/sql/gen_lex_hash $(HOST_DIR)/bin/\nendef\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nORACLE_MYSQL_DEPENDENCIES += openssl\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nORACLE_MYSQL_DEPENDENCIES += zlib\nORACLE_MYSQL_CONF_OPTS += --with-zlib-dir=$(STAGING_DIR)/usr\nelse\nORACLE_MYSQL_CONF_OPTS += --without-zlib-dir\nendif\n\nifeq ($(BR2_PACKAGE_ORACLE_MYSQL_SERVER),y)\nORACLE_MYSQL_DEPENDENCIES += host-oracle-mysql host-bison\n\nORACLE_MYSQL_CONF_OPTS += \\\n\t--localstatedir=/var/mysql \\\n\t--with-atomic-ops=up \\\n\t--with-embedded-server \\\n\t--without-query-cache \\\n\t--without-plugin-partition \\\n\t--without-plugin-daemon_example \\\n\t--without-plugin-ftexample \\\n\t--without-plugin-archive \\\n\t--without-plugin-blackhole \\\n\t--without-plugin-example \\\n\t--without-plugin-federated \\\n\t--without-plugin-ibmdb2i \\\n\t--without-plugin-innobase \\\n\t--without-plugin-innodb_plugin \\\n\t--without-plugin-ndbcluster\n\n# Debugging is only available for the server, so no need for\n# this if-block outside of the server if-block\nifeq ($(BR2_ENABLE_RUNTIME_DEBUG),y)\nORACLE_MYSQL_CONF_OPTS += --with-debug=full\nelse\nORACLE_MYSQL_CONF_OPTS += --without-debug\nendif\n\ndefine ORACLE_MYSQL_USERS\n\tmysql -1 nobody -1 * /var/mysql - - MySQL daemon\nendef\n\ndefine ORACLE_MYSQL_ADD_FOLDER\n\t$(INSTALL) -d $(TARGET_DIR)/var/mysql\nendef\n\nORACLE_MYSQL_POST_INSTALL_TARGET_HOOKS += ORACLE_MYSQL_ADD_FOLDER\n\ndefine ORACLE_MYSQL_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 $(ORACLE_MYSQL_PKGDIR)/S97mysqld \\\n\t\t$(TARGET_DIR)/etc/init.d/S97mysqld\nendef\n\ndefine ORACLE_MYSQL_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(ORACLE_MYSQL_PKGDIR)/mysqld.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/mysqld.service\nendef\n\nelse\nORACLE_MYSQL_CONF_OPTS += \\\n\t--without-server\nendif\n\ndefine ORACLE_MYSQL_REMOVE_TEST_PROGS\n\trm -rf $(TARGET_DIR)/usr/mysql-test $(TARGET_DIR)/usr/sql-bench\nendef\n\nORACLE_MYSQL_POST_INSTALL_TARGET_HOOKS += ORACLE_MYSQL_REMOVE_TEST_PROGS\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/orbit/Config.in",
    "content": "config BR2_PACKAGE_ORBIT\n\tbool \"orbit\"\n\tdepends on BR2_PACKAGE_LUA_5_1 || BR2_PACKAGE_LUAJIT\n\tselect BR2_PACKAGE_LPEG # runtime\n\tselect BR2_PACKAGE_LUAFILESYSTEM # runtime\n\tselect BR2_PACKAGE_WSAPI_XAVANTE # runtime\n\thelp\n\t  An MVC web framework for Lua. The design is inspired by\n\t  lightweight Ruby frameworks such as Camping\n\n\t  http://keplerproject.github.com/orbit\n\ncomment \"orbit needs a Lua 5.1 interpreter\"\n\tdepends on !BR2_PACKAGE_LUA_5_1\n\tdepends on !BR2_PACKAGE_LUAJIT\n"
  },
  {
    "path": "package/orbit/orbit.hash",
    "content": "# computed by luarocks/buildroot\nsha256 91e3c514d5b86918db83666c8889635bb2d50c71d1ab3aeb69c6469c9424089b  orbit-2.2.4-1.src.rock\nsha256 dd7d37caed0f4ee994e9e64ea4ab292dce549bb609412c84fc47ed079275ae98  orbit/doc/us/license.html\nsha256 140134369c1f041abf7d8cd39a5b0c42f8b5e827695ce7c1ef5ca8f0911a0246  orbit/doc/us/license.md\n"
  },
  {
    "path": "package/orbit/orbit.mk",
    "content": "################################################################################\n#\n# orbit\n#\n################################################################################\n\nORBIT_VERSION = 2.2.4-1\nORBIT_SUBDIR = orbit\nORBIT_LICENSE = MIT\nORBIT_LICENSE_FILES = \\\n\t$(ORBIT_SUBDIR)/doc/us/license.html \\\n\t$(ORBIT_SUBDIR)/doc/us/license.md\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/orc/0001-orc-orccpu-powerpc.c-fix-build-with-kernel-4.11.patch",
    "content": "From a45f6d49ec090ad94333c0865c378d2d96ab2af4 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 15 Feb 2021 20:17:43 +0100\nSubject: [PATCH] orc/orccpu-powerpc.c: fix build with kernel < 4.11\n\nBuild with powerpc and kernel < 4.11 is broken since version 0.4.30 and\nhttps://gitlab.freedesktop.org/gstreamer/orc/-/commit/a999325abea6a5549d60d99ddeb0271d2aa00235:\n\nFAILED: orc/liborc-0.4.so.0.32.0.p/orccpu-powerpc.c.o\n/home/giuliobenetti/autobuild/run/instance-3/output-1/host/bin/powerpc-linux-gcc -Iorc/liborc-0.4.so.0.32.0.p -Iorc -I../orc -I. -I.. -fdiagnostics-color=always -pipe -Wall -Winvalid-pch -std=gnu99 -O3 -DHAVE_CONFIG_H -fvisibility=hidden -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -fPIC -pthread -DORC_ENABLE_UNSTABLE_API -D_GNU_SOURCE -DBUILDING_ORC -MD -MQ orc/liborc-0.4.so.0.32.0.p/orccpu-powerpc.c.o -MF orc/liborc-0.4.so.0.32.0.p/orccpu-powerpc.c.o.d -o orc/liborc-0.4.so.0.32.0.p/orccpu-powerpc.c.o -c ../orc/orccpu-powerpc.c\n../orc/orccpu-powerpc.c: In function 'orc_check_powerpc_proc_auxv':\n../orc/orccpu-powerpc.c:164:21: error: 'AT_L1D_CACHESIZE' undeclared (first use in this function); did you mean 'AT_DCACHEBSIZE'?\n  164 |       if (buf[i] == AT_L1D_CACHESIZE) {\n      |                     ^~~~~~~~~~~~~~~~\n      |                     AT_DCACHEBSIZE\n../orc/orccpu-powerpc.c:164:21: note: each undeclared identifier is reported only once for each function it appears in\n../orc/orccpu-powerpc.c:168:21: error: 'AT_L2_CACHESIZE' undeclared (first use in this function); did you mean 'AT_ICACHEBSIZE'?\n  168 |       if (buf[i] == AT_L2_CACHESIZE) {\n      |                     ^~~~~~~~~~~~~~~\n      |                     AT_ICACHEBSIZE\n../orc/orccpu-powerpc.c:172:21: error: 'AT_L3_CACHESIZE' undeclared (first use in this function); did you mean 'AT_ICACHEBSIZE'?\n  172 |       if (buf[i] == AT_L3_CACHESIZE) {\n      |                     ^~~~~~~~~~~~~~~\n      |                     AT_ICACHEBSIZE\n\nIndeed, AT_{L1D,L2,L3}_CACHESIZE is only defined since kernel 4.11 and\nhttps://github.com/torvalds/linux/commit/98a5f361b8625c6f4841d6ba013bbf0e80d08147\n\nFixes:\n - http://autobuild.buildroot.org/results/0821e96cba3e455edd47b87485501d892fc7ac6a\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/56]\n---\n orc/orccpu-powerpc.c | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/orc/orccpu-powerpc.c b/orc/orccpu-powerpc.c\nindex 6796f17..340cf05 100644\n--- a/orc/orccpu-powerpc.c\n+++ b/orc/orccpu-powerpc.c\n@@ -161,18 +161,24 @@ orc_check_powerpc_proc_auxv (void)\n         _orc_cpu_name = (char*)buf[i + 1];\n         found++;\n       }\n+#ifdef AT_L1D_CACHESIZE\n       if (buf[i] == AT_L1D_CACHESIZE) {\n         _orc_data_cache_size_level1 = buf[i + 1];\n         found++;\n       }\n+#endif\n+#ifdef AT_L2_CACHESIZE\n       if (buf[i] == AT_L2_CACHESIZE) {\n         _orc_data_cache_size_level2 = buf[i + 1];\n         found++;\n       }\n+#endif\n+#ifdef AT_L3_CACHESIZE\n       if (buf[i] == AT_L3_CACHESIZE) {\n         _orc_data_cache_size_level3 = buf[i + 1];\n         found++;\n       }\n+#endif\n       if (found == 6)\n         break;\n     }\n-- \n2.30.0\n\n"
  },
  {
    "path": "package/orc/Config.in",
    "content": "config BR2_PACKAGE_ORC\n\tbool \"orc\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Orc is a library and set of tools for compiling and executing\n\t  very simple programs that operate on arrays of data.\n\n\t  https://gstreamer.freedesktop.org/projects/orc.html\n\ncomment \"orc needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/orc/orc.hash",
    "content": "# From https://gstreamer.freedesktop.org/data/src/orc/orc-0.4.32.tar.xz.sha256sum\nsha256  a66e3d8f2b7e65178d786a01ef61f2a0a0b4d0b8370de7ce134ba73da4af18f0  orc-0.4.32.tar.xz\n\n# Locally calculated\nsha256  4f5dabb1b44bb6fc5cd53820b1f103147ad61b395a57903991325bd1b85d97bf  COPYING\n"
  },
  {
    "path": "package/orc/orc.mk",
    "content": "################################################################################\n#\n# orc\n#\n################################################################################\n\nORC_VERSION = 0.4.32\nORC_SOURCE = orc-$(ORC_VERSION).tar.xz\nORC_SITE = http://gstreamer.freedesktop.org/data/src/orc\nORC_LICENSE = BSD-2-Clause, BSD-3-Clause\nORC_LICENSE_FILES = COPYING\nORC_INSTALL_STAGING = YES\nORC_DEPENDENCIES = host-orc\nORC_CONF_OPTS = \\\n\t-Dbenchmarks=disabled \\\n\t-Dexamples=disabled \\\n\t-Dgtk_doc=disabled \\\n\t-Dorc-test=disabled \\\n\t-Dtests=disabled \\\n\t-Dtools=disabled\n\n$(eval $(meson-package))\n$(eval $(host-meson-package))\n"
  },
  {
    "path": "package/ortp/Config.in",
    "content": "config BR2_PACKAGE_ORTP\n\tbool \"oRTP\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # bctoolbox\n\tselect BR2_PACKAGE_BCTOOLBOX\n\thelp\n\t  oRTP, a Real-time Transport Protocol (RTP,RFC3550) library\n\n\t  https://www.linphone.org/technical-corner/ortp\n\ncomment \"ortp needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n\ncomment \"ortp needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/ortp/ortp.hash",
    "content": "# Locally calculated\nsha256  9b1d43f676a35920e2837abc0eb4d600d4d3e47d2621fa3b0897777cf587ee8d  ortp-4.4.8.tar.gz\nsha256  1b3782ccad7b8614100cda30d3faf42fc39f2e97932908c543005053b654ca68  LICENSE.txt\n"
  },
  {
    "path": "package/ortp/ortp.mk",
    "content": "################################################################################\n#\n# ortp\n#\n################################################################################\n\nORTP_VERSION = 4.4.8\nORTP_SITE = https://gitlab.linphone.org/BC/public/ortp/-/archive/$(ORTP_VERSION)\nORTP_LICENSE = GPL-3.0+\nORTP_LICENSE_FILES = LICENSE.txt\nORTP_INSTALL_STAGING = YES\nORTP_DEPENDENCIES = bctoolbox\nORTP_CONF_OPTS = \\\n\t-DENABLE_DOC=OFF \\\n\t-DENABLE_STRICT=OFF\n\nifeq ($(BR2_STATIC_LIBS),y)\nORTP_CONF_OPTS += -DENABLE_STATIC=ON -DENABLE_SHARED=OFF\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nORTP_CONF_OPTS += -DENABLE_STATIC=ON -DENABLE_SHARED=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nORTP_CONF_OPTS += -DENABLE_STATIC=OFF -DENABLE_SHARED=ON\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/osm2pgsql/Config.in",
    "content": "config BR2_PACKAGE_OSM2PGSQL\n\tbool \"osm2pgsql\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # boost, fmt, libosmium, protozero\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # boost, libosmium\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem\n\tdepends on BR2_USE_WCHAR # boost, fmt, libosmium\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\tselect BR2_PACKAGE_BZIP2\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_FMT\n\tselect BR2_PACKAGE_LIBOSMIUM\n\tselect BR2_PACKAGE_PROTOZERO\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  osm2pgsql is a tool for loading OpenStreetMap data into a\n\t  PostgreSQL / PostGIS database suitable for applications like\n\t  rendering into a map, geocoding with Nominatim,\n\t  or general analysis.\n\n\t  https://osm2pgsql.org\n\ncomment \"osm2pgsql needs a toolchain w/ C++,  wchar, threads, gcc >= 4.9\"\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_TOOLCHAIN_HAS_THREADS\n\ncomment \"osm2pgsql needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/osm2pgsql/osm2pgsql.hash",
    "content": "# Locally calculated\nsha256  4df0d332e5d77a9d363f2f06f199da0ac23a0dc7890b3472ea1b5123ac363f6e  osm2pgsql-1.5.1.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/osm2pgsql/osm2pgsql.mk",
    "content": "################################################################################\n#\n# osm2pgsql\n#\n################################################################################\n\nOSM2PGSQL_VERSION = 1.5.1\nOSM2PGSQL_SITE = $(call github,openstreetmap,osm2pgsql,$(OSM2PGSQL_VERSION))\nOSM2PGSQL_LICENSE = GPL-2.0+\nOSM2PGSQL_LICENSE_FILES = COPYING\nOSM2PGSQL_SUPPORTS_IN_SOURCE_BUILD = NO\n\nOSM2PGSQL_DEPENDENCIES = boost bzip2 expat fmt libosmium postgresql protozero zlib\n\nOSM2PGSQL_CONF_OPTS = \\\n\t-DBUILD_TESTS=OFF \\\n\t-DBUILD_COVERAGE=OFF \\\n\t-DEXTERNAL_FMT=ON \\\n\t-DEXTERNAL_LIBOSMIUM=ON \\\n\t-DEXTERNAL_PROTOZERO=ON\n\nifeq ($(BR2_PACKAGE_LUAJIT),y)\nOSM2PGSQL_DEPENDENCIES += luajit\nOSM2PGSQL_CONF_OPTS += -DWITH_LUA=ON -DWITH_LUAJIT=ON\nelse ifeq ($(BR2_PACKAGE_LUA),y)\nOSM2PGSQL_DEPENDENCIES += lua\nOSM2PGSQL_CONF_OPTS += -DWITH_LUA=ON -DWITH_LUAJIT=OFF\nelse\nOSM2PGSQL_CONF_OPTS += -DWITH_LUA=OFF -DWITH_LUAJIT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_PROJ),y)\nOSM2PGSQL_DEPENDENCIES += proj\nOSM2PGSQL_CONF_OPTS += -DUSE_PROJ_LIB=auto\nelse\nOSM2PGSQL_CONF_OPTS += -DUSE_PROJ_LIB=off\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/owfs/0001-Fix-compilation-with-GCC10.patch",
    "content": "From 43a4bc6b750c37f585d03b14941f3633ed5348d8 Mon Sep 17 00:00:00 2001\nFrom: \"Azamat H. Hackimov\" <azamat.hackimov@gmail.com>\nDate: Tue, 9 Jun 2020 11:30:38 +0300\nSubject: [PATCH] Fix compilation with GCC10\n\nFixed compilation with -fno-common, which enabled in GCC 10 by default.\nSee https://bugs.gentoo.org/707438.\n[Retrieved from:\nhttps://github.com/owfs/owfs/commit/43a4bc6b750c37f585d03b14941f3633ed5348d8]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n module/owserver/src/c/owserver.c       | 2 ++\n module/owserver/src/include/owserver.h | 2 +-\n 2 files changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/module/owserver/src/c/owserver.c b/module/owserver/src/c/owserver.c\nindex db29988e..2ed29161 100644\n--- a/module/owserver/src/c/owserver.c\n+++ b/module/owserver/src/c/owserver.c\n@@ -36,6 +36,8 @@\n \n #include \"owserver.h\"\n \n+pthread_mutex_t persistence_mutex ;\n+\n /* --- Prototypes ------------ */\n static void SetupAntiloop(int argc, char **argv);\n \ndiff --git a/module/owserver/src/include/owserver.h b/module/owserver/src/include/owserver.h\nindex 8be582f0..a257ed02 100644\n--- a/module/owserver/src/include/owserver.h\n+++ b/module/owserver/src/include/owserver.h\n@@ -18,7 +18,7 @@\n #include \"ow.h\"\n #include \"ow_connection.h\"\n \n-pthread_mutex_t persistence_mutex ;\n+extern pthread_mutex_t persistence_mutex ;\n #define PERSISTENCELOCK    _MUTEX_LOCK(   persistence_mutex ) ;\n #define PERSISTENCEUNLOCK  _MUTEX_UNLOCK( persistence_mutex ) ;\n \n"
  },
  {
    "path": "package/owfs/Config.in",
    "content": "config BR2_PACKAGE_OWFS\n\tbool \"owfs\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  OWFS is an easy way to use the powerful 1-wire system of\n\t  Dallas/Maxim.\n\n\t  OWFS is a simple and flexible program to monitor and control\n\t  the physical environment. You can write scripts to read\n\t  temperature, flash lights, write to an LCD, log and graph,\n\t  etc.\n\n\t  http://owfs.org/\n\ncomment \"owfs needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/owfs/S55owserver",
    "content": "NAME=\"owserver\"\nDAEMON=\"/usr/bin/${NAME}\"\nPID_F=\"/run/${NAME}.pid\"\n\nOWSERVER_ARGS=\n[ -r /etc/default/${NAME} ] && . /etc/default/${NAME}\n\ncase \"$1\" in\nstart)\n\tprintf \"Starting ${NAME}: \"\n\tif [ -z \"${OWSERVER_ARGS}\" ]; then\n\t\techo \"OWSERVER_ARGS must be set in defaults file\" 1>&2\n\t\texit 1\n\tfi\n\tstart-stop-daemon -S -x ${DAEMON} -- \\\n\t\t--pid_file ${PID_F} ${OWSERVER_ARGS}\n\t[ $? -eq 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\nstop)\n\tprintf \"Stopping ${NAME}: \"\n\tstart-stop-daemon -K -p ${PID_F}\n\t[ $? -eq 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\nrestart|reload)\n\t$0 stop\n\t$0 start\n\t;;\n*)\n\techo \"Usage: $0 {start|stop|restart|reload}\"\n\texit 1\nesac\n"
  },
  {
    "path": "package/owfs/S60owfs",
    "content": "NAME=\"owfs\"\nDAEMON=\"/usr/bin/${NAME}\"\nPID_F=\"/run/${NAME}.pid\"\nOWFS_MOUNTPOINT=\"/dev/1wire\"\nOWFS_DEVICES=\"-s localhost:4304\"\nOWFS_ARGS=\"\"\n\n[ -r /etc/default/${NAME} ] && . /etc/default/${NAME}\n\ncase \"$1\" in\nstart)\n\tprintf \"Starting ${NAME}: \"\n\t# Fuse may be in a module, so try to load it\n\tmodprobe -q fuse && printf \"[fuse] \"\n\tmkdir -p ${OWFS_MOUNTPOINT}\n\tstart-stop-daemon -S -x ${DAEMON} -- \\\n\t\t--pid_file ${PID_F} -m ${OWFS_MOUNTPOINT} ${OWFS_DEVICES} \\\n\t\t${OWFS_ARGS}\n\t[ $? -eq 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\nstop)\n\tprintf \"Stopping ${NAME}: \"\n\tstart-stop-daemon -K -p ${PID_F}\n\t[ $? -eq 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\nrestart|reload)\n\t$0 stop\n\t$0 start\n\t;;\n*)\n\techo \"Usage: $0 {start|stop|restart|reload}\"\n\texit 1\nesac\n"
  },
  {
    "path": "package/owfs/owfs.hash",
    "content": "# Locally calculated\nsha256 b8d33eba57d4a2f6c8a11ff23f233e3248bd75a42c8219b058a888846edd8717  owfs-3.2p3.tar.gz\nsha256 1f0527ab035eefb5197c68633d06f50f5077c719d82a99344702ceaca29150b9  COPYING\nsha256 8a6601b893d5784d931b2ede64a406fac463acfbb7014914e27de4d6e68457c3  COPYING.LIB\n"
  },
  {
    "path": "package/owfs/owfs.mk",
    "content": "################################################################################\n#\n# owfs\n#\n################################################################################\n\nOWFS_VERSION = 3.2p3\nOWFS_SITE = https://github.com/owfs/owfs/releases/download/v$(OWFS_VERSION)\nOWFS_DEPENDENCIES = host-pkgconf\nOWFS_CONF_OPTS = --disable-owperl --without-perl5 --disable-owtcl --without-tcl\n\n# owtcl license is declared in module/ownet/c/src/include/ow_functions.h\nOWFS_LICENSE = GPL-2.0+, LGPL-2.0 (owtcl)\nOWFS_LICENSE_FILES = COPYING COPYING.LIB\nOWFS_INSTALL_STAGING = YES\n\n# owfs PHP support is not PHP 7 compliant\n# https://sourceforge.net/p/owfs/support-requests/32/\nOWFS_CONF_OPTS += --disable-owphp --without-php\n\n# Skip man pages processing\nOWFS_CONF_ENV += ac_cv_path_SOELIM=true\n\nifeq ($(BR2_PACKAGE_LIBFUSE),y)\nOWFS_DEPENDENCIES += libfuse\nOWFS_CONF_OPTS += \\\n\t--enable-owfs \\\n\t--with-fuseinclude=$(STAGING_DIR)/usr/include \\\n\t--with-fuselib=$(STAGING_DIR)/usr/lib\ndefine OWFS_INSTALL_FUSE_INIT_SYSV\n\t$(INSTALL) -D -m 0755 $(OWFS_PKGDIR)S60owfs \\\n\t\t$(TARGET_DIR)/etc/init.d/S60owfs\nendef\ndefine OWFS_CREATE_MOUNTPOINT\n\tmkdir -p $(TARGET_DIR)/dev/1wire\nendef\nOWFS_POST_INSTALL_TARGET_HOOKS += OWFS_CREATE_MOUNTPOINT\nelse\nOWFS_CONF_OPTS += --disable-owfs\nendif\n\nifeq ($(BR2_PACKAGE_LIBFTDI1),y)\nOWFS_CONF_OPTS += \\\n\t--enable-ftdi \\\n\t--with-libftdi-config=$(STAGING_DIR)/usr/bin/libftdi1-config\nOWFS_DEPENDENCIES += libftdi1\nelse ifeq ($(BR2_PACKAGE_LIBFTDI),y)\nOWFS_CONF_OPTS += \\\n\t--enable-ftdi \\\n\t--with-libftdi-config=$(STAGING_DIR)/usr/bin/libftdi-config\nOWFS_DEPENDENCIES += libftdi\nelse\nOWFS_CONF_OPTS += --disable-ftdi\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nOWFS_CONF_OPTS += --enable-usb\nOWFS_DEPENDENCIES += libusb\nelse\nOWFS_CONF_OPTS += --disable-usb\nendif\n\nifeq ($(BR2_PACKAGE_AVAHI),y)\nOWFS_CONF_OPTS += --enable-avahi\nOWFS_DEPENDENCIES += avahi\nelse\nOWFS_CONF_OPTS += --disable-avahi\nendif\n\n# setup.py isn't python3 compliant\nifeq ($(BR2_PACKAGE_PYTHON),y)\nOWFS_CONF_OPTS += \\\n\t--enable-owpython \\\n\t--with-python \\\n\t--with-pythonconfig=$(STAGING_DIR)/usr/bin/python-config\nOWFS_MAKE_ENV += \\\n\tCC=\"$(TARGET_CC)\" \\\n\tPYTHONPATH=\"$(PYTHON_PATH)\" \\\n\t_python_sysroot=$(STAGING_DIR) \\\n\t_python_prefix=/usr \\\n\t_python_exec_prefix=/usr\nOWFS_DEPENDENCIES += python host-swig\n# The configure scripts finds PYSITEDIR as the python_lib directory of\n# host-python, and then prepends DESTDIR in front of it. So we end up\n# installing things in $(TARGET_DIR)/$(HOST_DIR)/lib/python which is\n# clearly wrong.\n# Patching owfs to do the right thing is not trivial, it's much easier to\n# override the PYSITEDIR variable in make.\nOWFS_EXTRA_MAKE_OPTS += PYSITEDIR=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages\n\nelse\nOWFS_CONF_OPTS += --disable-owpython --without-python\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\n# zeroconf support uses dlopen()\nOWFS_CONF_OPTS += --disable-zero\nendif\n\nOWFS_MAKE = $(MAKE) $(OWFS_EXTRA_MAKE_OPTS)\n\ndefine OWFS_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 $(OWFS_PKGDIR)S55owserver \\\n\t\t$(TARGET_DIR)/etc/init.d/S55owserver\n\t$(OWFS_INSTALL_FUSE_INIT_SYSV)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/owl-linux/0001-fix-for-linux-3.3.x.patch",
    "content": "Kernel commit b81693d9149c598302e8eb9c20cb20330d922c8e changed the\nnet_device_ops structure, removing the ndo_set_multicast_list callback. The\nndo_set_rx_mode has also been added to this structure.\n\nThe upshot of these changes is that owl-linux fails to compile with 3.3.x\nand later kernels.\n\nSigned-off-by: Simon Dawson <spdawson@gmail.com>\ndiff -Nurp a/owl_net.c b/owl_net.c\n--- a/owl_net.c\t2012-06-14 10:51:45.000000000 +0100\n+++ b/owl_net.c\t2012-07-20 13:16:28.772351464 +0100\n@@ -384,7 +384,9 @@ static const struct net_device_ops netde\n #endif /* OWL_CONFIG_IFUPDOWN */\n         .ndo_start_xmit         = owl_net_tx,\n         .ndo_get_stats          = owl_net_get_stats,\n+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)\n         .ndo_set_multicast_list = NULL,\n+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) */\n         .ndo_tx_timeout         = owl_net_tx_timeout,\n         .ndo_set_mac_address    = NULL,\n };\n"
  },
  {
    "path": "package/owl-linux/Config.in",
    "content": "config BR2_PACKAGE_OWL_LINUX\n\tbool \"owl-linux\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on (BR2_arm920t || BR2_arm922t || BR2_arm926t)\n\thelp\n\t  Linux kernel driver for the H&D Wireless SPB104 SD-card WiFi\n\t  SIP.\n\n\t  owl-linux requires the hidden kernel option WIRELESS_EXT\n\t  enabled.\n\n\t  http://linux.hd-wireless.se/bin/view/Linux/GettingStarted\n\ncomment \"owl-linux needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\tdepends on BR2_arm || BR2_armeb\n\ncomment \"owl-linux is only supported on ARM9 architecture\"\n\tdepends on !(BR2_arm920t || BR2_arm922t || BR2_arm926t)\n\tdepends on BR2_arm || BR2_armeb\n"
  },
  {
    "path": "package/owl-linux/owl-linux.hash",
    "content": "# locally computed\nsha256  a6b1bc6b3900954438a0f1a316bac5f74171125a88c80c35e137f4ca512dedc6  owl-linux-1.0.7.tar.gz\nsha256  092f1698328e0d4cc2d04ef1445207a9d278963284cd709fa88f1b8c9999264b  LICENSE\n"
  },
  {
    "path": "package/owl-linux/owl-linux.mk",
    "content": "################################################################################\n#\n# owl-linux\n#\n################################################################################\n\nOWL_LINUX_VERSION = 1.0.7\nOWL_LINUX_SITE = http://linux.hd-wireless.se/pub/Linux/DownloadDrivers\nOWL_LINUX_LICENSE = PROPRIETARY\nOWL_LINUX_LICENSE_FILES = LICENSE\nOWL_LINUX_REDISTRIBUTE = NO\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/p11-kit/0001-p11-kit-lists-c-Add-stdint-h-to-fix-compilation.patch",
    "content": "From 507c394cfcf4edffc5e4450c5d737e545c26b857 Mon Sep 17 00:00:00 2001\nFrom: Daniel Engberg <daniel.engberg.lists@pyret.net>\nDate: Sat, 12 Dec 2020 18:56:38 +0100\nSubject: [PATCH] p11-kit/lists.c: Add stdint.h to fix compilation\n\nAdd stdint.h otherwise compilation fails on FreeBSD 13-CURRENT with \"use of undeclared identifier 'SIZE_MAX'\"\n\nSigned-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>\n\n[Retrieved from:\nhttps://github.com/p11-glue/p11-kit/commit/507c394cfcf4edffc5e4450c5d737e545c26b857]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n p11-kit/lists.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/p11-kit/lists.c b/p11-kit/lists.c\nindex 365a6d89..1d9062be 100644\n--- a/p11-kit/lists.c\n+++ b/p11-kit/lists.c\n@@ -39,6 +39,7 @@\n \n #include <assert.h>\n #include <ctype.h>\n+#include <stdint.h>\n #include <string.h>\n #include <stdio.h>\n #include <stdlib.h>\n"
  },
  {
    "path": "package/p11-kit/Config.in",
    "content": "config BR2_PACKAGE_P11_KIT\n\tbool \"p11-kit\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Provides a way to load and enumerate PKCS#11 modules.\n\t  Provides a standard configuration setup for installing PKCS#11\n\t  modules in such a way that they're discoverable.\n\n\t  http://p11-glue.freedesktop.org/p11-kit.html\n\ncomment \"p11-kit needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/p11-kit/p11-kit.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  8a8f40153dd5a3f8e7c03e641f8db400133fb2a6a9ab2aee1b6d0cb0495ec6b6  p11-kit-0.23.22.tar.xz\n# Locally computed\nsha256  2e1ba993904df807a10c3eda1e5c272338edc35674b679773a8b3ad460731054  COPYING\n"
  },
  {
    "path": "package/p11-kit/p11-kit.mk",
    "content": "################################################################################\n#\n# p11-kit\n#\n################################################################################\n\nP11_KIT_VERSION = 0.23.22\nP11_KIT_SOURCE = p11-kit-$(P11_KIT_VERSION).tar.xz\nP11_KIT_SITE = https://github.com/p11-glue/p11-kit/releases/download/$(P11_KIT_VERSION)\nP11_KIT_INSTALL_STAGING = YES\nP11_KIT_CONF_OPTS = --disable-static\nP11_KIT_CONF_ENV = ac_cv_have_decl_program_invocation_short_name=yes \\\n\tac_cv_have_decl___progname=no\nP11_KIT_LICENSE = BSD-3-Clause\nP11_KIT_LICENSE_FILES = COPYING\nP11_KIT_CPE_ID_VENDOR = p11-kit_project\n\nifeq ($(BR2_PACKAGE_LIBFFI),y)\nP11_KIT_DEPENDENCIES += host-pkgconf libffi\nP11_KIT_CONF_OPTS += --with-libffi\nelse\nP11_KIT_CONF_OPTS += --without-libffi\nendif\n\nifeq ($(BR2_PACKAGE_LIBTASN1),y)\nP11_KIT_DEPENDENCIES += host-pkgconf libtasn1\nP11_KIT_CONF_OPTS += \\\n\t--enable-trust-module \\\n\t--with-libtasn1\nifeq ($(BR2_PACKAGE_CA_CERTIFICATES),y)\nP11_KIT_CONF_OPTS += --with-trust-paths=/etc/ssl/certs/ca-certificates.crt\nelse\nP11_KIT_CONF_OPTS += --without-trust-paths\nendif\nelse\nP11_KIT_CONF_OPTS += \\\n\t--disable-trust-module \\\n\t--without-libtasn1\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/p7zip/Config.in",
    "content": "config BR2_PACKAGE_P7ZIP\n\tbool \"p7zip\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_*_4 intrisics\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  p7zip is a quick port of the command line version of 7-zip\n\t  for Unix (see http://www.7-zip.org)\n\n\t  7-Zip is a file archiver with highest compression ratio.\n\n\t  http://sourceforge.net/projects/p7zip\n\ncomment \"p7zip needs a toolchain w/ threads, wchar, C++\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/p7zip/p7zip.hash",
    "content": "# Locally calculated\nsha256  ea029a2e21d2d6ad0a156f6679bd66836204aa78148a4c5e498fe682e77127ef  p7zip-17.04.tar.gz\nsha256  555806657dcf0f1e720b581c52643c195ec86ae3f00bd18cc66d2e0f88ffa210  DOC/License.txt\n"
  },
  {
    "path": "package/p7zip/p7zip.mk",
    "content": "################################################################################\n#\n# p7zip\n#\n################################################################################\n\nP7ZIP_VERSION = 17.04\nP7ZIP_SITE = $(call github,jinfeihan57,p7zip,v$(P7ZIP_VERSION))\nP7ZIP_LICENSE = LGPL-2.1+ with unRAR restriction\nP7ZIP_LICENSE_FILES = DOC/License.txt\nP7ZIP_CPE_ID_VENDOR = 7-zip\n\n# p7zip buildsystem is a mess: it plays dirty tricks with CFLAGS and\n# CXXFLAGS, so we can't pass them. Instead, it accepts ALLFLAGS_C\n# and ALLFLAGS_CPP as variables to pass the CFLAGS and CXXFLAGS.\ndefine P7ZIP_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" ALLFLAGS_C=\"$(TARGET_CFLAGS)\" \\\n\t\tCXX=\"$(TARGET_CXX)\" ALLFLAGS_CPP=\"$(TARGET_CXXFLAGS)\" \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\t\t-C $(@D) 7zr\nendef\n\ndefine P7ZIP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/bin/7zr $(TARGET_DIR)/usr/bin/7zr\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/p910nd/Config.in",
    "content": "config BR2_PACKAGE_P910ND\n\tbool \"p910nd\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  p910nd is a small printer daemon intended for diskless\n\t  workstations. Using ports 9100-9102, it accepts\n\t  print jobs and passes them directly to a USB printer.\n\n\t  http://p910nd.sourceforge.net/\n"
  },
  {
    "path": "package/p910nd/p910nd.hash",
    "content": "# Locally computed:\nsha256  4ac980a3ae24babae6f70f0a692625ece03a4a92c357fbb10d2e368386c3c26f  p910nd-0.97.tar.bz2\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/p910nd/p910nd.mk",
    "content": "################################################################################\n#\n# p910nd\n#\n################################################################################\n\nP910ND_VERSION = 0.97\nP910ND_SITE = http://downloads.sourceforge.net/project/p910nd/p910nd/$(P910ND_VERSION)\nP910ND_SOURCE = p910nd-$(P910ND_VERSION).tar.bz2\nP910ND_LICENSE = GPL-2.0\nP910ND_LICENSE_FILES = COPYING\n\ndefine P910ND_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine P910ND_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/p910nd $(TARGET_DIR)/usr/sbin/p910nd\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/paho-mqtt-c/Config.in",
    "content": "config BR2_PACKAGE_PAHO_MQTT_C\n\tbool \"paho-mqtt-c\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  MQTT client C library\n\n\t  https://eclipse.org/paho/clients/c/\n\ncomment \"paho-mqtt-c needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/paho-mqtt-c/paho-mqtt-c.hash",
    "content": "# Locally computed:\nsha256  386c9b5fa1cf6d0d516db12d57fd8f6a410dd0fdc5e9a2da870aae437a2535ed  paho-mqtt-c-1.3.9.tar.gz\nsha256  83bbba033dc985487e321b6dfde111772affb73460be48726299fed3da684b1c  edl-v10\nsha256  0becf16567beb77fa252b7664631dd177c8f9a1889e48995b45379c7130e5303  epl-v20\nsha256  bc0f3f447097eb82a29ad6c2f4929572bb548b6bd4c9e38fde1bf131a771b7a0  LICENSE\n"
  },
  {
    "path": "package/paho-mqtt-c/paho-mqtt-c.mk",
    "content": "################################################################################\n#\n# paho-mqtt-c\n#\n################################################################################\n\nPAHO_MQTT_C_VERSION = 1.3.9\nPAHO_MQTT_C_SITE = $(call github,eclipse,paho.mqtt.c,v$(PAHO_MQTT_C_VERSION))\nPAHO_MQTT_C_LICENSE = EPL-2.0 or BSD-3-Clause\nPAHO_MQTT_C_LICENSE_FILES = epl-v20 edl-v10 LICENSE\nPAHO_MQTT_C_INSTALL_STAGING = YES\n\nPAHO_MQTT_C_CONF_OPTS = \\\n\t-DPAHO_ENABLE_TESTING=FALSE \\\n\t-DPAHO_ENABLE_CPACK=FALSE \\\n\t-DPAHO_HIGH_PERFORMANCE=TRUE\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nPAHO_MQTT_C_DEPENDENCIES += openssl\nPAHO_MQTT_C_CONF_OPTS += -DPAHO_WITH_SSL=TRUE\nelse\nPAHO_MQTT_C_CONF_OPTS += -DPAHO_WITH_SSL=FALSE\nendif\n\nifeq ($(BR2_SHARED_LIBS),y)\nPAHO_MQTT_C_CONF_OPTS += \\\n\t-DPAHO_BUILD_SHARED=TRUE \\\n\t-DPAHO_BUILD_STATIC=FALSE\nelse ifeq ($(BR2_STATIC_LIBS),y)\nPAHO_MQTT_C_CONF_OPTS += \\\n\t-DPAHO_BUILD_SHARED=FALSE \\\n\t-DPAHO_BUILD_STATIC=TRUE\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nPAHO_MQTT_C_CONF_OPTS += \\\n\t-DPAHO_BUILD_SHARED=TRUE \\\n\t-DPAHO_BUILD_STATIC=TRUE\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/paho-mqtt-cpp/Config.in",
    "content": "config BR2_PACKAGE_PAHO_MQTT_CPP\n\tbool \"paho-mqtt-cpp\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_PAHO_MQTT_C\n\thelp\n\t  MQTT client C++ library\n\n\t  https://eclipse.org/paho/clients/cpp/\n\ncomment \"paho-mqtt-cpp needs a toolchain w/ threads, C++\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\ncomment \"paho-mqtt-cpp needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/paho-mqtt-cpp/paho-mqtt-cpp.hash",
    "content": "# Locally computed:\nsha256  435e97e4d5b1da13daa26cadd3e83fe9d154930abaa78b8ff1b8c854b5345d8b  paho-mqtt-cpp-1.2.0.tar.gz\nsha256  83bbba033dc985487e321b6dfde111772affb73460be48726299fed3da684b1c  edl-v10\nsha256  44277b2bec6093e4ac313afec251a4de599d24c4e768f8574d95b13a9d2d97b5  epl-v10\n"
  },
  {
    "path": "package/paho-mqtt-cpp/paho-mqtt-cpp.mk",
    "content": "################################################################################\n#\n# paho-mqtt-cpp\n#\n################################################################################\n\nPAHO_MQTT_CPP_VERSION = 1.2.0\nPAHO_MQTT_CPP_SITE = $(call github,eclipse,paho.mqtt.cpp,v$(PAHO_MQTT_CPP_VERSION))\nPAHO_MQTT_CPP_LICENSE = EPL-1.0 or BSD-3-Clause\nPAHO_MQTT_CPP_LICENSE_FILES = epl-v10 edl-v10\nPAHO_MQTT_CPP_INSTALL_STAGING = YES\nPAHO_MQTT_CPP_DEPENDENCIES = paho-mqtt-c\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nPAHO_MQTT_CPP_DEPENDENCIES += openssl\nPAHO_MQTT_CPP_CONF_OPTS += -DPAHO_WITH_SSL=TRUE\nelse\nPAHO_MQTT_CPP_CONF_OPTS += -DPAHO_WITH_SSL=FALSE\nendif\n\nifeq ($(BR2_SHARED_LIBS),y)\nPAHO_MQTT_CPP_CONF_OPTS += \\\n\t-DPAHO_BUILD_SHARED=TRUE \\\n\t-DPAHO_BUILD_STATIC=FALSE\nelse ifeq ($(BR2_STATIC_LIBS),y)\nPAHO_MQTT_CPP_CONF_OPTS += \\\n\t-DPAHO_BUILD_SHARED=FALSE \\\n\t-DPAHO_BUILD_STATIC=TRUE\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nPAHO_MQTT_CPP_CONF_OPTS += \\\n\t-DPAHO_BUILD_SHARED=TRUE \\\n\t-DPAHO_BUILD_STATIC=TRUE\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/pamtester/Config.in",
    "content": "config BR2_PACKAGE_PAMTESTER\n\tbool \"pamtester\"\n\tdepends on BR2_PACKAGE_LINUX_PAM\n\thelp\n\t  A tiny utility for testing pluggable authentication modules\n\t  (PAM) facility. While specifically designed to help PAM module\n\t  authors to test their modules, that might also be handy for\n\t  system administrators interested in building a centralised\n\t  authentication system using common standards such as NIS, SASL\n\t  and LDAP.\n\n\t  http://pamtester.sourceforge.net/\n\ncomment \"pamtester depends on linux-pam\"\n\tdepends on !BR2_PACKAGE_LINUX_PAM\n"
  },
  {
    "path": "package/pamtester/pamtester.hash",
    "content": "# from https://sourceforge.net/projects/pamtester/files/pamtester/0.1.2/\nsha1   33bcc610d7f208b50a0a23c144bdbd1e2cae4ac6  pamtester-0.1.2.tar.gz\nsha256 1e3922a8ab0907c1f3bcc3e00005ef88930e50d0890f40a6a39f5f83b05f05cc LICENSE\n"
  },
  {
    "path": "package/pamtester/pamtester.mk",
    "content": "################################################################################\n#\n# pamtester\n#\n################################################################################\n\nPAMTESTER_VERSION = 0.1.2\nPAMTESTER_SITE = https://download.sourceforge.net/project/pamtester/pamtester/$(PAMTESTER_VERSION)\nPAMTESTER_DEPENDENCIES = linux-pam\nPAMTESTER_LICENSE = BSD-3-Clause\nPAMTESTER_LICENSE_FILES = LICENSE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/pango/Config.in",
    "content": "config BR2_PACKAGE_PANGO\n\tbool \"pango\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tdepends on BR2_INSTALL_LIBSTDCPP # freetype support\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # harfbuzz\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBFRIBIDI\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_HARFBUZZ\n\tselect BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7\n\thelp\n\t  Pango is a library for laying out and rendering of text,\n\t  with an emphasis on internationalization. Pango can be used\n\t  anywhere that text layout is needed, though most of the work\n\t  on Pango so far has been done in the context of the GTK+\n\t  widget toolkit. Pango forms the core of text and font\n\t  handling for GTK+-2.x.\n\n\t  https://pango.gnome.org/\n\ncomment \"pango needs a toolchain w/ wchar, threads, C++, gcc >= 4.8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \\\n\t\t!BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/pango/pango.hash",
    "content": "# From https://ftp.acc.umu.se/pub/GNOME/sources/pango/1.48/pango-1.48.10.sha256sum\nsha256  21e1f5798bcdfda75eabc4280514b0896ab56f656d4e7e66030b9a2535ecdc98  pango-1.48.10.tar.xz\n\n# Locally computed\nsha256  d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5  COPYING\n"
  },
  {
    "path": "package/pango/pango.mk",
    "content": "################################################################################\n#\n# pango\n#\n################################################################################\n\nPANGO_VERSION_MAJOR = 1.48\nPANGO_VERSION = $(PANGO_VERSION_MAJOR).10\nPANGO_SOURCE = pango-$(PANGO_VERSION).tar.xz\nPANGO_SITE = http://ftp.gnome.org/pub/GNOME/sources/pango/$(PANGO_VERSION_MAJOR)\nPANGO_INSTALL_STAGING = YES\nPANGO_LICENSE = LGPL-2.0+\nPANGO_LICENSE_FILES = COPYING\nPANGO_CPE_ID_VENDOR = pango\n\nPANGO_CONF_OPTS = -Dfontconfig=enabled\nHOST_PANGO_CONF_OPTS = -Dfontconfig=enabled -Dintrospection=disabled\n\nPANGO_DEPENDENCIES = \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\thost-pkgconf \\\n\tlibglib2 \\\n\tlibfribidi \\\n\tcairo \\\n\tharfbuzz \\\n\tfontconfig \\\n\tfreetype\nHOST_PANGO_DEPENDENCIES = \\\n\thost-pkgconf \\\n\thost-libglib2 \\\n\thost-libfribidi \\\n\thost-cairo \\\n\thost-harfbuzz \\\n\thost-fontconfig \\\n\thost-freetype\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nPANGO_CONF_OPTS += -Dintrospection=enabled\nPANGO_DEPENDENCIES += gobject-introspection\nelse\nPANGO_CONF_OPTS += -Dintrospection=disabled\nendif\n\nifeq ($(BR2_PACKAGE_XORG7),y)\nPANGO_DEPENDENCIES += xlib_libX11\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFT)$(BR2_PACKAGE_XLIB_LIBXRENDER),yy)\nPANGO_DEPENDENCIES += xlib_libXft xlib_libXrender\nendif\n\n$(eval $(meson-package))\n$(eval $(host-meson-package))\n"
  },
  {
    "path": "package/pangomm/Config.in",
    "content": "config BR2_PACKAGE_PANGOMM\n\tbool \"pangomm\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz\n\tdepends on BR2_INSTALL_LIBSTDCPP # glibmm/pango\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # *mm/pango -> libglib2\n\tdepends on BR2_USE_MMU # *mm/pango -> libglib2\n\tdepends on BR2_USE_WCHAR # *mm/pango -> libglib2\n\tselect BR2_PACKAGE_CAIROMM\n\tselect BR2_PACKAGE_GLIBMM\n\tselect BR2_PACKAGE_PANGO\n\tselect BR2_PACKAGE_LIBSIGC\n\thelp\n\t  The pangomm package is a set of C++ bindings for Pango.\n\n\t  http://www.gtkmm.org/\n\ncomment \"pangomm needs a toolchain w/ C++, wchar, threads, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/pangomm/pangomm.hash",
    "content": "# From http://ftp.gnome.org/pub/gnome/sources/pangomm/2.40/pangomm-2.40.1.sha256sum\nsha256  9762ee2a2d5781be6797448d4dd2383ce14907159b30bc12bf6b08e7227be3af  pangomm-2.40.1.tar.xz\n# Locally computed\nsha256  5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509  COPYING\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING.tools\n"
  },
  {
    "path": "package/pangomm/pangomm.mk",
    "content": "################################################################################\n#\n# pangomm\n#\n################################################################################\n\nPANGOMM_VERSION_MAJOR = 2.40\nPANGOMM_VERSION = $(PANGOMM_VERSION_MAJOR).1\nPANGOMM_SOURCE = pangomm-$(PANGOMM_VERSION).tar.xz\nPANGOMM_SITE = http://ftp.gnome.org/pub/gnome/sources/pangomm/$(PANGOMM_VERSION_MAJOR)\nPANGOMM_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools)\nPANGOMM_LICENSE_FILES = COPYING COPYING.tools\nPANGOMM_INSTALL_STAGING = YES\nPANGOMM_DEPENDENCIES = glibmm cairomm libsigc pango host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/parprouted/Config.in",
    "content": "config BR2_PACKAGE_PARPROUTED\n\tbool \"parprouted\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  parprouted is a daemon for transparent IP (Layer 3) proxy ARP\n\t  bridging. This is useful for creation of transparent firewalls\n\t  and bridging networks with different MAC protocols. Also,\n\t  unlike standard bridging, proxy ARP bridging allows to bridge\n\t  Ethernet networks behind wireless nodes without using WDS or\n\t  layer 2 bridging.\n\n\t  https://www.hazard.maks.net/parprouted\n\ncomment \"parprouted needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/parprouted/parprouted.hash",
    "content": "# Locally computed\nsha256  d63643c95d4149a3d71112da5892f459433456bf0279bfa304625f109178defc  parprouted-0.7.tar.gz\nsha256  dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa  COPYING\n"
  },
  {
    "path": "package/parprouted/parprouted.mk",
    "content": "################################################################################\n#\n# parprouted\n#\n################################################################################\n\nPARPROUTED_VERSION = 0.7\nPARPROUTED_SITE = https://www.hazard.maks.net/parprouted\nPARPROUTED_LICENSE = GPL-2.0\nPARPROUTED_LICENSE_FILES = COPYING\n\ndefine PARPROUTED_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all\nendef\n\ndefine PARPROUTED_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/parprouted $(TARGET_DIR)/usr/sbin/parprouted\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/parted/Config.in",
    "content": "config BR2_PACKAGE_PARTED\n\tbool \"parted\"\n\tdepends on BR2_ENABLE_LOCALE\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  parted, the GNU partition resizing program\n\n\t  http://www.gnu.org/software/parted/\n\ncomment \"parted needs a toolchain w/ locale, wchar\"\n\tdepends on !BR2_ENABLE_LOCALE || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/parted/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PARTED\n\tbool \"host parted\"\n\thelp\n\t  parted, the GNU partition resizing program\n\n\t  http://www.gnu.org/software/parted/\n"
  },
  {
    "path": "package/parted/parted.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\t57e2b4bd87018625c515421d4524f6e3b55175b472302056391c5f7eccb83d44  parted-3.3.tar.xz\n\n# Locally calculated\nsha256\t0abbff814cd00e2b0b6d08395af2b419c1a92026c4b4adacbb65ccda45fa58cf  COPYING\n"
  },
  {
    "path": "package/parted/parted.mk",
    "content": "################################################################################\n#\n# parted\n#\n################################################################################\n\nPARTED_VERSION = 3.3\nPARTED_SOURCE = parted-$(PARTED_VERSION).tar.xz\nPARTED_SITE = $(BR2_GNU_MIRROR)/parted\nPARTED_DEPENDENCIES = host-pkgconf util-linux\nPARTED_INSTALL_STAGING = YES\nPARTED_LICENSE = GPL-3.0+\nPARTED_LICENSE_FILES = COPYING\nPARTED_CPE_ID_VENDOR = parted_project\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nPARTED_DEPENDENCIES += readline\nPARTED_CONF_OPTS += --with-readline\nelse\nPARTED_CONF_OPTS += --without-readline\nendif\n\nifeq ($(BR2_PACKAGE_LVM2),y)\nPARTED_DEPENDENCIES += lvm2\nPARTED_CONF_OPTS += --enable-device-mapper\nelse\nPARTED_CONF_OPTS += --disable-device-mapper\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nPARTED_DEPENDENCIES += libiconv\nendif\n\nHOST_PARTED_DEPENDENCIES = host-pkgconf host-util-linux\nHOST_PARTED_CONF_OPTS += \\\n\t--without-readline \\\n\t--disable-device-mapper\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/patch/0001-Fix-segfault-with-mangled-rename-patch.patch",
    "content": "From f290f48a621867084884bfff87f8093c15195e6a Mon Sep 17 00:00:00 2001\nFrom: Andreas Gruenbacher <agruen@gnu.org>\nDate: Mon, 12 Feb 2018 16:48:24 +0100\nSubject: [PATCH] Fix segfault with mangled rename patch\n\nhttp://savannah.gnu.org/bugs/?53132\n* src/pch.c (intuit_diff_type): Ensure that two filenames are specified\nfor renames and copies (fix the existing check).\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nPatch status: upstream commit f290f48a6218\n\n src/pch.c | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/src/pch.c b/src/pch.c\nindex ff9ed2cebb8a..bc6278c4032c 100644\n--- a/src/pch.c\n+++ b/src/pch.c\n@@ -974,7 +974,8 @@ intuit_diff_type (bool need_header, mode_t *p_file_type)\n     if ((pch_rename () || pch_copy ())\n \t&& ! inname\n \t&& ! ((i == OLD || i == NEW) &&\n-\t      p_name[! reverse] &&\n+\t      p_name[reverse] && p_name[! reverse] &&\n+\t      name_is_valid (p_name[reverse]) &&\n \t      name_is_valid (p_name[! reverse])))\n       {\n \tsay (\"Cannot %s file without two valid file names\\n\", pch_rename () ? \"rename\" : \"copy\");\n-- \n2.16.1\n\n"
  },
  {
    "path": "package/patch/0002-Allow-input-files-to-be-missing-for-ed-style-patches.patch",
    "content": "From b5a91a01e5d0897facdd0f49d64b76b0f02b43e1 Mon Sep 17 00:00:00 2001\nFrom: Andreas Gruenbacher <agruen@gnu.org>\nDate: Fri, 6 Apr 2018 11:34:51 +0200\nSubject: [PATCH] Allow input files to be missing for ed-style patches\n\n* src/pch.c (do_ed_script): Allow input files to be missing so that new\nfiles will be created as with non-ed-style patches.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: commit b5a91a01e5d0\n\n src/pch.c | 8 +++++---\n 1 file changed, 5 insertions(+), 3 deletions(-)\n\ndiff --git a/src/pch.c b/src/pch.c\nindex bc6278c4032c..0c5cc2623079 100644\n--- a/src/pch.c\n+++ b/src/pch.c\n@@ -2394,9 +2394,11 @@ do_ed_script (char const *inname, char const *outname,\n \n     if (! dry_run && ! skip_rest_of_patch) {\n \tint exclusive = *outname_needs_removal ? 0 : O_EXCL;\n-\tassert (! inerrno);\n-\t*outname_needs_removal = true;\n-\tcopy_file (inname, outname, 0, exclusive, instat.st_mode, true);\n+\tif (inerrno != ENOENT)\n+\t  {\n+\t    *outname_needs_removal = true;\n+\t    copy_file (inname, outname, 0, exclusive, instat.st_mode, true);\n+\t  }\n \tsprintf (buf, \"%s %s%s\", editor_program,\n \t\t verbosity == VERBOSE ? \"\" : \"- \",\n \t\t outname);\n-- \n2.16.3\n\n"
  },
  {
    "path": "package/patch/0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch",
    "content": "From 123eaff0d5d1aebe128295959435b9ca5909c26d Mon Sep 17 00:00:00 2001\nFrom: Andreas Gruenbacher <agruen@gnu.org>\nDate: Fri, 6 Apr 2018 12:14:49 +0200\nSubject: [PATCH] Fix arbitrary command execution in ed-style patches\n (CVE-2018-1000156)\n\n* src/pch.c (do_ed_script): Write ed script to a temporary file instead\nof piping it to ed: this will cause ed to abort on invalid commands\ninstead of rejecting them and carrying on.\n* tests/ed-style: New test case.\n* tests/Makefile.am (TESTS): Add test case.\n\n[baruch: drop test hunks to avoid autoreconf]\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: commit 123eaff0d5d1\n\n src/pch.c         | 91 ++++++++++++++++++++++++++++++++++++++++---------------\n tests/Makefile.am |  1 +\n tests/ed-style    | 41 +++++++++++++++++++++++++\n 3 files changed, 108 insertions(+), 25 deletions(-)\n create mode 100644 tests/ed-style\n\ndiff --git a/src/pch.c b/src/pch.c\nindex 0c5cc2623079..4fd5a05a6f5c 100644\n--- a/src/pch.c\n+++ b/src/pch.c\n@@ -33,6 +33,7 @@\n # include <io.h>\n #endif\n #include <safe.h>\n+#include <sys/wait.h>\n \n #define INITHUNKMAX 125\t\t\t/* initial dynamic allocation size */\n \n@@ -2389,24 +2390,28 @@ do_ed_script (char const *inname, char const *outname,\n     static char const editor_program[] = EDITOR_PROGRAM;\n \n     file_offset beginning_of_this_line;\n-    FILE *pipefp = 0;\n     size_t chars_read;\n+    FILE *tmpfp = 0;\n+    char const *tmpname;\n+    int tmpfd;\n+    pid_t pid;\n+\n+    if (! dry_run && ! skip_rest_of_patch)\n+      {\n+\t/* Write ed script to a temporary file.  This causes ed to abort on\n+\t   invalid commands such as when line numbers or ranges exceed the\n+\t   number of available lines.  When ed reads from a pipe, it rejects\n+\t   invalid commands and treats the next line as a new command, which\n+\t   can lead to arbitrary command execution.  */\n+\n+\ttmpfd = make_tempfile (&tmpname, 'e', NULL, O_RDWR | O_BINARY, 0);\n+\tif (tmpfd == -1)\n+\t  pfatal (\"Can't create temporary file %s\", quotearg (tmpname));\n+\ttmpfp = fdopen (tmpfd, \"w+b\");\n+\tif (! tmpfp)\n+\t  pfatal (\"Can't open stream for file %s\", quotearg (tmpname));\n+      }\n \n-    if (! dry_run && ! skip_rest_of_patch) {\n-\tint exclusive = *outname_needs_removal ? 0 : O_EXCL;\n-\tif (inerrno != ENOENT)\n-\t  {\n-\t    *outname_needs_removal = true;\n-\t    copy_file (inname, outname, 0, exclusive, instat.st_mode, true);\n-\t  }\n-\tsprintf (buf, \"%s %s%s\", editor_program,\n-\t\t verbosity == VERBOSE ? \"\" : \"- \",\n-\t\t outname);\n-\tfflush (stdout);\n-\tpipefp = popen(buf, binary_transput ? \"wb\" : \"w\");\n-\tif (!pipefp)\n-\t  pfatal (\"Can't open pipe to %s\", quotearg (buf));\n-    }\n     for (;;) {\n \tchar ed_command_letter;\n \tbeginning_of_this_line = file_tell (pfp);\n@@ -2417,14 +2422,14 @@ do_ed_script (char const *inname, char const *outname,\n \t}\n \ted_command_letter = get_ed_command_letter (buf);\n \tif (ed_command_letter) {\n-\t    if (pipefp)\n-\t\tif (! fwrite (buf, sizeof *buf, chars_read, pipefp))\n+\t    if (tmpfp)\n+\t\tif (! fwrite (buf, sizeof *buf, chars_read, tmpfp))\n \t\t    write_fatal ();\n \t    if (ed_command_letter != 'd' && ed_command_letter != 's') {\n \t        p_pass_comments_through = true;\n \t\twhile ((chars_read = get_line ()) != 0) {\n-\t\t    if (pipefp)\n-\t\t\tif (! fwrite (buf, sizeof *buf, chars_read, pipefp))\n+\t\t    if (tmpfp)\n+\t\t\tif (! fwrite (buf, sizeof *buf, chars_read, tmpfp))\n \t\t\t    write_fatal ();\n \t\t    if (chars_read == 2  &&  strEQ (buf, \".\\n\"))\n \t\t\tbreak;\n@@ -2437,13 +2442,49 @@ do_ed_script (char const *inname, char const *outname,\n \t    break;\n \t}\n     }\n-    if (!pipefp)\n+    if (!tmpfp)\n       return;\n-    if (fwrite (\"w\\nq\\n\", sizeof (char), (size_t) 4, pipefp) == 0\n-\t|| fflush (pipefp) != 0)\n+    if (fwrite (\"w\\nq\\n\", sizeof (char), (size_t) 4, tmpfp) == 0\n+\t|| fflush (tmpfp) != 0)\n       write_fatal ();\n-    if (pclose (pipefp) != 0)\n-      fatal (\"%s FAILED\", editor_program);\n+\n+    if (lseek (tmpfd, 0, SEEK_SET) == -1)\n+      pfatal (\"Can't rewind to the beginning of file %s\", quotearg (tmpname));\n+\n+    if (! dry_run && ! skip_rest_of_patch) {\n+\tint exclusive = *outname_needs_removal ? 0 : O_EXCL;\n+\t*outname_needs_removal = true;\n+\tif (inerrno != ENOENT)\n+\t  {\n+\t    *outname_needs_removal = true;\n+\t    copy_file (inname, outname, 0, exclusive, instat.st_mode, true);\n+\t  }\n+\tsprintf (buf, \"%s %s%s\", editor_program,\n+\t\t verbosity == VERBOSE ? \"\" : \"- \",\n+\t\t outname);\n+\tfflush (stdout);\n+\n+\tpid = fork();\n+\tif (pid == -1)\n+\t  pfatal (\"Can't fork\");\n+\telse if (pid == 0)\n+\t  {\n+\t    dup2 (tmpfd, 0);\n+\t    execl (\"/bin/sh\", \"sh\", \"-c\", buf, (char *) 0);\n+\t    _exit (2);\n+\t  }\n+\telse\n+\t  {\n+\t    int wstatus;\n+\t    if (waitpid (pid, &wstatus, 0) == -1\n+\t        || ! WIFEXITED (wstatus)\n+\t\t|| WEXITSTATUS (wstatus) != 0)\n+\t      fatal (\"%s FAILED\", editor_program);\n+\t  }\n+    }\n+\n+    fclose (tmpfp);\n+    safe_unlink (tmpname);\n \n     if (ofp)\n       {\n-- \n2.16.3\n\n"
  },
  {
    "path": "package/patch/0004-Invoke-ed-directly-instead-of-using-the-shell.patch",
    "content": "From 3fcd042d26d70856e826a42b5f93dc4854d80bf0 Mon Sep 17 00:00:00 2001\nFrom: Andreas Gruenbacher <agruen@gnu.org>\nDate: Fri, 6 Apr 2018 19:36:15 +0200\nSubject: Invoke ed directly instead of using the shell\n\n* src/pch.c (do_ed_script): Invoke ed directly instead of using a shell\ncommand to avoid quoting vulnerabilities.\n[Retrieved from:\nhttps://git.savannah.gnu.org/cgit/patch.git/commit/?id=3fcd042d26d70856e826a42b5f93dc4854d80bf0]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/pch.c | 6 ++----\n 1 file changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/src/pch.c b/src/pch.c\nindex 4fd5a05..16e001a 100644\n--- a/src/pch.c\n+++ b/src/pch.c\n@@ -2459,9 +2459,6 @@ do_ed_script (char const *inname, char const *outname,\n \t    *outname_needs_removal = true;\n \t    copy_file (inname, outname, 0, exclusive, instat.st_mode, true);\n \t  }\n-\tsprintf (buf, \"%s %s%s\", editor_program,\n-\t\t verbosity == VERBOSE ? \"\" : \"- \",\n-\t\t outname);\n \tfflush (stdout);\n \n \tpid = fork();\n@@ -2470,7 +2467,8 @@ do_ed_script (char const *inname, char const *outname,\n \telse if (pid == 0)\n \t  {\n \t    dup2 (tmpfd, 0);\n-\t    execl (\"/bin/sh\", \"sh\", \"-c\", buf, (char *) 0);\n+\t    assert (outname[0] != '!' && outname[0] != '-');\n+\t    execlp (editor_program, editor_program, \"-\", outname, (char  *) NULL);\n \t    _exit (2);\n \t  }\n \telse\n-- \ncgit v1.2.1\n\n"
  },
  {
    "path": "package/patch/0005-Don-t-follow-symlinks-unless--follow-symlinks-is-given.patch",
    "content": "From dce4683cbbe107a95f1f0d45fabc304acfb5d71a Mon Sep 17 00:00:00 2001\nFrom: Andreas Gruenbacher <agruen@gnu.org>\nDate: Mon, 15 Jul 2019 16:21:48 +0200\nSubject: Don't follow symlinks unless --follow-symlinks is given\n\n* src/inp.c (plan_a, plan_b), src/util.c (copy_to_fd, copy_file,\nappend_to_file): Unless the --follow-symlinks option is given, open files with\nthe O_NOFOLLOW flag to avoid following symlinks.  So far, we were only doing\nthat consistently for input files.\n* src/util.c (create_backup): When creating empty backup files, (re)create them\nwith O_CREAT | O_EXCL to avoid following symlinks in that case as well.\n[Retrieved from:\nhttps://git.savannah.gnu.org/cgit/patch.git/commit/?id=dce4683cbbe107a95f1f0d45fabc304acfb5d71a]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/inp.c  | 12 ++++++++++--\n src/util.c | 14 +++++++++++---\n 2 files changed, 21 insertions(+), 5 deletions(-)\n\ndiff --git a/src/inp.c b/src/inp.c\nindex 32d0919..22d7473 100644\n--- a/src/inp.c\n+++ b/src/inp.c\n@@ -238,8 +238,13 @@ plan_a (char const *filename)\n     {\n       if (S_ISREG (instat.st_mode))\n         {\n-\t  int ifd = safe_open (filename, O_RDONLY|binary_transput, 0);\n+\t  int flags = O_RDONLY | binary_transput;\n \t  size_t buffered = 0, n;\n+\t  int ifd;\n+\n+\t  if (! follow_symlinks)\n+\t    flags |= O_NOFOLLOW;\n+\t  ifd = safe_open (filename, flags, 0);\n \t  if (ifd < 0)\n \t    pfatal (\"can't open file %s\", quotearg (filename));\n \n@@ -340,6 +345,7 @@ plan_a (char const *filename)\n static void\n plan_b (char const *filename)\n {\n+  int flags = O_RDONLY | binary_transput;\n   int ifd;\n   FILE *ifp;\n   int c;\n@@ -353,7 +359,9 @@ plan_b (char const *filename)\n \n   if (instat.st_size == 0)\n     filename = NULL_DEVICE;\n-  if ((ifd = safe_open (filename, O_RDONLY | binary_transput, 0)) < 0\n+  if (! follow_symlinks)\n+    flags |= O_NOFOLLOW;\n+  if ((ifd = safe_open (filename, flags, 0)) < 0\n       || ! (ifp = fdopen (ifd, binary_transput ? \"rb\" : \"r\")))\n     pfatal (\"Can't open file %s\", quotearg (filename));\n   if (TMPINNAME_needs_removal)\ndiff --git a/src/util.c b/src/util.c\nindex 1cc08ba..fb38307 100644\n--- a/src/util.c\n+++ b/src/util.c\n@@ -388,7 +388,7 @@ create_backup (char const *to, const struct stat *to_st, bool leave_original)\n \n \t  try_makedirs_errno = ENOENT;\n \t  safe_unlink (bakname);\n-\t  while ((fd = safe_open (bakname, O_CREAT | O_WRONLY | O_TRUNC, 0666)) < 0)\n+\t  while ((fd = safe_open (bakname, O_CREAT | O_EXCL | O_WRONLY | O_TRUNC, 0666)) < 0)\n \t    {\n \t      if (errno != try_makedirs_errno)\n \t\tpfatal (\"Can't create file %s\", quotearg (bakname));\n@@ -579,10 +579,13 @@ create_file (char const *file, int open_flags, mode_t mode,\n static void\n copy_to_fd (const char *from, int tofd)\n {\n+  int from_flags = O_RDONLY | O_BINARY;\n   int fromfd;\n   ssize_t i;\n \n-  if ((fromfd = safe_open (from, O_RDONLY | O_BINARY, 0)) < 0)\n+  if (! follow_symlinks)\n+    from_flags |= O_NOFOLLOW;\n+  if ((fromfd = safe_open (from, from_flags, 0)) < 0)\n     pfatal (\"Can't reopen file %s\", quotearg (from));\n   while ((i = read (fromfd, buf, bufsize)) != 0)\n     {\n@@ -625,6 +628,8 @@ copy_file (char const *from, char const *to, struct stat *tost,\n   else\n     {\n       assert (S_ISREG (mode));\n+      if (! follow_symlinks)\n+\tto_flags |= O_NOFOLLOW;\n       tofd = create_file (to, O_WRONLY | O_BINARY | to_flags, mode,\n \t\t\t  to_dir_known_to_exist);\n       copy_to_fd (from, tofd);\n@@ -640,9 +645,12 @@ copy_file (char const *from, char const *to, struct stat *tost,\n void\n append_to_file (char const *from, char const *to)\n {\n+  int to_flags = O_WRONLY | O_APPEND | O_BINARY;\n   int tofd;\n \n-  if ((tofd = safe_open (to, O_WRONLY | O_BINARY | O_APPEND, 0)) < 0)\n+  if (! follow_symlinks)\n+    to_flags |= O_NOFOLLOW;\n+  if ((tofd = safe_open (to, to_flags, 0)) < 0)\n     pfatal (\"Can't reopen file %s\", quotearg (to));\n   copy_to_fd (from, tofd);\n   if (close (tofd) != 0)\n-- \ncgit v1.2.1\n\n"
  },
  {
    "path": "package/patch/Config.in",
    "content": "config BR2_PACKAGE_PATCH\n\tbool \"patch\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  Take patch files (containing difference listings) and apply\n\t  them to original files, producing patched versions.\n\n\t  http://www.gnu.org/software/patch/\n\ncomment \"patch needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/patch/patch.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\tac610bda97abe0d9f6b7c963255a11dcb196c25e337c61f94e4778d632f1d8fd\tpatch-2.7.6.tar.xz\n# Locally calculated\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\tCOPYING\n"
  },
  {
    "path": "package/patch/patch.mk",
    "content": "################################################################################\n#\n# patch\n#\n################################################################################\n\nPATCH_VERSION = 2.7.6\nPATCH_SOURCE = patch-$(PATCH_VERSION).tar.xz\nPATCH_SITE = $(BR2_GNU_MIRROR)/patch\nPATCH_LICENSE = GPL-3.0+\nPATCH_LICENSE_FILES = COPYING\nPATCH_CPE_ID_VENDOR = gnu\n\n# 0001-Fix-segfault-with-mangled-rename-patch.patch\nPATCH_IGNORE_CVES += CVE-2018-6951\n\n# 0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch\nPATCH_IGNORE_CVES += CVE-2018-1000156\n\n# 0004-Invoke-ed-directly-instead-of-using-the-shell.patch\nPATCH_IGNORE_CVES += CVE-2018-20969 CVE-2019-13638\n\n# 0005-Don-t-follow-symlinks-unless--follow-symlinks-is-given.patch\nPATCH_IGNORE_CVES += CVE-2019-13636\n\nifeq ($(BR2_PACKAGE_ATTR),y)\nPATCH_CONF_OPTS += --enable-xattr\nPATCH_DEPENDENCIES += attr\nelse\nPATCH_CONF_OPTS += --disable-xattr\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/patchelf/0001-Remove-apparently-incorrect-usage-of-static.patch",
    "content": "From 2480efa8411523cf046094492192a5ee451aae5d Mon Sep 17 00:00:00 2001\nFrom: Eelco Dolstra <eelco.dolstra@logicblox.com>\nDate: Mon, 19 Sep 2016 17:31:37 +0200\nSubject: [PATCH] Remove apparently incorrect usage of \"static\"\n\n[Upstream-commit: https://github.com/NixOS/patchelf/commit/a365bcb7d7025da51b33165ef7ebc7180199a05e\nThis patch also removes the DT_INIT symbols from needed_libs (DT_INIT\npoints to library initialisation function, not to needed libraries...)]\nSigned-off-by: Wolfgang Grandegger <wg@grandegger.com>\n---\n src/patchelf.cc | 8 +++-----\n 1 file changed, 3 insertions(+), 5 deletions(-)\n\ndiff --git a/src/patchelf.cc b/src/patchelf.cc\nindex 136098f..c870638 100644\n--- a/src/patchelf.cc\n+++ b/src/patchelf.cc\n@@ -941,7 +941,6 @@ void ElfFile<ElfFileParamNames>::modifySoname(sonameMode op, const string & newS\n     assert(strTabAddr == rdi(shdrDynStr.sh_addr));\n \n     /* Walk through the dynamic section, look for the DT_SONAME entry. */\n-    static vector<string> neededLibs;\n     dyn = (Elf_Dyn *) (contents + rdi(shdrDynamic.sh_offset));\n     Elf_Dyn * dynSoname = 0;\n     char * soname = 0;\n@@ -949,8 +948,7 @@ void ElfFile<ElfFileParamNames>::modifySoname(sonameMode op, const string & newS\n         if (rdi(dyn->d_tag) == DT_SONAME) {\n             dynSoname = dyn;\n             soname = strTab + rdi(dyn->d_un.d_val);\n-        } else if (rdi(dyn->d_tag) == DT_INIT)\n-            neededLibs.push_back(string(strTab + rdi(dyn->d_un.d_val)));\n+        }\n     }\n \n     if (op == printSoname) {\n@@ -1058,7 +1056,7 @@ void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op, string newRPath)\n        unless you use its `--enable-new-dtag' option, in which case it\n        generates a DT_RPATH and DT_RUNPATH pointing at the same\n        string. */\n-    static vector<string> neededLibs;\n+    vector<string> neededLibs;\n     dyn = (Elf_Dyn *) (contents + rdi(shdrDynamic.sh_offset));\n     Elf_Dyn * dynRPath = 0, * dynRunPath = 0;\n     char * rpath = 0;\n@@ -1091,7 +1089,7 @@ void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op, string newRPath)\n     /* For each directory in the RPATH, check if it contains any\n        needed library. */\n     if (op == rpShrink) {\n-        static vector<bool> neededLibFound(neededLibs.size(), false);\n+        vector<bool> neededLibFound(neededLibs.size(), false);\n \n         newRPath = \"\";\n \n-- \n1.9.1\n\n"
  },
  {
    "path": "package/patchelf/0002-Extract-a-function-for-splitting-a-colon-separated-s.patch",
    "content": "From a8452dc7e80eb17572c7458e33a4f4d609e6a3da Mon Sep 17 00:00:00 2001\nFrom: Tuomas Tynkkynen <tuomas@tuxera.com>\nDate: Fri, 3 Jun 2016 23:03:51 +0300\nSubject: [PATCH] Extract a function for splitting a colon-separated string\n\nWe're going to need this logic in another place, so make a function of\nthis.\n\n[Upstream-commit: https://github.com/NixOS/patchelf/commit/2e3fdc2030c75c19df6fc2924083cfad53856562]\nSigned-off-by: Wolfgang Grandegger <wg@grandegger.com>\n---\n src/patchelf.cc | 28 +++++++++++++++++++---------\n 1 file changed, 19 insertions(+), 9 deletions(-)\n\ndiff --git a/src/patchelf.cc b/src/patchelf.cc\nindex c870638..1d9a772 100644\n--- a/src/patchelf.cc\n+++ b/src/patchelf.cc\n@@ -57,6 +57,22 @@ unsigned char * contents = 0;\n #define ElfFileParamNames Elf_Ehdr, Elf_Phdr, Elf_Shdr, Elf_Addr, Elf_Off, Elf_Dyn, Elf_Sym\n \n \n+static vector<string> splitColonDelimitedString(const char * s){\n+    vector<string> parts;\n+    const char * pos = s;\n+    while (*pos) {\n+        const char * end = strchr(pos, ':');\n+        if (!end) end = strchr(pos, 0);\n+\n+        parts.push_back(string(pos, end - pos));\n+        if (*end == ':') ++end;\n+        pos = end;\n+    }\n+\n+    return parts;\n+}\n+\n+\n static unsigned int getPageSize(){\n     return pageSize;\n }\n@@ -1093,15 +1109,9 @@ void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op, string newRPath)\n \n         newRPath = \"\";\n \n-        char * pos = rpath;\n-        while (*pos) {\n-            char * end = strchr(pos, ':');\n-            if (!end) end = strchr(pos, 0);\n-\n-            /* Get the name of the directory. */\n-            string dirName(pos, end - pos);\n-            if (*end == ':') ++end;\n-            pos = end;\n+        vector<string> rpathDirs = splitColonDelimitedString(rpath);\n+        for (vector<string>::iterator it = rpathDirs.begin(); it != rpathDirs.end(); ++it) {\n+            const string & dirName = *it;\n \n             /* Non-absolute entries are allowed (e.g., the special\n                \"$ORIGIN\" hack). */\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/patchelf/0003-Add-option-to-make-the-rpath-relative-under-a-specif.patch",
    "content": "From 618220bfb55c875d6a4d197cb24fe632ac93ec85 Mon Sep 17 00:00:00 2001\nFrom: Wolfgang Grandegger <wg@grandegger.com>\nDate: Mon, 20 Feb 2017 16:29:24 +0100\nSubject: [PATCH] Add option to make the rpath relative under a specified root\n directory\n\nRunning \"patchelf\" with the option \"--make-rpath-relative ROOTDIR\" will\nmodify or delete the RPATHDIRs according the following rules\nsimilar to Martin's patches [1] making the Buildroot toolchaing/SDK\nrelocatable.\n\nRPATHDIR starts with \"$ORIGIN\":\n    The original build-system already took care of setting a relative\n    RPATH, resolve it and test if it's valid (does exist)\n\nRPATHDIR starts with ROOTDIR:\n    The original build-system added some absolute RPATH (absolute on\n    the build machine). Test if it's valid (does exist).\n\nROOTDIR/RPATHDIR exists:\n    The original build-system already took care of setting an absolute\n    RPATH (absolute in the final rootfs), resolve it and test if it's\n    valid (does exist).\n\nRPATHDIR points somewhere else:\n    (can be anywhere: build trees, staging tree, host location,\n    non-existing location, etc.). Just discard such a path.\n\nThe option \"--no-standard-libs\" will discard RPATHDIRs ROOTDIR/lib and\nROOTDIR/usr/lib. Like \"--shrink-rpath\", RPATHDIRs are also discarded\nif the directories do not contain a library referenced by the\nDT_NEEDED fields.\nIf the option \"--relative-to-file\" is given, the rpath will start\nwith \"$ORIGIN\" making it relative to the ELF file, otherwise an\nabsolute path relative to ROOTDIR will be used.\n\nA pull request for a similar patch [2] for mainline inclusion is\npending.\n\n[1] http://lists.busybox.net/pipermail/buildroot/2016-April/159422.html\n[2] https://github.com/NixOS/patchelf/pull/118\n\nSigned-off-by: Wolfgang Grandegger <wg@grandegger.com>\n---\n src/patchelf.cc | 196 ++++++++++++++++++++++++++++++++++++++++++++++++++------\n 1 file changed, 175 insertions(+), 21 deletions(-)\n\ndiff --git a/src/patchelf.cc b/src/patchelf.cc\nindex 1d9a772..35b4a33 100644\n--- a/src/patchelf.cc\n+++ b/src/patchelf.cc\n@@ -46,6 +46,10 @@ static bool debugMode = false;\n \n static bool forceRPath = false;\n \n+static bool noStandardLibDirs = false;\n+\n+static bool relativeToFile = false;\n+\n static string fileName;\n static int pageSize = PAGESIZE;\n \n@@ -77,6 +81,49 @@ static unsigned int getPageSize(){\n     return pageSize;\n }\n \n+static bool absolutePathExists(const string & path, string & canonicalPath)\n+{\n+    char *cpath = realpath(path.c_str(), NULL);\n+    if (cpath) {\n+        canonicalPath = cpath;\n+        free(cpath);\n+        return true;\n+    } else {\n+        return false;\n+    }\n+}\n+\n+static string makePathRelative(const string & path,\n+    const string & refPath)\n+{\n+    string relPath = \"$ORIGIN\";\n+    string p = path, refP = refPath;\n+    size_t pos;\n+\n+    /* Strip the common part of path and refPath */\n+    while (true) {\n+        pos = p.find_first_of('/', 1);\n+        if (refP.find_first_of('/', 1) != pos)\n+            break;\n+        if (p.substr(0, pos) != refP.substr(0, pos))\n+            break;\n+        if (pos == string::npos)\n+            break;\n+        p = p.substr(pos);\n+        refP = refP.substr(pos);\n+    }\n+    /* Check if both pathes are equal */\n+    if (p != refP) {\n+        pos = 0;\n+        while (pos != string::npos) {\n+            pos =refP.find_first_of('/', pos + 1);\n+            relPath.append(\"/..\");\n+        }\n+        relPath.append(p);\n+    }\n+\n+    return relPath;\n+}\n \n template<ElfFileParams>\n class ElfFile\n@@ -183,9 +230,13 @@ public:\n \n     void setInterpreter(const string & newInterpreter);\n \n-    typedef enum { rpPrint, rpShrink, rpSet, rpRemove } RPathOp;\n+    typedef enum { rpPrint, rpShrink, rpMakeRelative, rpSet, rpRemove} RPathOp;\n+\n+    bool libFoundInRPath(const string & dirName,\n+                         const vector<string> neededLibs,\n+                         vector<bool> & neededLibFound);\n \n-    void modifyRPath(RPathOp op, string newRPath);\n+    void modifyRPath(RPathOp op, string rootDir, string newRPath);\n \n     void addNeeded(set<string> libs);\n \n@@ -1041,7 +1092,27 @@ static void concatToRPath(string & rpath, const string & path)\n \n \n template<ElfFileParams>\n-void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op, string newRPath)\n+bool ElfFile<ElfFileParamNames>::libFoundInRPath(const string & dirName,\n+    const vector<string> neededLibs, vector<bool> & neededLibFound)\n+{\n+    /* For each library that we haven't found yet, see if it\n+       exists in this directory. */\n+    bool libFound = false;\n+    for (unsigned int j = 0; j < neededLibs.size(); ++j)\n+        if (!neededLibFound[j]) {\n+            string libName = dirName + \"/\" + neededLibs[j];\n+            struct stat st;\n+            if (stat(libName.c_str(), &st) == 0) {\n+                neededLibFound[j] = true;\n+                libFound = true;\n+            }\n+        }\n+    return libFound;\n+}\n+\n+\n+template<ElfFileParams>\n+void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op, string rootDir, string newRPath)\n {\n     Elf_Shdr & shdrDynamic = findSection(\".dynamic\");\n \n@@ -1096,6 +1167,11 @@ void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op, string newRPath)\n         return;\n     }\n \n+    if (op == rpMakeRelative && !rpath) {\n+        debug(\"no RPATH to make relative\\n\");\n+        return;\n+    }\n+\n     if (op == rpShrink && !rpath) {\n         debug(\"no RPATH to shrink\\n\");\n         return;\n@@ -1120,26 +1196,80 @@ void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op, string newRPath)\n                 continue;\n             }\n \n-            /* For each library that we haven't found yet, see if it\n-               exists in this directory. */\n-            bool libFound = false;\n-            for (unsigned int j = 0; j < neededLibs.size(); ++j)\n-                if (!neededLibFound[j]) {\n-                    string libName = dirName + \"/\" + neededLibs[j];\n-                    struct stat st;\n-                    if (stat(libName.c_str(), &st) == 0) {\n-                        neededLibFound[j] = true;\n-                        libFound = true;\n-                    }\n-                }\n-\n-            if (!libFound)\n+            if (!libFoundInRPath(dirName, neededLibs, neededLibFound))\n                 debug(\"removing directory `%s' from RPATH\\n\", dirName.c_str());\n             else\n                 concatToRPath(newRPath, dirName);\n         }\n     }\n \n+    /* Make the the RPATH relative to the specified path */\n+    if (op == rpMakeRelative) {\n+        vector<bool> neededLibFound(neededLibs.size(), false);\n+        string fileDir = fileName.substr(0, fileName.find_last_of(\"/\"));\n+\n+        newRPath = \"\";\n+\n+        vector<string> rpathDirs = splitColonDelimitedString(rpath);\n+        for (vector<string>::iterator it = rpathDirs.begin(); it != rpathDirs.end(); ++it) {\n+            const string & dirName = *it;\n+\n+            string canonicalPath;\n+\n+            /* Figure out if we should keep or discard the path. There are several\n+               cases to be handled:\n+               \"dirName\" starts with \"$ORIGIN\":\n+                   The original build-system already took care of setting a relative\n+                   RPATH. Resolve it and test if it's valid (does exist).\n+               \"dirName\" start with \"rootDir\":\n+                   The original build-system added some absolute RPATH (absolute on\n+                   the build machine). Test if it's valid (does exist).\n+               \"rootDir\"/\"dirName\" exists:\n+                    The original build-system already took care of setting an absolute\n+                    RPATH (absolute in the final rootfs). Resolve it and test if it's\n+                    valid (does exist).\n+               \"dirName\" points somewhere else:\n+                    (can be anywhere: build trees, staging tree, host location,\n+                    non-existing location, etc.). Just discard such a path. */\n+            if (!dirName.compare(0, 7, \"$ORIGIN\")) {\n+                string path = fileDir + dirName.substr(7);\n+                if (!absolutePathExists(path, canonicalPath)) {\n+                    debug(\"removing directory '%s' from RPATH because '%s' doesn't exist\\n\",\n+                          dirName.c_str(), path.c_str());\n+                    continue;\n+                }\n+            } else if (!dirName.compare(0, rootDir.length(), rootDir)) {\n+                if (!absolutePathExists(dirName, canonicalPath)) {\n+                    debug(\"removing directory '%s' from RPATH because it doesn't exist\\n\", dirName.c_str());\n+                    continue;\n+                }\n+            } else {\n+                string path = rootDir + dirName;\n+                if (!absolutePathExists(path, canonicalPath)) {\n+                    debug(\"removing directory '%s' from RPATH because it's not in rootdir\\n\",\n+                          dirName.c_str());\n+                    continue;\n+                }\n+            }\n+\n+            if (noStandardLibDirs) {\n+                if (!canonicalPath.compare(rootDir + \"/lib\") ||\n+                    !canonicalPath.compare(rootDir + \"/usr/lib\")) {\n+                    debug(\"removing directory '%s' from RPATH because it's a standard library directory\\n\",\n+                         dirName.c_str());\n+                    continue;\n+                }\n+            }\n+\n+            /* Finally make \"canonicalPath\" relative to \"filedir\" in \"rootDir\" */\n+            if (relativeToFile)\n+                concatToRPath(newRPath, makePathRelative(canonicalPath, fileDir));\n+            else\n+                concatToRPath(newRPath, canonicalPath.substr(rootDir.length()));\n+            debug(\"keeping relative path of %s\\n\", canonicalPath.c_str());\n+        }\n+    }\n+\n     if (op == rpRemove) {\n         if (!rpath) {\n             debug(\"no RPATH to delete\\n\");\n@@ -1413,7 +1543,9 @@ static bool shrinkRPath = false;\n static bool removeRPath = false;\n static bool setRPath = false;\n static bool printRPath = false;\n+static bool makeRPathRelative = false;\n static string newRPath;\n+static string rootDir;\n static set<string> neededLibsToRemove;\n static map<string, string> neededLibsToReplace;\n static set<string> neededLibsToAdd;\n@@ -1438,14 +1570,16 @@ static void patchElf2(ElfFile & elfFile)\n         elfFile.setInterpreter(newInterpreter);\n \n     if (printRPath)\n-        elfFile.modifyRPath(elfFile.rpPrint, \"\");\n+        elfFile.modifyRPath(elfFile.rpPrint, \"\", \"\");\n \n     if (shrinkRPath)\n-        elfFile.modifyRPath(elfFile.rpShrink, \"\");\n+        elfFile.modifyRPath(elfFile.rpShrink, \"\", \"\");\n     else if (removeRPath)\n-        elfFile.modifyRPath(elfFile.rpRemove, \"\");\n+        elfFile.modifyRPath(elfFile.rpRemove, \"\", \"\");\n     else if (setRPath)\n-        elfFile.modifyRPath(elfFile.rpSet, newRPath);\n+        elfFile.modifyRPath(elfFile.rpSet, \"\", newRPath);\n+    else if (makeRPathRelative)\n+        elfFile.modifyRPath(elfFile.rpMakeRelative, rootDir, \"\");\n \n     if (printNeeded) elfFile.printNeededLibs();\n \n@@ -1508,6 +1642,9 @@ void showHelp(const string & progName)\n   [--set-rpath RPATH]\\n\\\n   [--remove-rpath]\\n\\\n   [--shrink-rpath]\\n\\\n+  [--make-rpath-relative ROOTDIR]\\n\\\n+  [--no-standard-lib-dirs]\\n\\\n+  [--relative-to-file]\\n\\\n   [--print-rpath]\\n\\\n   [--force-rpath]\\n\\\n   [--add-needed LIBRARY]\\n\\\n@@ -1564,6 +1701,17 @@ int main(int argc, char * * argv)\n             setRPath = true;\n             newRPath = argv[i];\n         }\n+        else if (arg == \"--make-rpath-relative\") {\n+            if (++i == argc) error(\"missing argument to --make-rpath-relative\");\n+            makeRPathRelative = true;\n+            rootDir = argv[i];\n+        }\n+        else if (arg == \"--no-standard-lib-dirs\") {\n+            noStandardLibDirs = true;\n+        }\n+        else if (arg == \"--relative-to-file\") {\n+            relativeToFile = true;\n+        }\n         else if (arg == \"--print-rpath\") {\n             printRPath = true;\n         }\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/patchelf/0004-patchelf-Check-ELF-endianness-before-writing-new-run.patch",
    "content": "From 8c75599b674c73fbfe9c15afeccad54ae88243f5 Mon Sep 17 00:00:00 2001\nFrom: Bryce Ferguson <bryce.ferguson@rockwellcollins.com>\nDate: Mon, 25 Jun 2018 13:05:07 -0500\nSubject: [PATCH] patchelf: Check ELF endianness before writing new runpath\n\nThis commit modifies the way fields are written in the dynamic\nsection in order to account the architecture of the target ELF\nfile. Instead of copying the raw data, use the helper functions\nto convert endianness.\n\nLink to upstream PR: https://github.com/NixOS/patchelf/pull/151\n\nSigned-off-by: Bryce Ferguson <bryce.ferguson@rockwellcollins.com>\n---\n src/patchelf.cc | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/src/patchelf.cc b/src/patchelf.cc\nindex 35b4a33..a33f644 100644\n--- a/src/patchelf.cc\n+++ b/src/patchelf.cc\n@@ -1315,13 +1315,13 @@ void ElfFile<ElfFileParamNames>::modifyRPath(RPathOp op, string rootDir, string\n     debug(\"new rpath is `%s'\\n\", newRPath.c_str());\n \n     if (!forceRPath && dynRPath && !dynRunPath) { /* convert DT_RPATH to DT_RUNPATH */\n-        dynRPath->d_tag = DT_RUNPATH;\n+        wri(dynRPath->d_tag, DT_RUNPATH);\n         dynRunPath = dynRPath;\n         dynRPath = 0;\n     }\n \n     if (forceRPath && dynRPath && dynRunPath) { /* convert DT_RUNPATH to DT_RPATH */\n-        dynRunPath->d_tag = DT_IGNORE;\n+        wri(dynRunPath->d_tag, DT_IGNORE);\n     }\n \n     if (newRPath.size() <= rpathSize) {\n-- \n2.17.0\n\n"
  },
  {
    "path": "package/patchelf/0005-Avoid-inflating-file-sizes-needlessly-and-allow-bina.patch",
    "content": "From 79c093226e609b99fa889f6e37480b92b399610d Mon Sep 17 00:00:00 2001\nFrom: Richard Purdie <richard.purdie@linuxfoundation.org>\nDate: Tue, 7 Mar 2017 21:08:34 +0000\nSubject: [PATCH] Avoid inflating file sizes needlessly and allow binaries to\n be stripped\n\nThe current approach to changing sections in ET_DYN executables is to move\nthe INTERP section to the end of the file. +This means changing PT_PHDR to\nadd an extra PT_LOAD section so that the new section is mmaped into memory\nby the elf loader in the kernel. In order to extend PHDR, this means moving\nit to the end of the file.\n\nIts documented in BUGS there is a kernel 'bug' which means that if you have holes\nin memory between the base load address and the PT_LOAD segment that contains PHDR,\nit will pass an incorrect PHDR address to ld.so and fail to load the binary, segfaulting.\n\nTo avoid this, the code currently inserts space into the binary to ensure that when\nloaded into memory there are no holes between the PT_LOAD sections. This inflates the\nbinaries by many MBs in some cases. Whilst we could make them sparse, there is a second\nissue which is that strip can fail to process these binaries:\n\n$ strip fixincl\nNot enough room for program headers, try linking with -N\n[.note.ABI-tag]: Bad value\n\nThis turns out to be due to libbfd not liking the relocated PHDR section either\n(https://github.com/NixOS/patchelf/issues/10).\n\nInstead this patch implements a different approach, leaving PHDR where it is but extending\nit in place to allow addition of a new PT_LOAD section. This overwrites sections in the\nbinary but those get moved to the end of the file in the new PT_LOAD section.\n\nThis is based on patches linked from the above github issue, however whilst the idea\nwas good, the implementation wasn't correct and they've been rewritten here.\n\nSigned-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>\n\nFetch from: https://github.com/NixOS/patchelf/commit/c4deb5e9e1ce9c98a48e0d5bb37d87739b8cfee4\n\nBackported to v0.9\n\nSigned-off-by: Conrad Ratschan <conrad.ratschan@rockwellcollins.com>\n---\n src/patchelf.cc | 71 ++++++++++++++++++++++++++++---------------------\n 1 file changed, 40 insertions(+), 31 deletions(-)\n\ndiff --git a/src/patchelf.cc b/src/patchelf.cc\nindex 1d58061..c2147af 100644\n--- a/src/patchelf.cc\n+++ b/src/patchelf.cc\n@@ -209,6 +209,8 @@ private:\n     string & replaceSection(const SectionName & sectionName,\n         unsigned int size);\n \n+    bool haveReplacedSection(const SectionName & sectionName);\n+\n     void writeReplacedSections(Elf_Off & curOff,\n         Elf_Addr startAddr, Elf_Off startOffset);\n \n@@ -632,6 +634,15 @@ void ElfFile<ElfFileParamNames>::writeReplacedSections(Elf_Off & curOff,\n     replacedSections.clear();\n }\n \n+template<ElfFileParams>\n+bool ElfFile<ElfFileParamNames>::haveReplacedSection(const SectionName & sectionName)\n+{\n+    ReplacedSections::iterator i = replacedSections.find(sectionName);\n+\n+    if (i != replacedSections.end())\n+        return true;\n+    return false;\n+}\n \n template<ElfFileParams>\n void ElfFile<ElfFileParamNames>::rewriteSectionsLibrary()\n@@ -648,52 +659,53 @@ void ElfFile<ElfFileParamNames>::rewriteSectionsLibrary()\n \n     debug(\"last page is 0x%llx\\n\", (unsigned long long) startPage);\n \n+    /* Because we're adding a new section header, we're necessarily increasing\n+       the size of the program header table.  This can cause the first section\n+       to overlap the program header table in memory; we need to shift the first\n+       few segments to someplace else. */\n+    /* Some sections may already be replaced so account for that */\n+    unsigned int i = 1;\n+    Elf_Addr pht_size = sizeof(Elf_Ehdr) + (phdrs.size() + 1)*sizeof(Elf_Phdr);\n+    while( shdrs[i].sh_addr <= pht_size && i < rdi(hdr->e_shnum) ) {\n+        if (not haveReplacedSection(getSectionName(shdrs[i])))\n+            replaceSection(getSectionName(shdrs[i]), shdrs[i].sh_size);\n+        i++;\n+    }\n \n-    /* Compute the total space needed for the replaced sections and\n-       the program headers. */\n-    off_t neededSpace = (phdrs.size() + 1) * sizeof(Elf_Phdr);\n+    /* Compute the total space needed for the replaced sections */\n+    off_t neededSpace = 0;\n     for (ReplacedSections::iterator i = replacedSections.begin();\n          i != replacedSections.end(); ++i)\n         neededSpace += roundUp(i->second.size(), sectionAlignment);\n     debug(\"needed space is %d\\n\", neededSpace);\n \n-\n     size_t startOffset = roundUp(fileSize, getPageSize());\n \n     growFile(startOffset + neededSpace);\n \n-\n     /* Even though this file is of type ET_DYN, it could actually be\n        an executable.  For instance, Gold produces executables marked\n-       ET_DYN.  In that case we can still hit the kernel bug that\n-       necessitated rewriteSectionsExecutable().  However, such\n-       executables also tend to start at virtual address 0, so\n+       ET_DYN as does LD when linking with pie. If we move PT_PHDR, it\n+       has to stay in the first PT_LOAD segment or any subsequent ones\n+       if they're continuous in memory due to linux kernel constraints\n+       (see BUGS). Since the end of the file would be after bss, we can't\n+       move PHDR there, we therefore choose to leave PT_PHDR where it is but\n+       move enough following sections such that we can add the extra PT_LOAD\n+       section to it. This PT_LOAD segment ensures the sections at the end of\n+       the file are mapped into memory for ld.so to process.\n+       We can't use the approach in rewriteSectionsExecutable()\n+       since DYN executables tend to start at virtual address 0, so\n        rewriteSectionsExecutable() won't work because it doesn't have\n-       any virtual address space to grow downwards into.  As a\n-       workaround, make sure that the virtual address of our new\n-       PT_LOAD segment relative to the first PT_LOAD segment is equal\n-       to its offset; otherwise we hit the kernel bug.  This may\n-       require creating a hole in the executable.  The bigger the size\n-       of the uninitialised data segment, the bigger the hole. */\n+       any virtual address space to grow downwards into. */\n     if (isExecutable) {\n         if (startOffset >= startPage) {\n             debug(\"shifting new PT_LOAD segment by %d bytes to work around a Linux kernel bug\\n\", startOffset - startPage);\n-        } else {\n-            size_t hole = startPage - startOffset;\n-            /* Print a warning, because the hole could be very big. */\n-            fprintf(stderr, \"warning: working around a Linux kernel bug by creating a hole of %zu bytes in ‘%s’\\n\", hole, fileName.c_str());\n-            assert(hole % getPageSize() == 0);\n-            /* !!! We could create an actual hole in the file here,\n-               but it's probably not worth the effort. */\n-            growFile(fileSize + hole);\n-            startOffset += hole;\n         }\n         startPage = startOffset;\n     }\n \n \n-    /* Add a segment that maps the replaced sections and program\n-       headers into memory. */\n+    /* Add a segment that maps the replaced sections into memory. */\n     phdrs.resize(rdi(hdr->e_phnum) + 1);\n     wri(hdr->e_phnum, rdi(hdr->e_phnum) + 1);\n     Elf_Phdr & phdr = phdrs[rdi(hdr->e_phnum) - 1];\n@@ -706,15 +718,12 @@ void ElfFile<ElfFileParamNames>::rewriteSectionsLibrary()\n \n \n     /* Write out the replaced sections. */\n-    Elf_Off curOff = startOffset + phdrs.size() * sizeof(Elf_Phdr);\n+    Elf_Off curOff = startOffset;\n     writeReplacedSections(curOff, startPage, startOffset);\n     assert(curOff == startOffset + neededSpace);\n \n-\n-    /* Move the program header to the start of the new area. */\n-    wri(hdr->e_phoff, startOffset);\n-\n-    rewriteHeaders(startPage);\n+    /* Write out the updated program and section headers */\n+    rewriteHeaders(hdr->e_phoff);\n }\n \n \n-- \n2.17.1\n\n"
  },
  {
    "path": "package/patchelf/0006-Fix-shared-library-corruption-when-rerunning-patchel.patch",
    "content": "From 5df4791bf077127684faceeeea8bfab063e43774 Mon Sep 17 00:00:00 2001\nFrom: Richard Purdie <richard.purdie@linuxfoundation.org>\nDate: Wed, 3 Jun 2020 12:14:58 +0100\nSubject: [PATCH] Fix shared library corruption when rerunning patchelf\n\nWhen running patchelf on some existing patchelf'd binaries to change to longer\nRPATHS, ldd would report the binaries as invalid. The output of objdump -x on\nthose libraryies should show the top of the .dynamic section is getting trashed,\nsomething like:\n\n0x600000001 0x0000000000429000\n0x335000 0x0000000000335000\n0xc740 0x000000000000c740\n0x1000 0x0000000000009098\nSONAME libglib-2.0.so.0\n\n(which should be RPATH and DT_NEEDED entries)\n\nThis was tracked down to the code which injects the PT_LOAD section.\n\nThe issue is that if the program headers were previously relocated to the end\nof the file which was how patchelf operated previously, the relocation code\nwouldn't work properly on a second run as it now assumes they're located after\nthe elf header. This change forces them back to immediately follow the elf\nheader which is where the code has made space for them.\n\nShould fix https://github.com/NixOS/patchelf/issues/170\nand https://github.com/NixOS/patchelf/issues/192\n\nSigned-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>\n\nFetch from: https://github.com/NixOS/patchelf/commit/ad5f1f078b716802dfb8f7226cb1d5c720348a78\n\nBackported to v0.9\n\nSigned-off-by: Conrad Ratschan <conrad.ratschan@rockwellcollins.com>\n---\n src/patchelf.cc | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/patchelf.cc b/src/patchelf.cc\nindex c2147af..1224a89 100644\n--- a/src/patchelf.cc\n+++ b/src/patchelf.cc\n@@ -706,6 +706,7 @@ void ElfFile<ElfFileParamNames>::rewriteSectionsLibrary()\n \n \n     /* Add a segment that maps the replaced sections into memory. */\n+    wri(hdr->e_phoff, sizeof(Elf_Ehdr));\n     phdrs.resize(rdi(hdr->e_phnum) + 1);\n     wri(hdr->e_phnum, rdi(hdr->e_phnum) + 1);\n     Elf_Phdr & phdr = phdrs[rdi(hdr->e_phnum) - 1];\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/patchelf/0007-fix-adjusting-startPage.patch",
    "content": "From 4a82c97e8a0677706d1d532812daaa73249768a8 Mon Sep 17 00:00:00 2001\nFrom: Ed Bartosh <ed.bartosh@linux.intel.com>\nDate: Fri, 21 Jul 2017 12:33:53 +0300\nSubject: [PATCH] fix adjusting startPage\n\nstartPage is adjusted unconditionally for all executables.\nThis results in incorrect addresses assigned to INTERP and LOAD\nprogram headers, which breaks patched executable.\n\nAdjusting startPage variable only when startOffset > startPage\nshould fix this.\n\nThis change is related to the issue NixOS#10\n\nSigned-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>\n\nFetch from: https://github.com/NixOS/patchelf/commit/1cc234fea5600190d872329aca60e2365cefc39e\n\nBackported to v0.9\n\nSigned-off-by: Conrad Ratschan <conrad.ratschan@rockwellcollins.com>\n---\n src/patchelf.cc | 6 ++----\n 1 file changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/src/patchelf.cc b/src/patchelf.cc\nindex 1224a89..4676157 100644\n--- a/src/patchelf.cc\n+++ b/src/patchelf.cc\n@@ -697,10 +697,8 @@ void ElfFile<ElfFileParamNames>::rewriteSectionsLibrary()\n        since DYN executables tend to start at virtual address 0, so\n        rewriteSectionsExecutable() won't work because it doesn't have\n        any virtual address space to grow downwards into. */\n-    if (isExecutable) {\n-        if (startOffset >= startPage) {\n-            debug(\"shifting new PT_LOAD segment by %d bytes to work around a Linux kernel bug\\n\", startOffset - startPage);\n-        }\n+    if (isExecutable && startOffset > startPage) {\n+        debug(\"shifting new PT_LOAD segment by %d bytes to work around a Linux kernel bug\\n\", startOffset - startPage);\n         startPage = startOffset;\n     }\n \n-- \n2.17.1\n\n"
  },
  {
    "path": "package/patchelf/0008-Use-sh_offset-instead-of-sh_addr-when-checking-alrea.patch",
    "content": "From cb8326de54ad7a56658b0dc8efb7da5e71684a7c Mon Sep 17 00:00:00 2001\nFrom: Pablo Galindo <pablogsal@gmail.com>\nDate: Tue, 22 Sep 2020 01:33:47 +0100\nSubject: [PATCH] Use sh_offset instead of sh_addr when checking already\n replaced libs\n\nWhen checking for already replaced libs, the check against the size must\nbe done using the section header offset, not the section file address.\nThis was not crashing in many situations because normally sh_address and\nsh_offset have the same value but these two may differ and using the\nsh_address value instead can cause library corruption in these\nsituations.\n\nFetch from: https://github.com/NixOS/patchelf/commit/83aa89addf8757e2d63aa73222f2fa9bc6d7321a\n\nBackported to v0.9\n\nSigned-off-by: Conrad Ratschan <conrad.ratschan@rockwellcollins.com>\n---\n src/patchelf.cc | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/patchelf.cc b/src/patchelf.cc\nindex 4676157..c025ae2 100644\n--- a/src/patchelf.cc\n+++ b/src/patchelf.cc\n@@ -666,7 +666,7 @@ void ElfFile<ElfFileParamNames>::rewriteSectionsLibrary()\n     /* Some sections may already be replaced so account for that */\n     unsigned int i = 1;\n     Elf_Addr pht_size = sizeof(Elf_Ehdr) + (phdrs.size() + 1)*sizeof(Elf_Phdr);\n-    while( shdrs[i].sh_addr <= pht_size && i < rdi(hdr->e_shnum) ) {\n+    while( shdrs[i].sh_offset <= pht_size && i < rdi(hdr->e_shnum) ) {\n         if (not haveReplacedSection(getSectionName(shdrs[i])))\n             replaceSection(getSectionName(shdrs[i]), shdrs[i].sh_size);\n         i++;\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/patchelf/0009-Fix-issue-66-by-ignoring-the-first-section-header-wh.patch",
    "content": "From e22ca2f593aa8fd392f1ac4f8dd104bc56d0d100 Mon Sep 17 00:00:00 2001\nFrom: Ezra Cooper <ezra@qumulo.com>\nDate: Thu, 21 Jun 2018 11:07:35 -0700\nSubject: [PATCH] Fix issue #66 by ignoring the first section header when\n sorting, and not overwriting NOBITS entries.\n\nFetch from: https://github.com/NixOS/patchelf/commit/52ab908394958a2a5d0476e306e2cad4da4fdeae\n\nBackported to v0.9\n\nSigned-off-by: Conrad Ratschan <conrad.ratschan@rockwellcollins.com>\n---\n src/patchelf.cc | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/src/patchelf.cc b/src/patchelf.cc\nindex c025ae2..fa2945e 100644\n--- a/src/patchelf.cc\n+++ b/src/patchelf.cc\n@@ -435,7 +435,7 @@ void ElfFile<ElfFileParamNames>::sortShdrs()\n     /* Sort the sections by offset. */\n     CompShdr comp;\n     comp.elfFile = this;\n-    sort(shdrs.begin(), shdrs.end(), comp);\n+    sort(shdrs.begin() + 1, shdrs.end(), comp);\n \n     /* Restore the sh_link mappings. */\n     for (unsigned int i = 1; i < rdi(hdr->e_shnum); ++i)\n@@ -586,7 +586,8 @@ void ElfFile<ElfFileParamNames>::writeReplacedSections(Elf_Off & curOff,\n     {\n         string sectionName = i->first;\n         Elf_Shdr & shdr = findSection(sectionName);\n-        memset(contents + rdi(shdr.sh_offset), 'X', rdi(shdr.sh_size));\n+        if (shdr.sh_type != SHT_NOBITS)\n+            memset(contents + rdi(shdr.sh_offset), 'X', rdi(shdr.sh_size));\n     }\n \n     for (ReplacedSections::iterator i = replacedSections.begin();\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/patchelf/0010-Fix-endianness-issues-for-powerpc-PIE.patch",
    "content": "From c61c2960d782c67566790b210163ff9c799f018a Mon Sep 17 00:00:00 2001\nFrom: Conrad Ratschan <ratschance@gmail.com>\nDate: Sat, 3 Oct 2020 20:17:24 -0500\nSubject: [PATCH] Fix endianness issues for powerpc PIE\n\nPreviously when running `patchelf --set-rpath \"/usr/sbin\" my_bin` on a\nPIE ppc32 binary that had no RPATH a few issues were encountered.\n\nThis commit fixes:\n\n1. The PT_PHDR being sorted improperly due to the type being read in\n   incorrect endianness\n\n3. The interpreter being clobbered due to the replace sections routine\n   reading sh_offset and sh_size in incorrect endianness\n\n4. The PHDR segment having an incorrect virt and phys address due to\n   reading the e_phoff in the incorrect endianness\n\nThis also fixes a read of the shdr.sh_type in writeReplacedSections but\nthis was not encountered during testing.\n\nFetch from: https://github.com/NixOS/patchelf/commit/884eccc4f061a3dbdbe63a4c73f1cc9bbf77fa7d\n\nBackported to v0.9. Removed item 2 from the fix list as it is not\napplicable to v0.9.\n\nSigned-off-by: Conrad Ratschan <conrad.ratschan@rockwellcollins.com>\n---\n src/patchelf.cc | 12 ++++++------\n 1 file changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/src/patchelf.cc b/src/patchelf.cc\nindex fa2945e..e60b17c 100644\n--- a/src/patchelf.cc\n+++ b/src/patchelf.cc\n@@ -173,8 +173,8 @@ private:\n         ElfFile * elfFile;\n         bool operator ()(const Elf_Phdr & x, const Elf_Phdr & y)\n         {\n-            if (x.p_type == PT_PHDR) return true;\n-            if (y.p_type == PT_PHDR) return false;\n+            if (elfFile->rdi(x.p_type) == PT_PHDR) return true;\n+            if (elfFile->rdi(y.p_type) == PT_PHDR) return false;\n             return elfFile->rdi(x.p_paddr) < elfFile->rdi(y.p_paddr);\n         }\n     };\n@@ -586,7 +586,7 @@ void ElfFile<ElfFileParamNames>::writeReplacedSections(Elf_Off & curOff,\n     {\n         string sectionName = i->first;\n         Elf_Shdr & shdr = findSection(sectionName);\n-        if (shdr.sh_type != SHT_NOBITS)\n+        if (rdi(shdr.sh_type) != SHT_NOBITS)\n             memset(contents + rdi(shdr.sh_offset), 'X', rdi(shdr.sh_size));\n     }\n \n@@ -667,9 +667,9 @@ void ElfFile<ElfFileParamNames>::rewriteSectionsLibrary()\n     /* Some sections may already be replaced so account for that */\n     unsigned int i = 1;\n     Elf_Addr pht_size = sizeof(Elf_Ehdr) + (phdrs.size() + 1)*sizeof(Elf_Phdr);\n-    while( shdrs[i].sh_offset <= pht_size && i < rdi(hdr->e_shnum) ) {\n+    while( rdi(shdrs[i].sh_offset) <= pht_size && i < rdi(hdr->e_shnum) ) {\n         if (not haveReplacedSection(getSectionName(shdrs[i])))\n-            replaceSection(getSectionName(shdrs[i]), shdrs[i].sh_size);\n+            replaceSection(getSectionName(shdrs[i]), rdi(shdrs[i].sh_size));\n         i++;\n     }\n \n@@ -723,7 +723,7 @@ void ElfFile<ElfFileParamNames>::rewriteSectionsLibrary()\n     assert(curOff == startOffset + neededSpace);\n \n     /* Write out the updated program and section headers */\n-    rewriteHeaders(hdr->e_phoff);\n+    rewriteHeaders(rdi(hdr->e_phoff));\n }\n \n \n-- \n2.17.1\n\n"
  },
  {
    "path": "package/patchelf/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PATCHELF\n\tbool\n\tdefault y\n\thelp\n\t  PatchELF is a small utility to modify the dynamic linker\n\t  and RPATH of ELF executables.\n\n\t  http://nixos.org/patchelf.html\n"
  },
  {
    "path": "package/patchelf/patchelf.hash",
    "content": "# Locally calculated\nsha256\ta0f65c1ba148890e9f2f7823f4bedf7ecad5417772f64f994004f59a39014f83\tpatchelf-0.9.tar.bz2\n# License files, locally calculated\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\tCOPYING\n"
  },
  {
    "path": "package/patchelf/patchelf.mk",
    "content": "################################################################################\n#\n# patchelf\n#\n################################################################################\n\nPATCHELF_VERSION = 0.9\nPATCHELF_SITE = https://nixos.org/releases/patchelf/patchelf-$(PATCHELF_VERSION)\nPATCHELF_SOURCE = patchelf-$(PATCHELF_VERSION).tar.bz2\nPATCHELF_LICENSE = GPL-3.0+\nPATCHELF_LICENSE_FILES = COPYING\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/pax-utils/Config.in",
    "content": "config BR2_PACKAGE_PAX_UTILS\n\tbool \"pax-utils\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  ELF related utils for ELF 32/64 binaries that can check files\n\t  for security relevant properties.\n\n\t  http://www.gentoo.org/proj/en/hardened/pax-utils.xml\n\ncomment \"pax-utils needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/pax-utils/pax-utils.hash",
    "content": "# Locally calculated\nsha256  9742d2a31d53a4e0f6df0d3721ab6f7cf8b0404c95fee3b00e678c1ff6db7f21  pax-utils-1.2.6.tar.xz\nsha256  e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING\n"
  },
  {
    "path": "package/pax-utils/pax-utils.mk",
    "content": "################################################################################\n#\n# pax-utils\n#\n################################################################################\n\nPAX_UTILS_VERSION = 1.2.6\nPAX_UTILS_SITE = http://distfiles.gentoo.org/distfiles\nPAX_UTILS_SOURCE = pax-utils-$(PAX_UTILS_VERSION).tar.xz\nPAX_UTILS_LICENSE = GPL-2.0\nPAX_UTILS_LICENSE_FILES = COPYING\nPAX_UTILS_CPE_ID_VENDOR = gentoo\n\nPAX_UTILS_DEPENDENCIES = host-pkgconf\nPAX_UTILS_CONF_OPTS = --without-python\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nPAX_UTILS_DEPENDENCIES += libcap\nPAX_UTILS_CONF_OPTS += --with-caps\nelse\nPAX_UTILS_CONF_OPTS += --without-caps\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECCOMP),y)\nPAX_UTILS_DEPENDENCIES += libseccomp\nPAX_UTILS_CONF_OPTS += --with-seccomp\nelse\nPAX_UTILS_CONF_OPTS += --without-seccomp\nendif\n\n# lddtree and symtree need bash\nifeq ($(BR2_PACKAGE_BASH),)\ndefine PAX_UTILS_REMOVE_BASH_TOOLS\n\trm -f $(TARGET_DIR)/usr/bin/{lddtree,symtree}\nendef\nendif\nPAX_UTILS_POST_INSTALL_TARGET_HOOKS += PAX_UTILS_REMOVE_BASH_TOOLS\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/paxtest/0001-genpaxtest-move-log-location.patch",
    "content": "From 623d99e4f557ef9cd771006e4f916c12d22a07a8 Mon Sep 17 00:00:00 2001\nFrom: David Graziano <david.graziano@rockwellcollins.com>\nDate: Mon, 12 Jun 2017 10:41:45 -0500\nSubject: [PATCH] genpaxtest: move log location\n\nMove log location to /var/log instead of local directory.\n(For read-only filesystems)\n\nSigned-off-by: David Graziano <david.graziano@rockwellcollins.com>\n---\n genpaxtest | 14 +++++++-------\n 1 file changed, 7 insertions(+), 7 deletions(-)\n\ndiff --git a/genpaxtest b/genpaxtest\nindex 5a22e15..d62b15e 100644\n--- a/genpaxtest\n+++ b/genpaxtest\n@@ -35,7 +35,7 @@\n        exit 1\n fi\n\n-LOG=\\$HOME/paxtest.log\n+LOG=/var/log/paxtest.log\n [ -n \"\\$1\" ] && LOG=\\$1\n touch \"\\$LOG\"\n if [ ! -e \"\\$LOG\" ]; then\n \n-- \n1.9.1\n\n"
  },
  {
    "path": "package/paxtest/0002-paxtest-page-alignment-ARM-and-NIOS2-arch.patch",
    "content": "From 70406ad5668a15fedce2ae1ed3bc4fad04d9f040 Mon Sep 17 00:00:00 2001\nFrom: Matt Weber <matthew.weber@rockwellcollins.com>\nDate: Wed, 5 Jul 2017 20:47:42 -0500\nSubject: [PATCH] paxtest: page alignment ARM and NIOS2 arch\n\n- Extended ARM range from ARMv6-v7 to also include anything below v7\n- Added NIOS2 arch to conditionally have smaller alignment\n\nSubmitted Upstream to pageexec@freemail.hu.  Also posted a\nbug to both (Hardened) Suse and Gentoo's bugtrackers.\nhttps://bugzilla.opensuse.org/show_bug.cgi?id=1047422\nhttps://bugs.gentoo.org/show_bug.cgi?id=623946\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n paxtest.h | 12 ++++++++++--\n 1 file changed, 10 insertions(+), 2 deletions(-)\n\ndiff --git a/paxtest.h b/paxtest.h\nindex 8623bfb..a230c1a 100644\n--- a/paxtest.h\n+++ b/paxtest.h\n@@ -5,13 +5,21 @@\n #include <unistd.h>\n \n /*\n- * ARMv6 and ARMv7 do not like 64k alignment, 32k is ok\n+ * Earlier ARMv# through ARMv7 do not like 64k alignment, 32k is ok\n  */\n-#if defined(__arm__) && __ARM_ARCH >= 6 && __ARM_ARCH <= 7\n+#if defined(__arm__) && __ARM_ARCH <= 7\n #define PAGE_SIZE_MAX  (32768)\n #else\n #define PAGE_SIZE_MAX\t0x10000\t/* 64k should cover most arches */\n #endif\n+\n+/*\n+ * NIOS2's assemblier doesn't like 64k alignment\n+ */\n+#if defined(__nios2_arch__)\n+#define PAGE_SIZE_MAX  (32768)\n+#endif\n+\n #ifndef __aligned\n #define __aligned(x)\t__attribute__((aligned(x)))\n #endif\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/paxtest/Config.in",
    "content": "config BR2_PACKAGE_PAXTEST\n\tbool \"paxtest\"\n\t# No UCLIBC or MUSL because __NO_A_OUT_SUPPORT\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  PaX regression test suite\n\n\t  http://pax.grsecurity.net/docs\n\ncomment \"paxtest needs a glibc toolchain\"\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/paxtest/paxtest.hash",
    "content": "# Locally computed:\nsha256  d553848431fd8c2ab6c8361b62e5cedfed1cc1d60088241f4a33d2af15dd667f  paxtest-0.9.15.tar.gz\nsha256  fe8759e6d3ff462c876ded6e95e3fb297d607bc45799bb264ec9a170b5046522  README\n"
  },
  {
    "path": "package/paxtest/paxtest.mk",
    "content": "################################################################################\n#\n# paxtest\n#\n################################################################################\n\nPAXTEST_VERSION = 0.9.15\nPAXTEST_SITE = https://www.grsecurity.net/~spender\nPAXTEST_LICENSE = GPL-2.0+\nPAXTEST_LICENSE_FILES = README\nPAXTEST_CPE_ID_VENDOR = grsecurity\n\ndefine PAXTEST_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tRUNDIR=\"/usr/lib/paxtest\" CC=\"$(TARGET_CC)\" LD=\"$(TARGET_CC)\" linux\nendef\n\n# The files installed to RUNDIR include test apps and shared libs.\n# Assuming /usr/bin/paxtest script solely uses these libs and apps, the\n# genpaxtest script updates LD_LIBRARY_PATH in the paxtest script\n# as part of the paxtest's creation to include the RUNDIR path for shared\n# library use.\ndefine PAXTEST_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tCC=\"$(TARGET_CC)\" LD=\"$(TARGET_CC)\" \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tBINDIR=\"usr/bin\" \\\n\t\tRUNDIR=\"/usr/lib/paxtest\" -f Makefile.psm install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/pciutils/Config.in",
    "content": "config BR2_PACKAGE_PCIUTILS\n\tbool \"pciutils\"\n\thelp\n\t  Various utilities dealing with the PCI bus.\n\t  Provides things like setpci and lspci.\n\n\t  http://atrey.karlin.mff.cuni.cz/~mj/pciutils.html\n"
  },
  {
    "path": "package/pciutils/pciutils.hash",
    "content": "# From https://www.kernel.org/pub/software/utils/pciutils/sha256sums.asc\nsha256  9d40b97be8b6a2cdf96aead5a61881d1f7e4e0da9544a9bac4fba1ae9dcd40eb  pciutils-3.7.0.tar.xz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/pciutils/pciutils.mk",
    "content": "################################################################################\n#\n# pciutils\n#\n################################################################################\n\nPCIUTILS_VERSION = 3.7.0\nPCIUTILS_SITE = $(BR2_KERNEL_MIRROR)/software/utils/pciutils\nPCIUTILS_SOURCE = pciutils-$(PCIUTILS_VERSION).tar.xz\nPCIUTILS_INSTALL_STAGING = YES\nPCIUTILS_LICENSE = GPL-2.0+\nPCIUTILS_LICENSE_FILES = COPYING\nPCIUTILS_MAKE_OPTS = \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tHOST=\"$(KERNEL_ARCH)-linux\" \\\n\tOPT=\"$(TARGET_CFLAGS)\" \\\n\tLDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\tDNS=no \\\n\tSTRIP=\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nPCIUTILS_DEPENDENCIES += udev\nPCIUTILS_MAKE_OPTS += HWDB=yes\nelse\nPCIUTILS_MAKE_OPTS += HWDB=no\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nPCIUTILS_MAKE_OPTS += ZLIB=yes\nPCIUTILS_DEPENDENCIES += zlib\nelse\nPCIUTILS_MAKE_OPTS += ZLIB=no\nendif\n\nifeq ($(BR2_PACKAGE_KMOD),y)\nPCIUTILS_DEPENDENCIES += kmod\nPCIUTILS_MAKE_OPTS += LIBKMOD=yes\nelse\nPCIUTILS_MAKE_OPTS += LIBKMOD=no\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nPCIUTILS_MAKE_OPTS += SHARED=no\nelse\nPCIUTILS_MAKE_OPTS += SHARED=yes\nendif\n\ndefine PCIUTILS_CONFIGURE_CMDS\n\t$(SED) 's/wget --no-timestamping/wget/' $(PCIUTILS_DIR)/update-pciids.sh\nendef\n\ndefine PCIUTILS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(PCIUTILS_MAKE_OPTS) \\\n\t\tPREFIX=/usr\nendef\n\ndefine PCIUTILS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(PCIUTILS_MAKE_OPTS) \\\n\t\tPREFIX=$(TARGET_DIR)/usr SBINDIR=$(TARGET_DIR)/usr/bin \\\n\t\tinstall install-lib install-pcilib\nendef\n\ndefine PCIUTILS_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(PCIUTILS_MAKE_OPTS) \\\n\t\tPREFIX=$(STAGING_DIR)/usr SBINDIR=$(STAGING_DIR)/usr/bin \\\n\t\tinstall install-lib install-pcilib\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/pcm-tools/0001-Look-for-pcm-core-at-the-default-path.patch",
    "content": "From 53b6161d2413406778fa222274069c82846f0297 Mon Sep 17 00:00:00 2001\nFrom: Carlos Santos <casantos@datacom.com.br>\nDate: Thu, 6 Dec 2018 21:17:02 -0200\nSubject: [PATCH] Look for pcm-core at the default path\n\nOn Buildroot, pcm-core.x is installed as /usr/bin/pcm-core. Remove the\nplatform test, since we know that it's neither CigWin nor Windows, and\nuse the default path.\n\nIt's not nice to have a Buildroot specific patch but let's use one while\nwe look for a solution that is acceptable upstream.\n\nSigned-off-by: Carlos Santos <casantos@datacom.ind.br>\n---\n pmu-query.py | 8 +-------\n 1 file changed, 1 insertion(+), 7 deletions(-)\n\ndiff --git a/pmu-query.py b/pmu-query.py\nindex 4c596c7..dc39df6 100755\n--- a/pmu-query.py\n+++ b/pmu-query.py\n@@ -3,7 +3,6 @@ import urllib2\n import json, csv\n import subprocess\n import sys\n-import platform\n import getopt\n \n all_flag = False\n@@ -38,12 +37,7 @@ if filename == None:\n         except StopIteration:\n             break\n \n-    if platform.system() == 'CYGWIN_NT-6.1':\n-        p = subprocess.Popen(['./pcm-core.exe -c'],stdout=subprocess.PIPE,shell=True) \n-    elif platform.system() == 'Windows':\n-        p = subprocess.Popen(['pcm-core.exe -c'],stdout=subprocess.PIPE,shell=True)\n-    else:\n-        p = subprocess.Popen(['./pcm-core.x -c'],stdout=subprocess.PIPE,shell=True)\n+    p = subprocess.Popen(['/usr/bin/pcm-core -c'],stdout=subprocess.PIPE,shell=True)\n \n     (output, err) = p.communicate()\n     p_status = p.wait()\n-- \n2.19.2\n\n"
  },
  {
    "path": "package/pcm-tools/Config.in",
    "content": "comment \"pcm-tools needs a toolchain w/ C++\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_PCM_TOOLS\n\tbool \"pcm-tools\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_HWDATA\n\tselect BR2_PACKAGE_HWDATA_PCI_IDS\n\thelp\n\t  Processor Counter Monitor (PCM) is an application programming\n\t  interface (API) and a set of tools based on the API to monitor\n\t  performance and energy metrics of Intel(R) Core(TM), Xeon(R),\n\t  Atom(TM) and Xeon Phi(TM) processors.\n\n\t  https://github.com/opcm/pcm\n\nif BR2_PACKAGE_PCM_TOOLS\n\n# The pmu-query script is not compatible with Python 3\nconfig BR2_PACKAGE_PCM_TOOLS_PMU_QUERY\n\tbool \"install the pmu-query script\"\n\tdefault y\n\tdepends on BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_CA_CERTIFICATES # https\n\tselect BR2_PACKAGE_PYTHON_HASHLIB # urllib2\n\tselect BR2_PACKAGE_PYTHON_SSL # urllib2\n\ncomment \"pmu-query needs Python 2.x\"\n\tdepends on !BR2_PACKAGE_PYTHON\n\nendif\n"
  },
  {
    "path": "package/pcm-tools/pcm-tools.hash",
    "content": "# Locally calculated\nsha256 798eb1bc5d9c34fa107de21b2100e8d4326cb45b613bc35baa1e1efb1dd13b04  pcm-tools-201812.tar.gz\nsha256 fac73f62c4d665c82622862a2be2b89713e0f480c93e593af2d8ef29a13d814b  LICENSE\n"
  },
  {
    "path": "package/pcm-tools/pcm-tools.mk",
    "content": "################################################################################\n#\n# pcm-tools\n#\n################################################################################\n\nPCM_TOOLS_VERSION = 201812\nPCM_TOOLS_SITE = $(call github,opcm,pcm,$(PCM_TOOLS_VERSION))\nPCM_TOOLS_LICENSE = BSD-3-Clause\nPCM_TOOLS_LICENSE_FILES = LICENSE\n\nPCM_TOOLS_EXE_FILES = \\\n\tpcm-core pcm-iio pcm-lspci pcm-memory pcm-msr pcm-numa \\\n\tpcm-pcicfg pcm-pcie pcm-power pcm-sensor pcm-tsx pcm\n\ndefine PCM_TOOLS_BUILD_CMDS\n\ttouch $(@D)/daemon-binaries\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\tCXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\" \\\n\t\tUNAME=Linux HOST=_LINUX\nendef\n\nifeq ($(BR2_PACKAGE_PCM_TOOLS_PMU_QUERY),y)\ndefine PCM_TOOLS_INSTALL_PMU_QUERY\n\t$(INSTALL) -D -m 755 $(@D)/pmu-query.py $(TARGET_DIR)/usr/bin/pmu-query\nendef\nendif\n\ndefine PCM_TOOLS_INSTALL_TARGET_CMDS\n\t$(foreach f,$(PCM_TOOLS_EXE_FILES),\\\n\t\t$(INSTALL) -D -m 755 $(@D)/$(f).x $(TARGET_DIR)/usr/bin/$(f)\n\t)\n\t$(PCM_TOOLS_INSTALL_PMU_QUERY)\nendef\n\ndefine PCM_TOOLS_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_X86_MSR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/pcmanfm/0001-po-de-po-fix-build-with-gettext-tiny.patch",
    "content": "From 2e51d1015ffd58f26f4ddf03a858164edcf64a8c Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 26 Mar 2021 09:16:08 +0100\nSubject: [PATCH] po/de.po: fix build with gettext-tiny\n\nBuild of de.gmo is broken with gettext-tiny since version 1.3.2 and\ncommit 80e0f662861e6d0ad8888f61c19c0695978779bf:\n\nfile=`echo de | sed 's,.*/,,'`.gmo \\\n  && rm -f $file && /home/buildroot/autobuild/instance-2/output-1/host/bin/msgfmt -o $file de.po\nMakefile:102: recipe for target 'de.gmo' failed\n\nFixes:\n - http://autobuild.buildroot.org/results/69f4e5fa44208429b143011640971a61d709d5b1\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/lxde/pcmanfm/pull/8]\n---\n po/de.po | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/po/de.po b/po/de.po\nindex 766a44e..9781ba3 100644\n--- a/po/de.po\n+++ b/po/de.po\n@@ -961,8 +961,7 @@ msgstr \"Diese Ordneransicht merken\"\n #: ../src/main-win-ui.c:279\n msgid \"\"\n \"Check to remember view and sort as folder setting rather than global one\"\n-msgstr\n-\"Ansicht und Sortierung für dieses Verzeichnis anstelle der globalen \"\n+msgstr \"Ansicht und Sortierung für dieses Verzeichnis anstelle der globalen \"\n \"Einstellung merken\"\n \n #: ../src/main-win-ui.c:281\n"
  },
  {
    "path": "package/pcmanfm/Config.in",
    "content": "config BR2_PACKAGE_PCMANFM\n\tbool \"pcmanfm\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_INSTALL_LIBSTDCPP # libgtk2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # libgtk2 -> pango -> harfbuzz\n\tselect BR2_PACKAGE_LIBFM\n\tselect BR2_PACKAGE_MENU_CACHE\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBGTK2 if !BR2_PACKAGE_LIBGTK3_X11\n\thelp\n\t  PCMan File Manager (PCManFM) is a file manager application\n\t  developed by Hong Jen Yee from Taiwan which is meant to be a\n\t  replacement for Nautilus, Konqueror and Thunar.\n\n\t  http://wiki.lxde.org/en/PCManFM\n\ncomment \"pcmanfm needs a toolchain w/ wchar, threads, C++, gcc >= 4.8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/pcmanfm/pcmanfm.hash",
    "content": "# From https://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/PCManFM/\nmd5  ef7c4417d2697ef138d175db7aeae15a  pcmanfm-1.3.2.tar.xz\nsha1  bc4e468b0ec3089aaf817eafed43ae06350961ee  pcmanfm-1.3.2.tar.xz\n\n# Locally computed:\nsha256  14cb7b247493c4cce65fbb5902611e3ad00a7a870fbc1e50adc50428c5140cf7  pcmanfm-1.3.2.tar.xz\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/pcmanfm/pcmanfm.mk",
    "content": "################################################################################\n#\n# pcmanfm\n#\n################################################################################\n\nPCMANFM_VERSION = 1.3.2\nPCMANFM_SOURCE = pcmanfm-$(PCMANFM_VERSION).tar.xz\nPCMANFM_SITE = http://sourceforge.net/projects/pcmanfm/files\nPCMANFM_DEPENDENCIES = libglib2 menu-cache libfm $(TARGET_NLS_DEPENDENCIES)\nPCMANFM_LICENSE = GPL-2.0+\nPCMANFM_LICENSE_FILES = COPYING\nPCMANFM_CPE_ID_VENDOR = pcmanfm_project\nPCMANFM_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_LIBGTK3_X11),y)\nPCMANFM_CONF_OPTS += --with-gtk=3\nPCMANFM_DEPENDENCIES += libgtk3\nelse\nPCMANFM_CONF_OPTS += --with-gtk=2\nPCMANFM_DEPENDENCIES += libgtk2\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/pcre/0001-Kill-compatibility-bits.patch",
    "content": "From e180a4085d8d2f82a05f037e465708cfc16bd2bf Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Tue, 14 Jun 2016 20:31:12 -0300\nSubject: [PATCH] Kill compatibility bits\n\nKill ABI compatibility bits, we don't need them.\nFixes build failures on non-ELF targets.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n[Fabrice: update for 8.44]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n pcrecpp.cc | 16 ----------------\n 1 file changed, 16 deletions(-)\n\ndiff --git a/pcrecpp.cc b/pcrecpp.cc\nindex d09c9ab..6910db0 100644\n--- a/pcrecpp.cc\n+++ b/pcrecpp.cc\n@@ -58,23 +58,6 @@ static const int kVecSize = (1 + kMaxArgs) * 3;  // results + PCRE workspace\n // Special object that stands-in for no argument\n Arg RE::no_arg((void*)NULL);\n \n-// This is for ABI compatibility with old versions of pcre (pre-7.6),\n-// which defined a global no_arg variable instead of putting it in the\n-// RE class.  This works on GCC >= 3, at least.  It definitely works\n-// for ELF, but may not for other object formats (Mach-O, for\n-// instance, does not support aliases.)  We could probably have a more\n-// inclusive test if we ever needed it.  (Note that not only the\n-// __attribute__ syntax, but also __USER_LABEL_PREFIX__, are\n-// gnu-specific.)\n-#if defined(__GNUC__) && __GNUC__ >= 3 && defined(__ELF__) \\\n-       && !defined(__INTEL_COMPILER) && !defined(__LCC__)\n-# define ULP_AS_STRING(x)            ULP_AS_STRING_INTERNAL(x)\n-# define ULP_AS_STRING_INTERNAL(x)   #x\n-# define USER_LABEL_PREFIX_STR       ULP_AS_STRING(__USER_LABEL_PREFIX__)\n-extern Arg no_arg\n-  __attribute__((alias(USER_LABEL_PREFIX_STR \"_ZN7pcrecpp2RE6no_argE\")));\n-#endif\n-\n // If a regular expression has no error, its error_ field points here\n static const string empty_string;\n \n-- \n2.7.3\n\n"
  },
  {
    "path": "package/pcre/0002-Disable-C-unit-tests.patch",
    "content": "From e3c636b8c7f9912d8d3a9fabdaa0a96ba69f7b29 Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Tue, 14 Jun 2016 20:32:44 -0300\nSubject: [PATCH] Disable C++ unit tests\n\nThey fail to build on static targets and they're not installed anyway.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n---\n Makefile.in | 9 ---------\n 1 file changed, 9 deletions(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 6d03912..2c42b3e 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -133,12 +133,6 @@ noinst_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4)\n @WITH_PCRE8_TRUE@am__append_20 = libpcreposix.la\n @WITH_GCOV_TRUE@@WITH_PCRE8_TRUE@am__append_21 = $(GCOV_CFLAGS)\n @WITH_PCRE_CPP_TRUE@am__append_22 = libpcrecpp.la\n-@WITH_PCRE_CPP_TRUE@am__append_23 = pcrecpp_unittest \\\n-@WITH_PCRE_CPP_TRUE@\tpcre_scanner_unittest \\\n-@WITH_PCRE_CPP_TRUE@\tpcre_stringpiece_unittest\n-@WITH_PCRE_CPP_TRUE@am__append_24 = pcrecpp_unittest \\\n-@WITH_PCRE_CPP_TRUE@\tpcre_scanner_unittest \\\n-@WITH_PCRE_CPP_TRUE@\tpcre_stringpiece_unittest\n @WITH_GCOV_TRUE@@WITH_PCRE_CPP_TRUE@am__append_25 = $(GCOV_CXXFLAGS)\n @WITH_GCOV_TRUE@@WITH_PCRE_CPP_TRUE@am__append_26 = $(GCOV_LIBS)\n @WITH_GCOV_TRUE@@WITH_PCRE_CPP_TRUE@am__append_27 = $(GCOV_LIBS)\n@@ -190,9 +184,6 @@ libpcreposix_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \\\n \t\"$(DESTDIR)$(includedir)\"\n @WITH_REBUILD_CHARTABLES_TRUE@am__EXEEXT_2 = dftables$(EXEEXT)\n @WITH_JIT_TRUE@am__EXEEXT_3 = pcre_jit_test$(EXEEXT)\n-@WITH_PCRE_CPP_TRUE@am__EXEEXT_4 = pcrecpp_unittest$(EXEEXT) \\\n-@WITH_PCRE_CPP_TRUE@\tpcre_scanner_unittest$(EXEEXT) \\\n-@WITH_PCRE_CPP_TRUE@\tpcre_stringpiece_unittest$(EXEEXT)\n PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)\n am__vpath_adj_setup = srcdirstrip=`echo \"$(srcdir)\" | sed 's|.|.|g'`;\n am__vpath_adj = case $$p in \\\n-- \n2.7.3\n\n"
  },
  {
    "path": "package/pcre/Config.in",
    "content": "config BR2_PACKAGE_PCRE\n\tbool \"pcre\"\n\thelp\n\t  Perl Compatible Regular Expressions. By default, only the\n\t  8-bits libpcre is built. To get the 16-bits and/or 32-bits\n\t  variants libpcre16/libpcre32, use the package sub-options.\n\n\t  http://www.pcre.org/\n\nif BR2_PACKAGE_PCRE\n\nconfig BR2_PACKAGE_PCRE_16\n\tbool \"16-bit pcre\"\n\thelp\n\t  This option builds the 16-bits pcre library, i.e 'libpcre16'\n\nconfig BR2_PACKAGE_PCRE_32\n\tbool \"32-bit pcre\"\n\thelp\n\t  This option builds the 32-bits pcre library, i.e 'libpcre32'\n\nconfig BR2_PACKAGE_PCRE_UTF\n\tbool \"UTF-8/16/32 support in pcre\"\n\thelp\n\t  This option builds the pcre library with UTF-8/16/32 support\n\nconfig BR2_PACKAGE_PCRE_UCP\n\tbool \"Unicode properties support in pcre\"\n\tselect BR2_PACKAGE_PCRE_UTF\n\thelp\n\t  This option builds the pcre library with Unicode properties\n\t  support (implies UTF-8/16/32 support)'\n\nendif\n"
  },
  {
    "path": "package/pcre/pcre.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  4dae6fdcd2bb0bb6c37b5f97c33c2be954da743985369cddac3546e3218bffb8  pcre-8.45.tar.bz2\n# License files, locally calculated\nsha256  51b3dea44f63338b84b9c97b3d793826a8397309068cf9379a423216ab8ea5b2  LICENCE\n"
  },
  {
    "path": "package/pcre/pcre.mk",
    "content": "################################################################################\n#\n# pcre\n#\n################################################################################\n\nPCRE_VERSION = 8.45\nPCRE_SITE = http://downloads.sourceforge.net/project/pcre/pcre/$(PCRE_VERSION)\nPCRE_SOURCE = pcre-$(PCRE_VERSION).tar.bz2\nPCRE_LICENSE = BSD-3-Clause\nPCRE_LICENSE_FILES = LICENCE\nPCRE_CPE_ID_VENDOR = pcre\nPCRE_INSTALL_STAGING = YES\nPCRE_CONFIG_SCRIPTS = pcre-config\n\n# They're required for host-libglib2\nHOST_PCRE_CONF_OPTS = --enable-unicode-properties\n\nifneq ($(BR2_INSTALL_LIBSTDCPP),y)\n# pcre will use the host g++ if a cross version isn't available\nPCRE_CONF_OPTS = --disable-cpp\nendif\n\nPCRE_CONF_OPTS += --enable-pcre8\nPCRE_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE_16),--enable-pcre16,--disable-pcre16)\nPCRE_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE_32),--enable-pcre32,--disable-pcre32)\nPCRE_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE_UTF),--enable-utf,--disable-utf)\nPCRE_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE_UCP),--enable-unicode-properties,--disable-unicode-properties)\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/pcre2/Config.in",
    "content": "config BR2_PACKAGE_PCRE2\n\tbool \"pcre2\"\n\thelp\n\t  Perl Compatible Regular Expressions. By default, only the\n\t  8-bits libpcre2 is built. To get the 16-bits and/or 32-bits\n\t  variants libpcre2-16/libpcre2-32, use the package\n\t  sub-options.\n\n\t  http://www.pcre.org/\n\nif BR2_PACKAGE_PCRE2\n\nconfig BR2_PACKAGE_PCRE2_16\n\tbool \"16-bit pcre2\"\n\thelp\n\t  This option builds the 16-bits pcre2 library, i.e\n\t  'libpcre2-16'\n\nconfig BR2_PACKAGE_PCRE2_32\n\tbool \"32-bit pcre2\"\n\thelp\n\t  This option builds the 32-bits pcre2 library, i.e\n\t  'libpcre2-32'\n\nconfig BR2_PACKAGE_PCRE2_JIT_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_arm || BR2_armeb\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_powerpc\n\tdefault y if BR2_sparc\n\nconfig BR2_PACKAGE_PCRE2_JIT\n\tbool \"enable JIT support\"\n\tdepends on BR2_PACKAGE_PCRE2_JIT_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  This option enables JIT support\n\ncomment \"JIT support needs a toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_PCRE2_JIT_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nendif\n"
  },
  {
    "path": "package/pcre2/pcre2.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://ftp.pcre.org/pub/pcre/pcre2-10.37.tar.bz2.sig\nsha256  4d95a96e8b80529893b4562be12648d798b957b1ba1aae39606bbc2ab956d270  pcre2-10.37.tar.bz2\n# Locally computed\nsha256  9c9488256e3612ec5ea40fd12abe7ec55a58f23bd36e6f465116c2b3cbffba02  LICENCE\n"
  },
  {
    "path": "package/pcre2/pcre2.mk",
    "content": "################################################################################\n#\n# pcre2\n#\n################################################################################\n\nPCRE2_VERSION = 10.37\nPCRE2_SITE = https://ftp.pcre.org/pub/pcre\nPCRE2_SOURCE = pcre2-$(PCRE2_VERSION).tar.bz2\nPCRE2_LICENSE = BSD-3-Clause\nPCRE2_LICENSE_FILES = LICENCE\nPCRE2_CPE_ID_VENDOR = pcre\nPCRE2_INSTALL_STAGING = YES\nPCRE2_CONFIG_SCRIPTS = pcre2-config\n\nPCRE2_CONF_OPTS += --enable-pcre2-8\nPCRE2_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE2_16),--enable-pcre2-16,--disable-pcre2-16)\nPCRE2_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE2_32),--enable-pcre2-32,--disable-pcre2-32)\n\nifeq ($(BR2_PACKAGE_PCRE2_JIT),y)\nPCRE2_CONF_OPTS += --enable-jit\nelse\nPCRE2_CONF_OPTS += --disable-jit\nendif\n\n# disable fork usage if not available\nifeq ($(BR2_USE_MMU),)\nPCRE2_CONF_OPTS += --disable-pcre2grep-callout\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/pcsc-lite/Config.in",
    "content": "config BR2_PACKAGE_PCSC_LITE\n\tbool \"pcsc-lite\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Middleware to access smart card using SCard API (PC/SC).\n\n\t  https://muscle.apdu.fr/\n\nif BR2_PACKAGE_PCSC_LITE\n\nconfig BR2_PACKAGE_PCSC_LITE_FORCE_LIBUSB\n\tbool \"use libusb\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Select Y if you want to support usb smart card readers.\n\ncomment \"libusb support needs a toolchain w/ gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_PCSC_LITE_DEBUGATR\n\tbool \"enable ATR debug messages\"\n\thelp\n\t  Enable ATR debug messages from pcscd.\n\nconfig BR2_PACKAGE_PCSC_LITE_EMBEDDED\n\tbool \"enable embedded mode\"\n\thelp\n\t  Limit RAM and CPU resources by disabling logs.\n\nendif\n\ncomment \"pcsc-lite needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/pcsc-lite/pcsc-lite.hash",
    "content": "# Locally calculated\nsha256  8a8caac227e0a266015298dda663e81576a0d11d698685101e6aa6c9fdb51c4b  pcsc-lite-1.9.4.tar.bz2\nsha256  40d4358bb8dc8d30f5365ae6d999b6f820bbc051b292912482f2e4d0ebd837e1  COPYING\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  GPL-3.0.txt\n"
  },
  {
    "path": "package/pcsc-lite/pcsc-lite.mk",
    "content": "################################################################################\n#\n# pcsc-lite\n#\n################################################################################\n\nPCSC_LITE_VERSION = 1.9.4\nPCSC_LITE_SOURCE = pcsc-lite-$(PCSC_LITE_VERSION).tar.bz2\nPCSC_LITE_SITE = https://pcsclite.apdu.fr/files\nPCSC_LITE_INSTALL_STAGING = YES\nPCSC_LITE_DEPENDENCIES = host-pkgconf\nPCSC_LITE_LICENSE = BSD-2-Clause (auth), BSD-3-Clause, GPL-3.0+ (demo, spy, tests), ISC (simclist)\nPCSC_LITE_LICENSE_FILES = COPYING GPL-3.0.txt\nPCSC_LITE_SELINUX_MODULES = pcscd\n\n# - libudev and libusb are optional\n# - libudev and libusb can't be used together\n# - libudev has a priority over libusb\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nPCSC_LITE_CONF_OPTS += --enable-libudev --disable-libusb\nPCSC_LITE_DEPENDENCIES += udev\nelse\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nPCSC_LITE_CONF_OPTS += --enable-libusb --disable-libudev\nPCSC_LITE_DEPENDENCIES += libusb\nelse\nPCSC_LITE_CONF_OPTS += --disable-libusb --disable-libudev\nendif\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nPCSC_LITE_CONF_OPTS += --enable-libsystemd\nPCSC_LITE_DEPENDENCIES += systemd\nelse\nPCSC_LITE_CONF_OPTS += --disable-libsystemd\nendif\n\nifeq ($(PACKAGE_PCSC_LITE_DEBUGATR),y)\nPCSC_LITE_CONF_OPTS += --enable-debugatr\nendif\n\nifeq ($(PACKAGE_PCSC_LITE_EMBEDDED),y)\nPCSC_LITE_CONF_OPTS += --enable-embedded\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/pdbg/0001-template-Fix-alignment.patch",
    "content": "From 0080d0a64da274207bc341491f87863952bb6e3b Mon Sep 17 00:00:00 2001\nFrom: Joel Stanley <joel@jms.id.au>\nDate: Tue, 3 Aug 2021 17:28:17 +0930\nSubject: [PATCH] template: Fix alignment\n\nThe assembler complains about unaliged data:\n\n ./template.S: Assembler messages:\n ./template.S:21: Error: misaligned data\n\nIf the included data is not an aligned size, the the symbols following\nwill be unaligned.\n\nWe lost the alignment directive in commit 5f3deee1289e (\"template: new\nlibfdt requires 8-byte aligned fdt\"), so add it back as it was before\nthat commit.\n\nReported by the buildroot autobuilder.\n\nSigned-off-by: Joel Stanley <joel@jms.id.au>\n---\n template.S | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/template.S b/template.S\nindex ecf9bba0656d..df8c064d6bc0 100644\n--- a/template.S\n+++ b/template.S\n@@ -17,6 +17,7 @@\n SYM_START(SYMBOL_PREFIX):\n .incbin FILENAME\n SYM_END(SYMBOL_PREFIX):\n+.align 4\n SYM_SIZE(SYMBOL_PREFIX):\n \t.long\tSYM_END(SYMBOL_PREFIX) - SYM_START(SYMBOL_PREFIX)\n .globl SYM_START(SYMBOL_PREFIX)\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/pdbg/Config.in",
    "content": "config BR2_PACKAGE_PDBG\n\tbool \"pdbg\"\n\thelp\n\t  PowerPC FSI Debugger, for low level debugging of a IBM\n\t  Power8 and Power9 CPU over FSI.\n\n\t  pdbg runs on a BMC, which is generally an ARM-powered system\n\t  monitoring/controlling a host CPU. It can also run on the\n\t  host.\n\n\t  https://github.com/open-power/pdbg\n"
  },
  {
    "path": "package/pdbg/pdbg.hash",
    "content": "# Locally calculated\nsha256 87fe68977f72885e46d321da806d30f33a901de817461eb44fa727cd81d1d109 pdbg-3.3.tar.gz\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING\n"
  },
  {
    "path": "package/pdbg/pdbg.mk",
    "content": "################################################################################\n#\n# pdbg\n#\n################################################################################\n\nPDBG_VERSION = 3.3\nPDBG_SITE = $(call github,open-power,pdbg,v$(PDBG_VERSION))\nPDBG_LICENSE = Apache-2.0\nPDBG_LICENSE_FILES = COPYING\nPDBG_AUTORECONF = YES\nPDBG_DEPENDENCIES = host-dtc\n\nPDBG_MAKE_OPTS = \"GIT_SHA1=\\\"v$(PDBG_VERSION)\\\"\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/pdmenu/0001-autoconf-makeinfo.in-link-with-INTLLIBS-if-needed.patch",
    "content": "From 319cc3859044214961164ed1f219f2f21ca965af Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 30 Aug 2017 23:04:37 +0200\nSubject: [PATCH] autoconf/makeinfo.in: link with INTLLIBS if needed\n\ngettext may be provided by external libraries, as specified in\nINTLLIBS, so we must include @INTLLIBS@ in the LIBS variable.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n autoconf/makeinfo.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/autoconf/makeinfo.in b/autoconf/makeinfo.in\nindex ee3054a..6d58d77 100644\n--- a/autoconf/makeinfo.in\n+++ b/autoconf/makeinfo.in\n@@ -13,5 +13,5 @@ DEFINES\t\t= -DETCDIR=\\\"${SYSCONFDIR}/\\\" -DVER=\\\"${VER}\\\" @DEFS@ \\\n \t\t  $(PROFILE) -D__USE_FIXED_PROTOTYPES__ -D_GNU_SOURCE \\\n \t\t  -DLOCALEDIR=\\\"@datadir@/locale\\\"\n CFLAGS\t\t= $(DEFINES) @gcc_cflags@ @CFLAGS@\n-LIBS\t\t= @LIBS@ $(EFENCE)\n+LIBS\t\t= @LIBS@ @INTLLIBS@ $(EFENCE)\n INSTALL_PROGRAM\t= ${INSTALL}\n-- \n2.13.5\n\n"
  },
  {
    "path": "package/pdmenu/0002-Makefile-autoconf-makeinfo.in-support-build-install-.patch",
    "content": "From 5368bd0cfd0640f5c0ca766d4fda1b3f71c1b013 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 30 Aug 2017 23:07:26 +0200\nSubject: [PATCH] Makefile, autoconf/makeinfo.in: support build/install without\n gettext\n\nThe gettext tool msgfmt may not be available to build the .mo files\nfrom the .po files, so we handle this case by disabling the\nbuild/installation of .po files in such a case.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n Makefile             | 17 ++++++++++++++---\n autoconf/makeinfo.in |  1 +\n 2 files changed, 15 insertions(+), 3 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex a708046..3e83ca3 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -7,11 +7,18 @@ OBJFILES\t:= $(SRCFILES:%.c=%.o)\n LANGS\t\t= fr ru es\n MOS\t\t:= $(addprefix po/, $(addsuffix .mo, $(LANGS)))\n LOCALEDIR\t= $(INSTALL_PREFIX)/usr/share/locale\n-\n-all: pdmenu $(POTFILE) $(MOS)\n+TARGETS\t\t= pdmenu\n+INSTALL_TARGETS\t= install-pdmenu\n \n include makeinfo\n \n+ifneq ($(MSGFMT),)\n+TARGETS += $(POTFILE) $(MOS)\n+INSTALL_TARGETS += install-pos\n+endif\n+\n+all: $(TARGETS)\n+\n pdmenu: .dep $(OBJFILES)\n \t${CC} -o pdmenu $(OBJFILES) $(CFLAGS) $(LIBS)\n \n@@ -40,7 +47,9 @@ clean:\n \t$(MAKE) $(POTFILE) # make sure translators' input is ready\n \trm -f $(OBJFILES) pdmenu $(MOS)\n \n-install: all\n+install: $(INSTALL_TARGETS)\n+\n+install-pdmenu:\n \t$(INSTALL) -d $(INSTALL_PREFIX)/$(BINDIR) \\\n \t\t$(INSTALL_PREFIX)/$(MANDIR)/man1 \\\n \t\t$(INSTALL_PREFIX)/$(MANDIR)/man5 \\\n@@ -56,6 +65,8 @@ install: all\n \t$(INSTALL) examples/pdmenurc $(INSTALL_PREFIX)/$(SYSCONFDIR)/pdmenurc -m 0644\n \t$(INSTALL) examples/showdir.pl $(INSTALL_PREFIX)/$(DATADIR)/pdmenu\n \tcd $(INSTALL_PREFIX)/$(DATADIR)/pdmenu && $(LN_S) -f showdir.pl editdir.pl\n+\n+install-pos:\n \tfor lang in $(LANGS); do \\\n \t\t[ ! -d $(LOCALEDIR)/$$lang/LC_MESSAGES/ ] && mkdir -p $(LOCALEDIR)/$$lang/LC_MESSAGES/; \\\n \t\tinstall -m 644 po/$$lang.mo $(LOCALEDIR)/$$lang/LC_MESSAGES/pdmenu.mo; \\\ndiff --git a/autoconf/makeinfo.in b/autoconf/makeinfo.in\nindex 6d58d77..069daf8 100644\n--- a/autoconf/makeinfo.in\n+++ b/autoconf/makeinfo.in\n@@ -8,6 +8,7 @@ DATADIR\t\t= @datadir@\n CC\t\t= @CC@\n INSTALL\t\t= @INSTALL@\n LN_S\t\t= @LN_S@\n+MSGFMT\t\t= @MSGFMT@\n VER\t\t= @VER@\n DEFINES\t\t= -DETCDIR=\\\"${SYSCONFDIR}/\\\" -DVER=\\\"${VER}\\\" @DEFS@ \\\n \t\t  $(PROFILE) -D__USE_FIXED_PROTOTYPES__ -D_GNU_SOURCE \\\n-- \n2.13.5\n\n"
  },
  {
    "path": "package/pdmenu/Config.in",
    "content": "config BR2_PACKAGE_PDMENU\n\tbool \"pdmenu\"\n\tdepends on BR2_USE_MMU # slang\n\tselect BR2_PACKAGE_SLANG\n\thelp\n\t  Pdmenu is a full screen menuing system for Unix. It is\n\t  designed to be easy to use, and is suitable as a login shell\n\t  for inexperienced users, or it can just be ran at the\n\t  command line as a handy menu.\n\n\t  Pdmenu features color support and GPM mouse support at the\n\t  Linux console. It was developed on Linux, and has now been\n\t  compiled on many other unixes without problems.\n\n\t  https://joeyh.name/code/pdmenu/\n"
  },
  {
    "path": "package/pdmenu/pdmenu.hash",
    "content": "# Locally calculated\nsha256  dedd2a4a5719278b5e49041161990c2f20b5909818837542aaca01819f2c14eb  pdmenu-1.3.6.tar.gz\n\n# License file hash, locally calculated\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  doc/COPYING\n"
  },
  {
    "path": "package/pdmenu/pdmenu.mk",
    "content": "################################################################################\n#\n# pdmenu\n#\n################################################################################\n\nPDMENU_VERSION = 1.3.6\nPDMENU_SITE = https://git.joeyh.name/index.cgi/pdmenu.git/snapshot\nPDMENU_LICENSE = GPL-2.0\nPDMENU_LICENSE_FILES = doc/COPYING\nPDMENU_DEPENDENCIES = slang $(TARGET_NLS_DEPENDENCIES)\nPDMENU_INSTALL_TARGET_OPTS = INSTALL_PREFIX=$(TARGET_DIR) install\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/perl/Config.in",
    "content": "config BR2_PACKAGE_PERL\n\tbool \"perl\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Larry Wall's Practical Extraction and Report Language\n\t  An interpreted scripting language, known among some as\n\t  \"Unix's Swiss Army Chainsaw\".\n\n\t  http://www.perl.org/\n\nif BR2_PACKAGE_PERL\n\nconfig BR2_PACKAGE_PERL_MODULES\n\tstring \"custom module selection\"\n\thelp\n\t  List of space-separated perl modules (without .pm) to copy\n\t  to the rootfs.\n\n\t  Examples: constant Getopt/Std Time/Local\n\n\t  Module dependencies on external libraries are not automatic so\n\t  check your needs.\n\n\t  Leave empty for all modules (as far as the external libraries\n\t  are available).\n\nconfig BR2_PACKAGE_PERL_THREADS\n\tbool \"thread support\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Enable use of threads in Perl scripts\n\n\t  WARNING: The use of interpreter-based threads in Perl\n\t  is officially discouraged.\n\t  See https://perldoc.perl.org/threads.html#WARNING\n\nendif\n"
  },
  {
    "path": "package/perl/perl.hash",
    "content": "# Hashes from: https://www.cpan.org/src/5.0/perl-5.32.1.tar.xz.{md5,sha1,sha256}.txt\nmd5  7f104064b906ad8c7329ca5e409a32d7  perl-5.32.1.tar.xz\nsha1  1fb4f710d139da1e1a3e1fa4eaba201fcaa8e18e  perl-5.32.1.tar.xz\nsha256  57cc47c735c8300a8ce2fa0643507b44c4ae59012bfdad0121313db639e02309  perl-5.32.1.tar.xz\n\n# Hashes from: https://github.com/arsv/perl-cross/releases/download/1.3.5/perl-cross-1.3.5.hash\nsha256  91c66f6b2b99fccfd4fee14660b677380b0c98f9456359e91449798c2ad2ef25  perl-cross-1.3.5.tar.gz\n\n# Locally calculated\nsha256  dd90d4f42e4dcadf5a7c09eea0189d93c7b37ae560c91f0f6d5233ed3b9292a2  Artistic\nsha256  d77d235e41d54594865151f4751e835c5a82322b0e87ace266567c3391a4b912  Copying\nsha256  df6ad59aefea68676c38325f25f6707f026ddde6c71291b2ca231b6247859907  README\n"
  },
  {
    "path": "package/perl/perl.mk",
    "content": "################################################################################\n#\n# perl\n#\n################################################################################\n\n# When updating the version here, also update utils/scancpan\nPERL_VERSION_MAJOR = 32\nPERL_VERSION = 5.$(PERL_VERSION_MAJOR).1\nPERL_SITE = https://www.cpan.org/src/5.0\nPERL_SOURCE = perl-$(PERL_VERSION).tar.xz\nPERL_LICENSE = Artistic or GPL-1.0+\nPERL_LICENSE_FILES = Artistic Copying README\nPERL_CPE_ID_VENDOR = perl\nPERL_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\nPERL_INSTALL_STAGING = YES\n\nPERL_CROSS_VERSION = 1.3.5\n# DO NOT refactor with the github helper (the result is not the same)\nPERL_CROSS_SITE = https://github.com/arsv/perl-cross/releases/download/$(PERL_CROSS_VERSION)\nPERL_CROSS_SOURCE = perl-cross-$(PERL_CROSS_VERSION).tar.gz\nPERL_EXTRA_DOWNLOADS = $(PERL_CROSS_SITE)/$(PERL_CROSS_SOURCE)\n\n# We use the perlcross hack to cross-compile perl. It should\n# be extracted over the perl sources, so we don't define that\n# as a separate package. Instead, it is downloaded and extracted\n# together with perl\ndefine PERL_CROSS_EXTRACT\n\t$(call suitable-extractor,$(PERL_CROSS_SOURCE)) $(PERL_DL_DIR)/$(PERL_CROSS_SOURCE) | \\\n\t$(TAR) --strip-components=1 -C $(@D) $(TAR_OPTIONS) -\nendef\nPERL_POST_EXTRACT_HOOKS += PERL_CROSS_EXTRACT\n\n# Even though perl is not an autotools-package, it uses config.sub and\n# config.guess. Up-to-date versions of these files may be needed to build perl\n# on newer host architectures, so we borrow the hook which updates them from the\n# autotools infrastructure.\nPERL_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK\n\nifeq ($(BR2_PACKAGE_BERKELEYDB),y)\nPERL_DEPENDENCIES += berkeleydb\nendif\nifeq ($(BR2_PACKAGE_GDBM),y)\nPERL_DEPENDENCIES += gdbm\nendif\n\n# We have to override LD, because an external multilib toolchain ld is not\n# wrapped to provide the required sysroot options.\nPERL_CONF_OPTS = \\\n\t--target=$(GNU_TARGET_NAME) \\\n\t--target-tools-prefix=$(TARGET_CROSS) \\\n\t--prefix=/usr \\\n\t-Dld=\"$(TARGET_CC)\" \\\n\t-Dccflags=\"$(TARGET_CFLAGS)\" \\\n\t-Dldflags=\"$(TARGET_LDFLAGS) -lm $(TARGET_NLS_LIBS)\" \\\n\t-Dmydomain=\"\" \\\n\t-Dmyhostname=\"noname\" \\\n\t-Dmyuname=\"Buildroot $(BR2_VERSION_FULL)\" \\\n\t-Dosname=linux \\\n\t-Dosvers=$(LINUX_VERSION) \\\n\t-Dperladmin=root\n\nifeq ($(shell expr $(PERL_VERSION_MAJOR) % 2), 1)\nPERL_CONF_OPTS += -Dusedevel\nendif\n\nifeq ($(BR2_PACKAGE_PERL_THREADS),y)\nPERL_CONF_OPTS += -Dusethreads\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nPERL_CONF_OPTS += --all-static --no-dynaloader\nendif\n\nPERL_MODULES = $(call qstrip,$(BR2_PACKAGE_PERL_MODULES))\nifneq ($(PERL_MODULES),)\nPERL_CONF_OPTS += --only-mod=$(subst $(space),$(comma),$(PERL_MODULES))\nendif\n\ndefine PERL_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_MAKE_ENV) HOSTCC='$(HOSTCC_NOCCACHE)' \\\n\t\t./configure $(PERL_CONF_OPTS))\n\t$(SED) 's/UNKNOWN-/Buildroot $(subst /,\\/,$(BR2_VERSION_FULL)) /' $(@D)/patchlevel.h\nendef\n\ndefine PERL_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) all\nendef\n\ndefine PERL_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=\"$(STAGING_DIR)\" install.perl install.sym\nendef\n\ndefine PERL_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=\"$(TARGET_DIR)\" install.perl install.sym\nendef\n\nHOST_PERL_CONF_OPTS = \\\n\t-des \\\n\t-Dprefix=\"$(HOST_DIR)\" \\\n\t-Dcc=\"$(HOSTCC)\"\n\ndefine HOST_PERL_CONFIGURE_CMDS\n\t(cd $(@D); $(HOST_MAKE_ENV) HOSTCC='$(HOSTCC_NOCCACHE)' \\\n\t\t./Configure $(HOST_PERL_CONF_OPTS))\nendef\n\ndefine HOST_PERL_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_PERL_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) INSTALL_DEPENDENCE='' install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n\ndefine PERL_FINALIZE_TARGET\n\trm -rf $(TARGET_DIR)/usr/lib/perl5/$(PERL_VERSION)/pod\n\trm -rf $(TARGET_DIR)/usr/lib/perl5/$(PERL_VERSION)/$(PERL_ARCHNAME)/CORE\n\tfind $(TARGET_DIR)/usr/lib/perl5/ -name 'extralibs.ld' -print0 | xargs -0 rm -f\n\tfind $(TARGET_DIR)/usr/lib/perl5/ -name '*.bs' -print0 | xargs -0 rm -f\n\tfind $(TARGET_DIR)/usr/lib/perl5/ -name '.packlist' -print0 | xargs -0 rm -f\nendef\nPERL_TARGET_FINALIZE_HOOKS += PERL_FINALIZE_TARGET\n"
  },
  {
    "path": "package/perl-apache-logformat-compiler/Config.in",
    "content": "config BR2_PACKAGE_PERL_APACHE_LOGFORMAT_COMPILER\n\tbool \"perl-apache-logformat-compiler\"\n\tselect BR2_PACKAGE_PERL_POSIX_STRFTIME_COMPILER # runtime\n\thelp\n\t  Compile a log format string to perl-code.\n\n\t  https://github.com/kazeburo/Apache-LogFormat-Compiler\n"
  },
  {
    "path": "package/perl-apache-logformat-compiler/perl-apache-logformat-compiler.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    a0cdfcd875cb2ee4dc9a2c24381eb55b Apache-LogFormat-Compiler-0.36.tar.gz\nsha256 94509503ee74ea820183d070c11630ee5bc0fd8c12cb74fae953ed62e4a1ac17 Apache-LogFormat-Compiler-0.36.tar.gz\n\n# computed by scancpan\nsha256 ab941cfc4794afa2113795b167177d1b25cbc77ebadd016e5727effc2cadd96b LICENSE\n"
  },
  {
    "path": "package/perl-apache-logformat-compiler/perl-apache-logformat-compiler.mk",
    "content": "################################################################################\n#\n# perl-apache-logformat-compiler\n#\n################################################################################\n\nPERL_APACHE_LOGFORMAT_COMPILER_VERSION = 0.36\nPERL_APACHE_LOGFORMAT_COMPILER_SOURCE = Apache-LogFormat-Compiler-$(PERL_APACHE_LOGFORMAT_COMPILER_VERSION).tar.gz\nPERL_APACHE_LOGFORMAT_COMPILER_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KA/KAZEBURO\nPERL_APACHE_LOGFORMAT_COMPILER_DEPENDENCIES = host-perl-module-build-tiny\nPERL_APACHE_LOGFORMAT_COMPILER_LICENSE = Artistic or GPL-1.0+\nPERL_APACHE_LOGFORMAT_COMPILER_LICENSE_FILES = LICENSE\nPERL_APACHE_LOGFORMAT_COMPILER_DISTNAME = Apache-LogFormat-Compiler\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-appconfig/Config.in",
    "content": "config BR2_PACKAGE_PERL_APPCONFIG\n\tbool \"perl-appconfig\"\n\thelp\n\t  AppConfig is a bundle of Perl5 modules for reading\n\t  configuration files and parsing command line\n\t  arguments.\n\n\t  https://metacpan.org/release/AppConfig\n"
  },
  {
    "path": "package/perl-appconfig/perl-appconfig.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    7747d9241561ed5567d5e134b8648707 AppConfig-1.71.tar.gz\nsha256 1177027025ecb09ee64d9f9f255615c04db5e14f7536c344af632032eb887b0f AppConfig-1.71.tar.gz\n\n# computed by scancpan\nsha256 0b22dd532e4123a511d14989c4169ed56b7316cf844c29c7897a1638a4616868 LICENSE\n"
  },
  {
    "path": "package/perl-appconfig/perl-appconfig.mk",
    "content": "################################################################################\n#\n# perl-appconfig\n#\n################################################################################\n\nPERL_APPCONFIG_VERSION = 1.71\nPERL_APPCONFIG_SOURCE = AppConfig-$(PERL_APPCONFIG_VERSION).tar.gz\nPERL_APPCONFIG_SITE = $(BR2_CPAN_MIRROR)/authors/id/N/NE/NEILB\nPERL_APPCONFIG_LICENSE = Artistic or GPL-1.0+\nPERL_APPCONFIG_LICENSE_FILES = LICENSE\nPERL_APPCONFIG_DISTNAME = AppConfig\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-astro-suntime/Config.in",
    "content": "config BR2_PACKAGE_PERL_ASTRO_SUNTIME\n\tbool \"perl-astro-suntime\"\n\thelp\n\t  A functional module for calculating sunrise/sunset times.\n\n\t  https://metacpan.org/release/Astro-SunTime\n"
  },
  {
    "path": "package/perl-astro-suntime/perl-astro-suntime.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    42cb8c94de8a111ed652196925c22a45 Astro-SunTime-0.06.tar.gz\nsha256 b4a44fddfc055cc42ee67bfd8939354793da7512ea04f30578d42dc6a701112a Astro-SunTime-0.06.tar.gz\n\n# computed by scancpan\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE\n"
  },
  {
    "path": "package/perl-astro-suntime/perl-astro-suntime.mk",
    "content": "################################################################################\n#\n# perl-astro-suntime\n#\n################################################################################\n\nPERL_ASTRO_SUNTIME_VERSION = 0.06\nPERL_ASTRO_SUNTIME_SOURCE = Astro-SunTime-$(PERL_ASTRO_SUNTIME_VERSION).tar.gz\nPERL_ASTRO_SUNTIME_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RO/ROBF\nPERL_ASTRO_SUNTIME_DEPENDENCIES = host-perl-module-build\nPERL_ASTRO_SUNTIME_LICENSE = GPL-3.0\nPERL_ASTRO_SUNTIME_LICENSE_FILES = LICENSE\nPERL_ASTRO_SUNTIME_DISTNAME = Astro-SunTime\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-class-inspector/Config.in",
    "content": "config BR2_PACKAGE_PERL_CLASS_INSPECTOR\n\tbool \"perl-class-inspector\"\n\thelp\n\t  Get information about a class and its structure.\n\n\t  https://metacpan.org/pod/Class::Inspector\n"
  },
  {
    "path": "package/perl-class-inspector/perl-class-inspector.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    084c3aeec023639d21ecbaf7d4460b21 Class-Inspector-1.36.tar.gz\nsha256 cc295d23a472687c24489d58226ead23b9fdc2588e522f0b5f0747741700694e Class-Inspector-1.36.tar.gz\n\n# computed by scancpan\nsha256 401fe9c98bdb5707df71447fb93141f8cb2d85337d45505f5ae50a776a3f6666 LICENSE\n"
  },
  {
    "path": "package/perl-class-inspector/perl-class-inspector.mk",
    "content": "################################################################################\n#\n# perl-class-inspector\n#\n################################################################################\n\nPERL_CLASS_INSPECTOR_VERSION = 1.36\nPERL_CLASS_INSPECTOR_SOURCE = Class-Inspector-$(PERL_CLASS_INSPECTOR_VERSION).tar.gz\nPERL_CLASS_INSPECTOR_SITE = $(BR2_CPAN_MIRROR)/authors/id/P/PL/PLICEASE\nPERL_CLASS_INSPECTOR_LICENSE = Artistic or GPL-1.0+\nPERL_CLASS_INSPECTOR_LICENSE_FILES = LICENSE\nPERL_CLASS_INSPECTOR_DISTNAME = Class-Inspector\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-class-load/Config.in",
    "content": "config BR2_PACKAGE_PERL_CLASS_LOAD\n\tbool \"perl-class-load\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_PERL_DATA_OPTLIST # runtime\n\tselect BR2_PACKAGE_PERL_MODULE_IMPLEMENTATION # runtime\n\tselect BR2_PACKAGE_PERL_MODULE_RUNTIME # runtime\n\tselect BR2_PACKAGE_PERL_PACKAGE_STASH # runtime\n\tselect BR2_PACKAGE_PERL_TRY_TINY # runtime\n\thelp\n\t  A working (require \"Class::Name\") and more.\n\n\t  https://github.com/moose/Class-Load\n\ncomment \"perl-class-load needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-class-load/perl-class-load.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    e4c831c08df592ce8dfee0c7cfc12fd7 Class-Load-0.25.tar.gz\nsha256 2a48fa779b5297e56156380e8b32637c6c58decb4f4a7f3c7350523e11275f8f Class-Load-0.25.tar.gz\n\n# computed by scancpan\nsha256 dc030e63f20035291b90d09c2c40f296224e85878caf829ea981fc2f10910f9d LICENSE\n"
  },
  {
    "path": "package/perl-class-load/perl-class-load.mk",
    "content": "################################################################################\n#\n# perl-class-load\n#\n################################################################################\n\nPERL_CLASS_LOAD_VERSION = 0.25\nPERL_CLASS_LOAD_SOURCE = Class-Load-$(PERL_CLASS_LOAD_VERSION).tar.gz\nPERL_CLASS_LOAD_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER\nPERL_CLASS_LOAD_LICENSE = Artistic or GPL-1.0+\nPERL_CLASS_LOAD_LICENSE_FILES = LICENSE\nPERL_CLASS_LOAD_DISTNAME = Class-Load\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-class-method-modifiers/Config.in",
    "content": "config BR2_PACKAGE_PERL_CLASS_METHOD_MODIFIERS\n\tbool \"perl-class-method-modifiers\"\n\thelp\n\t  Provides Moose-like method modifiers.\n\n\t  https://github.com/moose/Class-Method-Modifiers\n"
  },
  {
    "path": "package/perl-class-method-modifiers/perl-class-method-modifiers.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    b1398e3682aa2e075b913b9f9000b596 Class-Method-Modifiers-2.13.tar.gz\nsha256 ab5807f71018a842de6b7a4826d6c1f24b8d5b09fcce5005a3309cf6ea40fd63 Class-Method-Modifiers-2.13.tar.gz\n\n# computed by scancpan\nsha256 d17e5cba8d4039f6973d5873f73b0c8949c1cffb338fafe7a57e972767546561 LICENSE\n"
  },
  {
    "path": "package/perl-class-method-modifiers/perl-class-method-modifiers.mk",
    "content": "################################################################################\n#\n# perl-class-method-modifiers\n#\n################################################################################\n\nPERL_CLASS_METHOD_MODIFIERS_VERSION = 2.13\nPERL_CLASS_METHOD_MODIFIERS_SOURCE = Class-Method-Modifiers-$(PERL_CLASS_METHOD_MODIFIERS_VERSION).tar.gz\nPERL_CLASS_METHOD_MODIFIERS_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER\nPERL_CLASS_METHOD_MODIFIERS_LICENSE = Artistic or GPL-1.0+\nPERL_CLASS_METHOD_MODIFIERS_LICENSE_FILES = LICENSE\nPERL_CLASS_METHOD_MODIFIERS_DISTNAME = Class-Method-Modifiers\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-class-std/Config.in",
    "content": "config BR2_PACKAGE_PERL_CLASS_STD\n\tbool \"perl-class-std\"\n\thelp\n\t  Support for creating standard \"inside-out\" classes.\n\n\t  https://metacpan.org/release/Class-Std\n"
  },
  {
    "path": "package/perl-class-std/perl-class-std.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    82bcc56d9769edce671b0bd0e183ec3a Class-Std-0.013.tar.gz\nsha256 bcd6d82f6c8af0fe069fced7dd165a4795b0b6e92351c7d4e5a1ab9a14fc35c6 Class-Std-0.013.tar.gz\n\n# computed by scancpan\nsha256 b8175bf3750dc54096bf1506c681b4f13262e5b82e40244e9a77730c6b72e4d6 README\n"
  },
  {
    "path": "package/perl-class-std/perl-class-std.mk",
    "content": "################################################################################\n#\n# perl-class-std\n#\n################################################################################\n\nPERL_CLASS_STD_VERSION = 0.013\nPERL_CLASS_STD_SOURCE = Class-Std-$(PERL_CLASS_STD_VERSION).tar.gz\nPERL_CLASS_STD_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CH/CHORNY\nPERL_CLASS_STD_DEPENDENCIES = host-perl-module-build\nPERL_CLASS_STD_LICENSE = Artistic or GPL-1.0+\nPERL_CLASS_STD_LICENSE_FILES = README\nPERL_CLASS_STD_DISTNAME = Class-Std\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-class-std-fast/Config.in",
    "content": "config BR2_PACKAGE_PERL_CLASS_STD_FAST\n\tbool \"perl-class-std-fast\"\n\tselect BR2_PACKAGE_PERL_CLASS_STD # runtime\n\thelp\n\t  faster but less secure than Class::Std.\n\n\t  https://metacpan.org/release/Class-Std-Fast\n"
  },
  {
    "path": "package/perl-class-std-fast/perl-class-std-fast.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    d06d084cb84f295b0aabf2eee78ef746 Class-Std-Fast-v0.0.8.tar.gz\nsha256 1bd43763c6a373183097a30e787f5d6713b0db27511c52d533266b59d2cfa780 Class-Std-Fast-v0.0.8.tar.gz\n\n# computed by scancpan\nsha256 aa1ab90c498aee078076e9a1f83e5f14bbfd841509582795ab5a9571428c0c38 README\n"
  },
  {
    "path": "package/perl-class-std-fast/perl-class-std-fast.mk",
    "content": "################################################################################\n#\n# perl-class-std-fast\n#\n################################################################################\n\nPERL_CLASS_STD_FAST_VERSION = 0.0.8\nPERL_CLASS_STD_FAST_SOURCE = Class-Std-Fast-v$(PERL_CLASS_STD_FAST_VERSION).tar.gz\nPERL_CLASS_STD_FAST_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AC/ACID\nPERL_CLASS_STD_FAST_DEPENDENCIES = host-perl-module-build\nPERL_CLASS_STD_FAST_LICENSE = Artistic or GPL-1.0+\nPERL_CLASS_STD_FAST_LICENSE_FILES = README\nPERL_CLASS_STD_FAST_DISTNAME = Class-Std-Fast\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-convert-asn1/Config.in",
    "content": "config BR2_PACKAGE_PERL_CONVERT_ASN1\n\tbool \"perl-convert-asn1\"\n\thelp\n\t  Convert between perl data structures and ASN.1 encoded\n\t  packets.\n\n\t  https://metacpan.org/release/Convert-ASN1\n"
  },
  {
    "path": "package/perl-convert-asn1/perl-convert-asn1.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  1e12b263a5042804bb1c59ddce899876  Convert-ASN1-0.31.tar.gz\nsha256  6fe4c1ba744c3a8212bf2c9b2703d93530acc153435cf2f93633540b439fbbeb  Convert-ASN1-0.31.tar.gz\n\n# computed by scancpan\nsha256  db9e46a932b02253c8bddc05a44a0c1c6979627190afb2251dd76462dd370d79  LICENSE\n"
  },
  {
    "path": "package/perl-convert-asn1/perl-convert-asn1.mk",
    "content": "################################################################################\n#\n# perl-convert-asn1\n#\n################################################################################\n\nPERL_CONVERT_ASN1_VERSION = 0.31\nPERL_CONVERT_ASN1_SOURCE = Convert-ASN1-$(PERL_CONVERT_ASN1_VERSION).tar.gz\nPERL_CONVERT_ASN1_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TI/TIMLEGGE\nPERL_CONVERT_ASN1_LICENSE = Artistic or GPL-1.0+\nPERL_CONVERT_ASN1_LICENSE_FILES = LICENSE\nPERL_CONVERT_ASN1_DISTNAME = Convert-ASN1\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-cookie-baker/Config.in",
    "content": "config BR2_PACKAGE_PERL_COOKIE_BAKER\n\tbool \"perl-cookie-baker\"\n\tselect BR2_PACKAGE_PERL_URI # runtime\n\thelp\n\t  Cookie string generator / parser.\n\n\t  https://github.com/kazeburo/Cookie-Baker\n"
  },
  {
    "path": "package/perl-cookie-baker/perl-cookie-baker.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    bc8f95893d6ec3093a62d1957e1908f2 Cookie-Baker-0.11.tar.gz\nsha256 59275f474e07c0aa3611e3e684b894e7db913333d8214420be63f12ec18cd7ab Cookie-Baker-0.11.tar.gz\n\n# computed by scancpan\nsha256 b4ce94671fa219074d4e91e2268652d6bf9764cebcc7a5e27bfc14897745ca4c LICENSE\n"
  },
  {
    "path": "package/perl-cookie-baker/perl-cookie-baker.mk",
    "content": "################################################################################\n#\n# perl-cookie-baker\n#\n################################################################################\n\nPERL_COOKIE_BAKER_VERSION = 0.11\nPERL_COOKIE_BAKER_SOURCE = Cookie-Baker-$(PERL_COOKIE_BAKER_VERSION).tar.gz\nPERL_COOKIE_BAKER_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KA/KAZEBURO\nPERL_COOKIE_BAKER_DEPENDENCIES = host-perl-module-build-tiny\nPERL_COOKIE_BAKER_LICENSE = Artistic or GPL-1.0+\nPERL_COOKIE_BAKER_LICENSE_FILES = LICENSE\nPERL_COOKIE_BAKER_DISTNAME = Cookie-Baker\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-crypt-blowfish/Config.in",
    "content": "config BR2_PACKAGE_PERL_CRYPT_BLOWFISH\n\tbool \"perl-crypt-blowfish\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Perl Blowfish encryption module.\n\n\t  https://metacpan.org/release/Crypt-Blowfish\n\ncomment \"perl-crypt-blowfish needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-crypt-blowfish/perl-crypt-blowfish.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    792b43cd4e49d2c2cf4a9f6990ff7d1b Crypt-Blowfish-2.14.tar.gz\nsha256 46b3431ffb6bf5b9cb359f79565d48407e652ad2b04fdf5ca62a69e7197a67b1 Crypt-Blowfish-2.14.tar.gz\n\n# computed by scancpan\nsha256 d61437443e6912d03677874c7baef242f28119c2c5d8b92b0f3f3660200f98d4 COPYRIGHT\n"
  },
  {
    "path": "package/perl-crypt-blowfish/perl-crypt-blowfish.mk",
    "content": "################################################################################\n#\n# perl-crypt-blowfish\n#\n################################################################################\n\nPERL_CRYPT_BLOWFISH_VERSION = 2.14\nPERL_CRYPT_BLOWFISH_SOURCE = Crypt-Blowfish-$(PERL_CRYPT_BLOWFISH_VERSION).tar.gz\nPERL_CRYPT_BLOWFISH_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DP/DPARIS\nPERL_CRYPT_BLOWFISH_LICENSE = BSD-4-Clause-like\nPERL_CRYPT_BLOWFISH_LICENSE_FILES = COPYRIGHT\nPERL_CRYPT_BLOWFISH_DISTNAME = Crypt-Blowfish\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-crypt-cbc/Config.in",
    "content": "config BR2_PACKAGE_PERL_CRYPT_CBC\n\tbool \"perl-crypt-cbc\"\n\thelp\n\t  Encrypt Data with Cipher Block Chaining Mode.\n\n\t  https://metacpan.org/release/Crypt-CBC\n"
  },
  {
    "path": "package/perl-crypt-cbc/perl-crypt-cbc.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    3db5117d60df67e3b400fe367e716be0 Crypt-CBC-2.33.tar.gz\nsha256 6a70de21b6cc7f2b100067e8e188db966e9a8001b5db6fa976e7cb5b294ae645 Crypt-CBC-2.33.tar.gz\n\n# locally computed\nsha256 9548d0beb746167270df647aa97a3e47b957adb4ec103c2cfb8f54b0005f99c7 CBC.pm\n"
  },
  {
    "path": "package/perl-crypt-cbc/perl-crypt-cbc.mk",
    "content": "################################################################################\n#\n# perl-crypt-cbc\n#\n################################################################################\n\nPERL_CRYPT_CBC_VERSION = 2.33\nPERL_CRYPT_CBC_SOURCE = Crypt-CBC-$(PERL_CRYPT_CBC_VERSION).tar.gz\nPERL_CRYPT_CBC_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LD/LDS\nPERL_CRYPT_CBC_LICENSE = Artistic\nPERL_CRYPT_CBC_LICENSE_FILES = CBC.pm\nPERL_CRYPT_CBC_DISTNAME = Crypt-CBC\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-crypt-openssl-aes/Config.in",
    "content": "config BR2_PACKAGE_PERL_CRYPT_OPENSSL_AES\n\tbool \"perl-crypt-openssl-aes\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  A Perl wrapper around OpenSSL's AES library.\n\n\t  https://metacpan.org/release/Crypt-OpenSSL-AES\n\ncomment \"perl-crypt-openssl-aes needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-crypt-openssl-aes/perl-crypt-openssl-aes.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    269db65cbf580c3174471a2cbc9a9d95 Crypt-OpenSSL-AES-0.02.tar.gz\nsha256 b66fab514edf97fc32f58da257582704a210c2b35e297d5c31b7fa2ffd08e908 Crypt-OpenSSL-AES-0.02.tar.gz\n\n# computed by scancpan\nsha256 a60b8c187cc5d90f7a43adc6be3c127abaa4c739e1e7fdcff16be358533d037f README\n"
  },
  {
    "path": "package/perl-crypt-openssl-aes/perl-crypt-openssl-aes.mk",
    "content": "################################################################################\n#\n# perl-crypt-openssl-aes\n#\n################################################################################\n\nPERL_CRYPT_OPENSSL_AES_VERSION = 0.02\nPERL_CRYPT_OPENSSL_AES_SOURCE = Crypt-OpenSSL-AES-$(PERL_CRYPT_OPENSSL_AES_VERSION).tar.gz\nPERL_CRYPT_OPENSSL_AES_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TT/TTAR\nPERL_CRYPT_OPENSSL_AES_LICENSE = Artistic or GPL-1.0+\nPERL_CRYPT_OPENSSL_AES_LICENSE_FILES = README\nPERL_CRYPT_OPENSSL_AES_DISTNAME = Crypt-OpenSSL-AES\nPERL_CRYPT_OPENSSL_AES_DEPENDENCIES = openssl\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-crypt-openssl-guess/perl-crypt-openssl-guess.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  9e86baf96828a38c967003a5e66f0c39  Crypt-OpenSSL-Guess-0.12.tar.gz\nsha256  0a18d18768cf42b49b15c9dea626199dc74346bbbc76acd3d817b9c1d2bd471d  Crypt-OpenSSL-Guess-0.12.tar.gz\n\n# computed by scancpan\nsha256  5c739f181ce7aa31d739277996ff230067dad39332e5597c0dffd36e5d784072  LICENSE\n"
  },
  {
    "path": "package/perl-crypt-openssl-guess/perl-crypt-openssl-guess.mk",
    "content": "################################################################################\n#\n# perl-crypt-openssl-guess\n#\n################################################################################\n\nPERL_CRYPT_OPENSSL_GUESS_VERSION = 0.12\nPERL_CRYPT_OPENSSL_GUESS_SOURCE = Crypt-OpenSSL-Guess-$(PERL_CRYPT_OPENSSL_GUESS_VERSION).tar.gz\nPERL_CRYPT_OPENSSL_GUESS_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AK/AKIYM\nPERL_CRYPT_OPENSSL_GUESS_LICENSE = Artistic or GPL-1.0+\nPERL_CRYPT_OPENSSL_GUESS_LICENSE_FILES = LICENSE\nPERL_CRYPT_OPENSSL_GUESS_DISTNAME = Crypt-OpenSSL-Guess\n\n$(eval $(host-perl-package))\n"
  },
  {
    "path": "package/perl-crypt-openssl-random/Config.in",
    "content": "config BR2_PACKAGE_PERL_CRYPT_OPENSSL_RANDOM\n\tbool \"perl-crypt-openssl-random\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  OpenSSL/LibreSSL pseudo-random number generator access.\n\n\t  https://metacpan.org/release/Crypt-OpenSSL-Random\n\ncomment \"perl-crypt-openssl-random needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-crypt-openssl-random/perl-crypt-openssl-random.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    bcde8d5a822c91376deda3c4f0c75fbe Crypt-OpenSSL-Random-0.15.tar.gz\nsha256 f0876faa1ba3111e39b86aa730c603211eff2905e460c72a57b61e8cf475cef4 Crypt-OpenSSL-Random-0.15.tar.gz\n\n# computed by scancpan\nsha256 fdaba2134145d3e252c5930180b2bcb13b5367ad5a8713d6868f014cd25c496f LICENSE\n"
  },
  {
    "path": "package/perl-crypt-openssl-random/perl-crypt-openssl-random.mk",
    "content": "################################################################################\n#\n# perl-crypt-openssl-random\n#\n################################################################################\n\nPERL_CRYPT_OPENSSL_RANDOM_VERSION = 0.15\nPERL_CRYPT_OPENSSL_RANDOM_SOURCE = Crypt-OpenSSL-Random-$(PERL_CRYPT_OPENSSL_RANDOM_VERSION).tar.gz\nPERL_CRYPT_OPENSSL_RANDOM_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RU/RURBAN\nPERL_CRYPT_OPENSSL_RANDOM_DEPENDENCIES = \\\n\thost-perl-crypt-openssl-guess \\\n\topenssl\nPERL_CRYPT_OPENSSL_RANDOM_LICENSE = Artistic or GPL-1.0+\nPERL_CRYPT_OPENSSL_RANDOM_LICENSE_FILES = LICENSE\nPERL_CRYPT_OPENSSL_RANDOM_DISTNAME = Crypt-OpenSSL-Random\n\n# Try as hard as possible to remedy to the brain-damage their build-system\n# suffers from: don't search for openssl, they pick the host-system one.\nPERL_CRYPT_OPENSSL_RANDOM_CONF_ENV = OPENSSL_PREFIX=$(STAGING_DIR)/usr\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-crypt-openssl-rsa/Config.in",
    "content": "config BR2_PACKAGE_PERL_CRYPT_OPENSSL_RSA\n\tbool \"perl-crypt-openssl-rsa\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_PERL_CRYPT_OPENSSL_RANDOM # runtime\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  RSA encoding and decoding, using the openSSL libraries.\n\n\t  http://github.com/toddr/Crypt-OpenSSL-RSA\n\ncomment \"perl-crypt-openssl-rsa needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    d33681e19d2094df7c26bc7a4509265e Crypt-OpenSSL-RSA-0.31.tar.gz\nsha256 4173403ad4cf76732192099f833fbfbf3cd8104e0246b3844187ae384d2c5436 Crypt-OpenSSL-RSA-0.31.tar.gz\n\n# computed by scancpan\nsha256 8a693ad3f52daeeb5ac5deceb1e1109c9c87095ed5ba6506d6d5c106e4066f5a LICENSE\n"
  },
  {
    "path": "package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.mk",
    "content": "################################################################################\n#\n# perl-crypt-openssl-rsa\n#\n################################################################################\n\nPERL_CRYPT_OPENSSL_RSA_VERSION = 0.31\nPERL_CRYPT_OPENSSL_RSA_SOURCE = Crypt-OpenSSL-RSA-$(PERL_CRYPT_OPENSSL_RSA_VERSION).tar.gz\nPERL_CRYPT_OPENSSL_RSA_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TODDR\nPERL_CRYPT_OPENSSL_RSA_DEPENDENCIES = \\\n\thost-perl-crypt-openssl-guess \\\n\tperl-crypt-openssl-random \\\n\topenssl\nPERL_CRYPT_OPENSSL_RSA_LICENSE = Artistic or GPL-1.0+\nPERL_CRYPT_OPENSSL_RSA_LICENSE_FILES = LICENSE\nPERL_CRYPT_OPENSSL_RSA_DISTNAME = Crypt-OpenSSL-RSA\n\n# Try as hard as possible to remedy to the brain-damage their build-system\n# suffers from: don't search for openssl, they pick the host-system one.\nPERL_CRYPT_OPENSSL_RSA_CONF_ENV = OPENSSL_PREFIX=$(STAGING_DIR)/usr\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-data-dump/Config.in",
    "content": "config BR2_PACKAGE_PERL_DATA_DUMP\n\tbool \"perl-data-dump\"\n\thelp\n\t  Pretty printing of data structures.\n\n\t  https://metacpan.org/release/Data-Dump\n"
  },
  {
    "path": "package/perl-data-dump/perl-data-dump.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  9bd7131ef0441e1e0e001bf85e9fae31  Data-Dump-1.25.tar.gz\nsha256  a4aa6e0ddbf39d5ad49bddfe0f89d9da864e3bc00f627125d1bc580472f53fbd  Data-Dump-1.25.tar.gz\n\n# computed by scancpan\nsha256  8bdd655ceab54bbeb1105a101f0412ec764098abf09b4e92bc430d56befa10cb  README.md\n"
  },
  {
    "path": "package/perl-data-dump/perl-data-dump.mk",
    "content": "################################################################################\n#\n# perl-data-dump\n#\n################################################################################\n\nPERL_DATA_DUMP_VERSION = 1.25\nPERL_DATA_DUMP_SOURCE = Data-Dump-$(PERL_DATA_DUMP_VERSION).tar.gz\nPERL_DATA_DUMP_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GARU\nPERL_DATA_DUMP_LICENSE = Artistic or GPL-1.0+\nPERL_DATA_DUMP_LICENSE_FILES = README.md\nPERL_DATA_DUMP_DISTNAME = Data-Dump\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-data-optlist/Config.in",
    "content": "config BR2_PACKAGE_PERL_DATA_OPTLIST\n\tbool \"perl-data-optlist\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_PERL_PARAMS_UTIL # runtime\n\tselect BR2_PACKAGE_PERL_SUB_INSTALL # runtime\n\thelp\n\t  parse and validate simple name/value option pairs.\n\n\t  https://github.com/rjbs/Data-OptList\n\ncomment \"perl-data-optlist needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-data-optlist/perl-data-optlist.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  3b2cdb7846391f9acaf4e948a9a6b21b  Data-OptList-0.112.tar.gz\nsha256  62c60ccaae88d5339ae36bcc8940b03388cf84adbf27828b1f8b300307103bab  Data-OptList-0.112.tar.gz\n\n# computed by scancpan\nsha256  712f3e40537810ba3046533fd71d877f69ab446d5e8e8a1135771804494b8b42  LICENSE\n"
  },
  {
    "path": "package/perl-data-optlist/perl-data-optlist.mk",
    "content": "################################################################################\n#\n# perl-data-optlist\n#\n################################################################################\n\nPERL_DATA_OPTLIST_VERSION = 0.112\nPERL_DATA_OPTLIST_SOURCE = Data-OptList-$(PERL_DATA_OPTLIST_VERSION).tar.gz\nPERL_DATA_OPTLIST_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RJ/RJBS\nPERL_DATA_OPTLIST_LICENSE = Artistic or GPL-1.0+\nPERL_DATA_OPTLIST_LICENSE_FILES = LICENSE\nPERL_DATA_OPTLIST_DISTNAME = Data-OptList\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-data-uuid/Config.in",
    "content": "config BR2_PACKAGE_PERL_DATA_UUID\n\tbool \"perl-data-uuid\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Globally/Universally Unique Identifiers (GUIDs/UUIDs).\n\n\t  https://metacpan.org/release/Data-UUID\n\ncomment \"perl-data-uuid needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-data-uuid/perl-data-uuid.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  13468e0fb65a0b5ce27b8628cb2f0109  Data-UUID-1.226.tar.gz\nsha256  093d57ffa0d411a94bafafae495697db26f5c9d0277198fe3f7cf2be22996453  Data-UUID-1.226.tar.gz\n\n# computed by scancpan\nsha256  0560c8eea8e1fb8173faa6c2e9b7e9f8728b8ae8250a814709a53c30b778d5fb  LICENSE\n"
  },
  {
    "path": "package/perl-data-uuid/perl-data-uuid.mk",
    "content": "################################################################################\n#\n# perl-data-uuid\n#\n################################################################################\n\nPERL_DATA_UUID_VERSION = 1.226\nPERL_DATA_UUID_SOURCE = Data-UUID-$(PERL_DATA_UUID_VERSION).tar.gz\nPERL_DATA_UUID_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RJ/RJBS\n# The license is documented at\n# https://fedoraproject.org/wiki/Licensing:MIT#HP_Variant as the \"HP\n# Variant\" of the MIT license. There is no official SPDX tag for this\n# license, but the other MIT variants are prefixed with \"MIT-\", so we\n# do the same here.\nPERL_DATA_UUID_LICENSE = MIT-HP\nPERL_DATA_UUID_LICENSE_FILES = LICENSE\nPERL_DATA_UUID_DISTNAME = Data-UUID\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-date-manip/Config.in",
    "content": "config BR2_PACKAGE_PERL_DATE_MANIP\n\tbool \"perl-date-manip\"\n\thelp\n\t  Date manipulation routines.\n\n\t  https://metacpan.org/release/Date-Manip\n"
  },
  {
    "path": "package/perl-date-manip/perl-date-manip.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  ce3447409d83d16e6dd7bea0a18f24b4  Date-Manip-6.85.tar.gz\nsha256  1662393943b7c588478ea9d975200d825f500d26fe9996f2bf7f829cfaa5ccdc  Date-Manip-6.85.tar.gz\n\n# computed by scancpan\nsha256  8ba2a138654f8b59b7e1e3ad0d4c81918b9148ff95078b172ccbb45fa241431d  LICENSE\n"
  },
  {
    "path": "package/perl-date-manip/perl-date-manip.mk",
    "content": "################################################################################\n#\n# perl-date-manip\n#\n################################################################################\n\nPERL_DATE_MANIP_VERSION = 6.85\nPERL_DATE_MANIP_SOURCE = Date-Manip-$(PERL_DATE_MANIP_VERSION).tar.gz\nPERL_DATE_MANIP_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SB/SBECK\nPERL_DATE_MANIP_LICENSE = Artistic or GPL-1.0+\nPERL_DATE_MANIP_LICENSE_FILES = LICENSE\nPERL_DATE_MANIP_DISTNAME = Date-Manip\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-datetime-tiny/Config.in",
    "content": "config BR2_PACKAGE_PERL_DATETIME_TINY\n\tbool \"perl-datetime-tiny\"\n\thelp\n\t  A date object, with as little code as possible.\n\n\t  https://github.com/dagolden/DateTime-Tiny\n"
  },
  {
    "path": "package/perl-datetime-tiny/perl-datetime-tiny.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    5ac2924652edb0cf5fda7c9d52162b3f DateTime-Tiny-1.07.tar.gz\nsha256 83568a22838cb518fbeb9e060460ec7f59d5a0b0a1cc06562954c3674d7cf7e4 DateTime-Tiny-1.07.tar.gz\n\n# computed by scancpan\nsha256 21cda7a55a8d4b32a43c654f0d4d4a1587096b35bf2a93ea12a2e3a8c2c0b88f LICENSE\n"
  },
  {
    "path": "package/perl-datetime-tiny/perl-datetime-tiny.mk",
    "content": "################################################################################\n#\n# perl-datetime-tiny\n#\n################################################################################\n\nPERL_DATETIME_TINY_VERSION = 1.07\nPERL_DATETIME_TINY_SOURCE = DateTime-Tiny-$(PERL_DATETIME_TINY_VERSION).tar.gz\nPERL_DATETIME_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DA/DAGOLDEN\nPERL_DATETIME_TINY_LICENSE = Artistic or GPL-1.0+\nPERL_DATETIME_TINY_LICENSE_FILES = LICENSE\nPERL_DATETIME_TINY_DISTNAME = DateTime-Tiny\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-dbd-mysql/Config.in",
    "content": "config BR2_PACKAGE_PERL_DBD_MYSQL\n\tbool \"perl-dbd-mysql\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_INSTALL_LIBSTDCPP # mysql\n\tdepends on BR2_USE_MMU # mysql\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # mysql\n\tselect BR2_PACKAGE_MYSQL\n\tselect BR2_PACKAGE_PERL_DBI # runtime\n\thelp\n\t  A MySQL driver for the Perl5 Database Interface (DBI).\n\n\t  http://dbi.perl.org/\n\ncomment \"perl-dbd-mysql needs a toolchain w/ dynamic library, C++, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/perl-dbd-mysql/perl-dbd-mysql.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    bdf4f4d899b8af29ebd8ebfb7438d05f DBD-mysql-4.046.tar.gz\nsha256 6165652ec959d05b97f5413fa3dff014b78a44cf6de21ae87283b28378daf1f7 DBD-mysql-4.046.tar.gz\n\n# computed by scancpan\nsha256 7a9ba29702b957805cfa8aa63bca43175625824263232dbade0010d385ab888c LICENSE\n"
  },
  {
    "path": "package/perl-dbd-mysql/perl-dbd-mysql.mk",
    "content": "################################################################################\n#\n# perl-dbd-mysql\n#\n################################################################################\n\nPERL_DBD_MYSQL_VERSION = 4.046\nPERL_DBD_MYSQL_SOURCE = DBD-mysql-$(PERL_DBD_MYSQL_VERSION).tar.gz\nPERL_DBD_MYSQL_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CA/CAPTTOFU\nPERL_DBD_MYSQL_DEPENDENCIES = \\\n\thost-perl-dbi \\\n\tmysql\nPERL_DBD_MYSQL_LICENSE = Artistic or GPL-1.0+\nPERL_DBD_MYSQL_LICENSE_FILES = LICENSE\nPERL_DBD_MYSQL_DISTNAME = DBD-mysql\n\nPERL_DBD_MYSQL_CONF_OPTS = --mysql_config=$(STAGING_DIR)/usr/bin/mysql_config\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-dbi/Config.in",
    "content": "config BR2_PACKAGE_PERL_DBI\n\tbool \"perl-dbi\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Database independent interface for Perl.\n\n\t  http://dbi.perl.org/\n\ncomment \"perl-dbi needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-dbi/perl-dbi.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    352f80b1e23769c116082a90905d7398 DBI-1.643.tar.gz\nsha256 8a2b993db560a2c373c174ee976a51027dd780ec766ae17620c20393d2e836fa DBI-1.643.tar.gz\n\n# computed by scancpan\nsha256 33453c8b0d8d474a42669ac702a13c20f39c91a34b3df4e6ca778fc2f0f711c7 LICENSE\n"
  },
  {
    "path": "package/perl-dbi/perl-dbi.mk",
    "content": "################################################################################\n#\n# perl-dbi\n#\n################################################################################\n\nPERL_DBI_VERSION = 1.643\nPERL_DBI_SOURCE = DBI-$(PERL_DBI_VERSION).tar.gz\nPERL_DBI_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TI/TIMB\nPERL_DBI_LICENSE = Artistic or GPL-1.0+\nPERL_DBI_LICENSE_FILES = LICENSE\nPERL_DBI_DISTNAME = DBI\n\n$(eval $(perl-package))\n$(eval $(host-perl-package))\n"
  },
  {
    "path": "package/perl-devel-cycle/Config.in",
    "content": "config BR2_PACKAGE_PERL_DEVEL_CYCLE\n\tbool \"perl-devel-cycle\"\n\thelp\n\t  Find memory cycles in objects.\n\n\t  https://metacpan.org/release/Devel-Cycle\n"
  },
  {
    "path": "package/perl-devel-cycle/perl-devel-cycle.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  3d9a963da87b17398fab9acbef63f277  Devel-Cycle-1.12.tar.gz\nsha256  fd3365c4d898b2b2bddbb78a46d507a18cca8490a290199547dab7f1e7390bc2  Devel-Cycle-1.12.tar.gz\n\n# computed by scancpan\nsha256  e47dfab3e7e9d20fe6313169ead2736ab97f1388003eee033dd934278649034d  README\n"
  },
  {
    "path": "package/perl-devel-cycle/perl-devel-cycle.mk",
    "content": "################################################################################\n#\n# perl-devel-cycle\n#\n################################################################################\n\nPERL_DEVEL_CYCLE_VERSION = 1.12\nPERL_DEVEL_CYCLE_SOURCE = Devel-Cycle-$(PERL_DEVEL_CYCLE_VERSION).tar.gz\nPERL_DEVEL_CYCLE_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LD/LDS\nPERL_DEVEL_CYCLE_LICENSE = Artistic or GPL-1.0+\nPERL_DEVEL_CYCLE_LICENSE_FILES = README\nPERL_DEVEL_CYCLE_DISTNAME = Devel-Cycle\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-devel-globaldestruction/Config.in",
    "content": "config BR2_PACKAGE_PERL_DEVEL_GLOBALDESTRUCTION\n\tbool \"perl-devel-globaldestruction\"\n\tselect BR2_PACKAGE_PERL_SUB_EXPORTER_PROGRESSIVE # runtime\n\thelp\n\t  Provides function returning the equivalent of\n\t  ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls.\n\n\t  https://metacpan.org/release/Devel-GlobalDestruction\n"
  },
  {
    "path": "package/perl-devel-globaldestruction/perl-devel-globaldestruction.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    24221ba322cf2dc46a1fc99b53e2380b Devel-GlobalDestruction-0.14.tar.gz\nsha256 34b8a5f29991311468fe6913cadaba75fd5d2b0b3ee3bb41fe5b53efab9154ab Devel-GlobalDestruction-0.14.tar.gz\n\n# computed by scancpan\nsha256 f7adbd1db623233e220f9157521a620dbae4918ae7088845aa61e87b7f62bb23 README\n"
  },
  {
    "path": "package/perl-devel-globaldestruction/perl-devel-globaldestruction.mk",
    "content": "################################################################################\n#\n# perl-devel-globaldestruction\n#\n################################################################################\n\nPERL_DEVEL_GLOBALDESTRUCTION_VERSION = 0.14\nPERL_DEVEL_GLOBALDESTRUCTION_SOURCE = Devel-GlobalDestruction-$(PERL_DEVEL_GLOBALDESTRUCTION_VERSION).tar.gz\nPERL_DEVEL_GLOBALDESTRUCTION_SITE = $(BR2_CPAN_MIRROR)/authors/id/H/HA/HAARG\nPERL_DEVEL_GLOBALDESTRUCTION_LICENSE = Artistic or GPL-1.0+\nPERL_DEVEL_GLOBALDESTRUCTION_LICENSE_FILES = README\nPERL_DEVEL_GLOBALDESTRUCTION_DISTNAME = Devel-GlobalDestruction\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-devel-size/Config.in",
    "content": "config BR2_PACKAGE_PERL_DEVEL_SIZE\n\tbool \"perl-devel-size\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Perl extension for finding the memory usage of Perl\n\t  variables.\n\n\t  https://metacpan.org/release/Devel-Size\n\ncomment \"perl-devel-size needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-devel-size/perl-devel-size.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  0b5335d69402c75d5ab9978027ae2f66  Devel-Size-0.83.tar.gz\nsha256  757a67e0aa59ae103ea5ca092cbecc025644ebdc326731688ffab6f8823ef4b3  Devel-Size-0.83.tar.gz\n\n# computed by scancpan\nsha256  fca4ebe3a1f329aa33a4d259c0a5b136a15a40b987c60c2dd6f1007bb01a1513  README\n"
  },
  {
    "path": "package/perl-devel-size/perl-devel-size.mk",
    "content": "################################################################################\n#\n# perl-devel-size\n#\n################################################################################\n\nPERL_DEVEL_SIZE_VERSION = 0.83\nPERL_DEVEL_SIZE_SOURCE = Devel-Size-$(PERL_DEVEL_SIZE_VERSION).tar.gz\nPERL_DEVEL_SIZE_SITE = $(BR2_CPAN_MIRROR)/authors/id/N/NW/NWCLARK\nPERL_DEVEL_SIZE_LICENSE = Artistic or GPL-1.0+\nPERL_DEVEL_SIZE_LICENSE_FILES = README\nPERL_DEVEL_SIZE_DISTNAME = Devel-Size\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-devel-stacktrace/Config.in",
    "content": "config BR2_PACKAGE_PERL_DEVEL_STACKTRACE\n\tbool \"perl-devel-stacktrace\"\n\thelp\n\t  An object representing a stack trace.\n\n\t  http://metacpan.org/release/Devel-StackTrace\n"
  },
  {
    "path": "package/perl-devel-stacktrace/perl-devel-stacktrace.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    a5b09f7be7f2b10b525a9740676906d8 Devel-StackTrace-2.04.tar.gz\nsha256 cd3c03ed547d3d42c61fa5814c98296139392e7971c092e09a431f2c9f5d6855 Devel-StackTrace-2.04.tar.gz\n\n# computed by scancpan\nsha256 dbd3162d261db5b40cac4d85afba619ec6a196398003c57b85c2333e7ef4c393 LICENSE\n"
  },
  {
    "path": "package/perl-devel-stacktrace/perl-devel-stacktrace.mk",
    "content": "################################################################################\n#\n# perl-devel-stacktrace\n#\n################################################################################\n\nPERL_DEVEL_STACKTRACE_VERSION = 2.04\nPERL_DEVEL_STACKTRACE_SOURCE = Devel-StackTrace-$(PERL_DEVEL_STACKTRACE_VERSION).tar.gz\nPERL_DEVEL_STACKTRACE_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DR/DROLSKY\nPERL_DEVEL_STACKTRACE_LICENSE = Artistic-2.0\nPERL_DEVEL_STACKTRACE_LICENSE_FILES = LICENSE\nPERL_DEVEL_STACKTRACE_DISTNAME = Devel-StackTrace\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-devel-stacktrace-ashtml/Config.in",
    "content": "config BR2_PACKAGE_PERL_DEVEL_STACKTRACE_ASHTML\n\tbool \"perl-devel-stacktrace-ashtml\"\n\tselect BR2_PACKAGE_PERL_DEVEL_STACKTRACE # runtime\n\thelp\n\t  Displays stack trace in HTML.\n\n\t  https://github.com/miyagawa/Devel-StackTrace-AsHTML\n"
  },
  {
    "path": "package/perl-devel-stacktrace-ashtml/perl-devel-stacktrace-ashtml.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    4ec8bd92e4a765a7cabf402db9640412 Devel-StackTrace-AsHTML-0.15.tar.gz\nsha256 6283dbe2197e2f20009cc4b449997742169cdd951bfc44cbc6e62c2a962d3147 Devel-StackTrace-AsHTML-0.15.tar.gz\n\n# computed by scancpan\nsha256 ffecf60c52b85d56c928f5eac889b5044243c3907b810ef640c9f02fbce567ac LICENSE\n"
  },
  {
    "path": "package/perl-devel-stacktrace-ashtml/perl-devel-stacktrace-ashtml.mk",
    "content": "################################################################################\n#\n# perl-devel-stacktrace-ashtml\n#\n################################################################################\n\nPERL_DEVEL_STACKTRACE_ASHTML_VERSION = 0.15\nPERL_DEVEL_STACKTRACE_ASHTML_SOURCE = Devel-StackTrace-AsHTML-$(PERL_DEVEL_STACKTRACE_ASHTML_VERSION).tar.gz\nPERL_DEVEL_STACKTRACE_ASHTML_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MI/MIYAGAWA\nPERL_DEVEL_STACKTRACE_ASHTML_LICENSE = Artistic or GPL-1.0+\nPERL_DEVEL_STACKTRACE_ASHTML_LICENSE_FILES = LICENSE\nPERL_DEVEL_STACKTRACE_ASHTML_DISTNAME = Devel-StackTrace-AsHTML\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-device-serialport/Config.in",
    "content": "config BR2_PACKAGE_PERL_DEVICE_SERIALPORT\n\tbool \"perl-device-serialport\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Linux/POSIX emulation of Win32::SerialPort functions.\n\n\t  https://metacpan.org/release/Device-SerialPort\n\ncomment \"perl-device-serialport needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-device-serialport/perl-device-serialport.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    82c698151f934eb28c65d1838cee7d9e Device-SerialPort-1.04.tar.gz\nsha256 d392567cb39b4ea606c0e0acafd8ed72320311b995336ece5fcefcf9b150e9d7 Device-SerialPort-1.04.tar.gz\n\n# computed by scancpan\nsha256 59432e84eca65c10c4b627f8af0b00833685856b68242b816aea2a38283a124c README\n"
  },
  {
    "path": "package/perl-device-serialport/perl-device-serialport.mk",
    "content": "################################################################################\n#\n# perl-device-serialport\n#\n################################################################################\n\nPERL_DEVICE_SERIALPORT_VERSION = 1.04\nPERL_DEVICE_SERIALPORT_SOURCE = Device-SerialPort-$(PERL_DEVICE_SERIALPORT_VERSION).tar.gz\nPERL_DEVICE_SERIALPORT_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CO/COOK\nPERL_DEVICE_SERIALPORT_LICENSE = Artistic or GPL-1.0+\nPERL_DEVICE_SERIALPORT_LICENSE_FILES = README\nPERL_DEVICE_SERIALPORT_DISTNAME = Device-SerialPort\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-digest-hmac/Config.in",
    "content": "config BR2_PACKAGE_PERL_DIGEST_HMAC\n\tbool \"perl-digest-hmac\"\n\thelp\n\t  Keyed-Hashing for Message Authentication.\n\n\t  http://metacpan.org/release/Digest-HMAC\n"
  },
  {
    "path": "package/perl-digest-hmac/perl-digest-hmac.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  746a5edffd1485d7500e005730c271c8  Digest-HMAC-1.04.tar.gz\nsha256  d6bc8156aa275c44d794b7c18f44cdac4a58140245c959e6b19b2c3838b08ed4  Digest-HMAC-1.04.tar.gz\n\n# computed by scancpan\nsha256  cb9ff694d1769f450dd5c400204aa921d2fb3db90fcb21674a39f3725c4255c1  LICENSE\n"
  },
  {
    "path": "package/perl-digest-hmac/perl-digest-hmac.mk",
    "content": "################################################################################\n#\n# perl-digest-hmac\n#\n################################################################################\n\nPERL_DIGEST_HMAC_VERSION = 1.04\nPERL_DIGEST_HMAC_SOURCE = Digest-HMAC-$(PERL_DIGEST_HMAC_VERSION).tar.gz\nPERL_DIGEST_HMAC_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AR/ARODLAND\nPERL_DIGEST_HMAC_LICENSE = Artistic or GPL-1.0+\nPERL_DIGEST_HMAC_LICENSE_FILES = LICENSE\nPERL_DIGEST_HMAC_DISTNAME = Digest-HMAC\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-digest-sha1/Config.in",
    "content": "config BR2_PACKAGE_PERL_DIGEST_SHA1\n\tbool \"perl-digest-sha1\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Perl interface to the SHA-1 algorithm.\n\n\t  https://metacpan.org/release/Digest-SHA1\n\ncomment \"perl-digest-sha1 needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-digest-sha1/perl-digest-sha1.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    bd22388f268434f2b24f64e28bf1aa35 Digest-SHA1-2.13.tar.gz\nsha256 68c1dac2187421f0eb7abf71452a06f190181b8fc4b28ededf5b90296fb943cc Digest-SHA1-2.13.tar.gz\n\n# computed by scancpan\nsha256 805bee77fab9c72b0bfb452bb623b278f1767de62011e1814de2a6f6115439c8 README\n"
  },
  {
    "path": "package/perl-digest-sha1/perl-digest-sha1.mk",
    "content": "################################################################################\n#\n# perl-digest-sha1\n#\n################################################################################\n\nPERL_DIGEST_SHA1_VERSION = 2.13\nPERL_DIGEST_SHA1_SOURCE = Digest-SHA1-$(PERL_DIGEST_SHA1_VERSION).tar.gz\nPERL_DIGEST_SHA1_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS\nPERL_DIGEST_SHA1_LICENSE = Artistic or GPL-1.0+\nPERL_DIGEST_SHA1_LICENSE_FILES = README\nPERL_DIGEST_SHA1_DISTNAME = Digest-SHA1\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-dist-checkconflicts/Config.in",
    "content": "config BR2_PACKAGE_PERL_DIST_CHECKCONFLICTS\n\tbool \"perl-dist-checkconflicts\"\n\tselect BR2_PACKAGE_PERL_MODULE_RUNTIME # runtime\n\thelp\n\t  declare version conflicts for your dist.\n\n\t  http://metacpan.org/release/Dist-CheckConflicts\n"
  },
  {
    "path": "package/perl-dist-checkconflicts/perl-dist-checkconflicts.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    c8725a92b9169708b0f63036812070f2 Dist-CheckConflicts-0.11.tar.gz\nsha256 ea844b9686c94d666d9d444321d764490b2cde2f985c4165b4c2c77665caedc4 Dist-CheckConflicts-0.11.tar.gz\n\n# computed by scancpan\nsha256 b4e0637ed96008ddcbf7e0ddeb73967df3d0b4dc62a6b7fdb86eac37018cb12e LICENSE\n"
  },
  {
    "path": "package/perl-dist-checkconflicts/perl-dist-checkconflicts.mk",
    "content": "################################################################################\n#\n# perl-dist-checkconflicts\n#\n################################################################################\n\nPERL_DIST_CHECKCONFLICTS_VERSION = 0.11\nPERL_DIST_CHECKCONFLICTS_SOURCE = Dist-CheckConflicts-$(PERL_DIST_CHECKCONFLICTS_VERSION).tar.gz\nPERL_DIST_CHECKCONFLICTS_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DO/DOY\nPERL_DIST_CHECKCONFLICTS_LICENSE = Artistic or GPL-1.0+\nPERL_DIST_CHECKCONFLICTS_LICENSE_FILES = LICENSE\nPERL_DIST_CHECKCONFLICTS_DISTNAME = Dist-CheckConflicts\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-encode-detect/Config.in",
    "content": "config BR2_PACKAGE_PERL_ENCODE_DETECT\n\tbool \"perl-encode-detect\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  An Encode::Encoding subclass that detects the encoding of\n\t  data.\n\n\t  https://metacpan.org/release/Encode-Detect\n\ncomment \"perl-encode-detect needs a toolchain w/ C++, dynamic library\"\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/perl-encode-detect/perl-encode-detect.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    ee9faf55d7105c97b02b8ebe590819c7 Encode-Detect-1.01.tar.gz\nsha256 834d893aa7db6ce3f158afbd0e432d6ed15a276e0940db0a74be13fd9c4bbbf1 Encode-Detect-1.01.tar.gz\n\n# computed by scancpan\nsha256 53692a2ed6c6a2c6ec9b32dd0b820dfae91e0a1fcdf625ca9ed0bdf8705fcc4f LICENSE\n"
  },
  {
    "path": "package/perl-encode-detect/perl-encode-detect.mk",
    "content": "################################################################################\n#\n# perl-encode-detect\n#\n################################################################################\n\nPERL_ENCODE_DETECT_VERSION = 1.01\nPERL_ENCODE_DETECT_SOURCE = Encode-Detect-$(PERL_ENCODE_DETECT_VERSION).tar.gz\nPERL_ENCODE_DETECT_SITE = $(BR2_CPAN_MIRROR)/authors/id/J/JG/JGMYERS\nPERL_ENCODE_DETECT_DEPENDENCIES = host-perl-module-build\nPERL_ENCODE_DETECT_LICENSE = MPL-1.1\nPERL_ENCODE_DETECT_LICENSE_FILES = LICENSE\nPERL_ENCODE_DETECT_DISTNAME = Encode-Detect\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-encode-locale/Config.in",
    "content": "config BR2_PACKAGE_PERL_ENCODE_LOCALE\n\tbool \"perl-encode-locale\"\n\thelp\n\t  Determine the locale encoding.\n\n\t  https://metacpan.org/release/Encode-Locale\n"
  },
  {
    "path": "package/perl-encode-locale/perl-encode-locale.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    fcfdb8e4ee34bcf62aed429b4a23db27 Encode-Locale-1.05.tar.gz\nsha256 176fa02771f542a4efb1dbc2a4c928e8f4391bf4078473bd6040d8f11adb0ec1 Encode-Locale-1.05.tar.gz\n\n# computed by scancpan\nsha256 edfeacafbed5a0f2c4a2a3db3fb0274a7f210768d01c853c60b7feac841c83c8 README\n"
  },
  {
    "path": "package/perl-encode-locale/perl-encode-locale.mk",
    "content": "################################################################################\n#\n# perl-encode-locale\n#\n################################################################################\n\nPERL_ENCODE_LOCALE_VERSION = 1.05\nPERL_ENCODE_LOCALE_SOURCE = Encode-Locale-$(PERL_ENCODE_LOCALE_VERSION).tar.gz\nPERL_ENCODE_LOCALE_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS\nPERL_ENCODE_LOCALE_LICENSE = Artistic or GPL-1.0+\nPERL_ENCODE_LOCALE_LICENSE_FILES = README\nPERL_ENCODE_LOCALE_DISTNAME = Encode-Locale\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-exporter-tiny/Config.in",
    "content": "config BR2_PACKAGE_PERL_EXPORTER_TINY\n\tbool \"perl-exporter-tiny\"\n\thelp\n\t  an exporter with the features of Sub::Exporter but only core\n\t  dependencies.\n\n\t  https://metacpan.org/release/Exporter-Tiny\n"
  },
  {
    "path": "package/perl-exporter-tiny/perl-exporter-tiny.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  485897322a2514b4d6ca90b2daacb7cd  Exporter-Tiny-1.002002.tar.gz\nsha256  00f0b95716b18157132c6c118ded8ba31392563d19e490433e9a65382e707101  Exporter-Tiny-1.002002.tar.gz\n\n# computed by scancpan\nsha256  f4cb223c8ac37d6ccd0e78b2892ca54a48a6adbe6a271c3c17c0226646297e66  COPYRIGHT\nsha256  1fb7395e76eabf94c421912d7d0a4f7fa745d49e1acb76b222c21d605b66bd25  LICENSE\n"
  },
  {
    "path": "package/perl-exporter-tiny/perl-exporter-tiny.mk",
    "content": "################################################################################\n#\n# perl-exporter-tiny\n#\n################################################################################\n\nPERL_EXPORTER_TINY_VERSION = 1.002002\nPERL_EXPORTER_TINY_SOURCE = Exporter-Tiny-$(PERL_EXPORTER_TINY_VERSION).tar.gz\nPERL_EXPORTER_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TOBYINK\nPERL_EXPORTER_TINY_LICENSE = Artistic or GPL-1.0+\nPERL_EXPORTER_TINY_LICENSE_FILES = COPYRIGHT LICENSE\nPERL_EXPORTER_TINY_DISTNAME = Exporter-Tiny\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-extutils-config/perl-extutils-config.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    565a7b09c7cac5907a25bbe2c959a717 ExtUtils-Config-0.008.tar.gz\nsha256 ae5104f634650dce8a79b7ed13fb59d67a39c213a6776cfdaa3ee749e62f1a8c ExtUtils-Config-0.008.tar.gz\n\n# computed by scancpan\nsha256 33b39fda54675d4d681764049e27b537cac12213aa6650667abea43662264ddc LICENSE\n"
  },
  {
    "path": "package/perl-extutils-config/perl-extutils-config.mk",
    "content": "################################################################################\n#\n# perl-extutils-config\n#\n################################################################################\n\nPERL_EXTUTILS_CONFIG_VERSION = 0.008\nPERL_EXTUTILS_CONFIG_SOURCE = ExtUtils-Config-$(PERL_EXTUTILS_CONFIG_VERSION).tar.gz\nPERL_EXTUTILS_CONFIG_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LE/LEONT\nPERL_EXTUTILS_CONFIG_LICENSE = Artistic or GPL-1.0+\nPERL_EXTUTILS_CONFIG_LICENSE_FILES = LICENSE\nPERL_EXTUTILS_CONFIG_DISTNAME = ExtUtils-Config\n\n$(eval $(host-perl-package))\n"
  },
  {
    "path": "package/perl-extutils-helpers/perl-extutils-helpers.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    83b00c1e401321c425ae5db6b2b2fd12 ExtUtils-Helpers-0.026.tar.gz\nsha256 de901b6790a4557cf4ec908149e035783b125bf115eb9640feb1bc1c24c33416 ExtUtils-Helpers-0.026.tar.gz\n\n# computed by scancpan\nsha256 e5530d0ebc8662df3a970644d867faf12760b1a95ca6e2bf1c5f9af410a418e0 LICENSE\n"
  },
  {
    "path": "package/perl-extutils-helpers/perl-extutils-helpers.mk",
    "content": "################################################################################\n#\n# perl-extutils-helpers\n#\n################################################################################\n\nPERL_EXTUTILS_HELPERS_VERSION = 0.026\nPERL_EXTUTILS_HELPERS_SOURCE = ExtUtils-Helpers-$(PERL_EXTUTILS_HELPERS_VERSION).tar.gz\nPERL_EXTUTILS_HELPERS_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LE/LEONT\nPERL_EXTUTILS_HELPERS_LICENSE = Artistic or GPL-1.0+\nPERL_EXTUTILS_HELPERS_LICENSE_FILES = LICENSE\nPERL_EXTUTILS_HELPERS_DISTNAME = ExtUtils-Helpers\n\n$(eval $(host-perl-package))\n"
  },
  {
    "path": "package/perl-extutils-installpaths/perl-extutils-installpaths.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    9a8d66aab1ffec98ea260faf03ac612b ExtUtils-InstallPaths-0.012.tar.gz\nsha256 84735e3037bab1fdffa3c2508567ad412a785c91599db3c12593a50a1dd434ed ExtUtils-InstallPaths-0.012.tar.gz\n\n# computed by scancpan\nsha256 b95d38ac031587625625d92fbd2ee1d5df0d02606057d680e7dcf3598fe629f9 LICENSE\n"
  },
  {
    "path": "package/perl-extutils-installpaths/perl-extutils-installpaths.mk",
    "content": "################################################################################\n#\n# perl-extutils-installpaths\n#\n################################################################################\n\nPERL_EXTUTILS_INSTALLPATHS_VERSION = 0.012\nPERL_EXTUTILS_INSTALLPATHS_SOURCE = ExtUtils-InstallPaths-$(PERL_EXTUTILS_INSTALLPATHS_VERSION).tar.gz\nPERL_EXTUTILS_INSTALLPATHS_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LE/LEONT\nHOST_PERL_EXTUTILS_INSTALLPATHS_DEPENDENCIES = host-perl-extutils-config\nPERL_EXTUTILS_INSTALLPATHS_LICENSE = Artistic or GPL-1.0+\nPERL_EXTUTILS_INSTALLPATHS_LICENSE_FILES = LICENSE\nPERL_EXTUTILS_INSTALLPATHS_DISTNAME = ExtUtils-InstallPaths\n\n$(eval $(host-perl-package))\n"
  },
  {
    "path": "package/perl-extutils-pkgconfig/perl-extutils-pkgconfig.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  b86318f2b6ac6af3ee985299e1e38fe5  ExtUtils-PkgConfig-1.16.tar.gz\nsha256  bbeaced995d7d8d10cfc51a3a5a66da41ceb2bc04fedcab50e10e6300e801c6e  ExtUtils-PkgConfig-1.16.tar.gz\n\n# computed by scancpan\nsha256  1ca66d6d9d2e14426825889848f0b5b4d4e153afcd74b8f42a1f2937c3a9973d  README\n"
  },
  {
    "path": "package/perl-extutils-pkgconfig/perl-extutils-pkgconfig.mk",
    "content": "################################################################################\n#\n# perl-extutils-pkgconfig\n#\n################################################################################\n\nPERL_EXTUTILS_PKGCONFIG_VERSION = 1.16\nPERL_EXTUTILS_PKGCONFIG_SOURCE = ExtUtils-PkgConfig-$(PERL_EXTUTILS_PKGCONFIG_VERSION).tar.gz\nPERL_EXTUTILS_PKGCONFIG_SITE = $(BR2_CPAN_MIRROR)/authors/id/X/XA/XAOC\nPERL_EXTUTILS_PKGCONFIG_LICENSE = LGPL-2.1\nPERL_EXTUTILS_PKGCONFIG_LICENSE_FILES = README\nPERL_EXTUTILS_PKGCONFIG_DISTNAME = ExtUtils-PkgConfig\n\nHOST_PERL_EXTUTILS_PKGCONFIG_DEPENDENCIES = host-pkgconf\n\nHOST_PERL_EXTUTILS_PKGCONFIG_CONF_ENV = PATH=$(BR_PATH)\n\n$(eval $(host-perl-package))\n"
  },
  {
    "path": "package/perl-file-listing/Config.in",
    "content": "config BR2_PACKAGE_PERL_FILE_LISTING\n\tbool \"perl-file-listing\"\n\tselect BR2_PACKAGE_PERL_HTTP_DATE # runtime\n\thelp\n\t  parse directory listing.\n\n\t  https://metacpan.org/release/File-Listing\n"
  },
  {
    "path": "package/perl-file-listing/perl-file-listing.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  cf60a79563185391831613178a79b4cd  File-Listing-6.14.tar.gz\nsha256  15b3a4871e23164a36f226381b74d450af41f12cc94985f592a669fcac7b48ff  File-Listing-6.14.tar.gz\n\n# computed by scancpan\nsha256  7f0ccec295e6d7d2be1439cedd7caf6cc6247191f4c10ac56d91ee9bc265ba02  LICENSE\n"
  },
  {
    "path": "package/perl-file-listing/perl-file-listing.mk",
    "content": "################################################################################\n#\n# perl-file-listing\n#\n################################################################################\n\nPERL_FILE_LISTING_VERSION = 6.14\nPERL_FILE_LISTING_SOURCE = File-Listing-$(PERL_FILE_LISTING_VERSION).tar.gz\nPERL_FILE_LISTING_SITE = $(BR2_CPAN_MIRROR)/authors/id/P/PL/PLICEASE\nPERL_FILE_LISTING_LICENSE = Artistic or GPL-1.0+\nPERL_FILE_LISTING_LICENSE_FILES = LICENSE\nPERL_FILE_LISTING_DISTNAME = File-Listing\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-file-sharedir/Config.in",
    "content": "config BR2_PACKAGE_PERL_FILE_SHAREDIR\n\tbool \"perl-file-sharedir\"\n\tselect BR2_PACKAGE_PERL_CLASS_INSPECTOR # runtime\n\thelp\n\t  Locate per-dist and per-module shared files.\n\n\t  https://metacpan.org/release/File-ShareDir\n"
  },
  {
    "path": "package/perl-file-sharedir/perl-file-sharedir.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  0084f730f4e3d4d89703d92b3ea82f54  File-ShareDir-1.118.tar.gz\nsha256  3bb2a20ba35df958dc0a4f2306fc05d903d8b8c4de3c8beefce17739d281c958  File-ShareDir-1.118.tar.gz\n\n# computed by scancpan\nsha256  db57983ce0a3bce54900b5a3a3a69e9a593e7b07d0f58dd9f87ac9b016ff4a6b  LICENSE\n"
  },
  {
    "path": "package/perl-file-sharedir/perl-file-sharedir.mk",
    "content": "################################################################################\n#\n# perl-file-sharedir\n#\n################################################################################\n\nPERL_FILE_SHAREDIR_VERSION = 1.118\nPERL_FILE_SHAREDIR_SOURCE = File-ShareDir-$(PERL_FILE_SHAREDIR_VERSION).tar.gz\nPERL_FILE_SHAREDIR_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RE/REHSACK\nPERL_FILE_SHAREDIR_DEPENDENCIES = host-perl-file-sharedir-install\nPERL_FILE_SHAREDIR_LICENSE = Artistic or GPL-1.0+\nPERL_FILE_SHAREDIR_LICENSE_FILES = LICENSE\nPERL_FILE_SHAREDIR_DISTNAME = File-ShareDir\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-file-sharedir-install/perl-file-sharedir-install.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    5eabd44a5d7d84bf2e8e502491226287 File-ShareDir-Install-0.13.tar.gz\nsha256 45befdf0d95cbefe7c25a1daf293d85f780d6d2576146546e6828aad26e580f9 File-ShareDir-Install-0.13.tar.gz\n\n# computed by scancpan\nsha256 c207ca1c71c16a443d875a78d8aeccfbe550da502cd7fda24819548afb04fb5c LICENSE\n"
  },
  {
    "path": "package/perl-file-sharedir-install/perl-file-sharedir-install.mk",
    "content": "################################################################################\n#\n# perl-file-sharedir-install\n#\n################################################################################\n\nPERL_FILE_SHAREDIR_INSTALL_VERSION = 0.13\nPERL_FILE_SHAREDIR_INSTALL_SOURCE = File-ShareDir-Install-$(PERL_FILE_SHAREDIR_INSTALL_VERSION).tar.gz\nPERL_FILE_SHAREDIR_INSTALL_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER\nPERL_FILE_SHAREDIR_INSTALL_LICENSE = Artistic or GPL-1.0+\nPERL_FILE_SHAREDIR_INSTALL_LICENSE_FILES = LICENSE\nPERL_FILE_SHAREDIR_INSTALL_DISTNAME = File-ShareDir-Install\n\n$(eval $(host-perl-package))\n"
  },
  {
    "path": "package/perl-file-slurp/Config.in",
    "content": "config BR2_PACKAGE_PERL_FILE_SLURP\n\tbool \"perl-file-slurp\"\n\thelp\n\t  Simple and Efficient Reading/Writing/Modifying of Complete\n\t  Files.\n\n\t  https://metacpan.org/release/File-Slurp\n"
  },
  {
    "path": "package/perl-file-slurp/perl-file-slurp.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  a10ddfcbe153fc8d0076936ee83b98ed  File-Slurp-9999.32.tar.gz\nsha256  4c3c21992a9d42be3a79dd74a3c83d27d38057269d65509a2f555ea0fb2bc5b0  File-Slurp-9999.32.tar.gz\n\n# computed by scancpan\nsha256  d1be945657536c93caf481b9f3c73fd1952ef66388c664e29021ab91d4fe47e8  README.md\n"
  },
  {
    "path": "package/perl-file-slurp/perl-file-slurp.mk",
    "content": "################################################################################\n#\n# perl-file-slurp\n#\n################################################################################\n\nPERL_FILE_SLURP_VERSION = 9999.32\nPERL_FILE_SLURP_SOURCE = File-Slurp-$(PERL_FILE_SLURP_VERSION).tar.gz\nPERL_FILE_SLURP_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CA/CAPOEIRAB\nPERL_FILE_SLURP_LICENSE = Artistic or GPL-1.0+\nPERL_FILE_SLURP_LICENSE_FILES = README.md\nPERL_FILE_SLURP_DISTNAME = File-Slurp\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-file-util/Config.in",
    "content": "config BR2_PACKAGE_PERL_FILE_UTIL\n\tbool \"perl-file-util\"\n\thelp\n\t  Easy, versatile, portable file handling.\n\n\t  https://github.com/tommybutler/file-util/wiki\n"
  },
  {
    "path": "package/perl-file-util/perl-file-util.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  093fe77c4658f98375c7f6cc68694948  File-Util-4.201720.tar.gz\nsha256  d4491021850d5c5cbd702c7e4744858079841d2fa93f1c2d09ddc9a7863608df  File-Util-4.201720.tar.gz\n\n# computed by scancpan\nsha256  5f3732812570654ba911e45ec4e5f7353f4b63747ebfc506c543e8fb1ccf797f  COPYING\nsha256  996b77ca668f16a443ed14758fce492bddd9f55fe831ee8353274c89191b8544  LICENSE\n"
  },
  {
    "path": "package/perl-file-util/perl-file-util.mk",
    "content": "################################################################################\n#\n# perl-file-util\n#\n################################################################################\n\nPERL_FILE_UTIL_VERSION = 4.201720\nPERL_FILE_UTIL_SOURCE = File-Util-$(PERL_FILE_UTIL_VERSION).tar.gz\nPERL_FILE_UTIL_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TOMMY\nPERL_FILE_UTIL_DEPENDENCIES = host-perl-module-build\nPERL_FILE_UTIL_LICENSE = Artistic or GPL-1.0+\nPERL_FILE_UTIL_LICENSE_FILES = COPYING LICENSE\nPERL_FILE_UTIL_DISTNAME = File-Util\nHOST_PERL_FILE_UTIL_DEPENDENCIES = host-perl-module-build\n\n$(eval $(perl-package))\n$(eval $(host-perl-package))\n"
  },
  {
    "path": "package/perl-filesys-notify-simple/Config.in",
    "content": "config BR2_PACKAGE_PERL_FILESYS_NOTIFY_SIMPLE\n\tbool \"perl-filesys-notify-simple\"\n\thelp\n\t  Simple and dumb file system watcher.\n\n\t  https://github.com/miyagawa/Filesys-Notify-Simple\n"
  },
  {
    "path": "package/perl-filesys-notify-simple/perl-filesys-notify-simple.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    4a3ca3098b2455346fe24a66c94d2151 Filesys-Notify-Simple-0.14.tar.gz\nsha256 1fda712d4ba5e1868159ed35f6f8efbfae9d435d6376f5606d533bcb080555a4 Filesys-Notify-Simple-0.14.tar.gz\n\n# computed by scancpan\nsha256 9a5cceb9fdb0064b57eeca0e7ad2af1e57eff51320a13083fc22930d2a190ed7 LICENSE\n"
  },
  {
    "path": "package/perl-filesys-notify-simple/perl-filesys-notify-simple.mk",
    "content": "################################################################################\n#\n# perl-filesys-notify-simple\n#\n################################################################################\n\nPERL_FILESYS_NOTIFY_SIMPLE_VERSION = 0.14\nPERL_FILESYS_NOTIFY_SIMPLE_SOURCE = Filesys-Notify-Simple-$(PERL_FILESYS_NOTIFY_SIMPLE_VERSION).tar.gz\nPERL_FILESYS_NOTIFY_SIMPLE_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MI/MIYAGAWA\nPERL_FILESYS_NOTIFY_SIMPLE_LICENSE = Artistic or GPL-1.0+\nPERL_FILESYS_NOTIFY_SIMPLE_LICENSE_FILES = LICENSE\nPERL_FILESYS_NOTIFY_SIMPLE_DISTNAME = Filesys-Notify-Simple\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-gd/0001-Makefile.PL-fix-cross-compilation-with-gdlib.pc.patch",
    "content": "From 11dc017e902397c452331425eb6101b3315572fa Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 24 Jan 2021 10:59:31 +0100\nSubject: [PATCH] Makefile.PL: fix cross-compilation with gdlib.pc\n\nCross-compilation will fail if gdlib.pc does not contain any cflags.\nIndeed, if cflags is empty, Makefile.PL will use the default value for\nINC (i.e. -I/usr/include -I/usr/include/gd)\n\nIt should be noted that gdlib-config has been dropped from gd since\nversion 2.3.0\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: probably not upstreamable]\n---\n Makefile.PL | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile.PL b/Makefile.PL\nindex 25f2f93..7da3651 100644\n--- a/Makefile.PL\n+++ b/Makefile.PL\n@@ -47,7 +47,7 @@ If you want to try to compile anyway, please rerun this script with the option -\n END\n }\n \n-@INC     = qw(-I/usr/include -I/usr/include/gd) unless @INC;\n+#@INC     = qw(-I/usr/include -I/usr/include/gd) unless @INC;\n @LIBPATH = qw(-L/usr/lib/X11 -L/usr/X11R6/lib -L/usr/X11/lib -L/usr/lib) unless @LIBPATH;\n @LIBS    = qw(-lgd) unless @LIBS;\n \n-- \n2.29.2\n\n"
  },
  {
    "path": "package/perl-gd/Config.in",
    "content": "config BR2_PACKAGE_PERL_GD\n\tbool \"perl-gd\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_GD\n\thelp\n\t  Perl interface to the gd2 graphics library.\n\n\t  https://metacpan.org/release/GD\n\ncomment \"perl-gd needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-gd/perl-gd.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  c2bf1ca56d15e33d2432e4d8ba5aeadf  GD-2.73.tar.gz\nsha256  491c9e73238522e2987e66725a20935f4268a3864202ecbaf4659a1691ba322b  GD-2.73.tar.gz\n\n# computed by scancpan\nsha256  1e2250289d6df4ba1c24f7550982d7ffaff2c97cd02e847659406e1afd28e83f  LICENSE\n"
  },
  {
    "path": "package/perl-gd/perl-gd.mk",
    "content": "################################################################################\n#\n# perl-gd\n#\n################################################################################\n\nPERL_GD_VERSION = 2.73\nPERL_GD_SOURCE = GD-$(PERL_GD_VERSION).tar.gz\nPERL_GD_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RU/RURBAN\nPERL_GD_DEPENDENCIES = host-perl-extutils-pkgconfig zlib gd\nPERL_GD_LICENSE = Artistic or GPL-1.0+\nPERL_GD_LICENSE_FILES = LICENSE\nPERL_GD_DISTNAME = GD\n\nPERL_GD_CONF_ENV = \\\n\tPATH=$(BR_PATH) \\\n\tPKG_CONFIG_PATH=\"$(STAGING_DIR)/usr/lib/pkgconfig\"\n\nifeq ($(BR2_PACKAGE_FONTCONFIG),y)\nPERL_GD_DEPENDENCIES += fontconfig\nPERL_GD_OPTIONS += FONTCONFIG\nPERL_GD_CONF_OPTS += -lib_fontconfig_path=$(STAGING_DIR)/usr\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nPERL_GD_DEPENDENCIES += freetype\nPERL_GD_OPTIONS += FT\nPERL_GD_CONF_OPTS += -lib_ft_path=$(STAGING_DIR)/usr\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nPERL_GD_DEPENDENCIES += jpeg\nPERL_GD_OPTIONS += JPEG\nPERL_GD_CONF_OPTS += -lib_jpeg_path=$(STAGING_DIR)/usr\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nPERL_GD_DEPENDENCIES += libpng\nPERL_GD_OPTIONS += PNG\nPERL_GD_CONF_OPTS += -lib_png_path=$(STAGING_DIR)/usr\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y)\nPERL_GD_DEPENDENCIES += xlib_libXpm\nPERL_GD_OPTIONS += XPM\nPERL_GD_CONF_OPTS += -lib_xpm_path=$(STAGING_DIR)/usr\nendif\n\nPERL_GD_CONF_OPTS += \\\n\t-lib_gd_path=$(STAGING_DIR)/usr \\\n\t-lib_zlib_path=$(STAGING_DIR)/usr \\\n\t-options=$(subst $(space),$(comma),$(PERL_GD_OPTIONS))\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-gdgraph/Config.in",
    "content": "config BR2_PACKAGE_PERL_GDGRAPH\n\tbool \"perl-gdgraph\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_PERL_GD # runtime\n\tselect BR2_PACKAGE_PERL_GDTEXTUTIL # runtime\n\thelp\n\t  Produces charts with GD.\n\n\t  https://metacpan.org/release/GDGraph\n\ncomment \"perl-gdgraph needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-gdgraph/perl-gdgraph.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    38c6a188519e6272e9b2b722b315c3d8 GDGraph-1.54.tar.gz\nsha256 b96f5c10b656c17d16ab65a1777c908297b028d3b6815f6d54b2337f006bfa4f GDGraph-1.54.tar.gz\n\n# Hash for license files\nsha256 710484e3a1196664bbe8a5ad5d53c528e01226eb20e2885a4e1131eb6c6565cd Dustismo.LICENSE\nsha256 f44630ad9101e40a101d906a07908c975a9b0742273cfb0c00a51d73afb53e7d README\n"
  },
  {
    "path": "package/perl-gdgraph/perl-gdgraph.mk",
    "content": "################################################################################\n#\n# perl-gdgraph\n#\n################################################################################\n\nPERL_GDGRAPH_VERSION = 1.54\nPERL_GDGRAPH_SOURCE = GDGraph-$(PERL_GDGRAPH_VERSION).tar.gz\nPERL_GDGRAPH_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RU/RUZ\nPERL_GDGRAPH_LICENSE = Artistic or GPL-1.0+ (perl module), GPL-2.0+ (font)\nPERL_GDGRAPH_LICENSE_FILES = Dustismo.LICENSE README\nPERL_GDGRAPH_DISTNAME = GDGraph\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-gdtextutil/Config.in",
    "content": "config BR2_PACKAGE_PERL_GDTEXTUTIL\n\tbool \"perl-gdtextutil\"\n\thelp\n\t  Text utilities for use with GD.\n\n\t  https://metacpan.org/release/GDTextUtil\n"
  },
  {
    "path": "package/perl-gdtextutil/perl-gdtextutil.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    941ad06eadc86b47f3a32da405665c41 GDTextUtil-0.86.tar.gz\nsha256 886ecbf85cfe94f4135ee5689c4847a9ae783ecb99e6759e12c734f2dd6116bc GDTextUtil-0.86.tar.gz\n\n# Hash for license files\nsha256 710484e3a1196664bbe8a5ad5d53c528e01226eb20e2885a4e1131eb6c6565cd Dustismo.LICENSE\nsha256 93ca7dd7f372c79e8ec1f849f2a418a67d195e4027c1b3e3dd8444fb30f3e97c README\n"
  },
  {
    "path": "package/perl-gdtextutil/perl-gdtextutil.mk",
    "content": "################################################################################\n#\n# perl-gdtextutil\n#\n################################################################################\n\nPERL_GDTEXTUTIL_VERSION = 0.86\nPERL_GDTEXTUTIL_SOURCE = GDTextUtil-$(PERL_GDTEXTUTIL_VERSION).tar.gz\nPERL_GDTEXTUTIL_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MV/MVERB\nPERL_GDTEXTUTIL_LICENSE = Artistic or GPL-1.0+ (perl module), GPL-2.0+ (font)\nPERL_GDTEXTUTIL_LICENSE_FILES = Dustismo.LICENSE README\nPERL_GDTEXTUTIL_DISTNAME = GDTextUtil\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-hash-multivalue/Config.in",
    "content": "config BR2_PACKAGE_PERL_HASH_MULTIVALUE\n\tbool \"perl-hash-multivalue\"\n\thelp\n\t  Store multiple values per key.\n\n\t  https://github.com/miyagawa/Hash-MultiValue\n"
  },
  {
    "path": "package/perl-hash-multivalue/perl-hash-multivalue.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    508015312eb08cd2bcea987c4efbb93d Hash-MultiValue-0.16.tar.gz\nsha256 66181df7aa68e2786faf6895c88b18b95c800a8e4e6fb4c07fd176410a3c73f4 Hash-MultiValue-0.16.tar.gz\n\n# computed by scancpan\nsha256 af32512e13f6722dab770b989c57556a5e3d29a49b22b8ad5668064db8592401 LICENSE\n"
  },
  {
    "path": "package/perl-hash-multivalue/perl-hash-multivalue.mk",
    "content": "################################################################################\n#\n# perl-hash-multivalue\n#\n################################################################################\n\nPERL_HASH_MULTIVALUE_VERSION = 0.16\nPERL_HASH_MULTIVALUE_SOURCE = Hash-MultiValue-$(PERL_HASH_MULTIVALUE_VERSION).tar.gz\nPERL_HASH_MULTIVALUE_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AR/ARISTOTLE\nPERL_HASH_MULTIVALUE_LICENSE = Artistic or GPL-1.0+\nPERL_HASH_MULTIVALUE_LICENSE_FILES = LICENSE\nPERL_HASH_MULTIVALUE_DISTNAME = Hash-MultiValue\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-html-parser/Config.in",
    "content": "config BR2_PACKAGE_PERL_HTML_PARSER\n\tbool \"perl-html-parser\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_PERL_HTML_TAGSET # runtime\n\tselect BR2_PACKAGE_PERL_HTTP_MESSAGE # runtime\n\tselect BR2_PACKAGE_PERL_URI # runtime\n\thelp\n\t  HTML parser class.\n\n\t  https://github.com/libwww-perl/HTML-Parser\n\ncomment \"perl-html-parser needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-html-parser/perl-html-parser.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  60e266d5a07fbea671a0383dd8af7b6c  HTML-Parser-3.76.tar.gz\nsha256  64d9e2eb2b420f1492da01ec0e6976363245b4be9290f03f10b7d2cb63fa2f61  HTML-Parser-3.76.tar.gz\n\n# computed by scancpan\nsha256  0e57338bc10d5fb8891012ebee65a7b504b247f5bb485e121b8b48d7a118a60b  LICENSE\n"
  },
  {
    "path": "package/perl-html-parser/perl-html-parser.mk",
    "content": "################################################################################\n#\n# perl-html-parser\n#\n################################################################################\n\nPERL_HTML_PARSER_VERSION = 3.76\nPERL_HTML_PARSER_SOURCE = HTML-Parser-$(PERL_HTML_PARSER_VERSION).tar.gz\nPERL_HTML_PARSER_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS\nPERL_HTML_PARSER_LICENSE = Artistic or GPL-1.0+\nPERL_HTML_PARSER_LICENSE_FILES = LICENSE\nPERL_HTML_PARSER_DISTNAME = HTML-Parser\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-html-tagset/Config.in",
    "content": "config BR2_PACKAGE_PERL_HTML_TAGSET\n\tbool \"perl-html-tagset\"\n\thelp\n\t  data tables useful in parsing HTML.\n\n\t  https://metacpan.org/release/HTML-Tagset\n"
  },
  {
    "path": "package/perl-html-tagset/perl-html-tagset.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    d2bfa18fe1904df7f683e96611e87437 HTML-Tagset-3.20.tar.gz\nsha256 adb17dac9e36cd011f5243881c9739417fd102fce760f8de4e9be4c7131108e2 HTML-Tagset-3.20.tar.gz\n\n# computed by scancpan\nsha256 275cc182d78ac2db6856442c5d334c925350fb56fe83ee3577f5850317423419 README\n"
  },
  {
    "path": "package/perl-html-tagset/perl-html-tagset.mk",
    "content": "################################################################################\n#\n# perl-html-tagset\n#\n################################################################################\n\nPERL_HTML_TAGSET_VERSION = 3.20\nPERL_HTML_TAGSET_SOURCE = HTML-Tagset-$(PERL_HTML_TAGSET_VERSION).tar.gz\nPERL_HTML_TAGSET_SITE = $(BR2_CPAN_MIRROR)/authors/id/P/PE/PETDANCE\nPERL_HTML_TAGSET_LICENSE = Artistic or GPL-1.0+\nPERL_HTML_TAGSET_LICENSE_FILES = README\nPERL_HTML_TAGSET_DISTNAME = HTML-Tagset\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-http-cookies/Config.in",
    "content": "config BR2_PACKAGE_PERL_HTTP_COOKIES\n\tbool \"perl-http-cookies\"\n\tselect BR2_PACKAGE_PERL_HTTP_DATE # runtime\n\tselect BR2_PACKAGE_PERL_HTTP_MESSAGE # runtime\n\thelp\n\t  HTTP cookie jars.\n\n\t  https://github.com/libwww-perl/HTTP-Cookies\n"
  },
  {
    "path": "package/perl-http-cookies/perl-http-cookies.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  b4d7804231b1dfd10999d42283e0cf06  HTTP-Cookies-6.10.tar.gz\nsha256  e36f36633c5ce6b5e4b876ffcf74787cc5efe0736dd7f487bdd73c14f0bd7007  HTTP-Cookies-6.10.tar.gz\n\n# computed by scancpan\nsha256  82902ce20c8ed71d7f4e7a6a5b2b26e43a7e2e90c78098fb49aa49e03ac808e0  LICENSE\n"
  },
  {
    "path": "package/perl-http-cookies/perl-http-cookies.mk",
    "content": "################################################################################\n#\n# perl-http-cookies\n#\n################################################################################\n\nPERL_HTTP_COOKIES_VERSION = 6.10\nPERL_HTTP_COOKIES_SOURCE = HTTP-Cookies-$(PERL_HTTP_COOKIES_VERSION).tar.gz\nPERL_HTTP_COOKIES_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS\nPERL_HTTP_COOKIES_LICENSE = Artistic or GPL-1.0+\nPERL_HTTP_COOKIES_LICENSE_FILES = LICENSE\nPERL_HTTP_COOKIES_DISTNAME = HTTP-Cookies\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-http-daemon/Config.in",
    "content": "config BR2_PACKAGE_PERL_HTTP_DAEMON\n\tbool \"perl-http-daemon\"\n\tselect BR2_PACKAGE_PERL_HTTP_DATE # runtime\n\tselect BR2_PACKAGE_PERL_HTTP_MESSAGE # runtime\n\tselect BR2_PACKAGE_PERL_LWP_MEDIATYPES # runtime\n\thelp\n\t  A simple http server class.\n\n\t  https://github.com/libwww-perl/HTTP-Daemon\n"
  },
  {
    "path": "package/perl-http-daemon/perl-http-daemon.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  63674e3f81760a29075853413eb157d8  HTTP-Daemon-6.12.tar.gz\nsha256  df47bed10c38670c780fd0116867d5fd4693604acde31ba63380dce04c4e1fa6  HTTP-Daemon-6.12.tar.gz\n\n# computed by scancpan\nsha256  e84ac5ab84ace59952d2640e0ca4522eb0aaa8c2aa696352d1252aa109ea20bc  LICENCE\n"
  },
  {
    "path": "package/perl-http-daemon/perl-http-daemon.mk",
    "content": "################################################################################\n#\n# perl-http-daemon\n#\n################################################################################\n\nPERL_HTTP_DAEMON_VERSION = 6.12\nPERL_HTTP_DAEMON_SOURCE = HTTP-Daemon-$(PERL_HTTP_DAEMON_VERSION).tar.gz\nPERL_HTTP_DAEMON_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS\nPERL_HTTP_DAEMON_DEPENDENCIES = host-perl-module-build-tiny\nPERL_HTTP_DAEMON_LICENSE = Artistic or GPL-1.0+\nPERL_HTTP_DAEMON_LICENSE_FILES = LICENCE\nPERL_HTTP_DAEMON_DISTNAME = HTTP-Daemon\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-http-date/Config.in",
    "content": "config BR2_PACKAGE_PERL_HTTP_DATE\n\tbool \"perl-http-date\"\n\tselect BR2_PACKAGE_PERL_TIMEDATE # runtime\n\thelp\n\t  HTTP::Date - date conversion routines.\n\n\t  https://github.com/libwww-perl/HTTP-Date\n"
  },
  {
    "path": "package/perl-http-date/perl-http-date.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    2ecbb3aedf6aef062605191813ca3027 HTTP-Date-6.05.tar.gz\nsha256 365d6294dfbd37ebc51def8b65b81eb79b3934ecbc95a2ec2d4d827efe6a922b HTTP-Date-6.05.tar.gz\n\n# computed by scancpan\nsha256 305b71c4d2fd6380585689c5f1c620737a36a318ce0f9c772badce0fe293a44e LICENSE\n"
  },
  {
    "path": "package/perl-http-date/perl-http-date.mk",
    "content": "################################################################################\n#\n# perl-http-date\n#\n################################################################################\n\nPERL_HTTP_DATE_VERSION = 6.05\nPERL_HTTP_DATE_SOURCE = HTTP-Date-$(PERL_HTTP_DATE_VERSION).tar.gz\nPERL_HTTP_DATE_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS\nPERL_HTTP_DATE_LICENSE = Artistic or GPL-1.0+\nPERL_HTTP_DATE_LICENSE_FILES = LICENSE\nPERL_HTTP_DATE_DISTNAME = HTTP-Date\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-http-entity-parser/Config.in",
    "content": "config BR2_PACKAGE_PERL_HTTP_ENTITY_PARSER\n\tbool \"perl-http-entity-parser\"\n\tselect BR2_PACKAGE_PERL_HTTP_MULTIPARTPARSER # runtime\n\tselect BR2_PACKAGE_PERL_HASH_MULTIVALUE # runtime\n\tselect BR2_PACKAGE_PERL_JSON_MAYBEXS # runtime\n\tselect BR2_PACKAGE_PERL_STREAM_BUFFERED # runtime\n\tselect BR2_PACKAGE_PERL_WWW_FORM_URLENCODED # runtime\n\thelp\n\t  PSGI compliant HTTP Entity Parser.\n\n\t  https://github.com/kazeburo/HTTP-Entity-Parser\n"
  },
  {
    "path": "package/perl-http-entity-parser/perl-http-entity-parser.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  09663f9577975587e832e28ba5f5f8af  HTTP-Entity-Parser-0.25.tar.gz\nsha256  3a8cd0d8cba3d17cd8c04ee82d7341dfaa247dbdd94a49eb94b53f69e483ec3a  HTTP-Entity-Parser-0.25.tar.gz\n\n# computed by scancpan\nsha256  79c2a066104e71602785fd815c5aea6f7db78c19451d68521380083f9c2a8805  LICENSE\n"
  },
  {
    "path": "package/perl-http-entity-parser/perl-http-entity-parser.mk",
    "content": "################################################################################\n#\n# perl-http-entity-parser\n#\n################################################################################\n\nPERL_HTTP_ENTITY_PARSER_VERSION = 0.25\nPERL_HTTP_ENTITY_PARSER_SOURCE = HTTP-Entity-Parser-$(PERL_HTTP_ENTITY_PARSER_VERSION).tar.gz\nPERL_HTTP_ENTITY_PARSER_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KA/KAZEBURO\nPERL_HTTP_ENTITY_PARSER_DEPENDENCIES = host-perl-module-build-tiny\nPERL_HTTP_ENTITY_PARSER_LICENSE = Artistic or GPL-1.0+\nPERL_HTTP_ENTITY_PARSER_LICENSE_FILES = LICENSE\nPERL_HTTP_ENTITY_PARSER_DISTNAME = HTTP-Entity-Parser\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-http-headers-fast/Config.in",
    "content": "config BR2_PACKAGE_PERL_HTTP_HEADERS_FAST\n\tbool \"perl-http-headers-fast\"\n\tselect BR2_PACKAGE_PERL_HTTP_DATE # runtime\n\thelp\n\t  faster implementation of HTTP::Headers.\n\n\t  https://github.com/tokuhirom/HTTP-Headers-Fast\n"
  },
  {
    "path": "package/perl-http-headers-fast/perl-http-headers-fast.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    a166a4d0ba47eca8ff9dffb760865f5f HTTP-Headers-Fast-0.22.tar.gz\nsha256 cc431db68496dd884db4bc0c0b7112c1f4a4f1dc68c4f5a3caa757a1e7481b48 HTTP-Headers-Fast-0.22.tar.gz\n\n# computed by scancpan\nsha256 511724425acf76d736145cfbf7c775b024c70ae8674ebf9a24dfda2c8e4032a3 LICENSE\n"
  },
  {
    "path": "package/perl-http-headers-fast/perl-http-headers-fast.mk",
    "content": "################################################################################\n#\n# perl-http-headers-fast\n#\n################################################################################\n\nPERL_HTTP_HEADERS_FAST_VERSION = 0.22\nPERL_HTTP_HEADERS_FAST_SOURCE = HTTP-Headers-Fast-$(PERL_HTTP_HEADERS_FAST_VERSION).tar.gz\nPERL_HTTP_HEADERS_FAST_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TOKUHIROM\nPERL_HTTP_HEADERS_FAST_DEPENDENCIES = host-perl-module-build-tiny\nPERL_HTTP_HEADERS_FAST_LICENSE = Artistic or GPL-1.0+\nPERL_HTTP_HEADERS_FAST_LICENSE_FILES = LICENSE\nPERL_HTTP_HEADERS_FAST_DISTNAME = HTTP-Headers-Fast\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-http-message/Config.in",
    "content": "config BR2_PACKAGE_PERL_HTTP_MESSAGE\n\tbool \"perl-http-message\"\n\tselect BR2_PACKAGE_PERL_ENCODE_LOCALE # runtime\n\tselect BR2_PACKAGE_PERL_HTTP_DATE # runtime\n\tselect BR2_PACKAGE_PERL_IO_HTML # runtime\n\tselect BR2_PACKAGE_PERL_LWP_MEDIATYPES # runtime\n\tselect BR2_PACKAGE_PERL_URI # runtime\n\thelp\n\t  HTTP style message (base class).\n\n\t  https://github.com/libwww-perl/HTTP-Message\n"
  },
  {
    "path": "package/perl-http-message/perl-http-message.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  e291f19e9532ffb7d1c80eab786bf0f2  HTTP-Message-6.33.tar.gz\nsha256  23b967f71b852cb209ec92a1af6bac89a141dff1650d69824d29a345c1eceef7  HTTP-Message-6.33.tar.gz\n\n# computed by scancpan\nsha256  1379396dcd2291f17a741d2d6bf14d379f5f2ab91b3c7e7b92c5f82856e2d7ac  LICENSE\n"
  },
  {
    "path": "package/perl-http-message/perl-http-message.mk",
    "content": "################################################################################\n#\n# perl-http-message\n#\n################################################################################\n\nPERL_HTTP_MESSAGE_VERSION = 6.33\nPERL_HTTP_MESSAGE_SOURCE = HTTP-Message-$(PERL_HTTP_MESSAGE_VERSION).tar.gz\nPERL_HTTP_MESSAGE_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS\nPERL_HTTP_MESSAGE_LICENSE = Artistic or GPL-1.0+\nPERL_HTTP_MESSAGE_LICENSE_FILES = LICENSE\nPERL_HTTP_MESSAGE_DISTNAME = HTTP-Message\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-http-multipartparser/Config.in",
    "content": "config BR2_PACKAGE_PERL_HTTP_MULTIPARTPARSER\n\tbool \"perl-http-multipartparser\"\n\thelp\n\t  HTTP MultiPart Parser.\n\n\t  https://metacpan.org/release/HTTP-MultiPartParser\n"
  },
  {
    "path": "package/perl-http-multipartparser/perl-http-multipartparser.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    1b07ebac54ce3288c044a23ba60196d2 HTTP-MultiPartParser-0.02.tar.gz\nsha256 5eddda159f54d16f868e032440ac2b024e55aac48931871b62627f1a16d00b12 HTTP-MultiPartParser-0.02.tar.gz\n\n# computed by scancpan\nsha256 a339d6cf9253720ba69b311423556cc02c94d5a6f76cf5cdf11af2112e14a074 README\n"
  },
  {
    "path": "package/perl-http-multipartparser/perl-http-multipartparser.mk",
    "content": "################################################################################\n#\n# perl-http-multipartparser\n#\n################################################################################\n\nPERL_HTTP_MULTIPARTPARSER_VERSION = 0.02\nPERL_HTTP_MULTIPARTPARSER_SOURCE = HTTP-MultiPartParser-$(PERL_HTTP_MULTIPARTPARSER_VERSION).tar.gz\nPERL_HTTP_MULTIPARTPARSER_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CH/CHANSEN\nPERL_HTTP_MULTIPARTPARSER_LICENSE = Artistic or GPL-1.0+\nPERL_HTTP_MULTIPARTPARSER_LICENSE_FILES = README\nPERL_HTTP_MULTIPARTPARSER_DISTNAME = HTTP-MultiPartParser\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-http-negotiate/Config.in",
    "content": "config BR2_PACKAGE_PERL_HTTP_NEGOTIATE\n\tbool \"perl-http-negotiate\"\n\tselect BR2_PACKAGE_PERL_HTTP_MESSAGE # runtime\n\thelp\n\t  choose a variant to serve.\n\n\t  https://metacpan.org/release/HTTP-Negotiate\n"
  },
  {
    "path": "package/perl-http-negotiate/perl-http-negotiate.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    1236195250e264d7436e7bb02031671b HTTP-Negotiate-6.01.tar.gz\nsha256 1c729c1ea63100e878405cda7d66f9adfd3ed4f1d6cacaca0ee9152df728e016 HTTP-Negotiate-6.01.tar.gz\n\n# computed by scancpan\nsha256 7a2114bb46279309f8a67e359ab0a578a4e9a7c7add0d1725de46b44f6da6514 README\n"
  },
  {
    "path": "package/perl-http-negotiate/perl-http-negotiate.mk",
    "content": "################################################################################\n#\n# perl-http-negotiate\n#\n################################################################################\n\nPERL_HTTP_NEGOTIATE_VERSION = 6.01\nPERL_HTTP_NEGOTIATE_SOURCE = HTTP-Negotiate-$(PERL_HTTP_NEGOTIATE_VERSION).tar.gz\nPERL_HTTP_NEGOTIATE_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS\nPERL_HTTP_NEGOTIATE_LICENSE = Artistic or GPL-1.0+\nPERL_HTTP_NEGOTIATE_LICENSE_FILES = README\nPERL_HTTP_NEGOTIATE_DISTNAME = HTTP-Negotiate\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-i18n/Config.in",
    "content": "config BR2_PACKAGE_PERL_I18N\n\tbool \"perl-i18n\"\n\tselect BR2_PACKAGE_PERL_LOCALE_MAKETEXT_LEXICON # runtime\n\thelp\n\t  Perl Internationalization Pragma.\n\n\t  https://metacpan.org/release/i18n\n"
  },
  {
    "path": "package/perl-i18n/perl-i18n.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    4c3004474d6ff3554f82b52f92b3b1e1 i18n-0.13.tar.gz\nsha256 2dbc3e4e25b41578cd83508fe011209e8f3c2b259fa4b5b6eafaac0d6ce4b457 i18n-0.13.tar.gz\n\n# computed by scancpan\nsha256 4755e5f2096e8ef0494f1565bf5a028a8fb4eeb5c1250e7d30948d1ed13c5ad7 README\n"
  },
  {
    "path": "package/perl-i18n/perl-i18n.mk",
    "content": "################################################################################\n#\n# perl-i18n\n#\n################################################################################\n\nPERL_I18N_VERSION = 0.13\nPERL_I18N_SOURCE = i18n-$(PERL_I18N_VERSION).tar.gz\nPERL_I18N_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AU/AUDREYT\nPERL_I18N_LICENSE = MIT\nPERL_I18N_LICENSE_FILES = README\nPERL_I18N_DISTNAME = i18n\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-io-html/Config.in",
    "content": "config BR2_PACKAGE_PERL_IO_HTML\n\tbool \"perl-io-html\"\n\thelp\n\t  Open an HTML file with automatic charset detection.\n\n\t  https://metacpan.org/release/IO-HTML\n"
  },
  {
    "path": "package/perl-io-html/perl-io-html.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  04bbe363686fd19bfb4cc0ed775e3d03  IO-HTML-1.004.tar.gz\nsha256  c87b2df59463bbf2c39596773dfb5c03bde0f7e1051af339f963f58c1cbd8bf5  IO-HTML-1.004.tar.gz\n\n# computed by scancpan\nsha256  669fdd41b60ef6169a975b87a5fe35c50e81b9efc8f96b2459f4fbb238079d84  LICENSE\n"
  },
  {
    "path": "package/perl-io-html/perl-io-html.mk",
    "content": "################################################################################\n#\n# perl-io-html\n#\n################################################################################\n\nPERL_IO_HTML_VERSION = 1.004\nPERL_IO_HTML_SOURCE = IO-HTML-$(PERL_IO_HTML_VERSION).tar.gz\nPERL_IO_HTML_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CJ/CJM\nPERL_IO_HTML_LICENSE = Artistic or GPL-1.0+\nPERL_IO_HTML_LICENSE_FILES = LICENSE\nPERL_IO_HTML_DISTNAME = IO-HTML\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-io-interface/Config.in",
    "content": "config BR2_PACKAGE_PERL_IO_INTERFACE\n\tbool \"perl-io-interface\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Access and modify network interface card configuration.\n\n\t  https://metacpan.org/release/IO-Interface\n\ncomment \"perl-io-interface needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-io-interface/perl-io-interface.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    806f97aff5a7361b6f54cd494f4cc9fd IO-Interface-1.09.tar.gz\nsha256 e63e81c52eb1e0e60ec2d983f5552d2493e117179925c96757f23c4bd9fa713a IO-Interface-1.09.tar.gz\n\n# computed by scancpan\nsha256 b5a5bf59bd1be13f7f498e5aa2ea5c0c603c04a095dcf03a06aa5b83bbccf921 LICENSE\n"
  },
  {
    "path": "package/perl-io-interface/perl-io-interface.mk",
    "content": "################################################################################\n#\n# perl-io-interface\n#\n################################################################################\n\nPERL_IO_INTERFACE_VERSION = 1.09\nPERL_IO_INTERFACE_SOURCE = IO-Interface-$(PERL_IO_INTERFACE_VERSION).tar.gz\nPERL_IO_INTERFACE_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LD/LDS\nPERL_IO_INTERFACE_DEPENDENCIES = host-perl-module-build\nPERL_IO_INTERFACE_LICENSE = Artistic-2.0\nPERL_IO_INTERFACE_LICENSE_FILES = LICENSE\nPERL_IO_INTERFACE_DISTNAME = IO-Interface\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-io-socket-multicast/Config.in",
    "content": "config BR2_PACKAGE_PERL_IO_SOCKET_MULTICAST\n\tbool \"perl-io-socket-multicast\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_PERL_IO_INTERFACE # runtime\n\thelp\n\t  Send and receive multicast messages.\n\n\t  https://metacpan.org/release/IO-Socket-Multicast\n\ncomment \"perl-io-socket-multicast needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-io-socket-multicast/perl-io-socket-multicast.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    c96e6cbb367b1d11ffe7bb9fbd833540 IO-Socket-Multicast-1.12.tar.gz\nsha256 70e8af4aa21d19bab5edd9f43a6b3d6277748a65145d46ff0ea2ae4c59495c72 IO-Socket-Multicast-1.12.tar.gz\n\n# computed by scancpan\nsha256 ea33bda0e2ec6734e29895a37cd1fc005d86f2abbe7e9943e0213ae64844a697 README\n"
  },
  {
    "path": "package/perl-io-socket-multicast/perl-io-socket-multicast.mk",
    "content": "################################################################################\n#\n# perl-io-socket-multicast\n#\n################################################################################\n\nPERL_IO_SOCKET_MULTICAST_VERSION = 1.12\nPERL_IO_SOCKET_MULTICAST_SOURCE = IO-Socket-Multicast-$(PERL_IO_SOCKET_MULTICAST_VERSION).tar.gz\nPERL_IO_SOCKET_MULTICAST_SITE = $(BR2_CPAN_MIRROR)/authors/id/B/BR/BRAMBLE\nPERL_IO_SOCKET_MULTICAST_LICENSE = Artistic or GPL-1.0+\nPERL_IO_SOCKET_MULTICAST_LICENSE_FILES = README\nPERL_IO_SOCKET_MULTICAST_DISTNAME = IO-Socket-Multicast\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-io-socket-ssl/Config.in",
    "content": "config BR2_PACKAGE_PERL_IO_SOCKET_SSL\n\tbool \"perl-io-socket-ssl\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_PERL_MOZILLA_CA # runtime\n\tselect BR2_PACKAGE_PERL_NET_SSLEAY # runtime\n\thelp\n\t  Nearly transparent SSL encapsulation for IO::Socket::INET.\n\n\t  https://github.com/noxxi/p5-io-socket-ssl\n\ncomment \"perl-io-socket-ssl needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-io-socket-ssl/perl-io-socket-ssl.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  4fb67fc8c4817dce8116f2eb7878fd9c  IO-Socket-SSL-2.072.tar.gz\nsha256  b5bee81db3905a9069340a450a48e1e1b32dec4ede0064f5703bafb9a707b89d  IO-Socket-SSL-2.072.tar.gz\n\n# computed by scancpan\nsha256  090aff5421fd55a9dceeaf6c612c36360402e8d29c1284aef88c87be565ce032  README\n"
  },
  {
    "path": "package/perl-io-socket-ssl/perl-io-socket-ssl.mk",
    "content": "################################################################################\n#\n# perl-io-socket-ssl\n#\n################################################################################\n\nPERL_IO_SOCKET_SSL_VERSION = 2.072\nPERL_IO_SOCKET_SSL_SOURCE = IO-Socket-SSL-$(PERL_IO_SOCKET_SSL_VERSION).tar.gz\nPERL_IO_SOCKET_SSL_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SU/SULLR\nPERL_IO_SOCKET_SSL_LICENSE = Artistic or GPL-1.0+\nPERL_IO_SOCKET_SSL_LICENSE_FILES = README\nPERL_IO_SOCKET_SSL_DISTNAME = IO-Socket-SSL\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-json-maybexs/Config.in",
    "content": "config BR2_PACKAGE_PERL_JSON_MAYBEXS\n\tbool \"perl-json-maybexs\"\n\thelp\n\t  Use Cpanel::JSON::XS with a fallback to JSON::XS and\n\t  JSON::PP.\n\n\t  https://metacpan.org/release/JSON-MaybeXS\n"
  },
  {
    "path": "package/perl-json-maybexs/perl-json-maybexs.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  e46181e34588428d317932744597a7ab  JSON-MaybeXS-1.004003.tar.gz\nsha256  5bee3b17ff9dcffd6e99ab8cf7f35747650bfce1dc622e3ad10b85a194462fbf  JSON-MaybeXS-1.004003.tar.gz\n\n# computed by scancpan\nsha256  0f2d6b537f7a735c981511875d832bc8ff767bf97d62848cf0bada964e40aadd  LICENSE\n"
  },
  {
    "path": "package/perl-json-maybexs/perl-json-maybexs.mk",
    "content": "################################################################################\n#\n# perl-json-maybexs\n#\n################################################################################\n\nPERL_JSON_MAYBEXS_VERSION = 1.004003\nPERL_JSON_MAYBEXS_SOURCE = JSON-MaybeXS-$(PERL_JSON_MAYBEXS_VERSION).tar.gz\nPERL_JSON_MAYBEXS_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER\nPERL_JSON_MAYBEXS_LICENSE = Artistic or GPL-1.0+\nPERL_JSON_MAYBEXS_LICENSE_FILES = LICENSE\nPERL_JSON_MAYBEXS_DISTNAME = JSON-MaybeXS\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-json-tiny/Config.in",
    "content": "config BR2_PACKAGE_PERL_JSON_TINY\n\tbool \"perl-json-tiny\"\n\thelp\n\t  Minimalistic JSON. No dependencies.\n\n\t  https://metacpan.org/release/JSON-Tiny\n"
  },
  {
    "path": "package/perl-json-tiny/perl-json-tiny.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    aa006882222e17a94295b3a655aab91b JSON-Tiny-0.58.tar.gz\nsha256 ad42e9137f5148df7fdb22aa52186b306032977bcd70d49f44a288070e4f0f23 JSON-Tiny-0.58.tar.gz\n\n# computed by scancpan\nsha256 19e2e0f2079ea1ce1576eb4ecc0575b33fe45b2b8e71f4aa589d6bedd1da4e0a LICENSE\n"
  },
  {
    "path": "package/perl-json-tiny/perl-json-tiny.mk",
    "content": "################################################################################\n#\n# perl-json-tiny\n#\n################################################################################\n\nPERL_JSON_TINY_VERSION = 0.58\nPERL_JSON_TINY_SOURCE = JSON-Tiny-$(PERL_JSON_TINY_VERSION).tar.gz\nPERL_JSON_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DA/DAVIDO\nPERL_JSON_TINY_LICENSE = Artistic-2.0\nPERL_JSON_TINY_LICENSE_FILES = LICENSE\nPERL_JSON_TINY_DISTNAME = JSON-Tiny\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-libwww-perl/Config.in",
    "content": "config BR2_PACKAGE_PERL_LIBWWW_PERL\n\tbool \"perl-libwww-perl\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_PERL_ENCODE_LOCALE # runtime\n\tselect BR2_PACKAGE_PERL_FILE_LISTING # runtime\n\tselect BR2_PACKAGE_PERL_HTML_PARSER # runtime\n\tselect BR2_PACKAGE_PERL_HTTP_COOKIES # runtime\n\tselect BR2_PACKAGE_PERL_HTTP_DATE # runtime\n\tselect BR2_PACKAGE_PERL_HTTP_MESSAGE # runtime\n\tselect BR2_PACKAGE_PERL_HTTP_NEGOTIATE # runtime\n\tselect BR2_PACKAGE_PERL_LWP_MEDIATYPES # runtime\n\tselect BR2_PACKAGE_PERL_NET_HTTP # runtime\n\tselect BR2_PACKAGE_PERL_TRY_TINY # runtime\n\tselect BR2_PACKAGE_PERL_URI # runtime\n\tselect BR2_PACKAGE_PERL_WWW_ROBOTRULES # runtime\n\thelp\n\t  The World-Wide Web library for Perl.\n\n\t  https://github.com/libwww-perl/libwww-perl\n\ncomment \"perl-libwww-perl needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-libwww-perl/perl-libwww-perl.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  0ef270c43ee93e22c2086ba9998aa11a  libwww-perl-6.56.tar.gz\nsha256  94362e68e5c6782f3987a9dec6adc409d20e28665dbf28ff47d1d701443ce7ce  libwww-perl-6.56.tar.gz\n\n# computed by scancpan\nsha256  311f168ba9a7819ffab4fea19858f9e880737baf6d112929d11530205035a4cc  LICENSE\n"
  },
  {
    "path": "package/perl-libwww-perl/perl-libwww-perl.mk",
    "content": "################################################################################\n#\n# perl-libwww-perl\n#\n################################################################################\n\nPERL_LIBWWW_PERL_VERSION = 6.56\nPERL_LIBWWW_PERL_SOURCE = libwww-perl-$(PERL_LIBWWW_PERL_VERSION).tar.gz\nPERL_LIBWWW_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS\nPERL_LIBWWW_PERL_LICENSE = Artistic or GPL-1.0+\nPERL_LIBWWW_PERL_LICENSE_FILES = LICENSE\nPERL_LIBWWW_PERL_DISTNAME = libwww-perl\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-locale-maketext-lexicon/Config.in",
    "content": "config BR2_PACKAGE_PERL_LOCALE_MAKETEXT_LEXICON\n\tbool \"perl-locale-maketext-lexicon\"\n\thelp\n\t  Use other catalog formats in Maketext.\n\n\t  http://search.cpan.org/dist/Locale-Maketext-Lexicon\n"
  },
  {
    "path": "package/perl-locale-maketext-lexicon/perl-locale-maketext-lexicon.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    51acf0cb00cc01a2c8f560d74dd6c593 Locale-Maketext-Lexicon-1.00.tar.gz\nsha256 b73f6b04a58d3f0e38ebf2115a4c1532f1a4eef6fac5c6a2a449e4e14c1ddc7c Locale-Maketext-Lexicon-1.00.tar.gz\n\n# computed by scancpan\nsha256 af693c8c99bee68656f09328c97d50b24eb742ae4473f57cdafaa90691807fbe LICENSE\n"
  },
  {
    "path": "package/perl-locale-maketext-lexicon/perl-locale-maketext-lexicon.mk",
    "content": "################################################################################\n#\n# perl-locale-maketext-lexicon\n#\n################################################################################\n\nPERL_LOCALE_MAKETEXT_LEXICON_VERSION = 1.00\nPERL_LOCALE_MAKETEXT_LEXICON_SOURCE = Locale-Maketext-Lexicon-$(PERL_LOCALE_MAKETEXT_LEXICON_VERSION).tar.gz\nPERL_LOCALE_MAKETEXT_LEXICON_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DR/DRTECH\nPERL_LOCALE_MAKETEXT_LEXICON_LICENSE = MIT\nPERL_LOCALE_MAKETEXT_LEXICON_LICENSE_FILES = LICENSE\nPERL_LOCALE_MAKETEXT_LEXICON_DISTNAME = Locale-Maketext-Lexicon\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-lwp-mediatypes/Config.in",
    "content": "config BR2_PACKAGE_PERL_LWP_MEDIATYPES\n\tbool \"perl-lwp-mediatypes\"\n\thelp\n\t  guess media type for a file or a URL.\n\n\t  https://github.com/libwww-perl/lwp-mediatypes\n"
  },
  {
    "path": "package/perl-lwp-mediatypes/perl-lwp-mediatypes.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    84b799a90c0d2ce52897a7cb4c0478d0 LWP-MediaTypes-6.04.tar.gz\nsha256 8f1bca12dab16a1c2a7c03a49c5e58cce41a6fec9519f0aadfba8dad997919d9 LWP-MediaTypes-6.04.tar.gz\n\n# computed by scancpan\nsha256 e84ac5ab84ace59952d2640e0ca4522eb0aaa8c2aa696352d1252aa109ea20bc LICENSE\n"
  },
  {
    "path": "package/perl-lwp-mediatypes/perl-lwp-mediatypes.mk",
    "content": "################################################################################\n#\n# perl-lwp-mediatypes\n#\n################################################################################\n\nPERL_LWP_MEDIATYPES_VERSION = 6.04\nPERL_LWP_MEDIATYPES_SOURCE = LWP-MediaTypes-$(PERL_LWP_MEDIATYPES_VERSION).tar.gz\nPERL_LWP_MEDIATYPES_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS\nPERL_LWP_MEDIATYPES_LICENSE = Artistic or GPL-1.0+\nPERL_LWP_MEDIATYPES_LICENSE_FILES = LICENSE\nPERL_LWP_MEDIATYPES_DISTNAME = LWP-MediaTypes\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-lwp-protocol-https/Config.in",
    "content": "config BR2_PACKAGE_PERL_LWP_PROTOCOL_HTTPS\n\tbool \"perl-lwp-protocol-https\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_PERL_IO_SOCKET_SSL # runtime\n\tselect BR2_PACKAGE_PERL_MOZILLA_CA # runtime\n\tselect BR2_PACKAGE_PERL_NET_HTTP # runtime\n\tselect BR2_PACKAGE_PERL_LIBWWW_PERL # runtime\n\thelp\n\t  Provide https support for LWP::UserAgent.\n\n\t  https://github.com/libwww-perl/LWP-Protocol-https\n\ncomment \"perl-lwp-protocol-https needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-lwp-protocol-https/perl-lwp-protocol-https.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  cf64e4bc57a9266ac4343cdf0808c5c8  LWP-Protocol-https-6.10.tar.gz\nsha256  cecfc31fe2d4fc854cac47fce13d3a502e8fdfe60c5bc1c09535743185f2a86c  LWP-Protocol-https-6.10.tar.gz\n\n# computed by scancpan\nsha256  294e73f9bd40ea600e9478cd57489a7da72558a83c6a66f37a82e4e0d5a706d9  LICENSE\n"
  },
  {
    "path": "package/perl-lwp-protocol-https/perl-lwp-protocol-https.mk",
    "content": "################################################################################\n#\n# perl-lwp-protocol-https\n#\n################################################################################\n\nPERL_LWP_PROTOCOL_HTTPS_VERSION = 6.10\nPERL_LWP_PROTOCOL_HTTPS_SOURCE = LWP-Protocol-https-$(PERL_LWP_PROTOCOL_HTTPS_VERSION).tar.gz\nPERL_LWP_PROTOCOL_HTTPS_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS\nPERL_LWP_PROTOCOL_HTTPS_LICENSE = Artistic or GPL-1.0+\nPERL_LWP_PROTOCOL_HTTPS_LICENSE_FILES = LICENSE\nPERL_LWP_PROTOCOL_HTTPS_DISTNAME = LWP-Protocol-https\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-mail-dkim/Config.in",
    "content": "config BR2_PACKAGE_PERL_MAIL_DKIM\n\tbool \"perl-mail-dkim\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_PERL_CRYPT_OPENSSL_RSA # runtime\n\tselect BR2_PACKAGE_PERL_MAILTOOLS # runtime\n\tselect BR2_PACKAGE_PERL_NET_DNS # runtime\n\thelp\n\t  Signs/verifies Internet mail with DKIM/DomainKey signatures.\n\n\t  https://metacpan.org/release/Mail-DKIM\n\ncomment \"perl-mail-dkim needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-mail-dkim/perl-mail-dkim.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  9de35f8aa77a85dc17423cbcce2bf46d  Mail-DKIM-1.20200824.tar.gz\nsha256  871d329830acb4840423aa59036622fb2ee394efc1d09316dcc32ae94454e916  Mail-DKIM-1.20200824.tar.gz\n\n# computed by scancpan\nsha256  ffaa40feb768566e52d93879fedd2c5483828b6de483874f30a0a4425351555f  LICENSE\n"
  },
  {
    "path": "package/perl-mail-dkim/perl-mail-dkim.mk",
    "content": "################################################################################\n#\n# perl-mail-dkim\n#\n################################################################################\n\nPERL_MAIL_DKIM_VERSION = 1.20200824\nPERL_MAIL_DKIM_SOURCE = Mail-DKIM-$(PERL_MAIL_DKIM_VERSION).tar.gz\nPERL_MAIL_DKIM_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MB/MBRADSHAW\nPERL_MAIL_DKIM_LICENSE = Artistic or GPL-1.0+\nPERL_MAIL_DKIM_LICENSE_FILES = LICENSE\nPERL_MAIL_DKIM_DISTNAME = Mail-DKIM\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-mailtools/Config.in",
    "content": "config BR2_PACKAGE_PERL_MAILTOOLS\n\tbool \"perl-mailtools\"\n\tselect BR2_PACKAGE_PERL_TIMEDATE # runtime\n\thelp\n\t  Various ancient e-mail related modules.\n\n\t  http://perl.overmeer.net/CPAN/\n"
  },
  {
    "path": "package/perl-mailtools/perl-mailtools.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    69ee516d40011e7e92b77c6f06c0dc01 MailTools-2.21.tar.gz\nsha256 4ad9bd6826b6f03a2727332466b1b7d29890c8d99a32b4b3b0a8d926ee1a44cb MailTools-2.21.tar.gz\n\n# computed by scancpan\nsha256 f7558badc4f4875df247bcccb50a8f369bfe4a2c19361f1df7b26ddf6aaaaf6b README\n"
  },
  {
    "path": "package/perl-mailtools/perl-mailtools.mk",
    "content": "################################################################################\n#\n# perl-mailtools\n#\n################################################################################\n\nPERL_MAILTOOLS_VERSION = 2.21\nPERL_MAILTOOLS_SOURCE = MailTools-$(PERL_MAILTOOLS_VERSION).tar.gz\nPERL_MAILTOOLS_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MA/MARKOV\nPERL_MAILTOOLS_LICENSE = Artistic or GPL-1.0+\nPERL_MAILTOOLS_LICENSE_FILES = README\nPERL_MAILTOOLS_DISTNAME = MailTools\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-math-int64/Config.in",
    "content": "config BR2_PACKAGE_PERL_MATH_INT64\n\tbool \"perl-math-int64\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Manipulate 64 bits integers in Perl.\n\n\t  http://metacpan.org/release/Math-Int64\n\ncomment \"perl-math-int64 needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-math-int64/perl-math-int64.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  1ad0ce8b5e903dfe9f7ffbabd8a43014  Math-Int64-0.54.tar.gz\nsha256  dcfc51e698437ea6b9cefe0276215c56cdb6a7f85e3e24a2b6b4189f1960d351  Math-Int64-0.54.tar.gz\n\n# computed by scancpan\nsha256  59feedfdc4f99a746c54e06ac46c4627fb1e29be3bc71756184f92333600f72b  COPYING\n"
  },
  {
    "path": "package/perl-math-int64/perl-math-int64.mk",
    "content": "################################################################################\n#\n# perl-math-int64\n#\n################################################################################\n\nPERL_MATH_INT64_VERSION = 0.54\nPERL_MATH_INT64_SOURCE = Math-Int64-$(PERL_MATH_INT64_VERSION).tar.gz\nPERL_MATH_INT64_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SA/SALVA\nPERL_MATH_INT64_LICENSE = Artistic or GPL-1.0+\nPERL_MATH_INT64_LICENSE_FILES = COPYING\nPERL_MATH_INT64_DISTNAME = Math-Int64\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-math-prime-util/Config.in",
    "content": "config BR2_PACKAGE_PERL_MATH_PRIME_UTIL\n\tbool \"perl-math-prime-util\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Utilities related to prime numbers, including fast sieves and\n\t  factoring.\n\n\t  https://github.com/danaj/Math-Prime-Util\n\ncomment \"perl-math-prime-util needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-math-prime-util/perl-math-prime-util.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    26496630990db586dfede6551de79cbe Math-Prime-Util-0.73.tar.gz\nsha256 4afa6dd8cdb97499bd4eca6925861812c29d9f5a0f1ac27ad9d2d9c9b5602894 Math-Prime-Util-0.73.tar.gz\n\n# computed by scancpan\nsha256 475b5f12062de0e197fb8cfa44eef3b032342d097752868e72c1239fe52a8942 LICENSE\n"
  },
  {
    "path": "package/perl-math-prime-util/perl-math-prime-util.mk",
    "content": "################################################################################\n#\n# perl-math-prime-util\n#\n################################################################################\n\nPERL_MATH_PRIME_UTIL_VERSION = 0.73\nPERL_MATH_PRIME_UTIL_SOURCE = Math-Prime-Util-$(PERL_MATH_PRIME_UTIL_VERSION).tar.gz\nPERL_MATH_PRIME_UTIL_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DA/DANAJ\nPERL_MATH_PRIME_UTIL_LICENSE = Artistic or GPL-1.0+\nPERL_MATH_PRIME_UTIL_LICENSE_FILES = LICENSE\nPERL_MATH_PRIME_UTIL_DISTNAME = Math-Prime-Util\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-mime-base64-urlsafe/Config.in",
    "content": "config BR2_PACKAGE_PERL_MIME_BASE64_URLSAFE\n\tbool \"perl-mime-base64-urlsafe\"\n\thelp\n\t  Perl version of Python's URL-safe base64 codec.\n\n\t  https://metacpan.org/release/MIME-Base64-URLSafe\n"
  },
  {
    "path": "package/perl-mime-base64-urlsafe/perl-mime-base64-urlsafe.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    eccf42cc7e9576dd23b9f39ad59c9b62 MIME-Base64-URLSafe-0.01.tar.gz\nsha256 cb9966c50538bb676ab67bc40a7c841019b23ba2243d0ffcc2ccf084e5c33798 MIME-Base64-URLSafe-0.01.tar.gz\n\n# computed by scancpan\nsha256 2fffac76f75709b6d94111a37f6cd8cab21e8f2b2de73b0b4fa53a5bed4efc15 README\n"
  },
  {
    "path": "package/perl-mime-base64-urlsafe/perl-mime-base64-urlsafe.mk",
    "content": "################################################################################\n#\n# perl-mime-base64-urlsafe\n#\n################################################################################\n\nPERL_MIME_BASE64_URLSAFE_VERSION = 0.01\nPERL_MIME_BASE64_URLSAFE_SOURCE = MIME-Base64-URLSafe-$(PERL_MIME_BASE64_URLSAFE_VERSION).tar.gz\nPERL_MIME_BASE64_URLSAFE_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KA/KAZUHO\nPERL_MIME_BASE64_URLSAFE_LICENSE = Artistic or GPL-1.0+\nPERL_MIME_BASE64_URLSAFE_LICENSE_FILES = README\nPERL_MIME_BASE64_URLSAFE_DISTNAME = MIME-Base64-URLSafe\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-mime-tools/Config.in",
    "content": "config BR2_PACKAGE_PERL_MIME_TOOLS\n\tbool \"perl-mime-tools\"\n\tselect BR2_PACKAGE_PERL_MAILTOOLS # runtime\n\thelp\n\t  Tools to manipulate MIME messages.\n\n\t  https://metacpan.org/release/MIME-tools\n"
  },
  {
    "path": "package/perl-mime-tools/perl-mime-tools.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    a2f0e07da2ff4b0478908544cc4b40fa MIME-tools-5.509.tar.gz\nsha256 64579f0c923d81d9a2194586e47c3475519e2646e4b5c102a8920759facf6973 MIME-tools-5.509.tar.gz\n\n# computed by scancpan\nsha256 151cd94e37eb05239c5a678c7d1c4d9d5241a7c9c138760b85152bc1947e2b93 COPYING\n"
  },
  {
    "path": "package/perl-mime-tools/perl-mime-tools.mk",
    "content": "################################################################################\n#\n# perl-mime-tools\n#\n################################################################################\n\nPERL_MIME_TOOLS_VERSION = 5.509\nPERL_MIME_TOOLS_SOURCE = MIME-tools-$(PERL_MIME_TOOLS_VERSION).tar.gz\nPERL_MIME_TOOLS_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DS/DSKOLL\nPERL_MIME_TOOLS_LICENSE = Artistic or GPL-1.0+\nPERL_MIME_TOOLS_LICENSE_FILES = COPYING\nPERL_MIME_TOOLS_DISTNAME = MIME-tools\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-module-build/perl-module-build.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    066b193e461d7dfe1eca17a139353001 Module-Build-0.4231.tar.gz\nsha256 7e0f4c692c1740c1ac84ea14d7ea3d8bc798b2fb26c09877229e04f430b2b717 Module-Build-0.4231.tar.gz\n\n# computed by scancpan\nsha256 f35ac2cc6b808a38c42c2d230b875217b0a24bb51e5a497ebb630cbb3d806c3e LICENSE\n"
  },
  {
    "path": "package/perl-module-build/perl-module-build.mk",
    "content": "################################################################################\n#\n# perl-module-build\n#\n################################################################################\n\nPERL_MODULE_BUILD_VERSION = 0.4231\nPERL_MODULE_BUILD_SOURCE = Module-Build-$(PERL_MODULE_BUILD_VERSION).tar.gz\nPERL_MODULE_BUILD_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LE/LEONT\nPERL_MODULE_BUILD_LICENSE = Artistic or GPL-1.0+\nPERL_MODULE_BUILD_LICENSE_FILES = LICENSE\nPERL_MODULE_BUILD_DISTNAME = Module-Build\n\n$(eval $(host-perl-package))\n"
  },
  {
    "path": "package/perl-module-build-tiny/perl-module-build-tiny.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    2332c90c17454107fea3f2614e11a3a9 Module-Build-Tiny-0.039.tar.gz\nsha256 7d580ff6ace0cbe555bf36b86dc8ea232581530cbeaaea09bccb57b55797f11c Module-Build-Tiny-0.039.tar.gz\n\n# computed by scancpan\nsha256 09fd2bc0428920c455f10c5a6c52e2bb4615114e88966c75ce27a07af028c36b LICENSE\n"
  },
  {
    "path": "package/perl-module-build-tiny/perl-module-build-tiny.mk",
    "content": "################################################################################\n#\n# perl-module-build-tiny\n#\n################################################################################\n\nPERL_MODULE_BUILD_TINY_VERSION = 0.039\nPERL_MODULE_BUILD_TINY_SOURCE = Module-Build-Tiny-$(PERL_MODULE_BUILD_TINY_VERSION).tar.gz\nPERL_MODULE_BUILD_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LE/LEONT\nHOST_PERL_MODULE_BUILD_TINY_DEPENDENCIES = \\\n\thost-perl-extutils-config \\\n\thost-perl-extutils-helpers \\\n\thost-perl-extutils-installpaths\nPERL_MODULE_BUILD_TINY_LICENSE = Artistic or GPL-1.0+\nPERL_MODULE_BUILD_TINY_LICENSE_FILES = LICENSE\nPERL_MODULE_BUILD_TINY_DISTNAME = Module-Build-Tiny\n\n$(eval $(host-perl-package))\n"
  },
  {
    "path": "package/perl-module-implementation/Config.in",
    "content": "config BR2_PACKAGE_PERL_MODULE_IMPLEMENTATION\n\tbool \"perl-module-implementation\"\n\tselect BR2_PACKAGE_PERL_MODULE_RUNTIME # runtime\n\tselect BR2_PACKAGE_PERL_TRY_TINY # runtime\n\thelp\n\t  Loads one of several alternate underlying implementations for\n\t  a module.\n\n\t  http://metacpan.org/release/Module-Implementation\n"
  },
  {
    "path": "package/perl-module-implementation/perl-module-implementation.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    52e3fe0ca6b1eff0488d59b7aacc0667 Module-Implementation-0.09.tar.gz\nsha256 c15f1a12f0c2130c9efff3c2e1afe5887b08ccd033bd132186d1e7d5087fd66d Module-Implementation-0.09.tar.gz\n\n# computed by scancpan\nsha256 dd34e4dbcadfaa3db992201873e1cbb4b4f4c18e9bf000821d5c768e66d7ff0b LICENSE\n"
  },
  {
    "path": "package/perl-module-implementation/perl-module-implementation.mk",
    "content": "################################################################################\n#\n# perl-module-implementation\n#\n################################################################################\n\nPERL_MODULE_IMPLEMENTATION_VERSION = 0.09\nPERL_MODULE_IMPLEMENTATION_SOURCE = Module-Implementation-$(PERL_MODULE_IMPLEMENTATION_VERSION).tar.gz\nPERL_MODULE_IMPLEMENTATION_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DR/DROLSKY\nPERL_MODULE_IMPLEMENTATION_LICENSE = Artistic-2.0\nPERL_MODULE_IMPLEMENTATION_LICENSE_FILES = LICENSE\nPERL_MODULE_IMPLEMENTATION_DISTNAME = Module-Implementation\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-module-runtime/Config.in",
    "content": "config BR2_PACKAGE_PERL_MODULE_RUNTIME\n\tbool \"perl-module-runtime\"\n\thelp\n\t  runtime module handling.\n\n\t  https://metacpan.org/release/Module-Runtime\n"
  },
  {
    "path": "package/perl-module-runtime/perl-module-runtime.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    d3d47222fa2e3dfcb4526f6cc8437b20 Module-Runtime-0.016.tar.gz\nsha256 68302ec646833547d410be28e09676db75006f4aa58a11f3bdb44ffe99f0f024 Module-Runtime-0.016.tar.gz\n\n# computed by scancpan\nsha256 ad1761020436687e8493208336ef53e84589fdba212da59b05b8111cca75ddc1 README\n"
  },
  {
    "path": "package/perl-module-runtime/perl-module-runtime.mk",
    "content": "################################################################################\n#\n# perl-module-runtime\n#\n################################################################################\n\nPERL_MODULE_RUNTIME_VERSION = 0.016\nPERL_MODULE_RUNTIME_SOURCE = Module-Runtime-$(PERL_MODULE_RUNTIME_VERSION).tar.gz\nPERL_MODULE_RUNTIME_SITE = $(BR2_CPAN_MIRROR)/authors/id/Z/ZE/ZEFRAM\nPERL_MODULE_RUNTIME_DEPENDENCIES = host-perl-module-build\nPERL_MODULE_RUNTIME_LICENSE = Artistic or GPL-1.0+\nPERL_MODULE_RUNTIME_LICENSE_FILES = README\nPERL_MODULE_RUNTIME_DISTNAME = Module-Runtime\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-mojolicious/Config.in",
    "content": "config BR2_PACKAGE_PERL_MOJOLICIOUS\n\tbool \"perl-mojolicious\"\n\thelp\n\t  Real-time web framework.\n\n\t  https://mojolicious.org\n"
  },
  {
    "path": "package/perl-mojolicious/perl-mojolicious.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  ea3861504ab25b237f124842f8765b01  Mojolicious-9.19.tar.gz\nsha256  45056d66b08e544fd77033fafe1730c1d45615e46a92892fc77fb241754a1a97  Mojolicious-9.19.tar.gz\n\n# computed by scancpan\nsha256  19e2e0f2079ea1ce1576eb4ecc0575b33fe45b2b8e71f4aa589d6bedd1da4e0a  LICENSE\n"
  },
  {
    "path": "package/perl-mojolicious/perl-mojolicious.mk",
    "content": "################################################################################\n#\n# perl-mojolicious\n#\n################################################################################\n\nPERL_MOJOLICIOUS_VERSION = 9.19\nPERL_MOJOLICIOUS_SOURCE = Mojolicious-$(PERL_MOJOLICIOUS_VERSION).tar.gz\nPERL_MOJOLICIOUS_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SR/SRI\nPERL_MOJOLICIOUS_LICENSE = Artistic-2.0\nPERL_MOJOLICIOUS_LICENSE_FILES = LICENSE\nPERL_MOJOLICIOUS_DISTNAME = Mojolicious\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-authentication/Config.in",
    "content": "config BR2_PACKAGE_PERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION\n\tbool \"perl-mojolicious-plugin-authentication\"\n\tselect BR2_PACKAGE_PERL_MOJOLICIOUS # runtime\n\thelp\n\t  A plugin to make authentication a bit easier.\n\n\t  https://github.com/benvanstaveren/Mojolicious-Plugin-Authentication\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-authentication/perl-mojolicious-plugin-authentication.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  c475f2d3962441698b178ad1bd7d2e29  Mojolicious-Plugin-Authentication-1.37.tar.gz\nsha256  a7ed206725b7b395d4fca12e3f1d923da644d913333ff48ea231e064ecb1abb6  Mojolicious-Plugin-Authentication-1.37.tar.gz\n\n# computed by scancpan\nsha256  37d219684a6c5f8754435fb0dd36a779121e416553fd6a75e22a7545039d1021  LICENSE\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-authentication/perl-mojolicious-plugin-authentication.mk",
    "content": "################################################################################\n#\n# perl-mojolicious-plugin-authentication\n#\n################################################################################\n\nPERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_VERSION = 1.37\nPERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_SOURCE = Mojolicious-Plugin-Authentication-$(PERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_VERSION).tar.gz\nPERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_SITE = $(BR2_CPAN_MIRROR)/authors/id/J/JJ/JJATRIA\nPERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_LICENSE = Artistic or GPL-1.0+\nPERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_LICENSE_FILES = LICENSE\nPERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION_DISTNAME = Mojolicious-Plugin-Authentication\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-authorization/Config.in",
    "content": "config BR2_PACKAGE_PERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION\n\tbool \"perl-mojolicious-plugin-authorization\"\n\tselect BR2_PACKAGE_PERL_MOJOLICIOUS # runtime\n\thelp\n\t  A plugin to make authorization a bit easier.\n\n\t  https://metacpan.org/module/Mojolicious::Plugin::Authorization\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-authorization/perl-mojolicious-plugin-authorization.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  7906886e2a66b84bb3c0edd7ea85c485  Mojolicious-Plugin-Authorization-1.06.tar.gz\nsha256  d21ee5ab5fd8c630bc28ce001f9c91bba500370baf7cc8f6f60c9a4e051f9a6c  Mojolicious-Plugin-Authorization-1.06.tar.gz\n\n# computed by scancpan\nsha256  dfab85cd06e80a3493217a1dc741cf9065417d2e803d50756f013c0b6cb0cb3e  LICENSE\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-authorization/perl-mojolicious-plugin-authorization.mk",
    "content": "################################################################################\n#\n# perl-mojolicious-plugin-authorization\n#\n################################################################################\n\nPERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_VERSION = 1.06\nPERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_SOURCE = Mojolicious-Plugin-Authorization-$(PERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_VERSION).tar.gz\nPERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_SITE = $(BR2_CPAN_MIRROR)/authors/id/B/BY/BYTEROCK\nPERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_DEPENDENCIES = host-perl-module-build\nPERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_LICENSE = Artistic or GPL-1.0+\nPERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_LICENSE_FILES = LICENSE\nPERL_MOJOLICIOUS_PLUGIN_AUTHORIZATION_DISTNAME = Mojolicious-Plugin-Authorization\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-cspheader/Config.in",
    "content": "config BR2_PACKAGE_PERL_MOJOLICIOUS_PLUGIN_CSPHEADER\n\tbool \"perl-mojolicious-plugin-cspheader\"\n\tselect BR2_PACKAGE_PERL_MOJOLICIOUS # runtime\n\thelp\n\t  Mojolicious Plugin to add Content-Security-Policy header to\n\t  every HTTP response.\n\n\t  https://metacpan.org/release/Mojolicious-Plugin-CSPHeader\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-cspheader/perl-mojolicious-plugin-cspheader.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    3d1b01c393e7ed576e4b503d26a88a3e Mojolicious-Plugin-CSPHeader-0.06.tar.gz\nsha256 0523a170af6620dab5b746725f171a138b6cff3d2d84e1a30af891741550f4a7 Mojolicious-Plugin-CSPHeader-0.06.tar.gz\n\n# computed by scancpan\nsha256 4bb36edd2bcafef11ca615f69607953a31ee05ae172b69990aee317e95653456 LICENSE\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-cspheader/perl-mojolicious-plugin-cspheader.mk",
    "content": "################################################################################\n#\n# perl-mojolicious-plugin-cspheader\n#\n################################################################################\n\nPERL_MOJOLICIOUS_PLUGIN_CSPHEADER_VERSION = 0.06\nPERL_MOJOLICIOUS_PLUGIN_CSPHEADER_SOURCE = Mojolicious-Plugin-CSPHeader-$(PERL_MOJOLICIOUS_PLUGIN_CSPHEADER_VERSION).tar.gz\nPERL_MOJOLICIOUS_PLUGIN_CSPHEADER_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LD/LDIDRY\nPERL_MOJOLICIOUS_PLUGIN_CSPHEADER_LICENSE = Artistic or GPL-1.0+\nPERL_MOJOLICIOUS_PLUGIN_CSPHEADER_LICENSE_FILES = LICENSE\nPERL_MOJOLICIOUS_PLUGIN_CSPHEADER_DISTNAME = Mojolicious-Plugin-CSPHeader\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-i18n/Config.in",
    "content": "config BR2_PACKAGE_PERL_MOJOLICIOUS_PLUGIN_I18N\n\tbool \"perl-mojolicious-plugin-i18n\"\n\tselect BR2_PACKAGE_PERL_MOJOLICIOUS # runtime\n\thelp\n\t  Internationalization Plugin for Mojolicious.\n\n\t  https://metacpan.org/release/Mojolicious-Plugin-I18N\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-i18n/perl-mojolicious-plugin-i18n.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    4002f7a7da4c90973ad6eedfb0fcfa16 Mojolicious-Plugin-I18N-1.6.tar.gz\nsha256 32fb5ef8037d954b7ecebef5c1b2b24b420abd829702312f4ad42794f52b514d Mojolicious-Plugin-I18N-1.6.tar.gz\n\n# manually computed\nsha256 82b05028033057b388b0040a3b5590a1c51168fe3b9899bffdb5ef7962c4eb47 README.pod\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-i18n/perl-mojolicious-plugin-i18n.mk",
    "content": "################################################################################\n#\n# perl-mojolicious-plugin-i18n\n#\n################################################################################\n\nPERL_MOJOLICIOUS_PLUGIN_I18N_VERSION = 1.6\nPERL_MOJOLICIOUS_PLUGIN_I18N_SOURCE = Mojolicious-Plugin-I18N-$(PERL_MOJOLICIOUS_PLUGIN_I18N_VERSION).tar.gz\nPERL_MOJOLICIOUS_PLUGIN_I18N_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SH/SHARIFULN\nPERL_MOJOLICIOUS_PLUGIN_I18N_DEPENDENCIES = host-perl-module-build\nPERL_MOJOLICIOUS_PLUGIN_I18N_LICENSE = Artistic-2.0\nPERL_MOJOLICIOUS_PLUGIN_I18N_LICENSE_FILES = README.pod\nPERL_MOJOLICIOUS_PLUGIN_I18N_DISTNAME = Mojolicious-Plugin-I18N\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-securityheader/Config.in",
    "content": "config BR2_PACKAGE_PERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER\n\tbool \"perl-mojolicious-plugin-securityheader\"\n\tselect BR2_PACKAGE_PERL_MOJOLICIOUS # runtime\n\thelp\n\t  Mojolicious Plugin.\n\n\t  http://github.com/reneeb/Mojolicious-Plugin-SecurityHeader\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-securityheader/perl-mojolicious-plugin-securityheader.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    38cf59258547ac866577db2d43632f30 Mojolicious-Plugin-SecurityHeader-0.07.tar.gz\nsha256 940474eaf7a415e5117b004387862473612e079a413590db1eb9c85d17a6648f Mojolicious-Plugin-SecurityHeader-0.07.tar.gz\n\n# computed by scancpan\nsha256 0c38e4629cc9eee869217d62ad765e581e54958596672046a62dfa4cfd87bb09 LICENSE\n"
  },
  {
    "path": "package/perl-mojolicious-plugin-securityheader/perl-mojolicious-plugin-securityheader.mk",
    "content": "################################################################################\n#\n# perl-mojolicious-plugin-securityheader\n#\n################################################################################\n\nPERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_VERSION = 0.07\nPERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_SOURCE = Mojolicious-Plugin-SecurityHeader-$(PERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_VERSION).tar.gz\nPERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RE/RENEEB\nPERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_LICENSE = Artistic-2.0\nPERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_LICENSE_FILES = LICENSE\nPERL_MOJOLICIOUS_PLUGIN_SECURITYHEADER_DISTNAME = Mojolicious-Plugin-SecurityHeader\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-moo/Config.in",
    "content": "config BR2_PACKAGE_PERL_MOO\n\tbool \"perl-moo\"\n\tselect BR2_PACKAGE_PERL_CLASS_METHOD_MODIFIERS # runtime\n\tselect BR2_PACKAGE_PERL_ROLE_TINY # runtime\n\tselect BR2_PACKAGE_PERL_SUB_QUOTE # runtime\n\thelp\n\t  Minimalist Object Orientation (with Moose compatibility).\n\n\t  https://metacpan.org/release/Moo\n"
  },
  {
    "path": "package/perl-moo/perl-moo.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  49ecf491b49b9b200e8a5dfd1a42b480  Moo-2.005004.tar.gz\nsha256  e3030b80bd554a66f6b3c27fd53b1b5909d12af05c4c11ece9a58f8d1e478928  Moo-2.005004.tar.gz\n\n# computed by scancpan\nsha256  a8a1595c2347f7d10e896809d4f3dea85ccc10ac5644b8073111233cd120b14a  LICENSE\n"
  },
  {
    "path": "package/perl-moo/perl-moo.mk",
    "content": "################################################################################\n#\n# perl-moo\n#\n################################################################################\n\nPERL_MOO_VERSION = 2.005004\nPERL_MOO_SOURCE = Moo-$(PERL_MOO_VERSION).tar.gz\nPERL_MOO_SITE = $(BR2_CPAN_MIRROR)/authors/id/H/HA/HAARG\nPERL_MOO_LICENSE = Artistic or GPL-1.0+\nPERL_MOO_LICENSE_FILES = LICENSE\nPERL_MOO_DISTNAME = Moo\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-mozilla-ca/Config.in",
    "content": "config BR2_PACKAGE_PERL_MOZILLA_CA\n\tbool \"perl-mozilla-ca\"\n\thelp\n\t  Mozilla's CA cert bundle in PEM format.\n\n\t  https://metacpan.org/release/Mozilla-CA\n"
  },
  {
    "path": "package/perl-mozilla-ca/perl-mozilla-ca.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  8ac3fe1a83c45da3f468f78ab8133ea6  Mozilla-CA-20200520.tar.gz\nsha256  b3ca0002310bf24a16c0d5920bdea97a2f46e77e7be3e7377e850d033387c726  Mozilla-CA-20200520.tar.gz\n\n# computed by scancpan\nsha256  95cd63dae5c2bf6e7cf33435981614a36c85ef01fc7a02464e05e58a5355398e  README\n"
  },
  {
    "path": "package/perl-mozilla-ca/perl-mozilla-ca.mk",
    "content": "################################################################################\n#\n# perl-mozilla-ca\n#\n################################################################################\n\nPERL_MOZILLA_CA_VERSION = 20200520\nPERL_MOZILLA_CA_SOURCE = Mozilla-CA-$(PERL_MOZILLA_CA_VERSION).tar.gz\nPERL_MOZILLA_CA_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AB/ABH\nPERL_MOZILLA_CA_LICENSE = MPL-2.0\nPERL_MOZILLA_CA_LICENSE_FILES = README\nPERL_MOZILLA_CA_DISTNAME = Mozilla-CA\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-net-dns/Config.in",
    "content": "config BR2_PACKAGE_PERL_NET_DNS\n\tbool \"perl-net-dns\"\n\tselect BR2_PACKAGE_PERL_DIGEST_HMAC # runtime\n\thelp\n\t  Perl Interface to the Domain Name System.\n\n\t  https://metacpan.org/release/Net-DNS\n"
  },
  {
    "path": "package/perl-net-dns/perl-net-dns.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  e8ee02ec42dfeb10ae4a0d175d5fcafc  Net-DNS-1.32.tar.gz\nsha256  b890a7b44d573f27cc713caadf1e12eaaa4478a6504d1157194df614316b5b50  Net-DNS-1.32.tar.gz\n\n# computed by scancpan\nsha256  1e44fcf65509b47a251eda0ce1f8bd6aefa13517e38cb1e95b8d36120fb15452  LICENSE\n"
  },
  {
    "path": "package/perl-net-dns/perl-net-dns.mk",
    "content": "################################################################################\n#\n# perl-net-dns\n#\n################################################################################\n\nPERL_NET_DNS_VERSION = 1.32\nPERL_NET_DNS_SOURCE = Net-DNS-$(PERL_NET_DNS_VERSION).tar.gz\nPERL_NET_DNS_SITE = $(BR2_CPAN_MIRROR)/authors/id/N/NL/NLNETLABS\nPERL_NET_DNS_LICENSE = MIT\nPERL_NET_DNS_LICENSE_FILES = LICENSE\nPERL_NET_DNS_DISTNAME = Net-DNS\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-net-http/Config.in",
    "content": "config BR2_PACKAGE_PERL_NET_HTTP\n\tbool \"perl-net-http\"\n\tselect BR2_PACKAGE_PERL_URI # runtime\n\thelp\n\t  Low-level HTTP connection (client).\n\n\t  https://github.com/libwww-perl/Net-HTTP\n"
  },
  {
    "path": "package/perl-net-http/perl-net-http.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  dbe27483034a79a7d43f61cc48540641  Net-HTTP-6.21.tar.gz\nsha256  375aa35b76be99f06464089174d66ac76f78ce83a5c92a907bbfab18b099eec4  Net-HTTP-6.21.tar.gz\n\n# computed by scancpan\nsha256  49fbcc80e17295888b909176a0029f275a8c17b6cbfaf8867fe571ebe9a9ca79  LICENSE\n"
  },
  {
    "path": "package/perl-net-http/perl-net-http.mk",
    "content": "################################################################################\n#\n# perl-net-http\n#\n################################################################################\n\nPERL_NET_HTTP_VERSION = 6.21\nPERL_NET_HTTP_SOURCE = Net-HTTP-$(PERL_NET_HTTP_VERSION).tar.gz\nPERL_NET_HTTP_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS\nPERL_NET_HTTP_LICENSE = Artistic or GPL-1.0+\nPERL_NET_HTTP_LICENSE_FILES = LICENSE\nPERL_NET_HTTP_DISTNAME = Net-HTTP\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-net-snmp/Config.in",
    "content": "config BR2_PACKAGE_PERL_NET_SNMP\n\tbool \"perl-net-snmp\"\n\thelp\n\t  Object oriented interface to SNMP.\n\n\t  https://metacpan.org/release/Net-SNMP\n"
  },
  {
    "path": "package/perl-net-snmp/perl-net-snmp.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    6137f04f9942d703f66179f890e3d096 Net-SNMP-v6.0.1.tar.gz\nsha256 14c37bc1cbb3f3cdc7d6c13e0f27a859f14cdcfd5ea54a0467a88bc259b0b741 Net-SNMP-v6.0.1.tar.gz\n\n# computed by scancpan\nsha256 a038159be54a2807dc48e2b946514d59fceab6737d5461d93d55297a98e6e24e LICENSE\n"
  },
  {
    "path": "package/perl-net-snmp/perl-net-snmp.mk",
    "content": "################################################################################\n#\n# perl-net-snmp\n#\n################################################################################\n\nPERL_NET_SNMP_VERSION = 6.0.1\nPERL_NET_SNMP_SOURCE = Net-SNMP-v$(PERL_NET_SNMP_VERSION).tar.gz\nPERL_NET_SNMP_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DT/DTOWN\nPERL_NET_SNMP_DEPENDENCIES = host-perl-module-build\nPERL_NET_SNMP_LICENSE = Artistic or GPL-1.0+\nPERL_NET_SNMP_LICENSE_FILES = LICENSE\nPERL_NET_SNMP_DISTNAME = Net-SNMP\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-net-ssh2/Config.in",
    "content": "config BR2_PACKAGE_PERL_NET_SSH2\n\tbool \"perl-net-ssh2\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_LIBSSH2_OPENSSL || BR2_PACKAGE_LIBSSH2_LIBGCRYPT\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Support for the SSH 2 protocol via libssh2.\n\n\t  Note: only the OpenSSL and Libgcrypt backends of libssh2 are\n\t  supported.\n\n\t  https://metacpan.org/release/Net-SSH2\n\ncomment \"perl-net-ssh2 needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\ncomment \"perl-net-ssh2 needs libssh2 with OpenSSL or Libgcrypt backend\"\n\tdepends on !(BR2_PACKAGE_LIBSSH2_OPENSSL || BR2_PACKAGE_LIBSSH2_LIBGCRYPT)\n"
  },
  {
    "path": "package/perl-net-ssh2/perl-net-ssh2.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  57aa0f6e2be4020f75888a7195ad5cba  Net-SSH2-0.72.tar.gz\nsha256  867d83070fac6436b9f0971918243002072fbf8d2724a87c254b34250dce0222  Net-SSH2-0.72.tar.gz\n\n# computed by scancpan\nsha256  268afaee7aa88a41959c93cd91853e8124bdbe64a74480d36ff1130e01a1c0ca  README.pod\n"
  },
  {
    "path": "package/perl-net-ssh2/perl-net-ssh2.mk",
    "content": "################################################################################\n#\n# perl-net-ssh2\n#\n################################################################################\n\nPERL_NET_SSH2_VERSION = 0.72\nPERL_NET_SSH2_SOURCE = Net-SSH2-$(PERL_NET_SSH2_VERSION).tar.gz\nPERL_NET_SSH2_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SA/SALVA\nPERL_NET_SSH2_LICENSE = Artistic or GPL-1.0+\nPERL_NET_SSH2_LICENSE_FILES = README.pod\nPERL_NET_SSH2_DEPENDENCIES = libssh2 zlib\nPERL_NET_SSH2_DISTNAME = Net-SSH2\n\n# build system will use host search paths by default\nPERL_NET_SSH2_CONF_OPTS += \\\n\tlib=\"$(STAGING_DIR)/usr/lib\" \\\n\tinc=\"$(STAGING_DIR)/usr/include\"\n\nifeq ($(BR2_PACKAGE_LIBSSH2_LIBGCRYPT),y)\nPERL_NET_SSH2_CONF_OPTS += crypto_backend=gcrypt\nendif\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-net-ssleay/0001-fix-build-system.patch",
    "content": "buildsystem: fix for cross-compilation\n\nAvoid running the openssl binary, since it would break for\ncross-compilation. Buildroot has a supported version, anyway.\n\nAlso, avoid adding hard-coded includes and libraries search\npaths, since they are missing the destdir; Buildroot compilers\nand linkers already know where to search, anyway.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -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\n--- perl-net-ssleay-1.64.orig/inc/Module/Install/PRIVATE/Net/SSLeay.pm\t2014-04-01 08:08:37.000000000 +0200\n+++ perl-net-ssleay-1.64/inc/Module/Install/PRIVATE/Net/SSLeay.pm\t2014-07-13 00:38:46.281380282 +0200\n@@ -37,14 +37,18 @@\n         exit 0; # according http://wiki.cpantesters.org/wiki/CPANAuthorNotes this is best-practice when \"missing library\"\n     }\n \n-    $self->check_openssl_version($prefix, $exec);\n+# Does not work for cross-compilation.\n+# In Buildroot, we do have a supported version.\n+#    $self->check_openssl_version($prefix, $exec);\n     my $opts = $self->ssleay_get_build_opts($prefix, $exec);\n \n     $self->makemaker_args(\n         CCCDLFLAGS => $opts->{cccdlflags},\n         OPTIMIZE => $opts->{optimize},\n-        INC => join(' ', map {\"-I$_\"} @{$opts->{inc_paths}}),\n-        LIBS => join(' ', (map {\"-L$_\"} @{$opts->{lib_paths}}), (map {\"-l$_\"} @{$opts->{lib_links}})),\n+# Buildroot already has the correct include and library search paths.\n+#        INC => join(' ', map {\"-I$_\"} @{$opts->{inc_paths}}),\n+#        LIBS => join(' ', (map {\"-L$_\"} @{$opts->{lib_paths}}), (map {\"-l$_\"} @{$opts->{lib_links}})),\n+        LIBS => join(' ', (map {\"-l$_\"} @{$opts->{lib_links}})),\n     );\n \n     if ( $self->prompt(\n"
  },
  {
    "path": "package/perl-net-ssleay/Config.in",
    "content": "config BR2_PACKAGE_PERL_NET_SSLEAY\n\tbool \"perl-net-ssleay\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Perl extension for using OpenSSL.\n\n\t  https://metacpan.org/release/Net-SSLeay\n\ncomment \"perl-net-ssleay needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-net-ssleay/perl-net-ssleay.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    d602bdce4e0531c6efc276e3e429ca69 Net-SSLeay-1.85.tar.gz\nsha256 9d8188b9fb1cae3bd791979c20554925d5e94a138d00414f1a6814549927b0c8 Net-SSLeay-1.85.tar.gz\n\n# computed by scancpan\nsha256 b55065185a2172d9f2ea2dd87c18c206ea3dc45a64e5f3deb3eee34d839dc822 LICENSE\n"
  },
  {
    "path": "package/perl-net-ssleay/perl-net-ssleay.mk",
    "content": "################################################################################\n#\n# perl-net-ssleay\n#\n################################################################################\n\nPERL_NET_SSLEAY_VERSION = 1.85\nPERL_NET_SSLEAY_SOURCE = Net-SSLeay-$(PERL_NET_SSLEAY_VERSION).tar.gz\nPERL_NET_SSLEAY_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MI/MIKEM\nPERL_NET_SSLEAY_DEPENDENCIES = openssl\nPERL_NET_SSLEAY_LICENSE = OpenSSL\nPERL_NET_SSLEAY_LICENSE_FILES = LICENSE\nPERL_NET_SSLEAY_DISTNAME = Net-SSLeay\n\n# Try as hard as possible to remedy to the brain-damage their build-system\n# suffers from: don't search for openssl, they pick the host-system one.\nPERL_NET_SSLEAY_CONF_ENV = OPENSSL_PREFIX=$(STAGING_DIR)/usr\n\n# Remove problematic single quotes in LDDLFLAGS, CCFLAGS & OPTIMIZE definition\ndefine PERL_NET_SSLEAY_FIX_MAKEFILE\n\t$(SED) \"s/^LDDLFLAGS = '\\(.*\\)'/LDDLFLAGS = \\1/\" $(@D)/Makefile\n\t$(SED) \"s/^CCFLAGS = '\\(.*\\)'/CCFLAGS = \\1/\" $(@D)/Makefile\n\t$(SED) \"s/^OPTIMIZE = '\\(.*\\)'/OPTIMIZE = \\1/\" $(@D)/Makefile\nendef\nPERL_NET_SSLEAY_POST_CONFIGURE_HOOKS += PERL_NET_SSLEAY_FIX_MAKEFILE\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-net-telnet/Config.in",
    "content": "config BR2_PACKAGE_PERL_NET_TELNET\n\tbool \"perl-net-telnet\"\n\thelp\n\t  Interact with TELNET port or other TCP ports.\n\n\t  https://metacpan.org/release/Net-Telnet\n"
  },
  {
    "path": "package/perl-net-telnet/perl-net-telnet.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  c8573c57a2d9469f038c40ac284b1e5f  Net-Telnet-3.05.tar.gz\nsha256  677f68ba2cd2a824fae323fa82e183bf7e3d03c3c499c91d923bd6283796a743  Net-Telnet-3.05.tar.gz\n\n# computed by scancpan\nsha256  22d0a3343b46c7857cd7d06cb37fe437d467df71aa5854af515374e1e8bf6c53  README\n"
  },
  {
    "path": "package/perl-net-telnet/perl-net-telnet.mk",
    "content": "################################################################################\n#\n# perl-net-telnet\n#\n################################################################################\n\nPERL_NET_TELNET_VERSION = 3.05\nPERL_NET_TELNET_SOURCE = Net-Telnet-$(PERL_NET_TELNET_VERSION).tar.gz\nPERL_NET_TELNET_SITE = $(BR2_CPAN_MIRROR)/authors/id/J/JR/JROGERS\nPERL_NET_TELNET_LICENSE = Artistic or GPL-1.0+\nPERL_NET_TELNET_LICENSE_FILES = README\nPERL_NET_TELNET_DISTNAME = Net-Telnet\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-netaddr-ip/Config.in",
    "content": "config BR2_PACKAGE_PERL_NETADDR_IP\n\tbool \"perl-netaddr-ip\"\n\thelp\n\t  Manages IPv4 and IPv6 addresses and subnets.\n\n\t  https://metacpan.org/release/NetAddr-IP\n"
  },
  {
    "path": "package/perl-netaddr-ip/perl-netaddr-ip.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    990dfcbffae356835c536e8ab56a2880 NetAddr-IP-4.079.tar.gz\nsha256 ec5a82dfb7028bcd28bb3d569f95d87dd4166cc19867f2184ed3a59f6d6ca0e7 NetAddr-IP-4.079.tar.gz\n\n# computed by scancpan\nsha256 b7fd9b73ea99602016a326e0b62e6646060d18febdd065ceca8bb482208c3d88 Artistic\nsha256 773a84089e32147cffef4c6fa127a14658c8c5866987d71d86f0fe22161780f4 Copying\n"
  },
  {
    "path": "package/perl-netaddr-ip/perl-netaddr-ip.mk",
    "content": "################################################################################\n#\n# perl-netaddr-ip\n#\n################################################################################\n\nPERL_NETADDR_IP_VERSION = 4.079\nPERL_NETADDR_IP_SOURCE = NetAddr-IP-$(PERL_NETADDR_IP_VERSION).tar.gz\nPERL_NETADDR_IP_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MI/MIKER\nPERL_NETADDR_IP_LICENSE = Artistic or GPL-1.0+\nPERL_NETADDR_IP_LICENSE_FILES = Artistic Copying\nPERL_NETADDR_IP_DISTNAME = NetAddr-IP\n\nifeq ($(BR2_STATIC_LIBS),y)\nPERL_NETADDR_IP_CONF_OPTS = -noxs\nendif\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-number-bytes-human/Config.in",
    "content": "config BR2_PACKAGE_PERL_NUMBER_BYTES_HUMAN\n\tbool \"perl-number-bytes-human\"\n\thelp\n\t  Convert byte count to human readable format.\n\n\t  https://metacpan.org/release/Number-Bytes-Human\n"
  },
  {
    "path": "package/perl-number-bytes-human/perl-number-bytes-human.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    43d2c86a55924aa71535a41de0311efd Number-Bytes-Human-0.11.tar.gz\nsha256 5fc79c49b0b40df780479c43696381343e2b6ad1fe52859f60bc65b66ebe6f2c Number-Bytes-Human-0.11.tar.gz\n\n# computed by scancpan\nsha256 d42143fe4b63cb5d488d65a44e6c55769b098ea447462ff33316b33a837b7cf9 README\n"
  },
  {
    "path": "package/perl-number-bytes-human/perl-number-bytes-human.mk",
    "content": "################################################################################\n#\n# perl-number-bytes-human\n#\n################################################################################\n\nPERL_NUMBER_BYTES_HUMAN_VERSION = 0.11\nPERL_NUMBER_BYTES_HUMAN_SOURCE = Number-Bytes-Human-$(PERL_NUMBER_BYTES_HUMAN_VERSION).tar.gz\nPERL_NUMBER_BYTES_HUMAN_SITE = $(BR2_CPAN_MIRROR)/authors/id/F/FE/FERREIRA\nPERL_NUMBER_BYTES_HUMAN_LICENSE = Artistic or GPL-1.0+\nPERL_NUMBER_BYTES_HUMAN_LICENSE_FILES = README\nPERL_NUMBER_BYTES_HUMAN_DISTNAME = Number-Bytes-Human\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-package-stash/Config.in",
    "content": "config BR2_PACKAGE_PERL_PACKAGE_STASH\n\tbool \"perl-package-stash\"\n\tselect BR2_PACKAGE_PERL_DIST_CHECKCONFLICTS # runtime\n\tselect BR2_PACKAGE_PERL_MODULE_IMPLEMENTATION # runtime\n\thelp\n\t  routines for manipulating stashes.\n\n\t  http://metacpan.org/release/Package-Stash\n"
  },
  {
    "path": "package/perl-package-stash/perl-package-stash.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  287d80c9115c9230912aca684f8ca92e  Package-Stash-0.39.tar.gz\nsha256  9165f555112e080493ce0e9129de0886da30b2593fb353a2abd1c76b2d2621b5  Package-Stash-0.39.tar.gz\n\n# computed by scancpan\nsha256  810b319a6f4a53c9cbbef513da17b2f0c872accd149bb889f153f4b78cf8cbb8  LICENSE\n"
  },
  {
    "path": "package/perl-package-stash/perl-package-stash.mk",
    "content": "################################################################################\n#\n# perl-package-stash\n#\n################################################################################\n\nPERL_PACKAGE_STASH_VERSION = 0.39\nPERL_PACKAGE_STASH_SOURCE = Package-Stash-$(PERL_PACKAGE_STASH_VERSION).tar.gz\nPERL_PACKAGE_STASH_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER\nPERL_PACKAGE_STASH_LICENSE = Artistic or GPL-1.0+\nPERL_PACKAGE_STASH_LICENSE_FILES = LICENSE\nPERL_PACKAGE_STASH_DISTNAME = Package-Stash\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-params-util/Config.in",
    "content": "config BR2_PACKAGE_PERL_PARAMS_UTIL\n\tbool \"perl-params-util\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Simple, compact and correct param-checking functions.\n\n\t  https://metacpan.org/release/Params-Util\n\ncomment \"perl-params-util needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-params-util/perl-params-util.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  f1aa70ba570f03f14cd394096b9c6883  Params-Util-1.102.tar.gz\nsha256  499bb1b482db24fda277a51525596ad092c2bd51dd508fa8fec2e9f849097402  Params-Util-1.102.tar.gz\n\n# computed by scancpan\nsha256  08c2ed7589aff3b2076b48b792078d3479c2295559ee7bc4615e93abe0473939  ARTISTIC-1.0\nsha256  3d2fb9b42d1134f39c2e990d66b5e9b77005663fe956db526cc380eb3d9a77d8  GPL-1\nsha256  834c4ebff45be11f35f059b077fdd747dee4b8a747b95049d849fef1c0ccdc62  LICENSE\n"
  },
  {
    "path": "package/perl-params-util/perl-params-util.mk",
    "content": "################################################################################\n#\n# perl-params-util\n#\n################################################################################\n\nPERL_PARAMS_UTIL_VERSION = 1.102\nPERL_PARAMS_UTIL_SOURCE = Params-Util-$(PERL_PARAMS_UTIL_VERSION).tar.gz\nPERL_PARAMS_UTIL_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RE/REHSACK\nPERL_PARAMS_UTIL_LICENSE = Artistic or GPL-1.0+\nPERL_PARAMS_UTIL_LICENSE_FILES = ARTISTIC-1.0 GPL-1 LICENSE\nPERL_PARAMS_UTIL_DISTNAME = Params-Util\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-parse-yapp/Config.in",
    "content": "config BR2_PACKAGE_PERL_PARSE_YAPP\n\tbool \"perl-parse-yapp\"\n\thelp\n\t  A perl frontend to the Parse::Yapp module.\n\n\t  https://metacpan.org/release/Parse-Yapp\n"
  },
  {
    "path": "package/perl-parse-yapp/perl-parse-yapp.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  69584d5b0f0304bb2a23cffcd982c5de  Parse-Yapp-1.21.tar.gz\nsha256  3810e998308fba2e0f4f26043035032b027ce51ce5c8a52a8b8e340ca65f13e5  Parse-Yapp-1.21.tar.gz\n\n# locally computed\nsha256  a5d97e3ee50ba12b7897841a117790f723795e4a61e5ad1668dc064956c84e96  lib/Parse/Yapp.pm\n"
  },
  {
    "path": "package/perl-parse-yapp/perl-parse-yapp.mk",
    "content": "################################################################################\n#\n# perl-parse-yapp\n#\n################################################################################\n\nPERL_PARSE_YAPP_VERSION = 1.21\nPERL_PARSE_YAPP_SOURCE = Parse-Yapp-$(PERL_PARSE_YAPP_VERSION).tar.gz\nPERL_PARSE_YAPP_SITE = $(BR2_CPAN_MIRROR)/authors/id/W/WB/WBRASWELL\nPERL_PARSE_YAPP_LICENSE = Artistic or GPL-1.0+\nPERL_PARSE_YAPP_LICENSE_FILES = lib/Parse/Yapp.pm\nPERL_PARSE_YAPP_DISTNAME = Parse-Yapp\n\n$(eval $(perl-package))\n$(eval $(host-perl-package))\n"
  },
  {
    "path": "package/perl-path-class/perl-path-class.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    13e6db714f6d5a0e62ca1c4a7fc4d0f3 Path-Class-0.37.tar.gz\nsha256 654781948602386f2cb2e4473a739f17dc6953d92aabc2498a4ca2561bc248ce Path-Class-0.37.tar.gz\n\n# computed by scancpan\nsha256 636b5c82eabfe3d4cd86126db9502fd537d1442ad2c88c93dbe221e62b5f1710 LICENSE\n"
  },
  {
    "path": "package/perl-path-class/perl-path-class.mk",
    "content": "################################################################################\n#\n# perl-path-class\n#\n################################################################################\n\nPERL_PATH_CLASS_VERSION = 0.37\nPERL_PATH_CLASS_SOURCE = Path-Class-$(PERL_PATH_CLASS_VERSION).tar.gz\nPERL_PATH_CLASS_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KW/KWILLIAMS\nHOST_PERL_PATH_CLASS_DEPENDENCIES = host-perl-module-build\nPERL_PATH_CLASS_LICENSE = Artistic or GPL-1.0+\nPERL_PATH_CLASS_LICENSE_FILES = LICENSE\nPERL_PATH_CLASS_DISTNAME = Path-Class\n\n$(eval $(host-perl-package))\n"
  },
  {
    "path": "package/perl-path-tiny/Config.in",
    "content": "config BR2_PACKAGE_PERL_PATH_TINY\n\tbool \"perl-path-tiny\"\n\thelp\n\t  File path utility.\n\n\t  https://github.com/dagolden/Path-Tiny\n"
  },
  {
    "path": "package/perl-path-tiny/perl-path-tiny.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  cb34fd356725ec12b78e88ddac37db08  Path-Tiny-0.118.tar.gz\nsha256  32138d8d0f4c9c1a84d2a8f91bc5e913d37d8a7edefbb15a10961bfed560b0fd  Path-Tiny-0.118.tar.gz\n\n# computed by scancpan\nsha256  a999b03d2b80e5c7f987289ac835fa2d88cafa9f0df24adf8a1fd21e175acd79  LICENSE\n"
  },
  {
    "path": "package/perl-path-tiny/perl-path-tiny.mk",
    "content": "################################################################################\n#\n# perl-path-tiny\n#\n################################################################################\n\nPERL_PATH_TINY_VERSION = 0.118\nPERL_PATH_TINY_SOURCE = Path-Tiny-$(PERL_PATH_TINY_VERSION).tar.gz\nPERL_PATH_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DA/DAGOLDEN\nPERL_PATH_TINY_LICENSE = Apache-2.0\nPERL_PATH_TINY_LICENSE_FILES = LICENSE\nPERL_PATH_TINY_DISTNAME = Path-Tiny\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-plack/Config.in",
    "content": "config BR2_PACKAGE_PERL_PLACK\n\tbool \"perl-plack\"\n\tselect BR2_PACKAGE_PERL_APACHE_LOGFORMAT_COMPILER # runtime\n\tselect BR2_PACKAGE_PERL_COOKIE_BAKER # runtime\n\tselect BR2_PACKAGE_PERL_DEVEL_STACKTRACE # runtime\n\tselect BR2_PACKAGE_PERL_DEVEL_STACKTRACE_ASHTML # runtime\n\tselect BR2_PACKAGE_PERL_FILE_SHAREDIR # runtime\n\tselect BR2_PACKAGE_PERL_FILESYS_NOTIFY_SIMPLE # runtime\n\tselect BR2_PACKAGE_PERL_HTTP_ENTITY_PARSER # runtime\n\tselect BR2_PACKAGE_PERL_HTTP_HEADERS_FAST # runtime\n\tselect BR2_PACKAGE_PERL_HTTP_MESSAGE # runtime\n\tselect BR2_PACKAGE_PERL_HASH_MULTIVALUE # runtime\n\tselect BR2_PACKAGE_PERL_STREAM_BUFFERED # runtime\n\tselect BR2_PACKAGE_PERL_TRY_TINY # runtime\n\tselect BR2_PACKAGE_PERL_URI # runtime\n\tselect BR2_PACKAGE_PERL_WWW_FORM_URLENCODED # runtime\n\thelp\n\t  Perl Superglue for Web frameworks and Web Servers (PSGI\n\t  toolkit).\n\n\t  https://github.com/plack/Plack\n"
  },
  {
    "path": "package/perl-plack/perl-plack.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  36282b473b4521219c44a9db437b650f  Plack-1.0048.tar.gz\nsha256  30f5f25e19b437859156a2526f61ca9ab708d50d5730c279189403aabfe542a6  Plack-1.0048.tar.gz\n\n# computed by scancpan\nsha256  fb67655b5d1adedef83aed2c79bf4f89c68d8595a7060815520173f663a3631d  LICENSE\n"
  },
  {
    "path": "package/perl-plack/perl-plack.mk",
    "content": "################################################################################\n#\n# perl-plack\n#\n################################################################################\n\nPERL_PLACK_VERSION = 1.0048\nPERL_PLACK_SOURCE = Plack-$(PERL_PLACK_VERSION).tar.gz\nPERL_PLACK_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MI/MIYAGAWA\nPERL_PLACK_DEPENDENCIES = host-perl-file-sharedir-install\nPERL_PLACK_LICENSE = Artistic or GPL-1.0+\nPERL_PLACK_LICENSE_FILES = LICENSE\nPERL_PLACK_DISTNAME = Plack\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-posix-strftime-compiler/Config.in",
    "content": "config BR2_PACKAGE_PERL_POSIX_STRFTIME_COMPILER\n\tbool \"perl-posix-strftime-compiler\"\n\thelp\n\t  GNU C library compatible strftime for loggers and servers.\n\n\t  https://github.com/kazeburo/POSIX-strftime-Compiler\n"
  },
  {
    "path": "package/perl-posix-strftime-compiler/perl-posix-strftime-compiler.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  3a5ae7d56a5917410c1b661e01ed1a68  POSIX-strftime-Compiler-0.44.tar.gz\nsha256  dfd3c97398dcfe51c8236b85e3dc28035667b76531f7aa0a6535f3aa5405b35a  POSIX-strftime-Compiler-0.44.tar.gz\n\n# computed by scancpan\nsha256  79c2a066104e71602785fd815c5aea6f7db78c19451d68521380083f9c2a8805  LICENSE\n"
  },
  {
    "path": "package/perl-posix-strftime-compiler/perl-posix-strftime-compiler.mk",
    "content": "################################################################################\n#\n# perl-posix-strftime-compiler\n#\n################################################################################\n\nPERL_POSIX_STRFTIME_COMPILER_VERSION = 0.44\nPERL_POSIX_STRFTIME_COMPILER_SOURCE = POSIX-strftime-Compiler-$(PERL_POSIX_STRFTIME_COMPILER_VERSION).tar.gz\nPERL_POSIX_STRFTIME_COMPILER_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KA/KAZEBURO\nPERL_POSIX_STRFTIME_COMPILER_DEPENDENCIES = host-perl-module-build-tiny\nPERL_POSIX_STRFTIME_COMPILER_LICENSE = Artistic or GPL-1.0+\nPERL_POSIX_STRFTIME_COMPILER_LICENSE_FILES = LICENSE\nPERL_POSIX_STRFTIME_COMPILER_DISTNAME = POSIX-strftime-Compiler\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-role-tiny/Config.in",
    "content": "config BR2_PACKAGE_PERL_ROLE_TINY\n\tbool \"perl-role-tiny\"\n\thelp\n\t  Roles: a nouvelle cuisine portion size slice of Moose.\n\n\t  https://metacpan.org/release/Role-Tiny\n"
  },
  {
    "path": "package/perl-role-tiny/perl-role-tiny.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  9ee45591befa3d0b1094ac75d282b6ba  Role-Tiny-2.002004.tar.gz\nsha256  d7bdee9e138a4f83aa52d0a981625644bda87ff16642dfa845dcb44d9a242b45  Role-Tiny-2.002004.tar.gz\n\n# computed by scancpan\nsha256  a8a1595c2347f7d10e896809d4f3dea85ccc10ac5644b8073111233cd120b14a  LICENSE\n"
  },
  {
    "path": "package/perl-role-tiny/perl-role-tiny.mk",
    "content": "################################################################################\n#\n# perl-role-tiny\n#\n################################################################################\n\nPERL_ROLE_TINY_VERSION = 2.002004\nPERL_ROLE_TINY_SOURCE = Role-Tiny-$(PERL_ROLE_TINY_VERSION).tar.gz\nPERL_ROLE_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/H/HA/HAARG\nPERL_ROLE_TINY_LICENSE = Artistic or GPL-1.0+\nPERL_ROLE_TINY_LICENSE_FILES = LICENSE\nPERL_ROLE_TINY_DISTNAME = Role-Tiny\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-stream-buffered/Config.in",
    "content": "config BR2_PACKAGE_PERL_STREAM_BUFFERED\n\tbool \"perl-stream-buffered\"\n\thelp\n\t  temporary buffer to save bytes.\n\n\t  https://github.com/plack/Stream-Buffered\n"
  },
  {
    "path": "package/perl-stream-buffered/perl-stream-buffered.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    b030fecaa784cd573289ae797c7aeae9 Stream-Buffered-0.03.tar.gz\nsha256 9b2d4390b5de6b0cf4558e4ad04317a73c5e13dd19af29149c4e47c37fb2423b Stream-Buffered-0.03.tar.gz\n\n# computed by scancpan\nsha256 68e8c38e6d2f2b0570a908411f8321b80a7e35ea44f43729807c9ac9a025f591 LICENSE\n"
  },
  {
    "path": "package/perl-stream-buffered/perl-stream-buffered.mk",
    "content": "################################################################################\n#\n# perl-stream-buffered\n#\n################################################################################\n\nPERL_STREAM_BUFFERED_VERSION = 0.03\nPERL_STREAM_BUFFERED_SOURCE = Stream-Buffered-$(PERL_STREAM_BUFFERED_VERSION).tar.gz\nPERL_STREAM_BUFFERED_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DO/DOY\nPERL_STREAM_BUFFERED_LICENSE = Artistic or GPL-1.0+\nPERL_STREAM_BUFFERED_LICENSE_FILES = LICENSE\nPERL_STREAM_BUFFERED_DISTNAME = Stream-Buffered\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-sub-exporter-progressive/Config.in",
    "content": "config BR2_PACKAGE_PERL_SUB_EXPORTER_PROGRESSIVE\n\tbool \"perl-sub-exporter-progressive\"\n\thelp\n\t  Only use Sub::Exporter if you need it.\n\n\t  https://github.com/frioux/Sub-Exporter-Progressive\n"
  },
  {
    "path": "package/perl-sub-exporter-progressive/perl-sub-exporter-progressive.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    72cf6acdd2a0a8b105821a4db98e4ebe Sub-Exporter-Progressive-0.001013.tar.gz\nsha256 d535b7954d64da1ac1305b1fadf98202769e3599376854b2ced90c382beac056 Sub-Exporter-Progressive-0.001013.tar.gz\n\n# computed by scancpan\nsha256 24c38cba4218e6be62e511bffe21e63aa57335d8929034aa58e8a85eed001e99 LICENSE\n"
  },
  {
    "path": "package/perl-sub-exporter-progressive/perl-sub-exporter-progressive.mk",
    "content": "################################################################################\n#\n# perl-sub-exporter-progressive\n#\n################################################################################\n\nPERL_SUB_EXPORTER_PROGRESSIVE_VERSION = 0.001013\nPERL_SUB_EXPORTER_PROGRESSIVE_SOURCE = Sub-Exporter-Progressive-$(PERL_SUB_EXPORTER_PROGRESSIVE_VERSION).tar.gz\nPERL_SUB_EXPORTER_PROGRESSIVE_SITE = $(BR2_CPAN_MIRROR)/authors/id/F/FR/FREW\nPERL_SUB_EXPORTER_PROGRESSIVE_LICENSE = Artistic or GPL-1.0+\nPERL_SUB_EXPORTER_PROGRESSIVE_LICENSE_FILES = LICENSE\nPERL_SUB_EXPORTER_PROGRESSIVE_DISTNAME = Sub-Exporter-Progressive\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-sub-install/Config.in",
    "content": "config BR2_PACKAGE_PERL_SUB_INSTALL\n\tbool \"perl-sub-install\"\n\thelp\n\t  install subroutines into packages easily.\n\n\t  https://github.com/rjbs/Sub-Install\n"
  },
  {
    "path": "package/perl-sub-install/perl-sub-install.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    e1ce4f9cb6b2f6b8778b036c31afa5ab Sub-Install-0.928.tar.gz\nsha256 61e567a7679588887b7b86d427bc476ea6d77fffe7e0d17d640f89007d98ef0f Sub-Install-0.928.tar.gz\n\n# computed by scancpan\nsha256 ad5fb5c05003488f924c60ead21694d629055c9db2ee2d9dd0cf0041b9fedaca LICENSE\n"
  },
  {
    "path": "package/perl-sub-install/perl-sub-install.mk",
    "content": "################################################################################\n#\n# perl-sub-install\n#\n################################################################################\n\nPERL_SUB_INSTALL_VERSION = 0.928\nPERL_SUB_INSTALL_SOURCE = Sub-Install-$(PERL_SUB_INSTALL_VERSION).tar.gz\nPERL_SUB_INSTALL_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RJ/RJBS\nPERL_SUB_INSTALL_LICENSE = Artistic or GPL-1.0+\nPERL_SUB_INSTALL_LICENSE_FILES = LICENSE\nPERL_SUB_INSTALL_DISTNAME = Sub-Install\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-sub-quote/Config.in",
    "content": "config BR2_PACKAGE_PERL_SUB_QUOTE\n\tbool \"perl-sub-quote\"\n\thelp\n\t  Efficient generation of subroutines via string eval.\n\n\t  https://metacpan.org/release/Sub-Quote\n"
  },
  {
    "path": "package/perl-sub-quote/perl-sub-quote.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    1bb9caee697bcfa738f419d40505e506 Sub-Quote-2.006006.tar.gz\nsha256 6e4e2af42388fa6d2609e0e82417de7cc6be47223f576592c656c73c7524d89d Sub-Quote-2.006006.tar.gz\n\n# computed by scancpan\nsha256 88f4a8719c584d756dcfeebc7f35643066354188bfb57c672fbafcd44e044e9c LICENSE\n"
  },
  {
    "path": "package/perl-sub-quote/perl-sub-quote.mk",
    "content": "################################################################################\n#\n# perl-sub-quote\n#\n################################################################################\n\nPERL_SUB_QUOTE_VERSION = 2.006006\nPERL_SUB_QUOTE_SOURCE = Sub-Quote-$(PERL_SUB_QUOTE_VERSION).tar.gz\nPERL_SUB_QUOTE_SITE = $(BR2_CPAN_MIRROR)/authors/id/H/HA/HAARG\nPERL_SUB_QUOTE_LICENSE = Artistic or GPL-1.0+\nPERL_SUB_QUOTE_LICENSE_FILES = LICENSE\nPERL_SUB_QUOTE_DISTNAME = Sub-Quote\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-sys-cpu/0001-remove-extraneous-include.patch",
    "content": "Drop <sys/unistd.h> include\n\n<sys/unistd.h> does not exist in musl or uClibc, so including it\ncauses a build failure. In glibc, it simply redirects to <unistd.h>,\nso we can safely drop the inclusion of <sys/unistd.h>\n\nSigned-off-by: Christopher McCrory <chrismcc@gmail.com>\n\nIndex: b/CPU.xs\n===================================================================\n--- a/CPU.xs\n+++ b/CPU.xs\n@@ -24,7 +24,6 @@\n  #include <winreg.h>\r\n #else                /* other (try unix) */\r\n  #include <unistd.h>\r\n- #include <sys/unistd.h>\r\n #endif\r\n #if defined(__sun) || defined(__sun__) \r\n  #include <sys/processor.h>\r\n"
  },
  {
    "path": "package/perl-sys-cpu/Config.in",
    "content": "config BR2_PACKAGE_PERL_SYS_CPU\n\tbool \"perl-sys-cpu\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Perl module for getting information about the system CPU\n\t  (Sys::CPU).\n\n\t  http://search.cpan.org/dist/Sys-CPU/\n\ncomment \"perl-sys-cpu needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-sys-cpu/perl-sys-cpu.hash",
    "content": "# locally computed\nsha256  ca0ec47ab24070e3040e5075337cfc69721362d9bef50f6992072efe644d4d26  Sys-CPU-0.52.tar.gz\nsha256  911a3f8e83dfff143794b34881e13f0759b498c31e067fc7dff0c2e641559e1e  README\n"
  },
  {
    "path": "package/perl-sys-cpu/perl-sys-cpu.mk",
    "content": "################################################################################\n#\n# perl-sys-cpu\n#\n################################################################################\n\nPERL_SYS_CPU_VERSION = 0.52\nPERL_SYS_CPU_SOURCE = Sys-CPU-$(PERL_SYS_CPU_VERSION).tar.gz\nPERL_SYS_CPU_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MK/MKODERER\nPERL_SYS_CPU_LICENSE = Artistic or GPL-1.0+\nPERL_SYS_CPU_LICENSE_FILES = README\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-sys-meminfo/Config.in",
    "content": "config BR2_PACKAGE_PERL_SYS_MEMINFO\n\tbool \"perl-sys-meminfo\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  query the total free and used physical memory.\n\n\t  https://metacpan.org/release/Sys-MemInfo\n\ncomment \"perl-sys-meminfo needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-sys-meminfo/perl-sys-meminfo.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    88f0632691d7de91cbed95ba1ff29025 Sys-MemInfo-0.99.tar.gz\nsha256 0786319d3a3a8bae5d727939244bf17e140b714f52734d5e9f627203e4cf3e3b Sys-MemInfo-0.99.tar.gz\n\n# computed by scancpan\nsha256 62854ade112a6782f476bdc7dc9603776c4e064782623d999f966dba131a15de LICENSE\n"
  },
  {
    "path": "package/perl-sys-meminfo/perl-sys-meminfo.mk",
    "content": "################################################################################\n#\n# perl-sys-meminfo\n#\n################################################################################\n\nPERL_SYS_MEMINFO_VERSION = 0.99\nPERL_SYS_MEMINFO_SOURCE = Sys-MemInfo-$(PERL_SYS_MEMINFO_VERSION).tar.gz\nPERL_SYS_MEMINFO_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SC/SCRESTO\nPERL_SYS_MEMINFO_LICENSE = Artistic or GPL-1.0+\nPERL_SYS_MEMINFO_LICENSE_FILES = LICENSE\nPERL_SYS_MEMINFO_DISTNAME = Sys-MemInfo\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-sys-mmap/Config.in",
    "content": "config BR2_PACKAGE_PERL_SYS_MMAP\n\tbool \"perl-sys-mmap\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  uses mmap to map in a file as a Perl variable.\n\n\t  https://metacpan.org/release/Sys-Mmap\n\ncomment \"perl-sys-mmap needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-sys-mmap/perl-sys-mmap.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    57172ce9b33c04de460b4e7ad68d2e9c Sys-Mmap-0.20.tar.gz\nsha256 1820ce2c89f1ab7357644f8db0f49f142f54526250fb1e235db10aa80f15e2cf Sys-Mmap-0.20.tar.gz\n\n# computed by scancpan\nsha256 4ac2afe465736476a06e52edcc78c72cfa0fa4d625916e58ab4f2af6c598709c Artistic\nsha256 51c144e9a67644fa8eea0ea63dedb4e837587305b22f073eb5e279e39e7325a8 Copying\n"
  },
  {
    "path": "package/perl-sys-mmap/perl-sys-mmap.mk",
    "content": "################################################################################\n#\n# perl-sys-mmap\n#\n################################################################################\n\nPERL_SYS_MMAP_VERSION = 0.20\nPERL_SYS_MMAP_SOURCE = Sys-Mmap-$(PERL_SYS_MMAP_VERSION).tar.gz\nPERL_SYS_MMAP_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TODDR\nPERL_SYS_MMAP_LICENSE = Artistic or GPL-1.0+\nPERL_SYS_MMAP_LICENSE_FILES = Artistic Copying\nPERL_SYS_MMAP_DISTNAME = Sys-Mmap\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-time-parsedate/Config.in",
    "content": "config BR2_PACKAGE_PERL_TIME_PARSEDATE\n\tbool \"perl-time-parsedate\"\n\thelp\n\t  Parse and format time values.\n\n\t  https://metacpan.org/release/Time-ParseDate\n"
  },
  {
    "path": "package/perl-time-parsedate/perl-time-parsedate.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    9143d075278857d21c77467d26f1603b Time-ParseDate-2015.103.tar.gz\nsha256 2c1a06235bf811813caac9eaa9daa71af758667cdf7b082cb59863220fcaeed1 Time-ParseDate-2015.103.tar.gz\n\n# locally calculated\nsha256 6d8de888d0662f75cfa3bf21b261741d5634ac9cdd8604d6173850546a3d40a9 lib/Time/JulianDay.pm\nsha256 9ae411fbaf87add414e7357417032dfedce652c393643bc5cb5b7698041a1dca lib/Time/Timezone.pm\n"
  },
  {
    "path": "package/perl-time-parsedate/perl-time-parsedate.mk",
    "content": "################################################################################\n#\n# perl-time-parsedate\n#\n################################################################################\n\nPERL_TIME_PARSEDATE_VERSION = 2015.103\nPERL_TIME_PARSEDATE_SOURCE = Time-ParseDate-$(PERL_TIME_PARSEDATE_VERSION).tar.gz\nPERL_TIME_PARSEDATE_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MU/MUIR/modules\nPERL_TIME_PARSEDATE_LICENSE = Time Parse Date License, Public Domain\nPERL_TIME_PARSEDATE_LICENSE_FILES = lib/Time/JulianDay.pm lib/Time/Timezone.pm\nPERL_TIME_PARSEDATE_DISTNAME = Time-ParseDate\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-timedate/Config.in",
    "content": "config BR2_PACKAGE_PERL_TIMEDATE\n\tbool \"perl-timedate\"\n\thelp\n\t  miscellaneous timezone manipulations routines.\n\n\t  https://metacpan.org/release/TimeDate\n"
  },
  {
    "path": "package/perl-timedate/perl-timedate.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  5e5afe22c8d417417283d1f7f4572a57  TimeDate-2.33.tar.gz\nsha256  c0b69c4b039de6f501b0d9f13ec58c86b040c1f7e9b27ef249651c143d605eb2  TimeDate-2.33.tar.gz\n\n# computed by scancpan\nsha256  e72e67533eb3ddd705ae718898945e2f3bf3702e91e85bb67824575706bd5bf9  README\n"
  },
  {
    "path": "package/perl-timedate/perl-timedate.mk",
    "content": "################################################################################\n#\n# perl-timedate\n#\n################################################################################\n\nPERL_TIMEDATE_VERSION = 2.33\nPERL_TIMEDATE_SOURCE = TimeDate-$(PERL_TIMEDATE_VERSION).tar.gz\nPERL_TIMEDATE_SITE = $(BR2_CPAN_MIRROR)/authors/id/A/AT/ATOOMIC\nPERL_TIMEDATE_LICENSE = Artistic or GPL-1.0+\nPERL_TIMEDATE_LICENSE_FILES = README\nPERL_TIMEDATE_DISTNAME = TimeDate\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-try-tiny/Config.in",
    "content": "config BR2_PACKAGE_PERL_TRY_TINY\n\tbool \"perl-try-tiny\"\n\thelp\n\t  Minimal try/catch with proper preservation of $@.\n\n\t  https://github.com/p5sagit/Try-Tiny\n"
  },
  {
    "path": "package/perl-try-tiny/perl-try-tiny.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    eb362c3cb32c42f9f28de9ddb7f2ead6 Try-Tiny-0.30.tar.gz\nsha256 da5bd0d5c903519bbf10bb9ba0cb7bcac0563882bcfe4503aee3fb143eddef6b Try-Tiny-0.30.tar.gz\n\n# computed by scancpan\nsha256 f1864ede834871a1207fcd19838b6bd5e1ff0a8704f5cc523fc397126041ed0b LICENCE\n"
  },
  {
    "path": "package/perl-try-tiny/perl-try-tiny.mk",
    "content": "################################################################################\n#\n# perl-try-tiny\n#\n################################################################################\n\nPERL_TRY_TINY_VERSION = 0.30\nPERL_TRY_TINY_SOURCE = Try-Tiny-$(PERL_TRY_TINY_VERSION).tar.gz\nPERL_TRY_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER\nPERL_TRY_TINY_LICENSE = MIT\nPERL_TRY_TINY_LICENSE_FILES = LICENCE\nPERL_TRY_TINY_DISTNAME = Try-Tiny\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-type-tiny/Config.in",
    "content": "config BR2_PACKAGE_PERL_TYPE_TINY\n\tbool \"perl-type-tiny\"\n\tselect BR2_PACKAGE_PERL_EXPORTER_TINY # runtime\n\thelp\n\t  tiny, yet Moo(se)-compatible type constraint.\n\n\t  https://typetiny.toby.ink/\n"
  },
  {
    "path": "package/perl-type-tiny/perl-type-tiny.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  7a1688c4de07a0ed481a1811e5e82e63  Type-Tiny-1.012004.tar.gz\nsha256  75cd06b612d1830ae9f4b22298b506b3ff04518fa7453f487c248cd62a906a2b  Type-Tiny-1.012004.tar.gz\n\n# computed by scancpan\nsha256  34427749499bd6d6e5d206089bc03d76c647a1350f8b5f95ea628d2b6ff56e4c  LICENSE\n"
  },
  {
    "path": "package/perl-type-tiny/perl-type-tiny.mk",
    "content": "################################################################################\n#\n# perl-type-tiny\n#\n################################################################################\n\nPERL_TYPE_TINY_VERSION = 1.012004\nPERL_TYPE_TINY_SOURCE = Type-Tiny-$(PERL_TYPE_TINY_VERSION).tar.gz\nPERL_TYPE_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TOBYINK\nPERL_TYPE_TINY_LICENSE = Artistic or GPL-1.0+\nPERL_TYPE_TINY_LICENSE_FILES = LICENSE\nPERL_TYPE_TINY_DISTNAME = Type-Tiny\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-uri/Config.in",
    "content": "config BR2_PACKAGE_PERL_URI\n\tbool \"perl-uri\"\n\thelp\n\t  Uniform Resource Identifiers (absolute and relative).\n\n\t  https://github.com/libwww-perl/URI\n"
  },
  {
    "path": "package/perl-uri/perl-uri.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5  bd66b0c620d076c4b0de9507b5f1fbdf  URI-5.09.tar.gz\nsha256  03e63ada499d2645c435a57551f041f3943970492baa3b3338246dab6f1fae0a  URI-5.09.tar.gz\n\n# computed by scancpan\nsha256  65cd6f88516a30f56fd4e0080fb78ea69424fc89067470dc994e4abfba08664e  LICENSE\n"
  },
  {
    "path": "package/perl-uri/perl-uri.mk",
    "content": "################################################################################\n#\n# perl-uri\n#\n################################################################################\n\nPERL_URI_VERSION = 5.09\nPERL_URI_SOURCE = URI-$(PERL_URI_VERSION).tar.gz\nPERL_URI_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS\nPERL_URI_LICENSE = Artistic or GPL-1.0+\nPERL_URI_LICENSE_FILES = LICENSE\nPERL_URI_DISTNAME = URI\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-www-form-urlencoded/Config.in",
    "content": "config BR2_PACKAGE_PERL_WWW_FORM_URLENCODED\n\tbool \"perl-www-form-urlencoded\"\n\thelp\n\t  parser and builder for application/x-www-form-urlencoded.\n\n\t  https://github.com/kazeburo/WWW-Form-UrlEncoded\n"
  },
  {
    "path": "package/perl-www-form-urlencoded/perl-www-form-urlencoded.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    cbe0e1c3ee54738d900c739ea348efda WWW-Form-UrlEncoded-0.26.tar.gz\nsha256 c0480b5f1f15b71163ec327b8e7842298f0cb3ace97e63d7034af1e94a2d90f4 WWW-Form-UrlEncoded-0.26.tar.gz\n\n# computed by scancpan\nsha256 79c2a066104e71602785fd815c5aea6f7db78c19451d68521380083f9c2a8805 LICENSE\n"
  },
  {
    "path": "package/perl-www-form-urlencoded/perl-www-form-urlencoded.mk",
    "content": "################################################################################\n#\n# perl-www-form-urlencoded\n#\n################################################################################\n\nPERL_WWW_FORM_URLENCODED_VERSION = 0.26\nPERL_WWW_FORM_URLENCODED_SOURCE = WWW-Form-UrlEncoded-$(PERL_WWW_FORM_URLENCODED_VERSION).tar.gz\nPERL_WWW_FORM_URLENCODED_SITE = $(BR2_CPAN_MIRROR)/authors/id/K/KA/KAZEBURO\nPERL_WWW_FORM_URLENCODED_DEPENDENCIES = host-perl-module-build\nPERL_WWW_FORM_URLENCODED_LICENSE = Artistic or GPL-1.0+\nPERL_WWW_FORM_URLENCODED_LICENSE_FILES = LICENSE\nPERL_WWW_FORM_URLENCODED_DISTNAME = WWW-Form-UrlEncoded\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-www-robotrules/Config.in",
    "content": "config BR2_PACKAGE_PERL_WWW_ROBOTRULES\n\tbool \"perl-www-robotrules\"\n\tselect BR2_PACKAGE_PERL_URI # runtime\n\thelp\n\t  database of robots.txt-derived permissions.\n\n\t  https://metacpan.org/release/WWW-RobotRules\n"
  },
  {
    "path": "package/perl-www-robotrules/perl-www-robotrules.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    b7186e8b8b3701e70c22abf430742403 WWW-RobotRules-6.02.tar.gz\nsha256 46b502e7a288d559429891eeb5d979461dd3ecc6a5c491ead85d165b6e03a51e WWW-RobotRules-6.02.tar.gz\n\n# computed by scancpan\nsha256 fa375c4f771b92fc076b6c66e19440a0fff51dacf489fecd94bf560091279e05 README\n"
  },
  {
    "path": "package/perl-www-robotrules/perl-www-robotrules.mk",
    "content": "################################################################################\n#\n# perl-www-robotrules\n#\n################################################################################\n\nPERL_WWW_ROBOTRULES_VERSION = 6.02\nPERL_WWW_ROBOTRULES_SOURCE = WWW-RobotRules-$(PERL_WWW_ROBOTRULES_VERSION).tar.gz\nPERL_WWW_ROBOTRULES_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS\nPERL_WWW_ROBOTRULES_LICENSE = Artistic or GPL-1.0+\nPERL_WWW_ROBOTRULES_LICENSE_FILES = README\nPERL_WWW_ROBOTRULES_DISTNAME = WWW-RobotRules\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-x10/Config.in",
    "content": "config BR2_PACKAGE_PERL_X10\n\tbool \"perl-x10\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_PERL_ASTRO_SUNTIME # runtime\n\tselect BR2_PACKAGE_PERL_DEVICE_SERIALPORT # runtime\n\tselect BR2_PACKAGE_PERL_TIME_PARSEDATE # runtime\n\thelp\n\t  creates a server used to receive events from an x10 client.\n\n\t  https://metacpan.org/release/X10\n\ncomment \"perl-x10 needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-x10/perl-x10.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    20dcca2dfb978bfed3043276aa3481e5 X10-0.04.tar.gz\nsha256 3dcee9d95614b2db70de608e933d42817f93fccd5b1f2f782b0846af487d9134 X10-0.04.tar.gz\n\n# computed by scancpan\nsha256 e6f320afa82517d663be348dd2515ecb1454a7c851ba5590f13aca01d219be80 README\n"
  },
  {
    "path": "package/perl-x10/perl-x10.mk",
    "content": "################################################################################\n#\n# perl-x10\n#\n################################################################################\n\nPERL_X10_VERSION = 0.04\nPERL_X10_SOURCE = X10-$(PERL_X10_VERSION).tar.gz\nPERL_X10_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RO/ROBF\nPERL_X10_LICENSE = GPL-3.0\nPERL_X10_LICENSE_FILES = README\nPERL_X10_DISTNAME = X10\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-xml-libxml/0001-Makefile-PL.patch",
    "content": "fake check_lib for cross-compilation\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\nIndex: b/Makefile.PL\n===================================================================\n--- a/Makefile.PL\n+++ b/Makefile.PL\n@@ -88,8 +88,7 @@\n # -------------------------------------------------------------------------- #\n # -------------------------------------------------------------------------- #\n \n-use lib qw(inc);\n-use Devel::CheckLib;\n+sub check_lib { return 1; }\n \n # Prompt the user here for any paths and other configuration\n \n"
  },
  {
    "path": "package/perl-xml-libxml/Config.in",
    "content": "config BR2_PACKAGE_PERL_XML_LIBXML\n\tbool \"perl-xml-libxml\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_PERL_XML_NAMESPACESUPPORT # runtime\n\tselect BR2_PACKAGE_PERL_XML_SAX # runtime\n\tselect BR2_PACKAGE_PERL_XML_SAX_BASE # runtime\n\thelp\n\t  Interface to Gnome libxml2 xml parsing and DOM library.\n\n\t  https://github.com/shlomif/perl-XML-LibXML\n\ncomment \"perl-xml-libxml needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/perl-xml-libxml/perl-xml-libxml.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    dce687dd8b7e82d1c359fd74b1852f64 XML-LibXML-2.0134.tar.gz\nsha256 f0bca4d0c2da35d879fee4cd13f352014186cedab27ab5e191f39b5d7d4f46cf XML-LibXML-2.0134.tar.gz\n\n# computed by scancpan\nsha256 5046a7ec515cc1542beafdf2eadeeff24cc221fc3fde9913dd144fd263ae6100 LICENSE\n"
  },
  {
    "path": "package/perl-xml-libxml/perl-xml-libxml.mk",
    "content": "################################################################################\n#\n# perl-xml-libxml\n#\n################################################################################\n\nPERL_XML_LIBXML_VERSION = 2.0134\nPERL_XML_LIBXML_SOURCE = XML-LibXML-$(PERL_XML_LIBXML_VERSION).tar.gz\nPERL_XML_LIBXML_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SH/SHLOMIF\nPERL_XML_LIBXML_DEPENDENCIES = zlib libxml2\nPERL_XML_LIBXML_LICENSE = Artistic or GPL-1.0+\nPERL_XML_LIBXML_LICENSE_FILES = LICENSE\nPERL_XML_LIBXML_CPE_ID_VENDOR = xml-libxml_project\nPERL_XML_LIBXML_CPE_ID_PRODUCT = xml-libxml\nPERL_XML_LIBXML_DISTNAME = XML-LibXML\n\nPERL_XML_LIBXML_CONF_OPTS = \\\n\tLIBS=\"-L $(STAGING_DIR)/usr/lib\" \\\n\tINC=\"-I $(STAGING_DIR)/usr/include/libxml2\" \\\n\tNO_THREADS\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-xml-namespacesupport/Config.in",
    "content": "config BR2_PACKAGE_PERL_XML_NAMESPACESUPPORT\n\tbool \"perl-xml-namespacesupport\"\n\thelp\n\t  A simple generic namespace processor.\n\n\t  https://github.com/perigrin/xml-namespacesupport\n"
  },
  {
    "path": "package/perl-xml-namespacesupport/perl-xml-namespacesupport.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    a8916c6d095bcf073e1108af02e78c97 XML-NamespaceSupport-1.12.tar.gz\nsha256 47e995859f8dd0413aa3f22d350c4a62da652e854267aa0586ae544ae2bae5ef XML-NamespaceSupport-1.12.tar.gz\n\n# computed by scancpan\nsha256 3fed787f0f9e1d74024ec7ae5f0f4736c693bcf263781da2054eb4bb1337e911 LICENSE\n"
  },
  {
    "path": "package/perl-xml-namespacesupport/perl-xml-namespacesupport.mk",
    "content": "################################################################################\n#\n# perl-xml-namespacesupport\n#\n################################################################################\n\nPERL_XML_NAMESPACESUPPORT_VERSION = 1.12\nPERL_XML_NAMESPACESUPPORT_SOURCE = XML-NamespaceSupport-$(PERL_XML_NAMESPACESUPPORT_VERSION).tar.gz\nPERL_XML_NAMESPACESUPPORT_SITE = $(BR2_CPAN_MIRROR)/authors/id/P/PE/PERIGRIN\nPERL_XML_NAMESPACESUPPORT_LICENSE = Artistic or GPL-1.0+\nPERL_XML_NAMESPACESUPPORT_LICENSE_FILES = LICENSE\nPERL_XML_NAMESPACESUPPORT_DISTNAME = XML-NamespaceSupport\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-xml-sax/Config.in",
    "content": "config BR2_PACKAGE_PERL_XML_SAX\n\tbool \"perl-xml-sax\"\n\tselect BR2_PACKAGE_PERL_XML_NAMESPACESUPPORT # runtime\n\tselect BR2_PACKAGE_PERL_XML_SAX_BASE # runtime\n\thelp\n\t  Simple API for XML.\n\n\t  https://metacpan.org/release/XML-SAX\n"
  },
  {
    "path": "package/perl-xml-sax/perl-xml-sax.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    b62e3754523695c7f5bbcafa3676a38d XML-SAX-1.02.tar.gz\nsha256 4506c387043aa6a77b455f00f57409f3720aa7e553495ab2535263b4ed1ea12a XML-SAX-1.02.tar.gz\n\n# computed by scancpan\nsha256 bf2fb225e77b46b8892ef2a8aa5efa92d65b176a870f42559d8b73b308a36509 LICENSE\n"
  },
  {
    "path": "package/perl-xml-sax/perl-xml-sax.mk",
    "content": "################################################################################\n#\n# perl-xml-sax\n#\n################################################################################\n\nPERL_XML_SAX_VERSION = 1.02\nPERL_XML_SAX_SOURCE = XML-SAX-$(PERL_XML_SAX_VERSION).tar.gz\nPERL_XML_SAX_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GR/GRANTM\nPERL_XML_SAX_LICENSE = Artistic or GPL-1.0+\nPERL_XML_SAX_LICENSE_FILES = LICENSE\nPERL_XML_SAX_DISTNAME = XML-SAX\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/perl-xml-sax-base/Config.in",
    "content": "config BR2_PACKAGE_PERL_XML_SAX_BASE\n\tbool \"perl-xml-sax-base\"\n\thelp\n\t  Base class for SAX Drivers and Filters.\n\n\t  https://metacpan.org/release/XML-SAX-Base\n"
  },
  {
    "path": "package/perl-xml-sax-base/perl-xml-sax-base.hash",
    "content": "# retrieved by scancpan from http://cpan.metacpan.org/\nmd5    ec347a14065dd7aec7d9fb181b2d7946 XML-SAX-Base-1.09.tar.gz\nsha256 66cb355ba4ef47c10ca738bd35999723644386ac853abbeb5132841f5e8a2ad0 XML-SAX-Base-1.09.tar.gz\n\n# computed by scancpan\nsha256 2a9aae56e13888493523ee9053689627e092aafcf2c5fb06f06df07260f91b42 README\n"
  },
  {
    "path": "package/perl-xml-sax-base/perl-xml-sax-base.mk",
    "content": "################################################################################\n#\n# perl-xml-sax-base\n#\n################################################################################\n\nPERL_XML_SAX_BASE_VERSION = 1.09\nPERL_XML_SAX_BASE_SOURCE = XML-SAX-Base-$(PERL_XML_SAX_BASE_VERSION).tar.gz\nPERL_XML_SAX_BASE_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GR/GRANTM\nPERL_XML_SAX_BASE_LICENSE = Artistic or GPL-1.0+\nPERL_XML_SAX_BASE_LICENSE_FILES = README\nPERL_XML_SAX_BASE_DISTNAME = XML-SAX-Base\n\n$(eval $(perl-package))\n"
  },
  {
    "path": "package/phidgetwebservice/Config.in",
    "content": "config BR2_PACKAGE_PHIDGETWEBSERVICE\n\tbool \"phidgetwebservice\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb, libphidget\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libphidget -> libusb\n\tdepends on !BR2_STATIC_LIBS # libphidget\n\tselect BR2_PACKAGE_LIBPHIDGET\n\thelp\n\t  phidgetwebservice (the Phidget WebService) provides an HTTP\n\t  front-end to the libphidget device control API. This\n\t  provides an alternative to the libphidget C linkage\n\t  interface for controlling locally attached Phidgets USB\n\t  devices and it also allows you to control Phidget USB\n\t  devices remotely when the host running the phidgetwebservice\n\t  has an exposed network interface.\n\n\t  The phidgetwebservice client program uses the libphidget\n\t  HTTP functions to send commands to the phidgetwebservice.\n\n\t  http://phidgets.com/\n\ncomment \"phidgetwebservice needs a toolchain w/ threads, dynamic library, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/phidgetwebservice/phidgetwebservice.hash",
    "content": "# locally computed\nsha256  aa63cbd2ab87182d6e0c05d553ee4c8cc73d268516d8e0a1e881baed391c081d  phidgetwebservice_2.1.9.20190409.tar.gz\nsha256  ea8af5e789cb2d4e9b10bce3874982ade163b749b6bfbdb32e2df21c4d106de1  COPYING\n"
  },
  {
    "path": "package/phidgetwebservice/phidgetwebservice.mk",
    "content": "################################################################################\n#\n# phidgetwebservice\n#\n################################################################################\n\nPHIDGETWEBSERVICE_VERSION = 2.1.9.20190409\nPHIDGETWEBSERVICE_SOURCE = phidgetwebservice_$(PHIDGETWEBSERVICE_VERSION).tar.gz\nPHIDGETWEBSERVICE_SITE = https://www.phidgets.com/downloads/phidget21/servers/linux/phidgetwebservice\nPHIDGETWEBSERVICE_DEPENDENCIES = libphidget\nPHIDGETWEBSERVICE_LICENSE = LGPL-3.0\nPHIDGETWEBSERVICE_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/php/0001-acinclude.m4-don-t-unset-variables.patch",
    "content": "From 7a4168062fbab2e33ef9a42bca9f87a5921afac2 Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Tue, 9 Aug 2016 11:49:56 +0200\nSubject: [PATCH] acinclude.m4: don't unset variables\n\nUnsetting ac_cv_{func,lib}_* is bad, you can't feed the configure cache.\nTerminate them with extreme prejudice.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n[aduskett@gmail.com: Update for 7.3.0]\n---\n build/php.m4 | 4 ----\n 1 file changed, 4 deletions(-)\n\ndiff --git a/build/php.m4 b/build/php.m4\nindex e91ef988..9586c490 100644\n--- a/build/php.m4\n+++ b/build/php.m4\n@@ -1568,8 +1568,6 @@ dnl PHP_CHECK_FUNC_LIB\n dnl\n AC_DEFUN([PHP_CHECK_FUNC_LIB],[\n   ifelse($2,,:,[\n-  unset ac_cv_lib_$2[]_$1\n-  unset ac_cv_lib_$2[]___$1\n   unset found\n   AC_CHECK_LIB($2, $1, [found=yes], [\n     AC_CHECK_LIB($2, __$1, [found=yes], [found=no])\n@@ -1601,8 +1599,6 @@ dnl and as a fall back in the specified library. Defines HAVE_func and\n dnl HAVE_library if found and adds the library to LIBS.\n dnl\n AC_DEFUN([PHP_CHECK_FUNC],[\n-  unset ac_cv_func_$1\n-  unset ac_cv_func___$1\n   unset found\n \n   AC_CHECK_FUNC($1, [found=yes],[ AC_CHECK_FUNC(__$1,[found=yes],[found=no]) ])\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/php/0002-iconv-tweak-iconv-detection.patch",
    "content": "From 1357df0196806d5697b1f84497ef72aab5faa8a3 Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Tue, 9 Aug 2016 11:50:49 +0200\nSubject: [PATCH] iconv: tweak iconv detection\n\nTweak PHP_SETUP_ICONV from aclocal/build/php.m4 to not\nPHP_ADD_INCLUDE $ICONV_DIR/include since the tests use\ntest instead of AC_TRY_LINK to find headers which is bad,\nspecially when adding /usr and /usr/local to the mix.\nDo basically the same with ext/iconv/config.m4 by tweaking\nPHP_ICONV_H_PATH which, again, uses test and absolute paths.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n[Gustavo: convert to nice m4 instead of patching configure]\n[Gustavo: update for 5.6.10]\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n[aduskett@gmail.com: Update for 8.0.7]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Bernd: rebased for 7.4.10 & 7.4.13]\n---\n build/php.m4 | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/build/php.m4 b/build/php.m4\nindex 9586c490..8b3d47ed 100644\n--- a/build/php.m4\n+++ b/build/php.m4\n@@ -1937,7 +1937,7 @@ AC_DEFUN([PHP_SETUP_ICONV], [\n   dnl Check external libs for iconv funcs.\n   if test \"$found_iconv\" = \"no\"; then\n \n-    for i in $PHP_ICONV /usr/local /usr; do\n+    for i in $PHP_ICONV; do\n       if test -r $i/include/gnu-libiconv/iconv.h; then\n         ICONV_DIR=$i\n         ICONV_INCLUDE_DIR=$i/include/gnu-libiconv\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/php/0003-configure-disable-the-phar-tool.patch",
    "content": "From 5ba6355e489f647c88ca48afbc75965468193181 Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Tue, 9 Aug 2016 11:51:53 +0200\nSubject: [PATCH] configure: disable the 'phar' tool\n\nDisable the 'phar' command-line tool build/installation since it requires\nphp to run and pack up phar itself in phar format. This would require\na host-php instance and really probably nobody needs the phar tool\non the target.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n[Gustavo: update for autoreconf/configure.in]\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n[Aduskett: update for 8.0.7]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Bernd: rebased for 7.4.10 & 7.4.13]\n---\n configure.ac | 9 ++-------\n 1 file changed, 2 insertions(+), 7 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 0dfab302..6026fb66 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1423,13 +1423,8 @@ CFLAGS_CLEAN=\"$CFLAGS \\$(PROF_FLAGS)\"\n CFLAGS=\"\\$(CFLAGS_CLEAN) $standard_libtool_flag\"\n CXXFLAGS=\"$CXXFLAGS $standard_libtool_flag \\$(PROF_FLAGS)\"\n \n-if test \"$PHP_PHAR\" != \"no\" && test \"$PHP_CLI\" != \"no\"; then\n-  pharcmd=pharcmd\n-  pharcmd_install=install-pharcmd\n-else\n-  pharcmd=\n-  pharcmd_install=\n-fi;\n+pharcmd=\n+pharcmd_install=\n \n all_targets=\"$lcov_target \\$(OVERALL_TARGET) \\$(PHP_MODULES) \\$(PHP_ZEND_EX) \\$(PHP_BINARIES) $pharcmd\"\n install_targets=\"$install_sapi $install_modules $install_binaries install-build install-headers install-programs $install_pear $pharcmd_install\"\n-- \n2.14.3\n\n"
  },
  {
    "path": "package/php/0004-Call-apxs-with-correct-prefix.patch",
    "content": "From 4342bdea7a1a21430ce0d051fa4387441166c473 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fabrice.fontaine@orange.com>\nDate: Sun, 11 Dec 2016 23:12:46 +0100\nSubject: [PATCH] Call apxs with correct prefix\n\nphp uses apache's apxs script from staging directory to install libphp\ndynamic library and update /etc/apache2/httpd.conf in the staging and target\ndirectories. Here is the full command line:\n\"apxs -S LIBEXECDIR='$(INSTALL_ROOT)/usr/modules'\n -S SYSCONFDIR='$(INSTALL_ROOT)/etc/apache2' -i -a -n php\"\nThis does not work for target directory as apxs sets the full path of the\nlibrary and not the relative one. Indeed, apxs is smart enough to substitute\naway the prefix specified in $(STAGING_DIR)/usr/build/config_vars.mk so\nhttpd.conf will only be correct in the staging directory.\nTo fix this, add -S PREFIX='$(INSTALL_ROOT)/usr' to apxs call in configure\n\nSigned-off-by: Fabrice Fontaine <fabrice.fontaine@orange.com>\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n[aduskett@gmail.com: Update for 8.0.7]\n---\n sapi/apache2handler/config.m4 | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/sapi/apache2handler/config.m4 b/sapi/apache2handler/config.m4\nindex 55c16179..68ce66c0 100644\n--- a/sapi/apache2handler/config.m4\n+++ b/sapi/apache2handler/config.m4\n@@ -63,10 +63,12 @@ if test \"$PHP_APXS2\" != \"no\"; then\n     AC_MSG_ERROR([Please note that Apache version >= 2.0.44 is required])\n   fi\n \n+  APXS_PREFIX='$(INSTALL_ROOT)'/usr\n   APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR`\n   if test -z `$APXS -q SYSCONFDIR`; then\n     INSTALL_IT=\"\\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \\\n                  $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \\\n+                       -S PREFIX='$APXS_PREFIX' \\\n                        -i -n php\"\n   else\n     APXS_SYSCONFDIR='$(INSTALL_ROOT)'`$APXS -q SYSCONFDIR`\n@@ -74,6 +76,7 @@ if test \"$PHP_APXS2\" != \"no\"; then\n                 \\$(mkinstalldirs) '$APXS_SYSCONFDIR' && \\\n                  $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \\\n                        -S SYSCONFDIR='$APXS_SYSCONFDIR' \\\n+                       -S PREFIX='$APXS_PREFIX' \\\n                        -i -a -n php\"\n   fi\n \n-- \n2.5.0\n\n"
  },
  {
    "path": "package/php/0005-allow-opcache-cross-compiling.patch",
    "content": "From 9bb316c41a69935ee2072626467241889594bed4 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <aduskett@gmail.com>\nDate: Mon, 28 Jun 2021 11:12:36 -0700\nSubject: [PATCH] allow opcache cross-compiling\n\nRemove the check at the end of ext/opcache/config.m4 that prevents opcache from\nbeing enabled in a cross-compiled environment. We pass the following as a\nCFLAGS when opcache is enabled:\n  -DHAVE_SHM_IPC\n  -DHAVE_SHM_MMAP_ANON\n  -DHAVE_SHM_MMAP_ZERO\n  -DHAVE_SHM_MMAP_POSIX\n  -DHAVE_SHM_MMAP_FILE\n\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n ext/opcache/config.m4 | 4 ----\n 1 file changed, 4 deletions(-)\n\ndiff --git a/ext/opcache/config.m4 b/ext/opcache/config.m4\nindex 5492fd92..10c150ff 100644\n--- a/ext/opcache/config.m4\n+++ b/ext/opcache/config.m4\n@@ -339,10 +339,6 @@ int main() {\n   PHP_ADD_BUILD_DIR([$ext_builddir/Optimizer], 1)\n   PHP_ADD_EXTENSION_DEP(opcache, pcre)\n \n-  if test \"$have_shm_ipc\" != \"yes\" && test \"$have_shm_mmap_posix\" != \"yes\" && test \"$have_shm_mmap_anon\" != \"yes\"; then\n-    AC_MSG_ERROR([No supported shared memory caching support was found when configuring opcache. Check config.log for any errors or missing dependencies.])\n-  fi\n-\n   if test \"$PHP_OPCACHE_JIT\" = \"yes\"; then\n     PHP_ADD_BUILD_DIR([$ext_builddir/jit], 1)\n     PHP_ADD_MAKEFILE_FRAGMENT($ext_srcdir/jit/Makefile.frag)\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/php/Config.ext",
    "content": "menu \"Extensions\"\n\nconfig BR2_PACKAGE_PHP_EXT_CALENDAR\n\tbool \"Calendar\"\n\thelp\n\t  Calendar and event support\n\nconfig BR2_PACKAGE_PHP_EXT_FILEINFO\n\tbool \"Fileinfo\"\n\thelp\n\t  File Information support\n\ncomment \"OPcache needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_PHP_EXT_OPCACHE\n\tbool \"OPcache\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Enable the Zend OPcache accelerator.\n\ncomment \"Readline needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_PHP_EXT_READLINE\n\tbool \"Readline\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  Readline support\n\nconfig BR2_PACKAGE_PHP_EXT_SESSION\n\tbool \"Session\"\n\tdefault y\n\thelp\n\t  Session support\n\ncomment \"Compression extensions\"\n\nconfig BR2_PACKAGE_PHP_EXT_BZIP2\n\tbool \"bzip2\"\n\tselect BR2_PACKAGE_BZIP2\n\thelp\n\t  bzip2 read/write support\n\nconfig BR2_PACKAGE_PHP_EXT_PHAR\n\tbool \"phar\"\n\thelp\n\t  PHP Archive support\n\ncomment \"zip needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_PHP_EXT_ZIP\n\tbool \"zip\"\n\tdepends on !BR2_STATIC_LIBS # libzip\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_LIBZIP\n\thelp\n\t  Zip read/write support\n\nconfig BR2_PACKAGE_PHP_EXT_ZLIB\n\tbool \"zlib\"\n\tdefault y\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  zlib support\n\ncomment \"Cryptography extensions\"\n\ncomment \"libargon2 needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_PHP_EXT_LIBARGON2\n\tbool \"libargon2\"\n\tdepends on BR2_USE_MMU # libargon2\n\tdepends on !BR2_STATIC_LIBS # libargon2\n\tselect BR2_PACKAGE_LIBARGON2\n\thelp\n\t  libargon2 support\n\nconfig BR2_PACKAGE_PHP_EXT_LIBSODIUM\n\tbool \"libsodium\"\n\tselect BR2_PACKAGE_LIBSODIUM\n\thelp\n\t  libsodium support\n\nconfig BR2_PACKAGE_PHP_EXT_OPENSSL\n\tbool \"openssl\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  openssl support\n\ncomment \"Database extensions\"\n\nconfig BR2_PACKAGE_PHP_EXT_DBA\n\tbool \"DBA\"\n\thelp\n\t  Database Abstraction Layer\n\nif BR2_PACKAGE_PHP_EXT_DBA\n\nconfig BR2_PACKAGE_PHP_EXT_DBA_CDB\n\tbool \"cdb\"\n\thelp\n\t  CDB handler\n\nconfig BR2_PACKAGE_PHP_EXT_DBA_DB4\n\tbool \"db4/5\"\n\tselect BR2_PACKAGE_BERKELEYDB\n\thelp\n\t  BerkeleyDB version 4/5 handler\n\nconfig BR2_PACKAGE_PHP_EXT_DBA_FLAT\n\tbool \"flat\"\n\tdefault y\n\thelp\n\t  Flat file handler\n\nconfig BR2_PACKAGE_PHP_EXT_DBA_INI\n\tbool \"ini\"\n\tdefault y\n\thelp\n\t  INI file handler\n\nendif\n\nconfig BR2_PACKAGE_PHP_EXT_MYSQLI\n\tbool \"Mysqli\"\n\thelp\n\t  MySQL Improved extension support\n\nconfig BR2_PACKAGE_PHP_EXT_PGSQL\n\tbool \"PostgreSQL\"\n\tdepends on BR2_USE_MMU # postgresql\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR # postgresql\n\tselect BR2_PACKAGE_POSTGRESQL\n\thelp\n\t  PostgreSQL support\n\ncomment \"PostgreSQL extension needs a toolchain w/ dynamic library, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_PHP_EXT_SQLITE\n\tbool \"SQLite3\"\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  SQLite3 support\n\nconfig BR2_PACKAGE_PHP_EXT_PDO\n\tbool \"PDO\"\n\thelp\n\t  PHP Data Objects support\n\nif BR2_PACKAGE_PHP_EXT_PDO\n\nconfig BR2_PACKAGE_PHP_EXT_PDO_MYSQL\n\tbool \"MySQL\"\n\thelp\n\t  PDO driver for MySQL\n\nconfig BR2_PACKAGE_PHP_EXT_PDO_POSTGRESQL\n\tbool \"PostgreSQL\"\n\tdepends on BR2_USE_MMU # postgresql\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR # postgresql\n\tselect BR2_PACKAGE_POSTGRESQL\n\thelp\n\t  PDO driver for PostgreSQL\n\ncomment \"PostgreSQL drivers need a toolchain w/ wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_PHP_EXT_PDO_SQLITE\n\tbool \"SQLite3\"\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  SQLite3 driver for PDO\n\nconfig BR2_PACKAGE_PHP_EXT_PDO_UNIXODBC\n\tbool \"unixODBC\"\n\tdepends on !BR2_STATIC_LIBS # unixodbc\n\tselect BR2_PACKAGE_UNIXODBC\n\thelp\n\t  unixODBC driver for PDO\n\ncomment \"unixodbc driver needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nendif\n\ncomment \"Human language and character encoding support\"\n\nconfig BR2_PACKAGE_PHP_EXT_GETTEXT\n\tbool \"Gettext\"\n\tdepends on BR2_SYSTEM_ENABLE_NLS\n\thelp\n\t  Gettext support\n\ncomment \"Gettext support needs NLS enabled\"\n\tdepends on !BR2_SYSTEM_ENABLE_NLS\n\nconfig BR2_PACKAGE_PHP_EXT_ICONV\n\tbool \"iconv\"\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  iconv character set conversion support\n\nconfig BR2_PACKAGE_PHP_EXT_INTL\n\tbool \"intl\"\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # icu\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # icu\n\tdepends on !BR2_BINFMT_FLAT # icu\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # icu\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_ICU\n\thelp\n\t  Internationalization support\n\ncomment \"intl support needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_PHP_EXT_MBSTRING\n\tbool \"mbstring\"\n\tselect BR2_PACKAGE_ONIGURUMA\n\thelp\n\t  multibyte string support\n\ncomment \"Image processing\"\n\nconfig BR2_PACKAGE_PHP_EXT_EXIF\n\tbool \"EXIF\"\n\thelp\n\t  EXIF support\n\nconfig BR2_PACKAGE_PHP_EXT_GD\n\tbool \"GD\"\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  GD support\n\ncomment \"Mathematical extensions\"\n\nconfig BR2_PACKAGE_PHP_EXT_BCMATH\n\tbool \"BC math\"\n\thelp\n\t  BCMath arbitrary precision mathematics support\n\nconfig BR2_PACKAGE_PHP_EXT_GMP\n\tbool \"GMP\"\n\tselect BR2_PACKAGE_GMP\n\thelp\n\t  GNU Multiple Precision support\n\ncomment \"Other basic extensions\"\n\nconfig BR2_PACKAGE_PHP_EXT_TOKENIZER\n\tbool \"Tokenizer\"\n\thelp\n\t  Tokenizer functions support\n\ncomment \"Other services\"\n\nconfig BR2_PACKAGE_PHP_EXT_CURL\n\tbool \"cURL\"\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  cURL for URL streams\n\nconfig BR2_PACKAGE_PHP_EXT_FTP\n\tbool \"FTP\"\n\thelp\n\t  FTP support\n\nconfig BR2_PACKAGE_PHP_EXT_SNMP\n\tbool \"SNMP\"\n\tdepends on BR2_USE_MMU # netsnmp fork()\n\tselect BR2_PACKAGE_NETSNMP\n\tselect BR2_PACKAGE_NETSNMP_ENABLE_MIBS\n\thelp\n\t  SNMP support\n\nconfig BR2_PACKAGE_PHP_EXT_SOCKETS\n\tbool \"sockets\"\n\thelp\n\t  Sockets support\n\ncomment \"Process Control\"\n\nconfig BR2_PACKAGE_PHP_EXT_PCNTL\n\tbool \"PCNTL\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Process control support\n\nconfig BR2_PACKAGE_PHP_EXT_POSIX\n\tbool \"Posix\"\n\tdefault y\n\thelp\n\t  POSIX.1 (IEEE 1003.1) function support\n\nconfig BR2_PACKAGE_PHP_EXT_SHMOP\n\tbool \"shmop\"\n\thelp\n\t  Shared memory support\n\nconfig BR2_PACKAGE_PHP_EXT_SYSVMSG\n\tbool \"sysvmsg\"\n\thelp\n\t  System V message queue support\n\nconfig BR2_PACKAGE_PHP_EXT_SYSVSEM\n\tbool \"sysvsem\"\n\thelp\n\t  System V semaphore support\n\nconfig BR2_PACKAGE_PHP_EXT_SYSVSHM\n\tbool \"sysvshm\"\n\thelp\n\t  System V shared memory support\n\ncomment \"Variable and Type related\"\n\nconfig BR2_PACKAGE_PHP_EXT_CTYPE\n\tbool \"Ctype\"\n\thelp\n\t  Character type checking support\n\nconfig BR2_PACKAGE_PHP_EXT_FILTER\n\tbool \"Filter\"\n\thelp\n\t  Input filter support\n\ncomment \"Web services\"\n\nconfig BR2_PACKAGE_PHP_EXT_SOAP\n\tbool \"SOAP\"\n\tselect BR2_PACKAGE_PHP_EXT_LIBXML2\n\thelp\n\t  SOAP support\n\ncomment \"XML manipulation\"\n\nconfig BR2_PACKAGE_PHP_EXT_DOM\n\tbool \"DOM\"\n\tselect BR2_PACKAGE_PHP_EXT_LIBXML2\n\thelp\n\t  Document Object Model support\n\nconfig BR2_PACKAGE_PHP_EXT_LIBXML2\n\tbool \"libxml\"\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  libxml2 support\n\nconfig BR2_PACKAGE_PHP_EXT_SIMPLEXML\n\tbool \"SimpleXML\"\n\tselect BR2_PACKAGE_PHP_EXT_LIBXML2\n\thelp\n\t  SimpleXML support\n\nconfig BR2_PACKAGE_PHP_EXT_WDDX\n\tbool \"WDDX\"\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_PHP_EXT_LIBXML2\n\thelp\n\t  WDDX support\n\nconfig BR2_PACKAGE_PHP_EXT_XML\n\tbool \"XML Parser\"\n\tselect BR2_PACKAGE_PHP_EXT_LIBXML2\n\thelp\n\t  XML Parser support\n\nconfig BR2_PACKAGE_PHP_EXT_XMLREADER\n\tbool \"XMLReader\"\n\tselect BR2_PACKAGE_PHP_EXT_LIBXML2\n\thelp\n\t  XMLReader support\n\nconfig BR2_PACKAGE_PHP_EXT_XMLWRITER\n\tbool \"XMLWriter\"\n\tselect BR2_PACKAGE_PHP_EXT_LIBXML2\n\thelp\n\t  XMLWriter support\n\nconfig BR2_PACKAGE_PHP_EXT_XSL\n\tbool \"XSL\"\n\tselect BR2_PACKAGE_PHP_EXT_DOM\n\tselect BR2_PACKAGE_PHP_EXT_LIBXML2\n\tselect BR2_PACKAGE_LIBXSLT\n\thelp\n\t  XSL transformation support\n\nconfig BR2_PACKAGE_PHP_EXT_FFI\n\tbool \"FFI\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBFFI\n\thelp\n\t  Foreign Function Interface support\n\ncomment \"PHP FFI extension needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nendmenu\n"
  },
  {
    "path": "package/php/Config.in",
    "content": "config BR2_PACKAGE_PHP\n\tbool \"php\"\n\t# PHP uses -export-dynamic, which breaks with elf2flt with a\n\t# message like \"ld.real: section .junk LMA [...,...] overlaps\n\t# section .text LMA [...,...]\"\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_PHP_SAPI_CGI if \\\n\t       !BR2_PACKAGE_PHP_SAPI_APACHE && \\\n\t       !BR2_PACKAGE_PHP_SAPI_CLI && \\\n\t       !BR2_PACKAGE_PHP_SAPI_FPM &&  \\\n\t       BR2_USE_MMU\n\tselect BR2_PACKAGE_PHP_SAPI_CLI if !BR2_USE_MMU\n\tselect BR2_PACKAGE_PCRE2\n\thelp\n\t  PHP  is a widely-used general-purpose scripting\n\t  language that is especially suited for Web development\n\t  and can be embedded into HTML.\n\n\t  http://www.php.net\n\nif BR2_PACKAGE_PHP\n\nconfig BR2_PACKAGE_PHP_SAPI_APACHE\n\tbool \"Apache interface\"\n\tdepends on BR2_PACKAGE_APACHE\n\thelp\n\t  Apache module\n\nconfig BR2_PACKAGE_PHP_SAPI_CGI\n\tbool \"CGI interface\"\n\t# CGI uses fork()\n\tdepends on BR2_USE_MMU\n\thelp\n\t  Common Gateway Interface\n\nconfig BR2_PACKAGE_PHP_SAPI_CLI\n\tbool \"CLI interface\"\n\thelp\n\t  Command Line Interface\n\nconfig BR2_PACKAGE_PHP_SAPI_FPM\n\tbool \"FPM interface\"\n\tdepends on BR2_USE_MMU\n\t# \"Sparc v8 and predecessors are not and will not be supported\"\n\tdepends on !BR2_sparc\n\thelp\n\t  PHP-FPM (FastCGI Process Manager)\n\nsource \"package/php/Config.ext\"\n\nendif\n\ncomment \"php needs a toolchain w/ wchar\"\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/php/php-fpm.conf",
    "content": "[www]\npm = ondemand\npm.process_idle_timeout = 120s\npm.max_children = 5\n\nlisten = /var/run/php-fpm.sock\nlisten.owner = www-data\nlisten.group = www-data\nuser = www-data\ngroup = www-data\n\n"
  },
  {
    "path": "package/php/php.hash",
    "content": "# From https://www.php.net/downloads.php\nsha256  cd976805ec2e9198417651027dfe16854ba2c2c388151ab9d4d268513d52ed52  php-8.0.13.tar.xz\n\n# License file\nsha256  a188db807d711536f71e27b7d36879d63480f7994dc18adc08e624b3c5430fff  LICENSE\n"
  },
  {
    "path": "package/php/php.mk",
    "content": "################################################################################\n#\n# php\n#\n################################################################################\n\nPHP_VERSION = 8.0.13\nPHP_SITE = https://www.php.net/distributions\nPHP_SOURCE = php-$(PHP_VERSION).tar.xz\nPHP_INSTALL_STAGING = YES\nPHP_INSTALL_STAGING_OPTS = INSTALL_ROOT=$(STAGING_DIR) install\nPHP_INSTALL_TARGET_OPTS = INSTALL_ROOT=$(TARGET_DIR) install\nPHP_DEPENDENCIES = host-pkgconf pcre2\nPHP_LICENSE = PHP-3.01\nPHP_LICENSE_FILES = LICENSE\nPHP_CPE_ID_VENDOR = php\nPHP_CONF_OPTS = \\\n\t--mandir=/usr/share/man \\\n\t--infodir=/usr/share/info \\\n\t--with-config-file-scan-dir=/etc/php.d \\\n\t--disable-all \\\n\t--with-external-pcre \\\n\t--without-pear \\\n\t--with-config-file-path=/etc \\\n\t--disable-phpdbg \\\n\t--disable-rpath\nPHP_CONF_ENV = \\\n\tEXTRA_LIBS=\"$(PHP_EXTRA_LIBS)\"\n\nifeq ($(BR2_STATIC_LIBS),y)\nPHP_CONF_ENV += LIBS=\"$(PHP_STATIC_LIBS)\"\nendif\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_TOOLCHAIN_HAS_THREADS),yy)\nPHP_STATIC_LIBS += -lpthread\nendif\n\nifeq ($(call qstrip,$(BR2_TARGET_LOCALTIME)),)\nPHP_LOCALTIME = UTC\nelse\n# Not q-stripping this value, as we need quotes in the php.ini file\nPHP_LOCALTIME = $(BR2_TARGET_LOCALTIME)\nendif\n\n# PHP can't be AUTORECONFed the standard way unfortunately\nPHP_DEPENDENCIES += host-autoconf host-automake host-libtool\ndefine PHP_BUILDCONF\n\tcd $(@D) ; $(TARGET_MAKE_ENV) ./buildconf --force\nendef\nPHP_PRE_CONFIGURE_HOOKS += PHP_BUILDCONF\n\nifeq ($(BR2_ENDIAN),\"BIG\")\nPHP_CONF_ENV += ac_cv_c_bigendian_php=yes\nelse\nPHP_CONF_ENV += ac_cv_c_bigendian_php=no\nendif\nPHP_CONFIG_SCRIPTS = php-config\n\nPHP_CFLAGS = $(TARGET_CFLAGS)\nPHP_CXXFLAGS = $(TARGET_CXXFLAGS)\n\n# The OPcache extension isn't cross-compile friendly\n# Throw some defines here to avoid patching heavily\nifeq ($(BR2_PACKAGE_PHP_EXT_OPCACHE),y)\nPHP_CONF_OPTS += --enable-opcache --disable-opcache-jit\nPHP_CONF_ENV += ac_cv_func_mprotect=yes\nPHP_CFLAGS += \\\n\t-DHAVE_SHM_IPC \\\n\t-DHAVE_SHM_MMAP_ANON \\\n\t-DHAVE_SHM_MMAP_ZERO \\\n\t-DHAVE_SHM_MMAP_POSIX \\\n\t-DHAVE_SHM_MMAP_FILE\nendif\n\n# We need to force dl \"detection\"\nifeq ($(BR2_STATIC_LIBS),)\nPHP_CONF_ENV += ac_cv_func_dlopen=yes ac_cv_lib_dl_dlopen=yes\nPHP_EXTRA_LIBS += -ldl\nelse\nPHP_CONF_ENV += ac_cv_func_dlopen=no ac_cv_lib_dl_dlopen=no\nendif\n\nPHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_SAPI_CLI),--enable-cli,--disable-cli)\nPHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_SAPI_CGI),--enable-cgi,--disable-cgi)\nPHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_SAPI_FPM),--enable-fpm,--disable-fpm)\n\nifeq ($(BR2_PACKAGE_PHP_SAPI_APACHE),y)\nPHP_DEPENDENCIES += apache\nPHP_CONF_OPTS += --with-apxs2=$(STAGING_DIR)/usr/bin/apxs\n\n# Enable thread safety option if Apache MPM is event or worker\nifeq ($(BR2_PACKAGE_APACHE_MPM_EVENT)$(BR2_PACKAGE_APACHE_MPM_WORKER),y)\nPHP_CONF_OPTS += --enable-zts\nendif\nendif\n\n### Extensions\nPHP_CONF_OPTS += \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_SOCKETS),--enable-sockets) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_POSIX),--enable-posix) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_SESSION),--enable-session) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_DOM),--enable-dom) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_SIMPLEXML),--enable-simplexml) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_SOAP),--enable-soap) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_XML),--enable-xml) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_XMLREADER),--enable-xmlreader) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_XMLWRITER),--enable-xmlwriter) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_EXIF),--enable-exif) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_FTP),--enable-ftp) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_TOKENIZER),--enable-tokenizer) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_PCNTL),--enable-pcntl) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_SHMOP),--enable-shmop) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_SYSVMSG),--enable-sysvmsg) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_SYSVSEM),--enable-sysvsem) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_SYSVSHM),--enable-sysvshm) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_ZIP),--with-zip) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_CTYPE),--enable-ctype) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_FILTER),--enable-filter) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_CALENDAR),--enable-calendar) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_FILEINFO),--enable-fileinfo) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_BCMATH),--enable-bcmath) \\\n\t$(if $(BR2_PACKAGE_PHP_EXT_PHAR),--enable-phar)\n\nifeq ($(BR2_PACKAGE_PHP_EXT_LIBARGON2),y)\nPHP_CONF_OPTS += --with-password-argon2=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += libargon2\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_LIBSODIUM),y)\nPHP_CONF_OPTS += --with-sodium=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += libsodium\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_MBSTRING),y)\nPHP_CONF_OPTS += --enable-mbstring\nPHP_DEPENDENCIES += oniguruma\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_OPENSSL),y)\nPHP_CONF_OPTS += --with-openssl=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += openssl\n# openssl needs zlib, but the configure script forgets to link against\n# it causing detection failures with static linking\nPHP_STATIC_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_LIBXML2),y)\nPHP_CONF_ENV += php_cv_libxml_build_works=yes\nPHP_CONF_OPTS += --with-libxml\nPHP_DEPENDENCIES += libxml2\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_WDDX),y)\nPHP_CONF_OPTS += --enable-wddx --with-libexpat-dir=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += expat\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_ZIP),y)\nPHP_DEPENDENCIES += libzip\nendif\n\nifneq ($(BR2_PACKAGE_PHP_EXT_ZLIB)$(BR2_PACKAGE_PHP_EXT_ZIP),)\nPHP_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += zlib\nelse\nPHP_CONF_OPTS += --disable-mysqlnd_compression_support\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_GETTEXT),y)\nPHP_CONF_OPTS += --with-gettext=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES)\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_ICONV),y)\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nPHP_CONF_OPTS += --with-iconv=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += libiconv\nelse\nPHP_CONF_OPTS += --with-iconv\nendif\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_INTL),y)\nPHP_CONF_OPTS += --enable-intl --with-icu-dir=$(STAGING_DIR)/usr\nPHP_CXXFLAGS += \"`$(STAGING_DIR)/usr/bin/icu-config --cxxflags`\"\nPHP_DEPENDENCIES += icu\n# The intl module is implemented in C++, but PHP fails to use\n# g++ as the compiler for the final link. As a workaround,\n# tell it to link libstdc++.\nPHP_EXTRA_LIBS += -lstdc++\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y)\nPHP_CONF_OPTS += --with-gmp=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += gmp\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_READLINE),y)\nPHP_CONF_OPTS += --with-readline=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += readline\nendif\n\n### Native SQL extensions\nifeq ($(BR2_PACKAGE_PHP_EXT_MYSQLI),y)\nPHP_CONF_OPTS += --with-mysqli\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_PGSQL),y)\nPHP_CONF_OPTS += --with-pgsql=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += postgresql\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE),y)\nPHP_CONF_OPTS += --with-sqlite3=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += sqlite\nPHP_STATIC_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs sqlite3`\nendif\n\n### PDO\nifeq ($(BR2_PACKAGE_PHP_EXT_PDO),y)\nPHP_CONF_OPTS += --enable-pdo\nifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE),y)\nPHP_CONF_OPTS += --with-pdo-sqlite=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += sqlite\nPHP_CFLAGS += -DSQLITE_OMIT_LOAD_EXTENSION\nendif\nifeq ($(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),y)\nPHP_CONF_OPTS += --with-pdo-mysql\nendif\nifeq ($(BR2_PACKAGE_PHP_EXT_PDO_POSTGRESQL),y)\nPHP_CONF_OPTS += --with-pdo-pgsql=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += postgresql\nendif\nifeq ($(BR2_PACKAGE_PHP_EXT_PDO_UNIXODBC),y)\nPHP_CONF_OPTS += --with-pdo-odbc=unixODBC,$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += unixodbc\nendif\nendif\n\nifneq ($(BR2_PACKAGE_PHP_EXT_MYSQLI)$(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),)\n# Set default MySQL unix socket to what the MySQL server is using by default\nPHP_CONF_OPTS += --with-mysql-sock=$(MYSQL_SOCKET)\nendif\n\ndefine PHP_DISABLE_VALGRIND\n\t$(SED) '/^#define HAVE_VALGRIND/d' $(@D)/main/php_config.h\nendef\nPHP_POST_CONFIGURE_HOOKS += PHP_DISABLE_VALGRIND\n\nifeq ($(BR2_PACKAGE_PCRE2_JIT),y)\nPHP_CONF_OPTS += --with-pcre-jit=yes\nPHP_CONF_ENV += ac_cv_have_pcre2_jit=yes\nelse\nPHP_CONF_OPTS += --with-pcre-jit=no\nPHP_CONF_ENV += ac_cv_have_pcre2_jit=no\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_CURL),y)\nPHP_CONF_OPTS += --with-curl\nPHP_DEPENDENCIES += libcurl\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_XSL),y)\nPHP_CONF_OPTS += --with-xsl=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += libxslt\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_BZIP2),y)\nPHP_CONF_OPTS += --with-bz2=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += bzip2\nendif\n\n### DBA\nifeq ($(BR2_PACKAGE_PHP_EXT_DBA),y)\nPHP_CONF_OPTS += --enable-dba\nifneq ($(BR2_PACKAGE_PHP_EXT_DBA_CDB),y)\nPHP_CONF_OPTS += --without-cdb\nendif\nifneq ($(BR2_PACKAGE_PHP_EXT_DBA_FLAT),y)\nPHP_CONF_OPTS += --without-flatfile\nendif\nifneq ($(BR2_PACKAGE_PHP_EXT_DBA_INI),y)\nPHP_CONF_OPTS += --without-inifile\nendif\nifeq ($(BR2_PACKAGE_PHP_EXT_DBA_DB4),y)\nPHP_CONF_OPTS += --with-db4=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += berkeleydb\nendif\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_SNMP),y)\nPHP_CONF_OPTS += --with-snmp=$(STAGING_DIR)/usr\nPHP_DEPENDENCIES += netsnmp\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_GD),y)\nPHP_CONF_OPTS += \\\n\t--enable-gd \\\n\t--with-jpeg \\\n\t--with-freetype\nPHP_DEPENDENCIES += jpeg libpng freetype zlib\nendif\n\nifeq ($(BR2_PACKAGE_PHP_EXT_FFI),y)\nPHP_CONF_OPTS += --with-ffi\nPHP_DEPENDENCIES += libffi\nendif\n\nifeq ($(BR2_PACKAGE_PHP_SAPI_FPM),y)\ndefine PHP_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 $(@D)/sapi/fpm/init.d.php-fpm \\\n\t\t$(TARGET_DIR)/etc/init.d/S49php-fpm\nendef\n\ndefine PHP_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 $(@D)/sapi/fpm/php-fpm.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/php-fpm.service\nendef\n\ndefine PHP_INSTALL_FPM_CONF\n\t$(INSTALL) -D -m 0644 package/php/php-fpm.conf \\\n\t\t$(TARGET_DIR)/etc/php-fpm.conf\n\trm -f $(TARGET_DIR)/etc/php-fpm.d/www.conf.default\n\t# remove unused sample status page /usr/php/php/fpm/status.html\n\trm -rf $(TARGET_DIR)/usr/php\nendef\n\nPHP_POST_INSTALL_TARGET_HOOKS += PHP_INSTALL_FPM_CONF\nendif\n\ndefine PHP_EXTENSIONS_FIXUP\n\t$(SED) \"/prefix/ s:/usr:$(STAGING_DIR)/usr:\" \\\n\t\t$(STAGING_DIR)/usr/bin/phpize\n\t$(SED) \"/extension_dir/ s:/usr:$(TARGET_DIR)/usr:\" \\\n\t\t$(STAGING_DIR)/usr/bin/php-config\nendef\n\nPHP_POST_INSTALL_TARGET_HOOKS += PHP_EXTENSIONS_FIXUP\n\ndefine PHP_INSTALL_FIXUP\n\trm -rf $(TARGET_DIR)/usr/lib/php/build\n\trm -f $(TARGET_DIR)/usr/bin/phpize\n\t$(INSTALL) -D -m 0755 $(PHP_DIR)/php.ini-production \\\n\t\t$(TARGET_DIR)/etc/php.ini\n\t$(SED) 's%;date.timezone =.*%date.timezone = $(PHP_LOCALTIME)%' \\\n\t\t$(TARGET_DIR)/etc/php.ini\n\t$(if $(BR2_PACKAGE_PHP_EXT_OPCACHE),\n\t\t$(SED) '/;extension=php_xsl.dll/azend_extension=opcache.so' \\\n\t\t$(TARGET_DIR)/etc/php.ini)\nendef\n\nPHP_POST_INSTALL_TARGET_HOOKS += PHP_INSTALL_FIXUP\n\nPHP_CONF_ENV += CFLAGS=\"$(PHP_CFLAGS)\" CXXFLAGS=\"$(PHP_CXXFLAGS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/php-amqp/0001-add-build-support-for-php-8.patch",
    "content": "From 96cd5cb5eddd3db2faaa3643dad2fe4677d7c438 Mon Sep 17 00:00:00 2001\nFrom: mmokhi <mokhi64@gmail.com>\nDate: Thu, 30 Jul 2020 11:25:33 +0200\nSubject: [PATCH] Add build support for PHP8.0 (#381)\n\nFrom upstream commit: 96cd5cb5eddd3db2faaa3643dad2fe4677d7c438\n\nSigned-off-by: mmokhi <mokhi64@gmail.com>\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n amqp_envelope.h |  7 +++++++\n php7_support.h  | 11 +++++++++++\n 2 files changed, 18 insertions(+)\n\ndiff --git a/amqp_envelope.h b/amqp_envelope.h\nindex e63a3a5..e315682 100644\n--- a/amqp_envelope.h\n+++ b/amqp_envelope.h\n@@ -20,6 +20,13 @@\n   | - Jonathan Tansavatdi                                                |\n   +----------------------------------------------------------------------+\n */\n+\n+#if PHP_MAJOR_VERSION >= 7\n+        #include \"php7_support.h\"\n+#else\n+        #include \"php5_support.h\"\n+#endif\n+\n extern zend_class_entry *amqp_envelope_class_entry;\n \n void convert_amqp_envelope_to_zval(amqp_envelope_t *amqp_envelope, zval *envelope TSRMLS_DC);\ndiff --git a/php7_support.h b/php7_support.h\nindex 47ce983..c9e8f5b 100644\n--- a/php7_support.h\n+++ b/php7_support.h\n@@ -101,6 +101,17 @@ typedef zval PHP5to7_zend_resource_le_t;\n \n #define PHP5to7_ZEND_ACC_FINAL_CLASS ZEND_ACC_FINAL\n \n+/* Small change to let it build after a major internal change for php8.0\n+ * More info:\n+ * https://github.com/php/php-src/blob/php-8.0.0alpha3/UPGRADING.INTERNALS#L47\n+ */\n+#if PHP_MAJOR_VERSION >= 8\n+# define TSRMLS_DC\n+# define TSRMLS_D\n+# define TSRMLS_CC\n+# define TSRMLS_C\n+# endif\n+\n #endif //PHP_AMQP_PHP7_SUPPORT_H\n \n /*\n"
  },
  {
    "path": "package/php-amqp/0002-more-work-for-php-8.patch",
    "content": "From df1241852b359cf12c346beaa68de202257efdf1 Mon Sep 17 00:00:00 2001\nFrom: Remi Collet <remi@remirepo.net>\nDate: Wed, 9 Dec 2020 17:00:46 +0100\nSubject: [PATCH] more work for PHP 8 (#383)\n\n* more work for PHP 8\n\n* split test\n\nSigned-off-by: Remi Collet <remi@remirepo.net>\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n amqp_basic_properties.c       |  84 +++++++++++++--------------\n amqp_channel.c                |  49 +++++++++-------\n amqp_connection.c             | 106 +++++++++++++++++-----------------\n amqp_connection_resource.c    |  12 ++--\n amqp_decimal.c                |   8 +--\n amqp_envelope.c               |  12 ++--\n amqp_exchange.c               |  22 +++----\n amqp_queue.c                  |  38 ++++++------\n amqp_timestamp.c              |   6 +-\n amqp_type.c                   |   6 +-\n php5_support.h                |   2 +\n php7_support.h                |   9 +++\n php_amqp.h                    |   8 +--\n tests/amqptimestamp.phpt      |   4 +-\n tests/amqptimestamp_php8.phpt |  60 +++++++++++++++++++\n tests/bug_61533.phpt          |   2 +-\n 16 files changed, 254 insertions(+), 174 deletions(-)\n create mode 100644 tests/amqptimestamp_php8.phpt\n\ndiff --git a/amqp_basic_properties.c b/amqp_basic_properties.c\nindex 69b813e..5375f44 100644\n--- a/amqp_basic_properties.c\n+++ b/amqp_basic_properties.c\n@@ -70,7 +70,7 @@ void php_amqp_basic_properties_set_empty_headers(zval *obj TSRMLS_DC) {\n     PHP5to7_MAYBE_INIT(headers);\n     PHP5to7_ARRAY_INIT(headers);\n \n-    zend_update_property(this_ce, obj, ZEND_STRL(\"headers\"), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);\n+    zend_update_property(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"headers\"), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);\n \n     PHP5to7_MAYBE_DESTROY(headers);\n }\n@@ -118,29 +118,29 @@ static PHP_METHOD(AMQPBasicProperties, __construct) {\n                              ) == FAILURE) {\n         return;\n     }\n-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"content_type\"), content_type, content_type_len TSRMLS_CC);\n-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"content_encoding\"), content_encoding, content_encoding_len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"content_type\"), content_type, content_type_len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"content_encoding\"), content_encoding, content_encoding_len TSRMLS_CC);\n \n     if (headers != NULL) {\n-        zend_update_property(this_ce, getThis(), ZEND_STRL(\"headers\"), headers TSRMLS_CC);\n+        zend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"headers\"), headers TSRMLS_CC);\n     } else {\n         php_amqp_basic_properties_set_empty_headers(getThis() TSRMLS_CC);\n     }\n \n-    zend_update_property_long(this_ce, getThis(), ZEND_STRL(\"delivery_mode\"), delivery_mode TSRMLS_CC);\n-    zend_update_property_long(this_ce, getThis(), ZEND_STRL(\"priority\"), priority TSRMLS_CC);\n+    zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"delivery_mode\"), delivery_mode TSRMLS_CC);\n+    zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"priority\"), priority TSRMLS_CC);\n \n-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"correlation_id\"), correlation_id, correlation_id_len TSRMLS_CC);\n-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"reply_to\"), reply_to, reply_to_len TSRMLS_CC);\n-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"expiration\"), expiration, expiration_len TSRMLS_CC);\n-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"message_id\"), message_id, message_id_len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"correlation_id\"), correlation_id, correlation_id_len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"reply_to\"), reply_to, reply_to_len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"expiration\"), expiration, expiration_len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"message_id\"), message_id, message_id_len TSRMLS_CC);\n \n-    zend_update_property_long(this_ce, getThis(), ZEND_STRL(\"timestamp\"), timestamp TSRMLS_CC);\n+    zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"timestamp\"), timestamp TSRMLS_CC);\n \n-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"type\"), type, type_len TSRMLS_CC);\n-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"user_id\"), user_id, user_id_len TSRMLS_CC);\n-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"app_id\"), app_id, app_id_len TSRMLS_CC);\n-    zend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"cluster_id\"), cluster_id, cluster_id_len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"type\"), type, type_len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"user_id\"), user_id, user_id_len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"app_id\"), app_id, app_id_len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"cluster_id\"), cluster_id, cluster_id_len TSRMLS_CC);\n }\n /* }}} */\n \n@@ -460,7 +460,7 @@ void parse_amqp_table(amqp_table_t *table, zval *result TSRMLS_DC) {\n \t\t\t\tobject_init_ex(PHP5to7_MAYBE_PTR(value), amqp_timestamp_class_entry);\n \n \t\t\t\tzend_call_method_with_1_params(\n-\t\t\t\t\t\t&value,\n+\t\t\t\t\t\tPHP5to8_OBJ_PROP(&value),\n \t\t\t\t\t\tamqp_timestamp_class_entry,\n \t\t\t\t\t\tNULL,\n \t\t\t\t\t\t\"__construct\",\n@@ -488,7 +488,7 @@ void parse_amqp_table(amqp_table_t *table, zval *result TSRMLS_DC) {\n                 object_init_ex(PHP5to7_MAYBE_PTR(value), amqp_decimal_class_entry);\n \n                 zend_call_method_with_2_params(\n-                        &value,\n+                        PHP5to8_OBJ_PROP(&value),\n                         amqp_decimal_class_entry,\n                         NULL,\n                         \"__construct\",\n@@ -525,93 +525,93 @@ void php_amqp_basic_properties_extract(amqp_basic_properties_t *p, zval *obj TSR\n     PHP5to7_ARRAY_INIT(headers);\n \n     if (p->_flags & AMQP_BASIC_CONTENT_TYPE_FLAG) {\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"content_type\"), (const char *) p->content_type.bytes, (PHP5to7_param_str_len_type_t) p->content_type.len TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"content_type\"), (const char *) p->content_type.bytes, (PHP5to7_param_str_len_type_t) p->content_type.len TSRMLS_CC);\n     } else {\n         /* BC */\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"content_type\"), \"\", 0 TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"content_type\"), \"\", 0 TSRMLS_CC);\n     }\n \n     if (p->_flags & AMQP_BASIC_CONTENT_ENCODING_FLAG) {\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"content_encoding\"), (const char *) p->content_encoding.bytes, (PHP5to7_param_str_len_type_t) p->content_encoding.len TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"content_encoding\"), (const char *) p->content_encoding.bytes, (PHP5to7_param_str_len_type_t) p->content_encoding.len TSRMLS_CC);\n     } else {\n         /* BC */\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"content_encoding\"), \"\", 0 TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"content_encoding\"), \"\", 0 TSRMLS_CC);\n     }\n \n     if (p->_flags & AMQP_BASIC_HEADERS_FLAG) {\n         parse_amqp_table(&(p->headers), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);\n     }\n \n-    zend_update_property(this_ce, obj, ZEND_STRL(\"headers\"), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);\n+    zend_update_property(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"headers\"), PHP5to7_MAYBE_PTR(headers) TSRMLS_CC);\n \n     if (p->_flags & AMQP_BASIC_DELIVERY_MODE_FLAG) {\n-        zend_update_property_long(this_ce, obj, ZEND_STRL(\"delivery_mode\"), (PHP5to7_param_long_type_t) p->delivery_mode TSRMLS_CC);\n+        zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"delivery_mode\"), (PHP5to7_param_long_type_t) p->delivery_mode TSRMLS_CC);\n     } else {\n         /* BC */\n-        zend_update_property_long(this_ce, obj, ZEND_STRL(\"delivery_mode\"), AMQP_DELIVERY_NONPERSISTENT TSRMLS_CC);\n+        zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"delivery_mode\"), AMQP_DELIVERY_NONPERSISTENT TSRMLS_CC);\n     }\n \n     if (p->_flags & AMQP_BASIC_PRIORITY_FLAG) {\n-        zend_update_property_long(this_ce, obj, ZEND_STRL(\"priority\"), (PHP5to7_param_long_type_t) p->priority TSRMLS_CC);\n+        zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"priority\"), (PHP5to7_param_long_type_t) p->priority TSRMLS_CC);\n     } else {\n         /* BC */\n-        zend_update_property_long(this_ce, obj, ZEND_STRL(\"priority\"), 0 TSRMLS_CC);\n+        zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"priority\"), 0 TSRMLS_CC);\n     }\n \n     if (p->_flags & AMQP_BASIC_CORRELATION_ID_FLAG) {\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"correlation_id\"), (const char *) p->correlation_id.bytes, (PHP5to7_param_str_len_type_t) p->correlation_id.len TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"correlation_id\"), (const char *) p->correlation_id.bytes, (PHP5to7_param_str_len_type_t) p->correlation_id.len TSRMLS_CC);\n     } else {\n         /* BC */\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"correlation_id\"), \"\", 0 TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"correlation_id\"), \"\", 0 TSRMLS_CC);\n     }\n \n     if (p->_flags & AMQP_BASIC_REPLY_TO_FLAG) {\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"reply_to\"), (const char *) p->reply_to.bytes, (PHP5to7_param_str_len_type_t) p->reply_to.len TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"reply_to\"), (const char *) p->reply_to.bytes, (PHP5to7_param_str_len_type_t) p->reply_to.len TSRMLS_CC);\n     } else {\n         /* BC */\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"reply_to\"), \"\", 0 TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"reply_to\"), \"\", 0 TSRMLS_CC);\n     }\n \n     if (p->_flags & AMQP_BASIC_EXPIRATION_FLAG) {\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"expiration\"), (const char *) p->expiration.bytes, (PHP5to7_param_str_len_type_t) p->expiration.len TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"expiration\"), (const char *) p->expiration.bytes, (PHP5to7_param_str_len_type_t) p->expiration.len TSRMLS_CC);\n     } else {\n         /* BC */\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"expiration\"), \"\", 0 TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"expiration\"), \"\", 0 TSRMLS_CC);\n     }\n \n     if (p->_flags & AMQP_BASIC_MESSAGE_ID_FLAG) {\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"message_id\"), (const char *) p->message_id.bytes, (PHP5to7_param_str_len_type_t) p->message_id.len TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"message_id\"), (const char *) p->message_id.bytes, (PHP5to7_param_str_len_type_t) p->message_id.len TSRMLS_CC);\n     } else {\n         /* BC */\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"message_id\"), \"\", 0 TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"message_id\"), \"\", 0 TSRMLS_CC);\n     }\n \n     if (p->_flags & AMQP_BASIC_TIMESTAMP_FLAG) {\n-        zend_update_property_long(this_ce, obj, ZEND_STRL(\"timestamp\"), (PHP5to7_param_long_type_t) p->timestamp TSRMLS_CC);\n+        zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"timestamp\"), (PHP5to7_param_long_type_t) p->timestamp TSRMLS_CC);\n     } else {\n         /* BC */\n-        zend_update_property_long(this_ce, obj, ZEND_STRL(\"timestamp\"), 0 TSRMLS_CC);\n+        zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"timestamp\"), 0 TSRMLS_CC);\n     }\n \n     if (p->_flags & AMQP_BASIC_TYPE_FLAG) {\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"type\"), (const char *) p->type.bytes, (PHP5to7_param_str_len_type_t) p->type.len TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"type\"), (const char *) p->type.bytes, (PHP5to7_param_str_len_type_t) p->type.len TSRMLS_CC);\n     } else {\n         /* BC */\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"type\"), \"\", 0 TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"type\"), \"\", 0 TSRMLS_CC);\n     }\n \n     if (p->_flags & AMQP_BASIC_USER_ID_FLAG) {\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"user_id\"), (const char *) p->user_id.bytes, (PHP5to7_param_str_len_type_t) p->user_id.len TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"user_id\"), (const char *) p->user_id.bytes, (PHP5to7_param_str_len_type_t) p->user_id.len TSRMLS_CC);\n     } else {\n         /* BC */\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"user_id\"), \"\", 0 TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"user_id\"), \"\", 0 TSRMLS_CC);\n     }\n \n     if (p->_flags & AMQP_BASIC_APP_ID_FLAG) {\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"app_id\"), (const char *) p->app_id.bytes, (PHP5to7_param_str_len_type_t) p->app_id.len TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"app_id\"), (const char *) p->app_id.bytes, (PHP5to7_param_str_len_type_t) p->app_id.len TSRMLS_CC);\n     } else {\n         /* BC */\n-        zend_update_property_stringl(this_ce, obj, ZEND_STRL(\"app_id\"), \"\", 0 TSRMLS_CC);\n+        zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(obj), ZEND_STRL(\"app_id\"), \"\", 0 TSRMLS_CC);\n     }\n \n     PHP5to7_MAYBE_DESTROY(headers);\ndiff --git a/amqp_channel.c b/amqp_channel.c\nindex ef9552a..493c6d3 100644\n--- a/amqp_channel.c\n+++ b/amqp_channel.c\n@@ -152,10 +152,15 @@ static zval * php_amqp_get_fci_gc_data(zend_fcall_info *fci, zval *gc_data) {\n \treturn gc_data;\n }\n \n+#if PHP_MAJOR_VERSION < 8\n static HashTable *amqp_channel_gc(zval *object, zval **table, int *n) /* {{{ */\n {\n-\tamqp_channel_object *channel = PHP_AMQP_GET_CHANNEL(object);\n-\n+    amqp_channel_object *channel = PHP_AMQP_GET_CHANNEL(object);\n+#else\n+static HashTable *amqp_channel_gc(zend_object *object, zval **table, int *n) /* {{{ */\n+{\n+\tamqp_channel_object *channel = php_amqp_channel_object_fetch(object);\n+#endif\n \tint basic_return_cnt = php_amqp_get_fci_gc_data_count(&channel->callbacks.basic_return.fci);\n \tint basic_ack_cnt    = php_amqp_get_fci_gc_data_count(&channel->callbacks.basic_ack.fci);\n \tint basic_nack_cnt   = php_amqp_get_fci_gc_data_count(&channel->callbacks.basic_nack.fci);\n@@ -249,7 +254,7 @@ static HashTable *amqp_channel_gc(zval *object, zval ***table, int *n TSRMLS_DC)\n \t*table = channel->gc_data;\n \t*n     = cnt;\n \n-\treturn zend_std_get_properties(object TSRMLS_CC);\n+\treturn zend_std_get_properties(PHP5to8_OBJ_PROP(object) TSRMLS_CC);\n } /* }}} */\n \n #endif\n@@ -331,7 +336,7 @@ static PHP_METHOD(amqp_channel_class, __construct)\n \tamqp_connection_object *connection;\n \n \t/* Parse out the method parameters */\n-\tif (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, \"o\", &connection_object) == FAILURE) {\n+\tif (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, \"O\", &connection_object, amqp_connection_class_entry) == FAILURE) {\n \t\tzend_throw_exception(amqp_channel_exception_class_entry, \"Parameter must be an instance of AMQPConnection.\", 0 TSRMLS_CC);\n \t\tRETURN_NULL();\n \t}\n@@ -341,7 +346,7 @@ static PHP_METHOD(amqp_channel_class, __construct)\n \tPHP5to7_MAYBE_INIT(consumers);\n \tPHP5to7_ARRAY_INIT(consumers);\n \n-\tzend_update_property(this_ce, getThis(), ZEND_STRL(\"consumers\"), PHP5to7_MAYBE_PTR(consumers) TSRMLS_CC);\n+\tzend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"consumers\"), PHP5to7_MAYBE_PTR(consumers) TSRMLS_CC);\n \n \tPHP5to7_MAYBE_DESTROY(consumers);\n \n@@ -351,16 +356,16 @@ static PHP_METHOD(amqp_channel_class, __construct)\n #endif\n \n \t/* Set the prefetch count */\n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"prefetch_count\"), INI_INT(\"amqp.prefetch_count\") TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"prefetch_count\"), INI_INT(\"amqp.prefetch_count\") TSRMLS_CC);\n \n \t/* Set the prefetch size */\n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"prefetch_size\"), INI_INT(\"amqp.prefetch_size\") TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"prefetch_size\"), INI_INT(\"amqp.prefetch_size\") TSRMLS_CC);\n \n \t/* Set the global prefetch count */\n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"global_prefetch_count\"), INI_INT(\"amqp.global_prefetch_count\") TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"global_prefetch_count\"), INI_INT(\"amqp.global_prefetch_count\") TSRMLS_CC);\n \n \t/* Set the global prefetch size */\n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"global_prefetch_size\"), INI_INT(\"amqp.global_prefetch_size\") TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"global_prefetch_size\"), INI_INT(\"amqp.global_prefetch_size\") TSRMLS_CC);\n \n \t/* Pull out and verify the connection */\n \tconnection = PHP_AMQP_GET_CONNECTION(connection_object);\n@@ -376,7 +381,7 @@ static PHP_METHOD(amqp_channel_class, __construct)\n \t\treturn;\n \t}\n \n-\tzend_update_property(this_ce, getThis(), ZEND_STRL(\"connection\"), connection_object TSRMLS_CC);\n+\tzend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"connection\"), connection_object TSRMLS_CC);\n \n \tchannel_resource = (amqp_channel_resource*)ecalloc(1, sizeof(amqp_channel_resource));\n \tchannel->channel_resource = channel_resource;\n@@ -580,8 +585,8 @@ static PHP_METHOD(amqp_channel_class, setPrefetchCount)\n \t}\n \n \t/* Set the prefetch count - the implication is to disable the size */\n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"prefetch_count\"), prefetch_count TSRMLS_CC);\n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"prefetch_size\"), 0 TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"prefetch_count\"), prefetch_count TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"prefetch_size\"), 0 TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -659,8 +664,8 @@ static PHP_METHOD(amqp_channel_class, setPrefetchSize)\n \t}\n \n \t/* Set the prefetch size - the implication is to disable the count */\n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"prefetch_count\"), 0 TSRMLS_CC);\n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"prefetch_size\"), prefetch_size TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"prefetch_count\"), 0 TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"prefetch_size\"), prefetch_size TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -715,8 +720,8 @@ static PHP_METHOD(amqp_channel_class, setGlobalPrefetchCount)\n \t}\n \n \t/* Set the global prefetch count - the implication is to disable the size */\n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"global_prefetch_count\"), global_prefetch_count TSRMLS_CC);\n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"global_prefetch_size\"), 0 TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"global_prefetch_count\"), global_prefetch_count TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"global_prefetch_size\"), 0 TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -771,8 +776,8 @@ static PHP_METHOD(amqp_channel_class, setGlobalPrefetchSize)\n \t}\n \n \t/* Set the global prefetch size - the implication is to disable the count */\n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"global_prefetch_count\"), 0 TSRMLS_CC);\n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"global_prefetch_size\"), global_prefetch_size TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"global_prefetch_count\"), 0 TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"global_prefetch_size\"), global_prefetch_size TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -808,11 +813,11 @@ static PHP_METHOD(amqp_channel_class, qos)\n \n \t/* Set the prefetch size and prefetch count */\n \tif (global) {\n-\t\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"global_prefetch_size\"), prefetch_size TSRMLS_CC);\n-\t\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"global_prefetch_count\"), prefetch_count TSRMLS_CC);\n+\t\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"global_prefetch_size\"), prefetch_size TSRMLS_CC);\n+\t\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"global_prefetch_count\"), prefetch_count TSRMLS_CC);\n \t} else {\n-\t\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"prefetch_size\"), prefetch_size TSRMLS_CC);\n-\t\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"prefetch_count\"), prefetch_count TSRMLS_CC);\n+\t\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"prefetch_size\"), prefetch_size TSRMLS_CC);\n+\t\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"prefetch_count\"), prefetch_count TSRMLS_CC);\n \t}\n \n \t/* If we are already connected, set the new prefetch count */\ndiff --git a/amqp_connection.c b/amqp_connection.c\nindex 5891a4f..466501a 100644\n--- a/amqp_connection.c\n+++ b/amqp_connection.c\n@@ -68,9 +68,9 @@ zend_object_handlers amqp_connection_object_handlers;\n \t\tconvert_to_string(PHP5to7_MAYBE_DEREF(zdata)); \\\n \t} \\\n \tif (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) { \\\n-\t\tzend_update_property_string(this_ce, getThis(), ZEND_STRL(name), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC); \\\n+\t\tzend_update_property_string(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC); \\\n \t} else { \\\n-\t\tzend_update_property_string(this_ce, getThis(), ZEND_STRL(name), INI_STR(\"amqp.\" name) TSRMLS_CC); \\\n+\t\tzend_update_property_string(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), INI_STR(\"amqp.\" name) TSRMLS_CC); \\\n \t}\n \n #define PHP_AMQP_EXTRACT_CONNECTION_BOOL(name) \\\n@@ -80,9 +80,9 @@ zend_object_handlers amqp_connection_object_handlers;\n \t\tconvert_to_long(PHP5to7_MAYBE_DEREF(zdata)); \\\n \t} \\\n \tif (zdata) { \\\n-\t\tzend_update_property_bool(this_ce, getThis(), ZEND_STRL(name), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC); \\\n+\t\tzend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC); \\\n \t} else { \\\n-\t\tzend_update_property_bool(this_ce, getThis(), ZEND_STRL(name), INI_INT(\"amqp.\" name) TSRMLS_CC); \\\n+\t\tzend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), INI_INT(\"amqp.\" name) TSRMLS_CC); \\\n \t}\n \n static int php_amqp_connection_resource_deleter(PHP5to7_zend_resource_le_t *el, amqp_connection_resource *connection_resource TSRMLS_DC)\n@@ -344,13 +344,13 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t/* Validate the given login */\n \tif (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {\n \t\tif (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {\n-\t\t\tzend_update_property(this_ce, getThis(), ZEND_STRL(\"login\"), PHP5to7_MAYBE_DEREF(zdata)TSRMLS_CC);\n+\t\t\tzend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"login\"), PHP5to7_MAYBE_DEREF(zdata)TSRMLS_CC);\n \t\t} else {\n \t\t\tzend_throw_exception(amqp_connection_exception_class_entry, \"Parameter 'login' exceeds 128 character limit.\", 0 TSRMLS_CC);\n \t\t\treturn;\n \t\t}\n \t} else {\n-\t\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"login\"), INI_STR(\"amqp.login\"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR(\"amqp.login\")) > 128 ? 128 : strlen(INI_STR(\"amqp.login\"))) TSRMLS_CC);\n+\t\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"login\"), INI_STR(\"amqp.login\"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR(\"amqp.login\")) > 128 ? 128 : strlen(INI_STR(\"amqp.login\"))) TSRMLS_CC);\n \t}\n \n \t/* Pull the password out of the $params array */\n@@ -362,13 +362,13 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t/* Validate the given password */\n \tif (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {\n \t\tif (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {\n-\t\t\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"password\"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\t\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"password\"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t\t} else {\n \t\t\tzend_throw_exception(amqp_connection_exception_class_entry, \"Parameter 'password' exceeds 128 character limit.\", 0 TSRMLS_CC);\n \t\t\treturn;\n \t\t}\n \t} else {\n-\t\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"password\"), INI_STR(\"amqp.password\"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR(\"amqp.password\")) > 128 ? 128 : strlen(INI_STR(\"amqp.password\"))) TSRMLS_CC);\n+\t\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"password\"), INI_STR(\"amqp.password\"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR(\"amqp.password\")) > 128 ? 128 : strlen(INI_STR(\"amqp.password\"))) TSRMLS_CC);\n \t}\n \n \t/* Pull the host out of the $params array */\n@@ -380,13 +380,13 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t/* Validate the given host */\n \tif (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {\n \t\tif (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {\n-\t\t\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"host\"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\t\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"host\"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t\t} else {\n \t\t\tzend_throw_exception(amqp_connection_exception_class_entry, \"Parameter 'host' exceeds 128 character limit.\", 0 TSRMLS_CC);\n \t\t\treturn;\n \t\t}\n \t} else {\n-\t\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"host\"), INI_STR(\"amqp.host\"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR(\"amqp.host\")) > 128 ? 128 : strlen(INI_STR(\"amqp.host\"))) TSRMLS_CC);\n+\t\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"host\"), INI_STR(\"amqp.host\"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR(\"amqp.host\")) > 128 ? 128 : strlen(INI_STR(\"amqp.host\"))) TSRMLS_CC);\n \t}\n \n \t/* Pull the vhost out of the $params array */\n@@ -398,25 +398,25 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t/* Validate the given vhost */\n \tif (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {\n \t\tif (Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) < 128) {\n-\t\t\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"vhost\"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\t\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"vhost\"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)), Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t\t} else {\n \t\t\tzend_throw_exception(amqp_connection_exception_class_entry, \"Parameter 'vhost' exceeds 128 character limit.\", 0 TSRMLS_CC);\n \t\t\treturn;\n \t\t}\n \t} else {\n-\t\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"vhost\"), INI_STR(\"amqp.vhost\"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR(\"amqp.vhost\")) > 128 ? 128 : strlen(INI_STR(\"amqp.vhost\"))) TSRMLS_CC);\n+\t\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"vhost\"), INI_STR(\"amqp.vhost\"), (PHP5to7_param_str_len_type_t) (strlen(INI_STR(\"amqp.vhost\")) > 128 ? 128 : strlen(INI_STR(\"amqp.vhost\"))) TSRMLS_CC);\n \n \t}\n \n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"port\"), INI_INT(\"amqp.port\") TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"port\"), INI_INT(\"amqp.port\") TSRMLS_CC);\n \n \tif (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), \"port\", sizeof(\"port\"), zdata)) {\n \t\tSEPARATE_ZVAL(zdata);\n \t\tconvert_to_long(PHP5to7_MAYBE_DEREF(zdata));\n-\t\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"port\"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"port\"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t}\n \n-\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"read_timeout\"), INI_FLT(\"amqp.read_timeout\") TSRMLS_CC);\n+\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"read_timeout\"), INI_FLT(\"amqp.read_timeout\") TSRMLS_CC);\n \n \tif (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), \"read_timeout\", sizeof(\"read_timeout\"), zdata)) {\n \t\tSEPARATE_ZVAL(zdata);\n@@ -424,7 +424,7 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t\tif (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {\n \t\t\tzend_throw_exception(amqp_connection_exception_class_entry, \"Parameter 'read_timeout' must be greater than or equal to zero.\", 0 TSRMLS_CC);\n \t\t} else {\n-\t\t\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"read_timeout\"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\t\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"read_timeout\"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t\t}\n \n \t\tif (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), \"timeout\", sizeof(\"timeout\"), zdata)) {\n@@ -441,7 +441,7 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t\tif (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {\n \t\t\tzend_throw_exception(amqp_connection_exception_class_entry, \"Parameter 'timeout' must be greater than or equal to zero.\", 0 TSRMLS_CC);\n \t\t} else {\n-\t\t\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"read_timeout\"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\t\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"read_timeout\"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t\t}\n \t} else {\n \n@@ -450,17 +450,17 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t\t\tphp_error_docref(NULL TSRMLS_CC, E_DEPRECATED, \"INI setting 'amqp.timeout' is deprecated; use 'amqp.read_timeout' instead\");\n \n \t\t\tif (strcmp(DEFAULT_READ_TIMEOUT, INI_STR(\"amqp.read_timeout\")) == 0) {\n-\t\t\t\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"read_timeout\"), INI_FLT(\"amqp.timeout\") TSRMLS_CC);\n+\t\t\t\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"read_timeout\"), INI_FLT(\"amqp.timeout\") TSRMLS_CC);\n \t\t\t} else {\n \t\t\t\tphp_error_docref(NULL TSRMLS_CC, E_NOTICE, \"INI setting 'amqp.read_timeout' will be used instead of 'amqp.timeout'\");\n-\t\t\t\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"read_timeout\"), INI_FLT(\"amqp.read_timeout\") TSRMLS_CC);\n+\t\t\t\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"read_timeout\"), INI_FLT(\"amqp.read_timeout\") TSRMLS_CC);\n \t\t\t}\n \t\t} else {\n-\t\t\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"read_timeout\"), INI_FLT(\"amqp.read_timeout\") TSRMLS_CC);\n+\t\t\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"read_timeout\"), INI_FLT(\"amqp.read_timeout\") TSRMLS_CC);\n \t\t}\n \t}\n \n-\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"write_timeout\"), INI_FLT(\"amqp.write_timeout\") TSRMLS_CC);\n+\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"write_timeout\"), INI_FLT(\"amqp.write_timeout\") TSRMLS_CC);\n \n \tif (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), \"write_timeout\", sizeof(\"write_timeout\"), zdata)) {\n \t\tSEPARATE_ZVAL(zdata);\n@@ -468,11 +468,11 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t\tif (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {\n \t\t\tzend_throw_exception(amqp_connection_exception_class_entry, \"Parameter 'write_timeout' must be greater than or equal to zero.\", 0 TSRMLS_CC);\n \t\t} else {\n-\t\t\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"write_timeout\"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\t\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"write_timeout\"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t\t}\n \t}\n \n-\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"rpc_timeout\"), INI_FLT(\"amqp.rpc_timeout\") TSRMLS_CC);\n+\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"rpc_timeout\"), INI_FLT(\"amqp.rpc_timeout\") TSRMLS_CC);\n \n \tif (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), \"rpc_timeout\", sizeof(\"rpc_timeout\"), zdata)) {\n \t\tSEPARATE_ZVAL(zdata);\n@@ -480,11 +480,11 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t\tif (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {\n \t\t\tzend_throw_exception(amqp_connection_exception_class_entry, \"Parameter 'rpc_timeout' must be greater than or equal to zero.\", 0 TSRMLS_CC);\n \t\t} else {\n-\t\t\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"rpc_timeout\"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\t\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"rpc_timeout\"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t\t}\n \t}\n \n-\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"connect_timeout\"), INI_FLT(\"amqp.connect_timeout\") TSRMLS_CC);\n+\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"connect_timeout\"), INI_FLT(\"amqp.connect_timeout\") TSRMLS_CC);\n \n \tif (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), \"connect_timeout\", sizeof(\"connect_timeout\"), zdata)) {\n \t\tSEPARATE_ZVAL(zdata);\n@@ -492,12 +492,12 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t\tif (Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0) {\n \t\t\tzend_throw_exception(amqp_connection_exception_class_entry, \"Parameter 'connect_timeout' must be greater than or equal to zero.\", 0 TSRMLS_CC);\n \t\t} else {\n-\t\t\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"connect_timeout\"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\t\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"connect_timeout\"), Z_DVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \n \t\t}\n \t}\n \n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"channel_max\"), INI_INT(\"amqp.channel_max\") TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"channel_max\"), INI_INT(\"amqp.channel_max\") TSRMLS_CC);\n \n \tif (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), \"channel_max\", sizeof(\"channel_max\"), zdata)) {\n \t\tSEPARATE_ZVAL(zdata);\n@@ -506,14 +506,14 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t\t\tzend_throw_exception(amqp_connection_exception_class_entry, \"Parameter 'channel_max' is out of range.\", 0 TSRMLS_CC);\n \t\t} else {\n \t\t\tif(Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) == 0) {\n-\t\t\t\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"channel_max\"), PHP_AMQP_DEFAULT_CHANNEL_MAX TSRMLS_CC);\n+\t\t\t\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"channel_max\"), PHP_AMQP_DEFAULT_CHANNEL_MAX TSRMLS_CC);\n \t\t\t} else {\n-\t\t\t\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"channel_max\"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\t\t\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"channel_max\"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t\t\t}\n \t\t}\n \t}\n \n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"frame_max\"), INI_INT(\"amqp.frame_max\") TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"frame_max\"), INI_INT(\"amqp.frame_max\") TSRMLS_CC);\n \n \tif (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), \"frame_max\", sizeof(\"frame_max\"), zdata)) {\n \t\tSEPARATE_ZVAL(zdata);\n@@ -522,14 +522,14 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t\t\tzend_throw_exception(amqp_connection_exception_class_entry, \"Parameter 'frame_max' is out of range.\", 0 TSRMLS_CC);\n \t\t} else {\n \t\t\tif(Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) == 0) {\n-\t\t\t\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"frame_max\"), PHP_AMQP_DEFAULT_FRAME_MAX TSRMLS_CC);\n+\t\t\t\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"frame_max\"), PHP_AMQP_DEFAULT_FRAME_MAX TSRMLS_CC);\n \t\t\t} else {\n-\t\t\t\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"frame_max\"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\t\t\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"frame_max\"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t\t\t}\n \t\t}\n \t}\n \n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"heartbeat\"), INI_INT(\"amqp.heartbeat\") TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"heartbeat\"), INI_INT(\"amqp.heartbeat\") TSRMLS_CC);\n \n \tif (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), \"heartbeat\", sizeof(\"heartbeat\"), zdata)) {\n \t\tSEPARATE_ZVAL(zdata);\n@@ -537,16 +537,16 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t\tif (Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) < 0 || Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) > PHP_AMQP_MAX_HEARTBEAT) {\n \t\t\tzend_throw_exception(amqp_connection_exception_class_entry, \"Parameter 'heartbeat' is out of range.\", 0 TSRMLS_CC);\n \t\t} else {\n-\t\t\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"heartbeat\"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\t\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"heartbeat\"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t\t}\n \t}\n \n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"sasl_method\"), INI_INT(\"amqp.sasl_method\") TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"sasl_method\"), INI_INT(\"amqp.sasl_method\") TSRMLS_CC);\n \n \tif (ini_arr && PHP5to7_ZEND_HASH_FIND(HASH_OF(ini_arr), \"sasl_method\", sizeof(\"sasl_method\"), zdata)) {\n \t\tSEPARATE_ZVAL(zdata);\n \t\tconvert_to_long(PHP5to7_MAYBE_DEREF(zdata));\n-\t\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"sasl_method\"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"sasl_method\"), Z_LVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t}\n \n \n@@ -563,7 +563,7 @@ static PHP_METHOD(amqp_connection_class, __construct)\n \t\tconvert_to_string(PHP5to7_MAYBE_DEREF(zdata));\n \t}\n \tif (zdata && Z_STRLEN_P(PHP5to7_MAYBE_DEREF(zdata)) > 0) {\n-\t\tzend_update_property_string(this_ce, getThis(), ZEND_STRL(\"connection_name\"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n+\t\tzend_update_property_string(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"connection_name\"), Z_STRVAL_P(PHP5to7_MAYBE_DEREF(zdata)) TSRMLS_CC);\n \t}\n }\n /* }}} */\n@@ -789,7 +789,7 @@ static PHP_METHOD(amqp_connection_class, setLogin)\n \t\treturn;\n \t}\n \n-\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"login\"), login, login_len TSRMLS_CC);\n+\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"login\"), login, login_len TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -823,7 +823,7 @@ static PHP_METHOD(amqp_connection_class, setPassword)\n \t\treturn;\n \t}\n \n-\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"password\"), password, password_len TSRMLS_CC);\n+\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"password\"), password, password_len TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -858,7 +858,7 @@ static PHP_METHOD(amqp_connection_class, setHost)\n \t\treturn;\n \t}\n \n-\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"host\"), host, host_len TSRMLS_CC);\n+\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"host\"), host, host_len TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -910,7 +910,7 @@ static PHP_METHOD(amqp_connection_class, setPort)\n \t\treturn;\n \t}\n \n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"port\"), port TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"port\"), port TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -943,7 +943,7 @@ static PHP_METHOD(amqp_connection_class, setVhost)\n \t\treturn;\n \t}\n \n-\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"vhost\"), vhost, vhost_len TSRMLS_CC);\n+\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"vhost\"), vhost, vhost_len TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -986,7 +986,7 @@ static PHP_METHOD(amqp_connection_class, setTimeout)\n \t/* Get the connection object out of the store */\n \tconnection = PHP_AMQP_GET_CONNECTION(getThis());\n \n-\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"read_timeout\"), read_timeout TSRMLS_CC);\n+\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"read_timeout\"), read_timeout TSRMLS_CC);\n \n \tif (connection->connection_resource && connection->connection_resource->is_connected) {\n \t\tif (php_amqp_set_resource_read_timeout(connection->connection_resource, read_timeout TSRMLS_CC) == 0) {\n@@ -1032,7 +1032,7 @@ static PHP_METHOD(amqp_connection_class, setReadTimeout)\n \t/* Get the connection object out of the store */\n \tconnection = PHP_AMQP_GET_CONNECTION(getThis());\n \n-\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"read_timeout\"), read_timeout TSRMLS_CC);\n+\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"read_timeout\"), read_timeout TSRMLS_CC);\n \n \tif (connection->connection_resource && connection->connection_resource->is_connected) {\n \t\tif (php_amqp_set_resource_read_timeout(connection->connection_resource, read_timeout TSRMLS_CC) == 0) {\n@@ -1078,7 +1078,7 @@ static PHP_METHOD(amqp_connection_class, setWriteTimeout)\n \t/* Get the connection object out of the store */\n \tconnection = PHP_AMQP_GET_CONNECTION(getThis());\n \n-\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"write_timeout\"), write_timeout TSRMLS_CC);\n+\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"write_timeout\"), write_timeout TSRMLS_CC);\n \n \tif (connection->connection_resource && connection->connection_resource->is_connected) {\n \t\tif (php_amqp_set_resource_write_timeout(connection->connection_resource, write_timeout TSRMLS_CC) == 0) {\n@@ -1124,7 +1124,7 @@ static PHP_METHOD(amqp_connection_class, setRpcTimeout)\n \t/* Get the connection object out of the store */\n \tconnection = PHP_AMQP_GET_CONNECTION(getThis());\n \n-\tzend_update_property_double(this_ce, getThis(), ZEND_STRL(\"rpc_timeout\"), rpc_timeout TSRMLS_CC);\n+\tzend_update_property_double(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"rpc_timeout\"), rpc_timeout TSRMLS_CC);\n \n \tif (connection->connection_resource && connection->connection_resource->is_connected) {\n \t\tif (php_amqp_set_resource_rpc_timeout(connection->connection_resource, rpc_timeout TSRMLS_CC) == 0) {\n@@ -1255,7 +1255,7 @@ static PHP_METHOD(amqp_connection_class, setCACert)\n \t\treturn;\n \t}\n \n-\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"cacert\"), str, str_len TSRMLS_CC);\n+\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"cacert\"), str, str_len TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -1279,7 +1279,7 @@ static PHP_METHOD(amqp_connection_class, setCert)\n \t\treturn;\n \t}\n \n-\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"cert\"), str, str_len TSRMLS_CC);\n+\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"cert\"), str, str_len TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -1303,7 +1303,7 @@ static PHP_METHOD(amqp_connection_class, setKey)\n \t\treturn;\n \t}\n \n-\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"key\"), str, str_len TSRMLS_CC);\n+\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"key\"), str, str_len TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -1328,7 +1328,7 @@ static PHP_METHOD(amqp_connection_class, setVerify)\n \t\treturn;\n \t}\n \n-\tzend_update_property_bool(this_ce, getThis(), ZEND_STRL(\"verify\"), verify TSRMLS_CC);\n+\tzend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"verify\"), verify TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -1361,7 +1361,7 @@ static PHP_METHOD(amqp_connection_class, setSaslMethod)\n \t\treturn;\n \t}\n \n-\tzend_update_property_long(this_ce, getThis(), ZEND_STRL(\"sasl_method\"), method TSRMLS_CC);\n+\tzend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"sasl_method\"), method TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -1385,9 +1385,9 @@ static PHP_METHOD(amqp_connection_class, setConnectionName)\n \t\treturn;\n \t}\n \tif (str == NULL) {\n-\t\tzend_update_property_null(this_ce, getThis(), ZEND_STRL(\"connection_name\") TSRMLS_CC);\n+\t\tzend_update_property_null(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"connection_name\") TSRMLS_CC);\n \t} else {\n-\t\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"connection_name\"), str, str_len TSRMLS_CC);\n+\t\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"connection_name\"), str, str_len TSRMLS_CC);\n \t}\n \n \ndiff --git a/amqp_connection_resource.c b/amqp_connection_resource.c\nindex 7e20a5c..b0e065a 100644\n--- a/amqp_connection_resource.c\n+++ b/amqp_connection_resource.c\n@@ -112,15 +112,15 @@ static void php_amqp_close_connection_from_server(amqp_rpc_reply_t reply, char *\n \n \tif (!reply.reply.id) {\n \t\tPHP_AMQP_G(error_code) = -1;\n-\t\tspprintf(message, 0, \"Server connection error: %d, message: %s\",\n-\t\t\t\t PHP_AMQP_G(error_code),\n+\t\tspprintf(message, 0, \"Server connection error: %ld, message: %s\",\n+\t\t\t\t (long)PHP_AMQP_G(error_code),\n \t\t\t\t \"unexpected response\"\n \t\t);\n \t} else {\n \t\tPHP_AMQP_G(error_code) = m->reply_code;\n \t\tspprintf(message, 0, \"Server connection error: %d, message: %.*s\",\n \t\t\t\t m->reply_code,\n-\t\t\t\t (PHP5to7_param_str_len_type_t) m->reply_text.len,\n+\t\t\t\t (int) m->reply_text.len,\n \t\t\t\t (char *) m->reply_text.bytes\n \t\t);\n \t}\n@@ -156,15 +156,15 @@ static void php_amqp_close_channel_from_server(amqp_rpc_reply_t reply, char **me\n \n \tif (!reply.reply.id) {\n \t\tPHP_AMQP_G(error_code) = -1;\n-\t\tspprintf(message, 0, \"Server channel error: %d, message: %s\",\n-\t\t\t\t PHP_AMQP_G(error_code),\n+\t\tspprintf(message, 0, \"Server channel error: %ld, message: %s\",\n+\t\t\t\t (long)PHP_AMQP_G(error_code),\n \t\t\t\t \"unexpected response\"\n \t\t);\n \t} else {\n \t\tPHP_AMQP_G(error_code) = m->reply_code;\n \t\tspprintf(message, 0, \"Server channel error: %d, message: %.*s\",\n \t\t\tm->reply_code,\n-\t\t\t(PHP5to7_param_str_len_type_t) m->reply_text.len,\n+\t\t\t(int) m->reply_text.len,\n \t\t\t(char *)m->reply_text.bytes\n \t\t);\n \t}\ndiff --git a/amqp_decimal.c b/amqp_decimal.c\nindex 83c9f20..8fd92c1 100644\n--- a/amqp_decimal.c\n+++ b/amqp_decimal.c\n@@ -53,7 +53,7 @@ static PHP_METHOD(amqp_decimal_class, __construct)\n \t}\n \n \tif (exponent > AMQP_DECIMAL_EXPONENT_MAX) {\n-\t\tzend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, \"Decimal exponent value must be less than %u.\", AMQP_DECIMAL_EXPONENT_MAX);\n+\t\tzend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, \"Decimal exponent value must be less than %u.\", (unsigned)AMQP_DECIMAL_EXPONENT_MAX);\n \t\treturn;\n \t}\n     if (significand < AMQP_DECIMAL_SIGNIFICAND_MIN) {\n@@ -62,12 +62,12 @@ static PHP_METHOD(amqp_decimal_class, __construct)\n     }\n \n     if (significand > AMQP_DECIMAL_SIGNIFICAND_MAX) {\n-        zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, \"Decimal significand value must be less than %u.\", AMQP_DECIMAL_SIGNIFICAND_MAX);\n+        zend_throw_exception_ex(amqp_value_exception_class_entry, 0 TSRMLS_CC, \"Decimal significand value must be less than %u.\", (unsigned)AMQP_DECIMAL_SIGNIFICAND_MAX);\n         return;\n     }\n \n-    zend_update_property_long(this_ce, getThis(), ZEND_STRL(\"exponent\"), exponent TSRMLS_CC);\n-    zend_update_property_long(this_ce, getThis(), ZEND_STRL(\"significand\"), significand TSRMLS_CC);\n+    zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"exponent\"), exponent TSRMLS_CC);\n+    zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"significand\"), significand TSRMLS_CC);\n }\n /* }}} */\n \ndiff --git a/amqp_envelope.c b/amqp_envelope.c\nindex 8127bed..b7a7a45 100644\n--- a/amqp_envelope.c\n+++ b/amqp_envelope.c\n@@ -67,13 +67,13 @@ void convert_amqp_envelope_to_zval(amqp_envelope_t *amqp_envelope, zval *envelop\n     amqp_basic_properties_t *p = &amqp_envelope->message.properties;\n     amqp_message_t *message = &amqp_envelope->message;\n \n-    zend_update_property_stringl(this_ce, envelope, ZEND_STRL(\"body\"), (const char *) message->body.bytes, (PHP5to7_param_str_len_type_t) message->body.len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL(\"body\"), (const char *) message->body.bytes, (PHP5to7_param_str_len_type_t) message->body.len TSRMLS_CC);\n \n-    zend_update_property_stringl(this_ce, envelope, ZEND_STRL(\"consumer_tag\"), (const char *) amqp_envelope->consumer_tag.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->consumer_tag.len TSRMLS_CC);\n-    zend_update_property_long(this_ce, envelope, ZEND_STRL(\"delivery_tag\"), (PHP5to7_param_long_type_t) amqp_envelope->delivery_tag TSRMLS_CC);\n-    zend_update_property_bool(this_ce, envelope, ZEND_STRL(\"is_redelivery\"), (PHP5to7_param_long_type_t) amqp_envelope->redelivered TSRMLS_CC);\n-    zend_update_property_stringl(this_ce, envelope, ZEND_STRL(\"exchange_name\"), (const char *) amqp_envelope->exchange.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->exchange.len TSRMLS_CC);\n-    zend_update_property_stringl(this_ce, envelope, ZEND_STRL(\"routing_key\"), (const char *) amqp_envelope->routing_key.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->routing_key.len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL(\"consumer_tag\"), (const char *) amqp_envelope->consumer_tag.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->consumer_tag.len TSRMLS_CC);\n+    zend_update_property_long(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL(\"delivery_tag\"), (PHP5to7_param_long_type_t) amqp_envelope->delivery_tag TSRMLS_CC);\n+    zend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL(\"is_redelivery\"), (PHP5to7_param_long_type_t) amqp_envelope->redelivered TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL(\"exchange_name\"), (const char *) amqp_envelope->exchange.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->exchange.len TSRMLS_CC);\n+    zend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(envelope), ZEND_STRL(\"routing_key\"), (const char *) amqp_envelope->routing_key.bytes, (PHP5to7_param_str_len_type_t) amqp_envelope->routing_key.len TSRMLS_CC);\n \n     php_amqp_basic_properties_extract(p, envelope TSRMLS_CC);\n }\ndiff --git a/amqp_exchange.c b/amqp_exchange.c\nindex 4f80d3b..4bfe397 100644\n--- a/amqp_exchange.c\n+++ b/amqp_exchange.c\n@@ -65,20 +65,20 @@ static PHP_METHOD(amqp_exchange_class, __construct)\n \tzval *channelObj;\n \tamqp_channel_resource *channel_resource;\n \n-\tif (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, \"o\", &channelObj) == FAILURE) {\n+\tif (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, \"O\", &channelObj, amqp_channel_class_entry) == FAILURE) {\n \t\treturn;\n \t}\n \n \tPHP5to7_MAYBE_INIT(arguments);\n \tPHP5to7_ARRAY_INIT(arguments);\n-\tzend_update_property(this_ce, getThis(), ZEND_STRL(\"arguments\"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);\n+\tzend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"arguments\"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);\n \tPHP5to7_MAYBE_DESTROY(arguments);\n \n \tchannel_resource = PHP_AMQP_GET_CHANNEL_RESOURCE(channelObj);\n \tPHP_AMQP_VERIFY_CHANNEL_RESOURCE(channel_resource, \"Could not create exchange.\");\n \n-\tzend_update_property(this_ce, getThis(), ZEND_STRL(\"channel\"), channelObj TSRMLS_CC);\n-\tzend_update_property(this_ce, getThis(), ZEND_STRL(\"connection\"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, \"connection\") TSRMLS_CC);\n+\tzend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"channel\"), channelObj TSRMLS_CC);\n+\tzend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"connection\"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, \"connection\") TSRMLS_CC);\n }\n /* }}} */\n \n@@ -119,7 +119,7 @@ static PHP_METHOD(amqp_exchange_class, setName)\n \t}\n \n \t/* Set the exchange name */\n-\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"name\"), name, name_len TSRMLS_CC);\n+\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"name\"), name, name_len TSRMLS_CC);\n }\n /* }}} */\n \n@@ -168,10 +168,10 @@ static PHP_METHOD(amqp_exchange_class, setFlags)\n \t/* Set the flags based on the bitmask we were given */\n \tflagBitmask = flagBitmask ? flagBitmask & PHP_AMQP_EXCHANGE_FLAGS : flagBitmask;\n \n-\tzend_update_property_bool(this_ce, getThis(), ZEND_STRL(\"passive\"), IS_PASSIVE(flagBitmask) TSRMLS_CC);\n-\tzend_update_property_bool(this_ce, getThis(), ZEND_STRL(\"durable\"), IS_DURABLE(flagBitmask) TSRMLS_CC);\n-\tzend_update_property_bool(this_ce, getThis(), ZEND_STRL(\"auto_delete\"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);\n-\tzend_update_property_bool(this_ce, getThis(), ZEND_STRL(\"internal\"), IS_INTERNAL(flagBitmask) TSRMLS_CC);\n+\tzend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"passive\"), IS_PASSIVE(flagBitmask) TSRMLS_CC);\n+\tzend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"durable\"), IS_DURABLE(flagBitmask) TSRMLS_CC);\n+\tzend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"auto_delete\"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);\n+\tzend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"internal\"), IS_INTERNAL(flagBitmask) TSRMLS_CC);\n }\n /* }}} */\n \n@@ -204,7 +204,7 @@ static PHP_METHOD(amqp_exchange_class, setType)\n \t\treturn;\n \t}\n \n-\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"type\"), type, type_len TSRMLS_CC);\n+\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"type\"), type, type_len TSRMLS_CC);\n }\n /* }}} */\n \n@@ -273,7 +273,7 @@ static PHP_METHOD(amqp_exchange_class, setArguments)\n \t\treturn;\n \t}\n \n-\tzend_update_property(this_ce, getThis(), ZEND_STRL(\"arguments\"), zvalArguments TSRMLS_CC);\n+\tzend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"arguments\"), zvalArguments TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\ndiff --git a/amqp_queue.c b/amqp_queue.c\nindex c13629c..eeba144 100644\n--- a/amqp_queue.c\n+++ b/amqp_queue.c\n@@ -68,20 +68,20 @@ static PHP_METHOD(amqp_queue_class, __construct)\n \tzval *channelObj;\n \tamqp_channel_resource *channel_resource;\n \n-\tif (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, \"o\", &channelObj) == FAILURE) {\n+\tif (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, \"O\", &channelObj, amqp_channel_class_entry) == FAILURE) {\n \t\treturn;\n \t}\n \n \tPHP5to7_MAYBE_INIT(arguments);\n \tPHP5to7_ARRAY_INIT(arguments);\n-\tzend_update_property(this_ce, getThis(), ZEND_STRL(\"arguments\"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);\n+\tzend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"arguments\"), PHP5to7_MAYBE_PTR(arguments) TSRMLS_CC);\n \tPHP5to7_MAYBE_DESTROY(arguments);\n \n \tchannel_resource = PHP_AMQP_GET_CHANNEL_RESOURCE(channelObj);\n \tPHP_AMQP_VERIFY_CHANNEL_RESOURCE(channel_resource, \"Could not create queue.\");\n \n-\tzend_update_property(this_ce, getThis(), ZEND_STRL(\"channel\"), channelObj TSRMLS_CC);\n-\tzend_update_property(this_ce, getThis(), ZEND_STRL(\"connection\"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, \"connection\") TSRMLS_CC);\n+\tzend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"channel\"), channelObj TSRMLS_CC);\n+\tzend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"connection\"), PHP_AMQP_READ_OBJ_PROP(amqp_channel_class_entry, channelObj, \"connection\") TSRMLS_CC);\n \n }\n /* }}} */\n@@ -122,7 +122,7 @@ static PHP_METHOD(amqp_queue_class, setName)\n \t}\n \n \t/* Set the queue name */\n-\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"name\"), name, name_len TSRMLS_CC);\n+\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"name\"), name, name_len TSRMLS_CC);\n \n \t/* BC */\n \tRETURN_TRUE;\n@@ -175,10 +175,10 @@ static PHP_METHOD(amqp_queue_class, setFlags)\n \t/* Set the flags based on the bitmask we were given */\n \tflagBitmask = flagBitmask ? flagBitmask & PHP_AMQP_QUEUE_FLAGS : flagBitmask;\n \n-\tzend_update_property_bool(this_ce, getThis(), ZEND_STRL(\"passive\"), IS_PASSIVE(flagBitmask) TSRMLS_CC);\n-\tzend_update_property_bool(this_ce, getThis(), ZEND_STRL(\"durable\"), IS_DURABLE(flagBitmask) TSRMLS_CC);\n-\tzend_update_property_bool(this_ce, getThis(), ZEND_STRL(\"exclusive\"), IS_EXCLUSIVE(flagBitmask) TSRMLS_CC);\n-\tzend_update_property_bool(this_ce, getThis(), ZEND_STRL(\"auto_delete\"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);\n+\tzend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"passive\"), IS_PASSIVE(flagBitmask) TSRMLS_CC);\n+\tzend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"durable\"), IS_DURABLE(flagBitmask) TSRMLS_CC);\n+\tzend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"exclusive\"), IS_EXCLUSIVE(flagBitmask) TSRMLS_CC);\n+\tzend_update_property_bool(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"auto_delete\"), IS_AUTODELETE(flagBitmask) TSRMLS_CC);\n \n \t/* BC */\n \tRETURN_TRUE;\n@@ -250,7 +250,7 @@ static PHP_METHOD(amqp_queue_class, setArguments)\n \t\treturn;\n \t}\n \n-\tzend_update_property(this_ce, getThis(), ZEND_STRL(\"arguments\"), zvalArguments TSRMLS_CC);\n+\tzend_update_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"arguments\"), zvalArguments TSRMLS_CC);\n \n \tRETURN_TRUE;\n }\n@@ -342,7 +342,7 @@ static PHP_METHOD(amqp_queue_class, declareQueue)\n \n \t/* Set the queue name, in case it is an autogenerated queue name */\n \tname = php_amqp_type_amqp_bytes_to_char(r->queue);\n-\tzend_update_property_string(this_ce, getThis(), ZEND_STRL(\"name\"), name TSRMLS_CC);\n+\tzend_update_property_string(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"name\"), name TSRMLS_CC);\n \tefree(name);\n \n \tphp_amqp_maybe_release_buffers_on_channel(channel_resource->connection_resource, channel_resource);\n@@ -525,7 +525,7 @@ static PHP_METHOD(amqp_queue_class, consume)\n \t}\n \n \tzval *channel_zv = PHP_AMQP_READ_THIS_PROP(\"channel\");\n-\tzval *consumers = zend_read_property(amqp_channel_class_entry, channel_zv, ZEND_STRL(\"consumers\"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);\n+\tzval *consumers = zend_read_property(amqp_channel_class_entry, PHP5to8_OBJ_PROP(channel_zv), ZEND_STRL(\"consumers\"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);\n \n \tif (IS_ARRAY != Z_TYPE_P(consumers)) {\n \t\tzend_throw_exception(amqp_queue_exception_class_entry, \"Invalid channel consumers, forgot to call channel constructor?\", 0 TSRMLS_CC);\n@@ -594,7 +594,7 @@ static PHP_METHOD(amqp_queue_class, consume)\n \t\tefree(key);\n \n \t\t/* Set the consumer tag name, in case it is an autogenerated consumer tag name */\n-\t\tzend_update_property_stringl(this_ce, getThis(), ZEND_STRL(\"consumer_tag\"), (const char *) r->consumer_tag.bytes, (PHP5to7_param_str_len_type_t) r->consumer_tag.len TSRMLS_CC);\n+\t\tzend_update_property_stringl(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"consumer_tag\"), (const char *) r->consumer_tag.bytes, (PHP5to7_param_str_len_type_t) r->consumer_tag.len TSRMLS_CC);\n \t}\n \n \tif (!ZEND_FCI_INITIALIZED(fci)) {\n@@ -674,7 +674,7 @@ static PHP_METHOD(amqp_queue_class, consume)\n \t\tcurrent_channel_zv = current_channel_resource->parent->this_ptr;\n #endif\n \n-\t\tconsumers = zend_read_property(amqp_channel_class_entry, PHP5to7_MAYBE_PTR(current_channel_zv), ZEND_STRL(\"consumers\"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);\n+\t\tconsumers = zend_read_property(amqp_channel_class_entry, PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PTR(current_channel_zv)), ZEND_STRL(\"consumers\"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);\n \n \t\tif (IS_ARRAY != Z_TYPE_P(consumers)) {\n \t\t\tzend_throw_exception(amqp_queue_exception_class_entry, \"Invalid channel consumers, forgot to call channel constructor?\", 0 TSRMLS_CC);\n@@ -689,8 +689,8 @@ static PHP_METHOD(amqp_queue_class, consume)\n \t\t\tPHP5to7_zval_t exception PHP5to7_MAYBE_SET_TO_NULL;\n \t\t\tPHP5to7_MAYBE_INIT(exception);\n \t\t\tobject_init_ex(PHP5to7_MAYBE_PTR(exception), amqp_envelope_exception_class_entry);\n-\t\t    zend_update_property_string(zend_exception_get_default(TSRMLS_C), PHP5to7_MAYBE_PTR(exception),  ZEND_STRL(\"message\"), \"Orphaned envelope\" TSRMLS_CC);\n-\t\t\tzend_update_property(amqp_envelope_exception_class_entry, PHP5to7_MAYBE_PTR(exception), ZEND_STRL(\"envelope\"), PHP5to7_MAYBE_PTR(message) TSRMLS_CC);\n+\t\t    zend_update_property_string(zend_exception_get_default(TSRMLS_C), PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PTR(exception)),  ZEND_STRL(\"message\"), \"Orphaned envelope\" TSRMLS_CC);\n+\t\t\tzend_update_property(amqp_envelope_exception_class_entry, PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PTR(exception)), ZEND_STRL(\"envelope\"), PHP5to7_MAYBE_PTR(message) TSRMLS_CC);\n \n \t\t\tzend_throw_exception_object(PHP5to7_MAYBE_PTR(exception) TSRMLS_CC);\n \n@@ -946,7 +946,7 @@ static PHP_METHOD(amqp_queue_class, cancel)\n \t}\n \n \tzval *channel_zv = PHP_AMQP_READ_THIS_PROP(\"channel\");\n-\tzval *consumers = zend_read_property(amqp_channel_class_entry, channel_zv, ZEND_STRL(\"consumers\"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);\n+\tzval *consumers = zend_read_property(amqp_channel_class_entry, PHP5to8_OBJ_PROP(channel_zv), ZEND_STRL(\"consumers\"), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC);\n \tzend_bool has_consumer_tag = (zend_bool) (IS_STRING == Z_TYPE_P(PHP_AMQP_READ_THIS_PROP(\"consumer_tag\")));\n \n \tif (IS_ARRAY != Z_TYPE_P(consumers)) {\n@@ -977,8 +977,8 @@ static PHP_METHOD(amqp_queue_class, cancel)\n \t\treturn;\n \t}\n \n-\tif (!consumer_tag_len || has_consumer_tag && strcmp(consumer_tag, PHP_AMQP_READ_THIS_PROP_STR(\"consumer_tag\")) != 0) {\n-\t\tzend_update_property_null(this_ce, getThis(), ZEND_STRL(\"consumer_tag\") TSRMLS_CC);\n+\tif (!consumer_tag_len || (has_consumer_tag && strcmp(consumer_tag, PHP_AMQP_READ_THIS_PROP_STR(\"consumer_tag\")) != 0)) {\n+\t\tzend_update_property_null(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"consumer_tag\") TSRMLS_CC);\n \t}\n \n     char *key;\ndiff --git a/amqp_timestamp.c b/amqp_timestamp.c\nindex d9eec39..ed07ab6 100644\n--- a/amqp_timestamp.c\n+++ b/amqp_timestamp.c\n@@ -61,7 +61,7 @@ static PHP_METHOD(amqp_timestamp_class, __construct)\n \t#if PHP_MAJOR_VERSION >= 7\n \t\tzend_string *str;\n \t\tstr = _php_math_number_format_ex(timestamp, 0, \"\", 0, \"\", 0);\n-\t\tzend_update_property_str(this_ce, getThis(), ZEND_STRL(\"timestamp\"), str);\n+\t\tzend_update_property_str(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(\"timestamp\"), str);\n         zend_string_delref(str);\n \t#else\n \t\tchar *str;\n@@ -104,7 +104,11 @@ ZEND_END_ARG_INFO()\n ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_timestamp_class_getTimestamp, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)\n ZEND_END_ARG_INFO()\n \n+#if PHP_MAJOR_VERSION < 8\n ZEND_BEGIN_ARG_INFO_EX(arginfo_amqp_timestamp_class_toString, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)\n+#else\n+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_amqp_timestamp_class_toString, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, IS_STRING, 0)\n+#endif\n ZEND_END_ARG_INFO()\n \n zend_function_entry amqp_timestamp_class_functions[] = {\ndiff --git a/amqp_type.c b/amqp_type.c\nindex fb87727..5f1ab91 100644\n--- a/amqp_type.c\n+++ b/amqp_type.c\n@@ -250,7 +250,7 @@ zend_bool php_amqp_type_internal_convert_php_to_amqp_field_value(zval *value, am\n \t\t\tif (instanceof_function(Z_OBJCE_P(value), amqp_timestamp_class_entry TSRMLS_CC)) {\n                 PHP5to7_zval_t result_zv PHP5to7_MAYBE_SET_TO_NULL;\n \n-                zend_call_method_with_0_params(PHP5to7_MAYBE_PARAM_PTR(value), amqp_timestamp_class_entry, NULL, \"gettimestamp\", &result_zv);\n+                zend_call_method_with_0_params(PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PARAM_PTR(value)), amqp_timestamp_class_entry, NULL, \"gettimestamp\", &result_zv);\n \n                 field->kind = AMQP_FIELD_KIND_TIMESTAMP;\n                 field->value.u64 = strtoimax(Z_STRVAL(PHP5to7_MAYBE_DEREF(result_zv)), NULL, 10);\n@@ -262,11 +262,11 @@ zend_bool php_amqp_type_internal_convert_php_to_amqp_field_value(zval *value, am\n \t\t\t\tfield->kind = AMQP_FIELD_KIND_DECIMAL;\n \t\t\t\tPHP5to7_zval_t result_zv PHP5to7_MAYBE_SET_TO_NULL;\n \n-\t\t\t\tzend_call_method_with_0_params(PHP5to7_MAYBE_PARAM_PTR(value), amqp_decimal_class_entry, NULL, \"getexponent\", &result_zv);\n+\t\t\t\tzend_call_method_with_0_params(PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PARAM_PTR(value)), amqp_decimal_class_entry, NULL, \"getexponent\", &result_zv);\n \t\t\t\tfield->value.decimal.decimals = (uint8_t)Z_LVAL(PHP5to7_MAYBE_DEREF(result_zv));\n \t\t\t\tPHP5to7_MAYBE_DESTROY(result_zv);\n \n-\t\t\t\tzend_call_method_with_0_params(PHP5to7_MAYBE_PARAM_PTR(value), amqp_decimal_class_entry, NULL, \"getsignificand\", &result_zv);\n+\t\t\t\tzend_call_method_with_0_params(PHP5to8_OBJ_PROP(PHP5to7_MAYBE_PARAM_PTR(value)), amqp_decimal_class_entry, NULL, \"getsignificand\", &result_zv);\n \t\t\t\tfield->value.decimal.value = (uint32_t)Z_LVAL(PHP5to7_MAYBE_DEREF(result_zv));\n \n \t\t\t\tPHP5to7_MAYBE_DESTROY(result_zv);\ndiff --git a/php5_support.h b/php5_support.h\nindex 5c57620..25c2d96 100644\n--- a/php5_support.h\n+++ b/php5_support.h\n@@ -109,6 +109,8 @@ typedef zend_rsrc_list_entry PHP5to7_zend_resource_le_t;\n #define ZEND_ULONG_FMT \"%\" PRIu64\n #define PHP5to7_ZEND_ACC_FINAL_CLASS ZEND_ACC_FINAL_CLASS\n \n+#define PHP5to8_OBJ_PROP(zv) (zv)\n+\n #endif //PHP_AMQP_PHP5_SUPPORT_H\n \n /*\ndiff --git a/php7_support.h b/php7_support.h\nindex c9e8f5b..0dbd6b2 100644\n--- a/php7_support.h\n+++ b/php7_support.h\n@@ -101,15 +101,24 @@ typedef zval PHP5to7_zend_resource_le_t;\n \n #define PHP5to7_ZEND_ACC_FINAL_CLASS ZEND_ACC_FINAL\n \n+\n /* Small change to let it build after a major internal change for php8.0\n  * More info:\n  * https://github.com/php/php-src/blob/php-8.0.0alpha3/UPGRADING.INTERNALS#L47\n  */\n #if PHP_MAJOR_VERSION >= 8\n+\n # define TSRMLS_DC\n # define TSRMLS_D\n # define TSRMLS_CC\n # define TSRMLS_C\n+\n+#define PHP5to8_OBJ_PROP(zv) Z_OBJ_P(zv)\n+\n+#else\n+\n+#define PHP5to8_OBJ_PROP(zv) (zv)\n+\n # endif\n \n #endif //PHP_AMQP_PHP7_SUPPORT_H\ndiff --git a/php_amqp.h b/php_amqp.h\nindex 752edd7..686741d 100644\n--- a/php_amqp.h\n+++ b/php_amqp.h\n@@ -221,14 +221,14 @@ struct _amqp_connection_object {\n #define PHP_AMQP_NOPARAMS() if (zend_parse_parameters_none() == FAILURE) { return; }\n \n #define PHP_AMQP_RETURN_THIS_PROP(prop_name) \\\n-    zval * _zv = zend_read_property(this_ce, getThis(), ZEND_STRL(prop_name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC); \\\n+    zval * _zv = zend_read_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(prop_name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC); \\\n     RETURN_ZVAL(_zv, 1, 0);\n \n-#define PHP_AMQP_READ_OBJ_PROP(cls, obj, name) zend_read_property((cls), (obj), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)\n+#define PHP_AMQP_READ_OBJ_PROP(cls, obj, name) zend_read_property((cls), PHP5to8_OBJ_PROP(obj), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)\n #define PHP_AMQP_READ_OBJ_PROP_DOUBLE(cls, obj, name) Z_DVAL_P(PHP_AMQP_READ_OBJ_PROP((cls), (obj), (name)))\n \n-#define PHP_AMQP_READ_THIS_PROP_CE(name, ce) zend_read_property((ce), getThis(), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)\n-#define PHP_AMQP_READ_THIS_PROP(name) zend_read_property(this_ce, getThis(), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)\n+#define PHP_AMQP_READ_THIS_PROP_CE(name, ce) zend_read_property((ce), PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)\n+#define PHP_AMQP_READ_THIS_PROP(name) zend_read_property(this_ce, PHP5to8_OBJ_PROP(getThis()), ZEND_STRL(name), 0 PHP5to7_READ_PROP_RV_PARAM_CC TSRMLS_CC)\n #define PHP_AMQP_READ_THIS_PROP_BOOL(name) Z_BVAL_P(PHP_AMQP_READ_THIS_PROP(name))\n #define PHP_AMQP_READ_THIS_PROP_STR(name) Z_STRVAL_P(PHP_AMQP_READ_THIS_PROP(name))\n #define PHP_AMQP_READ_THIS_PROP_STRLEN(name) (Z_TYPE_P(PHP_AMQP_READ_THIS_PROP(name)) == IS_STRING ? Z_STRLEN_P(PHP_AMQP_READ_THIS_PROP(name)) : 0)\ndiff --git a/tests/amqptimestamp.phpt b/tests/amqptimestamp.phpt\nindex 9835883..6424f8b 100644\n--- a/tests/amqptimestamp.phpt\n+++ b/tests/amqptimestamp.phpt\n@@ -2,7 +2,7 @@\n AMQPTimestamp\n --SKIPIF--\n <?php\n-if (!extension_loaded(\"amqp\") || version_compare(PHP_VERSION, '5.3', '<')) {\n+if (!extension_loaded(\"amqp\") || version_compare(PHP_VERSION, '5.3', '<') || version_compare(PHP_VERSION, '8.0', '>')) {\n   print \"skip\";\n }\n --FILE--\n@@ -52,4 +52,4 @@ bool(true)\n string(20) \"18446744073709551616\"\n string(1) \"0\"\n \n-==END==\n\\ No newline at end of file\n+==END==\ndiff --git a/tests/amqptimestamp_php8.phpt b/tests/amqptimestamp_php8.phpt\nnew file mode 100644\nindex 0000000..dabecc5\n--- /dev/null\n+++ b/tests/amqptimestamp_php8.phpt\n@@ -0,0 +1,60 @@\n+--TEST--\n+AMQPTimestamp\n+--SKIPIF--\n+<?php\n+if (!extension_loaded(\"amqp\") || version_compare(PHP_VERSION, '8.0', '<')) {\n+  print \"skip\";\n+}\n+--FILE--\n+<?php\n+\n+$timestamp = new AMQPTimestamp(100000);\n+var_dump($timestamp->getTimestamp(), (string) $timestamp);\n+\n+$timestamp = new AMQPTimestamp(100000.1);\n+var_dump($timestamp->getTimestamp(), (string) $timestamp);\n+\n+try {\n+\tnew AMQPTimestamp();\n+} catch(ArgumentCountError $e) {\n+\techo $e->getMessage() . \"\\n\";\n+}\n+try {\n+\tnew AMQPTimestamp(\"string\");\n+} catch(TypeError $e) {\n+\techo $e->getMessage() . \"\\n\";\n+}\n+\n+try {\n+    new AMQPTimestamp(AMQPTimestamp::MIN - 1);\n+} catch (AMQPValueException $e) {\n+    echo $e->getMessage() . \"\\n\";\n+}\n+\n+try {\n+    new AMQPTimestamp(INF);\n+} catch (AMQPValueException $e) {\n+    echo $e->getMessage() . \"\\n\";\n+}\n+\n+var_dump((new ReflectionClass(\"AMQPTimestamp\"))->isFinal());\n+\n+var_dump(AMQPTimestamp::MAX);\n+var_dump(AMQPTimestamp::MIN);\n+?>\n+\n+==END==\n+--EXPECTF--\n+string(6) \"100000\"\n+string(6) \"100000\"\n+string(6) \"100000\"\n+string(6) \"100000\"\n+AMQPTimestamp::__construct() expects exactly 1 parameter, 0 given\n+AMQPTimestamp::__construct(): Argument #1 ($timestamp) must be of type float, string given\n+The timestamp parameter must be greater than 0.\n+The timestamp parameter must be less than 18446744073709551616.\n+bool(true)\n+string(20) \"18446744073709551616\"\n+string(1) \"0\"\n+\n+==END==\ndiff --git a/tests/bug_61533.phpt b/tests/bug_61533.phpt\nindex ecb5213..f53c315 100644\n--- a/tests/bug_61533.phpt\n+++ b/tests/bug_61533.phpt\n@@ -21,4 +21,4 @@ try {\n \n ?>\n --EXPECTF--\n-%s: Argument 1 passed to AMQPQueue::__construct() must be an instance of AMQPChannel, instance of AMQPConnection given%s\n+%s AMQPChannel%s AMQPConnection%s\n"
  },
  {
    "path": "package/php-amqp/Config.in",
    "content": "config BR2_PACKAGE_PHP_AMQP\n\tbool \"php-amqp\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # rabbitmq-c\n\tselect BR2_PACKAGE_OPENSSL # rabbitmq-c: amqp_ssl_socket.h\n\tselect BR2_PACKAGE_RABBITMQ_C\n\thelp\n\t  Communicate with any AMQP compliant server.\n\n\t  http://pecl.php.net/package/amqp\n\ncomment \"php-amqp needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/php-amqp/php-amqp.hash",
    "content": "# Locally calculated\nsha256  0ebc61052eb12406dddf5eabfe8749a12d52c566816b8aab04fb9916d0c26ed2  amqp-1.10.2.tgz\nsha256  ecd004e9ae3fcf54896b562d5e8008e36041f2620076effd58e5f4187299cee8  LICENSE\n"
  },
  {
    "path": "package/php-amqp/php-amqp.mk",
    "content": "################################################################################\n#\n# php-amqp\n#\n################################################################################\n\nPHP_AMQP_VERSION = 1.10.2\nPHP_AMQP_SOURCE = amqp-$(PHP_AMQP_VERSION).tgz\nPHP_AMQP_SITE = https://pecl.php.net/get\nPHP_AMQP_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \\\n\t--with-amqp=$(STAGING_DIR)/usr\n# phpize does the autoconf magic\nPHP_AMQP_DEPENDENCIES = rabbitmq-c php host-autoconf\nPHP_AMQP_LICENSE = PHP-3.01\nPHP_AMQP_LICENSE_FILES = LICENSE\n\ndefine PHP_AMQP_PHPIZE\n\t(cd $(@D); \\\n\t\tPHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \\\n\t\tPHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \\\n\t\t$(STAGING_DIR)/usr/bin/phpize)\nendef\n\nPHP_AMQP_PRE_CONFIGURE_HOOKS += PHP_AMQP_PHPIZE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/php-geoip/0001-add-build-support-for-php8.patch",
    "content": "From 9500f9964a1ef03890376c61f1b17db88753c8e2 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <aduskett@gmail.com>\nDate: Mon, 28 Jun 2021 12:24:59 -0700\nSubject: [PATCH] add build support for php8\n\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n php_geoip.h | 11 +++++++++++\n 1 file changed, 11 insertions(+)\n\ndiff --git a/php_geoip.h b/php_geoip.h\nindex 2f67cb6..d19d612 100644\n--- a/php_geoip.h\n+++ b/php_geoip.h\n@@ -30,6 +30,17 @@ extern zend_module_entry geoip_module_entry;\n typedef long zend_long;\n #endif\n \n+/* Small change to let it build after a major internal change for php8.0\n+ * More info:\n+ * https://github.com/php/php-src/blob/php-8.0.0/UPGRADING.INTERNALS#L47\n+ */\n+#if PHP_MAJOR_VERSION >= 8\n+# define TSRMLS_DC\n+# define TSRMLS_D\n+# define TSRMLS_CC\n+# define TSRMLS_C\n+# endif\n+\n #ifdef PHP_WIN32\n #define PHP_GEOIP_API __declspec(dllexport)\n #else\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/php-geoip/Config.in",
    "content": "config BR2_PACKAGE_PHP_GEOIP\n\tbool \"php-geoip\"\n\tselect BR2_PACKAGE_GEOIP\n\thelp\n\t  PHP GeoIP-based IP address mapper to geographical places.\n\n\t  http://pecl.php.net/package/geoip\n"
  },
  {
    "path": "package/php-geoip/php-geoip.hash",
    "content": "# Locally calculated\nsha256  b2d05c03019d46135c249b5a7fa0dbd43ca5ee98aea8ed807bc7aa90ac8c0f06  geoip-1.1.1.tgz\nsha256  93eb7fe81da0861e7013d12fe82cc8691a450822d889c2b0443a434be6c28ef4  geoip.c\n"
  },
  {
    "path": "package/php-geoip/php-geoip.mk",
    "content": "################################################################################\n#\n# php-geoip\n#\n################################################################################\n\nPHP_GEOIP_VERSION = 1.1.1\nPHP_GEOIP_SOURCE = geoip-$(PHP_GEOIP_VERSION).tgz\nPHP_GEOIP_SITE = https://pecl.php.net/get\nPHP_GEOIP_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \\\n\t--with-geoip=$(STAGING_DIR)/usr\n# phpize does the autoconf magic\nPHP_GEOIP_DEPENDENCIES = geoip php host-autoconf\nPHP_GEOIP_LICENSE = PHP-3.01\nPHP_GEOIP_LICENSE_FILES = geoip.c\n\ndefine PHP_GEOIP_PHPIZE\n\t(cd $(@D); \\\n\t\tPHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \\\n\t\tPHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \\\n\t\t$(STAGING_DIR)/usr/bin/phpize)\nendef\n\nPHP_GEOIP_PRE_CONFIGURE_HOOKS += PHP_GEOIP_PHPIZE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/php-gnupg/0001-Remove-inlining-_phpc_res_close.patch",
    "content": "From 887b0899d7e7423baec691255c2d8b56bb348ecd Mon Sep 17 00:00:00 2001\nFrom: Jakub Zelenka <bukka@php.net>\nDate: Sun, 14 Mar 2021 18:52:21 +0000\nSubject: [PATCH] Remove inlining _phpc_res_close\n\n[Retrieved from:\nhttps://github.com/bukka/phpc/commit/887b0899d7e7423baec691255c2d8b56bb348ecd]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n phpc.h | 8 --------\n 1 file changed, 8 deletions(-)\n\ndiff --git a/phpc/phpc.h b/phpc/phpc.h\nindex dc5887e..9206105 100644\n--- a/phpc/phpc.h\n+++ b/phpc/phpc.h\n@@ -945,16 +945,8 @@ typedef zend_resource * phpc_res_value_t;\n \tzend_fetch_resource2(Z_RES_P(_pz_res), _res_type_name, _res_type_1, _res_type_2)\n #define PHPC_RES_DELETE(_pz_res) \\\n \tzend_list_delete(Z_RES_P(_pz_res))\n-#if PHP_MAJOR_VERSION < 8\n #define PHPC_RES_CLOSE(_pz_res) \\\n \tzend_list_close(Z_RES_P(_pz_res))\n-#else\n-inline int _phpc_res_close(zval *zres) {\n-\tzend_list_close(Z_RES_P(zres));\n-\treturn SUCCESS;\n-}\n-#define PHPC_RES_CLOSE _phpc_res_close\n-#endif\n \n /* resource to zval */\n #define PHPC_RES_PZVAL(_res, _pzv) \\\n"
  },
  {
    "path": "package/php-gnupg/Config.in",
    "content": "config BR2_PACKAGE_PHP_GNUPG\n\tbool \"php-gnupg\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # ligpgme\n\tdepends on BR2_USE_MMU # libassuan\n\tselect BR2_PACKAGE_LIBGPGME\n\thelp\n\t  PHP wrapper around the gpgme library.\n\n\t  http://pecl.php.net/package/gnupg\n"
  },
  {
    "path": "package/php-gnupg/php-gnupg.hash",
    "content": "# Locally calculated\nsha256  d4f5f79aa483908f3df08e5b343ea3593c6d725b9ed2103e30242627659e0a64  gnupg-1.5.0.tgz\nsha256  da1136d4d9326317cbd320dadddf7e9b4b4edffd973eb083cb7b9754fb6a15d9  LICENSE\n"
  },
  {
    "path": "package/php-gnupg/php-gnupg.mk",
    "content": "################################################################################\n#\n# php-gnupg\n#\n################################################################################\n\nPHP_GNUPG_VERSION = 1.5.0\nPHP_GNUPG_SOURCE = gnupg-$(PHP_GNUPG_VERSION).tgz\nPHP_GNUPG_SITE = https://pecl.php.net/get\n# phpize does the autoconf magic\nPHP_GNUPG_DEPENDENCIES = php libgpgme host-autoconf host-pkgconf\nPHP_GNUPG_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \\\n\t--with-gnupg=$(STAGING_DIR)/usr --with-gpg=/usr/bin/gpg\nPHP_GNUPG_LICENSE = BSD-2-Clause\nPHP_GNUPG_LICENSE_FILES = LICENSE\n\ndefine PHP_GNUPG_PHPIZE\n\t(cd $(@D); \\\n\t\tPHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \\\n\t\tPHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \\\n\t\t$(STAGING_DIR)/usr/bin/phpize)\nendef\n\nPHP_GNUPG_PRE_CONFIGURE_HOOKS += PHP_GNUPG_PHPIZE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/php-imagick/Config.in",
    "content": "config BR2_PACKAGE_PHP_IMAGICK\n\tbool \"php-imagick\"\n\tdepends on BR2_USE_MMU # imagemagick\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # imagemagick\n\tselect BR2_PACKAGE_IMAGEMAGICK\n\thelp\n\t  PHP wrapper to the ImageMagick library.\n\n\t  http://pecl.php.net/package/imagick\n\ncomment \"php-imagemagick needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/php-imagick/php-imagick.hash",
    "content": "# Locally calculated\nsha256  795db7c36fbacd3d33a4f53ff2d38584c846e80a04dcd04c55e9e46c28f5d229  imagick-3.5.0.tgz\nsha256  b6e00df9cb3b91977c0d64a7c4db48cb6f5041f6eeda6583c236775f70a35b78  LICENSE\n"
  },
  {
    "path": "package/php-imagick/php-imagick.mk",
    "content": "################################################################################\n#\n# php-imagick\n#\n################################################################################\n\nPHP_IMAGICK_VERSION = 3.5.0\nPHP_IMAGICK_SOURCE = imagick-$(PHP_IMAGICK_VERSION).tgz\nPHP_IMAGICK_SITE = http://pecl.php.net/get\nPHP_IMAGICK_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \\\n\t--with-imagick=$(STAGING_DIR)/usr\n# phpize does the autoconf magic\nPHP_IMAGICK_DEPENDENCIES = imagemagick php host-autoconf\nPHP_IMAGICK_LICENSE = PHP-3.01\nPHP_IMAGICK_LICENSE_FILES = LICENSE\nPHP_IMAGICK_CPE_ID_VENDOR = php\nPHP_IMAGICK_CPE_ID_PRODUCT = imagick\n\ndefine PHP_IMAGICK_PHPIZE\n\t(cd $(@D); \\\n\t\tPHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \\\n\t\tPHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \\\n\t\t$(STAGING_DIR)/usr/bin/phpize)\nendef\n\nPHP_IMAGICK_PRE_CONFIGURE_HOOKS += PHP_IMAGICK_PHPIZE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/php-memcached/Config.in",
    "content": "config BR2_PACKAGE_PHP_MEMCACHED\n\tbool \"php-memcached\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # libmemcached\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libmemcached\n\tselect BR2_PACKAGE_PHP_EXT_SESSION\n\tselect BR2_PACKAGE_LIBMEMCACHED\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  PHP extension for interfacing with memcached via\n\t  libmemcached library.\n\n\t  http://pecl.php.net/package/memcached\n\ncomment \"php-memcached needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/php-memcached/php-memcached.hash",
    "content": "# Locally calculated\nsha256  b288e45f839593e16c4d8508b241de51a86df4f7322153e6becb9e1c819021fd  memcached-3.1.5.tgz\nsha256  24e8e3a9529204ead9422fa17cf3ddd75d292a8763b87fdb20591964f2e6ebe0  LICENSE\nsha256  a453a7a272fbd24105b39959f76996d50dad80b22d1c310f6c67f74f62ae4054  fastlz/LICENSE\nsha256  bba8cb50c660842c5ca459c5004395bdef8f01c1b64f97a9978f1053f173cb82  g_fmt.h\n"
  },
  {
    "path": "package/php-memcached/php-memcached.mk",
    "content": "################################################################################\n#\n# php-memcached\n#\n################################################################################\n\nPHP_MEMCACHED_VERSION = 3.1.5\nPHP_MEMCACHED_SOURCE = memcached-$(PHP_MEMCACHED_VERSION).tgz\nPHP_MEMCACHED_SITE = https://pecl.php.net/get\nPHP_MEMCACHED_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \\\n\t--disable-memcached-sasl \\\n\t--with-libmemcached-dir=$(STAGING_DIR)/usr \\\n\t--with-zlib-dir=$(STAGING_DIR)/usr\n# phpize does the autoconf magic\nPHP_MEMCACHED_DEPENDENCIES = libmemcached php zlib host-autoconf host-pkgconf\nPHP_MEMCACHED_LICENSE = PHP-3.01, MIT (fastlz), ISC-like (g_fmt.c, g_fmt.h)\nPHP_MEMCACHED_LICENSE_FILES = LICENSE fastlz/LICENSE g_fmt.h\n\ndefine PHP_MEMCACHED_PHPIZE\n\t(cd $(@D); \\\n\t\tPHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \\\n\t\tPHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \\\n\t\t$(STAGING_DIR)/usr/bin/phpize)\nendef\n\nPHP_MEMCACHED_PRE_CONFIGURE_HOOKS += PHP_MEMCACHED_PHPIZE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/php-pecl-dbus/0001-php8-compat.patch",
    "content": "From 7fde4dd4d26d2a4b7957a1010c6ea9e4b940fc62 Mon Sep 17 00:00:00 2001\nFrom: Stefan Saraev <stefan@saraev.ca>\nDate: Mon, 18 Jan 2021 23:22:52 +0200\nSubject: [PATCH] php8 compat\n\nUpstream: https://github.com/derickr/pecl-dbus/pull/8\nSigned-off-by: Herve Codina <herve.codina@bootlin.com>\n---\n dbus.c     | 55 ++++++++++++++++++++++++++++++------------------------\n php_dbus.h | 10 ++++++++++\n 2 files changed, 41 insertions(+), 24 deletions(-)\n\ndiff --git a/dbus.c b/dbus.c\nindex 9fde647..a98e2ea 100644\n--- a/dbus.c\n+++ b/dbus.c\n@@ -38,6 +38,9 @@\n #define Z_ADDREF_P(z) ((z)->refcount++)\n #endif\n \n+ZEND_BEGIN_ARG_INFO_EX(arginfo_void, 0, 0, 0)\n+ZEND_END_ARG_INFO()\n+\n /* {{{ arginfo */\n ZEND_BEGIN_ARG_INFO_EX(arginfo_dbus_object___call, 0, 0, 2)\n \tZEND_ARG_INFO(0, function_name)\n@@ -46,44 +49,44 @@ ZEND_END_ARG_INFO()\n /* }}} */\n \n const zend_function_entry dbus_funcs_dbus[] = {\n-\tPHP_ME(Dbus, __construct, NULL, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n-\tPHP_ME(Dbus, addWatch,    NULL, ZEND_ACC_PUBLIC)\n-\tPHP_ME(Dbus, waitLoop,    NULL, ZEND_ACC_PUBLIC)\n-\tPHP_ME(Dbus, requestName, NULL, ZEND_ACC_PUBLIC)\n-\tPHP_ME(Dbus, registerObject, NULL, ZEND_ACC_PUBLIC)\n-\tPHP_ME(Dbus, createProxy, NULL, ZEND_ACC_PUBLIC)\n+\tPHP_ME(Dbus, __construct, arginfo_void, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n+\tPHP_ME(Dbus, addWatch,    arginfo_void, ZEND_ACC_PUBLIC)\n+\tPHP_ME(Dbus, waitLoop,    arginfo_void, ZEND_ACC_PUBLIC)\n+\tPHP_ME(Dbus, requestName, arginfo_void, ZEND_ACC_PUBLIC)\n+\tPHP_ME(Dbus, registerObject, arginfo_void, ZEND_ACC_PUBLIC)\n+\tPHP_ME(Dbus, createProxy, arginfo_void, ZEND_ACC_PUBLIC)\n \tPHP_FE_END\n };\n \n const zend_function_entry dbus_funcs_dbus_object[] = {\n-\tPHP_ME(DbusObject, __construct, NULL, ZEND_ACC_CTOR|ZEND_ACC_PRIVATE)\n+\tPHP_ME(DbusObject, __construct, arginfo_void, ZEND_ACC_CTOR|ZEND_ACC_PRIVATE)\n \tPHP_ME(DbusObject, __call,      arginfo_dbus_object___call, ZEND_ACC_PUBLIC)\n \tPHP_FE_END\n };\n \n const zend_function_entry dbus_funcs_dbus_signal[] = {\n-\tPHP_ME(DbusSignal, __construct, NULL, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n-\tPHP_ME(DbusSignal, matches,     NULL, ZEND_ACC_PUBLIC)\n-\tPHP_ME(DbusSignal, getData,     NULL, ZEND_ACC_PUBLIC)\n-\tPHP_ME(DbusSignal, send,        NULL, ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusSignal, __construct, arginfo_void, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusSignal, matches,     arginfo_void, ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusSignal, getData,     arginfo_void, ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusSignal, send,        arginfo_void, ZEND_ACC_PUBLIC)\n \tPHP_FE_END\n };\n \n const zend_function_entry dbus_funcs_dbus_array[] = {\n-\tPHP_ME(DbusArray, __construct, NULL, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n-\tPHP_ME(DbusArray, getData,     NULL, ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusArray, __construct, arginfo_void, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusArray, getData,     arginfo_void, ZEND_ACC_PUBLIC)\n \tPHP_FE_END\n };\n \n const zend_function_entry dbus_funcs_dbus_dict[] = {\n-\tPHP_ME(DbusDict, __construct, NULL, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n-\tPHP_ME(DbusDict, getData,     NULL, ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusDict, __construct, arginfo_void, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusDict, getData,     arginfo_void, ZEND_ACC_PUBLIC)\n \tPHP_FE_END\n };\n \n #define PHP_DBUS_INT_WRAPPER_DEF(s,t) \\\n \tconst zend_function_entry dbus_funcs_dbus_##s[] = { \\\n-\t\tPHP_ME(Dbus##t, __construct, NULL, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC) \\\n+\t\tPHP_ME(Dbus##t, __construct, arginfo_void, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC) \\\n \t\tPHP_FE_END \\\n \t};\n \n@@ -98,26 +101,26 @@ PHP_DBUS_INT_WRAPPER_DEF(uint64,UInt64);\n PHP_DBUS_INT_WRAPPER_DEF(double, Double);\n \n const zend_function_entry dbus_funcs_dbus_variant[] = {\n-\tPHP_ME(DbusVariant, __construct, NULL, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n-\tPHP_ME(DbusVariant, getData,     NULL, ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusVariant, __construct, arginfo_void, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusVariant, getData,     arginfo_void, ZEND_ACC_PUBLIC)\n \tPHP_FE_END\n };\n \n const zend_function_entry dbus_funcs_dbus_set[] = {\n-\tPHP_ME(DbusSet, __construct, NULL, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n-\tPHP_ME(DbusSet, getData,     NULL, ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusSet, __construct, arginfo_void, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusSet, getData,     arginfo_void, ZEND_ACC_PUBLIC)\n \tPHP_FE_END\n };\n \n const zend_function_entry dbus_funcs_dbus_struct[] = {\n-\tPHP_ME(DbusStruct, __construct, NULL, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n-\tPHP_ME(DbusStruct, getData,     NULL, ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusStruct, __construct, arginfo_void, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusStruct, getData,     arginfo_void, ZEND_ACC_PUBLIC)\n \tPHP_FE_END\n };\n \n const zend_function_entry dbus_funcs_dbus_object_path[] = {\n-\tPHP_ME(DbusObjectPath, __construct, NULL, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n-\tPHP_ME(DbusObjectPath, getData,     NULL, ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusObjectPath, __construct, arginfo_void, ZEND_ACC_CTOR|ZEND_ACC_PUBLIC)\n+\tPHP_ME(DbusObjectPath, getData,     arginfo_void, ZEND_ACC_PUBLIC)\n \tPHP_FE_END\n };\n \n@@ -405,7 +408,11 @@ static void dbus_register_classes(TSRMLS_D)\n \tdbus_ce_dbus = zend_register_internal_class_ex(&ce_dbus, NULL);\n \tmemcpy(&dbus_object_handlers_dbus, zend_get_std_object_handlers(), sizeof(zend_object_handlers));\n \tdbus_object_handlers_dbus.clone_obj = dbus_object_clone_dbus;\n+#if PHP_VERSION_ID < 80000\n \tdbus_object_handlers_dbus.compare_objects = dbus_object_compare_dbus;\n+#else\n+\tdbus_object_handlers_dbus.compare = dbus_object_compare_dbus;\n+#endif\n \n \tzend_declare_class_constant_long(dbus_ce_dbus, \"BYTE\", sizeof(\"BYTE\")-1, DBUS_TYPE_BYTE TSRMLS_CC);\n \tzend_declare_class_constant_long(dbus_ce_dbus, \"BOOLEAN\", sizeof(\"BOOLEAN\")-1, DBUS_TYPE_BOOLEAN TSRMLS_CC);\ndiff --git a/php_dbus.h b/php_dbus.h\nindex 8817544..1f0f551 100644\n--- a/php_dbus.h\n+++ b/php_dbus.h\n@@ -25,6 +25,16 @@\n #include \"config.h\"\n #endif\n \n+#if PHP_VERSION_ID >= 80000\n+#ifndef TSRMLS_D\n+#define TSRMLS_D void\n+#define TSRMLS_DC\n+#define TSRMLS_C\n+#define TSRMLS_CC\n+#define TSRMLS_FETCH()\n+#endif\n+#endif /* PHP_VERSION_ID >= 80000 */\n+\n #include \"Zend/zend_hash.h\"\n \n #define PHP_DBUS_VERSION \"0.2.0\"\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/php-pecl-dbus/0002-Fix-compatibility-with-php8-call_user_function_ex.patch",
    "content": "From 8cf66c4b5dd657ca14552b27a42901db0a5e9280 Mon Sep 17 00:00:00 2001\nFrom: Herve Codina <herve.codina@bootlin.com>\nDate: Mon, 4 Oct 2021 17:13:45 +0200\nSubject: [PATCH] Fix compatibility with php8 - call_user_function_ex\n\nThis patch fixes compatibility with php8 replacing\ncall_user_function_ex by call_user_function.\n\nUpstream: https://github.com/derickr/pecl-dbus/pull/8\nSigned-off-by: Herve Codina <herve.codina@bootlin.com>\n---\n dbus.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/dbus.c b/dbus.c\nindex a98e2ea..6fa9897 100644\n--- a/dbus.c\n+++ b/dbus.c\n@@ -1015,8 +1015,8 @@ php_dbus_do_method_call(php_dbus_obj *dbus,\n \t\tmethod_args = safe_emalloc(sizeof(zval *), num_elems, 0);\n \t}\n \n-\tif (call_user_function_ex(EG(function_table), object, &callback, &retval,\n-\t\t\t\t              num_elems, method_args, 0, NULL) == SUCCESS) {\n+\tif (call_user_function(EG(function_table), object, &callback, &retval,\n+\t\t\t\t              num_elems, method_args) == SUCCESS) {\n \t\tif (!Z_ISUNDEF(retval)) {\n \t\t\treply = dbus_message_new_method_return(msg);\n \t\t\tphp_dbus_append_parameters(reply, &retval, NULL,\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/php-pecl-dbus/Config.in",
    "content": "config BR2_PACKAGE_PHP_PECL_DBUS\n\tbool \"php-pecl-dbus\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus\n\tdepends on BR2_USE_MMU # dbus\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_PHP_EXT_LIBXML2 # Runtime dependency\n\thelp\n\t  PHP extension for interaction with D-Bus busses.\n\n\t  https://github.com/derickr/pecl-dbus\n\ncomment \"php-pecl-dbus needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/php-pecl-dbus/php-pecl-dbus.hash",
    "content": "# Locally calculated:\nsha256 c48761c645c6fa42b57af0e65d893217dc69bcd8d879ace74d6abbf1c5f73a8f  php-pecl-dbus-315d17558c7614d02e923d898231e51c86a25789.tar.gz\nsha256 ecc8b74820c32fb82ddee80446205408585d75d1632ac959fb3cdf8eaf3877b5  LICENSE\n"
  },
  {
    "path": "package/php-pecl-dbus/php-pecl-dbus.mk",
    "content": "################################################################################\n#\n# php-pecl-dbus\n#\n################################################################################\n\nPHP_PECL_DBUS_VERSION = 315d17558c7614d02e923d898231e51c86a25789\nPHP_PECL_DBUS_SITE = $(call github,derickr,pecl-dbus,$(PHP_PECL_DBUS_VERSION))\nPHP_PECL_DBUS_LICENSE = PHP-3.01\nPHP_PECL_DBUS_LICENSE_FILES = LICENSE\nPHP_PECL_DBUS_DEPENDENCIES = php dbus libxml2 host-autoconf host-pkgconf\n\nPHP_PECL_DBUS_CONF_OPTS = \\\n\t--with-php-config=$(STAGING_DIR)/usr/bin/php-config\n\ndefine PHP_PECL_DBUS_PHPIZE\n\t(cd $(@D); \\\n\t\tPHP_AUTOCONF=$(HOST_DIR)/usr/bin/autoconf \\\n\t\tPHP_AUTOHEADER=$(HOST_DIR)/usr/bin/autoheader \\\n\t\t$(STAGING_DIR)/usr/bin/phpize)\nendef\nPHP_PECL_DBUS_PRE_CONFIGURE_HOOKS += PHP_PECL_DBUS_PHPIZE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/php-ssh2/Config.in",
    "content": "config BR2_PACKAGE_PHP_SSH2\n\tbool \"php-ssh2\"\n\tselect BR2_PACKAGE_LIBSSH2\n\thelp\n\t  PHP bindings for the libssh2 library.\n\n\t  http://pecl.php.net/package/ssh2\n"
  },
  {
    "path": "package/php-ssh2/php-ssh2.hash",
    "content": "# Locally calculated\nsha256  9093a1f8d24dc65836027b0e239c50de8d5eaebf8396bc3331fdd38c5d69afd9  ssh2-1.3.1.tgz\nsha256  ac7c56f1e416ce6e60abcf26269395128bc9e5a2e4f3293e5dcc124aac606508  LICENSE\n"
  },
  {
    "path": "package/php-ssh2/php-ssh2.mk",
    "content": "################################################################################\n#\n# php-ssh2\n#\n################################################################################\n\nPHP_SSH2_VERSION = 1.3.1\nPHP_SSH2_SOURCE = ssh2-$(PHP_SSH2_VERSION).tgz\nPHP_SSH2_SITE = https://pecl.php.net/get\nPHP_SSH2_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \\\n\t--with-ssh2=$(STAGING_DIR)/usr\n# phpize does the autoconf magic\nPHP_SSH2_DEPENDENCIES = libssh2 php host-autoconf\nPHP_SSH2_LICENSE = PHP-3.01\nPHP_SSH2_LICENSE_FILES = LICENSE\n\ndefine PHP_SSH2_PHPIZE\n\t(cd $(@D); \\\n\t\tPHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \\\n\t\tPHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \\\n\t\t$(STAGING_DIR)/usr/bin/phpize)\nendef\n\nPHP_SSH2_PRE_CONFIGURE_HOOKS += PHP_SSH2_PHPIZE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/php-xdebug/Config.in",
    "content": "config BR2_PACKAGE_PHP_XDEBUG\n\tbool \"php-xdebug\"\n\thelp\n\t  Extension for PHP to assist with debugging and development.\n\n\t  http://xdebug.org\n"
  },
  {
    "path": "package/php-xdebug/php-xdebug.hash",
    "content": "# Locally computed\nsha256  7e4f28fc65c8b535de43b6d2ec57429476a6de1d53c4d440a9108ae8d28e01f4  php-xdebug-3.0.4.tar.gz\nsha256  ef479ee1a3da3f933e0d046ca8cd0c14601f29b2c0c41cc60c9388546a4e0272  LICENSE\n"
  },
  {
    "path": "package/php-xdebug/php-xdebug.mk",
    "content": "################################################################################\n#\n# php-xdebug\n#\n################################################################################\n\nPHP_XDEBUG_VERSION = 3.0.4\nPHP_XDEBUG_SITE = $(call github,xdebug,xdebug,$(PHP_XDEBUG_VERSION))\nPHP_XDEBUG_INSTALL_STAGING = YES\nPHP_XDEBUG_LICENSE = Xdebug License (PHP-3.0-like)\nPHP_XDEBUG_LICENSE_FILES = LICENSE\n# phpize does the autoconf magic\nPHP_XDEBUG_DEPENDENCIES = php host-autoconf\nPHP_XDEBUG_CONF_OPTS = \\\n\t--enable-xdebug \\\n\t--with-php-config=$(STAGING_DIR)/usr/bin/php-config \\\n\t--with-xdebug=$(STAGING_DIR)/usr\n\ndefine PHP_XDEBUG_PHPIZE\n\t(cd $(@D); \\\n\t\tPHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \\\n\t\tPHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \\\n\t\t$(STAGING_DIR)/usr/bin/phpize)\nendef\n\nPHP_XDEBUG_PRE_CONFIGURE_HOOKS += PHP_XDEBUG_PHPIZE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/php-yaml/Config.in",
    "content": "config BR2_PACKAGE_PHP_YAML\n\tbool \"php-yaml\"\n\tselect BR2_PACKAGE_LIBYAML\n\thelp\n\t  PHP YAML-1.1 parser and emitter.\n\n\t  http://pecl.php.net/package/yaml\n"
  },
  {
    "path": "package/php-yaml/php-yaml.hash",
    "content": "# Locally calculated\nsha256  e17ad04e752e25fd099bddd2df9d26dfef183c8d00c4179bc9d7a2e1c97d7819  yaml-2.2.1.tgz\nsha256  68d9700294396c72089bfc7bf38a5b3654a53ae415f3bd37768848c14e86f338  LICENSE\n"
  },
  {
    "path": "package/php-yaml/php-yaml.mk",
    "content": "################################################################################\n#\n# php-yaml\n#\n################################################################################\n\nPHP_YAML_VERSION = 2.2.1\nPHP_YAML_SOURCE = yaml-$(PHP_YAML_VERSION).tgz\nPHP_YAML_SITE = https://pecl.php.net/get\nPHP_YAML_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \\\n\t--with-yaml=$(STAGING_DIR)/usr\n# phpize does the autoconf magic\nPHP_YAML_DEPENDENCIES = libyaml php host-autoconf\nPHP_YAML_LICENSE = MIT\nPHP_YAML_LICENSE_FILES = LICENSE\n\ndefine PHP_YAML_PHPIZE\n\t(cd $(@D); \\\n\t\tPHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \\\n\t\tPHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \\\n\t\t$(STAGING_DIR)/usr/bin/phpize)\nendef\n\nPHP_YAML_PRE_CONFIGURE_HOOKS += PHP_YAML_PHPIZE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/php-zmq/0001-updates-for-php7.4-and-php8.0.patch",
    "content": "From 4ad1b33e095924bd4ccf79295999dd54edaaac37 Mon Sep 17 00:00:00 2001\nFrom: Luca Boccassi <luca.boccassi@gmail.com>\nDate: Thu, 5 Mar 2020 22:51:22 +0000\nSubject: [PATCH] updates for php7.4 and php8.0 (#212)\n\nFrom upstream commit: 4ad1b33e095924bd4ccf79295999dd54edaaac37\n\n* travisci: enabled php7.4 and php8.0\n\n* updates for php7.4 and php8.0\n\n- travisci enabled php7.4 and php8.0\n- removed now unused references to TSRMLS_*\n  These flags were mostly already removed from the\n  php7 codebase but some instances were still present.\n  With php8 these produce compile errors.\n- fix tests for php8 and php7.4\n  New TypeErrors now get handled correctly in the test cases.\n- fix memory corruption in zmq.c\n  The conflicting line causes memory leaks on other php\n  version and causes a segfault on php8 and php7.4\n  The error was provocable with test case\n  021-callbackwarning.phpt. After removing of the line\n  valgrind showed no memory leak, so this line was probably\n  redundant. Also if you compare with zmqsocket constructor\n  this line is also not present.\n\nSigned-off-by: Luca Boccassi <luca.boccassi@gmail.com>\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n php_zmq_private.h                  |  4 ++--\n tests/016-callbackinvalidargs.phpt |  4 ++++\n tests/022-highwatermark.phpt       |  6 +++---\n tests/bug_gh_43.phpt               | 25 +++++++++++++++++--------\n zmq.c                              |  1 -\n zmq_device.c                       | 14 +++++++-------\n zmq_sockopt.c                      |  2 +-\n 7 files changed, 34 insertions(+), 22 deletions(-)\n\ndiff --git a/php_zmq_private.h b/php_zmq_private.h\nindex 49630e9..2e5cd3b 100644\n--- a/php_zmq_private.h\n+++ b/php_zmq_private.h\n@@ -156,9 +156,9 @@ typedef struct _php_zmq_device_object  {\n \n #define PHP_ZMQ_ERROR_HANDLING_INIT() zend_error_handling error_handling;\n \n-#define PHP_ZMQ_ERROR_HANDLING_THROW() zend_replace_error_handling(EH_THROW, php_zmq_socket_exception_sc_entry, &error_handling TSRMLS_CC);\n+#define PHP_ZMQ_ERROR_HANDLING_THROW() zend_replace_error_handling(EH_THROW, php_zmq_socket_exception_sc_entry, &error_handling);\n \n-#define PHP_ZMQ_ERROR_HANDLING_RESTORE() zend_restore_error_handling(&error_handling TSRMLS_CC);\n+#define PHP_ZMQ_ERROR_HANDLING_RESTORE() zend_restore_error_handling(&error_handling);\n \n /* Compatibility macros between zeromq 2.x and 3.x */\n #ifndef ZMQ_DONTWAIT\ndiff --git a/tests/016-callbackinvalidargs.phpt b/tests/016-callbackinvalidargs.phpt\nindex a940e41..6bd0e75 100644\n--- a/tests/016-callbackinvalidargs.phpt\n+++ b/tests/016-callbackinvalidargs.phpt\n@@ -10,6 +10,8 @@ try {\n \techo \"Fail\\n\";\n } catch (ZMQSocketException $e) {\n \techo \"OK\\n\";\n+} catch (TypeError $e) {\n+ \techo \"OK\\n\"; // on PHP8\n }\n \n try {\n@@ -18,6 +20,8 @@ try {\n \techo \"Fail\\n\";\n } catch (ZMQSocketException $e) {\n \techo \"OK\\n\";\n+} catch (TypeError $e) {\n+ \techo \"OK\\n\"; // on PHP8\n }\n \n --EXPECT--\ndiff --git a/tests/022-highwatermark.phpt b/tests/022-highwatermark.phpt\nindex 84be509..c1ff703 100644\n--- a/tests/022-highwatermark.phpt\n+++ b/tests/022-highwatermark.phpt\n@@ -1,11 +1,11 @@\n --TEST--\n Test that high-watermark works\n --SKIPIF--\n-<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>\n-\n+<?php\n+require_once(dirname(__FILE__) . '/skipif.inc');\n if (!defined('ZMQ::SOCKOPT_LINGER'))\n     die (\"Skip Not compiled against new enough version\");\n-\n+?>\n --FILE--\n <?php\n \ndiff --git a/tests/bug_gh_43.phpt b/tests/bug_gh_43.phpt\nindex bdc274a..923d074 100644\n--- a/tests/bug_gh_43.phpt\n+++ b/tests/bug_gh_43.phpt\n@@ -7,16 +7,25 @@ Test for Github issue #43\n --FILE--\n <?php\n \n+error_reporting(0);\n+\n $context = new ZMQContext (1, false);\n \n $sock1 = new ZMQSocket ($context, ZMQ::SOCKET_PUB);\n $sock2 = new ZMQSocket ($context, ZMQ::SOCKET_SUB);\n \n-$device = new ZMQDevice ($sock1, $sock1, $sock1, $sock1);\n-\n-echo \"OK\";\n-?>\n-\n---EXPECTF--\n-Warning: ZMQDevice::__construct() expects at most 3 parameters, 4 given in %s/bug_gh_43.php on line %d\n-OK\n\\ No newline at end of file\n+try {\n+    $device = new ZMQDevice ($sock1, $sock1, $sock1, $sock1);\n+    // on PHP7 and lower\n+    $lastError = error_get_last();\n+    if(strpos($lastError['message'], 'ZMQDevice::__construct() expects at most 3 parameters, 4 given') !== false)\n+     \techo \"OK\\n\";\n+    else{\n+        echo \"FAIL\\n\";\n+        print_r($lastError);\n+    }\n+}catch(TypeError $e){\n+ \techo \"OK\\n\"; // on PHP8\n+}\n+--EXPECT--\n+OK\ndiff --git a/zmq.c b/zmq.c\nindex 942e69b..66196ea 100644\n--- a/zmq.c\n+++ b/zmq.c\n@@ -687,7 +687,6 @@ PHP_METHOD(zmqcontext, getsocket)\n \t\t\tif (!php_zmq_connect_callback(return_value, &fci, &fci_cache, persistent_id)) {\n \t\t\t\tphp_zmq_socket_destroy(socket);\n \t\t\t\tinterns->socket = NULL;\n-\t\t\t\tzval_dtor(return_value);\n \t\t\t\treturn;\n \t\t\t}\n \t\t}\ndiff --git a/zmq_device.c b/zmq_device.c\nindex c7415c1..534f966 100644\n--- a/zmq_device.c\n+++ b/zmq_device.c\n@@ -41,7 +41,7 @@\n ZEND_EXTERN_MODULE_GLOBALS(php_zmq)\n \n static\n-zend_bool s_invoke_device_cb (php_zmq_device_cb_t *cb, uint64_t current_ts TSRMLS_DC)\n+zend_bool s_invoke_device_cb (php_zmq_device_cb_t *cb, uint64_t current_ts)\n {\n \tzend_bool retval = 0;\n \tzval params[1];\n@@ -59,7 +59,7 @@ zend_bool s_invoke_device_cb (php_zmq_device_cb_t *cb, uint64_t current_ts TSRML\n \tif (zend_call_function(&(cb->fci), &(cb->fci_cache)) == FAILURE) {\n \t\tif (!EG(exception)) {\n \t\t\tchar *func_name = php_zmq_printable_func(&cb->fci, &cb->fci_cache);\n-\t\t\tzend_throw_exception_ex(php_zmq_device_exception_sc_entry_get (), 0 TSRMLS_CC, \"Failed to invoke device callback %s()\", func_name);\n+\t\t\tzend_throw_exception_ex(php_zmq_device_exception_sc_entry_get (), 0, \"Failed to invoke device callback %s()\", func_name);\n \t\t\tzval_ptr_dtor(&params[0]);\n \t\t\tefree(func_name);\n \t\t}\n@@ -94,7 +94,7 @@ int s_capture_message (void *socket, zmq_msg_t *msg, int more)\n }\n \n static\n-int s_calculate_timeout (php_zmq_device_object *intern TSRMLS_DC)\n+int s_calculate_timeout (php_zmq_device_object *intern)\n {\n \tint timeout = -1;\n \tuint64_t current = php_zmq_clock (ZMQ_G (clock_ctx));\n@@ -131,7 +131,7 @@ int s_calculate_timeout (php_zmq_device_object *intern TSRMLS_DC)\n }\n \n \n-zend_bool php_zmq_device (php_zmq_device_object *intern TSRMLS_DC)\n+zend_bool php_zmq_device (php_zmq_device_object *intern)\n {\n \tint errno_;\n \tuint64_t last_message_received;\n@@ -186,7 +186,7 @@ zend_bool php_zmq_device (php_zmq_device_object *intern TSRMLS_DC)\n \t\tuint64_t current_ts = 0;\n \n \t\t/* Calculate poll_timeout based on idle / timer cb */\n-\t\tint timeout = s_calculate_timeout (intern TSRMLS_CC);\n+\t\tint timeout = s_calculate_timeout (intern);\n \n \t\trc = zmq_poll(&items [0], 2, timeout);\n \t\tif (rc < 0) {\n@@ -205,7 +205,7 @@ zend_bool php_zmq_device (php_zmq_device_object *intern TSRMLS_DC)\n \t\tif (intern->timer_cb.initialized && intern->timer_cb.timeout > 0) {\n \t\t\t/* Is it timer to call the timer ? */\n \t\t\tif (intern->timer_cb.scheduled_at <= current_ts) {\n-\t\t\t\tif (!s_invoke_device_cb (&intern->timer_cb, current_ts TSRMLS_CC)) {\n+\t\t\t\tif (!s_invoke_device_cb (&intern->timer_cb, current_ts)) {\n \t\t\t\t\tzmq_msg_close (&msg);\n \t\t\t\t\treturn 1;\n \t\t\t\t}\n@@ -217,7 +217,7 @@ zend_bool php_zmq_device (php_zmq_device_object *intern TSRMLS_DC)\n \t\t\t/* Is it timer to call the idle callback ? */\n \t\t\tif ((current_ts - last_message_received) >= intern->idle_cb.timeout &&\n \t\t\t\tintern->idle_cb.scheduled_at <= current_ts) {\n-\t\t\t\tif (!s_invoke_device_cb (&intern->idle_cb, current_ts TSRMLS_CC)) {\n+\t\t\t\tif (!s_invoke_device_cb (&intern->idle_cb, current_ts)) {\n \t\t\t\t\tzmq_msg_close (&msg);\n \t\t\t\t\treturn 1;\n \t\t\t\t}\ndiff --git a/zmq_sockopt.c b/zmq_sockopt.c\nindex 1357032..14b59f0 100644\n--- a/zmq_sockopt.c\n+++ b/zmq_sockopt.c\n@@ -2036,7 +2036,7 @@ PHP_METHOD(zmqsocket, setsockopt)\n     long key;\n     zval *zv;\n \n-    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, \"lz/\", &key, &zv) == FAILURE) {\n+    if (zend_parse_parameters(ZEND_NUM_ARGS(), \"lz/\", &key, &zv) == FAILURE) {\n         return;\n     }\n \n-- \n2.31.1\n\n"
  },
  {
    "path": "package/php-zmq/0002-fix-for-php-7.3.patch",
    "content": "From e0db82c3286da81fa8945894dd10125a528299e4 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Gr=C3=A9gory=20PLANCHAT?=\n <gplanchat@users.noreply.github.com>\nDate: Wed, 8 Jul 2020 10:09:38 +0200\nSubject: [PATCH] Fix for PHP 7.3 (#215)\n\nCo-authored-by: Remi Collet <remi@remirepo.net>\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n zmq.c | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/zmq.c b/zmq.c\nindex 66196ea..879704f 100644\n--- a/zmq.c\n+++ b/zmq.c\n@@ -235,7 +235,11 @@ php_zmq_context *php_zmq_context_get(zend_long io_threads, zend_bool is_persiste\n \t\tle.type = php_zmq_context_list_entry();\n \t\tle.ptr  = context;\n \n+#if PHP_VERSION_ID < 70300\n \t\tGC_REFCOUNT(&le) = 1;\n+#else\n+\t\tGC_SET_REFCOUNT(&le, 1);\n+#endif\n \n \t\t/* plist_key is not a persistent allocated key, thus we use str_update here */\n \t\tif (zend_hash_str_update_mem(&EG(persistent_list), plist_key->val, plist_key->len, &le, sizeof(le)) == NULL) {\n@@ -535,7 +539,11 @@ void php_zmq_socket_store(php_zmq_socket *zmq_sock_p, zend_long type, zend_strin\n \tle.type = php_zmq_socket_list_entry();\n \tle.ptr  = zmq_sock_p;\n \n+#if PHP_VERSION_ID < 70300\n \tGC_REFCOUNT(&le) = 1;\n+#else\n+\tGC_SET_REFCOUNT(&le, 1);\n+#endif\n \n \tplist_key = php_zmq_socket_plist_key(type, persistent_id, use_shared_ctx);\n \n-- \n2.31.1\n\n"
  },
  {
    "path": "package/php-zmq/0003-fix-for-php-8.0.0beta2.patch",
    "content": "From f0993f1fe973c4d359323ad1897ed7aa74f7e015 Mon Sep 17 00:00:00 2001\nFrom: Remi Collet <remi@remirepo.net>\nDate: Mon, 24 Aug 2020 15:55:54 +0200\nSubject: [PATCH] fix for PHP 8.0.0beta2\n\nSigned-off-by: Remi Collet <remi@remirepo.net>\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n zmq.c        | 2 ++\n zmq_device.c | 2 ++\n 2 files changed, 4 insertions(+)\n\ndiff --git a/zmq.c b/zmq.c\nindex 89902f9..bd2401d 100644\n--- a/zmq.c\n+++ b/zmq.c\n@@ -621,7 +621,9 @@ zend_bool php_zmq_connect_callback(zval *socket, zend_fcall_info *fci, zend_fcal\n \tfci->params         = params;\n \tfci->param_count    = 2;\n \tfci->retval         = &retval;\n+#if PHP_VERSION_ID < 80000\n \tfci->no_separation  = 1;\n+#endif\n \n \tif (zend_call_function(fci, fci_cache) == FAILURE) {\n \t\tif (!EG(exception)) {\ndiff --git a/zmq_device.c b/zmq_device.c\nindex 534f966..1c6aa3e 100644\n--- a/zmq_device.c\n+++ b/zmq_device.c\n@@ -53,7 +53,9 @@ zend_bool s_invoke_device_cb (php_zmq_device_cb_t *cb, uint64_t current_ts)\n \tcb->fci.param_count = 1;\n \n \t/* Call the cb */\n+#if PHP_VERSION_ID < 80000\n \tcb->fci.no_separation  = 1;\n+#endif\n \tcb->fci.retval         = &fc_retval;\n \n \tif (zend_call_function(&(cb->fci), &(cb->fci_cache)) == FAILURE) {\n"
  },
  {
    "path": "package/php-zmq/Config.in",
    "content": "comment \"php-zmq needs a toolchain w/ C++, threads\"\n\tdepends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS)\n\nconfig BR2_PACKAGE_PHP_ZMQ\n\tbool \"php-zmq\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_ZEROMQ\n\thelp\n\t  ZeroMQ messaging bindings for PHP\n\n\t  http://pecl.php.net/package/zmq\n"
  },
  {
    "path": "package/php-zmq/php-zmq.hash",
    "content": "# Locally calculated\nsha256  c492375818bd51b355352798fb94f04d6828c6aeda41ba813849624af74144ce  zmq-1.1.3.tgz\nsha256  0302303063d3612fc240032aeb6d70e9b7509fc17a4a9edf00eba091ed597514  LICENSE\n"
  },
  {
    "path": "package/php-zmq/php-zmq.mk",
    "content": "################################################################################\n#\n# php-zmq\n#\n################################################################################\n\nPHP_ZMQ_VERSION = 1.1.3\nPHP_ZMQ_SOURCE = zmq-$(PHP_ZMQ_VERSION).tgz\nPHP_ZMQ_SITE = https://pecl.php.net/get\n# phpize does the autoconf magic\nPHP_ZMQ_DEPENDENCIES = php zeromq host-autoconf host-pkgconf\nPHP_ZMQ_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config\nPHP_ZMQ_LICENSE = BSD-3-Clause\nPHP_ZMQ_LICENSE_FILES = LICENSE\n\ndefine PHP_ZMQ_PHPIZE\n\t(cd $(@D); \\\n\t\tPHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \\\n\t\tPHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \\\n\t\t$(STAGING_DIR)/usr/bin/phpize)\nendef\n\nPHP_ZMQ_PRE_CONFIGURE_HOOKS += PHP_ZMQ_PHPIZE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/physfs/Config.in",
    "content": "config BR2_PACKAGE_PHYSFS\n\tbool \"physfs\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  PhysicsFS; a portable, flexible file i/o abstraction.\n\n\t  http://icculus.org/physfs\n\ncomment \"physfs needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/physfs/physfs.hash",
    "content": "# Locally calculated\nsha256 304df76206d633df5360e738b138c94e82ccf086e50ba84f456d3f8432f9f863  physfs-3.0.2.tar.bz2\nsha256 d80c0b09a1c98c61667ea044eefa2fd98fb70bd5fe12c49ff52b1fc2289a6583  LICENSE.txt\n"
  },
  {
    "path": "package/physfs/physfs.mk",
    "content": "################################################################################\n#\n# physfs\n#\n################################################################################\n\nPHYSFS_VERSION = 3.0.2\nPHYSFS_SOURCE = physfs-$(PHYSFS_VERSION).tar.bz2\nPHYSFS_SITE = https://icculus.org/physfs/downloads\n\nPHYSFS_LICENSE = Zlib\nPHYSFS_LICENSE_FILES = LICENSE.txt\n\nPHYSFS_INSTALL_STAGING = YES\n\nPHYSFS_CONF_OPTS = -DPHYSFS_BUILD_TEST=OFF\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nPHYSFS_CONF_OPTS += -DPHYSFS_BUILD_SHARED=ON\nelse\nPHYSFS_CONF_OPTS += -DPHYSFS_BUILD_SHARED=OFF\nendif\n\nifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nPHYSFS_CONF_OPTS += -DPHYSFS_BUILD_STATIC=ON\nelse\nPHYSFS_CONF_OPTS += -DPHYSFS_BUILD_STATIC=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/phytool/Config.in",
    "content": "config BR2_PACKAGE_PHYTOOL\n\tbool \"phytool\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 # linux/mdio.h\n\thelp\n\t  Linux MDIO register access utility.\n\n\t  https://github.com/wkz/phytool\n\ncomment \"phytool needs a toolchain w/ headers >= 3.7\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7\n"
  },
  {
    "path": "package/phytool/phytool.hash",
    "content": "# md5 from https://github.com/wkz/phytool/releases/download/v2/phytool-2.tar.xz.md5\n# sha256 locally computed:\nmd5  972982f8e5f7237cbccfc6d275da7348  phytool-2.tar.xz\nsha256  9901a14e8c6af02b7333c60b21ff81f50620e8326d54827185e5617ff9b11d21  phytool-2.tar.xz\nsha256  f9c375a1be4a41f7b70301dd83c91cb89e41567478859b77eef375a52d782505  LICENSE\n"
  },
  {
    "path": "package/phytool/phytool.mk",
    "content": "################################################################################\n#\n# phytool\n#\n################################################################################\n\nPHYTOOL_VERSION = 2\nPHYTOOL_SOURCE = phytool-$(PHYTOOL_VERSION).tar.xz\nPHYTOOL_SITE = https://github.com/wkz/phytool/releases/download/v$(PHYTOOL_VERSION)\nPHYTOOL_LICENSE = GPL-2.0+\nPHYTOOL_LICENSE_FILES = LICENSE\n\ndefine PHYTOOL_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tLDLIBS=\"$(TARGET_LDFLAGS)\"\nendef\n\ndefine PHYTOOL_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tDESTDIR=\"$(TARGET_DIR)\" \\\n\t\tPREFIX=\"usr\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/picocom/0001-Compile-with-libc-s-without-cispeed-cospeed.patch",
    "content": "From 30c712c5f14306460c44bea70e24419db9d44f8c Mon Sep 17 00:00:00 2001\nFrom: Nick Patavalis <npat@efault.net>\nDate: Thu, 12 Apr 2018 15:16:04 +0300\nSubject: [PATCH] Compile with libc's without cispeed / cospeed\n\nSome libc implementations (e.g. musl) do not define the cispeed and\ncospeed struct termios fields. So we have to check the\n_HAVE_STRUCT_TERMIOS_C_ISPEED and _HAVE_STRUCT_TERMIOS_C_OSPEED\nmacros. If not defined, we disable custom baudrate support.\n\n[baruch: backported from upstream master to 3.1]\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: commit 1acf1ddabaf3\n\n custbaud.h | 10 +++++++++-\n 1 file changed, 9 insertions(+), 1 deletion(-)\n\ndiff --git a/custbaud.h b/custbaud.h\nindex 48151a4a4e84..ae4ae8daf49e 100644\n--- a/custbaud.h\n+++ b/custbaud.h\n@@ -26,6 +26,8 @@\n #ifndef CUSTBAUD_H\n #define CUSTBAUD_H\n \n+#include <termios.h>\n+\n #ifndef NO_CUSTOM_BAUD\n \n #if defined (__linux__)\n@@ -33,7 +35,13 @@\n /* Enable by-default for kernels > 2.6.0 on x86 and x86_64 only */\n #include <linux/version.h>\n #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,0)\n-#if defined (__i386__) || defined (__x86_64__) || defined (USE_CUSTOM_BAUD)\n+/* Some libc implementations (e.g. musl) do not define the cispeed and\n+   cospeed struct termios fields. We do not support custom baudrates\n+   on them. */\n+#if ( (defined (__i386__) || defined (__x86_64__))  \\\n+      && defined (_HAVE_STRUCT_TERMIOS_C_ISPEED)    \\\n+      && defined (_HAVE_STRUCT_TERMIOS_C_OSPEED) )  \\\n+    || defined (USE_CUSTOM_BAUD)\n #ifndef USE_CUSTOM_BAUD\n #define USE_CUSTOM_BAUD\n #endif\n-- \n2.16.3\n\n"
  },
  {
    "path": "package/picocom/Config.in",
    "content": "config BR2_PACKAGE_PICOCOM\n\tbool \"picocom\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  picocom is a minimal dumb-terminal emulation program. It is,\n\t  in principle, very much like minicom, only it's pico instead\n\t  of mini!\n\n\t  https://github.com/npat-efault/picocom/\n"
  },
  {
    "path": "package/picocom/picocom.hash",
    "content": "# Locally calculated\nsha256 e6761ca932ffc6d09bd6b11ff018bdaf70b287ce518b3282d29e0270e88420bb  picocom-3.1.tar.gz\nsha256 9273c6b2c55be95f0f0df292d87e8900e5bfdf5b510a6ea09e80306cf45c10f6  LICENSE.txt\n"
  },
  {
    "path": "package/picocom/picocom.mk",
    "content": "################################################################################\n#\n# picocom\n#\n################################################################################\n\nPICOCOM_VERSION = 3.1\nPICOCOM_SITE = $(call github,npat-efault,picocom,$(PICOCOM_VERSION))\nPICOCOM_LICENSE = GPL-2.0+\nPICOCOM_LICENSE_FILES = LICENSE.txt\nPICOCOM_CPE_ID_VENDOR = picocom_project\n\ndefine PICOCOM_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine PICOCOM_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/picocom $(TARGET_DIR)/usr/bin/picocom\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/pifmrds/0001-Makefile-cross-compile-friendly.patch",
    "content": "Makefile: make it cross-compile (and Buildroot) friendly.\n\nThe current Makefile makes heavy assumptions that it is doing native\ncompilation on the RPi, as it checks that `uname -m` is an ARM machine.\n\nThis is wrong in the cross-compilation case.\n\nRemove the conditional altogether, and do not override the CFLAGS\nas passed in the environment (Buildroot passes proper CFLAGS).\n\n[intial patch by: Eric Limpens <limpens@gmail.com>]\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1.orig/src/Makefile pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1/src/Makefile\n--- pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1.orig/src/Makefile\t2014-05-04 18:21:40.000000000 +0200\n+++ pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1/src/Makefile\t2014-06-21 16:38:31.971804343 +0200\n@@ -1,20 +1,8 @@\n CC = gcc\n-STD_CFLAGS = -Wall -std=gnu99 -c -g -O3\n \n-# Enable ARM-specific options only on ARM, and compilation of the app only on ARM\n-UNAME := $(shell uname -m)\n-\n-ifeq ($(UNAME), armv6l)\n-\tCFLAGS = $(STD_CFLAGS) -march=armv6 -mtune=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp -ffast-math\n-\n app: rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o\n \t$(CC) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lm -lsndfile\n \n-else\n-\tCFLAGS = $(STD_CFLAGS)\n-endif\n-\n-\n rds_wav: rds.o waveforms.o rds_wav.o fm_mpx.o\n \t$(CC) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lm -lsndfile\n \n"
  },
  {
    "path": "package/pifmrds/0002-Makefile-use-LDFLAGS.patch",
    "content": "Makefile: use LDFLAGS when linking\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1.orig/src/Makefile pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1/src/Makefile\n--- pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1.orig/src/Makefile\t2014-06-21 16:46:49.101118754 +0200\n+++ pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1/src/Makefile\t2014-06-21 16:47:47.801745683 +0200\n@@ -1,10 +1,10 @@\n CC = gcc\n \n app: rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o\n-\t$(CC) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lm -lsndfile\n+\t$(CC) $(LDFLAGS) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lm -lsndfile\n \n rds_wav: rds.o waveforms.o rds_wav.o fm_mpx.o\n-\t$(CC) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lm -lsndfile\n+\t$(CC) $(LDFLAGS) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lm -lsndfile\n \n rds.o: rds.c waveforms.h\n \t$(CC) $(CFLAGS) rds.c\n"
  },
  {
    "path": "package/pifmrds/0003-Makefile-fix-static-link.patch",
    "content": "Makefile: Fix static linking\n\nSince libsndfile uses funtions from libm, the -lm should be specified\nafter libsndfile for static linking.\n\nSigned-off-by: \"Eric Limpens\" <Limpens@gmail.com>\n[Fabrice: add $(SNDFILE_LIBS) to pass all dependencies from pkg-config]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -purN pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2.orig/src/Makefile pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2/src/Makefile\n--- pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2.orig/src/Makefile\t2016-02-26 08:06:43.102962592 +0100\n+++ pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2/src/Makefile\t2016-02-26 08:27:11.069148203 +0100\n@@ -1,10 +1,10 @@\n CC = gcc\n \n app: rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o\n-\t$(CC) $(LDFLAGS) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lm -lsndfile\n+\t$(CC) $(LDFLAGS) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o $(SNDFILE_LIBS) -lm\n \n rds_wav: rds.o waveforms.o rds_wav.o fm_mpx.o\n-\t$(CC) $(LDFLAGS) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lm -lsndfile\n+\t$(CC) $(LDFLAGS) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o $(SNDFILE_LIBS) -lm\n \n rds.o: rds.c waveforms.h\n \t$(CC) $(CFLAGS) rds.c\n"
  },
  {
    "path": "package/pifmrds/Config.in",
    "content": "config BR2_PACKAGE_PIFMRDS\n\tbool \"pifmrds\"\n\tdepends on BR2_arm\n\tselect BR2_PACKAGE_LIBSNDFILE\n\thelp\n\t  pifmrds, FM-RDS transmitter using the Raspberry Pi's PWM\n\n\t  https://github.com/ChristopheJacquet/PiFmRds\n"
  },
  {
    "path": "package/pifmrds/pifmrds.hash",
    "content": "# Locally calculated\nsha256  2afc9f3c9fc206ba32865d7dd77f3a97d7d86dcfc9b44eeb5665e8fddaafcf44  pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2.tar.gz\nsha256  fe3eea6c599e23a00c08c5f5cb2320c30adc8f8687db5fcec9b79a662c53ff6b  LICENSE\n"
  },
  {
    "path": "package/pifmrds/pifmrds.mk",
    "content": "################################################################################\n#\n# pifmrds\n#\n################################################################################\n\nPIFMRDS_VERSION = 0bf57f9ce0d954365a38d8af8e7be6f28521c3f2\nPIFMRDS_SITE = $(call github,ChristopheJacquet,PiFmRds,$(PIFMRDS_VERSION))\nPIFMRDS_DEPENDENCIES = host-pkgconf libsndfile\nPIFMRDS_LICENSE = GPL-3.0+\nPIFMRDS_LICENSE_FILES = LICENSE\n\ndefine PIFMRDS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src CC=\"$(TARGET_CC)\" LDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -std=gnu99 -ffast-math -c\" \\\n\t\tSNDFILE_LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs sndfile`\" \\\n\t\tapp rds_wav\nendef\n\ndefine PIFMRDS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/src/pi_fm_rds $(TARGET_DIR)/usr/bin/pi_fm_rds\n\t$(INSTALL) -D -m 0755 $(@D)/src/rds_wav $(TARGET_DIR)/usr/bin/rds_wav\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/piglit/Config.in",
    "content": "config BR2_PACKAGE_PIGLIT\n\tbool \"piglit\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python3 only script\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_WAFFLE_SUPPORTS_GLX || \\\n\t\tBR2_PACKAGE_WAFFLE_SUPPORTS_WAYLAND || \\\n\t\tBR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL || \\\n\t\tBR2_PACKAGE_WAFFLE_SUPPORTS_GBM\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy\n\tselect BR2_PACKAGE_LIBDRM if BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_LIBXKBCOMMON if BR2_PACKAGE_WAYLAND\n\tselect BR2_PACKAGE_MESA3D_DEMOS # glxinfo\n\tselect BR2_PACKAGE_PYTHON_MAKO\n\tselect BR2_PACKAGE_PYTHON_NUMPY\n\tselect BR2_PACKAGE_PYTHON_SIX\n\tselect BR2_PACKAGE_PYTHON3_BZIP2\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT\n\tselect BR2_PACKAGE_PYTHON3_XZ\n\tselect BR2_PACKAGE_PYTHON3_ZLIB\n\tselect BR2_PACKAGE_UTIL_LINUX # runtime\n\tselect BR2_PACKAGE_UTIL_LINUX_BINARIES # requires real dmesg tool\n\tselect BR2_PACKAGE_WAFFLE # wflinfo, libwaffle-1\n\tselect BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XORGPROTO if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Piglit is an open-source test suite for OpenGL\n\t  implementations.\n\n\t  https://piglit.freedesktop.org\n\ncomment \"piglit needs glibc or musl\"\n\tdepends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)\n"
  },
  {
    "path": "package/piglit/piglit.hash",
    "content": "# Locally calculated\nsha256  ec2a80c49f10761980334f1591be54ee6f365165d7ac637270b4ca15a12ad674  piglit-2affee53f3ad7a96f5b397a2b6d6408af8a374b0-br1.tar.gz\nsha256  dcc398730859aee7cc1d6aa57f526f8d181b47bb3a49830e85b5723d5bc2c3bc  COPYING\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  licences/GPL-2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  licences/GPL-3\nsha256  b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c  licences/LGPL-2\n"
  },
  {
    "path": "package/piglit/piglit.mk",
    "content": "################################################################################\n#\n# piglit\n#\n################################################################################\n\nPIGLIT_VERSION = 2affee53f3ad7a96f5b397a2b6d6408af8a374b0\nPIGLIT_SITE = https://gitlab.freedesktop.org/mesa/piglit.git\nPIGLIT_SITE_METHOD = git\nPIGLIT_LICENSE = MIT (code), \\\n\tLGPL-2.0+ (tests/glslparsertest/glsl2/gst-gl-*), \\\n\tLGPL-2.1+ (some tests), \\\n\tGPL-3.0 (tests/glslparsertest/glsl2/norsetto-*), \\\n\tGPL-2.0+ (tests/glslparsertest/glsl2/xreal-*, some other shaders), \\\n\tBSD-3-Clause (tests/glslparsertest/shaders/*)\nPIGLIT_LICENSE_FILES = COPYING licences/GPL-2 licences/GPL-3 licences/LGPL-2\n\nPIGLIT_DEPENDENCIES = host-pkgconf \\\n\thost-python-mako \\\n\thost-python-numpy \\\n\thost-python-six \\\n\tlibpng \\\n\tpython-mako \\\n\tpython-numpy \\\n\tpython-six \\\n\twaffle \\\n\tzlib\n\nPIGLIT_CONF_OPTS += \\\n\t-DPIGLIT_USE_WAFFLE=ON \\\n\t-DPIGLIT_BUILD_CL_TESTS=OFF \\\n\t-DPIGLIT_BUILD_WGL_TESTS=OFF \\\n\t-DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python3\n\nifeq ($(BR2_PACKAGE_XORG7),y)\n# libxcb for xcb-dri2\nPIGLIT_DEPENDENCIES += \\\n\txlib_libX11 \\\n\txlib_libXext \\\n\txorgproto \\\n\t$(if $(BR2_PACKAGE_LIBXCB),libxcb)\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBGL),y)\nPIGLIT_DEPENDENCIES += libgl libdrm\nPIGLIT_CONF_OPTS += -DPIGLIT_BUILD_GL_TESTS=ON\nelse\nPIGLIT_CONF_OPTS += -DPIGLIT_BUILD_GL_TESTS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XORG7)$(BR2_PACKAGE_HAS_LIBGL),yy)\nPIGLIT_CONF_OPTS += -DPIGLIT_BUILD_GLX_TESTS=ON\nelse\nPIGLIT_CONF_OPTS += -DPIGLIT_BUILD_GLX_TESTS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGLES),yy)\nPIGLIT_DEPENDENCIES += libegl\nPIGLIT_CONF_OPTS += -DPIGLIT_BUILD_GLES1_TESTS=ON \\\n\t-DPIGLIT_BUILD_GLES2_TESTS=ON \\\n\t-DPIGLIT_BUILD_GLES3_TESTS=ON\nelse\nPIGLIT_CONF_OPTS += -DPIGLIT_BUILD_GLES1_TESTS=OFF \\\n\t-DPIGLIT_BUILD_GLES2_TESTS=OFF \\\n\t-DPIGLIT_BUILD_GLES3_TESTS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_WAYLAND),y)\nPIGLIT_DEPENDENCIES += wayland libxkbcommon\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/pigpio/Config.in",
    "content": "config BR2_PACKAGE_PIGPIO\n\tbool \"pigpio\"\n\tdepends on BR2_aarch64 || BR2_arm\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Pigpio is a library for the Raspberry Pi which allows\n\t  control of the General Purpose Input Outputs (GPIO).\n\n\t  http://abyz.me.uk/rpi/pigpio/\n\ncomment \"pigpio needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_aarch64 || BR2_arm\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/pigpio/S50pigpio",
    "content": "#!/bin/sh\n\nDAEMON=\"pigpiod\"\nPIDFILE=\"/var/run/pigpio.pid\"\n\nPIGPIOD_ARGS=\"\"\n\n[ -r \"/etc/default/pigpio\" ] && . \"/etc/default/pigpio\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\tstart-stop-daemon -S -q -x \"/usr/bin/$DAEMON\" -- $PIGPIOD_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/pigpio/pigpio.hash",
    "content": "# Locally calculated\nsha256  c5337c0b7ae888caf0262a6f476af0e2ab67065f7650148a0b21900b8d1eaed7  pigpio-79.tar.gz\nsha256  6a90b88421a0d9b090e121daa11b3c6d55eed5eeb3281a2fcc454d6a28b5547c  UNLICENCE\n"
  },
  {
    "path": "package/pigpio/pigpio.mk",
    "content": "################################################################################\n#\n# pigpio\n#\n################################################################################\n\nPIGPIO_VERSION = 79\nPIGPIO_SITE = $(call github,joan2937,pigpio,v$(PIGPIO_VERSION))\nPIGPIO_LICENSE = Unlicense\nPIGPIO_LICENSE_FILES = UNLICENCE\nPIGPIO_INSTALL_STAGING = YES\n\ndefine PIGPIO_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine PIGPIO_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/pig2vcd $(TARGET_DIR)/usr/bin/pig2vcd\n\t$(INSTALL) -D -m 0755 $(@D)/pigpiod $(TARGET_DIR)/usr/bin/pigpiod\n\t$(INSTALL) -D -m 0755 $(@D)/pigs $(TARGET_DIR)/usr/bin/pigs\n\t$(INSTALL) -D -m 0755 $(@D)/libpigpio.so.1 $(TARGET_DIR)/usr/lib/libpigpio.so.1\n\t$(INSTALL) -D -m 0755 $(@D)/libpigpiod_if.so.1 $(TARGET_DIR)/usr/lib/libpigpiod_if.so.1\n\t$(INSTALL) -D -m 0755 $(@D)/libpigpiod_if2.so.1 $(TARGET_DIR)/usr/lib/libpigpiod_if2.so.1\n\tln -sf libpigpio.so.1 $(TARGET_DIR)/usr/lib/libpigpio.so\n\tln -sf libpigpiod_if.so.1 $(TARGET_DIR)/usr/lib/libpigpiod_if.so\n\tln -sf libpigpiod_if2.so.1 $(TARGET_DIR)/usr/lib/libpigpiod_if2.so\nendef\n\ndefine PIGPIO_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/libpigpio.so.1 $(STAGING_DIR)/usr/lib/libpigpio.so.1\n\t$(INSTALL) -D -m 0755 $(@D)/libpigpiod_if.so.1 $(STAGING_DIR)/usr/lib/libpigpiod_if.so.1\n\t$(INSTALL) -D -m 0755 $(@D)/libpigpiod_if2.so.1 $(STAGING_DIR)/usr/lib/libpigpiod_if2.so.1\n\t$(INSTALL) -D -m 0644 $(@D)/pigpio.h $(STAGING_DIR)/usr/include/pigpio.h\n\t$(INSTALL) -D -m 0644 $(@D)/pigpiod_if.h $(STAGING_DIR)/usr/include/pigpiod_if.h\n\t$(INSTALL) -D -m 0644 $(@D)/pigpiod_if2.h $(STAGING_DIR)/usr/include/pigpiod_if2.h\n\tln -sf libpigpio.so.1 $(STAGING_DIR)/usr/lib/libpigpio.so\n\tln -sf libpigpiod_if.so.1 $(STAGING_DIR)/usr/lib/libpigpiod_if.so\n\tln -sf libpigpiod_if2.so.1 $(STAGING_DIR)/usr/lib/libpigpiod_if2.so\nendef\n\ndefine PIGPIO_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/pigpio/S50pigpio \\\n\t\t$(TARGET_DIR)/etc/init.d/S50pigpio\nendef\n\ndefine PIGPIO_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/pigpio/pigpio.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/pigpio.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/pigpio/pigpio.service",
    "content": "[Unit]\nDescription=Pigpio daemon\nAfter=network.target\n\n[Service]\nEnvironmentFile=-/etc/default/pigpio\nExecStart=/usr/bin/pigpiod -g $PIGPIOD_ARGS\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/pigz/Config.in",
    "content": "config BR2_PACKAGE_PIGZ\n\tbool \"pigz\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  pigz, which stands for parallel implementation of gzip, is a\n\t  fully functional replacement for gzip that exploits multiple\n\t  processors and multiple cores to the hilt when compressing\n\t  data.\n\n\t  http://www.zlib.net/pigz/\n\ncomment \"pigz needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/pigz/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PIGZ\n\tbool \"host pigz\"\n\thelp\n\t  pigz, which stands for parallel implementation of gzip, is a\n\t  fully functional replacement for gzip that exploits multiple\n\t  processors and multiple cores to the hilt when compressing\n\t  data.\n\n\t  http://www.zlib.net/pigz/\n"
  },
  {
    "path": "package/pigz/pigz.hash",
    "content": "# Locally calculated\nsha256  577673676cd5c7219f94b236075451220bae3e1ca451cf849947a2998fbf5820  pigz-2.6.tar.gz\nsha256  830b3e1b05cc20f443d89d7d8703a3c63fd64c57ab716f5e81fd178517df1e11  README\n"
  },
  {
    "path": "package/pigz/pigz.mk",
    "content": "################################################################################\n#\n# pigz\n#\n################################################################################\n\nPIGZ_VERSION = 2.6\nPIGZ_SITE = $(call github,madler,pigz,v$(PIGZ_VERSION))\nPIGZ_DEPENDENCIES = zlib\nHOST_PIGZ_DEPENDENCIES = host-zlib\nPIGZ_LICENSE = Zlib\nPIGZ_LICENSE_FILES = README\nPIGZ_CPE_ID_VENDOR = zlib\n\ndefine PIGZ_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine HOST_PIGZ_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine PIGZ_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/pigz $(TARGET_DIR)/usr/bin/pigz\nendef\n\ndefine HOST_PIGZ_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/pigz $(HOST_DIR)/bin/pigz\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/pimd/Config.in",
    "content": "config BR2_PACKAGE_PIMD\n\tbool \"pimd\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  pimd is a lightweight stand-alone PIM-SM v2 multicast routing\n\t  daemon.\n\n\t  http://troglobit.com/projects/pimd/\n"
  },
  {
    "path": "package/pimd/pimd.hash",
    "content": "# Locally computed:\nsha256 c77a9812751f114490a28a6839b16aac8b020c8d9fd6aa22bf3880c054e19f1d  pimd-2.3.2.tar.gz\n\n# Hash for license files:\nsha256 3379436c16caccdef9b40a49fbdfdbb45aad8ecb05870834490b8fb080126009  LICENSE\nsha256 4328a21f0822caa9976356623118bcdcc9970c7a0f9a3deeba23c779b7cfb5d1  LICENSE.mrouted\n"
  },
  {
    "path": "package/pimd/pimd.mk",
    "content": "################################################################################\n#\n# pimd\n#\n################################################################################\n\nPIMD_VERSION = 2.3.2\nPIMD_SITE = https://github.com/troglobit/pimd/releases/download/$(PIMD_VERSION)\n\nPIMD_LICENSE = BSD-3-Clause\nPIMD_LICENSE_FILES = LICENSE LICENSE.mrouted\n\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC)$(BR2_TOOLCHAIN_USES_MUSL),y)\nPIMD_CONF_OPTS += --embedded-libc\nendif\n\n# The configure script is not autoconf based, so we use the\n# generic-package infrastructure\ndefine PIMD_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(TARGET_CONFIGURE_ARGS) \\\n\t\t./configure $(PIMD_CONF_OPTS) \\\n\t)\nendef\n\ndefine PIMD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CROSS=$(TARGET_CROSS) \\\n\t\tCC=$(TARGET_CC) -C $(@D)\nendef\n\ndefine PIMD_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) \\\n\t\tprefix=/usr -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/pinentry/Config.in",
    "content": "menuconfig BR2_PACKAGE_PINENTRY\n\tbool \"pinentry\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error\n\tdepends on BR2_USE_MMU # libassuan\n\tselect BR2_PACKAGE_LIBASSUAN\n\tselect BR2_PACKAGE_LIBGPG_ERROR\n\t# At least one backend is needed to avoid build breakage\n\tselect BR2_PACKAGE_PINENTRY_NCURSES if \\\n\t\t!BR2_PACKAGE_PINENTRY_GTK2 && \\\n\t\t!BR2_PACKAGE_PINENTRY_QT5\n\thelp\n\t  A collection of simple PIN or pass-phrase entry dialogs\n\n\t  https://www.gnupg.org/related_software/pinentry/\n\nif BR2_PACKAGE_PINENTRY\n\nconfig BR2_PACKAGE_PINENTRY_EFL\n\tbool \"pinentry-efl\"\n\tdepends on BR2_PACKAGE_EFL\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_EFL_X_XLIB\n\thelp\n\t  The pinentry-efl tool\n\ncomment \"pinentry-efl needs efl and X\"\n\tdepends on !BR2_PACKAGE_EFL || !BR2_PACKAGE_XORG7\n\nconfig BR2_PACKAGE_PINENTRY_FLTK\n\tbool \"pinentry-fltk\"\n\tdepends on BR2_USE_MMU # fltk\n\tdepends on BR2_INSTALL_LIBSTDCPP # fltk\n\tdepends on BR2_PACKAGE_XORG7 # fltk\n\tselect BR2_PACKAGE_FLTK\n\thelp\n\t  The pinentry-fltk tool\n\ncomment \"pinentry-fltk needs X and a toolchain w/ C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_XORG7 || !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_PINENTRY_NCURSES\n\tbool \"pinentry-ncurses\"\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  The pinentry-ncurses tool\n\nconfig BR2_PACKAGE_PINENTRY_GTK2\n\tbool \"pinentry-gtk2\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # libgtk2 -> pango -> harfbuzz\n\tselect BR2_PACKAGE_LIBGTK2\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  The pinentry-gtk2 tool\n\ncomment \"pinentry-gtk2 needs X and a toolchain w/ wchar, threads, C++, gcc >= 4.8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_PACKAGE_XORG7 || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \\\n\t\t!BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_PINENTRY_QT5\n\tbool \"pinentry-qt5\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_HOST_GCC_AT_LEAST_5\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\tdepends on !BR2_arc\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_QT5\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\thelp\n\t  The pinentry-qt5 tool\n\ncomment \"pinentry-qt5 needs a host gcc >= 5.0, and a toolchain w/ wchar, NPTL, gcc >= 5.0, C++, dynamic library\"\n\tdepends on !BR2_arc\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \\\n\t\tBR2_STATIC_LIBS || !BR2_HOST_GCC_AT_LEAST_5\n\nendif\n"
  },
  {
    "path": "package/pinentry/pinentry.hash",
    "content": "# From https://www.gnupg.org/download/integrity_check.html\nsha1  b8b88cab4fd844e3616d55aeba8f084f2b98fb0f  pinentry-1.1.1.tar.bz2\n# Locally computed\nsha256  cd12a064013ed18e2ee8475e669b9f58db1b225a0144debdb85a68cecddba57f  pinentry-1.1.1.tar.bz2\nsha256  67f82e045cf7acfef853ea0f426575a8359161a0a325e19f02b529a87c4b6c34  COPYING\n"
  },
  {
    "path": "package/pinentry/pinentry.mk",
    "content": "################################################################################\n#\n# pinentry\n#\n################################################################################\n\nPINENTRY_VERSION = 1.1.1\nPINENTRY_SOURCE = pinentry-$(PINENTRY_VERSION).tar.bz2\nPINENTRY_SITE = https://www.gnupg.org/ftp/gcrypt/pinentry\nPINENTRY_LICENSE = GPL-2.0+\nPINENTRY_LICENSE_FILES = COPYING\nPINENTRY_DEPENDENCIES = \\\n\tlibassuan libgpg-error \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv) \\\n\thost-pkgconf\nPINENTRY_CONF_OPTS += \\\n\t--with-libassuan-prefix=$(STAGING_DIR)/usr \\\n\t--with-libgpg-error-prefix=$(STAGING_DIR)/usr \\\n\t--without-libcap       # requires PAM\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nPINENTRY_CONF_ENV += LIBS=-latomic\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECRET),y)\nPINENTRY_CONF_OPTS += --enable-libsecret\nPINENTRY_DEPENDENCIES += libsecret\nelse\nPINENTRY_CONF_OPTS += --disable-libsecret\nendif\n\n# pinentry-efl backend\nifeq ($(BR2_PACKAGE_PINENTRY_EFL),y)\nPINENTRY_CONF_OPTS += --enable-pinentry-efl\nPINENTRY_DEPENDENCIES += efl\nelse\nPINENTRY_CONF_OPTS += --disable-pinentry-efl\nendif\n\n# pinentry-fltk backend\nifeq ($(BR2_PACKAGE_PINENTRY_FLTK),y)\nPINENTRY_CONF_ENV += ac_cv_path_FLTK_CONFIG=$(STAGING_DIR)/usr/bin/fltk-config\nPINENTRY_CONF_OPTS += --enable-pinentry-fltk\nPINENTRY_DEPENDENCIES += fltk\nelse\nPINENTRY_CONF_OPTS += --disable-pinentry-fltk\nendif\n\n# pinentry-ncurses backend\nifeq ($(BR2_PACKAGE_PINENTRY_NCURSES),y)\nPINENTRY_CONF_OPTS += --enable-ncurses --with-ncurses-include-dir=none\nPINENTRY_DEPENDENCIES += ncurses\nelse\nPINENTRY_CONF_OPTS += --disable-ncurses\nendif\n\n# pinentry-gtk2 backend\nifeq ($(BR2_PACKAGE_PINENTRY_GTK2),y)\nPINENTRY_CONF_OPTS += --enable-pinentry-gtk2\nPINENTRY_DEPENDENCIES += libgtk2\nelse\nPINENTRY_CONF_OPTS += --disable-pinentry-gtk2\nendif\n\n# pinentry-qt5 backend\nifeq ($(BR2_PACKAGE_PINENTRY_QT5),y)\nPINENTRY_CONF_OPTS += --enable-pinentry-qt\nPINENTRY_DEPENDENCIES += qt5base\nelse\nPINENTRY_CONF_OPTS += --disable-pinentry-qt\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/pipewire/0001-cpu-fix-compilation-on-some-architectures.patch",
    "content": "From 651f0decea5f83730c271e9bed03cdd0048fcd49 Mon Sep 17 00:00:00 2001\nFrom: Wim Taymans <wtaymans@redhat.com>\nDate: Thu, 21 Oct 2021 11:09:48 +0200\nSubject: [PATCH] cpu: fix compilation on some architectures\n\n[Retrieved from:\nhttps://gitlab.freedesktop.org/pipewire/pipewire/-/commit/651f0decea5f83730c271e9bed03cdd0048fcd49]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n spa/plugins/support/cpu.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/spa/plugins/support/cpu.c b/spa/plugins/support/cpu.c\nindex ee1816512..01cff4854 100644\n--- a/spa/plugins/support/cpu.c\n+++ b/spa/plugins/support/cpu.c\n@@ -270,7 +270,7 @@ impl_init(const struct spa_handle_factory *factory,\n \t\tif ((str = spa_dict_lookup(info, SPA_KEY_CPU_VM_TYPE)) != NULL)\n \t\t\tthis->vm_type = atoi(str);\n \t\tif ((str = spa_dict_lookup(info, SPA_KEY_CPU_ZERO_DENORMALS)) != NULL)\n-\t\t\timpl_cpu_zero_denormals(this, spa_atob(str));\n+\t\t\tspa_cpu_zero_denormals(&this->cpu, spa_atob(str));\n \t}\n \n \tspa_log_debug(this->log, \"%p: count:%d align:%d flags:%08x\",\n-- \nGitLab\n\n"
  },
  {
    "path": "package/pipewire/0002-cpu-disable-VFP-asm-when-not-available.patch",
    "content": "From 2cddd4a775c145570f4a8a30d28b57f551d43206 Mon Sep 17 00:00:00 2001\nFrom: Wim Taymans <wtaymans@redhat.com>\nDate: Mon, 25 Oct 2021 16:32:16 +0200\nSubject: [PATCH] cpu: disable VFP asm when not available\n\nFixes #1746\n\n[Retrieved from:\nhttps://gitlab.freedesktop.org/pipewire/pipewire/-/commit/2cddd4a775c145570f4a8a30d28b57f551d43206]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n spa/plugins/support/cpu-arm.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/spa/plugins/support/cpu-arm.c b/spa/plugins/support/cpu-arm.c\nindex c07711f70..fe6222f7c 100644\n--- a/spa/plugins/support/cpu-arm.c\n+++ b/spa/plugins/support/cpu-arm.c\n@@ -143,7 +143,7 @@ static int arm_zero_denormals(void *object, bool enable)\n \t\t\t\"msr\tfpcr, %0\t\t\\n\"\n \t\t\t\"isb\t\t\t\t\\n\"\n \t\t\t: \"=r\"(cw)::\"memory\");\n-#else\n+#elif (defined(__VFP_FP__) && !defined(__SOFTFP__))\n \tuint32_t cw;\n \tif (enable)\n \t\t__asm__ __volatile__(\n-- \nGitLab\n\n"
  },
  {
    "path": "package/pipewire/Config.in",
    "content": "config BR2_PACKAGE_PIPEWIRE\n\tbool \"pipewire\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO if BR2_PACKAGE_BLUEZ5_UTILS # runtime\n\thelp\n\t  PipeWire is a server and user space API to deal with\n\t  multimedia pipelines.\n\n\t  https://pipewire.org/\n\nif BR2_PACKAGE_PIPEWIRE\n\nconfig BR2_PACKAGE_PIPEWIRE_EXAMPLES\n\tbool \"pipewire examples\"\n\thelp\n\t  Build pipewire examples\n\nconfig BR2_PACKAGE_PIPEWIRE_GSTREAMER\n\tbool \"pipewire gstreamer plugins\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_GSTREAMER1\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\thelp\n\t  Build GStreamer plugins\n\ncomment \"pipewire gstreamer support needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_PIPEWIRE_V4L2\n\tbool \"pipewire v4l2 plugin\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18\n\thelp\n\t  Build v4l2 plugin\n\ncomment \"pipewire v4l2 support needs udev and a toolchain w/ headers >= 3.18\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18\n\nendif\n\ncomment \"pipewire needs a toolchain w/ dynamic library, threads, gcc >= 5\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_5\n"
  },
  {
    "path": "package/pipewire/pipewire.hash",
    "content": "# Locally calculated\nsha256  fafcde675b264485883df1f3bf7e08f36fd1d661ecc092dcec6fd35a059c2aff  pipewire-0.3.39.tar.bz2\nsha256  8909c319a7e27dbb33a15b9035f89ab3b7b2f6a12f8bcddc755206a8db1ada44  COPYING\nsha256  be4be5d77424833edf31f53fc1f1cecb6996b9e2d747d9e6fb8f878362ebc92b  LICENSE\n"
  },
  {
    "path": "package/pipewire/pipewire.mk",
    "content": "################################################################################\n#\n# pipewire\n#\n################################################################################\n\nPIPEWIRE_VERSION = 0.3.39\nPIPEWIRE_SOURCE = pipewire-$(PIPEWIRE_VERSION).tar.bz2\nPIPEWIRE_SITE = https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/$(PIPEWIRE_VERSION)\nPIPEWIRE_LICENSE = MIT, LGPL-2.1+ (libspa-alsa), GPL-2.0 (libjackserver)\nPIPEWIRE_LICENSE_FILES = COPYING LICENSE\nPIPEWIRE_INSTALL_STAGING = YES\nPIPEWIRE_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES)\nPIPEWIRE_LDFLAGS = $(TARGET_NLS_LIBS)\n\nPIPEWIRE_CONF_OPTS += \\\n\t-Ddocs=disabled \\\n\t-Dman=disabled \\\n\t-Dtests=disabled \\\n\t-Dspa-plugins=enabled \\\n\t-Daudiomixer=enabled \\\n\t-Daudioconvert=enabled \\\n\t-Dcontrol=enabled \\\n\t-Daudiotestsrc=enabled \\\n\t-Dsupport=enabled \\\n\t-Devl=disabled \\\n\t-Dtest=disabled \\\n\t-Dvideoconvert=enabled \\\n\t-Dvideotestsrc=enabled \\\n\t-Dvolume=enabled \\\n\t-Dsession-managers=[]\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nPIPEWIRE_CONF_OPTS += -Ddbus=enabled\nPIPEWIRE_DEPENDENCIES += dbus\nelse\nPIPEWIRE_CONF_OPTS += -Ddbus=disabled\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nPIPEWIRE_CONF_OPTS += -Dudev=enabled\nPIPEWIRE_DEPENDENCIES += udev\nelse\nPIPEWIRE_CONF_OPTS += -Dudev=disabled\nendif\n\nifeq ($(BR2_PACKAGE_PIPEWIRE_EXAMPLES),y)\nPIPEWIRE_CONF_OPTS += -Dexamples=enabled\nelse\nPIPEWIRE_CONF_OPTS += -Dexamples=disabled\nendif\n\nifeq ($(BR2_PACKAGE_PIPEWIRE_GSTREAMER),y)\nPIPEWIRE_CONF_OPTS += -Dgstreamer=enabled\nPIPEWIRE_DEPENDENCIES += libglib2 gstreamer1 gst1-plugins-base\nelse\nPIPEWIRE_CONF_OPTS += -Dgstreamer=disabled\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nPIPEWIRE_CONF_OPTS += \\\n\t-Dsystemd=enabled \\\n\t-Dsystemd-system-service=enabled \\\n\t-Dsystemd-user-service=enabled\nPIPEWIRE_DEPENDENCIES += systemd\nelse\nPIPEWIRE_CONF_OPTS += \\\n\t-Dsystemd=disabled \\\n\t-Dsystemd-system-service=disabled \\\n\t-Dsystemd-user-service=disabled\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nPIPEWIRE_CONF_OPTS += -Dpipewire-alsa=enabled\nPIPEWIRE_DEPENDENCIES += alsa-lib\nifeq ($(BR2_PACKAGE_ALSA_LIB_SEQ)$(BR2_PACKAGE_ALSA_LIB_UCM)$(BR2_PACKAGE_HAS_UDEV),yyy)\nPIPEWIRE_CONF_OPTS += -Dalsa=enabled\nelse\nPIPEWIRE_CONF_OPTS += -Dalsa=disabled\nendif\nelse\nPIPEWIRE_CONF_OPTS += -Dalsa=disabled -Dpipewire-alsa=disabled\nendif\n\nifeq ($(BR2_PACKAGE_AVAHI),y)\nPIPEWIRE_CONF_OPTS += -Davahi=enabled\nPIPEWIRE_DEPENDENCIES += avahi\nelse\nPIPEWIRE_CONF_OPTS += -Davahi=disabled\nendif\n\nifeq ($(BR2_PACKAGE_JACK2),y)\nPIPEWIRE_CONF_OPTS += -Dpipewire-jack=enabled -Djack=enabled\nPIPEWIRE_DEPENDENCIES += jack2\nelse\nPIPEWIRE_CONF_OPTS += -Dpipewire-jack=disabled -Djack=disabled\nendif\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS)$(BR2_PACKAGE_SBC),yy)\nPIPEWIRE_CONF_OPTS += -Dbluez5=enabled\nPIPEWIRE_DEPENDENCIES += bluez5_utils sbc\nelse\nPIPEWIRE_CONF_OPTS += -Dbluez5=disabled\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG),y)\nPIPEWIRE_CONF_OPTS += -Dffmpeg=enabled\nPIPEWIRE_DEPENDENCIES += ffmpeg\nelse\nPIPEWIRE_CONF_OPTS += -Dffmpeg=disabled\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)\nPIPEWIRE_DEPENDENCIES += ncurses\nendif\n\nifeq ($(BR2_PACKAGE_PIPEWIRE_V4L2),y)\nPIPEWIRE_CONF_OPTS += -Dpipewire-v4l2=enabled -Dv4l2=enabled\nelse\nPIPEWIRE_CONF_OPTS += -Dpipewire-v4l2=disabled -Dv4l2=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAMERA)$(BR2_PACKAGE_LIBDRM)$(BR2_PACKAGE_HAS_UDEV),yyy)\nPIPEWIRE_CONF_OPTS += -Dlibcamera=enabled\nPIPEWIRE_DEPENDENCIES += libcamera libdrm\nelse\nPIPEWIRE_CONF_OPTS += -Dlibcamera=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nPIPEWIRE_CONF_OPTS += -Dlibusb=enabled\nPIPEWIRE_DEPENDENCIES += libusb\nelse\nPIPEWIRE_CONF_OPTS += -Dlibusb=disabled\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),y)\nPIPEWIRE_CONF_OPTS += -Dvulkan=enabled\nPIPEWIRE_DEPENDENCIES += mesa3d\nelse\nPIPEWIRE_CONF_OPTS += -Dvulkan=disabled\nendif\n\nifeq ($(BR2_PACKAGE_LIBSNDFILE),y)\nPIPEWIRE_CONF_OPTS += -Dpw-cat=enabled -Dsndfile=enabled\nPIPEWIRE_DEPENDENCIES += libsndfile\nelse\nPIPEWIRE_CONF_OPTS += -Dpw-cat=disabled -Dsndfile=disabled\nendif\n\nifeq ($(BR2_PACKAGE_PULSEAUDIO),y)\nPIPEWIRE_CONF_OPTS += -Dlibpulse=enabled\nPIPEWIRE_DEPENDENCIES += pulseaudio\nelse\nPIPEWIRE_CONF_OPTS += -Dlibpulse=disabled\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nPIPEWIRE_DEPENDENCIES += readline\nendif\n\nifeq ($(BR2_PACKAGE_SDL2),y)\nPIPEWIRE_DEPENDENCIES += sdl2\nPIPEWIRE_CONF_OPTS += -Dsdl2=enabled\nelse\nPIPEWIRE_CONF_OPTS += -Dsdl2=disabled\nendif\n\nifeq ($(WEBRTC_AUDIO_PROCESSING),y)\nPIPEWIRE_CONF_OPTS += -Decho-cancel-webrtc=enabled\nPIPEWIRE_DEPENDENCIES += webrtc-audio-processing\nelse\nPIPEWIRE_CONF_OPTS += -Decho-cancel-webrtc=disabled\nendif\n\ndefine PIPEWIRE_USERS\n\tpipewire -1 pipewire -1 * - - audio,video PipeWire System Daemon\nendef\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/pipewire-media-session/0001-meson-remove-session-managers-option-check.patch",
    "content": "From 1923c97fbd0b3d8cacdb72386886f860c818bccf Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Wed, 10 Nov 2021 08:54:06 -0700\nSubject: [PATCH] meson: remove session-managers option check.\n\nThis option no longer exists and causes a build failure if building\nwith the systemd system service enabled.\n\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[Upstream status:\nhttps://gitlab.freedesktop.org/pipewire/media-session/-/merge_requests/24]\n---\n systemd/system/meson.build | 10 ++++------\n 1 file changed, 4 insertions(+), 6 deletions(-)\n\ndiff --git a/systemd/system/meson.build b/systemd/system/meson.build\nindex ab0d49064..0e9885b0f 100644\n--- a/systemd/system/meson.build\n+++ b/systemd/system/meson.build\n@@ -4,9 +4,7 @@ systemd_system_services_dir = systemd.get_variable(pkgconfig: 'systemdsystemunit\n systemd_config = configuration_data()\n systemd_config.set('PW_MEDIA_SESSION_BINARY', media_session_bindir / 'pipewire-media-session')\n \n-if get_option('session-managers').contains('media-session')\n-  configure_file(input : 'pipewire-media-session.service.in',\n-               output : 'pipewire-media-session.service',\n-               configuration : systemd_config,\n-               install_dir : systemd_system_services_dir)\n-endif\n+configure_file(input : 'pipewire-media-session.service.in',\n+             output : 'pipewire-media-session.service',\n+             configuration : systemd_config,\n+             install_dir : systemd_system_services_dir)\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/pipewire-media-session/Config.in",
    "content": "config BR2_PACKAGE_PIPEWIRE_MEDIA_SESSION\n\tbool \"pipewire media-session\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib, dbus\n\tdepends on BR2_USE_MMU # dbus\n\tdepends on BR2_PACKAGE_PIPEWIRE\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_UCM\n\tselect BR2_PACKAGE_DBUS\n\thelp\n\t  Build pipewire media-session support\n"
  },
  {
    "path": "package/pipewire-media-session/pipewire-media-session.hash",
    "content": "# Locally calculated\nsha256  ebdf9f8e389896fdc4b58da5f909afce18441b4b53d5b4f2104dd53586ea8681  media-session-0.4.1.tar.bz2\nsha256  8909c319a7e27dbb33a15b9035f89ab3b7b2f6a12f8bcddc755206a8db1ada44  COPYING\nsha256  77b9c867237ef919e33c0fdbcf22ab84b1cf24a63f9431ec68759026b658c994  LICENSE\n"
  },
  {
    "path": "package/pipewire-media-session/pipewire-media-session.mk",
    "content": "################################################################################\n#\n# pipewire-media-session\n#\n################################################################################\n\nPIPEWIRE_MEDIA_SESSION_VERSION = 0.4.1\nPIPEWIRE_MEDIA_SESSION_SOURCE = media-session-$(PIPEWIRE_MEDIA_SESSION_VERSION).tar.bz2\nPIPEWIRE_MEDIA_SESSION_SITE = https://gitlab.freedesktop.org/pipewire/media-session/-/archive/$(PIPEWIRE_MEDIA_SESSION_VERSION)\nPIPEWIRE_MEDIA_SESSION_LICENSE = MIT\nPIPEWIRE_MEDIA_SESSION_LICENSE_FILES = COPYING LICENSE\nPIPEWIRE_MEDIA_SESSION_INSTALL_STAGING = YES\nPIPEWIRE_MEDIA_SESSION_DEPENDENCIES = \\\n\thost-pkgconf \\\n\talsa-lib \\\n\tdbus \\\n\tpipewire \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nPIPEWIRE_MEDIA_SESSION_CONF_OPTS = -Ddocs=disabled -Dtests=disabled\n\nPIPEWIRE_MEDIA_SESSION_MODULE_SETS_LIST = alsa\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nPIPEWIRE_MEDIA_SESSION_DEPENDENCIES += systemd\nPIPEWIRE_MEDIA_SESSION_CONF_OPTS += \\\n\t-Dsystemd=enabled \\\n\t-Dsystemd-system-service=enabled \\\n\t-Dsystemd-user-service=enabled\nelse\nPIPEWIRE_MEDIA_SESSION_CONF_OPTS += \\\n\t-Dsystemd=disabled \\\n\t-Dsystemd-system-service=disabled \\\n\t-Dsystemd-user-service=disabled\nendif\n\nifeq ($(BR2_PACKAGE_JACK2),y)\nPIPEWIRE_MEDIA_SESSION_DEPENDENCIES += jack2\nPIPEWIRE_MEDIA_SESSION_MODULE_SETS_LIST += jack\nendif\n\nifeq ($(BR2_PACKAGE_PULSEAUDIO),y)\nPIPEWIRE_MEDIA_SESSION_DEPENDENCIES += pulseaudio\nPIPEWIRE_MEDIA_SESSION_MODULE_SETS_LIST += pulseaudio\nendif\n\nPIPEWIRE_MEDIA_SESSION_CONF_OPTS += -Dwith-module-sets='$(subst $(space),$(comma),$(PIPEWIRE_MEDIA_SESSION_MODULE_SETS_LIST))'\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/pistache/0001-CMakeLists.txt-add-C-language-to-project-statement.patch",
    "content": "From a50fc9bde098e4e89584a5da9f94f620c11b6733 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 16 Aug 2020 12:31:46 +0200\nSubject: [PATCH] CMakeLists.txt: add C language to project statement\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis will fix the detection of atomic:\n\n-- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB\n-- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB - Failed\n-- Looking for __atomic_load_8 in atomic\n-- Looking for __atomic_load_8 in atomic - not found\nCMake Error at CMakeModules/CheckAtomic.cmake:76 (message):\n  Host compiler appears to require libatomic for 64-bit operations, but\n  cannot find it.\nCall Stack (most recent call first):\n  CMakeLists.txt:19 (include)\n\nIndeed if C language is not enabled, the test will be run with the C++\ncompiler resulting in the following error:\n\nBuilding CXX object CMakeFiles/cmTC_fad22.dir/CheckFunctionExists.cxx.o\n/tmp/instance-0/output-1/host/bin/mipsel-linux-g++ --sysroot=/tmp/instance-0/output-1/host/mipsel-buildroot-linux-gnu/sysroot    -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -D_FORTIFY_SOURCE=1 -Wall -Wconversion -pedantic -Wextra -Wno-missing-field-initializers -DCHECK_FUNCTION_EXISTS=__atomic_load_8  -DNDEBUG   -o CMakeFiles/cmTC_fad22.dir/CheckFunctionExists.cxx.o -c /tmp/instance-0/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx\n<command-line>: error: new declaration 'char __atomic_load_8()' ambiguates built-in declaration 'long long unsigned int __atomic_load_8(const volatile void*, int)' [-fpermissive]\n/tmp/instance-0/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx:7:3: note: in expansion of macro 'CHECK_FUNCTION_EXISTS'\n   CHECK_FUNCTION_EXISTS(void);\n   ^~~~~~~~~~~~~~~~~~~~~\n/tmp/instance-0/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: In function 'int main(int, char**)':\n/tmp/instance-0/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx:17:25: error: too few arguments to function 'long long unsigned int __atomic_load_8(const volatile void*, int)'\n   CHECK_FUNCTION_EXISTS();\n                         ^\n\nwhereas with a C compiler, we'll get:\n\nBuilding C object CMakeFiles/cmTC_4b0f4.dir/CheckFunctionExists.c.o\n/home/fabrice/buildroot/output/host/bin/riscv32-linux-gcc --sysroot=/home/fabrice/buildroot/output/host/riscv32-buildroot-linux-gnu/sysroot   -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DCHECK_FUNCTION_EXISTS=__atomic_load_8  -DNDEBUG   -o CMakeFiles/cmTC_4b0f4.dir/CheckFunctionExists.c.o   -c /usr/share/cmake-3.16/Modules/CheckFunctionExists.c\n<command-line>: warning: conflicting types for built-in function ‘__atomic_load_8’ [-Wbuiltin-declaration-mismatch]\n/usr/share/cmake-3.16/Modules/CheckFunctionExists.c:7:3: note: in expansion of macro ‘CHECK_FUNCTION_EXISTS’\n   CHECK_FUNCTION_EXISTS(void);\n   ^~~~~~~~~~~~~~~~~~~~~\nLinking C executable cmTC_4b0f4\n/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_4b0f4.dir/link.txt --verbose=1\n/home/fabrice/buildroot/output/host/bin/riscv32-linux-gcc --sysroot=/home/fabrice/buildroot/output/host/riscv32-buildroot-linux-gnu/sysroot -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DCHECK_FUNCTION_EXISTS=__atomic_load_8  -DNDEBUG    CMakeFiles/cmTC_4b0f4.dir/CheckFunctionExists.c.o  -o cmTC_4b0f4  -latomic\n\nFixes:\n - http://autobuild.buildroot.org/results/2bf06c6a9e55b449ec5875cf9415a9e55b2065d6\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n CMakeLists.txt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex edc73c5..0286647 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -9,7 +9,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)\n set(CMAKE_CXX_EXTENSIONS OFF)\n \n project (pistache\n-    LANGUAGES CXX)\n+    LANGUAGES C CXX)\n \n include(GNUInstallDirs)\n \n-- \n2.27.0\n\n"
  },
  {
    "path": "package/pistache/0002-CMakeLists.txt-respect-BUILD_SHARED_LIBS.patch",
    "content": "From 45824f58b10575d8d88d4bce934aedee821a6df0 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 15 Oct 2020 22:26:55 +0200\nSubject: [PATCH] CMakeLists.txt: respect BUILD_SHARED_LIBS\n\nDon't build and install pistache_shared if the standard cmake\nBUILD_SHARED_LIBS is set to OFF\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Backport from upstream:\n  https://github.com/oktal/pistache/commit/c04166ca9e6420a8fbc93fef4055ee2eccdcebe4\n]\n---\n src/CMakeLists.txt | 43 +++++++++++++++++++++++++------------------\n 1 file changed, 25 insertions(+), 18 deletions(-)\n\ndiff --git a/src/CMakeLists.txt b/src/CMakeLists.txt\nindex 6521b20..c5b049f 100644\n--- a/src/CMakeLists.txt\n+++ b/src/CMakeLists.txt\n@@ -26,31 +26,36 @@ set(include_install_dir ${CMAKE_INSTALL_INCLUDEDIR})\n set(lib_install_dir ${CMAKE_INSTALL_LIBDIR})\n set(bin_install_dir ${CMAKE_INSTALL_BINDIR})\n \n-add_library(pistache_shared SHARED $<TARGET_OBJECTS:pistache>)\n-add_library(pistache_static STATIC $<TARGET_OBJECTS:pistache>)\n+if (BUILD_SHARED_LIBS)\n+    add_library(pistache_shared SHARED $<TARGET_OBJECTS:pistache>)\n+    target_link_libraries(pistache_shared PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES})\n+    target_include_directories(pistache_shared INTERFACE ${PISTACHE_INCLUDE})\n+endif ()\n \n-target_link_libraries(pistache_shared PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES})\n+add_library(pistache_static STATIC $<TARGET_OBJECTS:pistache>)\n target_link_libraries(pistache_static PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES})\n-\n-target_include_directories(pistache_shared INTERFACE ${PISTACHE_INCLUDE})\n target_include_directories(pistache_static INTERFACE ${PISTACHE_INCLUDE})\n \n if (PISTACHE_USE_SSL)\n     target_compile_definitions(pistache PUBLIC PISTACHE_USE_SSL)\n-    target_compile_definitions(pistache_shared PUBLIC PISTACHE_USE_SSL)\n     target_compile_definitions(pistache_static PUBLIC PISTACHE_USE_SSL)\n \n     target_include_directories(pistache PRIVATE ${OPENSSL_INCLUDE_DIR})\n-    target_link_libraries(pistache_shared PUBLIC OpenSSL::SSL OpenSSL::Crypto)\n     target_link_libraries(pistache_static PUBLIC OpenSSL::SSL OpenSSL::Crypto)\n+    if (BUILD_SHARED_LIBS)\n+        target_compile_definitions(pistache_shared PUBLIC PISTACHE_USE_SSL)\n+        target_link_libraries(pistache_shared PUBLIC OpenSSL::SSL OpenSSL::Crypto)\n+    endif ()\n endif ()\n \n set(Pistache_OUTPUT_NAME \"pistache\")\n-set_target_properties(pistache_shared PROPERTIES\n-    OUTPUT_NAME ${Pistache_OUTPUT_NAME}\n-    VERSION ${version}\n-    SOVERSION ${VERSION_MAJOR}\n-)\n+if (BUILD_SHARED_LIBS)\n+    set_target_properties(pistache_shared PROPERTIES\n+        OUTPUT_NAME ${Pistache_OUTPUT_NAME}\n+        VERSION ${version}\n+        SOVERSION ${VERSION_MAJOR}\n+    )\n+endif ()\n \n set_target_properties(pistache_static PROPERTIES \n     OUTPUT_NAME ${Pistache_OUTPUT_NAME}\n@@ -60,13 +65,15 @@ if (PISTACHE_INSTALL)\n     set(Pistache_CONFIG_FILE \"PistacheConfig.cmake\")\n     set(Pistache_CONFIG_VERSION_FILE \"PistacheConfigVersion.cmake\")\n \n-    install(\n-      TARGETS pistache_shared\n-      EXPORT PistacheTargets\n-      ARCHIVE DESTINATION ${lib_install_dir}\n-      LIBRARY DESTINATION ${lib_install_dir}\n-      RUNTIME DESTINATION ${bin_install_dir}\n-      INCLUDES DESTINATION ${include_install_dir})\n+    if (BUILD_SHARED_LIBS)\n+        install(\n+          TARGETS pistache_shared\n+          EXPORT PistacheTargets\n+          ARCHIVE DESTINATION ${lib_install_dir}\n+          LIBRARY DESTINATION ${lib_install_dir}\n+          RUNTIME DESTINATION ${bin_install_dir}\n+          INCLUDES DESTINATION ${include_install_dir})\n+    endif()\n \n     install(\n       DIRECTORY \"${PROJECT_SOURCE_DIR}/include/pistache\"\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/pistache/0003-include-pistache-typeid.h-include-cstddef.patch",
    "content": "From 37291201ed948e9d65993a717c59bb14f4187e13 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 5 Aug 2021 19:02:56 +0200\nSubject: [PATCH] include/pistache/typeid.h: include cstddef\n\nInclude cstddef to avoid the following build failure with gcc 11:\n\nIn file included from /tmp/instance-3/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/src/../include/pistache/async.h:10,\n                 from /tmp/instance-3/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/src/../include/pistache/client.h:9,\n                 from /tmp/instance-3/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/src/client/client.cc:7:\n/tmp/instance-3/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/src/../include/pistache/typeid.h:26:12: error: expected type-specifier before 'size_t'\n   26 |   operator size_t() const { return reinterpret_cast<size_t>(id_); }\n      |            ^~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/2443559df8c2357476e4cbdbebb08280cbb80a3b\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/pistacheio/pistache/pull/965]\n---\n include/pistache/typeid.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/include/pistache/typeid.h b/include/pistache/typeid.h\nindex 10353ca..893e7c1 100644\n--- a/include/pistache/typeid.h\n+++ b/include/pistache/typeid.h\n@@ -7,6 +7,7 @@\n \n #pragma once\n \n+#include <cstddef>\n #include <functional>\n \n namespace Pistache\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/pistache/Config.in",
    "content": "config BR2_PACKAGE_PISTACHE\n\tbool \"pistache\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_TOOLCHAIN_USES_UCLIBC\n\thelp\n\t  Pistache is a modern and elegant HTTP and REST framework\n\t  for C++. It is entirely written in pure C++14 and provides\n\t  a clear and pleasant API.\n\n\t  https://github.com/oktal/pistache\n\ncomment \"pistache needs a glibc toolchain w/ C++, gcc >= 4.9, threads, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\tBR2_TOOLCHAIN_USES_UCLIBC || \\\n\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t!BR2_USE_WCHAR\n"
  },
  {
    "path": "package/pistache/pistache.hash",
    "content": "#locally computed\nsha256  70aeef5f5a4603cb2ceb20a284e3239f5da520e68f39dcb572c9f21473ac0b6d  pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d.tar.gz\nsha256  c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08  LICENSE\n"
  },
  {
    "path": "package/pistache/pistache.mk",
    "content": "################################################################################\n#\n# pistache\n#\n################################################################################\n\nPISTACHE_VERSION = f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d\nPISTACHE_SITE = $(call github,oktal,pistache,$(PISTACHE_VERSION))\nPISTACHE_LICENSE = Apache-2.0\nPISTACHE_LICENSE_FILES = LICENSE\n\nPISTACHE_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nPISTACHE_DEPENDENCIES += openssl\nPISTACHE_CONF_OPTS += -DPISTACHE_USE_SSL=ON\nelse\nPISTACHE_CONF_OPTS += -DPISTACHE_USE_SSL=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/pixiewps/Config.in",
    "content": "config BR2_PACKAGE_PIXIEWPS\n\tbool \"pixiewps\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Pixie WPS is a C based tool to audit networks against the so\n\t  called \"Pixie Dust\" attack.\n\n\t  https://github.com/wiire-a/pixiewps/wiki\n\ncomment \"pixiewps needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/pixiewps/pixiewps.hash",
    "content": "# locally computed\nsha256 d3d3cf57851e3e734fb1797aa078239ef161d1cbeffc4438497d58a425ef22a2  pixiewps-9e5bdc6c86c8487b2a6107d5ab3559ed5c738c59.tar.gz\nsha256 ccb349b4132ed7737f25e5adebfe61f3d52dca33708df1e50352320438d1d4c2  LICENSE.md\n"
  },
  {
    "path": "package/pixiewps/pixiewps.mk",
    "content": "################################################################################\n#\n# pixiewps\n#\n################################################################################\n\nPIXIEWPS_VERSION = 9e5bdc6c86c8487b2a6107d5ab3559ed5c738c59\nPIXIEWPS_SITE = $(call github,wiire-a,pixiewps,$(PIXIEWPS_VERSION))\nPIXIEWPS_LICENSE = GPL-3.0+\nPIXIEWPS_LICENSE_FILES = LICENSE.md\n\ndefine PIXIEWPS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine PIXIEWPS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) \\\n\t\tPREFIX=/usr -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/pixman/0001-Disable-tests.patch",
    "content": "From 9b8132738c364fc3c886e81e7d383aaff80dc867 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sat, 5 Dec 2015 12:00:53 +0100\nSubject: [PATCH] Disable tests\n\nTests are causing build failures on some architectures that are missing\na proper fenv.h, so just disable them.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\n---\nStatus: Buildroot specific, not suitable for upstream in this state.\n---\n Makefile.am | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 5137c9e..eae79fd 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -1,4 +1,4 @@\n-SUBDIRS = pixman demos test\n+SUBDIRS = pixman demos\n \n pkgconfigdir=$(libdir)/pkgconfig\n pkgconfig_DATA=pixman-1.pc\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/pixman/Config.in",
    "content": "config BR2_PACKAGE_PIXMAN\n\tbool \"pixman\"\n\thelp\n\t  Cairo pixel manager\n\n\t  http://cairographics.org/releases/\n"
  },
  {
    "path": "package/pixman/pixman.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2020-April/003043.html\nsha256  da8ed9fe2d1c5ef8ce5d1207992db959226bd4e37e3f88acf908fd9a71e2704e  pixman-0.40.0.tar.xz\nsha512  8a60edb113d68791b41bd90b761ff7b3934260cb3dada3234c9351416f61394e4157353bc4d61b8f6c2c619de470f6feefffb4935bfcf79d291ece6285de7270  pixman-0.40.0.tar.xz\n\n# Locally computed\nsha256  fac9270f0987b96ff4533fca3548c633e02083cbba4a0172a3b149b2e4019793  COPYING\n"
  },
  {
    "path": "package/pixman/pixman.mk",
    "content": "################################################################################\n#\n# pixman\n#\n################################################################################\n\nPIXMAN_VERSION = 0.40.0\nPIXMAN_SOURCE = pixman-$(PIXMAN_VERSION).tar.xz\nPIXMAN_SITE = https://xorg.freedesktop.org/releases/individual/lib\nPIXMAN_LICENSE = MIT\nPIXMAN_LICENSE_FILES = COPYING\nPIXMAN_CPE_ID_VENDOR = pixman\n\nPIXMAN_INSTALL_STAGING = YES\nPIXMAN_DEPENDENCIES = host-pkgconf\nHOST_PIXMAN_DEPENDENCIES = host-pkgconf\n\n# For 0001-Disable-tests.patch\nPIXMAN_AUTORECONF = YES\n\n# don't build gtk based demos\nPIXMAN_CONF_OPTS = --disable-gtk\n\n# The ARM SIMD code from pixman requires a recent enough ARM core, but\n# there is a runtime CPU check that makes sure it doesn't get used if\n# the HW doesn't support it. The only case where the ARM SIMD code\n# cannot be *built* at all is when the platform doesn't support ARM\n# instructions at all, so we have to disable that explicitly.\nifeq ($(BR2_ARM_CPU_HAS_ARM),y)\nPIXMAN_CONF_OPTS += --enable-arm-simd\nelse\nPIXMAN_CONF_OPTS += --disable-arm-simd\nendif\n\nifeq ($(BR2_ARM_CPU_HAS_ARM)$(BR2_ARM_CPU_HAS_NEON),yy)\nPIXMAN_CONF_OPTS += --enable-arm-neon\nelse\nPIXMAN_CONF_OPTS += --disable-arm-neon\nendif\n\n# disable iwmmxt support for CPU's that don't have\n# this feature\nifneq ($(BR2_iwmmxt),y)\nPIXMAN_CONF_OPTS += --disable-arm-iwmmxt\nendif\n\nPIXMAN_CFLAGS = $(TARGET_CFLAGS)\n\n# toolchain gets confused about TLS access through GOT (PIC), so disable TLS\n# movhi\tr4, %got_hiadj(%tls_ldo(fast_path_cache))\n# {standard input}:172: Error: bad expression\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII),y)\nPIXMAN_CFLAGS += -DPIXMAN_NO_TLS\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101737),y)\nPIXMAN_CFLAGS += -O0\nendif\n\nPIXMAN_CONF_OPTS += CFLAGS=\"$(PIXMAN_CFLAGS)\"\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/pixz/Config.in",
    "content": "config BR2_PACKAGE_PIXZ\n\tbool \"pixz\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR # libarchive\n\tselect BR2_PACKAGE_LIBARCHIVE\n\tselect BR2_PACKAGE_XZ\n\thelp\n\t  Pixz (pronounced pixie) is a parallel, indexing version of xz.\n\n\t  https://github.com/vasi/pixz\n\ncomment \"pixz needs a toolchain w/ threads, wchar\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/pixz/pixz.hash",
    "content": "# Locally computed:\nsha256  e5e32c6eb0bf112b98e74a5da8fb63b9f2cae71800f599d97ce540e150c8ddc5  pixz-1.0.7.tar.xz\nsha256  d036806b4d1efee7c6d86276451c4d833e9798751417e25daae62dfbe348641b  LICENSE\n"
  },
  {
    "path": "package/pixz/pixz.mk",
    "content": "################################################################################\n#\n# pixz\n#\n################################################################################\n\nPIXZ_VERSION = 1.0.7\nPIXZ_SITE = https://github.com/vasi/pixz/releases/download/v$(PIXZ_VERSION)\nPIXZ_SOURCE = pixz-$(PIXZ_VERSION).tar.xz\nPIXZ_DEPENDENCIES = host-pkgconf libarchive xz\nPIXZ_LICENSE = BSD-2-Clause\nPIXZ_LICENSE_FILES = LICENSE\n\n# pixz.1 is actually present, but AC_CHECK_FILE doesn't detect it when\n# cross-compiling, which causes configure to try to regenerate it. So give it a\n# hint to say that it actually is present.\nPIXZ_CONF_ENV = ac_cv_file_src_pixz_1=yes\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/pkcs11-helper/0001-nss-use-nss-pkcs11-h.patch",
    "content": "From d159a5c59c80552c3e8ea75d9bcf29b3a8e8289d Mon Sep 17 00:00:00 2001\nFrom: Alon Bar-Lev <alon.barlev@gmail.com>\nDate: Fri, 30 Jul 2021 20:06:36 +0300\nSubject: [PATCH] nss: use nss pkcs11.h\n\nmake nss happy with its own extensions and non-standard behavior.\n[Retrieved (and updated to remove ChangeLog update) from:\nhttps://github.com/OpenSC/pkcs11-helper/pull/39]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n ChangeLog                 |  1 +\n lib/_pkcs11h-crypto-nss.c | 14 ++++++++++----\n lib/common.h              |  7 +++++++\n 3 files changed, 18 insertions(+), 4 deletions(-)\n\ndiff --git a/lib/_pkcs11h-crypto-nss.c b/lib/_pkcs11h-crypto-nss.c\nindex 4b70e826..f57f9e6b 100644\n--- a/lib/_pkcs11h-crypto-nss.c\n+++ b/lib/_pkcs11h-crypto-nss.c\n@@ -48,15 +48,21 @@\n  * POSSIBILITY OF SUCH DAMAGE.\n  */\n \n-#include \"common.h\"\n-\n-#include \"_pkcs11h-crypto.h\"\n+#ifdef HAVE_CONFIG_H\n+#include <config.h>\n+#endif\n \n #if defined(ENABLE_PKCS11H_ENGINE_NSS)\n-#define _PKCS11T_H_ /* required so no conflict with ours */\n #include <nss.h>\n #include <cert.h>\n \n+/* Use PKCS#11 of nss to avoid conflicts and make nss happy with its own extensions */\n+#define PKCS11_H 1\n+\n+#include \"common.h\"\n+\n+#include \"_pkcs11h-crypto.h\"\n+\n static\n int\n __pkcs11h_crypto_nss_initialize (\ndiff --git a/lib/common.h b/lib/common.h\nindex 61a958af..2499e9c5 100644\n--- a/lib/common.h\n+++ b/lib/common.h\n@@ -72,5 +72,12 @@\n \n #define _PKCS11H_ASSERT\t\tassert\n \n+#ifndef FALSE\n+#define FALSE 0\n+#endif\n+#ifndef TRUE\n+#define TRUE 1\n+#endif\n+\n #endif\n \n"
  },
  {
    "path": "package/pkcs11-helper/Config.in",
    "content": "config BR2_PACKAGE_PKCS11_HELPER\n\tbool \"pkcs11-helper\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\thelp\n\t  pkcs11-helper is a library that simplifies the interaction\n\t  with PKCS#11 providers for end-user applications.\n\n\t  pkcs11-helper allows using multiple PKCS#11 providers at the\n\t  same time, enumerating available token certificates, or\n\t  selecting a certificate directly by serialized id, handling\n\t  card removal and card insert events, handling card re-insert\n\t  to a different slot, supporting session expiration and much\n\t  more all using a simple API.\n\n\t  pkcs11-helper is not designed to manage card content, since\n\t  object attributes are usually vendor specific, and 99% of\n\t  application need to access existing objects in order to\n\t  perform signature and decryption.\n\n\t  https://github.com/OpenSC/pkcs11-helper\n\ncomment \"pkcs11-helper needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/pkcs11-helper/pkcs11-helper.hash",
    "content": "# Locally computed\nsha256  653730f0c561bbf5941754c0783976113589b2dc64a0661c908dc878bfa4e58b  pkcs11-helper-1.27.0.tar.bz2\nsha256  808705ac1daafe07a76431929575c5712a8693977a39ec9102aed25f030754d9  COPYING\nsha256  865496cf23a6c792739ff2f9ea11e95ac99db89cfe3780a295b4e1495a9c19fe  COPYING.BSD\nsha256  cd2e7d63a11058f19c58b06fb8c759140ce70788369dce6e6e9db40d3475021e  COPYING.GPL\n"
  },
  {
    "path": "package/pkcs11-helper/pkcs11-helper.mk",
    "content": "################################################################################\n#\n# pkcs11-helper\n#\n################################################################################\n\nPKCS11_HELPER_VERSION = 1.27\nPKCS11_HELPER_SOURCE = pkcs11-helper-$(PKCS11_HELPER_VERSION).0.tar.bz2\nPKCS11_HELPER_SITE = https://github.com/OpenSC/pkcs11-helper/releases/download/pkcs11-helper-$(PKCS11_HELPER_VERSION)\nPKCS11_HELPER_LICENSE = GPL-2.0 or BSD-3-Clause\nPKCS11_HELPER_LICENSE_FILES = COPYING COPYING.BSD COPYING.GPL\nPKCS11_HELPER_DEPENDENCIES = host-pkgconf\nPKCS11_HELPER_AUTORECONF = YES\nPKCS11_HELPER_INSTALL_STAGING = YES\n\nPKCS11_HELPER_CONF_OPTS = \\\n\t--disable-crypto-engine-polarssl \\\n\t--disable-crypto-engine-cryptoapi\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nPKCS11_HELPER_CONF_OPTS += --enable-slotevent --enable-threading\nelse\nPKCS11_HELPER_CONF_OPTS += --disable-slotevent --disable-threading\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nPKCS11_HELPER_DEPENDENCIES += gnutls\nPKCS11_HELPER_CONF_OPTS += --enable-crypto-engine-gnutls\nelse\nPKCS11_HELPER_CONF_OPTS += --disable-crypto-engine-gnutls\nendif\n\nifeq ($(BR2_PACKAGE_LIBNSS),y)\nPKCS11_HELPER_DEPENDENCIES += libnss\nPKCS11_HELPER_CONF_OPTS += --enable-crypto-engine-nss\nelse\nPKCS11_HELPER_CONF_OPTS += --disable-crypto-engine-nss\nendif\n\nifeq ($(BR2_PACKAGE_MBEDTLS),y)\nPKCS11_HELPER_DEPENDENCIES += mbedtls\nPKCS11_HELPER_CONF_OPTS += --enable-crypto-engine-mbedtls\nelse\nPKCS11_HELPER_CONF_OPTS += --disable-crypto-engine-mbedtls\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nPKCS11_HELPER_DEPENDENCIES += openssl\nPKCS11_HELPER_CONF_OPTS += \\\n\t--enable-openssl \\\n\t--enable-crypto-engine-openssl\nelse\nPKCS11_HELPER_CONF_OPTS += \\\n\t--disable-openssl \\\n\t--disable-crypto-engine-openssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/pkg-autotools.mk",
    "content": "################################################################################\n# Autotools package infrastructure\n#\n# This file implements an infrastructure that eases development of\n# package .mk files for autotools packages. It should be used for all\n# packages that use the autotools as their build system.\n#\n# See the Buildroot documentation for details on the usage of this\n# infrastructure\n#\n# In terms of implementation, this autotools infrastructure requires\n# the .mk file to only specify metadata information about the\n# package: name, version, download URL, etc.\n#\n# We still allow the package .mk file to override what the different\n# steps are doing, if needed. For example, if <PKG>_BUILD_CMDS is\n# already defined, it is used as the list of commands to perform to\n# build the package, instead of the default autotools behaviour. The\n# package can also define some post operation hooks.\n#\n################################################################################\n\n\n#\n# Utility function to upgrade config.sub and config.guess files\n#\n# argument 1 : directory into which config.guess and config.sub need\n# to be updated. Note that config.sub and config.guess are searched\n# recursively in this directory.\n#\ndefine CONFIG_UPDATE\n\tfor file in config.guess config.sub; do \\\n\t\tfor i in $$(find $(1) -name $$file); do \\\n\t\t\tcp support/gnuconfig/$$file $$i; \\\n\t\tdone; \\\n\tdone\nendef\n\n# This function generates the ac_cv_file_<foo> value for a given\n# filename. This is needed to convince configure script doing\n# AC_CHECK_FILE() tests that the file actually exists, since such\n# tests cannot be done in a cross-compilation context. This function\n# takes as argument the path of the file. An example usage is:\n#\n#  FOOBAR_CONF_ENV = \\\n#\t$(call AUTOCONF_AC_CHECK_FILE_VAL,/dev/random)=yes\nAUTOCONF_AC_CHECK_FILE_VAL = ac_cv_file_$(subst -,_,$(subst /,_,$(subst .,_,$(1))))\n\n#\n# Hook to update config.sub and config.guess if needed\n#\ndefine UPDATE_CONFIG_HOOK\n\t@$(call MESSAGE,\"Updating config.sub and config.guess\")\n\t$(call CONFIG_UPDATE,$(@D))\nendef\n\n#\n# Hook to patch libtool to make it work properly for cross-compilation\n#\ndefine LIBTOOL_PATCH_HOOK\n\t@$(call MESSAGE,\"Patching libtool\")\n\t$(Q)for i in `find $($(PKG)_DIR) -name ltmain.sh`; do \\\n\t\tltmain_version=`sed -n '/^[ \\t]*VERSION=/{s/^[ \\t]*VERSION=//;p;q;}' $$i | \\\n\t\tsed -e 's/\\([0-9]*\\.[0-9]*\\).*/\\1/' -e 's/\\\"//'`; \\\n\t\tltmain_patchlevel=`sed -n '/^[ \\t]*VERSION=/{s/^[ \\t]*VERSION=//;p;q;}' $$i | \\\n\t\tsed -e 's/\\([0-9]*\\.[0-9]*\\.*\\)\\([0-9]*\\).*/\\2/' -e 's/\\\"//'`; \\\n\t\tif test $${ltmain_version} = '1.5'; then \\\n\t\t\tpatch -i support/libtool/buildroot-libtool-v1.5.patch $${i}; \\\n\t\telif test $${ltmain_version} = \"2.2\"; then\\\n\t\t\tpatch -i support/libtool/buildroot-libtool-v2.2.patch $${i}; \\\n\t\telif test $${ltmain_version} = \"2.4\"; then\\\n\t\t\tif test $${ltmain_patchlevel:-0} -gt 2; then\\\n\t\t\t\tpatch -i support/libtool/buildroot-libtool-v2.4.4.patch $${i}; \\\n\t\t\telse \\\n\t\t\t\tpatch -i support/libtool/buildroot-libtool-v2.4.patch $${i}; \\\n\t\t\tfi \\\n\t\tfi \\\n\tdone\nendef\n\n#\n# Hook to patch common issue with configure on powerpc64{,le} failing\n# to detect shared library support:\n#\ndefine CONFIGURE_FIX_POWERPC64_HOOK\n\t@$(call MESSAGE,\"Checking configure (powerpc64/powerpc64le)\")\n\tsupport/scripts/fix-configure-powerpc64.sh $($(PKG)_DIR)\nendef\n\n#\n# Hook to gettextize the package if needed\n#\ndefine GETTEXTIZE_HOOK\n\t@$(call MESSAGE,\"Gettextizing\")\n\t$(Q)cd $($(PKG)_SRCDIR) && $(GETTEXTIZE) $($(PKG)_GETTEXTIZE_OPTS)\nendef\n\n#\n# Hook to autoreconf the package if needed\n#\ndefine AUTORECONF_HOOK\n\t@$(call MESSAGE,\"Autoreconfiguring\")\n\t$(Q)cd $($(PKG)_SRCDIR) && $($(PKG)_AUTORECONF_ENV) $(AUTORECONF) $($(PKG)_AUTORECONF_OPTS)\nendef\n\n################################################################################\n# inner-autotools-package -- defines how the configuration, compilation and\n# installation of an autotools package should be done, implements a\n# few hooks to tune the build process for autotools specifities and\n# calls the generic package infrastructure to generate the necessary\n# make targets\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix\n#             for host packages\n#  argument 4 is the type (target or host)\n################################################################################\n\ndefine inner-autotools-package\n\nifndef $(2)_LIBTOOL_PATCH\n ifdef $(3)_LIBTOOL_PATCH\n  $(2)_LIBTOOL_PATCH = $$($(3)_LIBTOOL_PATCH)\n else\n  $(2)_LIBTOOL_PATCH ?= YES\n endif\nendif\n\nifndef $(2)_MAKE\n ifdef $(3)_MAKE\n  $(2)_MAKE = $$($(3)_MAKE)\n else\n  $(2)_MAKE ?= $$(MAKE)\n endif\nendif\n\nifndef $(2)_AUTORECONF\n ifdef $(3)_AUTORECONF\n  $(2)_AUTORECONF = $$($(3)_AUTORECONF)\n else\n  $(2)_AUTORECONF ?= NO\n endif\nendif\n\nifndef $(2)_GETTEXTIZE\n ifdef $(3)_GETTEXTIZE\n  $(2)_GETTEXTIZE = $$($(3)_GETTEXTIZE)\n else\n  $(2)_GETTEXTIZE ?= NO\n endif\nendif\n\nifeq ($(4),host)\n $(2)_GETTEXTIZE_OPTS ?= $$($(3)_GETTEXTIZE_OPTS)\nendif\n\nifeq ($(4),host)\n $(2)_AUTORECONF_OPTS ?= $$($(3)_AUTORECONF_OPTS)\nendif\n\n$(2)_CONF_ENV\t\t\t?=\n$(2)_CONF_OPTS\t\t\t?=\n$(2)_MAKE_ENV\t\t\t?=\n$(2)_MAKE_OPTS\t\t\t?=\n$(2)_INSTALL_OPTS                ?= install\n$(2)_INSTALL_STAGING_OPTS\t?= DESTDIR=$$(STAGING_DIR) install\n$(2)_INSTALL_TARGET_OPTS\t\t?= DESTDIR=$$(TARGET_DIR) install\n\n#\n# Configure step. Only define it if not already defined by the package\n# .mk file. And take care of the differences between host and target\n# packages.\n#\nifndef $(2)_CONFIGURE_CMDS\nifeq ($(4),target)\n\n# Configure package for target\ndefine $(2)_CONFIGURE_CMDS\n\t(cd $$($$(PKG)_SRCDIR) && rm -rf config.cache && \\\n\t$$(TARGET_CONFIGURE_OPTS) \\\n\t$$(TARGET_CONFIGURE_ARGS) \\\n\t$$($$(PKG)_CONF_ENV) \\\n\tCONFIG_SITE=/dev/null \\\n\t./configure \\\n\t\t--target=$$(GNU_TARGET_NAME) \\\n\t\t--host=$$(GNU_TARGET_NAME) \\\n\t\t--build=$$(GNU_HOST_NAME) \\\n\t\t--prefix=/usr \\\n\t\t--exec-prefix=/usr \\\n\t\t--sysconfdir=/etc \\\n\t\t--localstatedir=/var \\\n\t\t--program-prefix=\"\" \\\n\t\t--disable-gtk-doc \\\n\t\t--disable-gtk-doc-html \\\n\t\t--disable-doc \\\n\t\t--disable-docs \\\n\t\t--disable-documentation \\\n\t\t--with-xmlto=no \\\n\t\t--with-fop=no \\\n\t\t$$(if $$($$(PKG)_OVERRIDE_SRCDIR),,--disable-dependency-tracking) \\\n\t\t--enable-ipv6 \\\n\t\t$$(NLS_OPTS) \\\n\t\t$$(SHARED_STATIC_LIBS_OPTS) \\\n\t\t$$(QUIET) $$($$(PKG)_CONF_OPTS) \\\n\t)\nendef\nelse\n\n# Configure package for host\n# disable all kind of documentation generation in the process,\n# because it often relies on host tools which may or may not be\n# installed.\ndefine $(2)_CONFIGURE_CMDS\n\t(cd $$($$(PKG)_SRCDIR) && rm -rf config.cache; \\\n\t$$(HOST_CONFIGURE_OPTS) \\\n\tCFLAGS=\"$$(HOST_CFLAGS)\" \\\n\tLDFLAGS=\"$$(HOST_LDFLAGS)\" \\\n\t$$($$(PKG)_CONF_ENV) \\\n\tCONFIG_SITE=/dev/null \\\n\t./configure \\\n\t\t--prefix=\"$$(HOST_DIR)\" \\\n\t\t--sysconfdir=\"$$(HOST_DIR)/etc\" \\\n\t\t--localstatedir=\"$$(HOST_DIR)/var\" \\\n\t\t--enable-shared --disable-static \\\n\t\t--disable-gtk-doc \\\n\t\t--disable-gtk-doc-html \\\n\t\t--disable-doc \\\n\t\t--disable-docs \\\n\t\t--disable-documentation \\\n\t\t--disable-debug \\\n\t\t--with-xmlto=no \\\n\t\t--with-fop=no \\\n\t\t--disable-nls \\\n\t\t$$(if $$($$(PKG)_OVERRIDE_SRCDIR),,--disable-dependency-tracking) \\\n\t\t$$(QUIET) $$($$(PKG)_CONF_OPTS) \\\n\t)\nendef\nendif\nendif\n\n$(2)_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK\n\nifeq ($$($(2)_AUTORECONF),YES)\n\n# This has to come before autoreconf\nifeq ($$($(2)_GETTEXTIZE),YES)\n$(2)_PRE_CONFIGURE_HOOKS += GETTEXTIZE_HOOK\n$(2)_DEPENDENCIES += host-gettext\nendif\n$(2)_PRE_CONFIGURE_HOOKS += AUTORECONF_HOOK\n# default values are not evaluated yet, so don't rely on this defaulting to YES\nifneq ($$($(2)_LIBTOOL_PATCH),NO)\n$(2)_PRE_CONFIGURE_HOOKS += LIBTOOL_PATCH_HOOK\nendif\n$(2)_DEPENDENCIES += host-automake host-autoconf host-libtool\n\nelse # ! AUTORECONF = YES\n\n# default values are not evaluated yet, so don't rely on this defaulting to YES\nifneq ($$($(2)_LIBTOOL_PATCH),NO)\n$(2)_POST_PATCH_HOOKS += LIBTOOL_PATCH_HOOK\nendif\n\nendif\n\n# Append a configure hook if building for a powerpc64 (or powerpc64le) arch.\n# Must be added after other pre-configure hooks that might regenerate the\n# configure script and overwrite the changes made here.\nifneq ($$(filter powerpc64%,$$(if $$(filter target,$(4)),$$(ARCH),$$(HOSTARCH))),)\n$(2)_PRE_CONFIGURE_HOOKS += CONFIGURE_FIX_POWERPC64_HOOK\nendif\n\n#\n# Build step. Only define it if not already defined by the package .mk\n# file.\n#\nifndef $(2)_BUILD_CMDS\nifeq ($(4),target)\ndefine $(2)_BUILD_CMDS\n\t$$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) -C $$($$(PKG)_SRCDIR)\nendef\nelse\ndefine $(2)_BUILD_CMDS\n\t$$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) -C $$($$(PKG)_SRCDIR)\nendef\nendif\nendif\n\n#\n# Host installation step. Only define it if not already defined by the\n# package .mk file.\n#\nifndef $(2)_INSTALL_CMDS\ndefine $(2)_INSTALL_CMDS\n\t$$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_OPTS) -C $$($$(PKG)_SRCDIR)\nendef\nendif\n\n#\n# Staging installation step. Only define it if not already defined by\n# the package .mk file.\n#\nifndef $(2)_INSTALL_STAGING_CMDS\ndefine $(2)_INSTALL_STAGING_CMDS\n\t$$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_STAGING_OPTS) -C $$($$(PKG)_SRCDIR)\nendef\nendif\n\n#\n# Target installation step. Only define it if not already defined by\n# the package .mk file.\n#\nifndef $(2)_INSTALL_TARGET_CMDS\ndefine $(2)_INSTALL_TARGET_CMDS\n\t$$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_TARGET_OPTS) -C $$($$(PKG)_SRCDIR)\nendef\nendif\n\n# Call the generic package infrastructure to generate the necessary\n# make targets\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\n\nendef\n\n################################################################################\n# autotools-package -- the target generator macro for autotools packages\n################################################################################\n\nautotools-package = $(call inner-autotools-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\nhost-autotools-package = $(call inner-autotools-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)\n"
  },
  {
    "path": "package/pkg-cmake.mk",
    "content": "################################################################################\n# CMake package infrastructure\n#\n# This file implements an infrastructure that eases development of\n# package .mk files for CMake packages. It should be used for all\n# packages that use CMake as their build system.\n#\n# See the Buildroot documentation for details on the usage of this\n# infrastructure\n#\n# In terms of implementation, this CMake infrastructure requires\n# the .mk file to only specify metadata information about the\n# package: name, version, download URL, etc.\n#\n# We still allow the package .mk file to override what the different\n# steps are doing, if needed. For example, if <PKG>_BUILD_CMDS is\n# already defined, it is used as the list of commands to perform to\n# build the package, instead of the default CMake behaviour. The\n# package can also define some post operation hooks.\n#\n################################################################################\n\n# Set compiler variables.\nifeq ($(BR2_CCACHE),y)\nCMAKE_HOST_C_COMPILER = $(HOSTCC_NOCCACHE)\nCMAKE_HOST_CXX_COMPILER = $(HOSTCXX_NOCCACHE)\nCMAKE_HOST_C_COMPILER_LAUNCHER = $(HOST_DIR)/bin/ccache\nCMAKE_HOST_CXX_COMPILER_LAUNCHER = $(HOST_DIR)/bin/ccache\nelse\nCMAKE_HOST_C_COMPILER = $(HOSTCC)\nCMAKE_HOST_CXX_COMPILER = $(HOSTCXX)\nendif\n\nifneq ($(QUIET),)\nCMAKE_QUIET = -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_INSTALL_MESSAGE=NEVER\nendif\n\n################################################################################\n# inner-cmake-package -- defines how the configuration, compilation and\n# installation of a CMake package should be done, implements a few hooks to\n# tune the build process and calls the generic package infrastructure to\n# generate the necessary make targets\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix\n#             for host packages\n#  argument 4 is the type (target or host)\n################################################################################\n\ndefine inner-cmake-package\n\n$(2)_CONF_ENV\t\t\t?=\n$(2)_CONF_OPTS\t\t\t?=\n$(2)_MAKE\t\t\t?= $$(MAKE)\n$(2)_MAKE_ENV\t\t\t?=\n$(2)_MAKE_OPTS\t\t\t?=\n$(2)_INSTALL_OPTS\t\t?= install\n$(2)_INSTALL_STAGING_OPTS\t?= DESTDIR=$$(STAGING_DIR) install/fast\n$(2)_INSTALL_TARGET_OPTS\t?= DESTDIR=$$(TARGET_DIR) install/fast\n\n$(3)_SUPPORTS_IN_SOURCE_BUILD ?= YES\n\n\nifeq ($$($(3)_SUPPORTS_IN_SOURCE_BUILD),YES)\n$(2)_BUILDDIR\t\t\t= $$($(2)_SRCDIR)\nelse\n$(2)_BUILDDIR\t\t\t= $$($(2)_SRCDIR)/buildroot-build\nendif\n\n#\n# Configure step. Only define it if not already defined by the package\n# .mk file. And take care of the differences between host and target\n# packages.\n#\nifndef $(2)_CONFIGURE_CMDS\nifeq ($(4),target)\n\n# Configure package for target\n#\n# - We are passing BUILD_SHARED_LIBS because it is documented as a\n#   standard CMake variable to control the build of shared libraries\n#   (see https://cmake.org/cmake/help/v3.8/manual/cmake-variables.7.html#variables-that-change-behavior)\n# - We are not passing BUILD_STATIC_LIBS because it is *not*\n#   documented as a standard CMake variable. If a package supports it,\n#   it must handle it explicitly.\n#\ndefine $(2)_CONFIGURE_CMDS\n\t(mkdir -p $$($$(PKG)_BUILDDIR) && \\\n\tcd $$($$(PKG)_BUILDDIR) && \\\n\trm -f CMakeCache.txt && \\\n\tPATH=$$(BR_PATH) \\\n\t$$($$(PKG)_CONF_ENV) $$(BR2_CMAKE) $$($$(PKG)_SRCDIR) \\\n\t\t-DCMAKE_TOOLCHAIN_FILE=\"$$(HOST_DIR)/share/buildroot/toolchainfile.cmake\" \\\n\t\t-DCMAKE_INSTALL_PREFIX=\"/usr\" \\\n\t\t-DCMAKE_COLOR_MAKEFILE=OFF \\\n\t\t-DBUILD_DOC=OFF \\\n\t\t-DBUILD_DOCS=OFF \\\n\t\t-DBUILD_EXAMPLE=OFF \\\n\t\t-DBUILD_EXAMPLES=OFF \\\n\t\t-DBUILD_TEST=OFF \\\n\t\t-DBUILD_TESTS=OFF \\\n\t\t-DBUILD_TESTING=OFF \\\n\t\t-DBUILD_SHARED_LIBS=$$(if $$(BR2_STATIC_LIBS),OFF,ON) \\\n\t\t$$(CMAKE_QUIET) \\\n\t\t$$($$(PKG)_CONF_OPTS) \\\n\t)\nendef\nelse\n\n# Configure package for host\ndefine $(2)_CONFIGURE_CMDS\n\t(mkdir -p $$($$(PKG)_BUILDDIR) && \\\n\tcd $$($$(PKG)_BUILDDIR) && \\\n\trm -f CMakeCache.txt && \\\n\tPATH=$$(BR_PATH) \\\n\tPKG_CONFIG=\"$$(PKG_CONFIG_HOST_BINARY)\" \\\n\tPKG_CONFIG_SYSROOT_DIR=\"/\" \\\n\tPKG_CONFIG_LIBDIR=\"$$(HOST_DIR)/lib/pkgconfig:$$(HOST_DIR)/share/pkgconfig\" \\\n\tPKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \\\n\tPKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \\\n\t$$($$(PKG)_CONF_ENV) $$(BR2_CMAKE) $$($$(PKG)_SRCDIR) \\\n\t\t-DCMAKE_INSTALL_SO_NO_EXE=0 \\\n\t\t-DCMAKE_FIND_ROOT_PATH=\"$$(HOST_DIR)\" \\\n\t\t-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=\"BOTH\" \\\n\t\t-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=\"BOTH\" \\\n\t\t-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=\"BOTH\" \\\n\t\t-DCMAKE_INSTALL_PREFIX=\"$$(HOST_DIR)\" \\\n\t\t-DCMAKE_C_FLAGS=\"$$(HOST_CFLAGS)\" \\\n\t\t-DCMAKE_CXX_FLAGS=\"$$(HOST_CXXFLAGS)\" \\\n\t\t-DCMAKE_EXE_LINKER_FLAGS=\"$$(HOST_LDFLAGS)\" \\\n\t\t-DCMAKE_SHARED_LINKER_FLAGS=\"$$(HOST_LDFLAGS)\" \\\n\t\t-DCMAKE_ASM_COMPILER=\"$$(HOSTAS)\" \\\n\t\t-DCMAKE_C_COMPILER=\"$$(CMAKE_HOST_C_COMPILER)\" \\\n\t\t-DCMAKE_CXX_COMPILER=\"$$(CMAKE_HOST_CXX_COMPILER)\" \\\n\t\t$(if $$(CMAKE_HOST_C_COMPILER_LAUNCHER),\\\n\t\t\t-DCMAKE_C_COMPILER_LAUNCHER=\"$$(CMAKE_HOST_C_COMPILER_LAUNCHER)\" \\\n\t\t\t-DCMAKE_CXX_COMPILER_LAUNCHER=\"$$(CMAKE_HOST_CXX_COMPILER_LAUNCHER)\" \\\n\t\t) \\\n\t\t-DCMAKE_COLOR_MAKEFILE=OFF \\\n\t\t-DBUILD_DOC=OFF \\\n\t\t-DBUILD_DOCS=OFF \\\n\t\t-DBUILD_EXAMPLE=OFF \\\n\t\t-DBUILD_EXAMPLES=OFF \\\n\t\t-DBUILD_TEST=OFF \\\n\t\t-DBUILD_TESTS=OFF \\\n\t\t-DBUILD_TESTING=OFF \\\n\t\t-DBUILD_SHARED_LIBS=ON \\\n\t\t$$(CMAKE_QUIET) \\\n\t\t$$($$(PKG)_CONF_OPTS) \\\n\t)\nendef\nendif\nendif\n\n# Since some CMake modules (even upstream ones) use pgk_check_modules\n# primitives to find {C,LD}FLAGS, add it to the dependency list.\n$(2)_DEPENDENCIES += host-pkgconf\n\n$(2)_DEPENDENCIES += $(BR2_CMAKE_HOST_DEPENDENCY)\n\n#\n# Build step. Only define it if not already defined by the package .mk\n# file.\n#\nifndef $(2)_BUILD_CMDS\nifeq ($(4),target)\ndefine $(2)_BUILD_CMDS\n\t$$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) -C $$($$(PKG)_BUILDDIR)\nendef\nelse\ndefine $(2)_BUILD_CMDS\n\t$$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) -C $$($$(PKG)_BUILDDIR)\nendef\nendif\nendif\n\n#\n# Host installation step. Only define it if not already defined by the\n# package .mk file.\n#\nifndef $(2)_INSTALL_CMDS\ndefine $(2)_INSTALL_CMDS\n\t$$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) $$($$(PKG)_INSTALL_OPTS) -C $$($$(PKG)_BUILDDIR)\nendef\nendif\n\n#\n# Staging installation step. Only define it if not already defined by\n# the package .mk file.\n#\nifndef $(2)_INSTALL_STAGING_CMDS\ndefine $(2)_INSTALL_STAGING_CMDS\n\t$$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) $$($$(PKG)_INSTALL_STAGING_OPTS) -C $$($$(PKG)_BUILDDIR)\nendef\nendif\n\n#\n# Target installation step. Only define it if not already defined by\n# the package .mk file.\n#\nifndef $(2)_INSTALL_TARGET_CMDS\ndefine $(2)_INSTALL_TARGET_CMDS\n\t$$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) $$($$(PKG)_INSTALL_TARGET_OPTS) -C $$($$(PKG)_BUILDDIR)\nendef\nendif\n\n# Call the generic package infrastructure to generate the necessary\n# make targets\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\n\nendef\n\n################################################################################\n# cmake-package -- the target generator macro for CMake packages\n################################################################################\n\ncmake-package = $(call inner-cmake-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\nhost-cmake-package = $(call inner-cmake-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)\n\n################################################################################\n# Generation of the CMake toolchain file\n################################################################################\n\n# CMAKE_SYSTEM_PROCESSOR should match uname -m\nifeq ($(BR2_ARM_CPU_ARMV4),y)\nCMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv4\nelse ifeq ($(BR2_ARM_CPU_ARMV5),y)\nCMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv5\nelse ifeq ($(BR2_ARM_CPU_ARMV6),y)\nCMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv6\nelse ifeq ($(BR2_ARM_CPU_ARMV7A),y)\nCMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv7\nelse ifeq ($(BR2_ARM_CPU_ARMV8A),y)\nCMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv8\nendif\n\nifeq ($(BR2_arm),y)\nCMAKE_SYSTEM_PROCESSOR = $(CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT)l\nelse ifeq ($(BR2_armeb),y)\nCMAKE_SYSTEM_PROCESSOR = $(CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT)b\nelse ifeq ($(call qstrip,$(BR2_ARCH)),powerpc64)\nCMAKE_SYSTEM_PROCESSOR = ppc64\nelse ifeq ($(call qstrip,$(BR2_ARCH)),powerpc64le)\nCMAKE_SYSTEM_PROCESSOR = ppc64le\nelse\nCMAKE_SYSTEM_PROCESSOR = $(BR2_ARCH)\nendif\n\n# In order to allow the toolchain to be relocated, we calculate the HOST_DIR\n# based on the toolchainfile.cmake file's location: $(HOST_DIR)/share/buildroot\n# In all the other variables, HOST_DIR will be replaced by RELOCATED_HOST_DIR,\n# so we have to strip \"$(HOST_DIR)/\" from the paths that contain it.\ndefine TOOLCHAIN_CMAKE_INSTALL_FILES\n\t@mkdir -p $(HOST_DIR)/share/buildroot\n\tsed \\\n\t\t-e 's#@@STAGING_SUBDIR@@#$(call qstrip,$(STAGING_SUBDIR))#' \\\n\t\t-e 's#@@TARGET_CFLAGS@@#$(call qstrip,$(TARGET_CFLAGS))#' \\\n\t\t-e 's#@@TARGET_CXXFLAGS@@#$(call qstrip,$(TARGET_CXXFLAGS))#' \\\n\t\t-e 's#@@TARGET_FCFLAGS@@#$(call qstrip,$(TARGET_FCFLAGS))#' \\\n\t\t-e 's#@@TARGET_LDFLAGS@@#$(call qstrip,$(TARGET_LDFLAGS))#' \\\n\t\t-e 's#@@TARGET_CC@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_CC)))#' \\\n\t\t-e 's#@@TARGET_CXX@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_CXX)))#' \\\n\t\t-e 's#@@TARGET_FC@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_FC)))#' \\\n\t\t-e 's#@@CMAKE_SYSTEM_PROCESSOR@@#$(call qstrip,$(CMAKE_SYSTEM_PROCESSOR))#' \\\n\t\t-e 's#@@TOOLCHAIN_HAS_CXX@@#$(if $(BR2_INSTALL_LIBSTDCPP),1,0)#' \\\n\t\t-e 's#@@TOOLCHAIN_HAS_FORTRAN@@#$(if $(BR2_TOOLCHAIN_HAS_FORTRAN),1,0)#' \\\n\t\t-e 's#@@CMAKE_BUILD_TYPE@@#$(if $(BR2_ENABLE_RUNTIME_DEBUG),Debug,Release)#' \\\n\t\t$(TOPDIR)/support/misc/toolchainfile.cmake.in \\\n\t\t> $(HOST_DIR)/share/buildroot/toolchainfile.cmake\n\t$(Q)$(INSTALL) -D -m 0644 support/misc/Buildroot.cmake \\\n\t\t$(HOST_DIR)/share/buildroot/Platform/Buildroot.cmake\nendef\n\nTOOLCHAIN_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_CMAKE_INSTALL_FILES\n"
  },
  {
    "path": "package/pkg-download.mk",
    "content": "################################################################################\n#\n# This file contains the download helpers for the various package\n# infrastructures. It is used to handle downloads from HTTP servers,\n# FTP servers, Git repositories, Subversion repositories, Mercurial\n# repositories, Bazaar repositories, and SCP servers.\n#\n################################################################################\n\n# Download method commands\nexport WGET := $(call qstrip,$(BR2_WGET))\nexport SVN := $(call qstrip,$(BR2_SVN))\nexport CVS := $(call qstrip,$(BR2_CVS))\nexport BZR := $(call qstrip,$(BR2_BZR))\nexport GIT := $(call qstrip,$(BR2_GIT))\nexport HG := $(call qstrip,$(BR2_HG))\nexport SCP := $(call qstrip,$(BR2_SCP))\nexport LOCALFILES := $(call qstrip,$(BR2_LOCALFILES))\n\n# Version of the format of the archives we generate in the corresponding\n# download backend:\nBR_FMT_VERSION_git = -br1\nBR_FMT_VERSION_svn = -br2\n\nDL_WRAPPER = support/download/dl-wrapper\n\n# DL_DIR may have been set already from the environment\nifeq ($(origin DL_DIR),undefined)\nDL_DIR ?= $(call qstrip,$(BR2_DL_DIR))\nifeq ($(DL_DIR),)\nDL_DIR := $(TOPDIR)/dl\nendif\nelse\n# Restore the BR2_DL_DIR that was overridden by the .config file\nBR2_DL_DIR = $(DL_DIR)\nendif\n\n# ensure it exists and a absolute path, derefrecing symlinks\nDL_DIR := $(shell mkdir -p $(DL_DIR) && cd $(DL_DIR) >/dev/null && pwd -P)\n\n#\n# URI scheme helper functions\n# Example URIs:\n# * http://www.example.com/dir/file\n# * scp://www.example.com:dir/file (with domainseparator :)\n#\n# geturischeme: http\ngeturischeme = $(firstword $(subst ://, ,$(call qstrip,$(1))))\n# getschemeplusuri: git|parameter+http://example.com\ngetschemeplusuri = $(call geturischeme,$(1))$(if $(2),\\|$(2))+$(1)\n# stripurischeme: www.example.com/dir/file\nstripurischeme = $(lastword $(subst ://, ,$(call qstrip,$(1))))\n# domain: www.example.com\ndomain = $(firstword $(subst $(call domainseparator,$(2)), ,$(call stripurischeme,$(1))))\n# notdomain: dir/file\nnotdomain = $(patsubst $(call domain,$(1),$(2))$(call domainseparator,$(2))%,%,$(call stripurischeme,$(1)))\n#\n# default domainseparator is /, specify alternative value as first argument\ndomainseparator = $(if $(1),$(1),/)\n\n# github(user,package,version): returns site of GitHub repository\ngithub = https://github.com/$(1)/$(2)/archive/$(3)\n\n# gitlab(user,package,version): returns site of Gitlab-generated tarball\ngitlab = https://gitlab.com/$(1)/$(2)/-/archive/$(3)\n\n# Expressly do not check hashes for those files\n# Exported variables default to immediately expanded in some versions of\n# make, but we need it to be recursively-epxanded, so explicitly assign it.\nexport BR_NO_CHECK_HASH_FOR =\n\n################################################################################\n# DOWNLOAD_URIS - List the candidates URIs where to get the package from:\n# 1) BR2_PRIMARY_SITE if enabled\n# 2) Download site, unless BR2_PRIMARY_SITE_ONLY is set\n# 3) BR2_BACKUP_SITE if enabled, unless BR2_PRIMARY_SITE_ONLY is set\n#\n# Argument 1 is the source location\n# Argument 2 is the upper-case package name\n#\n################################################################################\n\nifneq ($(call qstrip,$(BR2_PRIMARY_SITE)),)\nDOWNLOAD_URIS += \\\n\t$(call getschemeplusuri,$(call qstrip,$(BR2_PRIMARY_SITE)/$($(2)_DL_SUBDIR)),urlencode) \\\n\t$(call getschemeplusuri,$(call qstrip,$(BR2_PRIMARY_SITE)),urlencode)\nendif\n\nifeq ($(BR2_PRIMARY_SITE_ONLY),)\nDOWNLOAD_URIS += \\\n\t$(patsubst %/,%,$(dir $(call qstrip,$(1))))\nifneq ($(call qstrip,$(BR2_BACKUP_SITE)),)\nDOWNLOAD_URIS += \\\n\t$(call getschemeplusuri,$(call qstrip,$(BR2_BACKUP_SITE)/$($(2)_DL_SUBDIR)),urlencode) \\\n\t$(call getschemeplusuri,$(call qstrip,$(BR2_BACKUP_SITE)),urlencode)\nendif\nendif\n\n################################################################################\n# DOWNLOAD -- Download helper. Will call DL_WRAPPER which will try to download\n# source from the list returned by DOWNLOAD_URIS.\n#\n# Argument 1 is the source location\n# Argument 2 is the upper-case package name\n#\n################################################################################\n\ndefine DOWNLOAD\n\t$(Q)mkdir -p $($(2)_DL_DIR)\n\t$(Q)$(EXTRA_ENV) $($(2)_DL_ENV) \\\n\t\tflock $($(2)_DL_DIR)/.lock $(DL_WRAPPER) \\\n\t\t-c '$($(2)_DL_VERSION)' \\\n\t\t-d '$($(2)_DL_DIR)' \\\n\t\t-D '$(DL_DIR)' \\\n\t\t-f '$(notdir $(1))' \\\n\t\t-H '$($(2)_HASH_FILE)' \\\n\t\t-n '$($(2)_BASENAME_RAW)' \\\n\t\t-N '$($(2)_RAWNAME)' \\\n\t\t-o '$($(2)_DL_DIR)/$(notdir $(1))' \\\n\t\t$(if $($(2)_GIT_SUBMODULES),-r) \\\n\t\t$(foreach uri,$(call DOWNLOAD_URIS,$(1),$(2)),-u $(uri)) \\\n\t\t$(QUIET) \\\n\t\t-- \\\n\t\t$($(2)_DL_OPTS)\nendef\n"
  },
  {
    "path": "package/pkg-generic.mk",
    "content": "################################################################################\n# Generic package infrastructure\n#\n# This file implements an infrastructure that eases development of\n# package .mk files. It should be used for packages that do not rely\n# on a well-known build system for which Buildroot has a dedicated\n# infrastructure (so far, Buildroot has special support for\n# autotools-based and CMake-based packages).\n#\n# See the Buildroot documentation for details on the usage of this\n# infrastructure\n#\n# In terms of implementation, this generic infrastructure requires the\n# .mk file to specify:\n#\n#   1. Metadata information about the package: name, version,\n#      download URL, etc.\n#\n#   2. Description of the commands to be executed to configure, build\n#      and install the package\n################################################################################\n\n################################################################################\n# Helper functions to catch start/end of each step\n################################################################################\n\n# Those two functions are called by each step below.\n# They are responsible for calling all hooks defined in\n# $(GLOBAL_INSTRUMENTATION_HOOKS) and pass each of them\n# three arguments:\n#   $1: either 'start' or 'end'\n#   $2: the name of the step\n#   $3: the name of the package\n\n# Start step\n# $1: step name\ndefine step_start\n\t$(foreach hook,$(GLOBAL_INSTRUMENTATION_HOOKS),$(call $(hook),start,$(1),$($(PKG)_NAME))$(sep))\nendef\n\n# End step\n# $1: step name\ndefine step_end\n\t$(foreach hook,$(GLOBAL_INSTRUMENTATION_HOOKS),$(call $(hook),end,$(1),$($(PKG)_NAME))$(sep))\nendef\n\n#######################################\n# Actual steps hooks\n\n# Time steps\ndefine step_time\n\tprintf \"%s:%-5.5s:%-20.20s: %s\\n\"           \\\n\t       \"$$(date +%s.%N)\" \"$(1)\" \"$(2)\" \"$(3)\"  \\\n\t       >>\"$(BUILD_DIR)/build-time.log\"\nendef\nGLOBAL_INSTRUMENTATION_HOOKS += step_time\n\n# This hook checks that host packages that need libraries that we build\n# have a proper DT_RPATH or DT_RUNPATH tag\ndefine check_host_rpath\n\t$(if $(filter install-host,$(2)),\\\n\t\t$(if $(filter end,$(1)),support/scripts/check-host-rpath $(3) $(HOST_DIR) $(PER_PACKAGE_DIR)))\nendef\nGLOBAL_INSTRUMENTATION_HOOKS += check_host_rpath\n\ndefine step_check_build_dir_one\n\tif [ -d $(2) ]; then \\\n\t\tprintf \"%s: installs files in %s\\n\" $(1) $(2) >&2; \\\n\t\texit 1; \\\n\tfi\nendef\n\ndefine step_check_build_dir\n\t$(if $(filter install-staging,$(2)),\\\n\t\t$(if $(filter end,$(1)),$(call step_check_build_dir_one,$(3),$(STAGING_DIR)/$(O))))\n\t$(if $(filter install-target,$(2)),\\\n\t\t$(if $(filter end,$(1)),$(call step_check_build_dir_one,$(3),$(TARGET_DIR)/$(O))))\nendef\nGLOBAL_INSTRUMENTATION_HOOKS += step_check_build_dir\n\n# User-supplied script\nifneq ($(BR2_INSTRUMENTATION_SCRIPTS),)\ndefine step_user\n\t@$(foreach user_hook, $(BR2_INSTRUMENTATION_SCRIPTS), \\\n\t\t$(EXTRA_ENV) $(user_hook) \"$(1)\" \"$(2)\" \"$(3)\"$(sep))\nendef\nGLOBAL_INSTRUMENTATION_HOOKS += step_user\nendif\n\n#######################################\n# Helper functions\n\n# Make sure .la files only reference the current per-package\n# directory.\n\n# $1: package name (lower case)\n# $2: staging directory of the package\nifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)\ndefine fixup-libtool-files\n\t$(Q)find $(2) \\( -path '$(2)/lib*' -o -path '$(2)/usr/lib*' \\) \\\n\t\t-name \"*.la\" -print0 | xargs -0 --no-run-if-empty \\\n\t\t$(SED) \"s:$(PER_PACKAGE_DIR)/[^/]\\+/:$(PER_PACKAGE_DIR)/$(1)/:g\"\nendef\nendif\n\n# Make sure python _sysconfigdata*.py files only reference the current\n# per-package directory.\n#\n# Can't use $(foreach d, $(HOST_DIR)/lib/python* $(STAGING_DIR)/usr/lib/python*, ...)\n# because those directories may be created in the same recipe this macro will\n# be expanded in.\n# Additionally, either or both may be missing, which would make find whine and\n# fail.\n# So we just use HOST_DIR as a starting point, and filter on the two directories\n# of interest.\nifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)\ndefine FIXUP_PYTHON_SYSCONFIGDATA\n\t$(Q)find $(HOST_DIR) \\\n\t\t\\(    -path '$(HOST_DIR)/lib/python*' \\\n\t\t   -o -path '$(STAGING_DIR)/usr/lib/python*' \\\n\t\t\\) \\\n\t\t\\(    \\( -name \"_sysconfigdata*.pyc\" -delete \\) \\\n\t\t   -o \\( -name \"_sysconfigdata*.py\" -print0 \\) \\\n\t\t\\) \\\n\t| xargs -0 --no-run-if-empty \\\n\t\t$(SED) 's:$(PER_PACKAGE_DIR)/[^/]\\+/:$(PER_PACKAGE_DIR)/$($(PKG)_NAME)/:g'\nendef\nendif\n\n# Functions to collect statistics about installed files\n\n# $(1): base directory to search in\n# $(2): suffix of file (optional)\ndefine pkg_size_before\n\tcd $(1); \\\n\tLC_ALL=C find . -not -path './$(STAGING_SUBDIR)/*' \\( -type f -o -type l \\) -printf '%T@:%i:%#m:%y:%s,%p\\n' \\\n\t\t| LC_ALL=C sort > $($(PKG)_DIR)/.files-list$(2).before\nendef\n\n# $(1): base directory to search in\n# $(2): suffix of file (optional)\ndefine pkg_size_after\n\tcd $(1); \\\n\tLC_ALL=C find . -not -path './$(STAGING_SUBDIR)/*' \\( -type f -o -type l \\) -printf '%T@:%i:%#m:%y:%s,%p\\n' \\\n\t\t| LC_ALL=C sort > $($(PKG)_DIR)/.files-list$(2).after\n\tLC_ALL=C comm -13 \\\n\t\t$($(PKG)_DIR)/.files-list$(2).before \\\n\t\t$($(PKG)_DIR)/.files-list$(2).after \\\n\t\t| sed -r -e 's/^[^,]+/$($(PKG)_NAME)/' \\\n\t\t> $($(PKG)_DIR)/.files-list$(2).txt\n\trm -f $($(PKG)_DIR)/.files-list$(2).before\n\trm -f $($(PKG)_DIR)/.files-list$(2).after\nendef\n\ndefine check_bin_arch\n\tsupport/scripts/check-bin-arch -p $($(PKG)_NAME) \\\n\t\t-l $($(PKG)_DIR)/.files-list.txt \\\n\t\t$(foreach i,$($(PKG)_BIN_ARCH_EXCLUDE),-i \"$(i)\") \\\n\t\t-r $(TARGET_READELF) \\\n\t\t-a $(BR2_READELF_ARCH_NAME)\nendef\n\n# Functions to remove conflicting and useless files\n\n# $1: base directory (target, staging, host)\ndefine remove-conflicting-useless-files\n\t$(if $(strip $($(PKG)_DROP_FILES_OR_DIRS)),\n\t\t$(Q)$(RM) -rf $(patsubst %, $(1)%, $($(PKG)_DROP_FILES_OR_DIRS)))\nendef\ndefine REMOVE_CONFLICTING_USELESS_FILES_IN_HOST\n\t$(call remove-conflicting-useless-files,$(HOST_DIR))\nendef\ndefine REMOVE_CONFLICTING_USELESS_FILES_IN_STAGING\n\t$(call remove-conflicting-useless-files,$(STAGING_DIR))\nendef\ndefine REMOVE_CONFLICTING_USELESS_FILES_IN_TARGET\n\t$(call remove-conflicting-useless-files,$(TARGET_DIR))\nendef\n\n################################################################################\n# Implicit targets -- produce a stamp file for each step of a package build\n################################################################################\n\n# Retrieve the archive\n$(BUILD_DIR)/%/.stamp_downloaded:\n\t@$(call step_start,download)\n\t$(call prepare-per-package-directory,$($(PKG)_FINAL_DOWNLOAD_DEPENDENCIES))\n\t$(foreach hook,$($(PKG)_PRE_DOWNLOAD_HOOKS),$(call $(hook))$(sep))\n# Only show the download message if it isn't already downloaded\n\t$(Q)for p in $($(PKG)_ALL_DOWNLOADS); do \\\n\t\tif test ! -e $($(PKG)_DL_DIR)/`basename $$p` ; then \\\n\t\t\t$(call MESSAGE,\"Downloading\") ; \\\n\t\t\tbreak ; \\\n\t\tfi ; \\\n\tdone\n\t$(foreach p,$($(PKG)_ALL_DOWNLOADS),$(call DOWNLOAD,$(p),$(PKG))$(sep))\n\t$(foreach hook,$($(PKG)_POST_DOWNLOAD_HOOKS),$(call $(hook))$(sep))\n\t$(Q)mkdir -p $(@D)\n\t@$(call step_end,download)\n\t$(Q)touch $@\n\n# Retrieve actual source archive, e.g. for prebuilt external toolchains\n$(BUILD_DIR)/%/.stamp_actual_downloaded:\n\t@$(call step_start,actual-download)\n\t$(call DOWNLOAD,$($(PKG)_ACTUAL_SOURCE_SITE)/$($(PKG)_ACTUAL_SOURCE_TARBALL),$(PKG))\n\t$(Q)mkdir -p $(@D)\n\t@$(call step_end,actual-download)\n\t$(Q)touch $@\n\n# Unpack the archive\n$(BUILD_DIR)/%/.stamp_extracted:\n\t@$(call step_start,extract)\n\t@$(call MESSAGE,\"Extracting\")\n\t$(call prepare-per-package-directory,$($(PKG)_FINAL_EXTRACT_DEPENDENCIES))\n\t$(foreach hook,$($(PKG)_PRE_EXTRACT_HOOKS),$(call $(hook))$(sep))\n\t$(Q)mkdir -p $(@D)\n\t$($(PKG)_EXTRACT_CMDS)\n# some packages have messed up permissions inside\n\t$(Q)chmod -R +rw $(@D)\n\t$(foreach hook,$($(PKG)_POST_EXTRACT_HOOKS),$(call $(hook))$(sep))\n\t@$(call step_end,extract)\n\t$(Q)touch $@\n\n# Rsync the source directory if the <pkg>_OVERRIDE_SRCDIR feature is\n# used.\n$(BUILD_DIR)/%/.stamp_rsynced:\n\t@$(call step_start,rsync)\n\t@$(call MESSAGE,\"Syncing from source dir $(SRCDIR)\")\n\t@mkdir -p $(@D)\n\t$(foreach hook,$($(PKG)_PRE_RSYNC_HOOKS),$(call $(hook))$(sep))\n\t@test -d $(SRCDIR) || (echo \"ERROR: $(SRCDIR) does not exist\" ; exit 1)\n\trsync -au --chmod=u=rwX,go=rX $($(PKG)_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS) $(RSYNC_VCS_EXCLUSIONS) $(call qstrip,$(SRCDIR))/ $(@D)\n\t$(foreach hook,$($(PKG)_POST_RSYNC_HOOKS),$(call $(hook))$(sep))\n\t@$(call step_end,rsync)\n\t$(Q)touch $@\n\n# Patch\n#\n# The RAWNAME variable is the lowercased package name, which allows to\n# find the package directory (typically package/<pkgname>) and the\n# prefix of the patches\n#\n# For BR2_GLOBAL_PATCH_DIR, only generate if it is defined\n$(BUILD_DIR)/%/.stamp_patched: PATCH_BASE_DIRS =  $(PKGDIR)\n$(BUILD_DIR)/%/.stamp_patched: PATCH_BASE_DIRS += $(addsuffix /$(RAWNAME),$(call qstrip,$(BR2_GLOBAL_PATCH_DIR)))\n$(BUILD_DIR)/%/.stamp_patched:\n\t@$(call step_start,patch)\n\t@$(call MESSAGE,\"Patching\")\n\t$(foreach hook,$($(PKG)_PRE_PATCH_HOOKS),$(call $(hook))$(sep))\n\t$(foreach p,$($(PKG)_PATCH),$(APPLY_PATCHES) $(@D) $($(PKG)_DL_DIR) $(notdir $(p))$(sep))\n\t$(Q)( \\\n\tfor D in $(PATCH_BASE_DIRS); do \\\n\t  if test -d $${D}; then \\\n\t    if test -d $${D}/$($(PKG)_VERSION); then \\\n\t      $(APPLY_PATCHES) $(@D) $${D}/$($(PKG)_VERSION) \\*.patch \\*.patch.$(ARCH) || exit 1; \\\n\t    else \\\n\t      $(APPLY_PATCHES) $(@D) $${D} \\*.patch \\*.patch.$(ARCH) || exit 1; \\\n\t    fi; \\\n\t  fi; \\\n\tdone; \\\n\t)\n\t$(foreach hook,$($(PKG)_POST_PATCH_HOOKS),$(call $(hook))$(sep))\n\t@$(call step_end,patch)\n\t$(Q)touch $@\n\n# Check that all directories specified in BR2_GLOBAL_PATCH_DIR exist.\n$(foreach dir,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR)),\\\n\t$(if $(wildcard $(dir)),,\\\n\t\t$(error BR2_GLOBAL_PATCH_DIR contains nonexistent directory $(dir))))\n\n# Configure\n$(BUILD_DIR)/%/.stamp_configured:\n\t@$(call step_start,configure)\n\t@$(call MESSAGE,\"Configuring\")\n\t$(Q)mkdir -p $(HOST_DIR) $(TARGET_DIR) $(STAGING_DIR) $(BINARIES_DIR)\n\t$(call prepare-per-package-directory,$($(PKG)_FINAL_DEPENDENCIES))\n\t@$(call pkg_size_before,$(TARGET_DIR))\n\t@$(call pkg_size_before,$(STAGING_DIR),-staging)\n\t@$(call pkg_size_before,$(BINARIES_DIR),-images)\n\t@$(call pkg_size_before,$(HOST_DIR),-host)\n\t$(call fixup-libtool-files,$(NAME),$(HOST_DIR))\n\t$(call fixup-libtool-files,$(NAME),$(STAGING_DIR))\n\t$(foreach hook,$($(PKG)_POST_PREPARE_HOOKS),$(call $(hook))$(sep))\n\t$(foreach hook,$($(PKG)_PRE_CONFIGURE_HOOKS),$(call $(hook))$(sep))\n\t$($(PKG)_CONFIGURE_CMDS)\n\t$(foreach hook,$($(PKG)_POST_CONFIGURE_HOOKS),$(call $(hook))$(sep))\n\t@$(call step_end,configure)\n\t$(Q)touch $@\n\n# Build\n$(BUILD_DIR)/%/.stamp_built::\n\t@$(call step_start,build)\n\t@$(call MESSAGE,\"Building\")\n\t$(foreach hook,$($(PKG)_PRE_BUILD_HOOKS),$(call $(hook))$(sep))\n\t+$($(PKG)_BUILD_CMDS)\n\t$(foreach hook,$($(PKG)_POST_BUILD_HOOKS),$(call $(hook))$(sep))\n\t@$(call step_end,build)\n\t$(Q)touch $@\n\n# Install to host dir\n$(BUILD_DIR)/%/.stamp_host_installed:\n\t@$(call step_start,install-host)\n\t@$(call MESSAGE,\"Installing to host directory\")\n\t$(foreach hook,$($(PKG)_PRE_INSTALL_HOOKS),$(call $(hook))$(sep))\n\t+$($(PKG)_INSTALL_CMDS)\n\t$(foreach hook,$($(PKG)_POST_INSTALL_HOOKS),$(call $(hook))$(sep))\n\t@$(call step_end,install-host)\n\t$(Q)touch $@\n\n# Install to staging dir\n#\n# Some packages install libtool .la files alongside any installed\n# libraries. These .la files sometimes refer to paths relative to the\n# sysroot, which libtool will interpret as absolute paths to host\n# libraries instead of the target libraries. Since this is not what we\n# want, these paths are fixed by prefixing them with $(STAGING_DIR).\n# As we configure with --prefix=/usr, this fix needs to be applied to\n# any path that starts with /usr.\n#\n# To protect against the case that the output or staging directories or\n# the pre-installed external toolchain themselves are under /usr, we first\n# substitute away any occurrences of these directories with @BASE_DIR@,\n# @STAGING_DIR@ and @TOOLCHAIN_EXTERNAL_INSTALL_DIR@ respectively.\n#\n# Note that STAGING_DIR can be outside BASE_DIR when the user sets\n# BR2_HOST_DIR to a custom value. Note that TOOLCHAIN_EXTERNAL_INSTALL_DIR\n# can be under @BASE_DIR@ when it's a downloaded toolchain, and can be\n# empty when we use an internal toolchain.\n#\n$(BUILD_DIR)/%/.stamp_staging_installed:\n\t@$(call step_start,install-staging)\n\t@$(call MESSAGE,\"Installing to staging directory\")\n\t$(foreach hook,$($(PKG)_PRE_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep))\n\t+$($(PKG)_INSTALL_STAGING_CMDS)\n\t$(foreach hook,$($(PKG)_POST_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep))\n\t$(Q)if test -n \"$($(PKG)_CONFIG_SCRIPTS)\" ; then \\\n\t\t$(call MESSAGE,\"Fixing package configuration files\") ;\\\n\t\t\t$(SED)  \"s,$(HOST_DIR),@HOST_DIR@,g\" \\\n\t\t\t\t-e \"s,$(BASE_DIR),@BASE_DIR@,g\" \\\n\t\t\t\t-e \"s,^\\(exec_\\)\\?prefix=.*,\\1prefix=@STAGING_DIR@/usr,g\" \\\n\t\t\t\t-e \"s,-I/usr/,-I@STAGING_DIR@/usr/,g\" \\\n\t\t\t\t-e \"s,-L/usr/,-L@STAGING_DIR@/usr/,g\" \\\n\t\t\t\t-e 's,@STAGING_DIR@,$$(dirname $$(readlink -e $$0))/../..,g' \\\n\t\t\t\t-e 's,@HOST_DIR@,$$(dirname $$(readlink -e $$0))/../../../..,g' \\\n\t\t\t\t-e \"s,@BASE_DIR@,$(BASE_DIR),g\" \\\n\t\t\t\t$(addprefix $(STAGING_DIR)/usr/bin/,$($(PKG)_CONFIG_SCRIPTS)) ;\\\n\tfi\n\t@$(call MESSAGE,\"Fixing libtool files\")\n\tfor la in $$(find $(STAGING_DIR)/usr/lib* -name \"*.la\"); do \\\n\t\tcp -a \"$${la}\" \"$${la}.fixed\" && \\\n\t\t$(SED) \"s:$(BASE_DIR):@BASE_DIR@:g\" \\\n\t\t\t-e \"s:$(STAGING_DIR):@STAGING_DIR@:g\" \\\n\t\t\t$(if $(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\\\n\t\t\t\t-e \"s:$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:g\") \\\n\t\t\t-e \"s:\\(['= ]\\)/usr:\\\\1@STAGING_DIR@/usr:g\" \\\n\t\t\t-e \"s:\\(['= ]\\)/lib:\\\\1@STAGING_DIR@/lib:g\" \\\n\t\t\t$(if $(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\\\n\t\t\t\t-e \"s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):g\") \\\n\t\t\t-e \"s:@STAGING_DIR@:$(STAGING_DIR):g\" \\\n\t\t\t-e \"s:@BASE_DIR@:$(BASE_DIR):g\" \\\n\t\t\t\"$${la}.fixed\" && \\\n\t\tif cmp -s \"$${la}\" \"$${la}.fixed\"; then \\\n\t\t\trm -f \"$${la}.fixed\"; \\\n\t\telse \\\n\t\t\tmv \"$${la}.fixed\" \"$${la}\"; \\\n\t\tfi || exit 1; \\\n\tdone\n\t@$(call step_end,install-staging)\n\t$(Q)touch $@\n\n# Install to images dir\n$(BUILD_DIR)/%/.stamp_images_installed:\n\t@$(call step_start,install-image)\n\t@$(call MESSAGE,\"Installing to images directory\")\n\t$(foreach hook,$($(PKG)_PRE_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep))\n\t+$($(PKG)_INSTALL_IMAGES_CMDS)\n\t$(foreach hook,$($(PKG)_POST_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep))\n\t@$(call step_end,install-image)\n\t$(Q)touch $@\n\n# Install to target dir\n$(BUILD_DIR)/%/.stamp_target_installed:\n\t@$(call step_start,install-target)\n\t@$(call MESSAGE,\"Installing to target\")\n\t$(foreach hook,$($(PKG)_PRE_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep))\n\t+$($(PKG)_INSTALL_TARGET_CMDS)\n\t$(if $(BR2_INIT_SYSTEMD),\\\n\t\t$($(PKG)_INSTALL_INIT_SYSTEMD))\n\t$(if $(BR2_INIT_SYSV)$(BR2_INIT_BUSYBOX),\\\n\t\t$($(PKG)_INSTALL_INIT_SYSV))\n\t$(if $(BR2_INIT_OPENRC), \\\n\t\t$(or $($(PKG)_INSTALL_INIT_OPENRC), \\\n\t\t\t$($(PKG)_INSTALL_INIT_SYSV)))\n\t$(foreach hook,$($(PKG)_POST_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep))\n\t$(Q)if test -n \"$($(PKG)_CONFIG_SCRIPTS)\" ; then \\\n\t\t$(RM) -f $(addprefix $(TARGET_DIR)/usr/bin/,$($(PKG)_CONFIG_SCRIPTS)) ; \\\n\tfi\n\t@$(call step_end,install-target)\n\t$(Q)touch $@\n\n# Final installation step, completed when all installation steps\n# (host, images, staging, target) have completed\n$(BUILD_DIR)/%/.stamp_installed:\n\t@$(call pkg_size_after,$(TARGET_DIR))\n\t@$(call pkg_size_after,$(STAGING_DIR),-staging)\n\t@$(call pkg_size_after,$(BINARIES_DIR),-images)\n\t@$(call pkg_size_after,$(HOST_DIR),-host)\n\t@$(call check_bin_arch)\n\t$(Q)touch $@\n\n# Remove package sources\n$(BUILD_DIR)/%/.stamp_dircleaned:\n\t$(if $(BR2_PER_PACKAGE_DIRECTORIES),rm -Rf $(PER_PACKAGE_DIR)/$(NAME))\n\trm -Rf $(@D)\n\n################################################################################\n# virt-provides-single -- check that provider-pkg is the declared provider for\n# the virtual package virt-pkg\n#\n# argument 1 is the lower-case name of the virtual package\n# argument 2 is the upper-case name of the virtual package\n# argument 3 is the lower-case name of the provider\n#\n# example:\n#   $(call virt-provides-single,libegl,LIBEGL,rpi-userland)\n################################################################################\ndefine virt-provides-single\nifneq ($$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))),$(3))\n$$(error Configuration error: both \"$(3)\" and $$(BR2_PACKAGE_PROVIDES_$(2))\\\nare selected as providers for virtual package \"$(1)\". Only one provider can\\\nbe selected at a time. Please fix your configuration)\nendif\nendef\n\ndefine pkg-graph-depends\n\t@$$(INSTALL) -d $$(GRAPHS_DIR)\n\t@cd \"$$(CONFIG_DIR)\"; \\\n\t$$(TOPDIR)/support/scripts/graph-depends $$(BR2_GRAPH_DEPS_OPTS) \\\n\t\t-p $(1) $(2) -o $$(GRAPHS_DIR)/$$(@).dot\n\tdot $$(BR2_GRAPH_DOT_OPTS) -T$$(BR_GRAPH_OUT) \\\n\t\t-o $$(GRAPHS_DIR)/$$(@).$$(BR_GRAPH_OUT) \\\n\t\t$$(GRAPHS_DIR)/$$(@).dot\nendef\n\n################################################################################\n# inner-generic-package -- generates the make targets needed to build a\n# generic package\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix\n#             for host packages\n#  argument 4 is the type (target or host)\n#\n# Note about variable and function references: inside all blocks that are\n# evaluated with $(eval), which includes all 'inner-xxx-package' blocks,\n# specific rules apply with respect to variable and function references.\n# - Numbered variables (parameters to the block) can be referenced with a single\n#   dollar sign: $(1), $(2), $(3), etc.\n# - pkgdir and pkgname should be referenced with a single dollar sign too. These\n#   functions rely on 'the most recently parsed makefile' which is supposed to\n#   be the package .mk file. If we defer the evaluation of these functions using\n#   double dollar signs, then they may be evaluated too late, when other\n#   makefiles have already been parsed. One specific case is when $$(pkgdir) is\n#   assigned to a variable using deferred evaluation with '=' and this variable\n#   is used in a target rule outside the eval'ed inner block. In this case, the\n#   pkgdir will be that of the last makefile parsed by buildroot, which is not\n#   the expected value. This mechanism is for example used for the TARGET_PATCH\n#   rule.\n# - All other variables should be referenced with a double dollar sign:\n#   $$(TARGET_DIR), $$($(2)_VERSION), etc. Also all make functions should be\n#   referenced with a double dollar sign: $$(subst), $$(call), $$(filter-out),\n#   etc. This rule ensures that these variables and functions are only expanded\n#   during the $(eval) step, and not earlier. Otherwise, unintuitive and\n#   undesired behavior occurs with respect to these variables and functions.\n#\n################################################################################\n\ndefine inner-generic-package\n\n# When doing a package, we're definitely not doing a rootfs, but we\n# may inherit it via the dependency chain, so we reset it.\n$(1): ROOTFS=\n\n# Ensure the package is only declared once, i.e. do not accept that a\n# package be re-defined by a br2-external tree\nifneq ($(call strip,$(filter $(1),$(PACKAGES_ALL))),)\n$$(error Package '$(1)' defined a second time in '$(pkgdir)'; \\\n\tprevious definition was in '$$($(2)_PKGDIR)')\nendif\nPACKAGES_ALL += $(1)\n\n# Define default values for various package-related variables, if not\n# already defined. For some variables (version, source, site and\n# subdir), if they are undefined, we try to see if a variable without\n# the HOST_ prefix is defined. If so, we use such a variable, so that\n# this information has only to be specified once, for both the\n# target and host packages of a given .mk file.\n\n$(2)_TYPE                       =  $(4)\n$(2)_NAME\t\t\t=  $(1)\n$(2)_RAWNAME\t\t\t=  $$(patsubst host-%,%,$(1))\n$(2)_PKGDIR\t\t\t=  $(pkgdir)\n\n# Keep the package version that may contain forward slashes in the _DL_VERSION\n# variable, then replace all forward slashes ('/') by underscores ('_') to\n# sanitize the package version that is used in paths, directory and file names.\n# Forward slashes may appear in the package's version when pointing to a\n# version control system branch or tag, for example remotes/origin/1_10_stable.\n# Similar for spaces and colons (:) that may appear in date-based revisions for\n# CVS.\nifndef $(2)_VERSION\n ifdef $(3)_DL_VERSION\n  $(2)_DL_VERSION := $$($(3)_DL_VERSION)\n else ifdef $(3)_VERSION\n  $(2)_DL_VERSION := $$($(3)_VERSION)\n endif\nelse\n $(2)_DL_VERSION := $$(strip $$($(2)_VERSION))\nendif\n$(2)_VERSION := $$(call sanitize,$$($(2)_DL_VERSION))\n\n$(2)_HASH_FILE = \\\n\t$$(strip \\\n\t\t$$(if $$(wildcard $$($(2)_PKGDIR)/$$($(2)_VERSION)/$$($(2)_RAWNAME).hash),\\\n\t\t\t$$($(2)_PKGDIR)/$$($(2)_VERSION)/$$($(2)_RAWNAME).hash,\\\n\t\t\t$$($(2)_PKGDIR)/$$($(2)_RAWNAME).hash))\n\nifdef $(3)_OVERRIDE_SRCDIR\n  $(2)_OVERRIDE_SRCDIR ?= $$($(3)_OVERRIDE_SRCDIR)\nendif\n\n$(2)_BASENAME\t= $$(if $$($(2)_VERSION),$(1)-$$($(2)_VERSION),$(1))\n$(2)_BASENAME_RAW = $$(if $$($(2)_VERSION),$$($(2)_RAWNAME)-$$($(2)_VERSION),$$($(2)_RAWNAME))\n$(2)_DL_SUBDIR ?= $$($(2)_RAWNAME)\n$(2)_DL_DIR = $$(DL_DIR)/$$($(2)_DL_SUBDIR)\n$(2)_DIR\t=  $$(BUILD_DIR)/$$($(2)_BASENAME)\n\nifndef $(2)_SUBDIR\n ifdef $(3)_SUBDIR\n  $(2)_SUBDIR = $$($(3)_SUBDIR)\n else\n  $(2)_SUBDIR ?=\n endif\nendif\n\nifndef $(2)_STRIP_COMPONENTS\n ifdef $(3)_STRIP_COMPONENTS\n  $(2)_STRIP_COMPONENTS = $$($(3)_STRIP_COMPONENTS)\n else\n  $(2)_STRIP_COMPONENTS ?= 1\n endif\nendif\n\n$(2)_SRCDIR\t\t       = $$($(2)_DIR)/$$($(2)_SUBDIR)\n$(2)_BUILDDIR\t\t       ?= $$($(2)_SRCDIR)\n\nifneq ($$($(2)_OVERRIDE_SRCDIR),)\n$(2)_VERSION = custom\nendif\n\nifndef $(2)_SOURCE\n ifdef $(3)_SOURCE\n  $(2)_SOURCE = $$($(3)_SOURCE)\n else ifdef $(2)_VERSION\n  $(2)_SOURCE\t\t\t?= $$($(2)_BASENAME_RAW)$$(call pkg_source_ext,$(2))\n endif\nendif\n\n# If FOO_ACTUAL_SOURCE_TARBALL is explicitly defined, it means FOO_SOURCE is\n# indeed a binary (e.g. external toolchain) and FOO_ACTUAL_SOURCE_TARBALL/_SITE\n# point to the actual sources tarball. Use the actual sources for legal-info.\n# For most packages the FOO_SITE/FOO_SOURCE pair points to real source code,\n# so these are the defaults for FOO_ACTUAL_*.\n$(2)_ACTUAL_SOURCE_TARBALL ?= $$($(2)_SOURCE)\n$(2)_ACTUAL_SOURCE_SITE    ?= $$(call qstrip,$$($(2)_SITE))\n\nifndef $(2)_PATCH\n ifdef $(3)_PATCH\n  $(2)_PATCH = $$($(3)_PATCH)\n endif\nendif\n\n$(2)_ALL_DOWNLOADS = \\\n\t$$(if $$($(2)_SOURCE),$$($(2)_SITE_METHOD)+$$($(2)_SITE)/$$($(2)_SOURCE)) \\\n\t$$(foreach p,$$($(2)_PATCH) $$($(2)_EXTRA_DOWNLOADS),\\\n\t\t$$(if $$(findstring ://,$$(p)),$$(p),\\\n\t\t\t$$($(2)_SITE_METHOD)+$$($(2)_SITE)/$$(p)))\n\nifndef $(2)_SITE\n ifdef $(3)_SITE\n  $(2)_SITE = $$($(3)_SITE)\n endif\nendif\n\nifndef $(2)_SITE_METHOD\n ifdef $(3)_SITE_METHOD\n  $(2)_SITE_METHOD = $$($(3)_SITE_METHOD)\n else\n\t# Try automatic detection using the scheme part of the URI\n\t$(2)_SITE_METHOD = $$(call geturischeme,$$($(2)_SITE))\n endif\nendif\n\nifndef $(2)_DL_OPTS\n ifdef $(3)_DL_OPTS\n  $(2)_DL_OPTS = $$($(3)_DL_OPTS)\n endif\nendif\n\nifneq ($$(filter bzr cvs hg,$$($(2)_SITE_METHOD)),)\nBR_NO_CHECK_HASH_FOR += $$($(2)_SOURCE)\nendif\n\nifndef $(2)_GIT_SUBMODULES\n ifdef $(3)_GIT_SUBMODULES\n  $(2)_GIT_SUBMODULES = $$($(3)_GIT_SUBMODULES)\n endif\nendif\n\n# Do not accept to download git submodule if not using the git method\nifneq ($$($(2)_GIT_SUBMODULES),)\n ifneq ($$($(2)_SITE_METHOD),git)\n  $$(error $(2) declares having git sub-modules, but does not use the \\\n\t   'git' method (uses '$$($(2)_SITE_METHOD)' instead))\n endif\nendif\n\nifeq ($$($(2)_SITE_METHOD),local)\nifeq ($$($(2)_OVERRIDE_SRCDIR),)\n$(2)_OVERRIDE_SRCDIR = $$($(2)_SITE)\nendif\nifeq ($$($(2)_OVERRIDE_SRCDIR),)\n$$(error $(1) has local site method, but `$(2)_SITE` is not defined)\nendif\nendif\n\nifndef $(2)_LICENSE\n ifdef $(3)_LICENSE\n  $(2)_LICENSE = $$($(3)_LICENSE)\n endif\nendif\n\n$(2)_LICENSE\t\t\t?= unknown\n\nifndef $(2)_LICENSE_FILES\n ifdef $(3)_LICENSE_FILES\n  $(2)_LICENSE_FILES = $$($(3)_LICENSE_FILES)\n endif\nendif\n\nifndef $(2)_REDISTRIBUTE\n ifdef $(3)_REDISTRIBUTE\n  $(2)_REDISTRIBUTE = $$($(3)_REDISTRIBUTE)\n endif\nendif\n\n$(2)_REDISTRIBUTE\t\t?= YES\n\n$(2)_REDIST_SOURCES_DIR = $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4)))/$$($(2)_BASENAME_RAW)\n\n# If any of the <pkg>_CPE_ID_* variables are set, we assume the CPE ID\n# information is valid for this package.\nifneq ($$($(2)_CPE_ID_VENDOR)$$($(2)_CPE_ID_PRODUCT)$$($(2)_CPE_ID_VERSION)$$($(2)_CPE_ID_UPDATE)$$($(2)_CPE_ID_PREFIX),)\n$(2)_CPE_ID_VALID = YES\nendif\n\n# When we're a host package, make sure to use the variables of the\n# corresponding target package, if any.\nifneq ($$($(3)_CPE_ID_VENDOR)$$($(3)_CPE_ID_PRODUCT)$$($(3)_CPE_ID_VERSION)$$($(3)_CPE_ID_UPDATE)$$($(3)_CPE_ID_PREFIX),)\n$(2)_CPE_ID_VALID = YES\nendif\n\n# If the CPE ID is valid for the target package so it is for the host\n# package\nifndef $(2)_CPE_ID_VALID\n ifdef $(3)_CPE_ID_VALID\n   $(2)_CPE_ID_VALID = $$($(3)_CPE_ID_VALID)\n endif\nendif\n\nifeq ($$($(2)_CPE_ID_VALID),YES)\n # CPE_ID_VENDOR\n ifndef $(2)_CPE_ID_VENDOR\n  ifdef $(3)_CPE_ID_VENDOR\n   $(2)_CPE_ID_VENDOR = $$($(3)_CPE_ID_VENDOR)\n  else\n   $(2)_CPE_ID_VENDOR = $$($(2)_RAWNAME)_project\n endif\n endif\n\n # CPE_ID_PRODUCT\n ifndef $(2)_CPE_ID_PRODUCT\n  ifdef $(3)_CPE_ID_PRODUCT\n   $(2)_CPE_ID_PRODUCT = $$($(3)_CPE_ID_PRODUCT)\n  else\n   $(2)_CPE_ID_PRODUCT = $$($(2)_RAWNAME)\n  endif\n endif\n\n # CPE_ID_VERSION\n ifndef $(2)_CPE_ID_VERSION\n  ifdef $(3)_CPE_ID_VERSION\n   $(2)_CPE_ID_VERSION = $$($(3)_CPE_ID_VERSION)\n  else\n   $(2)_CPE_ID_VERSION = $$($(2)_VERSION)\n  endif\n endif\n\n # CPE_ID_UPDATE\n ifndef $(2)_CPE_ID_UPDATE\n  ifdef $(3)_CPE_ID_UPDATE\n   $(2)_CPE_ID_UPDATE = $$($(3)_CPE_ID_UPDATE)\n  else\n   $(2)_CPE_ID_UPDATE = *\n  endif\n endif\n\n # CPE_ID_PREFIX\n ifndef $(2)_CPE_ID_PREFIX\n  ifdef $(3)_CPE_ID_PREFIX\n   $(2)_CPE_ID_PREFIX = $$($(3)_CPE_ID_PREFIX)\n  else\n   $(2)_CPE_ID_PREFIX = cpe:2.3:a\n  endif\n endif\n\n # Calculate complete CPE ID\n $(2)_CPE_ID = $$($(2)_CPE_ID_PREFIX):$$($(2)_CPE_ID_VENDOR):$$($(2)_CPE_ID_PRODUCT):$$($(2)_CPE_ID_VERSION):$$($(2)_CPE_ID_UPDATE):*:*:*:*:*:*\nendif # ifeq ($$($(2)_CPE_ID_VALID),YES)\n\n# When a target package is a toolchain dependency set this variable to\n# 'NO' so the 'toolchain' dependency is not added to prevent a circular\n# dependency.\n# Similarly for the skeleton.\n$(2)_ADD_TOOLCHAIN_DEPENDENCY\t?= YES\n$(2)_ADD_SKELETON_DEPENDENCY\t?= YES\n\n\nifeq ($(4),target)\nifeq ($$($(2)_ADD_SKELETON_DEPENDENCY),YES)\n$(2)_DEPENDENCIES += skeleton\nendif\nifeq ($$($(2)_ADD_TOOLCHAIN_DEPENDENCY),YES)\n$(2)_DEPENDENCIES += toolchain\nendif\nendif\n\nifneq ($(1),host-skeleton)\n$(2)_DEPENDENCIES += host-skeleton\nendif\n\nifneq ($$(filter cvs git svn,$$($(2)_SITE_METHOD)),)\n$(2)_DOWNLOAD_DEPENDENCIES += \\\n\t$(BR2_GZIP_HOST_DEPENDENCY) \\\n\t$(BR2_TAR_HOST_DEPENDENCY)\nendif\n\nifeq ($$(filter host-tar host-skeleton host-fakedate,$(1)),)\n$(2)_EXTRACT_DEPENDENCIES += $$(BR2_TAR_HOST_DEPENDENCY)\nendif\n\nifeq ($$(filter host-tar host-skeleton host-xz host-lzip host-fakedate,$(1)),)\n$(2)_EXTRACT_DEPENDENCIES += \\\n\t$$(foreach dl,$$($(2)_ALL_DOWNLOADS),\\\n\t\t$$(call extractor-pkg-dependency,$$(notdir $$(dl))))\nendif\n\nifeq ($$(BR2_CCACHE),y)\nifeq ($$(filter host-tar host-skeleton host-xz host-lzip host-fakedate host-ccache,$(1)),)\n$(2)_DEPENDENCIES += host-ccache\nendif\nendif\n\nifeq ($$(BR2_REPRODUCIBLE),y)\nifeq ($$(filter host-skeleton host-fakedate,$(1)),)\n$(2)_DEPENDENCIES += host-fakedate\nendif\nendif\n\n# Eliminate duplicates in dependencies\n$(2)_FINAL_DEPENDENCIES = $$(sort $$($(2)_DEPENDENCIES))\n$(2)_FINAL_DOWNLOAD_DEPENDENCIES = $$(sort $$($(2)_DOWNLOAD_DEPENDENCIES))\n$(2)_FINAL_EXTRACT_DEPENDENCIES = $$(sort $$($(2)_EXTRACT_DEPENDENCIES))\n$(2)_FINAL_PATCH_DEPENDENCIES = $$(sort $$($(2)_PATCH_DEPENDENCIES))\n$(2)_FINAL_ALL_DEPENDENCIES = \\\n\t$$(sort \\\n\t\t$$($(2)_FINAL_DEPENDENCIES) \\\n\t\t$$($(2)_FINAL_DOWNLOAD_DEPENDENCIES) \\\n\t\t$$($(2)_FINAL_EXTRACT_DEPENDENCIES) \\\n\t\t$$($(2)_FINAL_PATCH_DEPENDENCIES))\n$(2)_FINAL_RECURSIVE_DEPENDENCIES = $$(sort \\\n\t$$(if $$(filter undefined,$$(origin $(2)_FINAL_RECURSIVE_DEPENDENCIES__X)), \\\n\t\t$$(eval $(2)_FINAL_RECURSIVE_DEPENDENCIES__X := \\\n\t\t\t$$(foreach p, \\\n\t\t\t\t$$($(2)_FINAL_ALL_DEPENDENCIES), \\\n\t\t\t\t$$(p) \\\n\t\t\t\t$$($$(call UPPERCASE,$$(p))_FINAL_RECURSIVE_DEPENDENCIES) \\\n\t\t\t) \\\n\t\t) \\\n\t) \\\n\t$$($(2)_FINAL_RECURSIVE_DEPENDENCIES__X))\n\n$(2)_FINAL_RECURSIVE_RDEPENDENCIES = $$(sort \\\n\t$$(if $$(filter undefined,$$(origin $(2)_FINAL_RECURSIVE_RDEPENDENCIES__X)), \\\n\t\t$$(eval $(2)_FINAL_RECURSIVE_RDEPENDENCIES__X := \\\n\t\t\t$$(foreach p, \\\n\t\t\t\t$$($(2)_RDEPENDENCIES), \\\n\t\t\t\t$$(p) \\\n\t\t\t\t$$($$(call UPPERCASE,$$(p))_FINAL_RECURSIVE_RDEPENDENCIES) \\\n\t\t\t) \\\n\t\t) \\\n\t) \\\n\t$$($(2)_FINAL_RECURSIVE_RDEPENDENCIES__X))\n\n# define sub-target stamps\n$(2)_TARGET_INSTALL =           $$($(2)_DIR)/.stamp_installed\n$(2)_TARGET_INSTALL_TARGET =\t$$($(2)_DIR)/.stamp_target_installed\n$(2)_TARGET_INSTALL_STAGING =\t$$($(2)_DIR)/.stamp_staging_installed\n$(2)_TARGET_INSTALL_IMAGES =\t$$($(2)_DIR)/.stamp_images_installed\n$(2)_TARGET_INSTALL_HOST =\t$$($(2)_DIR)/.stamp_host_installed\n$(2)_TARGET_BUILD =\t\t$$($(2)_DIR)/.stamp_built\n$(2)_TARGET_CONFIGURE =\t\t$$($(2)_DIR)/.stamp_configured\n$(2)_TARGET_RSYNC =\t\t$$($(2)_DIR)/.stamp_rsynced\n$(2)_TARGET_PATCH =\t\t$$($(2)_DIR)/.stamp_patched\n$(2)_TARGET_EXTRACT =\t\t$$($(2)_DIR)/.stamp_extracted\n$(2)_TARGET_SOURCE =\t\t$$($(2)_DIR)/.stamp_downloaded\n$(2)_TARGET_ACTUAL_SOURCE =\t$$($(2)_DIR)/.stamp_actual_downloaded\n$(2)_TARGET_DIRCLEAN =\t\t$$($(2)_DIR)/.stamp_dircleaned\n\n# default extract command\n$(2)_EXTRACT_CMDS ?= \\\n\t$$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $$($(2)_DL_DIR)/$$($(2)_SOURCE) | \\\n\t$$(TAR) --strip-components=$$($(2)_STRIP_COMPONENTS) \\\n\t\t-C $$($(2)_DIR) \\\n\t\t$$(foreach x,$$($(2)_EXCLUDES),--exclude='$$(x)' ) \\\n\t\t$$(TAR_OPTIONS) -)\n\n# pre/post-steps hooks\n$(2)_PRE_DOWNLOAD_HOOKS         ?=\n$(2)_POST_DOWNLOAD_HOOKS        ?=\n$(2)_PRE_EXTRACT_HOOKS          ?=\n$(2)_POST_EXTRACT_HOOKS         ?=\n$(2)_PRE_RSYNC_HOOKS            ?=\n$(2)_POST_RSYNC_HOOKS           ?=\n$(2)_PRE_PATCH_HOOKS            ?=\n$(2)_POST_PATCH_HOOKS           ?=\n$(2)_PRE_CONFIGURE_HOOKS        ?=\n$(2)_POST_CONFIGURE_HOOKS       ?=\n$(2)_PRE_BUILD_HOOKS            ?=\n$(2)_POST_BUILD_HOOKS           ?=\n$(2)_PRE_INSTALL_HOOKS          ?=\n$(2)_POST_INSTALL_HOOKS         ?=\n$(2)_PRE_INSTALL_STAGING_HOOKS  ?=\n$(2)_POST_INSTALL_STAGING_HOOKS ?=\n$(2)_PRE_INSTALL_TARGET_HOOKS   ?=\n$(2)_POST_INSTALL_TARGET_HOOKS  ?=\n$(2)_PRE_INSTALL_IMAGES_HOOKS   ?=\n$(2)_POST_INSTALL_IMAGES_HOOKS  ?=\n$(2)_PRE_LEGAL_INFO_HOOKS       ?=\n$(2)_POST_LEGAL_INFO_HOOKS      ?=\n$(2)_TARGET_FINALIZE_HOOKS      ?=\n$(2)_ROOTFS_PRE_CMD_HOOKS       ?=\n\n$(2)_POST_PREPARE_HOOKS += FIXUP_PYTHON_SYSCONFIGDATA\n\nifeq ($$($(2)_TYPE),target)\nifneq ($$(HOST_$(2)_KCONFIG_VAR),)\n$$(error \"Package $(1) defines host variant before target variant!\")\nendif\nendif\n\n# Globaly remove following conflicting and useless files\n$(2)_DROP_FILES_OR_DIRS += /share/info/dir\n\nifeq ($$($(2)_TYPE),host)\n$(2)_POST_INSTALL_HOOKS += REMOVE_CONFLICTING_USELESS_FILES_IN_HOST\nelse\n$(2)_POST_INSTALL_STAGING_HOOKS += REMOVE_CONFLICTING_USELESS_FILES_IN_STAGING\n$(2)_POST_INSTALL_TARGET_HOOKS += REMOVE_CONFLICTING_USELESS_FILES_IN_TARGET\nendif\n\n# human-friendly targets and target sequencing\n$(1):\t\t\t$(1)-install\n$(1)-install:\t\t$$($(2)_TARGET_INSTALL)\n$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_BUILD)\n\nifeq ($$($(2)_TYPE),host)\n$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_INSTALL_HOST)\nelse\n$(2)_INSTALL_STAGING\t?= NO\n$(2)_INSTALL_IMAGES\t?= NO\n$(2)_INSTALL_TARGET\t?= YES\nifeq ($$($(2)_INSTALL_TARGET),YES)\n$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_INSTALL_TARGET)\nendif\nifeq ($$($(2)_INSTALL_STAGING),YES)\n$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_INSTALL_STAGING)\nendif\nifeq ($$($(2)_INSTALL_IMAGES),YES)\n$$($(2)_TARGET_INSTALL): $$($(2)_TARGET_INSTALL_IMAGES)\nendif\nendif\n\nifeq ($$($(2)_INSTALL_TARGET),YES)\n$(1)-install-target:\t\t$$($(2)_TARGET_INSTALL_TARGET)\n$$($(2)_TARGET_INSTALL_TARGET):\t$$($(2)_TARGET_BUILD)\nelse\n$(1)-install-target:\nendif\n\nifeq ($$($(2)_INSTALL_STAGING),YES)\n$(1)-install-staging:\t\t\t$$($(2)_TARGET_INSTALL_STAGING)\n$$($(2)_TARGET_INSTALL_STAGING):\t$$($(2)_TARGET_BUILD)\n# Some packages use install-staging stuff for install-target\n$$($(2)_TARGET_INSTALL_TARGET):\t\t$$($(2)_TARGET_INSTALL_STAGING)\nelse\n$(1)-install-staging:\nendif\n\nifeq ($$($(2)_INSTALL_IMAGES),YES)\n$(1)-install-images:\t\t$$($(2)_TARGET_INSTALL_IMAGES)\n$$($(2)_TARGET_INSTALL_IMAGES):\t$$($(2)_TARGET_BUILD)\nelse\n$(1)-install-images:\nendif\n\n$(1)-install-host:\t\t$$($(2)_TARGET_INSTALL_HOST)\n$$($(2)_TARGET_INSTALL_HOST):\t$$($(2)_TARGET_BUILD)\n\n$(1)-build:\t\t$$($(2)_TARGET_BUILD)\n$$($(2)_TARGET_BUILD):\t$$($(2)_TARGET_CONFIGURE)\n\n# Since $(2)_FINAL_DEPENDENCIES are phony targets, they are always \"newer\"\n# than $(2)_TARGET_CONFIGURE. This would force the configure step (and\n# therefore the other steps as well) to be re-executed with every\n# invocation of make.  Therefore, make $(2)_FINAL_DEPENDENCIES an order-only\n# dependency by using |.\n\n$(1)-configure:\t\t\t$$($(2)_TARGET_CONFIGURE)\n$$($(2)_TARGET_CONFIGURE):\t| $$($(2)_FINAL_DEPENDENCIES)\n\n$$($(2)_TARGET_SOURCE) $$($(2)_TARGET_RSYNC): | prepare\n$$($(2)_TARGET_SOURCE) $$($(2)_TARGET_RSYNC): | dependencies\n\nifeq ($$($(2)_OVERRIDE_SRCDIR),)\n# In the normal case (no package override), the sequence of steps is\n#  source, by downloading\n#  depends\n#  extract\n#  patch\n#  configure\n$$($(2)_TARGET_CONFIGURE):\t$$($(2)_TARGET_PATCH)\n\n$(1)-patch:\t\t$$($(2)_TARGET_PATCH)\n$$($(2)_TARGET_PATCH):\t$$($(2)_TARGET_EXTRACT)\n# Order-only dependency\n$$($(2)_TARGET_PATCH):  | $$(patsubst %,%-patch,$$($(2)_FINAL_PATCH_DEPENDENCIES))\n\n$(1)-extract:\t\t\t$$($(2)_TARGET_EXTRACT)\n$$($(2)_TARGET_EXTRACT):\t$$($(2)_TARGET_SOURCE)\n$$($(2)_TARGET_EXTRACT): | $$($(2)_FINAL_EXTRACT_DEPENDENCIES)\n\n$(1)-depends:\t\t$$($(2)_FINAL_ALL_DEPENDENCIES)\n\n$(1)-source:\t\t$$($(2)_TARGET_SOURCE)\n$$($(2)_TARGET_SOURCE): | $$($(2)_FINAL_DOWNLOAD_DEPENDENCIES)\n\n$(1)-all-source:\t$(1)-legal-source\n$(1)-legal-info:\t$(1)-legal-source\n$(1)-legal-source:\t$(1)-source\n\n# Only download the actual source if it differs from the 'main' archive\nifneq ($$($(2)_ACTUAL_SOURCE_TARBALL),)\nifneq ($$($(2)_ACTUAL_SOURCE_TARBALL),$$($(2)_SOURCE))\n$(1)-legal-source:\t$$($(2)_TARGET_ACTUAL_SOURCE)\nendif # actual sources != sources\nendif # actual sources != \"\"\n\n$(1)-external-deps:\n\t@for p in $$($(2)_SOURCE) $$($(2)_PATCH) $$($(2)_EXTRA_DOWNLOADS) ; do \\\n\t\techo `basename $$$$p` ; \\\n\tdone\nelse\n# In the package override case, the sequence of steps\n#  source, by rsyncing\n#  depends\n#  configure\n\n# Use an order-only dependency so the \"<pkg>-clean-for-rebuild\" rule\n# can remove the stamp file without triggering the configure step.\n$$($(2)_TARGET_CONFIGURE): | $$($(2)_TARGET_RSYNC)\n\n$(1)-depends:\t\t$$($(2)_FINAL_DEPENDENCIES)\n\n$(1)-patch:\t\t$(1)-rsync\n$(1)-extract:\t\t$(1)-rsync\n\n$(1)-rsync:\t\t$$($(2)_TARGET_RSYNC)\n\n$(1)-source:\n$(1)-legal-source:\n\n$(1)-external-deps:\n\t@echo \"file://$$($(2)_OVERRIDE_SRCDIR)\"\nendif\n\n$(1)-show-version:\n\t\t\t@echo $$($(2)_VERSION)\n\n$(1)-show-depends:\n\t\t\t@echo $$($(2)_FINAL_ALL_DEPENDENCIES)\n\n$(1)-show-recursive-depends:\n\t\t\t@echo $$($(2)_FINAL_RECURSIVE_DEPENDENCIES)\n\n$(1)-show-rdepends:\n\t\t\t@echo $$($(2)_RDEPENDENCIES)\n\n$(1)-show-recursive-rdepends:\n\t\t\t@echo $$($(2)_FINAL_RECURSIVE_RDEPENDENCIES)\n\n$(1)-show-build-order: $$(patsubst %,%-show-build-order,$$($(2)_FINAL_ALL_DEPENDENCIES))\n\t@:\n\t$$(info $(1))\n\n$(1)-show-info:\n\t@:\n\t$$(info $$(call clean-json,{ $$(call json-info,$(2)) }))\n\n$(1)-graph-depends: graph-depends-requirements\n\t$(call pkg-graph-depends,$(1),--direct)\n\n$(1)-graph-rdepends: graph-depends-requirements\n\t$(call pkg-graph-depends,$(1),--reverse)\n\n$(1)-all-source:\t$(1)-source\n$(1)-all-source:\t$$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),$$(p)-all-source)\n\n$(1)-all-external-deps:\t$(1)-external-deps\n$(1)-all-external-deps:\t$$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),$$(p)-all-external-deps)\n\n$(1)-all-legal-info:\t$(1)-legal-info\n$(1)-all-legal-info:\t$$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),$$(p)-all-legal-info)\n\n$(1)-dirclean:\t\t$$($(2)_TARGET_DIRCLEAN)\n\n$(1)-clean-for-reinstall:\nifneq ($$($(2)_OVERRIDE_SRCDIR),)\n\t\t\trm -f $$($(2)_TARGET_RSYNC)\nendif\n\t\t\trm -f $$($(2)_TARGET_INSTALL)\n\t\t\trm -f $$($(2)_TARGET_INSTALL_STAGING)\n\t\t\trm -f $$($(2)_TARGET_INSTALL_TARGET)\n\t\t\trm -f $$($(2)_TARGET_INSTALL_IMAGES)\n\t\t\trm -f $$($(2)_TARGET_INSTALL_HOST)\n\n$(1)-reinstall:\t\t$(1)-clean-for-reinstall $(1)\n\n$(1)-clean-for-rebuild: $(1)-clean-for-reinstall\n\t\t\trm -f $$($(2)_TARGET_BUILD)\n\n$(1)-rebuild:\t\t$(1)-clean-for-rebuild $(1)\n\n$(1)-clean-for-reconfigure: $(1)-clean-for-rebuild\n\t\t\trm -f $$($(2)_TARGET_CONFIGURE)\n\n$(1)-reconfigure:\t$(1)-clean-for-reconfigure $(1)\n\n# define the PKG variable for all targets, containing the\n# uppercase package variable prefix\n$$($(2)_TARGET_INSTALL):\t\tPKG=$(2)\n$$($(2)_TARGET_INSTALL_TARGET):\t\tPKG=$(2)\n$$($(2)_TARGET_INSTALL_STAGING):\tPKG=$(2)\n$$($(2)_TARGET_INSTALL_IMAGES):\t\tPKG=$(2)\n$$($(2)_TARGET_INSTALL_HOST):\t\tPKG=$(2)\n$$($(2)_TARGET_BUILD):\t\t\tPKG=$(2)\n$$($(2)_TARGET_CONFIGURE):\t\tPKG=$(2)\n$$($(2)_TARGET_CONFIGURE):\t\tNAME=$(1)\n$$($(2)_TARGET_RSYNC):\t\t\tSRCDIR=$$($(2)_OVERRIDE_SRCDIR)\n$$($(2)_TARGET_RSYNC):\t\t\tPKG=$(2)\n$$($(2)_TARGET_PATCH):\t\t\tPKG=$(2)\n$$($(2)_TARGET_PATCH):\t\t\tRAWNAME=$$(patsubst host-%,%,$(1))\n$$($(2)_TARGET_PATCH):\t\t\tPKGDIR=$(pkgdir)\n$$($(2)_TARGET_EXTRACT):\t\tPKG=$(2)\n$$($(2)_TARGET_SOURCE):\t\t\tPKG=$(2)\n$$($(2)_TARGET_SOURCE):\t\t\tPKGDIR=$(pkgdir)\n$$($(2)_TARGET_ACTUAL_SOURCE):\t\tPKG=$(2)\n$$($(2)_TARGET_ACTUAL_SOURCE):\t\tPKGDIR=$(pkgdir)\n$$($(2)_TARGET_DIRCLEAN):\t\tPKG=$(2)\n$$($(2)_TARGET_DIRCLEAN):\t\tNAME=$(1)\n\n# Compute the name of the Kconfig option that correspond to the\n# package being enabled. We handle three cases: the special Linux\n# kernel case, the bootloaders case, and the normal packages case.\n# Virtual packages are handled separately (see below).\nifeq ($(1),linux)\n$(2)_KCONFIG_VAR = BR2_LINUX_KERNEL\nelse ifneq ($$(filter boot/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/boot/%),$(pkgdir)),)\n$(2)_KCONFIG_VAR = BR2_TARGET_$(2)\nelse ifneq ($$(filter toolchain/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/toolchain/%),$(pkgdir)),)\n$(2)_KCONFIG_VAR = BR2_$(2)\nelse\n$(2)_KCONFIG_VAR = BR2_PACKAGE_$(2)\nendif\n\n# legal-info: declare dependencies and set values used later for the manifest\nifneq ($$($(2)_LICENSE_FILES),)\n$(2)_MANIFEST_LICENSE_FILES = $$($(2)_LICENSE_FILES)\nendif\n\n# We need to extract and patch a package to be able to retrieve its\n# license files (if any) and the list of patches applied to it (if\n# any).\n$(1)-legal-info: $(1)-patch\n\n# We only save the sources of packages we want to redistribute, that are\n# non-overriden (local or true override).\nifeq ($$($(2)_REDISTRIBUTE),YES)\nifeq ($$($(2)_OVERRIDE_SRCDIR),)\n# Packages that have a tarball need it downloaded beforehand\n$(1)-legal-info: $(1)-source $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4)))\nendif\nendif\n\n# legal-info: produce legally relevant info.\n$(1)-legal-info: PKG=$(2)\n$(1)-legal-info:\n\t@$$(call MESSAGE,\"Collecting legal info\")\n# Packages without a source are assumed to be part of Buildroot, skip them.\n\t$$(foreach hook,$$($(2)_PRE_LEGAL_INFO_HOOKS),$$(call $$(hook))$$(sep))\nifneq ($$(call qstrip,$$($(2)_SOURCE)),)\n\n# Save license files if defined\n# We save the license files for any kind of package: normal, local,\n# overridden, or non-redistributable alike.\n# The reason to save license files even for no-redistribute packages\n# is that the license still applies to the files distributed as part\n# of the rootfs, even if the sources are not themselves redistributed.\nifeq ($$(call qstrip,$$($(2)_LICENSE_FILES)),)\n\t$(Q)$$(call legal-warning-pkg,$$($(2)_BASENAME_RAW),cannot save license ($(2)_LICENSE_FILES not defined))\nelse\n\t$(Q)$$(foreach F,$$($(2)_LICENSE_FILES),$$(call legal-license-file,$$($(2)_RAWNAME),$$($(2)_BASENAME_RAW),$$($(2)_HASH_FILE),$$(F),$$($(2)_DIR)/$$(F),$$(call UPPERCASE,$(4)))$$(sep))\nendif # license files\n\nifeq ($$($(2)_SITE_METHOD),local)\n# Packages without a tarball: don't save and warn\n\t@$$(call legal-warning-nosource,$$($(2)_RAWNAME),local)\n\nelse ifneq ($$($(2)_OVERRIDE_SRCDIR),)\n\t@$$(call legal-warning-nosource,$$($(2)_RAWNAME),override)\n\nelse\n# Other packages\n\nifeq ($$($(2)_REDISTRIBUTE),YES)\n# Save the source tarball and any extra downloads, but not\n# patches, as they are handled specially afterwards.\n\t$$(foreach e,$$($(2)_ACTUAL_SOURCE_TARBALL) $$(notdir $$($(2)_EXTRA_DOWNLOADS)),\\\n\t\t$$(Q)support/scripts/hardlink-or-copy \\\n\t\t\t$$($(2)_DL_DIR)/$$(e) \\\n\t\t\t$$($(2)_REDIST_SOURCES_DIR)$$(sep))\n# Save patches and generate the series file\n\t$$(Q)while read f; do \\\n\t\tsupport/scripts/hardlink-or-copy \\\n\t\t\t$$$${f} \\\n\t\t\t$$($(2)_REDIST_SOURCES_DIR) || exit 1; \\\n\t\tprintf \"%s\\n\" \"$$$${f##*/}\" >>$$($(2)_REDIST_SOURCES_DIR)/series || exit 1; \\\n\tdone <$$($(2)_DIR)/.applied_patches_list\nendif # redistribute\n\nendif # other packages\n\t@$$(call legal-manifest,$$(call UPPERCASE,$(4)),$$($(2)_RAWNAME),$$($(2)_VERSION),$$(subst $$(space)$$(comma),$$(comma),$$($(2)_LICENSE)),$$($(2)_MANIFEST_LICENSE_FILES),$$($(2)_ACTUAL_SOURCE_TARBALL),$$($(2)_ACTUAL_SOURCE_SITE),$$(call legal-deps,$(1)))\nendif # ifneq ($$(call qstrip,$$($(2)_SOURCE)),)\n\t$$(foreach hook,$$($(2)_POST_LEGAL_INFO_HOOKS),$$(call $$(hook))$$(sep))\n\n# add package to the general list of targets if requested by the buildroot\n# configuration\nifeq ($$($$($(2)_KCONFIG_VAR)),y)\n\n# Ensure the calling package is the declared provider for all the virtual\n# packages it claims to be an implementation of.\nifneq ($$($(2)_PROVIDES),)\n$$(foreach pkg,$$($(2)_PROVIDES),\\\n\t$$(eval $$(call virt-provides-single,$$(pkg),$$(call UPPERCASE,$$(pkg)),$(1))$$(sep)))\nendif\n\n# Register package as a reverse-dependencies of all its dependencies\n$$(eval $$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),\\\n\t$$(call UPPERCASE,$$(p))_RDEPENDENCIES += $(1)$$(sep)))\n\n# Ensure unified variable name conventions between all packages Some\n# of the variables are used by more than one infrastructure; so,\n# rather than duplicating the checks in each infrastructure, we check\n# all variables here in pkg-generic, even though pkg-generic should\n# have no knowledge of infra-specific variables.\n$(eval $(call check-deprecated-variable,$(2)_MAKE_OPT,$(2)_MAKE_OPTS))\n$(eval $(call check-deprecated-variable,$(2)_INSTALL_OPT,$(2)_INSTALL_OPTS))\n$(eval $(call check-deprecated-variable,$(2)_INSTALL_TARGET_OPT,$(2)_INSTALL_TARGET_OPTS))\n$(eval $(call check-deprecated-variable,$(2)_INSTALL_STAGING_OPT,$(2)_INSTALL_STAGING_OPTS))\n$(eval $(call check-deprecated-variable,$(2)_INSTALL_HOST_OPT,$(2)_INSTALL_HOST_OPTS))\n$(eval $(call check-deprecated-variable,$(2)_AUTORECONF_OPT,$(2)_AUTORECONF_OPTS))\n$(eval $(call check-deprecated-variable,$(2)_CONF_OPT,$(2)_CONF_OPTS))\n$(eval $(call check-deprecated-variable,$(2)_BUILD_OPT,$(2)_BUILD_OPTS))\n$(eval $(call check-deprecated-variable,$(2)_GETTEXTIZE_OPT,$(2)_GETTEXTIZE_OPTS))\n$(eval $(call check-deprecated-variable,$(2)_KCONFIG_OPT,$(2)_KCONFIG_OPTS))\n\nPACKAGES += $(1)\n\nifneq ($$($(2)_PERMISSIONS),)\nPACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)\nendif\nifneq ($$($(2)_DEVICES),)\nPACKAGES_DEVICES_TABLE += $$($(2)_DEVICES)$$(sep)\nendif\nifneq ($$($(2)_USERS),)\nPACKAGES_USERS += $$($(2)_USERS)$$(sep)\nendif\nifneq ($$($(2)_LINUX_CONFIG_FIXUPS),)\nPACKAGES_LINUX_CONFIG_FIXUPS += $$($(2)_LINUX_CONFIG_FIXUPS)$$(sep)\nendif\nTARGET_FINALIZE_HOOKS += $$($(2)_TARGET_FINALIZE_HOOKS)\nROOTFS_PRE_CMD_HOOKS += $$($(2)_ROOTFS_PRE_CMD_HOOKS)\nKEEP_PYTHON_PY_FILES += $$($(2)_KEEP_PY_FILES)\n\nifneq ($$($(2)_SELINUX_MODULES),)\nPACKAGES_SELINUX_MODULES += $$($(2)_SELINUX_MODULES)\nendif\nPACKAGES_SELINUX_EXTRA_MODULES_DIRS += \\\n\t$$(if $$(wildcard $$($(2)_PKGDIR)/selinux),$$($(2)_PKGDIR)/selinux)\n\nifeq ($$($(2)_SITE_METHOD),svn)\nDL_TOOLS_DEPENDENCIES += svn\nelse ifeq ($$($(2)_SITE_METHOD),git)\nDL_TOOLS_DEPENDENCIES += git\nelse ifeq ($$($(2)_SITE_METHOD),bzr)\nDL_TOOLS_DEPENDENCIES += bzr\nelse ifeq ($$($(2)_SITE_METHOD),scp)\nDL_TOOLS_DEPENDENCIES += scp ssh\nelse ifeq ($$($(2)_SITE_METHOD),hg)\nDL_TOOLS_DEPENDENCIES += hg\nelse ifeq ($$($(2)_SITE_METHOD),cvs)\nDL_TOOLS_DEPENDENCIES += cvs\nendif # SITE_METHOD\n\nDL_TOOLS_DEPENDENCIES += $$(call extractor-system-dependency,$$($(2)_SOURCE))\n\n# Ensure all virtual targets are PHONY. Listed alphabetically.\n.PHONY:\t$(1) \\\n\t$(1)-all-external-deps \\\n\t$(1)-all-legal-info \\\n\t$(1)-all-source \\\n\t$(1)-build \\\n\t$(1)-clean-for-rebuild \\\n\t$(1)-clean-for-reconfigure \\\n\t$(1)-clean-for-reinstall \\\n\t$(1)-configure \\\n\t$(1)-depends \\\n\t$(1)-dirclean \\\n\t$(1)-external-deps \\\n\t$(1)-extract \\\n\t$(1)-graph-depends \\\n\t$(1)-graph-rdepends \\\n\t$(1)-install \\\n\t$(1)-install-host \\\n\t$(1)-install-images \\\n\t$(1)-install-staging \\\n\t$(1)-install-target \\\n\t$(1)-legal-info \\\n\t$(1)-legal-source \\\n\t$(1)-patch \\\n\t$(1)-rebuild \\\n\t$(1)-reconfigure \\\n\t$(1)-reinstall \\\n\t$(1)-rsync \\\n\t$(1)-show-depends \\\n\t$(1)-show-info \\\n\t$(1)-show-version \\\n\t$(1)-source\n\nifneq ($$($(2)_SOURCE),)\nifeq ($$($(2)_SITE),)\n$$(error $(2)_SITE cannot be empty when $(2)_SOURCE is not)\nendif\nendif\n\nifeq ($$(patsubst %/,ERROR,$$($(2)_SITE)),ERROR)\n$$(error $(2)_SITE ($$($(2)_SITE)) cannot have a trailing slash)\nendif\n\nifneq ($$($(2)_HELP_CMDS),)\nHELP_PACKAGES += $(2)\nendif\n\n# Virtual packages are not built but it's useful to allow them to have\n# permission/device/user tables and target-finalize/rootfs-pre-cmd hooks.\nelse ifeq ($$(BR2_PACKAGE_HAS_$(2)),y) # $(2)_KCONFIG_VAR\n\nifneq ($$($(2)_PERMISSIONS),)\nPACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)\nendif\nifneq ($$($(2)_DEVICES),)\nPACKAGES_DEVICES_TABLE += $$($(2)_DEVICES)$$(sep)\nendif\nifneq ($$($(2)_USERS),)\nPACKAGES_USERS += $$($(2)_USERS)$$(sep)\nendif\nTARGET_FINALIZE_HOOKS += $$($(2)_TARGET_FINALIZE_HOOKS)\nROOTFS_PRE_CMD_HOOKS += $$($(2)_ROOTFS_PRE_CMD_HOOKS)\n\nendif # $(2)_KCONFIG_VAR\nendef # inner-generic-package\n\n################################################################################\n# generic-package -- the target generator macro for generic packages\n################################################################################\n\n# In the case of target packages, keep the package name \"pkg\"\ngeneric-package = $(call inner-generic-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\n# In the case of host packages, turn the package name \"pkg\" into \"host-pkg\"\nhost-generic-package = $(call inner-generic-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)\n\n# :mode=makefile:\n"
  },
  {
    "path": "package/pkg-golang.mk",
    "content": "################################################################################\n# Golang package infrastructure\n#\n# This file implements an infrastructure that eases development of package .mk\n# files for Go packages. It should be used for all packages that are written in\n# go.\n#\n# See the Buildroot documentation for details on the usage of this\n# infrastructure\n#\n#\n# In terms of implementation, this golang infrastructure requires the .mk file\n# to only specify metadata information about the package: name, version,\n# download URL, etc.\n#\n# We still allow the package .mk file to override what the different steps are\n# doing, if needed. For example, if <PKG>_BUILD_CMDS is already defined, it is\n# used as the list of commands to perform to build the package, instead of the\n# default golang behavior. The package can also define some post operation\n# hooks.\n#\n################################################################################\n\nGO_BIN = $(HOST_DIR)/bin/go\n\n################################################################################\n# inner-golang-package -- defines how the configuration, compilation and\n# installation of a Go package should be done, implements a few hooks to tune\n# the build process for Go specificities and calls the generic package\n# infrastructure to generate the necessary make targets\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix for host\n#             packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix for host\n#             packages\n#  argument 4 is the type (target or host)\n#\n################################################################################\n\ndefine inner-golang-package\n\n$(2)_BUILD_OPTS += \\\n\t-ldflags \"$$($(2)_LDFLAGS)\" \\\n\t-tags \"$$($(2)_TAGS)\" \\\n\t-trimpath \\\n\t-p $(PARALLEL_JOBS)\n\n# Target packages need the Go compiler on the host.\n$(2)_DEPENDENCIES += host-go\n\n$(2)_BUILD_TARGETS ?= .\n\n# If the build target is just \".\", then we assume the binary to be\n# produced is named after the package. If however, a build target has\n# been specified, we assume that the binaries to be produced are named\n# after each build target building them (below in <pkg>_BUILD_CMDS).\nifeq ($$($(2)_BUILD_TARGETS),.)\n$(2)_BIN_NAME ?= $(1)\nendif\n\n$(2)_INSTALL_BINS ?= $(1)\n\n# Source files in Go usually use an import path resolved around\n# domain/vendor/software. We infer domain/vendor/software from the upstream URL\n# of the project.\n$(2)_SRC_DOMAIN = $$(call domain,$$($(2)_SITE))\n$(2)_SRC_VENDOR = $$(word 1,$$(subst /, ,$$(call notdomain,$$($(2)_SITE))))\n$(2)_SRC_SOFTWARE = $$(word 2,$$(subst /, ,$$(call notdomain,$$($(2)_SITE))))\n\n# $(2)_GOMOD is the root Go module path for the project, inferred if not set.\n# If the go.mod file does not exist, one is written with this root path.\n$(2)_GOMOD ?= $$($(2)_SRC_DOMAIN)/$$($(2)_SRC_VENDOR)/$$($(2)_SRC_SOFTWARE)\n\n# Generate a go.mod file if it doesn't exist. Note: Go is configured\n# to use the \"vendor\" dir and not make network calls.\ndefine $(2)_GEN_GOMOD\n\tif [ ! -f $$(@D)/go.mod ]; then \\\n\t\tprintf \"module $$($(2)_GOMOD)\\n\" > $$(@D)/go.mod; \\\n\tfi\nendef\n$(2)_POST_PATCH_HOOKS += $(2)_GEN_GOMOD\n\n# Build step. Only define it if not already defined by the package .mk\n# file.\nifndef $(2)_BUILD_CMDS\nifeq ($(4),target)\n\nifeq ($(BR2_STATIC_LIBS),y)\n$(2)_LDFLAGS += -extldflags '-static'\nendif\n\n# Build package for target\ndefine $(2)_BUILD_CMDS\n\t$$(foreach d,$$($(2)_BUILD_TARGETS),\\\n\t\tcd $$(@D); \\\n\t\t$$(HOST_GO_TARGET_ENV) \\\n\t\t\t$$($(2)_GO_ENV) \\\n\t\t\t$$(GO_BIN) build -v $$($(2)_BUILD_OPTS) \\\n\t\t\t-o $$(@D)/bin/$$(or $$($(2)_BIN_NAME),$$(notdir $$(d))) \\\n\t\t\t$$($(2)_GOMOD)/$$(d)\n\t)\nendef\nelse\n# Build package for host\ndefine $(2)_BUILD_CMDS\n\t$$(foreach d,$$($(2)_BUILD_TARGETS),\\\n\t\tcd $$(@D); \\\n\t\t$$(HOST_GO_HOST_ENV) \\\n\t\t\t$$($(2)_GO_ENV) \\\n\t\t\t$$(GO_BIN) build -v $$($(2)_BUILD_OPTS) \\\n\t\t\t-o $$(@D)/bin/$$(or $$($(2)_BIN_NAME),$$(notdir $$(d))) \\\n\t\t\t$$($(2)_GOMOD)/$$(d)\n\t)\nendef\nendif\nendif\n\n# Target installation step. Only define it if not already defined by the\n# package .mk file.\nifndef $(2)_INSTALL_TARGET_CMDS\ndefine $(2)_INSTALL_TARGET_CMDS\n\t$$(foreach d,$$($(2)_INSTALL_BINS),\\\n\t\t$(INSTALL) -D -m 0755 $$(@D)/bin/$$(d) $$(TARGET_DIR)/usr/bin/$$(d)\n\t)\nendef\nendif\n\n# Host installation step\nifndef $(2)_INSTALL_CMDS\ndefine $(2)_INSTALL_CMDS\n\t$$(foreach d,$$($(2)_INSTALL_BINS),\\\n\t\t$(INSTALL) -D -m 0755 $$(@D)/bin/$$(d) $$(HOST_DIR)/bin/$$(d)\n\t)\nendef\nendif\n\n# Call the generic package infrastructure to generate the necessary make\n# targets\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\n\nendef # inner-golang-package\n\n################################################################################\n# golang-package -- the target generator macro for Go packages\n################################################################################\n\ngolang-package = $(call inner-golang-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\nhost-golang-package = $(call inner-golang-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)\n"
  },
  {
    "path": "package/pkg-kconfig.mk",
    "content": "################################################################################\n# Kconfig package infrastructure\n#\n# This file implements an infrastructure that eases development of\n# package .mk files for packages that use kconfig for configuration files.\n# It is based on the generic-package infrastructure, and inherits all of its\n# features.\n#\n# See the Buildroot documentation for details on the usage of this\n# infrastructure.\n#\n################################################################################\n\n# Macro to update back the custom (def)config file\n# Must only be called if $(PKG)_KCONFIG_FILE is set and $(PKG)_KCONFIG_DEFCONFIG)\n# is not set.\n# $(1): file to copy from\ndefine kconfig-package-update-config\n\t@$(if $($(PKG)_KCONFIG_FRAGMENT_FILES), \\\n\t\techo \"Unable to perform $(@) when fragment files are set\"; exit 1)\n\t$(Q)if [ -d $($(PKG)_KCONFIG_FILE) ]; then \\\n\t\techo \"Unable to perform $(@) when $($(PKG)_KCONFIG_FILE) is a directory\"; \\\n\t\texit 1; \\\n\tfi\n\t$(Q)mkdir -p $(dir $($(PKG)_KCONFIG_FILE))\n\tcp -f $($(PKG)_DIR)/$(1) $($(PKG)_KCONFIG_FILE)\n\t$(Q)touch --reference $($(PKG)_DIR)/$($(PKG)_KCONFIG_STAMP_DOTCONFIG) $($(PKG)_KCONFIG_FILE)\nendef\n\nPKG_KCONFIG_COMMON_OPTS = \\\n\tHOSTCC=\"$(HOSTCC_NOCCACHE)\"\n\n# Macro to save the defconfig file\n# $(1): the name of the package in upper-case letters\ndefine kconfig-package-savedefconfig\n\t$($(1)_MAKE_ENV) $($(1)_MAKE) -C $($(1)_DIR) \\\n\t\t$(PKG_KCONFIG_COMMON_OPTS) $($(1)_KCONFIG_OPTS) savedefconfig\nendef\n\n# The correct way to regenerate a .config file is to use 'make olddefconfig'.\n# For historical reasons, the target name is 'oldnoconfig' between Linux kernel\n# versions 2.6.36 and 3.6, and remains as an alias in later versions.\n# In older versions, and in some other projects that use kconfig, the target is\n# not supported at all, and we use 'yes \"\" | make oldconfig' as a fallback\n# only, as this can fail in complex cases.\n# $(1): the name of the package in upper-case letters\ndefine kconfig-package-regen-dot-config\n\t$(if $(filter olddefconfig,$($(1)_KCONFIG_RULES)),\n\t\t$(Q)$($(1)_KCONFIG_MAKE) olddefconfig,\n\t\t$(if $(filter oldnoconfig,$($(1)_KCONFIG_RULES)),\n\t\t\t$(Q)$($(1)_KCONFIG_MAKE) oldnoconfig,\n\t\t\t$(Q)(yes \"\" | $($(1)_KCONFIG_MAKE) oldconfig)))\nendef\n\n# Macro to create a .config file where all given fragments are merged into.\n# $(1): the name of the package in upper-case letters\n# $(2): name of the .config file\n# $(3): fragment files to merge\ndefine kconfig-package-merge-config\n\t$(Q)$(if $($(1)_KCONFIG_DEFCONFIG),\\\n\t\t$($(1)_KCONFIG_MAKE) $($(1)_KCONFIG_DEFCONFIG),\\\n\t\t$(INSTALL) -m 0644 -D $($(1)_KCONFIG_FILE) $(2))\n\t$(Q)support/kconfig/merge_config.sh -m -O $(dir $(2)) $(2) $(3)\n\t$(call kconfig-package-regen-dot-config,$(1))\nendef\n\n################################################################################\n# inner-kconfig-package -- generates the make targets needed to support a\n# kconfig package\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix\n#             for host packages\n#  argument 4 is the type (target or host)\n################################################################################\n\ndefine inner-kconfig-package\n\n# Default values\n$(2)_MAKE ?= $$(MAKE)\n$(2)_KCONFIG_EDITORS ?= menuconfig\n$(2)_KCONFIG_OPTS ?=\n$(2)_KCONFIG_FIXUP_CMDS ?=\n$(2)_KCONFIG_FRAGMENT_FILES ?=\n$(2)_KCONFIG_DOTCONFIG ?= .config\n$(2)_KCONFIG_SUPPORTS_DEFCONFIG ?= YES\n\n# Register the kconfig dependencies as regular dependencies, so that\n# they are also accounted for in the generated graphs.\n$(2)_DEPENDENCIES += $$($(2)_KCONFIG_DEPENDENCIES)\n\n# Generate the kconfig-related help: one entry for each editor.\n# Additionally, if the package is *not* using an in-tree defconfig\n# name, an entry for updating the package configuration file.\nifndef $(2)_HELP_CMDS\ndefine $(2)_HELP_CMDS\n\t$$(foreach editor, $$($(2)_KCONFIG_EDITORS), \\\n\t\t@printf '  %-22s - Run %s %s\\n' $(1)-$$(editor) $(1) $$(editor)\n\t)\n\t$$(if $$($(2)_KCONFIG_DEFCONFIG),,\\\n\t\t$$(if $$(filter YES,$$($(2)_KCONFIG_SUPPORTS_DEFCONFIG)),\\\n\t\t\t@printf '  %-22s - Save the %s configuration as a defconfig file\\n' \\\n\t\t\t\t$(1)-update-defconfig $(1)\n\t\t\t@printf '  %-22s     to %s\\n' '' $$($(2)_KCONFIG_FILE)\n\t\t\t@printf '  %-22s     (or override with %s_KCONFIG_FILE)\\n' '' $(2)\n\t\t)\n\t\t@printf '  %-22s - Save the %s configuration as a full .config file\\n' \\\n\t\t\t$(1)-update-config $(1)\n\t\t@printf '  %-22s     to %s\\n' '' $$($(2)_KCONFIG_FILE)\n\t\t@printf '  %-22s     (or override with %s_KCONFIG_FILE)\\n' '' $(2)\n\t)\nendef\nendif\n\n# Call the generic package infrastructure to generate the necessary\n# make targets.\n# Note: this must be done _before_ attempting to use $$($(2)_DIR) in a\n# dependency expression\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\n\n# Do not use $(2)_KCONFIG_DOTCONFIG as stamp file, because the package\n# buildsystem (e.g. linux >= 4.19) may touch it, thus rendering our\n# timestamps out of date, thus re-trigerring the build of the package.\n# Instead, use a specific file of our own as timestamp.\n$(2)_KCONFIG_STAMP_DOTCONFIG = .stamp_dotconfig\n\n# The config file as well as the fragments could be in-tree, so before\n# depending on them the package should be extracted (and patched) first.\n#\n# Since those files only have a order-only dependency, make would treat\n# any missing one as a \"force\" target:\n#   https://www.gnu.org/software/make/manual/make.html#Force-Targets\n# and would forcibly any rule that depend on those files, causing a\n# rebuild of the kernel each time make is called.\n#\n# So, we provide a recipe that checks all of those files exist, to\n# overcome that standard make behaviour.\n#\n$$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES): | $(1)-patch\n\tfor f in $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES); do \\\n\t\tif [ ! -f \"$$$${f}\" ]; then \\\n\t\t\tprintf \"Kconfig file or fragment '%s' for '%s' does not exist\\n\" \"$$$${f}\" \"$(1)\"; \\\n\t\t\texit 1; \\\n\t\tfi; \\\n\tdone\n\n$(2)_KCONFIG_MAKE = \\\n\t$$($(2)_MAKE_ENV) $$($(2)_MAKE) -C $$($(2)_DIR) \\\n\t\t$$(PKG_KCONFIG_COMMON_OPTS) $$($(2)_KCONFIG_OPTS)\n\n# $(2)_KCONFIG_MAKE may already rely on shell expansion. As the $() syntax\n# of the shell conflicts with Make's own syntax, this means that backticks\n# are used with those shell constructs. Unfortunately, the backtick syntax\n# does not nest, and we need to use Make instead of the shell to handle\n# conditions.\n\n# A recursively expanded variable is necessary, to be sure that the shell\n# command is called when the rule is processed during the build and not\n# when the rule is created when parsing all packages.\n$(2)_KCONFIG_RULES = \\\n\t$$(shell $$($(2)_KCONFIG_MAKE) -pn config 2>/dev/null | \\\n\t\tsed 's/^\\([_0-9a-zA-Z]*config\\):.*/\\1/ p; d')\n\n# The specified source configuration file and any additional configuration file\n# fragments are merged together to .config, after the package has been patched.\n# Since the file could be a defconfig file it needs to be expanded to a\n# full .config first.\n$$($(2)_DIR)/$$($(2)_KCONFIG_STAMP_DOTCONFIG): $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES)\n\t$$(call prepare-per-package-directory,$$($(2)_KCONFIG_DEPENDENCIES))\n\t$$(call kconfig-package-merge-config,$(2),$$(@D)/$$($(2)_KCONFIG_DOTCONFIG),\\\n\t\t$$($(2)_KCONFIG_FRAGMENT_FILES))\n\t$$(Q)touch $$(@D)/$$($(2)_KCONFIG_STAMP_DOTCONFIG)\n\n# If _KCONFIG_FILE or _KCONFIG_FRAGMENT_FILES exists, this dependency is\n# already implied, but if we only have a _KCONFIG_DEFCONFIG we have to add\n# it explicitly. It doesn't hurt to always have it though.\n$$($(2)_DIR)/$$($(2)_KCONFIG_STAMP_DOTCONFIG): | $(1)-patch\n\n# Some packages may need additional tools to be present by the time their\n# kconfig structure is parsed (e.g. the linux kernel may need to call to\n# the compiler to test its features).\n$$($(2)_DIR)/$$($(2)_KCONFIG_STAMP_DOTCONFIG): | $$($(2)_KCONFIG_DEPENDENCIES)\n\n# In order to get a usable, consistent configuration, some fixup may be needed.\n# The exact rules are specified by the package .mk file.\ndefine $(2)_FIXUP_DOT_CONFIG\n\t$$($(2)_KCONFIG_FIXUP_CMDS)\n\t$$(call kconfig-package-regen-dot-config,$(2))\n\t$$(Q)touch $$($(2)_DIR)/.stamp_kconfig_fixup_done\nendef\n\n$$($(2)_DIR)/.stamp_kconfig_fixup_done: PKG=$(2)\n$$($(2)_DIR)/.stamp_kconfig_fixup_done: $$($(2)_DIR)/$$($(2)_KCONFIG_STAMP_DOTCONFIG)\n\t$$($(2)_FIXUP_DOT_CONFIG)\n\n# Before running configure, the configuration file should be present and fixed\n$$($(2)_TARGET_CONFIGURE): $$($(2)_DIR)/.stamp_kconfig_fixup_done\n\n# Force olddefconfig again on -reconfigure\n$(1)-clean-for-reconfigure: $(1)-clean-kconfig-for-reconfigure\n\n$(1)-clean-kconfig-for-reconfigure:\n\trm -f $$($(2)_DIR)/$$($(2)_KCONFIG_STAMP_DOTCONFIG)\n\n# Only enable the foo-*config targets when the package is actually enabled.\n# Note: the variable $(2)_KCONFIG_VAR is not related to the kconfig\n# infrastructure, but defined by pkg-generic.mk. The generic infrastructure is\n# already called above, so we can effectively use this variable.\nifeq ($$($$($(2)_KCONFIG_VAR)),y)\n\nifeq ($$(BR_BUILDING),y)\n# Either FOO_KCONFIG_FILE or FOO_KCONFIG_DEFCONFIG is required...\nifeq ($$(or $$($(2)_KCONFIG_FILE),$$($(2)_KCONFIG_DEFCONFIG)),)\n$$(error Internal error: no value specified for $(2)_KCONFIG_FILE or $(2)_KCONFIG_DEFCONFIG)\nendif\n# ... but not both:\nifneq ($$(and $$($(2)_KCONFIG_FILE),$$($(2)_KCONFIG_DEFCONFIG)),)\n$$(error Internal error: $(2)_KCONFIG_FILE and $(2)_KCONFIG_DEFCONFIG are mutually exclusive but both are defined)\nendif\nendif\n\n# For the configurators, we do want to use the system-provided host\n# tools, not the ones we build. This is particularly true for\n# pkg-config; if we use our pkg-config (from host-pkgconf), then it\n# would not look for the .pc from the host, but we do need them,\n# especially to find ncurses, GTK+, Qt (resp. for menuconfig and\n# nconfig, gconfig, xconfig).\n# So we simply remove our PATH and PKG_CONFIG_* variables.\n$(2)_CONFIGURATOR_MAKE_ENV = \\\n\t$$(filter-out PATH=% PKG_CONFIG=% PKG_CONFIG_SYSROOT_DIR=% \\\n\t   PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=% PKG_CONFIG_ALLOW_SYSTEM_LIBS=% \\\n\t   PKG_CONFIG_LIBDIR=%,$$($(2)_MAKE_ENV)) \\\n\tPKG_CONFIG_PATH=\"$(HOST_PKG_CONFIG_PATH)\"\n\n# Configuration editors (menuconfig, ...)\n#\n# We need to apply the configuration fixups right after a configuration\n# editor exits, so that it is possible to save the configuration right\n# after exiting an editor, and so the user always sees a .config file\n# that is clean wrt. our requirements.\n#\n# Because commands in $(1)_FIXUP_KCONFIG are probably using $(@D), we\n# need to have a valid @D set. But, because the configurators rules are\n# not real files and do not contain the path to the package build dir,\n# @D would be just '.' in this case. So, we use an intermediate rule\n# with a stamp-like file which path is in the package build dir, so we\n# end up having a valid @D.\n#\n$$(addprefix $(1)-,$$($(2)_KCONFIG_EDITORS)): $(1)-%: $$($(2)_DIR)/.kconfig_editor_%\n$$($(2)_DIR)/.kconfig_editor_%: PKG=$(2)\n$$($(2)_DIR)/.kconfig_editor_%: $$($(2)_DIR)/.stamp_kconfig_fixup_done\n\t$$($(2)_CONFIGURATOR_MAKE_ENV) $$($(2)_MAKE) -C $$($(2)_DIR) \\\n\t\t$$(PKG_KCONFIG_COMMON_OPTS) $$($(2)_KCONFIG_OPTS) $$(*)\n\trm -f $$($(2)_DIR)/.stamp_{kconfig_fixup_done,configured,built}\n\trm -f $$($(2)_DIR)/.stamp_{target,staging,images}_installed\n\t$$($(2)_FIXUP_DOT_CONFIG)\n\n# Saving back the configuration\n#\n# Ideally, that should directly depend on $$($(2)_DIR)/.stamp_kconfig_fixup_done,\n# but that breaks the use-case in PR-8156 (from a clean tree):\n#   make menuconfig           <- enable kernel, use an in-tree defconfig, save and exit\n#   make linux-menuconfig     <- enable/disable whatever option, save and exit\n#   make menuconfig           <- change to use a custom defconfig file, set a path, save and exit\n#   make linux-update-config  <- should save to the new custom defconfig file\n#\n# Because of that use-case, saving the configuration can *not* directly\n# depend on the stamp file, because it itself depends on the .config,\n# which in turn depends on the (newly-set an non-existent) custom\n# defconfig file.\n#\n# Instead, we use a PHONY rule that will catch that situation.\n#\n$(1)-check-configuration-done:\n\t@if [ ! -f $$($(2)_DIR)/.stamp_kconfig_fixup_done ]; then \\\n\t\techo \"$(1) is not yet configured\"; \\\n\t\texit 1; \\\n\tfi\n\nifeq ($$($(2)_KCONFIG_SUPPORTS_DEFCONFIG),YES)\n.PHONY: $(1)-savedefconfig\n$(1)-savedefconfig: $(1)-check-configuration-done\n\t$$(call kconfig-package-savedefconfig,$(2))\nendif\n\nifeq ($$($(2)_KCONFIG_DEFCONFIG),)\n# Target to copy back the configuration to the source configuration file\n# Even though we could use 'cp --preserve-timestamps' here, the separate\n# cp and 'touch --reference' is used for symmetry with $(1)-update-defconfig.\n.PHONY: $(1)-update-config\n$(1)-update-config: PKG=$(2)\n$(1)-update-config: $(1)-check-configuration-done\n\t$$(call kconfig-package-update-config,$$($(2)_KCONFIG_DOTCONFIG))\n\nifeq ($$($(2)_KCONFIG_SUPPORTS_DEFCONFIG),YES)\n# Note: make sure the timestamp of the stored configuration is not newer than\n# the .config to avoid a useless rebuild. Note that, contrary to\n# $(1)-update-config, the reference for 'touch' is _not_ the file from which\n# we copy.\n.PHONY: $(1)-update-defconfig\n$(1)-update-defconfig: PKG=$(2)\n$(1)-update-defconfig: $(1)-savedefconfig\n\t$$(call kconfig-package-update-config,defconfig)\nendif\n\nendif\n\n# Target to output differences between the configuration obtained via the\n# defconfig + fragments (if any) and the current configuration.\n# Note: it preserves the timestamp of the current configuration when moving it\n# around.\n$(1)-diff-config: $(1)-check-configuration-done\n\t$$(Q)cp -a $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_DIR)/.config.dc.bak\n\t$$(call kconfig-package-merge-config,$(2),$$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG),\\\n\t\t$$($(2)_KCONFIG_FRAGMENT_FILES))\n\t$$(Q)utils/diffconfig $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) \\\n\t\t $$($(2)_DIR)/.config.dc.bak\n\t$$(Q)cp -a $$($(2)_DIR)/.config.dc.bak $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG)\n\t$$(Q)rm -f $$($(2)_DIR)/.config.dc.bak\n\n\nendif # package enabled\n\n.PHONY: \\\n\t$(1)-diff-config \\\n\t$(1)-check-configuration-done \\\n\t$$($(2)_DIR)/.kconfig_editor_% \\\n\t$$(addprefix $(1)-,$$($(2)_KCONFIG_EDITORS))\n\nendef # inner-kconfig-package\n\n################################################################################\n# kconfig-package -- the target generator macro for kconfig packages\n################################################################################\n\nkconfig-package = $(call inner-kconfig-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\n"
  },
  {
    "path": "package/pkg-kernel-module.mk",
    "content": "################################################################################\n# kernel module infrastructure for building Linux kernel modules\n#\n# This file implements an infrastructure that eases development of package\n# .mk files for out-of-tree Linux kernel modules. It should be used for all\n# packages that build a Linux kernel module using the kernel's out-of-tree\n# buildsystem, unless they use a complex custom buildsystem.\n#\n# The kernel-module infrastructure requires the packages that use it to also\n# use another package infrastructure. kernel-module only defines post-build\n# and post-install hooks. This allows the package to build both kernel\n# modules and/or user-space components (with any of the other *-package\n# infra).\n#\n# As such, it is to be used in conjunction with another *-package infra,\n# like so:\n#\n#   $(eval $(kernel-module))\n#   $(eval $(generic-package))\n#\n# Note: if the caller needs access to the kernel modules (either after they\n# are built or after they are installed), it will have to define its own\n# post-build/install hooks *after* calling kernel-module, but *before*\n# calling the other *-package infra, like so:\n#\n#   $(eval $(kernel-module))\n#   define FOO_MOD_TWEAK\n#       # do something\n#   endef\n#   FOO_POST_BUILD_HOOKS += FOO_MOD_TWEAK\n#   $(eval $(generic-package))\n#\n# Note: this infra does not check that the kernel is enabled; it is expected\n# to be enforced at the Kconfig level with proper 'depends on'.\n################################################################################\n\n################################################################################\n# inner-kernel-module -- generates the make targets needed to support building\n# a kernel module\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name\n################################################################################\n\ndefine inner-kernel-module\n\n# If the package is enabled, ensure the kernel will support modules\nifeq ($$(BR2_PACKAGE_$(2)),y)\nLINUX_NEEDS_MODULES = y\nendif\n\n# The kernel must be built first.\n$(2)_DEPENDENCIES += linux\n\n# This is only defined in some infrastructures (e.g. autotools, cmake),\n# but not in others (e.g. generic). So define it here as well.\n$(2)_MAKE ?= $$(MAKE)\n\n# If not specified, consider the source of the kernel module to be at\n# the root of the package.\n$(2)_MODULE_SUBDIRS ?= .\n\n# Build the kernel module(s)\n# Force PWD for those packages that want to use it to find their\n# includes and other support files (Booo!)\ndefine $(2)_KERNEL_MODULES_BUILD\n\t@$$(call MESSAGE,\"Building kernel module(s)\")\n\t$$(foreach d,$$($(2)_MODULE_SUBDIRS), \\\n\t\t$$(LINUX_MAKE_ENV) $$($$(PKG)_MAKE) \\\n\t\t\t-C $$(LINUX_DIR) \\\n\t\t\t$$(LINUX_MAKE_FLAGS) \\\n\t\t\t$$($(2)_MODULE_MAKE_OPTS) \\\n\t\t\tPWD=$$(@D)/$$(d) \\\n\t\t\tM=$$(@D)/$$(d) \\\n\t\t\tmodules$$(sep))\nendef\n$(2)_POST_BUILD_HOOKS += $(2)_KERNEL_MODULES_BUILD\n\n# Install the kernel module(s)\n# Force PWD for those packages that want to use it to find their\n# includes and other support files (Booo!)\ndefine $(2)_KERNEL_MODULES_INSTALL\n\t@$$(call MESSAGE,\"Installing kernel module(s)\")\n\t$$(foreach d,$$($(2)_MODULE_SUBDIRS), \\\n\t\t$$(LINUX_MAKE_ENV) $$($$(PKG)_MAKE) \\\n\t\t\t-C $$(LINUX_DIR) \\\n\t\t\t$$(LINUX_MAKE_FLAGS) \\\n\t\t\t$$($(2)_MODULE_MAKE_OPTS) \\\n\t\t\tPWD=$$(@D)/$$(d) \\\n\t\t\tM=$$(@D)/$$(d) \\\n\t\t\tmodules_install$$(sep))\nendef\n$(2)_POST_INSTALL_TARGET_HOOKS += $(2)_KERNEL_MODULES_INSTALL\n\nendef\n\n################################################################################\n# kernel-module -- the target generator macro for kernel module packages\n################################################################################\n\nkernel-module = $(call inner-kernel-module,$(pkgname),$(call UPPERCASE,$(pkgname)))\n"
  },
  {
    "path": "package/pkg-luarocks.mk",
    "content": "################################################################################\n# LuaRocks package infrastructure\n# see http://luarocks.org/\n#\n# This file implements an infrastructure that eases development of\n# package .mk files for LuaRocks packages.\n# LuaRocks supports various build.type : builtin, make, cmake.\n# This luarocks infrastructure supports only the builtin mode,\n# the make & cmake modes could be directly handled by generic & cmake infrastructure.\n#\n# See the Buildroot documentation for details on the usage of this\n# infrastructure\n#\n# In terms of implementation, this LuaRocks infrastructure requires\n# the .mk file to only specify metadata information about the\n# package: name, version, etc.\n#\n################################################################################\n\nLUAROCKS_RUN_CMD = $(HOST_DIR)/bin/luarocks\nLUAROCKS_CFLAGS = $(TARGET_CFLAGS) -fPIC\nHOST_LUAROCKS_CFLAGS = $(HOST_CFLAGS) -fPIC\nifeq ($(BR2_PACKAGE_LUA_5_3),y)\nLUAROCKS_CFLAGS += -DLUA_COMPAT_5_2\nHOST_LUAROCKS_CFLAGS += -DLUA_COMPAT_5_2\nelse ifeq ($(BR2_PACKAGE_LUA_5_4),y)\nLUAROCKS_CFLAGS += -DLUA_COMPAT_5_3\nHOST_LUAROCKS_CFLAGS += -DLUA_COMPAT_5_3\nendif\n\n################################################################################\n# inner-luarocks-package -- defines how the configuration, compilation and\n# installation of a LuaRocks package should be done, implements a few hooks to\n# tune the build process and calls the generic package infrastructure to\n# generate the necessary make targets\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix\n#             for host packages\n#  argument 4 is the type (target or host)\n################################################################################\n\ndefine inner-luarocks-package\n\nifndef $(2)_NAME_UPSTREAM\n  ifdef $(3)_NAME_UPSTREAM\n    $(2)_NAME_UPSTREAM = $($(3)_NAME_UPSTREAM)\n  else\n    $(2)_NAME_UPSTREAM ?= $(1)\n  endif\nendif\n\nifndef $(2)_SUBDIR\n  ifdef $(3)_SUBDIR\n    $(2)_SUBDIR = $($(3)_SUBDIR)\n  else\n    $(2)_SUBDIR ?= $$($(3)_NAME_UPSTREAM)-$$(shell echo \"$$($(3)_VERSION)\" | sed -e \"s/-[0-9]$$$$//\")\n  endif\nendif\n\nifndef $(2)_ROCKSPEC\n  ifdef $(3)_ROCKSPEC\n    $(2)_ROCKSPEC = $($(3)_ROCKSPEC)\n  else\n    $(2)_ROCKSPEC ?= $$(call LOWERCASE,$$($(3)_NAME_UPSTREAM))-$$($(3)_VERSION).rockspec\n  endif\nendif\n\nifndef $(2)_SOURCE\n  ifdef $(3)_SOURCE\n    $(2)_SOURCE = $($(3)_SOURCE)\n  else\n    $(2)_SOURCE ?= $$(call LOWERCASE,$$($(3)_NAME_UPSTREAM))-$$($(3)_VERSION).src.rock\n  endif\nendif\n\nifndef $(2)_SITE\n  ifdef $(3)_SITE\n    $(2)_SITE = $($(3)_SITE)\n  else\n    $(2)_SITE ?= $$(call qstrip,$$(BR2_LUAROCKS_MIRROR))\n  endif\nendif\n\nifeq ($(4),target)\n$(2)_DEPENDENCIES += luainterpreter\nendif\n# host-luarocks implies host-luainterpreter\n$(2)_EXTRACT_DEPENDENCIES += host-luarocks\n\n#\n# Extract step. Extract into a temporary dir and move the relevant part to the\n# source dir.\n#\nifndef $(2)_EXTRACT_CMDS\ndefine $(2)_EXTRACT_CMDS\n\tmkdir -p $$($(2)_DIR)/luarocks-extract\n\tcd $$($(2)_DIR)/luarocks-extract && \\\n\t\t$$(LUAROCKS_RUN_CMD) unpack --force $$($(2)_DL_DIR)/$$($(2)_SOURCE)\n\tmv $$($(2)_DIR)/luarocks-extract/*/* $$($(2)_DIR)\nendef\nendif\n\n#\n# Build/install step.\n#\nifndef $(2)_INSTALL_TARGET_CMDS\ndefine $(2)_INSTALL_TARGET_CMDS\n\tcd $$($(2)_SRCDIR) && \\\n\t\tLUAROCKS_CONFIG=$$(LUAROCKS_CONFIG_FILE) \\\n\t\t$$(LUAROCKS_RUN_CMD) make --keep --deps-mode none \\\n\t\t\t--tree \"$$(TARGET_DIR)/usr\" \\\n\t\t\tDEPS_DIR=\"$$(STAGING_DIR)/usr\" \\\n\t\t\tLUA_INCDIR=\"$$(STAGING_DIR)/usr/include\" \\\n\t\t\tLUA_LIBDIR=\"$$(STAGING_DIR)/usr/lib\" \\\n\t\t\tCC=$$(TARGET_CC) \\\n\t\t\tLD=$$(TARGET_CC) \\\n\t\t\tCFLAGS=\"$$(LUAROCKS_CFLAGS)\" \\\n\t\t\tLIBFLAG=\"-shared $$(TARGET_LDFLAGS)\" \\\n\t\t\t$$($(2)_BUILD_OPTS) $$($(2)_ROCKSPEC)\nendef\nendif\n\nifndef $(2)_INSTALL_CMDS\ndefine $(2)_INSTALL_CMDS\n\tcd $$($(2)_SRCDIR) && \\\n\t\tLUAROCKS_CONFIG=$$(HOST_LUAROCKS_CONFIG_FILE) \\\n\t\t$$(LUAROCKS_RUN_CMD) make --keep --deps-mode none \\\n\t\t\tDEPS_DIR=\"$$(HOST_DIR)\" \\\n\t\t\tCFLAGS=\"$$(HOST_LUAROCKS_CFLAGS)\" \\\n\t\t\tLIBFLAG=\"-shared $$(HOST_LDFLAGS)\" \\\n\t\t\t$$($(2)_BUILD_OPTS) $$($(2)_ROCKSPEC)\nendef\nendif\n\n# Call the generic package infrastructure to generate the necessary\n# make targets\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\n\n# Upgrade helper\n$(1)-upgrade: host-luarocks\n\t$$(LUAROCKS_RUN_CMD) buildroot $$($(2)_NAME_UPSTREAM) $(1)\n\n.PHONY: $(1)-upgrade\n\nendef\n\n################################################################################\n# luarocks-package -- the target generator macro for LuaRocks packages\n################################################################################\n\nluarocks-package = $(call inner-luarocks-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\nhost-luarocks-package = $(call inner-luarocks-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)\n"
  },
  {
    "path": "package/pkg-meson.mk",
    "content": "################################################################################\n# Meson package infrastructure\n#\n# This file implements an infrastructure that eases development of\n# package .mk files for Meson packages. It should be used for all\n# packages that use Meson as their build system.\n#\n# See the Buildroot documentation for details on the usage of this\n# infrastructure\n#\n# In terms of implementation, this Meson infrastructure requires\n# the .mk file to only specify metadata information about the\n# package: name, version, download URL, etc.\n#\n# We still allow the package .mk file to override what the different\n# steps are doing, if needed. For example, if <PKG>_BUILD_CMDS is\n# already defined, it is used as the list of commands to perform to\n# build the package, instead of the default Meson behaviour. The\n# package can also define some post operation hooks.\n#\n################################################################################\n\n#\n# Pass PYTHONNOUSERSITE environment variable when invoking Meson or Ninja, so\n# $(HOST_DIR)/bin/python3 will not look for Meson modules in\n# $HOME/.local/lib/python3.x/site-packages\n#\nMESON\t\t= PYTHONNOUSERSITE=y $(HOST_DIR)/bin/meson\nNINJA\t\t= PYTHONNOUSERSITE=y $(HOST_DIR)/bin/ninja\nNINJA_OPTS\t= $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS)\n\n# https://mesonbuild.com/Reference-tables.html#cpu-families\nifeq ($(BR2_arcle)$(BR2_arceb),y)\nPKG_MESON_TARGET_CPU_FAMILY = arc\nelse ifeq ($(BR2_arm)$(BR2_armeb),y)\nPKG_MESON_TARGET_CPU_FAMILY = arm\nelse ifeq ($(BR2_aarch64)$(BR2_aarch64_be),y)\nPKG_MESON_TARGET_CPU_FAMILY = aarch64\nelse ifeq ($(BR2_i386),y)\nPKG_MESON_TARGET_CPU_FAMILY = x86\nelse ifeq ($(BR2_m68k),y)\nPKG_MESON_TARGET_CPU_FAMILY = m68k\nelse ifeq ($(BR2_microblazeel)$(BR2_microblazebe),y)\nPKG_MESON_TARGET_CPU_FAMILY = microblaze\nelse ifeq ($(BR2_mips)$(BR2_mipsel),y)\nPKG_MESON_TARGET_CPU_FAMILY = mips\nelse ifeq ($(BR2_mips64)$(BR2_mips64el),y)\nPKG_MESON_TARGET_CPU_FAMILY = mips64\nelse ifeq ($(BR2_powerpc),y)\nPKG_MESON_TARGET_CPU_FAMILY = ppc\nelse ifeq ($(BR2_powerpc64)$(BR2_powerpc64le),y)\nPKG_MESON_TARGET_CPU_FAMILY = ppc64\nelse ifeq ($(BR2_riscv),y)\nPKG_MESON_TARGET_CPU_FAMILY = riscv64\nelse ifeq ($(BR2_sh4)$(BR2_sh4eb)$(BR2_sh4a)$(BR2_sh4aeb),y)\nPKG_MESON_TARGET_CPU_FAMILY = sh4\nelse ifeq ($(BR2_sparc),y)\nPKG_MESON_TARGET_CPU_FAMILY = sparc\nelse ifeq ($(BR2_sparc64),y)\nPKG_MESON_TARGET_CPU_FAMILY = sparc64\nelse ifeq ($(BR2_x86_64),y)\nPKG_MESON_TARGET_CPU_FAMILY = x86_64\nelse\nPKG_MESON_TARGET_CPU_FAMILY = $(ARCH)\nendif\n\nHOST_MESON_TARGET_ENDIAN = $(call qstrip,$(call LOWERCASE,$(BR2_ENDIAN)))\nHOST_MESON_TARGET_CPU = $(GCC_TARGET_CPU)\n\n################################################################################\n# inner-meson-package -- defines how the configuration, compilation and\n# installation of a Meson package should be done, implements a few hooks to\n# tune the build process and calls the generic package infrastructure to\n# generate the necessary make targets\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix\n#             for host packages\n#  argument 4 is the type (target or host)\n################################################################################\n\ndefine inner-meson-package\n\n$(2)_CONF_ENV\t\t?=\n$(2)_CONF_OPTS\t\t?=\n$(2)_NINJA_ENV\t\t?=\n\n#\n# Configure step. Only define it if not already defined by the package\n# .mk file. And take care of the differences between host and target\n# packages.\n#\nifndef $(2)_CONFIGURE_CMDS\nifeq ($(4),target)\n\n$(2)_CFLAGS ?= $$(TARGET_CFLAGS)\n$(2)_LDFLAGS ?= $$(TARGET_LDFLAGS)\n$(2)_CXXFLAGS ?= $$(TARGET_CXXFLAGS)\n\n# Configure package for target\n#\n#\ndefine $(2)_CONFIGURE_CMDS\n\trm -rf $$($$(PKG)_SRCDIR)/build\n\tmkdir -p $$($$(PKG)_SRCDIR)/build\n\tsed -e 's%@TARGET_CROSS@%$$(TARGET_CROSS)%g' \\\n\t    -e 's%@TARGET_ARCH@%$$(HOST_MESON_TARGET_CPU_FAMILY)%g' \\\n\t    -e 's%@TARGET_CPU@%$$(HOST_MESON_TARGET_CPU)%g' \\\n\t    -e 's%@TARGET_ENDIAN@%$$(HOST_MESON_TARGET_ENDIAN)%g' \\\n\t    -e \"s%@TARGET_CFLAGS@%$$(call make-sq-comma-list,$$($(2)_CFLAGS))%g\" \\\n\t    -e \"s%@TARGET_LDFLAGS@%$$(call make-sq-comma-list,$$($(2)_LDFLAGS))%g\" \\\n\t    -e \"s%@TARGET_CXXFLAGS@%$$(call make-sq-comma-list,$$($(2)_CXXFLAGS))%g\" \\\n\t    -e 's%@HOST_DIR@%$$(HOST_DIR)%g' \\\n\t    -e 's%@STAGING_DIR@%$$(STAGING_DIR)%g' \\\n\t    -e 's%@STATIC@%$$(if $$(BR2_STATIC_LIBS),true,false)%g' \\\n\t    -e \"/^\\[binaries\\]$$$$/s:$$$$:$$(foreach x,$$($(2)_MESON_EXTRA_BINARIES),\\n$$(x)):\" \\\n\t    -e \"/^\\[properties\\]$$$$/s:$$$$:$$(foreach x,$$($(2)_MESON_EXTRA_PROPERTIES),\\n$$(x)):\" \\\n\t    package/meson/cross-compilation.conf.in \\\n\t    > $$($$(PKG)_SRCDIR)/build/cross-compilation.conf\n\tPATH=$$(BR_PATH) \\\n\tCC_FOR_BUILD=\"$$(HOSTCC)\" \\\n\tCXX_FOR_BUILD=\"$$(HOSTCXX)\" \\\n\t$$($$(PKG)_CONF_ENV) \\\n\t$$(MESON) \\\n\t\t--prefix=/usr \\\n\t\t--libdir=lib \\\n\t\t--default-library=$(if $(BR2_STATIC_LIBS),static,shared) \\\n\t\t--buildtype=$(if $(BR2_ENABLE_RUNTIME_DEBUG),debug,release) \\\n\t\t--cross-file=$$($$(PKG)_SRCDIR)/build/cross-compilation.conf \\\n\t\t-Db_pie=false \\\n\t\t-Dstrip=false \\\n\t\t-Dbuild.pkg_config_path=$$(HOST_DIR)/lib/pkgconfig \\\n\t\t$$($$(PKG)_CONF_OPTS) \\\n\t\t$$($$(PKG)_SRCDIR) $$($$(PKG)_SRCDIR)/build\nendef\nelse\n\n# Configure package for host\ndefine $(2)_CONFIGURE_CMDS\n\trm -rf $$($$(PKG)_SRCDIR)/build\n\tmkdir -p $$($$(PKG)_SRCDIR)/build\n\t$$(HOST_CONFIGURE_OPTS) \\\n\t$$($$(PKG)_CONF_ENV) $$(MESON) \\\n\t\t--prefix=$$(HOST_DIR) \\\n\t\t--libdir=lib \\\n\t\t--sysconfdir=$$(HOST_DIR)/etc \\\n\t\t--localstatedir=$$(HOST_DIR)/var \\\n\t\t--default-library=shared \\\n\t\t--buildtype=release \\\n\t\t-Dstrip=true \\\n\t\t$$($$(PKG)_CONF_OPTS) \\\n\t\t$$($$(PKG)_SRCDIR) $$($$(PKG)_SRCDIR)/build\nendef\nendif\nendif\n\n$(2)_DEPENDENCIES += host-meson\n\n#\n# Build step. Only define it if not already defined by the package .mk\n# file.\n#\nifndef $(2)_BUILD_CMDS\nifeq ($(4),target)\ndefine $(2)_BUILD_CMDS\n\t$$(TARGET_MAKE_ENV) $$($$(PKG)_NINJA_ENV) \\\n\t\t$$(NINJA) $$(NINJA_OPTS) $$($$(PKG)_NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build\nendef\nelse\ndefine $(2)_BUILD_CMDS\n\t$$(HOST_MAKE_ENV) $$($$(PKG)_NINJA_ENV) \\\n\t\t$$(NINJA) $$(NINJA_OPTS) $$($$(PKG)_NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build\nendef\nendif\nendif\n\n#\n# Host installation step. Only define it if not already defined by the\n# package .mk file.\n#\nifndef $(2)_INSTALL_CMDS\ndefine $(2)_INSTALL_CMDS\n\t$$(HOST_MAKE_ENV) $$($$(PKG)_NINJA_ENV) \\\n\t\t$$(NINJA) $$(NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build install\nendef\nendif\n\n#\n# Staging installation step. Only define it if not already defined by\n# the package .mk file.\n#\nifndef $(2)_INSTALL_STAGING_CMDS\ndefine $(2)_INSTALL_STAGING_CMDS\n\t$$(TARGET_MAKE_ENV) $$($$(PKG)_NINJA_ENV) DESTDIR=$$(STAGING_DIR) \\\n\t\t$$(NINJA) $$(NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build install\nendef\nendif\n\n#\n# Target installation step. Only define it if not already defined by\n# the package .mk file.\n#\nifndef $(2)_INSTALL_TARGET_CMDS\ndefine $(2)_INSTALL_TARGET_CMDS\n\t$$(TARGET_MAKE_ENV) $$($$(PKG)_NINJA_ENV) DESTDIR=$$(TARGET_DIR) \\\n\t\t$$(NINJA) $$(NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build install\nendef\nendif\n\n# Call the generic package infrastructure to generate the necessary\n# make targets\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\n\nendef\n\n################################################################################\n# meson-package -- the target generator macro for Meson packages\n################################################################################\n\nmeson-package = $(call inner-meson-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\nhost-meson-package = $(call inner-meson-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)\n\n################################################################################\n# Generation of the Meson compile flags and cross-compilation file\n################################################################################\n\n# Generate a Meson cross-compilation.conf suitable for use with the\n# SDK; also install the file as a template for users to add their\n# own flags if they need to.\ndefine PKG_MESON_INSTALL_CROSS_CONF\n\tmkdir -p $(HOST_DIR)/etc/meson\n\tsed -e 's%@TARGET_CROSS@%$(TARGET_CROSS)%g' \\\n\t    -e 's%@TARGET_ARCH@%$(HOST_MESON_TARGET_CPU_FAMILY)%g' \\\n\t    -e 's%@TARGET_CPU@%$(HOST_MESON_TARGET_CPU)%g' \\\n\t    -e 's%@TARGET_ENDIAN@%$(HOST_MESON_TARGET_ENDIAN)%g' \\\n\t    -e \"s%@TARGET_CFLAGS@%$(call make-sq-comma-list,$(TARGET_CFLAGS))@PKG_TARGET_CFLAGS@%g\" \\\n\t    -e \"s%@TARGET_LDFLAGS@%$(call make-sq-comma-list,$(TARGET_LDFLAGS))@PKG_TARGET_CFLAGS@%g\" \\\n\t    -e \"s%@TARGET_CXXFLAGS@%$(call make-sq-comma-list,$(TARGET_CXXFLAGS))@PKG_TARGET_CFLAGS@%g\" \\\n\t    -e 's%@HOST_DIR@%$(HOST_DIR)%g' \\\n\t    -e 's%@STAGING_DIR@%$(STAGING_DIR)%g' \\\n\t    -e 's%@STATIC@%$(if $(BR2_STATIC_LIBS),true,false)%g' \\\n\t    $(HOST_MESON_PKGDIR)/cross-compilation.conf.in \\\n\t    > $(HOST_DIR)/etc/meson/cross-compilation.conf.in\n\tsed -e 's%@PKG_TARGET_CFLAGS@%%g' \\\n\t    -e 's%@PKG_TARGET_LDFLAGS@%%g' \\\n\t    -e 's%@PKG_TARGET_CXXFLAGS@%%g' \\\n\t    $(HOST_DIR)/etc/meson/cross-compilation.conf.in \\\n\t    > $(HOST_DIR)/etc/meson/cross-compilation.conf\nendef\n\nTOOLCHAIN_TARGET_FINALIZE_HOOKS += PKG_MESON_INSTALL_CROSS_CONF\n"
  },
  {
    "path": "package/pkg-perl.mk",
    "content": "################################################################################\n# Perl package infrastructure\n#\n# This file implements an infrastructure that eases development of\n# package .mk files for Perl packages.\n#\n# See the Buildroot documentation for details on the usage of this\n# infrastructure\n#\n# In terms of implementation, this perl infrastructure requires\n# the .mk file to only specify metadata information about the\n# package: name, version, download URL, etc.\n#\n# We still allow the package .mk file to override what the different\n# steps are doing, if needed. For example, if <PKG>_BUILD_CMDS is\n# already defined, it is used as the list of commands to perform to\n# build the package, instead of the default perl behaviour. The\n# package can also define some post operation hooks.\n#\n################################################################################\n\nPERL_ARCHNAME = $(ARCH)-linux\nPERL_RUN = PERL5LIB= PERL_USE_UNSAFE_INC=1 $(HOST_DIR)/bin/perl\n\n################################################################################\n# inner-perl-package -- defines how the configuration, compilation and\n# installation of a perl package should be done, implements a\n# few hooks to tune the build process for perl specifities and\n# calls the generic package infrastructure to generate the necessary\n# make targets\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix\n#             for host packages\n#  argument 4 is the type (target or host)\n################################################################################\n\ndefine inner-perl-package\n\n# Target packages need both the perl interpreter on the target (for\n# runtime) and the perl interpreter on the host (for\n# compilation). However, host packages only need the perl\n# interpreter on the host.\nifeq ($(4),target)\n$(2)_DEPENDENCIES += host-perl perl\nelse\n$(2)_DEPENDENCIES += host-perl\nendif\n\n# From http://perldoc.perl.org/CPAN.html#Config-Variables - prefer_installer\n#       legal values are MB and EUMM: if a module comes\n#       with both a Makefile.PL and a Build.PL, use the\n#       former (EUMM) or the latter (MB); if the module\n#       comes with only one of the two, that one will be\n#       used no matter the setting\n$(2)_PREFER_INSTALLER ?= MB\n\n#\n# Configure step. Only define it if not already defined by the package\n# .mk file. And take care of the differences between host and target\n# packages.\n#\nifndef $(2)_CONFIGURE_CMDS\nifeq ($(4),target)\n\n# Configure package for target\ndefine $(2)_CONFIGURE_CMDS\n\tcd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != \"EUMM\" ] ; then \\\n\t\t$$($(2)_CONF_ENV) \\\n\t\tPERL_MM_USE_DEFAULT=1 \\\n\t\t$$(PERL_RUN) Build.PL \\\n\t\t\t--config ar=\"$$(TARGET_AR)\" \\\n\t\t\t--config full_ar=\"$$(TARGET_AR)\" \\\n\t\t\t--config cc=\"$$(TARGET_CC)\" \\\n\t\t\t--config ccflags=\"$$(TARGET_CFLAGS)\" \\\n\t\t\t--config optimize=\" \" \\\n\t\t\t--config ld=\"$$(TARGET_CC)\" \\\n\t\t\t--config lddlflags=\"-shared $$(TARGET_LDFLAGS)\" \\\n\t\t\t--config ldflags=\"$$(TARGET_LDFLAGS)\" \\\n\t\t\t--include_dirs $$(STAGING_DIR)/usr/lib/perl5/$$(PERL_VERSION)/$$(PERL_ARCHNAME)/CORE \\\n\t\t\t--destdir $$(TARGET_DIR) \\\n\t\t\t--installdirs vendor \\\n\t\t\t--install_path lib=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \\\n\t\t\t--install_path arch=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$$(PERL_ARCHNAME) \\\n\t\t\t--install_path bin=/usr/bin \\\n\t\t\t--install_path script=/usr/bin \\\n\t\t\t--install_path bindoc=/usr/share/man/man1 \\\n\t\t\t--install_path libdoc=/usr/share/man/man3 \\\n\t\t\t$$($(2)_CONF_OPTS); \\\n\telse \\\n\t\t$$($(2)_CONF_ENV) \\\n\t\tPERL_MM_USE_DEFAULT=1 \\\n\t\tPERL_AUTOINSTALL=--skipdeps \\\n\t\t$$(PERL_RUN) Makefile.PL \\\n\t\t\tAR=\"$$(TARGET_AR)\" \\\n\t\t\tFULL_AR=\"$$(TARGET_AR)\" \\\n\t\t\tCC=\"$$(TARGET_CC)\" \\\n\t\t\tCCFLAGS=\"$$(TARGET_CFLAGS)\" \\\n\t\t\tOPTIMIZE=\" \" \\\n\t\t\tLD=\"$$(TARGET_CC)\" \\\n\t\t\tLDDLFLAGS=\"-shared $$(TARGET_LDFLAGS)\" \\\n\t\t\tLDFLAGS=\"$$(TARGET_LDFLAGS)\" \\\n\t\t\tPERL_ARCHLIB=$$(STAGING_DIR)/usr/lib/perl5/$$(PERL_VERSION)/$$(PERL_ARCHNAME) \\\n\t\t\tDESTDIR=$$(TARGET_DIR) \\\n\t\t\tINSTALLDIRS=vendor \\\n\t\t\tINSTALLVENDORLIB=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \\\n\t\t\tINSTALLVENDORARCH=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$$(PERL_ARCHNAME) \\\n\t\t\tINSTALLVENDORBIN=/usr/bin \\\n\t\t\tINSTALLVENDORSCRIPT=/usr/bin \\\n\t\t\tINSTALLVENDORMAN1DIR=/usr/share/man/man1 \\\n\t\t\tINSTALLVENDORMAN3DIR=/usr/share/man/man3 \\\n\t\t\t$$($(2)_CONF_OPTS); \\\n\tfi\nendef\nelse\n\n# Configure package for host\ndefine $(2)_CONFIGURE_CMDS\n\tcd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != \"EUMM\" ] ; then \\\n\t\t$$($(2)_CONF_ENV) \\\n\t\tPERL_MM_USE_DEFAULT=1 \\\n\t\t$$(PERL_RUN) Build.PL \\\n\t\t\t$$($(2)_CONF_OPTS); \\\n\telse \\\n\t\t$$($(2)_CONF_ENV) \\\n\t\tPERL_MM_USE_DEFAULT=1 \\\n\t\tPERL_AUTOINSTALL=--skipdeps \\\n\t\t$$(PERL_RUN) Makefile.PL \\\n\t\t\t$$($(2)_CONF_OPTS); \\\n\tfi\nendef\nendif\nendif\n\n#\n# Build step. Only define it if not already defined by the package .mk\n# file. And take care of the differences between host and target\n# packages.\n#\nifndef $(2)_BUILD_CMDS\nifeq ($(4),target)\n\n# Build package for target\ndefine $(2)_BUILD_CMDS\n\tcd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != \"EUMM\" ] ; then \\\n\t\t$$(PERL_RUN) Build $$($(2)_BUILD_OPTS) build; \\\n\telse \\\n\t\t$$(MAKE1) \\\n\t\t\tFIXIN=: \\\n\t\t\t$$($(2)_BUILD_OPTS) pure_all; \\\n\tfi\nendef\nelse\n\n# Build package for host\ndefine $(2)_BUILD_CMDS\n\tcd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != \"EUMM\" ] ; then \\\n\t\t$$(PERL_RUN) Build $$($(2)_BUILD_OPTS) build; \\\n\telse \\\n\t\t$$(MAKE1) $$($(2)_BUILD_OPTS) pure_all; \\\n\tfi\nendef\nendif\nendif\n\n#\n# Host installation step. Only define it if not already defined by the\n# package .mk file.\n#\nifndef $(2)_INSTALL_CMDS\ndefine $(2)_INSTALL_CMDS\n\tcd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != \"EUMM\" ] ; then \\\n\t\t$$(PERL_RUN) Build $$($(2)_INSTALL_TARGET_OPTS) install; \\\n\telse \\\n\t\t$$(MAKE1) $$($(2)_INSTALL_TARGET_OPTS) pure_install; \\\n\tfi\nendef\nendif\n\n#\n# Target installation step. Only define it if not already defined by\n# the package .mk file.\n#\nifndef $(2)_INSTALL_TARGET_CMDS\ndefine $(2)_INSTALL_TARGET_CMDS\n\tcd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != \"EUMM\" ] ; then \\\n\t\t$$(PERL_RUN) Build $$($(2)_INSTALL_TARGET_OPTS) install; \\\n\telse \\\n\t\t$$(MAKE1) $$($(2)_INSTALL_TARGET_OPTS) pure_install; \\\n\tfi\nendef\nendif\n\n# Call the generic package infrastructure to generate the necessary\n# make targets\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\n\n# Upgrade helper\nifneq ($$($(3)_DISTNAME),)\n$(1)-upgrade:\n\tutils/scancpan -force -$(4) $$($(3)_DISTNAME)\n\n.PHONY: $(1)-upgrade\nendif\n\nendef\n\n################################################################################\n# perl-package -- the target generator macro for Perl packages\n################################################################################\n\nperl-package = $(call inner-perl-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\nhost-perl-package = $(call inner-perl-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)\n"
  },
  {
    "path": "package/pkg-python.mk",
    "content": "################################################################################\n# Python package infrastructure\n#\n# This file implements an infrastructure that eases development of\n# package .mk files for Python packages. It should be used for all\n# packages that use Python setup.py/setuptools as their build system.\n#\n# See the Buildroot documentation for details on the usage of this\n# infrastructure\n#\n# In terms of implementation, this Python infrastructure requires the\n# .mk file to only specify metadata information about the package:\n# name, version, download URL, etc.\n#\n# We still allow the package .mk file to override what the different\n# steps are doing, if needed. For example, if <PKG>_BUILD_CMDS is\n# already defined, it is used as the list of commands to perform to\n# build the package, instead of the default Python behaviour. The\n# package can also define some post operation hooks.\n#\n################################################################################\n\n# basename does not evaluate if a file exists, so we must check to ensure\n# the _sysconfigdata__linux_*.py file exists. The \"|| true\" is added to return\n# an empty string if the file does not exist.\nPKG_PYTHON_SYSCONFIGDATA_PATH = $(PYTHON3_PATH)/_sysconfigdata__linux_*.py\nPKG_PYTHON_SYSCONFIGDATA_NAME = `{ [ -e $(PKG_PYTHON_SYSCONFIGDATA_PATH) ] && basename $(PKG_PYTHON_SYSCONFIGDATA_PATH) .py; } || true`\n\n# Target distutils-based packages\nPKG_PYTHON_DISTUTILS_ENV = \\\n\tPATH=$(BR_PATH) \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tLDSHARED=\"$(TARGET_CROSS)gcc -shared\" \\\n\tPYTHONPATH=\"$(if $(BR2_PACKAGE_PYTHON3),$(PYTHON3_PATH),$(PYTHON_PATH))\" \\\n\tPYTHONNOUSERSITE=1 \\\n\t_PYTHON_SYSCONFIGDATA_NAME=\"$(PKG_PYTHON_SYSCONFIGDATA_NAME)\" \\\n\t_python_sysroot=$(STAGING_DIR) \\\n\t_python_prefix=/usr \\\n\t_python_exec_prefix=/usr\n\nPKG_PYTHON_DISTUTILS_BUILD_OPTS = \\\n\t--executable=/usr/bin/python\n\nPKG_PYTHON_DISTUTILS_INSTALL_TARGET_OPTS = \\\n\t--prefix=/usr \\\n\t--root=$(TARGET_DIR)\n\nPKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS = \\\n\t--prefix=/usr \\\n\t--root=$(STAGING_DIR)\n\n# Host distutils-based packages\nHOST_PKG_PYTHON_DISTUTILS_ENV = \\\n\tPATH=$(BR_PATH) \\\n\tPYTHONNOUSERSITE=1 \\\n\t$(HOST_CONFIGURE_OPTS)\n\nHOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS = \\\n\t--prefix=$(HOST_DIR)\n\n# Target setuptools-based packages\nPKG_PYTHON_SETUPTOOLS_ENV = \\\n\t_PYTHON_SYSCONFIGDATA_NAME=\"$(PKG_PYTHON_SYSCONFIGDATA_NAME)\" \\\n\tPATH=$(BR_PATH) \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tPYTHONPATH=\"$(if $(BR2_PACKAGE_PYTHON3),$(PYTHON3_PATH),$(PYTHON_PATH))\" \\\n\tPYTHONNOUSERSITE=1 \\\n\t_python_sysroot=$(STAGING_DIR) \\\n\t_python_prefix=/usr \\\n\t_python_exec_prefix=/usr\n\nPKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_OPTS = \\\n\t--prefix=/usr \\\n\t--executable=/usr/bin/python \\\n\t--single-version-externally-managed \\\n\t--root=$(TARGET_DIR)\n\nPKG_PYTHON_SETUPTOOLS_INSTALL_STAGING_OPTS = \\\n\t--prefix=/usr \\\n\t--executable=/usr/bin/python \\\n\t--single-version-externally-managed \\\n\t--root=$(STAGING_DIR)\n\n# Host setuptools-based packages\nHOST_PKG_PYTHON_SETUPTOOLS_ENV = \\\n\tPATH=$(BR_PATH) \\\n\tPYTHONNOUSERSITE=1 \\\n\t$(HOST_CONFIGURE_OPTS)\n\nHOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS = \\\n\t--prefix=$(HOST_DIR) \\\n\t--root=/ \\\n\t--single-version-externally-managed\n\n################################################################################\n# inner-python-package -- defines how the configuration, compilation\n# and installation of a Python package should be done, implements a\n# few hooks to tune the build process and calls the generic package\n# infrastructure to generate the necessary make targets\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix\n#             for host packages\n#  argument 4 is the type (target or host)\n################################################################################\n\ndefine inner-python-package\n\n$(2)_ENV         ?=\n$(2)_BUILD_OPTS   ?=\n$(2)_INSTALL_OPTS ?=\n\nifndef $(2)_SETUP_TYPE\n ifdef $(3)_SETUP_TYPE\n  $(2)_SETUP_TYPE = $$($(3)_SETUP_TYPE)\n else\n  $$(error \"$(2)_SETUP_TYPE must be set\")\n endif\nendif\n\n# Distutils\nifeq ($$($(2)_SETUP_TYPE),distutils)\nifeq ($(4),target)\n$(2)_BASE_ENV         = $$(PKG_PYTHON_DISTUTILS_ENV)\n$(2)_BASE_BUILD_TGT   = build\n$(2)_BASE_BUILD_OPTS   = $$(PKG_PYTHON_DISTUTILS_BUILD_OPTS)\n$(2)_BASE_INSTALL_TARGET_OPTS  = $$(PKG_PYTHON_DISTUTILS_INSTALL_TARGET_OPTS)\n$(2)_BASE_INSTALL_STAGING_OPTS = $$(PKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS)\nelse\n$(2)_BASE_ENV         = $$(HOST_PKG_PYTHON_DISTUTILS_ENV)\n$(2)_BASE_BUILD_TGT   = build\n$(2)_BASE_BUILD_OPTS   =\n$(2)_BASE_INSTALL_OPTS = $$(HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS)\nendif\n# Setuptools\nelse ifeq ($$($(2)_SETUP_TYPE),setuptools)\nifeq ($(4),target)\n$(2)_BASE_ENV         = $$(PKG_PYTHON_SETUPTOOLS_ENV)\n$(2)_BASE_BUILD_TGT   = build\n$(2)_BASE_BUILD_OPTS   =\n$(2)_BASE_INSTALL_TARGET_OPTS  = $$(PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_OPTS)\n$(2)_BASE_INSTALL_STAGING_OPTS = $$(PKG_PYTHON_SETUPTOOLS_INSTALL_STAGING_OPTS)\nelse\n$(2)_BASE_ENV         = $$(HOST_PKG_PYTHON_SETUPTOOLS_ENV)\n$(2)_BASE_BUILD_TGT   = build\n$(2)_BASE_BUILD_OPTS   =\n$(2)_BASE_INSTALL_OPTS = $$(HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS)\nendif\nelse\n$$(error \"Invalid $(2)_SETUP_TYPE. Valid options are 'distutils' or 'setuptools'\")\nendif\n\n# Target packages need both the python interpreter on the target (for\n# runtime) and the python interpreter on the host (for\n# compilation). However, host packages only need the python\n# interpreter on the host, whose version may be enforced by setting\n# the *_NEEDS_HOST_PYTHON variable.\n#\n# So:\n# - for target packages, we always depend on the default python interpreter\n#   (the one selected by the config);\n# - for host packages:\n#   - if *_NEEDS_HOST_PYTHON is not set, then we depend on use the default\n#     interperter;\n#   - otherwise, we depend on the one requested by *_NEEDS_HOST_PYTHON.\n#\nifeq ($(4),target)\n$(2)_DEPENDENCIES += $$(if $$(BR2_PACKAGE_PYTHON3),host-python3 python3,host-python python)\nelse\nifeq ($$($(2)_NEEDS_HOST_PYTHON),)\n$(2)_DEPENDENCIES += $$(if $$(BR2_PACKAGE_PYTHON3),host-python3,host-python)\nelse\nifeq ($$($(2)_NEEDS_HOST_PYTHON),python2)\n$(2)_DEPENDENCIES += host-python\nelse ifeq ($$($(2)_NEEDS_HOST_PYTHON),python3)\n$(2)_DEPENDENCIES += host-python3\nelse\n$$(error Incorrect value '$$($(2)_NEEDS_HOST_PYTHON)' for $(2)_NEEDS_HOST_PYTHON)\nendif\nendif # ($$($(2)_NEEDS_HOST_PYTHON),)\nendif # ($(4),target)\n\n# Setuptools based packages will need setuptools for the host Python\n# interpreter (both host and target).\n#\n# If we have a host package that says \"I need Python 3\", we install\n# setuptools for python3.\n#\n# If we have a host packge that says \"I need Python 2\", we install\n# setuptools for python2.\n#\n# If we have a target package, or a host package that doesn't have any\n# <pkg>_NEEDS_HOST_PYTHON, and BR2_PACKAGE_PYTHON3 is used, then\n# Python 3.x is the default Python interpreter, so we install\n# setuptools for python3.\n#\n# In all other cases, we install setuptools for python2. Those other\n# cases are: a target package or host package with\n# BR2_PACKAGE_PYTHON=y, or a host-package with neither\n# BR2_PACKAGE_PYTHON3=y or BR2_PACKAGE_PYTHON=y.\nifeq ($$($(2)_SETUP_TYPE),setuptools)\nifeq ($(4):$$($(2)_NEEDS_HOST_PYTHON),host:python3)\n$(2)_DEPENDENCIES += $$(if $$(filter host-python3-setuptools,$(1)),,host-python3-setuptools)\nelse ifeq ($(4):$$($(2)_NEEDS_HOST_PYTHON),host:python2)\n$(2)_DEPENDENCIES += $$(if $$(filter host-python-setuptools,$(1)),,host-python-setuptools)\nelse ifeq ($$(BR2_PACKAGE_PYTHON3),y)\n$(2)_DEPENDENCIES += $$(if $$(filter host-python3-setuptools,$(1)),,host-python3-setuptools)\nelse\n$(2)_DEPENDENCIES += $$(if $$(filter host-python-setuptools,$(1)),,host-python-setuptools)\nendif\nendif # SETUP_TYPE\n\n# Python interpreter to use for building the package.\n#\n# We may want to specify the python interpreter to be used for building a\n# package, especially for host-packages (target packages must be built using\n# the same version of the interpreter as the one installed on the target).\n#\n# So:\n# - for target packages, we always use the default python interpreter (which\n#   is the same version as the one built and installed on the target);\n# - for host packages:\n#   - if *_NEEDS_HOST_PYTHON is not set, then we use use the default\n#     interperter;\n#   - otherwise, we use the one requested by *_NEEDS_HOST_PYTHON.\n#\nifeq ($(4),target)\n$(2)_PYTHON_INTERPRETER = $$(HOST_DIR)/bin/python\nelse\nifeq ($$($(2)_NEEDS_HOST_PYTHON),)\n$(2)_PYTHON_INTERPRETER = $$(HOST_DIR)/bin/python\nelse\n$(2)_PYTHON_INTERPRETER = $$(HOST_DIR)/bin/$$($(2)_NEEDS_HOST_PYTHON)\nendif\nendif\n\n#\n# Build step. Only define it if not already defined by the package .mk\n# file.\n#\nifndef $(2)_BUILD_CMDS\ndefine $(2)_BUILD_CMDS\n\t(cd $$($$(PKG)_BUILDDIR)/; \\\n\t\t$$($$(PKG)_BASE_ENV) $$($$(PKG)_ENV) \\\n\t\t$$($(2)_PYTHON_INTERPRETER) setup.py \\\n\t\t$$($$(PKG)_BASE_BUILD_TGT) \\\n\t\t$$($$(PKG)_BASE_BUILD_OPTS) $$($$(PKG)_BUILD_OPTS))\nendef\nendif\n\n#\n# Host installation step. Only define it if not already defined by the\n# package .mk file.\n#\nifndef $(2)_INSTALL_CMDS\ndefine $(2)_INSTALL_CMDS\n\t(cd $$($$(PKG)_BUILDDIR)/; \\\n\t\t$$($$(PKG)_BASE_ENV) $$($$(PKG)_ENV) \\\n\t\t$$($(2)_PYTHON_INTERPRETER) setup.py install \\\n\t\t$$($$(PKG)_BASE_INSTALL_OPTS) $$($$(PKG)_INSTALL_OPTS))\nendef\nendif\n\n#\n# Target installation step. Only define it if not already defined by\n# the package .mk file.\n#\nifndef $(2)_INSTALL_TARGET_CMDS\ndefine $(2)_INSTALL_TARGET_CMDS\n\t(cd $$($$(PKG)_BUILDDIR)/; \\\n\t\t$$($$(PKG)_BASE_ENV) $$($$(PKG)_ENV) \\\n\t\t$$($(2)_PYTHON_INTERPRETER) setup.py install --no-compile \\\n\t\t$$($$(PKG)_BASE_INSTALL_TARGET_OPTS) \\\n\t\t$$($$(PKG)_INSTALL_TARGET_OPTS))\nendef\nendif\n\n#\n# Staging installation step. Only define it if not already defined by\n# the package .mk file.\n#\nifndef $(2)_INSTALL_STAGING_CMDS\ndefine $(2)_INSTALL_STAGING_CMDS\n\t(cd $$($$(PKG)_BUILDDIR)/; \\\n\t\t$$($$(PKG)_BASE_ENV) $$($$(PKG)_ENV) \\\n\t\t$$($(2)_PYTHON_INTERPRETER) setup.py install \\\n\t\t$$($$(PKG)_BASE_INSTALL_STAGING_OPTS) \\\n\t\t$$($$(PKG)_INSTALL_STAGING_OPTS))\nendef\nendif\n\n# Call the generic package infrastructure to generate the necessary\n# make targets\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\n\nendef\n\n################################################################################\n# python-package -- the target generator macro for Python packages\n################################################################################\n\npython-package = $(call inner-python-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\nhost-python-package = $(call inner-python-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)\n"
  },
  {
    "path": "package/pkg-qmake.mk",
    "content": "################################################################################\n# QMake package infrastructure\n#\n# This file implements an infrastructure that eases development of package\n# .mk files for QMake packages. It should be used for all packages that use\n# Qmake as their build system.\n#\n# See the Buildroot documentation for details on the usage of this\n# infrastructure\n#\n# In terms of implementation, this QMake infrastructure requires the .mk file\n# to only specify metadata information about the package: name, version,\n# download URL, etc.\n#\n# We still allow the package .mk file to override what the different steps\n# are doing, if needed. For example, if <PKG>_BUILD_CMDS is already defined,\n# it is used as the list of commands to perform to build the package,\n# instead of the default QMake behaviour. The package can also define some\n# post operation hooks.\n#\n################################################################################\n\n#\n# Hook to sync Qt headers\n#\ndefine QT_HEADERS_SYNC_HOOK\n\t$(Q)cd $($(PKG)_BUILDDIR) && $(HOST_DIR)/bin/syncqt.pl -version $(QT5_VERSION)\nendef\n\n################################################################################\n# inner-qmake-package -- defines how the configuration, compilation and\n# installation of a qmake package should be done, implements a few hooks\n# to tune the build process for qmake specifities and calls the generic\n# package infrastructure to generate the necessary make targets\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n################################################################################\n\ndefine inner-qmake-package\n\n$(2)_CONF_ENV\t\t\t?=\n$(2)_CONF_OPTS\t\t\t?=\n$(2)_MAKE_ENV\t\t\t?=\n$(2)_MAKE_OPTS\t\t\t?=\n$(2)_INSTALL_STAGING_OPTS\t?= install\n$(2)_INSTALL_TARGET_OPTS\t?= $$($(2)_INSTALL_STAGING_OPTS)\n\nifneq ($(1),qt5base)\n$(2)_DEPENDENCIES \t\t+= qt5base\nendif\n\nifeq ($$($(2)_SYNC_QT_HEADERS),YES)\n$(2)_DEPENDENCIES \t\t+= host-perl\n$(2)_PRE_CONFIGURE_HOOKS        += QT_HEADERS_SYNC_HOOK\nendif\n\n$(2)_POST_PREPARE_HOOKS += QT5_QT_CONF_FIXUP\n\n#\n# Configure step. Only define it if not already defined by the package\n# .mk file.\n#\nifndef $(2)_CONFIGURE_CMDS\ndefine $(2)_CONFIGURE_CMDS\n\tcd $$($(2)_BUILDDIR) && \\\n\t$$(TARGET_MAKE_ENV) $$($(2)_CONF_ENV) $$(QT5_QMAKE) $$($(2)_CONF_OPTS)\nendef\nendif\n\n#\n# Build step. Only define it if not already defined by the package .mk\n# file.\n#\nifndef $(2)_BUILD_CMDS\ndefine $(2)_BUILD_CMDS\n\t$$(TARGET_MAKE_ENV) $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_BUILDDIR) $$($(2)_MAKE_OPTS)\nendef\nendif\n\n#\n# Staging installation step. Only define it if not already defined by\n# the package .mk file.\n#\nifndef $(2)_INSTALL_STAGING_CMDS\ndefine $(2)_INSTALL_STAGING_CMDS\n\t$$(TARGET_MAKE_ENV) $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_BUILDDIR) $$($(2)_INSTALL_STAGING_OPTS)\nendef\nendif\n\n#\n# Target installation step. Only define it if not already defined by\n# the package .mk file.\n#\n# Unfortunately we can't use INSTALL_ROOT to directly install to TARGET_DIR\n# because in a crosscompile setup, the qmake generated install destinations\n# are prefixed with the hardcoded sysroot (=STAGING_DIR) and hostprefix\n# (=HOST_DIR).\n# Instead we set INSTALL_ROOT, which comes before the install path, to a\n# temporary folder inside the build directory and effectively install to\n# $(@D)/tmp-target-install/$(STAGING_DIR) and $(@D)/tmp-target-install/$(HOST_DIR).\n# We subsequently rsync only the files from the temporary staging dir and that\n# way exclude files for the build host from target.\n#\nifndef $(2)_INSTALL_TARGET_CMDS\ndefine $(2)_INSTALL_TARGET_CMDS\n\t$$(TARGET_MAKE_ENV) $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_BUILDDIR) INSTALL_ROOT=$$($(2)_BUILDDIR)tmp-target-install $$($(2)_INSTALL_TARGET_OPTS)\n\trsync -arv $$($(2)_BUILDDIR)tmp-target-install$$(STAGING_DIR)/ $$(TARGET_DIR)/\nendef\nendif\n\n# Call the generic package infrastructure to generate the necessary\n# make targets\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\n\nendef\n\n################################################################################\n# qmake-package -- the target generator macro for QMake packages\n################################################################################\n\nqmake-package = $(call inner-qmake-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\n"
  },
  {
    "path": "package/pkg-rebar.mk",
    "content": "################################################################################\n# rebar package infrastructure for Erlang packages\n#\n# This file implements an infrastructure that eases development of\n# package .mk files for rebar packages.  It should be used for all\n# packages that use rebar as their build system.\n#\n# In terms of implementation, this rebar infrastructure requires the\n# .mk file to only specify metadata information about the package:\n# name, version, download URL, etc.\n#\n# We still allow the package .mk file to override what the different\n# steps are doing, if needed. For example, if <PKG>_BUILD_CMDS is\n# already defined, it is used as the list of commands to perform to\n# build the package, instead of the default rebar behaviour. The\n# package can also define some post operation hooks.\n#\n################################################################################\n\n# Directories to store rebar dependencies in.\n#\n# These directories actually only contain symbolic links to Erlang\n# applications in either $(HOST_DIR) or $(STAGING_DIR).  One needs\n# them to avoid rebar complaining about missing dependencies, as this\n# infrastructure tells rebar to NOT download dependencies during\n# the build stage.\n#\nREBAR_HOST_DEPS_DIR = $(HOST_DIR)/share/rebar/deps\nREBAR_TARGET_DEPS_DIR = $(STAGING_DIR)/usr/share/rebar/deps\n\n# Tell rebar where to find the dependencies\n#\nREBAR_HOST_DEPS_ENV = \\\n\tERL_COMPILER_OPTIONS='{i, \"$(REBAR_HOST_DEPS_DIR)\"}' \\\n\tERL_EI_LIBDIR=$(HOST_DIR)/lib/erlang/lib/erl_interface-$(ERLANG_EI_VSN)/lib\nREBAR_TARGET_DEPS_ENV = \\\n\tERL_COMPILER_OPTIONS='{i, \"$(REBAR_TARGET_DEPS_DIR)\"}' \\\n\tERL_EI_LIBDIR=$(STAGING_DIR)/usr/lib/erlang/lib/erl_interface-$(ERLANG_EI_VSN)/lib\n\n################################################################################\n# Helper functions\n################################################################################\n\n# Install an Erlang application from $(@D).\n#\n# i.e., define a recipe that installs the \"bin ebin priv $(2)\" directories\n# from $(@D) to $(1)/$($(PKG)_ERLANG_LIBDIR).\n#\n#  argument 1 should typically be $(HOST_DIR), $(TARGET_DIR),\n#\t      or $(STAGING_DIR).\n#  argument 2 is typically empty when installing in $(TARGET_DIR) and\n#             \"include\" when installing in $(HOST_DIR) or\n#             $(STAGING_DIR).\n#\n# Note: calling this function must be done with $$(call ...) because it\n# expands package-related variables.\n#\ndefine install-erlang-directories\n\t$(INSTALL) -d $(1)/$($(PKG)_ERLANG_LIBDIR)\n\tfor dir in bin ebin priv $(2); do                               \\\n\t\tif test -d $(@D)/$$dir; then                            \\\n\t\t\tcp -r $(@D)/$$dir $(1)/$($(PKG)_ERLANG_LIBDIR); \\\n\t\tfi;                                                     \\\n\tdone\nendef\n\n# Setup a symbolic link in rebar's deps_dir to the actual location\n# where an Erlang application is installed.\n#\n# i.e., define a recipe that creates a symbolic link\n# from $($(PKG)_REBAR_DEPS_DIR)/$($(PKG)_ERLANG_APP)\n# to $(1)$($(PKG)_ERLANG_LIBDIR).\n#\n# For target packages for example, one uses this to setup symbolic\n# links from $(STAGING_DIR)/usr/share/rebar/deps/<erlang-app> to\n# $(STAGING_DIR)/usr/lib/erlang/lib/<erlang-app>-<version>. This\n# infrastructure points rebar at the former in order to tell rebar to\n# NOT download dependencies during the build stage, and instead use\n# the already available dependencies.\n#\n# Therefore,\n#  argument 1 is $(HOST_DIR) (for host packages) or\n#\t      $(STAGING_DIR) (for target packages).\n#\n#  argument 2 is HOST (for host packages) or\n#\t      TARGET (for target packages).\n#\n# Note: calling this function must be done with $$(call ...) because it\n# expands package-related variables.\n#\ndefine install-rebar-deps\n\t$(INSTALL) -d $(REBAR_$(2)_DEPS_DIR)\n\tln -f -s $(1)/$($(PKG)_ERLANG_LIBDIR) \\\n\t\t$(REBAR_$(2)_DEPS_DIR)/$($(PKG)_ERLANG_APP)\nendef\n\n# Remove the \"deps\" statement from a rebar.config file\ndefine remove-rebar-config-dependencies\n\t$(SED) '/^{deps.*}\\.$$/d' -e '/^{deps/,/}\\.$$/d' \\\n\t\t$($(PKG)_DIR)/rebar.config\nendef\n\n\n################################################################################\n# inner-rebar-package -- defines how the configuration, compilation\n# and installation of a rebar package should be done, implements a few\n# hooks to tune the build process according to rebar specifities, and\n# calls the generic package infrastructure to generate the necessary\n# make targets.\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix\n#             for host packages\n#  argument 4 is the type (target or host)\n#\n################################################################################\n\ndefine inner-rebar-package\n\n# Extract just the raw package name, lowercase without the leading\n# erlang- or host- prefix, as this is used by rebar to find the\n# dependencies a package specifies.\n#\n$(2)_ERLANG_APP = $(subst -,_,$(patsubst erlang-%,%,$(patsubst host-%,%,$(1))))\n\n# Path where to store the package's libs, relative to either $(HOST_DIR)\n# for host packages, or $(STAGING_DIR)/usr for target packages.\n#\n$(2)_ERLANG_LIBDIR = \\\n\tlib/erlang/lib/$$($$(PKG)_ERLANG_APP)-$$($$(PKG)_VERSION)\n\n# If a host package, inherit <pkg>_USE_BUNDLED_REBAR from the target\n# package, if not explicitly defined. Otherwise, default to NO.\nifndef $(2)_USE_BUNDLED_REBAR\n ifdef $(3)_USE_BUNDLED_REBAR\n  $(2)_USE_BUNDLED_REBAR = $$($(3)_USE_BUNDLED_REBAR)\n else\n  $(2)_USE_BUNDLED_REBAR ?= NO\n endif\nendif\n\n# If a host package, inherit <pkg>_USE_AUTOCONF from the target\n# package, if not explicitly defined. Otherwise, default to NO.\nifndef $(2)_USE_AUTOCONF\n ifdef $(3)_USE_AUTOCONF\n  $(2)_USE_AUTOCONF = $$($(3)_USE_AUTOCONF)\n else\n  $(2)_USE_AUTOCONF ?= NO\n endif\nendif\n\n# Define the build and install commands\n#\nifeq ($(4),target)\n\n# Target packages need the erlang interpreter on the target\n$(2)_DEPENDENCIES += erlang\n\n# Used only if the package uses autotools underneath; otherwise, ignored\n$(2)_CONF_ENV += $$(REBAR_TARGET_DEPS_ENV)\n\nifndef $(2)_BUILD_CMDS\ndefine $(2)_BUILD_CMDS\n\t(cd $$(@D); \\\n\t\tCC=\"$$(TARGET_CC)\" \\\n\t\tCXX=\"$$(TARGET_CXX)\" \\\n\t\tCFLAGS=\"$$(TARGET_CFLAGS)\" \\\n\t\tCXXFLAGS=\"$$(TARGET_CXXFLAGS)\" \\\n\t\tLDFLAGS=\"$$(TARGET_LDFLAGS)\" \\\n\t\t$$(REBAR_TARGET_DEPS_ENV) \\\n\t\t$$(TARGET_MAKE_ENV) \\\n\t\t$$($$(PKG)_REBAR_ENV) $$($$(PKG)_REBAR) deps_dir=$$(REBAR_TARGET_DEPS_DIR) compile \\\n\t)\nendef\nendif\n\n# We need to double-$ the 'call' because it wants to expand\n# package-related variables\nifndef $(2)_INSTALL_STAGING_CMDS\ndefine $(2)_INSTALL_STAGING_CMDS\n\t$$(call install-erlang-directories,$$(STAGING_DIR)/usr,include)\n\t$$(call install-rebar-deps,$$(STAGING_DIR)/usr,TARGET)\nendef\nendif\n\n# We need to double-$ the 'call' because it wants to expand\n# package-related variables\nifndef $(2)_INSTALL_TARGET_CMDS\ndefine $(2)_INSTALL_TARGET_CMDS\n\t$$(call install-erlang-directories,$$(TARGET_DIR)/usr)\nendef\nendif\n\nelse # !target\n\n# Host packages need the erlang interpreter on the host\n$(2)_DEPENDENCIES += host-erlang\n\n# Used only if the package uses autotools underneath; otherwise, ignored\n$(2)_CONF_ENV += $$(REBAR_HOST_DEPS_ENV)\n\nifndef $(2)_BUILD_CMDS\ndefine $(2)_BUILD_CMDS\n\t(cd $$(@D); \\\n\t\tCC=\"$$(HOSTCC)\" \\\n\t\tCFLAGS=\"$$(HOST_CFLAGS)\" \\\n\t\tLDFLAGS=\"$$(HOST_LDFLAGS)\" \\\n\t\t$$(REBAR_HOST_DEPS_ENV) \\\n\t\t$$(HOST_MAKE_ENV) \\\n\t\t$$($$(PKG)_REBAR_ENV) $$($$(PKG)_REBAR) deps_dir=$$(REBAR_HOST_DEPS_DIR) compile \\\n\t)\nendef\nendif\n\n# We need to double-$ the 'call' because it wants to expand\n# package-related variables\nifndef $(2)_INSTALL_CMDS\ndefine $(2)_INSTALL_CMDS\n\t$$(call install-erlang-directories,$$(HOST_DIR),include)\n\t$$(call install-rebar-deps,$$(HOST_DIR),HOST)\nendef\nendif\n\nendif # !target\n\n# Whether to use the generic rebar or the package's bundled rebar\n#\nifeq ($$($(2)_USE_BUNDLED_REBAR),YES)\n$(2)_REBAR = ./rebar\nelse\n$(2)_REBAR = rebar\n$(2)_DEPENDENCIES += host-erlang-rebar\nendif\n\n$(2)_KEEP_DEPENDENCIES ?= NO\n\n# Remove dependencies listed in rebar.config unless the package says\n# otherwise\nifeq ($$($(2)_KEEP_DEPENDENCIES),NO)\n$(2)_POST_PATCH_HOOKS += remove-rebar-config-dependencies\nendif\n\n# The package sub-infra to use\n#\nifeq ($$($(2)_USE_AUTOCONF),YES)\n$(call inner-autotools-package,$(1),$(2),$(3),$(4))\nelse\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\nendif\n\nendef # inner-rebar-package\n\nrebar-package = $(call inner-rebar-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\nhost-rebar-package = $(call inner-rebar-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)\n"
  },
  {
    "path": "package/pkg-utils.mk",
    "content": "################################################################################\n#\n# This file contains various utility functions used by the package\n# infrastructure, or by the packages themselves.\n#\n################################################################################\n\n#\n# Manipulation of .config files based on the Kconfig\n# infrastructure. Used by the BusyBox package, the Linux kernel\n# package, and more.\n#\n\n# KCONFIG_DOT_CONFIG ([file])\n# Returns the path to the .config file that should be used, which will\n# be $(1) if provided, or the current package .config file otherwise.\nKCONFIG_DOT_CONFIG = $(strip \\\n\t$(if $(strip $(1)), $(1), \\\n\t\t$($(PKG)_BUILDDIR)/$($(PKG)_KCONFIG_DOTCONFIG) \\\n\t) \\\n)\n\n# KCONFIG_MUNGE_DOT_CONFIG (option, newline [, file])\ndefine KCONFIG_MUNGE_DOT_CONFIG\n\t$(SED) \"/\\\\<$(strip $(1))\\\\>/d\" $(call KCONFIG_DOT_CONFIG,$(3))\n\techo '$(strip $(2))' >> $(call KCONFIG_DOT_CONFIG,$(3))\nendef\n\n# KCONFIG_ENABLE_OPT (option [, file])\nKCONFIG_ENABLE_OPT  = $(call KCONFIG_MUNGE_DOT_CONFIG, $(1), $(1)=y, $(2))\n# KCONFIG_SET_OPT (option, value [, file])\nKCONFIG_SET_OPT     = $(call KCONFIG_MUNGE_DOT_CONFIG, $(1), $(1)=$(2), $(3))\n# KCONFIG_DISABLE_OPT  (option [, file])\nKCONFIG_DISABLE_OPT = $(call KCONFIG_MUNGE_DOT_CONFIG, $(1), $(SHARP_SIGN) $(1) is not set, $(2))\n\n# Helper functions to determine the name of a package and its\n# directory from its makefile directory, using the $(MAKEFILE_LIST)\n# variable provided by make. This is used by the *-package macros to\n# automagically find where the package is located.\npkgdir = $(dir $(lastword $(MAKEFILE_LIST)))\npkgname = $(lastword $(subst /, ,$(pkgdir)))\n\n# Helper to build the extension for a package archive, based on various\n# conditions.\n# $(1): upper-case package name\npkg_source_ext = $(BR_FMT_VERSION_$($(1)_SITE_METHOD)).tar.gz\n\n# Define extractors for different archive suffixes\nINFLATE.bz2  = $(BZCAT)\nINFLATE.gz   = $(ZCAT)\nINFLATE.lz   = $(LZCAT)\nINFLATE.lzma = $(XZCAT)\nINFLATE.tbz  = $(BZCAT)\nINFLATE.tbz2 = $(BZCAT)\nINFLATE.tgz  = $(ZCAT)\nINFLATE.xz   = $(XZCAT)\nINFLATE.tar  = cat\n# suitable-extractor(filename): returns extractor based on suffix\nsuitable-extractor = $(INFLATE$(suffix $(1)))\n\nEXTRACTOR_PKG_DEPENDENCY.lzma = $(BR2_XZCAT_HOST_DEPENDENCY)\nEXTRACTOR_PKG_DEPENDENCY.xz   = $(BR2_XZCAT_HOST_DEPENDENCY)\nEXTRACTOR_PKG_DEPENDENCY.lz   = $(BR2_LZIP_HOST_DEPENDENCY)\n\n# extractor-pkg-dependency(filename): returns a Buildroot package\n# dependency needed to extract file based on suffix\nextractor-pkg-dependency = $(EXTRACTOR_PKG_DEPENDENCY$(suffix $(1)))\n\n# extractor-system-dependency(filename): returns the name of the tool\n# needed to extract 'filename', and is meant to be used with\n# DL_TOOLS_DEPENDENCIES, in order to check that the necesary tool is\n# provided by the system Buildroot runs on.\n#\n# $(firstword) is used here because the extractor can have arguments,\n# like ZCAT=\"gzip -d -c\", and to check for the dependency we only want\n# 'gzip'.\nextractor-system-dependency = $(if $(EXTRACTOR_PKG_DEPENDENCY$(suffix $(1))),,\\\n\t$(firstword $(INFLATE$(suffix $(1)))))\n\n# check-deprecated-variable -- throw an error on deprecated variables\n# example:\n#   $(eval $(call check-deprecated-variable,FOO_MAKE_OPT,FOO_MAKE_OPTS))\ndefine check-deprecated-variable # (deprecated var, new var)\nifneq ($$(origin $(1)),undefined)\n$$(error Package error: use $(2) instead of $(1). Please fix your .mk file)\nendif\nendef\n\n# $(1): YES or NO\ndefine yesno-to-bool\n\t$(subst NO,false,$(subst YES,true,$(1)))\nendef\n\n# json-info -- return package or filesystem metadata formatted as an entry\n#              of a JSON dictionnary\n# $(1): upper-case package or filesystem name\ndefine json-info\n\t\"$($(1)_NAME)\": {\n\t\t\"type\": \"$($(1)_TYPE)\",\n\t\t$(if $(filter rootfs,$($(1)_TYPE)), \\\n\t\t\t$(call _json-info-fs,$(1)), \\\n\t\t\t$(call _json-info-pkg,$(1)), \\\n\t\t)\n\t}\nendef\n\n# _json-info-pkg, _json-info-pkg-details, _json-info-fs: private helpers\n# for json-info, above\ndefine _json-info-pkg\n\t\"name\": \"$($(1)_RAWNAME)\",\n\t$(if $($(1)_IS_VIRTUAL), \\\n\t\t\"virtual\": true$(comma),\n\t\t\"virtual\": false$(comma)\n\t\t$(call _json-info-pkg-details,$(1)) \\\n\t)\n\t\"build_dir\": \"$(patsubst $(CONFIG_DIR)/%,%,$($(1)_BUILDDIR))\",\n\t$(if $(filter target,$($(1)_TYPE)), \\\n\t\t\"install_target\": $(call yesno-to-bool,$($(1)_INSTALL_TARGET))$(comma) \\\n\t\t\"install_staging\": $(call yesno-to-bool,$($(1)_INSTALL_STAGING))$(comma) \\\n\t\t\"install_images\": $(call yesno-to-bool,$($(1)_INSTALL_IMAGES))$(comma) \\\n\t)\n\t\"dependencies\": [\n\t\t$(call make-comma-list,$(sort $($(1)_FINAL_ALL_DEPENDENCIES)))\n\t],\n\t\"reverse_dependencies\": [\n\t\t$(call make-comma-list,$(sort $($(1)_RDEPENDENCIES)))\n\t]\n\t$(if $($(1)_CPE_ID_VALID), \\\n\t\t$(comma) \"cpe-id\": \"$($(1)_CPE_ID)\" \\\n\t)\n\t$(if $($(1)_IGNORE_CVES),\n\t\t$(comma) \"ignore_cves\": [\n\t\t\t$(call make-comma-list,$(sort $($(1)_IGNORE_CVES)))\n\t\t]\n\t)\nendef\n\ndefine _json-info-pkg-details\n\t\"version\": \"$($(1)_DL_VERSION)\",\n\t\"licenses\": \"$($(1)_LICENSE)\",\n\t\"dl_dir\": \"$($(1)_DL_SUBDIR)\",\n\t\"downloads\": [\n\t$(foreach dl,$(sort $($(1)_ALL_DOWNLOADS)),\n\t\t{\n\t\t\t\"source\": \"$(notdir $(dl))\",\n\t\t\t\"uris\": [\n\t\t\t\t$(call make-comma-list,\n\t\t\t\t\t$(subst \\|,|,\n\t\t\t\t\t\t$(call DOWNLOAD_URIS,$(dl),$(1))\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t]\n\t\t},\n\t)\n\t],\nendef\n\ndefine _json-info-fs\n\t\"image_name\": $(if $($(1)_FINAL_IMAGE_NAME), \\\n\t\t\t\t\"$($(1)_FINAL_IMAGE_NAME)\", \\\n\t\t\t\tnull \\\n\t\t\t),\n\t\"dependencies\": [\n\t\t$(call make-comma-list,$(sort $($(1)_DEPENDENCIES)))\n\t]\nendef\n\n# clean-json -- cleanup pseudo-json into clean json:\n#  - remove commas before closing ] and }\n#  - minify with $(strip)\nclean-json = $(strip \\\n\t$(subst $(comma)},}, $(subst $(comma)$(space)},$(space)}, \\\n\t$(subst $(comma)],], $(subst $(comma)$(space)],$(space)], \\\n\t$(subst \\,\\\\, \\\n\t\t$(strip $(1)) \\\n\t))))) \\\n)\n\nifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)\n# rsync the contents of per-package directories\n# $1: space-separated list of packages to rsync from\n# $2: 'host' or 'target'\n# $3: destination directory\ndefine per-package-rsync\n\tmkdir -p $(3)\n\t$(foreach pkg,$(1),\\\n\t\trsync -a --link-dest=$(PER_PACKAGE_DIR)/$(pkg)/$(2)/ \\\n\t\t$(PER_PACKAGE_DIR)/$(pkg)/$(2)/ \\\n\t\t$(3)$(sep))\nendef\n\n# prepares the per-package HOST_DIR and TARGET_DIR of the current\n# package, by rsync the host and target directories of the\n# dependencies of this package. The list of dependencies is passed as\n# argument, so that this function can be used to prepare with\n# different set of dependencies (download, extract, configure, etc.)\n#\n# $1: space-separated list of packages to rsync from\ndefine prepare-per-package-directory\n\t$(call per-package-rsync,$(1),host,$(HOST_DIR))\n\t$(call per-package-rsync,$(1),target,$(TARGET_DIR))\nendef\nendif\n\n#\n# legal-info helper functions\n#\nLEGAL_INFO_SEPARATOR = \"::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\"\n\ndefine legal-warning # text\n\techo \"WARNING: $(1)\" >>$(LEGAL_WARNINGS)\nendef\n\ndefine legal-warning-pkg # pkg, text\n\techo \"WARNING: $(1): $(2)\" >>$(LEGAL_WARNINGS)\nendef\n\ndefine legal-warning-nosource # pkg, {local|override}\n\t$(call legal-warning-pkg,$(1),sources not saved ($(2) packages not handled))\nendef\n\ndefine legal-manifest # {HOST|TARGET}, pkg, version, license, license-files, source, url, dependencies\n\techo '\"$(2)\",\"$(3)\",\"$(4)\",\"$(5)\",\"$(6)\",\"$(7)\",\"$(8)\"' >>$(LEGAL_MANIFEST_CSV_$(1))\nendef\n\ndefine legal-license-file # pkgname, pkgname-pkgver, pkg-hashfile, filename, file-fullpath, {HOST|TARGET}\n\tmkdir -p $(LICENSE_FILES_DIR_$(6))/$(2)/$(dir $(4)) && \\\n\t{ \\\n\t\tsupport/download/check-hash $(3) $(5) $(4); \\\n\t\tcase $${?} in (0|3) ;; (*) exit 1;; esac; \\\n\t} && \\\n\tcp $(5) $(LICENSE_FILES_DIR_$(6))/$(2)/$(4)\nendef\n\nnon-virtual-deps = $(foreach p,$(1),$(if $($(call UPPERCASE,$(p))_IS_VIRTUAL),,$(p)))\n\n# Returns the list of recursive dependencies and their licensing terms\n# for the package specified in parameter (in lowercase). If that\n# package is a target package, remove host packages from the list.\nlegal-deps = \\\n    $(foreach p,\\\n        $(filter-out $(if $(1:host-%=),host-%),\\\n            $(call non-virtual-deps,\\\n                $($(call UPPERCASE,$(1))_FINAL_RECURSIVE_DEPENDENCIES))),$(p) [$($(call UPPERCASE,$(p))_LICENSE)])\n"
  },
  {
    "path": "package/pkg-virtual.mk",
    "content": "################################################################################\n# Virtual package infrastructure\n#\n# This file implements an infrastructure that eases development of\n# package .mk files for virtual packages. It should be used for all\n# virtual packages.\n#\n# See the Buildroot documentation for details on the usage of this\n# infrastructure\n#\n# In terms of implementation, this virtual infrastructure requires\n# the .mk file to only call the 'virtual-package' macro.\n#\n################################################################################\n\n\n################################################################################\n# inner-virtual-package -- defines the dependency rules of the virtual\n# package against its provider.\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix\n#             for host packages\n#  argument 4 is the type (target or host)\n################################################################################\n\n# Note: putting this comment here rather than in the define block, otherwise\n# make would try to expand the $(error ...) in the comment, which is not\n# really what we want.\n# We need to use second-expansion for the $(error ...) call, below,\n# so it is not evaluated now, but as part of the generated make code.\n\ndefine inner-virtual-package\n\n# Ensure the virtual package has an implementation defined.\nifeq ($$(BR2_PACKAGE_HAS_$(2)),y)\nifeq ($$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))),)\n$$(error No implementation selected for virtual package $(1). Configuration error)\nendif\nendif\n\n# explicitly set these so we do not get confused by environment\n# variables with the same names.\n$(2)_VERSION =\n$(2)_SOURCE =\n\n$(2)_IS_VIRTUAL = YES\n\n# Add dependency against the provider\n# For a host package, there is no corresponding BR2_PACKAGE_PROVIDES_HOST_FOO,\n# so we need to compute it from the target variant.\nifeq ($(4),target)\n$(2)_DEPENDENCIES += $$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2)))\nelse\nifeq ($$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))),)\n# Inherit from target package BR2_PACKAGE_PROVIDES_FOO\n$(2)_DEPENDENCIES += host-$$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(3)))\nelse\n# BR2_PACKAGE_PROVIDES_HOST_<pkg> is explicitly defined\n$(2)_DEPENDENCIES += $$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2)))\nendif\nendif\n\n# Call the generic package infrastructure to generate the necessary\n# make targets\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\n\nendef\n\n################################################################################\n# virtual-package -- the target generator macro for virtual packages\n################################################################################\n\nvirtual-package = $(call inner-virtual-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\nhost-virtual-package = $(call inner-virtual-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host)\n"
  },
  {
    "path": "package/pkg-waf.mk",
    "content": "################################################################################\n# WAF package infrastructure\n#\n# This file implements an infrastructure that eases development of package\n# .mk files for WAF packages. It should be used for all packages that use\n# WAF as their build system.\n#\n# See the Buildroot documentation for details on the usage of this\n# infrastructure\n#\n# In terms of implementation, this WAF infrastructure requires the .mk file\n# to only specify metadata information about the package: name, version,\n# download URL, etc.\n#\n# We still allow the package .mk file to override what the different steps\n# are doing, if needed. For example, if <PKG>_BUILD_CMDS is already defined,\n# it is used as the list of commands to perform to build the package,\n# instead of the default WAF behaviour. The package can also define some\n# post operation hooks.\n#\n################################################################################\n\n################################################################################\n# inner-waf-package -- defines how the configuration, compilation and\n# installation of a waf package should be done, implements a few hooks\n# to tune the build process for waf specifities and calls the generic\n# package infrastructure to generate the necessary make targets\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix\n#             for host packages\n#  argument 4 is the type (target or host)\n################################################################################\n\ndefine inner-waf-package\n\n# We need host-python3 to run waf\n$(2)_DEPENDENCIES += host-python3\n\n$(2)_NEEDS_EXTERNAL_WAF ?= NO\n\n# If the package does not have its own waf, use our own.\nifeq ($$($(2)_NEEDS_EXTERNAL_WAF),YES)\n$(2)_DEPENDENCIES += host-waf\n$(2)_WAF = $$(HOST_DIR)/bin/waf\nelse\n$(2)_WAF ?= ./waf\nendif\n\n$(2)_BUILD_OPTS\t\t\t\t?=\n$(2)_INSTALL_STAGING_OPTS\t\t?=\n$(2)_INSTALL_TARGET_OPTS\t\t?=\n$(2)_WAF_OPTS\t\t\t\t?=\n\n#\n# Configure step. Only define it if not already defined by the package\n# .mk file.\n#\nifndef $(2)_CONFIGURE_CMDS\ndefine $(2)_CONFIGURE_CMDS\n\tcd $$($$(PKG)_SRCDIR) && \\\n\t$$(TARGET_CONFIGURE_OPTS) \\\n\t$$($(2)_CONF_ENV) \\\n\t$$(HOST_DIR)/bin/python3 $$($(2)_WAF) configure \\\n\t\t--prefix=/usr \\\n\t\t--libdir=/usr/lib \\\n\t\t$$($(2)_CONF_OPTS) \\\n\t\t$$($(2)_WAF_OPTS)\nendef\nendif\n\n#\n# Build step. Only define it if not already defined by the package .mk\n# file.\n#\nifndef $(2)_BUILD_CMDS\ndefine $(2)_BUILD_CMDS\n\tcd $$($$(PKG)_SRCDIR) && \\\n\t$$(TARGET_MAKE_ENV) $$(HOST_DIR)/bin/python3 $$($(2)_WAF) \\\n\t\tbuild -j $$(PARALLEL_JOBS) $$($(2)_BUILD_OPTS) \\\n\t\t$$($(2)_WAF_OPTS)\nendef\nendif\n\n#\n# Staging installation step. Only define it if not already defined by\n# the package .mk file.\n#\nifndef $(2)_INSTALL_STAGING_CMDS\ndefine $(2)_INSTALL_STAGING_CMDS\n\tcd $$($$(PKG)_SRCDIR) && \\\n\t$$(TARGET_MAKE_ENV) $$(HOST_DIR)/bin/python3 $$($(2)_WAF) \\\n\t\tinstall --destdir=$$(STAGING_DIR) \\\n\t\t$$($(2)_INSTALL_STAGING_OPTS) \\\n\t\t$$($(2)_WAF_OPTS)\nendef\nendif\n\n#\n# Target installation step. Only define it if not already defined by\n# the package .mk file.\n#\nifndef $(2)_INSTALL_TARGET_CMDS\ndefine $(2)_INSTALL_TARGET_CMDS\n\tcd $$($$(PKG)_SRCDIR) && \\\n\t$$(TARGET_MAKE_ENV) $$(HOST_DIR)/bin/python3 $$($(2)_WAF) \\\n\t\tinstall --destdir=$$(TARGET_DIR) \\\n\t\t$$($(2)_INSTALL_TARGET_OPTS) \\\n\t\t$$($(2)_WAF_OPTS)\nendef\nendif\n\n# Call the generic package infrastructure to generate the necessary\n# make targets\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\n\nendef\n\n################################################################################\n# waf-package -- the target generator macro for WAF packages\n################################################################################\n\nwaf-package = $(call inner-waf-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\n"
  },
  {
    "path": "package/pkgconf/0001-Only-prefix-with-the-sysroot-a-subset-of-variables.patch",
    "content": "From 267a57022699453e8d8f517519df25ac6bf6ac4e Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Sun, 16 Dec 2018 11:52:18 +0100\nSubject: [PATCH] Only prefix with the sysroot a subset of variables\n\nThe standard logic of pkg-config is to prefix all absolute paths by\nthe sysroot defined in PKG_CONFIG_SYSROOT_DIR. However, while some\npaths (like includedir, libdir, and paths used in -L and -I options)\nindeed need to be prefixed by the sysroot, it is not necessarily the\ncase for paths that are used on the target. If they get prefixed by\nthe sysroot, the runtime path on the target is incorrect.\n\nUnfortunately, pkg-config doesn't have a sense of which path needs to\nbe prefixed by the sysroot, and which path should not be prefixed by\nthe sysroot.\n\nSo, let's simply have a whitelist of paths that should be prefixed:\ng_ir_scanner, g_ir_compiler, g_ir_generate, includedir, libdir, mapdir,\npkgdatadir and sdkdir. This list of variables was collected over years of\nBuildroot development. All other paths are not prefixed by the sysroot.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n[Updated to include gobject-introspection paths]\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n libpkgconf/tuple.c | 60 ++++++++++++++++++++++++++++++++--------------\n 1 file changed, 42 insertions(+), 18 deletions(-)\n\ndiff --git a/libpkgconf/tuple.c b/libpkgconf/tuple.c\nindex 8523709..7cd2fff 100644\n--- a/libpkgconf/tuple.c\n+++ b/libpkgconf/tuple.c\n@@ -161,6 +161,21 @@ dequote(const char *value)\n \treturn buf;\n }\n \n+static char *\n+pkgconf_tuple_parse_sysroot(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value, bool add_sysroot);\n+\n+const char *sysrooted_keys[] = {\n+\t\"g_ir_scanner\",\n+\t\"g_ir_compiler\",\n+\t\"g_ir_generate\",\n+\t\"includedir\",\n+\t\"libdir\",\n+\t\"mapdir\",\n+\t\"pkgdatadir\",\n+\t\"sdkdir\",\n+\tNULL,\n+};\n+\n /*\n  * !doc\n  *\n@@ -181,6 +193,8 @@ pkgconf_tuple_add(const pkgconf_client_t *client, pkgconf_list_t *list, const ch\n {\n \tchar *dequote_value;\n \tpkgconf_tuple_t *tuple = calloc(sizeof(pkgconf_tuple_t), 1);\n+\tbool add_sysroot = false;\n+\tint i;\n \n \tpkgconf_tuple_find_delete(list, key);\n \n@@ -188,9 +202,13 @@ pkgconf_tuple_add(const pkgconf_client_t *client, pkgconf_list_t *list, const ch\n \n \tPKGCONF_TRACE(client, \"adding tuple to @%p: %s => %s (parsed? %d)\", list, key, dequote_value, parse);\n \n+\tfor (i = 0; sysrooted_keys[i] != NULL; i++)\n+\t\tif (!strcmp(key, sysrooted_keys[i]))\n+\t\t\tadd_sysroot = true;\n+\n \ttuple->key = strdup(key);\n \tif (parse)\n-\t\ttuple->value = pkgconf_tuple_parse(client, list, dequote_value);\n+\t\ttuple->value = pkgconf_tuple_parse_sysroot(client, list, dequote_value, add_sysroot);\n \telse\n \t\ttuple->value = strdup(dequote_value);\n \n@@ -234,27 +252,14 @@ pkgconf_tuple_find(const pkgconf_client_t *client, pkgconf_list_t *list, const c\n \treturn NULL;\n }\n \n-/*\n- * !doc\n- *\n- * .. c:function:: char *pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value)\n- *\n- *    Parse an expression for variable substitution.\n- *\n- *    :param pkgconf_client_t* client: The pkgconf client object to access.\n- *    :param pkgconf_list_t* list: The variable list to search for variables (along side the global variable list).\n- *    :param char* value: The ``key=value`` string to parse.\n- *    :return: the variable data with any variables substituted\n- *    :rtype: char *\n- */\n-char *\n-pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value)\n+static char *\n+pkgconf_tuple_parse_sysroot(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value, bool add_sysroot)\n {\n \tchar buf[PKGCONF_BUFSIZE];\n \tconst char *ptr;\n \tchar *bptr = buf;\n \n-\tif (*value == '/' && client->sysroot_dir != NULL && strncmp(value, client->sysroot_dir, strlen(client->sysroot_dir)))\n+\tif (add_sysroot && *value == '/' && client->sysroot_dir != NULL && strncmp(value, client->sysroot_dir, strlen(client->sysroot_dir)))\n \t\tbptr += pkgconf_strlcpy(buf, client->sysroot_dir, sizeof buf);\n \n \tfor (ptr = value; *ptr != '\\0' && bptr - buf < PKGCONF_BUFSIZE; ptr++)\n@@ -294,7 +299,7 @@ pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const\n \n \t\t\t\tif (kv != NULL)\n \t\t\t\t{\n-\t\t\t\t\tparsekv = pkgconf_tuple_parse(client, vars, kv);\n+\t\t\t\t\tparsekv = pkgconf_tuple_parse_sysroot(client, vars, kv, add_sysroot);\n \n \t\t\t\t\tstrncpy(bptr, parsekv, PKGCONF_BUFSIZE - (bptr - buf));\n \t\t\t\t\tbptr += strlen(parsekv);\n@@ -339,6 +344,25 @@ pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const\n \treturn strdup(buf);\n }\n \n+/*\n+ * !doc\n+ *\n+ * .. c:function:: char *pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value)\n+ *\n+ *    Parse an expression for variable substitution.\n+ *\n+ *    :param pkgconf_client_t* client: The pkgconf client object to access.\n+ *    :param pkgconf_list_t* list: The variable list to search for variables (along side the global variable list).\n+ *    :param char* value: The ``key=value`` string to parse.\n+ *    :return: the variable data with any variables substituted\n+ *    :rtype: char *\n+ */\n+char *\n+pkgconf_tuple_parse(const pkgconf_client_t *client, pkgconf_list_t *vars, const char *value)\n+{\n+\treturn pkgconf_tuple_parse_sysroot(client, vars, value, true);\n+}\n+\n /*\n  * !doc\n  *\n-- \n2.19.2\n\n"
  },
  {
    "path": "package/pkgconf/0002-Revert-main-assume-modversion-insted-of-version-if-o.patch",
    "content": "From 4ccef40918a539905a2951bfb81cf8dba4a245c6 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Wed, 2 Jan 2019 18:15:50 +0100\nSubject: [PATCH] Revert \"main: assume --modversion insted of --version if\n other flags or module names are provided\"\n\nThis reverts commit 12a0eb124cea85586e57f33c91a1e4c73459eef6, as it\ncauses pkg-config to assume --modversion is used when something as\nsimple as 'pkg-config --static --version' is used, leading to a\nfailure instead of the expected behavior: the one of \"pkg-config\n--version\".\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n cli/main.c | 14 ++------------\n 1 file changed, 2 insertions(+), 12 deletions(-)\n\ndiff --git a/cli/main.c b/cli/main.c\nindex b52cc85..c5acc10 100644\n--- a/cli/main.c\n+++ b/cli/main.c\n@@ -1002,18 +1002,8 @@ main(int argc, char *argv[])\n \n \tif ((want_flags & PKG_VERSION) == PKG_VERSION)\n \t{\n-\t\tif (argc > 2)\n-\t\t{\n-\t\t\tfprintf(stderr, \"%s: --version specified with other options or module names, assuming --modversion.\\n\", argv[0]);\n-\n-\t\t\twant_flags &= ~PKG_VERSION;\n-\t\t\twant_flags |= PKG_MODVERSION;\n-\t\t}\n-\t\telse\n-\t\t{\n-\t\t\tversion();\n-\t\t\treturn EXIT_SUCCESS;\n-\t\t}\n+\t\tversion();\n+\t\treturn EXIT_SUCCESS;\n \t}\n \n \tif ((want_flags & PKG_HELP) == PKG_HELP)\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/pkgconf/Config.in",
    "content": "config BR2_PACKAGE_PKGCONF\n\tbool \"pkgconf\"\n\thelp\n\t  pkgconf is a program which helps to configure compiler and\n\t  linker flags for development frameworks. It is similar to\n\t  pkg-config, but was written from scratch in the summer of\n\t  2011 to replace pkg-config, which now needs itself to build\n\t  itself\n\n\t  http://pkgconf.org/\n"
  },
  {
    "path": "package/pkgconf/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PKGCONF\n\tbool \"host pkgconf\"\n\thelp\n\t  pkgconf is a program which helps to configure compiler and\n\t  linker flags for development frameworks. It is similar to\n\t  pkg-config, but was written from scratch in the summer of\n\t  2011 to replace pkg-config, which now needs itself to build\n\t  itself\n\n\t  https://github.com/pkgconf/pkgconf\n"
  },
  {
    "path": "package/pkgconf/pkg-config.in",
    "content": "#!/bin/sh\nPKGCONFDIR=$(dirname $0)\nDEFAULT_PKG_CONFIG_LIBDIR=${PKGCONFDIR}/../@STAGING_SUBDIR@/usr/lib/pkgconfig:${PKGCONFDIR}/../@STAGING_SUBDIR@/usr/share/pkgconfig\nDEFAULT_PKG_CONFIG_SYSROOT_DIR=${PKGCONFDIR}/../@STAGING_SUBDIR@\nDEFAULT_PKG_CONFIG_SYSTEM_INCLUDE_PATH=${PKGCONFDIR}/../@STAGING_SUBDIR@/usr/include\nDEFAULT_PKG_CONFIG_SYSTEM_LIBRARY_PATH=${PKGCONFDIR}/../@STAGING_SUBDIR@/usr/lib\n\nPKG_CONFIG_LIBDIR=${PKG_CONFIG_LIBDIR:-${DEFAULT_PKG_CONFIG_LIBDIR}} \\\n\tPKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR:-${DEFAULT_PKG_CONFIG_SYSROOT_DIR}} \\\n\tPKG_CONFIG_SYSTEM_INCLUDE_PATH=${PKG_CONFIG_SYSTEM_INCLUDE_PATH:-${DEFAULT_PKG_CONFIG_SYSTEM_INCLUDE_PATH}} \\\n\tPKG_CONFIG_SYSTEM_LIBRARY_PATH=${PKG_CONFIG_SYSTEM_LIBRARY_PATH:-${DEFAULT_PKG_CONFIG_SYSTEM_LIBRARY_PATH}} \\\n\texec ${PKGCONFDIR}/pkgconf --keep-system-libs @STATIC@ \"$@\"\n"
  },
  {
    "path": "package/pkgconf/pkgconf.hash",
    "content": "# Locally calculated\nsha256  61f0b31b0d5ea0e862b454a80c170f57bad47879c0c42bd8de89200ff62ea210  pkgconf-1.6.3.tar.xz\nsha256  07ee94b50a41ee3fc4e13a9b9c60b26fc28488494c465639f7e5f07a3952ec04  COPYING\n"
  },
  {
    "path": "package/pkgconf/pkgconf.mk",
    "content": "################################################################################\n#\n# pkgconf\n#\n################################################################################\n\nPKGCONF_VERSION = 1.6.3\nPKGCONF_SITE = https://distfiles.dereferenced.org/pkgconf\nPKGCONF_SOURCE = pkgconf-$(PKGCONF_VERSION).tar.xz\nPKGCONF_LICENSE = pkgconf license\nPKGCONF_LICENSE_FILES = COPYING\nPKGCONF_CPE_ID_VENDOR = pkgconf\n\nPKG_CONFIG_HOST_BINARY = $(HOST_DIR)/bin/pkg-config\n\ndefine PKGCONF_LINK_PKGCONFIG\n\tln -sf pkgconf $(TARGET_DIR)/usr/bin/pkg-config\nendef\n\ndefine HOST_PKGCONF_INSTALL_WRAPPER\n\t$(INSTALL) -m 0755 -D package/pkgconf/pkg-config.in \\\n\t\t$(HOST_DIR)/bin/pkg-config\n\t$(SED) 's,@STAGING_SUBDIR@,$(STAGING_SUBDIR),g' \\\n\t\t$(HOST_DIR)/bin/pkg-config\nendef\n\ndefine HOST_PKGCONF_STATIC\n\t$(SED) 's,@STATIC@,--static,' $(HOST_DIR)/bin/pkg-config\nendef\n\ndefine HOST_PKGCONF_SHARED\n\t$(SED) 's,@STATIC@,,' $(HOST_DIR)/bin/pkg-config\nendef\n\nPKGCONF_POST_INSTALL_TARGET_HOOKS += PKGCONF_LINK_PKGCONFIG\nHOST_PKGCONF_POST_INSTALL_HOOKS += HOST_PKGCONF_INSTALL_WRAPPER\n\nifeq ($(BR2_STATIC_LIBS),y)\nHOST_PKGCONF_POST_INSTALL_HOOKS += HOST_PKGCONF_STATIC\nelse\nHOST_PKGCONF_POST_INSTALL_HOOKS += HOST_PKGCONF_SHARED\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/ply/0001-configure.ac-fix-error-with-version-string.patch",
    "content": "From 684bae6043fa2242a5c6551c3f260c9db0cf7dc8 Mon Sep 17 00:00:00 2001\nFrom: Andreas Klinger <ak@it-klinger.de>\nDate: Mon, 4 Jan 2021 08:40:50 +0100\nSubject: [PATCH] configure.ac: fix error with version string\n\nWhen autoreconfiguring there's an error: \"configure.ac:6: error: AC_INIT\nshould be called with package and version arguments\".\n\nPut version string in square brackets to satisfy autoconfigure.\n\nSigned-off-by: Andreas Klinger <ak@it-klinger.de>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 65387d6..7a0054e 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1,5 +1,5 @@\n AC_PREREQ(2.61)\n-AC_INIT(ply, m4_esyscmd_s(git describe --always --dirty),\n+AC_INIT(ply, [2.1.1],\n \t     https://github.com/wkz/ply/issues)\n \n AC_GNU_SOURCE\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/ply/0002-printxf.h-add-stdarg.h-in-include.patch",
    "content": "From 3fb3cb779c535ec28cbba80573bbea42435108c0 Mon Sep 17 00:00:00 2001\nFrom: Andreas Klinger <ak@it-klinger.de>\nDate: Mon, 4 Jan 2021 20:48:41 +0100\nSubject: [PATCH] printxf.h: add stdarg.h in include\n\nInclude of <stdarg.h> is needed for va_list.\n\nSigned-off-by: Andreas Klinger <ak@it-klinger.de>\n---\n include/ply/printxf.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/include/ply/printxf.h b/include/ply/printxf.h\nindex a59f0d2..e985936 100644\n--- a/include/ply/printxf.h\n+++ b/include/ply/printxf.h\n@@ -8,6 +8,7 @@\n #define _PRINTXF_H\n \n #include <stdio.h>\n+#include <stdarg.h>\n \n struct printxf;\n \n-- \n2.20.1\n\n"
  },
  {
    "path": "package/ply/Config.in",
    "content": "config BR2_PACKAGE_PLY_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_arm\n\tdefault y if BR2_powerpc\n\tdefault y if BR2_x86_64\n\ncomment \"ply needs a toolchain w/ dynamic library, headers >= 4.14\"\n\tdepends on BR2_PACKAGE_PLY_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_PLY\n\tbool \"ply\"\n\tdepends on BR2_PACKAGE_PLY_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 # BPF_JLT\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  ply is a light-weight dynamic tracer for Linux. By means of\n\t  using the BPF it can attach probes to the linux kernel\n\t  (e. g. kprobes).\n\n\t  It's a small alternative to LLVM based tracers for embedded\n\t  systems.\n\n\t  When using debugfs needs to be mounted on /sys/kernel/debug.\n\n\t  https://wkz.github.io/ply/\n"
  },
  {
    "path": "package/ply/ply.hash",
    "content": "# Locally calculated\nsha256  cecf0913c65027750ac3272e936110c9f843435938f9ca2edbc34e99ba6c00e2  ply-2.1.1.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/ply/ply.mk",
    "content": "################################################################################\n#\n# ply\n#\n################################################################################\n\nPLY_VERSION = 2.1.1\nPLY_SITE = $(call github,wkz,ply,$(PLY_VERSION))\nPLY_AUTORECONF = YES\nPLY_LICENSE = GPL-2.0\nPLY_LICENSE_FILES = COPYING\nPLY_INSTALL_STAGING = YES\nPLY_DEPENDENCIES = host-flex host-bison\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/pngquant/Config.in",
    "content": "config BR2_PACKAGE_PNGQUANT\n\tbool \"pngquant\"\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Lossy PNG compressor - pngquant command and libimagequant\n\t  library\n\n\t  https://pngquant.org\n"
  },
  {
    "path": "package/pngquant/pngquant.hash",
    "content": "# From https://pngquant.org/releases.html\nsha256  06c6fdded675753fbdbeacc2b63507fb30f42fae813e48a1684b240bb5b63522  pngquant-2.16.0-src.tar.gz\n# Locally computed\nsha256  e4f467f7abf860b4e620f5f60fdd88bc3a63a0fdb98a481fb002b5e511c9b826  COPYRIGHT\n"
  },
  {
    "path": "package/pngquant/pngquant.mk",
    "content": "################################################################################\n#\n# pngquant\n#\n################################################################################\n\nPNGQUANT_VERSION = 2.16.0\nPNGQUANT_SOURCE = pngquant-$(PNGQUANT_VERSION)-src.tar.gz\nPNGQUANT_SITE = https://pngquant.org\nPNGQUANT_LICENSE = GPL-3.0+\nPNGQUANT_LICENSE_FILES = COPYRIGHT\nPNGQUANT_CPE_ID_VENDOR = pngquant\nHOST_PNGQUANT_DEPENDENCIES = host-libpng\nPNGQUANT_DEPENDENCIES = libpng\n\nifeq ($(BR2_PACKAGE_LCMS2),y)\nPNGQUANT_DEPENDENCIES += lcms2\nendif\n\ndefine PNGQUANT_CONFIGURE_CMDS\n\t(cd $(@D) && \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t./configure --prefix=/usr \\\n\t\t$(if $(BR2_PACKAGE_LCMS2),--with-lcms2,--without-lcms2) \\\n\t\t$(if $(BR2_X86_CPU_HAS_SSE),--enable-sse,--disable-sse) \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t)\nendef\n\ndefine PNGQUANT_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine PNGQUANT_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=\"$(TARGET_DIR)\" -C $(@D) install\nendef\n\ndefine HOST_PNGQUANT_CONFIGURE_CMDS\n\t(cd $(@D) && \\\n\t\t$(HOST_CONFIGURE_OPTS) \\\n\t\tCC=$(HOSTCC_NOCCACHE) \\\n\t\t./configure --prefix=$(HOST_DIR) \\\n\t\t--without-lcms2 \\\n\t)\nendef\n\ndefine HOST_PNGQUANT_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_PNGQUANT_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/poco/0001-poco-add-the-staging-path-to-search-path.patch",
    "content": "From a53f3fd64a0f36ec9bc1307d7e66cdc2dee4aeaa Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Tue, 4 Aug 2015 10:14:00 +0200\nSubject: [PATCH] poco: add the staging path to search path\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nAdd the mysql headers and client libraries to the search path of the\npreprocessor and the linker. The $MYSQL_LIBDIR / $MYSQL_INCIDR variables\nmust be set from the make command line.\n\n[Peter: Remove host dirs, add MYSQL_INCDIR]\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n[Jörg: Update to version 1.6.1 from github]\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n[Julien: Rebased on version 1.10.1]\nSigned-off-by: Julien Olivain <juju@cotds.org>\n---\n Data/MySQL/Makefile | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Data/MySQL/Makefile b/Data/MySQL/Makefile\nindex 64a7d3f82..955fee2d4 100644\n--- a/Data/MySQL/Makefile\n+++ b/Data/MySQL/Makefile\n@@ -6,8 +6,8 @@\n \n include $(POCO_BASE)/build/rules/global\n \n-SYSLIBS += -L/usr/local/lib -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\n-INCLUDE += -I/usr/local/include/mysql/ -I/usr/include/mysql/ -I/usr/mysql/include/mysql -I/usr/local/mysql/include\n+SYSLIBS += -L$(MYSQL_LIBDIR) -lmysqlclient\n+INCLUDE += -I$(MYSQL_INCDIR)\n SYSFLAGS += -DTHREADSAFE -DNO_TCL\n \n objects = Binder Extractor SessionImpl Connector \\\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/poco/0002-Add-support-for-m68000-1856.patch",
    "content": "From 221e308ad452035f4c1dc25e194f817a30f38f7b Mon Sep 17 00:00:00 2001\nFrom: Jochen Sprickerhof <github@jochen.sprickerhof.de>\nDate: Wed, 23 Aug 2017 16:50:51 +0200\nSubject: [PATCH] Add support for m68000 (#1856)\n\nOriginally taken from\n\nhttps://github.com/google/double-conversion/commit/da11179623145f53b204105a93b8bbca431141da\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n[Julien: rebased on version 1.10.1]\nSigned-off-by: Julien Olivain <juju@cotds.org>\n---\n Foundation/src/utils.h | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/Foundation/src/utils.h b/Foundation/src/utils.h\nindex c87cee13c..e891c0f10 100644\n--- a/Foundation/src/utils.h\n+++ b/Foundation/src/utils.h\n@@ -66,6 +66,8 @@\n \tdefined(__AARCH64EL__) || \\\n     defined(nios2) || defined(__nios2) || defined(__nios2__)\n #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1\n+#elif defined(__mc68000__)\n+#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS\n #elif defined(_M_IX86) || defined(__i386__) || defined(__i386)\n #if defined(_WIN32)\n // Windows uses a 64bit wide floating point stack.\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/poco/0003-Foundation-src-utils.h-backport-double-conversion-ch.patch",
    "content": "From fe7d230da03a35725ef768c07ce064324f941863 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Sun, 1 Jul 2018 15:37:47 +0200\nSubject: [PATCH] Foundation/src/utils.h: backport double-conversion change for\n AArch64 BE support\n\nThis commit, identical to upstream double-conversion commit\nhttps://github.com/google/double-conversion/commit/cb2beeb6771025377c665d1c3ea08388bc6e619a\nallows Poco to build on AArch64 big-endian.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nUpstream: https://github.com/pocoproject/poco/pull/2378\n[Julien: rebased on version 1.10.1]\nSigned-off-by: Julien Olivain <juju@cotds.org>\n---\n Foundation/src/utils.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Foundation/src/utils.h b/Foundation/src/utils.h\nindex e891c0f10..892f7db18 100644\n--- a/Foundation/src/utils.h\n+++ b/Foundation/src/utils.h\n@@ -63,7 +63,7 @@\n     defined(__SH4__) || defined(__alpha__) || \\\n     defined(_MIPS_ARCH_MIPS32R2) || \\\n     defined(__riscv) || \\\n-\tdefined(__AARCH64EL__) || \\\n+\tdefined(__AARCH64EL__) || defined(__aarch64__) || \\\n     defined(nios2) || defined(__nios2) || defined(__nios2__)\n #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1\n #elif defined(__mc68000__)\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/poco/Config.in",
    "content": "config BR2_PACKAGE_POCO_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on !BR2_arc\n\tdepends on !BR2_microblaze\n\tdepends on !BR2_mipsel\n\tdepends on !BR2_or1k\n\tdepends on !BR2_RISCV_32\n\tdepends on !BR2_xtensa\n\nconfig BR2_PACKAGE_POCO\n\tbool \"poco\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14\n\t# pthread_condattr_setclock\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\tdepends on BR2_PACKAGE_POCO_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  The C++ Portable Components Libraries\n\n\t  http://pocoproject.org\n\nif BR2_PACKAGE_POCO\n\ncomment \"poco components\"\n\nconfig BR2_PACKAGE_POCO_JSON\n\tbool \"json\"\n\nconfig BR2_PACKAGE_POCO_XML\n\tbool \"xml\"\n\tselect BR2_PACKAGE_EXPAT\n\nconfig BR2_PACKAGE_POCO_UTIL\n\tbool \"util\"\n\tselect BR2_PACKAGE_POCO_XML\n\nconfig BR2_PACKAGE_POCO_NET\n\tbool \"net\"\n\nconfig BR2_PACKAGE_POCO_CRYPTO\n\tbool \"crypto\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\nconfig BR2_PACKAGE_POCO_NETSSL_OPENSSL\n\tbool \"netssl_openssl\"\n\tselect BR2_PACKAGE_POCO_NET\n\tselect BR2_PACKAGE_POCO_CRYPTO\n\tselect BR2_PACKAGE_POCO_UTIL\n\tselect BR2_PACKAGE_OPENSSL\n\nconfig BR2_PACKAGE_POCO_ZIP\n\tbool \"zip\"\n\tselect BR2_PACKAGE_POCO_XML\n\tselect BR2_PACKAGE_POCO_NET\n\tselect BR2_PACKAGE_POCO_UTIL\n\nconfig BR2_PACKAGE_POCO_CPP_PARSER\n\tbool \"cpp_parser\"\n\nconfig BR2_PACKAGE_POCO_PDF\n\tbool \"pdf\"\n\tselect BR2_PACKAGE_POCO_JSON\n\tselect BR2_PACKAGE_POCO_UTIL\n\tselect BR2_PACKAGE_POCO_XML\n\nconfig BR2_PACKAGE_POCO_REDIS\n\tbool \"redis\"\n\tselect BR2_PACKAGE_POCO_NET\n\nconfig BR2_PACKAGE_POCO_MONGODB\n\tbool \"mongodb\"\n\tselect BR2_PACKAGE_POCO_NET\n\nconfig BR2_PACKAGE_POCO_DATA\n\tbool\n\nconfig BR2_PACKAGE_POCO_DATA_SQLITE\n\tbool \"sqlite\"\n\tselect BR2_PACKAGE_POCO_DATA\n\tselect BR2_PACKAGE_SQLITE\n\nconfig BR2_PACKAGE_POCO_DATA_MYSQL\n\tbool \"mysql\"\n\tdepends on BR2_USE_MMU # mysql\n\tselect BR2_PACKAGE_POCO_DATA\n\tselect BR2_PACKAGE_MYSQL\n\nconfig BR2_PACKAGE_POCO_JWT\n\tbool \"jwt\"\n\tselect BR2_PACKAGE_POCO_JSON\n\tselect BR2_PACKAGE_POCO_CRYPTO\n\nendif # BR2_PACKAGE_POCO\n\ncomment \"poco needs a toolchain w/ wchar, NPTL, C++, dynamic library, gcc >= 5 w/ C++14\"\n\tdepends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\tdepends on BR2_PACKAGE_POCO_ARCH_SUPPORTS\n"
  },
  {
    "path": "package/poco/poco.hash",
    "content": "# Locally computed\nsha256  44592a488d2830c0b4f3bfe4ae41f0c46abbfad49828d938714444e858a00818  poco-1.10.1.tar.gz\nsha256  c4b1e1e5f36d8331737231fefcc30f5714326aec7c387ad59a8115eb0ba7d6b5  LICENSE\n"
  },
  {
    "path": "package/poco/poco.mk",
    "content": "################################################################################\n#\n# poco\n#\n################################################################################\n\nPOCO_VERSION = 1.10.1\nPOCO_SITE = $(call github,pocoproject,poco,poco-$(POCO_VERSION)-release)\nPOCO_LICENSE = BSL-1.0\nPOCO_LICENSE_FILES = LICENSE\nPOCO_CPE_ID_VENDOR = pocoproject\nPOCO_INSTALL_STAGING = YES\n\nPOCO_DEPENDENCIES = zlib pcre \\\n\t$(if $(BR2_PACKAGE_POCO_XML),expat) \\\n\t$(if $(BR2_PACKAGE_POCO_CRYPTO),openssl) \\\n\t$(if $(BR2_PACKAGE_POCO_NETSSL_OPENSSL),openssl) \\\n\t$(if $(BR2_PACKAGE_POCO_DATA_SQLITE),sqlite) \\\n\t$(if $(BR2_PACKAGE_POCO_DATA_MYSQL),mysql)\n\nPOCO_OMIT = Data/ODBC PageCompiler \\\n\t$(if $(BR2_PACKAGE_POCO_JSON),,JSON) \\\n\t$(if $(BR2_PACKAGE_POCO_XML),,XML) \\\n\t$(if $(BR2_PACKAGE_POCO_UTIL),,Util) \\\n\t$(if $(BR2_PACKAGE_POCO_NET),,Net) \\\n\t$(if $(BR2_PACKAGE_POCO_NETSSL_OPENSSL),,NetSSL_OpenSSL) \\\n\t$(if $(BR2_PACKAGE_POCO_CRYPTO),,Crypto) \\\n\t$(if $(BR2_PACKAGE_POCO_ZIP),,Zip) \\\n\t$(if $(BR2_PACKAGE_POCO_CPP_PARSER),,CppParser) \\\n\t$(if $(BR2_PACKAGE_POCO_PDF),,PDF) \\\n\t$(if $(BR2_PACKAGE_POCO_REDIS),,Redis) \\\n\t$(if $(BR2_PACKAGE_POCO_MONGODB),,MongoDB) \\\n\t$(if $(BR2_PACKAGE_POCO_DATA),,Data) \\\n\t$(if $(BR2_PACKAGE_POCO_DATA_MYSQL),,Data/MySQL) \\\n\t$(if $(BR2_PACKAGE_POCO_DATA_SQLITE),,Data/SQLite) \\\n\t$(if $(BR2_PACKAGE_POCO_JWT),,JWT)\n\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\nPOCO_CONF_OPTS += --no-fpenvironment --no-wstring\nendif\n\n# architectures missing some FE_* in their fenv.h\nifeq ($(BR2_sh4a)$(BR2_nios2),y)\nPOCO_CONF_OPTS += --no-fpenvironment\nendif\n\n# disable fpenvironment for soft floating point configuration\nifeq ($(BR2_SOFT_FLOAT),y)\nPOCO_CONF_OPTS += --no-fpenvironment\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nPOCO_MAKE_TARGET = static_release\nelse ifeq ($(BR2_SHARED_LIBS),y)\nPOCO_MAKE_TARGET = shared_release\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nPOCO_MAKE_TARGET = all_release\nendif\n\ndefine POCO_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_MAKE_ENV) ./configure \\\n\t\t--config=Linux \\\n\t\t--prefix=/usr \\\n\t\t--cflags=-std=c++14 \\\n\t\t--omit=\"$(POCO_OMIT)\" \\\n\t\t$(POCO_CONF_OPTS) \\\n\t\t--unbundled \\\n\t\t--no-tests \\\n\t\t--no-samples)\nendef\n\n# Use $(MAKE1) to avoid failures on heavilly parallel machines (e.g. -j25)\ndefine POCO_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) POCO_TARGET_OSARCH=$(ARCH) CROSS_COMPILE=$(TARGET_CROSS) \\\n\t\tMYSQL_LIBDIR=$(STAGING_DIR)/usr/lib/mysql \\\n\t\tMYSQL_INCDIR=$(STAGING_DIR)/usr/include/mysql \\\n\t\tDEFAULT_TARGET=$(POCO_MAKE_TARGET) -C $(@D)\nendef\n\ndefine POCO_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(STAGING_DIR) POCO_TARGET_OSARCH=$(ARCH) \\\n\t\tDEFAULT_TARGET=$(POCO_MAKE_TARGET) install -C $(@D)\nendef\n\ndefine POCO_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) POCO_TARGET_OSARCH=$(ARCH) \\\n\t\tDEFAULT_TARGET=$(POCO_MAKE_TARGET) install -C $(@D)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/poke/0001-build-do-not-check-for-Tcl-Tk-if-disable-gui-is-spec.patch",
    "content": "From cef3fc90f02ef4fc49515745194bac3d81a2265b Mon Sep 17 00:00:00 2001\nFrom: \"Jose E. Marchesi\" <jose.marchesi@oracle.com>\nDate: Fri, 30 Apr 2021 13:17:05 +0200\nSubject: [PATCH] build: do not check for Tcl/Tk if --disable-gui is specified\n\n2021-04-30  Jose E. Marchesi  <jemarch@gnu.org>\n\n\t* configure.ac: Do not check for tcl/tk if --disable-gui is\n\tspecified at configure time.\n\n(cherry picked from commit 280a5e154287e43c0a40d9530a9cc658a7367a9c)\n[Romain: remove Changelog entry]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n configure.ac | 9 ++++++---\n 1 file changed, 6 insertions(+), 3 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex c7205513..c2f0760a 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -214,12 +214,15 @@ fi\n dnl The GUI is optional, and depends on the availability of Tcl and\n dnl Tk.\n \n-POKE_TCLTK\n-\n AC_ARG_ENABLE([gui],\n               AS_HELP_STRING([--enable-gui],\n                              [Enable the GUI (default is YES)]),\n-              [gui_enabled=$enableval], [gui_enabled=$has_tcltk])\n+              [gui_enabled=$enableval], [gui_enabled=yes])\n+\n+if test \"x$gui_enabled\" = \"xyes\"; then\n+ POKE_TCLTK\n+ gui_enabled=$has_tcltk\n+fi\n \n AM_CONDITIONAL([GUI], [test \"x$gui_enabled\" = \"xyes\"])\n \n-- \n2.30.2\n\n"
  },
  {
    "path": "package/poke/0002-tentatively-change-cppflags-to-omit-I-prefix-on-cros.patch",
    "content": "From ac9d057895f1e61f63cbecafcc3e3820fdb10f84 Mon Sep 17 00:00:00 2001\nFrom: Luca Saiu <positron@gnu.org>\nDate: Fri, 30 Apr 2021 22:42:57 +0200\nSubject: [PATCH] tentatively change --cppflags to omit -I prefix on\n cross-compilation\n\nThe autoconf macros defined from jitter --cppflags get automatically changed, of\ncourse.\n\n* configure.ac (JITTER_CROSS_COMPILING): New substitution.\n\n* bin/jitter-config.in.m4sh (main loop) <--cppflags>: Introduce conditional on\nthe new substitution.\n\nSuggested by Romain Naour, after his difficulties with building GNU poke with\nbuildroot.\n\n(cherry picked from commit 428406c7b8d4c20f3472d41ed57c12c1a88ad37e)\n[Romain:\n  patch jitter-config.in instead of jitter-config.in.m4sh since\n  there is an issue while converting the M4sh m4sh script ( .in.m4sh )\n  into a portable shell script ( .in ) ready to be processed by aclocal\n  for @-substitutions.]\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n jitter/bin/jitter-config.in | 10 +++++++---\n jitter/configure.ac         |  1 +\n 2 files changed, 8 insertions(+), 3 deletions(-)\n\ndiff --git a/jitter/bin/jitter-config.in b/jitter/bin/jitter-config.in\nindex 5e124f0..4bc508d 100644\n--- a/jitter/bin/jitter-config.in\n+++ b/jitter/bin/jitter-config.in\n@@ -999,10 +999,14 @@ while test \"$#\" != \"0\"; do\n         --cppflags)\n             no_option_argument\n             append_to_output cppflags\n-            # Append a -I argument.  This is defined separately from the rest,\n-            # as the installation prefix can be decided very late, at Jitter\n+            # Unless cross-compiling, append a -I argument referring the\n+            # installation path.  This is defined separately from the rest, as\n+            # the installation prefix can be decided very late, at Jitter\n             # installation time.\n-            output=\"$output -I $includedir\";;\n+            # (When cross-compiling this would be difficult to do correctly.)\n+            if test \"x@JITTER_CROSS_COMPILING@\" != 'xyes'; then\n+              output=\"$output -I $includedir\"\n+            fi;;\n         --ldadd)\n             no_option_argument\n             append_to_output ldadd;;\ndiff --git a/jitter/configure.ac b/jitter/configure.ac\nindex 21d6937..fb12349 100644\n--- a/jitter/configure.ac\n+++ b/jitter/configure.ac\n@@ -308,6 +308,7 @@ else\n    AC_MSG_RESULT([yes, cross-compiling from $build to $host .])\n    jitter_cross_compiling=yes\n fi\n+AC_SUBST([JITTER_CROSS_COMPILING], [$jitter_cross_compiling])\n \n # I never test on weird systems not supporting shebangs.\n AC_SYS_INTERPRETER\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/poke/0003-configure.ac-HELP2MAN-replace-by-true-when-cross-com.patch",
    "content": "From 8ba76a5a7ce311f67890199c5595bc1f626495ad Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 30 Apr 2021 15:43:59 +0200\nSubject: [PATCH] configure.ac: HELP2MAN replace ':' by 'true' when\n cross-compiling\n\nAvoid:\n/usr/bin/make  ./../poke/poke\n../run \\\n  : -p poke --name=\"The GNU extensible binary editor\" \\\n      ./../poke/poke -o ./poke.1\n../run: line 51: exec: :: not found\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex c2f0760a..93769ef9 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -74,7 +74,7 @@ gl_LIBTEXTSTYLE_OPTIONAL([0.20.5])\n if test $cross_compiling = no; then\n   AM_MISSING_PROG(HELP2MAN, help2man)\n else\n-  HELP2MAN=:\n+  HELP2MAN=true\n fi\n \n dnl recfix is part of the GNU recutils suite, and is used in cfg.mk to\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/poke/0004-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch",
    "content": "From a0594387565e1e6b4a8a8ba04ad13b135cc1f0b5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 1 Apr 2021 07:49:46 +0200\nSubject: [PATCH] lib/getrandom.c: fix build with uclibc < 1.0.35\n\nFix the following build failure with uclibc < 1.0.35 which is raised\nsince the addition of getrandom module in\nhttps://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=682cc4e678aceff32dea2a84b6e5147bdf5a20a7:\n\nIn file included from ./sys/random.h:40,\n                 from getrandom.c:22:\n/tmp/instance-0/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name 'size_t'\n   27 | extern int getrandom(void *__buf, size_t count, unsigned int flags)\n      |                                   ^~~~~~\n/tmp/instance-0/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:8:1: note: 'size_t' is defined in header '<stddef.h>'; did you forget to '#include <stddef.h>'?\n    7 | #include <features.h>\n  +++ |+#include <stddef.h>\n    8 | \n\nThis patch is not upstreamable as it is only a workaround for\nuclibc < 1.0.35, upstream uclibc has been patched with\nhttps://github.com/wbx-github/uclibc-ng/commit/00972c02c2b6e0a95d5def4a71bdfb188e091782\n\nFixes:\n - http://autobuild.buildroot.org/results/30105094e39374ec6d4e47e2fb5e99696f7f7981\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n jitter/gnulib-local/getrandom.c | 1 +\n gl/getrandom.c                  | 1 +\n gl-libpoke/getrandom.c          | 1 +\n 3 files changed, 3 insertions(+)\n\ndiff --git a/jitter/gnulib-local/getrandom.c b/jitter/gnulib-local/getrandom.c\nindex 41212fb32..0ad3f9648 100644\n--- a/jitter/gnulib-local/getrandom.c\n+++ b/jitter/gnulib-local/getrandom.c\n@@ -19,6 +19,7 @@\n \n #include <config.h>\n \n+#include <stddef.h>\n #include <sys/random.h>\n \n #include <errno.h>\ndiff --git a/gl/getrandom.c b/gl/getrandom.c\nindex 41212fb32..0ad3f9648 100644\n--- a/gl/getrandom.c\n+++ b/gl/getrandom.c\n@@ -19,6 +19,7 @@\n \n #include <config.h>\n \n+#include <stddef.h>\n #include <sys/random.h>\n \n #include <errno.h>\ndiff --git a/gl-libpoke/getrandom.c b/gl-libpoke/getrandom.c\nindex 41212fb32..0ad3f9648 100644\n--- a/gl-libpoke/getrandom.c\n+++ b/gl-libpoke/getrandom.c\n@@ -19,6 +19,7 @@\n \n #include <config.h>\n \n+#include <stddef.h>\n #include <sys/random.h>\n \n #include <errno.h>\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/poke/Config.in",
    "content": "config BR2_PACKAGE_POKE\n\tbool \"poke\"\n\tdepends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS # bdwgc\n\tdepends on BR2_USE_WCHAR # needs wctomb\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # less\n\tselect BR2_PACKAGE_BDWGC\n\tselect BR2_PACKAGE_LESS # runtime\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  GNU poke is a new interactive editor for binary data. Not\n\t  limited to editing basic entities such as bits and bytes,\n\t  it provides a full-fledged procedural, interactive\n\t  programming language designed to describe data structures\n\t  and to operate on them. Once a user has defined a structure\n\t  for binary data (usually matching some file format) she can\n\t  search, inspect, create, shuffle and modify abstract entities\n\t  such as ELF relocations, MP3 tags, DWARF expressions,\n\t  partition table entries, and so on, with primitives\n\t  resembling simple editing of bits and bytes. The program\n\t  comes with a library of already written descriptions (or\n\t  \"pickles\" in poke parlance) for many binary formats.\n\n\t  https://www.gnu.org/software/poke/\n\ncomment \"poke needs a toolchain w/ NPTL, wchar\"\n\tdepends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/poke/poke.hash",
    "content": "# Locally calculated\nsha256  f61cf8da5b64c01a1359373725aad1ca257f35c1c9269e4d50dd0664183ddf62  poke-1.2.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  jitter/COPYING\n"
  },
  {
    "path": "package/poke/poke.mk",
    "content": "################################################################################\n#\n# poke\n#\n################################################################################\n\nPOKE_VERSION = 1.2\nPOKE_SITE = $(BR2_GNU_MIRROR)/poke\n# gnulib license is a mix/mess of public-domain and various GPL and LGPL versions.\nPOKE_LICENSE = GPL-3.0+, GPL-3.0+ (jitter), gnulib license (gnulib)\nPOKE_LICENSE_FILES = COPYING jitter/COPYING\n\n# 0001-build-do-not-check-for-Tcl-Tk-if-disable-gui-is-spec.patch\n# 0003-configure.ac-HELP2MAN-replace-by-false-when-cross-co.patch\nPOKE_AUTORECONF = YES\n\nPOKE_DEPENDENCIES = host-flex host-bison host-pkgconf bdwgc readline\n\n# poke bundle gnulib that doesn't support the case where\n# host_os='linux-uclibc'. When cross-compiling, the guessed\n# answers are mostly wrong and gnulib will try to replace\n# snprintf with rpl_snprintf. This lead to \"undefined reference\n# to `rpl_snprintf'\" errors.\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\nPOKE_CONF_ENV = gl_cv_func_printf_positions=yes \\\n\tgl_cv_func_snprintf_retval_c99=yes \\\n\tgl_cv_func_printf_sizes_c99=yes \\\n\tgl_cv_func_printf_infinite_long_double=yes \\\n\tgl_cv_func_snprintf_retval_c99=yes \\\n\tgl_cv_func_snprintf_truncation_c99=yes \\\n\tgl_cv_func_snprintf_usable=yes \\\n\tgl_cv_func_strerror_0_works=yes \\\n\tgl_cv_header_working_stdint_h=yes \\\n\tgl_cv_func_printf_infinite=yes \\\n\tgl_cv_func_printf_flag_zero=yes \\\n\tgl_cv_func_printf_enomem=yes \\\n\tgl_cv_func_printf_directive_f=yes \\\n\tgl_cv_func_printf_directive_a=yes \\\n\tgl_cv_func_snprintf_directive_n=yes \\\n\tgl_cv_func_vsnprintf_posix=yes \\\n\tgl_cv_func_vsnprintf_zerosize_c99=yes\nendif\n\nPOKE_CONF_OPTS = \\\n\t--disable-gui \\\n\t--disable-libnbd \\\n\t--with-libreadline-prefix=$(STAGING_DIR)\n\nifeq ($(BR2_PACKAGE_JSON_C),y)\nPOKE_DEPENDENCIES += json-c\nPOKE_CONF_OPTS += --enable-mi\nelse\nPOKE_CONF_OPTS += --disable-mi\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch",
    "content": "From 85763549c53b2907dab094163f1404b2233f8029 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <aduskett@gmail.com>\nDate: Mon, 9 Oct 2017 16:51:20 -0400\nSubject: [PATCH] Add DESTDIR to setfiles\n\nThe addition of this patch makes the use of DESTDIR\nmandatory as there are conditional checks which would fail if it's not\ndefined.\n\nThis patch was updated from the patch provided by Niranjan Reddy to\naccomodate version 2.5\n\nSigned-off-by: Clayton Shotwell <clayton.shotwell@rockwellcollins.com>\nSigned-off-by: Niranjan Reddy <niranjan.reddy@rockwellcollins.com>\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Update for 2.8]\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n[Update for 3.2]\n---\n setfiles/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/setfiles/Makefile b/setfiles/Makefile\nindex a3bbbe1..df675cf 100644\n--- a/setfiles/Makefile\n+++ b/setfiles/Makefile\n@@ -3,7 +3,7 @@ LINGUAS ?= ru\n PREFIX ?= /usr\n SBINDIR ?= /sbin\n MANDIR = $(PREFIX)/share/man\n-AUDITH ?= $(shell test -f /usr/include/libaudit.h && echo y)\n+AUDITH ?= $(shell test -f $(DESTDIR)$(PREFIX)/include/libaudit.h && echo y)\n \n CFLAGS ?= -g -Werror -Wall -W\n override LDLIBS += -lselinux -lsepol\n-- \n2.13.6\n\n"
  },
  {
    "path": "package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch",
    "content": "From a221304344b3f9db7e86d928cf97d77542bcf456 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <aduskett@gmail.com>\nDate: Mon, 9 Oct 2017 16:47:19 -0400\nSubject: [PATCH] Add PREFIX to host paths\n\nUpdates the remaining hardcoded host paths used in the build to be\nprefixed with a PREFIX path to allow cross compilation.\n\nUpdated to work with version 3.2\n\nSigned-off-by: Clayton Shotwell <clayton.shotwell@rockwellcollins.com>\nSigned-off-by: Niranjan Reddy <niranjan.reddy@rockwellcollins.com>\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Update for 2.8]\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n[Update for 3.2]\n---\n newrole/Makefile  | 4 ++--\n run_init/Makefile | 4 ++--\n 2 files changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/newrole/Makefile b/newrole/Makefile\nindex 0e7ebce..3188cec 100644\n--- a/newrole/Makefile\n+++ b/newrole/Makefile\n@@ -4,8 +4,8 @@ PREFIX ?= /usr\n BINDIR ?= $(PREFIX)/bin\n MANDIR ?= $(PREFIX)/share/man\n ETCDIR ?= /etc\n-LOCALEDIR = $(DESTDIR)$(PREFIX)/share/locale\n-INCLUDEDIR ?= $(PREFIX)/include\n+LOCALEDIR = $(DESTDIR)$(PREFIX)\n+INCLUDEDIR ?= $(LOCALEDIR)/include\n PAMH ?= $(shell test -f $(INCLUDEDIR)/security/pam_appl.h && echo y)\n AUDITH ?= $(shell test -f $(INCLUDEDIR)/libaudit.h && echo y)\n # Enable capabilities to permit newrole to generate audit records.\ndiff --git a/run_init/Makefile b/run_init/Makefile\nindex e86364a..20a64d4 100644\n--- a/run_init/Makefile\n+++ b/run_init/Makefile\n@@ -6,8 +6,8 @@ SBINDIR ?= $(PREFIX)/sbin\n MANDIR ?= $(PREFIX)/share/man\n ETCDIR ?= /etc\n LOCALEDIR ?= $(DESTDIR)$(PREFIX)/share/locale\n-PAMH ?= $(shell test -f /usr/include/security/pam_appl.h && echo y)\n-AUDITH ?= $(shell test -f /usr/include/libaudit.h && echo y)\n+PAMH ?= $(shell test -f $(DESTDIR)$(PREFIX)/include/security/pam_appl.h && echo y)\n+AUDITH ?= $(shell test -f $(DESTDIR)$(PREFIX)/include/libaudit.h && echo y)\n \n CFLAGS ?= -Werror -Wall -W\n override CFLAGS += -DUSE_NLS -DLOCALEDIR=\"\\\"$(LOCALEDIR)\\\"\" -DPACKAGE=\"\\\"policycoreutils\\\"\"\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/policycoreutils/Config.in",
    "content": "comment \"policycoreutils needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_POLICYCOREUTILS\n\tbool \"policycoreutils\"\n\tdepends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS # libsemanage\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libsemanage\n\tdepends on !BR2_STATIC_LIBS #libsemanage\n\tselect BR2_PACKAGE_LIBSEMANAGE\n\tselect BR2_PACKAGE_LIBCAP_NG\n\thelp\n\t  Policycoreutils is a collection of policy utilities\n\t  (originally the \"core\" set of utilities needed to use\n\t  SELinux, although it has grown a bit over time), which have\n\t  different dependencies.  sestatus, secon, run_init, and\n\t  newrole only use libselinux.  load_policy and setfiles only\n\t  use libselinux and libsepol.  semodule and semanage use\n\t  libsemanage (and thus bring in dependencies on libsepol and\n\t  libselinux as well). setsebool uses libselinux to make\n\t  non-persistent boolean changes (via the kernel interface)\n\t  and uses libsemanage to make persistent boolean changes.\n\n\t  The base package will install the following utilities:\n\t      load_policy\n\t      newrole\n\t      run_init\n\t      secon\n\t      semodule\n\t      sestatus\n\t      setfiles\n\t      setsebool\n\n\t  http://selinuxproject.org/page/Main_Page\n"
  },
  {
    "path": "package/policycoreutils/policycoreutils.hash",
    "content": "# https://github.com/SELinuxProject/selinux/wiki/Releases\nsha256 d1331c6fa766c547b071c491de90b9f343c8dbffdb119be8a5a7e491199b93a9 policycoreutils-3.2.tar.gz\nsha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING\n"
  },
  {
    "path": "package/policycoreutils/policycoreutils.mk",
    "content": "################################################################################\n#\n# policycoreutils\n#\n################################################################################\n\nPOLICYCOREUTILS_VERSION = 3.2\nPOLICYCOREUTILS_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(POLICYCOREUTILS_VERSION)\nPOLICYCOREUTILS_LICENSE = GPL-2.0\nPOLICYCOREUTILS_LICENSE_FILES = COPYING\nPOLICYCOREUTILS_CPE_ID_VENDOR = selinuxproject\n\nPOLICYCOREUTILS_DEPENDENCIES = libsemanage libcap-ng $(TARGET_NLS_DEPENDENCIES)\nPOLICYCOREUTILS_MAKE_OPTS = LDLIBS=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nPOLICYCOREUTILS_DEPENDENCIES += linux-pam\nPOLICYCOREUTILS_MAKE_OPTS += NAMESPACE_PRIV=y\ndefine POLICYCOREUTILS_INSTALL_TARGET_LINUX_PAM_CONFS\n\t$(INSTALL) -D -m 0644 $(@D)/newrole/newrole-lspp.pamd $(TARGET_DIR)/etc/pam.d/newrole\n\t$(INSTALL) -D -m 0644 $(@D)/run_init/run_init.pamd $(TARGET_DIR)/etc/pam.d/run_init\nendef\nendif\n\nifeq ($(BR2_PACKAGE_AUDIT),y)\nPOLICYCOREUTILS_DEPENDENCIES += audit\nPOLICYCOREUTILS_MAKE_OPTS += AUDIT_LOG_PRIV=y USE_AUDIT=y\nendif\n\n# Enable LSPP_PRIV if both audit and linux pam are enabled\nifeq ($(BR2_PACKAGE_LINUX_PAM)$(BR2_PACKAGE_AUDIT),yy)\nPOLICYCOREUTILS_MAKE_OPTS += LSPP_PRIV=y\nendif\n\n# Undefining _FILE_OFFSET_BITS here because of a \"bug\" with glibc fts.h\n# large file support.\n# See https://bugzilla.redhat.com/show_bug.cgi?id=574992 for more information\nPOLICYCOREUTILS_MAKE_OPTS += \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -U_FILE_OFFSET_BITS\" \\\n\tCPPFLAGS=\"$(TARGET_CPPFLAGS) -U_FILE_OFFSET_BITS\"\n\nPOLICYCOREUTILS_MAKE_DIRS = \\\n\tload_policy newrole run_init \\\n\tsecon semodule sestatus setfiles \\\n\tsetsebool scripts\n\n# We need to pass DESTDIR at build time because it's used by\n# policycoreutils build system to find headers and libraries.\ndefine POLICYCOREUTILS_BUILD_CMDS\n\t$(foreach d,$(POLICYCOREUTILS_MAKE_DIRS),\n\t\t$(MAKE) -C $(@D)/$(d) $(POLICYCOREUTILS_MAKE_OPTS) \\\n\t\t\tDESTDIR=$(STAGING_DIR) all\n\t)\nendef\n\ndefine POLICYCOREUTILS_INSTALL_TARGET_CMDS\n\t$(foreach d,$(POLICYCOREUTILS_MAKE_DIRS),\n\t\t$(MAKE) -C $(@D)/$(d) $(POLICYCOREUTILS_MAKE_OPTS) \\\n\t\t\tDESTDIR=$(TARGET_DIR) install\n\t)\nendef\n\nHOST_POLICYCOREUTILS_DEPENDENCIES = host-libsemanage\n\n# Undefining _FILE_OFFSET_BITS here because of a \"bug\" with glibc fts.h\n# large file support.\n# See https://bugzilla.redhat.com/show_bug.cgi?id=574992 for more information\n# We also need to pass PREFIX because it defaults to $(DESTDIR)/usr\nHOST_POLICYCOREUTILS_MAKE_OPTS = \\\n\t$(HOST_CONFIGURE_OPTS) \\\n\tCFLAGS=\"$(HOST_CFLAGS) -U_FILE_OFFSET_BITS\" \\\n\tCPPFLAGS=\"$(HOST_CPPFLAGS) -U_FILE_OFFSET_BITS\" \\\n\tPREFIX=$(HOST_DIR) \\\n\tETCDIR=$(HOST_DIR)/etc \\\n\tSBINDIR=$(HOST_DIR)/sbin\n\n# Note: We are only building the programs required by the refpolicy build\nHOST_POLICYCOREUTILS_MAKE_DIRS = \\\n\tload_policy newrole run_init \\\n\tsecon semodule sestatus setfiles \\\n\tsetsebool\n\ndefine HOST_POLICYCOREUTILS_BUILD_CMDS\n\t$(foreach d,$(HOST_POLICYCOREUTILS_MAKE_DIRS),\n\t\t$(MAKE) -C $(@D)/$(d) $(HOST_POLICYCOREUTILS_MAKE_OPTS) all\n\t)\nendef\n\ndefine HOST_POLICYCOREUTILS_INSTALL_CMDS\n\t$(foreach d,$(HOST_POLICYCOREUTILS_MAKE_DIRS),\n\t\t$(MAKE) -C $(@D)/$(d) $(HOST_POLICYCOREUTILS_MAKE_OPTS) install\n\t)\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/polkit/0001-make-netgroup-support-optional.patch",
    "content": "From 1b854ef4bb15032091a33fed587e5ba6f3e582eb Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Wed, 22 May 2019 13:18:55 -0700\nSubject: [PATCH] make netgroup support optional\n\nOn at least Linux/musl and Linux/uclibc, netgroup\nsupport is not available.  PolKit fails to compile on these systems\nfor that reason.\n\nThis change makes netgroup support conditional on the presence of the\nsetnetgrent(3) function which is required for the support to work.  If\nthat function is not available on the system, an error will be returned\nto the administrator if unix-netgroup: is specified in configuration.\n\nFixes bug 50145.\n\nSigned-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\n[Adam: Extend patch to work with duktape integration.]\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n[Thomas: add introspection.m4.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n buildutil/introspection.m4                    | 142 ++++++++++++++++++\n configure.ac                                  |   2 +-\n src/polkit/polkitidentity.c                   |  16 ++\n src/polkit/polkitunixnetgroup.c               |   3 +\n .../polkitbackendduktapeauthority.c           |   2 +\n .../polkitbackendinteractiveauthority.c       |  14 +-\n .../polkitbackendjsauthority.cpp              |   3 +-\n test/polkit/polkitidentitytest.c              |   9 +-\n test/polkit/polkitunixnetgrouptest.c          |   3 +\n .../test-polkitbackendjsauthority.c           |   2 +\n 10 files changed, 187 insertions(+), 9 deletions(-)\n create mode 100644 buildutil/introspection.m4\n\ndiff --git a/buildutil/introspection.m4 b/buildutil/introspection.m4\nnew file mode 100644\nindex 0000000..b0ccd68\n--- /dev/null\n+++ b/buildutil/introspection.m4\n@@ -0,0 +1,142 @@\n+dnl -*- mode: autoconf -*-\n+dnl Copyright 2009 Johan Dahlin\n+dnl\n+dnl This file is free software; the author(s) gives unlimited\n+dnl permission to copy and/or distribute it, with or without\n+dnl modifications, as long as this notice is preserved.\n+dnl\n+\n+# serial 1\n+\n+dnl This is a copy of AS_AC_EXPAND\n+dnl\n+dnl (C) 2003, 2004, 2005 Thomas Vander Stichele <thomas at apestaart dot org>\n+dnl Copying and distribution of this file, with or without modification,\n+dnl are permitted in any medium without royalty provided the copyright\n+dnl notice and this notice are preserved.\n+m4_define([_GOBJECT_INTROSPECTION_AS_AC_EXPAND],\n+[\n+  EXP_VAR=[$1]\n+  FROM_VAR=[$2]\n+\n+  dnl first expand prefix and exec_prefix if necessary\n+  prefix_save=$prefix\n+  exec_prefix_save=$exec_prefix\n+\n+  dnl if no prefix given, then use /usr/local, the default prefix\n+  if test \"x$prefix\" = \"xNONE\"; then\n+    prefix=\"$ac_default_prefix\"\n+  fi\n+  dnl if no exec_prefix given, then use prefix\n+  if test \"x$exec_prefix\" = \"xNONE\"; then\n+    exec_prefix=$prefix\n+  fi\n+\n+  full_var=\"$FROM_VAR\"\n+  dnl loop until it doesn't change anymore\n+  while true; do\n+    new_full_var=\"`eval echo $full_var`\"\n+    if test \"x$new_full_var\" = \"x$full_var\"; then break; fi\n+    full_var=$new_full_var\n+  done\n+\n+  dnl clean up\n+  full_var=$new_full_var\n+  AC_SUBST([$1], \"$full_var\")\n+\n+  dnl restore prefix and exec_prefix\n+  prefix=$prefix_save\n+  exec_prefix=$exec_prefix_save\n+])\n+\n+m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],\n+[\n+    AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first\n+    AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first\n+    AC_BEFORE([LT_INIT],[$0])dnl setup libtool first\n+\n+    dnl enable/disable introspection\n+    m4_if([$2], [require],\n+    [dnl\n+        enable_introspection=yes\n+    ],[dnl\n+        AC_ARG_ENABLE(introspection,\n+                  AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],\n+                                 [Enable introspection for this build]),, \n+                                 [enable_introspection=auto])\n+    ])dnl\n+\n+    AC_MSG_CHECKING([for gobject-introspection])\n+\n+    dnl presence/version checking\n+    AS_CASE([$enable_introspection],\n+    [no], [dnl\n+        found_introspection=\"no (disabled, use --enable-introspection to enable)\"\n+    ],dnl\n+    [yes],[dnl\n+        PKG_CHECK_EXISTS([gobject-introspection-1.0],,\n+                         AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))\n+        PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],\n+                         found_introspection=yes,\n+                         AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))\n+    ],dnl\n+    [auto],[dnl\n+        PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)\n+\tdnl Canonicalize enable_introspection\n+\tenable_introspection=$found_introspection\n+    ],dnl\n+    [dnl\t\n+        AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])\n+    ])dnl\n+\n+    AC_MSG_RESULT([$found_introspection])\n+\n+    dnl expand datadir/libdir so we can pass them to pkg-config\n+    dnl and get paths relative to our target directories\n+    _GOBJECT_INTROSPECTION_AS_AC_EXPAND(_GI_EXP_DATADIR, \"$datadir\")\n+    _GOBJECT_INTROSPECTION_AS_AC_EXPAND(_GI_EXP_LIBDIR, \"$libdir\")\n+\n+    INTROSPECTION_SCANNER=\n+    INTROSPECTION_COMPILER=\n+    INTROSPECTION_GENERATE=\n+    INTROSPECTION_GIRDIR=\n+    INTROSPECTION_TYPELIBDIR=\n+    if test \"x$found_introspection\" = \"xyes\"; then\n+       INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`\n+       INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`\n+       INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`\n+       INTROSPECTION_GIRDIR=`$PKG_CONFIG --define-variable=datadir=\"${_GI_EXP_DATADIR}\" --variable=girdir gobject-introspection-1.0`\n+       INTROSPECTION_TYPELIBDIR=\"$($PKG_CONFIG --define-variable=libdir=\"${_GI_EXP_LIBDIR}\" --variable=typelibdir gobject-introspection-1.0)\"\n+       INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`\n+       INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`\n+       INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection\n+    fi\n+    AC_SUBST(INTROSPECTION_SCANNER)\n+    AC_SUBST(INTROSPECTION_COMPILER)\n+    AC_SUBST(INTROSPECTION_GENERATE)\n+    AC_SUBST(INTROSPECTION_GIRDIR)\n+    AC_SUBST(INTROSPECTION_TYPELIBDIR)\n+    AC_SUBST(INTROSPECTION_CFLAGS)\n+    AC_SUBST(INTROSPECTION_LIBS)\n+    AC_SUBST(INTROSPECTION_MAKEFILE)\n+\n+    AM_CONDITIONAL(HAVE_INTROSPECTION, test \"x$found_introspection\" = \"xyes\")\n+])\n+\n+\n+dnl Usage:\n+dnl   GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])\n+\n+AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],\n+[\n+  _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])\n+])\n+\n+dnl Usage:\n+dnl   GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])\n+\n+\n+AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],\n+[\n+  _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])\n+])\ndiff --git a/configure.ac b/configure.ac\nindex 5cedb4e..87aa0ad 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -111,7 +111,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS=\"-lexpat\"],\n \t     [AC_MSG_ERROR([Can't find expat library. Please install expat.])])\n AC_SUBST(EXPAT_LIBS)\n \n-AC_CHECK_FUNCS(clearenv fdatasync)\n+AC_CHECK_FUNCS(clearenv fdatasync setnetgrent)\n \n if test \"x$GCC\" = \"xyes\"; then\n   LDFLAGS=\"-Wl,--as-needed $LDFLAGS\"\ndiff --git a/src/polkit/polkitidentity.c b/src/polkit/polkitidentity.c\nindex 3aa1f7f..10e9c17 100644\n--- a/src/polkit/polkitidentity.c\n+++ b/src/polkit/polkitidentity.c\n@@ -182,7 +182,15 @@ polkit_identity_from_string  (const gchar   *str,\n     }\n   else if (g_str_has_prefix (str, \"unix-netgroup:\"))\n     {\n+#ifndef HAVE_SETNETGRENT\n+      g_set_error (error,\n+                   POLKIT_ERROR,\n+                   POLKIT_ERROR_FAILED,\n+                   \"Netgroups are not available on this machine ('%s')\",\n+                   str);\n+#else\n       identity = polkit_unix_netgroup_new (str + sizeof \"unix-netgroup:\" - 1);\n+#endif\n     }\n \n   if (identity == NULL && (error != NULL && *error == NULL))\n@@ -344,6 +352,13 @@ polkit_identity_new_for_gvariant (GVariant  *variant,\n       GVariant *v;\n       const char *name;\n \n+#ifndef HAVE_SETNETGRENT\n+      g_set_error (error,\n+                   POLKIT_ERROR,\n+                   POLKIT_ERROR_FAILED,\n+                   \"Netgroups are not available on this machine\");\n+      goto out;\n+#else\n       v = lookup_asv (details_gvariant, \"name\", G_VARIANT_TYPE_STRING, error);\n       if (v == NULL)\n         {\n@@ -353,6 +368,7 @@ polkit_identity_new_for_gvariant (GVariant  *variant,\n       name = g_variant_get_string (v, NULL);\n       ret = polkit_unix_netgroup_new (name);\n       g_variant_unref (v);\n+#endif\n     }\n   else\n     {\ndiff --git a/src/polkit/polkitunixnetgroup.c b/src/polkit/polkitunixnetgroup.c\nindex 8a2b369..83f8d4a 100644\n--- a/src/polkit/polkitunixnetgroup.c\n+++ b/src/polkit/polkitunixnetgroup.c\n@@ -194,6 +194,9 @@ polkit_unix_netgroup_set_name (PolkitUnixNetgroup *group,\n PolkitIdentity *\n polkit_unix_netgroup_new (const gchar *name)\n {\n+#ifndef HAVE_SETNETGRENT\n+  g_assert_not_reached();\n+#endif\n   g_return_val_if_fail (name != NULL, NULL);\n   return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_NETGROUP,\n                                        \"name\", name,\ndiff --git a/src/polkitbackend/polkitbackendduktapeauthority.c b/src/polkitbackend/polkitbackendduktapeauthority.c\nindex 4b4f8fd..e19b009 100644\n--- a/src/polkitbackend/polkitbackendduktapeauthority.c\n+++ b/src/polkitbackend/polkitbackendduktapeauthority.c\n@@ -1036,6 +1036,7 @@ js_polkit_user_is_in_netgroup (duk_context *cx)\n   const char *netgroup;\n   gboolean is_in_netgroup = FALSE;\n \n+#ifdef HAVE_SETNETGRENT\n   user = duk_require_string (cx, 0);\n   netgroup = duk_require_string (cx, 1);\n \n@@ -1046,6 +1047,7 @@ js_polkit_user_is_in_netgroup (duk_context *cx)\n     {\n       is_in_netgroup = TRUE;\n     }\n+#endif\n \n   duk_push_boolean (cx, is_in_netgroup);\n   return 1;\ndiff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c\nindex 056d9a8..36c2f3d 100644\n--- a/src/polkitbackend/polkitbackendinteractiveauthority.c\n+++ b/src/polkitbackend/polkitbackendinteractiveauthority.c\n@@ -2233,25 +2233,26 @@ get_users_in_net_group (PolkitIdentity                    *group,\n   GList *ret;\n \n   ret = NULL;\n+#ifdef HAVE_SETNETGRENT\n   name = polkit_unix_netgroup_get_name (POLKIT_UNIX_NETGROUP (group));\n \n-#ifdef HAVE_SETNETGRENT_RETURN\n+# ifdef HAVE_SETNETGRENT_RETURN\n   if (setnetgrent (name) == 0)\n     {\n       g_warning (\"Error looking up net group with name %s: %s\", name, g_strerror (errno));\n       goto out;\n     }\n-#else\n+# else\n   setnetgrent (name);\n-#endif\n+# endif /* HAVE_SETNETGRENT_RETURN */\n \n   for (;;)\n     {\n-#if defined(HAVE_NETBSD) || defined(HAVE_OPENBSD)\n+# if defined(HAVE_NETBSD) || defined(HAVE_OPENBSD)\n       const char *hostname, *username, *domainname;\n-#else\n+# else\n       char *hostname, *username, *domainname;\n-#endif\n+# endif /* defined(HAVE_NETBSD) || defined(HAVE_OPENBSD) */\n       PolkitIdentity *user;\n       GError *error = NULL;\n \n@@ -2282,6 +2283,7 @@ get_users_in_net_group (PolkitIdentity                    *group,\n \n  out:\n   endnetgrent ();\n+#endif /* HAVE_SETNETGRENT */\n   return ret;\n }\n \ndiff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp\nindex 9b752d1..09b2878 100644\n--- a/src/polkitbackend/polkitbackendjsauthority.cpp\n+++ b/src/polkitbackend/polkitbackendjsauthority.cpp\n@@ -1520,6 +1520,7 @@ js_polkit_user_is_in_netgroup (JSContext  *cx,\n \n   JS::CallArgs args = JS::CallArgsFromVp (argc, vp);\n \n+#ifdef HAVE_SETNETGRENT\n   JS::RootedString usrstr (authority->priv->cx);\n   usrstr = args[0].toString();\n   user = JS_EncodeStringToUTF8 (cx, usrstr);\n@@ -1534,7 +1535,7 @@ js_polkit_user_is_in_netgroup (JSContext  *cx,\n     {\n       is_in_netgroup =  true;\n     }\n-\n+#endif\n   ret = true;\n \n   args.rval ().setBoolean (is_in_netgroup);\ndiff --git a/test/polkit/polkitidentitytest.c b/test/polkit/polkitidentitytest.c\nindex e91967b..e829aaa 100644\n--- a/test/polkit/polkitidentitytest.c\n+++ b/test/polkit/polkitidentitytest.c\n@@ -19,6 +19,7 @@\n  * Author: Nikki VonHollen <vonhollen@google.com>\n  */\n \n+#include \"config.h\"\n #include \"glib.h\"\n #include <polkit/polkit.h>\n #include <polkit/polkitprivate.h>\n@@ -145,11 +146,15 @@ struct ComparisonTestData comparison_test_data [] = {\n   {\"unix-group:root\", \"unix-group:jane\", FALSE},\n   {\"unix-group:jane\", \"unix-group:jane\", TRUE},\n \n+#ifdef HAVE_SETNETGRENT\n   {\"unix-netgroup:foo\", \"unix-netgroup:foo\", TRUE},\n   {\"unix-netgroup:foo\", \"unix-netgroup:bar\", FALSE},\n+#endif\n \n   {\"unix-user:root\", \"unix-group:root\", FALSE},\n+#ifdef HAVE_SETNETGRENT\n   {\"unix-user:jane\", \"unix-netgroup:foo\", FALSE},\n+#endif\n \n   {NULL},\n };\n@@ -181,11 +186,13 @@ main (int argc, char *argv[])\n   g_test_add_data_func (\"/PolkitIdentity/group_string_2\", \"unix-group:jane\", test_string);\n   g_test_add_data_func (\"/PolkitIdentity/group_string_3\", \"unix-group:users\", test_string);\n \n+#ifdef HAVE_SETNETGRENT\n   g_test_add_data_func (\"/PolkitIdentity/netgroup_string\", \"unix-netgroup:foo\", test_string);\n+  g_test_add_data_func (\"/PolkitIdentity/netgroup_gvariant\", \"unix-netgroup:foo\", test_gvariant);\n+#endif\n \n   g_test_add_data_func (\"/PolkitIdentity/user_gvariant\", \"unix-user:root\", test_gvariant);\n   g_test_add_data_func (\"/PolkitIdentity/group_gvariant\", \"unix-group:root\", test_gvariant);\n-  g_test_add_data_func (\"/PolkitIdentity/netgroup_gvariant\", \"unix-netgroup:foo\", test_gvariant);\n \n   add_comparison_tests ();\n \ndiff --git a/test/polkit/polkitunixnetgrouptest.c b/test/polkit/polkitunixnetgrouptest.c\nindex 3701ba1..e3352eb 100644\n--- a/test/polkit/polkitunixnetgrouptest.c\n+++ b/test/polkit/polkitunixnetgrouptest.c\n@@ -19,6 +19,7 @@\n  * Author: Nikki VonHollen <vonhollen@google.com>\n  */\n \n+#include \"config.h\"\n #include \"glib.h\"\n #include <polkit/polkit.h>\n #include <string.h>\n@@ -69,7 +70,9 @@ int\n main (int argc, char *argv[])\n {\n   g_test_init (&argc, &argv, NULL);\n+#ifdef HAVE_SETNETGRENT\n   g_test_add_func (\"/PolkitUnixNetgroup/new\", test_new);\n   g_test_add_func (\"/PolkitUnixNetgroup/set_name\", test_set_name);\n+#endif\n   return g_test_run ();\n }\ndiff --git a/test/polkitbackend/test-polkitbackendjsauthority.c b/test/polkitbackend/test-polkitbackendjsauthority.c\nindex 71aad23..fdd28f3 100644\n--- a/test/polkitbackend/test-polkitbackendjsauthority.c\n+++ b/test/polkitbackend/test-polkitbackendjsauthority.c\n@@ -137,12 +137,14 @@ test_get_admin_identities (void)\n         \"unix-group:users\"\n       }\n     },\n+#ifdef HAVE_SETNETGRENT\n     {\n       \"net.company.action3\",\n       {\n         \"unix-netgroup:foo\"\n       }\n     },\n+#endif\n   };\n   guint n;\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/polkit/0002-Improve-meson_post_install-script.patch",
    "content": "From 6c8022392713955c5ae0061e22b50a16a1c2252a Mon Sep 17 00:00:00 2001\nFrom: Simon McVittie <smcv@collabora.com>\nDate: Thu, 15 Jul 2021 12:36:05 +0000\nSubject: [PATCH] Improve meson_post_install script\n\n[Retrieved from:\nhttps://gitlab.freedesktop.org/polkit/polkit/-/commit/6c8022392713955c5ae0061e22b50a16a1c2252a]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n .gitlab-ci.yml        |  3 +--\n meson_post_install.py | 58 +++++++++++++++++++++++++++++++++++--------\n 2 files changed, 49 insertions(+), 12 deletions(-)\n\ndiff --git a/.gitlab-ci.yml b/.gitlab-ci.yml\nindex 8ac3e9f..6d0abb4 100644\n--- a/.gitlab-ci.yml\n+++ b/.gitlab-ci.yml\n@@ -26,8 +26,6 @@ build_stable:\n   before_script:\n     - dnf upgrade -y --nogpgcheck fedora-release fedora-repos*\n     - dnf update -y && dnf install -y $DEPENDENCIES\n-    - getent group polkitd >/dev/null || groupadd -r polkitd\n-    - getent passwd polkitd >/dev/null || useradd -r -g polkitd -d / -s /sbin/nologin -c \"User for polkitd\" polkitd\n \n   script:\n     - meson setup \n@@ -43,6 +41,7 @@ build_stable:\n     - meson compile -C builddir\n     - meson test    -C builddir\n     - meson install -C builddir\n+    - DESTDIR=$(pwd)/DESTDIR meson install -C builddir\n   artifacts:\n     name: 'test logs'\n     when: 'always'\ndiff --git a/meson_post_install.py b/meson_post_install.py\nindex 0a0fccf..0ab7469 100644\n--- a/meson_post_install.py\n+++ b/meson_post_install.py\n@@ -1,20 +1,44 @@\n #!/usr/bin/env python3\n \n-import getpass\n import os\n import pwd\n import sys\n \n+destdir = os.environ.get('DESTDIR')\n prefix = os.environ['MESON_INSTALL_DESTDIR_PREFIX']\n \n-bindir = os.path.join(prefix, sys.argv[1])\n-pkgdatadir = os.path.join(prefix, sys.argv[2])\n-pkglibdir = os.path.join(prefix, sys.argv[3])\n-pkgsysconfdir = os.path.join(prefix, sys.argv[4])\n+def destdir_path(p):\n+    if os.path.isabs(p):\n+        if destdir is None:\n+            return p\n+        else:\n+            return os.path.join(destdir, os.path.relpath(p, '/'))\n+    else:\n+        return os.path.join(prefix, p)\n \n-polkitd_uid = pwd.getpwnam(sys.argv[5]).pw_uid\n+bindir = destdir_path(sys.argv[1])\n+pkgdatadir = destdir_path(sys.argv[2])\n+pkglibdir = destdir_path(sys.argv[3])\n+pkgsysconfdir = destdir_path(sys.argv[4])\n+polkitd_user = sys.argv[5]\n \n-os.chmod(os.path.join(bindir, 'pkexec'), 0o4775)\n+try:\n+    polkitd_uid = pwd.getpwnam(polkitd_user).pw_uid\n+except KeyError:\n+    polkitd_uid = None\n+\n+dst = os.path.join(bindir, 'pkexec')\n+\n+if os.geteuid() == 0:\n+    os.chmod(dst, 0o4755)\n+    os.chown(dst, 0, -1)\n+else:\n+    print(\n+        'Owner and mode of {} need to be setuid root (04755) after '\n+        'installation'.format(\n+            dst,\n+        )\n+    )\n \n dst_dirs = [\n     os.path.join(pkgsysconfdir, 'rules.d'),\n@@ -24,13 +48,27 @@ dst_dirs = [\n for dst in dst_dirs:\n     if not os.path.exists(dst):\n         os.makedirs(dst, mode=0o700)\n-        if getpass.getuser() == \"root\":\n+        if os.geteuid() == 0 and polkitd_uid is not None:\n             os.chown(dst, polkitd_uid, -1)\n+        else:\n+            print(\n+                'Owner of {} needs to be set to {} after installation'.format(\n+                    dst, polkitd_user,\n+                )\n+            )\n \n # polkit-agent-helper-1 need to be setuid root because it's used to\n # authenticate not only the invoking user, but possibly also root\n # and/or other users.\n dst = os.path.join(pkglibdir, 'polkit-agent-helper-1')\n-os.chmod(dst, 0o4755)\n-if getpass.getuser() == \"root\":\n+\n+if os.geteuid() == 0:\n+    os.chmod(dst, 0o4755)\n     os.chown(dst, 0, -1)\n+else:\n+    print(\n+        'Owner and mode of {} need to be setuid root (04755) after '\n+        'installation'.format(\n+            dst,\n+        )\n+    )\n-- \nGitLab\n\n"
  },
  {
    "path": "package/polkit/0003-build-Remove-redundant-computation-of-dbus-data-directory.patch",
    "content": "From 9fa097f4dde92a0c1675400228b4cb965ed3e123 Mon Sep 17 00:00:00 2001\nFrom: Simon McVittie <smcv@debian.org>\nDate: Thu, 3 Jun 2021 18:55:29 +0100\nSubject: [PATCH] build: Remove redundant computation of dbus data directory\n\nWe were asking pkg-config \"if I define ${datadir} to pk_prefix/pk_datadir,\nwhat would ${datadir} be?\" but the answer is obviously always going to be\npk_prefix/pk_datadir.\n\nSigned-off-by: Simon McVittie <smcv@debian.org>\n\n[Retrieved (and slightly updated for duktape fork) from:\nhttps://gitlab.freedesktop.org/polkit/polkit/-/commit/9fa097f4dde92a0c1675400228b4cb965ed3e123]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n meson.build | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/meson.build b/meson.build\nindex 6a6799e..03a7683 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -136,8 +136,7 @@ assert(cc.has_function('XML_ParserCreate', dependencies: expat_dep), 'Can\\'t fin\n endif\n \n dbus_dep = dependency('dbus-1')\n-dbus_confdir = dbus_dep.get_pkgconfig_variable('datadir', define_variable: ['datadir', pk_prefix / pk_datadir])   #changed from sysconfdir with respect to commit#8eada3836465838\n-dbus_policydir = dbus_confdir / 'dbus-1/system.d'\n+dbus_policydir = pk_prefix / pk_datadir / 'dbus-1/system.d'\n dbus_system_bus_services_dir = dbus_dep.get_pkgconfig_variable('system_bus_services_dir', define_variable: ['datadir', pk_prefix / pk_datadir])\n \n # check OS\n-- \nGitLab\n\n"
  },
  {
    "path": "package/polkit/0004-build-Don-t-require-dbus-development-files.patch",
    "content": "From 4bb2157adae620c8b07caf5a24b177d1f90f2fbb Mon Sep 17 00:00:00 2001\nFrom: Simon McVittie <smcv@debian.org>\nDate: Thu, 3 Jun 2021 18:57:00 +0100\nSubject: [PATCH] build: Don't require dbus development files\n\nWe don't actually need libdbus, only the dbus-daemon's installation\ndirectory for system services, which in practice is always going to be\n/usr/share/dbus-1/system-services.\n\nSigned-off-by: Simon McVittie <smcv@debian.org>\n\n[Retrieved (and slightly updated for duktape fork) from:\nhttps://gitlab.freedesktop.org/polkit/polkit/-/commit/4bb2157adae620c8b07caf5a24b177d1f90f2fbb]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n meson.build | 9 +++++++--\n 1 file changed, 7 insertions(+), 2 deletions(-)\n\ndiff --git a/meson.build b/meson.build\nindex 03a7683..539ec7a 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -135,9 +135,14 @@ assert(cc.has_function('XML_ParserCreate', dependencies: expat_dep), 'Can\\'t fin\n   js_dep = dependency('mozjs-78')\n endif\n \n-dbus_dep = dependency('dbus-1')\n+dbus_dep = dependency('dbus-1', required: false)\n dbus_policydir = pk_prefix / pk_datadir / 'dbus-1/system.d'\n-dbus_system_bus_services_dir = dbus_dep.get_pkgconfig_variable('system_bus_services_dir', define_variable: ['datadir', pk_prefix / pk_datadir])\n+if dbus_dep.found()\n+  dbus_system_bus_services_dir = dbus_dep.get_pkgconfig_variable('system_bus_services_dir', define_variable: ['datadir', pk_prefix / pk_datadir])\n+else\n+  # libdbus development files not installed, assume a standard layout\n+  dbus_system_bus_services_dir = pk_prefix / pk_datadir / 'dbus-1' / 'system-services'\n+endif\n \n # check OS\n host_system = host_machine.system()\n-- \nGitLab\n\n"
  },
  {
    "path": "package/polkit/Config.in",
    "content": "config BR2_PACKAGE_POLKIT\n\tbool \"polkit\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, dbus\n\tdepends on BR2_USE_MMU # libglib2, dbus\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on !BR2_STATIC_LIBS # duktape\n\tselect BR2_PACKAGE_DBUS # runtime\n\tselect BR2_PACKAGE_DUKTAPE\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  PolicyKit is a toolkit for defining and handling\n\t  authorizations. It is used for allowing unprivileged\n\t  processes to speak to privileged processes.\n\n\t  http://www.freedesktop.org/wiki/Software/polkit\n\ncomment \"polkit needs a toolchain with dynamic library, wchar, threads, gcc >= 7\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/polkit/S50polkit",
    "content": "#!/bin/sh\n\nDAEMON=\"polkitd\"\nDAEMON_PATH=\"/usr/lib/polkit-1/${DAEMON}\"\nPIDFILE=\"/var/run/${DAEMON}.pid\"\nPOLKITD_ARGS=\"--no-debug\"\n\n# polkitd does not create a pidfile, so pass \"-n\" in the command line\n# and use \"-m\" to instruct start-stop-daemon to create one.\nstart() {\n\tprintf 'Starting %s: ' \"${DAEMON}\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -bmSqp \"$PIDFILE\" -x ${DAEMON_PATH} -- ${POLKITD_ARGS}\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"${DAEMON}\"\n\tstart-stop-daemon -Kqp \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart|reload)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/polkit/polkit.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  88d078f1d1f653fd31fe42e46cc3d9b7dd468e70684075e32fe1766dc7ece517  polkit-0.119.tar.gz\n\n# Locally calculated\nsha256  d2e2aa973e29c75e1b492e67ea7b7da9de2d501d49a934657971fd74f9a0b0a8  COPYING\n"
  },
  {
    "path": "package/polkit/polkit.mk",
    "content": "################################################################################\n#\n# polkit\n#\n################################################################################\n\nPOLKIT_VERSION = 0.119\nPOLKIT_SITE = $(call github,aduskett,polkit-duktape,v$(POLKIT_VERSION))\nPOLKIT_LICENSE = GPL-2.0\nPOLKIT_LICENSE_FILES = COPYING\nPOLKIT_CPE_ID_VENDOR = polkit_project\nPOLKIT_INSTALL_STAGING = YES\n\nPOLKIT_DEPENDENCIES = \\\n\tduktape libglib2 host-intltool expat $(TARGET_NLS_DEPENDENCIES)\n\nPOLKIT_LDFLAGS = $(TARGET_NLS_LIBS)\n\nPOLKIT_CONF_OPTS = \\\n\t-Dman=false \\\n\t-Dexamples=false \\\n\t-Dsession_tracking=ConsoleKit \\\n\t-Djs_engine=duktape\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nPOLKIT_CONF_OPTS += -Dintrospection=true\nPOLKIT_DEPENDENCIES += gobject-introspection\nelse\nPOLKIT_CONF_OPTS += -Dintrospection=false\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nPOLKIT_DEPENDENCIES += linux-pam\nPOLKIT_CONF_OPTS += -Dauthfw=pam\nelse\nPOLKIT_CONF_OPTS += -Dauthfw=shadow\nendif\n\n# polkit.{its,loc} are needed for gvfs and must be installed in $(HOST_DIR)\n# and not $(STAGING_DIR)\ndefine POLKIT_INSTALL_ITS\n\t$(INSTALL) -D -m 644 $(@D)/data/polkit.its \\\n\t\t$(HOST_DIR)/share/gettext/its/polkit.its\n\t$(INSTALL) -D -m 644 $(@D)/data/polkit.loc \\\n\t\t$(HOST_DIR)/share/gettext/its/polkit.loc\nendef\nPOLKIT_POST_INSTALL_TARGET_HOOKS += POLKIT_INSTALL_ITS\n\ndefine POLKIT_USERS\n\tpolkitd -1 polkitd -1 * - - - Polkit Daemon\nendef\n\ndefine POLKIT_PERMISSIONS\n\t/etc/polkit-1 r 750 root polkitd - - - - -\n\t/usr/share/polkit-1 r 750 root polkitd - - - - -\n\t/usr/bin/pkexec f 4755 root root - - - - -\nendef\n\ndefine POLKIT_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(POLKIT_PKGDIR)/polkit.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/polkit.service\n\nendef\n\ndefine POLKIT_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/polkit/S50polkit \\\n\t\t$(TARGET_DIR)/etc/init.d/S50polkit\nendef\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/polkit/polkit.service",
    "content": "[Unit]\n\nDescription=Authorization Manager\nDocumentation=man:polkit(8)\n\n[Service]\nType=dbus\nBusName=org.freedesktop.PolicyKit1\nExecStart=/usr/lib/polkit-1/polkitd --no-debug\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/popperjs/Config.in",
    "content": "config BR2_PACKAGE_POPPERJS\n\tbool \"popperjs\"\n\thelp\n\t  Popper.js, a JavaScript Tooltip & Popover Positioning Engine.\n\n\t  https://popper.js.org\n"
  },
  {
    "path": "package/popperjs/popperjs.hash",
    "content": "# Locally computed:\nsha256\t83eecef51d10826faca2cd5cabb344e0bef6d4127d7e728db9e4d8308b7b15d1  popperjs-1.16.0.tar.gz\nsha256\t2961310ed05cd9373a08b8191c071425a7fede0ca5d807ca38fa5f5f61c5b834  LICENSE.md\n"
  },
  {
    "path": "package/popperjs/popperjs.mk",
    "content": "################################################################################\n#\n# popperjs\n#\n################################################################################\n\nPOPPERJS_VERSION = 1.16.0\nPOPPERJS_SITE = $(call github,popperjs,popper-core,v$(POPPERJS_VERSION))\nPOPPERJS_LICENSE = MIT\nPOPPERJS_LICENSE_FILES = LICENSE.md\n\ndefine POPPERJS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/dist/umd/popper.min.js \\\n\t\t$(TARGET_DIR)/var/www/popperjs/js/popper.min.js\n\t$(INSTALL) -m 0644 -D $(@D)/dist/umd/popper-utils.min.js \\\n\t\t$(TARGET_DIR)/var/www/popperjs/js/popper-utils.min.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/poppler/0001-glib-poppler-private.h-fix-build-with-gcc-11.patch",
    "content": "From 1ae5ff981ae0484383c4733c56b72e56a3a37584 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 14 Aug 2021 10:43:13 +0200\nSubject: [PATCH] glib/poppler-private.h: fix build with gcc 11\n\nFix the following build failure with gcc 11:\n\nIn file included from /tmp/instance-0/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/glib-2.0/glib/gthread.h:32,\n                 from /tmp/instance-0/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/glib-2.0/glib/gasyncqueue.h:32,\n                 from /tmp/instance-0/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/glib-2.0/glib.h:32,\n                 from /tmp/instance-0/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/glib-2.0/gobject/gbinding.h:28,\n                 from /tmp/instance-0/output-1/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/glib-2.0/glib-object.h:22,\n                 from /tmp/instance-0/output-1/build/poppler-0.84.0/glib/poppler.h:22,\n                 from /tmp/instance-0/output-1/build/poppler-0.84.0/glib/poppler-action.cc:19:\n/tmp/instance-0/output-1/build/poppler-0.84.0/glib/poppler-action.cc: In function 'GType poppler_dest_get_type()':\n/tmp/instance-0/output-1/build/poppler-0.84.0/glib/poppler-private.h:155:13: error: argument 2 of '__atomic_load' must not be a pointer to a 'volatile' type\n  155 |         if (g_once_init_enter (&g_define_type_id__volatile)) {                        \\\n      |             ^~~~~~~~~~~~~~~~~\n/tmp/instance-0/output-1/build/poppler-0.84.0/glib/poppler-action.cc:28:1: note: in expansion of macro 'POPPLER_DEFINE_BOXED_TYPE'\n   28 | POPPLER_DEFINE_BOXED_TYPE (PopplerDest, poppler_dest, poppler_dest_copy, poppler_dest_free)\n      | ^~~~~~~~~~~~~~~~~~~~~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/dfcaac6487aaeb10412c3fe72a23135f8a70fefe\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not needed because of\nhttps://gitlab.freedesktop.org/poppler/poppler/-/commit/47de887d7658cfd68df44b3acf710971054f957b]\n---\n glib/poppler-private.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/glib/poppler-private.h b/glib/poppler-private.h\nindex 86b587fd..ff15eab0 100644\n--- a/glib/poppler-private.h\n+++ b/glib/poppler-private.h\n@@ -152,7 +152,7 @@ gboolean _poppler_convert_pdf_date_to_gtime (const GooString *date,\n GType                                                                                 \\\n type_name##_get_type (void)                                                           \\\n {                                                                                     \\\n-        static volatile gsize g_define_type_id__volatile = 0;                         \\\n+        static gsize g_define_type_id__volatile = 0;                                  \\\n \tif (g_once_init_enter (&g_define_type_id__volatile)) {                        \\\n \t        GType g_define_type_id =                                              \\\n \t\t    g_boxed_type_register_static (g_intern_static_string (#TypeName), \\\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/poppler/Config.in",
    "content": "config BR2_PACKAGE_POPPLER\n\tbool \"poppler\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14, constexpr\n\tselect BR2_PACKAGE_FONTCONFIG\n\thelp\n\t  Poppler is a PDF rendering library based on the xpdf-3.0\n\t  code base.\n\n\t  http://poppler.freedesktop.org/\n\nif BR2_PACKAGE_POPPLER\n\nconfig BR2_PACKAGE_POPPLER_QT5\n\tbool \"Qt5 support\"\n\tdepends on BR2_PACKAGE_QT5\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\tselect BR2_PACKAGE_QT5BASE_XML\n\thelp\n\t  Build Qt support into the Poppler library\n\nconfig BR2_PACKAGE_POPPLER_UTILS\n\tbool \"command line utils\"\n\thelp\n\t  Compile poppler command line utils.\n\nendif\n\ncomment \"poppler needs a toolchain w/ wchar, C++, threads, dynamic library, gcc >= 5\"\n\tdepends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_5\n"
  },
  {
    "path": "package/poppler/poppler.hash",
    "content": "# Locally calculated\nsha256 c7a130da743b38a548f7a21fe5940506fb1949f4ebdd3209f0e5b302fa139731  poppler-0.84.0.tar.xz\nsha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/poppler/poppler.mk",
    "content": "################################################################################\n#\n# poppler\n#\n################################################################################\n\nPOPPLER_VERSION = 0.84.0\nPOPPLER_SOURCE = poppler-$(POPPLER_VERSION).tar.xz\nPOPPLER_SITE = http://poppler.freedesktop.org\nPOPPLER_DEPENDENCIES = fontconfig host-pkgconf\nPOPPLER_LICENSE = GPL-2.0+\nPOPPLER_LICENSE_FILES = COPYING\nPOPPLER_CPE_ID_VENDOR = freedesktop\nPOPPLER_INSTALL_STAGING = YES\n\nPOPPLER_CONF_OPTS = \\\n\t-DENABLE_UNSTABLE_API_ABI_HEADERS=ON \\\n\t-DBUILD_GTK_TESTS=OFF \\\n\t-DBUILD_QT5_TESTS=OFF \\\n\t-DBUILD_CPP_TESTS=OFF \\\n\t-DENABLE_GTK_DOC=OFF\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nPOPPLER_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\nifeq ($(BR2_PACKAGE_BOOST),y)\nPOPPLER_DEPENDENCIES += boost\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nPOPPLER_DEPENDENCIES += jpeg\nPOPPLER_CONF_OPTS += -DENABLE_DCTDECODER=libjpeg -DWITH_JPEG=ON\nelse\nPOPPLER_CONF_OPTS += -DENABLE_DCTDECODER=none -DWITH_JPEG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nPOPPLER_DEPENDENCIES += gobject-introspection\nPOPPLER_CONF_OPTS += -DENABLE_GOBJECT_INTROSPECTION=ON\nelse\nPOPPLER_CONF_OPTS += -DENABLE_GOBJECT_INTROSPECTION=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nPOPPLER_DEPENDENCIES += libpng\nPOPPLER_CONF_OPTS += -DWITH_PNG=ON\nelse\nPOPPLER_CONF_OPTS += -DWITH_PNG=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LCMS2),y)\nPOPPLER_DEPENDENCIES += lcms2\nPOPPLER_CONF_OPTS += -DENABLE_CMS=lcms2\nelse\nPOPPLER_CONF_OPTS += -DENABLE_CMS=none\nendif\n\nifeq ($(BR2_PACKAGE_OPENJPEG),y)\nPOPPLER_DEPENDENCIES += openjpeg\nPOPPLER_CONF_OPTS += -DENABLE_LIBOPENJPEG=openjpeg2\nelse\nPOPPLER_CONF_OPTS += -DENABLE_LIBOPENJPEG=none\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nPOPPLER_DEPENDENCIES += libcurl\nPOPPLER_CONF_OPTS += -DENABLE_LIBCURL=ON\nelse\nPOPPLER_CONF_OPTS += -DENABLE_LIBCURL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_POPPLER_QT5),y)\nPOPPLER_DEPENDENCIES += qt5base\nPOPPLER_CONF_OPTS += -DENABLE_QT5=ON\nelse\nPOPPLER_CONF_OPTS += -DENABLE_QT5=OFF\nendif\n\nifeq ($(BR2_PACKAGE_POPPLER_UTILS),y)\nPOPPLER_CONF_OPTS += -DENABLE_UTILS=ON\nelse\nPOPPLER_CONF_OPTS += -DENABLE_UTILS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nPOPPLER_DEPENDENCIES += zlib\nPOPPLER_CONF_OPTS += -DENABLE_ZLIB=ON\nelse\nPOPPLER_CONF_OPTS += -DENABLE_ZLIB=OFF\nendif\n\nifeq ($(BR2_PACKAGE_CAIRO),y)\nPOPPLER_DEPENDENCIES += cairo\nPOPPLER_CONF_OPTS += -DWITH_Cairo=ON\nelse\nPOPPLER_CONF_OPTS += -DWITH_Cairo=OFF\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nPOPPLER_DEPENDENCIES += tiff\nPOPPLER_CONF_OPTS += -DWITH_TIFF=ON\nelse\nPOPPLER_CONF_OPTS += -DWITH_TIFF=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nPOPPLER_DEPENDENCIES += libglib2\nPOPPLER_CONF_OPTS += -DENABLE_GLIB=ON\nelse\nPOPPLER_CONF_OPTS += -DENABLE_GLIB=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBNSS),y)\nPOPPLER_DEPENDENCIES += libnss\nPOPPLER_CONF_OPTS += -DWITH_NSS3=ON\nelse\nPOPPLER_CONF_OPTS += -DWITH_NSS3=OFF\nendif\n\nifeq ($(BR2_SOFT_FLOAT),y)\nPOPPLER_CONF_OPTS += -DUSE_FLOAT=OFF\nelse\nPOPPLER_CONF_OPTS += -DUSE_FLOAT=ON\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/popt/0001-add-libiconv-to-popt.pc.patch",
    "content": "Add LTLIBICONV to popt.pc.in\n\nAdd ${LTLIBICONV} to popt.pc.in so applications such as shairport-sync\nwill know that they must link with -liconv when building statically\n\nFixes:\n - http://autobuild.buildroot.org/results/c5b0d1d2867e49c022a2ad971dd9f358ff0f3865\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -Naurp popt-1.18-vanilla/popt.pc.in popt-1.18/popt.pc.in\n--- popt-1.18-vanilla/popt.pc.in\t2020-03-24 10:36:25.000000000 +0100\n+++ popt-1.18/popt.pc.in\t2020-09-18 21:18:03.112609343 +0200\n@@ -7,4 +7,5 @@ Name: popt\n Version: @VERSION@\n Description: popt library.\n Libs: -L${libdir} -lpopt\n+Libs.private: @LTLIBICONV@\n Cflags: -I${includedir}\n"
  },
  {
    "path": "package/popt/0002-Detect-glob_pattern_p.patch",
    "content": "From 3938da1286534e4b280340411336eed5b6311d1b Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 15 Jul 2020 23:21:32 +0200\nSubject: [PATCH] Detect glob_pattern_p()\n\nThe current popt build system tests the existence of <glob.h>, and\nthen assumes that if __GLIBC__ is defined, then glob_pattern_p() must\nbe available. Unfortunately, that's not true with uClibc: <glob.h> may\nbe installed, but not necessarily the GNU glob extensions... and\nuClibc defines __GLIBC__. This is causing build issues with certain\nuClibc toolchains that do not have GNU glob extensions enabled.\n\nTo fix this, this patch adds an AC_CHECK_FUNCS() test for\nglob_pattern_p, and uses that to find out whether glob_pattern_p() is\navailable or not.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Retrieved (and slightly updated) from:\nhttps://git.buildroot.net/buildroot/tree/package/popt/0003-glob-detection.patch]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/rpm-software-management/popt/commit/3938da1286534e4b280340411336eed5b6311d1b]\n---\n configure.ac     | 2 +-\n src/poptconfig.c | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex a5568c4..3b71d1a 100755\n--- a/configure.ac\n+++ b/configure.ac\n@@ -50,7 +50,7 @@ AC_ARG_ENABLE(build-gcov,\n ])\n \n AC_SEARCH_LIBS(setreuid, [ucb])\n-AC_CHECK_FUNCS(getuid geteuid iconv mtrace secure_getenv __secure_getenv setreuid setuid stpcpy strerror vasprintf srandom)\n+AC_CHECK_FUNCS(getuid geteuid iconv mtrace secure_getenv __secure_getenv setreuid setuid stpcpy strerror vasprintf srandom glob_pattern_p)\n \n AM_GNU_GETTEXT_VERSION([0.18.2])\n AM_GNU_GETTEXT([external])\ndiff --git a/src/poptconfig.c b/src/poptconfig.c\nindex 9d97ccd..b4d1b76 100644\n--- a/src/poptconfig.c\n+++ b/src/poptconfig.c\n@@ -21,7 +21,7 @@\n #if defined(HAVE_GLOB_H)\n #include <glob.h>\n \n-#if !defined(__GLIBC__)\n+#if !defined(HAVE_GLOB_PATTERN_P)\n /* Return nonzero if PATTERN contains any metacharacters.\n    Metacharacters can be quoted with backslashes if QUOTE is nonzero.  */\n static int\n"
  },
  {
    "path": "package/popt/0003-configure-replace-deprecated-macros.patch",
    "content": "From f492b19f59229b0494b5b9ffe5c660a35493a405 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Christian=20G=C3=B6ttsche?= <cgzones@googlemail.com>\nDate: Mon, 29 Jun 2020 18:58:09 +0200\nSubject: [PATCH] configure: replace deprecated macros\n\n* use LT_INIT instead of deprecated AC_PROG_LIBTOOL\n* use AS_HELP_STRING instead of deprecated AC_HELP_STRING\n* quote macros\n\n[Retrieved from:\nhttps://github.com/rpm-software-management/popt/commit/f492b19f59229b0494b5b9ffe5c660a35493a405]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac | 20 ++++++++++----------\n 1 file changed, 10 insertions(+), 10 deletions(-)\n mode change 100755 => 100644 configure.ac\n\ndiff --git a/configure.ac b/configure.ac\nold mode 100755\nnew mode 100644\nindex 3b71d1a..009ae7b\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1,5 +1,5 @@\n-AC_PREREQ(2.57)\n-AC_INIT(popt, 1.18, rpm-maint@lists.rpm.org)\n+AC_PREREQ([2.57])\n+AC_INIT([popt], [1.18], [rpm-maint@lists.rpm.org])\n AC_CONFIG_SRCDIR([src/popt.h])\n AC_CONFIG_HEADERS([config.h])\n \n@@ -14,11 +14,11 @@ AC_USE_SYSTEM_EXTENSIONS\n AM_PROG_AR\n \n AC_PROG_INSTALL\n-AC_PROG_LIBTOOL\n+LT_INIT\n \n AC_SYS_LARGEFILE\n \n-AC_CHECK_HEADERS(fnmatch.h glob.h langinfo.h libintl.h mcheck.h stdalign.h)\n+AC_CHECK_HEADERS([fnmatch.h glob.h langinfo.h libintl.h mcheck.h stdalign.h])\n \n # For some systems we know that we have ld_version scripts.\n # Use it then as default.\n@@ -32,15 +32,15 @@ case \"${host}\" in\n         ;;\n esac\n AC_ARG_ENABLE([ld-version-script],\n-              AC_HELP_STRING([--enable-ld-version-script],\n+              [AS_HELP_STRING([--enable-ld-version-script],\n                              [enable/disable use of linker version script.\n-                              (default is system dependent)]),\n+                              (default is system dependent)])],\n               [have_ld_version_script=$enableval],\n               [ : ] )\n AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test \"$have_ld_version_script\" = \"yes\")\n \n-AC_ARG_ENABLE(build-gcov,\n-    AS_HELP_STRING([--enable-build-gcov], [build POPT instrumented for gcov]), [dnl\n+AC_ARG_ENABLE([build-gcov],\n+    [AS_HELP_STRING([--enable-build-gcov], [build POPT instrumented for gcov])], [dnl\n     if test \".$enableval\" = .yes; then\n         if test \".`$CC --version 2>&1 | grep 'GCC'`\" != .; then\n             dnl # GNU GCC (usually \"gcc\")\n@@ -49,8 +49,8 @@ AC_ARG_ENABLE(build-gcov,\n     fi\n ])\n \n-AC_SEARCH_LIBS(setreuid, [ucb])\n-AC_CHECK_FUNCS(getuid geteuid iconv mtrace secure_getenv __secure_getenv setreuid setuid stpcpy strerror vasprintf srandom glob_pattern_p)\n+AC_SEARCH_LIBS([setreuid], [ucb])\n+AC_CHECK_FUNCS([getuid geteuid iconv mtrace secure_getenv __secure_getenv setreuid setuid stpcpy strerror vasprintf srandom glob_pattern_p])\n \n AM_GNU_GETTEXT_VERSION([0.18.2])\n AM_GNU_GETTEXT([external])\n"
  },
  {
    "path": "package/popt/0004-fix-build-without-wchar.patch",
    "content": "From 41911aac46d69df6a205af59d60f23a418b0e875 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 2 Sep 2020 11:55:17 +0200\nSubject: [PATCH] fix build without wchar\n\nCheck for wchar.h and use HAVE_WCHAR_H instead of hardcoding\nPOPT_WCHAR_HACK to fix the build with (embedded) toolchains that don't\nsupport wchar\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/rpm-software-management/popt/commit/41911aac46d69df6a205af59d60f23a418b0e875]\n---\n configure.ac   | 2 +-\n src/popthelp.c | 5 ++---\n 2 files changed, 3 insertions(+), 4 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 009ae7b..1fce6df 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -18,7 +18,7 @@ LT_INIT\n \n AC_SYS_LARGEFILE\n \n-AC_CHECK_HEADERS([fnmatch.h glob.h langinfo.h libintl.h mcheck.h stdalign.h])\n+AC_CHECK_HEADERS([fnmatch.h glob.h langinfo.h libintl.h mcheck.h stdalign.h wchar.h])\n \n # For some systems we know that we have ld_version scripts.\n # Use it then as default.\ndiff --git a/src/popthelp.c b/src/popthelp.c\nindex 9a3f489..5cbc1f4 100644\n--- a/src/popthelp.c\n+++ b/src/popthelp.c\n@@ -15,8 +15,7 @@\n #include <sys/ioctl.h>\n #endif\n \n-#define\tPOPT_WCHAR_HACK\n-#ifdef \tPOPT_WCHAR_HACK\n+#ifdef HAVE_WCHAR_H\n #include <wchar.h>\t\t\t/* for mbsrtowcs */\n #endif\n #include \"poptint.h\"\n@@ -118,7 +117,7 @@ static size_t maxColumnWidth(FILE *fp)\n static inline size_t stringDisplayWidth(const char *s)\n {\n     size_t n = strlen(s);\n-#ifdef\tPOPT_WCHAR_HACK\n+#ifdef HAVE_WCHAR_H\n     mbstate_t t;\n \n     memset ((void *)&t, 0, sizeof (t));\t/* In initial state.  */\n"
  },
  {
    "path": "package/popt/0005-fix-build-without-mbstate_t.patch",
    "content": "From e4788a0f9d820574a165b2609ff16b717ce0baba Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 19 Sep 2020 18:51:15 +0200\nSubject: [PATCH] fix build without mbstate_t\n\nCommit 41911aac46d69df6a205af59d60f23a418b0e875 tried to fix build\nwithout wchar by checking for the availability of wchar.h however some\ntoolchains have wchar.h but does not define mbstate_t and mbsrtowcs so\nreplace HAVE_WCHAR_H by HAVE_MBSRTOWCS\n\nFixes:\n - http://autobuild.buildroot.org/results/27f184af35468941173628e5e847a284c0b80d73\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://github.com/rpm-software-management/popt/pull/51]\n---\n configure.ac   | 4 ++--\n src/popthelp.c | 4 ++--\n 2 files changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 1fce6df..442086b 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -18,7 +18,7 @@ LT_INIT\n \n AC_SYS_LARGEFILE\n \n-AC_CHECK_HEADERS([fnmatch.h glob.h langinfo.h libintl.h mcheck.h stdalign.h wchar.h])\n+AC_CHECK_HEADERS([fnmatch.h glob.h langinfo.h libintl.h mcheck.h stdalign.h])\n \n # For some systems we know that we have ld_version scripts.\n # Use it then as default.\n@@ -50,7 +50,7 @@ AC_ARG_ENABLE([build-gcov],\n ])\n \n AC_SEARCH_LIBS([setreuid], [ucb])\n-AC_CHECK_FUNCS([getuid geteuid iconv mtrace secure_getenv __secure_getenv setreuid setuid stpcpy strerror vasprintf srandom glob_pattern_p])\n+AC_CHECK_FUNCS([getuid geteuid iconv mtrace secure_getenv __secure_getenv setreuid setuid stpcpy strerror vasprintf srandom glob_pattern_p mbsrtowcs])\n \n AM_GNU_GETTEXT_VERSION([0.18.2])\n AM_GNU_GETTEXT([external])\ndiff --git a/src/popthelp.c b/src/popthelp.c\nindex f604516..b4ab9b4 100644\n--- a/src/popthelp.c\n+++ b/src/popthelp.c\n@@ -15,7 +15,7 @@\n #include <sys/ioctl.h>\n #endif\n \n-#ifdef HAVE_WCHAR_H\n+#ifdef HAVE_MBSRTOWCS\n #include <wchar.h>\t\t\t/* for mbsrtowcs */\n #endif\n #include \"poptint.h\"\n@@ -117,7 +117,7 @@ static size_t maxColumnWidth(FILE *fp)\n static inline size_t stringDisplayWidth(const char *s)\n {\n     size_t n = strlen(s);\n-#ifdef HAVE_WCHAR_H\n+#ifdef HAVE_MBSRTOWCS\n     mbstate_t t;\n \n     memset ((void *)&t, 0, sizeof (t));\t/* In initial state.  */\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/popt/Config.in",
    "content": "config BR2_PACKAGE_POPT\n\tbool \"popt\"\n\thelp\n\t  Popt is a C library for parsing command line parameters.\n\n\t  https://github.com/rpm-software-management/popt\n"
  },
  {
    "path": "package/popt/popt.hash",
    "content": "# Locally calculated:\nsha256  5159bc03a20b28ce363aa96765f37df99ea4d8850b1ece17d1e6ad5c24fdc5d1  popt-1.18.tar.gz\nsha256  518d4f2a05064cb9a8ec0ea02e86408af4feed6916f78ef42171465db8b383c5  COPYING\n"
  },
  {
    "path": "package/popt/popt.mk",
    "content": "################################################################################\n#\n# popt\n#\n################################################################################\n\nPOPT_VERSION = 1.18\nPOPT_SITE = http://ftp.rpm.org/popt/releases/popt-1.x\nPOPT_INSTALL_STAGING = YES\nPOPT_LICENSE = MIT\nPOPT_LICENSE_FILES = COPYING\nPOPT_CPE_ID_VENDOR = popt_project\n\nPOPT_GETTEXTIZE = YES\nPOPT_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\n# We're patching configure.ac\nPOPT_AUTORECONF = YES\n\nPOPT_CONF_ENV = ac_cv_va_copy=yes\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nPOPT_CONF_ENV += am_cv_lib_iconv=yes\nPOPT_CONF_OPTS += --with-libiconv-prefix=$(STAGING_DIR)/usr\nPOPT_DEPENDENCIES += libiconv\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/portaudio/Config.in",
    "content": "comment \"portaudio needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_PORTAUDIO\n\tbool \"portaudio\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  PortAudio is a free, cross-platform, open-source,\n\t  audio I/O library.\n\n\t  http://www.portaudio.com/\n\nif BR2_PACKAGE_PORTAUDIO\n\nconfig BR2_PACKAGE_PORTAUDIO_ALSA\n\tbool \"alsa support\"\n\tdefault y\n\tselect BR2_PACKAGE_ALSA_LIB\n\thelp\n\t  Compile with ALSA support.\n\nconfig BR2_PACKAGE_PORTAUDIO_OSS\n\tbool \"oss support\"\n\thelp\n\t  Compile with OSS support.\n\nconfig BR2_PACKAGE_PORTAUDIO_CXX\n\tbool \"C++ bindings\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Enables C++ bindings.\n\nendif # BR2_PACKAGE_PORTAUDIO\n"
  },
  {
    "path": "package/portaudio/portaudio.hash",
    "content": "# Locally calculated\nsha256  47efbf42c77c19a05d22e627d42873e991ec0c1357219c0d74ce6a2948cb2def  pa_stable_v190700_20210406.tgz\nsha256  ec52a1952d701f94e5135719a47376da4ee0b4a0201f1cafb49f61db6480ac3d  LICENSE.txt\n"
  },
  {
    "path": "package/portaudio/portaudio.mk",
    "content": "################################################################################\n#\n# portaudio\n#\n################################################################################\n\nPORTAUDIO_VERSION = 190700_20210406\nPORTAUDIO_SITE = http://files.portaudio.com/archives\nPORTAUDIO_SOURCE = pa_stable_v$(PORTAUDIO_VERSION).tgz\nPORTAUDIO_INSTALL_STAGING = YES\nPORTAUDIO_MAKE = $(MAKE1)\nPORTAUDIO_LICENSE = portaudio license (MIT-like plus special clause)\nPORTAUDIO_LICENSE_FILES = LICENSE.txt\n\nPORTAUDIO_DEPENDENCIES = \\\n\t$(if $(BR2_PACKAGE_PORTAUDIO_ALSA),alsa-lib)\n\nPORTAUDIO_CONF_OPTS = \\\n\t$(if $(BR2_PACKAGE_PORTAUDIO_ALSA),--with-alsa,--without-alsa) \\\n\t$(if $(BR2_PACKAGE_PORTAUDIO_OSS),--with-oss,--without-oss) \\\n\t$(if $(BR2_PACKAGE_PORTAUDIO_CXX),--enable-cxx,--disable-cxx)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/postgis/0001-Add-HAVE_VASPRINTF-HAVE_ASPRINTF-templates.patch",
    "content": "From 7bf2fc388df10bc1760cd06594f50da0c78ee3a2 Mon Sep 17 00:00:00 2001\nFrom: fidomax <adobegitler@gmail.com>\nDate: Tue, 26 Jan 2021 07:33:17 +0300\nSubject: [PATCH] Add HAVE_VASPRINTF HAVE_ASPRINTF templates\n\nIt fixes autoreconf error:\nautoheader: warning: missing template: HAVE_ASPRINTF\nautoheader: Use AC_DEFINE([HAVE_ASPRINTF], [], [Description])\nautoheader: warning: missing template: HAVE_VASPRINTF\n\nSigned-off-by: Maxim Kochetkov <fido_max@inbox.ru>\nFetch from: https://github.com/postgis/postgis/commit/d0ac5df49961d1d1a74b894f9941b973c0695c11.patch\n---\n configure.ac | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 9ac7051bb..dddb3aef7 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -11,6 +11,8 @@ dnl **********************************************************************\n \n AC_INIT()\n AC_CONFIG_HEADERS([postgis_config.h])\n+AH_TEMPLATE([HAVE_VASPRINTF])\n+AH_TEMPLATE([HAVE_ASPRINTF])\n AC_CONFIG_MACRO_DIR([macros])\n AC_CONFIG_AUX_DIR([build-aux])\n AC_PROG_INSTALL\n-- \n2.30.0\n\n"
  },
  {
    "path": "package/postgis/0002-Add-POSTGIS_DEBUG_LEVEL-define-to-configure.ac.patch",
    "content": "From 97d0cb4f4a6f3bec50729e3f896d4a84b796c5c6 Mon Sep 17 00:00:00 2001\nFrom: fidomax <adobegitler@gmail.com>\nDate: Tue, 26 Jan 2021 09:17:17 +0300\nSubject: [PATCH] Add POSTGIS_DEBUG_LEVEL define to configure.ac\n\nIn case of using autoreconf \"#define POSTGIS_DEBUG_LEVEL 0\" is removed from postgis_config.h.in so build failed with undefined POSTGIS_DEBUG_LEVEL.\n\nSigned-off-by: Maxim Kochetkov <fido_max@inbox.ru>\nFetch from: https://github.com/postgis/postgis/commit/2b2c2cb159cfcaacb75a4e74f17bd2834d61acd0.patch\n---\n configure.ac | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex dddb3aef7..86e1597ee 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1131,6 +1131,8 @@ else\n     CPPFLAGS=\"-DNDEBUG $CPPFLAGS\"\n fi\n \n+AC_DEFINE([POSTGIS_DEBUG_LEVEL], [0], [Define debug level. Default 0])\n+\n dnl ===========================================================================\n dnl Allow the developer to disable the automatic updates of postgis_revision.h\n dnl with --without-phony-revision\n-- \n2.30.0\n\n"
  },
  {
    "path": "package/postgis/0003-Disable-forced-static-linking-of-liblwgeom.patch",
    "content": "From 845c18c1288b7a96592901baadb198f96dd71c46 Mon Sep 17 00:00:00 2001\nFrom: fidomax <adobegitler@gmail.com>\nDate: Tue, 26 Jan 2021 09:49:19 +0300\nSubject: [PATCH] Disable forced static linking of liblwgeom\n\nIn case of shared libs build fails:\nld: cannot find -lgeos_c\nld: attempted static link of dynamic object `/usr/lib/libproj.so'\n\nSigned-off-by: Maxim Kochetkov <fido_max@inbox.ru>\nFetch from: https://github.com/postgis/postgis/commit/98070faad220e12fcaed9a583a70a37c510b7c6b.patch\n---\n loader/Makefile.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/loader/Makefile.in b/loader/Makefile.in\nindex 9aebfe07f..9a0c90d3a 100644\n--- a/loader/Makefile.in\n+++ b/loader/Makefile.in\n@@ -44,7 +44,7 @@ ICONV_CFLAGS=@ICONV_CFLAGS@\n \n # liblwgeom\n LIBLWGEOM=../liblwgeom/liblwgeom.la\n-LDFLAGS += -static $(LIBLWGEOM)\n+LDFLAGS += $(LIBLWGEOM)\n \n # GTK includes and libraries\n GTK_CFLAGS = @GTK_CFLAGS@ @IGE_MAC_CFLAGS@\n-- \n2.30.0\n\n"
  },
  {
    "path": "package/postgis/0004-Use-pkg-config-to-get-PROJ-version-if-available.patch",
    "content": "From 876a04a795fcb179e0dc802e260353012c4890f9 Mon Sep 17 00:00:00 2001\nFrom: Maxim Kochetkov <adobegitler@gmail.com>\nDate: Thu, 28 Jan 2021 08:12:57 +0300\nSubject: [PATCH] Use pkg-config to get PROJ version if available\n\nIn case of cross-compile AC_PROJ_VERSION([POSTGIS_PROJ_VERSION]) fails.\nSo try to get version by pkg-config first\n\nSigned-off-by: Maxim Kochetkov <fido_max@inbox.ru>\nFetch from: https://github.com/postgis/postgis/commit/671a878982550e3c590d642620a6621b52c230c7.patch\n---\n configure.ac | 7 +++++--\n 1 file changed, 5 insertions(+), 2 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 86e1597ee..016f81c7d 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -866,6 +866,7 @@ elif test ! -z \"$PKG_CONFIG\"; then\n \t\t[\n \t\t\tPROJ_CPPFLAGS=\"$PROJ_CFLAGS\"\n \t\t\tPROJ_LDFLAGS=\"$PROJ_LIBS\"\n+\t\t\tPOSTGIS_PROJ_VERSION=`$PKG_CONFIG proj --modversion | sed 's/\\([[0-9]]\\).*\\([[0-9]]\\).*\\([[0-9]]\\)/\\1\\2/'`\n \t\t],\n \t\t[\n \t\t\tPROJ_LDFLAGS=\"-lproj\"\n@@ -887,8 +888,10 @@ AC_CHECK_HEADER([proj_api.h],\n \t\t)]\n \t)\n \n-dnl Return the PROJ.4 version number\n-AC_PROJ_VERSION([POSTGIS_PROJ_VERSION])\n+dnl Return the PROJ.4 version number if not detected by pkg-config\n+if test \"x$POSTGIS_PROJ_VERSION\" = \"x\"; then\n+\tAC_PROJ_VERSION([POSTGIS_PROJ_VERSION])\n+fi\n AC_DEFINE_UNQUOTED([POSTGIS_PROJ_VERSION], [$POSTGIS_PROJ_VERSION], [PROJ library version])\n AC_SUBST([POSTGIS_PROJ_VERSION])\n CPPFLAGS=\"$CPPFLAGS_SAVE\"\n-- \n2.30.0\n\n"
  },
  {
    "path": "package/postgis/0005-configure.ac-fix-cross-compilation-with-protobuf-c.patch",
    "content": "From 8b80c4bd848ff3d71b998dc8a4bd42627ed72581 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 17 Apr 2021 11:58:19 +0200\nSubject: [PATCH] configure.ac: fix cross-compilation with protobuf-c\n\nTry to retrieve the version from pkg-config to avoid the following\nerror:\n\nchecking protobuf-c version... configure: error: in `/home/fabrice/buildroot/output/build/postgis-3.1.1':\nconfigure: error: cannot run test program while cross compiling\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/postgis/postgis/commit/8b80c4bd848ff3d71b998dc8a4bd42627ed72581]\n---\n configure.ac | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 48ba070a40..df75fe6601 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1004,6 +1004,7 @@ if test \"$CHECK_PROTOBUF\" != \"no\"; then\n \t\tPKG_CHECK_MODULES([PROTOBUFC], [libprotobuf-c >= 1.1.0], [\n \t\t\t\tPROTOBUF_CPPFLAGS=\"$PROTOBUFC_CFLAGS\";\n \t\t\t\tPROTOBUF_LDFLAGS=\"$PROTOBUFC_LIBS\";\n+\t\t\t\tPROTOC_VERSION=`$PKG_CONFIG libprotobuf-c --modversion | sed 's/\\([[0-9]]\\).*\\([[0-9]]\\).*\\([[0-9]]\\)/\\100\\200\\3/'`\n \t\t\t], [\n \t\t\t\tAC_MSG_RESULT([libprotobuf-c not found in pkg-config])\n \t\t\t])\n@@ -1054,7 +1055,10 @@ if test \"$CHECK_PROTOBUF\" != \"no\"; then\n \t\t[])\n \n \tAC_MSG_CHECKING([protobuf-c version])\n-\tAC_PROTOBUFC_VERSION([PROTOC_VERSION])\n+\tdnl Return the protobuf-c version number if not detected by pkg-config\n+\tif test \"x$PROTOC_VERSION\" = \"x\"; then\n+\t\tAC_PROTOBUFC_VERSION([PROTOC_VERSION])\n+\tfi\n         if test ! \"$PROTOC_VERSION\" -ge 1001000; then\n                 AC_MSG_ERROR(\"Old protobuf-c release found but 1.1.0 is required. You can disable MVT and Geobuf support using --without-protobuf\")\n         fi\n"
  },
  {
    "path": "package/postgis/Config.in",
    "content": "config BR2_PACKAGE_POSTGIS\n\tbool \"postgis\"\n\tdepends on BR2_PACKAGE_POSTGRESQL_FULL\n\tdepends on !BR2_microblazeel && !BR2_microblazebe # ICE\n\tdepends on BR2_INSTALL_LIBSTDCPP # proj\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11, proj\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # proj\n\tdepends on BR2_USE_WCHAR # libgeos, proj\n\tdepends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_21464 # libgeos\n\tdepends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597 # libgeos\n\tselect BR2_PACKAGE_LIBGEOS\n\tselect BR2_PACKAGE_PROJ\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  PostGIS is a spatial database extender for PostgreSQL\n\t  object-relational database. It adds support for\n\t  geographic objects allowing location queries\n\t  to be run in SQL.\n\n\t  https://postgis.net/\n\ncomment \"postgis needs a toolchain w/ C++, threads, wchar, gcc >= 4.7, not binutils bug 21464, 27597\"\n\tdepends on !BR2_microblazeel && !BR2_microblazebe # ICE\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \\\n\t\tBR2_TOOLCHAIN_HAS_BINUTILS_BUG_21464 || \\\n\t\tBR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597\n"
  },
  {
    "path": "package/postgis/postgis.hash",
    "content": "# Locally calculated\nsha256  dc8e3fe8bc532e422f5d724c5a7c437f6555511716f6410d4d2db9762e1a3796  postgis-3.1.4.tar.gz\nsha256  55b69f22e1752830dd565852dc7ff242daf289dbd3a6bfede5db43f90d2e28c9  LICENSE.TXT\n"
  },
  {
    "path": "package/postgis/postgis.mk",
    "content": "################################################################################\n#\n# postgis\n#\n################################################################################\n\nPOSTGIS_VERSION = 3.1.4\nPOSTGIS_SITE = https://download.osgeo.org/postgis/source\n# parallel build issues\nPOSTGIS_MAKE = $(MAKE1)\nPOSTGIS_LICENSE = GPL-2.0+ (PostGIS), BSD-2-Clause, MIT, Apache-2.0, ISC, BSL-1.0, CC-BY-SA-3.0\nPOSTGIS_LICENSE_FILES = LICENSE.TXT\nPOSTGIS_CPE_ID_VENDOR = postgis\n# configure.ac is patched so need to run autoreconf\nPOSTGIS_AUTORECONF = YES\n\nPOSTGIS_DEPENDENCIES = postgresql libgeos proj libxml2\n\nPOSTGIS_CONF_OPTS += \\\n\t--with-pgconfig=$(STAGING_DIR)/usr/bin/pg_config \\\n\t--with-geosconfig=$(STAGING_DIR)/usr/bin/geos-config \\\n\t--with-xml2config=$(STAGING_DIR)/usr/bin/xml2-config\n\nifeq ($(BR2_PACKAGE_LIBGDAL),y)\nPOSTGIS_DEPENDENCIES += libgdal\nPOSTGIS_CONF_OPTS += --with-raster\nelse\nPOSTGIS_CONF_OPTS += --without-raster\nendif\n\nifeq ($(BR2_PACKAGE_JSON_C),y)\nPOSTGIS_DEPENDENCIES += json-c\nPOSTGIS_CONF_OPTS += --with-json\nelse\nPOSTGIS_CONF_OPTS += --without-json\nendif\n\nifeq ($(BR2_PACKAGE_PCRE),y)\nPOSTGIS_DEPENDENCIES += pcre\nendif\n\nifeq ($(BR2_PACKAGE_PROTOBUF_C),y)\nPOSTGIS_DEPENDENCIES += protobuf-c\nPOSTGIS_CONF_OPTS += --with-protobuf\nelse\nPOSTGIS_CONF_OPTS += --without-protobuf\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/postgresql/Config.in",
    "content": "config BR2_PACKAGE_POSTGRESQL\n\tbool \"postgresql\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR\n\t# fails to build in a pure static linking scenario, and\n\t# postgresql is unlikely to be used in a pure statically\n\t# linked environment.\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_CAST if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  PostgreSQL is a powerful, open source object-relational\n\t  database system.\n\n\t  Enable the readline package to gain readline support in\n\t  psql (the command line interpreter), which offers\n\t  command history and edit functions.\n\n\t  Enable the zlib package to gain builtin compression for\n\t  archives with pg_dump and pg_restore.\n\n\t  http://www.postgresql.org\n\nif BR2_PACKAGE_POSTGRESQL\n\nconfig BR2_PACKAGE_POSTGRESQL_FULL\n\tbool \"postgresql-full\"\n\thelp\n\t  Build PostgreSQL, contrib, and documentation.\n\nendif\n\ncomment \"postgresql needs a toolchain w/ dynamic library, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/postgresql/S50postgresql",
    "content": "#!/bin/sh\n#\n# start postgresql\n#\n\numask 077\n\nif [ ! -f /var/lib/pgsql/PG_VERSION ]; then\n\techo \"Initializing postgresql data base...\"\n\tsu - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql'\n\techo \"done\"\nfi\n\nstart() {\n\tprintf \"Starting postgresql: \"\n\tsu - postgres -c '/usr/bin/pg_ctl start -w -D /var/lib/pgsql -l logfile'\n\techo \"OK\"\n}\nstop() {\n\tprintf \"Stopping postgresql: \"\n\tsu - postgres -c '/usr/bin/pg_ctl stop -D /var/lib/pgsql -m fast'\n\techo \"OK\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t\t;;\n\tstop)\n\t\tstop\n\t\t;;\n\trestart|reload)\n\t\trestart\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/postgresql/pg_config",
    "content": "#!/bin/sh\n\n#\n# Minimal pg_config implementation as replacement for the native pg_config application\n#\n\nprefix=/usr\n\ncase \"$1\" in\n  --includedir)\n\techo \"$prefix/include\"\n\t;;\n  --pkgincludedir)\n\techo \"$prefix/include/postgresql\"\n\t;;\n  --includedir-server)\n\techo \"$prefix/include/postgresql/server\"\n\t;;\n  --libdir)\n\techo \"$prefix/lib\"\n\t;;\n  --version)\n\techo \"PostgreSQL @POSTGRESQL_VERSION@\"\n\t;;\n  --configure)\n\techo \"@POSTGRESQL_CONF_OPTIONS@\"\n\t;;\n  --pgxs)\n\techo \"$prefix/lib/postgresql/pgxs/src/makefiles/pgxs.mk\"\n\t;;\n  --cflags)\n\techo \"@TARGET_CFLAGS@\"\n\t;;\n  --cflags_sl)\n\t# defined at src/template/linux\n\techo \"-fPIC\"\n\t;;\n  --cc)\n\techo \"@TARGET_CC@\"\n\t;;\n  --pkglibdir)\n\techo \"/usr/lib/postgresql\"\n\t;;\n  --bindir)\n\techo \"/usr/bin\"\n\t;;\n  --sharedir)\n\techo \"/usr/share/postgresql\"\n\t;;\n  --localedir)\n\techo \"/usr/share/locale\"\n\t;;\n  --docdir)\n\techo \"/usr/share/doc/postgresql\"\n\t;;\n  --mandir)\n\techo \"/usr/share/man\"\n\t;;\n  *)\n\techo \"Usage: $0 {OPTION}\"\n\techo\n\techo \"Options:\"\n\techo\n\techo \"\t--includedir\t\tshow location of C header files of the client interfaces\"\n\techo \"\t--pkgincludedir\t\tshow location of other C header files\"\n\techo \"\t--includedir-server\tshow location of C header files for the server\"\n\techo \"\t--libdir\t\tshow location of object code libraries\"\n\techo \"\t--version\t\tshow the PostgreSQL version\"\n\techo \"\t--configure\t\tshow options given to configure script\"\n\techo \"\t--pgxs\t\t\tshow location of extension makefile\"\n\techo \"\t--cflags\t\tshow CFLAGS value used when PostgreSQL was built\"\n\techo \"\t--cc\t\t\tshow CC value used when PostgreSQL was built\"\n\techo \"\t--pkglibdir\t\tshow location of dynamically loadable modules\"\n\techo \"\t--bindir\t\tshow location of user executables\"\n\techo \"\t--sharedir\t\tshow location of architecture-independent support files\"\n\techo \"\t--localedir\t\tshow location of locale support files\"\n\techo \"\t--docdir\t\tshow location of documentation files\"\n\techo \"\t--mandir\t\tshow location of manual pages\"\nesac\n"
  },
  {
    "path": "package/postgresql/postgresql.hash",
    "content": "# From https://ftp.postgresql.org/pub/source/v13.5/postgresql-13.5.tar.bz2.sha256\nsha256  9b81067a55edbaabc418aacef457dd8477642827499560b00615a6ea6c13f6b3  postgresql-13.5.tar.bz2\n\n# License file, Locally calculated\nsha256  31ccadc0a70e8e0e8a35c5833567b64388dfe34987d962e1911554e271294105  COPYRIGHT\n"
  },
  {
    "path": "package/postgresql/postgresql.mk",
    "content": "################################################################################\n#\n# postgresql\n#\n################################################################################\n\nPOSTGRESQL_VERSION = 13.5\nPOSTGRESQL_SOURCE = postgresql-$(POSTGRESQL_VERSION).tar.bz2\nPOSTGRESQL_SITE = https://ftp.postgresql.org/pub/source/v$(POSTGRESQL_VERSION)\nPOSTGRESQL_LICENSE = PostgreSQL\nPOSTGRESQL_LICENSE_FILES = COPYRIGHT\nPOSTGRESQL_CPE_ID_VENDOR = postgresql\nPOSTGRESQL_SELINUX_MODULES = postgresql\nPOSTGRESQL_INSTALL_STAGING = YES\nPOSTGRESQL_CONFIG_SCRIPTS = pg_config\nPOSTGRESQL_CONF_ENV = \\\n\tac_cv_type_struct_sockaddr_in6=yes \\\n\tLIBS=$(TARGET_NLS_LIBS)\nPOSTGRESQL_CONF_OPTS = --disable-rpath\nPOSTGRESQL_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\n\n# https://www.postgresql.org/docs/11/static/install-procedure.html:\n# \"If you want to invoke the build from another makefile rather than\n# manually, you must unset MAKELEVEL or set it to zero\"\nPOSTGRESQL_MAKE_OPTS = MAKELEVEL=0\n\nifeq ($(BR2_PACKAGE_POSTGRESQL_FULL),y)\nPOSTGRESQL_MAKE_OPTS += world\nPOSTGRESQL_INSTALL_TARGET_OPTS += DESTDIR=$(TARGET_DIR) install-world\nPOSTGRESQL_INSTALL_STAGING_OPTS += DESTDIR=$(STAGING_DIR) install-world\nendif\n\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\n# PostgreSQL does not build against uClibc with locales\n# enabled, due to an uClibc bug, see\n# http://lists.uclibc.org/pipermail/uclibc/2014-April/048326.html\n# so overwrite automatic detection and disable locale support\nPOSTGRESQL_CONF_ENV += pgac_cv_type_locale_t=no\nendif\n\nifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nPOSTGRESQL_CONF_OPTS += --disable-thread-safety\nendif\n\nifeq ($(BR2_arcle)$(BR2_arceb)$(BR2_microblazeel)$(BR2_microblazebe)$(BR2_or1k)$(BR2_nios2)$(BR2_riscv)$(BR2_xtensa)$(BR2_nds32),y)\nPOSTGRESQL_CONF_OPTS += --disable-spinlocks\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nPOSTGRESQL_DEPENDENCIES += readline\nelse\nPOSTGRESQL_CONF_OPTS += --without-readline\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nPOSTGRESQL_DEPENDENCIES += zlib\nelse\nPOSTGRESQL_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_TZDATA),y)\nPOSTGRESQL_DEPENDENCIES += tzdata\nPOSTGRESQL_CONF_OPTS += --with-system-tzdata=/usr/share/zoneinfo\nelse\nPOSTGRESQL_DEPENDENCIES += host-zic\nPOSTGRESQL_CONF_ENV += ZIC=\"$(ZIC)\"\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nPOSTGRESQL_DEPENDENCIES += openssl\nPOSTGRESQL_CONF_OPTS += --with-openssl\nelse\n# PostgreSQL checks for /dev/urandom and fails if it's being cross-compiled and\n# an SSL library isn't found. Since /dev/urandom is guaranteed to be provided\n# on Linux systems, explicitly tell the configure script it's available.\nPOSTGRESQL_CONF_ENV += ac_cv_file__dev_urandom=yes\nendif\n\nifeq ($(BR2_PACKAGE_OPENLDAP),y)\nPOSTGRESQL_DEPENDENCIES += openldap\nPOSTGRESQL_CONF_OPTS += --with-ldap\nelse\nPOSTGRESQL_CONF_OPTS += --without-ldap\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nPOSTGRESQL_DEPENDENCIES += libxml2\nPOSTGRESQL_CONF_OPTS += --with-libxml\nPOSTGRESQL_CONF_ENV += XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config\nelse\nPOSTGRESQL_CONF_OPTS += --without-libxml\nendif\n\n# required for postgresql.service Type=notify\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nPOSTGRESQL_DEPENDENCIES += systemd\nPOSTGRESQL_CONF_OPTS += --with-systemd\nelse\nPOSTGRESQL_CONF_OPTS += --without-systemd\nendif\n\nPOSTGRESQL_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nPOSTGRESQL_CFLAGS += -O0\nendif\n\nPOSTGRESQL_CONF_ENV += CFLAGS=\"$(POSTGRESQL_CFLAGS)\"\n\ndefine POSTGRESQL_USERS\n\tpostgres -1 postgres -1 * /var/lib/pgsql /bin/sh - PostgreSQL Server\nendef\n\ndefine POSTGRESQL_INSTALL_TARGET_FIXUP\n\t$(INSTALL) -dm 0700 $(TARGET_DIR)/var/lib/pgsql\n\t$(RM) -rf $(TARGET_DIR)/usr/lib/postgresql/pgxs\nendef\n\nPOSTGRESQL_POST_INSTALL_TARGET_HOOKS += POSTGRESQL_INSTALL_TARGET_FIXUP\n\ndefine POSTGRESQL_INSTALL_CUSTOM_PG_CONFIG\n\t$(INSTALL) -m 0755 -D package/postgresql/pg_config \\\n\t\t$(STAGING_DIR)/usr/bin/pg_config\n\t$(SED) \"s|@POSTGRESQL_CONF_OPTIONS@|$(POSTGRESQL_CONF_OPTS)|g\" $(STAGING_DIR)/usr/bin/pg_config\n\t$(SED) \"s|@POSTGRESQL_VERSION@|$(POSTGRESQL_VERSION)|g\" $(STAGING_DIR)/usr/bin/pg_config\n\t$(SED) \"s|@TARGET_CFLAGS@|$(TARGET_CFLAGS)|g\" $(STAGING_DIR)/usr/bin/pg_config\n\t$(SED) \"s|@TARGET_CC@|$(TARGET_CC)|g\" $(STAGING_DIR)/usr/bin/pg_config\nendef\n\nPOSTGRESQL_POST_INSTALL_STAGING_HOOKS += POSTGRESQL_INSTALL_CUSTOM_PG_CONFIG\n\ndefine POSTGRESQL_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/postgresql/S50postgresql \\\n\t\t$(TARGET_DIR)/etc/init.d/S50postgresql\nendef\n\ndefine POSTGRESQL_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/postgresql/postgresql.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/postgresql.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/postgresql/postgresql.service",
    "content": "[Unit]\nDescription=PostgreSQL database server\nAfter=network.target\n\n[Service]\nType=notify\n\n# start timeout disabled because initdb may run a little\n# longer (eg. 5 minutes on RaspberryPi)\nTimeoutStartSec=0\n\nUser=postgres\nGroup=postgres\n\nStandardOutput=syslog\nStandardError=syslog\nSyslogIdentifier=postgres\n\nExecStartPre=/bin/sh -c \"if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi\"\nExecStart=/usr/bin/postgres -D /var/lib/pgsql\nExecReload=/usr/bin/kill -HUP $MAINPID\nKillMode=mixed\nKillSignal=SIGINT\nTimeoutSec=0\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/pound/0001-fix-openssl-1.0.2.patch",
    "content": "From eb471de8f26e0367dd08d299d2252fa8b2b958a9 Mon Sep 17 00:00:00 2001\nFrom: Emilio <emilio.campos@zevenet.com>\nDate: Mon, 17 Jul 2017 09:41:32 +0200\nSubject: [PATCH] [Improvement] Added support to compile pound with openssl\n 1.0.2\n\nSigned-off-by: Emilio <emilio.campos@zevenet.com>\n\n\tnew file:   dh2048.h\n\tmodified:   svc.c\n\nPatch was downloaded from 3rd-party repo:\nhttps://github.com/zevenet/pound/commit/eb471de8f26e0367dd08d299d2252fa8b2b958a9\n\nThis repo was announced on upstream mailinglist:\nhttp://www.apsis.ch/pound/pound_list/archive/2017/2017-07/1500287626000#1500287626000\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n dh2048.h | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++\n svc.c    | 33 +++++++++++++++++++++++++++++++++\n 2 files changed, 86 insertions(+)\n create mode 100644 dh2048.h\n\ndiff --git a/dh2048.h b/dh2048.h\nnew file mode 100644\nindex 0000000..79c693c\n--- /dev/null\n+++ b/dh2048.h\n@@ -0,0 +1,53 @@\n+#ifndef HEADER_DH_H\n+# include <openssl/dh.h>\n+#endif\n+\n+DH *get_dh2048()\n+{\n+    static unsigned char dhp_2048[] = {\n+\t0xBF, 0x6C, 0xC6, 0xBD, 0xEA, 0x10, 0x84, 0x59, 0x40, 0xC2, \n+\t0xC6, 0xA2, 0x9B, 0x19, 0xD3, 0x2E, 0x2F, 0xAB, 0xE6, 0xE4, \n+\t0x1E, 0x91, 0x0D, 0x59, 0xDC, 0x96, 0x3F, 0x6E, 0x65, 0x38, \n+\t0xB9, 0xBE, 0xBB, 0x8F, 0xDF, 0x73, 0xAC, 0xAC, 0xB3, 0x2F, \n+\t0xA7, 0x02, 0x0B, 0x87, 0xB7, 0x3F, 0x3A, 0x42, 0x8A, 0x94, \n+\t0xDD, 0xEC, 0x33, 0xA4, 0x25, 0xB1, 0xBF, 0x84, 0x91, 0x87, \n+\t0xD8, 0x1C, 0x42, 0xB9, 0x8E, 0x00, 0x1F, 0x49, 0xED, 0x57, \n+\t0xA4, 0x48, 0xB0, 0xCC, 0xD8, 0xB8, 0x83, 0xCA, 0x3E, 0xDF, \n+\t0xA2, 0xF2, 0x07, 0x71, 0x71, 0x18, 0x1F, 0x50, 0x45, 0x3A, \n+\t0x66, 0x04, 0x7F, 0x15, 0xB2, 0xA8, 0x02, 0x77, 0xCE, 0xC6, \n+\t0xF9, 0x7C, 0x63, 0xE4, 0x52, 0x41, 0xFA, 0x62, 0xB9, 0x0D, \n+\t0xDC, 0x08, 0x62, 0xEC, 0x00, 0xAB, 0xB0, 0xF7, 0x79, 0x48, \n+\t0x75, 0x22, 0x85, 0xCC, 0x67, 0x3C, 0xEA, 0x09, 0x32, 0xAC, \n+\t0x30, 0xED, 0x1E, 0x67, 0xDC, 0x74, 0xF8, 0xD9, 0xC3, 0xD0, \n+\t0xA0, 0x60, 0x4D, 0xCE, 0x52, 0xBC, 0xA3, 0xE5, 0x18, 0x7B, \n+\t0x0B, 0xC8, 0xCE, 0x70, 0xA2, 0xC8, 0x21, 0xCA, 0xCE, 0xA5, \n+\t0xD4, 0xCB, 0x85, 0xFC, 0xC7, 0x07, 0x5C, 0x05, 0x87, 0xFC, \n+\t0x2F, 0x67, 0x4D, 0x2D, 0x4F, 0xA4, 0xEE, 0x63, 0x98, 0x49, \n+\t0xE4, 0x2E, 0xD7, 0x3F, 0x7D, 0x69, 0x68, 0x0A, 0xA2, 0x3E, \n+\t0x5A, 0x04, 0xD4, 0xDD, 0xBB, 0xC7, 0xB4, 0x34, 0xB7, 0x21, \n+\t0xD3, 0xAC, 0x99, 0xD7, 0x87, 0x45, 0x5E, 0x18, 0x68, 0x16, \n+\t0x3A, 0xAF, 0xE2, 0x04, 0x57, 0xB8, 0x6A, 0xB8, 0x2F, 0x75, \n+\t0xD5, 0x79, 0x96, 0x60, 0x8D, 0xD1, 0xCC, 0xD1, 0x33, 0x85, \n+\t0x53, 0x88, 0x87, 0x34, 0xA6, 0x4B, 0x49, 0x24, 0x53, 0xD6, \n+\t0xF1, 0x1E, 0x4E, 0x98, 0x4D, 0x6B, 0x44, 0x31, 0x94, 0xFF, \n+\t0x46, 0xC2, 0x38, 0x2E, 0xEA, 0xBB\n+    };\n+    static unsigned char dhg_2048[] = {\n+\t0x05\n+    };\n+    DH *dh = DH_new();\n+    BIGNUM *dhp_bn, *dhg_bn;\n+\n+    if (dh == NULL)\n+        return NULL;\n+    dhp_bn = BN_bin2bn(dhp_2048, sizeof (dhp_2048), NULL);\n+    dhg_bn = BN_bin2bn(dhg_2048, sizeof (dhg_2048), NULL);\n+    if (dhp_bn == NULL || dhg_bn == NULL\n+            || !DH_set0_pqg(dh, dhp_bn, NULL, dhg_bn)) {\n+        DH_free(dh);\n+        BN_free(dhp_bn);\n+        BN_free(dhg_bn);\n+        return NULL;\n+    }\n+    return dh;\n+}\ndiff --git a/svc.c b/svc.c\nindex 1341397..758dfbd 100644\n--- a/svc.c\n+++ b/svc.c\n@@ -1512,6 +1512,39 @@ do_RSAgen(void)\n     return;\n }\n \n+\n+#if OPENSSL_VERSION_NUMBER < 0x10100000\n+static inline int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)\n+{\n+\t/* If the fields p and g in d are NULL, the corresponding input\n+\t * parameters MUST be non-NULL.  q may remain NULL.\n+\t */\n+\tif ((dh->p == NULL && p == NULL)\n+\t    || (dh->g == NULL && g == NULL))\n+\t\treturn 0;\n+\n+\tif (p != NULL) {\n+\t\tBN_free(dh->p);\n+\t\tdh->p = p;\n+\t}\n+\tif (q != NULL) {\n+\t\tBN_free(dh->q);\n+\t\tdh->q = q;\n+\t}\n+\tif (g != NULL) {\n+\t\tBN_free(dh->g);\n+\t\tdh->g = g;\n+\t}\n+\n+\tif (q != NULL) {\n+\t\tdh->length = BN_num_bits(q);\n+\t}\n+\n+\treturn 1;\n+}\n+#endif\n+\n+\n #include    \"dh512.h\"\n \n #if DH_LEN == 1024\n"
  },
  {
    "path": "package/pound/0002-fix-openssl-1.1.0.patch",
    "content": "From a2c9dde4d055ea8942afb150b7fc3a807d4e5d60 Mon Sep 17 00:00:00 2001\nFrom: Sergey Poznyakoff <gray@gnu.org>\nDate: Wed, 28 Feb 2018 13:44:01 +0000\nSubject: [PATCH] Support for Openssl 1.1\n\nFixes\nhttp://autobuild.buildroot.net/results/ef2/ef2de6c280bf8622a00d4573bc5bd143e3baa002\n\nDownloaded from github fork:\nhttps://github.com/graygnuorg/pound/commit/a2c9dde4d055ea8942afb150b7fc3a807d4e5d60\n\nThis patch was announced on the upstream mailinglist:\nhttp://www.apsis.ch/pound/pound_list/archive/2018/2018-03/1519920322000\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n .gitignore |  15 ++++++++\n config.c   |  17 +++++++--\n http.c     |  12 ++++++-\n pound.h    |   4 ++-\n svc.c      | 101 +++++++++++++++++++++++++++++++++++++++++++----------\n 5 files changed, 125 insertions(+), 24 deletions(-)\n create mode 100644 .gitignore\n\ndiff --git a/config.c b/config.c\nindex d41a3ee..e8fec0f 100644\n--- a/config.c\n+++ b/config.c\n@@ -174,6 +174,16 @@ conf_fgets(char *buf, const int max)\n     }\n }\n \n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+# define general_name_string(n) \\\n+\tstrndup(ASN1_STRING_get0_data(n->d.dNSName),\t\\\n+\t        ASN1_STRING_length(n->d.dNSName) + 1)\n+#else\n+# define general_name_string(n) \\\n+\tstrndup(ASN1_STRING_data(n->d.dNSName),\t\\\n+\t       ASN1_STRING_length(n->d.dNSName) + 1)\n+#endif\n+\n unsigned char **\n get_subjectaltnames(X509 *x509, unsigned int *count)\n {\n@@ -194,8 +204,7 @@ get_subjectaltnames(X509 *x509, unsigned int *count)\n         name = sk_GENERAL_NAME_pop(san_stack);\n         switch(name->type) {\n             case GEN_DNS:\n-                temp[local_count] = strndup(ASN1_STRING_data(name->d.dNSName), ASN1_STRING_length(name->d.dNSName)\n-                                    + 1);\n+ \t        temp[local_count] = general_name_string(name);\n                 if(temp[local_count] == NULL)\n                     conf_err(\"out of memory\");\n                 local_count++;\n@@ -565,7 +574,9 @@ parse_service(const char *svc_name)\n     pthread_mutex_init(&res->mut, NULL);\n     if(svc_name)\n         strncpy(res->name, svc_name, KEY_SIZE);\n-#if OPENSSL_VERSION_NUMBER >= 0x10000000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+    if((res->sessions = lh_TABNODE_new(t_hash, t_cmp)) == NULL)    \n+#elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     if((res->sessions = LHM_lh_new(TABNODE, t)) == NULL)\n #else\n     if((res->sessions = lh_new(LHASH_HASH_FN(t_hash), LHASH_COMP_FN(t_cmp))) == NULL)\ndiff --git a/http.c b/http.c\nindex dd211e4..c8e756a 100644\n--- a/http.c\n+++ b/http.c\n@@ -527,12 +527,22 @@ log_bytes(char *res, const LONG cnt)\n \n /* Cleanup code. This should really be in the pthread_cleanup_push, except for bugs in some implementations */\n \n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+# define clear_error()\n+#elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n+# define clear_error() \\\n+\tif(ssl != NULL) { ERR_clear_error(); ERR_remove_thread_state(NULL); }\n+#else\n+# define clear_error() \\\n+\tif(ssl != NULL) { ERR_clear_error(); ERR_remove_state(0); }\n+#endif\n+\n #define clean_all() {   \\\n     if(ssl != NULL) { BIO_ssl_shutdown(cl); } \\\n     if(be != NULL) { BIO_flush(be); BIO_reset(be); BIO_free_all(be); be = NULL; } \\\n     if(cl != NULL) { BIO_flush(cl); BIO_reset(cl); BIO_free_all(cl); cl = NULL; } \\\n     if(x509 != NULL) { X509_free(x509); x509 = NULL; } \\\n-    if(ssl != NULL) { ERR_clear_error(); ERR_remove_state(0); } \\\n+    clear_error(); \\\n }\n \n /*\ndiff --git a/pound.h b/pound.h\nindex fa22c36..9603b91 100644\n--- a/pound.h\n+++ b/pound.h\n@@ -344,7 +344,9 @@ typedef struct _tn {\n /* maximal session key size */\n #define KEY_SIZE    127\n \n-#if OPENSSL_VERSION_NUMBER >= 0x10000000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+  DEFINE_LHASH_OF(TABNODE);\n+#elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n DECLARE_LHASH_OF(TABNODE);\n #endif\n \ndiff --git a/svc.c b/svc.c\nindex 60ba488..063b92c 100644\n--- a/svc.c\n+++ b/svc.c\n@@ -27,10 +27,17 @@\n \n #include    \"pound.h\"\n \n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+# define TABNODE_GET_DOWN_LOAD(t) lh_TABNODE_get_down_load(t)\n+# define TABNODE_SET_DOWN_LOAD(t,n) lh_TABNODE_set_down_load(t,n)\n+#else\n #ifndef LHASH_OF\n #define LHASH_OF(x) LHASH\n #define CHECKED_LHASH_OF(type, h) h\n #endif\n+# define TABNODE_GET_DOWN_LOAD(t) (CHECKED_LHASH_OF(TABNODE, t)->down_load)\n+# define TABNODE_SET_DOWN_LOAD(t,n) (CHECKED_LHASH_OF(TABNODE, t)->down_load = n)\n+#endif\n \n /*\n  * Add a new key/content pair to a hash table\n@@ -58,7 +65,9 @@ t_add(LHASH_OF(TABNODE) *const tab, const char *key, const void *content, const\n     }\n     memcpy(t->content, content, cont_len);\n     t->last_acc = time(NULL);\n-#if OPENSSL_VERSION_NUMBER >= 0x10000000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+    if((old = lh_TABNODE_insert(tab, t)) != NULL) {\n+#elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     if((old = LHM_lh_insert(TABNODE, tab, t)) != NULL) {\n #else\n     if((old = (TABNODE *)lh_insert(tab, t)) != NULL) {\n@@ -82,7 +91,9 @@ t_find(LHASH_OF(TABNODE) *const tab, char *const key)\n     TABNODE t, *res;\n \n     t.key = key;\n-#if OPENSSL_VERSION_NUMBER >= 0x10000000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+    if((res = lh_TABNODE_retrieve(tab, &t)) != NULL) {\n+#elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     if((res = (TABNODE *)LHM_lh_retrieve(TABNODE, tab, &t)) != NULL) {\n #else\n     if((res = (TABNODE *)lh_retrieve(tab, &t)) != NULL) {\n@@ -102,7 +113,9 @@ t_remove(LHASH_OF(TABNODE) *const tab, char *const key)\n     TABNODE t, *res;\n \n     t.key = key;\n-#if OPENSSL_VERSION_NUMBER >= 0x10000000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+    if((res = lh_TABNODE_delete(tab, &t)) != NULL) {    \n+#elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     if((res = LHM_lh_delete(TABNODE, tab, &t)) != NULL) {\n #else\n     if((res = (TABNODE *)lh_delete(tab, &t)) != NULL) {\n@@ -127,7 +140,9 @@ t_old_doall_arg(TABNODE *t, ALL_ARG *a)\n     TABNODE *res;\n \n     if(t->last_acc < a->lim)\n-#if OPENSSL_VERSION_NUMBER >= 0x10000000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+        if((res = lh_TABNODE_delete(a->tab, t)) != NULL) {\t    \n+#elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n         if((res = LHM_lh_delete(TABNODE, a->tab, t)) != NULL) {\n #else\n         if((res = lh_delete(a->tab, t)) != NULL) {\n@@ -145,6 +160,10 @@ IMPLEMENT_LHASH_DOALL_ARG_FN(t_old, TABNODE, ALL_ARG)\n IMPLEMENT_LHASH_DOALL_ARG_FN(t_old, TABNODE *, ALL_ARG *)\n #endif\n \n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+IMPLEMENT_LHASH_DOALL_ARG(TABNODE,ALL_ARG);\n+#endif\n+\n /*\n  * Expire all old nodes\n  */\n@@ -156,14 +175,16 @@ t_expire(LHASH_OF(TABNODE) *const tab, const time_t lim)\n \n     a.tab = tab;\n     a.lim = lim;\n-    down_load = CHECKED_LHASH_OF(TABNODE, tab)->down_load;\n-    CHECKED_LHASH_OF(TABNODE, tab)->down_load = 0;\n-#if OPENSSL_VERSION_NUMBER >= 0x10000000L\n+    down_load = TABNODE_GET_DOWN_LOAD(tab);\n+    TABNODE_SET_DOWN_LOAD(tab, 0);\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+    lh_TABNODE_doall_ALL_ARG(tab, t_old_doall_arg, &a);\n+#elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     LHM_lh_doall_arg(TABNODE, tab, LHASH_DOALL_ARG_FN(t_old), ALL_ARG, &a);\n #else\n     lh_doall_arg(tab, LHASH_DOALL_ARG_FN(t_old), &a);\n #endif\n-    CHECKED_LHASH_OF(TABNODE, tab)->down_load = down_load;\n+    TABNODE_SET_DOWN_LOAD(tab, down_load);\n     return;\n }\n \n@@ -173,7 +194,9 @@ t_cont_doall_arg(TABNODE *t, ALL_ARG *arg)\n     TABNODE *res;\n \n     if(memcmp(t->content, arg->content, arg->cont_len) == 0)\n-#if OPENSSL_VERSION_NUMBER >= 0x10000000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+        if((res = lh_TABNODE_delete(arg->tab, t)) != NULL) {\n+#elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n         if((res = LHM_lh_delete(TABNODE, arg->tab, t)) != NULL) {\n #else\n         if((res = lh_delete(arg->tab, t)) != NULL) {\n@@ -203,15 +226,16 @@ t_clean(LHASH_OF(TABNODE) *const tab, void *const content, const size_t cont_len\n     a.tab = tab;\n     a.content = content;\n     a.cont_len = cont_len;\n-    down_load = CHECKED_LHASH_OF(TABNODE, tab)->down_load;\n-    CHECKED_LHASH_OF(TABNODE, tab)->down_load = 0;\n-#if OPENSSL_VERSION_NUMBER >= 0x10000000L\n+    down_load = TABNODE_GET_DOWN_LOAD(tab);\n+    TABNODE_SET_DOWN_LOAD(tab, 0);\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+    lh_TABNODE_doall_ALL_ARG(tab, t_cont_doall_arg, &a);\n+#elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     LHM_lh_doall_arg(TABNODE, tab, LHASH_DOALL_ARG_FN(t_cont), ALL_ARG, &a);\n #else\n     lh_doall_arg(tab, LHASH_DOALL_ARG_FN(t_cont), &a);\n #endif\n-    CHECKED_LHASH_OF(TABNODE, tab)->down_load = down_load;\n-    return;\n+    TABNODE_SET_DOWN_LOAD(tab, down_load);\n }\n \n /*\n@@ -1262,6 +1286,31 @@ RSA_tmp_callback(/* not used */SSL *ssl, /* not used */int is_export, int keylen\n     return res;\n }\n \n+static int\n+generate_key(RSA **ret_rsa, unsigned long bits)\n+{\n+#if OPENSSL_VERSION_NUMBER > 0x00908000L\n+    int rc = 0;\n+    RSA *rsa;\n+\n+    rsa = RSA_new();\n+    if (rsa) {\n+\tBIGNUM *bne = BN_new();\n+\tif (BN_set_word(bne, RSA_F4))\n+\t    rc = RSA_generate_key_ex(rsa, bits, bne, NULL);\n+\tBN_free(bne);\n+\tif (rc)\n+\t    *ret_rsa = rsa;\n+\telse\n+\t    RSA_free(rsa);\n+    }\n+    return rc;\n+#else\n+    *ret_rsa = RSA_generate_key(bits, RSA_F4, NULL, NULL);\n+    return *ret_rsa != NULL;\n+#endif\n+}\n+\n /*\n  * Periodically regenerate ephemeral RSA keys\n  * runs every T_RSA_KEYS seconds\n@@ -1274,8 +1323,9 @@ do_RSAgen(void)\n     RSA *t_RSA1024_keys[N_RSA_KEYS];\n \n     for(n = 0; n < N_RSA_KEYS; n++) {\n-        t_RSA512_keys[n] = RSA_generate_key(512, RSA_F4, NULL, NULL);\n-        t_RSA1024_keys[n] = RSA_generate_key(1024, RSA_F4, NULL, NULL);\n+        /* FIXME: Error handling */\n+        generate_key(&t_RSA512_keys[n], 512);\n+\tgenerate_key(&t_RSA1024_keys[n], 1024);\n     }\n     if(ret_val = pthread_mutex_lock(&RSA_mut))\n         logmsg(LOG_WARNING, \"thr_RSAgen() lock: %s\", strerror(ret_val));\n@@ -1329,11 +1379,11 @@ init_timer(void)\n      * Pre-generate ephemeral RSA keys\n      */\n     for(n = 0; n < N_RSA_KEYS; n++) {\n-        if((RSA512_keys[n] = RSA_generate_key(512, RSA_F4, NULL, NULL)) == NULL) {\n+        if(!generate_key(&RSA512_keys[n], 512)) {\n             logmsg(LOG_WARNING,\"RSA_generate(%d, 512) failed\", n);\n             return;\n         }\n-        if((RSA1024_keys[n] = RSA_generate_key(1024, RSA_F4, NULL, NULL)) == NULL) {\n+        if(!generate_key(&RSA1024_keys[n], 1024)) {\n             logmsg(LOG_WARNING,\"RSA_generate(%d, 1024) failed\", n);\n             return;\n         }\n@@ -1420,6 +1470,10 @@ IMPLEMENT_LHASH_DOALL_ARG_FN(t_dump, TABNODE, DUMP_ARG)\n IMPLEMENT_LHASH_DOALL_ARG_FN(t_dump, TABNODE *, DUMP_ARG *)\n #endif\n \n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+IMPLEMENT_LHASH_DOALL_ARG(TABNODE,DUMP_ARG);\n+#endif\n+\t\n /*\n  * write sessions to the control socket\n  */\n@@ -1430,7 +1484,9 @@ dump_sess(const int control_sock, LHASH_OF(TABNODE) *const sess, BACKEND *const\n \n     a.control_sock = control_sock;\n     a.backends = backends;\n-#if OPENSSL_VERSION_NUMBER >= 0x10000000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+    lh_TABNODE_doall_DUMP_ARG(sess, t_dump_doall_arg, &a);\n+#elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     LHM_lh_doall_arg(TABNODE, sess, LHASH_DOALL_ARG_FN(t_dump), DUMP_ARG, &a);\n #else\n     lh_doall_arg(sess, LHASH_DOALL_ARG_FN(t_dump), &a);\n@@ -1664,6 +1720,13 @@ thr_control(void *arg)\n     }\n }\n \n+#ifndef SSL3_ST_SR_CLNT_HELLO_A\n+# define SSL3_ST_SR_CLNT_HELLO_A (0x110|SSL_ST_ACCEPT)\n+#endif\n+#ifndef SSL23_ST_SR_CLNT_HELLO_A\n+# define SSL23_ST_SR_CLNT_HELLO_A (0x210|SSL_ST_ACCEPT)\n+#endif\n+\t\t\n void\n SSLINFO_callback(const SSL *ssl, int where, int rc)\n {\n"
  },
  {
    "path": "package/pound/0003-Support-for-libressl-coexisting-with-openssl-1.1.x.patch",
    "content": "From 145b88d0c1a71ba6f4d216768388e0c5853d3990 Mon Sep 17 00:00:00 2001\nFrom: Matt Weber <matthew.weber@rockwellcollins.com>\nDate: Tue, 5 Feb 2019 10:34:55 -0600\nSubject: [PATCH] Support for libressl coexisting with openssl 1.1.x\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nlibressl needs to not follow the 1.1.x path of APIs\n\nResolves build failure like\nIn file included from svc.c:28:0:\npound.h:348:3: warning: data definition has no type or storage class\n   DEFINE_LHASH_OF(TABNODE);\n   ^~~~~~~~~~~~~~~\npound.h:348:3: warning: type defaults to ‘int’ in declaration of ‘DEFINE_LHASH_OF’ [-Wimplicit-int]\nsvc.c: In function ‘t_add’:\nsvc.c:69:15: warning: implicit declaration of function ‘lh_TABNODE_insert’; did you mean ‘lh_OBJ_NAME_insert’? [-Wimplicit-function-declaration]\n     if((old = lh_TABNODE_insert(tab, t)) != NULL) {\n               ^~~~~~~~~~~~~~~~~\n               lh_OBJ_NAME_insert\n\nUpstream: Site was down when I tried (http://www.apsis.ch/pound)\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n config.c |  2 +-\n svc.c    | 20 ++++++++++----------\n 2 files changed, 11 insertions(+), 11 deletions(-)\n\ndiff --git a/config.c b/config.c\nindex 58b928e..3ad7fbb 100644\n--- a/config.c\n+++ b/config.c\n@@ -574,7 +574,7 @@ parse_service(const char *svc_name)\n     pthread_mutex_init(&res->mut, NULL);\n     if(svc_name)\n         strncpy(res->name, svc_name, KEY_SIZE);\n-#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined LIBRESSL_VERSION_NUMBER\n     if((res->sessions = lh_TABNODE_new(t_hash, t_cmp)) == NULL)    \n #elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     if((res->sessions = LHM_lh_new(TABNODE, t)) == NULL)\ndiff --git a/svc.c b/svc.c\nindex f125be4..8a2f62c 100644\n--- a/svc.c\n+++ b/svc.c\n@@ -27,7 +27,7 @@\n \n #include    \"pound.h\"\n \n-#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined LIBRESSL_VERSION_NUMBER\n # define TABNODE_GET_DOWN_LOAD(t) lh_TABNODE_get_down_load(t)\n # define TABNODE_SET_DOWN_LOAD(t,n) lh_TABNODE_set_down_load(t,n)\n #else\n@@ -65,7 +65,7 @@ t_add(LHASH_OF(TABNODE) *const tab, const char *key, const void *content, const\n     }\n     memcpy(t->content, content, cont_len);\n     t->last_acc = time(NULL);\n-#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined LIBRESSL_VERSION_NUMBER\n     if((old = lh_TABNODE_insert(tab, t)) != NULL) {\n #elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     if((old = LHM_lh_insert(TABNODE, tab, t)) != NULL) {\n@@ -91,7 +91,7 @@ t_find(LHASH_OF(TABNODE) *const tab, char *const key)\n     TABNODE t, *res;\n \n     t.key = key;\n-#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined LIBRESSL_VERSION_NUMBER\n     if((res = lh_TABNODE_retrieve(tab, &t)) != NULL) {\n #elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     if((res = (TABNODE *)LHM_lh_retrieve(TABNODE, tab, &t)) != NULL) {\n@@ -113,7 +113,7 @@ t_remove(LHASH_OF(TABNODE) *const tab, char *const key)\n     TABNODE t, *res;\n \n     t.key = key;\n-#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined LIBRESSL_VERSION_NUMBER\n     if((res = lh_TABNODE_delete(tab, &t)) != NULL) {    \n #elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     if((res = LHM_lh_delete(TABNODE, tab, &t)) != NULL) {\n@@ -140,7 +140,7 @@ t_old_doall_arg(TABNODE *t, ALL_ARG *a)\n     TABNODE *res;\n \n     if(t->last_acc < a->lim)\n-#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined LIBRESSL_VERSION_NUMBER\n         if((res = lh_TABNODE_delete(a->tab, t)) != NULL) {\t    \n #elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n         if((res = LHM_lh_delete(TABNODE, a->tab, t)) != NULL) {\n@@ -160,7 +160,7 @@ IMPLEMENT_LHASH_DOALL_ARG_FN(t_old, TABNODE, ALL_ARG)\n IMPLEMENT_LHASH_DOALL_ARG_FN(t_old, TABNODE *, ALL_ARG *)\n #endif\n \n-#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined LIBRESSL_VERSION_NUMBER\n IMPLEMENT_LHASH_DOALL_ARG(TABNODE,ALL_ARG);\n #endif\n \n@@ -177,7 +177,7 @@ t_expire(LHASH_OF(TABNODE) *const tab, const time_t lim)\n     a.lim = lim;\n     down_load = TABNODE_GET_DOWN_LOAD(tab);\n     TABNODE_SET_DOWN_LOAD(tab, 0);\n-#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined LIBRESSL_VERSION_NUMBER\n     lh_TABNODE_doall_ALL_ARG(tab, t_old_doall_arg, &a);\n #elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     LHM_lh_doall_arg(TABNODE, tab, LHASH_DOALL_ARG_FN(t_old), ALL_ARG, &a);\n@@ -194,7 +194,7 @@ t_cont_doall_arg(TABNODE *t, ALL_ARG *arg)\n     TABNODE *res;\n \n     if(memcmp(t->content, arg->content, arg->cont_len) == 0)\n-#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined LIBRESSL_VERSION_NUMBER\n         if((res = lh_TABNODE_delete(arg->tab, t)) != NULL) {\n #elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n         if((res = LHM_lh_delete(TABNODE, arg->tab, t)) != NULL) {\n@@ -228,7 +228,7 @@ t_clean(LHASH_OF(TABNODE) *const tab, void *const content, const size_t cont_len\n     a.cont_len = cont_len;\n     down_load = TABNODE_GET_DOWN_LOAD(tab);\n     TABNODE_SET_DOWN_LOAD(tab, 0);\n-#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined LIBRESSL_VERSION_NUMBER\n     lh_TABNODE_doall_ALL_ARG(tab, t_cont_doall_arg, &a);\n #elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     LHM_lh_doall_arg(TABNODE, tab, LHASH_DOALL_ARG_FN(t_cont), ALL_ARG, &a);\n@@ -1514,7 +1514,7 @@ dump_sess(const int control_sock, LHASH_OF(TABNODE) *const sess, BACKEND *const\n \n     a.control_sock = control_sock;\n     a.backends = backends;\n-#if OPENSSL_VERSION_NUMBER >= 0x10100000L\n+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined LIBRESSL_VERSION_NUMBER\n     lh_TABNODE_doall_DUMP_ARG(sess, t_dump_doall_arg, &a);\n #elif OPENSSL_VERSION_NUMBER >= 0x10000000L\n     LHM_lh_doall_arg(TABNODE, sess, LHASH_DOALL_ARG_FN(t_dump), DUMP_ARG, &a);\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/pound/Config.in",
    "content": "config BR2_PACKAGE_POUND\n\tbool \"pound\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  The Pound program is a reverse proxy, load balancer and HTTPS\n\t  front-end for Web server(s). Pound was developed to enable\n\t  distributing the load among several Web-servers and to allow\n\t  for a convenient SSL wrapper for those Web servers that do not\n\t  offer it natively.\n\n\t  http://www.apsis.ch/pound\n\ncomment \"pound needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/pound/pound.hash",
    "content": "# Locally computed\nsha256 a7fd8690de0fd390615e79fd0f4bfd56a544b8ef97dd6659c07ecd3207480c25  Pound-2.8.tgz\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  GPL.txt\n"
  },
  {
    "path": "package/pound/pound.mk",
    "content": "################################################################################\n#\n# pound\n#\n################################################################################\n\nPOUND_VERSION = 2.8\nPOUND_SITE = http://www.apsis.ch/pound\nPOUND_SOURCE = Pound-$(POUND_VERSION).tgz\nPOUND_LICENSE = GPL-3.0+\nPOUND_LICENSE_FILES = GPL.txt\nPOUND_DEPENDENCIES = openssl host-openssl\n\n# Force owner/group to us, otherwise it will try proxy:proxy by\n# default.\nPOUND_CONF_OPTS = \\\n\t--with-owner=$(shell id -un) \\\n\t--with-group=$(shell id -gn)\n\nifeq ($(BR2_PACKAGE_PCRE),y)\nPOUND_DEPENDENCIES += pcre\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/powerpc-utils/Config.in",
    "content": "comment \"powerpc-utils tools needs a toolchain w/ dynamic library\"\n\tdepends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_POWERPC_UTILS\n\tbool \"powerpc-utils\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  System utilities for PowerPC machines.\n\n\t  https://github.com/ibm-power-utilities/powerpc-utils.git\n\nif BR2_PACKAGE_POWERPC_UTILS\n\nconfig BR2_PACKAGE_POWERPC_UTILS_RTAS\n\tbool \"RTAS support\"\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tselect BR2_PACKAGE_LIBRTAS\n\thelp\n\t  Enable support for functions that require RTAS.\n\n\t  This adds a dependency on librtas and provides the following\n\t  additional features at the cost of increasing the installed\n\t  package size from about 0.5MB to about 2MB:\n\t  ppc64_cpu --run-mode, uesensor, set_poweron_time, drmgr,\n\t  lsslot, activate_firmware, rtas_ibm_get_vpd, serv_config,\n\t  rtas_event_decode, sys_ident.\n\ncomment \"RTAS support needs a glibc toolchain\"\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n\nendif\n"
  },
  {
    "path": "package/powerpc-utils/powerpc-utils.hash",
    "content": "# Locally calculated\nsha256  4e3a21419863c08adde49f0795eff0fbfe4597ce82593fa5fe1f1177913fb7b9  powerpc-utils-1.3.8.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/powerpc-utils/powerpc-utils.mk",
    "content": "################################################################################\n#\n# powerpc-utils\n#\n################################################################################\n\nPOWERPC_UTILS_VERSION = 1.3.8\nPOWERPC_UTILS_SITE = $(call github,ibm-power-utilities,powerpc-utils,v$(POWERPC_UTILS_VERSION))\nPOWERPC_UTILS_DEPENDENCIES = zlib\nPOWERPC_UTILS_AUTORECONF = YES\nPOWERPC_UTILS_LICENSE = GPL-2.0+\nPOWERPC_UTILS_LICENSE_FILES = COPYING\nPOWERPC_UTILS_CPE_ID_VENDOR = powerpc-utils_project\n\nPOWERPC_UTILS_CONF_ENV = \\\n\tax_cv_check_cflags___fstack_protector_all=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no)\nPOWERPC_UTILS_CONF_OPTS = --disable-werror\n\nifeq ($(BR2_PACKAGE_POWERPC_UTILS_RTAS),y)\nPOWERPC_UTILS_DEPENDENCIES += librtas\nPOWERPC_UTILS_CONF_OPTS += --with-librtas\nelse\nPOWERPC_UTILS_CONF_OPTS += --without-librtas\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/powertop/0001-dont-force-stack-smashing-protection.patch",
    "content": "Do not pass -fstack-protector unconditionally\n\nUsing -fstack-protector only works when the toolchain has SSP support.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/src/Makefile.am\n===================================================================\n--- a/src/Makefile.am\n+++ b/src/Makefile.am\n@@ -127,7 +127,6 @@\n \t-Wformat \\\n \t-Wshadow \\\n \t-fno-omit-frame-pointer \\\n-\t-fstack-protector \\\n \t$(GLIB2_CFLAGS) \\\n \t$(LIBNL_CFLAGS) \\\n \t$(NCURSES_CFLAGS) \\\n"
  },
  {
    "path": "package/powertop/Config.in",
    "content": "config BR2_PACKAGE_POWERTOP\n\tbool \"powertop\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_PCIUTILS\n\tselect BR2_PACKAGE_LIBNL\n\thelp\n\t  A tool to diagnose issues with power consumption and power\n\t  management\n\n\t  https://01.org/powertop/\n\ncomment \"powertop needs a toolchain w/ C++, threads, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_USE_WCHAR\n"
  },
  {
    "path": "package/powertop/powertop.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://01.org/sites/default/files/downloads/powertop-2.13.tar.gz.asc.txt\n# using key 22E8F306C8FA4BAA2A5F36F3A0303B060918941C\nsha256  a65f992ca4a419bc73b623651060eb9fc00c5a86fa03556358cd9db011ef3178  powertop-2.13.tar.gz\nsha256  b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259  COPYING\n"
  },
  {
    "path": "package/powertop/powertop.mk",
    "content": "################################################################################\n#\n# powertop\n#\n################################################################################\n\nPOWERTOP_VERSION = 2.13\nPOWERTOP_SITE = https://01.org/sites/default/files/downloads\nPOWERTOP_DEPENDENCIES = pciutils ncurses libnl host-pkgconf \\\n\t$(TARGET_NLS_DEPENDENCIES)\nPOWERTOP_LICENSE = GPL-2.0\nPOWERTOP_LICENSE_FILES = COPYING\nPOWERTOP_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n# 0001-dont-force-stack-smashing-protection.patch\nPOWERTOP_AUTORECONF = YES\n\n# Help powertop at finding the right ncurses library depending on\n# which one is available.\nifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)\nPOWERTOP_CONF_ENV += ac_cv_search_delwin=\"-lncursesw\"\nelse\nPOWERTOP_CONF_ENV += ac_cv_search_delwin=\"-lncurses\"\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/powervr/Config.in",
    "content": "config BR2_PACKAGE_HAS_POWERVR\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_POWERVR\n\tstring\n\tdepends on BR2_PACKAGE_HAS_POWERVR\n"
  },
  {
    "path": "package/powervr/powervr.mk",
    "content": "################################################################################\n#\n# powervr\n#\n################################################################################\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "package/pppd/0001-pppd-Fix-bounds-check.patch",
    "content": "From 8d7970b8f3db727fe798b65f3377fe6787575426 Mon Sep 17 00:00:00 2001\nFrom: Paul Mackerras <paulus@ozlabs.org>\nDate: Mon, 3 Feb 2020 15:53:28 +1100\nSubject: [PATCH] pppd: Fix bounds check in EAP code\n\nGiven that we have just checked vallen < len, it can never be the case\nthat vallen >= len + sizeof(rhostname).  This fixes the check so we\nactually avoid overflowing the rhostname array.\n\nReported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>\nSigned-off-by: Paul Mackerras <paulus@ozlabs.org>\n---\n pppd/eap.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/pppd/eap.c b/pppd/eap.c\nindex 94407f56..1b93db01 100644\n--- a/pppd/eap.c\n+++ b/pppd/eap.c\n@@ -1420,7 +1420,7 @@ int len;\n \t\t}\n \n \t\t/* Not so likely to happen. */\n-\t\tif (vallen >= len + sizeof (rhostname)) {\n+\t\tif (len - vallen >= sizeof (rhostname)) {\n \t\t\tdbglog(\"EAP: trimming really long peer name down\");\n \t\t\tBCOPY(inp + vallen, rhostname, sizeof (rhostname) - 1);\n \t\t\trhostname[sizeof (rhostname) - 1] = '\\0';\n@@ -1846,7 +1846,7 @@ int len;\n \t\t}\n \n \t\t/* Not so likely to happen. */\n-\t\tif (vallen >= len + sizeof (rhostname)) {\n+\t\tif (len - vallen >= sizeof (rhostname)) {\n \t\t\tdbglog(\"EAP: trimming really long peer name down\");\n \t\t\tBCOPY(inp + vallen, rhostname, sizeof (rhostname) - 1);\n \t\t\trhostname[sizeof (rhostname) - 1] = '\\0';\n"
  },
  {
    "path": "package/pppd/Config.in",
    "content": "config BR2_PACKAGE_PPPD\n\tbool \"pppd\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # Use __P() macro all over the tree\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_OPENSSL if BR2_TOOLCHAIN_USES_GLIBC\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL \\\n\t\t\t\t\t\t && BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  An implementation of the Point-to-point protocol.\n\n\t  http://www.samba.org/ppp/\n\nif BR2_PACKAGE_PPPD\n\nconfig BR2_PACKAGE_PPPD_FILTER\n\tbool \"filtering\"\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  Packet filtering abilities for pppd. If enabled,\n\t  the pppd active-filter and pass-filter options\n\t  are available.\n\nconfig BR2_PACKAGE_PPPD_RADIUS\n\tbool \"radius\"\n\thelp\n\t  Install RADIUS support for pppd\n\nconfig BR2_PACKAGE_PPPD_OVERWRITE_RESOLV_CONF\n\tbool \"overwrite /etc/resolv.conf\"\n\tdefault y\n\thelp\n\t  Overwrite /etc/resolv.conf instead of maintaining the\n\t  separate list of nameservers in /etc/ppp/resolv.conf\n\n\t  Note that the pppd default of writing to /etc/ppp/resolv.conf\n\t  does not work on a read-only rootfs unless you make it\n\t  writable in your rootfs customizations (e.g. by linking it to\n\t  a file in tmpfs or by mounting a writable filesystem on it).\n\nendif\n\ncomment \"pppd needs a uClibc or glibc toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/pppd/pppd.hash",
    "content": "# Locally calculated\nsha256\t91fbff784ad16a1111a7f22df4675aeb161d958bb79f1cc4c1f0c81944e7cb40\tpppd-2.4.8.tar.gz\nsha256\t3990c65c506885f7bb75455d1d6188743a14ad46f5b62e136ef3739aed52c532\tpppd/tdb.c\nsha256\t1822ead9d2854adfbd282322b29730a3fec4cc67f6f6a2e487aad3476e3afd59\tpppd/plugins/pppoatm/COPYING\nsha256\t91a5e9c173e0e001e081e15bf7850cfd782a0baa02f5921e327ae3b449beff3f\tpppdump/bsd-comp.c\nsha256\tee1c28551c87cdcdaf80eb3922726f015201614cb560a5ed18a7a0c15f2b4aa4\tpppd/ccp.c\nsha256\t6fa4c3dad059f6ef15c1c5e5219d9d0d40991dd3a162098a89967a1720de059e\tpppd/plugins/passprompt.c\n"
  },
  {
    "path": "package/pppd/pppd.mk",
    "content": "################################################################################\n#\n# pppd\n#\n################################################################################\n\nPPPD_VERSION = 2.4.8\nPPPD_SITE = $(call github,paulusmack,ppp,ppp-$(PPPD_VERSION))\nPPPD_LICENSE = LGPL-2.0+, LGPL, BSD-4-Clause, BSD-3-Clause, GPL-2.0+\nPPPD_LICENSE_FILES = \\\n\tpppd/tdb.c pppd/plugins/pppoatm/COPYING \\\n\tpppdump/bsd-comp.c pppd/ccp.c pppd/plugins/passprompt.c\nPPPD_CPE_ID_VENDOR = samba\nPPPD_CPE_ID_PRODUCT = ppp\nPPPD_SELINUX_MODULES = ppp\n\n# 0001-pppd-Fix-bounds-check.patch\nPPPD_IGNORE_CVES += CVE-2020-8597\n\nPPPD_MAKE_OPTS = HAVE_INET6=y\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)\nPPPD_DEPENDENCIES += openssl\nelse\nPPPD_MAKE_OPTS += USE_CRYPT=y\nendif\n\nPPPD_INSTALL_STAGING = YES\nPPPD_TARGET_BINS = chat pppd pppdump pppstats\nPPPD_RADIUS_CONF = \\\n\tdictionary dictionary.ascend dictionary.compat \\\n\tdictionary.merit dictionary.microsoft \\\n\tissue port-id-map realms servers radiusclient.conf\n\nifeq ($(BR2_PACKAGE_PPPD_FILTER),y)\nPPPD_DEPENDENCIES += libpcap\nPPPD_MAKE_OPTS += FILTER=y\nendif\n\n# pppd bundles some but not all of the needed kernel headers. The embedded\n# if_pppol2tp.h is unfortunately not compatible with kernel headers > 2.6.34,\n# and has been part of the kernel headers since 2.6.23, so drop it\ndefine PPPD_DROP_INTERNAL_IF_PPOL2TP_H\n\t$(RM) $(@D)/include/linux/if_pppol2tp.h\nendef\n\nPPPD_POST_EXTRACT_HOOKS += PPPD_DROP_INTERNAL_IF_PPOL2TP_H\n\n# pppd defaults to /etc/ppp/resolv.conf, which not be writable and is\n# definitely not useful since the C library only uses\n# /etc/resolv.conf. Therefore, we change pppd to use /etc/resolv.conf\n# instead.\ndefine PPPD_SET_RESOLV_CONF\n\t$(SED) 's,ppp/resolv.conf,resolv.conf,' $(@D)/pppd/pathnames.h\nendef\nifeq ($(BR2_PACKAGE_PPPD_OVERWRITE_RESOLV_CONF),y)\nPPPD_POST_EXTRACT_HOOKS += PPPD_SET_RESOLV_CONF\nendif\n\ndefine PPPD_CONFIGURE_CMDS\n\t$(SED) 's/FILTER=y/#FILTER=y/' $(PPPD_DIR)/pppd/Makefile.linux\n\t$(SED) 's/ifneq ($$(wildcard \\/usr\\/include\\/pcap-bpf.h),)/ifdef FILTER/' $(PPPD_DIR)/*/Makefile.linux\n\t( cd $(@D); $(TARGET_MAKE_ENV) ./configure --prefix=/usr )\nendef\n\ndefine PPPD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" COPTS=\"$(TARGET_CFLAGS)\" \\\n\t\t-C $(@D) $(PPPD_MAKE_OPTS)\nendef\n\nifeq ($(BR2_PACKAGE_PPPD_RADIUS),y)\ndefine PPPD_INSTALL_RADIUS\n\t$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/radius/radattr.so \\\n\t\t$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/radattr.so\n\t$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/radius/radius.so \\\n\t\t$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/radius.so\n\t$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/radius/radrealms.so \\\n\t\t$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/radrealms.so\n\tfor m in $(PPPD_RADIUS_CONF); do \\\n\t\t$(INSTALL) -m 644 -D $(PPPD_DIR)/pppd/plugins/radius/etc/$$m \\\n\t\t\t$(TARGET_DIR)/etc/ppp/radius/$$m; \\\n\tdone\n\t$(SED) 's:/usr/local/etc:/etc:' \\\n\t\t$(TARGET_DIR)/etc/ppp/radius/radiusclient.conf\n\t$(SED) 's:/usr/local/sbin:/usr/sbin:' \\\n\t\t$(TARGET_DIR)/etc/ppp/radius/radiusclient.conf\n\t$(SED) 's:/etc/radiusclient:/etc/ppp/radius:g' \\\n\t\t$(TARGET_DIR)/etc/ppp/radius/*\nendef\nendif\n\ndefine PPPD_INSTALL_TARGET_CMDS\n\tfor sbin in $(PPPD_TARGET_BINS); do \\\n\t\t$(INSTALL) -D $(PPPD_DIR)/$$sbin/$$sbin \\\n\t\t\t$(TARGET_DIR)/usr/sbin/$$sbin; \\\n\tdone\n\t$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/minconn.so \\\n\t\t$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/minconn.so\n\t$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/passprompt.so \\\n\t\t$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/passprompt.so\n\t$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/passwordfd.so \\\n\t\t$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/passwordfd.so\n\t$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/pppoatm/pppoatm.so \\\n\t\t$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/pppoatm.so\n\t$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/rp-pppoe/rp-pppoe.so \\\n\t\t$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/rp-pppoe.so\n\t$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/rp-pppoe/pppoe-discovery \\\n\t\t$(TARGET_DIR)/usr/sbin/pppoe-discovery\n\t$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/winbind.so \\\n\t\t$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/winbind.so\n\t$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/pppol2tp/openl2tp.so \\\n\t\t$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/openl2tp.so\n\t$(INSTALL) -D $(PPPD_DIR)/pppd/plugins/pppol2tp/pppol2tp.so \\\n\t\t$(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/pppol2tp.so\n\t$(INSTALL) -D -m 0755 $(PPPD_DIR)/scripts/pon $(TARGET_DIR)/usr/bin/pon\n\t$(INSTALL) -D -m 0755 $(PPPD_DIR)/scripts/poff $(TARGET_DIR)/usr/bin/poff\n\t$(PPPD_INSTALL_RADIUS)\nendef\n\ndefine PPPD_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) INSTROOT=$(STAGING_DIR)/ -C $(@D) $(PPPD_MAKE_OPTS) install-devel\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/pps-tools/Config.in",
    "content": "config BR2_PACKAGE_PPS_TOOLS\n\tbool \"pps-tools\"\n\thelp\n\t  Pulse per second tools. Provides timepps.h and other PPS\n\t  utilities.\n\n\t  https://github.com/ago/pps-tools/\n"
  },
  {
    "path": "package/pps-tools/pps-tools.hash",
    "content": "# Locally calculated\nsha256  1168f1474235017af413afdb07288303ad7a7b12a0282f3bf9ed0e22fe0d7d2e  pps-tools-e2b25049df9a4da28168b7378016f1650d0dfa6b.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/pps-tools/pps-tools.mk",
    "content": "################################################################################\n#\n# pps-tools\n#\n################################################################################\n\nPPS_TOOLS_VERSION = e2b25049df9a4da28168b7378016f1650d0dfa6b\nPPS_TOOLS_SITE = $(call github,ago,pps-tools,$(PPS_TOOLS_VERSION))\nPPS_TOOLS_INSTALL_STAGING = YES\nPPS_TOOLS_LICENSE = GPL-2.0+\nPPS_TOOLS_LICENSE_FILES = COPYING\n\ndefine PPS_TOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all\nendef\n\ndefine PPS_TOOLS_INSTALL_STAGING_CMDS\n\tmkdir -p $(STAGING_DIR)/usr/include/sys $(STAGING_DIR)/usr/bin\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tDESTDIR=$(STAGING_DIR) -C $(@D) install\nendef\n\ndefine PPS_TOOLS_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/include/sys $(TARGET_DIR)/usr/bin\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/pptp-linux/0001-susv3-legacy.patch",
    "content": "bzero is deprecated in POSIX.1-2001 and removed for POSIX.1-2008 so\nswitch to memset instead.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura pptp-1.8.0.orig/pptp_callmgr.c pptp-1.8.0/pptp_callmgr.c\n--- pptp-1.8.0.orig/pptp_callmgr.c\t2013-10-23 05:10:46.000000000 -0300\n+++ pptp-1.8.0/pptp_callmgr.c\t2014-03-31 16:47:42.617643298 -0300\n@@ -340,7 +340,7 @@\n     }\n #endif\n     if (localbind.s_addr != INADDR_NONE) {\n-        bzero(&src, sizeof(src));\n+\tmemset(&src, 0, sizeof(src));\n         src.i.sin_family = AF_INET;\n         src.i.sin_addr   = localbind;\n         if (bind(s, &src.a, sizeof(src.i)) != 0) {\ndiff -Nura pptp-1.8.0.orig/pptp_gre.c pptp-1.8.0/pptp_gre.c\n--- pptp-1.8.0.orig/pptp_gre.c\t2013-10-23 05:10:46.000000000 -0300\n+++ pptp-1.8.0/pptp_gre.c\t2014-03-31 16:47:30.745249066 -0300\n@@ -103,7 +103,7 @@\n     }\n #endif\n     if (localbind.s_addr != INADDR_NONE) {\n-        bzero(&loc_addr, sizeof(loc_addr));\n+\tmemset(&loc_addr, 0, sizeof(loc_addr));\n         loc_addr.i.sin_family = AF_INET;\n         loc_addr.i.sin_addr   = localbind;\n         if (bind(s, &loc_addr.a, sizeof(loc_addr.i)) != 0) {\n"
  },
  {
    "path": "package/pptp-linux/0002-fix-parallel-build.patch",
    "content": "Fix parallel build issue\n\nThe config.h header file must be created before being used to build\nsource files that include it, especially version.c. In order for this\nto happen even in highly-parallel builds, we add a dependency of all\nobject files on config.h, in order to ensure it gets generated before\nmake attempts to build the object files.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/Makefile\n===================================================================\n--- a/Makefile\n+++ b/Makefile\n@@ -37,6 +37,8 @@\n \n all: config.h $(PPTP_BIN) pptpsetup.8\n \n+$(PPTP_OBJS): config.h\n+\n $(PPTP_BIN): $(PPTP_OBJS) $(PPTP_DEPS)\n \t$(CC) -o $(PPTP_BIN) $(PPTP_OBJS) $(LDFLAGS) $(LIBS)\n \n"
  },
  {
    "path": "package/pptp-linux/Config.in",
    "content": "config BR2_PACKAGE_PPTP_LINUX\n\tbool \"pptp-linux\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  An implementation of the Point-to-point protocol client.\n\n\t  http://pptpclient.sourceforge.net/\n"
  },
  {
    "path": "package/pptp-linux/pptp-linux.hash",
    "content": "# From http://sourceforge.net/projects/pptpclient/files/pptp/pptp-1.10.0/\nmd5 8d25341352fdae5ad5b36b9f18254908  pptp-1.10.0.tar.gz\nsha1 173c9b7d204c89fd1538116f165bba1e9101b51c  pptp-1.10.0.tar.gz\n\n# Locally calculated\nsha256 82492db8e487ce73b182ee7f444251d20c44f5c26d6e96c553ec7093aefb5af4  pptp-1.10.0.tar.gz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/pptp-linux/pptp-linux.mk",
    "content": "################################################################################\n#\n# pptp-linux\n#\n################################################################################\n\nPPTP_LINUX_VERSION = 1.10.0\nPPTP_LINUX_SITE = http://downloads.sourceforge.net/project/pptpclient/pptp/pptp-$(PPTP_LINUX_VERSION)\nPPTP_LINUX_SOURCE = pptp-$(PPTP_LINUX_VERSION).tar.gz\nPPTP_LINUX_MAKE = $(MAKE1)\nPPTP_LINUX_LICENSE = GPL-2.0+\nPPTP_LINUX_LICENSE_FILES = COPYING\n\ndefine PPTP_LINUX_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) OPTIMIZE= DEBUG= \\\n\t\tCC=\"$(TARGET_CC)\" \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\t\tIP=/sbin/ip\nendef\n\ndefine PPTP_LINUX_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/pptp $(TARGET_DIR)/usr/sbin/pptp\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/prboom/0001-libpng-1.4.patch",
    "content": "[PATCH] fix build with libpng 1.4.x\n\nIn 1.4.x the png_*_NULL defines are gone. Replace them with a normal\nNULL instead.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n---\n src/SDL/i_sshot.c |    4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\nIndex: prboom-2.5.0/src/SDL/i_sshot.c\n===================================================================\n--- prboom-2.5.0.orig/src/SDL/i_sshot.c\n+++ prboom-2.5.0/src/SDL/i_sshot.c\n@@ -231,7 +231,7 @@ int I_ScreenShot (const char *fname)\n   if (fp)\n   {\n     png_struct *png_ptr = png_create_write_struct(\n-        PNG_LIBPNG_VER_STRING, png_error_ptr_NULL, error_fn, warning_fn);\n+        PNG_LIBPNG_VER_STRING, NULL, error_fn, warning_fn);\n \n     if (png_ptr)\n     {\n@@ -279,7 +279,7 @@ int I_ScreenShot (const char *fname)\n             break;\n         }\n       }\n-      png_destroy_write_struct(&png_ptr,  png_infopp_NULL);\n+      png_destroy_write_struct(&png_ptr, NULL);\n     }\n     fclose(fp);\n   }\n"
  },
  {
    "path": "package/prboom/0002-configure-remove-predefined-O2-optimization-flag.patch",
    "content": "configure: remove predefined -O2 optimization flag\n\nCFLAGS_OPT variable forces to use -O2 optimization flag denying the\npossibility to use different optimization flag values.\n\nRemove -O2 flag from CFLAGS_OPT.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>\n---\ndiff -urpN prboom-2.5.0.orig/configure.ac prboom-2.5.0/configure.ac\n--- prboom-2.5.0.orig/configure.ac\t2019-06-20 14:07:45.058481879 +0200\n+++ prboom-2.5.0/configure.ac\t2019-06-20 14:09:05.066238825 +0200\n@@ -48,7 +48,7 @@ else\n fi\n \n dnl --- cph: work out flags to pass to compiler\n-CFLAGS_OPT=\"-O2 -fomit-frame-pointer\"\n+CFLAGS_OPT=\"-fomit-frame-pointer\"\n AC_C_COMPILE_FLAGS(-Wall)\n dnl --- Option to enable debugging\n AC_ARG_ENABLE(debug,AC_HELP_STRING([--enable-debug],[turns on various debugging features, like range checking and internal heap diagnostics]),,enable_debug=\"no\")\n"
  },
  {
    "path": "package/prboom/Config.in",
    "content": "config BR2_PACKAGE_PRBOOM\n\tbool \"prboom\"\n\tselect BR2_PACKAGE_SDL\n\tselect BR2_PACKAGE_SDL_MIXER\n\tselect BR2_PACKAGE_SDL_NET\n\thelp\n\t  PrBoom is a Doom client which allows you to play the good\n\t  old game on newer hardware. It even supports higher\n\t  resolution and better rendering, while still keeping the old\n\t  style alive.\n\n\t  http://prboom.sourceforge.net/\n"
  },
  {
    "path": "package/prboom/prboom.hash",
    "content": "# Locally computed:\nsha256  226c1c470f8cc983327536404f405a1d026cf0a5188c694a1243cc8630014bae  prboom-2.5.0.tar.gz\nsha256  1cba07ce0f6d1366d84b7cc62b76966ba79075e5f379c1e230c3ff0635fa789f  COPYING\n"
  },
  {
    "path": "package/prboom/prboom.mk",
    "content": "################################################################################\n#\n# prboom\n#\n################################################################################\n\nPRBOOM_VERSION = 2.5.0\nPRBOOM_SITE = http://downloads.sourceforge.net/project/prboom/prboom%20stable/$(PRBOOM_VERSION)\nPRBOOM_CONF_ENV = ac_cv_type_uid_t=yes\nPRBOOM_DEPENDENCIES = sdl sdl_net sdl_mixer\nPRBOOM_LICENSE = GPL-2.0+\nPRBOOM_LICENSE_FILES = COPYING\nPRBOOM_AUTORECONF = YES\n\nPRBOOM_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nPRBOOM_CFLAGS += -O0\nendif\n\nPRBOOM_CONF_ENV += CFLAGS=\"$(PRBOOM_CFLAGS)\"\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nPRBOOM_DEPENDENCIES += libpng\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\n# SDL_mixer uses symbols from SDL, but ends up after it on the link\n# cmdline. Fix it by forcing the SDL libs at the very end\nPRBOOM_CONF_ENV += LIBS=\"`$(STAGING_DIR)/usr/bin/sdl-config --static-libs`\"\nendif\n\nPRBOOM_CONF_OPTS = \\\n\t--oldincludedir=$(STAGING_DIR)/usr/include \\\n\t--with-sdl-prefix=$(STAGING_DIR)/usr \\\n\t--with-sdl-exec-prefix=$(STAGING_DIR)/usr \\\n\t--disable-cpu-opt \\\n\t--disable-sdltest \\\n\t--disable-gl\n\n# endianness detection isn't used when cross compiling\ndefine PRBOOM_BIG_ENDIAN_FIXUP\n\t$(SED) 's,.*#undef WORDS_BIGENDIAN.*,#define WORDS_BIGENDIAN 1,g' \\\n\t\t$(PRBOOM_DIR)/config.h\nendef\n\nifeq ($(BR2_ENDIAN),\"BIG\")\nPRBOOM_POST_CONFIGURE_HOOKS += PRBOOM_BIG_ENDIAN_FIXUP\nendif\n\ndefine PRBOOM_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D $(@D)/src/prboom $(TARGET_DIR)/usr/games/prboom\n\t$(INSTALL) -D $(@D)/src/prboom-game-server $(TARGET_DIR)/usr/games/prboom-game-server\n\t$(INSTALL) -D $(@D)/data/prboom.wad $(TARGET_DIR)/usr/share/games/doom/prboom.wad\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/prelink-cross/0001-src-rtld-dl-tls.c-Fix-TLS-offsets-computation-for-s3.patch",
    "content": "From 4064f77d2f550762cbf220fec7c26a8ce4219ea4 Mon Sep 17 00:00:00 2001\nFrom: Alexander Egorenkov <egorenar@linux.ibm.com>\nDate: Sun, 8 Aug 2021 11:19:52 +0200\nSubject: [PATCH] src/rtld/dl-tls.c: Fix TLS offsets computation for s390 arch\n\nrtld_determine_tlsoffsets() didn't handle s390 arch properly by falling\nback to the default case. If TLS_TCB_AT_TP is 1, then set offset to -1.\n\nFrom glibc's sysdeps/s390/nptl/tls.h:\n-------------------------------------\n/* The TCB can have any size and the memory following the address the\n   thread pointer points to is unspecified.  Allocate the TCB there.  */\ndefine TLS_TCB_AT_TP\t1\ndefine TLS_DTV_AT_TP\t0\n\nThis lead to the following error:\n---------------------------------\nprelink-rtld: error while loading shared libraries: /lib64/libc.so.6: cannot handle TLS data\n\nSigned-off-by: Alexander Egorenkov <egorenar@linux.ibm.com>\n---\n src/rtld/dl-tls.c | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/src/rtld/dl-tls.c b/src/rtld/dl-tls.c\nindex 280cee45f950..29422dcfd25e 100644\n--- a/src/rtld/dl-tls.c\n+++ b/src/rtld/dl-tls.c\n@@ -143,6 +143,11 @@ rtld_determine_tlsoffsets (int e_machine, struct r_scope_elem *search_list)\n       tls_tcb_size = 0;\n       break;\n \n+    case EM_S390:\n+      tls_tcb_at_tp = 1;\n+      tls_tcb_size = -1;\n+      break;\n+\n     default:\n       /* Hope there's no TLS!  */\n       for (i = 0; i < search_list->r_nlist; i++)\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/prelink-cross/prelink-cross.hash",
    "content": "# Locally computed\nsha256  d7c95e81993edead813accf417f6d5b05bcc84eea9ee2d711b9505ffb4f2865b  prelink-cross-a853a5d715d84eec93aa68e8f2df26b7d860f5b2-br1.tar.gz\nsha256  b8a2f73f743dc1a51aff23f1aacbca4b868564db52496fa3c0caba755bfd1eaf  COPYING\n"
  },
  {
    "path": "package/prelink-cross/prelink-cross.mk",
    "content": "################################################################################\n#\n# host-prelink-cross\n#\n################################################################################\n\nPRELINK_CROSS_VERSION = a853a5d715d84eec93aa68e8f2df26b7d860f5b2\nPRELINK_CROSS_SITE = https://git.yoctoproject.org/git/prelink-cross\nPRELINK_CROSS_SITE_METHOD = git\nPRELINK_CROSS_LICENSE = GPL-2.0+\nPRELINK_CROSS_LICENSE_FILES = COPYING\n# Sources from git, no configure script present\nPRELINK_CROSS_AUTORECONF = YES\nHOST_PRELINK_CROSS_DEPENDENCIES = host-elfutils host-libiberty\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/privoxy/Config.in",
    "content": "config BR2_PACKAGE_PRIVOXY\n\tbool \"privoxy\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  A non-caching web proxy with advanced filtering capabilities\n\t  for enhancing privacy, modifying web page data and HTTP\n\t  headers, controlling access, and removing ads and other\n\t  obnoxious Internet junk.\n\n\t  http://www.privoxy.org/\n\ncomment \"privoxy needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/privoxy/privoxy.hash",
    "content": "# From https://sourceforge.net/projects/ijbswa/files/Sources/3.0.32%20%28stable%29/\nmd5  3a0a8ebdf80e0a29154683e74cbf510b  privoxy-3.0.32-stable-src.tar.gz\nsha1  3a298ab2599fc92555c86dc29a37742d7396a0d3  privoxy-3.0.32-stable-src.tar.gz\n# Locally computed\nsha256  c61de4008c62445ec18f1f270407cbf2372eaba93beaccdc9e3238bb2defeed7  privoxy-3.0.32-stable-src.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/privoxy/privoxy.mk",
    "content": "################################################################################\n#\n# privoxy\n#\n################################################################################\n\nPRIVOXY_VERSION = 3.0.32\nPRIVOXY_SITE = http://downloads.sourceforge.net/project/ijbswa/Sources/$(PRIVOXY_VERSION)%20%28stable%29\nPRIVOXY_SOURCE = privoxy-$(PRIVOXY_VERSION)-stable-src.tar.gz\n# configure not shipped\nPRIVOXY_AUTORECONF = YES\nPRIVOXY_DEPENDENCIES = pcre zlib\nPRIVOXY_LICENSE = GPL-2.0+\nPRIVOXY_LICENSE_FILES = LICENSE\nPRIVOXY_CPE_ID_VENDOR = privoxy\nPRIVOXY_SELINUX_MODULES = privoxy\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/procps-ng/Config.in",
    "content": "config BR2_PACKAGE_PROCPS_NG\n\tbool \"procps-ng\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Standard informational utilities and process-handling tools.\n\t  Provides things like kill, ps, uptime, free, top, etc...\n\n\t  http://sourceforge.net/projects/procps-ng/\n"
  },
  {
    "path": "package/procps-ng/S02sysctl",
    "content": "#!/bin/sh\n#\n# This script is used by busybox and procps-ng.\n#\n# With procps-ng, the \"--system\" option of sysctl also enables \"--ignore\", so\n# errors are not reported via syslog. Use the run_logger function to mimic the\n# --system behavior, still reporting errors via syslog. Users not interested\n# on error reports can add \"-e\" to SYSCTL_ARGS.\n#\n# busybox does not have a \"--system\" option neither reports errors via syslog,\n# so the scripting provides a consistent behavior between the implementations.\n# Testing the busybox sysctl exit code is fruitless, as at the moment, since\n# its exit status is zero even if errors happen. Hopefully this will be fixed\n# in a future busybox version.\n\nPROGRAM=\"sysctl\"\n\nSYSCTL_ARGS=\"\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$PROGRAM\" ] && . \"/etc/default/$PROGRAM\"\n\n# Files are read from directories in the SYSCTL_SOURCES list, in the given\n# order. A file may be used more than once, since there can be multiple\n# symlinks to it. No attempt is made to prevent this.\nSYSCTL_SOURCES=\"/etc/sysctl.d/ /usr/local/lib/sysctl.d/ /usr/lib/sysctl.d/ /lib/sysctl.d/ /etc/sysctl.conf\"\n\n# If the logger utility is available all messages are sent to syslog, except\n# for the final status. The file redirections do the following:\n#\n# - stdout is redirected to syslog with facility.level \"kern.info\"\n# - stderr is redirected to syslog with facility.level \"kern.err\"\n# - file dscriptor 4 is used to pass the result to the \"start\" function.\n#\nrun_logger() {\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tfind $SYSCTL_SOURCES -maxdepth 1 -name '*.conf' -print0 2> /dev/null | \\\n\txargs -0 -r -n 1 readlink -f | {\n\t\tprog_status=\"OK\"\n\t\twhile :; do\n\t\t\tread -r file || {\n\t\t\t\techo \"$prog_status\" >&4\n\t\t\t\tbreak\n\t\t\t}\n\t\t\techo \"* Applying $file ...\"\n\t\t\t/sbin/sysctl -p \"$file\" $SYSCTL_ARGS || prog_status=\"FAIL\"\n\t\tdone 2>&1 >&3 | /usr/bin/logger -t sysctl -p kern.err\n\t} 3>&1 | /usr/bin/logger -t sysctl -p kern.info\n}\n\n# If logger is not available all messages are sent to stdout/stderr.\nrun_std() {\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tfind $SYSCTL_SOURCES -maxdepth 1 -name '*.conf' -print0 2> /dev/null | \\\n\txargs -0 -r -n 1 readlink -f | {\n\t\tprog_status=\"OK\"\n\t\twhile :; do\n\t\t\tread -r file || {\n\t\t\t\techo \"$prog_status\" >&4\n\t\t\t\tbreak\n\t\t\t}\n\t\t\techo \"* Applying $file ...\"\n\t\t\t/sbin/sysctl -p \"$file\" $SYSCTL_ARGS || prog_status=\"FAIL\"\n\t\tdone\n\t}\n}\n\nif [ -x /usr/bin/logger ]; then\n\trun_program=\"run_logger\"\nelse\n\trun_program=\"run_std\"\nfi\n\nstart() {\n\tprintf '%s %s: ' \"$1\" \"$PROGRAM\"\n\tstatus=$(\"$run_program\" 4>&1)\n\techo \"$status\"\n\tif [ \"$status\" = \"OK\" ]; then\n\t\treturn 0\n\tfi\n\treturn 1\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart \"Running\";;\n\trestart|reload)\n\t\tstart \"Rerunning\";;\n\tstop)\n\t\t:;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/procps-ng/procps-ng.hash",
    "content": "# From http://sourceforge.net/projects/procps-ng/files/Production/\nmd5\t2b0717a7cb474b3d6dfdeedfbad2eccc\tprocps-ng-3.3.15.tar.xz\nsha1\t2929bc64f0cf7b2db997eef79b7187658e47230d\tprocps-ng-3.3.15.tar.xz\n# Locally calculated after checking signature\n# http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-3.3.15.tar.xz.asc\nsha256 10bd744ffcb3de2d591d2f6acf1a54a7ba070fdcc432a855931a5057149f0465  procps-ng-3.3.15.tar.xz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256 681e386e44a19d7d0674b4320272c90e66b6610b741e7e6305f8219c42e85366  COPYING.LIB\n"
  },
  {
    "path": "package/procps-ng/procps-ng.mk",
    "content": "################################################################################\n#\n# procps-ng\n#\n################################################################################\n\nPROCPS_NG_VERSION = 3.3.15\nPROCPS_NG_SOURCE = procps-ng-$(PROCPS_NG_VERSION).tar.xz\nPROCPS_NG_SITE = http://downloads.sourceforge.net/project/procps-ng/Production\nPROCPS_NG_LICENSE = GPL-2.0+, LGPL-2.0+ (libproc and libps)\nPROCPS_NG_LICENSE_FILES = COPYING COPYING.LIB\nPROCPS_NG_CPE_ID_VENDOR = procps-ng_project\nPROCPS_NG_INSTALL_STAGING = YES\nPROCPS_NG_DEPENDENCIES = ncurses host-pkgconf $(TARGET_NLS_DEPENDENCIES)\nPROCPS_NG_CONF_OPTS = LIBS=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nPROCPS_NG_DEPENDENCIES += systemd\nPROCPS_NG_CONF_OPTS += --with-systemd\nelse\nPROCPS_NG_CONF_OPTS += --without-systemd\nendif\n\n# Make sure binaries get installed in /bin, as busybox does, so that we\n# don't end up with two versions.\n# Make sure libprocps.pc is installed in STAGING_DIR/usr/lib/pkgconfig/\n# otherwise it's installed in STAGING_DIR/lib/pkgconfig/ breaking\n# pkg-config --libs libprocps.\nPROCPS_NG_CONF_OPTS += --exec-prefix=/ \\\n\t--libdir=/usr/lib\n\n# Allows unicode characters to show in 'watch'\nifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)\nPROCPS_NG_CONF_OPTS += \\\n\t--enable-watch8bit\nendif\n\nifeq ($(BR2_USE_WCHAR),)\nPROCPS_NG_CONF_OPTS += CPPFLAGS=-DOFF_XTRAWIDE\nendif\n\n# numa support requires libdl, so explicitly disable it when\n# BR2_STATIC_LIBS=y\nifeq ($(BR2_STATIC_LIBS),y)\nPROCPS_NG_CONF_OPTS += --disable-numa\nendif\n\n# Avoid installing S02sysctl, since openrc provides /etc/init.d/sysctl.\ndefine PROCPS_NG_INSTALL_INIT_OPENRC\n\t@:\nendef\n\ndefine PROCPS_NG_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/procps-ng/S02sysctl \\\n\t\t$(TARGET_DIR)/etc/init.d/S02sysctl\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/procrank_linux/Config.in",
    "content": "config BR2_PACKAGE_PROCRANK_LINUX\n\tbool \"procrank_linux\"\n\thelp\n\t  procrank is a tool commonly used by Android platform\n\t  developers to find out how much memory is really being used.\n\n\t  https://github.com/csimmonds/procrank_linux\n"
  },
  {
    "path": "package/procrank_linux/procrank_linux.hash",
    "content": "# Locally calculated\nsha256  1c3592b549b6793b29ab561568f493d0edbfe288ea2aed59afa689eaa26b5d9e  procrank_linux-21c30ab4514a5b15ac6e813e21bee0d3d714cb08.tar.gz\nsha256  38751245389e1e23f73e6f5384b5cbe7fa972cc4410c5adc9c04b082a0b9561a  NOTICE\n"
  },
  {
    "path": "package/procrank_linux/procrank_linux.mk",
    "content": "################################################################################\n#\n# procrank_linux\n#\n################################################################################\n\nPROCRANK_LINUX_VERSION = 21c30ab4514a5b15ac6e813e21bee0d3d714cb08\nPROCRANK_LINUX_SITE = $(call github,csimmonds,procrank_linux,$(PROCRANK_LINUX_VERSION))\nPROCRANK_LINUX_LICENSE = Apache-2.0\nPROCRANK_LINUX_LICENSE_FILES = NOTICE\n\ndefine PROCRANK_LINUX_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CROSS_COMPILE=\"$(TARGET_CROSS)\"\nendef\n\ndefine PROCRANK_LINUX_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/procrank \\\n\t\t$(TARGET_DIR)/usr/bin/procrank\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/proftpd/0001-mod_quotatab-fix-build-failure-against-gcc-10.patch",
    "content": "From 9c9623c8a47fb5580dfea1a59296c6d224479504 Mon Sep 17 00:00:00 2001\nFrom: Sergei Trofimovich <slyfox@gentoo.org>\nDate: Mon, 2 Mar 2020 23:45:22 +0000\nSubject: [PATCH] mod_quotatab: fix build failure against gcc-10\n\nOn gcc-10 (and gcc-9 -fno-common) build fails as:\n\n```\n$ ./configure --with-modules=mod_quotatab && make\n...\nld: modules/module_glue.o:(.data.rel+0x68):\n  undefined reference to `quotatab_file_module'\ncollect2: error: ld returned 1 exit status\nmake: *** [Makefile:56: proftpd] Error 1\n```\n\ngcc-10 will change the default from -fcommon to fno-common:\nhttps://gcc.gnu.org/PR85678.\n\nThe error also happens if CFLAGS=-fno-common passed explicitly.\n\nSigned-off-by: Sergei Trofimovich <slyfox@gentoo.org>\n\n[Retrieved from:\nhttps://github.com/proftpd/proftpd/commit/9c9623c8a47fb5580dfea1a59296c6d224479504]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n contrib/mod_quotatab.c | 1 +\n contrib/mod_quotatab.h | 2 +-\n 2 files changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/contrib/mod_quotatab.c b/contrib/mod_quotatab.c\nindex 4fa6c1f44..0ee480163 100644\n--- a/contrib/mod_quotatab.c\n+++ b/contrib/mod_quotatab.c\n@@ -50,6 +50,7 @@ typedef struct regtab_obj {\n module quotatab_module;\n \n /* Quota objects for the current session */\n+quota_deltas_t quotatab_deltas;\n static quota_table_t *limit_tab = NULL;\n static quota_limit_t sess_limit;\n \ndiff --git a/contrib/mod_quotatab.h b/contrib/mod_quotatab.h\nindex ed30333f5..c818395a0 100644\n--- a/contrib/mod_quotatab.h\n+++ b/contrib/mod_quotatab.h\n@@ -188,7 +188,7 @@ typedef struct table_obj {\n #define QUOTATAB_TALLY_SRC      0x0002\n \n /* Quota objects for the current session. */\n-quota_deltas_t quotatab_deltas;\n+extern quota_deltas_t quotatab_deltas;\n \n /* Function prototypes necessary for quotatab sub-modules */\n int quotatab_log(const char *, ...)\n"
  },
  {
    "path": "package/proftpd/Config.in",
    "content": "config BR2_PACKAGE_PROFTPD\n\tbool \"proftpd\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  ProFTPD, a highly configurable FTP server.\n\n\t  http://www.proftpd.org/\n\nif BR2_PACKAGE_PROFTPD\n\nconfig BR2_PACKAGE_PROFTPD_MOD_CAP\n\tbool \"mod_cap support\"\n\tselect BR2_PACKAGE_LIBCAP\n\thelp\n\t  Compile ProFTPD with mod_cap support\n\nconfig BR2_PACKAGE_PROFTPD_MOD_REWRITE\n\tbool \"mod_rewrite support\"\n\thelp\n\t  Compile ProFTPD with mod_rewrite support\n\nconfig BR2_PACKAGE_PROFTPD_MOD_REDIS\n\tbool \"mod_redis support\"\n\tselect BR2_PACKAGE_HIREDIS\n\thelp\n\t  The mod_redis module enables ProFTPD support for caching\n\t  data in Redis servers, using the hiredis client library.\n\nconfig BR2_PACKAGE_PROFTPD_MOD_SFTP\n\tbool \"mod_sftp support\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Compile ProFTPD with mod_sftp support\n\nconfig BR2_PACKAGE_PROFTPD_MOD_SQL\n\tbool \"mod_sql support\"\n\thelp\n\t  Compile ProFTPD with mod_sql support.\n\nif BR2_PACKAGE_PROFTPD_MOD_SQL\n\nconfig BR2_PACKAGE_PROFTPD_MOD_SQL_SQLITE\n\tbool \"mod_sql_sqlite support\"\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  Compile ProFTPD with mod_sql_sqlite support.\n\nendif\n\nconfig BR2_PACKAGE_PROFTPD_MOD_SFTP_SQL\n\tbool \"mod_sftp_sql support\"\n\tselect BR2_PACKAGE_PROFTPD_MOD_SQL\n\tselect BR2_PACKAGE_PROFTPD_MOD_SFTP\n\thelp\n\t  Compile ProFTPD with mod_sftp_sql support\n\nconfig BR2_PACKAGE_PROFTPD_MOD_QUOTATAB\n\tbool \"mod_quotatab support\"\n\thelp\n\t  Compile ProFTPD with mod_quotatab support. This module\n\t  is required in order to support quota tables:\n\t        1. mod_quotatab_file\n\t        2. mod_quotatab_ldap\n\t        3. mod_quotatab_radius\n\t        4. mod_quotatab_sql\n\nif BR2_PACKAGE_PROFTPD_MOD_QUOTATAB\n\nconfig BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_FILE\n\tbool \"mod_quotatab_file table support\"\n\thelp\n\t  Compile mod_quotatab with mod_quotatab_file table.\n\nconfig BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_LDAP\n\tbool \"mod_quotatab_ldap table support\"\n\thelp\n\t  Compile mod_quotatab with mod_quotatab_ldap table.\n\nconfig BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_RADIUS\n\tbool \"mod_quotatab_radius table support\"\n\thelp\n\t  Compile mod_quotatab with mod_quotatab_radius table.\n\nconfig BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_SQL\n\tbool \"mod_quotatab_sql table support\"\n\tselect BR2_PACKAGE_PROFTPD_MOD_SQL\n\thelp\n\t  Compile mod_quotatab with mod_quotatab_sql table.\n\nendif\n\nconfig BR2_PACKAGE_PROFTPD_BUFFER_SIZE\n\tint \"buffer size in bytes (0 for default)\"\n\tdefault \"0\"\n\thelp\n\t  By increasing the buffer size above the default of 1K,\n\t  proftpd reads and writes data in larger chunks, and makes\n\t  fewer expensive system calls. Use of this option to set buffer\n\t  sizes of 8K or more has been reported to drastically increase\n\t  transfer speeds (depending on network configurations).\n\n\t  0 uses the default size of 1024.\n\nendif\n"
  },
  {
    "path": "package/proftpd/S50proftpd",
    "content": "#!/bin/sh\n\ntrap \"\" HUP\ntrap \"\" TERM\n[ ! -d /var/run/proftpd ] && mkdir /var/run/proftpd\n[ ! -f /var/log/wtmp ] && touch /var/log/wtmp\n\nstart() {\n\tprintf \"Starting ProFTPD: \"\n\t/usr/sbin/proftpd\n\tif [ $? != 0 ]; then\n\t\techo \"FAILED\"\n\t\texit 1\n\telse\n\t\techo \"done\"\n\tfi\n}\n\nstop() {\n\tprintf \"Stopping ProFTPD: \"\n\tkillall proftpd\n        echo \"done\"\n}\n\ncase \"$1\" in\n    start)\n\tstart\n\t;;\n\n    stop)\n\tstop\n\t;;\n\n    restart)\n    \tstop\n    \tstart\n\t;;\n\n    *)\n\techo \"Usage: /etc/init.d/S50proftpd {start|stop|restart}\"\n\texit 1\n\t;;\nesac\n\nexit 0\n"
  },
  {
    "path": "package/proftpd/proftpd.hash",
    "content": "# Locally calculated\nsha256  2dbe684034ab592742ebdb778a8a234b70f959efeb30feedee3ea77f26f74fbb  proftpd-1.3.6e.tar.gz\nsha256  391a473d755c29b5326fb726326ff3c37e42512f53a8f5789fc310232150bf80  COPYING\n"
  },
  {
    "path": "package/proftpd/proftpd.mk",
    "content": "################################################################################\n#\n# proftpd\n#\n################################################################################\n\nPROFTPD_VERSION = 1.3.6e\nPROFTPD_SITE = $(call github,proftpd,proftpd,v$(PROFTPD_VERSION))\nPROFTPD_LICENSE = GPL-2.0+\nPROFTPD_LICENSE_FILES = COPYING\nPROFTPD_CPE_ID_VENDOR = proftpd\nPROFTPD_SELINUX_MODULES = ftp\n\nPROFTPD_CONF_ENV = \\\n\tac_cv_func_setpgrp_void=yes \\\n\tac_cv_func_setgrent_void=yes\n\nPROFTPD_CONF_OPTS = \\\n\t--localstatedir=/var/run \\\n\t--disable-static \\\n\t--disable-curses \\\n\t--disable-ncurses \\\n\t--disable-facl \\\n\t--disable-dso \\\n\t--enable-sendfile \\\n\t--enable-shadow \\\n\t--with-gnu-ld \\\n\t--without-openssl-cmdline\n\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_CAP),y)\nPROFTPD_CONF_OPTS += --enable-cap\nPROFTPD_DEPENDENCIES += libcap\nelse\nPROFTPD_CONF_OPTS += --disable-cap\nendif\n\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_REWRITE),y)\nPROFTPD_MODULES += mod_rewrite\nendif\n\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_REDIS),y)\nPROFTPD_CONF_OPTS += --enable-redis\nPROFTPD_DEPENDENCIES += hiredis\nelse\nPROFTPD_CONF_OPTS += --disable-redis\nendif\n\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_SFTP),y)\nPROFTPD_CONF_OPTS += --enable-openssl\nPROFTPD_MODULES += mod_sftp\nPROFTPD_DEPENDENCIES += openssl\nelse\nPROFTPD_CONF_OPTS += --disable-openssl\nendif\n\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_SQL),y)\nPROFTPD_MODULES += mod_sql\nendif\n\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_SQL_SQLITE),y)\nPROFTPD_MODULES += mod_sql_sqlite\nPROFTPD_DEPENDENCIES += sqlite\nendif\n\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_SFTP_SQL),y)\nPROFTPD_MODULES += mod_sftp_sql\nendif\n\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_QUOTATAB),y)\nPROFTPD_MODULES += mod_quotatab\nendif\n\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_FILE),y)\nPROFTPD_MODULES += mod_quotatab_file\nendif\n\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_LDAP),y)\nPROFTPD_MODULES += mod_quotatab_ldap\nendif\n\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_RADIUS),y)\nPROFTPD_MODULES += mod_quotatab_radius\nendif\n\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_QUOTATAB_SQL),y)\nPROFTPD_MODULES += mod_quotatab_sql\nendif\n\nPROFTPD_CONF_OPTS += --with-modules=$(subst $(space),:,$(PROFTPD_MODULES))\n\n# configure script doesn't handle detection of %llu format string\n# support for printing the file size when cross compiling, breaking\n# access for large files.\n# We unfortunately cannot AUTORECONF the package, so instead force it\n# on if we know we support it\ndefine PROFTPD_USE_LLU\n\t$(SED) 's/HAVE_LU/HAVE_LLU/' $(@D)/configure\nendef\nPROFTPD_PRE_CONFIGURE_HOOKS += PROFTPD_USE_LLU\n\nPROFTPD_MAKE = $(MAKE1)\n\n# install Perl based scripts in target\nifeq ($(BR2_PACKAGE_PERL),y)\nifeq ($(BR2_PACKAGE_PROFTPD_MOD_QUOTATAB),y)\ndefine PROFTPD_INSTALL_FTPQUOTA\n\t$(INSTALL) -D -m 0755 $(@D)/contrib/ftpquota $(TARGET_DIR)/usr/sbin/ftpquota\nendef\nendif\ndefine PROFTPD_INSTALL_FTPASSWD\n\t$(INSTALL) -D -m 0755 $(@D)/contrib/ftpasswd $(TARGET_DIR)/usr/sbin/ftpasswd\nendef\nendif\n\ndefine PROFTPD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/proftpd $(TARGET_DIR)/usr/sbin/proftpd\n\t$(INSTALL) -m 0644 -D $(@D)/sample-configurations/basic.conf $(TARGET_DIR)/etc/proftpd.conf\n\t$(PROFTPD_INSTALL_FTPQUOTA)\n\t$(PROFTPD_INSTALL_FTPASSWD)\nendef\n\ndefine PROFTPD_USERS\n\tftp -1 ftp -1 * /home/ftp - - Anonymous FTP User\nendef\n\ndefine PROFTPD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/proftpd/S50proftpd $(TARGET_DIR)/etc/init.d/S50proftpd\nendef\n\ndefine PROFTPD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/proftpd/proftpd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/proftpd.service\nendef\n\nifneq ($(BR2_PACKAGE_PROFTPD_BUFFER_SIZE),0)\nPROFTPD_CONF_OPTS += --enable-buffer-size=$(BR2_PACKAGE_PROFTPD_BUFFER_SIZE)\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/proftpd/proftpd.service",
    "content": "[Unit]\nDescription=FTP server\nAfter=syslog.target network.target\n\n[Service]\nExecStart=/usr/sbin/proftpd -n -q\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/proj/Config.in",
    "content": "config BR2_PACKAGE_PROJ\n\tbool \"proj\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  proj.4 is a standard UNIX filter function which converts\n\t  geographic longitude and latitude coordinates into cartesian\n\t  coordinates (and vice versa), and it is a C API for software\n\t  developers to include coordinate transformation in their own\n\t  software.\n\n\t  http://proj4.org/\n\ncomment \"proj needs a toolchain w/ C++, gcc >= 4.7, threads, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/proj/proj.hash",
    "content": "# Fetched from http://download.osgeo.org/proj/proj-8.1.1.tar.gz.md5\nmd5  f017fd7d35311b0d65b2cf0503844690  proj-8.1.1.tar.gz\n# Locally calculated\nsha256  82f1345e5fa530c407cb1fc0752e83f8d08d2b98772941bbdc7820241f7fada2  proj-8.1.1.tar.gz\nsha256  6a8f30793e877d32e3f88b972f0970a051a3b5a26cd057d3993cb51e21c43319  COPYING\n"
  },
  {
    "path": "package/proj/proj.mk",
    "content": "################################################################################\n#\n# proj\n#\n################################################################################\n\nPROJ_VERSION = 8.1.1\nPROJ_SITE = http://download.osgeo.org/proj\nPROJ_LICENSE = MIT\nPROJ_LICENSE_FILES = COPYING\nPROJ_INSTALL_STAGING = YES\nPROJ_DEPENDENCIES = host-pkgconf host-sqlite sqlite\n\nPROJ_CFLAGS = $(TARGET_CFLAGS)\nPROJ_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)\nPROJ_CFLAGS += -O0\nPROJ_CXXFLAGS += -O0\nendif\n\nPROJ_CONF_ENV = \\\n\tCFLAGS=\"$(PROJ_CFLAGS)\" \\\n\tCXXFLAGS=\"$(PROJ_CXXFLAGS)\"\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nPROJ_DEPENDENCIES += libcurl\nPROJ_CONF_OPTS += --with-curl=$(STAGING_DIR)/usr/bin/curl-config\nelse\nPROJ_CONF_OPTS += --without-curl\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nPROJ_DEPENDENCIES += tiff\nPROJ_CONF_OPTS += --enable-tiff\nelse\nPROJ_CONF_OPTS += --disable-tiff\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/prosody/0001-enable-syslog.patch",
    "content": "From 267b5d195be0f3a8f00ccf4ccb62e25a9c4e48eb Mon Sep 17 00:00:00 2001\nFrom: Francois Perrad <francois.perrad@gadz.org>\nDate: Sun, 22 Oct 2017 08:44:01 +0200\nSubject: [PATCH] enable syslog\n\nnote: the posix module is auto-loaded by default\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\ndiff --git a/prosody.cfg.lua.dist b/prosody.cfg.lua.dist\nindex a0fc6c9e..af3cc0e4 100644\n--- a/prosody.cfg.lua.dist\n+++ b/prosody.cfg.lua.dist\n@@ -166,7 +166,7 @@ archive_expires_after = \"1w\" -- Remove archived messages after 1 week\n log = {\n \tinfo = \"prosody.log\"; -- Change 'info' to 'debug' for verbose logging\n \terror = \"prosody.err\";\n-\t-- \"*syslog\"; -- Uncomment this for logging to syslog\n+\t\"*syslog\"; -- Uncomment this for logging to syslog\n \t-- \"*console\"; -- Log to the console, useful for debugging with daemonize=false\n }\n \n-- \n2.11.0\n\n"
  },
  {
    "path": "package/prosody/0002-add-pidfile.patch",
    "content": "From 124d479195ac8ec1747b5b89fe4860d0e92c2aae Mon Sep 17 00:00:00 2001\nFrom: Francois Perrad <francois.perrad@gadz.org>\nDate: Sun, 22 Oct 2017 08:58:11 +0200\nSubject: [PATCH] add pidfile\n\nsee https://prosody.im/doc/configure#posix-only_options\n\nSigned-off-by: Francois Perrad <francois.perrad@gadz.org>\n\ndiff --git a/prosody.cfg.lua.dist b/prosody.cfg.lua.dist\nindex af3cc0e4..675db12f 100644\n--- a/prosody.cfg.lua.dist\n+++ b/prosody.cfg.lua.dist\n@@ -187,6 +187,9 @@ log = {\n -- HTTPS currently only supports a single certificate, specify it here:\n --https_certificate = \"certs/localhost.crt\"\n \n+-- This must match the PIDFILE used in S50prosody\n+pidfile = \"/var/run/prosody/prosody.pid\"\n+\n ----------- Virtual hosts -----------\n -- You need to add a VirtualHost entry for each domain you wish Prosody to serve.\n -- Settings under each VirtualHost entry apply *only* to that host.\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/prosody/Config.in",
    "content": "config BR2_PACKAGE_PROSODY\n\tbool \"prosody\"\n\tdepends on BR2_USE_MMU # fork\n\tdepends on BR2_PACKAGE_HAS_LUAINTERPRETER\n\tdepends on !BR2_PACKAGE_LUA_5_4\n\tdepends on !BR2_STATIC_LIBS # luaexpat, luasec, luasocket, luafilesystem\n\tselect BR2_PACKAGE_LUABITOP if BR2_PACKAGE_LUA_5_1 # runtime\n\tselect BR2_PACKAGE_LUAEXPAT # runtime\n\tselect BR2_PACKAGE_LUASEC # runtime\n\tselect BR2_PACKAGE_LUASOCKET # runtime\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBIDN\n\tselect BR2_PACKAGE_LUAFILESYSTEM # runtime\n\thelp\n\t  Prosody is a modern XMPP communication server. It aims to be\n\t  easy to set up and configure, and efficient with system\n\t  resources.\n\n\t  https://prosody.im\n\ncomment \"prosody needs the lua interpreter, dynamic library\"\n\tdepends on !BR2_PACKAGE_HAS_LUAINTERPRETER || BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\ncomment \"prosody needs a Lua <= 5.3\"\n\tdepends on BR2_PACKAGE_LUA_5_4\n"
  },
  {
    "path": "package/prosody/S50prosody",
    "content": "#! /bin/sh\n\nNAME=prosody\n\n# This must match the pidfile field in\n# /etc/prosody/prosody.cfg.lua\n\nPIDDIR=/var/run/$NAME\nPIDFILE=$PIDDIR/$NAME.pid\n\ncase \"$1\" in\n  start)\n    printf \"Starting $NAME: \"\n    mkdir -p $PIDDIR\n    chown $NAME:$NAME $PIDDIR\n    start-stop-daemon -S -q -o -x /usr/bin/prosody -c $NAME\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    ;;\n  stop)\n    printf \"Stopping $NAME: \"\n    # The standard method of identifying the name doesn't\n    # work as the process name is lua. So use the pidfile\n    # which is created by the service itself as a match\n    # criteria when stopping the service\n    start-stop-daemon -K -q -o -p \"$PIDFILE\"\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    ;;\n  restart|reload)\n    echo \"Restarting $NAME: \"\n    $0 stop\n    sleep 1\n    $0 start\n    ;;\n  *)\n    echo \"Usage: $0 {start|stop|restart|reload}\" >&2\n    exit 1\n    ;;\nesac\n\nexit 0\n"
  },
  {
    "path": "package/prosody/prosody.hash",
    "content": "# Locally computed:\nmd5  6130b79fb64141909330caf83a79a131  prosody-0.11.10.tar.gz\nsha1  4dc8b2f783b43e7a5e781b1fc8aee48b0e106def  prosody-0.11.10.tar.gz\nsha256  c6d714e6d4a6ddd1db1266b205d9d8a3ed91818f42755c9268ffb18359d204e1  prosody-0.11.10.tar.gz\nsha512  419d8f8465f1807015f0a52d8f35ee89892b0869084dae38b60fc833d63c3d70892d8e59ae00039cd15e0e25f46d042954896f51f8c0520650a877f5296707cb  prosody-0.11.10.tar.gz\n\n# Hash for license file:\nsha256 bbbdc1c5426e5944cf869fc0faeaf19d88a220cd2b39ea98b7b8e86b0e88a2ef  COPYING\n"
  },
  {
    "path": "package/prosody/prosody.mk",
    "content": "################################################################################\n#\n# prosody\n#\n################################################################################\n\nPROSODY_VERSION = 0.11.10\nPROSODY_SITE = https://prosody.im/downloads/source\nPROSODY_LICENSE = MIT\nPROSODY_LICENSE_FILES = COPYING\nPROSODY_CPE_ID_VENDOR = prosody\nPROSODY_DEPENDENCIES = host-luainterpreter luainterpreter libidn openssl\n\nPROSODY_CFLAGS = $(TARGET_CFLAGS) -fPIC -std=c99 \\\n\t$(if BR2_TOOLCHAIN_USES_MUSL,-DWITHOUT_MALLINFO)\n\nPROSODY_CONF_OPTS = \\\n\t--with-lua-bin=$(HOST_DIR)/bin \\\n\t--with-lua=$(STAGING_DIR)/usr \\\n\t--lua-version=$(LUAINTERPRETER_ABIVER) \\\n\t--c-compiler=$(TARGET_CC) \\\n\t--cflags=\"$(PROSODY_CFLAGS)\" \\\n\t--linker=$(TARGET_CC) \\\n\t--ldflags=\"$(TARGET_LDFLAGS) -shared\" \\\n\t--sysconfdir=/etc/prosody \\\n\t--prefix=/usr\n\nifeq ($(BR2_PACKAGE_LUAJIT),y)\nPROSODY_CONF_OPTS += --runwith=luajit\nendif\n\ndefine PROSODY_CONFIGURE_CMDS\n\tcd $(@D) && \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t./configure $(PROSODY_CONF_OPTS)\nendef\n\ndefine PROSODY_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine PROSODY_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=\"$(TARGET_DIR)\" -C $(@D) install\nendef\n\ndefine PROSODY_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/prosody/S50prosody \\\n\t\t$(TARGET_DIR)/etc/init.d/S50prosody\nendef\n\ndefine PROSODY_USERS\n\tprosody -1 prosody -1 * - - - Prosody user\nendef\n\n# make install installs a Makefile and meta data to generate certs\ndefine PROSODY_REMOVE_CERT_GENERATOR\n\trm -f $(TARGET_DIR)/etc/prosody/certs/Makefile\n\trm -f $(TARGET_DIR)/etc/prosody/certs/*.cnf\nendef\n\nPROSODY_POST_INSTALL_TARGET_HOOKS += PROSODY_REMOVE_CERT_GENERATOR\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/protobuf/Config.in",
    "content": "# See src/google/protobuf/stubs/platform_macros.h for supported archs.\n#\n# On PowerPC, the __atomic_*() built-ins for 1-byte, 2-byte and 4-byte\n# types are available built-in. However, the __atomic_*() built-ins for\n# 8-byte types is implemented via libatomic, so only available since gcc\n# 4.8.\n#\n# In Buildroot, to simplify things, we've decided to simply require gcc\n# 4.8 as soon as the architectures has at least one __atomic_*() built-in\n# variant that requires libatomic.\n#\n# Since protobuf most likely only uses the 1, 2 and 4-byte variants, it\n# *could* technically build with gcc 4.7. This is probably not a big deal,\n# and we can live with requiring gcc 4.8 on PowerPC to build protobuf.\n#\n# host-protobuf only builds on certain architectures\nconfig BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_arm\n\tdefault y if BR2_i386\n\tdefault y if BR2_mipsel\n\tdefault y if BR2_x86_64\n\tdefault y if BR2_sparc64\n\tdefault y if BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_21464\n\nconfig BR2_PACKAGE_PROTOBUF\n\tbool \"protobuf\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Protocol buffers are Google's language-neutral,\n\t  platform-neutral, extensible mechanism for serializing\n\t  structured data.\n\n\t  https://developers.google.com/protocol-buffers\n\ncomment \"protobuf needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n"
  },
  {
    "path": "package/protobuf/protobuf.hash",
    "content": "# Locally calculated\nsha256  6e5e117324afd944dcf67f36cf329843bc1a92229a8cd9bb573d7a83130fea7d  LICENSE\nsha256  7308590dbb95e77066b99c5674eed855c8257e70658d2af586f4a81ff0eea2b1  protobuf-cpp-3.18.0.tar.gz\n"
  },
  {
    "path": "package/protobuf/protobuf.mk",
    "content": "################################################################################\n#\n# protobuf\n#\n################################################################################\n\n# When bumping this package, make sure to also verify if the\n# python-protobuf package still works and to update its hash,\n# as they share the same version/site variables.\nPROTOBUF_VERSION = 3.18.0\nPROTOBUF_SOURCE = protobuf-cpp-$(PROTOBUF_VERSION).tar.gz\nPROTOBUF_SITE = https://github.com/protocolbuffers/protobuf/releases/download/v$(PROTOBUF_VERSION)\nPROTOBUF_LICENSE = BSD-3-Clause\nPROTOBUF_LICENSE_FILES = LICENSE\nPROTOBUF_CPE_ID_VENDOR = google\n\n# N.B. Need to use host protoc during cross compilation.\nPROTOBUF_DEPENDENCIES = host-protobuf\nPROTOBUF_CONF_OPTS = --with-protoc=$(HOST_DIR)/bin/protoc\n\nPROTOBUF_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nPROTOBUF_CXXFLAGS += -O0\nendif\n\nifeq ($(BR2_or1k),y)\nPROTOBUF_CXXFLAGS += -mcmodel=large\nendif\n\nPROTOBUF_CONF_ENV = CXXFLAGS=\"$(PROTOBUF_CXXFLAGS)\"\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nPROTOBUF_CONF_ENV += LIBS=-latomic\nendif\n\nPROTOBUF_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nPROTOBUF_DEPENDENCIES += zlib\nendif\n\ndefine PROTOBUF_REMOVE_UNNECESSARY_TARGET_FILES\n\trm -rf $(TARGET_DIR)/usr/bin/protoc\n\trm -rf $(TARGET_DIR)/usr/lib/libprotoc.so*\nendef\n\nPROTOBUF_POST_INSTALL_TARGET_HOOKS += PROTOBUF_REMOVE_UNNECESSARY_TARGET_FILES\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/protobuf-c/Config.in",
    "content": "config BR2_PACKAGE_PROTOBUF_C\n\tbool \"protobuf-c\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# host-protobuf only builds on certain architectures\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\thelp\n\t  Code generator and runtime libraries to use Protocol Buffers\n\t  from pure C (not C++).\n\n\t  https://github.com/protobuf-c/protobuf-c\n\ncomment \"protobuf-c needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n"
  },
  {
    "path": "package/protobuf-c/protobuf-c.hash",
    "content": "# Locally calculated\nsha256  1068bca1e9870e9492096f97c409cd15f10c5019c183e52ec6d53e8d18630cbf  protobuf-c-1.4.0.tar.gz\nsha256  20e800cad4550f4b19bb37fc9577dac21de13333ae66497c4c45ae489c35c34a  LICENSE\n"
  },
  {
    "path": "package/protobuf-c/protobuf-c.mk",
    "content": "################################################################################\n#\n# protobuf-c\n#\n################################################################################\n\nPROTOBUF_C_VERSION = 1.4.0\nPROTOBUF_C_SITE = $(call github,protobuf-c,protobuf-c,v$(PROTOBUF_C_VERSION))\nPROTOBUF_C_DEPENDENCIES = host-protobuf-c\nHOST_PROTOBUF_C_DEPENDENCIES = host-protobuf host-pkgconf\nPROTOBUF_C_MAKE = $(MAKE1)\nPROTOBUF_C_CONF_OPTS = --disable-protoc\nPROTOBUF_C_INSTALL_STAGING = YES\nPROTOBUF_C_LICENSE = BSD-2-Clause\nPROTOBUF_C_LICENSE_FILES = LICENSE\nPROTOBUF_C_AUTORECONF = YES\nHOST_PROTOBUF_C_AUTORECONF = YES\n\n# host-protobuf needs c++11 (since 3.6.0)\nHOST_PROTOBUF_C_CONF_ENV += CXXFLAGS=\"$(HOST_CXXFLAGS) -std=c++11\"\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/protozero/0001-CMakeLists.txt-respect-BUILD_TESTING.patch",
    "content": "From 03daae49c8fa94513b508bd12f1597e8e5e086f2 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 17 Apr 2021 13:06:44 +0200\nSubject: [PATCH] CMakeLists.txt: respect BUILD_TESTING\n\nDon't build tests if the standard cmake BUILD_TESTING variable is set to\nOFF.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/mapbox/protozero/pull/105]\n---\n CMakeLists.txt | 9 +++++----\n 1 file changed, 5 insertions(+), 4 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex f9702d6..7a40212 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -23,6 +23,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)\n \n #-----------------------------------------------------------------------------\n \n+option(BUILD_TESTING \"Build tests\" ON)\n option(WERROR \"Add -Werror flag to build (turns warnings into errors)\" ON)\n \n if(MSVC)\n@@ -134,13 +135,13 @@ install(DIRECTORY include/protozero DESTINATION include)\n \n #-----------------------------------------------------------------------------\n \n-enable_testing()\n-\n add_subdirectory(doc)\n \n add_subdirectory(tools)\n \n-add_subdirectory(test)\n-\n+if(BUILD_TESTING)\n+    enable_testing()\n+    add_subdirectory(test)\n+endif()\n \n #-----------------------------------------------------------------------------\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/protozero/Config.in",
    "content": "config BR2_PACKAGE_PROTOZERO\n\tbool \"protozero\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\thelp\n\t  Minimalistic protocol buffer decoder and encoder in C++.\n\t  Designed for high performance. Suitable for writing zero copy\n\t  parsers and encoders with minimal need for run-time allocation\n\t  of memory.\n\t  Low-level: this is designed to be a building block for writing\n\t  a very customized decoder for a stable protobuf schema. If\n\t  your protobuf schema is changing frequently or lazy decoding\n\t  is not critical for your application then this approach offers\n\t  no value: just use the C++ API that can be generated with\n\t  the Google Protobufs protoc program.\n\n\t  https://github.com/mapbox/protozero\n\ncomment \"protozero needs a toolchain w/ C++,  gcc >= 4.7\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/protozero/protozero.hash",
    "content": "# Locally calculated\nsha256  beffbdfab060854fd770178a8db9c028b5b6ee4a059a2fed82c46390a85f3f31  protozero-1.7.0.tar.gz\nsha256  1f4d477e3c2d74d8706c8f05437bd86804abe46853b1f233ce1549a4de76fa49  LICENSE.md\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  LICENSE.from_folly\n"
  },
  {
    "path": "package/protozero/protozero.mk",
    "content": "################################################################################\n#\n# protozero\n#\n################################################################################\n\nPROTOZERO_VERSION = 1.7.0\nPROTOZERO_SITE = $(call github,mapbox,protozero,v$(PROTOZERO_VERSION))\nPROTOZERO_LICENSE = BSD-2-Clause, Apache-2.0\nPROTOZERO_LICENSE_FILES = LICENSE.md LICENSE.from_folly\nPROTOZERO_INSTALL_STAGING = YES\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/proxychains-ng/0001-configure-fix-check_link_silent-test.patch",
    "content": "From 4a557f242a76c6a2a3134acf1d3279818f8ab371 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 23 Jul 2021 09:50:36 +0200\nSubject: [PATCH] configure: fix check_link_silent test\n\nReplace -o /dev/null by -o \"$tmpc\".out when testing with\ncheck_link_silent otherwise test will fail with some bugged binutils\n(https://sourceware.org/bugzilla/show_bug.cgi?id=19526) since version\n4.13 and\nhttps://github.com/rofl0r/proxychains-ng/commit/35a674bdbc294730429a1007c9e7ce01e65b49b5:\n\nchecking what's the option to use in linker to set library name ...\ncannot find an option to set library name\npackage/pkg-generic.mk:249: recipe for target '/home/buildroot/autobuild/instance-2/output-1/build/proxychains-ng-4.14/.stamp_configured' failed\n\nFixes:\n - http://autobuild.buildroot.org/results/9320d9b2c69882e23bbe7b30057eb8bee0c9d2e5\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/rofl0r/proxychains-ng/pull/387]\n---\n configure | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/configure b/configure\nindex 8b21b97..cfe19e7 100755\n--- a/configure\n+++ b/configure\n@@ -49,7 +49,8 @@ check_compile_run() {\n \n check_link_silent() {\n \tprintf \"$2\" > \"$tmpc\"\n-\t$CC $OUR_CPPFLAGS $CPPFLAGS $1 $CFLAGS \"$tmpc\" -o /dev/null >/dev/null 2>&1\n+\t$CC $OUR_CPPFLAGS $CPPFLAGS $1 $CFLAGS \"$tmpc\" -o \"$tmpc\".out  >/dev/null 2>&1\n+\trm -f \"$tmpc\".out\n }\n \n check_link() {\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/proxychains-ng/Config.in",
    "content": "config BR2_PACKAGE_PROXYCHAINS_NG\n\tbool \"proxychains-ng\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Force any tcp connections to flow through a proxy (or proxy\n\t  chain)\n\n\t  https://github.com/rofl0r/proxychains\n\ncomment \"proxychains-ng needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/proxychains-ng/proxychains-ng.hash",
    "content": "# From https://github.com/rofl0r/proxychains-ng/releases/tag/v4.14\nsha512  75a1a4629d2b7ebac9b909a694b395339cf669fa4e23bfcc57938e46377b5619f31c9651d2bc457d1ad10ec1be7747981106392bf8bf65999cb7bb9c748d7e95  proxychains-ng-4.14.tar.xz\n# Locally computed:\nsha256  86728623caeff60e9bcc37e03b432fd191de927eed48a72a3bb4ac4e53fe20df  COPYING\n"
  },
  {
    "path": "package/proxychains-ng/proxychains-ng.mk",
    "content": "################################################################################\n#\n# proxychains-ng\n#\n################################################################################\n\nPROXYCHAINS_NG_VERSION = 4.14\nPROXYCHAINS_NG_SOURCE = proxychains-ng-$(PROXYCHAINS_NG_VERSION).tar.xz\nPROXYCHAINS_NG_SITE = http://downloads.sourceforge.net/project/proxychains-ng\nPROXYCHAINS_NG_LICENSE = GPL-2.0+\nPROXYCHAINS_NG_LICENSE_FILES = COPYING\nPROXYCHAINS_NG_CPE_ID_VENDOR = proxychains-ng_project\n\ndefine PROXYCHAINS_NG_CONFIGURE_CMDS\n\tcd $(@D) && \\\n\t$(TARGET_CONFIGURE_OPTS) ./configure --prefix=/usr --sysconfdir=/etc\nendef\n\ndefine PROXYCHAINS_NG_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine PROXYCHAINS_NG_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install install-config\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/pru-software-support/Config.in",
    "content": "config BR2_PACKAGE_PRU_SOFTWARE_SUPPORT\n\tbool \"pru-software-support\"\n\tdepends on BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_HOST_PRU_SOFTWARE_SUPPORT\n\thelp\n\t  PRU firmware examples extracted from TI's PRU software\n\t  support package. See readme.txt for installation details.\n\n\t  https://git.ti.com/pru-software-support-package/pru-software-support-package\n"
  },
  {
    "path": "package/pru-software-support/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PRU_SOFTWARE_SUPPORT\n\tbool \"host pru-software-support\"\n\tdepends on BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_HOST_TI_CGT_PRU\n\thelp\n\t  This package provides useful headers and libraries for the\n\t  PRU unit found on some TI processors e.g. AM3358. Note that\n\t  the included labs and examples aren't built, they can be\n\t  built using the corresponding target package.\n\n\t  https://git.ti.com/pru-software-support-package/pru-software-support-package\n"
  },
  {
    "path": "package/pru-software-support/pru-software-support.hash",
    "content": "# Locally-calculated hash\nsha256  4a6b1b2b8ca892c442fd7fce7ddbf6b74e0619def2bb19f3ad67c94720b7ca3a pru-software-support-package-v5.9.0.tar.gz\nsha256  62a2f56498cd1bac2d4ea6ea1c941affba1e4bb65bfdf2dcffd8e5079fa34399  PRU-Package-v6.1-Manifest.html\n"
  },
  {
    "path": "package/pru-software-support/pru-software-support.mk",
    "content": "################################################################################\n#\n# pru-software-support\n#\n################################################################################\n\nPRU_SOFTWARE_SUPPORT_VERSION = 5.9.0\nPRU_SOFTWARE_SUPPORT_SITE = https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/snapshot\nPRU_SOFTWARE_SUPPORT_SOURCE = $(PRU_SOFTWARE_SUPPORT_NAME)-package-v$(PRU_SOFTWARE_SUPPORT_VERSION).tar.gz\nPRU_SOFTWARE_SUPPORT_LICENSE = BSD-3-Clause, Public Domain\nPRU_SOFTWARE_SUPPORT_LICENSE_FILES = PRU-Package-v6.1-Manifest.html\nPRU_SOFTWARE_SUPPORT_DEPENDENCIES = host-ti-cgt-pru host-pru-software-support\nHOST_PRU_SOFTWARE_SUPPORT_DEPENDENCIES = host-ti-cgt-pru\n\ndefine HOST_PRU_SOFTWARE_SUPPORT_BUILD_CMDS\n\t$(MAKE) PRU_CGT=$(TI_CGT_PRU_INSTALLDIR) -C $(@D)/lib/src\nendef\n\n# install this library support alongside PRU toolchain i.e.\n# everything in TI_CGT_PRU_INSTALLDIR as PRU_CGT\ndefine HOST_PRU_SOFTWARE_SUPPORT_INSTALL_CMDS\n\tmkdir -p $(TI_CGT_PRU_INSTALLDIR)/usr/include\n\tcp -dpfr $(@D)/include/* $(TI_CGT_PRU_INSTALLDIR)/usr/include\n\tmkdir -p $(TI_CGT_PRU_INSTALLDIR)/usr/lib\n\tcp -dpfr $(@D)/lib/src/*/gen/*.lib $(TI_CGT_PRU_INSTALLDIR)/usr/lib/\nendef\n\ndefine PRU_SOFTWARE_SUPPORT_BUILD_CMDS\n\t$(MAKE) PRU_CGT=$(TI_CGT_PRU_INSTALLDIR) -C $(@D)/examples\nendef\n\ndefine PRU_SOFTWARE_SUPPORT_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/share/pru-software-support\n\tcp -dpfr $(@D)/examples/* $(TARGET_DIR)/usr/share/pru-software-support/\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/pru-software-support/readme.txt",
    "content": "PRU Software Support\n====================\n\nTwo different packages are provided from the TI PRU software support\ncode base.\n\n1. The include files and rpmsg static library for the PRU are\n   installed alongside the host package for the PRU code generation\n   tools package i.e. $(TI_CGT_PRU_INSTALLDIR).\n\n2. A target package for all the examples installed to\n   /usr/share/pru-software-support/. Users wanting to test a specific\n   example should copy or link it to a directory where the kernel\n   looks for firmware, e.g:\n\n # cp /usr/share/pru-software-support/am335x/PRU_gpioToggle/gen/PRU_gpioToggle.out \\\n   /lib/firmware/am335x-pru0-fw\n\nTo get started with the PRU, have a look at the labs [1].\n\n[1] http://processors.wiki.ti.com/index.php/PRU_Training:_Hands-on_Labs\n"
  },
  {
    "path": "package/psmisc/Config.in",
    "content": "config BR2_PACKAGE_PSMISC\n\tbool \"psmisc\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Helpful /proc related utilities such as pstree, fuser, and\n\t  killall\n\n\t  https://gitlab.com/psmisc/psmisc\n"
  },
  {
    "path": "package/psmisc/psmisc.hash",
    "content": "# From https://sourceforge.net/projects/psmisc/files/psmisc/\nmd5  8114cd4489b95308efe2509c3a406bbf  psmisc-23.4.tar.xz\nsha1  a4c34111e570c43967efb2bbd8a4f31d94d22e0f  psmisc-23.4.tar.xz\n# Locally computed:\nsha256  7f0cceeace2050c525f3ebb35f3ba01d618b8d690620580bdb8cd8269a0c1679  psmisc-23.4.tar.xz\nsha256  dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa  COPYING\n"
  },
  {
    "path": "package/psmisc/psmisc.mk",
    "content": "################################################################################\n#\n# psmisc\n#\n################################################################################\n\nPSMISC_VERSION = 23.4\nPSMISC_SITE = http://downloads.sourceforge.net/project/psmisc/psmisc\nPSMISC_SOURCE = psmisc-$(PSMISC_VERSION).tar.xz\nPSMISC_LICENSE = GPL-2.0+\nPSMISC_LICENSE_FILES = COPYING\nPSMISC_DEPENDENCIES = ncurses $(TARGET_NLS_DEPENDENCIES)\n\nifeq ($(BR2_TOOLCHAIN_HAS_SSP),)\n# Don't force -fstack-protector when SSP is not available in toolchain\nPSMISC_CONF_OPTS = --disable-harden-flags\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/psplash/Config.in",
    "content": "config BR2_PACKAGE_PSPLASH\n\tbool \"psplash\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  PSplash is a userspace graphical boot splash screen for\n\t  mainly embedded Linux devices supporting a 16bpp or 32bpp\n\t  framebuffer. It has few dependencies (just libc), supports\n\t  basic images and text and handles rotation. Its visual look\n\t  is configurable by basic source changes.\n\n\t  Also included is a 'client' command utility for sending\n\t  information to psplash such as boot progress information.\n\n\t  Start the drawing process with 'psplash -n&' as early as\n\t  possible. Note: psplash creates a FIFO in /tmp for\n\t  communication with psplash-write.\n\n\t  Usage:\n\t  * Set progress bar to 50 percent:\n\t    psplash-write \"PROGRESS 50\"\n\n\t  * Display message \"foobar\" above progress bar:\n\t    psplash-write \"MSG foobar\"\n\n\t  * Terminate psplash:\n\t    psplash-write \"QUIT\"\n\n\t  http://git.yoctoproject.org/cgit/cgit.cgi/psplash/\n\nif BR2_PACKAGE_PSPLASH\n\nconfig BR2_PACKAGE_PSPLASH_IMAGE\n\tstring \"psplash image\"\n\thelp\n\t  Use a personalized png image as boot splash.\n\t  Let it empty if you want to keep the psplash default image.\n\nendif\n\ncomment \"psplash needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/psplash/psplash-start.service",
    "content": "[Unit]\nDescription=Starts Psplash Boot screen\nDefaultDependencies=no\nRequiresMountsFor=/run\n\n[Service]\nExecStart=/usr/bin/psplash -n\n\n[Install]\nWantedBy=sysinit.target\n"
  },
  {
    "path": "package/psplash/psplash-systemd.service",
    "content": "[Unit]\nDescription=Start psplash-systemd progress communication helper\nDefaultDependencies=no\nAfter=systemd-start.service\nRequires=psplash-start.service\nRequiresMountsFor=/run\n\n[Service]\nExecStart=/usr/bin/psplash-systemd\n\n[Install]\nWantedBy=sysinit.target\n"
  },
  {
    "path": "package/psplash/psplash.hash",
    "content": "# Locally computed\nsha256  2c1344dd8414415d80a01484b1cc29e78f99c31d5266189540e5966a7dc6e10e  psplash-fd33a9b3d68c89fa22ff6873f4f9fd28bd85830c-br1.tar.gz\nsha256  f9c375a1be4a41f7b70301dd83c91cb89e41567478859b77eef375a52d782505  COPYING\n"
  },
  {
    "path": "package/psplash/psplash.mk",
    "content": "################################################################################\n#\n# psplash\n#\n################################################################################\n\nPSPLASH_VERSION = fd33a9b3d68c89fa22ff6873f4f9fd28bd85830c\nPSPLASH_SITE = git://git.yoctoproject.org/psplash\nPSPLASH_LICENSE = GPL-2.0+\nPSPLASH_LICENSE_FILES = COPYING\nPSPLASH_AUTORECONF = YES\nPSPLASH_DEPENDENCIES = host-gdk-pixbuf host-pkgconf\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nPSPLASH_DEPENDENCIES += systemd\nPSPLASH_CONF_OPTS += --with-systemd\nelse\nPSPLASH_CONF_OPTS += --without-systemd\nendif\n\nPSPLASH_IMAGE = $(call qstrip,$(BR2_PACKAGE_PSPLASH_IMAGE))\n\nifneq ($(PSPLASH_IMAGE),)\ndefine PSPLASH_COPY_IMAGE\n\tcp $(PSPLASH_IMAGE) $(@D)/base-images/psplash-poky.png\nendef\n\nPSPLASH_POST_EXTRACT_HOOKS += PSPLASH_COPY_IMAGE\nendif\n\ndefine PSPLASH_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/psplash/psplash-start.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/psplash-start.service\n\n\t$(INSTALL) -D -m 644 package/psplash/psplash-systemd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/psplash-systemd.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ptm2human/Config.in",
    "content": "config BR2_PACKAGE_PTM2HUMAN_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_arm\n\tdefault y if BR2_armeb\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_aarch64_be\n\nconfig BR2_PACKAGE_PTM2HUMAN\n\tbool \"ptm2human\"\n\tdepends on BR2_PACKAGE_PTM2HUMAN_ARCH_SUPPORTS\n\thelp\n\t  ptm2human is a decoder for trace data outputted by Program\n\t  Trace Macrocell (PTM) and Embedded Trace Macrocell\n\t  (ETMv4). It deconstructs ID packets and data packets\n\t  from the formatter of ARM Coresight ETB, and then\n\t  translates the trace data to a human-readable format.\n\n\t  https://github.com/hwangcc23/ptm2human\n"
  },
  {
    "path": "package/ptm2human/ptm2human.hash",
    "content": "# Computed locally\nsha256 28947eeb458d8b6a362cbeb8c5cb6098006274af04ebb4f5da70eac89f927d95  ptm2human-d0b8b6be9897ea5b04fd6460038a4773cec078bc.tar.gz\nsha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  LICENSE\n"
  },
  {
    "path": "package/ptm2human/ptm2human.mk",
    "content": "################################################################################\n#\n# ptm2human\n#\n################################################################################\n\nPTM2HUMAN_VERSION = d0b8b6be9897ea5b04fd6460038a4773cec078bc\nPTM2HUMAN_SITE = $(call github,hwangcc23,ptm2human,$(PTM2HUMAN_VERSION))\nPTM2HUMAN_LICENSE = GPL-2.0\nPTM2HUMAN_LICENSE_FILES = LICENSE\n\n# Straight out from an non-autoconfigured git tree:\nPTM2HUMAN_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ptpd/Config.in",
    "content": "config BR2_PACKAGE_PTPD\n\tbool \"ptpd\"\n\thelp\n\t  The PTP daemon (PTPd) implements the Precision Time protocol\n\t  (PTP) as defined by the IEEE-1588-2002.\n\n\t  http://ptpd.sourceforge.net/\n"
  },
  {
    "path": "package/ptpd/S65ptpd",
    "content": "#!/bin/sh\n#\n# Start ptpd\n#\n\ncase \"$1\" in\n  start)\n\tprintf \"Starting ptpd: \"\n\tstart-stop-daemon -S -q -x /usr/sbin/ptpd -- -S\n\tif [ $? != 0 ]; then\n\t\techo \"FAILED\"\n\t\texit 1\n\telse\n\t\techo \"OK\"\n\tfi\n\t;;\n  stop)\n\tprintf \"Stopping ptpd: \"\n\tstart-stop-daemon -K -q -x /usr/sbin/ptpd\n\techo \"OK\"\n\t;;\n  restart|reload)\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/ptpd/ptpd.hash",
    "content": "# Locally computed:\nsha256  a7c6ea83bd53da75ae04a7b7a25fe7c597b4e9ff1f93d46f4502e3fa8a2cb950  ptpd-1.1.0.tar.gz\nsha256  be69f30947abef91e0bce161005fe56b116b770e459e3e6980279349de47c366  COPYRIGHT\n"
  },
  {
    "path": "package/ptpd/ptpd.mk",
    "content": "################################################################################\n#\n# ptpd\n#\n################################################################################\n\nPTPD_VERSION = 1.1.0\nPTPD_SITE = http://downloads.sourceforge.net/project/ptpd/ptpd/$(PTPD_VERSION)\nPTPD_LICENSE = BSD\nPTPD_LICENSE_FILES = COPYRIGHT\n\ndefine PTPD_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/src\nendef\n\ndefine PTPD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 -D $(@D)/src/ptpd $(TARGET_DIR)/usr/sbin/ptpd\nendef\n\ndefine PTPD_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/ptpd/S65ptpd \\\n\t\t$(TARGET_DIR)/etc/init.d/S65ptpd\nendef\n\ndefine PTPD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/ptpd/ptpd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/ptpd.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ptpd/ptpd.service",
    "content": "[Unit]\nDescription=Precision Time Protocol daemon\nAfter=syslog.target network.target\n\n[Service]\nExecStart=/usr/sbin/ptpd -c\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/ptpd2/0001-musl.patch",
    "content": "Fix musl build\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr ptpd-ptpd-2.3.1.org/src/dep/net.c ptpd-ptpd-2.3.1/src/dep/net.c\n--- ptpd-ptpd-2.3.1.org/src/dep/net.c\t2015-06-29 17:13:29.000000000 +0200\n+++ ptpd-ptpd-2.3.1/src/dep/net.c\t2016-01-24 00:35:44.509860065 +0100\n@@ -82,7 +82,6 @@\n #ifdef SO_TIMESTAMPING\n #include <linux/net_tstamp.h>\n #include <linux/sockios.h>\n-#include <linux/ethtool.h>\n #endif /* SO_TIMESTAMPING */\n \n /**\n"
  },
  {
    "path": "package/ptpd2/0002-ntp_isc_md5-rename-EVP_MD_CTX-into-PTPD_EVP_MD_CTX.patch",
    "content": "From af1d16d90ff273413a57cd02689f4fb005403609 Mon Sep 17 00:00:00 2001\nFrom: Giulio Benetti <giulio.benetti@micronovasrl.com>\nDate: Fri, 31 Aug 2018 18:46:56 +0200\nSubject: [PATCH] ntp_isc_md5: rename EVP_MD_CTX into PTPD_EVP_MD_CTX\n\nEVP_MD_CTX can conflict with openssl that defines a completely different\ntypedef with same name.\n\nSince this typedef is used only twice in the entire ptpd,\nsubstitute EVP_MD_CTX with PTPD_EVP_MD_CTX.\n\nSigned-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>\n---\n src/dep/ntpengine/ntp_isc_md5.c | 2 +-\n src/dep/ntpengine/ntp_isc_md5.h | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/src/dep/ntpengine/ntp_isc_md5.c b/src/dep/ntpengine/ntp_isc_md5.c\nindex 850d004..3216de8 100644\n--- a/src/dep/ntpengine/ntp_isc_md5.c\n+++ b/src/dep/ntpengine/ntp_isc_md5.c\n@@ -262,7 +262,7 @@ MD5authencrypt(\n {\n \tu_char\tdigest[64];\n \tu_int\tlen;\n-\tEVP_MD_CTX ctx;\n+\tPTPD_EVP_MD_CTX ctx;\n         pkt[length / 4] = htonl(keyid); \n \tEVP_DigestInit(&ctx);\n \tEVP_DigestUpdate(&ctx, (u_char *)key, (u_int)strlen(key));\ndiff --git a/src/dep/ntpengine/ntp_isc_md5.h b/src/dep/ntpengine/ntp_isc_md5.h\nindex fa6e2ee..236c0e4 100644\n--- a/src/dep/ntpengine/ntp_isc_md5.h\n+++ b/src/dep/ntpengine/ntp_isc_md5.h\n@@ -80,7 +80,7 @@ isc_md5_final(isc_md5_t *ctx, unsigned char *digest);\n # define MD5Init(c)             isc_md5_init(c)\n # define MD5Update(c, p, s)     isc_md5_update(c, p, s)\n # define MD5Final(d, c)         isc_md5_final((c), (d)) /* swapped */\n-  typedef MD5_CTX                       EVP_MD_CTX;\n+  typedef MD5_CTX                       PTPD_EVP_MD_CTX;\n # define EVP_DigestInit(c)              MD5Init(c)\n # define EVP_DigestUpdate(c, p, s)      MD5Update(c, p, s)\n # define EVP_DigestFinal(c, d, pdl)     \\\n-- \n2.14.4\n\n"
  },
  {
    "path": "package/ptpd2/0003-Solve-issue-25-Removing-type-U64-from-net-snmp-relat.patch",
    "content": "From 84157b11e8f27318f7291823c657f6313c3b60af Mon Sep 17 00:00:00 2001\nFrom: Jan Breuer <jan.breuer@jaybee.cz>\nDate: Tue, 12 Jul 2016 18:07:08 +0200\nSubject: [PATCH] Solve issue #25 - Removing type U64 from net-snmp related\n code\n\n[Thomas: Backport to 2.3.1.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n src/dep/snmp.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/dep/snmp.c b/src/dep/snmp.c\nindex 5c08aaa..3086c86 100644\n--- a/src/dep/snmp.c\n+++ b/src/dep/snmp.c\n@@ -221,7 +221,7 @@ snmpHeaderIndexBest(struct snmpHeaderIndex *idx)\n \n #define SNMP_LOCAL_VARIABLES\t\t\t\\\n \tstatic unsigned long long_ret;\t\t\\\n-\tstatic U64 counter64_ret;\t\t\\\n+\tstatic struct counter64 counter64_ret;\t\\\n \tstatic uint32_t ipaddr;\t\t\t\\\n \tInteger64 bigint;\t\t\t\\\n \tstruct snmpHeaderIndex idx;\t\t\\\n-- \n2.14.4\n\n"
  },
  {
    "path": "package/ptpd2/Config.in",
    "content": "config BR2_PACKAGE_PTPD2\n\tbool \"ptpd2\"\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  The PTP daemon (PTPd) implements the Precision Time protocol\n\t  (PTP) as defined by the IEEE-1588-2008.\n\n\t  https://github.com/ptpd/ptpd\n"
  },
  {
    "path": "package/ptpd2/S65ptpd2",
    "content": "#!/bin/sh\n#\n# Start ptpd2\n#\n\ncase \"$1\" in\n  start)\n\tprintf \"Starting ptpd2: \"\n\tstart-stop-daemon -S -q -x /usr/sbin/ptpd2 -- -g\n\tif [ $? != 0 ]; then\n\t\techo \"FAILED\"\n\t\texit 1\n\telse\n\t\techo \"OK\"\n\tfi\n\t;;\n  stop)\n\tprintf \"Stopping ptpd2: \"\n\tstart-stop-daemon -K -q -x /usr/sbin/ptpd2\n\techo \"OK\"\n\t;;\n  restart|reload)\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/ptpd2/ptpd2.hash",
    "content": "# Locally computed:\nsha256  267ad61d09d97069acec5d4878dceda20d0ddbebd27557d80230847848cee6c2  ptpd2-2.3.1.tar.gz\nsha256  5e101ac565a8e74ef4efbf7e0c95ef9333e00618c05dbf5fb4ed50a5bab1ff09  COPYRIGHT\n"
  },
  {
    "path": "package/ptpd2/ptpd2.mk",
    "content": "################################################################################\n#\n# ptpd2\n#\n################################################################################\n\nPTPD2_VERSION = 2.3.1\nPTPD2_SITE = $(call github,ptpd,ptpd,ptpd-$(PTPD2_VERSION))\nPTPD2_DEPENDENCIES = libpcap\nPTPD2_CONF_OPTS = --with-pcap-config=$(STAGING_DIR)/usr/bin/pcap-config\n# configure not shipped\nPTPD2_AUTORECONF = YES\nPTPD2_LICENSE = BSD-2-Clause\nPTPD2_LICENSE_FILES = COPYRIGHT\n\nifeq ($(BR2_STATIC_LIBS),y)\nPTPD2_CONF_OPTS += LIBS=\"`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\"\nendif\n\nifeq ($(BR2_PACKAGE_NETSNMP),y)\nPTPD2_CONF_ENV += ac_cv_path_PATH_NET_SNMP_CONFIG=$(STAGING_DIR)/usr/bin/net-snmp-config\nPTPD2_DEPENDENCIES += netsnmp\nelse\nPTPD2_CONF_OPTS += --disable-snmp\nendif\n\ndefine PTPD2_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/ptpd2/S65ptpd2 \\\n\t\t$(TARGET_DIR)/etc/init.d/S65ptpd2\nendef\n\ndefine PTPD2_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/ptpd2/ptpd2.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/ptpd2.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ptpd2/ptpd2.service",
    "content": "[Unit]\nDescription=Precision Time Protocol daemon\nAfter=syslog.target network.target\n\n[Service]\nExecStart=/usr/sbin/ptpd2 -C -g\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/pugixml/Config.in",
    "content": "config BR2_PACKAGE_PUGIXML\n\tbool \"pugixml\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Light-weight, simple and fast XML parser for C++ with XPath\n\t  support\n\n\t  Features:\n\t  * DOM-like interface with rich traversal/modification\n\t    capabilities\n\t  * Extremely fast non-validating XML parser which constructs\n\t    the DOM tree from an XML file/buffer\n\t  * XPath 1.0 implementation for complex data-driven tree\n\t    queries\n\t  * Full Unicode support with Unicode interface variants and\n\t    automatic encoding conversions\n\n\t  http://pugixml.org/\n\t  https://github.com/zeux/pugixml\n\nif BR2_PACKAGE_PUGIXML\n\nconfig BR2_PACKAGE_PUGIXML_XPATH_SUPPORT\n\tbool \"Enable XPath support\"\n\tdefault y\n\thelp\n\t  When disabled, both XPath interfaces and XPath implementation\n\t  are excluded from compilation. This option is provided in case\n\t  you do not need XPath functionality and need to save code\n\t  space.\n\nconfig BR2_PACKAGE_PUGIXML_COMPACT\n\tbool \"Enable compact mode\"\n\thelp\n\t  Activates a different internal representation of document\n\t  storage that is much more memory efficient for documents with\n\t  a lot of markup (i.e.  nodes and attributes), but is slightly\n\t  slower to parse and access.\n\n\t  http://pugixml.org/docs/manual.html#dom.memory.compact\n\nconfig BR2_PACKAGE_PUGIXML_HEADER_ONLY\n\tbool \"Enable header-only version\"\n\thelp\n\t  All source code for pugixml will be included in every\n\t  translation unit that includes pugixml.hpp. This is how most\n\t  of Boost and STL libraries work.\n\n\t  http://pugixml.org/docs/manual.html#install.building.header\n\nendif\n\ncomment \"pugixml needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/pugixml/pugixml.hash",
    "content": "# Locally computed:\nsha256  8ddf57b65fb860416979a3f0640c2ad45ddddbbafa82508ef0a0af3ce7061716  pugixml-1.11.4.tar.gz\nsha256  ee495f34aeff0c578a99f3350a2050d4e5860d27b2004c03c384a594fa2b0a7a  LICENSE.md\n"
  },
  {
    "path": "package/pugixml/pugixml.mk",
    "content": "################################################################################\n#\n# pugixml\n#\n################################################################################\n\nPUGIXML_VERSION = 1.11.4\nPUGIXML_SITE = http://github.com/zeux/pugixml/releases/download/v$(PUGIXML_VERSION)\nPUGIXML_LICENSE = MIT\nPUGIXML_LICENSE_FILES = LICENSE.md\nPUGIXML_CPE_ID_VENDOR = pugixml_project\n\nPUGIXML_INSTALL_STAGING = YES\n\n# Pugixml will automatically enable 'long long' support on C++11 compilers,\n# which means gcc 4.8+. As gcc always supports the 'long long' type,\n# force-enable this option to support older gcc versions. See also:\n# https://gcc.gnu.org/onlinedocs/gcc/Long-Long.html\nPUGIXML_BUILD_DEFINES += PUGIXML_HAS_LONG_LONG\nHOST_PUGIXML_BUILD_DEFINES += PUGIXML_HAS_LONG_LONG\n\nifeq ($(BR2_PACKAGE_PUGIXML_XPATH_SUPPORT),)\nPUGIXML_BUILD_DEFINES += PUGIXML_NO_XPATH\nendif\nifeq ($(BR2_PACKAGE_PUGIXML_COMPACT),y)\nPUGIXML_BUILD_DEFINES += PUGIXML_COMPACT\nendif\nifeq ($(BR2_PACKAGE_PUGIXML_HEADER_ONLY),y)\nPUGIXML_BUILD_DEFINES += PUGIXML_HEADER_ONLY\nendif\n\nifdef PUGIXML_BUILD_DEFINES\nPUGIXML_CONF_OPTS += -DBUILD_DEFINES=\"$(subst $(space),;,$(PUGIXML_BUILD_DEFINES))\"\nendif\n\nHOST_PUGIXML_CONF_OPTS += \\\n\t-DBUILD_PKGCONFIG=ON \\\n\t-DBUILD_DEFINES=\"$(subst $(space),;,$(HOST_PUGIXML_BUILD_DEFINES))\"\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/pulseaudio/Config.in",
    "content": "config BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC\n\tbool\n\tdefault y if BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS || \\\n\t\tBR2_TOOLCHAIN_HAS_SYNC_4\n\nconfig BR2_PACKAGE_PULSEAUDIO_ENABLE_ATOMIC\n\tbool\n\tselect BR2_PACKAGE_LIBATOMIC_OPS if !BR2_TOOLCHAIN_HAS_SYNC_4\n\nconfig BR2_PACKAGE_PULSEAUDIO\n\tbool \"pulseaudio\"\n\tdepends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_AUDIO if BR2_PACKAGE_BLUEZ5_UTILS # runtime\n\tselect BR2_PACKAGE_LIBTOOL\n\tselect BR2_PACKAGE_LIBSNDFILE\n\tselect BR2_PACKAGE_PULSEAUDIO_ENABLE_ATOMIC\n\tselect BR2_PACKAGE_SPEEX\n\thelp\n\t  PulseAudio is a sound system for POSIX OSes, meaning that it\n\t  is a proxy for your sound applications. It allows you to do\n\t  advanced operations on your sound data as it passes between\n\t  your application and your hardware. Things like transferring\n\t  the audio to a different machine, changing the sample format\n\t  or channel count and mixing several sounds into one are\n\t  easily achieved using a sound server.\n\n\t  http://pulseaudio.org\n\nif BR2_PACKAGE_PULSEAUDIO\n\nconfig BR2_PACKAGE_PULSEAUDIO_DAEMON\n\tbool \"start as a system daemon\"\n\thelp\n\t  PulseAudio can be started as a system daemon. This is not the\n\t  recommended way of using PulseAudio unless you are building a\n\t  headless system.\n\nendif\n\ncomment \"pulseaudio needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/pulseaudio/S50pulseaudio",
    "content": "#!/bin/sh\n#\n# Starts pulseaudio.\n#\n\n\nstart() {\n\tprintf \"Starting pulseaudio: \"\n\tumask 077\n\t/usr/bin/pulseaudio \\\n\t\t--system \\\n\t\t--daemonize \\\n\t\t--disallow-module-loading \\\n\t\t--disallow-exit \\\n\t\t--exit-idle-time=-1 \\\n\t\t--use-pid-file \\\n\t\t--disable-shm\n\techo \"OK\"\n}\nstop() {\n\tprintf \"Stopping pulseaudio: \"\n\tPULSE_RUNTIME_PATH=/var/run/pulse /usr/bin/pulseaudio --kill\n\techo \"OK\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "package/pulseaudio/pulseaudio.hash",
    "content": "# From https://lists.freedesktop.org/archives/pulseaudio-discuss/2021-January/031990.html\nsha256  75d3f7742c1ae449049a4c88900e454b8b350ecaa8c544f3488a2562a9ff66f1  pulseaudio-14.2.tar.xz\n# Locally computed\nsha256  c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42  GPL\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  LGPL\nsha256  a1064b9838b6b4feee61eaeb0925da4b4834c984b77716558860c4294ed6c015  LICENSE\n"
  },
  {
    "path": "package/pulseaudio/pulseaudio.mk",
    "content": "################################################################################\n#\n# pulseaudio\n#\n################################################################################\n\nPULSEAUDIO_VERSION = 14.2\nPULSEAUDIO_SOURCE = pulseaudio-$(PULSEAUDIO_VERSION).tar.xz\nPULSEAUDIO_SITE = https://freedesktop.org/software/pulseaudio/releases\nPULSEAUDIO_INSTALL_STAGING = YES\nPULSEAUDIO_LICENSE = LGPL-2.1+ (specific license for modules, see LICENSE file)\nPULSEAUDIO_LICENSE_FILES = LICENSE GPL LGPL\nPULSEAUDIO_CPE_ID_VENDOR = pulseaudio\nPULSEAUDIO_SELINUX_MODULES = pulseaudio xdg\nPULSEAUDIO_CONF_OPTS = \\\n\t--disable-default-build-tests \\\n\t--disable-legacy-database-entry-format \\\n\t--disable-manpages \\\n\t--disable-running-from-build-tree\n\nPULSEAUDIO_DEPENDENCIES = \\\n\thost-pkgconf libtool libsndfile speex \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\t$(if $(BR2_PACKAGE_LIBGLIB2),libglib2) \\\n\t$(if $(BR2_PACKAGE_AVAHI_DAEMON),avahi) \\\n\t$(if $(BR2_PACKAGE_DBUS),dbus) \\\n\t$(if $(BR2_PACKAGE_NCURSES),ncurses) \\\n\t$(if $(BR2_PACKAGE_OPENSSL),openssl) \\\n\t$(if $(BR2_PACKAGE_FFTW_SINGLE),fftw-single) \\\n\t$(if $(BR2_PACKAGE_SYSTEMD),systemd)\n\nifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y)\nPULSEAUDIO_CONF_OPTS += --enable-samplerate\nPULSEAUDIO_DEPENDENCIES += libsamplerate\nelse\nPULSEAUDIO_CONF_OPTS += --disable-samplerate\nendif\n\nifeq ($(BR2_PACKAGE_GDBM),y)\nPULSEAUDIO_CONF_OPTS += --with-database=gdbm\nPULSEAUDIO_DEPENDENCIES += gdbm\nelse\nPULSEAUDIO_CONF_OPTS += --with-database=simple\nendif\n\nifeq ($(BR2_PACKAGE_JACK2),y)\nPULSEAUDIO_CONF_OPTS += --enable-jack\nPULSEAUDIO_DEPENDENCIES += jack2\nelse\nPULSEAUDIO_CONF_OPTS += --disable-jack\nendif\n\nifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y)\nPULSEAUDIO_DEPENDENCIES += libatomic_ops\nifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y)\nPULSEAUDIO_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -DAO_NO_SPARC_V9\"\nendif\nendif\n\nifeq ($(BR2_PACKAGE_ORC),y)\nPULSEAUDIO_DEPENDENCIES += orc\nPULSEAUDIO_CONF_ENV += ORCC=$(HOST_DIR)/bin/orcc\nPULSEAUDIO_CONF_OPTS += --enable-orc\nelse\nPULSEAUDIO_CONF_OPTS += --disable-orc\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nPULSEAUDIO_DEPENDENCIES += libcap\nPULSEAUDIO_CONF_OPTS += --with-caps\nelse\nPULSEAUDIO_CONF_OPTS += --without-caps\nendif\n\n# gtk3 support needs X11 backend\nifeq ($(BR2_PACKAGE_LIBGTK3_X11),y)\nPULSEAUDIO_DEPENDENCIES += libgtk3\nPULSEAUDIO_CONF_OPTS += --enable-gtk3\nelse\nPULSEAUDIO_CONF_OPTS += --disable-gtk3\nendif\n\nifeq ($(BR2_PACKAGE_LIBSOXR),y)\nPULSEAUDIO_CONF_OPTS += --with-soxr\nPULSEAUDIO_DEPENDENCIES += libsoxr\nelse\nPULSEAUDIO_CONF_OPTS += --without-soxr\nendif\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS)$(BR2_PACKAGE_SBC),yy)\nPULSEAUDIO_CONF_OPTS += --enable-bluez5\nPULSEAUDIO_DEPENDENCIES += bluez5_utils sbc\nelse\nPULSEAUDIO_CONF_OPTS += --disable-bluez5\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nPULSEAUDIO_CONF_OPTS += --enable-udev\nPULSEAUDIO_DEPENDENCIES += udev\nelse\nPULSEAUDIO_CONF_OPTS += --disable-udev\nendif\n\nifeq ($(BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING),y)\nPULSEAUDIO_CONF_OPTS += --enable-webrtc-aec\nPULSEAUDIO_DEPENDENCIES += webrtc-audio-processing\nelse\nPULSEAUDIO_CONF_OPTS += --disable-webrtc-aec\nendif\n\n# neon intrinsics not available with float-abi=soft\nifeq ($(BR2_ARM_SOFT_FLOAT),)\nifeq ($(BR2_ARM_CPU_HAS_NEON),y)\nPULSEAUDIO_USE_NEON = y\nendif\nendif\n\nifeq ($(PULSEAUDIO_USE_NEON),y)\nPULSEAUDIO_CONF_OPTS += --enable-neon-opt=yes\nelse\nPULSEAUDIO_CONF_OPTS += --enable-neon-opt=no\nendif\n\n# pulseaudio alsa backend needs pcm/mixer apis\nifeq ($(BR2_PACKAGE_ALSA_LIB_PCM)$(BR2_PACKAGE_ALSA_LIB_MIXER),yy)\nPULSEAUDIO_DEPENDENCIES += alsa-lib\nPULSEAUDIO_CONF_OPTS += --enable-alsa\nelse\nPULSEAUDIO_CONF_OPTS += --disable-alsa\nendif\n\nifeq ($(BR2_PACKAGE_LIBXCB)$(BR2_PACKAGE_XLIB_LIBSM)$(BR2_PACKAGE_XLIB_LIBXTST),yyy)\nPULSEAUDIO_DEPENDENCIES += libxcb xlib_libSM xlib_libXtst\n\n# .desktop file generation needs nls support, so fake it for !locale builds\n# https://bugs.freedesktop.org/show_bug.cgi?id=54658\nifeq ($(BR2_SYSTEM_ENABLE_NLS),)\ndefine PULSEAUDIO_FIXUP_DESKTOP_FILES\n\tcp $(@D)/src/daemon/pulseaudio.desktop.in \\\n\t\t$(@D)/src/daemon/pulseaudio.desktop\nendef\nPULSEAUDIO_POST_PATCH_HOOKS += PULSEAUDIO_FIXUP_DESKTOP_FILES\nendif\n\nelse\nPULSEAUDIO_CONF_OPTS += --disable-x11\nendif\n\n# ConsoleKit module init failure breaks user daemon startup\ndefine PULSEAUDIO_REMOVE_CONSOLE_KIT\n\trm -f $(TARGET_DIR)/usr/lib/pulse-$(PULSEAUDIO_VERSION)/modules/module-console-kit.so\nendef\n\ndefine PULSEAUDIO_REMOVE_VALA\n\trm -rf $(TARGET_DIR)/usr/share/vala\nendef\n\nPULSEAUDIO_POST_INSTALL_TARGET_HOOKS += PULSEAUDIO_REMOVE_VALA \\\n\tPULSEAUDIO_REMOVE_CONSOLE_KIT\n\nifeq ($(BR2_PACKAGE_PULSEAUDIO_DAEMON),y)\ndefine PULSEAUDIO_USERS\n\tpulse -1 pulse -1 * /var/run/pulse - audio,pulse-access\nendef\n\ndefine PULSEAUDIO_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/pulseaudio/S50pulseaudio \\\n\t\t$(TARGET_DIR)/etc/init.d/S50pulseaudio\nendef\n\ndefine PULSEAUDIO_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/pulseaudio/pulseaudio.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/pulseaudio.service\nendef\n\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/pulseaudio/pulseaudio.service",
    "content": "[Unit]\nDescription=PulseAudio Sound System\nAfter=syslog.target\n\n[Service]\nUMask=077\nExecStart=/usr/bin/pulseaudio --system --daemonize=no\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/pulseview/0001-Replace-obsolete-deprecated-Qt-methods.patch",
    "content": "From caacc9bc622238ca48674ea6f40d07466e4b97a5 Mon Sep 17 00:00:00 2001\nFrom: Valentin Ochs <a@0au.de>\nDate: Sat, 20 Jun 2020 16:01:27 +0200\nSubject: [PATCH] Replace obsolete/deprecated Qt methods\n\n[Thomas: Backport from upstream commit\nae726b70a7ada9a4be5808e00f0c951318479684, one conflict manually\nresolved in pv/util.cpp.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n[Fabrice: restore original patch in pv/util.cpp for 0.4.2]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n pv/util.cpp                     | 21 +++++++++++++++++++--\n pv/util.hpp                     | 10 ++++++++++\n pv/views/trace/decodetrace.cpp  |  3 ++-\n pv/views/trace/ruler.cpp        |  2 +-\n pv/widgets/timestampspinbox.cpp |  2 +-\n 5 files changed, 33 insertions(+), 5 deletions(-)\n\ndiff --git a/pv/util.cpp b/pv/util.cpp\nindex 49b9467c..2a63038d 100644\n--- a/pv/util.cpp\n+++ b/pv/util.cpp\n@@ -137,7 +137,7 @@ QString format_time_si(const Timestamp& v, SIPrefix prefix,\n \tQString s;\n \tQTextStream ts(&s);\n \tif (sign && !v.is_zero())\n-\t\tts << forcesign;\n+\t\tts.setNumberFlags(ts.numberFlags() | QTextStream::ForceSign);\n \tts << qSetRealNumberPrecision(precision) << (v * multiplier);\n \tts << ' ' << prefix << unit;\n \n@@ -171,7 +171,7 @@ QString format_value_si(double v, SIPrefix prefix, unsigned precision,\n \tQString s;\n \tQTextStream ts(&s);\n \tif (sign && (v != 0))\n-\t\tts << forcesign;\n+\t\tts.setNumberFlags(ts.numberFlags() | QTextStream::ForceSign);\n \tts.setRealNumberNotation(QTextStream::FixedNotation);\n \tts.setRealNumberPrecision(precision);\n \tts << (v * multiplier) << ' ' << prefix << unit;\n@@ -281,5 +281,22 @@ vector<string> split_string(string text, string separator)\n \treturn result;\n }\n \n+/**\n+ * Return the width of a string in a given font.\n+ *\n+ * @param[in] metric metrics of the font\n+ * @param[in] string the string whose width should be determined\n+ *\n+ * @return width of the string in pixels\n+ */\n+std::streamsize text_width(const QFontMetrics &metric, const QString &string)\n+{\n+#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)\n+\treturn metric.horizontalAdvance(string);\n+#else\n+\treturn metric.width(string);\n+#endif\n+}\n+\n } // namespace util\n } // namespace pv\ndiff --git a/pv/util.hpp b/pv/util.hpp\nindex dd7be222..ad904f85 100644\n--- a/pv/util.hpp\n+++ b/pv/util.hpp\n@@ -30,6 +30,7 @@\n \n #include <QMetaType>\n #include <QString>\n+#include <QFontMetrics>\n \n using std::string;\n using std::vector;\n@@ -137,6 +138,15 @@ QString format_time_minutes(const Timestamp& t, signed precision = 0,\n \n vector<string> split_string(string text, string separator);\n \n+/**\n+ * Return the width of a string in a given font.\n+ * @param[in] metric metrics of the font\n+ * @param[in] string the string whose width should be determined\n+ *\n+ * @return width of the string in pixels\n+ */\n+std::streamsize text_width(const QFontMetrics &metric, const QString &string);\n+\n } // namespace util\n } // namespace pv\n \ndiff --git a/pv/views/trace/decodetrace.cpp b/pv/views/trace/decodetrace.cpp\nindex 9c7196bf..1ee7ae9f 100644\n--- a/pv/views/trace/decodetrace.cpp\n+++ b/pv/views/trace/decodetrace.cpp\n@@ -103,7 +103,8 @@ DecodeTrace::DecodeTrace(pv::Session &session,\n \n \t// Determine shortest string we want to see displayed in full\n \tQFontMetrics m(QApplication::font());\n-\tmin_useful_label_width_ = m.width(\"XX\"); // e.g. two hex characters\n+\t// e.g. two hex characters\n+\tmin_useful_label_width_ = util::text_width(m, \"XX\");\n \n \t// For the base color, we want to start at a very different color for\n \t// every decoder stack, so multiply the index with a number that is\ndiff --git a/pv/views/trace/ruler.cpp b/pv/views/trace/ruler.cpp\nindex acea8a36..68134966 100644\n--- a/pv/views/trace/ruler.cpp\n+++ b/pv/views/trace/ruler.cpp\n@@ -218,7 +218,7 @@ void Ruler::paintEvent(QPaintEvent*)\n \t\tconst int rightedge = width();\n \t\tconst int x_tick = tick.first;\n \t\tif ((x_tick > leftedge) && (x_tick < rightedge)) {\n-\t\t\tconst int x_left_bound = QFontMetrics(font()).width(tick.second) / 2;\n+\t\t\tconst int x_left_bound = util::text_width(QFontMetrics(font()), tick.second) / 2;\n \t\t\tconst int x_right_bound = rightedge - x_left_bound;\n \t\t\tconst int x_legend = min(max(x_tick, x_left_bound), x_right_bound);\n \t\t\tp.drawText(x_legend, ValueMargin, 0, text_height,\ndiff --git a/pv/widgets/timestampspinbox.cpp b/pv/widgets/timestampspinbox.cpp\nindex 21b3d0d7..383aed1f 100644\n--- a/pv/widgets/timestampspinbox.cpp\n+++ b/pv/widgets/timestampspinbox.cpp\n@@ -75,7 +75,7 @@ QSize TimestampSpinBox::minimumSizeHint() const\n {\n \tconst QFontMetrics fm(fontMetrics());\n \tconst int l = round(value_).str().size() + precision_ + 10;\n-\tconst int w = fm.width(QString(l, '0'));\n+\tconst int w = util::text_width(fm, QString(l, '0'));\n \tconst int h = lineEdit()->minimumSizeHint().height();\n \treturn QSize(w, h);\n }\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/pulseview/0002-Fix-broken-build-due-to-C-template-behind-C-linkage.patch",
    "content": "From ed643f0b4ac587204a5243451cda181ee1405d62 Mon Sep 17 00:00:00 2001\nFrom: =?utf8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>\nDate: Wed, 28 Apr 2021 02:14:47 +0200\nSubject: [PATCH] Fix broken build due to C++ template behind C linkage\n\nglib/gatomic.h since 2.68 includes type_traits, which causes a compilation\nerror:\nIn file included from /usr/include/glib-2.0/glib/gatomic.h:31,\n                 from /usr/include/glib-2.0/glib/gthread.h:32,\n                 from /usr/include/glib-2.0/glib/gasyncqueue.h:32,\n                 from /usr/include/glib-2.0/glib.h:32,\n                 from /usr/include/libsigrokdecode/libsigrokdecode.h:25,\n                 from /home/abuild/rpmbuild/BUILD/pulseview-0.4.2/pv/data/decode/annotation.cpp:21:\n/usr/include/c++/10/type_traits:2308:3: error: template with C linkage\n2308 |   template<typename _CTp, typename _Rp>\n\nAs libsigrokdecode.h declares extern C linkage itself where necessary,\nremove it from pulseviews include statements from the last two occasions.\n\n[Retrieved from:\nhttps://sigrok.org/gitweb/?p=pulseview.git;a=commit;h=ed643f0b4ac587204a5243451cda181ee1405d62]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n pv/data/decode/annotation.cpp  | 2 --\n pv/views/trace/decodetrace.cpp | 2 --\n 2 files changed, 4 deletions(-)\n\ndiff --git a/pv/data/decode/annotation.cpp b/pv/data/decode/annotation.cpp\nindex 7f233478..f8a5c47b 100644\n--- a/pv/data/decode/annotation.cpp\n+++ b/pv/data/decode/annotation.cpp\n@@ -17,9 +17,7 @@\n  * along with this program; if not, see <http://www.gnu.org/licenses/>.\n  */\n \n-extern \"C\" {\n #include <libsigrokdecode/libsigrokdecode.h>\n-}\n \n #include <cassert>\n #include <vector>\ndiff --git a/pv/views/trace/decodetrace.cpp b/pv/views/trace/decodetrace.cpp\nindex 409f1d28..888064d0 100644\n--- a/pv/views/trace/decodetrace.cpp\n+++ b/pv/views/trace/decodetrace.cpp\n@@ -17,9 +17,7 @@\n  * along with this program; if not, see <http://www.gnu.org/licenses/>.\n  */\n \n-extern \"C\" {\n #include <libsigrokdecode/libsigrokdecode.h>\n-}\n \n #include <limits>\n #include <mutex>\n-- \n2.24.0.rc2\n\n"
  },
  {
    "path": "package/pulseview/Config.in",
    "content": "config BR2_PACKAGE_PULSEVIEW\n\tbool \"pulseview\"\n\tdepends on BR2_PACKAGE_QT5\n\t# libsigrok->libglib2:\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\t# libsigrok->libzip\n\tdepends on !BR2_STATIC_LIBS\n\t# libsigrok\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9\n\tdepends on BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_LIBSIGROK\n\tselect BR2_PACKAGE_LIBSIGROKCXX\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\tselect BR2_PACKAGE_QT5BASE_PNG\n\tselect BR2_PACKAGE_QT5SVG\n\tselect BR2_PACKAGE_QT5TOOLS\n\tselect BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_SERIALIZATION\n\thelp\n\t  PulseView is a Qt based logic analyzer, oscilloscope\n\t  and MSO GUI for sigrok.\n\n\t  http://sigrok.org/wiki/PulseView\n\ncomment \"pulseview needs a toolchain w/ locale, wchar, threads, dynamic library, C++, gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_QT5\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| BR2_STATIC_LIBS || !BR2_ENABLE_LOCALE || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/pulseview/pulseview.hash",
    "content": "# Locally computed\nsha256  f042f77a3e1b35bf30666330e36ec38fab8d248c3693c37b7e35d401c3bfabcb  pulseview-0.4.2.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/pulseview/pulseview.mk",
    "content": "################################################################################\n#\n# pulseview\n#\n################################################################################\n\nPULSEVIEW_VERSION = 0.4.2\nPULSEVIEW_SITE = http://sigrok.org/download/source/pulseview\nPULSEVIEW_LICENSE = GPL-3.0+\nPULSEVIEW_LICENSE_FILES = COPYING\nPULSEVIEW_DEPENDENCIES = libsigrok qt5base qt5svg qt5tools boost\nPULSEVIEW_CONF_OPTS = -DDISABLE_WERROR=TRUE\n\nifeq ($(BR2_PACKAGE_BOOST_TEST),y)\nPULSEVIEW_CONF_OPTS += -DENABLE_TESTS=TRUE\nelse\nPULSEVIEW_CONF_OPTS += -DENABLE_TESTS=FALSE\nendif\n\nifeq ($(BR2_PACKAGE_LIBSIGROKDECODE),y)\nPULSEVIEW_CONF_OPTS += -DENABLE_DECODE=TRUE\nPULSEVIEW_DEPENDENCIES += libsigrokdecode\nelse\nPULSEVIEW_CONF_OPTS += -DENABLE_DECODE=FALSE\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/pure-ftpd/0001-listdir-reuse-a-single-buffer-to-store-every-file-name-to-display.patch",
    "content": "From aea56f4bcb9948d456f3fae4d044fd3fa2e19706 Mon Sep 17 00:00:00 2001\nFrom: Frank Denis <github@pureftpd.org>\nDate: Mon, 30 Dec 2019 17:40:04 +0100\nSubject: [PATCH] listdir(): reuse a single buffer to store every file name to\n display\n\nAllocating a new buffer for each entry is useless.\n\nAnd as these buffers are allocated on the stack, on systems with a\nsmall stack size, with many entries, the limit can easily be reached,\ncausing a stack exhaustion and aborting the user session.\n\nReported by Antonio Morales from the GitHub Security Lab team, thanks!\n[Retrieved from:\nhttps://github.com/jedisct1/pure-ftpd/commit/aea56f4bcb9948d456f3fae4d044fd3fa2e19706]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/ls.c | 15 ++++++++-------\n 1 file changed, 8 insertions(+), 7 deletions(-)\n\ndiff --git a/src/ls.c b/src/ls.c\nindex cf804c7..f8a588f 100644\n--- a/src/ls.c\n+++ b/src/ls.c\n@@ -661,6 +661,8 @@ static void listdir(unsigned int depth, int f, void * const tls_fd,\n     char *names;\n     PureFileInfo *s;\n     PureFileInfo *r;\n+    char *alloca_subdir;\n+    size_t sizeof_subdir;\n     int d;\n \n     if (depth >= max_ls_depth || matches >= max_ls_files) {\n@@ -690,14 +692,12 @@ static void listdir(unsigned int depth, int f, void * const tls_fd,\n     }\n     outputfiles(f, tls_fd);\n     r = dir;\n+    sizeof_subdir = PATH_MAX + 1U;\n+    if ((alloca_subdir = ALLOCA(sizeof_subdir)) == NULL) {\n+        goto toomany;\n+    }\n     while (opt_R && r != s) {\n         if (r->name_offset != (size_t) -1 && !chdir(FI_NAME(r))) {\n-            char *alloca_subdir;\n-            const size_t sizeof_subdir = PATH_MAX + 1U;\n-\n-            if ((alloca_subdir = ALLOCA(sizeof_subdir)) == NULL) {\n-                goto toomany;\n-            }\n             if (SNCHECK(snprintf(alloca_subdir, sizeof_subdir, \"%s/%s\",\n                                  name, FI_NAME(r)), sizeof_subdir)) {\n                 goto nolist;\n@@ -706,8 +706,8 @@ static void listdir(unsigned int depth, int f, void * const tls_fd,\n             wrstr(f, tls_fd, alloca_subdir);\n             wrstr(f, tls_fd, \":\\r\\n\\r\\n\");\n             listdir(depth + 1U, f, tls_fd, alloca_subdir);\n+\n             nolist:\n-            ALLOCA_FREE(alloca_subdir);\n             if (matches >= max_ls_files) {\n                 goto toomany;\n             }\n@@ -720,6 +720,7 @@ static void listdir(unsigned int depth, int f, void * const tls_fd,\n         r++;\n     }\n     toomany:\n+    ALLOCA_FREE(alloca_subdir);\n     free(names);\n     free(dir);\n     names = NULL;\n"
  },
  {
    "path": "package/pure-ftpd/0002-pure_strcmp-len-s2-can-be-len-s1.patch",
    "content": "From 36c6d268cb190282a2c17106acfd31863121b58e Mon Sep 17 00:00:00 2001\nFrom: Frank Denis <github@pureftpd.org>\nDate: Mon, 24 Feb 2020 15:19:43 +0100\nSubject: [PATCH] pure_strcmp(): len(s2) can be > len(s1)\n\nReported by Antonio Morales from GitHub Security Labs, thanks!\n[Retrieved from:\nhttps://github.com/jedisct1/pure-ftpd/commit/36c6d268cb190282a2c17106acfd31863121b]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/utils.c | 8 +++++++-\n 1 file changed, 7 insertions(+), 1 deletion(-)\n\ndiff --git a/src/utils.c b/src/utils.c\nindex f41492d..a7f0381 100644\n--- a/src/utils.c\n+++ b/src/utils.c\n@@ -45,5 +45,11 @@ int pure_memcmp(const void * const b1_, const void * const b2_, size_t len)\n \n int pure_strcmp(const char * const s1, const char * const s2)\n {\n-    return pure_memcmp(s1, s2, strlen(s1) + 1U);\n+    const size_t s1_len = strlen(s1);\n+    const size_t s2_len = strlen(s2);\n+\n+    if (s1_len != s2_len) {\n+        return -1;\n+    }\n+    return pure_memcmp(s1, s2, s1_len);\n }\n"
  },
  {
    "path": "package/pure-ftpd/0003-diraliases-always-set-the-tail-of-the-list-to-NULL.patch",
    "content": "From 8d0d42542e2cb7a56d645fbe4d0ef436e38bcefa Mon Sep 17 00:00:00 2001\nFrom: Frank Denis <github@pureftpd.org>\nDate: Tue, 18 Feb 2020 18:36:58 +0100\nSubject: [PATCH] diraliases: always set the tail of the list to NULL\n\nSpotted and reported by Antonio Norales from GitHub Security Labs.\nThanks!\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://github.com/jedisct1/pure-ftpd/commit/8d0d42542e2cb7a56d645fbe4d0ef436e38bcefa]\n---\n src/diraliases.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/diraliases.c b/src/diraliases.c\nindex 4002a36..fb70273 100644\n--- a/src/diraliases.c\n+++ b/src/diraliases.c\n@@ -93,7 +93,6 @@ int init_aliases(void)\n                 (tail->dir = strdup(dir)) == NULL) {\n                 die_mem();\n             }\n-            tail->next = NULL;\n         } else {\n             DirAlias *curr;\n \n@@ -105,6 +104,7 @@ int init_aliases(void)\n             tail->next = curr;\n             tail = curr;\n         }\n+        tail->next = NULL;\n     }\n     fclose(fp);\n     aliases_up++;\n"
  },
  {
    "path": "package/pure-ftpd/0004-Initialize-the-max-upload-file-size-when-quotas-are-enabled.patch",
    "content": "From 37ad222868e52271905b94afea4fc780d83294b4 Mon Sep 17 00:00:00 2001\nFrom: Frank Denis <github@pureftpd.org>\nDate: Tue, 23 Nov 2021 18:53:34 +0100\nSubject: [PATCH] Initialize the max upload file size when quotas are enabled\n\nDue to an unwanted check, files causing the quota to be exceeded\nwere deleted after the upload, but not during the upload.\n\nThe bug was introduced in 2009 in version 1.0.23\n\nSpotted by @DroidTest, thanks!\n\n[Retrieved from:\nhttps://github.com/jedisct1/pure-ftpd/commit/37ad222868e52271905b94afea4fc780d83294b4]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/ftpd.c | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/src/ftpd.c b/src/ftpd.c\nindex d856839..be2fd78 100644\n--- a/src/ftpd.c\n+++ b/src/ftpd.c\n@@ -4247,8 +4247,7 @@ void dostor(char *name, const int append, const int autorename)\n     if (quota_update(&quota, 0LL, 0LL, &overflow) == 0 &&\n         (overflow > 0 || quota.files >= user_quota_files ||\n          quota.size > user_quota_size ||\n-         (max_filesize >= (off_t) 0 &&\n-          (max_filesize = user_quota_size - quota.size) < (off_t) 0))) {\n+         (max_filesize = user_quota_size - quota.size) < (off_t) 0)) {\n         overflow = 1;\n         (void) close(f);\n         goto afterquota;\n"
  },
  {
    "path": "package/pure-ftpd/Config.in",
    "content": "config BR2_PACKAGE_PURE_FTPD\n\tbool \"pure-ftpd\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Pure-FTPd is a free (BSD), secure, production-quality and\n\t  standard- conformant FTP server. It doesn't provide useless\n\t  bells and whistles, but focuses on efficiency and ease of\n\t  use. It provides simple answers to common needs, plus unique\n\t  useful features for personal users as well as hosting\n\t  providers.\n\n\t  http://www.pureftpd.org\n\nif BR2_PACKAGE_PURE_FTPD\n\nconfig BR2_PACKAGE_PURE_FTPD_FTPWHO\n\tbool \"ftpwho\"\n\thelp\n\t  Enable the pure-ftpd command.  Pure-ftpwho shows current\n\t  Pure-ftpd client sessions.  Only the system administrator\n\t  may run this.  Output can be text (default), HTML, XML data\n\t  and parser-optimized.\n\nconfig BR2_PACKAGE_PURE_FTPD_QUOTAS\n\tbool \"quotas\"\n\thelp\n\t  Enable virtual quotas. With virtual quotas, restrictions can\n\t  be placed on the maximum number of files a user can store in\n\t  his account. In addition, restrictions can also be placed on\n\t  the total size.\n\nconfig BR2_PACKAGE_PURE_FTPD_UPLOADSCRIPT\n\tbool \"uploadscript\"\n\thelp\n\t  Enable pure-upload script. Automatically run an external\n\t  program after a successful upload.\n\nendif\n"
  },
  {
    "path": "package/pure-ftpd/pure-ftpd.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256 8a727dfef810f275fba3eb6099760d4f8a0bdeae2c1197d0d5bfeb8c1b2f61b6  pure-ftpd-1.0.49.tar.bz2\nsha256 3a9e94382a69d04aa434d69b20ff2c01dbbfcb7191f05f69a7109c0ee1559c19  COPYING\n"
  },
  {
    "path": "package/pure-ftpd/pure-ftpd.mk",
    "content": "################################################################################\n#\n# pure-ftpd\n#\n################################################################################\n\nPURE_FTPD_VERSION = 1.0.49\nPURE_FTPD_SITE = https://download.pureftpd.org/pub/pure-ftpd/releases\nPURE_FTPD_SOURCE = pure-ftpd-$(PURE_FTPD_VERSION).tar.bz2\nPURE_FTPD_LICENSE = ISC\nPURE_FTPD_LICENSE_FILES = COPYING\nPURE_FTPD_CPE_ID_VENDOR = pureftpd\nPURE_FTPD_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\n# 0001-listdir-reuse-a-single-buffer-to-store-every-file-name-to-display.patch\nPURE_FTPD_IGNORE_CVES += CVE-2019-20176\n\n# 0002-pure_strcmp-len-s2-can-be-len-s1.patch\nPURE_FTPD_IGNORE_CVES += CVE-2020-9365\n\n# 0003-diraliases-always-set-the-tail-of-the-list-to-NULL.patch\nPURE_FTPD_IGNORE_CVES += CVE-2020-9274\n\n# 0004-Initialize-the-max-upload-file-size-when-quotas-are-enabled.patch\nPURE_FTPD_IGNORE_CVES += CVE-2021-40524\n\nPURE_FTPD_CONF_OPTS = \\\n\t--with-altlog \\\n\t--with-puredb\n\nifeq ($(BR2_PACKAGE_ELFUTILS),y)\nPURE_FTPD_DEPENDENCIES += elfutils\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nPURE_FTPD_CONF_OPTS += --with-capabilities\nPURE_FTPD_DEPENDENCIES += libcap\nelse\nPURE_FTPD_CONF_OPTS += --without-capabilities\nendif\n\nifeq ($(BR2_PACKAGE_LIBSODIUM),y)\nPURE_FTPD_DEPENDENCIES += libsodium\nendif\n\nifeq ($(BR2_PACKAGE_MYSQL),y)\nPURE_FTPD_CONF_OPTS += --with-mysql=$(STAGING_DIR)/usr\nPURE_FTPD_DEPENDENCIES += mysql\nelse\nPURE_FTPD_CONF_OPTS += --without-mysql\nendif\n\nifeq ($(BR2_PACKAGE_OPENLDAP),y)\nPURE_FTPD_CONF_OPTS += --with-ldap\nPURE_FTPD_DEPENDENCIES += openldap\nelse\nPURE_FTPD_CONF_OPTS += --without-ldap\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nPURE_FTPD_CONF_OPTS += --with-tls\nPURE_FTPD_DEPENDENCIES += host-pkgconf openssl\nPURE_FTPD_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nelse\nPURE_FTPD_CONF_OPTS += --without-tls\nendif\n\nifeq ($(BR2_PACKAGE_POSTGRESQL),y)\nPURE_FTPD_CONF_OPTS += --with-pgsql=$(STAGING_DIR)/usr\nPURE_FTPD_DEPENDENCIES += postgresql\nelse\nPURE_FTPD_CONF_OPTS += --without-pgsql\nendif\n\nifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),)\nPURE_FTPD_CONF_ENV += ax_cv_check_cflags___fPIE=no ax_cv_check_ldflags___fPIE=no\nendif\n\nifeq ($(BR2_PACKAGE_PURE_FTPD_FTPWHO),y)\nPURE_FTPD_CONF_OPTS += --with-ftpwho\nendif\n\nifeq ($(BR2_PACKAGE_PURE_FTPD_QUOTAS),y)\nPURE_FTPD_CONF_OPTS += --with-quotas\nendif\n\nifeq ($(BR2_PACKAGE_PURE_FTPD_UPLOADSCRIPT),y)\nPURE_FTPD_CONF_OPTS += --with-uploadscript\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nPURE_FTPD_CONF_OPTS += --with-pam\nPURE_FTPD_DEPENDENCIES += linux-pam\nelse\nPURE_FTPD_CONF_OPTS += --without-pam\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/putty/0001-unix-uxutils.h-fix-build-on-uclibc.patch",
    "content": "From 3f30f3a7e3f07f5ca3cef0f405b02e22a018c6e4 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 9 May 2021 15:22:29 +0200\nSubject: [PATCH] unix/uxutils.h: fix build on uclibc\n\nBuild on uclibc is broken since version 0.75 and commit\n65383082bf0c49cec63f4b36001a40bd9b13edf6 because AT_HWCAP2 is used\neven if <sys/auxv.h> is not available:\n\nunix/uxutils.c: In function 'platform_aes_hw_available':\nunix/uxutils.c:13:22: error: 'AT_HWCAP2' undeclared (first use in this function)\n   13 |     return getauxval(AT_HWCAP2) & HWCAP2_AES;\n      |                      ^~~~~~~~~\n\nTo fix this build failure, include <elf.h>\n\nFixes:\n - http://autobuild.buildroot.org/results/726f7c5ce13e78ed91e827b872e9d7ccfa13f298\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to Simon Tatham <anakin@pobox.com>]\n---\n unix/uxutils.h | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/unix/uxutils.h b/unix/uxutils.h\nindex c9acff53..b80bf972 100644\n--- a/unix/uxutils.h\n+++ b/unix/uxutils.h\n@@ -18,6 +18,8 @@\n \n #if defined __arm__ || defined __aarch64__\n \n+#include <elf.h>\n+\n #ifdef HAVE_SYS_TYPES_H\n #include <sys/types.h>\n #endif\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/putty/Config.in",
    "content": "config BR2_PACKAGE_PUTTY\n\tbool \"putty\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  PuTTY is a free SSH and Telnet client. Without GTK2\n\t  activated, only the commandline tools plink, pscp, psftp,\n\t  and puttygen are built; enable GTK2 for the graphical\n\t  client.\n\n\t  http://www.chiark.greenend.org.uk/~sgtatham/putty/\n\ncomment \"putty needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/putty/putty.hash",
    "content": "# Hashes from: http://the.earth.li/~sgtatham/putty/0.76/{md5,sha1,sha256,sha512}sums\nmd5  9d22f8c56c1eaa1c0af3098438f25908  putty-0.76.tar.gz\nsha1  de09f50aee330eb05ad0cb81b970d0cc8e5c9b25  putty-0.76.tar.gz\nsha256  547cd97a8daa87ef71037fab0773bceb54a8abccb2f825a49ef8eba5e045713f  putty-0.76.tar.gz\nsha512  4576b359593928c6eba923f2d7b66ac0f2cf00e0c217cdbbb124471c3b35feb090e623847bfc507a4ef106cb3067aac47419e241b11dd8bf4ae554061fa93c25  putty-0.76.tar.gz\n\n# Locally calculated\nsha256  3f3e870dd3d0867d79370b1d433602c60bb91b59de04e5d8f2a149b788530d53  LICENCE\n"
  },
  {
    "path": "package/putty/putty.mk",
    "content": "################################################################################\n#\n# putty\n#\n################################################################################\n\nPUTTY_VERSION = 0.76\nPUTTY_SITE = http://the.earth.li/~sgtatham/putty/$(PUTTY_VERSION)\nPUTTY_LICENSE = MIT\nPUTTY_LICENSE_FILES = LICENCE\nPUTTY_CPE_ID_VENDOR = putty\nPUTTY_CONF_OPTS = --disable-gtktest\n\nifeq ($(BR2_PACKAGE_LIBGTK2),y)\nPUTTY_CONF_OPTS += --with-gtk=2\nPUTTY_DEPENDENCIES += libgtk2\nelse\nPUTTY_CONF_OPTS += --without-gtk\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/pv/Config.in",
    "content": "config BR2_PACKAGE_PV\n\tbool \"pv\"\n\thelp\n\t  Pipe Viewer - is a terminal-based tool for\n\t  monitoring the progress of data through a\n\t  pipeline.\n\n\t  http://www.ivarch.com/programs/pv.shtml\n"
  },
  {
    "path": "package/pv/pv.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  e831951eff0718fba9b1ef286128773b9d0e723e1fbfae88d5a3188814fdc603  pv-1.6.20.tar.bz2\n\n# Hash for license file\nsha256  280e182171df3e9bb4a9b407326e88521151fcb8f4f8557255f26177d5900ccf  doc/COPYING\n"
  },
  {
    "path": "package/pv/pv.mk",
    "content": "################################################################################\n#\n# pv\n#\n################################################################################\n\nPV_VERSION = 1.6.20\nPV_SOURCE = pv-$(PV_VERSION).tar.bz2\nPV_SITE = http://www.ivarch.com/programs/sources\nPV_LICENSE = Artistic-2.0\nPV_LICENSE_FILES = doc/COPYING\nPV_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\n\n# --relax linker option is enabled by default on sparc/sparc64\n# architectures, and it can't be used together with -r option, so\n# disable it.\nifeq ($(BR2_sparc)$(BR2_sparc64),y)\nPV_LDFLAGS = \"-Wl,--no-relax\"\nendif\n\n# While 'pv' uses autoconf, it does not use automake for its\n# makefiles. It uses $(LD) $(LDFLAGS) to achieve partial linking, but\n# using 'ld' directly doesn't work well with some toolchain\n# configuration, as the ld default emulation may not necessarily be\n# the correct one. By passing the below values for LD and LDFLAGS, we\n# ensure that 'gcc' is used to do these partial linking steps.\nPV_MAKE_OPTS = \\\n\tLD=\"$(TARGET_CC)\" \\\n\tLDFLAGS=\"-Wl,-r -nostdlib $(PV_LDFLAGS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/pwgen/Config.in",
    "content": "config BR2_PACKAGE_PWGEN\n\tbool \"pwgen\"\n\thelp\n\t  Pwgen is a small, GPL'ed password generator which creates\n\t  passwords which can be easily memorized by a human.\n\n\t  http://sourceforge.net/projects/pwgen/\n"
  },
  {
    "path": "package/pwgen/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PWGEN\n\tbool \"host pwgen\"\n\thelp\n\t  Pwgen is a small, GPL'ed password generator which creates\n\t  passwords which can be easily memorized by a human.\n\n\t  http://sourceforge.net/projects/pwgen/\n"
  },
  {
    "path": "package/pwgen/pwgen.hash",
    "content": "# From http://sourceforge.net/projects/pwgen/files/pwgen/2.08/\nmd5\t6cfba450ac6ff72d11e88a6b0b049165\tpwgen-2.08.tar.gz\nsha1\t6406deba61297784888c2ec0c14e3c735a85a2b6\tpwgen-2.08.tar.gz\n# Locally computed:\nsha256 5d3e49e01ef782be5841d5d1f7fb64d290cd86459598a913818584a46a2f81a1 debian/copyright\n"
  },
  {
    "path": "package/pwgen/pwgen.mk",
    "content": "################################################################################\n#\n# pwgen\n#\n################################################################################\n\nPWGEN_VERSION = 2.08\nPWGEN_SITE = http://downloads.sourceforge.net/project/pwgen/pwgen/$(PWGEN_VERSION)\nPWGEN_LICENSE = GPL-2.0\nPWGEN_LICENSE_FILES = debian/copyright\nPWGEN_CPE_ID_VENDOR = pwgen_project\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/python/0001-setup.py-do-not-add-invalid-header-locations.patch",
    "content": "From 3dc31a435b67de2ba3dd3457f0c939e20b58e8de Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:17:06 +0100\nSubject: [PATCH] setup.py: do not add invalid header locations\n\nThis piece of code incorrectly adds /usr/include to\nself.compiler.include_dirs, and results in the following invalid\ncompilation line:\n\n/home/thomas/projets/buildroot/output/host/usr/bin/arm-none-linux-gnueabi-gcc -fPIC \\\n  -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 \\\n  -pipe -Os -DNDEBUG -g -O3 -Wall -Wstrict-prototypes \\\n  -I/usr/include -I. -IInclude -I./Include \\\n  -I/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/include \\\n  -I/home/thomas/projets/buildroot/output/build/python-2.7.6/Include \\\n  -I/home/thomas/projets/buildroot/output/build/python-2.7.6 \\\n  -c /home/thomas/projets/buildroot/output/build/python-2.7.6/Modules/mathmodule.c \\\n  -o build/temp.linux2-arm-2.7/home/thomas/projets/buildroot/output/build/python-2.7.6/Modules/mathmodule.o\ncc1: warning: include location \"/usr/include\" is unsafe for cross-compilation [-Wpoison-system-directories]\n[...]\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n setup.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/setup.py b/setup.py\nindex 54054c2..64001e2 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -496,7 +496,7 @@ class PyBuildExt(build_ext):\n                     for directory in reversed(options.dirs):\n                         add_dir_to_list(dir_list, directory)\n \n-        if os.path.normpath(sys.prefix) != '/usr' \\\n+        if False and os.path.normpath(sys.prefix) != '/usr' \\\n                 and not sysconfig.get_config_var('PYTHONFRAMEWORK'):\n             # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework\n             # (PYTHONFRAMEWORK is set) to avoid # linking problems when\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/python/0002-Fix-get_python_inc-for-cross-compilation.patch",
    "content": "From 367ee7d103cf9f670c3925d555edf6f6a5b9d8d5 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:17:25 +0100\nSubject: [PATCH] Fix get_python_inc() for cross-compilation\n\nWhen we are cross compiling, doing os.path.dirname(sys.executable) to\nget the build directory is incorrect, because we're executing the host\nPython to build things for the target. Instead, we should use the\nproject_base variable.\n\nThis fixes cross-compilation, which was adding incorrect header paths\npointing to the location where the host Python was built:\n\n/home/thomas/projets/buildroot/output/host/usr/bin/arm-none-linux-gnueabi-gcc -fPIC -fno-strict-aliasing \\\n  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -DNDEBUG -g -O3 -Wall -Wstrict-prototypes \\\n  -I/usr/include -I. -IInclude -I./Include -I/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/include \\\n  -I/home/thomas/projets/buildroot/output/host/usr/bin/Include -I/home/thomas/projets/buildroot/output/host/usr/bin \\\n  -c /home/thomas/projets/buildroot/output/build/python-2.7.6/Modules/_struct.c \\\n  -o build/temp.linux2-arm-2.7/home/thomas/projets/buildroot/output/build/python-2.7.6/Modules/_struct.o\n\nThis patch allows to fix the\n/home/thomas/projets/buildroot/output/host/usr/bin/Include and\n/home/thomas/projets/buildroot/output/host/usr/bin paths that are\nincorrectly added to the header paths.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Asaf: update for 2.7.17]\nSigned-off-by: Asaf Kahlon <asafka7@gmail.com>\n---\n Lib/distutils/sysconfig.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py\nindex 1a4b792644..14c7d81c48 100644\n--- a/Lib/distutils/sysconfig.py\n+++ b/Lib/distutils/sysconfig.py\n@@ -85,7 +85,7 @@ def get_python_inc(plat_specific=0, prefix=None):\n     if os.name == \"posix\":\n         if python_build:\n             if sys.executable:\n-                buildir = os.path.dirname(sys.executable)\n+                buildir = project_base\n             else:\n                 # sys.executable can be empty if argv[0] has been changed\n                 # and Python is unable to retrieve the real program name\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/python/0003-Change-the-install-location-of-_sysconfigdata.py.patch",
    "content": "From e3f3c454ec4992a2283640cef0a35da5a05fb399 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:17:59 +0100\nSubject: [PATCH] Change the install location of _sysconfigdata.py\n\nThe _sysconfigdata.py module contains definitions that are needed when\nbuilding Python modules. In cross-compilation mode, when building\nPython extensions for the target, we need to use the _sysconfigdata.py\nof the target Python while executing the host Python.\n\nHowever until now, the _sysconfigdata.py module was installed in\nbuild/lib.<arch>-<version> directory, together with a number of\narchitecture-specific shared objects, which cannot be used with the\nhost Python.\n\nTo solve this problem, this patch moves _sysconfigdata.py to a\nseparate location, build/sysconfigdata.<arch>-<version>/, and only\nthis directory gets added to the PYTHONPATH of the host Python\ninterpreter when building Python modules for the target.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in | 12 ++++++++++--\n configure.ac    |  2 +-\n 2 files changed, 11 insertions(+), 3 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 9297e7fc89..49d3c0926f 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -509,6 +509,9 @@ pybuilddir.txt: $(BUILDPYTHON)\n \t\trm -f ./pybuilddir.txt ; \\\n \t\texit 1 ; \\\n \tfi\n+\techo `cat pybuilddir.txt`/sysconfigdata > pysysconfigdatadir.txt\n+\tmkdir -p `cat pysysconfigdatadir.txt`\n+\tcp `cat pybuilddir.txt`/_sysconfigdata.py `cat pysysconfigdatadir.txt`\n \n # This is shared by the math and cmath modules\n Modules/_math.o: Modules/_math.c Modules/_math.h\n@@ -1091,7 +1094,7 @@ libinstall:\tbuild_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c\n \t\telse\ttrue; \\\n \t\tfi; \\\n \tdone\n-\t@for i in $(srcdir)/Lib/*.py `cat pybuilddir.txt`/_sysconfigdata.py $(srcdir)/Lib/*.doc $(srcdir)/Lib/*.egg-info ; \\\n+\t@for i in $(srcdir)/Lib/*.py $(srcdir)/Lib/*.doc $(srcdir)/Lib/*.egg-info ; \\\n \tdo \\\n \t\tif test -x $$i; then \\\n \t\t\t$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \\\n@@ -1101,6 +1104,11 @@ libinstall:\tbuild_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c\n \t\t\techo $(INSTALL_DATA) $$i $(LIBDEST); \\\n \t\tfi; \\\n \tdone\n+\t$(INSTALL_DATA) `cat pysysconfigdatadir.txt`/_sysconfigdata.py \\\n+\t\t$(DESTDIR)$(LIBDEST)\n+\tmkdir -p $(DESTDIR)$(LIBDEST)/sysconfigdata\n+\t$(INSTALL_DATA) `cat pysysconfigdatadir.txt`/_sysconfigdata.py \\\n+\t\t$(DESTDIR)$(LIBDEST)/sysconfigdata\n \t@for d in $(LIBSUBDIRS); \\\n \tdo \\\n \t\ta=$(srcdir)/Lib/$$d; \\\n@@ -1426,7 +1434,7 @@ distclean: clobber\n \t\tModules/Setup Modules/Setup.local Modules/Setup.config \\\n \t\tModules/ld_so_aix Modules/python.exp Misc/python.pc\n \t-rm -f python*-gdb.py\n-\t-rm -f pybuilddir.txt\n+\t-rm -f pybuilddir.txt pysysconfigdatadir.txt\n \t# Issue #28258: set LC_ALL to avoid issues with Estonian locale.\n \t# Expansion is performed here by shell (spawned by make) itself before\n \t# arguments are passed to find. So LC_ALL=C must be set as a separate\ndiff --git a/configure.ac b/configure.ac\nindex aecf6066e8..7143172b98 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -36,7 +36,7 @@ if test \"$cross_compiling\" = yes; then\n \t    AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])\n \tfi\n         AC_MSG_RESULT($interp)\n-\tPYTHON_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\n+\tPYTHON_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\n     fi\n elif test \"$cross_compiling\" = maybe; then\n     AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0004-Make-the-compilation-of-.pyc-and-.pyo-conditional.patch",
    "content": "From 57ab41fa019d3ce276decd488938e5a00049cb9d Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:18:57 +0100\nSubject: [PATCH] Make the compilation of .pyc and .pyo conditional\n\nThis commit adds --{enable,disable}-{pyc,pyo} options to enable/disable\nthe compilation of pyc/pyo files.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in |  8 ++++++++\n configure.ac    | 11 +++++++++++\n 2 files changed, 19 insertions(+)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 49d3c0926f..247d3c2902 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1139,24 +1139,32 @@ libinstall:\tbuild_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c\n \t\t$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \\\n \t\t\t$(DESTDIR)$(LIBDEST)/distutils/tests ; \\\n \tfi\n+ifeq (@PYC_BUILD@,yes)\n \tPYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \\\n \t\t$(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \\\n \t\t-d $(LIBDEST) -f \\\n \t\t-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \\\n \t\t$(DESTDIR)$(LIBDEST)\n+endif\n+ifeq (@PYO_BUILD@,yes)\n \tPYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \\\n \t\t$(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \\\n \t\t-d $(LIBDEST) -f \\\n \t\t-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \\\n \t\t$(DESTDIR)$(LIBDEST)\n+endif\n+ifeq (@PYC_BUILD@,yes)\n \t-PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \\\n \t\t$(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \\\n \t\t-d $(LIBDEST)/site-packages -f \\\n \t\t-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages\n+endif\n+ifeq (@PYO_BUILD@,yes)\n \t-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \\\n \t\t$(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \\\n \t\t-d $(LIBDEST)/site-packages -f \\\n \t\t-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages\n+endif\n \t-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \\\n \t\t$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt\n \t-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \\\ndiff --git a/configure.ac b/configure.ac\nindex 7143172b98..6bd8369105 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -773,6 +773,17 @@ SunOS*)\n     ;;\n esac\n \n+AC_SUBST(PYC_BUILD)\n+\n+AC_ARG_ENABLE(pyc-build,\n+\tAS_HELP_STRING([--disable-pyc-build], [disable build of pyc files]),\n+\t[ PYC_BUILD=\"${enableval}\" ], [ PYC_BUILD=yes ])\n+\n+AC_SUBST(PYO_BUILD)\n+\n+AC_ARG_ENABLE(pyo-build,\n+\tAS_HELP_STRING([--disable-pyo-build], [disable build of pyo files]),\n+\t[ PYO_BUILD=\"${enableval}\" ], [ PYO_BUILD=yes ])\n \n AC_SUBST(LIBRARY)\n AC_MSG_CHECKING(LIBRARY)\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0005-Adjust-getaddrinfo-test-for-cross-compilation.patch",
    "content": "From e674e29ceba34e55c9149ce99489e543aa4ebb01 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:19:47 +0100\nSubject: [PATCH] Adjust getaddrinfo() test for cross-compilation\n\nThe getaddrinfo() test in configure.ac uses AC_RUN_IFELSE(), which isn't\ncross-compilation friendly.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 6bd8369105..77ca6d86ca 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3563,7 +3563,7 @@ fi\n \n AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)\n \n-if test $have_getaddrinfo = no -o \"$ac_cv_buggy_getaddrinfo\" = yes\n+if test $have_getaddrinfo = no || test \"$cross_compiling\" != \"yes\" -a \"$ac_cv_buggy_getaddrinfo\" = yes\n then\n \tif test $ipv6 = yes\n \tthen\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0006-Add-minimal-infrastructure-to-be-able-to-disable-ext.patch",
    "content": "From 94ec96dd8827adfb5e272d28a4d76510e28657b3 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:21:28 +0100\nSubject: [PATCH] Add minimal infrastructure to be able to disable extensions\n\nThis commit adds some logic to the Python build system to be able to\ndisable Python extensions. Follow-up commits actually add options to\ndisable specific extensions.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in | 6 +++++-\n configure.ac    | 2 ++\n setup.py        | 5 ++++-\n 3 files changed, 11 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 247d3c2902..c1c98ecc5a 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -160,6 +160,8 @@ FILEMODE=\t644\n # configure script arguments\n CONFIG_ARGS=\t@CONFIG_ARGS@\n \n+# disabled extensions\n+DISABLED_EXTENSIONS=\t@DISABLED_EXTENSIONS@\n \n # Subdirectories with code\n SRCDIRS= \t@SRCDIRS@\n@@ -528,6 +530,7 @@ sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o\n \tesac; \\\n \t$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \\\n \t\t_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \\\n+\t\tDISABLED_EXTENSIONS=\"$(DISABLED_EXTENSIONS)\" \\\n \t\t$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build\n \n # Build static library\n@@ -1280,7 +1283,8 @@ libainstall:\t@DEF_MAKE_RULE@ python-config\n # Install the dynamically loadable modules\n # This goes into $(exec_prefix)\n sharedinstall: sharedmods\n-\t$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \\\n+\t$(RUNSHARED) DISABLED_EXTENSIONS=\"$(DISABLED_EXTENSIONS)\" \\\n+\t\t$(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \\\n \t   \t--prefix=$(prefix) \\\n \t\t--install-scripts=$(BINDIR) \\\n \t\t--install-platlib=$(DESTSHARED) \\\ndiff --git a/configure.ac b/configure.ac\nindex 77ca6d86ca..13f90b3ddd 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2491,6 +2491,8 @@ LIBS=\"$withval $LIBS\"\n \n PKG_PROG_PKG_CONFIG\n \n+AC_SUBST(DISABLED_EXTENSIONS)\n+\n # Check for use of the system expat library\n AC_MSG_CHECKING(for --with-system-expat)\n AC_ARG_WITH(system_expat,\ndiff --git a/setup.py b/setup.py\nindex 812d53d560..d426dd02ea 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -33,7 +33,10 @@ host_platform = get_platform()\n COMPILED_WITH_PYDEBUG = ('--with-pydebug' in sysconfig.get_config_var(\"CONFIG_ARGS\"))\n \n # This global variable is used to hold the list of modules to be disabled.\n-disabled_module_list = []\n+try:\n+    disabled_module_list = sysconfig.get_config_var(\"DISABLED_EXTENSIONS\").split(\" \")\n+except KeyError:\n+    disabled_module_list = list()\n \n def add_dir_to_list(dirlist, dir):\n     \"\"\"Add the directory 'dir' to the list 'dirlist' (at the front) if\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0007-Adjust-library-header-paths-for-cross-compilation.patch",
    "content": "From f3e0a677c4736f95338825a022a884f8dc7a5c14 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:22:19 +0100\nSubject: [PATCH] Adjust library/header paths for cross-compilation\n\nWhen cross-compiling third-party extensions, the get_python_inc() or\nget_python_lib() can be called, to return the path to headers or\nlibraries. However, they use the sys.prefix of the host Python, which\nreturns incorrect paths when cross-compiling (paths pointing to host\nheaders and libraries).\n\nIn order to fix this, we introduce the _python_sysroot, _python_prefix\nand _python_exec_prefix variables, that allow to override these\nvalues, and get correct header/library paths when cross-compiling\nthird-party Python modules.\n\nThe _python_sysroot variable is also used to prefix the LIBDIR value\ntaken from the sysconfigdata module.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n Lib/distutils/command/build_ext.py | 5 ++++-\n Lib/distutils/sysconfig.py         | 9 +++++++--\n 2 files changed, 11 insertions(+), 3 deletions(-)\n\ndiff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py\nindex 2c68be3..375b08c 100644\n--- a/Lib/distutils/command/build_ext.py\n+++ b/Lib/distutils/command/build_ext.py\n@@ -240,7 +240,10 @@ class build_ext (Command):\n         if (sysconfig.get_config_var('Py_ENABLE_SHARED')):\n             if not sysconfig.python_build:\n                 # building third party extensions\n-                self.library_dirs.append(sysconfig.get_config_var('LIBDIR'))\n+                libdir = sysconfig.get_config_var('LIBDIR')\n+                if \"_python_sysroot\" in os.environ:\n+                    libdir = os.environ.get(\"_python_sysroot\") + libdir\n+                self.library_dirs.append(libdir)\n             else:\n                 # building python standard extensions\n                 self.library_dirs.append('.')\ndiff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py\nindex d72b6e5..72151df 100644\n--- a/Lib/distutils/sysconfig.py\n+++ b/Lib/distutils/sysconfig.py\n@@ -19,8 +19,13 @@ import sys\n from distutils.errors import DistutilsPlatformError\n \n # These are needed in a couple of spots, so just compute them once.\n-PREFIX = os.path.normpath(sys.prefix)\n-EXEC_PREFIX = os.path.normpath(sys.exec_prefix)\n+if \"_python_sysroot\" in os.environ:\n+    _sysroot=os.environ.get('_python_sysroot')\n+    PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_prefix'))\n+    EXEC_PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_exec_prefix'))\n+else:\n+    PREFIX = os.path.normpath(sys.prefix)\n+    EXEC_PREFIX = os.path.normpath(sys.exec_prefix)\n \n # Path to the base directory of the project. On Windows the binary may\n # live in project/PCBuild9.  If we're dealing with an x64 Windows build,\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/python/0008-Don-t-look-in-usr-lib-termcap-for-libraries.patch",
    "content": "From 87b627d8845e67fd798449b414bece04f18bd450 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:22:40 +0100\nSubject: [PATCH] Don't look in /usr/lib/termcap for libraries\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n setup.py | 5 +----\n 1 file changed, 1 insertion(+), 4 deletions(-)\n\ndiff --git a/setup.py b/setup.py\nindex 3b51c0a..fa32532 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -784,12 +784,9 @@ class PyBuildExt(build_ext):\n                 pass # Issue 7384: Already linked against curses or tinfo.\n             elif curses_library:\n                 readline_libs.append(curses_library)\n-            elif self.compiler.find_library_file(lib_dirs +\n-                                                     ['/usr/lib/termcap'],\n-                                                     'termcap'):\n+            elif self.compiler.find_library_file(lib_dirs, 'termcap'):\n                 readline_libs.append('termcap')\n             exts.append( Extension('readline', ['readline.c'],\n-                                   library_dirs=['/usr/lib/termcap'],\n                                    extra_link_args=readline_extra_link_args,\n                                    libraries=readline_libs) )\n         else:\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/python/0009-Fix-python-config-for-cross-builds.patch",
    "content": "From 1522c6c00ee88eb1148d3b2021d32d819b416375 Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Tue, 7 Mar 2017 22:23:14 +0100\nSubject: [PATCH] Fix python-config for cross-builds\n\nAdd a backport of http://bugs.python.org/issue16235 so we can use\npython-config for cross builds.\n\nThis basically replaces the python version of python-config with a\npure-shell version that's already preprocessed when installed and\ndoesn't depend on the sysconfig import that usually leads to bad\ndata/results.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n[Bernd: rebased for Python 2.7.15]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in          |  13 +++---\n Misc/python-config.sh.in | 102 +++++++++++++++++++++++++++++++++++++++++++++++\n configure.ac             |   7 +++-\n 3 files changed, 116 insertions(+), 6 deletions(-)\n create mode 100644 Misc/python-config.sh.in\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex c1c98ecc5a..727a92af42 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -170,7 +170,7 @@ SRCDIRS= \t@SRCDIRS@\n SUBDIRSTOO=\tInclude Lib Misc Demo\n \n # Files and directories to be distributed\n-CONFIGFILES=\tconfigure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in\n+CONFIGFILES=\tconfigure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Misc/python-config.sh\n DISTFILES=\tREADME ChangeLog $(CONFIGFILES)\n DISTDIRS=\t$(SUBDIRS) $(SUBDIRSTOO) Ext-dummy\n DIST=\t\t$(DISTFILES) $(DISTDIRS)\n@@ -403,7 +403,7 @@ LIBRARY_OBJS=\t\\\n \n # Default target\n all:\t\t@DEF_MAKE_ALL_RULE@\n-build_all:\tcheck-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks\n+build_all:\tcheck-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks python-config\n \n # Check that the source is clean when building out of source.\n check-clean-src:\n@@ -1190,10 +1190,12 @@ $(srcdir)/Lib/$(PLATDIR):\n \tfi; \\\n \tcd $(srcdir)/Lib/$(PLATDIR); $(RUNSHARED) ./regen\n \n-python-config: $(srcdir)/Misc/python-config.in\n+python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh\n \t# Substitution happens here, as the completely-expanded BINDIR\n \t# is not available in configure\n-\tsed -e \"s,@EXENAME@,$(BINDIR)/python$(VERSION)$(EXE),\" < $(srcdir)/Misc/python-config.in >python-config\n+\tsed -e \"s,@EXENAME@,$(BINDIR)/python$(VERSION)$(EXE),\" < $(srcdir)/Misc/python-config.in >python-config.py\n+\t# Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}\n+\tsed -e 's,\\$$(\\([A-Za-z0-9_]*\\)),\\$$\\{\\1\\},g' Misc/python-config.sh >python-config\n \n # Install the include files\n INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)\n@@ -1252,7 +1254,7 @@ libainstall:\t@DEF_MAKE_RULE@ python-config\n \t$(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup\n \t$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh\n \t$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(VERSION)-config\n-\trm python-config\n+\t$(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py\n \t@if [ -s Modules/python.exp -a \\\n \t\t\"`echo $(MACHDEP) | sed 's/^\\(...\\).*/\\1/'`\" = \"aix\" ]; then \\\n \t\techo; echo \"Installing support files for building shared extension modules on AIX:\"; \\\n@@ -1434,6 +1436,7 @@ clobber: clean profile-removal\n \t\tconfig.cache config.log pyconfig.h Modules/config.c\n \t-rm -rf build platform\n \t-rm -rf $(PYTHONFRAMEWORKDIR)\n+\t-rm -f python-config.py python-config\n \n # Make things extra clean, before making a distribution:\n # remove all generated files, even Makefile[.pre]\ndiff --git a/Misc/python-config.sh.in b/Misc/python-config.sh.in\nnew file mode 100644\nindex 0000000000..10db4c12eb\n--- /dev/null\n+++ b/Misc/python-config.sh.in\n@@ -0,0 +1,102 @@\n+#!/bin/sh\n+\n+exit_with_usage ()\n+{\n+\techo \"Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--configdir\"\n+\texit $1\n+}\n+\n+if [ \"$1\" = \"\" ] ; then\n+\texit_with_usage 1\n+fi\n+\n+# Returns the actual prefix where this script was installed to.\n+installed_prefix ()\n+{\n+\tRESULT=$(dirname $(cd $(dirname \"$1\") && pwd -P))\n+\tif which readlink >/dev/null 2>&1 ; then\n+\tRESULT=$(readlink -f \"$RESULT\")\n+\tfi\n+\techo $RESULT\n+}\n+\n+prefix_build=\"@prefix@\"\n+prefix_real=$(installed_prefix \"$0\")\n+\n+# Use sed to fix paths from their built to locations to their installed to locations.\n+prefix=$(echo \"$prefix_build\" | sed \"s#$prefix_build#$prefix_real#\")\n+exec_prefix_build=\"@exec_prefix@\"\n+exec_prefix=$(echo \"$exec_prefix_build\" | sed \"s#$exec_prefix_build#$prefix_real#\")\n+includedir=$(echo \"@includedir@\")\n+libdir=$(echo \"@libdir@\" | sed \"s#$prefix_build#$prefix_real#\")\n+CFLAGS=$(echo \"@CFLAGS@\" | sed \"s#$prefix_build#$prefix_real#\")\n+VERSION=\"@VERSION@\"\n+LIBM=\"@LIBM@\"\n+LIBC=\"@LIBC@\"\n+SYSLIBS=\"$LIBM $LIBC\"\n+LIBS=\"@LIBS@ $SYSLIBS -lpython${VERSION}\"\n+BASECFLAGS=\"@BASECFLAGS@\"\n+LDLIBRARY=\"@LDLIBRARY@\"\n+LINKFORSHARED=\"@LINKFORSHARED@\"\n+OPT=\"@OPT@\"\n+PY_ENABLE_SHARED=\"@PY_ENABLE_SHARED@\"\n+LDVERSION=\"@LDVERSION@\"\n+LIBDEST=${prefix}/lib/python${VERSION}\n+LIBPL=$(echo \"@LIBPL@\" | sed \"s#$prefix_build#$prefix_real#\")\n+SO=\"@SO@\"\n+PYTHONFRAMEWORK=\"@PYTHONFRAMEWORK@\"\n+INCDIR=\"-I$includedir/python${VERSION}\"\n+PLATINCDIR=\"-I$includedir/python${VERSION}\"\n+\n+# Scan for --help or unknown argument.\n+for ARG in $*\n+do\n+\tcase $ARG in\n+\t--help)\n+\t\texit_with_usage 0\n+\t;;\n+\t--prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--abiflags|--configdir)\n+\t;;\n+\t*)\n+\t\texit_with_usage 1\n+\t;;\n+esac\n+done\n+\n+for ARG in \"$@\"\n+do\n+\tcase \"$ARG\" in\n+\t--prefix)\n+\t\techo \"$prefix\"\n+\t;;\n+\t--exec-prefix)\n+\t\techo \"$exec_prefix\"\n+\t;;\n+\t--includes)\n+\t\t echo \"$INCDIR $PLATINCDIR\"\n+\t;;\n+\t--cflags)\n+\t\techo \"$INCDIR $PLATINCDIR $BASECFLAGS $CFLAGS $OPT\"\n+\t;;\n+\t--libs)\n+\t\techo \"$LIBS\"\n+\t;;\n+\t--ldflags)\n+\t\tLINKFORSHAREDUSED=\n+\t\tif [ -z \"$PYTHONFRAMEWORK\" ] ; then\n+\t\t\tLINKFORSHAREDUSED=$LINKFORSHARED\n+\t\tfi\n+\t\tLIBPLUSED=\n+\t\tif [ \"$PY_ENABLE_SHARED\" = \"0\" ] ; then\n+\t\t\tLIBPLUSED=\"-L$LIBPL\"\n+\t\tfi\n+\t\techo \"$LIBPLUSED -L$libdir $LIBS $LINKFORSHAREDUSED\"\n+\t;;\n+\t--extension-suffix)\n+\t\techo \"$SO\"\n+\t;;\n+\t--configdir)\n+\t\techo \"$LIBPL\"\n+\t;;\n+esac\n+done\ndiff --git a/configure.ac b/configure.ac\nindex 13f90b3ddd..3f28ef1371 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -919,6 +919,7 @@ fi\n \n # Other platforms follow\n if test $enable_shared = \"yes\"; then\n+  PY_ENABLE_SHARED=1\n   AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])\n   case $ac_sys_system in\n     BeOS*)\n@@ -979,6 +980,7 @@ if test $enable_shared = \"yes\"; then\n \n   esac\n else # shared is disabled\n+  PY_ENABLE_SHARED=0\n   case $ac_sys_system in\n     CYGWIN*)\n           BLDLIBRARY='$(LIBRARY)'\n@@ -2128,6 +2130,9 @@ AC_SUBST(LDCXXSHARED)\n AC_SUBST(BLDSHARED)\n AC_SUBST(CCSHARED)\n AC_SUBST(LINKFORSHARED)\n+AC_SUBST(PY_ENABLE_SHARED)\n+LIBPL=\"${prefix}/lib/python${VERSION}/config\"\n+AC_SUBST(LIBPL)\n # SO is the extension of shared libraries `(including the dot!)\n # -- usually .so, .sl on HP-UX, .dll on Cygwin\n AC_MSG_CHECKING(SO)\n@@ -4944,7 +4949,7 @@ AC_MSG_RESULT($ENSUREPIP)\n AC_SUBST(ENSUREPIP)\n \n # generate output files\n-AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)\n+AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-config.sh)\n AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])\n AC_OUTPUT\n \n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0010-Remove-the-python-symlink-install-rules.patch",
    "content": "From 706d62599fb3c3cb9b9941364aaf4a1ef4ebd276 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Tue, 7 Mar 2017 22:23:58 +0100\nSubject: [PATCH] Remove the python symlink install rules\n\nThe python symlink installation will be handled by Buildroot itself,\nbecause Buildroot needs to control to what python interpreter (python2\nor python3) the python symlink points to.\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Bernd: rebased against version 2.7.12.]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in | 7 -------\n 1 file changed, 7 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 727a92af42..37b2ff3a5f 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -978,17 +978,10 @@ bininstall:\taltbininstall\n \t\techo \"Creating directory $(LIBPC)\"; \\\n \t\t$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC); \\\n \tfi\n-\t-if test -f $(DESTDIR)$(BINDIR)/$(PYTHON) -o -h $(DESTDIR)$(BINDIR)/$(PYTHON); \\\n-\tthen rm -f $(DESTDIR)$(BINDIR)/$(PYTHON); \\\n-\telse true; \\\n-\tfi\n-\t(cd $(DESTDIR)$(BINDIR); $(LN) -s python2$(EXE) $(PYTHON))\n \t-rm -f $(DESTDIR)$(BINDIR)/python2$(EXE)\n \t(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python2$(EXE))\n \t-rm -f $(DESTDIR)$(BINDIR)/python2-config\n \t(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python2-config)\n-\t-rm -f $(DESTDIR)$(BINDIR)/python-config\n-\t(cd $(DESTDIR)$(BINDIR); $(LN) -s python2-config python-config)\n \t-test -d $(DESTDIR)$(LIBPC) || $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC)\n \t-rm -f $(DESTDIR)$(LIBPC)/python2.pc\n \t(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python2.pc)\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0011-Don-t-add-multiarch-paths.patch",
    "content": "From 50a243a9c90f95e9248ac720e42e802b5922ab90 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:24:28 +0100\nSubject: [PATCH] Don't add multiarch paths\n\nThe add_multiarch_paths() function leads, in certain build\nenvironments, to the addition of host header paths to the CFLAGS,\nwhich is not appropriate for cross-compilation. This patch fixes that\nby simply removing the call to add_multiarch_paths() when we're\ncross-compiling.\n\nInvestigation done by David <buildroot-2014@inbox.com>.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n setup.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/setup.py b/setup.py\nindex fa32532..0b9ea57 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -461,9 +461,9 @@ class PyBuildExt(build_ext):\n         if not cross_compiling:\n             add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')\n             add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')\n+            self.add_multiarch_paths()\n         if cross_compiling:\n             self.add_gcc_paths()\n-        self.add_multiarch_paths()\n \n         # Add paths specified in the environment variables LDFLAGS and\n         # CPPFLAGS for header and library files.\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/python/0012-Abort-on-failed-module-build.patch",
    "content": "From a131e2ff219872d97eef6585117bd2f8ff9e310d Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:24:48 +0100\nSubject: [PATCH] Abort on failed module build\n\nWhen building a Python module fails, the setup.py script currently\ndoesn't exit with an error, and simply continues. This is not a really\nnice behavior, so this patch changes setup.py to abort with an error,\nso that the build issue is clearly noticeable.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n setup.py | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/setup.py b/setup.py\nindex 0b9ea57..9a5c2b8 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -299,6 +299,7 @@ class PyBuildExt(build_ext):\n             print \"Failed to build these modules:\"\n             print_three_column(failed)\n             print\n+            sys.exit(1)\n \n     def build_extension(self, ext):\n \n-- \n2.7.4\n\n"
  },
  {
    "path": "package/python/0013-sqlite3-fix-build-when-threads-are-not-used-availabl.patch",
    "content": "From 0f0be88526ece7d2f6ee21c1f59b1546ec6dc7c0 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Tue, 7 Mar 2017 22:25:14 +0100\nSubject: [PATCH] sqlite3: fix build when threads are not used/available\n\nWhen threads are not used/available, a function in the sqlite3 extension\nends up with a label at the end:\n\n    void _pysqlite_final_callback(sqlite3_context* context)\n    {\n        PyObject* function_result;\n        PyObject** aggregate_instance;\n        int ok;\n\n    #ifdef WITH_THREAD\n        PyGILState_STATE threadstate;\n\n        threadstate = PyGILState_Ensure();\n    #endif\n\n        aggregate_instance = (PyObject**)sqlite3_aggregate_context(context, sizeof(PyObject*));\n        if (!*aggregate_instance) {\n            goto error;\n        }\n\n        [......]\n\n    error:\n    #ifdef WITH_THREAD\n        PyGILState_Release(threadstate);\n    #endif\n    }\n\nThis is not valid, and gcc complains.\n\nFix that by adding a dummy statement after the label, so that the label\nis never the last statement of the function.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n---\n Modules/_sqlite/connection.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c\nindex 237d6e4..cdf69ab 100644\n--- a/Modules/_sqlite/connection.c\n+++ b/Modules/_sqlite/connection.c\n@@ -794,6 +794,7 @@ error:\n #ifdef WITH_THREAD\n     PyGILState_Release(threadstate);\n #endif\n+    ;   /* Make gcc happy: a label can't be at the end of a function */\n }\n \n static void _pysqlite_drop_unused_statement_references(pysqlite_Connection* self)\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/python/0014-Serial-ioctl-workaround.patch",
    "content": "From 22e5a4c5d29ddf0856d7f68f5a613aec00e26168 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Tue, 7 Mar 2017 22:25:36 +0100\nSubject: [PATCH] Serial ioctl() workaround\n\nThe ioctls.h of some architectures (notably xtensa) references structs from\nlinux/serial.h. Make sure to include this header as well.\n\nAlso, undef TIOCTTYGSTRUCT that require reference to internal kernel tty_struct,\nbut isn't actually referenced in modern kernels.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\n Modules/termios.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/Modules/termios.c b/Modules/termios.c\nindex 57f30dc..a8c9855 100644\n--- a/Modules/termios.c\n+++ b/Modules/termios.c\n@@ -16,7 +16,9 @@\n  * so this needs to be included first on that platform. */\n #include <termio.h>\n #endif\n+#include <linux/serial.h>\n #include <sys/ioctl.h>\n+#undef TIOCTTYGSTRUCT\n \n /* HP-UX requires that this be included to pick up MDCD, MCTS, MDSR,\n  * MDTR, MRI, and MRTS (appearantly used internally by some things\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/python/0015-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch",
    "content": "From 70049366ddf1fc9084bb02cf4459380976cdf8f7 Mon Sep 17 00:00:00 2001\nFrom: Christophe Vu-Brugier <cvubrugier@fastmail.fm>\nDate: Tue, 7 Mar 2017 22:26:09 +0100\nSubject: [PATCH] Do not adjust the shebang of Python scripts for\n cross-compilation\n\nThe copy_scripts() method in distutils copies the scripts listed in\nthe setup file and adjusts the first line to refer to the current\nPython interpreter. When cross-compiling, this means that the adjusted\nshebang refers to the host Python interpreter.\n\nThis patch modifies copy_scripts() to preserve the shebang when\ncross-compilation is detected.\n\nSigned-off-by: Christophe Vu-Brugier <cvubrugier@fastmail.fm>\n---\n Lib/distutils/command/build_scripts.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Lib/distutils/command/build_scripts.py b/Lib/distutils/command/build_scripts.py\nindex 567df65..4922d50 100644\n--- a/Lib/distutils/command/build_scripts.py\n+++ b/Lib/distutils/command/build_scripts.py\n@@ -89,7 +89,7 @@ class build_scripts (Command):\n                     adjust = 1\n                     post_interp = match.group(1) or ''\n \n-            if adjust:\n+            if adjust and not '_python_sysroot' in os.environ:\n                 log.info(\"copying and adjusting %s -> %s\", script,\n                          self.build_dir)\n                 if not self.dry_run:\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/python/0016-Add-an-option-to-disable-installation-of-test-module.patch",
    "content": "From 2c1810fb002128a6d33cc3a391a157e316479d15 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:27:16 +0100\nSubject: [PATCH] Add an option to disable installation of test modules\n\nThe Python standard distribution comes with many test modules, that\nare not necessarly useful on embedded targets.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Bernd: rebased against version 2.7.14]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in | 50 +++++++++++++++++++++++++++++++++-----------------\n configure.ac    |  6 ++++++\n 2 files changed, 39 insertions(+), 17 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 37b2ff3a5f..2a5e8adc61 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1048,28 +1048,44 @@ PLATMACDIRS= plat-mac plat-mac/Carbon plat-mac/lib-scriptpackages \\\n \tplat-mac/lib-scriptpackages/SystemEvents \\\n \tplat-mac/lib-scriptpackages/Terminal\n PLATMACPATH=:plat-mac:plat-mac/lib-scriptpackages\n-LIBSUBDIRS=\tlib-tk lib-tk/test lib-tk/test/test_tkinter \\\n-\t\tlib-tk/test/test_ttk site-packages test test/audiodata test/capath \\\n-\t\ttest/data test/cjkencodings test/decimaltestdata test/xmltestdata \\\n-\t\ttest/imghdrdata \\\n-\t\ttest/subprocessdata \\\n-\t\ttest/support \\\n-\t\ttest/tracedmodules \\\n+LIBSUBDIRS=\tlib-tk site-packages \\\n \t\tencodings compiler hotshot \\\n-\t\temail email/mime email/test email/test/data \\\n+\t\temail email/mime \\\n \t\tensurepip ensurepip/_bundled \\\n-\t\tjson json/tests \\\n-\t\tsqlite3 sqlite3/test \\\n-\t\tlogging bsddb bsddb/test csv importlib wsgiref \\\n-\t\tlib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests \\\n-\t\tlib2to3/tests/data lib2to3/tests/data/fixers lib2to3/tests/data/fixers/myfixes \\\n-\t\tctypes ctypes/test ctypes/macholib \\\n-\t\tidlelib idlelib/Icons idlelib/idle_test \\\n-\t\tdistutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \\\n+\t\tjson \\\n+\t\tsqlite3  \\\n+\t\tlogging bsddb csv importlib wsgiref \\\n+\t\tlib2to3 lib2to3/fixes lib2to3/pgen2 \\\n+\t\tctypes ctypes/macholib \\\n+\t\tidlelib idlelib/Icons \\\n+\t\tdistutils distutils/command $(XMLLIBSUBDIRS) \\\n \t\tmultiprocessing multiprocessing/dummy \\\n-\t\tunittest unittest/test \\\n+\t\tunittest \\\n \t\tlib-old \\\n \t\tcurses pydoc_data $(MACHDEPS)\n+\n+TESTSUBDIRS = lib-tk/test lib-tk/test/test_tkinter \\\n+\tlib-tk/test/test_ttk test test/audiodata test/capath test/data \\\n+\ttest/cjkencodings test/decimaltestdata test/xmltestdata \\\n+\ttest/imghdrdata \\\n+\ttest/subprocessdata \\\n+\ttest/support \\\n+\ttest/tracedmodules \\\n+\temail/test email/test/data \\\n+\tjson/tests \\\n+\tsqlite3/test \\\n+\tbsddb/test \\\n+\tlib2to3/tests \\\n+ \tlib2to3/tests/data lib2to3/tests/data/fixers lib2to3/tests/data/fixers/myfixes \\\n+\tctypes/test \\\n+\tidlelib/idle_test \\\n+\tdistutils/tests \\\n+\tunittest/test\n+\n+ifeq (@TEST_MODULES@,yes)\n+LIBSUBDIRS += $(TESTSUBDIRS)\n+endif\n+\n libinstall:\tbuild_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c\n \t@for i in $(SCRIPTDIR) $(LIBDEST); \\\n \tdo \\\ndiff --git a/configure.ac b/configure.ac\nindex 3f28ef1371..f257a25620 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2835,6 +2835,12 @@ if test \"$posix_threads\" = \"yes\"; then\n fi\n \n \n+AC_SUBST(TEST_MODULES)\n+\n+AC_ARG_ENABLE(test-modules,\n+\tAS_HELP_STRING([--disable-test-modules], [disable test modules]),\n+\t[ TEST_MODULES=\"${enableval}\" ], [ TEST_MODULES=yes ])\n+\n # Check for enable-ipv6\n AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])\n AC_MSG_CHECKING([if --enable-ipv6 is specified])\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0017-Add-an-option-to-disable-pydoc.patch",
    "content": "From f98c3f981643411449aba6f93178b2ca14f9a68c Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:27:34 +0100\nSubject: [PATCH] Add an option to disable pydoc\n\nIt removes 0.5 MB of data from the target plus the pydoc script\nitself.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in |  6 +++++-\n configure.ac    |  5 +++++\n setup.py        | 10 +++++++---\n 3 files changed, 17 insertions(+), 4 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 2a5e8adc61..d3ba1aeb4e 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1062,7 +1062,7 @@ LIBSUBDIRS=\tlib-tk site-packages \\\n \t\tmultiprocessing multiprocessing/dummy \\\n \t\tunittest \\\n \t\tlib-old \\\n-\t\tcurses pydoc_data $(MACHDEPS)\n+\t\tcurses $(MACHDEPS)\n \n TESTSUBDIRS = lib-tk/test lib-tk/test/test_tkinter \\\n \tlib-tk/test/test_ttk test test/audiodata test/capath test/data \\\n@@ -1086,6 +1086,10 @@ ifeq (@TEST_MODULES@,yes)\n LIBSUBDIRS += $(TESTSUBDIRS)\n endif\n \n+ifeq (@PYDOC@,yes)\n+LIBSUBDIRS += pydoc_data\n+endif\n+\n libinstall:\tbuild_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c\n \t@for i in $(SCRIPTDIR) $(LIBDEST); \\\n \tdo \\\ndiff --git a/configure.ac b/configure.ac\nindex f257a25620..2ed4119478 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2834,6 +2834,11 @@ if test \"$posix_threads\" = \"yes\"; then\n       AC_CHECK_FUNCS(pthread_atfork)\n fi\n \n+AC_SUBST(PYDOC)\n+\n+AC_ARG_ENABLE(pydoc,\n+\tAS_HELP_STRING([--disable-pydoc], [disable pydoc]),\n+\t[ PYDOC=\"${enableval}\" ], [ PYDOC=yes ])\n \n AC_SUBST(TEST_MODULES)\n \ndiff --git a/setup.py b/setup.py\nindex 2ef5b07189..49f810f72e 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -2277,6 +2277,12 @@ def main():\n     # turn off warnings when deprecated modules are imported\n     import warnings\n     warnings.filterwarnings(\"ignore\",category=DeprecationWarning)\n+\n+    scripts = ['Tools/scripts/idle', 'Tools/scripts/2to3',\n+               'Lib/smtpd.py']\n+    if not '--disable-pydoc' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n+        scripts += [ 'Tools/scripts/pydoc' ]\n+\n     setup(# PyPI Metadata (PEP 301)\n           name = \"Python\",\n           version = sys.version.split()[0],\n@@ -2297,9 +2303,7 @@ def main():\n           ext_modules=[Extension('_struct', ['_struct.c'])],\n \n           # Scripts to install\n-          scripts = ['Tools/scripts/pydoc', 'Tools/scripts/idle',\n-                     'Tools/scripts/2to3',\n-                     'Lib/smtpd.py']\n+          scripts = scripts,\n         )\n \n # --install-platlib\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0018-Add-an-option-to-disable-lib2to3.patch",
    "content": "From d7f419246681e12f05e2eefc79286959c6aa18ab Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:27:49 +0100\nSubject: [PATCH] Add an option to disable lib2to3\n\nlib2to3 is a library to convert Python 2.x code to Python 3.x. As\nsuch, it is probably not very useful on embedded system targets.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in | 11 ++++++++---\n configure.ac    |  6 ++++++\n setup.py        |  5 +++--\n 3 files changed, 17 insertions(+), 5 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex d3ba1aeb4e..0e15b6d6f4 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1055,7 +1055,6 @@ LIBSUBDIRS=\tlib-tk site-packages \\\n \t\tjson \\\n \t\tsqlite3  \\\n \t\tlogging bsddb csv importlib wsgiref \\\n-\t\tlib2to3 lib2to3/fixes lib2to3/pgen2 \\\n \t\tctypes ctypes/macholib \\\n \t\tidlelib idlelib/Icons \\\n \t\tdistutils distutils/command $(XMLLIBSUBDIRS) \\\n@@ -1075,8 +1074,6 @@ TESTSUBDIRS = lib-tk/test lib-tk/test/test_tkinter \\\n \tjson/tests \\\n \tsqlite3/test \\\n \tbsddb/test \\\n-\tlib2to3/tests \\\n- \tlib2to3/tests/data lib2to3/tests/data/fixers lib2to3/tests/data/fixers/myfixes \\\n \tctypes/test \\\n \tidlelib/idle_test \\\n \tdistutils/tests \\\n@@ -1090,6 +1087,14 @@ ifeq (@PYDOC@,yes)\n LIBSUBDIRS += pydoc_data\n endif\n \n+ifeq (@LIB2TO3@,yes)\n+LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2\n+TESTSUBDIRS += \tlib2to3/tests\t\t\t\t\\\n+\t\tlib2to3/tests/data\t\t\t\\\n+\t\tlib2to3/tests/data/fixers\t\t\\\n+\t\tlib2to3/tests/data/fixers/myfixes\n+endif\n+\n libinstall:\tbuild_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c\n \t@for i in $(SCRIPTDIR) $(LIBDEST); \\\n \tdo \\\ndiff --git a/configure.ac b/configure.ac\nindex 2ed4119478..a2810ab8ed 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2846,6 +2846,12 @@ AC_ARG_ENABLE(test-modules,\n \tAS_HELP_STRING([--disable-test-modules], [disable test modules]),\n \t[ TEST_MODULES=\"${enableval}\" ], [ TEST_MODULES=yes ])\n \n+AC_SUBST(LIB2TO3)\n+\n+AC_ARG_ENABLE(lib2to3,\n+\tAS_HELP_STRING([--disable-lib2to3], [disable lib2to3]),\n+\t[ LIB2TO3=\"${enableval}\" ], [ LIB2TO3=yes ])\n+\n # Check for enable-ipv6\n AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])\n AC_MSG_CHECKING([if --enable-ipv6 is specified])\ndiff --git a/setup.py b/setup.py\nindex 49f810f72e..9130819454 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -2278,10 +2278,11 @@ def main():\n     import warnings\n     warnings.filterwarnings(\"ignore\",category=DeprecationWarning)\n \n-    scripts = ['Tools/scripts/idle', 'Tools/scripts/2to3',\n-               'Lib/smtpd.py']\n+    scripts = ['Tools/scripts/idle', 'Lib/smtpd.py']\n     if not '--disable-pydoc' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n         scripts += [ 'Tools/scripts/pydoc' ]\n+    if not '--disable-lib2to3' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n+        scripts += [ 'Tools/scripts/2to3' ]\n \n     setup(# PyPI Metadata (PEP 301)\n           name = \"Python\",\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0019-Add-option-to-disable-the-sqlite3-module.patch",
    "content": "From 123ecc50932e3ad3f7a2d90d430b74822c9695d4 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:28:06 +0100\nSubject: [PATCH] Add option to disable the sqlite3 module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in | 7 +++++--\n configure.ac    | 9 +++++++++\n 2 files changed, 14 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 0e15b6d6f4..a2e5ac6d41 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1053,7 +1053,6 @@ LIBSUBDIRS=\tlib-tk site-packages \\\n \t\temail email/mime \\\n \t\tensurepip ensurepip/_bundled \\\n \t\tjson \\\n-\t\tsqlite3  \\\n \t\tlogging bsddb csv importlib wsgiref \\\n \t\tctypes ctypes/macholib \\\n \t\tidlelib idlelib/Icons \\\n@@ -1072,7 +1071,6 @@ TESTSUBDIRS = lib-tk/test lib-tk/test/test_tkinter \\\n \ttest/tracedmodules \\\n \temail/test email/test/data \\\n \tjson/tests \\\n-\tsqlite3/test \\\n \tbsddb/test \\\n \tctypes/test \\\n \tidlelib/idle_test \\\n@@ -1095,6 +1093,11 @@ TESTSUBDIRS += \tlib2to3/tests\t\t\t\t\\\n \t\tlib2to3/tests/data/fixers/myfixes\n endif\n \n+ifeq (@SQLITE3@,yes)\n+LIBSUBDIRS += sqlite3\n+TESTSUBDIRS += sqlite3/test\n+endif\n+\n libinstall:\tbuild_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c\n \t@for i in $(SCRIPTDIR) $(LIBDEST); \\\n \tdo \\\ndiff --git a/configure.ac b/configure.ac\nindex a2810ab8ed..4ee3c60501 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2834,6 +2834,15 @@ if test \"$posix_threads\" = \"yes\"; then\n       AC_CHECK_FUNCS(pthread_atfork)\n fi\n \n+AC_SUBST(SQLITE3)\n+AC_ARG_ENABLE(sqlite3,\n+\tAS_HELP_STRING([--disable-sqlite3], [disable sqlite3]),\n+\t[ SQLITE3=\"${enableval}\" ], [ SQLITE3=yes ])\n+\n+if test \"$SQLITE3\" = \"no\" ; then\n+   DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _sqlite3\"\n+fi\n+\n AC_SUBST(PYDOC)\n \n AC_ARG_ENABLE(pydoc,\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0020-Add-an-option-to-disable-the-tk-module.patch",
    "content": "From f0dc1198360c6875ed846a961e85dc41e239aa29 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:28:57 +0100\nSubject: [PATCH] Add an option to disable the tk module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in | 11 ++++++++---\n configure.ac    |  9 +++++++++\n 2 files changed, 17 insertions(+), 3 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex a2e5ac6d41..37ed70ab1d 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1048,7 +1048,7 @@ PLATMACDIRS= plat-mac plat-mac/Carbon plat-mac/lib-scriptpackages \\\n \tplat-mac/lib-scriptpackages/SystemEvents \\\n \tplat-mac/lib-scriptpackages/Terminal\n PLATMACPATH=:plat-mac:plat-mac/lib-scriptpackages\n-LIBSUBDIRS=\tlib-tk site-packages \\\n+LIBSUBDIRS=\tsite-packages \\\n \t\tencodings compiler hotshot \\\n \t\temail email/mime \\\n \t\tensurepip ensurepip/_bundled \\\n@@ -1062,8 +1062,7 @@ LIBSUBDIRS=\tlib-tk site-packages \\\n \t\tlib-old \\\n \t\tcurses $(MACHDEPS)\n \n-TESTSUBDIRS = lib-tk/test lib-tk/test/test_tkinter \\\n-\tlib-tk/test/test_ttk test test/audiodata test/capath test/data \\\n+TESTSUBDIRS = test test/audiodata test/capath test/data \\\n \ttest/cjkencodings test/decimaltestdata test/xmltestdata \\\n \ttest/imghdrdata \\\n \ttest/subprocessdata \\\n@@ -1098,6 +1097,12 @@ LIBSUBDIRS += sqlite3\n TESTSUBDIRS += sqlite3/test\n endif\n \n+ifeq (@TK@,yes)\n+LIBSUBDIRS += lib-tk\n+TESTSUBDIRS += lib-tk/test lib-tk/test/test_tkinter\t\\\n+\t      lib-tk/test/test_ttk\n+endif\n+\n libinstall:\tbuild_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c\n \t@for i in $(SCRIPTDIR) $(LIBDEST); \\\n \tdo \\\ndiff --git a/configure.ac b/configure.ac\nindex 4ee3c60501..2c20f826c5 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2843,6 +2843,15 @@ if test \"$SQLITE3\" = \"no\" ; then\n    DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _sqlite3\"\n fi\n \n+AC_SUBST(TK)\n+AC_ARG_ENABLE(tk,\n+\tAS_HELP_STRING([--disable-tk], [disable tk]),\n+\t[ TK=\"${enableval}\" ], [ TK=yes ])\n+\n+if test \"$TK\" = \"no\"; then\n+   DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _tkinter\"\n+fi\n+\n AC_SUBST(PYDOC)\n \n AC_ARG_ENABLE(pydoc,\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0021-Add-an-option-to-disable-the-curses-module.patch",
    "content": "From 3e51eef24c51b986c37b354f3de98218eb76909c Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:29:06 +0100\nSubject: [PATCH] Add an option to disable the curses module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in | 6 +++++-\n configure.ac    | 9 +++++++++\n 2 files changed, 14 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 37ed70ab1d..458f4ad55b 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1060,7 +1060,7 @@ LIBSUBDIRS=\tsite-packages \\\n \t\tmultiprocessing multiprocessing/dummy \\\n \t\tunittest \\\n \t\tlib-old \\\n-\t\tcurses $(MACHDEPS)\n+\t\t$(MACHDEPS)\n \n TESTSUBDIRS = test test/audiodata test/capath test/data \\\n \ttest/cjkencodings test/decimaltestdata test/xmltestdata \\\n@@ -1103,6 +1103,10 @@ TESTSUBDIRS += lib-tk/test lib-tk/test/test_tkinter\t\\\n \t      lib-tk/test/test_ttk\n endif\n \n+ifeq (@CURSES@,yes)\n+LIBSUBDIRS += curses\n+endif\n+\n libinstall:\tbuild_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c\n \t@for i in $(SCRIPTDIR) $(LIBDEST); \\\n \tdo \\\ndiff --git a/configure.ac b/configure.ac\nindex 2c20f826c5..a7ebcd091e 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2852,6 +2852,15 @@ if test \"$TK\" = \"no\"; then\n    DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _tkinter\"\n fi\n \n+AC_SUBST(CURSES)\n+AC_ARG_ENABLE(curses,\n+\tAS_HELP_STRING([--disable-curses], [disable curses]),\n+\t[ CURSES=\"${enableval}\" ], [ CURSES=yes ])\n+\n+if test \"$CURSES\" = \"no\"; then\n+   DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _curses _curses_panel\"\n+fi\n+\n AC_SUBST(PYDOC)\n \n AC_ARG_ENABLE(pydoc,\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0022-Add-an-option-to-disable-expat.patch",
    "content": "From 548413a659cc5320560d6b794fe8edd06dd1d22e Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:29:20 +0100\nSubject: [PATCH] Add an option to disable expat\n\nThis patch replaces the existing --with-system-expat option with a\n--with-expat={system,builtin,none} option, which allows to tell Python\nwhether we want to use the system expat (already installed), the expat\nbuiltin the Python sources, or no expat at all (which disables the\ninstallation of XML modules).\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in |  6 +++++-\n configure.ac    | 18 +++++++++++++-----\n setup.py        |  2 +-\n 3 files changed, 19 insertions(+), 7 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 458f4ad55b..8dee345539 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1056,7 +1056,7 @@ LIBSUBDIRS=\tsite-packages \\\n \t\tlogging bsddb csv importlib wsgiref \\\n \t\tctypes ctypes/macholib \\\n \t\tidlelib idlelib/Icons \\\n-\t\tdistutils distutils/command $(XMLLIBSUBDIRS) \\\n+\t\tdistutils distutils/command \\\n \t\tmultiprocessing multiprocessing/dummy \\\n \t\tunittest \\\n \t\tlib-old \\\n@@ -1107,6 +1107,10 @@ ifeq (@CURSES@,yes)\n LIBSUBDIRS += curses\n endif\n \n+ifeq (@EXPAT@,yes)\n+LIBSUBDIRS += $(XMLLIBSUBDIRS)\n+endif\n+\n libinstall:\tbuild_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c\n \t@for i in $(SCRIPTDIR) $(LIBDEST); \\\n \tdo \\\ndiff --git a/configure.ac b/configure.ac\nindex a7ebcd091e..2f5759a890 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2499,13 +2499,21 @@ PKG_PROG_PKG_CONFIG\n AC_SUBST(DISABLED_EXTENSIONS)\n \n # Check for use of the system expat library\n-AC_MSG_CHECKING(for --with-system-expat)\n-AC_ARG_WITH(system_expat,\n-            AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]),\n+AC_MSG_CHECKING(for --with-expat)\n+AC_ARG_WITH(expat,\n+            AS_HELP_STRING([--with-expat], [select which expat version to use: system, builtin, none]),\n             [],\n-            [with_system_expat=\"no\"])\n+            [with_expat=\"builtin\"])\n \n-AC_MSG_RESULT($with_system_expat)\n+AC_MSG_RESULT($with_expat)\n+\n+if test \"$with_expat\" != \"none\"; then\n+   EXPAT=yes\n+else\n+   DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} pyexpat\"\n+   EXPAT=no\n+fi\n+AC_SUBST(EXPAT)\n \n # Check for use of the system libffi library\n AC_MSG_CHECKING(for --with-system-ffi)\ndiff --git a/setup.py b/setup.py\nindex 9130819454..f439cbadc2 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -1475,7 +1475,7 @@ class PyBuildExt(build_ext):\n         #\n         # More information on Expat can be found at www.libexpat.org.\n         #\n-        if '--with-system-expat' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n+        if '--with-expat=system' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n             expat_inc = []\n             define_macros = []\n             expat_lib = ['expat']\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0023-Add-an-option-to-disable-CJK-codecs.patch",
    "content": "From 6761066addfb6028e183d7fe4322b283af18117f Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:29:31 +0100\nSubject: [PATCH] Add an option to disable CJK codecs\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 2f5759a890..862c8ae516 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2851,6 +2851,12 @@ if test \"$SQLITE3\" = \"no\" ; then\n    DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _sqlite3\"\n fi\n \n+AC_ARG_ENABLE(codecs-cjk,\n+\tAS_HELP_STRING([--disable-codecs-cjk], [disable CJK codecs]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+    \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _codecs_kr _codecs_jp _codecs_cn _codecs_tw _codecs_hk\"\n+  \t  fi])\n+\n AC_SUBST(TK)\n AC_ARG_ENABLE(tk,\n \tAS_HELP_STRING([--disable-tk], [disable tk]),\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0024-Add-an-option-to-disable-NIS.patch",
    "content": "From ecd8e926bd364d866f492df87d7c46d029445480 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:29:41 +0100\nSubject: [PATCH] Add an option to disable NIS\n\nNIS is not necessarily available in uClibc, so we need an option to\nnot compile support for it.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 862c8ae516..354212fb16 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2857,6 +2857,12 @@ AC_ARG_ENABLE(codecs-cjk,\n     \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _codecs_kr _codecs_jp _codecs_cn _codecs_tw _codecs_hk\"\n   \t  fi])\n \n+AC_ARG_ENABLE(nis,\n+\tAS_HELP_STRING([--disable-nis], [disable NIS]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+    \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} nis\"\n+  \t  fi])\n+\n AC_SUBST(TK)\n AC_ARG_ENABLE(tk,\n \tAS_HELP_STRING([--disable-tk], [disable tk]),\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0025-Add-an-option-to-disable-unicodedata.patch",
    "content": "From dc99b7a0331fe75d70ccb87dc0877ac5bbba51ca Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:29:52 +0100\nSubject: [PATCH] Add an option to disable unicodedata\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 354212fb16..4e430d82b8 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2863,6 +2863,12 @@ AC_ARG_ENABLE(nis,\n     \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} nis\"\n   \t  fi])\n \n+AC_ARG_ENABLE(unicodedata,\n+\tAS_HELP_STRING([--disable-unicodedata], [disable unicodedata]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+    \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} unicodedata\"\n+  \t  fi])\n+\n AC_SUBST(TK)\n AC_ARG_ENABLE(tk,\n \tAS_HELP_STRING([--disable-tk], [disable tk]),\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0026-Add-an-option-to-disable-bsddb.patch",
    "content": "From a4bbbf0c5f1f68298d5f4e2c2cd80de7e758763c Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:30:06 +0100\nSubject: [PATCH] Add an option to disable bsddb\n\nbsddb has an external dependency on Berkeley DB. Since we want to be\nable to build Python without it, this patch adds an option to disable\nthe build/installation of this Python module.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in |  8 ++++++--\n configure.ac    | 22 ++++++++++++++++++++++\n 2 files changed, 28 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 8dee345539..a0473096c1 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1053,7 +1053,7 @@ LIBSUBDIRS=\tsite-packages \\\n \t\temail email/mime \\\n \t\tensurepip ensurepip/_bundled \\\n \t\tjson \\\n-\t\tlogging bsddb csv importlib wsgiref \\\n+\t\tlogging csv importlib wsgiref \\\n \t\tctypes ctypes/macholib \\\n \t\tidlelib idlelib/Icons \\\n \t\tdistutils distutils/command \\\n@@ -1070,7 +1070,6 @@ TESTSUBDIRS = test test/audiodata test/capath test/data \\\n \ttest/tracedmodules \\\n \temail/test email/test/data \\\n \tjson/tests \\\n-\tbsddb/test \\\n \tctypes/test \\\n \tidlelib/idle_test \\\n \tdistutils/tests \\\n@@ -1111,6 +1110,11 @@ ifeq (@EXPAT@,yes)\n LIBSUBDIRS += $(XMLLIBSUBDIRS)\n endif\n \n+ifeq (@BSDDB@,yes)\n+LIBSUBDIRS += bsddb\n+TESTSUBDIRS += bsddb/test\n+endif\n+\n libinstall:\tbuild_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c\n \t@for i in $(SCRIPTDIR) $(LIBDEST); \\\n \tdo \\\ndiff --git a/configure.ac b/configure.ac\nindex 4e430d82b8..361e8c120e 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2863,6 +2863,28 @@ AC_ARG_ENABLE(nis,\n     \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} nis\"\n   \t  fi])\n \n+AC_ARG_ENABLE(dbm,\n+\tAS_HELP_STRING([--disable-dbm], [disable DBM]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+    \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} dbm\"\n+  \t  fi])\n+\n+AC_ARG_ENABLE(gdbm,\n+\tAS_HELP_STRING([--disable-gdbm], [disable GDBM]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+    \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} gdbm\"\n+  \t  fi])\n+\n+AC_SUBST(BSDDB)\n+AC_ARG_ENABLE(bsddb,\n+\tAS_HELP_STRING([--disable-bsddb], [disable BerkeyleyDB]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+    \t     BSDDB=no\n+    \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _bsddb\"\n+  \t  else\n+\t     BSDDB=yes\n+  \t  fi], [ BSDDB=yes ])\n+\n AC_ARG_ENABLE(unicodedata,\n \tAS_HELP_STRING([--disable-unicodedata], [disable unicodedata]),\n \t[ if test \"$enableval\" = \"no\"; then\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0027-Add-an-option-to-disable-the-ssl-module.patch",
    "content": "From a0e56b96c3bfb04a5c8ecc0987cdd294d8ce116b Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:30:22 +0100\nSubject: [PATCH] Add an option to disable the ssl module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 361e8c120e..8fe47d8c37 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2863,6 +2863,12 @@ AC_ARG_ENABLE(nis,\n     \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} nis\"\n   \t  fi])\n \n+AC_ARG_ENABLE(ssl,\n+\tAS_HELP_STRING([--disable-ssl], [disable SSL]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+    \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _ssl\"\n+  \t  fi])\n+\n AC_ARG_ENABLE(dbm,\n \tAS_HELP_STRING([--disable-dbm], [disable DBM]),\n \t[ if test \"$enableval\" = \"no\"; then\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0028-Add-an-option-to-disable-the-bz2-module.patch",
    "content": "From d1236c6f4d8d893709fa36f751af47b8ad9055c1 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:30:33 +0100\nSubject: [PATCH] Add an option to disable the bz2 module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 8fe47d8c37..85df7b1478 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2869,6 +2869,12 @@ AC_ARG_ENABLE(ssl,\n     \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _ssl\"\n   \t  fi])\n \n+AC_ARG_ENABLE(bz2,\n+       AS_HELP_STRING([--disable-bz2], [disable BZIP2]),\n+       [ if test \"$enableval\" = \"no\"; then\n+            DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} bz2\"\n+         fi])\n+\n AC_ARG_ENABLE(dbm,\n \tAS_HELP_STRING([--disable-dbm], [disable DBM]),\n \t[ if test \"$enableval\" = \"no\"; then\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0029-Add-an-option-to-disable-the-zlib-module.patch",
    "content": "From a9c7314e069036f74b503dfaef261e5f45477b7e Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:30:45 +0100\nSubject: [PATCH] Add an option to disable the zlib module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 85df7b1478..3848b16b9f 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2875,6 +2875,12 @@ AC_ARG_ENABLE(bz2,\n             DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} bz2\"\n          fi])\n \n+AC_ARG_ENABLE(zlib,\n+       AS_HELP_STRING([--disable-zlib], [disable ZLIB]),\n+       [ if test \"$enableval\" = \"no\"; then\n+            DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} zlib\"\n+         fi])\n+\n AC_ARG_ENABLE(dbm,\n \tAS_HELP_STRING([--disable-dbm], [disable DBM]),\n \t[ if test \"$enableval\" = \"no\"; then\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0030-Do-not-install-the-idle-editor.patch",
    "content": "From e789487c783f75c17a8951bd5324c86ceefde407 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:30:56 +0100\nSubject: [PATCH] Do not install the idle editor\n\nIDLE is the Python IDE built with the tkinter GUI toolkit. Since it's\nhighly unlikely to ever be useful in an embedded Linux system\ngenerated by Buildroot, this patch simply disables the installation of\nidle and the related Python modules. It saves 800 KB-900 KB of\ninstalled .pyc files.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Makefile.pre.in | 2 --\n setup.py        | 2 +-\n 2 files changed, 1 insertion(+), 3 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex a0473096c1..750057fb96 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1055,7 +1055,6 @@ LIBSUBDIRS=\tsite-packages \\\n \t\tjson \\\n \t\tlogging csv importlib wsgiref \\\n \t\tctypes ctypes/macholib \\\n-\t\tidlelib idlelib/Icons \\\n \t\tdistutils distutils/command \\\n \t\tmultiprocessing multiprocessing/dummy \\\n \t\tunittest \\\n@@ -1071,7 +1070,6 @@ TESTSUBDIRS = test test/audiodata test/capath test/data \\\n \temail/test email/test/data \\\n \tjson/tests \\\n \tctypes/test \\\n-\tidlelib/idle_test \\\n \tdistutils/tests \\\n \tunittest/test\n \ndiff --git a/setup.py b/setup.py\nindex f439cbadc2..227187681e 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -2278,7 +2278,7 @@ def main():\n     import warnings\n     warnings.filterwarnings(\"ignore\",category=DeprecationWarning)\n \n-    scripts = ['Tools/scripts/idle', 'Lib/smtpd.py']\n+    scripts = ['Lib/smtpd.py']\n     if not '--disable-pydoc' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n         scripts += [ 'Tools/scripts/pydoc' ]\n     if not '--disable-lib2to3' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0031-Add-an-option-to-disable-the-ossaudiodev-module.patch",
    "content": "From 4ab280b8a7626de2565cf4ef6cf08a5c7326574b Mon Sep 17 00:00:00 2001\nFrom: Zoltan Gyarmati <mr.zoltan.gyarmati@gmail.com>\nDate: Tue, 7 Mar 2017 22:31:22 +0100\nSubject: [PATCH] Add an option to disable the ossaudiodev module\n\nSigned-off-by: Zoltan Gyarmati <mr.zoltan.gyarmati@gmail.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 3848b16b9f..6d19cdee95 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2927,6 +2927,12 @@ if test \"$CURSES\" = \"no\"; then\n    DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _curses _curses_panel\"\n fi\n \n+AC_ARG_ENABLE(ossaudiodev,\n+       AS_HELP_STRING([--disable-ossaudiodev], [disable OSSAUDIODEV]),\n+       [ if test \"$enableval\" = \"no\"; then\n+            DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} ossaudiodev\"\n+         fi])\n+\n AC_SUBST(PYDOC)\n \n AC_ARG_ENABLE(pydoc,\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0032-Add-option-to-disable-the-hashlib-module.patch",
    "content": "From 479bef8182c4f6b678a86820ccc06760ca60c286 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:33:02 +0100\nSubject: [PATCH] Add option to disable the hashlib module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 6d19cdee95..ddccc79c2c 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2869,6 +2869,12 @@ AC_ARG_ENABLE(ssl,\n     \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _ssl\"\n   \t  fi])\n \n+AC_ARG_ENABLE(hashlib,\n+\tAS_HELP_STRING([--disable-hashlib], [disable hashlib]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+\t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _hashlib\"\n+\t  fi])\n+\n AC_ARG_ENABLE(bz2,\n        AS_HELP_STRING([--disable-bz2], [disable BZIP2]),\n        [ if test \"$enableval\" = \"no\"; then\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0033-Add-an-option-to-disable-readline-module.patch",
    "content": "From abea92958b073dfbf0c78bcb31ce9cfc709c20ca Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 22:33:55 +0100\nSubject: [PATCH] Add an option to disable readline module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Peter: update for 2.7.16]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex ddccc79c2c..dae266326e 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2875,6 +2875,12 @@ AC_ARG_ENABLE(hashlib,\n \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _hashlib\"\n \t  fi])\n \n+AC_ARG_ENABLE(readline,\n+\tAS_HELP_STRING([--disable-readline], [disable readline]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+\t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} readline\"\n+\t  fi])\n+\n AC_ARG_ENABLE(bz2,\n        AS_HELP_STRING([--disable-bz2], [disable BZIP2]),\n        [ if test \"$enableval\" = \"no\"; then\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python/0034-Override-system-locale-and-set-to-default-when-addin.patch",
    "content": "From d2bfa8805206db8c57c182094396d20a9d94bd8f Mon Sep 17 00:00:00 2001\nFrom: Samuel Cabrero <samuelcabrero@gmail.com>\nDate: Sat, 1 Apr 2017 09:31:52 +0200\nSubject: [PATCH] Override system locale and set to default when adding gcc\n paths\n\nForces the use of the default locale in the function\nadd_gcc_paths, which is called when cross compiling to add the\ninclude and library paths. This is necessary because otherwise\nthe gcc output is localized and the output parsing fails, which\nresults in no paths added and detect_modules not able to find\nany system library (eg. libz, libssl, etc.)\n\n[Thomas: patch taken from https://bugs.python.org/issue23767.]\n\nSigned-off-by: Samuel Cabrero <samuelcabrero@gmail.com>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n setup.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/setup.py b/setup.py\nindex 8045a9b..c14f4ab 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -430,7 +430,7 @@ class PyBuildExt(build_ext):\n         tmpfile = os.path.join(self.build_temp, 'gccpaths')\n         if not os.path.exists(self.build_temp):\n             os.makedirs(self.build_temp)\n-        ret = os.system('%s -E -v - </dev/null 2>%s 1>/dev/null' % (gcc, tmpfile))\n+        ret = os.system('LC_ALL=C %s -E -v - </dev/null 2>%s 1>/dev/null' % (gcc, tmpfile))\n         is_gcc = False\n         in_incdirs = False\n         inc_dirs = []\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/python/Config.in",
    "content": "comment \"python needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_PYTHON\n\tbool \"python2.7 (deprecated)\"\n\tdepends on BR2_USE_WCHAR\n\t# uses fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libffi\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBFFI\n\thelp\n\t  The python language interpreter.\n\n\t  http://www.python.org/\n\nif BR2_PACKAGE_PYTHON\n\nchoice\n\tprompt \"python module format to install\"\n\tdefault BR2_PACKAGE_PYTHON_PYC_ONLY\n\thelp\n\t  Select Python module format to install on target (py, pyc or\n\t  both)\n\nconfig BR2_PACKAGE_PYTHON_PY_ONLY\n\tbool \".py sources only\"\n\nconfig BR2_PACKAGE_PYTHON_PYC_ONLY\n\tbool \".pyc compiled sources only\"\n\nconfig BR2_PACKAGE_PYTHON_PY_PYC\n\tbool \".py sources and .pyc compiled\"\n\nendchoice\n\nmenu \"core python modules\"\n\ncomment \"The following modules are unusual or require extra libraries\"\n\nconfig BR2_PACKAGE_PYTHON_2TO3\n\tbool \"2to3 module\"\n\thelp\n\t  code translation from python 2 to 3\n\nconfig BR2_PACKAGE_PYTHON_BZIP2\n\tbool \"bzip2 module\"\n\tselect BR2_PACKAGE_BZIP2\n\thelp\n\t  bzip2 module for Python\n\nconfig BR2_PACKAGE_PYTHON_BSDDB\n\tbool \"bsddb module\"\n\tselect BR2_PACKAGE_BERKELEYDB\n\thelp\n\t  bsddb module for Python.\n\nconfig BR2_PACKAGE_PYTHON_CODECSCJK\n\tbool \"codecscjk module\"\n\thelp\n\t  Chinese/Japanese/Korean codecs module for Python (large).\n\nconfig BR2_PACKAGE_PYTHON_CURSES\n\tbool \"curses module\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  curses module for Python.\n\nconfig BR2_PACKAGE_PYTHON_OSSAUDIODEV\n\tbool \"ossaudiodev module\"\n\thelp\n\t  ossaudiodev module for Python.\n\nconfig BR2_PACKAGE_PYTHON_READLINE\n\tbool \"readline\"\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  readline module for Python (required for command-line\n\t  editing in the Python shell).\n\nconfig BR2_PACKAGE_PYTHON_SSL\n\tbool \"ssl\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  _ssl module for Python (required for https in urllib etc).\n\nconfig BR2_PACKAGE_PYTHON_UNICODEDATA\n\tbool \"unicodedata module\"\n\tdefault y\n\thelp\n\t  Unicode character database (used by stringprep module)\n\t  (large).\n\nif BR2_PACKAGE_PYTHON_UNICODEDATA\n\nchoice\n\tprompt \"Python unicode database format\"\n\tdefault BR2_PACKAGE_PYTHON_UCS2\n\thelp\n\t  Select Python unicode database format for target\n\nconfig BR2_PACKAGE_PYTHON_UCS2\n\tbool \"Universal Character Set 2-byte (UCS2)\"\n\nconfig BR2_PACKAGE_PYTHON_UCS4\n\tbool \"Universal Character Set 4-byte (UCS4)\"\n\nendchoice\n\nendif\n\nconfig BR2_PACKAGE_PYTHON_SQLITE\n\tbool \"sqlite module\"\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  SQLite database support\n\nconfig BR2_PACKAGE_PYTHON_PYEXPAT\n\tbool \"xml module\"\n\tselect BR2_PACKAGE_EXPAT\n\thelp\n\t  pyexpat and xml libraries for Python\n\nconfig BR2_PACKAGE_PYTHON_ZLIB\n\tbool \"zlib module\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  zlib support in Python\n\nconfig BR2_PACKAGE_PYTHON_HASHLIB\n\tbool \"hashlib module\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  hashlib support in Python\n\nendmenu\n\nendif\n"
  },
  {
    "path": "package/python/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PYTHON\n\tbool \"host python\"\n\thelp\n\t  The python language interpreter. Host package.\n\n\t  http://www.python.org/\n\nif BR2_PACKAGE_HOST_PYTHON\n\nconfig BR2_PACKAGE_HOST_PYTHON_SSL\n\tbool \"ssl\"\n\tselect BR2_PACKAGE_HOST_OPENSSL\n\thelp\n\t  _ssl module for host Python.\n\nendif\n"
  },
  {
    "path": "package/python/python.hash",
    "content": "# From https://www.python.org/downloads/release/python-2718/\nmd5  fd6cc8ec0a78c44036f825e739f36e5a Python-2.7.18.tar.xz\n# Locally calculated\nsha256  b62c0e7937551d0cc02b8fd5cb0f544f9405bafc9a54d3808ed4594812edef43  Python-2.7.18.tar.xz\nsha256  de4d1f2d2ad5ad0cfd1657a106476b31cb5db5ef9d1ff842b237c0c81f0c8a23  LICENSE\n"
  },
  {
    "path": "package/python/python.mk",
    "content": "################################################################################\n#\n# python\n#\n################################################################################\n\nPYTHON_VERSION_MAJOR = 2.7\nPYTHON_VERSION = $(PYTHON_VERSION_MAJOR).18\nPYTHON_SOURCE = Python-$(PYTHON_VERSION).tar.xz\nPYTHON_SITE = https://python.org/ftp/python/$(PYTHON_VERSION)\nPYTHON_LICENSE = Python-2.0, others\nPYTHON_LICENSE_FILES = LICENSE\nPYTHON_CPE_ID_VENDOR = python\nPYTHON_LIBTOOL_PATCH = NO\n\n# Python needs itself to be built, so in order to cross-compile\n# Python, we need to build a host Python first. This host Python is\n# also installed in $(HOST_DIR), as it is needed when cross-compiling\n# third-party Python modules.\n\nHOST_PYTHON_CONF_OPTS += \\\n\t--enable-static \\\n\t--without-cxx-main \\\n\t--disable-sqlite3 \\\n\t--disable-tk \\\n\t--with-expat=system \\\n\t--with-system-ffi \\\n\t--disable-curses \\\n\t--disable-codecs-cjk \\\n\t--disable-nis \\\n\t--enable-unicodedata \\\n\t--disable-dbm \\\n\t--disable-gdbm \\\n\t--disable-bsddb \\\n\t--disable-test-modules \\\n\t--disable-bz2 \\\n\t--disable-ossaudiodev \\\n\t--disable-pyo-build\n\n# Make sure that LD_LIBRARY_PATH overrides -rpath.\n# This is needed because libpython may be installed at the same time that\n# python is called.\n# Make python believe we don't have 'hg' and 'svn', so that it doesn't\n# try to communicate over the network during the build.\nHOST_PYTHON_CONF_ENV += \\\n\tLDFLAGS=\"$(HOST_LDFLAGS) -Wl,--enable-new-dtags\" \\\n\tac_cv_prog_HAS_HG=/bin/false \\\n\tac_cv_prog_SVNVERSION=/bin/false\n\n# Building host python in parallel sometimes triggers a \"Bus error\"\n# during the execution of \"./python setup.py build\" in the\n# installation step. It is probably due to the installation of a\n# shared library taking place in parallel to the execution of\n# ./python, causing spurious Bus error. Building host-python with\n# MAKE1 has shown to workaround the problem.\nHOST_PYTHON_MAKE = $(MAKE1)\n\nPYTHON_DEPENDENCIES = host-python libffi $(TARGET_NLS_DEPENDENCIES)\n\nHOST_PYTHON_DEPENDENCIES = host-expat host-libffi host-zlib\n\nifeq ($(BR2_PACKAGE_HOST_PYTHON_SSL),y)\nHOST_PYTHON_DEPENDENCIES += host-openssl\nelse\nHOST_PYTHON_CONF_OPTS += --disable-ssl\nendif\n\nPYTHON_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_PYTHON_READLINE),y)\nPYTHON_DEPENDENCIES += readline\nelse\nPYTHON_CONF_OPTS += --disable-readline\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_CURSES),y)\nPYTHON_DEPENDENCIES += ncurses\nelse\nPYTHON_CONF_OPTS += --disable-curses\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_PYEXPAT),y)\nPYTHON_DEPENDENCIES += expat\nPYTHON_CONF_OPTS += --with-expat=system\nelse\nPYTHON_CONF_OPTS += --with-expat=none\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_BSDDB),y)\nPYTHON_DEPENDENCIES += berkeleydb\nelse\nPYTHON_CONF_OPTS += --disable-bsddb\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_SQLITE),y)\nPYTHON_DEPENDENCIES += sqlite\nelse\nPYTHON_CONF_OPTS += --disable-sqlite3\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_SSL),y)\nPYTHON_DEPENDENCIES += openssl\nelse\nPYTHON_CONF_OPTS += --disable-ssl\nendif\n\nifneq ($(BR2_PACKAGE_PYTHON_CODECSCJK),y)\nPYTHON_CONF_OPTS += --disable-codecs-cjk\nendif\n\nifneq ($(BR2_PACKAGE_PYTHON_UNICODEDATA),y)\nPYTHON_CONF_OPTS += --disable-unicodedata\nendif\n\n# Default is UCS2 w/o a conf opt\nifeq ($(BR2_PACKAGE_PYTHON_UCS4),y)\n# host-python must have the same UCS2/4 configuration as the target\n# python\nHOST_PYTHON_CONF_OPTS += --enable-unicode=ucs4\nPYTHON_CONF_OPTS += --enable-unicode=ucs4\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_2TO3),y)\nPYTHON_CONF_OPTS += --enable-lib2to3\nelse\nPYTHON_CONF_OPTS += --disable-lib2to3\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_BZIP2),y)\nPYTHON_DEPENDENCIES += bzip2\nelse\nPYTHON_CONF_OPTS += --disable-bz2\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_ZLIB),y)\nPYTHON_DEPENDENCIES += zlib\nelse\nPYTHON_CONF_OPTS += --disable-zlib\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_HASHLIB),y)\nPYTHON_DEPENDENCIES += openssl\nelse\nPYTHON_CONF_OPTS += --disable-hashlib\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_OSSAUDIODEV),y)\nPYTHON_CONF_OPTS += --enable-ossaudiodev\nelse\nPYTHON_CONF_OPTS += --disable-ossaudiodev\nendif\n\n# Make python believe we don't have 'hg' and 'svn', so that it doesn't\n# try to communicate over the network during the build.\nPYTHON_CONF_ENV += \\\n\tac_cv_have_long_long_format=yes \\\n\tac_cv_file__dev_ptmx=yes \\\n\tac_cv_file__dev_ptc=yes \\\n\tac_cv_working_tzset=yes \\\n\tac_cv_prog_HAS_HG=/bin/false \\\n\tac_cv_prog_SVNVERSION=/bin/false\n\n# GCC is always compliant with IEEE754\nifeq ($(BR2_ENDIAN),\"LITTLE\")\nPYTHON_CONF_ENV += ac_cv_little_endian_double=yes\nelse\nPYTHON_CONF_ENV += ac_cv_big_endian_double=yes\nendif\n\nPYTHON_CONF_OPTS += \\\n\t--without-cxx-main \\\n\t--without-doc-strings \\\n\t--with-system-ffi \\\n\t--disable-pydoc \\\n\t--disable-test-modules \\\n\t--disable-gdbm \\\n\t--disable-tk \\\n\t--disable-nis \\\n\t--disable-dbm \\\n\t--disable-pyo-build \\\n\t--disable-pyc-build\n\n# This is needed to make sure the Python build process doesn't try to\n# regenerate those files with the pgen program. Otherwise, it builds\n# pgen for the target, and tries to run it on the host.\n\ndefine PYTHON_TOUCH_GRAMMAR_FILES\n\ttouch $(@D)/Include/graminit.h $(@D)/Python/graminit.c\nendef\n\nPYTHON_POST_PATCH_HOOKS += PYTHON_TOUCH_GRAMMAR_FILES\n\n#\n# Remove useless files. In the config/ directory, only the Makefile\n# and the pyconfig.h files are needed at runtime.\n#\n# idle & smtpd.py have bad shebangs and are mostly samples\n#\ndefine PYTHON_REMOVE_USELESS_FILES\n\trm -f $(TARGET_DIR)/usr/bin/python$(PYTHON_VERSION_MAJOR)-config\n\trm -f $(TARGET_DIR)/usr/bin/python2-config\n\trm -f $(TARGET_DIR)/usr/bin/python-config\n\trm -f $(TARGET_DIR)/usr/bin/smtpd.py\n\trm -f $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/distutils/command/wininst*.exe\n\tfor i in `find $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/config/ \\\n\t\t-type f -not -name pyconfig.h -a -not -name Makefile` ; do \\\n\t\trm -f $$i ; \\\n\tdone\nendef\n\nPYTHON_POST_INSTALL_TARGET_HOOKS += PYTHON_REMOVE_USELESS_FILES\n\n#\n# Make sure libpython gets stripped out on target\n#\ndefine PYTHON_ENSURE_LIBPYTHON_STRIPPED\n\tchmod u+w $(TARGET_DIR)/usr/lib/libpython$(PYTHON_VERSION_MAJOR)*.so\nendef\n\nPYTHON_POST_INSTALL_TARGET_HOOKS += PYTHON_ENSURE_LIBPYTHON_STRIPPED\n\n# Always install the python symlink in the target tree\ndefine PYTHON_INSTALL_TARGET_PYTHON_SYMLINK\n\tln -sf python2 $(TARGET_DIR)/usr/bin/python\nendef\n\nPYTHON_POST_INSTALL_TARGET_HOOKS += PYTHON_INSTALL_TARGET_PYTHON_SYMLINK\n\n# Always install the python-config symlink in the staging tree\ndefine PYTHON_INSTALL_STAGING_PYTHON_CONFIG_SYMLINK\n\tln -sf python2-config $(STAGING_DIR)/usr/bin/python-config\nendef\n\nPYTHON_POST_INSTALL_STAGING_HOOKS += PYTHON_INSTALL_STAGING_PYTHON_CONFIG_SYMLINK\n\nPYTHON_AUTORECONF = YES\n\n# Some packages may have build scripts requiring python2.\n# Only install the python symlink in the host tree if python3 is not enabled\n# for the target, otherwise the default python program may be missing.\nifneq ($(BR2_PACKAGE_PYTHON3),y)\ndefine HOST_PYTHON_INSTALL_PYTHON_SYMLINK\n\tln -sf python2 $(HOST_DIR)/bin/python\n\tln -sf python2-config $(HOST_DIR)/bin/python-config\nendef\n\nHOST_PYTHON_POST_INSTALL_HOOKS += HOST_PYTHON_INSTALL_PYTHON_SYMLINK\nendif\n\n# Provided to other packages\nPYTHON_PATH = $(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/sysconfigdata/\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n\nifeq ($(BR2_REPRODUCIBLE),y)\ndefine PYTHON_FIX_TIME\n\tfind $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR) -name '*.py' -print0 | \\\n\t\txargs -0 --no-run-if-empty touch -d @$(SOURCE_DATE_EPOCH)\nendef\nendif\n\ndefine PYTHON_CREATE_PYC_FILES\n\t$(PYTHON_FIX_TIME)\n\tPYTHONPATH=\"$(PYTHON_PATH)\" \\\n\t$(HOST_DIR)/bin/python$(PYTHON_VERSION_MAJOR) \\\n\t\t$(TOPDIR)/support/scripts/pycompile.py \\\n\t\t$(if $(VERBOSE),--verbose) \\\n\t\t--strip-root $(TARGET_DIR) \\\n\t\t$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)\nendef\n\nifeq ($(BR2_PACKAGE_PYTHON_PYC_ONLY)$(BR2_PACKAGE_PYTHON_PY_PYC),y)\nPYTHON_TARGET_FINALIZE_HOOKS += PYTHON_CREATE_PYC_FILES\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_PYC_ONLY),y)\ndefine PYTHON_REMOVE_PY_FILES\n\tfind $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR) -name '*.py' \\\n\t\t$(if $(strip $(KEEP_PYTHON_PY_FILES)),-not \\( $(call finddirclauses,$(TARGET_DIR),$(KEEP_PYTHON_PY_FILES)) \\) ) \\\n\t\t-print0 | \\\n\t\txargs -0 --no-run-if-empty rm -f\nendef\nPYTHON_TARGET_FINALIZE_HOOKS += PYTHON_REMOVE_PY_FILES\nendif\n\n# Normally, *.pyc files should not have been compiled, but just in\n# case, we make sure we remove all of them.\nifeq ($(BR2_PACKAGE_PYTHON_PY_ONLY),y)\ndefine PYTHON_REMOVE_PYC_FILES\n\tfind $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR) -name '*.pyc' -print0 | \\\n\t\txargs -0 --no-run-if-empty rm -f\nendef\nPYTHON_TARGET_FINALIZE_HOOKS += PYTHON_REMOVE_PYC_FILES\nendif\n\n# In all cases, we don't want to keep the optimized .pyo files\ndefine PYTHON_REMOVE_PYO_FILES\n\tfind $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR) -name '*.pyo' -print0 | \\\n\t\txargs -0 --no-run-if-empty rm -f\nendef\nPYTHON_TARGET_FINALIZE_HOOKS += PYTHON_REMOVE_PYO_FILES\n"
  },
  {
    "path": "package/python-aenum/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AENUM\n\tbool \"python-aenum\"\n\thelp\n\t  Advanced Enumerations (compatible with Python's stdlib Enum),\n\t  NamedTuples, and NamedConstants.\n\n\t  https://pypi.org/project/aenum\n"
  },
  {
    "path": "package/python-aenum/python-aenum.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aenum/json\nmd5  6f30144abd4d156f22f8a49d81c496df  aenum-3.1.0.tar.gz\nsha256  87f0e9ef4f828578ab06af30e4d7944043bf4ecd3f4b7bd1cbe37e2173cde94a  aenum-3.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256  0db837e38002017b352666c83c8d3216ee5b9b2229375eb2cf4487f8c24e1f8c  aenum/LICENSE\n"
  },
  {
    "path": "package/python-aenum/python-aenum.mk",
    "content": "################################################################################\n#\n# python-aenum\n#\n################################################################################\n\nPYTHON_AENUM_VERSION = 3.1.0\nPYTHON_AENUM_SOURCE = aenum-$(PYTHON_AENUM_VERSION).tar.gz\nPYTHON_AENUM_SITE = https://files.pythonhosted.org/packages/ae/25/00b2949186e76a4c9732e33221274964fecf5c88178cbe5a14a80cfc04e8\nPYTHON_AENUM_SETUP_TYPE = setuptools\nPYTHON_AENUM_LICENSE = BSD-3-Clause\nPYTHON_AENUM_LICENSE_FILES = aenum/LICENSE\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\n# only needed/valid for python 3.x\ndefine PYTHON_AENUM_RM_PY3_FILE\n\trm -f $(TARGET_DIR)/usr/lib/python*/site-packages/aenum/test_v3.py\nendef\n\nPYTHON_AENUM_POST_INSTALL_TARGET_HOOKS += PYTHON_AENUM_RM_PY3_FILE\nendif\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aioblescan/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOBLESCAN\n\tbool \"python-aioblescan\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Scanning Bluetooth for advertised info with asyncio.\n\n\t  https://github.com/frawau/aioblescan\n"
  },
  {
    "path": "package/python-aioblescan/python-aioblescan.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aioblescan/json\nmd5  f59934c040a817192fcd3e713633cf20  aioblescan-0.2.8.tar.gz\nsha256  2b048f5fe6e85b18fe306bdb63307705f3d1139563d3187d751b8657065a5bd9  aioblescan-0.2.8.tar.gz\n# Locally computed sha256 checksums\nsha256  c2066cd44079e0c706234001af18cb6ad4b62fc68d0d08d29fdc7319916647e0  LICENSE.txt\n"
  },
  {
    "path": "package/python-aioblescan/python-aioblescan.mk",
    "content": "################################################################################\n#\n# python-aioblescan\n#\n################################################################################\n\nPYTHON_AIOBLESCAN_VERSION = 0.2.8\nPYTHON_AIOBLESCAN_SOURCE = aioblescan-$(PYTHON_AIOBLESCAN_VERSION).tar.gz\nPYTHON_AIOBLESCAN_SITE = https://files.pythonhosted.org/packages/d2/10/b8b496903f33935c99f3602200d44ccc0b0a57b87e5fa65b89466c1b1f31\nPYTHON_AIOBLESCAN_SETUP_TYPE = setuptools\nPYTHON_AIOBLESCAN_LICENSE = MIT\nPYTHON_AIOBLESCAN_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiocoap/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOCOAP\n\tbool \"python-aiocoap\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Python CoAP library.\n\n\t  https://github.com/chrysn/aiocoap\n"
  },
  {
    "path": "package/python-aiocoap/python-aiocoap.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiocoap/json\nmd5  c5809dfb02be8784ec17897380009052  aiocoap-0.4.1.tar.gz\nsha256  c47c9d19a98699f27707186871b7c84f4a7016fe4fbb5bd300f809ae456f8a55  aiocoap-0.4.1.tar.gz\n# Locally computed sha256 checksums\nsha256  2bb211d412a6bfa4b2a9cf01123c7fe90e5e6185938896e23ab07b84f8494180  LICENSE\n"
  },
  {
    "path": "package/python-aiocoap/python-aiocoap.mk",
    "content": "################################################################################\n#\n# python-aiocoap\n#\n################################################################################\n\nPYTHON_AIOCOAP_VERSION = 0.4.1\nPYTHON_AIOCOAP_SOURCE = aiocoap-$(PYTHON_AIOCOAP_VERSION).tar.gz\nPYTHON_AIOCOAP_SITE = https://files.pythonhosted.org/packages/67/1c/6d6764010a4779d61bc7241afa663b368261c72af20555b26efc875d4276\nPYTHON_AIOCOAP_SETUP_TYPE = setuptools\nPYTHON_AIOCOAP_LICENSE = MIT\nPYTHON_AIOCOAP_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aioconsole/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOCONSOLE\n\tbool \"python-aioconsole\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Asynchronous console and interfaces for asyncio.\n\n\t  https://github.com/vxgmichel/aioconsole\n"
  },
  {
    "path": "package/python-aioconsole/python-aioconsole.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aioconsole/json\nmd5  b8cbcb6e00d8e535256526dfe4f27db3  aioconsole-0.3.2.tar.gz\nsha256  9355b36d41d5fbdd3dbb01510deb2b985b508b2ebcd5b8bd85af61a707e2f6c8  aioconsole-0.3.2.tar.gz\n# Locally computed sha256 checksums\nsha256  fe3eea6c599e23a00c08c5f5cb2320c30adc8f8687db5fcec9b79a662c53ff6b  LICENSE\n"
  },
  {
    "path": "package/python-aioconsole/python-aioconsole.mk",
    "content": "################################################################################\n#\n# python-aioconsole\n#\n################################################################################\n\nPYTHON_AIOCONSOLE_VERSION = 0.3.2\nPYTHON_AIOCONSOLE_SOURCE = aioconsole-$(PYTHON_AIOCONSOLE_VERSION).tar.gz\nPYTHON_AIOCONSOLE_SITE = https://files.pythonhosted.org/packages/7a/b2/747ab3cb965596cd84c5159941613d901d8771acad3c51c4f5da362aa9f0\nPYTHON_AIOCONSOLE_SETUP_TYPE = setuptools\nPYTHON_AIOCONSOLE_LICENSE = GPL-3.0\nPYTHON_AIOCONSOLE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiodns/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIODNS\n\tbool \"python-aiodns\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_PYCARES # runtime\n\thelp\n\t  Simple DNS resolver for asyncio.\n\n\t  http://github.com/saghul/aiodns\n"
  },
  {
    "path": "package/python-aiodns/python-aiodns.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiodns/json\nmd5  181e11935c78965de2b2b7b0e5efba8d  aiodns-3.0.0.tar.gz\nsha256  946bdfabe743fceeeb093c8a010f5d1645f708a241be849e17edfb0e49e08cd6  aiodns-3.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256  eb0455d35129425ed399883cd710923de3e246a510e2eb84d9f00032d0bbec97  LICENSE\n"
  },
  {
    "path": "package/python-aiodns/python-aiodns.mk",
    "content": "################################################################################\n#\n# python-aiodns\n#\n################################################################################\n\nPYTHON_AIODNS_VERSION = 3.0.0\nPYTHON_AIODNS_SOURCE = aiodns-$(PYTHON_AIODNS_VERSION).tar.gz\nPYTHON_AIODNS_SITE = https://files.pythonhosted.org/packages/27/79/df72e25df0fdd9bf5a5ab068539731d27c5f2ae5654621ae0c92ceca94cf\nPYTHON_AIODNS_SETUP_TYPE = setuptools\nPYTHON_AIODNS_LICENSE = MIT\nPYTHON_AIODNS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiofiles/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOFILES\n\tbool \"python-aiofiles\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  aiofiles aims to  handle local disk files in\n\t  asyncio applications.\n\n\t  https://pypi.org/project/aiofiles\n"
  },
  {
    "path": "package/python-aiofiles/python-aiofiles.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiofiles/json\nmd5  a2dd24e2ca8d7b7e7dbacd6381da748a  aiofiles-0.7.0.tar.gz\nsha256  a1c4fc9b2ff81568c83e21392a82f344ea9d23da906e4f6a52662764545e19d4  aiofiles-0.7.0.tar.gz\n# Locally computed sha256 checksums\nsha256  cb5e8e7e5f4a3988e1063c142c60dc2df75605f4c46515e776e3aca6df976e14  LICENSE\n"
  },
  {
    "path": "package/python-aiofiles/python-aiofiles.mk",
    "content": "################################################################################\n#\n# python-aiofiles\n#\n################################################################################\n\nPYTHON_AIOFILES_VERSION = 0.7.0\nPYTHON_AIOFILES_SOURCE = aiofiles-$(PYTHON_AIOFILES_VERSION).tar.gz\nPYTHON_AIOFILES_SITE = https://files.pythonhosted.org/packages/06/f0/af90f3fb4066b0707b6a5af3ffd5fd9b3809bbb52f0153a3c7550e594de3\nPYTHON_AIOFILES_SETUP_TYPE = setuptools\nPYTHON_AIOFILES_LICENSE = Apache-2.0\nPYTHON_AIOFILES_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiohttp/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOHTTP\n\tbool \"python-aiohttp\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIODNS # runtime\n\tselect BR2_PACKAGE_PYTHON_ASYNC_TIMEOUT # runtime\n\tselect BR2_PACKAGE_PYTHON_ATTRS # runtime\n\tselect BR2_PACKAGE_PYTHON_CCHARDET if BR2_INSTALL_LIBSTDCPP # runtime\n\tselect BR2_PACKAGE_PYTHON_CHARDET if !BR2_INSTALL_LIBSTDCPP # runtime\n\tselect BR2_PACKAGE_PYTHON_MULTIDICT # runtime\n\tselect BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime\n\tselect BR2_PACKAGE_PYTHON_YARL # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB # runtime\n\thelp\n\t  Async http client/server framework (asyncio).\n\n\t  https://github.com/aio-libs/aiohttp\n"
  },
  {
    "path": "package/python-aiohttp/python-aiohttp.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiohttp/json\nmd5  faf7726dc65a940272874c0f441e8ec6  aiohttp-3.8.1.tar.gz\nsha256  fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578  aiohttp-3.8.1.tar.gz\n# Locally computed sha256 checksums\nsha256  383c70c090b60ae81e035fe4fafed689b45c4421cd3bc355f1bd41ac208ccf3f  LICENSE.txt\n"
  },
  {
    "path": "package/python-aiohttp/python-aiohttp.mk",
    "content": "################################################################################\n#\n# python-aiohttp\n#\n################################################################################\n\nPYTHON_AIOHTTP_VERSION = 3.8.1\nPYTHON_AIOHTTP_SOURCE = aiohttp-$(PYTHON_AIOHTTP_VERSION).tar.gz\nPYTHON_AIOHTTP_SITE = https://files.pythonhosted.org/packages/5a/86/5f63de7a202550269a617a5d57859a2961f3396ecd1739a70b92224766bc\nPYTHON_AIOHTTP_SETUP_TYPE = setuptools\nPYTHON_AIOHTTP_LICENSE = Apache-2.0\nPYTHON_AIOHTTP_LICENSE_FILES = LICENSE.txt\nPYTHON_AIOHTTP_CPE_ID_VENDOR = aiohttp_project\nPYTHON_AIOHTTP_CPE_ID_PRODUCT = aiohttp\nPYTHON_AIOHTTP_POST_EXTRACT_HOOKS += PYTHON_AIOHTTP_REPLACE_VERSION\n\ndefine PYTHON_AIOHTTP_REPLACE_VERSION\n       sed -i \"s/attr: aiohttp.__version__/$(PYTHON_AIOHTTP_VERSION)/\" $(@D)/setup.cfg\nendef\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiohttp-apispec/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOHTTP_APISPEC\n\tbool \"python-aiohttp-apispec\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIOHTTP\n\tselect BR2_PACKAGE_PYTHON_APISPEC\n\thelp\n\t  Build and document REST APIs with aiohttp and apispec.\n\n\t  https://github.com/maximdanilchenko/aiohttp-apispec\n"
  },
  {
    "path": "package/python-aiohttp-apispec/python-aiohttp-apispec.hash",
    "content": "sha256\tbfcd8de7e3ca3a69abc227e238f88af0ee4b580b506616265634adc8abe274cd  aiohttp-apispec-1.1.2.tar.gz\n\n"
  },
  {
    "path": "package/python-aiohttp-apispec/python-aiohttp-apispec.mk",
    "content": "################################################################################\n#\n# python-aiohttp-apispec\n#\n################################################################################\n\nPYTHON_AIOHTTP_APISPEC_VERSION = 1.1.2\nPYTHON_AIOHTTP_APISPEC_SOURCE = aiohttp-apispec-$(PYTHON_AIOHTTP_APISPEC_VERSION).tar.gz\nPYTHON_AIOHTTP_APISPEC_SITE = https://files.pythonhosted.org/packages/8e/b1/592284bf8c1384c3bbb57f2d057e681c6cf0c426f21bd55201bf3d877866\nPYTHON_AIOHTTP_APISPEC_SETUP_TYPE = setuptools\nPYTHON_AIOHTTP_APISPEC_LICENSE = Apache-2.0\nPYTHON_AIOHTTP_APISPEC_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiohttp-cors/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOHTTP_CORS\n\tbool \"python-aiohttp-cors\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIOHTTP # runtime\n\thelp\n\t  CORS support for aiohttp.\n\n\t  https://github.com/aio-libs/aiohttp-cors\n"
  },
  {
    "path": "package/python-aiohttp-cors/python-aiohttp-cors.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiohttp_cors/json\nmd5\tde3940a901b269be82c8bd9f28d53ff0  aiohttp-cors-0.7.0.tar.gz\nsha256\t4d39c6d7100fd9764ed1caf8cebf0eb01bf5e3f24e2e073fda6234bc48b19f5d  aiohttp-cors-0.7.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t86cb2262ff825ce1c8b8fb9ea9f5174318badc3912639b9275fc25d0e305c556  LICENSE\n"
  },
  {
    "path": "package/python-aiohttp-cors/python-aiohttp-cors.mk",
    "content": "################################################################################\n#\n# python-aiohttp-cors\n#\n################################################################################\n\nPYTHON_AIOHTTP_CORS_VERSION = 0.7.0\nPYTHON_AIOHTTP_CORS_SOURCE = aiohttp-cors-$(PYTHON_AIOHTTP_CORS_VERSION).tar.gz\nPYTHON_AIOHTTP_CORS_SITE = https://files.pythonhosted.org/packages/44/9e/6cdce7c3f346d8fd487adf68761728ad8cd5fbc296a7b07b92518350d31f\nPYTHON_AIOHTTP_CORS_SETUP_TYPE = setuptools\nPYTHON_AIOHTTP_CORS_LICENSE = Apache-2.0\nPYTHON_AIOHTTP_CORS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiohttp-debugtoolbar/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOHTTP_DEBUGTOOLBAR\n\tbool \"python-aiohttp-debugtoolbar\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIOHTTP # runtime\n\tselect BR2_PACKAGE_PYTHON_AIOHTTP_JINJA2 # runtime\n\thelp\n\t  debugtoolbar for aiohttp.\n\n\t  https://github.com/aio-libs/aiohttp_debugtoolbar\n"
  },
  {
    "path": "package/python-aiohttp-debugtoolbar/python-aiohttp-debugtoolbar.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiohttp_debugtoolbar/json\nmd5\t496734057cb413d7a49a52a817802dbb  aiohttp-debugtoolbar-0.6.0.tar.gz\nsha256\tec231661133b40136608d39dfb688e7ea0c3d47b6ae6dee52d5bf24ceb9e4d45  aiohttp-debugtoolbar-0.6.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t94d638be2cb4f186cc62bb567455837757547c15f1b350863aaf05a38843b542  LICENSE\n"
  },
  {
    "path": "package/python-aiohttp-debugtoolbar/python-aiohttp-debugtoolbar.mk",
    "content": "################################################################################\n#\n# python-aiohttp-debugtoolbar\n#\n################################################################################\n\nPYTHON_AIOHTTP_DEBUGTOOLBAR_VERSION = 0.6.0\nPYTHON_AIOHTTP_DEBUGTOOLBAR_SOURCE = aiohttp-debugtoolbar-$(PYTHON_AIOHTTP_DEBUGTOOLBAR_VERSION).tar.gz\nPYTHON_AIOHTTP_DEBUGTOOLBAR_SITE = https://files.pythonhosted.org/packages/3f/dd/5121417dfbeb4661673afa5c8708f1539889d0e54b1509a6fdf66705efc5\nPYTHON_AIOHTTP_DEBUGTOOLBAR_SETUP_TYPE = setuptools\nPYTHON_AIOHTTP_DEBUGTOOLBAR_LICENSE = Apache-2.0\nPYTHON_AIOHTTP_DEBUGTOOLBAR_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiohttp-jinja2/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOHTTP_JINJA2\n\tbool \"python-aiohttp-jinja2\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIOHTTP # runtime\n\tselect BR2_PACKAGE_PYTHON_JINJA2 # runtime\n\thelp\n\t  Jinja2 template renderer for aiohttp.web (http server for\n\t  asyncio).\n\n\t  https://github.com/aio-libs/aiohttp_jinja2/\n"
  },
  {
    "path": "package/python-aiohttp-jinja2/python-aiohttp-jinja2.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiohttp-jinja2/json\nmd5  50f74689fd60a5bc0b0a74545277e9bc  aiohttp-jinja2-1.5.tar.gz\nsha256  7c3ba5eac060b691f4e50534af2d79fca2a75712ebd2b25e6fcb1295859f910b  aiohttp-jinja2-1.5.tar.gz\n# Locally computed sha256 checksums\nsha256  d9d867affaeac220a60381cc544681dcd37c668ed6ea5ddbf9948617f828889a  LICENSE\n"
  },
  {
    "path": "package/python-aiohttp-jinja2/python-aiohttp-jinja2.mk",
    "content": "################################################################################\n#\n# python-aiohttp-jinja2\n#\n################################################################################\n\nPYTHON_AIOHTTP_JINJA2_VERSION = 1.5\nPYTHON_AIOHTTP_JINJA2_SOURCE = aiohttp-jinja2-$(PYTHON_AIOHTTP_JINJA2_VERSION).tar.gz\nPYTHON_AIOHTTP_JINJA2_SITE = https://files.pythonhosted.org/packages/15/d7/8bdbdb65e2926de332d3c430839d655db61d30a7b5a4a9b2edafbeb3aa20\nPYTHON_AIOHTTP_JINJA2_SETUP_TYPE = setuptools\nPYTHON_AIOHTTP_JINJA2_LICENSE = Apache-2.0\nPYTHON_AIOHTTP_JINJA2_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiohttp-mako/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOHTTP_MAKO\n\tbool \"python-aiohttp-mako\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIOHTTP # runtime\n\tselect BR2_PACKAGE_PYTHON_MAKO # runtime\n\thelp\n\t  mako template renderer for aiohttp.web (http server for\n\t  asyncio).\n\n\t  https://github.com/aio-libs/aiohttp-mako/\n"
  },
  {
    "path": "package/python-aiohttp-mako/python-aiohttp-mako.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiohttp-mako/json\nmd5\tc0f2da2851d0b6e819b5c882f700bb11  aiohttp-mako-0.4.0.tar.gz\nsha256\tf10bdee54589b6567e8a0339db582276fdaaa198764541d2f9741f1d3836312c  aiohttp-mako-0.4.0.tar.gz\n# Locally computed sha256 checksums\nsha256\tb81fea0e0d4cda42faf00466cabe7b9e2a0cc3a0ffbf20ae3773c18e077c7c52  LICENSE\n"
  },
  {
    "path": "package/python-aiohttp-mako/python-aiohttp-mako.mk",
    "content": "################################################################################\n#\n# python-aiohttp-mako\n#\n################################################################################\n\nPYTHON_AIOHTTP_MAKO_VERSION = 0.4.0\nPYTHON_AIOHTTP_MAKO_SOURCE = aiohttp-mako-$(PYTHON_AIOHTTP_MAKO_VERSION).tar.gz\nPYTHON_AIOHTTP_MAKO_SITE = https://files.pythonhosted.org/packages/f9/8e/d7c0ea2c74e8102a94021e150b622d274fdef22ebd1f0c9a546b21458931\nPYTHON_AIOHTTP_MAKO_SETUP_TYPE = setuptools\nPYTHON_AIOHTTP_MAKO_LICENSE = Apache-2.0\nPYTHON_AIOHTTP_MAKO_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiohttp-remotes/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOHTTP_REMOTES\n\tbool \"python-aiohttp-remotes\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIOHTTP # runtime\n\thelp\n\t  Control remote side information.\n\n\t  https://github.com/aio-libs/aiohttp-remotes\n"
  },
  {
    "path": "package/python-aiohttp-remotes/python-aiohttp-remotes.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiohttp-remotes/json\nmd5  e90fad4b7aa088207f831698fddd9eea  aiohttp_remotes-1.0.0.tar.gz\nsha256  caec1681de70bac82daa676078d9b125758fb3952fdaa893a6b42bdd995562ef  aiohttp_remotes-1.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256  4e7d0edf250abe2a28027788b8c55a53d1b5c9ff961b8a00643c76aed637ba13  LICENSE\n"
  },
  {
    "path": "package/python-aiohttp-remotes/python-aiohttp-remotes.mk",
    "content": "################################################################################\n#\n# python-aiohttp-remotes\n#\n################################################################################\n\nPYTHON_AIOHTTP_REMOTES_VERSION = 1.0.0\nPYTHON_AIOHTTP_REMOTES_SOURCE = aiohttp_remotes-$(PYTHON_AIOHTTP_REMOTES_VERSION).tar.gz\nPYTHON_AIOHTTP_REMOTES_SITE = https://files.pythonhosted.org/packages/40/b6/1178bd1e26e88f9f29b7d1bbfae7b38d39ec9cf787d4685f83ade2e7aa7f\nPYTHON_AIOHTTP_REMOTES_SETUP_TYPE = distutils\nPYTHON_AIOHTTP_REMOTES_LICENSE = MIT\nPYTHON_AIOHTTP_REMOTES_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiohttp-security/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOHTTP_SECURITY\n\tbool \"python-aiohttp-security\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIOHTTP # runtime\n\thelp\n\t  Security for aiohttp.web.\n\n\t  https://github.com/aio-libs/aiohttp_security/\n"
  },
  {
    "path": "package/python-aiohttp-security/python-aiohttp-security.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiohttp-security/json\nmd5\t1624f982d7a779e6ed396ef2ed20acc7  aiohttp-security-0.4.0.tar.gz\nsha256\t40d4bb150454e392c2dfa3620f6eab28e140e94cf0c2d3b4bf43aef653ec9405  aiohttp-security-0.4.0.tar.gz\n# Locally computed sha256 checksums\nsha256\ta1cc8ff7210897d55d2552fa0792340f8e59720e0160b6918699d40f9a782b1c  LICENSE\n"
  },
  {
    "path": "package/python-aiohttp-security/python-aiohttp-security.mk",
    "content": "################################################################################\n#\n# python-aiohttp-security\n#\n################################################################################\n\nPYTHON_AIOHTTP_SECURITY_VERSION = 0.4.0\nPYTHON_AIOHTTP_SECURITY_SOURCE = aiohttp-security-$(PYTHON_AIOHTTP_SECURITY_VERSION).tar.gz\nPYTHON_AIOHTTP_SECURITY_SITE = https://files.pythonhosted.org/packages/36/01/d85be376b7c1773b3cb7849cd56dc7d38165664df7de2d3e20af507ef5bb\nPYTHON_AIOHTTP_SECURITY_SETUP_TYPE = setuptools\nPYTHON_AIOHTTP_SECURITY_LICENSE = Apache-2.0\nPYTHON_AIOHTTP_SECURITY_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiohttp-session/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOHTTP_SESSION\n\tbool \"python-aiohttp-session\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIOHTTP # runtime\n\thelp\n\t  Sessions for aiohttp.web.\n\n\t  https://github.com/aio-libs/aiohttp_session/\n"
  },
  {
    "path": "package/python-aiohttp-session/python-aiohttp-session.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiohttp-session/json\nmd5\t993ec277ece4765472d0edc0f6c0bba3  aiohttp-session-2.9.0.tar.gz\nsha256\t959413468b84e30e7ca09719617cfb0000066a2e0f6c20062d043433e82aeb74  aiohttp-session-2.9.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t2a86817fedf0c52baaa47d7dd975073639dfaaebd37312bd279de54d7f841791  LICENSE\n"
  },
  {
    "path": "package/python-aiohttp-session/python-aiohttp-session.mk",
    "content": "################################################################################\n#\n# python-aiohttp-session\n#\n################################################################################\n\nPYTHON_AIOHTTP_SESSION_VERSION = 2.9.0\nPYTHON_AIOHTTP_SESSION_SOURCE = aiohttp-session-$(PYTHON_AIOHTTP_SESSION_VERSION).tar.gz\nPYTHON_AIOHTTP_SESSION_SITE = https://files.pythonhosted.org/packages/f8/fe/53dfd35f5c7fcc7f2d0866cb29e722303e3fae7f749c1f3d4d11d361dc38\nPYTHON_AIOHTTP_SESSION_SETUP_TYPE = setuptools\nPYTHON_AIOHTTP_SESSION_LICENSE = Apache-2.0\nPYTHON_AIOHTTP_SESSION_LICENSE_FILES = LICENSE\nPYTHON_AIOHTTP_SESSION_CPE_ID_VENDOR = aiohttp-session_project\nPYTHON_AIOHTTP_SESSION_CPE_ID_PRODUCT = aiohttp-session\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiohttp-sse/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOHTTP_SSE\n\tbool \"python-aiohttp-sse\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIOHTTP # runtime\n\thelp\n\t  Server-sent events support for aiohttp.\n\n\t  https://github.com/aio-libs/aiohttp_sse/\n"
  },
  {
    "path": "package/python-aiohttp-sse/python-aiohttp-sse.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiohttp-sse/json\nmd5\td2f394fb75f591045b2c94fc17c8533d  aiohttp-sse-2.0.0.tar.gz\nsha256\t547e1eaa129749f090d02b31956215edbcde74ce99721f5f0ac902a9ccb1202e  aiohttp-sse-2.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256\tcb5e8e7e5f4a3988e1063c142c60dc2df75605f4c46515e776e3aca6df976e14  LICENSE\n"
  },
  {
    "path": "package/python-aiohttp-sse/python-aiohttp-sse.mk",
    "content": "################################################################################\n#\n# python-aiohttp-sse\n#\n################################################################################\n\nPYTHON_AIOHTTP_SSE_VERSION = 2.0.0\nPYTHON_AIOHTTP_SSE_SOURCE = aiohttp-sse-$(PYTHON_AIOHTTP_SSE_VERSION).tar.gz\nPYTHON_AIOHTTP_SSE_SITE = https://files.pythonhosted.org/packages/2b/50/e127729f7df53c32c96b5c71932a7262cad40c83f1e19c218b068c816d51\nPYTHON_AIOHTTP_SSE_SETUP_TYPE = setuptools\nPYTHON_AIOHTTP_SSE_LICENSE = Apache-2.0\nPYTHON_AIOHTTP_SSE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiohttp-swagger/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOHTTP_SWAGGER\n\tbool \"python-aiohttp-swagger\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Swagger API Documentation builder for aiohttp server\n\n\t  https://github.com/eLvErDe/aiohttp-swagger\n"
  },
  {
    "path": "package/python-aiohttp-swagger/python-aiohttp-swagger.mk",
    "content": "################################################################################\n#\n# python-aiohttp-swagger\n#\n################################################################################\n\nPYTHON_AIOHTTP_SWAGGER_VERSION = 39687734726ac72067f4e77209440757925dd6f2\nPYTHON_AIOHTTP_SWAGGER_SITE = $(call github,eLvErDe,aiohttp-swagger,$(PYTHON_AIOHTTP_SWAGGER_VERSION))\nPYTHON_AIOHTTP_SWAGGER_SETUP_TYPE = setuptools\nPYTHON_AIOHTTP_SWAGGER_LICENSE = Apache-2.0\nPYTHON_AIOHTTP_SWAGGER_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiojobs/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOJOBS\n\tbool \"python-aiojobs\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Jobs scheduler for managing background task (asyncio).\n\n\t  https://github.com/aio-libs/aiojobs\n"
  },
  {
    "path": "package/python-aiojobs/python-aiojobs.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiojobs/json\nmd5  d537fefca047067255758d7cb9e39db8  aiojobs-0.3.0.tar.gz\nsha256  f6631d42dc4308f7d883abbd70d4e976f3fcc35a3ba1e8eae5d4af4940a1e0c3  aiojobs-0.3.0.tar.gz\n# Locally computed sha256 checksums\nsha256  b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1  LICENSE\n"
  },
  {
    "path": "package/python-aiojobs/python-aiojobs.mk",
    "content": "################################################################################\n#\n# python-aiojobs\n#\n################################################################################\n\nPYTHON_AIOJOBS_VERSION = 0.3.0\nPYTHON_AIOJOBS_SOURCE = aiojobs-$(PYTHON_AIOJOBS_VERSION).tar.gz\nPYTHON_AIOJOBS_SITE = https://files.pythonhosted.org/packages/da/09/76d9c0d66d2fd1333835f110cd85f7456de7cf3f60425e3b283fba562731\nPYTHON_AIOJOBS_SETUP_TYPE = distutils\nPYTHON_AIOJOBS_LICENSE = Apache-2.0\nPYTHON_AIOJOBS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiologstash/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOLOGSTASH\n\tbool \"python-aiologstash\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_ASYNC_TIMEOUT # runtime\n\tselect BR2_PACKAGE_PYTHON_LOGSTASH # runtime\n\thelp\n\t  asyncio-compatible logstash logging handler.\n\n\t  https://github.com/aio-libs/aiologstash\n"
  },
  {
    "path": "package/python-aiologstash/python-aiologstash.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiologstash/json\nmd5\t1e321c11b34477f780f31b2553557d69  aiologstash-2.0.0.tar.gz\nsha256\t698522126ffd4e905cd5f52a08092a0a78096c8f0e28bc1e303369873da71f78  aiologstash-2.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256\tbeddf3a80aaaa71ebd6765b13bc680bd0450bb81191249cc889539523f9404ec  LICENSE\n"
  },
  {
    "path": "package/python-aiologstash/python-aiologstash.mk",
    "content": "################################################################################\n#\n# python-aiologstash\n#\n################################################################################\n\nPYTHON_AIOLOGSTASH_VERSION = 2.0.0\nPYTHON_AIOLOGSTASH_SOURCE = aiologstash-$(PYTHON_AIOLOGSTASH_VERSION).tar.gz\nPYTHON_AIOLOGSTASH_SITE = https://files.pythonhosted.org/packages/1c/dc/382861d5d25ccc976d02118922598fc4547f74f3287793e270ed614d8176\nPYTHON_AIOLOGSTASH_SETUP_TYPE = distutils\nPYTHON_AIOLOGSTASH_LICENSE = MIT\nPYTHON_AIOLOGSTASH_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiomonitor/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOMONITOR\n\tbool \"python-aiomonitor\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_TERMINALTABLES # runtime\n\tselect BR2_PACKAGE_PYTHON_AIOCONSOLE # runtime\n\thelp\n\t  aiomonitor adds monitor and python REPL capabilities for\n\t  asyncio application.\n\n\t  https://github.com/aio-libs/aiomonitor\n"
  },
  {
    "path": "package/python-aiomonitor/python-aiomonitor.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiomonitor/json\nmd5\t5f184e4b97ea161fc2d690aef604f997  aiomonitor-0.4.5.tar.gz\nsha256\t6232c1ab14bf06cd7217845801c27340032f74e283bdaf32d01cdd3b7c673d0e  aiomonitor-0.4.5.tar.gz\n# Locally computed sha256 checksums\nsha256\t9b42fe3a288996988c552e387e7877be7525a1649e62086aedd6b32d3cb56365  LICENSE\n"
  },
  {
    "path": "package/python-aiomonitor/python-aiomonitor.mk",
    "content": "################################################################################\n#\n# python-aiomonitor\n#\n################################################################################\n\nPYTHON_AIOMONITOR_VERSION = 0.4.5\nPYTHON_AIOMONITOR_SOURCE = aiomonitor-$(PYTHON_AIOMONITOR_VERSION).tar.gz\nPYTHON_AIOMONITOR_SITE = https://files.pythonhosted.org/packages/98/76/b62e9fbe267287527fb6f4b6774394d4f00650195774173bb0055a99ab3d\nPYTHON_AIOMONITOR_SETUP_TYPE = setuptools\nPYTHON_AIOMONITOR_LICENSE = Apache-2.0\nPYTHON_AIOMONITOR_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aioprocessing/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOPROCESSING\n\tbool \"python-aioprocessing\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A Python 3.5+ library that integrates the multiprocessing\n\t  module with asyncio.\n\n\t  https://github.com/dano/aioprocessing\n"
  },
  {
    "path": "package/python-aioprocessing/python-aioprocessing.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aioprocessing/json\nmd5  838b6aa073f1373bd42204f86b0e3196  aioprocessing-2.0.0.tar.gz\nsha256  469dfb746e8c4e0c727ba135cfabf9e034c554f6a73c27f908bfe3625dd74b9e  aioprocessing-2.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256  53c809e8f0b91a68a39477e5fbdf77fe2b74dd6a1647c2dd9b7b22fed135239e  LICENSE.txt\n"
  },
  {
    "path": "package/python-aioprocessing/python-aioprocessing.mk",
    "content": "################################################################################\n#\n# python-aioprocessing\n#\n################################################################################\n\nPYTHON_AIOPROCESSING_VERSION = 2.0.0\nPYTHON_AIOPROCESSING_SOURCE = aioprocessing-$(PYTHON_AIOPROCESSING_VERSION).tar.gz\nPYTHON_AIOPROCESSING_SITE = https://files.pythonhosted.org/packages/8e/3e/54266241660fb026bfd27f660d44cd81a4b7f8a145d8e2db010de12622a0\nPYTHON_AIOPROCESSING_SETUP_TYPE = setuptools\nPYTHON_AIOPROCESSING_LICENSE = BSD-2-Clause\nPYTHON_AIOPROCESSING_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aioredis/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOREDIS\n\tbool \"python-aioredis\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_ASYNC_TIMEOUT # runtime\n\tselect BR2_PACKAGE_PYTHON_HIREDIS # runtime\n\thelp\n\t  Provides simple and clear interface to Redis based on asyncio.\n\n\t  https://github.com/aio-libs/aioredis\n"
  },
  {
    "path": "package/python-aioredis/python-aioredis.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aioredis/json\nmd5  343a451df2381b9ea368e12b9075caa5  aioredis-2.0.0.tar.gz\nsha256  3a2de4b614e6a5f8e104238924294dc4e811aefbe17ddf52c04a93cbf06e67db  aioredis-2.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256  183b21f240e41af611c951d01d4f36793d470a82d5fd79efc21f25ae4cf68543  LICENSE\n"
  },
  {
    "path": "package/python-aioredis/python-aioredis.mk",
    "content": "################################################################################\n#\n# python-aioredis\n#\n################################################################################\n\nPYTHON_AIOREDIS_VERSION = 2.0.0\nPYTHON_AIOREDIS_SOURCE = aioredis-$(PYTHON_AIOREDIS_VERSION).tar.gz\nPYTHON_AIOREDIS_SITE = https://files.pythonhosted.org/packages/92/60/a3cb5fadc254cc6e709ba14a02531870b02386b8c7bb147bf80a2be93f76\nPYTHON_AIOREDIS_SETUP_TYPE = setuptools\nPYTHON_AIOREDIS_LICENSE = MIT\nPYTHON_AIOREDIS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiorwlock/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIORWLOCK\n\tbool \"python-aiorwlock\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Read write lock for asyncio.\n\n\t  https://github.com/aio-libs/aiorwlock\n"
  },
  {
    "path": "package/python-aiorwlock/python-aiorwlock.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiorwlock/json\nmd5  066260ea2c6798f6e18258d4430031bb  aiorwlock-1.1.0.tar.gz\nsha256  2aaf1d1cc995abfd5b2f07ca0e9b5c23bd369517c75495a347eb5896bc307f29  aiorwlock-1.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256  fa99ee9d7727194a9f8994c67d1948dc42e8e00ab809fd4a47acfae119d11403  LICENSE\n"
  },
  {
    "path": "package/python-aiorwlock/python-aiorwlock.mk",
    "content": "################################################################################\n#\n# python-aiorwlock\n#\n################################################################################\n\nPYTHON_AIORWLOCK_VERSION = 1.1.0\nPYTHON_AIORWLOCK_SOURCE = aiorwlock-$(PYTHON_AIORWLOCK_VERSION).tar.gz\nPYTHON_AIORWLOCK_SITE = https://files.pythonhosted.org/packages/ca/e5/3221d49edb432024f6b1b7e9e36cad6363601973375667477f2130d5da7d\nPYTHON_AIORWLOCK_SETUP_TYPE = setuptools\nPYTHON_AIORWLOCK_LICENSE = Apache-2.0\nPYTHON_AIORWLOCK_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiosignal/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOSIGNAL\n\tbool \"python-aiosignal\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_FROZENLIST # runtime\n\thelp\n\t  aiosignal: a list of registered asynchronous callbacks.\n\n\t  https://github.com/aio-libs/aiosignal\n"
  },
  {
    "path": "package/python-aiosignal/python-aiosignal.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiosignal/json\nmd5  f3edf1b700b4fee6ea6ed375c3f6555c  aiosignal-1.1.2.tar.gz\nsha256  15605698a0401075a03d36cea979e3c0e6cf8467a9e3b9047040514dd9e6f43b  aiosignal-1.1.2.tar.gz\n# Locally computed sha256 checksums\nsha256  6fd5243e92dd7f98ec69c7ac377728e74905709ff527a5bf98d6d0263c04f5b6  LICENSE.txt\n"
  },
  {
    "path": "package/python-aiosignal/python-aiosignal.mk",
    "content": "################################################################################\n#\n# python-aiosignal\n#\n################################################################################\n\nPYTHON_AIOSIGNAL_VERSION = 1.1.2\nPYTHON_AIOSIGNAL_SOURCE = aiosignal-$(PYTHON_AIOSIGNAL_VERSION).tar.gz\nPYTHON_AIOSIGNAL_SITE = https://files.pythonhosted.org/packages/ac/f7/c3df3b7eac6ea96175e0817b272b43b398d5ba589be09a50d1b758d5b852\nPYTHON_AIOSIGNAL_SETUP_TYPE = setuptools\nPYTHON_AIOSIGNAL_LICENSE = Apache-2.0\nPYTHON_AIOSIGNAL_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-aiozipkin/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AIOZIPKIN\n\tbool \"python-aiozipkin\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIOHTTP # runtime\n\thelp\n\t  Distributed tracing instrumentation for asyncio application\n\t  with zipkin.\n\n\t  https://github.com/aio-libs/aiozipkin\n"
  },
  {
    "path": "package/python-aiozipkin/python-aiozipkin.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/aiozipkin/json\nmd5  0fea8a200ab2a94fe9a2340a8cbf8512  aiozipkin-1.1.1.tar.gz\nsha256  9b82619d9ef309e72627a81ab3fda0c9b83e530844cf59f2e9a011e9a2a1293f  aiozipkin-1.1.1.tar.gz\n# Locally computed sha256 checksums\nsha256  98397c300949e0cc1ddc68b0e48e67b10f2d0a4ffada4903d891a1315fe04156  LICENSE\n"
  },
  {
    "path": "package/python-aiozipkin/python-aiozipkin.mk",
    "content": "################################################################################\n#\n# python-aiozipkin\n#\n################################################################################\n\nPYTHON_AIOZIPKIN_VERSION = 1.1.1\nPYTHON_AIOZIPKIN_SOURCE = aiozipkin-$(PYTHON_AIOZIPKIN_VERSION).tar.gz\nPYTHON_AIOZIPKIN_SITE = https://files.pythonhosted.org/packages/f2/fe/26a60a7c9e91c968eac5dacab2948ed931a676880a6878695ff281c72b8f\nPYTHON_AIOZIPKIN_SETUP_TYPE = setuptools\nPYTHON_AIOZIPKIN_LICENSE = Apache-2.0\nPYTHON_AIOZIPKIN_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-alsaaudio/Config.in",
    "content": "comment \"python-alsaaudio needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_PYTHON_ALSAAUDIO\n\tbool \"python-alsaaudio\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_PCM\n\tselect BR2_PACKAGE_ALSA_LIB_MIXER\n\thelp\n\t  The PyAlsaAudio package contains bindings for the ALSA sound\n\t  API.\n\n\t  http://larsimmisch.github.io/pyalsaaudio/\n"
  },
  {
    "path": "package/python-alsaaudio/python-alsaaudio.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyalsaaudio/json\nmd5\tb46f69561bc85fc52e698b2440ca251e\tpyalsaaudio-0.8.4.tar.gz\nsha256\t84e8f8da544d7f4bd96479ce4a237600077984d9be1d7f16c1d9a492ecf50085\tpyalsaaudio-0.8.4.tar.gz\n# Locally computed sha256 checksums\nsha256\tef6ba930f96986d78082e67c817ac617b9e833d60d5a0460f24c9c674a010935\tLICENSE\n"
  },
  {
    "path": "package/python-alsaaudio/python-alsaaudio.mk",
    "content": "################################################################################\n#\n# python-alsaaudio\n#\n################################################################################\n\nPYTHON_ALSAAUDIO_VERSION = 0.8.4\nPYTHON_ALSAAUDIO_SOURCE = pyalsaaudio-$(PYTHON_ALSAAUDIO_VERSION).tar.gz\nPYTHON_ALSAAUDIO_SITE = https://files.pythonhosted.org/packages/52/b6/44871791929d9d7e11325af0b7be711388dfeeab17147988f044a41a6d83\nPYTHON_ALSAAUDIO_SETUP_TYPE = setuptools\nPYTHON_ALSAAUDIO_LICENSE = Python-2.0\nPYTHON_ALSAAUDIO_LICENSE_FILES = LICENSE\nPYTHON_ALSAAUDIO_DEPENDENCIES = alsa-lib\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ansicolors/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ANSICOLORS\n\tbool \"python-ansicolors\"\n\thelp\n\t  ANSI colors for Python.\n\n\t  http://github.com/jonathaneunice/colors/\n"
  },
  {
    "path": "package/python-ansicolors/python-ansicolors.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ansicolors/json\nmd5  9ca7e2396ffa2e20af023c6b83ab7b14  ansicolors-1.1.8.zip\nsha256  99f94f5e3348a0bcd43c82e5fc4414013ccc19d70bd939ad71e0133ce9c372e0  ansicolors-1.1.8.zip\n# Locally computed sha256 checksums\nsha256  71a13496c621f01b454f9aa54fa608a712f58eb253e6dd2c91027fe78340c773  LICENSE\n"
  },
  {
    "path": "package/python-ansicolors/python-ansicolors.mk",
    "content": "################################################################################\n#\n# python-ansicolors\n#\n################################################################################\n\nPYTHON_ANSICOLORS_VERSION = 1.1.8\nPYTHON_ANSICOLORS_SOURCE = ansicolors-$(PYTHON_ANSICOLORS_VERSION).zip\nPYTHON_ANSICOLORS_SITE = https://files.pythonhosted.org/packages/76/31/7faed52088732704523c259e24c26ce6f2f33fbeff2ff59274560c27628e\nPYTHON_ANSICOLORS_SETUP_TYPE = setuptools\nPYTHON_ANSICOLORS_LICENSE = ISC\nPYTHON_ANSICOLORS_LICENSE_FILES = LICENSE\n\ndefine PYTHON_ANSICOLORS_EXTRACT_CMDS\n\tunzip $(PYTHON_ANSICOLORS_DL_DIR)/$(PYTHON_ANSICOLORS_SOURCE) -d $(@D)\n\tmv $(@D)/ansicolors-$(PYTHON_ANSICOLORS_VERSION)/* $(@D)\n\t$(RM) -r $(@D)/ansicolors-$(PYTHON_ANSICOLORS_VERSION)\nendef\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-apispec/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_APISPEC\n\tbool \"python-apispec\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification).\n\n\t  https://github.com/marshmallow-code/apispec\n"
  },
  {
    "path": "package/python-apispec/python-apispec.hash",
    "content": "sha256\tde3c6cb97b50e16a0123ddd449002f10a48fafdd789fcfe7771d60d36b700ea1  apispec-1.3.3.tar.gz\n\n"
  },
  {
    "path": "package/python-apispec/python-apispec.mk",
    "content": "################################################################################\n#\n# python-apispec\n#\n################################################################################\n\nPYTHON_APISPEC_VERSION = 1.3.3\nPYTHON_APISPEC_SOURCE = apispec-$(PYTHON_APISPEC_VERSION).tar.gz\nPYTHON_APISPEC_SITE = https://files.pythonhosted.org/packages/99/9e/c2af08f8ddbfbba13d48d26db58b905734bfc1f42d38471551769aa59726\nPYTHON_APISPEC_SETUP_TYPE = setuptools\nPYTHON_APISPEC_LICENSE = Apache-2.0\nPYTHON_APISPEC_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-argh/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ARGH\n\tbool \"python-argh\"\n\thelp\n\t  An unobtrusive argparse wrapper with natural syntax.\n\n\t  http://github.com/neithere/argh/\n"
  },
  {
    "path": "package/python-argh/python-argh.hash",
    "content": "# md5 from https://pypi.python.org/pypi/argh/json\nmd5\tedda25f3f0164a963dd89c0e3c619973  argh-0.26.2.tar.gz\n# Locally computed\nsha256\te9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65  argh-0.26.2.tar.gz\nsha256  9c318783389a2e78735dc3d633e745e5648b826744521857045e84ed2e79ce2e  README.rst\n"
  },
  {
    "path": "package/python-argh/python-argh.mk",
    "content": "################################################################################\n#\n# python-argh\n#\n################################################################################\n\nPYTHON_ARGH_VERSION = 0.26.2\nPYTHON_ARGH_SOURCE = argh-$(PYTHON_ARGH_VERSION).tar.gz\nPYTHON_ARGH_SITE = https://pypi.python.org/packages/e3/75/1183b5d1663a66aebb2c184e0398724b624cecd4f4b679cb6e25de97ed15\nPYTHON_ARGH_SETUP_TYPE = setuptools\nPYTHON_ARGH_LICENSE = LGPL-3.0+\nPYTHON_ARGH_LICENSE_FILES = README.rst\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-argon2-cffi/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ARGON2_CFFI\n\tbool \"python-argon2-cffi\"\n\tdepends on BR2_USE_MMU # libargon2\n\tdepends on !BR2_STATIC_LIBS # libargon2\n\tselect BR2_PACKAGE_PYTHON_CFFI # runtime\n\tselect BR2_PACKAGE_PYTHON_ENUM34 if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_LIBARGON2\n\thelp\n\t  The secure Argon2 password hashing algorithm.\n\n\t  https://argon2-cffi.readthedocs.io/\n"
  },
  {
    "path": "package/python-argon2-cffi/python-argon2-cffi.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/argon2-cffi/json\nmd5  f33bc18f2c2438f685ba1f0bbd2b86a4  argon2-cffi-21.1.0.tar.gz\nsha256  f710b61103d1a1f692ca3ecbd1373e28aa5e545ac625ba067ff2feca1b2bb870  argon2-cffi-21.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256  bf659a28b49240602f56bbdf490cbe2ec509b15b98f99d7b19a52c740e327863  LICENSE\n"
  },
  {
    "path": "package/python-argon2-cffi/python-argon2-cffi.mk",
    "content": "################################################################################\n#\n# python-argon2-cffi\n#\n################################################################################\n\nPYTHON_ARGON2_CFFI_VERSION = 21.1.0\nPYTHON_ARGON2_CFFI_SOURCE = argon2-cffi-$(PYTHON_ARGON2_CFFI_VERSION).tar.gz\nPYTHON_ARGON2_CFFI_SITE = https://files.pythonhosted.org/packages/7b/39/a26aaef5c3f0c6cfd67c80599b5b40a794fdab46f4ee3be925d71e2f9596\nPYTHON_ARGON2_CFFI_SETUP_TYPE = setuptools\nPYTHON_ARGON2_CFFI_LICENSE = MIT\nPYTHON_ARGON2_CFFI_LICENSE_FILES = LICENSE\nPYTHON_ARGON2_CFFI_DEPENDENCIES = host-python-cffi libargon2\nPYTHON_ARGON2_CFFI_ENV = ARGON2_CFFI_USE_SYSTEM=1\n\nifeq ($(BR2_X86_CPU_HAS_SSE2),y)\nPYTHON_ARGON2_CFFI_ENV += ARGON2_CFFI_USE_SSE2=1\nelse\nPYTHON_ARGON2_CFFI_ENV += ARGON2_CFFI_USE_SSE2=0\nendif\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-arrow/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ARROW\n\tbool \"python-arrow\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_DATEUTIL # runtime\n\thelp\n\t  Better dates and times for Python.\n\n\t  https://github.com/crsmithdev/arrow/\n"
  },
  {
    "path": "package/python-arrow/python-arrow.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/arrow/json\nmd5  608682052926c7e5636285af0618ef38  arrow-1.2.0.tar.gz\nsha256  16fc29bbd9e425e3eb0fef3018297910a0f4568f21116fc31771e2760a50e074  arrow-1.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256  40d6e1255d7151f5f041a514725d3c94ffa8c1881e5a0c29b6bea93f03e2e3bb  LICENSE\n"
  },
  {
    "path": "package/python-arrow/python-arrow.mk",
    "content": "################################################################################\n#\n# python-arrow\n#\n################################################################################\n\nPYTHON_ARROW_VERSION = 1.2.0\nPYTHON_ARROW_SOURCE = arrow-$(PYTHON_ARROW_VERSION).tar.gz\nPYTHON_ARROW_SITE = https://files.pythonhosted.org/packages/dc/bd/2565b8533bb8cf66e10a9e68a1d489ad839799b2050f0635039e614e3b1a\nPYTHON_ARROW_SETUP_TYPE = setuptools\nPYTHON_ARROW_LICENSE = Apache-2.0\nPYTHON_ARROW_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-asgiref/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ASGIREF\n\tbool \"python-asgiref\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  ASGI is a standard for Python asynchronous web apps and\n\t  servers to communicate with each other, and positioned as\n\t  an asynchronous successor to WSGI.\n\n\t  This package includes ASGI base libraries, such as:\n\t    - Sync-to-async and async-to-sync function wrappers,\n\t      asgiref.sync\n\t    - Server base classes, asgiref.server\n\t    - A WSGI-to-ASGI adapter, in asgiref.wsgi\n\n\t  http://github.com/django/asgiref/\n"
  },
  {
    "path": "package/python-asgiref/python-asgiref.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/asgiref/json\nmd5\t5afe03ecc39ae94950ff95e80166d945  asgiref-3.3.4.tar.gz\nsha256\td1216dfbdfb63826470995d31caed36225dcaf34f182e0fa257a4dd9e86f1b78  asgiref-3.3.4.tar.gz\n# Locally computed sha256 checksums\nsha256\tb846415d1b514e9c1dff14a22deb906d794bc546ca6129f950a18cd091e2a669  LICENSE\n"
  },
  {
    "path": "package/python-asgiref/python-asgiref.mk",
    "content": "################################################################################\n#\n# python-asgiref\n#\n################################################################################\n\nPYTHON_ASGIREF_VERSION = 3.3.4\nPYTHON_ASGIREF_SOURCE = asgiref-$(PYTHON_ASGIREF_VERSION).tar.gz\nPYTHON_ASGIREF_SITE = https://files.pythonhosted.org/packages/d8/3f/ef696a6d8254f182b1a089aeffb638d2eb83055e603146d3a40605c5b7da\nPYTHON_ASGIREF_SETUP_TYPE = setuptools\nPYTHON_ASGIREF_LICENSE = BSD-3-Clause\nPYTHON_ASGIREF_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-asn1crypto/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ASN1CRYPTO\n\tbool \"python-asn1crypto\"\n\thelp\n\t  Fast ASN.1 parser and serializer with definitions for\n\t  private keys, public keys, certificates, CRL, OCSP, CMS,\n\t  PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP.\n\n\t  https://github.com/wbond/asn1crypto\n"
  },
  {
    "path": "package/python-asn1crypto/python-asn1crypto.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/asn1crypto/json\nmd5  00bf5b72d37778e62cc73b1d8909ae27  asn1crypto-1.4.0.tar.gz\nsha256  f4f6e119474e58e04a2b1af817eb585b4fd72bdd89b998624712b5c99be7641c  asn1crypto-1.4.0.tar.gz\n# Locally computed sha256 checksums\nsha256  a88480656ec98943fb04344f6a477ee74062896f3ddb1a6f99e5f05f0109a286  LICENSE\n"
  },
  {
    "path": "package/python-asn1crypto/python-asn1crypto.mk",
    "content": "################################################################################\n#\n# python-asn1crypto\n#\n################################################################################\n\nPYTHON_ASN1CRYPTO_VERSION = 1.4.0\nPYTHON_ASN1CRYPTO_SOURCE = asn1crypto-$(PYTHON_ASN1CRYPTO_VERSION).tar.gz\nPYTHON_ASN1CRYPTO_SITE = https://files.pythonhosted.org/packages/6b/b4/42f0e52ac2184a8abb31f0a6f98111ceee1aac0b473cee063882436e0e09\nPYTHON_ASN1CRYPTO_SETUP_TYPE = setuptools\nPYTHON_ASN1CRYPTO_LICENSE = MIT\nPYTHON_ASN1CRYPTO_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-async-lru/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ASYNC_LRU\n\tbool \"python-async-lru\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Simple lru_cache for asyncio.\n\n\t  https://github.com/aio-libs/async_lru\n"
  },
  {
    "path": "package/python-async-lru/python-async-lru.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/async_lru/json\nmd5\t69bed62927426353513e68aec77989ab  async_lru-1.0.2.tar.gz\nsha256\tbaa898027619f5cc31b7966f96f00e4fc0df43ba206a8940a5d1af5336a477cb  async_lru-1.0.2.tar.gz\n# Locally computed sha256 checksums\nsha256\tea65975679bc2093be925d520358e41096bd96fddedee3e929160a5faadcf573  LICENSE\n"
  },
  {
    "path": "package/python-async-lru/python-async-lru.mk",
    "content": "################################################################################\n#\n# python-async-lru\n#\n################################################################################\n\nPYTHON_ASYNC_LRU_VERSION = 1.0.2\nPYTHON_ASYNC_LRU_SOURCE = async_lru-$(PYTHON_ASYNC_LRU_VERSION).tar.gz\nPYTHON_ASYNC_LRU_SITE = https://files.pythonhosted.org/packages/7e/c1/a3d6207deaaeb582d16dc9a0fd217f192efc9487ce59897131cf9a2bdc1c\nPYTHON_ASYNC_LRU_SETUP_TYPE = setuptools\nPYTHON_ASYNC_LRU_LICENSE = MIT\nPYTHON_ASYNC_LRU_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-async-timeout/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ASYNC_TIMEOUT\n\tbool \"python-async-timeout\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime\n\thelp\n\t  asyncio-compatible timeout context manager.\n\n\t  https://github.com/aio-libs/async-timeout\n"
  },
  {
    "path": "package/python-async-timeout/python-async-timeout.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/async-timeout/json\nmd5  2871f3853060ac7e76e6278b85dfb3c9  async-timeout-4.0.0.tar.gz\nsha256  7d87a4e8adba8ededb52e579ce6bc8276985888913620c935094c2276fd83382  async-timeout-4.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256  e18d7bb8f513e2c46bb585c94b585bd30720dd3ccb21ddb0786f72d16658f92c  LICENSE\n"
  },
  {
    "path": "package/python-async-timeout/python-async-timeout.mk",
    "content": "################################################################################\n#\n# python-async-timeout\n#\n################################################################################\n\nPYTHON_ASYNC_TIMEOUT_VERSION = 4.0.0\nPYTHON_ASYNC_TIMEOUT_SOURCE = async-timeout-$(PYTHON_ASYNC_TIMEOUT_VERSION).tar.gz\nPYTHON_ASYNC_TIMEOUT_SITE = https://files.pythonhosted.org/packages/28/0c/1cd218ea84964f0740a3ab6152dfa99661174abdd8e4053e06c0285ac42a\nPYTHON_ASYNC_TIMEOUT_LICENSE = Apache-2.0\nPYTHON_ASYNC_TIMEOUT_LICENSE_FILES = LICENSE\nPYTHON_ASYNC_TIMEOUT_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-asyncpg/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ASYNCPG\n\tbool \"python-asyncpg\"\n\tselect BR2_PACKAGE_HOST_PYTHON_CYTHON\n\thelp\n\t  A fast PostgreSQL Database Client Library for Python/asyncio\n\n\t  https://github.com/MagicStack/asyncpg\n"
  },
  {
    "path": "package/python-asyncpg/python-asyncpg.hash",
    "content": "sha256  53cb2a0eb326f61e34ef4da2db01d87ce9c0ebe396f65a295829df334e31863f  asyncpg-0.21.0.tar.gz\n"
  },
  {
    "path": "package/python-asyncpg/python-asyncpg.mk",
    "content": "################################################################################\n#\n# python-asyncpg\n#\n################################################################################\n\nPYTHON_ASYNCPG_VERSION = 0.21.0\nPYTHON_ASYNCPG_SOURCE = asyncpg-$(PYTHON_ASYNCPG_VERSION).tar.gz\nPYTHON_ASYNCPG_SITE = https://files.pythonhosted.org/packages/08/4b/ae73e69c5ec9c45f6b07d3cb151ee8597ddb5c3f3b539cf4dfa4af13031d\nPYTHON_ASYNCPG_LICENSE = MIT\nPYTHON_ASYNCPG_LICENSE_FILES = LICENSE\nPYTHON_ASYNCPG_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-attrs/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ATTRS\n\tbool \"python-attrs\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  attrs is the Python package that will bring back the joy of\n\t  writing classes by relieving you from the drudgery of\n\t  implementing object protocols (aka dunder methods).\n\n\t  https://attrs.readthedocs.io/\n"
  },
  {
    "path": "package/python-attrs/python-attrs.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/attrs/json\nmd5  06af884070d9180694becdb106e5cd65  attrs-21.2.0.tar.gz\nsha256  ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb  attrs-21.2.0.tar.gz\n# Locally computed sha256\nsha256  bf659a28b49240602f56bbdf490cbe2ec509b15b98f99d7b19a52c740e327863  LICENSE\n"
  },
  {
    "path": "package/python-attrs/python-attrs.mk",
    "content": "################################################################################\n#\n# python-attrs\n#\n################################################################################\n\nPYTHON_ATTRS_VERSION = 21.2.0\nPYTHON_ATTRS_SOURCE = attrs-$(PYTHON_ATTRS_VERSION).tar.gz\nPYTHON_ATTRS_SITE = https://files.pythonhosted.org/packages/ed/d6/3ebca4ca65157c12bd08a63e20ac0bdc21ac7f3694040711f9fd073c0ffb\nPYTHON_ATTRS_SETUP_TYPE = setuptools\nPYTHON_ATTRS_LICENSE = MIT\nPYTHON_ATTRS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-augeas/0001-Use-CFFI-in-out-of-line-API-mode-49.patch",
    "content": "From 9de73fefbe83c74840a93c039258845c49271b9b Mon Sep 17 00:00:00 2001\nFrom: Jeffery To <jeffery.to@gmail.com>\nDate: Sun, 8 Nov 2020 21:51:09 +0800\nSubject: [PATCH] Use CFFI in out-of-line API mode (#49)\n\nCurrently, ffi.py is called during setup to generate augeas.py; this\nfile would normally be used for out-of-line ABI mode. ffi.py is also\nimported at run-time, instead of the generated augeas.py, and used in\nin-line ABI mode.\n\nThis changes usage of CFFI to out-of-line API mode (CFFI's \"main mode of\nusage\"): ffi.py is called during setup to generate _augeas.abi3.so (a C\nextension module); this generated module is imported at run-time.\n\nWith this change, the headers/development files for augeas (i.e.\nlibaugeas-dev on Debian, augeas-devel on Fedora, etc.) and the C\ncompiler are required for build/setup. (These were not necessary\npreviously.)\n\nCloses https://github.com/hercules-team/python-augeas/issues/48.\n\nUpstream: commit 712c2028568df7760bc98d95577e35709078bfea\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n augeas/__init__.py |  2 +-\n augeas/ffi.py      | 27 ++++++++++++++++++++++-----\n setup.py           |  1 +\n 3 files changed, 24 insertions(+), 6 deletions(-)\n\ndiff --git a/augeas/__init__.py b/augeas/__init__.py\nindex 9bd97bf..1c0f580 100644\n--- a/augeas/__init__.py\n+++ b/augeas/__init__.py\n@@ -32,7 +32,7 @@ format and the transformation into a tree.\n \n from sys import version_info as _pyver\n \n-from augeas.ffi import ffi, lib\n+from _augeas import ffi, lib\n \n __author__ = \"Nathaniel McCallum <nathaniel@natemccallum.com>\"\n __credits__ = \"\"\"Jeff Schroeder <jeffschroeder@computer.org>\ndiff --git a/augeas/ffi.py b/augeas/ffi.py\nindex a24daf5..1931764 100644\n--- a/augeas/ffi.py\n+++ b/augeas/ffi.py\n@@ -1,9 +1,28 @@\n+import os\n+import subprocess\n+\n from cffi import FFI\n \n+def get_include_dirs():\n+    XML2_CONFIG = os.environ.get('XML2_CONFIG', 'xml2-config')\n+    PKG_CONFIG = os.environ.get('PKG_CONFIG', 'pkg-config')\n+    try:\n+        stdout = subprocess.check_output([XML2_CONFIG, '--cflags'])\n+    except (OSError, subprocess.CalledProcessError):\n+        try:\n+            stdout = subprocess.check_output([PKG_CONFIG, '--cflags', 'libxml-2.0'])\n+        except (OSError, subprocess.CalledProcessError):\n+            stdout = b''\n+    cflags = stdout.decode('utf-8').split()\n+    return [cflag[2:] for cflag in cflags if cflag.startswith('-I')]\n+\n ffi = FFI()\n-ffi.set_source(\"augeas\",\n-               None,\n-               libraries=['augeas'])\n+ffi.set_source(\"_augeas\",\n+               \"\"\"\n+               #include <augeas.h>\n+               \"\"\",\n+               libraries=['augeas'],\n+               include_dirs=get_include_dirs())\n \n ffi.cdef(\"\"\"\n typedef struct augeas augeas;\n@@ -44,7 +63,5 @@ const char *aug_error_details(augeas *aug);\n void free(void *);\n \"\"\")\n \n-lib = ffi.dlopen(\"augeas\")\n-\n if __name__ == \"__main__\":\n     ffi.compile(verbose=True)\ndiff --git a/setup.py b/setup.py\nindex 7d55877..17f9516 100755\n--- a/setup.py\n+++ b/setup.py\n@@ -22,6 +22,7 @@ setup(name=name,\n       setup_requires=[\"cffi>=1.0.0\"],\n       cffi_modules=[\"augeas/ffi.py:ffi\"],\n       install_requires=[\"cffi>=1.0.0\"],\n+      zip_safe=False,\n       url=\"http://augeas.net/\",\n       classifiers=[\n           \"Programming Language :: Python :: 2.7\",\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/python-augeas/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AUGEAS\n\tbool \"python-augeas\"\n\tdepends on !BR2_arc\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_AUGEAS\n\tselect BR2_PACKAGE_PYTHON_CFFI # runtime\n\thelp\n\t  Pure python bindings for Augeas.\n\n\t  https://github.com/hercules-team/python-augeas\n\ncomment \"python-augeas needs a toolchain w/ wchar\"\n\tdepends on !BR2_arc\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/python-augeas/python-augeas.hash",
    "content": "# Locally computed\nsha256  1a1d2cdaf2ad4c091ed5ec7976c52d16e14ecfbf40b1bdcaced2465255fb0f87  python-augeas-1.1.0.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/python-augeas/python-augeas.mk",
    "content": "################################################################################\n#\n# python-augeas\n#\n################################################################################\n\nPYTHON_AUGEAS_VERSION = 1.1.0\nPYTHON_AUGEAS_SITE = $(call github,hercules-team,python-augeas,v$(PYTHON_AUGEAS_VERSION))\nPYTHON_AUGEAS_SETUP_TYPE = setuptools\nPYTHON_AUGEAS_LICENSE = LGPL-2.1+\nPYTHON_AUGEAS_LICENSE_FILES = COPYING\nPYTHON_AUGEAS_DEPENDENCIES = augeas host-python-cffi host-pkgconf\n# This will tell python-augeas to not call xml2-config, and instead\n# use pkg-config to find libxml2. libxml2 is an indirect dependency of\n# augeas, which is why it's not in our dependencies. It's odd that\n# python-augeas searches for libxml2, but that's what it\n# does. Question asked in the pull request at\n# https://github.com/hercules-team/python-augeas/pull/49.\nPYTHON_AUGEAS_ENV = XML2_CONFIG=/bin/false\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-autobahn/0001-Fix-duplicate-xbr-packages-and-xbr-templates-package.patch",
    "content": "From b13b7e38b38e2c79c0a13be32e05f0451483cd01 Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Sat, 12 Jun 2021 15:32:37 -0600\nSubject: [PATCH] Fix duplicate xbr packages and xbr templates package_data.\n (#1492)\n\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[james.hilliard1@gmail.com: backport from upstream commit\na370f9e7154e59b313cb675bfcaf8cad6011bd52]\n---\n MANIFEST.in |  1 -\n setup.py    | 10 ++++++++--\n 2 files changed, 8 insertions(+), 3 deletions(-)\n\ndiff --git a/MANIFEST.in b/MANIFEST.in\nindex f4cb6da1..1dd32f0e 100644\n--- a/MANIFEST.in\n+++ b/MANIFEST.in\n@@ -1,4 +1,3 @@\n include LICENSE\n include autobahn/nvx/_utf8validator.c\n recursive-include autobahn/wamp/gen/schema *\n-recursive-include autobahn/xbr/templates *\ndiff --git a/setup.py b/setup.py\nindex cf4e29ba..f27006da 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -166,6 +166,12 @@ packages = [\n     'twisted.plugins',\n ]\n \n+xbr_packages = [\n+    'autobahn.xbr',\n+    'autobahn.asyncio.xbr',\n+    'autobahn.twisted.xbr',\n+]\n+\n package_data = {'autobahn.asyncio': ['./test/*']}\n \n entry_points = {\n@@ -179,8 +185,8 @@ if 'AUTOBAHN_STRIP_XBR' in os.environ:\n     shutil.rmtree('autobahn.egg-info', ignore_errors=True)\n else:\n     extras_require_all += extras_require_xbr\n-    packages += ['autobahn.xbr', 'autobahn.asyncio.xbr', 'autobahn.twisted.xbr']\n-    package_data['xbr'] = ['./xbr/contracts/*.json']\n+    packages += xbr_packages\n+    package_data['xbr'] = ['./xbr/templates/*.py.jinja2']\n     entry_points['console_scripts'] += [\"xbrnetwork = autobahn.xbr._cli:_main\"]\n \n # development dependencies\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python-autobahn/0002-Build-with-nvx-by-default-and-don-t-publish-universa.patch",
    "content": "From 1e3162bab59cbc2f7cf8b9ef6cadf55ee273c1d8 Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Thu, 22 Jul 2021 06:56:51 -0600\nSubject: [PATCH] Build with nvx by default and don't publish universal wheel.\n (#1493)\n\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[james.hilliard1@gmail.com: backport from upstream commit\na35f22eeaafca7568f1deb35c4a1b82ae78f77d4]\n---\n Makefile                       | 8 ++++----\n autobahn/nvx/_utf8validator.py | 7 ++++++-\n setup.py                       | 7 +------\n 3 files changed, 11 insertions(+), 11 deletions(-)\n\ndiff --git a/autobahn/nvx/_utf8validator.py b/autobahn/nvx/_utf8validator.py\nindex e72fc872..34393356 100644\n--- a/autobahn/nvx/_utf8validator.py\n+++ b/autobahn/nvx/_utf8validator.py\n@@ -44,13 +44,18 @@ ffi.cdef(\"\"\"\n     int nvx_utf8vld_get_impl(void* utf8vld);\n \"\"\")\n \n+optional = True\n+if 'AUTOBAHN_USE_NVX' in os.environ and os.environ['AUTOBAHN_USE_NVX'] in ['1', 'true']:\n+    optional = False\n+\n with open(os.path.join(os.path.dirname(__file__), '_utf8validator.c')) as fd:\n     c_source = fd.read()\n     ffi.set_source(\n         \"_nvx_utf8validator\",\n         c_source,\n         libraries=[],\n-        extra_compile_args=['-std=c99', '-Wall', '-Wno-strict-prototypes', '-O3', '-march=native']\n+        extra_compile_args=['-std=c99', '-Wall', '-Wno-strict-prototypes', '-O3', '-march=native'],\n+        optional=optional\n     )\n \n \ndiff --git a/setup.py b/setup.py\nindex f27006da..4889a39e 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -110,12 +110,7 @@ extras_require_nvx = [\n \n # cffi based extension modules to build, currently only NVX\n cffi_modules = []\n-if 'AUTOBAHN_USE_NVX' in os.environ:\n-    # FIXME: building this extension will make the wheel\n-    # produced no longer universal (as in \"autobahn-18.4.1-py2.py3-none-any.whl\").\n-    # on the other hand, I don't know how to selectively include this\n-    # based on the install flavor the user has chosen (eg pip install autobahn[nvx]\n-    # should make the following be included)\n+if 'AUTOBAHN_USE_NVX' not in os.environ or os.environ['AUTOBAHN_USE_NVX'] not in ['0', 'false']:\n     cffi_modules.append('autobahn/nvx/_utf8validator.py:ffi')\n \n extras_require_xbr = [\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python-autobahn/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AUTOBAHN\n\tbool \"python-autobahn\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_CFFI # runtime\n\tselect BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime\n\tselect BR2_PACKAGE_PYTHON_HYPERLINK # runtime\n\tselect BR2_PACKAGE_PYTHON_TXAIO # runtime\n\thelp\n\t  WebSocket client and server library, WAMP real-time\n\t  framework.\n\n\t  https://pypi.python.org/pypi/autobahn\n"
  },
  {
    "path": "package/python-autobahn/python-autobahn.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/autobahn/json\nmd5  dcba839ee61be33d05042a09c008c6bc  autobahn-21.3.1.tar.gz\nsha256  e126c1f583e872fb59e79d36977cfa1f2d0a8a79f90ae31f406faae7664b8e03  autobahn-21.3.1.tar.gz\n# Locally computed sha256 checksums\nsha256  0387eefce570453daaa60633f28676003731eeca28b2d0a0071c628e3a0004ef  LICENSE\n"
  },
  {
    "path": "package/python-autobahn/python-autobahn.mk",
    "content": "################################################################################\n#\n# python-autobahn\n#\n################################################################################\n\nPYTHON_AUTOBAHN_VERSION = 21.3.1\nPYTHON_AUTOBAHN_SOURCE = autobahn-$(PYTHON_AUTOBAHN_VERSION).tar.gz\nPYTHON_AUTOBAHN_SITE = https://files.pythonhosted.org/packages/4c/9e/f5bdfb55d1eab67c4b6d24d1397f95feec792071ff1b2f5a893d6d5247f3\nPYTHON_AUTOBAHN_LICENSE = MIT\nPYTHON_AUTOBAHN_LICENSE_FILES = LICENSE\nPYTHON_AUTOBAHN_CPE_ID_VENDOR = crossbar\nPYTHON_AUTOBAHN_CPE_ID_PRODUCT = autobahn\nPYTHON_AUTOBAHN_SETUP_TYPE = setuptools\nPYTHON_AUTOBAHN_DEPENDENCIES = host-python-cffi\nPYTHON_AUTOBAHN_ENV = AUTOBAHN_STRIP_XBR=1\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-automat/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AUTOMAT\n\tbool \"python-automat\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-attrs\n\tselect BR2_PACKAGE_PYTHON_ATTRS # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Self-service finite-state machines for the programmer on the\n\t  go.\n\n\t  https://github.com/glyph/Automat\n"
  },
  {
    "path": "package/python-automat/python-automat.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/automat/json\nmd5  d6cef9886b037b8857bfbc686f3ae30a  Automat-20.2.0.tar.gz\nsha256  7979803c74610e11ef0c0d68a2942b152df52da55336e0c9d58daf1831cbdf33  Automat-20.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256  b2201301678d0a937d938543827ca1360712eb34e23de8ee3f3bfffbd4c0e376  LICENSE\n"
  },
  {
    "path": "package/python-automat/python-automat.mk",
    "content": "################################################################################\n#\n# python-automat\n#\n################################################################################\n\nPYTHON_AUTOMAT_VERSION = 20.2.0\nPYTHON_AUTOMAT_SOURCE = Automat-$(PYTHON_AUTOMAT_VERSION).tar.gz\nPYTHON_AUTOMAT_SITE = https://files.pythonhosted.org/packages/80/c5/82c63bad570f4ef745cc5c2f0713c8eddcd07153b4bee7f72a8dc9f9384b\nPYTHON_AUTOMAT_SETUP_TYPE = setuptools\nPYTHON_AUTOMAT_LICENSE = MIT\nPYTHON_AUTOMAT_LICENSE_FILES = LICENSE\nPYTHON_AUTOMAT_DEPENDENCIES = host-python-m2r host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-avro/0002-drop-install-time-linting-and-imports-sorting.patch",
    "content": "From 3446a4af8474cd863efddeae7f3e5dd3f9b8e25e Mon Sep 17 00:00:00 2001\nFrom: Titouan Christophe <titouan.christophe@railnova.eu>\nDate: Mon, 17 Feb 2020 15:12:13 +0100\nSubject: [PATCH] drop install time linting and imports sorting\n\nSince the 1.9.2 release, the setup script is also performing code linting\ntasks, which require additional python libraries.\n\nThese linting tasks are not needed anyway, since they are intended to prepare\nthe code for distribution, but the Buildroot package is already using a\ndistributed version. We therefore simply remove them.\n\nSigned-off-by: Titouan Christophe <titouan.christophe@railnova.eu>\n---\n setup.cfg | 2 --\n setup.py  | 1 -\n 2 files changed, 3 deletions(-)\n\ndiff --git a/setup.cfg b/setup.cfg\nindex 7b5de18..d46a36e 100644\n--- a/setup.cfg\n+++ b/setup.cfg\n@@ -25,8 +25,6 @@ package_dir =\n include_package_data = true\n packages = avro\n setup_requires = \n-\tisort\n-\tpycodestyle\n install_requires = \n zip_safe = true\n scripts = \ndiff --git a/setup.py b/setup.py\nindex f6297bb..91d3287 100755\n--- a/setup.py\n+++ b/setup.py\n@@ -164,7 +164,6 @@ def main():\n     setuptools.setup(cmdclass={\n         \"clean\": CleanCommand,\n         \"generate_interop_data\": GenerateInteropDataCommand,\n-        \"lint\": LintCommand,\n     })\n \n \n-- \n2.24.1\n\n"
  },
  {
    "path": "package/python-avro/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_AVRO\n\tbool \"python-avro\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Select this option to install the Avro Python3 language\n\t  bindings, and the `avro` command line tool\n\n\t  Apache Avro is a data serialization system.\n\t  Avro provides:\n\t  - Rich data structures.\n\t  - A compact, fast, binary data format.\n\t  - A container file, to store persistent data.\n\t  - Remote procedure call (RPC).\n\t  - Simple integration with dynamic languages.\n\t  - Code generation is not required to read or write data\n\t    files nor to use or implement RPC protocols.\n\t  - Code generation as an optional optimization,\n\t    only worth implementing for statically typed languages.\n\n\t  http://avro.apache.org/\n"
  },
  {
    "path": "package/python-avro/python-avro.hash",
    "content": "# From https://downloads.apache.org/avro/avro-1.10.0/py3/avro-python3-1.10.0.tar.gz.sha512\nsha512  fb41f9227d2410c29cde10d7573aebbc142c2bf3f5945a1aaffdeac8b4b5ec690b0befdfc813a8762289dbbb7fc4e1be1564ba0c69d03092b84d8e938d6156f6  avro-python3-1.10.0.tar.gz\n\n# License files\nsha256  c79a7fea0e3cac04cd43f20e7b648e5a0ff8fa5344e644b0ee09ca1162b62747  avro/LICENSE\n"
  },
  {
    "path": "package/python-avro/python-avro.mk",
    "content": "################################################################################\n#\n# python-avro\n#\n################################################################################\n\nPYTHON_AVRO_VERSION = $(AVRO_C_VERSION)\nPYTHON_AVRO_SITE = https://www-eu.apache.org/dist/avro/avro-$(PYTHON_AVRO_VERSION)/py3\nPYTHON_AVRO_SOURCE = avro-python3-$(PYTHON_AVRO_VERSION).tar.gz\nPYTHON_AVRO_LICENSE = Apache-2.0\nPYTHON_AVRO_LICENSE_FILES = avro/LICENSE\nPYTHON_AVRO_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-babel/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BABEL\n\tbool \"python-babel\"\n\tselect BR2_PACKAGE_PYTHON_PYTZ # runtime\n\thelp\n\t  A collection of tools for internationalizing Python\n\t  applications.\n\n\t  http://babel.pocoo.org/en/latest/\n"
  },
  {
    "path": "package/python-babel/python-babel.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/babel/json\nmd5  7166099733d78aa857d74fa50d8ff58c  Babel-2.9.1.tar.gz\nsha256  bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0  Babel-2.9.1.tar.gz\n# Locally computed sha256 checksums\nsha256  28c97bf33e7506e277487bdaa3a69b70f170d6af5a82785ac0a74c8428042e40  LICENSE\n"
  },
  {
    "path": "package/python-babel/python-babel.mk",
    "content": "################################################################################\n#\n# python-babel\n#\n################################################################################\n\nPYTHON_BABEL_VERSION = 2.9.1\nPYTHON_BABEL_SOURCE = Babel-$(PYTHON_BABEL_VERSION).tar.gz\nPYTHON_BABEL_SITE = https://files.pythonhosted.org/packages/17/e6/ec9aa6ac3d00c383a5731cc97ed7c619d3996232c977bb8326bcbb6c687e\nPYTHON_BABEL_SETUP_TYPE = setuptools\nPYTHON_BABEL_LICENSE = BSD-3-Clause\nPYTHON_BABEL_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-backcall/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BACKCALL\n\tbool \"python-backcall\"\n\thelp\n\t  Specifications for callback functions passed in to an API.\n\n\t  https://github.com/takluyver/backcall\n"
  },
  {
    "path": "package/python-backcall/python-backcall.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/backcall/json\nmd5  1f4c9a370c78743406296f48e56e8821  backcall-0.2.0.tar.gz\nsha256  5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e  backcall-0.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256  d422f8ce77312733c07f5fec8ccbe61d58d539774f7a66f37e4bc54740d86020  LICENSE\n"
  },
  {
    "path": "package/python-backcall/python-backcall.mk",
    "content": "################################################################################\n#\n# python-backcall\n#\n################################################################################\n\nPYTHON_BACKCALL_VERSION = 0.2.0\nPYTHON_BACKCALL_SOURCE = backcall-$(PYTHON_BACKCALL_VERSION).tar.gz\nPYTHON_BACKCALL_SITE = https://files.pythonhosted.org/packages/a2/40/764a663805d84deee23043e1426a9175567db89c8b3287b5c2ad9f71aa93\nPYTHON_BACKCALL_SETUP_TYPE = distutils\nPYTHON_BACKCALL_LICENSE = BSD-3-Clause\nPYTHON_BACKCALL_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-backports-abc/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BACKPORTS_ABC\n\tbool \"python-backports-abc\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  A backport of recent additions to the 'collections.abc'\n\t  module.\n\n\t  https://pypi.python.org/pypi/backports_abc\n"
  },
  {
    "path": "package/python-backports-abc/python-backports-abc.hash",
    "content": "# md5 from https://pypi.python.org/pypi/backports_abc/json\nmd5 7d1936ec183a3586290adf60f6f96764 backports_abc-0.5.tar.gz\n# Locally computed\nsha256  033be54514a03e255df75c5aee8f9e672f663f93abb723444caec8fe43437bde  backports_abc-0.5.tar.gz\nsha256  0a4f3b38055f50f047a42521568fa6ddb9a5976c2884f6ae138796d0f71150ca  LICENSE\n"
  },
  {
    "path": "package/python-backports-abc/python-backports-abc.mk",
    "content": "################################################################################\n#\n# python-backports-abc\n#\n################################################################################\n\nPYTHON_BACKPORTS_ABC_VERSION = 0.5\nPYTHON_BACKPORTS_ABC_SOURCE = backports_abc-$(PYTHON_BACKPORTS_ABC_VERSION).tar.gz\nPYTHON_BACKPORTS_ABC_SITE = https://pypi.python.org/packages/68/3c/1317a9113c377d1e33711ca8de1e80afbaf4a3c950dd0edfaf61f9bfe6d8\nPYTHON_BACKPORTS_ABC_LICENSE = Python-2.0\nPYTHON_BACKPORTS_ABC_LICENSE_FILES = LICENSE\nPYTHON_BACKPORTS_ABC_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-backports-functools-lru-cache/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE\n\tbool \"python-backports-functools-lru-cache\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  Backport of functools.lru_cache from Python 3.3\n\n\t  https://github.com/jaraco/backports.functools_lru_cache\n"
  },
  {
    "path": "package/python-backports-functools-lru-cache/python-backports-functools-lru-cache.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/backports.functools_lru_cache/json\nmd5\t20f53f54cd3f04b3346ce75a54959754  backports.functools_lru_cache-1.5.tar.gz\nsha256\t9d98697f088eb1b0fa451391f91afb5e3ebde16bbdb272819fd091151fda4f1a  backports.functools_lru_cache-1.5.tar.gz\n# Localy computed sha256 checksumms\nsha256\ta55e2ffe9b44998e621d51d8c094bed09acc4b5236ee73d7df395a33ba3c18fd  LICENSE\n"
  },
  {
    "path": "package/python-backports-functools-lru-cache/python-backports-functools-lru-cache.mk",
    "content": "################################################################################\n#\n# python-backports-functools-lru-cache\n#\n################################################################################\n\nPYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE_VERSION = 1.5\nPYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE_SOURCE = backports.functools_lru_cache-$(PYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE_VERSION).tar.gz\nPYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE_SITE = https://files.pythonhosted.org/packages/57/d4/156eb5fbb08d2e85ab0a632e2bebdad355798dece07d4752f66a8d02d1ea\nPYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE_SETUP_TYPE = setuptools\nPYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE_DEPENDENCIES = host-python-setuptools-scm\nPYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE_LICENSE = MIT\nPYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-backports-shutil-get-terminal-size/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE\n\tbool \"python-backports-shutil-get-terminal-size\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  A backport of the get_terminal_size function from Python\n\t  3.3's shutil.\n\n\t  https://pypi.python.org/pypi/backports.shutil_get_terminal_size\n"
  },
  {
    "path": "package/python-backports-shutil-get-terminal-size/python-backports-shutil-get-terminal-size.hash",
    "content": "# md5 from https://pypi.python.org/pypi/backports.shutil_get_terminal_size/json\nmd5 03267762480bd86b50580dc19dff3c66 backports.shutil_get_terminal_size-1.0.0.tar.gz\n# Locally computed\nsha256  713e7a8228ae80341c70586d1cc0a8caa5207346927e23d09dcbcaf18eadec80  backports.shutil_get_terminal_size-1.0.0.tar.gz\nsha256  9edd99f8c339cddbfe36a9707e671fccf245b3e50b80eec0877dccec87a2dfe4  LICENSE\n"
  },
  {
    "path": "package/python-backports-shutil-get-terminal-size/python-backports-shutil-get-terminal-size.mk",
    "content": "################################################################################\n#\n# python-backports-shutil-get-terminal-size\n#\n################################################################################\n\nPYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_VERSION = 1.0.0\nPYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_SOURCE = backports.shutil_get_terminal_size-$(PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_VERSION).tar.gz\nPYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_SITE = https://pypi.python.org/packages/ec/9c/368086faa9c016efce5da3e0e13ba392c9db79e3ab740b763fe28620b18b\nPYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_SETUP_TYPE = setuptools\nPYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_LICENSE = MIT\nPYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-backports-ssl-match-hostname/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME\n\tbool \"python-backports-ssl-match-hostname\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  The ssl.match_hostname() function from Python 3.5.\n\n\t  http://bitbucket.org/brandon/backports.ssl_match_hostname\n"
  },
  {
    "path": "package/python-backports-ssl-match-hostname/python-backports-ssl-match-hostname.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/backports.ssl_match_hostname/json\nmd5\t32d2f593af01a046bec3d2f5181a420a  backports.ssl_match_hostname-3.7.0.1.tar.gz\nsha256\tbb82e60f9fbf4c080eabd957c39f0641f0fc247d9a16e31e26d594d8f42b9fd2  backports.ssl_match_hostname-3.7.0.1.tar.gz\n# Locally computed sha256 checksums\nsha256\tbfc8a75a4b9aec224aa7973c0c9d7cc0134bdcbf8eefd008936b58554d66e97e  LICENSE.txt\n"
  },
  {
    "path": "package/python-backports-ssl-match-hostname/python-backports-ssl-match-hostname.mk",
    "content": "################################################################################\n#\n# python-backports-ssl-match-hostname\n#\n################################################################################\n\nPYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_VERSION = 3.7.0.1\nPYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_SOURCE = backports.ssl_match_hostname-$(PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_VERSION).tar.gz\nPYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_SITE = https://files.pythonhosted.org/packages/ff/2b/8265224812912bc5b7a607c44bf7b027554e1b9775e9ee0de8032e3de4b2\nPYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_SETUP_TYPE = distutils\nPYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_LICENSE = Python-2.0\nPYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-base58/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BASE58\n\tbool \"python-base58\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Base58 and Base58Check implementation compatible with what is used by the bitcoin network.\n\n\t  https://github.com/keis/base58\n"
  },
  {
    "path": "package/python-base58/python-base58.hash",
    "content": "sha256\t171a547b4a3c61e1ae3807224a6f7aec75e364c4395e7562649d7335768001a2  base58-2.1.0.tar.gz\n"
  },
  {
    "path": "package/python-base58/python-base58.mk",
    "content": "################################################################################\n#\n# python-base58\n#\n################################################################################\n\nPYTHON_BASE58_VERSION = 2.1.0\nPYTHON_BASE58_SOURCE = base58-$(PYTHON_BASE58_VERSION).tar.gz\nPYTHON_BASE58_SITE = https://files.pythonhosted.org/packages/b5/c1/8e77d5389cf1ea2535049e5ffaeb241cce21bcc1c42624b3e8d0fb3bb607\nPYTHON_BASE58_SETUP_TYPE = setuptools\nPYTHON_BASE58_LICENSE_FILES = COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-bcrypt/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BCRYPT\n\tbool \"python-bcrypt\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_CFFI # runtime\n\thelp\n\t  Modern password hashing for your software and your servers.\n\n\t  https://github.com/pyca/bcrypt/\n"
  },
  {
    "path": "package/python-bcrypt/python-bcrypt.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/bcrypt/json\nmd5  fe31390dab603728f756cd3d6830c80a  bcrypt-3.2.0.tar.gz\nsha256  5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29  bcrypt-3.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256  8173d5c29b4f956d532781d2b86e4e30f83e6b7878dce18c919451d6ba707c90  LICENSE\n"
  },
  {
    "path": "package/python-bcrypt/python-bcrypt.mk",
    "content": "################################################################################\n#\n# python-bcrypt\n#\n################################################################################\n\nPYTHON_BCRYPT_VERSION = 3.2.0\nPYTHON_BCRYPT_SOURCE = bcrypt-$(PYTHON_BCRYPT_VERSION).tar.gz\nPYTHON_BCRYPT_SITE = https://files.pythonhosted.org/packages/d8/ba/21c475ead997ee21502d30f76fd93ad8d5858d19a3fad7cd153de698c4dd\nPYTHON_BCRYPT_SETUP_TYPE = setuptools\nPYTHON_BCRYPT_LICENSE = Apache-2.0\nPYTHON_BCRYPT_LICENSE_FILES = LICENSE\nPYTHON_BCRYPT_DEPENDENCIES = host-python-cffi\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-beautifulsoup4/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BEAUTIFULSOUP4\n\tbool \"python-beautifulsoup4\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SOUPSIEVE # runtime\n\thelp\n\t  Beautiful Soup is a Python library for pulling data out of\n\t  HTML and XML files. It works with your favorite parser to\n\t  provide idiomatic ways of navigating, searching, and\n\t  modifying the parse tree. It commonly saves programmers\n\t  hours or days of work.\n\n\t  http://www.crummy.com/software/BeautifulSoup/bs4/\n"
  },
  {
    "path": "package/python-beautifulsoup4/python-beautifulsoup4.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/beautifulsoup4/json\nmd5  e754242642253dd31d249d00358d552e  beautifulsoup4-4.10.0.tar.gz\nsha256  c23ad23c521d818955a4151a67d81580319d4bf548d3d49f4223ae041ff98891  beautifulsoup4-4.10.0.tar.gz\n# Locally computed sha256 checksums\nsha256  a47ea51236098464fe0b4f559743590b533056d9e00f49ecbf80299fab47e231  COPYING.txt\n"
  },
  {
    "path": "package/python-beautifulsoup4/python-beautifulsoup4.mk",
    "content": "################################################################################\n#\n# python-beautifulsoup4\n#\n################################################################################\n\nPYTHON_BEAUTIFULSOUP4_VERSION = 4.10.0\nPYTHON_BEAUTIFULSOUP4_SOURCE = beautifulsoup4-$(PYTHON_BEAUTIFULSOUP4_VERSION).tar.gz\nPYTHON_BEAUTIFULSOUP4_SITE = https://files.pythonhosted.org/packages/a1/69/daeee6d8f22c997e522cdbeb59641c4d31ab120aba0f2c799500f7456b7e\nPYTHON_BEAUTIFULSOUP4_SETUP_TYPE = setuptools\nPYTHON_BEAUTIFULSOUP4_LICENSE = MIT\nPYTHON_BEAUTIFULSOUP4_LICENSE_FILES = COPYING.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-bidict/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BIDICT\n\tbool \"python-bidict\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  The bidirectional mapping library for Python.\n\n\t  https://bidict.readthedocs.io\n"
  },
  {
    "path": "package/python-bidict/python-bidict.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/bidict/json\nmd5  d9342771969dd0d42092a669ed6f3241  bidict-0.21.3.tar.gz\nsha256  d50bd81fae75e34198ffc94979a0eb0939ff9adb3ef32bcc93a913d8b3e3ed1d  bidict-0.21.3.tar.gz\n# Locally computed sha256 checksums\nsha256  1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5  LICENSE\n"
  },
  {
    "path": "package/python-bidict/python-bidict.mk",
    "content": "################################################################################\n#\n# python-bidict\n#\n################################################################################\n\nPYTHON_BIDICT_VERSION = 0.21.3\nPYTHON_BIDICT_SOURCE = bidict-$(PYTHON_BIDICT_VERSION).tar.gz\nPYTHON_BIDICT_SITE = https://files.pythonhosted.org/packages/3f/81/7221b28d692af5c5fc180c4850b8e4a48c7db92b3d529b430488f67db74f\nPYTHON_BIDICT_SETUP_TYPE = setuptools\nPYTHON_BIDICT_LICENSE = MPL-2.0\nPYTHON_BIDICT_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-bitstring/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BITSTRING\n\tbool \"python-bitstring\"\n\thelp\n\t  Simple construction, analysis and modification of binary data.\n\n\t  https://github.com/scott-griffiths/bitstring\n"
  },
  {
    "path": "package/python-bitstring/python-bitstring.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/bitstring/json\nmd5  04d24380a0dc491e6bdacd983a90912e  bitstring-3.1.9.tar.gz\nsha256  a5848a3f63111785224dca8bb4c0a75b62ecdef56a042c8d6be74b16f7e860e7  bitstring-3.1.9.tar.gz\n# Locally computed sha256 checksums\nsha256  a9e9c584106d4f9686c9a6aa036e507b5e7044633b8acb4365bc074d8d004711  LICENSE\n"
  },
  {
    "path": "package/python-bitstring/python-bitstring.mk",
    "content": "################################################################################\n#\n# python-bitstring\n#\n################################################################################\n\nPYTHON_BITSTRING_VERSION = 3.1.9\nPYTHON_BITSTRING_SOURCE = bitstring-$(PYTHON_BITSTRING_VERSION).tar.gz\nPYTHON_BITSTRING_SITE = https://files.pythonhosted.org/packages/4c/b1/80d58eeb21c9d4ca739770558d61f6adacb13aa4908f4f55e0974cbd25ee\nPYTHON_BITSTRING_SETUP_TYPE = setuptools\nPYTHON_BITSTRING_LICENSE = MIT\nPYTHON_BITSTRING_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-bleak/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BLEAK\n\tbool \"python-bleak\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_DBUS_NEXT # runtime\n\thelp\n\t  Bluetooth Low Energy platform Agnostic Klient.\n\n\t  https://github.com/hbldh/bleak\n"
  },
  {
    "path": "package/python-bleak/python-bleak.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/bleak/json\nmd5  f94eb8a67b32c31dad521911973e169f  bleak-0.19.0.tar.gz\nsha256  cce5200ca9bac7daaa74dd009c867c8c2b161a124e234c74307462e86caf50e6  bleak-0.19.0.tar.gz\n# Locally computed sha256 checksums\nsha256  c4029a2b63b3824ab68be841f414addbdde20cb79cdbe272fa80c0b2abe65374  LICENSE\n"
  },
  {
    "path": "package/python-bleak/python-bleak.mk",
    "content": "################################################################################\n#\n# python-bleak\n#\n################################################################################\n\nPYTHON_BLEAK_VERSION = 0.19.0\nPYTHON_BLEAK_SOURCE = bleak-$(PYTHON_BLEAK_VERSION).tar.gz\nPYTHON_BLEAK_SITE = https://files.pythonhosted.org/packages/19/39/ce32196148fd57f3eccffd9d246e78956855abe3b0c5038cf6166c75b7d8\nPYTHON_BLEAK_SETUP_TYPE = setuptools\nPYTHON_BLEAK_LICENSE = MIT\nPYTHON_BLEAK_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-bluepy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BLUEPY\n\tbool \"python-bluepy\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_BLUEZ5_UTILS\n\thelp\n\t  Python interface to Bluetooth LE on Linux\n\n\t  https://github.com/IanHarvey/bluepy\n"
  },
  {
    "path": "package/python-bluepy/python-bluepy.hash",
    "content": "sha256\t2a71edafe103565fb990256ff3624c1653036a837dfc90e1e32b839f83971cec  bluepy-1.3.0.tar.gz\n"
  },
  {
    "path": "package/python-bluepy/python-bluepy.mk",
    "content": "################################################################################\n#\n# python-bluepy\n#\n################################################################################\n\nPYTHON_BLUEPY_VERSION = 1.3.0\nPYTHON_BLUEPY_SOURCE = bluepy-$(PYTHON_BLUEPY_VERSION).tar.gz\nPYTHON_BLUEPY_SITE = https://files.pythonhosted.org/packages/27/91/6cfca10bee9862f93015413cf9e6a52c3081a71f1518963396a055128f8e\nPYTHON_BLUEPY_SETUP_TYPE = setuptools\nPYTHON_BLUEPY_LICENSE = GPL-2.0+\nPYTHON_BLUEPY_LICENSE_FILES = LICENSE.txt\nPYTHON_BLUEPY_ENV = CC=$(TARGET_CROSS)gcc\n\ndefine PYTHON_BLUEPY_REMOVE_CRAP\n    $(RM) $(TARGET_DIR)/usr/bin/blescan\n    $(RM) $(TARGET_DIR)/usr/bin/thingy52\n    $(RM) $(TARGET_DIR)/usr/bin/sensortag\n    $(RM) $(TARGET_DIR)/usr/lib/python*/site-packages/bluepy/bluez-src.tgz\n    $(RM) $(TARGET_DIR)/usr/lib/python*/site-packages/bluepy/*.{h,c}\n    $(RM) $(TARGET_DIR)/usr/lib/python*/site-packages/bluepy/Makefile \nendef\n\nPYTHON_BLUEPY_POST_INSTALL_TARGET_HOOKS += PYTHON_BLUEPY_REMOVE_CRAP\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-bluezero/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BLUEZERO\n\tbool \"python-bluezero\"\n\tdepends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # python-gobject -> gobject-introspection\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # python-gobject -> gobject-introspection\n\tdepends on BR2_HOST_GCC_AT_LEAST_8 # python-gobject -> gobject-introspection -> host-qemu\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # python-gobject -> gobject-introspection\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_DBUS # runtime\n\tselect BR2_PACKAGE_DBUS_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON_GOBJECT # runtime\n\thelp\n\t  Python library for Bluetooth Low Energy (BLE) on Linux.\n\n\t  https://github.com/ukBaz/python-bluezero\n\ncomment \"python-bluezero needs a glibc toolchain, gcc >= 4.9, host gcc >= 8\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_8\n"
  },
  {
    "path": "package/python-bluezero/python-bluezero.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/bluezero/json\nmd5  b26e6425d8adc4613b7cdf1d131f8c0b  bluezero-0.6.0.tar.gz\nsha256  d94f0672b1de3ff0040801538143fe9a42c501d8db79bcd183c9e051b8da83bc  bluezero-0.6.0.tar.gz\n# Locally computed sha256 checksums\nsha256  59319e80b4caa94ace4817c9f84aa16abc9d4d2b5f7866251b5fda92e87ccdef  LICENSE\n"
  },
  {
    "path": "package/python-bluezero/python-bluezero.mk",
    "content": "################################################################################\n#\n# python-bluezero\n#\n################################################################################\n\nPYTHON_BLUEZERO_VERSION = 0.6.0\nPYTHON_BLUEZERO_SOURCE = bluezero-$(PYTHON_BLUEZERO_VERSION).tar.gz\nPYTHON_BLUEZERO_SITE = https://files.pythonhosted.org/packages/be/15/4a806580ffd359a03184776f37cf201298918f302b414b8a3e594d1be65c\nPYTHON_BLUEZERO_SETUP_TYPE = setuptools\nPYTHON_BLUEZERO_LICENSE = MIT\nPYTHON_BLUEZERO_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-boto3/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BOTO3\n\tbool \"python-boto3\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_BOTOCORE # runtime\n\tselect BR2_PACKAGE_PYTHON_JMESPATH # runtime\n\tselect BR2_PACKAGE_PYTHON_S3TRANSFER # runtime\n\thelp\n\t  The AWS SDK for Python.\n\n\t  https://github.com/boto/boto3\n"
  },
  {
    "path": "package/python-boto3/python-boto3.hash",
    "content": "# sha256 from https://pypi.org/pypi/boto3/json\nsha256  11a6035060230e92327d4f10fef6bc44188b2cd68504012bc25ed62ac31d670b  boto3-1.19.2.tar.gz\n# Locally computed sha256 checksums\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  LICENSE\n"
  },
  {
    "path": "package/python-boto3/python-boto3.mk",
    "content": "################################################################################\n#\n# python-boto3\n#\n################################################################################\n\nPYTHON_BOTO3_VERSION = 1.19.2\nPYTHON_BOTO3_SOURCE = boto3-$(PYTHON_BOTO3_VERSION).tar.gz\nPYTHON_BOTO3_SITE = https://files.pythonhosted.org/packages/ec/45/d12f9c09b5c4dad8bcb098dfae5e9e1253ed6408efbbd9a3e60bff55b824\nPYTHON_BOTO3_SETUP_TYPE = setuptools\nPYTHON_BOTO3_LICENSE = Apache-2.0\nPYTHON_BOTO3_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-botocore/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BOTOCORE\n\tbool \"python-botocore\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_DATEUTIL # runtime\n\tselect BR2_PACKAGE_PYTHON_JMESPATH # runtime\n\tselect BR2_PACKAGE_PYTHON_URLLIB3 # runtime\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT # runtime\n\tselect BR2_PACKAGE_PYTHON3_SSL # runtime\n\thelp\n\t  Low-level, data-driven core of boto 3.\n\n\t  https://github.com/boto/botocore\n"
  },
  {
    "path": "package/python-botocore/python-botocore.hash",
    "content": "# sha256 from https://pypi.org/pypi/botocore/json\nsha256  011360e79a4b843aa6591573cfa61e8eddc99b91adab1dfdb9a2b7f2c8511193  botocore-1.22.2.tar.gz\n# Locally computed sha256 checksums\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  LICENSE.txt\n"
  },
  {
    "path": "package/python-botocore/python-botocore.mk",
    "content": "################################################################################\n#\n# python-botocore\n#\n################################################################################\n\nPYTHON_BOTOCORE_VERSION = 1.22.2\nPYTHON_BOTOCORE_SOURCE = botocore-$(PYTHON_BOTOCORE_VERSION).tar.gz\nPYTHON_BOTOCORE_SITE = https://files.pythonhosted.org/packages/0d/95/f2e74e4a91994d9ebe45746f75a8c5cafd723a88270a9772d8d66e1a8ba1\nPYTHON_BOTOCORE_SETUP_TYPE = setuptools\nPYTHON_BOTOCORE_LICENSE = Apache-2.0\nPYTHON_BOTOCORE_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-bottle/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BOTTLE\n\tbool \"python-bottle\"\n\thelp\n\t  Bottle is a fast, simple and lightweight WSGI micro\n\t  web-framework for Python. It is distributed as a single file\n\t  module and has no dependencies other than the Python\n\t  Standard Library.\n\n\t  http://bottlepy.org\n"
  },
  {
    "path": "package/python-bottle/python-bottle.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/bottle/json\nmd5  50075544706b5e662a3fbd9a98e24b07  bottle-0.12.19.tar.gz\nsha256\ta9d73ffcbc6a1345ca2d7949638db46349f5b2b77dac65d6494d45c23628da2c  bottle-0.12.19.tar.gz\n# Locally computed sha256 checksums\nsha256\td0e7211f1c3c1a1c56f39d18bcb07f27f480c8a9552617756dda3a335933b8a6  LICENSE\n"
  },
  {
    "path": "package/python-bottle/python-bottle.mk",
    "content": "################################################################################\n#\n# python-bottle\n#\n################################################################################\n\nPYTHON_BOTTLE_VERSION = 0.12.19\nPYTHON_BOTTLE_SOURCE = bottle-$(PYTHON_BOTTLE_VERSION).tar.gz\nPYTHON_BOTTLE_SITE = https://files.pythonhosted.org/packages/ea/80/3d2dca1562ffa1929017c74635b4cb3645a352588de89e90d0bb53af3317\nPYTHON_BOTTLE_LICENSE = MIT\nPYTHON_BOTTLE_LICENSE_FILES = LICENSE\nPYTHON_BOTTLE_CPE_ID_VENDOR = bottlepy\nPYTHON_BOTTLE_CPE_ID_PRODUCT = bottle\nPYTHON_BOTTLE_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-brotli/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BROTLI\n\tbool \"python-brotli\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Python bindings for the Brotli compression library.\n\n\t  https://github.com/google/brotli\n"
  },
  {
    "path": "package/python-brotli/python-brotli.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/brotli/json\nmd5  08f1f098697c64aa4596468b556d0c94  Brotli-1.0.9.zip\nsha256  4d1b810aa0ed773f81dceda2cc7b403d01057458730e309856356d4ef4188438  Brotli-1.0.9.zip\n# Locally computed sha256 checksums\nsha256  3d180008e36922a4e8daec11c34c7af264fed5962d07924aea928c38e8663c94  LICENSE\n"
  },
  {
    "path": "package/python-brotli/python-brotli.mk",
    "content": "################################################################################\n#\n# python-brotli\n#\n################################################################################\n\nPYTHON_BROTLI_VERSION = 1.0.9\nPYTHON_BROTLI_SOURCE = Brotli-$(PYTHON_BROTLI_VERSION).zip\nPYTHON_BROTLI_SITE = https://files.pythonhosted.org/packages/2a/18/70c32fe9357f3eea18598b23aa9ed29b1711c3001835f7cf99a9818985d0\nPYTHON_BROTLI_SETUP_TYPE = setuptools\nPYTHON_BROTLI_LICENSE = MIT\nPYTHON_BROTLI_LICENSE_FILES = LICENSE\n\nPYTHON_BROTLI_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)\nPYTHON_BROTLI_CFLAGS += -O0\nendif\n\nPYTHON_BROTLI_ENV = CFLAGS=\"$(PYTHON_BROTLI_CFLAGS)\"\n\ndefine PYTHON_BROTLI_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(PYTHON_BROTLI_DL_DIR)/$(PYTHON_BROTLI_SOURCE)\n\tmv $(@D)/Brotli-$(PYTHON_BROTLI_VERSION)/* $(@D)\n\t$(RM) -r $(@D)/Brotli-$(PYTHON_BROTLI_VERSION)\nendef\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-bsdiff4/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BSDIFF4\n\tbool \"python-bsdiff4\"\n\tselect BR2_PACKAGE_PYTHON_BZIP2 if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_BZIP2 if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  binary diff and patch using the BSDIFF4-format.\n\n\t  https://github.com/ilanschnell/bsdiff4\n"
  },
  {
    "path": "package/python-bsdiff4/python-bsdiff4.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/bsdiff4/json\nmd5  58889a1cd439c82c78aa2e4776b1ff38  bsdiff4-1.2.1.tar.gz\nsha256  87cffc7522effdda03fd1564b212ad2279c0af50d16c3e65776f80acb6705d4b  bsdiff4-1.2.1.tar.gz\n# Locally computed sha256\nsha256  c6c921c90383f1c43beb53c49a652d28309a410a7c394c729fd8870271451cf0  LICENSE\n"
  },
  {
    "path": "package/python-bsdiff4/python-bsdiff4.mk",
    "content": "################################################################################\n#\n# python-bsdiff4\n#\n################################################################################\n\nPYTHON_BSDIFF4_VERSION = 1.2.1\nPYTHON_BSDIFF4_SOURCE = bsdiff4-$(PYTHON_BSDIFF4_VERSION).tar.gz\nPYTHON_BSDIFF4_SITE = https://files.pythonhosted.org/packages/d8/97/101315b0d8c8d6340ee310484a1af6a2ccf65d7bb4762c3a669cf9457c71\nPYTHON_BSDIFF4_LICENSE = BSD-2-Clause, BSD-Protection (core.c)\nPYTHON_BSDIFF4_LICENSE_FILES = LICENSE\nPYTHON_BSDIFF4_CPE_ID_VENDOR = pypi\nPYTHON_BSDIFF4_CPE_ID_PRODUCT = bsdiff4\nPYTHON_BSDIFF4_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-bunch/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_BUNCH\n\tbool \"python-bunch\"\n\thelp\n\t  A dot-accessible dictionary (a la JavaScript objects).\n\n\t  http://github.com/dsc/bunch\n"
  },
  {
    "path": "package/python-bunch/python-bunch.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/bunch/json\nmd5\t0a829d64e95ed96defbcae2bf9061bb0  bunch-1.0.1.tar.gz\nsha256\t50c77a0fc0cb372dfe48b5e11937d5f70e743adbf42683f3a6d2857645a76aaa  bunch-1.0.1.tar.gz\n# Locally computed sha256 checksums\nsha256\t57ca95c92059c8380625192462979bd32994aae3fcdf902ff6eb1e467eeb0469  LICENSE.txt\n"
  },
  {
    "path": "package/python-bunch/python-bunch.mk",
    "content": "################################################################################\n#\n# python-bunch\n#\n################################################################################\n\nPYTHON_BUNCH_VERSION = 1.0.1\nPYTHON_BUNCH_SOURCE = bunch-$(PYTHON_BUNCH_VERSION).tar.gz\nPYTHON_BUNCH_SITE = https://files.pythonhosted.org/packages/ef/bf/a4cf1779a4ffb4f610903fa08e15d1f4a8a2f4e3353a02afbe097c5bf4a8\nPYTHON_BUNCH_SETUP_TYPE = setuptools\nPYTHON_BUNCH_LICENSE = MIT\nPYTHON_BUNCH_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-cached-property/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CACHED_PROPERTY\n\tbool \"python-cached-property\"\n\thelp\n\t  A decorator for caching properties in classes.\n\n\t  https://github.com/pydanny/cached-property\n"
  },
  {
    "path": "package/python-cached-property/python-cached-property.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/cached-property/json\nmd5  3451c63f8733ea0756ca1dd2b0c04bb8  cached-property-1.5.2.tar.gz\nsha256  9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130  cached-property-1.5.2.tar.gz\n# Locally computed sha256 checksums\nsha256  ba4756c8039b25b66e3c456cc5bf635aa528cf459b97ee1499d06684ccd89b9a  LICENSE\n"
  },
  {
    "path": "package/python-cached-property/python-cached-property.mk",
    "content": "################################################################################\n#\n# python-cached-property\n#\n################################################################################\n\nPYTHON_CACHED_PROPERTY_VERSION = 1.5.2\nPYTHON_CACHED_PROPERTY_SOURCE = cached-property-$(PYTHON_CACHED_PROPERTY_VERSION).tar.gz\nPYTHON_CACHED_PROPERTY_SITE = https://files.pythonhosted.org/packages/61/2c/d21c1c23c2895c091fa7a91a54b6872098fea913526932d21902088a7c41\nPYTHON_CACHED_PROPERTY_SETUP_TYPE = setuptools\nPYTHON_CACHED_PROPERTY_LICENSE = BSD-3-Clause\nPYTHON_CACHED_PROPERTY_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-can/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CAN\n\tbool \"python-can\"\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_SQLITE if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_SQLITE if BR2_PACKAGE_PYTHON3 # runtime\n\tselect BR2_PACKAGE_PYTHON_TYPING if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON_AENUM # runtime\n\tselect BR2_PACKAGE_PYTHON_WRAPT # runtime\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3\n\thelp\n\t  This module provides controller area network support for\n\t  Python.\n\n\t  https://github.com/hardbyte/python-can\n"
  },
  {
    "path": "package/python-can/python-can.hash",
    "content": "# sha256 from https://pypi.org/pypi/python-can\nsha256\t2d3c223b7adc4dd46ce258d4a33b7e0dbb6c339e002faa40ee4a69d5fdce9449  python-can-3.3.4.tar.gz\n# Locally computed sha256 checksums\nsha256\tda7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.txt\n"
  },
  {
    "path": "package/python-can/python-can.mk",
    "content": "################################################################################\n#\n# python-can\n#\n################################################################################\n\nPYTHON_CAN_VERSION = 3.3.4\nPYTHON_CAN_SITE = https://files.pythonhosted.org/packages/97/dd/5e5ae96db41ba57dde127e0600c3d324239ed692e167296c5fdb992cbf41\nPYTHON_CAN_SETUP_TYPE = setuptools\nPYTHON_CAN_LICENSE = LGPL-3.0\nPYTHON_CAN_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-canopen/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CANOPEN\n\tbool \"python-canopen\"\n\tselect BR2_PACKAGE_PYTHON_CAN # runtime\n\thelp\n\t  A Python implementation of the CANopen standard. The aim\n\t  of the project is to support the most common parts of the\n\t  CiA 301 standard in a Pythonic interface.\n\n\t  https://github.com/christiansandberg/canopen\n"
  },
  {
    "path": "package/python-canopen/python-canopen.hash",
    "content": "# sha256 from https://pypi.org/pypi/canopen/json\nsha256\t4394770d528e93a48936138c4a7b37b5dff26d54f82a435ad9790cd1e43f55b9  canopen-1.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t0740d30978affcd91c0fc817b7cf942a332381bf0380fe17e60c6a0b377c6e0d  LICENSE.txt\n"
  },
  {
    "path": "package/python-canopen/python-canopen.mk",
    "content": "################################################################################\n#\n# python-canopen\n#\n################################################################################\n\nPYTHON_CANOPEN_VERSION = 1.0.0\nPYTHON_CANOPEN_SOURCE = canopen-$(PYTHON_CANOPEN_VERSION).tar.gz\nPYTHON_CANOPEN_SITE = https://files.pythonhosted.org/packages/1f/2b/55b6d82b3dcba184a01c6fe027df239953940e36a463cd24b71e67bd1f37\nPYTHON_CANOPEN_SETUP_TYPE = setuptools\nPYTHON_CANOPEN_LICENSE = MIT\nPYTHON_CANOPEN_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-cbor/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CBOR\n\tbool \"python-cbor\"\n\thelp\n\t  RFC 7049 - Concise Binary Object Representation.\n\n\t  https://pypi.python.org/pypi/cbor\n"
  },
  {
    "path": "package/python-cbor/python-cbor.hash",
    "content": "# md5 from https://pypi.python.org/pypi/cbor/json, sha256 locally computed\nmd5\t22b03b59784fd78cb6c27aa498af0db6  cbor-1.0.0.tar.gz\nsha256\t13225a262ddf5615cbd9fd55a76a0d53069d18b07d2e9f19c39e6acb8609bbb6  cbor-1.0.0.tar.gz\n"
  },
  {
    "path": "package/python-cbor/python-cbor.mk",
    "content": "################################################################################\n#\n# python-cbor\n#\n################################################################################\n\nPYTHON_CBOR_VERSION = 1.0.0\nPYTHON_CBOR_SOURCE = cbor-$(PYTHON_CBOR_VERSION).tar.gz\nPYTHON_CBOR_SITE = https://pypi.python.org/packages/9b/99/01c6a987c920500189eb74a291bd3a388e6c7cf85736bb6b066d9833315e\nPYTHON_CBOR_LICENSE = Apache\nPYTHON_CBOR_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-cbor2/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CBOR2\n\tbool \"python-cbor2\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Pure Python CBOR (de)serializer with extensive tag support.\n\n\t  https://cbor2.readthedocs.io/\n"
  },
  {
    "path": "package/python-cbor2/python-cbor2.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/cbor2/json\nmd5  87b3ad8a9dd8875fa46c6ec06e3fb0ba  cbor2-5.4.1.tar.gz\nsha256  a8bf432f6cb595f50aeb8fed2a4aa3b3f7caa7f135fb57e4378eaa39242feac9  cbor2-5.4.1.tar.gz\n# Locally computed sha256 checksums\nsha256  a6afd126d8f545a15166a22f25fadff4b9fb4978bbdd17e97d97d950b66d2fef  LICENSE.txt\n"
  },
  {
    "path": "package/python-cbor2/python-cbor2.mk",
    "content": "################################################################################\n#\n# python-cbor2\n#\n################################################################################\n\nPYTHON_CBOR2_VERSION = 5.4.1\nPYTHON_CBOR2_SOURCE = cbor2-$(PYTHON_CBOR2_VERSION).tar.gz\nPYTHON_CBOR2_SITE = https://files.pythonhosted.org/packages/9e/25/9dd432c051010faea6a702cb85d0b53dc9d5414513866b6a73b3ac954092\nPYTHON_CBOR2_SETUP_TYPE = setuptools\nPYTHON_CBOR2_LICENSE = MIT\nPYTHON_CBOR2_LICENSE_FILES = LICENSE.txt\nPYTHON_CBOR2_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-cchardet/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CCHARDET\n\tbool \"python-cchardet\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  cChardet is high speed universal character encoding\n\t  detector.\n\n\t  https://github.com/PyYoshi/cChardet\n\ncomment \"python-cchardet needs a toolchain w/ C++\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/python-cchardet/python-cchardet.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/cchardet/json\nmd5  8a76472ad09c68c12069203ea9348ee3  cchardet-2.1.7.tar.gz\nsha256  c428b6336545053c2589f6caf24ea32276c6664cb86db817e03a94c60afa0eaf  cchardet-2.1.7.tar.gz\n# Locally computed sha256 checksums\nsha256  107a29ccdd2d778aa2df5462f85dddfa099059abd22e064e07ec2cc9bafc37cd  COPYING\n"
  },
  {
    "path": "package/python-cchardet/python-cchardet.mk",
    "content": "################################################################################\n#\n# python-cchardet\n#\n################################################################################\n\nPYTHON_CCHARDET_VERSION = 2.1.7\nPYTHON_CCHARDET_SOURCE = cchardet-$(PYTHON_CCHARDET_VERSION).tar.gz\nPYTHON_CCHARDET_SITE = https://files.pythonhosted.org/packages/a8/5d/090c9f0312b7988a9433246c9cf0b566b1ae1374368cfb8ac897218a4f65\nPYTHON_CCHARDET_SETUP_TYPE = setuptools\nPYTHON_CCHARDET_LICENSE = MPL-1.1\nPYTHON_CCHARDET_LICENSE_FILES = COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-certifi/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CERTIFI\n\tbool \"python-certifi\"\n\thelp\n\t  Python package for providing Mozilla's CA Bundle.\n\n\t  https://certifi.io/\n"
  },
  {
    "path": "package/python-certifi/python-certifi.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/certifi/json\nmd5  4b38238b7305fcb3ffbc4368be4e8845  certifi-2021.5.30.tar.gz\nsha256  2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee  certifi-2021.5.30.tar.gz\n# Locally computed sha256 checksums\nsha256  be9d82f36112f87a7f1d74ecd4887e1467bbae8878a84004a00117b1e475a3e2  LICENSE\n"
  },
  {
    "path": "package/python-certifi/python-certifi.mk",
    "content": "################################################################################\n#\n# python-certifi\n#\n################################################################################\n\nPYTHON_CERTIFI_VERSION = 2021.5.30\nPYTHON_CERTIFI_SOURCE = certifi-$(PYTHON_CERTIFI_VERSION).tar.gz\nPYTHON_CERTIFI_SITE = https://files.pythonhosted.org/packages/6d/78/f8db8d57f520a54f0b8a438319c342c61c22759d8f9a1cd2e2180b5e5ea9\nPYTHON_CERTIFI_SETUP_TYPE = setuptools\nPYTHON_CERTIFI_LICENSE = ISC (Python code), MPL-2.0 (cacert.pem)\nPYTHON_CERTIFI_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-cffi/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CFFI\n\tbool \"python-cffi\"\n\tselect BR2_PACKAGE_LIBFFI\n\tselect BR2_PACKAGE_PYTHON_PYCPARSER # runtime\n\thelp\n\t  This is the Foreign Function Interface for Python calling C\n\t  code. The aim of this project is to provide a convenient\n\t  and reliable way of calling C code from Python.\n\n\t  https://pypi.python.org/pypi/cffi\n"
  },
  {
    "path": "package/python-cffi/python-cffi.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/cffi/json\nmd5  5c118a18ea897df164dbff67a32876fc  cffi-1.14.6.tar.gz\nsha256  c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd  cffi-1.14.6.tar.gz\n# Locally computed sha256 checksums\nsha256  04b80f5b077bbed68808cfebadeb5e3523f2a8c9a96495c587bd96df1eac2a33  LICENSE\n"
  },
  {
    "path": "package/python-cffi/python-cffi.mk",
    "content": "################################################################################\n#\n# python-cffi\n#\n################################################################################\n\n# Please keep in sync with package/python3-cffi/python3-cffi.mk\nPYTHON_CFFI_VERSION = 1.14.6\nPYTHON_CFFI_SOURCE = cffi-$(PYTHON_CFFI_VERSION).tar.gz\nPYTHON_CFFI_SITE = https://files.pythonhosted.org/packages/2e/92/87bb61538d7e60da8a7ec247dc048f7671afe17016cd0008b3b710012804\nPYTHON_CFFI_SETUP_TYPE = setuptools\nPYTHON_CFFI_DEPENDENCIES = host-pkgconf libffi\nPYTHON_CFFI_LICENSE = MIT\nPYTHON_CFFI_LICENSE_FILES = LICENSE\n\n# This host package uses pkg-config to find libffi, so we have to\n# provide the proper hints for pkg-config to behave properly for host\n# packages.\nHOST_PYTHON_CFFI_ENV = \\\n\tPKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \\\n\tPKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \\\n\tPKG_CONFIG=\"$(PKG_CONFIG_HOST_BINARY)\" \\\n\tPKG_CONFIG_SYSROOT_DIR=\"/\" \\\n\tPKG_CONFIG_LIBDIR=\"$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig\"\nHOST_PYTHON_CFFI_DEPENDENCIES = host-pkgconf host-python-pycparser host-libffi\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-channels/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CHANNELS\n\tbool \"python-channels\"\n\t# python-daphne -> python-autobahn -> python-cryptography\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_PYTHON3 # python-daphne\n\tselect BR2_PACKAGE_PYTHON_ASGIREF # runtime\n\tselect BR2_PACKAGE_PYTHON_DAPHNE # runtime\n\tselect BR2_PACKAGE_PYTHON_DJANGO # runtime\n\thelp\n\t  Channels augments Django to bring WebSocket, long-poll\n\t  HTTP, task offloading and other async support to your\n\t  code, using familiar Django design patterns and a\n\t  flexible underlying framework that lets you not only\n\t  customize behaviours but also write support for your\n\t  own protocols and needs.\n\n\t  http://github.com/django/channels\n"
  },
  {
    "path": "package/python-channels/python-channels.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/channels/json\nmd5\t6f3fb75828b681a69372934a09ac3f32  channels-2.3.1.tar.gz\nsha256\t6b8ebd93fe0041a23e31c9f4130d92fadb9c0040c0eb377a004540631325a31d  channels-2.3.1.tar.gz\n# Locally computed sha256 checksums\nsha256\tb846415d1b514e9c1dff14a22deb906d794bc546ca6129f950a18cd091e2a669  LICENSE\n"
  },
  {
    "path": "package/python-channels/python-channels.mk",
    "content": "################################################################################\n#\n# python-channels\n#\n################################################################################\n\nPYTHON_CHANNELS_VERSION = 2.3.1\nPYTHON_CHANNELS_SOURCE = channels-$(PYTHON_CHANNELS_VERSION).tar.gz\nPYTHON_CHANNELS_SITE = https://files.pythonhosted.org/packages/75/53/2db9662a52dcedb02a25f87d8efc5e630059967790e4c10887dbd2db2073\nPYTHON_CHANNELS_SETUP_TYPE = setuptools\nPYTHON_CHANNELS_LICENSE = BSD-3-Clause\nPYTHON_CHANNELS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-channels-redis/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CHANNELS_REDIS\n\tbool \"python-channels-redis\"\n\t# python-channels -> python-daphne -> python-autobahn -> python-cryptography\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_PYTHON3 # python-channels\n\tselect BR2_PACKAGE_PYTHON_AIOREDIS # runtime\n\tselect BR2_PACKAGE_PYTHON_ASGIREF # runtime\n\tselect BR2_PACKAGE_PYTHON_CHANNELS # runtime\n\tselect BR2_PACKAGE_PYTHON_MSGPACK # runtime\n\thelp\n\t  A Django Channels channel layer that uses Redis as its\n\t  backing store, and supports both a single-server and\n\t  sharded configurations, as well as group support.\n\n\t  http://github.com/django/channels_redis/\n"
  },
  {
    "path": "package/python-channels-redis/python-channels-redis.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/channels-redis/json\nmd5\t9ec9ffd467e181906f257d6c0dbabf45  channels_redis-2.4.1.tar.gz\nsha256\tddfa0c067085fdce24fb80d9c0b848638cbdbf0e1167f14eb2e99d635ad216e6  channels_redis-2.4.1.tar.gz\n# Locally computed sha256 checksums\nsha256\tb846415d1b514e9c1dff14a22deb906d794bc546ca6129f950a18cd091e2a669  LICENSE\n"
  },
  {
    "path": "package/python-channels-redis/python-channels-redis.mk",
    "content": "################################################################################\n#\n# python-channels-redis\n#\n################################################################################\n\nPYTHON_CHANNELS_REDIS_VERSION = 2.4.1\nPYTHON_CHANNELS_REDIS_SOURCE = channels_redis-$(PYTHON_CHANNELS_REDIS_VERSION).tar.gz\nPYTHON_CHANNELS_REDIS_SITE = https://files.pythonhosted.org/packages/87/a9/8d11c32ae6bf3a2cc893185f7d1e03b80bda680131a08473c07ed1fe591d\nPYTHON_CHANNELS_REDIS_SETUP_TYPE = setuptools\nPYTHON_CHANNELS_REDIS_LICENSE = BSD-3-Clause\nPYTHON_CHANNELS_REDIS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-characteristic/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CHARACTERISTIC\n\tbool \"python-characteristic\"\n\thelp\n\t  Python attributes without boilerplate.\n\n\t  https://pypi.python.org/pypi/characteristic\n"
  },
  {
    "path": "package/python-characteristic/python-characteristic.hash",
    "content": "# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=b249368dd021fde1c06b4802867c0913\nmd5\tb249368dd021fde1c06b4802867c0913  characteristic-14.3.0.tar.gz\n# Locally computed\nsha256\tded68d4e424115ed44e5c83c2a901a0b6157a959079d7591d92106ffd3ada380  characteristic-14.3.0.tar.gz\nsha256  0af91b662f8428b28f5e517b049a0bb9feeb59b1adaa5c9418c1579f9485107c  LICENSE\n"
  },
  {
    "path": "package/python-characteristic/python-characteristic.mk",
    "content": "################################################################################\n#\n# python-characteristic\n#\n################################################################################\n\nPYTHON_CHARACTERISTIC_VERSION = 14.3.0\nPYTHON_CHARACTERISTIC_SOURCE = characteristic-$(PYTHON_CHARACTERISTIC_VERSION).tar.gz\nPYTHON_CHARACTERISTIC_SITE = https://pypi.python.org/packages/source/c/characteristic\nPYTHON_CHARACTERISTIC_LICENSE = MIT\nPYTHON_CHARACTERISTIC_LICENSE_FILES = LICENSE\nPYTHON_CHARACTERISTIC_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-chardet/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CHARDET\n\tbool \"python-chardet\"\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\thelp\n\t  Universal encoding detector for Python 2 and 3.\n\n\t  https://github.com/chardet/chardet\n"
  },
  {
    "path": "package/python-chardet/python-chardet.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/chardet/json\nmd5  bc9a5603d8d0994b2d4cbf255f99e654  chardet-4.0.0.tar.gz\nsha256  0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa  chardet-4.0.0.tar.gz\n# Locally computed\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  LICENSE\n"
  },
  {
    "path": "package/python-chardet/python-chardet.mk",
    "content": "################################################################################\n#\n# python-chardet\n#\n################################################################################\n\nPYTHON_CHARDET_VERSION = 4.0.0\nPYTHON_CHARDET_SOURCE = chardet-$(PYTHON_CHARDET_VERSION).tar.gz\nPYTHON_CHARDET_SITE = https://files.pythonhosted.org/packages/ee/2d/9cdc2b527e127b4c9db64b86647d567985940ac3698eeabc7ffaccb4ea61\nPYTHON_CHARDET_SETUP_TYPE = setuptools\nPYTHON_CHARDET_LICENSE = LGPL-2.1+\nPYTHON_CHARDET_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-charset-normalizer/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CHARSET_NORMALIZER\n\tbool \"python-charset-normalizer\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  The Real First Universal Charset Detector. Open, modern and\n\t  actively maintained alternative to Chardet.\n\n\t  https://github.com/ousret/charset_normalizer\n"
  },
  {
    "path": "package/python-charset-normalizer/python-charset-normalizer.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/charset-normalizer/json\nmd5  b28e4463613ff3911d5a2dc62b96233f  charset-normalizer-2.0.7.tar.gz\nsha256  e019de665e2bcf9c2b64e2e5aa025fa991da8720daa3c1138cadd2fd1856aed0  charset-normalizer-2.0.7.tar.gz\n# Locally computed sha256 checksums\nsha256  eb31a0c5a4fb09b8a4e32055d25c1e5f9c358a2752fef3cd720213d1ccfee241  LICENSE\n"
  },
  {
    "path": "package/python-charset-normalizer/python-charset-normalizer.mk",
    "content": "################################################################################\n#\n# python-charset-normalizer\n#\n################################################################################\n\nPYTHON_CHARSET_NORMALIZER_VERSION = 2.0.7\nPYTHON_CHARSET_NORMALIZER_SOURCE = charset-normalizer-$(PYTHON_CHARSET_NORMALIZER_VERSION).tar.gz\nPYTHON_CHARSET_NORMALIZER_SITE = https://files.pythonhosted.org/packages/9f/c5/334c019f92c26e59637bb42bd14a190428874b2b2de75a355da394cf16c1\nPYTHON_CHARSET_NORMALIZER_SETUP_TYPE = setuptools\nPYTHON_CHARSET_NORMALIZER_LICENSE = MIT\nPYTHON_CHARSET_NORMALIZER_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-cheetah/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CHEETAH\n\tbool \"python-cheetah\"\n\thelp\n\t  Cheetah is an open source template engine and code\n\t  generation tool.\n\n\t  It can be used standalone or combined with other tools and\n\t  frameworks. Web development is its principle use, but\n\t  Cheetah is very flexible and is also being used to generate\n\t  C++ game code, Java, sql, form emails and even Python code.\n\n\t  https://pypi.org/project/Cheetah3/\n"
  },
  {
    "path": "package/python-cheetah/python-cheetah.hash",
    "content": "# From https://pypi.org/pypi/Cheetah3/json\nmd5  42bb9da785974c7e4089aa754ff99a73  Cheetah3-3.2.6.post2.tar.gz\nsha256\t63157d7a00a273b59676b5be5aa817c75c37efc88478231f1a160f4cfb7f7878  Cheetah3-3.2.6.post2.tar.gz\n# Locally computed sha256 checksums\nsha256  635349ae512fafc2e60eb74a50d0a5276fa06c00b5ecb20da53546449ddc45ea  LICENSE\n"
  },
  {
    "path": "package/python-cheetah/python-cheetah.mk",
    "content": "################################################################################\n#\n# python-cheetah\n#\n################################################################################\n\n# Please keep in sync with package/python3-cheetah/python3-cheetah.mk\nPYTHON_CHEETAH_VERSION = 3.2.6.post2\nPYTHON_CHEETAH_SOURCE = Cheetah3-$(PYTHON_CHEETAH_VERSION).tar.gz\nPYTHON_CHEETAH_SITE = https://files.pythonhosted.org/packages/c0/97/c3fa47e223207e6ca6b501a954c5c959ed3e99f2a1ceec9918238ce38418\nPYTHON_CHEETAH_LICENSE = MIT\nPYTHON_CHEETAH_LICENSE_FILES = LICENSE\nPYTHON_CHEETAH_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-cheroot/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CHEROOT\n\tbool \"python-cheroot\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-more-itertools, python-jaraco-functools\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_MORE_ITERTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_JARACO_FUNCTOOLS # runtime\n\thelp\n\t  Cheroot is the high-performance, pure-Python\n\t  HTTP server used by CherryPy.\n\n\t  https://github.com/cherrypy/cheroot\n"
  },
  {
    "path": "package/python-cheroot/python-cheroot.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/cheroot/json\nmd5\t7ace4b584a8092deb9f6b0142a627086  cheroot-8.2.1.tar.gz\nsha256\t5b525b3e4a755adf78070ab54c1821fb860d4255a9317dba2b88eb2df2441cff  cheroot-8.2.1.tar.gz\n# Locally computed sha256 checksums\nsha256  da6dc218683f6dab91c6367f00bf33095d980fb1f04d430c81c5e6994b8605e0  LICENSE.md\n"
  },
  {
    "path": "package/python-cheroot/python-cheroot.mk",
    "content": "################################################################################\n#\n# python-cheroot\n#\n################################################################################\n\nPYTHON_CHEROOT_VERSION = 8.2.1\nPYTHON_CHEROOT_SOURCE = cheroot-$(PYTHON_CHEROOT_VERSION).tar.gz\nPYTHON_CHEROOT_SITE = https://files.pythonhosted.org/packages/9b/4d/2e51e7ce60f54a5279e91648b9b9b497d4d22bc624ecae6af1b6866144a7\nPYTHON_CHEROOT_LICENSE = BSD-3-Clause\nPYTHON_CHEROOT_LICENSE_FILES = LICENSE.md\nPYTHON_CHEROOT_SETUP_TYPE = setuptools\nPYTHON_CHEROOT_DEPENDENCIES = host-python-setuptools-scm host-python-setuptools-scm-git-archive\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-cherrypy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CHERRYPY\n\tbool \"python-cherrypy\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-cheroot, python-portend\n\tselect BR2_PACKAGE_PYTHON_CHEROOT # runtime\n\tselect BR2_PACKAGE_PYTHON_JARACO_CLASSES # runtime\n\tselect BR2_PACKAGE_PYTHON_PORTEND # runtime\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB # runtime\n\thelp\n\t  A minimalist web framework\n\n\t  http://www.cherrypy.org\n"
  },
  {
    "path": "package/python-cherrypy/python-cherrypy.hash",
    "content": "# md5 from https://pypi.python.org/pypi/CherryPy/json, sha256 locally computed\nmd5\te21fd0c5706504a8f26c46d808a14255  CherryPy-12.0.1.tar.gz\nsha256\t6a3a90a43b1e05bd4634c60acfdcf34efe74f9f8746aca14dbe95a9b69db30ea  CherryPy-12.0.1.tar.gz\nsha256  02f4efe6e7dcd218c33cfa065c0552de983b5ad563b053e97697c5abd2ef14f9  LICENSE.md\n"
  },
  {
    "path": "package/python-cherrypy/python-cherrypy.mk",
    "content": "################################################################################\n#\n# python-cherrypy\n#\n################################################################################\n\nPYTHON_CHERRYPY_VERSION = 12.0.1\nPYTHON_CHERRYPY_SOURCE = CherryPy-$(PYTHON_CHERRYPY_VERSION).tar.gz\nPYTHON_CHERRYPY_SITE = https://pypi.python.org/packages/be/d8/a8ef56bfe1c39d466b8d55b496b64459cc43dec71361d88edf904901637f\nPYTHON_CHERRYPY_LICENSE = BSD-3-Clause\nPYTHON_CHERRYPY_LICENSE_FILES = LICENSE.md\nPYTHON_CHERRYPY_SETUP_TYPE = setuptools\nPYTHON_CHERRYPY_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-click/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CLICK\n\tbool \"python-click\"\n\thelp\n\t  A simple wrapper around optparse for powerful command line\n\t  utilities.\n\n\t  https://pypi.python.org/pypi/click\n"
  },
  {
    "path": "package/python-click/python-click.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/click/json\nmd5  53692f62cb99a1a10c59248f1776d9c0  click-7.1.2.tar.gz\nsha256  d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a  click-7.1.2.tar.gz\n# Locally computed sha256\nsha256  9a8ad106a394e853bfe21f42f4e72d592819a22805d991b5f3275029292b658d  LICENSE.rst\n"
  },
  {
    "path": "package/python-click/python-click.mk",
    "content": "################################################################################\n#\n# python-click\n#\n################################################################################\n\nPYTHON_CLICK_VERSION = 7.1.2\nPYTHON_CLICK_SOURCE = click-$(PYTHON_CLICK_VERSION).tar.gz\nPYTHON_CLICK_SITE = https://files.pythonhosted.org/packages/27/6f/be940c8b1f1d69daceeb0032fee6c34d7bd70e3e649ccac0951500b4720e\nPYTHON_CLICK_LICENSE = BSD-3-Clause\nPYTHON_CLICK_LICENSE_FILES = LICENSE.rst\nPYTHON_CLICK_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-colibris/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_COLIBRIS\n\tbool \"python-colibris\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A collection of libraries glued together to make writing RESTful microservices easier.\n\n\t  https://gitlab.com/safefleet/colibris\n"
  },
  {
    "path": "package/python-colibris/python-colibris.hash",
    "content": "sha256\t8cf4d3f4c5d6e8382ed23495d501ef8df25d59490c4faf86a995c3012d331b32  colibris-0.6.2.tar.gz\n\n"
  },
  {
    "path": "package/python-colibris/python-colibris.mk",
    "content": "################################################################################\n#\n# python-colibris\n#\n################################################################################\n\nPYTHON_COLIBRIS_VERSION = 0.6.2\nPYTHON_COLIBRIS_SOURCE = colibris-$(PYTHON_COLIBRIS_VERSION).tar.gz\nPYTHON_COLIBRIS_SITE = https://files.pythonhosted.org/packages/f6/39/9257111da84ba61f451addc84a03b07b967c398c5eef85b739849ebaccb0\nPYTHON_COLIBRIS_SETUP_TYPE = setuptools\nPYTHON_COLIBRIS_LICENSE = Apache-2.0\nPYTHON_COLIBRIS_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-colorama/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_COLORAMA\n\tbool \"python-colorama\"\n\thelp\n\t  Cross-platform colored terminal text.\n\n\t  https://github.com/tartley/colorama\n"
  },
  {
    "path": "package/python-colorama/python-colorama.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/colorama/json\nmd5  57b22f2597f63df051b69906fbf310cc  colorama-0.4.4.tar.gz\nsha256  5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b  colorama-0.4.4.tar.gz\n# Locally computed sha256 checksums\nsha256  cac35c02686e5d04a5a7140bfb3b36e73aed496656e891102e428886d7930318  LICENSE.txt\n"
  },
  {
    "path": "package/python-colorama/python-colorama.mk",
    "content": "################################################################################\n#\n# python-colorama\n#\n################################################################################\n\nPYTHON_COLORAMA_VERSION = 0.4.4\nPYTHON_COLORAMA_SOURCE = colorama-$(PYTHON_COLORAMA_VERSION).tar.gz\nPYTHON_COLORAMA_SITE = https://files.pythonhosted.org/packages/1f/bb/5d3246097ab77fa083a61bd8d3d527b7ae063c7d8e8671b1cf8c4ec10cbe\nPYTHON_COLORAMA_SETUP_TYPE = setuptools\nPYTHON_COLORAMA_LICENSE = BSD-3-Clause\nPYTHON_COLORAMA_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-colorlog/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_COLORLOG\n\tbool \"python-colorlog\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Log formatting with colors.\n\n\t  https://github.com/borntyping/python-colorlog\n"
  },
  {
    "path": "package/python-colorlog/python-colorlog.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/colorlog/json\nmd5  f1b92c1cac428b2e3c9ac7edf2988440  colorlog-6.4.1.tar.gz\nsha256  af99440154a01f27c09256760ea3477982bf782721feaa345904e806879df4d8  colorlog-6.4.1.tar.gz\n# Locally computed sha256 checksums\nsha256  b1d9082bc483623fd59fc7279b457f0e40d942a76426cde257239e04dfe4125a  LICENSE\n"
  },
  {
    "path": "package/python-colorlog/python-colorlog.mk",
    "content": "################################################################################\n#\n# python-colorlog\n#\n################################################################################\n\nPYTHON_COLORLOG_VERSION = 6.4.1\nPYTHON_COLORLOG_SOURCE = colorlog-$(PYTHON_COLORLOG_VERSION).tar.gz\nPYTHON_COLORLOG_SITE = https://files.pythonhosted.org/packages/d6/4a/840f6cb7e922a717c765a3cdc6988aff22a6ef211d88c8d16701dfbd664f\nPYTHON_COLORLOG_SETUP_TYPE = setuptools\nPYTHON_COLORLOG_LICENSE = MIT\nPYTHON_COLORLOG_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-colorzero/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_COLORZERO\n\tbool \"python-colorzero\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A color manipulation library for Python.\n\n\t  https://github.com/waveform80/colorzero\n"
  },
  {
    "path": "package/python-colorzero/python-colorzero.hash",
    "content": "# Locally computed\nsha256  86c9933b004aec8ce1c476d1d1129e00325c7724df3c09aa353d5f8e883ed08d  python-colorzero-2.0.tar.gz\n# Locally computed\nsha256  ee1c76f465410c34802ddf81d70e1ea7a4542cf58459425038498d8f4e36bb45  LICENSE.txt\n"
  },
  {
    "path": "package/python-colorzero/python-colorzero.mk",
    "content": "################################################################################\n#\n# python-colorzero\n#\n################################################################################\n\nPYTHON_COLORZERO_VERSION = 2.0\nPYTHON_COLORZERO_SITE = $(call github,waveform80,colorzero,release-$(PYTHON_COLORZERO_VERSION))\nPYTHON_COLORZERO_LICENSE = BSD-3-Clause\nPYTHON_COLORZERO_LICENSE_FILES = LICENSE.txt\nPYTHON_COLORZERO_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-configobj/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CONFIGOBJ\n\tbool \"python-configobj\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  ConfigObj is a simple but powerful config file reader and\n\t  writer: an ini file round tripper. Its main feature is that\n\t  it is very easy to use, with a straightforward programmer's\n\t  interface and a simple syntax for config files.\n\n\t  http://www.voidspace.org.uk/python/configobj.html\n"
  },
  {
    "path": "package/python-configobj/python-configobj.hash",
    "content": "# md5 from https://pypi.python.org/pypi/configobj/json, sha256 locally computed\nmd5\te472a3a1c2a67bb0ec9b5d54c13a47d6  configobj-5.0.6.tar.gz\nsha256\ta2f5650770e1c87fb335af19a9b7eb73fc05ccf22144eb68db7d00cd2bcb0902  configobj-5.0.6.tar.gz\n"
  },
  {
    "path": "package/python-configobj/python-configobj.mk",
    "content": "################################################################################\n#\n# python-configobj\n#\n################################################################################\n\nPYTHON_CONFIGOBJ_VERSION = 5.0.6\nPYTHON_CONFIGOBJ_SOURCE = configobj-$(PYTHON_CONFIGOBJ_VERSION).tar.gz\nPYTHON_CONFIGOBJ_SITE = https://pypi.python.org/packages/64/61/079eb60459c44929e684fa7d9e2fdca403f67d64dd9dbac27296be2e0fab\nPYTHON_CONFIGOBJ_LICENSE = BSD-3-Clause\n# License only mentioned in the source\nPYTHON_CONFIGOBJ_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-configshell-fb/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CONFIGSHELL_FB\n\tbool \"python-configshell-fb\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-urwid\n\tselect BR2_PACKAGE_PYTHON_PYPARSING\n\tselect BR2_PACKAGE_PYTHON3_READLINE\n\tselect BR2_PACKAGE_PYTHON_SIX\n\tselect BR2_PACKAGE_PYTHON_URWID\n\thelp\n\t  configshell-fb is a Python library that provides a framework\n\t  for building simple but nice CLI-based applications.\n\n\t  https://github.com/open-iscsi/configshell-fb\n"
  },
  {
    "path": "package/python-configshell-fb/python-configshell-fb.hash",
    "content": "# locally computed\nsha256  3685446d6ee02881930bb2fdc5fdd254938da66ce9843a5b3676c4246b058e4b  python-configshell-fb-1.1.fb18.tar.gz\nsha256  5df2a0d87d6c562f0ea11c688ac52532aa28d744cabc7994ff0537f64b3b3320  COPYING\n"
  },
  {
    "path": "package/python-configshell-fb/python-configshell-fb.mk",
    "content": "################################################################################\n#\n# python-configshell-fb\n#\n################################################################################\n\n# When upgrading the version, be sure to also upgrade python-rtslib-fb\n# and targetcli-fb at the same time.\nPYTHON_CONFIGSHELL_FB_VERSION = 1.1.fb18\nPYTHON_CONFIGSHELL_FB_SITE = $(call github,open-iscsi,configshell-fb,v$(PYTHON_CONFIGSHELL_FB_VERSION))\nPYTHON_CONFIGSHELL_FB_LICENSE = Apache-2.0\nPYTHON_CONFIGSHELL_FB_LICENSE_FILES = COPYING\nPYTHON_CONFIGSHELL_FB_SETUP_TYPE = setuptools\nPYTHON_CONFIGSHELL_FB_DEPENDENCIES = python-pyparsing python-six python-urwid\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-constantly/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CONSTANTLY\n\tbool \"python-constantly\"\n\thelp\n\t  A library that provides symbolic constant support. It\n\t  includes collections and constants with text, numeric,\n\t  and bit flag values.\n\n\t  https://github.com/twisted/constantly\n"
  },
  {
    "path": "package/python-constantly/python-constantly.hash",
    "content": "# md5 from https://pypi.python.org/pypi/constantly/json\nmd5\tf0762f083d83039758e53f8cf0086eef  constantly-15.1.0.tar.gz\n# Locally computed\nsha256\t586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35  constantly-15.1.0.tar.gz\nsha256  020870fcaf4bf9c50b233e331817094fe109b91c0880570fd476f527cfbfc085  LICENSE\n"
  },
  {
    "path": "package/python-constantly/python-constantly.mk",
    "content": "################################################################################\n#\n# python-constantly\n#\n################################################################################\n\nPYTHON_CONSTANTLY_VERSION = 15.1.0\nPYTHON_CONSTANTLY_SOURCE = constantly-$(PYTHON_CONSTANTLY_VERSION).tar.gz\nPYTHON_CONSTANTLY_SITE = https://pypi.python.org/packages/95/f1/207a0a478c4bb34b1b49d5915e2db574cadc415c9ac3a7ef17e29b2e8951\nPYTHON_CONSTANTLY_SETUP_TYPE = setuptools\nPYTHON_CONSTANTLY_LICENSE = MIT\nPYTHON_CONSTANTLY_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-couchdb/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_COUCHDB\n\tbool \"python-couchdb\"\n\tselect BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  Python client library for working with CouchDB.\n\n\t  https://github.com/djc/couchdb-python/\n"
  },
  {
    "path": "package/python-couchdb/python-couchdb.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/couchdb/json\nmd5\tde40696472202d728cfca4279629e4ff  CouchDB-1.2.tar.gz\nsha256\t1386a1a43f25bed3667e3b805222054940d674fa1967fa48e9d2012a18630ab7  CouchDB-1.2.tar.gz\n# Locally computed sha256 checksums\nsha256\tc538da1ae16b6d75f6fa65852bb158dbf9e556b01681be5b692692906d244241  COPYING\n"
  },
  {
    "path": "package/python-couchdb/python-couchdb.mk",
    "content": "################################################################################\n#\n# python-couchdb\n#\n################################################################################\n\nPYTHON_COUCHDB_VERSION = 1.2\nPYTHON_COUCHDB_SOURCE = CouchDB-$(PYTHON_COUCHDB_VERSION).tar.gz\nPYTHON_COUCHDB_SITE = https://files.pythonhosted.org/packages/7c/c8/f94a107eca0c178e5d74c705dad1a5205c0f580840bd1b155cd8a258cb7c\nPYTHON_COUCHDB_SETUP_TYPE = setuptools\nPYTHON_COUCHDB_LICENSE = BSD-3-Clause\nPYTHON_COUCHDB_LICENSE_FILES = COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-crayons/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CRAYONS\n\tbool \"python-crayons\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  This module is really simple, it gives you\n\t  colored strings for terminal usage.\n\n\t  https://pypi.org/project/crayons\n"
  },
  {
    "path": "package/python-crayons/python-crayons.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/crayons/json\nmd5  88a79c854ce54bcbb8376d18a448d627  crayons-0.4.0.tar.gz\nsha256  bd33b7547800f2cfbd26b38431f9e64b487a7de74a947b0fafc89b45a601813f  crayons-0.4.0.tar.gz\n# Locally computed sha256 checksums\nsha256  7deeb137f78337fd1e2e3966a7896821c6ebff244200d009d3f4157246b5a457  LICENSE\n"
  },
  {
    "path": "package/python-crayons/python-crayons.mk",
    "content": "################################################################################\n#\n# python-crayons\n#\n################################################################################\n\nPYTHON_CRAYONS_VERSION = 0.4.0\nPYTHON_CRAYONS_SOURCE = crayons-$(PYTHON_CRAYONS_VERSION).tar.gz\nPYTHON_CRAYONS_SITE = https://files.pythonhosted.org/packages/b8/6b/12a1dea724c82f1c19f410365d3e25356625b48e8009a7c3c9ec4c42488d\nPYTHON_CRAYONS_LICENSE = MIT\nPYTHON_CRAYONS_LICENSE_FILES = LICENSE\nPYTHON_CRAYONS_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-crc16/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CRC16\n\tbool \"python-crc16\"\n\thelp\n\t  This library calculates only CRC16 (16-bit codes) and the\n\t  only supported variant at the moment is CRC-CCITT (XModem).\n\t  CRC is a way of detecting accidental changes in data storage\n\t  or transmission. There are many variants of CRC and CRC16,\n\t  in particular.\n\n\t  https://code.google.com/archive/p/pycrc16/\n"
  },
  {
    "path": "package/python-crc16/python-crc16.hash",
    "content": "# locally computed\nsha256  10aeda70fbe8b284874b3b1b8f74b9c1f6d5e8dee20ac8f9d5bc49f45f12a42a  python-crc16-0.1.1.tar.gz\nsha256  ea7d049c7705dc13afc202dd18e1827f3484f8212fd3fa7b82fc4a0c363432c9  COPYING.txt\n"
  },
  {
    "path": "package/python-crc16/python-crc16.mk",
    "content": "################################################################################\n#\n# python-crc16\n#\n################################################################################\n\nPYTHON_CRC16_VERSION = 0.1.1\nPYTHON_CRC16_SITE = $(call github,gennady,pycrc16,v$(PYTHON_CRC16_VERSION))\nPYTHON_CRC16_LICENSE = LGPL-3.0+\nPYTHON_CRC16_LICENSE_FILES = COPYING.txt\nPYTHON_CRC16_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-crcmod/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CRCMOD\n\tbool \"python-crcmod\"\n\thelp\n\t  The software in this package is a Python module for\n\t  generating objects that compute the Cyclic Redundancy\n\t  Check (CRC).\n\n\t  http://crcmod.sourceforge.net/\n"
  },
  {
    "path": "package/python-crcmod/python-crcmod.hash",
    "content": "# md5 from https://pypi.python.org/pypi/crcmod/json\nmd5\t2d5b92117d958dcead94f9e17f54cd32  crcmod-1.7.tar.gz\n# Locally computed\nsha256\tdc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e  crcmod-1.7.tar.gz\nsha256  89480768826f408daea1f3caff0509c2cc9606e10f6bb0ccfd12a3d604842c35  LICENSE\n"
  },
  {
    "path": "package/python-crcmod/python-crcmod.mk",
    "content": "################################################################################\n#\n# python-crcmod\n#\n################################################################################\n\nPYTHON_CRCMOD_VERSION = 1.7\nPYTHON_CRCMOD_SOURCE = crcmod-$(PYTHON_CRCMOD_VERSION).tar.gz\nPYTHON_CRCMOD_SITE = https://pypi.python.org/packages/6b/b0/e595ce2a2527e169c3bcd6c33d2473c1918e0b7f6826a043ca1245dd4e5b\nPYTHON_CRCMOD_SETUP_TYPE = distutils\nPYTHON_CRCMOD_LICENSE = MIT\nPYTHON_CRCMOD_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-crontab/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CRONTAB\n\tbool \"python-crontab\"\n\tselect BR2_PACKAGE_PYTHON_DATEUTIL # runtime\n\thelp\n\t  Crontab module for reading and writing crontab files and\n\t  accessing the system cron automatically and simply using\n\t  a direct API.\n\n\t  https://gitlab.com/doctormo/python-crontab/\n"
  },
  {
    "path": "package/python-crontab/python-crontab.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/python-crontab/json\nmd5  2982bdce2d9b7789f32da649a9507c4b  python-crontab-2.6.0.tar.gz\nsha256  1e35ed7a3cdc3100545b43e196d34754e6551e7f95e4caebbe0e1c0ca41c2f1b  python-crontab-2.6.0.tar.gz\n# Locally computed sha256 checksums\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING\n"
  },
  {
    "path": "package/python-crontab/python-crontab.mk",
    "content": "################################################################################\n#\n# python-crontab\n#\n################################################################################\n\nPYTHON_CRONTAB_VERSION = 2.6.0\nPYTHON_CRONTAB_SITE = https://files.pythonhosted.org/packages/06/b0/c270a1b5c83d9e0f83ab654d3153c39d80f61ba49fefde50fd23ab351381\nPYTHON_CRONTAB_SETUP_TYPE = setuptools\nPYTHON_CRONTAB_LICENSE = LGPL-3.0+\nPYTHON_CRONTAB_LICENSE_FILES = COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-crossbar/0001-Avoid-intentional-syntax-error.patch",
    "content": "From 423a1b081f6b7198f6a921ca83043270ebbace1a Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sun, 1 May 2016 15:35:32 +0200\nSubject: [PATCH] Avoid intentional syntax error\n\nThis file has an intentional syntax error, meant to validate QA, but\nit breaks byte compilation of this package.\n\nIssue reported upstream:\nhttps://github.com/crossbario/crossbar/issues/750.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n crossbar/worker/test/examples/syntaxerror.py | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/crossbar/worker/test/examples/syntaxerror.py b/crossbar/worker/test/examples/syntaxerror.py\nindex 7b88e088..cd7de901 100644\n--- a/crossbar/worker/test/examples/syntaxerror.py\n+++ b/crossbar/worker/test/examples/syntaxerror.py\n@@ -27,5 +27,3 @@\n #  with this program. If not, see <http://www.gnu.org/licenses/agpl-3.0.en.html>.\n #\n #####################################################################################\n-\n-class # noqa\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/python-crossbar/0002-Remove-idna-requirement.patch",
    "content": "From 9164d21cc66c1f78de37c9383528c5d528cbdbeb Mon Sep 17 00:00:00 2001\nFrom: Asaf Kahlon <asafka7@gmail.com>\nDate: Wed, 26 Sep 2018 15:33:43 +0300\nSubject: [PATCH] Remove idna requirement.\n\nThe latest version of idna is 2.7, but it seems like idna is not a direct\ndependency anymore (a short \"git grep\" shows it's only written in requirement\nand readme files).\n\nSigned-off-by: Asaf Kahlon <asafka7@gmail.com>\n---\n requirements-min.txt | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/requirements-min.txt b/requirements-min.txt\nindex 92fb0f8f..13cdac87 100644\n--- a/requirements-min.txt\n+++ b/requirements-min.txt\n@@ -8,7 +8,6 @@ click>=6.7\n constantly>=15.1.0\n cryptography>=2.6.1\n h2>=3.2.0\n-idna<2.6,>=2.5\n importlib-resources>=4.1.1\n incremental>=17.5.0\n jinja2>=2.10.1\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/python-crossbar/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CROSSBAR\n\tbool \"python-crossbar\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography\n\tdepends on BR2_PACKAGE_PYTHON3\n\t# All the following dependencies are runtime dependencies\n\tselect BR2_PACKAGE_PYTHON_ATTRS\n\tselect BR2_PACKAGE_PYTHON_AUTOBAHN\n\tselect BR2_PACKAGE_PYTHON_BITSTRING\n\tselect BR2_PACKAGE_PYTHON_CBOR\n\tselect BR2_PACKAGE_PYTHON_CBOR2\n\tselect BR2_PACKAGE_PYTHON_CLICK\n\tselect BR2_PACKAGE_PYTHON_CONSTANTLY\n\tselect BR2_PACKAGE_PYTHON_CRYPTOGRAPHY\n\tselect BR2_PACKAGE_PYTHON_H2\n\tselect BR2_PACKAGE_PYTHON_IDNA\n\tselect BR2_PACKAGE_PYTHON_INCREMENTAL\n\tselect BR2_PACKAGE_PYTHON_JINJA2\n\tselect BR2_PACKAGE_PYTHON_LMDB\n\tselect BR2_PACKAGE_PYTHON_MISTUNE\n\tselect BR2_PACKAGE_PYTHON_NETADDR\n\tselect BR2_PACKAGE_PYTHON_PASSLIB\n\tselect BR2_PACKAGE_PYTHON_PRIORITY\n\tselect BR2_PACKAGE_PYTHON_PSUTIL\n\tselect BR2_PACKAGE_PYTHON_PYASN1\n\tselect BR2_PACKAGE_PYTHON_PYASN1_MODULES\n\tselect BR2_PACKAGE_PYTHON_PYGMENTS\n\tselect BR2_PACKAGE_PYTHON_PYNACL\n\tselect BR2_PACKAGE_PYTHON_PYOPENSSL\n\tselect BR2_PACKAGE_PYTHON_PYQRCODE\n\tselect BR2_PACKAGE_PYTHON_PYTRIE\n\tselect BR2_PACKAGE_PYTHON_PYYAML\n\tselect BR2_PACKAGE_PYTHON_SDNOTIFY\n\tselect BR2_PACKAGE_PYTHON_SERVICE_IDENTITY\n\tselect BR2_PACKAGE_PYTHON_SETPROCTITLE\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS\n\tselect BR2_PACKAGE_PYTHON_TREQ\n\tselect BR2_PACKAGE_PYTHON_TWISTED\n\tselect BR2_PACKAGE_PYTHON_TXAIO\n\tselect BR2_PACKAGE_PYTHON_TXTORCON\n\tselect BR2_PACKAGE_PYTHON_U_MSGPACK\n\tselect BR2_PACKAGE_PYTHON_UBJSON\n\tselect BR2_PACKAGE_PYTHON_WATCHDOG\n\tselect BR2_PACKAGE_PYTHON_WERKZEUG\n\tselect BR2_PACKAGE_PYTHON_ZOPE_INTERFACE\n\thelp\n\t  Crossbar.io is an open-source WAMP application router that\n\t  allows to build advanced applications from loosely-coupled\n\t  components that can talk in real-time with each other.\n\n\t  https://pypi.python.org/pypi/crossbar\n"
  },
  {
    "path": "package/python-crossbar/python-crossbar.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/crossbar/json\nmd5  df576100bcf6e423cdc1e2e96b602140  crossbar-21.3.1.tar.gz\nsha256  ac71959f0c57ab08d43f7830b85c6312e000b25543a179cd751ac357944dd7ef  crossbar-21.3.1.tar.gz\n# Locally computed\nsha256  57c8ff33c9c0cfc3ef00e650a1cc910d7ee479a8bc509f6c9209a7c2a11399d6  crossbar/LICENSE\n"
  },
  {
    "path": "package/python-crossbar/python-crossbar.mk",
    "content": "################################################################################\n#\n# python-crossbar\n#\n################################################################################\n\nPYTHON_CROSSBAR_VERSION = 21.3.1\nPYTHON_CROSSBAR_SOURCE = crossbar-$(PYTHON_CROSSBAR_VERSION).tar.gz\nPYTHON_CROSSBAR_SITE = https://files.pythonhosted.org/packages/17/37/aafc4ec30068fd7ebb97f1a00d4ddf8de482dfa4c1d2a1fc6bb814d91400\nPYTHON_CROSSBAR_LICENSE = AGPL-3.0\nPYTHON_CROSSBAR_LICENSE_FILES = crossbar/LICENSE\nPYTHON_CROSSBAR_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-cryptography/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CRYPTOGRAPHY\n\tbool \"python-cryptography\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_PYTHON_CFFI # runtime\n\thelp\n\t  cryptography is a package designed to expose cryptographic\n\t  primitives and recipes to Python developers.\n\n\t  https://cryptography.io\n"
  },
  {
    "path": "package/python-cryptography/python-cryptography.hash",
    "content": "# Locally calculated after vendoring\nsha256  196bba703cebc052a19f5353614fcfa9d680471990c10305f110adcc05744eeb  cryptography-36.0.1.tar.gz\n# Locally computed sha256 checksums\nsha256  43dad2cc752ab721cd9a9f36ece70fb53ab7713551f2d3d8694d8e8c5a06d6e2  LICENSE\nsha256  aac73b3148f6d1d7111dbca32099f68d26c644c6813ae1e4f05f6579aa2663fe  LICENSE.APACHE\nsha256  602c4c7482de6479dd2e9793cda275e5e63d773dacd1eca689232ab7008fb4fb  LICENSE.BSD\n"
  },
  {
    "path": "package/python-cryptography/python-cryptography.mk",
    "content": "################################################################################\n#\n# python-cryptography\n#\n################################################################################\n\nPYTHON_CRYPTOGRAPHY_VERSION = 36.0.1\nPYTHON_CRYPTOGRAPHY_SOURCE = cryptography-$(PYTHON_CRYPTOGRAPHY_VERSION).tar.gz\nPYTHON_CRYPTOGRAPHY_SITE = https://files.pythonhosted.org/packages/f9/4b/1cf8e281f7ae4046a59e5e39dd7471d46db9f61bb564fddbff9084c4334f\nPYTHON_CRYPTOGRAPHY_SETUP_TYPE = setuptools\nPYTHON_CRYPTOGRAPHY_LICENSE = Apache-2.0 or BSD-3-Clause\nPYTHON_CRYPTOGRAPHY_LICENSE_FILES = LICENSE LICENSE.APACHE LICENSE.BSD\nPYTHON_CRYPTOGRAPHY_CPE_ID_VENDOR = cryptography_project\nPYTHON_CRYPTOGRAPHY_CPE_ID_PRODUCT = cryptography\nPYTHON_CRYPTOGRAPHY_DEPENDENCIES = host-python-setuptools-rust host-python-cffi host-rustc\nPYTHON_CRYPTOGRAPHY_ENV = \\\n\t$(PKG_CARGO_ENV) \\\n\tPYO3_CROSS_LIB_DIR=\"$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)\"\n# We need to vendor the Cargo crates at download time\nPYTHON_CRYPTOGRAPHY_DOWNLOAD_POST_PROCESS = cargo\nPYTHON_CRYPTOGRAPHY_DOWNLOAD_DEPENDENCIES = host-rustc\nPYTHON_CRYPTOGRAPHY_DL_ENV = \\\n\tBR_CARGO_MANIFEST_PATH=src/rust/Cargo.toml\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-cssselect/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CSSSELECT\n\tbool \"python-cssselect\"\n\thelp\n\t  cssselect parses CSS3 Selectors and translates them to XPath\n\t  1.0\n\n\t  http://packages.python.org/cssselect/\n"
  },
  {
    "path": "package/python-cssselect/python-cssselect.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/cssselect/json\nmd5\tfa57704c1cb66cc8e537b782bd6b227e  cssselect-1.1.0.tar.gz\nsha256\tf95f8dedd925fd8f54edb3d2dfb44c190d9d18512377d3c1e2388d16126879bc  cssselect-1.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t5c8da9f744e0afba81a48c9b5dbe73048f798b3287d6f1af8a05ee08ebb10892  LICENSE\n"
  },
  {
    "path": "package/python-cssselect/python-cssselect.mk",
    "content": "################################################################################\n#\n# python-cssselect\n#\n################################################################################\n\nPYTHON_CSSSELECT_VERSION = 1.1.0\nPYTHON_CSSSELECT_SOURCE = cssselect-$(PYTHON_CSSSELECT_VERSION).tar.gz\nPYTHON_CSSSELECT_SITE = https://files.pythonhosted.org/packages/70/54/37630f6eb2c214cdee2ae56b7287394c8aa2f3bafb8b4eb8c3791aae7a14\nPYTHON_CSSSELECT_SETUP_TYPE = setuptools\nPYTHON_CSSSELECT_LICENSE = BSD-3-Clause\nPYTHON_CSSSELECT_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-cssutils/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CSSUTILS\n\tbool \"python-cssutils\"\n\tselect BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  A CSS Cascading Style Sheets library for Python.\n\n\t  http://cthedot.de/cssutils/\n"
  },
  {
    "path": "package/python-cssutils/python-cssutils.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/cssutils/json\nmd5\tdc66d96c2d78f1687f59ac412fe9d318  cssutils-1.0.2.tar.gz\nsha256\ta2fcf06467553038e98fea9cfe36af2bf14063eb147a70958cfcaa8f5786acaf  cssutils-1.0.2.tar.gz\n# Locally computed sha256 checksums\nsha256\t03c570a068086ee577dcd795519ea93462b2ed2fcb6dcc4dfce56a71a2fd6e5a  COPYING.LESSER\n"
  },
  {
    "path": "package/python-cssutils/python-cssutils.mk",
    "content": "################################################################################\n#\n# python-cssutils\n#\n################################################################################\n\nPYTHON_CSSUTILS_VERSION = 1.0.2\nPYTHON_CSSUTILS_SOURCE = cssutils-$(PYTHON_CSSUTILS_VERSION).tar.gz\nPYTHON_CSSUTILS_SITE = https://files.pythonhosted.org/packages/5c/0b/c5f29d29c037e97043770b5e7c740b6252993e4b57f029b3cd03c78ddfec\nPYTHON_CSSUTILS_LICENSE = LGPL-3.0+\nPYTHON_CSSUTILS_LICENSE_FILES = COPYING.LESSER\nPYTHON_CSSUTILS_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-cycler/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_CYCLER\n\tbool \"python-cycler\"\n\thelp\n\t  Creates a Cycler objects much like cycler, but\n\t  includes input validation.\n\n\t  https://matplotlib.org/cycler/\n"
  },
  {
    "path": "package/python-cycler/python-cycler.hash",
    "content": "# sha256 from https://pypi.org/project/cyclic/#files\nsha256\tcd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8  cycler-0.10.0.tar.gz\n# Locally computed sha256 checksums\nsha256\tf1218143d766da3fea66f13396b7f15df46a83303f29bf96ba6e98eb4d42f408  LICENSE\n"
  },
  {
    "path": "package/python-cycler/python-cycler.mk",
    "content": "################################################################################\n#\n# python-cycler\n#\n################################################################################\n\nPYTHON_CYCLER_VERSION = 0.10.0\nPYTHON_CYCLER_SOURCE = cycler-$(PYTHON_CYCLER_VERSION).tar.gz\nPYTHON_CYCLER_SITE = https://files.pythonhosted.org/packages/c2/4b/137dea450d6e1e3d474e1d873cd1d4f7d3beed7e0dc973b06e8e10d32488\nPYTHON_CYCLER_LICENSE = BSD-3-Clause\nPYTHON_CYCLER_LICENSE_FILES = LICENSE\nPYTHON_CYCLER_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-cython/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PYTHON_CYTHON\n\tbool \"host python-cython\"\n\thelp\n\t  The Cython compiler for writing C extensions for the Python\n\t  language.\n\n\t  http://cython.org/\n"
  },
  {
    "path": "package/python-cython/python-cython.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/cython/json\nmd5  81aff945f5bfdfb86e7a5d24f5467668  Cython-0.29.24.tar.gz\nsha256  cdf04d07c3600860e8c2ebaad4e8f52ac3feb212453c1764a49ac08c827e8443  Cython-0.29.24.tar.gz\n# Locally computed sha256 checksums\nsha256  a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9  LICENSE.txt\nsha256  e1eb1c49a8508e8173dac30157e4a6439a44ad8846194746c424fbc3fc2b95d7  COPYING.txt\n"
  },
  {
    "path": "package/python-cython/python-cython.mk",
    "content": "################################################################################\n#\n# python-cython\n#\n################################################################################\n\n# Please keep in sync with package/python3-cython/python3-cython.mk\nPYTHON_CYTHON_VERSION = 0.29.24\nPYTHON_CYTHON_SOURCE = Cython-$(PYTHON_CYTHON_VERSION).tar.gz\nPYTHON_CYTHON_SITE = https://files.pythonhosted.org/packages/59/e3/78c921adf4423fff68da327cc91b73a16c63f29752efe7beb6b88b6dd79d\nPYTHON_CYTHON_SETUP_TYPE = setuptools\nPYTHON_CYTHON_LICENSE = Apache-2.0\nPYTHON_CYTHON_LICENSE_FILES = COPYING.txt LICENSE.txt\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-daemon/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DAEMON\n\tbool \"python-daemon\"\n\tselect BR2_PACKAGE_PYTHON_DOCUTILS # runtime\n\tselect BR2_PACKAGE_PYTHON_LOCKFILE # runtime\n\thelp\n\t  Library to implement a well-behaved Unix daemon process.\n\n\t  https://pypi.python.org/pypi/python-daemon/\n"
  },
  {
    "path": "package/python-daemon/python-daemon.hash",
    "content": "# md5, sha256 https://pypi.org/pypi/python-daemon/json\nmd5  3ab10a93472201214cd95c05f1923af6  python-daemon-2.2.3.tar.gz\nsha256  affeca9e5adfce2666a63890af9d6aff79f670f7511899edaddca7f96593cc25  python-daemon-2.2.3.tar.gz\n# Locally computed sha256\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.ASF-2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL-3\n"
  },
  {
    "path": "package/python-daemon/python-daemon.mk",
    "content": "################################################################################\n#\n# python-daemon\n#\n################################################################################\n\nPYTHON_DAEMON_VERSION = 2.2.3\nPYTHON_DAEMON_SITE = https://pypi.python.org/packages/source/p/python-daemon\nPYTHON_DAEMON_LICENSE = Apache-2.0 (library), GPL-3.0+ (test, build)\nPYTHON_DAEMON_LICENSE_FILES = LICENSE.ASF-2 LICENSE.GPL-3\nPYTHON_DAEMON_SETUP_TYPE = setuptools\nPYTHON_DAEMON_DEPENDENCIES = host-python-docutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-daemonize/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DAEMONIZE\n\tbool \"python-daemonize\"\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\thelp\n\t  Library to enable your code run as a daemon process on\n\t  Unix-like systems.\n\n\t  https://pypi.python.org/pypi/daemonize\n"
  },
  {
    "path": "package/python-daemonize/python-daemonize.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/daemonize/json\nmd5\t3d64e7a0219ad22e3fca62460f893b6a  daemonize-2.5.0.tar.gz\nsha256\tdd026e4ff8d22cb016ed2130bc738b7d4b1da597ef93c074d2adb9e4dea08bc3  daemonize-2.5.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t248d0d3147d20a09bed8f03da8ed72f47009073606dcc1bab658f942d34b29f8  LICENSE\n"
  },
  {
    "path": "package/python-daemonize/python-daemonize.mk",
    "content": "################################################################################\n#\n# python-daemonize\n#\n################################################################################\n\nPYTHON_DAEMONIZE_VERSION = 2.5.0\nPYTHON_DAEMONIZE_SOURCE = daemonize-$(PYTHON_DAEMONIZE_VERSION).tar.gz\nPYTHON_DAEMONIZE_SITE = https://files.pythonhosted.org/packages/8c/20/96f7dbc23812cfe4cf479c87af3e4305d0d115fd1fffec32ddeee7b9c82b\nPYTHON_DAEMONIZE_SETUP_TYPE = setuptools\nPYTHON_DAEMONIZE_LICENSE = MIT\nPYTHON_DAEMONIZE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-daphne/0001-remove-pytest-runner-requirement.patch",
    "content": "From f9d881cc55c89f51240f93308713216cfec793eb Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <Aduskett@gmail.com>\nDate: Sat, 3 Aug 2019 14:23:19 -0400\nSubject: [PATCH] remove pytest-runner requirement\n\nSetup does not actually require pytest-runner. As such, remove it.\n\nSigned-off-by: Adam Duskett <Aduskett@gmail.com>\n---\n setup.py | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/setup.py b/setup.py\nindex 64e94f1..4e3abb0 100755\n--- a/setup.py\n+++ b/setup.py\n@@ -23,7 +23,6 @@ setup(\n     packages=find_packages() + [\"twisted.plugins\"],\n     include_package_data=True,\n     install_requires=[\"twisted[tls]>=18.7\", \"autobahn>=0.18\", \"asgiref~=3.2\"],\n-    setup_requires=[\"pytest-runner\"],\n     extras_require={\n         \"tests\": [\"hypothesis~=3.88\", \"pytest~=3.10\", \"pytest-asyncio~=0.8\"]\n     },\n-- \n2.21.0\n\n"
  },
  {
    "path": "package/python-daphne/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DAPHNE\n\tbool \"python-daphne\"\n\t# python-autobahn -> python-cryptography\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_ASGIREF # runtime\n\tselect BR2_PACKAGE_PYTHON_AUTOBAHN # runtime\n\tselect BR2_PACKAGE_PYTHON_TWISTED # runtime\n\tselect BR2_PACKAGE_PYTHON_TWISTED_TLS # runtime\n\thelp\n\t  Daphne is a HTTP, HTTP2 and WebSocket protocol server for\n\t  ASGI and ASGI-HTTP, developed to power Django Channels.\n\t  It supports automatic negotiation of protocols; there's no\n\t  need for URL prefixing to determine WebSocket endpoints\n\t  versus HTTP endpoints.\n\n\t  https://github.com/django/daphne\n"
  },
  {
    "path": "package/python-daphne/python-daphne.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/daphne/json\nmd5\t564353eaed92659e3b113d966a0288f2  daphne-2.4.1.tar.gz0\nsha256  1e41d02d78da373c1f8504835cdca6d447b5d64c2941661d4bd968d412b6c383  daphne-2.4.1.tar.gz\n# Locally computed sha256\nsha256 b846415d1b514e9c1dff14a22deb906d794bc546ca6129f950a18cd091e2a669 LICENSE\n"
  },
  {
    "path": "package/python-daphne/python-daphne.mk",
    "content": "################################################################################\n#\n# python-daphne\n#\n################################################################################\n\nPYTHON_DAPHNE_VERSION = 2.4.1\nPYTHON_DAPHNE_SOURCE = daphne-$(PYTHON_DAPHNE_VERSION).tar.gz\nPYTHON_DAPHNE_SITE = https://files.pythonhosted.org/packages/03/6c/847d1c962f8c45aa2ab0791583c4a41669d158e28fd6369ce940b8ea8417\nPYTHON_DAPHNE_SETUP_TYPE = setuptools\n# https://github.com/django/daphne/blob/master/LICENSE\nPYTHON_DAPHNE_LICENSE = BSD-3-Clause\nPYTHON_DAPHNE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-dataproperty/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DATAPROPERTY\n\tbool \"python-dataproperty\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime\n\tselect BR2_PACKAGE_PYTHON_TYPEPY # runtime\n\thelp\n\t  Python library for extract property from data.\n\n\t  https://github.com/thombashi/DataProperty\n"
  },
  {
    "path": "package/python-dataproperty/python-dataproperty.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/DataProperty/json\nmd5  6a6930ae266399df58707a13a5f0cfa6  DataProperty-0.53.0.tar.gz\nsha256  9589b5c5b400a77e1aeb63d89d755043bbe00043219336963c93db5df49cbaf7  DataProperty-0.53.0.tar.gz\n# Locally computed sha256 checksums\nsha256  a93d75bcb0774e2990106380cadad6dcb2de193c55d435ffc56ba345a08b1dc2  LICENSE\n"
  },
  {
    "path": "package/python-dataproperty/python-dataproperty.mk",
    "content": "################################################################################\n#\n# python-dataproperty\n#\n################################################################################\n\nPYTHON_DATAPROPERTY_VERSION = 0.53.0\nPYTHON_DATAPROPERTY_SOURCE = DataProperty-$(PYTHON_DATAPROPERTY_VERSION).tar.gz\nPYTHON_DATAPROPERTY_SITE = https://files.pythonhosted.org/packages/df/d0/36deb707996c5ef48ab353804291f44f59bd9d46875c384d163ad106df1a\nPYTHON_DATAPROPERTY_SETUP_TYPE = setuptools\nPYTHON_DATAPROPERTY_LICENSE = MIT\nPYTHON_DATAPROPERTY_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-dateutil/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DATEUTIL\n\tbool \"python-dateutil\"\n\tselect BR2_PACKAGE_PYTHON_SIX\n\thelp\n\t  Extensions to the standard Python datetime module.\n\n\t  https://dateutil.readthedocs.io\n"
  },
  {
    "path": "package/python-dateutil/python-dateutil.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/python-dateutil/json\nmd5  5970010bb72452344df3d76a10281b65  python-dateutil-2.8.2.tar.gz\nsha256  0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86  python-dateutil-2.8.2.tar.gz\n# Locally computed sha256 checksums\nsha256  ba00f51a0d92823b5a1cde27d8b5b9d2321e67ed8da9bc163eff96d5e17e577e  LICENSE\n"
  },
  {
    "path": "package/python-dateutil/python-dateutil.mk",
    "content": "################################################################################\n#\n# python-dateutil\n#\n################################################################################\n\nPYTHON_DATEUTIL_VERSION = 2.8.2\nPYTHON_DATEUTIL_SITE = https://files.pythonhosted.org/packages/4c/c4/13b4776ea2d76c115c1d1b84579f3764ee6d57204f6be27119f13a61d0a9\nPYTHON_DATEUTIL_SETUP_TYPE = setuptools\nPYTHON_DATEUTIL_LICENSE = BSD-3-Clause\nPYTHON_DATEUTIL_LICENSE_FILES = LICENSE\nPYTHON_DATEUTIL_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-dbus-fast/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DBUS_FAST\n\tbool \"python-dbus-fast\"\n\tselect BR2_PACKAGE_HOST_PYTHON_CYTHON\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT # runtime\n\tselect BR2_PACKAGE_PYTHON_ASYNC_TIMEOUT # runtime\n\thelp\n\t  A faster version of dbus-next, a DBus library for Python with\n\t  asyncio support.\n\n\t  https://github.com/bluetooth-devices/dbus-fast\n"
  },
  {
    "path": "package/python-dbus-fast/python-dbus-fast.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/dbus-fast/json\nmd5  eebf2c558dd1af0f8f32b361e91f2fa3  dbus_fast-1.61.1.tar.gz\nsha256  bda4a7d559047b74f409eda278f68f610a418e86ad3efa0368fa2ed240daa6b6  dbus_fast-1.61.1.tar.gz\n# Locally computed sha256 checksums\nsha256  c37e9c75110e01d1f0c5360dc7d7776a30ac5f70d2440db214423e4b7a77a6af  LICENSE\n"
  },
  {
    "path": "package/python-dbus-fast/python-dbus-fast.mk",
    "content": "################################################################################\n#\n# python-dbus-fast\n#\n################################################################################\n\nPYTHON_DBUS_FAST_VERSION = 1.61.1\nPYTHON_DBUS_FAST_SOURCE = dbus_fast-$(PYTHON_DBUS_FAST_VERSION).tar.gz\nPYTHON_DBUS_FAST_SITE = https://files.pythonhosted.org/packages/dd/f4/a280d46b119d59f6a3d84abf474452ae76651558b0963ab8c48ae13b5a44\nPYTHON_DBUS_FAST_SETUP_TYPE = setuptools\nPYTHON_DBUS_FAST_LICENSE = MIT\nPYTHON_DBUS_FAST_LICENSE_FILES = LICENSE\nPYTHON_DBUS_FAST_ENV = REQUIRE_CYTHON=1\nPYTHON_DBUS_FAST_DEPENDENCIES = host-python-cython\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-dbus-next/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DBUS_NEXT\n\tbool \"python-dbus-next\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT # runtime\n\thelp\n\t  A zero-dependency DBus library for Python with asyncio\n\t  support.\n\n\t  https://github.com/altdesktop/python-dbus-next\n"
  },
  {
    "path": "package/python-dbus-next/python-dbus-next.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/dbus-next/json\nmd5  0e31605bd90f3460aebcd0bb7fe0dc20  dbus_next-0.2.3.tar.gz\nsha256  f4eae26909332ada528c0a3549dda8d4f088f9b365153952a408e28023a626a5  dbus_next-0.2.3.tar.gz\n# Locally computed sha256 checksums\nsha256  c454ab6b8e0653a8eab828a8cbaaa368a1bbfba982178bb18b6177e311eae4cc  LICENSE\n"
  },
  {
    "path": "package/python-dbus-next/python-dbus-next.mk",
    "content": "################################################################################\n#\n# python-dbus-next\n#\n################################################################################\n\nPYTHON_DBUS_NEXT_VERSION = 0.2.3\nPYTHON_DBUS_NEXT_SOURCE = dbus_next-$(PYTHON_DBUS_NEXT_VERSION).tar.gz\nPYTHON_DBUS_NEXT_SITE = https://files.pythonhosted.org/packages/ce/45/6a40fbe886d60a8c26f480e7d12535502b5ba123814b3b9a0b002ebca198\nPYTHON_DBUS_NEXT_SETUP_TYPE = setuptools\nPYTHON_DBUS_NEXT_LICENSE = MIT\nPYTHON_DBUS_NEXT_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-decorator/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DECORATOR\n\tbool \"python-decorator\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Better living through Python with decorators\n\n\t  https://github.com/micheles/decorator\n"
  },
  {
    "path": "package/python-decorator/python-decorator.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/decorator/json\nmd5  d01585c3ea5b36a209747fcc978a98c8  decorator-5.1.0.tar.gz\nsha256  e59913af105b9860aa2c8d3272d9de5a56a4e608db9a2f167a8480b323d529a7  decorator-5.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256  fd11660cabf0532082c45706862fafc294907ec7f8e217818240a4999806782e  LICENSE.txt\n"
  },
  {
    "path": "package/python-decorator/python-decorator.mk",
    "content": "################################################################################\n#\n# python-decorator\n#\n################################################################################\n\nPYTHON_DECORATOR_VERSION = 5.1.0\nPYTHON_DECORATOR_SOURCE = decorator-$(PYTHON_DECORATOR_VERSION).tar.gz\nPYTHON_DECORATOR_SITE = https://files.pythonhosted.org/packages/92/3c/34f8448b61809968052882b830f7d8d9a8e1c07048f70deb039ae599f73c\nPYTHON_DECORATOR_LICENSE = BSD-2-Clause\nPYTHON_DECORATOR_LICENSE_FILES = LICENSE.txt\nPYTHON_DECORATOR_CPE_ID_VENDOR = python\nPYTHON_DECORATOR_CPE_ID_PRODUCT = decorator\nPYTHON_DECORATOR_SETUP_TYPE = setuptools\nHOST_PYTHON_DECORATOR_NEEDS_HOST_PYTHON = python3\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-defusedxml/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DEFUSEDXML\n\tbool \"python-defusedxml\"\n\thelp\n\t  XML bomb protection for Python stdlib modules\n\n\t  https://pypi.org/project/defusedxml/\n"
  },
  {
    "path": "package/python-defusedxml/python-defusedxml.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/defusedxml/json\nmd5  a50e7f21aa60a741efe6b1b658dfb3f8  defusedxml-0.7.1.tar.gz\nsha256  1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69  defusedxml-0.7.1.tar.gz\n# Locally computed sha256 checksums\nsha256  b80ce9da8c42a1f91079627fbbe2bf27210ae108a0ffe5f077d5b08e076c24c8  LICENSE\n"
  },
  {
    "path": "package/python-defusedxml/python-defusedxml.mk",
    "content": "################################################################################\n#\n# python-defusedxml\n#\n################################################################################\n\nPYTHON_DEFUSEDXML_VERSION = 0.7.1\nPYTHON_DEFUSEDXML_SOURCE = defusedxml-$(PYTHON_DEFUSEDXML_VERSION).tar.gz\nPYTHON_DEFUSEDXML_SITE = https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72\nPYTHON_DEFUSEDXML_SETUP_TYPE = setuptools\nPYTHON_DEFUSEDXML_LICENSE = Python-2.0\nPYTHON_DEFUSEDXML_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-dialog/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DIALOG\n\tbool \"python-dialog\"\n\tdepends on BR2_PACKAGE_PYTHON\n\tdepends on BR2_USE_MMU # dialog\n\tselect BR2_PACKAGE_DIALOG\n\thelp\n\t  A Python interface to the UNIX dialog utility and\n\t  mostly-compatible programs.\n\n\t  http://pythondialog.sourceforge.net/\n"
  },
  {
    "path": "package/python-dialog/python-dialog.hash",
    "content": "# Locally computed after verifying\n# https://sourceforge.net/projects/pythondialog/files/pythondialog/3.4.0/python3-pythondialog-3.4.0.tar.bz2.asc\n# with key 9B6F19FB52965E6C21FE76142A205688F8489BDD\nsha256\t8978d355c8db6728eeb9e23b39449b14597f1c76cb06dc72462642ca7cde46a0  python2-pythondialog-3.4.0.tar.bz2\nsha256\ta9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING\n"
  },
  {
    "path": "package/python-dialog/python-dialog.mk",
    "content": "################################################################################\n#\n# python-dialog\n#\n################################################################################\n\nPYTHON_DIALOG_VERSION = 3.4.0\nPYTHON_DIALOG_SOURCE = python2-pythondialog-$(PYTHON_DIALOG_VERSION).tar.bz2\nPYTHON_DIALOG_SITE = http://downloads.sourceforge.net/project/pythondialog/pythondialog/$(PYTHON_DIALOG_VERSION)\nPYTHON_DIALOG_LICENSE = LGPL-2.1+\nPYTHON_DIALOG_LICENSE_FILES = COPYING\nPYTHON_DIALOG_SETUP_TYPE = distutils\nPYTHON_DIALOG_DEPENDENCIES = dialog\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-dialog3/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DIALOG3\n\tbool \"python-dialog3\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_USE_MMU # dialog\n\tselect BR2_PACKAGE_DIALOG\n\thelp\n\t  A Python 3 only interface to the UNIX dialog utility and\n\t  mostly-compatible programs.\n\n\t  http://pythondialog.sourceforge.net/\n"
  },
  {
    "path": "package/python-dialog3/python-dialog3.hash",
    "content": "# md5 from https://pypi.python.org/pypi/pythondialog/json\nmd5\t07e257d91099b804e040c6ea5ec56041  pythondialog-3.5.1.tar.gz\n# Locally computed\nsha256  34a0687290571f37d7d297514cc36bd4cd044a3a4355271549f91490d3e7ece8  pythondialog-3.5.1.tar.gz\nsha256  a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING\n"
  },
  {
    "path": "package/python-dialog3/python-dialog3.mk",
    "content": "################################################################################\n#\n# python-dialog3\n#\n################################################################################\n\nPYTHON_DIALOG3_VERSION = 3.5.1\nPYTHON_DIALOG3_SOURCE = pythondialog-$(PYTHON_DIALOG3_VERSION).tar.gz\nPYTHON_DIALOG3_SITE = https://files.pythonhosted.org/packages/72/3c/26ed0db035f97196704d0197d8b2254b8a6ca93a2d132430b0b0d597aa79\nPYTHON_DIALOG3_LICENSE = LGPL-2.1+\nPYTHON_DIALOG3_LICENSE_FILES = COPYING\nPYTHON_DIALOG3_SETUP_TYPE = setuptools\nPYTHON_DIALOG3_DEPENDENCIES = dialog\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-dicttoxml/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DICTTOXML\n\tbool \"python-dicttoxml\"\n\tselect BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3\n\thelp\n\t  Converts a Python dictionary or other native data type into\n\t  a valid XML string.\n\n\t  https://github.com/quandyfactory/dicttoxml\n"
  },
  {
    "path": "package/python-dicttoxml/python-dicttoxml.hash",
    "content": "# md5 from https://pypi.python.org/pypi/dicttoxml/json\nmd5\tec5643a048cf32dad3c28db236b923e4  dicttoxml-1.7.4.tar.gz\n# Locally computed\nsha256\tea44cc4ec6c0f85098c57a431a1ee891b3549347b07b7414c8a24611ecf37e45  dicttoxml-1.7.4.tar.gz\nsha256  4514114bd9da0b2fbf8c4fa264c0e6cc80fd41e6ac7f09d7a39a215662951c7c  LICENCE.txt\n"
  },
  {
    "path": "package/python-dicttoxml/python-dicttoxml.mk",
    "content": "################################################################################\n#\n# python-dicttoxml\n#\n################################################################################\n\nPYTHON_DICTTOXML_VERSION = 1.7.4\nPYTHON_DICTTOXML_SOURCE = dicttoxml-$(PYTHON_DICTTOXML_VERSION).tar.gz\nPYTHON_DICTTOXML_SITE = https://pypi.python.org/packages/74/36/534db111db9e7610a41641a1f6669a964aacaf51858f466de264cc8dcdd9\nPYTHON_DICTTOXML_SETUP_TYPE = distutils\nPYTHON_DICTTOXML_LICENSE = GPL-2.0\nPYTHON_DICTTOXML_LICENSE_FILES = LICENCE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-django/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DJANGO\n\tbool \"python-django\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON3_UNICODEDATA\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT\n\tselect BR2_PACKAGE_PYTHON_ASGIREF # runtime\n\tselect BR2_PACKAGE_PYTHON_PYTZ # runtime\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_SQLPARSE # runtime\n\n\thelp\n\t  Django is a high-level Python Web framework that encourages\n\t  rapid development and clean, pragmatic design. It takes your\n\t  Web applications from concept to launch in a matter of\n\t  hours.  Django takes care of user authentication, content\n\t  administration, site maps, RSS feeds, user comments and many\n\t  more tasks.  Django takes security seriously and helps\n\t  developers avoid many common security mistakes\n\n\t  https://www.djangoproject.com/\n"
  },
  {
    "path": "package/python-django/python-django.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/django/json\nmd5  2ade1eecca77640abbde6c4589da27dd  Django-3.2.7.tar.gz\nsha256  95b318319d6997bac3595517101ad9cc83fe5672ac498ba48d1a410f47afecd2  Django-3.2.7.tar.gz\n# Locally computed sha256 checksums\nsha256  b846415d1b514e9c1dff14a22deb906d794bc546ca6129f950a18cd091e2a669  LICENSE\n"
  },
  {
    "path": "package/python-django/python-django.mk",
    "content": "################################################################################\n#\n# python-django\n#\n################################################################################\n\nPYTHON_DJANGO_VERSION = 3.2.7\nPYTHON_DJANGO_SOURCE = Django-$(PYTHON_DJANGO_VERSION).tar.gz\n# The official Django site has an unpractical URL\nPYTHON_DJANGO_SITE = https://files.pythonhosted.org/packages/59/45/c6fbb3a206df0b7dc3e6e8fae738e042c63d4ddf828c6e1ba10d7417a1d9\nPYTHON_DJANGO_LICENSE = BSD-3-Clause\nPYTHON_DJANGO_LICENSE_FILES = LICENSE\nPYTHON_DJANGO_CPE_ID_VENDOR = djangoproject\nPYTHON_DJANGO_CPE_ID_PRODUCT = django\nPYTHON_DJANGO_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-django-enumfields/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DJANGO_ENUMFIELDS\n\tbool \"python-django-enumfields\"\n\tselect BR2_PACKAGE_PYTHON_ENUM34 if BR2_PACKAGE_PYTHON # runtime\n\thelp\n\t  Real Python Enums for Django.\n\n\t  https://github.com/hzdg/django-enumfields\n"
  },
  {
    "path": "package/python-django-enumfields/python-django-enumfields.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/django-enumfields/json\nmd5\tc9725a2c31ca2949d111815742335279  django-enumfields-1.0.0.tar.gz\nsha256\t5b0e2dd5973337717ca6bd5a7d9e167e6ae01203c160d4761b88837c4678f219  django-enumfields-1.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t5548de8c163dc57bd0a4f5772f1509f2c04f1390251c98ebf060c9d52a223f57  LICENSE\n"
  },
  {
    "path": "package/python-django-enumfields/python-django-enumfields.mk",
    "content": "################################################################################\n#\n# python-django-enumfields\n#\n################################################################################\n\nPYTHON_DJANGO_ENUMFIELDS_VERSION = 1.0.0\nPYTHON_DJANGO_ENUMFIELDS_SOURCE = django-enumfields-$(PYTHON_DJANGO_ENUMFIELDS_VERSION).tar.gz\nPYTHON_DJANGO_ENUMFIELDS_SITE = https://files.pythonhosted.org/packages/b7/56/3f4e8d8ef6d5577a1b75b3cfae6dff819afd030e3a519a326ec7a7a0b74f\nPYTHON_DJANGO_ENUMFIELDS_SETUP_TYPE = setuptools\nPYTHON_DJANGO_ENUMFIELDS_LICENSE = MIT\nPYTHON_DJANGO_ENUMFIELDS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-dnspython/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DNSPYTHON\n\tbool \"python-dnspython\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A powerful DNS toolkit for python.\n\n\t  http://www.dnspython.org\n"
  },
  {
    "path": "package/python-dnspython/python-dnspython.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/dnspython/json\nmd5  8a362d7b2358be3117683e2dbf9654fc  dnspython-2.1.0.zip\nsha256  e4a87f0b573201a0f3727fa18a516b055fd1107e0e5477cded4a2de497df1dd4  dnspython-2.1.0.zip\n# Locally computed sha256 checksums\nsha256  c3ea3ff5654b329c19d3bc5f7481af623c3dded4a6145585499f843ad3d741cd  LICENSE\n"
  },
  {
    "path": "package/python-dnspython/python-dnspython.mk",
    "content": "################################################################################\n#\n# python-dnspython\n#\n################################################################################\n\nPYTHON_DNSPYTHON_VERSION = 2.1.0\nPYTHON_DNSPYTHON_SOURCE = dnspython-$(PYTHON_DNSPYTHON_VERSION).zip\nPYTHON_DNSPYTHON_SITE = https://files.pythonhosted.org/packages/13/27/5277de856f605f3429d752a39af3588e29d10181a3aa2e2ee471d817485a\nPYTHON_DNSPYTHON_LICENSE = ISC\nPYTHON_DNSPYTHON_LICENSE_FILES = LICENSE\nPYTHON_DNSPYTHON_SETUP_TYPE = setuptools\n\ndefine PYTHON_DNSPYTHON_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(PYTHON_DNSPYTHON_DL_DIR)/$(PYTHON_DNSPYTHON_SOURCE)\n\tmv $(@D)/dnspython-$(PYTHON_DNSPYTHON_VERSION)/* $(@D)\n\t$(RM) -r $(@D)/dnspython-$(PYTHON_DNSPYTHON_VERSION)\nendef\n\ndefine HOST_PYTHON_DNSPYTHON_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(HOST_PYTHON_DNSPYTHON_DL_DIR)/$(HOST_PYTHON_DNSPYTHON_SOURCE)\n\tmv $(@D)/dnspython-$(HOST_PYTHON_DNSPYTHON_VERSION)/* $(@D)\n\t$(RM) -r $(@D)/dnspython-$(HOST_PYTHON_DNSPYTHON_VERSION)\nendef\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-docker/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DOCKER\n\tbool \"python-docker\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-requests -> python-idna\n\t# docker-engine may be running on another host, so no other dependency\n\tselect BR2_PACKAGE_PYTHON3_SSL # runtime\n\tselect BR2_PACKAGE_PYTHON_REQUESTS # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_WEBSOCKET_CLIENT # runtime\n\thelp\n\t  A Python library for the Docker Engine API.\n\n\t  https://github.com/docker/docker-py\n"
  },
  {
    "path": "package/python-docker/python-docker.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/docker/json\nmd5\te1e8dc73e3220fe9eec1faf80b0290de  docker-4.1.0.tar.gz\nsha256\t6e06c5e70ba4fad73e35f00c55a895a448398f3ada7faae072e2bb01348bafc1  docker-4.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256\tf2f0b07fa5e492c11d27aa0d2f3f1a0e64b9d17f32d8aa489ae2af9609af33b2  LICENSE\n"
  },
  {
    "path": "package/python-docker/python-docker.mk",
    "content": "################################################################################\n#\n# python-docker\n#\n################################################################################\n\nPYTHON_DOCKER_VERSION = 4.1.0\nPYTHON_DOCKER_SOURCE = docker-$(PYTHON_DOCKER_VERSION).tar.gz\nPYTHON_DOCKER_SITE = https://files.pythonhosted.org/packages/de/54/a822d7116ff2f726f3da2b3e6c87659657bdcb7a36e382860ed505ed5e45\nPYTHON_DOCKER_SETUP_TYPE = setuptools\nPYTHON_DOCKER_LICENSE = Apache-2.0\nPYTHON_DOCKER_LICENSE_FILES = LICENSE\nPYTHON_DOCKER_CPE_ID_VENDOR = docker\nPYTHON_DOCKER_CPE_ID_PRODUCT = docker-py\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-docker-pycreds/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DOCKER_PYCREDS\n\tbool \"python-docker-pycreds\"\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Python bindings for the docker credentials store API.\n\n\t  https://github.com/shin-/dockerpy-creds\n"
  },
  {
    "path": "package/python-docker-pycreds/python-docker-pycreds.hash",
    "content": "# md5 and sha256 from https://pypi.python.org/pypi/docker-pycreds/json\nmd5\t322f570cea6b4661c6ac335683988e18  docker-pycreds-0.4.0.tar.gz\nsha256\t6ce3270bcaf404cc4c3e27e4b6c70d3521deae82fb508767870fdbf772d584d4  docker-pycreds-0.4.0.tar.gz\nsha256\tcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/python-docker-pycreds/python-docker-pycreds.mk",
    "content": "################################################################################\n#\n# python-docker-pycreds\n#\n################################################################################\n\nPYTHON_DOCKER_PYCREDS_VERSION = 0.4.0\nPYTHON_DOCKER_PYCREDS_SOURCE = docker-pycreds-$(PYTHON_DOCKER_PYCREDS_VERSION).tar.gz\nPYTHON_DOCKER_PYCREDS_SITE = https://files.pythonhosted.org/packages/c5/e6/d1f6c00b7221e2d7c4b470132c931325c8b22c51ca62417e300f5ce16009\nPYTHON_DOCKER_PYCREDS_SETUP_TYPE = setuptools\nPYTHON_DOCKER_PYCREDS_LICENSE = Apache-2.0\nPYTHON_DOCKER_PYCREDS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-dockerpty/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DOCKERPTY\n\tbool \"python-dockerpty\"\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Python library to use the pseudo-tty of a docker container.\n\n\t  https://github.com/d11wtq/dockerpty\n"
  },
  {
    "path": "package/python-dockerpty/python-dockerpty.hash",
    "content": "# md5 from https://pypi.python.org/pypi/dockerpty/json, sha256 locally computed\nmd5\t028bacb34536f3ee6a2ccd668c27e8e4  dockerpty-0.4.1.tar.gz\nsha256\t69a9d69d573a0daa31bcd1c0774eeed5c15c295fe719c61aca550ed1393156ce  dockerpty-0.4.1.tar.gz\nsha256\tcfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\n"
  },
  {
    "path": "package/python-dockerpty/python-dockerpty.mk",
    "content": "################################################################################\n#\n# python-dockerpty\n#\n################################################################################\n\nPYTHON_DOCKERPTY_VERSION = 0.4.1\nPYTHON_DOCKERPTY_SOURCE = dockerpty-$(PYTHON_DOCKERPTY_VERSION).tar.gz\nPYTHON_DOCKERPTY_SITE = https://pypi.python.org/packages/8d/ee/e9ecce4c32204a6738e0a5d5883d3413794d7498fe8b06f44becc028d3ba\nPYTHON_DOCKERPTY_SETUP_TYPE = setuptools\nPYTHON_DOCKERPTY_LICENSE = Apache-2.0\nPYTHON_DOCKERPTY_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-docopt/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DOCOPT\n\tbool \"python-docopt\"\n\thelp\n\t  docopt helps you create most beautiful command-line\n\t  interfaces easily. The option parser is generated based on\n\t  the beautiful help message that you write yourself. This way\n\t  you don't need to write this stupid repeatable parser-code,\n\t  and instead can write only the help message-- the way you\n\t  want it.\n\n\t  https://github.com/docopt/docopt\n"
  },
  {
    "path": "package/python-docopt/python-docopt.hash",
    "content": "# locally computed\nsha256  2113eed1e7fbbcd43fb7ee6a977fb02d0b482753586c9dc1a8e3b7d541426e99  python-docopt-0.6.2.tar.gz\nsha256  3d5df78f592ff2433c3c6ce4984091b7f497059ddb8c6b08a061ba48e37b67f2  LICENSE-MIT\n"
  },
  {
    "path": "package/python-docopt/python-docopt.mk",
    "content": "################################################################################\n#\n# python-docopt\n#\n################################################################################\n\nPYTHON_DOCOPT_VERSION = 0.6.2\nPYTHON_DOCOPT_SITE = $(call github,docopt,docopt,$(PYTHON_DOCOPT_VERSION))\nPYTHON_DOCOPT_LICENSE = MIT\nPYTHON_DOCOPT_LICENSE_FILES = LICENSE-MIT\nPYTHON_DOCOPT_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-docutils/0001-Update-setup.py.patch",
    "content": "From 583e59ccf72a02c2a6f0399f29f622c7f2f4a932 Mon Sep 17 00:00:00 2001\nFrom: milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>\nDate: Sun, 1 Sep 2019 19:39:36 +0000\nSubject: [PATCH] Update setup.py\n\nPython 3.4 no longer supported,\nmore languages supported (and Lithuanian accepted by PyPi).\n\ngit-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8383 929543f6-e4f2-0310-98a6-ba3bd3dd1d04\n\n[Asaf: adjust upstream patch to 0.15.2]\nSigned-off-by: Asaf Kahlon <asafka7@gmail.com>\n---\n setup.py | 14 +++++++++++++-\n 1 file changed, 13 insertions(+), 1 deletion(-)\n\ndiff --git a/setup.py b/setup.py\nindex f801ea2..5c1ebfd 100755\n--- a/setup.py\n+++ b/setup.py\n@@ -7,6 +7,10 @@ import os\n import glob\n try:\n     import setuptools\n+except ImportError:\n+    print('Warning: Could not load package `setuptools`.')\n+    print('Actions requiring `setuptools` instead of `distutils` will fail')\n+try:\n     from distutils.core import setup, Command\n     from distutils.command.build import build\n     from distutils.command.build_py import build_py\n@@ -123,7 +127,7 @@ what-you-see-is-what-you-get plaintext markup syntax.\"\"\", # wrap at col 60\n     'maintainer_email': 'docutils-develop@lists.sourceforge.net',\n     'license': 'public domain, Python, 2-Clause BSD, GPL 3 (see COPYING.txt)',\n     'platforms': 'OS-independent',\n-    'python_requires': '>=2.6, !=3.0.*, !=3.1.*, !=3.2.*',\n+    'python_requires': '>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*',\n     'package_dir': {'docutils': 'docutils',\n                     'docutils.tools': 'tools'},\n     'packages': ['docutils',\n@@ -213,14 +219,20 @@ classifiers = [\n     'Natural Language :: Chinese (Simplified)',\n     'Natural Language :: Chinese (Traditional)',\n     'Natural Language :: Czech',\n+    'Natural Language :: Danish',\n     'Natural Language :: Dutch',\n     'Natural Language :: Esperanto',\n     'Natural Language :: Finnish',\n     'Natural Language :: French',\n     'Natural Language :: Galician',\n     'Natural Language :: German',\n+    'Natural Language :: Hebrew',\n     'Natural Language :: Italian',\n     'Natural Language :: Japanese',\n+    'Natural Language :: Korean',\n+    'Natural Language :: Latvian',\n+    'Natural Language :: Lithuanian',\n+    'Natural Language :: Persian',\n     'Natural Language :: Polish',\n     'Natural Language :: Portuguese (Brazilian)',\n     'Natural Language :: Russian',\n-- \n2.20.1\nk\n"
  },
  {
    "path": "package/python-docutils/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DOCUTILS\n\tbool \"python-docutils\"\n\thelp\n\t  Docutils is a modular system for processing documentation\n\t  into useful formats, such as HTML, XML, and LaTeX. For input\n\t  Docutils supports reStructuredText, an easy-to-read,\n\t  what-you-see-is-what-you-get plaintext markup syntax.\n\n\t  http://docutils.sourceforge.net/\n"
  },
  {
    "path": "package/python-docutils/python-docutils.hash",
    "content": "# md5 from https://pypi.python.org/pypi/docutils/json, sha256 locally computed\nmd5\te26a308d8000b0bed7416a633217c676  docutils-0.15.2.tar.gz\nsha256\ta2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99  docutils-0.15.2.tar.gz\nsha256  efa0c85aa99ea5b4781240031b0d02af54d7b5554c87ad2b2bea9ba490f6663f  COPYING.txt\n"
  },
  {
    "path": "package/python-docutils/python-docutils.mk",
    "content": "################################################################################\n#\n# python-docutils\n#\n################################################################################\n\nPYTHON_DOCUTILS_VERSION = 0.15.2\nPYTHON_DOCUTILS_SOURCE = docutils-$(PYTHON_DOCUTILS_VERSION).tar.gz\nPYTHON_DOCUTILS_SITE = https://files.pythonhosted.org/packages/93/22/953e071b589b0b1fee420ab06a0d15e5aa0c7470eb9966d60393ce58ad61\nPYTHON_DOCUTILS_LICENSE = Public Domain, BSD-2-Clause, GPL-3.0 (emacs mode), other\nPYTHON_DOCUTILS_LICENSE_FILES = COPYING.txt\nPYTHON_DOCUTILS_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-dominate/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DOMINATE\n\tbool \"python-dominate\"\n\thelp\n\t  Dominate is a Python library for creating and manipulating\n\t  HTML documents using an elegant DOM API.\n\n\t  http://github.com/Knio/dominate/\n"
  },
  {
    "path": "package/python-dominate/python-dominate.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/dominate/json\nmd5  9f714324ca99eee98bb3c3cdbe838de6  dominate-2.6.0.tar.gz\nsha256  76ec2cde23700a6fc4fee098168b9dee43b99c2f1dd0ca6a711f683e8eb7e1e4  dominate-2.6.0.tar.gz\n# Locally computed sha256 checksums\nsha256  9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1  LICENSE.txt\n"
  },
  {
    "path": "package/python-dominate/python-dominate.mk",
    "content": "################################################################################\n#\n# python-dominate\n#\n################################################################################\n\nPYTHON_DOMINATE_VERSION = 2.6.0\nPYTHON_DOMINATE_SOURCE = dominate-$(PYTHON_DOMINATE_VERSION).tar.gz\nPYTHON_DOMINATE_SITE = https://files.pythonhosted.org/packages/29/23/edf8e470f1053245c1aa99d92c8a3da9e83f6c7d3eb39205486965425be5\nPYTHON_DOMINATE_SETUP_TYPE = setuptools\nPYTHON_DOMINATE_LICENSE = LGPL-3.0+\nPYTHON_DOMINATE_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-dotenv/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DOTENV\n\tbool \"python-dotenv\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\thelp\n\t  Add .env support to your django/flask apps in development and deployments.\n\n\t  https://github.com/theskumar/python-dotenv\n"
  },
  {
    "path": "package/python-dotenv/python-dotenv.hash",
    "content": "sha256\t6640acd76e6cab84648e4fec16c9d19de6700971f9d91d045e7120622167bfda  python-dotenv-0.10.2.tar.gz\n\n"
  },
  {
    "path": "package/python-dotenv/python-dotenv.mk",
    "content": "################################################################################\n#\n# python-dotenv\n#\n################################################################################\n\nPYTHON_DOTENV_VERSION = 0.10.2\nPYTHON_DOTENV_SOURCE = python-dotenv-$(PYTHON_DOTENV_VERSION).tar.gz\nPYTHON_DOTENV_SITE = https://files.pythonhosted.org/packages/2d/f0/f89093378e5a7c028d7d618c9ce60a7853a1f36d46ff9e497ba03df102d5\nPYTHON_DOTENV_SETUP_TYPE = setuptools\nPYTHON_DOTENV_LICENSE = Apache-2.0\nPYTHON_DOTENV_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-dpkt/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_DPKT\n\tbool \"python-dpkt\"\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  Fast, simple packet creation / parsing, with definitions\n\t  for the basic TCP/IP protocols.\n\n\t  https://github.com/kbandla/dpkt\n"
  },
  {
    "path": "package/python-dpkt/python-dpkt.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/dpkt/json\nmd5  ac3ace1c5ee12a74f12a863ac9082b59  dpkt-1.9.7.2.tar.gz\nsha256  80f977667ebbad2b5c4f7b7f45ee8bea6622fb71723f68a9a8fe6274520c853b  dpkt-1.9.7.2.tar.gz\n# Locally computed sha256 checksums\nsha256  4c5ffde575425591cbd51410219a6b98bbbb717e0c5784187e356653da8e5095  LICENSE\n"
  },
  {
    "path": "package/python-dpkt/python-dpkt.mk",
    "content": "################################################################################\n#\n# python-dpkt\n#\n################################################################################\n\nPYTHON_DPKT_VERSION = 1.9.7.2\nPYTHON_DPKT_SOURCE = dpkt-$(PYTHON_DPKT_VERSION).tar.gz\nPYTHON_DPKT_SITE = https://files.pythonhosted.org/packages/95/51/923b370880eff9b62fe4fe965a916da709022a02669c670731da69088e93\nPYTHON_DPKT_SETUP_TYPE = setuptools\nPYTHON_DPKT_LICENSE = BSD-3-Clause\nPYTHON_DPKT_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ecdsa/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ECDSA\n\tbool \"python-ecdsa\"\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  ECDSA cryptographic signature library (pure python).\n\n\t  http://github.com/tlsfuzzer/python-ecdsa\n"
  },
  {
    "path": "package/python-ecdsa/python-ecdsa.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ecdsa/json\nmd5  d0dd59c43af0f640a60599551529f5d0  ecdsa-0.17.0.tar.gz\nsha256  b9f500bb439e4153d0330610f5d26baaf18d17b8ced1bc54410d189385ea68aa  ecdsa-0.17.0.tar.gz\n# Locally computed sha256 checksums\nsha256  3eca9845773d2e5b8cc9d8c119d345f00a4806e4bd660d4a3d6cdf9c0e9d8bb2  LICENSE\n"
  },
  {
    "path": "package/python-ecdsa/python-ecdsa.mk",
    "content": "################################################################################\n#\n# python-ecdsa\n#\n################################################################################\n\nPYTHON_ECDSA_VERSION = 0.17.0\nPYTHON_ECDSA_SOURCE = ecdsa-$(PYTHON_ECDSA_VERSION).tar.gz\nPYTHON_ECDSA_SITE = https://files.pythonhosted.org/packages/bf/3d/3d909532ad541651390bf1321e097404cbd39d1d89c2046f42a460220fb3\nPYTHON_ECDSA_SETUP_TYPE = setuptools\nPYTHON_ECDSA_LICENSE = MIT\nPYTHON_ECDSA_LICENSE_FILES = LICENSE\nPYTHON_ECDSA_CPE_ID_VENDOR = python-ecdsa_project\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-engineio/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ENGINEIO\n\tbool \"python-engineio\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON3_ZLIB\n\thelp\n\t  Engine.IO server.\n\n\t  http://github.com/miguelgrinberg/python-engineio/\n"
  },
  {
    "path": "package/python-engineio/python-engineio.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/python-engineio/json\nmd5  d2bc7184d64e9d5a692bfad29ff73dea  python-engineio-4.2.1.tar.gz\nsha256  d510329b6d8ed5662547862f58bc73659ae62defa66b66d745ba021de112fa62  python-engineio-4.2.1.tar.gz\n# Locally computed sha256 checksums\nsha256  c9e97d3dbc1fbbcdb4f7808b282cd646db887aff4f5313fe6bbe8d4c31405a9c  LICENSE\n"
  },
  {
    "path": "package/python-engineio/python-engineio.mk",
    "content": "################################################################################\n#\n# python-engineio\n#\n################################################################################\n\nPYTHON_ENGINEIO_VERSION = 4.2.1\nPYTHON_ENGINEIO_SITE = https://files.pythonhosted.org/packages/74/1e/33e402011bb2fe33ab12762e5a66d66df1d47302a23e9c5e8310e11b1403\nPYTHON_ENGINEIO_SETUP_TYPE = setuptools\nPYTHON_ENGINEIO_LICENSE = MIT\nPYTHON_ENGINEIO_LICENSE_FILES = LICENSE\nPYTHON_ENGINEIO_CPE_ID_VENDOR = python-engineio_project\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-entrypoints/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ENTRYPOINTS\n\tbool \"python-entrypoints\"\n\thelp\n\t  Discover and load entry points from installed packages.\n\n\t  https://github.com/takluyver/entrypoints\n"
  },
  {
    "path": "package/python-entrypoints/python-entrypoints.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/entrypoints/json\nmd5\tc5c61ea2e46a0c50ea08f4af7955a0b1  entrypoints-0.3.tar.gz\nsha256\tc70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451  entrypoints-0.3.tar.gz\n# Locally computed sha256 checksums\nsha256\tde5fcd7349cdf399b0707a2a024833c4704743650133c72d6f0ff7561a03a848  LICENSE\n"
  },
  {
    "path": "package/python-entrypoints/python-entrypoints.mk",
    "content": "################################################################################\n#\n# python-entrypoints\n#\n################################################################################\n\nPYTHON_ENTRYPOINTS_VERSION = 0.3\nPYTHON_ENTRYPOINTS_SOURCE = entrypoints-$(PYTHON_ENTRYPOINTS_VERSION).tar.gz\nPYTHON_ENTRYPOINTS_SITE = https://files.pythonhosted.org/packages/b4/ef/063484f1f9ba3081e920ec9972c96664e2edb9fdc3d8669b0e3b8fc0ad7c\nPYTHON_ENTRYPOINTS_SETUP_TYPE = distutils\nPYTHON_ENTRYPOINTS_LICENSE = MIT\nPYTHON_ENTRYPOINTS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-enum/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ENUM\n\tbool \"python-enum\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  Robust enumerated type support in Python\n\n\t  An enumeration object is an immutable sequence object built\n\t  from a sequence of strings. Each value is also available as\n\t  an attribute. Such values are constant. Comparisons and\n\t  enumeration are supported.\n\n\t  https://pypi.python.org/pypi/enum\n"
  },
  {
    "path": "package/python-enum/python-enum.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/enum/json\nmd5 e7d170e3f84435b77058de625c96ef58 enum-0.4.7.tar.gz\nsha256 8c7cf3587eda51008bcc1eed99ea2c331ccd265c231dbaa95ec5258d3dc03100 enum-0.4.7.tar.gz\n# Locally computed sha256 checksums\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL-3\n"
  },
  {
    "path": "package/python-enum/python-enum.mk",
    "content": "################################################################################\n#\n# python-enum\n#\n################################################################################\n\nPYTHON_ENUM_VERSION = 0.4.7\nPYTHON_ENUM_SOURCE = enum-$(PYTHON_ENUM_VERSION).tar.gz\nPYTHON_ENUM_SITE = https://files.pythonhosted.org/packages/02/a0/32e1d5a21b703f600183e205aafc6773577e16429af5ad3c3f9b956b07ca\nPYTHON_ENUM_SETUP_TYPE = setuptools\nPYTHON_ENUM_LICENSE = GPL-3.0+\nPYTHON_ENUM_LICENSE_FILES = LICENSE.GPL-3\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-enum34/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ENUM34\n\tbool \"python-enum34\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  Python 3.4 Enum backported to 2.x.\n\n\t  An enumeration is a set of symbolic names (members) bound to\n\t  unique, constant values. Within an enumeration, the members\n\t  can be compared by identity, and the enumeration itself can\n\t  be iterated over.\n\n\t  https://pypi.python.org/pypi/enum34\n"
  },
  {
    "path": "package/python-enum34/python-enum34.hash",
    "content": "# md5 from https://pypi.python.org/pypi/enum34/json\nmd5  b5ac0bb5ea9e830029599e410d09d3b5  enum34-1.1.10.tar.gz\n# Locally computed\nsha256  cce6a7477ed816bd2542d03d53db9f0db935dd013b70f336a95c73979289f248  enum34-1.1.10.tar.gz\nsha256  88ec6a6c8eafa3b9757e745783938bef3f5e4d5e3c76b1db576aa3ab520e5e1d  enum/LICENSE\n"
  },
  {
    "path": "package/python-enum34/python-enum34.mk",
    "content": "################################################################################\n#\n# python-enum34\n#\n################################################################################\n\nPYTHON_ENUM34_VERSION = 1.1.10\nPYTHON_ENUM34_SOURCE = enum34-$(PYTHON_ENUM34_VERSION).tar.gz\nPYTHON_ENUM34_SITE = https://files.pythonhosted.org/packages/11/c4/2da1f4952ba476677a42f25cd32ab8aaf0e1c0d0e00b89822b835c7e654c\nPYTHON_ENUM34_SETUP_TYPE = setuptools\nPYTHON_ENUM34_LICENSE = BSD-3-Clause\nPYTHON_ENUM34_LICENSE_FILES = enum/LICENSE\nPYTHON_ENUM34_CPE_ID_VENDOR = python\nPYTHON_ENUM34_CPE_ID_PRODUCT = enum34\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-esptool/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ESPTOOL\n\tbool \"python-esptool\"\n\tselect BR2_PACKAGE_PYTHON_ECDSA # runtime\n\tselect BR2_PACKAGE_PYTHON_PYAES # runtime\n\tselect BR2_PACKAGE_PYTHON_SERIAL # runtime\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3\n\thelp\n\t  A serial utility to communicate & flash code to Espressif\n\t  ESP8266 & ESP32 chips.\n\n\t  https://github.com/espressif/esptool\n"
  },
  {
    "path": "package/python-esptool/python-esptool.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/esptool/json\nmd5\t84aa6ffb4723b1f59a2c83244a9ad918  esptool-3.2.tar.gz\nsha256\t9638ff11c68e621e08e7c3335d4fd9d70b2ddcf7caae778073cd8cc27be1216f  esptool-3.2.tar.gz\n# Locally computed sha256 checksums\nsha256\t8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/python-esptool/python-esptool.mk",
    "content": "################################################################################\n#\n# python-esptool\n#\n################################################################################\n\nPYTHON_ESPTOOL_VERSION = 3.2\nPYTHON_ESPTOOL_SOURCE = esptool-$(PYTHON_ESPTOOL_VERSION).tar.gz\nPYTHON_ESPTOOL_SITE = https://files.pythonhosted.org/packages/60/a4/33907f5b735f9179061bd6b6cae7123d4a2d0cdf46c879fa55e66edef24f\nPYTHON_ESPTOOL_SETUP_TYPE = setuptools\nPYTHON_ESPTOOL_LICENSE = GPL-2.0+\nPYTHON_ESPTOOL_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-falcon/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FALCON\n\tbool \"python-falcon\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  An unladen web framework for building APIs and app\n\t  backends.\n\n\t  https://falconframework.org\n"
  },
  {
    "path": "package/python-falcon/python-falcon.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/falcon/json\nmd5  4a70cfeeacb453f5fd7eb791bdd3ac01  falcon-3.0.1.tar.gz\nsha256  c41d84db325881a870e8b7129d5ecfd972fa4323cf77b7119a1d2a21966ee681  falcon-3.0.1.tar.gz\n# Locally computed sha256 checksums\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/python-falcon/python-falcon.mk",
    "content": "################################################################################\n#\n# python-falcon\n#\n################################################################################\n\nPYTHON_FALCON_VERSION = 3.0.1\nPYTHON_FALCON_SOURCE = falcon-$(PYTHON_FALCON_VERSION).tar.gz\nPYTHON_FALCON_SITE = https://files.pythonhosted.org/packages/63/22/6a9009c53ad78e65d88a44db8eccc7f39c6f54fc05fb43b1e9cbbc481d06\nPYTHON_FALCON_SETUP_TYPE = setuptools\nPYTHON_FALCON_LICENSE = Apache-2.0\nPYTHON_FALCON_LICENSE_FILES = LICENSE\n\nifeq ($(BR2_PACKAGE_HOST_PYTHON_CYTHON),y)\nPYTHON_FALCON_DEPENDENCIES += host-python-cython\nendif\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-fastentrypoints/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PYTHON_FASTENTRYPOINTS\n\tbool \"host python-fastentrypoints\"\n\thelp\n\t  Makes entry_points specified in setup.py load more quickly.\n\n\t  https://github.com/ninjaaron/fast-entry_points\n"
  },
  {
    "path": "package/python-fastentrypoints/python-fastentrypoints.hash",
    "content": "# md5 from https://pypi.org/pypi/fastentrypoints/json, sha256 locally computed\nmd5\t390ad9a9229164a06156a5b1f0ef1b22  fastentrypoints-0.12.tar.gz\nsha256\tff284f1469bd65400599807d2c6284d5b251398e6e28811f5f77fd262292410b  fastentrypoints-0.12.tar.gz\nsha256\td1ce3f6a7bb1a7194c7d826a0ca318176b12e58616d9e3d8f366ad43802787c4  fastentrypoints.py\n"
  },
  {
    "path": "package/python-fastentrypoints/python-fastentrypoints.mk",
    "content": "################################################################################\n#\n# python-fastentrypoints\n#\n################################################################################\n\nPYTHON_FASTENTRYPOINTS_VERSION = 0.12\nPYTHON_FASTENTRYPOINTS_SOURCE = fastentrypoints-$(PYTHON_FASTENTRYPOINTS_VERSION).tar.gz\nPYTHON_FASTENTRYPOINTS_SITE = https://files.pythonhosted.org/packages/56/59/69d9ae590ca39435d409651314ec13b2abe8127c1db0231c01d034ebb6b0\nPYTHON_FASTENTRYPOINTS_SETUP_TYPE = setuptools\nPYTHON_FASTENTRYPOINTS_LICENSE = BSD-2-Clause\nPYTHON_FASTENTRYPOINTS_LICENSE_FILES = fastentrypoints.py\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-filelock/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FILELOCK\n\tbool \"python-filelock\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A platform independent file lock.\n\n\t  https://github.com/benediktschmitt/py-filelock\n"
  },
  {
    "path": "package/python-filelock/python-filelock.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/filelock/json\nmd5  f8458b5235a9e439fd512dc08947f6b2  filelock-3.3.0.tar.gz\nsha256  8c7eab13dc442dc249e95158bcc12dec724465919bdc9831fdbf0660f03d1785  filelock-3.3.0.tar.gz\n# Locally computed sha256 checksums\nsha256  88d9b4eb60579c191ec391ca04c16130572d7eedc4a86daa58bf28c6e14c9bcd  LICENSE\n"
  },
  {
    "path": "package/python-filelock/python-filelock.mk",
    "content": "################################################################################\n#\n# python-filelock\n#\n################################################################################\n\nPYTHON_FILELOCK_VERSION = 3.3.0\nPYTHON_FILELOCK_SOURCE = filelock-$(PYTHON_FILELOCK_VERSION).tar.gz\nPYTHON_FILELOCK_SITE = https://files.pythonhosted.org/packages/fd/6e/665a6cb363bee26e40954ee812e4e733fd7cafd84c06e0c7c2357641abd6\nPYTHON_FILELOCK_SETUP_TYPE = setuptools\nPYTHON_FILELOCK_LICENSE = Public Domain\nPYTHON_FILELOCK_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-fire/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FIRE\n\tbool \"python-fire\"\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_TERMCOLOR # runtime\n\tselect BR2_PACKAGE_PYTHON_ENUM34 if BR2_PACKAGE_PYTHON # runtime\n\thelp\n\t  A library for automatically generating command line\n\t  interfaces.\n\n\t  https://github.com/google/python-fire\n"
  },
  {
    "path": "package/python-fire/python-fire.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/fire/json\nmd5  799be84cbbd7df2cf159cdcb538ab6f9  fire-0.4.0.tar.gz\nsha256  c5e2b8763699d1142393a46d0e3e790c5eb2f0706082df8f647878842c216a62  fire-0.4.0.tar.gz\n# Locally computed sha256 checksums\nsha256  a5de77b62266bca0bb97bf058992f0b0f308a83a8ca55ee10fbf6bd8ed8f7ed0  LICENSE\n"
  },
  {
    "path": "package/python-fire/python-fire.mk",
    "content": "################################################################################\n#\n# python-fire\n#\n################################################################################\n\nPYTHON_FIRE_VERSION = 0.4.0\nPYTHON_FIRE_SOURCE = fire-$(PYTHON_FIRE_VERSION).tar.gz\nPYTHON_FIRE_SITE = https://files.pythonhosted.org/packages/11/07/a119a1aa04d37bc819940d95ed7e135a7dcca1c098123a3764a6dcace9e7\nPYTHON_FIRE_SETUP_TYPE = setuptools\nPYTHON_FIRE_LICENSE = Apache-2.0\nPYTHON_FIRE_LICENSE_FILES = LICENSE\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\n# only needed/valid for python 3.x\ndefine PYTHON_FIRE_RM_PY3_FILE\n\trm -f $(TARGET_DIR)/usr/lib/python*/site-packages/fire/test_components_py3.py\nendef\n\nPYTHON_FIRE_POST_INSTALL_TARGET_HOOKS += PYTHON_FIRE_RM_PY3_FILE\nendif\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-flask/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FLASK\n\tbool \"python-flask\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_CLICK # runtime\n\tselect BR2_PACKAGE_PYTHON_JINJA2 # runtime\n\tselect BR2_PACKAGE_PYTHON_WERKZEUG # runtime\n\tselect BR2_PACKAGE_PYTHON_ITSDANGEROUS # runtime\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3\n\thelp\n\t  Flask is a microframework for Python based on Werkzeug,\n\t  Jinja 2 and good intentions.\n\n\t  https://palletsprojects.com/p/flask\n"
  },
  {
    "path": "package/python-flask/python-flask.hash",
    "content": "# From https://pypi.org/project/Flask/#copy-hash-modal-911ffb67-fe84-4e25-a1a9-f4c745a0a980\nmd5  0da4145d172993cd28a6c619630cc19c  Flask-1.1.2.tar.gz\nsha256\t4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060  Flask-1.1.2.tar.gz\n\n# License files\nsha256\t489a8e1108509ed98a37bb983e11e0f7e1d31f0bd8f99a79c8448e7ff37d07ea  LICENSE.rst\nsha256\t0ef3ae025f4a398761079f0d687ff3d66f4fef3a32ac2607318e909c0cba9150  docs/license.rst\n"
  },
  {
    "path": "package/python-flask/python-flask.mk",
    "content": "################################################################################\n#\n# python-flask\n#\n################################################################################\n\nPYTHON_FLASK_VERSION = 1.1.2\nPYTHON_FLASK_SOURCE = Flask-$(PYTHON_FLASK_VERSION).tar.gz\nPYTHON_FLASK_SITE = https://files.pythonhosted.org/packages/4e/0b/cb02268c90e67545a0e3a37ea1ca3d45de3aca43ceb7dbf1712fb5127d5d\nPYTHON_FLASK_SETUP_TYPE = setuptools\nPYTHON_FLASK_LICENSE = BSD-3-Clause\nPYTHON_FLASK_LICENSE_FILES = LICENSE.rst docs/license.rst\nPYTHON_FLASK_CPE_ID_VENDOR = palletsprojects\nPYTHON_FLASK_CPE_ID_PRODUCT = flask\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-flask-babel/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FLASK_BABEL\n\tbool \"python-flask-babel\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_FLASK # runtime\n\tselect BR2_PACKAGE_PYTHON_BABEL # runtime\n\tselect BR2_PACKAGE_PYTHON_JINJA2 # runtime\n\thelp\n\t  Flask-Babel is an extension to Flask that adds i18n and l10n\n\t  support to any Flask application with the help of babel,\n\t  pytz and speaklater. It has builtin support for date\n\t  formatting with timezone support as well as a very simple\n\t  and friendly interface to gettext translations.\n\n\t  https://pythonhosted.org/Flask-Babel/\n"
  },
  {
    "path": "package/python-flask-babel/python-flask-babel.hash",
    "content": "# From: https://pypi.org/project/Flask-Babel/#copy-hash-modal-80f92a70-1c66-4cce-bb3d-8d6f98287e3f\nmd5  50d5e92d96ef58787bf85b5a1b0a5567  Flask-Babel-2.0.0.tar.gz\nsha256\tf9faf45cdb2e1a32ea2ec14403587d4295108f35017a7821a2b1acb8cfd9257d  Flask-Babel-2.0.0.tar.gz\n\n# License files\nsha256\ta526100a7047237360a394ba4f70ae801b50ff9b8c9b9e73e7795480a59f6b7e  LICENSE\n"
  },
  {
    "path": "package/python-flask-babel/python-flask-babel.mk",
    "content": "################################################################################\n#\n# python-flask-babel\n#\n################################################################################\n\nPYTHON_FLASK_BABEL_VERSION = 2.0.0\nPYTHON_FLASK_BABEL_SOURCE = Flask-Babel-$(PYTHON_FLASK_BABEL_VERSION).tar.gz\nPYTHON_FLASK_BABEL_SITE = https://files.pythonhosted.org/packages/d7/fe/655e6a5a99ceb815fe839f0698956a9d6c7d5bcc06ca1ee7c6eb6dac154b\nPYTHON_FLASK_BABEL_LICENSE = BSD-3-Clause\nPYTHON_FLASK_BABEL_SETUP_TYPE = setuptools\nPYTHON_FLASK_BABEL_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-flask-cors/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FLASK_CORS\n\tbool \"python-flask-cors\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_FLASK # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  A Flask extension adding a decorator for CORS support.\n\n\t  https://github.com/corydolphin/flask-cors\n"
  },
  {
    "path": "package/python-flask-cors/python-flask-cors.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/flask-cors/json\nmd5  647ff0632b960ba063a077fb4063077e  Flask-Cors-3.0.10.tar.gz\nsha256  b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de  Flask-Cors-3.0.10.tar.gz\n# Locally computed sha256 checksums\nsha256  6e1a1bdc54834c1e0740cbce5d5f6f2cae1c846fd2a7f482b11649594fafbd5d  LICENSE\n"
  },
  {
    "path": "package/python-flask-cors/python-flask-cors.mk",
    "content": "################################################################################\n#\n# python-flask-cors\n#\n################################################################################\n\nPYTHON_FLASK_CORS_VERSION = 3.0.10\nPYTHON_FLASK_CORS_SOURCE = Flask-Cors-$(PYTHON_FLASK_CORS_VERSION).tar.gz\nPYTHON_FLASK_CORS_SITE = https://files.pythonhosted.org/packages/cf/25/e3b2553d22ed542be807739556c69621ad2ab276ae8d5d2560f4ed20f652\nPYTHON_FLASK_CORS_SETUP_TYPE = setuptools\nPYTHON_FLASK_CORS_LICENSE = MIT\nPYTHON_FLASK_CORS_LICENSE_FILES = LICENSE\nPYTHON_FLASK_CORS_CPE_ID_VENDOR = flask-cors_project\nPYTHON_FLASK_CORS_CPE_ID_PRODUCT = flask-cors\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-flask-expects-json/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FLASK_EXPECTS_JSON\n\tbool \"python-flask-expects-json\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_FLASK # runtime\n\tselect BR2_PACKAGE_PYTHON_JSONSCHEMA # runtime\n\thelp\n\t  Decorator for REST endpoints in flask. Validate JSON request\n\t  data.\n\n\t  https://github.com/fischerfredl/flask-expects-json\n"
  },
  {
    "path": "package/python-flask-expects-json/python-flask-expects-json.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/flask-expects-json/json\nmd5  c1fb8ede58db312d7923212dc97b8ab4  flask-expects-json-1.5.0.tar.gz\nsha256  0087dc3d089f1ac75a1fc0f259f4dbd02bbb9c356e92e1a080f2309e2f75d053  flask-expects-json-1.5.0.tar.gz\n# Locally computed sha256 checksums\nsha256  06154a99fdc664107294a0a5e7e68f776078d075408dd32bbeaa7340fdd39e73  LICENSE.txt\n"
  },
  {
    "path": "package/python-flask-expects-json/python-flask-expects-json.mk",
    "content": "################################################################################\n#\n# python-flask-expects-json\n#\n################################################################################\n\nPYTHON_FLASK_EXPECTS_JSON_VERSION = 1.5.0\nPYTHON_FLASK_EXPECTS_JSON_SOURCE = flask-expects-json-$(PYTHON_FLASK_EXPECTS_JSON_VERSION).tar.gz\nPYTHON_FLASK_EXPECTS_JSON_SITE = https://files.pythonhosted.org/packages/4c/4a/9d9d050af700fb3feebd1f8466e73d65ce8b4709f27773e07100b0993451\nPYTHON_FLASK_EXPECTS_JSON_SETUP_TYPE = setuptools\nPYTHON_FLASK_EXPECTS_JSON_LICENSE = MIT\nPYTHON_FLASK_EXPECTS_JSON_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-flask-jsonrpc/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FLASK_JSONRPC\n\tbool \"python-flask-jsonrpc\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\t# runtime dependency\n\tselect BR2_PACKAGE_PYTHON_FLASK\n\thelp\n\t  A basic JSON-RPC implementation for your Flask-powered sites.\n\n\t  https://github.com/cenobites/flask-jsonrpc\n"
  },
  {
    "path": "package/python-flask-jsonrpc/python-flask-jsonrpc.hash",
    "content": "# md5 from https://pypi.python.org/pypi/flask-jsonrpc/json\nmd5\t5c0592f53b2f18e34d5be435acee8842  Flask-JSONRPC-0.3.1.tar.gz\n# Locally computed\nsha256\t4d0cc9c20874093306af91f5a48009fb8659a041428dcdb11703598ffbbc97d0  Flask-JSONRPC-0.3.1.tar.gz\nsha256  f613b06cbe766fd514b1b619a71a12c353cccaa55fa4f547be55563d9829be6f  setup.py\n"
  },
  {
    "path": "package/python-flask-jsonrpc/python-flask-jsonrpc.mk",
    "content": "################################################################################\n#\n# python-flask-jsonrpc\n#\n################################################################################\n\nPYTHON_FLASK_JSONRPC_VERSION = 0.3.1\nPYTHON_FLASK_JSONRPC_SOURCE = Flask-JSONRPC-$(PYTHON_FLASK_JSONRPC_VERSION).tar.gz\nPYTHON_FLASK_JSONRPC_SITE = https://pypi.python.org/packages/cb/1f/e6d66e8498609ba04bac76155b2ea884df95531e93501bf4ef009d40a83c\nPYTHON_FLASK_JSONRPC_LICENSE = BSD-3-Clause\nPYTHON_FLASK_JSONRPC_LICENSE_FILES = setup.py\nPYTHON_FLASK_JSONRPC_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-flask-login/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FLASK_LOGIN\n\tbool \"python-flask-login\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\t# runtime dependency\n\tselect BR2_PACKAGE_PYTHON_FLASK\n\thelp\n\t  Flask-Login provides user session management for Flask.\n\n\t  https://github.com/maxcountryman/flask-login\n"
  },
  {
    "path": "package/python-flask-login/python-flask-login.hash",
    "content": "# From https://pypi.org/project/Flask-Login/#copy-hash-modal-8bb2ac58-b80a-4793-84d4-4f32b92976d9\nmd5  a2d94aa6ae935345ebc68eb3cbb5fccd  Flask-Login-0.5.0.tar.gz\nsha256  6d33aef15b5bcead780acc339464aae8a6e28f13c90d8b1cf9de8b549d1c0b4b  Flask-Login-0.5.0.tar.gz\n\n# License files\nsha256  7a9dfb9c5da204ed1370f3b62c13e2992a12da1da707f47e156897eeb4344e5b  LICENSE\n"
  },
  {
    "path": "package/python-flask-login/python-flask-login.mk",
    "content": "################################################################################\n#\n# python-flask-login\n#\n################################################################################\n\nPYTHON_FLASK_LOGIN_VERSION = 0.5.0\nPYTHON_FLASK_LOGIN_SOURCE = Flask-Login-$(PYTHON_FLASK_LOGIN_VERSION).tar.gz\nPYTHON_FLASK_LOGIN_SITE = https://files.pythonhosted.org/packages/f9/01/f6c0a3a654ca125cf9cd273314c03a8bc6a47bf861765c8c1d375e15a28d\nPYTHON_FLASK_LOGIN_LICENSE = MIT\nPYTHON_FLASK_LOGIN_LICENSE_FILES = LICENSE\nPYTHON_FLASK_LOGIN_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-flask-sqlalchemy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FLASK_SQLALCHEMY\n\tbool \"python-flask-sqlalchemy\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_FLASK # runtime\n\tselect BR2_PACKAGE_PYTHON_SQLALCHEMY # runtime\n\thelp\n\t  Flask-SQLAlchemy is a Flask microframework extension which\n\t  adds support for the SQLAlchemy SQL toolkit/ORM.\n\n\t  http://github.com/mitsuhiko/flask-sqlalchemy\n"
  },
  {
    "path": "package/python-flask-sqlalchemy/python-flask-sqlalchemy.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/flask-sqlalchemy/json\nmd5\t1f5781cf3e1a2b1aabda47a5b20d2073  Flask-SQLAlchemy-2.4.1.tar.gz\nsha256\t6974785d913666587949f7c2946f7001e4fa2cb2d19f4e69ead02e4b8f50b33d  Flask-SQLAlchemy-2.4.1.tar.gz\n# Locally computed sha256 checksums\nsha256\t489a8e1108509ed98a37bb983e11e0f7e1d31f0bd8f99a79c8448e7ff37d07ea  LICENSE.rst\n"
  },
  {
    "path": "package/python-flask-sqlalchemy/python-flask-sqlalchemy.mk",
    "content": "################################################################################\n#\n# python-flask-sqlalchemy\n#\n################################################################################\n\nPYTHON_FLASK_SQLALCHEMY_VERSION = 2.4.1\nPYTHON_FLASK_SQLALCHEMY_SOURCE = Flask-SQLAlchemy-$(PYTHON_FLASK_SQLALCHEMY_VERSION).tar.gz\nPYTHON_FLASK_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/52/7a/35bacbedafdc652d5198b80eb22eacccae0c97a49740a45da828b05cc37b\nPYTHON_FLASK_SQLALCHEMY_SETUP_TYPE = setuptools\nPYTHON_FLASK_SQLALCHEMY_LICENSE = BSD-3-Clause\nPYTHON_FLASK_SQLALCHEMY_LICENSE_FILES = LICENSE.rst\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-flask-wtf/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FLASK_WTF\n\tbool \"python-flask-wtf\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_FLASK # runtime\n\tselect BR2_PACKAGE_PYTHON_ITSDANGEROUS # runtime\n\tselect BR2_PACKAGE_PYTHON_WTFORMS # runtime\n\thelp\n\t  Simple integration of Flask and WTForms.\n\n\t  https://github.com/wtforms/flask-wtf\n"
  },
  {
    "path": "package/python-flask-wtf/python-flask-wtf.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/flask-wtf/json\nmd5  920a5a476ecfb751952b5048cc05fcf8  Flask-WTF-0.15.1.tar.gz\nsha256  ff177185f891302dc253437fe63081e7a46a4e99aca61dfe086fb23e54fff2dc  Flask-WTF-0.15.1.tar.gz\n# Locally computed sha256 checksums\nsha256  a075f8d98acfdb05dd98716242b9e2c1b3ab98722926b3c4cf6c916ac14e8350  LICENSE\n"
  },
  {
    "path": "package/python-flask-wtf/python-flask-wtf.mk",
    "content": "################################################################################\n#\n# python-flask-wtf\n#\n################################################################################\n\nPYTHON_FLASK_WTF_VERSION = 0.15.1\nPYTHON_FLASK_WTF_SOURCE = Flask-WTF-$(PYTHON_FLASK_WTF_VERSION).tar.gz\nPYTHON_FLASK_WTF_SITE = https://files.pythonhosted.org/packages/9c/b5/4b48cece7b31aac2beab115330c2978ef4deee3aeb0dd1037c9b7a71b8c3\nPYTHON_FLASK_WTF_LICENSE = BSD-3-Clause\nPYTHON_FLASK_WTF_LICENSE_FILES = LICENSE\nPYTHON_FLASK_WTF_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-flatbuffers/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FLATBUFFERS\n\tbool \"python-flatbuffers\"\n\thelp\n\t  The FlatBuffers serialization format for Python.\n\n\t  https://github.com/google/flatbuffers\n"
  },
  {
    "path": "package/python-flatbuffers/python-flatbuffers.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/flatbuffers/json\nmd5  b2ce60d9a7c1f8a2ddac6d49a1b700a4  flatbuffers-2.0.tar.gz\nsha256  12158ab0272375eab8db2d663ae97370c33f152b27801fa6024e1d6105fd4dd2  flatbuffers-2.0.tar.gz\n"
  },
  {
    "path": "package/python-flatbuffers/python-flatbuffers.mk",
    "content": "################################################################################\n#\n# python-flatbuffers\n#\n################################################################################\n\nPYTHON_FLATBUFFERS_VERSION = 2.0\nPYTHON_FLATBUFFERS_SOURCE = flatbuffers-$(PYTHON_FLATBUFFERS_VERSION).tar.gz\nPYTHON_FLATBUFFERS_SITE = https://files.pythonhosted.org/packages/10/41/09e9ab2134895b82466fada08b69b800f9a724bc81fcca3d4474ce48ffce\nPYTHON_FLATBUFFERS_LICENSE = Apache-2.0\nPYTHON_FLATBUFFERS_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-flup/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FLUP\n\tbool \"python-flup\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  flup provides of a collection of WSGI modules for Python.\n\t  It allows a webserver to use scgi-mod and fastcgi-mod\n\t  with python.\n\n\t  https://pypi.python.org/pypi/flup\n"
  },
  {
    "path": "package/python-flup/python-flup.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/flup/json\nmd5\ta64e7a6374e043480ee92534c735964e  flup-1.0.3.tar.gz\nsha256\t5eb09f26eb0751f8380d8ac43d1dfb20e1d42eca0fa45ea9289fa532a79cd159  flup-1.0.3.tar.gz\n# Locally computed sha256 checksums\nsha256\t66a60ebc732165d199ec018fb9876d9f8168a5a8575375e64cc1b3d78c32b481  PKG-INFO\n"
  },
  {
    "path": "package/python-flup/python-flup.mk",
    "content": "################################################################################\n#\n# python-flup\n#\n################################################################################\n\nPYTHON_FLUP_VERSION = 1.0.3\nPYTHON_FLUP_SOURCE = flup-$(PYTHON_FLUP_VERSION).tar.gz\nPYTHON_FLUP_SITE = https://files.pythonhosted.org/packages/bb/b5/26cc8f7baf0ddebd3e61a354a2bcc692cfe8005123c37ee3d8507c4c7511\nPYTHON_FLUP_LICENSE = BSD-2-Clause, MIT\nPYTHON_FLUP_LICENSE_FILES = PKG-INFO\nPYTHON_FLUP_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-frozenlist/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FROZENLIST\n\tbool \"python-frozenlist\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A list-like structure which implements\n\t  collections.abc.MutableSequence.\n\n\t  https://github.com/aio-libs/frozenlist\n"
  },
  {
    "path": "package/python-frozenlist/python-frozenlist.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/frozenlist/json\nmd5  8f1851ef871d95a15ebcf20255c12f6d  frozenlist-1.2.0.tar.gz\nsha256  68201be60ac56aff972dc18085800b6ee07973c49103a8aba669dee3d71079de  frozenlist-1.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256  6fd5243e92dd7f98ec69c7ac377728e74905709ff527a5bf98d6d0263c04f5b6  LICENSE\n"
  },
  {
    "path": "package/python-frozenlist/python-frozenlist.mk",
    "content": "################################################################################\n#\n# python-frozenlist\n#\n################################################################################\n\nPYTHON_FROZENLIST_VERSION = 1.2.0\nPYTHON_FROZENLIST_SOURCE = frozenlist-$(PYTHON_FROZENLIST_VERSION).tar.gz\nPYTHON_FROZENLIST_SITE = https://files.pythonhosted.org/packages/5c/ee/7c6287928ba776567603248e160387cf4143641ecf734e393ad9b2c82475\nPYTHON_FROZENLIST_SETUP_TYPE = setuptools\nPYTHON_FROZENLIST_LICENSE = Apache-2.0\nPYTHON_FROZENLIST_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-functools32/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FUNCTOOLS32\n\tbool \"python-functools32\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  Backport of the functools module from Python 3.2.3 for use on\n\t  2.7 and PyPy.\n\n\t  https://github.com/MiCHiLU/python-functools32\n"
  },
  {
    "path": "package/python-functools32/python-functools32.hash",
    "content": "# md5 from https://pypi.python.org/pypi/functools32/json, sha256 locally computed\nmd5\t09f24ffd9af9f6cd0f63cb9f4e23d4b2  functools32-3.2.3-2.tar.gz\nsha256\tf6253dfbe0538ad2e387bd8fdfd9293c925d63553f5813c4e587745416501e6d  functools32-3.2.3-2.tar.gz\nsha256\t3f9ea6b89abe1556b72aff67b987d64c8272564815cd6a2832e6c4f6abdfe3b1  LICENSE\n"
  },
  {
    "path": "package/python-functools32/python-functools32.mk",
    "content": "################################################################################\n#\n# python-functools32\n#\n################################################################################\n\nPYTHON_FUNCTOOLS32_VERSION = 3.2.3-2\nPYTHON_FUNCTOOLS32_SOURCE = functools32-$(PYTHON_FUNCTOOLS32_VERSION).tar.gz\nPYTHON_FUNCTOOLS32_SITE = https://pypi.python.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db\nPYTHON_FUNCTOOLS32_SETUP_TYPE = distutils\nPYTHON_FUNCTOOLS32_LICENSE = Python-2.0\nPYTHON_FUNCTOOLS32_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-future/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FUTURE\n\tbool \"python-future\"\n\thelp\n\t  Easy, clean, reliable Python 2/3 compatibility.\n\n\t  http://python-future.org\n"
  },
  {
    "path": "package/python-future/python-future.hash",
    "content": "# md5, sha256 from https://pypi.python.org/pypi/future/json\nmd5\te4579c836b9c025872efe230f6270349  future-0.18.2.tar.gz\nsha256\tb1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d  future-0.18.2.tar.gz\n# Locally computed sha256 checksums\nsha256\t916e561392d48471b9c23437f56e2652f320cb3b119ceaa162edf41016f746b9  LICENSE.txt\n"
  },
  {
    "path": "package/python-future/python-future.mk",
    "content": "################################################################################\n#\n# python-future\n#\n################################################################################\n\nPYTHON_FUTURE_VERSION = 0.18.2\nPYTHON_FUTURE_SOURCE = future-$(PYTHON_FUTURE_VERSION).tar.gz\nPYTHON_FUTURE_SITE = https://files.pythonhosted.org/packages/45/0b/38b06fd9b92dc2b68d58b75f900e97884c45bedd2ff83203d933cf5851c9\nPYTHON_FUTURE_SETUP_TYPE = setuptools\nPYTHON_FUTURE_LICENSE = MIT\nPYTHON_FUTURE_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-futures/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_FUTURES\n\tbool \"python-futures\"\n\tdepends on BR2_PACKAGE_PYTHON # not needed for python3\n\thelp\n\t  Backport of the concurrent.futures package from Python 3.2.\n\n\t  https://github.com/agronholm/pythonfutures\n"
  },
  {
    "path": "package/python-futures/python-futures.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/futures/json\nmd5\tb43a39ae1475e3fd6940f2b4f7214675  futures-3.3.0.tar.gz\nsha256\t7e033af76a5e35f58e56da7a91e687706faf4e7bdfb2cbc3f2cca6b9bcda9794  futures-3.3.0.tar.gz\n# Locally computed sha256 checksums\nsha256\ta698bd5d441e4a16af6c992b8e80cbfa12755d72d910854fa1fb11d4deb0059a  LICENSE\n"
  },
  {
    "path": "package/python-futures/python-futures.mk",
    "content": "################################################################################\n#\n# python-futures\n#\n################################################################################\n\nPYTHON_FUTURES_VERSION = 3.3.0\nPYTHON_FUTURES_SOURCE = futures-$(PYTHON_FUTURES_VERSION).tar.gz\nPYTHON_FUTURES_SITE = https://files.pythonhosted.org/packages/47/04/5fc6c74ad114032cd2c544c575bffc17582295e9cd6a851d6026ab4b2c00\nPYTHON_FUTURES_SETUP_TYPE = setuptools\nPYTHON_FUTURES_LICENSE = BSD-2-Clause\nPYTHON_FUTURES_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-git/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_GIT\n\tbool \"python-git\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_USE_MMU # git\n\tselect BR2_PACKAGE_GIT # runtime\n\tselect BR2_PACKAGE_PYTHON_GITDB2 # runtime\n\tselect BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime\n\thelp\n\t  GitPython is a python library used to interact with git\n\t  repositories, high-level like git-porcelain, or low-level\n\t  like git-plumbing.\n\n\t  https://github.com/gitpython-developers/GitPython\n"
  },
  {
    "path": "package/python-git/python-git.hash",
    "content": "# locally computed hashes\nsha256  8282d0d1169a3a98546979bfae1524608670fadc4ca7636517aadd428e0cfbeb  python-git-3.1.24.tar.gz\nsha256  fd657ffc2cef63d25c78cab7808d414dd03a282e63893491fd11c32f98be67fb  LICENSE\n"
  },
  {
    "path": "package/python-git/python-git.mk",
    "content": "################################################################################\n#\n# python-git\n#\n################################################################################\n\nPYTHON_GIT_VERSION = 3.1.24\nPYTHON_GIT_SITE = $(call github,gitpython-developers,GitPython,$(PYTHON_GIT_VERSION))\nPYTHON_GIT_LICENSE = BSD-3-Clause\nPYTHON_GIT_LICENSE_FILES = LICENSE\nPYTHON_GIT_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-gitdb2/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_GITDB2\n\tbool \"python-gitdb2\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SMMAP2 # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB\n\thelp\n\t  GitDB allows you to access bare git repositories for reading\n\t  and writing. It aims at allowing full access to loose objects\n\t  as well as packs with performance and scalability in mind. It\n\t  operates exclusively on streams, allowing to handle large\n\t  objects with a small memory footprint.\n\n\t  https://github.com/gitpython-developers/gitdb\n"
  },
  {
    "path": "package/python-gitdb2/python-gitdb2.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/gitdb/json\nmd5\t3f52187435ab0b6e64a15782ffaf29ab  gitdb-4.0.7.tar.gz\nsha256\t96bf5c08b157a666fec41129e6d327235284cca4c81e92109260f353ba138005  gitdb-4.0.7.tar.gz\n# Locally computed sha256 checksums\nsha256\tefd29f596a08e8857e68e7694a50bcda72839792da7c3f041bcbff5f18009239  LICENSE\n"
  },
  {
    "path": "package/python-gitdb2/python-gitdb2.mk",
    "content": "################################################################################\n#\n# python-gitdb2\n#\n################################################################################\n\nPYTHON_GITDB2_VERSION = 4.0.7\nPYTHON_GITDB2_SOURCE = gitdb-$(PYTHON_GITDB2_VERSION).tar.gz\nPYTHON_GITDB2_SITE = https://files.pythonhosted.org/packages/34/fe/9265459642ab6e29afe734479f94385870e8702e7f892270ed6e52dd15bf\nPYTHON_GITDB2_SETUP_TYPE = setuptools\nPYTHON_GITDB2_LICENSE = BSD-3-Clause\nPYTHON_GITDB2_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-gobject/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_GOBJECT\n\tbool \"python-gobject\"\n\tdepends on BR2_USE_MMU # libglib2, gobject-introspection\n\tdepends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS # gobject-introspection\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # gobject-introspection\n\tdepends on BR2_HOST_GCC_AT_LEAST_8 # gobject-introspection -> host-qemu\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # gobject-introspection\n\tdepends on BR2_PACKAGE_PYTHON3 # gobject-introspection\n\tselect BR2_PACKAGE_GOBJECT_INTROSPECTION\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Python bindings for the GLib/GObject library\n\n\t  https://wiki.gnome.org/action/show/Projects/PyGObject\n\ncomment \"python-gobject needs a glibc toolchain, gcc >= 4.9, host gcc >= 8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_8\n"
  },
  {
    "path": "package/python-gobject/python-gobject.hash",
    "content": "# from http://ftp.gnome.org/pub/GNOME/sources/pygobject/3.42/pygobject-3.42.0.sha256sum\nsha256  9b12616e32cfc792f9dc841d9c472a41a35b85ba67d3a6eb427e307a6fe4367b  pygobject-3.42.0.tar.xz\nsha256  32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b  COPYING\n"
  },
  {
    "path": "package/python-gobject/python-gobject.mk",
    "content": "################################################################################\n#\n# python-gobject\n#\n################################################################################\n\nPYTHON_GOBJECT_VERSION_MAJOR = 3.42\nPYTHON_GOBJECT_VERSION = $(PYTHON_GOBJECT_VERSION_MAJOR).0\nPYTHON_GOBJECT_SOURCE = pygobject-$(PYTHON_GOBJECT_VERSION).tar.xz\nPYTHON_GOBJECT_SITE = https://ftp.gnome.org/pub/gnome/sources/pygobject/$(PYTHON_GOBJECT_VERSION_MAJOR)\nPYTHON_GOBJECT_LICENSE = LGPL-2.1+\nPYTHON_GOBJECT_LICENSE_FILES = COPYING\nPYTHON_GOBJECT_INSTALL_STAGING = YES\nPYTHON_GOBJECT_DEPENDENCIES = \\\n\tgobject-introspection \\\n\thost-pkgconf \\\n\tlibglib2 \\\n\tpython3\n\nPYTHON_GOBJECT_CONF_OPTS += \\\n\t-Dpycairo=disabled \\\n\t-Dtests=false\n\n# A sysconfigdata_name must be manually specified or the resulting .so\n# will have a x86_64 prefix, which causes \"import gi\" to fail.\n# A pythonpath must be specified or the host python path will be used resulting\n# in a \"not a valid python\" error.\nPYTHON_GOBJECT_CONF_ENV += \\\n\t_PYTHON_SYSCONFIGDATA_NAME=$(PKG_PYTHON_SYSCONFIGDATA_NAME) \\\n\tPYTHONPATH=$(PYTHON3_PATH)\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/python-gpiozero/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_GPIOZERO\n\tbool \"python-gpiozero\"\n\tdepends on BR2_arm\n\tdepends on BR2_PACKAGE_PYTHON3 # python-colorzero\n\tselect BR2_PACKAGE_PYTHON_COLORZERO # runtime\n\tselect BR2_PACKAGE_PYTHON_RPI_GPIO # runtime\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\thelp\n\t  A simple interface to GPIO devices with Raspberry Pi.\n\n\t  https://github.com/gpiozero/gpiozero\n"
  },
  {
    "path": "package/python-gpiozero/python-gpiozero.hash",
    "content": "# Locally computed\nsha256  7e6da923774437e24edc0c056e486415bace8c4ba4123c22ac4214147854ea6d  python-gpiozero-1.6.2.tar.gz\n# Locally computed\nsha256  b6fdd587f3dc3a9b8cc5adae00918e3ffa909b1092bd4decf7e8b1b08fa5d0fb  LICENSE.rst\n"
  },
  {
    "path": "package/python-gpiozero/python-gpiozero.mk",
    "content": "################################################################################\n#\n# python-gpiozero\n#\n################################################################################\n\nPYTHON_GPIOZERO_VERSION = 1.6.2\nPYTHON_GPIOZERO_SITE = $(call github,gpiozero,gpiozero,v$(PYTHON_GPIOZERO_VERSION))\nPYTHON_GPIOZERO_LICENSE = BSD-3-Clause\nPYTHON_GPIOZERO_LICENSE_FILES = LICENSE.rst\nPYTHON_GPIOZERO_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-greenlet/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_GREENLET_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_arm || BR2_armeb\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_csky\n\tdefault y if BR2_m68k\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdefault y if BR2_riscv\n\tdefault y if BR2_sparc || BR2_sparc64\n\tdefault y if BR2_i386 || BR2_x86_64\n\nconfig BR2_PACKAGE_PYTHON_GREENLET\n\tbool \"python-greenlet\"\n\tdepends on BR2_PACKAGE_PYTHON_GREENLET_ARCH_SUPPORTS\n\thelp\n\t  Lightweight in-process concurrent programming.\n\n\t  https://github.com/python-greenlet/greenlet\n"
  },
  {
    "path": "package/python-greenlet/python-greenlet.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/greenlet/json\nmd5  f424fbd9afeed575dd2ba5f0ac66e30b  greenlet-1.1.2.tar.gz\nsha256  e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a  greenlet-1.1.2.tar.gz\n# Locally computed sha256 checksums\nsha256  769831d6e5dfaf2c20802faccff1fafb4c2025dd8f6253dfa47fcad59d4d0979  LICENSE\nsha256  e5ff3c23c110e494cd7d736c10fd96d462457bafeca310840db6527298c7d46b  LICENSE.PSF\n"
  },
  {
    "path": "package/python-greenlet/python-greenlet.mk",
    "content": "################################################################################\n#\n# python-greenlet\n#\n################################################################################\n\nPYTHON_GREENLET_VERSION = 1.1.2\nPYTHON_GREENLET_SOURCE = greenlet-$(PYTHON_GREENLET_VERSION).tar.gz\nPYTHON_GREENLET_SITE = https://files.pythonhosted.org/packages/0c/10/754e21b5bea89d0e73f99d60c83754df7cc64db74f47d98ab187669ce341\nPYTHON_GREENLET_SETUP_TYPE = setuptools\nPYTHON_GREENLET_LICENSE = MIT, PSF-2.0\nPYTHON_GREENLET_LICENSE_FILES = LICENSE LICENSE.PSF\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-gunicorn/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_GUNICORN\n\tbool \"python-gunicorn\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON3_SSL # runtime\n\thelp\n\t  Gunicorn 'Green Unicorn' is a Python WSGI HTTP Server for\n\t  UNIX. It's a pre-fork worker model ported from Ruby's\n\t  Unicorn project. The Gunicorn server is broadly compatible\n\t  with various web frameworks, simply implemented, light on\n\t  server resource usage, and fairly speedy.\n\n\t  http://gunicorn.org/\n"
  },
  {
    "path": "package/python-gunicorn/python-gunicorn.hash",
    "content": "# md5, sha256 from https://pypi.python.org/pypi/gunicorn/json\nmd5  db8a7c5c2064000af70286534803bf1d  gunicorn-20.1.0.tar.gz\nsha256  e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8  gunicorn-20.1.0.tar.gz\n# Locally computed sha256\nsha256  789fe11b92e1cabfbcf744b5fcc392c9bd5c6798603a4e89f925b6337984d1df  LICENSE\n"
  },
  {
    "path": "package/python-gunicorn/python-gunicorn.mk",
    "content": "################################################################################\n#\n# python-gunicorn\n#\n################################################################################\n\nPYTHON_GUNICORN_VERSION = 20.1.0\nPYTHON_GUNICORN_SOURCE = gunicorn-$(PYTHON_GUNICORN_VERSION).tar.gz\nPYTHON_GUNICORN_SITE = https://files.pythonhosted.org/packages/28/5b/0d1f0296485a6af03366604142ea8f19f0833894db3512a40ed07b2a56dd\nPYTHON_GUNICORN_SETUP_TYPE = setuptools\nPYTHON_GUNICORN_LICENSE = MIT\nPYTHON_GUNICORN_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-h2/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_H2\n\tbool \"python-h2\"\n\tselect BR2_PACKAGE_PYTHON_HYPERFRAME # runtime\n\tselect BR2_PACKAGE_PYTHON_HPACK # runtime\n\thelp\n\t  HTTP/2 State-Machine based protocol implementation.\n\n\t  http://hyper.rtfd.org\n"
  },
  {
    "path": "package/python-h2/python-h2.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/h2/json\nmd5  197a99c09f344a0dd987fab9801dc8d0  h2-3.2.0.tar.gz\nsha256  875f41ebd6f2c44781259005b157faed1a5031df3ae5aa7bcb4628a6c0782f14  h2-3.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256  663f9253e13519b82ab4a6b1caab6bed05aada70517f28cd0254be8a9fa19ed6  LICENSE\n"
  },
  {
    "path": "package/python-h2/python-h2.mk",
    "content": "################################################################################\n#\n# python-h2\n#\n################################################################################\n\nPYTHON_H2_VERSION = 3.2.0\nPYTHON_H2_SOURCE = h2-$(PYTHON_H2_VERSION).tar.gz\nPYTHON_H2_SITE = https://files.pythonhosted.org/packages/08/0a/033df0fc05fe94f72517ccd393dd9ff99b1773fd198307638e6d3568a518\nPYTHON_H2_SETUP_TYPE = setuptools\nPYTHON_H2_LICENSE = MIT\nPYTHON_H2_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-hiredis/0001-setup.py-fix-build-with-gcc-4.8.patch",
    "content": "From 204898e28c7650089bf664eea8adfc16a22ba4f4 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 6 Apr 2021 10:37:49 +0200\nSubject: [PATCH] setup.py: fix build with gcc 4.8\n\nFix the following build failure on gcc 4.8 which is raised since version\n2.0.0 and\nhttps://github.com/redis/hiredis-py/commit/9084152f624e8e593b4e86ddf8bd13329fdfc043:\n\nvendor/hiredis/read.c: In function 'redisReaderFree':\nvendor/hiredis/read.c:646:9: error: 'for' loop initial declarations are only allowed in C99 mode\n         for (int i = 0; i < r->tasks; i++) {\n         ^\nvendor/hiredis/read.c:646:9: note: use option -std=c99 or -std=gnu99 to compile your code\n\nThis build failure is raised because hiredis source code is built\nwithout C99:\nhttps://github.com/redis/hiredis/commit/13a35bdb64615e381c5e1151cdd4e78bba71a6db\n\nFixes:\n - http://autobuild.buildroot.org/results/04cbcddf6d83ebad8c98400754f9445375e9e489\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/redis/hiredis-py/pull/110]\n---\n setup.py | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/setup.py b/setup.py\nindex d83153b..1f623c9 100755\n--- a/setup.py\n+++ b/setup.py\n@@ -13,6 +13,7 @@ def version():\n ext = Extension(\"hiredis.hiredis\",\n   sources=sorted(glob.glob(\"src/*.c\") +\n                  [\"vendor/hiredis/%s.c\" % src for src in (\"alloc\", \"read\", \"sds\")]),\n+  extra_compile_args=[\"-std=c99\"],\n   include_dirs=[\"vendor\"])\n \n setup(\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/python-hiredis/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_HIREDIS\n\tbool \"python-hiredis\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Python wrapper for hiredis.\n\n\t  https://github.com/redis/hiredis-py\n"
  },
  {
    "path": "package/python-hiredis/python-hiredis.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/hiredis/json\nmd5  0ab76a8b29deb737c9bfc7f631969e38  hiredis-2.0.0.tar.gz\nsha256  81d6d8e39695f2c37954d1011c0480ef7cf444d4e3ae24bc5e89ee5de360139a  hiredis-2.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256  70edfa6d3e11f9d7497c2c2f298d06f33b11d10f37f76605102c5ab3b1f28262  COPYING\nsha256  dca05ce8fc87a8261783b4aed0deef8becc9350b6aa770bc714d0c1833b896eb  vendor/hiredis/COPYING\n"
  },
  {
    "path": "package/python-hiredis/python-hiredis.mk",
    "content": "################################################################################\n#\n# python-hiredis\n#\n################################################################################\n\nPYTHON_HIREDIS_VERSION = 2.0.0\nPYTHON_HIREDIS_SOURCE = hiredis-$(PYTHON_HIREDIS_VERSION).tar.gz\nPYTHON_HIREDIS_SITE = https://files.pythonhosted.org/packages/0c/39/eae11344d69ba435ec13d6bcc1a9eea3d2278324506fcd0e52d1ed8958c8\nPYTHON_HIREDIS_SETUP_TYPE = setuptools\nPYTHON_HIREDIS_LICENSE = BSD-3-Clause\nPYTHON_HIREDIS_LICENSE_FILES = COPYING vendor/hiredis/COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-hpack/0001-Convert-HISTORY.rst-from-UTF-8-format-to-ASCII.patch",
    "content": "From 3d195f4f599f37c89419f1db1302f94acb38c264 Mon Sep 17 00:00:00 2001\nFrom: Yegor Yefremov <yegorslists@googlemail.com>\nDate: Tue, 1 Aug 2017 10:15:33 +0200\nSubject: [PATCH] Convert HISTORY.rst from UTF-8 format to ASCII\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nUTF-8 formatted file breaks installations on some systems:\n\nTraceback (most recent call last):\n  File \"setup.py\", line 34, in <module>\n    long_description=open('README.rst').read() + '\\n\\n' + open('HISTORY.rst').read(),\n  File \"/home/peko/autobuild/instance-1/output/target/usr/lib/python3.6/encodings/ascii.py\", line 26, in decode\n    return codecs.ascii_decode(input, self.errors)[0]\nUnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 1125: ordinal not in range(128)\n\nTo fix this error just replace '§' with 'S' meaning 'Section'.\n\nSigned-off-by: Yegor Yefremov <yegorslists@googlemail.com>\n---\n HISTORY.rst | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/HISTORY.rst b/HISTORY.rst\nindex 37b2d9c..b9310f5 100644\n--- a/HISTORY.rst\n+++ b/HISTORY.rst\n@@ -27,7 +27,7 @@ Release History\n - HPACK now tolerates receiving multiple header table size changes in sequence,\n   rather than only one.\n - HPACK now forbids header table size changes anywhere but first in a header\n-  block, as required by RFC 7541 § 4.2.\n+  block, as required by RFC 7541 S 4.2.\n - Other miscellaneous performance improvements.\n \n 2.3.0 (2016-08-04)\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/python-hpack/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_HPACK\n\tbool \"python-hpack\"\n\thelp\n\t  Pure-Python HPACK header compression.\n\n\t  http://hyper.rtfd.org\n"
  },
  {
    "path": "package/python-hpack/python-hpack.hash",
    "content": "# md5 from https://pypi.python.org/pypi/hpack/json\nmd5\t556b0ae66180f54c2ce8029a0952088b  hpack-3.0.0.tar.gz\n# Locally computed\nsha256\t8eec9c1f4bfae3408a3f30500261f7e6a65912dc138526ea054f9ad98892e9d2  hpack-3.0.0.tar.gz\nsha256  763a9342a04df62046c9dc748a5287934eb0a5331c6863b3ca0aee20e18cb4ed  LICENSE\n"
  },
  {
    "path": "package/python-hpack/python-hpack.mk",
    "content": "################################################################################\n#\n# python-hpack\n#\n################################################################################\n\nPYTHON_HPACK_VERSION = 3.0.0\nPYTHON_HPACK_SOURCE = hpack-$(PYTHON_HPACK_VERSION).tar.gz\nPYTHON_HPACK_SITE = https://pypi.python.org/packages/44/f1/b4440e46e265a29c0cb7b09b6daec6edf93c79eae713cfed93fbbf8716c5\nPYTHON_HPACK_SETUP_TYPE = setuptools\nPYTHON_HPACK_LICENSE = MIT\nPYTHON_HPACK_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-html5lib/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_HTML5LIB\n\tbool \"python-html5lib\"\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_WEBENCODINGS # runtime\n\thelp\n\t  HTML parser based on the WHATWG HTML specification.\n\n\t  https://github.com/html5lib/html5lib-python\n"
  },
  {
    "path": "package/python-html5lib/python-html5lib.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/html5lib/json\nmd5  6748742e2ec4cb99287a6bc82bcfe2b0  html5lib-1.1.tar.gz\nsha256  b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f  html5lib-1.1.tar.gz\n# Locally computed sha256 checksums\nsha256  16a39991619e92f18680932da2a9199fdf7d95df3ecaedc52ea06218aabafd6f  LICENSE\n"
  },
  {
    "path": "package/python-html5lib/python-html5lib.mk",
    "content": "################################################################################\n#\n# python-html5lib\n#\n################################################################################\n\nPYTHON_HTML5LIB_VERSION = 1.1\nPYTHON_HTML5LIB_SOURCE = html5lib-$(PYTHON_HTML5LIB_VERSION).tar.gz\nPYTHON_HTML5LIB_SITE = https://files.pythonhosted.org/packages/ac/b6/b55c3f49042f1df3dcd422b7f224f939892ee94f22abcf503a9b7339eaf2\nPYTHON_HTML5LIB_LICENSE = MIT\nPYTHON_HTML5LIB_LICENSE_FILES = LICENSE\nPYTHON_HTML5LIB_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-httplib2/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_HTTPLIB2\n\tbool \"python-httplib2\"\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_PYPARSING # runtime\n\thelp\n\t  httplib2 is a comprehensive HTTP client library, httplib2.py\n\t  supports many features left out of other HTTP libraries.\n\n\t  https://pypi.python.org/pypi/httplib2\n"
  },
  {
    "path": "package/python-httplib2/python-httplib2.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/httplib2/json\nmd5  de7f5e3a4adb3105889867327bdd39dc  httplib2-0.19.1.tar.gz\nsha256  0b12617eeca7433d4c396a100eaecfa4b08ee99aa881e6df6e257a7aad5d533d  httplib2-0.19.1.tar.gz\n# Locally computed sha256 checksums\nsha256  589eec38f72df2be203711d3b8cbece9b908c5e7ff00bc3cab7f63bae9e366b4  LICENSE\n"
  },
  {
    "path": "package/python-httplib2/python-httplib2.mk",
    "content": "################################################################################\n#\n# python-httplib2\n#\n################################################################################\n\nPYTHON_HTTPLIB2_VERSION = 0.19.1\nPYTHON_HTTPLIB2_SOURCE = httplib2-$(PYTHON_HTTPLIB2_VERSION).tar.gz\nPYTHON_HTTPLIB2_SITE = https://files.pythonhosted.org/packages/ed/cd/533a1e9e04671bcee5d2854b4f651a3fab9586d698de769d93b05ee2bff1\nPYTHON_HTTPLIB2_SETUP_TYPE = setuptools\nPYTHON_HTTPLIB2_LICENSE = MIT\nPYTHON_HTTPLIB2_LICENSE_FILES = LICENSE\nPYTHON_HTTPLIB2_CPE_ID_VENDOR = httplib2_project\nPYTHON_HTTPLIB2_CPE_ID_PRODUCT = httplib2\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-huepy/0001-fix-import-with-python3.patch",
    "content": "--- a/huepy/__init__.py\n+++ b/huepy/__init__.py\n@@ -1,4 +1,4 @@\n-from hue import COMMANDS\n+from .hue import COMMANDS\n \n __all__ = list(COMMANDS.keys())\n __version__ = '1.0.1'\n"
  },
  {
    "path": "package/python-huepy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_HUEPY\n\tbool \"python-huepy\"\n\thelp\n\t  Hue will help you to print awesomely in terminals.\n\n\t  https://github.com/s0md3v/hue\n"
  },
  {
    "path": "package/python-huepy/python-huepy.hash",
    "content": "# Locally computer sha256 checksums\nmd5\tda6514d9d61fb75ac9470f6863ce1aca  python-huepy-a9851d5aea10d2299cc62b3f6dce26ac4ef2ea3e.tar.gz\nsha256\t63147cef5ecae5c1ab38000be91def351710e6bef2c5f67b5303418becf6c0f2  python-huepy-a9851d5aea10d2299cc62b3f6dce26ac4ef2ea3e.tar.gz\nsha256  8b1ba204bb69a0ade2bfcf65ef294a920f6bb361b317dba43c7ef29d96332b9b  LICENSE\n"
  },
  {
    "path": "package/python-huepy/python-huepy.mk",
    "content": "################################################################################\n#\n# python-huepy\n#\n################################################################################\n\nPYTHON_HUEPY_VERSION = a9851d5aea10d2299cc62b3f6dce26ac4ef2ea3e\nPYTHON_HUEPY_SITE = $(call github,s0md3v,hue,$(PYTHON_HUEPY_VERSION))\nPYTHON_HUEPY_LICENSE = GPL-3.0\nPYTHON_HUEPY_LICENSE_FILES = LICENSE\nPYTHON_HUEPY_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-humanize/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_HUMANIZE\n\tbool \"python-humanize\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Python humanize package contains various common humanization\n\t  utilities, like turning a number into a fuzzy human readable\n\t  duration ('3 minutes ago') or into a human readable size or\n\t  throughput.\n\n\t  http://github.com/jmoiron/humanize\n"
  },
  {
    "path": "package/python-humanize/python-humanize.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/humanize/json\nmd5  04f5b334283e1f7f0dfeccf7d5a4b880  humanize-3.11.0.tar.gz\nsha256  4160cdc63fcd0daac27d2e1e218a31bb396fc3fe5712d153675d89432a03778f  humanize-3.11.0.tar.gz\n# Locally computed sha256 checksums\nsha256  8ba6c18112a431400ad3c743f70670079b302545d98884fc2f28a91c383a0380  LICENCE\n"
  },
  {
    "path": "package/python-humanize/python-humanize.mk",
    "content": "################################################################################\n#\n# python-humanize\n#\n################################################################################\n\nPYTHON_HUMANIZE_VERSION = 3.11.0\nPYTHON_HUMANIZE_SOURCE = humanize-$(PYTHON_HUMANIZE_VERSION).tar.gz\nPYTHON_HUMANIZE_SITE = https://files.pythonhosted.org/packages/a6/d0/e06993724937f2aab3e7085d137d453968aaac0f74661ef9c90528a79d61\nPYTHON_HUMANIZE_SETUP_TYPE = setuptools\nPYTHON_HUMANIZE_LICENSE = MIT\nPYTHON_HUMANIZE_LICENSE_FILES = LICENCE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-hyperframe/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_HYPERFRAME\n\tbool \"python-hyperframe\"\n\thelp\n\t  HTTP/2 framing layer for Python.\n\n\t  http://hyper.rtfd.org\n"
  },
  {
    "path": "package/python-hyperframe/python-hyperframe.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/hyperframe/json\nmd5\t6919183242feb26d8bce3b4cba81defd  hyperframe-5.2.0.tar.gz\nsha256\ta9f5c17f2cc3c719b917c4f33ed1c61bd1f8dfac4b1bd23b7c80b3400971b41f  hyperframe-5.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t763a9342a04df62046c9dc748a5287934eb0a5331c6863b3ca0aee20e18cb4ed  LICENSE\n"
  },
  {
    "path": "package/python-hyperframe/python-hyperframe.mk",
    "content": "################################################################################\n#\n# python-hyperframe\n#\n################################################################################\n\nPYTHON_HYPERFRAME_VERSION = 5.2.0\nPYTHON_HYPERFRAME_SOURCE = hyperframe-$(PYTHON_HYPERFRAME_VERSION).tar.gz\nPYTHON_HYPERFRAME_SITE = https://files.pythonhosted.org/packages/e6/7f/9a4834af1010dc1d570d5f394dfd9323a7d7ada7d25586bd299fc4cb0356\nPYTHON_HYPERFRAME_SETUP_TYPE = setuptools\nPYTHON_HYPERFRAME_LICENSE = MIT\nPYTHON_HYPERFRAME_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-hyperlink/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_HYPERLINK\n\tbool \"python-hyperlink\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-idna\n\tselect BR2_PACKAGE_PYTHON_IDNA # runtime\n\thelp\n\t  A featureful, correct URL for Python.\n\n\t  https://github.com/python-hyper/hyperlink\n"
  },
  {
    "path": "package/python-hyperlink/python-hyperlink.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/hyperlink/json\nmd5  6285ac13e7d6be4157698ad7960ed490  hyperlink-21.0.0.tar.gz\nsha256  427af957daa58bc909471c6c40f74c5450fa123dd093fc53efd2e91d2705a56b  hyperlink-21.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256  7468ded55310f64fbf085b8e892df81d1bcc49263bf535d3c2c58b014cfae214  LICENSE\n"
  },
  {
    "path": "package/python-hyperlink/python-hyperlink.mk",
    "content": "################################################################################\n#\n# python-hyperlink\n#\n################################################################################\n\nPYTHON_HYPERLINK_VERSION = 21.0.0\nPYTHON_HYPERLINK_SOURCE = hyperlink-$(PYTHON_HYPERLINK_VERSION).tar.gz\nPYTHON_HYPERLINK_SITE = https://files.pythonhosted.org/packages/3a/51/1947bd81d75af87e3bb9e34593a4cf118115a8feb451ce7a69044ef1412e\nPYTHON_HYPERLINK_SETUP_TYPE = setuptools\nPYTHON_HYPERLINK_LICENSE = MIT\nPYTHON_HYPERLINK_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ibmiotf/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IBMIOTF\n\tbool \"python-ibmiotf\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-requests -> python-idna\n\tselect BR2_PACKAGE_PYTHON_ISO8601 # runtime\n\tselect BR2_PACKAGE_PYTHON_PAHO_MQTT # runtime\n\tselect BR2_PACKAGE_PYTHON_PYTZ # runtime\n\tselect BR2_PACKAGE_PYTHON_REQUESTS # runtime\n\tselect BR2_PACKAGE_PYTHON_REQUESTS_TOOLBELT # runtime\n\tselect BR2_PACKAGE_PYTHON3_SSL # runtime\n\thelp\n\t  Python Client for IBM Watson IoT Platform.\n\n\t  https://github.com/ibm-watson-iot/iot-python\n"
  },
  {
    "path": "package/python-ibmiotf/python-ibmiotf.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ibmiotf/json\nmd5\ta103427c15b2bc96d72de5e58975638c  ibmiotf-0.4.0.tar.gz\nsha256\t753a29858d48ebd89aff8b73c207028814714d8a004a3c19b436c9bbeaa65ce6  ibmiotf-0.4.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t2c153c48f67e56031036fc28d12f76238a5151494bdfc24b6b81ec734c387a2d  LICENSE\n"
  },
  {
    "path": "package/python-ibmiotf/python-ibmiotf.mk",
    "content": "################################################################################\n#\n# python-ibmiotf\n#\n################################################################################\n\nPYTHON_IBMIOTF_VERSION = 0.4.0\nPYTHON_IBMIOTF_SOURCE = ibmiotf-$(PYTHON_IBMIOTF_VERSION).tar.gz\nPYTHON_IBMIOTF_SITE = https://files.pythonhosted.org/packages/78/05/029ca6f78b788a3c55157fd11bb63922d002d75df982ffb8243f450a750e\nPYTHON_IBMIOTF_SETUP_TYPE = setuptools\nPYTHON_IBMIOTF_LICENSE = EPL-1.0\nPYTHON_IBMIOTF_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-id3/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ID3\n\tbool \"python-id3\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  This module allows one to read and manipulate so-called ID3\n\t  informational tags on MP3 files through an object-oriented\n\t  Python interface.\n\n\t  http://id3-py.sourceforge.net/\n"
  },
  {
    "path": "package/python-id3/python-id3.hash",
    "content": "# Locally computed:\nsha256  ba612342b59a49cbf9a7eb23a646667757ffda96dc23b67245fc6cd8d90c2022  id3-py_1.2.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/python-id3/python-id3.mk",
    "content": "################################################################################\n#\n# python-id3\n#\n################################################################################\n\nPYTHON_ID3_VERSION = 1.2\nPYTHON_ID3_SOURCE = id3-py_$(PYTHON_ID3_VERSION).tar.gz\nPYTHON_ID3_SITE = http://downloads.sourceforge.net/project/id3-py/id3-py/$(PYTHON_ID3_VERSION)\nPYTHON_ID3_SETUP_TYPE = distutils\nPYTHON_ID3_LICENSE = GPL-2.0+\nPYTHON_ID3_LICENSE_FILES = COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-idna/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IDNA\n\tbool \"python-idna\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON3_UNICODEDATA\n\thelp\n\t  A library to support the Internationalised Domain Names in\n\t  Applications (IDNA) protocol as specified in RFC 5891. This\n\t  version of the protocol is often referred to as 'IDNA2008'\n\t  and can produce different results from the earlier standard\n\t  from 2003.\n\n\t  https://github.com/kjd/idna\n"
  },
  {
    "path": "package/python-idna/python-idna.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/idna/json\nmd5  08ea8e2ce09e522424e872409c221138  idna-3.2.tar.gz\nsha256  467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3  idna-3.2.tar.gz\n# Locally computed sha256 checksums\nsha256  a2d6e4d940bd24dbe7b9645cde19a9792cc51db7ae0d5acd301ac860caa3e836  LICENSE.md\n"
  },
  {
    "path": "package/python-idna/python-idna.mk",
    "content": "################################################################################\n#\n# python-idna\n#\n################################################################################\n\nPYTHON_IDNA_VERSION = 3.2\nPYTHON_IDNA_SOURCE = idna-$(PYTHON_IDNA_VERSION).tar.gz\nPYTHON_IDNA_SITE = https://files.pythonhosted.org/packages/cb/38/4c4d00ddfa48abe616d7e572e02a04273603db446975ab46bbcd36552005\nPYTHON_IDNA_LICENSE = BSD-3-Clause\nPYTHON_IDNA_LICENSE_FILES = LICENSE.md\nPYTHON_IDNA_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-idna-ssl/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IDNA_SSL\n\tbool \"python-idna-ssl\"\n\thelp\n\t  Patch ssl.match_hostname for Unicode(idna) domains support.\n\n\t  https://github.com/aio-libs/idna-ssl\n"
  },
  {
    "path": "package/python-idna-ssl/python-idna-ssl.hash",
    "content": "sha256\ta933e3bb13da54383f9e8f35dc4f9cb9eb9b3b78c6b36f311254d6d0d92c6c7c  idna-ssl-1.1.0.tar.gz\n\n"
  },
  {
    "path": "package/python-idna-ssl/python-idna-ssl.mk",
    "content": "################################################################################\n#\n# python-idna-ssl\n#\n################################################################################\n\nPYTHON_IDNA_SSL_VERSION = 1.1.0\nPYTHON_IDNA_SSL_SOURCE = idna-ssl-$(PYTHON_IDNA_SSL_VERSION).tar.gz\nPYTHON_IDNA_SSL_SITE = https://files.pythonhosted.org/packages/46/03/07c4894aae38b0de52b52586b24bf189bb83e4ddabfe2e2c8f2419eec6f4\nPYTHON_IDNA_SSL_LICENSE =  BSD-3-Clause\nPYTHON_IDNA_SSL_LICENSE_FILES = LICENSE.rst\nPYTHON_IDNA_SSL_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ifaddr/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IFADDR\n\tbool \"python-ifaddr\"\n\thelp\n\t  Enumerates all IP addresses on all network adapters of the\n\t  system.\n\n\t  https://github.com/pydron/ifaddr\n"
  },
  {
    "path": "package/python-ifaddr/python-ifaddr.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ifaddr/json\nmd5  97c4eb7505643b5f1fe17733cb42abd9  ifaddr-0.1.7.tar.gz\nsha256  1f9e8a6ca6f16db5a37d3356f07b6e52344f6f9f7e806d618537731669eb1a94  ifaddr-0.1.7.tar.gz\n# Locally computed sha256 checksums\nsha256  8700856576ae2bc80c63bc970250510d9213fb02fed006d5f22742c9ddde24d7  LICENSE.txt\n"
  },
  {
    "path": "package/python-ifaddr/python-ifaddr.mk",
    "content": "################################################################################\n#\n# python-ifaddr\n#\n################################################################################\n\nPYTHON_IFADDR_VERSION = 0.1.7\nPYTHON_IFADDR_SOURCE = ifaddr-$(PYTHON_IFADDR_VERSION).tar.gz\nPYTHON_IFADDR_SITE = https://files.pythonhosted.org/packages/3d/fc/4ce147e3997cd0ea470ad27112087545cf83bf85015ddb3054673cb471bb\nPYTHON_IFADDR_SETUP_TYPE = setuptools\nPYTHON_IFADDR_LICENSE = MIT\nPYTHON_IFADDR_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-incremental/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_INCREMENTAL\n\tbool \"python-incremental\"\n\thelp\n\t  A library for versioning your Python projects.\n\n\t  https://github.com/twisted/incremental\n"
  },
  {
    "path": "package/python-incremental/python-incremental.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/incremental/json\nmd5  9f7ad12e0c05a12cee52a7350976c4e3  incremental-21.3.0.tar.gz\nsha256  02f5de5aff48f6b9f665d99d48bfc7ec03b6e3943210de7cfc88856d755d6f57  incremental-21.3.0.tar.gz\n# Locally computed sha256 checksums\nsha256  d043bc8899b4695de1f4511d8f507b927e11723b981ce600fa3ef7b73954afa5  LICENSE\n"
  },
  {
    "path": "package/python-incremental/python-incremental.mk",
    "content": "################################################################################\n#\n# python-incremental\n#\n################################################################################\n\nPYTHON_INCREMENTAL_VERSION = 21.3.0\nPYTHON_INCREMENTAL_SOURCE = incremental-$(PYTHON_INCREMENTAL_VERSION).tar.gz\nPYTHON_INCREMENTAL_SITE = https://files.pythonhosted.org/packages/4f/c5/430765c697afc217c8491785de321a21fa4d983dda14bcd82feb965b0593\nPYTHON_INCREMENTAL_SETUP_TYPE = setuptools\nPYTHON_INCREMENTAL_LICENSE = MIT\nPYTHON_INCREMENTAL_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-inflection/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_INFLECTION\n\tbool \"python-inflection\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON3_UNICODEDATA\n\thelp\n\t  A string transformation library that singularizes and\n\t  pluralizes English words, and transforms strings from\n\t  CamelCase to underscored string.\n\n\t  Inflection is a port of Ruby on Rails' inflector to Python\n\n\t  https://github.com/jpvanhal/inflection\n"
  },
  {
    "path": "package/python-inflection/python-inflection.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/inflection/json\nmd5  c3287d4f0e3bdf625a52d655cc514403  inflection-0.5.1.tar.gz\nsha256  1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417  inflection-0.5.1.tar.gz\n# Locally computed sha256 checksums\nsha256  9e9f9b4b2e7543ad1486f1328bf9ec50e5a5e2bb9caceb59652496dd61e64133  LICENSE\n"
  },
  {
    "path": "package/python-inflection/python-inflection.mk",
    "content": "################################################################################\n#\n# python-inflection\n#\n################################################################################\n\nPYTHON_INFLECTION_VERSION = 0.5.1\nPYTHON_INFLECTION_SOURCE = inflection-$(PYTHON_INFLECTION_VERSION).tar.gz\nPYTHON_INFLECTION_SITE = https://files.pythonhosted.org/packages/e1/7e/691d061b7329bc8d54edbf0ec22fbfb2afe61facb681f9aaa9bff7a27d04\nPYTHON_INFLECTION_SETUP_TYPE = setuptools\nPYTHON_INFLECTION_LICENSE = MIT\nPYTHON_INFLECTION_LICENSE_FILES = LICENSE\nHOST_PYTHON_INFLECTION_NEEDS_HOST_PYTHON = python3\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-influxdb/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_INFLUXDB\n\tbool \"python-influxdb\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-requests -> python-idna\n\tselect BR2_PACKAGE_PYTHON_DATEUTIL # runtime\n\tselect BR2_PACKAGE_PYTHON_MSGPACK # runtime\n\tselect BR2_PACKAGE_PYTHON_PYTZ # runtime\n\tselect BR2_PACKAGE_PYTHON_REQUESTS # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  InfluxDB client.\n\n\t  https://github.com/influxdb/influxdb-python\n"
  },
  {
    "path": "package/python-influxdb/python-influxdb.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/influxdb/json\nmd5  d528c8ccd8ab40bc608ad1e507e7788a  influxdb-5.3.0.tar.gz\nsha256  9bcaafd57ac152b9824ab12ed19f204206ef5df8af68404770554c5b55b475f6  influxdb-5.3.0.tar.gz\n# Locally computed sha256 checksums\nsha256  b654917e2c25a69d2bd56e72dddbc6eb29bf7e40384d7c46bb291d5c5185213b  LICENSE\n"
  },
  {
    "path": "package/python-influxdb/python-influxdb.mk",
    "content": "################################################################################\n#\n# python-influxdb\n#\n################################################################################\n\nPYTHON_INFLUXDB_VERSION = 5.3.0\nPYTHON_INFLUXDB_SOURCE = influxdb-$(PYTHON_INFLUXDB_VERSION).tar.gz\nPYTHON_INFLUXDB_SITE = https://files.pythonhosted.org/packages/be/8d/85ec8f11299a6dfc115244db71fd8f13e9a69f5e9eb77dc3392f4f959e9a\nPYTHON_INFLUXDB_SETUP_TYPE = setuptools\nPYTHON_INFLUXDB_LICENSE = MIT\nPYTHON_INFLUXDB_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-iniconfig/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_INICONFIG\n\tbool \"python-iniconfig\"\n\thelp\n\t  iniconfig: brain-dead simple config-ini parsing.\n\n\t  http://github.com/RonnyPfannschmidt/iniconfig\n"
  },
  {
    "path": "package/python-iniconfig/python-iniconfig.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/iniconfig/json\nmd5  0b7f3be87481211c183eae095bcea6f1  iniconfig-1.1.1.tar.gz\nsha256  bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32  iniconfig-1.1.1.tar.gz\n# Locally computed sha256 checksums\nsha256  2af680c39ef493fb82830356d1d3df1acb5a06033cba2dec7a19e21caa77a866  LICENSE\n"
  },
  {
    "path": "package/python-iniconfig/python-iniconfig.mk",
    "content": "################################################################################\n#\n# python-iniconfig\n#\n################################################################################\n\nPYTHON_INICONFIG_VERSION = 1.1.1\nPYTHON_INICONFIG_SOURCE = iniconfig-$(PYTHON_INICONFIG_VERSION).tar.gz\nPYTHON_INICONFIG_SITE = https://files.pythonhosted.org/packages/23/a2/97899f6bd0e873fed3a7e67ae8d3a08b21799430fb4da15cfedf10d6e2c2\nPYTHON_INICONFIG_SETUP_TYPE = setuptools\nPYTHON_INICONFIG_LICENSE = MIT\nPYTHON_INICONFIG_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-iniparse/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_INIPARSE\n\tbool \"python-iniparse\"\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  iniparse is an INI parser for Python which is API compatible\n\t  with the standard library's ConfigParser, preserves\n\t  structure of INI files (order of sections & options,\n\t  indentation, comments, and blank lines are preserved when\n\t  data is updated), and is more convenient to use.\n\n\t  https://pypi.python.org/pypi/iniparse\n"
  },
  {
    "path": "package/python-iniparse/python-iniparse.hash",
    "content": "# From https://pypi.org/project/iniparse/#copy-hash-modal-5fdd923b-0592-4d2d-8b49-03472f948290\nmd5 2054bab923df21107652d009f2373789 iniparse-0.5.tar.gz\nsha256  932e5239d526e7acb504017bb707be67019ac428a6932368e6851691093aa842  iniparse-0.5.tar.gz\n\n# sha256 locally computed\nsha256  ff45637d8a96adc414179e502fbed40160e57205bf2e302140e79a0c71eceaa7  LICENSE\nsha256  9b02e3dfe433ccd2bd94636ef6eb08638b5a54deafe5f87a3d9d9104356c48e0  LICENSE-PSF\n"
  },
  {
    "path": "package/python-iniparse/python-iniparse.mk",
    "content": "################################################################################\n#\n# python-iniparse\n#\n################################################################################\n\nPYTHON_INIPARSE_VERSION = 0.5\nPYTHON_INIPARSE_SOURCE = iniparse-$(PYTHON_INIPARSE_VERSION).tar.gz\nPYTHON_INIPARSE_SITE = https://pypi.python.org/packages/source/i/iniparse\nPYTHON_INIPARSE_LICENSE = Python-2.0, MIT\nPYTHON_INIPARSE_LICENSE_FILES = LICENSE-PSF LICENSE\nPYTHON_INIPARSE_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-intelhex/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_INTELHEX\n\tbool \"python-intelhex\"\n\thelp\n\t  Python library for Intel HEX files manipulations.\n\n\t  https://github.com/python-intelhex/intelhex\n"
  },
  {
    "path": "package/python-intelhex/python-intelhex.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/intelhex/json\nmd5  9de0e92c1b66f75322581c8b22c020c2  intelhex-2.3.0.tar.gz\nsha256  892b7361a719f4945237da8ccf754e9513db32f5628852785aea108dcd250093  intelhex-2.3.0.tar.gz\n# Locally computed sha256 checksums\nsha256  1b2eb032ab8a1b0266f7995c76e44509f89ca9c0e90ec507763b5e735aca7de4  LICENSE.txt\n"
  },
  {
    "path": "package/python-intelhex/python-intelhex.mk",
    "content": "################################################################################\n#\n# python-intelhex\n#\n################################################################################\n\nPYTHON_INTELHEX_VERSION = 2.3.0\nPYTHON_INTELHEX_SOURCE = intelhex-$(PYTHON_INTELHEX_VERSION).tar.gz\nPYTHON_INTELHEX_SITE = https://files.pythonhosted.org/packages/66/37/1e7522494557d342a24cb236e2aec5d078fac8ed03ad4b61372586406b01\nPYTHON_INTELHEX_SETUP_TYPE = setuptools\nPYTHON_INTELHEX_LICENSE = BSD-3-Clause\nPYTHON_INTELHEX_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-iowait/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IOWAIT\n\tbool \"python-iowait\"\n\thelp\n\t  Platform-independent module for I/O completion events.\n\n\t  https://launchpad.net/python-iowait\n"
  },
  {
    "path": "package/python-iowait/python-iowait.hash",
    "content": "# md5 from https://pypi.python.org/pypi/iowait/json, sha256 locally computed\nmd5\tf49ca7766fe4a67e03a731e575614f87  iowait-0.2.tar.gz\nsha256\tab1bc2eb84c22ccf61f17a0024f9fb6df781b39f1852764a66a7769d5adfb299  iowait-0.2.tar.gz\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING.LESSER\n"
  },
  {
    "path": "package/python-iowait/python-iowait.mk",
    "content": "################################################################################\n#\n# python-iowait\n#\n################################################################################\n\nPYTHON_IOWAIT_VERSION = 0.2\nPYTHON_IOWAIT_SOURCE = iowait-$(PYTHON_IOWAIT_VERSION).tar.gz\nPYTHON_IOWAIT_SITE = https://pypi.python.org/packages/65/30/e953673fe9619938e9c74408401cf865f37716da89f61f6e5d9328c0f71e\nPYTHON_IOWAIT_SETUP_TYPE = distutils\nPYTHON_IOWAIT_LICENSE = LGPL-3.0+\nPYTHON_IOWAIT_LICENSE_FILES = COPYING.LESSER\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ipaddr/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IPADDR\n\tbool \"python-ipaddr\"\n\tdepends on BR2_PACKAGE_PYTHON # included since python3.3\n\thelp\n\t  An IPv4/IPv6 manipulation library in Python. This library is\n\t  used to create/poke/manipulate IPv4 and IPv6 addresses and\n\t  prefixes.\n\n\t  https://github.com/google/ipaddr-py\n"
  },
  {
    "path": "package/python-ipaddr/python-ipaddr.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ipaddr/json\nmd5\tf88353e40dec06410acfa075b8209b27  ipaddr-2.2.0.tar.gz\nsha256\t4092dfe667588d16aa12b59acb7c8a4024e5dcb23a681cd0b0b602373eca88d6  ipaddr-2.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t175b3b509d5c840db72ad8c22d22a690d15c67b317f34de8a8bb0a66059e8215  COPYING\n"
  },
  {
    "path": "package/python-ipaddr/python-ipaddr.mk",
    "content": "################################################################################\n#\n# python-ipaddr\n#\n################################################################################\n\nPYTHON_IPADDR_VERSION = 2.2.0\nPYTHON_IPADDR_SOURCE = ipaddr-$(PYTHON_IPADDR_VERSION).tar.gz\nPYTHON_IPADDR_SITE = https://files.pythonhosted.org/packages/9d/a7/1b39a16cb90dfe491f57e1cab3103a15d4e8dd9a150872744f531b1106c1\nPYTHON_IPADDR_SETUP_TYPE = distutils\nPYTHON_IPADDR_LICENSE = Apache-2.0\nPYTHON_IPADDR_LICENSE_FILES = COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ipaddress/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IPADDRESS\n\tbool \"python-ipaddress\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  Python 3.3's ipaddress for older Python versions.\n\n\t  https://github.com/phihag/ipaddress\n"
  },
  {
    "path": "package/python-ipaddress/python-ipaddress.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ipaddress/json\nmd5\taaee67a8026782af1831148beb0d9060  ipaddress-1.0.23.tar.gz\nsha256\tb7f8e0369580bb4a24d5ba1d7cc29660a4a6987763faf1d8a8046830e020e7e2  ipaddress-1.0.23.tar.gz\n# Locally computed sha256 checksums\nsha256\t38675419eb4a79ec616396d70f1254b3a433fb7088fb3f4cc9b6c0bcdcec6162  LICENSE\n"
  },
  {
    "path": "package/python-ipaddress/python-ipaddress.mk",
    "content": "################################################################################\n#\n# python-ipaddress\n#\n################################################################################\n\nPYTHON_IPADDRESS_VERSION = 1.0.23\nPYTHON_IPADDRESS_SOURCE = ipaddress-$(PYTHON_IPADDRESS_VERSION).tar.gz\nPYTHON_IPADDRESS_SITE = https://files.pythonhosted.org/packages/b9/9a/3e9da40ea28b8210dd6504d3fe9fe7e013b62bf45902b458d1cdc3c34ed9\nPYTHON_IPADDRESS_LICENSE = Python-2.0\nPYTHON_IPADDRESS_LICENSE_FILES = LICENSE\nPYTHON_IPADDRESS_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ipdb/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IPDB\n\tbool \"python-ipdb\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-ipython\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_IPYTHON # runtime\n\thelp\n\t  IPython-enabled pdb.\n\n\t  https://github.com/gotcha/ipdb\n"
  },
  {
    "path": "package/python-ipdb/python-ipdb.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ipdb/json\nmd5  4f5ffb71cd6551319acf8cbceabd8936  ipdb-0.13.9.tar.gz\nsha256  951bd9a64731c444fd907a5ce268543020086a697f6be08f7cc2c9a752a278c5  ipdb-0.13.9.tar.gz\n# Locally computed sha256 checksums\nsha256  4eeb49de04f4894f8ea1f69a04f500799041b750b3d554c06de5ca877258e734  COPYING.txt\n"
  },
  {
    "path": "package/python-ipdb/python-ipdb.mk",
    "content": "################################################################################\n#\n# python-ipdb\n#\n################################################################################\n\nPYTHON_IPDB_VERSION = 0.13.9\nPYTHON_IPDB_SOURCE = ipdb-$(PYTHON_IPDB_VERSION).tar.gz\nPYTHON_IPDB_SITE = https://files.pythonhosted.org/packages/fc/56/9f67dcd4a4b9960373173a31be1b8c47fe351a1c9385677a7bdd82810e57\nPYTHON_IPDB_SETUP_TYPE = setuptools\nPYTHON_IPDB_LICENSE = BSD-3-Clause\nPYTHON_IPDB_LICENSE_FILES = COPYING.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-iptables/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IPTABLES\n\tbool \"python-iptables\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_IPTABLES # runtime dependency\n\thelp\n\t  Python bindings for iptables.\n\n\t  https://github.com/ldx/python-iptables\n\ncomment \"python-iptables needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/python-iptables/python-iptables.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/python-iptables/json\nmd5  3fb27da1107bdb62196850fa70e8b0d4  python-iptables-1.0.0.tar.gz\nsha256  480470adb5f29bf84269b4e53dbad9623af91c79aa666cc0274dec199a555bc5  python-iptables-1.0.0.tar.gz\n\n# Locally calculated\nsha256  b827789c74144d9bb92595ed3bc568aef767a7e8d930fba61c2cdd9f6ec27599  NOTICE\n"
  },
  {
    "path": "package/python-iptables/python-iptables.mk",
    "content": "################################################################################\n#\n# python-iptables\n#\n################################################################################\n\nPYTHON_IPTABLES_VERSION = 1.0.0\nPYTHON_IPTABLES_SITE = https://files.pythonhosted.org/packages/ca/6e/cba9c6f4b5a1963b7f5b015f5ed5e2eec7a94ac460570e3474177c4004d6\nPYTHON_IPTABLES_SETUP_TYPE = setuptools\nPYTHON_IPTABLES_LICENSE = Apache-2.0\nPYTHON_IPTABLES_LICENSE_FILES = NOTICE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ipy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IPY\n\tbool \"python-ipy\"\n\thelp\n\t  IPy - class and tools for handling of IPv4 and\n\t  IPv6 addresses and networks.\n\n\t  https://github.com/haypo/python-ipy/\n"
  },
  {
    "path": "package/python-ipy/python-ipy.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ipy/json\nmd5  d6cf83e7f418ebbd23324ba1c658b907  IPy-1.01.tar.gz\nsha256  edeca741dea2d54aca568fa23740288c3fe86c0f3ea700344571e9ef14a7cc1a  IPy-1.01.tar.gz\n# Locally computed sha256 checksums\nsha256  078bb46799e46e51e7239c24ff130d345db911c11efafef5e3c45dfb7adb0a61  COPYING\n"
  },
  {
    "path": "package/python-ipy/python-ipy.mk",
    "content": "################################################################################\n#\n# python-ipy\n#\n################################################################################\n\nPYTHON_IPY_VERSION = 1.01\nPYTHON_IPY_SOURCE = IPy-$(PYTHON_IPY_VERSION).tar.gz\nPYTHON_IPY_SITE = https://files.pythonhosted.org/packages/64/a4/9c0d88d95666ff1571d7baec6c5e26abc08051801feb6e6ddf40f6027e22\nPYTHON_IPY_LICENSE = BSD-3-Clause\nPYTHON_IPY_LICENSE_FILES = COPYING\nPYTHON_IPY_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ipython/0001-set-correct-python-executable-path.patch",
    "content": "Set correct Python executable path\n\nSigned-off-by: Philippe Proulx <eeppeliteloop@gmail.com>\n\n--- python-ipython-2.1.0/setupbase.py\t2014-05-21 15:19:12.000000000 -0400\n+++ python-ipython-2.1.0-new/setupbase.py\t2014-07-23 23:34:32.892030423 -0400\n@@ -394,7 +394,7 @@ class build_scripts_entrypt(build_script\n \n             mod, func = entrypt.split(':')\n             with open(outfile, 'w') as f:\n-                f.write(script_src.format(executable=sys.executable,\n+                f.write(script_src.format(executable='/usr/bin/env python',\n                                           mod=mod, func=func))\n \n         return outfiles, outfiles\n"
  },
  {
    "path": "package/python-ipython/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IPYTHON\n\tbool \"python-ipython\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_BACKCALL # runtime\n\tselect BR2_PACKAGE_PYTHON_DECORATOR # runtime\n\tselect BR2_PACKAGE_PYTHON_JEDI # runtime\n\tselect BR2_PACKAGE_PYTHON_PICKLESHARE # runtime\n\tselect BR2_PACKAGE_PYTHON_PROMPT_TOOLKIT # runtime\n\tselect BR2_PACKAGE_PYTHON_PYGMENTS  # runtime\n\tselect BR2_PACKAGE_PYTHON_PEXPECT # runtime\n\tselect BR2_PACKAGE_PYTHON_TRAITLETS  # runtime\n\thelp\n\t  IPython is a command shell for interactive computing in\n\t  multiple programming languages, originally developed for the\n\t  Python programming language, that offers enhanced\n\t  introspection, rich media, additional shell syntax, tab\n\t  completion, and rich history.\n\n\t  http://ipython.org/\n"
  },
  {
    "path": "package/python-ipython/python-ipython.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ipython/json\nmd5  f733048322cd34ce392ec5404813540b  ipython-7.28.0.tar.gz\nsha256  2097be5c814d1b974aea57673176a924c4c8c9583890e7a5f082f547b9975b11  ipython-7.28.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t341afcbd729887b7046fe7b98fc4f4edff3aed8d38f06eefd9b30670f043df17 COPYING.rst\nsha256\te0e390748ed440ab893ca1f135a88a920aaf5409dbb90a5b427c75c5e51268fb  LICENSE\n"
  },
  {
    "path": "package/python-ipython/python-ipython.mk",
    "content": "################################################################################\n#\n# python-ipython\n#\n################################################################################\n\nPYTHON_IPYTHON_VERSION = 7.28.0\nPYTHON_IPYTHON_SOURCE = ipython-$(PYTHON_IPYTHON_VERSION).tar.gz\nPYTHON_IPYTHON_SITE = https://files.pythonhosted.org/packages/e2/c8/7046d0409a90e31263d5bbaa708347d522ac584a1140c01a951d9deb1792\nPYTHON_IPYTHON_LICENSE = BSD-3-Clause\nPYTHON_IPYTHON_LICENSE_FILES = COPYING.rst LICENSE\nPYTHON_IPYTHON_CPE_ID_VENDOR = ipython\nPYTHON_IPYTHON_CPE_ID_PRODUCT = ipython\nPYTHON_IPYTHON_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ipython-genutils/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IPYTHON_GENUTILS\n\tbool \"python-ipython-genutils\"\n\thelp\n\t  IPython vestigial utilities\n\n\t  https://pypi.python.org/pypi/ipython_genutils\n"
  },
  {
    "path": "package/python-ipython-genutils/python-ipython-genutils.hash",
    "content": "# md5 from https://pypi.python.org/pypi/ipython_genutils/json\nmd5 5a4f9781f78466da0ea1a648f3e1f79f ipython_genutils-0.2.0.tar.gz\n# Locally computed\nsha256  eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8  ipython_genutils-0.2.0.tar.gz\nsha256  f09da6c0f4971485f6fbd6c630d0d6cdd012bfe128b2ebbd014de2f6c7c7e2a6  COPYING.md\n"
  },
  {
    "path": "package/python-ipython-genutils/python-ipython-genutils.mk",
    "content": "################################################################################\n#\n# python-ipython-genutils\n#\n################################################################################\n\nPYTHON_IPYTHON_GENUTILS_VERSION = 0.2.0\nPYTHON_IPYTHON_GENUTILS_SOURCE = ipython_genutils-$(PYTHON_IPYTHON_GENUTILS_VERSION).tar.gz\nPYTHON_IPYTHON_GENUTILS_SITE = https://pypi.python.org/packages/e8/69/fbeffffc05236398ebfcfb512b6d2511c622871dca1746361006da310399\nPYTHON_IPYTHON_GENUTILS_LICENSE = BSD-3-Clause\nPYTHON_IPYTHON_GENUTILS_LICENSE_FILES = COPYING.md\nPYTHON_IPYTHON_GENUTILS_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-iso8601/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ISO8601\n\tbool \"python-iso8601\"\n\thelp\n\t  Simple module to parse ISO 8601 dates.\n\n\t  https://github.com/micktwomey/pyiso8601\n"
  },
  {
    "path": "package/python-iso8601/python-iso8601.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/iso8601/json\nmd5  d6fe8ccc847aaf8ac965da3b6023e697  iso8601-0.1.14.tar.gz\nsha256  8aafd56fa0290496c5edbb13c311f78fa3a241f0853540da09d9363eae3ebd79  iso8601-0.1.14.tar.gz\n# Locally computed sha256 checksums\nsha256  116d368d14a8cf0061027c944c60ee20b476ce42814818a7d627396906761f16  LICENSE\n"
  },
  {
    "path": "package/python-iso8601/python-iso8601.mk",
    "content": "################################################################################\n#\n# python-iso8601\n#\n################################################################################\n\nPYTHON_ISO8601_VERSION = 0.1.14\nPYTHON_ISO8601_SOURCE = iso8601-$(PYTHON_ISO8601_VERSION).tar.gz\nPYTHON_ISO8601_SITE = https://files.pythonhosted.org/packages/f9/ed/b97abc7877e5b253eef96a469f47d617b0ebcccc735405fa1a620c7ee833\nPYTHON_ISO8601_SETUP_TYPE = setuptools\nPYTHON_ISO8601_LICENSE = MIT\nPYTHON_ISO8601_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-itsdangerous/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ITSDANGEROUS\n\tbool \"python-itsdangerous\"\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  Itsdangerous contains various helpers to pass data to\n\t  untrusted environments and to get it back safe and sound.\n\n\t  http://pythonhosted.org/itsdangerous/\n"
  },
  {
    "path": "package/python-itsdangerous/python-itsdangerous.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/itsdangerous/json\nmd5\t9b7f5afa7f1e3acfb7786eeca3d99307  itsdangerous-1.1.0.tar.gz\nsha256\t321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19  itsdangerous-1.1.0.tar.gz\nsha256\tfeb28bfa348d816b0e7dbaeddf18499ee7e8007c67813db8d6ab37c65e046cd4  LICENSE.rst\n"
  },
  {
    "path": "package/python-itsdangerous/python-itsdangerous.mk",
    "content": "################################################################################\n#\n# python-itsdangerous\n#\n################################################################################\n\nPYTHON_ITSDANGEROUS_VERSION = 1.1.0\nPYTHON_ITSDANGEROUS_SOURCE = itsdangerous-$(PYTHON_ITSDANGEROUS_VERSION).tar.gz\nPYTHON_ITSDANGEROUS_SITE = https://files.pythonhosted.org/packages/68/1a/f27de07a8a304ad5fa817bbe383d1238ac4396da447fa11ed937039fa04b\nPYTHON_ITSDANGEROUS_SETUP_TYPE = setuptools\nPYTHON_ITSDANGEROUS_LICENSE = BSD-3-Clause\nPYTHON_ITSDANGEROUS_LICENSE_FILES = LICENSE.rst\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-iwlib/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_IWLIB\n\tbool \"python-iwlib\"\n\tdepends on BR2_PACKAGE_WIRELESS_TOOLS_LIB\n\thelp\n\t  python-iwlib is a package for interfacing with iwlib,\n\t  providing an implementation to the wireless tools in Linux.\n\n\t  https://github.com/nhoad/python-iwlib\n"
  },
  {
    "path": "package/python-iwlib/python-iwlib.hash",
    "content": "# Locally calculated\nsha256  7f1ad4354284a452388e178b5d9b191fa5a68a9183423a90a1d261ba2ebd1cac  python-iwlib-1.5.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/python-iwlib/python-iwlib.mk",
    "content": "################################################################################\n#\n# python-iwlib\n#\n################################################################################\n\nPYTHON_IWLIB_VERSION = 1.5\nPYTHON_IWLIB_SITE = $(call github,nhoad,python-iwlib,$(PYTHON_IWLIB_VERSION))\nPYTHON_IWLIB_LICENSE = GPL-2.0\nPYTHON_IWLIB_LICENSE_FILES = COPYING\nPYTHON_IWLIB_SETUP_TYPE = setuptools\nPYTHON_IWLIB_DEPENDENCIES = wireless_tools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-janus/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_JANUS\n\tbool \"python-janus\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Mixed sync-async queue to interoperate between asyncio\n\t  tasks and classic threads.\n\n\t  https://github.com/aio-libs/janus/\n"
  },
  {
    "path": "package/python-janus/python-janus.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/janus/json\nmd5  dad6a03e7664cb800ce45ef8bcf12439  janus-0.6.1.tar.gz\nsha256  4712e0ef75711fe5947c2db855bc96221a9a03641b52e5ae8e25c2b705dd1d0c  janus-0.6.1.tar.gz\n# Locally computed sha256 checksums\nsha256  8b177cccb6ddec12a9fc97bd49e7e2bbcd92464625624bd8bdbfad799ae606e9  LICENSE\n"
  },
  {
    "path": "package/python-janus/python-janus.mk",
    "content": "################################################################################\n#\n# python-janus\n#\n################################################################################\n\nPYTHON_JANUS_VERSION = 0.6.1\nPYTHON_JANUS_SOURCE = janus-$(PYTHON_JANUS_VERSION).tar.gz\nPYTHON_JANUS_SITE = https://files.pythonhosted.org/packages/7c/1b/8769c2dca84dd8ca92e48b14750c7106ff4313df4fee651dbc3cd9e345a9\nPYTHON_JANUS_SETUP_TYPE = setuptools\nPYTHON_JANUS_LICENSE = Apache-2.0\nPYTHON_JANUS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-jaraco-classes/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_JARACO_CLASSES\n\tbool \"python-jaraco-classes\"\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Utility functions for Python class constructs.\n\n\t  https://github.com/jaraco/jaraco.classes\n"
  },
  {
    "path": "package/python-jaraco-classes/python-jaraco-classes.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/jaraco.classes/json\nmd5     63d4f5a2df2625ec3979c9633da1505e  jaraco.classes-2.0.tar.gz\nsha256  dcc2c4a8ca4b344cdbf2e1be7124a5c4f192574cdbb453b62350ae8240a2caf5  jaraco.classes-2.0.tar.gz\n# Locally computed sha256 checksums\nsha256  a55e2ffe9b44998e621d51d8c094bed09acc4b5236ee73d7df395a33ba3c18fd  LICENSE\n"
  },
  {
    "path": "package/python-jaraco-classes/python-jaraco-classes.mk",
    "content": "################################################################################\n#\n# python-jaraco-classes\n#\n################################################################################\n\nPYTHON_JARACO_CLASSES_VERSION = 2.0\nPYTHON_JARACO_CLASSES_SOURCE = jaraco.classes-$(PYTHON_JARACO_CLASSES_VERSION).tar.gz\nPYTHON_JARACO_CLASSES_SITE = https://files.pythonhosted.org/packages/6e/27/f6ce0863a6ce574922ffe70d63c40b9771aefb686cb595cf435d184f0ca3\nPYTHON_JARACO_CLASSES_LICENSE = MIT\nPYTHON_JARACO_CLASSES_LICENSE_FILES = LICENSE\nPYTHON_JARACO_CLASSES_SETUP_TYPE = setuptools\nPYTHON_JARACO_CLASSES_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-jaraco-functools/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_JARACO_FUNCTOOLS\n\tbool \"python-jaraco-functools\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-more-itertools\n\tselect BR2_PACKAGE_PYTHON_MORE_ITERTOOLS # runtime\n\thelp\n\t  Additional functools in the spirit of stdlib’s\n\t  functools.\n\n\t  https://github.com/jaraco/jaraco.functools\n"
  },
  {
    "path": "package/python-jaraco-functools/python-jaraco-functools.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/jaraco.functools/json\nmd5     c245ade3e753bc556415f1fec102f232  jaraco.functools-2.0.tar.gz\nsha256  35ba944f52b1a7beee8843a5aa6752d1d5b79893eeb7770ea98be6b637bf9345  jaraco.functools-2.0.tar.gz\n# Locally computed sha256 checksums\nsha256  a55e2ffe9b44998e621d51d8c094bed09acc4b5236ee73d7df395a33ba3c18fd  LICENSE\n"
  },
  {
    "path": "package/python-jaraco-functools/python-jaraco-functools.mk",
    "content": "################################################################################\n#\n# python-jaraco-functools\n#\n################################################################################\n\nPYTHON_JARACO_FUNCTOOLS_VERSION = 2.0\nPYTHON_JARACO_FUNCTOOLS_SOURCE = jaraco.functools-$(PYTHON_JARACO_FUNCTOOLS_VERSION).tar.gz\nPYTHON_JARACO_FUNCTOOLS_SITE = https://files.pythonhosted.org/packages/a9/1e/44f6a5cffef147a3ffd37a748b8f4c2ded9b07ca20a15f17cd9874158f24\nPYTHON_JARACO_FUNCTOOLS_LICENSE = MIT\nPYTHON_JARACO_FUNCTOOLS_LICENSE_FILES = LICENSE\nPYTHON_JARACO_FUNCTOOLS_SETUP_TYPE = setuptools\nPYTHON_JARACO_FUNCTOOLS_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-jedi/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_JEDI\n\tbool \"python-jedi\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_PARSO # runtime\n\thelp\n\t  An autocompletion tool for Python that can be used for text\n\t  editors.\n\n\t  https://github.com/davidhalter/jedi\n"
  },
  {
    "path": "package/python-jedi/python-jedi.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/jedi/json\nmd5  72707c00e8d6d0b190a5e5664be1cac5  jedi-0.18.0.tar.gz\nsha256  92550a404bad8afed881a137ec9a461fed49eca661414be45059329614ed0707  jedi-0.18.0.tar.gz\n# Locally computed sha256 checksums\nsha256  78e60cd0b8f28694f30195482c33d76908d846b0d15278deb7332aa22ba8e412  LICENSE.txt\nsha256  235e993965d399a25e7d493d25c8622f78718510884b9c051f1f1866b6f34e9d  jedi/third_party/django-stubs/LICENSE.txt\nsha256  b41b78f562a2e65b75cab44354335f6f435d4ef73065509600ac910cf4e22fe0  jedi/third_party/typeshed/LICENSE\n"
  },
  {
    "path": "package/python-jedi/python-jedi.mk",
    "content": "################################################################################\n#\n# python-jedi\n#\n################################################################################\n\nPYTHON_JEDI_VERSION = 0.18.0\nPYTHON_JEDI_SOURCE = jedi-$(PYTHON_JEDI_VERSION).tar.gz\nPYTHON_JEDI_SITE = https://files.pythonhosted.org/packages/ac/11/5c542bf206efbae974294a61febc61e09d74cb5d90d8488793909db92537\nPYTHON_JEDI_SETUP_TYPE = setuptools\nPYTHON_JEDI_LICENSE = MIT, Apache-2.0 (typeshed)\nPYTHON_JEDI_LICENSE_FILES = LICENSE.txt jedi/third_party/django-stubs/LICENSE.txt jedi/third_party/typeshed/LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-jinja2/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_JINJA2\n\tbool \"python-jinja2\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_MARKUPSAFE # runtime\n\tselect BR2_PACKAGE_PYTHON3_UNICODEDATA\n\thelp\n\t  Jinja2 is a template engine written in pure Python. It\n\t  provides a Django inspired non-XML syntax but supports\n\t  inline expressions and an optional sandboxed environment.\n\n\t  https://jinja.palletsprojects.com\n"
  },
  {
    "path": "package/python-jinja2/python-jinja2.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/jinja2/json\nmd5  d31148abd89c1df1cdb077a55db27d02  Jinja2-3.1.2.tar.gz\nsha256  31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852  Jinja2-3.1.2.tar.gz\n# Locally computed sha256 checksums\nsha256  3b49dcee4105eb37bac10faf1be260408fe85d252b8e9df2e0979fc1e094437b  LICENSE.rst\n"
  },
  {
    "path": "package/python-jinja2/python-jinja2.mk",
    "content": "################################################################################\n#\n# python-jinja2\n#\n################################################################################\n\nPYTHON_JINJA2_VERSION = 3.1.2\nPYTHON_JINJA2_SOURCE = Jinja2-$(PYTHON_JINJA2_VERSION).tar.gz\nPYTHON_JINJA2_SITE = https://files.pythonhosted.org/packages/7a/ff/75c28576a1d900e87eb6335b063fab47a8ef3c8b4d88524c4bf78f670cce\nPYTHON_JINJA2_SETUP_TYPE = setuptools\nPYTHON_JINJA2_LICENSE = BSD-3-Clause\nPYTHON_JINJA2_LICENSE_FILES = LICENSE.rst\nPYTHON_JINJA2_CPE_ID_VENDOR = pocoo\nPYTHON_JINJA2_CPE_ID_PRODUCT = jinja2\n\n# In host/target build, setup.py tries to download markupsafe if it is not installed\nPYTHON_JINJA2_DEPENDENCIES = host-python-markupsafe\nHOST_PYTHON_JINJA2_DEPENDENCIES = host-python-markupsafe\n\nHOST_PYTHON_JINJA2_NEEDS_HOST_PYTHON = python3\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-jmespath/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_JMESPATH\n\tbool \"python-jmespath\"\n\thelp\n\t  JMESPath is a query language for JSON.\n\n\t  https://github.com/jmespath/jmespath.py\n"
  },
  {
    "path": "package/python-jmespath/python-jmespath.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/jmespath/json\nmd5  65bdcb5fa5bcf1cc710ffa508e78e408  jmespath-0.10.0.tar.gz\nsha256  b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9  jmespath-0.10.0.tar.gz\n# Locally computed sha256 checksums\nsha256  66b313cce80ed0623fc7db3f24863a0c80fd83eb341a46b57864158ae74faa56  LICENSE.txt\n"
  },
  {
    "path": "package/python-jmespath/python-jmespath.mk",
    "content": "################################################################################\n#\n# python-jmespath\n#\n################################################################################\n\nPYTHON_JMESPATH_VERSION = 0.10.0\nPYTHON_JMESPATH_SOURCE = jmespath-$(PYTHON_JMESPATH_VERSION).tar.gz\nPYTHON_JMESPATH_SITE = https://files.pythonhosted.org/packages/3c/56/3f325b1eef9791759784aa5046a8f6a1aff8f7c898a2e34506771d3b99d8\nPYTHON_JMESPATH_SETUP_TYPE = setuptools\nPYTHON_JMESPATH_LICENSE = MIT\nPYTHON_JMESPATH_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-json-schema-validator/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_JSON_SCHEMA_VALIDATOR\n\tbool \"python-json-schema-validator\"\n\thelp\n\t  JSON Schema Validator\n\n\t  https://pypi.python.org/pypi/json-schema-validator\n"
  },
  {
    "path": "package/python-json-schema-validator/python-json-schema-validator.hash",
    "content": "# md5 from https://pypi.python.org/pypi/json-schema-validator/json, sha256 locally computed\nmd5\t7691b41739faaa8b0965279e72889932  json-schema-validator-2.4.1.tar.gz\nsha256\t1562a21d83e56231cef09b9aa2c06e8f845974bd26f24be293de6cab9a2fac91  json-schema-validator-2.4.1.tar.gz\n"
  },
  {
    "path": "package/python-json-schema-validator/python-json-schema-validator.mk",
    "content": "################################################################################\n#\n# python-json-schema-validator\n#\n################################################################################\n\nPYTHON_JSON_SCHEMA_VALIDATOR_VERSION = 2.4.1\nPYTHON_JSON_SCHEMA_VALIDATOR_SOURCE = json-schema-validator-$(PYTHON_JSON_SCHEMA_VALIDATOR_VERSION).tar.gz\nPYTHON_JSON_SCHEMA_VALIDATOR_SITE = https://pypi.python.org/packages/70/46/ba39cb7efad1898cfc89bf3588b8612f24d128f1c25b761994f524a59cef\nPYTHON_JSON_SCHEMA_VALIDATOR_LICENSE = LGPL-3.0\nPYTHON_JSON_SCHEMA_VALIDATOR_SETUP_TYPE = setuptools\nPYTHON_JSON_SCHEMA_VALIDATOR_DEPENDENCIES = host-python-versiontools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-jsonmodels/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_JSONMODELS\n\tbool \"python-jsonmodels\"\n\tselect BR2_PACKAGE_PYTHON_DATEUTIL # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Models to make easier to deal with structures that are\n\t  converted to, or read from JSON.\n\n\t  https://github.com/beregond/jsonmodels\n"
  },
  {
    "path": "package/python-jsonmodels/python-jsonmodels.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/jsonmodels/json\nmd5\t96132e252887f840d23792c03fad2039  jsonmodels-2.4.tar.gz\nsha256\tabc8dc334a1794513e511a75639f77c271ef6a2992b6793f3753c7335dd18775  jsonmodels-2.4.tar.gz\n# Locally computed sha256 checksums\nsha256\t3b1219763eec6924ddd4c4d61dee6a53c5fc9ab62707a9ad763ee363d3050cc5  LICENSE\n"
  },
  {
    "path": "package/python-jsonmodels/python-jsonmodels.mk",
    "content": "################################################################################\n#\n# python-jsonmodels\n#\n################################################################################\n\nPYTHON_JSONMODELS_VERSION = 2.4\nPYTHON_JSONMODELS_SOURCE = jsonmodels-$(PYTHON_JSONMODELS_VERSION).tar.gz\nPYTHON_JSONMODELS_SITE = https://files.pythonhosted.org/packages/68/00/524668dc751f9ef91e73c795b2073bf2ddb79728a474d1bcab9c6dc426d8\nPYTHON_JSONMODELS_SETUP_TYPE = setuptools\nPYTHON_JSONMODELS_LICENSE = BSD-3-Clause\nPYTHON_JSONMODELS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-jsonpointer/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_JSONPOINTER\n\tbool \"python-jsonpointer\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Resolve JSON Pointers in Python.\n\n\t  https://github.com/stefankoegl/python-json-pointer\n"
  },
  {
    "path": "package/python-jsonpointer/python-jsonpointer.hash",
    "content": "sha256\tc192ba86648e05fdae4f08a17ec25180a9aef5008d973407b581798a83975362  jsonpointer-2.0.tar.gz\n"
  },
  {
    "path": "package/python-jsonpointer/python-jsonpointer.mk",
    "content": "################################################################################\n#\n# python-jsonpointer\n#\n################################################################################\n\nPYTHON_JSONPOINTER_VERSION = 2.0\nPYTHON_JSONPOINTER_SOURCE = jsonpointer-$(PYTHON_JSONPOINTER_VERSION).tar.gz\nPYTHON_JSONPOINTER_SITE = https://files.pythonhosted.org/packages/52/e7/246d9ef2366d430f0ce7bdc494ea2df8b49d7a2a41ba51f5655f68cfe85f\nPYTHON_JSONPOINTER_SETUP_TYPE = setuptools\nPYTHON_JSONPOINTER_LICENSE = BSD\nPYTHON_JSONPOINTER_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-jsonschema/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_JSONSCHEMA\n\tbool \"python-jsonschema\"\n\tselect BR2_PACKAGE_PYTHON_FUNCTOOLS32 if BR2_PACKAGE_PYTHON # runtime\n\thelp\n\t  An implementation of JSON Schema validation for Python.\n\n\t  http://github.com/Julian/jsonschema\n"
  },
  {
    "path": "package/python-jsonschema/python-jsonschema.hash",
    "content": "# md5 from https://pypi.python.org/pypi/jsonschema/json\nmd5\t374e848fdb69a3ce8b7e778b47c30640  jsonschema-2.5.1.tar.gz\n# Locally computed\nsha256\t36673ac378feed3daa5956276a829699056523d7961027911f064b52255ead41  jsonschema-2.5.1.tar.gz\nsha256  4f92a015a13c4d1a040bef018aa13430b4f1bc73b41b16bb846c346766de7439  COPYING\nsha256  837402bd25fad9b704265801ca3f92566a98157c1f9a7acd6f446299ba1c305a  json/LICENSE\n"
  },
  {
    "path": "package/python-jsonschema/python-jsonschema.mk",
    "content": "################################################################################\n#\n# python-jsonschema\n#\n################################################################################\n\nPYTHON_JSONSCHEMA_VERSION = 2.5.1\nPYTHON_JSONSCHEMA_SOURCE = jsonschema-$(PYTHON_JSONSCHEMA_VERSION).tar.gz\nPYTHON_JSONSCHEMA_SITE = https://pypi.python.org/packages/58/0d/c816f5ea5adaf1293a1d81d32e4cdfdaf8496973aa5049786d7fdb14e7e7\nPYTHON_JSONSCHEMA_SETUP_TYPE = setuptools\nPYTHON_JSONSCHEMA_LICENSE = MIT\nPYTHON_JSONSCHEMA_LICENSE_FILES = COPYING json/LICENSE\nPYTHON_JSONSCHEMA_DEPENDENCIES = host-python-vcversioner\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-keyring/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_KEYRING\n\tbool \"python-keyring\"\n\t# python-secretstorage -> python-cryptography\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_ENTRYPOINTS # runtime\n\tselect BR2_PACKAGE_PYTHON_SECRETSTORAGE # runtime\n\thelp\n\t  The Python keyring lib provides a easy way to access the\n\t  system keyring service from Python.\n\n\t  https://pypi.python.org/pypi/keyring\n"
  },
  {
    "path": "package/python-keyring/python-keyring.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/keyring/json\nmd5\t1eb6d586ee5794de4bf39c1f513a3139  keyring-19.2.0.tar.gz\nsha256\t91037ccaf0c9a112a76f7740e4a416b9457a69b66c2799421581bee710a974b3  keyring-19.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256  a55e2ffe9b44998e621d51d8c094bed09acc4b5236ee73d7df395a33ba3c18fd  LICENSE\n"
  },
  {
    "path": "package/python-keyring/python-keyring.mk",
    "content": "################################################################################\n#\n# python-keyring\n#\n################################################################################\n\nPYTHON_KEYRING_VERSION = 19.2.0\nPYTHON_KEYRING_SOURCE = keyring-$(PYTHON_KEYRING_VERSION).tar.gz\nPYTHON_KEYRING_SITE = https://files.pythonhosted.org/packages/ee/46/77fdb7cd2b0f1f684afbc35a59b3d7ebb6961fe528f97b86900002968914\nPYTHON_KEYRING_SETUP_TYPE = setuptools\nPYTHON_KEYRING_LICENSE = MIT\nPYTHON_KEYRING_LICENSE_FILES = LICENSE\nPYTHON_KEYRING_CPE_ID_VENDOR = python\nPYTHON_KEYRING_CPE_ID_PRODUCT = keyring\nPYTHON_KEYRING_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-kiwisolver/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_KIWISOLVER\n\tbool \"python-kiwisolver\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Kiwi is an efficient C++ implementation of the Cassowary\n\t  constraint solving algorithm. Kiwi is an implementation of\n\t  the algorithm based on the seminal Cassowary paper. It is\n\t  not a refactoring of the original C++ solver. Kiwi has been\n\t  designed from the ground up to be lightweight and fast. Kiwi\n\t  ranges from 10x to 500x faster than the original Cassowary\n\t  solver with typical use cases gaining a 40x\n\t  improvement. Memory savings are consistently > 5x.\n\n\t  https://github.com/nucleic/kiwi\n\ncomment \"python-kiwisolver needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/python-kiwisolver/python-kiwisolver.hash",
    "content": "# Locally calculated\nsha256 48168c0ace18319c649e31907f6d8586f648e503560f506f128798b99393bcdb  python-kiwisolver-1.1.0.tar.gz\nsha256 95c32f73d43fa54d8146badbcbd73b83acb7fa2cc81a7cef7784b3cd33b146a0  LICENSE\n"
  },
  {
    "path": "package/python-kiwisolver/python-kiwisolver.mk",
    "content": "################################################################################\n#\n# python-kiwisolver\n#\n################################################################################\n\nPYTHON_KIWISOLVER_VERSION = 1.1.0\nPYTHON_KIWISOLVER_SITE = $(call github,nucleic,kiwi,$(PYTHON_KIWISOLVER_VERSION))\nPYTHON_KIWISOLVER_LICENSE = BSD-3-Clause\nPYTHON_KIWISOLVER_LICENSE_FILES = LICENSE\nPYTHON_KIWISOLVER_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-libconfig/Config.in",
    "content": "comment \"python-libconfig needs a glibc or uClibc toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_PYTHON_LIBCONFIG\n\tbool \"python-libconfig\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# error: invalid use of incomplete type 'struct _IO_FILE'\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_PYTHON\n\tselect BR2_PACKAGE_LIBCONFIG\n\thelp\n\t  Python bindings to the C++ library libconfig\n\n\t  Libconfig is a simple library for manipulating structured\n\t  configuration files. The file format is more compact and more\n\t  readable than XML. And unlike XML, it is type-aware, so it is\n\t  not necessary to do string parsing in application code.\n\t  http://www.hyperrealm.com/libconfig/\n\n\t  https://github.com/cnangel/python-libconfig\n"
  },
  {
    "path": "package/python-libconfig/python-libconfig.hash",
    "content": "# locally computed\nsha256  f4cfb7e60b8fcee32ca3392c99932c579038db0852c1c2c42d7c4b859eea3c5c  python-libconfig-b271c3d9dac938ad5cd29b67bd08cc5536a5a391.tar.gz\nsha256  7e47579751c8125eaa031fd10b197d3956d231323598a42612f30abf19c7fed0  README\n"
  },
  {
    "path": "package/python-libconfig/python-libconfig.mk",
    "content": "################################################################################\n#\n# python-libconfig\n#\n################################################################################\n\nPYTHON_LIBCONFIG_VERSION = b271c3d9dac938ad5cd29b67bd08cc5536a5a391\nPYTHON_LIBCONFIG_SITE = $(call github,cnangel,python-libconfig,$(PYTHON_LIBCONFIG_VERSION))\n\nPYTHON_LIBCONFIG_LICENSE = BSD\nPYTHON_LIBCONFIG_LICENSE_FILES = README\n\nPYTHON_LIBCONFIG_SETUP_TYPE = setuptools\n\nPYTHON_LIBCONFIG_DEPENDENCIES = libconfig boost\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\nPYTHON_LIBCONFIG_PYVER = $(PYTHON_VERSION_MAJOR)\nelse ifeq ($(BR2_PACKAGE_PYTHON3),y)\nPYTHON_LIBCONFIG_PYVER = $(PYTHON3_VERSION_MAJOR)\nendif\n\ndefine PYTHON_LIBCONFIG_FIX_SETUP\n\t$(SED) 's/boost_python/boost_python$(subst .,,$(PYTHON_LIBCONFIG_PYVER))/g' \\\n\t\t$(@D)/setup.py\nendef\nPYTHON_LIBCONFIG_POST_PATCH_HOOKS += PYTHON_LIBCONFIG_FIX_SETUP\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-libusb1/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_LIBUSB1\n\tbool \"python-libusb1\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Pure-python wrapper for libusb-1.0.\n\n\t  http://github.com/vpelletier/python-libusb1\n\ncomment \"python-libusb1 needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/python-libusb1/python-libusb1.hash",
    "content": "# md5 from https://pypi.python.org/pypi/libusb1/json, sha256 locally computed\nmd5  b087646fb0c8c4cf7e8123af72f885b9  libusb1-2.0.1.tar.gz\nsha256  d3ba82ecf7ab6a48d21dac6697e26504670cc3522b8e5941bd28fb56cf3f6c46  libusb1-2.0.1.tar.gz\nsha256\tdc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LESSER\n"
  },
  {
    "path": "package/python-libusb1/python-libusb1.mk",
    "content": "################################################################################\n#\n# python-libusb1\n#\n################################################################################\n\nPYTHON_LIBUSB1_VERSION = 2.0.1\nPYTHON_LIBUSB1_SOURCE = libusb1-$(PYTHON_LIBUSB1_VERSION).tar.gz\nPYTHON_LIBUSB1_SITE = https://files.pythonhosted.org/packages/a9/97/e8afa2af12b6de608ec86c8c4ad57f1248d98946d1b5e1aa0bff926755e9\nPYTHON_LIBUSB1_SETUP_TYPE = setuptools\nPYTHON_LIBUSB1_LICENSE = LGPL-2.1+\nPYTHON_LIBUSB1_LICENSE_FILES = COPYING.LESSER\nPYTHON_LIBUSB1_DEPENDENCIES = libusb\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-lmdb/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_LMDB\n\tbool \"python-lmdb\"\n\tselect BR2_PACKAGE_PYTHON_CFFI # runtime\n\thelp\n\t  Universal Python binding for the LMDB 'Lightning' Database.\n\n\t  https://pypi.python.org/pypi/lmdb\n"
  },
  {
    "path": "package/python-lmdb/python-lmdb.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/lmdb/json\nmd5  b8f4a2cd1748e8a5f5e352d1cb3d4350  lmdb-1.2.1.tar.gz\nsha256  5f76a90ebd08922acca11948779b5055f7a262687178e9e94f4e804b9f8465bc  lmdb-1.2.1.tar.gz\n# Locally computed sha256 checksums\nsha256\t310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569  LICENSE\n"
  },
  {
    "path": "package/python-lmdb/python-lmdb.mk",
    "content": "################################################################################\n#\n# python-lmdb\n#\n################################################################################\n\nPYTHON_LMDB_VERSION = 1.2.1\nPYTHON_LMDB_SOURCE = lmdb-$(PYTHON_LMDB_VERSION).tar.gz\nPYTHON_LMDB_SITE = https://files.pythonhosted.org/packages/2f/df/3aea5279753cb8ab0c96dec43106e24f388d4179d5224f6d3e652016c095\nPYTHON_LMDB_LICENSE = OLDAP-2.8\nPYTHON_LMDB_LICENSE_FILES = LICENSE\nPYTHON_LMDB_SETUP_TYPE = setuptools\nPYTHON_LMDB_DEPENDENCIES = host-python-cffi\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-lockfile/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_LOCKFILE\n\tbool \"python-lockfile\"\n\thelp\n\t  The lockfile package exports a LockFile class which provides a\n\t  simple API for locking files. Unlike the Windows\n\t  msvcrt.locking function, the fcntl.lockf and flock functions,\n\t  and the deprecated posixfile module, the API is identical\n\t  across both Unix (including Linux and Mac) and Windows\n\t  platforms.\n\n\t  The lock mechanism relies on the atomic nature of the link\n\t  (on Unix) and mkdir (on Windows) system calls. An\n\t  implementation based on SQLite is also provided, more as a\n\t  demonstration of the possibilities it provides than as\n\t  production-quality code.\n\n\t  https://pypi.org/project/lockfile/\n"
  },
  {
    "path": "package/python-lockfile/python-lockfile.hash",
    "content": "# md5, sha256 from https://pypi.org/project/lockfile/#copy-hash-modal-3c1db9ec-dd6e-4d06-8543-91094f428ac0\nmd5\ta6a1a82957a23afdf44cfdd039b65ff9  lockfile-0.12.2.tar.gz\nsha256\t6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799  lockfile-0.12.2.tar.gz\n# Locally computed sha256\nsha256 a26276d53dacb369641f31aa0fe37216028a0d93753f862ae206ce04f54b7b29 LICENSE\n"
  },
  {
    "path": "package/python-lockfile/python-lockfile.mk",
    "content": "################################################################################\n#\n# python-lockfile\n#\n################################################################################\n\nPYTHON_LOCKFILE_VERSION = 0.12.2\nPYTHON_LOCKFILE_SOURCE = lockfile-$(PYTHON_LOCKFILE_VERSION).tar.gz\nPYTHON_LOCKFILE_SITE = https://files.pythonhosted.org/packages/17/47/72cb04a58a35ec495f96984dddb48232b551aafb95bde614605b754fe6f7\nPYTHON_LOCKFILE_SETUP_TYPE = setuptools\nPYTHON_LOCKFILE_LICENSE = MIT\nPYTHON_LOCKFILE_LICENSE_FILES = LICENSE\nPYTHON_LOCKFILE_DEPENDENCIES = host-python-pbr\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-logbook/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_LOGBOOK\n\tbool \"python-logbook\"\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3\n\thelp\n\t  A logging replacement for Python.\n\n\t  http://logbook.pocoo.org/\n"
  },
  {
    "path": "package/python-logbook/python-logbook.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/logbook/json\nmd5\t719970ea22dd274797bb4328161d700f  Logbook-1.5.3.tar.gz\nsha256\t66f454ada0f56eae43066f604a222b09893f98c1adc18df169710761b8f32fe8  Logbook-1.5.3.tar.gz\n# Locally computed sha256 checksums\nsha256\t2ca266337cc6947578654ab0dd6438de4d01fa78b2e6eb554b09757df1178f98  LICENSE\n"
  },
  {
    "path": "package/python-logbook/python-logbook.mk",
    "content": "################################################################################\n#\n# python-logbook\n#\n################################################################################\n\nPYTHON_LOGBOOK_VERSION = 1.5.3\nPYTHON_LOGBOOK_SOURCE = Logbook-$(PYTHON_LOGBOOK_VERSION).tar.gz\nPYTHON_LOGBOOK_SITE = https://files.pythonhosted.org/packages/2f/d9/16ac346f7c0102835814cc9e5b684aaadea101560bb932a2403bd26b2320\nPYTHON_LOGBOOK_SETUP_TYPE = setuptools\nPYTHON_LOGBOOK_LICENSE = BSD-3-Clause\nPYTHON_LOGBOOK_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-logstash/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_LOGSTASH\n\tbool \"python-logstash\"\n\thelp\n\t  Python logging handler for Logstash.\n\n\t  https://github.com/vklochan/python-logstash\n"
  },
  {
    "path": "package/python-logstash/python-logstash.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/python-logstash/json\nmd5\t26fafa0ea306025fb7644d70cb38982a  python-logstash-0.4.6.tar.gz\nsha256\t10943e5df83f592b4d61b63ad1afff855ccc8c9467f78718f0a59809ba1fe68c  python-logstash-0.4.6.tar.gz\n# Locally computed sha256 checksums\nsha256\tfea6a5c634ac9d9e047151675adc197c16f45bfba3c26ab113f48fb9fa717fff  LICENSE\n"
  },
  {
    "path": "package/python-logstash/python-logstash.mk",
    "content": "################################################################################\n#\n# python-logstash\n#\n################################################################################\n\nPYTHON_LOGSTASH_VERSION = 0.4.6\nPYTHON_LOGSTASH_SITE = https://files.pythonhosted.org/packages/4e/8d/7ff2e8e8e2613e7bb7654790480bb4cf51a55721371adbb631b16cb16dce\nPYTHON_LOGSTASH_SETUP_TYPE = distutils\nPYTHON_LOGSTASH_LICENSE = MIT\nPYTHON_LOGSTASH_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-lxml/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_LXML\n\tbool \"python-lxml\"\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_LIBXSLT\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3\n\thelp\n\t  The lxml XML toolkit is a Pythonic binding for the C libraries\n\t  libxml2 and libxslt.\n\n\t  http://lxml.de/\n"
  },
  {
    "path": "package/python-lxml/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PYTHON_LXML\n\tbool \"host python-lxml\"\n\thelp\n\t  The lxml XML toolkit is a Pythonic binding for the C libraries\n\t  libxml2 and libxslt.\n\n\t  http://lxml.de/\n"
  },
  {
    "path": "package/python-lxml/python-lxml.hash",
    "content": "# Locally computed\nsha256  39b78571b3b30645ac77b95f7c69d1bffc4cf8c3b157c435a34da72e78c82468  lxml-4.6.3.tar.gz\nsha256  41d49dd406aa0e1548a6d5f21a30d6bf638b3cd96eb7289dd348d83ed2e40392  LICENSES.txt\nsha256  69edb445c1335a8312d4c09271847e9956d84f0d9f724d125340cc3fad767b2a  doc/licenses/BSD.txt\nsha256  0497ae8138811ef4466ede653bab7a59feb3d3c14f9ed50fc33a00aeb5bec32e  doc/licenses/elementtree.txt\nsha256  56c5b13f28b78958890c36e3249c34c169041e42ebcfdce8080f3324ba2bf4de  src/lxml/isoschematron/resources/rng/iso-schematron.rng\n"
  },
  {
    "path": "package/python-lxml/python-lxml.mk",
    "content": "################################################################################\n#\n# python-lxml\n#\n################################################################################\n\nPYTHON_LXML_VERSION = 4.6.3\nPYTHON_LXML_SITE = https://files.pythonhosted.org/packages/e5/21/a2e4517e3d216f0051687eea3d3317557bde68736f038a3b105ac3809247\nPYTHON_LXML_SOURCE = lxml-$(PYTHON_LXML_VERSION).tar.gz\n\n# Not including the GPL, because it is used only for the test scripts.\nPYTHON_LXML_LICENSE = BSD-3-Clause, Others\nPYTHON_LXML_LICENSE_FILES = \\\n\tLICENSES.txt \\\n\tdoc/licenses/BSD.txt \\\n\tdoc/licenses/elementtree.txt \\\n\tsrc/lxml/isoschematron/resources/rng/iso-schematron.rng\nPYTHON_LXML_CPE_ID_VENDOR = lxml\nPYTHON_LXML_CPE_ID_PRODUCT = lxml\n\n# python-lxml can use either setuptools, or distutils as a fallback.\n# So, we use setuptools.\nPYTHON_LXML_SETUP_TYPE = setuptools\n\nPYTHON_LXML_DEPENDENCIES = libxml2 libxslt zlib\nHOST_PYTHON_LXML_DEPENDENCIES = host-libxml2 host-libxslt host-zlib\n\n# python-lxml needs these scripts in order to properly detect libxml2 and\n# libxslt compiler and linker flags\nPYTHON_LXML_BUILD_OPTS = \\\n\t--xslt-config=$(STAGING_DIR)/usr/bin/xslt-config \\\n\t--xml2-config=$(STAGING_DIR)/usr/bin/xml2-config\nHOST_PYTHON_LXML_BUILD_OPTS = \\\n\t--xslt-config=$(HOST_DIR)/bin/xslt-config \\\n\t--xml2-config=$(HOST_DIR)/bin/xml2-config\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-m2crypto/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_M2CRYPTO\n\tbool \"python-m2crypto\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime\n\tselect BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime\n\tselect BR2_PACKAGE_PYTHON_TYPING if BR2_PACKAGE_PYTHON # runtime\n\thelp\n\t  M2Crypto: A Python crypto and SSL toolkit.\n\n\t  https://gitlab.com/m2crypto/m2crypto\n"
  },
  {
    "path": "package/python-m2crypto/python-m2crypto.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/m2crypto/json\nmd5  8f39bfac730b6567e0c2179d15318c60  M2Crypto-0.38.0.tar.gz\nsha256  99f2260a30901c949a8dc6d5f82cd5312ffb8abc92e76633baf231bbbcb2decb  M2Crypto-0.38.0.tar.gz\n# Locally computed sha256 checksums\nsha256  4eca478396f4b2b020729a111fce3f096456d74500bfd8f2b0388c3c69f997c0  LICENCE\n"
  },
  {
    "path": "package/python-m2crypto/python-m2crypto.mk",
    "content": "################################################################################\n#\n# python-m2crypto\n#\n################################################################################\n\nPYTHON_M2CRYPTO_VERSION = 0.38.0\nPYTHON_M2CRYPTO_SOURCE = M2Crypto-$(PYTHON_M2CRYPTO_VERSION).tar.gz\nPYTHON_M2CRYPTO_SITE = https://files.pythonhosted.org/packages/2c/52/c35ec79dd97a8ecf6b2bbd651df528abb47705def774a4a15b99977274e8\nPYTHON_M2CRYPTO_SETUP_TYPE = setuptools\nPYTHON_M2CRYPTO_LICENSE = MIT\nPYTHON_M2CRYPTO_LICENSE_FILES = LICENCE\nPYTHON_M2CRYPTO_CPE_ID_VENDOR = m2crypto_project\nPYTHON_M2CRYPTO_CPE_ID_PRODUCT = m2crypto\nPYTHON_M2CRYPTO_DEPENDENCIES = openssl host-swig\nPYTHON_M2CRYPTO_BUILD_OPTS = --openssl=$(STAGING_DIR)/usr\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-m2r/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_M2R\n\tbool \"python-m2r\"\n\tselect BR2_PACKAGE_PYTHON_MISTUNE # runtime\n\tselect BR2_PACKAGE_PYTHON_DOCUTILS # runtime\n\thelp\n\t  Markdown to reStructuredText converter.\n\n\t  https://github.com/miyakogi/m2r\n"
  },
  {
    "path": "package/python-m2r/python-m2r.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/m2r/json\nmd5\t8bdb45c19e2b59bb5ffb9a0348e81ad8  m2r-0.2.1.tar.gz\nsha256\tbf90bad66cda1164b17e5ba4a037806d2443f2a4d5ddc9f6a5554a0322aaed99  m2r-0.2.1.tar.gz\n# Locally computed sha256 checksums\nsha256\t28728ec0ecbd8c171ebaeccebf69e3961282fd81f06abc7424c65546b6ae6f27  LICENSE\n"
  },
  {
    "path": "package/python-m2r/python-m2r.mk",
    "content": "################################################################################\n#\n# python-m2r\n#\n################################################################################\n\nPYTHON_M2R_VERSION = 0.2.1\nPYTHON_M2R_SOURCE = m2r-$(PYTHON_M2R_VERSION).tar.gz\nPYTHON_M2R_SITE = https://files.pythonhosted.org/packages/39/e7/9fae11a45f5e1a3a21d8a98d02948e597c4afd7848a0dbe1a1ebd235f13e\nPYTHON_M2R_SETUP_TYPE = setuptools\nPYTHON_M2R_LICENSE = MIT\nPYTHON_M2R_LICENSE_FILES = LICENSE\nHOST_PYTHON_M2R_DEPENDENCIES = host-python-docutils host-python-mistune\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-mad/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MAD\n\tbool \"python-mad\"\n\tdepends on BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_LIBMAD\n\thelp\n\t  python-mad is a Python binding for the MAD library, a\n\t  high-quality integer-only MPEG decoder.\n\n\t  http://spacepants.org/src/pymad/\n"
  },
  {
    "path": "package/python-mad/python-mad.hash",
    "content": "# locally computed\nsha256  1c9fc529b78de7d26e9e47cf182c9f8bf43838d8f62a9c1773540d57f5ebc522  pymad-0.6.tar.gz\nsha256  d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5  COPYING\n"
  },
  {
    "path": "package/python-mad/python-mad.mk",
    "content": "################################################################################\n#\n# python-mad\n#\n################################################################################\n\nPYTHON_MAD_VERSION = 0.6\nPYTHON_MAD_SOURCE = pymad-$(PYTHON_MAD_VERSION).tar.gz\nPYTHON_MAD_SITE = http://spacepants.org/src/pymad/download\nPYTHON_MAD_SETUP_TYPE = distutils\nPYTHON_MAD_LICENSE = GPL-2.0+\nPYTHON_MAD_LICENSE_FILES = COPYING\n\nPYTHON_MAD_DEPENDENCIES = libmad\n\nifeq ($(BR2_ENDIAN),\"LITTLE\")\nPYTHON_MAD_ENDIAN = little\nelse\nPYTHON_MAD_ENDIAN = big\nendif\n\ndefine PYTHON_MAD_CONFIGURE_CMDS\n\techo \"endian = $(PYTHON_MAD_ENDIAN)\" > $(@D)/Setup\n\techo \"mad_libs = mad\" >> $(@D)/Setup\n\techo \"mad_lib_dir = $(STAGING_DIR)/usr/lib\" >> $(@D)/Setup\n\techo \"mad_include_dir = $(STAGING_DIR)/usr/include\" >> $(@D)/Setup\nendef\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-mako/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MAKO\n\tbool \"python-mako\"\n\thelp\n\t  Mako is a template library written in Python. It provides a\n\t  familiar, non-XML syntax which compiles into Python modules\n\t  for maximum performance.\n\n\t  https://pypi.python.org/pypi/Mako\n"
  },
  {
    "path": "package/python-mako/python-mako.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/mako/json\nmd5  409bdc38e9ddda5eada61fb092cb12fd  Mako-1.1.5.tar.gz\nsha256  169fa52af22a91900d852e937400e79f535496191c63712e3b9fda5a9bed6fc3  Mako-1.1.5.tar.gz\n# Locally computed sha256 checksums\nsha256  47cd0d41b1092f9161cfb629ed15e5cea185144710ff4633a4281ef088ff5de7  LICENSE\n"
  },
  {
    "path": "package/python-mako/python-mako.mk",
    "content": "################################################################################\n#\n# python-mako\n#\n################################################################################\n\nPYTHON_MAKO_VERSION = 1.1.5\nPYTHON_MAKO_SOURCE = Mako-$(PYTHON_MAKO_VERSION).tar.gz\nPYTHON_MAKO_SITE = https://files.pythonhosted.org/packages/d1/42/ff293411e980debfc647be9306d89840c8b82ea24571b014f1a35b2ad80f\nPYTHON_MAKO_SETUP_TYPE = setuptools\nPYTHON_MAKO_LICENSE = MIT\nPYTHON_MAKO_LICENSE_FILES = LICENSE\n\nHOST_PYTHON_MAKO_NEEDS_HOST_PYTHON = python3\n\n# In host build, setup.py tries to download markupsafe if it is not installed\nHOST_PYTHON_MAKO_DEPENDENCIES = host-python-markupsafe\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-markdown/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MARKDOWN\n\tbool \"python-markdown\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\t# runtime dependency on Python's xml module\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT\n\thelp\n\t  This is a Python implementation of John Gruber's Markdown\n\n\t  https://pypi.python.org/pypi/Markdown\n"
  },
  {
    "path": "package/python-markdown/python-markdown.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/markdown/json\nmd5  b6833c6326e9164ee0c662218a75e7f0  Markdown-3.3.4.tar.gz\nsha256  31b5b491868dcc87d6c24b7e3d19a0d730d59d3e46f4eea6430a321bed387a49  Markdown-3.3.4.tar.gz\n# Locally computed sha256\nsha256  6f1193cb634718e65c3a537d6e25ebd614820ec0ef693cfc12248112638d64da  LICENSE.md\n"
  },
  {
    "path": "package/python-markdown/python-markdown.mk",
    "content": "################################################################################\n#\n# python-markdown\n#\n################################################################################\n\nPYTHON_MARKDOWN_VERSION = 3.3.4\nPYTHON_MARKDOWN_SOURCE = Markdown-$(PYTHON_MARKDOWN_VERSION).tar.gz\nPYTHON_MARKDOWN_SITE = https://files.pythonhosted.org/packages/49/02/37bd82ae255bb4dfef97a4b32d95906187b7a7a74970761fca1360c4ba22\nPYTHON_MARKDOWN_LICENSE = BSD-3-Clause\nPYTHON_MARKDOWN_LICENSE_FILES = LICENSE.md\nPYTHON_MARKDOWN_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-markdown2/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MARKDOWN2\n\tbool \"python-markdown2\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A fast and complete Python implementation of Markdown.\n\n\t  https://github.com/trentm/python-markdown2\n"
  },
  {
    "path": "package/python-markdown2/python-markdown2.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/markdown2/json\nmd5  6134fce06c4783b3178a90a719fa9d91  markdown2-2.4.1.tar.gz\nsha256  ce9265cf179c4e07934e7b6a4b03f3edb7891e66e6d0f7017755f6064bbbe13f  markdown2-2.4.1.tar.gz\n# Locally computed sha256 checksums\nsha256  f8c7c4d554409cf621b8d653dbfffb719745fd36f5c49b8305258649b403ef9c  LICENSE.txt\n"
  },
  {
    "path": "package/python-markdown2/python-markdown2.mk",
    "content": "################################################################################\n#\n# python-markdown2\n#\n################################################################################\n\nPYTHON_MARKDOWN2_VERSION = 2.4.1\nPYTHON_MARKDOWN2_SOURCE = markdown2-$(PYTHON_MARKDOWN2_VERSION).tar.gz\nPYTHON_MARKDOWN2_SITE = https://files.pythonhosted.org/packages/fb/10/4f327f4517fa5dda90021618fe174d1f4aff3c4e06abcd7f77685a455511\nPYTHON_MARKDOWN2_SETUP_TYPE = setuptools\nPYTHON_MARKDOWN2_LICENSE = MIT\nPYTHON_MARKDOWN2_LICENSE_FILES = LICENSE.txt\nPYTHON_MARKDOWN2_CPE_ID_VENDOR = python-markdown2_project\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-markupsafe/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MARKUPSAFE\n\tbool \"python-markupsafe\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  MarkupSafe implements a XML/HTML/XHTML Markup safe string\n\t  for Python.\n\n\t  https://github.com/mitsuhiko/markupsafe\n"
  },
  {
    "path": "package/python-markupsafe/python-markupsafe.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/markupsafe/json\nmd5  892e0fefa3c488387e5cc0cad2daa523  MarkupSafe-2.0.1.tar.gz\nsha256  594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a  MarkupSafe-2.0.1.tar.gz\n# Locally computed sha256 checksums\nsha256  489a8e1108509ed98a37bb983e11e0f7e1d31f0bd8f99a79c8448e7ff37d07ea  LICENSE.rst\n"
  },
  {
    "path": "package/python-markupsafe/python-markupsafe.mk",
    "content": "################################################################################\n#\n# python-markupsafe\n#\n################################################################################\n\nPYTHON_MARKUPSAFE_VERSION = 2.0.1\nPYTHON_MARKUPSAFE_SOURCE = MarkupSafe-$(PYTHON_MARKUPSAFE_VERSION).tar.gz\nPYTHON_MARKUPSAFE_SITE = https://files.pythonhosted.org/packages/bf/10/ff66fea6d1788c458663a84d88787bae15d45daa16f6b3ef33322a51fc7e\nPYTHON_MARKUPSAFE_SETUP_TYPE = setuptools\nPYTHON_MARKUPSAFE_LICENSE = BSD-3-Clause\nPYTHON_MARKUPSAFE_LICENSE_FILES = LICENSE.rst\n\nHOST_PYTHON_MARKUPSAFE_NEEDS_HOST_PYTHON = python3\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-marshmallow/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MARSHMALLOW\n\tbool \"python-marshmallow\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A lightweight library for converting complex objects to and from simple Python datatypes.\n\n\t  https://github.com/marshmallow-code/marshmallow\n"
  },
  {
    "path": "package/python-marshmallow/python-marshmallow.hash",
    "content": "sha256\tea2a241f2ea69bb0863f2c00b907a8e22d7dd8b6d5b9960135906037c9dd7068  marshmallow-3.0.0rc5.tar.gz\n\n"
  },
  {
    "path": "package/python-marshmallow/python-marshmallow.mk",
    "content": "################################################################################\n#\n# python-marshmallow\n#\n################################################################################\n\nPYTHON_MARSHMALLOW_VERSION = 3.0.0rc5\nPYTHON_MARSHMALLOW_SOURCE = marshmallow-$(PYTHON_MARSHMALLOW_VERSION).tar.gz\nPYTHON_MARSHMALLOW_SITE = https://files.pythonhosted.org/packages/71/78/b27626d937534d513b7de5a3210c071bc2de0721bdc72594e7d9d42beea2\nPYTHON_MARSHMALLOW_SETUP_TYPE = setuptools\nPYTHON_MARSHMALLOW_LICENSE = Apache-2.0\nPYTHON_MARSHMALLOW_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-marshmallow-peewee/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MARSHMALLOW_PEEWEE\n\tbool \"python-marshmallow-peewee\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Peewee integration with the marshmallow (de)serialization library.\n\n\t  https://github.com/klen/marshmallow-peewee\n"
  },
  {
    "path": "package/python-marshmallow-peewee/python-marshmallow-peewee.hash",
    "content": "sha256\t13274ee3931a126caf302244297e50e27bcc66e59776400d736428cfad098c3e  Marshmallow-Peewee-2.3.0.tar.gz\n\n"
  },
  {
    "path": "package/python-marshmallow-peewee/python-marshmallow-peewee.mk",
    "content": "################################################################################\n#\n# python-marshmallow-peewee\n#\n################################################################################\n\nPYTHON_MARSHMALLOW_PEEWEE_VERSION = 2.3.0\nPYTHON_MARSHMALLOW_PEEWEE_SOURCE = Marshmallow-Peewee-$(PYTHON_MARSHMALLOW_PEEWEE_VERSION).tar.gz\nPYTHON_MARSHMALLOW_PEEWEE_SITE = https://files.pythonhosted.org/packages/55/de/880e245416171d3fcc20cf47562d17ef7ce81bfbf727ec0e268c06264bde\nPYTHON_MARSHMALLOW_PEEWEE_SETUP_TYPE = setuptools\nPYTHON_MARSHMALLOW_PEEWEE_LICENSE = Apache-2.0\nPYTHON_MARSHMALLOW_PEEWEE_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-matplotlib/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MATPLOTLIB\n\tbool \"python-matplotlib\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy\n\tselect BR2_PACKAGE_FREETYPE # runtime\n\tselect BR2_PACKAGE_LIBPNG # runtime\n\tselect BR2_PACKAGE_PYTHON_CERTIFI # runtime\n\tselect BR2_PACKAGE_PYTHON_CYCLER\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_DATEUTIL # runtime\n\tselect BR2_PACKAGE_PYTHON_KIWISOLVER # runtime\n\tselect BR2_PACKAGE_PYTHON_NUMPY # runtime\n\tselect BR2_PACKAGE_PYTHON_PYPARSING # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB # runtime\n\tselect BR2_PACKAGE_QHULL\n\tselect BR2_PACKAGE_ZLIB # runtime\n\thelp\n\t  Matplotlib strives to produce publication quality 2D\n\t  graphics for interactive graphing, scientific publishing,\n\t  user interface development and web application servers\n\t  targeting multiple user interfaces and hardcopy output\n\t  formats.\n\n\t  https://matplotlib.org/\n\nif BR2_PACKAGE_PYTHON_MATPLOTLIB\n\nconfig BR2_PACKAGE_PYTHON_MATPLOTLIB_QT\n\tbool \"qt display\"\n\tdepends on BR2_PACKAGE_QT5 # python-pyqt5\n\tselect BR2_PACKAGE_PYTHON_PYQT5\n\tselect BR2_PACKAGE_QT5BASE_FONTCONFIG\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\nendif\n\ncomment \"python-matplotlib needs a glibc or musl toolchain w/ C++\"\n\tdepends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) || \\\n\t\t!BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/python-matplotlib/python-matplotlib.hash",
    "content": "# sha256 from https://pypi.org/project/matplotlib/#files\nsha256\tfc4f526dfdb31c9bd6b8ca06bf9fab663ca12f3ec9cdf4496fb44bc680140318  matplotlib-3.4.3.tar.gz\n# Locally computed sha256 checksums\nsha256\t5a1a81ea301728c8bba2933da832c0cd62229daf20893a024ab3d53244468dbc  LICENSE/LICENSE\n"
  },
  {
    "path": "package/python-matplotlib/python-matplotlib.mk",
    "content": "################################################################################\n#\n# python-matplotlib\n#\n################################################################################\n\nPYTHON_MATPLOTLIB_VERSION = 3.4.3\nPYTHON_MATPLOTLIB_SOURCE = matplotlib-$(PYTHON_MATPLOTLIB_VERSION).tar.gz\nPYTHON_MATPLOTLIB_SITE = https://files.pythonhosted.org/packages/21/37/197e68df384ff694f78d687a49ad39f96c67b8d75718bc61503e1676b617\nPYTHON_MATPLOTLIB_LICENSE = Python-2.0\nPYTHON_MATPLOTLIB_LICENSE_FILES = LICENSE/LICENSE\nPYTHON_MATPLOTLIB_DEPENDENCIES = \\\n\tfreetype \\\n\thost-pkgconf \\\n\thost-python-certifi \\\n\thost-python-numpy \\\n\tlibpng \\\n\tpython-cycler \\\n\tqhull\nPYTHON_MATPLOTLIB_SETUP_TYPE = setuptools\n\nifeq ($(BR2_PACKAGE_PYTHON_MATPLOTLIB_QT),y)\nPYTHON_MATPLOTLIB_DEPENDENCIES += python-pyqt5\nendif\n\ndefine PYTHON_MATPLOTLIB_COPY_SETUP_CFG\n\tcp $(PYTHON_MATPLOTLIB_PKGDIR)/setup.cfg $(@D)/setup.cfg\nendef\nPYTHON_MATPLOTLIB_PRE_CONFIGURE_HOOKS += PYTHON_MATPLOTLIB_COPY_SETUP_CFG\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-matplotlib/setup.cfg",
    "content": "[libs]\n# Disable LTO to prevent the following error:\n# Relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZSt3hexRSt8ios_base'\n# which may bind externally can not be used when making a shared object;\n# recompile with -fPIC\nenable_lto = False\n\n# Freetype and qhull are provided by Buildroot\nsystem_freetype = True\nsystem_qhull = True\n"
  },
  {
    "path": "package/python-mbstrdecoder/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MBSTRDECODER\n\tbool \"python-mbstrdecoder\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_CHARDET # runtime\n\thelp\n\t  multi-byte character string decoder.\n\n\t  https://github.com/thombashi/mbstrdecoder\n"
  },
  {
    "path": "package/python-mbstrdecoder/python-mbstrdecoder.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/mbstrdecoder/json\nmd5  b32ff478a38730a8ab0b884fe162cc41  mbstrdecoder-1.1.0.tar.gz\nsha256  f4dfd549e424ad8dfc985e6af8b55cb4ec0c208782f610d57439fe6a9a44c244  mbstrdecoder-1.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256  7588265082eed5e9f4afd5090c57e610b740ec547b16aaaab739ba07c5eefb15  LICENSE\n"
  },
  {
    "path": "package/python-mbstrdecoder/python-mbstrdecoder.mk",
    "content": "################################################################################\n#\n# python-mbstrdecoder\n#\n################################################################################\n\nPYTHON_MBSTRDECODER_VERSION = 1.1.0\nPYTHON_MBSTRDECODER_SOURCE = mbstrdecoder-$(PYTHON_MBSTRDECODER_VERSION).tar.gz\nPYTHON_MBSTRDECODER_SITE = https://files.pythonhosted.org/packages/6c/10/f82ba5a91489c91bf6adaa0e1aca38a7ab2d1d7d80195a5f6ad8c2ff387a\nPYTHON_MBSTRDECODER_SETUP_TYPE = setuptools\nPYTHON_MBSTRDECODER_LICENSE = MIT\nPYTHON_MBSTRDECODER_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-mimeparse/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MIMEPARSE\n\tbool \"python-mimeparse\"\n\thelp\n\t  A module provides basic functions for parsing mime-type\n\t  names and matching them against a list of media-ranges.\n\n\t  https://github.com/dbtsai/python-mimeparse\n"
  },
  {
    "path": "package/python-mimeparse/python-mimeparse.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/python-mimeparse/json\nmd5\ta32ae1df93be1ddb581d1c0fa124bab4  python-mimeparse-1.6.0.tar.gz\nsha256\t76e4b03d700a641fd7761d3cd4fdbbdcd787eade1ebfac43f877016328334f78  python-mimeparse-1.6.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t89807acf2309bd285f033404ee78581602f3cd9b819a16ac2f0e5f60ff4a473e  LICENSE\n"
  },
  {
    "path": "package/python-mimeparse/python-mimeparse.mk",
    "content": "################################################################################\n#\n# python-mimeparse\n#\n################################################################################\n\nPYTHON_MIMEPARSE_VERSION = 1.6.0\nPYTHON_MIMEPARSE_SITE = https://files.pythonhosted.org/packages/0f/40/ac5f9e44a55b678c3cd881b4c3376e5b002677dbeab6fb3a50bac5d50d29\nPYTHON_MIMEPARSE_SETUP_TYPE = setuptools\nPYTHON_MIMEPARSE_LICENSE = MIT\nPYTHON_MIMEPARSE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-mistune/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MISTUNE\n\tbool \"python-mistune\"\n\thelp\n\t  The fastest markdown parser in pure Python with renderer\n\t  features, inspired by marked.\n\n\t  https://pypi.python.org/pypi/mistune\n"
  },
  {
    "path": "package/python-mistune/python-mistune.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/mistune/json\nmd5\tfb6ab174ece938dea09f8b2adad771e4  mistune-0.8.4.tar.gz\nsha256\t59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e  mistune-0.8.4.tar.gz\n# Locally computed sha256 checksums\nsha256  0c5259c3dd0a7c46f4835221645f62a0638c9b9faa02af08676e8069e1ff964b  LICENSE\n"
  },
  {
    "path": "package/python-mistune/python-mistune.mk",
    "content": "################################################################################\n#\n# python-mistune\n#\n################################################################################\n\nPYTHON_MISTUNE_VERSION = 0.8.4\nPYTHON_MISTUNE_SOURCE = mistune-$(PYTHON_MISTUNE_VERSION).tar.gz\nPYTHON_MISTUNE_SITE = https://files.pythonhosted.org/packages/2d/a4/509f6e7783ddd35482feda27bc7f72e65b5e7dc910eca4ab2164daf9c577\nPYTHON_MISTUNE_LICENSE = BSD-3-Clause\nPYTHON_MISTUNE_LICENSE_FILES = LICENSE\nPYTHON_MISTUNE_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-mock/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MOCK\n\tbool \"python-mock\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\thelp\n\t  mock is a library for testing in Python. It allows you to replace parts of your system under test with mock objects and make assertions about how they have been used.\n\n\t  https://github.com/testing-cabal/mock\n"
  },
  {
    "path": "package/python-mock/python-mock.hash",
    "content": "sha256\t83657d894c90d5681d62155c82bda9c1187827525880eda8ff5df4ec813437c3  mock-3.0.5.tar.gz\n\n"
  },
  {
    "path": "package/python-mock/python-mock.mk",
    "content": "################################################################################\n#\n# python-mock\n#\n################################################################################\n\nPYTHON_MOCK_VERSION = 3.0.5\nPYTHON_MOCK_SOURCE = mock-$(PYTHON_MOCK_VERSION).tar.gz\nPYTHON_MOCK_SITE = https://files.pythonhosted.org/packages/2e/ab/4fe657d78b270aa6a32f027849513b829b41b0f28d9d8d7f8c3d29ea559a\nPYTHON_MOCK_SETUP_TYPE = setuptools\nPYTHON_MOCK_LICENSE = Apache-2.0\nPYTHON_MOCK_LICENSE_FILES = LICENSE.txt\nPYTHON_MOCK_DEPENDENCIES = host-python-pbr\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-modbus-tk/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MODBUS_TK\n\tbool \"python-modbus-tk\"\n\tselect BR2_PACKAGE_PYTHON_SERIAL # runtime\n\thelp\n\t  Implementation of modbus protocol in python.\n\n\t  https://github.com/ljean/modbus-tk/\n"
  },
  {
    "path": "package/python-modbus-tk/python-modbus-tk.hash",
    "content": "# sha256 from https://pypi.org/pypi/modbus-tk/json\nsha256  893514bbd8c92118d20a19979e0239e7cb2a63f8f1795a0271e57def09d11770  modbus_tk-1.1.2.tar.gz\n# Locally computed sha256 checksums\nsha256  3b6a7f9c478ac1982e86cdadb45eb4788241b95839500eb26839d5053b74a24a  license.txt\nsha256  aa7ca42152a13db6a27b31944f99851efc3b9ee813912ff21d7d6ceadca62e6f  copying.txt\n"
  },
  {
    "path": "package/python-modbus-tk/python-modbus-tk.mk",
    "content": "################################################################################\n#\n# python-modbus-tk\n#\n################################################################################\n\nPYTHON_MODBUS_TK_VERSION = 1.1.2\nPYTHON_MODBUS_TK_SOURCE = modbus_tk-$(PYTHON_MODBUS_TK_VERSION).tar.gz\nPYTHON_MODBUS_TK_SITE = https://files.pythonhosted.org/packages/ce/e9/30d86eb912bf868b8c97698b5747f10cf72dc26c674fd030249bc3275484\nPYTHON_MODBUS_TK_SETUP_TYPE = setuptools\nPYTHON_MODBUS_TK_LICENSE = LGPL-2.1+\nPYTHON_MODBUS_TK_LICENSE_FILES = license.txt copying.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-more-itertools/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MORE_ITERTOOLS\n\tbool \"python-more-itertools\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  More routines for operating on iterables, beyond itertools.\n\n\t  https://github.com/more-itertools/more-itertools\n"
  },
  {
    "path": "package/python-more-itertools/python-more-itertools.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/more-itertools/json\nmd5  9930552c4f7eedc00193673d5f7f0f19  more-itertools-8.10.0.tar.gz\nsha256  1debcabeb1df793814859d64a81ad7cb10504c24349368ccf214c664c474f41f  more-itertools-8.10.0.tar.gz\n# Locally computed sha256 checksums\nsha256  09f1c8c9e941af3e584d59641ea9b87d83c0cb0fd007eb5ef391a7e2643c1a46  LICENSE\n"
  },
  {
    "path": "package/python-more-itertools/python-more-itertools.mk",
    "content": "################################################################################\n#\n# python-more-itertools\n#\n################################################################################\n\nPYTHON_MORE_ITERTOOLS_VERSION = 8.10.0\nPYTHON_MORE_ITERTOOLS_SOURCE = more-itertools-$(PYTHON_MORE_ITERTOOLS_VERSION).tar.gz\nPYTHON_MORE_ITERTOOLS_SITE = https://files.pythonhosted.org/packages/8a/f7/93cf3c81629c95f6f40e509f7cd63985a6ddd829181a66c1c8ef101e55f2\nPYTHON_MORE_ITERTOOLS_SETUP_TYPE = setuptools\nPYTHON_MORE_ITERTOOLS_LICENSE = MIT\nPYTHON_MORE_ITERTOOLS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-msgfy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MSGFY\n\tbool \"python-msgfy\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  msgfy is a Python library for convert Exception instance to\n\t  a human-readable error message.\n\n\t  https://github.com/thombashi/msgfy\n"
  },
  {
    "path": "package/python-msgfy/python-msgfy.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/msgfy/json\nmd5  4a3d8ac9908acd5f661a58b12f9e0d17  msgfy-0.1.0.tar.gz\nsha256  474c08302cd56ccee1300ac7976a01ebd1e42716fc9bcd947d39a311a15b7012  msgfy-0.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256  fcfe96f8fb1bf3478a51c828e7f7afee01500ce1c2d4345d052edb858be05227  LICENSE\n"
  },
  {
    "path": "package/python-msgfy/python-msgfy.mk",
    "content": "################################################################################\n#\n# python-msgfy\n#\n################################################################################\n\nPYTHON_MSGFY_VERSION = 0.1.0\nPYTHON_MSGFY_SOURCE = msgfy-$(PYTHON_MSGFY_VERSION).tar.gz\nPYTHON_MSGFY_SITE = https://files.pythonhosted.org/packages/24/b5/7cc6ba75b6489245f9b75f11a85202b934fa92f6c99a4fa1c639f08d68e8\nPYTHON_MSGFY_SETUP_TYPE = setuptools\nPYTHON_MSGFY_LICENSE = MIT\nPYTHON_MSGFY_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-msgpack/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MSGPACK\n\tbool \"python-msgpack\"\n\thelp\n\t  MessagePack (http://msgpack.org/) is a fast, compact binary\n\t  serialization format, suitable for similar data to JSON.\n\t  This package provides a pure python library for reading\n\t  and writing MessagePack data.\n\n\t  https://pypi.python.org/pypi/msgpack-python/\n"
  },
  {
    "path": "package/python-msgpack/python-msgpack.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/msgpack/json\nmd5  68d5804254642905ba87ede509e68970  msgpack-1.0.2.tar.gz\nsha256  fae04496f5bc150eefad4e9571d1a76c55d021325dcd484ce45065ebbdd00984  msgpack-1.0.2.tar.gz\n# Locally computed sha256 checksums\nsha256  492dedba85da5872f78e6091bcd1fea474d660d35acb4dee964b8aab3f007427  COPYING\n"
  },
  {
    "path": "package/python-msgpack/python-msgpack.mk",
    "content": "################################################################################\n#\n# python-msgpack\n#\n################################################################################\n\nPYTHON_MSGPACK_VERSION = 1.0.2\nPYTHON_MSGPACK_SOURCE = msgpack-$(PYTHON_MSGPACK_VERSION).tar.gz\nPYTHON_MSGPACK_SITE = https://files.pythonhosted.org/packages/59/04/87fc6708659c2ed3b0b6d4954f270b6e931def707b227c4554f99bd5401e\nPYTHON_MSGPACK_LICENSE = Apache-2.0\nPYTHON_MSGPACK_LICENSE_FILES = COPYING\nPYTHON_MSGPACK_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-multidict/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MULTIDICT\n\tbool \"python-multidict\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Multidict is dict-like collection of key-value pairs where a\n\t  key may occur more than once in the container.\n\n\t  https://github.com/aio-libs/multidict\n"
  },
  {
    "path": "package/python-multidict/python-multidict.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/multidict/json\nmd5  e28b9592289597b232f09e5cc3857f32  multidict-5.2.0.tar.gz\nsha256  0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce  multidict-5.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256  06a240ea10ba868fda2de58df859886961df873aa74bbab1e0f13eaf99f92b7b  LICENSE\n"
  },
  {
    "path": "package/python-multidict/python-multidict.mk",
    "content": "################################################################################\n#\n# python-multidict\n#\n################################################################################\n\nPYTHON_MULTIDICT_VERSION = 5.2.0\nPYTHON_MULTIDICT_SOURCE = multidict-$(PYTHON_MULTIDICT_VERSION).tar.gz\nPYTHON_MULTIDICT_SITE = https://files.pythonhosted.org/packages/8e/7c/e12a69795b7b7d5071614af2c691c97fbf16a2a513c66ec52dd7d0a115bb\nPYTHON_MULTIDICT_SETUP_TYPE = setuptools\nPYTHON_MULTIDICT_LICENSE = Apache-2.0\nPYTHON_MULTIDICT_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-mutagen/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MUTAGEN\n\tbool \"python-mutagen\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB # runtime\n\thelp\n\t  Mutagen is a Python module to handle audio metadata.  It\n\t  supports ASF, FLAC, MP4, Monkey's Audio, MP3, Musepack, Ogg\n\t  Opus, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True\n\t  Audio, WavPack, OptimFROG, and AIFF audio files. All\n\t  versions of ID3v2 are supported, and all standard ID3v2.4\n\t  frames are parsed.\n\n\t  It can read Xing headers to accurately calculate the bitrate\n\t  and length of MP3s. ID3 and APEv2 tags can be edited\n\t  regardless of audio format.  It can also manipulate Ogg\n\t  streams on an individual packet/page level.\n\n\t  https://mutagen.readthedocs.io/en/latest/\n"
  },
  {
    "path": "package/python-mutagen/python-mutagen.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/mutagen/json\nmd5  76e1f7fc2386813c0ff2716695fb06e1  mutagen-1.45.1.tar.gz\nsha256  6397602efb3c2d7baebd2166ed85731ae1c1d475abca22090b7141ff5034b3e1  mutagen-1.45.1.tar.gz\n# Locally computed sha256 checksums\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/python-mutagen/python-mutagen.mk",
    "content": "################################################################################\n#\n# python-mutagen\n#\n################################################################################\n\nPYTHON_MUTAGEN_VERSION = 1.45.1\nPYTHON_MUTAGEN_SOURCE = mutagen-$(PYTHON_MUTAGEN_VERSION).tar.gz\nPYTHON_MUTAGEN_SITE = https://files.pythonhosted.org/packages/f3/d9/2232a4cb9a98e2d2501f7e58d193bc49c956ef23756d7423ba1bd87e386d\nPYTHON_MUTAGEN_LICENSE = GPL-2.0\nPYTHON_MUTAGEN_LICENSE_FILES = COPYING\nPYTHON_MUTAGEN_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-mwclient/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MWCLIENT\n\tbool \"python-mwclient\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-requests-oauthlib -> python-requests -> python-idna\n\tselect BR2_PACKAGE_PYTHON_REQUESTS_OAUTHLIB # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Python client library to interface with the MediaWiki API\n\n\t  https://github.com/mwclient/mwclient\n"
  },
  {
    "path": "package/python-mwclient/python-mwclient.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/mwclient/json\nmd5  148bd36bfaaf591bd9c0076cbf1ed888  mwclient-0.10.1.tar.gz\nsha256  79363dd8d12f5e3b91b92b63152bf9dfef27da786c076a244e1f148c8dd67139  mwclient-0.10.1.tar.gz\n# Locally computed\nsha256  67689d1fd48a5adba31272eed653c12160dd3abbfe92ab056ac42a155e12e523  LICENSE.md\n"
  },
  {
    "path": "package/python-mwclient/python-mwclient.mk",
    "content": "################################################################################\n#\n# python-mwclient\n#\n################################################################################\n\nPYTHON_MWCLIENT_VERSION = 0.10.1\nPYTHON_MWCLIENT_SOURCE = mwclient-$(PYTHON_MWCLIENT_VERSION).tar.gz\nPYTHON_MWCLIENT_SITE = https://files.pythonhosted.org/packages/97/b4/5fc70ad3286a8d8ec4b9ac01acad0f6b00c5a48d4a16b9d3be6519b7eb21\nPYTHON_MWCLIENT_LICENSE = MIT\nPYTHON_MWCLIENT_LICENSE_FILES = LICENSE.md\nPYTHON_MWCLIENT_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-mwscrape/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MWSCRAPE\n\tbool \"python-mwscrape\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_COUCHDB # runtime\n\tselect BR2_PACKAGE_PYTHON_MWCLIENT # runtime\n\tselect BR2_PACKAGE_PYTHON_PYLRU # runtime\n\thelp\n\t  Download rendered articles from MediaWiki API to CouchDB\n\n\t  https://github.com/itkach/mwscrape\n"
  },
  {
    "path": "package/python-mwscrape/python-mwscrape.hash",
    "content": "# Locally computed\nsha256  2d0e6c747f6a866dedbc759f78830b3f496e8d03401a3c727d0b48735341c5b6  python-mwscrape-568ccbe6e12dd6391277df02adf724ba0e5f9197.tar.gz\nsha256  fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85  LICENSE.txt\n"
  },
  {
    "path": "package/python-mwscrape/python-mwscrape.mk",
    "content": "################################################################################\n#\n# python-mwscrape\n#\n################################################################################\n\nPYTHON_MWSCRAPE_VERSION = 568ccbe6e12dd6391277df02adf724ba0e5f9197\nPYTHON_MWSCRAPE_SITE = $(call github,itkach,mwscrape,$(PYTHON_MWSCRAPE_VERSION))\nPYTHON_MWSCRAPE_LICENSE = MPL-2.0\nPYTHON_MWSCRAPE_LICENSE_FILES = LICENSE.txt\nPYTHON_MWSCRAPE_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-mwscrape2slob/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_MWSCRAPE2SLOB\n\tbool \"python-mwscrape2slob\"\n\tdepends on !BR2_BINFMT_FLAT # python-slob -> python-pyicu -> icu\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # python-slob -> python-pyicu -> icu\n\tdepends on BR2_INSTALL_LIBSTDCPP # python-slob -> python-pyicu -> icu\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # python-slob -> python-pyicu -> icu\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_COUCHDB # runtime\n\tselect BR2_PACKAGE_PYTHON_CSSSELECT # runtime\n\tselect BR2_PACKAGE_PYTHON_CSSUTILS # runtime\n\tselect BR2_PACKAGE_PYTHON_LXML # runtime\n\tselect BR2_PACKAGE_PYTHON_SLOB # runtime\n\thelp\n\t  A tool to create slob with content from a MediaWiki CouchDB\n\t  created by mwscrape.\n\n\t  https://github.com/itkach/mwscrape2slob\n\ncomment \"python-mwscrape2slob needs a toolchain w/ C++, gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_PYTHON3 && !BR2_BINFMT_FLAT\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/python-mwscrape2slob/python-mwscrape2slob.hash",
    "content": "# Locally computed\nsha256  f1c1c79526fb3e0dac1c2c43e57a38b8641672e7008c5530d4b75e864eff232a  python-mwscrape2slob-e01d3e92f0a372ebd0f57390e437a28f9d3c0438.tar.gz\n"
  },
  {
    "path": "package/python-mwscrape2slob/python-mwscrape2slob.mk",
    "content": "################################################################################\n#\n# python-mwscrape2slob\n#\n################################################################################\n\nPYTHON_MWSCRAPE2SLOB_VERSION = e01d3e92f0a372ebd0f57390e437a28f9d3c0438\nPYTHON_MWSCRAPE2SLOB_SITE = $(call github,itkach,mwscrape2slob,$(PYTHON_MWSCRAPE2SLOB_VERSION))\nPYTHON_MWSCRAPE2SLOB_LICENSE = GPL-3.0, Apache-2.0 (MathJax), GPL (MediaWiki monobook style sheet)\nPYTHON_MWSCRAPE2SLOB_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-nested-dict/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_NESTED_DICT\n\tbool \"python-nested-dict\"\n\thelp\n\t  Python dictionary with automatic and arbitrary levels of\n\t  nestedness.\n\n\t  http://pypi.python.org/pypi/nested_dict\n"
  },
  {
    "path": "package/python-nested-dict/python-nested-dict.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/nested-dict/json\nmd5\te08e2e8de6d002f9ddda4eea5a4528c2  nested_dict-1.61.tar.gz\nsha256\tde0fb5bac82ba7bcc23736f09373f18628ea57f92bbaa13480d23f261c41e771  nested_dict-1.61.tar.gz\n# Locally computed sha256 checksums\nsha256\tc84eb6b667b91fd9b8991f500c168354eb51af5b2dd970d8ee51ce336d9aeed1  LICENSE.TXT\n"
  },
  {
    "path": "package/python-nested-dict/python-nested-dict.mk",
    "content": "################################################################################\n#\n# python-nested-dict\n#\n################################################################################\n\nPYTHON_NESTED_DICT_VERSION = 1.61\nPYTHON_NESTED_DICT_SOURCE = nested_dict-$(PYTHON_NESTED_DICT_VERSION).tar.gz\nPYTHON_NESTED_DICT_SITE = https://files.pythonhosted.org/packages/42/d0/3b27fa65b16a2e44d793af59929fcdb3bb84b4664462ff2830105dfd9b7d\nPYTHON_NESTED_DICT_SETUP_TYPE = setuptools\nPYTHON_NESTED_DICT_LICENSE = MIT\nPYTHON_NESTED_DICT_LICENSE_FILES = LICENSE.TXT\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-netaddr/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_NETADDR\n\tbool \"python-netaddr\"\n\thelp\n\t  A network address manipulation library for Python.\n\n\t  https://pypi.python.org/pypi/netaddr\n"
  },
  {
    "path": "package/python-netaddr/python-netaddr.hash",
    "content": "# md5 from https://pypi.python.org/pypi/netaddr/json\nmd5 34cad578473b66ad77bc3b2a7613ed4a netaddr-0.8.0.tar.gz\n# Locally computed\nsha256 d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243 netaddr-0.8.0.tar.gz\nsha256  0e53de62547787462f41eefb5cee31a14f7ea767ba0362c6f9304f1742486d47  LICENSE\n"
  },
  {
    "path": "package/python-netaddr/python-netaddr.mk",
    "content": "################################################################################\n#\n# python-netaddr\n#\n################################################################################\n\nPYTHON_NETADDR_VERSION = 0.8.0\nPYTHON_NETADDR_SOURCE = netaddr-$(PYTHON_NETADDR_VERSION).tar.gz\nPYTHON_NETADDR_SITE = https://pypi.python.org/packages/c3/3b/fe5bda7a3e927d9008c897cf1a0858a9ba9924a6b4750ec1824c9e617587\nPYTHON_NETADDR_LICENSE = BSD-3-Clause\nPYTHON_NETADDR_LICENSE_FILES = LICENSE\nPYTHON_NETADDR_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-netifaces/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_NETIFACES\n\tbool \"python-netifaces\"\n\thelp\n\t  Portable access to network interfaces from Python.\n\n\t  http://alastairs-place.net/projects/netifaces\n"
  },
  {
    "path": "package/python-netifaces/python-netifaces.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/netifaces/json\nmd5  3146dcb3297dd018ae5eb9a52b440419  netifaces-0.11.0.tar.gz\nsha256  043a79146eb2907edf439899f262b3dfe41717d34124298ed281139a8b93ca32  netifaces-0.11.0.tar.gz\n# Locally computed sha256 checksums\nsha256  b20b895164b72b9cc0170e6c0d60b14f9aaacc6862c0556eed41eaa348883705  LICENSE\n"
  },
  {
    "path": "package/python-netifaces/python-netifaces.mk",
    "content": "################################################################################\n#\n# python-netifaces\n#\n################################################################################\n\nPYTHON_NETIFACES_VERSION = 0.11.0\nPYTHON_NETIFACES_SOURCE = netifaces-$(PYTHON_NETIFACES_VERSION).tar.gz\nPYTHON_NETIFACES_SITE = https://files.pythonhosted.org/packages/a6/91/86a6eac449ddfae239e93ffc1918cf33fd9bab35c04d1e963b311e347a73\nPYTHON_NETIFACES_LICENSE = MIT\nPYTHON_NETIFACES_LICENSE_FILES = LICENSE\nPYTHON_NETIFACES_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-networkmanager/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_NETWORKMANAGER\n\tbool \"python-networkmanager\"\n\tdepends on BR2_PACKAGE_NETWORK_MANAGER # runtime\n\tdepends on BR2_USE_WCHAR # dbus-python\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus-python\n\tdepends on BR2_PACKAGE_DBUS # dbus-python\n\tselect BR2_PACKAGE_DBUS_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  python-networkmanager wraps NetworkManagers D-Bus interface\n\t  so you can be less verbose when talking to NetworkManager\n\t  from python. All interfaces have been wrapped in classes,\n\t  properties are exposed as python properties and function\n\t  calls are forwarded to the correct interface.\n\n\t  https://pypi.python.org/pypi/python-networkmanager/\n"
  },
  {
    "path": "package/python-networkmanager/python-networkmanager.hash",
    "content": "# md5 and sha256 from https://pypi.python.org/pypi/python-networkmanager/json\nmd5\tf638d854a3639fb37c0e06d1092a771e  python-networkmanager-2.1.tar.gz\nsha256\taef1e34d98d7bec7cc368e0ca0f2e97493f9b5ebe6d7103f8f6460cfca3dc6fc  python-networkmanager-2.1.tar.gz\n# Locally computed\nsha256  be40f44d54bb5e0f0eee28e957ad020a00a6e3adb0290262e92129eba1c044cf  COPYING\n"
  },
  {
    "path": "package/python-networkmanager/python-networkmanager.mk",
    "content": "################################################################################\n#\n# python-networkmanager\n#\n################################################################################\n\nPYTHON_NETWORKMANAGER_VERSION = 2.1\nPYTHON_NETWORKMANAGER_SITE = https://files.pythonhosted.org/packages/73/ec/2cc46290cedc99f59df3633d428dfa91d95946ca49af96fdb53514ee195f\nPYTHON_NETWORKMANAGER_SETUP_TYPE = setuptools\nPYTHON_NETWORKMANAGER_LICENSE = Zlib\nPYTHON_NETWORKMANAGER_LICENSE_FILES = COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-networkx/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_NETWORKX\n\tbool \"python-networkx\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_DECORATOR # runtime\n\thelp\n\t  A Python package for the creation, manipulation,\n\t  and study of the structure, dynamics, and\n\t  functions of complex networks.\n\n\t  https://pypi.python.org/pypi/networkx\n"
  },
  {
    "path": "package/python-networkx/python-networkx.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/networkx/json\nmd5  407eb28c54e08725559754ca7ab185e0  networkx-2.6.3.tar.gz\nsha256  c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51  networkx-2.6.3.tar.gz\n# Locally computed sha256 checksums\nsha256  f9c25c92ced5a264a3fe857231205d5eb625ae367935aaf8d61cdd5087dfb90e  LICENSE.txt\n"
  },
  {
    "path": "package/python-networkx/python-networkx.mk",
    "content": "################################################################################\n#\n# python-networkx\n#\n################################################################################\n\nPYTHON_NETWORKX_VERSION = 2.6.3\nPYTHON_NETWORKX_SOURCE = networkx-$(PYTHON_NETWORKX_VERSION).tar.gz\nPYTHON_NETWORKX_SITE = https://files.pythonhosted.org/packages/97/ae/7497bc5e1c84af95e585e3f98585c9f06c627fac6340984c4243053e8f44\nPYTHON_NETWORKX_LICENSE = BSD-3-Clause\nPYTHON_NETWORKX_LICENSE_FILES = LICENSE.txt\nPYTHON_NETWORKX_CPE_ID_VENDOR = python\nPYTHON_NETWORKX_CPE_ID_PRODUCT = networkx\nPYTHON_NETWORKX_SETUP_TYPE = setuptools\nHOST_PYTHON_NETWORKX_DEPENDENCIES = host-python-decorator\nHOST_PYTHON_NETWORKX_NEEDS_HOST_PYTHON = python3\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-nfc/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_NFC\n\tbool \"python-nfc\"\n\tdepends on BR2_PACKAGE_PYTHON\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\thelp\n\t  Python module for near field communication.\n\n\t  https://launchpad.net/nfcpy\n\ncomment \"python-nfc needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_PYTHON\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/python-nfc/python-nfc.hash",
    "content": "# Locally computed:\nsha256\t7ff9265e393e9e70173ecef5a1f9124e67d3b6e481c2dc3a9537b6a769ebe16f\tpython-nfc-0.13.5.tar.gz\nsha256\t0dc4b0a3362f197e250604567a6b4eb16bbc34c186425401e2201a193a82549f\tLICENSE\n"
  },
  {
    "path": "package/python-nfc/python-nfc.mk",
    "content": "################################################################################\n#\n# python-nfc\n#\n################################################################################\n\nPYTHON_NFC_VERSION = 0.13.5\nPYTHON_NFC_SITE = $(call github,nfcpy,nfcpy,v$(PYTHON_NFC_VERSION))\nPYTHON_NFC_DEPENDENCIES = libusb libusb-compat\nPYTHON_NFC_SETUP_TYPE = setuptools\nPYTHON_NFC_LICENSE = EUPL-1.1+\nPYTHON_NFC_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-numpy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\tbool\n\t# Numpy has some CPU specific code\n\tdefault y if BR2_arc\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_arm\n\tdefault y if BR2_armeb\n\tdefault y if BR2_i386\n\tdefault y if BR2_mips\n\tdefault y if BR2_mipsel\n\tdefault y if BR2_powerpc\n\tdefault y if BR2_powerpc64\n\tdefault y if BR2_sh\n\tdefault y if BR2_x86_64\n\nconfig BR2_PACKAGE_PYTHON_NUMPY\n\tbool \"python-numpy\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\t# python-numpy needs fenv.h which is not provided by uclibc\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  NumPy is the fundamental package for scientific computing\n\t  with Python.\n\n\t  Note that NumPy needs fenv.h fully supported by the\n\t  C library.\n\n\t  http://www.numpy.org/\n\ncomment \"python-numpy needs glibc or musl\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\tdepends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)\n"
  },
  {
    "path": "package/python-numpy/python-numpy.hash",
    "content": "# Copied from https://github.com/numpy/numpy/releases/tag/v1.18.1\nsha256  da204ce460aa4247e595b7c7189d2fb2ed5f796bc03197055de01dac61d0125e\tnumpy-1.18.2.tar.gz\n# License files, locally calculated\nsha256  ad81d0c21843ba6ce6fe5fa3eaacb61120be70cd798c52f63df3f4c12a843f0c\tLICENSE.txt\nsha256  d3045980e80a6b39f98586c24bc7f39a7625b4b9f08ce72e367d12814743d047\tnumpy/core/src/multiarray/dragon4.c\nsha256  426a5a484480f57a295db48c2c04f47bb3274752dd82a7fd6541dfa2cb90f641\tdoc/sphinxext/LICENSE.txt\nsha256\t154a8706fa0fdeff1073bf6239c4ecf51f562ab107066eef839dade1a45c824c\tdoc/scipy-sphinx-theme/LICENSE.txt\nsha256  a14cc25e10d40a3aa705b7de2fb764a6535d8ee9b2db4e1724900585457dfd55\tnumpy/linalg/lapack_lite/LICENSE.txt\nsha256  badf51c7e3e7de9c7630bd069780f5c197b846ef7660b342a1e58d5553592d8e\ttools/npy_tempita/license.txt\n"
  },
  {
    "path": "package/python-numpy/python-numpy.mk",
    "content": "################################################################################\n#\n# python-numpy\n#\n################################################################################\n\nPYTHON_NUMPY_VERSION = 1.18.2\nPYTHON_NUMPY_SOURCE = numpy-$(PYTHON_NUMPY_VERSION).tar.gz\nPYTHON_NUMPY_SITE = https://github.com/numpy/numpy/releases/download/v$(PYTHON_NUMPY_VERSION)\nPYTHON_NUMPY_LICENSE = BSD-3-Clause, BSD-2-Clause, PSF, Apache-2.0, MIT, Zlib\nPYTHON_NUMPY_LICENSE_FILES = LICENSE.txt doc/sphinxext/LICENSE.txt \\\n\t\t\tdoc/scipy-sphinx-theme/LICENSE.txt \\\n\t\t\tnumpy/linalg/lapack_lite/LICENSE.txt \\\n\t\t\ttools/npy_tempita/license.txt \\\n\t\t\tnumpy/core/src/multiarray/dragon4.c\nPYTHON_NUMPY_SETUP_TYPE = setuptools\nPYTHON_NUMPY_DEPENDENCIES = host-python-cython\nHOST_PYTHON_NUMPY_DEPENDENCIES = host-python-cython\n\nifeq ($(BR2_PACKAGE_LAPACK),y)\nPYTHON_NUMPY_DEPENDENCIES += lapack\nelse\nPYTHON_NUMPY_ENV += BLAS=None LAPACK=None\nendif\n\nPYTHON_NUMPY_BUILD_OPTS = --fcompiler=None\n\ndefine PYTHON_NUMPY_CONFIGURE_CMDS\n\t-rm -f $(@D)/site.cfg\n\techo \"[DEFAULT]\" >> $(@D)/site.cfg\n\techo \"library_dirs = $(STAGING_DIR)/usr/lib\" >> $(@D)/site.cfg\n\techo \"include_dirs = $(STAGING_DIR)/usr/include\" >> $(@D)/site.cfg\nendef\n\n# Some package may include few headers from NumPy, so let's install it\n# in the staging area.\nPYTHON_NUMPY_INSTALL_STAGING = YES\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-oauthlib/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_OAUTHLIB\n\tbool \"python-oauthlib\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A generic, spec-compliant, thorough implementation of the\n\t  OAuth request-signing logic.\n\n\t  https://github.com/oauthlib/oauthlib\n"
  },
  {
    "path": "package/python-oauthlib/python-oauthlib.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/oauthlib/json\nmd5  9201e30a4eacf3ecfa15503b241ad5e3  oauthlib-3.1.1.tar.gz\nsha256  8f0215fcc533dd8dd1bee6f4c412d4f0cd7297307d43ac61666389e3bc3198a3  oauthlib-3.1.1.tar.gz\n# Locally computed sha256 checksums\nsha256  3d1e12d8ac52c0b6c148af6d291f72400b8720ed16c0ac4a89868b6d14b1c939  LICENSE\n"
  },
  {
    "path": "package/python-oauthlib/python-oauthlib.mk",
    "content": "################################################################################\n#\n# python-oauthlib\n#\n################################################################################\n\nPYTHON_OAUTHLIB_VERSION = 3.1.1\nPYTHON_OAUTHLIB_SOURCE = oauthlib-$(PYTHON_OAUTHLIB_VERSION).tar.gz\nPYTHON_OAUTHLIB_SITE = https://files.pythonhosted.org/packages/9e/84/001a3f8d9680f3b26d5e7711e13d5ff92e4b511766a72ac6b4a4e5f06796\nPYTHON_OAUTHLIB_SETUP_TYPE = setuptools\nPYTHON_OAUTHLIB_LICENSE = BSD-3-Clause\nPYTHON_OAUTHLIB_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-opcua-asyncio/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_OPCUA_ASYNCIO\n\tbool \"python-opcua-asyncio\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIOFILES # runtime\n\tselect BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime\n\tselect BR2_PACKAGE_PYTHON_DATEUTIL # runtime\n\tselect BR2_PACKAGE_PYTHON_LXML # runtime\n\tselect BR2_PACKAGE_PYTHON_PYTZ # runtime\n\thelp\n\t  opcua-asyncio is an asyncio-based asynchronous\n\t  OPC UA client based on python-opcua, removing\n\t  hacks for support of python < 3.6.\n\n\t  https://github.com/FreeOpcUa/opcua-asyncio\n"
  },
  {
    "path": "package/python-opcua-asyncio/python-opcua-asyncio.hash",
    "content": "# Locally computed\nsha256  e5fab37a92162351fe40cab43df09db8a2e9f8b8a2a8f13ed680aa6f6d687ec3  opcua-asyncio-0.8.4.tar.gz\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  COPYING\n"
  },
  {
    "path": "package/python-opcua-asyncio/python-opcua-asyncio.mk",
    "content": "################################################################################\n#\n# python-opcua-asyncio\n#\n################################################################################\n\nPYTHON_OPCUA_ASYNCIO_VERSION = 0.8.4\nPYTHON_OPCUA_ASYNCIO_SOURCE = opcua-asyncio-$(PYTHON_OPCUA_ASYNCIO_VERSION).tar.gz\nPYTHON_OPCUA_ASYNCIO_SITE = $(call github,FreeOpcUa,opcua-asyncio,$(PYTHON_OPCUA_ASYNCIO_VERSION))\nPYTHON_OPCUA_ASYNCIO_SETUP_TYPE = setuptools\nPYTHON_OPCUA_ASYNCIO_LICENSE = LGPL-3.0+\nPYTHON_OPCUA_ASYNCIO_LICENSE_FILES = COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-packaging/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PACKAGING\n\tbool \"python-packaging\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_PYPARSING # runtime\n\thelp\n\t  Core utilities for Python packages.\n\n\t  https://github.com/pypa/packaging\n"
  },
  {
    "path": "package/python-packaging/python-packaging.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/packaging/json\nmd5  240ba5823ed31051a1254e74c9d18d55  packaging-21.0.tar.gz\nsha256  7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7  packaging-21.0.tar.gz\n# Locally computed sha256 checksums\nsha256  cad1ef5bd340d73e074ba614d26f7deaca5c7940c3d8c34852e65c4909686c48  LICENSE\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  LICENSE.APACHE\nsha256  b70e7e9b742f1cc6f948b34c16aa39ffece94196364bc88ff0d2180f0028fac5  LICENSE.BSD\n"
  },
  {
    "path": "package/python-packaging/python-packaging.mk",
    "content": "################################################################################\n#\n# python-packaging\n#\n################################################################################\n\nPYTHON_PACKAGING_VERSION = 21.0\nPYTHON_PACKAGING_SOURCE = packaging-$(PYTHON_PACKAGING_VERSION).tar.gz\nPYTHON_PACKAGING_SITE = https://files.pythonhosted.org/packages/df/86/aef78bab3afd461faecf9955a6501c4999933a48394e90f03cd512aad844\nPYTHON_PACKAGING_SETUP_TYPE = setuptools\nPYTHON_PACKAGING_LICENSE = Apache-2.0 or BSD-2-Clause\nPYTHON_PACKAGING_LICENSE_FILES = LICENSE LICENSE.APACHE LICENSE.BSD\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-paho-mqtt/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PAHO_MQTT\n\tbool \"python-paho-mqtt\"\n\thelp\n\t  The Paho Python Client provides a client class with support\n\t  for both MQTT v3.1 and v3.1.1 on Python 2.7 or 3.x. It also\n\t  provides some helper functions to make publishing messages\n\t  to an MQTT server very straightforward.\n\n\t  https://pypi.python.org/pypi/paho-mqtt\n"
  },
  {
    "path": "package/python-paho-mqtt/python-paho-mqtt.hash",
    "content": "# locally computed\nsha256  6e35c1be242a901fc9c00bad7d37b5cc4a497f398dfceb4ed0d8018a959be650  python-paho-mqtt-1.6.1.tar.gz\nsha256  66408b049249c3bdb0ba1ed285f5422ce67e371d40151bebd4d806af454ffe7c  LICENSE.txt\nsha256  e8cf7d54ea46c19aba793983889b7f7425e1ebfcaaccec764a7db091646e203c  edl-v10\nsha256  8c349f80764d0648e645f41ef23772a70c995a0924b5235f735f4a3d09df127c  epl-v20\n\n"
  },
  {
    "path": "package/python-paho-mqtt/python-paho-mqtt.mk",
    "content": "################################################################################\n#\n# python-paho-mqtt\n#\n################################################################################\n\nPYTHON_PAHO_MQTT_VERSION = 1.6.1\nPYTHON_PAHO_MQTT_SITE = $(call github,eclipse,paho.mqtt.python,v$(PYTHON_PAHO_MQTT_VERSION))\nPYTHON_PAHO_MQTT_LICENSE = EPL-2.0, EDLv1.0\nPYTHON_PAHO_MQTT_LICENSE_FILES = LICENSE.txt epl-v20 edl-v10\nPYTHON_PAHO_MQTT_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pam/0001-dealloc.patch",
    "content": "[PATCH] fix two bugs in the PAM object deallocation\n\nFixes https://bugzilla.redhat.com/show_bug.cgi?id=658955\n\nDownloaded from:\nhttp://pkgs.fedoraproject.org/cgit/PyPAM.git/plain/PyPAM-0.5.0-dealloc.patch\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\ndiff -up PyPAM-0.5.0/PAMmodule.c.dealloc PyPAM-0.5.0/PAMmodule.c\n--- PyPAM-0.5.0/PAMmodule.c.dealloc\t2011-01-17 22:48:22.000000000 +0100\n+++ PyPAM-0.5.0/PAMmodule.c\t2011-01-18 21:24:59.000000000 +0100\n@@ -538,10 +538,11 @@ static void PyPAM_dealloc(PyPAMObject *s\n     free(self->service);\n     free(self->user);\n     free(self->conv);\n-    pam_end(self->pamh, PAM_SUCCESS);\n+    if (self->pamh)\n+        pam_end(self->pamh, PAM_SUCCESS);\n     dlclose(self->dlh2);\n     dlclose(self->dlh1);\n-    PyMem_DEL(self);\n+    PyObject_Del(self);\n }\n \n static PyObject * PyPAM_getattr(PyPAMObject *self, char *name)\n"
  },
  {
    "path": "package/python-pam/0002-nofree.patch",
    "content": "[PATCH] deallocate the conversation response only in case of error\n\nFixes https://bugzilla.redhat.com/show_bug.cgi?id=679714\n\nDownloaded from:\nhttp://pkgs.fedoraproject.org/cgit/PyPAM.git/plain/PyPAM-0.5.0-nofree.patch\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\ndiff --git a/PAMmodule.c b/PAMmodule.c\nindex 03cb799..a7ff8a5 100644\n--- a/PAMmodule.c\n+++ b/PAMmodule.c\n@@ -24,8 +24,6 @@ typedef struct {\n     char                *service;\n     char                *user;\n     PyObject            *callback;\n-    struct pam_response *response_data;\n-    int                 response_len;\n     PyObject            *user_data;\n     void                *dlh1, *dlh2;\n } PyPAMObject;\n@@ -54,15 +52,6 @@ static int PyPAM_conv(int num_msg, const struct pam_message **msg,\n \n     Py_INCREF(self);\n \n-    if (NULL != self->response_data) {\n-        for (int i = 0; i < self->response_len; i++) {\n-            free(self->response_data[0].resp);\n-        }\n-        free(self->response_data);\n-        self->response_data = NULL;\n-        self->response_len = 0;\n-    }\n-\n     PyObject* msgList = PyList_New(num_msg);\n     \n     for (int i = 0; i < num_msg; i++) {\n@@ -92,6 +81,10 @@ static int PyPAM_conv(int num_msg, const struct pam_message **msg,\n         char* resp_text;\n         int resp_retcode = 0;\n         if (!PyArg_ParseTuple(respTuple, \"si\", &resp_text, &resp_retcode)) {\n+            while (i > 0) {\n+                free((--spr)->resp);\n+                --i;\n+            }\n             free(*resp);\n             Py_DECREF(respList);\n             return PAM_CONV_ERR;\n@@ -100,10 +93,6 @@ static int PyPAM_conv(int num_msg, const struct pam_message **msg,\n         spr->resp_retcode = resp_retcode;\n         Py_DECREF(respTuple);\n     }\n-    \n-    // Save this so we can free it later.\n-    self->response_data = *resp;\n-    self->response_len = PyList_Size(respList);\n \n     Py_DECREF(respList);\n     \n@@ -144,8 +133,6 @@ static PyObject * PyPAM_pam(PyObject *self, PyObject *args)\n     p->user = NULL;\n     Py_INCREF(Py_None);\n     p->callback = Py_None;\n-    p->response_data = NULL;\n-    p->response_len = 0;\n     Py_INCREF(Py_None);\n     p->user_data = Py_None;\n     \n"
  },
  {
    "path": "package/python-pam/0003-memory-errors-CVE2012-1502.patch",
    "content": "[PATCH] Fix Double Free Corruption (CVE2012-1502)\n\nDownloaded from:\nhttp://pkgs.fedoraproject.org/cgit/PyPAM.git/plain/PyPAM-0.5.0-memory-errors.patch\n\nFor details, see: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-1502\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\ndiff -up PyPAM-0.5.0/PAMmodule.c.memory PyPAM-0.5.0/PAMmodule.c\n--- PyPAM-0.5.0/PAMmodule.c.memory\t2012-05-07 17:22:54.503914026 +0200\n+++ PyPAM-0.5.0/PAMmodule.c\t2012-05-07 17:23:15.644381942 +0200\n@@ -37,33 +37,48 @@ static void PyPAM_Err(PyPAMObject *self,\n \n     err_msg = pam_strerror(self->pamh, result);\n     error = Py_BuildValue(\"(si)\", err_msg, result);\n-    Py_INCREF(PyPAM_Error);\n     PyErr_SetObject(PyPAM_Error, error);\n+    Py_XDECREF(error);\n }\n \n static int PyPAM_conv(int num_msg, const struct pam_message **msg,\n     struct pam_response **resp, void *appdata_ptr)\n {\n-    PyObject                *args;\n-\n+    PyObject *args, *msgList, *respList, *item;\n+    struct pam_response *response, *spr;\n     PyPAMObject* self = (PyPAMObject *) appdata_ptr;\n+\n     if (self->callback == NULL)\n         return PAM_CONV_ERR;\n \n     Py_INCREF(self);\n \n-    PyObject* msgList = PyList_New(num_msg);\n-    \n+    msgList = PyList_New(num_msg);\n+    if (msgList == NULL) {\n+        Py_DECREF(self);\n+        return PAM_CONV_ERR;\n+    }\n+\n     for (int i = 0; i < num_msg; i++) {\n-        PyList_SetItem(msgList, i,\n-            Py_BuildValue(\"(si)\", msg[i]->msg, msg[i]->msg_style));\n+        item = Py_BuildValue(\"(si)\", msg[i]->msg, msg[i]->msg_style);\n+        if (item == NULL) {\n+            Py_DECREF(msgList);\n+            Py_DECREF(self);\n+            return PAM_CONV_ERR;\n+        }\n+        PyList_SetItem(msgList, i, item);\n     }\n-    \n+\n     args = Py_BuildValue(\"(OO)\", self, msgList);\n-    PyObject* respList = PyEval_CallObject(self->callback, args);\n+    if (args == NULL) {\n+        Py_DECREF(self);\n+\tPy_DECREF(msgList);\n+        return PAM_CONV_ERR;\n+    }\n+    respList = PyEval_CallObject(self->callback, args);\n     Py_DECREF(args);\n     Py_DECREF(self);\n-    \n+\n     if (respList == NULL)\n         return PAM_CONV_ERR;\n \n@@ -71,11 +86,15 @@ static int PyPAM_conv(int num_msg, const\n         Py_DECREF(respList);\n         return PAM_CONV_ERR;\n     }\n-    \n-    *resp = (struct pam_response *) malloc(\n+\n+    response = (struct pam_response *) malloc(\n         PyList_Size(respList) * sizeof(struct pam_response));\n+    if (response == NULL) {\n+        Py_DECREF(respList);\n+        return PAM_CONV_ERR;\n+    }\n+    spr = response;\n \n-    struct pam_response* spr = *resp;\n     for (int i = 0; i < PyList_Size(respList); i++, spr++) {\n         PyObject* respTuple = PyList_GetItem(respList, i);\n         char* resp_text;\n@@ -85,7 +104,7 @@ static int PyPAM_conv(int num_msg, const\n                 free((--spr)->resp);\n                 --i;\n             }\n-            free(*resp);\n+            free(response);\n             Py_DECREF(respList);\n             return PAM_CONV_ERR;\n         }\n@@ -95,7 +114,8 @@ static int PyPAM_conv(int num_msg, const\n     }\n \n     Py_DECREF(respList);\n-    \n+    *resp = response;\n+\n     return PAM_SUCCESS;\n }\n \n@@ -122,7 +142,11 @@ static PyObject * PyPAM_pam(PyObject *se\n     PyPAMObject_Type.ob_type = &PyType_Type;\n     p = (PyPAMObject *) PyObject_NEW(PyPAMObject, &PyPAMObject_Type);\n \n+    if (p == NULL)\n+        return NULL;\n+\n     if ((spc = (struct pam_conv *) malloc(sizeof(struct pam_conv))) == NULL) {\n+        Py_DECREF((PyObject *)p);\n         PyErr_SetString(PyExc_MemoryError, \"out of memory\");\n         return NULL;\n     }\n@@ -455,9 +479,15 @@ static PyObject * PyPAM_getenvlist(PyObj\n     }\n     \n     retval = PyList_New(0);\n+    if (retval == NULL)\n+\treturn NULL;\n     \n     while ((cp = *(result++)) != NULL) {\n         entry = Py_BuildValue(\"s\", cp);\n+        if (entry == NULL) {\n+            Py_DECREF(retval);\n+            return NULL;\n+        }\n         PyList_Append(retval, entry);\n         Py_DECREF(entry);\n     }\n"
  },
  {
    "path": "package/python-pam/Config.in",
    "content": "comment \"python-pam needs a toolchain w/ wchar, locale, dynamic library\"\n\tdepends on BR2_PACKAGE_PYTHON\n\tdepends on !BR2_ENABLE_LOCALE || !BR2_USE_WCHAR || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_PYTHON_PAM\n\tbool \"python-pam\"\n\tdepends on BR2_PACKAGE_PYTHON # C extension not compatible with python3\n\tdepends on BR2_ENABLE_LOCALE # linux-pam\n\tdepends on BR2_USE_WCHAR # linux-pam\n\tdepends on BR2_USE_MMU # linux-pam\n\tdepends on !BR2_STATIC_LIBS # linux-pam\n\tselect BR2_PACKAGE_LINUX_PAM\n\thelp\n\t  PAM (Pluggable Authentication Module) bindings for Python.\n\n\t  https://admin.fedoraproject.org/pkgdb/package/PyPAM/\n"
  },
  {
    "path": "package/python-pam/python-pam.hash",
    "content": "# locally computed\nsha256  796ac019b9ee805696d0d277d8fb912fa2391b6ac070dc6f9f1a9a0fadbc3a5a  PyPAM-0.5.0.tar.gz\nsha256  ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532  COPYING\n"
  },
  {
    "path": "package/python-pam/python-pam.mk",
    "content": "################################################################################\n#\n# python-pam\n#\n################################################################################\n\nPYTHON_PAM_VERSION = 0.5.0\nPYTHON_PAM_SOURCE = PyPAM-$(PYTHON_PAM_VERSION).tar.gz\n# pangalactic.org gone\nPYTHON_PAM_SITE = http://pkgs.fedoraproject.org/repo/pkgs/PyPAM/PyPAM-0.5.0.tar.gz/f1e7c2c56421dda28a75ace59a3c8871\nPYTHON_PAM_SETUP_TYPE = distutils\nPYTHON_PAM_LICENSE = LGPL-2.1\nPYTHON_PAM_LICENSE_FILES = COPYING\nPYTHON_PAM_DEPENDENCIES = linux-pam\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-paramiko/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PARAMIKO\n\tbool \"python-paramiko\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography\n\tdepends on BR2_PACKAGE_PYTHON3 # python-bcrypt, python-cryptography\n\tselect BR2_PACKAGE_PYTHON_BCRYPT # runtime\n\tselect BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime\n\tselect BR2_PACKAGE_PYTHON_PYNACL # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB # runtime\n\thelp\n\t  SSH2 protocol library.\n\n\t  https://github.com/paramiko/paramiko/\n"
  },
  {
    "path": "package/python-paramiko/python-paramiko.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/paramiko/json\nmd5  44136d79da4cd7619e368018ad022619  paramiko-2.7.2.tar.gz\nsha256  7f36f4ba2c0d81d219f4595e35f70d56cc94f9ac40a6acdf51d6ca210ce65035  paramiko-2.7.2.tar.gz\n# Locally computed sha256 checksums\nsha256  5fa25bf5f395fd26e701c2e1de4ca7d162816986dc791c22f8f4226857ad1bb2  LICENSE\n"
  },
  {
    "path": "package/python-paramiko/python-paramiko.mk",
    "content": "################################################################################\n#\n# python-paramiko\n#\n################################################################################\n\nPYTHON_PARAMIKO_VERSION = 2.7.2\nPYTHON_PARAMIKO_SOURCE = paramiko-$(PYTHON_PARAMIKO_VERSION).tar.gz\nPYTHON_PARAMIKO_SITE = https://files.pythonhosted.org/packages/cf/a1/20d00ce559a692911f11cadb7f94737aca3ede1c51de16e002c7d3a888e0\nPYTHON_PARAMIKO_SETUP_TYPE = setuptools\nPYTHON_PARAMIKO_LICENSE = LGPL-2.1+\nPYTHON_PARAMIKO_LICENSE_FILES = LICENSE\nPYTHON_PARAMIKO_CPE_ID_VENDOR = paramiko\nPYTHON_PARAMIKO_CPE_ID_PRODUCT = paramiko\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-parso/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PARSO\n\tbool \"python-parso\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A Python Parser.\n\n\t  https://github.com/davidhalter/parso\n"
  },
  {
    "path": "package/python-parso/python-parso.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/parso/json\nmd5  dd8fed40ceb890d3e277ad44a678c1f1  parso-0.8.2.tar.gz\nsha256  12b83492c6239ce32ff5eed6d3639d6a536170723c6f3f1506869f1ace413398  parso-0.8.2.tar.gz\n# Locally computed sha256 checksums\nsha256  fa67973073753d17624caf8684d5ee816d70c89d912c5bca7ca0f08e7b150edb  LICENSE.txt\nsha256  9c1e620a5cf8e74fe81c1fd4c55e9cc0b189fc04e677cfc7ef915de746c3f59e  docs/_themes/flask/LICENSE\nsha256  368780dd953e09148834e8d8c6cc1b09b3d621e77dbd1c4f5e8873561acda873  test/normalizer_issue_files/LICENSE\n"
  },
  {
    "path": "package/python-parso/python-parso.mk",
    "content": "################################################################################\n#\n# python-parso\n#\n################################################################################\n\nPYTHON_PARSO_VERSION = 0.8.2\nPYTHON_PARSO_SOURCE = parso-$(PYTHON_PARSO_VERSION).tar.gz\nPYTHON_PARSO_SITE = https://files.pythonhosted.org/packages/5e/61/d119e2683138a934550e47fc8ec023eb7f11b194883e9085dca3af5d4951\nPYTHON_PARSO_SETUP_TYPE = setuptools\nPYTHON_PARSO_LICENSE = MIT, Python-2.0, BSD-3-Clause (flask theme)\nPYTHON_PARSO_LICENSE_FILES = LICENSE.txt docs/_themes/flask/LICENSE test/normalizer_issue_files/LICENSE\nPYTHON_PARSO_CPE_ID_VENDOR = parso_project\nPYTHON_PARSO_CPE_ID_PRODUCT = parso\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-passlib/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PASSLIB\n\tbool \"python-passlib\"\n\thelp\n\t  comprehensive password hashing framework supporting over 30\n\t  schemes.\n\n\t  https://passlib.readthedocs.io\n"
  },
  {
    "path": "package/python-passlib/python-passlib.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/passlib/json\nmd5  3a229cbd00dfb33e99885b43325e0591  passlib-1.7.4.tar.gz\nsha256  defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04  passlib-1.7.4.tar.gz\n# Locally computed sha256 checksums\nsha256  a95ba8f1af88ff8d5f0d0c33519f430b7f9d8992b69d4bc369ac0423a7a05a89  LICENSE\n"
  },
  {
    "path": "package/python-passlib/python-passlib.mk",
    "content": "################################################################################\n#\n# python-passlib\n#\n################################################################################\n\nPYTHON_PASSLIB_VERSION = 1.7.4\nPYTHON_PASSLIB_SOURCE = passlib-$(PYTHON_PASSLIB_VERSION).tar.gz\nPYTHON_PASSLIB_SITE = https://files.pythonhosted.org/packages/b6/06/9da9ee59a67fae7761aab3ccc84fa4f3f33f125b370f1ccdb915bf967c11\nPYTHON_PASSLIB_SETUP_TYPE = setuptools\nPYTHON_PASSLIB_LICENSE = BSD-3-Clause\nPYTHON_PASSLIB_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pathlib2/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PATHLIB2\n\tbool \"python-pathlib2\"\n\tdepends on BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Object-oriented filesystem paths.\n\n\t  The goal of pathlib2 is to provide a backport of standard\n\t  pathlib module which tracks the standard library module, so\n\t  all the newest features of the standard pathlib can be used\n\t  also on older Python versions.\n\n\t  https://pypi.python.org/pypi/pathlib2\n"
  },
  {
    "path": "package/python-pathlib2/python-pathlib2.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pathlib2/json\nmd5\tf2bd0a363eb0f8fa0556f35c1d9e66fb  pathlib2-2.3.5.tar.gz\nsha256\t6cd9a47b597b37cc57de1c05e56fb1a1c9cc9fab04fe78c29acd090418529868  pathlib2-2.3.5.tar.gz\n# Locally computed sha256 checksums\nsha256\tf8e02f1a07e4c6fc59a4bee831ddde26b97064105c423b9e24340f35aaa80262  LICENSE.rst\n"
  },
  {
    "path": "package/python-pathlib2/python-pathlib2.mk",
    "content": "################################################################################\n#\n# python-pathlib2\n#\n################################################################################\n\nPYTHON_PATHLIB2_VERSION = 2.3.5\nPYTHON_PATHLIB2_SOURCE = pathlib2-$(PYTHON_PATHLIB2_VERSION).tar.gz\nPYTHON_PATHLIB2_SITE = https://files.pythonhosted.org/packages/94/d8/65c86584e7e97ef824a1845c72bbe95d79f5b306364fa778a3c3e401b309\nPYTHON_PATHLIB2_LICENSE = MIT\nPYTHON_PATHLIB2_LICENSE_FILES = LICENSE.rst\nPYTHON_PATHLIB2_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pathpy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PATHPY\n\tbool \"python-pathpy\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  path.py implements a path objects as first-class\n\t  entities, allowing common operations on files to\n\t  be invoked on those path objects directly.\n\n\t  https://github.com/jaraco/path.py\n"
  },
  {
    "path": "package/python-pathpy/python-pathpy.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/path.py/json\nmd5\t307098b1827af6031687edb49ce2c39c  path.py-12.0.1.tar.gz\nsha256\t9f2169633403aa0423f6ec000e8701dd1819526c62465f5043952f92527fea0f  path.py-12.0.1.tar.gz\n# Locally computed sha256 checksums\nsha256\ta55e2ffe9b44998e621d51d8c094bed09acc4b5236ee73d7df395a33ba3c18fd  LICENSE\n"
  },
  {
    "path": "package/python-pathpy/python-pathpy.mk",
    "content": "################################################################################\n#\n# python-pathpy\n#\n################################################################################\n\nPYTHON_PATHPY_VERSION = 12.0.1\nPYTHON_PATHPY_SOURCE = path.py-$(PYTHON_PATHPY_VERSION).tar.gz\nPYTHON_PATHPY_SITE = https://files.pythonhosted.org/packages/70/63/c01c1bb2df17db4c78f78cc439a2800f55bec5445cabf1f3579a37909f41\nPYTHON_PATHPY_SETUP_TYPE = setuptools\nPYTHON_PATHPY_LICENSE = MIT\nPYTHON_PATHPY_LICENSE_FILES = LICENSE\nPYTHON_PATHPY_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pathtools/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PATHTOOLS\n\tbool \"python-pathtools\"\n\thelp\n\t  File system general utilities.\n\n\t  http://github.com/gorakhargosh/pathtools\n"
  },
  {
    "path": "package/python-pathtools/python-pathtools.hash",
    "content": "# md5 from https://pypi.python.org/pypi/pathtools/json\nmd5\t9a1af5c605768ea5804b03b734ff0f82  pathtools-0.1.2.tar.gz\n# sha256 calculated by scanpypi\nsha256\t7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0  pathtools-0.1.2.tar.gz\n# Locally computed\nsha256  b52d83fba08f61bd1e603fee1b44cbc7ead9fcb512a5ceb8c53fec90ba415ac4  LICENSE\n"
  },
  {
    "path": "package/python-pathtools/python-pathtools.mk",
    "content": "################################################################################\n#\n# python-pathtools\n#\n################################################################################\n\nPYTHON_PATHTOOLS_VERSION = 0.1.2\nPYTHON_PATHTOOLS_SOURCE = pathtools-$(PYTHON_PATHTOOLS_VERSION).tar.gz\nPYTHON_PATHTOOLS_SITE = https://pypi.python.org/packages/e7/7f/470d6fcdf23f9f3518f6b0b76be9df16dcc8630ad409947f8be2eb0ed13a\nPYTHON_PATHTOOLS_SETUP_TYPE = setuptools\nPYTHON_PATHTOOLS_LICENSE = MIT\nPYTHON_PATHTOOLS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pathvalidate/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PATHVALIDATE\n\tbool \"python-pathvalidate\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  pathvalidate is a python library to validate/sanitize a string\n\t  such as filename/variable-name.\n\n\t  https://github.com/thombashi/pathvalidate\n"
  },
  {
    "path": "package/python-pathvalidate/python-pathvalidate.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pathvalidate/json\nmd5  afc0343cd8c4ad732431a8b860d73330  pathvalidate-2.5.0.tar.gz\nsha256  119ba36be7e9a405d704c7b7aea4b871c757c53c9adc0ed64f40be1ed8da2781  pathvalidate-2.5.0.tar.gz\n# Locally computed sha256 checksums\nsha256  a93d75bcb0774e2990106380cadad6dcb2de193c55d435ffc56ba345a08b1dc2  LICENSE\n"
  },
  {
    "path": "package/python-pathvalidate/python-pathvalidate.mk",
    "content": "################################################################################\n#\n# python-pathvalidate\n#\n################################################################################\n\nPYTHON_PATHVALIDATE_VERSION = 2.5.0\nPYTHON_PATHVALIDATE_SOURCE = pathvalidate-$(PYTHON_PATHVALIDATE_VERSION).tar.gz\nPYTHON_PATHVALIDATE_SITE = https://files.pythonhosted.org/packages/2e/89/7853a1ea323e848ab1e90c8930733bc19e35a935deb80d78b572c36ea33f\nPYTHON_PATHVALIDATE_SETUP_TYPE = setuptools\nPYTHON_PATHVALIDATE_LICENSE = MIT\nPYTHON_PATHVALIDATE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pbr/python-pbr.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pbr/json\nmd5  62565acc6bf3e7e10b082463421f8b46  pbr-5.6.0.tar.gz\nsha256  42df03e7797b796625b1029c0400279c7c34fd7df24a7d7818a1abb5b38710dd  pbr-5.6.0.tar.gz\n# Locally computed sha256 checksums\nsha256  5df2a0d87d6c562f0ea11c688ac52532aa28d744cabc7994ff0537f64b3b3320  LICENSE\nsha256  eb4a8c8791f6caab1cf36df26db2b6f4e2ddda52657b060ff7f02abc63910aef  pbr/tests/testpackage/LICENSE.txt\n"
  },
  {
    "path": "package/python-pbr/python-pbr.mk",
    "content": "################################################################################\n#\n# python-pbr\n#\n################################################################################\n\nPYTHON_PBR_VERSION = 5.6.0\nPYTHON_PBR_SOURCE = pbr-$(PYTHON_PBR_VERSION).tar.gz\nPYTHON_PBR_SITE = https://files.pythonhosted.org/packages/35/8c/69ed04ae31ad498c9bdea55766ed4c0c72de596e75ac0d70b58aa25e0acf\nPYTHON_PBR_SETUP_TYPE = setuptools\nPYTHON_PBR_LICENSE = Apache-2.0 (module), BSD-3-Clause (test package)\nPYTHON_PBR_LICENSE_FILES = LICENSE pbr/tests/testpackage/LICENSE.txt\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-peewee/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PEEWEE\n\tbool \"python-peewee\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A little ORM.\n\n\t  https://github.com/coleifer/peewee\n"
  },
  {
    "path": "package/python-peewee/python-peewee.hash",
    "content": "sha256\tf0249be468e3b119a8ad83f686e7fe161303197e0534e3cdff8fa5a5417c01a5  peewee-3.9.5.tar.gz\n\n"
  },
  {
    "path": "package/python-peewee/python-peewee.mk",
    "content": "################################################################################\n#\n# python-peewee\n#\n################################################################################\n\nPYTHON_PEEWEE_VERSION = 3.9.5\nPYTHON_PEEWEE_SOURCE = peewee-$(PYTHON_PEEWEE_VERSION).tar.gz\nPYTHON_PEEWEE_SITE = https://files.pythonhosted.org/packages/ec/72/784eaf8c15d1dd0d5c126b2180bf3dd860611f7ba2b746c8e9cacee9a172\nPYTHON_PEEWEE_SETUP_TYPE = setuptools\nPYTHON_PEEWEE_LICENSE = Apache-2.0\nPYTHON_PEEWEE_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-peewee-migrate/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PEEWEE_MIGRATE\n\tbool \"python-peewee-migrate\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Simple migration engine for Peewee.\n\n\t  https://github.com/klen/peewee_migrate\n"
  },
  {
    "path": "package/python-peewee-migrate/python-peewee-migrate.hash",
    "content": "sha256\t9291c6cd39d214644ebc5d2ef2a43f9310f9546aedc8280015647c6f8ef92614  peewee_migrate-1.1.6.tar.gz\n"
  },
  {
    "path": "package/python-peewee-migrate/python-peewee-migrate.mk",
    "content": "################################################################################\n#\n# python-peewee-migrate\n#\n################################################################################\n\nPYTHON_PEEWEE_MIGRATE_VERSION = 1.1.6\nPYTHON_PEEWEE_MIGRATE_SOURCE = peewee_migrate-$(PYTHON_PEEWEE_MIGRATE_VERSION).tar.gz\nPYTHON_PEEWEE_MIGRATE_SITE = https://files.pythonhosted.org/packages/d2/ed/24d221811e9f735719795a08da1e8bcc9f133b46a02d7862b521733320b6\nPYTHON_PEEWEE_MIGRATE_SETUP_TYPE = setuptools\nPYTHON_PEEWEE_MIGRATE_LICENSE = Apache-2.0\nPYTHON_PEEWEE_MIGRATE_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-periphery/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PERIPHERY\n\tbool \"python-periphery\"\n\thelp\n\t  A pure Python 2/3 library for peripheral I/O (GPIO, LED,\n\t  PWM, SPI, I2C, MMIO, Serial) in Linux.\n\n\t  https://github.com/vsergeev/python-periphery\n"
  },
  {
    "path": "package/python-periphery/python-periphery.hash",
    "content": "# Locally calculated\nsha256  385716bdbd11fcf2c5728548c3d42f12ebc0974faa64fa1a98b89b4a44dc004c  python-periphery-2.3.0.tar.gz\nsha256  76fe342043adfe8d9453c4979aa165476875137e15b0ddea1f4c3f3fa9808361  LICENSE\n"
  },
  {
    "path": "package/python-periphery/python-periphery.mk",
    "content": "################################################################################\n#\n# python-periphery\n#\n################################################################################\n\nPYTHON_PERIPHERY_VERSION = 2.3.0\nPYTHON_PERIPHERY_SITE = $(call github,vsergeev,python-periphery,v$(PYTHON_PERIPHERY_VERSION))\nPYTHON_PERIPHERY_LICENSE = MIT\nPYTHON_PERIPHERY_LICENSE_FILES = LICENSE\nPYTHON_PERIPHERY_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pexpect/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PEXPECT\n\tbool \"python-pexpect\"\n\tselect BR2_PACKAGE_PYTHON_PTYPROCESS # runtime\n\thelp\n\t  Pexpect is a pure Python module for spawning child\n\t  applications; controlling them; and responding to expected\n\t  patterns in their output. Pexpect works like Don Libes'\n\t  Expect. Pexpect allows your script to spawn a child\n\t  application and control it as if a human were typing\n\t  commands.\n\n\t  https://pexpect.readthedocs.org\n"
  },
  {
    "path": "package/python-pexpect/python-pexpect.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pexpect/json\nmd5\t153eb25184249d6a85fde9acf4804085  pexpect-4.8.0.tar.gz\nsha256\tfc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c  pexpect-4.8.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t4a483ae1c4dc738a6c8b73feb49074e1835da02ab5aa686f2675029906fa364d  LICENSE\n"
  },
  {
    "path": "package/python-pexpect/python-pexpect.mk",
    "content": "################################################################################\n#\n# python-pexpect\n#\n################################################################################\n\nPYTHON_PEXPECT_VERSION = 4.8.0\nPYTHON_PEXPECT_SOURCE = pexpect-$(PYTHON_PEXPECT_VERSION).tar.gz\nPYTHON_PEXPECT_SITE = https://files.pythonhosted.org/packages/e5/9b/ff402e0e930e70467a7178abb7c128709a30dfb22d8777c043e501bc1b10\nPYTHON_PEXPECT_LICENSE = ISC\nPYTHON_PEXPECT_LICENSE_FILES = LICENSE\nPYTHON_PEXPECT_SETUP_TYPE = distutils\n\n# async.py is not usable with Python 2, and removing is the solution\n# recommended by upstream:\n# https://github.com/pexpect/pexpect/issues/290\nifeq ($(BR2_PACKAGE_PYTHON),y)\ndefine PYTHON_PEXPECT_REMOVE_ASYNC_PY\n\t$(RM) $(@D)/pexpect/_async.py\nendef\nPYTHON_PEXPECT_POST_PATCH_HOOKS += PYTHON_PEXPECT_REMOVE_ASYNC_PY\nendif\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-picamera/0001-enable-awb-greyworld-mode.patch",
    "content": "diff --git a/picamera/camera.py b/picamera/camera.py\nindex 36b1202..a7da186 100644\n--- a/picamera/camera.py\n+++ b/picamera/camera.py\n@@ -274,6 +274,7 @@ class PiCamera(object):\n         'incandescent':  mmal.MMAL_PARAM_AWBMODE_INCANDESCENT,\n         'flash':         mmal.MMAL_PARAM_AWBMODE_FLASH,\n         'horizon':       mmal.MMAL_PARAM_AWBMODE_HORIZON,\n+        'greyworld':     mmal.MMAL_PARAM_AWBMODE_GREYWORLD,\n         }\n\n     IMAGE_EFFECTS = {\ndiff --git a/picamera/mmal.py b/picamera/mmal.py\nindex 81b059f..82b2b5f 100644\n--- a/picamera/mmal.py\n+++ b/picamera/mmal.py\n@@ -692,7 +692,8 @@ MMAL_PARAM_AWBMODE_T = ct.c_uint32 # enum\n     MMAL_PARAM_AWBMODE_INCANDESCENT,\n     MMAL_PARAM_AWBMODE_FLASH,\n     MMAL_PARAM_AWBMODE_HORIZON,\n-) = range(10)\n+    MMAL_PARAM_AWBMODE_GREYWORLD,\n+) = range(11)\n MMAL_PARAM_AWBMODE_MAX = 0x7fffffff\n\n class MMAL_PARAMETER_AWBMODE_T(ct.Structure):\n\n"
  },
  {
    "path": "package/python-picamera/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PICAMERA\n\tbool \"python-picamera\"\n"
  },
  {
    "path": "package/python-picamera/python-picamera.mk",
    "content": "################################################################################\n#\n# python-picamera\n#\n################################################################################\n\nPYTHON_PICAMERA_VERSION = 1.13\nPYTHON_PICAMERA_SOURCE = picamera-$(PYTHON_PICAMERA_VERSION).tar.gz\nPYTHON_PICAMERA_SITE = https://pypi.python.org/packages/79/c4/80afe871d82ab1d5c9d8f0c0258228a8a0ed96db07a78ef17e7fba12fda8\nPYTHON_PICAMERA_ENV = READTHEDOCS=True\n                      \nPYTHON_PICAMERA_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pickleshare/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PICKLESHARE\n\tbool \"python-pickleshare\"\n\tselect BR2_PACKAGE_PYTHON_PATHLIB2 if BR2_PACKAGE_PYTHON # runtime\n\thelp\n\t  Tiny 'shelve'-like database with concurrency support\n\n\t  https://pypi.python.org/pypi/pickleshare\n"
  },
  {
    "path": "package/python-pickleshare/python-pickleshare.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pickleshare/json\nmd5\t44ab782615894a812ab96669a122a634  pickleshare-0.7.5.tar.gz\nsha256\t87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca  pickleshare-0.7.5.tar.gz\n# Locally computed sha256 checksums\nsha256\tdb1fefc1789444409514c0cae0bfab7f8e374ff9b78e092cecb1e0aeb6a36d90  LICENSE\n"
  },
  {
    "path": "package/python-pickleshare/python-pickleshare.mk",
    "content": "################################################################################\n#\n# python-pickleshare\n#\n################################################################################\n\nPYTHON_PICKLESHARE_VERSION = 0.7.5\nPYTHON_PICKLESHARE_SOURCE = pickleshare-$(PYTHON_PICKLESHARE_VERSION).tar.gz\nPYTHON_PICKLESHARE_SITE = https://files.pythonhosted.org/packages/d8/b6/df3c1c9b616e9c0edbc4fbab6ddd09df9535849c64ba51fcb6531c32d4d8\nPYTHON_PICKLESHARE_LICENSE = MIT\nPYTHON_PICKLESHARE_LICENSE_FILES = LICENSE\nPYTHON_PICKLESHARE_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-piexif/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PIEXIF\n\tbool \"python-piexif\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Piexif simplifies interacting with EXIF data in Python. It\n\t  includes the tools necessary for extracting, creating,\n\t  manipulating, converting and writing EXIF data to JPEG, WebP\n\t  and TIFF files.\n\n\t  https://github.com/hMatoba/Piexif\n"
  },
  {
    "path": "package/python-piexif/python-piexif.hash",
    "content": "# Locally computed sha256 checksums\nsha256\tabfd9a67795e23d7a76f9407d60841efa68c5d6e43376b295bb821a30602c569  python-piexif-1.1.3.tar.gz\nsha256\td517a0940b8eb92ace7fc88f75892d84d260d85b3062d36d9e6445bc5091f697  LICENSE.txt\n"
  },
  {
    "path": "package/python-piexif/python-piexif.mk",
    "content": "################################################################################\n#\n# python-piexif\n#\n################################################################################\n\nPYTHON_PIEXIF_VERSION = 1.1.3\nPYTHON_PIEXIF_SITE = $(call github,hMatoba,Piexif,$(PYTHON_PIEXIF_VERSION))\nPYTHON_PIEXIF_LICENSE = MIT\nPYTHON_PIEXIF_LICENSE_FILES = LICENSE.txt\nPYTHON_PIEXIF_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pigpio/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PIGPIO\n\tbool \"python-pigpio\"\n\thelp\n\t  Pigpio is a Python module for the Raspberry Pi\n\t  which talks to the pigpio daemon to allow control\n\t  of the general purpose input outputs (GPIO).\n\n\t  http://abyz.me.uk/rpi/pigpio/python.html\n"
  },
  {
    "path": "package/python-pigpio/python-pigpio.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pigpio/json\nmd5  e05e3f5cb6c50f4b3eeb4ac50627507e  pigpio-1.78.tar.gz\nsha256  91efa50e4990649da97408a384782d6ccf58342fc59cdfe21ed7a42911569975  pigpio-1.78.tar.gz\n"
  },
  {
    "path": "package/python-pigpio/python-pigpio.mk",
    "content": "################################################################################\n#\n# python-pigpio\n#\n################################################################################\n\nPYTHON_PIGPIO_VERSION = 1.78\nPYTHON_PIGPIO_SOURCE = pigpio-$(PYTHON_PIGPIO_VERSION).tar.gz\nPYTHON_PIGPIO_SITE = https://files.pythonhosted.org/packages/a9/4a/3ebdfd90906553fb5420e80a475eb52f0809f2a29b547ba3b260db0cbc8f\nPYTHON_PIGPIO_SETUP_TYPE = setuptools\nPYTHON_PIGPIO_LICENSE = Unlicense\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pillow/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PILLOW\n\tbool \"python-pillow\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB\n\thelp\n\t  Pillow is the \"friendly\" PIL fork by Alex Clark and\n\t  Contributors. PIL is the Python Imaging Library by Fredrik\n\t  Lundh and Contributors.\n\n\t  Pillow relies on external libraries to provide support\n\t  various image formats. Select the corresponding package(s)\n\t  to get this support. Pillow can use jpeg, zlib (for PNG),\n\t  tiff, freetype, webp, and openjpeg (JPEG-2000).\n\n\t  https://pypi.python.org/pypi/Pillow/\n"
  },
  {
    "path": "package/python-pillow/python-pillow.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pillow/json\nmd5  a7fc550b80819eab11e01cc097913700  Pillow-8.3.2.tar.gz\nsha256  dde3f3ed8d00c72631bc19cbfff8ad3b6215062a5eed402381ad365f82f0c18c  Pillow-8.3.2.tar.gz\n\n# Locally computed sha256 checksums\nsha256  5bb11d96b393a698df70018069a986248021f286344c437a13f299c3daf1dfd4  LICENSE\n"
  },
  {
    "path": "package/python-pillow/python-pillow.mk",
    "content": "################################################################################\n#\n# python-pillow\n#\n################################################################################\n\nPYTHON_PILLOW_VERSION = 8.3.2\nPYTHON_PILLOW_SITE = https://files.pythonhosted.org/packages/90/d4/a7c9b6c5d176654aa3dbccbfd0be4fd3a263355dc24122a5f1937bdc2689\nPYTHON_PILLOW_SOURCE = Pillow-$(PYTHON_PILLOW_VERSION).tar.gz\nPYTHON_PILLOW_LICENSE = HPND\nPYTHON_PILLOW_LICENSE_FILES = LICENSE\nPYTHON_PILLOW_CPE_ID_VENDOR = python\nPYTHON_PILLOW_CPE_ID_PRODUCT = pillow\nPYTHON_PILLOW_SETUP_TYPE = setuptools\nPYTHON_PILLOW_BUILD_OPTS = --disable-platform-guessing\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nPYTHON_PILLOW_DEPENDENCIES += freetype\nPYTHON_PILLOW_BUILD_OPTS += --enable-freetype\nelse\nPYTHON_PILLOW_BUILD_OPTS += --disable-freetype\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nPYTHON_PILLOW_DEPENDENCIES += jpeg\nPYTHON_PILLOW_BUILD_OPTS += --enable-jpeg\nelse\nPYTHON_PILLOW_BUILD_OPTS += --disable-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_LCMS2),y)\nPYTHON_PILLOW_DEPENDENCIES += lcms2\nPYTHON_PILLOW_BUILD_OPTS += --enable-lcms\nelse\nPYTHON_PILLOW_BUILD_OPTS += --disable-lcms\nendif\n\nifeq ($(BR2_PACKAGE_LIBXCB),y)\nPYTHON_PILLOW_DEPENDENCIES += libxcb\nPYTHON_PILLOW_BUILD_OPTS += --enable-xcb\nelse\nPYTHON_PILLOW_BUILD_OPTS += --disable-xcb\nendif\n\nifeq ($(BR2_PACKAGE_OPENJPEG),y)\nPYTHON_PILLOW_DEPENDENCIES += openjpeg\nPYTHON_PILLOW_BUILD_OPTS += --enable-jpeg2000\nelse\nPYTHON_PILLOW_BUILD_OPTS += --disable-jpeg2000\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nPYTHON_PILLOW_DEPENDENCIES += tiff\nPYTHON_PILLOW_BUILD_OPTS += --enable-tiff\nelse\nPYTHON_PILLOW_BUILD_OPTS += --disable-tiff\nendif\n\nifeq ($(BR2_PACKAGE_WEBP),y)\nPYTHON_PILLOW_DEPENDENCIES += webp\nPYTHON_PILLOW_BUILD_OPTS += --enable-webp\nifeq ($(BR2_PACKAGE_WEBP_DEMUX)$(BR2_PACKAGE_WEBP_MUX),yy)\nPYTHON_PILLOW_BUILD_OPTS += --enable-webpmux\nelse\nPYTHON_PILLOW_BUILD_OPTS += --disable-webpmux\nendif\nelse\nPYTHON_PILLOW_BUILD_OPTS += --disable-webp --disable-webpmux\nendif\n\ndefine PYTHON_PILLOW_BUILD_CMDS\n\tcd $(PYTHON_PILLOW_BUILDDIR); \\\n\t\tPKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \\\n\t\t$(PYTHON_PILLOW_BASE_ENV) $(PYTHON_PILLOW_ENV) \\\n\t\t$(PYTHON_PILLOW_PYTHON_INTERPRETER) setup.py build_ext \\\n\t\t$(PYTHON_PILLOW_BASE_BUILD_OPTS) $(PYTHON_PILLOW_BUILD_OPTS)\nendef\n\ndefine PYTHON_PILLOW_INSTALL_TARGET_CMDS\n\tcd $(PYTHON_PILLOW_BUILDDIR); \\\n\t\tPKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \\\n\t\t$(PYTHON_PILLOW_BASE_ENV) $(PYTHON_PILLOW_ENV) \\\n\t\t$(PYTHON_PILLOW_PYTHON_INTERPRETER) setup.py build_ext \\\n\t\t$(PYTHON_PILLOW_BUILD_OPTS) install \\\n\t\t$(PYTHON_PILLOW_BASE_INSTALL_TARGET_OPTS) \\\n\t\t$(PYTHON_PILLOW_INSTALL_TARGET_OPTS)\nendef\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pip/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PIP\n\tbool \"python-pip\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON3_SSL\n\thelp\n\t  The PyPA recommended tool for installing Python packages.\n\n\t  https://pip.pypa.io/\n"
  },
  {
    "path": "package/python-pip/python-pip.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pip/json\nmd5  efbdb4201a5e6383fb4d12e26f78f355  pip-21.2.4.tar.gz\nsha256  0eb8a1516c3d138ae8689c0c1a60fde7143310832f9dc77e11d8a4bc62de193b  pip-21.2.4.tar.gz\n# Locally computed sha256 checksums\nsha256  23a7361c2b1581028bc623b9da2bd24997abcaa4781ace6ad444a37944f8dae1  LICENSE.txt\n"
  },
  {
    "path": "package/python-pip/python-pip.mk",
    "content": "################################################################################\n#\n# python-pip\n#\n################################################################################\n\nPYTHON_PIP_VERSION = 21.2.4\nPYTHON_PIP_SOURCE = pip-$(PYTHON_PIP_VERSION).tar.gz\nPYTHON_PIP_SITE = https://files.pythonhosted.org/packages/52/e1/06c018197d8151383f66ebf6979d951995cf495629fc54149491f5d157d0\nPYTHON_PIP_SETUP_TYPE = setuptools\nPYTHON_PIP_LICENSE = MIT\nPYTHON_PIP_LICENSE_FILES = LICENSE.txt\nPYTHON_PIP_CPE_ID_VENDOR = pypa\nPYTHON_PIP_CPE_ID_PRODUCT = pip\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pluggy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PLUGGY\n\tbool \"python-pluggy\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  plugin and hook calling mechanisms for python.\n\n\t  https://github.com/pytest-dev/pluggy\n"
  },
  {
    "path": "package/python-pluggy/python-pluggy.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pluggy/json\nmd5  daa6fddfb6cd364f3c82e52098911e4b  pluggy-1.0.0.tar.gz\nsha256  4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159  pluggy-1.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256  d6b65e6c213a5d0b577911d34d6e5949b9f59d76c238c5071a2f3fc16cfb2606  LICENSE\n"
  },
  {
    "path": "package/python-pluggy/python-pluggy.mk",
    "content": "################################################################################\n#\n# python-pluggy\n#\n################################################################################\n\nPYTHON_PLUGGY_VERSION = 1.0.0\nPYTHON_PLUGGY_SOURCE = pluggy-$(PYTHON_PLUGGY_VERSION).tar.gz\nPYTHON_PLUGGY_SITE = https://files.pythonhosted.org/packages/a1/16/db2d7de3474b6e37cbb9c008965ee63835bba517e22cdb8c35b5116b5ce1\nPYTHON_PLUGGY_SETUP_TYPE = setuptools\nPYTHON_PLUGGY_LICENSE = MIT\nPYTHON_PLUGGY_LICENSE_FILES = LICENSE\nPYTHON_PLUGGY_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ply/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PLY\n\tbool \"python-ply\"\n\thelp\n\t  Python Lex & Yacc.\n\n\t  http://www.dabeaz.com/ply/\n"
  },
  {
    "path": "package/python-ply/python-ply.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ply/json\nmd5\t6465f602e656455affcd7c5734c638f8  ply-3.11.tar.gz\nsha256\t00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3  ply-3.11.tar.gz\n# Locally computed sha256 checksums\nsha256\t1095b93b81d2043c5c55e0859875b416f75edb6d5eccb4bf2ace1b5445d1c84f  README.md\n"
  },
  {
    "path": "package/python-ply/python-ply.mk",
    "content": "################################################################################\n#\n# python-ply\n#\n################################################################################\n\n# Please keep in sync with package/python3-ply/python3-ply.mk\nPYTHON_PLY_VERSION = 3.11\nPYTHON_PLY_SOURCE = ply-$(PYTHON_PLY_VERSION).tar.gz\nPYTHON_PLY_SITE = https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da\nPYTHON_PLY_SETUP_TYPE = setuptools\nPYTHON_PLY_LICENSE = BSD-3-Clause\nPYTHON_PLY_LICENSE_FILES = README.md\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-portend/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PORTEND\n\tbool \"python-portend\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-tempora\n\tselect BR2_PACKAGE_PYTHON_TEMPORA # runtime\n\thelp\n\t  TCP port monitoring utilities.\n\n\t  https://github.com/jaraco/portend\n"
  },
  {
    "path": "package/python-portend/python-portend.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/portend/json\nmd5\t0ab51a12b7462a5275946a3645a71e92  portend-2.5.tar.gz\nsha256\t19dc27bfb3c72471bd30a235a4d5fbefef8a7e31cab367744b5d87a205e7bfd9  portend-2.5.tar.gz\n# Locally computed sha256 checksums\nsha256\ta55e2ffe9b44998e621d51d8c094bed09acc4b5236ee73d7df395a33ba3c18fd  LICENSE\n"
  },
  {
    "path": "package/python-portend/python-portend.mk",
    "content": "################################################################################\n#\n# python-portend\n#\n################################################################################\n\nPYTHON_PORTEND_VERSION = 2.5\nPYTHON_PORTEND_SOURCE = portend-$(PYTHON_PORTEND_VERSION).tar.gz\nPYTHON_PORTEND_SITE = https://files.pythonhosted.org/packages/2c/59/948666fc2455ae471efd40cb2a9a990f5f6f2354a9a6b228e29b9fb4a307\nPYTHON_PORTEND_LICENSE = MIT\nPYTHON_PORTEND_LICENSE_FILES = LICENSE\nPYTHON_PORTEND_SETUP_TYPE = setuptools\nPYTHON_PORTEND_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-posix-ipc/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_POSIX_IPC\n\tbool \"python-posix-ipc\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  The Python extension module posix_ipc gives access to POSIX\n\t  inter-process semaphores, shared memory and message queues\n\t  on systems that support the POSIX Realtime Extensions\n\t  a.k.a. POSIX 1003.1b-1993.\n\n\t  http://semanchuk.com/philip/posix_ipc/\n\ncomment \"python-posix-ipc needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/python-posix-ipc/python-posix-ipc.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/posix-ipc/json\nmd5  8c9443859492ecf3aae9182aa6b5c78c  posix_ipc-1.0.5.tar.gz\nsha256  6cddb1ce2cf4aae383f2a0079c26c69bee257fe2720f372201ef047f8ceb8b97  posix_ipc-1.0.5.tar.gz\n# Locally computed sha256 checksums\nsha256  61f0669e70518e6d32f87e485965fe9309de60e4bef938b29cecd068b3db9a98  LICENSE\n"
  },
  {
    "path": "package/python-posix-ipc/python-posix-ipc.mk",
    "content": "################################################################################\n#\n# python-posix-ipc\n#\n################################################################################\n\nPYTHON_POSIX_IPC_VERSION = 1.0.5\nPYTHON_POSIX_IPC_SOURCE = posix_ipc-$(PYTHON_POSIX_IPC_VERSION).tar.gz\nPYTHON_POSIX_IPC_SITE = https://files.pythonhosted.org/packages/bc/2f/9a7901aa26fb0e02a671b989ba814d059a0f45af85cea31b9c9eef7e2dda\nPYTHON_POSIX_IPC_LICENSE = BSD-3-Clause\nPYTHON_POSIX_IPC_LICENSE_FILES = LICENSE\nPYTHON_POSIX_IPC_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-priority/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PRIORITY\n\tbool \"python-priority\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A pure-Python implementation of the HTTP/2 priority tree.\n\n\t  http://python-hyper.org/priority/\n"
  },
  {
    "path": "package/python-priority/python-priority.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/priority/json\nmd5  149531bf0e754782cf218bfc8cc994ae  priority-2.0.0.tar.gz\nsha256  c965d54f1b8d0d0b19479db3924c7c36cf672dbf2aec92d43fbdaf4492ba18c0  priority-2.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256  f3e9c29e3db36dc305a4be68a8a225f93949852ce2d19b5b0a3c099eee6509c5  LICENSE\n"
  },
  {
    "path": "package/python-priority/python-priority.mk",
    "content": "################################################################################\n#\n# python-priority\n#\n################################################################################\n\nPYTHON_PRIORITY_VERSION = 2.0.0\nPYTHON_PRIORITY_SOURCE = priority-$(PYTHON_PRIORITY_VERSION).tar.gz\nPYTHON_PRIORITY_SITE = https://files.pythonhosted.org/packages/f5/3c/eb7c35f4dcede96fca1842dac5f4f5d15511aa4b52f3a961219e68ae9204\nPYTHON_PRIORITY_SETUP_TYPE = setuptools\nPYTHON_PRIORITY_LICENSE = MIT\nPYTHON_PRIORITY_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-prompt-toolkit/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PROMPT_TOOLKIT\n\tbool \"python-prompt-toolkit\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_WCWIDTH # runtime\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT # runtime\n\thelp\n\t  Library for building powerful interactive command lines in\n\t  Python.\n\n\t  https://github.com/prompt-toolkit/python-prompt-toolkit\n"
  },
  {
    "path": "package/python-prompt-toolkit/python-prompt-toolkit.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/prompt-toolkit/json\nmd5  ba9e63c3e7e5a4f4ce4e4770a4daba96  prompt_toolkit-3.0.20.tar.gz\nsha256  eb71d5a6b72ce6db177af4a7d4d7085b99756bf656d98ffcc4fecd36850eea6c  prompt_toolkit-3.0.20.tar.gz\n# Locally computed sha256 checksums\nsha256  303574d9bdd85c757d6025017942bf17baeedf2778f62bd7f425d07d880f4c4a  LICENSE\n"
  },
  {
    "path": "package/python-prompt-toolkit/python-prompt-toolkit.mk",
    "content": "################################################################################\n#\n# python-prompt-toolkit\n#\n################################################################################\n\nPYTHON_PROMPT_TOOLKIT_VERSION = 3.0.20\nPYTHON_PROMPT_TOOLKIT_SOURCE = prompt_toolkit-$(PYTHON_PROMPT_TOOLKIT_VERSION).tar.gz\nPYTHON_PROMPT_TOOLKIT_SITE = https://files.pythonhosted.org/packages/b4/56/9ab5868f34ab2657fba7e2192f41316252ab04edbbeb2a8583759960a1a7\nPYTHON_PROMPT_TOOLKIT_SETUP_TYPE = setuptools\nPYTHON_PROMPT_TOOLKIT_LICENSE = BSD-3-Clause\nPYTHON_PROMPT_TOOLKIT_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-protobuf/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PROTOBUF\n\tbool \"python-protobuf\"\n\t# host-protobuf only builds on certain architectures\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Python implementation of the Google Protocol Buffers.\n\n\t  Protocol buffers are Google's language-neutral,\n\t  platform-neutral, extensible mechanism for serializing\n\t  structured data.\n\n\t  https://developers.google.com/protocol-buffers\n"
  },
  {
    "path": "package/python-protobuf/python-protobuf.hash",
    "content": "# Locally calculated\nsha256  4f792034070915819065c162a310142d66835333824e2e0a2ca26ed54b013408  protobuf-python-3.18.0.tar.gz\nsha256  6e5e117324afd944dcf67f36cf329843bc1a92229a8cd9bb573d7a83130fea7d  LICENSE\n"
  },
  {
    "path": "package/python-protobuf/python-protobuf.mk",
    "content": "################################################################################\n#\n# python-protobuf\n#\n################################################################################\n\nPYTHON_PROTOBUF_VERSION = $(PROTOBUF_VERSION)\nPYTHON_PROTOBUF_SOURCE = protobuf-python-$(PYTHON_PROTOBUF_VERSION).tar.gz\nPYTHON_PROTOBUF_SITE = $(PROTOBUF_SITE)\nPYTHON_PROTOBUF_LICENSE = BSD-3-Clause\nPYTHON_PROTOBUF_LICENSE_FILES = LICENSE\nPYTHON_PROTOBUF_DEPENDENCIES = host-protobuf\nPYTHON_PROTOBUF_SETUP_TYPE = setuptools\nPYTHON_PROTOBUF_SUBDIR = python\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-psutil/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PSUTIL\n\tbool \"python-psutil\"\n\thelp\n\t  psutil is a cross-platform library for retrieving\n\t  information on running processes and system utilization\n\t  (CPU, memory, disks, network) in Python.\n\n\t  https://pypi.python.org/pypi/psutil\n"
  },
  {
    "path": "package/python-psutil/python-psutil.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/psutil/json\nmd5  91060da163ef478002a4456dd99cbb4c  psutil-5.8.0.tar.gz\nsha256  0c9ccb99ab76025f2f0bbecf341d4656e9c1351db8cc8a03ccd62e318ab4b5c6  psutil-5.8.0.tar.gz\n# Locally computed sha256 checksums\nsha256  24c12984500caa07ffdce19eebc06396c5e6d244b573bc6c438f4a6ef8e56c1b  LICENSE\n"
  },
  {
    "path": "package/python-psutil/python-psutil.mk",
    "content": "################################################################################\n#\n# python-psutil\n#\n################################################################################\n\n# Please keep in sync with package/python3-psutil/python3-psutil.mk\nPYTHON_PSUTIL_VERSION = 5.8.0\nPYTHON_PSUTIL_SOURCE = psutil-$(PYTHON_PSUTIL_VERSION).tar.gz\nPYTHON_PSUTIL_SITE = https://files.pythonhosted.org/packages/e1/b0/7276de53321c12981717490516b7e612364f2cb372ee8901bd4a66a000d7\nPYTHON_PSUTIL_SETUP_TYPE = setuptools\nPYTHON_PSUTIL_LICENSE = BSD-3-Clause\nPYTHON_PSUTIL_LICENSE_FILES = LICENSE\nPYTHON_PSUTIL_CPE_ID_VENDOR = psutil_project\nPYTHON_PSUTIL_CPE_ID_PRODUCT = psutil\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-psycopg2/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PSYCOPG2\n\tbool \"python-psycopg2\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_USE_WCHAR # postgresql\n\tselect BR2_PACKAGE_POSTGRESQL\n\thelp\n\t  Psycopg is the most popular PostgreSQL database adapter for\n\t  the Python programming language. Its main features are the\n\t  complete implementation of the Python DB API 2.0 specification\n\t  and the thread safety (several threads can share the same\n\t  connection). It was designed for heavily multi-threaded\n\t  applications that create and destroy lots of cursors and make\n\t  a large number of concurrent INSERTs or UPDATEs.\n\n\t  Psycopg 2 is mostly implemented in C as a libpq wrapper,\n\t  resulting in being both efficient and secure. It features\n\t  client-side and server-side cursors, asynchronous\n\t  communication and notifications, COPY support. Many Python\n\t  types are supported out-of-the-box and adapted to matching\n\t  PostgreSQL data types; adaptation can be extended and\n\t  customized thanks to a flexible objects adaptation system.\n\t  Psycopg 2 is both Unicode and Python 3 friendly.\n\n\t  http://initd.org/psycopg/\n\ncomment \"python-psycopg2 needs a toolchain w/ wchar\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/python-psycopg2/python-psycopg2.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/psycopg2/json\nmd5  182e3e8cf3381c254f65f70cad4976e5  psycopg2-2.9.1.tar.gz\nsha256  de5303a6f1d0a7a34b9d40e4d3bef684ccc44a49bbe3eb85e3c0bffb4a131b7c  psycopg2-2.9.1.tar.gz\n# Locally computed sha256 checksums\nsha256  9614b85dfc9a72c5b2ca33144c1d7e1ed3b1c297459d9fb28a6a5762c2e8d71b  LICENSE\n"
  },
  {
    "path": "package/python-psycopg2/python-psycopg2.mk",
    "content": "################################################################################\n#\n# python-psycopg2\n#\n################################################################################\n\nPYTHON_PSYCOPG2_VERSION = 2.9.1\nPYTHON_PSYCOPG2_SOURCE = psycopg2-$(PYTHON_PSYCOPG2_VERSION).tar.gz\nPYTHON_PSYCOPG2_SITE = https://files.pythonhosted.org/packages/aa/8a/7c80e7e44fb1b4277e89bd9ca509aefdd4dd1b2c547c6f293afe9f7ffd04\nPYTHON_PSYCOPG2_SETUP_TYPE = setuptools\nPYTHON_PSYCOPG2_LICENSE = LGPL-3.0+\nPYTHON_PSYCOPG2_LICENSE_FILES = LICENSE\nPYTHON_PSYCOPG2_DEPENDENCIES = postgresql\n# Force psycopg2 to use the Buildroot provided postgresql version\n# instead of the one from the host machine\nPYTHON_PSYCOPG2_BUILD_OPTS = build_ext --pg-config=$(STAGING_DIR)/usr/bin/pg_config\nPYTHON_PSYCOPG2_INSTALL_TARGET_OPTS = build_ext --pg-config=$(STAGING_DIR)/usr/bin/pg_config\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ptyprocess/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PTYPROCESS\n\tbool \"python-ptyprocess\"\n\thelp\n\t  Launch a subprocess in a pseudo terminal (pty), and interact\n\t  with both the process and its pty.\n\n\t  https://github.com/pexpect/ptyprocess\n"
  },
  {
    "path": "package/python-ptyprocess/python-ptyprocess.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ptyprocess/json\nmd5  9da200c397cb1752209a6b718b6cfc68  ptyprocess-0.7.0.tar.gz\nsha256  5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220  ptyprocess-0.7.0.tar.gz\n# Locally computed sha256 checksums\nsha256  c822d385b1a73329846241799becf18690b5d44764c1bed69300b536a405030a  LICENSE\n"
  },
  {
    "path": "package/python-ptyprocess/python-ptyprocess.mk",
    "content": "################################################################################\n#\n# python-ptyprocess\n#\n################################################################################\n\nPYTHON_PTYPROCESS_VERSION = 0.7.0\nPYTHON_PTYPROCESS_SITE = https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e\nPYTHON_PTYPROCESS_SOURCE = ptyprocess-$(PYTHON_PTYPROCESS_VERSION).tar.gz\nPYTHON_PTYPROCESS_LICENSE = ISC\nPYTHON_PTYPROCESS_LICENSE_FILES = LICENSE\nPYTHON_PTYPROCESS_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pudb/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PUDB\n\tbool \"python-pudb\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_URWID # runtime\n\tselect BR2_PACKAGE_PYTHON_JEDI # runtime\n\tselect BR2_PACKAGE_PYTHON_PYGMENTS # runtime\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON3_CURSES # runtime\n\thelp\n\t  A full-screen, console-based Python debugger.\n\n\t  https://github.com/inducer/pudb\n"
  },
  {
    "path": "package/python-pudb/python-pudb.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pudb/json\nmd5  100b955e103b72279604420bbdcd07a5  pudb-2021.1.tar.gz\nsha256  309ee82b45a0ffca0bc4c7f521fd3e357589c764f339bdf9dcabb7ad40692d6e  pudb-2021.1.tar.gz\n# Locally computed sha256 checksums\nsha256  a95343fffff49cde3d9bf33cf6bb71cb3bf0ed83f47d98a7ba04b175d29c79ab  LICENSE\n"
  },
  {
    "path": "package/python-pudb/python-pudb.mk",
    "content": "################################################################################\n#\n# python-pudb\n#\n################################################################################\n\nPYTHON_PUDB_VERSION = 2021.1\nPYTHON_PUDB_SOURCE = pudb-$(PYTHON_PUDB_VERSION).tar.gz\nPYTHON_PUDB_SITE = https://files.pythonhosted.org/packages/c7/69/813e93519fc28744457ff68fa2eaac3b4ea30dda1e6994e969fe9d3008d9\nPYTHON_PUDB_SETUP_TYPE = setuptools\nPYTHON_PUDB_LICENSE = MIT\nPYTHON_PUDB_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-py/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PY\n\tbool \"python-py\"\n\thelp\n\t  library with cross-python path, ini-parsing, io, code, log\n\t  facilities.\n\n\t  http://py.readthedocs.io/\n"
  },
  {
    "path": "package/python-py/python-py.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/py/json\nmd5  5f108bfe00d5468cbdb8071051f86a55  py-1.10.0.tar.gz\nsha256  21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3  py-1.10.0.tar.gz\n# Locally computed sha256 checksums\nsha256  2af680c39ef493fb82830356d1d3df1acb5a06033cba2dec7a19e21caa77a866  LICENSE\nsha256  2af680c39ef493fb82830356d1d3df1acb5a06033cba2dec7a19e21caa77a866  py/_vendored_packages/iniconfig-1.1.1.dist-info/LICENSE\n"
  },
  {
    "path": "package/python-py/python-py.mk",
    "content": "################################################################################\n#\n# python-py\n#\n################################################################################\n\nPYTHON_PY_VERSION = 1.10.0\nPYTHON_PY_SOURCE = py-$(PYTHON_PY_VERSION).tar.gz\nPYTHON_PY_SITE = https://files.pythonhosted.org/packages/0d/8c/50e9f3999419bb7d9639c37e83fa9cdcf0f601a9d407162d6c37ad60be71\nPYTHON_PY_DEPENDENCIES = host-python-setuptools-scm\nPYTHON_PY_SETUP_TYPE = setuptools\nPYTHON_PY_LICENSE = MIT\nPYTHON_PY_LICENSE_FILES = LICENSE py/_vendored_packages/iniconfig-1.1.1.dist-info/LICENSE\nPYTHON_PY_CPE_ID_VENDOR = pytest\nPYTHON_PY_CPE_ID_PRODUCT = py\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyaes/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYAES\n\tbool \"python-pyaes\"\n\thelp\n\t  Pure-Python Implementation of the AES block-cipher and\n\t  common modes of operation.\n\n\t  https://github.com/ricmoo/pyaes\n"
  },
  {
    "path": "package/python-pyaes/python-pyaes.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyaes/json\nmd5\t20fd5c6e29dcfdd08098e85a859a54ec  pyaes-1.6.1.tar.gz\nsha256\t02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f  pyaes-1.6.1.tar.gz\n# Locally computed sha256 checksums\nsha256\t1efe6c78b28b4203d397ea9b68bdc9c658d21cd9afaf8ae8223def83f2a7ebbd  LICENSE.txt\n"
  },
  {
    "path": "package/python-pyaes/python-pyaes.mk",
    "content": "################################################################################\n#\n# python-pyaes\n#\n################################################################################\n\nPYTHON_PYAES_VERSION = 1.6.1\nPYTHON_PYAES_SOURCE = pyaes-$(PYTHON_PYAES_VERSION).tar.gz\nPYTHON_PYAES_SITE = https://files.pythonhosted.org/packages/44/66/2c17bae31c906613795711fc78045c285048168919ace2220daa372c7d72\nPYTHON_PYAES_SETUP_TYPE = distutils\nPYTHON_PYAES_LICENSE = MIT\nPYTHON_PYAES_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyalsa/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYALSA\n\tbool \"python-pyalsa\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_HWDEP\n\tselect BR2_PACKAGE_ALSA_LIB_MIXER\n\tselect BR2_PACKAGE_ALSA_LIB_RAWMIDI\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\thelp\n\t  Official ALSA Python binding, including hardware\n\t  management, mixer and sequencer control.\n\n\t  http://www.alsa-project.org/\n\ncomment \"python-pyalsa needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/python-pyalsa/python-pyalsa.hash",
    "content": "# Locally computed\nsha256 2771291a5d2cf700f0abbe6629ea37468d1463a01b2330d84ef976e1e918676c  pyalsa-1.1.6.tar.bz2\n"
  },
  {
    "path": "package/python-pyalsa/python-pyalsa.mk",
    "content": "################################################################################\n#\n# python-pyalsa\n#\n################################################################################\n\nPYTHON_PYALSA_VERSION = 1.1.6\nPYTHON_PYALSA_SOURCE = pyalsa-$(PYTHON_PYALSA_VERSION).tar.bz2\nPYTHON_PYALSA_SITE = ftp://ftp.alsa-project.org/pub/pyalsa\nPYTHON_PYALSA_SETUP_TYPE = distutils\nPYTHON_PYALSA_LICENSE = LGPL-2.1+\nPYTHON_PYALSA_DEPENDENCIES = alsa-lib\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyasn1/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYASN1\n\tbool \"python-pyasn1\"\n\thelp\n\t  ASN.1 types and codecs.\n\n\t  https://github.com/etingof/pyasn1\n"
  },
  {
    "path": "package/python-pyasn1/python-pyasn1.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyasn1/json\nmd5  dffae4ff9f997a83324b3f33fe62be54  pyasn1-0.4.8.tar.gz\nsha256  aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba  pyasn1-0.4.8.tar.gz\n# Locally computed sha256 checksums\nsha256  22c5cc6922ab5d69fba32d8c5ee4cdd14981508cb53afc0ebd85593847fd95a5  LICENSE.rst\n"
  },
  {
    "path": "package/python-pyasn1/python-pyasn1.mk",
    "content": "################################################################################\n#\n# python-pyasn1\n#\n################################################################################\n\nPYTHON_PYASN1_VERSION = 0.4.8\nPYTHON_PYASN1_SOURCE = pyasn1-$(PYTHON_PYASN1_VERSION).tar.gz\nPYTHON_PYASN1_SITE = https://files.pythonhosted.org/packages/a4/db/fffec68299e6d7bad3d504147f9094830b704527a7fc098b721d38cc7fa7\nPYTHON_PYASN1_SETUP_TYPE = setuptools\nPYTHON_PYASN1_LICENSE = BSD-2-Clause\nPYTHON_PYASN1_LICENSE_FILES = LICENSE.rst\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyasn1-modules/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYASN1_MODULES\n\tbool \"python-pyasn1-modules\"\n\tselect BR2_PACKAGE_PYTHON_PYASN1 # runtime\n\thelp\n\t  A collection of ASN.1-based protocols modules.\n\n\t  https://github.com/etingof/pyasn1-modules\n"
  },
  {
    "path": "package/python-pyasn1-modules/python-pyasn1-modules.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyasn1-modules/json\nmd5  107e1ece7d0a41d782f69f8a95a4d9bc  pyasn1-modules-0.2.8.tar.gz\nsha256  905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e  pyasn1-modules-0.2.8.tar.gz\n# Locally computed sha256 checksums\nsha256  22c5cc6922ab5d69fba32d8c5ee4cdd14981508cb53afc0ebd85593847fd95a5  LICENSE.txt\n"
  },
  {
    "path": "package/python-pyasn1-modules/python-pyasn1-modules.mk",
    "content": "################################################################################\n#\n# python-pyasn1-modules\n#\n################################################################################\n\nPYTHON_PYASN1_MODULES_VERSION = 0.2.8\nPYTHON_PYASN1_MODULES_SOURCE = pyasn1-modules-$(PYTHON_PYASN1_MODULES_VERSION).tar.gz\nPYTHON_PYASN1_MODULES_SITE = https://files.pythonhosted.org/packages/88/87/72eb9ccf8a58021c542de2588a867dbefc7556e14b2866d1e40e9e2b587e\nPYTHON_PYASN1_MODULES_SETUP_TYPE = setuptools\nPYTHON_PYASN1_MODULES_LICENSE = BSD-2-Clause\nPYTHON_PYASN1_MODULES_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pybind/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYBIND\n\tbool \"python-pybind\"\n\thelp\n\t  PyBind is a lightweight header-only library that exposes C++\n\t  types in Python and vice versa, mainly to create Python\n\t  bindings of existing C++ code.\n\n\t  http://pybind11.readthedocs.org/en/master\n"
  },
  {
    "path": "package/python-pybind/python-pybind.hash",
    "content": "# Locally calculated\nsha256  cdbe326d357f18b83d10322ba202d69f11b2f49e2d87ade0dc2be0c5c34f8e2a  python-pybind-2.6.1.tar.gz\n# License files, locally calculated\nsha256  83965b843b98f670d3a85bd041ed4b372c8ec50d7b4a5995a83ac697ba675dcb  LICENSE\n"
  },
  {
    "path": "package/python-pybind/python-pybind.mk",
    "content": "################################################################################\n#\n# python-pybind\n#\n################################################################################\n\nPYTHON_PYBIND_VERSION = 2.6.1\nPYTHON_PYBIND_SITE = $(call github,pybind,pybind11,v$(PYTHON_PYBIND_VERSION))\nPYTHON_PYBIND_LICENSE = BSD-3-Clause\nPYTHON_PYBIND_LICENSE_FILES = LICENSE\nPYTHON_PYBIND_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pycairo/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYCAIRO\n\tbool \"python-pycairo\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_CAIRO\n\thelp\n\t  Python interface for cairo.\n\n\t  https://pycairo.readthedocs.io\n"
  },
  {
    "path": "package/python-pycairo/python-pycairo.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pycairo/json\nmd5  59bc5c5d1debc3af0f6791af9d612551  pycairo-1.19.1.tar.gz\nsha256  2c143183280feb67f5beb4e543fd49990c28e7df427301ede04fc550d3562e84  pycairo-1.19.1.tar.gz\n# Locally computed sha256 checksums\nsha256  360b9a526d47c51a7cab7f1ec49ca5893050562d639b742d588934ff84823a72  COPYING\nsha256  d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f  COPYING-LGPL-2.1\nsha256  53692a2ed6c6a2c6ec9b32dd0b820dfae91e0a1fcdf625ca9ed0bdf8705fcc4f  COPYING-MPL-1.1\n"
  },
  {
    "path": "package/python-pycairo/python-pycairo.mk",
    "content": "################################################################################\n#\n# python-pycairo\n#\n################################################################################\n\nPYTHON_PYCAIRO_VERSION = 1.19.1\nPYTHON_PYCAIRO_SOURCE = pycairo-$(PYTHON_PYCAIRO_VERSION).tar.gz\nPYTHON_PYCAIRO_SITE = https://files.pythonhosted.org/packages/e8/9d/c8be300fc6b1298559d37a071c3833b0b251e0fff334d2e4c408d5789162\nPYTHON_PYCAIRO_SETUP_TYPE = setuptools\nPYTHON_PYCAIRO_DEPENDENCIES = cairo\nPYTHON_PYCAIRO_LICENSE = LGPL-2.1 or MPL-1.1\nPYTHON_PYCAIRO_LICENSE_FILES = COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pycares/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYCARES\n\tbool \"python-pycares\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_CFFI # runtime\n\thelp\n\t  Python interface for c-ares.\n\n\t  http://github.com/saghul/pycares\n"
  },
  {
    "path": "package/python-pycares/python-pycares.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pycares/json\nmd5  9e66aa767a0afd681e2a797b835cad1d  pycares-4.1.2.tar.gz\nsha256  03490be0e7b51a0c8073f877bec347eff31003f64f57d9518d419d9369452837  pycares-4.1.2.tar.gz\n# Locally computed sha256 checksums\nsha256  427bb3a5372024a26e2c290b24382512bcc7ca123431c4dd178dd613beea7eee  LICENSE\n"
  },
  {
    "path": "package/python-pycares/python-pycares.mk",
    "content": "################################################################################\n#\n# python-pycares\n#\n################################################################################\n\nPYTHON_PYCARES_VERSION = 4.1.2\nPYTHON_PYCARES_SOURCE = pycares-$(PYTHON_PYCARES_VERSION).tar.gz\nPYTHON_PYCARES_SITE = https://files.pythonhosted.org/packages/83/61/17bd0cfb9c4dc8c3738484d604b50d47c78fe4fcfe0ca2c58a61a106f578\nPYTHON_PYCARES_SETUP_TYPE = setuptools\nPYTHON_PYCARES_LICENSE = MIT\nPYTHON_PYCARES_LICENSE_FILES = LICENSE\nPYTHON_PYCARES_DEPENDENCIES = host-python-cffi\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pycli/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYCLI\n\tbool \"python-pycli\"\n\thelp\n\t  The cli package is a framework for making simple, correct\n\t  command line applications in Python.\n\n\t  https://pythonhosted.org/pyCLI/\n"
  },
  {
    "path": "package/python-pycli/python-pycli.hash",
    "content": "# md5 from https://pypi.python.org/pypi/pycli/json\nmd5 89c487e7c8068ce05d63394d2ae7ebad pyCLI-2.0.3.tar.gz\n# Locally computed\nsha256  bc53e6c5db031ae1c05d131641f153d22a201c5e82cc8c9324a945752efbb622  pyCLI-2.0.3.tar.gz\nsha256  591490b2ef462a4ad2be1aae5dd47738cb17e191c82d3ba38c3ae906d288e6ba  lib/cli/__init__.py\n"
  },
  {
    "path": "package/python-pycli/python-pycli.mk",
    "content": "################################################################################\n#\n# python-pycli\n#\n################################################################################\n\nPYTHON_PYCLI_VERSION = 2.0.3\nPYTHON_PYCLI_SOURCE = pyCLI-$(PYTHON_PYCLI_VERSION).tar.gz\nPYTHON_PYCLI_SITE = https://pypi.python.org/packages/95/fc/b2d86a5fbdac4072bcf70b01674b612e1a13026f54962c878fe3eca36fd1\nPYTHON_PYCLI_LICENSE = ISC-like\nPYTHON_PYCLI_LICENSE_FILES = lib/cli/__init__.py\nPYTHON_PYCLI_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pycparser/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYCPARSER\n\tbool \"python-pycparser\"\n\thelp\n\t  C parser in Python\n\n\t  https://github.com/eliben/pycparser\n"
  },
  {
    "path": "package/python-pycparser/python-pycparser.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pycparser/json\nmd5  b8f88de737db8c346ee8d31c07c7a25a  pycparser-2.20.tar.gz\nsha256  2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0  pycparser-2.20.tar.gz\n# Locally computed sha256 checksums\nsha256  3c76629880aec2f8578ed914701a4ff9e5da8b60acb8b7ec675abf83c90c5168  LICENSE\n"
  },
  {
    "path": "package/python-pycparser/python-pycparser.mk",
    "content": "################################################################################\n#\n# python-pycparser\n#\n################################################################################\n\n# Please keep in sync with package/python3-pycparser/python3-pycparser.mk\nPYTHON_PYCPARSER_VERSION = 2.20\nPYTHON_PYCPARSER_SOURCE = pycparser-$(PYTHON_PYCPARSER_VERSION).tar.gz\nPYTHON_PYCPARSER_SITE = https://files.pythonhosted.org/packages/0f/86/e19659527668d70be91d0369aeaa055b4eb396b0f387a4f92293a20035bd\nPYTHON_PYCPARSER_SETUP_TYPE = setuptools\nPYTHON_PYCPARSER_LICENSE = BSD-3-Clause\nPYTHON_PYCPARSER_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-pycryptodomex/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYCRYPTODOMEX\n\tbool \"python-pycryptodomex\"\n\thelp\n\t  Cryptographic library for Python.\n\n\t  https://www.pycryptodome.org\n"
  },
  {
    "path": "package/python-pycryptodomex/python-pycryptodomex.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pycryptodomex/json\nmd5  3d007103f68f7e902167719655d2b57a  pycryptodomex-3.11.0.tar.gz\nsha256  0398366656bb55ebdb1d1d493a7175fc48ade449283086db254ac44c7d318d6d  pycryptodomex-3.11.0.tar.gz\n# Locally computed sha256 checksums\nsha256  c273fb45d120362875aafdd6189f4d7c70f6c36d4cb7ce427e0dc704753639df  LICENSE.rst\nsha256  8e563c767164faa0831a333b57d23d4311cf566eb1b15d93250f4606be4eb549  Doc/LEGAL/COPYRIGHT.pycrypto\n"
  },
  {
    "path": "package/python-pycryptodomex/python-pycryptodomex.mk",
    "content": "################################################################################\n#\n# python-pycryptodomex\n#\n################################################################################\n\n# Please keep in sync with package/python3-pycryptodomex/python3-pycryptodomex.mk\nPYTHON_PYCRYPTODOMEX_VERSION = 3.11.0\nPYTHON_PYCRYPTODOMEX_SOURCE = pycryptodomex-$(PYTHON_PYCRYPTODOMEX_VERSION).tar.gz\nPYTHON_PYCRYPTODOMEX_SITE = https://files.pythonhosted.org/packages/47/14/dd9ad29cd29ea4cc521286f2cb401ca7ac6fd5db0791c5e9bacaf2c9ac78\nPYTHON_PYCRYPTODOMEX_SETUP_TYPE = setuptools\nPYTHON_PYCRYPTODOMEX_LICENSE = \\\n\tBSD-2-Clause, \\\n\tPublic Domain (pycrypto original code), \\\n\tOCB patent license (OCB mode)\nPYTHON_PYCRYPTODOMEX_LICENSE_FILES = LICENSE.rst Doc/LEGAL/COPYRIGHT.pycrypto\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-pycups/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYCUPS\n\tbool \"python-pycups\"\n\tdepends on BR2_PACKAGE_CUPS\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Python bindings for libcups.\n\n\t  https://github.com/zdohnal/pycups\n"
  },
  {
    "path": "package/python-pycups/python-pycups.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pycups/json\nmd5  41eef188b86d01ccfdbaaa05cf0f6ca4  pycups-2.0.1.tar.gz\nsha256  57434ce5f62548eb12949ca8217f066f4eeb21a5d6ab8b13471dce350e380c90  pycups-2.0.1.tar.gz\n# Locally computed sha256 checksums\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/python-pycups/python-pycups.mk",
    "content": "################################################################################\n#\n# python-pycups\n#\n################################################################################\n\nPYTHON_PYCUPS_VERSION = 2.0.1\nPYTHON_PYCUPS_SOURCE = pycups-$(PYTHON_PYCUPS_VERSION).tar.gz\nPYTHON_PYCUPS_SITE = https://files.pythonhosted.org/packages/0c/bb/82546806a86dc16f5eeb76f62ffdc42cce3d43aacd4e25a8b5300eec0263\nPYTHON_PYCUPS_SETUP_TYPE = distutils\nPYTHON_PYCUPS_LICENSE = GPL-2.0+\nPYTHON_PYCUPS_LICENSE_FILES = COPYING\nPYTHON_PYCUPS_DEPENDENCIES = cups\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pycurl/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYCURL\n\tbool \"python-pycurl\"\n\n"
  },
  {
    "path": "package/python-pycurl/python-pycurl.hash",
    "content": "sha256  0f0cdfc7a92d4f2a5c44226162434e34f7d6967d3af416a6f1448649c09a25a4  pycurl-7.43.0.2.tar.gz\n"
  },
  {
    "path": "package/python-pycurl/python-pycurl.mk",
    "content": "################################################################################\n#\n# python-pycurl\n#\n################################################################################\n\nPYTHON_PYCURL_VERSION = 7.43.0.2\nPYTHON_PYCURL_SOURCE = pycurl-$(PYTHON_PYCURL_VERSION).tar.gz\nPYTHON_PYCURL_SITE = https://files.pythonhosted.org/packages/e8/e4/0dbb8735407189f00b33d84122b9be52c790c7c3b25286826f4e1bdb7bde\nPYTHON_PYCURL_SETUP_TYPE = distutils\nPYTHON_PYCURL_BUILD_OPTS = --curl-config=$(STAGING_DIR)/usr/bin/curl-config --with-openssl\nPYTHON_PYCURL_INSTALL_TARGET_OPTS = --curl-config=$(STAGING_DIR)/usr/bin/curl-config --with-openssl\nPYTHON_PYCURL_ENV = PATH=$(PATH):$(STAGING_DIR)/usr/bin\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pydal/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYDAL\n\tbool python-pydal\n\thelp\n\t  pyDAL is a pure Python Database Abstraction Layer.  It\n\t  dynamically generates the SQL in real time using the\n\t  specified dialect for the database back end, so that you do\n\t  not have to write SQL code or learn different SQL dialects\n\t  (the term SQL is used generically), and your code will be\n\t  portable among different types of databases.\n\n\t  pyDAL comes from the original web2py's DAL, with the aim of\n\t  being wide-compatible.  pyDAL doesn't require web2py and can\n\t  be used in any Python context.\n\n\t  https://github.com/web2py/pydal\n"
  },
  {
    "path": "package/python-pydal/python-pydal.hash",
    "content": "# sha256 locally computed\nsha256  32faf0b7123bc19b5f70da654fc99a22f4ce6fb20f5e4b38aba819e0ab4060aa  python-pydal-20200321.1.tar.gz\nsha256  1f711e93f1e0c2eec576e2e60597dc2ed6f0a661e4749c6b8a39f0d4a72be468  LICENSE.txt\n"
  },
  {
    "path": "package/python-pydal/python-pydal.mk",
    "content": "################################################################################\n#\n# python-pydal\n#\n################################################################################\n\nPYTHON_PYDAL_VERSION = 20200321.1\nPYTHON_PYDAL_SITE = $(call github,web2py,pydal,v$(PYTHON_PYDAL_VERSION))\nPYTHON_PYDAL_LICENSE = BSD-3-Clause\nPYTHON_PYDAL_LICENSE_FILES = LICENSE.txt\nPYTHON_PYDAL_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-pydantic/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYDANTIC\n\tbool \"python-pydantic\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS # runtime\n\thelp\n\t  Data validation and settings management using python 3.6\n\t  type hinting.\n\n\t  https://github.com/samuelcolvin/pydantic\n"
  },
  {
    "path": "package/python-pydantic/python-pydantic.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pydantic/json\nmd5  7845d2f3c8fe8602f73f53ec5b6dfa29  pydantic-1.8.2.tar.gz\nsha256  26464e57ccaafe72b7ad156fdaa4e9b9ef051f69e175dbbb463283000c05ab7b  pydantic-1.8.2.tar.gz\n# Locally computed sha256 checksums\nsha256  9e3946690ac88b6b73e8f001a0586af13568be8852fd514e4393f39761764387  LICENSE\n"
  },
  {
    "path": "package/python-pydantic/python-pydantic.mk",
    "content": "################################################################################\n#\n# python-pydantic\n#\n################################################################################\n\nPYTHON_PYDANTIC_VERSION = 1.8.2\nPYTHON_PYDANTIC_SOURCE = pydantic-$(PYTHON_PYDANTIC_VERSION).tar.gz\nPYTHON_PYDANTIC_SITE = https://files.pythonhosted.org/packages/b9/d2/12a808613937a6b98cd50d6467352f01322dc0d8ca9fb5b94441625d6684\nPYTHON_PYDANTIC_SETUP_TYPE = setuptools\nPYTHON_PYDANTIC_LICENSE = MIT\nPYTHON_PYDANTIC_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyelftools/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYELFTOOLS\n\tbool \"python-pyelftools\"\n\thelp\n\t  Pyelftools is a Python library for parsing and analyzing ELF\n\t  files and DWARF debug information.\n\n\t  https://github.com/eliben/pyelftools\n"
  },
  {
    "path": "package/python-pyelftools/python-pyelftools.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyelftools/json\nmd5  061d67c669a9b1f8d07f28c47fb6a65f  pyelftools-0.27.tar.gz\nsha256  cde854e662774c5457d688ca41615f6594187ba7067af101232df889a6b7a66b  pyelftools-0.27.tar.gz\n# Locally computed sha256 checksums\nsha256  ae18bf4cb82f92af7547259177bc28bc48e4fc732518bcedfe690226288d3445  LICENSE\n"
  },
  {
    "path": "package/python-pyelftools/python-pyelftools.mk",
    "content": "################################################################################\n#\n# python-pyelftools\n#\n################################################################################\n\n# Please keep in sync with package/python3-pyelftools/python3-pyelftools.mk\nPYTHON_PYELFTOOLS_VERSION = 0.27\nPYTHON_PYELFTOOLS_SOURCE = pyelftools-$(PYTHON_PYELFTOOLS_VERSION).tar.gz\nPYTHON_PYELFTOOLS_SITE = https://files.pythonhosted.org/packages/6b/b5/f7022f2d950327ba970ec85fb8f85c79244031092c129b6f34ab17514ae0\nPYTHON_PYELFTOOLS_LICENSE = Public domain\nPYTHON_PYELFTOOLS_LICENSE_FILES = LICENSE\nPYTHON_PYELFTOOLS_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-pyftpdlib/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYFTPDLIB\n\tbool \"python-pyftpdlib\"\n\thelp\n\t  Extremely fast and scalable Python FTP server library.\n\n\t  https://github.com/giampaolo/pyftpdlib\n"
  },
  {
    "path": "package/python-pyftpdlib/python-pyftpdlib.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyftpdlib/json\nmd5\t7f8089520d60171bee5dab2b721e8d00  pyftpdlib-1.5.5.tar.gz\nsha256\t1adf1c03d1508749e7c2f26dc9850ec0ef834318d725b7ae5ac91698f5c86752  pyftpdlib-1.5.5.tar.gz\n# Locally computed sha256 checksums\nsha256\t18a4ff1ddf890838e36504b307581e3eb42c890a7272ce28b18b3ce1205b7ea8  LICENSE\n"
  },
  {
    "path": "package/python-pyftpdlib/python-pyftpdlib.mk",
    "content": "################################################################################\n#\n# python-pyftpdlib\n#\n################################################################################\n\nPYTHON_PYFTPDLIB_VERSION = 1.5.5\nPYTHON_PYFTPDLIB_SOURCE = pyftpdlib-$(PYTHON_PYFTPDLIB_VERSION).tar.gz\nPYTHON_PYFTPDLIB_SITE = https://files.pythonhosted.org/packages/27/64/06a574350c79873e908fa9f48b617e7961de50fc468acc0a05d76771bce9\nPYTHON_PYFTPDLIB_SETUP_TYPE = setuptools\nPYTHON_PYFTPDLIB_LICENSE = MIT\nPYTHON_PYFTPDLIB_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pygame/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYGAME\n\tbool \"python-pygame\"\n\tselect BR2_PACKAGE_SDL\n\thelp\n\t  Pygame is a cross-platfrom library designed to make it easy\n\t  to write multimedia software, such as games, in\n\t  Python. Pygame requires the Python language and SDL\n\t  multimedia library.\n\t  It can also make use of several other popular libraries.\n\n\t  http://www.pygame.org/\n\nif BR2_PACKAGE_PYTHON_PYGAME\nconfig BR2_PACKAGE_PYTHON_PYGAME_IMAGE\n\tbool \"pygame.image\"\n\tselect BR2_PACKAGE_SDL_IMAGE\n\tselect BR2_PACKAGE_SDL_IMAGE_PNG\n\tselect BR2_PACKAGE_SDL_IMAGE_JPEG\n\thelp\n\t  pygame module for loading, saving and transfering images.\n\t  Will autoselect sdl_image with png and jpeg support.\n\nconfig BR2_PACKAGE_PYTHON_PYGAME_EXAMPLES\n\tbool \"pygame.examples\"\n\thelp\n\t  Include examples.\n\t  Selecting this option adds about 1.5 MB to the target file\n\t  system.\n\nconfig BR2_PACKAGE_PYTHON_PYGAME_FONT\n\tbool \"pygame.font\"\n\tselect BR2_PACKAGE_SDL_TTF\n\thelp\n\t  pygame module for loading and rendering fonts.\n\t  Will autoselect sdl_ttf.\n\nconfig BR2_PACKAGE_PYTHON_PYGAME_MIXER\n\tbool \"pygame.mixer\"\n\tselect BR2_PACKAGE_SDL_MIXER\n\thelp\n\t  pygame module for loading and playing sounds.\n\t  Will autoselect sdl_mixer.\n\nconfig BR2_PACKAGE_PYTHON_PYGAME_MIXER_MUSIC\n\tbool \"pygame.mixer.music\"\n\tdepends on BR2_PACKAGE_PYTHON_PYGAME_MIXER\n\thelp\n\t  pygame module for controlling streamed audio\n\nconfig BR2_PACKAGE_PYTHON_PYGAME_SCRAP\n\tbool \"pygame.scrap\"\n\tdepends on BR2_PACKAGE_SDL_X11\n\thelp\n\t  pygame module for clipboard support (X11 needed)\n\nendif\n"
  },
  {
    "path": "package/python-pygame/python-pygame.hash",
    "content": "# Locally computed\nsha256  f95a7dd68ea294d415e36e068d2f533c5a01c67773452d14a535c5c7455681fe  pygame-d61ea8eabd56.tar.gz\nsha256  a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7  LGPL\n"
  },
  {
    "path": "package/python-pygame/python-pygame.mk",
    "content": "################################################################################\n#\n# python-pygame\n#\n################################################################################\n\n# stable 1.9.1 release requires V4L which has been wiped out of recent Linux\n# kernels, so use latest mercurial revision until next stable release is out.\nPYTHON_PYGAME_VERSION = d61ea8eabd56\nPYTHON_PYGAME_SOURCE = pygame-$(PYTHON_PYGAME_VERSION).tar.gz\nPYTHON_PYGAME_SITE = https://bitbucket.org/pygame/pygame\nPYTHON_PYGAME_SITE_METHOD = hg\nPYTHON_PYGAME_SETUP_TYPE = distutils\nPYTHON_PYGAME_LICENSE = LGPL-2.1+\nPYTHON_PYGAME_LICENSE_FILES = LGPL\n\nifeq ($(BR2_PACKAGE_PYTHON_PYGAME_IMAGE),y)\nPYTHON_PYGAME_OPT_DEPENDS += sdl_image\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_PYGAME_FONT),y)\nPYTHON_PYGAME_OPT_DEPENDS += sdl_ttf\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON_PYGAME_MIXER),y)\nPYTHON_PYGAME_OPT_DEPENDS += sdl_mixer\nendif\n\nPYTHON_PYGAME_DEPENDENCIES = sdl $(PYTHON_PYGAME_OPT_DEPENDS)\n\nifneq ($(BR2_PACKAGE_PYTHON_PYGAME_IMAGE),y)\ndefine PYTHON_PYGAME_UNCONFIGURE_IMAGE\n\t$(SED) 's/^imageext/#imageext/' $(@D)/Setup\nendef\nendif\n\nifneq ($(BR2_PACKAGE_PYTHON_PYGAME_FONT),y)\ndefine PYTHON_PYGAME_UNCONFIGURE_FONT\n\t$(SED) 's/^font/#font/' $(@D)/Setup\nendef\nendif\n\nifneq ($(BR2_PACKAGE_PYTHON_PYGAME_MIXER),y)\ndefine PYTHON_PYGAME_UNCONFIGURE_MIXER\n\t$(SED) 's/^mixer/#mixer/g' $(@D)/Setup\nendef\nendif\n\n# Both require numpy or numeric python module\ndefine PYTHON_PYGAME_UNCONFIGURE_SNDARRAY\n\t$(SED) 's/^_numericsndarray/#_numericsndarray/' $(@D)/Setup\nendef\n\ndefine PYTHON_PYGAME_UNCONFIGURE_SURFARRAY\n\t$(SED) 's/^_numericsurfarray/#_numericsurfarray/' $(@D)/Setup\nendef\n\n# Requires smpeg\ndefine PYTHON_PYGAME_UNCONFIGURE_MOVIE\n\t$(SED) 's/^movie/#movie/' $(@D)/Setup\nendef\n\nifneq ($(BR2_PACKAGE_PYTHON_PYGAME_SCRAP),y)\ndefine PYTHON_PYGAME_UNCONFIGURE_SCRAP\n\t$(SED) 's/^scrap/#scrap/' $(@D)/Setup\nendef\nendif\n\ndefine PYTHON_PYGAME_UNCONFIGURE_FREETYPE\n\t$(SED) 's/^_freetype/#_freetype/' $(@D)/Setup\nendef\n\nPYTHON_PYGAME_SDL_FLAGS = `$(STAGING_DIR)/usr/bin/sdl-config --cflags`\nPYTHON_PYGAME_SDL_FLAGS += `$(STAGING_DIR)/usr/bin/sdl-config --libs`\n\n# Pygame needs a Setup file where options should be commented out if\n# dependencies are not available\ndefine PYTHON_PYGAME_CONFIGURE_CMDS\n\tcp -f $(@D)/Setup.in $(@D)/Setup\n\t$(SED) \"s~^SDL = ~SDL = $(PYTHON_PYGAME_SDL_FLAGS) \\n#~\" $(@D)/Setup\n\t$(SED) 's/^pypm/#pypm/' $(@D)/Setup\n\t$(PYTHON_PYGAME_UNCONFIGURE_IMAGE)\n\t$(PYTHON_PYGAME_UNCONFIGURE_FONT)\n\t$(PYTHON_PYGAME_UNCONFIGURE_MIXER)\n\t$(PYTHON_PYGAME_UNCONFIGURE_SNDARRAY)\n\t$(PYTHON_PYGAME_UNCONFIGURE_SURFARRAY)\n\t$(PYTHON_PYGAME_UNCONFIGURE_MOVIE)\n\t$(PYTHON_PYGAME_UNCONFIGURE_SCRAP)\n\t$(PYTHON_PYGAME_UNCONFIGURE_FREETYPE)\nendef\n\ndefine PYTHON_PYGAME_REMOVE_DOC\n\trm -rf $(TARGET_DIR)/usr/lib/python*/site-packages/pygame/docs\nendef\n\nPYTHON_PYGAME_POST_INSTALL_TARGET_HOOKS += PYTHON_PYGAME_REMOVE_DOC\n\ndefine PYTHON_PYGAME_REMOVE_TESTS\n\trm -rf $(TARGET_DIR)/usr/lib/python*/site-packages/pygame/tests\nendef\n\nPYTHON_PYGAME_POST_INSTALL_TARGET_HOOKS += PYTHON_PYGAME_REMOVE_TESTS\n\nifneq ($(BR2_PACKAGE_PYTHON_PYGAME_EXAMPLES),y)\ndefine PYTHON_PYGAME_REMOVE_EXAMPLES\n\trm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/pygame/examples\nendef\nPYTHON_PYGAME_POST_INSTALL_TARGET_HOOKS += PYTHON_PYGAME_REMOVE_EXAMPLES\nendif\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pygments/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYGMENTS\n\tbool \"python-pygments\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Pygments is a syntax highlighting package written in Python.\n\n\t  https://pypi.python.org/pypi/Pygments\n"
  },
  {
    "path": "package/python-pygments/python-pygments.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pygments/json\nmd5  390a49fa0eb5486a795b2b54b9a7b666  Pygments-2.7.4.tar.gz\nsha256  df49d09b498e83c1a73128295860250b0b7edd4c723a32e9bc0d295c7c2ec337  Pygments-2.7.4.tar.gz\n# Locally computed sha256 checksums\nsha256  c012cf17a2ba79142977c8cc5bb1497a675401bf79c2c9b95a7604e2ddfde8b8  LICENSE\n"
  },
  {
    "path": "package/python-pygments/python-pygments.mk",
    "content": "################################################################################\n#\n# python-pygments\n#\n################################################################################\n\nPYTHON_PYGMENTS_VERSION = 2.7.4\nPYTHON_PYGMENTS_SOURCE = Pygments-$(PYTHON_PYGMENTS_VERSION).tar.gz\nPYTHON_PYGMENTS_SITE = https://files.pythonhosted.org/packages/e1/86/8059180e8217299079d8719c6e23d674aadaba0b1939e25e0cc15dcf075b\nPYTHON_PYGMENTS_LICENSE = BSD-2-Clause\nPYTHON_PYGMENTS_LICENSE_FILES = LICENSE\nPYTHON_PYGMENTS_CPE_ID_VENDOR = pygments\nPYTHON_PYGMENTS_CPE_ID_PRODUCT = pygments\nPYTHON_PYGMENTS_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyhamcrest/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYHAMCREST\n\tbool \"python-pyhamcrest\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Hamcrest framework for matcher objects.\n\n\t  https://github.com/hamcrest/PyHamcrest\n"
  },
  {
    "path": "package/python-pyhamcrest/python-pyhamcrest.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyhamcrest/json\nmd5  7a086f0b067f8d38958ec32f054559b4  PyHamcrest-2.0.2.tar.gz\nsha256  412e00137858f04bde0729913874a48485665f2d36fe9ee449f26be864af9316  PyHamcrest-2.0.2.tar.gz\n# Locally computed sha256 checksums\nsha256  71beae6c8151362cfe398cbd350191a1cc52d3d28499839a7830b25f5b50a7fe  LICENSE.txt\n"
  },
  {
    "path": "package/python-pyhamcrest/python-pyhamcrest.mk",
    "content": "################################################################################\n#\n# python-pyhamcrest\n#\n################################################################################\n\nPYTHON_PYHAMCREST_VERSION = 2.0.2\nPYTHON_PYHAMCREST_SOURCE = PyHamcrest-$(PYTHON_PYHAMCREST_VERSION).tar.gz\nPYTHON_PYHAMCREST_SITE = https://files.pythonhosted.org/packages/58/05/7b993fabb44ff0b52a90916d96bfd91a65ecf90b8248e72bba325ba8e438\nPYTHON_PYHAMCREST_SETUP_TYPE = setuptools\nPYTHON_PYHAMCREST_LICENSE = BSD-3-Clause\nPYTHON_PYHAMCREST_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyhocon/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYHOCON\n\tbool \"python-pyhocon\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_PYPARSING\n\thelp\n\t  HOCON parser for Python\n\n\t  https://github.com/chimpler/pyhocon\n"
  },
  {
    "path": "package/python-pyhocon/python-pyhocon.hash",
    "content": "sha256 94ceda402ce1718ead26fc725695a4f5a5671ce643da3c50514e049017098082 pyhocon-0.3.51.tar.gz\n"
  },
  {
    "path": "package/python-pyhocon/python-pyhocon.mk",
    "content": "################################################################################\n#\n# python-pyhocon\n#\n################################################################################\n\nPYTHON_PYHOCON_VERSION = 0.3.51\nPYTHON_PYHOCON_SOURCE = pyhocon-$(PYTHON_PYHOCON_VERSION).tar.gz\nPYTHON_PYHOCON_SITE = https://files.pythonhosted.org/packages/3f/35/34e16968df0b8b65d3696d80b8add0aaffd4f0461c1ef3c0f066fdc747e8\nPYTHON_PYHOCON_LICENSE = Apache-2.0\nPYTHON_PYHOCON_LICENSE_FILES = LICENSE\nPYTHON_PYHOCON_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyicu/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYICU\n\tbool \"python-pyicu\"\n\tdepends on !BR2_BINFMT_FLAT # icu\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # icu\n\tdepends on BR2_INSTALL_LIBSTDCPP # icu\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # icu\n\tselect BR2_PACKAGE_ICU\n\thelp\n\t  Python extension wrapping the ICU C++ API.\n\n\t  https://github.com/ovalhub/pyicu\n\ncomment \"python-pyicu needs a toolchain w/ C++, gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/python-pyicu/python-pyicu.hash",
    "content": "# md5 from https://pypi.python.org/pypi/PyICU/json\nmd5 7656f5cc53a7c18b40e653d6eefdee14   PyICU-1.9.7.tar.gz\n# Locally computed\nsha256  db27cd1cc150b879c5465872bec7fdaf340eca140aa922be03891d5b9f855b61  PyICU-1.9.7.tar.gz\nsha256  74bbadee4ee3c3a1ac0ecfbd74bc7ce64046de1ceddf4717dc923809ca8ffce3  LICENSE\n"
  },
  {
    "path": "package/python-pyicu/python-pyicu.mk",
    "content": "################################################################################\n#\n# python-pyicu\n#\n################################################################################\n\nPYTHON_PYICU_VERSION = 1.9.7\nPYTHON_PYICU_SOURCE = PyICU-$(PYTHON_PYICU_VERSION).tar.gz\nPYTHON_PYICU_SITE = https://pypi.python.org/packages/6e/88/f42a1297909ca6d9113ba37b37067011ae29432fe592fdd98cf52ad23b77\nPYTHON_PYICU_LICENSE = MIT\nPYTHON_PYICU_LICENSE_FILES = LICENSE\nPYTHON_PYICU_DEPENDENCIES = icu\nPYTHON_PYICU_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyinotify/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYINOTIFY\n\tbool \"python-pyinotify\"\n\thelp\n\t  Monitoring filesystems events with inotify on Linux.\n\n\t  https://github.com/seb-m/pyinotify\n"
  },
  {
    "path": "package/python-pyinotify/python-pyinotify.hash",
    "content": "# Locally calculated\nsha256  7943f198c5cef2bdc121d847937fbe565daaa7d4daaf1b8de8ef5689812f481c  python-pyinotify-0.9.6.tar.gz\nsha256  97c96d577f761e23c7778bda2b163dba7b94e4defdd7873b7155bed252820608  COPYING\n"
  },
  {
    "path": "package/python-pyinotify/python-pyinotify.mk",
    "content": "################################################################################\n#\n# python-pyinotify\n#\n################################################################################\n\nPYTHON_PYINOTIFY_VERSION = 0.9.6\nPYTHON_PYINOTIFY_SITE = $(call github,seb-m,pyinotify,$(PYTHON_PYINOTIFY_VERSION))\nPYTHON_PYINOTIFY_SETUP_TYPE = setuptools\nPYTHON_PYINOTIFY_LICENSE = MIT\nPYTHON_PYINOTIFY_LICENSE_FILES = COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyjwt/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYJWT\n\tbool \"python-pyjwt\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  JSON Web Token implementation in Python.\n\n\t  http://github.com/jpadilla/pyjwt\n"
  },
  {
    "path": "package/python-pyjwt/python-pyjwt.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/PyJWT/json\nmd5  60cf2d463157bf21eb37be0430521036  PyJWT-2.3.0.tar.gz\nsha256  b888b4d56f06f6dcd777210c334e69c737be74755d3e5e9ee3fe67dc18a0ee41  PyJWT-2.3.0.tar.gz\n# Locally computed sha256 checksums\nsha256  ec82af815b5f9da8685afb300cc5beb7949e1c22b79b6c1c054796cefdf6cac6  LICENSE\n"
  },
  {
    "path": "package/python-pyjwt/python-pyjwt.mk",
    "content": "################################################################################\n#\n# python-pyjwt\n#\n################################################################################\n\nPYTHON_PYJWT_VERSION = 2.3.0\nPYTHON_PYJWT_SOURCE = PyJWT-$(PYTHON_PYJWT_VERSION).tar.gz\nPYTHON_PYJWT_SITE = https://files.pythonhosted.org/packages/1d/8e/01bdcfdbb352daaba8ea406d9df149c5bba7dbf70f908d4fa4c269fe6a08\nPYTHON_PYJWT_SETUP_TYPE = setuptools\nPYTHON_PYJWT_LICENSE = MIT\nPYTHON_PYJWT_LICENSE_FILES = LICENSE\nPYTHON_PYJWT_CPE_ID_VENDOR = pyjwt_project\nPYTHON_PYJWT_CPE_ID_PRODUCT = pyjwt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pylibftdi/0001-do-not-use-find-library.patch",
    "content": "Hard code library loading\n\nShortcut the search for the libraries in case the built in\nfind_library is broken.\n\nAs buildroot does not ship any of the external programs that the core\nprocedure use to find libraries use the canonical name of the shared\nobject and load it.\n\nIn this case this affects loading libftdi and libusb.\n\nThis should be reliable as we specify said libs as dependencies of\nthis package.\n\nSigned-off-by: Christian Kellermann <christian.kellermann@solectrix.de>\n\n---\ndiff -purN pylibftdi-0.15.0.orig/pylibftdi/driver.py pylibftdi-0.15.0/pylibftdi/driver.py\n--- pylibftdi-0.15.0.orig/pylibftdi/driver.py\t2015-04-26 22:41:39.000000000 +0200\n+++ pylibftdi-0.15.0/pylibftdi/driver.py\t2017-02-27 13:08:56.502958000 +0100\n@@ -121,8 +121,8 @@ class Driver(object):\n                     lib = getattr(cdll, lib_path)\n                     break\n         if lib is None:\n-            raise LibraryMissingError('{} library not found (search: {})'.format(\n-                name, search_list))\n+            return cdll.LoadLibrary(name + '.so')\n+\n         return lib\n \n     @property\n"
  },
  {
    "path": "package/python-pylibftdi/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYLIBFTDI\n\tbool \"python-pylibftdi\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb\n\tselect BR2_PACKAGE_LIBFTDI\n\thelp\n\t  This package contains the python language binding libftdi.\n\n\t  https://pypi.python.org/pypi/pylibftdi\n\ncomment \"python-pylibftdi needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/python-pylibftdi/python-pylibftdi.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pylibftdi/json\nmd5\tc48e442cef7b1e865b4d96ab92f509ad pylibftdi-0.18.1.tar.gz\nsha256\tbdd04076933959b20b3c8b4fb8be7882d3362675f259e7eeb23ebff03b81859d  pylibftdi-0.18.1.tar.gz\n# Locally computed sha256 checksums\nsha256  0e40132339e1ef7d17d93837fbc273d1e87302e9295162bd19c9161e5700ddcc  LICENSE.txt\n"
  },
  {
    "path": "package/python-pylibftdi/python-pylibftdi.mk",
    "content": "################################################################################\n#\n# python-pylibftdi\n#\n################################################################################\n\nPYTHON_PYLIBFTDI_VERSION = 0.18.1\nPYTHON_PYLIBFTDI_SOURCE = pylibftdi-$(PYTHON_PYLIBFTDI_VERSION).tar.gz\nPYTHON_PYLIBFTDI_SITE = https://files.pythonhosted.org/packages/50/9b/1e1cdb9715bacfb83e5eaf5e69f4e2fbd92d61f43c5e185cc3935ec01b28\nPYTHON_PYLIBFTDI_LICENSE = MIT\nPYTHON_PYLIBFTDI_LICENSE_FILES = LICENSE.txt\nPYTHON_PYLIBFTDI_DEPENDENCIES = libftdi\nPYTHON_PYLIBFTDI_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pylru/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYLRU\n\tbool \"python-pylru\"\n\thelp\n\t  A least recently used (LRU) cache implementation.\n\n\t  https://github.com/jlhutch/pylru\n"
  },
  {
    "path": "package/python-pylru/python-pylru.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pylru/json\nmd5\t8f0050f86d1fa68bb18673de37da543b  pylru-1.2.0.tar.gz\nsha256\t492f934bb98dc6c8b2370c02c95c65516ddc08c8f64d27f70087eb038621d297  pylru-1.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.txt\n"
  },
  {
    "path": "package/python-pylru/python-pylru.mk",
    "content": "################################################################################\n#\n# python-pylru\n#\n################################################################################\n\nPYTHON_PYLRU_VERSION = 1.2.0\nPYTHON_PYLRU_SOURCE = pylru-$(PYTHON_PYLRU_VERSION).tar.gz\nPYTHON_PYLRU_SITE = https://files.pythonhosted.org/packages/9c/88/30972cd0518452563221c80bffc2a5832499d736648ef8fe492affae15c5\nPYTHON_PYLRU_SETUP_TYPE = setuptools\nPYTHON_PYLRU_LICENSE = GPL-2.0\nPYTHON_PYLRU_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pymodbus/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYMODBUS\n\tbool \"python-pymodbus\"\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_SERIAL # runtime\n\thelp\n\t  Pymodbus is a full Modbus protocol implementation.\n\n\t  https://github.com/riptideio/pymodbus\n"
  },
  {
    "path": "package/python-pymodbus/python-pymodbus.hash",
    "content": "sha256  26c1aa9919b24f2247794d5d9d80f65ec06fdfd9bd6b76b81d446b55335cabf3  pymodbus-3.5.2.tar.gz\nsha256  796a47993313691ea404d8af7e4c0f9daf1d2760e3900938985b59c9008eee2f  doc/LICENSE\n"
  },
  {
    "path": "package/python-pymodbus/python-pymodbus.mk",
    "content": "################################################################################\n#\n# python-pymodbus\n#\n################################################################################\n\nPYTHON_PYMODBUS_VERSION = 3.5.2\nPYTHON_PYMODBUS_SOURCE = pymodbus-$(PYTHON_PYMODBUS_VERSION).tar.gz\nPYTHON_PYMODBUS_SITE = https://files.pythonhosted.org/packages/cc/f4/0b001d0199203d5432d0347855fd666de129e248713e2479bbbb0f0788b6\nPYTHON_PYMODBUS_SETUP_TYPE = setuptools\nPYTHON_PYMODBUS_LICENSE = BSD-3-Clause\nPYTHON_PYMODBUS_LICENSE_FILES = doc/LICENSE\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\n# only needed/valid for python 3.x\ndefine PYTHON_PYMODBUS_RM_PY3_FILES\n\trm -rf $(TARGET_DIR)/usr/lib/python*/site-packages/pymodbus/client/asynchronous/asyncio\nendef\n\nPYTHON_PYMODBUS_POST_INSTALL_TARGET_HOOKS += PYTHON_PYMODBUS_RM_PY3_FILES\nendif\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pymongo/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYMONGO\n\tbool \"python-pymongo\"\n\thelp\n\t  Python driver for MongoDB\n\n\t  http://www.mongodb.org\n"
  },
  {
    "path": "package/python-pymongo/python-pymongo.hash",
    "content": "sha256  a9c1a2538cd120283e7137ac97ce27ebdfcb675730c5055d6332b0043f4e5a55  pymongo-3.11.1.tar.gz\n"
  },
  {
    "path": "package/python-pymongo/python-pymongo.mk",
    "content": "################################################################################\n#\n# python-pymongo\n#\n################################################################################\n\nPYTHON_PYMONGO_VERSION = 3.11.1\nPYTHON_PYMONGO_SOURCE = pymongo-$(PYTHON_PYMONGO_VERSION).tar.gz\nPYTHON_PYMONGO_SITE = https://files.pythonhosted.org/packages/15/dc/bc9f2692cd9ece34236950db1c27573ab28a2a5d1d651af57c67839aa593\nPYTHON_PYMONGO_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pymupdf/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYMUPDF\n\tbool \"python-pymupdf\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # mupdf -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # mupdf -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # mupdf -> harfbuzz\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_MUPDF\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Python bindings for the PDF rendering library MuPDF.\n\n\t  https://github.com/pymupdf/PyMuPDF\n\ncomment \"python-pymupdf needs Xorg\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_PACKAGE_XORG7\n\ncomment \"python-pymupdf needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/python-pymupdf/python-pymupdf.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pymupdf/json\nmd5  70d6c2232e531772bbe9a813044262f9  PyMuPDF-1.18.14.tar.gz\nsha256  efe85cb80f79cc3f3890aa2ab82b962b8a999ca078e33e9bacc5d0be5c4656dc  PyMuPDF-1.18.14.tar.gz\n# Locally computed:\nsha256  282751b8c98ee9e445346eb57a992c9ecbe25ed8dd554df046777313e19b10f9  COPYING\n"
  },
  {
    "path": "package/python-pymupdf/python-pymupdf.mk",
    "content": "################################################################################\n#\n# python-pymupdf\n#\n################################################################################\n\n# python-pymupdf's version must match mupdf's version\nPYTHON_PYMUPDF_VERSION = 1.18.14\nPYTHON_PYMUPDF_SOURCE = PyMuPDF-$(PYTHON_PYMUPDF_VERSION).tar.gz\nPYTHON_PYMUPDF_SITE = https://files.pythonhosted.org/packages/41/f6/dbefe3d6949fa81fb7bcac9141e4345330d272724718ac5a6af78297498b\nPYTHON_PYMUPDF_SETUP_TYPE = setuptools\nPYTHON_PYMUPDF_LICENSE = GPL-3.0, AGPL-3.0+ (code generated from mupdf)\nPYTHON_PYMUPDF_LICENSE_FILES = COPYING\n# No license file included in pip, but it's present on github\nPYTHON_PYMUPDF_DEPENDENCIES = freetype mupdf zlib\n\nPYTHON_PYMUPDF_ENV = CFLAGS=\"-I$(STAGING_DIR)/usr/include/mupdf -I$(STAGING_DIR)/usr/include/freetype2\"\n\n# We need to remove the original paths as we provide them in the CFLAGS:\ndefine PYTHON_PYMUPDF_REMOVE_PATHS\n\tsed -i \"/\\/usr\\/include\\/mupdf/d\" $(@D)/setup.py\n\tsed -i \"/\\/usr\\/include\\/freetype2/d\" $(@D)/setup.py\n\tsed -i \"/\\/usr\\/local\\/include\\/mupdf/d\" $(@D)/setup.py\n\tsed -i \"/mupdf\\/thirdparty\\/freetype\\/include/d\" $(@D)/setup.py\nendef\n\nPYTHON_PYMUPDF_POST_PATCH_HOOKS = PYTHON_PYMUPDF_REMOVE_PATHS\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pymysql/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYMYSQL\n\tbool \"python-pymysql\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  PyMySQL is a pure-Python MySQL client library. It follows\n\t  the DB-API 2.0.\n\n\t  https://pypi.python.org/pypi/PyMySQL/\n"
  },
  {
    "path": "package/python-pymysql/python-pymysql.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pymysql/json\nmd5  3fe6ff2eefb58af5c54d335c6e0216de  PyMySQL-1.0.2.tar.gz\nsha256  816927a350f38d56072aeca5dfb10221fe1dc653745853d30a216637f5d7ad36  PyMySQL-1.0.2.tar.gz\n# Locally computed sha256 checksums\nsha256  314120dc65f0800f738a4b31400c76ee14decd1fbe77ce9c3540a421b86ea7b6  LICENSE\n"
  },
  {
    "path": "package/python-pymysql/python-pymysql.mk",
    "content": "################################################################################\n#\n# python-pymysql\n#\n################################################################################\n\nPYTHON_PYMYSQL_VERSION = 1.0.2\nPYTHON_PYMYSQL_SOURCE = PyMySQL-$(PYTHON_PYMYSQL_VERSION).tar.gz\nPYTHON_PYMYSQL_SITE = https://files.pythonhosted.org/packages/60/ea/33b8430115d9b617b713959b21dfd5db1df77425e38efea08d121e83b712\nPYTHON_PYMYSQL_LICENSE = MIT\nPYTHON_PYMYSQL_LICENSE_FILES = LICENSE\nPYTHON_PYMYSQL_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pynacl/0001-Remove-spurious-requirement-for-wheel-596.patch",
    "content": "From 44fb453931c611d4822343debe902cca8e1c8afe Mon Sep 17 00:00:00 2001\nFrom: Scott Kitterman <sklist@kitterman.com>\nDate: Tue, 26 May 2020 20:08:16 -0400\nSubject: [PATCH] Remove spurious requirement for wheel (#596)\n\n* Remove spurious requirement for wheel\n\n* Put wheel back in pyproject.toml\n\nCo-authored-by: Scott Kitterman <scott@kitterman.com>\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[james.hilliard1@gmail.com: backport from upstream commit\n44fb453931c611d4822343debe902cca8e1c8afe]\n---\n setup.py | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/setup.py b/setup.py\nindex 9319c1c..d82a7fe 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -35,8 +35,7 @@ except ImportError:\n \n \n requirements = [\"six\"]\n-setup_requirements = [\"setuptools\",\n-                      \"wheel\"]\n+setup_requirements = [\"setuptools\"]\n test_requirements = [\"pytest>=3.2.1,!=3.3.0\",\n                      \"hypothesis>=3.27.0\"]\n docs_requirements = [\"sphinx>=1.6.5\",\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python-pynacl/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYNACL\n\tbool \"python-pynacl\"\n\tselect BR2_PACKAGE_LIBSODIUM\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_CFFI # runtime\n\thelp\n\t  Python binding to the Networking and Cryptography (NaCl)\n\t  library.\n\n\t  https://pypi.python.org/pypi/PyNaCl\n"
  },
  {
    "path": "package/python-pynacl/python-pynacl.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pynacl/json\nmd5  8c6c57893327a694c72510fb620e4744  PyNaCl-1.4.0.tar.gz\nsha256  54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505  PyNaCl-1.4.0.tar.gz\n# Locally computed sha256 checksums\nsha256  d3174ad63e721d4c9dccb8ad4320848992d314369bc46319720b5802c9153fe9  LICENSE\n"
  },
  {
    "path": "package/python-pynacl/python-pynacl.mk",
    "content": "################################################################################\n#\n# python-pynacl\n#\n################################################################################\n\nPYTHON_PYNACL_VERSION = 1.4.0\nPYTHON_PYNACL_SOURCE = PyNaCl-$(PYTHON_PYNACL_VERSION).tar.gz\nPYTHON_PYNACL_SITE = https://files.pythonhosted.org/packages/cf/5a/25aeb636baeceab15c8e57e66b8aa930c011ec1c035f284170cacb05025e\nPYTHON_PYNACL_LICENSE = Apache-2.0\nPYTHON_PYNACL_LICENSE_FILES = LICENSE\nPYTHON_PYNACL_SETUP_TYPE = setuptools\nPYTHON_PYNACL_DEPENDENCIES = libsodium host-python-cffi\nPYTHON_PYNACL_ENV = SODIUM_INSTALL=system\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyndiff/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYNDIFF\n\tbool \"python-pyndiff\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_XMLJSON # runtime\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\thelp\n\t  Generate human-readable ndiff output when comparing 2 Nmap\n\t  XML scan files.\n\n\t  https://github.com/rackerlabs/pyndiff\n"
  },
  {
    "path": "package/python-pyndiff/python-pyndiff.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyndiff/json\nmd5  32a9f994509cb883bbfeb563171f2668  pyndiff-1.0.2.tar.gz\nsha256  8a519b18a7bbb315c043d4543719ce9fb6db8098bfcdd04cb8054b276cc91368  pyndiff-1.0.2.tar.gz\n# Locally computed sha256 checksums\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/python-pyndiff/python-pyndiff.mk",
    "content": "################################################################################\n#\n# python-pyndiff\n#\n################################################################################\n\nPYTHON_PYNDIFF_VERSION = 1.0.2\nPYTHON_PYNDIFF_SOURCE = pyndiff-$(PYTHON_PYNDIFF_VERSION).tar.gz\nPYTHON_PYNDIFF_SITE = https://files.pythonhosted.org/packages/83/3b/fb13918710c4fba40367140f22e3449998f4f66869a7564d0e547ad99ef8\nPYTHON_PYNDIFF_SETUP_TYPE = setuptools\nPYTHON_PYNDIFF_LICENSE = Apache-2.0\nPYTHON_PYNDIFF_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyopenssl/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYOPENSSL\n\tbool \"python-pyopenssl\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography\n\tdepends on BR2_PACKAGE_PYTHON3 # python-cryptography\n\tselect BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Python wrapper module around the OpenSSL library.\n\n\t  https://github.com/pyca/pyopenssl\n"
  },
  {
    "path": "package/python-pyopenssl/python-pyopenssl.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyopenssl/json\nmd5 d9804fedbd1eb0c7d9243397b1fbf972  pyOpenSSL-19.1.0.tar.gz\nsha256 9a24494b2602aaf402be5c9e30a0b82d4a5c67528fe8fb475e3f3bc00dd69507  pyOpenSSL-19.1.0.tar.gz\n# Locally computed sha256\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/python-pyopenssl/python-pyopenssl.mk",
    "content": "################################################################################\n#\n# python-pyopenssl\n#\n################################################################################\n\nPYTHON_PYOPENSSL_VERSION = 19.1.0\nPYTHON_PYOPENSSL_SOURCE = pyOpenSSL-$(PYTHON_PYOPENSSL_VERSION).tar.gz\nPYTHON_PYOPENSSL_SITE = https://files.pythonhosted.org/packages/0d/1d/6cc4bd4e79f78be6640fab268555a11af48474fac9df187c3361a1d1d2f0\nPYTHON_PYOPENSSL_LICENSE = Apache-2.0\nPYTHON_PYOPENSSL_LICENSE_FILES = LICENSE\nPYTHON_PYOPENSSL_CPE_ID_VENDOR = pyopenssl\nPYTHON_PYOPENSSL_CPE_ID_PRODUCT = pyopenssl\nPYTHON_PYOPENSSL_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyparsing/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYPARSING\n\tbool \"python-pyparsing\"\n\thelp\n\t  The pyparsing module is an alternative approach to creating\n\t  and executing simple grammars, vs. the traditional lex/yacc\n\t  approach, or the use of regular expressions. The pyparsing\n\t  module provides a library of classes that client code uses\n\t  to construct the grammar directly in Python code.\n\n\t  https://github.com/pyparsing/pyparsing/\n"
  },
  {
    "path": "package/python-pyparsing/python-pyparsing.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyparsing/json\nmd5  f0953e47a0112f7a65aec2305ffdf7b4  pyparsing-2.4.7.tar.gz\nsha256  c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1  pyparsing-2.4.7.tar.gz\n# Locally computed sha256 checksums\nsha256  10d5120a16805804ffda8b688c220bfb4e8f39741b57320604d455a309e01972  LICENSE\n"
  },
  {
    "path": "package/python-pyparsing/python-pyparsing.mk",
    "content": "################################################################################\n#\n# python-pyparsing\n#\n################################################################################\n\nPYTHON_PYPARSING_VERSION = 2.4.7\nPYTHON_PYPARSING_SOURCE = pyparsing-$(PYTHON_PYPARSING_VERSION).tar.gz\nPYTHON_PYPARSING_SITE = https://files.pythonhosted.org/packages/c1/47/dfc9c342c9842bbe0036c7f763d2d6686bcf5eb1808ba3e170afdb282210\nPYTHON_PYPARSING_LICENSE = MIT\nPYTHON_PYPARSING_LICENSE_FILES = LICENSE\nPYTHON_PYPARSING_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyparted/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYPARTED\n\tbool \"python-pyparted\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_ENABLE_LOCALE # parted\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_PARTED\n\thelp\n\t  Python bindings for GNU parted (libparted).\n\n\t  https://github.com/rhinstaller/pyparted\n\ncomment \"pyparted needs a toolchain w/ locale, wchar\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on !BR2_ENABLE_LOCALE || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/python-pyparted/python-pyparted.hash",
    "content": "# Locally computed\nsha256  d214288ae1a70b5925861ce01b3352378eb6b1419aa3b786f509e9ef2a501c02  python-pyparted-3.11.6.tar.gz\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/python-pyparted/python-pyparted.mk",
    "content": "################################################################################\n#\n# python-pyparted\n#\n################################################################################\n\nPYTHON_PYPARTED_VERSION = 3.11.6\nPYTHON_PYPARTED_SITE = $(call github,rhinstaller,pyparted,v$(PYTHON_PYPARTED_VERSION))\nPYTHON_PYPARTED_SETUP_TYPE = distutils\nPYTHON_PYPARTED_LICENSE = GPL-2.0+\nPYTHON_PYPARTED_LICENSE_FILES = COPYING\nPYTHON_PYPARTED_DEPENDENCIES = parted\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pypcap/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYPCAP\n\tbool \"python-pypcap\"\n\tdepends on BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  The pypcap module is an object-oriented wrapper of the C\n\t  libpcap library.\n\n\t  https://github.com/dugsong/pypcap\n"
  },
  {
    "path": "package/python-pypcap/python-pypcap.hash",
    "content": "# locally computed\nsha256  5716d97b39d40b79daf7b0c6a8c8c514f5f1de8f20561c8621ee62a90b93fb03  python-pypcap-6f46e7bf29a648256ddc732a7d0ec83d3ffca390.tar.gz\nsha256  48306c284fdbdf836b880528c3bdd658deac47ed78ffeb24a4ca5a8c39a39304  LICENSE\n"
  },
  {
    "path": "package/python-pypcap/python-pypcap.mk",
    "content": "################################################################################\n#\n# python-pypcap\n#\n################################################################################\n\nPYTHON_PYPCAP_VERSION = 6f46e7bf29a648256ddc732a7d0ec83d3ffca390\nPYTHON_PYPCAP_SITE = $(call github,dugsong,pypcap,$(PYTHON_PYPCAP_VERSION))\nPYTHON_PYPCAP_LICENSE = BSD-3-Clause\nPYTHON_PYPCAP_LICENSE_FILES = LICENSE\nPYTHON_PYPCAP_SETUP_TYPE = distutils\nPYTHON_PYPCAP_DEPENDENCIES = host-python-pyrex libpcap\n\ndefine PYTHON_PYPCAP_CONFIGURE_CMDS\n\t$(HOST_DIR)/bin/python2 $(HOST_DIR)/bin/pyrexc $(@D)/pcap.pyx\n\t(cd $(@D); \\\n\t\t$(HOST_DIR)/bin/python setup.py \\\n\t\tconfig --with-pcap=$(STAGING_DIR)/usr)\nendef\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyqrcode/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYQRCODE\n\tbool \"python-pyqrcode\"\n\tselect BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime\n\tselect BR2_PACKAGE_PYTHON_CODECSCJK if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_CODECSCJK if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  A QR code generator written purely in Python with SVG, EPS,\n\t  PNG and terminal output.\n\n\t  https://github.com/mnooner256/pyqrcode\n"
  },
  {
    "path": "package/python-pyqrcode/python-pyqrcode.hash",
    "content": "# md5 from https://pypi.python.org/pypi/pyqrcode/json\nmd5\t371f29f4b03bd2830c6e0319258b1259  PyQRCode-1.2.1.tar.gz\n# Locally computed\nsha256\tfdbf7634733e56b72e27f9bce46e4550b75a3a2c420414035cae9d9d26b234d5  PyQRCode-1.2.1.tar.gz\nsha256  bef0c3595451da5132dea99e288fb5dafcbc469e0643f993a4ba0a69980f5ec9  setup.py\n"
  },
  {
    "path": "package/python-pyqrcode/python-pyqrcode.mk",
    "content": "################################################################################\n#\n# python-pyqrcode\n#\n################################################################################\n\nPYTHON_PYQRCODE_VERSION = 1.2.1\nPYTHON_PYQRCODE_SOURCE = PyQRCode-$(PYTHON_PYQRCODE_VERSION).tar.gz\nPYTHON_PYQRCODE_SITE = https://pypi.python.org/packages/37/61/f07226075c347897937d4086ef8e55f0a62ae535e28069884ac68d979316\nPYTHON_PYQRCODE_SETUP_TYPE = setuptools\nPYTHON_PYQRCODE_LICENSE = BSD-3-Clause\nPYTHON_PYQRCODE_LICENSE_FILES = setup.py\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyqt5/0001-configure-skip-qtdetail.patch",
    "content": "Do not run qtdetail\n\nqtdetail is a tool that generates qtdetail.out. Since this program is\ncross-compiled, it's not possible to run it on the host.\n\nConsequently, python-pyqt5.mk generates the qtdetail.out file before\ncalling configure.py.\n\nTherefore, this patch makes sure that the pre-generated qtdetail.out\nfile is kept, and that qtdetail is not executed.\n\nSigned-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\nSigned-off-by: Sergey Kostanbaev <sergey.kostanbaev@gmail.com>\n---\nIndex: PyQt5_gpl-5.7/configure.py\n===================================================================\n--- PyQt5_gpl-5.7.orig/configure.py\n+++ PyQt5_gpl-5.7/configure.py\n@@ -672,10 +672,6 @@ int main(int argc, char **argv)\n         if cmd is None:\n             error(\"Failed to determine the detail of your Qt installation. Try again using the --verbose flag to see more detail about the problem.\")\n \n-        # Create the output file, first making sure it doesn't exist.\n-        remove_file(out_file)\n-        run_command(cmd, verbose)\n-\n         if not os.access(out_file, os.F_OK):\n             error(\"%s failed to create %s. Make sure your Qt installation is correct.\" % (cmd, out_file))\n \n"
  },
  {
    "path": "package/python-pyqt5/0002-fix-qt-5.6.2.patch",
    "content": "Fix the build with Qt 5.6.{2,3}\n\nBuilding PyQt 5.7 with versions of Qt older than Qt 5.7 is supposed to\nwork, but currently fails in practice. In fact, this is due to the\nfact that the %Timeline variable in QtCoremod.sip didn't contain the\n5.6.{2,3} Qt versions, so if this version was used, PyQt was assuming it\nwas the later version 5.7, and therefore started enabling APIs only\navailable in Qt 5.7, causing build failures when building against Qt\n5.6.{2,3}.\n\nAdding Qt_5_6_2 and Qt_5_6_3 to the timeline fixes this problem. This\nfix was suggested by Phil Thompson <phil@riverbankcomputing.com>.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: PyQt5_gpl-5.7/sip/QtCore/QtCoremod.sip\n===================================================================\n--- PyQt5_gpl-5.7.orig/sip/QtCore/QtCoremod.sip\t2016-07-25 15:55:37.000000000 +0200\n+++ PyQt5_gpl-5.7/sip/QtCore/QtCoremod.sip\t2016-10-26 15:45:43.577153825 +0200\n@@ -22,7 +22,7 @@\n \n %Module(name=PyQt5.QtCore, call_super_init=True, default_VirtualErrorHandler=PyQt5, keyword_arguments=\"Optional\", version=1)\n \n-%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}\n+%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}\n \n %Platforms {WS_X11 WS_WIN WS_MACX}\n \n"
  },
  {
    "path": "package/python-pyqt5/0003-remove-WindowOkButtonHint-and-WindowCancelButtonHint.patch",
    "content": "From bb7cbdede46f72468bbb1b9bbefd43a1dbad21c0 Mon Sep 17 00:00:00 2001\nFrom: Zoltan Gyarmati <mr.zoltan.gyarmati@gmail.com>\nDate: Mon, 30 Jan 2017 18:28:15 +0100\nSubject: [PATCH] remove WindowOkButtonHint and WindowCancelButtonHint from\n qnamespace.sip as they are removed from qt5.8\n\nSigned-off-by: Zoltan Gyarmati <mr.zoltan.gyarmati@gmail.com>\n---\n sip/QtCore/qnamespace.sip | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/sip/QtCore/qnamespace.sip b/sip/QtCore/qnamespace.sip\nindex 2db83b7..559f410 100644\n--- a/sip/QtCore/qnamespace.sip\n+++ b/sip/QtCore/qnamespace.sip\n@@ -209,8 +209,6 @@ namespace Qt\n         WindowContextHelpButtonHint,\n         WindowShadeButtonHint,\n         WindowStaysOnTopHint,\n-        WindowOkButtonHint,\n-        WindowCancelButtonHint,\n         WindowStaysOnBottomHint,\n         WindowCloseButtonHint,\n         MacWindowToolBarButtonHint,\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/python-pyqt5/0004-drop-qttest-qtestmouse-waitforevents.patch",
    "content": "Drop waitForEvents() method from qtestmouse\n\nThis method was dropped in Qt 5.11:\n\n  https://github.com/qt/qtbase/commit/75e583b3fcbdbbb999633eb5f2267720dd695cfa\n\nHowever, Python PyQt5 still generates a wrapper for it, causing a\nbuild failure. The upstream PyQt5 maintainers have not kept\nwaitForEvents() support for older Qt versions, and instead entirely\ndropped it unconditionally. This can be verified by diffing PyQt 5.10\nand PyQt 5.11. We take the same approach, and drop waitForEvents()\nunconditionally, even when PyQt5 is built against the older Qt 5.6.\n\nFedora is using a similar solution:\nhttps://src.fedoraproject.org/rpms/python-qt5/c/47fb7fdc5d16582772f9c3fc8a6a674a41a7f605?branch=master.\n\nThis patch can be dropped when PyQt5 is bumped to its 5.11 version.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n\nIndex: b/sip/QtTest/qtestmouse.sip\n===================================================================\n--- a/sip/QtTest/qtestmouse.sip\n+++ b/sip/QtTest/qtestmouse.sip\n@@ -41,7 +41,6 @@\n     void mousePress(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1);\n     void mouseRelease(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1);\n     void mouseEvent(QTest::MouseAction action, QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier, QPoint pos, int delay = -1);\n-    void waitForEvents() /ReleaseGIL/;\n     void mouseEvent(QTest::MouseAction action, QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier, QPoint pos, int delay = -1);\n     void mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1);\n     void mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1);\n"
  },
  {
    "path": "package/python-pyqt5/Config.in",
    "content": "comment \"python-pyqt5 needs Qt5\"\n\tdepends on !BR2_PACKAGE_QT5\n\nconfig BR2_PACKAGE_PYTHON_PYQT5\n\tbool \"python-pyqt5\"\n\tdepends on BR2_PACKAGE_QT5\n\tselect BR2_PACKAGE_PYTHON_SIP\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\thelp\n\t  Python bindings for Qt 5\n\n\t  http://www.riverbankcomputing.com/software/pyqt/\n"
  },
  {
    "path": "package/python-pyqt5/python-pyqt5.hash",
    "content": "# md5 from http://http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.7, sha256 locally computed\nmd5\te3dc21f31fd714659f0688e1eb31bacf  PyQt5_gpl-5.7.tar.gz\nsha256\t892693ba5f79989abb2061dad2d5c4e6f127e9dd3240f73f8220c7152cd35b05  PyQt5_gpl-5.7.tar.gz\n\n# Hash for license file\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE\n"
  },
  {
    "path": "package/python-pyqt5/python-pyqt5.mk",
    "content": "################################################################################\n#\n# python-pyqt5\n#\n################################################################################\n\nPYTHON_PYQT5_VERSION = 5.7\nPYTHON_PYQT5_SOURCE = PyQt5_gpl-$(PYTHON_PYQT5_VERSION).tar.gz\nPYTHON_PYQT5_SITE = http://downloads.sourceforge.net/project/pyqt/PyQt5/PyQt-$(PYTHON_PYQT5_VERSION)\nPYTHON_PYQT5_LICENSE = GPL-3.0\nPYTHON_PYQT5_LICENSE_FILES = LICENSE\n\nPYTHON_PYQT5_DEPENDENCIES = python-sip host-python-sip qt5base\nPYTHON_PYQT5_MODULES = \\\n\tQtCore QtGui \\\n\t$(if $(BR2_PACKAGE_QT5BASE_DBUS),QtDBus) \\\n\t$(if $(BR2_PACKAGE_QT5BASE_NETWORK),QtNetwork) \\\n\t$(if $(BR2_PACKAGE_QT5BASE_OPENGL_LIB),QtOpenGL) \\\n\t$(if $(BR2_PACKAGE_QT5BASE_PRINTSUPPORT),QtPrintSupport) \\\n\t$(if $(BR2_PACKAGE_QT5BASE_XML),QtXml)\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\nPYTHON_PYQT5_PYTHON_DIR = python$(PYTHON_VERSION_MAJOR)\nPYTHON_PYQT5_RM_PORT_BASE = port_v3\nelse ifeq ($(BR2_PACKAGE_PYTHON3),y)\nPYTHON_PYQT5_PYTHON_DIR = python$(PYTHON3_VERSION_MAJOR)\nPYTHON_PYQT5_RM_PORT_BASE = port_v2\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS),y)\nPYTHON_PYQT5_MODULES += QtWidgets\n\n# QtSql needs QtWidgets\nifeq ($(BR2_PACKAGE_QT5BASE_SQL),y)\nPYTHON_PYQT5_MODULES += QtSql\nendif\n\n# QtTest needs QtWidgets\nifeq ($(BR2_PACKAGE_QT5BASE_TEST),y)\nPYTHON_PYQT5_MODULES += QtTest\nendif\n\n# QtSvg needs QtWidgets\nifeq ($(BR2_PACKAGE_QT5SVG),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5svg\nPYTHON_PYQT5_MODULES += QtSvg\nendif\nendif\n\nifeq ($(BR2_PACKAGE_QT5CONNECTIVITY),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5connectivity\nPYTHON_PYQT5_MODULES += QtBluetooth QtNfc\nendif\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5declarative\nPYTHON_PYQT5_MODULES += QtQml\n\n# QtQuick module needs opengl\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK)$(BR2_PACKAGE_QT5BASE_OPENGL_LIB),yy)\nPYTHON_PYQT5_MODULES += \\\n\tQtQuick \\\n\t$(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtQuickWidgets)\nendif\nendif\n\nifeq ($(BR2_PACKAGE_QT5ENGINIO),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5enginio\nPYTHON_PYQT5_MODULES += Enginio\nendif\n\nifeq ($(BR2_PACKAGE_QT5LOCATION),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5location\nPYTHON_PYQT5_MODULES += QtPositioning\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)\nPYTHON_PYQT5_MODULES += QtLocation\nendif\nendif\n\nifeq ($(BR2_PACKAGE_QT5MULTIMEDIA),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5multimedia\nPYTHON_PYQT5_MODULES += \\\n\tQtMultimedia \\\n\t$(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtMultimediaWidgets)\nendif\n\nifeq ($(BR2_PACKAGE_QT5SENSORS),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5sensors\nPYTHON_PYQT5_MODULES += QtSensors\nendif\n\nifeq ($(BR2_PACKAGE_QT5SERIALPORT),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5serialport\nPYTHON_PYQT5_MODULES += QtSerialPort\nendif\n\nifeq ($(BR2_PACKAGE_QT5WEBCHANNEL),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5webchannel\nPYTHON_PYQT5_MODULES += QtWebChannel\nendif\n\nifeq ($(BR2_PACKAGE_QT5WEBENGINE),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5webengine\nPYTHON_PYQT5_MODULES += \\\n\tQtWebEngineCore \\\n\t$(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtWebEngineWidgets)\nendif\n\nifeq ($(BR2_PACKAGE_QT5WEBKIT),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5webkit\nPYTHON_PYQT5_MODULES += \\\n\tQtWebKit \\\n\t$(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtWebKitWidgets)\nendif\n\nifeq ($(BR2_PACKAGE_QT5WEBSOCKETS),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5websockets\nPYTHON_PYQT5_MODULES += QtWebSockets\nendif\n\nifeq ($(BR2_PACKAGE_QT5X11EXTRAS),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5x11extras\nPYTHON_PYQT5_MODULES += QtX11Extras\nendif\n\nifeq ($(BR2_PACKAGE_QT5XMLPATTERNS),y)\nPYTHON_PYQT5_DEPENDENCIES += qt5xmlpatterns\nPYTHON_PYQT5_MODULES += QtXmlPatterns\nendif\n\nPYTHON_PYQT5_QTDETAIL_LICENSE = Open Source\n\nPYTHON_PYQT5_QTDETAIL_TYPE = shared\n\n# Turn off features that aren't available in current qt configuration\nPYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL),,PyQt_OpenGL)\nPYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP),,PyQt_Desktop_OpenGL)\nPYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_OPENSSL),,PyQt_SSL)\n\ndefine PYTHON_PYQT5_QTDETAIL\n\techo $(1) >> $(2)/qtdetail.out\nendef\n\n# Since we can't run generate qtdetail.out by running qtdetail on target device\n# we must generate the configuration.\ndefine PYTHON_PYQT5_GENERATE_QTDETAIL\n\t$(RM) -f $(1)/qtdetail.out\n\t$(call PYTHON_PYQT5_QTDETAIL,$(PYTHON_PYQT5_QTDETAIL_LICENSE),$(1))\n\t$(call PYTHON_PYQT5_QTDETAIL,$(PYTHON_PYQT5_QTDETAIL_TYPE),$(1))\n\t$(foreach f,$(PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES),\n\t\t$(call PYTHON_PYQT5_QTDETAIL,$(f),$(1)) \\\n\t)\nendef\n\nPYTHON_PYQT5_CONF_OPTS = \\\n\t--bindir $(TARGET_DIR)/usr/bin \\\n\t--destdir $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages \\\n\t--qmake $(HOST_DIR)/bin/qmake \\\n\t--sysroot $(STAGING_DIR)/usr \\\n\t-w --confirm-license \\\n\t--no-designer-plugin \\\n\t--no-docstrings \\\n\t--no-sip-files \\\n\t$(foreach module,$(PYTHON_PYQT5_MODULES),--enable=$(module))\n\ndefine PYTHON_PYQT5_CONFIGURE_CMDS\n\t$(call PYTHON_PYQT5_GENERATE_QTDETAIL,$(@D))\n\t(cd $(@D); \\\n\t\t$(TARGET_MAKE_ENV) \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(HOST_DIR)/bin/python configure.py \\\n\t\t\t$(PYTHON_PYQT5_CONF_OPTS) \\\n\t)\nendef\n\ndefine PYTHON_PYQT5_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\n# __init__.py is needed to import PyQt5\n# __init__.pyc is needed if BR2_PACKAGE_PYTHON_PYC_ONLY is set\ndefine PYTHON_PYQT5_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install\n\ttouch $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages/PyQt5/__init__.py\n\t$(RM) -rf $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages/PyQt5/uic/$(PYTHON_PYQT5_RM_PORT_BASE)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/python-pyratemp/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYRATEMP\n\tbool \"python-pyratemp\"\n\thelp\n\t  python-pyratemp is a Python library for doing html\n\t  templates.  written entirely in Python, that is designed to\n\t  be very easy to use and very like writing Python.\n\n\t  https://pypi.python.org/pypi/pyratemp/\n"
  },
  {
    "path": "package/python-pyratemp/python-pyratemp.hash",
    "content": "#md5 from https://pypi.python.org/pypi?:action=show_md5&digest=e4bbe5d4a98016efef882b2b2f47defb\nmd5     e4bbe5d4a98016efef882b2b2f47defb pyratemp-0.3.2.tgz\n# Locally calculated:\nsha256  c45ed656ada482a02fe780495f37a695e7671accb04f918f7e7f18abf877bc71  pyratemp-0.3.2.tgz\nsha256  3de57a97f9c8492808867ae2ac2b33b422a8a34d29d0ea981b9e85c0963462db  LICENSE\n"
  },
  {
    "path": "package/python-pyratemp/python-pyratemp.mk",
    "content": "################################################################################\n#\n# python-pyratemp\n#\n################################################################################\n\nPYTHON_PYRATEMP_VERSION = 0.3.2\nPYTHON_PYRATEMP_SOURCE = pyratemp-$(PYTHON_PYRATEMP_VERSION).tgz\nPYTHON_PYRATEMP_SITE = https://pypi.python.org/packages/source/p/pyratemp\nPYTHON_PYRATEMP_LICENSE = MIT\nPYTHON_PYRATEMP_LICENSE_FILES = LICENSE\nPYTHON_PYRATEMP_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyrex/python-pyrex.hash",
    "content": "# Locally calculated\nsha256  5f87df06831d0b3412eb4bc9d3fc2ee7bfae1b913d7da8c23ab2bf5699fb6b50  Pyrex-0.9.9.tar.gz\nsha256  5c1aec55fc8c399ec23968ddb2117eec8f7a53f002c15472a8b0aa7426790700  LICENSE.txt\n"
  },
  {
    "path": "package/python-pyrex/python-pyrex.mk",
    "content": "################################################################################\n#\n# python-pyrex\n#\n################################################################################\n\nPYTHON_PYREX_VERSION = 0.9.9\nPYTHON_PYREX_SOURCE = Pyrex-$(PYTHON_PYREX_VERSION).tar.gz\nPYTHON_PYREX_SITE = http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex\nPYTHON_PYREX_LICENSE = Apache-2.0\nPYTHON_PYREX_LICENSE_FILES = LICENSE.txt\nPYTHON_PYREX_SETUP_TYPE = distutils\nHOST_PYTHON_PYREX_NEEDS_HOST_PYTHON = python2\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-pyro/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYRO\n\tbool \"python-pyro\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  python-pyro is a Python library stands for PYthon Remote\n\t  Objects. It is an advanced and powerful Distributed Object\n\t  Technology system written entirely in Python, that is\n\t  designed to be very easy to use..\n\n\t  https://pypi.python.org/pypi/Pyro/\n"
  },
  {
    "path": "package/python-pyro/python-pyro.hash",
    "content": "# md5 from https://pypi.python.org/pypi/pyro/json\nmd5 59d4d3f4a8786776c9d7f9051b8f1a69 Pyro-3.16.tar.gz\n# Locally computed\nsha256 1bed508453ef7a7556b51424a58101af2349b662baab7e7331c5cb85dbe7e578 Pyro-3.16.tar.gz\nsha256  7c14017a2f543384bfcde86043758b68d023b47bf09700a7df6dacbae9c82103  LICENSE\n"
  },
  {
    "path": "package/python-pyro/python-pyro.mk",
    "content": "################################################################################\n#\n# python-pyro\n#\n################################################################################\n\nPYTHON_PYRO_VERSION = 3.16\nPYTHON_PYRO_SOURCE = Pyro-$(PYTHON_PYRO_VERSION).tar.gz\nPYTHON_PYRO_SITE = https://pypi.python.org/packages/61/68/0978adae315261b87acd216517c2c7f00780396e4d1426c5412458c6a28f\nPYTHON_PYRO_LICENSE = MIT\nPYTHON_PYRO_LICENSE_FILES = LICENSE\nPYTHON_PYRO_CPE_ID_VENDOR = pyro_project\nPYTHON_PYRO_CPE_ID_PRODUCT = pyro\nPYTHON_PYRO_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyroute2/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYROUTE2\n\tbool \"python-pyroute2\"\n\tselect BR2_PACKAGE_PYTHON_SQLITE if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_SQLITE if BR2_PACKAGE_PYTHON3\n\thelp\n\t  Python netlink library - Linux network / netns / wireless /\n\t  ipset configuration.\n\n\t  https://github.com/svinota/pyroute2\n"
  },
  {
    "path": "package/python-pyroute2/python-pyroute2.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyroute2/json\nmd5\t371683b62314211b8bc9807ac8ef1144  pyroute2-0.5.7.tar.gz\nsha256\t963fce07da2841456d39e3b932b071f6de28d23dadfae014022d67a752916f98  pyroute2-0.5.7.tar.gz\n# Locally computed sha256\nsha256 4739b32a2478e9c204bf010bad5d565d188e59ff905e3c8f71fe3398098b7093  LICENSE.Apache.v2\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL.v2\nsha256 e329111754f1340de20b6084cae4d264b7b4fc8fb48964173f8ee0cb7440a51c  README.license.md\n"
  },
  {
    "path": "package/python-pyroute2/python-pyroute2.mk",
    "content": "################################################################################\n#\n# python-pyroute2\n#\n################################################################################\n\nPYTHON_PYROUTE2_VERSION = 0.5.7\nPYTHON_PYROUTE2_SOURCE = pyroute2-$(PYTHON_PYROUTE2_VERSION).tar.gz\nPYTHON_PYROUTE2_SITE = https://files.pythonhosted.org/packages/6b/94/2a5f6c11369a21efd27a0b4cb92adf5012da7acdbce7e78055710986ca23\nPYTHON_PYROUTE2_LICENSE = Apache-2.0 or GPL-2.0+\nPYTHON_PYROUTE2_LICENSE_FILES = LICENSE.Apache.v2 LICENSE.GPL.v2 README.license.md\nPYTHON_PYROUTE2_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pysendfile/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYSENDFILE\n\tbool \"python-pysendfile\"\n\thelp\n\t  A Python interface to sendfile(2) syscall\n\n\t  https://github.com/giampaolo/pysendfile\n"
  },
  {
    "path": "package/python-pysendfile/python-pysendfile.hash",
    "content": "# Locally computed:\nsha256  f4ca8a7f0be67e3d710c0633dd9aadab6881203c31cb9eb9be4f10361ad3f937  python-pysendfile-2.0.1.tar.gz\nsha256  259f433563cfe0296c84c00381c600e82e0ab1b617ce20fe6e7f555a2b95af26  LICENSE\n"
  },
  {
    "path": "package/python-pysendfile/python-pysendfile.mk",
    "content": "################################################################################\n#\n# python-pysendfile\n#\n################################################################################\n\nPYTHON_PYSENDFILE_VERSION = 2.0.1\nPYTHON_PYSENDFILE_SITE = $(call github,giampaolo,pysendfile,release-$(PYTHON_PYSENDFILE_VERSION))\nPYTHON_PYSENDFILE_SETUP_TYPE = setuptools\nPYTHON_PYSENDFILE_LICENSE = MIT\nPYTHON_PYSENDFILE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pysftp/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYSFTP\n\tbool \"python-pysftp\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-paramiko -> python-bcrypt\n\tselect BR2_PACKAGE_PYTHON_PARAMIKO # runtime\n\thelp\n\t  A friendly face on SFTP.\n\n\t  https://bitbucket.org/dundeemt/pysftp\n"
  },
  {
    "path": "package/python-pysftp/python-pysftp.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pysftp/json\nmd5  abc55b7122de3e86f0d547301f4ddf0c  pysftp-0.2.9.tar.gz\nsha256  fbf55a802e74d663673400acd92d5373c1c7ee94d765b428d9f977567ac4854a  pysftp-0.2.9.tar.gz\n# Locally computed sha256 checksums\nsha256  e648e3c7f439b52222a785a590223a0f7bad1a8a5fb89157d80d13123c7dcd25  LICENSE.txt\n"
  },
  {
    "path": "package/python-pysftp/python-pysftp.mk",
    "content": "################################################################################\n#\n# python-pysftp\n#\n################################################################################\n\nPYTHON_PYSFTP_VERSION = 0.2.9\nPYTHON_PYSFTP_SOURCE = pysftp-$(PYTHON_PYSFTP_VERSION).tar.gz\nPYTHON_PYSFTP_SITE = https://files.pythonhosted.org/packages/36/60/45f30390a38b1f92e0a8cf4de178cd7c2bc3f874c85430e40ccf99df8fe7\nPYTHON_PYSFTP_SETUP_TYPE = setuptools\nPYTHON_PYSFTP_LICENSE = BSD-3-Clause\nPYTHON_PYSFTP_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pysmb/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYSMB\n\tbool \"python-pysmb\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_PYTHON_PYASN1\n\thelp\n\t  pysmb is an experimental SMB/CIFS library written in Python.\n\t  It implements the client-side SMB/CIFS protocol (SMB1 and\n\t  SMB2) which allows your Python application to access and\n\t  transfer files to/from SMB/CIFS shared folders like your\n\t  Windows file sharing and Samba folders.\n\n\t  https://miketeo.net/wp/index.php/projects/pysmb\n\ncomment \"python-pysmb needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/python-pysmb/python-pysmb.hash",
    "content": "# Locally computed\nsha256  af9db2e99eaa01e87b0ebc10f87db7c630cc880c7ae3d9dd06f1e5313e82d5a2  pysmb-1.2.7.tar.gz\nsha256  8c487d5c10f024e44a9cf1df21d1fd28a80bd2dfddd9f1dcd109a47d721f497f  LICENSE\n"
  },
  {
    "path": "package/python-pysmb/python-pysmb.mk",
    "content": "################################################################################\n#\n# python-pysmb\n#\n################################################################################\n\nPYTHON_PYSMB_VERSION = 1.2.7\nPYTHON_PYSMB_SOURCE = pysmb-$(PYTHON_PYSMB_VERSION).tar.gz\nPYTHON_PYSMB_SITE = https://miketeo.net/files/Projects/pysmb\nPYTHON_PYSMB_LICENSE = Libpng\nPYTHON_PYSMB_LICENSE_FILES = LICENSE\nPYTHON_PYSMB_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pysmi/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYSMI\n\tbool \"python-pysmi\"\n\tselect BR2_PACKAGE_PYTHON_PLY # runtime\n\thelp\n\t  SNMP SMI/MIB Parser.\n\n\t  https://github.com/etingof/pysmi\n"
  },
  {
    "path": "package/python-pysmi/python-pysmi.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pysmi/json\nmd5\t10a9dd140ad512eed9f37344df83ce9d  pysmi-0.3.4.tar.gz\nsha256\tbd15a15020aee8376cab5be264c26330824a8b8164ed0195bd402dd59e4e8f7c  pysmi-0.3.4.tar.gz\n# Locally computed sha256 checksums\nsha256\tc43704eafcfa2bc33e56168f2b498c3c34a1d7865855626a52b5af411fc5837f  LICENSE.rst\n"
  },
  {
    "path": "package/python-pysmi/python-pysmi.mk",
    "content": "################################################################################\n#\n# python-pysmi\n#\n################################################################################\n\nPYTHON_PYSMI_VERSION = 0.3.4\nPYTHON_PYSMI_SOURCE = pysmi-$(PYTHON_PYSMI_VERSION).tar.gz\nPYTHON_PYSMI_SITE = https://files.pythonhosted.org/packages/52/42/ddaeb06ff551672b17b77f81bc2e26b7c6060b28fe1552226edc6476ce37\nPYTHON_PYSMI_SETUP_TYPE = setuptools\nPYTHON_PYSMI_LICENSE = BSD-2-Clause\nPYTHON_PYSMI_LICENSE_FILES = LICENSE.rst\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pysnmp/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYSNMP\n\tbool \"python-pysnmp\"\n\tselect BR2_PACKAGE_PYTHON_PYSMI # runtime\n\tselect BR2_PACKAGE_PYTHON_PYCRYPTODOMEX # runtime\n\tselect BR2_PACKAGE_PYTHON_PYASN1 # runtime\n\thelp\n\t  PySNMP is a cross-platform, pure-Python SNMP engine\n\t  implementation.\n\n\t  http://pysnmp.sf.net\n"
  },
  {
    "path": "package/python-pysnmp/python-pysnmp.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pysnmp/json\nmd5\t2222880259daf6e2cb322e938c818276  pysnmp-4.4.12.tar.gz\nsha256\t0c3dbef2f958caca96071fe5c19de43e9c1b0484ab02a0cf08b190bcee768ba9  pysnmp-4.4.12.tar.gz\n# Locally computed sha256 checksums\nsha256\td0b2edd772164395320fc5ad7dfaa9806fa038fb29762b347c549891d7a79237  LICENSE.rst\n"
  },
  {
    "path": "package/python-pysnmp/python-pysnmp.mk",
    "content": "################################################################################\n#\n# python-pysnmp\n#\n################################################################################\n\nPYTHON_PYSNMP_VERSION = 4.4.12\nPYTHON_PYSNMP_SOURCE = pysnmp-$(PYTHON_PYSNMP_VERSION).tar.gz\nPYTHON_PYSNMP_SITE = https://files.pythonhosted.org/packages/4e/75/72f64c451bf5884715f84f8217b69b4025da0b67628d611cd14a5b7db217\nPYTHON_PYSNMP_SETUP_TYPE = setuptools\nPYTHON_PYSNMP_LICENSE = BSD-3-Clause\nPYTHON_PYSNMP_LICENSE_FILES = LICENSE.rst\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pysnmp-mibs/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYSNMP_MIBS\n\tbool \"python-pysnmp-mibs\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # pysnmp -> pyasn\n\tselect BR2_PACKAGE_PYTHON_PYSNMP\n\thelp\n\t  PySNMP MIBs is a set of IETF & IANA MIBs pre-compiled and\n\t  packaged to simplify their use with the PySNMP library.\n\n\t  http://pysnmp.sf.net\n\ncomment \"python-pysnmp-libs needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/python-pysnmp-mibs/python-pysnmp-mibs.hash",
    "content": "# md5 from https://pypi.python.org/pypi/pysnmp-mibs/json\nmd5\t01845c4595d87d3c3485c0449616cbda  pysnmp-mibs-0.1.6.tar.gz\n# Locally computed\nsha256\t00fa321ca598e8a14c0ad98702bf10fb5e9d57b7d06bb99dc818fea07683720c  pysnmp-mibs-0.1.6.tar.gz\nsha256  361eda483f7fac1f8cca4e16c340fa07a1cad2bf1200577a01075745233b406c  LICENSE.txt\n"
  },
  {
    "path": "package/python-pysnmp-mibs/python-pysnmp-mibs.mk",
    "content": "################################################################################\n#\n# python-pysnmp-mibs\n#\n################################################################################\n\nPYTHON_PYSNMP_MIBS_VERSION = 0.1.6\nPYTHON_PYSNMP_MIBS_SOURCE = pysnmp-mibs-$(PYTHON_PYSNMP_MIBS_VERSION).tar.gz\nPYTHON_PYSNMP_MIBS_SITE = https://pypi.python.org/packages/bf/7c/99ab192af934ed5d41ceef92a1b949b41652f29b46241b902ffec55642f4\nPYTHON_PYSNMP_MIBS_SETUP_TYPE = setuptools\nPYTHON_PYSNMP_MIBS_LICENSE = BSD-3-Clause\nPYTHON_PYSNMP_MIBS_LICENSE_FILES = LICENSE.txt\n\nPYTHON_PYSNMP_MIBS_DEPENDENCIES = python-pysnmp\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pysocks/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYSOCKS\n\tbool \"python-pysocks\"\n\thelp\n\t  A Python SOCKS client module.\n\n\t  https://github.com/Anorov/PySocks\n"
  },
  {
    "path": "package/python-pysocks/python-pysocks.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pysocks/json\nmd5\t89b1a6865c61bae67a32417517612ee6  PySocks-1.7.1.tar.gz\nsha256\t3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0  PySocks-1.7.1.tar.gz\n# Locally computed sha256 checksums\nsha256\t7027e214e014eb78b7adcc1ceda5aca713a79fc4f6a0c52c9da5b3e707e6ffe9  LICENSE\n"
  },
  {
    "path": "package/python-pysocks/python-pysocks.mk",
    "content": "################################################################################\n#\n# python-pysocks\n#\n################################################################################\n\nPYTHON_PYSOCKS_VERSION = 1.7.1\nPYTHON_PYSOCKS_SOURCE = PySocks-$(PYTHON_PYSOCKS_VERSION).tar.gz\nPYTHON_PYSOCKS_SITE = https://files.pythonhosted.org/packages/bd/11/293dd436aea955d45fc4e8a35b6ae7270f5b8e00b53cf6c024c83b657a11\nPYTHON_PYSOCKS_LICENSE = BSD-3-Clause\nPYTHON_PYSOCKS_LICENSE_FILES = LICENSE\nPYTHON_PYSOCKS_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pytablereader/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYTABLEREADER\n\tbool \"python-pytablereader\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-mbstrdecoder, python-pathpy, python-beautifulsoup4, python-pathvalidate\n\tselect BR2_PACKAGE_PYTHON_BEAUTIFULSOUP4 # runtime\n\tselect BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime\n\tselect BR2_PACKAGE_PYTHON_JSONSCHEMA # runtime\n\tselect BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime\n\tselect BR2_PACKAGE_PYTHON_PATHPY # runtime\n\tselect BR2_PACKAGE_PYTHON_PATHVALIDATE # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_TABLEDATA # runtime\n\tselect BR2_PACKAGE_PYTHON_TYPEPY # runtime\n\thelp\n\t  A python library to load structured table data from\n\t  files/URL with various data formats:\n\t  CSV/Excel/HTML/JSON/LTSV/Markdown/TSV.\n\n\t  https://github.com/thombashi/pytablereader\n"
  },
  {
    "path": "package/python-pytablereader/python-pytablereader.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pytablereader/json\nmd5\t23ba6121e2f916dfbf4015516779dfcd  pytablereader-0.26.1.tar.gz\nsha256\tf2e1477de8886267b765af7861baacc65606761bfabb0689f118cc5d27861f26  pytablereader-0.26.1.tar.gz\n# Locally computed sha256 checksums\nsha256\t7fcef461a93fea587224132a865d1285969c9bec15baf59caeb7a8c7638a8744  LICENSE\n"
  },
  {
    "path": "package/python-pytablereader/python-pytablereader.mk",
    "content": "################################################################################\n#\n# python-pytablereader\n#\n################################################################################\n\nPYTHON_PYTABLEREADER_VERSION = 0.26.1\nPYTHON_PYTABLEREADER_SOURCE = pytablereader-$(PYTHON_PYTABLEREADER_VERSION).tar.gz\nPYTHON_PYTABLEREADER_SITE = https://files.pythonhosted.org/packages/1e/bc/f60da8a733cd87215d8533f28536f8149eca3b898bbca346b37b6c915d8d\nPYTHON_PYTABLEREADER_SETUP_TYPE = setuptools\nPYTHON_PYTABLEREADER_LICENSE = MIT\nPYTHON_PYTABLEREADER_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pytablewriter/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYTABLEWRITER\n\tbool \"python-pytablewriter\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-dataproperty, python-mbstrdecoder, python-pathvalidate\n\tselect BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime\n\tselect BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime\n\tselect BR2_PACKAGE_PYTHON_MSGFY # runtime\n\tselect BR2_PACKAGE_PYTHON_PATHVALIDATE # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_TABLEDATA # runtime\n\tselect BR2_PACKAGE_PYTHON_TYPEPY # runtime\n\thelp\n\t  pytablewriter is a python library to write a table in various\n\t  formats: CSV, HTML, JavaScript, JSON, Markdown, Excel, Pandas,\n\t  Python, reStructuredText.\n\n\t  https://github.com/thombashi/pytablewriter\n"
  },
  {
    "path": "package/python-pytablewriter/python-pytablewriter.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pytablewriter/json\nmd5\t4909dcdba8c6df35e14dbecbc6c94b6c  pytablewriter-0.46.1.tar.gz\nsha256\t9d52ecc84bb89197c312e193b4ff04a3c934b914f3c32e4826d44a0acbc7764f  pytablewriter-0.46.1.tar.gz\n# Locally computed sha256 checksums\nsha256\ta93d75bcb0774e2990106380cadad6dcb2de193c55d435ffc56ba345a08b1dc2  LICENSE\n"
  },
  {
    "path": "package/python-pytablewriter/python-pytablewriter.mk",
    "content": "################################################################################\n#\n# python-pytablewriter\n#\n################################################################################\n\nPYTHON_PYTABLEWRITER_VERSION = 0.46.1\nPYTHON_PYTABLEWRITER_SOURCE = pytablewriter-$(PYTHON_PYTABLEWRITER_VERSION).tar.gz\nPYTHON_PYTABLEWRITER_SITE = https://files.pythonhosted.org/packages/bb/86/d5f3dfec35d2d7583c9f3f1d731adf729851d1fe01011f07a747eb8c7df0\nPYTHON_PYTABLEWRITER_SETUP_TYPE = setuptools\nPYTHON_PYTABLEWRITER_LICENSE = MIT\nPYTHON_PYTABLEWRITER_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pytest/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYTEST\n\tbool \"python-pytest\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_ATTRS # runtime\n\tselect BR2_PACKAGE_PYTHON_INICONFIG # runtime\n\tselect BR2_PACKAGE_PYTHON_PACKAGING # runtime\n\tselect BR2_PACKAGE_PYTHON_PLUGGY # runtime\n\tselect BR2_PACKAGE_PYTHON_PY # runtime\n\tselect BR2_PACKAGE_PYTHON_TOML # runtime\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT # runtime\n\thelp\n\t  pytest is a framework that makes building simple and scalable\n\t  tests easy. Tests are expressive and readable—no boilerplate\n\t  code required.\n\n\t  https://docs.pytest.org/en/latest/\n"
  },
  {
    "path": "package/python-pytest/python-pytest.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pytest/json\nmd5\t8bc467ebd5d571778dc51dd87ff09513  pytest-6.2.5.tar.gz\nsha256\t131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89  pytest-6.2.5.tar.gz\n# Locally computer sha256\nsha256\t7898b9b164d4f93fd9a562fd0f592935518b48c4745303964110eb7f7fe64faf  LICENSE\n"
  },
  {
    "path": "package/python-pytest/python-pytest.mk",
    "content": "################################################################################\n#\n# python-pytest\n#\n################################################################################\n\nPYTHON_PYTEST_VERSION = 6.2.5\nPYTHON_PYTEST_SOURCE = pytest-$(PYTHON_PYTEST_VERSION).tar.gz\nPYTHON_PYTEST_SITE = https://files.pythonhosted.org/packages/4b/24/7d1f2d2537de114bdf1e6875115113ca80091520948d370c964b88070af2\nPYTHON_PYTEST_SETUP_TYPE = setuptools\nPYTHON_PYTEST_LICENSE = MIT\nPYTHON_PYTEST_LICENSE_FILES = LICENSE\nPYTHON_PYTEST_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pytest-asyncio/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYTEST_ASYNCIO\n\tbool \"python-pytest-asyncio\"\n\tdepends on BR2_PACKAGE_PYTHON3 # pytest\n\tselect BR2_PACKAGE_PYTHON_PYTEST # runtime\n\thelp\n\t  Pytest support for asyncio.\n\n\t  https://github.com/pytest-dev/pytest-asyncio\n"
  },
  {
    "path": "package/python-pytest-asyncio/python-pytest-asyncio.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pytest-asyncio/json\nmd5  8940c41c342b5bafe2ebb0d6e5c320ec  pytest-asyncio-0.15.1.tar.gz\nsha256  2564ceb9612bbd560d19ca4b41347b54e7835c2f792c504f698e05395ed63f6f  pytest-asyncio-0.15.1.tar.gz\n# Locally computed sha256 checksums\nsha256  cb5e8e7e5f4a3988e1063c142c60dc2df75605f4c46515e776e3aca6df976e14  LICENSE\n"
  },
  {
    "path": "package/python-pytest-asyncio/python-pytest-asyncio.mk",
    "content": "################################################################################\n#\n# python-pytest-asyncio\n#\n################################################################################\n\nPYTHON_PYTEST_ASYNCIO_VERSION = 0.15.1\nPYTHON_PYTEST_ASYNCIO_SOURCE = pytest-asyncio-$(PYTHON_PYTEST_ASYNCIO_VERSION).tar.gz\nPYTHON_PYTEST_ASYNCIO_SITE = https://files.pythonhosted.org/packages/de/c1/b2b0119e30f61f7ec8b44f129f6fde46a1a7329de17110f124639aa8896b\nPYTHON_PYTEST_ASYNCIO_SETUP_TYPE = setuptools\nPYTHON_PYTEST_ASYNCIO_LICENSE = Apache-2.0\nPYTHON_PYTEST_ASYNCIO_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pytrie/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYTRIE\n\tbool \"python-pytrie\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SORTEDCONTAINERS # runtime\n\thelp\n\t  A pure Python implementation of the trie data structure.\n\n\t  https://pypi.python.org/pypi/PyTrie\n"
  },
  {
    "path": "package/python-pytrie/python-pytrie.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pytrie/json\nmd5  0cbe20db2361dcc99bdcba7acacd34e6  PyTrie-0.4.0.tar.gz\nsha256  8f4488f402d3465993fb6b6efa09866849ed8cda7903b50647b7d0342b805379  PyTrie-0.4.0.tar.gz\n# Locally computed sha256 checksums\nsha256  97f85c2ba0d856cf5f7e5db587af7299233db2e502980eb655ace28343541d50  LICENSE\n"
  },
  {
    "path": "package/python-pytrie/python-pytrie.mk",
    "content": "################################################################################\n#\n# python-pytrie\n#\n################################################################################\n\nPYTHON_PYTRIE_VERSION = 0.4.0\nPYTHON_PYTRIE_SOURCE = PyTrie-$(PYTHON_PYTRIE_VERSION).tar.gz\nPYTHON_PYTRIE_LICENSE = BSD-3-Clause\nPYTHON_PYTRIE_LICENSE_FILES = LICENSE\nPYTHON_PYTRIE_SITE = https://files.pythonhosted.org/packages/d3/19/15ec77ab9c85f7c36eb590d6ab7dd529f8c8516c0e2219f1a77a99d7ee77\nPYTHON_PYTRIE_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pytz/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYTZ\n\tbool \"python-pytz\"\n\thelp\n\t  World timezone definitions, modern and historical.\n\n\t  http://pythonhosted.org/pytz\n"
  },
  {
    "path": "package/python-pytz/python-pytz.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pytz/json\nmd5\tc3d84a465fc56a4edd52cca8873ac0df  pytz-2019.3.tar.gz\nsha256\tb02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be  pytz-2019.3.tar.gz\n# Locally computed sha256 checksums\nsha256\t39f07c72a1bfda349cbd27bac9bcb1e6f8c5b4e5cc3fadf56900406e8cc0b792  LICENSE.txt\n"
  },
  {
    "path": "package/python-pytz/python-pytz.mk",
    "content": "################################################################################\n#\n# python-pytz\n#\n################################################################################\n\nPYTHON_PYTZ_VERSION = 2019.3\nPYTHON_PYTZ_SOURCE = pytz-$(PYTHON_PYTZ_VERSION).tar.gz\nPYTHON_PYTZ_SITE = https://files.pythonhosted.org/packages/82/c3/534ddba230bd4fbbd3b7a3d35f3341d014cca213f369a9940925e7e5f691\nPYTHON_PYTZ_SETUP_TYPE = setuptools\nPYTHON_PYTZ_LICENSE = MIT\nPYTHON_PYTZ_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch",
    "content": "From e86a1c199d45c9751da67f947af202927dee07f8 Mon Sep 17 00:00:00 2001\nFrom: Yegor Yefremov <yegorslists@googlemail.com>\nDate: Thu, 10 Dec 2015 08:44:55 +0100\nSubject: [PATCH] Workaround finding libudev on systems without ldconf\n\nThis patch tries to load libudev.so directly without relying on\nPython's find_library(). find_library() fails on systems\nwithout library cache mechanism.\n\nTaken from pyudev issue 117 discussion:\nhttps://github.com/pyudev/pyudev/pull/117\n\nSigned-off-by: Yegor Yefremov <yegorslists@googlemail.com>\n[Marcin: adjust to 0.22.0]\nSigned-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>\n[Fabrice: Use %-formatting instead of f-string for python 2]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/pyudev/_ctypeslib/utils.py | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/src/pyudev/_ctypeslib/utils.py b/src/pyudev/_ctypeslib/utils.py\nindex 9dffb3c..aa9942f 100644\n--- a/src/pyudev/_ctypeslib/utils.py\n+++ b/src/pyudev/_ctypeslib/utils.py\n@@ -28,7 +28,7 @@\n from __future__ import print_function\n from __future__ import unicode_literals\n \n-from ctypes import CDLL\n+from ctypes import cdll, CDLL\n from ctypes.util import find_library\n \n \n@@ -50,10 +50,10 @@ def load_ctypes_library(name, signatures, error_checkers):\n     :rtype: ctypes.CDLL\n     :raises ImportError: if the library is not found\n     \"\"\"\n-    library_name = find_library(name)\n-    if not library_name:\n+    try:\n+        lib = cdll.LoadLibrary('lib%s.so' % name)\n+    except OSError:\n         raise ImportError('No library named %s' % name)\n-    lib = CDLL(library_name, use_errno=True)\n     # Add function signatures\n     for funcname, signature in signatures.items():\n         function = getattr(lib, funcname, None)\n-- \n2.29.1\n\n"
  },
  {
    "path": "package/python-pyudev/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYUDEV\n\tbool \"python-pyudev\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  pyudev is a LGPL licenced, pure Python 2/3 binding to\n\t  libudev, the device and hardware management and information\n\t  library of Linux.\n\n\t  https://github.com/pyudev/pyudev\n\ncomment \"python-pyudev needs udev /dev management\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n"
  },
  {
    "path": "package/python-pyudev/python-pyudev.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyudev/json\nmd5  377eda61186c91e9440f01d76dbb4206  pyudev-0.22.0.tar.gz\nsha256  69bb1beb7ac52855b6d1b9fe909eefb0017f38d917cba9939602c6880035b276  pyudev-0.22.0.tar.gz\n# Locally computed sha256 checksums\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  COPYING\n"
  },
  {
    "path": "package/python-pyudev/python-pyudev.mk",
    "content": "################################################################################\n#\n# python-pyudev\n#\n################################################################################\n\nPYTHON_PYUDEV_VERSION = 0.22.0\nPYTHON_PYUDEV_SOURCE = pyudev-$(PYTHON_PYUDEV_VERSION).tar.gz\nPYTHON_PYUDEV_SITE = https://files.pythonhosted.org/packages/72/c8/4660d815a79b1d42c409012aaa10ebd6b07a47529b4cb6880f27a24bd646\nPYTHON_PYUDEV_LICENSE = LGPL-2.1+\nPYTHON_PYUDEV_LICENSE_FILES = COPYING\nPYTHON_PYUDEV_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyusb/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYUSB\n\tbool \"python-pyusb\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  The PyUSB module provides easy access to the Universal\n\t  Serial Bus (USB) from Python.\n\n\t  http://sourceforge.net/apps/trac/pyusb/\n\ncomment \"python-pyusb needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/python-pyusb/python-pyusb.hash",
    "content": "# md5 from https://pypi.python.org/pypi/pyusb/json\nmd5     a9db479f1fb914e91d3106e67a13ae09 pyusb-1.1.1.tar.gz\n# Locally computed\nsha256  7d449ad916ce58aff60b89aae0b65ac130f289c24d6a5b7b317742eccffafc38  pyusb-1.1.1.tar.gz\nsha256  03e39fdcee9c18f2f9d0c3500a993ddeac050695eb81070ea41347587c76a7fe  LICENSE\n"
  },
  {
    "path": "package/python-pyusb/python-pyusb.mk",
    "content": "################################################################################\n#\n# python-pyusb\n#\n################################################################################\n\nPYTHON_PYUSB_VERSION = 1.1.1\nPYTHON_PYUSB_SOURCE = pyusb-$(PYTHON_PYUSB_VERSION).tar.gz\nPYTHON_PYUSB_SITE = https://files.pythonhosted.org/packages/b9/8d/25c4e446a07e918eb39b5af25c4a83a89db95ae44e4ed5a46c3c53b0a4d6\nPYTHON_PYUSB_LICENSE = BSD-3-Clause\nPYTHON_PYUSB_LICENSE_FILES = LICENSE\nPYTHON_PYUSB_SETUP_TYPE = setuptools\nPYTHON_PYUSB_DEPENDENCIES = host-python-setuptools-scm libusb\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyxb/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYXB\n\tbool \"python-pyxb\"\n\thelp\n\t  PyXB is a pure Python package that generates Python code for\n\t  classes that correspond to data structures defined by\n\t  XMLSchema.\n\n\t  http://pyxb.sourceforge.net/\n"
  },
  {
    "path": "package/python-pyxb/python-pyxb.hash",
    "content": "# md5 from https://pypi.python.org/pypi/PyXB/json, sha256 locally computed\nmd5\t4303573fc7094ce4664c5b71cd4bdb48  PyXB-1.2.6.tar.gz\nsha256\t2a00f38dd1d87b88f92d79bc5a09718d730419b88e814545f472bbd5a3bf27b4  PyXB-1.2.6.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/python-pyxb/python-pyxb.mk",
    "content": "################################################################################\n#\n# python-pyxb\n#\n################################################################################\n\nPYTHON_PYXB_VERSION = 1.2.6\nPYTHON_PYXB_SOURCE = PyXB-$(PYTHON_PYXB_VERSION).tar.gz\nPYTHON_PYXB_SITE = https://pypi.python.org/packages/e3/09/4fdb190ea2b7cb43d6d3e745276ee69f4d6181be70fcbfda7df3c5f72f0e\nPYTHON_PYXB_LICENSE = Apache-2.0\nPYTHON_PYXB_LICENSE_FILES = LICENSE\nPYTHON_PYXB_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-pyyaml/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYYAML\n\tbool \"python-pyyaml\"\n\tselect BR2_PACKAGE_LIBYAML\n\thelp\n\t  The PyYAML package contains binding to the libyaml API.\n\n\t  http://pyyaml.org/\n"
  },
  {
    "path": "package/python-pyyaml/python-pyyaml.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/PyYAML/json\nmd5  46e25294c7efec23d4072ed6a7777f46  PyYAML-5.4.1.tar.gz\nsha256  607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e  PyYAML-5.4.1.tar.gz\n# Locally computed sha256 checksums\nsha256  8d3928f9dc4490fd635707cb88eb26bd764102a7282954307d3e5167a577e8a4  LICENSE\n"
  },
  {
    "path": "package/python-pyyaml/python-pyyaml.mk",
    "content": "################################################################################\n#\n# python-pyyaml\n#\n################################################################################\n\n# Please keep in sync package/python3-pyyaml/python3-pyyaml.mk\nPYTHON_PYYAML_VERSION = 5.4.1\nPYTHON_PYYAML_SOURCE = PyYAML-$(PYTHON_PYYAML_VERSION).tar.gz\nPYTHON_PYYAML_SITE = https://files.pythonhosted.org/packages/a0/a4/d63f2d7597e1a4b55aa3b4d6c5b029991d3b824b5bd331af8d4ab1ed687d\nPYTHON_PYYAML_SETUP_TYPE = setuptools\nPYTHON_PYYAML_LICENSE = MIT\nPYTHON_PYYAML_LICENSE_FILES = LICENSE\nPYTHON_PYYAML_CPE_ID_VENDOR = pyyaml\nPYTHON_PYYAML_CPE_ID_PRODUCT = pyyaml\nPYTHON_PYYAML_DEPENDENCIES = libyaml\nHOST_PYTHON_PYYAML_DEPENDENCIES = host-libyaml\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-pyzmq/0001-use-buildroot-zmq-version-instead-of-detect.patch",
    "content": "detect.py: fix the ZMQ version check to the ZMQ version of the buildroot\n\nThe setup.py script tries to compile a test C program and runs it, to\nretrieve a version string for the installed ZMQ library, but if the cross\ncompiler links it together, the result cannot be run on the host, due to\ndifferent architectures and libraries.\n\nAnd if the host compiler would compile/link it, it would not link with\nthe library version inside buildroot but with the library from the\nhost, possibly returning a wrong version number.\n\nInstead of trying to run the compiled test program to get the version\ndynamically, return the version of the buildroot environment.\n\nWritten by Michael Rommel, modified for version 16.0.2 by Lionel\nFlandrin.\n\nModified for version 18.0.2 by Asaf Kahlon\n\nSigned-off-by: Lionel Flandrin <lionel@svkt.org>\nSigned-off-by: Asaf Kahlon <asafka7@gmail.com>\n---\n buildutils/detect.py | 14 ++++++++------\n 1 file changed, 8 insertions(+), 6 deletions(-)\n\ndiff --git a/buildutils/detect.py b/buildutils/detect.py\nindex d1380fe..4a91351 100644\n--- a/buildutils/detect.py\n+++ b/buildutils/detect.py\n@@ -120,13 +120,15 @@ def detect_zmq(basedir, compiler=None, **compiler_attrs):\n \n     cc = get_compiler(compiler=compiler, **compiler_attrs)\n     efile = test_compilation(cfile, compiler=cc, **compiler_attrs)\n-    patch_lib_paths(efile, cc.library_dirs)\n+    #patch_lib_paths(efile, cc.library_dirs)\n \n-    rc, so, se = get_output_error([efile])\n-    if rc:\n-        msg = \"Error running version detection script:\\n%s\\n%s\" % (so,se)\n-        logging.error(msg)\n-        raise IOError(msg)\n+    #rc, so, se = get_output_error([efile])\n+    # if rc:\n+    #     msg = \"Error running version detection script:\\n%s\\n%s\" % (so,se)\n+    #     logging.error(msg)\n+    #     raise IOError(msg)\n+\n+    so = \"vers: ##ZEROMQ_VERSION##\"\n \n     handlers = {'vers':  lambda val: tuple(int(v) for v in val.split('.'))}\n \n-- \n2.20.1\n\n"
  },
  {
    "path": "package/python-pyzmq/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_PYZMQ\n\tbool \"python-pyzmq\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # zeromq\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # zeromq\n\tselect BR2_PACKAGE_ZEROMQ\n\thelp\n\t  This package contains the python language binding for zeromq.\n\n\t  http://zeromq.org/bindings:python\n\ncomment \"python-pyzmq needs a toolchain w/ C++, threads\"\n\tdepends on BR2_PACKAGE_PYTHON\n\tdepends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS)\n"
  },
  {
    "path": "package/python-pyzmq/python-pyzmq.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyzmq/json\nmd5  200abc1a75bdcfff7adf61304f46f55e  pyzmq-19.0.2.tar.gz\nsha256  296540a065c8c21b26d63e3cea2d1d57902373b16e4256afe46422691903a438  pyzmq-19.0.2.tar.gz\n# Locally computed sha256 checksums\nsha256  aef3b80570351d44e29c22d080d4e9e106b34f3fdbc5cdf9636994474c72b1a2  COPYING.BSD\nsha256  44b23767df3c0fe27f88981f09bc7f50a1695cec4b24252fa5f55f03e76bcd6d  COPYING.LESSER\n"
  },
  {
    "path": "package/python-pyzmq/python-pyzmq.mk",
    "content": "################################################################################\n#\n# python-pyzmq\n#\n################################################################################\n\nPYTHON_PYZMQ_VERSION = 19.0.2\nPYTHON_PYZMQ_SOURCE = pyzmq-$(PYTHON_PYZMQ_VERSION).tar.gz\nPYTHON_PYZMQ_SITE = https://files.pythonhosted.org/packages/05/77/7483975d84fe1fd24cc67881ba7810e0e7b3ee6c2a0e002a5d6703cca49b\nPYTHON_PYZMQ_LICENSE = LGPL-3.0+, BSD-3-Clause, Apache-2.0\n# Apache license only online: http://www.apache.org/licenses/LICENSE-2.0\nPYTHON_PYZMQ_LICENSE_FILES = COPYING.LESSER COPYING.BSD\nPYTHON_PYZMQ_DEPENDENCIES = zeromq\nPYTHON_PYZMQ_SETUP_TYPE = distutils\nPYTHON_PYZMQ_BUILD_OPTS = --zmq=$(STAGING_DIR)/usr\n\n# Due to issues with cross-compiling, hardcode to the zeromq in BR\ndefine PYTHON_PYZMQ_PATCH_ZEROMQ_VERSION\n\t$(SED) 's/##ZEROMQ_VERSION##/$(ZEROMQ_VERSION)/' \\\n\t\t$(@D)/buildutils/detect.py\nendef\n\nPYTHON_PYZMQ_POST_PATCH_HOOKS += PYTHON_PYZMQ_PATCH_ZEROMQ_VERSION\n\nifeq ($(BR2_PACKAGE_ZEROMQ_DRAFTS),y)\nPYTHON_PYZMQ_BUILD_OPTS += --enable-drafts\nendif\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-raven/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_RAVEN\n\tbool \"python-raven\"\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_UNICODEDATA if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_UNICODEDATA if BR2_PACKAGE_PYTHON3\n\thelp\n\t  Raven is a client for Sentry (https://getsentry.com).\n\n\t  https://github.com/getsentry/raven-python\n"
  },
  {
    "path": "package/python-raven/python-raven.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/raven/json\nmd5\t3676f31dadfa61526444dd0245c78a38  raven-6.10.0.tar.gz\nsha256\t3fa6de6efa2493a7c827472e984ce9b020797d0da16f1db67197bcc23c8fae54  raven-6.10.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t5ce9459bc19ced99cc9eb135d4f559ed01e336354bdf16dd998be85aa688c233  LICENSE\n"
  },
  {
    "path": "package/python-raven/python-raven.mk",
    "content": "################################################################################\n#\n# python-raven\n#\n################################################################################\n\nPYTHON_RAVEN_VERSION = 6.10.0\nPYTHON_RAVEN_SOURCE = raven-$(PYTHON_RAVEN_VERSION).tar.gz\nPYTHON_RAVEN_SITE = https://files.pythonhosted.org/packages/79/57/b74a86d74f96b224a477316d418389af9738ba7a63c829477e7a86dd6f47\nPYTHON_RAVEN_SETUP_TYPE = setuptools\nPYTHON_RAVEN_LICENSE = BSD-3-Clause\nPYTHON_RAVEN_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-redis/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_REDIS\n\tbool \"python-redis\"\n\thelp\n\t  Python client for Redis key-value store.\n\n\t  https://github.com/andymccurdy/redis-py\n"
  },
  {
    "path": "package/python-redis/python-redis.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/redis/json\nmd5  7a00d4540374f34e152a33faa1fcee5f  redis-3.5.3.tar.gz\nsha256  0e7e0cfca8660dea8b7d5cd8c4f6c5e29e11f31158c0b0ae91a397f00e5a05a2  redis-3.5.3.tar.gz\n# Locally computed sha256 checksums\nsha256  790148d8c12f8a38b2707a74be2343316bad126995ff54801a181b8b231ba124  LICENSE\n"
  },
  {
    "path": "package/python-redis/python-redis.mk",
    "content": "################################################################################\n#\n# python-redis\n#\n################################################################################\n\nPYTHON_REDIS_VERSION = 3.5.3\nPYTHON_REDIS_SOURCE = redis-$(PYTHON_REDIS_VERSION).tar.gz\nPYTHON_REDIS_SITE = https://files.pythonhosted.org/packages/b3/17/1e567ff78c83854e16b98694411fe6e08c3426af866ad11397cddceb80d3\nPYTHON_REDIS_SETUP_TYPE = setuptools\nPYTHON_REDIS_LICENSE = MIT\nPYTHON_REDIS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-reentry/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_REENTRY\n\tbool \"python-reentry\"\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_CLICK # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_PATHLIB2 if BR2_PACKAGE_PYTHON # runtime\n\thelp\n\t  A plugin manager based on setuptools entry points mechanism.\n\n\t  https://pypi.org/project/reentry/\n"
  },
  {
    "path": "package/python-reentry/python-reentry.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/reentry/json\nmd5  398c1e5bbda657aa645c8d2d38afb63f  reentry-1.3.2.tar.gz\nsha256  c6667e59aeabbb4d122aadc2170102a270e6a811d16a5431c5c3b91fabd7cf02  reentry-1.3.2.tar.gz\n# Locally computed sha256 checksums\nsha256  4ae7f3216208a7e2327236e95bcd2397b2495f1c2298c708986c893bea608509  LICENSE\n"
  },
  {
    "path": "package/python-reentry/python-reentry.mk",
    "content": "################################################################################\n#\n# python-reentry\n#\n################################################################################\n\nPYTHON_REENTRY_VERSION = 1.3.2\nPYTHON_REENTRY_SOURCE = reentry-$(PYTHON_REENTRY_VERSION).tar.gz\nPYTHON_REENTRY_SITE = https://files.pythonhosted.org/packages/a0/88/eb0c107c19227a2292ed11711034a3d80c0dc1368d2b3ebeb3fe7b936a8e\nPYTHON_REENTRY_SETUP_TYPE = setuptools\nPYTHON_REENTRY_LICENSE = MIT\nPYTHON_REENTRY_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-regex/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_REGEX\n\tbool \"python-regex\"\n\thelp\n\t  Alternative regular expression module, to replace re.\n\n\t  https://bitbucket.org/mrabarnett/mrab-regex\n"
  },
  {
    "path": "package/python-regex/python-regex.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/regex/json\nmd5  cd206281327b4c087bb20bf93cee4ab9  regex-2021.4.4.tar.gz\nsha256  52ba3d3f9b942c49d7e4bc105bb28551c44065f139a65062ab7912bef10c9afb  regex-2021.4.4.tar.gz\n"
  },
  {
    "path": "package/python-regex/python-regex.mk",
    "content": "################################################################################\n#\n# python-regex\n#\n################################################################################\n\n# Please keep in sync with package/python3-regex/python3-regex.mk\nPYTHON_REGEX_VERSION = 2021.4.4\nPYTHON_REGEX_SOURCE = regex-$(PYTHON_REGEX_VERSION).tar.gz\nPYTHON_REGEX_SITE = https://files.pythonhosted.org/packages/38/3f/4c42a98c9ad7d08c16e7d23b2194a0e4f3b2914662da8bc88986e4e6de1f\nPYTHON_REGEX_SETUP_TYPE = setuptools\nPYTHON_REGEX_LICENSE = CNRI-Python\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-remi/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_REMI\n\tbool \"python-remi\"\n\tselect BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\thelp\n\t  Remi is a GUI library for Python applications which transpiles\n\t  an application's interface into HTML to be rendered in a web\n\t  browser. This removes platform-specific dependencies and lets\n\t  you easily develop cross-platform applications in Python!\n\n\t  https://github.com/dddomodossola/remi/tree/master\n"
  },
  {
    "path": "package/python-remi/python-remi.hash",
    "content": "# sha256 from https://pypi.org/pypi/remi/json\nsha256  c8691f007dc30b91013131b6aded3521c17ef8ec9fdd152a0ad481b8cb793f14  remi-2021.3.2.tar.gz\n"
  },
  {
    "path": "package/python-remi/python-remi.mk",
    "content": "################################################################################\n#\n# python-remi\n#\n################################################################################\n\nPYTHON_REMI_VERSION = 2021.3.2\nPYTHON_REMI_SOURCE = remi-$(PYTHON_REMI_VERSION).tar.gz\nPYTHON_REMI_SITE = https://files.pythonhosted.org/packages/c0/99/94bd825cf8baee369b959f76c802a51ccc69d4d62ec113e26db4835f710c\nPYTHON_REMI_LICENSE = Apache-2.0\nPYTHON_REMI_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-request-id/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_REQUEST_ID\n\tbool \"python-request-id\"\n\tselect BR2_PACKAGE_PYTHON_WEBOB # runtime\n\thelp\n\t  Attach a unique identifier to every WSGI request.\n\n\t  https://github.com/mmerickel/request_id\n"
  },
  {
    "path": "package/python-request-id/python-request-id.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/request-id/json\nmd5  abf0125561fb38198893ba4b46c5ce28  request-id-1.0.1.tar.gz\nsha256  4adf1dc880085571454667ee4dba36a12b720eea5dbbfbbbd840c5a24268b4f7  request-id-1.0.1.tar.gz\n# Locally computed sha256 checksums\nsha256  2d65d17b4df34f184557b8031df05e4c264d2fa6b82e560be074967eff3b326c  LICENSE.txt\n"
  },
  {
    "path": "package/python-request-id/python-request-id.mk",
    "content": "################################################################################\n#\n# python-request-id\n#\n################################################################################\n\nPYTHON_REQUEST_ID_VERSION = 1.0.1\nPYTHON_REQUEST_ID_SOURCE = request-id-$(PYTHON_REQUEST_ID_VERSION).tar.gz\nPYTHON_REQUEST_ID_SITE = https://files.pythonhosted.org/packages/9b/b3/30617b85b1766b6a804f2b8abc0ca7496f6349236f7eec28cb42687ca8e3\nPYTHON_REQUEST_ID_SETUP_TYPE = setuptools\nPYTHON_REQUEST_ID_LICENSE = MIT\nPYTHON_REQUEST_ID_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-requests/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_REQUESTS\n\tbool \"python-requests\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-idna\n\tselect BR2_PACKAGE_PYTHON_CERTIFI # runtime\n\tselect BR2_PACKAGE_PYTHON_CHARSET_NORMALIZER # runtime\n\tselect BR2_PACKAGE_PYTHON_IDNA # runtime\n\tselect BR2_PACKAGE_PYTHON_URLLIB3 # runtime\n\tselect BR2_PACKAGE_PYTHON3_SSL # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB # runtime\n\thelp\n\t  Requests is an Apache2 Licensed HTTP library, written in\n\t  Python, for human beings.\n\n\t  http://www.python-requests.org/\n"
  },
  {
    "path": "package/python-requests/python-requests.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/requests/json\nmd5  8c745949ad3e9ae83d9927fed213db8a  requests-2.26.0.tar.gz\nsha256  b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7  requests-2.26.0.tar.gz\n# Locally computed sha256 checksums\nsha256  09e8a9bcec8067104652c168685ab0931e7868f9c8284b66f5ae6edae5f1130b  LICENSE\n"
  },
  {
    "path": "package/python-requests/python-requests.mk",
    "content": "################################################################################\n#\n# python-requests\n#\n################################################################################\n\nPYTHON_REQUESTS_VERSION = 2.26.0\nPYTHON_REQUESTS_SOURCE = requests-$(PYTHON_REQUESTS_VERSION).tar.gz\nPYTHON_REQUESTS_SITE = https://files.pythonhosted.org/packages/e7/01/3569e0b535fb2e4a6c384bdbed00c55b9d78b5084e0fb7f4d0bf523d7670\nPYTHON_REQUESTS_SETUP_TYPE = setuptools\nPYTHON_REQUESTS_LICENSE = Apache-2.0\nPYTHON_REQUESTS_LICENSE_FILES = LICENSE\nPYTHON_REQUESTS_CPE_ID_VENDOR = python\nPYTHON_REQUESTS_CPE_ID_PRODUCT = requests\nHOST_PYTHON_REQUESTS_NEEDS_HOST_PYTHON = python3\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-requests-oauthlib/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_REQUESTS_OAUTHLIB\n\tbool \"python-requests-oauthlib\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-requests -> python-idna\n\tselect BR2_PACKAGE_PYTHON_OAUTHLIB # runtime\n\tselect BR2_PACKAGE_PYTHON_REQUESTS # runtime\n\thelp\n\t  OAuthlib authentication support for Requests.\n\n\t  https://github.com/requests/requests-oauthlib\n"
  },
  {
    "path": "package/python-requests-oauthlib/python-requests-oauthlib.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/requests-oauthlib/json\nmd5  1ebcd55f1b1b9281940b4bc33010e2ba  requests-oauthlib-1.3.0.tar.gz\nsha256  b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a  requests-oauthlib-1.3.0.tar.gz\n# Locally computed sha256 checksums\nsha256  ae01846afad8a8291fe6a08966f3015af9a8ff675d84b981f9793c122f7876e8  LICENSE\n"
  },
  {
    "path": "package/python-requests-oauthlib/python-requests-oauthlib.mk",
    "content": "################################################################################\n#\n# python-requests-oauthlib\n#\n################################################################################\n\nPYTHON_REQUESTS_OAUTHLIB_VERSION = 1.3.0\nPYTHON_REQUESTS_OAUTHLIB_SOURCE = requests-oauthlib-$(PYTHON_REQUESTS_OAUTHLIB_VERSION).tar.gz\nPYTHON_REQUESTS_OAUTHLIB_SITE = https://files.pythonhosted.org/packages/23/eb/68fc8fa86e0f5789832f275c8289257d8dc44dbe93fce7ff819112b9df8f\nPYTHON_REQUESTS_OAUTHLIB_SETUP_TYPE = setuptools\nPYTHON_REQUESTS_OAUTHLIB_LICENSE = ISC\nPYTHON_REQUESTS_OAUTHLIB_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-requests-toolbelt/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_REQUESTS_TOOLBELT\n\tbool \"python-requests-toolbelt\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-requests -> python-idna\n\tselect BR2_PACKAGE_PYTHON_REQUESTS # runtime\n\thelp\n\t  A utility belt for advanced users of python-requests.\n\n\t  https://toolbelt.readthedocs.org\n"
  },
  {
    "path": "package/python-requests-toolbelt/python-requests-toolbelt.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/requests-toolbelt/json\nmd5\tb1509735c4b4cf95df2619facbc3672e  requests-toolbelt-0.9.1.tar.gz\nsha256\t968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0  requests-toolbelt-0.9.1.tar.gz\n# Locally computed sha256 checksums\nsha256\t3a1a3cffa7abc000cbd726a664f56c33c532a55480f9e056dfe941cf93b7c37f  LICENSE\n"
  },
  {
    "path": "package/python-requests-toolbelt/python-requests-toolbelt.mk",
    "content": "################################################################################\n#\n# python-requests-toolbelt\n#\n################################################################################\n\nPYTHON_REQUESTS_TOOLBELT_VERSION = 0.9.1\nPYTHON_REQUESTS_TOOLBELT_SOURCE = requests-toolbelt-$(PYTHON_REQUESTS_TOOLBELT_VERSION).tar.gz\nPYTHON_REQUESTS_TOOLBELT_SITE = https://files.pythonhosted.org/packages/28/30/7bf7e5071081f761766d46820e52f4b16c8a08fef02d2eb4682ca7534310\nPYTHON_REQUESTS_TOOLBELT_SETUP_TYPE = setuptools\nPYTHON_REQUESTS_TOOLBELT_LICENSE = Apache-2.0\nPYTHON_REQUESTS_TOOLBELT_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-rpi-gpio/0001-fix-build-with-gcc-10.x.patch",
    "content": "Description: This patch fixes the \"multiple definition of\" errors with gcc10\n\nSigned-off-by: Michael Fischer <mf@go-sys.de>\n\ndiff -purN python-rpi-gpio.org/source/common.c python-rpi-gpio/source/common.c\n--- python-rpi-gpio.org/source/common.c\t2019-07-21 14:41:22.000000000 +0200\n+++ python-rpi-gpio/source/common.c\t2020-08-07 09:31:33.948575964 +0200\n@@ -28,6 +28,9 @@\n const int pin_to_gpio_rev1[41] = {-1, -1, -1, 0, -1, 1, -1, 4, 14, -1, 15, 17, 18, 21, -1, 22, 23, -1, 24, 10, -1, 9, 25, 11, 8, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };\n const int pin_to_gpio_rev2[41] = {-1, -1, -1, 2, -1, 3, -1, 4, 14, -1, 15, 17, 18, 27, -1, 22, 23, -1, 24, 10, -1, 9, 25, 11, 8, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };\n const int pin_to_gpio_rev3[41] = {-1, -1, -1, 2, -1, 3, -1, 4, 14, -1, 15, 17, 18, 27, -1, 22, 23, -1, 24, 10, -1, 9, 25, 11, 8, -1, 7, -1, -1, 5, -1, 6, 12, 13, -1, 19, 16, 26, 20, -1, 21 };\n+const int (*pin_to_gpio)[41];\n+int gpio_direction[54];\n+rpi_info rpiinfo;\n int setup_error = 0;\n int module_setup = 0;\n \ndiff -purN python-rpi-gpio.org/source/common.h python-rpi-gpio/source/common.h\n--- python-rpi-gpio.org/source/common.h\t2019-07-21 14:41:22.000000000 +0200\n+++ python-rpi-gpio/source/common.h\t2020-08-07 09:31:33.948575964 +0200\n@@ -30,14 +30,14 @@ SOFTWARE.\n #define I2C          42\n #define PWM          43\n \n-int gpio_mode;\n-const int pin_to_gpio_rev1[41];\n-const int pin_to_gpio_rev2[41];\n-const int pin_to_gpio_rev3[41];\n-const int (*pin_to_gpio)[41];\n-int gpio_direction[54];\n-rpi_info rpiinfo;\n-int setup_error;\n-int module_setup;\n+extern int gpio_mode;\n+extern const int pin_to_gpio_rev1[41];\n+extern const int pin_to_gpio_rev2[41];\n+extern const int pin_to_gpio_rev3[41];\n+extern const int (*pin_to_gpio)[41];\n+extern int gpio_direction[54];\n+extern rpi_info rpiinfo;\n+extern int setup_error;\n+extern int module_setup;\n int check_gpio_priv(void);\n int get_gpio_number(int channel, unsigned int *gpio);\ndiff -purN python-rpi-gpio.org/source/constants.c python-rpi-gpio/source/constants.c\n--- python-rpi-gpio.org/source/constants.c\t2019-07-21 14:41:22.000000000 +0200\n+++ python-rpi-gpio/source/constants.c\t2020-08-07 09:32:15.522196618 +0200\n@@ -21,6 +21,7 @@\n */\n \n #include \"Python.h\"\n+#define CONSTANTS_C\n #include \"constants.h\"\n #include \"common.h\"\n #include \"c_gpio.h\"\ndiff -purN python-rpi-gpio.org/source/constants.h python-rpi-gpio/source/constants.h\n--- python-rpi-gpio.org/source/constants.h\t2019-07-21 14:41:22.000000000 +0200\n+++ python-rpi-gpio/source/constants.h\t2020-08-07 09:32:15.522196618 +0200\n@@ -23,22 +23,28 @@ SOFTWARE.\n #define PY_PUD_CONST_OFFSET 20\n #define PY_EVENT_CONST_OFFSET 30\n \n-PyObject *high;\n-PyObject *low;\n-PyObject *input;\n-PyObject *output;\n-PyObject *pwm;\n-PyObject *serial;\n-PyObject *i2c;\n-PyObject *spi;\n-PyObject *unknown;\n-PyObject *board;\n-PyObject *bcm;\n-PyObject *pud_off;\n-PyObject *pud_up;\n-PyObject *pud_down;\n-PyObject *rising_edge;\n-PyObject *falling_edge;\n-PyObject *both_edge;\n+#ifdef CONSTANTS_C\n+#define MAYBE_EXTERN\n+#else\n+#define MAYBE_EXTERN extern\n+#endif\n+\n+MAYBE_EXTERN PyObject *high;\n+MAYBE_EXTERN PyObject *low;\n+MAYBE_EXTERN PyObject *input;\n+MAYBE_EXTERN PyObject *output;\n+MAYBE_EXTERN PyObject *pwm;\n+MAYBE_EXTERN PyObject *serial;\n+MAYBE_EXTERN PyObject *i2c;\n+MAYBE_EXTERN PyObject *spi;\n+MAYBE_EXTERN PyObject *unknown;\n+MAYBE_EXTERN PyObject *board;\n+MAYBE_EXTERN PyObject *bcm;\n+MAYBE_EXTERN PyObject *pud_off;\n+MAYBE_EXTERN PyObject *pud_up;\n+MAYBE_EXTERN PyObject *pud_down;\n+MAYBE_EXTERN PyObject *rising_edge;\n+MAYBE_EXTERN PyObject *falling_edge;\n+MAYBE_EXTERN PyObject *both_edge;\n \n void define_constants(PyObject *module);\ndiff -purN python-rpi-gpio.org/source/event_gpio.c python-rpi-gpio/source/event_gpio.c\n--- python-rpi-gpio.org/source/event_gpio.c\t2019-07-21 14:41:22.000000000 +0200\n+++ python-rpi-gpio/source/event_gpio.c\t2020-08-07 09:42:05.564483136 +0200\n@@ -57,7 +57,7 @@ struct callback\n };\n struct callback *callbacks = NULL;\n \n-pthread_t threads;\n+static pthread_t threads;\n int event_occurred[54] = { 0 };\n int thread_running = 0;\n int epfd_thread = -1;\ndiff -purN python-rpi-gpio.org/source/py_pwm.h python-rpi-gpio/source/py_pwm.h\n--- python-rpi-gpio.org/source/py_pwm.h\t2019-07-21 14:41:22.000000000 +0200\n+++ python-rpi-gpio/source/py_pwm.h\t2020-08-07 09:38:49.445646807 +0200\n@@ -20,5 +20,5 @@ OUT OF OR IN CONNECTION WITH THE SOFTWAR\n SOFTWARE.\n */\n \n-PyTypeObject PWMType;\n+extern PyTypeObject PWMType;\n PyTypeObject *PWM_init_PWMType(void);\ndiff -purN python-rpi-gpio.org/source/soft_pwm.c python-rpi-gpio/source/soft_pwm.c\n--- python-rpi-gpio.org/source/soft_pwm.c\t2019-07-21 14:41:22.000000000 +0200\n+++ python-rpi-gpio/source/soft_pwm.c\t2020-08-07 09:42:40.753160437 +0200\n@@ -25,7 +25,7 @@ SOFTWARE.\n #include <time.h>\n #include \"c_gpio.h\"\n #include \"soft_pwm.h\"\n-pthread_t threads;\n+static pthread_t threads;\n \n struct pwm\n {\ndiff -purN python-rpi-gpio.org/source/soft_pwm.h python-rpi-gpio/source/soft_pwm.h\n--- python-rpi-gpio.org/source/soft_pwm.h\t2019-07-21 14:41:22.000000000 +0200\n+++ python-rpi-gpio/source/soft_pwm.h\t2020-08-07 09:39:25.916811352 +0200\n@@ -26,4 +26,4 @@ void pwm_set_duty_cycle(unsigned int gpi\n void pwm_set_frequency(unsigned int gpio, float freq);\n void pwm_start(unsigned int gpio);\n void pwm_stop(unsigned int gpio);\n-int pwm_exists(unsigned int gpio);\n+extern int pwm_exists(unsigned int gpio);\n"
  },
  {
    "path": "package/python-rpi-gpio/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_RPI_GPIO\n\tbool \"python-rpi-gpio\"\n\tdepends on BR2_arm\n\thelp\n\t  A Python module to control the GPIO on a Raspberry Pi.\n\n\t  http://sourceforge.net/p/raspberry-gpio-python\n"
  },
  {
    "path": "package/python-rpi-gpio/python-rpi-gpio.hash",
    "content": "# md5 from https://pypi.python.org/pypi/rpi_gpio/json\n# sha256 from https://pypi.python.org/pypi/rpi_gpio/json\nmd5 777617f9dea9a1680f9af43db0cf150e RPi.GPIO-0.7.0.tar.gz\nsha256 7424bc6c205466764f30f666c18187a0824077daf20b295c42f08aea2cb87d3f RPi.GPIO-0.7.0.tar.gz\n# Locally computed\nsha256  a668b3edecb3e69e81ec25987257008208ffcba9d6c43682033b8060c5f2f994  LICENCE.txt\n"
  },
  {
    "path": "package/python-rpi-gpio/python-rpi-gpio.mk",
    "content": "################################################################################\n#\n# python-rpi-gpio\n#\n################################################################################\n\nPYTHON_RPI_GPIO_VERSION = 0.7.0\nPYTHON_RPI_GPIO_SOURCE = RPi.GPIO-$(PYTHON_RPI_GPIO_VERSION).tar.gz\nPYTHON_RPI_GPIO_SITE = https://sourceforge.net/projects/raspberry-gpio-python/files\nPYTHON_RPI_GPIO_LICENSE = MIT\nPYTHON_RPI_GPIO_LICENSE_FILES = LICENCE.txt\nPYTHON_RPI_GPIO_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-rpi-ws281x/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_RPI_WS281X\n\tbool \"python-rpi-ws281x\"\n\thelp\n\t  Userspace Raspberry Pi PWM/PCM/SPI library for SK6812 and\n\t  WS281X LEDs.\n\n\t  https://github.com/rpi-ws281x/rpi-ws281x-python/\n"
  },
  {
    "path": "package/python-rpi-ws281x/python-rpi-ws281x.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/rpi-ws281x/json\nmd5  016e1f03f9168ef03d4baf074aa60f03  rpi_ws281x-4.3.4.tar.gz\nsha256  072eff1787e579d1710381b27c467709e3aab28ac579c7a47d7cc87398496f28  rpi_ws281x-4.3.4.tar.gz\n# Locally computed sha256 checksums\nsha256  7bbf6337c1eee7169579e6acd398f31ea274dfa3a1689ab7e654ca3585d5a8a9  LICENSE\nsha256  7bbf6337c1eee7169579e6acd398f31ea274dfa3a1689ab7e654ca3585d5a8a9  lib/LICENSE\n"
  },
  {
    "path": "package/python-rpi-ws281x/python-rpi-ws281x.mk",
    "content": "################################################################################\n#\n# python-rpi-ws281x\n#\n################################################################################\n\nPYTHON_RPI_WS281X_VERSION = 4.3.4\nPYTHON_RPI_WS281X_SOURCE = rpi_ws281x-$(PYTHON_RPI_WS281X_VERSION).tar.gz\nPYTHON_RPI_WS281X_SITE = https://files.pythonhosted.org/packages/e2/d4/75fcc4f3412b9b16e39e6cd6156f2e171fe7b2e79057be17d1acf38fded4\nPYTHON_RPI_WS281X_SETUP_TYPE = setuptools\nPYTHON_RPI_WS281X_LICENSE = BSD-2-Clause\nPYTHON_RPI_WS281X_LICENSE_FILES = LICENSE lib/LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-rq/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_RQ\n\tbool \"python-rq\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\thelp\n\t  Simple job queues for Python.\n\n\t  https://python-rq.org/\n"
  },
  {
    "path": "package/python-rq/python-rq.hash",
    "content": "sha256\t22de332ed7e061634eb893dc8cc9ca96c8641480f46c403cabef8d43a2eca867  rq-1.0.tar.gz\n\n"
  },
  {
    "path": "package/python-rq/python-rq.mk",
    "content": "################################################################################\n#\n# python-rq\n#\n################################################################################\n\nPYTHON_RQ_VERSION = 1.0\nPYTHON_RQ_SOURCE = rq-$(PYTHON_RQ_VERSION).tar.gz\nPYTHON_RQ_SITE = https://files.pythonhosted.org/packages/9d/f5/6a302ee297d8031ff955f26c0f38b043972fa5f45708f6865598bdac249f\nPYTHON_RQ_SETUP_TYPE = setuptools\nPYTHON_RQ_LICENSE = Apache-2.0\nPYTHON_RQ_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-rsa/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_RSA\n\tbool \"python-rsa\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_PYASN1 # runtime\n\thelp\n\t  Python-RSA is a pure-Python RSA implementation. It supports\n\t  encryption and decryption, signing and verifying signatures,\n\t  and key generation according to PKCS\\#1 version 1.5. It can\n\t  be used as a Python library as well as on the command line.\n\n\t  https://stuvel.eu/rsa\n"
  },
  {
    "path": "package/python-rsa/python-rsa.hash",
    "content": "# From https://pypi.org/project/rsa/\nsha256  9d689e6ca1b3038bc82bf8d23e944b6b6037bc02301a574935b2dd946e0353b9  rsa-4.7.2.tar.gz\n\n# Locally computed\nsha256\t073f28b7d389c8fe74f607e17c27f81eaa5ace69edc43a884f23f41b41c5c726  LICENSE\n"
  },
  {
    "path": "package/python-rsa/python-rsa.mk",
    "content": "################################################################################\n#\n# python-rsa\n#\n################################################################################\n\nPYTHON_RSA_VERSION = 4.7.2\nPYTHON_RSA_SOURCE = rsa-$(PYTHON_RSA_VERSION).tar.gz\nPYTHON_RSA_SITE = https://files.pythonhosted.org/packages/db/b5/475c45a58650b0580421746504b680cd2db4e81bc941e94ca53785250269\nPYTHON_RSA_SETUP_TYPE = setuptools\nPYTHON_RSA_LICENSE = Apache-2.0\nPYTHON_RSA_LICENSE_FILES = LICENSE\nPYTHON_RSA_CPE_ID_VENDOR = python-rsa_project\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-rtslib-fb/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_RTSLIB_FB\n\tbool \"python-rtslib-fb\"\n\tselect BR2_PACKAGE_PYTHON_SIX\n\thelp\n\t  rtslib-fb is an object-based Python library for configuring\n\t  the LIO generic SCSI target, present in 3.x Linux kernel\n\t  versions.\n\n\t  https://github.com/open-iscsi/rtslib-fb\n"
  },
  {
    "path": "package/python-rtslib-fb/python-rtslib-fb.hash",
    "content": "# locally computed\nsha256  d5d81a78046b4c228d29ba88d9950e0f63858e5fcf601e3d0f8bf107fbaadc03  python-rtslib-fb-2.1.fb57.tar.gz\nsha256  5df2a0d87d6c562f0ea11c688ac52532aa28d744cabc7994ff0537f64b3b3320  COPYING\n"
  },
  {
    "path": "package/python-rtslib-fb/python-rtslib-fb.mk",
    "content": "################################################################################\n#\n# python-rtslib-fb\n#\n################################################################################\n\n# When upgrading the version, be sure to also upgrade\n# python-configshell-fb and targetcli-fb at the same time.\nPYTHON_RTSLIB_FB_VERSION = 2.1.fb57\n# Do not switch site to PyPI: it does not contain the latest version.\nPYTHON_RTSLIB_FB_SITE = $(call github,open-iscsi,rtslib-fb,v$(PYTHON_RTSLIB_FB_VERSION))\nPYTHON_RTSLIB_FB_LICENSE = Apache-2.0\nPYTHON_RTSLIB_FB_LICENSE_FILES = COPYING\nPYTHON_RTSLIB_FB_SETUP_TYPE = setuptools\nPYTHON_RTSLIB_FB_DEPENDENCIES = python-six\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-s3transfer/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_S3TRANSFER\n\tbool \"python-s3transfer\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_BOTOCORE # runtime\n\thelp\n\t  An Amazon S3 Transfer Manager.\n\n\t  https://github.com/boto/s3transfer\n"
  },
  {
    "path": "package/python-s3transfer/python-s3transfer.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/s3transfer/json\nmd5  9416d1c7d33506501a8627bb1f7baf66  s3transfer-0.5.0.tar.gz\nsha256  50ed823e1dc5868ad40c8dc92072f757aa0e653a192845c94a3b676f4a62da4c  s3transfer-0.5.0.tar.gz\n# Locally computed sha256 checksums\nsha256  8c6db340475136df3c1201d458fa5755698eace76e510471ecc9d857d6083dac  LICENSE.txt\n"
  },
  {
    "path": "package/python-s3transfer/python-s3transfer.mk",
    "content": "################################################################################\n#\n# python-s3transfer\n#\n################################################################################\n\nPYTHON_S3TRANSFER_VERSION = 0.5.0\nPYTHON_S3TRANSFER_SOURCE = s3transfer-$(PYTHON_S3TRANSFER_VERSION).tar.gz\nPYTHON_S3TRANSFER_SITE = https://files.pythonhosted.org/packages/88/ef/4d1b3f52ae20a7e72151fde5c9f254cd83f8a49047351f34006e517e1655\nPYTHON_S3TRANSFER_SETUP_TYPE = setuptools\nPYTHON_S3TRANSFER_LICENSE = Apache-2.0\nPYTHON_S3TRANSFER_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-scandir/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SCANDIR\n\tbool \"python-scandir\"\n\thelp\n\t  scandir, a better directory iterator and faster os.walk()\n\n\t  https://pypi.python.org/pypi/scandir\n"
  },
  {
    "path": "package/python-scandir/python-scandir.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/scandir/json\nmd5\tf8378f4d9f95a6a78e97ab01aa900c1d  scandir-1.10.0.tar.gz\nsha256\t4d4631f6062e658e9007ab3149a9b914f3548cb38bfb021c64f39a025ce578ae  scandir-1.10.0.tar.gz\n# Locally computed sha256 checksums\nsha256\ta5e2fbdc239744419d29407cdbc92793c4d9c1d956c174f7cb7f96fa6d058c86  LICENSE.txt\n"
  },
  {
    "path": "package/python-scandir/python-scandir.mk",
    "content": "################################################################################\n#\n# python-scandir\n#\n################################################################################\n\nPYTHON_SCANDIR_VERSION = 1.10.0\nPYTHON_SCANDIR_SOURCE = scandir-$(PYTHON_SCANDIR_VERSION).tar.gz\nPYTHON_SCANDIR_SITE = https://files.pythonhosted.org/packages/df/f5/9c052db7bd54d0cbf1bc0bb6554362bba1012d03e5888950a4f5c5dadc4e\nPYTHON_SCANDIR_LICENSE = BSD-3-Clause\nPYTHON_SCANDIR_LICENSE_FILES = LICENSE.txt\nPYTHON_SCANDIR_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-scapy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SCAPY\n\tbool \"python-scapy\"\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3\n\thelp\n\t  Scapy: interactive packet manipulation tool.\n\n\t  http://www.secdev.org/projects/scapy\n"
  },
  {
    "path": "package/python-scapy/python-scapy.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/scapy/json\nmd5  54072af118e9291b6c7898b4ea87cdaf  scapy-2.4.5.tar.gz\nsha256  bc707e3604784496b6665a9e5b2a69c36cc9fb032af4864b29051531b24c8593  scapy-2.4.5.tar.gz\n# Locally computed sha256 checksums\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/python-scapy/python-scapy.mk",
    "content": "################################################################################\n#\n# python-scapy\n#\n################################################################################\n\nPYTHON_SCAPY_VERSION = 2.4.5\nPYTHON_SCAPY_SOURCE = scapy-$(PYTHON_SCAPY_VERSION).tar.gz\nPYTHON_SCAPY_SITE = https://files.pythonhosted.org/packages/85/47/c919432ca258f354bb2c1e645623f891603f185bfc7563d4a21f6432e7ed\nPYTHON_SCAPY_SETUP_TYPE = setuptools\nPYTHON_SCAPY_LICENSE = GPL-2.0\nPYTHON_SCAPY_LICENSE_FILES = LICENSE\nPYTHON_SCAPY_CPE_ID_VENDOR = scapy\nPYTHON_SCAPY_CPE_ID_PRODUCT = scapy\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-schedule/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SCHEDULE\n\tbool \"python-schedule\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Job scheduling for humans.\n\n\t  https://github.com/dbader/schedule\n"
  },
  {
    "path": "package/python-schedule/python-schedule.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/schedule/json\nmd5  9bf7544e37824e450457187633a17b17  schedule-1.1.0.tar.gz\nsha256  e6ca13585e62c810e13a08682e0a6a8ad245372e376ba2b8679294f377dfc8e4  schedule-1.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256  30a8352c318ce1b645acde0299697342d4380ed2637d7ca18a8ad25661e3b41b  LICENSE.txt\n"
  },
  {
    "path": "package/python-schedule/python-schedule.mk",
    "content": "################################################################################\n#\n# python-schedule\n#\n################################################################################\n\nPYTHON_SCHEDULE_VERSION = 1.1.0\nPYTHON_SCHEDULE_SOURCE = schedule-$(PYTHON_SCHEDULE_VERSION).tar.gz\nPYTHON_SCHEDULE_SITE = https://files.pythonhosted.org/packages/a8/b5/a291a4c0faa491fd5baefa6d89011ece581cff47b23c0a39b42a63383358\nPYTHON_SCHEDULE_SETUP_TYPE = setuptools\nPYTHON_SCHEDULE_LICENSE = MIT\nPYTHON_SCHEDULE_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-sdnotify/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SDNOTIFY\n\tbool \"python-sdnotify\"\n\thelp\n\t  A pure Python implementation of systemd's service notification\n\t  protocol (sd_notify).\n\n\t  https://github.com/bb4242/sdnotify\n"
  },
  {
    "path": "package/python-sdnotify/python-sdnotify.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/sdnotify/json\nmd5\t749ddca1c70be1697fecc443fb1fdb16  sdnotify-0.3.2.tar.gz\nsha256\t73977fc746b36cc41184dd43c3fe81323e7b8b06c2bb0826c4f59a20c56bb9f1  sdnotify-0.3.2.tar.gz\n# Locally computed sha256 checksums\nsha256\t038351c6f544a386576da41d5fe1320437ed211507565dd9c334c8290055b88e  LICENSE.txt\n"
  },
  {
    "path": "package/python-sdnotify/python-sdnotify.mk",
    "content": "################################################################################\n#\n# python-sdnotify\n#\n################################################################################\n\nPYTHON_SDNOTIFY_VERSION = 0.3.2\nPYTHON_SDNOTIFY_SOURCE = sdnotify-$(PYTHON_SDNOTIFY_VERSION).tar.gz\nPYTHON_SDNOTIFY_SITE = https://files.pythonhosted.org/packages/ce/d8/9fdc36b2a912bf78106de4b3f0de3891ff8f369e7a6f80be842b8b0b6bd5\nPYTHON_SDNOTIFY_SETUP_TYPE = distutils\nPYTHON_SDNOTIFY_LICENSE = MIT\nPYTHON_SDNOTIFY_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-secretstorage/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SECRETSTORAGE\n\tbool \"python-secretstorage\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # python-cryptography\n\tselect BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime\n\thelp\n\t  Python bindings to FreeDesktop.org Secret Service API.\n\n\t  https://github.com/mitya57/secretstorage\n"
  },
  {
    "path": "package/python-secretstorage/python-secretstorage.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/secretstorage/json\nmd5  c2a8c0e08e5da198fc38c379b98c28f1  SecretStorage-3.1.2.tar.gz\nsha256  15da8a989b65498e29be338b3b279965f1b8f09b9668bd8010da183024c8bff6  SecretStorage-3.1.2.tar.gz\n# Locally computed sha256 checksums\nsha256  70f6bfca77633c35efa218328eda5486d7054c2914d61820980e378797520a25  LICENSE\n"
  },
  {
    "path": "package/python-secretstorage/python-secretstorage.mk",
    "content": "################################################################################\n#\n# python-secretstorage\n#\n################################################################################\n\nPYTHON_SECRETSTORAGE_VERSION = 3.1.2\nPYTHON_SECRETSTORAGE_SOURCE = SecretStorage-$(PYTHON_SECRETSTORAGE_VERSION).tar.gz\nPYTHON_SECRETSTORAGE_SITE = https://files.pythonhosted.org/packages/fd/9f/36197c75d9a09b1ab63f56cb985af6cd858ca3fc41fd9cd890ce69bae5b9\nPYTHON_SECRETSTORAGE_SETUP_TYPE = setuptools\nPYTHON_SECRETSTORAGE_LICENSE = BSD-3-Clause\nPYTHON_SECRETSTORAGE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-see/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SEE\n\tbool \"python-see\"\n\thelp\n\t  dir for humans.\n\n\t  https://ljcooke.github.io/see/\n"
  },
  {
    "path": "package/python-see/python-see.hash",
    "content": "# md5 from https://pypi.python.org/pypi/see/json, sha256 locally computed\nmd5\tcb3bf4d314f73a8f7a2fd3d2d99aab54  see-1.4.1.tar.gz\nsha256\t14f8f8a88a909a7d7dea81f0016e3fdfabd3b5d335992e102a382e1a71672bd1  see-1.4.1.tar.gz\nsha256  dccbd040a7deacee7f05e5e46a8eba6e786ac319f0cb94c36f92d789585911a6  LICENSE\n"
  },
  {
    "path": "package/python-see/python-see.mk",
    "content": "################################################################################\n#\n# python-see\n#\n################################################################################\n\nPYTHON_SEE_VERSION = 1.4.1\nPYTHON_SEE_SOURCE = see-$(PYTHON_SEE_VERSION).tar.gz\nPYTHON_SEE_SITE = https://pypi.python.org/packages/ff/fc/fcabb6a9bfe7c56798285839780cae67342256b823b97e94d862b0ba21d6\nPYTHON_SEE_SETUP_TYPE = setuptools\nPYTHON_SEE_LICENSE = BSD-3-Clause\nPYTHON_SEE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-semantic-version/python-semantic-version.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/semantic-version/json\nmd5  76d7364def7ee487b6153d40b13de904  semantic_version-2.8.5.tar.gz\nsha256  d2cb2de0558762934679b9a104e82eca7af448c9f4974d1f3eeccff651df8a54  semantic_version-2.8.5.tar.gz\n# Locally computed sha256 checksums\nsha256  a85e7ef2fbc670d26781ed6844cd31a7e8ada65d21328f75a0b02402faae37ea  LICENSE\n"
  },
  {
    "path": "package/python-semantic-version/python-semantic-version.mk",
    "content": "################################################################################\n#\n# python-semantic-version\n#\n################################################################################\n\nPYTHON_SEMANTIC_VERSION_VERSION = 2.8.5\nPYTHON_SEMANTIC_VERSION_SOURCE = semantic_version-$(PYTHON_SEMANTIC_VERSION_VERSION).tar.gz\nPYTHON_SEMANTIC_VERSION_SITE = https://files.pythonhosted.org/packages/d4/52/3be868c7ed1f408cb822bc92ce17ffe4e97d11c42caafce0589f05844dd0\nPYTHON_SEMANTIC_VERSION_SETUP_TYPE = setuptools\nPYTHON_SEMANTIC_VERSION_LICENSE = BSD-2-Clause\nPYTHON_SEMANTIC_VERSION_LICENSE_FILES = LICENSE\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-semver/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SEMVER\n\tbool \"python-semver\"\n\thelp\n\t  Python helper for Semantic Versioning (http://semver.org/).\n\n\t  https://github.com/python-semver/python-semver\n"
  },
  {
    "path": "package/python-semver/python-semver.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/semver/json\nmd5  e98b5fb283ea84daa5195087de83ebf1  semver-2.13.0.tar.gz\nsha256  fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f  semver-2.13.0.tar.gz\n# Locally computed\nsha256  cda490c32e61d3884dc17791fc8078f2a3e564fba98dd18b4dc64eb2720b2b6f  LICENSE.txt\n"
  },
  {
    "path": "package/python-semver/python-semver.mk",
    "content": "################################################################################\n#\n# python-semver\n#\n################################################################################\n\nPYTHON_SEMVER_VERSION = 2.13.0\nPYTHON_SEMVER_SOURCE = semver-$(PYTHON_SEMVER_VERSION).tar.gz\nPYTHON_SEMVER_SITE = https://files.pythonhosted.org/packages/31/a9/b61190916030ee9af83de342e101f192bbb436c59be20a4cb0cdb7256ece\nPYTHON_SEMVER_SETUP_TYPE = setuptools\nPYTHON_SEMVER_LICENSE = BSD-3-Clause\nPYTHON_SEMVER_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-sentry-sdk/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SENTRY_SDK\n\tbool \"python-sentry-sdk\"\n\tselect BR2_PACKAGE_PYTHON_CERTIFI # runtime\n\tselect BR2_PACKAGE_PYTHON_URLLIB3 # runtime\n\thelp\n\t  Python client for Sentry (https://sentry.io).\n\n\t  https://github.com/getsentry/sentry-python\n"
  },
  {
    "path": "package/python-sentry-sdk/python-sentry-sdk.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/sentry-sdk/json\nmd5  6dc8c7586d95f7679c7bf7f749336cf8  sentry-sdk-1.4.3.tar.gz\nsha256  b9844751e40710e84a457c5bc29b21c383ccb2b63d76eeaad72f7f1c808c8828  sentry-sdk-1.4.3.tar.gz\n# Locally computed sha256 checksums\nsha256  59404d4c854e579097d41bfccd5006afde9d6d70e646cf55074cdbfead5ecf1c  LICENSE\n"
  },
  {
    "path": "package/python-sentry-sdk/python-sentry-sdk.mk",
    "content": "################################################################################\n#\n# python-sentry-sdk\n#\n################################################################################\n\nPYTHON_SENTRY_SDK_VERSION = 1.4.3\nPYTHON_SENTRY_SDK_SOURCE = sentry-sdk-$(PYTHON_SENTRY_SDK_VERSION).tar.gz\nPYTHON_SENTRY_SDK_SITE = https://files.pythonhosted.org/packages/a7/30/1d967b2e0cac2fa388344b2968fa57e69d5382b922e57cda43af54b9063a\nPYTHON_SENTRY_SDK_SETUP_TYPE = setuptools\nPYTHON_SENTRY_SDK_LICENSE = BSD-2-Clause\nPYTHON_SENTRY_SDK_LICENSE_FILES = LICENSE\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\n# only needed/valid for python 3.x\ndefine PYTHON_SENTRY_SDK_RM_PY3_FILES\n\trm -f $(addprefix $(TARGET_DIR)/usr/lib/python*/site-packages/sentry_sdk/integrations/,\\\n\t\taiohttp.py asgi.py django/asgi.py httpx.py sanic.py tornado.py)\nendef\n\nPYTHON_SENTRY_SDK_POST_INSTALL_TARGET_HOOKS += PYTHON_SENTRY_SDK_RM_PY3_FILES\nendif\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-serial/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SERIAL\n\tbool \"python-serial\"\n\thelp\n\t  python-serial is a Python library to access serial ports.\n\n\t  https://github.com/pyserial/pyserial\n"
  },
  {
    "path": "package/python-serial/python-serial.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyserial/json\nmd5  1cf25a76da59b530dbfc2cf99392dc83  pyserial-3.5.tar.gz\nsha256  3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb  pyserial-3.5.tar.gz\n# Locally computed sha256 checksums\nsha256  f91cb9813de6a5b142b8f7f2dede630b5134160aedaeaf55f4d6a7e2593ca3f3  LICENSE.txt\n"
  },
  {
    "path": "package/python-serial/python-serial.mk",
    "content": "################################################################################\n#\n# python-serial\n#\n################################################################################\n\nPYTHON_SERIAL_VERSION = 3.5\nPYTHON_SERIAL_SOURCE = pyserial-$(PYTHON_SERIAL_VERSION).tar.gz\nPYTHON_SERIAL_SITE = https://files.pythonhosted.org/packages/1e/7d/ae3f0a63f41e4d2f6cb66a5b57197850f919f59e558159a4dd3a818f5082\nPYTHON_SERIAL_LICENSE = BSD-3-Clause\nPYTHON_SERIAL_LICENSE_FILES = LICENSE.txt\nPYTHON_SERIAL_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-serial-asyncio/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SERIAL_ASYNCIO\n\tbool \"python-serial-asyncio\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SERIAL\n\thelp\n\t  asyncio extension package for pyserial.\n\n\t  https://github.com/pyserial/pyserial-asyncio\n"
  },
  {
    "path": "package/python-serial-asyncio/python-serial-asyncio.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/pyserial-asyncio/json\nmd5  409f32a35a3b530e6b2224e2a5b367da  pyserial-asyncio-0.6.tar.gz\nsha256  b6032923e05e9d75ec17a5af9a98429c46d2839adfaf80604d52e0faacd7a32f  pyserial-asyncio-0.6.tar.gz\n# Locally computed sha256 checksums\nsha256  64f3e548f0300d43c5af90b667150a9c57a4307c0f75fe741f76d0419905224a  LICENSE.txt\n"
  },
  {
    "path": "package/python-serial-asyncio/python-serial-asyncio.mk",
    "content": "################################################################################\n#\n# python-serial-asyncio\n#\n################################################################################\n\nPYTHON_SERIAL_ASYNCIO_VERSION = 0.6\nPYTHON_SERIAL_ASYNCIO_SOURCE = pyserial-asyncio-$(PYTHON_SERIAL_ASYNCIO_VERSION).tar.gz\nPYTHON_SERIAL_ASYNCIO_SITE = https://files.pythonhosted.org/packages/4a/9a/8477699dcbc1882ea51dcff4d3c25aa3f2063ed8f7d7a849fd8f610506b6\nPYTHON_SERIAL_ASYNCIO_LICENSE = BSD-3-Clause\nPYTHON_SERIAL_ASYNCIO_LICENSE_FILES = LICENSE.txt\nPYTHON_SERIAL_ASYNCIO_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-service-identity/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SERVICE_IDENTITY\n\tbool \"python-service-identity\"\n\t# python-pyopenssl -> python-cryptography\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\t# python-pyopenssl -> python-cryptography\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_ATTRS # runtime\n\tselect BR2_PACKAGE_PYTHON_CHARACTERISTIC # runtime\n\tselect BR2_PACKAGE_PYTHON_PYASN1 # runtime\n\tselect BR2_PACKAGE_PYTHON_PYASN1_MODULES # runtime\n\tselect BR2_PACKAGE_PYTHON_PYOPENSSL # runtime\n\thelp\n\t  Service identity verification for pyOpenSSL.\n\n\t  https://pypi.python.org/pypi/service_identity\n"
  },
  {
    "path": "package/python-service-identity/python-service-identity.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/service_identity/json\nmd5\tc6b8bac93e7d899a1da313a19cc6570a  service_identity-18.1.0.tar.gz\nsha256\t0858a54aabc5b459d1aafa8a518ed2081a285087f349fe3e55197989232e2e2d  service_identity-18.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256\tc5075126e1272b176504e36af369781a95c5c1124239da8e4f61b0f9c15a56cf  LICENSE\n"
  },
  {
    "path": "package/python-service-identity/python-service-identity.mk",
    "content": "################################################################################\n#\n# python-service-identity\n#\n################################################################################\n\nPYTHON_SERVICE_IDENTITY_VERSION = 18.1.0\nPYTHON_SERVICE_IDENTITY_SOURCE = service_identity-$(PYTHON_SERVICE_IDENTITY_VERSION).tar.gz\nPYTHON_SERVICE_IDENTITY_SITE = https://files.pythonhosted.org/packages/9a/3d/9eb0563e066ea0540cf580695593ab079376e920016d4d1b3ff2fd8abf4b\nPYTHON_SERVICE_IDENTITY_LICENSE = MIT\nPYTHON_SERVICE_IDENTITY_LICENSE_FILES = LICENSE\nPYTHON_SERVICE_IDENTITY_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-setproctitle/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SETPROCTITLE\n\tbool \"python-setproctitle\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A Python module to customize the process title.\n\n\t  https://pypi.python.org/pypi/setproctitle\n"
  },
  {
    "path": "package/python-setproctitle/python-setproctitle.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/setproctitle/json\nmd5  9898587a1668f1c53f6699ca5d35256d  setproctitle-1.2.2.tar.gz\nsha256  7dfb472c8852403d34007e01d6e3c68c57eb66433fb8a5c77b13b89a160d97df  setproctitle-1.2.2.tar.gz\n# Locally computed\nsha256  85bd836337aa702e0a4e2a54676c6ae046ffb357dbf4a990189595a60fcd1648  COPYRIGHT\n"
  },
  {
    "path": "package/python-setproctitle/python-setproctitle.mk",
    "content": "################################################################################\n#\n# python-setproctitle\n#\n################################################################################\n\nPYTHON_SETPROCTITLE_VERSION = 1.2.2\nPYTHON_SETPROCTITLE_SOURCE = setproctitle-$(PYTHON_SETPROCTITLE_VERSION).tar.gz\nPYTHON_SETPROCTITLE_SITE = https://files.pythonhosted.org/packages/a1/7f/a1d4f4c7b66f0fc02f35dc5c85f45a8b4e4a7988357a29e61c14e725ef86\nPYTHON_SETPROCTITLE_LICENSE = BSD-3-Clause\nPYTHON_SETPROCTITLE_LICENSE_FILES = COPYRIGHT\nPYTHON_SETPROCTITLE_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-setupnovernormalize/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PYTHON_SETUPNOVERNORMALIZE\n\tbool \"host python-setupnovernormalize\"\n\thelp\n\t  Prevent version normalization when packaging Python projects with setuptools. For more details, see https://github.com/pypa/setuptools/issues/308.\n\n\t  https://github.com/ccrisan/setup-no-ver-normalize\n"
  },
  {
    "path": "package/python-setupnovernormalize/python-setupnovernormalize.hash",
    "content": "sha256\t440ddfb209c40d8ff55472251fda33e8cef3741596462d045d139cd5743b0988  setupnovernormalize-1.0.1.tar.gz\n"
  },
  {
    "path": "package/python-setupnovernormalize/python-setupnovernormalize.mk",
    "content": "################################################################################\n#\n# python-setupnovernormalize\n#\n################################################################################\n\nPYTHON_SETUPNOVERNORMALIZE_VERSION = 1.0.1\nPYTHON_SETUPNOVERNORMALIZE_SOURCE = setupnovernormalize-$(PYTHON_SETUPNOVERNORMALIZE_VERSION).tar.gz\nPYTHON_SETUPNOVERNORMALIZE_SITE = https://files.pythonhosted.org/packages/1d/52/fa80eef76aa8e1672f113a63326a4d12f5a1dc7a75798a2e08dc2dea3a8c\nPYTHON_SETUPNOVERNORMALIZE_SETUP_TYPE = setuptools\nPYTHON_SETUPNOVERNORMALIZE_LICENSE = UNLICENSE\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-setuptools/0001-add-executable.patch",
    "content": "From 9b3d307f8f6a1af88f3f810f5a6cf0835830e1e8 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Mon, 7 Dec 2015 01:14:33 +0100\nSubject: [PATCH 1/1] add executable\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nAdd a new --executable option to distribute so that we can\nforce the shebang line in installed python scripts.\n\n[Thomas: refresh for setuptools 5.8.]\n[Jörg: refresh for setuptools 18.7.1]\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n setuptools/command/install.py         | 2 ++\n setuptools/command/install_scripts.py | 9 +++++++++\n 2 files changed, 11 insertions(+)\n\ndiff --git a/setuptools/command/install.py b/setuptools/command/install.py\nindex d2bca2e..b60ef19 100644\n--- a/setuptools/command/install.py\n+++ b/setuptools/command/install.py\n@@ -16,6 +16,7 @@ class install(orig.install):\n     \"\"\"Use easy_install to install the package, w/dependencies\"\"\"\n \n     user_options = orig.install.user_options + [\n+        ('executable=', 'e', \"specify final destination interpreter path\"),\n         ('old-and-unmanageable', None, \"Try not to use this!\"),\n         ('single-version-externally-managed', None,\n          \"used by system package builders to create 'flat' eggs\"),\n@@ -31,6 +32,7 @@ class install(orig.install):\n \n     def initialize_options(self):\n         orig.install.initialize_options(self)\n+        self.executable = None\n         self.old_and_unmanageable = None\n         self.single_version_externally_managed = None\n \ndiff --git a/setuptools/command/install_scripts.py b/setuptools/command/install_scripts.py\nindex be66cb2..07afaf8 100755\n--- a/setuptools/command/install_scripts.py\n+++ b/setuptools/command/install_scripts.py\n@@ -11,6 +11,13 @@ class install_scripts(orig.install_scripts):\n     def initialize_options(self):\n         orig.install_scripts.initialize_options(self)\n         self.no_ep = False\n+        self.executable = None\n+\n+    def finalize_options(self):\n+        orig.install_scripts.finalize_options(self)\n+        self.set_undefined_options('install',\n+                ('executable','executable')\n+        )\n \n     def run(self):\n         import setuptools.command.easy_install as ei\n@@ -31,6 +38,8 @@ class install_scripts(orig.install_scripts):\n         )\n         bs_cmd = self.get_finalized_command('build_scripts')\n         exec_param = getattr(bs_cmd, 'executable', None)\n+        if self.executable is not None:\n+            exec_param = self.executable\n         bw_cmd = self.get_finalized_command(\"bdist_wininst\")\n         is_wininst = getattr(bw_cmd, '_is_running', False)\n         writer = ei.ScriptWriter\n-- \n2.6.3\n\n"
  },
  {
    "path": "package/python-setuptools/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SETUPTOOLS\n\tbool \"python-setuptools\"\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime\n\tselect BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  Download, build, install, upgrade, and uninstall Python\n\t  packages.\n\n\t  http://pypi.python.org/pypi/setuptools\n"
  },
  {
    "path": "package/python-setuptools/python-setuptools.hash",
    "content": "# From https://pypi.org/pypi/setuptools/json\nmd5  32b6cdce670ce462086d246bea181e9d  setuptools-44.0.0.zip\nsha256  e5baf7723e5bb8382fc146e33032b241efc63314211a3a120aaa55d62d2bb008  setuptools-44.0.0.zip\nsha256  c32a3ac395af6321efd28be73d06a00f0db6ab887d1c21d4fec46128d2056d5a  LICENSE\n"
  },
  {
    "path": "package/python-setuptools/python-setuptools.mk",
    "content": "################################################################################\n#\n# python-setuptools\n#\n################################################################################\n\n# Please keep in sync with\n# package/python3-setuptools/python3-setuptools.mk\nPYTHON_SETUPTOOLS_VERSION = 44.0.0\nPYTHON_SETUPTOOLS_SOURCE = setuptools-$(PYTHON_SETUPTOOLS_VERSION).zip\nPYTHON_SETUPTOOLS_SITE = https://files.pythonhosted.org/packages/b0/f3/44da7482ac6da3f36f68e253cb04de37365b3dba9036a3c70773b778b485\nPYTHON_SETUPTOOLS_LICENSE = MIT\nPYTHON_SETUPTOOLS_LICENSE_FILES = LICENSE\nPYTHON_SETUPTOOLS_CPE_ID_VENDOR = python\nPYTHON_SETUPTOOLS_CPE_ID_PRODUCT = setuptools\nPYTHON_SETUPTOOLS_SETUP_TYPE = setuptools\nHOST_PYTHON_SETUPTOOLS_NEEDS_HOST_PYTHON = python2\n\ndefine PYTHON_SETUPTOOLS_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(PYTHON_SETUPTOOLS_DL_DIR)/$(PYTHON_SETUPTOOLS_SOURCE)\n\tmv $(@D)/setuptools-$(PYTHON_SETUPTOOLS_VERSION)/* $(@D)\n\t$(RM) -r $(@D)/setuptools-$(PYTHON_SETUPTOOLS_VERSION)\nendef\n\ndefine HOST_PYTHON_SETUPTOOLS_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(HOST_PYTHON_SETUPTOOLS_DL_DIR)/$(PYTHON_SETUPTOOLS_SOURCE)\n\tmv $(@D)/setuptools-$(PYTHON_SETUPTOOLS_VERSION)/* $(@D)\n\t$(RM) -r $(@D)/setuptools-$(PYTHON_SETUPTOOLS_VERSION)\nendef\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-setuptools-rust/python-setuptools-rust.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/setuptools-rust/json\nmd5  33c3fd3bcde2877483ab782353bee54c  setuptools-rust-0.12.1.tar.gz\nsha256  647009e924f0ae439c7f3e0141a184a69ad247ecb9044c511dabde232d3d570e  setuptools-rust-0.12.1.tar.gz\n# Locally computed sha256 checksums\nsha256  b20668c1590582b3882854050ccfbdb7aee1f71a1ffe9eacc4c5aeb08a14161b  LICENSE\n"
  },
  {
    "path": "package/python-setuptools-rust/python-setuptools-rust.mk",
    "content": "################################################################################\n#\n# python-setuptools-rust\n#\n################################################################################\n\nPYTHON_SETUPTOOLS_RUST_VERSION = 0.12.1\nPYTHON_SETUPTOOLS_RUST_SOURCE = setuptools-rust-$(PYTHON_SETUPTOOLS_RUST_VERSION).tar.gz\nPYTHON_SETUPTOOLS_RUST_SITE = https://files.pythonhosted.org/packages/12/22/6ba3031e7cbd6eb002e13ffc7397e136df95813b6a2bd71ece52a8f89613\nPYTHON_SETUPTOOLS_RUST_SETUP_TYPE = setuptools\nPYTHON_SETUPTOOLS_RUST_LICENSE = MIT\nPYTHON_SETUPTOOLS_RUST_LICENSE_FILES = LICENSE\nHOST_PYTHON_SETUPTOOLS_RUST_DEPENDENCIES = host-rustc host-python-setuptools-scm host-python-toml host-python-semantic-version\nHOST_PYTHON_SETUPTOOLS_RUST_NEEDS_HOST_PYTHON = python3\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-setuptools-scm/python-setuptools-scm.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/setuptools-scm/json\nmd5  c11bf23d80224691a46ee5deb84c42db  setuptools_scm-5.0.1.tar.gz\nsha256  c85b6b46d0edd40d2301038cdea96bb6adc14d62ef943e75afb08b3e7bcf142a  setuptools_scm-5.0.1.tar.gz\n# sha256 locally computed\nsha256  89807acf2309bd285f033404ee78581602f3cd9b819a16ac2f0e5f60ff4a473e  LICENSE\n"
  },
  {
    "path": "package/python-setuptools-scm/python-setuptools-scm.mk",
    "content": "################################################################################\n#\n# python-setuptools-scm\n#\n################################################################################\n\nPYTHON_SETUPTOOLS_SCM_VERSION = 5.0.1\nPYTHON_SETUPTOOLS_SCM_SOURCE = setuptools_scm-$(PYTHON_SETUPTOOLS_SCM_VERSION).tar.gz\nPYTHON_SETUPTOOLS_SCM_SITE = https://files.pythonhosted.org/packages/af/df/f8aa8a78d4d29e0cffa4512e9bc223ed02f24893fe1837c6cee2749ebd67\nPYTHON_SETUPTOOLS_SCM_LICENSE = MIT\nPYTHON_SETUPTOOLS_SCM_LICENSE_FILES = LICENSE\nPYTHON_SETUPTOOLS_SCM_SETUP_TYPE = setuptools\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-setuptools-scm-git-archive/python-setuptools-scm-git-archive.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/setuptools-scm-git-archive/json\nmd5\t1c9351fa5cebd12e76488737a7c78f2e  setuptools_scm_git_archive-1.1.tar.gz\nsha256\t6026f61089b73fa1b5ee737e95314f41cb512609b393530385ed281d0b46c062  setuptools_scm_git_archive-1.1.tar.gz\n# Locally computed sha256 checksums\nsha256\t89807acf2309bd285f033404ee78581602f3cd9b819a16ac2f0e5f60ff4a473e  LICENSE\n"
  },
  {
    "path": "package/python-setuptools-scm-git-archive/python-setuptools-scm-git-archive.mk",
    "content": "################################################################################\n#\n# python-setuptools-scm-git-archive\n#\n################################################################################\n\nPYTHON_SETUPTOOLS_SCM_GIT_ARCHIVE_VERSION = 1.1\nPYTHON_SETUPTOOLS_SCM_GIT_ARCHIVE_SOURCE = setuptools_scm_git_archive-$(PYTHON_SETUPTOOLS_SCM_GIT_ARCHIVE_VERSION).tar.gz\nPYTHON_SETUPTOOLS_SCM_GIT_ARCHIVE_SITE = https://files.pythonhosted.org/packages/7e/2c/0c15b29a1b5940250bfdc4a4f53272e35cd7cf8a34159291b6b4ec9eb291\nPYTHON_SETUPTOOLS_SCM_GIT_ARCHIVE_SETUP_TYPE = setuptools\nPYTHON_SETUPTOOLS_SCM_GIT_ARCHIVE_LICENSE = MIT\nPYTHON_SETUPTOOLS_SCM_GIT_ARCHIVE_LICENSE_FILES = LICENSE\nHOST_PYTHON_SETUPTOOLS_SCM_GIT_ARCHIVE_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-sh/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SH\n\tbool \"python-sh\"\n\thelp\n\t  Python subprocess replacement that allows you to call any\n\t  program as if it were a function.\n\n\t  https://github.com/amoffat/sh\n"
  },
  {
    "path": "package/python-sh/python-sh.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/sh/json\nmd5  33becadcb5214afd00b9eec05fa98c06  sh-1.14.2.tar.gz\nsha256  9d7bd0334d494b2a4609fe521b2107438cdb21c0e469ffeeb191489883d6fe0d  sh-1.14.2.tar.gz\n# Locally computed\nsha256  d8491c6e236568d04f7c8c07f2f1b8f5d142706dab6ab88f6e0d2dd476b6c706  LICENSE.txt\n"
  },
  {
    "path": "package/python-sh/python-sh.mk",
    "content": "################################################################################\n#\n# python-sh\n#\n################################################################################\n\nPYTHON_SH_VERSION = 1.14.2\nPYTHON_SH_SOURCE = sh-$(PYTHON_SH_VERSION).tar.gz\nPYTHON_SH_SITE = https://files.pythonhosted.org/packages/80/39/ed280d183c322453e276a518605b2435f682342f2c3bcf63228404d36375\nPYTHON_SH_SETUP_TYPE = setuptools\nPYTHON_SH_LICENSE = MIT\nPYTHON_SH_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-shutilwhich/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SHUTILWHICH\n\tbool \"python-shutilwhich\"\n\thelp\n\t  shutil.which for those not using Python 3.3 yet.\n\n\t  https://pypi.python.org/pypi/shutilwhich/\n"
  },
  {
    "path": "package/python-shutilwhich/python-shutilwhich.hash",
    "content": "# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=915947c5cdae7afd748ac715ee547adb, sha256 locally computed.\nmd5\t915947c5cdae7afd748ac715ee547adb  shutilwhich-1.1.0.tar.gz\nsha256\tdb1f39c6461e42f630fa617bb8c79090f7711c9ca493e615e43d0610ecb64dc6  shutilwhich-1.1.0.tar.gz\n"
  },
  {
    "path": "package/python-shutilwhich/python-shutilwhich.mk",
    "content": "################################################################################\n#\n# python-shutilwhich\n#\n################################################################################\n\nPYTHON_SHUTILWHICH_VERSION = 1.1.0\nPYTHON_SHUTILWHICH_SOURCE = shutilwhich-$(PYTHON_SHUTILWHICH_VERSION).tar.gz\nPYTHON_SHUTILWHICH_SITE = https://pypi.python.org/packages/source/s/shutilwhich\nPYTHON_SHUTILWHICH_LICENSE = Python-2.0\nPYTHON_SHUTILWHICH_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-simpleaudio/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SIMPLEAUDIO\n\tbool \"python-simpleaudio\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib\n\tselect BR2_PACKAGE_ALSA_LIB\n\thelp\n\t  The simplaudio package provides cross-platform,\n\t  dependency-free audio playback capability for Python 3 on\n\t  OSX, Windows, and Linux.\n\n\t  https://github.com/hamiltron/py-simple-audio\n\ncomment \"python-simpleaudio needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/python-simpleaudio/python-simpleaudio.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/simpleaudio/json\nmd5  8bd62157c286824e289e1f258419b98c  simpleaudio-1.0.4.tar.gz\nsha256  691c88649243544db717e7edf6a9831df112104e1aefb5f6038a5d071e8cf41d  simpleaudio-1.0.4.tar.gz\n# Locally computed sha256 checksums\nsha256  b4340683e83f0f25ea40f992773ceec6c749c4d64ec2c09dfa49d7f5b029adbf  LICENSE.txt\n"
  },
  {
    "path": "package/python-simpleaudio/python-simpleaudio.mk",
    "content": "################################################################################\n#\n# python-simpleaudio\n#\n################################################################################\n\nPYTHON_SIMPLEAUDIO_VERSION = 1.0.4\nPYTHON_SIMPLEAUDIO_SOURCE = simpleaudio-$(PYTHON_SIMPLEAUDIO_VERSION).tar.gz\nPYTHON_SIMPLEAUDIO_SITE = https://files.pythonhosted.org/packages/94/1b/4dc29653733202b68c09d9c6ca085cf67ac54859ee860647ef21ac1ff3dc\nPYTHON_SIMPLEAUDIO_LICENSE = MIT\nPYTHON_SIMPLEAUDIO_LICENSE_FILES = LICENSE.txt\nPYTHON_SIMPLEAUDIO_SETUP_TYPE = setuptools\nPYTHON_SIMPLEAUDIO_DEPENDENCIES = alsa-lib\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-simplegeneric/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SIMPLEGENERIC\n\tbool \"python-simplegeneric\"\n\thelp\n\t  Simple generic functions (similar to Python's own len(),\n\t  pickle.dump(), etc.)\n\n\t  https://pypi.python.org/pypi/simplegeneric\n"
  },
  {
    "path": "package/python-simplegeneric/python-simplegeneric.hash",
    "content": "# md5 from https://pypi.python.org/pypi/simplegeneric, sha256 locally computed\nmd5 f9c1fab00fd981be588fc32759f474e3 simplegeneric-0.8.1.zip\nsha256 dc972e06094b9af5b855b3df4a646395e43d1c9d0d39ed345b7393560d0b9173 simplegeneric-0.8.1.zip\n"
  },
  {
    "path": "package/python-simplegeneric/python-simplegeneric.mk",
    "content": "################################################################################\n#\n# python-simplegeneric\n#\n################################################################################\n\nPYTHON_SIMPLEGENERIC_VERSION = 0.8.1\nPYTHON_SIMPLEGENERIC_SOURCE = simplegeneric-$(PYTHON_SIMPLEGENERIC_VERSION).zip\nPYTHON_SIMPLEGENERIC_SITE = https://pypi.python.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b\nPYTHON_SIMPLEGENERIC_LICENSE = ZPL-2.1\n\n# Force setup-type to be 'setuptools' in order to force the package to\n# be installed with --single-version-externally-managed. Otherwise we\n# end up with a .egg file, which is a zip archive, and as such forces\n# us to have 'zlib' as a runtime dependency\nPYTHON_SIMPLEGENERIC_SETUP_TYPE = setuptools\n\ndefine PYTHON_SIMPLEGENERIC_EXTRACT_CMDS\n\tunzip $(PYTHON_SIMPLEGENERIC_DL_DIR)/$(PYTHON_SIMPLEGENERIC_SOURCE) -d $(@D)\n\tmv $(@D)/simplegeneric-$(PYTHON_SIMPLEGENERIC_VERSION)/* $(@D)\n\trmdir $(@D)/simplegeneric-$(PYTHON_SIMPLEGENERIC_VERSION)\nendef\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-simplejson/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SIMPLEJSON\n\tbool \"python-simplejson\"\n\thelp\n\t  Simple, fast, extensible JSON encoder/decoder for Python.\n\n\t  https://pypi.python.org/pypi/simplejson/\n"
  },
  {
    "path": "package/python-simplejson/python-simplejson.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/simplejson/json\nmd5  1756427859454004e90e028d263cf23e  simplejson-3.17.5.tar.gz\nsha256  91cfb43fb91ff6d1e4258be04eee84b51a4ef40a28d899679b9ea2556322fb50  simplejson-3.17.5.tar.gz\n# Locally computed sha256 checksums\nsha256  fcaa1e313a99304322e2e0836ea4ee7d839ce9a480438f3922a853edfdde129f  LICENSE.txt\n"
  },
  {
    "path": "package/python-simplejson/python-simplejson.mk",
    "content": "################################################################################\n#\n# python-simplejson\n#\n################################################################################\n\nPYTHON_SIMPLEJSON_VERSION = 3.17.5\nPYTHON_SIMPLEJSON_SOURCE = simplejson-$(PYTHON_SIMPLEJSON_VERSION).tar.gz\nPYTHON_SIMPLEJSON_SITE = https://files.pythonhosted.org/packages/01/52/41c71718f941c9a5abebfaa24e3c14e3c0229327b7ebd21348989845ed8f\nPYTHON_SIMPLEJSON_LICENSE = Academic Free License (AFL), MIT\nPYTHON_SIMPLEJSON_LICENSE_FILES = LICENSE.txt\nPYTHON_SIMPLEJSON_CPE_ID_VENDOR = simplejson_project\nPYTHON_SIMPLEJSON_CPE_ID_PRODUCT = simplejson\nPYTHON_SIMPLEJSON_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-simplelogging/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SIMPLELOGGING\n\tbool \"python-simplelogging\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-colorlog\n\tselect BR2_PACKAGE_PYTHON_COLORLOG # runtime\n\thelp\n\t  Logging made simple, no excuse for any debug print call.\n\n\t  https://github.com/vpoulailleau/simplelogging\n"
  },
  {
    "path": "package/python-simplelogging/python-simplelogging.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/simplelogging/json\nmd5  97b5f2a5cd9cff1b60c727cd03b3ffe1  simplelogging-0.11.0.tar.gz\nsha256  23a128b47d3e88213adc51fdd102aae15a398cf459d782eb19534945d23f0bc5  simplelogging-0.11.0.tar.gz\n# Locally computed sha256 checksums\nsha256  bd2a0fe3b3bab7092ffa7f58d46bb05d98f12f107b3a6be947c098f7c2ad1d1a  LICENSE\n"
  },
  {
    "path": "package/python-simplelogging/python-simplelogging.mk",
    "content": "################################################################################\n#\n# python-simplelogging\n#\n################################################################################\n\nPYTHON_SIMPLELOGGING_VERSION = 0.11.0\nPYTHON_SIMPLELOGGING_SOURCE = simplelogging-$(PYTHON_SIMPLELOGGING_VERSION).tar.gz\nPYTHON_SIMPLELOGGING_SITE = https://files.pythonhosted.org/packages/73/d6/4c06aa7f2c3b9fc09429a1196fd357357cc555de5e16c09b2d12e9db1ebb\nPYTHON_SIMPLELOGGING_SETUP_TYPE = setuptools\nPYTHON_SIMPLELOGGING_LICENSE = BSD-3-Clause\nPYTHON_SIMPLELOGGING_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-simplesqlite/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SIMPLESQLITE\n\tbool \"python-simplesqlite\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-mbstrdecoder, python-pathvalidate\n\tselect BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime\n\tselect BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime\n\tselect BR2_PACKAGE_PYTHON_PATHVALIDATE # runtime\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON3_SQLITE # runtime\n\tselect BR2_PACKAGE_PYTHON_SQLITESCHEMA # runtime\n\tselect BR2_PACKAGE_PYTHON_TABLEDATA # runtime\n\tselect BR2_PACKAGE_PYTHON_TYPEPY # runtime\n\thelp\n\t  SimpleSQLite is a Python library to simplify SQLite database\n\t  operations: table creation, data insertion and get data as\n\t  other data formats.\n\n\t  https://github.com/thombashi/SimpleSQLite\n"
  },
  {
    "path": "package/python-simplesqlite/python-simplesqlite.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/simplesqlite/json\nmd5\tf1d4f2ec14e2c782a62e451587477598  SimpleSQLite-0.45.2.tar.gz\nsha256\t0b19c99c36b63173a715649f94a2fc3aee8deb9b70c683d584bca85e5930244b  SimpleSQLite-0.45.2.tar.gz\n# Locally computed sha256 checksums\nsha256\t98799b7c99b561c5ffa3ac86600e501f761afa8e72af8a2515026445fe134105  LICENSE\n"
  },
  {
    "path": "package/python-simplesqlite/python-simplesqlite.mk",
    "content": "################################################################################\n#\n# python-simplesqlite\n#\n################################################################################\n\nPYTHON_SIMPLESQLITE_VERSION = 0.45.2\nPYTHON_SIMPLESQLITE_SOURCE = SimpleSQLite-$(PYTHON_SIMPLESQLITE_VERSION).tar.gz\nPYTHON_SIMPLESQLITE_SITE = https://files.pythonhosted.org/packages/b3/d1/bc3668ed7d90ee70d556124b8b5b3329505d72b5290bb393626f1afe714d\nPYTHON_SIMPLESQLITE_SETUP_TYPE = setuptools\nPYTHON_SIMPLESQLITE_LICENSE = MIT\nPYTHON_SIMPLESQLITE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-singledispatch/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SINGLEDISPATCH\n\tbool \"python-singledispatch\"\n\tdepends on BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  This library brings functools.singledispatch from\n\t  Python 3.4 to Python 2.6-3.3\n\n\t  https://pypi.python.org/pypi/singledispatch\n"
  },
  {
    "path": "package/python-singledispatch/python-singledispatch.hash",
    "content": "# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=af2fc6a3d6cc5a02d0bf54d909785fcb\nmd5     af2fc6a3d6cc5a02d0bf54d909785fcb singledispatch-3.4.0.3.tar.gz\n# Locally computed\nsha256  5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c  singledispatch-3.4.0.3.tar.gz\nsha256  5a724c436f88585973787af91cecf58503cbf09e5c1721c516880614700767ef  setup.py\n"
  },
  {
    "path": "package/python-singledispatch/python-singledispatch.mk",
    "content": "################################################################################\n#\n# python-singledispatch\n#\n################################################################################\n\nPYTHON_SINGLEDISPATCH_VERSION = 3.4.0.3\nPYTHON_SINGLEDISPATCH_SOURCE = singledispatch-$(PYTHON_SINGLEDISPATCH_VERSION).tar.gz\nPYTHON_SINGLEDISPATCH_SITE = https://pypi.python.org/packages/source/s/singledispatch\nPYTHON_SINGLEDISPATCH_LICENSE = MIT\nPYTHON_SINGLEDISPATCH_LICENSE_FILES = setup.py\nPYTHON_SINGLEDISPATCH_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-sip/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SIP\n\tbool \"python-sip\"\n\tdepends on BR2_PACKAGE_QT5\n\thelp\n\t  SIP is a tool that makes it very easy to create Python\n\t  bindings for C and C++ libraries. It was originally\n\t  developed to create PyQt, the Python bindings for the Qt\n\t  toolkit, but can be used to create bindings for any C or C++\n\t  library.\n\n\t  SIP comprises a code generator and a Python module. The code\n\t  generator processes a set of specification files and\n\t  generates C or C++ code which is then compiled to create the\n\t  bindings extension module. The SIP Python module provides\n\t  support functions to the automatically generated code.\n\n\t  http://www.riverbankcomputing.com/software/sip/intro\n"
  },
  {
    "path": "package/python-sip/python-sip.hash",
    "content": "# From https://sourceforge.net/projects/pyqt/files/sip/sip-4.18/\nmd5 78724bf2a79878201c3bc81a1d8248ea\tsip-4.18.tar.gz\n# Locally calculated:\nsha256 f1dc5c81c07a9ad97edcd4a0af964a41e420024ba7ca165afd2b351efd249cb6\t sip-4.18.tar.gz\nsha256 accecbfda71ad4497bce0d451796706e734e405e5ecf3b3f9ee0cc68300a3d9c  LICENSE\nsha256 7ebb61006e46b9e9340dd135d5f4afbbcb1d1d6c6709f74473b35929007b9aeb  LICENSE-GPL2\nsha256 63cb5f5c1ea39b732c495f354f971e40f6db84c567ca5573a68bb65af07741f8  LICENSE-GPL3\n"
  },
  {
    "path": "package/python-sip/python-sip.mk",
    "content": "################################################################################\n#\n# python-sip\n#\n################################################################################\n\nPYTHON_SIP_VERSION = 4.18\nPYTHON_SIP_SOURCE = sip-$(PYTHON_SIP_VERSION).tar.gz\nPYTHON_SIP_SITE = http://downloads.sourceforge.net/project/pyqt/sip/sip-$(PYTHON_SIP_VERSION)\nPYTHON_SIP_LICENSE = SIP license or GPL-2.0 or GPL-3.0\nPYTHON_SIP_LICENSE_FILES = LICENSE LICENSE-GPL2 LICENSE-GPL3\n\nPYTHON_SIP_DEPENDENCIES = qt5base\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\nPYTHON_SIP_DEPENDENCIES += python\nHOST_PYTHON_SIP_DEPENDENCIES += host-python\nPYTHON_SIP_LIB_DIR = usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages\nPYTHON_SIP_INCLUDE_DIR = usr/include/python$(PYTHON_VERSION_MAJOR)\nelse ifeq ($(BR2_PACKAGE_PYTHON3),y)\nPYTHON_SIP_DEPENDENCIES += python3\nHOST_PYTHON_SIP_DEPENDENCIES += host-python3\nPYTHON_SIP_LIB_DIR = usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages\nPYTHON_SIP_INCLUDE_DIR = usr/include/python$(PYTHON3_VERSION_MAJOR)\nendif\n\ndefine HOST_PYTHON_SIP_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(HOST_DIR)/bin/python configure.py)\nendef\n\ndefine HOST_PYTHON_SIP_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_PYTHON_SIP_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) install -C $(@D)\nendef\n\ndefine PYTHON_SIP_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(HOST_DIR)/bin/python configure.py \\\n\t\t\t--bindir $(TARGET_DIR)/usr/bin \\\n\t\t\t--destdir $(TARGET_DIR)/$(PYTHON_SIP_LIB_DIR) \\\n\t\t\t--incdir $(STAGING_DIR)/$(PYTHON_SIP_INCLUDE_DIR) \\\n\t\t\t--sipdir $(TARGET_DIR)/usr/share/sip \\\n\t\t\t--sysroot $(STAGING_DIR)/usr \\\n\t\t\t--use-qmake && \\\n\t\t$(HOST_DIR)/bin/qmake)\nendef\n\ndefine PYTHON_SIP_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine PYTHON_SIP_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) install -C $(@D)\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/python-six/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SIX\n\tbool \"python-six\"\n\thelp\n\t  Six is a Python 2 and 3 compatibility library. It provides\n\t  utility functions for smoothing over the differences between\n\t  the Python versions with the goal of writing Python code that\n\t  is compatible on both Python versions.\n\n\t  http://pythonhosted.org/six\n"
  },
  {
    "path": "package/python-six/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PYTHON_SIX\n\tbool \"host python-six\"\n\thelp\n\t  Six is a Python 2 and 3 compatibility library. It provides\n\t  utility functions for smoothing over the differences between\n\t  the Python versions with the goal of writing Python code that\n\t  is compatible on both Python versions.\n\n\t  http://pythonhosted.org/six\n"
  },
  {
    "path": "package/python-six/python-six.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/six/json\nmd5  a7c927740e4964dd29b72cebfc1429bb  six-1.16.0.tar.gz\nsha256  1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926  six-1.16.0.tar.gz\n# Locally computed sha256 checksums\nsha256  8bb850c565aa389fdc16f3a46965ad23d82adff60f2393fc2762b63185e8e6c9  LICENSE\n"
  },
  {
    "path": "package/python-six/python-six.mk",
    "content": "################################################################################\n#\n# python-six\n#\n################################################################################\n\n# Please keep in sync with package/python3-six/python3-six.mk\nPYTHON_SIX_VERSION = 1.16.0\nPYTHON_SIX_SOURCE = six-$(PYTHON_SIX_VERSION).tar.gz\nPYTHON_SIX_SITE = https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e\nPYTHON_SIX_SETUP_TYPE = setuptools\nPYTHON_SIX_LICENSE = MIT\nPYTHON_SIX_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-slob/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SLOB\n\tbool \"python-slob\"\n\tdepends on !BR2_BINFMT_FLAT # python-pyicu -> icu\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # python-pyicu -> icu\n\tdepends on BR2_INSTALL_LIBSTDCPP # python-pyicu -> icu\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # python-pyicu -> icu\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_PYICU # runtime\n\t# although optional, it is used as default compression\n\tselect BR2_PACKAGE_PYTHON3_XZ # runtime\n\thelp\n\t  slob.py is a reference implementation of slob format reader\n\t  and writer.\n\n\t  https://github.com/itkach/slob\n\ncomment \"python-slob needs a toolchain w/ C++, gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_PYTHON3 && !BR2_BINFMT_FLAT\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/python-slob/python-slob.hash",
    "content": "# Locally computed\nsha256  18eb4f45d09d49b1f776cac52ea70ab951566c60cd30bbec39e88f10908fd8ff  python-slob-31ad0e769360a5b10a4893f686587bb8e48c3895.tar.gz\nsha256  db09bc6733ab28dc59bfbcd01819feb9d05241cbef3ca3f5f58ec739b341d56f  LICENSE\n"
  },
  {
    "path": "package/python-slob/python-slob.mk",
    "content": "################################################################################\n#\n# python-slob\n#\n################################################################################\n\nPYTHON_SLOB_VERSION = 31ad0e769360a5b10a4893f686587bb8e48c3895\nPYTHON_SLOB_SITE = $(call github,itkach,slob,$(PYTHON_SLOB_VERSION))\nPYTHON_SLOB_LICENSE = GPL-3.0\nPYTHON_SLOB_LICENSE_FILES = LICENSE\nPYTHON_SLOB_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-smbus-cffi/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SMBUS_CFFI\n\tbool \"python-smbus-cffi\"\n\tselect BR2_PACKAGE_PYTHON_CFFI\n\thelp\n\t  This Python module allows SMBus access through the I2C /dev\n\t  interface on Linux hosts. The host kernel must have I2C\n\t  support, I2C device interface support, and a bus adapter\n\t  driver.\n\n\t  https://github.com/bivab/smbus-cffi\n"
  },
  {
    "path": "package/python-smbus-cffi/python-smbus-cffi.hash",
    "content": "# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=f621c871bd658ee665751ad78e3b2df9\nmd5     f621c871bd658ee665751ad78e3b2df9  smbus-cffi-0.5.1.tar.gz\n# Locally computed\nsha256  fb4195aaabfc01586863f60d3190b5cb1bf8f12622fd597e23e48768dad6bde8  smbus-cffi-0.5.1.tar.gz\nsha256  d54f57bf73bd1ff19a424b6deab6ff08f6089a2469c8de360b167f755e4ecb4c  LICENSE\n"
  },
  {
    "path": "package/python-smbus-cffi/python-smbus-cffi.mk",
    "content": "################################################################################\n#\n# python-smbus-cffi\n#\n################################################################################\n\nPYTHON_SMBUS_CFFI_VERSION = 0.5.1\nPYTHON_SMBUS_CFFI_SOURCE = smbus-cffi-$(PYTHON_SMBUS_CFFI_VERSION).tar.gz\nPYTHON_SMBUS_CFFI_SITE = https://pypi.python.org/packages/source/s/smbus-cffi\nPYTHON_SMBUS_CFFI_SETUP_TYPE = setuptools\nPYTHON_SMBUS_CFFI_LICENSE = GPL-2.0\nPYTHON_SMBUS_CFFI_LICENSE_FILES = LICENSE\nPYTHON_SMBUS_CFFI_DEPENDENCIES = host-python-cffi\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-smbus2/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SMBUS2\n\tbool \"python-smbus2\"\n\thelp\n\t  A drop-in replacement for smbus-cffi/smbus-python in pure Python.\n\n\t  https://github.com/kplindegaard/smbus2\n"
  },
  {
    "path": "package/python-smbus2/python-smbus2.hash",
    "content": "sha256 6276eb599b76c4e74372f2582d2282f03b4398f0da16bc996608e4f21557ca9b  smbus2-0.4.1.tar.gz\n"
  },
  {
    "path": "package/python-smbus2/python-smbus2.mk",
    "content": "################################################################################\n#\n# python-smbus2\n#\n################################################################################\n\nPYTHON_SMBUS2_VERSION = 0.4.1\nPYTHON_SMBUS2_SOURCE = smbus2-$(PYTHON_SMBUS2_VERSION).tar.gz\nPYTHON_SMBUS2_SITE = https://files.pythonhosted.org/packages/d9/33/787448c69603eec96af07d36f7ae3a7e3fce4020632eddb55152dc903233\nPYTHON_SMBUS2_SETUP_TYPE = setuptools\nPYTHON_SMBUS2_LICENSE = MIT\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-smmap2/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SMMAP2\n\tbool \"python-smmap2\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Smmap wraps an interface around mmap and tracks the mapped\n\t  files as well as the amount of clients who use it. If the\n\t  system runs out of resources, or if a memory limit is reached,\n\t  it will automatically unload unused maps to allow continued\n\t  operation.\n\n\t  https://github.com/gitpython-developers/smmap\n"
  },
  {
    "path": "package/python-smmap2/python-smmap2.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/smmap/json\nmd5\t61882572be57023980c36f5493523077  smmap-4.0.0.tar.gz\nsha256\t7e65386bd122d45405ddf795637b7f7d2b532e7e401d46bbe3fb49b9986d5182  smmap-4.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t88e9d93f708d110b328a834302dd1d5c6afbda530e7721d15d80b3511d86f235  LICENSE\n"
  },
  {
    "path": "package/python-smmap2/python-smmap2.mk",
    "content": "################################################################################\n#\n# python-smmap2\n#\n################################################################################\n\nPYTHON_SMMAP2_VERSION = 4.0.0\nPYTHON_SMMAP2_SOURCE = smmap-$(PYTHON_SMMAP2_VERSION).tar.gz\nPYTHON_SMMAP2_SITE = https://files.pythonhosted.org/packages/dd/d4/2b4f196171674109f0fbb3951b8beab06cd0453c1b247ec0c4556d06648d\nPYTHON_SMMAP2_SETUP_TYPE = setuptools\nPYTHON_SMMAP2_LICENSE = BSD-3-Clause\nPYTHON_SMMAP2_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-snappy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SNAPPY\n\tbool \"python-snappy\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # snappy\n\tselect BR2_PACKAGE_SNAPPY\n\thelp\n\t  Python library for the snappy compression library from\n\t  Google.\n\n\t  http://github.com/andrix/python-snappy\n\ncomment \"python-snappy needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/python-snappy/python-snappy.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/python-snappy/json\nmd5\t82e09ffd44204096fc70d6de14d0ea2f  python-snappy-0.5.4.tar.gz\nsha256\td9c26532cfa510f45e8d135cde140e8a5603d3fb254cfec273ebc0ecf9f668e2  python-snappy-0.5.4.tar.gz\n# Locally computed sha256 checksums\nsha256\td007cb05f143d99d16d5cd0d1bf291daf037adb36800344e440ec26edb938f9a  LICENSE\n"
  },
  {
    "path": "package/python-snappy/python-snappy.mk",
    "content": "################################################################################\n#\n# python-snappy\n#\n################################################################################\n\nPYTHON_SNAPPY_VERSION = 0.5.4\nPYTHON_SNAPPY_SITE = https://files.pythonhosted.org/packages/45/35/65d9f8cc537129894b4b32647d80212d1fa342877581c5b8a69872cea8be\nPYTHON_SNAPPY_SETUP_TYPE = setuptools\nPYTHON_SNAPPY_LICENSE = BSD-3-Clause\nPYTHON_SNAPPY_LICENSE_FILES = LICENSE\nPYTHON_SNAPPY_DEPENDENCIES = snappy\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-socketio/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SOCKETIO\n\tbool \"python-socketio\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_BIDICT # runtime\n\tselect BR2_PACKAGE_PYTHON_ENGINEIO # runtime\n\thelp\n\t  Socket.IO server.\n\n\t  http://github.com/miguelgrinberg/python-socketio/\n"
  },
  {
    "path": "package/python-socketio/python-socketio.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/python-socketio/json\nmd5  0507825ca4bd6527cbaed81ec5767bfe  python-socketio-5.4.0.tar.gz\nsha256  ca807c9e1f168e96dea412d64dd834fb47c470d27fd83da0504aa4b248ba2544  python-socketio-5.4.0.tar.gz\n# Locally computed sha256 checksums\nsha256  c9e97d3dbc1fbbcdb4f7808b282cd646db887aff4f5313fe6bbe8d4c31405a9c  LICENSE\n"
  },
  {
    "path": "package/python-socketio/python-socketio.mk",
    "content": "################################################################################\n#\n# python-socketio\n#\n################################################################################\n\nPYTHON_SOCKETIO_VERSION = 5.4.0\nPYTHON_SOCKETIO_SITE = https://files.pythonhosted.org/packages/72/70/9b992f4b8adfcbf0724c079c18629d83f20b36fb0eb64d4fdf874054becf\nPYTHON_SOCKETIO_SETUP_TYPE = setuptools\nPYTHON_SOCKETIO_LICENSE = MIT\nPYTHON_SOCKETIO_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-sockjs/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SOCKJS\n\tbool \"python-sockjs\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_AIOHTTP # runtime\n\thelp\n\t  SockJS server implementation for aiohttp.\n\n\t  https://github.com/aio-libs/sockjs/\n"
  },
  {
    "path": "package/python-sockjs/python-sockjs.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/sockjs/json\nmd5  e28c1a82aa84c3994817905090abb169  sockjs-0.11.0.tar.gz\nsha256  0347d404ed9ef3196506787ed8018f87ee4e2d0baea49d420cdd53a969bec229  sockjs-0.11.0.tar.gz\n# Locally computed sha256 checksums\nsha256  7be23c071df0314fadeba6077a3830340a5121ad88bfa66b0c095051a766e141  LICENSE.txt\n"
  },
  {
    "path": "package/python-sockjs/python-sockjs.mk",
    "content": "################################################################################\n#\n# python-sockjs\n#\n################################################################################\n\nPYTHON_SOCKJS_VERSION = 0.11.0\nPYTHON_SOCKJS_SOURCE = sockjs-$(PYTHON_SOCKJS_VERSION).tar.gz\nPYTHON_SOCKJS_SITE = https://files.pythonhosted.org/packages/88/e9/af7b321f70325fd2af3941aa147efd097156150da635e09efc7ccf70e54d\nPYTHON_SOCKJS_SETUP_TYPE = setuptools\nPYTHON_SOCKJS_LICENSE = Apache-2.0\nPYTHON_SOCKJS_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-sortedcontainers/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SORTEDCONTAINERS\n\tbool \"python-sortedcontainers\"\n\thelp\n\t  Python Sorted Container Types: SortedList, SortedDict, and\n\t  SortedSet.\n\n\t  http://www.grantjenks.com/docs/sortedcontainers/\n"
  },
  {
    "path": "package/python-sortedcontainers/python-sortedcontainers.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/sortedcontainers/json\nmd5  50eeb6cb739568b590b28f9a3f445c78  sortedcontainers-2.4.0.tar.gz\nsha256  25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88  sortedcontainers-2.4.0.tar.gz\n# Locally computed sha256 checksums\nsha256  1db7cae7fce6452e2e608e401a0f953e0133e4c2d75db69fb8ae851d2086f5b6  LICENSE\n"
  },
  {
    "path": "package/python-sortedcontainers/python-sortedcontainers.mk",
    "content": "################################################################################\n#\n# python-sortedcontainers\n#\n################################################################################\n\nPYTHON_SORTEDCONTAINERS_VERSION = 2.4.0\nPYTHON_SORTEDCONTAINERS_SOURCE = sortedcontainers-$(PYTHON_SORTEDCONTAINERS_VERSION).tar.gz\nPYTHON_SORTEDCONTAINERS_SITE = https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111\nPYTHON_SORTEDCONTAINERS_SETUP_TYPE = setuptools\nPYTHON_SORTEDCONTAINERS_LICENSE = Apache-2.0\nPYTHON_SORTEDCONTAINERS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-soupsieve/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SOUPSIEVE\n\tbool \"python-soupsieve\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A modern CSS selector implementation for Beautiful Soup.\n\n\t  https://github.com/facelessuser/soupsieve\n"
  },
  {
    "path": "package/python-soupsieve/python-soupsieve.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/soupsieve/json\nmd5  73ff6ce22ba973fe2d47197834e0f728  soupsieve-2.2.1.tar.gz\nsha256  052774848f448cf19c7e959adf5566904d525f33a3f8b6ba6f6f8f26ec7de0cc  soupsieve-2.2.1.tar.gz\n# Locally computed sha256 checksums\nsha256  e34a760fe8bb3e3c1ffaa88abe495cf76e56f8ae3c7a6dde0e4b41cd013c41d4  LICENSE.md\n"
  },
  {
    "path": "package/python-soupsieve/python-soupsieve.mk",
    "content": "################################################################################\n#\n# python-soupsieve\n#\n################################################################################\n\nPYTHON_SOUPSIEVE_VERSION = 2.2.1\nPYTHON_SOUPSIEVE_SOURCE = soupsieve-$(PYTHON_SOUPSIEVE_VERSION).tar.gz\nPYTHON_SOUPSIEVE_SITE = https://files.pythonhosted.org/packages/c8/3f/e71d92e90771ac2d69986aa0e81cf0dfda6271e8483698f4847b861dd449\nPYTHON_SOUPSIEVE_SETUP_TYPE = setuptools\nPYTHON_SOUPSIEVE_LICENSE = MIT\nPYTHON_SOUPSIEVE_LICENSE_FILES = LICENSE.md\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-spidev/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SPIDEV\n\tbool \"python-spidev\"\n\thelp\n\t  Python module for interfacing with SPI devices from user\n\t  space via the spidev linux kernel driver.\n\n\t  https://pypi.python.org/pypi/spidev\n"
  },
  {
    "path": "package/python-spidev/python-spidev.hash",
    "content": "# sha256 from https://pypi.org/project/spidev\nsha256\t8a7f5c289f161ea2ac4697fa8a10918232c990678dd0053084b3c43b1363910d  spidev-3.5.tar.gz\n\n# locally computed\nsha256\t153a6f02f41aebe292cf3307f973a80b4fb0c988d8d3e7d126c7a66c20b1cc27  README.md\n"
  },
  {
    "path": "package/python-spidev/python-spidev.mk",
    "content": "################################################################################\n#\n# python-spidev\n#\n################################################################################\n\nPYTHON_SPIDEV_VERSION = 3.5\nPYTHON_SPIDEV_SOURCE = spidev-$(PYTHON_SPIDEV_VERSION).tar.gz\nPYTHON_SPIDEV_SITE = https://files.pythonhosted.org/packages/62/56/de649e7d95f9fcfaf965a6eb937b4a46bc77ef21487c99cde1a7a0546040\nPYTHON_SPIDEV_SETUP_TYPE = setuptools\nPYTHON_SPIDEV_LICENSE = MIT\nPYTHON_SPIDEV_LICENSE_FILES = README.md\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-sqlalchemy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SQLALCHEMY\n\tbool \"python-sqlalchemy\"\n\thelp\n\t  SQLAlchemy is the Python SQL toolkit and Object Relational\n\t  Mapper that gives application developers the full power and\n\t  flexibility of SQL.\n\n\t  It provides a full suite of well known enterprise-level\n\t  persistence patterns, designed for efficient and\n\t  high-performing database access, adapted into a simple and\n\t  Pythonic domain language.\n\n\t  http://www.sqlalchemy.org\n"
  },
  {
    "path": "package/python-sqlalchemy/python-sqlalchemy.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/sqlalchemy/json\nmd5\taf9722657ba51131703dbe75f24b054a  SQLAlchemy-1.3.10.tar.gz\nsha256\t0f0768b5db594517e1f5e1572c73d14cf295140756431270d89496dc13d5e46c  SQLAlchemy-1.3.10.tar.gz\n# Locally computed sha256 checksums\nsha256\t0acffa15f3427e94014235e3c44376f6fe5df0ff461a93a9116eebcce74c056e  LICENSE\n"
  },
  {
    "path": "package/python-sqlalchemy/python-sqlalchemy.mk",
    "content": "################################################################################\n#\n# python-sqlalchemy\n#\n################################################################################\n\nPYTHON_SQLALCHEMY_VERSION = 1.3.10\nPYTHON_SQLALCHEMY_SOURCE = SQLAlchemy-$(PYTHON_SQLALCHEMY_VERSION).tar.gz\nPYTHON_SQLALCHEMY_SITE = https://files.pythonhosted.org/packages/14/0e/487f7fc1e432cec50d2678f94e4133f2b9e9356e35bacc30d73e8cb831fc\nPYTHON_SQLALCHEMY_SETUP_TYPE = setuptools\nPYTHON_SQLALCHEMY_LICENSE = MIT\nPYTHON_SQLALCHEMY_LICENSE_FILES = LICENSE\nPYTHON_SQLALCHEMY_CPE_ID_VENDOR = sqlalchemy\nPYTHON_SQLALCHEMY_CPE_ID_PRODUCT = sqlalchemy\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-sqliteschema/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SQLITESCHEMA\n\tbool \"python-sqliteschema\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-mbstrdecoder\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_TABLEDATA # runtime\n\tselect BR2_PACKAGE_PYTHON_TYPEPY # runtime\n\thelp\n\t  A Python library to dump table schema of a SQLite database\n\t  file.\n\n\t  https://github.com/thombashi/sqliteschema\n"
  },
  {
    "path": "package/python-sqliteschema/python-sqliteschema.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/sqliteschema/json\nmd5  ca70006e289f1d506124de779ed73d64  sqliteschema-1.2.0.tar.gz\nsha256  4c18f141239c58b6dbdc69130be41ed9740d8209a7ab6d529ba982a8b79c071a  sqliteschema-1.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256  7588265082eed5e9f4afd5090c57e610b740ec547b16aaaab739ba07c5eefb15  LICENSE\n"
  },
  {
    "path": "package/python-sqliteschema/python-sqliteschema.mk",
    "content": "################################################################################\n#\n# python-sqliteschema\n#\n################################################################################\n\nPYTHON_SQLITESCHEMA_VERSION = 1.2.0\nPYTHON_SQLITESCHEMA_SOURCE = sqliteschema-$(PYTHON_SQLITESCHEMA_VERSION).tar.gz\nPYTHON_SQLITESCHEMA_SITE = https://files.pythonhosted.org/packages/5c/d3/0c2e4c989a8d45f9443e431d7cbf89af4aba719fb0647b5f722716ef3990\nPYTHON_SQLITESCHEMA_SETUP_TYPE = setuptools\nPYTHON_SQLITESCHEMA_LICENSE = MIT\nPYTHON_SQLITESCHEMA_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-sqlparse/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SQLPARSE\n\tbool \"python-sqlparse\"\n\thelp\n\t  sqlparse is a non-validating SQL parser for Python.\n\t  It provides support for parsing, splitting and formatting\n\t  SQL statements.\n\n\t  https://github.com/andialbrecht/sqlparse\n"
  },
  {
    "path": "package/python-sqlparse/python-sqlparse.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/sqlparse/json\nmd5\t2ce34181d6b7b234c9f3c0ecd1ffb93e  sqlparse-0.3.0.tar.gz\nsha256\t7c3dca29c022744e95b547e867cee89f4fce4373f3549ccd8797d8eb52cdb873  sqlparse-0.3.0.tar.gz\n# Locally computed sha256 checksums\nsha256\tc1938235b80d39e93138eae89edc3af67e18ecbc40d266529fa57b2dce426310  LICENSE\n"
  },
  {
    "path": "package/python-sqlparse/python-sqlparse.mk",
    "content": "################################################################################\n#\n# python-sqlparse\n#\n################################################################################\n\nPYTHON_SQLPARSE_VERSION = 0.3.0\nPYTHON_SQLPARSE_SOURCE = sqlparse-$(PYTHON_SQLPARSE_VERSION).tar.gz\nPYTHON_SQLPARSE_SITE = https://files.pythonhosted.org/packages/63/c8/229dfd2d18663b375975d953e2bdc06d0eed714f93dcb7732f39e349c438\nPYTHON_SQLPARSE_SETUP_TYPE = setuptools\nPYTHON_SQLPARSE_LICENSE = BSD-3-Clause\nPYTHON_SQLPARSE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-subprocess32/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SUBPROCESS32\n\tbool \"python-subprocess32\"\n\tdepends on BR2_PACKAGE_PYTHON\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 || !BR2_MIPS_NABI64\n\thelp\n\t  A backport of the Python 3 subprocess module for use\n\t  on Python 2.\n\n\t  https://github.com/google/python-subprocess32\n\ncomment \"python-subprocess32 needs a toolchain w/ headers >= 3.10 on MIPS N64\"\n\tdepends on BR2_MIPS_NABI64\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n"
  },
  {
    "path": "package/python-subprocess32/python-subprocess32.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/subprocess32/json\nmd5\t748844d560be5f0c707931cba1cdb48b  subprocess32-3.5.4.tar.gz\nsha256\teb2937c80497978d181efa1b839ec2d9622cf9600a039a79d0e108d1f9aec79d  subprocess32-3.5.4.tar.gz\n# Locally computed sha256 checksums\nsha256\t826b43437249d39422642f695154d064da64de92eb1476048a615f50bc1beb4a  LICENSE\n"
  },
  {
    "path": "package/python-subprocess32/python-subprocess32.mk",
    "content": "################################################################################\n#\n# python-subprocess32\n#\n################################################################################\n\nPYTHON_SUBPROCESS32_VERSION = 3.5.4\nPYTHON_SUBPROCESS32_SOURCE = subprocess32-$(PYTHON_SUBPROCESS32_VERSION).tar.gz\nPYTHON_SUBPROCESS32_SITE = https://files.pythonhosted.org/packages/32/c8/564be4d12629b912ea431f1a50eb8b3b9d00f1a0b1ceff17f266be190007\nPYTHON_SUBPROCESS32_SETUP_TYPE = setuptools\nPYTHON_SUBPROCESS32_LICENSE = Python-2.0\nPYTHON_SUBPROCESS32_LICENSE_FILES = LICENSE\n\n# The configure step needs to be run outside of the setup.py since it isn't\n# run correctly for cross-compiling\ndefine PYTHON_SUBPROCESS32_CONFIGURE_CMDS\n\t(cd $(@D) && \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\t$(TARGET_CONFIGURE_ARGS) \\\n\t./configure \\\n\t\t--target=$(GNU_TARGET_NAME) \\\n\t\t--host=$(GNU_TARGET_NAME) \\\n\t\t--build=$(GNU_HOST_NAME) \\\n\t\t--prefix=/usr \\\n\t\t--exec-prefix=/usr \\\n\t\t--sysconfdir=/etc \\\n\t\t--program-prefix=\"\" \\\n\t)\nendef\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-systemd/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_SYSTEMD\n\tbool \"python-systemd\"\n\tdepends on BR2_PACKAGE_SYSTEMD\n\thelp\n\t  Python module for native access to the systemd facilities.\n\n\t  https://github.com/systemd/python-systemd\n\ncomment \"python-systemd needs systemd\"\n\tdepends on !BR2_PACKAGE_SYSTEMD\n"
  },
  {
    "path": "package/python-systemd/python-systemd.hash",
    "content": "# md5 from https://pypi.python.org/pypi/systemd-python/\nmd5 5071ea5bcb976186e92a3f5e75df221d systemd-python-234.tar.gz\n# Locally computed\nsha256  fd0e44bf70eadae45aadc292cb0a7eb5b0b6372cd1b391228047d33895db83e7  systemd-python-234.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSE.txt\n"
  },
  {
    "path": "package/python-systemd/python-systemd.mk",
    "content": "################################################################################\n#\n# python-systemd\n#\n################################################################################\n\nPYTHON_SYSTEMD_VERSION = 234 # Should be kept in sync with $(SYSTEMD_VERSION)\nPYTHON_SYSTEMD_SOURCE = systemd-python-$(PYTHON_SYSTEMD_VERSION).tar.gz\nPYTHON_SYSTEMD_SITE = https://pypi.python.org/packages/e8/a8/00ba0f605837a8f69523e6c3a4fb14675a6430c163f836540129c50b3aef\nPYTHON_SYSTEMD_SETUP_TYPE = distutils\nPYTHON_SYSTEMD_LICENSE = LGPL-2.1\nPYTHON_SYSTEMD_LICENSE_FILES = LICENSE.txt\nPYTHON_SYSTEMD_DEPENDENCIES = systemd # To be able to link against libsystemd\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-tabledata/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TABLEDATA\n\tbool \"python-tabledata\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-dataproperty, python-typepy\n\tselect BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_TYPEPY # runtime\n\thelp\n\t  A Python library to represent tabular data for\n\t  pytablewriter/pytablereader/SimpleSQLite.\n\n\t  https://github.com/thombashi/tabledata\n"
  },
  {
    "path": "package/python-tabledata/python-tabledata.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/tabledata/json\nmd5  1874cb0bf69cbc824a7bec67431023a9  tabledata-1.3.0.tar.gz\nsha256  54541b0c9e58f8fa38251ea0a60965dbaf95737027fa80e6ab56f98d7e4d61e9  tabledata-1.3.0.tar.gz\n# Locally computed sha256 checksums\nsha256  bebbdf0524a147f89a615fff53d79bdc90cbc7631550fb4b725cd3f3bdcd24f6  LICENSE\n"
  },
  {
    "path": "package/python-tabledata/python-tabledata.mk",
    "content": "################################################################################\n#\n# python-tabledata\n#\n################################################################################\n\nPYTHON_TABLEDATA_VERSION = 1.3.0\nPYTHON_TABLEDATA_SOURCE = tabledata-$(PYTHON_TABLEDATA_VERSION).tar.gz\nPYTHON_TABLEDATA_SITE = https://files.pythonhosted.org/packages/ed/ed/dd0d6975963967492ac2c230107587593c7bd94acfa802b0c60a5395125c\nPYTHON_TABLEDATA_SETUP_TYPE = setuptools\nPYTHON_TABLEDATA_LICENSE = MIT\nPYTHON_TABLEDATA_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-tempora/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TEMPORA\n\tbool \"python-tempora\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-jaraco-functools\n\tselect BR2_PACKAGE_PYTHON_JARACO_FUNCTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_PYTZ # runtime\n\thelp\n\t  Objects and routines pertaining to date and time.\n\n\t  https://github.com/jaraco/tempora\n"
  },
  {
    "path": "package/python-tempora/python-tempora.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/tempora/json\nmd5\tf8b2b0df1adf3f83b829a85e31bddb2d  tempora-1.14.1.tar.gz\nsha256\tcb60b1d2b1664104e307f8e5269d7f4acdb077c82e35cd57246ae14a3427d2d6  tempora-1.14.1.tar.gz\n# Locally computed sha256 checksums\nsha256\ta55e2ffe9b44998e621d51d8c094bed09acc4b5236ee73d7df395a33ba3c18fd  LICENSE\n"
  },
  {
    "path": "package/python-tempora/python-tempora.mk",
    "content": "################################################################################\n#\n# python-tempora\n#\n################################################################################\n\nPYTHON_TEMPORA_VERSION = 1.14.1\nPYTHON_TEMPORA_SOURCE = tempora-$(PYTHON_TEMPORA_VERSION).tar.gz\nPYTHON_TEMPORA_SITE = https://files.pythonhosted.org/packages/2f/b5/5b0464385454c5ca93a39a1c6acefdf574aeb10ef45fa8958b3832cc7d96\nPYTHON_TEMPORA_LICENSE = MIT\nPYTHON_TEMPORA_LICENSE_FILES = LICENSE\nPYTHON_TEMPORA_SETUP_TYPE = setuptools\nPYTHON_TEMPORA_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-termcolor/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TERMCOLOR\n\tbool \"python-termcolor\"\n\thelp\n\t  ANSII Color formatting for output in terminal.\n\n\t  http://pypi.python.org/pypi/termcolor\n"
  },
  {
    "path": "package/python-termcolor/python-termcolor.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/termcolor/json\nmd5\t043e89644f8909d462fbbfa511c768df  termcolor-1.1.0.tar.gz\nsha256\t1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b  termcolor-1.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t497b3272b67b94a7aa58fa3748d21b62b29ccb783b1cda816f594e3932590bbf  COPYING.txt\n"
  },
  {
    "path": "package/python-termcolor/python-termcolor.mk",
    "content": "################################################################################\n#\n# python-termcolor\n#\n################################################################################\n\nPYTHON_TERMCOLOR_VERSION = 1.1.0\nPYTHON_TERMCOLOR_SOURCE = termcolor-$(PYTHON_TERMCOLOR_VERSION).tar.gz\nPYTHON_TERMCOLOR_SITE = https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981\nPYTHON_TERMCOLOR_SETUP_TYPE = distutils\nPYTHON_TERMCOLOR_LICENSE = MIT\nPYTHON_TERMCOLOR_LICENSE_FILES = COPYING.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-terminaltables/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TERMINALTABLES\n\tbool \"python-terminaltables\"\n\thelp\n\t  Generate simple tables in terminals from a nested list of\n\t  strings.\n\n\t  https://github.com/Robpol86/terminaltables\n"
  },
  {
    "path": "package/python-terminaltables/python-terminaltables.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/terminaltables/json\nmd5\t863797674d8f75d22e16e6c1fdcbeb41  terminaltables-3.1.0.tar.gz\nsha256\tf3eb0eb92e3833972ac36796293ca0906e998dc3be91fbe1f8615b331b853b81  terminaltables-3.1.0.tar.gz\n"
  },
  {
    "path": "package/python-terminaltables/python-terminaltables.mk",
    "content": "################################################################################\n#\n# python-terminaltables\n#\n################################################################################\n\nPYTHON_TERMINALTABLES_VERSION = 3.1.0\nPYTHON_TERMINALTABLES_SOURCE = terminaltables-$(PYTHON_TERMINALTABLES_VERSION).tar.gz\nPYTHON_TERMINALTABLES_SITE = https://files.pythonhosted.org/packages/9b/c4/4a21174f32f8a7e1104798c445dacdc1d4df86f2f26722767034e4de4bff\nPYTHON_TERMINALTABLES_SETUP_TYPE = setuptools\nPYTHON_TERMINALTABLES_LICENSE = MIT\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-texttable/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TEXTTABLE\n\tbool \"python-texttable\"\n\thelp\n\t  module for creating simple ASCII tables.\n\n\t  https://github.com/foutaise/texttable/\n"
  },
  {
    "path": "package/python-texttable/python-texttable.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/texttable/json\nmd5  15faadc07ba44d337cc1675ea6092a02  texttable-1.6.4.tar.gz\nsha256  42ee7b9e15f7b225747c3fa08f43c5d6c83bc899f80ff9bae9319334824076e9  texttable-1.6.4.tar.gz\n# Locally computed sha256 checksums\nsha256  4ba7bdab54504a3bc44eb33ecca873a26a63ab902822101a87bb46235da63594  LICENSE\n"
  },
  {
    "path": "package/python-texttable/python-texttable.mk",
    "content": "################################################################################\n#\n# python-texttable\n#\n################################################################################\n\nPYTHON_TEXTTABLE_VERSION = 1.6.4\nPYTHON_TEXTTABLE_SOURCE = texttable-$(PYTHON_TEXTTABLE_VERSION).tar.gz\nPYTHON_TEXTTABLE_SITE = https://files.pythonhosted.org/packages/d5/78/dbc2a5eab57a01fedaf975f2c16f04e76f09336dbeadb9994258aa0a2b1a\nPYTHON_TEXTTABLE_SETUP_TYPE = setuptools\nPYTHON_TEXTTABLE_LICENSE = MIT\nPYTHON_TEXTTABLE_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-thrift/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_THRIFT\n\tbool \"python-thrift\"\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  Python bindings for the Apache Thrift RPC system.\n\n\t  https://thrift.apache.org\n"
  },
  {
    "path": "package/python-thrift/python-thrift.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/thrift/json\nmd5  c3bc8d9a910d2c9ce26f2ad1f7c96762  thrift-0.13.0.tar.gz\nsha256  9af1c86bf73433afc6010ed376a6c6aca2b54099cc0d61895f640870a9ae7d89  thrift-0.13.0.tar.gz\n# Locally computed sha256 checksums\nsha256  c13578ae9d0529d0252e1c7375b917bacf58723dce1fcd40c7ed59183401b468  LICENSE\n"
  },
  {
    "path": "package/python-thrift/python-thrift.mk",
    "content": "################################################################################\n#\n# python-thrift\n#\n################################################################################\n\nPYTHON_THRIFT_VERSION = 0.13.0\nPYTHON_THRIFT_SOURCE = thrift-$(PYTHON_THRIFT_VERSION).tar.gz\nPYTHON_THRIFT_SITE = https://files.pythonhosted.org/packages/97/1e/3284d19d7be99305eda145b8aa46b0c33244e4a496ec66440dac19f8274d\nPYTHON_THRIFT_SETUP_TYPE = setuptools\nPYTHON_THRIFT_LICENSE = Apache-2.0\nPYTHON_THRIFT_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-tinyrpc/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TINYRPC\n\tbool \"python-tinyrpc\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  A small, modular, transport and protocol neutral RPC\n\t  library that, among other things, supports JSON-RPC and\n\t  zmq.\n\n\t  http://github.com/mbr/tinyrpc\n"
  },
  {
    "path": "package/python-tinyrpc/python-tinyrpc.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/tinyrpc/json\nmd5  34d7b41ab48297b6b8fbf937e3d43a57  tinyrpc-1.1.1.tar.gz\nsha256  9e68d7b9688dac8deaa342a2507d04f0b2ece64a9d19382aa2ee13d692e87d7f  tinyrpc-1.1.1.tar.gz\n# Locally computed sha256 checksums\nsha256  587f1ea174824613f4a7e0d7fb95fda000a7f58ca17df12416e014c9ee82e619  LICENSE\n"
  },
  {
    "path": "package/python-tinyrpc/python-tinyrpc.mk",
    "content": "################################################################################\n#\n# python-tinyrpc\n#\n################################################################################\n\nPYTHON_TINYRPC_VERSION = 1.1.1\nPYTHON_TINYRPC_SOURCE = tinyrpc-$(PYTHON_TINYRPC_VERSION).tar.gz\nPYTHON_TINYRPC_SITE = https://files.pythonhosted.org/packages/6a/63/0851365686da1ca9ab03d63b035eccf87a1d85b743ce07d079462350da33\nPYTHON_TINYRPC_SETUP_TYPE = setuptools\nPYTHON_TINYRPC_LICENSE = MIT\nPYTHON_TINYRPC_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-tomako/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TOMAKO\n\tbool \"python-tomako\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-tornado\n\tselect BR2_PACKAGE_PYTHON_TORNADO # runtime\n\tselect BR2_PACKAGE_PYTHON_MAKO # runtime\n\thelp\n\t  Tomako is the easiest way to use Mako as a template engine for\n\t  Tornado.\n\n\t  https://github.com/rcmachado/tomako\n"
  },
  {
    "path": "package/python-tomako/python-tomako.hash",
    "content": "# md5 from https://pypi.python.org/pypi/tomako/json\nmd5\ta2e9e99be4ddf2263ed441ddc3dfcf96  tomako-0.1.0.post1.tar.gz\n# Locally computed\nsha256\t2d8ec113199408eb16ec00361aac6f10b716925779b6331083f304d01dafd150  tomako-0.1.0.post1.tar.gz\nsha256  2b55167354e331f089d5f7a9a9ef4149b0baa95abd6860b6390a04001e1f2bb8  LICENSE\n"
  },
  {
    "path": "package/python-tomako/python-tomako.mk",
    "content": "################################################################################\n#\n# python-tomako\n#\n################################################################################\n\nPYTHON_TOMAKO_VERSION = 0.1.0.post1\nPYTHON_TOMAKO_SOURCE = tomako-$(PYTHON_TOMAKO_VERSION).tar.gz\nPYTHON_TOMAKO_SITE = https://pypi.python.org/packages/30/64/e174248281cb2fa8f5bce955d4bd49b253e622bb540a6001e48dec378a07\nPYTHON_TOMAKO_SETUP_TYPE = setuptools\nPYTHON_TOMAKO_LICENSE = MIT\nPYTHON_TOMAKO_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-toml/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TOML\n\tbool \"python-toml\"\n\thelp\n\t  Python Library for Tom's Obvious, Minimal Language.\n\n\t  https://github.com/uiri/toml\n"
  },
  {
    "path": "package/python-toml/python-toml.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/toml/json\nmd5  59bce5d8d67e858735ec3f399ec90253  toml-0.10.2.tar.gz\nsha256  b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f  toml-0.10.2.tar.gz\n# Locally computed sha256 checksums\nsha256  2d9294823df6c89357c8be4927fce79361d6561e5ee7532d5926e63939aaa536  LICENSE\n"
  },
  {
    "path": "package/python-toml/python-toml.mk",
    "content": "################################################################################\n#\n# python-toml\n#\n################################################################################\n\nPYTHON_TOML_VERSION = 0.10.2\nPYTHON_TOML_SOURCE = toml-$(PYTHON_TOML_VERSION).tar.gz\nPYTHON_TOML_SITE = https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c\nPYTHON_TOML_SETUP_TYPE = setuptools\nPYTHON_TOML_LICENSE = MIT\nPYTHON_TOML_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-tornado/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TORNADO\n\tbool \"python-tornado\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON3_ZLIB\n\tselect BR2_PACKAGE_PYTHON3_SSL\n\thelp\n\t  Tornado is a Python web framework and asynchronous networking\n\t  library, originally developed at FriendFeed.\n\n\t  http://www.tornadoweb.org\n"
  },
  {
    "path": "package/python-tornado/python-tornado.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/tornado/json\nmd5  cf39425f3d7eba9a54287f3e795a2f23  tornado-6.0.4.tar.gz\nsha256  0fe2d45ba43b00a41cd73f8be321a44936dc1aba233dee979f17a042b83eb6dc  tornado-6.0.4.tar.gz\n# Locally computed sha256 checksums\nsha256  3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5  LICENSE\n"
  },
  {
    "path": "package/python-tornado/python-tornado.mk",
    "content": "################################################################################\n#\n# python-tornado\n#\n################################################################################\n\nPYTHON_TORNADO_VERSION = 6.0.4\nPYTHON_TORNADO_SOURCE = tornado-$(PYTHON_TORNADO_VERSION).tar.gz\nPYTHON_TORNADO_SITE = https://files.pythonhosted.org/packages/95/84/119a46d494f008969bf0c775cb2c6b3579d3c4cc1bb1b41a022aa93ee242\nPYTHON_TORNADO_LICENSE = Apache-2.0\nPYTHON_TORNADO_LICENSE_FILES = LICENSE\nPYTHON_TORNADO_CPE_ID_VENDOR = tornadoweb\nPYTHON_TORNADO_CPE_ID_PRODUCT = tornado\nPYTHON_TORNADO_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-tqdm/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TQDM\n\tbool \"python-tqdm\"\n\thelp\n\t  A Fast, Extensible Progress Bar for Python and CLI.\n\n\t  https://tqdm.github.io\n"
  },
  {
    "path": "package/python-tqdm/python-tqdm.hash",
    "content": "# md5, sha256 from https://pypi.org/project/tqdm\nmd5\t285af1f905f4c375f03a86a667047950  tqdm-4.40.1.tar.gz\nsha256\te405d16c98fcf30725d0c9d493ed07302a18846b5452de5253030ccd18996f87  tqdm-4.40.1.tar.gz\n# Locally computed sha256 checksums\nsha256\t1bbf12d09d437844527b3cdaba01d379dac651b5cbb5ebb0d764274684d2680b  LICENCE\n"
  },
  {
    "path": "package/python-tqdm/python-tqdm.mk",
    "content": "################################################################################\n#\n# python-tqdm\n#\n################################################################################\n\nPYTHON_TQDM_VERSION = 4.40.1\nPYTHON_TQDM_SOURCE = tqdm-$(PYTHON_TQDM_VERSION).tar.gz\nPYTHON_TQDM_SITE = https://files.pythonhosted.org/packages/4c/45/830c5c4bfaba60ef7d356a53c7751a86c81d148a16fda0daf3ac5ca8e288\nPYTHON_TQDM_SETUP_TYPE = setuptools\nPYTHON_TQDM_LICENSE = MPL-2.0, MIT\nPYTHON_TQDM_LICENSE_FILES = LICENCE\nPYTHON_TQDM_CPE_ID_VENDOR = tqdm_project\nPYTHON_TQDM_CPE_ID_PRODUCT = tqdm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-traitlets/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TRAITLETS\n\tbool \"python-traitlets\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  A configuration system for Python applications.\n\n\t  https://pypi.python.org/pypi/traitlets\n"
  },
  {
    "path": "package/python-traitlets/python-traitlets.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/traitlets/json\nmd5  19483ec0685e837912cff128209aa845  traitlets-5.1.0.tar.gz\nsha256  bd382d7ea181fbbcce157c133db9a829ce06edffe097bcf3ab945b435452b46d  traitlets-5.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256  71c89129039b870cc92309466c4fbe8f285a82fa0ea36f0e840fa83979cbe31f  COPYING.md\n"
  },
  {
    "path": "package/python-traitlets/python-traitlets.mk",
    "content": "################################################################################\n#\n# python-traitlets\n#\n################################################################################\n\nPYTHON_TRAITLETS_VERSION = 5.1.0\nPYTHON_TRAITLETS_SOURCE = traitlets-$(PYTHON_TRAITLETS_VERSION).tar.gz\nPYTHON_TRAITLETS_SITE = https://files.pythonhosted.org/packages/d5/bc/37d490908e7ac949614d62767db3c86f37bc5adb6129d378c35859a75b87\nPYTHON_TRAITLETS_LICENSE = BSD-3-Clause\nPYTHON_TRAITLETS_LICENSE_FILES = COPYING.md\nPYTHON_TRAITLETS_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-treq/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TREQ\n\tbool \"python-treq\"\n\t# python-pyopenssl -> python-cryptography\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\t# python-idna, python-pyopenssl -> python-cryptography\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_ATTRS # runtime\n\tselect BR2_PACKAGE_PYTHON_IDNA # runtime\n\tselect BR2_PACKAGE_PYTHON_INCREMENTAL # runtime\n\tselect BR2_PACKAGE_PYTHON_PYOPENSSL # runtime\n\tselect BR2_PACKAGE_PYTHON_REQUESTS # runtime\n\tselect BR2_PACKAGE_PYTHON_SERVICE_IDENTITY # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_TWISTED # runtime\n\thelp\n\t  treq is an HTTP library inspired by requests but written on\n\t  top of Twisted's Agents. It provides a simple, higher level\n\t  API for making HTTP requests when using Twisted.\n\n\t  https://github.com/twisted/treq\n"
  },
  {
    "path": "package/python-treq/python-treq.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/treq/json\nmd5  b75f6c89fd481989a9cfdec8d61a6d84  treq-20.3.0.tar.gz\nsha256  a72d7587d6f81c7a32620b00175825b4334bafbde73d37098d139ac7b11dca98  treq-20.3.0.tar.gz\n# Locally computed sha256 checksums\nsha256  7cc1b65e1937b1cc07052bb864ec96d8e5fd413400c0842e5b89a8201a600293  LICENSE\n"
  },
  {
    "path": "package/python-treq/python-treq.mk",
    "content": "################################################################################\n#\n# python-treq\n#\n################################################################################\n\nPYTHON_TREQ_VERSION = 20.3.0\nPYTHON_TREQ_SOURCE = treq-$(PYTHON_TREQ_VERSION).tar.gz\nPYTHON_TREQ_SITE = https://files.pythonhosted.org/packages/98/09/25064d7224efde9fd51e8865353d516c53306e476eab27ab21fb258cf7d4\nPYTHON_TREQ_LICENSE = MIT\nPYTHON_TREQ_LICENSE_FILES = LICENSE\nPYTHON_TREQ_SETUP_TYPE = setuptools\nPYTHON_TREQ_DEPENDENCIES = host-python-incremental\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-twisted/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TWISTED\n\tbool \"python-twisted\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-pyhamcrest; python-hyperlink -> python-idna\n\tselect BR2_PACKAGE_PYTHON_INCREMENTAL\n\tselect BR2_PACKAGE_PYTHON_ATTRS # runtime\n\tselect BR2_PACKAGE_PYTHON_AUTOMAT # runtime\n\tselect BR2_PACKAGE_PYTHON_CONSTANTLY # runtime\n\tselect BR2_PACKAGE_PYTHON_HYPERLINK # runtime\n\tselect BR2_PACKAGE_PYTHON_PYHAMCREST # runtime\n\tselect BR2_PACKAGE_PYTHON_ZOPE_INTERFACE # runtime\n\thelp\n\t  Twisted is an event-driven networking engine written in\n\t  Python.\n\n\t  https://twistedmatrix.com/trac/\n\nif BR2_PACKAGE_PYTHON_TWISTED\n\nconfig BR2_PACKAGE_PYTHON_TWISTED_HTTP2\n\tbool \"HTTP2 support\"\n\tselect BR2_PACKAGE_PYTHON_H2 # runtime\n\tselect BR2_PACKAGE_PYTHON_PRIORITY # runtime\n\nconfig BR2_PACKAGE_PYTHON_TWISTED_TLS\n\tbool \"TLS support\"\n\t# python-{pyopenssl,service-identity}\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_PYTHON_IDNA # runtime\n\tselect BR2_PACKAGE_PYTHON_PYOPENSSL # runtime\n\tselect BR2_PACKAGE_PYTHON_SERVICE_IDENTITY # runtime\n\nendif\n"
  },
  {
    "path": "package/python-twisted/python-twisted.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/twisted/json\nmd5  fc16d575730db7d0cddd09fc35af3eea  Twisted-20.3.0.tar.bz2\nsha256  d72c55b5d56e176563b91d11952d13b01af8725c623e498db5507b6614fc1e10  Twisted-20.3.0.tar.bz2\n# Locally computed sha256\nsha256  98426fd47315df70098e0d85efbb5d7dd8001c9c536386937354640d6d8d75b9  LICENSE\n"
  },
  {
    "path": "package/python-twisted/python-twisted.mk",
    "content": "################################################################################\n#\n# python-twisted\n#\n################################################################################\n\nPYTHON_TWISTED_VERSION = 20.3.0\nPYTHON_TWISTED_SOURCE = Twisted-$(PYTHON_TWISTED_VERSION).tar.bz2\nPYTHON_TWISTED_SITE = https://files.pythonhosted.org/packages/4a/b4/4973c7ccb5be2ec0abc779b7d5f9d5f24b17b0349e23240cfc9dc3bd83cc\nPYTHON_TWISTED_SETUP_TYPE = setuptools\nPYTHON_TWISTED_LICENSE = MIT\nPYTHON_TWISTED_LICENSE_FILES = LICENSE\nPYTHON_TWISTED_CPE_ID_VENDOR = twistedmatrix\nPYTHON_TWISTED_CPE_ID_PRODUCT = twisted\nPYTHON_TWISTED_DEPENDENCIES = python-incremental host-python-incremental\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-txaio/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TXAIO\n\tbool \"python-txaio\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Compatibility API between asyncio/Twisted/Trollius.\n\n\t  https://pypi.python.org/pypi/txaio\n"
  },
  {
    "path": "package/python-txaio/python-txaio.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/txaio/json\nmd5  7e80b80ed7797245a5eef803043bdede  txaio-21.2.1.tar.gz\nsha256  7d6f89745680233f1c4db9ddb748df5e88d2a7a37962be174c0fd04c8dba1dc8  txaio-21.2.1.tar.gz\n# Locally computed sha256 checksums\nsha256  0387eefce570453daaa60633f28676003731eeca28b2d0a0071c628e3a0004ef  LICENSE\n"
  },
  {
    "path": "package/python-txaio/python-txaio.mk",
    "content": "################################################################################\n#\n# python-txaio\n#\n################################################################################\n\nPYTHON_TXAIO_VERSION = 21.2.1\nPYTHON_TXAIO_SOURCE = txaio-$(PYTHON_TXAIO_VERSION).tar.gz\nPYTHON_TXAIO_SITE = https://files.pythonhosted.org/packages/c5/39/2e715062283f8443d8ceeea32276db71741664d78d43c3edd3675498e926\nPYTHON_TXAIO_LICENSE = MIT\nPYTHON_TXAIO_LICENSE_FILES = LICENSE\nPYTHON_TXAIO_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-txdbus/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TXDBUS\n\tbool \"python-txdbus\"\n\t# python-twisted -> python-cryptography\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\t# python-twisted -> python-cryptography\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_TWISTED # runtime\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  A native Python implementation of the DBus protocol for\n\t  Twisted applications.\n\n\t  https://github.com/cocagne/txdbus\n"
  },
  {
    "path": "package/python-txdbus/python-txdbus.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/txdbus/json\nmd5  d397357dee78750385f92ca9c6c1f063  txdbus-1.1.2.tar.gz\nsha256  8375a5fb68a12054f0def91af800c821fb2232949337756ed975f88d8ea2bc97  txdbus-1.1.2.tar.gz\n"
  },
  {
    "path": "package/python-txdbus/python-txdbus.mk",
    "content": "################################################################################\n#\n# python-txdbus\n#\n################################################################################\n\nPYTHON_TXDBUS_VERSION = 1.1.2\nPYTHON_TXDBUS_SOURCE = txdbus-$(PYTHON_TXDBUS_VERSION).tar.gz\nPYTHON_TXDBUS_SITE = https://files.pythonhosted.org/packages/d6/ef/43377e975b8d37862fd1166a4998f908651f5e205ddc9bbd7a57c6e5b4b6\nPYTHON_TXDBUS_SETUP_TYPE = setuptools\nPYTHON_TXDBUS_LICENSE = MIT\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-txtorcon/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TXTORCON\n\tbool \"python-txtorcon\"\n\t# python-pyopenssl -> python-cryptography\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_PYTHON3 # python-idna\n\tselect BR2_PACKAGE_PYTHON_AUTOMAT # runtime\n\tselect BR2_PACKAGE_PYTHON_IDNA # runtime\n\tselect BR2_PACKAGE_PYTHON_INCREMENTAL # runtime\n\tselect BR2_PACKAGE_PYTHON_PYOPENSSL # runtime\n\tselect BR2_PACKAGE_PYTHON_SERVICE_IDENTITY # runtime\n\tselect BR2_PACKAGE_PYTHON_TWISTED # runtime\n\tselect BR2_PACKAGE_PYTHON_ZOPE_INTERFACE # runtime\n\thelp\n\t  Twisted-based Tor controller client, with state-tracking and\n\t  configuration abstractions.\n\n\t  https://github.com/meejah/txtorcon\n"
  },
  {
    "path": "package/python-txtorcon/python-txtorcon.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/txtorcon/json\nmd5  dbb53821a3ce3e921e09c5de4f722fdb  txtorcon-21.1.0.tar.gz\nsha256  aebf0b9ec6c69a029f6b61fd534e785692e28fdcd2fd003ce3cc132b9393b7d6  txtorcon-21.1.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t3ada1c32ef38c23d96d7f4e8f4a226c527f51e0202883c7543b06f9cc5228a2b  LICENSE\n"
  },
  {
    "path": "package/python-txtorcon/python-txtorcon.mk",
    "content": "################################################################################\n#\n# python-txtorcon\n#\n################################################################################\n\nPYTHON_TXTORCON_VERSION = 21.1.0\nPYTHON_TXTORCON_SOURCE = txtorcon-$(PYTHON_TXTORCON_VERSION).tar.gz\nPYTHON_TXTORCON_SITE = https://files.pythonhosted.org/packages/eb/43/2426009377cef519c53bdc8969590cb100e9fd745846859963c881c6d176\nPYTHON_TXTORCON_SETUP_TYPE = setuptools\nPYTHON_TXTORCON_LICENSE = MIT\nPYTHON_TXTORCON_LICENSE_FILES = LICENSE\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\n# only needed/valid for python 3.x\ndefine PYTHON_TXTORCON_RM_PY3_FILE\n\trm -f $(TARGET_DIR)/usr/lib/python*/site-packages/txtorcon/controller_py3.py\nendef\n\nPYTHON_TXTORCON_POST_INSTALL_TARGET_HOOKS += PYTHON_TXTORCON_RM_PY3_FILE\nendif\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-typepy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TYPEPY\n\tbool \"python-typepy\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime\n\thelp\n\t  A Python library for variable type\n\t  checker/validator/converter at a run time.\n\n\t  https://github.com/thombashi/typepy\n"
  },
  {
    "path": "package/python-typepy/python-typepy.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/typepy/json\nmd5  9f73bef9ce9e9ccf49ed63a2dadada90  typepy-1.3.0.tar.gz\nsha256  96788530614083164993d1443959f6c58e6bb8e2da839812ddf462c203e4b84c  typepy-1.3.0.tar.gz\n# Locally computed sha256 checksums\nsha256  bebbdf0524a147f89a615fff53d79bdc90cbc7631550fb4b725cd3f3bdcd24f6  LICENSE\n"
  },
  {
    "path": "package/python-typepy/python-typepy.mk",
    "content": "################################################################################\n#\n# python-typepy\n#\n################################################################################\n\nPYTHON_TYPEPY_VERSION = 1.3.0\nPYTHON_TYPEPY_SOURCE = typepy-$(PYTHON_TYPEPY_VERSION).tar.gz\nPYTHON_TYPEPY_SITE = https://files.pythonhosted.org/packages/07/7b/fb32933f2a17992af75c0f96e5538a25fecebd439a82dcc31926ba55d336\nPYTHON_TYPEPY_SETUP_TYPE = setuptools\nPYTHON_TYPEPY_LICENSE = MIT\nPYTHON_TYPEPY_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-typing/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TYPING\n\tbool \"python-typing\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  Type Hints for Python. This is a backport of the standard\n\t  library typing module to Python versions older than 3.5.\n\n\t  https://docs.python.org/3/library/typing.html\n"
  },
  {
    "path": "package/python-typing/python-typing.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/typing/json\nmd5  d6dd450cfe0c8c6547eef09a0491775d  typing-3.10.0.0.tar.gz\nsha256  13b4ad211f54ddbf93e5901a9967b1e07720c1d1b78d596ac6a439641aa1b130  typing-3.10.0.0.tar.gz\n# Locally computed sha256 checksums\nsha256  ff17ce94e102024deb68773eb1cc74ca76da4e658f373531f0ac22d68a6bb1ad  LICENSE\n"
  },
  {
    "path": "package/python-typing/python-typing.mk",
    "content": "################################################################################\n#\n# python-typing\n#\n################################################################################\n\nPYTHON_TYPING_VERSION = 3.10.0.0\nPYTHON_TYPING_SOURCE = typing-$(PYTHON_TYPING_VERSION).tar.gz\nPYTHON_TYPING_SITE = https://files.pythonhosted.org/packages/b0/1b/835d4431805939d2996f8772aca1d2313a57e8860fec0e48e8e7dfe3a477\nPYTHON_TYPING_SETUP_TYPE = setuptools\nPYTHON_TYPING_LICENSE = Python-2.0, others\nPYTHON_TYPING_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-typing-extensions/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_TYPING_EXTENSIONS\n\tbool \"python-typing-extensions\"\n\tselect BR2_PACKAGE_PYTHON_TYPING if BR2_PACKAGE_PYTHON # runtime\n\thelp\n\t  Backported and Experimental Type Hints for Python 3.5+.\n\n\t  https://github.com/python/typing/blob/master/typing_extensions/README.rst\n"
  },
  {
    "path": "package/python-typing-extensions/python-typing-extensions.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/typing_extensions/json\nmd5  ed80ecc8eac5cb15840535ca54eb43f3  typing_extensions-3.10.0.2.tar.gz\nsha256  49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e  typing_extensions-3.10.0.2.tar.gz\n# Locally computed sha256 checksums\nsha256  ff17ce94e102024deb68773eb1cc74ca76da4e658f373531f0ac22d68a6bb1ad  LICENSE\n"
  },
  {
    "path": "package/python-typing-extensions/python-typing-extensions.mk",
    "content": "################################################################################\n#\n# python-typing-extensions\n#\n################################################################################\n\nPYTHON_TYPING_EXTENSIONS_VERSION = 3.10.0.2\nPYTHON_TYPING_EXTENSIONS_SOURCE = typing_extensions-$(PYTHON_TYPING_EXTENSIONS_VERSION).tar.gz\nPYTHON_TYPING_EXTENSIONS_SITE = https://files.pythonhosted.org/packages/ed/12/c5079a15cf5c01d7f4252b473b00f7e68ee711be605b9f001528f0298b98\nPYTHON_TYPING_EXTENSIONS_SETUP_TYPE = setuptools\nPYTHON_TYPING_EXTENSIONS_LICENSE = Python-2.0\nPYTHON_TYPING_EXTENSIONS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-u-msgpack/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_U_MSGPACK\n\tbool \"python-u-msgpack\"\n\thelp\n\t  A portable, lightweight MessagePack serializer and\n\t  deserializer written in pure Python.\n\n\t  https://github.com/vsergeev/u-msgpack-python\n"
  },
  {
    "path": "package/python-u-msgpack/python-u-msgpack.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/u-msgpack-python/json\nmd5  8691cea6bc7b44bce6e2115260a54323  u-msgpack-python-2.7.1.tar.gz\nsha256  b7e7d433cab77171a4c752875d91836f3040306bab5063fb6dbe11f64ea69551  u-msgpack-python-2.7.1.tar.gz\n# Locally computed sha256 checksums\nsha256  268ae7b7efbf67cd7bc0a9efea844fcf448d03f9cc6b8c79e8fe311815985030  LICENSE\n"
  },
  {
    "path": "package/python-u-msgpack/python-u-msgpack.mk",
    "content": "################################################################################\n#\n# python-u-msgpack\n#\n################################################################################\n\nPYTHON_U_MSGPACK_VERSION = 2.7.1\nPYTHON_U_MSGPACK_SOURCE = u-msgpack-python-$(PYTHON_U_MSGPACK_VERSION).tar.gz\nPYTHON_U_MSGPACK_SITE = https://files.pythonhosted.org/packages/62/94/a4f485b628310534d377b3e7cb6f85b8066dc823dbff0e4421fb4227fb7e\nPYTHON_U_MSGPACK_SETUP_TYPE = setuptools\nPYTHON_U_MSGPACK_LICENSE = MIT\nPYTHON_U_MSGPACK_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ubjson/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_UBJSON\n\tbool \"python-ubjson\"\n\thelp\n\t  This is a Python v3.2+ (and 2.7+) Universal Binary JSON\n\t  encoder/decoder based on the draft-12 specification.\n\n\t  https://pypi.python.org/pypi/py-ubjson\n"
  },
  {
    "path": "package/python-ubjson/python-ubjson.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/py-ubjson/json\nmd5  0f9f2b4d68ae8e70c6f624b1cdaca161  py-ubjson-0.16.1.tar.gz\nsha256  b9bfb8695a1c7e3632e800fb83c943bf67ed45ddd87cd0344851610c69a5a482  py-ubjson-0.16.1.tar.gz\n# Locally computed sha256 checksums\nsha256  ca182abcb84ad9984c9af2e30cb70c4fe0e1772674355207e8fcdb85e8c5e75f  LICENSE\n"
  },
  {
    "path": "package/python-ubjson/python-ubjson.mk",
    "content": "################################################################################\n#\n# python-ubjson\n#\n################################################################################\n\nPYTHON_UBJSON_VERSION = 0.16.1\nPYTHON_UBJSON_SOURCE = py-ubjson-$(PYTHON_UBJSON_VERSION).tar.gz\nPYTHON_UBJSON_SITE = https://files.pythonhosted.org/packages/1d/c7/28220d37e041fe1df03e857fe48f768dcd30cd151480bf6f00da8713214a\nPYTHON_UBJSON_LICENSE = Apache-2.0\nPYTHON_UBJSON_LICENSE_FILES = LICENSE\nPYTHON_UBJSON_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ujson/0001-Add-support-for-aarch64_be-or1k-and-microblazebe.patch",
    "content": "From 768a445f0c28311bf88685bf0bb990505c12fd4c Mon Sep 17 00:00:00 2001\nFrom: Florian Loitsch <florian@loitsch.com>\nDate: Sat, 8 Sep 2018 18:18:15 +0200\nSubject: [PATCH] Add support for aarch64_be, or1k and microblazebe.\n\nFixes #73.\n\n[Retrieved from:\nhttps://github.com/google/double-conversion/commit/768a445f0c28311bf88685bf0bb990505c12fd4c]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n double-conversion/utils.h | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/deps/double-conversion/ouble-conversion/utils.h b/deps/double-conversion/double-conversion/utils.h\nindex 98a2a11..492bc97 100644\n--- a/deps/double-conversion/double-conversion/utils.h\n+++ b/deps/double-conversion/double-conversion/utils.h\n@@ -76,8 +76,9 @@ inline void abort_noreturn() { abort(); }\n     defined(__sparc__) || defined(__sparc) || defined(__s390__) || \\\n     defined(__SH4__) || defined(__alpha__) || \\\n     defined(_MIPS_ARCH_MIPS32R2) || \\\n-    defined(__AARCH64EL__) || defined(__aarch64__) || \\\n-    defined(__riscv)\n+    defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \\\n+    defined(__riscv) || \\\n+    defined(__or1k__)\n #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1\n #elif defined(__mc68000__) || \\\n     defined(__pnacl__) || defined(__native_client__)\n"
  },
  {
    "path": "package/python-ujson/0002-Add-support-of-ARC-architecture.patch",
    "content": "From eafa625a34fd5d8bec18eddfccbca55ce77b4849 Mon Sep 17 00:00:00 2001\nFrom: Alexey Brodkin <abrodkin@synopsys.com>\nDate: Thu, 1 Nov 2018 17:36:17 +0200\nSubject: [PATCH] Add support of ARC architecture (#82)\n\nMore info about ARC architecture is here: [1] & [2].\nWe need ARC supported here for many things like:\n - ICU (see [3])\n - Qt5 etc\n\n[1] https://www.synopsys.com/designware-ip/processor-solutions/arc-processors.html\n[2] https://en.wikipedia.org/wiki/ARC_(processor)\n[3] https://unicode-org.atlassian.net/browse/ICU-20155\n\nFixes #81\n\n[Retrieved from:\nhttps://github.com/google/double-conversion/commit/eafa625a34fd5d8bec18eddfccbca55ce77b4849]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n double-conversion/utils.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/deps/double-conversion/double-conversion/utils.h b/deps/double-conversion/double-conversion/utils.h\nindex 41c5b02..2e1be0d 100644\n--- a/deps/double-conversion/double-conversion/utils.h\n+++ b/deps/double-conversion/double-conversion/utils.h\n@@ -94,7 +94,7 @@ int main(int argc, char** argv) {\n     defined(_MIPS_ARCH_MIPS32R2) || \\\n     defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \\\n     defined(__riscv) || \\\n-    defined(__or1k__)\n+    defined(__or1k__) || defined(__arc__)\n #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1\n #elif defined(__mc68000__) || \\\n     defined(__pnacl__) || defined(__native_client__)\n"
  },
  {
    "path": "package/python-ujson/0003-Add-support-for-microblaze.patch",
    "content": "From 5cc233e98b74c5c370de888198a2b35200d55468 Mon Sep 17 00:00:00 2001\nFrom: Florian Loitsch <florian@toitware.com>\nDate: Sat, 12 Oct 2019 14:35:52 +0200\nSubject: [PATCH] Add support for microblaze.\n\nReally fixes #73.\n[Retrieved (and backported) from:\nhttps://github.com/google/double-conversion/commit/5cc233e98b74c5c370de888198a2b35200d55468]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Changelog                 | 4 ++++\n double-conversion/utils.h | 1 +\n 2 files changed, 5 insertions(+)\n\ndiff --git a/deps/idouble-conversion/double-conversion/utils.h b/deps/double-conversion/double-conversion/utils.h\nindex 1a71df0..221467f 100644\n--- a/deps/doyble-conversion/double-conversion/utils.h\n+++ b/deps/double-conversion/double-conversion/utils.h\n@@ -102,6 +102,7 @@ int main(int argc, char** argv) {\n     defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \\\n     defined(__riscv) || \\\n-    defined(__or1k__) || defined(__arc__)\n+    defined(__or1k__) || defined(__arc__) || \\\n+    defined(__microblaze__)\n #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1\n #elif defined(__mc68000__)\n #undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS\n"
  },
  {
    "path": "package/python-ujson/0004-Pseiderer-add-nios2-and-xtensa-001.patch",
    "content": "From a54561be5588ac9b16d3c20760b9b554168bb8aa Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <pseiderer@users.noreply.github.com>\nDate: Thu, 31 Oct 2019 21:26:27 +0100\nSubject: [PATCH] Pseiderer/add nios2 and xtensa 001 (#119)\n\n* double-conversion: enable for nios2\n\nNios2 supports double conversion, tested using qemu:\n\n./main || echo \"correct\"\ncorrect\nuname -a\nLinux buildroot 4.19.16 #4 Sat Aug 3 14:46:48 CEST 2019 nios2 GNU/Linux\n\nSolves build error\n\nIn file included from double-conversion.h:42:0,\n                 from number_decimalquantity.cpp:19:\ndouble-conversion-utils.h:119:2: error: #error Target architecture was not detected as supported by Double-Conversion.\n #error Target architecture was not detected as supported by Double-Conversion.\n\ndetected by buildroot autobuilders:\nhttp://autobuild.buildroot.net/results/91e/91eaec34708d91f8a05af189243be0b7cabce31b/\n\nPatch sent upstream: https://github.com/unicode-org/icu/pull/725\nBug report: https://unicode-org.atlassian.net/browse/ICU-20751\n\n[Bernd: Fixed path]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Added Changelog entry]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n\n* double-conversion: enable for xtensa\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n\n[Retrieved (dand backported) from:\nhttps://github.com/google/double-conversion/commit/a54561be5588ac9b16d3c20760b9b554168bb8aa]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\nNote:\n\nDouble-conversion tested with:\n\n        $ cat div.c\ndouble Div_double(double x, double y) { return x / y; }\n\n        $ cat main.c\ndouble Div_double(double x, double y);\n\nint main(int argc, char** argv) {\n  double result = Div_double(89255.0, 1e22);\n  if (result == 89255e-22) {\n    printf(\"correct result %e\\n\", result);\n    return 1;\n  } else {\n    printf(\"wrong result %e\\n\", result);\n    return 0;\n  }\n}\n\nTested for xtensa (using qemu_xtensa_lx60_defconfig plus BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE):\n\n        $ ./host/bin/xtensa-buildroot-linux-uclibc-gcc -c div.c\n        $ ./host/bin/xtensa-buildroot-linux-uclibc-gcc -c main.c\n        $ ./host/bin/xtensa-buildroot-linux-uclibc-gcc -o main main.o div.o\n\n        $ ./host/bin/qemu-xtensa -L staging main\ncorrect result 8.925500e-18\n---\n Changelog                 | 4 ++++\n double-conversion/utils.h | 3 ++-\n 2 files changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/deps/double-conversion/double-conversion/utils.h b/deps/double-conversion/double-conversion/utils.h\nindex 221467f..98ec28b 100644\n--- a/deps/double-conversion/double-conversion/utils.h\n+++ b/deps/double-conversion/double-conversion/utils.h\n@@ -94,6 +94,7 @@ int main(int argc, char** argv) {\n     defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \\\n     defined(__hppa__) || defined(__ia64__) || \\\n     defined(__mips__) || \\\n+    defined(__nios2__) || \\\n     defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \\\n     defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \\\n     defined(__sparc__) || defined(__sparc) || defined(__s390__) || \\\n@@ -102,7 +103,7 @@ int main(int argc, char** argv) {\n     defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \\\n     defined(__riscv) || defined(__e2k__) || \\\n     defined(__or1k__) || defined(__arc__) || \\\n-    defined(__microblaze__)\n+    defined(__microblaze__) || defined(__XTENSA__)\n #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1\n #elif defined(__mc68000__)\n #undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS\n"
  },
  {
    "path": "package/python-ujson/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_UJSON\n\tbool \"python-ujson\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  UltraJSON is an ultra fast JSON encoder and decoder written\n\t  in pure C with bindings for Python 3.\n\n\t  https://pypi.python.org/pypi/ujson\n"
  },
  {
    "path": "package/python-ujson/python-ujson.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ujson/json\nmd5  9a90e2e9f1d465c2121b8d10f837f53a  ujson-4.2.0.tar.gz\nsha256  fffe509f556861c7343c6cba57ed05fe7bcf4b48a934a5b946ccb45428cf8883  ujson-4.2.0.tar.gz\n# Locally computed sha256 checksums\nsha256  6a00a8f8b4050303368b694147bde1aed9c96bdff869c181dbbf3ccb784a1501  LICENSE.txt\n"
  },
  {
    "path": "package/python-ujson/python-ujson.mk",
    "content": "################################################################################\n#\n# python-ujson\n#\n################################################################################\n\nPYTHON_UJSON_VERSION = 4.2.0\nPYTHON_UJSON_SOURCE = ujson-$(PYTHON_UJSON_VERSION).tar.gz\nPYTHON_UJSON_SITE = https://files.pythonhosted.org/packages/df/69/e8f615e1a779e2d2d23d29d56dc55bbb1db2a828f0ef36d10bc697d63968\nPYTHON_UJSON_SETUP_TYPE = setuptools\nPYTHON_UJSON_LICENSE = BSD-3-Clause\nPYTHON_UJSON_LICENSE_FILES = LICENSE.txt\nPYTHON_UJSON_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-unittest-xml-reporting/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_UNITTEST_XML_REPORTING\n\tbool \"python-unittest-xml-reporting\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT\n\thelp\n\t  unittest-based test runner with Ant/JUnit like XML\n\t  reporting.\n\n\t  http://github.com/xmlrunner/unittest-xml-reporting/\n"
  },
  {
    "path": "package/python-unittest-xml-reporting/python-unittest-xml-reporting.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/unittest-xml-reporting/json\nmd5  474cd89f9609828ef6039a0f00afd9db  unittest-xml-reporting-3.0.4.tar.gz\nsha256  984cebba69e889401bfe3adb9088ca376b3a1f923f0590d005126c1bffd1a695  unittest-xml-reporting-3.0.4.tar.gz\n# Locally calculated\nsha256  0596648105bee470f9cafd62753b931efe52392096439d88e2564cf7d7cf0e68  LICENSE\n"
  },
  {
    "path": "package/python-unittest-xml-reporting/python-unittest-xml-reporting.mk",
    "content": "################################################################################\n#\n# python-unittest-xml-reporting\n#\n################################################################################\n\nPYTHON_UNITTEST_XML_REPORTING_VERSION = 3.0.4\nPYTHON_UNITTEST_XML_REPORTING_SOURCE = unittest-xml-reporting-$(PYTHON_UNITTEST_XML_REPORTING_VERSION).tar.gz\nPYTHON_UNITTEST_XML_REPORTING_SITE = https://files.pythonhosted.org/packages/bc/09/677086169c8e302b614de7d4a97c45c4446a382f31cc010fb31177258508\n# License file missing in Pypi tarball, download separately. Issue\n# reported at\n# https://github.com/xmlrunner/unittest-xml-reporting/issues/259\nPYTHON_UNITTEST_XML_REPORTING_EXTRA_DOWNLOADS = https://raw.githubusercontent.com/xmlrunner/unittest-xml-reporting/$(PYTHON_UNITTEST_XML_REPORTING_VERSION)/LICENSE\nPYTHON_UNITTEST_XML_REPORTING_SETUP_TYPE = setuptools\nPYTHON_UNITTEST_XML_REPORTING_LICENSE = BSD-2-Clause\nPYTHON_UNITTEST_XML_REPORTING_LICENSE_FILES = LICENSE\n\ndefine PYTHON_UNITTEST_XML_REPORTING_ADD_LICENSE_FILE\n\t$(INSTALL) -D -m 0644 $(PYTHON_UNITTEST_XML_REPORTING_DL_DIR)/LICENSE $(@D)/LICENSE\nendef\nPYTHON_UNITTEST_XML_REPORTING_POST_EXTRACT_HOOKS += PYTHON_UNITTEST_XML_REPORTING_ADD_LICENSE_FILE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-unqlite/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_UNQLITE\n\tbool \"python-unqlite\"\n\tselect BR2_PACKAGE_HOST_PYTHON_CYTHON\n\thelp\n\t  Fast Python bindings for UnQLite, a lightweight, embedded NoSQL\n\t  database and JSON document store.\n\n\t  https://github.com/coleifer/unqlite-python\n"
  },
  {
    "path": "package/python-unqlite/python-unqlite.hash",
    "content": "sha256  eba7d4bab1028b9a1e22ebef4f39147dd6f6ed64ab6e62872d602cce9ef88bc7  unqlite-0.9.1.tar.gz\n"
  },
  {
    "path": "package/python-unqlite/python-unqlite.mk",
    "content": "################################################################################\n#\n# python-unqlite\n#\n################################################################################\n\nPYTHON_UNQLITE_VERSION = 0.9.1\nPYTHON_UNQLITE_SOURCE = unqlite-$(PYTHON_UNQLITE_VERSION).tar.gz\nPYTHON_UNQLITE_SITE = https://files.pythonhosted.org/packages/a9/f8/2d1aa85426036b2582ed190e41dcdf3305d8f375778f9acea60a5bbcb0e0\nPYTHON_UNQLITE_LICENSE = MIT\nPYTHON_UNQLITE_LICENSE_FILES = LICENSE\nPYTHON_UNQLITE_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-urllib3/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_URLLIB3\n\tbool \"python-urllib3\"\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  Python HTTP library with thread-safe connection pooling, file\n\t  post support, sanity friendly, and more.\n\n\t  http://urllib3.readthedocs.org/\n"
  },
  {
    "path": "package/python-urllib3/python-urllib3.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/urllib3/json\nmd5  e0051a87a956e618a6bb514a07fa7773  urllib3-1.26.7.tar.gz\nsha256  4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece  urllib3-1.26.7.tar.gz\n# Locally computed sha256 checksums\nsha256  c37bf186e27cf9dbe9619e55edfe3cea7b30091ceb3da63c7dacbe0e6d77907b  LICENSE.txt\n"
  },
  {
    "path": "package/python-urllib3/python-urllib3.mk",
    "content": "################################################################################\n#\n# python-urllib3\n#\n################################################################################\n\nPYTHON_URLLIB3_VERSION = 1.26.7\nPYTHON_URLLIB3_SOURCE = urllib3-$(PYTHON_URLLIB3_VERSION).tar.gz\nPYTHON_URLLIB3_SITE = https://files.pythonhosted.org/packages/80/be/3ee43b6c5757cabea19e75b8f46eaf05a2f5144107d7db48c7cf3a864f73\nPYTHON_URLLIB3_LICENSE = MIT\nPYTHON_URLLIB3_LICENSE_FILES = LICENSE.txt\nPYTHON_URLLIB3_CPE_ID_VENDOR = python\nPYTHON_URLLIB3_CPE_ID_PRODUCT = urllib3\nPYTHON_URLLIB3_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-urwid/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_URWID\n\tbool \"python-urwid\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\thelp\n\t  Urwid is a console user interface library for Python\n\n\t  http://urwid.org/\n"
  },
  {
    "path": "package/python-urwid/python-urwid.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/urwid/json\nmd5  f7f4e6bed9ba38965dbd619520f39287  urwid-2.1.2.tar.gz\nsha256  588bee9c1cb208d0906a9f73c613d2bd32c3ed3702012f51efe318a3f2127eae  urwid-2.1.2.tar.gz\n# Locally computed sha256 checksums\nsha256  36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89  COPYING\n"
  },
  {
    "path": "package/python-urwid/python-urwid.mk",
    "content": "################################################################################\n#\n# python-urwid\n#\n################################################################################\n\nPYTHON_URWID_VERSION = 2.1.2\nPYTHON_URWID_SOURCE = urwid-$(PYTHON_URWID_VERSION).tar.gz\nPYTHON_URWID_SITE = https://files.pythonhosted.org/packages/94/3f/e3010f4a11c08a5690540f7ebd0b0d251cc8a456895b7e49be201f73540c\nPYTHON_URWID_LICENSE = LGPL-2.1+\nPYTHON_URWID_LICENSE_FILES = COPYING\nPYTHON_URWID_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-uvloop/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_UVLOOP\n\tbool \"python-uvloop\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv\n\tdepends on BR2_USE_MMU # libuv\n\tdepends on !BR2_STATIC_LIBS # libuv\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv\n\tselect BR2_PACKAGE_LIBUV\n\tselect BR2_PACKAGE_PYTHON3_SSL\n\thelp\n\t  Fast implementation of asyncio event loop on top of libuv.\n\n\t  http://github.com/MagicStack/uvloop\n\ncomment \"python-uvloop needs a toolchain w/ NPTL, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/python-uvloop/python-uvloop.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/uvloop/json\nmd5  79f9a7f3cfe154daf0aade23555dc9d4  uvloop-0.16.0.tar.gz\nsha256  f74bc20c7b67d1c27c72601c78cf95be99d5c2cdd4514502b4f3eb0933ff1228  uvloop-0.16.0.tar.gz\n# Locally computed sha256 checksums\nsha256  2fdc436a67077941295c58647f521fbef8f50e46db0970552fa1a4dd8ae261c6  LICENSE-APACHE\nsha256  9185f3c77e9f6ef8859a6ba4c94128ac1329876be3e813aad32d7645e51ae409  LICENSE-MIT\n"
  },
  {
    "path": "package/python-uvloop/python-uvloop.mk",
    "content": "################################################################################\n#\n# python-uvloop\n#\n################################################################################\n\nPYTHON_UVLOOP_VERSION = 0.16.0\nPYTHON_UVLOOP_SOURCE = uvloop-$(PYTHON_UVLOOP_VERSION).tar.gz\nPYTHON_UVLOOP_SITE = https://files.pythonhosted.org/packages/ab/d9/22bbffa8f8d7e075ccdb29e8134107adfb4710feb10039f9d357db8b589c\nPYTHON_UVLOOP_SETUP_TYPE = setuptools\nPYTHON_UVLOOP_LICENSE = Apache-2.0, MIT\nPYTHON_UVLOOP_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT\nPYTHON_UVLOOP_BUILD_OPTS = build_ext --inplace --use-system-libuv\nPYTHON_UVLOOP_INSTALL_TARGET_OPTS = build_ext --inplace --use-system-libuv\nPYTHON_UVLOOP_DEPENDENCIES = libuv\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-validators/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_VALIDATORS\n\tbool \"python-validators\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_DECORATOR # runtime\n\thelp\n\t  Python Data Validation for Humans.\n\n\t  https://github.com/kvesteri/validators\n"
  },
  {
    "path": "package/python-validators/python-validators.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/validators/json\nmd5  2f0446f2a15aa694be0cfd8728eb4444  validators-0.15.0.tar.gz\nsha256  31e8bb01b48b48940a021b8a9576b840f98fa06b91762ef921d02cb96d38727a  validators-0.15.0.tar.gz\n# Locally computed sha256 checksums\nsha256  a7fd9d761c7ca1c6508b9baf030f6e21f5752d1caea3e49a270634aa9ef01e6f  LICENSE\n"
  },
  {
    "path": "package/python-validators/python-validators.mk",
    "content": "################################################################################\n#\n# python-validators\n#\n################################################################################\n\nPYTHON_VALIDATORS_VERSION = 0.15.0\nPYTHON_VALIDATORS_SOURCE = validators-$(PYTHON_VALIDATORS_VERSION).tar.gz\nPYTHON_VALIDATORS_SITE = https://files.pythonhosted.org/packages/c4/4a/4f9c892f9a9f08ee5f99c32bbd4297499099c2c5f7eff8c617a57d31a7d8\nPYTHON_VALIDATORS_SETUP_TYPE = setuptools\nPYTHON_VALIDATORS_LICENSE = MIT\nPYTHON_VALIDATORS_LICENSE_FILES = LICENSE\nPYTHON_VALIDATORS_CPE_ID_VENDOR = validators_project\nPYTHON_VALIDATORS_CPE_ID_PRODUCT = validators\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-vcversioner/python-vcversioner.hash",
    "content": "# md5 from https://pypi.python.org/pypi/vcversioner/json, sha256 locally computed\nmd5\taab6ef5e0cf8614a1b1140ed5b7f107d  vcversioner-2.16.0.0.tar.gz\nsha256\tdae60c17a479781f44a4010701833f1829140b1eeccd258762a74974aa06e19b  vcversioner-2.16.0.0.tar.gz\n"
  },
  {
    "path": "package/python-vcversioner/python-vcversioner.mk",
    "content": "################################################################################\n#\n# python-vcversioner\n#\n################################################################################\n\nPYTHON_VCVERSIONER_VERSION = 2.16.0.0\nPYTHON_VCVERSIONER_SOURCE = vcversioner-$(PYTHON_VCVERSIONER_VERSION).tar.gz\nPYTHON_VCVERSIONER_SITE = https://pypi.python.org/packages/c5/cc/33162c0a7b28a4d8c83da07bc2b12cee58c120b4a9e8bba31c41c8d35a16\nPYTHON_VCVERSIONER_SETUP_TYPE = setuptools\nPYTHON_VCVERSIONER_LICENSE = ISC\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-versiontools/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_VERSIONTOOLS\n\tbool \"python-versiontools\"\n\thelp\n\t  Smart replacement for plain tuple used in __version__.\n\n\t  https://pypi.python.org/pypi/versiontools\n"
  },
  {
    "path": "package/python-versiontools/python-versiontools.hash",
    "content": "# locally computed\nsha256  a969332887a18a9c98b0df0ea4d4ca75972f24ca94f06fb87d591377e83414f6  versiontools-1.9.1.tar.gz\n"
  },
  {
    "path": "package/python-versiontools/python-versiontools.mk",
    "content": "################################################################################\n#\n# python-versiontools\n#\n################################################################################\n\nPYTHON_VERSIONTOOLS_VERSION = 1.9.1\nPYTHON_VERSIONTOOLS_SOURCE = versiontools-$(PYTHON_VERSIONTOOLS_VERSION).tar.gz\nPYTHON_VERSIONTOOLS_SITE = https://pypi.python.org/packages/source/v/versiontools\nPYTHON_VERSIONTOOLS_SETUP_TYPE = setuptools\nPYTHON_VERSIONTOOLS_LICENSE = LGPL-3.0\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-visitor/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_VISITOR\n\tbool \"python-visitor\"\n\thelp\n\t  A tiny pythonic visitor implementation.\n\n\t  http://github.com/mbr/visitor\n"
  },
  {
    "path": "package/python-visitor/python-visitor.hash",
    "content": "# md5 from https://pypi.python.org/pypi/visitor/json, sha256 locally computed\nmd5    94a024ed0ec1b02b4497c15267d319ca  visitor-0.1.3.tar.gz\nsha256 2c737903b2b6864ebc6167eef7cf3b997126f1aa94bdf590f90f1436d23e480a  visitor-0.1.3.tar.gz\nsha256 184d1ebb65da97ada36447f3c028f2fd4890b874f17b18c023ce200dd96639af  LICENSE\n"
  },
  {
    "path": "package/python-visitor/python-visitor.mk",
    "content": "################################################################################\n#\n# python-visitor\n#\n################################################################################\n\nPYTHON_VISITOR_VERSION = 0.1.3\nPYTHON_VISITOR_SOURCE = visitor-$(PYTHON_VISITOR_VERSION).tar.gz\nPYTHON_VISITOR_SITE = https://pypi.python.org/packages/d7/58/785fcd6de4210049da5fafe62301b197f044f3835393594be368547142b0\nPYTHON_VISITOR_SETUP_TYPE = setuptools\nPYTHON_VISITOR_LICENSE = MIT\nPYTHON_VISITOR_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-watchdog/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WATCHDOG\n\tbool \"python-watchdog\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_ARGH # runtime\n\tselect BR2_PACKAGE_PYTHON_PATHTOOLS # runtime\n\tselect BR2_PACKAGE_PYTHON_PYYAML # runtime\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\thelp\n\t  Python API and shell utilities to monitor file system events.\n\n\t  http://github.com/gorakhargosh/watchdog\n"
  },
  {
    "path": "package/python-watchdog/python-watchdog.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/watchdog/json\nmd5  6aac660b0f3358c63658806a0579b832  watchdog-2.1.6.tar.gz\nsha256  a36e75df6c767cbf46f61a91c70b3ba71811dfa0aca4a324d9407a06a8b7a2e7  watchdog-2.1.6.tar.gz\n# Locally computed sha256 checksums\nsha256  02c8760f988a76e92a9d6cb525456a86f7b0fd1953870dd491de5955cb974d41  COPYING\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/python-watchdog/python-watchdog.mk",
    "content": "################################################################################\n#\n# python-watchdog\n#\n################################################################################\n\nPYTHON_WATCHDOG_VERSION = 2.1.6\nPYTHON_WATCHDOG_SOURCE = watchdog-$(PYTHON_WATCHDOG_VERSION).tar.gz\nPYTHON_WATCHDOG_SITE = https://files.pythonhosted.org/packages/e8/a8/fc4edd7d768361b00ea850e5310211d157df6b5a1db6148dd434e787d898\nPYTHON_WATCHDOG_SETUP_TYPE = setuptools\nPYTHON_WATCHDOG_LICENSE = Apache-2.0\nPYTHON_WATCHDOG_LICENSE_FILES = LICENSE COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-wcwidth/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WCWIDTH\n\tbool \"python-wcwidth\"\n\thelp\n\t  This library measures number of Terminal column cells of\n\t  wide-character codes.\n\n\t  https://github.com/jquast/wcwidth\n"
  },
  {
    "path": "package/python-wcwidth/python-wcwidth.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/wcwidth/json\nmd5  b32584cd6084b4a8c81df13a2a6b4351  wcwidth-0.1.9.tar.gz\nsha256  ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1  wcwidth-0.1.9.tar.gz\n# Locally computed\nsha256  0eddcc52cd3ef5d30798b8d43a14d3f0f1dcf0a6e4c1d0f2e177c44ce85bb69c  LICENSE.txt\n"
  },
  {
    "path": "package/python-wcwidth/python-wcwidth.mk",
    "content": "################################################################################\n#\n# python-wcwidth\n#\n################################################################################\n\nPYTHON_WCWIDTH_VERSION = 0.1.9\nPYTHON_WCWIDTH_SOURCE = wcwidth-$(PYTHON_WCWIDTH_VERSION).tar.gz\nPYTHON_WCWIDTH_SITE = https://pypi.python.org/packages/25/9d/0acbed6e4a4be4fc99148f275488580968f44ddb5e69b8ceb53fc9df55a0\nPYTHON_WCWIDTH_SETUP_TYPE = setuptools\nPYTHON_WCWIDTH_LICENSE = MIT\nPYTHON_WCWIDTH_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-web2py/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WEB2PY\n\tbool \"python-web2py\"\n\tselect BR2_PACKAGE_PYTHON_PYDAL # runtime\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime\n\tselect BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime\n\tselect BR2_PACKAGE_PYTHON_SQLITE if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_SQLITE if BR2_PACKAGE_PYTHON3 # runtime\n\tselect BR2_PACKAGE_PYTHON_YATL # runtime\n\thelp\n\t  web2py is a free open source full-stack framework for rapid\n\t  development of fast, scalable, secure and portable\n\t  database-driven web-based applications.\n\n\t  http://web2py.com\n\nif BR2_PACKAGE_PYTHON_WEB2PY\n\nconfig BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN\n\tbool \"install admin panel application\"\n\tdefault y\n\thelp\n\t  This option install web2py admin panel application.\n\t  It can be removed to save space on embedded systems.\n\nif BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN\n\nconfig BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD\n\tstring \"admin panel password\"\n\tdefault web2py\n\thelp\n\t  Set the admin panel password.\n\nendif\n\nendif\n"
  },
  {
    "path": "package/python-web2py/S51web2py",
    "content": "#!/bin/sh\n\ncase \"$1\" in\n\tstart)\n\t\tprintf \"Starting web2py: \"\n\t\tstart-stop-daemon -S -q -m -p /run/web2py.pid \\\n\t\t\t-c www-data \\\n\t\t\t-b -x /var/www/web2py/web2py.py \\\n\t\t\t-- --nogui -a '\"<recycle>\"' -i 0.0.0.0 -p 8000\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping web2py: \"\n\t\tstart-stop-daemon -K -q -p /run/web2py.pid\n\t\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t\t;;\n\trestart)\n\t\t\"$0\" stop\n\t\tsleep 1\n\t\t\"$0\" start\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\t;;\nesac\n"
  },
  {
    "path": "package/python-web2py/python-web2py.hash",
    "content": "# sha256 locally computed\nsha256 44556376468139de874e9c29c9ef56e60ecd5f7536c7bee46d74b1f9d4178825  python-web2py-2.21.1.tar.gz\nsha256 2aae96826184a492bc799add49aed7b29036e7aba2d2294fb65053bd30fe55fe  LICENSE\n"
  },
  {
    "path": "package/python-web2py/python-web2py.mk",
    "content": "################################################################################\n#\n# python-web2py\n#\n################################################################################\n\nPYTHON_WEB2PY_VERSION = 2.21.1\nPYTHON_WEB2PY_SITE = $(call github,web2py,web2py,v$(PYTHON_WEB2PY_VERSION))\nPYTHON_WEB2PY_LICENSE = LGPL-3.0\nPYTHON_WEB2PY_LICENSE_FILES = LICENSE\nPYTHON_WEB2PY_CPE_ID_VENDOR = web2py\nPYTHON_WEB2PY_CPE_ID_PRODUCT = web2py\nPYTHON_WEB2PY_DEPENDENCIES = $(if $(BR2_PACKAGE_PYTHON3),host-python3 python3,host-python python) \\\n\thost-python-pydal host-python-yatl\n\nPYTHON_WEB2PY_EXCLUSIONS = \\\n\twelcome.w2p \\\n\tapplications/examples \\\n\tapplications/welcome \\\n\tdeposit \\\n\tdocs \\\n\texamples \\\n\textras \\\n\thandlers \\\n\tscripts \\\n\tABOUT \\\n\tanyserver.py \\\n\tCHANGELOG \\\n\tMakefile \\\n\tMANIFEST.in \\\n\tREADME.markdown \\\n\tsetup.py \\\n\ttox.ini\n\ndefine PYTHON_WEB2PY_GENERATE_PASSWORD\n\t$(HOST_DIR)/bin/python -c 'import os; \\\n\t\tos.chdir(\"$(@D)\"); \\\n\t\tfrom gluon.main import save_password; \\\n\t\tsave_password($(BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD),8000)'\nendef\n\nifeq ($(BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN),y)\nPYTHON_WEB2PY_POST_BUILD_HOOKS += PYTHON_WEB2PY_GENERATE_PASSWORD\nelse\nPYTHON_WEB2PY_EXCLUSIONS += applications/admin\nendif\n\ndefine PYTHON_WEB2PY_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/var/www/web2py\n\trsync -a $(@D)/ $(TARGET_DIR)/var/www/web2py/ \\\n\t\t$(addprefix --exclude=,$(PYTHON_WEB2PY_EXCLUSIONS))\nendef\n\ndefine PYTHON_WEB2PY_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/python-web2py/S51web2py \\\n\t\t$(TARGET_DIR)/etc/init.d/S51web2py\nendef\n\ndefine PYTHON_WEB2PY_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/python-web2py/web2py.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/web2py.service\nendef\n\n# www-data user and group are used for web2py. Because these user and group\n# are already set by buildroot, it is not necessary to redefine them.\n# See system/skeleton/etc/passwd\n#   username: www-data    uid: 33\n#   groupname: www-data   gid: 33\n#\n# So, we just need to create the directories used by web2py with the right\n# ownership.\ndefine PYTHON_WEB2PY_PERMISSIONS\n\t/var/www/web2py r 750 33 33 - - - - -\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/python-web2py/web2py.service",
    "content": "[Unit]\nDescription=Web2py daemon\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=/var/www/web2py/web2py.py --nogui -a '<recycle>' -i 0.0.0.0 -p 8000\nUser=www-data\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/python-webargs/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WEBARGS\n\tbool \"python-webargs\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\thelp\n\t  webargs is a Python library for parsing and validating HTTP request objects, with built-in support for popular web frameworks, including Flask, Django, Bottle, Tornado, Pyramid, webapp2, Falcon, and aiohttp.\n\n\t  https://github.com/marshmallow-code/webargs\n"
  },
  {
    "path": "package/python-webargs/python-webargs.hash",
    "content": "sha256\t888f3e7e0b74b760732388da4e73640fcab452045d78268c31fb610b3cb397b9  webargs-5.3.1.tar.gz\n\n"
  },
  {
    "path": "package/python-webargs/python-webargs.mk",
    "content": "################################################################################\n#\n# python-webargs\n#\n################################################################################\n\nPYTHON_WEBARGS_VERSION = 5.3.1\nPYTHON_WEBARGS_SOURCE = webargs-$(PYTHON_WEBARGS_VERSION).tar.gz\nPYTHON_WEBARGS_SITE = https://files.pythonhosted.org/packages/b2/df/156e105358c06b6f76a17cb3ee3eb82789a3abbc482a5a2f8b576e81112c\nPYTHON_WEBARGS_SETUP_TYPE = setuptools\nPYTHON_WEBARGS_LICENSE = Apache-2.0\nPYTHON_WEBARGS_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-webencodings/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WEBENCODINGS\n\tbool \"python-webencodings\"\n\thelp\n\t  Character encoding aliases for legacy web content.\n\n\t  https://github.com/SimonSapin/python-webencodings\n"
  },
  {
    "path": "package/python-webencodings/python-webencodings.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/webencodings/json\nmd5\t32f6e261d52e57bf7e1c4d41546d15b8  webencodings-0.5.1.tar.gz\nsha256\tb36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923  webencodings-0.5.1.tar.gz\n# Locally computed sha256 checksumms\nsha256\tc27693b0174d6d04dafd0242857ae72763f5404b675972c777fd865bc3c0abe1  PKG-INFO\n"
  },
  {
    "path": "package/python-webencodings/python-webencodings.mk",
    "content": "################################################################################\n#\n# python-webencodings\n#\n################################################################################\n\nPYTHON_WEBENCODINGS_VERSION = 0.5.1\nPYTHON_WEBENCODINGS_SOURCE = webencodings-$(PYTHON_WEBENCODINGS_VERSION).tar.gz\nPYTHON_WEBENCODINGS_SITE = https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47\nPYTHON_WEBENCODINGS_SETUP_TYPE = setuptools\nPYTHON_WEBENCODINGS_LICENSE = BSD-3-Clause\nPYTHON_WEBENCODINGS_LICENSE_FILES = PKG-INFO\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-webob/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WEBOB\n\tbool \"python-webob\"\n\tselect BR2_PACKAGE_PYTHON_HASHLIB if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  WSGI request and response object.\n\n\t  http://webob.org/\n"
  },
  {
    "path": "package/python-webob/python-webob.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/webob/json\nmd5  10191c69fa5a2c00f3b9abfb8937b415  WebOb-1.8.7.tar.gz\nsha256  b64ef5141be559cfade448f044fa45c2260351edcb6a8ef6b7e00c7dcef0c323  WebOb-1.8.7.tar.gz\n# Locally computed sha256 checksums\nsha256  27bc4919e7e9e6b6cda40644517ca74d32203e32fba89ef832aba1ed93e457b3  docs/license.txt\n"
  },
  {
    "path": "package/python-webob/python-webob.mk",
    "content": "################################################################################\n#\n# python-webob\n#\n################################################################################\n\nPYTHON_WEBOB_VERSION = 1.8.7\nPYTHON_WEBOB_SOURCE = WebOb-$(PYTHON_WEBOB_VERSION).tar.gz\nPYTHON_WEBOB_SITE = https://files.pythonhosted.org/packages/c7/45/ee5f034fb4ebe3236fa49e5a4fcbc54444dd22ecf33079cf56f9606d479d\nPYTHON_WEBOB_SETUP_TYPE = setuptools\nPYTHON_WEBOB_LICENSE = MIT\nPYTHON_WEBOB_LICENSE_FILES = docs/license.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-webpy/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WEBPY\n\tbool \"python-webpy\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-cheroot\n\tselect BR2_PACKAGE_PYTHON_CHEROOT # runtime\n\tselect BR2_PACKAGE_PYTHON_MARKDOWN # runtime\n\thelp\n\t  web.py is a web framework for Python that is as simple as it\n\t  is powerful.\n\n\t  http://webpy.org/\n"
  },
  {
    "path": "package/python-webpy/python-webpy.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/web.py/json\nmd5\t4e7ec89e7ae1e938d01fff01ba752606  web.py-0.40.tar.gz\nsha256\tdc5e42ffbc42d77d07f75b7acca9975a3368ae609774e49ddebb497a784131f3  web.py-0.40.tar.gz\n# Locally computed sha256 checksums\nsha256\t791bf6e9419435f114a19fc6519ff33738021eb3c41b18490943230ab0894df9  LICENSE.txt\n"
  },
  {
    "path": "package/python-webpy/python-webpy.mk",
    "content": "################################################################################\n#\n# python-webpy\n#\n################################################################################\n\nPYTHON_WEBPY_VERSION = 0.40\nPYTHON_WEBPY_SOURCE = web.py-$(PYTHON_WEBPY_VERSION).tar.gz\nPYTHON_WEBPY_SITE = https://files.pythonhosted.org/packages/e3/23/ed84b174add09153329c6357984c8433e2f350de91c3859fa48c3cdbf7dc\nPYTHON_WEBPY_SETUP_TYPE = setuptools\nPYTHON_WEBPY_LICENSE = Public Domain\nPYTHON_WEBPY_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-websocket-client/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WEBSOCKET_CLIENT\n\tbool \"python-websocket-client\"\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\tselect BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  WebSocket client for python. hybi13 is supported.\n\n\t  https://github.com/websocket-client/websocket-client.git\n"
  },
  {
    "path": "package/python-websocket-client/python-websocket-client.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/websocket-client/json\nmd5  8fc86b13dc97dc032855c6257f9168df  websocket_client-0.58.0.tar.gz\nsha256  63509b41d158ae5b7f67eb4ad20fecbb4eee99434e73e140354dc3ff8e09716f  websocket_client-0.58.0.tar.gz\n# Locally computed sha256 checksums\nsha256  7c6699c75f87b52bdc542db26d6b1b92892577cda46e20eceb79e2790a1c291b  LICENSE\n"
  },
  {
    "path": "package/python-websocket-client/python-websocket-client.mk",
    "content": "################################################################################\n#\n# python-websocket-client\n#\n################################################################################\n\nPYTHON_WEBSOCKET_CLIENT_VERSION = 0.58.0\nPYTHON_WEBSOCKET_CLIENT_SOURCE = websocket_client-$(PYTHON_WEBSOCKET_CLIENT_VERSION).tar.gz\nPYTHON_WEBSOCKET_CLIENT_SITE = https://files.pythonhosted.org/packages/4a/df/112c278ba1ead96786d24d973429ce1e1a2c86b9843183d9f8ef8c6330d7\nPYTHON_WEBSOCKET_CLIENT_SETUP_TYPE = setuptools\nPYTHON_WEBSOCKET_CLIENT_LICENSE = LGPL-2.1+\nPYTHON_WEBSOCKET_CLIENT_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-websockets/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WEBSOCKETS\n\tbool \"python-websockets\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON3_ZLIB\n\tselect BR2_PACKAGE_PYTHON3_SSL\n\thelp\n\t  An implementation of the WebSocket Protocol (RFC 6455 &\n\t  7692).\n\n\t  https://github.com/aaugustin/websockets\n"
  },
  {
    "path": "package/python-websockets/python-websockets.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/websockets/json\nmd5  ebb9e4930bf2c35cd3723be0dfa83d89  websockets-10.0.tar.gz\nsha256  c4fc9a1d242317892590abe5b61a9127f1a61740477bfb121743f290b8054002  websockets-10.0.tar.gz\n# Locally computed sha256 checksums\nsha256  daeca11bf3608da35e546ea0c32be18958a8be1441fa3de9cbd20e4c8bc718e6  LICENSE\n"
  },
  {
    "path": "package/python-websockets/python-websockets.mk",
    "content": "################################################################################\n#\n# python-websockets\n#\n################################################################################\n\nPYTHON_WEBSOCKETS_VERSION = 10.0\nPYTHON_WEBSOCKETS_SOURCE = websockets-$(PYTHON_WEBSOCKETS_VERSION).tar.gz\nPYTHON_WEBSOCKETS_SITE = https://files.pythonhosted.org/packages/1c/f4/61aee1eb4baadf8477fb7f3bc6b04a50fe683ef8ad2f60282806821e4b3b\nPYTHON_WEBSOCKETS_SETUP_TYPE = setuptools\nPYTHON_WEBSOCKETS_LICENSE = BSD-3-Clause\nPYTHON_WEBSOCKETS_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-werkzeug/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WERKZEUG\n\tbool \"python-werkzeug\"\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  Werkzeug is a WSGI utility library for Python. It's widely\n\t  used and BSD licensed.\n\n\t  http://werkzeug.pocoo.org/\n"
  },
  {
    "path": "package/python-werkzeug/python-werkzeug.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/werkzeug/json\nmd5  5d499cfdd30de5d9c946994783772efd  Werkzeug-1.0.1.tar.gz\nsha256  6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c  Werkzeug-1.0.1.tar.gz\n# Locally computed sha256 checksums\nsha256  3b49dcee4105eb37bac10faf1be260408fe85d252b8e9df2e0979fc1e094437b  LICENSE.rst\n"
  },
  {
    "path": "package/python-werkzeug/python-werkzeug.mk",
    "content": "################################################################################\n#\n# python-werkzeug\n#\n################################################################################\n\nPYTHON_WERKZEUG_VERSION = 1.0.1\nPYTHON_WERKZEUG_SOURCE = Werkzeug-$(PYTHON_WERKZEUG_VERSION).tar.gz\nPYTHON_WERKZEUG_SITE = https://files.pythonhosted.org/packages/10/27/a33329150147594eff0ea4c33c2036c0eadd933141055be0ff911f7f8d04\nPYTHON_WERKZEUG_SETUP_TYPE = setuptools\nPYTHON_WERKZEUG_LICENSE = BSD-3-Clause\nPYTHON_WERKZEUG_LICENSE_FILES = LICENSE.rst\nPYTHON_WERKZEUG_CPE_ID_VENDOR = palletsprojects\nPYTHON_WERKZEUG_CPE_ID_PRODUCT = werkzeug\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-whoosh/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WHOOSH\n\tbool \"python-whoosh\"\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  Whoosh is a fast, pure-Python full text indexing, search and\n\t  spell checking library.\n\n\t  https://pypi.python.org/pypi/Whoosh/\n"
  },
  {
    "path": "package/python-whoosh/python-whoosh.hash",
    "content": "# md5 from https://pypi.python.org/pypi/whoosh/json\nmd5 c2710105f20b3e29936bd2357383c325 Whoosh-2.7.4.tar.gz\n# Locally computed\nsha256  7ca5633dbfa9e0e0fa400d3151a8a0c4bec53bd2ecedc0a67705b17565c31a83  Whoosh-2.7.4.tar.gz\nsha256  464ef68037a0e5545e4716b4ff99f3f85ca89cf9e9a7ecfd7a02039ba1c34a90  LICENSE.txt\n"
  },
  {
    "path": "package/python-whoosh/python-whoosh.mk",
    "content": "################################################################################\n#\n# python-whoosh\n#\n################################################################################\n\nPYTHON_WHOOSH_VERSION = 2.7.4\nPYTHON_WHOOSH_SOURCE = Whoosh-$(PYTHON_WHOOSH_VERSION).tar.gz\nPYTHON_WHOOSH_SITE = https://pypi.python.org/packages/25/2b/6beed2107b148edc1321da0d489afc4617b9ed317ef7b72d4993cad9b684\nPYTHON_WHOOSH_SETUP_TYPE = setuptools\nPYTHON_WHOOSH_LICENSE = BSD-3-Clause\nPYTHON_WHOOSH_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-wrapt/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WRAPT\n\tbool \"python-wrapt\"\n\thelp\n\t  Module for decorators, wrappers and monkey patching.\n\n\t  https://github.com/GrahamDumpleton/wrapt\n"
  },
  {
    "path": "package/python-wrapt/python-wrapt.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/wrapt/json\nmd5  6d56ed0de4336462a73350341462f45e  wrapt-1.12.1.tar.gz\nsha256  b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7  wrapt-1.12.1.tar.gz\n# Locally computed sha256 checksums\nsha256  e37c13f84fb3c9a54161b0fcf75f4d302fb86ce42cd6106147bda79e4197d9f2  LICENSE\n"
  },
  {
    "path": "package/python-wrapt/python-wrapt.mk",
    "content": "################################################################################\n#\n# python-wrapt\n#\n################################################################################\n\nPYTHON_WRAPT_VERSION = 1.12.1\nPYTHON_WRAPT_SOURCE = wrapt-$(PYTHON_WRAPT_VERSION).tar.gz\nPYTHON_WRAPT_SITE = https://files.pythonhosted.org/packages/82/f7/e43cefbe88c5fd371f4cf0cf5eb3feccd07515af9fd6cf7dbf1d1793a797\nPYTHON_WRAPT_SETUP_TYPE = distutils\nPYTHON_WRAPT_LICENSE = BSD-2-Clause\nPYTHON_WRAPT_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-ws4py/0001-Adjust-ws4py-for-Python-3.7-syntax.patch",
    "content": "From dfe6f65b7078315c32cebb727e9c47ead7603475 Mon Sep 17 00:00:00 2001\nFrom: Asaf Kahlon <asafka7@gmail.com>\nDate: Sun, 13 Oct 2019 16:44:44 +0300\nSubject: [PATCH 1/1] Adjust ws4py for Python 3.7 syntax\n\nSince Python 3.7, \"async\" has become a keyword and cannot be used.\nThus, instead of asyncio.async we will use asyncio.ensure_future.\n\nThere's also a pull request with this change:\nhttps://github.com/Lawouach/WebSocket-for-Python/pull/245\n\nSigned-off-by: Asaf Kahlon <asafka7@gmail.com>\n---\n ws4py/async_websocket.py    | 4 ++--\n ws4py/server/tulipserver.py | 2 +-\n 2 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/ws4py/async_websocket.py b/ws4py/async_websocket.py\nindex 9e2a4c7..ea296b4 100644\n--- a/ws4py/async_websocket.py\n+++ b/ws4py/async_websocket.py\n@@ -84,7 +84,7 @@ class WebSocket(_WebSocket):\n         def closeit():\n             yield from self.proto.writer.drain()\n             self.proto.writer.close()\n-        asyncio.async(closeit())\n+        asyncio.ensure_future(closeit())\n \n     def _write(self, data):\n         \"\"\"\n@@ -94,7 +94,7 @@ class WebSocket(_WebSocket):\n         def sendit(data):\n             self.proto.writer.write(data)\n             yield from self.proto.writer.drain()\n-        asyncio.async(sendit(data))\n+        asyncio.ensure_future(sendit(data))\n \n     @asyncio.coroutine\n     def run(self):\ndiff --git a/ws4py/server/tulipserver.py b/ws4py/server/tulipserver.py\nindex 2786c16..85312a2 100644\n--- a/ws4py/server/tulipserver.py\n+++ b/ws4py/server/tulipserver.py\n@@ -40,7 +40,7 @@ class WebSocketProtocol(asyncio.StreamReaderProtocol):\n         #self.stream.set_transport(transport)\n         asyncio.StreamReaderProtocol.connection_made(self, transport)\n         # Let make it concurrent for others to tag along\n-        f = asyncio.async(self.handle_initial_handshake())\n+        f = asyncio.ensure_future(self.handle_initial_handshake())\n         f.add_done_callback(self.terminated)\n \n     @property\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/python-ws4py/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WS4PY\n\tbool \"python-ws4py\"\n\thelp\n\t  ws4py is a Python package implementing the WebSocket protocol\n\t  as defined in RFC 6455.\n\n\t  https://ws4py.readthedocs.org\n"
  },
  {
    "path": "package/python-ws4py/python-ws4py.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/ws4py/json\nmd5\t68e0cfae9659dd059ff7e7a8218af548  ws4py-0.5.1.tar.gz\nsha256\t29d073d7f2e006373e6a848b1d00951a1107eb81f3742952be905429dc5a5483  ws4py-0.5.1.tar.gz\n# Locally computed sha256 checksums\nsha256\t3c98d9e820de01b1ae3be846419700ab9cefa22b09aa0ef441b3bfd5613c3ba1  LICENSE\n"
  },
  {
    "path": "package/python-ws4py/python-ws4py.mk",
    "content": "################################################################################\n#\n# python-ws4py\n#\n################################################################################\n\nPYTHON_WS4PY_VERSION = 0.5.1\nPYTHON_WS4PY_SOURCE = ws4py-$(PYTHON_WS4PY_VERSION).tar.gz\nPYTHON_WS4PY_SITE = https://files.pythonhosted.org/packages/53/20/4019a739b2eefe9282d3822ef6a225250af964b117356971bd55e274193c\nPYTHON_WS4PY_SETUP_TYPE = setuptools\nPYTHON_WS4PY_LICENSE = BSD-3-Clause\nPYTHON_WS4PY_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-wsaccel/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WSACCEL\n\tbool \"python-wsaccel\"\n\thelp\n\t  Accelerator for ws4py and AutobahnPython.\n\n\t  https://pypi.python.org/pypi/wsaccel\n"
  },
  {
    "path": "package/python-wsaccel/python-wsaccel.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/wsaccel/json\nmd5  973168711818dd98b8b28a4c2db77a27  wsaccel-0.6.3.tar.gz\nsha256  fdb27866bb6b6e7a29e45222778ff97938782a0ce92eff07dfb20af8fb9301c4  wsaccel-0.6.3.tar.gz\n# Locally computed sha256 checksums\nsha256  b6982974cb838b985b54b663d1780d280735086249c2e28015f25dd455df25da  LICENSE\n"
  },
  {
    "path": "package/python-wsaccel/python-wsaccel.mk",
    "content": "################################################################################\n#\n# python-wsaccel\n#\n################################################################################\n\nPYTHON_WSACCEL_VERSION = 0.6.3\nPYTHON_WSACCEL_SOURCE = wsaccel-$(PYTHON_WSACCEL_VERSION).tar.gz\nPYTHON_WSACCEL_SITE = https://files.pythonhosted.org/packages/f5/d1/3e99875a764d0d6ec94a74977ed72dd3022a7f31d036622da9cff8fc072f\nPYTHON_WSACCEL_LICENSE = Apache-2.0\nPYTHON_WSACCEL_LICENSE_FILES = LICENSE\nPYTHON_WSACCEL_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-wtforms/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_WTFORMS\n\tbool \"python-wtforms\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_MARKUPSAFE # runtime\n\thelp\n\t  A flexible forms validation and rendering library for\n\t  Python web development.\n\n\t  https://wtforms.readthedocs.io/\n"
  },
  {
    "path": "package/python-wtforms/python-wtforms.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/wtforms/json\nmd5  2b6ea167a71c6becf20f0934417fd06c  WTForms-2.3.3.tar.gz\nsha256  81195de0ac94fbc8368abbaf9197b88c4f3ffd6c2719b5bf5fc9da744f3d829c  WTForms-2.3.3.tar.gz\n# Locally computed sha256 checksums\nsha256  cf40d60ff34f6b2b68a53d220f8b66567b5ac8dd1119b37b62fd15e9518fe59b  LICENSE.rst\nsha256  c9362a7258a11c84a8f7e825ccbbb5c425c6fc02368d3aee6494533fb99ba1f4  docs/license.rst\n"
  },
  {
    "path": "package/python-wtforms/python-wtforms.mk",
    "content": "################################################################################\n#\n# python-wtforms\n#\n################################################################################\n\nPYTHON_WTFORMS_VERSION = 2.3.3\nPYTHON_WTFORMS_SOURCE = WTForms-$(PYTHON_WTFORMS_VERSION).tar.gz\nPYTHON_WTFORMS_SITE = https://files.pythonhosted.org/packages/dd/3f/f25d26b1c66896e2876124a12cd8be8f606abf4e1890a20f3ca04e4a1555\nPYTHON_WTFORMS_SETUP_TYPE = setuptools\nPYTHON_WTFORMS_LICENSE = BSD-3-Clause\nPYTHON_WTFORMS_LICENSE_FILES = LICENSE.rst docs/license.rst\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-xlib/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_XLIB\n\tbool \"python-xlib\"\n\tselect BR2_PACKAGE_PYTHON_SIX # runtime\n\thelp\n\t  XLib in pure Python (Py2/Py3 compatible)\n\n\t  https://github.com/python-xlib/python-xlib\n"
  },
  {
    "path": "package/python-xlib/python-xlib.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/python-xlib/json\nmd5 3a87f81bff4cb4f8a52881097ba51a49 python-xlib-0.27.tar.bz2\nsha256 a90667c70905c6ef0754c8a09fa61acbc1e1b7ddb946d527831800d7cbfe9348 python-xlib-0.27.tar.bz2\n# Locally computed sha256 checksums\nsha256 06eb1c441443cf15ac84f309003f4c43c62246939d37c75fc3e056c2d34cd300 LICENSE\n"
  },
  {
    "path": "package/python-xlib/python-xlib.mk",
    "content": "################################################################################\n#\n# python-xlib\n#\n################################################################################\n\nPYTHON_XLIB_VERSION = 0.27\nPYTHON_XLIB_SOURCE = python-xlib-$(PYTHON_XLIB_VERSION).tar.bz2\nPYTHON_XLIB_SITE = https://files.pythonhosted.org/packages/e8/fa/a61ef33df117de4c57d11b4ba0b624f5352f21aa2e1eda404860155e8855\nPYTHON_XLIB_SETUP_TYPE = setuptools\nPYTHON_XLIB_LICENSE = LGPL-2.1+\nPYTHON_XLIB_LICENSE_FILES = LICENSE\nPYTHON_XLIB_DEPENDENCIES = host-python-setuptools-scm\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-xlrd/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_XLRD\n\tbool \"python-xlrd\"\n\tselect BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3\n\thelp\n\t  Library for developers to extract data from Microsoft\n\t  Excel(tm) spreadsheet files.\n\n\t  http://www.python-excel.org/\n"
  },
  {
    "path": "package/python-xlrd/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PYTHON_XLRD\n\tbool \"host python-xlrd\"\n\thelp\n\t  Library for developers to extract data from Microsoft\n\t  Excel(tm) spreadsheet files.\n\n\t  http://www.python-excel.org/\n"
  },
  {
    "path": "package/python-xlrd/python-xlrd.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/xlrd/json\nmd5  ae3f951c857a490d432f0a7d722352bf  xlrd-2.0.1.tar.gz\nsha256  f72f148f54442c6b056bf931dbc34f986fd0c3b0b6b5a58d013c9aef274d0c88  xlrd-2.0.1.tar.gz\n# Locally computed sha256 checksums\nsha256  b5a5dbce60265e305a815a6cb83ed07f24519d8ba644f2a307994488bced8815  LICENSE\n"
  },
  {
    "path": "package/python-xlrd/python-xlrd.mk",
    "content": "################################################################################\n#\n# python-xlrd\n#\n################################################################################\n\nPYTHON_XLRD_VERSION = 2.0.1\nPYTHON_XLRD_SOURCE = xlrd-$(PYTHON_XLRD_VERSION).tar.gz\nPYTHON_XLRD_SITE = https://files.pythonhosted.org/packages/a6/b3/19a2540d21dea5f908304375bd43f5ed7a4c28a370dc9122c565423e6b44\nPYTHON_XLRD_SETUP_TYPE = setuptools\nPYTHON_XLRD_LICENSE = BSD-3-Clause\nPYTHON_XLRD_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-xlsxwriter/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_XLSXWRITER\n\tbool \"python-xlsxwriter\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON3_ZLIB\n\thelp\n\t  A Python module for creating Excel XLSX files.\n\n\t  https://github.com/jmcnamara/XlsxWriter\n"
  },
  {
    "path": "package/python-xlsxwriter/python-xlsxwriter.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/xlsxwriter/json\nmd5  5f759dccf222e8f2a9924e90c4afaf84  XlsxWriter-3.0.1.tar.gz\nsha256  3f39bf581c55f3ad1438bc170d7f4c4649cee8b6b7a80d21f79508118eeea52a  XlsxWriter-3.0.1.tar.gz\n# Locally computed sha256 checksums\nsha256  8fbb9b28ef0afac1c7d999102fd2634f347448d069c8c821976f3dbd2b3f812c  LICENSE.txt\n"
  },
  {
    "path": "package/python-xlsxwriter/python-xlsxwriter.mk",
    "content": "################################################################################\n#\n# python-xlsxwriter\n#\n################################################################################\n\nPYTHON_XLSXWRITER_VERSION = 3.0.1\nPYTHON_XLSXWRITER_SOURCE = XlsxWriter-$(PYTHON_XLSXWRITER_VERSION).tar.gz\nPYTHON_XLSXWRITER_SITE = https://files.pythonhosted.org/packages/5d/36/e943d07af9d26cc2f11861955dbf0031e891f77f3d55f70217fd6a0f4d9f\nPYTHON_XLSXWRITER_SETUP_TYPE = setuptools\nPYTHON_XLSXWRITER_LICENSE = BSD-2-Clause\nPYTHON_XLSXWRITER_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-xlutils/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_XLUTILS\n\tbool \"python-xlutils\"\n\tselect BR2_PACKAGE_PYTHON_XLRD # runtime\n\tselect BR2_PACKAGE_PYTHON_XLWT # runtime\n\thelp\n\t  Utilities for working with Excel files that require both\n\t  xlrd and xlwt.\n\n\t  http://www.python-excel.org\n"
  },
  {
    "path": "package/python-xlutils/python-xlutils.hash",
    "content": "# md5 from https://pypi.python.org/pypi/xlutils/json\nmd5\t7a6a339ddaacabce244341582ee61353  xlutils-2.0.0.tar.gz\n# sha256 calculated by scanpypi\nsha256\t7e0e2c233bd185fecf5e2bd3f4e9469ca4a3bd87da64c82cfe5b2af27e7f9e54  xlutils-2.0.0.tar.gz\n# Locally computed\nsha256  28907976ee86414cc720fafc966563b16eeb6a6aeb1da5f5ed40bac3a8808bcf  xlutils/license.txt\n"
  },
  {
    "path": "package/python-xlutils/python-xlutils.mk",
    "content": "################################################################################\n#\n# python-xlutils\n#\n################################################################################\n\nPYTHON_XLUTILS_VERSION = 2.0.0\nPYTHON_XLUTILS_SOURCE = xlutils-$(PYTHON_XLUTILS_VERSION).tar.gz\nPYTHON_XLUTILS_SITE = https://pypi.python.org/packages/93/fe/af6d73e4bc7b0ce359d34bebb2e8d4d129763acfecd66a3a7efc587e54c9\nPYTHON_XLUTILS_SETUP_TYPE = setuptools\nPYTHON_XLUTILS_LICENSE = MIT\nPYTHON_XLUTILS_LICENSE_FILES = xlutils/license.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-xlwt/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_XLWT\n\tbool \"python-xlwt\"\n\thelp\n\t  Library to create spreadsheet files compatible with MS Excel\n\t  97/2000/XP/2003 XLS files, on any platform, with Python 2.6,\n\t  2.7, 3.3+.\n\n\t  http://www.python-excel.org/\n"
  },
  {
    "path": "package/python-xlwt/python-xlwt.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/xlwt/json\nmd5\t4b1ca8a3cef3261f4b4dc3f138e383a8  xlwt-1.3.0.tar.gz\nsha256\tc59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88  xlwt-1.3.0.tar.gz\n# Locally computed\nsha256  7f7b66f23fdac4f68fe3b342dd16b329d511017a901784a5ceb83f505f2de7c6  docs/licenses.rst\n"
  },
  {
    "path": "package/python-xlwt/python-xlwt.mk",
    "content": "################################################################################\n#\n# python-xlwt\n#\n################################################################################\n\nPYTHON_XLWT_VERSION = 1.3.0\nPYTHON_XLWT_SOURCE = xlwt-$(PYTHON_XLWT_VERSION).tar.gz\nPYTHON_XLWT_SITE = https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1\nPYTHON_XLWT_SETUP_TYPE = setuptools\nPYTHON_XLWT_LICENSE = BSD-3-Clause, BSD-4-Clause\nPYTHON_XLWT_LICENSE_FILES = docs/licenses.rst\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-xmljson/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_XMLJSON\n\tbool \"python-xmljson\"\n\thelp\n\t  Converts XML into JSON/Python dicts/arrays and vice-versa.\n\n\t  https://github.com/sanand0/xmljson\n"
  },
  {
    "path": "package/python-xmljson/python-xmljson.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/xmljson/json\nmd5  fc4df2390ad209928ee4311a3540cb17  xmljson-0.2.1.tar.gz\nsha256  b4158e66aa1e62ee39f7f80eb2fe4f767670ba3c0d5de9804420dc53427fdec8  xmljson-0.2.1.tar.gz\n# Locally computed sha256 checksums\nsha256  5ce42ba7d76e81428bdacef83658eb6213dbd1ad4a3b6d380bb6e0e8c73f0fb7  LICENSE\n"
  },
  {
    "path": "package/python-xmljson/python-xmljson.mk",
    "content": "################################################################################\n#\n# python-xmljson\n#\n################################################################################\n\nPYTHON_XMLJSON_VERSION = 0.2.1\nPYTHON_XMLJSON_SOURCE = xmljson-$(PYTHON_XMLJSON_VERSION).tar.gz\nPYTHON_XMLJSON_SITE = https://files.pythonhosted.org/packages/e8/6f/d9f109ba19be510fd3098bcb72143c67ca6743cedb48ac75aef05ddfe960\nPYTHON_XMLJSON_SETUP_TYPE = setuptools\nPYTHON_XMLJSON_LICENSE = MIT\nPYTHON_XMLJSON_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-xmltodict/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_XMLTODICT\n\tbool \"python-xmltodict\"\n\tselect BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime\n\tselect BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime\n\thelp\n\t  Makes working with XML feel like you are working with JSON.\n\n\t  https://github.com/martinblech/xmltodict\n"
  },
  {
    "path": "package/python-xmltodict/python-xmltodict.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/xmltodict/json\nmd5\tddb2bd078cef4f7e3021a578034ad941  xmltodict-0.12.0.tar.gz\nsha256\t50d8c638ed7ecb88d90561beedbf720c9b4e851a9fa6c47ebd64e99d166d8a21  xmltodict-0.12.0.tar.gz\n# Locally computed sha256 checksums\nsha256\td66d5eb8f83a0ba21d3dd04318b8817588e8764daabea852d1035e3f07ffda55  LICENSE\n"
  },
  {
    "path": "package/python-xmltodict/python-xmltodict.mk",
    "content": "################################################################################\n#\n# python-xmltodict\n#\n################################################################################\n\nPYTHON_XMLTODICT_VERSION = 0.12.0\nPYTHON_XMLTODICT_SOURCE = xmltodict-$(PYTHON_XMLTODICT_VERSION).tar.gz\nPYTHON_XMLTODICT_SITE = https://files.pythonhosted.org/packages/58/40/0d783e14112e064127063fbf5d1fe1351723e5dfe9d6daad346a305f6c49\nPYTHON_XMLTODICT_SETUP_TYPE = setuptools\nPYTHON_XMLTODICT_LICENSE = MIT\nPYTHON_XMLTODICT_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-xmodem/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_XMODEM\n\tbool \"python-xmodem\"\n\thelp\n\t  XMODEM protocol implementation.\n\n\t  https://github.com/tehmaze/xmodem\n"
  },
  {
    "path": "package/python-xmodem/python-xmodem.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/xmodem/json\nmd5  f876cb35caf276b61990377710a3b4c4  xmodem-0.4.6.tar.gz\nsha256  089737298f5738eabc43f2519efdc80b402693768f16383f7013b9e6f8f279d7  xmodem-0.4.6.tar.gz\n# locally calculated\nsha256  5ddb38acab95bb77e1e92e22830e358082d879d2dd59ba05577c47791edaa78e  PKG-INFO\n"
  },
  {
    "path": "package/python-xmodem/python-xmodem.mk",
    "content": "################################################################################\n#\n# python-xmodem\n#\n################################################################################\n\nPYTHON_XMODEM_VERSION = 0.4.6\nPYTHON_XMODEM_SOURCE = xmodem-$(PYTHON_XMODEM_VERSION).tar.gz\nPYTHON_XMODEM_SITE = https://files.pythonhosted.org/packages/29/5d/a20d7957f207fc4c4c143881ca7b9617ab7700c153012372ef0a934c7710\nPYTHON_XMODEM_SETUP_TYPE = setuptools\nPYTHON_XMODEM_LICENSE = MIT\nPYTHON_XMODEM_LICENSE_FILES = PKG-INFO\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-yarl/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_YARL\n\tbool \"python-yarl\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_MULTIDICT\n\tselect BR2_PACKAGE_PYTHON_IDNA\n\thelp\n\t  Yet another URL library.\n\n\t  http://yarl.readthedocs.io/\n"
  },
  {
    "path": "package/python-yarl/python-yarl.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/yarl/json\nmd5  acd3eb25a9c46b10a699a3bee5fb9777  yarl-1.7.2.tar.gz\nsha256  45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd  yarl-1.7.2.tar.gz\n# Locally computed sha256 checksums\nsha256  56d6ac6c8105c0a51304c21db060e361af9a8ea0af9a75c239c28b5d13693838  LICENSE\n"
  },
  {
    "path": "package/python-yarl/python-yarl.mk",
    "content": "################################################################################\n#\n# python-yarl\n#\n################################################################################\n\nPYTHON_YARL_VERSION = 1.7.2\nPYTHON_YARL_SOURCE = yarl-$(PYTHON_YARL_VERSION).tar.gz\nPYTHON_YARL_SITE = https://files.pythonhosted.org/packages/f6/da/46d1b3d69a9a0835dabf9d59c7eb0f1600599edd421a4c5a15ab09f527e0\nPYTHON_YARL_LICENSE = Apache-2.0\nPYTHON_YARL_LICENSE_FILES = LICENSE\nPYTHON_YARL_SETUP_TYPE = setuptools\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-yatl/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_YATL\n\tbool \"python-yatl\"\n\thelp\n\t  Yet Another Template Language.\n\n\t  https://github.com/web2py/yatl\n"
  },
  {
    "path": "package/python-yatl/python-yatl.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/yatl/json\nmd5  2954413784ced7e52513ae12b2183c88  yatl-20210326.1.tar.gz\nsha256  add729efdc2c9c06e0fcf640d97d4c500de611a38d5fdcc2ec12545d5ab14ca1  yatl-20210326.1.tar.gz\n"
  },
  {
    "path": "package/python-yatl/python-yatl.mk",
    "content": "################################################################################\n#\n# python-yatl\n#\n################################################################################\n\nPYTHON_YATL_VERSION = 20210326.1\nPYTHON_YATL_SOURCE = yatl-$(PYTHON_YATL_VERSION).tar.gz\nPYTHON_YATL_SITE = https://files.pythonhosted.org/packages/9d/76/5906d641f452dc2ee56795e2152dafc1d212cd411d1cb893af29a7d06e33\nPYTHON_YATL_SETUP_TYPE = setuptools\nPYTHON_YATL_LICENSE = BSD-3-Clause\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-yieldfrom/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_YIELDFROM\n\tbool \"python-yieldfrom\"\n\tdepends on BR2_PACKAGE_PYTHON\n\thelp\n\t  A backport of the `yield from` semantic from Python 3.x to\n\t  Python 2.7.\n\n\t  https://github.com/Nurdok/yieldfrom/\n"
  },
  {
    "path": "package/python-yieldfrom/python-yieldfrom.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/yieldfrom/json\nmd5\tfd94120625ac1e69bb5946d5e63182da  yieldfrom-1.0.5.tar.gz\nsha256\teb75e58641410f06083f85013a438f28bceaabfe5af9c3206d5049362c37aca0  yieldfrom-1.0.5.tar.gz\n# Locally computed sha256 checksums\nsha256\tb3092d61cce29e25f3799285495095d220e5e015b88c1c70e1e72dae052f21e8  LICENSE\n"
  },
  {
    "path": "package/python-yieldfrom/python-yieldfrom.mk",
    "content": "################################################################################\n#\n# python-yieldfrom\n#\n################################################################################\n\nPYTHON_YIELDFROM_VERSION = 1.0.5\nPYTHON_YIELDFROM_SOURCE = yieldfrom-$(PYTHON_YIELDFROM_VERSION).tar.gz\nPYTHON_YIELDFROM_SITE = https://files.pythonhosted.org/packages/4d/f9/395917f574ace618eb234bcbae8df3fabaa9624532d96d1fbd3a20678b1e\nPYTHON_YIELDFROM_SETUP_TYPE = setuptools\nPYTHON_YIELDFROM_LICENSE = MIT\nPYTHON_YIELDFROM_LICENSE_FILES = LICENSE\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python-zc-lockfile/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ZC_LOCKFILE\n\tbool \"python-zc-lockfile\"\n\thelp\n\t  Basic inter-process locks.\n\n\t  https://github.com/zopefoundation/zc.lockfile\n"
  },
  {
    "path": "package/python-zc-lockfile/python-zc-lockfile.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/zc.lockfile/json\nmd5\t3895445752278ddcc4578658c3c9a492  zc.lockfile-2.0.tar.gz\nsha256\t307ad78227e48be260e64896ec8886edc7eae22d8ec53e4d528ab5537a83203b  zc.lockfile-2.0.tar.gz\n# Locally computed sha256 checksums\nsha256\t3e671db11df687516cc1db5b3d65e4aa383eaca3c20cea3faf53a0f7335d0a3c  LICENSE.txt\n"
  },
  {
    "path": "package/python-zc-lockfile/python-zc-lockfile.mk",
    "content": "################################################################################\n#\n# python-zc-lockfile\n#\n################################################################################\n\nPYTHON_ZC_LOCKFILE_VERSION = 2.0\nPYTHON_ZC_LOCKFILE_SOURCE = zc.lockfile-$(PYTHON_ZC_LOCKFILE_VERSION).tar.gz\nPYTHON_ZC_LOCKFILE_SITE = https://files.pythonhosted.org/packages/11/98/f21922d501ab29d62665e7460c94f5ed485fd9d8348c126697947643a881\nPYTHON_ZC_LOCKFILE_SETUP_TYPE = setuptools\nPYTHON_ZC_LOCKFILE_LICENSE = ZPL-2.1\nPYTHON_ZC_LOCKFILE_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-zeroconf/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ZEROCONF\n\tbool \"python-zeroconf\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_IFADDR # runtime\n\thelp\n\t  Pure Python Multicast DNS Service Discovery Library\n\t  (Bonjour/Avahi compatible).\n\n\t  https://github.com/jstasiak/python-zeroconf\n"
  },
  {
    "path": "package/python-zeroconf/python-zeroconf.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/zeroconf/json\nmd5  98e683a247fe9915a5d4845c38b37ff3  zeroconf-0.29.0.tar.gz\nsha256  7aefbb658b452b1fd7e51124364f938c6f5e42d6ea893fa2557bea8c06c540af  zeroconf-0.29.0.tar.gz\n# Locally computed sha256 checksums\nsha256  bb117c0fbd7f57f64170b690285d7df07c2371b578e3b3cd3aa2e1155ef461a0  COPYING\n"
  },
  {
    "path": "package/python-zeroconf/python-zeroconf.mk",
    "content": "################################################################################\n#\n# python-zeroconf\n#\n################################################################################\n\nPYTHON_ZEROCONF_VERSION = 0.29.0\nPYTHON_ZEROCONF_SOURCE = zeroconf-$(PYTHON_ZEROCONF_VERSION).tar.gz\nPYTHON_ZEROCONF_SITE = https://files.pythonhosted.org/packages/ca/77/eb6137997adc60811c6c46b28b00abac5c16daf14383f61d8a0180326b38\nPYTHON_ZEROCONF_SETUP_TYPE = setuptools\nPYTHON_ZEROCONF_LICENSE = LGPL-2.1+\nPYTHON_ZEROCONF_LICENSE_FILES = COPYING\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python-zope-interface/Config.in",
    "content": "config BR2_PACKAGE_PYTHON_ZOPE_INTERFACE\n\tbool \"python-zope-interface\"\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime\n\thelp\n\t  This package provides an implementation of \"object\n\t  interfaces\" for Python. Interfaces are a mechanism for\n\t  labeling objects as conforming to a given API or\n\t  contract. So, this package can be considered as\n\t  implementation of the Design By Contract methodology support\n\t  in Python.\n\n\t  https://zopeinterface.readthedocs.io/\n"
  },
  {
    "path": "package/python-zope-interface/python-zope-interface.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/zope-interface/json\nmd5  c58b31da83449631efb499de13c68c6a  zope.interface-5.4.0.tar.gz\nsha256  5dba5f530fec3f0988d83b78cc591b58c0b6eb8431a85edd1569a0539a8a5a0e  zope.interface-5.4.0.tar.gz\n# Locally computed sha256 checksums\nsha256  3e671db11df687516cc1db5b3d65e4aa383eaca3c20cea3faf53a0f7335d0a3c  LICENSE.txt\n"
  },
  {
    "path": "package/python-zope-interface/python-zope-interface.mk",
    "content": "################################################################################\n#\n# python-zope-interface\n#\n################################################################################\n\nPYTHON_ZOPE_INTERFACE_VERSION = 5.4.0\nPYTHON_ZOPE_INTERFACE_SOURCE = zope.interface-$(PYTHON_ZOPE_INTERFACE_VERSION).tar.gz\nPYTHON_ZOPE_INTERFACE_SITE = https://files.pythonhosted.org/packages/ae/58/e0877f58daa69126a5fb325d6df92b20b77431cd281e189c5ec42b722f58\nPYTHON_ZOPE_INTERFACE_SETUP_TYPE = setuptools\nPYTHON_ZOPE_INTERFACE_LICENSE = ZPL-2.1\nPYTHON_ZOPE_INTERFACE_LICENSE_FILES = LICENSE.txt\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/python3/0001-Make-the-build-of-pyc-files-conditional.patch",
    "content": "From 322724e166d7ec0393aec577c12fdf6ef2b61e1d Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 22 Feb 2017 16:21:31 -0800\nSubject: [PATCH] Make the build of pyc files conditional\n\nThis commit adds a new configure option --disable-pyc-build to disable\nthe compilation of pyc.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[ Andrey Smrinov: ported to Python 3.6 ]\nSigned-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>\n---\n Makefile.pre.in | 2 ++\n configure.ac    | 6 ++++++\n 2 files changed, 8 insertions(+)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 77f91e72b1..0c809f3d8a 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1550,6 +1550,7 @@ libinstall:\tbuild_all $(srcdir)/Modules/xxmodule.c\n \t\t$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \\\n \t\t\t$(DESTDIR)$(LIBDEST)/distutils/tests ; \\\n \tfi\n+ifeq (@PYC_BUILD@,yes)\n \t-PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \\\n \t\t$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \\\n \t\t-j0 -d $(LIBDEST) -f \\\n@@ -1577,6 +1578,7 @@ libinstall:\tbuild_all $(srcdir)/Modules/xxmodule.c\n \t\t$(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \\\n \t\t-j0 -d $(LIBDEST)/site-packages -f \\\n \t\t-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages\n+endif\n \t-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \\\n \t\t$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt\n \t-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \\\ndiff --git a/configure.ac b/configure.ac\nindex d60f05251a..1ee5a09588 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1121,6 +1121,12 @@ fi\n \n AC_MSG_CHECKING(LDLIBRARY)\n \n+AC_SUBST(PYC_BUILD)\n+\n+AC_ARG_ENABLE(pyc-build,\n+\tAS_HELP_STRING([--disable-pyc-build], [disable build of pyc files]),\n+\t[ PYC_BUILD=\"${enableval}\" ], [ PYC_BUILD=yes ])\n+\n # MacOSX framework builds need more magic. LDLIBRARY is the dynamic\n # library that we build, but we do not want to link against it (we\n # will find it with a -framework option). For this reason there is an\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0002-Disable-buggy_getaddrinfo-configure-test-when-cross-.patch",
    "content": "From 72e20220f3a592b3ab9f440fbe74efa9f9e82d49 Mon Sep 17 00:00:00 2001\nFrom: Vanya Sergeev <vsergeev@gmail.com>\nDate: Wed, 23 Dec 2015 11:30:33 +0100\nSubject: [PATCH] Disable buggy_getaddrinfo configure test when cross-compiling\n with IPv6 support\n\nSigned-off-by: Vanya Sergeev <vsergeev@gmail.com>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 1ee5a09588..c2445edc88 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -4210,7 +4210,7 @@ fi\n \n AC_MSG_RESULT($ac_cv_buggy_getaddrinfo)\n \n-if test $have_getaddrinfo = no || test \"$ac_cv_buggy_getaddrinfo\" = yes\n+if test $have_getaddrinfo = no || test \"$cross_compiling\" != \"yes\" -a \"$ac_cv_buggy_getaddrinfo\" = yes\n then\n \tif test $ipv6 = yes\n \tthen\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0003-Add-infrastructure-to-disable-the-build-of-certain-e.patch",
    "content": "From df7c95b4ceecf390b961d843a556c470ac9080b2 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 22 Feb 2017 16:33:22 -0800\nSubject: [PATCH] Add infrastructure to disable the build of certain extensions\n\nSome of the extensions part of the Python core have dependencies on\nexternal libraries (sqlite, tk, etc.) or are relatively big and not\nnecessarly always useful (CJK codecs for example). By extensions, we\nmean part of Python modules that are written in C and therefore\ncompiled to binary code.\n\nTherefore, we introduce a small infrastructure that allows to disable\nsome of those extensions. This can be done inside the configure.ac by\nadding values to the DISABLED_EXTENSIONS variable (which is a\nword-separated list of extensions).\n\nThe implementation works as follow :\n\n * configure.ac defines a DISABLED_EXTENSIONS variable, which is\n   substituted (so that when Makefile.pre is generated from\n   Makefile.pre.in, the value of the variable is substituted). For\n   now, this DISABLED_EXTENSIONS variable is empty, later patches will\n   use it.\n\n * Makefile.pre.in passes the DISABLED_EXTENSIONS value down to the\n   variables passed in the environment when calling the setup.py\n   script that actually builds and installs those extensions.\n\n * setup.py is modified so that the existing \"disabled_module_list\" is\n   filled with those pre-disabled extensions listed in\n   DISABLED_EXTENSIONS.\n\nPatch ported to python2.7 by Maxime Ripard <ripard@archos.com>, and\nthen extended by Thomas Petazzoni\n<thomas.petazzoni@free-electrons.com>.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[ Andrey Smirnov: ported to Python 3.6 ]\nSigned-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>\n---\n Makefile.pre.in | 6 +++++-\n configure.ac    | 2 ++\n setup.py        | 5 ++++-\n 3 files changed, 11 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 0c809f3d8a..7c3dde8dd4 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -216,6 +216,8 @@ FILEMODE=\t644\n # configure script arguments\n CONFIG_ARGS=\t@CONFIG_ARGS@\n \n+# disabled extensions\n+DISABLED_EXTENSIONS=\t@DISABLED_EXTENSIONS@\n \n # Subdirectories with code\n SRCDIRS= \t@SRCDIRS@\n@@ -632,6 +634,7 @@ sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o\n \tesac; \\\n \techo \"$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \\\n \t\t_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \\\n+\t\tDISABLED_EXTENSIONS=\"$(DISABLED_EXTENSIONS)\" \\\n \t\t$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build\"; \\\n \t$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \\\n \t\t_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \\\n@@ -1696,7 +1699,8 @@ libainstall:\t@DEF_MAKE_RULE@ python-config\n # Install the dynamically loadable modules\n # This goes into $(exec_prefix)\n sharedinstall: sharedmods\n-\t$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \\\n+\t$(RUNSHARED) DISABLED_EXTENSIONS=\"$(DISABLED_EXTENSIONS)\" \\\n+\t\t$(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \\\n \t   \t--prefix=$(prefix) \\\n \t\t--install-scripts=$(BINDIR) \\\n \t\t--install-platlib=$(DESTSHARED) \\\ndiff --git a/configure.ac b/configure.ac\nindex c2445edc88..73d66167de 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3081,6 +3081,8 @@ LIBS=\"$withval $LIBS\"\n \n PKG_PROG_PKG_CONFIG\n \n+AC_SUBST(DISABLED_EXTENSIONS)\n+\n # Check for use of the system expat library\n AC_MSG_CHECKING(for --with-system-expat)\n AC_ARG_WITH(system_expat,\ndiff --git a/setup.py b/setup.py\nindex 770866bca7..b6c829b3a5 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -44,7 +44,10 @@ from distutils.spawn import find_executable\n TEST_EXTENSIONS = True\n \n # This global variable is used to hold the list of modules to be disabled.\n-DISABLED_MODULE_LIST = []\n+try:\n+    DISABLED_MODULE_LIST = sysconfig.get_config_var(\"DISABLED_EXTENSIONS\").split(\" \")\n+except KeyError:\n+    DISABLED_MODULE_LIST = list()\n \n \n def get_platform():\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0004-Adjust-library-header-paths-for-cross-compilation.patch",
    "content": "From 61af65485f1dade4aa08d0cf2b24082aeda24c51 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 23 Dec 2015 11:33:14 +0100\nSubject: [PATCH] Adjust library/header paths for cross-compilation\n\nWhen cross-compiling third-party extensions, the get_python_inc() or\nget_python_lib() can be called, to return the path to headers or\nlibraries. However, they use the sys.prefix of the host Python, which\nreturns incorrect paths when cross-compiling (paths pointing to host\nheaders and libraries).\n\nIn order to fix this, we introduce the _python_sysroot, _python_prefix\nand _python_exec_prefix variables, that allow to override these\nvalues, and get correct header/library paths when cross-compiling\nthird-party Python modules.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n Lib/distutils/command/build_ext.py |  5 ++++-\n Lib/distutils/sysconfig.py         | 15 +++++++++++----\n 2 files changed, 15 insertions(+), 5 deletions(-)\n\ndiff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py\nindex 1a9bd1200f..3cf7d6746e 100644\n--- a/Lib/distutils/command/build_ext.py\n+++ b/Lib/distutils/command/build_ext.py\n@@ -234,7 +234,10 @@ class build_ext(Command):\n         if (sysconfig.get_config_var('Py_ENABLE_SHARED')):\n             if not sysconfig.python_build:\n                 # building third party extensions\n-                self.library_dirs.append(sysconfig.get_config_var('LIBDIR'))\n+                libdir = sysconfig.get_config_var('LIBDIR')\n+                if \"_python_sysroot\" in os.environ:\n+                    libdir = os.environ.get(\"_python_sysroot\") + libdir\n+                self.library_dirs.append(libdir)\n             else:\n                 # building python standard extensions\n                 self.library_dirs.append('.')\ndiff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py\nindex 37feae5df7..e9c3a27856 100644\n--- a/Lib/distutils/sysconfig.py\n+++ b/Lib/distutils/sysconfig.py\n@@ -17,10 +17,17 @@ import sys\n from .errors import DistutilsPlatformError\n \n # These are needed in a couple of spots, so just compute them once.\n-PREFIX = os.path.normpath(sys.prefix)\n-EXEC_PREFIX = os.path.normpath(sys.exec_prefix)\n-BASE_PREFIX = os.path.normpath(sys.base_prefix)\n-BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix)\n+if \"_python_sysroot\" in os.environ:\n+    _sysroot=os.environ.get('_python_sysroot')\n+    PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_prefix'))\n+    EXEC_PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_exec_prefix'))\n+    BASE_PREFIX = PREFIX\n+    BASE_EXEC_PREFIX = EXEC_PREFIX\n+else:\n+    PREFIX = os.path.normpath(sys.prefix)\n+    EXEC_PREFIX = os.path.normpath(sys.exec_prefix)\n+    BASE_PREFIX = os.path.normpath(sys.base_prefix)\n+    BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix)\n \n # Path to the base directory of the project. On Windows the binary may\n # live in project/PCbuild/win32 or project/PCbuild/amd64.\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0005-Don-t-look-in-usr-lib-termcap-for-libraries.patch",
    "content": "From 60d71e37d167ea89445250be436170a6cfee84e7 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 23 Dec 2015 11:36:00 +0100\nSubject: [PATCH] Don't look in /usr/lib/termcap for libraries\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n setup.py | 5 +----\n 1 file changed, 1 insertion(+), 4 deletions(-)\n\ndiff --git a/setup.py b/setup.py\nindex b6c829b3a5..ec3ba60607 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -1041,12 +1041,9 @@ class PyBuildExt(build_ext):\n                 pass # Issue 7384: Already linked against curses or tinfo.\n             elif curses_library:\n                 readline_libs.append(curses_library)\n-            elif self.compiler.find_library_file(self.lib_dirs +\n-                                                     ['/usr/lib/termcap'],\n-                                                     'termcap'):\n+            elif self.compiler.find_library_file(self.lib_dirs, 'termcap'):\n                 readline_libs.append('termcap')\n             self.add(Extension('readline', ['readline.c'],\n-                               library_dirs=['/usr/lib/termcap'],\n                                extra_link_args=readline_extra_link_args,\n                                libraries=readline_libs))\n         else:\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0006-Don-t-add-multiarch-paths.patch",
    "content": "From f5933b8f973cd11698b52d535a10d0474e49f5a5 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 23 Dec 2015 11:36:27 +0100\nSubject: [PATCH] Don't add multiarch paths\n\nThe add_multiarch_paths() function leads, in certain build\nenvironments, to the addition of host header paths to the CFLAGS,\nwhich is not appropriate for cross-compilation. This patch fixes that\nby simply removing the call to add_multiarch_paths() when we're\ncross-compiling.\n\nInvestigation done by David <buildroot-2014@inbox.com>.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n setup.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/setup.py b/setup.py\nindex ec3ba60607..e27620035c 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -734,10 +734,10 @@ class PyBuildExt(build_ext):\n         if not CROSS_COMPILING:\n             add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')\n             add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')\n+            self.add_multiarch_paths()\n         # only change this for cross builds for 3.3, issues on Mageia\n         if CROSS_COMPILING:\n             self.add_cross_compiling_paths()\n-        self.add_multiarch_paths()\n         self.add_ldflags_cppflags()\n \n     def init_inc_lib_dirs(self):\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0007-Abort-on-failed-module-build.patch",
    "content": "From 188c0ebfdb71f5252fa7701013b8d1209f28aef7 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 23 Dec 2015 11:43:24 +0100\nSubject: [PATCH] Abort on failed module build\n\nWhen building a Python module fails, the setup.py script currently\ndoesn't exit with an error, and simply continues. This is not a really\nnice behavior, so this patch changes setup.py to abort with an error,\nso that the build issue is clearly noticeable.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n setup.py | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/setup.py b/setup.py\nindex e27620035c..d3f0e663f2 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -524,6 +524,7 @@ class PyBuildExt(build_ext):\n             print(\"Failed to build these modules:\")\n             print_three_column(failed)\n             print()\n+            sys.exit(1)\n \n         if self.failed_on_import:\n             failed = self.failed_on_import[:]\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0008-Serial-ioctl-workaround.patch",
    "content": "From 9e6211b0d6d4610e5fb7d2c7e1152eb7c64d968b Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Wed, 23 Dec 2015 11:44:02 +0100\nSubject: [PATCH] Serial ioctl() workaround\n\nThe ioctls.h of some architectures (notably xtensa) references structs from\nlinux/serial.h. Make sure to include this header as well.\n\nAlso, undef TIOCTTYGSTRUCT that require reference to internal kernel tty_struct,\nbut isn't actually referenced in modern kernels.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\n Modules/termios.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/Modules/termios.c b/Modules/termios.c\nindex 75e5e52320..eefbddfe69 100644\n--- a/Modules/termios.c\n+++ b/Modules/termios.c\n@@ -15,7 +15,9 @@\n #endif\n \n #include <termios.h>\n+#include <linux/serial.h>\n #include <sys/ioctl.h>\n+#undef TIOCTTYGSTRUCT\n \n /* HP-UX requires that this be included to pick up MDCD, MCTS, MDSR,\n  * MDTR, MRI, and MRTS (apparently used internally by some things\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0009-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch",
    "content": "From cb595a591c71e0bf7c63a3706b0be45ac6a642e3 Mon Sep 17 00:00:00 2001\nFrom: Christophe Vu-Brugier <cvubrugier@fastmail.fm>\nDate: Wed, 23 Dec 2015 11:44:30 +0100\nSubject: [PATCH] Do not adjust the shebang of Python scripts for\n cross-compilation\n\nThe copy_scripts() method in distutils copies the scripts listed in\nthe setup file and adjusts the first line to refer to the current\nPython interpreter. When cross-compiling, this means that the adjusted\nshebang refers to the host Python interpreter.\n\nThis patch modifies copy_scripts() to preserve the shebang when\ncross-compilation is detected.\n\nSigned-off-by: Christophe Vu-Brugier <cvubrugier@fastmail.fm>\n---\n Lib/distutils/command/build_scripts.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Lib/distutils/command/build_scripts.py b/Lib/distutils/command/build_scripts.py\nindex ccc70e6465..d6d54195c1 100644\n--- a/Lib/distutils/command/build_scripts.py\n+++ b/Lib/distutils/command/build_scripts.py\n@@ -91,7 +91,7 @@ class build_scripts(Command):\n                     adjust = True\n                     post_interp = match.group(1) or b''\n \n-            if adjust:\n+            if adjust and not '_python_sysroot' in os.environ:\n                 log.info(\"copying and adjusting %s -> %s\", script,\n                          self.build_dir)\n                 updated_files.append(outfile)\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0010-Misc-python-config.sh.in-ensure-sed-invocations-only.patch",
    "content": "From eb51497e4b5799f8ab0277426d3e54414acb9d4b Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <peter@korsgaard.com>\nDate: Thu, 20 Nov 2014 13:24:59 +0100\nSubject: [PATCH] Misc/python-config.sh.in: ensure sed invocations only match\n beginning of strings\n\nThe build/real prefix handling using sed breaks if build != real and the\nstandard include / lib directories are used ($prefix/include and $prefix/lib).\n\nE.G.\n\nprefix_build=\"/usr\", libdir=\"$prefix/lib\", includedir=\"$prefix/include\".\n\nIf this gets installed with make DESTDIR=\"/foo\" install, then we end up with\nprefix_real = prefix = \"/foo/usr\" as expected, but\nincludedir=\"/foo/foo/usr/include\" and libdir=\"/foo/foo/usr/lib\" because of\nthe double sed invocation (prefix is already expanded).  Work around it by\nensuring we only match the beginning of the string.\n\nSubmitted upstream: http://bugs.python.org/issue22907\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Misc/python-config.sh.in | 13 +++++++------\n 1 file changed, 7 insertions(+), 6 deletions(-)\n\ndiff --git a/Misc/python-config.sh.in b/Misc/python-config.sh.in\nindex 2602fe24c0..a1bc3cd5f7 100644\n--- a/Misc/python-config.sh.in\n+++ b/Misc/python-config.sh.in\n@@ -24,18 +24,19 @@ installed_prefix ()\n     echo $RESULT\n }\n \n+prefix_build=\"@prefix@\"\n prefix_real=$(installed_prefix \"$0\")\n \n # Use sed to fix paths from their built-to locations to their installed-to\n # locations. Keep prefix & exec_prefix using their original values in case\n # they are referenced in other configure variables, to prevent double\n # substitution, issue #22140.\n-prefix=\"@prefix@\"\n-exec_prefix=\"@exec_prefix@\"\n+prefix=$(echo \"$prefix_build\" | sed \"s#^$prefix_build#$prefix_real#\")\n+exec_prefix=$(echo \"$exec_prefix_build\" | sed \"s#^$exec_prefix_build#$prefix_real#\")\n exec_prefix_real=${prefix_real}\n-includedir=$(echo \"@includedir@\" | sed \"s#$prefix#$prefix_real#\")\n-libdir=$(echo \"@libdir@\" | sed \"s#$prefix#$prefix_real#\")\n-CFLAGS=$(echo \"@CFLAGS@\" | sed \"s#$prefix#$prefix_real#\")\n+includedir=$(echo \"@includedir@\" | sed \"s#^$prefix_build#$prefix_real#\")\n+libdir=$(echo \"@libdir@\" | sed \"s#^$prefix_build#$prefix_real#\")\n+CFLAGS=$(echo \"@CFLAGS@\" | sed \"s#^$prefix_build#$prefix_real#\")\n VERSION=\"@VERSION@\"\n LIBM=\"@LIBM@\"\n LIBC=\"@LIBC@\"\n@@ -49,7 +50,7 @@ OPT=\"@OPT@\"\n PY_ENABLE_SHARED=\"@PY_ENABLE_SHARED@\"\n LDVERSION=\"@LDVERSION@\"\n LIBDEST=${prefix_real}/lib/python${VERSION}\n-LIBPL=$(echo \"@LIBPL@\" | sed \"s#$prefix#$prefix_real#\")\n+LIBPL=$(echo \"@LIBPL@\" | sed \"s#^$prefix_build#$prefix_real#\")\n SO=\"@EXT_SUFFIX@\"\n PYTHONFRAMEWORK=\"@PYTHONFRAMEWORK@\"\n INCDIR=\"-I$includedir/python${VERSION}${ABIFLAGS}\"\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0011-Override-system-locale-and-set-to-default-when-addin.patch",
    "content": "From e4ae670e3489544a49dabd1618c32fe73504a7ba Mon Sep 17 00:00:00 2001\nFrom: Samuel Cabrero <samuelcabrero@gmail.com>\nDate: Wed, 23 Dec 2015 11:45:48 +0100\nSubject: [PATCH] Override system locale and set to default when adding gcc\n paths\n\nForces the use of the default locale in the function\nadd_gcc_paths, which is called when cross compiling to add the\ninclude and library paths. This is necessary because otherwise\nthe gcc output is localized and the output parsing fails, which\nresults in no paths added and detect_modules not able to find\nany system library (eg. libz, libssl, etc.)\n\n[Thomas: patch taken from https://bugs.python.org/issue23767.]\n\nSigned-off-by: Samuel Cabrero <samuelcabrero@gmail.com>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[james.hilliard1@gmail.com: adapt to python 3.9]\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n---\n setup.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/setup.py b/setup.py\nindex d3f0e663f2..926c16f58f 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -680,7 +680,7 @@ class PyBuildExt(build_ext):\n         tmpfile = os.path.join(self.build_temp, 'ccpaths')\n         if not os.path.exists(self.build_temp):\n             os.makedirs(self.build_temp)\n-        ret = run_command('%s -E -v - </dev/null 2>%s 1>/dev/null' % (cc, tmpfile))\n+        ret = run_command('LC_ALL=C %s -E -v - </dev/null 2>%s 1>/dev/null' % (cc, tmpfile))\n         is_gcc = False\n         is_clang = False\n         in_incdirs = False\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0012-Add-importlib-fix-for-PEP-3147-issue.patch",
    "content": "From e2ea659eac1849db471d3c01a0d0af9d6fca2e9a Mon Sep 17 00:00:00 2001\nFrom: Christophe Vu-Brugier <cvubrugier@fastmail.fm>\nDate: Wed, 22 Feb 2017 16:48:49 -0800\nSubject: [PATCH] Add importlib fix for PEP 3147 issue\n\nPython 3 has a new standard for installing .pyc file, called PEP\n3147. Unfortunately, this standard requires both the .py and .pyc\nfiles to be installed for a Python module to be found. This is quite\nannoying on space-constrained embedded systems, since the .py file is\ntechnically not required for execution.\n\nThis patch changes cache_from_source() and source_from_cache() in\nimportlib to get rid of the \"__pycache__\" directory.\nThis effectively disables PEP 3147 for:\n\n* The python standard library\n* Packages built with distutils or setuptools\n* Packages built with automake that use the `py-compile` helper\n\nSigned-off-by: Christophe Vu-Brugier <cvubrugier@fastmail.fm>\n[ Andrey Smirnov: ported to Python 3.6 ]\nSigned-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>\n---\n Lib/importlib/_bootstrap_external.py | 44 ++++------------------------\n 1 file changed, 5 insertions(+), 39 deletions(-)\n\ndiff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py\nindex 25a3f8c0e0..2cb9a9aa52 100644\n--- a/Lib/importlib/_bootstrap_external.py\n+++ b/Lib/importlib/_bootstrap_external.py\n@@ -373,8 +373,6 @@ def cache_from_source(path, debug_override=None, *, optimization=None):\n     a True value is the same as setting 'optimization' to the empty string\n     while a False value is equivalent to setting 'optimization' to '1'.\n \n-    If sys.implementation.cache_tag is None then NotImplementedError is raised.\n-\n     \"\"\"\n     if debug_override is not None:\n         _warnings.warn('the debug_override parameter is deprecated; use '\n@@ -386,10 +384,7 @@ def cache_from_source(path, debug_override=None, *, optimization=None):\n     path = _os.fspath(path)\n     head, tail = _path_split(path)\n     base, sep, rest = tail.rpartition('.')\n-    tag = sys.implementation.cache_tag\n-    if tag is None:\n-        raise NotImplementedError('sys.implementation.cache_tag is None')\n-    almost_filename = ''.join([(base if base else rest), sep, tag])\n+    almost_filename = ''.join([(base if base else rest)])\n     if optimization is None:\n         if sys.flags.optimize == 0:\n             optimization = ''\n@@ -426,46 +421,17 @@ def cache_from_source(path, debug_override=None, *, optimization=None):\n             head.lstrip(path_separators),\n             filename,\n         )\n-    return _path_join(head, _PYCACHE, filename)\n+    return _path_join(head, filename)\n \n \n def source_from_cache(path):\n     \"\"\"Given the path to a .pyc. file, return the path to its .py file.\n \n     The .pyc file does not need to exist; this simply returns the path to\n-    the .py file calculated to correspond to the .pyc file.  If path does\n-    not conform to PEP 3147/488 format, ValueError will be raised. If\n-    sys.implementation.cache_tag is None then NotImplementedError is raised.\n-\n+    the .py file calculated to correspond to the .pyc file.\n     \"\"\"\n-    if sys.implementation.cache_tag is None:\n-        raise NotImplementedError('sys.implementation.cache_tag is None')\n-    path = _os.fspath(path)\n-    head, pycache_filename = _path_split(path)\n-    found_in_pycache_prefix = False\n-    if sys.pycache_prefix is not None:\n-        stripped_path = sys.pycache_prefix.rstrip(path_separators)\n-        if head.startswith(stripped_path + path_sep):\n-            head = head[len(stripped_path):]\n-            found_in_pycache_prefix = True\n-    if not found_in_pycache_prefix:\n-        head, pycache = _path_split(head)\n-        if pycache != _PYCACHE:\n-            raise ValueError(f'{_PYCACHE} not bottom-level directory in '\n-                             f'{path!r}')\n-    dot_count = pycache_filename.count('.')\n-    if dot_count not in {2, 3}:\n-        raise ValueError(f'expected only 2 or 3 dots in {pycache_filename!r}')\n-    elif dot_count == 3:\n-        optimization = pycache_filename.rsplit('.', 2)[-2]\n-        if not optimization.startswith(_OPT):\n-            raise ValueError(\"optimization portion of filename does not start \"\n-                             f\"with {_OPT!r}\")\n-        opt_level = optimization[len(_OPT):]\n-        if not opt_level.isalnum():\n-            raise ValueError(f\"optimization level {optimization!r} is not an \"\n-                             \"alphanumeric value\")\n-    base_filename = pycache_filename.partition('.')[0]\n+    head, filename = _path_split(path)\n+    base_filename = filename.partition('.')[0]\n     return _path_join(head, base_filename + SOURCE_SUFFIXES[0])\n \n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0013-Add-an-option-to-disable-installation-of-test-module.patch",
    "content": "From 0337342d413d13f437fd089de91faee70a8bf3f9 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 22 Feb 2017 17:01:18 -0800\nSubject: [PATCH] Add an option to disable installation of test modules\n\nThe Python standard distribution comes with many test modules, that\nare not necessarly useful on embedded targets.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[ Andrey Smirnov: ported to Python 3.6 ]\nSigned-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>\n[james.hilliard1@gmail.com: adapt to python 3.9]\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n---\n Makefile.pre.in | 56 ++++++++++++++++++++++++++++++++-----------------\n configure.ac    |  5 +++++\n 2 files changed, 42 insertions(+), 19 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 7c3dde8dd4..204f293d53 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1406,8 +1406,29 @@ maninstall:\taltmaninstall\n \n # Install the library\n XMLLIBSUBDIRS=  xml xml/dom xml/etree xml/parsers xml/sax\n-LIBSUBDIRS=\ttkinter tkinter/test tkinter/test/test_tkinter \\\n-\t\ttkinter/test/test_ttk site-packages test \\\n+\n+LIBSUBDIRS=\ttkinter site-packages \\\n+\t\tasyncio \\\n+\t\tcollections concurrent concurrent/futures encodings \\\n+\t\temail email/mime \\\n+\t\tensurepip ensurepip/_bundled \\\n+\t\thtml json http dbm xmlrpc \\\n+\t\tsqlite3 \\\n+\t\tlogging csv wsgiref urllib \\\n+\t\tlib2to3 lib2to3/fixes lib2to3/pgen2 \\\n+\t\tctypes ctypes/macholib \\\n+\t\tidlelib idlelib/Icons \\\n+\t\tdistutils distutils/command $(XMLLIBSUBDIRS) \\\n+\t\timportlib \\\n+\t\tturtledemo \\\n+\t\tmultiprocessing multiprocessing/dummy \\\n+\t\tunittest \\\n+\t\tvenv venv/scripts venv/scripts/common venv/scripts/posix \\\n+\t\tcurses pydoc_data \\\n+\t\tzoneinfo\n+\n+TESTSUBDIRS=\ttkinter/test tkinter/test/test_tkinter \\\n+\t\ttkinter/test/test_ttk test \\\n \t\ttest/audiodata \\\n \t\ttest/capath test/data \\\n \t\ttest/cjkencodings test/decimaltestdata \\\n@@ -1468,28 +1489,25 @@ LIBSUBDIRS=\ttkinter tkinter/test tkinter/test/test_tkinter \\\n \t\ttest/test_importlib/zipdata02 \\\n \t\ttest/test_zoneinfo test/test_zoneinfo/data \\\n \t\ttest/ziptestdata \\\n-\t\tasyncio \\\n \t\ttest/test_asyncio \\\n-\t\tcollections concurrent concurrent/futures encodings \\\n-\t\temail email/mime test/test_email test/test_email/data \\\n-\t\tensurepip ensurepip/_bundled \\\n-\t\thtml json test/test_json http dbm xmlrpc \\\n-\t\tsqlite3 sqlite3/test \\\n-\t\tlogging csv wsgiref urllib \\\n-\t\tlib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests \\\n+\t\ttest/test_email test/test_email/data \\\n+\t\ttest/test_json \\\n+\t\tsqlite3/test \\\n+\t\tlib2to3/tests \\\n \t\tlib2to3/tests/data lib2to3/tests/data/fixers \\\n \t\tlib2to3/tests/data/fixers/myfixes \\\n-\t\tctypes ctypes/test ctypes/macholib \\\n-\t\tidlelib idlelib/Icons idlelib/idle_test \\\n-\t\tdistutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \\\n+\t\tctypes/test \\\n+\t\tidlelib/idle_test \\\n+\t\tdistutils/tests \\\n \t\ttest/test_peg_generator \\\n+\t\ttest/test_importlib test/test_importlib/builtin \\\n \t\ttest/test_tools test/test_warnings test/test_warnings/data \\\n-\t\tturtledemo \\\n-\t\tmultiprocessing multiprocessing/dummy \\\n-\t\tunittest unittest/test unittest/test/testmock \\\n-\t\tvenv venv/scripts venv/scripts/common venv/scripts/posix \\\n-\t\tcurses pydoc_data \\\n-\t\tzoneinfo\n+\t\tunittest/test unittest/test/testmock\n+\n+ifeq (@TEST_MODULES@,yes)\n+LIBSUBDIRS += $(TESTSUBDIRS)\n+endif\n+\n libinstall:\tbuild_all $(srcdir)/Modules/xxmodule.c\n \t@for i in $(SCRIPTDIR) $(LIBDEST); \\\n \tdo \\\ndiff --git a/configure.ac b/configure.ac\nindex 73d66167de..92e28d02ee 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3358,6 +3358,11 @@ if test \"$posix_threads\" = \"yes\"; then\n       AC_CHECK_FUNCS(pthread_getcpuclockid)\n fi\n \n+AC_SUBST(TEST_MODULES)\n+\n+AC_ARG_ENABLE(test-modules,\n+\tAS_HELP_STRING([--disable-test-modules], [disable test modules]),\n+\t[ TEST_MODULES=\"${enableval}\" ], [ TEST_MODULES=yes ])\n \n # Check for enable-ipv6\n AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0014-Add-an-option-to-disable-pydoc.patch",
    "content": "From a65e5d3caf8e076d531191164c23c6240461f675 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 22 Feb 2017 17:07:56 -0800\nSubject: [PATCH] Add an option to disable pydoc\n\nIt removes 0.5 MB of data from the target plus the pydoc script\nitself.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[ Andrey Smirnov: ported to Python 3.6 ]\nSigned-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>\n---\n Makefile.pre.in | 8 +++++++-\n configure.ac    | 6 ++++++\n setup.py        | 9 +++++++--\n 3 files changed, 20 insertions(+), 3 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 204f293d53..63e3df0470 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1374,7 +1374,9 @@ bininstall: altbininstall\n \t-rm -f $(DESTDIR)$(BINDIR)/idle3\n \t(cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3)\n \t-rm -f $(DESTDIR)$(BINDIR)/pydoc3\n+ifeq (@PYDOC@,yes)\n \t(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)\n+endif\n \t-rm -f $(DESTDIR)$(BINDIR)/2to3\n \t(cd $(DESTDIR)$(BINDIR); $(LN) -s 2to3-$(VERSION) 2to3)\n \tif test \"x$(LIPO_32BIT_FLAGS)\" != \"x\" ; then \\\n@@ -1424,7 +1426,7 @@ LIBSUBDIRS=\ttkinter site-packages \\\n \t\tmultiprocessing multiprocessing/dummy \\\n \t\tunittest \\\n \t\tvenv venv/scripts venv/scripts/common venv/scripts/posix \\\n-\t\tcurses pydoc_data \\\n+\t\tcurses \\\n \t\tzoneinfo\n \n TESTSUBDIRS=\ttkinter/test tkinter/test/test_tkinter \\\n@@ -1508,6 +1510,10 @@ ifeq (@TEST_MODULES@,yes)\n LIBSUBDIRS += $(TESTSUBDIRS)\n endif\n \n+ifeq (@PYDOC@,yes)\n+LIBSUBDIRS += pydoc_data\n+endif\n+\n libinstall:\tbuild_all $(srcdir)/Modules/xxmodule.c\n \t@for i in $(SCRIPTDIR) $(LIBDEST); \\\n \tdo \\\ndiff --git a/configure.ac b/configure.ac\nindex 92e28d02ee..174ed85a7c 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3358,6 +3358,12 @@ if test \"$posix_threads\" = \"yes\"; then\n       AC_CHECK_FUNCS(pthread_getcpuclockid)\n fi\n \n+AC_SUBST(PYDOC)\n+\n+AC_ARG_ENABLE(pydoc,\n+\tAS_HELP_STRING([--disable-pydoc], [disable pydoc]),\n+\t[ PYDOC=\"${enableval}\" ], [ PYDOC=yes ])\n+\n AC_SUBST(TEST_MODULES)\n \n AC_ARG_ENABLE(test-modules,\ndiff --git a/setup.py b/setup.py\nindex 926c16f58f..1fc5fac90c 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -2565,6 +2565,12 @@ def main():\n     # turn off warnings when deprecated modules are imported\n     import warnings\n     warnings.filterwarnings(\"ignore\",category=DeprecationWarning)\n+\n+    scripts = ['Tools/scripts/idle3', 'Tools/scripts/2to3',\n+               'Lib/smtpd.py']\n+    if not '--disable-pydoc' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n+        scripts += [ 'Tools/scripts/pydoc3' ]\n+\n     setup(# PyPI Metadata (PEP 301)\n           name = \"Python\",\n           version = sys.version.split()[0],\n@@ -2589,8 +2595,7 @@ def main():\n           # If you change the scripts installed here, you also need to\n           # check the PyBuildScripts command above, and change the links\n           # created by the bininstall target in Makefile.pre.in\n-          scripts = [\"Tools/scripts/pydoc3\", \"Tools/scripts/idle3\",\n-                     \"Tools/scripts/2to3\"]\n+          scripts = scripts\n         )\n \n # --install-platlib\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0015-Add-an-option-to-disable-lib2to3.patch",
    "content": "From f034b1b0f33a7bd4dde23f0bc1fa8e00e3518c9d Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 22 Feb 2017 17:15:31 -0800\nSubject: [PATCH] Add an option to disable lib2to3\n\nlib2to3 is a library to convert Python 2.x code to Python 3.x. As\nsuch, it is probably not very useful on embedded system targets.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[ Andrey Smirnov: ported to Python 3.6 ]\nSigned-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>\n---\n Makefile.pre.in | 16 ++++++++++++----\n configure.ac    |  6 ++++++\n setup.py        |  5 +++--\n 3 files changed, 21 insertions(+), 6 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 63e3df0470..8b7de12999 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1378,7 +1378,9 @@ ifeq (@PYDOC@,yes)\n \t(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)\n endif\n \t-rm -f $(DESTDIR)$(BINDIR)/2to3\n+ifeq (@LIB2TO3@,yes)\n \t(cd $(DESTDIR)$(BINDIR); $(LN) -s 2to3-$(VERSION) 2to3)\n+endif\n \tif test \"x$(LIPO_32BIT_FLAGS)\" != \"x\" ; then \\\n \t\trm -f $(DESTDIR)$(BINDIR)/python3-32$(EXE); \\\n \t\t(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-32$(EXE) python3-32$(EXE)) \\\n@@ -1417,7 +1419,6 @@ LIBSUBDIRS=\ttkinter site-packages \\\n \t\thtml json http dbm xmlrpc \\\n \t\tsqlite3 \\\n \t\tlogging csv wsgiref urllib \\\n-\t\tlib2to3 lib2to3/fixes lib2to3/pgen2 \\\n \t\tctypes ctypes/macholib \\\n \t\tidlelib idlelib/Icons \\\n \t\tdistutils distutils/command $(XMLLIBSUBDIRS) \\\n@@ -1495,9 +1496,6 @@ TESTSUBDIRS=\ttkinter/test tkinter/test/test_tkinter \\\n \t\ttest/test_email test/test_email/data \\\n \t\ttest/test_json \\\n \t\tsqlite3/test \\\n-\t\tlib2to3/tests \\\n-\t\tlib2to3/tests/data lib2to3/tests/data/fixers \\\n-\t\tlib2to3/tests/data/fixers/myfixes \\\n \t\tctypes/test \\\n \t\tidlelib/idle_test \\\n \t\tdistutils/tests \\\n@@ -1506,6 +1504,14 @@ TESTSUBDIRS=\ttkinter/test tkinter/test/test_tkinter \\\n \t\ttest/test_tools test/test_warnings test/test_warnings/data \\\n \t\tunittest/test unittest/test/testmock\n \n+ifeq (@LIB2TO3@,yes)\n+LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2\n+TESTSUBDIRS += lib2to3/tests\t\t\t\\\n+\tlib2to3/tests/data\t\t\t\\\n+\tlib2to3/tests/data/fixers\t\t\\\n+\tlib2to3/tests/data/fixers/myfixes\n+endif\n+\n ifeq (@TEST_MODULES@,yes)\n LIBSUBDIRS += $(TESTSUBDIRS)\n endif\n@@ -1606,10 +1612,12 @@ ifeq (@PYC_BUILD@,yes)\n \t\t-j0 -d $(LIBDEST)/site-packages -f \\\n \t\t-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages\n endif\n+ifeq (@LIB2TO3@,yes)\n \t-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \\\n \t\t$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt\n \t-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \\\n \t\t$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt\n+endif\n \n # bpo-21536: Misc/python-config.sh is generated in the build directory\n # from $(srcdir)Misc/python-config.sh.in.\ndiff --git a/configure.ac b/configure.ac\nindex 174ed85a7c..f1f5e9a7b0 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3370,6 +3370,12 @@ AC_ARG_ENABLE(test-modules,\n \tAS_HELP_STRING([--disable-test-modules], [disable test modules]),\n \t[ TEST_MODULES=\"${enableval}\" ], [ TEST_MODULES=yes ])\n \n+AC_SUBST(LIB2TO3)\n+\n+AC_ARG_ENABLE(lib2to3,\n+\tAS_HELP_STRING([--disable-lib2to3], [disable lib2to3]),\n+\t[ LIB2TO3=\"${enableval}\" ], [ LIB2TO3=yes ])\n+\n # Check for enable-ipv6\n AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])\n AC_MSG_CHECKING([if --enable-ipv6 is specified])\ndiff --git a/setup.py b/setup.py\nindex 1fc5fac90c..4063d7ffa5 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -2566,10 +2566,11 @@ def main():\n     import warnings\n     warnings.filterwarnings(\"ignore\",category=DeprecationWarning)\n \n-    scripts = ['Tools/scripts/idle3', 'Tools/scripts/2to3',\n-               'Lib/smtpd.py']\n+    scripts = ['Tools/scripts/idle3', 'Lib/smtpd.py']\n     if not '--disable-pydoc' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n         scripts += [ 'Tools/scripts/pydoc3' ]\n+    if not '--disable-lib2to3' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n+        scripts += [ 'Tools/scripts/2to3' ]\n \n     setup(# PyPI Metadata (PEP 301)\n           name = \"Python\",\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0016-Add-option-to-disable-the-sqlite3-module.patch",
    "content": "From dd2722dec08eb9c72c36313e93661eeca3ad64d8 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 22 Feb 2017 17:20:45 -0800\nSubject: [PATCH] Add option to disable the sqlite3 module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[ Andrey Smirnov: ported to Python 3.6 ]\nSigned-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>\n---\n Makefile.pre.in | 7 +++++--\n configure.ac    | 9 +++++++++\n 2 files changed, 14 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 8b7de12999..d826d8ac4b 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1417,7 +1417,6 @@ LIBSUBDIRS=\ttkinter site-packages \\\n \t\temail email/mime \\\n \t\tensurepip ensurepip/_bundled \\\n \t\thtml json http dbm xmlrpc \\\n-\t\tsqlite3 \\\n \t\tlogging csv wsgiref urllib \\\n \t\tctypes ctypes/macholib \\\n \t\tidlelib idlelib/Icons \\\n@@ -1495,7 +1494,6 @@ TESTSUBDIRS=\ttkinter/test tkinter/test/test_tkinter \\\n \t\ttest/test_asyncio \\\n \t\ttest/test_email test/test_email/data \\\n \t\ttest/test_json \\\n-\t\tsqlite3/test \\\n \t\tctypes/test \\\n \t\tidlelib/idle_test \\\n \t\tdistutils/tests \\\n@@ -1512,6 +1510,11 @@ TESTSUBDIRS += lib2to3/tests\t\t\t\\\n \tlib2to3/tests/data/fixers/myfixes\n endif\n \n+ifeq (@SQLITE3@,yes)\n+LIBSUBDIRS += sqlite3\n+TESTSUBDIRS += sqlite3/test\n+endif\n+\n ifeq (@TEST_MODULES@,yes)\n LIBSUBDIRS += $(TESTSUBDIRS)\n endif\ndiff --git a/configure.ac b/configure.ac\nindex f1f5e9a7b0..8b5c65974c 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3358,6 +3358,15 @@ if test \"$posix_threads\" = \"yes\"; then\n       AC_CHECK_FUNCS(pthread_getcpuclockid)\n fi\n \n+AC_SUBST(SQLITE3)\n+AC_ARG_ENABLE(sqlite3,\n+\tAS_HELP_STRING([--disable-sqlite3], [disable sqlite3]),\n+\t[ SQLITE3=\"${enableval}\" ], [ SQLITE3=yes ])\n+\n+if test \"$SQLITE3\" = \"no\" ; then\n+   DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _sqlite3\"\n+fi\n+\n AC_SUBST(PYDOC)\n \n AC_ARG_ENABLE(pydoc,\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0017-Add-an-option-to-disable-the-tk-module.patch",
    "content": "From ad6b66b34f71ff6b60b3be5f6fd3e781cdeecd59 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 22 Feb 2017 17:23:42 -0800\nSubject: [PATCH] Add an option to disable the tk module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[ Andrey Smirnov: ported to Python 3.6 ]\nSigned-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>\n---\n Makefile.pre.in | 11 ++++++++---\n configure.ac    |  9 +++++++++\n 2 files changed, 17 insertions(+), 3 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex d826d8ac4b..dc84384680 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1411,7 +1411,7 @@ maninstall:\taltmaninstall\n # Install the library\n XMLLIBSUBDIRS=  xml xml/dom xml/etree xml/parsers xml/sax\n \n-LIBSUBDIRS=\ttkinter site-packages \\\n+LIBSUBDIRS=\tsite-packages \\\n \t\tasyncio \\\n \t\tcollections concurrent concurrent/futures encodings \\\n \t\temail email/mime \\\n@@ -1429,8 +1429,7 @@ LIBSUBDIRS=\ttkinter site-packages \\\n \t\tcurses \\\n \t\tzoneinfo\n \n-TESTSUBDIRS=\ttkinter/test tkinter/test/test_tkinter \\\n-\t\ttkinter/test/test_ttk test \\\n+TESTSUBDIRS=\ttest \\\n \t\ttest/audiodata \\\n \t\ttest/capath test/data \\\n \t\ttest/cjkencodings test/decimaltestdata \\\n@@ -1502,6 +1501,12 @@ TESTSUBDIRS=\ttkinter/test tkinter/test/test_tkinter \\\n \t\ttest/test_tools test/test_warnings test/test_warnings/data \\\n \t\tunittest/test unittest/test/testmock\n \n+ifeq (@TK@,yes)\n+LIBSUBDIRS += tkinter\n+TESTSUBDIRS += tkinter/test tkinter/test/test_tkinter \\\n+\ttkinter/test/test_ttk\n+endif\n+\n ifeq (@LIB2TO3@,yes)\n LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2\n TESTSUBDIRS += lib2to3/tests\t\t\t\\\ndiff --git a/configure.ac b/configure.ac\nindex 8b5c65974c..4c72dae960 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3367,6 +3367,15 @@ if test \"$SQLITE3\" = \"no\" ; then\n    DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _sqlite3\"\n fi\n \n+AC_SUBST(TK)\n+AC_ARG_ENABLE(tk,\n+\tAS_HELP_STRING([--disable-tk], [disable tk]),\n+\t[ TK=\"${enableval}\" ], [ TK=yes ])\n+\n+if test \"$TK\" = \"no\"; then\n+   DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _tkinter\"\n+fi\n+\n AC_SUBST(PYDOC)\n \n AC_ARG_ENABLE(pydoc,\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0018-Add-an-option-to-disable-the-curses-module.patch",
    "content": "From 962deb43f5f340a8472d432ae8e6d61186f9040e Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 22 Feb 2017 17:31:51 -0800\nSubject: [PATCH] Add an option to disable the curses module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[ Andrey Smirnov: ported to Python 3.6 ]\nSigned-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>\n---\n Makefile.pre.in | 5 ++++-\n configure.ac    | 9 +++++++++\n 2 files changed, 13 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex dc84384680..2a82f3308f 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1426,7 +1426,6 @@ LIBSUBDIRS=\tsite-packages \\\n \t\tmultiprocessing multiprocessing/dummy \\\n \t\tunittest \\\n \t\tvenv venv/scripts venv/scripts/common venv/scripts/posix \\\n-\t\tcurses \\\n \t\tzoneinfo\n \n TESTSUBDIRS=\ttest \\\n@@ -1507,6 +1506,10 @@ TESTSUBDIRS += tkinter/test tkinter/test/test_tkinter \\\n \ttkinter/test/test_ttk\n endif\n \n+ifeq (@CURSES@,yes)\n+LIBSUBDIRS += curses\n+endif\n+\n ifeq (@LIB2TO3@,yes)\n LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2\n TESTSUBDIRS += lib2to3/tests\t\t\t\\\ndiff --git a/configure.ac b/configure.ac\nindex 4c72dae960..acd98381a3 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3376,6 +3376,15 @@ if test \"$TK\" = \"no\"; then\n    DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _tkinter\"\n fi\n \n+AC_SUBST(CURSES)\n+AC_ARG_ENABLE(curses,\n+\tAS_HELP_STRING([--disable-curses], [disable curses]),\n+\t[ CURSES=\"${enableval}\" ], [ CURSES=yes ])\n+\n+if test \"$CURSES\" = \"no\"; then\n+   DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _curses _curses_panel\"\n+fi\n+\n AC_SUBST(PYDOC)\n \n AC_ARG_ENABLE(pydoc,\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0019-Add-an-option-to-disable-expat.patch",
    "content": "From 7e0e7dc25f50acd6922493ae620ee5cbf107a79a Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 22 Feb 2017 17:40:45 -0800\nSubject: [PATCH] Add an option to disable expat\n\nThis patch replaces the existing --with-system-expat option with a\n--with-expat={system,builtin,none} option, which allows to tell Python\nwhether we want to use the system expat (already installed), the expat\nbuiltin the Python sources, or no expat at all (which disables the\ninstallation of XML modules).\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[ Andrey Smirnov: ported to Python 3.6 ]\nSigned-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>\n---\n Makefile.pre.in |  6 +++++-\n configure.ac    | 18 +++++++++++++-----\n setup.py        |  2 +-\n 3 files changed, 19 insertions(+), 7 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex 2a82f3308f..e678c8817e 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1420,7 +1420,7 @@ LIBSUBDIRS=\tsite-packages \\\n \t\tlogging csv wsgiref urllib \\\n \t\tctypes ctypes/macholib \\\n \t\tidlelib idlelib/Icons \\\n-\t\tdistutils distutils/command $(XMLLIBSUBDIRS) \\\n+\t\tdistutils distutils/command \\\n \t\timportlib \\\n \t\tturtledemo \\\n \t\tmultiprocessing multiprocessing/dummy \\\n@@ -1510,6 +1510,10 @@ ifeq (@CURSES@,yes)\n LIBSUBDIRS += curses\n endif\n \n+ifeq (@EXPAT@,yes)\n+LIBSUBDIRS += $(XMLLIBSUBDIRS)\n+endif\n+\n ifeq (@LIB2TO3@,yes)\n LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2\n TESTSUBDIRS += lib2to3/tests\t\t\t\\\ndiff --git a/configure.ac b/configure.ac\nindex acd98381a3..9ef0ecd42f 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3084,13 +3084,21 @@ PKG_PROG_PKG_CONFIG\n AC_SUBST(DISABLED_EXTENSIONS)\n \n # Check for use of the system expat library\n-AC_MSG_CHECKING(for --with-system-expat)\n-AC_ARG_WITH(system_expat,\n-            AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library, see Doc/library/pyexpat.rst (default is no)]),\n+AC_MSG_CHECKING(for --with-expat)\n+AC_ARG_WITH(expat,\n+            AS_HELP_STRING([--with-expat], [select which expat version to use: system, builtin, none]),\n             [],\n-            [with_system_expat=\"no\"])\n+            [with_expat=\"builtin\"])\n \n-AC_MSG_RESULT($with_system_expat)\n+AC_MSG_RESULT($with_expat)\n+\n+if test \"$with_expat\" != \"none\"; then\n+   EXPAT=yes\n+else\n+   DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} pyexpat\"\n+   EXPAT=no\n+fi\n+AC_SUBST(EXPAT)\n \n # Check for use of the system libffi library\n AC_MSG_CHECKING(for --with-system-ffi)\ndiff --git a/setup.py b/setup.py\nindex 4063d7ffa5..211a160f29 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -1666,7 +1666,7 @@ class PyBuildExt(build_ext):\n         #\n         # More information on Expat can be found at www.libexpat.org.\n         #\n-        if '--with-system-expat' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n+        if '--with-expat=system' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n             expat_inc = []\n             define_macros = []\n             extra_compile_args = []\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0020-Add-an-option-to-disable-CJK-codecs.patch",
    "content": "From 2c0d31bb91fc7f94283c3ab632925fbbe24e94d6 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 23 Dec 2015 11:49:55 +0100\nSubject: [PATCH] Add an option to disable CJK codecs\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 9ef0ecd42f..18e6fd70a0 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3375,6 +3375,12 @@ if test \"$SQLITE3\" = \"no\" ; then\n    DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _sqlite3\"\n fi\n \n+AC_ARG_ENABLE(codecs-cjk,\n+\tAS_HELP_STRING([--disable-codecs-cjk], [disable CJK codecs]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+\t\tDISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _codecs_kr _codecs_jp _codecs_cn _codecs_tw _codecs_hk _codecs_iso2022\"\n+\tfi])\n+\n AC_SUBST(TK)\n AC_ARG_ENABLE(tk,\n \tAS_HELP_STRING([--disable-tk], [disable tk]),\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0021-Add-an-option-to-disable-NIS.patch",
    "content": "From 2041d0c8dba87991edaf088b16e37b5189a3466d Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 23 Dec 2015 11:50:11 +0100\nSubject: [PATCH] Add an option to disable NIS\n\nNIS is not necessarily available in uClibc, so we need an option to\nnot compile support for it.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 18e6fd70a0..46d2a8131e 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3381,6 +3381,12 @@ AC_ARG_ENABLE(codecs-cjk,\n \t\tDISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _codecs_kr _codecs_jp _codecs_cn _codecs_tw _codecs_hk _codecs_iso2022\"\n \tfi])\n \n+AC_ARG_ENABLE(nis,\n+\tAS_HELP_STRING([--disable-nis], [disable NIS]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+    \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} nis\"\n+  \t  fi])\n+\n AC_SUBST(TK)\n AC_ARG_ENABLE(tk,\n \tAS_HELP_STRING([--disable-tk], [disable tk]),\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0022-Add-an-option-to-disable-unicodedata.patch",
    "content": "From dd82a401ff6ba4ba116bf4d520e981a1808ed443 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 23 Dec 2015 11:50:27 +0100\nSubject: [PATCH] Add an option to disable unicodedata\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 46d2a8131e..5844e3b73f 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3387,6 +3387,12 @@ AC_ARG_ENABLE(nis,\n     \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} nis\"\n   \t  fi])\n \n+AC_ARG_ENABLE(unicodedata,\n+\tAS_HELP_STRING([--disable-unicodedata], [disable unicodedata]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+    \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} unicodedata\"\n+  \t  fi])\n+\n AC_SUBST(TK)\n AC_ARG_ENABLE(tk,\n \tAS_HELP_STRING([--disable-tk], [disable tk]),\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0023-Add-an-option-to-disable-IDLE.patch",
    "content": "From f1b15834045d0641c43014b970721df066fa71f7 Mon Sep 17 00:00:00 2001\nFrom: Maxime Ripard <maxime.ripard@free-electrons.com>\nDate: Wed, 22 Feb 2017 17:45:14 -0800\nSubject: [PATCH] Add an option to disable IDLE\n\nIDLE is an IDE embedded into python, written using Tk, so it doesn't make\nmuch sense to have it into our build.\n\nSigned-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>\n[ Andrey Smirnov: ported to Python 3.6 ]\nSigned-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>\n---\n Makefile.pre.in | 7 ++++++-\n configure.ac    | 6 ++++++\n setup.py        | 4 +++-\n 3 files changed, 15 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.pre.in b/Makefile.pre.in\nindex e678c8817e..1148bd8708 100644\n--- a/Makefile.pre.in\n+++ b/Makefile.pre.in\n@@ -1372,7 +1372,9 @@ bininstall: altbininstall\n \t-rm -f $(DESTDIR)$(LIBPC)/python3-embed.pc\n \t(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION)-embed.pc python3-embed.pc)\n \t-rm -f $(DESTDIR)$(BINDIR)/idle3\n+ifeq (@IDLE@,yes)\n \t(cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3)\n+endif\n \t-rm -f $(DESTDIR)$(BINDIR)/pydoc3\n ifeq (@PYDOC@,yes)\n \t(cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3)\n@@ -1419,7 +1421,6 @@ LIBSUBDIRS=\tsite-packages \\\n \t\thtml json http dbm xmlrpc \\\n \t\tlogging csv wsgiref urllib \\\n \t\tctypes ctypes/macholib \\\n-\t\tidlelib idlelib/Icons \\\n \t\tdistutils distutils/command \\\n \t\timportlib \\\n \t\tturtledemo \\\n@@ -1514,6 +1515,10 @@ ifeq (@EXPAT@,yes)\n LIBSUBDIRS += $(XMLLIBSUBDIRS)\n endif\n \n+ifeq (@IDLE@,yes)\n+LIBSUBDIRS += idlelib idlelib/Icons\n+endif\n+\n ifeq (@LIB2TO3@,yes)\n LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2\n TESTSUBDIRS += lib2to3/tests\t\t\t\\\ndiff --git a/configure.ac b/configure.ac\nindex 5844e3b73f..7bd4623ccd 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3429,6 +3429,12 @@ AC_ARG_ENABLE(lib2to3,\n \tAS_HELP_STRING([--disable-lib2to3], [disable lib2to3]),\n \t[ LIB2TO3=\"${enableval}\" ], [ LIB2TO3=yes ])\n \n+AC_SUBST(IDLE)\n+\n+AC_ARG_ENABLE(idle3,\n+\tAS_HELP_STRING([--disable-idle3], [disable idle3 IDE]),\n+\t[ IDLE=\"${enableval}\" ], [ IDLE=yes ])\n+\n # Check for enable-ipv6\n AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified])\n AC_MSG_CHECKING([if --enable-ipv6 is specified])\ndiff --git a/setup.py b/setup.py\nindex 211a160f29..c4ee989ba3 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -2566,11 +2566,13 @@ def main():\n     import warnings\n     warnings.filterwarnings(\"ignore\",category=DeprecationWarning)\n \n-    scripts = ['Tools/scripts/idle3', 'Lib/smtpd.py']\n+    scripts = [ 'Lib/smtpd.py']\n     if not '--disable-pydoc' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n         scripts += [ 'Tools/scripts/pydoc3' ]\n     if not '--disable-lib2to3' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n         scripts += [ 'Tools/scripts/2to3' ]\n+    if not '--disable-idle3' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n+        scripts += [ 'Tools/scripts/idle3' ]\n \n     setup(# PyPI Metadata (PEP 301)\n           name = \"Python\",\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0024-Add-an-option-to-disable-decimal.patch",
    "content": "From d5fe81cbd51da2a84ed89d1e4c80d921d4efce26 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 23 Dec 2015 11:51:31 +0100\nSubject: [PATCH] Add an option to disable decimal\n\nThis patch replaces the existing --with-system-libmpdec option with a\n--with-libmpdec={system,builtin,none} option, which allows to tell\nPython whether we want to use the system libmpdec (already installed),\nthe libmpdec builtin the Python sources, or no libmpdec at all.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[aduskett@gmail.com: Update for python 3.7.0]\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n[james.hilliard1@gmail.com: adapt to python 3.9]\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n---\n configure.ac | 17 ++++++++++++-----\n setup.py     |  2 +-\n 2 files changed, 13 insertions(+), 6 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 7bd4623ccd..e513ef6a20 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3135,13 +3135,20 @@ fi\n AC_SUBST(LIBFFI_INCLUDEDIR)\n \n # Check for use of the system libmpdec library\n-AC_MSG_CHECKING(for --with-system-libmpdec)\n-AC_ARG_WITH(system_libmpdec,\n-            AS_HELP_STRING([--with-system-libmpdec], [build _decimal module using an installed libmpdec library, see Doc/library/decimal.rst (default is no)]),\n+AC_MSG_CHECKING(for --with-libmpdec)\n+AC_ARG_WITH(libmpdec,\n+            AS_HELP_STRING([--with-libmpdec], [select which libmpdec version to use: system, builtin, none]),\n             [],\n-            [with_system_libmpdec=\"no\"])\n+            [with_libmpdec=\"builtin\"])\n \n-AC_MSG_RESULT($with_system_libmpdec)\n+AC_MSG_RESULT($with_libmpdec)\n+if test \"$with_libmpdec\" != \"none\"; then\n+   MPDEC=yes\n+else\n+   DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _decimal\"\n+   MPDEC=no\n+fi\n+AC_SUBST(MPDEC)\n \n # Check whether _decimal should use a coroutine-local or thread-local context\n AC_MSG_CHECKING(for --with-decimal-contextvar)\ndiff --git a/setup.py b/setup.py\nindex c4ee989ba3..3d0c74bb7f 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -2195,7 +2195,7 @@ class PyBuildExt(build_ext):\n         # Stefan Krah's _decimal module\n         extra_compile_args = []\n         undef_macros = []\n-        if '--with-system-libmpdec' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n+        if '--with-libmpdec=system' in sysconfig.get_config_var(\"CONFIG_ARGS\"):\n             include_dirs = []\n             libraries = [':libmpdec.so.2']\n             sources = ['_decimal/_decimal.c']\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0025-Add-an-option-to-disable-the-ossaudiodev-module.patch",
    "content": "From 9bedc56d2a4b8856162650a11c1fcb6ec38f160b Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 23 Dec 2015 11:51:58 +0100\nSubject: [PATCH] Add an option to disable the ossaudiodev module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex e513ef6a20..c07505e89e 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3165,6 +3165,12 @@ fi\n \n AC_MSG_RESULT($with_decimal_contextvar)\n \n+AC_ARG_ENABLE(ossaudiodev,\n+\tAS_HELP_STRING([--disable-ossaudiodev], [disable OSSAUDIODEV]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+\t  DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} ossaudiodev\"\n+\t  fi])\n+\n # Check for support for loadable sqlite extensions\n AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions)\n AC_ARG_ENABLE(loadable-sqlite-extensions,\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0026-Add-an-option-to-disable-openssl-support.patch",
    "content": "From 90ed5c692b8b5596ca0b3ae1436276c8181251d8 Mon Sep 17 00:00:00 2001\nFrom: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>\nDate: Wed, 22 Feb 2017 17:55:59 -0800\nSubject: [PATCH] Add an option to disable openssl support.\n\nSigned-off-by: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex c07505e89e..612e32faf5 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3406,6 +3406,12 @@ AC_ARG_ENABLE(unicodedata,\n     \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} unicodedata\"\n   \t  fi])\n \n+AC_ARG_ENABLE(openssl,\n+\tAS_HELP_STRING([--disable-openssl], [disable openssl support]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+\t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} ssl _ssl _hashlib\"\n+\t  fi])\n+\n AC_SUBST(TK)\n AC_ARG_ENABLE(tk,\n \tAS_HELP_STRING([--disable-tk], [disable tk]),\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0027-Add-an-option-to-disable-the-readline-module.patch",
    "content": "From 049e7a51e1ffd0d28d6608c707ab4b54e816d338 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 23:29:05 +0100\nSubject: [PATCH] Add an option to disable the readline module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 612e32faf5..2a6aaeff60 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3412,6 +3412,12 @@ AC_ARG_ENABLE(openssl,\n \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} ssl _ssl _hashlib\"\n \t  fi])\n \n+AC_ARG_ENABLE(readline,\n+\tAS_HELP_STRING([--disable-readline], [disable readline]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+\t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} readline\"\n+\t  fi])\n+\n AC_SUBST(TK)\n AC_ARG_ENABLE(tk,\n \tAS_HELP_STRING([--disable-tk], [disable tk]),\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0028-Add-options-to-disable-zlib-bzip2-and-xz-modules.patch",
    "content": "From 146730a04dfe98e3d7971ebf5410801ceae88e11 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Tue, 7 Mar 2017 23:31:11 +0100\nSubject: [PATCH] Add options to disable zlib, bzip2 and xz modules\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.ac | 18 ++++++++++++++++++\n 1 file changed, 18 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 2a6aaeff60..21479bbd7d 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3418,6 +3418,24 @@ AC_ARG_ENABLE(readline,\n \t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} readline\"\n \t  fi])\n \n+AC_ARG_ENABLE(bzip2,\n+\tAS_HELP_STRING([--disable-bzip2], [disable bzip2]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+\t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _bz2\"\n+\t  fi])\n+\n+AC_ARG_ENABLE(zlib,\n+\tAS_HELP_STRING([--disable-zlib], [disable zlib]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+\t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} zlib\"\n+\t  fi])\n+\n+AC_ARG_ENABLE(xz,\n+\tAS_HELP_STRING([--disable-xz], [disable xz]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+\t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _lzma\"\n+\t  fi])\n+\n AC_SUBST(TK)\n AC_ARG_ENABLE(tk,\n \tAS_HELP_STRING([--disable-tk], [disable tk]),\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0029-python-config.sh-don-t-reassign-prefix.patch",
    "content": "From 106d9378c61e7fa9cad0a63ba068668d54cd11b8 Mon Sep 17 00:00:00 2001\nFrom: Matt Weber <matthew.weber@rockwellcollins.com>\nDate: Fri, 6 Oct 2017 09:54:15 -0500\nSubject: [PATCH] python-config.sh: don't reassign ${prefix}\n\nWhen prefix is set to a path like /usr during crossbuild\nthe sed operations end up executing twice, once for the prefix\nreassignment and another for includedir if it is set as a string\nincluding the ${prefix} variable.  This results in an issue\nwhen the build directory is under /usr.\n\nThis patch updates the remaining location which uses the prefix\nvariable to also sed and update to use the real path.\n\nUpstream bug report:\nhttps://bugs.python.org/issue31713\n\nBuildroot bug:\nhttps://bugs.busybox.net/show_bug.cgi?id=10361\n\nFixes failures like the following:\ndbus-python-1.2.4 | NOK | http://autobuild.buildroot.net/results/758858efa97b6273c1b470513f5492258a6d8853\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n Misc/python-config.sh.in | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Misc/python-config.sh.in b/Misc/python-config.sh.in\nindex a1bc3cd5f7..164d2d3603 100644\n--- a/Misc/python-config.sh.in\n+++ b/Misc/python-config.sh.in\n@@ -31,7 +31,7 @@ prefix_real=$(installed_prefix \"$0\")\n # locations. Keep prefix & exec_prefix using their original values in case\n # they are referenced in other configure variables, to prevent double\n # substitution, issue #22140.\n-prefix=$(echo \"$prefix_build\" | sed \"s#^$prefix_build#$prefix_real#\")\n+prefix=$prefix_build\n exec_prefix=$(echo \"$exec_prefix_build\" | sed \"s#^$exec_prefix_build#$prefix_real#\")\n exec_prefix_real=${prefix_real}\n includedir=$(echo \"@includedir@\" | sed \"s#^$prefix_build#$prefix_real#\")\n@@ -49,7 +49,7 @@ LDLIBRARY=\"@LDLIBRARY@\"\n OPT=\"@OPT@\"\n PY_ENABLE_SHARED=\"@PY_ENABLE_SHARED@\"\n LDVERSION=\"@LDVERSION@\"\n-LIBDEST=${prefix_real}/lib/python${VERSION}\n+LIBDEST=$( echo \"${prefix}/lib/python${VERSION}\" | sed \"s#^$prefix_build#$prefix_real#\")\n LIBPL=$(echo \"@LIBPL@\" | sed \"s#^$prefix_build#$prefix_real#\")\n SO=\"@EXT_SUFFIX@\"\n PYTHONFRAMEWORK=\"@PYTHONFRAMEWORK@\"\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0030-Fix-cross-compiling-the-uuid-module.patch",
    "content": "From d7b90b157eddefbd0ed59e35c90b083c0c03b644 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <aduskett@gmail.com>\nDate: Fri, 20 Jul 2018 10:17:39 -0400\nSubject: [PATCH] Fix cross compiling the uuid module\n\nPython 3.7 has a new _uuid module, however, the include directory\nsearch path for uuid.h is hardcoded to /usr/include/uuid, which should\nnot be used when cross-compiling.\n\nTo fix this, use the same solution as the one used by the NIS\ndetection: append \"uuid\" to each of the include directories in\n\"inc_dirs\", instead of hardcoding /usr/include/uuid.\n\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n[Thomas: drop STAGING_DIR based solution, use a solution similar to\nthe one used for the NIS detection.]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n setup.py | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/setup.py b/setup.py\nindex 3d0c74bb7f..c7be85f352 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -1764,7 +1764,8 @@ class PyBuildExt(build_ext):\n \n     def detect_uuid(self):\n         # Build the _uuid module if possible\n-        uuid_incs = find_file(\"uuid.h\", self.inc_dirs, [\"/usr/include/uuid\"])\n+        uuid_incs = find_file(\"uuid.h\", self.inc_dirs,\n+                              [os.path.join(inc_dir, 'uuid') for inc_dir in self.inc_dirs])\n         if uuid_incs is not None:\n             if self.compiler.find_library_file(self.lib_dirs, 'uuid'):\n                 uuid_libs = ['uuid']\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0031-Add-an-option-to-disable-uuid-module.patch",
    "content": "From 3bb693408eda77dda145ec5fecee56ea73031e9f Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Sat, 18 Aug 2018 10:54:56 +0200\nSubject: [PATCH] Add an option to disable uuid module\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n configure.ac | 9 +++++++++\n 1 file changed, 9 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 21479bbd7d..615c16aced 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3454,6 +3454,15 @@ if test \"$CURSES\" = \"no\"; then\n    DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _curses _curses_panel\"\n fi\n \n+AC_SUBST(UUID)\n+AC_ARG_ENABLE(uuid,\n+\tAS_HELP_STRING([--disable-uuid], [disable uuid]),\n+\t[ UUID=\"${enableval}\" ], [ UUID=yes ])\n+\n+if test \"$UUID\" = \"no\"; then\n+   DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _uuid\"\n+fi\n+\n AC_SUBST(PYDOC)\n \n AC_ARG_ENABLE(pydoc,\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0032-fix-building-on-older-distributions.patch",
    "content": "From 94c62f96ca61f1a28124c837d7ec5ed0b9ae8786 Mon Sep 17 00:00:00 2001\nFrom: Adam Duskett <aduskett@gmail.com>\nDate: Thu, 16 Aug 2018 14:52:37 -0700\nSubject: [PATCH] fix building on older distributions\n\nPython > 3.6.3 calls os.replace in the update_file.py script, during the\nregen-importlib phase of the build process.\n\nAccording to Doc/whatsnew/3.3.rst line 1631, os.replace acts in the same\nway as os.rename, however, it is now cross-platform compatible for Windows.\n\nBecause BuildRoot is guaranteed only to be built in  POSIX environment, it is\nsafe to change os.replace back to os.rename.\n\nThis change fixes building on older systems such as CentOS7, that only come\nwith python 2.\n\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n---\n Tools/scripts/update_file.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Tools/scripts/update_file.py b/Tools/scripts/update_file.py\nindex 224585c69b..ef458c0c63 100644\n--- a/Tools/scripts/update_file.py\n+++ b/Tools/scripts/update_file.py\n@@ -16,7 +16,7 @@ def main(old_path, new_path):\n     with open(new_path, 'rb') as f:\n         new_contents = f.read()\n     if old_contents != new_contents:\n-        os.replace(new_path, old_path)\n+        os.rename(new_path, old_path)\n     else:\n         os.unlink(new_path)\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0033-configure.ac-fixup-CC-print-multiarch-output-for-mus.patch",
    "content": "From edc0757c56090364e0a95aabfa9f645a16a27569 Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <peter@korsgaard.com>\nDate: Fri, 2 Aug 2019 15:53:16 +0200\nSubject: [PATCH] configure.ac: fixup $CC --print-multiarch output for\n musl/uclibc GCC 8+ toolchains\n\nGCC commit 6834b83784dcf0364eb820e8 (multiarch support for non-glibc linux\nsystems), which is part of GCC 8+, changed the multiarch logic to use\n$arch-linux-musl / $arch-linux-uclibc rather than $arch-linux-gnu.\n\nThis then causes the python3 configure script to error out:\n\nchecking for the platform triplet based on compiler characteristics... powerpc-linux-gnu\nconfigure: error: internal configure error for the platform triplet, please file a bug report\n\nhttp://autobuild.buildroot.net/results/cb4/cb49c539501342e45cbe5ade82e588fcdf51f05b\n\nAs it requires that the --print-multiarch output (if not empty) matches the\ndeduced triplet (which always uses -linux-gnu).\n\nIt isn't quite clear why --print-multiarch returns something for a\nnon-multiarch toolchain on some architectures (E.G.  PowerPC), but as a\nworkaround, rewrite the --print-multiarch output to match older GCC versions\nto keep the configure script happy.\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n configure.ac | 4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 615c16aced..241298e6cf 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -727,7 +727,9 @@ then\n fi\n \n \n-MULTIARCH=$($CC --print-multiarch 2>/dev/null)\n+# GCC 8+ returns $arch-linux-{musl,uclibc} for musl/uClibc based\n+# toolchains confusing python. Fix that up\n+MULTIARCH=$($CC --print-multiarch 2>/dev/null | sed -E 's/-linux-(musl|uclibc)*$/-linux-gnu/')\n AC_SUBST(MULTIARCH)\n \n AC_MSG_CHECKING([for the platform triplet based on compiler characteristics])\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/python3/0034-Add-an-option-to-disable-the-berkeleydb-module.patch",
    "content": "From cf4d7fd9f7cb6c1ced32ee323b2b5755640051b7 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sat, 11 Apr 2020 22:01:40 +0200\nSubject: [PATCH] Add an option to disable the berkeleydb module\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n configure.ac | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 72c1d86e82..8c3912d237 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3465,6 +3465,12 @@ if test \"$UUID\" = \"no\"; then\n    DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _uuid\"\n fi\n \n+AC_ARG_ENABLE(berkeleydb,\n+\tAS_HELP_STRING([--disable-berkeleydb], [disable berkeleydb]),\n+\t[ if test \"$enableval\" = \"no\"; then\n+\t     DISABLED_EXTENSIONS=\"${DISABLED_EXTENSIONS} _dbm\"\n+\t  fi])\n+\n AC_SUBST(PYDOC)\n \n AC_ARG_ENABLE(pydoc,\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/python3/0035-lib-crypt-uClibc-ng-doesn-t-set-errno-when-encryptio.patch",
    "content": "From 3c83eedcc2df3ecf6c4a17953ca24dff60c1378e Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Thu, 12 Nov 2020 00:16:18 +0100\nSubject: [PATCH] lib/crypt: uClibc-ng doesn't set errno when encryption method\n is not available\n\nSince commit [1] in cpython, an exception is raised when an encryption method\nis not available. This eception is handled only if errno is set to EINVAL by\ncrypt() but uClibc-ng doesn't set errno in crypt() [2].\n\nFixes:\nhttps://gitlab.com/buildroot.org/buildroot/-/jobs/830981961\nhttps://gitlab.com/buildroot.org/buildroot/-/jobs/830981979\n\n[1] https://github.com/python/cpython/commit/0d3fe8ae4961bf551e7d5e42559e2ede1a08fd7c\n[2] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/libcrypt/crypt.c?h=v1.0.36#n29\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n Lib/crypt.py | 4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/Lib/crypt.py b/Lib/crypt.py\nindex 33dbc46bb3..4692a5270c 100644\n--- a/Lib/crypt.py\n+++ b/Lib/crypt.py\n@@ -94,7 +94,9 @@ def _add_method(name, *args, rounds=None):\n         result = crypt('', salt)\n     except OSError as e:\n         # Not all libc libraries support all encryption methods.\n-        if e.errno == errno.EINVAL:\n+        # Not all libc libraries set errno when encryption method is not\n+        # available.\n+        if e.errno == errno.EINVAL or e.errno == 0:\n             return False\n         raise\n     if result and len(result) == method.total_size:\n-- \n2.25.4\n\n"
  },
  {
    "path": "package/python3/0036-Fix-dictionary-iteration-error-in-_ExecutorManagerTh.patch",
    "content": "From 331966be70c371b268a4fcce9e97280cd869f137 Mon Sep 17 00:00:00 2001\nFrom: Jakub Kulik <kulikjak@gmail.com>\nDate: Mon, 15 Mar 2021 08:49:28 +0100\nSubject: [PATCH] Fix dictionary iteration error in _ExecutorManagerThread\n\n[Thomas: Taken from upstream pull request\nhttps://github.com/python/cpython/pull/24868, which is aimed at fixing\nhttps://bugs.python.org/issue43498]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n Lib/concurrent/futures/process.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Lib/concurrent/futures/process.py b/Lib/concurrent/futures/process.py\nindex 90bc98bf2ec..e3b36dff572 100644\n--- a/Lib/concurrent/futures/process.py\n+++ b/Lib/concurrent/futures/process.py\n@@ -373,7 +373,7 @@ class _ExecutorManagerThread(threading.Thread):\n         assert not self.thread_wakeup._closed\n         wakeup_reader = self.thread_wakeup._reader\n         readers = [result_reader, wakeup_reader]\n-        worker_sentinels = [p.sentinel for p in self.processes.values()]\n+        worker_sentinels = [p.sentinel for p in self.processes.copy().values()]\n         ready = mp.connection.wait(readers + worker_sentinels)\n \n         cause = None\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/python3/Config.in",
    "content": "comment \"python3 needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_PYTHON3\n\tbool \"python3\"\n\tdepends on !BR2_PACKAGE_PYTHON\n\tdepends on BR2_USE_WCHAR\n\t# uses fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libffi\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBFFI\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_HEADERS if BR2_PACKAGE_BLUEZ5_UTILS\n\thelp\n\t  The python language interpreter.\n\n\t  http://www.python.org/\n\nif BR2_PACKAGE_PYTHON3\n\nchoice\n\tprompt \"python3 module format to install\"\n\tdefault BR2_PACKAGE_PYTHON3_PYC_ONLY\n\thelp\n\t  Select Python module format to install on target (py, pyc or\n\t  both)\n\nconfig BR2_PACKAGE_PYTHON3_PY_ONLY\n\tbool \".py sources only\"\n\nconfig BR2_PACKAGE_PYTHON3_PYC_ONLY\n\tbool \".pyc compiled sources only\"\n\nconfig BR2_PACKAGE_PYTHON3_PY_PYC\n\tbool \".py sources and .pyc compiled\"\n\nendchoice\n\nmenu \"core python3 modules\"\n\ncomment \"The following modules are unusual or require extra libraries\"\n\nconfig BR2_PACKAGE_PYTHON3_2TO3\n\tbool \"2to3 module\"\n\thelp\n\t  code translation from python 2 to 3\n\nconfig BR2_PACKAGE_PYTHON3_BERKELEYDB\n\tbool \"berkeleydb\"\n\tselect BR2_PACKAGE_BERKELEYDB\n\thelp\n\t  berkeleydb module for Python3\n\nconfig BR2_PACKAGE_PYTHON3_BZIP2\n\tbool \"bz2 module\"\n\tselect BR2_PACKAGE_BZIP2\n\thelp\n\t  bzip2 module for Python3\n\nconfig BR2_PACKAGE_PYTHON3_CODECSCJK\n\tbool \"codecscjk module\"\n\thelp\n\t  Chinese/Japanese/Korean codecs module for Python (large).\n\nconfig BR2_PACKAGE_PYTHON3_CURSES\n\tbool \"curses module\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  curses module for Python3.\n\nconfig BR2_PACKAGE_PYTHON3_DECIMAL\n\tbool \"decimal module\"\n\tselect BR2_PACKAGE_MPDECIMAL\n\thelp\n\t  decimal module for Python3.\n\nconfig BR2_PACKAGE_PYTHON3_OSSAUDIODEV\n\tbool \"ossaudiodev module\"\n\thelp\n\t  ossaudiodev module for Python3.\n\nconfig BR2_PACKAGE_PYTHON3_READLINE\n\tbool \"readline\"\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  readline module for Python3 (required for command-line\n\t  editing in the Python shell).\n\nconfig BR2_PACKAGE_PYTHON3_SSL\n\tbool \"ssl\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  _ssl module for Python3 (required for https in urllib etc).\n\nconfig BR2_PACKAGE_PYTHON3_UNICODEDATA\n\tbool \"unicodedata module\"\n\tdefault y\n\thelp\n\t  Unicode character database (used by stringprep module)\n\t  (large).\n\nconfig BR2_PACKAGE_PYTHON3_SQLITE\n\tbool \"sqlite module\"\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  SQLite database support\n\nconfig BR2_PACKAGE_PYTHON3_PYEXPAT\n\tbool \"xml module\"\n\tselect BR2_PACKAGE_EXPAT\n\thelp\n\t  pyexpat and xml libraries for Python3.\n\nconfig BR2_PACKAGE_PYTHON3_XZ\n\tbool \"xz module\"\n\tselect BR2_PACKAGE_XZ\n\thelp\n\t  xz (a.k.a lzma) module for Python3\n\nconfig BR2_PACKAGE_PYTHON3_ZLIB\n\tbool \"zlib module\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  zlib support in Python3\n\nendmenu\n\nendif\n"
  },
  {
    "path": "package/python3/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_PYTHON3\n\tbool \"host python3\"\n\thelp\n\t  The python language interpreter. Host package.\n\n\t  http://www.python.org/\n\nif BR2_PACKAGE_HOST_PYTHON3\n\nconfig BR2_PACKAGE_HOST_PYTHON3_BZIP2\n\tbool \"bzip2\"\n\thelp\n\t  bz2 module for host Python3.\n\nconfig BR2_PACKAGE_HOST_PYTHON3_SSL\n\tbool \"ssl\"\n\tselect BR2_PACKAGE_HOST_OPENSSL\n\thelp\n\t  _ssl module for host Python3.\n\nendif\n"
  },
  {
    "path": "package/python3/python3.hash",
    "content": "# From https://www.python.org/downloads/release/python-397/\nmd5  fddb060b483bc01850a3f412eea1d954  Python-3.9.7.tar.xz\n# Locally computed\nsha256  f8145616e68c00041d1a6399b76387390388f8359581abc24432bb969b5e3c57  Python-3.9.7.tar.xz\nsha256  599826df92bfdcd2702eac691072498bb096c55af04ee984cf90f70ed77b5a70  LICENSE\n"
  },
  {
    "path": "package/python3/python3.mk",
    "content": "################################################################################\n#\n# python3\n#\n################################################################################\n\nPYTHON3_VERSION_MAJOR = 3.9\nPYTHON3_VERSION = $(PYTHON3_VERSION_MAJOR).7\nPYTHON3_SOURCE = Python-$(PYTHON3_VERSION).tar.xz\nPYTHON3_SITE = https://python.org/ftp/python/$(PYTHON3_VERSION)\nPYTHON3_LICENSE = Python-2.0, others\nPYTHON3_LICENSE_FILES = LICENSE\nPYTHON3_CPE_ID_VENDOR = python\nPYTHON3_CPE_ID_PRODUCT = python\n\n# This host Python is installed in $(HOST_DIR), as it is needed when\n# cross-compiling third-party Python modules.\n\nHOST_PYTHON3_CONF_OPTS += \\\n\t--without-ensurepip \\\n\t--without-cxx-main \\\n\t--disable-sqlite3 \\\n\t--disable-tk \\\n\t--with-expat=system \\\n\t--disable-curses \\\n\t--disable-codecs-cjk \\\n\t--disable-nis \\\n\t--enable-unicodedata \\\n\t--disable-test-modules \\\n\t--disable-idle3 \\\n\t--disable-ossaudiodev\n\n# Make sure that LD_LIBRARY_PATH overrides -rpath.\n# This is needed because libpython may be installed at the same time that\n# python is called.\n# Make python believe we don't have 'hg', so that it doesn't try to\n# communicate over the network during the build.\nHOST_PYTHON3_CONF_ENV += \\\n\tLDFLAGS=\"$(HOST_LDFLAGS) -Wl,--enable-new-dtags\" \\\n\tac_cv_prog_HAS_HG=/bin/false\n\nPYTHON3_DEPENDENCIES = host-python3 libffi\n\nHOST_PYTHON3_DEPENDENCIES = host-autoconf-archive host-expat host-zlib host-libffi\n\nifeq ($(BR2_PACKAGE_HOST_PYTHON3_BZIP2),y)\nHOST_PYTHON3_DEPENDENCIES += host-bzip2\nelse\nHOST_PYTHON3_CONF_OPTS += --disable-bzip2\nendif\n\nifeq ($(BR2_PACKAGE_HOST_PYTHON3_SSL),y)\nHOST_PYTHON3_DEPENDENCIES += host-openssl\nelse\nHOST_PYTHON3_CONF_OPTS += --disable-openssl\nendif\n\nPYTHON3_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_PYTHON3_2TO3),y)\nPYTHON3_CONF_OPTS += --enable-lib2to3\nelse\nPYTHON3_CONF_OPTS += --disable-lib2to3\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3_BERKELEYDB),y)\nPYTHON3_DEPENDENCIES += berkeleydb\nelse\nPYTHON3_CONF_OPTS += --disable-berkeleydb\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3_READLINE),y)\nPYTHON3_DEPENDENCIES += readline\nelse\nPYTHON3_CONF_OPTS += --disable-readline\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3_CURSES),y)\nPYTHON3_DEPENDENCIES += ncurses\nelse\nPYTHON3_CONF_OPTS += --disable-curses\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3_DECIMAL),y)\nPYTHON3_DEPENDENCIES += mpdecimal\nPYTHON3_CONF_OPTS += --with-libmpdec=system\nelse\nPYTHON3_CONF_OPTS += --with-libmpdec=none\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3_PYEXPAT),y)\nPYTHON3_DEPENDENCIES += expat\nPYTHON3_CONF_OPTS += --with-expat=system\nelse\nPYTHON3_CONF_OPTS += --with-expat=none\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3_SQLITE),y)\nPYTHON3_DEPENDENCIES += sqlite\nelse\nPYTHON3_CONF_OPTS += --disable-sqlite3\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3_SSL),y)\nPYTHON3_DEPENDENCIES += openssl\nelse\nPYTHON3_CONF_OPTS += --disable-openssl\nendif\n\nifneq ($(BR2_PACKAGE_PYTHON3_CODECSCJK),y)\nPYTHON3_CONF_OPTS += --disable-codecs-cjk\nendif\n\nifneq ($(BR2_PACKAGE_PYTHON3_UNICODEDATA),y)\nPYTHON3_CONF_OPTS += --disable-unicodedata\nendif\n\n# Disable auto-detection of uuid.h (util-linux)\n# which would add _uuid module support, instead\n# default to the pure python implementation\nPYTHON3_CONF_OPTS += --disable-uuid\n\nifeq ($(BR2_PACKAGE_PYTHON3_BZIP2),y)\nPYTHON3_DEPENDENCIES += bzip2\nelse\nPYTHON3_CONF_OPTS += --disable-bzip2\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3_XZ),y)\nPYTHON3_DEPENDENCIES += xz\nelse\nPYTHON3_CONF_OPTS += --disable-xz\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3_ZLIB),y)\nPYTHON3_DEPENDENCIES += zlib\nelse\nPYTHON3_CONF_OPTS += --disable-zlib\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3_OSSAUDIODEV),y)\nPYTHON3_CONF_OPTS += --enable-ossaudiodev\nelse\nPYTHON3_CONF_OPTS += --disable-ossaudiodev\nendif\n\n# Make python believe we don't have 'hg', so that it doesn't try to\n# communicate over the network during the build.\nPYTHON3_CONF_ENV += \\\n\tac_cv_have_long_long_format=yes \\\n\tac_cv_file__dev_ptmx=yes \\\n\tac_cv_file__dev_ptc=yes \\\n\tac_cv_working_tzset=yes \\\n\tac_cv_prog_HAS_HG=/bin/false\n\n# GCC is always compliant with IEEE754\nifeq ($(BR2_ENDIAN),\"LITTLE\")\nPYTHON3_CONF_ENV += ac_cv_little_endian_double=yes\nelse\nPYTHON3_CONF_ENV += ac_cv_big_endian_double=yes\nendif\n\n# uClibc is known to have a broken wcsftime() implementation, so tell\n# Python 3 to fall back to strftime() instead.\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\nPYTHON3_CONF_ENV += ac_cv_func_wcsftime=no\nendif\n\nifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y)\nPYTHON3_DEPENDENCIES += gettext\nendif\n\nPYTHON3_CONF_OPTS += \\\n\t--without-ensurepip \\\n\t--without-cxx-main \\\n\t--with-system-ffi \\\n\t--disable-pydoc \\\n\t--disable-test-modules \\\n\t--disable-tk \\\n\t--disable-nis \\\n\t--disable-idle3 \\\n\t--disable-pyc-build\n\n#\n# Some of CPython's source code is generated using Python interpreter\n# and some helper tools such as \"Programs/_freeze_importlib\" or\n# \"Parser/pgen\" (look for regen-* targets in Makefile.pre.in for more\n# info). Normally CPython codebase ships with those files\n# pre-generated, so just regular \"make\" with no additional steps\n# should be sufficient for a succesfull build, however due to\n# Buildroot's \"Add importlib fix for PEP 3147 issue\" custom patch we\n# end up modifying \"Lib/importlib/_bootstrap_external.py\" which means\n# we have to do \"regen-importlib\" step before building CPython\n# (Importlib is a builtin module that needs to be \"frozen\"/converted\n# to a C array of bytecode using \"Programs/_freeze_importlib\")\n#\n# To achive that we add pre-build steps to host-python3 as well as\n# python3 that execute \"regen-importlib\" target.\n#\n# Unfortunately, for the target Python, \"Programs/_freeze_importlib\"\n# is built for the target, while we need to run them at build time. So\n# when installing host-python3, we copy them to $(HOST_DIR)/bin...\n#\ndefine HOST_PYTHON3_MAKE_REGEN_IMPORTLIB\n\t$(HOST_MAKE_ENV) $(PYTHON3_CONF_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) regen-importlib\n\tcp $(@D)/Programs/_freeze_importlib $(HOST_DIR)/bin/python-freeze-importlib\nendef\n\nHOST_PYTHON3_PRE_BUILD_HOOKS += HOST_PYTHON3_MAKE_REGEN_IMPORTLIB\n#\n# ... And then, when building the target python we first buid\n# 'Programs/_freeze_importlib' to force GNU Make to update all of the\n# prerequisites of 'Programs/_freeze_importlib', then copy our stashed\n# \"host-usable\" version over the one that was just build and then\n# build \"regen-importlib\" target\n#\ndefine PYTHON3_MAKE_REGEN_IMPORTLIB\n\t$(TARGET_MAKE_ENV) $(PYTHON3_CONF_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) Programs/_freeze_importlib\n\tcp $(HOST_DIR)/bin/python-freeze-importlib $(@D)/Programs/_freeze_importlib\n\t$(TARGET_MAKE_ENV) $(PYTHON3_CONF_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) regen-importlib\nendef\n\nPYTHON3_PRE_BUILD_HOOKS += PYTHON3_MAKE_REGEN_IMPORTLIB\n\n#\n# Remove useless files. In the config/ directory, only the Makefile\n# and the pyconfig.h files are needed at runtime.\n#\ndefine PYTHON3_REMOVE_USELESS_FILES\n\trm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)-config\n\trm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)m-config\n\trm -f $(TARGET_DIR)/usr/bin/python3-config\n\trm -f $(TARGET_DIR)/usr/bin/smtpd.py.3\n\trm -f $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/distutils/command/wininst*.exe\n\tfor i in `find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)m-*/ \\\n\t\t-type f -not -name Makefile` ; do \\\n\t\trm -f $$i ; \\\n\tdone\n\trm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/__pycache__/\n\trm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/lib-dynload/sysconfigdata/__pycache__\n\trm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/collections/__pycache__\n\trm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/importlib/__pycache__\nendef\n\nPYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_REMOVE_USELESS_FILES\n\n#\n# Make sure libpython gets stripped out on target\n#\ndefine PYTHON3_ENSURE_LIBPYTHON_STRIPPED\n\tchmod u+w $(TARGET_DIR)/usr/lib/libpython$(PYTHON3_VERSION_MAJOR)*.so\nendef\n\nPYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_ENSURE_LIBPYTHON_STRIPPED\n\nPYTHON3_AUTORECONF = YES\nPYTHON3_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive\n\ndefine PYTHON3_INSTALL_SYMLINK\n\tln -fs python3 $(TARGET_DIR)/usr/bin/python\nendef\n\nifneq ($(BR2_PACKAGE_PYTHON),y)\nPYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_INSTALL_SYMLINK\nendif\n\n# Some packages may have build scripts requiring python3, whatever is the\n# python version chosen for the target.\n# Only install the python symlink in the host tree if python3 is enabled\n# for the target.\nifeq ($(BR2_PACKAGE_PYTHON3),y)\ndefine HOST_PYTHON3_INSTALL_SYMLINK\n\tln -fs python3 $(HOST_DIR)/bin/python\n\tln -fs python3-config $(HOST_DIR)/bin/python-config\nendef\n\nHOST_PYTHON3_POST_INSTALL_HOOKS += HOST_PYTHON3_INSTALL_SYMLINK\nendif\n\n# Provided to other packages\nPYTHON3_PATH = $(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/\n\n# Support for socket.AF_BLUETOOTH\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_HEADERS),y)\nPYTHON3_DEPENDENCIES += bluez5_utils-headers\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n\nifeq ($(BR2_REPRODUCIBLE),y)\ndefine PYTHON3_FIX_TIME\n\tfind $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) -name '*.py' -print0 | \\\n\t\txargs -0 --no-run-if-empty touch -d @$(SOURCE_DATE_EPOCH)\nendef\nendif\n\ndefine PYTHON3_CREATE_PYC_FILES\n\t$(PYTHON3_FIX_TIME)\n\tPYTHONPATH=\"$(PYTHON3_PATH)\" \\\n\t$(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) \\\n\t\t$(TOPDIR)/support/scripts/pycompile.py \\\n\t\t$(if $(VERBOSE),--verbose) \\\n\t\t--strip-root $(TARGET_DIR) \\\n\t\t$(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)\nendef\n\nifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY)$(BR2_PACKAGE_PYTHON3_PY_PYC),y)\nPYTHON3_TARGET_FINALIZE_HOOKS += PYTHON3_CREATE_PYC_FILES\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY),y)\ndefine PYTHON3_REMOVE_PY_FILES\n\tfind $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) -name '*.py' \\\n\t\t$(if $(strip $(KEEP_PYTHON_PY_FILES)),-not \\( $(call finddirclauses,$(TARGET_DIR),$(KEEP_PYTHON_PY_FILES)) \\) ) \\\n\t\t-print0 | \\\n\t\txargs -0 --no-run-if-empty rm -f\nendef\nPYTHON3_TARGET_FINALIZE_HOOKS += PYTHON3_REMOVE_PY_FILES\nendif\n\n# Normally, *.pyc files should not have been compiled, but just in\n# case, we make sure we remove all of them.\nifeq ($(BR2_PACKAGE_PYTHON3_PY_ONLY),y)\ndefine PYTHON3_REMOVE_PYC_FILES\n\tfind $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) -name '*.pyc' -print0 | \\\n\t\txargs -0 --no-run-if-empty rm -f\nendef\nPYTHON3_TARGET_FINALIZE_HOOKS += PYTHON3_REMOVE_PYC_FILES\nendif\n\n# In all cases, we don't want to keep the optimized .opt-1.pyc and\n# .opt-2.pyc files, since they can't work without their non-optimized\n# variant.\ndefine PYTHON3_REMOVE_OPTIMIZED_PYC_FILES\n\tfind $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) -name '*.opt-1.pyc' -print0 -o -name '*.opt-2.pyc' -print0 | \\\n\t\txargs -0 --no-run-if-empty rm -f\nendef\nPYTHON3_TARGET_FINALIZE_HOOKS += PYTHON3_REMOVE_OPTIMIZED_PYC_FILES\n"
  },
  {
    "path": "package/python3-cffi/python3-cffi.mk",
    "content": "################################################################################\n#\n# python3-cffi\n#\n################################################################################\n\n# Please keep in sync with package/python-cffi/python-cffi.mk\nPYTHON3_CFFI_VERSION = 1.14.6\nPYTHON3_CFFI_SOURCE = cffi-$(PYTHON3_CFFI_VERSION).tar.gz\nPYTHON3_CFFI_SITE = https://files.pythonhosted.org/packages/2e/92/87bb61538d7e60da8a7ec247dc048f7671afe17016cd0008b3b710012804\nPYTHON3_CFFI_SETUP_TYPE = setuptools\nPYTHON3_CFFI_LICENSE = MIT\nPYTHON3_CFFI_LICENSE_FILES = LICENSE\n\n# This host package uses pkg-config to find libffi, so we have to\n# provide the proper hints for pkg-config to behave properly for host\n# packages.\nHOST_PYTHON3_CFFI_ENV = \\\n\tPKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \\\n\tPKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \\\n\tPKG_CONFIG=\"$(PKG_CONFIG_HOST_BINARY)\" \\\n\tPKG_CONFIG_SYSROOT_DIR=\"/\" \\\n\tPKG_CONFIG_LIBDIR=\"$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig\"\nHOST_PYTHON3_CFFI_DEPENDENCIES = host-pkgconf host-python3-pycparser host-libffi\n\nHOST_PYTHON3_CFFI_DL_SUBDIR = python-cffi\nHOST_PYTHON3_CFFI_NEEDS_HOST_PYTHON = python3\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python3-cheetah/python3-cheetah.mk",
    "content": "################################################################################\n#\n# python3-cheetah\n#\n################################################################################\n\n# Please keep in sync with\n# package/python-cheetah/python-cheetah.mk\nPYTHON3_CHEETAH_VERSION = 3.2.6.post2\nPYTHON3_CHEETAH_SOURCE = Cheetah3-$(PYTHON3_CHEETAH_VERSION).tar.gz\nPYTHON3_CHEETAH_SITE = https://files.pythonhosted.org/packages/c0/97/c3fa47e223207e6ca6b501a954c5c959ed3e99f2a1ceec9918238ce38418\nPYTHON3_CHEETAH_LICENSE = MIT\nPYTHON3_CHEETAH_LICENSE_FILES = LICENSE\nPYTHON3_CHEETAH_SETUP_TYPE = setuptools\nHOST_PYTHON3_CHEETAH_DL_SUBDIR = python-cheetah\nHOST_PYTHON3_CHEETAH_NEEDS_HOST_PYTHON = python3\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python3-cython/python3-cython.mk",
    "content": "################################################################################\n#\n# python3-cython\n#\n################################################################################\n\n# Please keep in sync with package/python-cython/python-cython.mk\nPYTHON3_CYTHON_VERSION = 0.29.24\nPYTHON3_CYTHON_SOURCE = Cython-$(PYTHON3_CYTHON_VERSION).tar.gz\nPYTHON3_CYTHON_SITE = https://files.pythonhosted.org/packages/59/e3/78c921adf4423fff68da327cc91b73a16c63f29752efe7beb6b88b6dd79d\nPYTHON3_CYTHON_SETUP_TYPE = setuptools\nPYTHON3_CYTHON_LICENSE = Apache-2.0\nPYTHON3_CYTHON_LICENSE_FILES = COPYING.txt LICENSE.txt\nHOST_PYTHON3_CYTHON_NEEDS_HOST_PYTHON = python3\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python3-ply/python3-ply.mk",
    "content": "################################################################################\n#\n# python3-ply\n#\n################################################################################\n\nPYTHON3_PLY_VERSION = 3.11\nPYTHON3_PLY_SOURCE = ply-$(PYTHON3_PLY_VERSION).tar.gz\nPYTHON3_PLY_SITE = https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da\nPYTHON3_PLY_SETUP_TYPE = setuptools\nPYTHON3_PLY_LICENSE = BSD-3-Clause\nPYTHON3_PLY_LICENSE_FILES = README.md\n\nHOST_PYTHON3_PLY_NEEDS_HOST_PYTHON = python3\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python3-psutil/python3-psutil.mk",
    "content": "################################################################################\n#\n# python3-psutil\n#\n################################################################################\n\n# Please keep in sync with package/python-psutil/python-psutil.mk\nPYTHON3_PSUTIL_VERSION = 5.8.0\nPYTHON3_PSUTIL_SOURCE = psutil-$(PYTHON3_PSUTIL_VERSION).tar.gz\nPYTHON3_PSUTIL_SITE = https://files.pythonhosted.org/packages/e1/b0/7276de53321c12981717490516b7e612364f2cb372ee8901bd4a66a000d7\nPYTHON3_PSUTIL_SETUP_TYPE = setuptools\nPYTHON3_PSUTIL_LICENSE = BSD-3-Clause\nPYTHON3_PSUTIL_LICENSE_FILES = LICENSE\nPYTHON3_PSUTIL_CPE_ID_VENDOR = psutil_project\nPYTHON3_PSUTIL_CPE_ID_PRODUCT = psutil\nHOST_PYTHON3_PSUTIL_DL_SUBDIR = python-psutil\nHOST_PYTHON3_PSUTIL_NEEDS_HOST_PYTHON = python3\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python3-pycparser/python3-pycparser.mk",
    "content": "################################################################################\n#\n# python3-pycparser\n#\n################################################################################\n\n# Please keep in sync with package/python-pycparser/python-pycparser.mk\nPYTHON3_PYCPARSER_VERSION = 2.20\nPYTHON3_PYCPARSER_SOURCE = pycparser-$(PYTHON3_PYCPARSER_VERSION).tar.gz\nPYTHON3_PYCPARSER_SITE = https://files.pythonhosted.org/packages/0f/86/e19659527668d70be91d0369aeaa055b4eb396b0f387a4f92293a20035bd\nPYTHON3_PYCPARSER_SETUP_TYPE = setuptools\nPYTHON3_PYCPARSER_LICENSE = BSD-3-Clause\nPYTHON3_PYCPARSER_LICENSE_FILES = LICENSE\nHOST_PYTHON3_PYCPARSER_DL_SUBDIR = python-pycparser\nHOST_PYTHON3_PYCPARSER_NEEDS_HOST_PYTHON = python3\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python3-pycryptodomex/python3-pycryptodomex.mk",
    "content": "################################################################################\n#\n# python3-pycryptodomex\n#\n################################################################################\n\n# Please keep in sync with package/python-pycryptodomex/python-pycryptodomex.mk\nPYTHON3_PYCRYPTODOMEX_VERSION = 3.11.0\nPYTHON3_PYCRYPTODOMEX_SOURCE = pycryptodomex-$(PYTHON3_PYCRYPTODOMEX_VERSION).tar.gz\nPYTHON3_PYCRYPTODOMEX_SITE = https://files.pythonhosted.org/packages/47/14/dd9ad29cd29ea4cc521286f2cb401ca7ac6fd5db0791c5e9bacaf2c9ac78\nPYTHON3_PYCRYPTODOMEX_SETUP_TYPE = setuptools\nPYTHON3_PYCRYPTODOMEX_LICENSE = \\\n\tBSD-2-Clause, \\\n\tPublic Domain (pycrypto original code), \\\n\tOCB patent license (OCB mode)\nPYTHON3_PYCRYPTODOMEX_LICENSE_FILES = LICENSE.rst Doc/LEGAL/COPYRIGHT.pycrypto\nHOST_PYTHON3_PYCRYPTODOMEX_DL_SUBDIR = python-pycryptodomex\nHOST_PYTHON3_PYCRYPTODOMEX_NEEDS_HOST_PYTHON = python3\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python3-pyelftools/python3-pyelftools.mk",
    "content": "################################################################################\n#\n# python3-pyelftools\n#\n################################################################################\n\n# Please keep in sync with package/python-pyelftools/python-pyelftools.mk\nPYTHON3_PYELFTOOLS_VERSION = 0.27\nPYTHON3_PYELFTOOLS_SOURCE = pyelftools-$(PYTHON3_PYELFTOOLS_VERSION).tar.gz\nPYTHON3_PYELFTOOLS_SITE = https://files.pythonhosted.org/packages/6b/b5/f7022f2d950327ba970ec85fb8f85c79244031092c129b6f34ab17514ae0\nPYTHON3_PYELFTOOLS_LICENSE = Public domain\nPYTHON3_PYELFTOOLS_LICENSE_FILES = LICENSE\nPYTHON3_PYELFTOOLS_SETUP_TYPE = setuptools\nHOST_PYTHON3_PYELFTOOLS_DL_SUBDIR = python-pyelftools\nHOST_PYTHON3_PYELFTOOLS_NEEDS_HOST_PYTHON = python3\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python3-pyyaml/python3-pyyaml.mk",
    "content": "################################################################################\n#\n# python3-pyyaml\n#\n################################################################################\n\n# Please keep in sync with package/python-pyyaml/python-pyyaml.mk\nPYTHON3_PYYAML_VERSION = 5.4.1\nPYTHON3_PYYAML_SOURCE = PyYAML-$(PYTHON3_PYYAML_VERSION).tar.gz\nPYTHON3_PYYAML_SITE = https://files.pythonhosted.org/packages/a0/a4/d63f2d7597e1a4b55aa3b4d6c5b029991d3b824b5bd331af8d4ab1ed687d\nPYTHON3_PYYAML_SETUP_TYPE = setuptools\nPYTHON3_PYYAML_LICENSE = MIT\nPYTHON3_PYYAML_LICENSE_FILES = LICENSE\nPYTHON3_PYYAML_CPE_ID_VENDOR = pyyaml\nPYTHON3_PYYAML_CPE_ID_PRODUCT = pyyaml\nHOST_PYTHON3_PYYAML_DL_SUBDIR = python-pyyaml\nHOST_PYTHON3_PYYAML_NEEDS_HOST_PYTHON = python3\nHOST_PYTHON3_PYYAML_DEPENDENCIES = host-libyaml\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python3-regex/python3-regex.mk",
    "content": "################################################################################\n#\n# python3-regex\n#\n################################################################################\n\n# Please keep in sync with package/python-regex/python-regex.mk\nPYTHON3_REGEX_VERSION = 2021.4.4\nPYTHON3_REGEX_SOURCE = regex-$(PYTHON3_REGEX_VERSION).tar.gz\nPYTHON3_REGEX_SITE = https://files.pythonhosted.org/packages/38/3f/4c42a98c9ad7d08c16e7d23b2194a0e4f3b2914662da8bc88986e4e6de1f\nPYTHON3_REGEX_SETUP_TYPE = setuptools\nPYTHON3_REGEX_LICENSE = CNRI-Python\nHOST_PYTHON3_REGEX_DL_SUBDIR = python-regex\nHOST_PYTHON3_REGEX_NEEDS_HOST_PYTHON = python3\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python3-setuptools/python3-setuptools.mk",
    "content": "################################################################################\n#\n# python3-setuptools\n#\n################################################################################\n\n# Please keep in sync with\n# package/python-setuptools/python-setuptools.mk\nPYTHON3_SETUPTOOLS_VERSION = 44.0.0\nPYTHON3_SETUPTOOLS_SOURCE = setuptools-$(PYTHON3_SETUPTOOLS_VERSION).zip\nPYTHON3_SETUPTOOLS_SITE = https://files.pythonhosted.org/packages/b0/f3/44da7482ac6da3f36f68e253cb04de37365b3dba9036a3c70773b778b485\nPYTHON3_SETUPTOOLS_LICENSE = MIT\nPYTHON3_SETUPTOOLS_LICENSE_FILES = LICENSE\nPYTHON3_SETUPTOOLS_CPE_ID_VENDOR = python\nPYTHON3_SETUPTOOLS_CPE_ID_PRODUCT = setuptools\nPYTHON3_SETUPTOOLS_SETUP_TYPE = setuptools\nHOST_PYTHON3_SETUPTOOLS_DL_SUBDIR = python-setuptools\nHOST_PYTHON3_SETUPTOOLS_NEEDS_HOST_PYTHON = python3\n\ndefine HOST_PYTHON3_SETUPTOOLS_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(HOST_PYTHON3_SETUPTOOLS_DL_DIR)/$(PYTHON3_SETUPTOOLS_SOURCE)\n\tmv $(@D)/setuptools-$(PYTHON3_SETUPTOOLS_VERSION)/* $(@D)\n\t$(RM) -r $(@D)/setuptools-$(PYTHON3_SETUPTOOLS_VERSION)\nendef\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/python3-six/python3-six.mk",
    "content": "################################################################################\n#\n# python3-six\n#\n################################################################################\n\n# Please keep in sync with package/python-six/python-six.mk\nPYTHON3_SIX_VERSION = 1.16.0\nPYTHON3_SIX_SOURCE = six-$(PYTHON3_SIX_VERSION).tar.gz\nPYTHON3_SIX_SITE = https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e\nPYTHON3_SIX_SETUP_TYPE = setuptools\nPYTHON3_SIX_LICENSE = MIT\nPYTHON3_SIX_LICENSE_FILES = LICENSE\nHOST_PYTHON3_SIX_DL_SUBDIR = python-six\nHOST_PYTHON3_SIX_NEEDS_HOST_PYTHON = python3\n\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/qcom-db410c-firmware/Config.in",
    "content": "config BR2_PACKAGE_QCOM_DB410C_FIRMWARE\n\tbool \"qcom-db410c-firmware\"\n\tselect BR2_PACKAGE_HOST_MTOOLS\n\thelp\n\t  Wifi/BT firmware for Qualcomm Dragonboard 410c SBC.\n\n\t  https://releases.linaro.org/96boards/dragonboard410c/qualcomm/firmware/\n"
  },
  {
    "path": "package/qcom-db410c-firmware/qcom-db410c-firmware.hash",
    "content": "# Locally calculated\nsha256  46953b974c5c58c7ca66db414437c0268b033ac9d28127e98d9c4e1a49359da5  linux-board-support-package-r1034.2.1.zip\nsha256  11e60ad6f83c2a86e40dca374c24230b53650dd3e0adf2e72c15f8cafedc2e5a  LICENSE\n"
  },
  {
    "path": "package/qcom-db410c-firmware/qcom-db410c-firmware.mk",
    "content": "################################################################################\n#\n# qcom-db410c-firmware\n#\n################################################################################\n\nQCOM_DB410C_FIRMWARE_VERSION = 1034.2.1\nQCOM_DB410C_FIRMWARE_BASE = linux-board-support-package-r$(QCOM_DB410C_FIRMWARE_VERSION)\nQCOM_DB410C_FIRMWARE_SOURCE = $(QCOM_DB410C_FIRMWARE_BASE).zip\nQCOM_DB410C_FIRMWARE_SITE = https://releases.linaro.org/96boards/dragonboard410c/qualcomm/firmware\nQCOM_DB410C_FIRMWARE_LICENCE = Qualcomm firmware license\nQCOM_DB410C_FIRMWARE_LICENSE_FILES = LICENSE\nQCOM_DB410C_FIRMWARE_DEPENDENCIES = host-mtools\n\ndefine QCOM_DB410C_FIRMWARE_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) \\\n\t\t$(QCOM_DB410C_FIRMWARE_DL_DIR)/$(QCOM_DB410C_FIRMWARE_SOURCE)\n\tmv $(@D)/$(QCOM_DB410C_FIRMWARE_BASE)/* $(@D)\n\trmdir $(@D)/$(QCOM_DB410C_FIRMWARE_BASE)\nendef\n\n# Install the Wifi/Bt firmware blobs to target. These commands are\n# based on firmware-qcom-dragonboard410c_*.bb in the OpenEmbedded\n# meta-qcom layer, see https://github.com/ndechesne/meta-qcom\ndefine QCOM_DB410C_FIRMWARE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0644 \\\n\t\t$(@D)/efs-seed/fs_image_linux.tar.gz.mbn.img \\\n\t\t$(TARGET_DIR)/boot/modem_fsg\n\n\t$(INSTALL) -d $(TARGET_DIR)/lib/firmware\n\tcp -r $(@D)/proprietary-linux/wlan \\\n\t\t$(TARGET_DIR)/lib/firmware/\n\n\t$(INSTALL) -d $(TARGET_DIR)/lib/firmware/qcom/msm8916\n\tMTOOLS_SKIP_CHECK=1 $(HOST_DIR)/bin/mcopy -n -i \\\n\t\t$(@D)/bootloaders-linux/NON-HLOS.bin \\\n\t\t::image/modem.* ::image/mba.mbn ::image/wcnss.* \\\n\t\t$(TARGET_DIR)/lib/firmware/qcom/msm8916\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/qdecoder/Config.in",
    "content": "config BR2_PACKAGE_QDECODER\n\tbool \"qdecoder\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  qDecoder is a simple and powerful CGI library\n\t  for the C/C++ programming language.\n\n\t  http://wolkykim.github.io/qdecoder\n"
  },
  {
    "path": "package/qdecoder/qdecoder.hash",
    "content": "# Locally calculated\nsha256  3911576ad8766697a9c8c767458edc953ae686eb53cd31d21e38edd7831ed9aa  qdecoder-12.0.8.tar.gz\nsha256  17e647523e5c5c75fd02861dcf3ea91a146d918ab303460ee58135c9dd70904e  COPYING\n"
  },
  {
    "path": "package/qdecoder/qdecoder.mk",
    "content": "################################################################################\n#\n# qdecoder\n#\n################################################################################\n\nQDECODER_VERSION = 12.0.8\nQDECODER_SITE = $(call github,wolkykim,qdecoder,v$(QDECODER_VERSION))\nQDECODER_LICENSE = BSD-2-Clause\nQDECODER_LICENSE_FILES = COPYING\nQDECODER_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'\n\nQDECODER_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/qemu/0002-softmmu-qemu-seccomp.c-add-missing-header-for-CLONE_.patch",
    "content": "From df07d3754bdf15e0efac244cfee290c9bac86352 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Mon, 2 May 2022 23:17:46 +0200\nSubject: [PATCH] softmmu/qemu-seccomp.c: add missing header for CLONE_NEWGROUP\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nWith seccomp support enabled Qemu 7.0.0 fail to build with the\nfollowing error:\n\n../softmmu/qemu-seccomp.c:116:19: error: ‘CLONE_NEWCGROUP’ undeclared here (not in a function)\n  116 | FORBID_CLONE_FLAG(CLONE_NEWCGROUP);\n      |                   ^~~~~~~~~~~~~~~\n../softmmu/qemu-seccomp.c:73:18: note: in definition of macro ‘FORBID_CLONE_FLAG’\n   73 |       .datum_a = flag, .datum_b = flag } }\n      |                  ^~~~\n\nCLONE_NEWCGROUP has been added in Qemu 7.0.0 by commit [1].\n\n[1] https://git.qemu.org/?p=qemu.git;a=commitdiff;h=5a2f693f07a1e93ada5277b2fb1530b2698be0fa\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n softmmu/qemu-seccomp.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/softmmu/qemu-seccomp.c b/softmmu/qemu-seccomp.c\nindex deaf8a4ef5..96c83e121f 100644\n--- a/softmmu/qemu-seccomp.c\n+++ b/softmmu/qemu-seccomp.c\n@@ -21,6 +21,7 @@\n #include <sys/prctl.h>\n #include <seccomp.h>\n #include \"sysemu/seccomp.h\"\n+#include <linux/sched.h>\n #include <linux/seccomp.h>\n \n /* For some architectures (notably ARM) cacheflush is not supported until\n-- \n2.35.1\n\n"
  },
  {
    "path": "package/qemu/0002-tests-fp-disable-fp-bench-build-by-default.patch",
    "content": "From 83d976d6d7f0357659d5daa0f01c52048a609e88 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Wed, 25 Aug 2021 21:55:53 +0200\nSubject: [PATCH] tests/fp: disable fp-bench build by default\n\nFixes:\nhttps://lists.nongnu.org/archive/html/qemu-devel/2021-03/msg00947.html\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n tests/fp/meson.build | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/tests/fp/meson.build b/tests/fp/meson.build\nindex 8bd0979f67..2fe019d2c6 100644\n--- a/tests/fp/meson.build\n+++ b/tests/fp/meson.build\n@@ -636,6 +636,7 @@ fpbench = executable(\n   dependencies: [qemuutil],\n   include_directories: [sfinc, include_directories(tfdir)],\n   c_args: fpcflags,\n+  build_by_default: false,\n )\n \n fptestlog2 = executable(\n-- \n2.35.1\n\n"
  },
  {
    "path": "package/qemu/0003-target-sh4-Mask-restore-of-env-flags-from-tb-flags.patch",
    "content": "From bc2331635ce18ff068d2bb1e493bc546e1f786e1 Mon Sep 17 00:00:00 2001\nFrom: Guenter Roeck <linux@roeck-us.net>\nDate: Mon, 12 Dec 2022 09:03:17 -0600\nSubject: [PATCH] target/sh4: Mask restore of env->flags from tb->flags\n\nThe values in env->flags are a subset of tb->flags.\nRestore only the bits that belong.\n\nCc: qemu-stable@nongnu.org\nFixes: ab419fd8a035 (\"target/sh4: Fix TB_FLAG_UNALIGN\")\nSigned-off-by: Guenter Roeck <linux@roeck-us.net>\nMessage-ID: <20221212011345.GA2235238@roeck-us.net>\n[rth: Reduce to only the the superh_cpu_synchronize_from_tb change]\nSigned-off-by: Richard Henderson <richard.henderson@linaro.org>\n[yann.morin.1998@free.fr: backport from upstream]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n target/sh4/cpu.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/target/sh4/cpu.c b/target/sh4/cpu.c\nindex 951eb6b9c8..f0934b20fa 100644\n--- a/target/sh4/cpu.c\n+++ b/target/sh4/cpu.c\n@@ -47,7 +47,7 @@ static void superh_cpu_synchronize_from_tb(CPUState *cs,\n     SuperHCPU *cpu = SUPERH_CPU(cs);\n \n     cpu->env.pc = tb_pc(tb);\n-    cpu->env.flags = tb->flags;\n+    cpu->env.flags = tb->flags & TB_FLAG_ENVFLAGS_MASK;\n }\n \n static void superh_restore_state_to_opc(CPUState *cs,\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/qemu/Config.in",
    "content": "config BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET\n\tbool\n\t# Only tested on these architectures\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5\n\tdefault y if BR2_i386\n\tdefault y if BR2_mips\n\tdefault y if BR2_mipsel\n\tdefault y if BR2_powerpc64\n\tdefault y if BR2_powerpc64le\n\tdefault y if BR2_x86_64\n\ncomment \"QEMU requires a toolchain with wchar, threads, gcc >= 8\"\n\tdepends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET\n\tdepends on BR2_USE_MMU\n\tdepends on !(BR2_TOOLCHAIN_HAS_THREADS && BR2_USE_WCHAR) || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\nmenuconfig BR2_PACKAGE_QEMU\n\tbool \"QEMU\"\n\tdepends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR # gettext\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_QEMU_SYSTEM if !BR2_PACKAGE_QEMU_LINUX_USER\n\thelp\n\t  QEMU is a generic and open source machine emulator and\n\t  virtualizer.\n\n\t  When used as a machine emulator, QEMU can run OSes and\n\t  programs made for one machine (e.g. an ARM board) on a\n\t  different machine (e.g.  your own PC). By using dynamic\n\t  translation, it achieves very good performance.\n\n\t  When used as a virtualizer, QEMU achieves near native\n\t  performances by executing the guest code directly on the\n\t  host CPU. QEMU supports virtualization when executing under\n\t  the Xen hypervisor or using the KVM kernel module in\n\t  Linux. When using KVM, QEMU can virtualize x86, server and\n\t  embedded PowerPC, and S390 guests.\n\n\t  http://qemu.org/\n\nif BR2_PACKAGE_QEMU\n\ncomment \"Emulators selection\"\n\nconfig BR2_PACKAGE_QEMU_SYSTEM\n\tbool \"Enable systems emulation\"\n\tdepends on !BR2_STATIC_LIBS # dtc\n\tselect BR2_PACKAGE_PIXMAN\n\thelp\n\t  Say 'y' to build system emulators/virtualisers.\n\nif BR2_PACKAGE_QEMU_SYSTEM\n\nconfig BR2_PACKAGE_QEMU_BLOBS\n\tbool \"Install binary blobs\"\n\tdefault y\n\thelp\n\t  Say 'y' here (the default) to install binary blobs (such as\n\t  BIOS or firmwares for the different machines simulated by\n\t  QEMU). Say 'n' to not install those blobs.\n\n\t  Note: Some machines may be unbootable without those blobs.\n\t  If unsure, say 'y'.\n\nconfig BR2_PACKAGE_QEMU_SLIRP\n\tbool \"Enable user mode networking (SLIRP)\"\n\tselect BR2_PACKAGE_SLIRP\n\thelp\n\t  Enable user mode network stack, which is the default\n\t  networking backend. It requires no administrator privileges\n\t  and generally is the easiest to use but has some\n\t  limitations:\n\n\t  - there is a lot of overhead so the performance is poor;\n\t  - in general ICMP does not work (can't ping from/to a guest)\n\t  - on Linux hosts, ping does work from within the guest, but it\n\t    needs initial setup by root (once per host)\n\t  - the guest is not directly accessible from the host or the\n\t    external network\n\n\t  User Networking is implemented using \"slirp\", which provides a\n\t  full TCP/IP stack within QEMU and uses that stack to implement\n\t  a virtual NAT'd network.\n\n\t  Notice that this option does not disable other networking\n\t  modes.\n\nconfig BR2_PACKAGE_QEMU_SDL\n\tbool \"Enable SDL frontend\"\n\tselect BR2_PACKAGE_SDL2\n\thelp\n\t  Say 'y' to enable the SDL frontend, that is, a graphical\n\t  window presenting the VM's display.\n\nconfig BR2_PACKAGE_QEMU_FDT\n\tbool \"Enable FDT\"\n\tselect BR2_PACKAGE_DTC\n\thelp\n\t  Say 'y' here to have QEMU capable of constructing Device\n\t  Trees, and passing them to the VMs.\n\nendif # BR2_PACKAGE_QEMU_SYSTEM\n\ncomment \"systems emulation needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_QEMU_LINUX_USER\n\tbool \"Enable Linux user-land emulation\"\n\t# Incompatible \"struct sigevent\" definition on musl\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  Say 'y' to build Linux user-land emulators.\n\n# Note: bsd-user can not be build on Linux\n\ncomment \"Linux user-land emulation needs a glibc or uClibc toolchain\"\n\tdepends on BR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_QEMU_CHOOSE_TARGETS\n\tbool \"Select individual emulator targets\"\n\thelp\n\t  By default, all targets (system and/or user, subject to the\n\t  corresponding options, above) are built. If you only need a\n\t  subset of the emulated targets, say 'y' here and enable at\n\t  least one target, below.\n\nif BR2_PACKAGE_QEMU_CHOOSE_TARGETS\n\nconfig BR2_PACKAGE_QEMU_TARGET_AARCH64\n\tbool \"aarch64\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  ARM 64-bit architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_AARCH64_BE\n\tbool \"aarch64_be (linux-user, only)\"\n\tdepends on BR2_PACKAGE_QEMU_LINUX_USER\n\thelp\n\t  ARM 64-bit architecture, big-endian.\n\nconfig BR2_PACKAGE_QEMU_TARGET_ALPHA\n\tbool \"alpha\"\n\thelp\n\t  DEC Alpha 64-bit RISC architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_ARM\n\tbool \"arm\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  ARM EABI architecture, little-endian.\n\nconfig BR2_PACKAGE_QEMU_TARGET_ARMEB\n\tbool \"armeb (linux-user, only)\"\n\tdepends on BR2_PACKAGE_QEMU_LINUX_USER\n\thelp\n\t  ARM EABI architecture, big-endian.\n\nconfig BR2_PACKAGE_QEMU_TARGET_AVR\n\tbool \"avr (system, only)\"\n\tdepends on BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  AVR 8-bit microcontroller architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_CRIS\n\tbool \"cris\"\n\thelp\n\t  ETRAX CRIS microcontroller architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_HEXAGON\n\tbool \"hexagon (linux-user, only)\"\n\tdepends on BR2_PACKAGE_QEMU_LINUX_USER\n\thelp\n\t  Qualcomm's Hexagon VLSI DSP architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_HPPA\n\tbool \"hppa\"\n\thelp\n\t  HP PA-RISC architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_I386\n\tbool \"i386\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  Intel i386 32-bit architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_LOONGARCH64\n\tbool \"loongarch64\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  Loongson 64-bit RISC architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_M68K\n\tbool \"m68k\"\n\thelp\n\t  Motorola 68000 architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_MICROBLAZE\n\tbool \"microblaze\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  Xilinix MicroBlaze soft processor.\n\nconfig BR2_PACKAGE_QEMU_TARGET_MICROBLAZEEL\n\tbool \"microblazeel\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  Xilinix MicroBlaze EL soft processor.\n\nconfig BR2_PACKAGE_QEMU_TARGET_MIPS\n\tbool \"mips\"\n\thelp\n\t  MIPS 32-bit architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_MIPSEL\n\tbool \"mipsel\"\n\thelp\n\t  MIPS 32-bit architecture, little-endian.\n\nconfig BR2_PACKAGE_QEMU_TARGET_MIPS64\n\tbool \"mips64\"\n\thelp\n\t  MIPS 64-bit architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_MIPS64EL\n\tbool \"mips64el\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  MIPS 64-bit architecture, little-endian.\n\nconfig BR2_PACKAGE_QEMU_TARGET_MIPSN32\n\tbool \"mipsn32 (linux-user, only)\"\n\tdepends on BR2_PACKAGE_QEMU_LINUX_USER\n\thelp\n\t  MIPS N32 architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_MIPSN32EL\n\tbool \"mipsn32el (linux-user, only)\"\n\tdepends on BR2_PACKAGE_QEMU_LINUX_USER\n\thelp\n\t  MIPS N32 architecture, little-endian.\n\nconfig BR2_PACKAGE_QEMU_TARGET_NIOS2\n\tbool \"nios2\"\n\thelp\n\t  Nios II architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_OR1K\n\tbool \"or1k\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  OpenRISC 1000 architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_PPC\n\tbool \"ppc\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  PoewerPC 32-bit architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_PPC64\n\tbool \"ppc64\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  PoewerPC 64-bit architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_PPC64LE\n\tbool \"ppc64le (linux-user, only)\"\n\tdepends on BR2_PACKAGE_QEMU_LINUX_USER\n\thelp\n\t  PoewerPC 64-bit architecture, little-endian.\n\nconfig BR2_PACKAGE_QEMU_TARGET_RISCV32\n\tbool \"riscv32\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  RISC-V 33-bit architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_RISCV64\n\tbool \"riscv64\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  RISC-V 64-bit architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_RX\n\tbool \"rx (system-only)\"\n\tdepends on BR2_PACKAGE_QEMU_SYSTEM\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  Renesas Electronics RX 32-bit architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_S390X\n\tbool \"s390x\"\n\thelp\n\t  IBM z/Architecture 64-bit mainframe (s390x)\n\nconfig BR2_PACKAGE_QEMU_TARGET_SH4\n\tbool \"sh4\"\n\thelp\n\t  Super-H 32-bit RISC architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_SH4EB\n\tbool \"sh4eb\"\n\thelp\n\t  Super-H EB 32-bit RISC architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_SPARC\n\tbool \"sparc\"\n\thelp\n\t  SPARC 32-bit RISC architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_SPARC32PLUS\n\tbool \"sparc32plus (linux-user, only)\"\n\tdepends on BR2_PACKAGE_QEMU_LINUX_USER\n\thelp\n\t  SPARC 32-bit RISC architecture (Sun's v8plus).\n\nconfig BR2_PACKAGE_QEMU_TARGET_SPARC64\n\tbool \"sparc64\"\n\thelp\n\t  SPARC 64-bit RISC architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_TRICORE\n\tbool \"tricore (system, only)\"\n\tdepends on BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  Infineon TriCore 32-bit RISC architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_X86_64\n\tbool \"x86_64\"\n\tselect BR2_PACKAGE_QEMU_FDT if BR2_PACKAGE_QEMU_SYSTEM\n\thelp\n\t  Intel x86 64-bit architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_XTENSA\n\tbool \"xtensa\"\n\thelp\n\t  Xtensa 32-bit RISC architecture.\n\nconfig BR2_PACKAGE_QEMU_TARGET_XTENSAEB\n\tbool \"xtensaeb\"\n\thelp\n\t  Xtensa 32-bit RISC architecture, big-endian.\n\nendif # BR2_PACKAGE_QEMU_CHOOSE_TARGETS\n\ncomment \"Tools selection\"\n\nconfig BR2_PACKAGE_QEMU_TOOLS\n\tbool \"Enable tools\"\n\thelp\n\t  Say 'y' here to include tools packaged with QEMU\n\t  (e.g. qemu-img).\n\nendif # BR2_PACKAGE_QEMU\n"
  },
  {
    "path": "package/qemu/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_arm\n\tdefault y if BR2_armeb\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_i386\n\tdefault y if BR2_m68k\n\tdefault y if BR2_microblazeel\n\tdefault y if BR2_microblazebe\n\tdefault y if BR2_mips\n\tdefault y if BR2_mipsel\n\tdefault y if BR2_nios2\n\tdefault y if BR2_or1k\n\tdefault y if BR2_powerpc\n\tdefault y if BR2_powerpc64\n\tdefault y if BR2_powerpc64le\n\tdefault y if BR2_riscv\n\tdefault y if BR2_s390x\n\tdefault y if BR2_sh\n\tdefault y if BR2_sparc\n\tdefault y if BR2_sparc64\n\tdefault y if BR2_xtensa\n\tdefault y if BR2_x86_64\n\tdepends on !BR2_x86_steamroller && !BR2_x86_core_avx2\n\tdepends on !BR2_powerpc_620 && !BR2_powerpc_630 && !BR2_powerpc_970\n\nconfig BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS\n\tdefault y if BR2_mips64\n\tdefault y if BR2_mips64el\n\nconfig BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS\n\nconfig BR2_PACKAGE_HOST_QEMU\n\tbool \"host qemu\"\n\tdepends on BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS || BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS\n\tdepends on BR2_HOST_GCC_AT_LEAST_8\n\tselect BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE \\\n\t\tif !BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE && BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE \\\n\t\tif !BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS\n\thelp\n\t  QEMU is a generic and open source machine emulator and\n\t  virtualizer.\n\n\t  This option builds an emulator for your selected architecture.\n\n\t  http://www.qemu.org\n\ncomment \"host-qemu needs a host gcc >= 8\"\n\tdepends on BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS || \\\n\t\tBR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORT\n\tdepends on !BR2_HOST_GCC_AT_LEAST_8\n\nif BR2_PACKAGE_HOST_QEMU\n\ncomment \"Emulators selection\"\n\nconfig BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE\n\tbool \"Enable system emulation\"\n\tdepends on BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS\n\thelp\n\t  Enables the build of the system emulator, which allows to\n\t  boot an entire system in Qemu.\n\nconfig BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE\n\tbool \"Enable Linux user-land emulation\"\n\tdepends on BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS\n\thelp\n\t  Enables the build of the user-land emulator, which allows to\n\t  run user-space applications.\n\n\t  Note that system calls made by the emulated user-land are\n\t  serviced by the running host kernel. Therefore, if the\n\t  kernel headers used by your target are more recent than\n\t  the running host kernel, you may run into invalid system\n\t  calls, which may yield surprising effects.\n\nconfig BR2_PACKAGE_HOST_QEMU_USER_MODE_ARGS\n\tstring\n\tdefault \"-cpu Nehalem,check=false\" if BR2_x86_corei7\n\nconfig BR2_PACKAGE_HOST_QEMU_VDE2\n\tbool \"VDE2 support\"\n\thelp\n\t  Enables VDE2 support. VDE2 stands for Virtual Distributed\n\t  Ethernet and can be used to create virtual switches to\n\t  \"plug\" both physical and virtual machines in them.\n\nconfig BR2_PACKAGE_HOST_QEMU_VIRTFS\n\tbool \"Virtual filesystem support\"\n\tdepends on BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE\n\thelp\n\t  Enables support for virtual filesystem in Qemu allowing\n\t  shared filesystem between Qemu and its emulated target.\n\nconfig BR2_PACKAGE_HOST_QEMU_USB\n\tbool \"USB passthrough support\"\n\thelp\n\t  Enables USB passthrough support from guest to host.\n\nendif\n"
  },
  {
    "path": "package/qemu/qemu.hash",
    "content": "# Locally computed, tarball verified with GPG signature\nsha256  5b49ce2687744dad494ae90a898c52204a3406e84d072482a1e1be854eeb2157  qemu-7.2.0.tar.xz\nsha256  6f04ae8364d0079a192b14635f4b1da294ce18724c034c39a6a41d1b09df6100  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\n"
  },
  {
    "path": "package/qemu/qemu.mk",
    "content": "################################################################################\n#\n# qemu\n#\n################################################################################\n\n# When updating the version, check whether the list of supported targets\n# needs to be updated.\nQEMU_VERSION = 7.2.0\nQEMU_SOURCE = qemu-$(QEMU_VERSION).tar.xz\nQEMU_SITE = http://download.qemu.org\nQEMU_LICENSE = GPL-2.0, LGPL-2.1, MIT, BSD-3-Clause, BSD-2-Clause, Others/BSD-1c\nQEMU_LICENSE_FILES = COPYING COPYING.LIB\n# NOTE: there is no top-level license file for non-(L)GPL licenses;\n#       the non-(L)GPL license texts are specified in the affected\n#       individual source files.\nQEMU_CPE_ID_VENDOR = qemu\n\n#-------------------------------------------------------------\n\n# The build system is now partly based on Meson.\n# However, building is still done with configure and make as in previous versions of QEMU.\n\n# Target-qemu\nQEMU_DEPENDENCIES = \\\n\thost-meson \\\n\thost-pkgconf \\\n\thost-python3 \\\n\tlibglib2 \\\n\tzlib\n\n# Need the LIBS variable because librt and libm are\n# not automatically pulled. :-(\nQEMU_LIBS = -lrt -lm\n\nQEMU_OPTS =\n\nQEMU_VARS = LIBTOOL=$(HOST_DIR)/bin/libtool\n\n# If we want to build all emulation targets, we just need to either enable -user\n# and/or -system emulation appropriately.\n# Otherwise, if we want only a subset of targets, we must still enable all of\n# them, so that QEMU properly builds a list of default targets from which it\n# checks if the specified sub-set is valid.\n\nifeq ($(BR2_PACKAGE_QEMU_SYSTEM),y)\nQEMU_DEPENDENCIES += pixman\nQEMU_OPTS += --enable-system\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_AARCH64) += aarch64-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ALPHA) += alpha-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ARM) += arm-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_AVR) += avr-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_CRIS) += cris-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_HPPA) += hppa-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_I386) += i386-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_LOONGARCH64) += loongarch64-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_M68K) += m68k-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MICROBLAZE) += microblaze-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MICROBLAZEEL) += microblazeel-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS) += mips-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS64) += mips64-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS64EL) += mips64el-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPSEL) += mipsel-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_NIOS2) += nios2-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_OR1K) += or1k-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC) += ppc-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC64) += ppc64-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RISCV32) += riscv32-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RISCV64) += riscv64-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RX) += rx-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_S390X) += s390x-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SH4) += sh4-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SH4EB) += sh4eb-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC) += sparc-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC64) += sparc64-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_TRICORE) += tricore-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_X86_64) += x86_64-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_XTENSA) += xtensa-softmmu\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_XTENSAEB) += xtensaeb-softmmu\nelse\nQEMU_OPTS += --disable-system\nendif\n\nifeq ($(BR2_PACKAGE_QEMU_LINUX_USER),y)\nQEMU_OPTS += --enable-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_AARCH64) += aarch64-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_AARCH64_BE) += aarch64_be-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ALPHA) += alpha-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ARM) += arm-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_ARMEB) += armeb-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_CRIS) += cris-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_HEXAGON) += hexagon-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_HPPA) += hppa-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_I386) += i386-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_LOONGARCH64) += loongarch64-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_M68K) += m68k-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MICROBLAZE) += microblaze-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MICROBLAZEEL) += microblazeel-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS) += mips-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS64) += mips64-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPS64EL) += mips64el-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPSEL) += mipsel-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPSN32) += mipsn32-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_MIPSN32EL) += mipsn32el-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_NIOS2) += nios2-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_OR1K) += or1k-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC) += ppc-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC64) += ppc64-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_PPC64LE) += ppc64le-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RISCV32) += riscv32-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_RISCV64) += riscv64-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_S390X) += s390x-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SH4) += sh4-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SH4EB) += sh4eb-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC) += sparc-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC32PLUS) += sparc32plus-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_SPARC64) += sparc64-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_X86_64) += x86_64-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_XTENSA) += xtensa-linux-user\nQEMU_TARGET_LIST_$(BR2_PACKAGE_QEMU_TARGET_XTENSAEB) += xtensaeb-linux-user\nelse\nQEMU_OPTS += --disable-linux-user\nendif\n\n# Build the list of desired targets, if any.\nifeq ($(BR2_PACKAGE_QEMU_CHOOSE_TARGETS),y)\nQEMU_TARGET_LIST = $(strip $(QEMU_TARGET_LIST_y))\nifeq ($(BR_BUILDING).$(QEMU_TARGET_LIST),y.)\n$(error \"No emulator target has ben chosen\")\nendif\nQEMU_OPTS += --target-list=\"$(QEMU_TARGET_LIST)\"\nendif\n\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\nQEMU_OPTS += --disable-vhost-user\nelse\nQEMU_OPTS += --enable-vhost-user\nendif\n\nifeq ($(BR2_PACKAGE_QEMU_SLIRP),y)\nQEMU_OPTS += --enable-slirp\nQEMU_DEPENDENCIES += slirp\nelse\nQEMU_OPTS += --disable-slirp\nendif\n\nifeq ($(BR2_PACKAGE_QEMU_SDL),y)\nQEMU_OPTS += --enable-sdl\nQEMU_DEPENDENCIES += sdl2\nQEMU_VARS += SDL2_CONFIG=$(STAGING_DIR)/usr/bin/sdl2-config\nelse\nQEMU_OPTS += --disable-sdl\nendif\n\nifeq ($(BR2_PACKAGE_QEMU_FDT),y)\nQEMU_OPTS += --enable-fdt\nQEMU_DEPENDENCIES += dtc\nelse\nQEMU_OPTS += --disable-fdt\nendif\n\nifeq ($(BR2_PACKAGE_QEMU_TOOLS),y)\nQEMU_OPTS += --enable-tools\nelse\nQEMU_OPTS += --disable-tools\nendif\n\nifeq ($(BR2_PACKAGE_LIBFUSE3),y)\nQEMU_OPTS += --enable-fuse --enable-fuse-lseek\nQEMU_DEPENDENCIES += libfuse3\nelse\nQEMU_OPTS += --disable-fuse --disable-fuse-lseek\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECCOMP),y)\nQEMU_OPTS += --enable-seccomp\nQEMU_DEPENDENCIES += libseccomp\nelse\nQEMU_OPTS += --disable-seccomp\nendif\n\nifeq ($(BR2_PACKAGE_LIBSSH),y)\nQEMU_OPTS += --enable-libssh\nQEMU_DEPENDENCIES += libssh\nelse\nQEMU_OPTS += --disable-libssh\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nQEMU_OPTS += --enable-libusb\nQEMU_DEPENDENCIES += libusb\nelse\nQEMU_OPTS += --disable-libusb\nendif\n\nifeq ($(BR2_PACKAGE_LIBVNCSERVER),y)\nQEMU_OPTS += \\\n\t--enable-vnc \\\n\t--disable-vnc-sasl\nQEMU_DEPENDENCIES += libvncserver\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nQEMU_OPTS += --enable-png\nQEMU_DEPENDENCIES += libpng\nelse\nQEMU_OPTS += --disable-png\nendif\nifeq ($(BR2_PACKAGE_JPEG),y)\nQEMU_OPTS += --enable-vnc-jpeg\nQEMU_DEPENDENCIES += jpeg\nelse\nQEMU_OPTS += --disable-vnc-jpeg\nendif\nelse\nQEMU_OPTS += --disable-vnc\nendif\n\nifeq ($(BR2_PACKAGE_NETTLE),y)\nQEMU_OPTS += --enable-nettle\nQEMU_DEPENDENCIES += nettle\nelse\nQEMU_OPTS += --disable-nettle\nendif\n\nifeq ($(BR2_PACKAGE_NUMACTL),y)\nQEMU_OPTS += --enable-numa\nQEMU_DEPENDENCIES += numactl\nelse\nQEMU_OPTS += --disable-numa\nendif\n\nifeq ($(BR2_PACKAGE_SPICE),y)\nQEMU_OPTS += --enable-spice\nQEMU_DEPENDENCIES += spice\nelse\nQEMU_OPTS += --disable-spice\nendif\n\nifeq ($(BR2_PACKAGE_USBREDIR),y)\nQEMU_OPTS += --enable-usb-redir\nQEMU_DEPENDENCIES += usbredir\nelse\nQEMU_OPTS += --disable-usb-redir\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nQEMU_OPTS += --static\nendif\n\nifeq ($(BR2_PACKAGE_QEMU_BLOBS),y)\nQEMU_OPTS += --enable-install-blobs\nelse\nQEMU_OPTS += --disable-install-blobs\nendif\n\n# Override CPP, as it expects to be able to call it like it'd\n# call the compiler.\ndefine QEMU_CONFIGURE_CMDS\n\tunset TARGET_DIR; \\\n\tcd $(@D); \\\n\t\tLIBS='$(QEMU_LIBS)' \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(TARGET_CONFIGURE_ARGS) \\\n\t\tCPP=\"$(TARGET_CC) -E\" \\\n\t\t$(QEMU_VARS) \\\n\t\t./configure \\\n\t\t\t--prefix=/usr \\\n\t\t\t--cross-prefix=$(TARGET_CROSS) \\\n\t\t\t--audio-drv-list= \\\n\t\t\t--meson=$(HOST_DIR)/bin/meson \\\n\t\t\t--ninja=$(HOST_DIR)/bin/ninja \\\n\t\t\t--disable-alsa \\\n\t\t\t--disable-bpf \\\n\t\t\t--disable-brlapi \\\n\t\t\t--disable-bsd-user \\\n\t\t\t--disable-cap-ng \\\n\t\t\t--disable-capstone \\\n\t\t\t--disable-containers \\\n\t\t\t--disable-coreaudio \\\n\t\t\t--disable-curl \\\n\t\t\t--disable-curses \\\n\t\t\t--disable-dbus-display \\\n\t\t\t--disable-docs \\\n\t\t\t--disable-dsound \\\n\t\t\t--disable-hvf \\\n\t\t\t--disable-jack \\\n\t\t\t--disable-libiscsi \\\n\t\t\t--disable-linux-aio \\\n\t\t\t--disable-linux-io-uring \\\n\t\t\t--disable-malloc-trim \\\n\t\t\t--disable-membarrier \\\n\t\t\t--disable-mpath \\\n\t\t\t--disable-netmap \\\n\t\t\t--disable-opengl \\\n\t\t\t--disable-oss \\\n\t\t\t--disable-pa \\\n\t\t\t--disable-rbd \\\n\t\t\t--disable-sanitizers \\\n\t\t\t--disable-selinux \\\n\t\t\t--disable-sparse \\\n\t\t\t--disable-strip \\\n\t\t\t--disable-vde \\\n\t\t\t--disable-vhost-crypto \\\n\t\t\t--disable-vhost-user-blk-server \\\n\t\t\t--disable-virtfs \\\n\t\t\t--disable-virtiofsd \\\n\t\t\t--disable-whpx \\\n\t\t\t--disable-xen \\\n\t\t\t--enable-attr \\\n\t\t\t--enable-kvm \\\n\t\t\t--enable-vhost-net \\\n\t\t\t--with-git-submodules=ignore \\\n\t\t\t$(QEMU_OPTS)\nendef\n\ndefine QEMU_BUILD_CMDS\n\tunset TARGET_DIR; \\\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine QEMU_INSTALL_TARGET_CMDS\n\tunset TARGET_DIR; \\\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(QEMU_MAKE_ENV) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n\n#-------------------------------------------------------------\n# Host-qemu\n\nHOST_QEMU_DEPENDENCIES = \\\n\thost-libglib2 \\\n\thost-meson \\\n\thost-pixman \\\n\thost-pkgconf \\\n\thost-python3 \\\n\thost-slirp \\\n\thost-zlib\n\n#       BR ARCH         qemu\n#       -------         ----\n#       arm             arm\n#       armeb           armeb\n#       i486            i386\n#       i586            i386\n#       i686            i386\n#       x86_64          x86_64\n#       m68k            m68k\n#       microblaze      microblaze\n#       mips            mips\n#       mipsel          mipsel\n#       mips64          mips64\n#       mips64el        mips64el\n#       nios2           nios2\n#       or1k            or1k\n#       powerpc         ppc\n#       powerpc64       ppc64\n#       powerpc64le     ppc64 (system) / ppc64le (usermode)\n#       sh2a            not supported\n#       sh4             sh4\n#       sh4eb           sh4eb\n#       sh4a            sh4\n#       sh4aeb          sh4eb\n#       sparc           sparc\n#       sparc64         sparc64\n#       xtensa          xtensa\n\nHOST_QEMU_ARCH = $(ARCH)\nifeq ($(HOST_QEMU_ARCH),armeb)\nHOST_QEMU_SYS_ARCH = arm\nendif\nifeq ($(HOST_QEMU_ARCH),i486)\nHOST_QEMU_ARCH = i386\nendif\nifeq ($(HOST_QEMU_ARCH),i586)\nHOST_QEMU_ARCH = i386\nendif\nifeq ($(HOST_QEMU_ARCH),i686)\nHOST_QEMU_ARCH = i386\nendif\nifeq ($(HOST_QEMU_ARCH),powerpc)\nHOST_QEMU_ARCH = ppc\nendif\nifeq ($(HOST_QEMU_ARCH),powerpc64)\nHOST_QEMU_ARCH = ppc64\nendif\nifeq ($(HOST_QEMU_ARCH),powerpc64le)\nHOST_QEMU_ARCH = ppc64le\nHOST_QEMU_SYS_ARCH = ppc64\nendif\nifeq ($(HOST_QEMU_ARCH),sh4a)\nHOST_QEMU_ARCH = sh4\nendif\nifeq ($(HOST_QEMU_ARCH),sh4aeb)\nHOST_QEMU_ARCH = sh4eb\nendif\nHOST_QEMU_SYS_ARCH ?= $(HOST_QEMU_ARCH)\n\nHOST_QEMU_CFLAGS = $(HOST_CFLAGS)\n\nifeq ($(BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE),y)\nHOST_QEMU_TARGETS += $(HOST_QEMU_SYS_ARCH)-softmmu\nHOST_QEMU_OPTS += --enable-system --enable-fdt\nHOST_QEMU_CFLAGS += -I$(HOST_DIR)/include/libfdt\nHOST_QEMU_DEPENDENCIES += host-dtc\nelse\nHOST_QEMU_OPTS += --disable-system\nendif\n\nifeq ($(BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE),y)\nHOST_QEMU_TARGETS += $(HOST_QEMU_ARCH)-linux-user\nHOST_QEMU_OPTS += --enable-linux-user\n\nHOST_QEMU_HOST_SYSTEM_TYPE = $(shell uname -s)\nifneq ($(HOST_QEMU_HOST_SYSTEM_TYPE),Linux)\n$(error \"qemu-user can only be used on Linux hosts\")\nendif\n\nelse # BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE\nHOST_QEMU_OPTS += --disable-linux-user\nendif # BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE\n\nifeq ($(BR2_PACKAGE_HOST_QEMU_VDE2),y)\nHOST_QEMU_OPTS += --enable-vde\nHOST_QEMU_DEPENDENCIES += host-vde2\nendif\n\n# virtfs-proxy-helper is the only user of libcap-ng.\nifeq ($(BR2_PACKAGE_HOST_QEMU_VIRTFS),y)\nHOST_QEMU_OPTS += --enable-virtfs --enable-cap-ng\nHOST_QEMU_DEPENDENCIES += host-libcap-ng\nelse\nHOST_QEMU_OPTS += --disable-virtfs --disable-cap-ng\nendif\n\nifeq ($(BR2_PACKAGE_HOST_QEMU_USB),y)\nHOST_QEMU_OPTS += --enable-libusb\nHOST_QEMU_DEPENDENCIES += host-libusb\nelse\nHOST_QEMU_OPTS += --disable-libusb\nendif\n\n# Override CPP, as it expects to be able to call it like it'd\n# call the compiler.\ndefine HOST_QEMU_CONFIGURE_CMDS\n\tunset TARGET_DIR; \\\n\tcd $(@D); $(HOST_CONFIGURE_OPTS) CPP=\"$(HOSTCC) -E\" \\\n\t\t./configure \\\n\t\t--target-list=\"$(HOST_QEMU_TARGETS)\" \\\n\t\t--prefix=\"$(HOST_DIR)\" \\\n\t\t--interp-prefix=$(STAGING_DIR) \\\n\t\t--cc=\"$(HOSTCC)\" \\\n\t\t--host-cc=\"$(HOSTCC)\" \\\n\t\t--extra-cflags=\"$(HOST_QEMU_CFLAGS)\" \\\n\t\t--extra-ldflags=\"$(HOST_LDFLAGS)\" \\\n\t\t--meson=$(HOST_DIR)/bin/meson \\\n\t\t--ninja=$(HOST_DIR)/bin/ninja \\\n\t\t--disable-alsa \\\n\t\t--disable-bpf \\\n\t\t--disable-bzip2 \\\n\t\t--disable-containers \\\n\t\t--disable-coreaudio \\\n\t\t--disable-curl \\\n\t\t--disable-dbus-display \\\n\t\t--disable-docs \\\n\t\t--disable-dsound \\\n\t\t--disable-jack \\\n\t\t--disable-libssh \\\n\t\t--disable-linux-aio \\\n\t\t--disable-linux-io-uring \\\n\t\t--disable-netmap \\\n\t\t--disable-oss \\\n\t\t--disable-pa \\\n\t\t--disable-sdl \\\n\t\t--disable-selinux \\\n\t\t--disable-vde \\\n\t\t--disable-vhost-user-blk-server \\\n\t\t--disable-virtiofsd \\\n\t\t--disable-vnc-jpeg \\\n\t\t--disable-png \\\n\t\t--disable-vnc-sasl \\\n\t\t--enable-slirp \\\n\t\t--enable-tools \\\n\t\t$(HOST_QEMU_OPTS)\nendef\n\ndefine HOST_QEMU_BUILD_CMDS\n\tunset TARGET_DIR; \\\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_QEMU_INSTALL_CMDS\n\tunset TARGET_DIR; \\\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) install\nendef\n\n# install symlink to qemu-system\nifeq ($(BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE),y)\ndefine HOST_QEMU_POST_INSTALL_SYMLINK\n\tln -sf ./qemu-system-$(HOST_QEMU_ARCH) $(HOST_DIR)/bin/qemu-system\nendef\nHOST_QEMU_POST_INSTALL_HOOKS += HOST_QEMU_POST_INSTALL_SYMLINK\nendif\n\n$(eval $(host-generic-package))\n\n# variable used by other packages\nQEMU_USER = $(HOST_DIR)/bin/qemu-$(HOST_QEMU_ARCH)\n"
  },
  {
    "path": "package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch",
    "content": "From 62fbe9c3539945df6204501b7e3ae0d51db075a3 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Thu, 24 Nov 2016 22:30:40 +0100\nSubject: [PATCH] Create a main include file QExtSerialPort\n\nThis main include file will be installed in\n<QtExtSerialPort/QExtSerialPort> so that Qt applications can use this\nlibrary by including header files in a Qt-like style.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Arnout: add it to qextserialport.pri so it is installed]\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n---\n src/QExtSerialPort     | 2 ++\n src/qextserialport.pri | 3 ++-\n 2 files changed, 4 insertions(+), 1 deletion(-)\n create mode 100644 src/QExtSerialPort\n\ndiff --git a/src/QExtSerialPort b/src/QExtSerialPort\nnew file mode 100644\nindex 0000000..a48aeea\n--- /dev/null\n+++ b/src/QExtSerialPort\n@@ -0,0 +1,2 @@\n+#include \"qextserialport.h\"\n+#include \"qextserialenumerator.h\"\ndiff --git a/src/qextserialport.pri b/src/qextserialport.pri\nindex 461d56f..f8a678d 100644\n--- a/src/qextserialport.pri\n+++ b/src/qextserialport.pri\n@@ -3,7 +3,8 @@\n \r\n PUBLIC_HEADERS         += $$PWD/qextserialport.h \\\r\n                           $$PWD/qextserialenumerator.h \\\r\n-                          $$PWD/qextserialport_global.h\r\n+                          $$PWD/qextserialport_global.h \\\r\n+\t\t\t  $$PWD/QExtSerialPort\r\n \r\n HEADERS                += $$PUBLIC_HEADERS \\\r\n                           $$PWD/qextserialport_p.h \\\r\n"
  },
  {
    "path": "package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch",
    "content": "From 14d4d3e7b5c748118acffddd397fb67b37fd5054 Mon Sep 17 00:00:00 2001\nFrom: \"Arnout Vandecappelle (Essensium/Mind)\" <arnout@mind.be>\nDate: Thu, 24 Nov 2016 22:44:02 +0100\nSubject: [PATCH] Tell qmake to add a pkgconfig file to ease usage with\n applications\n\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n---\n qextserialport.pro | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/qextserialport.pro b/qextserialport.pro\nindex 8d2c03a..2fcb39c 100644\n--- a/qextserialport.pro\n+++ b/qextserialport.pro\n@@ -42,7 +42,8 @@ TEMPLATE=lib\n include(src/qextserialport.pri)\n \n #create_prl is needed, otherwise, MinGW can't found libqextserialport1.a\n-CONFIG += create_prl\n+CONFIG += create_prl create_pc\n+QMAKE_PKGCONFIG_DESTDIR = pkgconfig\n \n #mac framework is designed for shared library\n macx:qesp_mac_framework:qesp_static: CONFIG -= qesp_static\n-- \n2.10.2\n\n"
  },
  {
    "path": "package/qextserialport/Config.in",
    "content": "config BR2_PACKAGE_QEXTSERIALPORT\n\tbool \"qextserialport\"\n\tdepends on BR2_PACKAGE_QT5\n\thelp\n\t  A Qt library to manage serial ports\n\n\t  http://qextserialport.github.io/\n"
  },
  {
    "path": "package/qextserialport/qextserialport.hash",
    "content": "# locally computed\nsha256  23e3b10a8d8a1e2fb071047144222c43d150748ce6670e5d047ba5b0502ad0b2  qextserialport-ada321a9ee463f628e7b781b8ed00ff219152158.tar.gz\nsha256  363f34c4e9ee62df5e88788723beb9d0ad2c62fa36625355f261f7e6d672aaf5  LICENSE.md\n"
  },
  {
    "path": "package/qextserialport/qextserialport.mk",
    "content": "################################################################################\n#\n# qextserialport\n#\n################################################################################\n\nQEXTSERIALPORT_VERSION = ada321a9ee463f628e7b781b8ed00ff219152158\nQEXTSERIALPORT_SITE = $(call github,qextserialport,qextserialport,$(QEXTSERIALPORT_VERSION))\nQEXTSERIALPORT_LICENSE = MIT\nQEXTSERIALPORT_LICENSE_FILES = LICENSE.md\nQEXTSERIALPORT_INSTALL_STAGING = YES\n\nifeq ($(BR2_STATIC_LIBS),y)\nQEXTSERIALPORT_CONF_OPTS += CONFIG+=qesp_static\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qhull/Config.in",
    "content": "config BR2_PACKAGE_QHULL\n\tbool \"qhull\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 # needs gcc >= 4.4\n\thelp\n\t  Qhull computes the convex hull, Delaunay triangulation,\n\t  Voronoi diagram, halfspace intersection about a point,\n\t  furthest-site Delaunay triangulation, and furthest-site\n\t  Voronoi diagram. The source code runs in 2-d, 3-d, 4-d, and\n\t  higher dimensions. Qhull implements the Quickhull algorithm\n\t  for computing the convex hull. It handles roundoff errors\n\t  from floating point arithmetic. It computes volumes, surface\n\t  areas, and approximations to the convex hull.\n\n\t  http://www.qhull.org\n\ncomment \"qhull needs a toolchain w/ C++, gcc >= 4.4\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_4\n"
  },
  {
    "path": "package/qhull/qhull.hash",
    "content": "# From http://www.qhull.org/download/qhull-2020-src-8.0.2-tgz.md5sum\nmd5  ed767244864488d5e9a22dfa788663a9  qhull-2020-src-8.0.2-tgz\n# Locally computed\nsha256  b5c2d7eb833278881b952c8a52d20179eab87766b00b865000469a45c1838b7e  qhull-2020-src-8.0.2.tgz\nsha256  106d55c931fd6a84822e5345d900273d059f1c27310d02567ccb313c5d18c55d  COPYING.txt\n"
  },
  {
    "path": "package/qhull/qhull.mk",
    "content": "################################################################################\n#\n# qhull\n#\n################################################################################\n\nQHULL_VERSION = 8.0.2\nQHULL_SITE = http://www.qhull.org/download\nQHULL_SOURCE = qhull-2020-src-$(QHULL_VERSION).tgz\nQHULL_INSTALL_STAGING = YES\nQHULL_LICENSE = BSD-Style\nQHULL_LICENSE_FILES = COPYING.txt\n\n# Force Release mode to always build qhull_r instead of qhull_rd\nQHULL_CONF_OPTS = -DCMAKE_BUILD_TYPE=Release\n\n# BUILD_SHARED_LIBS is handled in pkg-cmake.mk as it is a generic cmake variable\n# although BUILD_STATIC_LIBS=ON is default, make it explicit,\n# cmake and static/shared libs is confusing enough already.\nifeq ($(BR2_STATIC_LIBS),y)\nQHULL_CONF_OPTS += -DBUILD_STATIC_LIBS=ON\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nQHULL_CONF_OPTS += -DBUILD_STATIC_LIBS=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nQHULL_CONF_OPTS += -DBUILD_STATIC_LIBS=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/qjson/Config.in",
    "content": "config BR2_PACKAGE_QJSON\n\tbool \"qjson\"\n\tdepends on BR2_PACKAGE_QT5\n\thelp\n\t  QJson is a Qt-based library that maps JSON data to\n\t  QVariant objects and vice versa.\n\n\t  http://qjson.sourceforge.net\n"
  },
  {
    "path": "package/qjson/qjson.hash",
    "content": "# locally computed\nsha256  e812617477f3c2bb990561767a4cd8b1d3803a52018d4878da302529552610d4  qjson-0.9.0.tar.gz\nsha256  758a0cd48d2bec59cbd04ab616737b7aa0cdceac87508adbc9468715ac90722b  COPYING.lib\n"
  },
  {
    "path": "package/qjson/qjson.mk",
    "content": "################################################################################\n#\n# qjson\n#\n################################################################################\n\nQJSON_VERSION = 0.9.0\nQJSON_SITE = $(call github,flavio,qjson,$(QJSON_VERSION))\nQJSON_INSTALL_STAGING = YES\nQJSON_DEPENDENCIES = qt5base\nQJSON_LICENSE = LGPL-2.1\nQJSON_LICENSE_FILES = COPYING.lib\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/qlibc/Config.in",
    "content": "config BR2_PACKAGE_QLIBC\n\tbool \"qlibc\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  qLibc is currently one of the most functionally complete\n\t  public licensed C/C++ libraries. The C/C++ library which\n\t  includes all kinds of containers and general library\n\t  routines. It provides ready-made set of common container\n\t  APIs with consistant API look.\n\n\t  https://github.com/wolkykim/qlibc\n\ncomment \"qlibc needs a toolchain w/ threads, wchar, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/qlibc/qlibc.hash",
    "content": "# Locally calculated\nsha256  e195c97453c260acea4421146ba992d9a4d89732eac345b3765c43cc3326d2ad  qlibc-2.4.5.tar.gz\nsha256  7c9d03656af4c0acf0a35e29459086498dd64080eac6d2945bc1c064aaf18132  LICENSE\n"
  },
  {
    "path": "package/qlibc/qlibc.mk",
    "content": "################################################################################\n#\n# qlibc\n#\n################################################################################\n\nQLIBC_VERSION = 2.4.5\nQLIBC_SITE = $(call github,wolkykim,qlibc,v$(QLIBC_VERSION))\nQLIBC_LICENSE = BSD-2-Clause\nQLIBC_LICENSE_FILES = LICENSE\n\nQLIBC_INSTALL_STAGING = YES\nQLIBC_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\n# The configure.ac checks for these use AC_CHECK_FILE() which doesn't\n# work for cross-compilation. If someone wants to enable the support\n# for OpenSSL or MySQL, some changes to the configure.ac will be\n# needed.\nQLIBC_CONF_OPTS = --without-mysql --without-openssl\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/qoriq-rcw/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_QORIQ_RCW\n\tbool \"host qoriq-rcw\"\n\thelp\n\t  This package provides an reset configuration word(RCW)\n\t  compiler to build NXP QoriQ/LS PBL/RCW binary(s).\n\n\t  The package installs example configurations and scripts\n\t  for each devkit supported in the current release see\n\t  $(HOST_DIR)/share/rcw. Either a SDK or post scripts can\n\t  then use this toolset and examples.\n\n\t  https://source.codeaurora.org/external/qoriq/qoriq-components/rcw/\n\nif BR2_PACKAGE_HOST_QORIQ_RCW\n\nconfig BR2_PACKAGE_HOST_QORIQ_RCW_CUSTOM_PATH\n\tstring \"RCW Source file paths\"\n\thelp\n\t  Space-separated list of .rcw and .rcwi files, that will be\n\t  used to generate a RCW binary. The entire list of .rcwi files\n\t  used by the .rcw file must be specified. There must be a\n\t  single .rcw file in the list.\n\n\t  This is optional. If left empty, the rcw package will be\n\t  included for use in the SDK or with post scripts but no\n\t  RCW binary will not be generated.\n\nendif\n"
  },
  {
    "path": "package/qoriq-rcw/qoriq-rcw.hash",
    "content": "# Locally calculated\nsha256  bbb595f0b68beb114620f7aeaff073b90938329e10cd6b36daa9f2087f3119a0  qoriq-rcw-LSDK-20.12-br1.tar.gz\nsha256  68f4b15ecc085729419bc60ca6eeadca5af0237bbfec791e8a79da9c943d42e9  LICENSE\n"
  },
  {
    "path": "package/qoriq-rcw/qoriq-rcw.mk",
    "content": "################################################################################\n#\n# qoriq-rcw\n#\n################################################################################\n\nQORIQ_RCW_VERSION = LSDK-20.12\nQORIQ_RCW_SITE = https://source.codeaurora.org/external/qoriq/qoriq-components/rcw\nQORIQ_RCW_SITE_METHOD = git\nQORIQ_RCW_LICENSE = BSD-3-Clause\nQORIQ_RCW_LICENSE_FILES = LICENSE\n\nHOST_QORIQ_RCW_DEPENDENCIES = $(BR2_PYTHON3_HOST_DEPENDENCY)\n\nQORIQ_RCW_FILES = $(call qstrip,$(BR2_PACKAGE_HOST_QORIQ_RCW_CUSTOM_PATH))\n\nifneq ($(QORIQ_RCW_FILES),)\nQORIQ_RCW_INCLUDES = $(filter-out %.rcw,$(QORIQ_RCW_FILES))\n# Get the name of the custom rcw file from the custom list\nQORIQ_RCW_PROJECT = $(notdir $(filter %.rcw,$(QORIQ_RCW_FILES)))\n\n# Error if there are no or more than one .rcw file\nifeq ($(BR_BUILDING),y)\nifneq ($(words $(QORIQ_RCW_PROJECT)),1)\n$(error BR2_PACKAGE_HOST_QORIQ_RCW_CUSTOM_PATH must have exactly one .rcw file)\nendif\nendif\n\nifneq ($(QORIQ_RCW_INCLUDES),)\ndefine HOST_QORIQ_RCW_ADD_CUSTOM_RCW_INCLUDES\n\tmkdir -p $(@D)/custom_board\n\tcp -f $(QORIQ_RCW_INCLUDES) $(@D)/custom_board\nendef\nHOST_QORIQ_RCW_POST_PATCH_HOOKS += HOST_QORIQ_RCW_ADD_CUSTOM_RCW_INCLUDES\nendif\n\ndefine HOST_QORIQ_RCW_ADD_CUSTOM_RCW_FILES\n\tmkdir -p $(@D)/custom_board/rcw\n\tcp -f $(filter %.rcw,$(QORIQ_RCW_FILES)) $(@D)/custom_board/rcw\nendef\nHOST_QORIQ_RCW_POST_PATCH_HOOKS += HOST_QORIQ_RCW_ADD_CUSTOM_RCW_FILES\n\n# rcw.py is a python3-only script, and we can be using either the\n# system-provided python3, or our own built with host-python3.\n# Fortunately, rcw.py uses #!/usr/bin/env python3, so it will\n# easily find it from PATH.\ndefine HOST_QORIQ_RCW_BUILD_CMDS\n\tPATH=$(BR_PATH) \\\n\t$(@D)/rcw.py \\\n\t\t-i $(@D)/custom_board/rcw/$(QORIQ_RCW_PROJECT) \\\n\t\t-I $(@D)/custom_board -o $(@D)/PBL.bin\nendef\n\ndefine HOST_QORIQ_RCW_INSTALL_DELIVERY_FILE\n\t$(INSTALL) -D -m 0644 $(@D)/PBL.bin $(BINARIES_DIR)/PBL.bin\nendef\nendif\n\n# Copy source files and script into $(HOST_DIR)/share/rcw/ so a developer\n# could use a post image or SDK to build/install PBL files.\ndefine HOST_QORIQ_RCW_INSTALL_CMDS\n\tmkdir -p $(HOST_DIR)/share/rcw\n\tcp -a $(@D)/* $(HOST_DIR)/share/rcw\n\t$(HOST_QORIQ_RCW_INSTALL_DELIVERY_FILE)\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/qpdf/0001-libtests-cxx11.cc-fix-build-with-gcc-4.8.patch",
    "content": "From e70c2605a11d12a8eeee3e7eec46077956e11e1f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 17 Feb 2020 22:36:08 +0100\nSubject: [PATCH] libtests/cxx11.cc: fix build with gcc 4.8\n\nBuild fails on gcc 4.8 since version 9.1.1 and commit\n752416554086d5d34323bc14164d5084db83cfbd:\n\nlibtests/cxx11.cc: In function 'void do_regex()':\nlibtests/cxx11.cc:347:42: error: 'strlen' is not a member of 'std'\n     std::cregex_iterator m3(str7, str7 + std::strlen(str7), expr4);\n                                          ^\n\nTo fix the build failure, add missing include on cstring\n\nFixes:\n - http://autobuild.buildroot.org/results/ad7fb68ae87850a85509eed80fd0cae8721b10c5\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/qpdf/qpdf/pull/400]\n---\n libtests/cxx11.cc | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/libtests/cxx11.cc b/libtests/cxx11.cc\nindex fa1dc6b..91ed7b1 100644\n--- a/libtests/cxx11.cc\n+++ b/libtests/cxx11.cc\n@@ -1,5 +1,6 @@\n #include <iostream>\n #include <cassert>\n+#include <cstring>\n #include <functional>\n #include <type_traits>\n #include <cstdint>\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/qpdf/0002-Fix-some-pipelines-to-be-safe-if-downstream-write-fails.patch",
    "content": "From dc92574c10f3e2516ec6445b88c5d584f40df4e5 Mon Sep 17 00:00:00 2001\nFrom: Jay Berkenbilt <ejb@ql.org>\nDate: Mon, 4 Jan 2021 11:55:28 -0500\nSubject: [PATCH] Fix some pipelines to be safe if downstream write fails (fuzz\n issue 28262)\n\n[Retrieved (and updated to remove updates on ChangeLog and fuzz) from:\nhttps://github.com/qpdf/qpdf/commit/dc92574c10f3e2516ec6445b88c5d584f40df4e5]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n ChangeLog                     |   6 ++++++\n fuzz/qpdf_extra/28262.fuzz    | Bin 0 -> 40395 bytes\n libqpdf/Pl_AES_PDF.cc         |   2 +-\n libqpdf/Pl_ASCII85Decoder.cc  |   7 +++++--\n libqpdf/Pl_ASCIIHexDecoder.cc |   6 ++++--\n libqpdf/Pl_Count.cc           |   2 +-\n 6 files changed, 17 insertions(+), 6 deletions(-)\n create mode 100644 fuzz/qpdf_extra/28262.fuzz\n\ndiff --git a/libqpdf/Pl_AES_PDF.cc b/libqpdf/Pl_AES_PDF.cc\nindex 18cf3a4d..2865f804 100644\n--- a/libqpdf/Pl_AES_PDF.cc\n+++ b/libqpdf/Pl_AES_PDF.cc\n@@ -238,6 +238,6 @@ Pl_AES_PDF::flush(bool strip_padding)\n \t    }\n \t}\n     }\n-    getNext()->write(this->outbuf, bytes);\n     this->offset = 0;\n+    getNext()->write(this->outbuf, bytes);\n }\ndiff --git a/libqpdf/Pl_ASCII85Decoder.cc b/libqpdf/Pl_ASCII85Decoder.cc\nindex b8df3e87..9d9f6704 100644\n--- a/libqpdf/Pl_ASCII85Decoder.cc\n+++ b/libqpdf/Pl_ASCII85Decoder.cc\n@@ -119,10 +119,13 @@ Pl_ASCII85Decoder::flush()\n \n     QTC::TC(\"libtests\", \"Pl_ASCII85Decoder partial flush\",\n \t    (this->pos == 5) ? 0 : 1);\n-    getNext()->write(outbuf, this->pos - 1);\n-\n+    // Reset before calling getNext()->write in case that throws an\n+    // exception.\n+    auto t = this->pos - 1;\n     this->pos = 0;\n     memset(this->inbuf, 117, 5);\n+\n+    getNext()->write(outbuf, t);\n }\n \n void\ndiff --git a/libqpdf/Pl_ASCIIHexDecoder.cc b/libqpdf/Pl_ASCIIHexDecoder.cc\nindex f20a9769..7845268e 100644\n--- a/libqpdf/Pl_ASCIIHexDecoder.cc\n+++ b/libqpdf/Pl_ASCIIHexDecoder.cc\n@@ -97,12 +97,14 @@ Pl_ASCIIHexDecoder::flush()\n \n     QTC::TC(\"libtests\", \"Pl_ASCIIHexDecoder partial flush\",\n \t    (this->pos == 2) ? 0 : 1);\n-    getNext()->write(&ch, 1);\n-\n+    // Reset before calling getNext()->write in case that throws an\n+    // exception.\n     this->pos = 0;\n     this->inbuf[0] = '0';\n     this->inbuf[1] = '0';\n     this->inbuf[2] = '\\0';\n+\n+    getNext()->write(&ch, 1);\n }\n \n void\ndiff --git a/libqpdf/Pl_Count.cc b/libqpdf/Pl_Count.cc\nindex 8077092a..c35619b8 100644\n--- a/libqpdf/Pl_Count.cc\n+++ b/libqpdf/Pl_Count.cc\n@@ -27,8 +27,8 @@ Pl_Count::write(unsigned char* buf, size_t len)\n     if (len)\n     {\n \tthis->m->count += QIntC::to_offset(len);\n-\tgetNext()->write(buf, len);\n \tthis->m->last_char = buf[len - 1];\n+\tgetNext()->write(buf, len);\n     }\n }\n \n"
  },
  {
    "path": "package/qpdf/Config.in",
    "content": "config BR2_PACKAGE_QPDF\n\tbool \"qpdf\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_JPEG\n\thelp\n\t  QPDF is a command-line program that does structural,\n\t  content- preserving transformations on PDF files. It could\n\t  have been called something like pdf-to-pdf. It also provides\n\t  many useful capabilities to developers of PDF-producing\n\t  software or for people who just want to look at the innards\n\t  of a PDF file to learn more about how they work.\n\n\t  http://qpdf.sourceforge.net/\n\ncomment \"qpdf needs a toolchain w/ C++, wchar, gcc >= 4.7\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/qpdf/qpdf.hash",
    "content": "# From https://sourceforge.net/projects/qpdf/files/qpdf/9.1.1/qpdf-9.1.1.sha512/download\nsha512  008a11fef663a57ca173631f2053988023babea6c333cfe01db0ef955c8cd36d387ed9f2039f55bd5f9ca94c7a8e400461a09a15c5f89e03bc0817fdd0d3d585  qpdf-9.1.1.tar.gz\n# Locally computed:\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.txt\nsha256  fb929ac30decb4dc3a2eea2bec6c43296a797c5d2d602deb3784ee39430583d5  Artistic-2.0\n"
  },
  {
    "path": "package/qpdf/qpdf.mk",
    "content": "################################################################################\n#\n# qpdf\n#\n################################################################################\n\nQPDF_VERSION = 9.1.1\nQPDF_SITE = http://downloads.sourceforge.net/project/qpdf/qpdf/$(QPDF_VERSION)\nQPDF_INSTALL_STAGING = YES\nQPDF_LICENSE = Apache-2.0 or Artistic-2.0\nQPDF_LICENSE_FILES = LICENSE.txt Artistic-2.0\nQPDF_CPE_ID_VENDOR = qpdf_project\nQPDF_DEPENDENCIES = host-pkgconf zlib jpeg\n\nQPDF_CONF_OPTS = --with-random=/dev/urandom\n\n# 0002-Fix-some-pipelines-to-be-safe-if-downstream-write-fails.patch\nQPDF_IGNORE_CVES += CVE-2021-36978\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nQPDF_CONF_OPTS += --enable-crypto-gnutls\nQPDF_DEPENDENCIES += gnutls\nelse\nQPDF_CONF_OPTS += --disable-crypto-gnutls\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/qpid-proton/Config.in",
    "content": "config BR2_PACKAGE_QPID_PROTON\n\tbool \"qpid-proton\"\n\tdepends on !BR2_STATIC_LIBS # build a shared library\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  The AMQP messaging toolkit\n\n\t  Qpid Proton is a high-performance, lightweight messaging\n\t  library. It can be used in the widest range of messaging\n\t  applications, including brokers, client libraries, routers,\n\t  bridges, proxies, and more.\n\n\t  https://qpid.apache.org/proton/\n\ncomment \"qpid-proton needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/qpid-proton/qpid-proton.hash",
    "content": "# Hash from: https://www.apache.org/dist/qpid/proton/0.35.0/qpid-proton-0.35.0.tar.gz.sha512\nsha512  1031e3d45854107a516699e1d18269c6acb22549b2709c1fc1cd25eb870096de109077445f1b400edf231bb21a476a268e2d6674e986fc50e92a281549085543  qpid-proton-0.35.0.tar.gz\n\n# Locally computed\nsha256  52310e65489d30afeefc8589479fc02862a875349c19edd165658a915009da82  LICENSE.txt\n"
  },
  {
    "path": "package/qpid-proton/qpid-proton.mk",
    "content": "################################################################################\n#\n# qpid-proton\n#\n################################################################################\n\nQPID_PROTON_VERSION = 0.35.0\nQPID_PROTON_SITE = \\\n\thttps://downloads.apache.org/qpid/proton/$(QPID_PROTON_VERSION)\nQPID_PROTON_LICENSE = Apache-2.0\nQPID_PROTON_LICENSE_FILES = LICENSE.txt\nQPID_PROTON_CPE_ID_VENDOR = apache\nQPID_PROTON_CPE_ID_PRODUCT = qpid_proton\nQPID_PROTON_INSTALL_STAGING = YES\nQPID_PROTON_DEPENDENCIES = \\\n\thost-python3 \\\n\tutil-linux \\\n\t$(if $(BR2_PACKAGE_LIBUV),libuv) \\\n\t$(if $(BR2_PACKAGE_OPENSSL),openssl)\n\n# python and ruby language bindings are enabled when host-swig tool is present\n# in HOST_DIR.\n# go language binding is enabled when host-go is present\n# For now, disable all of them.\nQPID_PROTON_CONF_OPTS = \\\n\t-DBUILD_GO=OFF \\\n\t-DBUILD_PYTHON=OFF \\\n\t-DBUILD_RUBY=OFF \\\n\t-DENABLE_FUZZ_TESTING=OFF \\\n\t-DENABLE_VALGRIND=OFF \\\n\t-DENABLE_WARNING_ERROR=OFF \\\n\t-DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python3\n\n# epoll proactor unconditionally uses pthread and cpp (C++) bindings\n# unconditionally use proactor\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nifeq ($(BR2_INSTALL_LIBSTDCPP),y)\nQPID_PROTON_CONF_OPTS += -DBUILD_CPP=ON\nelse\nQPID_PROTON_CONF_OPTS += -DBUILD_CPP=OFF\nendif\nelse\nQPID_PROTON_CONF_OPTS += \\\n\t-DBUILD_CPP=OFF \\\n\t-DPROACTOR=none\nendif\n\nifeq ($(BR2_PACKAGE_JSONCPP),y)\nQPID_PROTON_DEPENDENCIES += jsoncpp\nQPID_PROTON_CONF_OPTS += -DENABLE_JSONCPP=ON\nelse\nQPID_PROTON_CONF_OPTS += -DENABLE_JSONCPP=OFF\nendif\n\ndefine QPID_PROTON_REMOVE_USELESS_FILES\n\trm -fr $(TARGET_DIR)/usr/share/proton/\nendef\n\nQPID_PROTON_POST_INSTALL_TARGET_HOOKS += QPID_PROTON_REMOVE_USELESS_FILES\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/qprint/Config.in",
    "content": "config BR2_PACKAGE_QPRINT\n\tbool \"qprint\"\n\thelp\n\t  qprint is a program that encodes and decodes binary data in\n\t  the Quoted-Printable encoding, defined as a part of the MIME\n\t  specification in RFC 1521. This encoding allows for efficient\n\t  transfer of mostly ASCII data over transports that are only\n\t  7-bit clean, like SMTP without 8BITMIME or BINARYMIME\n\t  extensions. It also allows the transfer of long lines of text\n\t  by wrapping them every 76 characters.\n\n\t  Usually, a sophisticated MUA will take care of automatically\n\t  choosing the best encodings for an e-mail. Nevertheless, this\n\t  utility may be useful when a MTA (e.g. msmtp) is used without\n\t  a MUA, or if using this encoding for other purposes is\n\t  desired.\n\n\t  https://www.fourmilab.ch/webtools/qprint/\n"
  },
  {
    "path": "package/qprint/qprint.hash",
    "content": "# Locally computed\nsha256  ffa9ca1d51c871fb3b56a4bf0165418348cf080f01ff7e59cd04511b9665019c  qprint-1.1.tar.gz\nsha256  3bd4089942977a357fed0d3c84b6ea877000c20c7c344c2feabf4b10db9f7495  COPYING\n"
  },
  {
    "path": "package/qprint/qprint.mk",
    "content": "################################################################################\n#\n# qprint\n#\n################################################################################\n\nQPRINT_VERSION = 1.1\nQPRINT_SITE = https://www.fourmilab.ch/webtools/qprint\nQPRINT_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-bin\nQPRINT_LICENSE = Public Domain\nQPRINT_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/qt-webkit-kiosk/Config.in",
    "content": "config BR2_PACKAGE_QT_WEBKIT_KIOSK\n\tbool \"qt-webkit-kiosk\"\n\tdepends on BR2_PACKAGE_QT5\n\tdepends on !BR2_STATIC_LIBS # qt5webkit\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5webkit\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # qt5webkit -> icu\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # qt5webkit -> icu\n\tdepends on !BR2_BINFMT_FLAT # qt5webkit -> icu\n\tdepends on !BR2_MIPS_SOFT_FLOAT # qt5webkit\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\tselect BR2_PACKAGE_QT5WEBKIT\n\tselect BR2_PACKAGE_QT5MULTIMEDIA\n\thelp\n\t  Simple kiosk-mode browser powered by Qt5Webkit\n\n\t  https://github.com/sergey-dryabzhinsky/qt-webkit-kiosk\n\nif BR2_PACKAGE_QT_WEBKIT_KIOSK\n\nconfig BR2_PACKAGE_QT_WEBKIT_KIOSK_SOUNDS\n\tbool \"Install browser sound files\"\n\thelp\n\t  Deploy browser sound files on target\n\nendif\n\ncomment \"qt-webkit-kiosk needs a toolchain w/ dynamic library, gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n"
  },
  {
    "path": "package/qt-webkit-kiosk/qt-webkit-kiosk.hash",
    "content": "# Locally computed\nsha256  5c3992cc35260d165f9a16094bd224529f012f799e0bc21317a39480cedb1fd2  qt-webkit-kiosk-a7720e50f2bd70aad99e0b465f5c4a57aca48127-br1.tar.gz\nsha256  de59ec6c939f4c4def79c0a996b3bd5626895fcbd1ae108e7bddb1dac8218381  doc/lgpl.html\n"
  },
  {
    "path": "package/qt-webkit-kiosk/qt-webkit-kiosk.mk",
    "content": "################################################################################\n#\n# qt-webkit-kiosk\n#\n################################################################################\n\nQT_WEBKIT_KIOSK_VERSION = a7720e50f2bd70aad99e0b465f5c4a57aca48127\nQT_WEBKIT_KIOSK_SITE = https://github.com/sergey-dryabzhinsky/qt-webkit-kiosk.git\nQT_WEBKIT_KIOSK_SITE_METHOD = git\nQT_WEBKIT_KIOSK_DEPENDENCIES = qt5webkit qt5multimedia\nQT_WEBKIT_KIOSK_LICENSE = LGPL-3.0\nQT_WEBKIT_KIOSK_LICENSE_FILES = doc/lgpl.html\n\nQT_WEBKIT_KIOSK_CONF_OPTS = PREFIX=/usr\n\ndefine QT_WEBKIT_KIOSK_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src -f Makefile.qt-webkit-kiosk \\\n\t\tINSTALL_ROOT=$(TARGET_DIR) \\\n\t\tinstall_target\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tINSTALL_ROOT=$(TARGET_DIR) \\\n\t\tinstall_config \\\n\t\t$(if $(BR2_PACKAGE_QT_WEBKIT_KIOSK_SOUNDS),install_sound)\nendef\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/Config.in",
    "content": "config BR2_PACKAGE_QT5_GL_AVAILABLE\n\tbool\n\tdefault y\n\tdepends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES\n\nconfig BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n\tbool\n\tdefault y\n\t# Javascript engine is only available on certain architectures\n\tdepends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_mipsel\n\t# ARM needs BLX, so v5t+\n\tdepends on !BR2_ARM_CPU_ARMV4\n\ncomment \"Qt5 needs host g++ >= 5.0, and a toolchain w/ gcc >= 5.0, wchar, NPTL, C++, dynamic library\"\n\tdepends on !BR2_ARM_CPU_ARMV4\n\tdepends on !BR2_arc\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_5 || !BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\nmenuconfig BR2_PACKAGE_QT5\n\tbool \"Qt5\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_HOST_GCC_AT_LEAST_5 # Full C++11\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++11, GCC_BUG_57694\n\tdepends on !BR2_ARM_CPU_ARMV4 # needs ARMv5+\n\t# no built-in double-conversion support\n\tdepends on !BR2_arc\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_QT5BASE\n\thelp\n\t  This option enables the Qt5 framework. Sub-options allow to\n\t  select which modules should be built.\n\n\t  http://qt.io\n\nif BR2_PACKAGE_QT5\nsource \"package/qt5/qt53d/Config.in\"\nsource \"package/qt5/qt5base/Config.in\"\nsource \"package/qt5/qt5charts/Config.in\"\nsource \"package/qt5/qt5coap/Config.in\"\nsource \"package/qt5/qt5connectivity/Config.in\"\nsource \"package/qt5/qt5declarative/Config.in\"\nsource \"package/qt5/qt5enginio/Config.in\"\nsource \"package/qt5/qt5graphicaleffects/Config.in\"\nsource \"package/qt5/qt5imageformats/Config.in\"\nsource \"package/qt5/qt5knx/Config.in\"\nsource \"package/qt5/qt5location/Config.in\"\nsource \"package/qt5/qt5lottie/Config.in\"\nsource \"package/qt5/qt5mqtt/Config.in\"\nsource \"package/qt5/qt5multimedia/Config.in\"\nsource \"package/qt5/qt5opcua/Config.in\"\nsource \"package/qt5/qt5quickcontrols/Config.in\"\nsource \"package/qt5/qt5quickcontrols2/Config.in\"\nsource \"package/qt5/qt5quicktimeline/Config.in\"\nsource \"package/qt5/qt5remoteobjects/Config.in\"\nsource \"package/qt5/qt5script/Config.in\"\nsource \"package/qt5/qt5scxml/Config.in\"\nsource \"package/qt5/qt5sensors/Config.in\"\nsource \"package/qt5/qt5serialbus/Config.in\"\nsource \"package/qt5/qt5serialport/Config.in\"\nsource \"package/qt5/qt5svg/Config.in\"\nsource \"package/qt5/qt5tools/Config.in\"\nsource \"package/qt5/qt5virtualkeyboard/Config.in\"\nsource \"package/qt5/qt5wayland/Config.in\"\nsource \"package/qt5/qt5webchannel/Config.in\"\nsource \"package/qt5/qt5webkit/Config.in\"\nsource \"package/qt5/qt5webkit-examples/Config.in\"\nsource \"package/qt5/qt5webengine/Config.in\"\nsource \"package/qt5/qt5websockets/Config.in\"\nsource \"package/qt5/qt5webview/Config.in\"\nsource \"package/qt5/qt5x11extras/Config.in\"\nsource \"package/qt5/qt5xmlpatterns/Config.in\"\nendif\n"
  },
  {
    "path": "package/qt5/qt5.mk",
    "content": "################################################################################\n#\n# qt5\n#\n################################################################################\n\nQT5_VERSION_MAJOR = 5.15\nQT5_VERSION = $(QT5_VERSION_MAJOR).2\nQT5_SOURCE_TARBALL_PREFIX = everywhere-src\nQT5_SITE = https://download.qt.io/archive/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules\n\ninclude $(sort $(wildcard package/qt5/*/*.mk))\n\n# The file \"qt.conf\" can be used to override the hard-coded paths that are\n# compiled into the Qt library. We need it to make \"qmake\" relocatable and\n# tweak the per-package install pathes\ndefine QT5_INSTALL_QT_CONF\n\trm -f $(HOST_DIR)/bin/qt.conf\n\tsed -e \"s|@@HOST_DIR@@|$(HOST_DIR)|\" -e \"s|@@STAGING_DIR@@|$(STAGING_DIR)|\" \\\n\t\t$(QT5BASE_PKGDIR)/qt.conf.in > $(HOST_DIR)/bin/qt.conf\nendef\n\nifeq ($(BR2_PER_PACKAGE_DIRECTORIES),y)\ndefine QT5_QT_CONF_FIXUP\n\t$(QT5_INSTALL_QT_CONF)\nendef\nendif\n\n# Variable for other Qt applications to use\nQT5_QMAKE = $(HOST_DIR)/bin/qmake -spec devices/linux-buildroot-g++\n"
  },
  {
    "path": "package/qt5/qt53d/Config.in",
    "content": "config BR2_PACKAGE_QT53D\n\tbool \"qt53d\"\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative\n\tdepends on BR2_PACKAGE_QT5_GL_AVAILABLE # qt5declarative_quick\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5DECLARATIVE\n\tselect BR2_PACKAGE_QT5DECLARATIVE_QUICK\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  This package corresponds to the qt53d module.\n\n\t  This module was in tech preview in Qt 5.6, and promoted\n\t  to a core module in Qt 5.7.0.\n\n\t  Enable the assimp package to gain the assimp sceneparser\n\t  plugin.\n\n\t  http://doc.qt.io/qt-5/qt3d-index.html\n\ncomment \"qt53d module needs an OpenGL-capable backend\"\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n\tdepends on !BR2_PACKAGE_QT5_GL_AVAILABLE\n"
  },
  {
    "path": "package/qt5/qt53d/qt53d.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qt3d-everywhere-src-5.15.2.tar.xz.sha256\nsha256  03ed6a48c813c75296c19f5d721184ab168280b69d2656cf16f877d3d4c55c1d  qt3d-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253  LICENSE.GPL\nsha256  245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17  LICENSE.GPLv3\nsha256  9ae1959e86bd49b9680f78e0b49d4e52ae88a3f234d497e175e42a7e8ed59216  LICENSE.LGPLv3\n"
  },
  {
    "path": "package/qt5/qt53d/qt53d.mk",
    "content": "################################################################################\n#\n# qt53d\n#\n################################################################################\n\nQT53D_VERSION = $(QT5_VERSION)\nQT53D_SITE = $(QT5_SITE)\nQT53D_SOURCE = qt3d-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT53D_VERSION).tar.xz\nQT53D_DEPENDENCIES = qt5declarative\nQT53D_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_ASSIMP),y)\nQT53D_DEPENDENCIES += assimp\nendif\n\nQT53D_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-3.0\nQT53D_LICENSE_FILES = LICENSE.GPL LICENSE.GPLv3 LICENSE.LGPLv3\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5base/0001-qtbase-Fix-build-error-when-using-EGL.patch",
    "content": "From c11299086b7718332e2b4fbc37ce6f6ff427c5ba Mon Sep 17 00:00:00 2001\nFrom: Yuqing Zhu <carol.zhu@nxp.com>\nDate: Mon, 27 Mar 2017 15:33:35 +0800\nSubject: [PATCH] qtbase: Fix build error when using EGL\nMIME-Version: 1.0\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: 8bit\n\nA build error was occurring due to missing EGL configuration.\n\nFixed by adding the necessary ties to the EGL pkg-config.\n\nTask-number: QTBUG-61712\nChange-Id: I87190ea39392b4604c563cf9d89edb85068d85fc\nUpstream-Status: Pending\nSigned-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>\n---\n mkspecs/features/egl.prf | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/mkspecs/features/egl.prf b/mkspecs/features/egl.prf\nindex 9fa0c9e219..85d5852ba6 100644\n--- a/mkspecs/features/egl.prf\n+++ b/mkspecs/features/egl.prf\n@@ -1,3 +1,9 @@\n+# egl headers need a definition\n+PKG_CONFIG = $$pkgConfigExecutable()\n+PKGCONFIG_CFLAGS = $$system($$PKG_CONFIG --cflags egl)\n+PKGCONFIG_CFLAGS = $$find(PKGCONFIG_CFLAGS, ^-D.*)\n+QMAKE_CFLAGS_EGL = $$PKGCONFIG_CFLAGS\n+\n INCLUDEPATH += $$QMAKE_INCDIR_EGL\n LIBS_PRIVATE += $$QMAKE_LIBS_EGL\n QMAKE_CFLAGS += $$QMAKE_CFLAGS_EGL\n-- \n2.16.1\n\n"
  },
  {
    "path": "package/qt5/qt5base/0002-double-conversion-enable-for-microblaze.patch",
    "content": "From a02b5e3bb41026ca6031d01942a093e9ce54edf3 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Tue, 21 Aug 2018 21:11:40 +0200\nSubject: [PATCH] double-conversion: enable for microblaze\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n[Rebased for Qt5.12.0]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n[Rebased for Qt5.14.0]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/3rdparty/double-conversion/include/double-conversion/utils.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/3rdparty/double-conversion/include/double-conversion/utils.h b/src/3rdparty/double-conversion/include/double-conversion/utils.h\nindex 70e697ca..2bb8e389 100644\n--- a/src/3rdparty/double-conversion/include/double-conversion/utils.h\n+++ b/src/3rdparty/double-conversion/include/double-conversion/utils.h\n@@ -102,6 +102,7 @@ int main(int argc, char** argv) {\n     defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \\\n     defined(__riscv) || \\\n     defined(__or1k__) || defined(__arc__) || \\\n+    defined(__microblaze__) || \\\n     defined(__EMSCRIPTEN__)\n #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1\n #elif defined(__mc68000__) || \\\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/qt5/qt5base/0003-double-conversion-enable-for-nios2.patch",
    "content": "From e3f63db3124caf5bde9cf688eba563f7f025662d Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Sun, 8 Mar 2020 18:08:26 +0100\nSubject: [PATCH] double-conversion: enable for nios2\n\n[Upstream: https://github.com/google/double-conversion/commit/a54561be5588ac9b16d3c20760b9b554168bb8aa]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/3rdparty/double-conversion/include/double-conversion/utils.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/3rdparty/double-conversion/include/double-conversion/utils.h b/src/3rdparty/double-conversion/include/double-conversion/utils.h\nindex d29de950..55ca5bf5 100644\n--- a/src/3rdparty/double-conversion/include/double-conversion/utils.h\n+++ b/src/3rdparty/double-conversion/include/double-conversion/utils.h\n@@ -87,6 +87,7 @@ int main(int argc, char** argv) {\n     defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \\\n     defined(__hppa__) || defined(__ia64__) || \\\n     defined(__mips__) || \\\n+    defined(__nios2__) || \\\n     defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \\\n     defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \\\n     defined(__sparc__) || defined(__sparc) || defined(__s390__) || \\\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/qt5/qt5base/0004-double-conversion-enable-for-xtensa.patch",
    "content": "From f423f160b984c47d831b10447af046bfbd6a3ba1 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Tue, 10 Mar 2020 09:01:31 +0100\nSubject: [PATCH] double-conversion: enable for xtensa\n\n[Upstream: https://github.com/google/double-conversion/commit/a54561be5588ac9b16d3c20760b9b554168bb8aa]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n[Rebased for qtbase-everywhere-src-5.14.0]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n .../double-conversion/include/double-conversion/utils.h         | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/3rdparty/double-conversion/include/double-conversion/utils.h b/src/3rdparty/double-conversion/include/double-conversion/utils.h\nindex 89ab1a31..001ce55f 100644\n--- a/src/3rdparty/double-conversion/include/double-conversion/utils.h\n+++ b/src/3rdparty/double-conversion/include/double-conversion/utils.h\n@@ -103,7 +103,7 @@ int main(int argc, char** argv) {\n     defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \\\n     defined(__riscv) || \\\n     defined(__or1k__) || defined(__arc__) || \\\n-    defined(__microblaze__) || \\\n+    defined(__microblaze__) || defined(__XTENSA__) || \\\n     defined(__EMSCRIPTEN__)\n #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1\n #elif defined(__mc68000__) || \\\n-- \n2.26.0\n\n"
  },
  {
    "path": "package/qt5/qt5base/0005-eglfs-avoid-breaking-compilation-for-obscure-EGLNativeDisplayType-types.patch",
    "content": "From 0eb7058b473069a04cde60a800dfd04148c0c8b1 Mon Sep 17 00:00:00 2001\nFrom: Yann E. MORIN <yann.morin.1998@free.fr>\nDate: Sat, 14 Dec 2020 21:15:17 +0100\nSubject: [PATCH] plugins/eglfs/gbm: don't FTBFS when EGLNativeDisplayType is not a pointer\n\nOn some platforms, EGLNativeDisplayType is not a pointer, but some kind\nof integer, like an int (e.g. TI's SGX) or an unsigned int. In those\ncases, the build breaks with:\n\n    qeglfskmsgbmintegration.cpp: In member function ‘virtual void* QEglFSKmsGbmIntegration::createDisplay(EGLNativeDisplayType)’:\n    qeglfskmsgbmintegration.cpp:83:60: error: invalid conversion from ‘EGLNativeDisplayType’ {aka ‘int’} to ‘void*’ [-fpermissive]\n       83 |         display = getPlatformDisplay(EGL_PLATFORM_GBM_KHR, nativeDisplay, nullptr);\n          |                                                            ^~~~~~~~~~~~~\n          |                                                            |\n          |                                                            EGLNativeDisplayType {aka int}\n\nWe fix that by casting nativeDisplay to void* as expected by\ngetPlatformDisplay().\n\nWe can do that, because usually, nativeDisplay is already a pointer, and\nthus this cast is a no-op. When it is not already a pointer, we either\ndon't care because the code path will not be taken at runtime, or the\ninteger really is an opaque handle to some internal, low-level memory\nmanagement, much like a void* is an pointer to an opaque memory type...\n\nIt is to be noted, though, that in some ABIs (like x32), the size of a\nnativeDisplay that is not already a pointer, might be bigger than that\nof a pointer. There is not much we can do here anyway, since there would\nbe no way to fit that in a void* to begin with, and the build will still\nfail for those situations. Those types of ABIs are far frome being\nwidespread, the most prominent one, x32, even being retired...\n\nTo be noted further: a more usual solution (as suggested in QTBUG-72567\nor in Gerrit:248270) would be to first cast to a qintptr or a quintptr,\nbefore finally casting to a void*. However, casting to either (resp.)\nqintptr or quintptr first, risk the case that nativeDisplay is of the other\nkind of signedness, (resp.) unsigned or signed, which would also cause\nsome compile-time breakage.\n\nFinally, if nativeDisplay is something that is not an int-like, and that\ncan't be cast into a void*, this would be hugely weird, so much so, that\nwe do not even attempt to catter for that case.\n\nFixes: QTBUG-72567\nInspired-by: https://codereview.qt-project.org/c/qt/qtbase/+/248270\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n\ndiff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp\nindex d495a8d..059a580 100644\n--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp\n+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp\n@@ -80,7 +80,9 @@\n     }\n \n     if (getPlatformDisplay) {\n-        display = getPlatformDisplay(EGL_PLATFORM_GBM_KHR, nativeDisplay, nullptr);\n+        // EGLNativeDisplayType may be int on some platforms but those\n+        // won't hit this path. Have to keep it compiling nonetheless.\n+        display = getPlatformDisplay(EGL_PLATFORM_GBM_KHR, reinterpret_cast<void *>(nativeDisplay), nullptr);\n     } else {\n         qCDebug(qLcEglfsKmsDebug, \"No eglGetPlatformDisplay for GBM, falling back to eglGetDisplay\");\n         display = eglGetDisplay(nativeDisplay);\n"
  },
  {
    "path": "package/qt5/qt5base/0006-Fix-build-with-GCC-11-include-limits.patch",
    "content": "From 9c56d4da2ff631a8c1c30475bd792f6c86bda53c Mon Sep 17 00:00:00 2001\nFrom: Thiago Macieira <thiago.macieira@intel.com>\nDate: Mon, 18 Jan 2021 07:40:54 -0800\nSubject: [PATCH] Fix build with GCC 11: include <limits>\n\nFixes: QTBUG-90395\nPick-to: 6.0\nChange-Id: Iecc74d2000eb40dfbe7bfffd165b5dd3708b7a40\nReviewed-by: Edward Welbourne <edward.welbourne@qt.io>\n\n[Retrieved (and backported) from:\nhttps://github.com/qt/qtbase/commit/9c56d4da2ff631a8c1c30475bd792f6c86bda53c]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/corelib/global/qendian.h  | 6 ++++--\n src/corelib/global/qfloat16.h | 1 +\n 2 files changed, 5 insertions(+), 2 deletions(-)\n\ndiff --git a/src/corelib/global/qendian.h b/src/corelib/global/qendian.h\nindex 99b529f17cd..c874c5e47ab 100644\n--- a/src/corelib/global/qendian.h\n+++ b/src/corelib/global/qendian.h\n@@ -1,7 +1,7 @@\n /****************************************************************************\n **\n-** Copyright (C) 2016 The Qt Company Ltd.\n-** Copyright (C) 2016 Intel Corporation.\n+** Copyright (C) 2021 The Qt Company Ltd.\n+** Copyright (C) 2021 Intel Corporation.\n ** Contact: https://www.qt.io/licensing/\n **\n ** This file is part of the QtCore module of the Qt Toolkit.\n@@ -44,6 +44,8 @@\n #include <QtCore/qfloat16.h>\n #include <QtCore/qglobal.h>\n \n+#include <limits>\n+\n // include stdlib.h and hope that it defines __GLIBC__ for glibc-based systems\n #include <stdlib.h>\n #include <string.h>\ndiff --git a/src/corelib/global/qfloat16.h b/src/corelib/global/qfloat16.h\nindex e9477d2ecec..a25fac28862 100644\n--- a/src/corelib/global/qfloat16.h\n+++ b/src/corelib/global/qfloat16.h\n@@ -44,6 +44,7 @@\n\n #include <QtCore/qglobal.h>\n #include <QtCore/qmetatype.h>\n+#include <limits>\n #include <string.h>\n \n #if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__)\n"
  },
  {
    "path": "package/qt5/qt5base/0007-Build-fixes-for-GCC-11.patch",
    "content": "From 86494659b2ab14edc653cd2d9260561ad4c4e4e8 Mon Sep 17 00:00:00 2001\nFrom: Ville Voutilainen <ville.voutilainen@qt.io>\nDate: Mon, 18 Jan 2021 09:58:17 +0200\nSubject: [PATCH] Build fixes for GCC 11\n\nTask-number: QTBUG-89977\nChange-Id: Ic1b7ddbffb8a0a00f8c621d09a868f1d94a52c21\nReviewed-by: Lars Knoll <lars.knoll@qt.io>\nReviewed-by: Thiago Macieira <thiago.macieira@intel.com>\n[Retrieved (and backported) from:\nhttps://github.com/qt/qtbase/commit/813a928c7c3cf98670b6043149880ed5c955efb9]\nSigned-off-by: Maxim Kochetkov <fido_max@inbox.ru>\n---\n src/corelib/text/qbytearraymatcher.h     | 2 ++\n src/corelib/tools/qsharedpointer_impl.h  | 3 ---\n src/plugins/platforms/xcb/qxcbwindow.cpp | 2 +-\n 3 files changed, 3 insertions(+), 4 deletions(-)\n\ndiff --git a/src/corelib/text/qbytearraymatcher.h b/src/corelib/text/qbytearraymatcher.h\nindex 0eedfc1d20..f5f9bef7b8 100644\n--- a/src/corelib/text/qbytearraymatcher.h\n+++ b/src/corelib/text/qbytearraymatcher.h\n@@ -42,6 +42,8 @@\n \n #include <QtCore/qbytearray.h>\n \n+#include <limits>\n+\n QT_BEGIN_NAMESPACE\n \n \ndiff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h\nindex 790c187cb9..4aee98af53 100644\n--- a/src/corelib/tools/qsharedpointer_impl.h\n+++ b/src/corelib/tools/qsharedpointer_impl.h\n@@ -155,9 +155,6 @@ namespace QtSharedPointer {\n #endif\n         inline void checkQObjectShared(...) { }\n         inline void setQObjectShared(...) { }\n-\n-        inline void operator delete(void *ptr) { ::operator delete(ptr); }\n-        inline void operator delete(void *, void *) { }\n     };\n     // sizeof(ExternalRefCountData) = 12 (32-bit) / 16 (64-bit)\n \ndiff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp\nindex 9e7e1a5572..f0866a90ac 100644\n--- a/src/plugins/platforms/xcb/qxcbwindow.cpp\n+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp\n@@ -698,7 +698,7 @@ void QXcbWindow::show()\n         if (isTransient(window())) {\n             const QWindow *tp = window()->transientParent();\n             if (tp && tp->handle())\n-                transientXcbParent = static_cast<const QXcbWindow *>(tp->handle())->winId();\n+                transientXcbParent = tp->handle()->winId();\n             // Default to client leader if there is no transient parent, else modal dialogs can\n             // be hidden by their parents.\n             if (!transientXcbParent)\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/qt5/qt5base/0008-Add-missing-limits-include.patch",
    "content": "From 87a869a8404047240cccaa9f101351aeb9417a26 Mon Sep 17 00:00:00 2001\nFrom: Nicolas Fella <nicolas.fella@kdab.com>\nDate: Sun, 20 Jun 2021 17:36:41 +0200\nSubject: [PATCH] Add missing limits include\n\nThe code uses std::numeric_limits but is lacking the appropriate include\n\nPick-to: 5.15 6.1 6.2\nChange-Id: I41fa5ac4d8c4e06f35b5b1551ef2ad8417df80bd\nReviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>\n\n[Upstream: https://code.qt.io/cgit/qt/qtbase.git/patch/?id=2b2b3155d9f6ba1e4f859741468fbc47db09292b]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/corelib/tools/qoffsetstringarray_p.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/corelib/tools/qoffsetstringarray_p.h b/src/corelib/tools/qoffsetstringarray_p.h\nindex 4dd9e960..e26a57ff 100644\n--- a/src/corelib/tools/qoffsetstringarray_p.h\n+++ b/src/corelib/tools/qoffsetstringarray_p.h\n@@ -55,6 +55,7 @@\n \n #include <tuple>\n #include <array>\n+#include <limits>\n \n QT_BEGIN_NAMESPACE\n \n-- \n2.32.0\n\n"
  },
  {
    "path": "package/qt5/qt5base/0009-Fix-build-on-riscv32.patch",
    "content": "From 035dc537bee26e3b63a211b2835d8560439e161f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 27 Aug 2021 16:28:32 +0200\nSubject: Fix build on riscv32\n\nriscv32 fails to build because __NR_futex is not defined on this\narchitecture:\n\nIn file included from thread/qmutex_linux.cpp:45,\n                 from thread/qmutex.cpp:804:\nthread/qfutex_p.h: In function 'int QtLinuxFutex::_q_futex(int*, int, int, quintptr, int*, int)':\nthread/qfutex_p.h:116:30: error: '__NR_futex' was not declared in this scope; did you mean '_q_futex'?\n  116 |         int result = syscall(__NR_futex, addr, op | FUTEX_PRIVATE_FLAG, val, val2, addr2, val3);\n      |                              ^~~~~~~~~~\n      |                              _q_futex\n\nPick-to: 6.1 6.2\nFixes: QTBUG-96067\nChange-Id: Ib6a9bcc496f37e69ac39362cb0a021fccaf311f5\nReviewed-by: Thiago Macieira <thiago.macieira@intel.com>\n[Retrieved from:\nhttps://code.qt.io/cgit/qt/qtbase.git/commit/?id=035dc537bee26e3b63a211b2835d8560439e161f]\n---\n src/corelib/thread/qfutex_p.h | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/src/corelib/thread/qfutex_p.h b/src/corelib/thread/qfutex_p.h\nindex 40482b6fc1..037207a5c0 100644\n--- a/src/corelib/thread/qfutex_p.h\n+++ b/src/corelib/thread/qfutex_p.h\n@@ -103,6 +103,11 @@ QT_END_NAMESPACE\n // if not defined in linux/futex.h\n #  define FUTEX_PRIVATE_FLAG        128         // added in v2.6.22\n \n+// RISC-V does not supply __NR_futex\n+#  ifndef __NR_futex\n+#    define __NR_futex __NR_futex_time64\n+#  endif\n+\n QT_BEGIN_NAMESPACE\n namespace QtLinuxFutex {\n     constexpr inline bool futexAvailable() { return true; }\n-- \ncgit v1.2.1\n\n"
  },
  {
    "path": "package/qt5/qt5base/Config.in",
    "content": "config BR2_PACKAGE_QT5BASE\n\tbool \"qt5base\"\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_PCRE2\n\tselect BR2_PACKAGE_PCRE2_16\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  This package corresponds to the qt5base module, which\n\t  contains the base Qt libraries: QtCore, QtNetwork, QtGui,\n\t  QtWidgets, etc.\n\n\t  http://qt.io\n\nif BR2_PACKAGE_QT5BASE\n\nconfig BR2_PACKAGE_QT5BASE_CUSTOM_CONF_OPTS\n\tstring \"Custom configuration options\"\n\thelp\n\t  Define custom qt5 configuration options which can be used to\n\t  enable or disable options not managed by buildroot. These\n\t  options are appended to the ones generated by buildroot and\n\t  passed to qt5base during configuration.\n\n\t  E.g. to remove the Windows Vista style option, add the option\n\t  -no-feature-style_windowsvista.\n\nconfig BR2_PACKAGE_QT5BASE_CONFIG_FILE\n\tstring \"Config file\"\n\thelp\n\t  Configure options allow to set which modules are being\n\t  compiled or not in Qt, but Qt also provide a more\n\t  fine-grained mechanism to configure which features should be\n\t  enabled or disabled, through a header file. Examples of such\n\t  header files can be found in src/corelib/global/qconfig-*.h\n\t  in the Qt sources.\n\n\t  This option allows to set the path of such a configuration\n\t  file, which Buildroot will give to Qt at compile time.\n\nconfig BR2_PACKAGE_QT5BASE_EXAMPLES\n\tbool \"Compile and install examples (with code)\"\n\tselect BR2_PACKAGE_QT5BASE_NETWORK\n\tselect BR2_PACKAGE_QT5BASE_XML\n\thelp\n\t  If unsure, say N.\n\nconfig BR2_PACKAGE_QT5BASE_NETWORK\n\tdef_bool y\n\nconfig BR2_PACKAGE_QT5BASE_CONCURRENT\n\tbool \"concurrent module\"\n\thelp\n\t  This options enables the Qt5Concurrent library.\n\nconfig BR2_PACKAGE_QT5BASE_SQL\n\tdef_bool y\n\nif BR2_PACKAGE_QT5BASE_SQL\nconfig BR2_PACKAGE_QT5BASE_MYSQL\n\tbool \"MySQL Plugin\"\n\tdepends on BR2_USE_MMU # mysql\n\tselect BR2_PACKAGE_MYSQL\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  Build MySQL plugin\n\t  If unsure, say n.\n\nconfig BR2_PACKAGE_QT5BASE_PSQL\n\tbool \"PostgreSQL Plugin\"\n\tdepends on BR2_USE_MMU # postgresql\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR # postgresql\n\tselect BR2_PACKAGE_POSTGRESQL\n\thelp\n\t  Build PostgreSQL plugin\n\t  If unsure, say n.\n\ncomment \"PostgreSQL plugin needs a toolchain w/ wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_USE_WCHAR\n\nchoice\n\tprompt \"SQLite 3 support\"\n\tdefault BR2_PACKAGE_QT5BASE_SQLITE_NONE\n\thelp\n\t  Select SQLite support.\n\nconfig BR2_PACKAGE_QT5BASE_SQLITE_NONE\n\tbool \"No sqlite support\"\n\thelp\n\t  Do not compile any kind of SQLite support.\n\nconfig BR2_PACKAGE_QT5BASE_SQLITE_QT\n\tbool \"Qt SQLite\"\n\thelp\n\t  Use Qt bundled SQLite support.\n\nconfig BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM\n\tbool \"System SQLite\"\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA\n\thelp\n\t  Use system SQLite.\n\nendchoice\n\nendif\n\nconfig BR2_PACKAGE_QT5BASE_TEST\n\tdef_bool y\n\nconfig BR2_PACKAGE_QT5BASE_XML\n\tdef_bool y\n\nconfig BR2_PACKAGE_QT5BASE_GUI\n\tbool \"gui module\"\n\tselect BR2_PACKAGE_FREETYPE\n\t# At least one graphic backend must be enabled, so enable\n\t# linuxfb if nothing is enabled.\n\tselect BR2_PACKAGE_QT5BASE_LINUXFB if \\\n\t       !BR2_PACKAGE_QT5BASE_DIRECTFB && \\\n\t       !BR2_PACKAGE_QT5BASE_XCB && \\\n\t       !BR2_PACKAGE_QT5BASE_EGLFS\n\thelp\n\t  This option enables the Qt5Gui library.\n\nif BR2_PACKAGE_QT5BASE_GUI\n\nconfig BR2_PACKAGE_QT5BASE_WIDGETS\n\tbool \"widgets module\"\n\tselect BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT5BASE_XCB\n\thelp\n\t  This option enables the Qt5Widgets library.\n\ncomment \"OpenGL support needs an OpenGL-capable backend\"\n\tdepends on !BR2_PACKAGE_QT5_GL_AVAILABLE\n\nconfig BR2_PACKAGE_QT5BASE_OPENGL\n\tbool \"OpenGL support\"\n\tdepends on BR2_PACKAGE_QT5_GL_AVAILABLE\n\thelp\n\t  This option enables OpenGL support.\n\nif BR2_PACKAGE_QT5BASE_OPENGL\n\nchoice\n\tprompt \"OpenGL API\"\n\thelp\n\t  Select OpenGL API.\n\nconfig BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP\n\tbool \"Desktop OpenGL\"\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\thelp\n\t  Use desktop OpenGL.\n\nconfig BR2_PACKAGE_QT5BASE_OPENGL_ES2\n\tbool \"OpenGL ES 2.0+\"\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n\thelp\n\t  Use OpenGL ES 2.0 and later versions.\n\nendchoice\n\nconfig BR2_PACKAGE_QT5BASE_OPENGL_LIB\n\tbool \"opengl module\"\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\thelp\n\t  This option enables the Qt5OpenGL library. This library\n\t  includes OpenGL support classes provided to ease porting\n\t  from Qt 4.x.\n\nendif\n\nconfig BR2_PACKAGE_QT5BASE_LINUXFB\n\tbool \"linuxfb support\"\n\nconfig BR2_PACKAGE_QT5BASE_DIRECTFB\n\tbool \"directfb support\"\n\tdepends on BR2_PACKAGE_DIRECTFB\n\ncomment \"directfb backend available if directfb is enabled\"\n\tdepends on !BR2_PACKAGE_DIRECTFB\n\nconfig BR2_PACKAGE_QT5BASE_XCB\n\tbool \"X.org XCB support\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_LIBXCB\n\tselect BR2_PACKAGE_XCB_UTIL_IMAGE\n\tselect BR2_PACKAGE_XCB_UTIL_KEYSYMS\n\tselect BR2_PACKAGE_XCB_UTIL_RENDERUTIL\n\tselect BR2_PACKAGE_XCB_UTIL_WM\n\tselect BR2_PACKAGE_LIBXKBCOMMON\n\ncomment \"X.org XCB backend available if X.org is enabled\"\n\tdepends on !BR2_PACKAGE_XORG7\n\nconfig BR2_PACKAGE_QT5BASE_EGLFS\n\tbool \"eglfs support\"\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tdepends on BR2_PACKAGE_QT5_GL_AVAILABLE\n\tselect BR2_PACKAGE_QT5BASE_OPENGL\n\ncomment \"eglfs backend available if OpenGL and EGL are enabled\"\n\tdepends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_PACKAGE_QT5_GL_AVAILABLE\n\nconfig BR2_PACKAGE_QT5BASE_DEFAULT_QPA\n\tstring \"Default graphical platform\"\n\thelp\n\t  Choose the default platform abstraction to use for graphical\n\t  applications (e.g xcb, linuxfb, eglfs, ...). If this is\n\t  empty, the default for your architecture will be used\n\t  (usually this is eglfs).\n\n\t  You can get a list of supported platforms by running a Qt\n\t  application with the option \"-platform help\" on your\n\t  target. You can choose a different platform at runtime with\n\t  the -platform option.\n\nconfig BR2_PACKAGE_QT5BASE_PRINTSUPPORT\n\tdepends on BR2_PACKAGE_QT5BASE_WIDGETS\n\tdef_bool y\n\nconfig BR2_PACKAGE_QT5BASE_FONTCONFIG\n\tbool \"fontconfig support\"\n\tselect BR2_PACKAGE_FONTCONFIG\n\thelp\n\t  This option enables Fontconfig and Freetype support using\n\t  the system fontconfig and freetype2 libraries.\n\nconfig BR2_PACKAGE_QT5BASE_HARFBUZZ\n\tbool \"harfbuzz support\"\n\tselect BR2_PACKAGE_HARFBUZZ if \\\n\t\tBR2_TOOLCHAIN_HAS_SYNC_4 && \\\n\t\tBR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\thelp\n\t  This option enables HarfBuzz support (either system harfbuzz\n\t  if the toolchain supports __sync for 4 bytes, or the qt\n\t  provided one which avoids this dependency by using QAtomic).\n\nconfig BR2_PACKAGE_QT5BASE_GIF\n\tbool \"GIF support\"\n\thelp\n\t  This compiles and installs the plugin for GIF reading support.\n\nconfig BR2_PACKAGE_QT5BASE_JPEG\n\tbool \"JPEG support\"\n\tselect BR2_PACKAGE_JPEG\n\thelp\n\t  This option enables JPEG support using the system libjpeg\n\t  library.\n\nconfig BR2_PACKAGE_QT5BASE_PNG\n\tbool \"PNG support\"\n\tselect BR2_PACKAGE_LIBPNG\n\thelp\n\t  This option enables PNG support using the system libpng\n\t  library.\n\nendif\n\nconfig BR2_PACKAGE_QT5BASE_SYSLOG\n\tbool \"syslog support\"\n\thelp\n\t  Logs to the standard UNIX logging mechanism.\n\nconfig BR2_PACKAGE_QT5BASE_DBUS\n\tbool \"DBus module\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_DBUS\n\thelp\n\t  This option enables the D-Bus module.\n\nconfig BR2_PACKAGE_QT5BASE_ICU\n\tbool \"Enable ICU support\"\n\tdepends on !BR2_BINFMT_FLAT # icu\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # icu\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # icu\n\tselect BR2_PACKAGE_ICU\n\thelp\n\t  This option enables ICU support in Qt5. This is for example\n\t  needed for Qt5Webkit.\n\ncomment \"icu support needs a toolchain w/ gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_QT5BASE_TSLIB\n\tbool \"Enable Tslib support\"\n\tselect BR2_PACKAGE_TSLIB\n\thelp\n\t  This options enables the Tslib plugin\n\nendif\n"
  },
  {
    "path": "package/qt5/qt5base/qmake.conf.in",
    "content": "# Qt5 has a mechanism to support \"device\" profiles, so that people can\n# specify the compiler, compiler flags and so on for a specific device.\n\n# We leverage this mechanism in the Buildroot packaging of qt5 to\n# simplify cross-compilation: we have our own \"device\" definition, which\n# allows us to easily pass the cross-compiler paths and flags from our\n# qt5.mk.\n\ninclude(../common/linux_device_pre.conf)\n\n# modifications to g++-unix.conf\nQMAKE_CC                = $${CROSS_COMPILE}gcc\nQMAKE_CXX               = $${CROSS_COMPILE}g++\n\n# modifications to gcc-base.conf\nQMAKE_CFLAGS           += $${BR_COMPILER_CFLAGS}\nQMAKE_CXXFLAGS         += $${BR_COMPILER_CXXFLAGS}\n# Remove all optimisation flags, we really only want our own.\nQMAKE_CFLAGS_OPTIMIZE       =\nQMAKE_CFLAGS_OPTIMIZE_DEBUG =\nQMAKE_CFLAGS_OPTIMIZE_FULL  =\nQMAKE_CFLAGS_OPTIMIZE_SIZE  =\nQMAKE_CFLAGS_DEBUG =\nQMAKE_CXXFLAGS_DEBUG =\nQMAKE_CFLAGS_RELEASE =\nQMAKE_CXXFLAGS_RELEASE =\nCONFIG                 += nostrip\n\nQMAKE_LIBS             += -lrt -lpthread -ldl\nQMAKE_CFLAGS_ISYSTEM   =\n\n# Architecture specific configuration\ninclude(arch.conf)\n\n@EGLFS_DEVICE@\n\ninclude(../common/linux_device_post.conf)\nload(qt_config)\n"
  },
  {
    "path": "package/qt5/qt5base/qplatformdefs.h",
    "content": "#include \"../../linux-g++/qplatformdefs.h\"\n"
  },
  {
    "path": "package/qt5/qt5base/qt.conf.in",
    "content": "[Paths]\nPrefix=/usr\nHostPrefix=@@HOST_DIR@@\nSysroot=@@STAGING_DIR@@\nHeaders=/usr/include/qt5\nPlugins=/usr/lib/qt/plugins\nExamples=/usr/lib/qt/examples\n"
  },
  {
    "path": "package/qt5/qt5base/qt5base.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtbase-everywhere-src-5.15.2.tar.xz.sha256\nsha256  909fad2591ee367993a75d7e2ea50ad4db332f05e1c38dd7a5a274e156a4e0f8  qtbase-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  88ec689407cf2df9b2eb5c45952564d51ce73c129a3bdffb15c0d2d161ad7558  LICENSE.LGPLv3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\nsha256  2a886915de4f296cdae5ed67064f86dba01d0c55286d86e8487f2a5caaf40216  src/3rdparty/harfbuzz-ng/COPYING\n"
  },
  {
    "path": "package/qt5/qt5base/qt5base.mk",
    "content": "################################################################################\n#\n# qt5base\n#\n################################################################################\n\nQT5BASE_VERSION = $(QT5_VERSION)\nQT5BASE_SITE = $(QT5_SITE)\nQT5BASE_SOURCE = qtbase-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5BASE_VERSION).tar.xz\n\nQT5BASE_DEPENDENCIES = host-pkgconf pcre2 zlib\nQT5BASE_INSTALL_STAGING = YES\n\n# A few comments:\n#  * -no-pch to workaround the issue described at\n#     http://comments.gmane.org/gmane.comp.lib.qt.devel/5933.\n#  * -system-zlib because zlib is mandatory for Qt build, and we\n#     want to use the Buildroot packaged zlib\n#  * -system-pcre because pcre is mandatory to build Qt, and we\n#    want to use the one packaged in Buildroot\n#  * -no-feature-relocatable to work around path mismatch\n#     while searching qml files and buildroot BR2_ROOTFS_MERGED_USR\n#     feature enabled\nQT5BASE_CONFIGURE_OPTS += \\\n\t-optimized-qmake \\\n\t-no-iconv \\\n\t-system-zlib \\\n\t-system-pcre \\\n\t-no-pch \\\n\t-shared \\\n\t-no-feature-relocatable\n\n# starting from version 5.9.0, -optimize-debug is enabled by default\n# for debug builds and it overrides -O* with -Og which is not what we\n# want.\nQT5BASE_CONFIGURE_OPTS += -no-optimize-debug\n\nQT5BASE_CFLAGS = $(TARGET_CFLAGS)\nQT5BASE_CXXFLAGS = $(TARGET_CXXFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_90620),y)\nQT5BASE_CFLAGS += -O0\nQT5BASE_CXXFLAGS += -O0\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE2),)\nQT5BASE_CONFIGURE_OPTS += -no-sse2\nelse ifeq ($(BR2_X86_CPU_HAS_SSE3),)\nQT5BASE_CONFIGURE_OPTS += -no-sse3\nelse ifeq ($(BR2_X86_CPU_HAS_SSSE3),)\nQT5BASE_CONFIGURE_OPTS += -no-ssse3\nelse ifeq ($(BR2_X86_CPU_HAS_SSE4),)\nQT5BASE_CONFIGURE_OPTS += -no-sse4.1\nelse ifeq ($(BR2_X86_CPU_HAS_SSE42),)\nQT5BASE_CONFIGURE_OPTS += -no-sse4.2\nelse ifeq ($(BR2_X86_CPU_HAS_AVX),)\nQT5BASE_CONFIGURE_OPTS += -no-avx\nelse ifeq ($(BR2_X86_CPU_HAS_AVX2),)\nQT5BASE_CONFIGURE_OPTS += -no-avx2\nelse\n# no buildroot BR2_X86_CPU_HAS_AVX512 option yet for qt configure\n# option '-no-avx512'\nendif\n\nifeq ($(BR2_PACKAGE_LIBDRM),y)\nQT5BASE_CONFIGURE_OPTS += -kms\nQT5BASE_DEPENDENCIES += libdrm\nelse\nQT5BASE_CONFIGURE_OPTS += -no-kms\nendif\n\n# Uses libgbm from mesa3d\nifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y)\nQT5BASE_CONFIGURE_OPTS += -gbm\nQT5BASE_DEPENDENCIES += mesa3d\nelse ifeq ($(BR2_PACKAGE_GCNANO_BINARIES),y)\nQT5BASE_CONFIGURE_OPTS += -gbm\nQT5BASE_DEPENDENCIES += gcnano-binaries\nelse ifeq ($(BR2_PACKAGE_TI_SGX_UM),y)\nQT5BASE_CONFIGURE_OPTS += -gbm\nQT5BASE_DEPENDENCIES += ti-sgx-um\nelse ifeq ($(BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL),y)\nQT5BASE_CONFIGURE_OPTS += -gbm\nQT5BASE_DEPENDENCIES += imx-gpu-viv\nelse\nQT5BASE_CONFIGURE_OPTS += -no-gbm\nendif\n\nifeq ($(BR2_ENABLE_RUNTIME_DEBUG),y)\nQT5BASE_CONFIGURE_OPTS += -debug\nelse\nQT5BASE_CONFIGURE_OPTS += -release\nendif\n\nQT5BASE_CONFIGURE_OPTS += -opensource -confirm-license\nQT5BASE_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5BASE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL\nifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)\nQT5BASE_LICENSE += , BSD-3-Clause (examples)\nendif\n\nQT5BASE_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_QT5BASE_CONFIG_FILE))\n\nifneq ($(QT5BASE_CONFIG_FILE),)\nQT5BASE_CONFIGURE_OPTS += -qconfig buildroot\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nQT5BASE_DEPENDENCIES += udev\nendif\n\nifeq ($(BR2_PACKAGE_CUPS), y)\nQT5BASE_DEPENDENCIES += cups\nQT5BASE_CONFIGURE_OPTS += -cups\nelse\nQT5BASE_CONFIGURE_OPTS += -no-cups\nendif\n\n# Qt5 SQL Plugins\nifeq ($(BR2_PACKAGE_QT5BASE_SQL),y)\nifeq ($(BR2_PACKAGE_QT5BASE_MYSQL),y)\nQT5BASE_CONFIGURE_OPTS += -plugin-sql-mysql -mysql_config $(STAGING_DIR)/usr/bin/mysql_config\nQT5BASE_DEPENDENCIES   += mysql\nelse\nQT5BASE_CONFIGURE_OPTS += -no-sql-mysql\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_PSQL),y)\nQT5BASE_CONFIGURE_OPTS += -plugin-sql-psql -psql_config $(STAGING_DIR)/usr/bin/pg_config\nQT5BASE_DEPENDENCIES   += postgresql\nelse\nQT5BASE_CONFIGURE_OPTS += -no-sql-psql\nendif\n\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_SQLITE_QT),-plugin-sql-sqlite)\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM),-system-sqlite)\nQT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM),sqlite)\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_SQLITE_NONE),-no-sql-sqlite)\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_GUI),y)\nQT5BASE_CONFIGURE_OPTS += -gui -system-freetype\nQT5BASE_DEPENDENCIES += freetype\nelse\nQT5BASE_CONFIGURE_OPTS += -no-gui -no-freetype\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_HARFBUZZ),y)\nifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),y)\n# system harfbuzz in case __sync for 4 bytes is supported\nQT5BASE_CONFIGURE_OPTS += -system-harfbuzz\nQT5BASE_DEPENDENCIES += harfbuzz\nelse\n# qt harfbuzz otherwise (using QAtomic instead)\nQT5BASE_CONFIGURE_OPTS += -qt-harfbuzz\nQT5BASE_LICENSE += , MIT (harfbuzz)\nQT5BASE_LICENSE_FILES += src/3rdparty/harfbuzz-ng/COPYING\nendif\nelse\nQT5BASE_CONFIGURE_OPTS += -no-harfbuzz\nendif\n\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),-widgets,-no-widgets)\n# We have to use --enable-linuxfb, otherwise Qt thinks that -linuxfb\n# is to add a link against the \"inuxfb\" library.\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_LINUXFB),--enable-linuxfb,-no-linuxfb)\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_DIRECTFB),-directfb,-no-directfb)\nQT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_DIRECTFB),directfb)\n\nifeq ($(BR2_PACKAGE_QT5BASE_XCB),y)\nQT5BASE_CONFIGURE_OPTS += -xcb\nQT5BASE_CONFIGURE_OPTS += -xkbcommon\n\nQT5BASE_DEPENDENCIES   += \\\n\tlibxcb \\\n\txcb-util-wm \\\n\txcb-util-image \\\n\txcb-util-keysyms \\\n\txcb-util-renderutil \\\n\txlib_libX11 \\\n\tlibxkbcommon\nifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS),y)\nQT5BASE_DEPENDENCIES   += xlib_libXext\nendif\nelse\nQT5BASE_CONFIGURE_OPTS += -no-xcb\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP),y)\nQT5BASE_CONFIGURE_OPTS += -opengl desktop\nQT5BASE_DEPENDENCIES   += libgl\nelse ifeq ($(BR2_PACKAGE_QT5BASE_OPENGL_ES2),y)\nQT5BASE_CONFIGURE_OPTS += -opengl es2\nQT5BASE_DEPENDENCIES   += libgles\nelse\nQT5BASE_CONFIGURE_OPTS += -no-opengl\nendif\n\nQT5BASE_DEFAULT_QPA = $(call qstrip,$(BR2_PACKAGE_QT5BASE_DEFAULT_QPA))\nQT5BASE_CONFIGURE_OPTS += $(if $(QT5BASE_DEFAULT_QPA),-qpa $(QT5BASE_DEFAULT_QPA))\n\nifeq ($(BR2_PACKAGE_QT5BASE_EGLFS),y)\nQT5BASE_CONFIGURE_OPTS += -eglfs\nQT5BASE_DEPENDENCIES   += libegl\nelse\nQT5BASE_CONFIGURE_OPTS += -no-eglfs\nendif\n\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_OPENSSL),-openssl,-no-openssl)\nQT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_OPENSSL),openssl)\n\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_FONTCONFIG),-fontconfig,-no-fontconfig)\nQT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_FONTCONFIG),fontconfig)\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_GIF),,-no-gif)\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_JPEG),-system-libjpeg,-no-libjpeg)\nQT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_JPEG),jpeg)\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_PNG),-system-libpng,-no-libpng)\nQT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_PNG),libpng)\n\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_DBUS),-dbus,-no-dbus)\nQT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_DBUS),dbus)\n\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_TSLIB),-tslib,-no-tslib)\nQT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_TSLIB),tslib)\n\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_LIBGLIB2),-glib,-no-glib)\nQT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_LIBGLIB2),libglib2)\n\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_ICU),-icu,-no-icu)\nQT5BASE_DEPENDENCIES   += $(if $(BR2_PACKAGE_QT5BASE_ICU),icu)\n\nQT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_EXAMPLES),-make,-nomake) examples\n\nifeq ($(BR2_PACKAGE_LIBINPUT),y)\nQT5BASE_CONFIGURE_OPTS += -libinput\nQT5BASE_DEPENDENCIES += libinput\nelse\nQT5BASE_CONFIGURE_OPTS += -no-libinput\nendif\n\n# only enable gtk support if libgtk3 X11 backend is enabled\nifeq ($(BR2_PACKAGE_LIBGTK3)$(BR2_PACKAGE_LIBGTK3_X11),yy)\nQT5BASE_CONFIGURE_OPTS += -gtk\nQT5BASE_DEPENDENCIES += libgtk3\nelse\nQT5BASE_CONFIGURE_OPTS += -no-gtk\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nQT5BASE_CONFIGURE_OPTS += -journald\nQT5BASE_DEPENDENCIES += systemd\nelse\nQT5BASE_CONFIGURE_OPTS += -no-journald\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_SYSLOG),y)\nQT5BASE_CONFIGURE_OPTS += -syslog\nelse\nQT5BASE_CONFIGURE_OPTS += -no-syslog\nendif\n\nifeq ($(BR2_PACKAGE_IMX_GPU_VIV),y)\n# use vivante backend\nQT5BASE_EGLFS_DEVICE = EGLFS_DEVICE_INTEGRATION = eglfs_viv\nelse ifeq ($(BR2_PACKAGE_SUNXI_MALI_MAINLINE),y)\n# use mali backend\nQT5BASE_EGLFS_DEVICE = EGLFS_DEVICE_INTEGRATION = eglfs_mali\nendif\n\nifneq ($(QT5BASE_CONFIG_FILE),)\ndefine QT5BASE_CONFIGURE_CONFIG_FILE\n\tcp $(QT5BASE_CONFIG_FILE) $(@D)/src/corelib/global/qconfig-buildroot.h\nendef\nendif\n\nQT5BASE_ARCH_CONFIG_FILE = $(@D)/mkspecs/devices/linux-buildroot-g++/arch.conf\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\n# Qt 5.8 needs atomics, which on various architectures are in -latomic\ndefine QT5BASE_CONFIGURE_ARCH_CONFIG\n\tprintf '!host_build { \\n LIBS += -latomic\\n }' >$(QT5BASE_ARCH_CONFIG_FILE)\nendef\nendif\n\n# This allows to use ccache when available\ndefine QT5BASE_CONFIGURE_HOSTCC\n\t$(SED) 's,^QMAKE_CC\\s*=.*,QMAKE_CC = $(HOSTCC),' $(@D)/mkspecs/common/g++-base.conf\n\t$(SED) 's,^QMAKE_CXX\\s*=.*,QMAKE_CXX = $(HOSTCXX),' $(@D)/mkspecs/common/g++-base.conf\nendef\n\n# Must be last so can override all options set by Buildroot\nQT5BASE_CONFIGURE_OPTS += $(call qstrip,$(BR2_PACKAGE_QT5BASE_CUSTOM_CONF_OPTS))\n\ndefine QT5BASE_CONFIGURE_CMDS\n\tmkdir -p $(@D)/mkspecs/devices/linux-buildroot-g++/\n\tsed 's/@EGLFS_DEVICE@/$(QT5BASE_EGLFS_DEVICE)/g' \\\n\t\t$(QT5BASE_PKGDIR)/qmake.conf.in > \\\n\t\t$(@D)/mkspecs/devices/linux-buildroot-g++/qmake.conf\n\t$(INSTALL) -m 0644 -D $(QT5BASE_PKGDIR)/qplatformdefs.h \\\n\t\t$(@D)/mkspecs/devices/linux-buildroot-g++/qplatformdefs.h\n\t$(QT5BASE_CONFIGURE_CONFIG_FILE)\n\ttouch $(QT5BASE_ARCH_CONFIG_FILE)\n\t$(QT5BASE_CONFIGURE_ARCH_CONFIG)\n\t$(QT5BASE_CONFIGURE_HOSTCC)\n\t(cd $(@D); \\\n\t\t$(TARGET_MAKE_ENV) \\\n\t\tPKG_CONFIG=\"$(PKG_CONFIG_HOST_BINARY)\" \\\n\t\tMAKEFLAGS=\"-j$(PARALLEL_JOBS) $(MAKEFLAGS)\" \\\n\t\t./configure \\\n\t\t-v \\\n\t\t-prefix /usr \\\n\t\t-hostprefix $(HOST_DIR) \\\n\t\t-headerdir /usr/include/qt5 \\\n\t\t-sysroot $(STAGING_DIR) \\\n\t\t-plugindir /usr/lib/qt/plugins \\\n\t\t-examplesdir /usr/lib/qt/examples \\\n\t\t-no-rpath \\\n\t\t-nomake tests \\\n\t\t-device buildroot \\\n\t\t-device-option CROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\t\t-device-option BR_COMPILER_CFLAGS=\"$(QT5BASE_CFLAGS)\" \\\n\t\t-device-option BR_COMPILER_CXXFLAGS=\"$(QT5BASE_CXXFLAGS)\" \\\n\t\t$(QT5BASE_CONFIGURE_OPTS) \\\n\t)\nendef\n\nQT5BASE_POST_INSTALL_STAGING_HOOKS += QT5_INSTALL_QT_CONF\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5charts/Config.in",
    "content": "config BR2_PACKAGE_QT5CHARTS\n\tbool \"qt5charts\"\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  Qt Charts module provides a set of easy to use chart\n\t  components.\n\n\t  https://doc.qt.io/qt-5/qtcharts-index.html\n"
  },
  {
    "path": "package/qt5/qt5charts/qt5charts.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtcharts-everywhere-src-5.15.2.tar.xz.sha256\nsha256  e0750e4195bd8a8b9758ab4d98d437edbe273cd3d289dd6a8f325df6d13f3d11  qtcharts-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\n"
  },
  {
    "path": "package/qt5/qt5charts/qt5charts.mk",
    "content": "################################################################################\n#\n# qt5charts\n#\n################################################################################\n\nQT5CHARTS_VERSION = $(QT5_VERSION)\nQT5CHARTS_SITE = $(QT5_SITE)\nQT5CHARTS_SOURCE = qtcharts-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5CHARTS_VERSION).tar.xz\nQT5CHARTS_INSTALL_STAGING = YES\n\nQT5CHARTS_LICENSE = GPL-3.0\nQT5CHARTS_LICENSE_FILES = LICENSE.GPL3\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nQT5CHARTS_DEPENDENCIES += qt5declarative\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5coap/Config.in",
    "content": "config BR2_PACKAGE_QT5COAP\n\tbool \"qt5coap\"\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  CoAP is a protocol for IoT devices, and machine to machine\n\t  communication. The Qt CoAP module implements the client side\n\t  of CoAP defined by RFC 7252.\n\n\t  https://doc.qt.io/QtCoAP/qtcoap-index.html\n"
  },
  {
    "path": "package/qt5/qt5coap/qt5coap.hash",
    "content": "# Hash locally calculated\nsha256  0ad05a2305437b9b96a4322bfadaa26f043ba16845d5303e53c00c82b37b243f  qt5coap-5.15.2-br1.tar.gz\n\n# Hashes for license files:\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  f827ad079686ba92cc94811e35492d0e8966f704008b6da9eeda0b659fb58a8d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5coap/qt5coap.mk",
    "content": "################################################################################\n#\n# qt5coap\n#\n################################################################################\n\nQT5COAP_VERSION = $(QT5_VERSION)\nQT5COAP_SITE = https://code.qt.io/cgit/qt/qtcoap.git\nQT5COAP_SITE_METHOD = git\nQT5COAP_INSTALL_STAGING = YES\nQT5COAP_LICENSE = GPL-3.0, GFDL-1.3\nQT5COAP_LICENSE_FILES = LICENSE.GPL3 LICENSE.FDL\nQT5COAP_SYNC_QT_HEADERS = YES\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5connectivity/Config.in",
    "content": "config BR2_PACKAGE_QT5CONNECTIVITY\n\tbool \"qt5connectivity\"\n\tdepends on BR2_PACKAGE_NEARD || BR2_PACKAGE_BLUEZ5_UTILS\n\tselect BR2_PACKAGE_QT5BASE_CONCURRENT\n\tselect BR2_PACKAGE_QT5BASE_DBUS\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  Qt Connectivity module provides support for Bluetooth/NFC\n\t  peripherials.\n\n\t  http://doc.qt.io/qt-5/qtbluetooth-index.html\n\t  http://doc.qt.io/qt-5/qtnfc-index.html\n\ncomment \"qt5connectivity needs neard and/or bluez5_utils\"\n\tdepends on !BR2_PACKAGE_NEARD && !BR2_PACKAGE_BLUEZ5_UTILS\n"
  },
  {
    "path": "package/qt5/qt5connectivity/qt5connectivity.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtconnectivity-everywhere-src-5.15.2.tar.xz.sha256\nsha256  0380327871f76103e5b8c2a305988d76d352b6a982b3e7b3bc3cdc184c64bfa0  qtconnectivity-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5connectivity/qt5connectivity.mk",
    "content": "################################################################################\n#\n# qt5connectivity\n#\n################################################################################\n\nQT5CONNECTIVITY_VERSION = $(QT5_VERSION)\nQT5CONNECTIVITY_SITE = $(QT5_SITE)\nQT5CONNECTIVITY_SOURCE = qtconnectivity-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5CONNECTIVITY_VERSION).tar.xz\nQT5CONNECTIVITY_INSTALL_STAGING = YES\n\nQT5CONNECTIVITY_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5CONNECTIVITY_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\n\nifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)\nQT5CONNECTIVITY_LICENSE += , BSD-3-Clause (examples)\nendif\n\nQT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5DECLARATIVE),qt5declarative)\nQT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_BLUEZ5_UTILS),bluez5_utils)\nQT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_NEARD),neard)\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5declarative/0001-qsgtexture-fix-debug-build-with-uclibc.patch",
    "content": "From dfa9555010535003eac69788597f53d3ff44168f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 29 Nov 2018 23:33:10 +0100\nSubject: [PATCH] qsgtexture: fix debug build with uclibc\n\nDebug build of gsgtexture fails on uclibc since version 5.11 and\nhttps://github.com/qt/qtdeclarative/commit/7c507eaac3f848f92f2ebdafe8ded4a064d68351:\n\nscenegraph/util/qsgtexture.cpp:69:22: fatal error: execinfo.h: No such file or directory\n #include <execinfo.h>\n\nIndeed, !defined(__UCLIBC__) has been replaced by defined(__GBLIBC__) to\nfix build on musl but as a result, build fails on uclibc because uclibc\nalso defines __GLIBC__ (and it does not have execinfo like musl)\n\nThis error is raised only when building in debug mode because\nCAN_BACKTRACE_EXECINFO is undefined if QT_NO_DEBUG is set\n\nSo keep defined(__GLIBC__), but put back !defined(__UCLIBC__)\n\nFixes:\n - http://autobuild.buildroot.org/results/6fce0ce5aea943e097532efbbc8d1e28f41e5866\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/qt/qtdeclarative/pull/4]\n[Rebased for Qt5.14.0]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/quick/scenegraph/coreapi/qsgtexture.cpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/quick/scenegraph/coreapi/qsgtexture.cpp b/src/quick/scenegraph/coreapi/qsgtexture.cpp\nindex dfbe4d3f..6a7bc79b 100644\n--- a/src/quick/scenegraph/coreapi/qsgtexture.cpp\n+++ b/src/quick/scenegraph/coreapi/qsgtexture.cpp\n@@ -46,7 +46,7 @@\n #include <private/qsgmaterialshader_p.h>\n #include <QtGui/private/qrhi_p.h>\n \n-#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID) && defined(__GLIBC__)\n+#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID) && defined(__GLIBC__) && !defined(__UCLIBC__)\n #define CAN_BACKTRACE_EXECINFO\n #endif\n \n-- \n2.23.0\n\n"
  },
  {
    "path": "package/qt5/qt5declarative/0002-qv4regexp_p-needs-c-limits-include-instead-of-plain-.patch",
    "content": "From bfd3d907f48aba870be00cd251f0b63d34985be2 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 22 Jul 2021 23:02:29 +0200\nSubject: [PATCH] qv4regexp_p: needs c++ limits include (instead of plain c\n limit.h)\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes gcc-11 compile:\n\n  In file included from jsruntime/qv4regexp_p.h:62,\n                   from jsruntime/qv4regexp.cpp:40:\n  ../3rdparty/masm/yarr/Yarr.h:46:44: error: ‘numeric_limits’ is not a member of ‘std’\n     46 | static const unsigned offsetNoMatch = std::numeric_limits<unsigned>::max();\n        |                                            ^~~~~~~~~~~~~~\n  ../3rdparty/masm/yarr/Yarr.h:46:59: error: expected primary-expression before ‘unsigned’\n     46 | static const unsigned offsetNoMatch = std::numeric_limits<unsigned>::max();\n        |                                                           ^~~~~~~~\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/qml/jsruntime/qv4regexp_p.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/qml/jsruntime/qv4regexp_p.h b/src/qml/jsruntime/qv4regexp_p.h\nindex 6afb10ea95..c64f3d3c38 100644\n--- a/src/qml/jsruntime/qv4regexp_p.h\n+++ b/src/qml/jsruntime/qv4regexp_p.h\n@@ -57,7 +57,7 @@\n #include <wtf/FastAllocBase.h>\n #include <wtf/BumpPointerAllocator.h>\n \n-#include <limits.h>\n+#include <limits>\n \n #include <yarr/Yarr.h>\n #include <yarr/YarrInterpreter.h>\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/qt5/qt5declarative/0003-qqmlprofilerevent_p-needs-c-limits-inlcude-fixes-gcc.patch",
    "content": "From cc8d62f556c065d28a52e4b784b5d22f2cca3001 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 22 Jul 2021 23:13:43 +0200\nSubject: [PATCH] qqmlprofilerevent_p: needs c++ limits inlcude (fixes gcc-11\n compile)\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes:\n\n  In file included from qqmlprofilertypedevent_p.h:43,\n                   from qqmlprofilertypedevent.cpp:40:\n  qqmlprofilerevent_p.h: In member function ‘void QQmlProfilerEvent::assignNumbers(const Container&)’:\n  qqmlprofilerevent_p.h:314:65: error: ‘numeric_limits’ is not a member of ‘std’\n    314 |                     static_cast<quint16>(numbers.size()) : std::numeric_limits<quint16>::max();\n        |                                                                 ^~~~~~~~~~~~~~\n  qqmlprofilerevent_p.h:314:87: error: expected primary-expression before ‘>’ token\n    314 |                     static_cast<quint16>(numbers.size()) : std::numeric_limits<quint16>::max();\n        |                                                                                       ^\n  qqmlprofilerevent_p.h:314:90: error: ‘::max’ has not been declared; did you mean ‘std::max’?\n    314 |                     static_cast<quint16>(numbers.size()) : std::numeric_limits<quint16>::max();\n        |                                                                                          ^~~\n        |                                                                                          std::max\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/qmldebug/qqmlprofilerevent_p.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/qmldebug/qqmlprofilerevent_p.h b/src/qmldebug/qqmlprofilerevent_p.h\nindex a7e37d1964..01b2f58f16 100644\n--- a/src/qmldebug/qqmlprofilerevent_p.h\n+++ b/src/qmldebug/qqmlprofilerevent_p.h\n@@ -48,6 +48,7 @@\n #include <QtCore/qmetatype.h>\n \n #include <initializer_list>\n+#include <limits>\n #include <type_traits>\n \n //\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/qt5/qt5declarative/Config.in",
    "content": "config BR2_PACKAGE_QT5DECLARATIVE\n\tbool \"qt5declarative\"\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  Qt Declarative module provides the Qt QML and Qt Quick\n\t  modules for developing UIs with the QML language\n\n\t  http://doc.qt.io/qt-5/qtqml-index.html\n\t  http://doc.qt.io/qt-5/qtquick-index.html\n\nif BR2_PACKAGE_QT5DECLARATIVE\n\nconfig BR2_PACKAGE_QT5DECLARATIVE_QUICK\n\tbool \"quick module\"\n\tselect BR2_PACKAGE_QT5BASE_OPENGL if BR2_PACKAGE_QT5_GL_AVAILABLE\n\nendif\n"
  },
  {
    "path": "package/qt5/qt5declarative/qt5declarative.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtdeclarative-everywhere-src-5.15.2.tar.xz.sha256\nsha256  c600d09716940f75d684f61c5bdaced797f623a86db1627da599027f6c635651  qtdeclarative-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5declarative/qt5declarative.mk",
    "content": "################################################################################\n#\n# qt5declarative\n#\n################################################################################\n\nQT5DECLARATIVE_VERSION = $(QT5_VERSION)\nQT5DECLARATIVE_SITE = $(QT5_SITE)\nQT5DECLARATIVE_SOURCE = qtdeclarative-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5DECLARATIVE_VERSION).tar.xz\nQT5DECLARATIVE_INSTALL_STAGING = YES\n\nQT5DECLARATIVE_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5DECLARATIVE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5enginio/0001-Do-not-use-deprecated-QLinkedList.patch",
    "content": "From ca81a62bb3f8ce67d564631bb8d4e11619acf430 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Fri, 3 Apr 2020 19:59:47 +0200\nSubject: [PATCH] Do not use deprecated QLinkedList\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nDo not use (internally already by QT_NO_LINKED_LIST) deprecated QLinkeList,\nuse QList instead.\n\nFixes:\n\n  ../../include/Enginio/1.6.3/Enginio/private/../../../../../src/enginio_client/enginioclient_p.h:293:5: error: ‘QLinkedList’ does not name a type\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/enginio_client/enginioclient_p.h | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/src/enginio_client/enginioclient_p.h b/src/enginio_client/enginioclient_p.h\nindex 6b5dc53..f3fe68e 100644\n--- a/src/enginio_client/enginioclient_p.h\n+++ b/src/enginio_client/enginioclient_p.h\n@@ -290,7 +290,11 @@ public:\n     QByteArray _backendId;\n     EnginioIdentity *_identity;\n \n+#if defined(QT_NO_LINKED_LIST)\n+    QList<QMetaObject::Connection> _connections;\n+#else\n     QLinkedList<QMetaObject::Connection> _connections;\n+#endif\n     QVarLengthArray<QMetaObject::Connection, 4> _identityConnections;\n     QUrl _serviceUrl;\n     QSharedPointer<QNetworkAccessManager> _networkManager;\n-- \n2.26.0\n\n"
  },
  {
    "path": "package/qt5/qt5enginio/Config.in",
    "content": "config BR2_PACKAGE_QT5ENGINIO\n\tbool \"qt5enginio\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_NETWORK\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  Enginio is a Backend-as-a-Service solution for simplifying\n\t  backend development of connected and data-driven applications.\n\n\t  This package has been tagged as deprecated since version\n\t  5.6 and not recommended for new design.\n\n\t  http://doc.qt.io/archives/qt-5.5/enginio-index.html\n"
  },
  {
    "path": "package/qt5/qt5enginio/qt5enginio.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtenginio-opensource-src-1.6.3.tar.xz.mirrorlist\nsha256 d907060b355512ceb7a8c3f6980e3979c20d54320b6804303b6c5e8ed42d3912  qtenginio-opensource-src-1.6.3.tar.xz\n\n# Hashes for license files:\nsha256  245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17  LICENSE.GPLv3\nsha256  1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8  LICENSE.LGPLv21\nsha256  438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084  LGPL_EXCEPTION.txt\nsha256  5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52  LICENSE.LGPLv3\nsha256  f827ad079686ba92cc94811e35492d0e8966f704008b6da9eeda0b659fb58a8d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5enginio/qt5enginio.mk",
    "content": "################################################################################\n#\n# qt5enginio\n#\n################################################################################\n\n# Qt5Enginio does not follow Qt versionning\n# see https://bugreports.qt.io/browse/QTBUG-50111\nQT5ENGINIO_VERSION = 1.6.3\nQT5ENGINIO_SITE = https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules\nQT5ENGINIO_SOURCE = qtenginio-opensource-src-$(QT5ENGINIO_VERSION).tar.xz\nQT5ENGINIO_DEPENDENCIES = openssl\nQT5ENGINIO_INSTALL_STAGING = YES\n\nQT5ENGINIO_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs)\nQT5ENGINIO_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL\nifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)\nQT5ENGINIO_LICENSE += , BSD-3-Clause (examples)\nendif\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nQT5ENGINIO_DEPENDENCIES += qt5declarative\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5graphicaleffects/Config.in",
    "content": "config BR2_PACKAGE_QT5GRAPHICALEFFECTS\n\tbool \"qt5graphicaleffects\"\n\tdepends on BR2_PACKAGE_QT5_GL_AVAILABLE\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n\tselect BR2_PACKAGE_QT5DECLARATIVE\n\tselect BR2_PACKAGE_QT5DECLARATIVE_QUICK\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt Graphical Effects module provides a set of QML types\n\t  for adding visually impressive and configurable effects to\n\t  user interfaces.\n\n\t  http://doc.qt.io/qt-5/qtgraphicaleffects-index.html\n\ncomment \"qt5graphicaleffects needs an OpenGL-capable backend\"\n\tdepends on !BR2_PACKAGE_QT5_GL_AVAILABLE\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n"
  },
  {
    "path": "package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtgraphicaleffects-everywhere-src-5.15.2.tar.xz.sha256\nsha256  ec8d67f64967d5046410490b549c576f9b9e8b47ec68594ae84aa8870173dfe4  qtgraphicaleffects-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk",
    "content": "################################################################################\n#\n# qt5graphicaleffects\n#\n################################################################################\n\nQT5GRAPHICALEFFECTS_VERSION = $(QT5_VERSION)\nQT5GRAPHICALEFFECTS_SITE = $(QT5_SITE)\nQT5GRAPHICALEFFECTS_SOURCE = qtgraphicaleffects-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5GRAPHICALEFFECTS_VERSION).tar.xz\nQT5GRAPHICALEFFECTS_DEPENDENCIES = qt5declarative\nQT5GRAPHICALEFFECTS_INSTALL_STAGING = YES\n\nQT5GRAPHICALEFFECTS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5GRAPHICALEFFECTS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5imageformats/Config.in",
    "content": "config BR2_PACKAGE_QT5IMAGEFORMATS\n\tbool \"qt5imageformats\"\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt Image Formats module provides plugins for\n\t  additional image formats: TIFF, MNG, TGA, WBMP\n\n\t  http://doc.qt.io/qt-5/qtimageformats-index.html\n"
  },
  {
    "path": "package/qt5/qt5imageformats/qt5imageformats.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtimageformats-everywhere-src-5.15.2.tar.xz.sha256\nsha256  bf8285c7ce04284527ab823ddc7cf48a1bb79131db3a7127342167f4814253d7  qtimageformats-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253  LICENSE.GPLv2\nsha256  245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17  LICENSE.GPLv3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52  LICENSE.LGPLv3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5imageformats/qt5imageformats.mk",
    "content": "################################################################################\n#\n# qt5imageformats\n#\n################################################################################\n\nQT5IMAGEFORMATS_VERSION = $(QT5_VERSION)\nQT5IMAGEFORMATS_SITE = $(QT5_SITE)\nQT5IMAGEFORMATS_SOURCE = qtimageformats-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5IMAGEFORMATS_VERSION).tar.xz\nQT5IMAGEFORMATS_INSTALL_STAGING = YES\n\nQT5IMAGEFORMATS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5IMAGEFORMATS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5knx/Config.in",
    "content": "config BR2_PACKAGE_QT5KNX\n\tbool \"qt5knx\"\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt KNX module implements the client side of a connection\n\t  between a client and a KNXnet/IP server. This connection\n\t  can be used to send messages to the KNX bus and to control\n\t  the functionalities of the KNX devices.\n\n\t  https://doc.qt.io/QtKNX/index.html\n"
  },
  {
    "path": "package/qt5/qt5knx/qt5knx.hash",
    "content": "# Hash locally calculated\nsha256  932ea512aa8ceb514ac40ce1fcbebe86c306caff1a0b11320d9a36fd84bae10c  qt5knx-5.15.2-br1.tar.gz\n\n# Hashes for license files:\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  f827ad079686ba92cc94811e35492d0e8966f704008b6da9eeda0b659fb58a8d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5knx/qt5knx.mk",
    "content": "################################################################################\n#\n# qt5knx\n#\n################################################################################\n\nQT5KNX_VERSION = $(QT5_VERSION)\nQT5KNX_SITE = https://code.qt.io/cgit/qt/qtknx.git\nQT5KNX_SITE_METHOD = git\nQT5KNX_INSTALL_STAGING = YES\nQT5KNX_LICENSE = GPL-3.0 with exception\nQT5KNX_LICENSE_FILES = LICENSE.GPL3 LICENSE.GPL3-EXCEPT\nQT5KNX_SYNC_QT_HEADERS = YES\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5location/0001-3rdparty-mapbox-gl-native-fix-musl-compile-pthread_g.patch",
    "content": "From acf752757ee4bf2913289ee1142f4968fdb22a4a Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Wed, 15 Sep 2021 23:05:52 +0200\nSubject: [PATCH] 3rdparty: mapbox-gl-native: fix musl compile\n (pthread_getname_np)\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\n- pthread_getname_np not available with musl libc (patch inspired/ported\n  from [1])\n\nFixes:\n\n  platform/default/thread.cpp: In function ‘std::string mbgl::platform::getCurrentThreadName()’:\n  platform/default/thread.cpp:14:5: error: ‘pthread_getname_np’ was not declared in this scope; did you mean ‘pthread_setname_np’?\n     14 |     pthread_getname_np(pthread_self(), name, sizeof(name));\n        |     ^~~~~~~~~~~~~~~~~~\n        |     pthread_setname_np\n\n[1] https://github.com/void-linux/void-packages/blob/e64dd67f43c409d2b2db08214084e842d92ad620/srcpkgs/qt5/patches/0014-musl-set_thread_name_np.patch\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n[yann.morin.1998@free.fr: add uClibc]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n src/3rdparty/mapbox-gl-native/platform/default/thread.cpp | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/src/3rdparty/mapbox-gl-native/platform/default/thread.cpp b/src/3rdparty/mapbox-gl-native/platform/default/thread.cpp\nindex c7c79b4..3f135eb 100644\n--- a/src/3rdparty/mapbox-gl-native/platform/default/thread.cpp\n+++ b/src/3rdparty/mapbox-gl-native/platform/default/thread.cpp\n@@ -11,8 +11,9 @@ namespace platform {\n \n std::string getCurrentThreadName() {\n     char name[32] = \"unknown\";\n+#if defined(__GLIBC__) || defined(__UCLIBC__)\n     pthread_getname_np(pthread_self(), name, sizeof(name));\n-\n+#endif\n     return name;\n }\n \n-- \n2.33.0\n\n"
  },
  {
    "path": "package/qt5/qt5location/Config.in",
    "content": "config BR2_PACKAGE_QT5LOCATION\n\tbool \"qt5location\"\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt Location API helps you create viable mapping\n\t  solutions using the data available from some of the\n\t  popular location services.\n\n\t  http://doc.qt.io/qt-5/qtlocation-index.html\n"
  },
  {
    "path": "package/qt5/qt5location/qt5location.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtlocation-everywhere-src-5.15.2.tar.xz.sha256\nsha256  984fcb09e108df49a8dac35d5ce6dffc49caafd2acb1c2f8a5173a6a21f392a0  qtlocation-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5location/qt5location.mk",
    "content": "################################################################################\n#\n# qt5location\n#\n################################################################################\n\nQT5LOCATION_VERSION = $(QT5_VERSION)\nQT5LOCATION_SITE = $(QT5_SITE)\nQT5LOCATION_SOURCE = qtlocation-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5LOCATION_VERSION).tar.xz\nQT5LOCATION_INSTALL_STAGING = YES\n\nQT5LOCATION_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5LOCATION_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nQT5LOCATION_DEPENDENCIES += qt5declarative\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5lottie/Config.in",
    "content": "config BR2_PACKAGE_QT5LOTTIE\n\tbool \"qt5lottie\"\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n\tselect BR2_PACKAGE_QT5DECLARATIVE\n\tselect BR2_PACKAGE_QT5DECLARATIVE_QUICK\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  This package corresponds to the qt5lottie module.\n\n\t  https://doc.qt.io/qt-5/qtlottieanimation-index.html\n"
  },
  {
    "path": "package/qt5/qt5lottie/qt5lottie.hash",
    "content": "# Hash from: http://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtlottie-everywhere-src-5.15.2.tar.xz.sha256\nsha256  cec6095ab8f714e609d2ad3ea8c4fd819461ce8793adc42abe37d0f6dc432517  qtlottie-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\n"
  },
  {
    "path": "package/qt5/qt5lottie/qt5lottie.mk",
    "content": "################################################################################\n#\n# qt5lottie\n#\n################################################################################\n\nQT5LOTTIE_VERSION = $(QT5_VERSION)\nQT5LOTTIE_SITE = $(QT5_SITE)\nQT5LOTTIE_SOURCE = qtlottie-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5LOTTIE_VERSION).tar.xz\nQT5LOTTIE_DEPENDENCIES = qt5declarative\nQT5LOTTIE_INSTALL_STAGING = YES\n\nQT5LOTTIE_LICENSE = GPL-3.0\nQT5LOTTIE_LICENSE_FILES = LICENSE.GPL3 LICENSE.GPL3-EXCEPT\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5mqtt/Config.in",
    "content": "config BR2_PACKAGE_QT5MQTT\n\tbool \"qt5mqtt\"\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt MQTT module provides a standard compliant\n\t  implementation of the MQTT protocol specification. It\n\t  enables applications to act as telemetry displays and\n\t  devices to publish telemetry data.  The supported versions\n\t  are MQTT 3.1, MQTT 3.1.1, and MQTT 5.0.\n\n\t  https://doc.qt.io/QtMQTT/index.html\n"
  },
  {
    "path": "package/qt5/qt5mqtt/qt5mqtt.hash",
    "content": "# Hash locally calculated\nsha256  38f2bc1bcbdf76d30d78c86426c85f62a6c2091c997cad4b087039f795b2b406  qt5mqtt-5.15.2-br1.tar.gz\n\n# Hashes for license files:\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\n"
  },
  {
    "path": "package/qt5/qt5mqtt/qt5mqtt.mk",
    "content": "################################################################################\n#\n# qt5mqtt\n#\n################################################################################\n\nQT5MQTT_VERSION = $(QT5_VERSION)\nQT5MQTT_SITE = https://code.qt.io/cgit/qt/qtmqtt.git\nQT5MQTT_SITE_METHOD = git\nQT5MQTT_INSTALL_STAGING = YES\nQT5MQTT_LICENSE = GPL-3.0 with exception\nQT5MQTT_LICENSE_FILES = LICENSE.GPL3 LICENSE.GPL3-EXCEPT\nQT5MQTT_SYNC_QT_HEADERS = YES\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5multimedia/Config.in",
    "content": "config BR2_PACKAGE_QT5MULTIMEDIA\n\tbool \"qt5multimedia\"\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_NETWORK\n\tselect BR2_PACKAGE_QT5BASE_OPENGL_LIB if BR2_PACKAGE_QT5BASE_OPENGL\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt Multimedia module provides a rich feature set that\n\t  enables you to easily take advantage of a platform's\n\t  multimedia capabilities such as media playback and the use\n\t  of camera and radio devices.\n\n\t  http://doc.qt.io/qt-5/multimediaoverview.html\n"
  },
  {
    "path": "package/qt5/qt5multimedia/qt5multimedia.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtmultimedia-everywhere-src-5.15.2.tar.xz.sha256\nsha256  0c3758810e5131aabcf76e4965e4c18b8911af54d9edd9305d2a8278d8346df5  qtmultimedia-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\nsha256  c1d75c15db4409bcbb182180d582f410a263dc9a631cd546b256e95f1da42165  examples/multimedia/spectrum/3rdparty/fftreal/license.txt\n"
  },
  {
    "path": "package/qt5/qt5multimedia/qt5multimedia.mk",
    "content": "################################################################################\n#\n# qt5multimedia\n#\n################################################################################\n\nQT5MULTIMEDIA_VERSION = $(QT5_VERSION)\nQT5MULTIMEDIA_SITE = $(QT5_SITE)\nQT5MULTIMEDIA_SOURCE = qtmultimedia-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5MULTIMEDIA_VERSION).tar.xz\nQT5MULTIMEDIA_INSTALL_STAGING = YES\n\nQT5MULTIMEDIA_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5MULTIMEDIA_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y)\nQT5MULTIMEDIA_DEPENDENCIES += gst1-plugins-base\nendif\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nQT5MULTIMEDIA_DEPENDENCIES += qt5declarative\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLIB2)$(BR2_PACKAGE_PULSEAUDIO),yy)\nQT5MULTIMEDIA_DEPENDENCIES += libglib2 pulseaudio\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nQT5MULTIMEDIA_DEPENDENCIES += alsa-lib\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)\nQT5MULTIMEDIA_LICENSE += , LGPL-2.1+ (examples/multimedia/spectrum/3rdparty/fftreal)\nQT5MULTIMEDIA_LICENSE_FILES += examples/multimedia/spectrum/3rdparty/fftreal/license.txt\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5opcua/Config.in",
    "content": "config BR2_PACKAGE_QT5OPCUA\n\tbool \"qt5opcua\"\n\tdepends on BR2_PACKAGE_QT5\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt OPC UA module implements a Qt API to interact with\n\t  OPC UA on top of a 3rd party OPC UA stack.\n"
  },
  {
    "path": "package/qt5/qt5opcua/qt5opcua.hash",
    "content": "# Hash locally calculated\nsha256  562171c6dfd6f4f072316ddb6d7c5bcc8907a68ba31005cb8c20ed75beff34fb  qt5opcua-5.15.2-br1.tar.gz\n\n# Hashes for license files:\nsha256  d93cc415382f0013088fa276d9cf82373badf244c78220a926f15ee46f0fe3c4  LICENSE-CC0\nsha256  f827ad079686ba92cc94811e35492d0e8966f704008b6da9eeda0b659fb58a8d  LICENSE.FDL\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  6c3f3c31b93985f1b93bfbb35fb609d37281697d0efc220c9f91cf4b59eaabde  LICENSE.GPLv2\nsha256  75d800e60c8d58c2e7f0338e8552ea6123a9ce7e5dd8e1cdf2095e013b737488  LICENSE.LGPLv3\n"
  },
  {
    "path": "package/qt5/qt5opcua/qt5opcua.mk",
    "content": "################################################################################\n#\n# qt5opcua\n#\n################################################################################\n\nQT5OPCUA_VERSION = $(QT5_VERSION)\nQT5OPCUA_SITE = https://code.qt.io/qt/qtopcua.git\nQT5OPCUA_SITE_METHOD = git\nQT5OPCUA_INSTALL_STAGING = YES\nQT5OPCUA_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) CC0-1.0\nQT5OPCUA_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL LICENSE-CC0\nQT5OPCUA_SYNC_QT_HEADERS = YES\n\nifeq ($(BR2_PACKAGE_MBEDTLS),y)\nQT5OPCUA_DEPENDENCIES += mbedtls\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5quickcontrols/Config.in",
    "content": "config BR2_PACKAGE_QT5QUICKCONTROLS\n\tbool \"qt5quickcontrols\"\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n\tselect BR2_PACKAGE_QT5DECLARATIVE\n\tselect BR2_PACKAGE_QT5DECLARATIVE_QUICK\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt Quick Controls module provides a set of controls\n\t  that can be used to build complete interfaces in Qt Quick.\n\n\t  http://doc.qt.io/qt-5/qtquickcontrols-index.html\n"
  },
  {
    "path": "package/qt5/qt5quickcontrols/qt5quickcontrols.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtquickcontrols-everywhere-src-5.15.2.tar.xz.sha256\nsha256  c393fb7384b1f047f10e91a6832cf3e6a4c2a41408b8cb2d05af2283e8549fb5  qtquickcontrols-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5quickcontrols/qt5quickcontrols.mk",
    "content": "################################################################################\n#\n# qt5quickcontrols\n#\n################################################################################\n\nQT5QUICKCONTROLS_VERSION = $(QT5_VERSION)\nQT5QUICKCONTROLS_SITE = $(QT5_SITE)\nQT5QUICKCONTROLS_SOURCE = qtquickcontrols-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5QUICKCONTROLS_VERSION).tar.xz\nQT5QUICKCONTROLS_DEPENDENCIES = qt5declarative\nQT5QUICKCONTROLS_INSTALL_STAGING = YES\n\nQT5QUICKCONTROLS_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-3.0, GFDL-1.3 (docs)\nQT5QUICKCONTROLS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.LGPL3 LICENSE.FDL\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5quickcontrols2/Config.in",
    "content": "config BR2_PACKAGE_QT5QUICKCONTROLS2\n\tbool \"qt5quickcontrols2\"\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative/quick\n\tselect BR2_PACKAGE_QT5DECLARATIVE\n\tselect BR2_PACKAGE_QT5DECLARATIVE_QUICK\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  This package corresponds to the qt5quickcontrols2 module.\n\n\t  This module was in tech preview in Qt 5.6, and promoted\n\t  to a core module in Qt 5.7.0.\n\n\t  https://doc.qt.io/qt-5/qtquickcontrols2-index.html\n"
  },
  {
    "path": "package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtquickcontrols2-everywhere-src-5.15.2.tar.xz.sha256\nsha256  671b6ce5f4b8ecc94db622d5d5fb29ef4ff92819be08e5ea55bfcab579de8919  qtquickcontrols2-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  d2cfc059acb4abd8e513cd0a73cd8489f34cbafa7bc34d5d31fb3210821cf8ca  LICENSE.GPLv3\nsha256  9e63a04ce021b8bf811b30881fa51c8c3db88afeead942cd59322f2fb69c75bc  LICENSE.LGPLv3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk",
    "content": "################################################################################\n#\n# qt5quickcontrols2\n#\n################################################################################\n\nQT5QUICKCONTROLS2_VERSION = $(QT5_VERSION)\nQT5QUICKCONTROLS2_SITE = $(QT5_SITE)\nQT5QUICKCONTROLS2_SOURCE = qtquickcontrols2-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5QUICKCONTROLS2_VERSION).tar.xz\nQT5QUICKCONTROLS2_DEPENDENCIES = qt5declarative\nQT5QUICKCONTROLS2_INSTALL_STAGING = YES\n\nQT5QUICKCONTROLS2_LICENSE = GPL-3.0 or LGPL-3.0, GFDL-1.3 (docs)\nQT5QUICKCONTROLS2_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5quicktimeline/Config.in",
    "content": "config BR2_PACKAGE_QT5QUICKTIMELINE\n\tbool \"qt5quicktimeline\"\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative\n\tselect BR2_PACKAGE_QT5DECLARATIVE\n\tselect BR2_PACKAGE_QT5DECLARATIVE_QUICK\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  This package corresponds to the qt5quicktimeline module.\n\n\t  https://doc.qt.io/qt-5/qtquicktimeline-index.html\n"
  },
  {
    "path": "package/qt5/qt5quicktimeline/qt5quicktimeline.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtquicktimeline-everywhere-src-5.15.2.tar.xz.sha256\nsha256  b9c247227607437acec7c7dd18ad46179d20369c9d22bdb1e9fc128dfb832a28  qtquicktimeline-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\n"
  },
  {
    "path": "package/qt5/qt5quicktimeline/qt5quicktimeline.mk",
    "content": "################################################################################\n#\n# qt5quicktimeline\n#\n################################################################################\n\nQT5QUICKTIMELINE_VERSION = $(QT5_VERSION)\nQT5QUICKTIMELINE_SITE = $(QT5_SITE)\nQT5QUICKTIMELINE_SOURCE = qtquicktimeline-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5QUICKTIMELINE_VERSION).tar.xz\nQT5QUICKTIMELINE_DEPENDENCIES = qt5declarative\nQT5QUICKTIMELINE_INSTALL_STAGING = YES\n\nQT5QUICKTIMELINE_LICENSE = GPL-3.0, GFDL-1.3 (docs)\nQT5QUICKTIMELINE_LICENSE_FILES = LICENSE.GPL3\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5remoteobjects/Config.in",
    "content": "config BR2_PACKAGE_QT5REMOTEOBJECTS\n\tbool \"qt5remoteobjects\"\n\tselect BR2_PACKAGE_QT5BASE\n\tselect BR2_PACKAGE_QT5BASE_NETWORK\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  Qt Remote Objects (QtRO) is an Inter-Process\n\t  Communication (IPC) module developed for Qt. This\n\t  module extends Qt's existing functionalities to enable\n\t  information exchange between processes or computers,\n\t  easily.\n\n\t  https://doc.qt.io/qt-5/qtremoteobjects-index.html\n"
  },
  {
    "path": "package/qt5/qt5remoteobjects/qt5remoteobjects.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtremoteobjects-everywhere-src-5.15.2.tar.xz.sha256\nsha256  6781b6bc90888254ea77ce812736dac00c67fa4eeb3095f5cd65e4b9c15dcfc2  qtremoteobjects-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\n"
  },
  {
    "path": "package/qt5/qt5remoteobjects/qt5remoteobjects.mk",
    "content": "################################################################################\n#\n# qt5remoteobjects\n#\n################################################################################\n\nQT5REMOTEOBJECTS_VERSION = $(QT5_VERSION)\nQT5REMOTEOBJECTS_SITE = $(QT5_SITE)\nQT5REMOTEOBJECTS_SOURCE = qtremoteobjects-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5REMOTEOBJECTS_VERSION).tar.xz\nQT5REMOTEOBJECTS_DEPENDENCIES = qt5base\nQT5REMOTEOBJECTS_INSTALL_STAGING = YES\nQT5REMOTEOBJECTS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception (tools), GFDL-1.3 (docs)\nQT5REMOTEOBJECTS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nQT5REMOTEOBJECTS_DEPENDENCIES += qt5declarative\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5script/0001-Detect-32-bits-armv8-a-architecture.patch",
    "content": "From daf2e222903bacf85f27dfb0fffc4459bbf58b77 Mon Sep 17 00:00:00 2001\nFrom: =?utf-8?q?Ga=C3=ABl=20PORTAY?= <gael.portay@savoirfairelinux.com>\nDate: Sun, 10 Jun 2018 08:23:50 -0400\nSubject: [PATCH] Detect 32-bits armv8-a architecture\nMIME-Version: 1.0\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: 8bit\n\nThese toolchains define __ARM_ARCH_8A__ (for ARM architecture version)\nand __arm__ (for 32-bits word-size; __aarch64__ for 64-bits).\n\nThis commit catches this new architecture (armv8a) within a #ifdef/#endif\ninside the if statement dedicated for 32-bits ARM detection. See commit\nfrom WebKit [1] and [2].\n\nFixes:\n\n\tIn file included from ../3rdparty/javascriptcore/JavaScriptCore/config.h:26,\n\t                 from ../3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_compile.cpp:44:\n\t../3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h:370:6: error: #error \"Not supported ARM architecture\"\n\t #    error \"Not supported ARM architecture\"\n\t      ^~~~~\n\n[1]: https://github.com/WebKit/webkit/commit/313d9fc4bdd2f020a5d0cf834c3c61982f161ebb\n[2]: https://github.com/WebKit/webkit/commit/98f0de0709786f5d9b09dfd5908266990eb909d6\n\nSigned-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>\n---\n src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h\nindex 00caa6d..c4b758e 100644\n--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h\n+++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h\n@@ -306,6 +306,10 @@\n     || defined(__ARM_ARCH_7R__)\n #define WTF_ARM_ARCH_VERSION 7\n \n+#elif defined(__ARM_ARCH_8__) \\\n+    || defined(__ARM_ARCH_8A__)\n+#define WTF_ARM_ARCH_VERSION 8\n+\n /* RVCT sets _TARGET_ARCH_ARM */\n #elif defined(__TARGET_ARCH_ARM)\n #define WTF_ARM_ARCH_VERSION __TARGET_ARCH_ARM\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/qt5/qt5script/Config.in",
    "content": "config BR2_PACKAGE_QT5SCRIPT\n\tbool \"qt5script\"\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  Qt Script provides support for making Qt applications\n\t  scriptable. Provided for Qt 4.x compatibility.\n\n\t  This package has been tagged as deprecated since version\n\t  5.5.0 and should be replaced by Qt QML module in new\n\t  design.\n\n\t  http://doc.qt.io/qt-5/qtscript-index.html\n"
  },
  {
    "path": "package/qt5/qt5script/qt5script.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtscript-everywhere-src-5.15.2.tar.xz.sha256\nsha256  a299715369afbd1caa4d7fa2875d442eab91adcaacafce54a36922442624673e  qtscript-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\nsha256  5094ecb9c9dcd0eadc34f3c11511d9b5535063032bc150164ecd1a5d5a445547  src/3rdparty/javascriptcore/JavaScriptCore/COPYING.LIB\nsha256  43b007cd3ac7b7ea5284b13e9580334028e6f42e859059605d57558f39374197  src/3rdparty/javascriptcore/JavaScriptCore/pcre/COPYING\n"
  },
  {
    "path": "package/qt5/qt5script/qt5script.mk",
    "content": "################################################################################\n#\n# qt5script\n#\n################################################################################\n\nQT5SCRIPT_VERSION = $(QT5_VERSION)\nQT5SCRIPT_SITE = $(QT5_SITE)\nQT5SCRIPT_SOURCE = qtscript-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5SCRIPT_VERSION).tar.xz\nQT5SCRIPT_INSTALL_STAGING = YES\n\n# JavaScriptCore contains files under BSD-2-Clause, BSD-3-Clause, and LGPL-2+.\n# This is linked into libQt5Script, which also contains Qt sources under\n# LGPL-2.1 (only). Therefore, the library is  LGPL-2.1 and BSD-3-Clause.\n# libQt5ScriptTools is under the normal Qt opensource license.\nQT5SCRIPT_LICENSE = LGPL-2.1, BSD-3-Clause, LGPL-3.0 or GPL-2.0+ (libQt5ScriptTools), GFDL-1.3 (docs)\n# LGPL-2.1 license file is missing\nQT5SCRIPT_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.LGPL3 LICENSE.FDL\n# License files from JavaScriptCore\nQT5SCRIPT_LICENSE_FILES += \\\n\tsrc/3rdparty/javascriptcore/JavaScriptCore/COPYING.LIB \\\n\tsrc/3rdparty/javascriptcore/JavaScriptCore/pcre/COPYING\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5scxml/Config.in",
    "content": "config BR2_PACKAGE_QT5SCXML\n\tbool \"qt5scxml\"\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative\n\tselect BR2_PACKAGE_QT5DECLARATIVE\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt SCXML module provides functionality to create state\n\t  machines from SCXML files.\n\n\t  https://doc.qt.io/qt-5/qtscxml-index.html\n"
  },
  {
    "path": "package/qt5/qt5scxml/qt5scxml.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtscxml-everywhere-src-5.15.2.tar.xz.sha256\nsha256  60b9590b9a41c60cee7b8a8c8410ee4625f0389c1ff8d79883ec5a985638a7dc  qtscxml-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\n"
  },
  {
    "path": "package/qt5/qt5scxml/qt5scxml.mk",
    "content": "################################################################################\n#\n# qt5scxml\n#\n################################################################################\n\nQT5SCXML_VERSION = $(QT5_VERSION)\nQT5SCXML_SITE = $(QT5_SITE)\nQT5SCXML_SOURCE = qtscxml-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5SCXML_VERSION).tar.xz\nQT5SCXML_DEPENDENCIES = qt5declarative\nQT5SCXML_INSTALL_STAGING = YES\n\nQT5SCXML_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5SCXML_LICENSE_FILES = LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\nifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)\nQT5SCXML_LICENSE += , BSD-3-Clause (examples)\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5sensors/Config.in",
    "content": "config BR2_PACKAGE_QT5SENSORS\n\tbool \"qt5sensors\"\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt Sensors API provides access to sensor hardware\n\t  via QML and C++ interfaces.\n\n\t  http://doc.qt.io/qt-5/qtsensors-index.html\n"
  },
  {
    "path": "package/qt5/qt5sensors/qt5sensors.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtsensors-everywhere-src-5.15.2.tar.xz.sha256\nsha256  3f0011f9e9942cad119146b54d960438f4568a22a274cdad4fae06bb4e0e4839  qtsensors-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5sensors/qt5sensors.mk",
    "content": "################################################################################\n#\n# qt5sensors\n#\n################################################################################\n\nQT5SENSORS_VERSION = $(QT5_VERSION)\nQT5SENSORS_SITE = $(QT5_SITE)\nQT5SENSORS_SOURCE = qtsensors-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5SENSORS_VERSION).tar.xz\nQT5SENSORS_INSTALL_STAGING = YES\nQT5SENSORS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5SENSORS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nQT5SENSORS_DEPENDENCIES += qt5declarative\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5serialbus/Config.in",
    "content": "config BR2_PACKAGE_QT5SERIALBUS\n\tbool \"qt5serialbus\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 # CAN FD\n\tselect BR2_PACKAGE_QT5SERIALPORT\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  This package corresponds to the qt5serialbus module.\n\n\t  This module was in tech preview in Qt 5.6, and promoted\n\t  to a core module in Qt 5.8.0.\n\n\t  http://doc.qt.io/qt-5/qtserialbus-index.html\n\ncomment \"qt5serialbus needs headers >= 3.6\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6\n"
  },
  {
    "path": "package/qt5/qt5serialbus/qt5serialbus.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtserialbus-everywhere-src-5.15.2.tar.xz.sha256\nsha256  aeeb7e5c0d3f8503215b22e1a84c0002ca67cf63862f6e3c6ef44a67ca31bd88  qtserialbus-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253  LICENSE.GPLv2\nsha256  245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17  LICENSE.GPLv3\nsha256  5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52  LICENSE.LGPLv3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5serialbus/qt5serialbus.mk",
    "content": "################################################################################\n#\n# qt5serialbus\n#\n################################################################################\n\nQT5SERIALBUS_VERSION = $(QT5_VERSION)\nQT5SERIALBUS_SITE = $(QT5_SITE)\nQT5SERIALBUS_SOURCE = qtserialbus-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5SERIALBUS_VERSION).tar.xz\nQT5SERIALBUS_DEPENDENCIES = qt5serialport\nQT5SERIALBUS_INSTALL_STAGING = YES\n\nQT5SERIALBUS_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-3.0, GFDL-1.3 (docs)\nQT5SERIALBUS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5serialport/Config.in",
    "content": "config BR2_PACKAGE_QT5SERIALPORT\n\tbool \"qt5serialport\"\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  Qt Serial Port provides the basic functionality, which\n\t  includes configuring, I/O operations, getting and setting\n\t  the control signals of the RS-232 pinouts.\n\n\t  http://doc.qt.io/qt-5/qtserialport-index.html\n"
  },
  {
    "path": "package/qt5/qt5serialport/qt5serialport.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtserialport-everywhere-src-5.15.2.tar.xz.sha256\nsha256  59c559d748417306bc1b2cf2315c1e63eed011ace38ad92946af71f23e2ef79d  qtserialport-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5serialport/qt5serialport.mk",
    "content": "################################################################################\n#\n# qt5serialport\n#\n################################################################################\n\nQT5SERIALPORT_VERSION = $(QT5_VERSION)\nQT5SERIALPORT_SITE = $(QT5_SITE)\nQT5SERIALPORT_SOURCE = qtserialport-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5SERIALPORT_VERSION).tar.xz\nQT5SERIALPORT_INSTALL_STAGING = YES\nQT5SERIALPORT_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5SERIALPORT_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5svg/Config.in",
    "content": "config BR2_PACKAGE_QT5SVG\n\tbool \"qt5svg\"\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  Qt SVG provides classes for rendering and displaying SVG\n\t  drawings in widgets and on other paint devices.\n\n\t  http://doc.qt.io/qt-5/qtsvg-index.html\n"
  },
  {
    "path": "package/qt5/qt5svg/qt5svg.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtsvg-everywhere-src-5.15.2.tar.xz.sha256\nsha256  8bc3c2c1bc2671e9c67d4205589a8309b57903721ad14c60ea21a5d06acb585e  qtsvg-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17  LICENSE.GPLv3\nsha256  5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52  LICENSE.LGPLv3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5svg/qt5svg.mk",
    "content": "################################################################################\n#\n# qt5svg\n#\n################################################################################\n\nQT5SVG_VERSION = $(QT5_VERSION)\nQT5SVG_SITE = $(QT5_SITE)\nQT5SVG_SOURCE = qtsvg-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5SVG_VERSION).tar.xz\nQT5SVG_INSTALL_STAGING = YES\nQT5SVG_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5SVG_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5tools/0001-Disable-designer-tool-fixes-configure-error.patch",
    "content": "From 22d7a9050b04b021e33430d0f7e3c5ee80c24caa Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Tue, 17 Dec 2019 11:01:59 +0100\nSubject: [PATCH] Disable designer tool (fixes configure error).\n\nFixes:\n\n  .../build/qt5tools-5.14.0/src/designer/src/components/lib/lib.pro\n  Project ERROR: Multiple modules claim plugin type 'designer' (uitools, in addition to designer)\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n[Rebased for Qt5.15.0]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n[Rebased for Qt5.15.1]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n[Rebased for Qt5.15.2]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/linguist/linguist/linguist.pro | 2 +-\n src/src.pro                        | 5 +----\n 2 files changed, 2 insertions(+), 5 deletions(-)\n\ndiff --git a/src/linguist/linguist/linguist.pro b/src/linguist/linguist/linguist.pro\nindex d083896..7d74cfc 100644\n--- a/src/linguist/linguist/linguist.pro\n+++ b/src/linguist/linguist/linguist.pro\n@@ -1,4 +1,4 @@\n-QT += core-private gui-private widgets uitools-private printsupport\n+QT += core-private gui-private widgets printsupport\n \n DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII\n \ndiff --git a/src/src.pro b/src/src.pro\nindex f2675c7..360de50 100644\n--- a/src/src.pro\n+++ b/src/src.pro\n@@ -6,12 +6,9 @@ qtHaveModule(widgets) {\n     } else {\n         QT_FOR_CONFIG += widgets\n         qtConfig(pushbutton):qtConfig(toolbutton) {\n-            SUBDIRS = designer \\\n-                      pixeltool\n+            SUBDIRS = pixeltool\n \n             !static|contains(QT_PLUGINS, qsqlite): SUBDIRS += assistant\n-\n-            linguist.depends = designer\n         }\n         qtHaveModule(quick):qtConfig(thread):qtConfig(toolbutton): SUBDIRS += distancefieldgenerator\n     }\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/qt5/qt5tools/Config.in",
    "content": "config BR2_PACKAGE_QT5TOOLS\n\tbool \"qt5tools\"\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  Qt Tools provides tools facilitate the development\n\t  and design of applications.\n\n\t  http://doc.qt.io/qt-5/qtmodules.html#qt-tools\n\nif BR2_PACKAGE_QT5TOOLS\n\nconfig BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS\n\tbool \"Linguist host tools (lconvert, lrelease, lupdate)\"\n\thelp\n\t  This option enables the linguist host tools\n\t  lconvert, lrelease and lupdate.\n\nconfig BR2_PACKAGE_QT5TOOLS_QDOC_TOOL\n\tbool \"qdoc host tool\"\n\t# Needs llvm-config and libclang for the host, which is not\n\t# currently supported in Buildroot, unless the target is\n\t# already supported by llvm.\n\tdepends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS # llvm, clang\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # llvm, clang\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # llvm, clang\n\tdepends on BR2_INSTALL_LIBSTDCPP # llvm, clang\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # llvm, clang\n\tdepends on !BR2_STATIC_LIBS # llvm, clang\n\tdepends on BR2_USE_WCHAR # llvm, clang\n\thelp\n\t  This option enables the qdoc host tool.\n\nconfig BR2_PACKAGE_QT5TOOLS_PIXELTOOL\n\tbool \"pixeltool\"\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\tselect BR2_PACKAGE_QT5BASE_PNG # saving png images\n\thelp\n\t  Compile and install the pixeltool program.\n\nconfig BR2_PACKAGE_QT5TOOLS_QTDIAG\n\tbool \"qtdiag\"\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\thelp\n\t  Compile and install the qtdiag program.\n\nconfig BR2_PACKAGE_QT5TOOLS_QTPATHS\n\tbool \"qtpaths\"\n\thelp\n\t  Compile and install the qtpaths program.\n\nconfig BR2_PACKAGE_QT5TOOLS_QTPLUGININFO\n\tbool \"qtplugininfo\"\n\thelp\n\t  Compile and install the qtplugininfo program.\n\nendif\n"
  },
  {
    "path": "package/qt5/qt5tools/qt5tools.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qttools-everywhere-src-5.15.2.tar.xz.sha256\nsha256  c189d0ce1ff7c739db9a3ace52ac3e24cb8fd6dbf234e49f075249b38f43c1cc  qttools-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5tools/qt5tools.mk",
    "content": "################################################################################\n#\n# qt5tools\n#\n################################################################################\n\nQT5TOOLS_VERSION = $(QT5_VERSION)\nQT5TOOLS_SITE = $(QT5_SITE)\nQT5TOOLS_SOURCE = qttools-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5TOOLS_VERSION).tar.xz\n\nQT5TOOLS_INSTALL_STAGING = YES\n\n# linguist tools compile conditionally on qtHaveModule(qmldevtools-private),\n# but the condition is used only used to decide if lupdate will support\n# parsing qml files (via setting QT_NO_QML define), no linking against\n# target qt5 will happen\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nQT5TOOLS_DEPENDENCIES += qt5declarative\nendif\n\nQT5TOOLS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5TOOLS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\n\nQT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS) += \\\n\tlinguist/lconvert linguist/lrelease linguist/lupdate\nQT5TOOLS_INSTALL_STAGING_DIR_$(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS) += \\\n\tlinguist\n\nifeq ($(BR2_PACKAGE_QT5TOOLS_QDOC_TOOL),y)\nQT5TOOLS_BUILD_DIRS_y += qdoc\nQT5TOOLS_INSTALL_STAGING_DIR_y += qdoc\nQT5TOOLS_DEPENDENCIES += host-clang\nendif\n\nQT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_PIXELTOOL) += pixeltool\nQT5TOOLS_INSTALL_TARGET_$(BR2_PACKAGE_QT5TOOLS_PIXELTOOL) += pixeltool\n\nQT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTDIAG) += qtdiag\nQT5TOOLS_INSTALL_TARGET_$(BR2_PACKAGE_QT5TOOLS_QTDIAG) += qtdiag\n\nQT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTPATHS) += qtpaths\nQT5TOOLS_INSTALL_TARGET_$(BR2_PACKAGE_QT5TOOLS_QTPATHS) += qtpaths\n\nQT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTPLUGININFO) += qtplugininfo\nQT5TOOLS_INSTALL_TARGET_$(BR2_PACKAGE_QT5TOOLS_QTPLUGININFO) += qtplugininfo\n\ndefine QT5TOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) sub-src-qmake_all\n\t$(foreach p,$(QT5TOOLS_BUILD_DIRS_y), \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/$(p)$(sep))\nendef\n\n# use install target to copy cmake module files\ndefine QT5TOOLS_INSTALL_STAGING_CMDS\n\t$(foreach p,$(QT5TOOLS_INSTALL_STAGING_DIR_y), \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/$(p) install$(sep))\nendef\n\ndefine QT5TOOLS_INSTALL_TARGET_CMDS\n\t$(foreach p,$(QT5TOOLS_INSTALL_TARGET_y), \\\n\t\t$(INSTALL) -D -m0755 $(@D)/bin/$(p) $(TARGET_DIR)/usr/bin/$(p)$(sep))\nendef\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5virtualkeyboard/Config.in",
    "content": "config BR2_PACKAGE_QT5VIRTUALKEYBOARD\n\tbool \"qt5virtualkeyboard\"\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative\n\tselect BR2_PACKAGE_QT5DECLARATIVE\n\tselect BR2_PACKAGE_QT5DECLARATIVE_QUICK\n\tselect BR2_PACKAGE_QT5SVG\n\thelp\n\t  Qt Virtual Keyboard is a virtual keyboard framework that\n\t  consists of a C++ backend supporting custom input methods as\n\t  well as a UI frontend implemented in QML.\n\n\t  https://doc.qt.io/qt-5/qtvirtualkeyboard-index.html\n\nif BR2_PACKAGE_QT5VIRTUALKEYBOARD\n\nconfig BR2_PACKAGE_QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS\n\tstring \"language layouts\"\n\tdefault \"en_GB\"\n\thelp\n\t  The Virtual Keyboard supports the following languages:\n\t  - Arabic (ar_AR)\n\t  - Danish (da_DK)\n\t  - English (en_GB)\n\t  - Finnish (fi_FI)\n\t  - French (fr_FR)\n\t  - German (de_DE)\n\t  - Hindi (hi_IN)\n\t  - Italian (it_IT)\n\t  - Japanese (ja_JP)\n\t  - Korean (ko_KR)\n\t  - Norwegian (nb_NO)\n\t  - Persian/Farsi (fa_FA)\n\t  - Polish (pl_PL)\n\t  - Portugese (pt_PT)\n\t  - Romanian (ro_RO)\n\t  - Russian (ru_RU)\n\t  - Simplified Chinese (zh_CN)\n\t  - Traditional Chinese (zh_TW)\n\t  - Spanish (es_ES)\n\t  - Swedish (sv_SE)\n\n\t  Note: the special value \"all\" can be used to install support\n\t  for all supported languages.\n\nconfig BR2_PACKAGE_QT5VIRTUALKEYBOARD_HANDWRITING\n\tbool \"handwriting\"\n\thelp\n\t  Handwriting support, with gestures for fullscreen input.\n\n\t  Lipi Toolkit (LipiTk) is an open source toolkit for online\n\t  Handwriting Recognition.\n\nconfig BR2_PACKAGE_QT5VIRTUALKEYBOARD_ARROW_KEY_NAVIGATION\n\tbool \"Arrow key navigation\"\n\thelp\n\t  Allows controlling the keyboard using the arrow and return\n\t  keys.\n\nendif\n"
  },
  {
    "path": "package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtvirtualkeyboard-everywhere-src-5.15.2.tar.xz.sha256\nsha256  9a3193913be30f09a896e3b8c2f9696d2e9b3f88a63ae9ca8c97a2786b68cf55  qtvirtualkeyboard-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  7a45a9769d19545480a241230e6ea520b5156fac00930dcd69b6886749743d10  src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/MIT_LICENSE.txt\nsha256  05cc719deafd0ab083b03296bb2911de10d116953b626a7629b9ca59938038b1  src/plugins/openwnn/3rdparty/openwnn/NOTICE\nsha256  b5830d96fb5a7e7e7ebcc295f352846b4b998e78fdc8f9aa68e134d2e4b39986  src/plugins/pinyin/3rdparty/pinyin/NOTICE\nsha256  9400a6128693d2f25653698e695f554660c71efccc8c21af28bf143e35199db6  src/plugins/tcime/3rdparty/tcime/COPYING\n"
  },
  {
    "path": "package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk",
    "content": "################################################################################\n#\n# qt5virtualkeyboard\n#\n################################################################################\n\nQT5VIRTUALKEYBOARD_VERSION = $(QT5_VERSION)\nQT5VIRTUALKEYBOARD_SITE = $(QT5_SITE)\nQT5VIRTUALKEYBOARD_SOURCE = qtvirtualkeyboard-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5VIRTUALKEYBOARD_VERSION).tar.xz\nQT5VIRTUALKEYBOARD_DEPENDENCIES = qt5declarative qt5svg\nQT5VIRTUALKEYBOARD_INSTALL_STAGING = YES\n\nQT5VIRTUALKEYBOARD_LICENSE = GPL-3.0\nQT5VIRTUALKEYBOARD_LICENSE_FILES = LICENSE.GPL3\n\nQT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS = $(call qstrip,$(BR2_PACKAGE_QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS))\nifneq ($(strip $(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)),)\nQT5VIRTUALKEYBOARD_QMAKEFLAGS += CONFIG+=\"$(foreach lang,$(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS),lang-$(lang))\"\n\nifneq ($(filter ja_JP all,$(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)),)\nQT5VIRTUALKEYBOARD_LICENSE += , Apache-2.0 (openwnn)\nQT5VIRTUALKEYBOARD_LICENSE_FILES += src/plugins/openwnn/3rdparty/openwnn/NOTICE\nendif\n\nifneq ($(filter zh_CN all,$(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)),)\nQT5VIRTUALKEYBOARD_LICENSE += , Apache-2.0 (pinyin)\nQT5VIRTUALKEYBOARD_LICENSE_FILES += src/plugins/pinyin/3rdparty/pinyin/NOTICE\nendif\n\nifneq ($(filter zh_TW all,$(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)),)\nQT5VIRTUALKEYBOARD_LICENSE += , Apache-2.0 (tcime), BSD-3-Clause (tcime)\nQT5VIRTUALKEYBOARD_LICENSE_FILES += src/plugins/tcime/3rdparty/tcime/COPYING\nendif\nendif\n\nifeq ($(BR2_PACKAGE_QT5VIRTUALKEYBOARD_HANDWRITING),y)\nQT5VIRTUALKEYBOARD_CONF_OPTS += CONFIG+=handwriting\nQT5VIRTUALKEYBOARD_LICENSE += , MIT (lipi-toolkit)\nQT5VIRTUALKEYBOARD_LICENSE_FILES += src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/MIT_LICENSE.txt\nendif\n\nifeq ($(BR2_PACKAGE_QT5VIRTUALKEYBOARD_ARROW_KEY_NAVIGATION),y)\nQT5VIRTUALKEYBOARD_CONF_OPTS += CONFIG+=arrow-key-navigation\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5wayland/Config.in",
    "content": "comment \"qt5wayland needs an OpenGL-capable backend\"\n\tdepends on !BR2_PACKAGE_QT5_GL_AVAILABLE\n\nconfig BR2_PACKAGE_QT5WAYLAND\n\tbool \"qt5wayland\"\n\tdepends on BR2_PACKAGE_QT5_GL_AVAILABLE\n\tselect BR2_PACKAGE_WAYLAND\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  This package corresponds to the qt5wayland module.\n\n\t  http://qt.io\n\nif BR2_PACKAGE_QT5WAYLAND\n\nconfig BR2_PACKAGE_QT5WAYLAND_COMPOSITOR\n\tbool \"Enable compositor (experimental)\"\n\thelp\n\t  The compositor API is still experimental, and not built by\n\t  default.\n\nendif\n"
  },
  {
    "path": "package/qt5/qt5wayland/qt5wayland.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtwayland-everywhere-src-5.15.2.tar.xz.sha256\nsha256  193732229ff816f3aaab9a5e2f6bed71ddddbf1988ce003fe8dd84a92ce9aeb5  qtwayland-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5wayland/qt5wayland.mk",
    "content": "################################################################################\n#\n# qt5wayland\n#\n################################################################################\n\nQT5WAYLAND_VERSION = $(QT5_VERSION)\nQT5WAYLAND_SITE = $(QT5_SITE)\nQT5WAYLAND_SOURCE = qtwayland-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5WAYLAND_VERSION).tar.xz\nQT5WAYLAND_DEPENDENCIES = wayland\nQT5WAYLAND_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)\nQT5WAYLAND_DEPENDENCIES += qt5declarative\nendif\n\nifeq ($(BR2_PACKAGE_LIBXKBCOMMON),y)\nQT5WAYLAND_DEPENDENCIES += libxkbcommon\nendif\n\nQT5WAYLAND_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5WAYLAND_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\n\nifeq ($(BR2_PACKAGE_QT5WAYLAND_COMPOSITOR),y)\nQT5WAYLAND_CONF_OPTS += CONFIG+=wayland-compositor\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5webchannel/Config.in",
    "content": "config BR2_PACKAGE_QT5WEBCHANNEL\n\tbool \"qt5webchannel\"\n\tselect BR2_PACKAGE_QT5WEBSOCKETS\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  Qt WebChannel enables peer-to-peer communication between\n\t  a server (QML/C++ application) and a client\n\t  (HTML/JavaScript or QML application).\n\n\t  http://doc.qt.io/qt-5/qtwebchannel-index.html\n"
  },
  {
    "path": "package/qt5/qt5webchannel/qt5webchannel.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtwebchannel-everywhere-src-5.15.2.tar.xz.sha256\nsha256  127fe79c43b386713f151ed7d411cd81e45e29f9c955584f29736f78c9303ec1  qtwebchannel-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5webchannel/qt5webchannel.mk",
    "content": "################################################################################\n#\n# qt5webchannel\n#\n################################################################################\n\nQT5WEBCHANNEL_VERSION = $(QT5_VERSION)\nQT5WEBCHANNEL_SITE = $(QT5_SITE)\nQT5WEBCHANNEL_SOURCE = qtwebchannel-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5WEBCHANNEL_VERSION).tar.xz\nQT5WEBCHANNEL_DEPENDENCIES = qt5websockets\nQT5WEBCHANNEL_INSTALL_STAGING = YES\nQT5WEBCHANNEL_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5WEBCHANNEL_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\n\nifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)\nQT5WEBCHANNEL_LICENSE += , BSD-3-Clause (examples)\nendif\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nQT5WEBCHANNEL_DEPENDENCIES += qt5declarative\nendif\n\ndefine QT5WEBCHANNEL_INSTALL_TARGET_JAVASCRIPT\n\t$(INSTALL) -m 0644 -D $(@D)/examples/webchannel/shared/qwebchannel.js \\\n\t\t$(TARGET_DIR)/var/www/qwebchannel.js\nendef\nQT5WEBCHANNEL_POST_INSTALL_TARGET_HOOKS += QT5WEBCHANNEL_INSTALL_TARGET_JAVASCRIPT\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5webengine/0001-gn.pro-don-t-link-statically-with-libstc.patch",
    "content": "From 7ae73da23ad998bd1e63ad213cf7a02e61191951 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sat, 23 May 2020 19:01:19 +0200\nSubject: [PATCH] gn.pro: don't link statically with libstc++\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nWhile cross-compiling, qt5webengine is building a host tool but\nwant to link the libstdc++ statically. This requires to install\nlibstdc++-static package on the host (Fedora package name).\n\nOtherwise the link fail with:\n\n  [185/185] LINK gn\n  FAILED: gn\n  /usr/bin/g++ -O3 -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-strip-all -Wl,--as-needed -static-libstdc++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o base.a gn_lib.a -Wl,--end-group -ldl\n  /usr/bin/ld : unable to find -lstdc++\n  [...]\n  Project ERROR: GN build error!\n\nAdd --no-static-libstdc++ argument to gn.pro to link to\nlibstdc++.so.6 instead of libstdc++.a.\n\n--no-static-libstdc++ has been added by [1] but it force\nlinking statically by default.\n\n[1] https://github.com/qt/qtwebengine-chromium/commit/cfab9198a9917f42cf08b1caf84ab9b71aac1911#diff-905c8f054808213577c0a92d1b704615\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n src/buildtools/gn.pro | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/src/buildtools/gn.pro b/src/buildtools/gn.pro\nindex 033202e6..5dd8e241 100644\n--- a/src/buildtools/gn.pro\n+++ b/src/buildtools/gn.pro\n@@ -20,7 +20,8 @@ build_pass|!debug_and_release {\n \n             gn_gen_args = --no-last-commit-position --out-path $$out_path \\\n                           --cc \\\"$$which($$QMAKE_CC)\\\" --cxx \\\"$$which($$QMAKE_CXX)\\\" \\\n-                          --ld \\\"$$which($$QMAKE_LINK)\\\"\n+                          --ld \\\"$$which($$QMAKE_LINK)\\\" \\\n+                          --no-static-libstdc++\n \n             msvc:!clang_cl: gn_gen_args += --use-lto\n \n-- \n2.25.4\n\n"
  },
  {
    "path": "package/qt5/qt5webengine/Config.in",
    "content": "config BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64 || BR2_arm || \\\n\t\tBR2_i386 || BR2_x86_64 || \\\n\t\tBR2_mips || BR2_mips64\n\t# -m32 flag is used for 32bit builds and host tools have\n\t# limited architecture support\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative\n\tdepends on !BR2_BINFMT_FLAT # qt5base-icu\n\tdepends on BR2_USE_MMU # libglib2, qt5base-dbus\n\ncomment \"qt5webengine needs udev /dev management and a glibc toolchain w/ gcc >= 4.9, host gcc >= 4.9, threads, wchar\"\n\tdepends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS\n\tdepends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_USES_GLIBC || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n\ncomment \"qt5webengine needs an OpenGL and EGL-capable backend\"\n\tdepends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS\n\tdepends on !BR2_PACKAGE_QT5_GL_AVAILABLE || !BR2_PACKAGE_HAS_LIBEGL\n\nconfig BR2_PACKAGE_QT5WEBENGINE\n\tbool \"qt5webengine\"\n\tdepends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # execinfo.h, mallinfo\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # qt5base-icu\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # qt5base-icu\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, libvpx, qt5base-dbus\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_PACKAGE_QT5_GL_AVAILABLE # qt5declarative, qt5base-eglfs\n\tdepends on BR2_PACKAGE_HAS_LIBEGL # qt5base-eglfs\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\t# v8 (a chromium 3rd-party) compiles its internal host-tools with the\n\t# same word size as the target. For 32-bits targets, it adds the -m32\n\t# flag (for 64-bits, it adds the -m64 flag).\n\t# https://github.com/v8/v8/blob/5.6.326.55/gypfiles/toolchain.gypi#L1036-L1037\n\tselect BR2_HOSTARCH_NEEDS_IA32_COMPILER if !BR2_ARCH_IS_64 # v8/chromium\n\tselect BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBNSS\n\tselect BR2_PACKAGE_LIBVPX\n\tselect BR2_PACKAGE_LIBXKBCOMMON\n\tselect BR2_PACKAGE_OPUS\n\tselect BR2_PACKAGE_WEBP\n\tselect BR2_PACKAGE_WEBP_DEMUX\n\tselect BR2_PACKAGE_QT5BASE_DBUS\n\tselect BR2_PACKAGE_QT5BASE_EGLFS\n\tselect BR2_PACKAGE_QT5BASE_FONTCONFIG\n\tselect BR2_PACKAGE_QT5BASE_ICU\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\tselect BR2_PACKAGE_QT5DECLARATIVE\n\tselect BR2_PACKAGE_QT5DECLARATIVE_QUICK\n\tselect BR2_PACKAGE_QT5QUICKCONTROLS\n\tselect BR2_PACKAGE_QT5QUICKCONTROLS2\n\tselect BR2_PACKAGE_QT5SVG if BR2_PACKAGE_QT5BASE_EXAMPLES\n\tselect BR2_PACKAGE_QT5WEBCHANNEL\n\tselect BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_QT5BASE_XCB\n\tselect BR2_PACKAGE_XLIB_LIBXCURSOR if BR2_PACKAGE_QT5BASE_XCB\n\tselect BR2_PACKAGE_XLIB_LIBXI if BR2_PACKAGE_QT5BASE_XCB\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_QT5BASE_XCB\n\tselect BR2_PACKAGE_XLIB_LIBXSCRNSAVER if BR2_PACKAGE_QT5BASE_XCB\n\tselect BR2_PACKAGE_XLIB_LIBXTST if BR2_PACKAGE_QT5BASE_XCB\n\thelp\n\t  The Qt WebEngine module provides a web browser engine that\n\t  makes it easy to embed content from the World Wide Web into\n\t  your Qt application.\n\n\t  Qt WebEngine provides C++ classes and QML types for rendering\n\t  HTML, XHTML, and SVG documents, styled using Cascading Style\n\t  Sheets (CSS) and scripted with JavaScript. HTML documents can\n\t  be made fully editable by the user through the use of the\n\t  contenteditable attribute on HTML elements.\n\n\t  http://doc.qt.io/qt-5/qtwebengine-index.html\n\nif BR2_PACKAGE_QT5WEBENGINE\n\nconfig BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS\n\tbool \"proprietary codecs\"\n\thelp\n\t  Qt WebEngine supports the MPEG-4 Part 14 (MP4) file format,\n\t  which includes required proprietary audio and video codecs,\n\t  such as H.264 and MPEG layer-3 (MP3).\n\nconfig BR2_PACKAGE_QT5WEBENGINE_ALSA\n\tbool \"alsa\"\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_MIXER\n\tselect BR2_PACKAGE_ALSA_LIB_RAWMIDI\n\tselect BR2_PACKAGE_ALSA_LIB_HWDEP\n\tselect BR2_PACKAGE_ALSA_LIB_SEQ\n\thelp\n\t  Enable ALSA support.\n\nendif\n"
  },
  {
    "path": "package/qt5/qt5webengine/chromium-latest.inc",
    "content": "# (echo \"QT5WEBENGINE_CHROMIUM_LICENSE_FILES = \\\\\" ; \\\n# \tfind src/3rdparty/ -type f \\\n#\t\\( -iname 'license*' -o -iname 'copying*' -o -name 'APPLE_LICENSE' -o -name 'Copyright' -o -path '*/license_texts/*' -o -path '*/licenses/*' \\) \\\n#\t-a -not -name '*.cc' -not -name '*.py' -not -name '*.pyc' -not -name '*.h' -not -name 'LICENSE.sha1' -not -name 'licensecheck.pl*' -not -name 'license.after' -not -name 'license.before' | \\\n#\tsort | sed 's%^\\(.*\\)$%\\t\\1 \\\\%') > package/qt5/qt5webengine/chromium-latest.inc\nQT5WEBENGINE_CHROMIUM_LICENSE_FILES = \\\n\tsrc/3rdparty/chromium/base/third_party/cityhash/COPYING \\\n\tsrc/3rdparty/chromium/base/third_party/double_conversion/LICENSE \\\n\tsrc/3rdparty/chromium/base/third_party/dynamic_annotations/LICENSE \\\n\tsrc/3rdparty/chromium/base/third_party/icu/LICENSE \\\n\tsrc/3rdparty/chromium/base/third_party/libevent/LICENSE \\\n\tsrc/3rdparty/chromium/base/third_party/nspr/LICENSE \\\n\tsrc/3rdparty/chromium/base/third_party/superfasthash/LICENSE \\\n\tsrc/3rdparty/chromium/base/third_party/symbolize/LICENSE \\\n\tsrc/3rdparty/chromium/base/third_party/valgrind/LICENSE \\\n\tsrc/3rdparty/chromium/base/third_party/xdg_mime/LICENSE \\\n\tsrc/3rdparty/chromium/base/third_party/xdg_user_dirs/LICENSE \\\n\tsrc/3rdparty/chromium/buildtools/LICENSE \\\n\tsrc/3rdparty/chromium/LICENSE \\\n\tsrc/3rdparty/chromium/LICENSE.chromium_os \\\n\tsrc/3rdparty/chromium/mojo/public/LICENSE \\\n\tsrc/3rdparty/chromium/net/third_party/mozilla_security_manager/LICENSE \\\n\tsrc/3rdparty/chromium/net/third_party/nss/LICENSE \\\n\tsrc/3rdparty/chromium/net/third_party/quiche/src/LICENSE \\\n\tsrc/3rdparty/chromium/net/third_party/uri_template/LICENSE \\\n\tsrc/3rdparty/chromium/ppapi/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/abseil-cpp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/angle/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/angle/src/common/third_party/smhasher/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/angle/src/common/third_party/xxhash/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/angle/src/third_party/compiler/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/angle/src/third_party/libXNVCtrl/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/angle/src/third_party/volk/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/angle/third_party/rapidjson/src/bin/jsonschema/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/angle/third_party/rapidjson/src/contrib/natvis/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/angle/third_party/rapidjson/src/license.txt \\\n\tsrc/3rdparty/chromium/third_party/angle/third_party/vulkan-headers/src/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/angle/third_party/vulkan-loader/src/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/angle/third_party/vulkan-tools/src/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/angle/tools/flex-bison/third_party/m4sugar/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/angle/tools/flex-bison/third_party/skeletons/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/angle/util/windows/third_party/StackWalker/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/apple_apsl/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/arcore-android-sdk-client/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/arcore-android-sdk/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/axe-core/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/bazel/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/blanketjs/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/blink/LICENSE_FOR_ABOUT_CREDITS \\\n\tsrc/3rdparty/chromium/third_party/blink/renderer/core/LICENSE-APPLE \\\n\tsrc/3rdparty/chromium/third_party/blink/renderer/core/LICENSE-LGPL-2 \\\n\tsrc/3rdparty/chromium/third_party/blink/renderer/core/LICENSE-LGPL-2.1 \\\n\tsrc/3rdparty/chromium/third_party/blink/renderer/platform/testing/data/third_party/Noto/LICENSE_OFL.txt \\\n\tsrc/3rdparty/chromium/third_party/blink/renderer/platform/testing/data/third_party/Roboto/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/enum/enum/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/h2/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/hpack/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/html5lib/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/hyperframe/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/six/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/boringssl/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/boringssl/src/third_party/fiat/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/boringssl/src/third_party/googletest/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/boringssl/src/third_party/wycheproof_testvectors/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/bouncycastle/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/breakpad/breakpad/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/breakpad/breakpad/src/third_party/curl/COPYING \\\n\tsrc/3rdparty/chromium/third_party/breakpad/breakpad/src/third_party/libdisasm/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/breakpad/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/brotli/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/bspatch/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/byte_buddy/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/catapult/common/eslint/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/catapult/common/py_vulcanize/third_party/rcssmin/bench/LICENSE.cssmin \\\n\tsrc/3rdparty/chromium/third_party/catapult/common/py_vulcanize/third_party/rcssmin/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/catapult/common/py_vulcanize/third_party/rjsmin/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/catapult/third_party/polymer/components/polymer/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/catapult/tracing/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/catapult/tracing/third_party/chai/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/catapult/tracing/third_party/d3/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/catapult/tracing/third_party/devscripts/COPYING \\\n\tsrc/3rdparty/chromium/third_party/catapult/tracing/third_party/gl-matrix/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/catapult/tracing/third_party/jpeg-js/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/catapult/tracing/third_party/jszip/LICENSE.markdown \\\n\tsrc/3rdparty/chromium/third_party/catapult/tracing/third_party/mocha/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/catapult/tracing/third_party/pako/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/ced/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/ced/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/chaijs/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/checkstyle/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/checkstyle/LICENSE.apache20 \\\n\tsrc/3rdparty/chromium/third_party/cld_3/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/cld_3/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/closure_compiler/compiler/COPYING \\\n\tsrc/3rdparty/chromium/third_party/closure_compiler/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/crashpad/crashpad/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/crashpad/crashpad/third_party/apple_cf/APPLE_LICENSE \\\n\tsrc/3rdparty/chromium/third_party/crashpad/crashpad/third_party/cpp-httplib/cpp-httplib/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/crashpad/crashpad/third_party/getopt/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/crashpad/crashpad/third_party/glibc/COPYING.LIB \\\n\tsrc/3rdparty/chromium/third_party/crashpad/crashpad/third_party/xnu/APPLE_LICENSE \\\n\tsrc/3rdparty/chromium/third_party/crc32c/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/cros_system_api/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/custom_tabs_client/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/d3/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/dav1d/libdav1d/COPYING \\\n\tsrc/3rdparty/chromium/third_party/dav1d/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/dawn/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/decklink/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devscripts/COPYING \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/front_end/cm/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/front_end/cm/LICENSE_python \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/front_end/cm_modes/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/front_end/dagre_layout/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/front_end/formatter_worker/acorn/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/front_end/sdk/wasm_source_map/LICENSES.deps \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/fabricjs/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lighthouse/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lit-html/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lit-html/package/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/wasmparser/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/abbrev/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/accepts/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/acorn-jsx/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/acorn/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/acorn-walk/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ajv/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/amdefine/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-colors/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-escapes/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-regex/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-styles/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-wrap/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/anymatch/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/append-transform/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/argparse/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/array-find-index/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/arr-diff/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/arr-union/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/asap/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/assert/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/assign-symbols/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/astral-regex/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ast-types/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/async/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/async-limiter/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/code-frame/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/generator/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/generator/node_modules/source-map/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-function-name/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-get-function-arity/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-split-export-declaration/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/highlight/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/parser/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/template/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/traverse/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/types/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/balanced-match/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/base64-arraybuffer/LICENSE-MIT \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/base64id/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/base64-js/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/binary-extensions/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/.bin/license-checker \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/blob/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/bluebird/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/body-parser/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/body-parser/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/body-parser/node_modules/ms/license.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/brace-expansion/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/braces/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-aes/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-cipher/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-des/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-rsa/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-sign/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-zlib/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browser-resolve/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browser-stdout/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/buffer-from/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/buffer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/buffer-xor/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/builtin-status-codes/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/bytes/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/callsites/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/camelcase-keys/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/camelcase/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chai/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chalk/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chardet/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/check-error/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chokidar/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chokidar/node_modules/glob-parent/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cipher-base/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cli-cursor/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cliui/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cli-width/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/clone/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/code-point-at/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/color-convert/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/color-name/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/colors/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/combine-source-map/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/combine-source-map/node_modules/convert-source-map/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/combine-source-map/node_modules/source-map/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/commander/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/compare-versions/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/component-emitter/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-map/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-stream/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-stream/node_modules/readable-stream/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-stream/node_modules/safe-buffer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-stream/node_modules/string_decoder/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/connect/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/connect/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/connect/node_modules/ms/license.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/content-type/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/convert-source-map/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/convert-source-map/node_modules/safe-buffer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cookie/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/core-js/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/core-util-is/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/create-ecdh/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/create-hash/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/create-hmac/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cross-spawn/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/crypto-browserify/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/currently-unhandled/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/custom-event/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/date-format/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/dateformat/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/debuglog/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/decamelize/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/deep-eql/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/deep-is/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/default-require-extensions/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/defaults/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/define-properties/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/depd/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/dezalgo/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/diffie-hellman/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/diff/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/diff-match-patch/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/di/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE.closure-compiler \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE.esprima \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/domain-browser/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ee-first/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/emoji-regex/LICENSE-MIT.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/encodeurl/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/end-of-stream/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/node_modules/ms/license.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io/node_modules/ms/license.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io-parser/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ent/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/error-ex/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/es6-object-assign/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/es6-promise/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/es-abstract/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/escape-html/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/escape-string-regexp/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/escodegen/LICENSE.BSD \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/escodegen/node_modules/esprima/LICENSE.BSD \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-mocha/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-rulesdir/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-scope/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-utils/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-visitor-keys/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/espree/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/esprima/LICENSE.BSD \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/esquery/license.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/es-to-primitive/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/estraverse/LICENSE.BSD \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/esutils/LICENSE.BSD \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eventemitter3/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/events/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/evp_bytestokey/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/execa/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extend/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extend-shallow/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/external-editor/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extract-zip/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extract-zip/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extract-zip/node_modules/ms/license.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fast-deep-equal/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fast-json-stable-stringify/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fast-levenshtein/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fd-slicer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/figures/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/file-entry-cache/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fileset/LICENSE-MIT \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fill-range/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/finalhandler/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/finalhandler/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/finalhandler/node_modules/ms/license.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/find-up/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/flat-cache/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/flat-cache/node_modules/rimraf/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/flat/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/flatted/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/follow-redirects/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/follow-redirects/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fsevents/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fs-extra/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fs.realpath/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/functional-red-black-tree/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/function-bind/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/get-caller-file/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/get-func-name/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/get-stream/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/globals/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/glob/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/glob-parent/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/glob-parent/node_modules/is-glob/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/graceful-fs/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/handlebars/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/has-binary2/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/has-flag/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/hash-base/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/has/LICENSE-MIT \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/has-symbols/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/he/LICENSE-MIT.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/hosted-git-info/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/http-errors/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/http-errors/node_modules/inherits/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/http-proxy/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/https-browserify/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/https-proxy-agent/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/iconv-lite/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ieee754/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ignore/LICENSE-MIT \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/import-fresh/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/indent-string/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inflight/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inherits/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inline-source-map/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inline-source-map/node_modules/source-map/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inquirer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/ansi-regex/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/strip-ansi/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/invert-kv/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-arguments/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-arrayish/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/isbinaryfile/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-binary-path/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-buffer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-callable/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-date-object/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/isexe/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-extendable/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-extglob/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-finite/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-fullwidth-code-point/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-generator-function/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-glob/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-nan/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-number/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/isobject/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-plain-object/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-promise/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-regex/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-stream/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-symbol/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-api/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-diff/node_modules/minimist/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-coverage/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-hook/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-instrument/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-instrument/node_modules/semver/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-report/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-report/node_modules/supports-color/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-source-maps/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-source-maps/node_modules/rimraf/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/async/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/escodegen/LICENSE.BSD \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/escodegen/LICENSE.source-map \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/esprima/LICENSE.BSD \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/estraverse/LICENSE.BSD \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/glob/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/has-flag/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/source-map/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/supports-color/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-reports/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-utf8/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/jsesc/LICENSE-MIT.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/jsonfile/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/json-parse-better-errors/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/json-schema-traverse/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/json-stable-stringify-without-jsonify/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/json-stringify-safe/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/js-tokens/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/js-yaml/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/js-yaml/node_modules/esprima/LICENSE.BSD \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-chai/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-chrome-launcher/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage-istanbul-instrumenter/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage-istanbul-reporter/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/LICENSE-istanbul \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/source-map/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-mocha/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-mocha/node_modules/minimist/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/rimraf/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-sourcemap-loader/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/acorn/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/async/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/source-map/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/tmp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/tmp/node_modules/rimraf/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lcid/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/levn/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/bin/license-checker \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/lib/license-files.js \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/lib/license.js \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/node_modules/nopt/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/load-json-file/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/load-json-file/node_modules/pify/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/load-json-file/node_modules/strip-bom/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/locate-path/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/locate-path/node_modules/path-exists/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lodash-deep/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lodash/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lodash.memoize/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/log4js/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/log-symbols/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/loud-rejection/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lru-cache/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/make-dir/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/map-age-cleaner/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/map-obj/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/md5.js/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/media-typer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mem/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mem/node_modules/mimic-fn/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/meow/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/meow/node_modules/minimist/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mime-db/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mime/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mime-types/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mimic-fn/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/minimalistic-assert/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/minimatch/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/minimist/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mkdirp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/ansi-colors/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/diff/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/find-up/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/glob/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/ms/license.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/supports-color/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ms/license.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mute-stream/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/negotiator/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/neo-async/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/nice-try/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/nopt/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/normalize-package-data/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/normalize-package-data/node_modules/resolve/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/normalize-path/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/npm-run-path/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/number-is-nan/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object-assign/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object.assign/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object.entries/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object.getownpropertydescriptors/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object-inspect/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object-is/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object-keys/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/omit-deep-lodash/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/once/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/onetime/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/on-finished/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/optimist/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/optimist/node_modules/wordwrap/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/optionator/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/os-browserify/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/osenv/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/os-homedir/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/os-locale/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/os-tmpdir/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pad/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pako/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parent-module/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parse-asn1/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parse-json/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parseqs/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parseuri/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parseurl/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-browserify/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-dirname/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-exists/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-is-absolute/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-key/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-parse/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-type/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-type/node_modules/pify/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pathval/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pbkdf2/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-defer/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pend/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-finally/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/picomatch/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pify/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pinkie/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pinkie-promise/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-is-promise/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-limit/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-locate/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/plugin-error/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/prelude-ls/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/private/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/process/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/process-nextick-args/license.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/progress/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pseudomap/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-try/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/public-encrypt/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pump/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/punycode/LICENSE-MIT.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/puppeteer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/puppeteer/node_modules/rimraf/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/puppeteer/node_modules/ws/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/qs/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/querystring-es3/License.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/querystring/License.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ramda/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/randombytes/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/randomfill/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/range-parser/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/raw-body/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/readable-stream/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/readdirp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/readdir-scoped-modules/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/read-installed/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/read-package-json/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/read-pkg/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/recast/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/recast/node_modules/esprima/LICENSE.BSD \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/redent/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/regexpp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/remap-istanbul/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/repeating/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/require-directory/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/require-main-filename/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/requires-port/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/resolve-from/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/resolve/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/restore-cursor/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rfdc/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rimraf/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ripemd160/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rollup/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/run-async/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rxjs/_esm2015/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rxjs/_esm5/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rxjs/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rxjs/src/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/safe-buffer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/safer-buffer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/semver/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/set-blocking/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/setimmediate/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/setprototypeof/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/sha.js/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/shebang-command/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/shebang-regex/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/signal-exit/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/slice-ansi/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/slide/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-adapter/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/node_modules/ms/license.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io/node_modules/ms/license.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/node_modules/ms/license.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/source-map/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-compare/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-correct/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-expression-parse/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-ranges/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-satisfies/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/sprintf-js/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/statuses/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-browserify/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-browserify/node_modules/readable-stream/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-browserify/node_modules/safe-buffer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-browserify/node_modules/string_decoder/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-http/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/streamroller/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/streamroller/node_modules/debug/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/string_decoder/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimleft/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimright/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/string-width/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-ansi/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-bom/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-eof/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-indent/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-json-comments/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/supports-color/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/table/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/ansi-regex/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/string-width/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/strip-ansi/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/text-table/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/through2/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/through/LICENSE.APACHE2 \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/through/LICENSE.MIT \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/timers-browserify/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/tmp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/to-fast-properties/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/toidentifier/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/to-regex-range/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/treeify/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/trim-newlines/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/tslib/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/tsutils/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/tty-browserify/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/type-check/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/typedarray/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/type-detect/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/type-is/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/chai/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/color-name/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/eslint-plugin/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/eslint-plugin/node_modules/regexpp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/experimental-utils/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-scope/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/parser/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/node_modules/glob/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/node_modules/semver/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/typescript/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/eslint-visitor-keys/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/estree/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/filesystem/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/json-schema/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/mocha/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/node/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/puppeteer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/uglify-js/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ultron/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/universalify/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/unpipe/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/url/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/url/node_modules/punycode/LICENSE-MIT.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/useragent/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/util-deprecate/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/util-extend/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/util/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/utils-merge/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/validate-npm-package-license/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/vm-browserify/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/void-elements/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wcwidth/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/which/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/which-module/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wide-align/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wordwrap/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/ansi-regex/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/string-width/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/strip-ansi/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrappy/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/write/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ws/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ws/node_modules/safe-buffer/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/xmlhttprequest-ssl/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/xtend/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/y18n/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yallist/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/ansi-regex/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/ansi-styles/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/camelcase/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/cliui/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/color-convert/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/color-name/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/emoji-regex/LICENSE-MIT.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/find-up/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/is-fullwidth-code-point/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/locate-path/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/path-exists/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/p-locate/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/string-width/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/strip-ansi/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/wrap-ansi/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/yargs-parser/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-parser/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-parser/node_modules/camelcase/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/camelcase/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/find-up/license \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/get-caller-file/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/require-main-filename/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/yargs/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/yargs-parser/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yauzl/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yeast/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/scripts/closure/COPYING \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/third_party/axe-core/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/devtools-frontend/src/third_party/pyjson5/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/dom_distiller_js/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/dpkg-shlibdeps/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/emoji-segmenter/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/emoji-segmenter/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/espresso/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/expat/src/expat/COPYING \\\n\tsrc/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/full_lgpl.txt \\\n\tsrc/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/jpeg.txt \\\n\tsrc/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/mips.txt \\\n\tsrc/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/oggparse_ahlberg_rullgayrd_2005.txt \\\n\tsrc/3rdparty/chromium/third_party/ffmpeg/COPYING.GPLv2 \\\n\tsrc/3rdparty/chromium/third_party/ffmpeg/COPYING.GPLv3 \\\n\tsrc/3rdparty/chromium/third_party/ffmpeg/COPYING.LGPLv2.1 \\\n\tsrc/3rdparty/chromium/third_party/ffmpeg/COPYING.LGPLv3 \\\n\tsrc/3rdparty/chromium/third_party/ffmpeg/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/flac/COPYING.FDL \\\n\tsrc/3rdparty/chromium/third_party/flac/COPYING.GPL \\\n\tsrc/3rdparty/chromium/third_party/flac/COPYING.LGPL \\\n\tsrc/3rdparty/chromium/third_party/flac/COPYING.Xiph \\\n\tsrc/3rdparty/chromium/third_party/flatbuffers/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/flatbuffers/src/dart/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/flatbuffers/src/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/fontconfig/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/fontconfig/src/COPYING \\\n\tsrc/3rdparty/chromium/third_party/freetype/src/docs/LICENSE.TXT \\\n\tsrc/3rdparty/chromium/third_party/fuchsia-sdk/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/gif_player/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/glfw/src/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/glslang/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/glslang/src/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/googletest/src/googlemock/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/googletest/src/googlemock/scripts/generator/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/googletest/src/googletest/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/googletest/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/google-truth/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/guava/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/gvr-android-keyboard/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/gvr-android-sdk/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/hamcrest/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/harfbuzz-ng/src/COPYING \\\n\tsrc/3rdparty/chromium/third_party/harfbuzz-ng/src/src/ms-use/COPYING \\\n\tsrc/3rdparty/chromium/third_party/hunspell/COPYING \\\n\tsrc/3rdparty/chromium/third_party/hunspell/COPYING.LESSER \\\n\tsrc/3rdparty/chromium/third_party/hunspell/COPYING.MPL \\\n\tsrc/3rdparty/chromium/third_party/iaccessible2/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/iccjpeg/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/icu4j/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/icu/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/icu/license.html \\\n\tsrc/3rdparty/chromium/third_party/icu/scripts/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/ijar/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/ink/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/inspector_protocol/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/isimpledom/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/jacoco/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/javalang/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/jetifier_standalone/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/jinja2/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/jsoncpp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/jsoncpp/source/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/jstemplate/COPYING \\\n\tsrc/3rdparty/chromium/third_party/khronos/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/leveldatabase/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libaddressinput/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libaddressinput/src/cpp/LICENSE.chromium \\\n\tsrc/3rdparty/chromium/third_party/libaddressinput/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libaom/source/libaom/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libaom/source/libaom/third_party/fastfeat/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libaom/source/libaom/third_party/googletest/src/googletest/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libaom/source/libaom/third_party/libwebm/LICENSE.TXT \\\n\tsrc/3rdparty/chromium/third_party/libaom/source/libaom/third_party/vector/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libaom/source/libaom/third_party/x86inc/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libcxx-pretty-printers/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libgav1/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libgifcodec/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/libipp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libjingle_xmpp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libjpeg_turbo/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/libovr/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libpng/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libprotobuf-mutator/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libsecret/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libsrtp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libsync/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libudev/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libusb/src/COPYING \\\n\tsrc/3rdparty/chromium/third_party/libvpx/source/libvpx/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/googletest/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/libwebm/LICENSE.TXT \\\n\tsrc/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/libyuv/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/x86inc/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libwebm/source/LICENSE.TXT \\\n\tsrc/3rdparty/chromium/third_party/libwebp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libxml/src/COPYING \\\n\tsrc/3rdparty/chromium/third_party/libxml/src/Copyright \\\n\tsrc/3rdparty/chromium/third_party/libXNVCtrl/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/libxslt/linux/COPYING \\\n\tsrc/3rdparty/chromium/third_party/libxslt/src/Copyright \\\n\tsrc/3rdparty/chromium/third_party/libyuv/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/lottie/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/lzma_sdk/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/mako/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/markupsafe/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/material_design_icons/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/mesa_headers/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/metrics_proto/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/microsoft_webauthn/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/minigbm/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/minigbm/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/minizip/src/lib/bzip2/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/minizip/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/mocha/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/mockito/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/modp_b64/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/motemplate/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/mozilla/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/nasm/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/netty4/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/netty-tcnative/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/node/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/objenesis/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/ocmock/License.txt \\\n\tsrc/3rdparty/chromium/third_party/one_euro_filter/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/openh264/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/openscreen/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/openscreen/src/third_party/mozilla/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/openvr/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/opus/src/COPYING \\\n\tsrc/3rdparty/chromium/third_party/opus/src/LICENSE_PLEASE_READ.txt \\\n\tsrc/3rdparty/chromium/third_party/ots/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/ow2_asm/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/pdfium/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/pdfium/third_party/bigint/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/pdfium/third_party/libpng16/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/pdfium/third_party/pymock/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/perfetto/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/pexpect/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/pffft/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/ply/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/ply/license.patch \\\n\tsrc/3rdparty/chromium/third_party/polymer/LICENSE.polymer \\\n\tsrc/3rdparty/chromium/third_party/polymer/v1_0/components-chromium/polymer2/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/polymer/v1_0/components-chromium/polymer/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/polymer/v3_0/components-chromium/polymer/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/private-join-and-compute/src/crypto/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/private-join-and-compute/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/private-join-and-compute/src/util/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/proguard/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/protobuf/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/pycoverage/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/pyelftools/elftools/construct/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/pyelftools/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/pyjson5/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/pymock/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/pystache/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/Python-Markdown/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/pywebsocket3/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/qcms/src/COPYING \\\n\tsrc/3rdparty/chromium/third_party/quic_trace/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/quic_trace/src/third_party/fonts/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/quic_trace/src/third_party/glew/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/qunit/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/r8/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/re2/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/re2/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/requests/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/rnnoise/COPYING \\\n\tsrc/3rdparty/chromium/third_party/robolectric/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/robolectric/licenses/extreme.indiana.edu.license.txt \\\n\tsrc/3rdparty/chromium/third_party/robolectric/licenses/javolution.license.txt \\\n\tsrc/3rdparty/chromium/third_party/robolectric/licenses/pivotal.labs.license.txt \\\n\tsrc/3rdparty/chromium/third_party/s2cellid/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/schema_org/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/shaderc/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/shaderc/src/third_party/LICENSE.glslang \\\n\tsrc/3rdparty/chromium/third_party/shaderc/src/third_party/LICENSE.spirv-tools \\\n\tsrc/3rdparty/chromium/third_party/simplejson/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/sinonjs/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/six/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/six/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/skia/include/third_party/skcms/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/skia/include/third_party/vulkan/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/skia/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/skia/modules/canvaskit/canvaskit/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/skia/modules/pathkit/npm-asmjs/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/skia/modules/pathkit/npm-wasm/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/skia/third_party/etc1/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/skia/third_party/skcms/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/skia/third_party/vulkanmemoryallocator/include/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/skia/third_party/vulkanmemoryallocator/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/skia/third_party/wuffs/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/smhasher/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/snappy/src/COPYING \\\n\tsrc/3rdparty/chromium/third_party/spirv-cross/spirv-cross/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/spirv-headers/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/spirv-headers/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/SPIRV-Tools/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/SPIRV-Tools/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/SPIRV-Tools/src/utils/vscode/src/lsp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/sqlite4java/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/sqlite/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/sqlite/src/autoconf/tea/license.terms \\\n\tsrc/3rdparty/chromium/third_party/sqlite/src/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/subresource-filter-ruleset/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/sudden_motion_sensor/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/swiftshader/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/tcmalloc/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/tcmalloc/vendor/COPYING \\\n\tsrc/3rdparty/chromium/third_party/test_fonts/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/tlslite/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/turbine/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/ub-uiautomator/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/unrar/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/unrar/src/license.txt \\\n\tsrc/3rdparty/chromium/third_party/usb_ids/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/usrsctp/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/usrsctp/usrsctplib/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/v4l-utils/COPYING.libv4l \\\n\tsrc/3rdparty/chromium/third_party/wds/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/wds/src/COPYING \\\n\tsrc/3rdparty/chromium/third_party/web-animations-js/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/web-animations-js/sources/COPYING \\\n\tsrc/3rdparty/chromium/third_party/webdriver/COPYING \\\n\tsrc/3rdparty/chromium/third_party/webdriver/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webgpu-cts/src/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/webgpu-cts/src/third_party/jquery/LICENSE.txt \\\n\tsrc/3rdparty/chromium/third_party/webrtc/common_audio/third_party/fft4g/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webrtc/common_audio/third_party/spl_sqrt_floor/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/webrtc/examples/objc/AppRTCMobile/third_party/SocketRocket/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webrtc/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webrtc/license_template.txt \\\n\tsrc/3rdparty/chromium/third_party/webrtc/modules/third_party/fft/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webrtc/modules/third_party/g711/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webrtc/modules/third_party/g722/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webrtc/modules/third_party/portaudio/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/sigslot/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webxr_test_pages/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webxr_test_pages/webxr-samples/js/cottontail/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/webxr_test_pages/webxr-samples/js/third-party/dat.gui/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webxr_test_pages/webxr-samples/js/third-party/gl-matrix/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/webxr_test_pages/webxr-samples/LICENSE.md \\\n\tsrc/3rdparty/chromium/third_party/weston/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/weston/src/COPYING \\\n\tsrc/3rdparty/chromium/third_party/weston/src/data/COPYING \\\n\tsrc/3rdparty/chromium/third_party/widevine/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/woff2/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/wuffs/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/wuffs/src/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/xdg-utils/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/xstream/LICENSE \\\n\tsrc/3rdparty/chromium/third_party/yasm/source/patched-yasm/COPYING \\\n\tsrc/3rdparty/chromium/third_party/zlib/LICENSE \\\n\tsrc/3rdparty/chromium/tools/grit/third_party/six/LICENSE \\\n\tsrc/3rdparty/chromium/tools/origin_trials/third_party/ed25519/LICENSE \\\n\tsrc/3rdparty/chromium/tools/page_cycler/acid3/LICENSE \\\n\tsrc/3rdparty/chromium/tools/win/ChromeDebug/ChromeDebug/LICENSE \\\n\tsrc/3rdparty/chromium/url/third_party/mozilla/LICENSE.txt \\\n\tsrc/3rdparty/chromium/v8/LICENSE \\\n\tsrc/3rdparty/chromium/v8/LICENSE.fdlibm \\\n\tsrc/3rdparty/chromium/v8/LICENSE.strongtalk \\\n\tsrc/3rdparty/chromium/v8/LICENSE.v8 \\\n\tsrc/3rdparty/chromium/v8/LICENSE.valgrind \\\n\tsrc/3rdparty/chromium/v8/src/third_party/siphash/LICENSE \\\n\tsrc/3rdparty/chromium/v8/src/third_party/utf8-decoder/LICENSE \\\n\tsrc/3rdparty/chromium/v8/src/third_party/valgrind/LICENSE \\\n\tsrc/3rdparty/chromium/v8/src/third_party/vtune/LICENSE \\\n\tsrc/3rdparty/chromium/v8/third_party/colorama/LICENSE \\\n\tsrc/3rdparty/chromium/v8/third_party/inspector_protocol/LICENSE \\\n\tsrc/3rdparty/chromium/v8/third_party/v8/builtins/LICENSE \\\n\tsrc/3rdparty/chromium/v8/third_party/wasm-api/LICENSE \\\n\tsrc/3rdparty/gn/base/third_party/icu/LICENSE \\\n\tsrc/3rdparty/gn/LICENSE \\\n\tsrc/3rdparty/ninja/COPYING \\\n"
  },
  {
    "path": "package/qt5/qt5webengine/host-pkg-config.in",
    "content": "#!/bin/sh\nPKG_CONFIG_SYSROOT_DIR=\"/\" \\\nPKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \\\nPKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \\\nPKG_CONFIG_LIBDIR=\"@HOST_DIR@/lib/pkgconfig:@HOST_DIR@/share/pkgconfig\" \\\nexec @HOST_DIR@/bin/pkgconf \"$@\"\n"
  },
  {
    "path": "package/qt5/qt5webengine/qt5webengine.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtwebengine-everywhere-src-5.15.2.tar.xz.sha256\nsha256  c8afca0e43d84f7bd595436fbe4d13a5bbdb81ec5104d605085d07545b6f91e0  qtwebengine-everywhere-src-5.15.2.tar.xz\n\n# Locally calculated\nsha256  f34787ef0342c614b667186a6ec2f5d6b9d650e30142a2788a589a89743e88e9  LICENSE.Chromium\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17  LICENSE.GPLv3\nsha256  9ae1959e86bd49b9680f78e0b49d4e52ae88a3f234d497e175e42a7e8ed59216  LICENSE.LGPL3\n\n# Locally calculated with:\n# for i in $(find src/3rdparty/ -type f \\( -iname 'license*' -o -iname 'copying*' -o -name 'APPLE_LICENSE' -o -name 'Copyright' -o -path '*/license_texts/*' -o -path '*/licenses/*' \\) -a -not -name '*.cc' -not -name '*.py' -not -name '*.pyc' -not -name '*.h' -not -name 'LICENSE.sha1' -not -name 'licensecheck.pl*' -not -name 'license.after' -not -name 'license.before') ; do echo -n \"sha256  \" ; sha256sum $i ; done | sort --key=3\nsha256  3ed00dd93c75655599456c83cba2f69c6824fd53f24fc24206ba27b65057709d  src/3rdparty/chromium/base/third_party/cityhash/COPYING\nsha256  4af93c12062c58058378de2397dc1c92bbff9ddfb1d583a01c84127557ce97ca  src/3rdparty/chromium/base/third_party/double_conversion/LICENSE\nsha256  96e7ccbf8d17e319dd77c4ebd4965b64a820bbcc3142a2478fbf95af77417b6a  src/3rdparty/chromium/base/third_party/dynamic_annotations/LICENSE\nsha256  5d85142a5609ad177a2d7a2e7cae060b886b8b42f25c5b9803cf0cb5ee04ad2f  src/3rdparty/chromium/base/third_party/icu/LICENSE\nsha256  9ad1d4223b80349f3d3ab9cec92f93431b9da14a1b5d41de468ce054a28cf8aa  src/3rdparty/chromium/base/third_party/libevent/LICENSE\nsha256  d55a403514532af12dc2fbfb2e41900090a5dd6c7c76c8e4d9b20bcc737eac35  src/3rdparty/chromium/base/third_party/nspr/LICENSE\nsha256  90b2201c340cee36b40a443f949d9eb416f0a0d204c32d350aff87fedeb67ae8  src/3rdparty/chromium/base/third_party/superfasthash/LICENSE\nsha256  538edc6f52c563cf06eca1bac8dd785ff60ef5a371a950265700d5d40386db6e  src/3rdparty/chromium/base/third_party/symbolize/LICENSE\nsha256  79955cd80438f041387eb080f2675394e36a806b8b17eca63a4bc568d839509e  src/3rdparty/chromium/base/third_party/valgrind/LICENSE\nsha256  c45766baef552c59eeb1fdfbbc690e52e4cd5b135dfd325f21bdfe8ddfe28ce6  src/3rdparty/chromium/base/third_party/xdg_mime/LICENSE\nsha256  18351de3d7e2dc469cc83e77d38a3e25d010251e34eb348bbd1a76275e313997  src/3rdparty/chromium/base/third_party/xdg_user_dirs/LICENSE\nsha256  7a209dd1b94cabdb5ea9c6f9164b9546ffa5daaa671e7767d49510db055f5c51  src/3rdparty/chromium/buildtools/LICENSE\nsha256  845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308  src/3rdparty/chromium/LICENSE\nsha256  212c5a071f61512786b5e5840b3d70c85e017f3f82939ad4d4a870fc48b33477  src/3rdparty/chromium/LICENSE.chromium_os\nsha256  7a209dd1b94cabdb5ea9c6f9164b9546ffa5daaa671e7767d49510db055f5c51  src/3rdparty/chromium/mojo/public/LICENSE\nsha256  bed70fc84f1bea2b4b144564b9a0f9a5a3bc7b0d78f6e62092aeb689cac56bdd  src/3rdparty/chromium/net/third_party/mozilla_security_manager/LICENSE\nsha256  a20c1a32d1f8102432360b42e932869f7c11c7cdbacf9cac554c422132af47f4  src/3rdparty/chromium/net/third_party/nss/LICENSE\nsha256  845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308  src/3rdparty/chromium/net/third_party/quiche/src/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/net/third_party/uri_template/LICENSE\nsha256  834ee20e8fc3235722ed801bae30cc539c2775be656ff9cc2810fe674e53d5ec  src/3rdparty/chromium/ppapi/LICENSE\nsha256  c79a7fea0e3cac04cd43f20e7b648e5a0ff8fa5344e644b0ee09ca1162b62747  src/3rdparty/chromium/third_party/abseil-cpp/LICENSE\nsha256  bf4da21bd20bcfb5b60b7ecc67fa864a79be049e21d6178076887f178dd6c71a  src/3rdparty/chromium/third_party/angle/LICENSE\nsha256  3f6f1b520bc53e878ccbb698ad0bacef3752a5f4e4b50a26552bd70f60b40748  src/3rdparty/chromium/third_party/angle/src/common/third_party/smhasher/LICENSE\nsha256  86ec6953794503942b70fcd4f35b565d44f63f703b7037ce44dad965c4aaae91  src/3rdparty/chromium/third_party/angle/src/common/third_party/xxhash/LICENSE\nsha256  a08ba10adec47027ef8078848729837b1c5a42f140718d7afd65c23f1eeec392  src/3rdparty/chromium/third_party/angle/src/third_party/compiler/LICENSE\nsha256  31346421254a3e6e12687cf17f19f6357ee73a617fa7b3d3ccefdcbabe49bdd3  src/3rdparty/chromium/third_party/angle/src/third_party/libXNVCtrl/LICENSE\nsha256  336f505f8d5aa73ea40b4d798dde86953e9c1f6525757f1d7f18120fea09bb1d  src/3rdparty/chromium/third_party/angle/src/third_party/volk/LICENSE.md\nsha256  837402bd25fad9b704265801ca3f92566a98157c1f9a7acd6f446299ba1c305a  src/3rdparty/chromium/third_party/angle/third_party/rapidjson/src/bin/jsonschema/LICENSE\nsha256  394faaedb93c1da8ecbd61322518834908fee64381117e01a611bf9fac20baa6  src/3rdparty/chromium/third_party/angle/third_party/rapidjson/src/contrib/natvis/LICENSE\nsha256  a140e5d46fe734a1c78f1a3c3ef207871dd75648be71fdda8e309b23ab8b1f32  src/3rdparty/chromium/third_party/angle/third_party/rapidjson/src/license.txt\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/angle/third_party/vulkan-headers/src/LICENSE.txt\nsha256  43c0a37e6a0fa7ff3c843b3ec5a4fac84b712558ddac103fbd4c1649662a9ece  src/3rdparty/chromium/third_party/angle/third_party/vulkan-loader/src/LICENSE.txt\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/angle/third_party/vulkan-tools/src/LICENSE.txt\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  src/3rdparty/chromium/third_party/angle/tools/flex-bison/third_party/m4sugar/LICENSE\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  src/3rdparty/chromium/third_party/angle/tools/flex-bison/third_party/skeletons/LICENSE\nsha256  bfec18debedcb337f8af53f143ccf0b1575d0b7c30deaee137f10397eca0d353  src/3rdparty/chromium/third_party/angle/util/windows/third_party/StackWalker/LICENSE\nsha256  b23e682fda7310afe43505ed6041919ccff8f9e0c6799ebd7542cbcef11102e3  src/3rdparty/chromium/third_party/apple_apsl/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/arcore-android-sdk-client/LICENSE\nsha256  584e795ba5833279c327245594d6dc216fc664144fa3626a0bdf136bc00af76c  src/3rdparty/chromium/third_party/arcore-android-sdk/LICENSE\nsha256  af175b9d96ee93c21a036152e1b905b0b95304d4ae8c2c921c7609100ba8df7e  src/3rdparty/chromium/third_party/axe-core/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/bazel/LICENSE\nsha256  0518cf49c09398259d54fcfff0b5fd36456162c6439886660e53627b3073ef22  src/3rdparty/chromium/third_party/blanketjs/LICENSE\nsha256  a661d10f8f194b1963a75bb4d308f17b078cc064624313a556902d89705f6876  src/3rdparty/chromium/third_party/blink/LICENSE_FOR_ABOUT_CREDITS\nsha256  0b5d3a7cc325942567373b0ecd757d07c132e0ebd7c97bfc63f7e1a76094edb4  src/3rdparty/chromium/third_party/blink/renderer/core/LICENSE-APPLE\nsha256  7555fa34bc131a75ca56d65c40cc1ea8f9515d23e353d4c15d58573a042f7805  src/3rdparty/chromium/third_party/blink/renderer/core/LICENSE-LGPL-2\nsha256  f2b3bd09663381deb99721109d22b47af1213bb43007a8b56a06c6375c8050ce  src/3rdparty/chromium/third_party/blink/renderer/core/LICENSE-LGPL-2.1\nsha256  6a73f9541c2de74158c0e7cf6b0a58ef774f5a780bf191f2d7ec9cc53efe2bf2  src/3rdparty/chromium/third_party/blink/renderer/platform/testing/data/third_party/Noto/LICENSE_OFL.txt\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/blink/renderer/platform/testing/data/third_party/Roboto/LICENSE.txt\nsha256  5a7b465d39b5e018bc40cc34162176269f7c476989cb4dbcf0ec0b81701545a7  src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/LICENSE.md\nsha256  88ec6a6c8eafa3b9757e745783938bef3f5e4d5e3c76b1db576aa3ab520e5e1d  src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/enum/enum/LICENSE\nsha256  663f9253e13519b82ab4a6b1caab6bed05aada70517f28cd0254be8a9fa19ed6  src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/h2/LICENSE\nsha256  763a9342a04df62046c9dc748a5287934eb0a5331c6863b3ca0aee20e18cb4ed  src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/hpack/LICENSE\nsha256  16a39991619e92f18680932da2a9199fdf7d95df3ecaedc52ea06218aabafd6f  src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/html5lib/LICENSE\nsha256  763a9342a04df62046c9dc748a5287934eb0a5331c6863b3ca0aee20e18cb4ed  src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/hyperframe/LICENSE\nsha256  b7529b8c07171a78a8c36c3283905528e4812945d977d125eb926e8ccbf245b6  src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/third_party/six/LICENSE\nsha256  df336397e09e764416fc33b555703b1cdddd3a0cfea8a013ad1cad565c8be2f5  src/3rdparty/chromium/third_party/blink/tools/blinkpy/third_party/wpt/wpt/tools/wptserve/LICENSE\nsha256  60bd7c54856bf9387221bde5ab55d516d7cea15870d0fed69406bcd1c8ec7c9d  src/3rdparty/chromium/third_party/boringssl/src/LICENSE\nsha256  0c125a4dab5ab869473e6491db22f6c0a7f8a4de58588d03bb2b16c0c8ebd7de  src/3rdparty/chromium/third_party/boringssl/src/third_party/fiat/LICENSE\nsha256  9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138  src/3rdparty/chromium/third_party/boringssl/src/third_party/googletest/LICENSE\nsha256  58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd  src/3rdparty/chromium/third_party/boringssl/src/third_party/wycheproof_testvectors/LICENSE\nsha256  5740985669353ef52e0f320413ff68dc62b6c23a596cd78b6d6b80764f1c50ab  src/3rdparty/chromium/third_party/bouncycastle/LICENSE\nsha256  f9752a0a4ac5215eaa3a4f0ec29cd52563c883de5d7870525cc0bc3a21cb8e15  src/3rdparty/chromium/third_party/breakpad/breakpad/LICENSE\nsha256  4d03f91b94e0db3bdc9ddaf0060dd41cc94a2096094fbc1417713a2f059658c7  src/3rdparty/chromium/third_party/breakpad/breakpad/src/third_party/curl/COPYING\nsha256  d8eaba95b8d03c5912da9b5823de2c920e84a993133039a22fc8100f9edb33a1  src/3rdparty/chromium/third_party/breakpad/breakpad/src/third_party/libdisasm/LICENSE\nsha256  015b2d5cedb3024339446a63963d073fa831544cf253c5ddd713fccc8d83e939  src/3rdparty/chromium/third_party/breakpad/LICENSE\nsha256  3d180008e36922a4e8daec11c34c7af264fed5962d07924aea928c38e8663c94  src/3rdparty/chromium/third_party/brotli/LICENSE\nsha256  98f8746a39f9a42da35df7046a15b56d0e2f4f76eefc352d67f1bf76e85360b4  src/3rdparty/chromium/third_party/bspatch/LICENSE\nsha256  b5730da9a26472a405b0b1c61d3d166714d9d654ab3282e54e4a01a5f66316c3  src/3rdparty/chromium/third_party/byte_buddy/LICENSE\nsha256  0154852797380b35195ecd829582f1efd00bfe244eab427a6bbf1e3f3dd57b1f  src/3rdparty/chromium/third_party/catapult/common/eslint/LICENSE\nsha256  65d4ed698fb5cbcd1d44c78bc6a02c5bf1da00df5395d2d6ac43bdafe6bc20dc  src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/third_party/rcssmin/bench/LICENSE.cssmin\nsha256  c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4  src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/third_party/rcssmin/LICENSE\nsha256  c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4  src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/third_party/rjsmin/LICENSE\nsha256  984fb04a16a9f1e0145ffd891125dc366a01cd921f58c9b0369be400c720790d  src/3rdparty/chromium/third_party/catapult/third_party/polymer/components/polymer/LICENSE.txt\nsha256  f77133324f35589f9f170473456321fe76aa35b750293cb8a475e26afa8f2bac  src/3rdparty/chromium/third_party/catapult/tracing/LICENSE\nsha256  17afb4516438c26ee15213c5a082206340d976a68472b8eab2499d7bce4debec  src/3rdparty/chromium/third_party/catapult/tracing/third_party/chai/LICENSE\nsha256  1920d2326ebbad34dcbd9681b4fe4926f113aa5e7dc9a92fceb456d859ee142e  src/3rdparty/chromium/third_party/catapult/tracing/third_party/d3/LICENSE\nsha256  5a2ed53cc5975569e9fa146c4245eaf53377dc1a88bdcb923da6487e53cba55e  src/3rdparty/chromium/third_party/catapult/tracing/third_party/devscripts/COPYING\nsha256  e8b80a53d0f95a3cf0f992f8cfc6b3911a7f32f47e0e4a8d4fd66582eeae9484  src/3rdparty/chromium/third_party/catapult/tracing/third_party/gl-matrix/LICENSE.md\nsha256  be3fd324066af702fad2a9ef05664ce9665495ebc1824fd7b28960802ec7891e  src/3rdparty/chromium/third_party/catapult/tracing/third_party/jpeg-js/LICENSE\nsha256  aae03c510d63d96de72d37ce5650fbbac63b322d09ac0ee0df50b8950329e840  src/3rdparty/chromium/third_party/catapult/tracing/third_party/jszip/LICENSE.markdown\nsha256  1f194a987fa1dc60e4bcf5e04e0fc03fff8f2ee587c52136adb2cebb397250b8  src/3rdparty/chromium/third_party/catapult/tracing/third_party/mocha/LICENSE\nsha256  a04665b3b2de56c66730c1f720f528175739e4104f79073614aa611da1e85539  src/3rdparty/chromium/third_party/catapult/tracing/third_party/pako/LICENSE\nsha256  ef5b39dfcafe08323262e3f51a3a9de649978a55ed8ef8eef3c451f2c1e78a53  src/3rdparty/chromium/third_party/ced/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/ced/src/LICENSE\nsha256  3d1d2669d0ba87069b5e202f106193c4eb0e140a2aead31dca9670a0581dd979  src/3rdparty/chromium/third_party/chaijs/LICENSE\nsha256  a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7  src/3rdparty/chromium/third_party/checkstyle/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/checkstyle/LICENSE.apache20\nsha256  c2d13ec3b431617beb314705c0f42d17ca579eed00032ed8a13dbcd23fc9bdd5  src/3rdparty/chromium/third_party/cld_3/LICENSE\nsha256  c2d13ec3b431617beb314705c0f42d17ca579eed00032ed8a13dbcd23fc9bdd5  src/3rdparty/chromium/third_party/cld_3/src/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/closure_compiler/compiler/COPYING\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/closure_compiler/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/crashpad/crashpad/LICENSE\nsha256  212846e0145aa50fb3a5aef254a370311a93acf6c1e792e47e0068d64c8c3885  src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/apple_cf/APPLE_LICENSE\nsha256  4b45cbe16d7b71b89ae6127e26e0d90a029198ca5e958ad8e3d0b8bbed364d8b  src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/cpp-httplib/cpp-httplib/LICENSE\nsha256  f40ee07401827b6ac9cf0aee1aaffb00e42a3f2c729f9c83f96a3daafef5d944  src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/getopt/LICENSE\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/glibc/COPYING.LIB\nsha256  e5881019d8766c1e88a5fe1dbca4ba40c78011d41fcb18f6e9f50df60182685b  src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/xnu/APPLE_LICENSE\nsha256  a1f30b77c01e0995fa32a00119e00749e8731ee8a3c4c3549bce74083c72b0b6  src/3rdparty/chromium/third_party/crc32c/src/LICENSE\nsha256  e9427cf6abc4eaeda0bcd094fca46af4067970079f426b65d5cbacb87bff6366  src/3rdparty/chromium/third_party/cros_system_api/LICENSE\nsha256  09e8a9bcec8067104652c168685ab0931e7868f9c8284b66f5ae6edae5f1130b  src/3rdparty/chromium/third_party/custom_tabs_client/LICENSE\nsha256  7a3cb0e5055874e67db9aa2d5fe26de23204fa994ffbad198901ffe9c812a717  src/3rdparty/chromium/third_party/d3/src/LICENSE\nsha256  b327887de263238deaa80c34cdd2ff3e0ba1d35db585ce14a37ce3e74ee389e9  src/3rdparty/chromium/third_party/dav1d/libdav1d/COPYING\nsha256  2da4494d2a8b5c742afbb905b10621e40129284c977ac138e3081ed0d9d83aed  src/3rdparty/chromium/third_party/dav1d/LICENSE\nsha256  b77e952e3feaebd807d27784988b19fb60f83f9fc9a0c03e6aedbbffd5d6f8ee  src/3rdparty/chromium/third_party/dawn/LICENSE\nsha256  43452b94e6aa0c2d076ad25b87f580c11571689d52f3aa1a1f7bdcab31a0bd15  src/3rdparty/chromium/third_party/decklink/LICENSE\nsha256  5a2ed53cc5975569e9fa146c4245eaf53377dc1a88bdcb923da6487e53cba55e  src/3rdparty/chromium/third_party/devscripts/COPYING\nsha256  a3f2fe2ac6b471aa80c737c5d283dd049bdc903a73835ee6d4d2cac02fdd53bf  src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/cm/LICENSE\nsha256  c6daa4e8737d15aa7140b4f7eb82b9d4829bd2fd27132c43e282203b9c67dfc4  src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/cm/LICENSE_python\nsha256  13110d66c514a7890c4b388a353bc08fa094fe13d5ed7f3a222cc0a0caa3fd17  src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/cm_modes/LICENSE\nsha256  9fea307fe830918e12b6822f943f4b59bd7715614efb68e834a141ca758bd5f2  src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/dagre_layout/LICENSE\nsha256  7cdb44aabddbdd78998119d68a39c87424119b663945c79891fc1b022301824c  src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/formatter_worker/acorn/LICENSE\nsha256  f734f7708439c275f3599e2df7de84cd9f360bd13620a30ab376af6c9deb213b  src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/sdk/wasm_source_map/LICENSES.deps\nsha256  b60e9b66bf4f9ab3aa5d1d20b18410a632fd624cf4ce3aa1eb839087caf35958  src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/fabricjs/LICENSE\nsha256  7ec9661a8afafab1eee3523d6f1a193eff76314a5ab10b4ce96aefd87621b0c3  src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lighthouse/LICENSE\nsha256  55efdea1a9fe503ed3cd89c2776d3d2131795defaebea421754b428333fbfba3  src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lit-html/LICENSE\nsha256  1a5ae5ab221af81b68f4f4c156c0d2e044851272c5e2e6c07d685946557878ea  src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lit-html/package/LICENSE\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/wasmparser/LICENSE\nsha256  7a209dd1b94cabdb5ea9c6f9164b9546ffa5daaa671e7767d49510db055f5c51  src/3rdparty/chromium/third_party/devtools-frontend/src/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/abbrev/LICENSE\nsha256  71f83c4c0621102a56d9853812777b85751bce7e9726f686f5b056c1f8a4b0e6  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/accepts/LICENSE\nsha256  cfa72b62b9ae173078823a3796b25c027a9071046a263beddf966df67018ce06  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/acorn-jsx/LICENSE\nsha256  7cdb44aabddbdd78998119d68a39c87424119b663945c79891fc1b022301824c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/acorn/LICENSE\nsha256  7cdb44aabddbdd78998119d68a39c87424119b663945c79891fc1b022301824c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/acorn-walk/LICENSE\nsha256  e85e131fa4ed25538ff1f4962ced1fb6f68b079bd9164a790597a0f30b8fd030  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ajv/LICENSE\nsha256  ea97081f183590d87376f5fe73b7150c79863a73167f47ed87c41e191f89eb0b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/amdefine/LICENSE\nsha256  10e7818a114cf8b702a2263ad424b3cd9d34254df6039e47bb3f412000b0ae00  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-colors/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-escapes/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-regex/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-styles/license\nsha256  0798f37cff4a3f438c071316e41f94ffe110116a313ab0fc4f8caa07218f1f0f  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ansi-wrap/LICENSE\nsha256  5a3b0007c4203f10fe11b3fe8747253eb994f135e10b73e1f88ada941af09c6e  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/anymatch/LICENSE\nsha256  0b61ac8491c66669491fdb328200203822b91d2a0461f5cd898fe0944ea97e41  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/append-transform/license\nsha256  c8442419dc614089ea022b3da6bfc089b41a58fb7b9030d1e651f2f36189dce2  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/argparse/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/array-find-index/license\nsha256  f4a48aa8354a257785aa534bab2ac5ff2c2a98cd59cdf4a637bb68ee185683f7  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/arr-diff/LICENSE\nsha256  3672fb6ef1c214578dfee689643516c2685f61ab08d130517ca8ea24f383a840  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/arr-union/LICENSE\nsha256  e80373b1ed0f33cecc47173b4b0c6afe0d0318b32dbd84116a1a957e3f7f43a8  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/asap/LICENSE.md\nsha256  6239c6144c31e58cf925c34483606969c555574d64ffa96518ab5d7f45c75d43  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/assert/LICENSE\nsha256  0798f37cff4a3f438c071316e41f94ffe110116a313ab0fc4f8caa07218f1f0f  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/assign-symbols/LICENSE\nsha256  69dee148a2cc470554dfa7142e830662062394d0fe67cddd379aba90dc60d6b3  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/astral-regex/license\nsha256  a374b737c41b30b1ec04c5fcc17d1b853f008f217cc43a9dbea441abd9afde70  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ast-types/LICENSE\nsha256  d9fed24f132985934fca621c4dc1dfb53e03377a24d0568d424383d7eaa9c0ac  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/async/LICENSE\nsha256  e5a57cdd72e279910183799153134d0e749a5664fc459c8eacbecf72532b7db3  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/async-limiter/LICENSE\nsha256  117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/code-frame/LICENSE\nsha256  117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/generator/LICENSE\nsha256  6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/generator/node_modules/source-map/LICENSE\nsha256  4e32449bd377d3dbced215dfd66dc234994c28e561aef73dbd29d6b5a1a00484  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-function-name/LICENSE\nsha256  517913953e6a69da35bccb95c2d801f70d73e8f267cdad1a1615bfe8974ad3ad  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-get-function-arity/LICENSE\nsha256  117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/helper-split-export-declaration/LICENSE\nsha256  117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/highlight/LICENSE\nsha256  2e97627cb278aa7556fb9e8817368302301a595b6c7582512b8d74c57b773652  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/parser/LICENSE\nsha256  117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/template/LICENSE\nsha256  117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/traverse/LICENSE\nsha256  117da2af0d4ce0fe1c8e19b5cff9dcd806adf973d328d27b11d4448c4ff24f76  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@babel/types/LICENSE\nsha256  a1bd5deadb6a06dd74efa852c1b8b23f63b67f2214fbe9c8bd591da51da69268  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/balanced-match/LICENSE.md\nsha256  f3eca6ff762533fa5a77caf954a143e48afa204668cf97dce758c45a9e006be3  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/base64-arraybuffer/LICENSE-MIT\nsha256  de6059eadd0c1327f30a22663392e57d36b97b0ac9bb48f4875c8008ba823c30  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/base64id/LICENSE\nsha256  5b37224c080cdcc97c871ada971c224e9926370fe74f11b539aa1cf9f3b1aca1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/base64-js/LICENSE\nsha256  85fe65eefab89e2a683232b96e6f689279821a0bd3b351e9ab6a6ebd19dea567  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/binary-extensions/license\nsha256  150d7707d4532d57bdb5718637ff62fff1f075921c5ffaa084df27f900bfea76  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/.bin/license-checker\nsha256  7d3e0d8d5604632b94ff9aea3001153c506566cd1c6c7bb37000acdb1fb37417  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/blob/LICENSE\nsha256  87092fe7ffd1e92eba5d1dd39b73a73fdb4fdd4df3474beacc3d9f6b08ece82c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/bluebird/LICENSE\nsha256  23d466b1b134b415b66fa50c6526b4cf3e7b9258554da88d3abb371721e7ce68  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/body-parser/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/body-parser/node_modules/debug/LICENSE\nsha256  6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/body-parser/node_modules/ms/license.md\nsha256  68f12f6e2c33688699249c01d8f9623c534da20aa71989c57b061b7bc1676d14  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/brace-expansion/LICENSE\nsha256  e70ff771504ba41f2be55de812a017ff46433d7a250c862e38fc419159e44500  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/braces/LICENSE\nsha256  82ba430b068b75a41438568e1e4ed1f96e02699c9b51735154af03e9b59d6b0d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-aes/LICENSE\nsha256  dc09aa476634db0dbae1a296f099d5bd39e27c96b876d4d20b236fa565002bb6  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-cipher/LICENSE\nsha256  e54f1a2edadb1d8d3a482bcd0712acad2947337ae35e40ca34b22eb77940863f  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-des/license\nsha256  672eb2c2ad92bee7ef6c894f1431a66d7e8fdd7965cfdca5aa4fc206951a7c9c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-rsa/LICENSE\nsha256  a0e06d86a5a17341fa6134ee30ef18d73251cf32b8a577cdfd6aad6ad34af61d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-sign/LICENSE\nsha256  ddd770379e07bf0574dfaa4485be80a23b3248b36d09f33ec79276c09b829daf  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browserify-zlib/LICENSE\nsha256  0e91be39cb38da2972a6e0649dcd4e8a49595996b3ab4b04e72ef9ea71de9079  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browser-resolve/LICENSE\nsha256  fd595a25dd3c90492a8cc3b888aa9ae47630173181efed17f71b4c689d99d0ec  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/browser-stdout/LICENSE\nsha256  14275f5c8139d02054c5259d52a88ccbba662a86af18c30f071c8d082dc6004c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/buffer-from/LICENSE\nsha256  06bafa45fdad2579ba0e43b0c9b2c6290287c99c4203c300254a462b38a307f6  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/buffer/LICENSE\nsha256  51ad9defd71911dbe413daf277bcb2e1077743f5ee5ae48d0a3b90a5b7486f55  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/buffer-xor/LICENSE\nsha256  f057f36739d53d228a746de4440c1e0c644ecde06d6beab45337d39c9d12a393  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/builtin-status-codes/license\nsha256  e3b44af066615de2ea48d18d852d0762f18c0b2efcea714fa48a6f729d405b85  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/bytes/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/callsites/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/camelcase-keys/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/camelcase/license\nsha256  b181da80336ff9dd1043fc8be1a764d7382363433319aa872e4d2cb5ce2a3066  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chai/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chalk/license\nsha256  7df1d6cf5b4112cbe277a84269e02ae631603a9a3a21b8328a34c30b8c3dd1ab  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chardet/LICENSE\nsha256  e5aee0714b6ecc416454b968d1017570ef609f20d8722ab84b07acd550b78198  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/check-error/LICENSE\nsha256  db9ba183d4cbfbaf6c27db2effddbb84b46340c33ed32a066bc0b144a3ea1298  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chokidar/LICENSE\nsha256  2c46f1325bd3822a33c1e2c1e49c18d13127ac00f9c8b3b79196c7a126f73cd9  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/chokidar/node_modules/glob-parent/LICENSE\nsha256  cf93ad78cfd5f3523248675aeb2a46e003367596883d4fa26a0c38d553ab0f61  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cipher-base/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cli-cursor/license\nsha256  2dc0465729366c3a7890dfa9e972a1ba7048a26c02116fb8b419a6a1ac110149  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cliui/LICENSE.txt\nsha256  33fa5470b2195e410b075a32516b6ad27784b8a8ff74ae90cfd60c14b76e6644  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cli-width/LICENSE\nsha256  3fb0857ef0133928cf72c88dfc464e931486e88778961eedec25585e2321507f  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/clone/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/code-point-at/license\nsha256  693866fc419c6f61c8570438ec00659d156ec2b4d4a4d04091711f5f11a365d4  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/color-convert/LICENSE\nsha256  7357445bac398c76c0aef75a587009fe406d40de6a79789eb5b7ecbbad317ef2  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/color-name/LICENSE\nsha256  77ffe84006509949525fd57df06f4a6a80ad862c5314b66ab5bb6ac4cee6280b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/colors/LICENSE\nsha256  1fa6ee8bb95a81ae3d73a5bd074a3ac380ffec13697051063ca1a601921b91db  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/combine-source-map/LICENSE\nsha256  1fa6ee8bb95a81ae3d73a5bd074a3ac380ffec13697051063ca1a601921b91db  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/combine-source-map/node_modules/convert-source-map/LICENSE\nsha256  6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/combine-source-map/node_modules/source-map/LICENSE\nsha256  04512a63dce4d2d506ad612dc0bd7681ccf6e3655f7b6eaef7dfac8323d1ec0b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/commander/LICENSE\nsha256  d682394bef4a34d279b0237feecf145abadd6ec1e41cbb094592b8cc9fc2f34b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/compare-versions/LICENSE\nsha256  0f0b408b8b871d983e767528c6dc51e0ad7efaa022890c449fe2b2e1ee24dbb7  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/component-emitter/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-map/LICENSE\nsha256  96b29c9aaa611a05349b362d48c2ffce0966fe408401a2d1a157be312c035b5f  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-stream/LICENSE\nsha256  ec62dc96da0099b87f4511736c87309335527fb7031639493e06c95728dc8c54  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-stream/node_modules/readable-stream/LICENSE\nsha256  c7cc929b57080f4b9d0c6cf57669f0463fc5b39906344dfc8d3bc43426b30eac  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-stream/node_modules/safe-buffer/LICENSE\nsha256  11f2aafb37d06b3ee5bdaf06e9811141d0da05263c316f3d627f45c20d43261b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/concat-stream/node_modules/string_decoder/LICENSE\nsha256  9913ff70f23424d49fda2b05902cfb72f17ae1e48aaf898c349a284289a74751  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/connect/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/connect/node_modules/debug/LICENSE\nsha256  6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/connect/node_modules/ms/license.md\nsha256  257aed98914108e91a337912727b6a802eef218248507f74b76faffaff517a38  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/content-type/LICENSE\nsha256  1fa6ee8bb95a81ae3d73a5bd074a3ac380ffec13697051063ca1a601921b91db  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/convert-source-map/LICENSE\nsha256  c7cc929b57080f4b9d0c6cf57669f0463fc5b39906344dfc8d3bc43426b30eac  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/convert-source-map/node_modules/safe-buffer/LICENSE\nsha256  c02110eedc16c7114f1a9bdc026c65626ce1d9c7e27fd51a8e0feee8a48a6858  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cookie/LICENSE\nsha256  722e1193901ad1ed4460753dded483d68ca2ad0528c67f86f76abc46b9aa25f5  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/core-js/LICENSE\nsha256  33b734d60042d0fe0c92dd1fc1e874193a1c899ec3e276a2eb935d2d0bf5b710  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/core-util-is/LICENSE\nsha256  d4ad87ad0bb7d57c17ae73b46e064243b972edc3036c38c222172c9600a20b56  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/create-ecdh/LICENSE\nsha256  cf93ad78cfd5f3523248675aeb2a46e003367596883d4fa26a0c38d553ab0f61  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/create-hash/LICENSE\nsha256  cf93ad78cfd5f3523248675aeb2a46e003367596883d4fa26a0c38d553ab0f61  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/create-hmac/LICENSE\nsha256  aaa78451b6fecd1b9c4594c796c133c0e90cad100372ff8bc6de615e9ef9adf1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/cross-spawn/LICENSE\nsha256  6134c69bc22c8289252e70de3af20bd67071233459055be74d83acfcc4865e7e  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/crypto-browserify/LICENSE\nsha256  0b61ac8491c66669491fdb328200203822b91d2a0461f5cd898fe0944ea97e41  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/currently-unhandled/license\nsha256  53ecc31e1632c07980cb0c97dcaf3d1d20323d21194b92150987a4fecf517b3c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/custom-event/LICENSE\nsha256  9660914267128b5f96a102bd7f6268c249110a39cb7c4bb7f536d856445d739c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/date-format/LICENSE\nsha256  e38ad5868b1e32ab44c63da6e58b8b58604d8d1dd90c40d171f2feaa756b088b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/dateformat/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/debug/LICENSE\nsha256  5f9e03a50e10f262f7bd356fe323b12f461f14dae6762611285a0d7479340ae7  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/debuglog/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/decamelize/license\nsha256  e5aee0714b6ecc416454b968d1017570ef609f20d8722ab84b07acd550b78198  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/deep-eql/LICENSE\nsha256  f2042f3634c4136d06b5139c9c6aefb81a3a462b514548bc1845953233dfba98  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/deep-is/LICENSE\nsha256  d7c67af00ef4ecd9bee06e010bb1fcd8d5f0ecb02fa1b73fe3ef030a88800d4b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/default-require-extensions/license\nsha256  b568428993e6acff80c1214dcc4f7195241772d5b3d23d92ee6bf5406a102896  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/defaults/LICENSE\nsha256  00d402c2bbe7c67369bd01ce2c16b8ed46ccc949a1ee2d6bb8f9606afa8c7434  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/define-properties/LICENSE\nsha256  bd47ce7b88c7759630d1e2b9fcfa170a0f1fde522be09e13fb1581a79d090400  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/depd/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/dezalgo/LICENSE\nsha256  db6109f994692150ed82cd904bb053c73b97b23678bf52047f747bfec11e1934  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/diffie-hellman/LICENSE\nsha256  152f0fb43e953fcf5c56c5bfa4c834bb96b1603e4026319c613dd3e734f305cf  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/diff/LICENSE\nsha256  58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/diff-match-patch/LICENSE\nsha256  545278991ee5f1fb4372f913ec44837cff9395175140f8f21118074330a659cb  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/di/LICENSE\nsha256  5c272e206669b79ee20fa89fa8fa888d5b56186f16c55a5614753ad3412e2ae9  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE.closure-compiler\nsha256  0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/doctrine/LICENSE.esprima\nsha256  8ffaa1b117e1c280023c8ef997a84a461133b972c8bade4579050e3e41835902  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/domain-browser/LICENSE.md\nsha256  965ef284f7f4c176842ec2e87fa13e79feed777d56d7a21a5a3b38f1bb6dc288  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ee-first/LICENSE\nsha256  483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/emoji-regex/LICENSE-MIT.txt\nsha256  7585ea7bba616ccbbe43cb54ecb67956688c3c5641bb84f3099a652a73193afe  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/encodeurl/LICENSE\nsha256  3fe8d55a98dbf260eace67c00cf9bc53edb46234e840098a0b93df3096b97fb6  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/end-of-stream/LICENSE\nsha256  bb996a5665c8e18041251e833e52b590f0da5050c1878aa3e3a47f71bb16fa6d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/node_modules/debug/LICENSE\nsha256  6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io-client/node_modules/ms/license.md\nsha256  8e0349070612cb59fc604588974e193d8363f0a08752caf31d3f270a609d346a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io/node_modules/debug/LICENSE\nsha256  6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io/node_modules/ms/license.md\nsha256  2a190271977c2ad47c85a9e08cc05d078fe9293643061d466d2ae89ce8e5c2f1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/engine.io-parser/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ent/LICENSE\nsha256  92b07a2e5b0e051d37dde85042c736d6d551cfcbc0983f39d7ef903b3986bbc1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/error-ex/LICENSE\nsha256  c2c31e096c312163e9a7a908a5209f335eb4c3381d6c404dd1e1b91fe65707fc  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/es6-object-assign/LICENSE\nsha256  da852e222c72bc04a0a9046aac35f2e5d33775a8ea9f1d8f59b1cfd195ef9bb0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/es6-promise/LICENSE\nsha256  00d402c2bbe7c67369bd01ce2c16b8ed46ccc949a1ee2d6bb8f9606afa8c7434  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/es-abstract/LICENSE\nsha256  255aa557a1f55224ce522f311629c0bf20854740a67955cefd798fbd1d3d1ded  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/escape-html/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/escape-string-regexp/license\nsha256  0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/escodegen/LICENSE.BSD\nsha256  94bcb9959136723aa4fb36e1a6c4d5c662a2369978cfae344dabfb83ae619e79  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/escodegen/node_modules/esprima/LICENSE.BSD\nsha256  db83f2ede67f36cfab1ea0721ea2ee97515863e9a65346881f305e430451cc91  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint/LICENSE\nsha256  b67ae8fe5f32d0e6164655de53075cba04bb69c23e7d11efcfed6a0fa265ef64  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-mocha/LICENSE\nsha256  541c415066b6139f0fb6ad55f633abbc62f0ba6b54543f1ff00c762e76a90239  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-plugin-rulesdir/LICENSE.md\nsha256  d3a724e2ed749f172ff70b62a1d0631b7d4b0ea273782365a3464d4e2d6b6dbd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-scope/LICENSE\nsha256  fcf6eabf68ca96988a6b506b4fdc6cc32535d80eb2e11c79724af5ac6f50262b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-utils/LICENSE\nsha256  d8bf34ff6d190640a01e7704ad78253fc181bc128949d71273fbbaa12f33c0b4  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eslint-visitor-keys/LICENSE\nsha256  6273faa0d14a54972c0341a724010eb8cd928ee486745a9eea8cf80680ba5098  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/espree/LICENSE\nsha256  94bcb9959136723aa4fb36e1a6c4d5c662a2369978cfae344dabfb83ae619e79  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/esprima/LICENSE.BSD\nsha256  ac68116ae73740de4190892f334992e449a124600924ec761e64319d3aac9e6e  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/esquery/license.txt\nsha256  c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/es-to-primitive/LICENSE\nsha256  0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/estraverse/LICENSE.BSD\nsha256  0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/esutils/LICENSE.BSD\nsha256  3aecc12b1cb28832b5f65ab64291de96568c3f236a74d646281b4491f7bcadbf  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/eventemitter3/LICENSE\nsha256  631987b7616a325a5b97566c232418481ddf7dbb5ecadefb991e791876cc2599  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/events/LICENSE\nsha256  cf93ad78cfd5f3523248675aeb2a46e003367596883d4fa26a0c38d553ab0f61  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/evp_bytestokey/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/execa/license\nsha256  97af7428f93afbab9bf79cd09254da1357161794f4255eb1b4599f04dd2d2e7c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extend/LICENSE\nsha256  9580cc528a1c38d1560a9d36e34404fe1ea9d8e6f44c596dac2a3104ef63cdab  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extend-shallow/LICENSE\nsha256  e33b7bc13a0e5ea9ed6718e12e99a5b0b60276162f0195aa7f342397f4b0155d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/external-editor/LICENSE\nsha256  77b2de947c65f3062fb347118ca198ca50898ead84a8509d8153fa65741f029b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extract-zip/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extract-zip/node_modules/debug/LICENSE\nsha256  6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/extract-zip/node_modules/ms/license.md\nsha256  7bf9b2de73a6b356761c948d0e9eeb4be6c1270bd04c79cd489c1e400ffdfc1a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fast-deep-equal/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fast-json-stable-stringify/LICENSE\nsha256  942a98cb8846a6354266193f173c1354615827fbb7d67f68399599dff12c4d6a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fast-levenshtein/LICENSE.md\nsha256  176d95320d565cb034d8323797b6cd6160238f625453687f98aad2085c46c3b3  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fd-slicer/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/figures/license\nsha256  c8c8324aff32c44f9e501aac5b3b97540c26af7d6dd6af8bce5e34300596e27d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/file-entry-cache/LICENSE\nsha256  99513010b6a19894e01864cba86bf98291bef8251a302d90ab1a572d91ebacc8  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fileset/LICENSE-MIT\nsha256  35bdd8a44339719441900fb50fbefc5e2dca1ca662cbaed7a687de842c8b70f2  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fill-range/LICENSE\nsha256  24973d5320410e565ec92f18f73f12af7d97c634d414ba170d119fe3f98904c8  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/finalhandler/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/finalhandler/node_modules/debug/LICENSE\nsha256  6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/finalhandler/node_modules/ms/license.md\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/find-up/license\nsha256  c8c8324aff32c44f9e501aac5b3b97540c26af7d6dd6af8bce5e34300596e27d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/flat-cache/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/flat-cache/node_modules/rimraf/LICENSE\nsha256  95a61f61553614db5421a2cefb17c22ff6b2b4b2206f5bc8913d04f72a22b033  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/flat/LICENSE\nsha256  5097efeab30293dd7e26d6960b6b94f1aeca958d22f1eca3535c482a891e95a9  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/flatted/LICENSE\nsha256  bfa8a54bb952ccda79f0f1889721d108f5b605babbb2b8a3705ffb52f4132eb7  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/follow-redirects/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/follow-redirects/node_modules/debug/LICENSE\nsha256  99de4c30f4643c00d4895d9c6ade0af4ec43d301449c191f5fbe41b53bb6a13a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fsevents/LICENSE\nsha256  1e76029602ae9b21cc4e612db2496d92febed882ba13ba745f8b3309e85f9d39  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fs-extra/LICENSE\nsha256  8465b04b67f473341171b5c9c8b2c741a4a395b3f6ed58339b3a4f4db3db7472  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/fs.realpath/LICENSE\nsha256  e67aed7df22dc8031e4fcf5338fe91cb33e3817e5c58a99a2a2802eea9069791  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/functional-red-black-tree/LICENSE\nsha256  773e131a7684726005a7e4688a80b4620033bc08499bc1404dd1a1eb3bca725e  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/function-bind/LICENSE\nsha256  902dbb4154679fb2b8d7c33878183f45b268d01eae5e5033dddaa8852d45f213  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/get-caller-file/LICENSE.md\nsha256  e5aee0714b6ecc416454b968d1017570ef609f20d8722ab84b07acd550b78198  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/get-func-name/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/get-stream/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/globals/license\nsha256  6236fa0b88a4a0cce3dda0367979491b2052b3c8d6b1c10b3668de083e86a7f0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/glob/LICENSE\nsha256  a2a19c04f527f7582fb2e58887f0a90f403732fc6accd7322287f0f5949b489e  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/glob-parent/LICENSE\nsha256  3672fb6ef1c214578dfee689643516c2685f61ab08d130517ca8ea24f383a840  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/glob-parent/node_modules/is-glob/LICENSE\nsha256  2fc5460f1526810979054ecd18cd01349b57f38ea56d1e920afdea34d104540c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/graceful-fs/LICENSE\nsha256  8a48a335d7dcc06e3da2bea89220cfe978394b1bc84a3e628e60bc4864917915  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/handlebars/LICENSE\nsha256  dc1fcc41f783463ed272ada875a7d3d1baf6c6279e5efada2c4ef2ca72db39e1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/has-binary2/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/has-flag/license\nsha256  898f204abbbbde58c6230a31842c59aeb8040fbcffa924db28e6d0b1d7631a3a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/hash-base/LICENSE\nsha256  4fe5fd7b3318def0b74f8bf8c9276403f01da628fa8888822661519d80f237d3  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/has/LICENSE-MIT\nsha256  206c1adcf206dc0031b11232f5b054ec5f1662407ab1ca415247921cab2068ab  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/has-symbols/LICENSE\nsha256  483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/he/LICENSE-MIT.txt\nsha256  c1476ec53119cd4c8370f91f5152ac76312a29b4fae2d49b5e0e0970fe0fa5ee  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/hosted-git-info/LICENSE\nsha256  dcb94ff9b1e037a847bc20589dc81a1066d041fd4c16deb18b0fa968c66cf395  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/http-errors/LICENSE\nsha256  5ffe28e7ade7d8f10d85d5337a73fd793dac5c462fb9a28fbf8c5046c7fbca3b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/http-errors/node_modules/inherits/LICENSE\nsha256  589850dfc0a1d39a97c592d618d5772f84aec2b11c6898e020acb985299f3bab  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/http-proxy/LICENSE\nsha256  ff151c00207c908581639851dd8504ce4255be0650b2b236edec2aa90342b0cd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/https-browserify/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/https-proxy-agent/node_modules/debug/LICENSE\nsha256  ac779f7314c74f232ef847ea86e714abe25cf6eeb5cc97b69451b74e2af6492d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/iconv-lite/LICENSE\nsha256  18d45466ba3253deae04667e267a91ea8de8548f18c1125264d1c9db28194cc1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ieee754/LICENSE\nsha256  9c94db23dc4b1e9aaee5d195668b916afc71efed54af226b66cf0ccc4389c1c0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ignore/LICENSE-MIT\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/import-fresh/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/indent-string/license\nsha256  05dc4d785ac3a488676d3ed10e901b75ad89dafcc63f8e66610fd4a39cc5c7e8  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inflight/LICENSE\nsha256  5ffe28e7ade7d8f10d85d5337a73fd793dac5c462fb9a28fbf8c5046c7fbca3b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inherits/LICENSE\nsha256  1fa6ee8bb95a81ae3d73a5bd074a3ac380ffec13697051063ca1a601921b91db  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inline-source-map/LICENSE\nsha256  6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inline-source-map/node_modules/source-map/LICENSE\nsha256  e6c3f1bc47f97cdeef953f6c109b6392be0d059ae94659faf550e61b7a75ebc7  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inquirer/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/ansi-regex/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/inquirer/node_modules/strip-ansi/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/invert-kv/license\nsha256  dc0fe5a22d9336f345ee984f9bf56f11f22877a3aa5fd16a1db9a8ca0e23a5d1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-arguments/LICENSE\nsha256  92b07a2e5b0e051d37dde85042c736d6d551cfcbc0983f39d7ef903b3986bbc1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-arrayish/LICENSE\nsha256  628a0b082ba17df4f4bcb7946d41988891d2b410b25927b995c2f632a0829676  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/isbinaryfile/LICENSE.txt\nsha256  85fe65eefab89e2a683232b96e6f689279821a0bd3b351e9ab6a6ebd19dea567  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-binary-path/license\nsha256  c7cc929b57080f4b9d0c6cf57669f0463fc5b39906344dfc8d3bc43426b30eac  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-buffer/LICENSE\nsha256  c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-callable/LICENSE\nsha256  c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-date-object/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/isexe/LICENSE\nsha256  4922620a5741e9d1bb43dde132021a982ae7c545eed1c6e00b555d6fe978005f  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-extendable/LICENSE\nsha256  73b5283588baa142c5baaef5f56d3e8fdea7a30b214e8c5737e87640f882453a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-extglob/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-finite/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-fullwidth-code-point/license\nsha256  dc0fe5a22d9336f345ee984f9bf56f11f22877a3aa5fd16a1db9a8ca0e23a5d1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-generator-function/LICENSE\nsha256  4cd903859549d4b20b571041f96dfae1136ed079c476126268f9d7cc1b611150  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-glob/LICENSE\nsha256  dc0fe5a22d9336f345ee984f9bf56f11f22877a3aa5fd16a1db9a8ca0e23a5d1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-nan/LICENSE\nsha256  35bdd8a44339719441900fb50fbefc5e2dca1ca662cbaed7a687de842c8b70f2  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-number/LICENSE\nsha256  0ead7e8cd8b0bc66a981ee69acaf1297ffa838cfce1b156a039bb24f997c0a27  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/isobject/LICENSE\nsha256  4cd903859549d4b20b571041f96dfae1136ed079c476126268f9d7cc1b611150  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-plain-object/LICENSE\nsha256  44191656d296391e0ec97e32f5385f0d02b6f2992694082d22ea04ba0f66f9e4  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-promise/LICENSE\nsha256  dc0fe5a22d9336f345ee984f9bf56f11f22877a3aa5fd16a1db9a8ca0e23a5d1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-regex/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-stream/license\nsha256  c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-symbol/LICENSE\nsha256  b661867c1d66a1b71ee3a6109159874334cd5c182a80d1bcc7353b5a4c6823c6  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-api/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-diff/node_modules/minimist/LICENSE\nsha256  e09f9b52c6ce5c17ba8103cd0cbf446c33b5448b0c1d01d711b36a1f15a501ba  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-coverage/LICENSE\nsha256  e09f9b52c6ce5c17ba8103cd0cbf446c33b5448b0c1d01d711b36a1f15a501ba  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-hook/LICENSE\nsha256  e09f9b52c6ce5c17ba8103cd0cbf446c33b5448b0c1d01d711b36a1f15a501ba  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-instrument/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-instrument/node_modules/semver/LICENSE\nsha256  e09f9b52c6ce5c17ba8103cd0cbf446c33b5448b0c1d01d711b36a1f15a501ba  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-report/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-report/node_modules/supports-color/license\nsha256  b661867c1d66a1b71ee3a6109159874334cd5c182a80d1bcc7353b5a4c6823c6  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-source-maps/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-lib-source-maps/node_modules/rimraf/LICENSE\nsha256  d38a14ec66572a5588bba501f05eef0874e3ce929f0ddcb749c7557f4fdcb905  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/LICENSE\nsha256  4d3083ec594b158fd6adfdc6c9423ffe0746d2d93cebfb98f1a35b69da78051e  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/async/LICENSE\nsha256  0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/escodegen/LICENSE.BSD\nsha256  c9d85a24226fa4dd8c0756961de362cee34f6e9b1d19938bd480239950ad9a93  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/escodegen/LICENSE.source-map\nsha256  4193a099a2c3ba864dd6b94f37e2fd80757d50796999d65adbca6a8c0f3a8e0a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/esprima/LICENSE.BSD\nsha256  0e74697a68cebdcd61502c30fe80ab7f9e341d995dcd452023654d57133534b1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/estraverse/LICENSE.BSD\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/glob/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/has-flag/license\nsha256  6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/source-map/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul/node_modules/supports-color/license\nsha256  e09f9b52c6ce5c17ba8103cd0cbf446c33b5448b0c1d01d711b36a1f15a501ba  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/istanbul-reports/LICENSE\nsha256  f481fe414a74f72c6b37890ad65e1d0b7c3f51be175b6d3e992fdcdb66882bd4  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/is-utf8/LICENSE\nsha256  483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/jsesc/LICENSE-MIT.txt\nsha256  a9801fb52ba22ef808682a094da8a7a480584b7ed0dfd0d888ab543616335031  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/jsonfile/LICENSE\nsha256  6cf2891dd0e66460f7d2ed83e1e3fe4b4b4c1a8c1f1f96c222a3466ad12ff197  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/json-parse-better-errors/LICENSE.md\nsha256  7bf9b2de73a6b356761c948d0e9eeb4be6c1270bd04c79cd489c1e400ffdfc1a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/json-schema-traverse/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/json-stable-stringify-without-jsonify/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/json-stringify-safe/LICENSE\nsha256  2213d91c606205c71eb051a199478cdc2adde945893404d7f1421436dd6d5cc1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/js-tokens/LICENSE\nsha256  a07bc24468b9654ce76a547d47a2db282d07733b715db4c73a98bd63961f9550  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/js-yaml/LICENSE\nsha256  94bcb9959136723aa4fb36e1a6c4d5c662a2369978cfae344dabfb83ae619e79  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/js-yaml/node_modules/esprima/LICENSE.BSD\nsha256  e3d4ed2aa50e7583730b1531034331ba9093c8bef7414234c7c9306db3858913  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-chai/LICENSE\nsha256  296b9a3c5e4eb7b79a6f1dca9a27ee31e48fe5c9d48a32ec31ac924b65ff287c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-chrome-launcher/LICENSE\nsha256  be13520ed43fa818f7bbe9d3a2beccaf1931421d818d35b42bdae3c127241ed3  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage-istanbul-instrumenter/LICENSE\nsha256  55c6f6d52a0b60393333dd4e9d385957c7e784517daa9cfbf5b09ec812811eec  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage-istanbul-reporter/LICENSE\nsha256  296b9a3c5e4eb7b79a6f1dca9a27ee31e48fe5c9d48a32ec31ac924b65ff287c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/LICENSE\nsha256  d38a14ec66572a5588bba501f05eef0874e3ce929f0ddcb749c7557f4fdcb905  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/LICENSE-istanbul\nsha256  6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-coverage/node_modules/source-map/LICENSE\nsha256  6e4e577107740b24ebd73cb813be506861d706129e502ca7160683a5cea4c129  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma/LICENSE\nsha256  296b9a3c5e4eb7b79a6f1dca9a27ee31e48fe5c9d48a32ec31ac924b65ff287c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-mocha/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-mocha/node_modules/minimist/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma/node_modules/rimraf/LICENSE\nsha256  2b3adc1e55676b9443f76bdb17e42371de98a4be6abd3ae6e5f3590f6f3e4f6f  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-sourcemap-loader/LICENSE\nsha256  3c50a3d2df1468f5e7b723d4c931c1c7ba6775740aa1ef9fa49586ddb7b168fd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/LICENSE\nsha256  7cdb44aabddbdd78998119d68a39c87424119b663945c79891fc1b022301824c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/acorn/LICENSE\nsha256  d9fed24f132985934fca621c4dc1dfb53e03377a24d0568d424383d7eaa9c0ac  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/async/LICENSE\nsha256  6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/source-map/LICENSE\nsha256  162413c61e0982abe89a06bf7a02ec760dc49a7364d838bd9f01daebb5b95954  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/tmp/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/karma-typescript/node_modules/tmp/node_modules/rimraf/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lcid/license\nsha256  b9eb082c39fe245e38793699074c394c43a722c51fce031c3c165cb92a31035c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/levn/LICENSE\nsha256  150d7707d4532d57bdb5718637ff62fff1f075921c5ffaa084df27f900bfea76  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/bin/license-checker\nsha256  455629980585dfdadbdcbaf846659b65da3dd092ac9bfd10b07717a0e2f84ef5  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/lib/license-files.js\nsha256  37932d5f93a7f9e762346358ae427e703d69fdaae6e7cd67158b35eea91c9eec  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/lib/license.js\nsha256  adeb5a7f7d027ec14c3698be7a0f248978516ab39ccec4fb70689ba4753cdd67  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/node_modules/debug/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/license-checker/node_modules/nopt/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/load-json-file/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/load-json-file/node_modules/pify/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/load-json-file/node_modules/strip-bom/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/locate-path/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/locate-path/node_modules/path-exists/license\nsha256  d778ae0088806b771424967d88efb68f3adb3705c31c3b7c0a052fe2eebd5268  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lodash-deep/LICENSE\nsha256  f71e8ed126b46346494aad5486874cd8f0aafe95092ed67d2e3cb6110f939abc  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lodash/LICENSE\nsha256  90df9e2220f682e1f77e24b1c0f72d2de18b818096c957a65698e74c41a4826f  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lodash.memoize/LICENSE.txt\nsha256  66da8b277e527c270de6abc57727c58032267d161a81dbac02c3eed45fd13366  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/log4js/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/log-symbols/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/loud-rejection/license\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/lru-cache/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/make-dir/license\nsha256  3d3fba5375126ff321d3a51938899d744b1189896618e0f2d088d9e1ebf2822a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/map-age-cleaner/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/map-obj/license\nsha256  898f204abbbbde58c6230a31842c59aeb8040fbcffa924db28e6d0b1d7631a3a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/md5.js/LICENSE\nsha256  74d8054d56d522bdaa340d3d71130cb204997d523a5292c85ac1264dd77c8d06  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/media-typer/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mem/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mem/node_modules/mimic-fn/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/meow/license\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/meow/node_modules/minimist/LICENSE\nsha256  965ef284f7f4c176842ec2e87fa13e79feed777d56d7a21a5a3b38f1bb6dc288  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mime-db/LICENSE\nsha256  8f2658c03422c408b2b2ce4d151decc3b1a6fd3d86e5ca9433777bccdcdf75a2  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mime/LICENSE\nsha256  71f83c4c0621102a56d9853812777b85751bce7e9726f686f5b056c1f8a4b0e6  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mime-types/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mimic-fn/license\nsha256  136fee1129ea96ce18b41c26a72f5d4ba196ee41bfd73b55d0b8509cdda148e9  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/minimalistic-assert/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/minimatch/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/minimist/LICENSE\nsha256  05991c2e8f070b69ec5b656c2c12fd07cd0153dd157d39b050b82af59b319a01  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mkdirp/LICENSE\nsha256  bd5663836feb58ffb7d0e6b9e62010f4c3399f2bb0a4cf6514a15d597bbdd577  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/LICENSE\nsha256  94e1923e52409cfd50e97988d9772c0de15f65700097e3227fec367a39e82b94  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/ansi-colors/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/debug/LICENSE\nsha256  152f0fb43e953fcf5c56c5bfa4c834bb96b1603e4026319c613dd3e734f305cf  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/diff/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/find-up/license\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/glob/LICENSE\nsha256  6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/ms/license.md\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mocha/node_modules/supports-color/license\nsha256  6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ms/license.md\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/mute-stream/LICENSE\nsha256  553d4d20029a24e315b428a1a54a9e109eaa340f2e958a4f50a92362c2c4070b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/negotiator/LICENSE\nsha256  811238ba7d85f6fe6b820703a32f92705bcf77bc352ddc3476783491c64a129a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/neo-async/LICENSE\nsha256  bd220c219b05e6c22b7c23613ca926f60932d07c9fe141dd6e04b80dbc4b4e52  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/nice-try/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/nopt/LICENSE\nsha256  d16b2b8c511d9f2bef8bbf49f0e2a94f032b6b8d181f71c83912c34c116a02e1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/normalize-package-data/LICENSE\nsha256  60acd7711e6c138e6041836e32d922705254cc1568a30fdf16aa8f59bb87aeaa  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/normalize-package-data/node_modules/resolve/LICENSE\nsha256  e70ff771504ba41f2be55de812a017ff46433d7a250c862e38fc419159e44500  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/normalize-path/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/npm-run-path/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/number-is-nan/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object-assign/license\nsha256  a596744eec6b05682ed972bf93937668bbc8da2caed93fbf6510389de019b5c0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object.assign/LICENSE\nsha256  c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object.entries/LICENSE\nsha256  c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object.getownpropertydescriptors/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object-inspect/LICENSE\nsha256  dc0fe5a22d9336f345ee984f9bf56f11f22877a3aa5fd16a1db9a8ca0e23a5d1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object-is/LICENSE\nsha256  5640e5cbe2e9f57f6ccfdd8dbfbeadb875495bdbcb69d2666ce3177ccd0942e4  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/object-keys/LICENSE\nsha256  30792070c6ec188caccbadc5ee32c3e33fdc5e9044c2f08cb1d01213e5a01084  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/omit-deep-lodash/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/once/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/onetime/license\nsha256  8089bcc08845ec143e5761f4a101a65b8c792a0dedbfeeb90a15560c0b77f768  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/on-finished/LICENSE\nsha256  05991c2e8f070b69ec5b656c2c12fd07cd0153dd157d39b050b82af59b319a01  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/optimist/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/optimist/node_modules/wordwrap/LICENSE\nsha256  b9eb082c39fe245e38793699074c394c43a722c51fce031c3c165cb92a31035c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/optionator/LICENSE\nsha256  d25d1d6d28c35cb6f358e2833e405c4e53fec2fa24d156323ddea5cd438d3407  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/os-browserify/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/osenv/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/os-homedir/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/os-locale/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/os-tmpdir/license\nsha256  a6859a1cdfa7b6ebcdd52505c41bb72e747675b3e7fe0b908c0ac09280f0ba93  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pad/LICENSE\nsha256  a04665b3b2de56c66730c1f720f528175739e4104f79073614aa611da1e85539  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pako/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parent-module/license\nsha256  bc5ed4eed738303bf403ec3b7e0a8e76760ef60664ad050a0ff61db23da77e66  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parse-asn1/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parse-json/license\nsha256  a41d7b212c43bf90af534ec5d73d24a65e3a8cf17941b6d10e9398346a179698  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parseqs/LICENSE\nsha256  15c35ddf8c82a5fc84e3801db12e279b744605d6ad810e1b52ad09832fc71806  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parseuri/LICENSE\nsha256  11d017c3b9f1ee3f44caf7203035f0461d5b57e0db8ce1bc03a9af34fa7d3f6b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/parseurl/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-browserify/LICENSE\nsha256  9c791b69df62b2264d0a846786f82b00bd6943200a0b10eba66a1ba7a7785fc8  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-dirname/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-exists/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-is-absolute/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-key/license\nsha256  3f4609137f65070541b9214300ea0d640af8192857de0eeb2b03403003d9228a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-parse/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-type/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/path-type/node_modules/pify/license\nsha256  5d45910e7ed82fecc3e29b40a5b3a17ceb609fda19f860aa2ec180d87f4f9d4a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pathval/LICENSE\nsha256  a9667a8bf55e7f20cf894cb47774f94ebd4eb366408aafb980f1f6547bcdc10a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pbkdf2/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-defer/license\nsha256  7e64acffcb0d20d33f5a86949ffd4a99ae045b10c7332a9c3a58635876c16880  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pend/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-finally/license\nsha256  d0cd141b0c322fded5dfad1d4645bb2fedfc05b7321fe1009469638190d59ef9  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/picomatch/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pify/license\nsha256  6ee0feb1f6ef996ff5a68600f8cf98909cf412d39ef3cdceaefd87d636fa1b7f  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pinkie/license\nsha256  6ee0feb1f6ef996ff5a68600f8cf98909cf412d39ef3cdceaefd87d636fa1b7f  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pinkie-promise/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-is-promise/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-limit/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-locate/license\nsha256  f476f01d5da0d8124355eeb79b42b95d2ad2a88d229dbe02b815628760a8cb43  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/plugin-error/LICENSE\nsha256  b9eb082c39fe245e38793699074c394c43a722c51fce031c3c165cb92a31035c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/prelude-ls/LICENSE\nsha256  f4bbb78fa28677ad9b9c0a4b7a255e23c0b24e619c873ed66a11d47c16c88114  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/private/LICENSE\nsha256  59a400d04c5078579acc27ddd6452c1bdf763f9506e01364700935fbb1a7c91b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/process/LICENSE\nsha256  ecdccbcf39024f624ded480c01c0b25458e1eca8f26ecf040933865ce56d9a4f  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/process-nextick-args/license.md\nsha256  d7d2a7786de7c7cfd96f920c6f12927d74e1d2a861ca4498bf465c3bc3f4c21c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/progress/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pseudomap/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/p-try/license\nsha256  db6109f994692150ed82cd904bb053c73b97b23678bf52047f747bfec11e1934  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/public-encrypt/LICENSE\nsha256  3fe8d55a98dbf260eace67c00cf9bc53edb46234e840098a0b93df3096b97fb6  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/pump/LICENSE\nsha256  483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/punycode/LICENSE-MIT.txt\nsha256  a1e4522979cd422b42d0b464072eb7d0d218651659f56bf09f8c147384e3f105  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/puppeteer/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/puppeteer/node_modules/rimraf/LICENSE\nsha256  3de284c8e6fa7e8437eff6f53695471e0332129a5b42a79361e17b7637de94b3  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/puppeteer/node_modules/ws/LICENSE\nsha256  d2f9d2835eb09ccf673e118e4fdc372075437c1787e66c2202912fbe3e5ee9e1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/qs/LICENSE\nsha256  cb72d9714ddc21e758d63f423be0caddf909d23ccbb10a2f5201a870818e4f57  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/querystring-es3/License.md\nsha256  cb72d9714ddc21e758d63f423be0caddf909d23ccbb10a2f5201a870818e4f57  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/querystring/License.md\nsha256  f0606775704212c0b49fb4df8193f7ec190d057551fc857d9f3aaa482b878e29  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ramda/LICENSE.txt\nsha256  ddc0dd5947bd2966b9a4cfde098566b011de0acfbe7814536955636ce9e3eced  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/randombytes/LICENSE\nsha256  ddc0dd5947bd2966b9a4cfde098566b011de0acfbe7814536955636ce9e3eced  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/randomfill/LICENSE\nsha256  f655e6291356ec0de7a8f0e69f294961a2cea86678ec94588be1e6a492e278ab  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/range-parser/LICENSE\nsha256  c8e6bca7230689d536a3bd7158f66e9c4f89f95d0748743a0370ac229e9023ad  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/raw-body/LICENSE\nsha256  ec62dc96da0099b87f4511736c87309335527fb7031639493e06c95728dc8c54  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/readable-stream/LICENSE\nsha256  dffec71d93f273d2af7b54c6c7e7e70b3289c632ec0d7253210ec21ac336d5ac  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/readdirp/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/readdir-scoped-modules/LICENSE\nsha256  5ffe28e7ade7d8f10d85d5337a73fd793dac5c462fb9a28fbf8c5046c7fbca3b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/read-installed/LICENSE\nsha256  69be713b3d6c33e0dba76c4d23d986d568593abca04ce47d75162af255d6a345  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/read-package-json/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/read-pkg/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/read-pkg-up/license\nsha256  6ca87d1dce5b82873603e566fd83dabe8771fb169013337d4a14bb9bbf794687  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/recast/LICENSE\nsha256  94bcb9959136723aa4fb36e1a6c4d5c662a2369978cfae344dabfb83ae619e79  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/recast/node_modules/esprima/LICENSE.BSD\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/redent/license\nsha256  fcf6eabf68ca96988a6b506b4fdc6cc32535d80eb2e11c79724af5ac6f50262b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/regexpp/LICENSE\nsha256  aac9937f6a8dbc3328d2b90ab19691333ec4931634ea808673c897e623a9efc1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/remap-istanbul/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/repeating/license\nsha256  a92e52eb1fa7cd746e3827bf01d3a3589bbc8e1e51348b1da042aad165525ad1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/require-directory/LICENSE\nsha256  365496ca1f56da40b23c9815fc40fa9005847b2f8f8fd1c1a4929ef25ec8cd1d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/require-main-filename/LICENSE.txt\nsha256  3b2a6a268aa815dec121d614245e03b5c68db1f044d5b525e36db7d5dc7fb9c3  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/requires-port/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/resolve-from/license\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/resolve/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/restore-cursor/license\nsha256  1ce941682a96c7b898ecd125d0f2e22319758ea6f3adbf498a65d649b0f3f7dd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rfdc/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rimraf/LICENSE\nsha256  4847d2fd9ed54cc006dd79f5a14fa5dd35eb8274dca511418166e195e277c05b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ripemd160/LICENSE\nsha256  cc9426fe569f331f48fd3134b3a03b5bbe3fc7bd25d604be0006bd55a6134cf5  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rollup/LICENSE.md\nsha256  e5c1364118b39fa98b959138ce4aa4d0e68cfbee12d115e69730579fecb1dc1b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/run-async/LICENSE\nsha256  81c407ac717813b0e3795402960e04003c7bba8ba59b621624707028531c9ade  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rxjs/_esm2015/LICENSE.txt\nsha256  81c407ac717813b0e3795402960e04003c7bba8ba59b621624707028531c9ade  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rxjs/_esm5/LICENSE.txt\nsha256  81c407ac717813b0e3795402960e04003c7bba8ba59b621624707028531c9ade  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rxjs/LICENSE.txt\nsha256  81c407ac717813b0e3795402960e04003c7bba8ba59b621624707028531c9ade  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/rxjs/src/LICENSE.txt\nsha256  c7cc929b57080f4b9d0c6cf57669f0463fc5b39906344dfc8d3bc43426b30eac  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/safe-buffer/LICENSE\nsha256  4bc935e71be198c67ddf3c2b5fddb195f6edc182bfc155a96a6db61b44b494b9  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/safer-buffer/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/semver/LICENSE\nsha256  365496ca1f56da40b23c9815fc40fa9005847b2f8f8fd1c1a4929ef25ec8cd1d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/set-blocking/LICENSE.txt\nsha256  c4b4ad3a5746f1f5249a6dd90396ec519264e1bb02e01e48a6522c48a3a97cb4  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/setimmediate/LICENSE.txt\nsha256  76d6d1ea0c268da37dd3c961b4fcfb23dee8417fff9e8786d4d44c585b781b69  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/setprototypeof/LICENSE\nsha256  58dcf38be1438f739412b87eb70d64bf00e9976d529bb119f700d8b3167924f0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/sha.js/LICENSE\nsha256  e6fdf7ac2af533b4436d99aa75df32aa78690510f7d68a3e73e8576967298d2f  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/shebang-command/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/shebang-regex/license\nsha256  e05b1eaf5b5f99b7ad75cd1f38858ff9a311780b97715ead67936d60bf96aa7e  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/signal-exit/LICENSE.txt\nsha256  3dc3b3d3a284d871f7f307655c90fb101d73abbf87bbddeefd2f67883353bdbc  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/slice-ansi/license\nsha256  05dc4d785ac3a488676d3ed10e901b75ad89dafcc63f8e66610fd4a39cc5c7e8  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/slide/LICENSE\nsha256  56b7b228fde8d638cc7f1c3d0022cf111764083ac4f803b7a50a90388dce3788  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-adapter/LICENSE\nsha256  62e2032a1e1458b1d92a62f5fc51be48e08b95062295c91a9f3bd3686809d37e  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/node_modules/debug/LICENSE\nsha256  6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-client/node_modules/ms/license.md\nsha256  c10d192d935165dac336ae245f9eef4c42bb37e7c6f5c5f6f7663db778122df1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io/node_modules/debug/LICENSE\nsha256  6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io/node_modules/ms/license.md\nsha256  56b7b228fde8d638cc7f1c3d0022cf111764083ac4f803b7a50a90388dce3788  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/node_modules/debug/LICENSE\nsha256  6652830c2607c722b66f1b57de15877ab8fc5dca406cc5b335afeb365d0f32c1  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/socket.io-parser/node_modules/ms/license.md\nsha256  6cb0631f71c7749763fd3dd1d5bee52dd1070ec17f2edc1710079ad070bd2fbd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/source-map/LICENSE\nsha256  c5ca60a739543ef97683dfa0a94773b214c86c826c76a27b8f8e6eb38148cbce  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-compare/LICENSE.md\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-correct/LICENSE\nsha256  7edb57f7065309027de249642341292a5b21410d5773cc55bba73ff9cf01060e  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-expression-parse/LICENSE\nsha256  c5ca60a739543ef97683dfa0a94773b214c86c826c76a27b8f8e6eb38148cbce  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-ranges/LICENSE.md\nsha256  a21ab121cef9bed38553faad40e49b27ae3d2578d07a70956664e681021c9875  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/spdx-satisfies/LICENSE\nsha256  a4cdda44b5adea4731d53dcae78fb5124f8fd853e994f01e25d8c33a7daf818b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/sprintf-js/LICENSE\nsha256  512cfa4d5e7a7569c7ae4dd95241cb6ae2aaf648ef9ebd080c01bd24868d26e9  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/statuses/LICENSE\nsha256  ff151c00207c908581639851dd8504ce4255be0650b2b236edec2aa90342b0cd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-browserify/LICENSE\nsha256  ec62dc96da0099b87f4511736c87309335527fb7031639493e06c95728dc8c54  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-browserify/node_modules/readable-stream/LICENSE\nsha256  c7cc929b57080f4b9d0c6cf57669f0463fc5b39906344dfc8d3bc43426b30eac  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-browserify/node_modules/safe-buffer/LICENSE\nsha256  11f2aafb37d06b3ee5bdaf06e9811141d0da05263c316f3d627f45c20d43261b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-browserify/node_modules/string_decoder/LICENSE\nsha256  a0e6357a5e8ea65827addeb383e0948a1874d2f46bc7feaf6349b7a376ed6e98  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/stream-http/LICENSE\nsha256  9660914267128b5f96a102bd7f6268c249110a39cb7c4bb7f536d856445d739c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/streamroller/LICENSE\nsha256  98c970de440dcfc77471610aec2377c9d9b0db2b3be6d1add524a586e1d7f422  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/streamroller/node_modules/debug/LICENSE\nsha256  11f2aafb37d06b3ee5bdaf06e9811141d0da05263c316f3d627f45c20d43261b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/string_decoder/LICENSE\nsha256  c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimleft/LICENSE\nsha256  c61652db3d2808f667b48af0a358f0d85fd07ad4a0d0b1a50882dec3b764c522  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/string.prototype.trimright/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/string-width/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-ansi/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-bom/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-eof/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-indent/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/strip-json-comments/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/supports-color/license\nsha256  37b6932865726cf59cbfb8b32a5c9fd82c834c2deba4d53aa4a6b433ae69cdda  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/table/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/ansi-regex/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/string-width/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/table/node_modules/strip-ansi/license\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/text-table/LICENSE\nsha256  faae57631e1c7d641c3b6f9b110c2a7a28c8b383d08d7796ac472c509f075850  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/through2/LICENSE.md\nsha256  e8734448285a2dd773d40136ed5d5e8163a70701dd540cdc796cfca232f67d55  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/through/LICENSE.APACHE2\nsha256  d72dea1a8cdf3f4dfa2f594253d0c5b37baefc76e806f5ecb0e426393edcd505  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/through/LICENSE.MIT\nsha256  d5f14c3258420dfe5a3b641a143d6e6dd90eabb5962244d937e25699c3a45ec9  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/timers-browserify/LICENSE.md\nsha256  162413c61e0982abe89a06bf7a02ec760dc49a7364d838bd9f01daebb5b95954  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/tmp/LICENSE\nsha256  61b82d27e63b14eabc706960aabf6caa1b27d044eb00d7908f92e68085301c3a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/to-fast-properties/license\nsha256  a832d679750e49ab433626ab196350b89964b60eb0d3edd3341887c7d5f4c128  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/toidentifier/LICENSE\nsha256  e7d1fee7347ffddccc5fd03327ffdb50f8c112be0d5016d62388a92c4ae6e7a9  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/to-regex-range/LICENSE\nsha256  83927d1555a8e1d5ed9896991fbb2b4cdfb64f45f5e12b7446c3bff5cea538d3  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/treeify/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/trim-newlines/license\nsha256  a5e9f9b1575301c7a7a03508fdaa2e05a918cc17fd21c6e898096a96d6a34f61  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/tslib/LICENSE.txt\nsha256  ed0ff5ab79bc82703690fde4644e352c9ce73e9b890b87ea68b1a1fc5805792b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/tsutils/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/tty-browserify/LICENSE\nsha256  b9eb082c39fe245e38793699074c394c43a722c51fce031c3c165cb92a31035c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/type-check/LICENSE\nsha256  26181ebee1063f3dc6766a3b6d05999a0da058f172eadf2ca5d15105ffd9735a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/typedarray/LICENSE\nsha256  e5aee0714b6ecc416454b968d1017570ef609f20d8722ab84b07acd550b78198  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/type-detect/LICENSE\nsha256  23d466b1b134b415b66fa50c6526b4cf3e7b9258554da88d3abb371721e7ce68  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/type-is/LICENSE\nsha256  27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/chai/LICENSE\nsha256  27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/color-name/LICENSE\nsha256  5938d4fe4890c79ad14e02e643c385b25b8b6c7bbb97ab08996034b586512df5  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/eslint-plugin/LICENSE\nsha256  fcf6eabf68ca96988a6b506b4fdc6cc32535d80eb2e11c79724af5ac6f50262b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/eslint-plugin/node_modules/regexpp/LICENSE\nsha256  5938d4fe4890c79ad14e02e643c385b25b8b6c7bbb97ab08996034b586512df5  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/experimental-utils/LICENSE\nsha256  d3a724e2ed749f172ff70b62a1d0631b7d4b0ea273782365a3464d4e2d6b6dbd  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-scope/LICENSE\nsha256  e2fc706570305bcb7dfadb1cac951d5934ce0d7331a7a7ff1bbc254dbe1d9ef8  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/parser/LICENSE\nsha256  635818d8f39384751c8a5f3f3e735022f07afb3ccdb26eb17ff8eca28428f888  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/LICENSE\nsha256  6236fa0b88a4a0cce3dda0367979491b2052b3c8d6b1c10b3668de083e86a7f0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/node_modules/glob/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@typescript-eslint/typescript-estree/node_modules/semver/LICENSE\nsha256  a5e9f9b1575301c7a7a03508fdaa2e05a918cc17fd21c6e898096a96d6a34f61  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/typescript/LICENSE.txt\nsha256  27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/eslint-visitor-keys/LICENSE\nsha256  27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/estree/LICENSE\nsha256  27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/filesystem/LICENSE\nsha256  27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/json-schema/LICENSE\nsha256  27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/mocha/LICENSE\nsha256  27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/node/LICENSE\nsha256  27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/@types/puppeteer/LICENSE\nsha256  b00ae96f0815ae8fa49c09044467306e98cd89d6770c535fb596ccbd350c6ab4  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/uglify-js/LICENSE\nsha256  3b2a6a268aa815dec121d614245e03b5c68db1f044d5b525e36db7d5dc7fb9c3  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ultron/LICENSE\nsha256  3fda5977c0904e226190b4e21d64340c1731e2142d6fe5f3dee0090a216b8b63  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/universalify/LICENSE\nsha256  1a526fbe8d8577f5a4b1c2821842b55b7c0e18862531c62ae4ce69c9b19b74b6  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/unpipe/LICENSE\nsha256  97f780d3c79a42236f2b3435860f284c0ac6b958622f6bc9f1ac43fd49689b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/url/LICENSE\nsha256  483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/url/node_modules/punycode/LICENSE-MIT.txt\nsha256  1da14af109d9baaa8dee3094add5cc65a7772487dd94c8d2adfd36935b678c49  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/useragent/LICENSE\nsha256  0154425673db15cdfa80ecba2c9b1f1a867f7197a006764712849bfc3a93cbb7  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/util-deprecate/LICENSE\nsha256  6239c6144c31e58cf925c34483606969c555574d64ffa96518ab5d7f45c75d43  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/util-extend/LICENSE\nsha256  6239c6144c31e58cf925c34483606969c555574d64ffa96518ab5d7f45c75d43  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/util/LICENSE\nsha256  6e7d699cdd1e4fa837ba7718ea49841aa67201b449ea8b3f9cf274be15974a64  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/utils-merge/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/validate-npm-package-license/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/vm-browserify/LICENSE\nsha256  405a272eaef556691ad7dda96db3237c9544afe18725842a1a5b3ec308960222  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/void-elements/LICENSE\nsha256  6294da0e0a201bbe1de254445c9d07133a9448af05e4e44d0a2364747d114368  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wcwidth/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/which/LICENSE\nsha256  852bf81203aa93aa89afc9f881ebb035322dc7334aaceff435c557634c94a815  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/which-module/LICENSE\nsha256  0cef05dfff8b6aa7f35596984f5709f0d17c2582924a751efa471a76de7cdc11  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wide-align/LICENSE\nsha256  435a6722c786b0a56fbe7387028f1d9d3f3a2d0fb615bb8fee118727c3f59b7b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wordwrap/LICENSE\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/ansi-regex/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/string-width/license\nsha256  6fb9754611c20f6649f68805e8c990e83261f29316e29de9e6cedae607b8634c  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrap-ansi/node_modules/strip-ansi/license\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/wrappy/LICENSE\nsha256  0ead7e8cd8b0bc66a981ee69acaf1297ffa838cfce1b156a039bb24f997c0a27  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/write/LICENSE\nsha256  3de284c8e6fa7e8437eff6f53695471e0332129a5b42a79361e17b7637de94b3  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ws/LICENSE\nsha256  c7cc929b57080f4b9d0c6cf57669f0463fc5b39906344dfc8d3bc43426b30eac  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/ws/node_modules/safe-buffer/LICENSE\nsha256  a5f35901ee8b2039a7431144c23dd10bd47c1d07bcee0cd3a536421d86412214  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/xmlhttprequest-ssl/LICENSE\nsha256  82e67379203d5794e7c44549847d8d64ae6904591381682360470898bd306821  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/xtend/LICENSE\nsha256  2034cce3b6fafcddd642c4175e01d3ddfc332a53b9f20fdc46b1466dc89ac469  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/y18n/LICENSE\nsha256  4ec3d4c66cd87f5c8d8ad911b10f99bf27cb00cdfcff82621956e379186b016b  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yallist/LICENSE\nsha256  fe71524a15f30aab0f39af7165d38fc64a4269b7d2a0caffebc907355aec9c92  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/ansi-regex/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/ansi-styles/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/camelcase/license\nsha256  2dc0465729366c3a7890dfa9e972a1ba7048a26c02116fb8b419a6a1ac110149  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/cliui/LICENSE.txt\nsha256  693866fc419c6f61c8570438ec00659d156ec2b4d4a4d04091711f5f11a365d4  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/color-convert/LICENSE\nsha256  7357445bac398c76c0aef75a587009fe406d40de6a79789eb5b7ecbbad317ef2  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/color-name/LICENSE\nsha256  483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/emoji-regex/LICENSE-MIT.txt\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/find-up/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/is-fullwidth-code-point/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/locate-path/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/path-exists/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/p-locate/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/string-width/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/strip-ansi/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/wrap-ansi/license\nsha256  365496ca1f56da40b23c9815fc40fa9005847b2f8f8fd1c1a4929ef25ec8cd1d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs/node_modules/yargs-parser/LICENSE.txt\nsha256  365496ca1f56da40b23c9815fc40fa9005847b2f8f8fd1c1a4929ef25ec8cd1d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-parser/LICENSE.txt\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-parser/node_modules/camelcase/license\nsha256  30877d17f7e38530d46b49fb375ee98ce2e8b085b3ee72d4c2888710416ef139  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/LICENSE\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/camelcase/license\nsha256  48da2f39e100d4085767e94966b43f4fa95ff6a0698fba57ed460914e35f94a0  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/find-up/license\nsha256  902dbb4154679fb2b8d7c33878183f45b268d01eae5e5033dddaa8852d45f213  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/get-caller-file/LICENSE.md\nsha256  365496ca1f56da40b23c9815fc40fa9005847b2f8f8fd1c1a4929ef25ec8cd1d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/require-main-filename/LICENSE.txt\nsha256  fe71524a15f30aab0f39af7165d38fc64a4269b7d2a0caffebc907355aec9c92  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/yargs/LICENSE\nsha256  365496ca1f56da40b23c9815fc40fa9005847b2f8f8fd1c1a4929ef25ec8cd1d  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yargs-unparser/node_modules/yargs-parser/LICENSE.txt\nsha256  b303783d5eb7ca50b853ffa5f145e4e7998fab339831d848f507ca6cd970577a  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yauzl/LICENSE\nsha256  3b2a6a268aa815dec121d614245e03b5c68db1f044d5b525e36db7d5dc7fb9c3  src/3rdparty/chromium/third_party/devtools-frontend/src/node_modules/yeast/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/closure/COPYING\nsha256  af175b9d96ee93c21a036152e1b905b0b95304d4ae8c2c921c7609100ba8df7e  src/3rdparty/chromium/third_party/devtools-frontend/src/third_party/axe-core/LICENSE\nsha256  a8ad31b1c3f40dca5a84119351b8fa8ddc868edd77fad8a8ebf6d8f2d16fa4ae  src/3rdparty/chromium/third_party/devtools-frontend/src/third_party/pyjson5/src/LICENSE\nsha256  4f5753ce8acf3feafc758599058746d30bda07bc0d4cc3a6a1eb8e039fdba1dc  src/3rdparty/chromium/third_party/dom_distiller_js/LICENSE\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  src/3rdparty/chromium/third_party/dpkg-shlibdeps/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/emoji-segmenter/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/emoji-segmenter/src/LICENSE\nsha256  9021fdb5341ebbb2eb5c771ac5cfac527790673179d3b21a42de1ab2798ec30f  src/3rdparty/chromium/third_party/espresso/LICENSE\nsha256  46336ab2fec900803e2f1a4253e325ac01d998efb09bc6906651f7259e636f76  src/3rdparty/chromium/third_party/expat/src/expat/COPYING\nsha256  d9c904abd0ead61b3fbaef0a609285548076ff9c3f814cc1cf019c5d7150736d  src/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/full_lgpl.txt\nsha256  a8579e3fc40c11ab147bc299257733eb749cd455010385f7c117f70d7aef24e4  src/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/jpeg.txt\nsha256  857d5f537af3aa164e7a27eda60147d34195e5781abe7b1d358d9fb01e222ae0  src/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/mips.txt\nsha256  b4c85cce2b772f27d83f4562c20787057dc6949fcecc820a82c1d2e7047e89c3  src/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/oggparse_ahlberg_rullgayrd_2005.txt\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  src/3rdparty/chromium/third_party/ffmpeg/COPYING.GPLv2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  src/3rdparty/chromium/third_party/ffmpeg/COPYING.GPLv3\nsha256  b634ab5640e258563c536e658cad87080553df6f34f62269a21d554844e58bfe  src/3rdparty/chromium/third_party/ffmpeg/COPYING.LGPLv2.1\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  src/3rdparty/chromium/third_party/ffmpeg/COPYING.LGPLv3\nsha256  cb48bf09a11f5fb576cddb0431c8f5ed0a60157a9ec942adffc13907cbe083f2  src/3rdparty/chromium/third_party/ffmpeg/LICENSE.md\nsha256  f45cc81b400a048b56c9edbd4c3317f7a8958463dfd55aa96f268ecfd6baa12c  src/3rdparty/chromium/third_party/flac/COPYING.FDL\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  src/3rdparty/chromium/third_party/flac/COPYING.GPL\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  src/3rdparty/chromium/third_party/flac/COPYING.LGPL\nsha256  946b733afbaa20a192c8dc022b4e43090e78f28fd293494d1b307f7301552c9b  src/3rdparty/chromium/third_party/flac/COPYING.Xiph\nsha256  7ec9661a8afafab1eee3523d6f1a193eff76314a5ab10b4ce96aefd87621b0c3  src/3rdparty/chromium/third_party/flatbuffers/LICENSE\nsha256  3112ebbfc0fe10ad40a97672f5590c4292536a28cbfe3506820b15dec70b2258  src/3rdparty/chromium/third_party/flatbuffers/src/dart/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/flatbuffers/src/LICENSE.txt\nsha256  fa4cd9ab005185e10cd8f7504518856c7dd36c01e766c2bac87f4fc638e9f886  src/3rdparty/chromium/third_party/fontconfig/LICENSE\nsha256  fa4cd9ab005185e10cd8f7504518856c7dd36c01e766c2bac87f4fc638e9f886  src/3rdparty/chromium/third_party/fontconfig/src/COPYING\nsha256  fd056de4196903a676208ef58cfddafc7d583d1f28fa2e44c309cf84a59e62fb  src/3rdparty/chromium/third_party/freetype/src/docs/LICENSE.TXT\nsha256  56e67061ab590046b09876a084478ea87c4ece1579deb194347096e61c2537dd  src/3rdparty/chromium/third_party/fuchsia-sdk/LICENSE\nsha256  c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4  src/3rdparty/chromium/third_party/gif_player/LICENSE\nsha256  8ea14fdc7efee7fe53c79101b97049bd547dc6686cfa05df4f0686146a561423  src/3rdparty/chromium/third_party/glfw/src/LICENSE.md\nsha256  23353f4505b1c8ce4f8f72fc3b11dc74b4a8a7bf95921d93ff77f227c171a710  src/3rdparty/chromium/third_party/glslang/LICENSE\nsha256  d3cbc77d99642114bc925cce51eda84b48ae4879947ac89941a2e2aa4150db76  src/3rdparty/chromium/third_party/glslang/src/LICENSE.txt\nsha256  9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138  src/3rdparty/chromium/third_party/googletest/src/googlemock/LICENSE\nsha256  5e0df8c845c742e76f2f64d2d9ce1b7e74a2422fddbc577ae6a56319083de0bf  src/3rdparty/chromium/third_party/googletest/src/googlemock/scripts/generator/LICENSE\nsha256  9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138  src/3rdparty/chromium/third_party/googletest/src/googletest/LICENSE\nsha256  9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138  src/3rdparty/chromium/third_party/googletest/src/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/google-truth/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/guava/LICENSE\nsha256  ca382aa537f8923d6c0991fb976d184a2009eb76080313bf10dcecdc9311f0dd  src/3rdparty/chromium/third_party/gvr-android-keyboard/LICENSE\nsha256  f54c49d3ff865458c5d3c68c3367a1f6e0d7b3f686f8c88a6a563ef90f84ad9e  src/3rdparty/chromium/third_party/gvr-android-sdk/LICENSE\nsha256  96e5bbd81970983d666e702fa56f67dfd2fdaa363b8a4266e8d98847374cd7c8  src/3rdparty/chromium/third_party/hamcrest/LICENSE\nsha256  beb3f017ceb41387667f78237a7cecf84defa0ed257c505894663d6a9f13211b  src/3rdparty/chromium/third_party/harfbuzz-ng/src/COPYING\nsha256  c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383  src/3rdparty/chromium/third_party/harfbuzz-ng/src/src/ms-use/COPYING\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  src/3rdparty/chromium/third_party/hunspell/COPYING\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  src/3rdparty/chromium/third_party/hunspell/COPYING.LESSER\nsha256  53692a2ed6c6a2c6ec9b32dd0b820dfae91e0a1fcdf625ca9ed0bdf8705fcc4f  src/3rdparty/chromium/third_party/hunspell/COPYING.MPL\nsha256  610809f1586ee4d22468f1e97c256153cea8be7a662193db70d6ca424e0f17c8  src/3rdparty/chromium/third_party/iaccessible2/LICENSE\nsha256  a412a53925efc6b50800bf8519a2e033949243d5a5a8c5422bae8a5007ad09c8  src/3rdparty/chromium/third_party/iccjpeg/LICENSE\nsha256  d18e75f216f177d41304f5e94c2cba7d1bf9f8f8583a0777cceb5cca0c5ad137  src/3rdparty/chromium/third_party/icu4j/LICENSE\nsha256  6a18c5fac70d7860b57f5b72b4e2c9a1ba6b3d2741eef7ff9767c5379364f10d  src/3rdparty/chromium/third_party/icu/LICENSE\nsha256  c62d7697c03979f5056d28b338fafc7a1152820f7b379adf4a9d88cd37160f96  src/3rdparty/chromium/third_party/icu/license.html\nsha256  845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308  src/3rdparty/chromium/third_party/icu/scripts/LICENSE\nsha256  8c6db340475136df3c1201d458fa5755698eace76e510471ecc9d857d6083dac  src/3rdparty/chromium/third_party/ijar/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/ink/LICENSE\nsha256  b9be92f13356083392d97da13cab8ae543c7911f44eff5289b693da8b17b9e08  src/3rdparty/chromium/third_party/inspector_protocol/LICENSE\nsha256  7a92c5e7a83b5ddcc693bb84ea8bdb842308509c1758cffdfe24717609154c75  src/3rdparty/chromium/third_party/isimpledom/LICENSE\nsha256  ed8d7a24769ac9d57d08769b5f8be27519dd8811d06b0995dbe8ca6714e96d08  src/3rdparty/chromium/third_party/jacoco/LICENSE\nsha256  33b6816eb449962d307495946519ed78cef8743819f6f1d60e8b3d4e86c38b1c  src/3rdparty/chromium/third_party/javalang/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/jetifier_standalone/LICENSE\nsha256  7975c0027cfa5d08253fbb6ff4676acc38248bd5e046d0dbab3d810971e97970  src/3rdparty/chromium/third_party/jinja2/LICENSE\nsha256  76c45ece83a26117f86f4e349e7df118708e061e87225328fb478ce1e8b3eb86  src/3rdparty/chromium/third_party/jsoncpp/LICENSE\nsha256  95039d77a20e75b428207740d9a8f97b2dce3c89da4b21f1ad862b5997160e0a  src/3rdparty/chromium/third_party/jsoncpp/source/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/jstemplate/COPYING\nsha256  71a19392a0eb3255ab2055ed978bb0f93865cea84d31a3510eaffb74d8981e7f  src/3rdparty/chromium/third_party/khronos/LICENSE\nsha256  ccc19f1da0798ed666609b65a5b44dd8b3abe6fc08b9c0592eb76e82e174db19  src/3rdparty/chromium/third_party/leveldatabase/src/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/libaddressinput/LICENSE\nsha256  c9a5bd7c8cc1267ddacdc5228c68ecd811cf6d74286e9141bc80d8af2eb1a025  src/3rdparty/chromium/third_party/libaddressinput/src/cpp/LICENSE.chromium\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/libaddressinput/src/LICENSE\nsha256  4764a286d8b2faeaf42f4418e7d7a28d58fc8fd4d00a3d0a7f44b0a4099de7f2  src/3rdparty/chromium/third_party/libaom/source/libaom/LICENSE\nsha256  043dcfd059386f9facd376351b2bd79325778744aa442177390cdfcca54babed  src/3rdparty/chromium/third_party/libaom/source/libaom/third_party/fastfeat/LICENSE\nsha256  9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138  src/3rdparty/chromium/third_party/libaom/source/libaom/third_party/googletest/src/googletest/LICENSE\nsha256  5aec868f669e384a22372a4e8a1a6cd7d44c64cd451f960ca69cc170d1e13acf  src/3rdparty/chromium/third_party/libaom/source/libaom/third_party/libwebm/LICENSE.TXT\nsha256  ff6c857ce2708e87701323078aef115c1872a1f80a9649f86dc899b48083bc60  src/3rdparty/chromium/third_party/libaom/source/libaom/third_party/vector/LICENSE\nsha256  719d8fa235f2068e0ae6d6a7dceb0a7720d7840f0f0ebed29957989e6ded3cd8  src/3rdparty/chromium/third_party/libaom/source/libaom/third_party/x86inc/LICENSE\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  src/3rdparty/chromium/third_party/libcxx-pretty-printers/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/libgav1/src/LICENSE\nsha256  d56bafdaeaa793331a29e9766b7efe66524c98533da798a57201e291863ef625  src/3rdparty/chromium/third_party/libgifcodec/LICENSE.md\nsha256  37d8bfba91b745693ea58f846f2f1276229745adf532974b73c1911cfd144241  src/3rdparty/chromium/third_party/libipp/LICENSE\nsha256  ab00a482b6a3902e40211b43c5d0441962ea99b6cc7c25c0f243fa270b78d482  src/3rdparty/chromium/third_party/libjingle_xmpp/LICENSE\nsha256  8412238c5ad95965cf3c3197791e9dea8b5fae505d133449e33ee2fa754fe61e  src/3rdparty/chromium/third_party/libjpeg_turbo/LICENSE.md\nsha256  3bf128851aff9f392953276ea8ade3e41da0f40b853fde58ec21034aa91ccc31  src/3rdparty/chromium/third_party/libovr/LICENSE\nsha256  bf5e22b9dce8464064ae17a48ea1133c3369ac9e1d80ef9e320e5219aa14ea9b  src/3rdparty/chromium/third_party/libpng/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/libprotobuf-mutator/src/LICENSE\nsha256  a1a33180d02960ab1c5de36cf20b1a2f0fe9888d83826ad263da5db52f1b183b  src/3rdparty/chromium/third_party/libsecret/LICENSE\nsha256  8e19d42a1eec9561f3f347253ddf2e385c55f392f025bb0fd41b88dbf38db5ae  src/3rdparty/chromium/third_party/libsrtp/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/libsync/LICENSE\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  src/3rdparty/chromium/third_party/libudev/LICENSE\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  src/3rdparty/chromium/third_party/libusb/src/COPYING\nsha256  8267348d5af1262c11d1a08de2f5afc77457755f1ac658627dd9acf71011d615  src/3rdparty/chromium/third_party/libvpx/source/libvpx/LICENSE\nsha256  9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138  src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/googletest/src/LICENSE\nsha256  5aec868f669e384a22372a4e8a1a6cd7d44c64cd451f960ca69cc170d1e13acf  src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/libwebm/LICENSE.TXT\nsha256  2b2cc1180c7e6988328ad2033b04b80117419db9c4c584918bbb3cfec7e9364f  src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/libyuv/LICENSE\nsha256  719d8fa235f2068e0ae6d6a7dceb0a7720d7840f0f0ebed29957989e6ded3cd8  src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/x86inc/LICENSE\nsha256  5aec868f669e384a22372a4e8a1a6cd7d44c64cd451f960ca69cc170d1e13acf  src/3rdparty/chromium/third_party/libwebm/source/LICENSE.TXT\nsha256  6de6fe48ff7b249a51ec5522d1af618dd50effc6f030fd24e17878566ad2ca5d  src/3rdparty/chromium/third_party/libwebp/LICENSE\nsha256  c5c63674f8a83c4d2e385d96d1c670a03cb871ba2927755467017317878574bd  src/3rdparty/chromium/third_party/libxml/src/COPYING\nsha256  c5c63674f8a83c4d2e385d96d1c670a03cb871ba2927755467017317878574bd  src/3rdparty/chromium/third_party/libxml/src/Copyright\nsha256  31346421254a3e6e12687cf17f19f6357ee73a617fa7b3d3ccefdcbabe49bdd3  src/3rdparty/chromium/third_party/libXNVCtrl/LICENSE\nsha256  7e48e290b6bfccc2ec1b297023a1d77f2fd87417f71fbb9f50aabef40a851819  src/3rdparty/chromium/third_party/libxslt/linux/COPYING\nsha256  7e48e290b6bfccc2ec1b297023a1d77f2fd87417f71fbb9f50aabef40a851819  src/3rdparty/chromium/third_party/libxslt/src/Copyright\nsha256  2b2cc1180c7e6988328ad2033b04b80117419db9c4c584918bbb3cfec7e9364f  src/3rdparty/chromium/third_party/libyuv/LICENSE\nsha256  0d4077a7055ead389c4c5a9a6ac4bb8b784fc6e9e37be2caf544fcceed26cb16  src/3rdparty/chromium/third_party/lottie/LICENSE\nsha256  6e3e0a978f1e136cb3efb89702f4314671581a0c70c9a52447669e00f7b129e8  src/3rdparty/chromium/third_party/lzma_sdk/LICENSE\nsha256  c3b124673c93872156757a934c75b498d68eec09510e25e549d9dc2013776499  src/3rdparty/chromium/third_party/mako/LICENSE\nsha256  0bbe88228fd63d20ec097f64e58d5a0a465123ae139140a18d406c60b48824b5  src/3rdparty/chromium/third_party/markupsafe/LICENSE\nsha256  58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd  src/3rdparty/chromium/third_party/material_design_icons/LICENSE\nsha256  536284e40c611f371f6ce5d74efac37a20d993cd3af96259b9b9e20b1669ff1e  src/3rdparty/chromium/third_party/mesa_headers/LICENSE\nsha256  845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308  src/3rdparty/chromium/third_party/metrics_proto/LICENSE\nsha256  27ebda9d51f0a56b7e281ccd8230a27236dcb51c05f64b07869ecf6e965d68b0  src/3rdparty/chromium/third_party/microsoft_webauthn/LICENSE\nsha256  83bb6bd9ccd2cf5230cb1807ed16258289768dc4d9cb80069a814e04415a1275  src/3rdparty/chromium/third_party/minigbm/LICENSE\nsha256  8610954adbca6c6b85d8b1ae5613b44b0014e437d32fcad6683bb27541411686  src/3rdparty/chromium/third_party/minigbm/src/LICENSE\nsha256  4919cfb14a73cd64fcef67b107613970cf1659a09aa675dba31314f373bc7204  src/3rdparty/chromium/third_party/minizip/src/lib/bzip2/LICENSE\nsha256  87642305968765a4030fd202ff7006afa67274da7f9bde84506e51ae58ecc2b4  src/3rdparty/chromium/third_party/minizip/src/LICENSE\nsha256  bd5663836feb58ffb7d0e6b9e62010f4c3399f2bb0a4cf6514a15d597bbdd577  src/3rdparty/chromium/third_party/mocha/LICENSE\nsha256  380893a2f01aea5c3328b1a8b08cdc488bf236916abac3af0d1f1a5d2634c31a  src/3rdparty/chromium/third_party/mockito/LICENSE\nsha256  d47e8390fb0d7ad4a18f26aedd6283c7ab6b5b4fabab536ccb4db7f9f6d90c08  src/3rdparty/chromium/third_party/modp_b64/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/motemplate/LICENSE\nsha256  7a92c5e7a83b5ddcc693bb84ea8bdb842308509c1758cffdfe24717609154c75  src/3rdparty/chromium/third_party/mozilla/LICENSE\nsha256  1563996c52e220e15ef2418e67d39488255aa8c28c89e617074d3afe3ee329e0  src/3rdparty/chromium/third_party/nasm/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/netty4/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/netty-tcnative/LICENSE\nsha256  0cd1bd4b934ffdc5e7f1bcfa9d08bd17295e5414bdca99c06b1036278b01f0b1  src/3rdparty/chromium/third_party/node/LICENSE\nsha256  b5730da9a26472a405b0b1c61d3d166714d9d654ab3282e54e4a01a5f66316c3  src/3rdparty/chromium/third_party/objenesis/LICENSE\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  src/3rdparty/chromium/third_party/ocmock/License.txt\nsha256  8bed129a6a15e631c93a624985e631eb62a55f7e072b78f4e1c3dde7c745283d  src/3rdparty/chromium/third_party/one_euro_filter/LICENSE\nsha256  dd5c1c9668512530fa5a96e4c29ac4033d70a7eeb0eed7a42fddb6dd794ebdbb  src/3rdparty/chromium/third_party/openh264/src/LICENSE\nsha256  34a5c58db7cc4d3265d14a9aa26e38067fe114311d8bec31f909d1c240e626c4  src/3rdparty/chromium/third_party/openscreen/src/LICENSE\nsha256  284545e873c704952e5b1b39d457dd83a3b115a51d9f1eb5175137bd69b8fa1b  src/3rdparty/chromium/third_party/openscreen/src/third_party/mozilla/LICENSE.txt\nsha256  f56ff606104d4ef18e617921a75c73ad73b5a1a1d70c69590c29de16919e04ad  src/3rdparty/chromium/third_party/openvr/src/LICENSE\nsha256  8338ce8d922bb4416ce3dd1e5680173332435e3f0755007ac7801ccd674fe682  src/3rdparty/chromium/third_party/opus/src/COPYING\nsha256  7efb4989e0cd1b256229bdf2f09300c5d14e35db0e7476bfb87fac243498273d  src/3rdparty/chromium/third_party/opus/src/LICENSE_PLEASE_READ.txt\nsha256  0d74de3c3cd3196a9ed1bc612cfd5f81d7509d66c4be34a50f99d61bd1ad00d4  src/3rdparty/chromium/third_party/ots/LICENSE\nsha256  9dd8d2fb95ba862a5d166a167682c1c67a209acd3bf09b6fd03f76d3579729bc  src/3rdparty/chromium/third_party/ow2_asm/LICENSE\nsha256  76621fcfb65adfd6602b700708b74c8e20f3325b32f1a54bec83a5cf7c679f53  src/3rdparty/chromium/third_party/pdfium/LICENSE\nsha256  32759d1397d8f7b9e15ece146e4038b22b90e93b4935b5a840bcef4d2ba5ea55  src/3rdparty/chromium/third_party/pdfium/third_party/bigint/LICENSE\nsha256  bf5e22b9dce8464064ae17a48ea1133c3369ac9e1d80ef9e320e5219aa14ea9b  src/3rdparty/chromium/third_party/pdfium/third_party/libpng16/LICENSE\nsha256  c5b14f5a3814d2e57b9bb9520dcf57a2c3817b65c4f989e5c82e332c82af1038  src/3rdparty/chromium/third_party/pdfium/third_party/pymock/LICENSE.txt\nsha256  e323929b7c2178e2efc9ac70e62166670274bd772f90a8d83a90300c5f60002c  src/3rdparty/chromium/third_party/perfetto/LICENSE\nsha256  9f98bab33648b77578d85ac0f1d1c3941a72aa6d7e65015ba181f2fe804bb85d  src/3rdparty/chromium/third_party/pexpect/LICENSE\nsha256  a46200592eb193853527250da098e6bb0c75424e7a2c7db8da526c4f301c3d88  src/3rdparty/chromium/third_party/pffft/LICENSE\nsha256  dd4930c619afd8527591353c7d3d1c1d7f4bf62ed1cb411f4f507dbdee7738a2  src/3rdparty/chromium/third_party/ply/LICENSE\nsha256  d6c873c08a8806f08fdafe1aa00ba38837f6ac29f91d6b26510614b0df2001e0  src/3rdparty/chromium/third_party/ply/license.patch\nsha256  24699c6858472311aa9acc6c2b7112ff9de6e7792569158ba9e439deb0529ef6  src/3rdparty/chromium/third_party/polymer/LICENSE.polymer\nsha256  a5adc2955c0dd848c97aa6afb14e0047a610f0fcfa6ce0011efad01a0e051406  src/3rdparty/chromium/third_party/polymer/v1_0/components-chromium/polymer2/LICENSE.txt\nsha256  984fb04a16a9f1e0145ffd891125dc366a01cd921f58c9b0369be400c720790d  src/3rdparty/chromium/third_party/polymer/v1_0/components-chromium/polymer/LICENSE.txt\nsha256  a5adc2955c0dd848c97aa6afb14e0047a610f0fcfa6ce0011efad01a0e051406  src/3rdparty/chromium/third_party/polymer/v3_0/components-chromium/polymer/LICENSE.txt\nsha256  58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd  src/3rdparty/chromium/third_party/private-join-and-compute/src/crypto/LICENSE\nsha256  58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd  src/3rdparty/chromium/third_party/private-join-and-compute/src/LICENSE\nsha256  58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd  src/3rdparty/chromium/third_party/private-join-and-compute/src/util/LICENSE\nsha256  294f58267c6f473c4ce7270bf5c8d34b2003cb43804552459654c36553431276  src/3rdparty/chromium/third_party/proguard/LICENSE\nsha256  6e5e117324afd944dcf67f36cf329843bc1a92229a8cd9bb573d7a83130fea7d  src/3rdparty/chromium/third_party/protobuf/LICENSE\nsha256  2ab28b982a7f3150e1597befaa87e1636b9973c80aef3752597945d270c4c4e4  src/3rdparty/chromium/third_party/pycoverage/LICENSE\nsha256  f8d0c347a0dcc6ebe1671640dfae8d2411b6ded892e06a6764f8208b218b2af4  src/3rdparty/chromium/third_party/pyelftools/elftools/construct/LICENSE\nsha256  f8c8ccecdbb044fd6fa1a586c596a055fb2b14fb3e335d8ed282db58d80b7410  src/3rdparty/chromium/third_party/pyelftools/LICENSE\nsha256  cb5e8e7e5f4a3988e1063c142c60dc2df75605f4c46515e776e3aca6df976e14  src/3rdparty/chromium/third_party/pyjson5/src/LICENSE\nsha256  c5b14f5a3814d2e57b9bb9520dcf57a2c3817b65c4f989e5c82e332c82af1038  src/3rdparty/chromium/third_party/pymock/LICENSE.txt\nsha256  318cea263a2fb726d767e2777771a431a3220008e6940dd5138a235a1fc498fc  src/3rdparty/chromium/third_party/pystache/LICENSE\nsha256  956c3b678228a216142df38d039bba56ee6509d3298e7a4b8dd5bc3eaa80fe33  src/3rdparty/chromium/third_party/Python-Markdown/LICENSE.md\nsha256  5a2954f05e7fcc1bf240a3b58534f974760b5aae02438ce875c9c7fe0bdb4cf9  src/3rdparty/chromium/third_party/pywebsocket3/src/LICENSE\nsha256  c903100da706172066fa1b6f02eba60f202fea63036492d2c4a01267e32aa7a8  src/3rdparty/chromium/third_party/qcms/src/COPYING\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/quic_trace/src/LICENSE\nsha256  38751245389e1e23f73e6f5384b5cbe7fa972cc4410c5adc9c04b082a0b9561a  src/3rdparty/chromium/third_party/quic_trace/src/third_party/fonts/LICENSE\nsha256  8991cd11befec7c6a63662700f03c0cc42e864b6e77c7e70b80297c951a7f0ff  src/3rdparty/chromium/third_party/quic_trace/src/third_party/glew/LICENSE.txt\nsha256  f98f3db81b4dd3873d8672117e409286142cfae9b7673ab6d7aab4bae1527d20  src/3rdparty/chromium/third_party/qunit/LICENSE\nsha256  68834f116f8ff545f05d14753357b620748156d60ee36b26beab4cb3f317efe4  src/3rdparty/chromium/third_party/r8/LICENSE\nsha256  6040cda75d90b1738292a631d89934c411ef7ffd543c4d6a1b7edfc8edf29449  src/3rdparty/chromium/third_party/re2/LICENSE\nsha256  6040cda75d90b1738292a631d89934c411ef7ffd543c4d6a1b7edfc8edf29449  src/3rdparty/chromium/third_party/re2/src/LICENSE\nsha256  e479bcdfa777738226b4282bf8536cc5416a25cec3100cbe210b8be4d1e2ed84  src/3rdparty/chromium/third_party/requests/LICENSE\nsha256  e2f59ff41d9d03adc3dcf3deff170f8c8cf4a6eb4a9b174762a7656d23200ffa  src/3rdparty/chromium/third_party/rnnoise/COPYING\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  src/3rdparty/chromium/third_party/robolectric/LICENSE\nsha256  19c9b910bec5a4f2c420747d1bf81e975ffdb1377ad91c5d9b1e8dd3e38f4c17  src/3rdparty/chromium/third_party/robolectric/licenses/extreme.indiana.edu.license.txt\nsha256  a7436c952fa2dc0701860cf4187d1e8e8e6de6720dec0ae9e0b641bc50eebced  src/3rdparty/chromium/third_party/robolectric/licenses/javolution.license.txt\nsha256  5b6ac717e37db4f6d17bda7791f4ce3f99947aeb21e6e72b705aa3d1ee2de480  src/3rdparty/chromium/third_party/robolectric/licenses/pivotal.labs.license.txt\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/s2cellid/LICENSE\nsha256  3f941b3b89cf7b8370ceb83cc76d2120d471b58735d8ca60238a751a48d7f72f  src/3rdparty/chromium/third_party/schema_org/LICENSE\nsha256  c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4  src/3rdparty/chromium/third_party/shaderc/src/LICENSE\nsha256  b5a00e94f058edc87e05978329b55730d8689abe61205d9018443d03de4f07da  src/3rdparty/chromium/third_party/shaderc/src/third_party/LICENSE.glslang\nsha256  47e20ce182bc68fab1a0cfb129b03c326aaf4f2b6b7905aa9d376d31018bd29f  src/3rdparty/chromium/third_party/shaderc/src/third_party/LICENSE.spirv-tools\nsha256  33c9a2fe619e1200937629f318895898ffcd1bf7d0ddd39adc382c030925e61e  src/3rdparty/chromium/third_party/simplejson/LICENSE.txt\nsha256  b25948e48c44312d04ffc626a9d52cae7c04539a1a8e0c1be47b7bfa0da03e1d  src/3rdparty/chromium/third_party/sinonjs/LICENSE\nsha256  8bb850c565aa389fdc16f3a46965ad23d82adff60f2393fc2762b63185e8e6c9  src/3rdparty/chromium/third_party/six/LICENSE\nsha256  8bb850c565aa389fdc16f3a46965ad23d82adff60f2393fc2762b63185e8e6c9  src/3rdparty/chromium/third_party/six/src/LICENSE\nsha256  e59bb5c5c6ba426a9ac4ba9fe667ad14c5166b12aa25be8af1d122b14fbe2e36  src/3rdparty/chromium/third_party/skia/include/third_party/skcms/LICENSE\nsha256  e59bb5c5c6ba426a9ac4ba9fe667ad14c5166b12aa25be8af1d122b14fbe2e36  src/3rdparty/chromium/third_party/skia/include/third_party/vulkan/LICENSE\nsha256  5f787c1dee3c56547f09ccc2906ab5f5293c4d8dd6c8654e573216c38e908dbd  src/3rdparty/chromium/third_party/skia/LICENSE\nsha256  d27678cba0d529e77201e2d2a053628143e986aad8f1e77f7039ad4366c8f978  src/3rdparty/chromium/third_party/skia/modules/canvaskit/canvaskit/LICENSE\nsha256  d27678cba0d529e77201e2d2a053628143e986aad8f1e77f7039ad4366c8f978  src/3rdparty/chromium/third_party/skia/modules/pathkit/npm-asmjs/LICENSE\nsha256  d27678cba0d529e77201e2d2a053628143e986aad8f1e77f7039ad4366c8f978  src/3rdparty/chromium/third_party/skia/modules/pathkit/npm-wasm/LICENSE\nsha256  5366e97b4478f15a1e2fd7e6094337426597df28de50cd9fed3f2e7e87f1229e  src/3rdparty/chromium/third_party/skia/third_party/etc1/LICENSE\nsha256  e59bb5c5c6ba426a9ac4ba9fe667ad14c5166b12aa25be8af1d122b14fbe2e36  src/3rdparty/chromium/third_party/skia/third_party/skcms/LICENSE\nsha256  e21477eed484b07902a861a1b18d1e4ecd3e6f22fa81e2410f0770cfb67290e8  src/3rdparty/chromium/third_party/skia/third_party/vulkanmemoryallocator/include/LICENSE.txt\nsha256  d27678cba0d529e77201e2d2a053628143e986aad8f1e77f7039ad4366c8f978  src/3rdparty/chromium/third_party/skia/third_party/vulkanmemoryallocator/LICENSE\nsha256  e59bb5c5c6ba426a9ac4ba9fe667ad14c5166b12aa25be8af1d122b14fbe2e36  src/3rdparty/chromium/third_party/skia/third_party/wuffs/LICENSE\nsha256  3f6f1b520bc53e878ccbb698ad0bacef3752a5f4e4b50a26552bd70f60b40748  src/3rdparty/chromium/third_party/smhasher/LICENSE\nsha256  55172044f7e241207117448a4d9d6ba1d0925c8ad66b5d4c08c70adfa9cc3de6  src/3rdparty/chromium/third_party/snappy/src/COPYING\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/spirv-cross/spirv-cross/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/spirv-headers/LICENSE\nsha256  9b243f6f0bf44e295ff411a0f7b7642d1d0dff7cdc42507e9f7206f439e51b5a  src/3rdparty/chromium/third_party/spirv-headers/src/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/SPIRV-Tools/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/SPIRV-Tools/src/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/SPIRV-Tools/src/utils/vscode/src/lsp/LICENSE\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  src/3rdparty/chromium/third_party/sqlite4java/LICENSE\nsha256  06545a6ec25fbbff6c62f205f94a35be49e38f33bea827a8cfb07d7b82e4b083  src/3rdparty/chromium/third_party/sqlite/LICENSE\nsha256  66e056b6e8687f32af30d5187611b98b12a8f46f07aaf62f43585f276e8f0ac9  src/3rdparty/chromium/third_party/sqlite/src/autoconf/tea/license.terms\nsha256  9c6479123f32a1ed50d9a0af203dfe8972e65035b0cdeef436b5f8d0924517fe  src/3rdparty/chromium/third_party/sqlite/src/LICENSE.md\nsha256  033d0150b3bd78b36894c88fcc68da0c3f2e661d3b3485e8cc9a61b2c2bf7895  src/3rdparty/chromium/third_party/subresource-filter-ruleset/LICENSE\nsha256  28113a6e9e2fd7584187c738a7c5484452a1c383307a1741bec50a73262fac08  src/3rdparty/chromium/third_party/sudden_motion_sensor/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/swiftshader/LICENSE.txt\nsha256  ad4672b403488876635d2b455918f74b829d478da868ffc0c621a00fc99195f5  src/3rdparty/chromium/third_party/tcmalloc/LICENSE\nsha256  81ebf38708899097aacaac9723679b3ffa17640c14cd3193c46b75197de18b2c  src/3rdparty/chromium/third_party/tcmalloc/vendor/COPYING\nsha256  d600ff20c150a675461dde76752e35f4cc3be6e7d8e70b8da3e775ea7e5ec4aa  src/3rdparty/chromium/third_party/test_fonts/LICENSE\nsha256  bb04dd22ee55fe3c24ee2a3c82bd1efdebbd965f7c178224a2977edc2457bb2f  src/3rdparty/chromium/third_party/tlslite/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/turbine/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/ub-uiautomator/LICENSE\nsha256  0a90947436dc17f047f8c95b64593e2cc9a2b6d4ff6618f2f0beba5a9b568c14  src/3rdparty/chromium/third_party/unrar/LICENSE\nsha256  6ecc1687808b7d66b24f874755abfed7464d9751ed0001cd4e8e5d9bf397ff8a  src/3rdparty/chromium/third_party/unrar/src/license.txt\nsha256  6629d6edceffa9c68f4245b817137d2265fdab1e98068893420edb6689ccce9e  src/3rdparty/chromium/third_party/usb_ids/LICENSE\nsha256  7a4a31e05391919c05a996f09fc20ffc80c69af72cb3e69ac71b70c825fbdd1d  src/3rdparty/chromium/third_party/usrsctp/LICENSE\nsha256  fa53711b25af4b9a9b8dadfea3cb38166ec4b96760c8d62b284055554537d9ef  src/3rdparty/chromium/third_party/usrsctp/usrsctplib/LICENSE.md\nsha256  5a7f623a50e384aaf6d2ced068339ddf93d0a50d3a0ecbe86f125b07804ecc78  src/3rdparty/chromium/third_party/v4l-utils/COPYING.libv4l\nsha256  376b54d4c5f4aa99421823fa4da93e3ab73096fce2400e89858632aa7da24a14  src/3rdparty/chromium/third_party/wds/LICENSE\nsha256  376b54d4c5f4aa99421823fa4da93e3ab73096fce2400e89858632aa7da24a14  src/3rdparty/chromium/third_party/wds/src/COPYING\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/web-animations-js/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/web-animations-js/sources/COPYING\nsha256  d51b39e7ed0391e75e0add75d1a162fdf4a0d6b49fba7635ed0ac4e16f324773  src/3rdparty/chromium/third_party/webdriver/COPYING\nsha256  6d83e980b9b843cf6fe24cb94714d00f9b0cf69cb00d0e3b0bed018d49d6f24f  src/3rdparty/chromium/third_party/webdriver/LICENSE\nsha256  fec8eb2896784d7b9ef5bcb1c64b97156455a3c88df4fdd36538fb55c0decac4  src/3rdparty/chromium/third_party/webgpu-cts/src/LICENSE.txt\nsha256  e30fbe869f1fa489901bb08888a919c5d50ddb5be6d16b9e4a2cb226263dd7db  src/3rdparty/chromium/third_party/webgpu-cts/src/third_party/jquery/LICENSE.txt\nsha256  25b7731b70c77ecd5f3bb19303fbaa99be18860f81d44f71da670fdcd04829db  src/3rdparty/chromium/third_party/webrtc/common_audio/third_party/fft4g/LICENSE\nsha256  41d791701e3e1c1073470403de7e342442d1e6a2af72681023b13a2f45f2125c  src/3rdparty/chromium/third_party/webrtc/common_audio/third_party/spl_sqrt_floor/LICENSE\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  src/3rdparty/chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE\nsha256  26d2d16d48825edf1194cb3907c5c0b7d01f9c5527eb0fefb949c51f304635e9  src/3rdparty/chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE.md\nsha256  21a742dd8cceebb1d5df7c6f945c75ccf1ad4f0d4c17e404517500c1a7de86a4  src/3rdparty/chromium/third_party/webrtc/examples/objc/AppRTCMobile/third_party/SocketRocket/LICENSE\nsha256  ab00a482b6a3902e40211b43c5d0441962ea99b6cc7c25c0f243fa270b78d482  src/3rdparty/chromium/third_party/webrtc/LICENSE\nsha256  1f7a086c17fa2bdbe27d3eb6424a64b9bea9d7db89a4e220fef52ca24addb9e9  src/3rdparty/chromium/third_party/webrtc/license_template.txt\nsha256  6fdbabd2c95c5efc6f1e46175278239afb9343120a3022ed0e0cb04267a6aeb3  src/3rdparty/chromium/third_party/webrtc/modules/third_party/fft/LICENSE\nsha256  b29c8f13f91feb2dab7d6655444369fa9f29c0d7121a52dab90ff97e40343a85  src/3rdparty/chromium/third_party/webrtc/modules/third_party/g711/LICENSE\nsha256  61862327fd00d6a4deb2c1276577782c2500f4fe103e072018fc369d8e37e876  src/3rdparty/chromium/third_party/webrtc/modules/third_party/g722/LICENSE\nsha256  641007ea2810c4cfc10a5d1a44db33983ec1409305e953c7119cc2457ec5c536  src/3rdparty/chromium/third_party/webrtc/modules/third_party/portaudio/LICENSE\nsha256  a508773ebf00f8c777a910e941e5fd0072195843e1b72a90eb8787d26d4ab1d7  src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/LICENSE\nsha256  905bc5ab1c66eea2669aee6cb5185488508264df6492f71ae1a6595180ff8c2b  src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/sigslot/LICENSE\nsha256  eb077b108bac4c81abe7410274af0930456790add09a6fe5316910e2b936c0f9  src/3rdparty/chromium/third_party/webxr_test_pages/LICENSE\nsha256  eb077b108bac4c81abe7410274af0930456790add09a6fe5316910e2b936c0f9  src/3rdparty/chromium/third_party/webxr_test_pages/webxr-samples/js/cottontail/LICENSE.md\nsha256  47754d3064047c300714af25258efa782e144fdf1e835bfd1edbeb7f8f4ef9e4  src/3rdparty/chromium/third_party/webxr_test_pages/webxr-samples/js/third-party/dat.gui/LICENSE\nsha256  71819b5a0a080b6a3d35b3579817c2c558abcf3c92bb5abc052145a7c106573e  src/3rdparty/chromium/third_party/webxr_test_pages/webxr-samples/js/third-party/gl-matrix/LICENSE\nsha256  eb077b108bac4c81abe7410274af0930456790add09a6fe5316910e2b936c0f9  src/3rdparty/chromium/third_party/webxr_test_pages/webxr-samples/LICENSE.md\nsha256  88d855a8e07a39df758fe9964f5d04d5c2fab39416e566e9d91588e254ca27dc  src/3rdparty/chromium/third_party/weston/LICENSE\nsha256  fdb65868f65d0fbdb05c2d3b779e10ce9969fa0c4b9262ba4f260e87086ab860  src/3rdparty/chromium/third_party/weston/src/COPYING\nsha256  a34730970264d619f352598bf30295ad505a60fc3a493add8aa851645ce3ea47  src/3rdparty/chromium/third_party/weston/src/data/COPYING\nsha256  20de375707692099b3132084695377ce5fec0aec05813dedcce094b8eda44386  src/3rdparty/chromium/third_party/widevine/LICENSE\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  src/3rdparty/chromium/third_party/woff2/LICENSE\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  src/3rdparty/chromium/third_party/wuffs/LICENSE\nsha256  0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594  src/3rdparty/chromium/third_party/wuffs/src/LICENSE\nsha256  b244f73c3d21edaf44ec253b9a7c389ec43313c417f52f8b71914b0c40d87325  src/3rdparty/chromium/third_party/xdg-utils/LICENSE\nsha256  1cf71700f3403ca26f002e2dc1d1861dcb3d2af9bb9d98d529a903be9d7f06fc  src/3rdparty/chromium/third_party/xstream/LICENSE\nsha256  795f8d76eade6130129b680ac72ea81cb3e143467a65ea1f5f64946151d7fa20  src/3rdparty/chromium/third_party/yasm/source/patched-yasm/COPYING\nsha256  942755efa272dbfbcd7afea7a38556801e36c16dcad002d572378367094a2593  src/3rdparty/chromium/third_party/zlib/LICENSE\nsha256  a4c8c5abf82b36c22f8c9f8bd6229584f32eb9f7a2429dd9664dda43e63e9fda  src/3rdparty/chromium/tools/grit/third_party/six/LICENSE\nsha256  63f0c0039b477857e54708d9501ed91b7a46e828ac3c623bedbc318129ceb174  src/3rdparty/chromium/tools/origin_trials/third_party/ed25519/LICENSE\nsha256  f5b244982699ca9fe5cc8fa8a7c08cf5dee5d3a0c8896892899e5df13316e1b7  src/3rdparty/chromium/tools/page_cycler/acid3/LICENSE\nsha256  7389900fb68d920c6cb21b70702a2bc240523472a3fd091023d6135cf01d1c5c  src/3rdparty/chromium/tools/win/ChromeDebug/ChromeDebug/LICENSE\nsha256  284545e873c704952e5b1b39d457dd83a3b115a51d9f1eb5175137bd69b8fa1b  src/3rdparty/chromium/url/third_party/mozilla/LICENSE.txt\nsha256  f10a1808e442ae7dbfecf6b54ae4de84193a768770e189a67d5f397730acdbc9  src/3rdparty/chromium/v8/LICENSE\nsha256  e7115e18444dae09d17f361ddc365fb1d342640fe500796209c63f7c80dfae10  src/3rdparty/chromium/v8/LICENSE.fdlibm\nsha256  6a585a9f466654abc8fc0829d56b1bc987e3a073d31faa03bba37d33640a23cd  src/3rdparty/chromium/v8/LICENSE.strongtalk\nsha256  4af93c12062c58058378de2397dc1c92bbff9ddfb1d583a01c84127557ce97ca  src/3rdparty/chromium/v8/LICENSE.v8\nsha256  cae8c00ca6e90a682c321ec11e7a5a345d0d317aa0b8f038e03ef03a18095b2f  src/3rdparty/chromium/v8/LICENSE.valgrind\nsha256  36ffd9dc085d529a7e60e1276d73ae5a030b020313e6c5408593a6ae2af39673  src/3rdparty/chromium/v8/src/third_party/siphash/LICENSE\nsha256  3f712e5fbdfdbd5ee7d9b8c8152580220df55de47f4eba2f26c95c4de19ad096  src/3rdparty/chromium/v8/src/third_party/utf8-decoder/LICENSE\nsha256  ebf25b8ce59c9e8883acd1ca75b6fc121937ca034f666c4077d2be739d2e1622  src/3rdparty/chromium/v8/src/third_party/valgrind/LICENSE\nsha256  cfe7599e45f340a35b4635090382897ca1526bc49b5e1889047f0168d131c415  src/3rdparty/chromium/v8/src/third_party/vtune/LICENSE\nsha256  15137d6c822e3ab097093a33c3a39a9df699f373f6438867ad534ff60762a947  src/3rdparty/chromium/v8/third_party/colorama/LICENSE\nsha256  b9be92f13356083392d97da13cab8ae543c7911f44eff5289b693da8b17b9e08  src/3rdparty/chromium/v8/third_party/inspector_protocol/LICENSE\nsha256  b9a6d9320b8f2693e8d41e496ce56caadacaddcca9be2a64a61749278f425cf2  src/3rdparty/chromium/v8/third_party/v8/builtins/LICENSE\nsha256  c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08  src/3rdparty/chromium/v8/third_party/wasm-api/LICENSE\nsha256  5d85142a5609ad177a2d7a2e7cae060b886b8b42f25c5b9803cf0cb5ee04ad2f  src/3rdparty/gn/base/third_party/icu/LICENSE\nsha256  845022e0c1db1abb41a6ba4cd3c4b674ec290f3359d9d3c78ae558d4c0ed9308  src/3rdparty/gn/LICENSE\nsha256  eb7e9ab9690124c5c9f42bdc81383d886a3dede26345b6ed15bbad7caf81f7ea  src/3rdparty/ninja/COPYING\n"
  },
  {
    "path": "package/qt5/qt5webengine/qt5webengine.mk",
    "content": "################################################################################\n#\n# qt5webengine\n#\n################################################################################\n\nQT5WEBENGINE_VERSION = $(QT5_VERSION)\nQT5WEBENGINE_SITE = $(QT5_SITE)\nQT5WEBENGINE_SOURCE = qtwebengine-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5WEBENGINE_VERSION).tar.xz\nQT5WEBENGINE_DEPENDENCIES = ffmpeg libglib2 libvpx libxkbcommon opus webp \\\n\tqt5declarative qt5webchannel host-bison host-flex host-gperf \\\n\thost-pkgconf host-python\nQT5WEBENGINE_INSTALL_STAGING = YES\n\ninclude package/qt5/qt5webengine/chromium-latest.inc\n\nQT5WEBENGINE_LICENSE = GPL-2.0 or LGPL-3.0 or GPL-3.0 or GPL-3.0 with exception\nQT5WEBENGINE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT \\\n\tLICENSE.GPLv3 LICENSE.LGPL3 $(QT5WEBENGINE_CHROMIUM_LICENSE_FILES)\n\nifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)\nQT5WEBENGINE_DEPENDENCIES += qt5svg\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_XCB),y)\nQT5WEBENGINE_DEPENDENCIES += xlib_libXScrnSaver xlib_libXcomposite \\\n\txlib_libXcursor xlib_libXi xlib_libXrandr xlib_libXtst\nendif\n\nQT5WEBENGINE_DEPENDENCIES += host-libpng host-libnss libnss\n\nQT5WEBENGINE_CONF_OPTS += WEBENGINE_CONFIG+=use_system_ffmpeg\n\nifeq ($(BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS),y)\nQT5WEBENGINE_CONF_OPTS += WEBENGINE_CONFIG+=use_proprietary_codecs\nendif\n\nifeq ($(BR2_PACKAGE_QT5WEBENGINE_ALSA),y)\nQT5WEBENGINE_DEPENDENCIES += alsa-lib\nelse\nQT5WEBENGINE_CONF_OPTS += QT_CONFIG-=alsa\nendif\n\n# QtWebengine's build system uses python, but only supports python2. We work\n# around this by forcing python2 early in the PATH, via a python->python2\n# symlink.\nQT5WEBENGINE_ENV = PATH=$(@D)/host-bin:$(BR_PATH)\ndefine QT5WEBENGINE_PYTHON2_SYMLINK\n\tmkdir -p $(@D)/host-bin\n\tln -sf $(HOST_DIR)/bin/python2 $(@D)/host-bin/python\nendef\nQT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_PYTHON2_SYMLINK\n\nQT5WEBENGINE_ENV += NINJAFLAGS=\"-j$(PARALLEL_JOBS)\"\n\ndefine QT5WEBENGINE_CREATE_HOST_PKG_CONFIG\n\tsed s%@HOST_DIR@%$(HOST_DIR)%g $(QT5WEBENGINE_PKGDIR)/host-pkg-config.in > $(@D)/host-bin/host-pkg-config\n\tchmod +x $(@D)/host-bin/host-pkg-config\nendef\nQT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_CREATE_HOST_PKG_CONFIG\nQT5WEBENGINE_ENV += GN_PKG_CONFIG_HOST=$(@D)/host-bin/host-pkg-config\n\nQT5WEBENGINE_CONF_ENV = $(QT5WEBENGINE_ENV)\nQT5WEBENGINE_MAKE_ENV = $(QT5WEBENGINE_ENV)\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5webkit/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch",
    "content": "From 1735a8484ef9ae336f8d607b56bda64c8af10c79 Mon Sep 17 00:00:00 2001\nFrom: Trevor Woerner <trevor.woerner@linaro.org>\nDate: Fri, 7 Feb 2014 04:07:17 +0100\nSubject: [PATCH] qtwebkit: fix QA issue (bad RPATH)\n\nBuilding qtwebkit causes a QA issue such that QtWebPluginProcess and\nQtWebProcess contain bad RPATHs which point into the build location. This fix\nadds a patch to not include the rpath.prf which causes this problem.\n\nSigned-off-by: Trevor Woerner <trevor.woerner@linaro.org>\nSigned-off-by: Martin Jansa <Martin.Jansa@gmail.com>\n\nDownloaded from:\nhttps://github.com/meta-qt5/meta-qt5/blob/krogoth/recipes-qt/qt5/qtwebkit/\n0001-qtwebkit-fix-QA-issue-bad-RPATH.patch\n\nSigned-off-by: Gary Bisson <gary.bisson@boundarydevices.com>\n---\n Tools/qmake/mkspecs/features/unix/default_post.prf | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/Tools/qmake/mkspecs/features/unix/default_post.prf b/Tools/qmake/mkspecs/features/unix/default_post.prf\nindex fd66af6..ef754c3 100644\n--- a/Tools/qmake/mkspecs/features/unix/default_post.prf\n+++ b/Tools/qmake/mkspecs/features/unix/default_post.prf\n@@ -61,7 +61,6 @@ linux-*g++* {\n     }\n }\n \n-contains(TEMPLATE, app): CONFIG += rpath\n \n CONFIG(debug, debug|release)|force_debug_info {\n     # Make ld not cache the symbol tables of input files in memory to avoid memory exhaustion during the linking phase.\n-- \n2.7.0\n\n"
  },
  {
    "path": "package/qt5/qt5webkit/0002-Exclude-backtrace-API-for-non-glibc-libraries.patch",
    "content": "From 6c36f0ff8c1f5852c33d2b23714f9f187cc6ff26 Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Fri, 5 Jun 2015 19:55:05 -0700\nSubject: [PATCH] Exclude backtrace() API for non-glibc libraries\n\nIt was excluding musl with current checks, so lets make it such that it\nconsiders only glibc when using backtrace API\n\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\n\nDownloaded from:\nhttps://github.com/meta-qt5/meta-qt5/blob/krogoth/recipes-qt/qt5/qtwebkit/\n0003-Exclude-backtrace-API-for-non-glibc-libraries.patch\n\nSigned-off-by: Gary Bisson <gary.bisson@boundarydevices.com>\n---\n Source/WTF/wtf/Assertions.cpp | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Source/WTF/wtf/Assertions.cpp b/Source/WTF/wtf/Assertions.cpp\nindex 1b2091f..ba03a28 100644\n--- a/Source/WTF/wtf/Assertions.cpp\n+++ b/Source/WTF/wtf/Assertions.cpp\n@@ -61,7 +61,7 @@\n #include <windows.h>\n #endif\n \n-#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID)\n+#if (OS(DARWIN) || (OS(LINUX) && defined (__GLIBC__) && !defined(__UCLIBC__))) && !OS(ANDROID)\n #include <cxxabi.h>\n #include <dlfcn.h>\n #include <execinfo.h>\n@@ -245,7 +245,7 @@ void WTFReportArgumentAssertionFailure(const char* file, int line, const char* f\n \n void WTFGetBacktrace(void** stack, int* size)\n {\n-#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID)\n+#if (OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__))) && !OS(ANDROID)\n     *size = backtrace(stack, *size);\n #elif OS(WINDOWS) && !OS(WINCE)\n     // The CaptureStackBackTrace function is available in XP, but it is not defined\n-- \n2.7.0\n\n"
  },
  {
    "path": "package/qt5/qt5webkit/0003-Detect-32-bits-armv8-a-architecture.patch",
    "content": "From 068bf2d2d91382ea0d8ec24a142a30ea429704db Mon Sep 17 00:00:00 2001\nFrom: =?utf-8?q?Ga=C3=ABl=20PORTAY?= <gael.portay@savoirfairelinux.com>\nDate: Tue, 15 Aug 2017 18:28:49 -0400\nSubject: [PATCH] Detect 32-bits armv8-a architecture\nMIME-Version: 1.0\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: 8bit\n\nAdds WTF platform support for the 32-bits armv8-a architectures.\n\nTheses toolchains define __ARM_ARCH_8A__ (for ARM architecture version)\nand __arm__ (for 32-bits word-size; __aarch64__ for 64-bits).\n\nThis commit catches this new architecture (armv8a) within a #ifdef/#endif\ninside the if statement dedicated for 32-bits ARM detection.\n\nFixes:\n\n\tIn file included from ./config.h:30:0,\n\t                 from ...\n\t./wtf/Platform.h:323:6: error: #error \"Not supported ARM architecture\"\n\t #    error \"Not supported ARM architecture\"\n\t      ^~~~~\n\nUpstream-Status: Backport [with adaptations]\nSigned-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>\n---\n Source/WTF/wtf/Platform.h | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h\nindex 562840cf7..9cf656845 100644\n--- a/Source/WTF/wtf/Platform.h\n+++ b/Source/WTF/wtf/Platform.h\n@@ -243,6 +243,10 @@\n     || defined(__ARM_ARCH_7S__)\n #define WTF_ARM_ARCH_VERSION 7\n \n+#elif defined(__ARM_ARCH_8__) \\\n+    || defined(__ARM_ARCH_8A__)\n+#define WTF_ARM_ARCH_VERSION 8\n+\n /* MSVC sets _M_ARM */\n #elif defined(_M_ARM)\n #define WTF_ARM_ARCH_VERSION _M_ARM\n-- \n2.16.1\n\n"
  },
  {
    "path": "package/qt5/qt5webkit/0004-Fix-installation-of-class-headers.patch",
    "content": "From 7d763d441fd4fa78553a818ee75ac477eb6dbcbe Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= <gael.portay@savoirfairelinux.com>\nDate: Sun, 2 Feb 2020 10:48:50 +0100\nSubject: [PATCH] Fix installation of class headers\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSince Qt 5.11 (see commit [1]), the key word HEADER_CLASSES has been\nremoved. It has been replaced by a new variable GENERATED_HEADER_FILES.\n\nThe class headers were not generated, this commit moves them directly to\nHEADER_FILES.\n\n[1]: https://github.com/qt/qtbase/commit/9c4c136bc9f29bab1cc9684dfced55a92a8bbe96\n\nSigned-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>\n[Converted to git formated patch]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n include/QtWebKit/headers.pri        | 3 +--\n include/QtWebKitWidgets/headers.pri | 3 +--\n 2 files changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/include/QtWebKit/headers.pri b/include/QtWebKit/headers.pri\nindex 6775f3a6..3a5c14cd 100644\n--- a/include/QtWebKit/headers.pri\n+++ b/include/QtWebKit/headers.pri\n@@ -1,5 +1,4 @@\n-SYNCQT.HEADER_FILES = WebKit/qt/Api/qwebdatabase.h WebKit/qt/Api/qwebelement.h WebKit/qt/Api/qwebhistory.h WebKit/qt/Api/qwebhistoryinterface.h WebKit/qt/Api/qwebkitglobal.h WebKit/qt/Api/qwebkitplatformplugin.h WebKit/qt/Api/qwebpluginfactory.h WebKit/qt/Api/qwebsecurityorigin.h WebKit/qt/Api/qwebsettings.h ../include/QtWebKit/qtwebkitversion.h ../include/QtWebKit/QtWebKit \n-SYNCQT.HEADER_CLASSES = ../include/QtWebKit/QWebDatabase ../include/QtWebKit/QWebElement ../include/QtWebKit/QWebElementCollection ../include/QtWebKit/QWebHistoryItem ../include/QtWebKit/QWebHistory ../include/QtWebKit/QWebHistoryInterface ../include/QtWebKit/QWebSelectData ../include/QtWebKit/QWebSelectMethod ../include/QtWebKit/QWebNotificationData ../include/QtWebKit/QWebNotificationPresenter ../include/QtWebKit/QWebHapticFeedbackPlayer ../include/QtWebKit/QWebTouchModifier ../include/QtWebKit/QWebFullScreenVideoHandler ../include/QtWebKit/QWebSpellChecker ../include/QtWebKit/QWebKitPlatformPlugin ../include/QtWebKit/QWebPluginFactory ../include/QtWebKit/QWebSecurityOrigin ../include/QtWebKit/QWebSettings ../include/QtWebKit/QtWebKitVersion \n+SYNCQT.HEADER_FILES = WebKit/qt/Api/qwebdatabase.h WebKit/qt/Api/qwebelement.h WebKit/qt/Api/qwebhistory.h WebKit/qt/Api/qwebhistoryinterface.h WebKit/qt/Api/qwebkitglobal.h WebKit/qt/Api/qwebkitplatformplugin.h WebKit/qt/Api/qwebpluginfactory.h WebKit/qt/Api/qwebsecurityorigin.h WebKit/qt/Api/qwebsettings.h ../include/QtWebKit/qtwebkitversion.h ../include/QtWebKit/QtWebKit ../include/QtWebKit/QWebDatabase ../include/QtWebKit/QWebElement ../include/QtWebKit/QWebElementCollection ../include/QtWebKit/QWebHistoryItem ../include/QtWebKit/QWebHistory ../include/QtWebKit/QWebHistoryInterface ../include/QtWebKit/QWebSelectData ../include/QtWebKit/QWebSelectMethod ../include/QtWebKit/QWebNotificationData ../include/QtWebKit/QWebNotificationPresenter ../include/QtWebKit/QWebHapticFeedbackPlayer ../include/QtWebKit/QWebTouchModifier ../include/QtWebKit/QWebFullScreenVideoHandler ../include/QtWebKit/QWebSpellChecker ../include/QtWebKit/QWebKitPlatformPlugin ../include/QtWebKit/QWebPluginFactory ../include/QtWebKit/QWebSecurityOrigin ../include/QtWebKit/QWebSettings ../include/QtWebKit/QtWebKitVersion \n SYNCQT.PRIVATE_HEADER_FILES = WebKit/qt/Api/qhttpheader_p.h WebKit/qt/Api/qwebdatabase_p.h WebKit/qt/Api/qwebelement_p.h WebKit/qt/Api/qwebhistory_p.h WebKit/qt/Api/qwebplugindatabase_p.h WebKit/qt/Api/qwebscriptworld.h WebKit/qt/Api/qwebscriptworld_p.h WebKit/qt/Api/qwebsecurityorigin_p.h WebKit2/UIProcess/API/qt/qquicknetworkreply_p.h WebKit2/UIProcess/API/qt/qquicknetworkrequest_p.h WebKit2/UIProcess/API/qt/qquickurlschemedelegate_p.h WebKit2/UIProcess/API/qt/qquickwebpage_p.h WebKit2/UIProcess/API/qt/qquickwebpage_p_p.h WebKit2/UIProcess/API/qt/qquickwebview_p.h WebKit2/UIProcess/API/qt/qquickwebview_p_p.h WebKit2/UIProcess/API/qt/qtwebsecurityorigin_p.h WebKit2/UIProcess/API/qt/qwebchannelwebkittransport_p.h WebKit2/UIProcess/API/qt/qwebdownloaditem_p.h WebKit2/UIProcess/API/qt/qwebdownloaditem_p_p.h WebKit2/UIProcess/API/qt/qwebiconimageprovider_p.h WebKit2/UIProcess/API/qt/qwebkittest_p.h WebKit2/UIProcess/API/qt/qwebloadrequest_p.h WebKit2/UIProcess/API/qt/qwebnavigationhistory_p.h WebKit2/UIProcess/API/qt/qwebnavigationhistory_p_p.h WebKit2/UIProcess/API/qt/qwebnavigationrequest_p.h WebKit2/UIProcess/API/qt/qwebpermissionrequest_p.h WebKit2/UIProcess/API/qt/qwebpreferences_p.h WebKit2/UIProcess/API/qt/qwebpreferences_p_p.h WebKit2/UIProcess/API/qt/raw/qrawwebview_p.h WebKit2/UIProcess/API/qt/raw/qrawwebview_p_p.h WebKit2/UIProcess/API/qt/tests/bytearraytestdata.h WebKit2/UIProcess/API/qt/tests/testwindow.h WebKit2/UIProcess/API/qt/tests/util.h \n SYNCQT.INJECTED_PRIVATE_HEADER_FILES = \n SYNCQT.QPA_HEADER_FILES = \ndiff --git a/include/QtWebKitWidgets/headers.pri b/include/QtWebKitWidgets/headers.pri\nindex 9d386e29..2b8b095c 100644\n--- a/include/QtWebKitWidgets/headers.pri\n+++ b/include/QtWebKitWidgets/headers.pri\n@@ -1,5 +1,4 @@\n-SYNCQT.HEADER_FILES = WebKit/qt/WidgetApi/qgraphicswebview.h WebKit/qt/WidgetApi/qwebframe.h WebKit/qt/WidgetApi/qwebinspector.h WebKit/qt/WidgetApi/qwebpage.h WebKit/qt/WidgetApi/qwebview.h ../include/QtWebKitWidgets/qtwebkitwidgetsversion.h ../include/QtWebKitWidgets/QtWebKitWidgets \n-SYNCQT.HEADER_CLASSES = ../include/QtWebKitWidgets/QGraphicsWebView ../include/QtWebKitWidgets/QWebHitTestResult ../include/QtWebKitWidgets/QWebFrame ../include/QtWebKitWidgets/QWebInspector ../include/QtWebKitWidgets/QWebPage ../include/QtWebKitWidgets/QWebView ../include/QtWebKitWidgets/QtWebKitWidgetsVersion \n+SYNCQT.HEADER_FILES = WebKit/qt/WidgetApi/qgraphicswebview.h WebKit/qt/WidgetApi/qwebframe.h WebKit/qt/WidgetApi/qwebinspector.h WebKit/qt/WidgetApi/qwebpage.h WebKit/qt/WidgetApi/qwebview.h ../include/QtWebKitWidgets/qtwebkitwidgetsversion.h ../include/QtWebKitWidgets/QtWebKitWidgets ../include/QtWebKitWidgets/QGraphicsWebView ../include/QtWebKitWidgets/QWebHitTestResult ../include/QtWebKitWidgets/QWebFrame ../include/QtWebKitWidgets/QWebInspector ../include/QtWebKitWidgets/QWebPage ../include/QtWebKitWidgets/QWebView ../include/QtWebKitWidgets/QtWebKitWidgetsVersion \n SYNCQT.PRIVATE_HEADER_FILES = WebKit/qt/WidgetApi/qwebframe_p.h WebKit/qt/WidgetApi/qwebinspector_p.h WebKit/qt/WidgetApi/qwebpage_p.h WebKit/qt/WidgetApi/qwebviewaccessible_p.h \n SYNCQT.INJECTED_PRIVATE_HEADER_FILES = \n SYNCQT.QPA_HEADER_FILES = \n-- \n2.25.0\n\n"
  },
  {
    "path": "package/qt5/qt5webkit/0005-Fix-ICU-related-compile-failures.patch",
    "content": "From 38e3436db7222ac403a405db7e0fd1d472f1704a Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Sun, 2 Feb 2020 10:51:00 +0100\nSubject: [PATCH] Fix ICU related compile failures.\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe ICU macro U16_NEXT() needs a trailing semicolon.\n\nFixes:\n\n  platform/graphics/SegmentedFontData.cpp:65:9: error: expected ‘;’ before ‘if’\n  dom/Document.cpp:3850:5: error: expected ‘;’ before ‘if’\n  dom/Document.cpp:3855:9: error: expected ‘;’ before ‘if’\n  dom/Document.cpp:3918:9: error: expected ‘;’ before ‘if’\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n Source/WebCore/dom/Document.cpp                        | 6 +++---\n Source/WebCore/platform/graphics/SegmentedFontData.cpp | 2 +-\n 2 files changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/Source/WebCore/dom/Document.cpp b/Source/WebCore/dom/Document.cpp\nindex af63b141..26f7312b 100644\n--- a/Source/WebCore/dom/Document.cpp\n+++ b/Source/WebCore/dom/Document.cpp\n@@ -3846,12 +3846,12 @@ static bool isValidNameNonASCII(const UChar* characters, unsigned length)\n     unsigned i = 0;\n \n     UChar32 c;\n-    U16_NEXT(characters, i, length, c)\n+    U16_NEXT(characters, i, length, c);\n     if (!isValidNameStart(c))\n         return false;\n \n     while (i < length) {\n-        U16_NEXT(characters, i, length, c)\n+        U16_NEXT(characters, i, length, c);\n         if (!isValidNamePart(c))\n             return false;\n     }\n@@ -3914,7 +3914,7 @@ bool Document::parseQualifiedName(const String& qualifiedName, String& prefix, S\n     const UChar* s = qualifiedName.characters();\n     for (unsigned i = 0; i < length;) {\n         UChar32 c;\n-        U16_NEXT(s, i, length, c)\n+        U16_NEXT(s, i, length, c);\n         if (c == ':') {\n             if (sawColon) {\n                 ec = NAMESPACE_ERR;\ndiff --git a/Source/WebCore/platform/graphics/SegmentedFontData.cpp b/Source/WebCore/platform/graphics/SegmentedFontData.cpp\nindex efb20a8c..99b3e86c 100644\n--- a/Source/WebCore/platform/graphics/SegmentedFontData.cpp\n+++ b/Source/WebCore/platform/graphics/SegmentedFontData.cpp\n@@ -61,7 +61,7 @@ bool SegmentedFontData::containsCharacters(const UChar* characters, int length)\n {\n     UChar32 c;\n     for (int i = 0; i < length; ) {\n-        U16_NEXT(characters, i, length, c)\n+        U16_NEXT(characters, i, length, c);\n         if (!containsCharacter(c))\n             return false;\n     }\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/qt5/qt5webkit/0006-configure-remove-legacy-reference-to-qtConfig-mircli.patch",
    "content": "From c408484e3a442ecf99d3cc61402f20c45c894b7c Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Mon, 3 Feb 2020 21:19:57 +0100\nSubject: [PATCH] configure: remove legacy reference to qtConfig(mirclient)\n\nThe optio mirclient is removed since Qt-5.14.x (see [1])\nFixes:\n\n  Project ERROR: Could not find feature mirclient.\n\n[1] https://code.qt.io/cgit/qt/qtbase.git/commit/?id=8c73ddd8e3fb43cc22fa111b855ab1f9f5b83405\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n Tools/qmake/mkspecs/features/configure.prf | 3 ---\n 1 file changed, 3 deletions(-)\n\ndiff --git a/Tools/qmake/mkspecs/features/configure.prf b/Tools/qmake/mkspecs/features/configure.prf\nindex 23d99040..783f6752 100644\n--- a/Tools/qmake/mkspecs/features/configure.prf\n+++ b/Tools/qmake/mkspecs/features/configure.prf\n@@ -130,9 +130,6 @@ defineTest(finalizeConfigure) {\n         addReasonForSkippingBuild(\"Build not supported on Android.\")\n     }\n     QT_FOR_CONFIG += gui-private\n-    production_build:qtConfig(mirclient) {\n-        addReasonForSkippingBuild(\"Build not supported on Ubuntu Touch.\")\n-    }\n     !gnu_thin_archives:!win32-msvc2013:!mingw:qtConfig(static) {\n         addReasonForSkippingBuild(\"QtWebKit cannot be built as a static library on this platform. Check your configuration in qtbase/config.summary.\")\n     }\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/qt5/qt5webkit/0007-Let-Bison-generate-the-header-directly-to-fix-build-.patch",
    "content": "From 894a5448ee8ce0f134845c877b4c0a2a660e4ab3 Mon Sep 17 00:00:00 2001\nFrom: Dmitry Shachnev <mitya57@gmail.com>\nDate: Tue, 4 Aug 2020 21:04:06 +0300\nSubject: [PATCH] Let Bison generate the header directly, to fix build with\n Bison 3.7\n\nStarting with Bison 3.7, the generated C++ file #include's the header\nby default, instead of duplicating it. So we should not delete it.\n\nRemove the code to add #ifdef guards to the header, since Bison adds\nthem itself since version 2.6.3.\n\n[Original patch taken from\nhttps://gitweb.gentoo.org/repo/gentoo.git/plain/dev-qt/qtwebkit/files/qtwebkit-5.212.0_pre20200309-bison-3.7.patch?id=69e618c88a9134f754264efc11aa0b1fdc028b88\nported to qtwebkit-opensource-src-5.9.1]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n Source/WebCore/css/makegrammar.pl | 21 +--------------------\n 1 file changed, 1 insertion(+), 20 deletions(-)\n\ndiff --git a/Source/WebCore/css/makegrammar.pl b/Source/WebCore/css/makegrammar.pl\nindex 4e0452ed..9ef32963 100644\n--- a/Source/WebCore/css/makegrammar.pl\n+++ b/Source/WebCore/css/makegrammar.pl\n@@ -73,23 +73,4 @@ if ($suffix eq \".y.in\") {\n }\n \n my $fileBase = File::Spec->join($outputDir, $filename);\n-system(\"$bison -d -p $symbolsPrefix $grammarFilePath -o $fileBase.cpp\");\n-\n-open HEADER, \">$fileBase.h\" or die;\n-print HEADER << \"EOF\";\n-#ifndef CSSGRAMMAR_H\n-#define CSSGRAMMAR_H\n-EOF\n-\n-open HPP, \"<$fileBase.cpp.h\" or open HPP, \"<$fileBase.hpp\" or die;\n-while (<HPP>) {\n-    print HEADER;\n-}\n-close HPP;\n-\n-print HEADER \"#endif\\n\";\n-close HEADER;\n-\n-unlink(\"$fileBase.cpp.h\");\n-unlink(\"$fileBase.hpp\");\n-\n+system(\"$bison --defines=$fileBase.h -p $symbolsPrefix $grammarFilePath -o $fileBase.cpp\");\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/qt5/qt5webkit/0008-let-bison-generate-the-header-directly-to-fix-build-.patch",
    "content": "From 8959e226fac7f73b9a40e202610bd5e12334561b Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Tue, 15 Sep 2020 19:11:18 +0200\nSubject: [PATCH] let bison generate the header directly, to fix build with\n bison 3.7\n\nDo the same as the patch taken from [1] for the bison call in\nSource/WebCore/DerivedSources.pri to fix file generation\nfor bison 3.7.\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n Source/WebCore/DerivedSources.pri | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Source/WebCore/DerivedSources.pri b/Source/WebCore/DerivedSources.pri\nindex 57a6b0f7..e9f52614 100644\n--- a/Source/WebCore/DerivedSources.pri\n+++ b/Source/WebCore/DerivedSources.pri\n@@ -987,7 +987,7 @@ GENERATORS += pluginsresources\n # GENERATOR 11: XPATH grammar\n xpathbison.output = ${QMAKE_FILE_BASE}.cpp\n xpathbison.input = XPATHBISON\n-xpathbison.commands = bison -d -p xpathyy ${QMAKE_FILE_NAME} -o ${QMAKE_FUNC_FILE_OUT_PATH}/${QMAKE_FILE_BASE}.tab.c && $(MOVE) ${QMAKE_FUNC_FILE_OUT_PATH}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.c ${QMAKE_FUNC_FILE_OUT_PATH}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.cpp && $(MOVE) ${QMAKE_FUNC_FILE_OUT_PATH}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.tab.h ${QMAKE_FUNC_FILE_OUT_PATH}$${QMAKE_DIR_SEP}${QMAKE_FILE_BASE}.h\n+xpathbison.commands = bison --defines=${QMAKE_FUNC_FILE_OUT_PATH}/${QMAKE_FILE_BASE}.h -p xpathyy ${QMAKE_FILE_NAME} -o ${QMAKE_FUNC_FILE_OUT_PATH}/${QMAKE_FILE_BASE}.cpp\n xpathbison.depends = ${QMAKE_FILE_NAME}\n GENERATORS += xpathbison\n \n-- \n2.28.0\n\n"
  },
  {
    "path": "package/qt5/qt5webkit/0009-Fix-ICU-related-compile-failures-from-capital-bool-d.patch",
    "content": "From 37ee268d9d07a8dad02c1d8db3bf96e0b30df10b Mon Sep 17 00:00:00 2001\nFrom: Henri Roosen <henri.roosen@ginzinger.com>\nDate: Thu, 18 Mar 2021 11:53:57 +0100\nSubject: [PATCH] Fix ICU related compile failures from capital bool defines\n\nSee ICU-21267\n\nSigned-off-by: Henri Roosen <henri.roosen@ginzinger.com>\n---\n .../platform/text/TextBreakIteratorICU.cpp       | 16 ++++++++--------\n Source/WebCore/platform/text/TextCodecICU.cpp    |  2 +-\n 2 files changed, 9 insertions(+), 9 deletions(-)\n\ndiff --git a/Source/WebCore/platform/text/TextBreakIteratorICU.cpp b/Source/WebCore/platform/text/TextBreakIteratorICU.cpp\nindex b4046ac9..832890a2 100644\n--- a/Source/WebCore/platform/text/TextBreakIteratorICU.cpp\n+++ b/Source/WebCore/platform/text/TextBreakIteratorICU.cpp\n@@ -214,12 +214,12 @@ static inline bool textInChunkOrOutOfRange(UText* text, int64_t nativeIndex, int\n             // Ensure chunk offset is well formed if computed offset exceeds int32_t range.\n             ASSERT(offset < numeric_limits<int32_t>::max());\n             text->chunkOffset = offset < numeric_limits<int32_t>::max() ? static_cast<int32_t>(offset) : 0;\n-            isAccessible = TRUE;\n+            isAccessible = true;\n             return true;\n         }\n         if (nativeIndex >= nativeLength && text->chunkNativeLimit == nativeLength) {\n             text->chunkOffset = text->chunkLength;\n-            isAccessible = FALSE;\n+            isAccessible = false;\n             return true;\n         }\n     } else {\n@@ -228,12 +228,12 @@ static inline bool textInChunkOrOutOfRange(UText* text, int64_t nativeIndex, int\n             // Ensure chunk offset is well formed if computed offset exceeds int32_t range.\n             ASSERT(offset < numeric_limits<int32_t>::max());\n             text->chunkOffset = offset < numeric_limits<int32_t>::max() ? static_cast<int32_t>(offset) : 0;\n-            isAccessible = TRUE;\n+            isAccessible = true;\n             return true;\n         }\n         if (nativeIndex <= 0 && !text->chunkNativeStart) {\n             text->chunkOffset = 0;\n-            isAccessible = FALSE;\n+            isAccessible = false;\n             return true;\n         }\n     }\n@@ -243,7 +243,7 @@ static inline bool textInChunkOrOutOfRange(UText* text, int64_t nativeIndex, int\n static UBool textLatin1Access(UText* text, int64_t nativeIndex, UBool forward)\n {\n     if (!text->context)\n-        return FALSE;\n+        return false;\n     int64_t nativeLength = textNativeLength(text);\n     UBool isAccessible;\n     if (textInChunkOrOutOfRange(text, nativeIndex, nativeLength, forward, isAccessible))\n@@ -263,7 +263,7 @@ static UBool textLatin1Access(UText* text, int64_t nativeIndex, UBool forward)\n         ASSERT(newContext == PriorContext);\n         textLatin1SwitchToPriorContext(text, nativeIndex, nativeLength, forward);\n     }\n-    return TRUE;\n+    return true;\n }\n \n static const struct UTextFuncs textLatin1Funcs = {\n@@ -364,7 +364,7 @@ static void textUTF16SwitchToPriorContext(UText* text, int64_t nativeIndex, int6\n static UBool textUTF16Access(UText* text, int64_t nativeIndex, UBool forward)\n {\n     if (!text->context)\n-        return FALSE;\n+        return false;\n     int64_t nativeLength = textNativeLength(text);\n     UBool isAccessible;\n     if (textInChunkOrOutOfRange(text, nativeIndex, nativeLength, forward, isAccessible))\n@@ -384,7 +384,7 @@ static UBool textUTF16Access(UText* text, int64_t nativeIndex, UBool forward)\n         ASSERT(newContext == PriorContext);\n         textUTF16SwitchToPriorContext(text, nativeIndex, nativeLength, forward);\n     }\n-    return TRUE;\n+    return true;\n }\n \n static const struct UTextFuncs textUTF16Funcs = {\ndiff --git a/Source/WebCore/platform/text/TextCodecICU.cpp b/Source/WebCore/platform/text/TextCodecICU.cpp\nindex 86d4ea17..da152edd 100644\n--- a/Source/WebCore/platform/text/TextCodecICU.cpp\n+++ b/Source/WebCore/platform/text/TextCodecICU.cpp\n@@ -269,7 +269,7 @@ void TextCodecICU::createICUConverter() const\n     m_converterICU = ucnv_open(m_canonicalConverterName, &err);\n     ASSERT(U_SUCCESS(err));\n     if (m_converterICU)\n-        ucnv_setFallback(m_converterICU, TRUE);\n+        ucnv_setFallback(m_converterICU, true);\n }\n \n int TextCodecICU::decodeToBuffer(UChar* target, UChar* targetLimit, const char*& source, const char* sourceLimit, int32_t* offsets, bool flush, UErrorCode& err)\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/qt5/qt5webkit/Config.in",
    "content": "config BR2_PACKAGE_QT5WEBKIT\n\tbool \"qt5webkit\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n\tdepends on BR2_INSTALL_LIBSTDCPP # leveldb\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # icu, host-ruby\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # icu\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # leveldb\n\tdepends on !BR2_BINFMT_FLAT # icu\n\t# assumes a FPU is available on MIPS\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_PACKAGE_LEVELDB\n\tselect BR2_PACKAGE_QT5BASE_ICU\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT5BASE_XCB\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_QT5BASE_XCB\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt WebKit module provides the WebView API, which\n\t  allows QML applications to render regions of dynamic\n\t  web content.\n\n\t  This package has been removed from the official release\n\t  packages since Qt5.6.0, but it is still available for users\n\t  to build it from source. This is useful for platforms\n\t  without GPU since the successor (QtWebEngine) requires\n\t  OpenGL support.\n\n\t  http://doc.qt.io/archives/qt-5.5/qtwebkit-index.html\n\ncomment \"qt5webkit needs a toolchain w/ dynamic library, gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n"
  },
  {
    "path": "package/qt5/qt5webkit/qt5webkit.hash",
    "content": "# hash from: https://download.qt.io/official_releases/qt/5.9/5.9.1/submodules/qtwebkit-opensource-src-5.9.1.tar.xz.mirrorlist\nsha256  28a560becd800a4229bfac317c2e5407cd3cc95308bc4c3ca90dba2577b052cf  qtwebkit-opensource-src-5.9.1.tar.xz\n\n# Hashes for license files:\nsha256  7555fa34bc131a75ca56d65c40cc1ea8f9515d23e353d4c15d58573a042f7805  Source/WebCore/LICENSE-LGPL-2\nsha256  f2b3bd09663381deb99721109d22b47af1213bb43007a8b56a06c6375c8050ce  Source/WebCore/LICENSE-LGPL-2.1\nsha256  a3db6c7f3027aa27489c25a2fa259185cdee945780c32e01c60cbfabf4743b6c  LICENSE.LGPLv21\n"
  },
  {
    "path": "package/qt5/qt5webkit/qt5webkit.mk",
    "content": "################################################################################\n#\n# qt5webkit\n#\n################################################################################\n\nQT5WEBKIT_VERSION = 5.9.1\nQT5WEBKIT_SITE = https://download.qt.io/official_releases/qt/5.9/5.9.1/submodules\nQT5WEBKIT_SOURCE = qtwebkit-opensource-src-$(QT5WEBKIT_VERSION).tar.xz\nQT5WEBKIT_DEPENDENCIES = \\\n\thost-bison host-flex host-gperf host-python host-ruby \\\n\tleveldb sqlite\nQT5WEBKIT_INSTALL_STAGING = YES\n\nQT5WEBKIT_LICENSE_FILES = Source/WebCore/LICENSE-LGPL-2 Source/WebCore/LICENSE-LGPL-2.1\n\nQT5WEBKIT_LICENSE = LGPL-2.1+, BSD-3-Clause, BSD-2-Clause\n# Source files contain references to LGPL_EXCEPTION.txt but it is not included\n# in the archive.\nQT5WEBKIT_LICENSE_FILES += LICENSE.LGPLv21\n\nifeq ($(BR2_PACKAGE_QT5BASE_XCB),y)\nQT5WEBKIT_DEPENDENCIES += xlib_libXext xlib_libXrender\nendif\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nQT5WEBKIT_DEPENDENCIES += qt5declarative\nendif\n\n# QtWebkit's build system uses python, but only supports python2. We work\n# around this by forcing python2 early in the PATH, via a python->python2\n# symlink.\nQT5WEBKIT_CONF_ENV = PATH=$(@D)/host-bin:$(BR_PATH)\nQT5WEBKIT_MAKE_ENV = PATH=$(@D)/host-bin:$(BR_PATH)\ndefine QT5WEBKIT_PYTHON2_SYMLINK\n\tmkdir -p $(@D)/host-bin\n\tln -sf $(HOST_DIR)/bin/python2 $(@D)/host-bin/python\nendef\nQT5WEBKIT_PRE_CONFIGURE_HOOKS += QT5WEBKIT_PYTHON2_SYMLINK\n\nQT5WEBKIT_CONF_OPTS = WEBKIT_CONFIG+=use_system_leveldb\n\ndefine QT5WEBKIT_INSTALL_TARGET_EXTRAS\n\tcp -dpf $(@D)/bin/* $(TARGET_DIR)/usr/bin/\nendef\n\nQT5WEBKIT_POST_INSTALL_TARGET_HOOKS += QT5WEBKIT_INSTALL_TARGET_EXTRAS\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5webkit-examples/0001-Build-examples.patch",
    "content": "From 78f558df35860484711a600d155ae7a13ebf44b2 Mon Sep 17 00:00:00 2001\nFrom: =?utf-8?q?Ga=C3=ABl=20PORTAY?= <gael.portay@savoirfairelinux.com>\nDate: Tue, 28 Nov 2017 23:14:42 -0500\nSubject: [PATCH 1/1] Build examples\nMIME-Version: 1.0\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: 8bit\n\nThis patch improves the qt5webkit examples build for 2 aspects:\n\n\t- Allows to build even if qt5base examples are not enabled\n\t- Builds xmlpatterns example only if the qt5xmlpattern package\n\thas been built\n\nSigned-off-by: Massimo Callegari <massimocallegari@yahoo.it>\nSigned-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>\n[gportay: build imageanalyzer example if concurrent module is built]\n---\n examples/webkitwidgets/webkitwidgets.pro | 7 ++++---\n qtwebkit-examples.pro                    | 1 +\n 2 files changed, 5 insertions(+), 3 deletions(-)\n\ndiff --git a/examples/webkitwidgets/webkitwidgets.pro b/examples/webkitwidgets/webkitwidgets.pro\nindex ab20df4..67f6785 100644\n--- a/examples/webkitwidgets/webkitwidgets.pro\n+++ b/examples/webkitwidgets/webkitwidgets.pro\n@@ -4,9 +4,10 @@ SUBDIRS +=  domtraversal \\\n             previewer \\\n             fancybrowser \\\n             simpleselector \\\n-            imageanalyzer \\\n             framecapture \\\n             browser \\\n             embedded \\\n-            scroller \\\n-            xmlpatterns\n+            scroller\n+\n+qtHaveModule(xmlpatterns): SUBDIRS += xmlpatterns\n+qtHaveModule(concurrent): SUBDIRS += imageanalyzer\ndiff --git a/qtwebkit-examples.pro b/qtwebkit-examples.pro\nindex 3fcecf1..2ade7ff 100644\n--- a/qtwebkit-examples.pro\n+++ b/qtwebkit-examples.pro\n@@ -3,3 +3,4 @@ requires(qtHaveModule(webkit))\n load(qt_parts)\n \n SUBDIRS += doc\n+SUBDIRS += examples\n-- \n2.15.0\n\n"
  },
  {
    "path": "package/qt5/qt5webkit-examples/0002-Fix-QWebView-path.patch",
    "content": "From 9fa73707216bd55dff380031a33aca701a7d9c8b Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 12 May 2019 23:29:05 +0200\nSubject: [PATCH] Fix QWebView path\n\nQWebView is installed under QtWebKitWidgets\n\nFixes:\n - http://autobuild.buildroot.org/results/68dd6f1ffed49f8e2570f7364e5e635573807d3e\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n examples/webkitwidgets/formextractor/formextractor.ui           | 2 +-\n examples/webkitwidgets/previewer/previewer.ui                   | 2 +-\n examples/webkitwidgets/simpleselector/window.ui                 | 2 +-\n .../xmlpatterns/qobjectxmlmodel/forms/mainwindow.ui             | 2 +-\n 4 files changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/examples/webkitwidgets/formextractor/formextractor.ui b/examples/webkitwidgets/formextractor/formextractor.ui\nindex 5c4afec..a38bdd5 100644\n--- a/examples/webkitwidgets/formextractor/formextractor.ui\n+++ b/examples/webkitwidgets/formextractor/formextractor.ui\n@@ -151,7 +151,7 @@\n   <customwidget>\n    <class>QWebView</class>\n    <extends>QWidget</extends>\n-   <header>QtWebKit/QWebView</header>\n+   <header>QtWebKitWidgets/QWebView</header>\n   </customwidget>\n  </customwidgets>\n  <resources/>\ndiff --git a/examples/webkitwidgets/previewer/previewer.ui b/examples/webkitwidgets/previewer/previewer.ui\nindex d4c9992..69adb2e 100644\n--- a/examples/webkitwidgets/previewer/previewer.ui\n+++ b/examples/webkitwidgets/previewer/previewer.ui\n@@ -74,7 +74,7 @@\n   <customwidget>\n    <class>QWebView</class>\n    <extends>QWidget</extends>\n-   <header>QtWebKit/QWebView</header>\n+   <header>QtWebKitWidgets/QWebView</header>\n   </customwidget>\n  </customwidgets>\n  <resources/>\ndiff --git a/examples/webkitwidgets/simpleselector/window.ui b/examples/webkitwidgets/simpleselector/window.ui\nindex aa824df..7906186 100644\n--- a/examples/webkitwidgets/simpleselector/window.ui\n+++ b/examples/webkitwidgets/simpleselector/window.ui\n@@ -64,7 +64,7 @@\n   <customwidget>\n    <class>QWebView</class>\n    <extends>QWidget</extends>\n-   <header>QtWebKit/QWebView</header>\n+   <header>QtWebKitWidgets/QWebView</header>\n   </customwidget>\n  </customwidgets>\n  <resources/>\ndiff --git a/examples/webkitwidgets/xmlpatterns/qobjectxmlmodel/forms/mainwindow.ui b/examples/webkitwidgets/xmlpatterns/qobjectxmlmodel/forms/mainwindow.ui\nindex ad43284..000cae7 100644\n--- a/examples/webkitwidgets/xmlpatterns/qobjectxmlmodel/forms/mainwindow.ui\n+++ b/examples/webkitwidgets/xmlpatterns/qobjectxmlmodel/forms/mainwindow.ui\n@@ -188,7 +188,7 @@ p, li { white-space: pre-wrap; }\n   <customwidget>\n    <class>QWebView</class>\n    <extends>QWidget</extends>\n-   <header>QtWebKit/QWebView</header>\n+   <header>QtWebKitWidgets/QWebView</header>\n   </customwidget>\n  </customwidgets>\n  <resources/>\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/qt5/qt5webkit-examples/0003-Fix-QPainterPath-include.patch",
    "content": "From 452123a4491b26c5b078934477bd5864f1d004e4 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 28 May 2020 20:58:26 +0200\nSubject: [PATCH] Fix QPainterPath include\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nAdd missing QPainterPath (needed for Qt-5.15.0 compile).\n\nFixes:\n\n  searchlineedit.cpp:121:18: error: aggregate ‘QPainterPath myPath’ has incomplete type and cannot be defined\n       QPainterPath myPath;\n                    ^~~~~~\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n examples/webkitwidgets/browser/searchlineedit.cpp | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/examples/webkitwidgets/browser/searchlineedit.cpp b/examples/webkitwidgets/browser/searchlineedit.cpp\nindex fbd73cb..7462c82 100644\n--- a/examples/webkitwidgets/browser/searchlineedit.cpp\n+++ b/examples/webkitwidgets/browser/searchlineedit.cpp\n@@ -34,6 +34,7 @@\n #include \"searchlineedit.h\"\n \n #include <QtGui/QPainter>\n+#include <QtGui/QPainterPath>\n #include <QtGui/QMouseEvent>\n #include <QtWidgets/QMenu>\n #include <QtWidgets/QStyle>\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/qt5/qt5webkit-examples/Config.in",
    "content": "config BR2_PACKAGE_QT5WEBKIT_EXAMPLES\n\tbool \"qt5webkit-examples\"\n\tdepends on BR2_PACKAGE_QT5WEBKIT\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  This package contains examples for the qt5webkit module.\n\n\t  http://qt.io\n"
  },
  {
    "path": "package/qt5/qt5webkit-examples/qt5webkit-examples.hash",
    "content": "# 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\nsha256  e4ce4de6b468243abad2baabbe8ddfb05d25b186529bfe88cb8662fc983f54d0  qtwebkit-examples-opensource-src-5.9.1.tar.xz\n\n# Hashes for license files:\nsha256  a3db6c7f3027aa27489c25a2fa259185cdee945780c32e01c60cbfabf4743b6c  LICENSE.LGPLv21\nsha256  04505ee290cbe7b29b3766e00ff81987e84658f620cb43bd6e7bb52ee4234e1b  LICENSE.LGPLv3\nsha256  6c3f3c31b93985f1b93bfbb35fb609d37281697d0efc220c9f91cf4b59eaabde  LICENSE.GPLv2\nsha256  d3d9052b838761dbe00067168ed9ebc437734d53ebf71dea1c8e9f7532a5333b  LICENSE.GPLv3\n"
  },
  {
    "path": "package/qt5/qt5webkit-examples/qt5webkit-examples.mk",
    "content": "################################################################################\n#\n# qt5webkit-examples\n#\n################################################################################\n\nQT5WEBKIT_EXAMPLES_VERSION = 5.9.1\nQT5WEBKIT_EXAMPLES_SITE = https://download.qt.io/official_releases/qt/5.9/5.9.1/submodules\nQT5WEBKIT_EXAMPLES_SOURCE = qtwebkit-examples-opensource-src-$(QT5WEBKIT_VERSION).tar.xz\nQT5WEBKIT_EXAMPLES_DEPENDENCIES = qt5webkit\n\nQT5WEBKIT_EXAMPLES_LICENSE_FILES = LICENSE.LGPLv21 LICENSE.LGPLv3 LICENSE.GPLv2 LICENSE.GPLv3\n\nQT5WEBKIT_EXAMPLES_LICENSE = LGPL-2.1 with exception or LGPL-3 or GPL-2 or GPL-3\n# Source files contain references to LGPL_EXCEPTION.txt but it is not included\n# in the archive.\n\nifeq ($(BR2_PACKAGE_QT5XMLPATTERNS),y)\nQT5WEBKIT_EXAMPLES_DEPENDENCIES += qt5xmlpatterns\nendif\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nQT5WEBKIT_EXAMPLES_DEPENDENCIES += qt5declarative\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5websockets/Config.in",
    "content": "config BR2_PACKAGE_QT5WEBSOCKETS\n\tbool \"qt5websockets\"\n\tselect BR2_PACKAGE_QT5BASE_NETWORK\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt WebSockets module provides C++ and QML interfaces\n\t  that enable Qt applications to act as a server that can\n\t  process WebSocket requests, or a client that can\n\t  consume data received from the server, or both.\n\n\t  http://doc.qt.io/qt-5/qtwebsockets-index.html\n"
  },
  {
    "path": "package/qt5/qt5websockets/qt5websockets.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtwebsockets-everywhere-src-5.15.2.tar.xz.sha256\nsha256  a0b42d85dd34ff6e2d23400e02f83d8b85bcd80e60efd1521d12d9625d4a233f  qtwebsockets-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\n"
  },
  {
    "path": "package/qt5/qt5websockets/qt5websockets.mk",
    "content": "################################################################################\n#\n# qt5websockets\n#\n################################################################################\n\nQT5WEBSOCKETS_VERSION = $(QT5_VERSION)\nQT5WEBSOCKETS_SITE = $(QT5_SITE)\nQT5WEBSOCKETS_SOURCE = qtwebsockets-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5WEBSOCKETS_VERSION).tar.xz\nQT5WEBSOCKETS_INSTALL_STAGING = YES\nQT5WEBSOCKETS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools)\nQT5WEBSOCKETS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3\n\nifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)\nQT5WEBSOCKETS_LICENSE += , BSD-3-Clause (examples)\nendif\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nQT5WEBSOCKETS_DEPENDENCIES += qt5declarative\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5webview/Config.in",
    "content": "config BR2_PACKAGE_QT5WEBVIEW\n\tbool \"qt5webview\"\n\tdepends on BR2_PACKAGE_QT5WEBENGINE\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  Qt WebView provides a way to display web content in\n\t  a QML application without necessarily including\n\t  a full web browser stack by using native APIs where\n\t  it makes sense.\n\n\t  https://doc.qt.io/qt-5/qtwebview-index.html\n\ncomment \"qt5webview needs qt5webengine module\"\n\tdepends on !BR2_PACKAGE_QT5WEBENGINE\n"
  },
  {
    "path": "package/qt5/qt5webview/qt5webview.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtwebview-everywhere-src-5.15.2.tar.xz.sha256\nsha256  be9f46167e4977ead5ef5ecf883fdb812a4120f2436383583792f65557e481e7  qtwebview-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\nsha256  edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253  LICENSE.GPLv2\nsha256  245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17  LICENSE.GPLv3\nsha256  5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52  LICENSE.LGPLv3\n"
  },
  {
    "path": "package/qt5/qt5webview/qt5webview.mk",
    "content": "################################################################################\n#\n# qt5webview\n#\n################################################################################\n\nQT5WEBVIEW_VERSION = $(QT5_VERSION)\nQT5WEBVIEW_SITE = $(QT5_SITE)\nQT5WEBVIEW_SOURCE = qtwebview-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5WEBVIEW_VERSION).tar.xz\nQT5WEBVIEW_DEPENDENCIES = qt5webengine\nQT5WEBVIEW_INSTALL_STAGING = YES\nQT5WEBVIEW_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0, GFDL-1.3 (docs)\nQT5WEBVIEW_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL\n\nifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)\nQT5WEBVIEW_LICENSE += , BSD-3-Clause (examples)\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5x11extras/Config.in",
    "content": "config BR2_PACKAGE_QT5X11EXTRAS\n\tbool \"qt5x11extras\"\n\tdepends on BR2_PACKAGE_QT5BASE_XCB\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  Qt X11 Extras enables the Qt programmer to write\n\t  applications for the Linux/X11 platform.\n\n\t  http://doc.qt.io/qt-5/qtx11extras-index.html\n"
  },
  {
    "path": "package/qt5/qt5x11extras/qt5x11extras.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtx11extras-everywhere-src-5.15.2.tar.xz.sha256\nsha256  7014702ee9a644a5a93da70848ac47c18851d4f8ed622b29a72eed9282fc6e3e  qtx11extras-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5x11extras/qt5x11extras.mk",
    "content": "################################################################################\n#\n# qt5x11extras\n#\n################################################################################\n\nQT5X11EXTRAS_VERSION = $(QT5_VERSION)\nQT5X11EXTRAS_SITE = $(QT5_SITE)\nQT5X11EXTRAS_SOURCE = qtx11extras-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5X11EXTRAS_VERSION).tar.xz\nQT5X11EXTRAS_INSTALL_STAGING = YES\nQT5X11EXTRAS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5X11EXTRAS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5/qt5xmlpatterns/Config.in",
    "content": "config BR2_PACKAGE_QT5XMLPATTERNS\n\tbool \"qt5xmlpatterns\"\n\thelp\n\t  Qt is a cross-platform application and UI framework for\n\t  developers using C++.\n\n\t  The Qt XML Patterns module provides support for XPath,\n\t  XQuery, XSLT, and XML Schema validation.\n\n\t  http://doc.qt.io/qt-5/qtxmlpatterns-index.html\n"
  },
  {
    "path": "package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash",
    "content": "# Hash from: https://download.qt.io/official_releases/qt/5.15/5.15.2/submodules/qtxmlpatterns-everywhere-src-5.15.2.tar.xz.sha256\nsha256  76ea2162a7c349188d7e7e4f6c77b78e8a205494c90fee3cea3487a1ae2cf2fa  qtxmlpatterns-everywhere-src-5.15.2.tar.xz\n\n# Hashes for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.GPL2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.GPL3\nsha256  0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652  LICENSE.GPL3-EXCEPT\nsha256  da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768  LICENSE.LGPL3\nsha256  ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d  LICENSE.FDL\n"
  },
  {
    "path": "package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk",
    "content": "################################################################################\n#\n# qt5xmlpatterns\n#\n################################################################################\n\nQT5XMLPATTERNS_VERSION = $(QT5_VERSION)\nQT5XMLPATTERNS_SITE = $(QT5_SITE)\nQT5XMLPATTERNS_SOURCE = qtxmlpatterns-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5XMLPATTERNS_VERSION).tar.xz\nQT5XMLPATTERNS_INSTALL_STAGING = YES\nQT5XMLPATTERNS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs)\nQT5XMLPATTERNS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL\n\nifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)\nQT5XMLPATTERNS_DEPENDENCIES += qt5declarative\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)\nQT5XMLPATTERNS_LICENSE += , BSD-3-Clause (examples)\nendif\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/qt5cinex/0001-Fix-execution-problem-with-Qt5.3.patch",
    "content": "From 9b045ee7988daf3bb4c7cbe1ed1b9d744820e82b Mon Sep 17 00:00:00 2001\nFrom: Pierre Le Magourou <pierre.lemagourou@openwide.fr>\nDate: Mon, 15 Dec 2014 11:54:51 +0100\nSubject: [PATCH] Fix execution problem with Qt5.3.\n\nThis patch has been inspired from Open Embedded meta-qt5.\n\nSigned-off-by: Pierre Le Magourou <pierre.lemagourou@openwide.fr>\n---\n content/SettingsView.qml | 4 ++--\n content/Switch.qml       | 8 ++++----\n 2 files changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/content/SettingsView.qml b/content/SettingsView.qml\nindex 7944803..a0ddcc8 100644\n--- a/content/SettingsView.qml\n+++ b/content/SettingsView.qml\n@@ -127,8 +127,8 @@ Item {\n             Switch {\n                 text: \"Do you l-o-v-e colors?\"\n                 checked: settings.showColors\n-                onText: \"Yes\"\n-                offText: \"No!\"\n+                textON: \"Yes\"\n+                textOFF: \"No!\"\n                 onCheckedChanged: {\n                     settings.showColors = checked;\n                 }\ndiff --git a/content/Switch.qml b/content/Switch.qml\nindex 967c03f..66955fc 100644\n--- a/content/Switch.qml\n+++ b/content/Switch.qml\n@@ -6,8 +6,8 @@ Item {\n \n     property alias text: textItem.text\n     property bool checked: false\n-    property string onText: \"On\"\n-    property string offText: \"Off\"\n+    property string textON: \"On\"\n+    property string textOFF: \"Off\"\n \n     QtObject {\n         id: priv\n@@ -120,7 +120,7 @@ Item {\n             color: \"#000000\"\n             font.pixelSize: 18\n             font.bold: true\n-            text: onText\n+            text: textON\n         }\n         Text {\n             anchors.verticalCenter: parent.verticalCenter\n@@ -129,7 +129,7 @@ Item {\n             color: \"#ffffff\"\n             font.pixelSize: 18\n             font.bold: true\n-            text: offText\n+            text: textOFF\n         }\n \n         Image {\n-- \n2.1.3\n\n"
  },
  {
    "path": "package/qt5cinex/CinematicExperience-demo",
    "content": "#!/bin/sh\nexec /usr/share/Qt5/CinematicExperience/Qt5_CinematicExperience \"$@\"\n"
  },
  {
    "path": "package/qt5cinex/Config.in",
    "content": "comment \"qt5cinex needs an Open(E)GL-capable backend\"\n\tdepends on BR2_PACKAGE_QT5\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n\tdepends on !BR2_PACKAGE_QT5_GL_AVAILABLE || !BR2_PACKAGE_HAS_LIBEGL\n\nconfig BR2_PACKAGE_QT5CINEX\n\tbool \"qt5cinex\"\n\tdepends on BR2_PACKAGE_QT5\n\tdepends on BR2_PACKAGE_HAS_LIBEGL # qt5base-eglfs\n\tdepends on BR2_PACKAGE_QT5_GL_AVAILABLE\n\t# No comment needed for this option, it's an architecture\n\t# dependency.\n\tdepends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE\n\tselect BR2_PACKAGE_QT5BASE_NETWORK\n\tselect BR2_PACKAGE_QT5BASE_PNG\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\tselect BR2_PACKAGE_QT5BASE_EGLFS\n\tselect BR2_PACKAGE_QT5GRAPHICALEFFECTS\n\thelp\n\t  This application demonstrates the power of Qt5 and few of\n\t  the new additions available in QtQuick 2.0.\n\n\t  http://quitcoding.com/?page=work#cinex\n\nif BR2_PACKAGE_QT5CINEX\n\nconfig BR2_PACKAGE_QT5CINEX_HD\n\tbool \"High-definition version (aka RPi Edition)\"\n\thelp\n\t  High definition version (1920x1080 resolution) of the\n\t  application, optimised for Raspberry PI cards. This version\n\t  can also be run on any platform supported by Qt5.\n\nendif\n"
  },
  {
    "path": "package/qt5cinex/qt5cinex.hash",
    "content": "# Locally computed\nsha256  0dd602983ced5f7c0cfd5ad0fbfe2b0b7e3c9ff715e4ef23eef818ccc2b6c60b  Qt5_CinematicExperience_rpi_1.0.tgz\nsha256  0e547e0259667915a24e84ade5efdcd0c553f81786734452c2c8dbce19a19f44  Qt5_CinematicExperience_1.0.tgz\nsha256  bf6206061bcffb43c82999b8845360f223ac5cb4f574219fe95543ffd6755614  README\n"
  },
  {
    "path": "package/qt5cinex/qt5cinex.mk",
    "content": "################################################################################\n#\n# qt5cinex\n#\n################################################################################\n\nQT5CINEX_VERSION = 1.0\nQT5CINEX_SITE = http://quitcoding.com/download\n\nifeq ($(BR2_PACKAGE_QT5CINEX_HD),y)\nQT5CINEX_HD = rpi_\nendif\n\nQT5CINEX_SOURCE = Qt5_CinematicExperience_$(QT5CINEX_HD)$(QT5CINEX_VERSION).tgz\nQT5CINEX_DEPENDENCIES = qt5declarative\n\nQT5CINEX_LICENSE = CC-BY-3.0\nQT5CINEX_LICENSE_FILES = README\n\n# In addition to the Cinematic Experience itself, we also install a\n# wrapper shell script to /usr/bin: the Cinematic Experience binary\n# wants its resource files to be available directly under a contents/\n# sub-directory, which isn't very practical to install in /usr/bin/.\ndefine QT5CINEX_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/Qt5_CinematicExperience \\\n\t\t$(TARGET_DIR)/usr/share/Qt5/CinematicExperience/Qt5_CinematicExperience\n\t$(INSTALL) -D -m 0664 $(@D)/Qt5_CinematicExperience.qml \\\n\t\t$(TARGET_DIR)/usr/share/Qt5/CinematicExperience/Qt5_CinematicExperience.qml\n\tcp -dpfr $(@D)/content $(TARGET_DIR)/usr/share/Qt5/CinematicExperience/content\n\t$(INSTALL) -m 0755 -D package/qt5cinex/CinematicExperience-demo \\\n\t\t$(TARGET_DIR)/usr/bin/CinematicExperience-demo\nendef\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/quagga/0001-fix-ipctl-forwarding.patch",
    "content": "Add definitions for IPCTL_FORWARDING and IP6CTL_FORWARDING.\n\nInspired from\nhttp://svn.gnumonks.org/trunk/grouter/build/src/quagga/quagga/quagga-0.99.1-forward_sysctl-2.6.14.patch\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: quagga-0.99.16/zebra/ipforward_sysctl.c\n===================================================================\n--- quagga-0.99.16.orig/zebra/ipforward_sysctl.c\t2010-06-20 23:40:45.000000000 +0200\n+++ quagga-0.99.16/zebra/ipforward_sysctl.c\t2010-06-20 23:41:37.000000000 +0200\n@@ -31,6 +31,15 @@\n \n #define MIB_SIZ 4\n \n+/* Fix for recent (2.6.14) kernel headers */\n+#ifndef IPCTL_FORWARDING\n+#define IPCTL_FORWARDING NET_IPV4_FORWARD\n+#endif\n+\n+#ifndef IP6CTL_FORWARDING\n+#define IP6CTL_FORWARDING NET_IPV6_FORWARDING\n+#endif\n+\n extern struct zebra_privs_t zserv_privs;\n \n /* IPv4 forwarding control MIB. */\n"
  },
  {
    "path": "package/quagga/0002-lib-prefix.h-fix-build-with-gcc-10.patch",
    "content": "From 01bcd0f7411f86eea44247bf91b48882cae35519 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 21 Sep 2020 23:12:25 +0200\nSubject: [PATCH] lib/prefix.h: fix build with gcc 10\n\nRemove __packed to fix the following build failure with gcc 10 (which\ndefaults to -fno-common):\n\n  CCLD     libzebra.la\n/tmp/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: .libs/sockunion.o:(.bss+0x0): multiple definition of `__packed'; .libs/vty.o:(.bss+0x6c): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/82b15cff3f7b943eb93d8270790f1b8561d31d6a\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://bugzilla.quagga.net/show_bug.cgi?id=1014]\n---\n lib/prefix.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/lib/prefix.h b/lib/prefix.h\nindex 2cf0b20b..a5306eee 100644\n--- a/lib/prefix.h\n+++ b/lib/prefix.h\n@@ -44,7 +44,7 @@\n  */\n struct ethaddr {\n     u_char octet[ETHER_ADDR_LEN];\n-} __packed;\n+};\n \n \n /*\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/quagga/0003-Fix-build-with-gcc-10.patch",
    "content": "From 7a446434302d7b71211b81b3c6cd12a7b35223d1 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 6 Mar 2021 16:28:37 +0100\nSubject: [PATCH] Fix build with gcc 10\n\nFix the following build failure with gcc 10 (which defaults to\n-fno-common):\n\n  CCLD     pimd\n/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: pimd.o:(.bss+0x8): multiple definition of `qpim_static_route_list'; pim_main.o:(.bss+0x8): first defined here\n/home/buildroot/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: pimd.o:(.bss+0x28): multiple definition of `qpim_mroute_del_last'; pim_main.o:(.bss+0x10): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/fd5ee2b52a3cfaec268fafd3ffe4c30e51465c7e\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://bugzilla.quagga.net/show_bug.cgi?id=1014]\n---\n pimd/pim_version.h |  2 +-\n pimd/pimd.c        |  1 +\n pimd/pimd.h        | 66 +++++++++++++++++++++++-----------------------\n 3 files changed, 35 insertions(+), 34 deletions(-)\n\ndiff --git a/pimd/pim_version.h b/pimd/pim_version.h\nindex ef9f370c..891d4314 100644\n--- a/pimd/pim_version.h\n+++ b/pimd/pim_version.h\n@@ -25,6 +25,6 @@\n \n #define PIMD_VERSION_STR \"0.166\"\n \n-const char * const PIMD_VERSION;\n+extern const char * const PIMD_VERSION;\n \n #endif /* PIM_VERSION_H */\ndiff --git a/pimd/pimd.c b/pimd/pimd.c\nindex 97fb2233..d7340cc0 100644\n--- a/pimd/pimd.c\n+++ b/pimd/pimd.c\n@@ -50,6 +50,7 @@ int64_t                   qpim_mroute_socket_creation = 0; /* timestamp of creat\n struct thread            *qpim_mroute_socket_reader = 0;\n int                       qpim_mroute_oif_highest_vif_index = -1;\n struct list              *qpim_channel_oil_list = 0;\n+struct in_addr            qpim_all_pim_routers_addr;\n int                       qpim_t_periodic = PIM_DEFAULT_T_PERIODIC; /* Period between Join/Prune Messages */\n struct list              *qpim_upstream_list = 0;\n struct zclient           *qpim_zclient_update = 0;\ndiff --git a/pimd/pimd.h b/pimd/pimd.h\nindex 9a7e6058..8b3496fd 100644\n--- a/pimd/pimd.h\n+++ b/pimd/pimd.h\n@@ -68,39 +68,39 @@\n #define PIM_MASK_PIM_J_P             (1 << 12)\n #define PIM_MASK_STATIC              (1 << 13)\n \n-const char *const PIM_ALL_SYSTEMS;\n-const char *const PIM_ALL_ROUTERS;\n-const char *const PIM_ALL_PIM_ROUTERS;\n-const char *const PIM_ALL_IGMP_ROUTERS;\n-\n-struct thread_master     *master;\n-uint32_t                  qpim_debugs;\n-int                       qpim_mroute_socket_fd;\n-int64_t                   qpim_mroute_socket_creation; /* timestamp of creation */\n-struct thread            *qpim_mroute_socket_reader;\n-int                       qpim_mroute_oif_highest_vif_index;\n-struct list              *qpim_channel_oil_list; /* list of struct channel_oil */\n-struct in_addr            qpim_all_pim_routers_addr;\n-int                       qpim_t_periodic; /* Period between Join/Prune Messages */\n-struct list              *qpim_upstream_list; /* list of struct pim_upstream */\n-struct zclient           *qpim_zclient_update;\n-struct zclient           *qpim_zclient_lookup;\n-struct pim_assert_metric  qpim_infinite_assert_metric;\n-long                      qpim_rpf_cache_refresh_delay_msec;\n-struct thread            *qpim_rpf_cache_refresher;\n-int64_t                   qpim_rpf_cache_refresh_requests;\n-int64_t                   qpim_rpf_cache_refresh_events;\n-int64_t                   qpim_rpf_cache_refresh_last;\n-struct in_addr            qpim_inaddr_any;\n-struct list              *qpim_ssmpingd_list; /* list of struct ssmpingd_sock */\n-struct in_addr            qpim_ssmpingd_group_addr;\n-int64_t                   qpim_scan_oil_events;\n-int64_t                   qpim_scan_oil_last;\n-int64_t                   qpim_mroute_add_events;\n-int64_t                   qpim_mroute_add_last;\n-int64_t                   qpim_mroute_del_events;\n-int64_t                   qpim_mroute_del_last;\n-struct list              *qpim_static_route_list; /* list of routes added statically */\n+extern const char *const PIM_ALL_SYSTEMS;\n+extern const char *const PIM_ALL_ROUTERS;\n+extern const char *const PIM_ALL_PIM_ROUTERS;\n+extern const char *const PIM_ALL_IGMP_ROUTERS;\n+\n+extern struct thread_master     *master;\n+extern uint32_t                  qpim_debugs;\n+extern int                       qpim_mroute_socket_fd;\n+extern int64_t                   qpim_mroute_socket_creation; /* timestamp of creation */\n+extern struct thread            *qpim_mroute_socket_reader;\n+extern int                       qpim_mroute_oif_highest_vif_index;\n+extern struct list              *qpim_channel_oil_list; /* list of struct channel_oil */\n+extern struct in_addr            qpim_all_pim_routers_addr;\n+extern int                       qpim_t_periodic; /* Period between Join/Prune Messages */\n+extern struct list              *qpim_upstream_list; /* list of struct pim_upstream */\n+extern struct zclient           *qpim_zclient_update;\n+extern struct zclient           *qpim_zclient_lookup;\n+extern struct pim_assert_metric  qpim_infinite_assert_metric;\n+extern long                      qpim_rpf_cache_refresh_delay_msec;\n+extern struct thread            *qpim_rpf_cache_refresher;\n+extern int64_t                   qpim_rpf_cache_refresh_requests;\n+extern int64_t                   qpim_rpf_cache_refresh_events;\n+extern int64_t                   qpim_rpf_cache_refresh_last;\n+extern struct in_addr            qpim_inaddr_any;\n+extern struct list              *qpim_ssmpingd_list; /* list of struct ssmpingd_sock */\n+extern struct in_addr            qpim_ssmpingd_group_addr;\n+extern int64_t                   qpim_scan_oil_events;\n+extern int64_t                   qpim_scan_oil_last;\n+extern int64_t                   qpim_mroute_add_events;\n+extern int64_t                   qpim_mroute_add_last;\n+extern int64_t                   qpim_mroute_del_events;\n+extern int64_t                   qpim_mroute_del_last;\n+extern struct list              *qpim_static_route_list; /* list of routes added statically */\n \n #define PIM_JP_HOLDTIME (qpim_t_periodic * 7 / 2)\n \n-- \n2.30.0\n\n"
  },
  {
    "path": "package/quagga/Config.in",
    "content": "config BR2_PACKAGE_QUAGGA\n\tbool \"quagga\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Routing software suite, providing implementations of OSPFv2,\n\t  OSPFv3 (IPv6), RIP v1 and v2, RIPng (IPv6) and BGPv4+.\n\n\t  http://www.quagga.net/\n\nif BR2_PACKAGE_QUAGGA\n\nconfig BR2_PACKAGE_QUAGGA_ZEBRA\n\tbool \"zebra daemon\"\n\thelp\n\t  Build zebra daemon.\n\nconfig BR2_PACKAGE_QUAGGA_TCP_ZEBRA\n\tbool \"Use TCP sockets between zebra and protocol daemons\"\n\tdepends on BR2_PACKAGE_QUAGGA_ZEBRA\n\thelp\n\t  Use a TCP socket to communicate between zebra (supervisor)\n\t  and the different protocol daemons.\n\n\t  You'll want this enabled if zebra and the protocol daemon(s)\n\t  run on different hosts.\n\nconfig BR2_PACKAGE_QUAGGA_BGPD\n\tbool \"BGPv4+ protocol\"\n\thelp\n\t  Build bgpd daemon.\n\nconfig BR2_PACKAGE_QUAGGA_BGP_ANNOUNCE\n\tbool \"BGP route announcement\"\n\tdepends on BR2_PACKAGE_QUAGGA_BGPD\n\nconfig BR2_PACKAGE_QUAGGA_ISISD\n\tbool \"IS-IS protocol\"\n\thelp\n\t  Enable isisd support in quagga.\n\nconfig BR2_PACKAGE_QUAGGA_NHRPD\n\tbool \"NHRPD protocol\"\n\tselect BR2_PACKAGE_C_ARES\n\thelp\n\t  Build Next Hop Routing Protocol daemon.\n\nconfig BR2_PACKAGE_QUAGGA_OSPFD\n\tbool \"OSPFv2 protocol\"\n\thelp\n\t  Build ospfd daemon.\n\nconfig BR2_PACKAGE_QUAGGA_OSPF6D\n\tbool \"OSPFv3 (IPv6) protocol\"\n\thelp\n\t  Build ospf6d daemon.\n\nconfig BR2_PACKAGE_QUAGGA_RIPD\n\tbool \"RIPv2/v3 protocol\"\n\thelp\n\t  Build ripd daemon.\n\nconfig BR2_PACKAGE_QUAGGA_RIPNGD\n\tbool \"RIPng (IPv6) protocol\"\n\thelp\n\t  Build ripngd daemon.\n\nconfig BR2_PACKAGE_QUAGGA_PIMD\n\tbool \"PIMd protocol\"\n\thelp\n\t  Provides IPv4 PIM-SSM multicast routing.\n\nconfig BR2_PACKAGE_QUAGGA_WATCHQUAGGA\n\tbool \"Build watchquagga\"\n\thelp\n\t  Build and install watchquagga, a zebra/protocol daemon\n\t  supervisor.\n\nconfig BR2_PACKAGE_QUAGGA_VTYSH\n\tbool \"Build vtysh\"\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  Build and install vtysh, a vty shell for Quagga.\n\nconfig BR2_PACKAGE_QUAGGA_SNMP\n\tbool \"SNMP support\"\n\tdepends on BR2_USE_MMU # net-snmp\n\tselect BR2_PACKAGE_NETSNMP\n\thelp\n\t  Make quagga information available via SNMP SMUX.\n\ncomment \"AgentX support must be enabled in net-snmp or the build will break\"\n\tdepends on BR2_PACKAGE_QUAGGA_SNMP\n\nendif\n"
  },
  {
    "path": "package/quagga/quagga.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\te364c082c3309910e1eb7b068bf39ee298e2f2f3f31a6431a5c115193bd653d3\tquagga-1.2.4.tar.gz\n\n# Hash for license file\nsha256\tb39c1bad4e51e2a3389cd25fc4addebe41a3ae7c11100795683f9330de1536e5\tCOPYING\n"
  },
  {
    "path": "package/quagga/quagga.mk",
    "content": "################################################################################\n#\n# quagga\n#\n################################################################################\n\nQUAGGA_VERSION = 1.2.4\nQUAGGA_SITE = http://download.savannah.gnu.org/releases/quagga\nQUAGGA_INSTALL_STAGING = YES\nQUAGGA_DEPENDENCIES = host-gawk host-pkgconf\nQUAGGA_LICENSE = GPL-2.0+\nQUAGGA_LICENSE_FILES = COPYING\nQUAGGA_CPE_ID_VENDOR = quagga\nQUAGGA_SELINUX_MODULES = zebra\n\n# We need to override the sysconf and localstate directories so that\n# quagga can create files as the quagga user without extra\n# intervention\nQUAGGA_CONF_OPTS = \\\n\t--program-transform-name='' \\\n\t--sysconfdir=/etc/quagga \\\n\t--localstatedir=/var/run/quagga\n\n# quagga has its own internal copy of getopt_long. To avoid conflicts with libc's\n# getopt, we need to make sure that the getopt function itself is also built.\nQUAGGA_CONF_ENV = \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -DREALLY_NEED_PLAIN_GETOPT\"\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nQUAGGA_CONF_OPTS += --enable-capabilities\nQUAGGA_DEPENDENCIES += libcap\nelse\nQUAGGA_CONF_OPTS += --disable-capabilities\nendif\n\nifeq ($(BR2_PACKAGE_PROTOBUF_C),y)\nQUAGGA_CONF_OPTS += --enable-protobuf\nQUAGGA_DEPENDENCIES += protobuf-c\nelse\nQUAGGA_CONF_OPTS += --disable-protobuf\nendif\n\nQUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_ZEBRA),--enable-zebra,--disable-zebra)\nQUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_BGPD),--enable-bgpd,--disable-bgpd)\nQUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_RIPD),--enable-ripd,--disable-ripd)\nQUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_RIPNGD),--enable-ripngd,--disable-ripngd)\nQUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_OSPFD),--enable-ospfd,--disable-ospfd --disable-ospfapi)\nQUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_OSPF6D),--enable-ospf6d,--disable-ospf6d)\nQUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_PIMD),--enable-pimd,--disable-pimd)\nQUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_WATCHQUAGGA),--enable-watchquagga,--disable-watchquagga)\nQUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_ISISD),--enable-isisd,--disable-isisd)\nQUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_BGP_ANNOUNCE),--enable-bgp-announce,--disable-bgp-announce)\nQUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_TCP_ZEBRA),--enable-tcp-zebra,--disable-tcp-zebra)\n\ndefine QUAGGA_USERS\n\tquagga -1 quagga -1 * - - - Quagga priv drop user\nendef\n\n# Set the permissions of /etc/quagga such that quagga (through vtysh)\n# can save the configuration - set the folder recursively as the files\n# need to be 600, and then set the folder (non-recursively) to 755 so\n# it can used.  Quagga also needs to write to the folder as it moves\n# and creates, rather than overwriting.\ndefine QUAGGA_PERMISSIONS\n\t/etc/quagga r 600 quagga quagga - - - - -\n\t/etc/quagga d 755 quagga quagga - - - - -\nendef\n\n# In order for the QUAGGA_PERMISSIONS variable above to work,\n# /etc/quagga has to exist. However, this package without any\n# sub-option enabled will not create /etc/quagga, so let's create it\n# unconditionally in a post-install hook, in case it hasn't been\n# already created by the quagga installation.\ndefine QUAGGA_CREATE_ETC_QUAGGA\n\tmkdir -p $(TARGET_DIR)/etc/quagga\nendef\nQUAGGA_POST_INSTALL_TARGET_HOOKS += QUAGGA_CREATE_ETC_QUAGGA\n\nifeq ($(BR2_PACKAGE_QUAGGA_NHRPD),y)\nQUAGGA_CONF_OPTS += --enable-nhrpd\nQUAGGA_DEPENDENCIES += c-ares\nelse\nQUAGGA_CONF_OPTS += --disable-nhrpd\nendif\n\nifeq ($(BR2_PACKAGE_QUAGGA_SNMP),y)\nQUAGGA_CONF_ENV += ac_cv_path_NETSNMP_CONFIG=$(STAGING_DIR)/usr/bin/net-snmp-config\nQUAGGA_CONF_OPTS += --enable-snmp=agentx\nQUAGGA_DEPENDENCIES += netsnmp\nendif\n\nifeq ($(BR2_PACKAGE_QUAGGA_VTYSH),y)\nQUAGGA_CONF_OPTS += --enable-vtysh\nQUAGGA_DEPENDENCIES += readline\nelse\nQUAGGA_CONF_OPTS += --disable-vtysh\nendif\n\nifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),)\nQUAGGA_CONF_OPTS += --disable-pie\nendif\n\ndefine QUAGGA_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/quagga/quagga_tmpfiles.conf \\\n\t\t$(TARGET_DIR)/usr/lib/tmpfiles.d/quagga.conf\n\t$(INSTALL) -D -m 644 package/quagga/quagga@.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/quagga@.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/quagga/quagga@.service",
    "content": "[Unit]\nDescription=Quagga %i routing daemon\nConditionFileIsExecutable=/usr/sbin/%i\nWants=quagga@zebra.service\n\n[Service]\nType=simple\nEnvironmentFile=/etc/default/quagga-%i\nPrivateTmp=true\n# Systemd doesn't like having %i in the executable path.\nExecStart=/usr/bin/env /usr/sbin/%i $OPTS -f /etc/quagga/%i.conf\nExecReload=/bin/kill -HUP $MAINPID\nRestart=on-failure\n\n[Install]\nWantedBy=multi-user.target\n\n"
  },
  {
    "path": "package/quagga/quagga_tmpfiles.conf",
    "content": "d /var/run/quagga/ 1755 quagga quagga -\n"
  },
  {
    "path": "package/quazip/Config.in",
    "content": "config BR2_PACKAGE_QUAZIP\n\tbool \"quazip\"\n\tdepends on BR2_PACKAGE_QT5\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  QuaZIP is a simple C++ wrapper over Gilles Vollant's\n\t  ZIP/UNZIP package that can be used to access ZIP\n\t  archives. It uses the Qt toolkit.\n\n\t  http://quazip.sourceforge.net\n"
  },
  {
    "path": "package/quazip/quazip.hash",
    "content": "# Locally computed\nsha256  54edce9c11371762bd4f0003c2937b5d8806a2752dd9c0fd9085e90792612ad0  quazip-1.1.tar.gz\nsha256  3aab586a5bdc8ffbbf033c7106550fd3e849fd8888e33cbc9bfd30a433c4b1cb  COPYING\n"
  },
  {
    "path": "package/quazip/quazip.mk",
    "content": "################################################################################\n#\n# quazip\n#\n################################################################################\n\nQUAZIP_VERSION = 1.1\nQUAZIP_SITE = $(call github,stachenov,quazip,v$(QUAZIP_VERSION))\nQUAZIP_INSTALL_STAGING = YES\nQUAZIP_DEPENDENCIES = \\\n\tzlib \\\n\tqt5base\nQUAZIP_LICENSE = LGPL-2.1\nQUAZIP_LICENSE_FILES = COPYING\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/quickjs/Config.in",
    "content": "config BR2_PACKAGE_QUICKJS\n\tbool \"quickjs\"\n\tdepends on !BR2_nios2 # fenv.h lacks FE_{DOWN,UP}WARD on nios2\n\tdepends on !BR2_STATIC_LIBS\n\t# No way to check for fenv support.\n\tdepends on !BR2_TOOLCHAIN_USES_UCLIBC\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C11/stdatomic.h\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # C11/stdatomic.h\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  QuickJS is a small and embeddable Javascript engine.\n\t  It supports the ES2020 specification including modules,\n\t  asynchronous generators, proxies and BigInt.\n\n\t  https://bellard.org/quickjs/\n\ncomment \"quickjs needs a glibc or musl toolchain w/ gcc >= 4.9, host gcc >= 4.9, dynamic library\"\n\tdepends on !BR2_nios2\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_UCLIBC || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/quickjs/quickjs.hash",
    "content": "# Locally calculated\nsha256  a45bface4c3379538dea8533878d694e289330488ea7028b105f72572fe7fe1a  quickjs-2021-03-27.tar.xz\nsha256  f41baf09eef895d468d18c23055d74f711e4b8b2641cef279b5d71285c07bfe8  LICENSE\n"
  },
  {
    "path": "package/quickjs/quickjs.mk",
    "content": "################################################################################\n#\n# quickjs\n#\n################################################################################\n\nQUICKJS_VERSION = 2021-03-27\nQUICKJS_SOURCE = quickjs-$(QUICKJS_VERSION).tar.xz\nQUICKJS_SITE = https://bellard.org/quickjs\nQUICKJS_LICENSE = MIT\nQUICKJS_LICENSE_FILES = LICENSE\nQUICKJS_INSTALL_STAGING = YES\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nQUICKJS_EXTRA_LIBS += -latomic\nendif\n\ndefine QUICKJS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tCROSS_PREFIX=\"$(TARGET_CROSS)\" \\\n\t\tEXTRA_LIBS=\"$(QUICKJS_EXTRA_LIBS)\" \\\n\t\tall\nendef\n\ndefine QUICKJS_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tCROSS_PREFIX=\"$(TARGET_CROSS)\" \\\n\t\tEXTRA_LIBS=\"$(QUICKJS_EXTRA_LIBS)\" \\\n\t\tDESTDIR=$(STAGING_DIR) \\\n\t\tSTRIP=/bin/true \\\n\t\tprefix=/usr \\\n\t\tinstall\nendef\n\ndefine QUICKJS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tCROSS_PREFIX=\"$(TARGET_CROSS)\" \\\n\t\tEXTRA_LIBS=\"$(QUICKJS_EXTRA_LIBS)\" \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tSTRIP=/bin/true \\\n\t\tprefix=/usr \\\n\t\tinstall\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch",
    "content": "From 02b222a335527f1031cc9495d8c5ebc1bc5b1d4e Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 11 Nov 2020 15:00:47 +0100\nSubject: [PATCH] quota: Use realloc(3) instead of reallocarray(3)\n\nreallocarray(3) has been added to glibc relatively recently (version\n2.26, from 2017) and apparently not all users run new enough glibc. Just\nuse realloc(3) for now since in this case there's no real risk of\noverflow.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nSigned-off-by: Jan Kara <jack@suse.cz>\n[Retrieved from:\nhttps://sourceforge.net/p/linuxquota/code/ci/02b222a335527f1031cc9495d8c5ebc1bc5b1d4e]\n---\n quota.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/quota.c b/quota.c\nindex a6ed61f..a60de12 100644\n--- a/quota.c\n+++ b/quota.c\n@@ -385,7 +385,7 @@ int main(int argc, char **argv)\n \t\t\t  break;\n \t\t  case 259:\n \t\t\t  fscount++;\n-\t\t\t  fsnames = reallocarray(fsnames, fscount, sizeof(char *));\n+\t\t\t  fsnames = realloc(fsnames, fscount * sizeof(char *));\n \t\t\t  if (!fsnames)\n \t\t\t\tdie(1, _(\"Not enough memory for filesystem names\"));\n \t\t\t  fsnames[fscount - 1] = optarg;\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/quota/Config.in",
    "content": "config BR2_PACKAGE_QUOTA\n\tbool \"quota\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc\n\tselect BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Implementation of the disk quota system.\n\n\t  http://sourceforge.net/projects/linuxquota/\n\ncomment \"quota needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || \\\n\t\t!(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC)\n"
  },
  {
    "path": "package/quota/quota.hash",
    "content": "# From http://sourceforge.net/projects/linuxquota/files/quota-tools/4.06/ (click on info button)\nmd5  aef94648438832b684978d46fdf75110  quota-4.06.tar.gz\nsha1  98288699cc14da42f762301c2b6731ec7c777681  quota-4.06.tar.gz\n\n# Locally calculated\nsha256  2f3e03039f378d4f0d97acdb49daf581dcaad64d2e1ddf129495fd579fbd268d  quota-4.06.tar.gz\nsha256  32a5fd41e7a257f7f0373988ea8d45cebdbf376060703c242c11c000751b1203  COPYING\n"
  },
  {
    "path": "package/quota/quota.mk",
    "content": "################################################################################\n#\n# quota\n#\n################################################################################\n\nQUOTA_VERSION = 4.06\nQUOTA_SITE = http://downloads.sourceforge.net/project/linuxquota/quota-tools/$(QUOTA_VERSION)\nQUOTA_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-nfs-utils\nQUOTA_LICENSE = GPL-2.0+\nQUOTA_LICENSE_FILES = COPYING\nQUOTA_CPE_ID_VENDOR = jan_kara\nQUOTA_CPE_ID_PRODUCT = linux_diskquota\nQUOTA_SELINUX_MODULES = quota\nQUOTA_CONF_ENV = LIBS=\"$(TARGET_NLS_LIBS)\"\nQUOTA_CONF_OPTS = --disable-pie\n\nifeq ($(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_LIBNL),yy)\nQUOTA_DEPENDENCIES += host-pkgconf dbus libnl\nQUOTA_CONF_OPTS += --enable-netlink\nelse\nQUOTA_CONF_OPTS += --disable-netlink\nendif\n\nifeq ($(BR2_PACKAGE_E2FSPROGS),y)\nQUOTA_DEPENDENCIES += host-pkgconf e2fsprogs\nQUOTA_CONF_OPTS += --enable-ext2direct\nelse\nQUOTA_CONF_OPTS += --disable-ext2direct\nendif\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nQUOTA_DEPENDENCIES += libtirpc host-pkgconf\nendif\n\nifeq ($(BR2_PACKAGE_OPENLDAP):$(BR2_STATIC_LIBS),y:)\nQUOTA_DEPENDENCIES += openldap\nQUOTA_CONF_OPTS += --enable-ldapmail\nelse\nQUOTA_CONF_OPTS += --disable-ldapmail\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/quotatool/0001-fix-missing-__P-definition-for-musl-compile.patch",
    "content": "From 0e096badc901f755f3bcefabdc57091725a5a0c5 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 1 Feb 2018 23:50:43 +0100\nSubject: [PATCH] fix missing __P definition for musl compile\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes:\n\n  In file included from src/quota.h:40:0,\n                   from src/parse.c:26:\n  src/linux/linux_quota.h:120:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__P’\n   long quotactl __P((int, const char *, qid_t, caddr_t));\n                 ^~~\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/linux/linux_quota.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/linux/linux_quota.h b/src/linux/linux_quota.h\nindex 11f9871..2b29a89 100644\n--- a/src/linux/linux_quota.h\n+++ b/src/linux/linux_quota.h\n@@ -14,6 +14,7 @@\n #ifndef LINUX_QUOTA_H\n #define LINUX_QUOTA_H\n \n+#include <sys/cdefs.h>\n #include <sys/types.h>\n #include \"system.h\"\n \n-- \n2.16.1\n\n"
  },
  {
    "path": "package/quotatool/Config.in",
    "content": "config BR2_PACKAGE_QUOTATOOL\n\tbool \"quotatool\"\n\thelp\n\t  Quotatool is a utility to manipulate filesystem quotas from\n\t  the commandline.\n\n\t  http://quotatool.ekenberg.se/\n"
  },
  {
    "path": "package/quotatool/quotatool.hash",
    "content": "# Locally computed\nsha256 e53adc480d54ae873d160dc0e88d78095f95d9131e528749fd982245513ea090 quotatool-1.6.2.tar.gz\n\n# Hash for license files:\nsha256 94686eeb98a40edc64106c6f8644068d8a08816a510a3cde75e50f1bf470564d COPYING\n"
  },
  {
    "path": "package/quotatool/quotatool.mk",
    "content": "################################################################################\n#\n# quotatool\n#\n################################################################################\n\nQUOTATOOL_VERSION = 1.6.2\nQUOTATOOL_SITE = http://quotatool.ekenberg.se\nQUOTATOOL_LICENSE = GPL-2.0\nQUOTATOOL_LICENSE_FILES = COPYING\n\n# men=\"\" allows to disable installing the man pages, which fails\n# because the package Makefile doesn't create the appropriate\n# directory.\nQUOTATOOL_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install men=\"\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/qwt/Config.in",
    "content": "config BR2_PACKAGE_QWT\n\tbool \"qwt\"\n\tdepends on BR2_PACKAGE_QT5\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS # printsupport\n\tselect BR2_PACKAGE_QT5BASE_CONCURRENT\n\thelp\n\t  Qwt is a graphics extension to the Qt GUI application\n\t  framework. It provides a 2D plotting widget and more.\n\n\t  http://qwt.sourceforge.net/\n\nif BR2_PACKAGE_QWT\n\nconfig BR2_PACKAGE_QWT_SVG\n\tbool \"SVG support\"\n\tselect BR2_PACKAGE_QT5SVG\n\nconfig BR2_PACKAGE_QWT_MATHML\n\tbool \"MathML support\"\n\nconfig BR2_PACKAGE_QWT_OPENGL\n\tbool \"OpenGL support\"\n\tdepends on BR2_PACKAGE_QT5_GL_AVAILABLE\n\tselect BR2_PACKAGE_QT5BASE_OPENGL\n\tselect BR2_PACKAGE_QT5BASE_OPENGL_LIB\n\nendif\n"
  },
  {
    "path": "package/qwt/qwt.hash",
    "content": "# From https://sourceforge.net/projects/qwt/files/qwt/6.1.6\nmd5  cc71be5d6c33c2fc19ae8082ccdd3e83  qwt-6.1.6.tar.bz2\nsha1  b1f17a86c9b1b0790a0c0067ef69fb6277efac79  qwt-6.1.6.tar.bz2\n\n# Locally computed\nsha256  99460d31c115ee4117b0175d885f47c2c590d784206f09815dc058fbe5ede1f6  qwt-6.1.6.tar.bz2\nsha256  d8737db330e1eeb439962e11654ab7f1aece3561d9415454a8c538643824ede6  COPYING\n"
  },
  {
    "path": "package/qwt/qwt.mk",
    "content": "################################################################################\n#\n# qwt\n#\n################################################################################\n\nQWT_VERSION = 6.1.6\nQWT_SOURCE = qwt-$(QWT_VERSION).tar.bz2\nQWT_SITE = http://downloads.sourceforge.net/project/qwt/qwt/$(QWT_VERSION)\nQWT_INSTALL_STAGING = YES\n\nQWT_LICENSE = LGPL-2.1 with exceptions\nQWT_LICENSE_FILES = COPYING\n\nQWT_CONFIG = 's%QWT_INSTALL_PREFIX.*/usr/local/.*%QWT_INSTALL_PREFIX = /usr%'\nQWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtDesigner.*$$/\\# QWT_CONFIG += QwtDesigner/'\nQWT_CONFIG += -e 's%/features%/mkspecs/features%'\n\nifeq ($(BR2_PACKAGE_QWT_SVG),y)\nQWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtSvg.*$$/QWT_CONFIG += QwtSvg/'\nQWT_DEPENDENCIES += qt5svg\nelse\nQWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtSvg.*$$/\\# QWT_CONFIG += QwtSvg/'\nendif\n\nifeq ($(BR2_PACKAGE_QWT_MATHML),y)\nQWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtMathML.*$$/QWT_CONFIG += QwtMathML/'\nelse\nQWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtMathML.*$$/\\# QWT_CONFIG += QwtMathML/'\nendif\n\nifeq ($(BR2_PACKAGE_QWT_OPENGL),y)\nQWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtOpenGL.*$$/QWT_CONFIG += QwtOpenGL/'\nelse\nQWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtOpenGL.*$$/\\# QWT_CONFIG += QwtOpenGL/'\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nQWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtDll.*$$/\\# QWT_CONFIG += QwtDll/'\nelse\nQWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtDll.*$$/QWT_CONFIG += QwtDll/'\nendif\n\ndefine QWT_TWEAK_QWTCONFIG_PRI\n\t$(SED) $(QWT_CONFIG) $(@D)/qwtconfig.pri\nendef\n\nQWT_PRE_CONFIGURE_HOOKS += QWT_TWEAK_QWTCONFIG_PRI\n\n# After installation, we fixup the INSTALL_PREFIX in qwtconfig.pri so\n# that when building with qmake, -L$(STAGING_DIR)/usr/lib is used and\n# not -L/usr/lib.\ndefine QWT_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install INSTALL_ROOT=$(STAGING_DIR)\n\t$(SED) \"s%QWT_INSTALL_PREFIX = .*%QWT_INSTALL_PREFIX = $(STAGING_DIR)/usr%\" \\\n\t\t$(STAGING_DIR)/usr/mkspecs/features/qwtconfig.pri\nendef\n\ndefine QWT_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install INSTALL_ROOT=$(TARGET_DIR)\n\trm -Rf $(TARGET_DIR)/usr/mkspecs\nendef\n\n$(eval $(qmake-package))\n"
  },
  {
    "path": "package/rabbitmq-c/Config.in",
    "content": "config BR2_PACKAGE_RABBITMQ_C\n\tbool \"rabbitmq-c\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  This is a C-language AMQP client library for use with v2.0+\n\t  of the RabbitMQ broker.\n\n\t  https://github.com/alanxz/rabbitmq-c\n\ncomment \"rabbitmq-c needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/rabbitmq-c/rabbitmq-c.hash",
    "content": "# Locally calculated\nsha256  437d45e0e35c18cf3e59bcfe5dfe37566547eb121e69fca64b98f5d2c1c2d424  rabbitmq-c-0.11.0.tar.gz\nsha256  94a12c906acb31a66c2c8a6c1b6e46cab52bc5694c5ada2a06d86b05d3d3f422  LICENSE-MIT\n"
  },
  {
    "path": "package/rabbitmq-c/rabbitmq-c.mk",
    "content": "################################################################################\n#\n# rabbitmq-c\n#\n################################################################################\n\nRABBITMQ_C_VERSION = 0.11.0\nRABBITMQ_C_SITE = $(call github,alanxz,rabbitmq-c,v$(RABBITMQ_C_VERSION))\nRABBITMQ_C_LICENSE = MIT\nRABBITMQ_C_LICENSE_FILES = LICENSE-MIT\nRABBITMQ_C_CPE_ID_VENDOR = rabbitmq-c_project\nRABBITMQ_C_INSTALL_STAGING = YES\nRABBITMQ_C_CONF_OPTS = \\\n\t-DBUILD_API_DOCS=OFF \\\n\t-DBUILD_TOOLS_DOCS=OFF\n\n# BUILD_SHARED_LIBS is handled in pkg-cmake.mk as it is a generic cmake variable\nifeq ($(BR2_SHARED_STATIC_LIBS),y)\nRABBITMQ_C_CONF_OPTS += -DBUILD_STATIC_LIBS=ON\nelse ifeq ($(BR2_SHARED_LIBS),y)\nRABBITMQ_C_CONF_OPTS += -DBUILD_STATIC_LIBS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nRABBITMQ_C_CONF_OPTS += -DENABLE_SSL_SUPPORT=ON\nRABBITMQ_C_DEPENDENCIES += openssl\nelse\nRABBITMQ_C_CONF_OPTS += -DENABLE_SSL_SUPPORT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_POPT),y)\nRABBITMQ_C_CONF_OPTS += -DBUILD_TOOLS=ON\nRABBITMQ_C_DEPENDENCIES += popt\nelse\nRABBITMQ_C_CONF_OPTS += -DBUILD_TOOLS=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/rabbitmq-server/Config.in",
    "content": "config BR2_PACKAGE_RABBITMQ_SERVER\n\tbool \"rabbitmq-server\"\n\tdepends on BR2_PACKAGE_ERLANG\n\tselect BR2_PACKAGE_LIBXSLT\n\tselect BR2_PACKAGE_OPENSSL # Required to build Erlang's crypto and ssl\n\t                           # applications\n\thelp\n\t  High-performance AMQP-compliant message broker written in\n\t  Erlang.\n\n\t  http://www.rabbitmq.com\n\ncomment \"rabbitmq-server needs erlang\"\n\tdepends on !BR2_PACKAGE_ERLANG\n"
  },
  {
    "path": "package/rabbitmq-server/S50rabbitmq-server",
    "content": "#!/bin/sh\n#\n# Start/stop rabbitmq-server\n#\n\nINSTALLUSER=rabbitmq\nRUNDIR=/var/run/rabbitmq\nLOGDIR=/var/log/rabbitmq\n\ncase \"$1\" in\n  start)\n\tinstall -d -o \"$INSTALLUSER\" -g \"$INSTALLUSER\" \"$RUNDIR\" || exit 1\n\tinstall -d -o \"$INSTALLUSER\" -g \"$INSTALLUSER\" \"$LOGDIR\" || exit 1\n        printf \"Starting rabbitmq-server: \"\n        su -c \"/usr/sbin/rabbitmq-server -detached\" - \"$INSTALLUSER\" 2>/dev/null\n        [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\n  stop)\n        printf \"Stopping rabbitmq-server: \"\n        su -c \"/usr/sbin/rabbitmqctl stop\" - \"$INSTALLUSER\"\n        [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\n  restart|reload)\n        \"$0\" stop || true\n        \"$0\" start\n\t;;\n  *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\nesac\n"
  },
  {
    "path": "package/rabbitmq-server/rabbitmq-server.hash",
    "content": "# Locally computed\nsha256  8c6729b985cb21bab13363b1c806cfa15845b046be9e641ab1496bd5a1eaf19d  rabbitmq-server-3.8.2.tar.xz\nsha256  a96b7ed2e7def9c86d84d9ca0e79e4a55fc8e6e202ac89caa4f9791ccb9cf2a3  LICENSE\nsha256  acd82bfce369b066e7e612197206da4fa38b8614486658775d0b6f66ac30114a  LICENSE-APACHE2\nsha256  aac73b3148f6d1d7111dbca32099f68d26c644c6813ae1e4f05f6579aa2663fe  LICENSE-APACHE2-excanvas\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE-APACHE2-ExplorerCanvas\nsha256  b04c8850fdf64d17233f0acbe4eb632f03bd663094233c949bdbe788858bb841  LICENSE-APL2-Stomp-Websocket\nsha256  3c69f8327beaaa45d2f3d7831edf211d0f37d1d9c7754267478320697e1882e9  LICENSE-BSD-base64js\nsha256  af7b5cdf5e16446c64d6e755b2a6386e38c56500ae27587edcd94c96d330ee35  LICENSE-BSD-recon\nsha256  7615ea96ccddc822655cb48a9d2a5cac2f176fca7fe28131af934ce21f48cbc8  LICENSE-erlcloud\nsha256  c69d6e3fc8c51730a706aba5dcd5df978cb0c7b20c7bfe788e063cbc7fc1b234  LICENSE-httpc_aws\nsha256  c0e940d13f488849c27963e7d87f3fc27a2f5843cfd49148029a558251014689  LICENSE-ISC-cowboy\nsha256  af399cded8f343407fb68eeb51755676e9700c65c380f073376afd8d20f428a1  LICENSE-MIT-EJS\nsha256  b2614726fe57ee8267324ecfdebe6e578e5aaa5a77a7f84b9d26463c058147d1  LICENSE-MIT-EJS10\nsha256  0f26e121a7a1dab675bd8474cdc517428863036a668260033467c7278f488cd4  LICENSE-MIT-Erlware-Commons\nsha256  52cb566b16d84314b92b91361ed072eaaf166e8d3dfa3d0fd3577613925f205c  LICENSE-MIT-Flot\nsha256  8cb9a8ff8cafd6a085fd4f086e797b719c334a621df19354dc286591003da3f5  LICENSE-MIT-jQuery\nsha256  44f25d51c90aa55dd4b3ba7f3d6e9a594073fcbefe651e16e74cabd48005b476  LICENSE-MIT-jQuery164\nsha256  fc93cc7361401413887f4c1349e4b0be4bcef936eaafbcc7485038abe197c692  LICENSE-MIT-Mochi\nsha256  b80081a5bb527dbe6b79f18a40f44b4ba6303e4856cadd249672c97b90e6dd7c  LICENSE-MIT-Sammy\nsha256  cfc50fa0d7ee02c2d71c8866ef211a4814e8c89c50b725d27e8bdf550291a9ed  LICENSE-MIT-Sammy060\nsha256  c008551400c9629d5f35a4f4fb6a671cf574d41cb365ae57e3d90341e51b3bdd  LICENSE-MPL\nsha256  c008551400c9629d5f35a4f4fb6a671cf574d41cb365ae57e3d90341e51b3bdd  LICENSE-MPL-RabbitMQ\nsha256  66a3107d5ad6a058aab753eaac2047ccb2ed0e39465dd0fe5844da3e300d5172  LICENSE-MPL2\nsha256  c69d6e3fc8c51730a706aba5dcd5df978cb0c7b20c7bfe788e063cbc7fc1b234  LICENSE-rabbitmq_aws\n"
  },
  {
    "path": "package/rabbitmq-server/rabbitmq-server.mk",
    "content": "################################################################################\n#\n# rabbitmq-server\n#\n################################################################################\n\nRABBITMQ_SERVER_VERSION = 3.8.2\nRABBITMQ_SERVER_SITE = https://github.com/rabbitmq/rabbitmq-server/releases/download/v$(RABBITMQ_SERVER_VERSION)\nRABBITMQ_SERVER_SOURCE = rabbitmq-server-$(RABBITMQ_SERVER_VERSION).tar.xz\nRABBITMQ_SERVER_LICENSE = MPL-1.1, Apache-2.0, BSD-3-Clause, BSD-2-Clause, MIT, MPL-2.0, ISC\nRABBITMQ_SERVER_LICENSE_FILES = \\\n\tLICENSE \\\n\tLICENSE-APACHE2 \\\n\tLICENSE-APACHE2-excanvas \\\n\tLICENSE-APACHE2-ExplorerCanvas \\\n\tLICENSE-APL2-Stomp-Websocket \\\n\tLICENSE-BSD-base64js \\\n\tLICENSE-BSD-recon \\\n\tLICENSE-erlcloud \\\n\tLICENSE-httpc_aws \\\n\tLICENSE-ISC-cowboy \\\n\tLICENSE-MIT-EJS \\\n\tLICENSE-MIT-EJS10 \\\n\tLICENSE-MIT-Erlware-Commons \\\n\tLICENSE-MIT-Flot \\\n\tLICENSE-MIT-jQuery \\\n\tLICENSE-MIT-jQuery164 \\\n\tLICENSE-MIT-Mochi \\\n\tLICENSE-MIT-Sammy \\\n\tLICENSE-MIT-Sammy060 \\\n\tLICENSE-MPL \\\n\tLICENSE-MPL-RabbitMQ \\\n\tLICENSE-MPL2 \\\n\tLICENSE-rabbitmq_aws\nRABBITMQ_SERVER_CPE_ID_VENDOR = pivotal_software\nRABBITMQ_SERVER_CPE_ID_PRODUCT = rabbitmq\nRABBITMQ_SERVER_SELINUX_MODULES = rabbitmq\n\nRABBITMQ_SERVER_DEPENDENCIES = host-elixir host-libxslt host-zip erlang libxslt\nRABBITMQ_SERVER_TARGET_BINS = rabbitmq-plugins rabbitmq-server rabbitmqctl rabbitmq-env rabbitmq-defaults\n\ndefine RABBITMQ_SERVER_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine RABBITMQ_SERVER_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install\n\n\tfor bin in $(RABBITMQ_SERVER_TARGET_BINS); do \\\n\t\tln -sf ../lib/erlang/lib/rabbitmq_server-$(RABBITMQ_SERVER_VERSION)/sbin/$$bin \\\n\t\t\t$(TARGET_DIR)/usr/sbin/$$bin; \\\n\tdone\nendef\n\ndefine RABBITMQ_SERVER_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/rabbitmq-server/rabbitmq-server.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/rabbitmq-server.service\nendef\n\ndefine RABBITMQ_SERVER_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/rabbitmq-server/S50rabbitmq-server \\\n\t\t$(TARGET_DIR)/etc/init.d/S50rabbitmq-server\nendef\n\ndefine RABBITMQ_SERVER_USERS\n\trabbitmq -1 rabbitmq -1 * /var/lib/rabbitmq /bin/sh - rabbitmq-server daemon\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rabbitmq-server/rabbitmq-server.service",
    "content": "[Unit]\nDescription=RabbitMQ Messaging Server\nAfter=syslog.target network.target\n\n[Service]\nType=simple\nUser=rabbitmq\nGroup=rabbitmq\nEnvironment=HOME=/var/lib/rabbitmq\nWorkingDirectory=/var/lib/rabbitmq\nLogsDirectory=/var/log/rabbitmq\nExecStart=/usr/sbin/rabbitmq-server\nExecStop=/usr/sbin/rabbitmqctl stop\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/racehound/0001-Fix-module-install-path-lib-instead-of-usr-lib-prefi.patch",
    "content": "From 4f8ed39ddaf17c7dd4ddbdb88e67097f00c98173 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 16 Jul 2015 23:11:25 +0200\nSubject: [PATCH] Fix module install path (/lib instead of /usr/lib prefix)\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n cmake/modules/path_prefixes.cmake | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/cmake/modules/path_prefixes.cmake b/cmake/modules/path_prefixes.cmake\nindex 3cb1fe2..9dc50a4 100644\n--- a/cmake/modules/path_prefixes.cmake\n+++ b/cmake/modules/path_prefixes.cmake\n@@ -113,7 +113,7 @@ set(RH_INSTALL_PREFIX_DOC\n # Set derivative prefixes\n \n # additional, 1\n-set(RH_INSTALL_PREFIX_KMODULE \"${RH_INSTALL_PREFIX_LIB}/modules/${KBUILD_VERSION_STRING}/misc\")\n+set(RH_INSTALL_PREFIX_KMODULE \"/lib/modules/${KBUILD_VERSION_STRING}/misc\")\n # Another variant\n #\"${RH_INSTALL_PREFIX_LIB}/modules/${KBUILD_VERSION_STRING}/extra\")\n # additional, 2\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/racehound/Config.in",
    "content": "config BR2_PACKAGE_RACEHOUND\n\tbool \"racehound\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR # elfutils\n\tdepends on !BR2_STATIC_LIBS # elfutils\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # elfutils\n\tdepends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils\n\t# only x86/x86_64 supported\n\tdepends on BR2_i386 || BR2_x86_64\n\tselect BR2_PACKAGE_ELFUTILS\n\tselect BR2_LINUX_NEEDS_MODULES # not using kernel-module infra\n\thelp\n\t  RaceHound can be used to detect data races in the Linux\n\t  kernel on x86.\n\n\t  RaceHound needs the following kernel configurations enabled:\n\t  - CONFIG_X86_32 or CONFIG_X86_64\n\t  - CONFIG_MODULES\n\t  - CONFIG_MODULE_UNLOAD\n\t  - CONFIG_SYSFS\n\t  - CONFIG_DEBUG_FS\n\t  - CONFIG_KALLSYMS\n\t  - CONFIG_KALLSYMS_ALL\n\t  - CONFIG_KPROBES\n\n\t  https://github.com/winnukem/racehound\n\ncomment \"racehound needs an Linux kernel >= 3.14 to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\tdepends on BR2_i386 || BR2_x86_64\n\ncomment \"racehound needs a uClibc or glibc toolchain w/ C++, wchar, dynamic library, threads\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)\n"
  },
  {
    "path": "package/racehound/racehound.hash",
    "content": "# locally computed\nsha256  935bc4a7c7b645dee5b905f6e97d0db3f0ac4f48e71d15f4e3982811017ac43c  racehound-f09f06fcc3c77c8c5541be3ba5be80aa8148ce0c.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/racehound/racehound.mk",
    "content": "################################################################################\n#\n# racehound\n#\n################################################################################\n\nRACEHOUND_VERSION = f09f06fcc3c77c8c5541be3ba5be80aa8148ce0c\nRACEHOUND_SITE = $(call github,winnukem,racehound,$(RACEHOUND_VERSION))\nRACEHOUND_LICENSE = GPL-2.0\nRACEHOUND_LICENSE_FILES = LICENSE\nRACEHOUND_SUPPORTS_IN_SOURCE_BUILD = NO\n\nRACEHOUND_DEPENDENCIES = elfutils linux\n\n# override auto detection (uses host parameters, not cross compile\n# ready)\nRACEHOUND_CONF_OPTS += \\\n\t-DKERNEL_VERSION_OK=YES \\\n\t-DMODULE_BUILD_SUPPORTED=YES \\\n\t-DKERNEL_CONFIG_OK=YES \\\n\t-DKBUILD_BUILD_DIR=$(LINUX_DIR) \\\n\t-DKBUILD_VERSION_STRING=$(LINUX_VERSION_PROBED)\n\n# cross compile environment for linux kernel module\nRACEHOUND_MAKE_ENV = $(LINUX_MAKE_FLAGS)\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/radvd/50-radvd.preset",
    "content": "disable radvd.service\n"
  },
  {
    "path": "package/radvd/Config.in",
    "content": "config BR2_PACKAGE_RADVD\n\tbool \"radvd\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  IPv6 Router Advertisement Daemon.\n\n\t  On busybox and sysvinit systems, radvd will be started only if\n\t  a /etc/radvd.conf exists.\n\n\t  To enable it at build time with systemd, add /etc/radvd.conf\n\t  and a /etc/systemd/system-preset/40-radvd.preset file with\n\n\t    enable radvd.service\n\n\t  http://www.litech.org/radvd/\n"
  },
  {
    "path": "package/radvd/S50radvd",
    "content": "#!/bin/sh\n\nDAEMON=\"radvd\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nRADVD_ARGS=\"-m syslog\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\n[ -f /etc/radvd.conf ] || exit 0\n\n[ -f /proc/sys/net/ipv6/conf/all/forwarding ] || {\n\techo \"Error: radvd requires IPv6 forwarding support.\"\n\texit 1\n}\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\techo \"1\" > /proc/sys/net/ipv6/conf/all/forwarding\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \\\n\t\t-- $RADVD_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop)\n\t\t\"$1\";;\n\trestart|reload)\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/radvd/radvd.hash",
    "content": "# From http://www.litech.org/radvd/dist/radvd-2.19.tar.gz.sha512\nsha512  caa621fd77e34ff6858d60a41b0ee02aff967ac14f2b84c402359744f4bece5c1563419860431c328adc0385e9893ed1f2421d652247a3aa0dfc0aaad1e01233  radvd-2.19.tar.gz\nsha256  40a6db00cf0b97f031eaa6c6e87157788f40ced1b88e3ea6d78779bd2a39dc80  COPYRIGHT\n"
  },
  {
    "path": "package/radvd/radvd.mk",
    "content": "################################################################################\n#\n# radvd\n#\n################################################################################\n\nRADVD_VERSION = 2.19\nRADVD_SITE = http://www.litech.org/radvd/dist\nRADVD_DEPENDENCIES = host-bison host-flex host-pkgconf\n# We need to ignore <linux/if_arp.h>, because radvd already includes\n# <net/if_arp.h>, which conflicts with <linux/if_arp.h>.\nRADVD_CONF_ENV = \\\n\tac_cv_prog_cc_c99='-std=gnu99' \\\n\tac_cv_header_linux_if_arp_h=no\nRADVD_LICENSE = BSD-4-Clause-like\nRADVD_LICENSE_FILES = COPYRIGHT\nRADVD_SELINUX_MODULES = radvd\n\nifeq ($(BR2_TOOLCHAIN_HAS_SSP),y)\nRADVD_CONF_OPTS += --with-stack-protector\nelse\nRADVD_CONF_OPTS += --without-stack-protector\nendif\n\n# We don't provide /etc/radvd.conf, so disable the service by default.\ndefine RADVD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/radvd/50-radvd.preset \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system-preset/50-radvd.preset\nendef\n\ndefine RADVD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/radvd/S50radvd $(TARGET_DIR)/etc/init.d/S50radvd\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ramsmp/Config.in",
    "content": "config BR2_PACKAGE_RAMSMP\n\tbool \"ramspeed/smp\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  RAMspeed/SMP is a free open source command line utility to\n\t  measure cache and memory performance of multiprocessor\n\t  machines.\n\n\t  http://alasir.com/software/ramspeed/\n"
  },
  {
    "path": "package/ramsmp/Makefile",
    "content": "\nall: generic\n\ngeneric: ramsmp.c fltmem.c fltmark.c intmem.c intmark.c\n\t$(CC) $(CFLAGS) $(LDFLAGS) $^ -o ramsmp\n\ni386: ramsmp.c i386/*.s i386/cpuinfo/*.s\n\t$(CC) $(CFLAGS) -DI386_ASM $(LDFLAGS) $^ -o ramsmp\n\nx86_64: ramsmp.c amd64/*.s\n\t$(CC) $(CFLAGS) -DAMD64_ASM $(LDFLAGS) $^ -o ramsmp\n\nclean:\n\trm -f *.o ramsmp\n"
  },
  {
    "path": "package/ramsmp/ramsmp.hash",
    "content": "# Locally computed\nsha256  39fb15493fb3c293575746d56f6ab9faaa1d876d8b1f0d8e5a4042d2ace95839  ramsmp-3.5.0.tar.gz\nsha256  2c308cffbab01762f8f6b11725725a227080746ef865f2756c9c9e1591dddaad  LICENCE\n"
  },
  {
    "path": "package/ramsmp/ramsmp.mk",
    "content": "################################################################################\n#\n# ramsmp\n#\n################################################################################\n\nRAMSMP_VERSION = 3.5.0\nRAMSMP_SITE = http://www.alasir.com/software/ramspeed\nRAMSMP_ARCH = $(if $(BR2_i386),i386)$(if $(BR2_x86_64),x86_64)\nRAMSMP_LICENSE = Alasir License\nRAMSMP_LICENSE_FILES = LICENCE\n\ndefine RAMSMP_BUILD_CMDS\n\tcp -f package/ramsmp/Makefile $(@D)\n\t$(TARGET_CONFIGURE_OPTS) make -C $(@D) $(RAMSMP_ARCH)\nendef\n\ndefine RAMSMP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/ramsmp $(TARGET_DIR)/usr/bin/ramsmp\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ramspeed/Config.in",
    "content": "config BR2_PACKAGE_RAMSPEED\n\tbool \"ramspeed\"\n\thelp\n\t  RAMspeed is a free open source command line utility\n\t  to measure cache and memory performance.\n\n\t  http://alasir.com/software/ramspeed/\n"
  },
  {
    "path": "package/ramspeed/Makefile",
    "content": "\nall: generic\n\ngeneric: ramspeed.c fltmem.c fltmark.c intmem.c intmark.c\n\t$(CC) $(CFLAGS) $(LDFLAGS) $^ -o ramspeed\n\ni386: ramspeed.c i386/*.s i386/cpuinfo/*.s\n\t$(CC) $(CFLAGS) -DI386_ASM $(LDFLAGS) $^ -o ramspeed\n\nx86_64: ramspeed.c amd64/*.s\n\t$(CC) $(CFLAGS) -DAMD64_ASM $(LDFLAGS) $^ -o ramspeed\n\nclean:\n\trm -f *.o ramspeed\n"
  },
  {
    "path": "package/ramspeed/ramspeed.hash",
    "content": "# Locally computed\nsha256  f84e2e42b2b6b221ef9b586f6ae63d863db4ff21858e0ce7c84622a7c9522950  ramspeed-2.6.0.tar.gz\nsha256  2c308cffbab01762f8f6b11725725a227080746ef865f2756c9c9e1591dddaad  LICENCE\n"
  },
  {
    "path": "package/ramspeed/ramspeed.mk",
    "content": "################################################################################\n#\n# ramspeed\n#\n################################################################################\n\nRAMSPEED_VERSION = 2.6.0\nRAMSPEED_SITE = http://www.alasir.com/software/ramspeed\nRAMSPEED_ARCH = $(if $(BR2_i386),i386)$(if $(BR2_x86_64),x86_64)\nRAMSPEED_LICENSE = Alasir License\nRAMSPEED_LICENSE_FILES = LICENCE\n\ndefine RAMSPEED_BUILD_CMDS\n\tcp -f package/ramspeed/Makefile $(@D)\n\t$(TARGET_CONFIGURE_OPTS) make -C $(@D) $(RAMSPEED_ARCH)\nendef\n\ndefine RAMSPEED_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/ramspeed $(TARGET_DIR)/usr/bin/ramspeed\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ranger/0001-colorscheme-check-for-compiled-python-files.patch",
    "content": "From 654e3116825c4d12340613196279fb13a5662113 Mon Sep 17 00:00:00 2001\nFrom: Thijs Vermeir <thijsvermeir@gmail.com>\nDate: Tue, 20 Oct 2015 18:13:36 +0200\nSubject: [PATCH] colorscheme: check for compiled python files\n\nSome systems only provide *.pyc files\n\nPatch accepted upstream:\nhttps://github.com/hut/ranger/commit/d69f1ed3207c785d1a39ddd2992f6abb021b7540\n\nSigned-off-by: Thijs Vermeir <thijsvermeir@gmail.com>\n---\n ranger/gui/colorscheme.py | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/ranger/gui/colorscheme.py b/ranger/gui/colorscheme.py\nindex d6afcac..d2b3b2d 100644\n--- a/ranger/gui/colorscheme.py\n+++ b/ranger/gui/colorscheme.py\n@@ -86,7 +86,7 @@ def _colorscheme_name_to_class(signal):\n     usecustom = not ranger.arg.clean\n \n     def exists(colorscheme):\n-        return os.path.exists(colorscheme + '.py')\n+        return os.path.exists(colorscheme + '.py') or os.path.exists(colorscheme + '.pyc')\n \n     def is_scheme(x):\n         try:\n-- \n2.6.1\n\n"
  },
  {
    "path": "package/ranger/Config.in",
    "content": "config BR2_PACKAGE_RANGER\n\tbool \"ranger\"\n\tdepends on BR2_USE_MMU # python3\n\tdepends on BR2_USE_WCHAR # python3\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # python3\n\tdepends on !BR2_STATIC_LIBS # python3\n\tselect BR2_PACKAGE_PYTHON3 if !BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON_CURSES if BR2_PACKAGE_PYTHON\n\tselect BR2_PACKAGE_PYTHON3_CURSES if BR2_PACKAGE_PYTHON3\n\thelp\n\t  ranger is a console file manager with VI key bindings. It\n\t  provides a minimalistic and nice curses interface with a\n\t  view on the directory hierarchy.  It ships with \"rifle\", a\n\t  file launcher that is good at automatically finding out\n\t  which program to use for what file type.\n\n\t  http://ranger.nongnu.org\n\ncomment \"ranger needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/ranger/ranger.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  94f6e342daee4445f15db5a7440a11138487c49cc25da0c473bbf1b8978f5b79  ranger-1.7.2.tar.gz\n# Locally computed\nsha256  fa3b40d44066b033ac8a134b792a4a4a1915aa7bc7757098e0f67080648a3271  AUTHORS\n"
  },
  {
    "path": "package/ranger/ranger.mk",
    "content": "################################################################################\n#\n# ranger\n#\n################################################################################\n\nRANGER_VERSION = 1.7.2\nRANGER_SITE = http://ranger.nongnu.org\nRANGER_SETUP_TYPE = distutils\nRANGER_LICENSE = GPL-3.0\nRANGER_LICENSE_FILES = AUTHORS\n\n# The ranger script request python to be called with -O (optimize generated\n# bytecode slightly; also PYTHONOPTIMIZE=x). This implicitly requires the python\n# source files to be present. Therefore, the -O flag is removed when only the .pyc\n# files are installed.\n\ndefine RANGER_DO_NOT_GENERATE_BYTECODE_AT_RUNTIME\n\t$(SED) 's%/usr/bin/python -O%/usr/bin/python%g' $(@D)/scripts/ranger\nendef\n\nifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY)$(BR2_PACKAGE_PYTHON_PYC_ONLY),y)\nRANGER_POST_PATCH_HOOKS += RANGER_DO_NOT_GENERATE_BYTECODE_AT_RUNTIME\nendif\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/rapidjson/Config.in",
    "content": "config BR2_PACKAGE_RAPIDJSON\n\tbool \"rapidjson\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  A fast JSON parser/generator for C++ with both SAX/DOM style\n\t  API.\n\n\t  http://rapidjson.org/\n\ncomment \"rapidjson needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/rapidjson/rapidjson.hash",
    "content": "# Locally calculated\nsha256 bf7ced29704a1e696fbccf2a2b4ea068e7774fa37f6d7dd4039d0787f8bed98e  rapidjson-1.1.0.tar.gz\nsha256 a140e5d46fe734a1c78f1a3c3ef207871dd75648be71fdda8e309b23ab8b1f32  license.txt\n"
  },
  {
    "path": "package/rapidjson/rapidjson.mk",
    "content": "################################################################################\n#\n# rapidjson\n#\n################################################################################\n\nRAPIDJSON_VERSION = 1.1.0\nRAPIDJSON_SITE = $(call github,miloyip,rapidjson,v$(RAPIDJSON_VERSION))\nRAPIDJSON_LICENSE = MIT\nRAPIDJSON_LICENSE_FILES = license.txt\nRAPIDJSON_CPE_ID_VENDOR = tencent\n\n# rapidjson is a header-only C++ library\nRAPIDJSON_INSTALL_TARGET = NO\nRAPIDJSON_INSTALL_STAGING = YES\n\nRAPIDJSON_CONF_OPTS = \\\n\t-DRAPIDJSON_BUILD_DOC=OFF \\\n\t-DRAPIDJSON_BUILD_EXAMPLES=OFF \\\n\t-DRAPIDJSON_BUILD_TESTS=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/rapidxml/0001-ensure-internal-print-operations-are-declared-before.patch",
    "content": "[PATCH] ensure internal print operations are declared before use\n\nStock rapidxml-1.13 does not allow implementers of the\n`rapidxml_print.hpp` header to build under GCC 4.7 (or newer) due to\ncompliation issues. This is a result of \"Name lookup changes\" introduced\nin GCC 4.7 [1]. The following adds forward declarations required to\ncompile with GCC 4.7+.\n\nThis issue has been mentioned upstream [2], but it has yet to be fixed\nin official sources.\n\n[1]: https://gcc.gnu.org/gcc-4.7/porting_to.html\n[2]: https://sourceforge.net/p/rapidxml/bugs/16/\n\nSigned-off-by: James Knight <james.knight@rockwellcollins.com>\n\nIndex: b/rapidxml_print.hpp\n===================================================================\n--- a/rapidxml_print.hpp\n+++ b/rapidxml_print.hpp\n@@ -101,7 +101,16 @@\n \r\n         ///////////////////////////////////////////////////////////////////////////\r\n         // Internal printing operations\r\n-    \r\n+\r\n+        template<class OutIt, class Ch> inline OutIt print_cdata_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);\r\n+        template<class OutIt, class Ch> inline OutIt print_children(OutIt out, const xml_node<Ch> *node, int flags, int indent);\r\n+        template<class OutIt, class Ch> inline OutIt print_comment_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);\r\n+        template<class OutIt, class Ch> inline OutIt print_data_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);\r\n+        template<class OutIt, class Ch> inline OutIt print_declaration_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);\r\n+        template<class OutIt, class Ch> inline OutIt print_doctype_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);\r\n+        template<class OutIt, class Ch> inline OutIt print_element_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);\r\n+        template<class OutIt, class Ch> inline OutIt print_pi_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);\r\n+\r\n         // Print node\r\n         template<class OutIt, class Ch>\r\n         inline OutIt print_node(OutIt out, const xml_node<Ch> *node, int flags, int indent)\r\n"
  },
  {
    "path": "package/rapidxml/Config.in",
    "content": "config BR2_PACKAGE_RAPIDXML\n\tbool \"rapidxml\"\n\thelp\n\t  RapidXml is an attempt to create the fastest XML parser\n\t  possible, while retaining useability, portability and\n\t  reasonable W3C compatibility. It is an in-situ parser with\n\t  parsing speed approaching speed of strlen function executed\n\t  on the same data.\n\n\t  http://sourceforge.net/projects/rapidxml/\n\t  https://en.wikipedia.org/wiki/RapidXml\n"
  },
  {
    "path": "package/rapidxml/rapidxml.hash",
    "content": "# From https://sourceforge.net/projects/rapidxml/files/rapidxml/rapidxml%201.13/\nsha1 f5fd4fbc5ad7e96045313697811d65ea8089a950 rapidxml-1.13.zip\nmd5 7b4b42c9331c90aded23bb55dc725d6a rapidxml-1.13.zip\n\n# Locally calculated\nsha256  c3f0b886374981bb20fabcf323d755db4be6dba42064599481da64a85f5b3571  rapidxml-1.13.zip\nsha256  794bf3b2ecf5cf0c740ac6c524d66ce6284c4b1de1f983d21a242b8abbeb9720  license.txt\n"
  },
  {
    "path": "package/rapidxml/rapidxml.mk",
    "content": "################################################################################\n#\n# rapidxml\n#\n################################################################################\n\nRAPIDXML_VERSION = 1.13\nRAPIDXML_SOURCE = rapidxml-$(RAPIDXML_VERSION).zip\nRAPIDXML_SITE = http://downloads.sourceforge.net/project/rapidxml/rapidxml/rapidxml%20$(RAPIDXML_VERSION)\nRAPIDXML_LICENSE = BSL-1.0 or MIT\nRAPIDXML_LICENSE_FILES = license.txt\n\n# C++ headers only\nRAPIDXML_INSTALL_TARGET = NO\nRAPIDXML_INSTALL_STAGING = YES\n\ndefine RAPIDXML_EXTRACT_CMDS\n\t$(UNZIP) -d $(@D) $(RAPIDXML_DL_DIR)/$(RAPIDXML_SOURCE)\n\tmv $(@D)/rapidxml-$(RAPIDXML_VERSION)/* $(@D)/\n\trmdir $(@D)/rapidxml-$(RAPIDXML_VERSION)\nendef\n\ndefine RAPIDXML_INSTALL_STAGING_CMDS\n\tmkdir -p $(STAGING_DIR)/usr/include/rapidxml\n\tcp -dpfr $(@D)/*hpp $(STAGING_DIR)/usr/include/rapidxml\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/raptor/0001-configure.ac-remove-conditional-lib-inclusion.patch",
    "content": "Removed header Include path from the configure file as path was\nfrom the host, which is wrong for the cross compilation.\nUpstream: None\n\nSigned-off-by: Nitin Mendiratta <nitin.mendiratta@rockwellcollins.com>\n\ndiff --git a/configure.ac b/configure.ac\nindex 10ff870..27b9957 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1145,9 +1145,7 @@ have_lininn=no\n have_inn_parsedate=no\n \n oCPPFLAGS=\"$CPPFLAGS\"\n-if test -d /usr/include/inn; then\n-  CPPFLAGS=\"$CPPFLAGS -I/usr/include/inn\"\n-fi\n+\n AC_CHECK_HEADER(libinn.h)\n CPPFLAGS=\"$oCPPFLAGS\"\n \n"
  },
  {
    "path": "package/raptor/0002-Calcualte-max-nspace-declarations-correctly-for-XML-.patch",
    "content": "From 590681e546cd9aa18d57dc2ea1858cb734a3863f Mon Sep 17 00:00:00 2001\nFrom: Dave Beckett <dave@dajobe.org>\nDate: Sun, 16 Apr 2017 23:15:12 +0100\nSubject: [PATCH] Calcualte max nspace declarations correctly for XML writer\n\n(raptor_xml_writer_start_element_common): Calculate max including for\neach attribute a potential name and value.\n\nFixes Issues #0000617 http://bugs.librdf.org/mantis/view.php?id=617\nand #0000618 http://bugs.librdf.org/mantis/view.php?id=618\n\n[Peter: fixes CVE-2017-18926, upstream:\n https://github.com/dajobe/raptor/commit/590681e546cd9aa18d57dc2ea1858cb734a3863f]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n src/raptor_xml_writer.c | 7 ++++---\n 1 file changed, 4 insertions(+), 3 deletions(-)\n\ndiff --git a/src/raptor_xml_writer.c b/src/raptor_xml_writer.c\nindex 693b9468..0d3a36a5 100644\n--- a/src/raptor_xml_writer.c\n+++ b/src/raptor_xml_writer.c\n@@ -181,9 +181,10 @@ raptor_xml_writer_start_element_common(raptor_xml_writer* xml_writer,\n   size_t nspace_declarations_count = 0;  \n   unsigned int i;\n \n-  /* max is 1 per element and 1 for each attribute + size of declared */\n   if(nstack) {\n-    int nspace_max_count = element->attribute_count+1;\n+    int nspace_max_count = element->attribute_count * 2; /* attr and value */\n+    if(element->name->nspace)\n+      nspace_max_count++;\n     if(element->declared_nspaces)\n       nspace_max_count += raptor_sequence_size(element->declared_nspaces);\n     if(element->xml_language)\n@@ -237,7 +238,7 @@ raptor_xml_writer_start_element_common(raptor_xml_writer* xml_writer,\n         }\n       }\n \n-      /* Add the attribute + value */\n+      /* Add the attribute's value */\n       nspace_declarations[nspace_declarations_count].declaration=\n         raptor_qname_format_as_xml(element->attributes[i],\n                                    &nspace_declarations[nspace_declarations_count].length);\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/raptor/Config.in",
    "content": "config BR2_PACKAGE_RAPTOR\n\tbool \"raptor\"\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_LIBXSLT\n\thelp\n\t  A C library that provides a set of parsers and\n\t  serializers that generate Resource Description\n\t  Framework (RDF) triples by parsing syntaxes or\n\t  serialize the triples into a syntax.\n\n\t  http://librdf.org/raptor/\n"
  },
  {
    "path": "package/raptor/raptor.hash",
    "content": "# Locally calculated\nsha256  ada7f0ba54787b33485d090d3d2680533520cd4426d2f7fb4782dd4a6a1480ed  raptor2-2.0.15.tar.gz\nsha256  6b926a47abfb87451c436fbd4a868defec963d0232c70b806ac02d4a2a6e1968  LICENSE.txt\n"
  },
  {
    "path": "package/raptor/raptor.mk",
    "content": "################################################################################\n#\n# raptor\n#\n################################################################################\n\nRAPTOR_VERSION = 2.0.15\nRAPTOR_SOURCE = raptor2-$(RAPTOR_VERSION).tar.gz\nRAPTOR_SITE = http://download.librdf.org/source\nRAPTOR_DEPENDENCIES = libxml2 libxslt\nRAPTOR_LICENSE = GPL-2.0+ or LGPL-2.1+ or Apache-2.0+\nRAPTOR_LICENSE_FILES = LICENSE.txt\nRAPTOR_CPE_ID_VENDOR = librdf\nRAPTOR_CPE_ID_PRODUCT = raptor_rdf_syntax_library\nRAPTOR_INSTALL_STAGING = YES\n\n# Flag is added to make sure the patch is applied for the configure.ac of raptor.\nRAPTOR_AUTORECONF = YES\n\n# 0002-Calcualte-max-nspace-declarations-correctly-for-XML-.patch\nRAPTOR_IGNORE_CVES += CVE-2017-18926\n\nRAPTOR_CONF_OPTS =\\\n\t--with-xml2-config=$(STAGING_DIR)/usr/bin/xml2-config \\\n\t--with-xslt-config=$(STAGING_DIR)/usr/bin/xslt-config\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nRAPTOR_DEPENDENCIES += libcurl\nRAPTOR_CONF_OPTS += --with-curl-config=$(STAGING_DIR)/usr/bin/curl-config\nelse\nRAPTOR_CONF_OPTS += --with-curl-config=no\nendif\n\nifeq ($(BR2_PACKAGE_YAJL),y)\nRAPTOR_DEPENDENCIES += yajl\nRAPTOR_CONF_ENV += LIBS=\"-lm\"\nRAPTOR_CONF_OPTS += --with-yajl=$(STAGING_DIR)/usr\nelse\nRAPTOR_CONF_OPTS += --with-yajl=no\nendif\n\nifeq ($(BR2_PACKAGE_ICU),y)\nRAPTOR_DEPENDENCIES += icu\nRAPTOR_CONF_OPTS += --with-icu-config=$(STAGING_DIR)/usr/bin/icu-config\nelse\nRAPTOR_CONF_OPTS += --with-icu-config=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch",
    "content": "From 38b730c00f45abf324caf687b5b00662ff4252c2 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Fri, 2 Dec 2016 23:09:44 +0100\nSubject: [PATCH] Makefile: allow passing CFLAGS/LDFLAGS\n\nThis might be needed to pass some custom CFLAGS/LDFLAGS when building\nrpiboot.\n\nSubmitted-upstream: https://github.com/raspberrypi/usbboot/pull/2\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Rebased on 9324fd7]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 822e714..875e717 100755\n--- a/Makefile\n+++ b/Makefile\n@@ -1,5 +1,5 @@\n rpiboot: main.c msd/bootcode.h msd/start.h msd/bootcode4.h msd/start4.h\n-\t$(CC) -Wall -Wextra -g -o $@ $< -lusb-1.0\n+\t$(CC) -Wall -Wextra -g $(CFLAGS) -o $@ $< -lusb-1.0 $(LDFLAGS)\n \n %.h: %.bin ./bin2c\n \t./bin2c $< $@\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/raspberrypi-usbboot/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_RASPBERRYPI_USBBOOT\n\tbool \"host raspberrypi-usbboot\"\n\tdepends on BR2_arm || BR2_aarch64\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb\n\thelp\n\t  This package builds and install the \"rpiboot\" tool for the\n\t  host machine. This tool allows to boot the Broadcom BCM\n\t  processor used in the RaspberryPi to boot over USB, and have\n\t  it expose a USB mass storage device in order to reflash the\n\t  built-in storage of the RaspberryPi (useful for the eMMC\n\t  built into the Compute module).\n\n\t  https://github.com/raspberrypi/usbboot\n\ncomment \"host raspberrypi-usbboot needs a toolchain w/ host gcc >= 4.9\"\n\tdepends on BR2_arm || BR2_aarch64\n\tdepends on !BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/raspberrypi-usbboot/raspberrypi-usbboot.hash",
    "content": "# Locally calculated\nsha256  e4a07df05c23e0eba100d4013367e7823e3b8bc72da7b79b031bd346616c6ae5  raspberrypi-usbboot-9324fd7034b9d3606aed8a27da74d6d57e066e7e.tar.gz\n\n# License files\nsha256  b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1  LICENSE\n"
  },
  {
    "path": "package/raspberrypi-usbboot/raspberrypi-usbboot.mk",
    "content": "################################################################################\n#\n# raspberrypi-usbboot\n#\n################################################################################\n\nRASPBERRYPI_USBBOOT_VERSION = 9324fd7034b9d3606aed8a27da74d6d57e066e7e\nRASPBERRYPI_USBBOOT_SITE = $(call github,raspberrypi,usbboot,$(RASPBERRYPI_USBBOOT_VERSION))\nRASPBERRYPI_USBBOOT_LICENSE = Apache-2.0\nRASPBERRYPI_USBBOOT_LICENSE_FILES = LICENSE\n\nHOST_RASPBERRYPI_USBBOOT_DEPENDENCIES = host-libusb\n\ndefine HOST_RASPBERRYPI_USBBOOT_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine HOST_RASPBERRYPI_USBBOOT_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/rpiboot $(HOST_DIR)/bin/rpiboot\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/raspi-gpio/Config.in",
    "content": "config BR2_PACKAGE_RASPI_GPIO\n\tbool \"raspi-gpio\"\n\thelp\n\t  Tool to help debug / hack at the BCM283x GPIO. You can dump\n\t  the state of a GPIO or (all GPIOs). You can change a GPIO\n\t  mode and pulls (and level if set as an output).\n\n\t  Beware this tool writes directly to the BCM283x GPIO\n\t  registers, ignoring anything else that may be using them\n\t  (like Linux drivers).\n\n\t  https://github.com/RPi-Distro/raspi-gpio\n"
  },
  {
    "path": "package/raspi-gpio/raspi-gpio.hash",
    "content": "# Locally calculated\nsha256 2526dcec1e5a171b13c44b1fb6f2faed5ec849f08021278e2be09bc18264a2fd  raspi-gpio-4edfde183ff3ac9ed66cdc015ae25e45f3a5502d.tar.gz\nsha256 6e02227e1fb942687163996678d94add7911890c50025912d0ae7ee66d256bb2  LICENSE\n"
  },
  {
    "path": "package/raspi-gpio/raspi-gpio.mk",
    "content": "################################################################################\n#\n# raspi-gpio\n#\n################################################################################\n\nRASPI_GPIO_VERSION = 4edfde183ff3ac9ed66cdc015ae25e45f3a5502d\nRASPI_GPIO_SITE = $(call github,RPi-Distro,raspi-gpio,$(RASPI_GPIO_VERSION))\nRASPI_GPIO_LICENSE = BSD-3-Clause\nRASPI_GPIO_LICENSE_FILES = LICENSE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ratpoison/Config.in",
    "content": "config BR2_PACKAGE_RATPOISON\n\tbool \"ratpoison\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_LIBERATION\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  Ratpoison is a simple Window Manager. It is largely modelled\n\t  after GNU Screen and focuses on the keyboard instead of a\n\t  mouse.\n\n\t  The screen can be split into non-overlapping frames.  All\n\t  windows are kept maximized inside their frames to take full\n\t  advantage of your precious screen real estate.\n\n\t  http://www.nongnu.org/ratpoison/\n"
  },
  {
    "path": "package/ratpoison/ratpoison.hash",
    "content": "# Locally computed\nsha256  d98fa4be025ecca453c407ff311ab3949f29f20d6d8abedf8f0716b85fc8d1f1  ratpoison-1.4.9.tar.xz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/ratpoison/ratpoison.mk",
    "content": "################################################################################\n#\n# ratpoison\n#\n################################################################################\n\nRATPOISON_VERSION = 1.4.9\nRATPOISON_SOURCE = ratpoison-$(RATPOISON_VERSION).tar.xz\nRATPOISON_SITE = http://download.savannah.nongnu.org/releases/ratpoison\nRATPOISON_LICENSE = GPL-2.0+\nRATPOISON_LICENSE_FILES = COPYING\n\nRATPOISON_CONF_OPTS = \\\n\t--x-includes=$(STAGING_DIR)/usr/include/X11 \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib \\\n\t--without-xkb \\\n\t--without-xft\n\nRATPOISON_DEPENDENCIES = xlib_libX11\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)\nRATPOISON_DEPENDENCIES += xlib_libXrandr\nRATPOISON_CONF_OPTS += --with-xrandr\nelse\nRATPOISON_CONF_OPTS += --without-xrandr\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rauc/Config.in",
    "content": "config BR2_PACKAGE_RAUC\n\tbool \"rauc\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tdepends on BR2_USE_WCHAR # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_SQUASHFS # run-time dependency\n\tselect BR2_PACKAGE_UBOOT_TOOLS if BR2_TARGET_UBOOT # run-time dependency\n\tselect BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV if BR2_TARGET_UBOOT\n\thelp\n\t  RAUC is the Robust Auto-Update Controller developed by\n\t  Pengutronix. It supports updating embedded Linux\n\t  systems over the network or from disks and provides a\n\t  d-bus interface.\n\n\t  http://rauc.io/\n\nif BR2_PACKAGE_RAUC\n\nconfig BR2_PACKAGE_RAUC_NETWORK\n\tbool \"network support\"\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  This option enables support for updating firmware over\n\t  the network using libcurl.\n\nconfig BR2_PACKAGE_RAUC_JSON\n\tbool \"JSON output support\"\n\tselect BR2_PACKAGE_JSON_GLIB\n\thelp\n\t  This option enables support for providing output in\n\t  JSON format.\n\nendif\n\ncomment \"rauc needs a toolchain w/ wchar, threads\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/rauc/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_RAUC\n\tbool \"host rauc\"\n\tselect BR2_PACKAGE_HOST_SQUASHFS # run-time dependency\n\thelp\n\t  RAUC is the Robust Auto-Update Controller developed by\n\t  Pengutronix. Enable this option to build the rauc\n\t  host tool which may be used to generate firmware\n\t  bundles that are handled by the target rauc service.\n\n\t  http://rauc.io/\n"
  },
  {
    "path": "package/rauc/rauc.hash",
    "content": "# Locally calculated, after verifying against\n# https://github.com/rauc/rauc/releases/download/v1.5.1/rauc-1.5.1.tar.xz.asc\nsha256  d4ea009ce702bcb083d942398ccfedec959c6bbb7adc0fd77ae9314ce11d9d91  rauc-1.5.1.tar.xz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/rauc/rauc.mk",
    "content": "################################################################################\n#\n# rauc\n#\n################################################################################\n\nRAUC_VERSION = 1.5.1\nRAUC_SITE = https://github.com/rauc/rauc/releases/download/v$(RAUC_VERSION)\nRAUC_SOURCE = rauc-$(RAUC_VERSION).tar.xz\nRAUC_LICENSE = LGPL-2.1\nRAUC_LICENSE_FILES = COPYING\nRAUC_CPE_ID_VENDOR = pengutronix\nRAUC_DEPENDENCIES = host-pkgconf openssl libglib2 dbus\n\nifeq ($(BR2_PACKAGE_RAUC_NETWORK),y)\nRAUC_CONF_OPTS += --enable-network\nRAUC_DEPENDENCIES += libcurl\nelse\nRAUC_CONF_OPTS += --disable-network\nendif\n\nifeq ($(BR2_PACKAGE_RAUC_JSON),y)\nRAUC_CONF_OPTS += --enable-json\nRAUC_DEPENDENCIES += json-glib\nelse\nRAUC_CONF_OPTS += --disable-json\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\n# configure uses pkg-config --variable=systemdsystemunitdir systemd\nRAUC_DEPENDENCIES += systemd\nendif\n\ndefine RAUC_INSTALL_INIT_SYSTEMD\n\tmkdir -p $(TARGET_DIR)/usr/lib/systemd/system/rauc.service.d\n\tprintf '[Install]\\nWantedBy=multi-user.target\\n' \\\n\t\t>$(TARGET_DIR)/usr/lib/systemd/system/rauc.service.d/buildroot-enable.conf\nendef\n\nHOST_RAUC_DEPENDENCIES = \\\n\thost-pkgconf \\\n\thost-openssl \\\n\thost-libglib2 \\\n\thost-squashfs \\\n\t$(if $(BR2_PACKAGE_HOST_LIBP11),host-libp11)\nHOST_RAUC_CONF_OPTS += \\\n\t--disable-network \\\n\t--disable-json \\\n\t--disable-service \\\n\t--without-dbuspolicydir \\\n\t--with-systemdunitdir=no\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/rcw-smarc-sal28/Config.in",
    "content": "config BR2_PACKAGE_RCW_SMARC_SAL28\n\tbool \"rcw-smarc-sal28\"\n\thelp\n\t  The reset configuration word for the SMARC-sAL28 board. All\n\t  available RCWs are copied into the images output directory.\n\t  Additionally, you have to choose one default RCW which is\n\t  used for booting the board.\n\nif BR2_PACKAGE_RCW_SMARC_SAL28\nconfig BR2_PACKAGE_RCW_SMARC_SAL28_BUILD_UPDATE_SCRIPT\n\tbool \"Build RCW u-boot update script\"\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS\n\thelp\n\t  Build the RCW updater script which can be used in the\n\t  bootloader to change the installed RCW during runtime. The\n\t  update script is called update-rcw.img and will be copied\n\t  to the output directory.\n\nconfig BR2_PACKAGE_RCW_SMARC_SAL28_BOOT_VARIANT\n\tstring \"RCW variant for booting\"\n\tdefault \"3-11_q\"\n\thelp\n\t  The suffix of the RCW filename without the \".bin\" part.\n\t  E.g.  setting this to \"3-11_q\" will use \"sl28-3-11_q.bin\".\nendif\n"
  },
  {
    "path": "package/rcw-smarc-sal28/rcw-smarc-sal28.hash",
    "content": "# locally computed\nsha256\t8c1c3e26407141ee8d8bd16a43c16c0459b01a60e6e25ca47e22c7499b3e4e65  rcw-smarc-sal28-11.tar.gz\nsha256\t803c65088eed36a6697ca9f03f4379bbad24e276dc8da7fef5eb4dc4008415a1  COPYING\n"
  },
  {
    "path": "package/rcw-smarc-sal28/rcw-smarc-sal28.mk",
    "content": "################################################################################\n#\n# rcw-smarc-sal28\n#\n################################################################################\n\nRCW_SMARC_SAL28_VERSION = 11\nRCW_SMARC_SAL28_SITE = $(call github,kontron,rcw-smarc-sal28,v$(RCW_SMARC_SAL28_VERSION))\nRCW_SMARC_SAL28_LICENSE = BSD-2-Clause\nRCW_SMARC_SAL28_LICENSE_FILES = COPYING\nRCW_SMARC_SAL28_INSTALL_TARGET = NO\nRCW_SMARC_SAL28_INSTALL_IMAGES = YES\n\nRCW_SMARC_SAL28_BOOT_VARIANT = $(call qstrip,$(BR2_PACKAGE_RCW_SMARC_SAL28_BOOT_VARIANT))\n\nifeq ($(BR2_PACKAGE_RCW_SMARC_SAL28_BUILD_UPDATE_SCRIPT),y)\nRCW_SMARC_SAL28_DEPENDENCIES += host-uboot-tools\ndefine RCW_SMARC_SAL28_UPDATE_SCRIPT_BUILD_CMDS\n\tMKIMAGE=$(HOST_DIR)/bin/mkimage $(MAKE) -C $(@D)/contrib all\nendef\ndefine RCW_SMARC_SAL28_UPDATE_SCRIPT_INSTALL_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/contrib/update-rcw.img $(BINARIES_DIR)/\nendef\nendif\n\ndefine RCW_SMARC_SAL28_BUILD_CMDS\n\t$(RCW_SMARC_SAL28_UPDATE_SCRIPT_BUILD_CMDS)\nendef\n\ndefine RCW_SMARC_SAL28_INSTALL_IMAGES_CMDS\n\t$(INSTALL) -d $(BINARIES_DIR)/rcw\n\t$(INSTALL) -D -m 0644 $(@D)/sl28-*.bin $(BINARIES_DIR)/rcw/\n\tln -sf rcw/sl28-$(RCW_SMARC_SAL28_BOOT_VARIANT).bin $(BINARIES_DIR)/rcw.bin\n\t$(RCW_SMARC_SAL28_UPDATE_SCRIPT_INSTALL_CMDS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rdesktop/0001-8bit-colors.patch",
    "content": "diff -urpN rdesktop-1.5.0-orig/xwin.c rdesktop-1.5.0/xwin.c\n--- rdesktop-1.5.0-orig/xwin.c\t2007-01-17 12:01:18.000000000 +0100\n+++ rdesktop-1.5.0/xwin.c\t2007-01-17 12:05:02.000000000 +0100\n@@ -1461,7 +1461,7 @@ select_visual(int screen_num)\n \t\t}\n \n \t\t/* we use a colourmap, so the default visual should do */\n-\t\tg_owncolmap = True;\n+//\t\tg_owncolmap = True;\n \t\tg_visual = vmatches[0].visual;\n \t\tg_depth = vmatches[0].depth;\n \t}\n@@ -1568,7 +1568,7 @@ ui_init(void)\n \t{\n \t\tg_xcolmap =\n \t\t\tXCreateColormap(g_display, RootWindowOfScreen(g_screen), g_visual,\n-\t\t\t\t\tAllocNone);\n+\t\t\t\t\t(g_depth <= 8) ? AllocAll : AllocNone);\n \t\tif (g_depth <= 8)\n \t\t\twarning(\"Display colour depth is %d bit: you may want to use -C for a private colourmap.\\n\", g_depth);\n \t}\n"
  },
  {
    "path": "package/rdesktop/Config.in",
    "content": "config BR2_PACKAGE_RDESKTOP\n\tbool \"rdesktop\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # gnutls\n\tdepends on BR2_USE_WCHAR # gnutls\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_GNUTLS\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_LIBTASN1\n\tselect BR2_PACKAGE_NETTLE\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXCURSOR\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\thelp\n\t  rdesktop is an open source client for Windows NT Terminal\n\t  Server and Windows 2000/2003 Terminal Services, capable of\n\t  natively speaking Remote Desktop Protocol (RDP) in order to\n\t  present the user's NT desktop.\n\n\t  http://rdesktop.sf.net/\n\ncomment \"rdesktop needs a toolchain w/ wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/rdesktop/rdesktop.hash",
    "content": "# Locally calculated\nsha256  473c2f312391379960efe41caad37852c59312bc8f100f9b5f26609ab5704288  rdesktop-1.9.0.tar.gz\nsha256  fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7  COPYING\n"
  },
  {
    "path": "package/rdesktop/rdesktop.mk",
    "content": "################################################################################\n#\n# rdesktop\n#\n################################################################################\n\nRDESKTOP_VERSION = 1.9.0\nRDESKTOP_SITE = \\\n\thttps://github.com/rdesktop/rdesktop/releases/download/v$(RDESKTOP_VERSION)\nRDESKTOP_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tgnutls \\\n\tlibtasn1 \\\n\tnettle \\\n\txlib_libX11 \\\n\txlib_libXcursor \\\n\txlib_libXt \\\n\t$(if $(BR2_PACKAGE_ALSA_LIB_PCM),alsa-lib) \\\n\t$(if $(BR2_PACKAGE_LIBAO),libao) \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv) \\\n\t$(if $(BR2_PACKAGE_LIBSAMPLERATE),libsamplerate) \\\n\t$(if $(BR2_PACKAGE_PULSEAUDIO),pulseaudio) \\\n\t$(if $(BR2_PACKAGE_XLIB_LIBXRANDR),xlib_libXrandr)\nRDESKTOP_CONF_OPTS = --disable-credssp\nRDESKTOP_LICENSE = GPL-3.0+\nRDESKTOP_LICENSE_FILES = COPYING\nRDESKTOP_CPE_ID_VENDOR = rdesktop\n\nifeq ($(BR2_PACKAGE_PCSC_LITE),y)\nRDESKTOP_DEPENDENCIES += pcsc-lite\nelse\nRDESKTOP_CONF_OPTS += --disable-smartcard\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/re2/Config.in",
    "content": "config BR2_PACKAGE_RE2\n\tbool \"re2\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # needs C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  RE2 is a fast, safe, thread-friendly alternative\n\t  to backtracking regular expression engines like\n\t  those used in PCRE, Perl, and Python.\n\t  It is a C++ library.\n\n\t  https://github.com/google/re2\n\ncomment \"re2 needs a toolchain w/ C++, threads, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/re2/re2.hash",
    "content": "# locally calculated\nsha256  cd8c950b528f413e02c12970dce62a7b6f37733d7f68807e73a2d9bc9db79bc8  re2-2021-08-01.tar.gz\nsha256  6040cda75d90b1738292a631d89934c411ef7ffd543c4d6a1b7edfc8edf29449  LICENSE\n"
  },
  {
    "path": "package/re2/re2.mk",
    "content": "################################################################################\n#\n# re2\n#\n################################################################################\n\nRE2_VERSION = 2021-08-01\nRE2_SITE = $(call github,google,re2,$(RE2_VERSION))\nRE2_LICENSE = BSD-3-Clause\nRE2_LICENSE_FILES = LICENSE\nRE2_INSTALL_STAGING = YES\n\nRE2_CONF_OPTS += -DRE2_BUILD_TESTING=OFF\nHOST_RE2_CONF_OPTS += -DRE2_BUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/read-edid/0001-Fix-install-file-list.patch",
    "content": "From 562f48bee3443bda0ac257f2b0c52a72208163e0 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Mon, 7 Dec 2015 21:20:38 +0100\nSubject: [PATCH] Fix install file list.\n\nFixes:\n  CMake Error at cmake_install.cmake:40 (file):\n    file INSTALL cannot find\n    \".../build/read-edid-3.0.2/COPYING\".\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n CMakeLists.txt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 7bf4561..2b9bc86 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -13,5 +13,5 @@ endif ()\n add_subdirectory (parse-edid)\n \n INSTALL(FILES get-edid.1 DESTINATION share/man/man1)\n-INSTALL(FILES AUTHORS ChangeLog COPYING README DESTINATION\n+INSTALL(FILES AUTHORS ChangeLog README DESTINATION\n \tshare/doc/read-edid)\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/read-edid/0002-Fix-compiler-check.patch",
    "content": "Fix compiler check\n\nBy default CMake looks for c++ which the project does not need.\n\nPatch by Thomas:\nhttp://lists.busybox.net/pipermail/buildroot/2015-December/146865.html\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr read-edid-3.0.2.org/CMakeLists.txt read-edid-3.0.2/CMakeLists.txt\n--- read-edid-3.0.2.org/CMakeLists.txt\t2014-02-05 17:27:26.000000000 +0100\n+++ read-edid-3.0.2/CMakeLists.txt\t2015-12-13 16:08:43.000000000 +0100\n@@ -1,5 +1,5 @@\n cmake_minimum_required (VERSION 2.6)\n-project (read-edid)\n+project (read-edid C)\n \n option(I2CBUILD \"Build I2C get-edid implementation\" ON)\n option(CLASSICBUILD \"Build VBE get-edid implementation\" ON)\n"
  },
  {
    "path": "package/read-edid/0003-fix-build-with-gcc-10.patch",
    "content": "fix build with gcc 10\n\nDefine quiet as static to avoid the following build failure with gcc 10\n(which defaults to -fno-common):\n\n/home/naourr/work/instance-2/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: CMakeFiles/get-edid.dir/i2c.c.o:(.bss+0x0): multiple definition of `quiet'; CMakeFiles/get-edid.dir/get-edid.c.o:(.bss+0x0): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/28bde8049b6610273bceae26eca407c819a37dcd\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to pyrophobicman@gmail.com]\n\ndiff -Nura read-edid-3.0.2.orig/get-edid/classic.c read-edid-3.0.2/get-edid/classic.c\n--- read-edid-3.0.2.orig/get-edid/classic.c\t2020-09-25 23:25:01.928805414 +0200\n+++ read-edid-3.0.2/get-edid/classic.c\t2020-09-25 23:26:37.440807301 +0200\n@@ -26,7 +26,7 @@\n #define dosmemput(buffer,length,offset) memcpy(offset,buffer,length)\n \n #define display(...) if (quiet == 0) { fprintf(stderr, __VA_ARGS__); }\n-int quiet;\n+static int quiet;\n \n real_ptr far_ptr_to_real_ptr( uint32 farptr )\n {\ndiff -Nura read-edid-3.0.2.orig/get-edid/get-edid.c read-edid-3.0.2/get-edid/get-edid.c\n--- read-edid-3.0.2.orig/get-edid/get-edid.c\t2020-09-25 23:25:01.928805414 +0200\n+++ read-edid-3.0.2/get-edid/get-edid.c\t2020-09-25 23:28:20.740809341 +0200\n@@ -9,7 +9,7 @@\n #include <stdlib.h>\n #include <string.h>\n \n-int quiet=0;\n+static int quiet=0;\n int i2conly=0; //0=both, 1=i2conly, 2=classiconly\n int i2cbus=-1;\n int classmon=0;\ndiff -Nura read-edid-3.0.2.orig/get-edid/i2c.c read-edid-3.0.2/get-edid/i2c.c\n--- read-edid-3.0.2.orig/get-edid/i2c.c\t2020-09-25 23:25:01.928805414 +0200\n+++ read-edid-3.0.2/get-edid/i2c.c\t2020-09-25 23:28:32.152809567 +0200\n@@ -15,7 +15,7 @@\n \n //Ideas (but not too much actual code) taken from i2c-tools. Thanks guys.\n \n-int quiet;\n+static int quiet;\n \n #define display(...) if (quiet == 0) { fprintf(stderr, __VA_ARGS__); }\n \n"
  },
  {
    "path": "package/read-edid/Config.in",
    "content": "config BR2_PACKAGE_READ_EDID\n\tbool \"read-edid\"\n\thelp\n\t  Read-edid is a pair of tools for reading the EDID from a\n\t  monitor. It should work with most monitors made since 1996\n\t  (except for newer ones with 256-byte EDID's - WiP), assuming\n\t  the video card supports the standard read commands (most\n\t  do). Read-edid is a set of two tools - get-edid, which gets\n\t  the raw edid information from the monitor, and parse-edid,\n\t  which turns the raw binary information into an\n\t  XF86Config-compatible monitor section.\n\n\t  http://polypux.org/projects/read-edid/\n"
  },
  {
    "path": "package/read-edid/read-edid.hash",
    "content": "# Locally calculated\nsha256  c7c6d8440f5b90f98e276829271ccea5b2ff5a3413df8a0f87ec09f834af186f  read-edid-3.0.2.tar.gz\nsha256  1f8e8a59865d73076ab0a015330bc5bde7332384281260093878a3c366b778b7  LICENSE\n"
  },
  {
    "path": "package/read-edid/read-edid.mk",
    "content": "################################################################################\n#\n# read-edid\n#\n################################################################################\n\nREAD_EDID_VERSION = 3.0.2\nREAD_EDID_SITE = http://www.polypux.org/projects/read-edid\nREAD_EDID_LICENSE = BSD-like\nREAD_EDID_LICENSE_FILES = LICENSE\n\n# disable classic get-edid support (needs libx86)\nREAD_EDID_CONF_OPTS += -DCLASSICBUILD=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/readline/0001-curses-link.patch",
    "content": "link readline directly to ncurses since it needs symbols from it\n\nupstream readline does this on purpose (no direct linking), but\nit doesn't make much sense in a Linux world\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\n--- a/support/shobj-conf\n+++ b/support/shobj-conf\n@@ -42,7 +42,7 @@\n SHOBJ_LIBS=\n \n SHLIB_XLDFLAGS=\n-SHLIB_LIBS=\n+SHLIB_LIBS=-lncurses\n \n SHLIB_DOT='.'\n SHLIB_LIBPREF='lib'\n"
  },
  {
    "path": "package/readline/Config.in",
    "content": "config BR2_PACKAGE_READLINE\n\tbool \"readline\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  The GNU Readline library provides a set of functions for use\n\t  by applications that allow users to edit command lines\n\t  as they are typed in.\n\n\t  https://tiswww.case.edu/php/chet/readline/rltop.html\n\nconfig BR2_PACKAGE_READLINE_BRACKETED_PASTE\n\tbool \"Enable bracketed paste\"\n\tdepends on BR2_PACKAGE_READLINE\n\thelp\n\t  Enable the \"bracketed paste\" feature in libreadline.\n\n\t  Bracketed paste is helpful for interactive sessions when\n\t  one wants to prevent pasted text from being interpreted\n\t  as typed-in commands. However, it also causes control\n\t  characters to show up in the raw output of a (telnet)\n\t  session. This can cause issues and throw off pattern\n\t  matching if the session output is being captured for\n\t  automated processing.\n\n\t  For further information on this feature and whether you\n\t  may want it, see:\n\t      https://cirw.in/blog/bracketed-paste\n"
  },
  {
    "path": "package/readline/inputrc",
    "content": "# /etc/inputrc - global inputrc for libreadline\n# See readline(3readline) and `info readline' for more information.\n\n# Be 8 bit clean.\nset input-meta on\nset output-meta on\nset bell-style visible\n\n# To allow the use of 8bit-characters like the german umlauts, comment out\n# the line below. However this makes the meta key not work as a meta key,\n# which is annoying to those which don't need to type in 8-bit characters.\n\n# set convert-meta off\n\n\"\\e0d\": backward-word\n\"\\e0c\": forward-word\n\"\\e[h\": beginning-of-line\n\"\\e[f\": end-of-line\n\"\\e[1~\": beginning-of-line\n\"\\e[4~\": end-of-line\n#\"\\e[5~\": beginning-of-history\n#\"\\e[6~\": end-of-history\n\"\\e[3~\": delete-char\n\"\\e[2~\": quoted-insert\n\n# Common standard keypad and cursor\n# (codes courtsey Werner Fink, <werner@suse.de>)\n#\"\\e[1~\": history-search-backward\n\"\\e[2~\": yank\n\"\\e[3~\": delete-char\n#\"\\e[4~\": set-mark\n\"\\e[5~\": history-search-backward\n\"\\e[6~\": history-search-forward\n# Normal keypad and cursor of xterm\n\"\\e[F\": end-of-line\n\"\\e[H\": beginning-of-line\n# Application keypad and cursor of xterm\n\"\\eOA\": previous-history\n\"\\eOC\": forward-char\n\"\\eOB\": next-history\n\"\\eOD\": backward-char\n\"\\eOF\": end-of-line\n\"\\eOH\": beginning-of-line\n\n"
  },
  {
    "path": "package/readline/readline.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  f8ceb4ee131e3232226a17f51b164afc46cd0b9e6cef344be87c65962cb82b02  readline-8.1.tar.gz\n\n# Hash for license file\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/readline/readline.mk",
    "content": "################################################################################\n#\n# readline\n#\n################################################################################\n\nREADLINE_VERSION = 8.1\nREADLINE_SITE = $(BR2_GNU_MIRROR)/readline\nREADLINE_INSTALL_STAGING = YES\nREADLINE_DEPENDENCIES = ncurses host-autoconf\nHOST_READLINE_DEPENDENCIES = host-ncurses host-autoconf\nREADLINE_CONF_ENV = bash_cv_func_sigsetjmp=yes \\\n\tbash_cv_wcwidth_broken=no\nREADLINE_CONF_OPTS = --disable-install-examples\nREADLINE_LICENSE = GPL-3.0+\nREADLINE_LICENSE_FILES = COPYING\nREADLINE_CPE_ID_VENDOR = gnu\n\nifeq ($(BR2_PACKAGE_READLINE_BRACKETED_PASTE),y)\nREADLINE_CONF_OPTS += --enable-bracketed-paste-default\nelse\nREADLINE_CONF_OPTS += --disable-bracketed-paste-default\nendif\n\ndefine READLINE_INSTALL_INPUTRC\n\t$(INSTALL) -D -m 644 package/readline/inputrc $(TARGET_DIR)/etc/inputrc\nendef\nREADLINE_POST_INSTALL_TARGET_HOOKS += READLINE_INSTALL_INPUTRC\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/reaver/Config.in",
    "content": "config BR2_PACKAGE_REAVER\n\tbool \"reaver\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  Reaver is a tool to audit networks against brute WPS pins\n\t  attacks. It is complementary to \"Aircrack-ng\".\n\n\t  https://code.google.com/archive/p/reaver-wps/wikis/README.wiki\n\t  https://github.com/t6x/reaver-wps-fork-t6x\n\ncomment \"reaver needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/reaver/reaver.hash",
    "content": "# locally computed\nsha256 73189782b208d12b8dddc4f29d32e1f72b1f3609e573c9ea9510deebec394583  reaver-1.6.6.tar.gz\nsha256 bb40cfd5e9ca6e8465ea3c236f3f2293e8300af1bfe87e72fabe482ae6cc995a  docs/LICENSE\n"
  },
  {
    "path": "package/reaver/reaver.mk",
    "content": "################################################################################\n#\n# reaver\n#\n################################################################################\n\n# Older repos for this project will not cross-compile easily\n# while this one works right away\nREAVER_VERSION = 1.6.6\nREAVER_SITE = $(call github,t6x,reaver-wps-fork-t6x,v$(REAVER_VERSION))\nREAVER_LICENSE = GPL-2.0+\nREAVER_LICENSE_FILES = docs/LICENSE\n\nREAVER_SUBDIR = src\nREAVER_DEPENDENCIES = libpcap\n\nifeq ($(BR2_STATIC_LIBS),y)\nREAVER_CONF_ENV += \\\n\tLIBS=\"`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\" \\\n\tLDFLAGS=\"$(TARGET_LDFLAGS) `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\"\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/redir/Config.in",
    "content": "config BR2_PACKAGE_REDIR\n\tbool \"redir\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  This is a TCP port redirector for UNIX.\n\n\t  https://github.com/troglobit/redir\n"
  },
  {
    "path": "package/redir/redir.hash",
    "content": "# From https://github.com/troglobit/redir/releases/download/v3.3/redir-3.3.tar.xz.md5\nmd5  b452e1ca6faded7bab9c76dd61d9d983  redir-3.3.tar.xz\n# License files\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/redir/redir.mk",
    "content": "################################################################################\n#\n# redir\n#\n################################################################################\n\nREDIR_VERSION = 3.3\nREDIR_SOURCE = redir-$(REDIR_VERSION).tar.xz\nREDIR_SITE = https://github.com/troglobit/redir/releases/download/v$(REDIR_VERSION)\nREDIR_LICENSE = GPL-2.0+\nREDIR_LICENSE_FILES = COPYING\nREDIR_CONF_OPTS = \\\n\t--disable-compat \\\n\t--enable-shaper \\\n\t--enable-ftp\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/redis/0001-uclibc.patch",
    "content": "redis-001-uclibc.patch: This patch fixes redis so that it can be compiled\nagainst uclibc.  Patch originates from:\n\n  Support cross-compiling for uClibc targets\n  https://github.com/antirez/redis/pull/537\n  Mike Steinert, mike.steinert@gmail.com\n\nSigned-off-by: Daniel Price <daniel.price@gmail.com>\n[Martin: adapt to 3.0.3]\nSigned-off-by: Martin Bark <martin@barkynet.com>\n[Titouan: adapt to 5.0.4]\nSigned-off-by: Titouan Christophe <titouan.christophe@railnova.eu>\n[Fabrice: update for 6.0.9]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\n=========================================================================\ndiff -ur old/src/config.h new/src/config.h\n--- old/src/config.h\t2012-10-26 07:20:24.000000000 -0700\n+++ new/src/config.h\t2012-10-31 13:41:51.206309564 -0700\n@@ -62,7 +62,7 @@\n #endif\n \n /* Test for backtrace() */\n-#if defined(__APPLE__) || (defined(__linux__) && defined(__GLIBC__)) || \\\n+#if defined(__APPLE__) || (defined(__linux__) && defined(__GLIBC__) && !defined(__UCLIBC__)) || \\\n     defined(__FreeBSD__) || ((defined(__OpenBSD__) || defined(__NetBSD__)) && defined(USE_BACKTRACE))\\\n  || defined(__DragonFly__)\n #define HAVE_BACKTRACE 1\n"
  },
  {
    "path": "package/redis/0002-largefile-conditional-define.patch",
    "content": "Define _LARGEFILE_SOURCE and _FILE_OFFSET_BITS conditionally\n\nIn order to avoid ugly warnings at compile time, only define\n_LARGEFILE_SOURCE and _FILE_OFFSET_BITS if they have not already been\ndefined through the build command line.\n\nAvoids:\n\n  In file included from redis.h:33:0,\n                   from migrate.c:1:\n  fmacros.h:45:0: warning: \"_LARGEFILE_SOURCE\" redefined\n  <command-line>:0:0: note: this is the location of the previous definition\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: redis-2.6.11/src/fmacros.h\n===================================================================\n--- redis-2.6.11.orig/src/fmacros.h\t2013-03-25 22:09:15.000000000 +0100\n+++ redis-2.6.11/src/fmacros.h\t2013-03-25 22:09:40.000000000 +0100\n@@ -42,7 +42,12 @@\n #define _XOPEN_SOURCE\n #endif\n \n+#ifndef _LARGEFILE_SOURCE\n #define _LARGEFILE_SOURCE\n+#endif\n+\n+#ifndef _FILE_OFFSET_BITS\n #define _FILE_OFFSET_BITS 64\n+#endif\n \n #endif\n"
  },
  {
    "path": "package/redis/0003-redis.conf-adjust-defauts-for-buildroot.patch",
    "content": "From f79d1d1bf9e6f54b67e5482602084fbff7fd9cc9 Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Fri, 28 Oct 2016 12:50:34 -0300\nSubject: [PATCH] redis.conf: adjust defauts for buildroot\n\nBased on Martin Bark's patch hence archlinux package.\nWe just need to specify a proper db directory.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n---\n redis.conf | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/redis.conf b/redis.conf\nindex 22e00bc..3bb0430 100644\n--- a/redis.conf\n+++ b/redis.conf\n@@ -244,7 +244,7 @@ dbfilename dump.rdb\n # The Append Only File will also be created inside this directory.\n #\n # Note that you must specify a directory here, not a file name.\n-dir ./\n+dir /var/lib/redis/\n \n ################################# REPLICATION #################################\n \n-- \n2.7.3\n\n"
  },
  {
    "path": "package/redis/Config.in",
    "content": "config BR2_PACKAGE_REDIS\n\tbool \"redis\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # _Atomic keyword\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_setname_np()\n\thelp\n\t  Redis is an open source (BSD licensed), in-memory data\n\t  structure store, used as a database, cache and message\n\t  broker. It supports data structures such as strings,\n\t  hashes, lists, sets, sorted sets with range queries,\n\t  bitmaps, hyperloglogs, geospatial indexes with radius\n\t  queries and streams.\n\n\t  http://www.redis.io\n\ncomment \"redis needs a toolchain w/ gcc>=4.9, dynamic library, nptl\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/redis/S50redis",
    "content": "#!/bin/sh\n#\n# start redis\n#\n\nstart() {\n\tprintf \"Starting redis: \"\n\tumask 077\n\tstart-stop-daemon -S -q -c redis:redis -b \\\n\t\t--exec /usr/bin/redis-server -- /etc/redis.conf\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping redis: \"\n\t/usr/bin/redis-cli shutdown\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t\t;;\n\tstop)\n\t\tstop\n\t\t;;\n\trestart|reload)\n\t\trestart\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/redis/redis.hash",
    "content": "# From https://github.com/redis/redis-hashes/blob/master/README\nsha256  5b2b8b7a50111ef395bf1c1d5be11e6e167ac018125055daa8b5c2317ae131ab  redis-6.2.6.tar.gz\n\n# Locally calculated\nsha256  97f0a15b7bbae580d2609dad2e11f1956ae167be296ab60f4691ab9c30ee9828  COPYING\n"
  },
  {
    "path": "package/redis/redis.mk",
    "content": "################################################################################\n#\n# redis\n#\n################################################################################\n\nREDIS_VERSION = 6.2.6\nREDIS_SITE = http://download.redis.io/releases\nREDIS_LICENSE = BSD-3-Clause (core); MIT and BSD family licenses (Bundled components)\nREDIS_LICENSE_FILES = COPYING\nREDIS_CPE_ID_VENDOR = redislabs\nREDIS_SELINUX_MODULES = redis\n\ndefine REDIS_USERS\n\tredis -1 redis -1 * /var/lib/redis /bin/false - Redis Server\nendef\n\n# Uses __atomic_fetch_add_4. Adding -latomic to LDFLAGS does not work,\n# because LDFLAGS is used before the list of object files. We need to\n# add -latomic to FINAL_LIBS to provide -latomic at the correct place\n# in the linking command.\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\ndefine REDIS_FIX_MAKEFILE\n\t$(SED) 's/FINAL_LIBS=-lm/FINAL_LIBS=-lm -latomic/' $(@D)/src/Makefile\nendef\nREDIS_POST_PATCH_HOOKS = REDIS_FIX_MAKEFILE\nendif\n\n# Redis doesn't support DESTDIR (yet, see\n# https://github.com/antirez/redis/pull/609).  We set PREFIX\n# instead.\nREDIS_BUILDOPTS = $(TARGET_CONFIGURE_OPTS) \\\n\tPREFIX=$(TARGET_DIR)/usr MALLOC=libc\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nREDIS_DEPENDENCIES += systemd\nREDIS_BUILDOPTS += USE_SYSTEMD=yes\nelse\nREDIS_BUILDOPTS += USE_SYSTEMD=no\nendif\n\nifeq ($(BR2_PACKAGE_LIBOPENSSL),y)\nREDIS_DEPENDENCIES += libopenssl\nREDIS_BUILDOPTS += BUILD_TLS=yes\nelse\nREDIS_BUILDOPTS += BUILD_TLS=no\nendif\n\ndefine REDIS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(REDIS_BUILDOPTS) -C $(@D)\nendef\n\ndefine REDIS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(REDIS_BUILDOPTS) -C $(@D) \\\n\t\tLDCONFIG=true install\n\t$(INSTALL) -D -m 0644 $(@D)/redis.conf \\\n\t\t$(TARGET_DIR)/etc/redis.conf\nendef\n\ndefine REDIS_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/redis/S50redis \\\n\t\t$(TARGET_DIR)/etc/init.d/S50redis\nendef\n\ndefine REDIS_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/redis/redis.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/redis.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/redis/redis.service",
    "content": "[Unit]\nDescription=Redis data structure server\nDocumentation=https://redis.io/documentation\nAfter=network.target\n\n[Service]\nType=notify\nUser=redis\nGroup=redis\nExecStart=/usr/bin/redis-server --supervised systemd --daemonize no\nTimeoutStartSec=5\nTimeoutStopSec=5\nCapabilityBoundingSet=\nPrivateTmp=true\nPrivateDevices=true\nProtectSystem=full\nProtectHome=true\nNoNewPrivileges=true\nRuntimeDirectory=redis\nRuntimeDirectoryMode=755\nLimitNOFILE=10032\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/refpolicy/2.20210908/0001-policy-modules-services-samba.te-make-crack-optional.patch",
    "content": "From 7c58f2508efc115dea03e18e1fa611ebf81f6ee6 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 4 Aug 2021 11:12:01 +0200\nSubject: [PATCH] policy/modules/services/samba.te: make crack optional\n\nMake crack optional to avoid the following build failure:\n\n Compiling targeted policy.31\n env LD_LIBRARY_PATH=\"/tmp/instance-5/output-1/host/lib:/tmp/instance-5/output-1/host/usr/lib\" /tmp/instance-5/output-1/host/usr/bin/checkpolicy -c 31 -U deny -S -O -E policy.conf -o policy.31\n policy/modules/services/samba.te:399:ERROR 'type crack_db_t is not within scope' at token ';' on line 360232:\n \tallow smbd_t crack_db_t:dir { getattr search open };\n #line 399\n checkpolicy:  error(s) encountered while parsing configuration\n\nFixes:\n - http://autobuild.buildroot.org/results/ab7098948d1920e42fa587e07f0513f23ba7fc74\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/SELinuxProject/refpolicy/pull/407]\n---\n policy/modules/services/samba.te | 32 ++++++++++++++++++--------------\n 1 file changed, 18 insertions(+), 14 deletions(-)\n\ndiff --git a/policy/modules/services/samba.te b/policy/modules/services/samba.te\nindex 9d4665ae6..6c37625a9 100644\n--- a/policy/modules/services/samba.te\n+++ b/policy/modules/services/samba.te\n@@ -396,8 +396,6 @@ userdom_signal_all_users(smbd_t)\n userdom_home_filetrans_user_home_dir(smbd_t)\n userdom_user_home_dir_filetrans_user_home_content(smbd_t, { dir file lnk_file sock_file fifo_file })\n \n-usermanage_read_crack_db(smbd_t)\n-\n ifdef(`hide_broken_symptoms',`\n \tfiles_dontaudit_getattr_default_dirs(smbd_t)\n \tfiles_dontaudit_getattr_boot_dirs(smbd_t)\n@@ -413,18 +411,6 @@ tunable_policy(`samba_create_home_dirs',`\n \tuserdom_create_user_home_dirs(smbd_t)\n ')\n \n-tunable_policy(`samba_domain_controller',`\n-\tgen_require(`\n-\t\tclass passwd passwd;\n-\t')\n-\n-\tusermanage_domtrans_passwd(smbd_t)\n-\tusermanage_kill_passwd(smbd_t)\n-\tusermanage_domtrans_useradd(smbd_t)\n-\tusermanage_domtrans_groupadd(smbd_t)\n-\tallow smbd_t self:passwd passwd;\n-')\n-\n tunable_policy(`samba_enable_home_dirs',`\n \tuserdom_manage_user_home_content_dirs(smbd_t)\n \tuserdom_manage_user_home_content_files(smbd_t)\n@@ -505,6 +491,24 @@ optional_policy(`\n \tseutil_sigchld_newrole(smbd_t)\n ')\n \n+optional_policy(`\n+\tusermanage_read_crack_db(smbd_t)\n+')\n+\n+optional_policy(`\n+\ttunable_policy(`samba_domain_controller',`\n+\t\tgen_require(`\n+\t\t\tclass passwd passwd;\n+\t\t')\n+\n+\t\tusermanage_domtrans_passwd(smbd_t)\n+\t\tusermanage_kill_passwd(smbd_t)\n+\t\tusermanage_domtrans_useradd(smbd_t)\n+\t\tusermanage_domtrans_groupadd(smbd_t)\n+\t\tallow smbd_t self:passwd passwd;\n+\t')\n+')\n+\n ########################################\n #\n # Nmbd Local policy\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/refpolicy/2.20210908/0002-policy-modules-services-wireguard.te-make-iptables-o.patch",
    "content": "From 67394d078c2e1438293b25d08cf408b0b0d55755 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 22 Sep 2021 23:55:59 +0200\nSubject: [PATCH] policy/modules/services/wireguard.te: make iptables optional\n\nMake iptables optional to avoid the following build failure raised since\nversion 2.20210908 and\nhttps://github.com/SELinuxProject/refpolicy/commit/7f1a7b1cacd5d211077ce62fbb4e91890e65c820:\n\n Compiling targeted policy.33\n env LD_LIBRARY_PATH=\"/tmp/instance-0/output-1/host/lib:/tmp/instance-0/output-1/host/usr/lib\" /tmp/instance-0/output-1/host/usr/bin/checkpolicy -c 33 -U deny -S -O -E policy.conf -o policy.33\n policy/modules/services/wireguard.te:66:ERROR 'type iptables_exec_t is not within scope' at token ';' on line 591892:\n #line 66\n\tallow wireguard_t iptables_exec_t:file { getattr open map read execute ioctl };\n checkpolicy:  error(s) encountered while parsing configuration\n make[1]: *** [Rules.monolithic:79: policy.33] Error 1\n\nFixes:\n - http://autobuild.buildroot.org/results/a4223accc6adb70b06fd4e74ca4f28484446b6fa\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/SELinuxProject/refpolicy/pull/408]\n---\n policy/modules/services/wireguard.te | 10 ++++++----\n 1 file changed, 6 insertions(+), 4 deletions(-)\n\ndiff --git a/policy/modules/services/wireguard.te b/policy/modules/services/wireguard.te\nindex 7241f65e6..33fd3c55d 100644\n--- a/policy/modules/services/wireguard.te\n+++ b/policy/modules/services/wireguard.te\n@@ -61,10 +61,6 @@ corecmd_exec_shell(wireguard_t)\n \n domain_use_interactive_fds(wireguard_t)\n \n-# wg-quick can be configured to run iptables and other networking\n-# config tools when bringing up/down the wg interfaces\n-iptables_domtrans(wireguard_t)\n-\n # wg-quick tries to read /proc/filesystem when running \"stat\" and \"mv\" commands\n kernel_dontaudit_read_system_state(wireguard_t)\n kernel_dontaudit_search_kernel_sysctl(wireguard_t)\n@@ -75,3 +71,9 @@ miscfiles_read_localization(wireguard_t)\n sysnet_run_ifconfig(wireguard_t, wireguard_roles)\n \n userdom_use_user_terminals(wireguard_t)\n+\n+# wg-quick can be configured to run iptables and other networking\n+# config tools when bringing up/down the wg interfaces\n+optional_policy(`\n+\tiptables_domtrans(wireguard_t)\n+')\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/refpolicy/Config.in",
    "content": "config BR2_PACKAGE_REFPOLICY\n\tbool \"refpolicy\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libsepol\n\t# Even though libsepol is not necessary for building, we get\n\t# the policy version from libsepol, so we select it, and treat\n\t# it like a runtime dependency.\n\tselect BR2_PACKAGE_LIBSEPOL\n\thelp\n\t  The SELinux Reference Policy project (refpolicy) is a\n\t  complete SELinux policy that can be used as the system\n\t  policy for a variety of systems and used as the basis for\n\t  creating other policies. Reference Policy was originally\n\t  based on the NSA example policy, but aims to accomplish many\n\t  additional goals.\n\n\t  The current refpolicy does not fully support Buildroot and\n\t  needs modifications to work with the default system file\n\t  layout. These changes should be added as patches to the\n\t  refpolicy that modify a single SELinux policy.\n\n\t  The refpolicy works for the most part in permissive\n\t  mode. Only the basic set of utilities are enabled in the\n\t  example policy config and some of the pathing in the\n\t  policies is not correct.  Individual policies would need to\n\t  be tweaked to get everything functioning properly.\n\n\t  https://github.com/TresysTechnology/refpolicy\n\nif BR2_PACKAGE_REFPOLICY\n\nchoice\n\tprompt \"Refpolicy version\"\n\tdefault BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION\n\nconfig BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION\n\tbool \"Upstream version\"\n\thelp\n\t  Use the refpolicy as provided by Buildroot.\n\nconfig BR2_PACKAGE_REFPOLICY_CUSTOM_GIT\n\tbool \"Custom git repository\"\n\thelp\n\t  Allows to get the refpolicy from a custom git repository.\n\n\t  The custom refpolicy must define the full policy explicitly,\n\t  and must be a fork of the original refpolicy, to have the\n\t  same build system.  When this is selected, only the custom\n\t  policy definition are taken into account and all the modules\n\t  of the policy are built into the binary policy.\n\nendchoice\n\nif BR2_PACKAGE_REFPOLICY_CUSTOM_GIT\n\nconfig BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL\n\tstring \"URL of custom repository\"\n\nconfig BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION\n\tstring \"Custom repository version\"\n\thelp\n\t  Revision to use in the typical format used by Git.\n\t  E.g. a sha id, tag, branch...\n\nendif\n\nchoice\n\tprompt \"SELinux default state\"\n\tdefault BR2_PACKAGE_REFPOLICY_POLICY_STATE_PERMISSIVE\n\nconfig BR2_PACKAGE_REFPOLICY_POLICY_STATE_ENFORCING\n\tbool \"Enforcing\"\n\thelp\n\t  SELinux security policy is enforced\n\nconfig BR2_PACKAGE_REFPOLICY_POLICY_STATE_PERMISSIVE\n\tbool \"Permissive\"\n\thelp\n\t  SELinux prints warnings instead of enforcing\n\nconfig BR2_PACKAGE_REFPOLICY_POLICY_STATE_DISABLED\n\tbool \"Disabled\"\n\thelp\n\t  No SELinux policy is loaded\nendchoice\n\nconfig BR2_PACKAGE_REFPOLICY_POLICY_STATE\n\tstring\n\tdefault \"permissive\" if BR2_PACKAGE_REFPOLICY_POLICY_STATE_PERMISSIVE\n\tdefault \"enforcing\" if BR2_PACKAGE_REFPOLICY_POLICY_STATE_ENFORCING\n\tdefault \"disabled\" if BR2_PACKAGE_REFPOLICY_POLICY_STATE_DISABLED\n\nif BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION\n\nconfig BR2_REFPOLICY_EXTRA_MODULES_DIRS\n\tstring \"Extra modules directories\"\n\thelp\n\t  Specify a space-separated list of directories containing\n\t  SELinux modules that will be built into the SELinux\n\t  policy. The modules will be automatically enabled in the\n\t  policy.\n\n\t  Each of those directories must contain the SELinux policy\n\t  .fc, .if and .te files directly at the top-level, with no\n\t  sub-directories. Also, you cannot have several modules with\n\t  the same name in different directories.\n\nconfig BR2_REFPOLICY_EXTRA_MODULES\n\tstring \"Extra modules to enable\"\n\thelp\n\t  List of extra SELinux modules to enable in the refpolicy.\n\nendif\n\nendif\n\ncomment \"refpolicy needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/refpolicy/config",
    "content": "# This file controls the state of SELinux on the system.\n# SELINUX= can take one of these three values:\n#     enforcing - SELinux security policy is enforced.\n#     permissive - SELinux prints warnings instead of enforcing.\n#     disabled - No SELinux policy is loaded.\nSELINUX=disabled\n\nSELINUXTYPE=targeted\n"
  },
  {
    "path": "package/refpolicy/refpolicy.hash",
    "content": "# From https://github.com/SELinuxProject/refpolicy/releases\nsha256  4d3140d9fbb91322f5de36d73959464ce1d8946dcd149e36fcaf60e92444e902  refpolicy-2.20210908.tar.bz2\n\n# Locally computed\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  COPYING\n"
  },
  {
    "path": "package/refpolicy/refpolicy.mk",
    "content": "################################################################################\n#\n# refpolicy\n#\n################################################################################\n\nREFPOLICY_LICENSE = GPL-2.0\nREFPOLICY_LICENSE_FILES = COPYING\nREFPOLICY_CPE_ID_VENDOR = selinuxproject\nREFPOLICY_INSTALL_STAGING = YES\nREFPOLICY_DEPENDENCIES = \\\n\thost-m4 \\\n\thost-checkpolicy \\\n\thost-policycoreutils \\\n\thost-python3 \\\n\thost-setools \\\n\thost-gawk \\\n\thost-libxml2\n\nifeq ($(BR2_PACKAGE_REFPOLICY_CUSTOM_GIT),y)\nREFPOLICY_VERSION = $(call qstrip,$(BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION))\nREFPOLICY_SITE = $(call qstrip,$(BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL))\nREFPOLICY_SITE_METHOD = git\nBR_NO_CHECK_HASH_FOR += $(REFPOLICY_SOURCE)\nelse\nREFPOLICY_VERSION = 2.20210908\nREFPOLICY_SOURCE = refpolicy-$(REFPOLICY_VERSION).tar.bz2\nREFPOLICY_SITE = https://github.com/SELinuxProject/refpolicy/releases/download/RELEASE_$(subst .,_,$(REFPOLICY_VERSION))\nendif\n\n# Cannot use multiple threads to build the reference policy\nREFPOLICY_MAKE = \\\n\tPYTHON=$(HOST_DIR)/usr/bin/python3 \\\n\tXMLLINT=$(LIBXML2_HOST_BINARY) \\\n\tTEST_TOOLCHAIN=$(HOST_DIR) \\\n\t$(TARGET_MAKE_ENV) \\\n\t$(MAKE1)\n\nREFPOLICY_POLICY_VERSION = $(BR2_PACKAGE_LIBSEPOL_POLICY_VERSION)\nREFPOLICY_POLICY_STATE = \\\n\t$(call qstrip,$(BR2_PACKAGE_REFPOLICY_POLICY_STATE))\n\nifeq ($(BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION),y)\n\n# Allow to provide out-of-tree SELinux modules in addition to the ones\n# in the refpolicy.\nREFPOLICY_EXTRA_MODULES_DIRS = \\\n\t$(strip \\\n\t\t$(call qstrip,$(BR2_REFPOLICY_EXTRA_MODULES_DIRS)) \\\n\t\t$(PACKAGES_SELINUX_EXTRA_MODULES_DIRS))\n$(foreach dir,$(REFPOLICY_EXTRA_MODULES_DIRS),\\\n\t$(if $(wildcard $(dir)),,\\\n\t\t$(error BR2_REFPOLICY_EXTRA_MODULES_DIRS contains nonexistent directory $(dir))))\n\nREFPOLICY_MODULES = \\\n\tapplication \\\n\tauthlogin \\\n\tgetty \\\n\tinit \\\n\tlibraries \\\n\tlocallogin \\\n\tlogging \\\n\tmiscfiles \\\n\tmodutils \\\n\tmount \\\n\tselinuxutil \\\n\tstorage \\\n\tsysadm \\\n\tsysnetwork \\\n\tunconfined \\\n\tuserdomain \\\n\t$(PACKAGES_SELINUX_MODULES) \\\n\t$(call qstrip,$(BR2_REFPOLICY_EXTRA_MODULES)) \\\n\t$(foreach d,$(REFPOLICY_EXTRA_MODULES_DIRS),\\\n\t\t$(basename $(notdir $(wildcard $(d)/*.te))))\n\ndefine REFPOLICY_COPY_EXTRA_MODULES\n\tmkdir -p $(@D)/policy/modules/buildroot\n\trsync -au $(addsuffix /*,$(REFPOLICY_EXTRA_MODULES_DIRS)) \\\n\t\t$(@D)/policy/modules/buildroot/\n\tif [ ! -f $(@D)/policy/modules/buildroot/metadata.xml ]; then \\\n\t\techo \"<summary>Buildroot extra modules</summary>\" > \\\n\t\t\t$(@D)/policy/modules/buildroot/metadata.xml; \\\n\tfi\nendef\n\n# In the context of a monolithic policy enabling a piece of the policy as\n# 'base' or 'module' is equivalent, so we enable them as 'base'.\ndefine REFPOLICY_CONFIGURE_MODULES\n\t$(SED) \"s/ = module/ = no/g\" $(@D)/policy/modules.conf\n\t$(foreach m,$(sort $(REFPOLICY_MODULES)),\n\t\t$(SED) \"/^$(m) =/c\\$(m) = base\" $(@D)/policy/modules.conf\n\t)\nendef\n\nendif # BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION = y\n\nifeq ($(BR2_INIT_SYSTEMD),y)\ndefine REFPOLICY_CONFIGURE_SYSTEMD\n\t$(SED) \"/SYSTEMD/c\\SYSTEMD = y\" $(@D)/build.conf\nendef\nendif\n\ndefine REFPOLICY_CONFIGURE_CMDS\n\t$(SED) \"/OUTPUT_POLICY/c\\OUTPUT_POLICY = $(REFPOLICY_POLICY_VERSION)\" \\\n\t\t$(@D)/build.conf\n\t$(SED) \"/MONOLITHIC/c\\MONOLITHIC = y\" $(@D)/build.conf\n\t$(SED) \"/NAME/c\\NAME = targeted\" $(@D)/build.conf\n\t$(REFPOLICY_CONFIGURE_SYSTEMD)\n\t$(if $(REFPOLICY_EXTRA_MODULES_DIRS), \\\n\t\t$(REFPOLICY_COPY_EXTRA_MODULES)\n\t)\n\t$(REFPOLICY_MAKE) -C $(@D) bare conf\n\t$(REFPOLICY_CONFIGURE_MODULES)\nendef\n\ndefine REFPOLICY_BUILD_CMDS\n\t$(REFPOLICY_MAKE) -C $(@D) policy\nendef\n\ndefine REFPOLICY_INSTALL_STAGING_CMDS\n\t$(REFPOLICY_MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) \\\n\t\tinstall-src install-headers\nendef\n\ndefine REFPOLICY_INSTALL_TARGET_CMDS\n\t$(REFPOLICY_MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\n\t$(INSTALL) -m 0755 -D package/refpolicy/config \\\n\t\t$(TARGET_DIR)/etc/selinux/config\n\t$(SED) \"/^SELINUX=/c\\SELINUX=$(REFPOLICY_POLICY_STATE)\" \\\n\t\t$(TARGET_DIR)/etc/selinux/config\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/resiprocate/Config.in",
    "content": "comment \"resiprocate needs a toolchain w/ C++, threads, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_RESIPROCATE\n\tbool \"resiprocate\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_C_ARES\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  reSIProcate is a framework that aims to fully implement the\n\t  SIP protocol in first class C++. It is intended for use in\n\t  other applications, such as the repro SIP proxy.\n\n\t  By default this package provides the core libraries: librutil\n\t  (utilities), libresip (SIP stack/RFC compliant message\n\t  parsing) and libdum (SIP Dialog Usage Manager, a state\n\t  machine for SIP dialogs).\n\n\t  https://www.resiprocate.org/\n\nif BR2_PACKAGE_RESIPROCATE\n\nconfig BR2_PACKAGE_RESIPROCATE_DTLS_SUPPORT\n\tbool \"DTLS support\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Enable DTLS support (requires OpenSSL)\n\nconfig BR2_PACKAGE_RESIPROCATE_REND\n\tbool \"resiprocate-rend\"\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_POPT\n\thelp\n\t  Rend is tool that is was created specifically to load test\n\t  gtSIP based presence servers.\n\nconfig BR2_PACKAGE_RESIPROCATE_APPS\n\tbool \"resiprocate-apps\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  Build apps clicktocall and sipdial\n\nendif # BR2_PACKAGE_RESIPROCATE\n"
  },
  {
    "path": "package/resiprocate/resiprocate.hash",
    "content": "# http://list.resiprocate.org/pipermail/resiprocate-announce/2020-May/000000.html\nsha256  046826503d3c8682ae0e42101b28f903c5f988235f1ff4a98dbfb9066d0d3d49  resiprocate-1.12.0.tar.gz\n# Locally Computed\nsha256  16b0fd1938a10fcd145904cc2dad74500fef9d27fc15b44cf8e8f92011f94d35  COPYING\n"
  },
  {
    "path": "package/resiprocate/resiprocate.mk",
    "content": "################################################################################\n#\n# resiprocate\n#\n################################################################################\n\nRESIPROCATE_VERSION = 1.12.0\nRESIPROCATE_SITE = https://www.resiprocate.org/files/pub/reSIProcate/releases\n# For complete details see https://www.resiprocate.org/License\nRESIPROCATE_LICENSE = VSL-1.0, BSD-3-Clause\nRESIPROCATE_LICENSE_FILES = COPYING\nRESIPROCATE_CPE_ID_VENDOR = resiprocate\nRESIPROCATE_INSTALL_STAGING = YES\n\n# Utilize c-ares from buildroot instead built in ARES library\n# NOTE: resiprocate doesn't support --without-<feature> syntax as it will try\n#       to build with package if specified\nRESIPROCATE_DEPENDENCIES = c-ares\nRESIPROCATE_CONF_OPTS = -with-c-ares \\\n\t--with-sysroot=\"$(STAGING_DIR)\"\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nRESIPROCATE_DEPENDENCIES += openssl host-pkgconf\nRESIPROCATE_CONF_OPTS += --with-ssl\n# Configure.ac does not include '-lz' when statically linking against openssl\nRESIPROCATE_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nendif\n\nifeq ($(BR2_PACKAGE_POPT),y)\nRESIPROCATE_CONF_OPTS += --with-popt\nRESIPROCATE_DEPENDENCIES += popt\nendif\n\nifeq ($(BR2_PACKAGE_RESIPROCATE_DTLS_SUPPORT),y)\nRESIPROCATE_CONF_OPTS += --with-dtls\nendif\n\nifeq ($(BR2_PACKAGE_RESIPROCATE_REND),y)\nRESIPROCATE_CONF_OPTS += --with-rend\nRESIPROCATE_DEPENDENCIES += boost\nendif\n\nifeq ($(BR2_PACKAGE_RESIPROCATE_APPS),y)\nRESIPROCATE_CONF_OPTS += --with-apps\nRESIPROCATE_DEPENDENCIES += pcre\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/restclient-cpp/Config.in",
    "content": "config BR2_PACKAGE_RESTCLIENT_CPP\n\tbool \"restclient-cpp\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  restclient-cpp is a C++ client library for\n\t  making HTTP/REST requests\n\n\t  http://code.mrtazz.com/restclient-cpp/\n\ncomment \"restclient-cpp needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/restclient-cpp/restclient-cpp.hash",
    "content": "# Computed locally\nsha256  d62ba618f9a938652fd53b483289e8662a99451839e59058c8beb286dfbc65ec  restclient-cpp-0.5.2.tar.gz\nsha256  1c2f79e825a39eb61d8919044776627f4d079ff38975410a3bde340154fc94a4  LICENSE\n"
  },
  {
    "path": "package/restclient-cpp/restclient-cpp.mk",
    "content": "################################################################################\n#\n# restclient-cpp\n#\n################################################################################\n\nRESTCLIENT_CPP_VERSION = 0.5.2\nRESTCLIENT_CPP_SITE = $(call github,mrtazz,restclient-cpp,$(RESTCLIENT_CPP_VERSION))\nRESTCLIENT_CPP_LICENSE = MIT\nRESTCLIENT_CPP_LICENSE_FILES = LICENSE\nRESTCLIENT_CPP_INSTALL_STAGING = YES\n\n# Source from github, no configure script provided\nRESTCLIENT_CPP_AUTORECONF = YES\n\nRESTCLIENT_CPP_DEPENDENCIES = libcurl\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/restorecond/Config.in",
    "content": "config BR2_PACKAGE_RESTORECOND\n\tbool \"restorecond\"\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on !BR2_STATIC_LIBS # libselinux\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_DBUS_GLIB\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBSELINUX\n\tselect BR2_PACKAGE_LIBSEPOL\n\thelp\n\t  restorecond is a daemon that watches for file creation and\n\t  then sets the default SELinux file context for that file.\n\n\t  https://github.com/SELinuxProject/selinux/wiki/Releases\n\ncomment \"restorecond needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/restorecond/S02restorecond",
    "content": "#!/bin/sh\n\nDAEMON=restorecond\nPIDFILE=/var/run/$DAEMON.pid\n\nRESTORECOND_ARGS=\"\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart()\n{\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\tstart-stop-daemon -b -m -S -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \\\n\t\t-- $RESTORECOND_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop()\n{\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p $PIDFILE -R TERM/30/KILL/5 -n $DAEMON\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart()\n{\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\trestart;;\n\t*)\n\t\techo $\"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/restorecond/restorecond.hash",
    "content": "# https://github.com/SELinuxProject/selinux/wiki/Releases\nsha256 471c17e64aa6d7226e861d4d0125d15fdf9b38892c542be32bd83d999e5e75f5 restorecond-3.2.tar.gz\n\n# Hash for license file\nsha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING\n"
  },
  {
    "path": "package/restorecond/restorecond.mk",
    "content": "################################################################################\n#\n# restorecond\n#\n################################################################################\n\nRESTORECOND_VERSION = 3.2\nRESTORECOND_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(RESTORECOND_VERSION)\nRESTORECOND_LICENSE = GPL-2.0\nRESTORECOND_LICENSE_FILES = COPYING\n\nRESTORECOND_DEPENDENCIES = libglib2 libsepol libselinux dbus-glib\n\n# Undefining _FILE_OFFSET_BITS here because of a \"bug\" with glibc fts.h\n# large file support.\n# See https://bugzilla.redhat.com/show_bug.cgi?id=574992 for more information\nRESTORECOND_MAKE_OPTS += \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -U_FILE_OFFSET_BITS\" \\\n\tCPPFLAGS=\"$(TARGET_CPPFLAGS) -U_FILE_OFFSET_BITS\" \\\n\tARCH=\"$(BR2_ARCH)\"\n\n# We need to pass DESTDIR at build time because it's used by\n# restorecond build system to find headers and libraries.\ndefine RESTORECOND_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(RESTORECOND_MAKE_OPTS) DESTDIR=$(STAGING_DIR) all\nendef\n\ndefine RESTORECOND_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/restorecond/S02restorecond \\\n\t\t$(TARGET_DIR)/etc/init.d/S02restorecond\nendef\n\ndefine RESTORECOND_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -m 0644 -D $(@D)/restorecond.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/restorecond.service\n\n\tmkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants\n\tln -fs ../../../../usr/lib/systemd/system/restorecond.service \\\n\t\t$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/restorecond.service\n\n\t$(INSTALL) -m 0600 -D $(@D)/org.selinux.Restorecond.service \\\n\t\t$(TARGET_DIR)/etc/systemd/system/org.selinux.Restorecond.service\nendef\n\ndefine RESTORECOND_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/restorecond.conf $(TARGET_DIR)/etc/selinux/restorecond.conf\n\t$(INSTALL) -m 0644 -D $(@D)/restorecond_user.conf $(TARGET_DIR)/etc/selinux/restorecond_user.conf\n\t$(INSTALL) -m 0755 -D $(@D)/restorecond $(TARGET_DIR)/usr/sbin/restorecond\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rhash/Config.in",
    "content": "config BR2_PACKAGE_RHASH\n\tbool \"rhash\"\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  LibRHash is a professional, portable, thread-safe C library\n\t  for computing a wide variety of hash sums, such as CRC32,\n\t  MD4, MD5, SHA1, SHA256, SHA512, SHA3, AICH, ED2K, Tiger,\n\t  DC++ TTH, BitTorrent BTIH, GOST R 34.11-94, RIPEMD-160,\n\t  HAS-160, EDON-R, Whirlpool and Snefru.\n\n\t  https://github.com/rhash/RHash\n\nif BR2_PACKAGE_RHASH\n\nconfig BR2_PACKAGE_RHASH_BIN\n\tbool \"rhash binary\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Install rhash console utility\n\ncomment \"rhash binary needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nendif\n"
  },
  {
    "path": "package/rhash/rhash.hash",
    "content": "# From https://sourceforge.net/projects/rhash/files/rhash/1.4.2/\nsha1  fdb0b0c16f3ba3eba734b3adf9f2fc4c427ff987  rhash-1.4.2-src.tar.gz\n# Locally calculated\nsha256  600d00f5f91ef04194d50903d3c79412099328c42f28ff43a0bdb777b00bec62  rhash-1.4.2-src.tar.gz\nsha256  953e55838353335148c90b5a38a4894292680b1d4c37228ffddddbf18ce54bf5  COPYING\n"
  },
  {
    "path": "package/rhash/rhash.mk",
    "content": "################################################################################\n#\n# rhash\n#\n################################################################################\n\nRHASH_VERSION = 1.4.2\nRHASH_SOURCE = rhash-$(RHASH_VERSION)-src.tar.gz\nRHASH_SITE = https://sourceforge.net/projects/rhash/files/rhash/$(RHASH_VERSION)\nRHASH_LICENSE = 0BSD\nRHASH_LICENSE_FILES = COPYING\nRHASH_CPE_ID_VENDOR = rhash_project\nRHASH_INSTALL_STAGING = YES\nRHASH_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES)\nRHASH_ADDLDFLAGS = $(TARGET_NLS_LIBS)\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nRHASH_CONF_OPTS += --disable-gettext\nelse\nRHASH_CONF_OPTS += --enable-gettext\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yx)\nRHASH_CONF_OPTS += --enable-openssl\nRHASH_DEPENDENCIES += openssl\nelse\nRHASH_CONF_OPTS += --disable-openssl\nendif\n\ndefine RHASH_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure \\\n\t\t--prefix=/usr \\\n\t\t--cc=$(TARGET_CC) \\\n\t\t--target=$(GNU_TARGET_NAME) \\\n\t\t$(RHASH_CONF_OPTS) \\\n\t)\nendef\n\nifeq ($(BR2_SHARED_LIBS),y)\nRHASH_BUILD_TARGETS = lib-shared build-shared\nRHASH_INSTALL_TARGETS = install-lib-shared install-so-link\nelse ifeq ($(BR2_STATIC_LIBS),y)\nRHASH_BUILD_TARGETS = lib-static\nRHASH_INSTALL_TARGETS = install-lib-static\nelse\nRHASH_BUILD_TARGETS = lib-static lib-shared build-shared\nRHASH_INSTALL_TARGETS = install-lib-static install-lib-shared install-so-link\nendif\n\ndefine RHASH_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\t$(RHASH_MAKE_OPTS) $(RHASH_BUILD_TARGETS)\nendef\n\ndefine RHASH_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/librhash \\\n\t\tDESTDIR=\"$(STAGING_DIR)\" $(RHASH_MAKE_OPTS) $(RHASH_INSTALL_TARGETS) \\\n\t\tinstall-lib-headers\nendef\n\nifeq ($(BR2_PACKAGE_RHASH_BIN),y)\ndefine RHASH_INSTALL_TARGET_RHASH_BIN\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tDESTDIR=\"$(TARGET_DIR)\" $(RHASH_MAKE_OPTS) build-install-binary\nendef\nendif\n\ndefine RHASH_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/librhash \\\n\t\tDESTDIR=\"$(TARGET_DIR)\" $(RHASH_MAKE_OPTS) $(RHASH_INSTALL_TARGETS)\n\t$(RHASH_INSTALL_TARGET_RHASH_BIN)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/riemann-c-client/Config.in",
    "content": "config BR2_PACKAGE_RIEMANN_C_CLIENT\n\tbool \"riemann-c-client\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # protobuf-c\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # protobuf-c\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\" # protobuf-c\n\tselect BR2_PACKAGE_PROTOBUF_C\n\thelp\n\t  Riemann-c-client is a C client library for the Riemann\n\t  monitoring system, providing a convenient and simple API,\n\t  high test coverage and a copyleft license, along with API\n\t  and ABI stability.\n\n\t  https://github.com/algernon/riemann-c-client\n\ncomment \"riemann-c-client needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n"
  },
  {
    "path": "package/riemann-c-client/riemann-c-client.hash",
    "content": "# Locally calculated\nsha256 334874f0b9a507a8abbc7138df719cba4f28f12c02c39d5e55090b8edb86f9d2 riemann-c-client-1.10.4.tar.gz\nsha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE\n"
  },
  {
    "path": "package/riemann-c-client/riemann-c-client.mk",
    "content": "################################################################################\n#\n# riemann-c-client\n#\n################################################################################\n\nRIEMANN_C_CLIENT_VERSION = 1.10.4\nRIEMANN_C_CLIENT_SITE = \\\n\t$(call github,algernon,riemann-c-client,riemann-c-client-$(RIEMANN_C_CLIENT_VERSION))\nRIEMANN_C_CLIENT_LICENSE = LGPL-3.0+\nRIEMANN_C_CLIENT_LICENSE_FILES = LICENSE\nRIEMANN_C_CLIENT_INSTALL_STAGING = YES\nRIEMANN_C_CLIENT_MAKE = $(MAKE1)\n# From git\nRIEMANN_C_CLIENT_AUTORECONF = YES\nRIEMANN_C_CLIENT_DEPENDENCIES = \\\n\thost-pkgconf protobuf-c \\\n\t$(if $(BR2_PACKAGE_GNUTLS),gnutls) \\\n\t$(if $(BR2_PACKAGE_JSON_C),json-c)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rings/Config.in",
    "content": "config BR2_PACKAGE_RINGS\n\tbool \"rings\"\n\thelp\n\t  Provides a way to create new Lua states from within Lua.\n\n\t  http://github.com/keplerproject/rings\n"
  },
  {
    "path": "package/rings/rings.hash",
    "content": "# computed by luarocks/buildroot\nsha256 627ac55d4a420fab766e6870fcd82cb39da12fb4ec8efddc7220b188a4ad4bc3  rings-1.3.0-1.src.rock\nsha256 f582a0c43737391070827ef273df0145b594b095ad2f49595701368b729e024f  rings-v_1_3_0/doc/us/license.html\n"
  },
  {
    "path": "package/rings/rings.mk",
    "content": "################################################################################\n#\n# rings\n#\n################################################################################\n\nRINGS_VERSION_MAJOR = 1.3.0\nRINGS_VERSION = $(RINGS_VERSION_MAJOR)-1\nRINGS_SUBDIR = rings-v_$(subst .,_,$(RINGS_VERSION_MAJOR))\nRINGS_LICENSE = MIT\nRINGS_LICENSE_FILES = $(RINGS_SUBDIR)/doc/us/license.html\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/ripgrep/0001-puts-jemalloc-allocator-behind-a-cargo-feature-flag.patch",
    "content": "From 68c2a4d7a5d9b46f65121958fdb12d5270bfd1b6 Mon Sep 17 00:00:00 2001\nFrom: Jonathan Stites <mail@jonstites.com>\nDate: Wed, 6 May 2020 12:55:35 +0000\nSubject: [PATCH] puts jemalloc allocator behind a cargo feature flag\n\nRetrieved from: https://github.com/BurntSushi/ripgrep/pull/1569\n\nMoves jemalloc behind a feature for musl builds, where it is not\nsupported by the upstream project, so ripgrep will fail to build.\n\nSigned-off-by: Sam Voss <sam.voss@gmail.com>\n---\n .github/workflows/ci.yml      | 6 ++++++\n .github/workflows/release.yml | 8 +++++++-\n Cargo.toml                    | 8 +++++++-\n README.md                     | 9 +++++++++\n crates/core/main.rs           | 8 ++++++--\n 5 files changed, 35 insertions(+), 4 deletions(-)\n\ndiff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml\nindex ab154ec..aa567d9 100644\n--- a/.github/workflows/ci.yml\n+++ b/.github/workflows/ci.yml\n@@ -149,6 +149,12 @@ jobs:\n       if: matrix.target != ''\n       run: ${{ env.CARGO }} test --verbose --workspace ${{ env.TARGET_FLAGS }}\n \n+    - name: Run tests with jemalloc (Musl)\n+      # We only use the jemalloc allocator when building with musl.\n+      # The system allocator is good enough for other platforms.\n+      if: matrix.os == 'nightly-musl'\n+      run: ${{ env.CARGO }} test --verbose --all --features jemalloc ${{ env.TARGET_FLAGS }}\n+\n     - name: Test for existence of build artifacts (Windows)\n       if: matrix.os == 'windows-2019'\n       shell: bash\ndiff --git a/.github/workflows/release.yml b/.github/workflows/release.yml\nindex 7cfb6a4..ad6b82d 100644\n--- a/.github/workflows/release.yml\n+++ b/.github/workflows/release.yml\n@@ -133,7 +133,13 @@ jobs:\n         echo \"target flag is: ${{ env.TARGET_FLAGS }}\"\n         echo \"target dir is: ${{ env.TARGET_DIR }}\"\n \n-    - name: Build release binary\n+    - name: Build release binary (linux)\n+      if: matrix.build == 'linux'\n+      # Use jemalloc allocator for much better performance over the musl default allocator\n+      run: ${{ env.CARGO }} build --verbose --release --features \"pcre2 jemalloc\" ${{ env.TARGET_FLAGS }}\n+\n+    - name: Build release binary (non-linux)\n+      if: matrix.build != 'linux'\n       run: ${{ env.CARGO }} build --verbose --release --features pcre2 ${{ env.TARGET_FLAGS }}\n \n     - name: Strip release binary (linux and macos)\ndiff --git a/Cargo.toml b/Cargo.toml\nindex fb78fcb..0d34b1e 100644\n--- a/Cargo.toml\n+++ b/Cargo.toml\n@@ -56,8 +56,9 @@ version = \"2.33.0\"\n default-features = false\n features = [\"suggestions\"]\n \n-[target.'cfg(all(target_env = \"musl\", target_pointer_width = \"64\"))'.dependencies.jemallocator]\n+[dependencies.jemallocator]\n version = \"0.3.0\"\n+optional = true\n \n [build-dependencies]\n lazy_static = \"1.1.0\"\n@@ -75,6 +76,11 @@ walkdir = \"2\"\n [features]\n simd-accel = [\"grep/simd-accel\"]\n pcre2 = [\"grep/pcre2\"]\n+# The jemalloc allocator is used for improved\n+# performance on x86 musl builds.\n+# Cargo does not yet support platform-specific features\n+# https://github.com/rust-lang/cargo/issues/1197\n+jemalloc = [\"jemallocator\"]\n \n [profile.release]\n debug = 1\ndiff --git a/README.md b/README.md\nindex 46938bc..9917b29 100644\n--- a/README.md\n+++ b/README.md\n@@ -406,6 +406,15 @@ build a static executable with MUSL and with PCRE2, then you will need to have\n `musl-gcc` installed, which might be in a separate package from the actual\n MUSL library, depending on your Linux distribution.\n \n+When building with the MUSL target on Linux, it is recommended to use the\n+jemalloc allocator for performance:\n+\n+```\n+$ rustup target add x86_64-unknown-linux-musl\n+$ cargo build --release --target x86_64-unknown-linux-musl --features jemalloc\n+```\n+\n+\n \n ### Running tests\n \ndiff --git a/crates/core/main.rs b/crates/core/main.rs\nindex 47385de..c9dae5a 100644\n--- a/crates/core/main.rs\n+++ b/crates/core/main.rs\n@@ -31,7 +31,7 @@ mod subject;\n // have the fastest version of everything. Its goal is to be small and amenable\n // to static compilation.) Even though ripgrep isn't particularly allocation\n // heavy, musl's allocator appears to slow down ripgrep quite a bit. Therefore,\n-// when building with musl, we use jemalloc.\n+// we expose a feature for using jemalloc when building with musl.\n //\n // We don't unconditionally use jemalloc because it can be nice to use the\n // system's default allocator by default. Moreover, jemalloc seems to increase\n@@ -39,7 +39,11 @@ mod subject;\n //\n // Moreover, we only do this on 64-bit systems since jemalloc doesn't support\n // i686.\n-#[cfg(all(target_env = \"musl\", target_pointer_width = \"64\"))]\n+#[cfg(all(\n+    target_env = \"musl\",\n+    target_pointer_width = \"64\",\n+    feature = \"jemalloc\"\n+))]\n #[global_allocator]\n static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;\n \n-- \n2.32.0\n\n"
  },
  {
    "path": "package/ripgrep/Config.in",
    "content": "config BR2_PACKAGE_RIPGREP\n\tbool \"ripgrep\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_HOST_RUSTC\n\thelp\n\t  ripgrep is a line-oriented search tool that\n\t  recursively searches your current directory\n\t  for a regex pattern while respecting your gitignore\n\t  rules.\n\n\t  ripgrep is similar to other popular search tools like\n\t  The Silver Searcher, ack and grep.\n\n\t  https://github.com/BurntSushi/ripgrep\n"
  },
  {
    "path": "package/ripgrep/ripgrep.hash",
    "content": "# Locally calculated\nsha256 0fb17aaf285b3eee8ddab17b833af1e190d73de317ff9648751ab0660d763ed2  ripgrep-13.0.0.tar.gz\nsha256 0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f  LICENSE-MIT\n"
  },
  {
    "path": "package/ripgrep/ripgrep.mk",
    "content": "################################################################################\n#\n# ripgrep\n#\n################################################################################\n\nRIPGREP_VERSION = 13.0.0\nRIPGREP_SITE = $(call github,burntsushi,ripgrep,$(RIPGREP_VERSION))\nRIPGREP_LICENSE = MIT\nRIPGREP_LICENSE_FILES = LICENSE-MIT\nRIPGREP_CPE_ID_VENDOR = ripgrep_project\n\n# CVE only impacts ripgrep on Windows\nRIPGREP_IGNORE_CVES += CVE-2021-3013\n\nRIPGREP_DEPENDENCIES = host-rustc\nRIPGREP_CARGO_ENV = CARGO_HOME=$(HOST_DIR)/share/cargo \\\n\t__CARGO_TEST_CHANNEL_OVERRIDE_DO_NOT_USE_THIS=\"nightly\" \\\n\tCARGO_TARGET_APPLIES_TO_HOST=\"false\"\n\nRIPGREP_BIN_DIR = target/$(RUSTC_TARGET_NAME)/$(RIPGREP_CARGO_BIN_SUBDIR)\n\nRIPGREP_CARGO_OPTS = \\\n\t-Z target-applies-to-host \\\n\t--target=$(RUSTC_TARGET_NAME) \\\n\t--manifest-path=$(@D)/Cargo.toml\n\nifeq ($(BR2_ENABLE_RUNTIME_DEBUG),y)\nRIPGREP_CARGO_BIN_SUBDIR = debug\nelse\nRIPGREP_CARGO_OPTS += --release\nRIPGREP_CARGO_BIN_SUBDIR = release\nendif\n\ndefine RIPGREP_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(RIPGREP_CARGO_ENV) \\\n\t\tcargo build $(RIPGREP_CARGO_OPTS)\nendef\n\ndefine RIPGREP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/$(RIPGREP_BIN_DIR)/rg \\\n\t\t$(TARGET_DIR)/usr/bin/rg\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/riscv64-elf-toolchain/riscv64-elf-toolchain.mk",
    "content": "################################################################################\n#\n# riscv64-elf-toolchain\n#\n################################################################################\n\nRISCV64_ELF_TOOLCHAIN_VERSION = 2020.12.8\nRISCV64_ELF_TOOLCHAIN_SITE = https://static.dev.sifive.com/dev-tools/freedom-tools/v2020.12\nRISCV64_ELF_TOOLCHAIN_SOURCE = riscv64-unknown-elf-toolchain-10.2.0-$(RISCV64_ELF_TOOLCHAIN_VERSION)-x86_64-linux-centos6.tar.gz\n\nHOST_RISCV64_ELF_TOOLCHAIN_INSTALL_DIR = $(HOST_DIR)/opt/riscv64-elf\n\ndefine HOST_RISCV64_ELF_TOOLCHAIN_INSTALL_CMDS\n\trm -rf $(HOST_RISCV64_ELF_TOOLCHAIN_INSTALL_DIR)\n\tmkdir -p $(HOST_RISCV64_ELF_TOOLCHAIN_INSTALL_DIR)\n\tcp -rf $(@D)/* $(HOST_RISCV64_ELF_TOOLCHAIN_INSTALL_DIR)/\n\n\tmkdir -p $(HOST_DIR)/bin\n\tcd $(HOST_DIR)/bin && \\\n\tfor i in ../opt/riscv64-elf/bin/*; do \\\n\t\tln -sf $$i; \\\n\tdone\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/rkbin/Config.in",
    "content": "config BR2_PACKAGE_RKBIN\n        bool \"rkbin\"\n        help\n          Rockchip binary blobs\n"
  },
  {
    "path": "package/rkbin/rkbin.mk",
    "content": "################################################################################\n#\n# rkbin\n#\n################################################################################\n\nRKBIN_VERSION = b0c100f1a260d807df450019774993c761beb79d\nRKBIN_SITE = https://github.com/rockchip-linux/rkbin.git\nRKBIN_SITE_METHOD = git\nRKBIN_INSTALL_IMAGES = YES\n\ndefine RKBIN_INSTALL_IMAGES_CMDS\n\tmkdir -p $(BINARIES_DIR)/rkbin\n\tcp -a $(@D)/* $(BINARIES_DIR)/rkbin\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rng-tools/Config.in",
    "content": "config BR2_PACKAGE_RNG_TOOLS\n\tbool \"rng-tools\"\n\t# pthread_setaffinity_np\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Daemon to use hardware random number generators.\n\n\t  http://sourceforge.net/projects/gkernel/\n\nif BR2_PACKAGE_RNG_TOOLS\n\nconfig BR2_PACKAGE_RNG_TOOLS_JITTERENTROPY_LIBRARY\n\tbool \"Jitterentropy Library support\"\n\tdefault y\n\tselect BR2_PACKAGE_JITTERENTROPY_LIBRARY\n\thelp\n\t  Enable Jitterentropy Library support.\n\n\t  The Jitter RNG provides a noise source using the CPU\n\t  execution timing jitter. It does not depend on any\n\t  system resource other than a high-resolution time stamp.\n\nconfig BR2_PACKAGE_RNG_TOOLS_NISTBEACON\n\tbool \"NIST Entropy Beacon support\"\n\tselect BR2_PACKAGE_JANSSON\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  Enable NIST Entropy Beacon support.\n\n\t  Entropy gathered from the NIST network entropy beacon. Note\n\t  that this entropy source is disabled by default as it should\n\t  never be used for cryptographic purposes, or any use case in\n\t  which random data should be known only by a single entity.\n\nendif\n\ncomment \"rng-tools needs a toolchain w/ NPTL\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/rng-tools/S21rngd",
    "content": "#!/bin/sh\n\nNAME=\"rngd\"\nDAEMON=\"/usr/sbin/${NAME}\"\nDAEMON_ARGS=\"\"\nCFG_FILE=\"/etc/default/${NAME}\"\nPID_FILE=\"/var/run/${NAME}.pid\"\n\n# Read configuration variable file if it is present\n[ -r \"${CFG_FILE}\" ] && . \"${CFG_FILE}\"\n\nstart()\n{\n\tprintf \"Starting ${NAME}: \"\n\tstart-stop-daemon -S -q -x \"${DAEMON}\" -- ${DAEMON_ARGS}\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nstop()\n{\n\tprintf \"Stopping ${NAME}: \"\n\t# This daemon does not exit properly with the default TERM signal unless\n\t# it's forced to work by something reading /dev/random. Killing it and\n\t# removing its PID file is more straightforward.\n\tif start-stop-daemon -K -q -s KILL -p \"${PID_FILE}\" -n \"${NAME}\"; then\n\t\trm -f \"${PID_FILE}\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t\t;;\n\tstop)\n\t\tstop\n\t\t;;\n\trestart|reload)\n\t\tstop\n\t\tstart\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\" >&2\n\t\texit 1\n\t\t;;\nesac\n"
  },
  {
    "path": "package/rng-tools/rng-tools.hash",
    "content": "# Locally computed\nsha256  4dd86f6ae37d917a8489f44070d39d7feddcc622429b95efd7aa85a1f3cfdf81  rng-tools-6.14.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/rng-tools/rng-tools.mk",
    "content": "################################################################################\n#\n# rng-tools\n#\n################################################################################\n\nRNG_TOOLS_VERSION = 6.14\nRNG_TOOLS_SITE = $(call github,nhorman,$(RNG_TOOLS_NAME),v$(RNG_TOOLS_VERSION))\nRNG_TOOLS_LICENSE = GPL-2.0\nRNG_TOOLS_LICENSE_FILES = COPYING\nRNG_TOOLS_CPE_ID_VENDOR = rng-tools_project\nRNG_TOOLS_SELINUX_MODULES = rngd\n\nRNG_TOOLS_DEPENDENCIES = host-pkgconf openssl\n# From git\nRNG_TOOLS_AUTORECONF = YES\n\nRNG_TOOLS_CONF_OPTS = --without-pkcs11\n\n# Work around for uClibc or musl toolchains which lack argp_*()\n# functions.\nifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y)\nRNG_TOOLS_CONF_ENV += LIBS=\"-largp\"\nRNG_TOOLS_DEPENDENCIES += argp-standalone\nendif\n\nifeq ($(BR2_PACKAGE_LIBRTLSDR),y)\nRNG_TOOLS_DEPENDENCIES += librtlsdr\nRNG_TOOLS_CONF_OPTS += --with-rtlsdr\nelse\nRNG_TOOLS_CONF_OPTS += --without-rtlsdr\nendif\n\nifeq ($(BR2_PACKAGE_RNG_TOOLS_JITTERENTROPY_LIBRARY),y)\nRNG_TOOLS_DEPENDENCIES += jitterentropy-library\nRNG_TOOLS_CONF_OPTS += --enable-jitterentropy\nelse\nRNG_TOOLS_CONF_OPTS += --disable-jitterentropy\nendif\n\nifeq ($(BR2_PACKAGE_RNG_TOOLS_NISTBEACON),y)\nRNG_TOOLS_DEPENDENCIES += jansson libcurl libxml2\nRNG_TOOLS_CONF_OPTS += --with-nistbeacon\nelse\nRNG_TOOLS_CONF_OPTS += --without-nistbeacon\nendif\n\ndefine RNG_TOOLS_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/rng-tools/S21rngd \\\n\t\t$(TARGET_DIR)/etc/init.d/S21rngd\nendef\n\ndefine RNG_TOOLS_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/rng-tools/rngd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/rngd.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rng-tools/rngd.service",
    "content": "[Unit]\nDescription=Hardware RNG Entropy Gatherer Daemon\n\n[Service]\nExecStart=/usr/sbin/rngd -f $DAEMON_ARGS\nEnvironmentFile=-/etc/default/rngd\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/rocksdb/0001-build_tools-build_detect_platform-fix-C-tests.patch",
    "content": "From 23739c6f9694d7fc436967439f170173dbb4c6b4 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 24 Feb 2020 10:22:13 +0100\nSubject: [PATCH] build_tools/build_detect_platform: fix C++ tests\n\nReplace -o /dev/null by -o test.o when testing for C++ features such as\n-faligned-new otherwise tests will fail with some bugged binutils\n(https://sourceware.org/bugzilla/show_bug.cgi?id=19526):\n\noutput/host/bin/xtensa-buildroot-linux-uclibc-g++ -faligned-new -x c++ - -o /dev/null <<EOF\n            struct alignas(1024) t {int a;};\n            int main() {}\nEOF\n/home/fabrice/buildroot/output/host/lib/gcc/xtensa-buildroot-linux-uclibc/8.3.0/../../../../xtensa-buildroot-linux-uclibc/bin/ld: final link failed: file truncated\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/facebook/rocksdb/pull/6479]\n---\n build_tools/build_detect_platform | 66 +++++++++++++++----------------\n 1 file changed, 33 insertions(+), 33 deletions(-)\n\ndiff --git a/build_tools/build_detect_platform b/build_tools/build_detect_platform\nindex 2535d8124..64a0ae76c 100755\n--- a/build_tools/build_detect_platform\n+++ b/build_tools/build_detect_platform\n@@ -172,7 +172,7 @@ case \"$TARGET_OS\" in\n         PLATFORM_LDFLAGS=\"$PLATFORM_LDFLAGS -lpthread -lrt -ldl\"\n         if test $ROCKSDB_USE_IO_URING; then\n             # check for liburing\n-            $CXX $PLATFORM_CXXFLAGS -x c++ - -luring -o /dev/null 2>/dev/null  <<EOF\n+            $CXX $PLATFORM_CXXFLAGS -x c++ - -luring -o test.o 2>/dev/null  <<EOF\n               #include <liburing.h>\n               int main() {\n                 struct io_uring ring;\n@@ -245,7 +245,7 @@ if [ \"$CROSS_COMPILE\" = \"true\" -o \"$FBCODE_BUILD\" = \"true\" ]; then\n else\n     if ! test $ROCKSDB_DISABLE_FALLOCATE; then\n         # Test whether fallocate is available\n-        $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <fcntl.h>\n           #include <linux/falloc.h>\n           int main() {\n@@ -261,7 +261,7 @@ EOF\n     if ! test $ROCKSDB_DISABLE_SNAPPY; then\n         # Test whether Snappy library is installed\n         # http://code.google.com/p/snappy/\n-        $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <snappy.h>\n           int main() {}\n EOF\n@@ -276,7 +276,7 @@ EOF\n         # Test whether gflags library is installed\n         # http://gflags.github.io/gflags/\n         # check if the namespace is gflags\n-        if $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF\n+        if $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null << EOF\n           #include <gflags/gflags.h>\n           using namespace GFLAGS_NAMESPACE;\n           int main() {}\n@@ -323,7 +323,7 @@ EOF\n           COMMON_FLAGS=\"$COMMON_FLAGS -DGFLAGS=1\"\n           PLATFORM_LDFLAGS=\"$PLATFORM_LDFLAGS -lgflags\"\n         # check if namespace is gflags\n-        elif $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF\n+        elif $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null << EOF\n             #include <gflags/gflags.h>\n             using namespace gflags;\n             int main() {}\n@@ -285,7 +285,7 @@ EOF\n           COMMON_FLAGS=\"$COMMON_FLAGS -DGFLAGS=1 -DGFLAGS_NAMESPACE=gflags\"\n           PLATFORM_LDFLAGS=\"$PLATFORM_LDFLAGS -lgflags\"\n         # check if namespace is google\n-        elif $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF\n+        elif $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null << EOF\n             #include <gflags/gflags.h>\n             using namespace google;\n             int main() {}\n@@ -299,7 +299,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_ZLIB; then\n         # Test whether zlib library is installed\n-        $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <zlib.h>\n           int main() {}\n EOF\n@@ -312,7 +312,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_BZIP; then\n         # Test whether bzip library is installed\n-        $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <bzlib.h>\n           int main() {}\n EOF\n@@ -325,7 +325,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_LZ4; then\n         # Test whether lz4 library is installed\n-        $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <lz4.h>\n           #include <lz4hc.h>\n           int main() {}\n@@ -339,7 +339,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_ZSTD; then\n         # Test whether zstd library is installed\n-        $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <zstd.h>\n           int main() {}\n EOF\n@@ -352,7 +352,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_NUMA; then\n         # Test whether numa is available\n-        $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null -lnuma 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o -lnuma 2>/dev/null  <<EOF\n           #include <numa.h>\n           #include <numaif.h>\n           int main() {}\n@@ -366,7 +366,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_TBB; then\n         # Test whether tbb is available\n-        $CXX $PLATFORM_CXXFLAGS $LDFLAGS -x c++ - -o /dev/null -ltbb 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS $LDFLAGS -x c++ - -o test.o -ltbb 2>/dev/null  <<EOF\n           #include <tbb/tbb.h>\n           int main() {}\n EOF\n@@ -379,7 +379,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_JEMALLOC; then\n         # Test whether jemalloc is available\n-        if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null -ljemalloc \\\n+        if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o -ljemalloc \\\n           2>/dev/null; then\n             # This will enable some preprocessor identifiers in the Makefile\n             JEMALLOC=1\n@@ -400,7 +400,7 @@ EOF\n     fi\n     if ! test $JEMALLOC && ! test $ROCKSDB_DISABLE_TCMALLOC; then\n         # jemalloc is not available. Let's try tcmalloc\n-        if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null \\\n+        if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o \\\n           -ltcmalloc 2>/dev/null; then\n             PLATFORM_LDFLAGS=\"$PLATFORM_LDFLAGS -ltcmalloc\"\n             JAVA_LDFLAGS=\"$JAVA_LDFLAGS -ltcmalloc\"\n@@ -409,7 +409,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_MALLOC_USABLE_SIZE; then\n         # Test whether malloc_usable_size is available\n-        $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <malloc.h>\n           int main() {\n             size_t res = malloc_usable_size(0);\n@@ -424,7 +424,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_MEMKIND; then\n         # Test whether memkind library is installed\n-        $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -lmemkind -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -lmemkind -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <memkind.h>\n           int main() {\n             memkind_malloc(MEMKIND_DAX_KMEM, 1024);\n@@ -486,7 +486,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_PTHREAD_MUTEX_ADAPTIVE_NP; then\n         # Test whether PTHREAD_MUTEX_ADAPTIVE_NP mutex type is available\n-        $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <pthread.h>\n           int main() {\n             int x = PTHREAD_MUTEX_ADAPTIVE_NP;\n@@ -439,7 +439,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_BACKTRACE; then\n         # Test whether backtrace is available\n-        $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <execinfo.h>\n           int main() {\n             void* frames[1];\n@@ -451,7 +451,7 @@ EOF\n             COMMON_FLAGS=\"$COMMON_FLAGS -DROCKSDB_BACKTRACE\"\n         else\n             # Test whether execinfo library is installed\n-            $CXX $PLATFORM_CXXFLAGS -lexecinfo -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+            $CXX $PLATFORM_CXXFLAGS -lexecinfo -x c++ - -o test.o 2>/dev/null  <<EOF\n               #include <execinfo.h>\n               int main() {\n                 void* frames[1];\n@@ -468,7 +468,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_PG; then\n         # Test if -pg is supported\n-        $CXX $PLATFORM_CXXFLAGS -pg -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS -pg -x c++ - -o test.o 2>/dev/null  <<EOF\n           int main() {\n             return 0;\n           }\n@@ -480,7 +480,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_SYNC_FILE_RANGE; then\n         # Test whether sync_file_range is supported for compatibility with an old glibc\n-        $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <fcntl.h>\n           int main() {\n             int fd = open(\"/dev/null\", 0);\n@@ -494,7 +494,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_SCHED_GETCPU; then\n         # Test whether sched_getcpu is supported\n-        $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <sched.h>\n           int main() {\n             int cpuid = sched_getcpu();\n@@ -508,7 +508,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_AUXV_GETAUXVAL; then\n         # Test whether getauxval is supported\n-        $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null 2>/dev/null  <<EOF\n+        $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o 2>/dev/null  <<EOF\n           #include <sys/auxv.h>\n           int main() {\n             uint64_t auxv = getauxval(AT_HWCAP);\n@@ -522,7 +522,7 @@ EOF\n \n     if ! test $ROCKSDB_DISABLE_ALIGNED_NEW; then\n         # Test whether c++17 aligned-new is supported\n-        $CXX $PLATFORM_CXXFLAGS -faligned-new -x c++ - -o /dev/null 2>/dev/null <<EOF\n+        $CXX $PLATFORM_CXXFLAGS -faligned-new -x c++ - -o test.o 2>/dev/null <<EOF\n             struct alignas(1024) t {int a;};\n             int main() {}\n EOF\n@@ -536,7 +536,7 @@ fi\n # -Wshorten-64-to-32 breaks compilation on FreeBSD i386\n if ! [ \"$TARGET_OS\" = FreeBSD -a \"$TARGET_ARCHITECTURE\" = i386 ]; then\n   # Test whether -Wshorten-64-to-32 is available\n-  $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null -Wshorten-64-to-32 2>/dev/null  <<EOF\n+  $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o -Wshorten-64-to-32 2>/dev/null  <<EOF\n     int main() {}\n EOF\n   if [ \"$?\" = 0 ]; then\n@@ -603,7 +603,7 @@ if test \"$TRY_SSE_ETC\"; then\n   TRY_LZCNT=\"-mlzcnt\"\n fi\n \n-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_SSE42 -x c++ - -o /dev/null 2>/dev/null <<EOF\n+$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_SSE42 -x c++ - -o test.o 2>/dev/null <<EOF\n   #include <cstdint>\n   #include <nmmintrin.h>\n   int main() {\n@@ -617,7 +617,7 @@ elif test \"$USE_SSE\"; then\n   echo \"warning: USE_SSE specified but compiler could not use SSE intrinsics, disabling\" >&2\n fi\n \n-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_PCLMUL -x c++ - -o /dev/null 2>/dev/null <<EOF\n+$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_PCLMUL -x c++ - -o test.o 2>/dev/null <<EOF\n   #include <cstdint>\n   #include <wmmintrin.h>\n   int main() {\n@@ -634,7 +634,7 @@ elif test \"$USE_SSE\"; then\n   echo \"warning: USE_SSE specified but compiler could not use PCLMUL intrinsics, disabling\" >&2\n fi\n \n-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_AVX2 -x c++ - -o /dev/null 2>/dev/null <<EOF\n+$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_AVX2 -x c++ - -o test.o 2>/dev/null <<EOF\n   #include <cstdint>\n   #include <immintrin.h>\n   int main() {\n@@ -649,7 +649,7 @@ elif test \"$USE_SSE\"; then\n   echo \"warning: USE_SSE specified but compiler could not use AVX2 intrinsics, disabling\" >&2\n fi\n \n-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_BMI -x c++ - -o /dev/null 2>/dev/null <<EOF\n+$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_BMI -x c++ - -o test.o 2>/dev/null <<EOF\n   #include <cstdint>\n   #include <immintrin.h>\n   int main(int argc, char *argv[]) {\n@@ -739,7 +739,7 @@ elif test \"$USE_SSE\"; then\n   echo \"warning: USE_SSE specified but compiler could not use BMI intrinsics, disabling\" >&2\n fi\n \n-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_LZCNT -x c++ - -o /dev/null 2>/dev/null <<EOF\n+$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_LZCNT -x c++ - -o test.o 2>/dev/null <<EOF\n   #include <cstdint>\n   #include <immintrin.h>\n   int main(int argc, char *argv[]) {\n@@ -753,7 +753,7 @@ elif test \"$USE_SSE\"; then\n   echo \"warning: USE_SSE specified but compiler could not use LZCNT intrinsics, disabling\" >&2\n fi\n \n-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF\n+$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o test.o 2>/dev/null <<EOF\n   #include <cstdint>\n   int main() {\n     uint64_t a = 0xffffFFFFffffFFFF;\n@@ -666,7 +666,7 @@ fi\n # succeed because the cross-compiler flags are added by the Makefile, not this\n # script.\n if [ \"$PLATFORM\" != IOS ]; then\n-  $CXX $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF\n+  $CXX $COMMON_FLAGS -x c++ - -o test.o 2>/dev/null <<EOF\n   #if defined(_MSC_VER) && !defined(__thread)\n   #define __thread __declspec(thread)\n   #endif\n@@ -685,7 +685,7 @@ if [ \"$FBCODE_BUILD\" != \"true\" -a \"$PLATFORM\" = OS_LINUX ]; then\n   void dummy_func() {}\n EOF\n   if [ \"$?\" = 0 ]; then\n-    $CXX $COMMON_FLAGS $PLATFORM_SHARED_LDFLAGS test_dl.o -o /dev/null 2>/dev/null\n+    $CXX $COMMON_FLAGS $PLATFORM_SHARED_LDFLAGS test_dl.o -o test.o 2>/dev/null\n     if [ \"$?\" = 0 ]; then\n       EXEC_LDFLAGS+=\"-ldl\"\n       rm -f test_dl.o\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/rocksdb/Config.in",
    "content": "config BR2_PACKAGE_ROCKSDB_ARCH_SUPPORTS\n\tbool\n\t# see utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_powerpc64 || BR2_powerpc64le\n\nconfig BR2_PACKAGE_ROCKSDB\n\tbool \"rocksdb\"\n\tdepends on BR2_PACKAGE_ROCKSDB_ARCH_SUPPORTS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future\n\thelp\n\t  The RocksDB library provides a persistent key value store.\n\t  Keys and values are arbitrary byte arrays. The keys are\n\t  ordered within the key value store according to a\n\t  user-specified comparator function.\n\n\t  The library is maintained by the Facebook Database Engineering\n\t  Team, and is based on LevelDB, by Sanjay Ghemawat and Jeff\n\t  Dean at Google.\n\n\t  http://rocksdb.org\n\ncomment \"rocksdb needs a toolchain w/ C++, threads, wchar, gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_ROCKSDB_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\ncomment \"rocksdb needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_PACKAGE_ROCKSDB_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/rocksdb/rocksdb.hash",
    "content": "# Locally computed:\nsha256  c6502c7aae641b7e20fafa6c2b92273d935d2b7b2707135ebd9a67b092169dca  rocksdb-6.20.3.tar.gz\n\n# Hash for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE.Apache\nsha256  b568f1f37a5a1d37a3e981e7c8b7fc4856ca33b2ca0a45bc8e847aaaf7afe485  LICENSE.leveldb\nsha256  e62e4f73402cf6a16969673f0b7eb46bc91782e50a2afe400dd0157547bc09f0  README.md\n"
  },
  {
    "path": "package/rocksdb/rocksdb.mk",
    "content": "################################################################################\n#\n# rocksdb\n#\n################################################################################\n\nROCKSDB_VERSION = 6.20.3\nROCKSDB_SITE = $(call github,facebook,rocksdb,v$(ROCKSDB_VERSION))\nROCKSDB_LICENSE = GPL-2.0 or Apache-2.0\nROCKSDB_LICENSE_FILES = COPYING LICENSE.Apache LICENSE.leveldb README.md\nROCKSDB_INSTALL_STAGING = YES\n\nROCKSDB_MAKE_OPTS = \\\n\tPORTABLE=1 \\\n\tPREFIX=/usr\n\n# Internal error, aborting at dwarf2cfi.c:2802 in connect_traces\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58864\nifeq ($(BR2_m68k_cf),y)\nROCKSDB_EXTRA_CXXFLAGS += -fno-defer-pop\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nROCKSDB_DEPENDENCIES += bzip2\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_BZ2=0\nelse\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_BZ2=1\nendif\n\nifeq ($(BR2_PACKAGE_GFLAGS),y)\nROCKSDB_DEPENDENCIES += gflags\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_GFLAGS=0\nelse\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_GFLAGS=1\nendif\n\nifeq ($(BR2_PACKAGE_JEMALLOC),y)\nROCKSDB_DEPENDENCIES += jemalloc\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_JEMALLOC=0\nelse\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_JEMALLOC=1\nendif\n\nifeq ($(BR2_PACKAGE_LZ4),y)\nROCKSDB_DEPENDENCIES += lz4\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_LZ4=0\nelse\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_LZ4=1\nendif\n\nifeq ($(BR2_PACKAGE_SNAPPY),y)\nROCKSDB_DEPENDENCIES += snappy\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_SNAPPY=0\nelse\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_SNAPPY=1\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nROCKSDB_DEPENDENCIES += zlib\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_ZLIB=0\nelse\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_ZLIB=1\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nROCKSDB_DEPENDENCIES += zstd\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_ZSTD=0\nelse\nROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_ZSTD=1\nendif\n\nifeq ($(BR2_GCC_ENABLE_LTO),y)\nROCKSDB_MAKE_OPTS += USE_LTO=1\nelse\nROCKSDB_MAKE_OPTS += USE_LTO=0\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nROCKSDB_BUILD_TARGETS += static_lib\nROCKSDB_INSTALL_TARGETS += install-static\nROCKSDB_EXTRA_CXXFLAGS += -DROCKSDB_NO_DYNAMIC_EXTENSION\nelse ifeq ($(BR2_SHARED_LIBS),y)\nROCKSDB_BUILD_TARGETS += shared_lib\nROCKSDB_INSTALL_TARGETS += install-shared\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nROCKSDB_BUILD_TARGETS += shared_lib static_lib\nROCKSDB_INSTALL_TARGETS += install-shared install-static\nendif\n\nROCKSDB_MAKE_OPTS += EXTRA_CXXFLAGS=\"$(ROCKSDB_EXTRA_CXXFLAGS)\"\n\ndefine ROCKSDB_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) $(ROCKSDB_MAKE_OPTS) -C $(@D) \\\n\t\t$(ROCKSDB_BUILD_TARGETS)\nendef\n\ndefine ROCKSDB_INSTALL_STAGING_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) $(ROCKSDB_MAKE_OPTS) -C $(@D) \\\n\t\tDESTDIR=$(STAGING_DIR) $(ROCKSDB_INSTALL_TARGETS)\nendef\n\ndefine ROCKSDB_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) $(ROCKSDB_MAKE_OPTS) -C $(@D) \\\n\t\tDESTDIR=$(TARGET_DIR) $(ROCKSDB_INSTALL_TARGETS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rp-pppoe/0001-krn-plugin.patch",
    "content": "[Fabrice: update patch for 3.14]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\ndiff -Nura rp-pppoe-3.11.orig/src/configure rp-pppoe-3.11/src/configure\n--- rp-pppoe-3.11.orig/src/configure\t2012-08-21 10:01:10.536440032 -0300\n+++ rp-pppoe-3.11/src/configure\t2012-08-21 10:01:45.353442397 -0300\n@@ -4517,7 +4517,7 @@\n modprobe pppoe > /dev/null 2>&1\n fi\n if test \"$cross_compiling\" = yes; then :\n-  ac_cv_linux_kernel_pppoe=no; echo \"cross-compiling, default: \"\n+  ac_cv_linux_kernel_pppoe=yes; echo \"cross-compiling, default: \"\n else\n   cat confdefs.h - <<_ACEOF >conftest.$ac_ext\n /* end confdefs.h.  */\ndiff -Nura rp-pppoe-3.11.orig/src/pppoe-server.c rp-pppoe-3.11/src/pppoe-server.c\n--- rp-pppoe-3.11.orig/src/pppoe-server.c\t2012-08-21 10:01:10.535440032 -0300\n+++ rp-pppoe-3.11/src/pppoe-server.c\t2012-08-21 10:02:02.597443569 -0300\n@@ -20,6 +20,9 @@\n \n #include \"config.h\"\n \n+/* Patched hack to make this cross compile */\n+#define HAVE_LINUX_KERNEL_PPPOE 1\n+\n #if defined(HAVE_NETPACKET_PACKET_H) || defined(HAVE_LINUX_IF_PACKET_H)\n #define _POSIX_SOURCE 1 /* For sigaction defines */\n #endif\n"
  },
  {
    "path": "package/rp-pppoe/Config.in",
    "content": "comment \"rp-pppoe needs a uClibc or glibc toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL\n\tdepends on BR2_USE_MMU\n\nconfig BR2_PACKAGE_RP_PPPOE\n\tbool \"rp-pppoe\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # pppd\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_PPPD\n\thelp\n\t  An implementation of the Point-to-point protocol over\n\t  Ethernet.  Has userspace client and server deamons. You\n\t  likely only need this package if you are implementing the\n\t  pppoe server that will service other pppoe client\n\t  devices. Otherwise the normal client functionality already\n\t  exists in the pppd package (and kernel).\n\n\t  https://dianne.skoll.ca/projects/rp-pppoe/\n"
  },
  {
    "path": "package/rp-pppoe/rp-pppoe.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  b1f318bc7e4e5b0fd8a8e23e8803f5e6e43165245a5a10a7162a92a6cf17829a  rp-pppoe-3.15.tar.gz\n# Locally computed\nsha256  464006ba771074f4022db14f58a29a0b447b6fdde9529cf0331be396b6279162  doc/LICENSE\n"
  },
  {
    "path": "package/rp-pppoe/rp-pppoe.mk",
    "content": "################################################################################\n#\n# rp-pppoe\n#\n################################################################################\n\nRP_PPPOE_VERSION = 3.15\nRP_PPPOE_SITE = https://dianne.skoll.ca/projects/rp-pppoe/download\nRP_PPPOE_LICENSE = GPL-2.0\nRP_PPPOE_LICENSE_FILES = doc/LICENSE\nRP_PPPOE_CPE_ID_VENDOR = rp-pppoe_project\n\nRP_PPPOE_DEPENDENCIES = pppd\nRP_PPPOE_SUBDIR = src\nRP_PPPOE_TARGET_FILES = pppoe pppoe-server pppoe-relay pppoe-sniff\nRP_PPPOE_TARGET_SCRIPTS = pppoe-connect pppoe-init pppoe-setup pppoe-start \\\n\tpppoe-status pppoe-stop\nRP_PPPOE_MAKE_OPTS = PLUGIN_DIR=/usr/lib/pppd/$(PPPD_VERSION)\nRP_PPPOE_CONF_OPTS = --disable-debugging\n\n# The pppd, echo, setsid and id paths must be the ones on the\n# target. Indeed, the result of these checks is used to replace\n# variables in scripts that are installed in the target.\nRP_PPPOE_CONF_ENV = \\\n\trpppoe_cv_pack_bitfields=normal \\\n\tac_cv_path_PPPD=/usr/sbin/pppd \\\n\tac_cv_path_ECHO=/bin/echo \\\n\tac_cv_path_SETSID=/usr/bin/setsid \\\n\tac_cv_path_ID=/usr/bin/id \\\n\tPPPD_H=$(PPPD_DIR)/pppd/pppd.h\n\ndefine RP_PPPOE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/configs/pppoe.conf \\\n\t\t$(TARGET_DIR)/etc/ppp/pppoe.conf\n\tfor ff in $(RP_PPPOE_TARGET_FILES); do \\\n\t\t$(INSTALL) -m 0755 $(@D)/src/$$ff $(TARGET_DIR)/usr/sbin/$$ff || exit 1; \\\n\tdone\n\tfor ff in $(RP_PPPOE_TARGET_SCRIPTS); do \\\n\t\t$(INSTALL) -m 0755 $(@D)/scripts/$$ff $(TARGET_DIR)/usr/sbin/$$ff || exit 1; \\\n\tdone\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rpcbind/0001-Remove-yellow-pages-support.patch",
    "content": "From 226b9c57ff403b407dbf1ff8a615da455a4cbd23 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 10 Nov 2012 22:03:43 +0100\nSubject: [PATCH] Remove yellow pages support\n\nThis support requires yellow pages support in libtirpc, which isn't\navailable. As most Buildroot users are most likely never going to need\nsuch feature, get rid of it.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[ rebased for 1.2.6 ]\nSigned-off-by: Petr Vorel <petr.vorel@gmail.com>\n---\n src/security.c | 15 ---------------\n 1 file changed, 15 deletions(-)\n\ndiff --git a/src/security.c b/src/security.c\nindex 38967dd..0a70635 100644\n--- a/src/security.c\n+++ b/src/security.c\n@@ -318,24 +318,9 @@ check_callit(SVCXPRT *xprt, struct r_rmtcall_args *args, int versnum /*__unused*\n \t\t    args->rmt_proc != MOUNTPROC_UMNT)\n \t\t\tbreak;\n \t\tgoto deny;\n-\tcase YPBINDPROG:\n-\t\tif (args->rmt_proc != YPBINDPROC_SETDOM)\n-\t\t\tbreak;\n-\t\t/* FALLTHROUGH */\n-\tcase YPPASSWDPROG:\n \tcase NFS_PROGRAM:\n \tcase RQUOTAPROG:\n \t\tgoto deny;\n-\tcase YPPROG:\n-\t\tswitch (args->rmt_proc) {\n-\t\tcase YPPROC_ALL:\n-\t\tcase YPPROC_MATCH:\n-\t\tcase YPPROC_FIRST:\n-\t\tcase YPPROC_NEXT:\n-\t\t\tgoto deny;\n-\t\tdefault:\n-\t\t\tbreak;\n-\t\t}\n \tdefault:\n \t\tbreak;\n \t}\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/rpcbind/Config.in",
    "content": "config BR2_PACKAGE_RPCBIND\n\tbool \"rpcbind\"\n\t# We really need libtirpc and can't work with the native RPC\n\t# implementation of toolchains.\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libtirpc\n\tdepends on BR2_USE_MMU \t# fork()\n\tselect BR2_PACKAGE_LIBTIRPC\n\thelp\n\t  The rpcbind utility is a server that converts RPC program\n\t  numbers into universal addresses.\n\n\t  https://sourceforge.net/projects/rpcbind/\n\ncomment \"rpcbind needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/rpcbind/S30rpcbind",
    "content": "#!/bin/sh\n#\n# Starts rpcbind.\n#\n\nstart() {\n\tprintf \"Starting rpcbind: \"\n\tumask 077\n\tstart-stop-daemon -S -q -p /var/run/rpcbind.pid --exec /usr/sbin/rpcbind\n\techo \"OK\"\n}\nstop() {\n\tprintf \"Stopping rpcbind daemon: \"\n\tstart-stop-daemon -K -q -p /var/run/rpcbind.pid\n\techo \"OK\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n\n"
  },
  {
    "path": "package/rpcbind/rpcbind.hash",
    "content": "# Locally computed:\nsha256 5613746489cae5ae23a443bb85c05a11741a5f12c8f55d2bb5e83b9defeee8de  rpcbind-1.2.6.tar.bz2\nsha256 2b9477d2f4ab277b29702958f0058546edc120aae4b5fb8b8d1a9652104e1ba3  COPYING\n"
  },
  {
    "path": "package/rpcbind/rpcbind.mk",
    "content": "################################################################################\n#\n# rpcbind\n#\n################################################################################\n\nRPCBIND_VERSION = 1.2.6\nRPCBIND_SITE = http://downloads.sourceforge.net/project/rpcbind/rpcbind/$(RPCBIND_VERSION)\nRPCBIND_SOURCE = rpcbind-$(RPCBIND_VERSION).tar.bz2\nRPCBIND_LICENSE = BSD-3-Clause\nRPCBIND_LICENSE_FILES = COPYING\nRPCBIND_CPE_ID_VENDOR = rpcbind_project\nRPCBIND_SELINUX_MODULES = rpcbind\n\nRPCBIND_CONF_ENV += \\\n\tCFLAGS=\"$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`\"\nRPCBIND_DEPENDENCIES += libtirpc host-pkgconf\nRPCBIND_CONF_OPTS += --with-rpcuser=root\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nRPCBIND_CONF_OPTS += --enable-warmstarts \\\n\t--with-systemdsystemunitdir=/usr/lib/systemd/system\nRPCBIND_DEPENDENCIES += systemd\nelse\nRPCBIND_CONF_OPTS += --with-systemdsystemunitdir=no\nendif\n\ndefine RPCBIND_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/rpcbind/S30rpcbind \\\n\t\t$(TARGET_DIR)/etc/init.d/S30rpcbind\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rpi-armmem/Config.in",
    "content": "config BR2_PACKAGE_RPI_ARMMEM\n\tbool \"rpi-armmem\"\n\tdepends on BR2_arm && BR2_PACKAGE_RPI_FIRMWARE && BR2_PACKAGE_RPI_USERLAND\n\thelp\n\t  A replacement for memcpy and memset functionality for the\n\t  Raspberry Pi with the intention of gaining greater performance.\n\n\t  https://github.com/bavison/arm-mem/\n\n"
  },
  {
    "path": "package/rpi-armmem/rpi-armmem.mk",
    "content": "################################################################################\n#\n# rpi-armmem\n#\n################################################################################\n\nRPI_ARMMEM_VERSION = b48ea154fd74410022d8189003cd69fad8f3d02c\nRPI_ARMMEM_SITE = $(call github,bavison,arm-mem,$(RPI_ARMMEM_VERSION))\nCFLAGS = -fPIC -std=gnu99 -O2\n\ndefine RPI_ARMMEM_BUILD_CMDS\n\t$(MAKE) CROSS_COMPILE=\"$(TARGET_CROSS)\" CFLAGS=\"$(CFLAGS)\" all -C $(@D)\nendef\n\ndefine RPI_ARMMEM_INSTALL_TARGET_CMDS\n\tif [ -n \"$(BR2_cortex_a7)\" ]; then suffix=\"v7l\"; else suffix=\"v6l\"; fi; \\\n\t$(INSTALL) -D -m 0755 $(@D)/libarmmem-$${suffix}.so $(TARGET_DIR)/usr/lib/libarmmem.so\nendef\n\n$(eval $(generic-package))\n\n"
  },
  {
    "path": "package/rpi-bt-firmware/Config.in",
    "content": "config BR2_PACKAGE_RPI_BT_FIRMWARE\n\tbool \"rpi-bt-firmware\"\n\tdepends on BR2_arm || BR2_aarch64\n\thelp\n\t  Raspberry Pi 3 and Zero W Broadcom BCM43438 Bluetooth module\n\t  firmware. Raspberry Pi 3 Model B+ Broadcom BCM4345C0\n\t  Bluetooth module firmware.\n\n\t  https://github.com/LibreELEC/brcmfmac_sdio-firmware-rpi\n"
  },
  {
    "path": "package/rpi-bt-firmware/rpi-bt-firmware.hash",
    "content": "# Locally computed\nsha256  e51b717c2a60ca29fcdd8e04e07c00996226cb48fa56a8ad1934b5f4ddee2e3d  rpi-bt-firmware-ea9963f3f77b4bb6cd280577eb115152bdd67e8d.tar.gz\nsha256  b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d  LICENCE.broadcom_bcm43xx\n"
  },
  {
    "path": "package/rpi-bt-firmware/rpi-bt-firmware.mk",
    "content": "################################################################################\n#\n# rpi-bt-firmware\n#\n################################################################################\n\nRPI_BT_FIRMWARE_VERSION = ea9963f3f77b4bb6cd280577eb115152bdd67e8d\nRPI_BT_FIRMWARE_SITE = $(call github,LibreELEC,brcmfmac_sdio-firmware-rpi,$(RPI_BT_FIRMWARE_VERSION))\nRPI_BT_FIRMWARE_LICENSE = PROPRIETARY\nRPI_BT_FIRMWARE_LICENSE_FILES = LICENCE.broadcom_bcm43xx\n\ndefine RPI_BT_FIRMWARE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm\n\t$(INSTALL) -m 0644 $(@D)/firmware/brcm/*.hcd $(TARGET_DIR)/lib/firmware/brcm\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rpi-firmware/Config.in",
    "content": "config BR2_PACKAGE_RPI_FIRMWARE\n\tbool \"rpi-firmware\"\n\tdepends on BR2_arm || BR2_aarch64\n\thelp\n\t  RaspberryPi Firmware\n\n\t  Pre-compiled binaries of the current bootloader and GPU\n\t  firmware\n\n\t  https://github.com/raspberrypi/firmware\n\nif BR2_PACKAGE_RPI_FIRMWARE\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN\n\tbool \"rpi 0/1/2/3 bootcode.bin\"\n\thelp\n\t  The bootcode.bin for versions Zero/1/2/3 (not needed on rpi4,\n\t  because it has been replaced by boot code in the onboard\n\t  EEPROM).\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI\n\tbool \"rpi 0/1/2/3 (default)\"\n\thelp\n\t  The default set of files for versions Zero/1/2/3.\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_X\n\tbool \"rpi 0/1/2/3 (extended)\"\n\thelp\n\t  The extended set of files for versions Zero/1/2/3 (additional\n\t  GPU features, eg. more audio/video codecs).\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_CD\n\tbool \"rpi 0/1/2/3 (cut-down)\"\n\thelp\n\t  The cut-down set of files for versions Zero/1/2/3 (only\n\t  features required to boot a Linux kernel).\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_DB\n\tbool \"rpi 0/1/2/3 (debug)\"\n\thelp\n\t  The debug set of files for versions Zero/1/2/3.\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4\n\tbool \"rpi 4 (default)\"\n\thelp\n\t  The default set of files for versions 4 (standard GPU\n\t  features).\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_X\n\tbool \"rpi 4 (extended)\"\n\thelp\n\t  The extended set of files for versions 4 (additional GPU\n\t  features, eg. more audio/video codecs).\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_CD\n\tbool \"rpi 4 (cut-down)\"\n\thelp\n\t  The cut-down set of files for versions 4 (only features\n\t  required to boot a Linux kernel).\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_DB\n\tbool \"rpi 4 (debug)\"\n\thelp\n\t  The debug set of files for versions 4.\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE\n\tstring \"Path to a file stored as boot/config.txt\"\n\thelp\n\t  Path to a file stored as config.txt in the boot partiton\n\t  of the generated SD card image.\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS\n\tbool \"Install Device Tree Blobs (DTBs)\"\n\tdefault y\n\tdepends on !BR2_LINUX_KERNEL_DTS_SUPPORT\n\thelp\n\t  If you are using a Linux kernel <= 3.18, you should say 'y'\n\t  here.\n\n\t  If you are using a Linux kernel >= 3.19, you should say 'n'\n\t  here, and enable BR2_LINUX_KERNEL_DTS_SUPPORT to let the\n\t  kernel build the DTB.\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS\n\tbool \"Install DTB overlays\"\n\tdefault y\n\tdepends on BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS \\\n\t\t|| BR2_LINUX_KERNEL_DTS_SUPPORT\n\tselect BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT \\\n\t\tif BR2_LINUX_KERNEL_DTS_SUPPORT\n\thelp\n\t  Say 'y' here if you need to load one or more of the DTB\n\t  overlays, to support HATs (Hardware Attached on Top, add-on\n\t  modules).\n\nconfig BR2_PACKAGE_RPI_FIRMWARE_INSTALL_VCDBG\n\tbool \"vcdbg\"\n\tdepends on BR2_arm # prebuilt arm binary, rpi-userland\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on BR2_INSTALL_LIBSTDCPP # rpi-userland\n\tselect BR2_PACKAGE_RPI_USERLAND\n\thelp\n\t  Install vcdbg, to help debug communication with the GPU.\n\ncomment \"vcdbg needs a glibc toolchain w/ C++\"\n\tdepends on BR2_arm\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP\n\nendif # BR2_PACKAGE_RPI_FIRMWARE\n"
  },
  {
    "path": "package/rpi-firmware/cmdline.txt",
    "content": "root=/dev/mmcblk0p2 rootwait console=tty1 console=ttyAMA0,115200\n"
  },
  {
    "path": "package/rpi-firmware/rpi-firmware.hash",
    "content": "# Locally computed\nsha256  a4d9a2d28bca88f8c6f2b8282dbb12789d2363d83cc6534392766276873d2d35  rpi-firmware-61966732d03de9b71baf561f920e018b54c241ac.tar.gz\nsha256  c7283ff51f863d93a275c66e3b4cb08021a5dd4d8c1e7acc47d872fbe52d3d6b  boot/LICENCE.broadcom\n"
  },
  {
    "path": "package/rpi-firmware/rpi-firmware.mk",
    "content": "################################################################################\n#\n# rpi-firmware\n#\n################################################################################\n\nRPI_FIRMWARE_VERSION = 61966732d03de9b71baf561f920e018b54c241ac\nRPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION))\nRPI_FIRMWARE_LICENSE = BSD-3-Clause\nRPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom\nRPI_FIRMWARE_INSTALL_IMAGES = YES\n\nRPI_FIRMWARE_FILES = \\\n\t$(if $(BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN), bootcode.bin) \\\n\t$(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI), start.elf fixup.dat) \\\n\t$(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_X), start_x.elf fixup_x.dat) \\\n\t$(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_CD), start_cd.elf fixup_cd.dat) \\\n\t$(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_DB), start_db.elf fixup_db.dat) \\\n\t$(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4), start4.elf fixup4.dat) \\\n\t$(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_X), start4x.elf fixup4x.dat) \\\n\t$(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_CD), start4cd.elf fixup4cd.dat) \\\n\t$(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_DB), start4db.elf fixup4db.dat)\n\ndefine RPI_FIRMWARE_INSTALL_BIN\n\t$(foreach f,$(RPI_FIRMWARE_FILES), \\\n\t\t$(INSTALL) -D -m 0644 $(@D)/boot/$(f) $(BINARIES_DIR)/rpi-firmware/$(f)\n\t)\nendef\n\nRPI_FIRMWARE_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE))\nifneq ($(RPI_FIRMWARE_CONFIG_FILE),)\ndefine RPI_FIRMWARE_INSTALL_CONFIG\n\t$(INSTALL) -D -m 0644 $(RPI_FIRMWARE_CONFIG_FILE) \\\n\t\t$(BINARIES_DIR)/rpi-firmware/config.txt\nendef\nendif\n\nifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS),y)\ndefine RPI_FIRMWARE_INSTALL_DTB\n\t$(foreach dtb,$(wildcard $(@D)/boot/*.dtb), \\\n\t\t$(INSTALL) -D -m 0644 $(dtb) $(BINARIES_DIR)/rpi-firmware/$(notdir $(dtb))\n\t)\nendef\nendif\n\nifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS),y)\ndefine RPI_FIRMWARE_INSTALL_DTB_OVERLAYS\n\t$(foreach ovldtb,$(wildcard $(@D)/boot/overlays/*.dtbo), \\\n\t\t$(INSTALL) -D -m 0644 $(ovldtb) $(BINARIES_DIR)/rpi-firmware/overlays/$(notdir $(ovldtb))\n\t)\nendef\nelse\n# Still create the directory, so a genimage.cfg can include it independently of\n# whether _INSTALL_DTB_OVERLAYS is selected or not.\ndefine RPI_FIRMWARE_INSTALL_DTB_OVERLAYS\n\t$(INSTALL) -d $(BINARIES_DIR)/rpi-firmware/overlays\nendef\nendif\n\nifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_VCDBG),y)\ndefine RPI_FIRMWARE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0700 $(@D)/$(if BR2_ARM_EABIHF,hardfp/)opt/vc/bin/vcdbg \\\n\t\t$(TARGET_DIR)/usr/sbin/vcdbg\n\t$(INSTALL) -D -m 0644 $(@D)/$(if BR2_ARM_EABIHF,hardfp/)opt/vc/lib/libelftoolchain.so \\\n\t\t$(TARGET_DIR)/usr/lib/libelftoolchain.so\nendef\nendif # INSTALL_VCDBG\n\ndefine RPI_FIRMWARE_INSTALL_IMAGES_CMDS\n\t$(INSTALL) -D -m 0644 package/rpi-firmware/cmdline.txt $(BINARIES_DIR)/rpi-firmware/cmdline.txt\n\t$(RPI_FIRMWARE_INSTALL_BIN)\n\t$(RPI_FIRMWARE_INSTALL_CONFIG)\n\t$(RPI_FIRMWARE_INSTALL_DTB)\n\t$(RPI_FIRMWARE_INSTALL_DTB_OVERLAYS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch",
    "content": "From 4824be8986c2b6ef0b0bd2b32bc99c4ba6406640 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sat, 24 Jan 2015 19:44:14 +0100\nSubject: [PATCH] Add .pc files for the OpenGLESv2, EGL and bcm_host libraries\n\nThose pkg-config files make it easier for Qt5 to find those libraries\nand the appropriate link flags.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\n[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n host_applications/linux/libs/bcm_host/CMakeLists.txt |  4 ++++\n host_applications/linux/libs/bcm_host/bcm_host.pc.in | 10 ++++++++++\n interface/khronos/CMakeLists.txt                     |  8 ++++++++\n interface/khronos/egl/egl.pc.in                      | 11 +++++++++++\n interface/khronos/glxx/glesv2.pc.in                  | 10 ++++++++++\n 5 files changed, 43 insertions(+)\n create mode 100644 host_applications/linux/libs/bcm_host/bcm_host.pc.in\n create mode 100644 interface/khronos/egl/egl.pc.in\n create mode 100644 interface/khronos/glxx/glesv2.pc.in\n\ndiff --git a/host_applications/linux/libs/bcm_host/CMakeLists.txt b/host_applications/linux/libs/bcm_host/CMakeLists.txt\nindex 1edf50a..1f29ead 100644\n--- a/host_applications/linux/libs/bcm_host/CMakeLists.txt\n+++ b/host_applications/linux/libs/bcm_host/CMakeLists.txt\n@@ -20,3 +20,7 @@ target_link_libraries(bcm_host vcos vchostif)\n \n install(TARGETS bcm_host DESTINATION lib)\n \n+configure_file(\"${CMAKE_CURRENT_SOURCE_DIR}/bcm_host.pc.in\"\n+  \"${CMAKE_CURRENT_BINARY_DIR}/bcm_host.pc\" @ONLY)\n+install(FILES \"${CMAKE_CURRENT_BINARY_DIR}/bcm_host.pc\"\n+  DESTINATION \"${CMAKE_INSTALL_PREFIX}/lib/pkgconfig\")\ndiff --git a/host_applications/linux/libs/bcm_host/bcm_host.pc.in b/host_applications/linux/libs/bcm_host/bcm_host.pc.in\nnew file mode 100644\nindex 0000000..d40d350\n--- /dev/null\n+++ b/host_applications/linux/libs/bcm_host/bcm_host.pc.in\n@@ -0,0 +1,10 @@\n+prefix=/usr\n+exec_prefix=${prefix}\n+libdir=${exec_prefix}/lib\n+includedir=${prefix}/include\n+\n+Name: bcm_host\n+Description: Broadcom VideoCore host API library\n+Version: 1\n+Libs: -L${libdir} -lbcm_host -lvcos -lvchiq_arm\n+Cflags: -I${includedir} -I${includedir}/interface/vmcs_host/linux -I${includedir}/interface/vcos/pthreads -DUSE_VCHIQ_ARM\ndiff --git a/interface/khronos/CMakeLists.txt b/interface/khronos/CMakeLists.txt\nindex 4231af4..2844ebd 100644\n--- a/interface/khronos/CMakeLists.txt\n+++ b/interface/khronos/CMakeLists.txt\n@@ -74,6 +74,14 @@ target_link_libraries(OpenVG EGL)\n \n install(TARGETS EGL GLESv2 OpenVG WFC khrn_client DESTINATION lib)\n install(TARGETS EGL_static GLESv2_static khrn_static DESTINATION lib)\n+configure_file(\"${CMAKE_CURRENT_SOURCE_DIR}/egl/egl.pc.in\"\n+  \"${CMAKE_CURRENT_BINARY_DIR}/egl/egl.pc\" @ONLY)\n+install(FILES \"${CMAKE_CURRENT_BINARY_DIR}/egl/egl.pc\"\n+  DESTINATION \"${CMAKE_INSTALL_PREFIX}/lib/pkgconfig\")\n+configure_file(\"${CMAKE_CURRENT_SOURCE_DIR}/glxx/glesv2.pc.in\"\n+  \"${CMAKE_CURRENT_BINARY_DIR}/glxx/glesv2.pc\" @ONLY)\n+install(FILES \"${CMAKE_CURRENT_BINARY_DIR}/glxx/glesv2.pc\"\n+  DESTINATION \"${CMAKE_INSTALL_PREFIX}/lib/pkgconfig\")\n \n # recommended names to use to avoid conflicts with mesa libs\n add_library(brcmEGL ${SHARED} ${EGL_SOURCE})\ndiff --git a/interface/khronos/egl/egl.pc.in b/interface/khronos/egl/egl.pc.in\nnew file mode 100644\nindex 0000000..5868706\n--- /dev/null\n+++ b/interface/khronos/egl/egl.pc.in\n@@ -0,0 +1,11 @@\n+prefix=@CMAKE_INSTALL_PREFIX@\n+exec_prefix=${prefix}\n+libdir=${exec_prefix}/lib\n+includedir=${prefix}/include\n+\n+Name: egl\n+Description: RasberryPi implementation of EGL\n+Version: 10\n+Libs: -L${libdir} -lEGL -lGLESv2 -lbcm_host -lvchostif\n+Cflags: -I${includedir}/ -I${includedir}/interface/vcos/pthreads/ \\\n+        -I${includedir}/interface/vmcs_host/linux/\ndiff --git a/interface/khronos/glxx/glesv2.pc.in b/interface/khronos/glxx/glesv2.pc.in\nnew file mode 100644\nindex 0000000..2f58eed\n--- /dev/null\n+++ b/interface/khronos/glxx/glesv2.pc.in\n@@ -0,0 +1,10 @@\n+prefix=@CMAKE_INSTALL_PREFIX@\n+exec_prefix=${prefix}\n+libdir=${exec_prefix}/lib\n+includedir=${prefix}/include\n+\n+Name: glesv2\n+Description: RasberryPi implementation of OpenGL ESv2\n+Version: 2.0\n+Libs: -L${libdir} -lGLESv2\n+Cflags: -I${includedir}/\n-- \n2.8.1\n\n"
  },
  {
    "path": "package/rpi-userland/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch",
    "content": "From a126ee5a3235792abb58daffd9d4b3e1012f675b Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sat, 24 Jan 2015 22:07:19 +0100\nSubject: [PATCH] interface: remove faulty assert() to make weston happy at\n runtime\n\nThis was removed after a discussion on IRC with the weston guys\n('daniels' on irc.freenode.net/#wayland).\n\nUpstream status: no, will be pushed by weston guys later.\nIf not, I'll do it.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\n[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n interface/vmcs_host/vc_vchi_dispmanx.c | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c\nindex 133e86d..0c7873c 100755\n--- a/interface/vmcs_host/vc_vchi_dispmanx.c\n+++ b/interface/vmcs_host/vc_vchi_dispmanx.c\n@@ -1306,7 +1306,6 @@ static void *dispmanx_notify_func( void *arg ) {\n             // Decrement the use count - the corresponding \"use\" is in vc_dispmanx_update_submit.\n             vchi_service_release(dispmanx_client.notify_handle[0]);\n             if (dispmanx_client.update_callback ) {\n-               vcos_assert( dispmanx_client.pending_update_handle == handle);\n                dispmanx_client.update_callback(handle, dispmanx_client.update_callback_param);\n             }\n          } else {\n-- \n2.8.1\n\n"
  },
  {
    "path": "package/rpi-userland/0003-Disable-Werror-everywhere.patch",
    "content": "From cc9ac86bcff79697d354cc51d3a984fd0f362868 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Thu, 22 Sep 2016 22:59:11 +0200\nSubject: [PATCH] Disable Werror everywhere\n\nWith gcc-5.1, some constructs that were previously accepted (but wrong)\nare now considered warnings, and thus -Werror makes them errors.\n\nDitch -Werror altoghether.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\n[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n\n[Rebased for rpi-userland-8f0abfb07b96e7ee85f46e59d895014ec5e25f5e]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n\n[Rebased for rpi-userland-5070cb7fc150fc98f1ed64a7739c3356970d9f76]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n host_applications/android/apps/vidtex/CMakeLists.txt | 2 +-\n host_applications/linux/apps/gencmd/CMakeLists.txt   | 2 +-\n host_applications/linux/apps/raspicam/CMakeLists.txt | 2 +-\n host_applications/linux/apps/smem/CMakeLists.txt     | 2 +-\n host_applications/linux/libs/bcm_host/CMakeLists.txt | 2 +-\n host_applications/linux/libs/sm/CMakeLists.txt       | 2 +-\n interface/mmal/CMakeLists.txt                        | 2 +-\n interface/vcos/CMakeLists.txt                        | 2 +-\n interface/vcos/pthreads/CMakeLists.txt               | 2 +-\n interface/vmcs_host/CMakeLists.txt                   | 2 +-\n 10 files changed, 10 insertions(+), 10 deletions(-)\n\ndiff --git a/host_applications/android/apps/vidtex/CMakeLists.txt b/host_applications/android/apps/vidtex/CMakeLists.txt\nindex 6d66d69..06a3192 100644\n--- a/host_applications/android/apps/vidtex/CMakeLists.txt\n+++ b/host_applications/android/apps/vidtex/CMakeLists.txt\n@@ -1,6 +1,6 @@\n cmake_minimum_required(VERSION 2.8)\n \n-SET(COMPILE_DEFINITIONS -Werror -Wall)\n+SET(COMPILE_DEFINITIONS -Wall)\n \n # Set --no-as-needed to stop the linker discarding mmal_vc_client\n # as it can't see that the constructor registers a load of functionality\ndiff --git a/host_applications/linux/apps/gencmd/CMakeLists.txt b/host_applications/linux/apps/gencmd/CMakeLists.txt\nindex f95d1a1..034bf20 100644\n--- a/host_applications/linux/apps/gencmd/CMakeLists.txt\n+++ b/host_applications/linux/apps/gencmd/CMakeLists.txt\n@@ -4,7 +4,7 @@ if (WIN32)\n    set(VCOS_PLATFORM win32)\n else ()\n    set(VCOS_PLATFORM pthreads)\n-   add_definitions(-Wall -Werror)\n+   add_definitions(-Wall )\n endif ()\n \n include_directories( ../../../.. \ndiff --git a/host_applications/linux/apps/raspicam/CMakeLists.txt b/host_applications/linux/apps/raspicam/CMakeLists.txt\nindex f7db21e..b94bdc3 100644\n--- a/host_applications/linux/apps/raspicam/CMakeLists.txt\n+++ b/host_applications/linux/apps/raspicam/CMakeLists.txt\n@@ -1,7 +1,7 @@\n \n # raspistill/raspivid/raspiyuv\n \n-SET(COMPILE_DEFINITIONS -Werror)\n+SET(COMPILE_DEFINITIONS )\n \n # Set --no-as-needed to stop the linker discarding mmal_vc_client\n # as it can't see that the constructor registers a load of functionality\ndiff --git a/host_applications/linux/apps/smem/CMakeLists.txt b/host_applications/linux/apps/smem/CMakeLists.txt\nindex 0fa8328..f0d1e77 100644\n--- a/host_applications/linux/apps/smem/CMakeLists.txt\n+++ b/host_applications/linux/apps/smem/CMakeLists.txt\n@@ -4,7 +4,7 @@ get_filename_component (VIDEOCORE_ROOT ../../../.. ABSOLUTE)\n include (${VIDEOCORE_ROOT}/makefiles/cmake/global_settings.cmake)\n \n if (NOT WIN32)\n-   add_definitions(-Wall -Werror)\n+   add_definitions(-Wall )\n endif ()\n \n include_directories (\ndiff --git a/host_applications/linux/libs/bcm_host/CMakeLists.txt b/host_applications/linux/libs/bcm_host/CMakeLists.txt\nindex 2154e53..c23779b 100644\n--- a/host_applications/linux/libs/bcm_host/CMakeLists.txt\n+++ b/host_applications/linux/libs/bcm_host/CMakeLists.txt\n@@ -3,7 +3,7 @@ if (WIN32)\n    set(VCOS_PLATFORM win32)\n else ()\n    set(VCOS_PLATFORM pthreads)\n-   add_definitions(-Wall -Werror)\n+   add_definitions(-Wall )\n endif ()\n \n # set this as we want all the source of vchostif to be available in libbcm_host\ndiff --git a/host_applications/linux/libs/sm/CMakeLists.txt b/host_applications/linux/libs/sm/CMakeLists.txt\nindex 5ce5aca..02aea7c 100644\n--- a/host_applications/linux/libs/sm/CMakeLists.txt\n+++ b/host_applications/linux/libs/sm/CMakeLists.txt\n@@ -3,7 +3,7 @@ if (WIN32)\n    set(VCOS_PLATFORM win32)\n else ()\n    set(VCOS_PLATFORM pthreads)\n-   add_definitions(-Wall -Werror)\n+   add_definitions(-Wall )\n endif ()\n \n include_directories( ../../../..\ndiff --git a/interface/mmal/CMakeLists.txt b/interface/mmal/CMakeLists.txt\nindex 46f149d..06273dc 100644\n--- a/interface/mmal/CMakeLists.txt\n+++ b/interface/mmal/CMakeLists.txt\n@@ -3,7 +3,7 @@ if (NOT DEFINED LIBRARY_TYPE)\n set(LIBRARY_TYPE SHARED)\n endif (NOT DEFINED LIBRARY_TYPE)\n \n-add_definitions(-Wall -Werror)\n+add_definitions(-Wall )\n \n add_library(mmal SHARED util/mmal_util.c)\n \ndiff --git a/interface/vcos/CMakeLists.txt b/interface/vcos/CMakeLists.txt\nindex 23a8d72..988b104 100644\n--- a/interface/vcos/CMakeLists.txt\n+++ b/interface/vcos/CMakeLists.txt\n@@ -43,7 +43,7 @@ foreach (header ${HEADERS})\n endforeach ()\n \n if (CMAKE_COMPILER_IS_GNUCC)\n-   add_definitions (-ggdb -Werror -Wall)\n+   add_definitions (-ggdb  -Wall)\n endif ()\n \n if (CMAKE_COMPILER_2005)\ndiff --git a/interface/vcos/pthreads/CMakeLists.txt b/interface/vcos/pthreads/CMakeLists.txt\nindex 1d81ca3..b35cd8e 100644\n--- a/interface/vcos/pthreads/CMakeLists.txt\n+++ b/interface/vcos/pthreads/CMakeLists.txt\n@@ -1,7 +1,7 @@\n # MSVC5 does not fully support C99, enabling declaration-after-statement\n # warnings allows a common MSVC5 build error to be detected in Linux builds.\n if (CMAKE_COMPILER_IS_GNUCC)\n-   set (CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -Wall -Werror -Wdeclaration-after-statement\")\n+   set (CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -Wall  -Wdeclaration-after-statement\")\n    add_definitions (-D_GNU_SOURCE)\n endif ()\n \ndiff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt\nindex a157db1..dc384ca 100755\n--- a/interface/vmcs_host/CMakeLists.txt\n+++ b/interface/vmcs_host/CMakeLists.txt\n@@ -2,7 +2,7 @@\n # interface/vmcs_host\n \n # not working in release build\n-# add_definitions(-Werror)\n+# add_definitions()\n \n # vc_vchi_gencmd.c has a type-punning problem in vc_gencmd_read_response\n add_definitions(-fno-strict-aliasing)\n-- \n2.23.0\n\n"
  },
  {
    "path": "package/rpi-userland/0004-host-applications-disable-missing-applications.patch",
    "content": "From c8d2c332da2a03ed80d62628bbf54187a66f49b6 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Fri, 24 Jul 2015 20:20:33 +0200\nSubject: [PATCH] host-applications: disable missing applications\n\nThose applications are missing from the public rpi-firmware package, so\ndo not even try to build them.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\n[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n host_applications/linux/CMakeLists.txt | 3 ---\n 1 file changed, 3 deletions(-)\n\ndiff --git a/host_applications/linux/CMakeLists.txt b/host_applications/linux/CMakeLists.txt\nindex 5a648e7..83bb66e 100644\n--- a/host_applications/linux/CMakeLists.txt\n+++ b/host_applications/linux/CMakeLists.txt\n@@ -12,10 +12,7 @@ add_subdirectory(apps/dtoverlay)\n add_subdirectory(apps/dtmerge)\n \n if(ALL_APPS)\n- add_subdirectory(apps/vcdbg)\n- add_subdirectory(libs/elftoolchain)\n  # add_subdirectory(apps/smct)\n- add_subdirectory(apps/edid_parser)\n  add_subdirectory(apps/hello_pi)\n endif()\n \n-- \n2.8.1\n\n"
  },
  {
    "path": "package/rpi-userland/0005-dtmerge-add-missing-include-for-va_list.patch",
    "content": "From 1ffed0e8601afb7e65545bd545772edd0fccc404 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Sat, 23 Apr 2016 17:48:13 +0200\nSubject: [PATCH] dtmerge: add missing include for va_list\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes compile error with uclibc-1.0.14:\n\n  In file included from rpi-userland-52eca998aa43f278314579dba4798a3fe1da46c3/host_applications/linux/apps/dtmerge/dtmerge.c:32:0:\n  rpi-userland-52eca998aa43f278314579dba4798a3fe1da46c3/helpers/dtoverlay/dtoverlay.h:65:54: error: unknown type name ‘va_list’\n                                     const char *fmt, va_list args);\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n host_applications/linux/apps/dtmerge/dtmerge.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/host_applications/linux/apps/dtmerge/dtmerge.c b/host_applications/linux/apps/dtmerge/dtmerge.c\nindex 9243da1..2ac8d39 100644\n--- a/host_applications/linux/apps/dtmerge/dtmerge.c\n+++ b/host_applications/linux/apps/dtmerge/dtmerge.c\n@@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n #include <stdio.h>\n #include <stdlib.h>\n #include <libfdt.h>\n+#include <stdarg.h>\n \n #include \"dtoverlay.h\"\n \n-- \n2.8.1\n\n"
  },
  {
    "path": "package/rpi-userland/Config.in",
    "content": "config BR2_PACKAGE_RPI_USERLAND\n\tbool \"rpi-userland\"\n\tdepends on BR2_arm\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_HAS_LIBEGL\n\tselect BR2_PACKAGE_HAS_LIBGLES\n\tselect BR2_PACKAGE_HAS_LIBOPENVG\n\tselect BR2_PACKAGE_HAS_LIBOPENMAX\n\thelp\n\t  Raspberry Pi Userland contains the necessary library to use\n\t  the VideoCore driver.\n\n\t  Includes source for the ARM side code to interface to: EGL,\n\t  mmal, GLESv2, vcos, openmaxil, vchiq_arm, bcm_host, WFC,\n\t  OpenVG.\n\n\t  https://github.com/raspberrypi/userland/\n\nif BR2_PACKAGE_RPI_USERLAND\n\nconfig BR2_PACKAGE_PROVIDES_LIBEGL\n\tdefault \"rpi-userland\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBGLES\n\tdefault \"rpi-userland\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBOPENVG\n\tdefault \"rpi-userland\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBOPENMAX\n\tdefault \"rpi-userland\"\n\nconfig BR2_PACKAGE_RPI_USERLAND_HELLO\n\tbool \"hello_pi examples\"\n\thelp\n\t  Install the hello-pi examples to test the HW (GPU, camera...)\n\nendif\n\ncomment \"rpi-userland needs a toolchain w/ C++, threads, dynamic library\"\n\tdepends on BR2_arm\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/rpi-userland/rpi-userland.hash",
    "content": "# Locally computed\nsha256  ab8a5b27c34cf1b97de87b895448a6355229f73b679866b47c51a723273cc8ae  rpi-userland-c4fd1b8986c6d6d4ae5cd51e65a8bbeb495dfa4e.tar.gz\nsha256  bee6f1249175683d8610651706e1aa7dffcbfd3f9c4c05bc1e5ab34f313c2db5  LICENCE\n"
  },
  {
    "path": "package/rpi-userland/rpi-userland.mk",
    "content": "################################################################################\n#\n# rpi-userland\n#\n################################################################################\n\nRPI_USERLAND_VERSION = c4fd1b8986c6d6d4ae5cd51e65a8bbeb495dfa4e\nRPI_USERLAND_SITE = $(call github,raspberrypi,userland,$(RPI_USERLAND_VERSION))\nRPI_USERLAND_LICENSE = BSD-3-Clause\nRPI_USERLAND_LICENSE_FILES = LICENCE\nRPI_USERLAND_INSTALL_STAGING = YES\nRPI_USERLAND_CONF_OPTS = -DVMCS_INSTALL_PREFIX=/usr\n\nRPI_USERLAND_PROVIDES = libegl libgles libopenmax libopenvg\n\ndefine RPI_USERLAND_INSTALL_LIBFDT\n\t$(INSTALL) -m 0644 -D \\\n\t\t$(@D)/build/lib/libfdt.so \\\n\t\t$(TARGET_DIR)/usr/lib/libfdt.so\nendef\nRPI_USERLAND_POST_INSTALL_TARGET_HOOKS += RPI_USERLAND_INSTALL_LIBFDT\n\nifeq ($(BR2_PACKAGE_RPI_USERLAND_HELLO),y)\n\nRPI_USERLAND_CONF_OPTS += -DALL_APPS=ON\n\ndefine RPI_USERLAND_EXTRA_LIBS_TARGET\n\t$(INSTALL) -m 0644 -D \\\n\t\t$(@D)/build/lib/libilclient.so \\\n\t\t$(TARGET_DIR)/usr/lib/libilclient.so\nendef\nRPI_USERLAND_POST_INSTALL_TARGET_HOOKS += RPI_USERLAND_EXTRA_LIBS_TARGET\n\ndefine RPI_USERLAND_EXTRA_LIBS_STAGING\n\t$(INSTALL) -m 0644 -D \\\n\t\t$(@D)/build/lib/libilclient.so \\\n\t\t$(STAGING_DIR)/usr/lib/libilclient.so\nendef\nRPI_USERLAND_POST_INSTALL_STAGING_HOOKS += RPI_USERLAND_EXTRA_LIBS_STAGING\n\nelse\n\nRPI_USERLAND_CONF_OPTS += -DALL_APPS=OFF\n\nendif # BR2_PACKAGE_RPI_USERLAND_HELLO\n\ndefine RPI_USERLAND_POST_TARGET_CLEANUP\n\trm -Rf $(TARGET_DIR)/usr/src\nendef\nRPI_USERLAND_POST_INSTALL_TARGET_HOOKS += RPI_USERLAND_POST_TARGET_CLEANUP\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/rpi-wifi-firmware/Config.in",
    "content": "config BR2_PACKAGE_RPI_WIFI_FIRMWARE\n\tbool \"rpi-wifi-firmware\"\n\tdepends on BR2_arm || BR2_aarch64\n\tdepends on !BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX\n\thelp\n\t  Raspberry Pi 3 and Zero W Broadcom BCM43430 wifi module\n\t  NVRAM data. Raspberry Pi 3 Model B+ Broadcom BCM43455\n\t  wifi module NVRAM data.\n\n\t  https://github.com/LibreELEC/brcmfmac_sdio-firmware-rpi\n\ncomment \"rpi-wifi-firmware conflicts with linux-firmware Broadcom BRCM bcm43xx\"\n\tdepends on BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX\n"
  },
  {
    "path": "package/rpi-wifi-firmware/rpi-wifi-firmware.hash",
    "content": "# Locally calculated\nsha256  e51b717c2a60ca29fcdd8e04e07c00996226cb48fa56a8ad1934b5f4ddee2e3d  rpi-wifi-firmware-ea9963f3f77b4bb6cd280577eb115152bdd67e8d.tar.gz\nsha256  b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d  LICENCE.broadcom_bcm43xx\n"
  },
  {
    "path": "package/rpi-wifi-firmware/rpi-wifi-firmware.mk",
    "content": "################################################################################\n#\n# rpi-wifi-firmware\n#\n################################################################################\n\nRPI_WIFI_FIRMWARE_VERSION = ea9963f3f77b4bb6cd280577eb115152bdd67e8d\nRPI_WIFI_FIRMWARE_SITE = $(call github,LibreELEC,brcmfmac_sdio-firmware-rpi,$(RPI_WIFI_FIRMWARE_VERSION))\nRPI_WIFI_FIRMWARE_LICENSE = PROPRIETARY\nRPI_WIFI_FIRMWARE_LICENSE_FILES = LICENCE.broadcom_bcm43xx\n\ndefine RPI_WIFI_FIRMWARE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm\n\t$(INSTALL) -m 0644 $(@D)/firmware/brcm/brcmfmac* $(TARGET_DIR)/lib/firmware/brcm\n\tln -sf ../cypress/cyfmac43430-sdio.bin $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43430-sdio.bin\n\tln -sf ../cypress/cyfmac43430-sdio.clm_blob $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43430-sdio.clm_blob\n\tln -sf brcmfmac43430-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt\n\tln -sf brcmfmac43430-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.txt\n\tln -sf ../cypress/cyfmac43455-sdio.bin $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.bin\n\tln -sf ../cypress/cyfmac43455-sdio.clm_blob $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob\n\tln -sf brcmfmac43455-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.txt\n\tln -sf brcmfmac43455-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt\n\tln -sf brcmfmac43455-sdio.txt $(TARGET_DIR)/lib/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt\n\t$(INSTALL) -d $(TARGET_DIR)/lib/firmware/cypress\n\t$(INSTALL) -m 0644 $(@D)/firmware/cypress/cyfmac* $(TARGET_DIR)/lib/firmware/cypress\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rpm/Config.in",
    "content": "comment \"rpm needs a toolchain w/ dynamic library, threads and lua >= 5.3\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \\\n\t\t|| !BR2_PACKAGE_LUA || BR2_PACKAGE_LUA_5_1\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tdepends on BR2_USE_MMU\n\nconfig BR2_PACKAGE_RPM\n\tbool \"rpm\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tdepends on BR2_PACKAGE_LUA && !BR2_PACKAGE_LUA_5_1\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_FILE\n\tselect BR2_PACKAGE_POPT\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  The RPM Package Manager (RPM).\n\n\t  http://www.rpm.org/\n\nif BR2_PACKAGE_RPM\n\ncomment \"rpm2archive support needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_RPM_RPM2ARCHIVE\n\tbool \"rpm2archive command\"\n\tdefault y\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_LIBARCHIVE\n\thelp\n\t  Enable rpm2archive\n\nendif\n"
  },
  {
    "path": "package/rpm/rpm.hash",
    "content": "# From https://rpm.org/wiki/Releases/4.17.0.html\nsha256  2e0d220b24749b17810ed181ac1ed005a56bbb6bc8ac429c21f314068dc65e6a  rpm-4.17.0.tar.bz2\n\n# Hash for license file\nsha256  171d94d9f1641316bff7f157a903237dc69cdb5fca405fed8c832c76ed8370f9  COPYING\n"
  },
  {
    "path": "package/rpm/rpm.mk",
    "content": "################################################################################\n#\n# rpm\n#\n################################################################################\n\nRPM_VERSION_MAJOR = 4.17\nRPM_VERSION = $(RPM_VERSION_MAJOR).0\nRPM_SOURCE = rpm-$(RPM_VERSION).tar.bz2\nRPM_SITE = http://ftp.rpm.org/releases/rpm-$(RPM_VERSION_MAJOR).x\nRPM_DEPENDENCIES = \\\n\thost-pkgconf \\\n\t$(if $(BR2_PACKAGE_BZIP2),bzip2) \\\n\t$(if $(BR2_PACKAGE_ELFUTILS),elfutils) \\\n\tfile \\\n\tlua \\\n\tpopt \\\n\t$(if $(BR2_PACKAGE_XZ),xz) \\\n\tzlib \\\n\t$(TARGET_NLS_DEPENDENCIES)\nRPM_LICENSE = GPL-2.0 or LGPL-2.0 (library only)\nRPM_LICENSE_FILES = COPYING\nRPM_CPE_ID_VENDOR = rpm\nRPM_SELINUX_MODULES = rpm\n\n# Don't set --{dis,en}-openmp as upstream wants to abort the build if\n# --enable-openmp is provided and OpenMP is < 4.5:\n# https://github.com/rpm-software-management/rpm/pull/1433\nRPM_CONF_OPTS = \\\n\t--disable-python \\\n\t--disable-rpath \\\n\t--with-gnu-ld\n\nifeq ($(BR2_PACKAGE_ACL),y)\nRPM_DEPENDENCIES += acl\nRPM_CONF_OPTS += --with-acl\nelse\nRPM_CONF_OPTS += --without-acl\nendif\n\nifeq ($(BR2_PACKAGE_AUDIT),y)\nRPM_DEPENDENCIES += audit\nRPM_CONF_OPTS += --with-audit\nelse\nRPM_CONF_OPTS += --without-audit\nendif\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nRPM_DEPENDENCIES += dbus\nRPM_CONF_OPTS += --enable-plugins\nelse\nRPM_CONF_OPTS += --disable-plugins\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nRPM_DEPENDENCIES += libcap\nRPM_CONF_OPTS += --with-cap\nelse\nRPM_CONF_OPTS += --without-cap\nendif\n\nifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nRPM_DEPENDENCIES += libgcrypt\nRPM_CONF_OPTS += --with-crypto=libgcrypt\nelse\nRPM_DEPENDENCIES += openssl\nRPM_CONF_OPTS += --with-crypto=openssl\nendif\n\nifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y)\nRPM_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr\nelse\nRPM_CONF_OPTS += --without-libintl-prefix\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nRPM_DEPENDENCIES += libselinux\nRPM_CONF_OPTS += --with-selinux\nelse\nRPM_CONF_OPTS += --without-selinux\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE),y)\nRPM_DEPENDENCIES += sqlite\nRPM_CONF_OPTS += --enable-sqlite\nelse\nRPM_CONF_OPTS += --disable-sqlite\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nRPM_DEPENDENCIES += zstd\nRPM_CONF_OPTS += --enable-zstd\nelse\nRPM_CONF_OPTS += --disable-zstd\nendif\n\nifeq ($(BR2_PACKAGE_RPM_RPM2ARCHIVE),y)\nRPM_DEPENDENCIES += libarchive\nRPM_CONF_OPTS += --with-archive\nelse\nRPM_CONF_OPTS += --without-archive\nendif\n\n# ac_cv_prog_cc_c99: RPM uses non-standard GCC extensions (ex. `asm`).\nRPM_CONF_ENV = \\\n\tac_cv_prog_cc_c99='-std=gnu99' \\\n\tCFLAGS=\"$(TARGET_CFLAGS) $(RPM_CFLAGS)\" \\\n\tLIBS=$(TARGET_NLS_LIBS)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rrdtool/Config.in",
    "content": "config BR2_PACKAGE_RRDTOOL\n\tbool \"rrdtool\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  RRDtool is the OpenSource industry standard, high performance\n\t  data logging and graphing system for time series data.\n\n\t  http://oss.oetiker.ch/rrdtool/\n\nif BR2_PACKAGE_RRDTOOL\n\nconfig BR2_PACKAGE_RRDTOOL_RRDGRAPH\n\tbool \"rrd_graph\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # pango -> harfbuzz\n\tdepends on BR2_INSTALL_LIBSTDCPP # freetype support from pango\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_CAIRO_PDF\n\tselect BR2_PACKAGE_CAIRO_PNG\n\tselect BR2_PACKAGE_CAIRO_PS\n\tselect BR2_PACKAGE_CAIRO_SVG\n\tselect BR2_PACKAGE_PANGO\n\thelp\n\t  This enables the graphing capabilities ('rrdgraph').\n\t  Without this it will only act as a database backend.\n\ncomment \"rrd_graph support needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\nendif\n\ncomment \"rrdtool needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/rrdtool/rrdtool.hash",
    "content": "# Locally calculated\nsha256 a199faeb7eff7cafc46fac253e682d833d08932f3db93a550a4a5af180ca58db rrdtool-1.7.2.tar.gz\nsha256 ab6b4646e9e01f1ec287c29c351c886c4cb7f945c11efc0a1be9f6e5e6cc5320 COPYRIGHT\nsha256 d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388 LICENSE\n"
  },
  {
    "path": "package/rrdtool/rrdtool.mk",
    "content": "################################################################################\n#\n# rrdtool\n#\n################################################################################\n\nRRDTOOL_VERSION = 1.7.2\nRRDTOOL_SITE = http://oss.oetiker.ch/rrdtool/pub\nRRDTOOL_LICENSE = GPL-2.0+ with FLOSS license exceptions as explained in COPYRIGHT\nRRDTOOL_LICENSE_FILES = COPYRIGHT LICENSE\nRRDTOOL_DEPENDENCIES = host-pkgconf libglib2 $(TARGET_NLS_DEPENDENCIES)\n# autoreconf needed to avoid link failure due to missing -lintl,\n# gettextize needed as a consequence of autoreconf\nRRDTOOL_AUTORECONF = YES\nRRDTOOL_GETTEXTIZE = YES\nRRDTOOL_INSTALL_STAGING = YES\nRRDTOOL_CONF_OPTS = \\\n\t--disable-examples \\\n\t--disable-libdbi \\\n\t--disable-librados \\\n\t--disable-libwrap \\\n\t--disable-lua \\\n\t--disable-perl \\\n\t--disable-python \\\n\t--disable-ruby \\\n\t--disable-tcl\n\nifeq ($(BR2_PACKAGE_RRDTOOL_RRDGRAPH),y)\nRRDTOOL_DEPENDENCIES += cairo pango\nelse\nRRDTOOL_CONF_OPTS += --disable-rrd_graph\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nRRDTOOL_DEPENDENCIES += libxml2\nelse\nRRDTOOL_CONF_OPTS += --disable-rrd_restore\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rs485conf/Config.in",
    "content": "config BR2_PACKAGE_RS485CONF\n\tbool \"rs485conf\"\n\thelp\n\t  rs485conf is intended to be used on embedded boards with RS485\n\t  interface. It can show as well as modify RS485 configuration\n\t  parameters of TTY device with easy to use command line\n\t  options.\n\n\t  https://github.com/mniestroj/rs485conf\n"
  },
  {
    "path": "package/rs485conf/rs485conf.hash",
    "content": "# Locally computed\nsha256 f163f81cd50aae6fa39cbb4f6408a3699da7a87a56649c4b96d6f168c9be6a7d rs485conf-5c8d00cf70950fab3454549b81dea843d844492a.tar.gz\nsha256 3e5c80d50879a9572ac9e463215a942490a67b56dfd8a3e27004d7c62e0493c8 LICENSE\n"
  },
  {
    "path": "package/rs485conf/rs485conf.mk",
    "content": "################################################################################\n#\n# rs485conf\n#\n################################################################################\n\nRS485CONF_VERSION = 5c8d00cf70950fab3454549b81dea843d844492a\nRS485CONF_SITE = $(call github,mniestroj,rs485conf,$(RS485CONF_VERSION))\nRS485CONF_LICENSE = BSD-3-Clause\nRS485CONF_LICENSE_FILES = LICENSE\n\ndefine RS485CONF_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine RS485CONF_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) PREFIX=\"$(TARGET_DIR)/usr\" -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rsh-redone/Config.in",
    "content": "config BR2_PACKAGE_RSH_REDONE\n\tbool \"rsh-redone\"\n\thelp\n\t  Rsh-redone is a reimplementation of the remote shell clients\n\t  and servers. It is written from the ground up to avoid the\n\t  bugs found in the standard clients and servers. It also\n\t  fully supports IPv6.\n\n\t  http://packages.debian.org/source/sid/rsh-redone\n\nif BR2_PACKAGE_RSH_REDONE\n\nconfig BR2_PACKAGE_RSH_REDONE_RLOGIN\n\tbool \"rlogin\"\n\nconfig BR2_PACKAGE_RSH_REDONE_RLOGIND\n\tbool \"rlogind\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_ENABLE_LOCALE && BR2_USE_WCHAR\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\tdepends on BR2_USE_MMU # linux-pam\n\tselect BR2_PACKAGE_LINUX_PAM\n\ncomment \"rlogind needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library\"\n\tdepends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \\\n\t\t|| BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_RSH_REDONE_RSH\n\tbool \"rsh\"\n\nconfig BR2_PACKAGE_RSH_REDONE_RSHD\n\tbool \"rshd\"\n\tdepends on BR2_ENABLE_LOCALE && BR2_USE_WCHAR\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU # linux-pam\n\tselect BR2_PACKAGE_LINUX_PAM\n\ncomment \"rshd needs a toolchain w/ wchar, locale, dynamic library\"\n\tdepends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \\\n\t\t|| BR2_STATIC_LIBS\n\nendif\n"
  },
  {
    "path": "package/rsh-redone/rsh-redone.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/r/rsh-redone/rsh-redone_85-2.dsc\nsha256  55ac8ee2acacbc3490f073e3922c0cde46ffe4ea3c593e05c48fed4c1e1a8811  rsh-redone_85.orig.tar.gz\n# Locally computed\nsha256  92c3a6a0efe5347c282081c6f67aebfec0f33b880c9efb87eb5232dcdd748369  rsh.c\n"
  },
  {
    "path": "package/rsh-redone/rsh-redone.mk",
    "content": "################################################################################\n#\n# rsh-redone\n#\n################################################################################\n\nRSH_REDONE_VERSION = 85\nRSH_REDONE_SOURCE = rsh-redone_$(RSH_REDONE_VERSION).orig.tar.gz\nRSH_REDONE_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/r/rsh-redone\nRSH_REDONE_LICENSE = GPL-2.0\nRSH_REDONE_LICENSE_FILES = rsh.c\n\nRSH_REDONE_BINS-y =\nRSH_REDONE_BINS-$(BR2_PACKAGE_RSH_REDONE_RLOGIN) += rlogin\nRSH_REDONE_BINS-$(BR2_PACKAGE_RSH_REDONE_RSH) += rsh\nRSH_REDONE_SBINS-y =\nRSH_REDONE_SBINS-$(BR2_PACKAGE_RSH_REDONE_RLOGIND) += in.rlogind\nRSH_REDONE_SBINS-$(BR2_PACKAGE_RSH_REDONE_RSHD) += in.rshd\n\nRSH_REDONE_MAKE_FLAGS = \\\n\tBIN=\"$(RSH_REDONE_BINS-y)\" SBIN=\"$(RSH_REDONE_SBINS-y)\"\n\nifneq ($(BR2_PACKAGE_RSH_REDONE_RSHD)$(BR2_PACKAGE_RSH_REDONE_RLOGIND),)\nRSH_REDONE_DEPENDENCIES += linux-pam\nendif\n\ndefine RSH_REDONE_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(RSH_REDONE_MAKE_FLAGS)\nendef\n\ndefine RSH_REDONE_INSTALL_TARGET_CMDS\n\t$(if $(RSH_REDONE_BINS-y)$(RSH_REDONE_SBINS-y),\n\t\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(RSH_REDONE_MAKE_FLAGS) DESTDIR=$(TARGET_DIR) \\\n\t\t\t$(if $(RSH_REDONE_BINS-y),install-bin) \\\n\t\t\t$(if $(RSH_REDONE_SBINS-y),install-sbin))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rsync/0001-rsync-ssl-Verify-the-hostname-in-the-certificate-when-using-openssl.patch",
    "content": "From c3f7414c450faaf6a8281cc4a4403529aeb7d859 Mon Sep 17 00:00:00 2001\nFrom: Matt McCutchen <matt@mattmccutchen.net>\nDate: Wed, 26 Aug 2020 12:16:08 -0400\nSubject: [PATCH] rsync-ssl: Verify the hostname in the certificate when using\n openssl.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://git.samba.org/?p=rsync.git;a=commitdiff;h=c3f7414c450faaf6a8281cc4a4403529aeb7d859]\n---\n rsync-ssl | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/rsync-ssl b/rsync-ssl\nindex 8101975a..46701af1 100755\n--- a/rsync-ssl\n+++ b/rsync-ssl\n@@ -129,7 +129,7 @@ function rsync_ssl_helper {\n     fi\n \n     if [[ $RSYNC_SSL_TYPE == openssl ]]; then\n-\texec $RSYNC_SSL_OPENSSL s_client $caopt $certopt -quiet -verify_quiet -servername $hostname -connect $hostname:$port\n+\texec $RSYNC_SSL_OPENSSL s_client $caopt $certopt -quiet -verify_quiet -servername $hostname -verify_hostname $hostname -connect $hostname:$port\n     elif [[ $RSYNC_SSL_TYPE == gnutls ]]; then\n \texec $RSYNC_SSL_GNUTLS --logfile=/dev/null $gnutls_cert_opt $gnutls_opts $hostname:$port\n     else\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/rsync/Config.in",
    "content": "config BR2_PACKAGE_RSYNC\n\tbool \"rsync\"\n\t# fork()\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_POPT\n\thelp\n\t  File transfer program to keep remote files in sync.\n\n\t  http://rsync.samba.org/\n"
  },
  {
    "path": "package/rsync/rsync.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://download.samba.org/pub/rsync/src/rsync-3.2.3.tar.gz.asc\nsha256  becc3c504ceea499f4167a260040ccf4d9f2ef9499ad5683c179a697146ce50e  rsync-3.2.3.tar.gz\n# Locally calculated\nsha256  0d33aa97d302cb9df27f99dfa28d58001c2479a02317956f1a7a890f3937a976  COPYING\n"
  },
  {
    "path": "package/rsync/rsync.mk",
    "content": "################################################################################\n#\n# rsync\n#\n################################################################################\n\nRSYNC_VERSION = 3.2.3\nRSYNC_SITE = http://rsync.samba.org/ftp/rsync/src\nRSYNC_LICENSE = GPL-3.0+ with exceptions\nRSYNC_LICENSE_FILES = COPYING\nRSYNC_CPE_ID_VENDOR = samba\nRSYNC_SELINUX_MODULES = rsync\nRSYNC_DEPENDENCIES = zlib popt\nRSYNC_CONF_OPTS = \\\n\t--with-included-zlib=no \\\n\t--with-included-popt=no \\\n\t--disable-simd \\\n\t--disable-openssl \\\n\t--disable-xxhash \\\n\t--disable-zstd \\\n\t--disable-lz4 \\\n\t--disable-asm\n\n# 0001-rsync-ssl-Verify-the-hostname-in-the-certificate-when-using-openssl.patch\nRSYNC_IGNORE_CVES += CVE-2020-14387\n\nifeq ($(BR2_PACKAGE_ACL),y)\nRSYNC_DEPENDENCIES += acl\nelse\nRSYNC_CONF_OPTS += --disable-acl-support\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rsyslog/Config.in",
    "content": "config BR2_PACKAGE_RSYSLOG\n\tbool \"rsyslog\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # modules\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # GLOB_BRACE\n\t# Propagate the exact same dependency from libfastjson,\n\t# even though rsyslog already depends on threads for itself:\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_LIBESTR\n\tselect BR2_PACKAGE_LIBLOGGING\n\tselect BR2_PACKAGE_LIBFASTJSON\n\thelp\n\t  Rsyslog is a powerful and flexible syslog implementation\n\n\t  http://www.rsyslog.com\n\ncomment \"rsyslog needs a uClibc or glibc toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \\\n\t\t|| BR2_TOOLCHAIN_USES_MUSL\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/rsyslog/S01rsyslogd",
    "content": "#!/bin/sh\n\nDAEMON=\"rsyslogd\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nRSYSLOGD_ARGS=\"\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \\\n\t\t-- $RSYSLOGD_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature (does not\n\t\t# reconfigure/restart on SIGHUP, just closes all open files).\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/rsyslog/rsyslog.hash",
    "content": "# From http://www.rsyslog.com/downloads/download-v8-stable/\nsha256  19b232f765c4ba7a35b91ef1f5f9af775f6ff78ef56bb7737a2ce79ccbb32b98  rsyslog-8.2010.0.tar.gz\n\n# Locally calculated\nsha256  054b3a047d9232376a46b87356b19b0c0c2924cb5e6911ab96a01fc4b515f083  COPYING\nsha256  8743ad560dea1229d4f46cd603e10874db41a27f3c74f64e958ef123f3943fab  COPYING.ASL20\nsha256  4038442ca5bde8ffd243cfc235cb4455e7d618d47558ea3d8284733f71d904ed  COPYING.LESSER\n"
  },
  {
    "path": "package/rsyslog/rsyslog.mk",
    "content": "################################################################################\n#\n# rsyslog\n#\n################################################################################\n\nRSYSLOG_VERSION = 8.2010.0\nRSYSLOG_SITE = http://rsyslog.com/files/download/rsyslog\nRSYSLOG_LICENSE = GPL-3.0, LGPL-3.0, Apache-2.0\nRSYSLOG_LICENSE_FILES = COPYING COPYING.LESSER COPYING.ASL20\nRSYSLOG_CPE_ID_VENDOR = rsyslog\n# rsyslog uses weak permissions for generating log files.\n# Ignoring this CVE as Buildroot normally doesn't have local users and a build\n# could customize the rsyslog.conf to be more restrictive ($FileCreateMode 0640)\nRSYSLOG_IGNORE_CVES += CVE-2015-3243\nRSYSLOG_DEPENDENCIES = zlib libestr liblogging libfastjson host-pkgconf\nRSYSLOG_CONF_ENV = ac_cv_prog_cc_c99='-std=c99'\nRSYSLOG_PLUGINS = imdiag imfile impstats imptcp \\\n\tmmanon mmaudit mmfields mmjsonparse mmpstrucdata mmsequence mmutf8fix \\\n\tmail omprog omruleset omstdout omuxsock \\\n\tpmaixforwardedfrom pmciscoios pmcisconames pmlastmsg pmsnare\n\nifeq ($(BR2_PACKAGE_LIBRELP),y)\nRSYSLOG_DEPENDENCIES += librelp\nRSYSLOG_PLUGINS += relp\nendif\n\nRSYSLOG_CONF_OPTS = --disable-generate-man-pages \\\n\t$(foreach x,$(call qstrip,$(RSYSLOG_PLUGINS)),--enable-$(x))\n\n# Disable items requiring libcurl\nRSYSLOG_CONF_OPTS += --disable-elasticsearch \\\n\t--disable-clickhouse \\\n\t--disable-omhttp \\\n\t--disable-fmhttp \\\n\t--disable-imdocker \\\n\t--disable-omhttpfs \\\n\t--disable-mmkubernetes\n\nifeq ($(BR2_PACKAGE_CIVETWEB_LIB),y)\nRSYSLOG_DEPENDENCIES += civetweb\nRSYSLOG_CONF_OPTS += --enable-imhttp\nelse\nRSYSLOG_CONF_OPTS += --disable-imhttp\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nRSYSLOG_DEPENDENCIES += gnutls\nRSYSLOG_CONF_OPTS += --enable-gnutls\nelse\nRSYSLOG_CONF_OPTS += --disable-gnutls\nendif\n\nifeq ($(BR2_PACKAGE_LIBEE),y)\nRSYSLOG_DEPENDENCIES += libee\nendif\n\nifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nRSYSLOG_DEPENDENCIES += libgcrypt\nRSYSLOG_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config\nRSYSLOG_CONF_OPTS += --enable-libgcrypt\nelse\nRSYSLOG_CONF_OPTS += --disable-libgcrypt\nendif\n\nifeq ($(BR2_PACKAGE_LIBPCAP),y)\nRSYSLOG_DEPENDENCIES += libpcap\nRSYSLOG_CONF_OPTS += --enable-impcap\nelse\nRSYSLOG_CONF_OPTS += --disable-impcap\nendif\n\nifeq ($(BR2_PACKAGE_MYSQL),y)\nRSYSLOG_DEPENDENCIES += mysql\nRSYSLOG_CONF_OPTS += --enable-mysql\nRSYSLOG_CONF_ENV += ac_cv_prog_MYSQL_CONFIG=$(STAGING_DIR)/usr/bin/mysql_config\nelse\nRSYSLOG_CONF_OPTS += --disable-mysql\nendif\n\nifeq ($(BR2_PACKAGE_POSTGRESQL),y)\nRSYSLOG_DEPENDENCIES += postgresql\nRSYSLOG_CONF_OPTS += --enable-pgsql\nRSYSLOG_CONF_ENV += ac_cv_prog_PG_CONFIG=$(STAGING_DIR)/usr/bin/pg_config\nelse\nRSYSLOG_CONF_OPTS += --disable-pgsql\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)\nRSYSLOG_DEPENDENCIES += util-linux\nRSYSLOG_CONF_OPTS += --enable-uuid\nelse\nRSYSLOG_CONF_OPTS += --disable-uuid\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nRSYSLOG_CONF_OPTS += \\\n\t--enable-imjournal \\\n\t--enable-omjournal \\\n\t--with-systemdsystemunitdir=/usr/lib/systemd/system\nRSYSLOG_DEPENDENCIES += systemd\nelse\nRSYSLOG_CONF_OPTS += \\\n\t--disable-imjournal \\\n\t--disable-omjournal\nendif\n\ndefine RSYSLOG_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -m 0755 -D package/rsyslog/rsyslog.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/rsyslog.service\nendef\n\ndefine RSYSLOG_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/rsyslog/S01rsyslogd \\\n\t\t$(TARGET_DIR)/etc/init.d/S01rsyslogd\nendef\n\ndefine RSYSLOG_INSTALL_CONF\n\t$(INSTALL) -m 0644 -D $(@D)/platform/redhat/rsyslog.conf \\\n\t\t$(TARGET_DIR)/etc/rsyslog.conf\n\tmkdir -p $(TARGET_DIR)/etc/rsyslog.d\nendef\n\nRSYSLOG_POST_INSTALL_TARGET_HOOKS += RSYSLOG_INSTALL_CONF\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rsyslog/rsyslog.service",
    "content": "[Unit]\nDescription=System Logging Service\nRequires=syslog.socket\nDocumentation=man:rsyslogd(8)\nDocumentation=https://www.rsyslog.com/doc/\n\n[Service]\nType=notify\nExecStart=/usr/sbin/rsyslogd -n -iNONE\nStandardOutput=null\nRestart=on-failure\n\n# Increase the default a bit in order to allow many simultaneous\n# files to be monitored, we might need a lot of fds.\nLimitNOFILE=16384\n\n[Install]\nWantedBy=multi-user.target\nAlias=syslog.service\n"
  },
  {
    "path": "package/rt-tests/0001-Fix-a-build-issue-with-uClibc-ng.patch",
    "content": "From 21e0c16a85c2e028a963703511d750d1751bc254 Mon Sep 17 00:00:00 2001\nFrom: Alexey Brodkin <abrodkin@synopsys.com>\nDate: Wed, 13 Jul 2016 23:46:38 +0200\nSubject: [PATCH] Fix a build issue with uClibc-ng\n\nuClibc-ng has clock_nanosleep() if built with UCLIBC_HAS_ADVANCED_REALTIME,\n  conflicting with emulation function.\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n[Romain:\n    rebase on v1.0\n    remove uClibc legacy support, uClibc-ng provide utmpx.h]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n src/cyclictest/cyclictest.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c\nindex 00e5f3d..92fa3dd 100644\n--- a/src/cyclictest/cyclictest.c\n+++ b/src/cyclictest/cyclictest.c\n@@ -58,7 +58,7 @@\n #define gettid() syscall(__NR_gettid)\n #define sigev_notify_thread_id _sigev_un._tid\n \n-#ifdef __UCLIBC__\n+#if defined(__UCLIBC__) && !defined(__UCLIBC_HAS_ADVANCED_REALTIME__)\n #define MAKE_PROCESS_CPUCLOCK(pid, clock) \\\n \t((~(clockid_t) (pid) << 3) | (clockid_t) (clock))\n #define CPUCLOCK_SCHED          2\n-- \n2.5.5\n\n"
  },
  {
    "path": "package/rt-tests/0002-Makefile-drop-explicit-undefine-PYLIB-for-compatibil.patch",
    "content": "From 84fea5d784e010f84c860b34e55ea2c855c17b3b Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <peter@korsgaard.com>\nDate: Wed, 12 May 2021 09:18:33 +0200\nSubject: [PATCH] Makefile: drop explicit undefine PYLIB for compatibility with\n make 3.81\n\nGNU make 3.81 does not like the explicit tab-indented undefine:\n\nMakefile:41: *** commands commence before first target.  Stop.\n\nDropping the indentation also doesn't work:\n\nMakefile:41: *** missing separator.  Stop.\n\nSo simply drop the undefine logic.  As explained in the GNU make manual,\nundefine is not commonly needed as E.G. ifdef checks for a non-zero string:\n\nhttps://www.gnu.org/software/make/manual/html_node/Undefine-Directive.html\nhttps://www.gnu.org/software/make/manual/html_node/Conditional-Syntax.html\n\nFixes:\nhttp://autobuild.buildroot.net/results/cf7c4f360f5464c700788cc8299fd086544c80e8/build-end.log\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n[Upstream: https://marc.info/?l=linux-rt-users&m=162080462211139&w=2]\n---\n Makefile | 5 -----\n 1 file changed, 5 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex b17ac09..ec85ac8 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -36,11 +36,6 @@ LDFLAGS ?=\n \n PYLIB  ?= $(shell python3 -c 'import distutils.sysconfig;  print (distutils.sysconfig.get_python_lib())')\n \n-# Check for errors, such as python3 not available\n-ifeq (${PYLIB},)\n-\tundefine PYLIB\n-endif\n-\n MANPAGES = src/cyclictest/cyclictest.8 \\\n \t   src/pi_tests/pi_stress.8 \\\n \t   src/ptsematest/ptsematest.8 \\\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/rt-tests/Config.in",
    "content": "config BR2_PACKAGE_RT_TESTS\n\tbool \"rt-tests\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 # deadline scheduler syscall\n\tdepends on BR2_USE_MMU # fork(), numactl\n\tdepends on !BR2_STATIC_LIBS # dlopen\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # cyclictest\n\tselect BR2_PACKAGE_NUMACTL\n\thelp\n\t  Set of utilities for testing the real-time behaviour of a\n\t  Linux system.\n\n\t  All tools are simple C programs with no dependencies, except\n\t  the hwlatdetect utility, which is a Python script and\n\t  therefore requires the Python interpreter. It will only be\n\t  installed if a Python interpreter has been selected in the\n\t  Buildroot configuration.\n\n\t  Note that this package requires a toolchain built with the\n\t  NPTL implementation of the pthread API (this is always the\n\t  case with glibc toolchains, but may not necessarily be the\n\t  case with uClibc toolchains, since the thread implementation\n\t  is configurable).\n\n\t  https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/rt-tests\n\ncomment \"rt-tests may not work on MIPS with an external uClibc toolchain\"\n\tdepends on BR2_PACKAGE_RT_TESTS\n\tdepends on BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\tdepends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\ncomment \"rt-tests needs a uClibc or glibc toolchain w/ NPTL, headers >= 3.14, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \\\n\t\t|| BR2_TOOLCHAIN_USES_MUSL || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/rt-tests/rt-tests.hash",
    "content": "# From https://mirrors.edge.kernel.org/pub/linux/utils/rt-tests/sha256sums.asc\nsha256 48346ab2b5bf2ffbdb1ed0d4540e9e8e22f6665e6bb3d59c22614f9722b13a91  rt-tests-2.2.tar.xz\n# locally computed hash\nsha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/rt-tests/rt-tests.mk",
    "content": "################################################################################\n#\n# rt-tests\n#\n################################################################################\n\nRT_TESTS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/rt-tests\nRT_TESTS_SOURCE = rt-tests-$(RT_TESTS_VERSION).tar.xz\nRT_TESTS_VERSION = 2.2\nRT_TESTS_LICENSE = GPL-2.0+\nRT_TESTS_LICENSE_FILES = COPYING\n\nRT_TESTS_DEPENDENCIES = numactl\nRT_TESTS_CPE_ID_VENDOR = kernel\n\ndefine RT_TESTS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tCC=\"$(TARGET_CC)\" \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\tprefix=/usr\nendef\n\ndefine RT_TESTS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tDESTDIR=\"$(TARGET_DIR)\" \\\n\t\tprefix=/usr \\\n\t\tPYLIB=\"$(if $(BR2_PACKAGE_PYTHON3),/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/)\" \\\n\t\tinstall\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rtai/Config.in",
    "content": "config BR2_PACKAGE_RTAI\n\tbool \"rtai\"\n\tdepends on BR2_LINUX_KERNEL_EXT_RTAI\n\tselect BR2_LINUX_NEEDS_MODULES # not using kernel-module infra\n\thelp\n\t  RTAI - the RealTime Application Interface for Linux.\n\n\t  http://www.rtai.org\n"
  },
  {
    "path": "package/rtai/rtai.hash",
    "content": "# Locally computed\nsha256 13669da744a0ba411bdb8e47fa47b6e19171646ae42c8dbb2735d12e555fb1a3 rtai-4.0.1.tar.bz2\n"
  },
  {
    "path": "package/rtai/rtai.mk",
    "content": "################################################################################\n#\n# rtai\n#\n################################################################################\n\nRTAI_VERSION = 4.0.1\nRTAI_SOURCE = rtai-$(RTAI_VERSION).tar.bz2\nRTAI_SITE = https://www.rtai.org/userfiles/downloads/RTAI\nRTAI_INSTALL_STAGING = YES\n\n# The <pkg>_CONFIG_SCRIPTS cannot apply here to the specificities of rtai-config\ndefine RTAI_POST_PATCH_FIXUP\n\t$(SED) 's%^staging=.*%staging=$(STAGING_DIR)%' $(STAGING_DIR)/usr/bin/rtai-config\nendef\n\nRTAI_POST_INSTALL_STAGING_HOOKS += RTAI_POST_PATCH_FIXUP\n\nRTAI_DEPENDENCIES = linux\n\nRTAI_CONF_OPTS = \\\n\t--includedir=/usr/include/rtai \\\n\t--with-linux-dir=$(LINUX_DIR) \\\n\t--disable-leds \\\n\t--enable-usi \\\n\t--enable-align-priority \\\n\t--disable-rtailab \\\n\t--with-module-dir=/lib/modules/$(LINUX_VERSION_PROBED)/rtai\n\nRTAI_MAKE = $(MAKE1)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rtc-tools/Config.in",
    "content": "config BR2_PACKAGE_RTC_TOOLS\n\tbool \"rtc-tools\"\n\thelp\n\t  This package provide a set of user-space tools that can be\n\t  used to manipulate Real Time Clock Devices.\n\n\t  https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/rtc-tools.git/\n"
  },
  {
    "path": "package/rtc-tools/rtc-tools.hash",
    "content": "# Locally calculated\nsha256  8614e140b04da3dbb787760bdb0fe2ac5fe8907f5d3e9a74c6713e3d17fc3650  rtc-tools-33ef4aa1c92b0c92a351284d93d1ac5570de9cc7-br1.tar.gz\nsha256  7ae50a5344af14d6231aff6814632a220b3127da4099aea2c6070fd79c407c1a  COPYING\n"
  },
  {
    "path": "package/rtc-tools/rtc-tools.mk",
    "content": "################################################################################\n#\n# rtc-tools\n#\n################################################################################\n\nRTC_TOOLS_VERSION = 33ef4aa1c92b0c92a351284d93d1ac5570de9cc7\nRTC_TOOLS_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/rtc-tools.git\nRTC_TOOLS_LICENSE = GPL-2.0\nRTC_TOOLS_LICENSE_FILES = COPYING\n\nRTC_TOOLS_BINARIES = rtc rtc-range\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nRTC_TOOLS_BINARIES += rtc-sync\nendif\n\ndefine RTC_TOOLS_BUILD_CMDS\n\t$(foreach bin,$(RTC_TOOLS_BINARIES),\\\n\t\t$(TARGET_CC) $(TARGET_CFLAGS) -o $(@D)/$(bin) $(@D)/$(bin).c\n\t)\nendef\n\ndefine RTC_TOOLS_INSTALL_TARGET_CMDS\n\t$(foreach bin,$(RTC_TOOLS_BINARIES),\\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$(bin) $(TARGET_DIR)/usr/bin/$(bin)\n\t)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rtl8188eu/Config.in",
    "content": "config BR2_PACKAGE_RTL8188EU\n\tbool \"rtl8188eu\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  A standalone driver for the RTL8188EU USB Wi-Fi adapter.\n\t  This is needed only for Linux kernels before 3.12.\n\t  Since 3.12, there is a (staging) driver in mainline, with a\n\t  similar codebase.\n\n\t  Make sure your target kernel has the CONFIG_WIRELESS_EXT\n\t  config option enabled.\n\n\t  Note: this package needs a firmware loading mechanism to load\n\t  the binary blob for the chip to work.\n\n\t  https://github.com/lwfinger/rtl8188eu\n\ncomment \"rtl8188eu needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/rtl8188eu/rtl8188eu.hash",
    "content": "# Locally computed\nsha256  b2b06c842bccd730d68a26b1c1b5a24f18373401e907147bf5e775fa42a36bbb  rtl8188eu-60cb0b5a3cfc95e3f2e6fc294a28d987096b0559.tar.gz\nsha256  af8067302947c01fd9eee72befa54c7e3ef8a48fecde7fd71277f2290b2bf0f7  COPYING\n"
  },
  {
    "path": "package/rtl8188eu/rtl8188eu.mk",
    "content": "################################################################################\n#\n# rtl8188eu\n#\n################################################################################\n\nRTL8188EU_VERSION = 60cb0b5a3cfc95e3f2e6fc294a28d987096b0559\nRTL8188EU_SITE = $(call github,lwfinger,rtl8188eu,$(RTL8188EU_VERSION))\nRTL8188EU_LICENSE = GPL-2.0, proprietary (rtl8188eufw.bin firmware blob)\nRTL8188EU_LICENSE_FILES = COPYING\nRTL8188EU_MODULE_MAKE_OPTS = CONFIG_RTL8188EU=m\n\ndefine RTL8188EU_INSTALL_FIRMWARE\n\t$(INSTALL) -D -m 644 $(@D)/rtl8188eufw.bin \\\n\t\t$(TARGET_DIR)/lib/firmware/rtlwifi/rtl8188eufw.bin\nendef\nRTL8188EU_POST_INSTALL_TARGET_HOOKS += RTL8188EU_INSTALL_FIRMWARE\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rtl8189fs/0001-include-disable-debug-messages.patch",
    "content": "From 5d3a44ff1aeb8ace6e08df3cad16102aaac1ef09 Mon Sep 17 00:00:00 2001\nFrom: Sergey Matyukevich <geomatsi@gmail.com>\nDate: Sun, 13 Jun 2021 15:51:51 +0300\nSubject: [PATCH] include: disable debug messages\n\nDisable debug messages to make rtl8189fs driver less noisy.\n\nSigned-off-by: Sergey Matyukevich <geomatsi@gmail.com>\n---\n include/autoconf.h | 2 --\n 1 file changed, 2 deletions(-)\n\ndiff --git a/include/autoconf.h b/include/autoconf.h\nindex 44efe42..b5df57b 100644\n--- a/include/autoconf.h\n+++ b/include/autoconf.h\n@@ -224,8 +224,6 @@\n /*\n  * Debug Related Config\n  */\n-#define CONFIG_DEBUG /* DBG_871X, etc... */\n-\n #ifdef CONFIG_DEBUG\n #define DBG\t1\t// for ODM & BTCOEX debug\n //#define CONFIG_DEBUG_RTL871X /* RT_TRACE, RT_PRINT_DATA, _func_enter_, _func_exit_ */\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/rtl8189fs/Config.in",
    "content": "config BR2_PACKAGE_RTL8189FS\n\tbool \"rtl8189fs\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  Wireless driver rtl8189fs.\n\n\t  https://github.com/jwrdegoede/rtl8189ES_linux.git\n\ncomment \"rtl8189fs needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/rtl8189fs/rtl8189fs.hash",
    "content": "# Locally calculated\nsha256  7d425e18ebc427b3df5ff31185b4dc29c6bfd54f8e167f57c2254cea341a26c6  rtl8189fs-62c31d577c385316bb99107f60e63169dacc37db.tar.gz\n"
  },
  {
    "path": "package/rtl8189fs/rtl8189fs.mk",
    "content": "################################################################################\n#\n# rtl8189fs\n#\n################################################################################\n\nRTL8189FS_VERSION = 62c31d577c385316bb99107f60e63169dacc37db\nRTL8189FS_SITE = $(call github,jwrdegoede,rtl8189ES_linux,$(RTL8189FS_VERSION))\nRTL8189FS_LICENSE = GPL-2.0\n\nRTL8189FS_MODULE_MAKE_OPTS = \\\n\tCONFIG_RTL8189FS=m \\\n\tKVER=$(LINUX_VERSION_PROBED) \\\n\tKSRC=$(LINUX_DIR)\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rtl8723bs/0001-rtl8723bs-add-debug-level-modparam.patch",
    "content": "From 9f70428f506ac9d5af325004c01c59c62669d7eb Mon Sep 17 00:00:00 2001\nFrom: Jason Abele <jason@jasonabeleconsulting.com>\nDate: Sat, 15 Aug 2015 18:20:54 -0700\nSubject: [PATCH] rtl8723bs: add debug level modparam\n\nFor ease of controlling debug printk verbosity, add a module parameter\nwhich sets debug level at module load.\n\nSigned-off-by: Jason Abele <jason@jasonabeleconsulting.com>\n[Fixed to apply on current version]\nSigned-off-by: Ariel D'Alessandro <ariel@vanguardiasur.com.ar>\n---\n os_dep/os_intfs.c | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/os_dep/os_intfs.c b/os_dep/os_intfs.c\nindex b30c2a0..eeb8946 100644\n--- a/os_dep/os_intfs.c\n+++ b/os_dep/os_intfs.c\n@@ -231,6 +231,10 @@ module_param(rtw_decrypt_phy_file, int, 0644);\n MODULE_PARM_DESC(rtw_decrypt_phy_file,\"Enable Decrypt PHY File\");\n #endif\n\n+int rtw_debug_level = _drv_err_;\n+module_param(rtw_debug_level, int, 0644);\n+MODULE_PARM_DESC(rtw_debug_level,\"Set Driver Debug Verbosity\");\n+\n int _netdev_open(struct net_device *pnetdev);\n int netdev_open (struct net_device *pnetdev);\n static int netdev_close (struct net_device *pnetdev);\n@@ -347,6 +351,7 @@ static uint loadparam(struct adapter *padapter, _nic_hdl pnetdev)\n \tregistry_par->qos_opt_enable = (u8)rtw_qos_opt_enable;\n\n \tregistry_par->hiq_filter = (u8)rtw_hiq_filter;\n+\tGlobalDebugLevel = rtw_debug_level;\n \treturn status;\n }\n\n--\n2.8.3\n\n"
  },
  {
    "path": "package/rtl8723bs/Config.in",
    "content": "config BR2_PACKAGE_RTL8723BS\n\tbool \"rtl8723bs\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  rtl8723bs wifi driver\n\n\t  https://github.com/hadess/rtl8723bs\n\ncomment \"rtl8723bs needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/rtl8723bs/rtl8723bs.mk",
    "content": "################################################################################\n#\n# rtl8723bs\n#\n################################################################################\n\nRTL8723BS_VERSION = 11ab92d8ccd71c80f0102828366b14ef6b676fb2\nRTL8723BS_SITE = $(call github,hadess,rtl8723bs,$(RTL8723BS_VERSION))\nRTL8723BS_LICENSE = GPL-2.0, proprietary (*.bin firmware blobs)\n\nRTL8723BS_MODULE_MAKE_OPTS = \\\n\tCONFIG_RTL8723BS=m \\\n\tKVER=$(LINUX_VERSION_PROBED) \\\n\tKSRC=$(LINUX_DIR)\n\nRTL8723BS_BINS = rtl8723bs_ap_wowlan.bin rtl8723bs_wowlan.bin \\\n\trtl8723bs_bt.bin rtl8723bs_nic.bin\n\ndefine RTL8723BS_INSTALL_FIRMWARE\n\t$(foreach bin, $(RTL8723BS_BINS), \\\n\t\t$(INSTALL) -D -m 644 $(@D)/$(bin) $(TARGET_DIR)/lib/firmware/rtlwifi/$(bin)\n\t)\nendef\nRTL8723BS_POST_INSTALL_TARGET_HOOKS += RTL8723BS_INSTALL_FIRMWARE\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rtl8723bu/Config.in",
    "content": "config BR2_PACKAGE_RTL8723BU\n\tbool \"rtl8723bu\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  rtl8723bu wifi driver\n\n\t  https://github.com/lwfinger/rtl8723bu\n\ncomment \"rtl8723bu needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/rtl8723bu/rtl8723bu.hash",
    "content": "# Locally computed\nsha256  4c7314dccebda1e55ec8dcf0d5ca8915c2490d17a9f56923f25e6e0e945c10cc  rtl8723bu-9ce1c38439f4f574bb7adaf33949835c25536a28.tar.gz\n"
  },
  {
    "path": "package/rtl8723bu/rtl8723bu.mk",
    "content": "################################################################################\n#\n# rtl8723bu\n#\n################################################################################\n\nRTL8723BU_VERSION = 9ce1c38439f4f574bb7adaf33949835c25536a28\nRTL8723BU_SITE = $(call github,lwfinger,rtl8723bu,$(RTL8723BU_VERSION))\nRTL8723BU_LICENSE = GPL-2.0, proprietary (*.bin firmware blobs)\n\nRTL8723BU_MODULE_MAKE_OPTS = \\\n\tKVER=$(LINUX_VERSION_PROBED) \\\n\tKSRC=$(LINUX_DIR)\n\ndefine RTL8723BU_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 644 $(@D)/rtl8723b_fw.bin $(TARGET_DIR)/lib/firmware/rtlwifi/rtl8723b_fw.bin\nendef\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rtl8812au-aircrack-ng/Config.in",
    "content": "comment \"rtl8812au-aircrack-ng needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_RTL8812AU_AIRCRACK_NG\n\tbool \"rtl8812au-aircrack-ng\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  rtl8812au wifi driver (aircrack-ng repository)\n\n\t  https://github.com/aircrack-ng/rtl8812au\n"
  },
  {
    "path": "package/rtl8812au-aircrack-ng/rtl8812au-aircrack-ng.hash",
    "content": "# Locally calculated\nsha256  2c5d8286a00273343fc10d0e16afc52e788ac73b7df57c8159e58a40707f61da  rtl8812au-aircrack-ng-b8167e66b4ac046b3b76c2c40008d84528e91594.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/rtl8812au-aircrack-ng/rtl8812au-aircrack-ng.mk",
    "content": "################################################################################\n#\n# rtl8812au-aircrack-ng\n#\n################################################################################\n\nRTL8812AU_AIRCRACK_NG_VERSION = b8167e66b4ac046b3b76c2c40008d84528e91594\nRTL8812AU_AIRCRACK_NG_SITE = $(call github,aircrack-ng,rtl8812au,$(RTL8812AU_AIRCRACK_NG_VERSION))\nRTL8812AU_AIRCRACK_NG_LICENSE = GPL-2.0\nRTL8812AU_AIRCRACK_NG_LICENSE_FILES = LICENSE\n\nRTL8812AU_AIRCRACK_NG_MODULE_MAKE_OPTS = \\\n\tCONFIG_88XXAU=m \\\n\tKVER=$(LINUX_VERSION_PROBED) \\\n\tUSER_EXTRA_CFLAGS=\"-DCONFIG_$(call qstrip,$(BR2_ENDIAN))_ENDIAN\"\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rtl8821au/0001-Fix-implicit-fallthrough-comments-for-kernel-5.3.patch",
    "content": "From 99f1e8bd7172ddf9613db3531a8b37921ed73351 Mon Sep 17 00:00:00 2001\nFrom: Jesper Skov <jb1811@jyskebank.dk>\nDate: Fri, 25 Oct 2019 10:05:41 +0200\nSubject: [PATCH] Fix implicit fallthrough comments for kernel 5.3\n\n[Upstream: https://github.com/abperiasamy/rtl8812AU_8821AU_linux/commit/e8a30a4c5a80efbbd5b1dbfe11b22916df4492f9.patch]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\nSigned-off-by: Christian Stewart <christian@paral.in>\n---\n core/rtw_mlme_ext.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/core/rtw_mlme_ext.c b/core/rtw_mlme_ext.c\nindex 24565ea..380f507 100644\n--- a/core/rtw_mlme_ext.c\n+++ b/core/rtw_mlme_ext.c\n@@ -758,7 +758,9 @@ void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame)\n \t\telse\n \t\t\tptable->func = &OnAuthClient;\n \t//pass through\n+\t//fallthrough\n \tcase WIFI_ASSOCREQ:\n+\t//fallthrough\n \tcase WIFI_REASSOCREQ:\n \t\t_mgt_dispatcher(padapter, ptable, precv_frame);\n #ifdef CONFIG_HOSTAPD_MLME\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/rtl8821au/0002-Fix-kernel-5.3-driver-crashes-from-aircrack-ng-rtl88.patch",
    "content": "From cde2dbf6e94e00fcf198422b03de01d3090675d9 Mon Sep 17 00:00:00 2001\nFrom: Jesper Skov <jb1811@jyskebank.dk>\nDate: Fri, 25 Oct 2019 10:10:29 +0200\nSubject: [PATCH] Fix kernel 5.3 driver crashes, from aircrack-ng/rtl8812au#421\n\n[Upstream: https://github.com/abperiasamy/rtl8812AU_8821AU_linux/commit/822b485d36d6f72304a219c3be228f40968b542b.patch]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\nSigned-off-by: Christian Stewart <christian@paral.in>\n---\n os_dep/linux/rtw_cfgvendor.c | 45 ++++++++++++++++++++++++++++++++++++\n 1 file changed, 45 insertions(+)\n\ndiff --git a/os_dep/linux/rtw_cfgvendor.c b/os_dep/linux/rtw_cfgvendor.c\nindex e7ba90a..81fc8af 100644\n--- a/os_dep/linux/rtw_cfgvendor.c\n+++ b/os_dep/linux/rtw_cfgvendor.c\n@@ -1173,6 +1173,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = BRCM_VENDOR_SCMD_PRIV_STR\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_priv_string_handler\n \t},\n #if defined(GSCAN_SUPPORT) && 0\n@@ -1182,6 +1185,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = GSCAN_SUBCMD_GET_CAPABILITIES\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_gscan_get_capabilities\n \t},\n \t{\n@@ -1190,6 +1196,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = GSCAN_SUBCMD_SET_CONFIG\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_set_scan_cfg\n \t},\n \t{\n@@ -1198,6 +1207,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = GSCAN_SUBCMD_SET_SCAN_CONFIG\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_set_batch_scan_cfg\n \t},\n \t{\n@@ -1206,6 +1218,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = GSCAN_SUBCMD_ENABLE_GSCAN\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_initiate_gscan\n \t},\n \t{\n@@ -1214,6 +1229,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = GSCAN_SUBCMD_ENABLE_FULL_SCAN_RESULTS\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_enable_full_scan_result\n \t},\n \t{\n@@ -1222,6 +1240,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = GSCAN_SUBCMD_SET_HOTLIST\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_hotlist_cfg\n \t},\n \t{\n@@ -1230,6 +1251,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = GSCAN_SUBCMD_SET_SIGNIFICANT_CHANGE_CONFIG\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_significant_change_cfg\n \t},\n \t{\n@@ -1238,6 +1262,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = GSCAN_SUBCMD_GET_SCAN_RESULTS\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_gscan_get_batch_results\n \t},\n \t{\n@@ -1246,6 +1273,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = GSCAN_SUBCMD_GET_CHANNEL_LIST\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_gscan_get_channel_list\n \t},\n #endif /* GSCAN_SUPPORT */\n@@ -1256,6 +1286,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = RTT_SUBCMD_SET_CONFIG\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_rtt_set_config\n \t},\n \t{\n@@ -1264,6 +1297,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = RTT_SUBCMD_CANCEL_CONFIG\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_rtt_cancel_config\n \t},\n \t{\n@@ -1272,6 +1308,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = RTT_SUBCMD_GETCAPABILITY\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = wl_cfgvendor_rtt_get_capability\n \t},\n #endif /* RTT_SUPPORT */\n@@ -1281,6 +1320,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = ANDR_WIFI_SUBCMD_GET_FEATURE_SET\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = rtw_cfgvendor_get_feature_set\n \t},\n \t{\n@@ -1289,6 +1331,9 @@ static const struct wiphy_vendor_command rtw_vendor_cmds [] = {\n \t\t\t.subcmd = ANDR_WIFI_SUBCMD_GET_FEATURE_SET_MATRIX\n \t\t},\n \t\t.flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0)\n+\t\t.policy = VENDOR_CMD_RAW_DATA,\n+#endif\n \t\t.doit = rtw_cfgvendor_get_feature_set_matrix\n \t}\n };\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/rtl8821au/0003-Fix-using-sprintf-for-extending-string-which-causes-.patch",
    "content": "From 5b6641978e8fa68bca05d224a61f8513b010eda8 Mon Sep 17 00:00:00 2001\nFrom: Coleman <omegacoleman@gmail.com>\nDate: Fri, 17 Jul 2020 08:53:00 +0800\nSubject: [PATCH] Fix using sprintf for extending string, which causes\n undefined behavior\n\n[Upstream: https://github.com/abperiasamy/rtl8812AU_8821AU_linux/commit/be57045a0933d64e958878696883e9cf998e1bf3.patch]\nSigned-off-by: Coleman <omegacoleman@gmail.com>\nSigned-off-by: Christian Stewart <christian@paral.in>\n---\n core/rtw_mp.c              |   2 +-\n os_dep/linux/ioctl_linux.c | 108 ++++++++++++++++++-------------------\n 2 files changed, 55 insertions(+), 55 deletions(-)\n\ndiff --git a/core/rtw_mp.c b/core/rtw_mp.c\nindex c2e400d..989bb3e 100644\n--- a/core/rtw_mp.c\n+++ b/core/rtw_mp.c\n@@ -1871,7 +1871,7 @@ u32 mp_query_psd(PADAPTER pAdapter, u8 *data)\n \t\t} else {\n \t\t\tpsd_data = rtw_GetPSDData(pAdapter, i);\n \t\t}\n-\t\tsprintf(data, \"%s%x \", data, psd_data);\n+\t\tsprintf(data + strlen(data), \"%x \", psd_data);\n \t\ti++;\n \t}\n \ndiff --git a/os_dep/linux/ioctl_linux.c b/os_dep/linux/ioctl_linux.c\nindex c74a153..9543fa3 100644\n--- a/os_dep/linux/ioctl_linux.c\n+++ b/os_dep/linux/ioctl_linux.c\n@@ -9080,19 +9080,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\tsprintf(extra, \"\\n\");\n \t\tfor (i = 0; i < EFUSE_MAP_SIZE; i += 16) {\n //\t\t\tDBG_871X(\"0x%02x\\t\", i);\n-\t\t\tsprintf(extra, \"%s0x%02x\\t\", extra, i);\n+\t\t\tsprintf(extra + strlen(extra), \"0x%02x\\t\", i);\n \t\t\tfor (j=0; j<8; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", data[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, PROMContent[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", PROMContent[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\t\");\n-\t\t\tsprintf(extra, \"%s\\t\", extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\t\");\n \t\t\tfor (; j<16; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", data[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, PROMContent[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", PROMContent[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\n\");\n-\t\t\tsprintf(extra,\"%s\\n\",extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\n\");\n \t\t}\n //\t\tDBG_871X(\"\\n\");\n \t} else if (strcmp(tmp[0], \"realmap\") == 0) {\n@@ -9107,19 +9107,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\tsprintf(extra, \"\\n\");\n \t\tfor (i = 0; i < EFUSE_MAP_SIZE; i += 16) {\n //\t\t\tDBG_871X(\"0x%02x\\t\", i);\n-\t\t\tsprintf(extra, \"%s0x%02x\\t\", extra, i);\n+\t\t\tsprintf(extra + strlen(extra), \"0x%02x\\t\", i);\n \t\t\tfor (j=0; j<8; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", data[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, pEfuseHal->fakeEfuseInitMap[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", pEfuseHal->fakeEfuseInitMap[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\t\");\n-\t\t\tsprintf(extra, \"%s\\t\", extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\t\");\n \t\t\tfor (; j<16; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", data[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, pEfuseHal->fakeEfuseInitMap[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", pEfuseHal->fakeEfuseInitMap[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\n\");\n-\t\t\tsprintf(extra,\"%s\\n\",extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\n\");\n \t\t}\n //\t\tDBG_871X(\"\\n\");\n \t} else if (strcmp(tmp[0], \"rmap\") == 0) {\n@@ -9158,7 +9158,7 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\t*extra = 0;\n \t\tfor (i=0; i<cnts; i++) {\n //\t\t\tDBG_871X(\"0x%02x \", data[i]);\n-\t\t\tsprintf(extra, \"%s0x%02X \", extra, data[i]);\n+\t\t\tsprintf(extra + strlen(extra), \"0x%02X \", data[i]);\n \t\t}\n //\t\tDBG_871X(\"}\\n\");\n \t} else if (strcmp(tmp[0], \"realraw\") == 0) {\n@@ -9174,17 +9174,17 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\tsprintf(extra, \"\\n0x00\\t\");\n \t\tfor (i=0; i< mapLen; i++) {\n \t\t\t//\t\t\tDBG_871X(\"%02X\", rawdata[i]);\n-\t\t\tsprintf(extra, \"%s%02X\", extra, rawdata[i]);\n+\t\t\tsprintf(extra + strlen(extra), \"%02X\", rawdata[i]);\n \t\t\tif ((i & 0xF) == 0xF) {\n \t\t\t\t//\t\t\t\tDBG_871X(\"\\n\");\n-\t\t\t\tsprintf(extra, \"%s\\n\", extra);\n-\t\t\t\tsprintf(extra, \"%s0x%02x\\t\", extra, i+1);\n+\t\t\t\tsprintf(extra + strlen(extra), \"\\n\");\n+\t\t\t\tsprintf(extra + strlen(extra), \"0x%02x\\t\", i+1);\n \t\t\t} else if ((i & 0x7) == 0x7) {\n \t\t\t\t//\t\t\t\tDBG_871X(\"\\t\");\n-\t\t\t\tsprintf(extra, \"%s \\t\", extra);\n+\t\t\t\tsprintf(extra + strlen(extra), \" \\t\");\n \t\t\t} else {\n \t\t\t\t//\t\t\t\tDBG_871X(\" \");\n-\t\t\t\tsprintf(extra, \"%s \", extra);\n+\t\t\t\tsprintf(extra + strlen(extra), \" \");\n \t\t\t}\n \t\t}\n \t\t//\t\tDBG_871X(\"}\\n\");\n@@ -9269,10 +9269,10 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\t*extra = 0;\n \t\tfor (i=0; i<cnts; i++) {\n //\t\t\tDBG_871X(\"%02X\", data[i]);\n-\t\t\tsprintf(extra, \"%s%02X\", extra, data[i]);\n+\t\t\tsprintf(extra + strlen(extra), \"%02X\", data[i]);\n \t\t\tif (i != (cnts-1)) {\n //\t\t\t\tDBG_871X(\":\");\n-\t\t\t\tsprintf(extra,\"%s:\",extra);\n+\t\t\t\tsprintf(extra + strlen(extra), \":\");\n \t\t\t}\n \t\t}\n //\t\tDBG_871X(\"}\\n\");\n@@ -9330,10 +9330,10 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\t*extra = 0;\n \t\tfor (i=0; i<cnts; i++) {\n //\t\t\tDBG_871X(\"0x%02x\", data[i]);\n-\t\t\tsprintf(extra, \"%s0x%02X\", extra, data[i]);\n+\t\t\tsprintf(extra + strlen(extra), \"0x%02X\", data[i]);\n \t\t\tif (i != (cnts-1)) {\n //\t\t\t\tDBG_871X(\",\");\n-\t\t\t\tsprintf(extra,\"%s,\",extra);\n+\t\t\t\tsprintf(extra + strlen(extra), \",\");\n \t\t\t}\n \t\t}\n //\t\tDBG_871X(\"}\\n\");\n@@ -9355,19 +9355,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\tsprintf(extra, \"\\n\");\n \t\tfor (i=0; i<512; i+=16) { // set 512 because the iwpriv's extra size have limit 0x7FF\n //\t\t\tDBG_871X(\"0x%03x\\t\", i);\n-\t\t\tsprintf(extra, \"%s0x%03x\\t\", extra, i);\n+\t\t\tsprintf(extra + strlen(extra), \"0x%03x\\t\", i);\n \t\t\tfor (j=0; j<8; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", pEfuseHal->BTEfuseInitMap[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, pEfuseHal->BTEfuseInitMap[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", pEfuseHal->BTEfuseInitMap[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\t\");\n-\t\t\tsprintf(extra,\"%s\\t\",extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\t\");\n \t\t\tfor (; j<16; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", pEfuseHal->BTEfuseInitMap[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, pEfuseHal->BTEfuseInitMap[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", pEfuseHal->BTEfuseInitMap[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\n\");\n-\t\t\tsprintf(extra, \"%s\\n\", extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\n\");\n \t\t}\n //\t\tDBG_871X(\"\\n\");\n \t} else if (strcmp(tmp[0],\"btbmap\") == 0) {\n@@ -9384,19 +9384,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\tsprintf(extra, \"\\n\");\n \t\tfor (i=512; i<1024 ; i+=16) {\n //\t\t\tDBG_871X(\"0x%03x\\t\", i);\n-\t\t\tsprintf(extra, \"%s0x%03x\\t\", extra, i);\n+\t\t\tsprintf(extra + strlen(extra), \"0x%03x\\t\", i);\n \t\t\tfor (j=0; j<8; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", data[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, pEfuseHal->BTEfuseInitMap[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", pEfuseHal->BTEfuseInitMap[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\t\");\n-\t\t\tsprintf(extra,\"%s\\t\",extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\t\");\n \t\t\tfor (; j<16; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", data[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, pEfuseHal->BTEfuseInitMap[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", pEfuseHal->BTEfuseInitMap[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\n\");\n-\t\t\tsprintf(extra, \"%s\\n\", extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\n\");\n \t\t}\n //\t\tDBG_871X(\"\\n\");\n \t} else if (strcmp(tmp[0],\"btrmap\") == 0) {\n@@ -9436,7 +9436,7 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n //\t\tDBG_871X(\"%s: bt efuse data={\", __FUNCTION__);\n \t\tfor (i=0; i<cnts; i++) {\n //\t\t\tDBG_871X(\"0x%02x \", data[i]);\n-\t\t\tsprintf(extra, \"%s 0x%02X \", extra, data[i]);\n+\t\t\tsprintf(extra + strlen(extra), \" 0x%02X \", data[i]);\n \t\t}\n //\t\tDBG_871X(\"}\\n\");\n \t\tDBG_871X(FUNC_ADPT_FMT \": BT MAC=[%s]\\n\", FUNC_ADPT_ARG(padapter), extra);\n@@ -9445,19 +9445,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\tsprintf(extra, \"\\n\");\n \t\tfor (i=0; i<512; i+=16) {\n //\t\t\tDBG_871X(\"0x%03x\\t\", i);\n-\t\t\tsprintf(extra, \"%s0x%03x\\t\", extra, i);\n+\t\t\tsprintf(extra + strlen(extra), \"0x%03x\\t\", i);\n \t\t\tfor (j=0; j<8; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, pEfuseHal->fakeBTEfuseModifiedMap[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\t\");\n-\t\t\tsprintf(extra, \"%s\\t\", extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\t\");\n \t\t\tfor (; j<16; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, pEfuseHal->fakeBTEfuseModifiedMap[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\n\");\n-\t\t\tsprintf(extra, \"%s\\n\", extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\n\");\n \t\t}\n //\t\tDBG_871X(\"\\n\");\n \t} else if (strcmp(tmp[0],\"btbfake\") == 0) {\n@@ -9465,19 +9465,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\tsprintf(extra, \"\\n\");\n \t\tfor (i=512; i<1024; i+=16) {\n //\t\t\tDBG_871X(\"0x%03x\\t\", i);\n-\t\t\tsprintf(extra, \"%s0x%03x\\t\", extra, i);\n+\t\t\tsprintf(extra + strlen(extra), \"0x%03x\\t\", i);\n \t\t\tfor (j=0; j<8; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, pEfuseHal->fakeBTEfuseModifiedMap[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\t\");\n-\t\t\tsprintf(extra, \"%s\\t\", extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\t\");\n \t\t\tfor (; j<16; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, pEfuseHal->fakeBTEfuseModifiedMap[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", pEfuseHal->fakeBTEfuseModifiedMap[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\n\");\n-\t\t\tsprintf(extra, \"%s\\n\", extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\n\");\n \t\t}\n //\t\tDBG_871X(\"\\n\");\n \t} else if (strcmp(tmp[0],\"wlrfkmap\")== 0) {\n@@ -9485,19 +9485,19 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\tsprintf(extra, \"\\n\");\n \t\tfor (i=0; i<EFUSE_MAP_SIZE; i+=16) {\n //\t\t\tDBG_871X(\"\\t0x%02x\\t\", i);\n-\t\t\tsprintf(extra, \"%s0x%02x\\t\", extra, i);\n+\t\t\tsprintf(extra + strlen(extra), \"0x%02x\\t\", i);\n \t\t\tfor (j=0; j<8; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", pEfuseHal->fakeEfuseModifiedMap[i+j]);\n-\t\t\t\tsprintf(extra, \"%s%02X \", extra, pEfuseHal->fakeEfuseModifiedMap[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \"%02X \", pEfuseHal->fakeEfuseModifiedMap[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\t\");\n-\t\t\tsprintf(extra, \"%s\\t\", extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\t\");\n \t\t\tfor (; j<16; j++) {\n //\t\t\t\tDBG_871X(\"%02X \", pEfuseHal->fakeEfuseModifiedMap[i+j]);\n-\t\t\t\tsprintf(extra, \"%s %02X\", extra, pEfuseHal->fakeEfuseModifiedMap[i+j]);\n+\t\t\t\tsprintf(extra + strlen(extra), \" %02X\", pEfuseHal->fakeEfuseModifiedMap[i+j]);\n \t\t\t}\n //\t\t\tDBG_871X(\"\\n\");\n-\t\t\tsprintf(extra, \"%s\\n\", extra);\n+\t\t\tsprintf(extra + strlen(extra), \"\\n\");\n \t\t}\n //\t\tDBG_871X(\"\\n\");\n \n@@ -9523,7 +9523,7 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\t*extra = 0;\n \t\tfor (i=0; i<cnts; i++) {\n \t\t\tDBG_871X(\"wlrfkrmap = 0x%02x \\n\", pEfuseHal->fakeEfuseModifiedMap[addr+i]);\n-\t\t\tsprintf(extra, \"%s0x%02X \", extra, pEfuseHal->fakeEfuseModifiedMap[addr+i]);\n+\t\t\tsprintf(extra + strlen(extra), \"0x%02X \", pEfuseHal->fakeEfuseModifiedMap[addr+i]);\n \t\t}\n \t} else if (strcmp(tmp[0],\"btrfkrmap\")== 0) {\n \t\tif ((tmp[1]==NULL) || (tmp[2]==NULL)) {\n@@ -9547,7 +9547,7 @@ static int rtw_mp_efuse_get(struct net_device *dev,\n \t\t*extra = 0;\n \t\tfor (i=0; i<cnts; i++) {\n \t\t\tDBG_871X(\"wlrfkrmap = 0x%02x \\n\", pEfuseHal->fakeBTEfuseModifiedMap[addr+i]);\n-\t\t\tsprintf(extra, \"%s0x%02X \", extra, pEfuseHal->fakeBTEfuseModifiedMap[addr+i]);\n+\t\t\tsprintf(extra + strlen(extra), \"0x%02X \", pEfuseHal->fakeBTEfuseModifiedMap[addr+i]);\n \t\t}\n \t} else {\n \t\tsprintf(extra, \"Command not found!\");\n@@ -10409,7 +10409,7 @@ static int rtw_mp_read_reg(struct net_device *dev,\n \t\t\tpnext++;\n \t\t\tif ( *pnext != '\\0' ) {\n \t\t\t\tstrtout = simple_strtoul (pnext , &ptmp, 16);\n-\t\t\t\tsprintf( extra, \"%s %d\" ,extra ,strtout );\n+\t\t\t\tsprintf(extra + strlen(extra), \" %d\"  ,strtout );\n \t\t\t} else {\n \t\t\t\tbreak;\n \t\t\t}\n@@ -10443,7 +10443,7 @@ static int rtw_mp_read_reg(struct net_device *dev,\n \t\t\tpnext++;\n \t\t\tif ( *pnext != '\\0' ) {\n \t\t\t\tstrtout = simple_strtoul (pnext , &ptmp, 16);\n-\t\t\t\tsprintf( extra, \"%s %d\" ,extra ,strtout );\n+\t\t\t\tsprintf(extra + strlen(extra), \" %d\"  ,strtout );\n \t\t\t} else {\n \t\t\t\tbreak;\n \t\t\t}\n@@ -10566,7 +10566,7 @@ static int rtw_mp_read_rf(struct net_device *dev,\n \t\tpnext++;\n \t\tif ( *pnext != '\\0' ) {\n \t\t\tstrtou = simple_strtoul (pnext , &ptmp, 16);\n-\t\t\tsprintf( extra, \"%s %d\" ,extra ,strtou );\n+\t\t\tsprintf(extra + strlen(extra), \" %d\"  ,strtou );\n \t\t} else {\n \t\t\tbreak;\n \t\t}\n@@ -12155,14 +12155,14 @@ todo:\n \t\t\t\tgoto exit;\n \n #ifdef CONFIG_RTL8723A\n-\t\t\tsprintf(extra, \"%s %d \", extra, (pMptCtx->mptOutBuf[i]& 0x3f));\n+\t\t\tsprintf(extra + strlen(extra), \" %d \", (pMptCtx->mptOutBuf[i]& 0x3f));\n #else\n-\t\t\tsprintf(extra, \"%s %d \", extra, (pMptCtx->mptOutBuf[i]& 0x1f));\n+\t\t\tsprintf(extra + strlen(extra), \" %d \", (pMptCtx->mptOutBuf[i]& 0x1f));\n #endif\n \t\t}\n \t} else {\n \t\tfor (i=4; i<pMptCtx->mptOutLen; i++) {\n-\t\t\tsprintf(extra, \"%s 0x%x \", extra, pMptCtx->mptOutBuf[i]);\n+\t\t\tsprintf(extra + strlen(extra), \" 0x%x \", pMptCtx->mptOutBuf[i]);\n \t\t}\n \t}\n \n-- \n2.28.0\n\n"
  },
  {
    "path": "package/rtl8821au/0004-rename-sha256_state-to-rtl_sha256_state-to-avoid-nam.patch",
    "content": "From 19aee91e45788d594615a9be58fa5d0879ec816a Mon Sep 17 00:00:00 2001\nFrom: youcai <omegacoleman@gmail.com>\nDate: Tue, 18 Aug 2020 00:43:16 +0800\nSubject: [PATCH] rename sha256_state to rtl_sha256_state to avoid name\n conflict with crypto\n\n[Upstream: https://github.com/abperiasamy/rtl8812AU_8821AU_linux/pull/338/commits/af6f6c1578f16145478326a939bb7593bbcdb4e7.patch]\nSigned-off-by: Coleman <omegacoleman@gmail.com>\nSigned-off-by: Christian Stewart <christian@paral.in>\n---\n core/rtw_security.c    | 10 +++++-----\n include/rtw_security.h |  2 +-\n 2 files changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/core/rtw_security.c b/core/rtw_security.c\nindex d54e6af..de2d91f 100644\n--- a/core/rtw_security.c\n+++ b/core/rtw_security.c\n@@ -2200,7 +2200,7 @@ BIP_exit:\n \n #ifndef PLATFORM_FREEBSD\n /* compress 512-bits */\n-static int sha256_compress(struct sha256_state *md, unsigned char *buf)\n+static int sha256_compress(struct rtl_sha256_state *md, unsigned char *buf)\n {\n \tu32 S[8], W[64], t0, t1;\n \tu32 t;\n@@ -2249,7 +2249,7 @@ static int sha256_compress(struct sha256_state *md, unsigned char *buf)\n }\n \n /* Initialize the hash state */\n-static void sha256_init(struct sha256_state *md)\n+static void sha256_init(struct rtl_sha256_state *md)\n {\n \tmd->curlen = 0;\n \tmd->length = 0;\n@@ -2270,7 +2270,7 @@ static void sha256_init(struct sha256_state *md)\n    @param inlen  The length of the data (octets)\n    @return CRYPT_OK if successful\n */\n-static int sha256_process(struct sha256_state *md, unsigned char *in,\n+static int sha256_process(struct rtl_sha256_state *md, unsigned char *in,\n                           unsigned long inlen)\n {\n \tunsigned long n;\n@@ -2311,7 +2311,7 @@ static int sha256_process(struct sha256_state *md, unsigned char *in,\n    @param out [out] The destination of the hash (32 bytes)\n    @return CRYPT_OK if successful\n */\n-static int sha256_done(struct sha256_state *md, unsigned char *out)\n+static int sha256_done(struct rtl_sha256_state *md, unsigned char *out)\n {\n \tint i;\n \n@@ -2363,7 +2363,7 @@ static int sha256_done(struct sha256_state *md, unsigned char *out)\n static int sha256_vector(size_t num_elem, u8 *addr[], size_t *len,\n                          u8 *mac)\n {\n-\tstruct sha256_state ctx;\n+\tstruct rtl_sha256_state ctx;\n \tsize_t i;\n \n \tsha256_init(&ctx);\ndiff --git a/include/rtw_security.h b/include/rtw_security.h\nindex d41014e..98feb69 100644\n--- a/include/rtw_security.h\n+++ b/include/rtw_security.h\n@@ -233,7 +233,7 @@ struct security_priv {\n #endif /* DBG_SW_SEC_CNT */\n };\n \n-struct sha256_state {\n+struct rtl_sha256_state {\n \tu64 length;\n \tu32 state[8], curlen;\n \tu8 buf[64];\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/rtl8821au/0005-disable-rtw_mgmt_frame_register-on-kernel-5.8.0.patch",
    "content": "From 9421b0763e5f20babb2c0fd437979a71fbac1739 Mon Sep 17 00:00:00 2001\nFrom: Christian Stewart <christian@paral.in>\nDate: Tue, 8 Sep 2020 22:46:45 -0700\nSubject: [PATCH] disable rtw_mgmt_frame_register on kernel 5.8.0\n\nrtl8812au: fix build for kernel 5.8\n\n[Source: https://github.com/lwfinger/rtl8812au/commit/ec1591b90dd323185717fa42887f96444cca5921.patch]\nSigned-off-by: Larry Finger <Larry.Finger@lwfinger.net>\nSigned-off-by: Christian Stewart <christian@paral.in>\n---\n os_dep/linux/ioctl_cfg80211.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c\nindex 019daf9..13238cb 100644\n--- a/os_dep/linux/ioctl_cfg80211.c\n+++ b/os_dep/linux/ioctl_cfg80211.c\n@@ -5177,6 +5177,7 @@ exit:\n \treturn ret;\n }\n \n+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)\n static void cfg80211_rtw_mgmt_frame_register(struct wiphy *wiphy,\n #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0))\n         struct wireless_dev *wdev,\n@@ -5205,6 +5206,7 @@ static void cfg80211_rtw_mgmt_frame_register(struct wiphy *wiphy,\n exit:\n \treturn;\n }\n+#endif\n \n #if defined(CONFIG_TDLS) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))\n static int cfg80211_rtw_tdls_mgmt(struct wiphy *wiphy,\n@@ -6021,7 +6023,9 @@ static struct cfg80211_ops rtw_cfg80211_ops = {\n \n #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)\n \t.mgmt_tx = cfg80211_rtw_mgmt_tx,\n+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)\n \t.mgmt_frame_register = cfg80211_rtw_mgmt_frame_register,\n+#endif\n #elif  (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,34) && LINUX_VERSION_CODE<=KERNEL_VERSION(2,6,35))\n \t.action = cfg80211_rtw_mgmt_tx,\n #endif\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/rtl8821au/0006-rtw_proc-convert-file_operations-to-proc_ops-for-5.6.patch",
    "content": "From e0ed05200e6e4b86e26e092dc1f16fc8fc1e2b67 Mon Sep 17 00:00:00 2001\nFrom: Christian Stewart <christian@paral.in>\nDate: Tue, 8 Sep 2020 23:08:39 -0700\nSubject: [PATCH] rtw_proc: convert file_operations to proc_ops for 5.6.x\n compat\n\nSigned-off-by: Christian Stewart <christian@paral.in>\n[Fix < 5.6.x compile - missing semicolon]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n os_dep/linux/rtw_proc.c | 40 ++++++++++++++++++++++++++++++++++++++--\n 1 file changed, 38 insertions(+), 2 deletions(-)\n\ndiff --git a/os_dep/linux/rtw_proc.c b/os_dep/linux/rtw_proc.c\nindex 048080a..6295f66 100644\n--- a/os_dep/linux/rtw_proc.c\n+++ b/os_dep/linux/rtw_proc.c\n@@ -65,9 +65,15 @@ inline struct proc_dir_entry *rtw_proc_create_dir(const char *name, struct proc_\n }\n \n inline struct proc_dir_entry *rtw_proc_create_entry(const char *name, struct proc_dir_entry *parent,\n-        const struct file_operations *fops, void * data)\n+\t#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0))\n+\tconst struct file_operations *fops,\n+\t#else\n+\tconst struct proc_ops *fops,\n+\t#endif\n+\tvoid * data\n+\t)\n {\n-\tstruct proc_dir_entry *entry;\n+        struct proc_dir_entry *entry;\n \n #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26))\n \tentry = proc_create_data(name,  S_IFREG|S_IRUGO|S_IWUGO, parent, fops, data);\n@@ -167,6 +173,7 @@ static ssize_t rtw_drv_proc_write(struct file *file, const char __user *buffer,\n \treturn -EROFS;\n }\n \n+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0))\n static const struct file_operations rtw_drv_proc_fops = {\n \t.owner = THIS_MODULE,\n \t.open = rtw_drv_proc_open,\n@@ -175,6 +182,15 @@ static const struct file_operations rtw_drv_proc_fops = {\n \t.release = single_release,\n \t.write = rtw_drv_proc_write,\n };\n+#else\n+static const struct proc_ops rtw_drv_proc_fops = {\n+\t.proc_open = rtw_drv_proc_open,\n+\t.proc_read = seq_read,\n+\t.proc_lseek = seq_lseek,\n+\t.proc_release = seq_release,\n+\t.proc_write = rtw_drv_proc_write,\n+};\n+#endif\n \n int rtw_drv_proc_init(void)\n {\n@@ -776,6 +792,7 @@ static ssize_t rtw_adapter_proc_write(struct file *file, const char __user *buff\n \treturn -EROFS;\n }\n \n+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0))\n static const struct file_operations rtw_adapter_proc_fops = {\n \t.owner = THIS_MODULE,\n \t.open = rtw_adapter_proc_open,\n@@ -784,6 +801,15 @@ static const struct file_operations rtw_adapter_proc_fops = {\n \t.release = single_release,\n \t.write = rtw_adapter_proc_write,\n };\n+#else\n+static const struct proc_ops rtw_adapter_proc_fops = {\n+\t.proc_open = rtw_adapter_proc_open,\n+\t.proc_read = seq_read,\n+\t.proc_lseek = seq_lseek,\n+\t.proc_release = single_release,\n+\t.proc_write = rtw_adapter_proc_write,\n+};\n+#endif\n \n int proc_get_odm_dbg_comp(struct seq_file *m, void *v)\n {\n@@ -1030,6 +1056,7 @@ static ssize_t rtw_odm_proc_write(struct file *file, const char __user *buffer,\n \treturn -EROFS;\n }\n \n+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0))\n static const struct file_operations rtw_odm_proc_fops = {\n \t.owner = THIS_MODULE,\n \t.open = rtw_odm_proc_open,\n@@ -1038,6 +1065,15 @@ static const struct file_operations rtw_odm_proc_fops = {\n \t.release = single_release,\n \t.write = rtw_odm_proc_write,\n };\n+#else\n+static const struct proc_ops rtw_odm_proc_fops = {\n+\t.proc_open = rtw_odm_proc_open,\n+\t.proc_read = seq_read,\n+\t.proc_lseek = seq_lseek,\n+\t.proc_release = single_release,\n+\t.proc_write = rtw_odm_proc_write,\n+};\n+#endif\n \n struct proc_dir_entry *rtw_odm_proc_init(struct net_device *dev)\n {\n-- \n2.29.0\n\n"
  },
  {
    "path": "package/rtl8821au/Config.in",
    "content": "comment \"rtl8821au needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_RTL8821AU\n\tbool \"rtl8821au\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  rtl8821au wifi driver\n\n\t  https://github.com/abperiasamy/rtl8812AU_8821AU_linux\n"
  },
  {
    "path": "package/rtl8821au/rtl8821au.hash",
    "content": "# Locally calculated\nsha256  9c8e127dcf2b4d87df546f7f51afdbca0a0561cdba9bcc2689722e1090c46204  rtl8821au-4235b0ec7d7220a6364586d8e25b1e8cb99c36f1.tar.gz\nsha256  6d66dec8f6c253a1af2ffd858167c722b1ce3218215446172c81355d0a49e7fc  LICENSE\n"
  },
  {
    "path": "package/rtl8821au/rtl8821au.mk",
    "content": "################################################################################\n#\n# rtl8821au\n#\n################################################################################\n\nRTL8821AU_VERSION = 4235b0ec7d7220a6364586d8e25b1e8cb99c36f1\nRTL8821AU_SITE = $(call github,abperiasamy,rtl8812AU_8821AU_linux,$(RTL8821AU_VERSION))\nRTL8821AU_LICENSE = GPL-2.0\nRTL8821AU_LICENSE_FILES = LICENSE\n\nRTL8821AU_MODULE_MAKE_OPTS = \\\n\tCONFIG_RTL8812AU_8821AU=m \\\n\tKVER=$(LINUX_VERSION_PROBED) \\\n\tUSER_EXTRA_CFLAGS=\"-DCONFIG_$(call qstrip,$(BR2_ENDIAN))_ENDIAN \\\n\t\t-Wno-error\"\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rtl_433/Config.in",
    "content": "config BR2_PACKAGE_RTL_433\n\tbool \"rtl_433\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  rtl_433 (despite the name) is a generic data receiver, mainly\n\t  for the 433.92 MHz, 868 MHz (SRD), 315 MHz, 345 MHz, and 915\n\t  MHz ISM bands.\n\n\t  https://github.com/merbanan/rtl_433\n\ncomment \"rtl_433 needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/rtl_433/rtl_433.hash",
    "content": "# Locally calculated\nsha256  d8b87535b4e65264018771b6b288259d81137482fc938d01e0c03ac071c03bd5  rtl_433-21.05.tar.gz\n# License file, locally calculated\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/rtl_433/rtl_433.mk",
    "content": "################################################################################\n#\n# rtl_433\n#\n################################################################################\n\nRTL_433_VERSION = 21.05\nRTL_433_SITE = $(call github,merbanan,rtl_433,$(RTL_433_VERSION))\nRTL_433_LICENSE = GPL-2.0+\nRTL_433_LICENSE_FILES = COPYING\n\n# Force Release build to remove ASAN.\nRTL_433_CONF_OPTS = \\\n\t-DCMAKE_BUILD_TYPE=Release \\\n\t-DBUILD_DOCUMENTATION=OFF \\\n\t-DBUILD_TESTING=OFF \\\n\t-DBUILD_TESTING_ANALYZER=OFF \\\n\t-DENABLE_SOAPYSDR=OFF\n\nifeq ($(BR2_PACKAGE_LIBRTLSDR),y)\nRTL_433_DEPENDENCIES += librtlsdr\nRTL_433_CONF_OPTS += -DENABLE_RTLSDR=ON\nelse\nRTL_433_CONF_OPTS += -DENABLE_RTLSDR=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nRTL_433_DEPENDENCIES += openssl\nRTL_433_CONF_OPTS += -DENABLE_OPENSSL=ON\nelse\nRTL_433_CONF_OPTS += -DENABLE_OPENSSL=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/rtmpdump/0001-include-limits.h.patch",
    "content": "From b9d010d2c07e07eeffa510f14ff833ecb10dc0c8 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Mon, 24 Jun 2019 21:11:33 +0200\nSubject: [PATCH] include <limits.h>\n\nNeeded after\nhttps://repo.or.cz/rtmpdump.git/commitdiff/c5f04a58fc2aeea6296ca7c44ee4734c18401aa3\n\nto fix\n\nrtmp.c: In function 'HTTP_read':\nrtmp.c:4459:26: error: 'INT_MAX' undeclared (first use in this function); did you mean 'INT8_MAX'?\n\nreported by buildroot autobuilders:\nhttp://autobuild.buildroot.net/?reason=rtmpdump-c5f04a58fc2aeea6296ca7c44ee4734c18401aa3\n\nPatch sent upstream by e-mail to author of\nhttps://repo.or.cz/rtmpdump.git/patch/c5f04a58fc2aeea6296ca7c44ee4734c18401aa3\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n librtmp/rtmp.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/librtmp/rtmp.h b/librtmp/rtmp.h\nindex 6d7dd89..48d4fc3 100644\n--- a/librtmp/rtmp.h\n+++ b/librtmp/rtmp.h\n@@ -32,6 +32,7 @@\n #include <errno.h>\n #include <stdint.h>\n #include <stddef.h>\n+#include <limits.h>\n \n #include \"amf.h\"\n \n-- \n2.20.1\n\n"
  },
  {
    "path": "package/rtmpdump/Config.in",
    "content": "config BR2_PACKAGE_RTMPDUMP\n\tbool \"librtmp\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  rtmpdump - RTMPDump Real-Time Messaging Protocol API\n\t  Only librtmp is installed by this package.\n\n\t  http://rtmpdump.mplayerhq.hu\n"
  },
  {
    "path": "package/rtmpdump/rtmpdump.hash",
    "content": "# Locally computed\nsha256  e362202d94b92632b17abc7ef909afc56de06a2cb40e308edfad901d799bbd9c  rtmpdump-c5f04a58fc2aeea6296ca7c44ee4734c18401aa3-br1.tar.gz\nsha256  03fe7ca91cc28e99b4003d5b3bd4ce3b084d4c475fdf9975cf0e7fdf4dc739cd  librtmp/COPYING\n"
  },
  {
    "path": "package/rtmpdump/rtmpdump.mk",
    "content": "################################################################################\n#\n# rtmpdump\n#\n################################################################################\n\nRTMPDUMP_VERSION = c5f04a58fc2aeea6296ca7c44ee4734c18401aa3\nRTMPDUMP_SITE = git://git.ffmpeg.org/rtmpdump\nRTMPDUMP_INSTALL_STAGING = YES\n# Note that rtmpdump is GPL-2.0 but librtmp has its own license and since we only\n# care about librtmp, it's LGPL-2.1+\nRTMPDUMP_LICENSE = LGPL-2.1+\nRTMPDUMP_LICENSE_FILES = librtmp/COPYING\nRTMPDUMP_CPE_ID_VENDOR = rtmpdump_project\nRTMPDUMP_DEPENDENCIES = zlib\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nRTMPDUMP_DEPENDENCIES += gnutls\nRTMPDUMP_CRYPTO = GNUTLS\nelse\n# no crypto\nRTMPDUMP_CRYPTO =\nendif\n\nRTMPDUMP_CFLAGS = $(TARGET_CFLAGS)\n\nifneq ($(BR2_STATIC_LIBS),y)\nRTMPDUMP_CFLAGS += -fPIC\nelse\nRTMPDUMP_SHARED = \"SHARED=\"\nendif\n\nRTMPDUMP_MAKE_FLAGS = \\\n\tCRYPTO=$(RTMPDUMP_CRYPTO) \\\n\tprefix=/usr \\\n\t$(RTMPDUMP_SHARED)\n\ndefine RTMPDUMP_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(RTMPDUMP_MAKE_FLAGS) \\\n\t\tXCFLAGS=\"$(RTMPDUMP_CFLAGS)\" \\\n\t\tXLDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\t\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\t\t-C $(@D)/librtmp\nendef\n\ndefine RTMPDUMP_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/librtmp install DESTDIR=$(STAGING_DIR) $(RTMPDUMP_MAKE_FLAGS)\nendef\n\ndefine RTMPDUMP_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/librtmp install DESTDIR=$(TARGET_DIR) $(RTMPDUMP_MAKE_FLAGS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/rtorrent/Config.in",
    "content": "config BR2_PACKAGE_RTORRENT\n\tbool \"rtorrent\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\t# gcc < 4.9 cause an \"internal compiler error\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBTORRENT\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  BitTorrent Client using libtorrent\n\n\t  https://github.com/rakshasa/rtorrent\n\ncomment \"rtorrent needs a toolchain w/ C++, threads, wchar, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && \\\n\t\tBR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_GCC_AT_LEAST_4_9)\n"
  },
  {
    "path": "package/rtorrent/rtorrent.hash",
    "content": "# Locally calculated\nsha256 9edf0304bf142215d3bc85a0771446b6a72d0ad8218efbe184b41e4c9c7542af  rtorrent-0.9.8.tar.gz\nsha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/rtorrent/rtorrent.mk",
    "content": "################################################################################\n#\n# rtorrent\n#\n################################################################################\n\nRTORRENT_VERSION = 0.9.8\nRTORRENT_SITE = http://rtorrent.net/downloads\nRTORRENT_DEPENDENCIES = host-pkgconf libcurl libtorrent ncurses\nRTORRENT_LICENSE = GPL-2.0\nRTORRENT_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rtptools/Config.in",
    "content": "config BR2_PACKAGE_RTPTOOLS\n\tbool \"rtptools\"\n\thelp\n\t  The rtptools distribution consists of a number of small\n\t  applications that can be used for processing RTP data.\n\n\t  http://www.cs.columbia.edu/irt/software/rtptools/\n"
  },
  {
    "path": "package/rtptools/rtptools.hash",
    "content": "# Locally calculated\nsha256\t2c76b2a423fb943820c91194372133a44cbdc456ebf69c51616ec50eeb068c28\trtptools-1.22.tar.gz\nsha256\tf864592065e232c0b444ae9682a7a1a2c6aafe96712999f794bec24d4441a6a9\tLICENSE\n"
  },
  {
    "path": "package/rtptools/rtptools.mk",
    "content": "################################################################################\n#\n# rtptools\n#\n################################################################################\n\nRTPTOOLS_VERSION = 1.22\nRTPTOOLS_SITE = http://www.cs.columbia.edu/irt/software/rtptools/download\nRTPTOOLS_LICENSE = BSD-3-Clause\nRTPTOOLS_LICENSE_FILES = LICENSE\nRTPTOOLS_CONF_ENV = ac_cv_prog_FOUND_CLANG=no\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rtty/Config.in",
    "content": "config BR2_PACKAGE_RTTY\n\tbool \"rtty\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBEV\n\thelp\n\t  Access your device's terminal from anywhere via the web.\n\n\t  https://github.com/zhaojh329/rtty\n"
  },
  {
    "path": "package/rtty/rtty.hash",
    "content": "sha256  9bc5d30dfa9bd664a62711b6229f47505b83adb364907f24e3a404aad52a4802  rtty-7.4.0.tar.gz\nsha256  99efed4bbc0b62f96f999ef23399e38234fb91651af734fd389a52b033a85b55  LICENSE\n"
  },
  {
    "path": "package/rtty/rtty.mk",
    "content": "################################################################################\n#\n# rtty\n#\n################################################################################\n\nRTTY_VERSION = 7.4.0\nRTTY_SITE = https://github.com/zhaojh329/rtty/releases/download/v$(RTTY_VERSION)\nRTTY_LICENSE = MIT\nRTTY_LICENSE_FILES = LICENSE\nRTTY_DEPENDENCIES = libev\n\nifeq ($(BR2_PACKAGE_MBEDTLS),y)\nRTTY_DEPENDENCIES += mbedtls\nRTTY_CONF_OPTS += \\\n\t-DRTTY_SSL_SUPPORT=ON \\\n\t-DRTTY_USE_MBEDTLS=ON \\\n\t-DRTTY_USE_OPENSSL=OFF \\\n\t-DRTTY_USE_WOLFSSL=OFF\nelse ifeq ($(BR2_PACKAGE_OPENSSL),y)\nRTTY_DEPENDENCIES += host-pkgconf openssl\nRTTY_CONF_OPTS += \\\n\t-DRTTY_SSL_SUPPORT=ON \\\n\t-DRTTY_USE_MBEDTLS=OFF \\\n\t-DRTTY_USE_OPENSSL=ON \\\n\t-DRTTY_USE_WOLFSSL=OFF\nelse ifeq ($(BR2_PACKAGE_WOLFSSL),y)\nRTTY_DEPENDENCIES += wolfssl\nRTTY_CONF_OPTS += \\\n\t-DRTTY_SSL_SUPPORT=ON \\\n\t-DRTTY_USE_MBEDTLS=OFF \\\n\t-DRTTY_USE_OPENSSL=OFF \\\n\t-DRTTY_USE_WOLFSSL=ON\nelse\nRTTY_CONF_OPTS += -DRTTY_SSL_SUPPORT=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/rubix/0001-dont-use-legacy-functions.patch",
    "content": "Use strstr() instead of index(), since index() is a legacy function\nand it may not be available in uClibc, depending on the configuration.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: rubix-1.0.5/cube.c\n===================================================================\n--- rubix-1.0.5.orig/cube.c\t2010-02-14 14:19:05.000000000 +0100\n+++ rubix-1.0.5/cube.c\t2010-02-14 14:19:14.000000000 +0100\n@@ -257,7 +257,7 @@\n     if (i==-1) goto finish;\n     if (buffer[0]=='%') goto new_section;\n     buffer[0]=toupper(buffer[0]);\n-    ptr = index(buffer, '=');\n+    ptr = strstr(buffer, '=');\n     if (ptr) {\n       ++ptr;\n       while (isspace(*ptr)) ++ptr;\n"
  },
  {
    "path": "package/rubix/0002-misc-fixes.patch",
    "content": "diff -Nrup rubix-1.0.5/fillpoly.c rubix-1.0.5-avr32/fillpoly.c\n--- rubix-1.0.5/fillpoly.c\t2003-10-12 15:41:43.000000000 -0400\n+++ rubix-1.0.5-avr32/fillpoly.c\t2008-02-29 12:39:51.000000000 -0500\n@@ -435,7 +435,7 @@ void fill_lines(device *d, int thecol)\n \t\t\t);\n #endif\n     }\n-  } else if (d->depth==16) { /* here 16bpp */\n+  } else if ((d->depth==16) | (d->depth==15)) { /* here 16bpp */\n     register int i;\n #ifndef PC_ARCHI\n     register int j;\ndiff -Nrup rubix-1.0.5/line.c rubix-1.0.5-avr32/line.c\n--- rubix-1.0.5/line.c\t2003-10-12 14:15:19.000000000 -0400\n+++ rubix-1.0.5-avr32/line.c\t2008-02-29 12:39:51.000000000 -0500\n@@ -1317,7 +1317,7 @@ void drawline(device *d, line *l)\n #endif\n   if (d->depth==8)\n     drawline8(d, l);\n-  else if (d->depth==16)\n+  else if ((d->depth==16) | (d->depth==15))\n     drawline16(d, l);\n   else if (d->depth==24)\n     drawline24(d, l);\ndiff -Nrup rubix-1.0.5/Makefile rubix-1.0.5-avr32/Makefile\n--- rubix-1.0.5/Makefile\t2003-12-04 14:27:58.000000000 -0500\n+++ rubix-1.0.5-avr32/Makefile\t2008-02-29 12:58:30.000000000 -0500\n@@ -11,21 +11,17 @@\n # Customize to fit your needs (especially if it does not work for now).\n \n LANGUAGE=ENGLISH\n-GAMESDIR=/usr/games\n \n #architecture=-DPC_ARCHI\n \n # For Solaris\n #EXTRALIBS=-lsocket\n \n-CC=gcc\n CFLAGS=-Wall -O3 -fomit-frame-pointer -ffast-math \\\n    -DGAMESDIR=\"\\\"$(GAMESDIR)\\\"\" \\\n    -D$(LANGUAGE) $(architecture)\n \n #CFLAGS=-Wall -g -ffast-math -Iplayer $(architecture)\n-XINC=-I/usr/X11R6/include\n-XLIB=-L/usr/X11R6/lib -lX11\n \n #the following should not be changed.\n \n@@ -37,7 +33,7 @@ rubix : $(OBJ)\n \n install :\n \tmkdir -p $(GAMESDIR)\n-\tinstall -c -s rubix $(GAMESDIR)\n+\tinstall -c rubix $(GAMESDIR)\n \n clean :\n \trm -f *.o *~ core *.bak *.dat gmon.out\ndiff -Nrup rubix-1.0.5/screen.c rubix-1.0.5-avr32/screen.c\n--- rubix-1.0.5/screen.c\t2004-04-26 04:26:05.000000000 -0400\n+++ rubix-1.0.5-avr32/screen.c\t2008-02-29 12:39:51.000000000 -0500\n@@ -80,11 +80,17 @@ void error_statement(SCREEN *s)\n \n int reset_data_buffers(SCREEN *s)\n {     \n+  int temp;\n \n   if (s->im)\n     XDestroyImage(s->im);\n+  if (s->depth == 15) {\n+\t\ttemp=16;\n+  } else {\n+\t\ttemp=s->depth;\n+  }\n \n-  s->buffer=(char *)malloc(((SCREEN_X+7)/8)*SCREEN_Y*s->depth);\n+  s->buffer=(char *)malloc(((SCREEN_X+7)/8)*SCREEN_Y*temp);\n \n   if (!s->buffer) {\n     error_statement(s);\n@@ -106,7 +112,7 @@ int reset_data_buffers(SCREEN *s)\n    */\n   /* Sed - december 2003 - no it has to be 8 */\n   s->im=XCreateImage(s->d, DefaultVisual(s->d, DefaultScreen(s->d)), \n-\t\t     s->depth==32?24:s->depth, ZPixmap,\n+\t\t     s->depth, ZPixmap,\n \t\t     0, s->buffer, SCREEN_X, SCREEN_Y, 8, 0);\n \n   if (!s->im) {\n@@ -139,8 +145,8 @@ int init_screen(SCREEN *s)\n \n   s->depth=DefaultDepth(s->d, DefaultScreen(s->d));\n   \n-  if (s->depth!=8 && s->depth!=16 && s->depth!=24) {\n-    fprintf(stderr, \"screen depth not supported (only 8, 16 and 24bpp (which means 32bpp too) handled\\n\");\n+  if (s->depth!=8 && s->depth!=15 && s->depth!=16 && s->depth!=24) {\n+    fprintf(stderr, \"screen depth not supported (only 8, 15, 16 and 24bpp (which means 32bpp too) handled\\n\");\n     XCloseDisplay(s->d);\n     s->d=(Display *)0;\n     return -1;\n@@ -182,10 +188,10 @@ int init_screen(SCREEN *s)\n    \n   /* let's create and map our window */\n   s->w=XCreateWindow(s->d, DefaultRootWindow(s->d), 0, 0, \n-\t\t       SCREEN_X, SCREEN_Y, 3, s->depth==32?24:s->depth,\n+\t\t       SCREEN_X, SCREEN_Y, 3, s->depth,\n \t\t       CopyFromParent, CopyFromParent, 0, NULL);\n   s->h=XCreateWindow(s->d, DefaultRootWindow(s->d), 0, 0, \n-\t\t       HELP_X, HELP_Y, 3, s->depth==32?24:s->depth,\n+\t\t       HELP_X, HELP_Y, 3, s->depth,\n \t\t       CopyFromParent, CopyFromParent, 0, NULL);     \n    \n   xch.res_name = \"rubix\";\n@@ -946,13 +952,18 @@ void close_screen(SCREEN *s)\n void clear_screen(SCREEN *s)\n {\n   /* fill s->im with pixel[10], avoid XPutPixel which is rather slow... */\n-  int i, w, dw;\n+  int i, w, dw, temp;\n+  if (s->depth == 15) {\n+\ttemp = 16;\n+  } else {\n+\ttemp = s->depth;\n+  }\n   w = (SCREEN_X+7)/8;\n-  dw = s->depth/8;\n+  dw = temp/8;\n   XPutPixel(s->im, 0, 0, pixel[10]);\n   for (i=1; i<8*w; i++)\n      memcpy(s->buffer + i*dw, s->buffer, dw);\n-  w = w * s->depth;\n+  w = w * temp;\n   for (i=1; i<SCREEN_Y; i++)\n      memcpy(s->buffer + i*w, s->buffer, w);\n }\n"
  },
  {
    "path": "package/rubix/Config.in",
    "content": "config BR2_PACKAGE_RUBIX\n\tbool \"rubix\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  A 3D rubiks cube game for X\n\n\t  http://sed.free.fr/rubix\n"
  },
  {
    "path": "package/rubix/rubix.hash",
    "content": "# Locally calculated\nsha256 ccff4c98373f76c6bab751f5f5a60df7ad8691c79b56157e4aba2dd76f501a87  rubix-1.0.6.tar.bz2\nsha256 429d04118c02bc92d834c430601f8c0c8df1ab27e3617ec73ad3f66c5953475d  LICENCE\n"
  },
  {
    "path": "package/rubix/rubix.mk",
    "content": "################################################################################\n#\n# rubix\n#\n################################################################################\n\nRUBIX_VERSION = 1.0.6\nRUBIX_SOURCE = rubix-$(RUBIX_VERSION).tar.bz2\nRUBIX_SITE = http://sed.free.fr/rubix\nRUBIX_LICENSE = Public Domain\nRUBIX_LICENSE_FILES = LICENCE\nRUBIX_DEPENDENCIES = xlib_libX11\n\nRUBIX_MAKE_OPTS = \\\n\tCC=\"$(TARGET_CC)\" \\\n\tXINC=\"-I$(STAGING_DIR)/usr/include/X11\" \\\n\tXLIB=\"-L$(STAGING_DIR)/usr/lib -lX11\"\n\nRUBIX_INSTALL_TARGET_OPTS = GAMESDIR=$(TARGET_DIR)/usr/games install\n\ndefine RUBIX_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(RUBIX_MAKE_OPTS) rubix\nendef\n\ndefine RUBIX_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(RUBIX_MAKE_OPTS) \\\n\t\t$(RUBIX_INSTALL_TARGET_OPTS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ruby/0001-fix-default-coroutine-selection.patch",
    "content": "fixed default coroutine selection for musl/uclibc\n\nhttps://github.com/ruby/ruby/pull/3567/commits/b570e7de87aaad8c903176d835e8124127f627b3\n\nSigned-off-by: Waldemar Brodkorb <wbx@openadk.org>\n\ndiff -Nur ruby-3.0.0.orig/configure.ac ruby-3.0.0/configure.ac\n--- ruby-3.0.0.orig/configure.ac\t2020-12-25 04:33:01.000000000 +0100\n+++ ruby-3.0.0/configure.ac\t2021-02-22 13:00:53.990314464 +0100\n@@ -2441,7 +2441,10 @@\n             rb_cv_coroutine=copy\n         ],\n         [\n-            rb_cv_coroutine=ucontext\n+        AC_CHECK_FUNCS([getcontext swapcontext makecontext],\n+               [rb_cv_coroutine=ucontext],\n+               [rb_cv_coroutine=copy; break]\n+\t       )\n         ]\n     )\n     AC_MSG_RESULT(${rb_cv_coroutine})\n"
  },
  {
    "path": "package/ruby/0002-Needs-AC_PROG_CC.patch",
    "content": "From 912a8dcfc5369d840dcd6bf0f88ee0bac7d902d6 Mon Sep 17 00:00:00 2001\nFrom: Nobuyoshi Nakada <nobu@ruby-lang.org>\nDate: Thu, 30 Sep 2021 18:24:37 +0900\nSubject: [PATCH] Needs `AC_PROG_CC`\n\nAlthough `AC_PROG_CC_C99` has been obsolete, `AC_PROG_CC` is not\nand the latter is necessary not to make C++ compiler mandatory.\n\n[Retrieved from:\nhttps://github.com/ruby/ruby/commit/912a8dcfc5369d840dcd6bf0f88ee0bac7d902d6]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex b24a8f59b0d2..c7059ee1ecf4 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -218,7 +218,7 @@ rb_test_CXXFLAGS=${CXXFLAGS+yes}\n # BSD's ports and MacPorts prefix GNU binutils with 'g'\n \n dnl Seems necessarily in order to add -std=gnu99 option for gcc 4.9.\n-m4_version_prereq([2.70], [], [AC_PROG_CC_C99])\n+m4_version_prereq([2.70], [AC_PROG_CC], [AC_PROG_CC_C99])\n \n AC_PROG_CXX\n AC_PROG_CPP\n"
  },
  {
    "path": "package/ruby/Config.in",
    "content": "config BR2_PACKAGE_RUBY\n\tbool \"ruby\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9\n\thelp\n\t  Object Oriented Scripting Language.\n\n\t  http://www.ruby-lang.org/\n\ncomment \"ruby needs a toolchain w/ wchar, threads, dynamic library, gcc >= 4.9, host gcc >= 4.9\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/ruby/ruby.hash",
    "content": "# https://www.ruby-lang.org/en/news/2021/07/07/ruby-3-0-2-released/\nsha512  0f702e2d8ca1342a9d4284dbdd234a3588e057b92566353aa7c21835cf09a3932864b2acf459a976960a1704e9befa562155d36b98b7cda8bd99526e10a374c4  ruby-3.0.2.tar.xz\n# License files, Locally calculated\nsha256  274f8d7983052448e7fd691c81043465c92ee6fb7bd8ab3f20a7997862f2778e  LEGAL\nsha256  967586d538a28955ec2541910cf63c5ac345fcdea94bfb1f1705a1f6eb36bcbb  COPYING\nsha256  36a9a6e7347214bbba599a412617204e65bff065dcbe5c46f5cb454c80de9eb0  BSDL\n"
  },
  {
    "path": "package/ruby/ruby.mk",
    "content": "################################################################################\n#\n# ruby\n#\n################################################################################\n\nRUBY_VERSION_MAJOR = 3.0\nRUBY_VERSION = $(RUBY_VERSION_MAJOR).2\nRUBY_VERSION_EXT = 3.0.0\nRUBY_SITE = http://cache.ruby-lang.org/pub/ruby/$(RUBY_VERSION_MAJOR)\nRUBY_SOURCE = ruby-$(RUBY_VERSION).tar.xz\nRUBY_DEPENDENCIES = host-pkgconf host-ruby\nHOST_RUBY_DEPENDENCIES = host-pkgconf host-openssl\nRUBY_MAKE_ENV = $(TARGET_MAKE_ENV)\nRUBY_CONF_OPTS = --disable-install-doc --disable-rpath --disable-rubygems\nHOST_RUBY_CONF_OPTS = \\\n\t--disable-install-doc \\\n\t--with-out-ext=curses,readline \\\n\t--without-gmp\nRUBY_LICENSE = Ruby or BSD-2-Clause, BSD-3-Clause, others\nRUBY_LICENSE_FILES = LEGAL COPYING BSDL\nRUBY_CPE_ID_VENDOR = ruby-lang\n# 0001-fix-default-coroutine-selection.patch\nRUBY_AUTORECONF = YES\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nRUBY_CONF_ENV += LIBS=-latomic\nendif\n\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\n# On uClibc, finite, isinf and isnan are not directly implemented as\n# functions.  Instead math.h #define's these to __finite, __isinf and\n# __isnan, confusing the Ruby configure script. Tell it that they\n# really are available.\nRUBY_CONF_ENV += \\\n\tac_cv_func_finite=yes \\\n\tac_cv_func_isinf=yes \\\n\tac_cv_func_isnan=yes\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_SSP),)\nRUBY_CONF_ENV += stack_protector=no\nendif\n\n# Force optionals to build before we do\nifeq ($(BR2_PACKAGE_BERKELEYDB),y)\nRUBY_DEPENDENCIES += berkeleydb\nendif\nifeq ($(BR2_PACKAGE_LIBFFI),y)\nRUBY_DEPENDENCIES += libffi\nelse\n# Disable fiddle to avoid a build failure with bundled-libffi on MIPS\nRUBY_CONF_OPTS += --with-out-ext=fiddle\nendif\nifeq ($(BR2_PACKAGE_GDBM),y)\nRUBY_DEPENDENCIES += gdbm\nendif\nifeq ($(BR2_PACKAGE_LIBYAML),y)\nRUBY_DEPENDENCIES += libyaml\nendif\nifeq ($(BR2_PACKAGE_NCURSES),y)\nRUBY_DEPENDENCIES += ncurses\nendif\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nRUBY_DEPENDENCIES += openssl\nendif\nifeq ($(BR2_PACKAGE_READLINE),y)\nRUBY_DEPENDENCIES += readline\nendif\nifeq ($(BR2_PACKAGE_ZLIB),y)\nRUBY_DEPENDENCIES += zlib\nendif\nifeq ($(BR2_PACKAGE_GMP),y)\nRUBY_DEPENDENCIES += gmp\nRUBY_CONF_OPTS += --with-gmp\nelse\nRUBY_CONF_OPTS += --without-gmp\nendif\n\nRUBY_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_83143),y)\nRUBY_CFLAGS += -freorder-blocks-algorithm=simple\nendif\n\nRUBY_CONF_OPTS += CFLAGS=\"$(RUBY_CFLAGS)\"\n\n# Remove rubygems and friends, as they need extensions that aren't\n# built and a target compiler.\nRUBY_EXTENSIONS_REMOVE = rake* rdoc* rubygems*\ndefine RUBY_REMOVE_RUBYGEMS\n\trm -f $(addprefix $(TARGET_DIR)/usr/bin/, gem rdoc ri rake)\n\trm -rf $(TARGET_DIR)/usr/lib/ruby/gems\n\trm -rf $(addprefix $(TARGET_DIR)/usr/lib/ruby/$(RUBY_VERSION_EXT)/, \\\n\t\t$(RUBY_EXTENSIONS_REMOVE))\nendef\nRUBY_POST_INSTALL_TARGET_HOOKS += RUBY_REMOVE_RUBYGEMS\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/runc/Config.in",
    "content": "config BR2_PACKAGE_RUNC\n\tbool \"runc\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_TOOLCHAIN_USES_UCLIBC # no fexecve\n\thelp\n\t  runC is a CLI tool for spawning and running containers\n\t  according to the OCP specification.\n\n\t  https://github.com/opencontainers/runc\n\ncomment \"runc needs a glibc or musl toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS && \\\n\t\tBR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC\n"
  },
  {
    "path": "package/runc/runc.hash",
    "content": "# Locally computed\nsha256  6c3cca4bbeb5d9b2f5e3c0c401c9d27bc8a5d2a0db8a2f6a06efd03ad3c38a33  runc-1.0.2.tar.gz\nsha256  552a739c3b25792263f731542238b92f6f8d07e9a488eae27e6c4690038a8243  LICENSE\n"
  },
  {
    "path": "package/runc/runc.mk",
    "content": "################################################################################\n#\n# runc\n#\n################################################################################\n\nRUNC_VERSION = 1.0.2\nRUNC_SITE = $(call github,opencontainers,runc,v$(RUNC_VERSION))\nRUNC_LICENSE = Apache-2.0\nRUNC_LICENSE_FILES = LICENSE\nRUNC_CPE_ID_VENDOR = linuxfoundation\n\nRUNC_LDFLAGS = -X main.version=$(RUNC_VERSION)\nRUNC_TAGS = cgo static_build\n\nifeq ($(BR2_PACKAGE_LIBAPPARMOR),y)\nRUNC_DEPENDENCIES += libapparmor\nRUNC_TAGS += apparmor\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECCOMP),y)\nRUNC_TAGS += seccomp\nRUNC_DEPENDENCIES += libseccomp host-pkgconf\nendif\n\n$(eval $(golang-package))\n"
  },
  {
    "path": "package/rust/rust.hash",
    "content": "# From https://static.rust-lang.org/dist/rustc-1.66.1-src.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rustc-1.66.1-src.tar.xz.asc\nsha256  07ac4e6c93e0d8ecfaf3b86c4c78bbbde3f5be675f0334e7fb343cb4a0b81ebe  rustc-1.66.1-src.tar.xz\n# Locally generated\nsha256  62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a  LICENSE-APACHE\nsha256  23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3  LICENSE-MIT\n"
  },
  {
    "path": "package/rust/rust.mk",
    "content": "################################################################################\n#\n# rust\n#\n################################################################################\n\n# When updating this version, check whether support/download/cargo-post-process\n# still generates the same archives.\nRUST_VERSION = 1.66.1\nRUST_SOURCE = rustc-$(RUST_VERSION)-src.tar.xz\nRUST_SITE = https://static.rust-lang.org/dist\nRUST_LICENSE = Apache-2.0 or MIT\nRUST_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT\n\nHOST_RUST_PROVIDES = host-rustc\n\nHOST_RUST_DEPENDENCIES = \\\n\ttoolchain \\\n\thost-pkgconf \\\n\thost-python3 \\\n\thost-rust-bin \\\n\thost-openssl \\\n\t$(BR2_CMAKE_HOST_DEPENDENCY)\n\nHOST_RUST_VERBOSITY = $(if $(VERBOSE),2,0)\n\n# Some vendor crates contain Cargo.toml.orig files. The associated\n# .cargo-checksum.json file will contain a checksum for Cargo.toml.orig but\n# support/scripts/apply-patches.sh will delete them. This will cause the build\n# to fail, as Cargo will not be able to find the file and verify the checksum.\n# So, remove all Cargo.toml.orig entries from the affected .cargo-checksum.json\n# files\ndefine HOST_RUST_EXCLUDE_ORIG_FILES\n\tfor file in $$(find $(@D) -name '*.orig'); do \\\n\t\tcrate=$$(dirname $${file}); \\\n\t\tfn=$${crate}/.cargo-checksum.json; \\\n\t\tsed -i -e 's/\"Cargo.toml.orig\":\"[a-z0-9]\\+\",//g' $${fn}; \\\n\tdone\nendef\n\nHOST_RUST_POST_EXTRACT_HOOKS += HOST_RUST_EXCLUDE_ORIG_FILES\n\ndefine HOST_RUST_CONFIGURE_CMDS\n\t( \\\n\t\techo '[build]'; \\\n\t\techo 'target = [\"$(RUSTC_TARGET_NAME)\"]'; \\\n\t\techo 'cargo = \"$(HOST_RUST_BIN_DIR)/cargo/bin/cargo\"'; \\\n\t\techo 'rustc = \"$(HOST_RUST_BIN_DIR)/rustc/bin/rustc\"'; \\\n\t\techo 'python = \"$(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR)\"'; \\\n\t\techo 'submodules = false'; \\\n\t\techo 'vendor = true'; \\\n\t\techo 'extended = true'; \\\n\t\techo 'tools = [\"cargo\"]'; \\\n\t\techo 'compiler-docs = false'; \\\n\t\techo 'docs = false'; \\\n\t\techo 'verbose = $(HOST_RUST_VERBOSITY)'; \\\n\t\techo '[install]'; \\\n\t\techo 'prefix = \"$(HOST_DIR)\"'; \\\n\t\techo 'sysconfdir = \"$(HOST_DIR)/etc\"'; \\\n\t\techo '[rust]'; \\\n\t\techo 'channel = \"stable\"'; \\\n\t\techo 'musl-root = \"$(STAGING_DIR)\"' ; \\\n\t\techo '[target.$(RUSTC_TARGET_NAME)]'; \\\n\t\techo 'cc = \"$(TARGET_CROSS)gcc\"'; \\\n\t\techo '[llvm]'; \\\n\t\techo 'ninja = false'; \\\n\t) > $(@D)/config.toml\nendef\n\ndefine HOST_RUST_BUILD_CMDS\n\tcd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) x.py build\nendef\n\nHOST_RUST_INSTALL_OPTS = \\\n\t--prefix=$(HOST_DIR) \\\n\t--disable-ldconfig\n\ndefine HOST_RUST_INSTALL_RUSTC\n\tcd $(@D)/build/tmp/tarball/rust/$(RUSTC_HOST_NAME)/rust-$(RUST_VERSION)-$(RUSTC_HOST_NAME); \\\n\t\t./install.sh $(HOST_RUST_INSTALL_OPTS) --components=rustc,cargo,rust-std-$(RUSTC_HOST_NAME)\nendef\n\nifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y)\ndefine HOST_RUST_INSTALL_LIBSTD_TARGET\n\tcd $(@D)/build/tmp/tarball/rust-std/$(RUSTC_TARGET_NAME)/rust-std-$(RUST_VERSION)-$(RUSTC_TARGET_NAME); \\\n\t\t./install.sh $(HOST_RUST_INSTALL_OPTS)\nendef\nendif\n\ndefine HOST_RUST_INSTALL_CMDS\n\tcd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) x.py dist\n\t$(HOST_RUST_INSTALL_RUSTC)\n\t$(HOST_RUST_INSTALL_LIBSTD_TARGET)\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/rust-bin/rust-bin.hash",
    "content": "# From https://static.rust-lang.org/dist/rust-1.66.1-aarch64-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-1.66.1-aarch64-unknown-linux-gnu.tar.xz.asc\nsha256  a1279760f91b3571733e0b0268128d143be2734916753900b5fe7b8ecc3c0900  rust-1.66.1-aarch64-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-1.66.1-i686-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-1.66.1-i686-unknown-linux-gnu.tar.xz.asc\nsha256  835b4e1b4d396674f7866a83b9a4f44db16fd12f01a7eaed527282b3700a9b92  rust-1.66.1-i686-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-1.66.1-mips-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-1.66.1-mips-unknown-linux-gnu.tar.xz.asc\nsha256  c7349617c42274bf50f6e3662dfb4f6832a93780099c3bb510be1a5b93d04c37  rust-1.66.1-mips-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-1.66.1-mipsel-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-1.66.1-mipsel-unknown-linux-gnu.tar.xz.asc\nsha256  fc38663870f0af47a27241d980ca886c3f7d432267920deb412ac8576bef68f0  rust-1.66.1-mipsel-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-1.66.1-powerpc-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-1.66.1-powerpc-unknown-linux-gnu.tar.xz.asc\nsha256  2b1a6c54db49a9e62d60cc96c1768f405e0f4c59d698186bf3a28a1bb017b6b5  rust-1.66.1-powerpc-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-1.66.1-powerpc64-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-1.66.1-powerpc64-unknown-linux-gnu.tar.xz.asc\nsha256  777d3a650448c15048710282388e90d10740540f570f5d17ed4a2dbdabb89552  rust-1.66.1-powerpc64-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-1.66.1-powerpc64le-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-1.66.1-powerpc64le-unknown-linux-gnu.tar.xz.asc\nsha256  875bb310bae7c8c1d2d228a49aa4b547608b6c807ddc9ec44bc87272c77d869b  rust-1.66.1-powerpc64le-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-1.66.1-riscv64gc-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-1.66.1-riscv64gc-unknown-linux-gnu.tar.xz.asc\nsha256  89164ccf75909b3d02bdcb787e33876cad87e55ab0e6239b030b4b6631ed356a  rust-1.66.1-riscv64gc-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-1.66.1-s390x-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-1.66.1-s390x-unknown-linux-gnu.tar.xz.asc\nsha256  e83f9fc473072db23376783595a008cdd9b2f2e9b3be109e55939392864840eb  rust-1.66.1-s390x-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-1.66.1-x86_64-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-1.66.1-x86_64-unknown-linux-gnu.tar.xz.asc\nsha256  a201aa4595ec8015662b7103b1409a4787c6d1f1d540bb68746633527d855858  rust-1.66.1-x86_64-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-aarch64-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-aarch64-unknown-linux-gnu.tar.xz.asc\nsha256  9d96ba6a5a255339cd04af079d906753d56c85503c727279c227d24bd4987e24  rust-std-1.66.1-aarch64-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-aarch64-unknown-linux-musl.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-aarch64-unknown-linux-musl.tar.xz.asc\nsha256  520ac446f20490685cc4d73192cfbb4c9b9e55c884aa4ae2b098e3a54d891de8  rust-std-1.66.1-aarch64-unknown-linux-musl.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-arm-unknown-linux-gnueabi.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-arm-unknown-linux-gnueabi.tar.xz.asc\nsha256  42afd189ef64988f64976f767a734734bccd7c71e578780e902148c98226fa29  rust-std-1.66.1-arm-unknown-linux-gnueabi.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-arm-unknown-linux-gnueabihf.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-arm-unknown-linux-gnueabihf.tar.xz.asc\nsha256  506126773af9c3dacc506776a0b2e12fe6fa0c95eaf4f4ebb5cdbd335feb83fa  rust-std-1.66.1-arm-unknown-linux-gnueabihf.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-arm-unknown-linux-musleabihf.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-arm-unknown-linux-musleabihf.tar.xz.asc\nsha256  3d21b478fbf07bd27902bdd189e6988341f0c2c0108b538f926cea3031bc8ea6  rust-std-1.66.1-arm-unknown-linux-musleabihf.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-arm-unknown-linux-musleabi.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-arm-unknown-linux-musleabi.tar.xz.asc\nsha256  5282fc97111a7eafbead3463ed7bc0f3065332f21aec6a39a740157fe42f943a  rust-std-1.66.1-arm-unknown-linux-musleabi.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-armv5te-unknown-linux-gnueabi.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-armv5te-unknown-linux-gnueabi.tar.xz.asc\nsha256  0ebf0178bbe9c5572d1db89e190dee23aef0e2f667995abedbd66e33d0bd73ab  rust-std-1.66.1-armv5te-unknown-linux-gnueabi.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-armv5te-unknown-linux-musleabi.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-armv5te-unknown-linux-musleabi.tar.xz.asc\nsha256  938e7442c21ea0895c44ec78fa718ea1d3abe32ed0425ed328c905e188af250e  rust-std-1.66.1-armv5te-unknown-linux-musleabi.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-armv7-unknown-linux-gnueabihf.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-armv7-unknown-linux-gnueabihf.tar.xz.asc\nsha256  bdc491f4c05669e7a3382b6bfdaeaa20e2cfa5ef553305df0e0d73729a45e6e4  rust-std-1.66.1-armv7-unknown-linux-gnueabihf.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-armv7-unknown-linux-gnueabi.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-armv7-unknown-linux-gnueabi.tar.xz.asc\nsha256  d75c6dc3c00d662b0d3f6ce7fde0f76057542edfbc97a20b29247842c8a711d2  rust-std-1.66.1-armv7-unknown-linux-gnueabi.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-armv7-unknown-linux-musleabihf.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-armv7-unknown-linux-musleabihf.tar.xz.asc\nsha256  830285e5388081c68fac9dc955aa824a4d919b0e24eadc6e0b95b30103d79db9  rust-std-1.66.1-armv7-unknown-linux-musleabihf.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-armv7-unknown-linux-musleabi.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-armv7-unknown-linux-musleabi.tar.xz.asc\nsha256  d720bd1e493f53797f90d83dbe6d52ecbe1ff3cae282f4b2e18c37fe92c9adf6  rust-std-1.66.1-armv7-unknown-linux-musleabi.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-i586-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-i586-unknown-linux-gnu.tar.xz.asc\nsha256  90eb8e2490283930e682b79842d664d4867414563353d53dafc47eccf44aea17  rust-std-1.66.1-i586-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-i586-unknown-linux-musl.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-i586-unknown-linux-musl.tar.xz.asc\nsha256  c4bab2d63223d0c6e63806082e30d8c38b37eefc10ee2e7380971e3012c00bca  rust-std-1.66.1-i586-unknown-linux-musl.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-i686-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-i686-unknown-linux-gnu.tar.xz.asc\nsha256  b32cbbb9002f8a20b302823a2ff122a91f077b5e1a7bc1340de690ded86bf10b  rust-std-1.66.1-i686-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-i686-unknown-linux-musl.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-i686-unknown-linux-musl.tar.xz.asc\nsha256  52013329eb6697d94f5dce01dd509b4b93b473c18a3a2c05d0230b9dfeab14d1  rust-std-1.66.1-i686-unknown-linux-musl.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-mips-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-mips-unknown-linux-gnu.tar.xz.asc\nsha256  e6029b4cec5d6c06c34a0dbec614fa252fdc8cf31013d6e561112cf90f742568  rust-std-1.66.1-mips-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-mips-unknown-linux-musl.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-mips-unknown-linux-musl.tar.xz.asc\nsha256  23f917eccaca59d4c911eb96d8ffefe86834dbcdf902c9ab6dad8558c31c4575  rust-std-1.66.1-mips-unknown-linux-musl.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-mips64-unknown-linux-gnuabi64.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-mips64-unknown-linux-gnuabi64.tar.xz.asc\nsha256  70d1406e0981d5d31c1d3f85c848bba0476e0ff6203e7706f66b4d2212f01b66  rust-std-1.66.1-mips64-unknown-linux-gnuabi64.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-mips64-unknown-linux-muslabi64.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-mips64-unknown-linux-muslabi64.tar.xz.asc\nsha256  0fd221d4b4205ce548e83f0e7416c8332eb12b64d5a43c0b3ed61e9f7d6edf13  rust-std-1.66.1-mips64-unknown-linux-muslabi64.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-mips64el-unknown-linux-gnuabi64.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-mips64el-unknown-linux-gnuabi64.tar.xz.asc\nsha256  132d6d5750a877972ebc6f23e831f2ef3077465b2ab24ca645d32ea83c496fe3  rust-std-1.66.1-mips64el-unknown-linux-gnuabi64.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-mips64el-unknown-linux-muslabi64.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-mips64el-unknown-linux-muslabi64.tar.xz.asc\nsha256  533f370368ac8b6192e1450289c64544ebf9cacc38c3a52ef6c0ecded7ee6fa5  rust-std-1.66.1-mips64el-unknown-linux-muslabi64.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-mipsel-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-mipsel-unknown-linux-gnu.tar.xz.asc\nsha256  8bfa3d6079c6df049978fe61b1ccaf992aecd006e23df2439ecfc883bd8bc31b  rust-std-1.66.1-mipsel-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-mipsel-unknown-linux-musl.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-mipsel-unknown-linux-musl.tar.xz.asc\nsha256  d7028820888d0decde047a6e77b866e690532aa09522c9a23a3fbf8780a72257  rust-std-1.66.1-mipsel-unknown-linux-musl.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-powerpc-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-powerpc-unknown-linux-gnu.tar.xz.asc\nsha256  417b12a9bf090d694514937cd8c321ed625f155248f63c0de8207b17fa4b35b1  rust-std-1.66.1-powerpc-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-powerpc64-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-powerpc64-unknown-linux-gnu.tar.xz.asc\nsha256  7074c4ea9fcc683ceb0adcca6ba07544a1d91f0e5d2a4cf14c81eb14316ebf35  rust-std-1.66.1-powerpc64-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-powerpc64le-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-powerpc64le-unknown-linux-gnu.tar.xz.asc\nsha256  4c64a09be872b5832b50d681fbe29691b6a5d3e23ee5535020fa22b8b453c770  rust-std-1.66.1-powerpc64le-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-riscv64gc-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-riscv64gc-unknown-linux-gnu.tar.xz.asc\nsha256  776eff6f451845e88224714ee6da7819e34f01b7625bf927394c2b91e5c8243c  rust-std-1.66.1-riscv64gc-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-s390x-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-s390x-unknown-linux-gnu.tar.xz.asc\nsha256  51d1567e1d28e43c2165886f5a4955dcdaa41aa5ddcec5fb08200491fd1f6062  rust-std-1.66.1-s390x-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-sparc64-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-sparc64-unknown-linux-gnu.tar.xz.asc\nsha256  3aee03fa61c28bb242023efb09a22e38a76b075cc72bcad9894560be8b28a927  rust-std-1.66.1-sparc64-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-x86_64-unknown-linux-gnu.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-x86_64-unknown-linux-gnu.tar.xz.asc\nsha256  c5e2c9b160bd8d99514f13cfbc0e42a722fd9ca14e6aaca4b9b77731a7a48377  rust-std-1.66.1-x86_64-unknown-linux-gnu.tar.xz\n# From https://static.rust-lang.org/dist/rust-std-1.66.1-x86_64-unknown-linux-musl.tar.xz.sha256\n# Verified using https://static.rust-lang.org/dist/rust-std-1.66.1-x86_64-unknown-linux-musl.tar.xz.asc\nsha256  a9710727ba28955deb7fbec799faed19486c9af3c7e3088ec6659a257515ffca  rust-std-1.66.1-x86_64-unknown-linux-musl.tar.xz\n# Locally generated\nsha256  62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a  LICENSE-APACHE\nsha256  23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3  LICENSE-MIT\n"
  },
  {
    "path": "package/rust-bin/rust-bin.mk",
    "content": "################################################################################\n#\n# rust-bin\n#\n################################################################################\n\n# When updating this version, check whether support/download/cargo-post-process\n# still generates the same archives.\nRUST_BIN_VERSION = 1.66.1\nRUST_BIN_SITE = https://static.rust-lang.org/dist\nRUST_BIN_LICENSE = Apache-2.0 or MIT\nRUST_BIN_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT\n\nHOST_RUST_BIN_PROVIDES = host-rustc\n\nHOST_RUST_BIN_SOURCE = rust-$(RUST_BIN_VERSION)-$(RUSTC_HOST_NAME).tar.xz\n\nifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y)\nHOST_RUST_BIN_EXTRA_DOWNLOADS += rust-std-$(RUST_BIN_VERSION)-$(RUSTC_TARGET_NAME).tar.xz\nendif\n\nHOST_RUST_BIN_LIBSTD_HOST_PREFIX = rust-std-$(RUSTC_HOST_NAME)\n\ndefine HOST_RUST_BIN_LIBSTD_EXTRACT\n\tmkdir -p $(@D)/std\n\t$(foreach f,$(HOST_RUST_BIN_EXTRA_DOWNLOADS), \\\n\t\t$(call suitable-extractor,$(f)) $(HOST_RUST_BIN_DL_DIR)/$(f) | \\\n\t\t\t$(TAR) -C $(@D)/std $(TAR_OPTIONS) -\n\t)\n\tmkdir -p $(@D)/rustc/lib/rustlib/$(RUSTC_HOST_NAME)/lib\n\tcd $(@D)/rustc/lib/rustlib/$(RUSTC_HOST_NAME)/lib; \\\n\t\tln -sf ../../../../../$(HOST_RUST_BIN_LIBSTD_HOST_PREFIX)/lib/rustlib/$(RUSTC_HOST_NAME)/lib/* .\nendef\n\nHOST_RUST_BIN_POST_EXTRACT_HOOKS += HOST_RUST_BIN_LIBSTD_EXTRACT\n\nHOST_RUST_BIN_INSTALL_COMMON_OPTS = \\\n\t--prefix=$(HOST_DIR) \\\n\t--disable-ldconfig\n\nHOST_RUST_BIN_INSTALL_OPTS = \\\n\t$(HOST_RUST_BIN_INSTALL_COMMON_OPTS) \\\n\t--components=rustc,cargo,rust-std-$(RUSTC_HOST_NAME)\n\ndefine HOST_RUST_BIN_INSTALL_RUSTC\n\t(cd $(@D); \\\n\t\t./install.sh $(HOST_RUST_BIN_INSTALL_OPTS))\nendef\n\nifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y)\ndefine HOST_RUST_BIN_INSTALL_LIBSTD_TARGET\n\t(cd $(@D)/std/rust-std-$(RUST_BIN_VERSION)-$(RUSTC_TARGET_NAME); \\\n\t\t./install.sh $(HOST_RUST_BIN_INSTALL_COMMON_OPTS))\nendef\nendif\n\ndefine HOST_RUST_BIN_INSTALL_CMDS\n\t$(HOST_RUST_BIN_INSTALL_RUSTC)\n\t$(HOST_RUST_BIN_INSTALL_LIBSTD_TARGET)\nendef\n\nHOST_RUST_BIN_POST_INSTALL_HOOKS += HOST_RUST_INSTALL_CARGO_CONFIG\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/rustc/Config.in.host",
    "content": "# All host rust packages should depend on this option\nconfig BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\n# The pre-built Rust standard library is only available for a number\n# of architectures/C libraries combinations, with different levels of\n# support: Tier 1 platforms, Tier 2 platforms with host tools, Tier 2\n# platforms, Tier 3 platforms. Below, we support Tier 1, Tier 2 with\n# host tools and Tier 2 platforms.\n\n# The below entries match Tier 1 platforms as described at\n# https://doc.rust-lang.org/nightly/rustc/platform-support.html.\nconfig BR2_PACKAGE_HOST_RUSTC_TARGET_TIER1_PLATFORMS\n\tbool\n\t# aarch64-unknown-linux-gnu\n\tdefault y if BR2_aarch64 && BR2_TOOLCHAIN_USES_GLIBC\n\t# i686-unknown-linux-gnu\n\tdefault y if (BR2_i686 || BR2_x86_pentiumpro || BR2_X86_CPU_HAS_MMX) && BR2_TOOLCHAIN_USES_GLIBC\n\t# x86_64-unknown-linux-gnu\n\tdefault y if BR2_x86_64 && BR2_TOOLCHAIN_USES_GLIBC\n\n# The below entries match Tier 2 platforms with host tools as\n# described at\n# https://doc.rust-lang.org/nightly/rustc/platform-support.html.\nconfig BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_HOST_TOOLS_PLATFORMS\n\tbool\n\t# aarch64-unknown-linux-musl\n\tdefault y if BR2_aarch64 && BR2_TOOLCHAIN_USES_MUSL\n\t# arm-unknown-linux-gnueabi\n\tdefault y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_GLIBC\n\t# arm-unknown-linux-gnueabihf\n\tdefault y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_GLIBC\n\t# armv7-unknown-linux-gnueabihf\n\tdefault y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_GLIBC\n\t# mips-unknown-linux-gnu\n\tdefault y if BR2_mips && BR2_TOOLCHAIN_USES_GLIBC && !BR2_MIPS_CPU_MIPS32R6\n\t# mips64-unknown-linux-gnuabi64\n\tdefault y if BR2_mips64 && BR2_TOOLCHAIN_USES_GLIBC && BR2_MIPS_NABI64 && !BR2_MIPS_CPU_MIPS64R6\n\t# mipsel-unknown-linux-gnu\n\tdefault y if BR2_mipsel && BR2_TOOLCHAIN_USES_GLIBC && !BR2_MIPS_CPU_MIPS32R6\n\t# mips64el-unknown-linux-gnuabi64\n\tdefault y if BR2_mips64el && BR2_TOOLCHAIN_USES_GLIBC && BR2_MIPS_NABI64 && !BR2_MIPS_CPU_MIPS64R6\n\t# powerpc-unknown-linux-gnu\n\tdefault y if BR2_powerpc && BR2_TOOLCHAIN_USES_GLIBC\n\t# powerpc64-unknown-linux-gnu\n\tdefault y if BR2_powerpc64 && BR2_TOOLCHAIN_USES_GLIBC\n\t# powerpc64le-unknown-linux-gnu\n\tdefault y if BR2_powerpc64le && BR2_TOOLCHAIN_USES_GLIBC\n\t# riscv64gc-unknown-linux-gnu\n\t# \"g\" stands for imafd, and we also need \"c\".\n\tdefault y if BR2_riscv && BR2_RISCV_ISA_RVI && BR2_RISCV_ISA_RVM && \\\n\t\t\tBR2_RISCV_ISA_RVA && BR2_RISCV_ISA_RVF && \\\n\t\t\tBR2_RISCV_ISA_RVD && BR2_RISCV_ISA_RVC && \\\n\t\t\tBR2_TOOLCHAIN_USES_GLIBC\n\t# x86_64-unknown-linux-musl\n\tdefault y if BR2_x86_64 && BR2_TOOLCHAIN_USES_MUSL\n\n# The below entries match Tier 2 platforms without host tools as\n# described at\n# https://doc.rust-lang.org/nightly/rustc/platform-support.html.\nconfig BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_PLATFORMS\n\tbool\n\t# arm-unknown-linux-musleabi\n\tdefault y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_MUSL\n\t# arm-unknown-linux-musleabihf\n\tdefault y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_MUSL\n\t# armv5te-unknown-linux-gnueabi\n\tdefault y if BR2_ARM_CPU_ARMV5 && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_GLIBC\n\t# armv5te-unknown-linux-musleabi\n\tdefault y if BR2_ARM_CPU_ARMV5 && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_MUSL\n\t# armv7-unknown-linux-gnueabi\n\tdefault y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_GLIBC\n\t# armv7-unknown-linux-musleabi\n\tdefault y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABI && BR2_TOOLCHAIN_USES_MUSL\n\t# armv7-unknown-linux-musleabihf\n\tdefault y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_MUSL\n\t# i586-unknown-linux-gnu\n\tdefault y if BR2_i586 && BR2_TOOLCHAIN_USES_GLIBC\n\t# i586-unknown-linux-musl\n\tdefault y if BR2_i586 && BR2_TOOLCHAIN_USES_MUSL\n\t# i686-unknown-linux-musl\n\tdefault y if (BR2_i686 || BR2_x86_pentiumpro || BR2_X86_CPU_HAS_MMX) && BR2_TOOLCHAIN_USES_MUSL\n\t# mips-unknown-linux-musl\n\tdefault y if BR2_mips && BR2_TOOLCHAIN_USES_MUSL && !BR2_MIPS_CPU_MIPS32R6\n\t# mips64-unknown-linux-muslabi64\n\tdefault y if BR2_mips64 && BR2_TOOLCHAIN_USES_MUSL && BR2_MIPS_NABI64 && !BR2_MIPS_CPU_MIPS64R6\n\t# mips64el-unknown-linux-muslabi64\n\tdefault y if BR2_mips64el && BR2_TOOLCHAIN_USES_MUSL && BR2_MIPS_NABI64 && !BR2_MIPS_CPU_MIPS64R6\n\t# mipsel-unknown-linux-musl\n\tdefault y if BR2_mipsel && BR2_TOOLCHAIN_USES_MUSL && !BR2_MIPS_CPU_MIPS32R6\n\t# sparc64-unknown-linux-gnu\n\tdefault y if BR2_sparc64 && BR2_TOOLCHAIN_USES_GLIBC\n\n# All target rust packages should depend on this option\nconfig BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_PACKAGE_HOST_RUSTC_TARGET_TIER1_PLATFORMS\n\tdefault y if BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_HOST_TOOLS_PLATFORMS\n\tdefault y if BR2_PACKAGE_HOST_RUSTC_TARGET_TIER2_PLATFORMS\n\tdepends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS\n\nconfig BR2_PACKAGE_HOST_RUSTC_ARCH\n\tstring\n\tdefault \"armv7\"  if BR2_ARM_CPU_ARMV7A\n\tdefault BR2_ARCH if !BR2_ARM_CPU_ARMV7A\n\nconfig BR2_PACKAGE_HOST_RUSTC_ABI\n\tstring\n\tdefault \"eabi\"   if BR2_ARM_EABI\n\tdefault \"eabihf\" if BR2_ARM_EABIHF\n\tdefault \"abi64\"  if BR2_MIPS_NABI64\n\nconfig BR2_PACKAGE_HOST_RUSTC\n\tbool \"host rustc\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS\n\thelp\n\t  Compiler for the Rust language\n\n\t  http://www.rust-lang.org\n\nif BR2_PACKAGE_HOST_RUSTC\n\nchoice\n\tprompt \"Rust compiler variant\"\n\tdefault BR2_PACKAGE_HOST_RUST_BIN\n\thelp\n\t  Select a Rust compiler\n\nconfig BR2_PACKAGE_HOST_RUST\n\tbool \"host rust\"\n\t# RUSTC_TARGET_NAME must be set for building host-rust\n\t# otherwise config.toml is broken.\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\t# triggers ICE on trunc_int_for_mode, at explow.c:56\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 || !BR2_aarch64\n\thelp\n\t  This package will build the compiler for the host as well as\n\t  two flavors of the standard library: one for the host, another\n\t  for the target. Both are installed in the host directory.\n\ncomment \"host-rust needs a toolchain w/ gcc >= 5\"\n\tdepends on BR2_aarch64\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\nconfig BR2_PACKAGE_HOST_RUST_BIN\n\tbool \"host rust (pre-built)\"\n\thelp\n\t  This package will install pre-built versions of the compiler\n\t  for the host and the Rust standard library for the target.\n\nendchoice\n\nendif\n\nconfig BR2_PACKAGE_PROVIDES_HOST_RUSTC\n\tstring\n\tdefault \"host-rust\" if BR2_PACKAGE_HOST_RUST\n\t# Default to host-rust-bin as long as host arch supports it\n\tdefault \"host-rust-bin\" if !BR2_PACKAGE_HOST_RUST\n\tdepends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS\n"
  },
  {
    "path": "package/rustc/cargo-config.in",
    "content": "[target.@RUSTC_TARGET_NAME@]\nlinker = \"@CROSS_PREFIX@gcc\"\n"
  },
  {
    "path": "package/rustc/rustc.mk",
    "content": "################################################################################\n#\n# rustc\n#\n################################################################################\n\nRUSTC_ARCH = $(call qstrip,$(BR2_PACKAGE_HOST_RUSTC_ARCH))\nRUSTC_ABI = $(call qstrip,$(BR2_PACKAGE_HOST_RUSTC_ABI))\n\nifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y)\nRUSTC_TARGET_NAME = $(RUSTC_ARCH)-unknown-linux-$(LIBC)$(RUSTC_ABI)\nendif\n\nifeq ($(HOSTARCH),x86)\nRUSTC_HOST_ARCH = i686\nelse\nRUSTC_HOST_ARCH = $(HOSTARCH)\nendif\n\nRUSTC_HOST_NAME = $(RUSTC_HOST_ARCH)-unknown-linux-gnu\n\n$(eval $(host-virtual-package))\n\nifeq ($(BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS),y)\ndefine RUSTC_INSTALL_CARGO_CONFIG\n\tmkdir -p $(HOST_DIR)/share/cargo\n\tsed -e 's/@RUSTC_TARGET_NAME@/$(RUSTC_TARGET_NAME)/' \\\n\t\t-e 's/@CROSS_PREFIX@/$(notdir $(TARGET_CROSS))/' \\\n\t\tpackage/rustc/cargo-config.in \\\n\t\t> $(HOST_DIR)/share/cargo/config\nendef\n# check-package disable TypoInPackageVariable - TOOLCHAIN intended\nTOOLCHAIN_POST_INSTALL_STAGING_HOOKS += RUSTC_INSTALL_CARGO_CONFIG\nendif\n"
  },
  {
    "path": "package/rwmem/Config.in",
    "content": "config BR2_PACKAGE_RWMEM\n\tbool \"rwmem\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR # fmt\n\tselect BR2_PACKAGE_FMT\n\tselect BR2_PACKAGE_INIH\n\thelp\n\t  Simple program to read/write from/to any location in memory.\n\n\t  https://github.com/tomba/rwmem\n\ncomment \"rwmem needs a toolchain w/ C++, wchar, gcc >= 5\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_5\n"
  },
  {
    "path": "package/rwmem/rwmem.hash",
    "content": "sha256  55d28f029c0cd5c21d3e1c89371e2905d5217f571ef5389ed0fce163804d1c4a  rwmem-c8291705c82bb0686be9adf6a427a2b72114719a.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/rwmem/rwmem.mk",
    "content": "################################################################################\n#\n# rwmem\n#\n################################################################################\n\nRWMEM_VERSION = c8291705c82bb0686be9adf6a427a2b72114719a\nRWMEM_SITE = $(call github,tomba,rwmem,$(RWMEM_VERSION))\nRWMEM_LICENSE = GPL-2.0\nRWMEM_LICENSE_FILES = LICENSE\nRWMEM_CONF_OPTS = -Dpyrwmem=disabled\nRWMEM_DEPENDENCIES = host-pkgconf fmt inih\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/rygel/Config.in",
    "content": "config BR2_PACKAGE_RYGEL\n\tbool \"rygel\"\n\tdepends on BR2_USE_WCHAR # gupnp-av\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # gupnp-av\n\tdepends on BR2_USE_MMU # gupnp-av\n\tselect BR2_PACKAGE_GUPNP_AV\n\tselect BR2_PACKAGE_LIBGEE\n\tselect BR2_PACKAGE_LIBMEDIAART\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  Rygel is a home media solution (UPnP AV MediaServer) that\n\t  allows you to easily share audio, video and pictures to other\n\t  devices.\n\n\t  Additionally, media player software may use Rygel to become a\n\t  MediaRenderer that may be controlled remotely by a UPnP or\n\t  DLNA Controller.\n\n\t  Rygel achieves interoperability with other devices in the\n\t  market by trying to conform to the very strict requirements of\n\t  DLNA and by converting media on-the-fly to formats that client\n\t  devices can handle.\n\n\t  Most Rygel functionality is implemented through a plug-in\n\t  mechanism.\n\n\t  https://wiki.gnome.org/Projects/Rygel\n\nif BR2_PACKAGE_RYGEL\n\nchoice\n\tprompt \"media engine\"\n\tdefault BR2_PACKAGE_RYGEL_MEDIA_ENGINE_SIMPLE\n\nconfig BR2_PACKAGE_RYGEL_MEDIA_ENGINE_SIMPLE\n\tbool \"simple\"\n\nconfig BR2_PACKAGE_RYGEL_MEDIA_ENGINE_GSTREAMER1\n\tbool \"gstreamer1\"\n\tselect BR2_PACKAGE_GDK_PIXBUF\n\tselect BR2_PACKAGE_GUPNP_DLNA\n\tselect BR2_PACKAGE_GSTREAMER1\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\nendchoice\n\ncomment \"rygel needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\nendif # BR2_PACKAGE_RYGEL\n"
  },
  {
    "path": "package/rygel/S99rygel",
    "content": "#!/bin/sh\n\nNAME=rygel\nPIDFILE=/var/run/$NAME.pid\nDAEMON=/usr/bin/$NAME\n\nstart() {\n\tprintf \"Starting $NAME: \"\n\tstart-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nstop() {\n\tprintf \"Stopping $NAME: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart|reload}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/rygel/rygel.hash",
    "content": "# Hash from: http://ftp.gnome.org/pub/gnome/sources/rygel/0.38/rygel-0.38.3.sha256sum:\nsha256  08c21a577f7bdad26446a75ffa32778b26842c3b1188165f0b19818559747d00  rygel-0.38.3.tar.xz\n\n# Locally calculated\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\nsha256  c7d881be8ae01162510e982a32001446c6d6d18a9cecc89cc41a28bd215a0262  COPYING.logo\n"
  },
  {
    "path": "package/rygel/rygel.mk",
    "content": "################################################################################\n#\n# rygel\n#\n################################################################################\n\nRYGEL_VERSION_MAJOR = 0.38\nRYGEL_VERSION = $(RYGEL_VERSION_MAJOR).3\nRYGEL_SOURCE = rygel-$(RYGEL_VERSION).tar.xz\nRYGEL_SITE = http://ftp.gnome.org/pub/gnome/sources/rygel/$(RYGEL_VERSION_MAJOR)\nRYGEL_LICENSE = LGPL-2.1+, CC-BY-SA-3.0 (logo)\nRYGEL_LICENSE_FILES = COPYING COPYING.logo\nRYGEL_DEPENDENCIES = \\\n\tgupnp-av \\\n\tlibgee \\\n\tlibmediaart \\\n\tsqlite \\\n\t$(TARGET_NLS_DEPENDENCIES)\nRYGEL_INSTALL_STAGING = YES\n\nRYGEL_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\nRYGEL_CONF_OPTS += \\\n\t--disable-apidocs \\\n\t--disable-coverage \\\n\t--disable-example-plugins \\\n\t--enable-external-plugin \\\n\t--enable-lms-plugin \\\n\t--enable-mpris-plugin \\\n\t--enable-ruih-plugin \\\n\t--disable-tracker-plugin\n\nifeq ($(BR2_PACKAGE_GDK_PIXBUF),y)\nRYGEL_DEPENDENCIES += gdk-pixbuf\nendif\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nRYGEL_CONF_OPTS += --enable-introspection\nRYGEL_DEPENDENCIES += gobject-introspection\nelse\nRYGEL_CONF_OPTS += --disable-introspection\nendif\n\nifeq ($(BR2_PACKAGE_RYGEL_MEDIA_ENGINE_GSTREAMER1),y)\nRYGEL_CONF_OPTS += \\\n\t--with-media-engine=gstreamer \\\n\t--enable-playbin-plugin \\\n\t--enable-media_export-plugin \\\n\t--enable-gst-launch-plugin\nRYGEL_DEPENDENCIES += \\\n\tgupnp-dlna \\\n\tgst1-plugins-base \\\n\tgstreamer1\nelse ifeq ($(BR2_PACKAGE_RYGEL_MEDIA_ENGINE_SIMPLE),y)\nRYGEL_CONF_OPTS += \\\n\t--with-media-engine=simple \\\n\t--disable-playbin-plugin \\\n\t--disable-media_export-plugin \\\n\t--disable-gst-launch-plugin\nendif\n\nifeq ($(BR2_PACKAGE_LIBGTK3_X11),y)\nRYGEL_CONF_OPTS += --with-ui\nRYGEL_DEPENDENCIES += libgtk3\nelse\nRYGEL_CONF_OPTS += --without-ui\nendif\n\ndefine RYGEL_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/rygel/S99rygel \\\n\t\t$(TARGET_DIR)/etc/init.d/S99rygel\nendef\n\ndefine RYGEL_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/rygel/rygel.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/rygel.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/rygel/rygel.service",
    "content": "[Unit]\nDescription=Rygel DLNA server\nAfter=network.target\n\n[Service]\nExecStart=/usr/bin/rygel\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/s390-tools/0004-zipl-boot-Makefile-no-pie-is-not-a-valid-ld-flag.patch",
    "content": "From 9fd3c733c645be13a2e39a3bae3983f88530b48d Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Lukas=20M=C3=A4rdian?= <lukas.maerdian@canonical.com>\nDate: Thu, 7 Jan 2021 12:46:22 +0100\nSubject: [PATCH] zipl/boot/Makefile: -no-pie is not a valid ld flag\n\nThe \"-no-pie\" option never has been a valid flag of ld. It breaks the build with newer binutils.\nSee:\nhttps://sourceware.org/bugzilla/show_bug.cgi?id=27050\nhttps://bugs.launchpad.net/ubuntu/+source/s390-tools/+bug/1907789\n\n[Retrieved from: https://github.com/ibm-s390-linux/s390-tools/pull/106]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n zipl/boot/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/zipl/boot/Makefile b/zipl/boot/Makefile\nindex a2e5f190..b81df778 100644\n--- a/zipl/boot/Makefile\n+++ b/zipl/boot/Makefile\n@@ -109,7 +109,7 @@ stage3.bin:\tstage3.exec\n \t\t$< $@\n \n data.o: $(FILES)\n-\t$(LD) $(NO_PIE_LDFLAGS) -r -b binary -o data.o $(FILES)\n+\t$(LD) -r -b binary -o data.o $(FILES)\n \n data.h: data.o\n \trm -f data.h\n"
  },
  {
    "path": "package/s390-tools/Config.in",
    "content": "comment \"s390-tools needs a glibc toolchain w/ C++, wchar, dynamic library\"\n\tdepends on BR2_s390x\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_S390_TOOLS\n\tbool \"s390-tools\"\n\tdepends on BR2_s390x\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Tools for use with the s390 Linux kernel and device drivers.\n\n\t  https://github.com/ibm-s390-linux/s390-tools\n"
  },
  {
    "path": "package/s390-tools/s390-tools.hash",
    "content": "# Locally computed:\nsha256  a1e2118152a85201984d2045033d49f7fd92e8cd0ea80ae0a5ebeb0d258cdedb  s390-tools-2.18.0.tar.gz\nsha256  cca17a9a944ebec769adee4aebd805c912c357785ff2705a99ffe68563021f75  LICENSE\n"
  },
  {
    "path": "package/s390-tools/s390-tools.mk",
    "content": "################################################################################\n#\n# s390-tools\n#\n################################################################################\n\nS390_TOOLS_VERSION = 2.18.0\nS390_TOOLS_SITE = $(call github,ibm-s390-linux,s390-tools,v$(S390_TOOLS_VERSION))\nS390_TOOLS_LICENSE = MIT\nS390_TOOLS_LICENSE_FILES = LICENSE\nS390_TOOLS_DEPENDENCIES = zlib\n\nS390_TOOLS_MAKE_OPTS = \\\n\tARCH=$(BR2_ARCH) \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -D_GNU_SOURCE\" \\\n\tLINK=\"$(TARGET_CC)\" \\\n\tLINKXX=\"$(TARGET_CXX)\"\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nS390_TOOLS_DEPENDENCIES += libcurl\nS390_TOOLS_MAKE_OPTS += \\\n\tCURL_CONFIG=$(STAGING_DIR)/usr/bin/curl-config \\\n\tHAVE_CURL=1 \\\n\tHAVE_LIBCURL=1\nelse\nS390_TOOLS_MAKE_OPTS += \\\n\tHAVE_CURL=0 \\\n\tHAVE_LIBCURL=0\nendif\n\nifeq ($(BR2_PACKAGE_JSON_C),y)\nS390_TOOLS_DEPENDENCIES += json-c\nS390_TOOLS_MAKE_OPTS += HAVE_JSONC=1\nelse\nS390_TOOLS_MAKE_OPTS += HAVE_JSONC=0\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nS390_TOOLS_DEPENDENCIES += openssl\nS390_TOOLS_MAKE_OPTS += HAVE_OPENSSL=1\nelse\nS390_TOOLS_MAKE_OPTS += HAVE_OPENSSL=0\nendif\n\nifeq ($(BR2_PACKAGE_CRYPTSETUP),y)\nS390_TOOLS_DEPENDENCIES += cryptsetup\nS390_TOOLS_MAKE_OPTS += HAVE_CRYPTSETUP2=1\nelse\nS390_TOOLS_MAKE_OPTS += HAVE_CRYPTSETUP2=0\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nS390_TOOLS_DEPENDENCIES += libglib2\nS390_TOOLS_MAKE_OPTS += HAVE_GLIB2=1\nelse\nS390_TOOLS_MAKE_OPTS += HAVE_GLIB2=0\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nS390_TOOLS_DEPENDENCIES += libxml2\nS390_TOOLS_MAKE_OPTS += \\\n\tHAVE_LIBXML2=1 \\\n\tXML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config\nelse\nS390_TOOLS_MAKE_OPTS += HAVE_LIBXML2=0\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nS390_TOOLS_DEPENDENCIES += ncurses\nS390_TOOLS_MAKE_OPTS += HAVE_NCURSES=1\nelse\nS390_TOOLS_MAKE_OPTS += HAVE_NCURSES=0\nendif\n\nifeq ($(BR2_PACKAGE_LIBPFM4),y)\nS390_TOOLS_DEPENDENCIES += libpfm4\nS390_TOOLS_MAKE_OPTS += HAVE_PFM=1\nelse\nS390_TOOLS_MAKE_OPTS += HAVE_PFM=0\nendif\n\nifeq ($(BR2_PACKAGE_LIBFUSE),y)\nS390_TOOLS_DEPENDENCIES += libfuse\nS390_TOOLS_MAKE_OPTS += HAVE_FUSE=1\nelse\nS390_TOOLS_MAKE_OPTS += HAVE_FUSE=0\nendif\n\nifeq ($(BR2_PACKAGE_NETSNMP),y)\nS390_TOOLS_DEPENDENCIES += netsnmp\nS390_TOOLS_MAKE_OPTS += \\\n\tNET_SNMP_CONFIG=$(STAGING_DIR)/usr/bin/net-snmp-config \\\n\tHAVE_SNMP=1\nelse\nS390_TOOLS_MAKE_OPTS += HAVE_SNMP=0\nendif\n\ndefine S390_TOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\t$(S390_TOOLS_MAKE_OPTS)\nendef\n\ndefine S390_TOOLS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) install \\\n\t\t$(S390_TOOLS_MAKE_OPTS) DESTDIR=\"$(TARGET_DIR)\"\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/s6/Config.in",
    "content": "config BR2_PACKAGE_S6\n\tbool \"s6\"\n\tdepends on BR2_USE_MMU # execline\n\tselect BR2_PACKAGE_EXECLINE\n\thelp\n\t  s6 is a small suite of programs for UNIX, designed to allow\n\t  process supervision (a.k.a service supervision), in the line\n\t  of daemontools and runit, as well as various operations on\n\t  processes and daemons.\n\n\t  http://skarnet.org/software/s6/\n"
  },
  {
    "path": "package/s6/s6.hash",
    "content": "# Locally generated\nsha256  1d21373151704150df0e8ed199f097f6ee5d2befb9a68aca4f20f3862e5d8757  s6-2.10.0.3.tar.gz\nsha256  adecb8bedfaae27fcfe65ecb3ef0e2e71aa2a2b49dc21886a200bc677d93e6ec  COPYING\n"
  },
  {
    "path": "package/s6/s6.mk",
    "content": "################################################################################\n#\n# s6\n#\n################################################################################\n\nS6_VERSION = 2.10.0.3\nS6_SITE = http://skarnet.org/software/s6\nS6_LICENSE = ISC\nS6_LICENSE_FILES = COPYING\nS6_INSTALL_STAGING = YES\nS6_DEPENDENCIES = execline\n\nS6_CONF_OPTS = \\\n\t--prefix=/ \\\n\t--with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \\\n\t--with-include=$(STAGING_DIR)/include \\\n\t--with-dynlib=$(STAGING_DIR)/lib \\\n\t--with-lib=$(STAGING_DIR)/lib/execline \\\n\t--with-lib=$(STAGING_DIR)/lib/skalibs \\\n\t$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \\\n\t$(SHARED_STATIC_LIBS_OPTS)\n\ndefine S6_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_CONF_OPTS))\nendef\n\ndefine S6_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine S6_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\ndefine S6_REMOVE_STATIC_LIB_DIR\n\trm -rf $(TARGET_DIR)/usr/lib/s6\nendef\n\nS6_POST_INSTALL_TARGET_HOOKS += S6_REMOVE_STATIC_LIB_DIR\n\ndefine S6_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\nHOST_S6_DEPENDENCIES = host-execline\n\nHOST_S6_CONF_OPTS = \\\n\t--prefix=$(HOST_DIR) \\\n\t--with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \\\n\t--with-include=$(HOST_DIR)/include \\\n\t--with-dynlib=$(HOST_DIR)/lib \\\n\t--disable-static \\\n\t--enable-shared \\\n\t--disable-allstatic\n\ndefine HOST_S6_CONFIGURE_CMDS\n\t(cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_S6_CONF_OPTS))\nendef\n\ndefine HOST_S6_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_S6_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) install-dynlib install-include\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/s6-dns/Config.in",
    "content": "config BR2_PACKAGE_S6_DNS\n\tbool \"s6-dns\"\n\tdepends on BR2_USE_MMU # skalibs\n\tselect BR2_PACKAGE_SKALIBS\n\thelp\n\t  s6-dns is a suite of DNS client programs and libraries for\n\t  Unix systems, as an alternative to the BIND, djbdns or other\n\t  DNS clients.\n\n\t  http://skarnet.org/software/s6-dns/\n"
  },
  {
    "path": "package/s6-dns/s6-dns.hash",
    "content": "# Locally generated\nsha256  0c1d50e5d7bc65cbf59b6f37fbd7f6f5645694224bb8c4dc1943d7921bc74f63  s6-dns-2.3.5.1.tar.gz\nsha256  adecb8bedfaae27fcfe65ecb3ef0e2e71aa2a2b49dc21886a200bc677d93e6ec  COPYING\n"
  },
  {
    "path": "package/s6-dns/s6-dns.mk",
    "content": "################################################################################\n#\n# s6-dns\n#\n################################################################################\n\nS6_DNS_VERSION = 2.3.5.1\nS6_DNS_SITE = http://skarnet.org/software/s6-dns\nS6_DNS_LICENSE = ISC\nS6_DNS_LICENSE_FILES = COPYING\nS6_DNS_INSTALL_STAGING = YES\nS6_DNS_DEPENDENCIES = skalibs\n\nS6_DNS_CONF_OPTS = \\\n\t--prefix=/ \\\n\t--with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \\\n\t--with-include=$(STAGING_DIR)/include \\\n\t--with-dynlib=$(STAGING_DIR)/lib \\\n\t--with-lib=$(STAGING_DIR)/lib/skalibs \\\n\t$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \\\n\t$(SHARED_STATIC_LIBS_OPTS)\n\ndefine S6_DNS_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_DNS_CONF_OPTS))\nendef\n\ndefine S6_DNS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine S6_DNS_REMOVE_STATIC_LIB_DIR\n\trm -rf $(TARGET_DIR)/usr/lib/s6-dns\nendef\n\nS6_DNS_POST_INSTALL_TARGET_HOOKS += S6_DNS_REMOVE_STATIC_LIB_DIR\n\ndefine S6_DNS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\ndefine S6_DNS_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/s6-linux-init/0001-configure-add-D_GNU_SOURCE.patch",
    "content": "From dadb157df58e79c7f560cacae80ea51953606fca Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 11 Apr 2021 11:02:20 +0200\nSubject: [PATCH] configure: add -D_GNU_SOURCE\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis will fix the following build failure with uclibc-ng which is raised\nsince version 1.0.6.1 and\nhttps://github.com/skarnet/s6-linux-init/commit/355a75e08bbc8af8af97576bad07471dd1b431d8:\n\nsrc/shutdown/s6-linux-init-shutdownd.c: In function ‘main’:\nsrc/shutdown/s6-linux-init-shutdownd.c:294:24: error: ‘F_DUPFD_CLOEXEC’ undeclared (first use in this function); did you mean ‘FD_CLOEXEC’?\n  294 |       fd[0] = fcntl(1, F_DUPFD_CLOEXEC, 0) ;\n      |                        ^~~~~~~~~~~~~~~\n      |                        FD_CLOEXEC\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/skarnet/s6-linux-init/pull/3]\n---\n configure | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure b/configure\nindex 47db5b2..90fbb3b 100755\n--- a/configure\n+++ b/configure\n@@ -138,7 +138,7 @@ getmacrostring () {\n # Actual script\n \n CC_AUTO=\n-CPPFLAGS_AUTO=\"-D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -iquote src/include-local -Isrc/include\"\n+CPPFLAGS_AUTO=\"-D_GNU_SOURCE -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -iquote src/include-local -Isrc/include\"\n CPPFLAGS_POST=\"$CPPFLAGS\"\n CPPFLAGS=\n CFLAGS_AUTO=\"-pipe -Wall\"\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/s6-linux-init/Config.in",
    "content": "config BR2_PACKAGE_S6_LINUX_INIT\n\tbool \"s6-linux-init\"\n\tdepends on BR2_USE_MMU # s6\n\tselect BR2_PACKAGE_S6\n\tselect BR2_PACKAGE_S6_LINUX_UTILS\n\tselect BR2_PACKAGE_S6_PORTABLE_UTILS\n\thelp\n\t  s6-linux-init is a set of minimalistic tools to create a\n\t  s6-based init system, including a /sbin/init binary, on a\n\t  Linux kernel.\n\n\t  http://skarnet.org/software/s6-linux-init/\n"
  },
  {
    "path": "package/s6-linux-init/s6-linux-init.hash",
    "content": "# Locally generated\nsha256  29e368516b1a3c61a6d1f8680645cc122a2e02127debec91738f170a3b93b8c5  s6-linux-init-1.0.6.3.tar.gz\nsha256  4a5e44a69d649f0c37b29d7f6e5df1bb292b09898247be07f0c97814dac4b15d  COPYING\n"
  },
  {
    "path": "package/s6-linux-init/s6-linux-init.mk",
    "content": "################################################################################\n#\n# s6-linux-init\n#\n################################################################################\n\nS6_LINUX_INIT_VERSION = 1.0.6.3\nS6_LINUX_INIT_SITE = http://skarnet.org/software/s6-linux-init\nS6_LINUX_INIT_LICENSE = ISC\nS6_LINUX_INIT_LICENSE_FILES = COPYING\nS6_LINUX_INIT_DEPENDENCIES = s6 s6-linux-utils s6-portable-utils\n\nS6_LINUX_INIT_CONF_OPTS = \\\n\t--prefix=/ \\\n\t--with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \\\n\t--with-include=$(STAGING_DIR)/include \\\n\t--with-dynlib=$(STAGING_DIR)/lib \\\n\t--with-lib=$(STAGING_DIR)/lib/execline \\\n\t--with-lib=$(STAGING_DIR)/lib/s6 \\\n\t--with-lib=$(STAGING_DIR)/lib/skalibs \\\n\t$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \\\n\t$(SHARED_STATIC_LIBS_OPTS)\n\ndefine S6_LINUX_INIT_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_LINUX_INIT_CONF_OPTS))\nendef\n\ndefine S6_LINUX_INIT_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine S6_LINUX_INIT_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/s6-linux-utils/Config.in",
    "content": "config BR2_PACKAGE_S6_LINUX_UTILS\n\tbool \"s6-linux-utils\"\n\tdepends on BR2_USE_MMU # skalibs\n\tselect BR2_PACKAGE_SKALIBS\n\thelp\n\t  s6-linux-utils is a set of minimalistic Linux-specific\n\t  system utilities.\n\n\t  http://skarnet.org/software/s6-linux-utils/\n"
  },
  {
    "path": "package/s6-linux-utils/s6-linux-utils.hash",
    "content": "# Locally generated\nsha256  c300dbf36b533083f82c6827830c55ce34bfc6cd493c782f207d199669a345ba  s6-linux-utils-2.5.1.5.tar.gz\nsha256  adecb8bedfaae27fcfe65ecb3ef0e2e71aa2a2b49dc21886a200bc677d93e6ec  COPYING\n"
  },
  {
    "path": "package/s6-linux-utils/s6-linux-utils.mk",
    "content": "################################################################################\n#\n# s6-linux-utils\n#\n################################################################################\n\nS6_LINUX_UTILS_VERSION = 2.5.1.5\nS6_LINUX_UTILS_SITE = http://skarnet.org/software/s6-linux-utils\nS6_LINUX_UTILS_LICENSE = ISC\nS6_LINUX_UTILS_LICENSE_FILES = COPYING\nS6_LINUX_UTILS_DEPENDENCIES = skalibs\n\nS6_LINUX_UTILS_CONF_OPTS = \\\n\t--prefix=/ \\\n\t--with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \\\n\t--with-include=$(STAGING_DIR)/include \\\n\t--with-dynlib=$(STAGING_DIR)/lib \\\n\t--with-lib=$(STAGING_DIR)/lib/skalibs \\\n\t$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \\\n\t$(SHARED_STATIC_LIBS_OPTS)\n\ndefine S6_LINUX_UTILS_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_LINUX_UTILS_CONF_OPTS))\nendef\n\ndefine S6_LINUX_UTILS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine S6_LINUX_UTILS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/s6-networking/Config.in",
    "content": "config BR2_PACKAGE_S6_NETWORKING\n\tbool \"s6-networking\"\n\tdepends on BR2_USE_MMU # s6\n\tselect BR2_PACKAGE_S6_DNS\n\tselect BR2_PACKAGE_S6\n\thelp\n\t  s6-networking is a suite of small networking utilities for\n\t  Unix systems. It includes command-line client and server\n\t  management, TCP access control, privilege escalation across\n\t  UNIX domain sockets, IDENT protocol management and clock\n\t  synchronization.\n\n\t  http://skarnet.org/software/s6-networking/\n"
  },
  {
    "path": "package/s6-networking/s6-networking.hash",
    "content": "# Locally generated\nsha256  a3fbca789dc5c82b3055fdbd2f55110902198f3136447617ce8f8b79fa8aa554  s6-networking-2.4.1.1.tar.gz\nsha256  adecb8bedfaae27fcfe65ecb3ef0e2e71aa2a2b49dc21886a200bc677d93e6ec  COPYING\n"
  },
  {
    "path": "package/s6-networking/s6-networking.mk",
    "content": "################################################################################\n#\n# s6-networking\n#\n################################################################################\n\nS6_NETWORKING_VERSION = 2.4.1.1\nS6_NETWORKING_SITE = http://skarnet.org/software/s6-networking\nS6_NETWORKING_LICENSE = ISC\nS6_NETWORKING_LICENSE_FILES = COPYING\nS6_NETWORKING_INSTALL_STAGING = YES\nS6_NETWORKING_DEPENDENCIES = s6-dns s6\n\nS6_NETWORKING_CONF_OPTS = \\\n\t--prefix=/ \\\n\t--with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \\\n\t--with-include=$(STAGING_DIR)/include \\\n\t--with-dynlib=$(STAGING_DIR)/lib \\\n\t--with-lib=$(STAGING_DIR)/lib/execline \\\n\t--with-lib=$(STAGING_DIR)/lib/s6 \\\n\t--with-lib=$(STAGING_DIR)/lib/s6-dns \\\n\t--with-lib=$(STAGING_DIR)/lib/skalibs \\\n\t$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \\\n\t$(SHARED_STATIC_LIBS_OPTS)\n\nifeq ($(BR2_PACKAGE_LIBRESSL),y)\nS6_NETWORKING_CONF_OPTS += --enable-ssl=libressl\nS6_NETWORKING_DEPENDENCIES += libressl\nelse ifeq ($(BR2_PACKAGE_BEARSSL),y)\nS6_NETWORKING_CONF_OPTS += --enable-ssl=bearssl\nS6_NETWORKING_DEPENDENCIES += bearssl\nendif\n\ndefine S6_NETWORKING_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_NETWORKING_CONF_OPTS))\nendef\n\ndefine S6_NETWORKING_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine S6_NETWORKING_REMOVE_STATIC_LIB_DIR\n\trm -rf $(TARGET_DIR)/usr/lib/s6-networking\nendef\n\nS6_NETWORKING_POST_INSTALL_TARGET_HOOKS += S6_NETWORKING_REMOVE_STATIC_LIB_DIR\n\ndefine S6_NETWORKING_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\ndefine S6_NETWORKING_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/s6-portable-utils/Config.in",
    "content": "config BR2_PACKAGE_S6_PORTABLE_UTILS\n\tbool \"s6-portable-utils\"\n\tdepends on BR2_USE_MMU # skalibs\n\tselect BR2_PACKAGE_SKALIBS\n\thelp\n\t  s6-portable-utils is a set of tiny general Unix utilities,\n\t  often performing well-known tasks such as cut and grep, but\n\t  optimized for simplicity and small size. They were designed\n\t  for embedded systems and other constrained environments, but\n\t  they work everywhere.\n\n\t  http://skarnet.org/software/s6-portable-utils/\n"
  },
  {
    "path": "package/s6-portable-utils/s6-portable-utils.hash",
    "content": "# Locally generated\nsha256  6627a2d3ea263539e83512a36f10a587fa0dd5e899bc3612187e9e3b9faf769c  s6-portable-utils-2.2.3.2.tar.gz\nsha256  adecb8bedfaae27fcfe65ecb3ef0e2e71aa2a2b49dc21886a200bc677d93e6ec  COPYING\n"
  },
  {
    "path": "package/s6-portable-utils/s6-portable-utils.mk",
    "content": "################################################################################\n#\n# s6-portable-utils\n#\n################################################################################\n\nS6_PORTABLE_UTILS_VERSION = 2.2.3.2\nS6_PORTABLE_UTILS_SITE = http://skarnet.org/software/s6-portable-utils\nS6_PORTABLE_UTILS_LICENSE = ISC\nS6_PORTABLE_UTILS_LICENSE_FILES = COPYING\nS6_PORTABLE_UTILS_DEPENDENCIES = skalibs\n\nS6_PORTABLE_UTILS_CONF_OPTS = \\\n\t--prefix=/ \\\n\t--with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \\\n\t--with-include=$(STAGING_DIR)/include \\\n\t--with-dynlib=$(STAGING_DIR)/lib \\\n\t--with-lib=$(STAGING_DIR)/lib/skalibs \\\n\t$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \\\n\t$(SHARED_STATIC_LIBS_OPTS)\n\ndefine S6_PORTABLE_UTILS_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_PORTABLE_UTILS_CONF_OPTS))\nendef\n\ndefine S6_PORTABLE_UTILS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine S6_PORTABLE_UTILS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/s6-rc/Config.in",
    "content": "config BR2_PACKAGE_S6_RC\n\tbool \"s6-rc\"\n\tdepends on BR2_USE_MMU # s6\n\tselect BR2_PACKAGE_S6\n\thelp\n\t  s6-rc is a service manager for s6-based systems, i.e. a\n\t  suite of programs that can start and stop services, both\n\t  long-running daemons and one-time initialization scripts, in\n\t  the proper order according to a dependency tree.\n\n\t  http://skarnet.org/software/s6-rc/\n"
  },
  {
    "path": "package/s6-rc/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_S6_RC\n\tbool \"host s6-rc\"\n\tdepends on BR2_PACKAGE_S6_RC\n\thelp\n\t  This package provides the host variant of the s6-rc tools,\n\t  required to build the s6-rc service database offline.\n\n\t  http://skarnet.org/software/s6-rc/\n"
  },
  {
    "path": "package/s6-rc/s6-rc.hash",
    "content": "# Locally generated\nsha256  2a8d1cd455c05c8502b34517cfe79841aa46d08ad969076b37a15d3910617f89  s6-rc-0.5.2.2.tar.gz\nsha256  4a5e44a69d649f0c37b29d7f6e5df1bb292b09898247be07f0c97814dac4b15d  COPYING\n"
  },
  {
    "path": "package/s6-rc/s6-rc.mk",
    "content": "################################################################################\n#\n# s6-rc\n#\n################################################################################\n\nS6_RC_VERSION = 0.5.2.2\nS6_RC_SITE = http://skarnet.org/software/s6-rc\nS6_RC_LICENSE = ISC\nS6_RC_LICENSE_FILES = COPYING\nS6_RC_INSTALL_STAGING = YES\nS6_RC_DEPENDENCIES = s6\n\nS6_RC_CONF_OPTS = \\\n\t--prefix=/ \\\n\t--with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \\\n\t--with-include=$(STAGING_DIR)/include \\\n\t--with-dynlib=$(STAGING_DIR)/lib \\\n\t--with-lib=$(STAGING_DIR)/lib/execline \\\n\t--with-lib=$(STAGING_DIR)/lib/s6 \\\n\t--with-lib=$(STAGING_DIR)/lib/skalibs \\\n\t$(if $(BR2_STATIC_LIBS),,--disable-allstatic) \\\n\t$(SHARED_STATIC_LIBS_OPTS)\n\ndefine S6_RC_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_RC_CONF_OPTS))\nendef\n\ndefine S6_RC_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine S6_RC_REMOVE_STATIC_LIB_DIR\n\trm -rf $(TARGET_DIR)/usr/lib/s6-rc\nendef\n\nS6_RC_POST_INSTALL_TARGET_HOOKS += S6_RC_REMOVE_STATIC_LIB_DIR\n\ndefine S6_RC_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\ndefine S6_RC_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\nHOST_S6_RC_DEPENDENCIES = host-s6\n\nHOST_S6_RC_CONF_OPTS = \\\n\t--prefix=$(HOST_DIR) \\\n\t--libexecdir=/usr/libexec \\\n\t--with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \\\n\t--with-include=$(HOST_DIR)/include \\\n\t--with-dynlib=$(HOST_DIR)/lib \\\n\t--disable-static \\\n\t--enable-shared \\\n\t--disable-allstatic\n\ndefine HOST_S6_RC_CONFIGURE_CMDS\n\t(cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_S6_RC_CONF_OPTS))\nendef\n\ndefine HOST_S6_RC_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_S6_RC_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) install-dynlib install-bin\n\trm -f $(HOST_DIR)/bin/s6-rc-dryrun\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/safeclib/Config.in",
    "content": "config BR2_PACKAGE_SAFECLIB\n\tbool \"safeclib\"\n\thelp\n\t  safec fork with all C11 Annex K functions\n\n\t  This library implements the secure C11 Annex K functions on\n\t  top of most libc implementations, which are missing from them.\n\n\t  https://rurban.github.io/safeclib/\n"
  },
  {
    "path": "package/safeclib/safeclib.hash",
    "content": "# From https://github.com/rurban/safeclib/releases/tag/v08112019\nsha256\tbc2f25875522c50a3a5901981020d906db0b6a7d365619b8d72412c126be3923\tlibsafec-08112019.0-gad76c7.tar.bz2\n\n# Hash for license file\nsha256\tc33e77efd5781e3d59a2bb648c82d2a615035ef0d24cf58880380e3af906510b\tCOPYING\n"
  },
  {
    "path": "package/safeclib/safeclib.mk",
    "content": "################################################################################\n#\n# safeclib\n#\n################################################################################\n\nSAFECLIB_VERSION = 08112019\nSAFECLIB_SITE = \\\n\thttps://github.com/rurban/safeclib/releases/download/v$(SAFECLIB_VERSION)\nSAFECLIB_SOURCE = libsafec-$(SAFECLIB_VERSION).0-gad76c7.tar.bz2\nSAFECLIB_LICENSE = MIT\nSAFECLIB_LICENSE_FILES = COPYING\nSAFECLIB_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sam-ba/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_SAM_BA\n\tbool \"host sam-ba\"\n\tdepends on BR2_HOSTARCH = \"x86_64\"\n\tselect BR2_HOSTARCH_NEEDS_IA32_LIBS\n\thelp\n\t  Atmel SAM-BA software provides an open set of tools for\n\t  programming the Atmel SAM3, SAM7 and SAM9 ARM-based\n\t  microcontrollers.\n\n\t  http://www.at91.com/linux4sam/bin/view/Linux4SAM/SoftwareTools\n\t  https://www.microchip.com/en-us/development-tool/SAM-BA-IN-SYSTEM-PROGRAMMER\n"
  },
  {
    "path": "package/sam-ba/sam-ba.hash",
    "content": "# sha256 locally computed\nsha256  f66e431f0401b197e80599156ea93aa3aab050bc4d16523c95fae1107ef9101c  sam-ba_3.5-linux_x86_64.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE.txt\n"
  },
  {
    "path": "package/sam-ba/sam-ba.mk",
    "content": "################################################################################\n#\n# sam-ba\n#\n################################################################################\n\nSAM_BA_VERSION = 3.5\nSAM_BA_SITE = https://www.microchip.com/content/dam/mchp/documents/MPU32/ProductDocuments/SoftwareTools\nSAM_BA_SOURCE = sam-ba_$(SAM_BA_VERSION)-linux_x86_64.tar.gz\nSAM_BA_LICENSE = GPLv2\nSAM_BA_LICENSE_FILES = LICENSE.txt\n\n# Since it's a prebuilt application and it does not conform to the\n# usual Unix hierarchy, we install it in $(HOST_DIR)/opt/sam-ba and\n# then create a symbolic link from $(HOST_DIR)/bin to the\n# application binary, for easier usage.\n\ndefine HOST_SAM_BA_INSTALL_CMDS\n\tmkdir -p $(HOST_DIR)/opt/sam-ba/\n\tcp -a $(@D)/* $(HOST_DIR)/opt/sam-ba/\n\tmkdir -p $(HOST_DIR)/bin/\n\tln -sf ../opt/sam-ba/sam-ba $(HOST_DIR)/bin/sam-ba\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/samba4/0001-libreplace-disable-libbsd-support.patch",
    "content": "From 4df82c9e03b68dc1621fe4c9ac6a29ae3e64e07e Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Wed, 7 Sep 2016 23:03:43 -0300\nSubject: [PATCH] libreplace: disable libbsd support\n\nDisable libbsd support, samba4 uses a global config.h for its own\ncodebase and that of heimdal (when building with builtin).\nThis causes redefinition conflicts for link(2) when both standard\nunistd.h and bsd/unistd.h get included.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n[Bernd: rebased for versions 4.7.3, 4.8.0, 4.8.5 & 4.11.13]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n lib/replace/wscript | 15 ---------------\n 1 file changed, 15 deletions(-)\n\ndiff --git a/lib/replace/wscript b/lib/replace/wscript\nindex 240d730cbee..c6d8df43c74 100644\n--- a/lib/replace/wscript\n+++ b/lib/replace/wscript\n@@ -406,21 +406,6 @@ def configure(conf):\n \n     strlcpy_in_bsd = False\n \n-    # libbsd on some platforms provides strlcpy and strlcat\n-    if not conf.CHECK_FUNCS('strlcpy strlcat'):\n-        if conf.CHECK_FUNCS_IN('strlcpy strlcat', 'bsd', headers='bsd/string.h',\n-                               checklibc=True):\n-            strlcpy_in_bsd = True\n-    if not conf.CHECK_FUNCS('getpeereid'):\n-        conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h')\n-    if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'):\n-        conf.CHECK_FUNCS_IN('setproctitle', 'bsd', headers='sys/types.h bsd/unistd.h')\n-    if not conf.CHECK_FUNCS('setproctitle_init'):\n-        conf.CHECK_FUNCS_IN('setproctitle_init', 'bsd', headers='sys/types.h bsd/unistd.h')\n-\n-    if not conf.CHECK_FUNCS('closefrom'):\n-        conf.CHECK_FUNCS_IN('closefrom', 'bsd', headers='bsd/unistd.h')\n-\n     conf.CHECK_CODE('''\n                 struct ucred cred;\n                 socklen_t cred_len;\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/samba4/0002-build-find-pre-built-heimdal-build-tools-in-case-of-.patch",
    "content": "From e002d2ef2688d5433d2bd03aa4d77a0ec5ac4e63 Mon Sep 17 00:00:00 2001\nFrom: Uri Simchoni <uri@samba.org>\nDate: Sun, 20 Oct 2019 00:03:14 +0300\nSubject: [PATCH] build: find pre-built heimdal build tools in case of embedded\n heimdal\n\nThis patch fixes the case of finding asn1_compile and compile_et for\nbuilding embedded heimdal, by setting\n--bundled-libraries='!asn1_compile,!compile_et' as configure flags.\n\nThe Heimdal build tools compile_et and asn1_compile are needed *only*\nif we use the embedded heimdal (otherwise we don't build heimdal and\nuse headers that have been generated by those tools elsewhere).\n\nFor cross-compilation with embedded heimdal, it is vital to use host build\ntools, and so asn1_compile and compile_et must be supplied and not\nbuilt. One way of doing this would be to set the COMPILE_ET and\nASN1_COMPILE env vars to the location of supplied binaries. Another way,\nwhich is more commonly used, is to exclude asn1_compile and compile_et\nfrom bundled packages via the switch\n-bundled-libraries='!asn1_compile,!compile_et'. When this is done,\nthe build script searches the path for those tools and sets the\nASN1_COMPILE and COMPILE_ET vars accordingly. (this is admittedly\nkind of a round-about way of doing things but this has become the\nde-facto standard amongst embedded distro builders).\n\nIn commit 8061983d4882f3ba3f12da71443b035d7b672eec, this process of\nfinding the binaris has been moved to be carried out only in the\nsystem heimdal case. As explained above, we only need these tools,\nand hence the check, in bundled mode.\n\nBUG: https://bugzilla.samba.org/show_bug.cgi?id=14164\n\nSigned-off-by: Uri Simchoni <uri@samba.org>\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Bernd: rebased for version 4.11.13]\n---\n wscript_configure_embedded_heimdal | 11 +++++++++++\n wscript_configure_system_heimdal   | 11 -----------\n 2 files changed, 11 insertions(+), 11 deletions(-)\n\ndiff --git a/wscript_configure_embedded_heimdal b/wscript_configure_embedded_heimdal\nindex 8c55ae2a938..4fdae8062c5 100644\n--- a/wscript_configure_embedded_heimdal\n+++ b/wscript_configure_embedded_heimdal\n@@ -1 +1,12 @@\n conf.RECURSE('source4/heimdal_build')\n+\n+def check_system_heimdal_binary(name):\n+    if conf.LIB_MAY_BE_BUNDLED(name):\n+        return False\n+    if not conf.find_program(name, var=name.upper()):\n+        return False\n+    conf.define('USING_SYSTEM_%s' % name.upper(), 1)\n+    return True\n+\n+check_system_heimdal_binary(\"compile_et\")\n+check_system_heimdal_binary(\"asn1_compile\")\ndiff --git a/wscript_configure_system_heimdal b/wscript_configure_system_heimdal\nindex 0ff6dad2f55..f77c177442f 100644\n--- a/wscript_configure_system_heimdal\n+++ b/wscript_configure_system_heimdal\n@@ -37,14 +37,6 @@ def check_system_heimdal_lib(name, functions='', headers='', onlyif=None):\n     conf.define('USING_SYSTEM_%s' % name.upper(), 1)\n     return True\n \n-def check_system_heimdal_binary(name):\n-    if conf.LIB_MAY_BE_BUNDLED(name):\n-        return False\n-    if not conf.find_program(name, var=name.upper()):\n-        return False\n-    conf.define('USING_SYSTEM_%s' % name.upper(), 1)\n-    return True\n-\n check_system_heimdal_lib(\"com_err\", \"com_right_r com_err\", \"com_err.h\")\n \n if check_system_heimdal_lib(\"roken\", \"rk_socket_set_reuseaddr\", \"roken.h\"):\n@@ -96,7 +96,4 @@\n #if conf.CHECK_BUNDLED_SYSTEM('tommath', checkfunctions='mp_init', headers='tommath.h'):\n #    conf.define('USING_SYSTEM_TOMMATH', 1)\n \n-check_system_heimdal_binary(\"compile_et\")\n-check_system_heimdal_binary(\"asn1_compile\")\n-\n conf.define('USING_SYSTEM_KRB5', 1)\n-- \n2.20.1\n"
  },
  {
    "path": "package/samba4/0003-ldap_message_test.c-include-stdint.h-before-cmoka.h.patch",
    "content": "From b2ea5dc3639d68b878c6534f4992da446dbbf2d4 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 16 May 2020 18:15:38 +0200\nSubject: [PATCH] ldap_message_test.c: include stdint.h before cmoka.h\n\nThis fix the following build failure on uclibc:\n\nIn file included from /home/giuliobenetti/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/lib/gcc/mips64el-buildroot-linux-uclibc/5.5.0/include/stdint.h:9:0,\n                 from /home/giuliobenetti/autobuild/run/instance-1/output-1/host/mips64el-buildroot-linux-uclibc/sysroot/usr/include/inttypes.h:27,\n                 from ../../lib/replace/../replace/replace.h:64,\n                 from ../../source4/include/includes.h:23,\n                 from ../../libcli/ldap/tests/ldap_message_test.c:41:\n/home/giuliobenetti/autobuild/run/instance-1/output-1/host/mips64el-buildroot-linux-uclibc/sysroot/usr/include/stdint.h:122:27: error: conflicting types for 'uintptr_t'\n typedef unsigned long int uintptr_t;\n                           ^\n\nFixes:\n - http://autobuild.buildroot.org/results/09e84d15efe755bdefa9f8c6b8355c49ddbc2f65\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not sent yet]\n---\n libcli/ldap/tests/ldap_message_test.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/libcli/ldap/tests/ldap_message_test.c b/libcli/ldap/tests/ldap_message_test.c\nindex c5aacd4bc6b..51331e5c600 100644\n--- a/libcli/ldap/tests/ldap_message_test.c\n+++ b/libcli/ldap/tests/ldap_message_test.c\n@@ -34,6 +34,7 @@\n  */\n #include <stdarg.h>\n #include <stddef.h>\n+#include <stdint.h>\n #include <setjmp.h>\n #include <cmocka.h>\n \n-- \n2.26.2\n\n"
  },
  {
    "path": "package/samba4/0004-dcesrv_core-fix-build.patch",
    "content": "From 44bccdf7d158ae93ba9a5515038aac2a5ac4fd85 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sat, 27 Mar 2021 17:17:34 +0100\nSubject: [PATCH] dcesrv_core: fix build\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nMove include of system/network.h to avoid a build error:\n\nIn file included from ../../lib/replace/system/network.h:35,\n                 from ../../librpc/rpc/dcesrv_core.c:2658:\nusr/include/unistd.h: At top level:\nusr/include/unistd.h:675:16: error: conflicting types for ‘geteuid’\n  675 | extern __uid_t geteuid (void) __THROW;\n\nPatch sent upstream:\nhttps://gitlab.com/samba-team/samba/-/merge_requests/1871\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n librpc/rpc/dcesrv_core.c | 11 +----------\n 1 file changed, 1 insertion(+), 10 deletions(-)\n\ndiff --git a/librpc/rpc/dcesrv_core.c b/librpc/rpc/dcesrv_core.c\nindex 70e0245532e..e761329d157 100644\n--- a/librpc/rpc/dcesrv_core.c\n+++ b/librpc/rpc/dcesrv_core.c\n@@ -32,6 +32,7 @@\n #include \"lib/tsocket/tsocket.h\"\n #include \"librpc/gen_ndr/ndr_dcerpc.h\"\n #include \"lib/util/tevent_ntstatus.h\"\n+#include \"system/network.h\"\n \n \n #undef DBGC_CLASS\n@@ -2633,16 +2634,6 @@ _PUBLIC_ void dcesrv_cleanup_broken_connections(struct dcesrv_context *dce_ctx)\n \t}\n }\n \n-/* We need this include to be able to compile on some plateforms\n- * (ie. freebsd 7.2) as it seems that <sys/uio.h> is not included\n- * correctly.\n- * It has to be that deep because otherwise we have a conflict on\n- * const struct dcesrv_interface declaration.\n- * This is mostly due to socket_wrapper defining #define bind swrap_bind\n- * which conflict with the bind used before.\n- */\n-#include \"system/network.h\"\n-\n struct dcesrv_sock_reply_state {\n \tstruct dcesrv_connection *dce_conn;\n \tstruct dcesrv_call_state *call;\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/samba4/Config.in",
    "content": "comment \"samba4 needs a uClibc or glibc toolchain w/ wchar, dynamic library, NPTL\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || BR2_TOOLCHAIN_USES_MUSL \\\n\t\t|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_USE_MMU\n\nconfig BR2_PACKAGE_SAMBA4\n\tbool \"samba4\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR # python\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # python -> libffi\n\tdepends on !BR2_STATIC_LIBS # cmocka, python, gnutls\n\tdepends on !BR2_nios2 # binary too large, relocations don't fit\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\tselect BR2_PACKAGE_CMOCKA\n\tselect BR2_PACKAGE_E2FSPROGS\n\tselect BR2_PACKAGE_GNUTLS\n\tselect BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_PACKAGE_POPT\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Provides secure, stable and fast file and print services\n\t  for all clients using the SMB/CIFS protocol, such as all\n\t  versions of DOS, Windows, OS/2, Linux and many others.\n\n\t  http://www.samba.org/\n\nif BR2_PACKAGE_SAMBA4\n\nconfig BR2_PACKAGE_SAMBA4_AD_DC\n\tbool \"AD DC\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_JANSSON\n\tselect BR2_PACKAGE_PYTHON_DNSPYTHON\n\tselect BR2_PACKAGE_PYTHON_MARKDOWN\n\tselect BR2_PACKAGE_SAMBA4_ADS\n\thelp\n\t  Enable Active Directory Domain Controller functionality.\n\ncomment \"AD DC depends on python3\"\n\tdepends on !BR2_PACKAGE_PYTHON3\n\nconfig BR2_PACKAGE_SAMBA4_ADS\n\tbool \"ADS\"\n\tselect BR2_PACKAGE_OPENLDAP\n\thelp\n\t  Enable Active Directory member Server functionality.\n\nconfig BR2_PACKAGE_SAMBA4_SMBTORTURE\n\tbool \"smbtorture\"\n\thelp\n\t  Install the smbtorture test suite.\n\t  It's normally used for validation and stress testing.\n\t  Approximately +5 MB of stripped uncompressed target space.\n\nendif\n"
  },
  {
    "path": "package/samba4/S91smb",
    "content": "#!/bin/sh\n\n[ -f /etc/samba/smb.conf ] || exit 0\n\nmkdir -p /var/log/samba\n\nstart() {\n\tprintf \"Starting SMB services: \"\n\tsmbd -D\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\n\tprintf \"Starting NMB services: \"\n\tnmbd -D\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n\tprintf \"Shutting down SMB services: \"\n\tkill -9 `pidof smbd`\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\n\tprintf \"Shutting down NMB services: \"\n\tkill -9 `pidof nmbd`\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nrestart() {\n\tstop\n\tstart\n}\n\nreload() {\n        printf \"Reloading smb.conf file: \"\n\tkill -HUP `pidof smbd`\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\ncase \"$1\" in\n  start)\n  \tstart\n\t;;\n  stop)\n  \tstop\n\t;;\n  restart)\n  \trestart\n\t;;\n  reload)\n  \treload\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart|reload}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/samba4/samba4-cache.txt",
    "content": "Checking simple C program: OK\nrpath library support: OK\n-Wl,--version-script support: OK\nChecking getconf LFS_CFLAGS: NO\nChecking for large file support without additional flags: OK\nChecking for -D_LARGE_FILES: OK\nChecking correct behavior of strtoll: NO\nChecking for working strptime: OK\nChecking for C99 vsnprintf: OK\nChecking for HAVE_SHARED_MMAP: OK\nChecking for HAVE_MREMAP: OK\nChecking for HAVE_INCOHERENT_MMAP: NO\nChecking for HAVE_SECURE_MKSTEMP: OK\nChecking for HAVE_IFACE_GETIFADDRS: OK\nChecking for kernel change notify support: OK\nChecking for Linux kernel oplocks: OK\nChecking for kernel share modes: OK\nChecking if can we convert from CP850 to UCS-2LE: OK\nChecking if can we convert from UTF-8 to UCS-2LE: OK\nChecking whether we can use Linux thread-specific credentials with 32-bit system calls: OK\nChecking whether we can use Linux thread-specific credentials: OK\nChecking whether setreuid is available: OK\nChecking whether setresuid is available: OK\nChecking whether seteuid is available: OK\nChecking whether fcntl locking is available: OK\nChecking whether fcntl lock supports open file description locks: OK\nChecking for the maximum value of the 'time_t' type: OK\nChecking whether the realpath function allows a NULL argument: OK\nChecking whether POSIX capabilities are available: OK\nChecking for ftruncate extend: OK\nvfs_fileid checking for statfs() and struct statfs.f_fsid: OK\ngetcwd takes a NULL argument: OK\nChecking uname sysname type: \"Linux\"\nChecking uname release type: \"3.0.0\"\nChecking uname version type: \"#1 Tue Nov 1 12:34:56 UTC 2013\"\nChecking value of NSIG: \"65\"\nChecking value of _NSIG: \"65\"\nChecking value of SIGRTMAX: \"64\"\nChecking value of SIGRTMIN: \"34\"\nChecking errno of iconv for illegal multibyte sequence: \"0\"\nchecking for clnt_create(): OK\nChecking for a 64-bit host to support lmdb: NO\nChecking value of GNUTLS_CIPHER_AES_128_CFB8: 29\nChecking value of GNUTLS_MAC_AES_CMAC_128: 203\nChecking whether fcntl supports flags to send direct I/O availability signals: OK\n"
  },
  {
    "path": "package/samba4/samba4.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://download.samba.org/pub/samba/stable/samba-4.14.10.tar.asc\nsha256  107ee862f58062682cec362ec68a24251292805f89aa4c97e7ab80237f91c7af  samba-4.14.10.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/samba4/samba4.mk",
    "content": "################################################################################\n#\n# samba4\n#\n################################################################################\n\nSAMBA4_VERSION = 4.14.10\nSAMBA4_SITE = https://download.samba.org/pub/samba/stable\nSAMBA4_SOURCE = samba-$(SAMBA4_VERSION).tar.gz\nSAMBA4_INSTALL_STAGING = YES\nSAMBA4_LICENSE = GPL-3.0+\nSAMBA4_LICENSE_FILES = COPYING\nSAMBA4_CPE_ID_VENDOR = samba\nSAMBA4_CPE_ID_PRODUCT = samba\nSAMBA4_SELINUX_MODULES = samba\nSAMBA4_DEPENDENCIES = \\\n\thost-e2fsprogs host-flex host-heimdal host-nfs-utils \\\n\thost-perl host-perl-parse-yapp host-python3 \\\n\tcmocka e2fsprogs gnutls popt zlib \\\n\t$(if $(BR2_PACKAGE_LIBAIO),libaio) \\\n\t$(if $(BR2_PACKAGE_LIBCAP),libcap) \\\n\t$(if $(BR2_PACKAGE_READLINE),readline) \\\n\t$(TARGET_NLS_DEPENDENCIES)\nSAMBA4_CFLAGS = $(TARGET_CFLAGS)\nSAMBA4_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)\nSAMBA4_CONF_ENV = \\\n\tCFLAGS=\"$(SAMBA4_CFLAGS)\" \\\n\tLDFLAGS=\"$(SAMBA4_LDFLAGS)\" \\\n\tXSLTPROC=false \\\n\tWAF_NO_PREFORK=1\n\nSAMBA4_PYTHON = PYTHON=\"$(HOST_DIR)/bin/python3\"\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nSAMBA4_PYTHON += PYTHON_CONFIG=\"$(STAGING_DIR)/usr/bin/python3-config\"\nSAMBA4_DEPENDENCIES += python3\nelse\nSAMBA4_CONF_OPTS += --disable-python\nendif\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nSAMBA4_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`\nSAMBA4_LDFLAGS += `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`\nSAMBA4_DEPENDENCIES += libtirpc host-pkgconf\nendif\n\nifeq ($(BR2_PACKAGE_ACL),y)\nSAMBA4_CONF_OPTS += --with-acl-support\nSAMBA4_DEPENDENCIES += acl\nelse\nSAMBA4_CONF_OPTS += --without-acl-support\nendif\n\nifeq ($(BR2_PACKAGE_CUPS),y)\nSAMBA4_CONF_ENV += CUPS_CONFIG=\"$(STAGING_DIR)/usr/bin/cups-config\"\nSAMBA4_CONF_OPTS += --enable-cups\nSAMBA4_DEPENDENCIES += cups\nelse\nSAMBA4_CONF_OPTS += --disable-cups\nendif\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nSAMBA4_DEPENDENCIES += dbus\nSAMBA4_SHARED_MODULES += vfs_snapper\nelse\nSAMBA4_SHARED_MODULES += !vfs_snapper\nendif\n\nifeq ($(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_AVAHI_DAEMON),yy)\nSAMBA4_CONF_OPTS += --enable-avahi\nSAMBA4_DEPENDENCIES += avahi\nelse\nSAMBA4_CONF_OPTS += --disable-avahi\nendif\n\nifeq ($(BR2_PACKAGE_GAMIN),y)\nSAMBA4_CONF_OPTS += --with-fam\nSAMBA4_DEPENDENCIES += gamin\nelse\nSAMBA4_CONF_OPTS += --without-fam\nendif\n\nifeq ($(BR2_PACKAGE_LIBARCHIVE),y)\nSAMBA4_CONF_OPTS += --with-libarchive\nSAMBA4_DEPENDENCIES += libarchive\nelse\nSAMBA4_CONF_OPTS += --without-libarchive\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nSAMBA4_CONF_ENV += NCURSES_CONFIG=\"$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS)\"\nSAMBA4_DEPENDENCIES += ncurses\nelse\nSAMBA4_CONF_OPTS += --without-regedit\nendif\n\n# The ctdb tests (cluster) need bash and take up some space\n# They're normally intended for debugging so remove them\ndefine SAMBA4_REMOVE_CTDB_TESTS\n\trm -rf $(TARGET_DIR)/usr/lib/ctdb-tests\n\trm -rf $(TARGET_DIR)/usr/share/ctdb-tests\n\trm -f $(TARGET_DIR)/usr/bin/ctdb_run_*tests\nendef\nSAMBA4_POST_INSTALL_TARGET_HOOKS += SAMBA4_REMOVE_CTDB_TESTS\n\ndefine SAMBA4_CONFIGURE_CMDS\n\t$(INSTALL) -m 0644 package/samba4/samba4-cache.txt $(@D)/cache.txt;\n\techo 'Checking whether fcntl supports setting/geting hints: $(if $(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13),OK,NO)' >>$(@D)/cache.txt;\n\techo 'Checking uname machine type: $(BR2_ARCH)' >>$(@D)/cache.txt;\n\t(cd $(@D); \\\n\t\t$(SAMBA4_PYTHON) \\\n\t\tpython_LDFLAGS=\"\" \\\n\t\tpython_LIBDIR=\"\" \\\n\t\tPERL=\"$(HOST_DIR)/bin/perl\" \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(SAMBA4_CONF_ENV) \\\n\t\t./buildtools/bin/waf configure \\\n\t\t\t--prefix=/usr \\\n\t\t\t--sysconfdir=/etc \\\n\t\t\t--localstatedir=/var \\\n\t\t\t--with-libiconv=$(STAGING_DIR)/usr \\\n\t\t\t--enable-fhs \\\n\t\t\t--cross-compile \\\n\t\t\t--cross-answers=$(@D)/cache.txt \\\n\t\t\t--hostcc=gcc \\\n\t\t\t--disable-rpath \\\n\t\t\t--disable-rpath-install \\\n\t\t\t--disable-iprint \\\n\t\t\t--without-pam \\\n\t\t\t--without-dmapi \\\n\t\t\t--without-gpgme \\\n\t\t\t--without-ldb-lmdb \\\n\t\t\t--disable-glusterfs \\\n\t\t\t--with-cluster-support \\\n\t\t\t--bundled-libraries='!asn1_compile,!compile_et' \\\n\t\t\t--with-shared-modules=$(subst $(space),$(comma),$(strip $(SAMBA4_SHARED_MODULES))) \\\n\t\t\t$(SAMBA4_CONF_OPTS) \\\n\t)\nendef\n\ndefine SAMBA4_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(SAMBA4_PYTHON) $(MAKE) -C $(@D)\nendef\n\ndefine SAMBA4_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(SAMBA4_PYTHON) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\ndefine SAMBA4_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(SAMBA4_PYTHON) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\nifeq ($(BR2_PACKAGE_SAMBA4_AD_DC),y)\n# host-python-dnspython and host-python-markdown are not strictly\n# needed on the host, but on the target. however, samba's configure\n# tests for their availability on the host.\nSAMBA4_DEPENDENCIES += \\\n\tjansson \\\n\thost-python-dnspython \\\n\thost-python-markdown \\\n\tpython-dnspython \\\n\tpython-markdown\nelse\nSAMBA4_CONF_OPTS += --without-ad-dc --without-json\nendif\n\nifeq ($(BR2_PACKAGE_SAMBA4_ADS),y)\nSAMBA4_CONF_OPTS += --with-ads --with-ldap\nSAMBA4_DEPENDENCIES += openldap\nSAMBA4_SHARED_MODULES += idmap_ad\nelse\nSAMBA4_CONF_OPTS += --without-ads --without-ldap\nSAMBA4_SHARED_MODULES += !idmap_ad\nendif\n\nifeq ($(BR2_PACKAGE_SAMBA4_SMBTORTURE),)\ndefine SAMBA4_REMOVE_SMBTORTURE\n\trm -f $(TARGET_DIR)/usr/bin/smbtorture\nendef\nSAMBA4_POST_INSTALL_TARGET_HOOKS += SAMBA4_REMOVE_SMBTORTURE\nendif\n\ndefine SAMBA4_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/samba4/S91smb \\\n\t\t$(TARGET_DIR)/etc/init.d/S91smb\nendef\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nSAMBA4_CONF_OPTS += --systemd-install-services\nSAMBA4_DEPENDENCIES += systemd\nendif\n\ndefine SAMBA4_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(@D)/packaging/systemd/samba.conf.tmp \\\n\t\t$(TARGET_DIR)/usr/lib/tmpfiles.d/samba.conf\n\tprintf \"d /var/log/samba  755 root root\\n\" >>$(TARGET_DIR)/usr/lib/tmpfiles.d/samba.conf\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/sane-backends/0001-sane_backend-add-missing-config.h.patch",
    "content": "From 13aadf79659dd238b618c8be7c1de44960bd5d50 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Fri, 11 Nov 2016 22:20:03 +0100\nSubject: [PATCH] sane_backend: add missing config.h\n\nWe should include config.h from sanei_backend.h in order to use the\ncorrect if/else HAVE_FOO.\n\nFor some reason with Glibc or uClibc there is no problem but with musl\nwe have the following weird issue:\n\nIn file included from epsonds.h:41:0,\n                 from epsonds-jpeg.c:18:\n../include/sane/sanei_backend.h:99:33: error: expected ';', identifier or '(' before 'int'\n # define sigset_t               int\n                                 ^\n../include/sane/sanei_backend.h:99:33: warning: useless type name in empty declaration\n\nThat's because HAVE_SIGPROCMASK is not defined although it's correctly\ndetected by the configure script.\n\n$ grep config.log\nconfig.log:#define HAVE_SIGPROCMASK 1\n\nSo, include config.h to avoid to redefine sigset_t.\n\nFixes:\nhttp://autobuild.buildroot.net/results/9f1/9f1f1cb727b5c5407e69172280a3dee880e55cdf\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n include/sane/sanei_backend.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/include/sane/sanei_backend.h b/include/sane/sanei_backend.h\nindex 1b5afe2..2a96532 100644\n--- a/include/sane/sanei_backend.h\n+++ b/include/sane/sanei_backend.h\n@@ -8,6 +8,7 @@\n  * @sa sanei.h sanei_thread.h\n  */\n \n+#include \"../include/sane/config.h\"\n \n /*\n  * Compiler related options\n-- \n2.5.5\n\n"
  },
  {
    "path": "package/sane-backends/0002-genesys-fix-gcc-4.8-compile.patch",
    "content": "From f67cfd6a534e9faaca83afebd61a6d77d7837174 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Mon, 15 Mar 2021 20:53:55 +0100\nSubject: [PATCH] genesys: fix gcc-4.8 compile\n\nFixes:\n\n  genesys/utilities.h:229:23: error: invalid initialization of non-const reference of type 'std::basic_ios<char>&' from an rvalue of type '<brace-enclosed initializer list>'\n           stream_{stream}\n                         ^\n  genesys/image_pipeline.cpp:715:19: error: invalid initialization of non-const reference of type 'genesys::ImagePipelineNode&' from an rvalue of type '<brace-enclosed initializer list>'\n       source_{source}\n                     ^\n\n[Upstream: https://gitlab.com/sane-project/backends/-/merge_requests/609]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n backend/genesys/image_pipeline.cpp | 2 +-\n backend/genesys/utilities.h        | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/backend/genesys/image_pipeline.cpp b/backend/genesys/image_pipeline.cpp\nindex 4161e95..14e2f8d 100644\n--- a/backend/genesys/image_pipeline.cpp\n+++ b/backend/genesys/image_pipeline.cpp\n@@ -712,7 +712,7 @@ ImagePipelineNodeCalibrate::ImagePipelineNodeCalibrate(ImagePipelineNode& source\n                                                        const std::vector<std::uint16_t>& bottom,\n                                                        const std::vector<std::uint16_t>& top,\n                                                        std::size_t x_start) :\n-    source_{source}\n+    source_(source)\n {\n     std::size_t size = 0;\n     if (bottom.size() >= x_start && top.size() >= x_start) {\ndiff --git a/backend/genesys/utilities.h b/backend/genesys/utilities.h\nindex 6e637d0..2ef2ddd 100644\n--- a/backend/genesys/utilities.h\n+++ b/backend/genesys/utilities.h\n@@ -226,7 +226,7 @@ class BasicStreamStateSaver\n {\n public:\n     explicit BasicStreamStateSaver(std::basic_ios<Char, Traits>& stream) :\n-        stream_{stream}\n+        stream_(stream)\n     {\n         flags_ = stream_.flags();\n         width_ = stream_.width();\n-- \n2.30.1\n\n"
  },
  {
    "path": "package/sane-backends/0003-genesys-use-usleep-instead-of-std-this_thread-sleep_.patch",
    "content": "From b6e21e3cd0825e7ec2b3b7e6401d25b901deeed2 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Wed, 31 Mar 2021 22:51:03 +0200\nSubject: [PATCH] genesys: use usleep instead of std::this_thread::sleep_for to\n re-enable thread less compile\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes:\n\n  genesys/scanner_interface_usb.cpp: In member function ‘virtual void genesys::ScannerInterfaceUsb::sleep_us(unsigned int)’:\n  genesys/scanner_interface_usb.cpp:484:10: error: ‘std::this_thread’ has not been declared\n    484 |     std::this_thread::sleep_for(std::chrono::microseconds{microseconds});\n        |          ^~~~~~~~~~~\n\n[Upstream: https://gitlab.com/sane-project/backends/-/merge_requests/619]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n backend/genesys/scanner_interface_usb.cpp | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/backend/genesys/scanner_interface_usb.cpp b/backend/genesys/scanner_interface_usb.cpp\nindex 117297c..2ca78ab 100644\n--- a/backend/genesys/scanner_interface_usb.cpp\n+++ b/backend/genesys/scanner_interface_usb.cpp\n@@ -43,7 +43,6 @@\n \n #include \"scanner_interface_usb.h\"\n #include \"low.h\"\n-#include <thread>\n \n namespace genesys {\n \n@@ -481,7 +480,7 @@ void ScannerInterfaceUsb::sleep_us(unsigned microseconds)\n     if (sanei_usb_is_replay_mode_enabled()) {\n         return;\n     }\n-    std::this_thread::sleep_for(std::chrono::microseconds{microseconds});\n+    usleep(microseconds);\n }\n \n void ScannerInterfaceUsb::record_progress_message(const char* msg)\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/sane-backends/0004-backend-microtek-fix-uclibc-compile-include-stdarg.h.patch",
    "content": "From 145e16008e7479ea58278e55f71d6dfcd4db714b Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Fri, 18 Jun 2021 19:51:45 +0200\nSubject: [PATCH] backend/microtek: fix uclibc compile (include stdarg.h for\n va_list/va_start/va_end)\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes:\n\n  microtek.c: In function ‘MDBG_INIT’:\n  microtek.c:163:3: error: unknown type name ‘va_list’\n    163 |   va_list ap;\n        |   ^~~~~~~\n  microtek.c:78:1: note: ‘va_list’ is defined in header ‘<stdarg.h>’; did you forget to ‘#include <stdarg.h>’?\n     77 | #include \"microtek.h\"\n    +++ |+#include <stdarg.h>\n     78 |\n  microtek.c:164:3: warning: implicit declaration of function ‘va_start’; did you mean ‘sane_start’? [-Wimplicit-function-declaration]\n    164 |   va_start(ap, format);\n        |   ^~~~~~~~\n        |   sane_start\n  microtek.c:165:54: warning: passing argument 4 of ‘vsnprintf’ makes pointer from integer without a cast [-Wint-conversion]\n    165 |   vsnprintf(_mdebug_string, MAX_MDBG_LENGTH, format, ap);\n        |                                                      ^~\n        |                                                      |\n        |                                                      int\n  In file included from ../include/sane/sanei_config.h:50,\n                   from microtek.c:70:\n  .../host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/stdio.h:359:57: note: expected ‘__va_list_tag *’ but argument is of type ‘int’\n    359 |         const char *__restrict __format, __gnuc_va_list __arg)\n        |                                          ~~~~~~~~~~~~~~~^~~~~\n  microtek.c:166:3: warning: implicit declaration of function ‘va_end’ [-Wimplicit-function-declaration]\n    166 |   va_end(ap);\n        |   ^~~~~~\n\n[Upstream: https://gitlab.com/sane-project/backends/-/merge_requests/638]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n backend/microtek.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/backend/microtek.c b/backend/microtek.c\nindex 200a69c1a..63560179c 100644\n--- a/backend/microtek.c\n+++ b/backend/microtek.c\n@@ -57,6 +57,7 @@\n \n #include \"../include/sane/config.h\"\n \n+#include <stdarg.h>\n #include <stdlib.h>\n #include <string.h>\n #include <unistd.h>\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/sane-backends/0005-backend-sm3600-scanutil-fix-uclibc-compile-include-s.patch",
    "content": "From 7dafc52dda96fa68f39058b10eec3d822fd5ea9d Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Fri, 18 Jun 2021 19:56:56 +0200\nSubject: [PATCH] backend/sm3600-scanutil: fix uclibc compile (include stdarg.h\n for va_list/va_start/va_end)\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nFixes:\n\n  sm3600-scanutil.c: In function ‘debug_printf’:\n  sm3600-scanutil.c:69:3: error: unknown type name ‘va_list’\n     69 |   va_list ap;\n        |   ^~~~~~~\n  sm3600-scanutil.c:48:1: note: ‘va_list’ is defined in header ‘<stdarg.h>’; did you forget to ‘#include <stdarg.h>’?\n     47 | #include \"sm3600-scantool.h\"\n    +++ |+#include <stdarg.h>\n     48 |\n  sm3600-scanutil.c:75:3: warning: implicit declaration of function ‘va_start’; did you mean ‘sane_start’? [-Wimplicit-function-declaration]\n     75 |   va_start(ap,szFormat);\n        |   ^~~~~~~~\n        |   sane_start\n  sm3600-scanutil.c:76:28: warning: passing argument 3 of ‘vfprintf’ makes pointer from integer without a cast [-Wint-conversion]\n     76 |   vfprintf(stderr,szFormat,ap);\n        |                            ^~\n        |                            |\n        |                            int\n  In file included from ../include/sane/sanei_config.h:50,\n                   from sm3600.c:70:\n  .../host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/stdio.h:339:23: note: expected ‘__va_list_tag *’ but argument is of type ‘int’\n    339 |        __gnuc_va_list __arg);\n        |        ~~~~~~~~~~~~~~~^~~~~\n  In file included from sm3600.c:94:\n  sm3600-scanutil.c:77:3: warning: implicit declaration of function ‘va_end’ [-Wimplicit-function-declaration]\n     77 |   va_end(ap);\n        |   ^~~~~~\n\n[Upstream: https://gitlab.com/sane-project/backends/-/merge_requests/638]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n backend/sm3600-scanutil.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/backend/sm3600-scanutil.c b/backend/sm3600-scanutil.c\nindex 6fe67ed0c..616bf3f4c 100644\n--- a/backend/sm3600-scanutil.c\n+++ b/backend/sm3600-scanutil.c\n@@ -43,6 +43,7 @@ Userspace scan tool for the Microtek 3600 scanner\n \n ====================================================================== */\n \n+#include <stdarg.h>\n #include <unistd.h>\n #include \"sm3600-scantool.h\"\n \n-- \n2.31.1\n\n"
  },
  {
    "path": "package/sane-backends/Config.in",
    "content": "config BR2_PACKAGE_SANE_BACKENDS\n\tbool \"sane-backends\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  SANE - Scanner Access Now Easy\n\n\t  http://www.sane-project.org\n\n\t  Backends are included automatically based on the libraries\n\t  that have been selected: libusb, jpeg, tiff, avahi (with\n\t  dbus and libglib2), and netsnmp.\n\ncomment \"sane-backends needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/sane-backends/sane-backends.hash",
    "content": "# From https://gitlab.com/sane-project/backends/uploads/a705aadf854ca0dc8bf66df937308861/sane-backends-1.0.32.sha256.txt\nsha256  3a28c237c0a72767086202379f6dc92dbb63ec08dfbab22312cba80e238bb114  sane-backends-1.0.32.tar.gz\n\n# Hash for license file\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/sane-backends/sane-backends.mk",
    "content": "################################################################################\n#\n# sane-backends\n#\n################################################################################\n\nSANE_BACKENDS_VERSION = 1.0.32\nSANE_BACKENDS_SITE = \\\n\thttps://gitlab.com/sane-project/backends/uploads/104f09c07d35519cc8e72e604f11643f\nSANE_BACKENDS_CONFIG_SCRIPTS = sane-config\nSANE_BACKENDS_LICENSE = GPL-2.0+\nSANE_BACKENDS_LICENSE_FILES = COPYING\nSANE_BACKENDS_CPE_ID_VENDOR = sane-backends_project\nSANE_BACKENDS_INSTALL_STAGING = YES\n\nSANE_BACKENDS_CONF_OPTS = \\\n\t$(if $(BR2_TOOLCHAIN_HAS_THREADS),--enable-pthread,--disable-pthread)\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nSANE_BACKENDS_CONF_OPTS += --with-systemd\nSANE_BACKENDS_DEPENDENCIES += systemd\nelse\nSANE_BACKENDS_CONF_OPTS += --without-systemd\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nSANE_BACKENDS_DEPENDENCIES += libusb\nSANE_BACKENDS_CONF_OPTS += --with-usb\nelse\nSANE_BACKENDS_CONF_OPTS += --without-usb\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nSANE_BACKENDS_DEPENDENCIES += jpeg\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nSANE_BACKENDS_DEPENDENCIES += tiff\nendif\n\nifeq ($(BR2_PACKAGE_LIBV4L),y)\nSANE_BACKENDS_DEPENDENCIES += libv4l\nendif\n\nifeq ($(BR2_PACKAGE_AVAHI)$(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_LIBGLIB2),yyy)\nSANE_BACKENDS_DEPENDENCIES += avahi\nSANE_BACKENDS_CONF_OPTS += --with-avahi\nendif\n\nifeq ($(BR2_PACKAGE_NETSNMP),y)\nSANE_BACKENDS_CONF_ENV += ac_cv_path_SNMP_CONFIG_PATH=$(STAGING_DIR)/usr/bin/net-snmp-config\nSANE_BACKENDS_DEPENDENCIES += netsnmp\nelse\nSANE_BACKENDS_CONF_OPTS += --without-snmp\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nSANE_BACKENDS_DEPENDENCIES += libcurl\nSANE_BACKENDS_CONF_OPTS += --with-libcurl\nelse\nSANE_BACKENDS_CONF_OPTS += --without-libcurl\nendif\n\nifeq ($(BR2_PACKAGE_POPPLER)$(BR2_PACKAGE_CAIRO)$(BR2_PACKAGE_LIBGLIB2),yyy)\nSANE_BACKENDS_DEPENDENCIES += poppler libglib2\nSANE_BACKENDS_CONF_OPTS += --with-poppler-glib\nelse\nSANE_BACKENDS_CONF_OPTS += --without-poppler-glib\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nSANE_BACKENDS_DEPENDENCIES += libxml2\nSANE_BACKENDS_CONF_OPTS += --with-usb-record-replay\nelse\nSANE_BACKENDS_CONF_OPTS += --without-usb-record-replay\nendif\n\ndefine SANE_BACKENDS_DISABLE_DOCS\n\t$(SED) 's/ doc//' $(@D)/Makefile\nendef\n\nSANE_BACKENDS_POST_CONFIGURE_HOOKS += SANE_BACKENDS_DISABLE_DOCS\n\ndefine SANE_BACKENDS_USERS\n\tsaned -1 saned -1 * /etc/sane.d - - Saned User\nendef\n\ndefine SANE_BACKENDS_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -m 0644 -D package/sane-backends/saned.socket \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/saned.socket\n\t$(INSTALL) -m 0644 -D package/sane-backends/saned@.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/saned@.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sane-backends/saned.socket",
    "content": "[Unit]\nDescription=saned incoming socket\n\n[Socket]\nListenStream=6566\nAccept=yes\nMaxConnections=1\n\n[Install]\nWantedBy=sockets.target\n"
  },
  {
    "path": "package/sane-backends/saned@.service",
    "content": "[Unit]\nDescription=Scanner Service\nRequires=saned.socket\n\n[Service]\nExecStart=/usr/sbin/saned\nUser=saned\nGroup=saned\nStandardInput=null\nStandardOutput=syslog\nStandardError=syslog\nEnvironment=SANE_CONFIG_DIR=/etc/sane.d\n# If you need to debug your configuration uncomment the next line and\n# change it as appropriate to set the desired debug options\n# Environment=SANE_DEBUG_DLL=255 SANE_DEBUG_BJNP=5\n\n[Install]\nAlso=saned.socket\n"
  },
  {
    "path": "package/sbc/0001-sbc_primitives-Fix-build-on-non-x86.patch",
    "content": "From 909a9bdf7ab143e1f0baaf9736baebd3cd79aacf Mon Sep 17 00:00:00 2001\nFrom: Marius Bakke <marius@gnu.org>\nDate: Tue, 22 Dec 2020 11:04:26 +0000\nSubject: [PATCH] sbc_primitives: Fix build on non-x86.\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nDon't call __builtin_cpu_init unless targeting i386 or x86_64.\nOtherwise we get an error at link time:\n\n  CC       sbc/sbc_primitives.lo\nsbc/sbc_primitives.c: In function ‘sbc_init_primitives_x86’:\nsbc/sbc_primitives.c:596:2: warning: implicit declaration of function ‘__builtin_cpu_init’; did you mean ‘__builtin_irint’? [-Wimplicit-function-declaration]\n[...]\n  CCLD     src/sbcdec\nld: sbc/.libs/libsbc-private.a(sbc_primitives.o): in function `sbc_init_primitives':\nsbc_primitives.c:(.text+0x3a30): undefined reference to `__builtin_cpu_init'\n\nSigned-off-by: Pierre-Jean Texier <texier.pj2@gmail.com>\n[Upstream status: backport from upstream commit 909a9bdf7ab143e1f0baaf9736baebd3cd79aacf]\n\n---\n sbc/sbc_primitives.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/sbc/sbc_primitives.c b/sbc/sbc_primitives.c\nindex 97a75be..09c214a 100644\n--- a/sbc/sbc_primitives.c\n+++ b/sbc/sbc_primitives.c\n@@ -593,6 +593,7 @@ static int sbc_calc_scalefactors_j(\n \n static void sbc_init_primitives_x86(struct sbc_encoder_state *state)\n {\n+#if defined(__x86_64__) || defined(__i386__)\n \t__builtin_cpu_init();\n \n #ifdef SBC_BUILD_WITH_MMX_SUPPORT\n@@ -604,6 +605,7 @@ static void sbc_init_primitives_x86(struct sbc_encoder_state *state)\n \tif (__builtin_cpu_supports(\"sse4.2\"))\n \t\tsbc_init_primitives_sse(state);\n #endif\n+#endif\n }\n \n /*\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/sbc/Config.in",
    "content": "config BR2_PACKAGE_SBC\n\tbool \"sbc\"\n\tselect BR2_PACKAGE_LIBSNDFILE\n\thelp\n\t  An audio codec to connect bluetooth high quality audio\n\t  devices like headphones or loudspeakers.\n\n\t  http://www.bluez.org/\n"
  },
  {
    "path": "package/sbc/sbc.hash",
    "content": "# From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc\nsha256  0cbad69823a99e8421fe0700e8cf9eeb8fa0c1ad28e8dbc2182b3353507931d2  sbc-1.5.tar.xz\n\n# sha256 locally computed\nsha256  b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259  COPYING\nsha256  ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5  COPYING.LIB\n"
  },
  {
    "path": "package/sbc/sbc.mk",
    "content": "################################################################################\n#\n# sbc\n#\n################################################################################\n\nSBC_VERSION = 1.5\nSBC_SOURCE = sbc-$(SBC_VERSION).tar.xz\nSBC_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth\nSBC_INSTALL_STAGING = YES\nSBC_DEPENDENCIES = libsndfile host-pkgconf\nSBC_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (library)\nSBC_LICENSE_FILES = COPYING COPYING.LIB\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sconeserver/0001-sconex-Descriptor.cpp-fix-build-with-gcc-11.patch",
    "content": "From 5e4cb613d9bb287e9f54da86f99a51d0338b1faa Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 10 Aug 2021 10:36:53 +0200\nSubject: [PATCH] sconex/Descriptor.cpp: fix build with gcc 11\n\nFix the following build failure with gcc 11:\n\nIn file included from ../sconex/sconex.h:229,\n                 from ../sconex/Descriptor.h:63,\n                 from Descriptor.cpp:22:\nDescriptor.cpp: In member function 'void scx::Descriptor::add_stream(scx::Stream*)':\nDescriptor.cpp:150:22: error: ordered comparison of pointer with integer zero ('scx::Stream*' and 'int')\n  150 |   DEBUG_ASSERT(stream>=0,\"add_stream() Invalid stream\");\n      |                ~~~~~~^~~\n      |                                 ^~~~\nDescriptor.cpp: In member function 'bool scx::Descriptor::remove_stream(scx::Stream*)':\nDescriptor.cpp:204:22: error: ordered comparison of pointer with integer zero ('scx::Stream*' and 'int')\n  204 |   DEBUG_ASSERT(stream>=0,\"remove_stream() Invalid stream\");\n      |                ~~~~~~^~~\n\nFixes:\n - http://autobuild.buildroot.org/results/ccc9562e83fd2bd312d21b3124be42dfe4b7e850\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/sconemad/sconeserver/pull/4]\n---\n sconex/Descriptor.cpp | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/sconex/Descriptor.cpp b/sconex/Descriptor.cpp\nindex 590adba..4adfd86 100644\n--- a/sconex/Descriptor.cpp\n+++ b/sconex/Descriptor.cpp\n@@ -147,7 +147,7 @@ bool Descriptor::dup(int d)\n //=============================================================================\n void Descriptor::add_stream(Stream* stream)\n {\n-  DEBUG_ASSERT(stream>=0,\"add_stream() Invalid stream\");\n+  DEBUG_ASSERT(stream!=0,\"add_stream() Invalid stream\");\n \n   m_streams.push_back(stream);\n   stream->set_endpoint(this);\n@@ -201,7 +201,7 @@ void Descriptor::add_stream_after(Stream* stream,const Stream* after)\n //=============================================================================\n bool Descriptor::remove_stream(Stream* stream)\n {\n-  DEBUG_ASSERT(stream>=0,\"remove_stream() Invalid stream\");\n+  DEBUG_ASSERT(stream!=0,\"remove_stream() Invalid stream\");\n \n   std::list<Stream*>::iterator it = m_streams.begin();\n   while (it != m_streams.end()) {\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/sconeserver/Config.in",
    "content": "menuconfig BR2_PACKAGE_SCONESERVER\n\tbool \"sconeserver\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Sconeserver is a modular, object-orientated and extremely\n\t  versatile network server framework for GNU/Linux and\n\t  UNIX-like platforms.\n\n\t  http://www.sconemad.com/sconeserver/\n\nif BR2_PACKAGE_SCONESERVER\n\ncomment \"Sconeserver modules\"\n\nconfig BR2_PACKAGE_SCONESERVER_EXAMPLES\n\tbool \"examples\"\n\thelp\n\t  Example modules for Sconeserver\n\nconfig BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE\n\tbool \"http::sconesite\"\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  http::sconesite module for Sconeserver\n\nconfig BR2_PACKAGE_SCONESERVER_MYSQL\n\tbool \"mysql\"\n\tdepends on BR2_USE_MMU # mysql\n\tselect BR2_PACKAGE_MYSQL\n\thelp\n\t  MySQL module for Sconeserver\n\nconfig BR2_PACKAGE_SCONESERVER_BLUETOOTH\n\tbool \"bluetooth\"\n\tdepends on BR2_USE_WCHAR # bluez5_utils -> libglib2\n\tdepends on BR2_USE_MMU # bluez5_utils -> dbus\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # bluez5_utils -> dbus, libglib2\n\tdepends on !BR2_STATIC_LIBS # bluez5_utils\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5_utils\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5_utils\n\tselect BR2_PACKAGE_BLUEZ5_UTILS\n\thelp\n\t  Bluetooth module for Sconeserver\n\ncomment \"bluetooth support needs a toolchain w/ wchar, threads, dynamic library, headers >= 3.4\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4\n\nconfig BR2_PACKAGE_SCONESERVER_RSS\n\tbool \"rss\"\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  RSS module for Sconeserver\n\nconfig BR2_PACKAGE_SCONESERVER_LOCATION\n\tbool \"location\"\n\tdepends on BR2_USE_MMU # gpsd\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # gpsd\n\tdepends on !BR2_STATIC_LIBS # gpsd\n\tselect BR2_PACKAGE_GPSD\n\thelp\n\t  Location module for Sconeserver\n\ncomment \"location support needs a toolchain w/ theads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBRARY\n\nconfig BR2_PACKAGE_SCONESERVER_MATHS\n\tbool \"maths\"\n\tselect BR2_PACKAGE_MPFR\n\thelp\n\t  Mathematics module for Sconeserver\n\nconfig BR2_PACKAGE_SCONESERVER_TESTBUILDER\n\tbool \"testbuilder\"\n\thelp\n\t  Testbuilder module for Sconeserver\n\nendif # BR2_PACKAGE_SCONESERVER\n\ncomment \"sconeserver needs a toolchain with dynamic library, C++, NPTL\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \\\n\t\t|| BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/sconeserver/sconeserver.hash",
    "content": "# Locally computed\nsha256 dfdbbcd29c089eeb341dd3bbd434cca97fefaa97f94c91525e5953d3ab0a2d9a  sconeserver-6b932d7d8dbb700b830205e7111e469cefff490c.tar.gz\nsha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/sconeserver/sconeserver.mk",
    "content": "################################################################################\n#\n# sconeserver\n#\n################################################################################\n\nSCONESERVER_VERSION = 6b932d7d8dbb700b830205e7111e469cefff490c\nSCONESERVER_SITE = $(call github,sconemad,sconeserver,$(SCONESERVER_VERSION))\nSCONESERVER_LICENSE = GPL-2.0+\nSCONESERVER_LICENSE_FILES = COPYING\n# fetching from Git, we need to generate the configure script\nSCONESERVER_AUTORECONF = YES\nSCONESERVER_DEPENDENCIES = \\\n\thost-pkgconf \\\n\t$(if $(BR2_PACKAGE_PCRE),pcre) \\\n\tzlib\n# disable image as it fails to build with ImageMagick\n# disable markdown module because its git submodule cmark\n# https://github.com/sconemad/sconeserver/tree/master/markdown\n# has no cross-compile support provided by the sconeserver build system\nSCONESERVER_CONF_OPTS += \\\n\t--with-ip \\\n\t--with-local \\\n\t--with-ip6 \\\n\t--without-image \\\n\t--without-markdown\n\n# Sconeserver configure script fails to find the libxml2 headers.\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nSCONESERVER_CONF_OPTS += \\\n\t--with-xml2-config=\"$(STAGING_DIR)/usr/bin/xml2-config\"\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nSCONESERVER_DEPENDENCIES += openssl\nSCONESERVER_CONF_OPTS += --with-ssl\nelse\nSCONESERVER_CONF_OPTS += --without-ssl\nendif\n\nifeq ($(BR2_PACKAGE_SCONESERVER_EXAMPLES),y)\nSCONESERVER_CONF_OPTS += --with-examples\nelse\nSCONESERVER_CONF_OPTS += --without-examples\nendif\n\nifeq ($(BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE),y)\nSCONESERVER_DEPENDENCIES += libxml2\nSCONESERVER_CONF_OPTS += --with-sconesite\nelse\nSCONESERVER_CONF_OPTS += --without-sconesite\nendif\n\nifeq ($(BR2_PACKAGE_SCONESERVER_MYSQL),y)\nSCONESERVER_DEPENDENCIES += mysql\nSCONESERVER_CONF_OPTS += \\\n\t--with-mysql \\\n\t--with-mysql_config=\"$(STAGING_DIR)/usr/bin/mysql_config\" \\\n\tLDFLAGS=\"$(TARGET_LDFLAGS) -L$(STAGING_DIR)/usr/lib/mysql\"\nelse\nSCONESERVER_CONF_OPTS += --without-mysql\nendif\n\nifeq ($(BR2_PACKAGE_SCONESERVER_BLUETOOTH),y)\nSCONESERVER_DEPENDENCIES += bluez5_utils\nSCONESERVER_CONF_OPTS += --with-bluetooth\nelse\nSCONESERVER_CONF_OPTS += --without-bluetooth\nendif\n\nifeq ($(BR2_PACKAGE_SCONESERVER_RSS),y)\nSCONESERVER_DEPENDENCIES += libxml2\nSCONESERVER_CONF_OPTS += --with-rss\nelse\nSCONESERVER_CONF_OPTS += --without-rss\nendif\n\nifeq ($(BR2_PACKAGE_SCONESERVER_LOCATION),y)\nSCONESERVER_DEPENDENCIES += gpsd\nSCONESERVER_CONF_OPTS += --with-location\nelse\nSCONESERVER_CONF_OPTS += --without-location\nendif\n\nifeq ($(BR2_PACKAGE_SCONESERVER_MATHS),y)\nSCONESERVER_DEPENDENCIES += mpfr\nSCONESERVER_CONF_OPTS += --with-maths\nelse\nSCONESERVER_CONF_OPTS += --without-maths\nendif\n\nifeq ($(BR2_PACKAGE_SCONESERVER_TESTBUILDER),y)\nSCONESERVER_CONF_OPTS += --with-testbuilder\nelse\nSCONESERVER_CONF_OPTS += --without-testbuilder\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/scons/scons.hash",
    "content": "# Locally computed:\nsha256  7801f3f62f654528e272df780be10c0e9337e897650b62ddcee9f39fde13f8fb  scons-3.1.2.tar.gz\nsha256  72ed889165fb28378cadac14552be4a959f1ebab6b148abb5dd2b49712c3c6f6  LICENSE.txt\n"
  },
  {
    "path": "package/scons/scons.mk",
    "content": "################################################################################\n#\n# scons\n#\n################################################################################\n\nSCONS_VERSION = 3.1.2\nSCONS_SITE = http://downloads.sourceforge.net/project/scons/scons/$(SCONS_VERSION)\nSCONS_LICENSE = MIT\nSCONS_LICENSE_FILES = LICENSE.txt\nSCONS_SETUP_TYPE = distutils\n\nHOST_SCONS_INSTALL_OPTS = \\\n\t--install-lib=$(HOST_DIR)/lib/scons-$(SCONS_VERSION)\n\n$(eval $(host-python-package))\n\n# variables used by other packages\nSCONS = $(HOST_DIR)/bin/scons $(if $(QUIET),-s)\n"
  },
  {
    "path": "package/screen/0001-no-memcpy-fallback.patch",
    "content": "From: Maarten ter Huurne <maarten@treewalker.org>\nDate: Sat, 13 Sep 2014 11:37:59 +0200\nSubject: Do not use memcpy as an alternative for bcopy/memmove\n\nThe configure script runs a small test program to check whether\nmemcpy can handle overlapping memory areas. However, it is not valid\nto conclude that if a single case of overlapping memory is handled\ncorrectly, all cases will be handled correctly.\n\nSince screen already has its own bcopy implementation as a fallback\nfor the case that bcopy and memmove are unusable, removing the memcpy\noption should not break any systems.\n\nSigned-off-by: Maarten ter Huurne <maarten@treewalker.org>\n[Ricardo: rebase on top of 4.3.1]\nSigned-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>\n[Bernd: rebase on top of 4.7.0]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n acconfig.h   |  3 +--\n configure.ac | 18 +-----------------\n os.h         |  8 ++------\n osdef.h.in   | 10 +---------\n 4 files changed, 5 insertions(+), 34 deletions(-)\n\ndiff --git a/acconfig.h b/acconfig.h\nindex 2e46985..9b0b9d4 100644\n--- a/acconfig.h\n+++ b/acconfig.h\n@@ -476,7 +476,7 @@\n #undef GETTTYENT\n \n /*\n- * Define USEBCOPY if the bcopy/memcpy from your system's C library\n+ * Define USEBCOPY if the bcopy from your system's C library\n  * supports the overlapping of source and destination blocks.  When\n  * undefined, screen uses its own (probably slower) version of bcopy().\n  * \n@@ -487,7 +487,6 @@\n  * Their memove fails the test in the configure script. Sigh. (Juergen)\n  */\n #undef USEBCOPY\n-#undef USEMEMCPY\n #undef USEMEMMOVE\n \n /*\ndiff --git a/configure.ac b/configure.ac\nindex 27690a6..b8e3bec 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1145,7 +1145,7 @@ AC_TRY_LINK(,[getttyent();], AC_DEFINE(GETTTYENT))\n AC_CHECKING(fdwalk)\n AC_TRY_LINK([#include <stdlib.h>], [fdwalk(NULL, NULL);],AC_DEFINE(HAVE_FDWALK))\n \n-AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments)\n+AC_CHECKING(whether memmove/bcopy handles overlapping arguments)\n AC_TRY_RUN([\n main() {\n   char buf[10];\n@@ -1175,22 +1175,6 @@ main() {\n   exit(0); /* libc version works properly.  */\n }], AC_DEFINE(USEMEMMOVE))\n \n-\n-AC_TRY_RUN([\n-#define bcopy(s,d,l) memcpy(d,s,l)\n-main() {\n-  char buf[10];\n-  strcpy(buf, \"abcdefghi\");\n-  bcopy(buf, buf + 2, 3);\n-  if (strncmp(buf, \"ababcf\", 6))\n-    exit(1);\n-  strcpy(buf, \"abcdefghi\");\n-  bcopy(buf + 2, buf, 3);\n-  if (strncmp(buf, \"cdedef\", 6))\n-    exit(1);\n-  exit(0); /* libc version works properly.  */\n-}], AC_DEFINE(USEMEMCPY),,:)\n-\n AC_SYS_LONG_FILE_NAMES\n \n AC_MSG_CHECKING(for vsprintf)\ndiff --git a/os.h b/os.h\nindex e827ac9..0b41fb9 100644\n--- a/os.h\n+++ b/os.h\n@@ -142,12 +142,8 @@ extern int errno;\n # ifdef USEMEMMOVE\n #  define bcopy(s,d,len) memmove(d,s,len)\n # else\n-#  ifdef USEMEMCPY\n-#   define bcopy(s,d,len) memcpy(d,s,len)\n-#  else\n-#   define NEED_OWN_BCOPY\n-#   define bcopy xbcopy\n-#  endif\n+#  define NEED_OWN_BCOPY\n+#  define bcopy xbcopy\n # endif\n #endif\n \ndiff --git a/osdef.h.in b/osdef.h.in\nindex 8687b60..e4057a0 100644\n--- a/osdef.h.in\n+++ b/osdef.h.in\n@@ -58,16 +58,8 @@ extern int   bcmp __P((char *, char *, int));\n extern int   killpg __P((int, int));\n #endif\n \n-#ifndef USEBCOPY\n-# ifdef USEMEMCPY\n-extern void  memcpy __P((char *, char *, int));\n-# else\n-#  ifdef USEMEMMOVE\n+#if defined(USEMEMMOVE) && !defined(USEBCOPY)\n extern void  memmove __P((char *, char *, int));\n-#  else\n-extern void  bcopy __P((char *, char *, int));\n-#  endif\n-# endif\n #else\n extern void  bcopy __P((char *, char *, int));\n #endif\n-- \n1.8.4.5\n\n"
  },
  {
    "path": "package/screen/0002-install-no-backup-binary.patch",
    "content": "From: Maarten ter Huurne <maarten@treewalker.org>\nDate: Sun, 14 Sep 2014 23:58:34 +0200\nSubject: Do not create backup of old installed binary\n\nThis is a rather unusual feature that packagers will not expect.\n\nSigned-off-by: Maarten ter Huurne <maarten@treewalker.org>\n[baruch: update for 4.6.2]\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\n Makefile.in | 4 ----\n 1 file changed, 4 deletions(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 187a69b..65549e9 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -83,12 +83,9 @@ screen: $(OFILES)\n \t    $(OPTIONS) $(CFLAGS) $<\n \n install_bin: .version screen installdirs\n-\t-if [ -f $(DESTDIR)$(bindir)/$(SCREEN) ] && [ ! -f $(DESTDIR)$(bindir)/$(SCREEN).old ]; \\\n-\t\tthen mv $(DESTDIR)$(bindir)/$(SCREEN) $(DESTDIR)$(bindir)/$(SCREEN).old; fi\n \t$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)\n \t-chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)\n # This doesn't work if $(bindir)/screen is a symlink\n-\t-if [ -f $(DESTDIR)$(bindir)/screen ] && [ ! -f $(DESTDIR)$(bindir)/screen.old ]; then mv $(DESTDIR)$(bindir)/screen $(DESTDIR)$(bindir)/screen.old; fi\n \trm -f $(DESTDIR)$(bindir)/screen\n \t(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)\n \tcp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS)\n@@ -113,7 +110,6 @@ installdirs:\n uninstall: .version\n \trm -f $(DESTDIR)$(bindir)/$(SCREEN)\n \trm -f $(DESTDIR)$(bindir)/screen\n-\t-mv $(DESTDIR)$(bindir)/screen.old $(DESTDIR)$(bindir)/screen\n \trm -f $(DESTDIR)$(ETCSCREENRC)\n \tcd doc; $(MAKE) uninstall\n \n-- \n1.8.4.5\n\n"
  },
  {
    "path": "package/screen/0003-install-always-chmod.patch",
    "content": "From: Maarten ter Huurne <maarten@treewalker.org>\nDate: Mon, 15 Sep 2014 00:03:05 +0200\nSubject: Change binary permission flags even if chown fails\n\nTypically when creating a package, the build is not run as root, so\nthe chown will fail. But the chmod can still be done.\n\nSigned-off-by: Maarten ter Huurne <maarten@treewalker.org>\n---\n Makefile.in | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 65549e9..3c12fdb 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -84,7 +84,8 @@ screen: $(OFILES)\n \n install_bin: .version screen\n \t$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)\n-\t-chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)\n+\t-chown root $(DESTDIR)$(bindir)/$(SCREEN)\n+\t-chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)\n # This doesn't work if $(bindir)/screen is a symlink\n \trm -f $(DESTDIR)$(bindir)/screen\n \t(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)\n-- \n1.8.4.5\n\n"
  },
  {
    "path": "package/screen/0004-install-nonversioned-binary.patch",
    "content": "From: Maarten ter Huurne <maarten@treewalker.org>\nDate: Mon, 15 Sep 2014 00:06:20 +0200\nSubject: Support overriding SCREEN to get a non-versioned binary\n\nIf a packager runs \"make install SCREEN=screen\", do not create\n\"screen\" as a symlink to itself.\n\nSigned-off-by: Maarten ter Huurne <maarten@treewalker.org>\n---\n Makefile.in | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 3c12fdb..860f351 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -86,9 +86,11 @@ install_bin: .version screen\n \t$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)\n \t-chown root $(DESTDIR)$(bindir)/$(SCREEN)\n \t-chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)\n+ifneq (${SCREEN},screen)\n # This doesn't work if $(bindir)/screen is a symlink\n \trm -f $(DESTDIR)$(bindir)/screen\n \t(cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen)\n+endif\n \tcp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS)\n \n ###############################################################################\n-- \n1.8.4.5\n\n"
  },
  {
    "path": "package/screen/0005-rename-sched_h.patch",
    "content": "From: Maarten ter Huurne <maarten@treewalker.org>\nDate: Mon, 15 Sep 2014 00:24:41 +0200\nSubject: Renamed sched.h to eventqueue.h\n\nThere is a <sched.h> system header that got shadowed by \"sched.h\".\nWhile Screen itself doesn't include <sched.h>, other system headers\nmight include it indirectly. This broke the build when using uClibc\nwith pthread support.\n\nSigned-off-by: Maarten ter Huurne <maarten@treewalker.org>\n---\n eventqueue.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++\n sched.h      | 48 ------------------------------------------------\n screen.h     |  2 +-\n 3 files changed, 49 insertions(+), 49 deletions(-)\n create mode 100644 eventqueue.h\n delete mode 100644 sched.h\n\ndiff --git a/eventqueue.h b/eventqueue.h\nnew file mode 100644\nindex 0000000..fdc3fc4\n--- /dev/null\n+++ b/eventqueue.h\n@@ -0,0 +1,48 @@\n+/* Copyright (c) 2008, 2009\n+ *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)\n+ *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)\n+ *      Micah Cowan (micah@cowan.name)\n+ *      Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)\n+ * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007\n+ *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)\n+ *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)\n+ * Copyright (c) 1987 Oliver Laumann\n+ *\n+ * This program is free software; you can redistribute it and/or modify\n+ * it under the terms of the GNU General Public License as published by\n+ * the Free Software Foundation; either version 3, or (at your option)\n+ * any later version.\n+ *\n+ * This program is distributed in the hope that it will be useful,\n+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ * GNU General Public License for more details.\n+ *\n+ * You should have received a copy of the GNU General Public License\n+ * along with this program (see the file COPYING); if not, see\n+ * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,\n+ * 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA\n+ *\n+ ****************************************************************\n+ * $Id$ GNU\n+ */\n+\n+struct event\n+{\n+  struct event *next;\n+  void (*handler) __P((struct event *, char *));\n+  char *data;\n+  int fd;\n+  int type;\n+  int pri;\n+  struct timeval timeout;\n+  int queued;\t\t/* in evs queue */\n+  int active;\t\t/* in fdset */\n+  int *condpos;\t\t/* only active if condpos - condneg > 0 */\n+  int *condneg;\n+};\n+\n+#define EV_TIMEOUT\t0\n+#define EV_READ\t\t1\n+#define EV_WRITE\t2\n+#define EV_ALWAYS\t3\ndiff --git a/sched.h b/sched.h\ndeleted file mode 100644\nindex fdc3fc4..0000000\n--- a/sched.h\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-/* Copyright (c) 2008, 2009\n- *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)\n- *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)\n- *      Micah Cowan (micah@cowan.name)\n- *      Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)\n- * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007\n- *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)\n- *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)\n- * Copyright (c) 1987 Oliver Laumann\n- *\n- * This program is free software; you can redistribute it and/or modify\n- * it under the terms of the GNU General Public License as published by\n- * the Free Software Foundation; either version 3, or (at your option)\n- * any later version.\n- *\n- * This program is distributed in the hope that it will be useful,\n- * but WITHOUT ANY WARRANTY; without even the implied warranty of\n- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n- * GNU General Public License for more details.\n- *\n- * You should have received a copy of the GNU General Public License\n- * along with this program (see the file COPYING); if not, see\n- * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,\n- * 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA\n- *\n- ****************************************************************\n- * $Id$ GNU\n- */\n-\n-struct event\n-{\n-  struct event *next;\n-  void (*handler) __P((struct event *, char *));\n-  char *data;\n-  int fd;\n-  int type;\n-  int pri;\n-  struct timeval timeout;\n-  int queued;\t\t/* in evs queue */\n-  int active;\t\t/* in fdset */\n-  int *condpos;\t\t/* only active if condpos - condneg > 0 */\n-  int *condneg;\n-};\n-\n-#define EV_TIMEOUT\t0\n-#define EV_READ\t\t1\n-#define EV_WRITE\t2\n-#define EV_ALWAYS\t3\ndiff --git a/screen.h b/screen.h\nindex 603ca3f..34238c8 100644\n--- a/screen.h\n+++ b/screen.h\n@@ -43,7 +43,7 @@\n #include \"osdef.h\"\n \n #include \"ansi.h\"\n-#include \"sched.h\"\n+#include \"eventqueue.h\"\n #include \"acls.h\"\n #include \"comm.h\"\n #include \"layer.h\"\n-- \n1.8.4.5\n\n"
  },
  {
    "path": "package/screen/0006-comm-h-now-depends-on-term-h.patch",
    "content": "From 39c5f1c76f1fcef4b5958bf828a63f53426b6984 Mon Sep 17 00:00:00 2001\nFrom: Mike Gerwitz <mike@mikegerwitz.com>\nDate: Tue, 24 Dec 2013 22:16:31 -0500\nSubject: comm.h now depends on term.h\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Patch retrieved and updated from:\nhttp://git.savannah.gnu.org/cgit/screen.git/commit/?id=39c5f1c]\n---\n src/Makefile.in | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex e791e79..d4f7c0b 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -113,7 +113,7 @@ term.h: term.c term.sh\n \n kmapdef.c: term.h\n \n-comm.h: comm.c comm.sh config.h\n+comm.h: comm.c comm.sh config.h term.h\n \tAWK=$(AWK) CC=\"$(CC) $(CFLAGS)\" srcdir=${srcdir} sh $(srcdir)/comm.sh\n \n docs:\n-- \ncgit v1.0-41-gc330\n\n"
  },
  {
    "path": "package/screen/0007-comm.h-needed-for-list_-display-generic-.o.patch",
    "content": "From b719314d201a3e9e1e57c65746a468c47bfc847f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 3 Oct 2018 22:29:32 +0200\nSubject: [PATCH] comm.h needed for list_{display,generic}.o\n\ncomm.h is needed to build list_display.o and list_generic.o otherwise\nparallel builds will sometimes fail\n\nFixes:\n - http://autobuild.buildroot.org/results/43105f14857dbe72d8878fc7b3db67f7bdca93cc\n - http://autobuild.buildroot.org/results/47f4ecbec1355285633df287fc9c4e7cccde9378\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://savannah.gnu.org/bugs/index.php?54776]\n---\n Makefile.in | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex af5938b..e6d5247 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -265,7 +265,7 @@  braille.h\n viewport.o: layout.h viewport.h canvas.h viewport.c config.h screen.h os.h osdef.h ansi.h acls.h \\\n  comm.h layer.h term.h image.h display.h window.h extern.h \\\n  braille.h\n-list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h\n-list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h\n+list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h comm.h\n+list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h comm.h\n list_window.o: list_generic.h list_window.c window.h layer.h screen.h osdef.h comm.h\n \n-- \n2.17.1\n\n"
  },
  {
    "path": "package/screen/0008_CVE-2021-26937.patch",
    "content": "Description: [CVE-2021-26937] Fix out of bounds array access\nAuthor: Michael Schröder <mls@suse.de>\nBug-Debian: https://bugs.debian.org/982435\nBug: https://savannah.gnu.org/bugs/?60030\nBug: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00000.html\nBug-OSS-Security: https://www.openwall.com/lists/oss-security/2021/02/09/3\nOrigin: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00010.html\n\nDownloaded from Debian:\nhttps://sources.debian.org/data/main/s/screen/4.8.0-5/debian/patches/99_CVE-2021-26937.patch\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n--- a/encoding.c\n+++ b/encoding.c\n@@ -43,7 +43,7 @@\n # ifdef UTF8\n static int   recode_char __P((int, int, int));\n static int   recode_char_to_encoding __P((int, int));\n-static void  comb_tofront __P((int, int));\n+static void  comb_tofront __P((int));\n #  ifdef DW_CHARS\n static int   recode_char_dw __P((int, int *, int, int));\n static int   recode_char_dw_to_encoding __P((int, int *, int));\n@@ -1263,6 +1263,8 @@\n     {0x30000, 0x3FFFD},\n   };\n \n+  if (c >= 0xdf00 && c <= 0xdfff)\n+    return 1;          /* dw combining sequence */\n   return ((bisearch(c, wide, sizeof(wide) / sizeof(struct interval) - 1)) ||\n           (cjkwidth &&\n            bisearch(c, ambiguous,\n@@ -1330,11 +1332,12 @@\n }\n \n static void\n-comb_tofront(root, i)\n-int root, i;\n+comb_tofront(i)\n+int i;\n {\n   for (;;)\n     {\n+      int root = i >= 0x700 ? 0x801 : 0x800;\n       debug1(\"bring to front: %x\\n\", i);\n       combchars[combchars[i]->prev]->next = combchars[i]->next;\n       combchars[combchars[i]->next]->prev = combchars[i]->prev;\n@@ -1396,9 +1399,9 @@\n     {\n       /* full, recycle old entry */\n       if (c1 >= 0xd800 && c1 < 0xe000)\n-        comb_tofront(root, c1 - 0xd800);\n+        comb_tofront(c1 - 0xd800);\n       i = combchars[root]->prev;\n-      if (c1 == i + 0xd800)\n+      if (i == 0x800 || i == 0x801 || c1 == i + 0xd800)\n \t{\n \t  /* completely full, can't recycle */\n \t  debug(\"utf8_handle_comp: completely full!\\n\");\n@@ -1422,7 +1425,7 @@\n   mc->font  = (i >> 8) + 0xd8;\n   mc->fontx = 0;\n   debug3(\"combinig char %x %x -> %x\\n\", c1, c, i + 0xd800);\n-  comb_tofront(root, i);\n+  comb_tofront(i);\n }\n \n #else /* !UTF8 */\n"
  },
  {
    "path": "package/screen/Config.in",
    "content": "config BR2_PACKAGE_SCREEN\n\tbool \"screen\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Screen is a full-screen window manager that multiplexes a\n\t  physical terminal between several processes, typically\n\t  interactive shells.  Each virtual terminal provides the\n\t  functions of the DEC VT100 terminal and, in addition,\n\t  several control functions from the ANSI X3.64 (ISO 6429) and\n\t  ISO 2022 standards (e.g., insert/delete line and support for\n\t  multiple character sets).\n\n\t  http://www.gnu.org/software/screen/\n"
  },
  {
    "path": "package/screen/screen.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://ftp.gnu.org/gnu/screen/screen-4.8.0.tar.gz.sig\nsha256 6e11b13d8489925fde25dfb0935bf6ed71f9eb47eff233a181e078fde5655aa1  screen-4.8.0.tar.gz\n# Locally calculated\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/screen/screen.mk",
    "content": "################################################################################\n#\n# screen\n#\n################################################################################\n\nSCREEN_VERSION = 4.8.0\nSCREEN_SITE = $(BR2_GNU_MIRROR)/screen\nSCREEN_LICENSE = GPL-3.0+\nSCREEN_LICENSE_FILES = COPYING\nSCREEN_CPE_ID_VENDOR = gnu\nSCREEN_SELINUX_MODULES = screen\nSCREEN_DEPENDENCIES = ncurses\nSCREEN_AUTORECONF = YES\nSCREEN_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS)\"\nSCREEN_CONF_OPTS = --enable-colors256\nSCREEN_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) SCREEN=screen install_bin\n\n# 0008_CVE-2021-26937.patch\nSCREEN_IGNORE_CVES += CVE-2021-26937\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nSCREEN_DEPENDENCIES += linux-pam\nSCREEN_CONF_OPTS += --enable-pam\nelse\nSCREEN_CONF_OPTS += --disable-pam\nendif\n\ndefine SCREEN_INSTALL_SCREENRC\n\t$(INSTALL) -m 0755 -D $(@D)/etc/screenrc $(TARGET_DIR)/etc/screenrc\nendef\nSCREEN_POST_INSTALL_TARGET_HOOKS += SCREEN_INSTALL_SCREENRC\n\n# Add /usr/bin/screen to /etc/shells otherwise some login tools like dropbear\n# can reject the user connection. See man shells.\ndefine SCREEN_ADD_SCREEN_TO_SHELLS\n\tgrep -qsE '^/usr/bin/screen$$' $(TARGET_DIR)/etc/shells \\\n\t\t|| echo \"/usr/bin/screen\" >> $(TARGET_DIR)/etc/shells\nendef\nSCREEN_TARGET_FINALIZE_HOOKS += SCREEN_ADD_SCREEN_TO_SHELLS\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/screenfetch/Config.in",
    "content": "config BR2_PACKAGE_SCREENFETCH\n\tbool \"screenfetch\"\n\tdepends on BR2_USE_MMU # bash\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash\n\tselect BR2_PACKAGE_BASH # runtime dependency\n\thelp\n\t  screenFetch is a bash script to display distro info.\n\n\t  https://github.com/KittyKatt/screenFetch\n"
  },
  {
    "path": "package/screenfetch/screenfetch.hash",
    "content": "sha256  aa97dcd2a8576ae18de6c16c19744aae1573a3da7541af4b98a91930a30a3178  screenfetch-3.9.1.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/screenfetch/screenfetch.mk",
    "content": "################################################################################\n#\n# screenfetch\n#\n################################################################################\n\nSCREENFETCH_VERSION = 3.9.1\nSCREENFETCH_SITE = $(call github,KittyKatt,screenFetch,v$(SCREENFETCH_VERSION))\nSCREENFETCH_LICENSE = GPL-3.0+\nSCREENFETCH_LICENSE_FILES = COPYING\n\ndefine SCREENFETCH_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/screenfetch-dev \\\n\t\t$(TARGET_DIR)/usr/bin/screenfetch\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/scrub/0001-configure-ac-make-sure-m4-macros-are-included-in-the-build.patch",
    "content": "From 11d30916dd9c11a26c7c8a0f6db9e6ebca301594 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Mon, 18 Jan 2016 21:45:23 +0100\nSubject: [PATCH] configure.ac: make sure m4 macros are included in the build\n\nThis change prevents the following error to occur when calling\nautoreconf:\n\n  >>> scrub 2.6.1 Autoreconfiguring\n  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\"\n  libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config'.\n  libtoolize: copying file 'config/ltmain.sh'\n  libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([m4])' to configure.ac,\n  libtoolize: and rerunning libtoolize and aclocal.\n  libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.\n  configure.ac:10: error possibly undefined macro: X_AC_META\n        If this token and others are legitimate, please use m4_pattern_allow.\n        See the Autoconf documentation.\n  configure.ac:11: error possibly undefined macro: X_AC_EXPAND_INSTALL_DIRS\n  configure.ac:51: error possibly undefined macro: AC_PKGCONFIG\n  configure.ac:70: error possibly undefined macro: X_AC_CHECK_PTHREADS\n  autoreconf: /work/build/scrub/host/usr/bin/autoconf failed with exit status: 1\n  package/pkg-generic.mk:185: recipe for target '/work/build/scrub/build/scrub-2.6.1/.stamp_configured' failed\n  make: *** [/work/build/scrub/build/scrub-2.6.1/.stamp_configured] Error 1\n  make: Leaving directory '/work/repos/buildroot'\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n[Upstream commit: https://github.com/chaos/scrub/commit/11d30916dd9c11a26c7c8a0f6db9e6ebca301594]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.ac | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 3d71289..07eaf33 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -7,6 +7,7 @@ AC_INIT(m4_esyscmd([awk '/Name:/ {printf \"%s\",$2; exit}' META]),\n AC_CONFIG_AUX_DIR([config])\n AC_CONFIG_SRCDIR([NEWS])\n AC_CANONICAL_SYSTEM\n+AC_CONFIG_MACRO_DIR([config])\n X_AC_META\n X_AC_EXPAND_INSTALL_DIRS\n \n"
  },
  {
    "path": "package/scrub/Config.in",
    "content": "config BR2_PACKAGE_SCRUB\n\tbool \"scrub\"\n\thelp\n\t  Scrub iteratively writes patterns on files or disk devices\n\t  to make retrieving the data more difficult.\n\n\t  https://github.com/chaos/scrub/\n"
  },
  {
    "path": "package/scrub/scrub.hash",
    "content": "# Locally computed\nsha256  838b061b2e1932b342fb9695c5579cdff5d2d72506cb41d6d8032eba18aed969  scrub-2.6.1.tar.gz\n# License files, locally calculated\nsha256  204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994  COPYING\nsha256  f76abbfb80cde1036cb553cdecb08bb846a48e33c91ef56c0f494172fd407f33  DISCLAIMER\n"
  },
  {
    "path": "package/scrub/scrub.mk",
    "content": "################################################################################\n#\n# scrub\n#\n################################################################################\n\nSCRUB_VERSION = 2.6.1\nSCRUB_SITE = $(call github,chaos,scrub,$(SCRUB_VERSION))\nSCRUB_LICENSE = GPL-2.0+\nSCRUB_LICENSE_FILES = COPYING DISCLAIMER\n\n# Fetching from the git repo, no configure/Makefile generated, and patching\n# configure.ac\nSCRUB_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/scrypt/Config.in",
    "content": "config BR2_PACKAGE_SCRYPT\n\tbool \"scrypt\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  A password-based key derivation function specifically\n\t  designed to make it costly to perform large-scale custom\n\t  hardware attacks by requiring large amounts of memory.\n\n\t  http://www.tarsnap.com/scrypt.html\n"
  },
  {
    "path": "package/scrypt/scrypt.hash",
    "content": "# From http://www.tarsnap.com/scrypt/scrypt-sigs-1.3.1.asc\nsha256  df2f23197c9589963267f85f9c5307ecf2b35a98b83a551bf1b1fb7a4d06d4c2  scrypt-1.3.1.tgz\n# Locally computed\nsha256  1fb4da0e9000287414066a238f378528d5652f89b72b4a1d6b89fdd20031b22d  COPYRIGHT\n"
  },
  {
    "path": "package/scrypt/scrypt.mk",
    "content": "################################################################################\n#\n# scrypt\n#\n################################################################################\n\nSCRYPT_VERSION = 1.3.1\nSCRYPT_SOURCE = scrypt-$(SCRYPT_VERSION).tgz\nSCRYPT_SITE = http://www.tarsnap.com/scrypt\nSCRYPT_LICENSE = BSD-2-Clause\nSCRYPT_LICENSE_FILES = COPYRIGHT\nSCRYPT_DEPENDENCIES = openssl\nSCRYPT_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sdbusplus/Config.in",
    "content": "config BR2_PACKAGE_SDBUSPLUS\n\tbool \"sdbusplus\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_SYSTEMD\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17\n\thelp\n\t  A C++ library for sd-bus with a bindings and doc generator.\n\n\t  This will build the target library.  See the host package for\n\t  the bindings and documentation generation program.\n\n\t  https://github.com/openbmc/sdbusplus\n\ncomment \"sdbusplus needs systemd and a toolchain w/ C++, gcc >= 7\"\n\tdepends on !BR2_PACKAGE_SYSTEMD || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_7\n"
  },
  {
    "path": "package/sdbusplus/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_SDBUSPLUS\n\tbool \"host-sdbusplus\"\n\tselect BR2_PACKAGE_HOST_PKGCONF\n\thelp\n\t  A C++ library for sd-bus with a bindings and doc generator.\n\n\t  This will build the Python host side generation tool for\n\t  bindings and documentation.\n\n\t  https://github.com/openbmc/sdbusplus\n"
  },
  {
    "path": "package/sdbusplus/sdbusplus.hash",
    "content": "# Locally calculated\nsha256  c67b8f3d9b74fd0d70eb6eec3b2ec2d496d0f169deedf6fc07dbff2c2f275d2b  sdbusplus-4212292bcf136d04b38ba5116aa568b0fa312798.tar.gz\n\n# License file, locally calculated\nsha256  b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1  LICENSE\n"
  },
  {
    "path": "package/sdbusplus/sdbusplus.mk",
    "content": "################################################################################\n#\n# sdbusplus\n#\n################################################################################\n\nSDBUSPLUS_VERSION = 4212292bcf136d04b38ba5116aa568b0fa312798\nSDBUSPLUS_SITE = $(call github,openbmc,sdbusplus,$(SDBUSPLUS_VERSION))\nSDBUSPLUS_DEPENDENCIES = host-autoconf-archive host-pkgconf systemd\nHOST_SDBUSPLUS_DEPENDENCIES = \\\n\thost-autoconf-archive \\\n\thost-pkgconf \\\n\thost-python3 \\\n\thost-python-inflection \\\n\thost-python-mako \\\n\thost-python-pyyaml\nSDBUSPLUS_CONF_OPTS = --disable-sdbuspp\nHOST_SDBUSPLUS_CONF_OPTS = --disable-libsdbusplus\nSDBUSPLUS_AUTORECONF = YES\nSDBUSPLUS_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive\nSDBUSPLUS_INSTALL_STAGING = YES\nSDBUSPLUS_LICENSE = Apache-2.0\nSDBUSPLUS_LICENSE_FILES = LICENSE\n\n# Autoreconf is missing the m4/ directory, which might actually be missing\n# iff it was the first argument, but unfortunately we are overriding the\n# first include directory above. Thus we need that hook here.\ndefine SDBUSPLUS_CREATE_M4\n\tmkdir -p $(@D)/m4\nendef\nSDBUSPLUS_POST_PATCH_HOOKS += SDBUSPLUS_CREATE_M4\nHOST_SDBUSPLUS_POST_PATCH_HOOKS += SDBUSPLUS_CREATE_M4\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/sdl/0001-use-correct-directfb-config.patch",
    "content": "[PATCH] configure.in: use correct directfb-config in version check\n\nThe configure script has just checked for the correct directfb-config\nscript, so also use it for the version check instead of whatever\nmight be in the path.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n---\n configure.in |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\nIndex: SDL-1.2.15/configure.in\n===================================================================\n--- SDL-1.2.15.orig/configure.in\n+++ SDL-1.2.15/configure.in\n@@ -1276,7 +1276,7 @@\n         else\n             set -- `echo $DIRECTFB_REQUIRED_VERSION | sed 's/\\./ /g'`\n             NEED_VERSION=`expr $1 \\* 10000 + $2 \\* 100 + $3`\n-            set -- `directfb-config --version | sed 's/\\./ /g'`\n+            set -- `$DIRECTFBCONFIG --version | sed 's/\\./ /g'`\n             HAVE_VERSION=`expr $1 \\* 10000 + $2 \\* 100 + $3`\n             if test $HAVE_VERSION -ge $NEED_VERSION; then\n                 DIRECTFB_CFLAGS=`$DIRECTFBCONFIG --cflags`\n\n"
  },
  {
    "path": "package/sdl/0002-fix-compilation-with-libx11.patch",
    "content": "sdl: Fix compilation with libX11 >= 1.5.99.902\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n\n# HG changeset patch\n# User Azamat H. Hackimov <azamat.hackimov@gmail.com>\n# Date 1370184533 -21600\n# Node ID 91ad7b43317a6387e115ecdf63a49137f47e42c8\n# Parent  f7fd5c3951b9ed922fdf696f7182e71b58a13268\nFix compilation with libX11 >= 1.5.99.902.\n\nThese changes fixes bug #1769 for SDL 1.2\n(http://bugzilla.libsdl.org/show_bug.cgi?id=1769).\n\ndiff -r f7fd5c3951b9 -r 91ad7b43317a configure.in\n--- a/configure.in\tWed Apr 17 00:56:53 2013 -0700\n+++ b/configure.in\tSun Jun 02 20:48:53 2013 +0600\n@@ -1169,6 +1169,17 @@\n             if test x$definitely_enable_video_x11_xrandr = xyes; then\n                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XRANDR)\n             fi\n+            AC_MSG_CHECKING(for const parameter to _XData32)\n+            have_const_param_xdata32=no\n+            AC_TRY_COMPILE([\n+              #include <X11/Xlibint.h>\n+              extern int _XData32(Display *dpy,register _Xconst long *data,unsigned len);\n+            ],[\n+            ],[\n+            have_const_param_xdata32=yes\n+            AC_DEFINE(SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32)\n+            ])\n+            AC_MSG_RESULT($have_const_param_xdata32)\n         fi\n     fi\n }\ndiff -r f7fd5c3951b9 -r 91ad7b43317a include/SDL_config.h.in\n--- a/include/SDL_config.h.in\tWed Apr 17 00:56:53 2013 -0700\n+++ b/include/SDL_config.h.in\tSun Jun 02 20:48:53 2013 +0600\n@@ -283,6 +283,7 @@\n #undef SDL_VIDEO_DRIVER_WINDIB\n #undef SDL_VIDEO_DRIVER_WSCONS\n #undef SDL_VIDEO_DRIVER_X11\n+#undef SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32\n #undef SDL_VIDEO_DRIVER_X11_DGAMOUSE\n #undef SDL_VIDEO_DRIVER_X11_DYNAMIC\n #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT\ndiff -r f7fd5c3951b9 -r 91ad7b43317a src/video/x11/SDL_x11sym.h\n--- a/src/video/x11/SDL_x11sym.h\tWed Apr 17 00:56:53 2013 -0700\n+++ b/src/video/x11/SDL_x11sym.h\tSun Jun 02 20:48:53 2013 +0600\n@@ -165,7 +165,11 @@\n  */\n #ifdef LONG64\n SDL_X11_MODULE(IO_32BIT)\n+#if SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32\n+SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)\n+#else\n SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)\n+#endif\n SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)\n #endif\n \n"
  },
  {
    "path": "package/sdl/Config.in",
    "content": "config BR2_PACKAGE_SDL\n\tbool \"SDL\"\n\thelp\n\t  Simple DirectMedia Layer - SDL is a library that allows\n\t  programs portable low level access to a video framebuffer,\n\t  audio output, mouse, and keyboard.\n\n\t  http://www.libsdl.org/\n\nif BR2_PACKAGE_SDL\n\nconfig BR2_PACKAGE_SDL_FBCON\n\tbool \"SDL framebuffer console video driver\"\n\tdefault y\n\nconfig BR2_PACKAGE_SDL_DIRECTFB\n\tbool \"SDL DirectFB video driver\"\n\tdepends on BR2_PACKAGE_DIRECTFB\n\nconfig BR2_PACKAGE_SDL_X11\n\tbool \"SDL X11 video driver\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\nendif\n"
  },
  {
    "path": "package/sdl/sdl.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256\td6d316a793e5e348155f0dd93b979798933fb98aa1edebcc108829d6474aad00\tSDL-1.2.15.tar.gz\n# Locally computed\nsha256\tbb117c0fbd7f57f64170b690285d7df07c2371b578e3b3cd3aa2e1155ef461a0\tCOPYING\n"
  },
  {
    "path": "package/sdl/sdl.mk",
    "content": "################################################################################\n#\n# sdl\n#\n################################################################################\n\nSDL_VERSION = 1.2.15\nSDL_SOURCE = SDL-$(SDL_VERSION).tar.gz\nSDL_SITE = http://www.libsdl.org/release\nSDL_LICENSE = LGPL-2.1+\nSDL_LICENSE_FILES = COPYING\nSDL_CPE_ID_VENDOR = libsdl\nSDL_CPE_ID_PRODUCT = simple_directmedia_layer\nSDL_INSTALL_STAGING = YES\n\n# we're patching configure.in, but package cannot autoreconf with our version of\n# autotools, so we have to do it manually instead of setting SDL_AUTORECONF = YES\ndefine SDL_RUN_AUTOGEN\n\tcd $(@D) && PATH=$(BR_PATH) ./autogen.sh\nendef\n\nSDL_PRE_CONFIGURE_HOOKS += SDL_RUN_AUTOGEN\nHOST_SDL_PRE_CONFIGURE_HOOKS += SDL_RUN_AUTOGEN\n\nSDL_DEPENDENCIES += host-automake host-autoconf host-libtool\nHOST_SDL_DEPENDENCIES += host-automake host-autoconf host-libtool\n\nSDL_CONF_OPTS += --enable-video-qtopia=no\n\nifeq ($(BR2_PACKAGE_SDL_FBCON),y)\nSDL_CONF_OPTS += --enable-video-fbcon=yes\nelse\nSDL_CONF_OPTS += --enable-video-fbcon=no\nendif\n\nifeq ($(BR2_PACKAGE_SDL_DIRECTFB),y)\nSDL_DEPENDENCIES += directfb\nSDL_CONF_OPTS += --enable-video-directfb=yes\nSDL_CONF_ENV = ac_cv_path_DIRECTFBCONFIG=$(STAGING_DIR)/usr/bin/directfb-config\nelse\nSDL_CONF_OPTS += --enable-video-directfb=no\nendif\n\nifeq ($(BR2_PACKAGE_SDL_X11),y)\nSDL_CONF_OPTS += --enable-video-x11=yes\nSDL_DEPENDENCIES += \\\n\txlib_libX11 xlib_libXext \\\n\t$(if $(BR2_PACKAGE_XLIB_LIBXRENDER), xlib_libXrender) \\\n\t$(if $(BR2_PACKAGE_XLIB_LIBXRANDR), xlib_libXrandr)\nelse\nSDL_CONF_OPTS += --enable-video-x11=no\nendif\n\nifneq ($(BR2_USE_MMU),y)\nSDL_CONF_OPTS += --enable-dga=no\nendif\n\n# overwrite autodection (prevents confusion with host libpth version)\nifeq ($(BR2_PACKAGE_LIBPTHSEM_COMPAT),y)\nSDL_CONF_OPTS += --enable-pth\nSDL_CONF_ENV += ac_cv_path_PTH_CONFIG=$(STAGING_DIR)/usr/bin/pth-config\nSDL_DEPENDENCIES += libpthsem\nelse\nSDL_CONF_OPTS += --disable-pth\nendif\n\nifeq ($(BR2_PACKAGE_TSLIB),y)\nSDL_DEPENDENCIES += tslib\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nSDL_DEPENDENCIES += alsa-lib\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D),y)\nSDL_DEPENDENCIES += mesa3d\nendif\n\nSDL_CONF_OPTS += \\\n\t--disable-rpath \\\n\t--enable-pulseaudio=no \\\n\t--disable-arts \\\n\t--disable-esd \\\n\t--disable-nasm \\\n\t--disable-video-ps3\n\nHOST_SDL_CONF_OPTS += \\\n\t--enable-pulseaudio=no \\\n\t--enable-video-x11=no \\\n\t--disable-arts \\\n\t--disable-esd \\\n\t--disable-nasm \\\n\t--disable-video-ps3\n\nSDL_CONFIG_SCRIPTS = sdl-config\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/sdl2/Config.in",
    "content": "config BR2_PACKAGE_SDL2\n\tbool \"sdl2\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Simple DirectMedia Layer 2 - SDL2 is a library that allows\n\t  programs portable low level access to a video framebuffer,\n\t  audio output, mouse, and keyboard. It is not compatible with\n\t  SDL1.\n\n\t  http://www.libsdl.org/\n\nif BR2_PACKAGE_SDL2\n\nconfig BR2_PACKAGE_SDL2_DIRECTFB\n\tbool \"DirectFB video driver\"\n\tdepends on BR2_PACKAGE_DIRECTFB\n\ncomment \"DirectFB video driver needs directfb\"\n\tdepends on !BR2_PACKAGE_DIRECTFB\n\nconfig BR2_PACKAGE_SDL2_X11\n\tbool \"X11 video driver\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\ncomment \"X11 video driver needs X.org\"\n\tdepends on !BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU\n\nconfig BR2_PACKAGE_SDL2_KMSDRM\n\tbool \"KMS/DRM video driver\"\n\tdepends on BR2_PACKAGE_LIBDRM\n\tdepends on BR2_PACKAGE_MESA3D_GBM\n\ncomment \"KMS/DRM video driver needs libdrm\"\n\tdepends on !BR2_PACKAGE_LIBDRM\n\ncomment \"KMS/DRM video driver needs mesa3d w/ GBM\"\n\tdepends on !BR2_PACKAGE_MESA3D_GBM\n\nconfig BR2_PACKAGE_SDL2_OPENGL\n\tbool \"OpenGL (GLX)\"\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU # X11 video driver\n\tselect BR2_PACKAGE_SDL2_X11\n\ncomment \"OpenGL support needs X11 and an OpenGL provider\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7\n\nconfig BR2_PACKAGE_SDL2_OPENGLES\n\tbool \"OpenGL ES\"\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n\ncomment \"OpenGL ES support needs an OpenGL ES provider\"\n\tdepends on !BR2_PACKAGE_HAS_LIBGLES\n\nendif\n\ncomment \"sdl2 needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/sdl2/sdl2.hash",
    "content": "# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.0.16.tar.gz.sig\nsha256  65be9ff6004034b5b2ce9927b5a4db1814930f169c4b2dae0a1e4697075f287b  SDL2-2.0.16.tar.gz\n# Locally calculated\nsha256  52d41d0c82507721ca1fd92c20dc2bf9ca531b3a288ef845a8275c550f118804  LICENSE.txt\n"
  },
  {
    "path": "package/sdl2/sdl2.mk",
    "content": "################################################################################\n#\n# sdl2\n#\n################################################################################\n\nSDL2_VERSION = 2.0.16\nSDL2_SOURCE = SDL2-$(SDL2_VERSION).tar.gz\nSDL2_SITE = http://www.libsdl.org/release\nSDL2_LICENSE = Zlib\nSDL2_LICENSE_FILES = LICENSE.txt\nSDL2_CPE_ID_VENDOR = libsdl\nSDL2_CPE_ID_PRODUCT = simple_directmedia_layer\nSDL2_INSTALL_STAGING = YES\nSDL2_CONFIG_SCRIPTS = sdl2-config\n\nSDL2_CONF_OPTS += \\\n\t--disable-rpath \\\n\t--disable-arts \\\n\t--disable-esd \\\n\t--disable-dbus \\\n\t--disable-pulseaudio \\\n\t--disable-video-wayland\n\n# We are using autotools build system for sdl2, so the sdl2-config.cmake\n# include path are not resolved like for sdl2-config script.\n# Change the absolute /usr path to resolve relatively to the sdl2-config.cmake location.\n# https://bugzilla.libsdl.org/show_bug.cgi?id=4597\ndefine SDL2_FIX_SDL2_CONFIG_CMAKE\n\t$(SED) '2iget_filename_component(PACKAGE_PREFIX_DIR \"$${CMAKE_CURRENT_LIST_DIR}/../../../\" ABSOLUTE)\\n' \\\n\t\t$(STAGING_DIR)/usr/lib/cmake/SDL2/sdl2-config.cmake\n\t$(SED) 's%\"/usr\"%$${PACKAGE_PREFIX_DIR}%' \\\n\t\t$(STAGING_DIR)/usr/lib/cmake/SDL2/sdl2-config.cmake\nendef\nSDL2_POST_INSTALL_STAGING_HOOKS += SDL2_FIX_SDL2_CONFIG_CMAKE\n\n# We must enable static build to get compilation successful.\nSDL2_CONF_OPTS += --enable-static\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nSDL2_DEPENDENCIES += udev\nSDL2_CONF_OPTS += --enable-libudev\nelse\nSDL2_CONF_OPTS += --disable-libudev\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE),y)\nSDL2_CONF_OPTS += --enable-sse\nelse\nSDL2_CONF_OPTS += --disable-sse\nendif\n\nifeq ($(BR2_X86_CPU_HAS_3DNOW),y)\nSDL2_CONF_OPTS += --enable-3dnow\nelse\nSDL2_CONF_OPTS += --disable-3dnow\nendif\n\nifeq ($(BR2_PACKAGE_SDL2_DIRECTFB),y)\nSDL2_DEPENDENCIES += directfb\nSDL2_CONF_OPTS += --enable-video-directfb\nSDL2_CONF_ENV = ac_cv_path_DIRECTFBCONFIG=$(STAGING_DIR)/usr/bin/directfb-config\nelse\nSDL2_CONF_OPTS += --disable-video-directfb\nendif\n\nifeq ($(BR2_PACKAGE_SDL2_OPENGLES)$(BR2_PACKAGE_RPI_USERLAND),yy)\nSDL2_DEPENDENCIES += rpi-userland\nSDL2_CONF_OPTS += --enable-video-rpi\nelse\nSDL2_CONF_OPTS += --disable-video-rpi\nendif\n\n# x-includes and x-libraries must be set for cross-compiling\n# By default x_includes and x_libraries contains unsafe paths.\n# (/usr/X11R6/include and /usr/X11R6/lib)\nifeq ($(BR2_PACKAGE_SDL2_X11),y)\nSDL2_DEPENDENCIES += xlib_libX11 xlib_libXext\n\n# X11/extensions/shape.h is provided by libXext.\nSDL2_CONF_OPTS += --enable-video-x11 \\\n\t--with-x=$(STAGING_DIR) \\\n\t--x-includes=$(STAGING_DIR)/usr/include \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib \\\n\t--enable-video-x11-xshape\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y)\nSDL2_DEPENDENCIES += xlib_libXcursor\nSDL2_CONF_OPTS += --enable-video-x11-xcursor\nelse\nSDL2_CONF_OPTS += --disable-video-x11-xcursor\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nSDL2_DEPENDENCIES += xlib_libXinerama\nSDL2_CONF_OPTS += --enable-video-x11-xinerama\nelse\nSDL2_CONF_OPTS += --disable-video-x11-xinerama\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXI),y)\nSDL2_DEPENDENCIES += xlib_libXi\nSDL2_CONF_OPTS += --enable-video-x11-xinput\nelse\nSDL2_CONF_OPTS += --disable-video-x11-xinput\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)\nSDL2_DEPENDENCIES += xlib_libXrandr\nSDL2_CONF_OPTS += --enable-video-x11-xrandr\nelse\nSDL2_CONF_OPTS += --disable-video-x11-xrandr\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXSCRNSAVER),y)\nSDL2_DEPENDENCIES += xlib_libXScrnSaver\nSDL2_CONF_OPTS += --enable-video-x11-scrnsaver\nelse\nSDL2_CONF_OPTS += --disable-video-x11-scrnsaver\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y)\nSDL2_DEPENDENCIES += xlib_libXxf86vm\nSDL2_CONF_OPTS += --enable-video-x11-vm\nelse\nSDL2_CONF_OPTS += --disable-video-x11-vm\nendif\n\nelse\nSDL2_CONF_OPTS += --disable-video-x11 --without-x\nendif\n\nifeq ($(BR2_PACKAGE_SDL2_OPENGL),y)\nSDL2_CONF_OPTS += --enable-video-opengl\nSDL2_DEPENDENCIES += libgl\nelse\nSDL2_CONF_OPTS += --disable-video-opengl\nendif\n\nifeq ($(BR2_PACKAGE_SDL2_OPENGLES),y)\nSDL2_CONF_OPTS += --enable-video-opengles\nSDL2_DEPENDENCIES += libgles\nelse\nSDL2_CONF_OPTS += --disable-video-opengles\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nSDL2_DEPENDENCIES += alsa-lib\nSDL2_CONF_OPTS += --enable-alsa\nelse\nSDL2_CONF_OPTS += --disable-alsa\nendif\n\nifeq ($(BR2_PACKAGE_SDL2_KMSDRM),y)\nSDL2_DEPENDENCIES += libdrm mesa3d\nSDL2_CONF_OPTS += --enable-video-kmsdrm\nelse\nSDL2_CONF_OPTS += --disable-video-kmsdrm\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sdl2_gfx/Config.in",
    "content": "config BR2_PACKAGE_SDL2_GFX\n\tbool \"sdl2_gfx\"\n\tdepends on BR2_PACKAGE_SDL2\n\thelp\n\t  The SDL2_gfx library is an extension to the SDL2 library\n\t  which provides basic antialiased drawing routines such as\n\t  lines, circles or polygons, an interpolating rotozoomer for\n\t  SDL surfaces, framerate control and MMX image filters.\n\n\t  http://www.ferzkopp.net/wordpress/2016/01/02/sdl_gfx-sdl2_gfx\n"
  },
  {
    "path": "package/sdl2_gfx/sdl2_gfx.hash",
    "content": "# Locally calculated\nsha256  63e0e01addedc9df2f85b93a248f06e8a04affa014a835c2ea34bfe34e576262  SDL2_gfx-1.0.4.tar.gz\nsha256  ec9036525fe1adde787041cce6c4b7fbb262863c238bb9051037e29a57e27bfc  COPYING\nsha256  18e6fad60b809b0e30bd2576a0d33c179ca2ac694504a849d05b6579e3c481dd  SDL2_framerate.h\n"
  },
  {
    "path": "package/sdl2_gfx/sdl2_gfx.mk",
    "content": "################################################################################\n#\n# sdl2_gfx\n#\n################################################################################\n\nSDL2_GFX_VERSION = 1.0.4\nSDL2_GFX_SOURCE = SDL2_gfx-$(SDL2_GFX_VERSION).tar.gz\nSDL2_GFX_SITE = http://www.ferzkopp.net/Software/SDL2_gfx\nSDL2_GFX_LICENSE = Zlib\nSDL2_GFX_LICENSE_FILES = COPYING SDL2_framerate.h\nSDL2_GFX_INSTALL_STAGING = YES\nSDL2_GFX_DEPENDENCIES = sdl2 host-pkgconf\nSDL2_GFX_CONF_OPTS = --disable-sdltest\n# configure/Makefile.in not up-to-date, causing aclocal to be used at\n# build time if we don't autoreconf.\nSDL2_GFX_AUTORECONF = YES\n\n# Even though x86_64 processors support MMX, the MMX-specific assembly\n# code in sdl2_gfx is IA32 specific, and does not build for x86_64.\nifeq ($(BR2_i386)$(BR2_X86_CPU_HAS_MMX),yy)\nSDL2_GFX_CONF_OPTS += --enable-mmx\nelse\nSDL2_GFX_CONF_OPTS += --disable-mmx\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sdl2_image/Config.in",
    "content": "config BR2_PACKAGE_SDL2_IMAGE\n\tbool \"sdl2_image\"\n\tdepends on BR2_PACKAGE_SDL2\n\thelp\n\t  SDL2_image is an image file loading library. It loads images\n\t  as SDL surfaces, and supports the following formats: BMP,\n\t  GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, XCF, XPM, XV.\n\n\t  http://www.libsdl.org/projects/SDL_image/\n"
  },
  {
    "path": "package/sdl2_image/sdl2_image.hash",
    "content": "# Locally calculated\nsha256 bdd5f6e026682f7d7e1be0b6051b209da2f402a2dd8bd1c4bd9c25ad263108d0  SDL2_image-2.0.5.tar.gz\nsha256 45079362e2230154205413a6940544ca94e3479ccf76205c71c4f542a6815d25  COPYING.txt\n"
  },
  {
    "path": "package/sdl2_image/sdl2_image.mk",
    "content": "################################################################################\n#\n# sdl2_image\n#\n################################################################################\n\nSDL2_IMAGE_VERSION = 2.0.5\nSDL2_IMAGE_SOURCE = SDL2_image-$(SDL2_IMAGE_VERSION).tar.gz\nSDL2_IMAGE_SITE = http://www.libsdl.org/projects/SDL_image/release\nSDL2_IMAGE_INSTALL_STAGING = YES\nSDL2_IMAGE_LICENSE = Zlib\nSDL2_IMAGE_LICENSE_FILES = COPYING.txt\nSDL2_IMAGE_CPE_ID_VENDOR = libsdl\nSDL2_IMAGE_CPE_ID_PRODUCT = sdl_image\n\n# Unconditionally enable support for image formats that don't require\n# any dependency.\nSDL2_IMAGE_CONF_OPTS = \\\n\t--disable-sdltest \\\n\t--enable-bmp \\\n\t--enable-gif \\\n\t--enable-lbm \\\n\t--enable-pcx \\\n\t--enable-pnm \\\n\t--enable-tga \\\n\t--enable-xcf \\\n\t--enable-xpm \\\n\t--enable-xv\n\nSDL2_IMAGE_DEPENDENCIES = sdl2 host-pkgconf\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nSDL2_IMAGE_CONF_OPTS += --enable-jpg\nSDL2_IMAGE_DEPENDENCIES += jpeg\nelse\nSDL2_IMAGE_CONF_OPTS += --disable-jpg\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nSDL2_IMAGE_CONF_OPTS += --enable-png\nSDL2_IMAGE_DEPENDENCIES += libpng\nelse\nSDL2_IMAGE_CONF_OPTS += --disable-png\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nSDL2_IMAGE_CONF_OPTS += --enable-tif\nSDL2_IMAGE_DEPENDENCIES += tiff\nelse\nSDL2_IMAGE_CONF_OPTS += --disable-tif\nendif\n\nifeq ($(BR2_PACKAGE_WEBP),y)\nSDL2_IMAGE_CONF_OPTS += --enable-webp\nSDL2_IMAGE_DEPENDENCIES += webp\nelse\nSDL2_IMAGE_CONF_OPTS += --disable-webp\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sdl2_mixer/Config.in",
    "content": "config BR2_PACKAGE_SDL2_MIXER\n\tbool \"sdl2_mixer\"\n\tdepends on BR2_PACKAGE_SDL2\n\thelp\n\t  SDL_mixer is a sample multi-channel audio mixer library.  It\n\t  supports any number of simultaneously playing channels of 16\n\t  bit stereo audio, plus a single channel of music, mixed by\n\t  the popular FLAC, MikMod MOD, Timidity MIDI, Ogg Vorbis, and\n\t  SMPEG MP3 libraries.\n\n\t  http://www.libsdl.org/projects/SDL_mixer/\n"
  },
  {
    "path": "package/sdl2_mixer/sdl2_mixer.hash",
    "content": "# Locally calculated\nsha256  b4cf5a382c061cd75081cf246c2aa2f9df8db04bdda8dcdc6b6cca55bede2419  SDL2_mixer-2.0.4.tar.gz\nsha256  113727180e7956cb9718b03b41da85b63ea54743a33047071a623bf672895a10  COPYING.txt\n"
  },
  {
    "path": "package/sdl2_mixer/sdl2_mixer.mk",
    "content": "################################################################################\n#\n# sdl2_mixer\n#\n################################################################################\n\nSDL2_MIXER_VERSION = 2.0.4\nSDL2_MIXER_SOURCE = SDL2_mixer-$(SDL2_MIXER_VERSION).tar.gz\nSDL2_MIXER_SITE = http://www.libsdl.org/projects/SDL_mixer/release\nSDL2_MIXER_LICENSE = Zlib\nSDL2_MIXER_LICENSE_FILES = COPYING.txt\nSDL2_MIXER_INSTALL_STAGING = YES\nSDL2_MIXER_DEPENDENCIES = sdl2 host-pkgconf\n\nSDL2_MIXER_CONF_OPTS = --disable-music-mp3\n\nifeq ($(BR2_PACKAGE_FLAC),y)\nSDL2_MIXER_CONF_OPTS += --enable-music-flac\nSDL2_MIXER_DEPENDENCIES += flac\nelse\nSDL2_MIXER_CONF_OPTS += --disable-music-flac\nendif\n\nifeq ($(BR2_PACKAGE_FLUIDSYNTH),y)\nSDL2_MIXER_CONF_OPTS += --enable-music-midi-fluidsynth\nSDL2_MIXER_DEPENDENCIES += fluidsynth\nelse\nSDL2_MIXER_CONF_OPTS += --disable-music-midi-fluidsynth\nendif\n\nifeq ($(BR2_PACKAGE_LIBMODPLUG),y)\nSDL2_MIXER_CONF_OPTS += --enable-music-mod-modplug\nSDL2_MIXER_DEPENDENCIES += libmodplug\nelse\nSDL2_MIXER_CONF_OPTS += --disable-music-mod-modplug\nendif\n\nifeq ($(BR2_PACKAGE_OPUSFILE),y)\nSDL2_MIXER_CONF_OPTS += --enable-music-opus\nSDL2_MIXER_DEPENDENCIES += opusfile\nelse\nSDL2_MIXER_CONF_OPTS += --disable-music-opus\nendif\n\nifeq ($(BR2_PACKAGE_TREMOR),y)\nSDL2_MIXER_CONF_OPTS += --enable-music-ogg-tremor\nSDL2_MIXER_DEPENDENCIES += tremor\nelse\nSDL2_MIXER_CONF_OPTS += --disable-music-ogg-tremor\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sdl2_net/Config.in",
    "content": "config BR2_PACKAGE_SDL2_NET\n\tbool \"sdl2_net\"\n\tdepends on BR2_PACKAGE_SDL2\n\thelp\n\t  This is a small sample cross-platform networking library,\n\t  with a sample chat client and server application. The chat\n\t  client uses the GUIlib GUI framework library.\n\n\t  http://www.libsdl.org/projects/SDL_net/\n"
  },
  {
    "path": "package/sdl2_net/sdl2_net.hash",
    "content": "# Locally calculated\nsha256  15ce8a7e5a23dafe8177c8df6e6c79b6749a03fff1e8196742d3571657609d21  SDL2_net-2.0.1.tar.gz\nsha256  f09845a238245402a8b8388db6634d8a5b2c3e1dc098f16f9d8c74a276ef4594  COPYING.txt\n"
  },
  {
    "path": "package/sdl2_net/sdl2_net.mk",
    "content": "################################################################################\n#\n# sdl2_net\n#\n################################################################################\n\nSDL2_NET_VERSION = 2.0.1\nSDL2_NET_SOURCE = SDL2_net-$(SDL2_NET_VERSION).tar.gz\nSDL2_NET_SITE = http://www.libsdl.org/projects/SDL_net/release\nSDL2_NET_LICENSE = Zlib\nSDL2_NET_LICENSE_FILES = COPYING.txt\nSDL2_NET_INSTALL_STAGING = YES\nSDL2_NET_DEPENDENCIES = sdl2 host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sdl2_ttf/Config.in",
    "content": "config BR2_PACKAGE_SDL2_TTF\n\tbool \"sdl2_ttf\"\n\tdepends on BR2_PACKAGE_SDL2\n\tselect BR2_PACKAGE_FREETYPE\n\thelp\n\t  SDL2_ttf is a sample TrueType font library. It allows you to\n\t  use TrueType fonts in your SDL2 applications.\n\n\t  http://www.libsdl.org/projects/SDL_ttf/\n"
  },
  {
    "path": "package/sdl2_ttf/sdl2_ttf.hash",
    "content": "# Locally calculated\nsha256  a9eceb1ad88c1f1545cd7bd28e7cbc0b2c14191d40238f531a15b01b1b22cd33  SDL2_ttf-2.0.15.tar.gz\nsha256  f6370809c9f644760920d9945c5be07aed17664975f2e4741013d4d9a2ec696f  COPYING.txt\n"
  },
  {
    "path": "package/sdl2_ttf/sdl2_ttf.mk",
    "content": "################################################################################\n#\n# sdl2_ttf\n#\n################################################################################\n\nSDL2_TTF_VERSION = 2.0.15\nSDL2_TTF_SOURCE = SDL2_ttf-$(SDL2_TTF_VERSION).tar.gz\nSDL2_TTF_SITE = http://www.libsdl.org/projects/SDL_ttf/release\nSDL2_TTF_LICENSE = Zlib\nSDL2_TTF_LICENSE_FILES = COPYING.txt\nSDL2_TTF_INSTALL_STAGING = YES\nSDL2_TTF_DEPENDENCIES = sdl2 freetype host-pkgconf\n\nSDL2_TTF_CONF_ENV = \\\n\tFREETYPE_CONFIG=$(STAGING_DIR)/usr/bin/freetype-config\n\n# x-includes and x-libraries must be set for cross-compiling\n# By default x_includes and x_libraries contains unsafe paths.\n# (/usr/include and /usr/lib)\nifeq ($(BR2_PACKAGE_SDL2_X11),y)\nSDL2_TTF_CONF_OPTS += \\\n\t--with-x \\\n\t--x-includes=$(STAGING_DIR)/usr/include \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib\nelse\nSDL2_TTF_CONF_OPTS += \\\n\t--without-x\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sdl_gfx/Config.in",
    "content": "config BR2_PACKAGE_SDL_GFX\n\tbool \"SDL_gfx\"\n\tdepends on BR2_PACKAGE_SDL\n\thelp\n\t  The SDL_gfx library is an extension to the SDL library which\n\t  provides basic antialiased drawing routines such as lines,\n\t  circles or polygons, an interpolating rotozoomer for SDL\n\t  surfaces, framerate control and MMX image filters.\n\n\t  http://cms.ferzkopp.net/index.php/software/13-sdl-gfx\n"
  },
  {
    "path": "package/sdl_gfx/sdl_gfx.hash",
    "content": "# From http://sourceforge.net/projects/sdlgfx/files/\nmd5\tfcc3c4f2d1b4943409bf7e67dd65d03a\tSDL_gfx-2.0.23.tar.gz\nsha1\taae60e7fed539f3f8a0a0bd6da3bbcf625642596\tSDL_gfx-2.0.23.tar.gz\n# Locally computed\nsha256  4f5df842266c59b2d7e6ef35b53d7f37b13795d93baf3ed211f502c216f7bc89  COPYING\nsha256  5f3bc98e0bd2de83279bd62868d4bc0c2b4f811ab828b036d36a4a6d1cd5672d  LICENSE\n"
  },
  {
    "path": "package/sdl_gfx/sdl_gfx.mk",
    "content": "################################################################################\n#\n# sdl_gfx\n#\n################################################################################\n\nSDL_GFX_VERSION_MAJOR = 2.0\nSDL_GFX_VERSION = $(SDL_GFX_VERSION_MAJOR).23\nSDL_GFX_SOURCE = SDL_gfx-$(SDL_GFX_VERSION).tar.gz\nSDL_GFX_SITE = http://www.ferzkopp.net/Software/SDL_gfx-$(SDL_GFX_VERSION_MAJOR)\nSDL_GFX_LICENSE = Zlib\nSDL_GFX_LICENSE_FILES = COPYING LICENSE\nSDL_GFX_INSTALL_STAGING = YES\nSDL_GFX_DEPENDENCIES = sdl\nSDL_GFX_CONF_OPTS = \\\n\t--with-sdl-prefix=$(STAGING_DIR)/usr \\\n\t--disable-sdltest \\\n\t--enable-static\n\n# Even though x86_64 processors support MMX, the MMX-specific assembly\n# code in sdl_gfx is IA32 specific, and does not build for x86_64.\nifeq ($(BR2_i386)$(BR2_X86_CPU_HAS_MMX),yy)\nSDL_GFX_CONF_OPTS += --enable-mmx\nelse\nSDL_GFX_CONF_OPTS += --disable-mmx\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sdl_image/Config.in",
    "content": "menuconfig BR2_PACKAGE_SDL_IMAGE\n\tbool \"SDL_image\"\n\tdepends on BR2_PACKAGE_SDL\n\thelp\n\t  SDL_image is an image file loading library. It loads images\n\t  as SDL surfaces, and supports the following formats:\n\t  BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, XCF, XPM, XV.\n\n\t  http://www.libsdl.org/projects/SDL_image/\n\nif BR2_PACKAGE_SDL_IMAGE\n\nconfig BR2_PACKAGE_SDL_IMAGE_BMP\n\tbool \"BMP support\"\n\tdefault y\n\nconfig BR2_PACKAGE_SDL_IMAGE_GIF\n\tbool \"GIF support\"\n\nconfig BR2_PACKAGE_SDL_IMAGE_JPEG\n\tbool \"JPEG support\"\n\tselect BR2_PACKAGE_JPEG\n\nconfig BR2_PACKAGE_SDL_IMAGE_LBM\n\tbool \"LBM support\"\n\nconfig BR2_PACKAGE_SDL_IMAGE_PCX\n\tbool \"PCX support\"\n\nconfig BR2_PACKAGE_SDL_IMAGE_PNG\n\tbool \"PNG support\"\n\tselect BR2_PACKAGE_LIBPNG\n\nconfig BR2_PACKAGE_SDL_IMAGE_PNM\n\tbool \"PNM support\"\n\nconfig BR2_PACKAGE_SDL_IMAGE_TARGA\n\tbool \"TARGA support\"\n\nconfig BR2_PACKAGE_SDL_IMAGE_TIFF\n\tbool \"TIFF support\"\n\tselect BR2_PACKAGE_TIFF\n\nconfig BR2_PACKAGE_SDL_IMAGE_WEBP\n\tbool \"WEBP support\"\n\tselect BR2_PACKAGE_WEBP\n\nconfig BR2_PACKAGE_SDL_IMAGE_XCF\n\tbool \"XCF support\"\n\nconfig BR2_PACKAGE_SDL_IMAGE_XPM\n\tbool \"XPM support\"\n\nconfig BR2_PACKAGE_SDL_IMAGE_XV\n\tbool \"XV support\"\n\nendif\n"
  },
  {
    "path": "package/sdl_image/sdl_image.hash",
    "content": "# Locally calculated\nsha256  abaf55f6c3bbd7c7271b523767f360317f1fbb2a79e74c38c0523a123970ac89  sdl_image-5d792dde2f764daf15dc48521774a3354330db69.tar.gz\nsha256  653649692218d56e5807bdc5b72f51aa6067bc44d30b757e18c03b32bcaf98da  COPYING\n"
  },
  {
    "path": "package/sdl_image/sdl_image.mk",
    "content": "################################################################################\n#\n# sdl_image\n#\n################################################################################\n\n# The latest officially released version of SDL_image is 1.2.12, released in 2012.\n# Since then, there have been many bugfixes, including security fixes.\n#\n# This commit points to the SDL-1.2 branch from 14 Mar 2021.\nSDL_IMAGE_VERSION = 5d792dde2f764daf15dc48521774a3354330db69\nSDL_IMAGE_SITE = $(call github,libsdl-org,SDL_image,$(SDL_IMAGE_VERSION))\nSDL_IMAGE_INSTALL_STAGING = YES\nSDL_IMAGE_LICENSE = Zlib\nSDL_IMAGE_LICENSE_FILES = COPYING\nSDL_IMAGE_CPE_ID_VENDOR = libsdl\n\nSDL_IMAGE_CONF_OPTS = \\\n\t--with-sdl-prefix=$(STAGING_DIR)/usr \\\n\t--with-sdl-exec-prefix=$(STAGING_DIR)/usr \\\n\t--disable-sdltest \\\n\t--disable-static \\\n\t--disable-jpg-shared \\\n\t--disable-png-shared \\\n\t--disable-tif-shared \\\n\t--disable-webp-shared \\\n\t--enable-bmp=$(if $(BR2_PACKAGE_SDL_IMAGE_BMP),yes,no) \\\n\t--enable-gif=$(if $(BR2_PACKAGE_SDL_IMAGE_GIF),yes,no) \\\n\t--enable-jpg=$(if $(BR2_PACKAGE_SDL_IMAGE_JPEG),yes,no) \\\n\t--enable-lbm=$(if $(BR2_PACKAGE_SDL_IMAGE_LBM),yes,no) \\\n\t--enable-pcx=$(if $(BR2_PACKAGE_SDL_IMAGE_PCX),yes,no) \\\n\t--enable-png=$(if $(BR2_PACKAGE_SDL_IMAGE_PNG),yes,no) \\\n\t--enable-pnm=$(if $(BR2_PACKAGE_SDL_IMAGE_PNM),yes,no) \\\n\t--enable-tga=$(if $(BR2_PACKAGE_SDL_IMAGE_TARGA),yes,no) \\\n\t--enable-tif=$(if $(BR2_PACKAGE_SDL_IMAGE_TIFF),yes,no) \\\n\t--enable-webp=$(if $(BR2_PACKAGE_SDL_IMAGE_WEBP),yes,no) \\\n\t--enable-xcf=$(if $(BR2_PACKAGE_SDL_IMAGE_XCF),yes,no) \\\n\t--enable-xpm=$(if $(BR2_PACKAGE_SDL_IMAGE_XPM),yes,no) \\\n\t--enable-xv=$(if $(BR2_PACKAGE_SDL_IMAGE_XV),yes,no)\n\nSDL_IMAGE_DEPENDENCIES = sdl \\\n\t$(if $(BR2_PACKAGE_SDL_IMAGE_JPEG),jpeg) \\\n\t$(if $(BR2_PACKAGE_SDL_IMAGE_PNG),libpng) \\\n\t$(if $(BR2_PACKAGE_SDL_IMAGE_TIFF),tiff) \\\n\t$(if $(BR2_PACKAGE_SDL_IMAGE_WEBP),webp)\n\nHOST_SDL_IMAGE_CONF_OPTS = \\\n\t--with-sdl-prefix=$(HOST_DIR) \\\n\t--with-sdl-exec-prefix=$(HOST_DIR) \\\n\t--disable-sdltest \\\n\t--disable-static \\\n\t--disable-jpg-shared \\\n\t--disable-png-shared \\\n\t--disable-tif-shared \\\n\t--disable-webp-shared\n\nHOST_SDL_IMAGE_DEPENDENCIES = host-libjpeg host-libpng host-sdl\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/sdl_mixer/0001-Add-Libs.private-field-to-pkg-config-file.patch",
    "content": "From abf3a1b9c9cdacb574c2b9cdbf3f2a5e18c39ab9 Mon Sep 17 00:00:00 2001\nFrom: Rodrigo Rebello <rprebello@gmail.com>\nDate: Mon, 29 Feb 2016 22:53:49 -0300\nSubject: [PATCH 1/1] Add 'Libs.private' field to pkg-config file\n\nIn order to support static linking, SDL_mixer.pc should include a\n'Libs.private' field listing all the libraries that SDL_mixer requires.\n\nThis patch adds such a field and also modifies configure.ac so that\nEXTRA_LDFLAGS (which is now also used as the value of 'Libs.private')\nno longer includes SDL_LIBS. This is done so as to prevent libraries\nrequired by SDL from being listed twice when 'pkg-config --libs --static\nSDL_mixer' is run (they're already shown because of the 'Requires: sdl'\nline in SDL_mixer.pc). Makefile.in is also adjusted accordingly.\n\nUpstream status: submitted\nhttps://bugzilla.libsdl.org/show_bug.cgi?id=3278\n\nSigned-off-by: Rodrigo Rebello <rprebello@gmail.com>\n---\n Makefile.in     | 2 +-\n SDL_mixer.pc.in | 1 +\n configure.ac    | 1 -\n 3 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.in b/Makefile.in\nindex 027a99b..18015a2 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -61,7 +61,7 @@ $(objects):\n .PHONY: all install install-hdrs install-lib install-bin uninstall uninstall-hdrs uninstall-lib uninstall-bin clean distclean dist\n \n $(objects)/$(TARGET): $(OBJECTS) $(VERSION_OBJECTS)\n-\t$(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)\n+\t$(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(SDL_LIBS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)\n \n $(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET)\n \t$(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(LDFLAGS) $(objects)/$(TARGET)\ndiff --git a/SDL_mixer.pc.in b/SDL_mixer.pc.in\nindex 1c4965d..d793521 100644\n--- a/SDL_mixer.pc.in\n+++ b/SDL_mixer.pc.in\n@@ -8,5 +8,6 @@ Description: mixer library for Simple DirectMedia Layer\n Version: @VERSION@\n Requires: sdl >= @SDL_VERSION@\n Libs: -L${libdir} -lSDL_mixer\n+Libs.private: @EXTRA_LDFLAGS@\n Cflags: -I${includedir}/SDL\n \ndiff --git a/configure.ac b/configure.ac\nindex 01a3d83..3ad3b4f 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -200,7 +200,6 @@ AM_PATH_SDL($SDL_VERSION,\n             AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!])\n )\n EXTRA_CFLAGS=\"$EXTRA_CFLAGS $SDL_CFLAGS\"\n-EXTRA_LDFLAGS=\"$EXTRA_LDFLAGS $SDL_LIBS\"\n \n dnl Check for math library\n AC_CHECK_LIB(m, pow, [LIBM=\"-lm\"])\n-- \n2.27.0\n"
  },
  {
    "path": "package/sdl_mixer/0002-configure__set_macro_directory.patch",
    "content": "# HG changeset patch\n# User \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n# Date 1581183281 -3600\n#      Sat Feb 08 18:34:41 2020 +0100\n# Node ID 753a1f394620056c35790a571ff5f7c248445943\n# Parent  eb5f08bf9994bf5164ca68015f2e030c2c9dddcd\nconfigure: set macro directory\n\nSetting the macro directory in configure.in, rather than specifying it\non the command line, ensures that it is properly searched in the correct\norder, and that autoreconf properly updates our macros with the newer\nsystem ones, if any.\n\nFixes:\n    http://autobuild.buildroot.org/results/63a/63ae0bddb3c4436efe967c318e299047f496c5a5/build-end.log\n\n    libtool: Version mismatch error.  This is libtool 2.4.6, but the\n    libtool: definition of this LT_INIT comes from libtool 2.2.6.\n    libtool: You should recreate aclocal.m4 with macros from libtool 2.4.6\n    libtool: and run autoconf again.\n\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n\ndiff --git a/configure.ac b/configure.ac\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1,6 +1,7 @@\n dnl Process this file with autoconf to produce a configure script.\n AC_INIT(README)\n AC_CONFIG_AUX_DIR(build-scripts)\n+AC_CONFIG_MACRO_DIR([acinclude])\n \n dnl Set various version strings - taken gratefully from the GTk sources\n \n"
  },
  {
    "path": "package/sdl_mixer/0003-configure.ac-fix-static-linking-with-tremor.patch",
    "content": "From 02e247a0b820753977315786087b969f3b2c53da Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 10 Apr 2021 11:50:17 +0200\nSubject: [PATCH] configure.ac: fix linking with tremor\n\nbackported from: https://github.com/libsdl-org/SDL_mixer/pull/312\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex c8dbcdb..93d5db0 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -453,7 +453,7 @@ if test x$enable_music_ogg = xyes; then\n                 echo \"-- dynamic libvorbisidec -> $ogg_lib\"\n                 EXTRA_CFLAGS=\"$EXTRA_CFLAGS -DOGG_DYNAMIC=\\\\\\\"$ogg_lib\\\\\\\"\"\n             else\n-                EXTRA_LDFLAGS=\"$EXTRA_LDFLAGS -lvorbisidec -lvorbis\"\n+                EXTRA_LDFLAGS=\"$EXTRA_LDFLAGS -lvorbisidec\"\n             fi\n         else\n             AC_MSG_WARN([*** Unable to find Ogg Vorbis Tremor library (http://www.xiph.org/)])\n"
  },
  {
    "path": "package/sdl_mixer/Config.in",
    "content": "config BR2_PACKAGE_SDL_MIXER\n\tbool \"SDL_mixer\"\n\tdepends on BR2_PACKAGE_SDL\n\thelp\n\t  SDL_mixer is a sample multi-channel audio mixer library.\n\t  It supports any number of simultaneously playing channels of\n\t  16 bit stereo audio, plus a single channel of music, mixed\n\t  by the popular MikMod MOD, Timidity MIDI, Ogg Vorbis, and\n\t  SMPEG MP3 libraries.\n\n\t  http://www.libsdl.org/projects/SDL_mixer/\n\nif BR2_PACKAGE_SDL_MIXER\n\nconfig BR2_PACKAGE_SDL_MIXER_MIDI_TIMIDITY\n\tbool \"MIDI support with built-in Timidity synth\"\n\thelp\n\t  Support MIDI audio using the built-in synth based on Timidity.\n\t  You will need MIDI instruments installed in the filesystem.\n\nendif\n"
  },
  {
    "path": "package/sdl_mixer/sdl_mixer.hash",
    "content": "# Locally calculated\nsha256  b3c0f36500b23a6f5832d472f3e07b74f1d3f6bd00bf6700bc5e99babc9ba2ab  sdl_mixer-d1725fcb7c4e987aeb7ecdc94cb8b6375b702170.tar.gz\nsha256  bc4c3bc32b311044d81c32b5e5402a6bc971a3b235850bb63445ec14bb6fe59e  COPYING\n"
  },
  {
    "path": "package/sdl_mixer/sdl_mixer.mk",
    "content": "################################################################################\n#\n# sdl_mixer\n#\n################################################################################\n\n# The latest officially released version of SDL_mixer is 1.2.12, released in 2012.\n# Since then, there have been many bugfixes on master.\n#\n# This commit points to the SDL-1.2 branch from 15 Mar 2021.\nSDL_MIXER_VERSION = d1725fcb7c4e987aeb7ecdc94cb8b6375b702170\nSDL_MIXER_SITE = $(call github,libsdl-org,SDL_mixer,$(SDL_MIXER_VERSION))\nSDL_MIXER_LICENSE = Zlib\nSDL_MIXER_LICENSE_FILES = COPYING\n\n# Package does not build in parallel due to improper make rules\nSDL_MIXER_MAKE = $(MAKE1)\n\nSDL_MIXER_INSTALL_STAGING = YES\nSDL_MIXER_DEPENDENCIES = sdl\n\n# We're patching configure.in, so we need to autoreconf\nSDL_MIXER_AUTORECONF = YES\n\nSDL_MIXER_CONF_OPTS = \\\n\t--with-sdl-prefix=$(STAGING_DIR)/usr \\\n\t--disable-music-mod \\\n\t--disable-music-mp3 \\\n\t--disable-music-flac # configure script fails when cross compiling\n\nifeq ($(BR2_PACKAGE_FLUIDSYNTH),y)\nSDL_MIXER_DEPENDENCIES += fluidsynth\nSDL_MIXER_CONF_OPTS += \\\n\t--enable-music-midi \\\n\t--enable-music-fluidsynth-midi\nSDL_MIXER_HAS_MIDI = YES\nendif\n\nifeq ($(BR2_PACKAGE_SDL_MIXER_MIDI_TIMIDITY),y)\nSDL_MIXER_CONF_OPTS += \\\n\t--enable-music-midi \\\n\t--enable-music-timidity-midi\nSDL_MIXER_HAS_MIDI = YES\nendif\n\nifneq ($(SDL_MIXER_HAS_MIDI),YES)\nSDL_MIXER_CONF_OPTS += --disable-music-midi\nendif\n\nifeq ($(BR2_PACKAGE_LIBMAD),y)\nSDL_MIXER_CONF_OPTS += --enable-music-mp3-mad-gpl\nSDL_MIXER_DEPENDENCIES += libmad\nelse\nSDL_MIXER_CONF_OPTS += --disable-music-mp3-mad-gpl\nendif\n\nifeq ($(BR2_PACKAGE_LIBMODPLUG),y)\nSDL_MIXER_CONF_OPTS += --enable-music-mod-modplug\nSDL_MIXER_DEPENDENCIES += host-pkgconf libmodplug\nelse\nSDL_MIXER_CONF_OPTS += --disable-music-mod-modplug\nendif\n\nifeq ($(BR2_PACKAGE_TREMOR),y)\nSDL_MIXER_CONF_OPTS += --enable-music-ogg-tremor\nSDL_MIXER_DEPENDENCIES += tremor\nelse ifeq ($(BR2_PACKAGE_LIBVORBIS),y)\nSDL_MIXER_CONF_OPTS += --enable-music-ogg\nSDL_MIXER_DEPENDENCIES += libvorbis\nelse\nSDL_MIXER_CONF_OPTS += --disable-music-ogg\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sdl_net/Config.in",
    "content": "config BR2_PACKAGE_SDL_NET\n\tbool \"SDL_net\"\n\tdepends on BR2_PACKAGE_SDL\n\thelp\n\t  SDL_net is a small, low-level, cross-platform network\n\t  library, that can be used with the Simple DirectMedia Layer\n\t  library (SDL).\n\n\t  http://www.libsdl.org/projects/SDL_net/\n"
  },
  {
    "path": "package/sdl_net/sdl_net.hash",
    "content": "# Locally calculated\nsha256  7549dbc91813c37986300e7f34e63a068b42fd91abb41cabcaca63b4c7404ea5  SDL_net-620b0ba7dd84a0fdbd4cc8ef1b2be1cc10f90ae3.tar.gz\nsha256  e542f822a6cd82deccf82cf0f50192917b0158d725a6bc6348ab1ccdd890ecbe  COPYING\n"
  },
  {
    "path": "package/sdl_net/sdl_net.mk",
    "content": "################################################################################\n#\n# sdl_net\n#\n################################################################################\n\n# The latest officially released version of SDL_image is 1.2.8, released in 2012.\n# Since then, there have been several bugfixes.\n#\n# This commit points to the SDL-1.2 branch from 18 Feb 2021.\nSDL_NET_VERSION = 620b0ba7dd84a0fdbd4cc8ef1b2be1cc10f90ae3\nSDL_NET_SITE = $(call github,libsdl-org,SDL_net,$(SDL_NET_VERSION))\nSDL_NET_SOURCE = SDL_net-$(SDL_NET_VERSION).tar.gz\nSDL_NET_LICENSE = Zlib\nSDL_NET_LICENSE_FILES = COPYING\n\nSDL_NET_CONF_OPTS = \\\n\t--with-sdl-prefix=$(STAGING_DIR)/usr \\\n\t--with-sdl-exec-prefix=$(STAGING_DIR)/usr\n\nSDL_NET_INSTALL_STAGING = YES\n\nSDL_NET_DEPENDENCIES = sdl\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sdl_sound/0001-fix-constness.patch",
    "content": "decoders/speex: fix constness of speex mode\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN sdl_sound-1.0.3.orig/decoders/speex.c sdl_sound-1.0.3/decoders/speex.c\n--- sdl_sound-1.0.3.orig/decoders/speex.c\t2014-11-17 19:40:09.543553556 +0100\n+++ sdl_sound-1.0.3/decoders/speex.c\t2014-11-17 19:40:37.119864580 +0100\n@@ -124,7 +124,7 @@\n \n static int process_header(speex_t *speex, Sound_Sample *sample)\n {\n-    SpeexMode *mode;\n+    const SpeexMode * mode;\n     SpeexHeader *hptr;\n     SpeexHeader header;\n     int enh_enabled = SPEEX_USE_PERCEPTUAL_ENHANCER;\n"
  },
  {
    "path": "package/sdl_sound/0002-remove-werror.patch",
    "content": "Do not add -Werror when --enable-debug is used\n\nUsing -Werror causes some problems due to warnings in the SDL_sound\ncode, so let's disable it.\n\nWe patch configure directly, because:\n\n 1/ configure.in doesn't autoreconf properly out of the box.\n\n 2/ the length of the configure or configure.in patch would be exactly\n    the same (one line), or maybe more for the configure.in patch if\n    we want the package to autoreconf properly\n\n 3/ the patch will never go upstream, because upstream is dead.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/configure\n===================================================================\n--- a/configure\n+++ b/configure\n@@ -19561,7 +19561,6 @@\n   else\n     CFLAGS=\"-O0\"\n   fi\n-  CFLAGS=\"$CFLAGS -Werror\"\n \n cat >>confdefs.h <<\\_ACEOF\n #define DEBUG 1\n"
  },
  {
    "path": "package/sdl_sound/0003-renamed-physfs-export.patch",
    "content": "This patch is taken from the Arch Linux User Repository, see:\nhttps://aur.archlinux.org/packages/sdl_sound-patched-hg/\n\nSigned-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>\n\ndiff -ru SDL_sound.orig/playsound/physfsrwops.h SDL_sound/playsound/physfsrwops.h\n--- SDL_sound.orig/playsound/physfsrwops.h\t2014-01-11 06:28:35.494936000 +0100\n+++ SDL_sound/playsound/physfsrwops.h\t2014-01-11 06:31:38.315675483 +0100\n@@ -29,6 +29,11 @@\n extern \"C\" {\n #endif\n \n+/* renamed in physfs dev, add alias */\n+#ifdef PHYSFS_DECL\n+#define __EXPORT__ PHYSFS_DECL\n+#endif\n+\n /**\n  * Open a platform-independent filename for reading, and make it accessible\n  *  via an SDL_RWops structure. The file will be closed in PhysicsFS when the\n@@ -77,6 +82,11 @@\n  */\n __EXPORT__ SDL_RWops *PHYSFSRWOPS_makeRWops(PHYSFS_file *handle);\n \n+/* renamed in physfs dev, remove alias */\n+#ifdef PHYSFS_DECL\n+#undef __EXPORT__\n+#endif\n+\n #ifdef __cplusplus\n }\n #endif\n"
  },
  {
    "path": "package/sdl_sound/Config.in",
    "content": "config BR2_PACKAGE_SDL_SOUND\n\tbool \"SDL_sound\"\n\tdepends on BR2_PACKAGE_SDL\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  SDL_sound is a library that handles the decoding of several\n\t  popular sound file formats, such as .WAV and .MP3.\n\t  It is meant to make the programmer's sound playback tasks\n\t  simpler. The programmer gives SDL_sound a filename, or feeds\n\t  it data directly from one of many sources, and then reads the\n\t  decoded waveform data back at her leisure.\n\n\t  http://icculus.org/SDL_sound/\n\nif BR2_PACKAGE_SDL_SOUND\n\nconfig BR2_PACKAGE_SDL_SOUND_PLAYSOUND\n\tbool \"install playsound tool\"\n\thelp\n\t  Enable this option to install the playsound/playsound_simple\n\t  tools to target.\n\nendif\n"
  },
  {
    "path": "package/sdl_sound/sdl_sound.hash",
    "content": "# Locally calculated\nsha256  3999fd0bbb485289a52be14b2f68b571cb84e380cc43387eadf778f64c79e6df  SDL_sound-1.0.3.tar.gz\nsha256  2a781dd2f8c5435c59cfa3b79dfea1c1d7df676ed318ecc802139f76ac345d07  COPYING\n"
  },
  {
    "path": "package/sdl_sound/sdl_sound.mk",
    "content": "################################################################################\n#\n# sdl_sound\n#\n################################################################################\n\nSDL_SOUND_VERSION = 1.0.3\nSDL_SOUND_SOURCE = SDL_sound-$(SDL_SOUND_VERSION).tar.gz\nSDL_SOUND_SITE = http://icculus.org/SDL_sound/downloads\nSDL_SOUND_LICENSE = LGPL-2.1+\nSDL_SOUND_LICENSE_FILES = COPYING\nSDL_SOUND_INSTALL_STAGING = YES\nSDL_SOUND_DEPENDENCIES = sdl\nSDL_SOUND_CONF_OPTS = \\\n\t--with-sdl-prefix=$(STAGING_DIR)/usr \\\n\t--with-sdl-exec-prefix=$(STAGING_DIR)/usr \\\n\t--disable-sdltest \\\n\t--enable-static\n\nifneq ($(BR2_ENABLE_LOCALE),y)\nSDL_SOUND_DEPENDENCIES += libiconv\nendif\n\n# optional dependencies\nifeq ($(BR2_PACKAGE_FLAC)$(BR2_PACKAGE_LIBOGG),yy)\nSDL_SOUND_CONF_OPTS += --enable-flac\nSDL_SOUND_DEPENDENCIES += flac libogg\nelse\nSDL_SOUND_CONF_OPTS += --disable-flac\nendif\n\nifeq ($(BR2_PACKAGE_LIBMODPLUG),y)\nSDL_SOUND_CONF_OPTS += --enable-modplug\nSDL_SOUND_DEPENDENCIES += libmodplug\nelse\nSDL_SOUND_CONF_OPTS += --disable-modplug\nendif\n\nifeq ($(BR2_PACKAGE_LIBVORBIS),y)\nSDL_SOUND_CONF_OPTS += --enable-ogg\nSDL_SOUND_DEPENDENCIES += libvorbis\nelse\nSDL_SOUND_CONF_OPTS += --disable-ogg\nendif\n\nifeq ($(BR2_PACKAGE_SPEEX),y)\nSDL_SOUND_CONF_OPTS += --enable-speex\nSDL_SOUND_DEPENDENCIES += speex\nelse\nSDL_SOUND_CONF_OPTS += --disable-speex\nendif\n\nifeq ($(BR2_PACKAGE_PHYSFS),y)\nSDL_SOUND_CONF_OPTS += --enable-physfs\nSDL_SOUND_DEPENDENCIES += physfs\nelse\nSDL_SOUND_CONF_OPTS += --disable-physfs\nendif\n\nifeq ($(BR2_X86_CPU_HAS_MMX),y)\nSDL_SOUND_CONF_OPTS += --enable-mmx\nelse\nSDL_SOUND_CONF_OPTS += --disable-mmx\nendif\n\ndefine SDL_SOUND_REMOVE_PLAYSOUND\n\trm $(addprefix $(TARGET_DIR)/usr/bin/,playsound playsound_simple)\nendef\n\nifneq ($(BR2_PACKAGE_SDL_SOUND_PLAYSOUND),y)\nSDL_SOUND_POST_INSTALL_TARGET_HOOKS += SDL_SOUND_REMOVE_PLAYSOUND\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sdl_ttf/Config.in",
    "content": "config BR2_PACKAGE_SDL_TTF\n\tbool \"SDL_TTF\"\n\tdepends on BR2_PACKAGE_SDL\n\tselect BR2_PACKAGE_FREETYPE\n\thelp\n\t  SDL_ttf is a sample TrueType font library. It allows you to\n\t  use TrueType fonts in your SDL applications.\n\n\t  http://www.libsdl.org/projects/SDL_ttf/\n"
  },
  {
    "path": "package/sdl_ttf/sdl_ttf.hash",
    "content": "# Locally calculated\nsha256  c24e3b48f5ffa5afb3256d23700506fad72117ac2834147c2e46ee94c3cb12b5  sdl_ttf-70b2940cc75e92aab02a67d2f827caf2836a2c74.tar.gz\nsha256  b609721d3d4ac67facaf86f068c8b311b6c5f6cef89b6d84268aa38b7867ab7b  COPYING\n"
  },
  {
    "path": "package/sdl_ttf/sdl_ttf.mk",
    "content": "################################################################################\n#\n# sdl_ttf\n#\n################################################################################\n\n# There is unlikely to be a new SDL_ttf release for the foreseeable future:\n# https://bugzilla.libsdl.org/show_bug.cgi?id=5344#c1\nSDL_TTF_VERSION = 70b2940cc75e92aab02a67d2f827caf2836a2c74\nSDL_TTF_SITE = $(call github,libsdl-org,SDL_ttf,$(SDL_TTF_VERSION))\nSDL_TTF_LICENSE = Zlib\nSDL_TTF_LICENSE_FILES = COPYING\n\nSDL_TTF_INSTALL_STAGING = YES\nSDL_TTF_DEPENDENCIES = sdl freetype\nSDL_TTF_CONF_OPTS = \\\n\t--without-x \\\n\t--with-freetype-prefix=$(STAGING_DIR)/usr \\\n\t--with-sdl-prefix=$(STAGING_DIR)/usr\n\nSDL_TTF_MAKE_OPTS = \\\n\tINCLUDES=\"-I$(STAGING_DIR)/usr/include/SDL\" \\\n\tLDFLAGS=\"-L$(STAGING_DIR)/usr/lib\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sdparm/Config.in",
    "content": "config BR2_PACKAGE_SDPARM\n\tbool \"sdparm\"\n\thelp\n\t  Utility to accesses SCSI device parameters.\n\n\t  http://sg.danny.cz/sg/sdparm.html\n"
  },
  {
    "path": "package/sdparm/sdparm.hash",
    "content": "# Locally calculated\nsha256  7dc9e148cef22744e00809dad21b59ac544e3615001bc1b2399978f73e1d58ca  sdparm-1.10.tar.xz\nsha256  4f98444e14adb18a94a65c3ded5f0dad42d382c6a2288b593a2d5bd5ecc4f46d  COPYING\n"
  },
  {
    "path": "package/sdparm/sdparm.mk",
    "content": "################################################################################\n#\n# sdparm\n#\n################################################################################\n\nSDPARM_VERSION = 1.10\nSDPARM_SOURCE = sdparm-$(SDPARM_VERSION).tar.xz\nSDPARM_SITE = http://sg.danny.cz/sg/p\nSDPARM_LICENSE = BSD-3-Clause\nSDPARM_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_SG3_UTILS),y)\nSDPARM_DEPENDENCIES += sg3_utils\nelse\nSDPARM_CONF_OPTS += --disable-libsgutils\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/seatd/Config.in",
    "content": "menuconfig BR2_PACKAGE_SEATD\n\tbool \"seatd\"\n\tselect BR2_PACKAGE_SEATD_BUILTIN \\\n\t\tif !BR2_PACKAGE_SYSTEMD_LOGIND && !BR2_PACKAGE_SEATD_DAEMON\n\thelp\n\t  Seat management daemon and support library.\n\n\t  https://git.sr.ht/~kennylevinsen/seatd\n\nif BR2_PACKAGE_SEATD\n\nconfig BR2_PACKAGE_SEATD_BUILTIN\n\tbool \"builtin backend\"\n\thelp\n\t  Builtin in-process seatd implementation inside libseat.\n\nconfig BR2_PACKAGE_SEATD_DAEMON\n\tbool \"seatd daemon\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Build the seatd daemon and support for it inside libseat.\n\nendif\n"
  },
  {
    "path": "package/seatd/S70seatd",
    "content": "#! /bin/sh\n\nDAEMON=\"seatd\"\nDAEMON_EXE=\"/usr/bin/${DAEMON}\"\nPIDFILE=\"/run/${DAEMON}.pid\"\n\nstart() {\n\tprintf 'Starting %s: ' \"${DAEMON}\"\n\tstart-stop-daemon -S -x \"${DAEMON_EXE}\" -p \"${PIDFILE}\" -m -b -- -g video\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo OK\n\telse\n\t\techo FAIL\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"${DAEMON}\"\n\tstart-stop-daemon -K -x \"${DAEMON_EXE}\" -p \"${PIDFILE}\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo OK\n\telse\n\t\techo FAIL\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"${1}\" in\n\tstart|stop|restart)\n\t\t\"${1}\";;\n\treload)\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\n\t\t;;\nesac\n"
  },
  {
    "path": "package/seatd/seatd.hash",
    "content": "# Calculated locally\nsha256  5226850c163b485aebe71da0d3f4941761637e146a5c9393cb40c52617ad84a8  0.6.3.tar.gz\n\n# License files\nsha256  282a494803d666616bd726e0279636b5f6a31387ae19a707459074050f2600d3  LICENSE\n"
  },
  {
    "path": "package/seatd/seatd.mk",
    "content": "################################################################################\n#\n# seatd\n#\n################################################################################\n\nSEATD_VERSION = 0.6.3\nSEATD_SOURCE = $(SEATD_VERSION).tar.gz\nSEATD_SITE = https://git.sr.ht/~kennylevinsen/seatd/archive\nSEATD_LICENSE = MIT\nSEATD_LICENSE_FILES = LICENSE\nSEATD_INSTALL_STAGING = YES\n\nSEATD_CONF_OPTS += \\\n\t-Dman-pages=disabled \\\n\t-Dexamples=disabled \\\n\t-Dwerror=false\n\nifeq ($(BR2_PACKAGE_SYSTEMD_LOGIND),y)\nSEATD_CONF_OPTS += -Dlibseat-logind=enabled\nSEATD_DEPENDENCIES += systemd\nelse\nSEATD_CONF_OPTS += -Dlibseat-logind=disabled\nendif\n\nifeq ($(BR2_PACKAGE_SEATD_BUILTIN),y)\nSEATD_CONF_OPTS += -Dlibseat-builtin=enabled\nelse\nSEATD_CONF_OPTS += -Dlibseat-builtin=disabled\nendif\n\nifeq ($(BR2_PACKAGE_SEATD_DAEMON),y)\nSEATD_CONF_OPTS += -Dlibseat-seatd=enabled -Dserver=enabled\n\ndefine SEATD_USERS\n\t- - video -1 - - - - -\nendef\n\ndefine SEATD_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D $(SEATD_PKGDIR)/S70seatd \\\n\t\t$(TARGET_DIR)/etc/init.d/S70seatd\nendef\n\ndefine SEATD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -m 0644 -D $(@D)/contrib/systemd/seatd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/seatd.service\nendef\n\nelse\nSEATD_CONF_OPTS += -Dlibseat-seatd=disabled -Dserver=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/sed/Config.in",
    "content": "config BR2_PACKAGE_SED\n\tbool \"sed\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  sed (stream editor) is a non-interactive command-line text\n\t  editor.\n\n\t  https://www.gnu.org/software/sed/\n\ncomment \"sed needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/sed/sed.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://ftp.gnu.org/gnu/sed/sed-4.8.tar.xz.sig\n# with the key 155D3FC500C834486D1EEA677FD9FCCB000BEEEE\nsha256  f79b0cfea71b37a8eeec8490db6c5f7ae7719c35587f21edb0617f370eeff633  sed-4.8.tar.xz\n# Locally calculated\nsha256  e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b  COPYING\n"
  },
  {
    "path": "package/sed/sed.mk",
    "content": "################################################################################\n#\n# sed\n#\n################################################################################\n\nSED_VERSION = 4.8\nSED_SOURCE = sed-$(SED_VERSION).tar.xz\nSED_SITE = $(BR2_GNU_MIRROR)/sed\nSED_LICENSE = GPL-3.0\nSED_LICENSE_FILES = COPYING\nSED_CPE_ID_VENDOR = gnu\n\nSED_CONF_OPTS = \\\n\t--bindir=/bin \\\n\t--libdir=/lib \\\n\t--libexecdir=/usr/lib \\\n\t--sysconfdir=/etc \\\n\t--datadir=/usr/share \\\n\t--mandir=/usr/share/man \\\n\t--infodir=/usr/share/info \\\n\t--include=$(STAGING_DIR)/usr/include\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sedutil/0001-Common-log.h-time-2-needs-time.h.patch",
    "content": "From a7a48e1cda997afbfcdd985c594c3ec0516b6279 Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <peter@korsgaard.com>\nDate: Tue, 25 Sep 2018 22:49:58 +0200\nSubject: [PATCH] Common/log.h: time(2) needs <time.h>\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nOtherwise the build fails with:\n\nIn file included from ./linux/os.h:28:0,\n                 from Common/DtaOptions.cpp:20:\n./Common/log.h: In function ‘std::__cxx11::string NowTime()’:\n./Common/log.h:349:12: error: ‘time’ was not declared in this scope\n     time(&t);\n\nUpstream-status: https://github.com/Drive-Trust-Alliance/sedutil/pull/250\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n Common/log.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/Common/log.h b/Common/log.h\nindex 8c08c40..2b718ad 100644\n--- a/Common/log.h\n+++ b/Common/log.h\n@@ -341,6 +341,7 @@ inline std::string NowTime() {\n \n #else\n \n+#include <time.h>\n #include <sys/time.h>\n \n inline std::string NowTime() {\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/sedutil/Config.in",
    "content": "config BR2_PACKAGE_SEDUTIL_ARCH_SUPPORTS\n\tbool\n\t# no big endian support\n\tdefault y if BR2_arcle || BR2_arm || BR2_aarch64 || BR2_csky \\\n\t       || BR2_i386 || BR2_microblazeel || BR2_mipsel \\\n\t       || BR2_mips64el || BR2_nios2 || BR2_powerpc64le \\\n\t       || BR2_sh4 || BR2_sh4a || BR2_x86_64 \\\n\t       || BR2_XTENSA_LITTLE_ENDIAN\n\nconfig BR2_PACKAGE_SEDUTIL\n\tbool \"sedutil\"\n\tdepends on BR2_PACKAGE_SEDUTIL_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # linux/nvme.h\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS # 4.4.1 headers\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  The Drive Trust Alliance Self Encrypting Drive Utility,\n\t  allowing configuration the SEDs that comply with the\n\t  TCG OPAL 2.00 standard.\n\n          https://github.com/Drive-Trust-Alliance/sedutil\n\ncomment \"sedutil needs a toolchain w/ C++, gcc >= 4.8, headers >= 3.12\"\n\tdepends on BR2_PACKAGE_SEDUTIL_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n"
  },
  {
    "path": "package/sedutil/sedutil.hash",
    "content": "# Locally calculated\nsha256 9259466b4f73af276153c5245834a56f48f8721ea7263611b5d5e8326bc43d9e  sedutil-1.15.1.tar.gz\nsha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  Common/LICENSE.txt\n"
  },
  {
    "path": "package/sedutil/sedutil.mk",
    "content": "################################################################################\n#\n# sedutil\n#\n################################################################################\n\nSEDUTIL_VERSION = 1.15.1\nSEDUTIL_SITE = $(call github,Drive-Trust-Alliance,sedutil,$(SEDUTIL_VERSION))\nSEDUTIL_LICENSE = GPL-3.0+\nSEDUTIL_LICENSE_FILES = Common/LICENSE.txt\n# Fetched from Github with no configure script\nSEDUTIL_AUTORECONF = YES\n\n# Calls git to figure out version info\ndefine SEDUTIL_SET_VERSION\n\techo '#define GIT_VERSION \"$(SEDUTIL_VERSION)\"' > $(@D)/linux/Version.h\nendef\nSEDUTIL_POST_CONFIGURE_HOOKS += SEDUTIL_SET_VERSION\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/selinux-python/Config.in",
    "content": "config BR2_PACKAGE_SELINUX_PYTHON\n\tbool \"selinux-python\"\n\tdepends on !BR2_PACKAGE_PYTHON\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_PYTHON3\n\thelp\n\t  A set of SELinux tools written in python that help with\n\t  managing a system with SELinux enabled. If no packages are\n\t  selected nothing will actually be built.\n\n\t  https://github.com/SELinuxProject/selinux/wiki\n\nif BR2_PACKAGE_SELINUX_PYTHON\n\nconfig BR2_PACKAGE_SELINUX_PYTHON_AUDIT2ALLOW\n\tbool \"audit2allow\"\n\tselect BR2_PACKAGE_CHECKPOLICY\n\tselect BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN\n\tselect BR2_PACKAGE_SEMODULE_UTILS\n\thelp\n\t  This module installs two programs:\n\n\t  audit2allow - Generate SELinux policy allow/dontaudit rules\n\t  from logs of denied operations.\n\n\t  audit2why - translates SELinux audit messages into a\n\t  description of why the access was denied (audit2allow -w)\n\nconfig BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN\n\tbool \"sepolgen\"\n\tselect BR2_PACKAGE_SEMODULE_UTILS\n\thelp\n\t  This package contains a Python module that allows you to\n\t  generate an initial SELinux policy module template.\n\nendif\n\ncomment \"selinux-python needs python3\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_PYTHON\n\ncomment \"selinux-python packages needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/selinux-python/selinux-python.hash",
    "content": "# https://github.com/SELinuxProject/selinux/wiki/Releases\nsha256 770855ea8120ef23007fdb9db94b1ed6e8cd77917b584ed8877bbee9c16e74fb selinux-python-3.2.tar.gz\n\n# Hash for license file\nsha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING\n"
  },
  {
    "path": "package/selinux-python/selinux-python.mk",
    "content": "################################################################################\n#\n# selinux-python\n#\n################################################################################\n\nSELINUX_PYTHON_VERSION = 3.2\nSELINUX_PYTHON_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(SELINUX_PYTHON_VERSION)\nSELINUX_PYTHON_LICENSE = GPL-2.0\nSELINUX_PYTHON_LICENSE_FILES = COPYING\nSELINUX_PYTHON_DEPENDENCIES = python3\n\nSELINUX_PYTHON_MAKE_OPTS += \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tARCH=\"$(BR2_ARCH)\" \\\n\tLIBDIR=\"$(STAGING_DIR)/usr/lib\" \\\n\tPYTHONLIBDIR=\"usr/lib/python$(PYTHON3_VERSION_MAJOR)\"\n\nifeq ($(BR2_PACKAGE_SELINUX_PYTHON_AUDIT2ALLOW),y)\nSELINUX_PYTHON_DEPENDENCIES += checkpolicy\nSELINUX_PYTHON_MAKE_DIRS += audit2allow\nendif\n\nifeq ($(BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN),y)\nSELINUX_PYTHON_MAKE_DIRS += sepolgen/src/sepolgen\nendif\n\ndefine SELINUX_PYTHON_BUILD_CMDS\n\t$(foreach d,$(SELINUX_PYTHON_MAKE_DIRS),\n\t\t$(MAKE) -C $(@D)/$(d) $(SELINUX_PYTHON_MAKE_OPTS) \\\n\t\t\tall\n\t)\nendef\n\ndefine SELINUX_PYTHON_INSTALL_TARGET_CMDS\n\t$(foreach d,$(SELINUX_PYTHON_MAKE_DIRS),\n\t\t$(MAKE) -C $(@D)/$(d) $(SELINUX_PYTHON_MAKE_OPTS) \\\n\t\t\tDESTDIR=$(TARGET_DIR) install\n\t)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/semodule-utils/Config.in",
    "content": "config BR2_PACKAGE_SEMODULE_UTILS\n\tbool \"semodule-utils\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libsepol\n\tselect BR2_PACKAGE_LIBSEPOL\n\thelp\n\t  semodule-utils is a package that contains tools for handling\n\t  selinux modules.\n\n\t  The package will install the following utilities:\n\t  * semodule_deps - Show the dependencies between SELinux\n\t    policy packages.\n\t  * semodule_expand - Expand a SELinux policy module package.\n\t  * semodule_link - Link SELinux policy module packages together\n\t  * semodule_package - Create a SELinux policy module package.\n\n\t  https://github.com/SELinuxProject/selinux/wiki/Releases\n\ncomment \"semodule-utils needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/semodule-utils/semodule-utils.hash",
    "content": "# https://github.com/SELinuxProject/selinux/wiki/Releases\nsha256 be155654883c8dc4d05493e04a3eb9e56d28803009f1fdd721d42c68b878f757 semodule-utils-3.2.tar.gz\n\n# Hash for license file\nsha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING\n"
  },
  {
    "path": "package/semodule-utils/semodule-utils.mk",
    "content": "################################################################################\n#\n# semodule-utils\n#\n################################################################################\n\nSEMODULE_UTILS_VERSION = 3.2\nSEMODULE_UTILS_SITE = https://github.com/SELinuxProject/selinux/releases/download/$(SEMODULE_UTILS_VERSION)\nSEMODULE_UTILS_LICENSE = GPL-2.0\nSEMODULE_UTILS_LICENSE_FILES = COPYING\nSEMODULE_UTILS_DEPENDENCIES = libsepol\n\nSEMODULE_UTILS_MAKE_OPTS += \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tLIBSEPOLA=$(STAGING_DIR)/usr/lib/libsepol.a\n\n# We need to pass DESTDIR at build time because it's used by\n# semodule-utils build system to find headers and libraries.\ndefine SEMODULE_UTILS_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(SEMODULE_UTILS_MAKE_OPTS) DESTDIR=$(STAGING_DIR) all\nendef\n\ndefine SEMODULE_UTILS_INSTALL_TARGET_CMDS\n\t$(MAKE) -C $(@D) $(SEMODULE_UTILS_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/semver-sort/Config.in",
    "content": "config BR2_PACKAGE_SEMVER_SORT\n\tbool \"semver-sort\"\n"
  },
  {
    "path": "package/semver-sort/semver-sort.mk",
    "content": "################################################################################\n#\n# semver-sort\n#\n################################################################################\n\nSEMVER_SORT_VERSION = 1.1.0\nSEMVER_SORT_SITE = $(call github,ccrisan,semver-sort,version-$(SEMVER_SORT_VERSION))\nSEMVER_SORT_LICENSE = MIT\n\ndefine SEMVER_SORT_BUILD_CMDS\n    make CC=\"$(TARGET_CC)\" -C \"$(@D)\" semver-sort\nendef\n\ndefine SEMVER_SORT_INSTALL_TARGET_CMDS\n    cp $(@D)/semver-sort $(TARGET_DIR)/usr/bin/\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/sentry-native/0001-sentry.h-include-ucontext.h.patch",
    "content": "From 6a3b7b28f34c91c72d8b849903d93de2997b82f1 Mon Sep 17 00:00:00 2001\nFrom: Joseph Kogut <joseph.kogut@gmail.com>\nDate: Tue, 8 Sep 2020 11:40:01 -0700\nSubject: [PATCH] sentry.h: include ucontext.h\n\nThis is included by signal.h in newer versions of glibc, but results\nin an unknown type name error in older versions.\n\nSigned-off-by: Joseph Kogut <joseph.kogut@gmail.com>\n---\n include/sentry.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/include/sentry.h b/include/sentry.h\nindex 25754d9..a55cc00 100644\n--- a/include/sentry.h\n+++ b/include/sentry.h\n@@ -78,6 +78,7 @@ extern \"C\" {\n #    include <wtypes.h>\n #else\n #    include <signal.h>\n+#    include <ucontext.h>\n #endif\n\n /**\n--\n2.28.0\n"
  },
  {
    "path": "package/sentry-native/Config.in",
    "content": "config BR2_PACKAGE_SENTRY_NATIVE\n\tbool \"sentry-native\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # google-breakpad\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # google-breakpad\n\tdepends on BR2_USE_WCHAR # google-breakpad\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # google-breakpad\n\t# google-breakpad is restricted to glibc or uClibc, but\n\t# sentry-native needs <execinfo.h>, so it restricts further to\n\t# just glibc.\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS # google-breakpad\n\tdepends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS # google-breakpad\n\tselect BR2_PACKAGE_GOOGLE_BREAKPAD\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  The Sentry Native SDK is an error and crash\n\t  reporting client for native applications,\n\t  optimized for C and C++.\n\n\t  https://github.com/getsentry/sentry-native\n\ncomment \"sentry-native needs a glibc toolchain with w/ wchar, thread, C++, gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_USES_GLIBC || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/sentry-native/sentry-native.hash",
    "content": "# locally calculated\nsha256  a7d04fe9b9175c30a58ce20ae23b510595045a66884a447dd21ff2d0c749751b  sentry-native-0.4.1.tar.gz\nsha256  5ef07a3d95f1f779c1597c0fbaecbb7ba242128ff0587ed1e3214c7ac6154523  LICENSE\n"
  },
  {
    "path": "package/sentry-native/sentry-native.mk",
    "content": "################################################################################\n#\n# sentry-native\n#\n################################################################################\n\nSENTRY_NATIVE_VERSION = 0.4.1\nSENTRY_NATIVE_SITE = $(call github,getsentry,sentry-native,$(SENTRY_NATIVE_VERSION))\nSENTRY_NATIVE_LICENSE = MIT\nSENTRY_NATIVE_LICENSE_FILES = LICENSE\nSENTRY_NATIVE_DEPENDENCIES = libcurl google-breakpad\nSENTRY_NATIVE_INSTALL_STAGING = YES\n\n# Use the built system breakpad client instead of bundling\nSENTRY_NATIVE_CONF_OPTS += -DSENTRY_BREAKPAD_SYSTEM=ON\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/ser2net/Config.in",
    "content": "config BR2_PACKAGE_SER2NET\n\tbool \"ser2net\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_GENSIO\n\tselect BR2_PACKAGE_LIBYAML\n\thelp\n\t  Ser2net provides a way for a user to connect from a network\n\t  connection to a serial port.\n\n\t  http://ser2net.sourceforge.net\n"
  },
  {
    "path": "package/ser2net/S50ser2net",
    "content": "#!/bin/sh\n#\n# Startup script for ser2net\n#\n\nstart() {\n    printf  \"Starting ser2net: \"\n    if [ ! -f /etc/ser2net.conf ] && [ ! -f /etc/ser2net/ser2net.yaml ] ; then\n\techo \"no configuration file\"\n\texit 1\n    fi\n\n    start-stop-daemon -S -q --exec /usr/sbin/ser2net -- -P /var/run/ser2net.pid\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n    printf \"Shutting down ser2net: \"\n    start-stop-daemon -K -q -p /var/run/ser2net.pid\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nrestart() {\n    stop\n    start\n}\n\ncase \"$1\" in\n\tstart)\n\t    start\n\t    ;;\n\tstop)\n\t    stop\n\t    ;;\n\trestart)\n\t    restart\n\t    ;;\n\t*)\n\t    echo \"Usage: ser2net {start|stop|restart}\"\n\t    exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/ser2net/ser2net.hash",
    "content": "# From https://sourceforge.net/projects/ser2net/files/ser2net/\nmd5  e6d88a440852e28b8e2978003b00e154  ser2net-4.3.4.tar.gz\nsha1  74d02c19c2eef219b59a47fbc61b4fb09cf608d3  ser2net-4.3.4.tar.gz\n# Locally computed:\nsha256  c714d6777849100b2ca3f216d1cfc36d4573639ececc91d5c7809dfe27c8428e  ser2net-4.3.4.tar.gz\nsha256  501f3108e6c03e5a0a5585ebaaa369171aead5319cd0a7a4dc1f66211c1f09f1  COPYING\n"
  },
  {
    "path": "package/ser2net/ser2net.mk",
    "content": "################################################################################\n#\n# ser2net\n#\n################################################################################\n\nSER2NET_VERSION = 4.3.4\nSER2NET_SITE = https://downloads.sourceforge.net/project/ser2net/ser2net\nSER2NET_LICENSE = GPL-2.0+\nSER2NET_LICENSE_FILES = COPYING\nSER2NET_DEPENDENCIES = gensio libyaml\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nSER2NET_CONF_OPTS += --with-pthreads\nelse\nSER2NET_CONF_OPTS += --without-pthreads\nendif\n\n# fix gensio detection with openssl enabled\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nSER2NET_CONF_ENV += LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs openssl`\"\nendif\n\ndefine SER2NET_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/ser2net/S50ser2net \\\n\t\t$(TARGET_DIR)/etc/init.d/S50ser2net\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/setools/0001-Do-not-export-use-setools.InfoFlowAnalysis-and-setoo.patch",
    "content": "From ae84e5ef59bb24d5b8fd17e6756952f42c2d5c36 Mon Sep 17 00:00:00 2001\nFrom: rpm-build <rpm-build>\nDate: Thu, 23 Feb 2017 08:17:07 +0100\nSubject: [PATCH] Do not export/use setools.InfoFlowAnalysis and\n setools.DomainTransitionAnalysis\n\ndta and infoflow modules require networkx which brings lot of dependencies.\nThese dependencies are not necessary for setools module itself as it's\nused in policycoreutils.\n\nTherefore it's better to use setools.infoflow.InfoFlowAnalysis and\nsetools.dta.DomainTransitionAnalysis and let the package containing\nsedta and seinfoflow to require python3-networkx\n\nSigned-off-by: Antoine Tenart <antoine.tenart@bootlin.com>\n[Refreshed for 4.3.0]\nSigned-off-by: Adam Duskett <aduskett@gmail.com>\n[Refreshed for 4.4.0]\n---\n sedta                       | 3 ++-\n seinfoflow                  | 5 +++--\n setools/__init__.py         | 4 ++--\n setoolsgui/apol/dta.py      | 2 +-\n setoolsgui/apol/infoflow.py | 2 +-\n tests/dta.py                | 2 +-\n tests/infoflow.py           | 2 +-\n 7 files changed, 11 insertions(+), 9 deletions(-)\n\ndiff --git a/sedta b/sedta\nindex 60861ca630a5..0056172a55e5 100755\n--- a/sedta\n+++ b/sedta\n@@ -23,6 +23,7 @@ import logging\n import signal\n \n import setools\n+import setools.dta\n \n \n def print_transition(trans: setools.DomainTransition) -> None:\n@@ -114,7 +115,7 @@ else:\n \n try:\n     p = setools.SELinuxPolicy(args.policy)\n-    g = setools.DomainTransitionAnalysis(p, reverse=args.reverse, exclude=args.exclude)\n+    g = setools.dta.DomainTransitionAnalysis(p, reverse=args.reverse, exclude=args.exclude)\n \n     if args.shortest_path or args.all_paths:\n         if args.shortest_path:\ndiff --git a/seinfoflow b/seinfoflow\nindex f10c39de4d8e..fe733bbd0787 100755\n--- a/seinfoflow\n+++ b/seinfoflow\n@@ -18,6 +18,7 @@\n #\n \n import setools\n+import setools.infoflow\n import argparse\n import sys\n import logging\n@@ -102,8 +103,8 @@ elif args.booleans is not None:\n try:\n     p = setools.SELinuxPolicy(args.policy)\n     m = setools.PermissionMap(args.map)\n-    g = setools.InfoFlowAnalysis(p, m, min_weight=args.min_weight, exclude=args.exclude,\n-                                 booleans=booleans)\n+    g = setools.infoflow.InfoFlowAnalysis(p, m, min_weight=args.min_weight, exclude=args.exclude,\n+                                          booleans=booleans)\n \n     if args.shortest_path or args.all_paths:\n         if args.shortest_path:\ndiff --git a/setools/__init__.py b/setools/__init__.py\nindex d72d343..4d5aaaa 100644\n--- a/setools/__init__.py\n+++ b/setools/__init__.py\n@@ -91,11 +91,11 @@ from .pcideviceconquery import PcideviceconQuery\n from .devicetreeconquery import DevicetreeconQuery\n \n # Information Flow Analysis\n-from .infoflow import InfoFlowAnalysis\n+# from .infoflow import InfoFlowAnalysis\n from .permmap import PermissionMap, RuleWeight, Mapping\n \n # Domain Transition Analysis\n-from .dta import DomainTransitionAnalysis, DomainEntrypoint, DomainTransition\n+# from .dta import DomainTransitionAnalysis, DomainEntrypoint, DomainTransition\n \n # Policy difference\n from .diff import PolicyDifference\ndiff --git a/setoolsgui/apol/dta.py b/setoolsgui/apol/dta.py\nindex 4608b9dbf34e..2cde44c142e9 100644\n--- a/setoolsgui/apol/dta.py\n+++ b/setoolsgui/apol/dta.py\n@@ -24,7 +24,7 @@ from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread\n from PyQt5.QtGui import QPalette, QTextCursor\n from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \\\n     QTreeWidgetItem\n-from setools import DomainTransitionAnalysis\n+from setools.dta import DomainTransitionAnalysis\n \n from ..logtosignal import LogHandlerToSignal\n from .analysistab import AnalysisSection, AnalysisTab\ndiff --git a/setoolsgui/apol/infoflow.py b/setoolsgui/apol/infoflow.py\nindex 7bca299d23fc..7fee2778f35f 100644\n--- a/setoolsgui/apol/infoflow.py\n+++ b/setoolsgui/apol/infoflow.py\n@@ -26,7 +26,7 @@ from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread\n from PyQt5.QtGui import QPalette, QTextCursor\n from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \\\n     QTreeWidgetItem\n-from setools import InfoFlowAnalysis\n+from setools.infoflow import InfoFlowAnalysis\n from setools.exception import UnmappedClass, UnmappedPermission\n \n from ..logtosignal import LogHandlerToSignal\ndiff --git a/tests/dta.py b/tests/dta.py\nindex a0cc9381469c..177e6fb0b961 100644\n--- a/tests/dta.py\n+++ b/tests/dta.py\n@@ -18,7 +18,7 @@\n import os\n import unittest\n \n-from setools import DomainTransitionAnalysis\n+from setools.dta import DomainTransitionAnalysis\n from setools import TERuletype as TERT\n from setools.exception import InvalidType\n from setools.policyrep import Type\ndiff --git a/tests/infoflow.py b/tests/infoflow.py\nindex aa0e44a7e4f8..fca2848aeca5 100644\n--- a/tests/infoflow.py\n+++ b/tests/infoflow.py\n@@ -18,7 +18,7 @@\n import os\n import unittest\n \n-from setools import InfoFlowAnalysis\n+from setools.infoflow import InfoFlowAnalysis\n from setools import TERuletype as TERT\n from setools.exception import InvalidType\n from setools.permmap import PermissionMap\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/setools/Config.in",
    "content": "config BR2_PACKAGE_SETOOLS\n\tbool \"setools\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_NETWORKX # runtime\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS\n\tselect BR2_PACKAGE_LIBSELINUX\n\thelp\n\t  SETools is an open source project designed to facilitate\n\t  SELinux policy analysis. The primary tools are:\n\t   * apol - analyze a SELinux policy. (requires python-qt5)\n\t   * sediff - semantic policy difference tool for SELinux.\n\t   * sedta - Perform domain transition analyses\n\t   * seinfoflow - information flow analysis for SELinux\n\t   * sesearch - Search rules (allow, type_transition, etc.)\n\n\t  https://github.com/SELinuxProject/setools/\n\ncomment \"setools needs a toolchain w/ threads, wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_USE_WCHAR\n\ncomment \"setools needs python3\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_PYTHON3\n"
  },
  {
    "path": "package/setools/setools.hash",
    "content": "# Locally computed\nsha256\t202eac5f857475937bee8136cff278aa2b4a4b94a0dec63fbbbe18c9eb644a4e setools-4.4.0.tar.gz\nsha256  2f7547e10f76a382c24c053595f38a5cc6dda9347f508f254ca490e0046a9624 COPYING\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPL\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL\n"
  },
  {
    "path": "package/setools/setools.mk",
    "content": "################################################################################\n#\n# setools\n#\n################################################################################\n\nSETOOLS_VERSION = 4.4.0\nSETOOLS_SITE = $(call github,SELinuxProject,setools,$(SETOOLS_VERSION))\nSETOOLS_DEPENDENCIES = libselinux libsepol python-setuptools host-bison host-flex host-python-cython host-swig\nSETOOLS_INSTALL_STAGING = YES\nSETOOLS_LICENSE = GPL-2.0+, LGPL-2.1+\nSETOOLS_LICENSE_FILES = COPYING COPYING.GPL COPYING.LGPL\nSETOOLS_CPE_ID_VENDOR = selinuxproject\nSETOOLS_SETUP_TYPE = setuptools\nHOST_SETOOLS_DEPENDENCIES = host-python3-cython host-libselinux host-libsepol host-python-networkx\nHOST_SETOOLS_NEEDS_HOST_PYTHON = python3\n\ndefine SETOOLS_FIX_SETUP\n\t# By default, setup.py will look for libsepol.a in the host machines\n\t# /usr/lib directory. This needs to be changed to the staging directory.\n\t$(SED) \"s@lib_dirs =.*@lib_dirs = ['$(STAGING_DIR)/usr/lib']@g\" \\\n\t\t$(@D)/setup.py\nendef\nSETOOLS_POST_PATCH_HOOKS += SETOOLS_FIX_SETUP\n\ndefine HOST_SETOOLS_FIX_SETUP\n\t# By default, setup.py will look for libsepol.a in the host machines\n\t# /usr/lib directory. This needs to be changed to the host directory.\n\t$(SED) \"s@lib_dirs =.*@lib_dirs = ['$(HOST_DIR)/lib']@g\" \\\n\t\t$(@D)/setup.py\nendef\nHOST_SETOOLS_POST_PATCH_HOOKS += HOST_SETOOLS_FIX_SETUP\n\n# apol requires pyqt5. However, the setools installation\n# process will install apol even if pyqt5 is missing.\n# Remove these scripts from the target it pyqt5 is not selected.\nifeq ($(BR2_PACKAGE_PYTHON_PYQT5),)\ndefine SETOOLS_REMOVE_QT_SCRIPTS\n\t$(RM) $(TARGET_DIR)/usr/bin/apol\n\t$(RM) -r $(TARGET_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/setoolsgui/\nendef\nSETOOLS_POST_INSTALL_TARGET_HOOKS += SETOOLS_REMOVE_QT_SCRIPTS\nendif\n\n# pyqt5 is not a host-package, remove apol from the host directory.\ndefine HOST_SETOOLS_REMOVE_BROKEN_SCRIPTS\n\t$(RM) $(HOST_DIR)/bin/apol\nendef\nHOST_SETOOLS_POST_INSTALL_HOOKS += HOST_SETOOLS_REMOVE_BROKEN_SCRIPTS\n\n$(eval $(python-package))\n$(eval $(host-python-package))\n"
  },
  {
    "path": "package/setserial/0001-build-system-fix.patch",
    "content": "Install the setserial program in /usr/bin instead of /bin, and make\nsure that the directories (especially the manpages directory) are\ncreated before installing files to them. This is similar to what\nautomake does.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n Makefile.in |    7 ++++---\n 1 file changed, 4 insertions(+), 3 deletions(-)\n\nIndex: setserial-2.17/Makefile.in\n===================================================================\n--- setserial-2.17.orig/Makefile.in\n+++ setserial-2.17/Makefile.in\n@@ -26,9 +26,10 @@ setserial.cat: setserial.8\n \tnroff -man setserial.8 > setserial.cat\n \n install: setserial setserial.8\n-\t$(INSTALL_PROGRAM) setserial $(DESTDIR)/bin\n-\t$(STRIP) $(DESTDIR)/bin/setserial\n-\t$(INSTALL_DATA) setserial.8 $(DESTDIR)/usr/man/man8\n+\tmkdir -p $(DESTDIR)/usr/bin\n+\t$(INSTALL_PROGRAM) setserial $(DESTDIR)/usr/bin\n+\tmkdir -p $(DESTDIR)/usr/share/man/man8\n+\t$(INSTALL_DATA) setserial.8 $(DESTDIR)/usr/share/man/man8\n \n clean:\n \t$(RM) setserial setserial.o setserial.cat *~\n"
  },
  {
    "path": "package/setserial/0002-tiocghayesesp-build-fix.patch",
    "content": "[PATCH] setserial: fix build with 2.6.33+ kernel headers\n\nlinux/hayesesp.h got removed in 2.6.33, but some archs (like x86) still\ndefine the TIOCGHAYESESP ioctl, breaking the build.\n\nIt's very unlikely to be of interest anymore, so just undef it.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\n---\n setserial.c |    5 +++++\n 1 file changed, 5 insertions(+)\n\nIndex: setserial-2.17/setserial.c\n===================================================================\n--- setserial-2.17.orig/setserial.c\n+++ setserial-2.17/setserial.c\n@@ -24,6 +24,11 @@\n #endif\n #include <linux/serial.h>\n \n+/* linux/hayesesp.h got removed in 2.6.33 but some archs (like x86)\n+   still define TIOCGHAYESESP. It's very unlikely to be of interest\n+   anymore, so just undef it */\n+#undef TIOCGHAYESESP\n+\n #include \"version.h\"\n \n static char version_str[] = \"setserial version \" SETSERIAL_VERSION \", \"\n"
  },
  {
    "path": "package/setserial/Config.in",
    "content": "config BR2_PACKAGE_SETSERIAL\n\tbool \"setserial\"\n\t# Uses fork()\n\tdepends on BR2_USE_MMU\n\thelp\n\t  Setserial : configuration of serial ports\n\n\t  http://setserial.sourceforge.net/\n"
  },
  {
    "path": "package/setserial/setserial.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/s/setserial/setserial_2.17-45.3.dsc\nsha256  7e4487d320ac31558563424189435d396ddf77953bb23111a17a3d1487b5794a  setserial_2.17.orig.tar.gz\nsha256  33db87e8a86cf12b7c97efca9e056865e71358e8cfeb3931118b2647ce1eecc6  setserial_2.17-45.3.diff.gz\n# Locally computed\nsha256  1d7e810ed28daf370def626dfd4c502f2f77d2b678f1ac72e2ba675dd6f9af0d  debian/copyright\n"
  },
  {
    "path": "package/setserial/setserial.mk",
    "content": "################################################################################\n#\n# setserial\n#\n################################################################################\n\nSETSERIAL_VERSION = 2.17\nSETSERIAL_PATCH = setserial_2.17-45.3.diff.gz\nSETSERIAL_SOURCE = setserial_$(SETSERIAL_VERSION).orig.tar.gz\nSETSERIAL_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/s/setserial\nSETSERIAL_LICENSE = GPL-2.0\nSETSERIAL_LICENSE_FILES = debian/copyright\n# make all also builds setserial.cat which needs nroff\nSETSERIAL_MAKE_OPTS = setserial\n\ndefine SETSERIAL_APPLY_DEBIAN_PATCHES\n\t# Touching gorhack.h is needed for the Debian patch 18 to work\n\tif [ -d $(@D)/debian/patches ]; then \\\n\t\ttouch $(@D)/gorhack.h; \\\n\t\trm $(@D)/debian/patches/01_makefile.dpatch; \\\n\t\t$(APPLY_PATCHES) $(@D) $(@D)/debian/patches *.dpatch; \\\n\tfi\nendef\n\nSETSERIAL_POST_PATCH_HOOKS += SETSERIAL_APPLY_DEBIAN_PATCHES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sg3_utils/0001-src-sg_dd.c-fix-musl-build.patch",
    "content": "From c93ad13ecd8ddfbb8bb3e4d5d5ad7f3f2c633db6 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 14 Nov 2021 12:37:16 +0100\nSubject: [PATCH] src/sg_dd.c: fix musl build\n\nFix the following build failure on musl raised since version 1.47 and\nhttps://github.com/doug-gilbert/sg3_utils/commit/f0195003bb0c66ba55084b2f7e0fe982f08c5675:\n\nsg_dd.c: In function 'main':\nsg_dd.c:2402:17: error: unknown type name 'uint'; did you mean 'int'?\n 2402 |                 uint off;\n      |                 ^~~~\n      |                 int\n\nFixes:\n - http://autobuild.buildroot.org/results/9ead59ffefefe2a4e3b94a153b3d23231736d882\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/doug-gilbert/sg3_utils/pull/7]\n---\n src/sg_dd.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/sg_dd.c b/src/sg_dd.c\nindex 9d05c93..35e2423 100644\n--- a/src/sg_dd.c\n+++ b/src/sg_dd.c\n@@ -2399,7 +2399,7 @@ main(int argc, char * argv[])\n             res = blocks * blk_sz;\n             if (iflag.zero && iflag.ff && (blk_sz >= 4)) {\n                 uint32_t pos = (uint32_t)skip;\n-                uint off;\n+                uint32_t off;\n \n                 for (k = 0, off = 0; k < blocks; ++k, off += blk_sz, ++pos) {\n                     for (j = 0; j < (blk_sz - 3); j += 4)\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/sg3_utils/0002-configure.ac-fix-uclibc-ng-build.patch",
    "content": "From 1e95d5b8c507a49f6d15d2795dc46d82b4d1ded0 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 16 Nov 2021 08:41:48 +0100\nSubject: [PATCH] configure.ac: fix uclibc-ng build\n\nFix the following build failure with uclibc-ng raised because SG_IO is\nnot defined:\n\n/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: sg_dd.o: in function `sg_read_low.constprop.0':\nsg_dd.c:(.text+0xc6c): undefined reference to `sg_chk_n_print3'\n\nFixes:\n - http://autobuild.buildroot.org/results/38a0dfc70a21ce574368b7a485deb231f778b3e7\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/doug-gilbert/sg3_utils/pull/8]\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 0a65d94..23378ad 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -107,7 +107,7 @@ case \"${host}\" in\n \t\tAC_DEFINE_UNQUOTED(HAVE_NVME, 1, [Found NVMe])\n \t\tcheck_for_getrandom\n                 CFLAGS=\"$CFLAGS -D__USE_MINGW_ANSI_STDIO\";;\n-        *-*-linux-gnu* | *-*-linux*)\n+        *-*-linux-gnu* | *-*-linux* | *-*-uclinux-gnu* | *-*-uclinux*)\n                 AC_DEFINE_UNQUOTED(SG_LIB_LINUX, 1, [sg3_utils on linux])\n \t\tcheck_for_linux_sg_v4_hdr\n \t\tcheck_for_getrandom\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/sg3_utils/Config.in",
    "content": "config BR2_PACKAGE_SG3_UTILS\n\tbool \"sg3-utils\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Low level utilities for devices that use a SCSI command set.\n\t  This option install only libsgutils2 library not programs.\n\n\t  http://sg.danny.cz/sg/sg3_utils.html\n\nif BR2_PACKAGE_SG3_UTILS\n\nconfig BR2_PACKAGE_SG3_UTILS_PROGS\n\tbool \"install programs\"\n\nendif\n\ncomment \"sg3-utils needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/sg3_utils/sg3_utils.hash",
    "content": "# Locally calculated from download (no sig, hash)\nsha256  ddb0cab85fedd8b0db020f3e3f02f6967a055616bf16ea9d5c7408cde41472b2  sg3_utils-1.47.tar.xz\n\n# Hash for license files\nsha256  d212debdb0a5d7754c977f6dc53bb6c88b4ace7ab784ddbccd06bb970adb1a37  COPYING\nsha256  8ddd1d82f2be2f5cbd5b5c3b5c2ee94a90d2ca7112958448da74dd78384fd96a  BSD_LICENSE\n"
  },
  {
    "path": "package/sg3_utils/sg3_utils.mk",
    "content": "################################################################################\n#\n# sg3_utils\n#\n################################################################################\n\nSG3_UTILS_VERSION = 1.47\nSG3_UTILS_SOURCE = sg3_utils-$(SG3_UTILS_VERSION).tar.xz\nSG3_UTILS_SITE = http://sg.danny.cz/sg/p\nSG3_UTILS_LICENSE = BSD-2-Clause (library)\n# Some utils progs are GPL-2.0+ licensed while others are BSD-3-Clause\nifeq ($(BR2_PACKAGE_SG3_UTILS_PROGS),y)\nSG3_UTILS_LICENSE += , GPL-2.0+ (programs), BSD-2-Clause (programs)\nendif\nSG3_UTILS_LICENSE_FILES = COPYING BSD_LICENSE\n# We're patching configure.ac\nSG3_UTILS_AUTORECONF = YES\n\n# install the libsgutils2 library\nSG3_UTILS_INSTALL_STAGING = YES\n\n# Uses __atomic_fetch_add_4\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nSG3_UTILS_CONF_ENV += LIBS=\"-latomic\"\nendif\n\nifeq ($(BR2_PACKAGE_SG3_UTILS_PROGS),)\ndefine SG3_UTILS_REMOVE_PROGS\n\tfor prog in \\\n\t\tcompare_and_write copy_results dd decode_sense \\\n\t\temc_trespass format get_config \\\n\t\tget_lba_status ident inq logs luns map26 \\\n\t\tmap sgm_dd modes opcodes sgp_dd persist prevent \\\n\t\traw rbuf rdac read readcap read_block_limits \\\n\t\tread_attr read_buffer read_long reassign referrals \\\n\t\trep_zones requests reset reset_wp rmsn rtpg safte sanitize \\\n\t\tsat_identify sat_phy_event sat_read_gplog sat_set_features \\\n\t\tscan senddiag ses ses_microcode start stpg sync test_rwbuf \\\n\t\ttimestamp turs unmap verify vpd write_buffer write_long \\\n\t\twrite_same write_verify wr_mode xcopy zone; do \\\n\t\t$(RM) $(TARGET_DIR)/usr/bin/sg_$${prog} ; \\\n\tdone\n\tfor prog in \\\n\t\tlogging_level mandat readcap ready satl start stop \\\n\t\ttemperature; do \\\n\t\t$(RM) $(TARGET_DIR)/usr/bin/scsi_$${prog} ; \\\n\tdone\n\tfor prog in \\\n\t\tsginfo sgm_dd sgp_dd; do \\\n\t\t$(RM) $(TARGET_DIR)/usr/bin/$${prog}; \\\n\tdone\nendef\n\nSG3_UTILS_POST_INSTALL_TARGET_HOOKS += SG3_UTILS_REMOVE_PROGS\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/shadowsocks-libev/0001-configure.ac-use-pkg-config-to-find-netfilter_conntr.patch",
    "content": "From b3c61360a93b7f08fc9c33526056211408301ea9 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 23 Nov 2020 21:16:38 +0100\nSubject: [PATCH] configure.ac: use pkg-config to find netfilter_conntrack\n\nUse pkg-config to retrieve the dependencies of netfilter_conntrack\nand avoid the following build failure when building statically:\n\nconfigure:13096: /data/buildroot-test/instance-1/output-1/host/bin/x86_64-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os   -static -I/data/buildroot-test/instance-1/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include -DPCRE_STATIC -pthread -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -static -L/data/buildroot-test/instance-1/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/lib conftest.c -lnetfilter_conntrack -lnfnetlink -lev  -lcares -lsodium -lmbedcrypto -lpcre  >&5\n/data/buildroot-test/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-uclibc/8.3.0/../../../../x86_64-buildroot-linux-uclibc/bin/ld: /data/buildroot-test/instance-1/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/lib/libnetfilter_conntrack.a(api.o): in function `nfct_fill_hdr.constprop.4':\napi.c:(.text+0x3f): undefined reference to `mnl_nlmsg_put_header'\n\nFixes:\n - http://autobuild.buildroot.org/results/6cad497a7ab941a0ee3fd7007defc81e30cdcbe0\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://github.com/shadowsocks/shadowsocks-libev/pull/2773]\n---\n configure.ac    | 5 +++--\n src/Makefile.am | 2 +-\n 2 files changed, 4 insertions(+), 3 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 9787bc2..207c041 100755\n--- a/configure.ac\n+++ b/configure.ac\n@@ -252,7 +252,8 @@ AC_ARG_ENABLE(connmarktos,\n if test x\"$enable_connmarktos\" = \"xyes\" ; then\n \tAC_MSG_NOTICE([Linux Netfilter Conntrack support requested by --enable-connmarktos: ${enable_connmarktos}])\n \tif test \"x$enable_connmarktos\" != \"xno\"; then\n-\t    AC_SEARCH_LIBS([nfct_query], [netfilter_conntrack],,[\n+\t    PKG_CHECK_MODULES([NETFILTER_CONNTRACK], [libnetfilter_conntrack],,\n+\t    [AC_SEARCH_LIBS([nfct_query], [netfilter_conntrack],,[\n \t        if test x\"$enable_connmarktos\" = \"xyes\"; then\n \t            AC_MSG_ERROR([--enable-connmarktos specified but libnetfilter-conntrack library not found])\n \t        fi\n@@ -262,7 +263,7 @@ if test x\"$enable_connmarktos\" = \"xyes\" ; then\n \t        if test x\"$enable_connmarktos\" = \"xyes\"; then\n \t            AC_MSG_ERROR([--enable-connmarktos specified but libnetfilter-conntrack headers not found])\n \t        fi\n-\t        with_netfilter_conntrack=no])\n+\t        with_netfilter_conntrack=no])])\n \t  # If nothing is broken; enable the libraries usage.\n \t  if test \"x$with_netfilter_conntrack\" != \"xno\"; then\n \t\twith_netfilter_conntrack=yes\ndiff --git a/src/Makefile.am b/src/Makefile.am\nindex c261ed0..b81ced7 100644\n--- a/src/Makefile.am\n+++ b/src/Makefile.am\n@@ -9,7 +9,7 @@ AM_CFLAGS += -I$(top_srcdir)/libcork/include\n endif\n AM_CFLAGS += $(LIBPCRE_CFLAGS)\n \n-SS_COMMON_LIBS = $(INET_NTOP_LIB) $(LIBPCRE_LIBS)\n+SS_COMMON_LIBS = $(INET_NTOP_LIB) $(LIBPCRE_LIBS) $(NETFILTER_CONNTRACK_LIBS)\n if !USE_SYSTEM_SHARED_LIB\n SS_COMMON_LIBS += $(top_builddir)/libbloom/libbloom.la \\\n                   $(top_builddir)/libipset/libipset.la \\\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/shadowsocks-libev/Config.in",
    "content": "config BR2_PACKAGE_SHADOWSOCKS_LIBEV\n\tbool \"shadowsocks-libev\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # for libcork\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_8 || !BR2_ARCH_IS_64 # for libcork\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_C_ARES\n\tselect BR2_PACKAGE_LIBEV\n\tselect BR2_PACKAGE_LIBSODIUM\n\tselect BR2_PACKAGE_MBEDTLS\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  Shadowsocks-libev is a lightweight secured SOCKS5 proxy for\n\t  embedded devices and low-end boxes.\n\n\t  https://github.com/shadowsocks/shadowsocks-libev\n\nconfig BR2_PACKAGE_SHADOWSOCKS_LIBEV_CONNMARKTOS\n\tbool \"connmarktos support in ss-server\"\n\tdepends on BR2_PACKAGE_SHADOWSOCKS_LIBEV\n\tselect BR2_PACKAGE_LIBNETFILTER_CONNTRACK\n\thelp\n\t  Build ss-server with the connmark to TOS feature.\n\n\t  This feature requires advanced tc, iptables and conntrack\n\t  rules to perform QoS on the server side.\n\n\t  If unsure, don't enable this option\n\ncomment \"shadowsocks-libev needs a toolchain w/ threads\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_8 || !BR2_ARCH_IS_64\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/shadowsocks-libev/shadowsocks-libev.hash",
    "content": "# Locally computed\nsha256  cfc8eded35360f4b67e18dc447b0c00cddb29cc57a3cec48b135e5fb87433488  shadowsocks-libev-3.3.5.tar.gz\n\n# License files, locally calculated\nsha256  736883f97d44dbec288bb82819f18f4f86d02ae3192f6a9abefa00db76bace41  COPYING\nsha256  c41a4bc2c4c43e4daa3051e77e31b2d5c8500498afaeac6d831d55a4bb8de3fb  libbloom/LICENSE\nsha256  4fa2ada54f8c0410ec243265378242ffe862386d5ac517f8dd30a1911d25ae93  libcork/COPYING\n"
  },
  {
    "path": "package/shadowsocks-libev/shadowsocks-libev.mk",
    "content": "################################################################################\n#\n# shadowsocks-libev\n#\n################################################################################\n\nSHADOWSOCKS_LIBEV_VERSION = 3.3.5\nSHADOWSOCKS_LIBEV_SITE = https://github.com/shadowsocks/shadowsocks-libev/releases/download/v$(SHADOWSOCKS_LIBEV_VERSION)\nSHADOWSOCKS_LIBEV_LICENSE = GPL-3.0+, BSD-2-Clause (libbloom), BSD-3-Clause (libcork, libipset)\nSHADOWSOCKS_LIBEV_LICENSE_FILES = COPYING libbloom/LICENSE libcork/COPYING\nSHADOWSOCKS_LIBEV_CPE_ID_VENDOR = shadowsocks\nSHADOWSOCKS_LIBEV_DEPENDENCIES = host-pkgconf c-ares libev libsodium mbedtls pcre\nSHADOWSOCKS_LIBEV_INSTALL_STAGING = YES\n# We're patching configure.ac\nSHADOWSOCKS_LIBEV_AUTORECONF = YES\nSHADOWSOCKS_LIBEV_CONF_OPTS = \\\n\t--with-pcre=$(STAGING_DIR)/usr \\\n\t--disable-ssp\n\nifeq ($(BR2_PACKAGE_SHADOWSOCKS_LIBEV_CONNMARKTOS),y)\nSHADOWSOCKS_LIBEV_DEPENDENCIES += libnetfilter_conntrack\nSHADOWSOCKS_LIBEV_CONF_OPTS += --enable-connmarktos\nelse\nSHADOWSOCKS_LIBEV_CONF_OPTS += --disable-connmarktos\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/shairport-sync/0001-configure.ac-find-sndfile-through-pkg-config.patch",
    "content": "From 900b1827c55cc6020b3242640075174c2e6b12a5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 4 Aug 2021 22:16:40 +0200\nSubject: [PATCH] configure.ac: find sndfile through pkg-config\n\nFind sndfile through pkg-config to retrieve sndfile dependencies such as\nflac and avoid the following static build failure:\n\n/tmp/instance-3/output-1/host/lib/gcc/xtensa-buildroot-linux-uclibc/10.3.0/../../../../xtensa-buildroot-linux-uclibc/bin/ld: /tmp/instance-3/output-1/host/bin/../xtensa-buildroot-linux-uclibc/sysroot/usr/lib/libsndfile.a(libsndfile_la-flac.o): in function `flac_byterate':\nflac.c:(.text+0xfc): undefined reference to `FLAC__StreamDecoderErrorStatusString'\n\nFixes:\n - http://autobuild.buildroot.org/results/92ed30a6855ca11800b779718822bcba4a69c9a3\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/mikebrady/shairport-sync/pull/1263]\n---\n configure.ac | 9 ++++++++-\n 1 file changed, 8 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex f77087c5..9b982c51 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -304,7 +304,14 @@ AC_ARG_WITH(convolution, [AS_HELP_STRING([--with-convolution],[choose audio DSP\n if test \"x$with_convolution\" = \"xyes\" ; then\n   AM_INIT_AUTOMAKE([subdir-objects])\n   AC_DEFINE([CONFIG_CONVOLUTION], 1, [Include audio DSP convolution support.])\n-  AC_CHECK_LIB([sndfile], [sf_open], , AC_MSG_ERROR(Convolution support requires the sndfile library -- libsndfile1-dev suggested!))\n+  if  test \"x${with_pkg_config}\" = xyes ; then\n+    PKG_CHECK_MODULES(\n+      [sndfile], [sndfile],\n+      [CFLAGS=\"${sndfile_CFLAGS} ${CFLAGS}\"\n+      LIBS=\"${sndfile_LIBS} ${LIBS}\"], AC_MSG_ERROR(Convolution support requires the sndfile library -- libsndfile1-dev suggested!))\n+  else\n+    AC_CHECK_LIB([sndfile], [sf_open], , AC_MSG_ERROR(Convolution support requires the sndfile library -- libsndfile1-dev suggested!))\n+  fi\n fi\n AM_CONDITIONAL([USE_CONVOLUTION], [test \"x$with_convolution\" = \"xyes\"])\n \n-- \n2.30.2\n\n"
  },
  {
    "path": "package/shairport-sync/0002-configure.ac-fix-build-with-automake-1.16.5.patch",
    "content": "From ad22edb303a470b6f9eda9fd9d3f588bb2eff8cb Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 15 Oct 2021 08:02:23 +0200\nSubject: [PATCH] configure.ac: fix build with automake 1.16.5\n\nFix the following build failure with convolution raised since automake\n1.16.5 and\nhttps://git.savannah.gnu.org/cgit/automake.git/commit/?id=f4a3a70f69e1dbccb6578f39ef47835098a04624:\n\nconfigure.ac:305: error: AM_INIT_AUTOMAKE expanded multiple times\n/home/giuliobenetti/autobuild/run/instance-1/output-1/host/share/aclocal-1.16/init.m4:29: AM_INIT_AUTOMAKE is expanded from...\nconfigure.ac:6: the top level\n/home/giuliobenetti/autobuild/run/instance-1/output-1/host/share/aclocal-1.16/init.m4:29: AM_INIT_AUTOMAKE is expanded from...\nconfigure.ac:305: the top level\n\nFixes:\n - http://autobuild.buildroot.org/results/464148bdccb705d8992dc860262bfdeb01b7e2a1\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/mikebrady/shairport-sync/pull/1314]\n---\n configure.ac | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex f77087c5..aa533a2d 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3,7 +3,7 @@\n \n AC_PREREQ([2.50])\n AC_INIT([shairport-sync], [3.3.8], [4265913+mikebrady@users.noreply.github.com])\n-AM_INIT_AUTOMAKE\n+AM_INIT_AUTOMAKE([subdir-objects])\n AC_CONFIG_SRCDIR([shairport.c])\n AC_CONFIG_HEADERS([config.h])\n AC_PROG_RANLIB\n@@ -302,7 +302,6 @@ AM_CONDITIONAL([USE_PA], [test \"x$with_pa\" = \"xyes\"])\n # Look for Convolution flag\n AC_ARG_WITH(convolution, [AS_HELP_STRING([--with-convolution],[choose audio DSP convolution support])])\n if test \"x$with_convolution\" = \"xyes\" ; then\n-  AM_INIT_AUTOMAKE([subdir-objects])\n   AC_DEFINE([CONFIG_CONVOLUTION], 1, [Include audio DSP convolution support.])\n   AC_CHECK_LIB([sndfile], [sf_open], , AC_MSG_ERROR(Convolution support requires the sndfile library -- libsndfile1-dev suggested!))\n fi\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/shairport-sync/Config.in",
    "content": "config BR2_PACKAGE_SHAIRPORT_SYNC\n\tbool \"shairport-sync\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_MIXER\n\tselect BR2_PACKAGE_LIBCONFIG\n\tselect BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_MBEDTLS\n\tselect BR2_PACKAGE_POPT\n\thelp\n\t  Shairport Sync emulates an AirPort Express for the purpose\n\t  of streaming audio from iTunes, iPods, iPhones, iPads and\n\t  AppleTVs.  Audio played by a Shairport Sync-powered device\n\t  stays in synchrony with the source and thus with other\n\t  devices that are playing the same source\n\t  synchronously. Thus, for example, synchronised multi-room\n\t  audio is possible without difficulty.\n\n\t  https://github.com/mikebrady/shairport-sync\n\nif BR2_PACKAGE_SHAIRPORT_SYNC\n\nconfig BR2_PACKAGE_SHAIRPORT_SYNC_CONVOLUTION\n\tbool \"convolution support\"\n\tselect BR2_PACKAGE_LIBSNDFILE\n\thelp\n\t  Enable audio DSP convolution support.\n\nconfig BR2_PACKAGE_SHAIRPORT_SYNC_DBUS\n\tbool \"dbus support\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Enable support for support for the MPRIS and native\n\t  Shairport Sync D-Bus interface.\n\ncomment \"shairport-sync dbus support needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_SHAIRPORT_SYNC_LIBSOXR\n\tbool \"libsoxr support\"\n\tselect BR2_PACKAGE_LIBSOXR\n\thelp\n\t  Enable support for libsoxr, the SoX Resampler library.\n\n\t  Briefly, Shairport Sync keeps in step with the audio source\n\t  by deleting or inserting frames of audio into the stream as\n\t  needed. This \"interpolation\" is normally inaudible, but it\n\t  can be heard in some circumstances. Libsoxr allows this\n\t  interpolation to be done much more smoothly and subtly.\n\nconfig BR2_PACKAGE_SHAIRPORT_SYNC_MQTT\n\tbool \"mqtt support\"\n\tdepends on BR2_USE_MMU # avahi\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # avahi\n\tdepends on !BR2_STATIC_LIBS # avahi\n\tselect BR2_PACKAGE_AVAHI\n\tselect BR2_PACKAGE_AVAHI_DAEMON\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_MOSQUITTO\n\thelp\n\t  Enable support for the MQTT, the Message Queuing Telemetry\n\t  Transport protocol.\n\ncomment \"shairport-sync mqtt support needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n\nendif\n\ncomment \"shairport-sync needs a toolchain w/ C++, NPTL\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/shairport-sync/S99shairport-sync",
    "content": "#! /bin/sh\n\n# Additional options that are passed to Shairport Sync\nOPTIONS=\"-d\"\n\ncase \"$1\" in\n    start)\n\tprintf \"Starting shairport-sync: \"\n\tstart-stop-daemon -S -q --exec /usr/bin/shairport-sync -- $OPTIONS\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\n    stop)\n\tprintf \"Stopping shairport-sync: \"\n\tstart-stop-daemon -K -q --exec /usr/bin/shairport-sync \\\n\t\t-p /var/run/shairport-sync/shairport-sync.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n\t;;\n    restart)\n\t$0 stop\n\tsleep 1\n\t$0 start\n\t;;\n    *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\n\t;;\nesac\n"
  },
  {
    "path": "package/shairport-sync/shairport-sync.hash",
    "content": "# Locally calculated\nsha256  c92f9a2d86dd1138673abc66e0010c94412ad6a46da8f36c3d538f4fa6b9faca  shairport-sync-3.3.8.tar.gz\nsha256  1daaa904985807b7f9f2fa91f6b19f3faadf8df4e813f7451a691f89a6965e3f  LICENSES\n"
  },
  {
    "path": "package/shairport-sync/shairport-sync.mk",
    "content": "################################################################################\n#\n# shairport-sync\n#\n################################################################################\n\nSHAIRPORT_SYNC_VERSION = 3.3.8\nSHAIRPORT_SYNC_SITE = $(call github,mikebrady,shairport-sync,$(SHAIRPORT_SYNC_VERSION))\n\nSHAIRPORT_SYNC_LICENSE = MIT, BSD-3-Clause\nSHAIRPORT_SYNC_LICENSE_FILES = LICENSES\nSHAIRPORT_SYNC_DEPENDENCIES = alsa-lib libconfig popt host-pkgconf\n\n# git clone, no configure\nSHAIRPORT_SYNC_AUTORECONF = YES\n\nSHAIRPORT_SYNC_CONF_OPTS = --with-alsa \\\n\t--with-metadata \\\n\t--with-pipe \\\n\t--with-stdout\n\nSHAIRPORT_SYNC_CONF_ENV += LIBS=\"$(SHAIRPORT_SYNC_CONF_LIBS)\"\n\n# Avahi or tinysvcmdns (shaiport-sync bundles its own version of tinysvcmdns).\n# Avahi support needs libavahi-client, which is built by avahi if avahi-daemon\n# and dbus is selected. Since there is no BR2_PACKAGE_LIBAVAHI_CLIENT config\n# option yet, use the avahi-daemon and dbus congig symbols to check for\n# libavahi-client.\nifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy)\nSHAIRPORT_SYNC_DEPENDENCIES += avahi\nSHAIRPORT_SYNC_CONF_OPTS += --with-avahi --without-tinysvcmdns\nelse\nSHAIRPORT_SYNC_CONF_OPTS += --without-avahi --with-tinysvcmdns\nendif\n\nifeq ($(BR2_PACKAGE_LIBDAEMON),y)\nSHAIRPORT_SYNC_DEPENDENCIES += libdaemon\nSHAIRPORT_SYNC_CONF_OPTS += --with-libdaemon\nelse\nSHAIRPORT_SYNC_CONF_OPTS += --without-libdaemon\nendif\n\n# OpenSSL or mbedTLS\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nSHAIRPORT_SYNC_DEPENDENCIES += openssl\nSHAIRPORT_SYNC_CONF_OPTS += --with-ssl=openssl\nelse\nSHAIRPORT_SYNC_DEPENDENCIES += mbedtls\nSHAIRPORT_SYNC_CONF_OPTS += --with-ssl=mbedtls\nSHAIRPORT_SYNC_CONF_LIBS += -lmbedx509 -lmbedcrypto\nifeq ($(BR2_PACKAGE_MBEDTLS_COMPRESSION),y)\nSHAIRPORT_SYNC_CONF_LIBS += -lz\nendif\nendif\n\nifeq ($(BR2_PACKAGE_SHAIRPORT_SYNC_CONVOLUTION),y)\nSHAIRPORT_SYNC_DEPENDENCIES += libsndfile\nSHAIRPORT_SYNC_CONF_OPTS += --with-convolution\nelse\nSHAIRPORT_SYNC_CONF_OPTS += --without-convolution\nendif\n\nifeq ($(BR2_PACKAGE_SHAIRPORT_SYNC_DBUS),y)\nSHAIRPORT_SYNC_DEPENDENCIES += libglib2\nSHAIRPORT_SYNC_CONF_OPTS += --with-dbus-interface --with-mpris-interface\nelse\nSHAIRPORT_SYNC_CONF_OPTS += --without-dbus-interface --without-mpris-interface\nendif\n\nifeq ($(BR2_PACKAGE_SHAIRPORT_SYNC_LIBSOXR),y)\nSHAIRPORT_SYNC_DEPENDENCIES += libsoxr\nSHAIRPORT_SYNC_CONF_OPTS += --with-soxr\nelse\nSHAIRPORT_SYNC_CONF_OPTS += --without-soxr\nendif\n\nifeq ($(BR2_PACKAGE_SHAIRPORT_SYNC_MQTT),y)\nSHAIRPORT_SYNC_DEPENDENCIES += avahi dbus mosquitto\nSHAIRPORT_SYNC_CONF_OPTS += --with-mqtt-client\nelse\nSHAIRPORT_SYNC_CONF_OPTS += --without-mqtt-client\nendif\n\ndefine SHAIRPORT_SYNC_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/shairport-sync \\\n\t\t$(TARGET_DIR)/usr/bin/shairport-sync\n\t$(INSTALL) -D -m 0644 $(@D)/scripts/shairport-sync.conf \\\n\t\t$(TARGET_DIR)/etc/shairport-sync.conf\nendef\n\ndefine SHAIRPORT_SYNC_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/shairport-sync/S99shairport-sync \\\n\t\t$(TARGET_DIR)/etc/init.d/S99shairport-sync\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/shapelib/Config.in",
    "content": "config BR2_PACKAGE_SHAPELIB\n\tbool \"shapelib\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  The Shapefile C Library provides the ability to write simple\n\t  C programs for reading, writing and updating (to a limited\n\t  extent) ESRI Shapefiles, and the associated attribute file\n\t  (.dbf).\n\n\t  http://shapelib.maptools.org/\n\ncomment \"shapelib needs a toolchain w/ C++, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/shapelib/shapelib.hash",
    "content": "# Locally computed\nsha256 1fc0a480982caef9e7b9423070b47750ba34cd0ba82668f2e638fab1d07adae1  shapelib-1.5.0.tar.gz\nsha256 7eb803a70990017a1c4e38a8342d7413c5dfeec3ed1ac407e15ae2c274e560ff  COPYING\nsha256 a638278f7f1cb7d0cdc73b47a6c87261b882e356a8e79922e90d44d7ef1dd2c7  web/license.html\n"
  },
  {
    "path": "package/shapelib/shapelib.mk",
    "content": "################################################################################\n#\n# shapelib\n#\n################################################################################\n\nSHAPELIB_VERSION = 1.5.0\nSHAPELIB_SITE = http://download.osgeo.org/shapelib\nSHAPELIB_LICENSE = MIT or LGPL-2.0\nSHAPELIB_LICENSE_FILES = web/license.html COPYING\nSHAPELIB_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/shared-mime-info/0001-Remove-incorrect-dependency-from-install-data-hook.patch",
    "content": "From 3bcb00e27ab09c433fdfecace0d48a6a7ed55ea8 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Fri, 22 Apr 2016 23:14:32 +0200\nSubject: [PATCH] Remove incorrect dependency from install-data-hook\n\nHaving install-binPROGRAMS as a dependency of install-data-hook is not\ncorrect, as it causes the installation of programs to be executed\ntwice, and those two installations are racing with each other, causing\nrandom installation failures.\n\nIn addition, this dependency is not needed: the install-data-hook\ncalls the update-mime-database program in one of two ways:\n\n - When cross-compiling, using the program pointed by\n   UPDATE_MIME_DATABASE, which is already built, and is not installed\n   by install-binPROGRAMS.\n\n - When compiling natively, suing the update-mime-database from the\n   build directory, so there is no need to depend on\n   install-binPROGRAMS.\n\nThis patch is similar to the patch used by the Yocto Project at\nhttp://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-support/shared-mime-info/shared-mime-info/install-data-hook.patch.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Upstream status:\nhttps://gitlab.freedesktop.org/xdg/shared-mime-info/merge_requests/18]\n---\n Makefile.am | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 6fc4f73..c318dc3 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -52,7 +52,7 @@ else\n   update_mime_database=\"$(top_builddir)/update-mime-database$(EXEEXT)\"\n endif\n \n-install-data-hook: install-binPROGRAMS\n+install-data-hook:\n if ENABLE_UPDATE_MIMEDB\n \t$(update_mime_database) -V \"$(DESTDIR)$(datadir)/mime\"\n endif\n-- \n2.6.4\n\n"
  },
  {
    "path": "package/shared-mime-info/Config.in",
    "content": "config BR2_PACKAGE_SHARED_MIME_INFO\n\tbool \"shared-mime-info\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  The shared-mime-info package contains the core\n\t  database of common types and the update-mime-database\n\t  command used to extend it.\n\n\t  https://freedesktop.org/wiki/Software/shared-mime-info/\n\ncomment \"shared-mime-info needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/shared-mime-info/shared-mime-info.hash",
    "content": "# Locally calculated\nsha256\t18b2f0fe07ed0d6f81951a5fd5ece44de9c8aeb4dc5bb20d4f595f6cc6bd403e\tshared-mime-info-1.12.tar.xz\nsha256\t8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643\tCOPYING\n"
  },
  {
    "path": "package/shared-mime-info/shared-mime-info.mk",
    "content": "################################################################################\n#\n# shared-mime-info\n#\n################################################################################\n\nSHARED_MIME_INFO_VERSION = 1.12\nSHARED_MIME_INFO_SOURCE = shared-mime-info-$(SHARED_MIME_INFO_VERSION).tar.xz\nSHARED_MIME_INFO_SITE = \\\n\thttps://gitlab.freedesktop.org/xdg/shared-mime-info/uploads/80c7f1afbcad2769f38aeb9ba6317a51\nSHARED_MIME_INFO_INSTALL_STAGING = YES\n# 0001-Remove-incorrect-dependency-from-install-data-hook.patch\nSHARED_MIME_INFO_AUTORECONF = YES\nSHARED_MIME_INFO_CONF_ENV = XMLLINT=$(HOST_DIR)/bin/xmllint\nSHARED_MIME_INFO_DEPENDENCIES = host-shared-mime-info libxml2 libglib2\nSHARED_MIME_INFO_CONF_OPTS = \\\n\t--disable-update-mimedb \\\n\t--disable-default-make-check\nHOST_SHARED_MIME_INFO_CONF_OPTS = \\\n\t--disable-update-mimedb \\\n\t--disable-default-make-check\nSHARED_MIME_INFO_LICENSE = GPL-2.0\nSHARED_MIME_INFO_LICENSE_FILES = COPYING\n\nHOST_SHARED_MIME_INFO_DEPENDENCIES = \\\n\thost-pkgconf host-intltool host-libxml2 host-libglib2\n\ndefine SHARED_MIME_INFO_INSTALL_TARGET_CMDS\n\t$(HOST_MAKE_ENV) $(SHARED_MIME_INFO_HOST_BINARY) $(STAGING_DIR)/usr/share/mime\n\t$(INSTALL) -D $(STAGING_DIR)/usr/share/mime/mime.cache $(TARGET_DIR)/usr/share/mime/mime.cache\nendef\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n\n# shared-mime-info for the host\nSHARED_MIME_INFO_HOST_BINARY = $(HOST_DIR)/bin/update-mime-database\n"
  },
  {
    "path": "package/shellinabox/0001-Makefile-disable-always-building-statically.patch",
    "content": "From c060e6f06a81ffa400266a6d0bfc58511265a16f Mon Sep 17 00:00:00 2001\nFrom: Olivier Singla <olivier.singla@gmail.com>\nDate: Thu, 4 Aug 2016 21:23:41 +0200\nSubject: [PATCH] Makefile: disable always building statically\n\nSigned-off-by: Olivier Singla <olivier.singla@gmail.com>\n---\n Makefile.am | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 7b8e7ab..5c4c71e 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -126,7 +126,7 @@ BUILT_SOURCES        = shellinabox/beep.h                                     \\\n \n shellinaboxd_LDADD   = liblogging.la                                          \\\n                        libhttp.la\n-shellinaboxd_LDFLAGS = -static\n+shellinaboxd_LDFLAGS =\n ## Added this for compatibility with older versions of autoconf/automake\n docdir               = ${datadir}/doc/${PACKAGE}\n \n-- \n2.7.4\n\n"
  },
  {
    "path": "package/shellinabox/0002-CVE-2018-16789-fix-for-broken-multipart-form-data.patch",
    "content": "From 7f47efe1717c381f86566fabe0b1ced8cb98fe8f Mon Sep 17 00:00:00 2001\nFrom: irsl <irsl@users.noreply.github.com>\nDate: Fri, 26 Oct 2018 11:51:15 +0200\nSubject: [PATCH] fix for broken multipart/form-data\n\nMalformed multipart/form-data payload results in infinite loop and thus denial of service\n[Upstream status: https://github.com/shellinabox/shellinabox/pull/446]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n libhttp/url.c | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/libhttp/url.c b/libhttp/url.c\nindex ed29475..4177871 100644\n--- a/libhttp/url.c\n+++ b/libhttp/url.c\n@@ -312,6 +312,9 @@ static void urlParsePostBody(struct URL *url,\n               }\n             }\n           }\n+        } else {\n+           warn(\"[http] broken multipart/form-data!\");\n+           break;\n         }\n       }\n       if (lastPart) {\n"
  },
  {
    "path": "package/shellinabox/Config.in",
    "content": "config BR2_PACKAGE_SHELLINABOX\n\tbool \"shellinabox\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Shell In A Box implements a web server that can export\n\t  arbitrary command line tools to a web based terminal\n\t  emulator. This emulator is accessible to any JavaScript and\n\t  CSS enabled web browser and does not require any additional\n\t  browser plugins.\n\n\t  https://github.com/shellinabox/shellinabox\n\ncomment \"shellinabox needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/shellinabox/shellinabox.hash",
    "content": "# Locally calculated\nsha256 27a5ec6c3439f87aee238c47cc56e7357a6249e5ca9ed0f044f0057ef389d81e  shellinabox-2.20.tar.gz\nsha256 04ef60ab9b83cde6f0862ea18474454477efb34c52ebce1f8d8260a398a39362  COPYING\nsha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  GPL-2\n"
  },
  {
    "path": "package/shellinabox/shellinabox.mk",
    "content": "################################################################################\n#\n# shellinabox\n#\n################################################################################\n\nSHELLINABOX_VERSION = 2.20\nSHELLINABOX_SITE = $(call github,shellinabox,shellinabox,v$(SHELLINABOX_VERSION))\nSHELLINABOX_LICENSE = GPL-2.0 with OpenSSL exception\nSHELLINABOX_LICENSE_FILES = COPYING GPL-2\nSHELLINABOX_CPE_ID_VENDOR = shellinabox_project\n\n# 0002-CVE-2018-16789-fix-for-broken-multipart-form-data.patch\nSHELLINABOX_IGNORE_CVES += CVE-2018-16789\n\n# Fetching from Github, and patching Makefile.am, so we need to autoreconf\nSHELLINABOX_AUTORECONF = YES\n\n# The OpenSSL support is supposed to be optional, but in practice,\n# with OpenSSL disabled, it fails to build. See\n# https://github.com/shellinabox/shellinabox/issues/385.\nSHELLINABOX_DEPENDENCIES = zlib openssl\nSHELLINABOX_CONF_OPTS = \\\n\t--disable-runtime-loading \\\n\t--enable-ssl\n\n# musl's implementation of utmpx is a dummy one, and some aspects of\n# it cause build failures in shellinabox\nifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)\nSHELLINABOX_CONF_OPTS += --disable-utmp\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sigrok-cli/Config.in",
    "content": "config BR2_PACKAGE_SIGROK_CLI\n\tbool \"sigrok-cli\"\n\t# libsigrok->libglib2:\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n\t# libsigrok->libzip\n\tdepends on !BR2_STATIC_LIBS\n\t# libsigrok\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n\tdepends on BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_LIBSIGROK\n\thelp\n\t  Sigrok-cli is a command-line frontend for the sigrok\n\t  software suite.\n\n\t  http://sigrok.org/wiki/Sigrok-cli\n\ncomment \"sigrok-cli needs a toolchain w/ locale, wchar, threads, dynamic library, gcc >= 4.7\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || BR2_STATIC_LIBS \\\n\t\t|| !BR2_ENABLE_LOCALE\n"
  },
  {
    "path": "package/sigrok-cli/sigrok-cli.hash",
    "content": "# Locally computed\nsha256  71d0443f36897bf565732dec206830dbea0f2789b6601cf10536b286d1140ab8  sigrok-cli-0.7.2.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/sigrok-cli/sigrok-cli.mk",
    "content": "################################################################################\n#\n# sigrok-cli\n#\n################################################################################\n\nSIGROK_CLI_VERSION = 0.7.2\nSIGROK_CLI_SITE = http://sigrok.org/download/source/sigrok-cli\nSIGROK_CLI_LICENSE = GPL-3.0+\nSIGROK_CLI_LICENSE_FILES = COPYING\nSIGROK_CLI_SELINUX_MODULES = sigrok\nSIGROK_CLI_DEPENDENCIES = host-pkgconf libsigrok\n\nifeq ($(BR2_PACKAGE_LIBSIGROKDECODE),y)\nSIGROK_CLI_CONF_OPTS += --with-libsigrokdecode\nSIGROK_CLI_DEPENDENCIES += libsigrokdecode\nelse\nSIGROK_CLI_CONF_OPTS += --with-libsigrokdecode=NO\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/siproxd/Config.in",
    "content": "config BR2_PACKAGE_SIPROXD\n\tbool \"siproxd\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBOSIP2\n\tselect BR2_PACKAGE_LIBTOOL\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  Siproxd is a proxy/masquerading daemon for SIP (Session\n\t  Initiation Protocol), which is used in IP telephony. It\n\t  handles registrations of SIP clients on a private IP network\n\t  and performs rewriting of the SIP message bodies to make SIP\n\t  connections work via a masquerading firewall (NAT). It allows\n\t  SIP software clients (like kphone, linphone) or SIP hardware\n\t  clients (Voice over IP phones which are SIP-compatible, such\n\t  as those from Cisco, Grandstream or Snom) to work behind an IP\n\t  masquerading firewall or NAT router.\n\n\t  http://siproxd.sourceforge.net/\n\ncomment \"siproxd needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/siproxd/siproxd.hash",
    "content": "# Locally calculated after checking pgp signature from:\n# https://downloads.sourceforge.net/project/siproxd/siproxd/0.8.3/siproxd-0.8.3.tar.gz.asc\nsha256  9a6d7a6bb6fff162775b1e1fb7018de9c69642cbf8626185dc6ffceeeba07736  siproxd-0.8.3.tar.gz\n\n# https://sourceforge.net/projects/siproxd/files/siproxd/0.8.3/\nsha1  d13d4a05b8a16dbe20d04b99b535610e49050d9d  siproxd-0.8.3.tar.gz\nmd5  9a9d2c89e5f0c59fdde9444a66d8372c  siproxd-0.8.3.tar.gz\n\n# Hash for license files:\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/siproxd/siproxd.mk",
    "content": "################################################################################\n#\n# siproxd\n#\n################################################################################\n\nSIPROXD_VERSION = 0.8.3\nSIPROXD_SITE = https://downloads.sourceforge.net/project/siproxd/siproxd/$(SIPROXD_VERSION)\n\nSIPROXD_LICENSE = GPL-2.0+\nSIPROXD_LICENSE_FILES = COPYING\n\nSIPROXD_DEPENDENCIES = libosip2 libtool sqlite\n\nSIPROXD_CONF_OPTS = --without-included-ltdl\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sispmctl/Config.in",
    "content": "config BR2_PACKAGE_SISPMCTL\n\tbool \"sispmctl\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBUSB\n\tselect BR2_PACKAGE_LIBUSB_COMPAT\n\thelp\n\t  sispmctl is an application enabling the use of the GEMBIRD\n\t  SiS-PM and mSiS(sispm) USB-controlled power-outlet device\n\t  under Linux. Note that the device is also sold under\n\t  different Names, i.e. as \"IntelliPlug\" in Germany.\n\n\t  http://sispmctl.sourceforge.net/\n\ncomment \"sispmctl needs a toolchain w/ threads, wchar, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/sispmctl/sispmctl.hash",
    "content": "# Locally computed:\nsha256  6a9ec7125e8c01bb45d4a3b56f07fb41fc437020c8dcd8c0f29ebb98dc55a647  sispmctl-4.9.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/sispmctl/sispmctl.mk",
    "content": "################################################################################\n#\n# sispmctl\n#\n################################################################################\n\nSISPMCTL_VERSION = 4.9\nSISPMCTL_SITE = http://downloads.sourceforge.net/project/sispmctl/sispmctl/sispmctl-$(SISPMCTL_VERSION)\nSISPMCTL_LICENSE = GPL-2.0+\nSISPMCTL_LICENSE_FILES = COPYING\nSISPMCTL_DEPENDENCIES = libusb-compat\n\nSISPMCTL_CONF_OPTS = --enable-webless\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/skalibs/Config.in",
    "content": "config BR2_PACKAGE_SKALIBS\n\tbool \"skalibs\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  skalibs is a package centralizing the FOSS C development\n\t  files used for building all software at skarnet.org:\n\t  it contains essentially general-purpose libraries.\n\n\t  http://skarnet.org/software/skalibs/\n"
  },
  {
    "path": "package/skalibs/skalibs.hash",
    "content": "# Locally generated\nsha256  b780b0ae650dda0c3ec5f8975174998af2d24c2a2e2be669b1bab46e73b1464d  skalibs-2.10.0.3.tar.gz\nsha256  adecb8bedfaae27fcfe65ecb3ef0e2e71aa2a2b49dc21886a200bc677d93e6ec  COPYING\n"
  },
  {
    "path": "package/skalibs/skalibs.mk",
    "content": "################################################################################\n#\n# skalibs\n#\n################################################################################\n\nSKALIBS_VERSION = 2.10.0.3\nSKALIBS_SITE = http://skarnet.org/software/skalibs\nSKALIBS_LICENSE = ISC\nSKALIBS_LICENSE_FILES = COPYING\nSKALIBS_INSTALL_STAGING = YES\n\nSKALIBS_CONF_OPTS = \\\n\t--prefix=/ \\\n\t--with-default-path=/sbin:/usr/sbin:/bin:/usr/bin \\\n\t--with-sysdep-devurandom=yes \\\n\t$(SHARED_STATIC_LIBS_OPTS)\n\ndefine SKALIBS_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(SKALIBS_CONF_OPTS))\nendef\n\ndefine SKALIBS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine SKALIBS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\n\trm -rf $(TARGET_DIR)/usr/lib/skalibs\nendef\n\ndefine SKALIBS_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install\nendef\n\nHOST_SKALIBS_CONF_OPTS = \\\n\t--prefix=$(HOST_DIR) \\\n\t--disable-static \\\n\t--enable-shared \\\n\t--disable-allstatic\n\ndefine HOST_SKALIBS_CONFIGURE_CMDS\n\t(cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_SKALIBS_CONF_OPTS))\nendef\n\ndefine HOST_SKALIBS_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_SKALIBS_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/skeleton/Config.in",
    "content": "config BR2_PACKAGE_SKELETON\n\tbool\n\tdefault y\n\nconfig BR2_PACKAGE_HAS_SKELETON\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_SKELETON\n\tstring\n"
  },
  {
    "path": "package/skeleton/skeleton.mk",
    "content": "################################################################################\n#\n# skeleton\n#\n################################################################################\n\n# The skeleton can't depend on the toolchain, since all packages depends on the\n# skeleton and the toolchain is a target package, as is skeleton.\n# Hence, skeleton would depends on the toolchain and the toolchain would depend\n# on skeleton.\nSKELETON_ADD_TOOLCHAIN_DEPENDENCY = NO\nSKELETON_ADD_SKELETON_DEPENDENCY = NO\n\n# We create a compatibility symlink in case a post-build script still\n# uses $(HOST_DIR)/usr\ndefine HOST_SKELETON_INSTALL_CMDS\n\t$(Q)ln -snf . $(HOST_DIR)/usr\n\t$(Q)mkdir -p $(HOST_DIR)/lib\n\t$(Q)mkdir -p $(HOST_DIR)/include\n\t$(Q)case $(HOSTARCH) in \\\n\t\t(*64) ln -snf lib $(HOST_DIR)/lib64;; \\\n\t\t(*)   ln -snf lib $(HOST_DIR)/lib32;; \\\n\tesac\nendef\n\n$(eval $(virtual-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/skeleton-custom/Config.in",
    "content": "config BR2_PACKAGE_SKELETON_CUSTOM\n\tbool\n\tselect BR2_PACKAGE_HAS_SKELETON\n\nconfig BR2_PACKAGE_PROVIDES_SKELETON\n\tdefault \"skeleton-custom\" if BR2_PACKAGE_SKELETON_CUSTOM\n"
  },
  {
    "path": "package/skeleton-custom/skeleton-custom.mk",
    "content": "################################################################################\n#\n# skeleton-custom\n#\n################################################################################\n\n# The skeleton can't depend on the toolchain, since all packages depends on the\n# skeleton and the toolchain is a target package, as is skeleton.\n# Hence, skeleton would depends on the toolchain and the toolchain would depend\n# on skeleton.\nSKELETON_CUSTOM_ADD_TOOLCHAIN_DEPENDENCY = NO\nSKELETON_CUSTOM_ADD_SKELETON_DEPENDENCY = NO\n\nSKELETON_CUSTOM_PROVIDES = skeleton\n\nSKELETON_CUSTOM_INSTALL_STAGING = YES\n\nSKELETON_CUSTOM_PATH = $(call qstrip,$(BR2_ROOTFS_SKELETON_CUSTOM_PATH))\n\nifeq ($(BR2_PACKAGE_SKELETON_CUSTOM)$(BR_BUILDING),yy)\nifeq ($(SKELETON_CUSTOM_PATH),)\n$(error No path specified for the custom skeleton)\nendif\nendif\n\n# For a merged /usr, ensure that /lib, /bin and /sbin and their /usr\n# counterparts are appropriately setup as symlinks ones to the others.\nifeq ($(BR2_ROOTFS_MERGED_USR),y)\nSKELETON_CUSTOM_NOT_MERGED_USR_DIRS = \\\n\t$(shell support/scripts/check-merged-usr.sh $(SKELETON_CUSTOM_PATH))\nendif # merged /usr\n\nifeq ($(BR2_PACKAGE_SKELETON_CUSTOM)$(BR_BUILDING),yy)\nifneq ($(SKELETON_CUSTOM_NOT_MERGED_USR_DIRS),)\n$(error The custom skeleton in $(SKELETON_CUSTOM_PATH) is not \\\n\tusing a merged /usr for the following directories: \\\n\t$(SKELETON_CUSTOM_NOT_MERGED_USR_DIRS))\nendif\nendif\n\n# The target-dir-warning file and the lib{32,64} symlinks are the only\n# things we customise in the custom skeleton.\ndefine SKELETON_CUSTOM_INSTALL_TARGET_CMDS\n\t$(call SYSTEM_RSYNC,$(SKELETON_CUSTOM_PATH),$(TARGET_DIR))\n\t$(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(TARGET_DIR))\n\t$(call SYSTEM_LIB_SYMLINK,$(TARGET_DIR))\n\t$(INSTALL) -m 0644 support/misc/target-dir-warning.txt \\\n\t\t$(TARGET_DIR_WARNING_FILE)\nendef\n\n# For the staging dir, we don't really care what we install, but we\n# need the /lib and /usr/lib appropriately setup. Since we ensure,\n# above, that they are correct in the skeleton, we can simply copy the\n# skeleton to staging.\ndefine SKELETON_CUSTOM_INSTALL_STAGING_CMDS\n\t$(call SYSTEM_RSYNC,$(SKELETON_CUSTOM_PATH),$(STAGING_DIR))\n\t$(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(STAGING_DIR))\n\t$(call SYSTEM_LIB_SYMLINK,$(STAGING_DIR))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/skeleton-init-common/Config.in",
    "content": "config BR2_PACKAGE_SKELETON_INIT_COMMON\n\tbool\n"
  },
  {
    "path": "package/skeleton-init-common/skeleton-init-common.mk",
    "content": "################################################################################\n#\n# skeleton-init-common\n#\n################################################################################\n\n# The skeleton can't depend on the toolchain, since all packages depends on the\n# skeleton and the toolchain is a target package, as is skeleton.\n# Hence, skeleton would depends on the toolchain and the toolchain would depend\n# on skeleton.\nSKELETON_INIT_COMMON_ADD_TOOLCHAIN_DEPENDENCY = NO\nSKELETON_INIT_COMMON_ADD_SKELETON_DEPENDENCY = NO\n\n# The skeleton also handles the merged /usr case in the sysroot\nSKELETON_INIT_COMMON_INSTALL_STAGING = YES\n\nSKELETON_INIT_COMMON_PATH = system/skeleton\n\ndefine SKELETON_INIT_COMMON_INSTALL_TARGET_CMDS\n\t$(call SYSTEM_RSYNC,$(SKELETON_INIT_COMMON_PATH),$(TARGET_DIR))\n\t$(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(TARGET_DIR))\n\t$(call SYSTEM_LIB_SYMLINK,$(TARGET_DIR))\n\t$(SED) 's,@PATH@,$(BR2_SYSTEM_DEFAULT_PATH),' $(TARGET_DIR)/etc/profile\n\t$(INSTALL) -m 0644 support/misc/target-dir-warning.txt \\\n\t\t$(TARGET_DIR_WARNING_FILE)\nendef\n\ndefine SKELETON_INIT_CLEANUP\n\tboard/common/cleanup.sh $(TARGET_DIR)\n\tboard=$(shell basename $(shell dirname $(TARGET_DIR))) \\\n\ttest -x board/$${board}/cleanup.sh && board/$${board}/cleanup.sh $(TARGET_DIR) || true\nendef\nSKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_CLEANUP\n\n# We don't care much about what goes in staging, as long as it is\n# correctly setup for merged/non-merged /usr. The simplest is to\n# fill it in with the content of the skeleton.\ndefine SKELETON_INIT_COMMON_INSTALL_STAGING_CMDS\n\t$(call SYSTEM_RSYNC,$(SKELETON_INIT_COMMON_PATH),$(STAGING_DIR))\n\t$(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(STAGING_DIR))\n\t$(call SYSTEM_LIB_SYMLINK,$(STAGING_DIR))\n\t$(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/include\nendef\n\nSKELETON_INIT_COMMON_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME))\nSKELETON_INIT_COMMON_ISSUE = $(call qstrip,$(BR2_TARGET_GENERIC_ISSUE))\nSKELETON_INIT_COMMON_ROOT_PASSWD = $(call qstrip,$(BR2_TARGET_GENERIC_ROOT_PASSWD))\nSKELETON_INIT_COMMON_PASSWD_METHOD = $(call qstrip,$(BR2_TARGET_GENERIC_PASSWD_METHOD))\nSKELETON_INIT_COMMON_BIN_SH = $(call qstrip,$(BR2_SYSTEM_BIN_SH))\n\nifneq ($(SKELETON_INIT_COMMON_HOSTNAME),)\nSKELETON_INIT_COMMON_HOSTS_LINE = $(SKELETON_INIT_COMMON_HOSTNAME)\nSKELETON_INIT_COMMON_SHORT_HOSTNAME = $(firstword $(subst ., ,$(SKELETON_INIT_COMMON_HOSTNAME)))\nifneq ($(SKELETON_INIT_COMMON_HOSTNAME),$(SKELETON_INIT_COMMON_SHORT_HOSTNAME))\nSKELETON_INIT_COMMON_HOSTS_LINE += $(SKELETON_INIT_COMMON_SHORT_HOSTNAME)\nendif\ndefine SKELETON_INIT_COMMON_SET_HOSTNAME\n\tmkdir -p $(TARGET_DIR)/etc\n    # Following test commands are required due to the fact that /etc/{hosts,hostname} are symlinks in thingOS\n\ttest -f $(TARGET_DIR)/etc/hostname && \\\n\t        echo \"$(SKELETON_INIT_COMMON_HOSTNAME)\" > $(TARGET_DIR)/etc/hostname || true\n\ttest -f $(TARGET_DIR)/etc/hosts && \\\n\t\t$(SED) '$$a \\127.0.1.1\\t$(SKELETON_INIT_COMMON_HOSTS_LINE)' \\\n\t\t-e '/^127.0.1.1/d' $(TARGET_DIR)/etc/hosts || true\nendef\nSKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_HOSTNAME\nendif\n\nifneq ($(SKELETON_INIT_COMMON_ISSUE),)\ndefine SKELETON_INIT_COMMON_SET_ISSUE\n\tmkdir -p $(TARGET_DIR)/etc\n    # Following test command is required due to the fact that /etc/issue is a symlink in thingOS\n\ttest -f $(TARGET_DIR)/etc/issue && \\\n\t\techo \"$(SKELETON_INIT_COMMON_ISSUE)\" > $(TARGET_DIR)/etc/issue || true\nendef\nSKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_ISSUE\nendif\n\nifeq ($(BR2_TARGET_ENABLE_ROOT_LOGIN),y)\nifneq ($(filter $$1$$% $$5$$% $$6$$%,$(SKELETON_INIT_COMMON_ROOT_PASSWD)),)\nSKELETON_INIT_COMMON_ROOT_PASSWORD = '$(SKELETON_INIT_COMMON_ROOT_PASSWD)'\nelse ifneq ($(SKELETON_INIT_COMMON_ROOT_PASSWD),)\n# This variable will only be evaluated in the finalize stage, so we can\n# be sure that host-mkpasswd will have already been built by that time.\nSKELETON_INIT_COMMON_ROOT_PASSWORD = \"`$(MKPASSWD) -m \"$(SKELETON_INIT_COMMON_PASSWD_METHOD)\" \"$(SKELETON_INIT_COMMON_ROOT_PASSWD)\"`\"\nendif\nelse # !BR2_TARGET_ENABLE_ROOT_LOGIN\nSKELETON_INIT_COMMON_ROOT_PASSWORD = \"*\"\nendif\ndefine SKELETON_INIT_COMMON_SET_ROOT_PASSWD\n    # Following test command is required due to the fact that /etc/shadow is a symlink in thingOS\n\ttest -f $(TARGET_DIR)/etc/shadow && $(SED) s,^root:[^:]*:,root:$(SKELETON_INIT_COMMON_ROOT_PASSWORD):, $(TARGET_DIR)/etc/shadow || true\nendef\nSKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_ROOT_PASSWD\n\nifeq ($(BR2_SYSTEM_BIN_SH_NONE),y)\ndefine SKELETON_INIT_COMMON_SET_BIN_SH\n\trm -f $(TARGET_DIR)/bin/sh\nendef\nelse\n# Add /bin/sh to /etc/shells otherwise some login tools like dropbear\n# can reject the user connection. See man shells.\ndefine SKELETON_INIT_COMMON_ADD_SH_TO_SHELLS\n\tgrep -qsE '^/bin/sh$$' $(TARGET_DIR)/etc/shells \\\n\t\t|| echo \"/bin/sh\" >> $(TARGET_DIR)/etc/shells\nendef\nSKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_ADD_SH_TO_SHELLS\nifneq ($(SKELETON_INIT_COMMON_BIN_SH),)\ndefine SKELETON_INIT_COMMON_SET_BIN_SH\n\tln -sf $(SKELETON_INIT_COMMON_BIN_SH) $(TARGET_DIR)/bin/sh\n\t$(SED) '/^root:/s,[^/]*$$,$(SKELETON_INIT_COMMON_BIN_SH),' \\\n\t\t$(TARGET_DIR)/etc/passwd\nendef\nendif\nendif\nSKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_BIN_SH\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/skeleton-init-none/Config.in",
    "content": "config BR2_PACKAGE_SKELETON_INIT_NONE\n\tbool\n\tselect BR2_PACKAGE_HAS_SKELETON\n\tselect BR2_PACKAGE_SKELETON_INIT_COMMON\n\nconfig BR2_PACKAGE_PROVIDES_SKELETON\n\tdefault \"skeleton-init-none\" if BR2_PACKAGE_SKELETON_INIT_NONE\n"
  },
  {
    "path": "package/skeleton-init-none/skeleton-init-none.mk",
    "content": "################################################################################\n#\n# skeleton-init-none\n#\n################################################################################\n\n# The skeleton can't depend on the toolchain, since all packages depends on the\n# skeleton and the toolchain is a target package, as is skeleton.\n# Hence, skeleton would depends on the toolchain and the toolchain would depend\n# on skeleton.\nSKELETON_INIT_NONE_ADD_TOOLCHAIN_DEPENDENCY = NO\nSKELETON_INIT_NONE_ADD_SKELETON_DEPENDENCY = NO\n\nSKELETON_INIT_NONE_DEPENDENCIES = skeleton-init-common\n\nSKELETON_INIT_NONE_PROVIDES = skeleton\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/skeleton-init-openrc/Config.in",
    "content": "config BR2_PACKAGE_SKELETON_INIT_OPENRC\n\tbool\n\tselect BR2_PACKAGE_HAS_SKELETON\n\tselect BR2_PACKAGE_SKELETON_INIT_COMMON\n\nconfig BR2_PACKAGE_PROVIDES_SKELETON\n\tdefault \"skeleton-init-openrc\" if BR2_PACKAGE_SKELETON_INIT_OPENRC\n"
  },
  {
    "path": "package/skeleton-init-openrc/skeleton/etc/conf.d/.empty",
    "content": ""
  },
  {
    "path": "package/skeleton-init-openrc/skeleton/etc/fstab",
    "content": "# <file system>\t<mount pt>\t<type>\t<options>\t<dump>\t<pass>\n/dev/root\t/\t\text2\tro,noauto\t0\t0\ntmpfs\t\t/tmp\t\ttmpfs\tmode=1777\t0\t0\ntmpfs\t\t/run\t\ttmpfs\tmode=0755,nosuid,nodev\t0\t0\n"
  },
  {
    "path": "package/skeleton-init-openrc/skeleton/etc/runlevels/default/.empty",
    "content": ""
  },
  {
    "path": "package/skeleton-init-openrc/skeleton-init-openrc.mk",
    "content": "################################################################################\n#\n# skeleton-init-openrc\n#\n################################################################################\n\n# The skeleton can't depend on the toolchain, since all packages depends on the\n# skeleton and the toolchain is a target package, as is skeleton.\n# Hence, skeleton would depends on the toolchain and the toolchain would depend\n# on skeleton.\nSKELETON_INIT_OPENRC_ADD_TOOLCHAIN_DEPENDENCY = NO\nSKELETON_INIT_OPENRC_ADD_SKELETON_DEPENDENCY = NO\n\nSKELETON_INIT_OPENRC_DEPENDENCIES = skeleton-init-common\n\nSKELETON_INIT_OPENRC_PROVIDES = skeleton\n\nifeq ($(BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW),y)\n# Comment /dev/root entry in fstab. When openrc does not find fstab entry for\n# \"/\", it will try to remount \"/\" as \"rw\".\ndefine SKELETON_INIT_OPENRC_ROOT_RO_OR_RW\n\t$(SED) '\\:^/dev/root[[:blank:]]:s/^/# /' $(TARGET_DIR)/etc/fstab\nendef\nelse\n# Uncomment /dev/root entry in fstab which has \"ro\" option so openrc notices\n# it and doesn't remount root to rw.\ndefine SKELETON_INIT_OPENRC_ROOT_RO_OR_RW\n\t$(SED) '\\:^#[[:blank:]]*/dev/root[[:blank:]]:s/^# //' $(TARGET_DIR)/etc/fstab\nendef\nendif # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW\n\ndefine SKELETON_INIT_OPENRC_INSTALL_TARGET_CMDS\n\t$(call SYSTEM_RSYNC,$(SKELETON_INIT_OPENRC_PKGDIR)/skeleton,$(TARGET_DIR))\n\t$(SKELETON_INIT_OPENRC_ROOT_RO_OR_RW)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/skeleton-init-systemd/Config.in",
    "content": "config BR2_PACKAGE_SKELETON_INIT_SYSTEMD\n\tbool\n\tselect BR2_PACKAGE_HAS_SKELETON\n\tselect BR2_PACKAGE_SKELETON_INIT_COMMON\n\nconfig BR2_PACKAGE_PROVIDES_SKELETON\n\tdefault \"skeleton-init-systemd\" if BR2_PACKAGE_SKELETON_INIT_SYSTEMD\n"
  },
  {
    "path": "package/skeleton-init-systemd/skeleton-init-systemd.mk",
    "content": "################################################################################\n#\n# skeleton-init-systemd\n#\n################################################################################\n\n# The skeleton can't depend on the toolchain, since all packages depends on the\n# skeleton and the toolchain is a target package, as is skeleton.\n# Hence, skeleton would depends on the toolchain and the toolchain would depend\n# on skeleton.\nSKELETON_INIT_SYSTEMD_ADD_TOOLCHAIN_DEPENDENCY = NO\nSKELETON_INIT_SYSTEMD_ADD_SKELETON_DEPENDENCY = NO\n\nSKELETON_INIT_SYSTEMD_DEPENDENCIES = skeleton-init-common\n\nSKELETON_INIT_SYSTEMD_PROVIDES = skeleton\n\nifeq ($(BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW),y)\n\ndefine SKELETON_INIT_SYSTEMD_ROOT_RO_OR_RW\n\techo \"/dev/root / auto rw 0 1\" >$(TARGET_DIR)/etc/fstab\nendef\n\nelse\n\n# On a R/O rootfs, /var is a tmpfs filesystem. So, at build time, we\n# redirect /var to the \"factory settings\" location. Just before the\n# filesystem gets created, the /var symlink will be replaced with\n# a real (but empty) directory, and the \"factory files\" will be copied\n# back there by the tmpfiles.d mechanism.\ndefine SKELETON_INIT_SYSTEMD_ROOT_RO_OR_RW\n\tmkdir -p $(TARGET_DIR)/etc/systemd/tmpfiles.d\n\techo \"/dev/root / auto ro 0 1\" >$(TARGET_DIR)/etc/fstab\n\techo \"tmpfs /var tmpfs mode=1777 0 0\" >>$(TARGET_DIR)/etc/fstab\nendef\n\ndefine SKELETON_INIT_SYSTEMD_PRE_ROOTFS_VAR\n\trm -rf $(TARGET_DIR)/usr/share/factory/var\n\tmv $(TARGET_DIR)/var $(TARGET_DIR)/usr/share/factory/var\n\tmkdir -p $(TARGET_DIR)/var\n\tfor i in $(TARGET_DIR)/usr/share/factory/var/* \\\n\t\t $(TARGET_DIR)/usr/share/factory/var/lib/* \\\n\t\t $(TARGET_DIR)/usr/share/factory/var/lib/systemd/*; do \\\n\t\t[ -e \"$${i}\" ] || continue; \\\n\t\tj=\"$${i#$(TARGET_DIR)/usr/share/factory}\"; \\\n\t\tif [ -L \"$${i}\" ]; then \\\n\t\t\tprintf \"L+! %s - - - - %s\\n\" \\\n\t\t\t\t\"$${j}\" \"../usr/share/factory/$${j}\" \\\n\t\t\t|| exit 1; \\\n\t\telse \\\n\t\t\tprintf \"C! %s - - - -\\n\" \"$${j}\" \\\n\t\t\t|| exit 1; \\\n\t\tfi; \\\n\tdone >$(TARGET_DIR)/etc/tmpfiles.d/var-factory.conf\nendef\nSKELETON_INIT_SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SKELETON_INIT_SYSTEMD_PRE_ROOTFS_VAR\n\nendif\n\ndefine SKELETON_INIT_SYSTEMD_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/home\n\tmkdir -p $(TARGET_DIR)/srv\n\tmkdir -p $(TARGET_DIR)/var\n\tln -s ../run $(TARGET_DIR)/var/run\n\t$(SKELETON_INIT_SYSTEMD_ROOT_RO_OR_RW)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/skeleton-init-sysv/Config.in",
    "content": "config BR2_PACKAGE_SKELETON_INIT_SYSV\n\tbool\n\tselect BR2_PACKAGE_HAS_SKELETON\n\tselect BR2_PACKAGE_SKELETON_INIT_COMMON\n\nconfig BR2_PACKAGE_PROVIDES_SKELETON\n\tdefault \"skeleton-init-sysv\" if BR2_PACKAGE_SKELETON_INIT_SYSV\n"
  },
  {
    "path": "package/skeleton-init-sysv/skeleton/dev/pts/.empty",
    "content": ""
  },
  {
    "path": "package/skeleton-init-sysv/skeleton/dev/shm/.empty",
    "content": ""
  },
  {
    "path": "package/skeleton-init-sysv/skeleton/etc/fstab",
    "content": "# <file system>\t<mount pt>\t<type>\t<options>\t<dump>\t<pass>\n/dev/root\t/\t\text2\trw,noauto\t0\t1\nproc\t\t/proc\t\tproc\tdefaults\t0\t0\ndevpts\t\t/dev/pts\tdevpts\tdefaults,gid=5,mode=620,ptmxmode=0666\t0\t0\ntmpfs\t\t/dev/shm\ttmpfs\tmode=0777\t0\t0\ntmpfs\t\t/tmp\t\ttmpfs\tmode=1777\t0\t0\ntmpfs\t\t/run\t\ttmpfs\tmode=0755,nosuid,nodev\t0\t0\nsysfs\t\t/sys\t\tsysfs\tdefaults\t0\t0\n"
  },
  {
    "path": "package/skeleton-init-sysv/skeleton-init-sysv.mk",
    "content": "################################################################################\n#\n# skeleton-init-sysv\n#\n################################################################################\n\n# The skeleton can't depend on the toolchain, since all packages depends on the\n# skeleton and the toolchain is a target package, as is skeleton.\n# Hence, skeleton would depends on the toolchain and the toolchain would depend\n# on skeleton.\nSKELETON_INIT_SYSV_ADD_TOOLCHAIN_DEPENDENCY = NO\nSKELETON_INIT_SYSV_ADD_SKELETON_DEPENDENCY = NO\n\nSKELETON_INIT_SYSV_DEPENDENCIES = skeleton-init-common\n\nSKELETON_INIT_SYSV_PROVIDES = skeleton\n\ndefine SKELETON_INIT_SYSV_INSTALL_TARGET_CMDS\n\t$(call SYSTEM_RSYNC,$(SKELETON_INIT_SYSV_PKGDIR)/skeleton,$(TARGET_DIR))\nendef\n\n# enable/disable swapon/off calls depending on availability of the commands\ndefine SKELETON_INIT_SYSV_SWAPON_SWAPOFF_INITTAB\n\tif [ -x $(TARGET_DIR)/sbin/swapon -a -x $(TARGET_DIR)/sbin/swapoff ]; then \\\n\t\t$(SED) '/^#.*\\/sbin\\/swap/s/^#\\+[[:blank:]]*//' $(TARGET_DIR)/etc/inittab; \\\n\telse \\\n\t\t$(SED) '/^[^#].*\\/sbin\\/swap/s/^/#/' $(TARGET_DIR)/etc/inittab; \\\n\tfi\nendef\n\nSKELETON_INIT_SYSV_TARGET_FINALIZE_HOOKS += SKELETON_INIT_SYSV_SWAPON_SWAPOFF_INITTAB\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/sl/Config.in",
    "content": "config BR2_PACKAGE_SL\n\tbool \"sl\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  SL (Steam Locomotive) runs across your terminal when you\n\t  type \"sl\" as you meant to type \"ls\". It's just a joke\n\t  command, and not useful at all.\n\n\t  https://github.com/mtoyoda/sl\n"
  },
  {
    "path": "package/sl/sl.hash",
    "content": "# Locally calculated\nsha256  1e5996757f879c81f202a18ad8e982195cf51c41727d3fea4af01fdcbbb5563a  sl-5.02.tar.gz\nsha256  72c7d262e2c9ddf019edc90af852a01a410338efff4e75e1c005b77ada4be7c4  LICENSE\n"
  },
  {
    "path": "package/sl/sl.mk",
    "content": "################################################################################\n#\n# sl\n#\n################################################################################\n\nSL_VERSION = 5.02\nSL_SITE = $(call github,mtoyoda,sl,$(SL_VERSION))\nSL_LICENSE = Custom\nSL_LICENSE_FILES = LICENSE\nSL_DEPENDENCIES = ncurses\n\ndefine SL_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine SL_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/sl $(TARGET_DIR)/usr/bin/sl\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/slang/0001-slsh-libs.patch",
    "content": "Link against sources instead of installation paths that aren't DESTDIRed.\nPatch taken from gentoo portage, upstream status unknown, author\nprobably Diego Pettenò.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n[Bernd: rebased against 2.3.1a]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- a/slsh/Makefile.in\n+++ b/slsh/Makefile.in\n@@ -92,7 +92,7 @@\n $(OBJDIR)/slsh_exe: $(OBJDIR)/slsh.o $(OBJDIR)/readline.o\n    $(CC) $(CFLAGS) $(OBJDIR)/slsh.o $(OBJDIR)/readline.o -o $(OBJDIR)/slsh_exe $(LDFLAGS) $(DLINK_FLAGS) $(SRC_LIBS)\n $(OBJDIR)/slsh: $(OBJDIR)/slsh.o $(OBJDIR)/readline.o\n-\t$(CC) $(CFLAGS) $(OBJDIR)/slsh.o $(OBJDIR)/readline.o -o $(OBJDIR)/slsh $(LDFLAGS) $(DLINK_FLAGS) $(INST_LIBS)\n+\t$(CC) $(CFLAGS) $(OBJDIR)/slsh.o $(OBJDIR)/readline.o -o $(OBJDIR)/slsh $(LDFLAGS) $(DLINK_FLAGS) $(SRC_LIBS)\n $(OBJDIR)/slsh.o: $(OBJDIR_TSTAMP) slsh.c slsh.h config.h Makefile\n    cd $(OBJDIR) && $(CC) $(SLANG_SRCINC) $(CFLAGS) -c $(DEFS) $(SRCDIR)/slsh.c\n $(OBJDIR)/readline.o: $(OBJDIR_TSTAMP) readline.c slsh.h config.h Makefile\n"
  },
  {
    "path": "package/slang/Config.in",
    "content": "config BR2_PACKAGE_SLANG\n\tbool \"slang\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Multi-platform console display library.\n\n\t  http://www.jedsoft.org/slang/index.html\n"
  },
  {
    "path": "package/slang/slang.hash",
    "content": "# sha1 from http://www.jedsoft.org/releases/slang/, sha256 locally computed\nsha1 bbf7f2dcc14e7c7fca40868fd4b411a2bd9e2655 slang-2.3.2.tar.bz2\nsha256 fc9e3b0fc4f67c3c1f6d43c90c16a5c42d117b8e28457c5b46831b8b5d3ae31a slang-2.3.2.tar.bz2\n\n# License file, locally computed\nsha256 ff05a90962e7773f8bdc47b2a9585130526039102759b524c1dffbd57cfe469b  COPYING\n"
  },
  {
    "path": "package/slang/slang.mk",
    "content": "################################################################################\n#\n# slang\n#\n################################################################################\n\nSLANG_VERSION = 2.3.2\nSLANG_SOURCE = slang-$(SLANG_VERSION).tar.bz2\nSLANG_SITE = http://www.jedsoft.org/releases/slang\nSLANG_LICENSE = GPL-2.0+\nSLANG_LICENSE_FILES = COPYING\nSLANG_INSTALL_STAGING = YES\nSLANG_CONF_OPTS = --with-onig=no\nSLANG_MAKE = $(MAKE1)\n\n# Racy and we don't have/do libtermcap\ndefine SLANG_DISABLE_TERMCAP\n\t$(SED) '/^TERMCAP=/s:=.*:=:' $(@D)/configure\nendef\nSLANG_POST_PATCH_HOOKS += SLANG_DISABLE_TERMCAP\n\n# Absolute path hell, sigh...\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nSLANG_CONF_OPTS += --with-png=$(STAGING_DIR)/usr\nSLANG_DEPENDENCIES += libpng\nelse\nSLANG_CONF_OPTS += --with-png=no\nendif\nifeq ($(BR2_PACKAGE_PCRE),y)\nSLANG_CONF_OPTS += --with-pcre=$(STAGING_DIR)/usr\nSLANG_DEPENDENCIES += pcre\nelse\nSLANG_CONF_OPTS += --with-pcre=no\nendif\nifeq ($(BR2_PACKAGE_ZLIB),y)\nSLANG_CONF_OPTS += --with-z=$(STAGING_DIR)/usr\nSLANG_DEPENDENCIES += zlib\nelse\nSLANG_CONF_OPTS += --with-z=no\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nSLANG_DEPENDENCIES += ncurses\nSLANG_CONF_ENV += ac_cv_path_nc5config=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS)\nelse\nSLANG_CONF_OPTS += ac_cv_path_nc5config=no\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nSLANG_CONF_OPTS += --with-readline=gnu\nSLANG_DEPENDENCIES += readline\nifeq ($(BR2_STATIC_LIBS),y)\nSLANG_CONF_ENV += LIBS=\"`$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) --libs`\"\nendif\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nSLANG_MAKE_OPTS = static\nSLANG_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install-static\nSLANG_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-static\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/slirp/Config.in",
    "content": "config BR2_PACKAGE_SLIRP\n\tbool \"slirp\"\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  libslirp is a user-mode networking library used by virtual\n\t  machines, containers or various tools.\n\n\t  https://gitlab.freedesktop.org/slirp/libslirp/\n\n\t  NOTE:\n\t  This package has some history of a unique kind:\n\t    - originally developped as 'slirp' by Danny Gasparovski, and\n\t      seemingly abandonned (developper /disapeared/)\n\t    - then re-maintained at sourceforge by \"Kelly\", up to some\n\t      time around 2009: http://slirp.sourceforge.net/\n\t    - during that period, QEMU (Fabrice BELLARD) forked the code\n\t      and included it in QEMU\n\t    - and it was imported from this breed by the Spice project\n\t      around May 2009 which archived it in 2012\n\t    - So we switched to\n\t      https://gitlab.freedesktop.org/slirp/libslirp\n\ncomment \"slirp needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/slirp/slirp.hash",
    "content": "# Locally computed:\nsha256  358ce8b6ea59ec9deac937cc754f0115b992839e7b0cddf30ffb8f77dc21da82  libslirp-v4.7.0.tar.bz2\nsha256  b28aecf4796a6a22054167f0a976de13d9db335669d37afd2dc7ea4c335e1e13  COPYRIGHT\n"
  },
  {
    "path": "package/slirp/slirp.mk",
    "content": "################################################################################\n#\n# slirp\n#\n################################################################################\n\nSLIRP_VERSION = 4.7.0\nSLIRP_SOURCE = libslirp-v$(SLIRP_VERSION).tar.bz2\nSLIRP_SITE = https://gitlab.freedesktop.org/slirp/libslirp/-/archive/v$(SLIRP_VERSION)\nSLIRP_LICENSE = BSD-3-Clause\nSLIRP_LICENSE_FILES = COPYRIGHT\nSLIRP_CPE_ID_VENDOR = libslirp_project\nSLIRP_CPE_ID_PRODUCT = libslirp\nSLIRP_INSTALL_STAGING = YES\nSLIRP_DEPENDENCIES = libglib2\n\nHOST_SLIRP_DEPENDENCIES = host-libglib2\n\n$(eval $(meson-package))\n$(eval $(host-meson-package))\n"
  },
  {
    "path": "package/sloci-image/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_SLOCI_IMAGE\n\tbool \"host sloci-image\"\n\thelp\n\t  A simple CLI tool for packing rootfs into a single-layer OCI\n\t  image.\n\n\t  https://github.com/jirutka/sloci-image\n"
  },
  {
    "path": "package/sloci-image/sloci-image.hash",
    "content": "# Locally computed\nsha256  4c5baee9a4915ca88e3a54befa1ccb8616be20208070cf54ac366c195647da79  sloci-image-0.1.2.tar.gz\n\n# Hash for license files:\nsha256  4c86c21e003875b85b4b9299156f8cec72c8e8e1abf5aa1f2d3c4dc665a3bea0  LICENSE\n"
  },
  {
    "path": "package/sloci-image/sloci-image.mk",
    "content": "################################################################################\n#\n# sloci-image\n#\n################################################################################\n\nSLOCI_IMAGE_VERSION = 0.1.2\nSLOCI_IMAGE_SITE = $(call github,jirutka,sloci-image,v$(SLOCI_IMAGE_VERSION))\n\nSLOCI_IMAGE_LICENSE = MIT\nSLOCI_IMAGE_LICENSE_FILES = LICENSE\n\nHOST_SLOCI_IMAGE_DEPENDENCIES = host-gawk\n\ndefine HOST_SLOCI_IMAGE_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) PREFIX=$(HOST_DIR) -C $(@D) install\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/smack/Config.in",
    "content": "config BR2_PACKAGE_SMACK\n\tbool \"smack\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\thelp\n\t  User space programs and libraries for SMACK.\n\n\t  SMACK stands for Simplified Mandatory Access Control Kernel.\n\t  It is a Linux Security Module which provides a Mandatory\n\t  Access Control mechanism, aimed towards simplicity.\n\n\t  This package provides a library which allows applications to\n\t  work with SMACK and tools to load/unload rules from the\n\t  kernel, as well as query the policy.\n\n\t  SMACK requires the following kernel options to be enabled:\n\n\t  - CONFIG_SECURITY\n\t  - CONFIG_SECURITY_SMACK\n\t  - CONFIG_SECURITY_NETWORK\n\n\t  These options will be automatically enabled by Buildroot if\n\t  it is responsible for building the kernel. Otherwise, if you\n\t  are building your kernel outside of Buildroot, make sure\n\t  these options are enabled.\n\n\t  To activate SMACK, do not forget to add \"security=smack\" to\n\t  your kernel command line.\n\n\t  https://github.com/smack-team/smack\n\ncomment \"smack needs a toolchain w/ dynamic library, threads, headers >= 3.0\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/smack/smack.hash",
    "content": "# Locally computed\nsha256  1a607da3b1a661dc76b7a5b8571f4a2d56b4d61d78376088d19f2d8637dc6822  smack-1.3.1.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/smack/smack.mk",
    "content": "################################################################################\n#\n# smack\n#\n################################################################################\n\nSMACK_VERSION = 1.3.1\nSMACK_SITE = $(call github,smack-team,smack,v$(SMACK_VERSION))\nSMACK_LICENSE = LGPL-2.1\nSMACK_LICENSE_FILES = COPYING\nSMACK_INSTALL_STAGING = YES\nSMACK_DEPENDENCIES = host-pkgconf\n\n# Sources from GitHub, no configure script included.\nSMACK_AUTORECONF = YES\n\ndefine SMACK_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_SMACK)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_NETWORK)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/smartmontools/Config.in",
    "content": "config BR2_PACKAGE_SMARTMONTOOLS\n\tbool \"smartmontools\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Control and monitor storage systems using S.M.A.R.T.\n\n\t  http://smartmontools.sourceforge.net/\n\ncomment \"smartmontools needs a toolchain w/ C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/smartmontools/smartmontools.hash",
    "content": "# From http://sourceforge.net/projects/smartmontools/files/smartmontools/7.2/\nmd5  e8d134c69ae4959a05cb56b31172ffb1  smartmontools-7.2.tar.gz\nsha1  8d68241096f6ed5b1bbcd8b427fa4a881c1f3e33  smartmontools-7.2.tar.gz\n\n# Locally computed\nsha256  5cd98a27e6393168bc6aaea070d9e1cd551b0f898c52f66b2ff2e5d274118cd6  smartmontools-7.2.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/smartmontools/smartmontools.mk",
    "content": "################################################################################\n#\n# smartmontools\n#\n################################################################################\n\nSMARTMONTOOLS_VERSION = 7.2\nSMARTMONTOOLS_SITE = http://downloads.sourceforge.net/project/smartmontools/smartmontools/$(SMARTMONTOOLS_VERSION)\nSMARTMONTOOLS_LICENSE = GPL-2.0+\nSMARTMONTOOLS_LICENSE_FILES = COPYING\nSMARTMONTOOLS_CPE_ID_VENDOR = smartmontools\nSMARTMONTOOLS_SELINUX_MODULES = smartmon\n\nifeq ($(BR2_PACKAGE_LIBCAP_NG),y)\nSMARTMONTOOLS_CONF_OPTS += --with-libcap-ng\nSMARTMONTOOLS_DEPENDENCIES += libcap-ng\nelse\nSMARTMONTOOLS_CONF_OPTS += --without-libcap-ng\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nSMARTMONTOOLS_CONF_OPTS += --with-selinux\nSMARTMONTOOLS_DEPENDENCIES += libselinux\nelse\nSMARTMONTOOLS_CONF_OPTS += --without-selinux\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nSMARTMONTOOLS_CONF_OPTS += --with-libsystemd\nSMARTMONTOOLS_DEPENDENCIES += systemd\nelse\nSMARTMONTOOLS_CONF_OPTS += --without-libsystemd\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/smcroute/0001-Avoid-trying-to-delete-inactive-VIFs.patch",
    "content": "From 8ce1d117a31e35d97fb955b82edf13514267eaab Mon Sep 17 00:00:00 2001\nFrom: Joachim Wiberg <troglobit@gmail.com>\nDate: Tue, 28 Sep 2021 11:09:47 +0200\nSubject: [PATCH] Avoid trying to delete inactive VIFs\nOrganization: Westermo Network Technologies AB\n\nWhen probing interfaces at startup, there's a check for IFF_MULTICAST,\nif this flag is not set we try to delete its corresponding VIF/MIF.\nThis is for hanlding .conf reload scenarios where an interface has had\nits MULTICAST flag dropped.\n\nHowever, when starting up on Linux systems, the loopback interface has\nno MULTICAST flag set.  This leads to the following bogus warning:\n\n   Failed deleting VIF for iface lo: Resource temporarily unavailable\n\nThis patch makes sure to check if we have a registered kernel VIF/MIF\nfor an interface before attempting to delete it.\n\nSigned-off-by: Joachim Wiberg <troglobit@gmail.com>\n---\n src/mroute.c | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/src/mroute.c b/src/mroute.c\nindex 291e9c4..6a80a47 100644\n--- a/src/mroute.c\n+++ b/src/mroute.c\n@@ -298,6 +298,9 @@ static int mroute4_del_vif(struct iface *iface)\n \tif (iface->mrdisc)\n \t\trc = mrdisc_deregister(iface->vif);\n \n+\tif (iface->vif == ALL_VIFS)\n+\t\treturn 0;\n+\n \tif (kern_vif_del(iface)) {\n \t\tswitch (errno) {\n \t\tcase ENOENT:\n@@ -910,6 +913,9 @@ static int mroute6_del_mif(struct iface *iface)\n {\n \tint rc = 0;\n \n+\tif (iface->mif == ALL_VIFS)\n+\t\treturn 0;\n+\n \tif (kern_mif_del(iface) && errno != ENOENT) {\n \t\tswitch (errno) {\n \t\tcase ENOENT:\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/smcroute/Config.in",
    "content": "config BR2_PACKAGE_SMCROUTE\n\tbool \"smcroute\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  SMCRoute is a command line tool to manipulate the multicast\n\t  routes of a UNIX kernel. It supports both IPv4 and IPv6\n\t  multicast routing. SMCRoute can be used as an alternative to\n\t  dynamic multicast routers like mrouted or pimd in setups\n\t  where static multicast routes should be maintained and/or no\n\t  proper IGMP or MLD signaling exists.\n\n\t  https://github.com/troglobit/smcroute\n"
  },
  {
    "path": "package/smcroute/S41smcroute",
    "content": "#!/bin/sh\n\nNAME=\"smcroute\"\nDAEMON=\"smcrouted\"\nPIDFILE=\"/var/run/$NAME.pid\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$NAME\" ] && . \"/etc/default/$NAME\"\n\ncmd()\n{\n    start-stop-daemon -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \"$@\"\n    status=$?\n    if [ $status -eq 0 ]; then\n\techo \"OK\"\n    else\n\techo \"FAIL\"\n    fi\n    return $status\n}\n\ncase \"$1\" in\n    start)\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tcmd -S -- $SMCROUTED_ARGS\n\t;;\n\n    stop)\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tcmd -K\n\t;;\n\n    restart)\n\t$0 stop\n\tsleep 1\n\t$0 start\n\t;;\n\n    reload)\n\tprintf 'Reloading %s: ' \"$DAEMON\"\n\tcmd -K -s HUP\n\t;;\n\n    *)\n\techo \"Usage: $0 {start|stop|restart|reload}\"\n\texit 1\nesac\n"
  },
  {
    "path": "package/smcroute/smcroute.hash",
    "content": "# Upstream .sha256 from GitHub\nsha256\t4342b95c99e410cab75e9ee80f20480e0170d8b07b8e31553ba1bec3e377fc56  smcroute-2.5.3.tar.gz\n\n# Locally generated\nsha256\tab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\nsha256  d260ea4b9d4b01317568850c3271e3923b546ea4ad57c899e79434f1cc8bcf0b  0001-Avoid-trying-to-delete-inactive-VIFs.patch\n"
  },
  {
    "path": "package/smcroute/smcroute.mk",
    "content": "################################################################################\n#\n# smcroute\n#\n################################################################################\n\nSMCROUTE_VERSION = 2.5.3\nSMCROUTE_SITE = https://github.com/troglobit/smcroute/releases/download/$(SMCROUTE_VERSION)\nSMCROUTE_LICENSE = GPL-2.0+\nSMCROUTE_LICENSE_FILES = COPYING\nSMCROUTE_CPE_ID_VENDOR = troglobit\n\nSMCROUTE_CONF_OPTS = --enable-mrdisc\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nSMCROUTE_DEPENDENCIES += libcap\nSMCROUTE_CONF_OPTS += --with-libcap\nelse\nSMCROUTE_CONF_OPTS += --without-libcap\nendif\n\ndefine SMCROUTE_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/smcroute/S41smcroute \\\n\t\t$(TARGET_DIR)/etc/init.d/S41smcroute\nendef\n\ndefine SMCROUTE_PRUNE_COMPAT_SCRIPT\n\trm -f $(TARGET_DIR)/usr/sbin/smcroute\nendef\n\nSMCROUTE_POST_INSTALL_TARGET_HOOKS += SMCROUTE_PRUNE_COMPAT_SCRIPT\n\n# We will asume that CONFIG_NET and CONFIG_INET are already\n# set in the kernel configuration provided by the user.\ndefine SMCROUTE_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_MULTICAST)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_IP_MROUTE)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/smstools3/0001-fix-Makefile.patch",
    "content": "Makefile: fix rules\n\nIn a Makefile, recipes should follow rules, there can not be variable\ndefinitions in-between.\n\nAlthough make-3.81 is happy about it, make-4.0 (and probably 3.82 too)\ndo whine loudly.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n[Fabrice: update for 3.1.21]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -durN smstools3-3.1.15.orig/src/Makefile smstools3-3.1.15/src/Makefile\n--- smstools3-3.1.15.orig/src/Makefile\t2010-09-21 13:29:14.000000000 +0200\n+++ smstools3-3.1.15/src/Makefile\t2014-09-01 22:27:02.719939329 +0200\n@@ -39,14 +39,13 @@\n \n all: smsd \n \n-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 charshift.o\n-\n ifneq (,$(findstring SOLARIS,$(CFLAGS)))\n ifeq (,$(findstring DISABLE_INET_SOCKET,$(CFLAGS)))\n \toverride LFLAGS += -lsocket -lnsl\n endif\n endif\n \n+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 charshift.o\n ifneq (,$(findstring NOSTATS,$(CFLAGS)))\n \t$(CC) $(CFLAGS) -o $@ $^ $(LFLAGS)\n else \n"
  },
  {
    "path": "package/smstools3/0002-fix-build-with-gcc-10.x.patch",
    "content": "Description: fix of FTBFS with gcc10\nAuthor: Thorsten Alteholz <debian@alteholz.de>\n\nFetch from: <https://salsa.debian.org/debian-mobcom-team/smstools/-/blob/57a358a9eebbe2ca5639cc526f7027944ed95ea1/debian/patches/gcc10.patch>\n\nSigned-off-by: Michael Fischer <mf@go-sys.de>\n\nIndex: smstools/src/smsd_cfg.h\n===================================================================\n--- smstools.orig/src/smsd_cfg.h\t2020-08-05 19:02:50.536596441 +0000\n+++ smstools/src/smsd_cfg.h\t2020-08-05 19:33:22.915005150 +0000\n@@ -126,17 +126,17 @@\n #define ALPHABET_UNKNOWN        4\n #define ALPHABET_DEFAULT        0\n \n-char process_title[32];         // smsd for main task, NOTIFIER or CHILD, name of a modem for other tasks.\n-int process_id;                 // -1 for main task, all modems have numbers starting with 0.\n+extern char process_title[32];         // smsd for main task, NOTIFIER or CHILD, name of a modem for other tasks.\n+extern int process_id;                 // -1 for main task, all modems have numbers starting with 0.\n                                 // This is the same as device, can be used like devices[process_id] if IS_MODEM_PROCESS.\n \n-time_t process_start_time;\n+extern time_t process_start_time;\n \n-int modem_handle;               // Handle for modem.\n+extern int modem_handle;               // Handle for modem.\n \n-int put_command_timeouts;\n-unsigned long long put_command_sent; // 3.1.16beta.\n-char tmpdir[PATH_MAX];          // 3.1.16beta.\n+extern int put_command_timeouts;\n+extern unsigned long long put_command_sent; // 3.1.16beta.\n+extern char tmpdir[PATH_MAX];          // 3.1.16beta.\n \n typedef struct\n {\n@@ -284,204 +284,204 @@\n \n // NOTE for regular run intervals: effective value is at least delaytime.\n \n-char configfile[PATH_MAX];\t// Path to config file\n-char d_spool[PATH_MAX];\t\t// Spool directory\n-char d_failed[PATH_MAX];\t// Failed spool directory\n-char d_failed_copy[PATH_MAX];\t// 3.1.17.\n-char d_incoming[PATH_MAX];\t// Incoming spool directory\n-char d_incoming_copy[PATH_MAX]; // 3.1.16beta2.\n-char d_report[PATH_MAX];\t// Incoming report spool directory\n-char d_report_copy[PATH_MAX];\t// 3.1.17.\n-char d_phonecalls[PATH_MAX];    // Incoming phonecalls data directory\n-char d_saved[PATH_MAX];         // Directory for smsd's internal use, concatenation storage files etc.\n-char d_sent[PATH_MAX];\t\t// Sent spool directory\n-char d_sent_copy[PATH_MAX];\t// 3.1.17.\n-char d_checked[PATH_MAX];\t// Spool directory for checked messages (only used when no provider queues used)\n-char eventhandler[PATH_MAX];\t// Global event handler program or script\n-char alarmhandler[PATH_MAX];\t// Global alarm handler program or script\n-char checkhandler[PATH_MAX];    // Handler that checks if the sms file is valid.\n-int alarmlevel;\t\t\t// Alarm Level (9=highest). Verbosity of alarm handler.\n-char logfile[PATH_MAX];\t\t// Name or Handle of Log File\n-int  loglevel;\t\t\t// Log Level (9=highest). Verbosity of log file.\n-_queue queues[NUMBER_OF_MODEMS]; // Queues\n-_device devices[NUMBER_OF_MODEMS]; // Modem devices\n-int delaytime;\t\t\t// sleep-time after workless\n-int delaytime_mainprocess;      // sleep-time after workless, main process. If -1, delaytime is used.\n-int blocktime;\t\t\t// sleep-time after multiple errors\n-int blockafter;                 // Block modem after n errors\n-int errorsleeptime;\t\t// sleep-time after each error\n-int autosplit;\t\t\t// Splitting of large text messages 0=no, 1=yes 2=number with text, 3=number with UDH\n-int receive_before_send;\t// if 1 smsd tries to receive one message before sending\n-int store_received_pdu;         // 0=no, 1=unsupported pdu's only, 2=unsupported and 8bit/unicode, 3=all\n-int store_sent_pdu;             // 0=no, 1=failed pdu's only, 2=failed and 8bit/unicode, 3=all\n-int validity_period;            // Validity period for messages.\n-int decode_unicode_text;        // 1 if unicode text is decoded internally.\n-int internal_combine;           // 1 if multipart message is combined internally.\n-int internal_combine_binary;    // 1 if multipart binary message is combined internally. Defaults to internal_combine.\n-int keep_filename;              // 0 if unique filename is created to each directory when a message file is moved.\n-int store_original_filename;    // 1 if an original filename is saved to message file when it's moved from\n-                                // outgoing directory to spooler. Works together with keep_filename.\n-int date_filename;              // 1 or 2 if YYYYMMDD is included to the filename of incoming message.\n-char regular_run[PATH_MAX];     // Script/program which is run regularly.\n-int regular_run_interval;       // Number of seconds between running a regular_run script/progdam.\n-char admin_to[SIZE_TO];         // Destination number for administrative messages.\n-int filename_preview;           // Number of chars of message text to concatenate to filename.\n-int incoming_utf8;              // 1 if incoming files are saved using UTF-8 character set.\n-int outgoing_utf8;              // 1 if outgoing files are automatically converted from UTF-8 to ISO and GSM.\n-int log_charconv;               // 1 if character set conversion is logged.\n-int log_single_lines;           // 1 if linefeeds are removed from the modem response to be logged.\n-int executable_check;           // 0 if eventhandler and other executables are NOT checked during the startup checking.\n-int keep_messages;              // For testing purposes: messages are not deleted and smsd stops after first run.\n-char priviledged_numbers[SIZE_PRIVILEDGED_NUMBERS]; // Priviledged numbers in incoming messages.\n-int ic_purge_hours;             // If internal_combine is used, concatenation storage is checked every ic_purge_interval minutes\n-int ic_purge_minutes;           // and if there is message parts older than defined, they are handled or deleted.\n-int ic_purge_read;              // 1 = message parts are stored as single messages. 0 = parts are just deleted.\n-int ic_purge_interval;          // \n-char shell[PATH_MAX];           // Shell used to run eventhandler, defaults to /bin/sh\n-char adminmessage_device[32];   // Name of device used to send administrative messages of mainspooler.\n-int smart_logging;              // 1 = if loglevel is less than 7, degug log is written is there has been any errors.\n-int status_signal_quality;      // 1 = signal quality is written to status file.\n-int status_include_counters;    // 1 = succeeded, failed and received counters are included in the status line.\n-int status_include_uptime;      // 3.1.16beta: 1 = include started & uptime line in the status file.\n-int hangup_incoming_call;       // 1 = if detected unexpected input contains RING and we want to end call.\n-int max_continuous_sending;     // Defines when sending is breaked to do check/do other tasks. Time in minutes.\n-int voicecall_hangup_ath;       // If ATH is used instead of AT+CHUP.\n+extern char configfile[PATH_MAX];\t// Path to config file\n+extern char d_spool[PATH_MAX];\t\t// Spool directory\n+extern char d_failed[PATH_MAX];\t// Failed spool directory\n+extern char d_failed_copy[PATH_MAX];\t// 3.1.17.\n+extern char d_incoming[PATH_MAX];\t// Incoming spool directory\n+extern char d_incoming_copy[PATH_MAX]; // 3.1.16beta2.\n+extern char d_report[PATH_MAX];\t// Incoming report spool directory\n+extern char d_report_copy[PATH_MAX];\t// 3.1.17.\n+extern char d_phonecalls[PATH_MAX];    // Incoming phonecalls data directory\n+extern char d_saved[PATH_MAX];         // Directory for smsd's internal use, concatenation storage files etc.\n+extern char d_sent[PATH_MAX];\t\t// Sent spool directory\n+extern char d_sent_copy[PATH_MAX];\t// 3.1.17.\n+extern char d_checked[PATH_MAX];\t// Spool directory for checked messages (only used when no provider queues used)\n+extern char eventhandler[PATH_MAX];\t// Global event handler program or script\n+extern char alarmhandler[PATH_MAX];\t// Global alarm handler program or script\n+extern char checkhandler[PATH_MAX];    // Handler that checks if the sms file is valid.\n+extern int alarmlevel;\t\t\t// Alarm Level (9=highest). Verbosity of alarm handler.\n+extern char logfile[PATH_MAX];\t\t// Name or Handle of Log File\n+extern int  loglevel;\t\t\t// Log Level (9=highest). Verbosity of log file.\n+extern _queue queues[NUMBER_OF_MODEMS]; // Queues\n+extern _device devices[NUMBER_OF_MODEMS]; // Modem devices\n+extern int delaytime;\t\t\t// sleep-time after workless\n+extern int delaytime_mainprocess;      // sleep-time after workless, main process. If -1, delaytime is used.\n+extern int blocktime;\t\t\t// sleep-time after multiple errors\n+extern int blockafter;                 // Block modem after n errors\n+extern int errorsleeptime;\t\t// sleep-time after each error\n+extern int autosplit;\t\t\t// Splitting of large text messages 0=no, 1=yes 2=number with text, 3=number with UDH\n+extern int receive_before_send;\t// if 1 smsd tries to receive one message before sending\n+extern int store_received_pdu;         // 0=no, 1=unsupported pdu's only, 2=unsupported and 8bit/unicode, 3=all\n+extern int store_sent_pdu;             // 0=no, 1=failed pdu's only, 2=failed and 8bit/unicode, 3=all\n+extern int validity_period;            // Validity period for messages.\n+extern int decode_unicode_text;        // 1 if unicode text is decoded internally.\n+extern int internal_combine;           // 1 if multipart message is combined internally.\n+extern int internal_combine_binary;    // 1 if multipart binary message is combined internally. Defaults to internal_combine.\n+extern int keep_filename;              // 0 if unique filename is created to each directory when a message file is moved.\n+extern int store_original_filename;    // 1 if an original filename is saved to message file when it's moved from\n+// outgoing directory to spooler. Works together with keep_filename.\n+extern int date_filename;              // 1 or 2 if YYYYMMDD is included to the filename of incoming message.\n+extern char regular_run[PATH_MAX];     // Script/program which is run regularly.\n+extern int regular_run_interval;       // Number of seconds between running a regular_run script/progdam.\n+extern char admin_to[SIZE_TO];         // Destination number for administrative messages.\n+extern int filename_preview;           // Number of chars of message text to concatenate to filename.\n+extern int incoming_utf8;              // 1 if incoming files are saved using UTF-8 character set.\n+extern int outgoing_utf8;              // 1 if outgoing files are automatically converted from UTF-8 to ISO and GSM.\n+extern int log_charconv;               // 1 if character set conversion is logged.\n+extern int log_single_lines;           // 1 if linefeeds are removed from the modem response to be logged.\n+extern int executable_check;           // 0 if eventhandler and other executables are NOT checked during the startup checking.\n+extern int keep_messages;              // For testing purposes: messages are not deleted and smsd stops after first run.\n+extern char priviledged_numbers[SIZE_PRIVILEDGED_NUMBERS]; // Priviledged numbers in incoming messages.\n+extern int ic_purge_hours;             // If internal_combine is used, concatenation storage is checked every ic_purge_interval minutes\n+extern int ic_purge_minutes;           // and if there is message parts older than defined, they are handled or deleted.\n+extern int ic_purge_read;              // 1 = message parts are stored as single messages. 0 = parts are just deleted.\n+extern int ic_purge_interval;          //\n+extern char shell[PATH_MAX];           // Shell used to run eventhandler, defaults to /bin/sh\n+extern char adminmessage_device[32];   // Name of device used to send administrative messages of mainspooler.\n+extern int smart_logging;              // 1 = if loglevel is less than 7, degug log is written is there has been any errors.\n+extern int status_signal_quality;      // 1 = signal quality is written to status file.\n+extern int status_include_counters;    // 1 = succeeded, failed and received counters are included in the status line.\n+extern int status_include_uptime;      // 3.1.16beta: 1 = include started & uptime line in the status file.\n+extern int hangup_incoming_call;       // 1 = if detected unexpected input contains RING and we want to end call.\n+extern int max_continuous_sending;     // Defines when sending is breaked to do check/do other tasks. Time in minutes.\n+extern int voicecall_hangup_ath;       // If ATH is used instead of AT+CHUP.\n \n // 3.1.5:\n-int trust_outgoing;             // 1 = it's _sure_ that files are created by rename AND permissions are correct. Speeds up spooling.\n+extern int trust_outgoing;             // 1 = it's _sure_ that files are created by rename AND permissions are correct. Speeds up spooling.\n \n // 3.1.5:\n-int ignore_outgoing_priority;   // 1 = Priority: high header is not checked. Speeds up spooling.\n+extern int ignore_outgoing_priority;   // 1 = Priority: high header is not checked. Speeds up spooling.\n \n // 3.1.7:\n-int ignore_exec_output;         // 1 = stdout and stderr of eventhandlers is _not_ checked.\n+extern int ignore_exec_output;         // 1 = stdout and stderr of eventhandlers is _not_ checked.\n \n // 3.1.7:\n-mode_t conf_umask;              // File mode creation mask for smsd and modem processes.\n+extern mode_t conf_umask;              // File mode creation mask for smsd and modem processes.\n \n // 3.1.7:\n-int trim_text;                  // 1 = trailing whitespaces are removed from text:\n+extern int trim_text;                  // 1 = trailing whitespaces are removed from text:\n \n // 3.1.7:\n-int use_linux_ps_trick;         // 1 = change argv[0] to \"smsd: MAINPROCESS\", \"smsd: GSM1\" etc.\n+extern int use_linux_ps_trick;         // 1 = change argv[0] to \"smsd: MAINPROCESS\", \"smsd: GSM1\" etc.\n \n // 3.1.7:\n-int log_unmodified;\n+extern int log_unmodified;\n \n // 3.1.7:\n-char suspend_filename[PATH_MAX];\n+extern char suspend_filename[PATH_MAX];\n \n // 3.1.9:\n-int spool_directory_order;\n+extern int spool_directory_order;\n \n // 3.1.9: 1 if read_from_modem is logged.\n-int log_read_from_modem;\n+extern int log_read_from_modem;\n \n // 3.1.16beta2: log_read_timing for performance tuning.\n-int log_read_timing;\n+extern int log_read_timing;\n \n // 3.1.16beta:\n-int log_response_time;\n+extern int log_response_time;\n \n // 3.1.16beta2:\n-int default_alphabet;\n+extern int default_alphabet;\n \n // 3.1.17: Child process for the mainprocess:\n-char mainprocess_child[PATH_MAX];\n-char mainprocess_child_args[PATH_MAX];\n+extern char mainprocess_child[PATH_MAX];\n+extern char mainprocess_child_args[PATH_MAX];\n \n // 3.1.17: Notifier for the mainprocess:\n-int mainprocess_notifier;\n+extern int mainprocess_notifier;\n \n // 3.1.17: If *_copy was made, evenhandler can use it instead of original file:\n-int eventhandler_use_copy;\n+extern int eventhandler_use_copy;\n \n // 3.1.17: This defines how long to sleep while looping:\n-int sleeptime_mainprocess;\n+extern int sleeptime_mainprocess;\n \n // 3.1.17: Defines how often PID is checked to detect if another smsd is running:\n-int check_pid_interval;\n+extern int check_pid_interval;\n \n // 3.1.18: start script/program for mainprocess:\n-char mainprocess_start[PATH_MAX];\n-char mainprocess_start_args[PATH_MAX];\n+extern char mainprocess_start[PATH_MAX];\n+extern char mainprocess_start_args[PATH_MAX];\n \n-int message_count;              // Counter for sent messages. Multipart message is one message.\n+extern int message_count;              // Counter for sent messages. Multipart message is one message.\n \n-volatile sig_atomic_t break_workless_delay; // To break the delay when SIGCONT is received.\n-volatile sig_atomic_t terminate; // To terminate when SIGTERM is received.\n+extern volatile sig_atomic_t break_workless_delay; // To break the delay when SIGCONT is received.\n+extern volatile sig_atomic_t terminate; // To terminate when SIGTERM is received.\n \n-char username[65];              // user and group name which are used to run.\n-char groupname[65];             // (max length is just a guess)\n+extern char username[65];              // user and group name which are used to run.\n+extern char groupname[65];             // (max length is just a guess)\n \n-char infofile[PATH_MAX];        // Hepler file for stopping the smsd smoothly.\n-char pidfile[PATH_MAX];         // File where a process id is stored.\n+extern char infofile[PATH_MAX];        // Hepler file for stopping the smsd smoothly.\n+extern char pidfile[PATH_MAX];         // File where a process id is stored.\n \n // Command line arguments:\n-char arg_username[65];\n-char arg_groupname[65];\n-char arg_infofile[PATH_MAX];\n-char arg_pidfile[PATH_MAX];\n-char arg_logfile[PATH_MAX];\n-int arg_terminal;\n+extern char arg_username[65];\n+extern char arg_groupname[65];\n+extern char arg_infofile[PATH_MAX];\n+extern char arg_pidfile[PATH_MAX];\n+extern char arg_logfile[PATH_MAX];\n+extern int arg_terminal;\n // 3.1.7:\n-char arg_7bit_packed[512];\n-int do_encode_decode_arg_7bit_packed;\n+extern char arg_7bit_packed[512];\n+extern int do_encode_decode_arg_7bit_packed;\n \n-int terminal;                   // 1 if smsd is communicating with terminal.\n-pid_t device_pids[NUMBER_OF_MODEMS]; // Pid's of modem processes.\n-char run_info[PATH_MAX];        // Information about external script/program execution.\n+extern int terminal;                   // 1 if smsd is communicating with terminal.\n+extern pid_t device_pids[NUMBER_OF_MODEMS]; // Pid's of modem processes.\n+extern char run_info[PATH_MAX];        // Information about external script/program execution.\n \n-char communicate[32];           // Device name for terminal communication mode.\n+extern char communicate[32];           // Device name for terminal communication mode.\n \n-char international_prefixes[PATH_MAX +1];\n-char national_prefixes[PATH_MAX +1];\n+extern char international_prefixes[PATH_MAX +1];\n+extern char national_prefixes[PATH_MAX +1];\n \n // Storage for startup errors:\n-char *startup_err_str;\n-int startup_err_count;\n+extern char *startup_err_str;\n+extern int startup_err_count;\n \n // Storage for PDU's:\n-char *incoming_pdu_store;\n-char *outgoing_pdu_store;\n-char *routed_pdu_store;\n+extern char *incoming_pdu_store;\n+extern char *outgoing_pdu_store;\n+extern char *routed_pdu_store;\n \n // Storage for getfile errors:\n-char *getfile_err_store;\n+extern char *getfile_err_store;\n \n // Text buffer for error messages:\n-char tb[SIZE_TB];\n+extern char tb[SIZE_TB];\n \n // Buffer for SIM memory checking:\n-char *check_memory_buffer;\n-size_t check_memory_buffer_size;\n+extern char *check_memory_buffer;\n+extern size_t check_memory_buffer_size;\n \n-int os_cygwin;                  // 1 if we are on Cygwin.\n+extern int os_cygwin;                  // 1 if we are on Cygwin.\n \n-char language_file[PATH_MAX];   // File name of translated headers.\n-char yes_chars[SIZE_HEADER];    // Characters which mean \"yes\" in the yesno() question.\n-char no_chars[SIZE_HEADER];     // See details inside read_translation() function.\n-char yes_word[SIZE_HEADER];     // \"yes\" printed as an output.\n-char no_word[SIZE_HEADER];      // \"no\"\n-char datetime_format[SIZE_HEADER]; // strftime format string for time stamps (not inside status reports).\n-char logtime_format[SIZE_HEADER]; // 3.1.7: strftime format string for logging time stamps\n-char date_filename_format[SIZE_HEADER]; // 3.1.7: strftime format string for date_filename\n-int translate_incoming;         // 0 if incoming message headers are NOT transtaled.\n+extern char language_file[PATH_MAX];   // File name of translated headers.\n+extern char yes_chars[SIZE_HEADER];    // Characters which mean \"yes\" in the yesno() question.\n+extern char no_chars[SIZE_HEADER];     // See details inside read_translation() function.\n+extern char yes_word[SIZE_HEADER];     // \"yes\" printed as an output.\n+extern char no_word[SIZE_HEADER];      // \"no\"\n+extern char datetime_format[SIZE_HEADER]; // strftime format string for time stamps (not inside status reports).\n+extern char logtime_format[SIZE_HEADER]; // 3.1.7: strftime format string for logging time stamps\n+extern char date_filename_format[SIZE_HEADER]; // 3.1.7: strftime format string for date_filename\n+extern int translate_incoming;         // 0 if incoming message headers are NOT transtaled.\n \n // 3.1.14:\n-int logtime_us;\n-int logtime_ms;\n+extern int logtime_us;\n+extern int logtime_ms;\n \n // 3.1.14:\n-int shell_test;\n+extern int shell_test;\n \n // Next two are for debugging purposes:\n-int enable_smsd_debug;\n-char smsd_debug[SIZE_SMSD_DEBUG]; // Header of an outgoing message file.\n+extern int enable_smsd_debug;\n+extern char smsd_debug[SIZE_SMSD_DEBUG]; // Header of an outgoing message file.\n \n // 3.1.20: Alt keys in communication mode:\n #define COMMUNICATE_A_KEY_COUNT 10\n-char communicate_a_keys[COMMUNICATE_A_KEY_COUNT][256];\n+extern char communicate_a_keys[COMMUNICATE_A_KEY_COUNT][256];\n \n /* initialize all variable with default values */\n \nIndex: smstools/src/smsd_cfg.c\n===================================================================\n--- smstools.orig/src/smsd_cfg.c\t2020-07-27 19:00:41.616207603 +0000\n+++ smstools/src/smsd_cfg.c\t2020-08-05 19:17:41.595712888 +0000\n@@ -38,6 +38,221 @@\n #include \"modeminit.h\"\n #include \"charshift.h\"\n \n+\n+/* global variables */\n+char process_title[32];         // smsd for main task, NOTIFIER or CHILD, name of a modem for other tasks.\n+int process_id;                 // -1 for main task, all modems have numbers starting with 0.\n+                                // This is the same as device, can be used like devices[process_id] if IS_MODEM_PROCESS.\n+\n+time_t process_start_time;\n+\n+int modem_handle;               // Handle for modem.\n+\n+int put_command_timeouts;\n+unsigned long long put_command_sent; // 3.1.16beta.\n+char tmpdir[PATH_MAX];          // 3.1.16beta.\n+\n+// NOTE for regular run intervals: effective value is at least delaytime.\n+\n+char configfile[PATH_MAX];\t// Path to config file\n+char d_spool[PATH_MAX];\t\t// Spool directory\n+char d_failed[PATH_MAX];\t// Failed spool directory\n+char d_failed_copy[PATH_MAX];\t// 3.1.17.\n+char d_incoming[PATH_MAX];\t// Incoming spool directory\n+char d_incoming_copy[PATH_MAX]; // 3.1.16beta2.\n+char d_report[PATH_MAX];\t// Incoming report spool directory\n+char d_report_copy[PATH_MAX];\t// 3.1.17.\n+char d_phonecalls[PATH_MAX];    // Incoming phonecalls data directory\n+char d_saved[PATH_MAX];         // Directory for smsd's internal use, concatenation storage files etc.\n+char d_sent[PATH_MAX];\t\t// Sent spool directory\n+char d_sent_copy[PATH_MAX];\t// 3.1.17.\n+char d_checked[PATH_MAX];\t// Spool directory for checked messages (only used when no provider queues used)\n+char eventhandler[PATH_MAX];\t// Global event handler program or script\n+char alarmhandler[PATH_MAX];\t// Global alarm handler program or script\n+char checkhandler[PATH_MAX];    // Handler that checks if the sms file is valid.\n+int alarmlevel;\t\t\t// Alarm Level (9=highest). Verbosity of alarm handler.\n+char logfile[PATH_MAX];\t\t// Name or Handle of Log File\n+int  loglevel;\t\t\t// Log Level (9=highest). Verbosity of log file.\n+_queue queues[NUMBER_OF_MODEMS]; // Queues\n+_device devices[NUMBER_OF_MODEMS]; // Modem devices\n+int delaytime;\t\t\t// sleep-time after workless\n+int delaytime_mainprocess;      // sleep-time after workless, main process. If -1, delaytime is used.\n+int blocktime;\t\t\t// sleep-time after multiple errors\n+int blockafter;                 // Block modem after n errors\n+int errorsleeptime;\t\t// sleep-time after each error\n+int autosplit;\t\t\t// Splitting of large text messages 0=no, 1=yes 2=number with text, 3=number with UDH\n+int receive_before_send;\t// if 1 smsd tries to receive one message before sending\n+int store_received_pdu;         // 0=no, 1=unsupported pdu's only, 2=unsupported and 8bit/unicode, 3=all\n+int store_sent_pdu;             // 0=no, 1=failed pdu's only, 2=failed and 8bit/unicode, 3=all\n+int validity_period;            // Validity period for messages.\n+int decode_unicode_text;        // 1 if unicode text is decoded internally.\n+int internal_combine;           // 1 if multipart message is combined internally.\n+int internal_combine_binary;    // 1 if multipart binary message is combined internally. Defaults to internal_combine.\n+int keep_filename;              // 0 if unique filename is created to each directory when a message file is moved.\n+int store_original_filename;    // 1 if an original filename is saved to message file when it's moved from\n+                                // outgoing directory to spooler. Works together with keep_filename.\n+int date_filename;              // 1 or 2 if YYYYMMDD is included to the filename of incoming message.\n+char regular_run[PATH_MAX];     // Script/program which is run regularly.\n+int regular_run_interval;       // Number of seconds between running a regular_run script/progdam.\n+char admin_to[SIZE_TO];         // Destination number for administrative messages.\n+int filename_preview;           // Number of chars of message text to concatenate to filename.\n+int incoming_utf8;              // 1 if incoming files are saved using UTF-8 character set.\n+int outgoing_utf8;              // 1 if outgoing files are automatically converted from UTF-8 to ISO and GSM.\n+int log_charconv;               // 1 if character set conversion is logged.\n+int log_single_lines;           // 1 if linefeeds are removed from the modem response to be logged.\n+int executable_check;           // 0 if eventhandler and other executables are NOT checked during the startup checking.\n+int keep_messages;              // For testing purposes: messages are not deleted and smsd stops after first run.\n+char priviledged_numbers[SIZE_PRIVILEDGED_NUMBERS]; // Priviledged numbers in incoming messages.\n+int ic_purge_hours;             // If internal_combine is used, concatenation storage is checked every ic_purge_interval minutes\n+int ic_purge_minutes;           // and if there is message parts older than defined, they are handled or deleted.\n+int ic_purge_read;              // 1 = message parts are stored as single messages. 0 = parts are just deleted.\n+int ic_purge_interval;          //\n+char shell[PATH_MAX];           // Shell used to run eventhandler, defaults to /bin/sh\n+char adminmessage_device[32];   // Name of device used to send administrative messages of mainspooler.\n+int smart_logging;              // 1 = if loglevel is less than 7, degug log is written is there has been any errors.\n+int status_signal_quality;      // 1 = signal quality is written to status file.\n+int status_include_counters;    // 1 = succeeded, failed and received counters are included in the status line.\n+int status_include_uptime;      // 3.1.16beta: 1 = include started & uptime line in the status file.\n+int hangup_incoming_call;       // 1 = if detected unexpected input contains RING and we want to end call.\n+int max_continuous_sending;     // Defines when sending is breaked to do check/do other tasks. Time in minutes.\n+int voicecall_hangup_ath;       // If ATH is used instead of AT+CHUP.\n+\n+// 3.1.5:\n+int trust_outgoing;             // 1 = it's _sure_ that files are created by rename AND permissions are correct. Speeds up spooling.\n+\n+// 3.1.5:\n+int ignore_outgoing_priority;   // 1 = Priority: high header is not checked. Speeds up spooling.\n+\n+// 3.1.7:\n+int ignore_exec_output;         // 1 = stdout and stderr of eventhandlers is _not_ checked.\n+\n+// 3.1.7:\n+mode_t conf_umask;              // File mode creation mask for smsd and modem processes.\n+\n+// 3.1.7:\n+int trim_text;                  // 1 = trailing whitespaces are removed from text:\n+\n+// 3.1.7:\n+int use_linux_ps_trick;         // 1 = change argv[0] to \"smsd: MAINPROCESS\", \"smsd: GSM1\" etc.\n+\n+// 3.1.7:\n+int log_unmodified;\n+\n+// 3.1.7:\n+char suspend_filename[PATH_MAX];\n+\n+// 3.1.9:\n+int spool_directory_order;\n+\n+// 3.1.9: 1 if read_from_modem is logged.\n+int log_read_from_modem;\n+\n+// 3.1.16beta2: log_read_timing for performance tuning.\n+int log_read_timing;\n+\n+// 3.1.16beta:\n+int log_response_time;\n+\n+// 3.1.16beta2:\n+int default_alphabet;\n+\n+// 3.1.17: Child process for the mainprocess:\n+char mainprocess_child[PATH_MAX];\n+char mainprocess_child_args[PATH_MAX];\n+\n+// 3.1.17: Notifier for the mainprocess:\n+int mainprocess_notifier;\n+\n+// 3.1.17: If *_copy was made, evenhandler can use it instead of original file:\n+int eventhandler_use_copy;\n+\n+// 3.1.17: This defines how long to sleep while looping:\n+int sleeptime_mainprocess;\n+\n+// 3.1.17: Defines how often PID is checked to detect if another smsd is running:\n+int check_pid_interval;\n+\n+// 3.1.18: start script/program for mainprocess:\n+char mainprocess_start[PATH_MAX];\n+char mainprocess_start_args[PATH_MAX];\n+\n+int message_count;              // Counter for sent messages. Multipart message is one message.\n+\n+volatile sig_atomic_t break_workless_delay; // To break the delay when SIGCONT is received.\n+volatile sig_atomic_t terminate; // To terminate when SIGTERM is received.\n+\n+char username[65];              // user and group name which are used to run.\n+char groupname[65];             // (max length is just a guess)\n+\n+char infofile[PATH_MAX];        // Hepler file for stopping the smsd smoothly.\n+char pidfile[PATH_MAX];         // File where a process id is stored.\n+\n+// Command line arguments:\n+char arg_username[65];\n+char arg_groupname[65];\n+char arg_infofile[PATH_MAX];\n+char arg_pidfile[PATH_MAX];\n+char arg_logfile[PATH_MAX];\n+int arg_terminal;\n+// 3.1.7:\n+char arg_7bit_packed[512];\n+int do_encode_decode_arg_7bit_packed;\n+\n+int terminal;                   // 1 if smsd is communicating with terminal.\n+pid_t device_pids[NUMBER_OF_MODEMS]; // Pid's of modem processes.\n+char run_info[PATH_MAX];        // Information about external script/program execution.\n+\n+char communicate[32];           // Device name for terminal communication mode.\n+\n+char international_prefixes[PATH_MAX +1];\n+char national_prefixes[PATH_MAX +1];\n+\n+// Storage for startup errors:\n+char *startup_err_str;\n+int startup_err_count;\n+\n+// Storage for PDU's:\n+char *incoming_pdu_store;\n+char *outgoing_pdu_store;\n+char *routed_pdu_store;\n+\n+// Storage for getfile errors:\n+char *getfile_err_store;\n+\n+// Text buffer for error messages:\n+char tb[SIZE_TB];\n+\n+// Buffer for SIM memory checking:\n+char *check_memory_buffer;\n+size_t check_memory_buffer_size;\n+\n+int os_cygwin;                  // 1 if we are on Cygwin.\n+\n+char language_file[PATH_MAX];   // File name of translated headers.\n+char yes_chars[SIZE_HEADER];    // Characters which mean \"yes\" in the yesno() question.\n+char no_chars[SIZE_HEADER];     // See details inside read_translation() function.\n+char yes_word[SIZE_HEADER];     // \"yes\" printed as an output.\n+char no_word[SIZE_HEADER];      // \"no\"\n+char datetime_format[SIZE_HEADER]; // strftime format string for time stamps (not inside status reports).\n+char logtime_format[SIZE_HEADER]; // 3.1.7: strftime format string for logging time stamps\n+char date_filename_format[SIZE_HEADER]; // 3.1.7: strftime format string for date_filename\n+int translate_incoming;         // 0 if incoming message headers are NOT transtaled.\n+\n+// 3.1.14:\n+int logtime_us;\n+int logtime_ms;\n+\n+// 3.1.14:\n+int shell_test;\n+\n+// Next two are for debugging purposes:\n+int enable_smsd_debug;\n+char smsd_debug[SIZE_SMSD_DEBUG]; // Header of an outgoing message file.\n+\n+// 3.1.20: Alt keys in communication mode:\n+#define COMMUNICATE_A_KEY_COUNT 10\n+char communicate_a_keys[COMMUNICATE_A_KEY_COUNT][256];\n+\n char *msg_dir = \"%s directory %s cannot be opened.\";\n char *msg_file = \"%s directory %s is not writable.\";\n char *msg_not_executable = \"is not executable for smsd.\";\nIndex: smstools/src/logging.c\n===================================================================\n--- smstools.orig/src/logging.c\t2020-07-27 19:00:41.612207583 +0000\n+++ smstools/src/logging.c\t2020-08-05 19:27:38.373800111 +0000\n@@ -25,6 +25,16 @@\n #include \"smsd_cfg.h\"\n #include \"stats.h\"\n \n+\n+// 3.1.16beta2: Moved logch() and prch() from charset.c to logging.c:\n+char logch_buffer[8192];\n+\n+char prch(char ch);\n+\n+// 3.1.16beta: changed type:\n+//int trouble_logging_started;\n+time_t trouble_logging_started;\n+\n int Filehandle = -1;\n int Level;\n int SavedLevel;\nIndex: smstools/src/logging.h\n===================================================================\n--- smstools.orig/src/logging.h\t2020-07-27 19:00:41.612207583 +0000\n+++ smstools/src/logging.h\t2020-08-05 19:27:52.077848035 +0000\n@@ -18,7 +18,7 @@\n #include <time.h>\n \n // 3.1.16beta2: Moved logch() and prch() from charset.c to logging.c:\n-char logch_buffer[8192];\n+extern char logch_buffer[8192];\n \n #ifdef __GNUC__\n void logch(char* format, ...) __attribute__ ((format(printf, 1, 2)));\n@@ -26,11 +26,11 @@\n void logch(char* format, ...);\n #endif\n \n-char prch(char ch);\n+extern char prch(char ch);\n \n // 3.1.16beta: changed type:\n //int trouble_logging_started;\n-time_t trouble_logging_started;\n+extern time_t trouble_logging_started;\n \n int change_loglevel(int new_level);\n void restore_loglevel();\nIndex: smstools/src/stats.c\n===================================================================\n--- smstools.orig/src/stats.c\t2020-07-27 19:00:41.616207603 +0000\n+++ smstools/src/stats.c\t2020-08-05 19:28:58.094078936 +0000\n@@ -29,6 +29,20 @@\n #include <mm.h>\n #endif\n \n+\n+_stats* statistics[NUMBER_OF_MODEMS]; // Statistic data (shared memory!)\n+int rejected_counter;\t\t// Statistic counter, rejected SM, number does not fit into any queue\n+time_t start_time;\t\t// Start time of smsd, allows statistic functions\n+int printstatus;\t\t// if 1 smsd outputs status on stdout\n+time_t last_stats;\t\t// time when the last stats file was created\n+char d_stats[PATH_MAX];\t\t// path to statistic files\n+int stats_interval;\t\t// time between statistic files in seconds.\n+int stats_no_zeroes;\t\t// Suppress files that contain only zeroes\n+int status_interval;            // time between updating status file in seconds\n+\n+char *shared_buffer;\n+\n+\n char newstatus[NUMBER_OF_MODEMS +1] = {0};\n char oldstatus[NUMBER_OF_MODEMS +1] = {0};\n \nIndex: smstools/src/stats.h\n===================================================================\n--- smstools.orig/src/stats.h\t2020-07-27 19:00:41.616207603 +0000\n+++ smstools/src/stats.h\t2020-08-05 19:29:14.750137182 +0000\n@@ -33,17 +33,17 @@\n   int ber;\n } _stats;\n \n-_stats* statistics[NUMBER_OF_MODEMS]; // Statistic data (shared memory!)\n-int rejected_counter;\t\t// Statistic counter, rejected SM, number does not fit into any queue\n-time_t start_time;\t\t// Start time of smsd, allows statistic functions\n-int printstatus;\t\t// if 1 smsd outputs status on stdout\n-time_t last_stats;\t\t// time when the last stats file was created\n-char d_stats[PATH_MAX];\t\t// path to statistic files\n-int stats_interval;\t\t// time between statistic files in seconds.\n-int stats_no_zeroes;\t\t// Suppress files that contain only zeroes\n-int status_interval;            // time between updating status file in seconds\n+extern _stats* statistics[NUMBER_OF_MODEMS]; // Statistic data (shared memory!)\n+extern int rejected_counter;\t\t// Statistic counter, rejected SM, number does not fit into any queue\n+extern time_t start_time;\t\t// Start time of smsd, allows statistic functions\n+extern int printstatus;\t\t// if 1 smsd outputs status on stdout\n+extern time_t last_stats;\t\t// time when the last stats file was created\n+extern char d_stats[PATH_MAX];\t\t// path to statistic files\n+extern int stats_interval;\t\t// time between statistic files in seconds.\n+extern int stats_no_zeroes;\t\t// Suppress files that contain only zeroes\n+extern int status_interval;            // time between updating status file in seconds\n \n-char *shared_buffer;\n+extern char *shared_buffer;\n \n /* Creates shared memory variables for statistic data */\n \nIndex: smstools/src/blacklist.c\n===================================================================\n--- smstools.orig/src/blacklist.c\t2020-07-27 19:00:41.612207583 +0000\n+++ smstools/src/blacklist.c\t2020-08-05 19:34:13.903183463 +0000\n@@ -23,6 +23,8 @@\n #include \"alarm.h\"\n #include \"smsd_cfg.h\"\n \n+char blacklist[256];     // Filename of the black-list\n+\n int inblacklist(char* msisdn)\n {\n   FILE* file;\nIndex: smstools/src/blacklist.h\n===================================================================\n--- smstools.orig/src/blacklist.h\t2020-07-27 19:00:41.612207583 +0000\n+++ smstools/src/blacklist.h\t2020-08-05 19:34:04.903151994 +0000\n@@ -15,7 +15,7 @@\n #ifndef BLACK_H\n #define BLACK_H\n \n-char blacklist[256];\t// Filename of the black-list\n+extern char blacklist[256];\t// Filename of the black-list\n \n int inblacklist(char* msisdn);\n \nIndex: smstools/src/whitelist.c\n===================================================================\n--- smstools.orig/src/whitelist.c\t2020-07-27 19:00:41.616207603 +0000\n+++ smstools/src/whitelist.c\t2020-08-05 19:39:23.436266057 +0000\n@@ -23,6 +23,8 @@\n #include \"alarm.h\"\n #include \"smsd_cfg.h\"\n \n+char whitelist[256];     // Filename of the white-list\n+\n /* Used with >= 3.1x */\n int inwhitelist_q(char* msisdn, char *queuename)\n {\nIndex: smstools/src/whitelist.h\n===================================================================\n--- smstools.orig/src/whitelist.h\t2020-07-27 19:00:41.616207603 +0000\n+++ smstools/src/whitelist.h\t2020-08-05 19:34:29.959239624 +0000\n@@ -15,7 +15,7 @@\n #ifndef WHITE_H\n #define WHITE_H\n \n-char whitelist[256];\t// Filename of the white-list\n+extern char whitelist[256];\t// Filename of the white-list\n \n /* Used with >= 3.1x */\n int inwhitelist_q(char* msisdn, char *queuename);\n"
  },
  {
    "path": "package/smstools3/Config.in",
    "content": "config BR2_PACKAGE_SMSTOOLS3\n\tbool \"smstools3\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  The SMS Server Tools 3 is a SMS Gateway software which can\n\t  send and receive short messages through GSM modems and\n\t  mobile phones.\n\n\t  http://smstools3.kekekasvi.com/\n\nif BR2_PACKAGE_SMSTOOLS3\n\nconfig BR2_PACKAGE_SMSTOOLS3_NB_MODEMS\n\tint \"Number of modems to support\"\n\tdefault 1\n\thelp\n\t  To reduce memory footprint of SMS Server Tools, you can\n\t  specify the exact number of modems connected to your\n\t  board. By default only 1 modem is used.\n\nendif\n\ncomment \"smstools3 needs a toolchain w/ wchar, threads\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/smstools3/S50smsd",
    "content": "#!/bin/sh\n#\n# Starts the SMS Server Tools 3\n#\n\nNAME=smsd\nDAEMON=/usr/bin/$NAME\nPIDFILE=/var/run/$NAME.pid\nSPOOL=/var/spool/sms\n\nstart()\n{\n\tprintf \"Starting $NAME: \"\n\tmkdir -p $SPOOL/outgoing\n\tmkdir -p $SPOOL/incoming\n\tmkdir -p $SPOOL/checked\n\tstart-stop-daemon -S -q -p $PIDFILE --exec $DAEMON -- -c /etc/smsd.conf && echo \"OK\" || echo \"Failed\"\n}\n\nstop()\n{\n\tprintf \"Stopping $NAME: \"\n\tstart-stop-daemon -K -q -p $PIDFILE && echo \"OK\" || echo \"Failed\"\n\trm -f $PIDFILE\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t\t;;\n\tstop)\n\t\tstop\n\t\t;;\n\trestart|reload)\n\t\tstop\n\t\tstart\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/smstools3/smstools3.hash",
    "content": "# From http://smstools3.kekekasvi.com/packages/\nmd5  6a9f038fb38a49cc3a4f8f14a88fb8af smstools-3.1.21.tar.gz\nsha256  a26ba4c02b16f6cf13177bffca6c9230dc5fefaeba8e3030cd4e4905f6a92084  smstools3-3.1.21.tar.gz\n\n# Hash for license files\nsha256  884d8f0377259f291432f4fa31d5a9720eefa0e0d797652ae686b6325a434624  doc/license.html\nsha256  786b4da4dd900cad87a7dc17769458607bdeae575d62e6e98ad7144e9225f8d3  LICENSE\n"
  },
  {
    "path": "package/smstools3/smstools3.mk",
    "content": "################################################################################\n#\n# smstools3\n#\n################################################################################\n\nSMSTOOLS3_VERSION = 3.1.21\nSMSTOOLS3_SITE = http://smstools3.kekekasvi.com/packages\nSMSTOOLS3_LICENSE = GPL-2.0+\nSMSTOOLS3_LICENSE_FILES = doc/license.html LICENSE\nSMSTOOLS3_SELINUX_MODULES = smstools\n\nSMSTOOLS3_CFLAGS = $(TARGET_CFLAGS)\nSMSTOOLS3_CFLAGS += -D NUMBER_OF_MODEMS=$(BR2_PACKAGE_SMSTOOLS3_NB_MODEMS)\nSMSTOOLS3_CFLAGS += -D NOSTATS\n\ndefine SMSTOOLS3_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" CFLAGS=\"$(SMSTOOLS3_CFLAGS)\" -C $(@D)\nendef\n\ndefine SMSTOOLS3_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/smstools3/S50smsd \\\n\t\t$(TARGET_DIR)/etc/init.d/S50smsd\nendef\n\ndefine SMSTOOLS3_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/src/smsd \\\n\t\t$(TARGET_DIR)/usr/bin/smsd\n\t$(INSTALL) -m 0755 -D $(@D)/scripts/sendsms \\\n\t\t$(TARGET_DIR)/usr/bin/sendsms\n\t$(INSTALL) -m 0644 -D $(@D)/examples/smsd.conf.easy \\\n\t\t$(TARGET_DIR)/etc/smsd.conf\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/snappy/Config.in",
    "content": "config BR2_PACKAGE_SNAPPY\n\tbool \"snappy\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Snappy is a compression/decompression library. It does not\n\t  aim for maximum compression, or compatibility with any other\n\t  compression library; instead, it aims for very high speeds\n\t  and reasonable compression.\n\n\t  http://google.github.io/snappy/\n\ncomment \"snappy needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/snappy/snappy.hash",
    "content": "# Locally calculated\nsha256 16b677f07832a612b0836178db7f374e414f94657c138e6993cbfc5dcc58651f  snappy-1.1.8.tar.gz\nsha256 55172044f7e241207117448a4d9d6ba1d0925c8ad66b5d4c08c70adfa9cc3de6  COPYING\n"
  },
  {
    "path": "package/snappy/snappy.mk",
    "content": "################################################################################\n#\n# snappy\n#\n################################################################################\n\nSNAPPY_VERSION = 1.1.8\nSNAPPY_SITE = $(call github,google,snappy,$(SNAPPY_VERSION))\nSNAPPY_LICENSE = BSD-3-Clause\nSNAPPY_LICENSE_FILES = COPYING\nSNAPPY_CPE_ID_VENDOR = google\nSNAPPY_INSTALL_STAGING = YES\nSNAPPY_CONF_OPTS = -DSNAPPY_BUILD_TESTS=OFF\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/sngrep/Config.in",
    "content": "comment \"sngrep needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_SNGREP\n\tbool \"sngrep\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  sngrep is a tool for displaying SIP calls message flows from\n\t  terminal.  It supports live capture to display realtime SIP\n\t  packets and can also be used as PCAP viewer.\n\n\t  https://github.com/irontec/sngrep\n"
  },
  {
    "path": "package/sngrep/sngrep.hash",
    "content": "# From https://github.com/irontec/sngrep/releases/download/v1.4.7/sngrep-1.4.7.tar.gz.md5sum\nmd5  78fe753e24f36ddaf627bc2b734f45ba  sngrep-1.4.7.tar.gz\n\n# Locally computed\nsha256  3c96aadd8b8c6b7adb5552d6fb4234f2000f15109b0f6c5feb632c81306cc49b  sngrep-1.4.7.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE\n"
  },
  {
    "path": "package/sngrep/sngrep.mk",
    "content": "################################################################################\n#\n# sngrep\n#\n################################################################################\n\nSNGREP_VERSION = 1.4.7\nSNGREP_SITE = $(call github,irontec,sngrep,v$(SNGREP_VERSION))\nSNGREP_LICENSE = GPL-3.0+\nSNGREP_LICENSE_FILES = LICENSE\nSNGREP_AUTORECONF = YES\nSNGREP_DEPENDENCIES = libpcap ncurses host-pkgconf\n\nSNGREP_CONF_ENV += \\\n\t$(if $(BR2_STATIC_LIBS),LIBS=\"`$(STAGING_DIR)/usr/bin/pcap-config --static --libs`\")\n\nSNGREP_CONF_OPTS += --disable-unicode\n\n# openssl and gnutls can't be enabled at the same time.\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nSNGREP_DEPENDENCIES += openssl\nSNGREP_CONF_OPTS += --with-openssl --without-gnutls\n# gnutls support also requires libgcrypt\nelse ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy)\nSNGREP_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config\nSNGREP_DEPENDENCIES += gnutls libgcrypt\nSNGREP_CONF_OPTS += --with-gnutls --without-openssl\nelse\nSNGREP_CONF_OPTS += --without-gnutls --without-openssl\nendif\n\nifeq ($(BR2_PACKAGE_PCRE),y)\nSNGREP_DEPENDENCIES += pcre\nSNGREP_CONF_OPTS += --with-pcre\nelse\nSNGREP_CONF_OPTS += --without-pcre\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/snmpclitools/Config.in",
    "content": "config BR2_PACKAGE_SNMPCLITOOLS\n\tbool \"snmpclitools\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_PYSMI # runtime\n\tselect BR2_PACKAGE_PYTHON_PYSNMP # runtime\n\thelp\n\t  SNMP command-line tools.\n\n\t  https://github.com/etingof/snmpclitools\n"
  },
  {
    "path": "package/snmpclitools/snmpclitools.hash",
    "content": "# md5, sha256 from https://pypi.org/pypi/snmpclitools/json\nmd5\t132b100f5e7b80715e6c1d424e89687c  snmpclitools-0.6.4.tar.gz\nsha256\t820c45de419bf355c845a96610a395ec18a15176ac0362d388da7740266ea1ac  snmpclitools-0.6.4.tar.gz\n# Locally computed sha256 checksums\nsha256\ted5561a0f5b75e93aa026c1b9fdef58e7ccbf6b2e9a2458be732afc288209d23  PKG-INFO\n"
  },
  {
    "path": "package/snmpclitools/snmpclitools.mk",
    "content": "################################################################################\n#\n# snmpclitools\n#\n################################################################################\n\nSNMPCLITOOLS_VERSION = 0.6.4\nSNMPCLITOOLS_SITE = https://files.pythonhosted.org/packages/03/2a/8488828e92a82c5416e33fba6089283162937b0f73e5b15205fb6ec3bbea\nSNMPCLITOOLS_SETUP_TYPE = setuptools\nSNMPCLITOOLS_LICENSE = BSD-2-Clause\nSNMPCLITOOLS_LICENSE_FILES = PKG-INFO\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/snmppp/Config.in",
    "content": "config BR2_PACKAGE_SNMPPP\n\tbool \"snmp++\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  SNMP++v3.x is a C++ API which supports SNMP v1, v2c, and v3.\n\n\t  http://www.agentpp.com/snmp_pp3_x/snmp_pp3_x.html\n\nif BR2_PACKAGE_SNMPPP\n\nconfig BR2_PACKAGE_SNMPPP_LOGGING\n\tbool \"enable logging\"\n\thelp\n\t  Enable logging output for SNMP++.\n\t  According to the SNMP++ documentation, disabling logging\n\t  \"increases performance drastically and minimizes memory\n\t  consumption\".\n\nconfig BR2_PACKAGE_SNMPPP_SNMPV3\n\tbool \"enable SNMPv3\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Enable optional support for SNMP++. This selects OpenSSL.\n\ncomment \"SNMPv3 needs a toolchain w/ gcc >= 4.8\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\nendif\n\ncomment \"snmp++ needs a toolchain w/ threads, C++, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/snmppp/snmppp.hash",
    "content": "# Locally computed:\nsha256  a3eb75e2310c315d9b2c2094154c7cd9b46684adb80a4b36b8957dcc09af4041  snmp++-3.4.2.tar.gz\nsha256  f6fd4321c7eb6e51a272f91f964aea7f53039bb2b55f690d5a9d042f3a5d79b9  src/v3.cpp\n"
  },
  {
    "path": "package/snmppp/snmppp.mk",
    "content": "################################################################################\n#\n# snmppp\n#\n################################################################################\n\nSNMPPP_VERSION = 3.4.2\nSNMPPP_SOURCE = snmp++-$(SNMPPP_VERSION).tar.gz\nSNMPPP_SITE = http://www.agentpp.com/download\nSNMPPP_DEPENDENCIES = host-pkgconf\nSNMPPP_INSTALL_STAGING = YES\nSNMPPP_CONF_OPTS = $(if $(BR2_PACKAGE_SNMPPP_LOGGING),--enable-logging,--disable-logging)\nSNMPPP_LICENSE = SNMP++\nSNMPPP_LICENSE_FILES = src/v3.cpp\n\nifeq ($(BR2_PACKAGE_SNMPPP_SNMPV3),y)\nSNMPPP_CONF_ENV += CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\nSNMPPP_CONF_OPTS += --enable-snmpv3\nSNMPPP_DEPENDENCIES += openssl\nelse\nSNMPPP_CONF_OPTS += --disable-snmpv3\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/snort/0001-configure.in-Avoid-path-poisoning-with-libpcap.patch",
    "content": "From 732459ca3423799ae3386df3de3f5d6ea2af1b95 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@smile.fr>\nDate: Sun, 1 Apr 2018 15:18:51 +0200\nSubject: [PATCH] configure.in: Avoid path poisoning with libpcap\n\nPrevent usage of unsafe libpcap header path when cross compiling.\n\nSigned-off-by: Romain Naour <romain.naour@smile.fr>\nCc: Sergio Prado <sergio.prado@e-labworks.com>\n---\nFrom http://patchwork.ozlabs.org/patch/860363/\n---\n configure.in | 6 ++++--\n 1 file changed, 4 insertions(+), 2 deletions(-)\n\ndiff --git a/configure.in b/configure.in\nindex 4b3a5db..1e940b1 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -70,8 +70,10 @@ case \"$host\" in\n   *-linux*)\n     linux=\"yes\"\n     AC_DEFINE([LINUX],[1],[Define if Linux])\n-    AC_SUBST(extra_incl)\n-    extra_incl=\"-I/usr/include/pcap\"\n+    if test -z \"x$with_libpcap_includes\"; then\n+        AC_SUBST(extra_incl)\n+        extra_incl=\"-I/usr/include/pcap\"\n+    fi\n     ;;\n   *-hpux10*|*-hpux11*)\n     AC_DEFINE([HPUX],[1],[Define if HP-UX 10 or 11])\n-- \n2.14.3\n\n"
  },
  {
    "path": "package/snort/0002-configure.in-Allow-to-override-the-INADDR_NONE-check.patch",
    "content": "From a6817677a42d1294f1a3ce7b9f46b10ec557ddfa Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@smile.fr>\nDate: Sun, 1 Apr 2018 15:23:59 +0200\nSubject: [PATCH] configure.in: Allow to override the INADDR_NONE check\n\nPrevent configure script from trying to run programs in a cross\ncompilation environment to check if INADDR_NONE is defined.\n\nIn the context of Buildroot, INADDR_NONE is always defined.\nThe snort package will set have_inaddr_none=yes in\nSNORT_CONF_ENV.\n\nSigned-off-by: Romain Naour <romain.naour@smile.fr>\nCc: Sergio Prado <sergio.prado@e-labworks.com>\n---\n configure.in | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/configure.in b/configure.in\nindex 1e940b1..938409f 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -284,8 +284,8 @@ AC_CHECK_TYPES([int8_t,int16_t,int32_t,int64_t])\n AC_CHECK_TYPES([boolean])\n \n # In case INADDR_NONE is not defined (like on Solaris)\n+AC_CACHE_CHECK([for INADDR_NONE], [have_inaddr_none], [\n have_inaddr_none=\"no\"\n-AC_MSG_CHECKING([for INADDR_NONE])\n AC_RUN_IFELSE(\n [AC_LANG_PROGRAM(\n [[\n@@ -298,7 +298,7 @@ AC_RUN_IFELSE(\n     return 0;\n ]])],\n [have_inaddr_none=\"yes\"],\n-[have_inaddr_none=\"no\"])\n+[have_inaddr_none=\"no\"])])\n AC_MSG_RESULT($have_inaddr_none)\n if test \"x$have_inaddr_none\" = \"xno\"; then\n \tAC_DEFINE([INADDR_NONE],[-1],[For INADDR_NONE definition])\n-- \n2.14.3\n\n"
  },
  {
    "path": "package/snort/0003-configure.in-convert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch",
    "content": "From 1ef6bdaeb0463a208a14e5d90646ce337df738fc Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@smile.fr>\nDate: Sun, 1 Apr 2018 15:38:55 +0200\nSubject: [PATCH] configure.in: convert AC_RUN_IFELSE to AC_CHECK_MEMBERS\n\nWith AC_CHECK_MEMBERS, we don't need to compile and run a test program\nto check if a daq structure element is defined.\n\nAlso check DAQ_Data_Channel_Params_t with params.flags\n\ntypedef struct _DAQ_Data_Channel_Params_t\n{\n    unsigned flags;     /* DAQ_DATA_CHANNEL_* flags*/\n    unsigned timeout_ms;/* timeout of the data channel in milliseconds */\n    unsigned length;    /* [Future] length of the data associated with the data channel */\n    uint8_t* data;      /* [Future] opaque data blob to return with the data channel */\n} DAQ_Data_Channel_Params_t;\n\nhttps://github.com/Xiche/libdaq/blob/master/api/daq_common.h\n\nSigned-off-by: Romain Naour <romain.naour@smile.fr>\nCc: Sergio Prado <sergio.prado@e-labworks.com>\n---\n configure.in | 143 +++++++++++++++++------------------------------------------\n 1 file changed, 41 insertions(+), 102 deletions(-)\n\ndiff --git a/configure.in b/configure.in\nindex 938409f..571322b 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -718,17 +718,11 @@ fi\n AC_CHECK_FUNCS([daq_hup_apply] [daq_acquire_with_meta] [daq_dp_add_dc])\n \n AC_MSG_CHECKING([for daq real addresses])\n-AC_RUN_IFELSE(\n-[AC_LANG_PROGRAM(\n-[[\n-#include <daq.h>\n-]],\n-[[\n-   DAQ_PktHdr_t hdr;\n-   hdr.n_real_dPort = 0;\n-]])],\n-[have_daq_real_addresses=\"yes\"],\n-[have_daq_real_addresses=\"no\"])\n+\n+AC_CHECK_MEMBERS([DAQ_PktHdr_t hdr.n_real_dPort],\n+    [have_daq_real_addresses=\"yes\"],\n+    [have_daq_real_addresses=\"no\"],\n+    [[#include <daq.h>]])\n AC_MSG_RESULT($have_daq_real_addresses)\n if test \"x$have_daq_real_addresses\" = \"xyes\"; then\n     AC_DEFINE([HAVE_DAQ_REAL_ADDRESSES],[1],\n@@ -756,17 +750,11 @@ if test \"x$ac_cv_func_daq_dp_add_dc\" = \"xyes\"; then\n fi\n \n AC_MSG_CHECKING([for daq address space ID])\n-AC_RUN_IFELSE(\n-[AC_LANG_PROGRAM(\n-[[\n-#include <daq.h>\n-]],\n-[[\n-   DAQ_PktHdr_t hdr;\n-   hdr.address_space_id = 0;\n-]])],\n-[have_daq_address_space_id=\"yes\"],\n-[have_daq_address_space_id=\"no\"])\n+\n+AC_CHECK_MEMBERS([DAQ_PktHdr_t hdr.address_space_id],\n+    [have_daq_address_space_id=\"yes\"],\n+    [have_daq_address_space_id=\"no\"],\n+    [[#include <daq.h>]])\n AC_MSG_RESULT($have_daq_address_space_id)\n if test \"x$have_daq_address_space_id\" = \"xyes\"; then\n     AC_DEFINE([HAVE_DAQ_ADDRESS_SPACE_ID],[1],\n@@ -774,17 +762,10 @@ if test \"x$have_daq_address_space_id\" = \"xyes\"; then\n fi\n \n AC_MSG_CHECKING([for daq flow ID])\n-AC_RUN_IFELSE(\n-[AC_LANG_PROGRAM(\n-[[\n-#include <daq.h>\n-]],\n-[[\n-   DAQ_PktHdr_t hdr;\n-   hdr.flow_id = 0;\n-]])],\n-[have_daq_flow_id=\"yes\"],\n-[have_daq_flow_id=\"no\"])\n+AC_CHECK_MEMBERS([DAQ_PktHdr_t hdr.flow_id],\n+    [have_daq_flow_id=\"yes\"],\n+    [have_daq_flow_id=\"no\"],\n+    [[#include <daq.h>]])\n AC_MSG_RESULT($have_daq_flow_id)\n if test \"x$have_daq_flow_id\" = \"xyes\"; then\n     AC_DEFINE([HAVE_DAQ_FLOW_ID],[1],\n@@ -792,19 +773,10 @@ if test \"x$have_daq_flow_id\" = \"xyes\"; then\n fi\n \n AC_MSG_CHECKING([for daq extended flow modifiers])\n-AC_RUN_IFELSE(\n-[AC_LANG_PROGRAM(\n-[[\n-#include <daq.h>\n-]],\n-[[\n-   DAQ_ModFlow_t mod;\n-   mod.type = 0;\n-   mod.length = 0;\n-   mod.value = NULL;\n-]])],\n-[have_daq_ext_modflow=\"yes\"],\n-[have_daq_ext_modflow=\"no\"])\n+AC_CHECK_MEMBERS([DAQ_ModFlow_t mod.type, DAQ_ModFlow_t mod.length, DAQ_ModFlow_t mod.value],\n+    [have_daq_ext_modflow=\"yes\"],\n+    [have_daq_ext_modflow=\"no\"],\n+    [[#include <daq.h>]])\n AC_MSG_RESULT($have_daq_ext_modflow)\n if test \"x$have_daq_ext_modflow\" = \"xyes\"; then\n     CCONFIGFLAGS=\"${CCONFIGFLAGS} -DHAVE_DAQ_EXT_MODFLOW\"\n@@ -813,19 +785,11 @@ if test \"x$have_daq_ext_modflow\" = \"xyes\"; then\n fi\n \n AC_MSG_CHECKING([for daq query flow])\n-AC_RUN_IFELSE(\n-[AC_LANG_PROGRAM(\n-[[\n-#include <daq.h>\n-]],\n-[[\n-   DAQ_QueryFlow_t mod;\n-   mod.type = 0;\n-   mod.length = 0;\n-   mod.value = NULL;\n-]])],\n-[have_daq_queryflow=\"yes\"],\n-[have_daq_queryflow=\"no\"])\n+\n+AC_CHECK_MEMBERS([DAQ_QueryFlow_t mod.type, DAQ_QueryFlow_t mod.length, DAQ_QueryFlow_t mod.value],\n+    [have_daq_queryflow=\"yes\"],\n+    [have_daq_queryflow=\"no\"],\n+    [[#include <daq.h>]])\n AC_MSG_RESULT($have_daq_queryflow)\n if test \"x$have_daq_queryflow\" = \"xyes\"; then\n     CCONFIGFLAGS=\"${CCONFIGFLAGS} -DHAVE_DAQ_QUERYFLOW\"\n@@ -834,16 +798,11 @@ if test \"x$have_daq_queryflow\" = \"xyes\"; then\n fi\n \n AC_MSG_CHECKING([for daq data channel flags])\n-AC_RUN_IFELSE(\n-[AC_LANG_PROGRAM(\n-[[\n-#include <daq.h>\n-]],\n-[[\n-   DAQ_Data_Channel_Params_t params;\n-]])],\n-[have_daq_data_channel_flags=\"yes\"],\n-[have_daq_data_channel_flags=\"no\"])\n+\n+AC_CHECK_MEMBERS([DAQ_Data_Channel_Params_t params.flags],\n+    [have_daq_data_channel_flags=\"yes\"],\n+    [have_daq_data_channel_flags=\"no\"],\n+    [[#include <daq.h>]])\n AC_MSG_RESULT($have_daq_data_channel_flags)\n if test \"x$have_daq_data_channel_flags\" = \"xyes\"; then\n     CCONFIGFLAGS=\"${CCONFIGFLAGS} -DHAVE_DAQ_DATA_CHANNEL_PARAMS\"\n@@ -852,17 +811,10 @@ if test \"x$have_daq_data_channel_flags\" = \"xyes\"; then\n fi\n \n AC_MSG_CHECKING([for separate IP versions on pinhole endpoints])\n-AC_RUN_IFELSE(\n-[AC_LANG_PROGRAM(\n-[[\n-#include <daq.h>\n-]],\n-[[\n-   DAQ_DP_key_t dpKey;\n-   dpKey.src_af = 0;\n-]])],\n-[have_daq_data_channel_separate_ip_versions=\"yes\"],\n-[have_daq_data_channel_separate_ip_versions=\"no\"])\n+AC_CHECK_MEMBERS([DAQ_DP_key_t dpKey.src_af],\n+    [have_daq_data_channel_separate_ip_versions=\"yes\"],\n+    [have_daq_data_channel_separate_ip_versions=\"no\"],\n+    [[#include <daq.h>]])\n AC_MSG_RESULT($have_daq_data_channel_separate_ip_versions)\n if test \"x$have_daq_data_channel_separate_ip_versions\" = \"xyes\"; then\n     CCONFIGFLAGS=\"${CCONFIGFLAGS} -DHAVE_DAQ_DATA_CHANNEL_SEPARATE_IP_VERSIONS\"\n@@ -889,17 +841,10 @@ if test \"x$have_daq_verdict_retry\" = \"xyes\"; then\n fi\n \n AC_MSG_CHECKING([for daq packet trace])\n-AC_RUN_IFELSE(\n-[AC_LANG_PROGRAM(\n-[[\n-#include <daq.h>\n-]],\n-[[\n-   DAQ_PktHdr_t hdr;\n-   hdr.flags = DAQ_PKT_FLAG_TRACE_ENABLED;\n-]])],\n-[have_daq_packet_trace=\"yes\"],\n-[have_daq_packet_trace=\"no\"])\n+AC_CHECK_MEMBERS([DAQ_PktHdr_t hdr.flags],\n+    [have_daq_packet_trace=\"yes\"],\n+    [have_daq_packet_trace=\"no\"],\n+    [[#include <daq.h>]])\n AC_MSG_RESULT($have_daq_packet_trace)\n if test \"x$have_daq_packet_trace\" = \"xyes\"; then\n     AC_DEFINE([HAVE_DAQ_PKT_TRACE],[1],\n@@ -909,17 +854,11 @@ else\n fi\n \n AC_MSG_CHECKING([for daq verdict reason])\n-AC_RUN_IFELSE(\n-[AC_LANG_PROGRAM(\n-[[\n-#include <daq.h>\n-]],\n-[[\n-   DAQ_ModFlow_t fl;\n-   fl.type = DAQ_MODFLOW_TYPE_VER_REASON;\n-]])],\n-[have_daq_verdict_reason=\"yes\"],\n-[have_daq_verdict_reason=\"no\"])\n+\n+AC_CHECK_MEMBERS([DAQ_ModFlow_t fl.type],\n+    [have_daq_verdict_reason=\"yes\"],\n+    [have_daq_verdict_reason=\"no\"],\n+    [[#include <daq.h>]])\n AC_MSG_RESULT($have_daq_verdict_reason)\n if test \"x$have_daq_verdict_reason\" = \"xyes\"; then\n     AC_DEFINE([HAVE_DAQ_VERDICT_REASON],[1],\n-- \n2.14.3\n\n"
  },
  {
    "path": "package/snort/0004-configure.in-convert-AC_RUN_IFELSE-to-AC_COMPILE_IFE.patch",
    "content": "From 075b5cf8d3940ed2c39fb37c1e14a652e4a6f2fc Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@smile.fr>\nDate: Sun, 1 Apr 2018 16:21:31 +0200\nSubject: [PATCH] configure.in: convert AC_RUN_IFELSE to AC_COMPILE_IFELSE\n\nPrevent configure script from trying to run programs in a cross\ncompilation environment.\n\nSigned-off-by: Romain Naour <romain.naour@smile.fr>\nCc: Sergio Prado <sergio.prado@e-labworks.com>\n---\n configure.in | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/configure.in b/configure.in\nindex 571322b..e489037 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -431,7 +431,7 @@ if test \"x$LPCAP\" = \"xno\"; then\n fi\n \n AC_MSG_CHECKING([for pcap_lex_destroy])\n-AC_RUN_IFELSE(\n+AC_COMPILE_IFELSE(\n [AC_LANG_PROGRAM(\n [[\n #include <pcap.h>\n@@ -823,7 +823,7 @@ if test \"x$have_daq_data_channel_separate_ip_versions\" = \"xyes\"; then\n fi\n \n AC_MSG_CHECKING([for DAQ_VERDICT_RETRY])\n-AC_RUN_IFELSE(\n+AC_COMPILE_IFELSE(\n [AC_LANG_PROGRAM(\n [[\n #include <daq.h>\n@@ -886,7 +886,7 @@ if eval \"echo $host_cpu|grep -i sparc >/dev/null\"; then\n     OLD_CFLAGS=\"$CFLAGS\"\n     CFLAGS=\"$CFLAGS -mcpu=v9 \"\n     AC_MSG_CHECKING([for sparc %time register])\n-    AC_RUN_IFELSE(\n+    AC_COMPILE_IFELSE(\n     [AC_LANG_PROGRAM(\n     [[]],\n     [[\n-- \n2.14.3\n\n"
  },
  {
    "path": "package/snort/0005-fix-sparc.patch",
    "content": "When checking if the architecture supports the %time register\ninstruction, do not force -mcpu to v9 while doing so. Otherwise it's\nlike \"let's see if this v9 instruction exists when I force the compiler\nto think I'm using v9\", which is non-sensical.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -Naurp ./snort-2.9.11.1-orig/configure.in snort-2.9.11.1/configure.in\n--- ./snort-2.9.11.1-orig/configure.in\t2018-05-10 12:20:19.253510678 +0200\n+++ snort-2.9.11.1/configure.in\t2018-05-10 12:40:18.547584998 +0200\n@@ -942,8 +942,6 @@ fi\n \n # check for sparc %time register\n if eval \"echo $host_cpu|grep -i sparc >/dev/null\"; then\n-    OLD_CFLAGS=\"$CFLAGS\"\n-    CFLAGS=\"$CFLAGS -mcpu=v9 \"\n     AC_MSG_CHECKING([for sparc %time register])\n     AC_RUN_IFELSE(\n     [AC_LANG_PROGRAM(\n@@ -957,8 +955,6 @@ if eval \"echo $host_cpu|grep -i sparc >/\n     AC_MSG_RESULT($sparcv9)\n     if test \"x$sparcv9\" = \"xyes\"; then\n         AC_DEFINE([SPARCV9],[1],[For sparc v9 with %time register])\n-    else\n-        CFLAGS=\"$OLD_CFLAGS\"\n     fi\n fi\n \n"
  },
  {
    "path": "package/snort/0006-Fix-compile-error-when-building-against-uclibc-or-mu.patch",
    "content": "From dc2f54097da3cd493b8f4d06a14ef40be484d24f Mon Sep 17 00:00:00 2001\nFrom: Sergio Prado <sergio.prado@e-labworks.com>\nDate: Thu, 21 Feb 2019 15:02:08 -0300\nSubject: [PATCH] Fix compile error when building against uclibc or musl\n\nThe build fails when dereferencing the rpcent structure with uclibc or musl C libraries.\n\n../../../src/dynamic-preprocessors/appid/service_plugins/service_rpc.c:241:20:\nerror: dereferencing pointer to incomplete type ‘struct rpcent’\n             if (rpc->r_name)\n\nThat's because rpc.h should be included when using these C libraries.\n\nSigned-off-by: Sergio Prado <sergio.prado@e-labworks.com>\n---\n src/dynamic-preprocessors/appid/service_plugins/service_rpc.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/dynamic-preprocessors/appid/service_plugins/service_rpc.c b/src/dynamic-preprocessors/appid/service_plugins/service_rpc.c\nindex 81bc8a5db8ab..2e45246083a8 100644\n--- a/src/dynamic-preprocessors/appid/service_plugins/service_rpc.c\n+++ b/src/dynamic-preprocessors/appid/service_plugins/service_rpc.c\n@@ -32,7 +32,7 @@\n #include \"flow.h\"\n #include \"service_api.h\"\n \n-#if defined(FREEBSD) || defined(OPENBSD)\n+#if defined(FREEBSD) || defined(OPENBSD) || (defined(LINUX) && defined(__UCLIBC__) && !defined(__UCLIBC_HAS_RPC__) || !defined(__GLIBC__))\n #include \"rpc/rpc.h\"\n #endif\n \n-- \n2.7.4\n\n"
  },
  {
    "path": "package/snort/0007-Fix-error-when-building-on-a-Fedora-host-machine.patch",
    "content": "From eae97632157b73f0ca7c099232617b2777d0fa54 Mon Sep 17 00:00:00 2001\nFrom: Sergio Prado <sergio.prado@e-labworks.com>\nDate: Sat, 21 Dec 2019 12:00:42 -0300\nSubject: [PATCH] Fix error when building on a Fedora host machine.\n\nRemove the code that adds unsafe header/library path when\ncross-compiling on a Fedora host machine.\n\nSigned-off-by: Sergio Prado <sergio.prado@e-labworks.com>\n[Fabrice: Update for 2.9.18.1 (also fix build on Centos host machine)]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.in | 24 ------------------------\n 1 file changed, 24 deletions(-)\n\ndiff --git a/configure.in b/configure.in\nindex e6586f399898..fb35d4d7e3e3 100644\n--- a/configure.in\n+++ b/configure.in\n@@ -957,54 +957,6 @@ if test \"x$enable_dlclose\" = \"xno\"; then\n     AC_DEFINE([DISABLE_DLCLOSE_FOR_VALGRIND_TESTING],[1],[Don't close opened shared objects for valgrind leak testing of dynamic libraries])\n fi\n \n-##################################################\n-# Fedora 28+ does not have inbuilt SunRPC support#\n-# in glibc and is separately availble in tirpc   #\n-# package. Make sure we've got the library and   #\n-# link it                                        #\n-##################################################\n-\n-if test -f /etc/fedora-release ; then\n-    DISTRO_VERSION=$(awk '{ print $3 }' /etc/fedora-release)\n-    if test $DISTRO_VERSION -ge 28 ; then\n-        TIRPC=\"\"\n-        AC_CHECK_LIB(tirpc,bindresvport,, TIRPC=\"no\")\n-        echo \"$TIRPC\"\n-        if test \"x$TIRPC\" = \"xno\"; then\n-            echo\n-            echo \" ERROR! tirpc not found, get it by running \"\n-            echo \" yum install libtirpc-devel \"\n-            exit\n-        fi\n-        LIBS=\"${LIBS} -ltirpc\"\n-        extra_incl=\"-I/usr/include/tirpc\"\n-    fi\n-fi\n-\n-##################################################\n-# Centos 8+ does not have inbuilt SunRPC support  #\n-# in glibc and is separately availble in tirpc   #\n-# package. Make sure we've got the library and   #\n-# link it                                        #\n-##################################################\n-if test -f /etc/centos-release ; then\n-    LINUX_FLAVOUR=$(awk '{ print $1 }' /etc/centos-release)\n-    DISTRO_VERSION=`cut -d ' ' -f 4 /etc/centos-release | cut -d '.' -f 1`\n-    if [[ \"$LINUX_FLAVOUR\" == \"CentOS\" ]] && [[ $DISTRO_VERSION -ge 8 ]]; then\n-        TIRPC=\"\"\n-        AC_CHECK_LIB(tirpc,bindresvport,, TIRPC=\"no\")\n-        echo \"$TIRPC\"\n-        if test \"x$TIRPC\" = \"xno\"; then\n-            echo\n-            echo \" ERROR! tirpc not found, get it by running \"\n-            echo \" yum install libtirpc-devel or dnf install libtirpc-devel\"\n-            exit\n-        fi\n-        LIBS=\"${LIBS} -ltirpc\"\n-        extra_incl=\"-I/usr/include/tirpc\"\n-    fi\n-fi\n-\n Z_LIB=\"\"\n AC_CHECK_HEADERS(zlib.h,, Z_LIB=\"no\")\n if test \"x$Z_LIB\" = \"xno\"; then\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/snort/Config.in",
    "content": "config BR2_PACKAGE_SNORT\n\tbool \"snort\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # daq\n\tdepends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc\n\tselect BR2_PACKAGE_LIBDNET\n\tselect BR2_PACKAGE_LIBPCAP\n\tselect BR2_PACKAGE_DAQ\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Snort is a free and open source network intrusion\n\t  prevention system (IPS) and network intrusion detection\n\t  system (IDS). It can perform protocol analysis, content\n\t  searching/matching, and can be used to detect a variety\n\t  of attacks and probes, such as buffer overflows, stealth\n\t  port scans, CGI attacks, SMB probes, OS fingerprinting\n\t  attempts, and much more.\n\n\t  https://www.snort.org\n\ncomment \"snort needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS || \\\n\t\t!(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC)\n"
  },
  {
    "path": "package/snort/snort.hash",
    "content": "# From https://www.snort.org/downloads/snort/md5s\nmd5  2b4e30300ef6feca1f60c267e727c6c0  snort-2.9.18.1.tar.gz\n\n# Locally computed:\nsha256  da8af0f1b2e4f247d970c6a3c0e83fb6dcd5c84faa21aea49f306f269e8e28aa  snort-2.9.18.1.tar.gz\n\n# Hash for license files:\nsha256  f98260a6d3e5ef4ede8a2a6b698e5ac91d64c09243f7171e1c5b17b920a835c7  LICENSE\nsha256  3f1cbfb20bb2c608e1a474421880d08b8cba6abb00ab7736d22c481d71656a6d  COPYING\n"
  },
  {
    "path": "package/snort/snort.mk",
    "content": "################################################################################\n#\n# snort\n#\n################################################################################\n\nSNORT_VERSION = 2.9.18.1\nSNORT_SITE = https://www.snort.org/downloads/snort\nSNORT_LICENSE = GPL-2.0\nSNORT_LICENSE_FILES = LICENSE COPYING\nSNORT_CPE_ID_VENDOR = snort\nSNORT_SELINUX_MODULES = snort\n\nSNORT_DEPENDENCIES = libpcap libdnet daq pcre zlib host-pkgconf\n\n# patching configure.in\nSNORT_AUTORECONF = YES\n\nSNORT_CONF_OPTS = \\\n\t--with-libpcre-includes=$(STAGING_DIR)/usr/include \\\n\t--with-libpcre-libraries=$(STAGING_DIR)/usr/lib \\\n\t--with-libpcap-includes=$(STAGING_DIR)/usr/include/pcap \\\n\t--disable-static-daq\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nSNORT_CFLAGS += -O0\nendif\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nSNORT_DEPENDENCIES += libtirpc\nSNORT_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`\nSNORT_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`\nendif\n\n# luajit and openssl should be enabled to build with\n# OpenAppID support\nifeq ($(BR2_PACKAGE_LUAJIT)$(BR2_PACKAGE_OPENSSL),yy)\nSNORT_DEPENDENCIES += luajit openssl\nSNORT_CONF_OPTS += --enable-open-appid\nelse\nSNORT_CONF_OPTS += --disable-open-appid\nendif\n\nSNORT_CONF_ENV = \\\n\tCFLAGS=\"$(TARGET_CFLAGS) $(SNORT_CFLAGS)\" \\\n\tLIBS=\"$(SNORT_LIBS)\" \\\n\thave_inaddr_none=yes\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/snort3/Config.in",
    "content": "config BR2_PACKAGE_SNORT3\n\tbool \"snort3\"\n\tdepends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS # luajit\n\tdepends on !(BR2_PACKAGE_DAQ || BR2_PACKAGE_SNORT)\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS # daq3\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # daq3, hwloc\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_DAQ3\n\tselect BR2_PACKAGE_FLEX\n\tselect BR2_PACKAGE_HWLOC\n\tselect BR2_PACKAGE_LIBDNET\n\tselect BR2_PACKAGE_LIBPCAP\n\tselect BR2_PACKAGE_LUAJIT\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Snort 3 is the next generation Snort IPS (Intrusion\n\t  Prevention System).\n\n\t  - Support multiple packet processing threads\n\t  - Shared configuration and attribute table\n\t  - Use a simple, scriptable configuration\n\t  - Make key components pluggable\n\t  - Autodetect services for portless configuration\n\t  - Support sticky buffers in rules\n\t  - Autogenerate reference documentation\n\t  - Provide better cross platform support\n\n\t  https://www.snort.org/snort3\n\ncomment \"snort3 needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS\n\tdepends on !(BR2_PACKAGE_DAQ || BR2_PACKAGE_SNORT)\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/snort3/snort3.hash",
    "content": "# Locally computed:\nsha256  4f7852898eaac48a7cfaff61c79a3c3a5a86a54db9d2a7d5b758297bf52f1f12  snort3-3.1.6.0.tar.gz\n\n# Hash for license files:\nsha256  3f1cbfb20bb2c608e1a474421880d08b8cba6abb00ab7736d22c481d71656a6d  COPYING\nsha256  f98260a6d3e5ef4ede8a2a6b698e5ac91d64c09243f7171e1c5b17b920a835c7  LICENSE\n"
  },
  {
    "path": "package/snort3/snort3.mk",
    "content": "################################################################################\n#\n# snort3\n#\n################################################################################\n\nSNORT3_VERSION = 3.1.6.0\nSNORT3_SITE = $(call github,snort3,snort3,$(SNORT3_VERSION))\nSNORT3_LICENSE = GPL-2.0\nSNORT3_LICENSE_FILES = COPYING LICENSE\n\nSNORT3_DEPENDENCIES = \\\n\thost-pkgconf daq3 flex hwloc libdnet libpcap luajit openssl pcre zlib\n\nSNORT3_CONF_OPTS = \\\n\t-DENABLE_GDB=OFF \\\n\t-DENABLE_STATIC_DAQ=OFF \\\n\t-DMAKE_DOC=OFF\n\nifeq ($(BR2_PACKAGE_FLATBUFFERS),y)\nSNORT3_DEPENDENCIES += flatbuffers\nSNORT3_CONF_OPTS += -DHAVE_FLATBUFFERS=ON\nelse\nSNORT3_CONF_OPTS += -DHAVE_FLATBUFFERS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nSNORT3_DEPENDENCIES += libiconv\nSNORT3_CONF_OPTS += -DHAVE_ICONV=ON\nendif\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nSNORT3_DEPENDENCIES += libtirpc\nendif\n\nifeq ($(BR2_PACKAGE_SAFECLIB),y)\nSNORT3_DEPENDENCIES += safeclib\nSNORT3_CONF_OPTS += -DENABLE_SAFEC=ON\nelse\nSNORT3_CONF_OPTS += -DENABLE_SAFEC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)\nSNORT3_DEPENDENCIES += util-linux\nSNORT3_CONF_OPTS += -DHAVE_UUID=ON\nelse\nSNORT3_CONF_OPTS += -DHAVE_UUID=OFF\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nSNORT3_DEPENDENCIES += xz\nSNORT3_CONF_OPTS += -DHAVE_LZMA=ON\nelse\nSNORT3_CONF_OPTS += -DHAVE_LZMA=OFF\nendif\n\n# Uses __atomic_load_8\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nSNORT3_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/socat/0001-no-documentation.patch",
    "content": "socat: disable documentation build/installation\n\nThe documentation generation process requires a special yold2man\nprogram, for which we don't have a package in Buildroot. Since we\ngenerally don't care much about documentation of packages, just adjust\nthe package Makefile.in to not build/install its documentation.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/Makefile.in\n===================================================================\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -93,7 +93,7 @@\n \tConfig/Makefile.Cygwin-1-5-25 Config/config.Cygwin-1-5-25.h \\\n \tConfig/Makefile.MacOSX-10-5 Config/config.MacOSX-10-5.h\n \n-all: progs doc\n+all: progs\n \n scmclean: gitclean\n \n@@ -136,13 +136,11 @@\n strip: progs\n \tstrip $(PROGS)\n \n-install: progs $(srcdir)/doc/socat.1\n+install: progs\n \tmkdir -p $(DESTDIR)$(BINDEST)\n \t$(INSTALL) -m 755 socat $(DESTDIR)$(BINDEST)\n \t$(INSTALL) -m 755 procan $(DESTDIR)$(BINDEST)\n \t$(INSTALL) -m 755 filan $(DESTDIR)$(BINDEST)\n-\tmkdir -p $(DESTDIR)$(MANDEST)/man1\n-\t$(INSTALL) -m 644 $(srcdir)/doc/socat.1 $(DESTDIR)$(MANDEST)/man1/\n \n uninstall:\n \trm -f $(DESTDIR)$(BINDEST)/socat\n"
  },
  {
    "path": "package/socat/0002-compat-set-NETDB_INTERNAL.patch",
    "content": "From e7804d1750652e39c7a5803d360b29b2637a695f Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sun, 28 Aug 2016 21:04:01 +0200\nSubject: [PATCH] compat: set NETDB_INTERNAL\n\nMusl doesn't provide NETDB_INTERNAL which is defined in resolv/netdb.h\nin Glibc [1].\n\nSet NETDB_INTERNAL to -1 locally if not already defined.\nBased on [2].\n\n[1] https://sourceware.org/git/?p=glibc.git;a=blob;f=resolv/netdb.h;h=3aba530932c7a62a4f23e3193e9186da677f552b;hb=fdfc9260b61d3d72541f18104d24c7bcb0ce5ca2#l74\n[2] http://git.alpinelinux.org/cgit/aports/tree/main/socat/netdb-internal.patch?id=5a45173b50892cb634197c30b3506ebff98d3b7d\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n compat.h | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/compat.h b/compat.h\nindex 19a929f..4f5ee6d 100644\n--- a/compat.h\n+++ b/compat.h\n@@ -666,6 +666,8 @@ typedef int sig_atomic_t;\n \n #if !defined(NETDB_INTERNAL) && defined(h_NETDB_INTERNAL)\n #  define NETDB_INTERNAL h_NETDB_INTERNAL\n+#elif !defined(NETDB_INTERNAL)\n+#  define NETDB_INTERNAL (-1)\n #endif\n \n #ifndef INET_ADDRSTRLEN\n-- \n2.5.5\n\n"
  },
  {
    "path": "package/socat/Config.in",
    "content": "config BR2_PACKAGE_SOCAT\n\tbool \"socat\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Multipurpose socket relay program.\n\n\t  http://www.dest-unreach.org/socat/\n"
  },
  {
    "path": "package/socat/socat.hash",
    "content": "# From http://www.dest-unreach.org/socat/download.md5sum\nmd5  36cad050ecf4981ab044c3fbd75c643f  socat-1.7.4.1.tar.bz2\n# From http://www.dest-unreach.org/socat/download.sha256sum\nsha256  3faca25614e89123dff5045680549ecef519d02e331aaf3c4f5a8f6837c675e9  socat-1.7.4.1.tar.bz2\n# Locally calculated\nsha256  b1ebebbce145027f4268211f36d121b083aeeabdc1736eb144b8afd8e86ce8da  README\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  fd9e48ca316a5032069b9521f4f4b4d9b1c60365012bae1e62286bcd5bd2e761  COPYING.OpenSSL\n"
  },
  {
    "path": "package/socat/socat.mk",
    "content": "################################################################################\n#\n# socat\n#\n################################################################################\n\nSOCAT_VERSION = 1.7.4.1\nSOCAT_SOURCE = socat-$(SOCAT_VERSION).tar.bz2\nSOCAT_SITE = http://www.dest-unreach.org/socat/download\nSOCAT_LICENSE = GPL-2.0 with OpenSSL exception\nSOCAT_LICENSE_FILES = README COPYING COPYING.OpenSSL\nSOCAT_CPE_ID_VENDOR = dest-unreach\n\nifeq ($(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),y)\nSOCAT_CONF_ENV += \\\n\tsc_cv_sys_crdly_shift=12 \\\n\tsc_cv_sys_tabdly_shift=10 \\\n\tsc_cv_sys_csize_shift=8\nelse\nSOCAT_CONF_ENV += \\\n\tsc_cv_sys_crdly_shift=9 \\\n\tsc_cv_sys_tabdly_shift=11 \\\n\tsc_cv_sys_csize_shift=4\nendif\n\n# We need to run autoconf to regenerate the configure script, since we patch\n# configure.in and Makefile.in. However, the package only uses autoconf and not\n# automake, so we can't use the normal autoreconf logic.\n\nSOCAT_DEPENDENCIES = host-autoconf\n# incompatibile license (GPL-3.0+)\nSOCAT_CONF_OPTS = --disable-readline\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nSOCAT_DEPENDENCIES += openssl\nelse\nSOCAT_CONF_OPTS += --disable-openssl\nendif\n\ndefine SOCAT_RUN_AUTOCONF\n\t(cd $(@D); $(AUTOCONF))\nendef\n\nSOCAT_PRE_CONFIGURE_HOOKS += SOCAT_RUN_AUTOCONF\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/socketcand/0001-Fix-GCC10-build-failure.patch",
    "content": "From ae0af080058a576d62c72ffc011d644d0b4dcb98 Mon Sep 17 00:00:00 2001\nFrom: Yegor Yefremov <yegorslists@googlemail.com>\nDate: Tue, 7 Jul 2020 19:39:41 +0200\nSubject: [PATCH] Fix GCC10 build failure (#17)\n\nGCC10 breaks on multiple definitions:\n\nld: /tmp/ccFiGYO7.o:(.bss+0x114): multiple definition of `tv'; /tmp/cc7f6J5h.o:(.bss+0x80): first defined here\n\nChange the scope of the related variables.\n\nSigned-off-by: Yegor Yefremov <yegorslists@googlemail.com>\n\n[Retrieved from:\nhttps://github.com/linux-can/socketcand/commit/ae0af080058a576d62c72ffc011d644d0b4dcb98]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n socketcand.c  | 3 ++-\n state_bcm.c   | 4 ++--\n state_isotp.c | 2 +-\n state_raw.c   | 2 +-\n 4 files changed, 6 insertions(+), 5 deletions(-)\n\ndiff --git a/socketcand.c b/socketcand.c\nindex 8d84754..6125be9 100644\n--- a/socketcand.c\n+++ b/socketcand.c\n@@ -102,7 +102,6 @@ socklen_t unaddrlen;\n struct sockaddr_un remote_unaddr;\n socklen_t remote_unaddrlen;\n char* interface_string;\n-struct ifreq ifr, ifr_brd;\n \n int state_changed(char *buf, int current_state)\n {\n@@ -666,6 +665,8 @@ int receive_command(int socket, char *buffer) {\n }\n \n void determine_adress() {\n+\tstruct ifreq ifr, ifr_brd;\n+\n \tint probe_socket = socket(AF_INET, SOCK_DGRAM, 0);\n \n \tif(probe_socket < 0) {\ndiff --git a/state_bcm.c b/state_bcm.c\nindex cfaa8ed..05a5f7c 100644\n--- a/state_bcm.c\n+++ b/state_bcm.c\n@@ -28,8 +28,6 @@\n #define RXLEN 128\n \n int sc = -1;\n-fd_set readfds;\n-struct timeval tv;\n \n void state_bcm() {\n \tint i, j, ret;\n@@ -38,6 +36,7 @@ void state_bcm() {\n \tstruct ifreq ifr;\n \tchar rxmsg[RXLEN];\n \tchar buf[MAXLEN];\n+\tfd_set readfds;\n \n \tstruct {\n \t\tstruct bcm_msg_head msg_head;\n@@ -91,6 +90,7 @@ void state_bcm() {\n \t}\n \n \tif (FD_ISSET(sc, &readfds)) {\n+\t\tstruct timeval tv;\n \n \t\tret = recvfrom(sc, &msg, sizeof(msg), 0,\n \t\t\t       (struct sockaddr*)&caddr, &caddrlen);\ndiff --git a/state_isotp.c b/state_isotp.c\nindex 5c671f9..e1b944b 100644\n--- a/state_isotp.c\n+++ b/state_isotp.c\n@@ -25,7 +25,6 @@\n #include <linux/sockios.h>\n \n int si = -1;\n-fd_set readfds;\n \n void state_isotp() {\n \tint i, items, ret;\n@@ -39,6 +38,7 @@ void state_isotp() {\n \tchar buf[MAXLEN]; /* inet commands to can */\n \tunsigned char isobuf[ISOTPLEN+1]; /* binary buffer for isotp socket */\n \tunsigned char tmp;\n+\tfd_set readfds;\n \t\n \twhile(previous_state != STATE_ISOTP) {\n \ndiff --git a/state_raw.c b/state_raw.c\nindex e83e6ec..2c49975 100644\n--- a/state_raw.c\n+++ b/state_raw.c\n@@ -25,7 +25,6 @@\n int raw_socket;\n struct ifreq ifr;\n struct sockaddr_can addr;\n-fd_set readfds;\n struct msghdr msg;\n struct can_frame frame;\n struct iovec iov;\n@@ -36,6 +35,7 @@ struct cmsghdr *cmsg;\n void state_raw() {\n \tchar buf[MAXLEN];\n \tint i, ret, items;\n+\tfd_set readfds;\n \n \tif(previous_state != STATE_RAW) {\n \n"
  },
  {
    "path": "package/socketcand/Config.in",
    "content": "config BR2_PACKAGE_SOCKETCAND\n\tbool \"socketcand\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Socketcand is a daemon that provides access to CAN interfaces\n\t  on a machine via a network interface.\n\n\t  https://github.com/dschanoeh/socketcand\n\ncomment \"socketcand needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/socketcand/socketcand.hash",
    "content": "# Locally computed\nsha256  3c5cc7af4ff707ac344e62d2e37a74b59aeccd14b88e837cc142c52b69d64a39  socketcand-69e2201222f015a1abe7a58ecf61325012cd91b1.tar.gz\nsha256  18bda0db4e3c56cefdb1b9b01b7eada7764c0746f6321378c30d78f5ee81cfee  socketcand.c\n"
  },
  {
    "path": "package/socketcand/socketcand.mk",
    "content": "################################################################################\n#\n# socketcand\n#\n################################################################################\n\nSOCKETCAND_VERSION = 69e2201222f015a1abe7a58ecf61325012cd91b1\nSOCKETCAND_SITE = $(call github,linux-can,socketcand,$(SOCKETCAND_VERSION))\nSOCKETCAND_AUTORECONF = YES\nSOCKETCAND_LICENSE = BSD-3-Clause or GPL-2.0\nSOCKETCAND_LICENSE_FILES = socketcand.c\n\nifeq ($(BR2_PACKAGE_LIBCONFIG),y)\nSOCKETCAND_DEPENDENCIES += libconfig\nelse\nSOCKETCAND_CONF_OPTS = --without-config\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sofia-sip/Config.in",
    "content": "config BR2_PACKAGE_SOFIA_SIP\n\tbool \"sofia-sip\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Sofia-SIP is an open-source SIP User-Agent library,\n\t  compliant with the IETF RFC3261 specification (see the\n\t  feature table). It can be used as a building block for SIP\n\t  client software for uses such as VoIP, IM, and many other\n\t  real-time and person-to-person communication services.\n\n\t  https://github.com/freeswitch/sofia-sip\n\ncomment \"sofia-sip needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/sofia-sip/sofia-sip.hash",
    "content": "# Locally computed\nsha256  b539444a5d03e281b829ee9133ae9e717f2d2a03399808365e5ab85574e25d95  sofia-sip-1.13.3-8071e8accd.tar.gz\nsha256  e1c0890440efe31b6cd2ee2abf895eb917c787799f079133f5809414d90d5d60  COPYING\nsha256  b402ae58cf355b33be8fa023f704a039e3d41ecaccd2bbcda43ca31d703e4556  COPYRIGHTS\n"
  },
  {
    "path": "package/sofia-sip/sofia-sip.mk",
    "content": "################################################################################\n#\n# sofia-sip\n#\n################################################################################\n\nSOFIA_SIP_VERSION = 1.13.3-8071e8accd\nSOFIA_SIP_SITE = https://files.freeswitch.org/downloads/libs\nSOFIA_SIP_INSTALL_STAGING = YES\nSOFIA_SIP_DEPENDENCIES = host-pkgconf\nSOFIA_SIP_LICENSE = LGPL-2.1+\nSOFIA_SIP_LICENSE_FILES = COPYING COPYRIGHTS\nSOFIA_SIP_CONF_OPTS = --with-doxygen=no\n\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nSOFIA_SIP_CONF_OPTS += --with-glib\nSOFIA_SIP_DEPENDENCIES += libglib2\nelse\nSOFIA_SIP_CONF_OPTS += --without-glib\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nSOFIA_SIP_CONF_OPTS += \\\n\t--enable-nth \\\n\t--with-openssl=pkg-config\nSOFIA_SIP_DEPENDENCIES += openssl\nelse\nSOFIA_SIP_CONF_OPTS += \\\n\t--disable-nth \\\n\t--without-openssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/softether/0001-Create-autotools-plumbing-for-SoftEther.patch",
    "content": "From c5e5d7e93c6f3302adf5821c29c4efdb7630e418 Mon Sep 17 00:00:00 2001\nFrom: Darik Horn <dajhorn@vanadac.com>\nDate: Sat, 12 Apr 2014 17:46:04 -0400\nSubject: [PATCH] Create autotools plumbing for SoftEther.\n\nAdd autoconf and automake capabilities to SoftEther so that it can be built\nlike this:\n\n\t# autoreconf --force --install\n\t# ./configure\n\t# make install DESTDIR=/tmp/softether\n\nAll standard configure parameters are supported, plus:\n\n\t# ./configure --enable-debug\n\nAutotools support makes porting, cross compiling, and optimization much easier.\n\nThese GNU autoconf-archive components are used for dependency checking:\n\n  * ax_check_openssl.m4\n  * ax_check_zlib.m4\n  * ax_lib_readline.m4\n  * ax_pthread.m4\n  * ax_with_curses.m4\n\nNB: http://www.gnu.org/software/autoconf-archive/\n\n[Upstream commit: https://github.com/dajhorn/SoftEtherVPN/commit/c5e5d7e93c6f3302adf5821c29c4efdb7630e418]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Fabrice: update for 4.30-9700-beta]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile.am                    |  21 ++\n autotools/ax_check_openssl.m4  | 124 ++++++++++\n autotools/ax_check_zlib.m4     | 142 +++++++++++\n autotools/ax_lib_readline.m4   | 107 +++++++++\n autotools/ax_pthread.m4        | 332 ++++++++++++++++++++++++++\n autotools/ax_with_curses.m4    | 518 +++++++++++++++++++++++++++++++++++++++++\n autotools/softether.am         |  39 ++++\n configure.ac                   |  96 ++++++++\n configure => manual_configure  |   0\n src/Cedar/Makefile.am          |  82 +++++++\n src/Makefile.am                |  26 +++\n src/Mayaqua/Makefile.am        |  43 ++++\n src/bin/hamcore/Makefile.am    |  29 +++\n src/hamcorebuilder/Makefile.am |  29 +++\n src/vpnbridge/Makefile.am      |  29 +++\n src/vpnclient/Makefile.am      |  29 +++\n src/vpncmd/Makefile.am         |  29 +++\n src/vpnserver/Makefile.am      |  29 +++\n 18 files changed, 1704 insertions(+)\n create mode 100644 Makefile.am\n create mode 100644 autotools/ax_check_openssl.m4\n create mode 100644 autotools/ax_check_zlib.m4\n create mode 100644 autotools/ax_lib_readline.m4\n create mode 100644 autotools/ax_pthread.m4\n create mode 100644 autotools/ax_with_curses.m4\n create mode 100644 autotools/softether.am\n create mode 100644 configure.ac\n rename configure => manual_configure (100%)\n create mode 100644 src/Cedar/Makefile.am\n create mode 100644 src/Makefile.am\n create mode 100644 src/Mayaqua/Makefile.am\n create mode 100644 src/bin/hamcore/Makefile.am\n create mode 100644 src/hamcorebuilder/Makefile.am\n create mode 100644 src/vpnbridge/Makefile.am\n create mode 100644 src/vpnclient/Makefile.am\n create mode 100644 src/vpncmd/Makefile.am\n create mode 100644 src/vpnserver/Makefile.am\n\ndiff --git a/Makefile.am b/Makefile.am\nnew file mode 100644\nindex 00000000..aa73b2ba\n--- /dev/null\n+++ b/Makefile.am\n@@ -0,0 +1,21 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free \n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+ACLOCAL_AMFLAGS = -I autotools\n+include $(top_srcdir)/autotools/softether.am\n+SUBDIRS = src\ndiff --git a/autotools/ax_check_openssl.m4 b/autotools/ax_check_openssl.m4\nnew file mode 100644\nindex 00000000..a87c5a6b\n--- /dev/null\n+++ b/autotools/ax_check_openssl.m4\n@@ -0,0 +1,124 @@\n+# ===========================================================================\n+#     http://www.gnu.org/software/autoconf-archive/ax_check_openssl.html\n+# ===========================================================================\n+#\n+# SYNOPSIS\n+#\n+#   AX_CHECK_OPENSSL([action-if-found[, action-if-not-found]])\n+#\n+# DESCRIPTION\n+#\n+#   Look for OpenSSL in a number of default spots, or in a user-selected\n+#   spot (via --with-openssl).  Sets\n+#\n+#     OPENSSL_INCLUDES to the include directives required\n+#     OPENSSL_LIBS to the -l directives required\n+#     OPENSSL_LDFLAGS to the -L or -R flags required\n+#\n+#   and calls ACTION-IF-FOUND or ACTION-IF-NOT-FOUND appropriately\n+#\n+#   This macro sets OPENSSL_INCLUDES such that source files should use the\n+#   openssl/ directory in include directives:\n+#\n+#     #include <openssl/hmac.h>\n+#\n+# LICENSE\n+#\n+#   Copyright (c) 2009,2010 Zmanda Inc. <http://www.zmanda.com/>\n+#   Copyright (c) 2009,2010 Dustin J. Mitchell <dustin@zmanda.com>\n+#\n+#   Copying and distribution of this file, with or without modification, are\n+#   permitted in any medium without royalty provided the copyright notice\n+#   and this notice are preserved. This file is offered as-is, without any\n+#   warranty.\n+\n+#serial 8\n+\n+AU_ALIAS([CHECK_SSL], [AX_CHECK_OPENSSL])\n+AC_DEFUN([AX_CHECK_OPENSSL], [\n+    found=false\n+    AC_ARG_WITH([openssl],\n+        [AS_HELP_STRING([--with-openssl=DIR],\n+            [root of the OpenSSL directory])],\n+        [\n+            case \"$withval\" in\n+            \"\" | y | ye | yes | n | no)\n+            AC_MSG_ERROR([Invalid --with-openssl value])\n+              ;;\n+            *) ssldirs=\"$withval\"\n+              ;;\n+            esac\n+        ], [\n+            # if pkg-config is installed and openssl has installed a .pc file,\n+            # then use that information and don't search ssldirs\n+            AC_PATH_PROG([PKG_CONFIG], [pkg-config])\n+            if test x\"$PKG_CONFIG\" != x\"\"; then\n+                OPENSSL_LDFLAGS=`$PKG_CONFIG openssl --libs-only-L 2>/dev/null`\n+                if test $? = 0; then\n+                    OPENSSL_LIBS=`$PKG_CONFIG openssl --libs-only-l 2>/dev/null`\n+                    OPENSSL_INCLUDES=`$PKG_CONFIG openssl --cflags-only-I 2>/dev/null`\n+                    found=true\n+                fi\n+            fi\n+\n+            # no such luck; use some default ssldirs\n+            if ! $found; then\n+                ssldirs=\"/usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr\"\n+            fi\n+        ]\n+        )\n+\n+\n+    # note that we #include <openssl/foo.h>, so the OpenSSL headers have to be in\n+    # an 'openssl' subdirectory\n+\n+    if ! $found; then\n+        OPENSSL_INCLUDES=\n+        for ssldir in $ssldirs; do\n+            AC_MSG_CHECKING([for openssl/ssl.h in $ssldir])\n+            if test -f \"$ssldir/include/openssl/ssl.h\"; then\n+                OPENSSL_INCLUDES=\"-I$ssldir/include\"\n+                OPENSSL_LDFLAGS=\"-L$ssldir/lib\"\n+                OPENSSL_LIBS=\"-lssl -lcrypto\"\n+                found=true\n+                AC_MSG_RESULT([yes])\n+                break\n+            else\n+                AC_MSG_RESULT([no])\n+            fi\n+        done\n+\n+        # if the file wasn't found, well, go ahead and try the link anyway -- maybe\n+        # it will just work!\n+    fi\n+\n+    # try the preprocessor and linker with our new flags,\n+    # being careful not to pollute the global LIBS, LDFLAGS, and CPPFLAGS\n+\n+    AC_MSG_CHECKING([whether compiling and linking against OpenSSL works])\n+    echo \"Trying link with OPENSSL_LDFLAGS=$OPENSSL_LDFLAGS;\" \\\n+        \"OPENSSL_LIBS=$OPENSSL_LIBS; OPENSSL_INCLUDES=$OPENSSL_INCLUDES\" >&AS_MESSAGE_LOG_FD\n+\n+    save_LIBS=\"$LIBS\"\n+    save_LDFLAGS=\"$LDFLAGS\"\n+    save_CPPFLAGS=\"$CPPFLAGS\"\n+    LDFLAGS=\"$LDFLAGS $OPENSSL_LDFLAGS\"\n+    LIBS=\"$OPENSSL_LIBS $LIBS\"\n+    CPPFLAGS=\"$OPENSSL_INCLUDES $CPPFLAGS\"\n+    AC_LINK_IFELSE(\n+        [AC_LANG_PROGRAM([#include <openssl/ssl.h>], [SSL_new(NULL)])],\n+        [\n+            AC_MSG_RESULT([yes])\n+            $1\n+        ], [\n+            AC_MSG_RESULT([no])\n+            $2\n+        ])\n+    CPPFLAGS=\"$save_CPPFLAGS\"\n+    LDFLAGS=\"$save_LDFLAGS\"\n+    LIBS=\"$save_LIBS\"\n+\n+    AC_SUBST([OPENSSL_INCLUDES])\n+    AC_SUBST([OPENSSL_LIBS])\n+    AC_SUBST([OPENSSL_LDFLAGS])\n+])\ndiff --git a/autotools/ax_check_zlib.m4 b/autotools/ax_check_zlib.m4\nnew file mode 100644\nindex 00000000..ae5705f6\n--- /dev/null\n+++ b/autotools/ax_check_zlib.m4\n@@ -0,0 +1,142 @@\n+# ===========================================================================\n+#       http://www.gnu.org/software/autoconf-archive/ax_check_zlib.html\n+# ===========================================================================\n+#\n+# SYNOPSIS\n+#\n+#   AX_CHECK_ZLIB([action-if-found], [action-if-not-found])\n+#\n+# DESCRIPTION\n+#\n+#   This macro searches for an installed zlib library. If nothing was\n+#   specified when calling configure, it searches first in /usr/local and\n+#   then in /usr, /opt/local and /sw. If the --with-zlib=DIR is specified,\n+#   it will try to find it in DIR/include/zlib.h and DIR/lib/libz.a. If\n+#   --without-zlib is specified, the library is not searched at all.\n+#\n+#   If either the header file (zlib.h) or the library (libz) is not found,\n+#   shell commands 'action-if-not-found' is run. If 'action-if-not-found' is\n+#   not specified, the configuration exits on error, asking for a valid zlib\n+#   installation directory or --without-zlib.\n+#\n+#   If both header file and library are found, shell commands\n+#   'action-if-found' is run. If 'action-if-found' is not specified, the\n+#   default action appends '-I${ZLIB_HOME}/include' to CPFLAGS, appends\n+#   '-L$ZLIB_HOME}/lib' to LDFLAGS, prepends '-lz' to LIBS, and calls\n+#   AC_DEFINE(HAVE_LIBZ). You should use autoheader to include a definition\n+#   for this symbol in a config.h file. Sample usage in a C/C++ source is as\n+#   follows:\n+#\n+#     #ifdef HAVE_LIBZ\n+#     #include <zlib.h>\n+#     #endif /* HAVE_LIBZ */\n+#\n+# LICENSE\n+#\n+#   Copyright (c) 2008 Loic Dachary <loic@senga.org>\n+#   Copyright (c) 2010 Bastien Chevreux <bach@chevreux.org>\n+#\n+#   This program is free software; you can redistribute it and/or modify it\n+#   under the terms of the GNU General Public License as published by the\n+#   Free Software Foundation; either version 2 of the License, or (at your\n+#   option) any later version.\n+#\n+#   This program is distributed in the hope that it will be useful, but\n+#   WITHOUT ANY WARRANTY; without even the implied warranty of\n+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\n+#   Public License for more details.\n+#\n+#   You should have received a copy of the GNU General Public License along\n+#   with this program. If not, see <http://www.gnu.org/licenses/>.\n+#\n+#   As a special exception, the respective Autoconf Macro's copyright owner\n+#   gives unlimited permission to copy, distribute and modify the configure\n+#   scripts that are the output of Autoconf when processing the Macro. You\n+#   need not follow the terms of the GNU General Public License when using\n+#   or distributing such scripts, even though portions of the text of the\n+#   Macro appear in them. The GNU General Public License (GPL) does govern\n+#   all other use of the material that constitutes the Autoconf Macro.\n+#\n+#   This special exception to the GPL applies to versions of the Autoconf\n+#   Macro released by the Autoconf Archive. When you make and distribute a\n+#   modified version of the Autoconf Macro, you may extend this special\n+#   exception to the GPL to apply to your modified version as well.\n+\n+#serial 14\n+\n+AU_ALIAS([CHECK_ZLIB], [AX_CHECK_ZLIB])\n+AC_DEFUN([AX_CHECK_ZLIB],\n+#\n+# Handle user hints\n+#\n+[AC_MSG_CHECKING(if zlib is wanted)\n+zlib_places=\"/usr/local /usr /opt/local /sw\"\n+AC_ARG_WITH([zlib],\n+[  --with-zlib=DIR         root directory path of zlib installation @<:@defaults to\n+                          /usr/local or /usr if not found in /usr/local@:>@\n+  --without-zlib          to disable zlib usage completely],\n+[if test \"$withval\" != no ; then\n+  AC_MSG_RESULT(yes)\n+  if test -d \"$withval\"\n+  then\n+    zlib_places=\"$withval $zlib_places\"\n+  else\n+    AC_MSG_WARN([Sorry, $withval does not exist, checking usual places])\n+  fi\n+else\n+  zlib_places=\n+  AC_MSG_RESULT(no)\n+fi],\n+[AC_MSG_RESULT(yes)])\n+\n+#\n+# Locate zlib, if wanted\n+#\n+if test -n \"${zlib_places}\"\n+then\n+\t# check the user supplied or any other more or less 'standard' place:\n+\t#   Most UNIX systems      : /usr/local and /usr\n+\t#   MacPorts / Fink on OSX : /opt/local respectively /sw\n+\tfor ZLIB_HOME in ${zlib_places} ; do\n+\t  if test -f \"${ZLIB_HOME}/include/zlib.h\"; then break; fi\n+\t  ZLIB_HOME=\"\"\n+\tdone\n+\n+  ZLIB_OLD_LDFLAGS=$LDFLAGS\n+  ZLIB_OLD_CPPFLAGS=$CPPFLAGS\n+  if test -n \"${ZLIB_HOME}\"; then\n+        LDFLAGS=\"$LDFLAGS -L${ZLIB_HOME}/lib\"\n+        CPPFLAGS=\"$CPPFLAGS -I${ZLIB_HOME}/include\"\n+  fi\n+  AC_LANG_SAVE\n+  AC_LANG_C\n+  AC_CHECK_LIB([z], [inflateEnd], [zlib_cv_libz=yes], [zlib_cv_libz=no])\n+  AC_CHECK_HEADER([zlib.h], [zlib_cv_zlib_h=yes], [zlib_cv_zlib_h=no])\n+  AC_LANG_RESTORE\n+  if test \"$zlib_cv_libz\" = \"yes\" && test \"$zlib_cv_zlib_h\" = \"yes\"\n+  then\n+    #\n+    # If both library and header were found, action-if-found\n+    #\n+    m4_ifblank([$1],[\n+                CPPFLAGS=\"$CPPFLAGS -I${ZLIB_HOME}/include\"\n+                LDFLAGS=\"$LDFLAGS -L${ZLIB_HOME}/lib\"\n+                LIBS=\"-lz $LIBS\"\n+                AC_DEFINE([HAVE_LIBZ], [1],\n+                          [Define to 1 if you have `z' library (-lz)])\n+               ],[\n+                # Restore variables\n+                LDFLAGS=\"$ZLIB_OLD_LDFLAGS\"\n+                CPPFLAGS=\"$ZLIB_OLD_CPPFLAGS\"\n+                $1\n+               ])\n+  else\n+    #\n+    # If either header or library was not found, action-if-not-found\n+    #\n+    m4_default([$2],[\n+                AC_MSG_ERROR([either specify a valid zlib installation with --with-zlib=DIR or disable zlib usage with --without-zlib])\n+                ])\n+  fi\n+fi\n+])\ndiff --git a/autotools/ax_lib_readline.m4 b/autotools/ax_lib_readline.m4\nnew file mode 100644\nindex 00000000..056f25c2\n--- /dev/null\n+++ b/autotools/ax_lib_readline.m4\n@@ -0,0 +1,107 @@\n+# ===========================================================================\n+#      http://www.gnu.org/software/autoconf-archive/ax_lib_readline.html\n+# ===========================================================================\n+#\n+# SYNOPSIS\n+#\n+#   AX_LIB_READLINE\n+#\n+# DESCRIPTION\n+#\n+#   Searches for a readline compatible library. If found, defines\n+#   `HAVE_LIBREADLINE'. If the found library has the `add_history' function,\n+#   sets also `HAVE_READLINE_HISTORY'. Also checks for the locations of the\n+#   necessary include files and sets `HAVE_READLINE_H' or\n+#   `HAVE_READLINE_READLINE_H' and `HAVE_READLINE_HISTORY_H' or\n+#   'HAVE_HISTORY_H' if the corresponding include files exists.\n+#\n+#   The libraries that may be readline compatible are `libedit',\n+#   `libeditline' and `libreadline'. Sometimes we need to link a termcap\n+#   library for readline to work, this macro tests these cases too by trying\n+#   to link with `libtermcap', `libcurses' or `libncurses' before giving up.\n+#\n+#   Here is an example of how to use the information provided by this macro\n+#   to perform the necessary includes or declarations in a C file:\n+#\n+#     #ifdef HAVE_LIBREADLINE\n+#     #  if defined(HAVE_READLINE_READLINE_H)\n+#     #    include <readline/readline.h>\n+#     #  elif defined(HAVE_READLINE_H)\n+#     #    include <readline.h>\n+#     #  else /* !defined(HAVE_READLINE_H) */\n+#     extern char *readline ();\n+#     #  endif /* !defined(HAVE_READLINE_H) */\n+#     char *cmdline = NULL;\n+#     #else /* !defined(HAVE_READLINE_READLINE_H) */\n+#       /* no readline */\n+#     #endif /* HAVE_LIBREADLINE */\n+#\n+#     #ifdef HAVE_READLINE_HISTORY\n+#     #  if defined(HAVE_READLINE_HISTORY_H)\n+#     #    include <readline/history.h>\n+#     #  elif defined(HAVE_HISTORY_H)\n+#     #    include <history.h>\n+#     #  else /* !defined(HAVE_HISTORY_H) */\n+#     extern void add_history ();\n+#     extern int write_history ();\n+#     extern int read_history ();\n+#     #  endif /* defined(HAVE_READLINE_HISTORY_H) */\n+#       /* no history */\n+#     #endif /* HAVE_READLINE_HISTORY */\n+#\n+# LICENSE\n+#\n+#   Copyright (c) 2008 Ville Laurikari <vl@iki.fi>\n+#\n+#   Copying and distribution of this file, with or without modification, are\n+#   permitted in any medium without royalty provided the copyright notice\n+#   and this notice are preserved. This file is offered as-is, without any\n+#   warranty.\n+\n+#serial 6\n+\n+AU_ALIAS([VL_LIB_READLINE], [AX_LIB_READLINE])\n+AC_DEFUN([AX_LIB_READLINE], [\n+  AC_CACHE_CHECK([for a readline compatible library],\n+                 ax_cv_lib_readline, [\n+    ORIG_LIBS=\"$LIBS\"\n+    for readline_lib in readline edit editline; do\n+      for termcap_lib in \"\" termcap curses ncurses; do\n+        if test -z \"$termcap_lib\"; then\n+          TRY_LIB=\"-l$readline_lib\"\n+        else\n+          TRY_LIB=\"-l$readline_lib -l$termcap_lib\"\n+        fi\n+        LIBS=\"$ORIG_LIBS $TRY_LIB\"\n+        AC_TRY_LINK_FUNC(readline, ax_cv_lib_readline=\"$TRY_LIB\")\n+        if test -n \"$ax_cv_lib_readline\"; then\n+          break\n+        fi\n+      done\n+      if test -n \"$ax_cv_lib_readline\"; then\n+        break\n+      fi\n+    done\n+    if test -z \"$ax_cv_lib_readline\"; then\n+      ax_cv_lib_readline=\"no\"\n+    fi\n+    LIBS=\"$ORIG_LIBS\"\n+  ])\n+\n+  if test \"$ax_cv_lib_readline\" != \"no\"; then\n+    LIBS=\"$LIBS $ax_cv_lib_readline\"\n+    AC_DEFINE(HAVE_LIBREADLINE, 1,\n+              [Define if you have a readline compatible library])\n+    AC_CHECK_HEADERS(readline.h readline/readline.h)\n+    AC_CACHE_CHECK([whether readline supports history],\n+                   ax_cv_lib_readline_history, [\n+      ax_cv_lib_readline_history=\"no\"\n+      AC_TRY_LINK_FUNC(add_history, ax_cv_lib_readline_history=\"yes\")\n+    ])\n+    if test \"$ax_cv_lib_readline_history\" = \"yes\"; then\n+      AC_DEFINE(HAVE_READLINE_HISTORY, 1,\n+                [Define if your readline library has \\`add_history'])\n+      AC_CHECK_HEADERS(history.h readline/history.h)\n+    fi\n+  fi\n+])dnl\ndiff --git a/autotools/ax_pthread.m4 b/autotools/ax_pthread.m4\nnew file mode 100644\nindex 00000000..d383ad5c\n--- /dev/null\n+++ b/autotools/ax_pthread.m4\n@@ -0,0 +1,332 @@\n+# ===========================================================================\n+#        http://www.gnu.org/software/autoconf-archive/ax_pthread.html\n+# ===========================================================================\n+#\n+# SYNOPSIS\n+#\n+#   AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])\n+#\n+# DESCRIPTION\n+#\n+#   This macro figures out how to build C programs using POSIX threads. It\n+#   sets the PTHREAD_LIBS output variable to the threads library and linker\n+#   flags, and the PTHREAD_CFLAGS output variable to any special C compiler\n+#   flags that are needed. (The user can also force certain compiler\n+#   flags/libs to be tested by setting these environment variables.)\n+#\n+#   Also sets PTHREAD_CC to any special C compiler that is needed for\n+#   multi-threaded programs (defaults to the value of CC otherwise). (This\n+#   is necessary on AIX to use the special cc_r compiler alias.)\n+#\n+#   NOTE: You are assumed to not only compile your program with these flags,\n+#   but also link it with them as well. e.g. you should link with\n+#   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS\n+#\n+#   If you are only building threads programs, you may wish to use these\n+#   variables in your default LIBS, CFLAGS, and CC:\n+#\n+#     LIBS=\"$PTHREAD_LIBS $LIBS\"\n+#     CFLAGS=\"$CFLAGS $PTHREAD_CFLAGS\"\n+#     CC=\"$PTHREAD_CC\"\n+#\n+#   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant\n+#   has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name\n+#   (e.g. PTHREAD_CREATE_UNDETACHED on AIX).\n+#\n+#   Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the\n+#   PTHREAD_PRIO_INHERIT symbol is defined when compiling with\n+#   PTHREAD_CFLAGS.\n+#\n+#   ACTION-IF-FOUND is a list of shell commands to run if a threads library\n+#   is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it\n+#   is not found. If ACTION-IF-FOUND is not specified, the default action\n+#   will define HAVE_PTHREAD.\n+#\n+#   Please let the authors know if this macro fails on any platform, or if\n+#   you have any other suggestions or comments. This macro was based on work\n+#   by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help\n+#   from M. Frigo), as well as ac_pthread and hb_pthread macros posted by\n+#   Alejandro Forero Cuervo to the autoconf macro repository. We are also\n+#   grateful for the helpful feedback of numerous users.\n+#\n+#   Updated for Autoconf 2.68 by Daniel Richard G.\n+#\n+# LICENSE\n+#\n+#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>\n+#   Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>\n+#\n+#   This program is free software: you can redistribute it and/or modify it\n+#   under the terms of the GNU General Public License as published by the\n+#   Free Software Foundation, either version 3 of the License, or (at your\n+#   option) any later version.\n+#\n+#   This program is distributed in the hope that it will be useful, but\n+#   WITHOUT ANY WARRANTY; without even the implied warranty of\n+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\n+#   Public License for more details.\n+#\n+#   You should have received a copy of the GNU General Public License along\n+#   with this program. If not, see <http://www.gnu.org/licenses/>.\n+#\n+#   As a special exception, the respective Autoconf Macro's copyright owner\n+#   gives unlimited permission to copy, distribute and modify the configure\n+#   scripts that are the output of Autoconf when processing the Macro. You\n+#   need not follow the terms of the GNU General Public License when using\n+#   or distributing such scripts, even though portions of the text of the\n+#   Macro appear in them. The GNU General Public License (GPL) does govern\n+#   all other use of the material that constitutes the Autoconf Macro.\n+#\n+#   This special exception to the GPL applies to versions of the Autoconf\n+#   Macro released by the Autoconf Archive. When you make and distribute a\n+#   modified version of the Autoconf Macro, you may extend this special\n+#   exception to the GPL to apply to your modified version as well.\n+\n+#serial 21\n+\n+AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])\n+AC_DEFUN([AX_PTHREAD], [\n+AC_REQUIRE([AC_CANONICAL_HOST])\n+AC_LANG_PUSH([C])\n+ax_pthread_ok=no\n+\n+# We used to check for pthread.h first, but this fails if pthread.h\n+# requires special compiler flags (e.g. on True64 or Sequent).\n+# It gets checked for in the link test anyway.\n+\n+# First of all, check if the user has set any of the PTHREAD_LIBS,\n+# etcetera environment variables, and if threads linking works using\n+# them:\n+if test x\"$PTHREAD_LIBS$PTHREAD_CFLAGS\" != x; then\n+        save_CFLAGS=\"$CFLAGS\"\n+        CFLAGS=\"$CFLAGS $PTHREAD_CFLAGS\"\n+        save_LIBS=\"$LIBS\"\n+        LIBS=\"$PTHREAD_LIBS $LIBS\"\n+        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])\n+        AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])\n+        AC_MSG_RESULT([$ax_pthread_ok])\n+        if test x\"$ax_pthread_ok\" = xno; then\n+                PTHREAD_LIBS=\"\"\n+                PTHREAD_CFLAGS=\"\"\n+        fi\n+        LIBS=\"$save_LIBS\"\n+        CFLAGS=\"$save_CFLAGS\"\n+fi\n+\n+# We must check for the threads library under a number of different\n+# names; the ordering is very important because some systems\n+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the\n+# libraries is broken (non-POSIX).\n+\n+# Create a list of thread flags to try.  Items starting with a \"-\" are\n+# C compiler flags, and other items are library names, except for \"none\"\n+# which indicates that we try without any flags at all, and \"pthread-config\"\n+# which is a program returning the flags for the Pth emulation library.\n+\n+ax_pthread_flags=\"pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config\"\n+\n+# The ordering *is* (sometimes) important.  Some notes on the\n+# individual items follow:\n+\n+# pthreads: AIX (must check this before -lpthread)\n+# none: in case threads are in libc; should be tried before -Kthread and\n+#       other compiler flags to prevent continual compiler warnings\n+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)\n+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)\n+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)\n+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)\n+# -pthreads: Solaris/gcc\n+# -mthreads: Mingw32/gcc, Lynx/gcc\n+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it\n+#      doesn't hurt to check since this sometimes defines pthreads too;\n+#      also defines -D_REENTRANT)\n+#      ... -mt is also the pthreads flag for HP/aCC\n+# pthread: Linux, etcetera\n+# --thread-safe: KAI C++\n+# pthread-config: use pthread-config program (for GNU Pth library)\n+\n+case ${host_os} in\n+        solaris*)\n+\n+        # On Solaris (at least, for some versions), libc contains stubbed\n+        # (non-functional) versions of the pthreads routines, so link-based\n+        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/\n+        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather\n+        # a function called by this macro, so we could check for that, but\n+        # who knows whether they'll stub that too in a future libc.)  So,\n+        # we'll just look for -pthreads and -lpthread first:\n+\n+        ax_pthread_flags=\"-pthreads pthread -mt -pthread $ax_pthread_flags\"\n+        ;;\n+\n+        darwin*)\n+        ax_pthread_flags=\"-pthread $ax_pthread_flags\"\n+        ;;\n+esac\n+\n+# Clang doesn't consider unrecognized options an error unless we specify\n+# -Werror. We throw in some extra Clang-specific options to ensure that\n+# this doesn't happen for GCC, which also accepts -Werror.\n+\n+AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])\n+save_CFLAGS=\"$CFLAGS\"\n+ax_pthread_extra_flags=\"-Werror\"\n+CFLAGS=\"$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument\"\n+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],\n+                  [AC_MSG_RESULT([yes])],\n+                  [ax_pthread_extra_flags=\n+                   AC_MSG_RESULT([no])])\n+CFLAGS=\"$save_CFLAGS\"\n+\n+if test x\"$ax_pthread_ok\" = xno; then\n+for flag in $ax_pthread_flags; do\n+\n+        case $flag in\n+                none)\n+                AC_MSG_CHECKING([whether pthreads work without any flags])\n+                ;;\n+\n+                -*)\n+                AC_MSG_CHECKING([whether pthreads work with $flag])\n+                PTHREAD_CFLAGS=\"$flag\"\n+                ;;\n+\n+                pthread-config)\n+                AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])\n+                if test x\"$ax_pthread_config\" = xno; then continue; fi\n+                PTHREAD_CFLAGS=\"`pthread-config --cflags`\"\n+                PTHREAD_LIBS=\"`pthread-config --ldflags` `pthread-config --libs`\"\n+                ;;\n+\n+                *)\n+                AC_MSG_CHECKING([for the pthreads library -l$flag])\n+                PTHREAD_LIBS=\"-l$flag\"\n+                ;;\n+        esac\n+\n+        save_LIBS=\"$LIBS\"\n+        save_CFLAGS=\"$CFLAGS\"\n+        LIBS=\"$PTHREAD_LIBS $LIBS\"\n+        CFLAGS=\"$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags\"\n+\n+        # Check for various functions.  We must include pthread.h,\n+        # since some functions may be macros.  (On the Sequent, we\n+        # need a special flag -Kthread to make this header compile.)\n+        # We check for pthread_join because it is in -lpthread on IRIX\n+        # while pthread_create is in libc.  We check for pthread_attr_init\n+        # due to DEC craziness with -lpthreads.  We check for\n+        # pthread_cleanup_push because it is one of the few pthread\n+        # functions on Solaris that doesn't have a non-functional libc stub.\n+        # We try pthread_create on general principles.\n+        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>\n+                        static void routine(void *a) { a = 0; }\n+                        static void *start_routine(void *a) { return a; }],\n+                       [pthread_t th; pthread_attr_t attr;\n+                        pthread_create(&th, 0, start_routine, 0);\n+                        pthread_join(th, 0);\n+                        pthread_attr_init(&attr);\n+                        pthread_cleanup_push(routine, 0);\n+                        pthread_cleanup_pop(0) /* ; */])],\n+                [ax_pthread_ok=yes],\n+                [])\n+\n+        LIBS=\"$save_LIBS\"\n+        CFLAGS=\"$save_CFLAGS\"\n+\n+        AC_MSG_RESULT([$ax_pthread_ok])\n+        if test \"x$ax_pthread_ok\" = xyes; then\n+                break;\n+        fi\n+\n+        PTHREAD_LIBS=\"\"\n+        PTHREAD_CFLAGS=\"\"\n+done\n+fi\n+\n+# Various other checks:\n+if test \"x$ax_pthread_ok\" = xyes; then\n+        save_LIBS=\"$LIBS\"\n+        LIBS=\"$PTHREAD_LIBS $LIBS\"\n+        save_CFLAGS=\"$CFLAGS\"\n+        CFLAGS=\"$CFLAGS $PTHREAD_CFLAGS\"\n+\n+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.\n+        AC_MSG_CHECKING([for joinable pthread attribute])\n+        attr_name=unknown\n+        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do\n+            AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],\n+                           [int attr = $attr; return attr /* ; */])],\n+                [attr_name=$attr; break],\n+                [])\n+        done\n+        AC_MSG_RESULT([$attr_name])\n+        if test \"$attr_name\" != PTHREAD_CREATE_JOINABLE; then\n+            AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],\n+                               [Define to necessary symbol if this constant\n+                                uses a non-standard name on your system.])\n+        fi\n+\n+        AC_MSG_CHECKING([if more special flags are required for pthreads])\n+        flag=no\n+        case ${host_os} in\n+            aix* | freebsd* | darwin*) flag=\"-D_THREAD_SAFE\";;\n+            osf* | hpux*) flag=\"-D_REENTRANT\";;\n+            solaris*)\n+            if test \"$GCC\" = \"yes\"; then\n+                flag=\"-D_REENTRANT\"\n+            else\n+                # TODO: What about Clang on Solaris?\n+                flag=\"-mt -D_REENTRANT\"\n+            fi\n+            ;;\n+        esac\n+        AC_MSG_RESULT([$flag])\n+        if test \"x$flag\" != xno; then\n+            PTHREAD_CFLAGS=\"$flag $PTHREAD_CFLAGS\"\n+        fi\n+\n+        AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],\n+            [ax_cv_PTHREAD_PRIO_INHERIT], [\n+                AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],\n+                                                [[int i = PTHREAD_PRIO_INHERIT;]])],\n+                    [ax_cv_PTHREAD_PRIO_INHERIT=yes],\n+                    [ax_cv_PTHREAD_PRIO_INHERIT=no])\n+            ])\n+        AS_IF([test \"x$ax_cv_PTHREAD_PRIO_INHERIT\" = \"xyes\"],\n+            [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])\n+\n+        LIBS=\"$save_LIBS\"\n+        CFLAGS=\"$save_CFLAGS\"\n+\n+        # More AIX lossage: compile with *_r variant\n+        if test \"x$GCC\" != xyes; then\n+            case $host_os in\n+                aix*)\n+                AS_CASE([\"x/$CC\"],\n+                  [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],\n+                  [#handle absolute path differently from PATH based program lookup\n+                   AS_CASE([\"x$CC\"],\n+                     [x/*],\n+                     [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC=\"${CC}_r\"])],\n+                     [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])\n+                ;;\n+            esac\n+        fi\n+fi\n+\n+test -n \"$PTHREAD_CC\" || PTHREAD_CC=\"$CC\"\n+\n+AC_SUBST([PTHREAD_LIBS])\n+AC_SUBST([PTHREAD_CFLAGS])\n+AC_SUBST([PTHREAD_CC])\n+\n+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:\n+if test x\"$ax_pthread_ok\" = xyes; then\n+        ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])\n+        :\n+else\n+        ax_pthread_ok=no\n+        $2\n+fi\n+AC_LANG_POP\n+])dnl AX_PTHREAD\ndiff --git a/autotools/ax_with_curses.m4 b/autotools/ax_with_curses.m4\nnew file mode 100644\nindex 00000000..e4cbd31b\n--- /dev/null\n+++ b/autotools/ax_with_curses.m4\n@@ -0,0 +1,518 @@\n+# ===========================================================================\n+#      http://www.gnu.org/software/autoconf-archive/ax_with_curses.html\n+# ===========================================================================\n+#\n+# SYNOPSIS\n+#\n+#   AX_WITH_CURSES\n+#\n+# DESCRIPTION\n+#\n+#   This macro checks whether a SysV or X/Open-compatible Curses library is\n+#   present, along with the associated header file.  The NcursesW\n+#   (wide-character) library is searched for first, followed by Ncurses,\n+#   then the system-default plain Curses.  The first library found is the\n+#   one returned.\n+#\n+#   The following options are understood: --with-ncursesw, --with-ncurses,\n+#   --without-ncursesw, --without-ncurses.  The \"--with\" options force the\n+#   macro to use that particular library, terminating with an error if not\n+#   found.  The \"--without\" options simply skip the check for that library.\n+#   The effect on the search pattern is:\n+#\n+#     (no options)                           - NcursesW, Ncurses, Curses\n+#     --with-ncurses     --with-ncursesw     - NcursesW only [*]\n+#     --without-ncurses  --with-ncursesw     - NcursesW only [*]\n+#                        --with-ncursesw     - NcursesW only [*]\n+#     --with-ncurses     --without-ncursesw  - Ncurses only [*]\n+#     --with-ncurses                         - NcursesW, Ncurses [**]\n+#     --without-ncurses  --without-ncursesw  - Curses only\n+#                        --without-ncursesw  - Ncurses, Curses\n+#     --without-ncurses                      - NcursesW, Curses\n+#\n+#   [*]  If the library is not found, abort the configure script.\n+#\n+#   [**] If the second library (Ncurses) is not found, abort configure.\n+#\n+#   The following preprocessor symbols may be defined by this macro if the\n+#   appropriate conditions are met:\n+#\n+#     HAVE_CURSES             - if any SysV or X/Open Curses library found\n+#     HAVE_CURSES_ENHANCED    - if library supports X/Open Enhanced functions\n+#     HAVE_CURSES_COLOR       - if library supports color (enhanced functions)\n+#     HAVE_CURSES_OBSOLETE    - if library supports certain obsolete features\n+#     HAVE_NCURSESW           - if NcursesW (wide char) library is to be used\n+#     HAVE_NCURSES            - if the Ncurses library is to be used\n+#\n+#     HAVE_CURSES_H           - if <curses.h> is present and should be used\n+#     HAVE_NCURSESW_H         - if <ncursesw.h> should be used\n+#     HAVE_NCURSES_H          - if <ncurses.h> should be used\n+#     HAVE_NCURSESW_CURSES_H  - if <ncursesw/curses.h> should be used\n+#     HAVE_NCURSES_CURSES_H   - if <ncurses/curses.h> should be used\n+#\n+#   (These preprocessor symbols are discussed later in this document.)\n+#\n+#   The following output variable is defined by this macro; it is precious\n+#   and may be overridden on the ./configure command line:\n+#\n+#     CURSES_LIB  - library to add to xxx_LDADD\n+#\n+#   The library listed in CURSES_LIB is NOT added to LIBS by default. You\n+#   need to add CURSES_LIB to the appropriate xxx_LDADD line in your\n+#   Makefile.am.  For example:\n+#\n+#     prog_LDADD = @CURSES_LIB@\n+#\n+#   If CURSES_LIB is set on the configure command line (such as by running\n+#   \"./configure CURSES_LIB=-lmycurses\"), then the only header searched for\n+#   is <curses.h>.  The user may use the CPPFLAGS precious variable to\n+#   override the standard #include search path.  If the user needs to\n+#   specify an alternative path for a library (such as for a non-standard\n+#   NcurseW), the user should use the LDFLAGS variable.\n+#\n+#   The following shell variables may be defined by this macro:\n+#\n+#     ax_cv_curses           - set to \"yes\" if any Curses library found\n+#     ax_cv_curses_enhanced  - set to \"yes\" if Enhanced functions present\n+#     ax_cv_curses_color     - set to \"yes\" if color functions present\n+#     ax_cv_curses_obsolete  - set to \"yes\" if obsolete features present\n+#\n+#     ax_cv_ncursesw      - set to \"yes\" if NcursesW library found\n+#     ax_cv_ncurses       - set to \"yes\" if Ncurses library found\n+#     ax_cv_plaincurses   - set to \"yes\" if plain Curses library found\n+#     ax_cv_curses_which  - set to \"ncursesw\", \"ncurses\", \"plaincurses\" or \"no\"\n+#\n+#   These variables can be used in your configure.ac to determine the level\n+#   of support you need from the Curses library.  For example, if you must\n+#   have either Ncurses or NcursesW, you could include:\n+#\n+#     AX_WITH_CURSES\n+#     if test \"x$ax_cv_ncursesw\" != xyes && test \"x$ax_cv_ncurses\" != xyes; then\n+#         AC_MSG_ERROR([requires either NcursesW or Ncurses library])\n+#     fi\n+#\n+#   If any Curses library will do (but one must be present and must support\n+#   color), you could use:\n+#\n+#     AX_WITH_CURSES\n+#     if test \"x$ax_cv_curses\" != xyes || test \"x$ax_cv_curses_color\" != xyes; then\n+#         AC_MSG_ERROR([requires an X/Open-compatible Curses library with color])\n+#     fi\n+#\n+#   Certain preprocessor symbols and shell variables defined by this macro\n+#   can be used to determine various features of the Curses library.  In\n+#   particular, HAVE_CURSES and ax_cv_curses are defined if the Curses\n+#   library found conforms to the traditional SysV and/or X/Open Base Curses\n+#   definition.  Any working Curses library conforms to this level.\n+#\n+#   HAVE_CURSES_ENHANCED and ax_cv_curses_enhanced are defined if the\n+#   library supports the X/Open Enhanced Curses definition.  In particular,\n+#   the wide-character types attr_t, cchar_t and wint_t, the functions\n+#   wattr_set() and wget_wch() and the macros WA_NORMAL and _XOPEN_CURSES\n+#   are checked.  The Ncurses library does NOT conform to this definition,\n+#   although NcursesW does.\n+#\n+#   HAVE_CURSES_COLOR and ax_cv_curses_color are defined if the library\n+#   supports color functions and macros such as COLOR_PAIR, A_COLOR,\n+#   COLOR_WHITE, COLOR_RED and init_pair().  These are NOT part of the\n+#   X/Open Base Curses definition, but are part of the Enhanced set of\n+#   functions.  The Ncurses library DOES support these functions, as does\n+#   NcursesW.\n+#\n+#   HAVE_CURSES_OBSOLETE and ax_cv_curses_obsolete are defined if the\n+#   library supports certain features present in SysV and BSD Curses but not\n+#   defined in the X/Open definition.  In particular, the functions\n+#   getattrs(), getcurx() and getmaxx() are checked.\n+#\n+#   To use the HAVE_xxx_H preprocessor symbols, insert the following into\n+#   your system.h (or equivalent) header file:\n+#\n+#     #if defined HAVE_NCURSESW_CURSES_H\n+#     #  include <ncursesw/curses.h>\n+#     #elif defined HAVE_NCURSESW_H\n+#     #  include <ncursesw.h>\n+#     #elif defined HAVE_NCURSES_CURSES_H\n+#     #  include <ncurses/curses.h>\n+#     #elif defined HAVE_NCURSES_H\n+#     #  include <ncurses.h>\n+#     #elif defined HAVE_CURSES_H\n+#     #  include <curses.h>\n+#     #else\n+#     #  error \"SysV or X/Open-compatible Curses header file required\"\n+#     #endif\n+#\n+#   For previous users of this macro: you should not need to change anything\n+#   in your configure.ac or Makefile.am, as the previous (serial 10)\n+#   semantics are still valid.  However, you should update your system.h (or\n+#   equivalent) header file to the fragment shown above. You are encouraged\n+#   also to make use of the extended functionality provided by this version\n+#   of AX_WITH_CURSES, as well as in the additional macros\n+#   AX_WITH_CURSES_PANEL, AX_WITH_CURSES_MENU and AX_WITH_CURSES_FORM.\n+#\n+# LICENSE\n+#\n+#   Copyright (c) 2009 Mark Pulford <mark@kyne.com.au>\n+#   Copyright (c) 2009 Damian Pietras <daper@daper.net>\n+#   Copyright (c) 2012 Reuben Thomas <rrt@sc3d.org>\n+#   Copyright (c) 2011 John Zaitseff <J.Zaitseff@zap.org.au>\n+#\n+#   This program is free software: you can redistribute it and/or modify it\n+#   under the terms of the GNU General Public License as published by the\n+#   Free Software Foundation, either version 3 of the License, or (at your\n+#   option) any later version.\n+#\n+#   This program is distributed in the hope that it will be useful, but\n+#   WITHOUT ANY WARRANTY; without even the implied warranty of\n+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\n+#   Public License for more details.\n+#\n+#   You should have received a copy of the GNU General Public License along\n+#   with this program. If not, see <http://www.gnu.org/licenses/>.\n+#\n+#   As a special exception, the respective Autoconf Macro's copyright owner\n+#   gives unlimited permission to copy, distribute and modify the configure\n+#   scripts that are the output of Autoconf when processing the Macro. You\n+#   need not follow the terms of the GNU General Public License when using\n+#   or distributing such scripts, even though portions of the text of the\n+#   Macro appear in them. The GNU General Public License (GPL) does govern\n+#   all other use of the material that constitutes the Autoconf Macro.\n+#\n+#   This special exception to the GPL applies to versions of the Autoconf\n+#   Macro released by the Autoconf Archive. When you make and distribute a\n+#   modified version of the Autoconf Macro, you may extend this special\n+#   exception to the GPL to apply to your modified version as well.\n+\n+#serial 15\n+\n+AU_ALIAS([MP_WITH_CURSES], [AX_WITH_CURSES])\n+AC_DEFUN([AX_WITH_CURSES], [\n+    AC_ARG_VAR([CURSES_LIB], [linker library for Curses, e.g. -lcurses])\n+    AC_ARG_WITH([ncurses], [AS_HELP_STRING([--with-ncurses],\n+        [force the use of Ncurses or NcursesW])],\n+        [], [with_ncurses=check])\n+    AC_ARG_WITH([ncursesw], [AS_HELP_STRING([--without-ncursesw],\n+        [do not use NcursesW (wide character support)])],\n+        [], [with_ncursesw=check])\n+\n+    ax_saved_LIBS=$LIBS\n+    AS_IF([test \"x$with_ncurses\" = xyes || test \"x$with_ncursesw\" = xyes],\n+        [ax_with_plaincurses=no], [ax_with_plaincurses=check])\n+\n+    ax_cv_curses_which=no\n+\n+    # Test for NcursesW\n+\n+    AS_IF([test \"x$CURSES_LIB\" = x && test \"x$with_ncursesw\" != xno], [\n+        LIBS=\"$ax_saved_LIBS -lncursesw\"\n+\n+        AC_CACHE_CHECK([for NcursesW wide-character library], [ax_cv_ncursesw], [\n+            AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])],\n+                [ax_cv_ncursesw=yes], [ax_cv_ncursesw=no])\n+        ])\n+        AS_IF([test \"x$ax_cv_ncursesw\" = xno && test \"x$with_ncursesw\" = xyes], [\n+            AC_MSG_ERROR([--with-ncursesw specified but could not find NcursesW library])\n+        ])\n+\n+        AS_IF([test \"x$ax_cv_ncursesw\" = xyes], [\n+            ax_cv_curses=yes\n+            ax_cv_curses_which=ncursesw\n+            CURSES_LIB=\"-lncursesw\"\n+            AC_DEFINE([HAVE_NCURSESW], [1], [Define to 1 if the NcursesW library is present])\n+            AC_DEFINE([HAVE_CURSES],   [1], [Define to 1 if a SysV or X/Open compatible Curses library is present])\n+\n+            AC_CACHE_CHECK([for working ncursesw/curses.h], [ax_cv_header_ncursesw_curses_h], [\n+                AC_LINK_IFELSE([AC_LANG_PROGRAM([[\n+                        @%:@define _XOPEN_SOURCE_EXTENDED 1\n+                        @%:@include <ncursesw/curses.h>\n+                    ]], [[\n+                        chtype a = A_BOLD;\n+                        int b = KEY_LEFT;\n+                        chtype c = COLOR_PAIR(1) & A_COLOR;\n+                        attr_t d = WA_NORMAL;\n+                        cchar_t e;\n+                        wint_t f;\n+                        int g = getattrs(stdscr);\n+                        int h = getcurx(stdscr) + getmaxx(stdscr);\n+                        initscr();\n+                        init_pair(1, COLOR_WHITE, COLOR_RED);\n+                        wattr_set(stdscr, d, 0, NULL);\n+                        wget_wch(stdscr, &f);\n+                    ]])],\n+                    [ax_cv_header_ncursesw_curses_h=yes],\n+                    [ax_cv_header_ncursesw_curses_h=no])\n+            ])\n+            AS_IF([test \"x$ax_cv_header_ncursesw_curses_h\" = xyes], [\n+                ax_cv_curses_enhanced=yes\n+                ax_cv_curses_color=yes\n+                ax_cv_curses_obsolete=yes\n+                AC_DEFINE([HAVE_CURSES_ENHANCED],   [1], [Define to 1 if library supports X/Open Enhanced functions])\n+                AC_DEFINE([HAVE_CURSES_COLOR],      [1], [Define to 1 if library supports color (enhanced functions)])\n+                AC_DEFINE([HAVE_CURSES_OBSOLETE],   [1], [Define to 1 if library supports certain obsolete features])\n+                AC_DEFINE([HAVE_NCURSESW_CURSES_H], [1], [Define to 1 if <ncursesw/curses.h> is present])\n+            ])\n+\n+            AC_CACHE_CHECK([for working ncursesw.h], [ax_cv_header_ncursesw_h], [\n+                AC_LINK_IFELSE([AC_LANG_PROGRAM([[\n+                        @%:@define _XOPEN_SOURCE_EXTENDED 1\n+                        @%:@include <ncursesw.h>\n+                    ]], [[\n+                        chtype a = A_BOLD;\n+                        int b = KEY_LEFT;\n+                        chtype c = COLOR_PAIR(1) & A_COLOR;\n+                        attr_t d = WA_NORMAL;\n+                        cchar_t e;\n+                        wint_t f;\n+                        int g = getattrs(stdscr);\n+                        int h = getcurx(stdscr) + getmaxx(stdscr);\n+                        initscr();\n+                        init_pair(1, COLOR_WHITE, COLOR_RED);\n+                        wattr_set(stdscr, d, 0, NULL);\n+                        wget_wch(stdscr, &f);\n+                    ]])],\n+                    [ax_cv_header_ncursesw_h=yes],\n+                    [ax_cv_header_ncursesw_h=no])\n+            ])\n+            AS_IF([test \"x$ax_cv_header_ncursesw_h\" = xyes], [\n+                ax_cv_curses_enhanced=yes\n+                ax_cv_curses_color=yes\n+                ax_cv_curses_obsolete=yes\n+                AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions])\n+                AC_DEFINE([HAVE_CURSES_COLOR],    [1], [Define to 1 if library supports color (enhanced functions)])\n+                AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features])\n+                AC_DEFINE([HAVE_NCURSESW_H],      [1], [Define to 1 if <ncursesw.h> is present])\n+            ])\n+\n+            AC_CACHE_CHECK([for working ncurses.h], [ax_cv_header_ncurses_h_with_ncursesw], [\n+                AC_LINK_IFELSE([AC_LANG_PROGRAM([[\n+                        @%:@define _XOPEN_SOURCE_EXTENDED 1\n+                        @%:@include <ncurses.h>\n+                    ]], [[\n+                        chtype a = A_BOLD;\n+                        int b = KEY_LEFT;\n+                        chtype c = COLOR_PAIR(1) & A_COLOR;\n+                        attr_t d = WA_NORMAL;\n+                        cchar_t e;\n+                        wint_t f;\n+                        int g = getattrs(stdscr);\n+                        int h = getcurx(stdscr) + getmaxx(stdscr);\n+                        initscr();\n+                        init_pair(1, COLOR_WHITE, COLOR_RED);\n+                        wattr_set(stdscr, d, 0, NULL);\n+                        wget_wch(stdscr, &f);\n+                    ]])],\n+                    [ax_cv_header_ncurses_h_with_ncursesw=yes],\n+                    [ax_cv_header_ncurses_h_with_ncursesw=no])\n+            ])\n+            AS_IF([test \"x$ax_cv_header_ncurses_h_with_ncursesw\" = xyes], [\n+                ax_cv_curses_enhanced=yes\n+                ax_cv_curses_color=yes\n+                ax_cv_curses_obsolete=yes\n+                AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions])\n+                AC_DEFINE([HAVE_CURSES_COLOR],    [1], [Define to 1 if library supports color (enhanced functions)])\n+                AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features])\n+                AC_DEFINE([HAVE_NCURSES_H],       [1], [Define to 1 if <ncurses.h> is present])\n+            ])\n+\n+            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], [\n+                AC_MSG_WARN([could not find a working ncursesw/curses.h, ncursesw.h or ncurses.h])\n+            ])\n+        ])\n+    ])\n+\n+    # Test for Ncurses\n+\n+    AS_IF([test \"x$CURSES_LIB\" = x && test \"x$with_ncurses\" != xno && test \"x$ax_cv_curses_which\" = xno], [\n+        LIBS=\"$ax_saved_LIBS -lncurses\"\n+\n+        AC_CACHE_CHECK([for Ncurses library], [ax_cv_ncurses], [\n+            AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])],\n+                [ax_cv_ncurses=yes], [ax_cv_ncurses=no])\n+        ])\n+        AS_IF([test \"x$ax_cv_ncurses\" = xno && test \"x$with_ncurses\" = xyes], [\n+            AC_MSG_ERROR([--with-ncurses specified but could not find Ncurses library])\n+        ])\n+\n+        AS_IF([test \"x$ax_cv_ncurses\" = xyes], [\n+            ax_cv_curses=yes\n+            ax_cv_curses_which=ncurses\n+            CURSES_LIB=\"-lncurses\"\n+            AC_DEFINE([HAVE_NCURSES], [1], [Define to 1 if the Ncurses library is present])\n+            AC_DEFINE([HAVE_CURSES],  [1], [Define to 1 if a SysV or X/Open compatible Curses library is present])\n+\n+            AC_CACHE_CHECK([for working ncurses/curses.h], [ax_cv_header_ncurses_curses_h], [\n+                AC_LINK_IFELSE([AC_LANG_PROGRAM([[\n+                        @%:@include <ncurses/curses.h>\n+                    ]], [[\n+                        chtype a = A_BOLD;\n+                        int b = KEY_LEFT;\n+                        chtype c = COLOR_PAIR(1) & A_COLOR;\n+                        int g = getattrs(stdscr);\n+                        int h = getcurx(stdscr) + getmaxx(stdscr);\n+                        initscr();\n+                        init_pair(1, COLOR_WHITE, COLOR_RED);\n+                    ]])],\n+                    [ax_cv_header_ncurses_curses_h=yes],\n+                    [ax_cv_header_ncurses_curses_h=no])\n+            ])\n+            AS_IF([test \"x$ax_cv_header_ncurses_curses_h\" = xyes], [\n+                ax_cv_curses_color=yes\n+                ax_cv_curses_obsolete=yes\n+                AC_DEFINE([HAVE_CURSES_COLOR],     [1], [Define to 1 if library supports color (enhanced functions)])\n+                AC_DEFINE([HAVE_CURSES_OBSOLETE],  [1], [Define to 1 if library supports certain obsolete features])\n+                AC_DEFINE([HAVE_NCURSES_CURSES_H], [1], [Define to 1 if <ncurses/curses.h> is present])\n+            ])\n+\n+            AC_CACHE_CHECK([for working ncurses.h], [ax_cv_header_ncurses_h], [\n+                AC_LINK_IFELSE([AC_LANG_PROGRAM([[\n+                        @%:@include <ncurses.h>\n+                    ]], [[\n+                        chtype a = A_BOLD;\n+                        int b = KEY_LEFT;\n+                        chtype c = COLOR_PAIR(1) & A_COLOR;\n+                        int g = getattrs(stdscr);\n+                        int h = getcurx(stdscr) + getmaxx(stdscr);\n+                        initscr();\n+                        init_pair(1, COLOR_WHITE, COLOR_RED);\n+                    ]])],\n+                    [ax_cv_header_ncurses_h=yes],\n+                    [ax_cv_header_ncurses_h=no])\n+            ])\n+            AS_IF([test \"x$ax_cv_header_ncurses_h\" = xyes], [\n+                ax_cv_curses_color=yes\n+                ax_cv_curses_obsolete=yes\n+                AC_DEFINE([HAVE_CURSES_COLOR],    [1], [Define to 1 if library supports color (enhanced functions)])\n+                AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features])\n+                AC_DEFINE([HAVE_NCURSES_H],       [1], [Define to 1 if <ncurses.h> is present])\n+            ])\n+\n+            AS_IF([test \"x$ax_cv_header_ncurses_curses_h\" = xno && test \"x$ax_cv_header_ncurses_h\" = xno], [\n+                AC_MSG_WARN([could not find a working ncurses/curses.h or ncurses.h])\n+            ])\n+        ])\n+    ])\n+\n+    # Test for plain Curses (or if CURSES_LIB was set by user)\n+\n+    AS_IF([test \"x$with_plaincurses\" != xno && test \"x$ax_cv_curses_which\" = xno], [\n+        AS_IF([test \"x$CURSES_LIB\" != x], [\n+            LIBS=\"$ax_saved_LIBS $CURSES_LIB\"\n+        ], [\n+            LIBS=\"$ax_saved_LIBS -lcurses\"\n+        ])\n+\n+        AC_CACHE_CHECK([for Curses library], [ax_cv_plaincurses], [\n+            AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])],\n+                [ax_cv_plaincurses=yes], [ax_cv_plaincurses=no])\n+        ])\n+\n+        AS_IF([test \"x$ax_cv_plaincurses\" = xyes], [\n+            ax_cv_curses=yes\n+            ax_cv_curses_which=plaincurses\n+            AS_IF([test \"x$CURSES_LIB\" = x], [\n+                CURSES_LIB=\"-lcurses\"\n+            ])\n+            AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present])\n+\n+            # Check for base conformance (and header file)\n+\n+            AC_CACHE_CHECK([for working curses.h], [ax_cv_header_curses_h], [\n+                AC_LINK_IFELSE([AC_LANG_PROGRAM([[\n+                        @%:@include <curses.h>\n+                    ]], [[\n+                        chtype a = A_BOLD;\n+                        int b = KEY_LEFT;\n+                        initscr();\n+                    ]])],\n+                    [ax_cv_header_curses_h=yes],\n+                    [ax_cv_header_curses_h=no])\n+            ])\n+            AS_IF([test \"x$ax_cv_header_curses_h\" = xyes], [\n+                AC_DEFINE([HAVE_CURSES_H], [1], [Define to 1 if <curses.h> is present])\n+\n+                # Check for X/Open Enhanced conformance\n+\n+                AC_CACHE_CHECK([for X/Open Enhanced Curses conformance], [ax_cv_plaincurses_enhanced], [\n+                    AC_LINK_IFELSE([AC_LANG_PROGRAM([[\n+                            @%:@define _XOPEN_SOURCE_EXTENDED 1\n+                            @%:@include <curses.h>\n+                            @%:@ifndef _XOPEN_CURSES\n+                            @%:@error \"this Curses library is not enhanced\"\n+                            \"this Curses library is not enhanced\"\n+                            @%:@endif\n+                        ]], [[\n+                            chtype a = A_BOLD;\n+                            int b = KEY_LEFT;\n+                            chtype c = COLOR_PAIR(1) & A_COLOR;\n+                            attr_t d = WA_NORMAL;\n+                            cchar_t e;\n+                            wint_t f;\n+                            initscr();\n+                            init_pair(1, COLOR_WHITE, COLOR_RED);\n+                            wattr_set(stdscr, d, 0, NULL);\n+                            wget_wch(stdscr, &f);\n+                        ]])],\n+                        [ax_cv_plaincurses_enhanced=yes],\n+                        [ax_cv_plaincurses_enhanced=no])\n+                ])\n+                AS_IF([test \"x$ax_cv_plaincurses_enhanced\" = xyes], [\n+                    ax_cv_curses_enhanced=yes\n+                    ax_cv_curses_color=yes\n+                    AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions])\n+                    AC_DEFINE([HAVE_CURSES_COLOR],    [1], [Define to 1 if library supports color (enhanced functions)])\n+                ])\n+\n+                # Check for color functions\n+\n+                AC_CACHE_CHECK([for Curses color functions], [ax_cv_plaincurses_color], [\n+                    AC_LINK_IFELSE([AC_LANG_PROGRAM([[\n+                        @%:@define _XOPEN_SOURCE_EXTENDED 1\n+                        @%:@include <curses.h>\n+                        ]], [[\n+                            chtype a = A_BOLD;\n+                            int b = KEY_LEFT;\n+                            chtype c = COLOR_PAIR(1) & A_COLOR;\n+                            initscr();\n+                            init_pair(1, COLOR_WHITE, COLOR_RED);\n+                        ]])],\n+                        [ax_cv_plaincurses_color=yes],\n+                        [ax_cv_plaincurses_color=no])\n+                ])\n+                AS_IF([test \"x$ax_cv_plaincurses_color\" = xyes], [\n+                    ax_cv_curses_color=yes\n+                    AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)])\n+                ])\n+\n+                # Check for obsolete functions\n+\n+                AC_CACHE_CHECK([for obsolete Curses functions], [ax_cv_plaincurses_obsolete], [\n+                AC_LINK_IFELSE([AC_LANG_PROGRAM([[\n+                        @%:@include <curses.h>\n+                    ]], [[\n+                        chtype a = A_BOLD;\n+                        int b = KEY_LEFT;\n+                        int g = getattrs(stdscr);\n+                        int h = getcurx(stdscr) + getmaxx(stdscr);\n+                        initscr();\n+                    ]])],\n+                    [ax_cv_plaincurses_obsolete=yes],\n+                    [ax_cv_plaincurses_obsolete=no])\n+                ])\n+                AS_IF([test \"x$ax_cv_plaincurses_obsolete\" = xyes], [\n+                    ax_cv_curses_obsolete=yes\n+                    AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features])\n+                ])\n+            ])\n+\n+            AS_IF([test \"x$ax_cv_header_curses_h\" = xno], [\n+                AC_MSG_WARN([could not find a working curses.h])\n+            ])\n+        ])\n+    ])\n+\n+    AS_IF([test \"x$ax_cv_curses\"          != xyes], [ax_cv_curses=no])\n+    AS_IF([test \"x$ax_cv_curses_enhanced\" != xyes], [ax_cv_curses_enhanced=no])\n+    AS_IF([test \"x$ax_cv_curses_color\"    != xyes], [ax_cv_curses_color=no])\n+    AS_IF([test \"x$ax_cv_curses_obsolete\" != xyes], [ax_cv_curses_obsolete=no])\n+\n+    LIBS=$ax_saved_LIBS\n+])dnl\ndiff --git a/autotools/softether.am b/autotools/softether.am\nnew file mode 100644\nindex 00000000..e5e91eeb\n--- /dev/null\n+++ b/autotools/softether.am\n@@ -0,0 +1,39 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free \n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+if CONFIGURE_ENABLE_DEBUG\n+DEBUG_CFLAGS = -g -D_DEBUG -DDEBUG\n+else\n+DEBUG_CFLAGS = -DNDEBUG -DVPN_SPEED\n+endif\n+\n+AM_CFLAGS = \\\n+\t$(DEBUG_CFLAGS) \\\n+\t-I$(top_srcdir)/src \\\n+\t-I$(top_srcdir)/src/Mayaqua \\\n+\t-I$(top_srcdir)/src/Cedar \\\n+\t-DUNIX \\\n+\t-DUNIX_LINUX \\\n+\t-D_REENTRANT \\\n+\t-DREENTRANT \\\n+\t-D_THREAD_SAFE \\\n+\t-D_THREADSAFE \\\n+\t-DTHREAD_SAFE \\\n+\t-DTHREADSAFE \\\n+\t-D_FILE_OFFSET_BITS=64 \\\n+\t-fsigned-char\ndiff --git a/configure.ac b/configure.ac\nnew file mode 100644\nindex 00000000..4a3fc2ba\n--- /dev/null\n+++ b/configure.ac\n@@ -0,0 +1,96 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free \n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+AC_INIT([SoftEther], [1], [http://www.vpnusers.com/], [softether], [http://www.softether.org/])\n+AC_CONFIG_AUX_DIR([autotools])\n+AC_CONFIG_MACRO_DIR([autotools])\n+AM_INIT_AUTOMAKE([foreign -Wall -Werror])\n+AM_PROG_AR\n+AC_PROG_CC\n+AC_PROG_LIBTOOL\n+AC_CONFIG_HEADERS([softether_config.h])\n+AC_CONFIG_FILES([\n+\tMakefile\n+\tsrc/Makefile\n+\tsrc/Mayaqua/Makefile\n+\tsrc/Cedar/Makefile\n+\tsrc/hamcorebuilder/Makefile\n+\tsrc/bin/hamcore/Makefile\n+\tsrc/vpnserver/Makefile\n+\tsrc/vpnclient/Makefile\n+\tsrc/vpnbridge/Makefile\n+\tsrc/vpncmd/Makefile\n+])\n+\n+\n+AC_ARG_ENABLE(\n+\t[debug],\n+\tAS_HELP_STRING([--enable-debug], [build SoftEther with debugging features]),\n+\t[debug=yes]\n+)\n+AM_CONDITIONAL([CONFIGURE_ENABLE_DEBUG], [test _\"$debug\" = _yes])\n+\n+\n+AX_PTHREAD([\n+\tAC_SUBST(PTHREAD_CC)\n+\tAC_SUBST(PTHREAD_CFLAGS)\n+\tAC_SUBST(PTHREAD_LIBS)\n+],[\n+\tAC_MSG_ERROR([pthread capabilities not found])\n+])\n+\n+CC=\"$PTHREAD_CC\"\n+CFLAGS=\"$CFLAGS $PTHREAD_CFLAGS\"\n+LIBS=\"$PTHREAD_LIBS $LIBS\"\n+\n+\n+AX_CHECK_OPENSSL([\n+\tAC_SUBST(OPENSSL_LIBS)\n+\tAC_SUBST(OPENSSL_LDFLAGS)\n+],[\n+\tAC_MSG_ERROR([openssl not found])\n+])\n+\n+LIBS=\"$LIBS $OPENSSL_LIBS\"\n+LDFLAGS=\"$LDFLAGS $OPENSSL_LDFLAGS\"\n+\n+\n+# This macro automatically updates build variables.\n+AX_CHECK_ZLIB(, AC_MSG_ERROR([zlib not found]))\n+\n+\n+AX_WITH_CURSES\n+if test \"_$ax_cv_curses\" != _yes\n+then\n+\tAC_MSG_ERROR([libcurses, libncurses, or libncursesw not found])\n+else\n+\tAC_SUBST(CURSES_LIB)\n+\tLIBS=\"$LIBS $CURSES_LIB\"\n+fi\n+\n+\n+AX_LIB_READLINE\n+if test \"_$ax_cv_lib_readline\" = _no\n+then\n+\tAC_MSG_ERROR([libreadline not found])\n+else\n+\t: This macro automatically updates build variables.\n+fi\n+\n+\n+AC_OUTPUT\n--- a/configure\t2017-07-16 04:53:31.000000000 +0200\n+++ b/configure\t1970-01-01 01:00:00.000000000 +0100\n@@ -1,112 +0,0 @@\n-#!/bin/sh\n-\n-echo '---------------------------------------------------------------------'\n-echo 'SoftEther VPN for Unix'\n-echo\n-echo 'Copyright (c) Daiyuu Nobori.'\n-echo 'Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.'\n-echo 'Copyright (c) SoftEther Corporation.'\n-echo 'Copyright (c) all contributors on SoftEther VPN project in GitHub.'\n-echo\n-echo 'License: The Apache License, Version 2.0'\n-echo\n-echo 'Read and understand README.TXT, LICENSE.TXT and WARNING.TXT before use.'\n-echo '---------------------------------------------------------------------'\n-echo\n-\n-echo 'Welcome to the corner-cutting configure script !'\n-echo\n-\n-OS=\"\"\n-case \"`uname -s`\" in\n-Linux)\n-\tOS=\"linux\"\n-\t;;\n-FreeBSD)\n-\tOS=\"freebsd\"\n-\t;;\n-SunOS)\n-\tOS=\"solaris\"\n-\t;;\n-Darwin)\n-\tOS=\"macos\"\n-\t;;\n-OpenBSD)\n-\tOS=\"openbsd\"\n-\t;;\n-*)\n-\techo 'Select your operating system below:'\n-\techo ' 1: Linux'\n-\techo ' 2: FreeBSD'\n-\techo ' 3: Solaris'\n-\techo ' 4: Mac OS X'\n-\techo ' 5: OpenBSD'\n-\techo\n-\techo -n 'Which is your operating system (1 - 5) ? : '\n-\tread TMP\n-\techo\n-\tif test \"$TMP\" = \"1\"\n-\tthen\n-\t\tOS=\"linux\"\n-\tfi\n-\tif test \"$TMP\" = \"2\"\n-\tthen\n-\t\tOS=\"freebsd\"\n-\tfi\n-\tif test \"$TMP\" = \"3\"\n-\tthen\n-\t\tOS=\"solaris\"\n-\tfi\n-\tif test \"$TMP\" = \"4\"\n-\tthen\n-\t\tOS=\"macos\"\n-\tfi\n-\tif test \"$TMP\" = \"5\"\n-\tthen\n-\t\tOS=\"openbsd\"\n-\tfi\n-\n-\tif test \"$OS\" = \"\"\n-\tthen\n-\t\techo \"Wrong number.\"\n-\t\texit 1\n-\tfi\n-\t;;\n-esac\n-\n-CPU=\"\"\n-case \"`uname -m`\" in\n-x86_64|amd64|aarch64|arm64|armv8*|mips64|ppc64|sparc64|alpha|ia64)\n-\tCPU=64bit\n-\t;;\n-i?86|x86pc|i86pc|armv4*|armv5*|armv6*|armv7*)\n-\tCPU=32bit\n-\t;;\n-*)\n-\techo 'Select your CPU bits below:'\n-\techo ' 1: 32-bit'\n-\techo ' 2: 64-bit'\n-\techo\n-\techo -n 'Which is the type of your CPU (1 - 2) ? : '\n-\tread TMP\n-\techo\n-\tif test \"$TMP\" = \"1\"\n-\tthen\n-\t\tCPU=\"32bit\"\n-\tfi\n-\tif test \"$TMP\" = \"2\"\n-\tthen\n-\t\tCPU=\"64bit\"\n-\tfi\n-\n-\tif test \"$CPU\" = \"\"\n-\tthen\n-\t\techo \"Wrong number.\"\n-\t\texit 1\n-\tfi\n-\t;;\n-esac\n-\n-cp src/makefiles/${OS}_${CPU}.mak Makefile\n-\n-echo \"The Makefile is generated. Run 'make' to build SoftEther VPN.\"\n--- a/manual_configure\t1970-01-01 01:00:00.000000000 +0100\n+++ b/manual_configure\t2017-07-16 04:53:31.000000000 +0200\n@@ -0,0 +1,112 @@\n+#!/bin/sh\n+\n+echo '---------------------------------------------------------------------'\n+echo 'SoftEther VPN for Unix'\n+echo\n+echo 'Copyright (c) SoftEther VPN Project at University of Tsukuba, Japan.'\n+echo 'Copyright (c) Daiyuu Nobori. All Rights Reserved.'\n+echo\n+echo 'This program is free software; you can redistribute it and/or'\n+echo 'modify it under the terms of the GNU General Public License'\n+echo 'version 2 as published by the Free Software Foundation.'\n+echo\n+echo 'Read and understand README.TXT, LICENSE.TXT and WARNING.TXT before use.'\n+echo '---------------------------------------------------------------------'\n+echo\n+\n+echo 'Welcome to the corner-cutting configure script !'\n+echo\n+\n+OS=\"\"\n+case \"`uname -s`\" in\n+Linux)\n+\tOS=\"linux\"\n+\t;;\n+FreeBSD)\n+\tOS=\"freebsd\"\n+\t;;\n+SunOS)\n+\tOS=\"solaris\"\n+\t;;\n+Darwin)\n+\tOS=\"macos\"\n+\t;;\n+OpenBSD)\n+\tOS=\"openbsd\"\n+\t;;\n+*)\n+\techo 'Select your operating system below:'\n+\techo ' 1: Linux'\n+\techo ' 2: FreeBSD'\n+\techo ' 3: Solaris'\n+\techo ' 4: Mac OS X'\n+\techo ' 5: OpenBSD'\n+\techo\n+\techo -n 'Which is your operating system (1 - 5) ? : '\n+\tread TMP\n+\techo\n+\tif test \"$TMP\" = \"1\"\n+\tthen\n+\t\tOS=\"linux\"\n+\tfi\n+\tif test \"$TMP\" = \"2\"\n+\tthen\n+\t\tOS=\"freebsd\"\n+\tfi\n+\tif test \"$TMP\" = \"3\"\n+\tthen\n+\t\tOS=\"solaris\"\n+\tfi\n+\tif test \"$TMP\" = \"4\"\n+\tthen\n+\t\tOS=\"macos\"\n+\tfi\n+\tif test \"$TMP\" = \"5\"\n+\tthen\n+\t\tOS=\"openbsd\"\n+\tfi\n+\n+\tif test \"$OS\" = \"\"\n+\tthen\n+\t\techo \"Wrong number.\"\n+\t\texit 1\n+\tfi\n+\t;;\n+esac\n+\n+CPU=\"\"\n+case \"`uname -m`\" in\n+x86_64|amd64|aarch64|arm64|armv8*|mips64|ppc64|sparc64|alpha|ia64)\n+\tCPU=64bit\n+\t;;\n+i?86|x86pc|i86pc|armv4*|armv5*|armv6*|armv7*)\n+\tCPU=32bit\n+\t;;\n+*)\n+\techo 'Select your CPU bits below:'\n+\techo ' 1: 32-bit'\n+\techo ' 2: 64-bit'\n+\techo\n+\techo -n 'Which is the type of your CPU (1 - 2) ? : '\n+\tread TMP\n+\techo\n+\tif test \"$TMP\" = \"1\"\n+\tthen\n+\t\tCPU=\"32bit\"\n+\tfi\n+\tif test \"$TMP\" = \"2\"\n+\tthen\n+\t\tCPU=\"64bit\"\n+\tfi\n+\n+\tif test \"$CPU\" = \"\"\n+\tthen\n+\t\techo \"Wrong number.\"\n+\t\texit 1\n+\tfi\n+\t;;\n+esac\n+\n+cp src/makefiles/${OS}_${CPU}.mak Makefile\n+\n+echo \"The Makefile is generated. Run 'make' to build SoftEther VPN.\"\ndiff --git a/src/Cedar/Makefile.am b/src/Cedar/Makefile.am\nnew file mode 100644\nindex 00000000..5346537d\n--- /dev/null\n+++ b/src/Cedar/Makefile.am\n@@ -0,0 +1,82 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free \n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+include $(top_srcdir)/autotools/softether.am\n+\n+noinst_LTLIBRARIES = libcedar.la\n+\n+libcedar_la_SOURCES = \\\n+\tAccount.c \\\n+\tAdmin.c \\\n+\tAzureClient.c \\\n+\tAzureServer.c \\\n+\tBridge.c \\\n+\tBridgeUnix.c \\\n+\tBridgeWin32.c \\\n+\tCedar.c \\\n+\tCedarPch.c \\\n+\tClient.c \\\n+\tCM.c \\\n+\tCommand.c \\\n+\tConnection.c \\\n+\tConsole.c \\\n+\tDatabase.c \\\n+\tDDNS.c \\\n+\tEM.c \\\n+\tEtherLog.c \\\n+\tHub.c \\\n+\tInterop_OpenVPN.c \\\n+\tInterop_SSTP.c \\\n+\tIPsec.c \\\n+\tIPsec_EtherIP.c \\\n+\tIPsec_IKE.c \\\n+\tIPsec_IkePacket.c \\\n+\tIPsec_IPC.c \\\n+\tIPsec_L2TP.c \\\n+\tIPsec_PPP.c \\\n+\tIPsec_Win7.c \\\n+\tLayer3.c \\\n+\tLink.c \\\n+\tListener.c \\\n+\tLogging.c \\\n+\tNat.c \\\n+\tNativeStack.c \\\n+\tNM.c \\\n+\tNullLan.c \\\n+\tProtocol.c \\\n+\tRadius.c \\\n+\tRemote.c \\\n+\tSam.c \\\n+\tSecureInfo.c \\\n+\tSecureNAT.c \\\n+\tSeLowUser.c \\\n+\tServer.c \\\n+\tSession.c \\\n+\tSM.c \\\n+\tSW.c \\\n+\tUdpAccel.c \\\n+\tUT.c \\\n+\tVG.c \\\n+\tVirtual.c \\\n+\tVLan.c \\\n+\tVLanUnix.c \\\n+\tVLanWin32.c \\\n+\tWaterMark.c \\\n+\tWebUI.c \\\n+\tWinUi.c \\\n+\tWpc.c\ndiff --git a/src/Makefile.am b/src/Makefile.am\nnew file mode 100644\nindex 00000000..dc745426\n--- /dev/null\n+++ b/src/Makefile.am\n@@ -0,0 +1,26 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free \n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+# These components are built as libtool convenience libraries.\n+SUBDIRS = Mayaqua Cedar\n+\n+# This is a nodist helper.\n+SUBDIRS += hamcorebuilder\n+\n+# These are final build products.\n+SUBDIRS += bin/hamcore vpnserver vpnclient vpnbridge vpncmd\ndiff --git a/src/Mayaqua/Makefile.am b/src/Mayaqua/Makefile.am\nnew file mode 100644\nindex 00000000..6b8dc1a6\n--- /dev/null\n+++ b/src/Mayaqua/Makefile.am\n@@ -0,0 +1,43 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free \n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+include $(top_srcdir)/autotools/softether.am\n+\n+noinst_LTLIBRARIES = libmayaqua.la\n+\n+libmayaqua_la_SOURCES = \\\n+\tCfg.c \\\n+\tEncrypt.c \\\n+\tFileIO.c \\\n+\tInternat.c \\\n+\tKernel.c \\\n+\tMayaqua.c \\\n+\tMemory.c \\\n+\tMicrosoft.c \\\n+\tNetwork.c \\\n+\tObject.c \\\n+\tOS.c \\\n+\tPack.c \\\n+\tSecure.c \\\n+\tStr.c \\\n+\tTable.c \\\n+\tTcpIp.c \\\n+\tTick64.c \\\n+\tTracking.c \\\n+\tUnix.c \\\n+\tWin32.c\ndiff --git a/src/bin/hamcore/Makefile.am b/src/bin/hamcore/Makefile.am\nnew file mode 100644\nindex 00000000..37b0291e\n--- /dev/null\n+++ b/src/bin/hamcore/Makefile.am\n@@ -0,0 +1,29 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free\n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+include $(top_srcdir)/autotools/softether.am\n+\n+# This is required to use a custom build rule with -Wall and -Werror enabled.\n+AUTOMAKE_OPTIONS = -Wno-override\n+EXEEXT =\n+HAMCOREBUILDER = $(top_builddir)/src/hamcorebuilder/hamcorebuilder\n+\n+sbin_PROGRAMS = hamcore.se2\n+\n+hamcore.se2$(EXEEXT): $(HAMCOREBUILDER)\n+\t$(HAMCOREBUILDER) $(top_srcdir)/src/bin/hamcore $@\ndiff --git a/src/hamcorebuilder/Makefile.am b/src/hamcorebuilder/Makefile.am\nnew file mode 100644\nindex 00000000..a22429f0\n--- /dev/null\n+++ b/src/hamcorebuilder/Makefile.am\n@@ -0,0 +1,29 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free \n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+include $(top_srcdir)/autotools/softether.am\n+\n+noinst_PROGRAMS = \\\n+\thamcorebuilder\n+\n+hamcorebuilder_SOURCES = \\\n+\thamcorebuilder.c\n+\n+hamcorebuilder_LDADD = \\\n+\t$(top_builddir)/src/Mayaqua/libmayaqua.la \\\n+\t$(top_builddir)/src/Cedar/libcedar.la\ndiff --git a/src/vpnbridge/Makefile.am b/src/vpnbridge/Makefile.am\nnew file mode 100644\nindex 00000000..35fe043d\n--- /dev/null\n+++ b/src/vpnbridge/Makefile.am\n@@ -0,0 +1,29 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free\n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+include $(top_srcdir)/autotools/softether.am\n+\n+sbin_PROGRAMS = \\\n+\tvpnbridge\n+\n+vpnbridge_SOURCES = \\\n+\tvpnbridge.c\n+\n+vpnbridge_LDADD = \\\n+\t$(top_builddir)/src/Mayaqua/libmayaqua.la \\\n+\t$(top_builddir)/src/Cedar/libcedar.la\ndiff --git a/src/vpnclient/Makefile.am b/src/vpnclient/Makefile.am\nnew file mode 100644\nindex 00000000..1aa55330\n--- /dev/null\n+++ b/src/vpnclient/Makefile.am\n@@ -0,0 +1,29 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free\n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+include $(top_srcdir)/autotools/softether.am\n+\n+sbin_PROGRAMS = \\\n+\tvpnclient\n+\n+vpnclient_SOURCES = \\\n+\tvpncsvc.c\n+\n+vpnclient_LDADD = \\\n+\t$(top_builddir)/src/Mayaqua/libmayaqua.la \\\n+\t$(top_builddir)/src/Cedar/libcedar.la\ndiff --git a/src/vpncmd/Makefile.am b/src/vpncmd/Makefile.am\nnew file mode 100644\nindex 00000000..d8042aa2\n--- /dev/null\n+++ b/src/vpncmd/Makefile.am\n@@ -0,0 +1,29 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free \n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+include $(top_srcdir)/autotools/softether.am\n+\n+sbin_PROGRAMS = \\\n+\tvpncmd\n+\n+vpncmd_SOURCES = \\\n+\tvpncmd.c\n+\n+vpncmd_LDADD = \\\n+\t$(top_builddir)/src/Mayaqua/libmayaqua.la \\\n+\t$(top_builddir)/src/Cedar/libcedar.la\ndiff --git a/src/vpnserver/Makefile.am b/src/vpnserver/Makefile.am\nnew file mode 100644\nindex 00000000..c1c33570\n--- /dev/null\n+++ b/src/vpnserver/Makefile.am\n@@ -0,0 +1,29 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free \n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+include $(top_srcdir)/autotools/softether.am\n+\n+sbin_PROGRAMS = \\\n+\tvpnserver\n+\n+vpnserver_SOURCES = \\\n+\tvpnserver.c\n+\n+vpnserver_LDADD = \\\n+\t$(top_builddir)/src/Mayaqua/libmayaqua.la \\\n+\t$(top_builddir)/src/Cedar/libcedar.la\n"
  },
  {
    "path": "package/softether/0002-Create-libsoftether.so-and-dynamically-link.patch",
    "content": "From 75625af541fd128f51079d0ffe5ef24645b8f421 Mon Sep 17 00:00:00 2001\nFrom: Darik Horn <dajhorn@vanadac.com>\nDate: Sun, 13 Apr 2014 12:51:15 -0400\nSubject: [PATCH] Create libsoftether.so and dynamically link the userland.\n\nSharing object code between vpnbridge, vpnclient, vpnserver, and vpncmd\nreduces the binary size of SoftEther by 85% and its administrative memory\nfootprint by 50%.\n\n[Upstream commit https://github.com/dajhorn/SoftEtherVPN/commit/75625af541fd128f51079d0ffe5ef24645b8f421]\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.ac                 |  1 +\n src/Makefile.am              |  7 +++++--\n src/libsoftether/Makefile.am | 34 ++++++++++++++++++++++++++++++++++\n src/vpnbridge/Makefile.am    |  3 +--\n src/vpnclient/Makefile.am    |  3 +--\n src/vpncmd/Makefile.am       |  3 +--\n src/vpnserver/Makefile.am    |  3 +--\n 7 files changed, 44 insertions(+), 10 deletions(-)\n create mode 100644 src/libsoftether/Makefile.am\n\ndiff --git a/configure.ac b/configure.ac\nindex 4a3fc2ba..94639c44 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -30,6 +30,7 @@ AC_CONFIG_FILES([\n \tsrc/Mayaqua/Makefile\n \tsrc/Cedar/Makefile\n \tsrc/hamcorebuilder/Makefile\n+\tsrc/libsoftether/Makefile\n \tsrc/bin/hamcore/Makefile\n \tsrc/vpnserver/Makefile\n \tsrc/vpnclient/Makefile\ndiff --git a/src/Makefile.am b/src/Makefile.am\nindex dc745426..1d041d47 100644\n--- a/src/Makefile.am\n+++ b/src/Makefile.am\n@@ -22,5 +22,8 @@ SUBDIRS = Mayaqua Cedar\n # This is a nodist helper.\n SUBDIRS += hamcorebuilder\n \n-# These are final build products.\n-SUBDIRS += bin/hamcore vpnserver vpnclient vpnbridge vpncmd\n+# These are shared components.\n+SUBDIRS += libsoftether bin/hamcore\n+\n+# These are the final build products.\n+SUBDIRS += vpnserver vpnclient vpnbridge vpncmd\ndiff --git a/src/libsoftether/Makefile.am b/src/libsoftether/Makefile.am\nnew file mode 100644\nindex 00000000..601920d9\n--- /dev/null\n+++ b/src/libsoftether/Makefile.am\n@@ -0,0 +1,34 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free \n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+include $(top_srcdir)/autotools/softether.am\n+\n+lib_LTLIBRARIES = \\\n+\tlibsoftether.la\n+\n+libsoftether_la_SOURCES =\n+\n+libsoftether_la_LDFLAGS = \\\n+\t-avoid-version\n+\n+libsoftether_la_LIBTOOLFLAGS = \\\n+\t--tag=disable-static\n+\n+libsoftether_la_LIBADD = \\\n+\t$(top_builddir)/src/Mayaqua/libmayaqua.la \\\n+\t$(top_builddir)/src/Cedar/libcedar.la\ndiff --git a/src/vpnbridge/Makefile.am b/src/vpnbridge/Makefile.am\nindex 35fe043d..fb91dd2d 100644\n--- a/src/vpnbridge/Makefile.am\n+++ b/src/vpnbridge/Makefile.am\n@@ -25,5 +25,4 @@ vpnbridge_SOURCES = \\\n \tvpnbridge.c\n \n vpnbridge_LDADD = \\\n-\t$(top_builddir)/src/Mayaqua/libmayaqua.la \\\n-\t$(top_builddir)/src/Cedar/libcedar.la\n+\t$(top_builddir)/src/libsoftether/libsoftether.la\ndiff --git a/src/vpnclient/Makefile.am b/src/vpnclient/Makefile.am\nindex 1aa55330..c225c416 100644\n--- a/src/vpnclient/Makefile.am\n+++ b/src/vpnclient/Makefile.am\n@@ -25,5 +25,4 @@ vpnclient_SOURCES = \\\n \tvpncsvc.c\n \n vpnclient_LDADD = \\\n-\t$(top_builddir)/src/Mayaqua/libmayaqua.la \\\n-\t$(top_builddir)/src/Cedar/libcedar.la\n+\t$(top_builddir)/src/libsoftether/libsoftether.la\ndiff --git a/src/vpncmd/Makefile.am b/src/vpncmd/Makefile.am\nindex d8042aa2..271affb0 100644\n--- a/src/vpncmd/Makefile.am\n+++ b/src/vpncmd/Makefile.am\n@@ -25,5 +25,4 @@ vpncmd_SOURCES = \\\n \tvpncmd.c\n \n vpncmd_LDADD = \\\n-\t$(top_builddir)/src/Mayaqua/libmayaqua.la \\\n-\t$(top_builddir)/src/Cedar/libcedar.la\n+\t$(top_builddir)/src/libsoftether/libsoftether.la\ndiff --git a/src/vpnserver/Makefile.am b/src/vpnserver/Makefile.am\nindex c1c33570..1f7b7f98 100644\n--- a/src/vpnserver/Makefile.am\n+++ b/src/vpnserver/Makefile.am\n@@ -25,5 +25,4 @@ vpnserver_SOURCES = \\\n \tvpnserver.c\n \n vpnserver_LDADD = \\\n-\t$(top_builddir)/src/Mayaqua/libmayaqua.la \\\n-\t$(top_builddir)/src/Cedar/libcedar.la\n+\t$(top_builddir)/src/libsoftether/libsoftether.la\n"
  },
  {
    "path": "package/softether/0003-use-fhs-install-directories.patch",
    "content": "From b9420c3bfc2a8b9d35d0c8e5f6849007c2bc21fa Mon Sep 17 00:00:00 2001\nFrom: Darik Horn <dajhorn@vanadac.com>\nDate: Mon, 14 Apr 2014 13:22:24 -0400\nSubject: [PATCH] Use FHS installation directories.\n\nInstall to `/usr/sbin`, `/usr/lib`, and `/var/lib` according to the Linux\nfilesystem hierarchy standard if SoftEther is built through autotools.\n\nIn a managed installation, the FHS stipulates that the application must\naccomodate a read-only installation path.  This requires a new `GetStateDir`\nfunction that substitues `GetExeDir` in some parts of the code.\n\nTaken from Github at\nhttps://github.com/dajhorn/SoftEtherVPN/commit/b9420c3bfc2a8b9d35d0c8e5f6849007c2bc21fa.\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\n[Updated for 4.28 build 9669 beta - src/Mayaqua/Encrypt.c dropped IsXRevoked()\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n autotools/softether.am      |  1 +\n src/Cedar/Admin.c           |  2 +-\n src/Cedar/Command.c         |  6 +++++-\n src/Cedar/Logging.c         |  2 +-\n src/Cedar/Server.c          |  4 ++--\n src/Mayaqua/FileIO.c        | 39 ++++++++++++++++++++++++++++++++++++---\n src/Mayaqua/FileIO.h        |  2 ++\n src/Mayaqua/Mayaqua.c       |  4 ++++\n src/Mayaqua/Table.c         |  6 +++++-\n src/Mayaqua/Unix.c          |  6 +++---\n src/bin/hamcore/Makefile.am |  8 ++++++--\n 11 files changed, 66 insertions(+), 14 deletions(-)\n\nIndex: b/autotools/softether.am\n===================================================================\n--- a/autotools/softether.am\n+++ b/autotools/softether.am\n@@ -27,6 +27,7 @@\n \t-I$(top_srcdir)/src \\\n \t-I$(top_srcdir)/src/Mayaqua \\\n \t-I$(top_srcdir)/src/Cedar \\\n+\t-DSTATE_DIR='\"@localstatedir@/lib/softether\"' \\\n \t-DUNIX \\\n \t-DUNIX_LINUX \\\n \t-D_REENTRANT \\\nIndex: b/src/Cedar/Admin.c\n===================================================================\n--- a/src/Cedar/Admin.c\n+++ b/src/Cedar/Admin.c\n@@ -10334,7 +10334,7 @@\n \r\n \tZero(t, sizeof(RPC_READ_LOG_FILE));\r\n \r\n-\tGetExeDir(exe_dir, sizeof(exe_dir));\r\n+\tGetStateDir(exe_dir, sizeof(exe_dir));\r\n \tFormat(full_path, sizeof(full_path), \"%s/%s\", exe_dir, filepath);\r\n \r\n \t// Read file\r\nIndex: b/src/Cedar/Command.c\n===================================================================\n--- a/src/Cedar/Command.c\n+++ b/src/Cedar/Command.c\n@@ -527,7 +527,7 @@\n \tUINT i;\r\n \r\n \tGetExeName(exe, sizeof(exe));\r\n-\tGetExeDir(exe_dir, sizeof(exe_dir));\r\n+\tGetStateDir(exe_dir, sizeof(exe_dir));\r\n \r\n \tok = false;\r\n \tdirs = EnumDir(exe_dir);\r\n@@ -552,7 +552,11 @@\n \t\tUCHAR *buf;\r\n \t\tIO *io;\r\n #ifndef\tOS_WIN32\r\n+#ifdef STATE_DIR\r\n+\t\twchar_t *filename = L\"\" STATE_DIR L\"/vpn_checker_tmp\";\r\n+#else\r\n \t\twchar_t *filename = L\"/tmp/vpn_checker_tmp\";\r\n+#endif\r\n #else\t// OS_WIN32\r\n \t\twchar_t filename[MAX_PATH];\r\n \t\tCombinePathW(filename, sizeof(filename), MsGetMyTempDirW(), L\"vpn_checker_tmp\");\r\nIndex: b/src/Cedar/Logging.c\n===================================================================\n--- a/src/Cedar/Logging.c\n+++ b/src/Cedar/Logging.c\n@@ -508,7 +508,7 @@\n \r\n \te = ZeroMalloc(sizeof(ERASER));\r\n \r\n-\tGetExeDir(dir, sizeof(dir));\r\n+\tGetStateDir(dir, sizeof(dir));\r\n \r\n \te->Log = log;\r\n \te->MinFreeSpace = min_size;\r\nIndex: b/src/Cedar/Server.c\n===================================================================\n--- a/src/Cedar/Server.c\n+++ b/src/Cedar/Server.c\n@@ -1060,7 +1060,7 @@\n \t\thubname = NULL;\r\n \t}\r\n \r\n-\tGetExeDir(exe_dir, sizeof(exe_dir));\r\n+\tGetStateDir(exe_dir, sizeof(exe_dir));\r\n \r\n \t// Enumerate in the server_log\r\n \tif (hubname == NULL)\r\n@@ -1134,7 +1134,7 @@\n \t\treturn;\r\n \t}\r\n \r\n-\tGetExeDir(exe_dir, sizeof(exe_dir));\r\n+\tGetStateDir(exe_dir, sizeof(exe_dir));\r\n \tFormat(dir_full_path, sizeof(dir_full_path), \"%s/%s\", exe_dir, dirname);\r\n \r\n \tdir = EnumDir(dir_full_path);\r\nIndex: b/src/Mayaqua/FileIO.c\n===================================================================\n--- a/src/Mayaqua/FileIO.c\n+++ b/src/Mayaqua/FileIO.c\n@@ -122,8 +122,14 @@\n #include <errno.h>\r\n #include <Mayaqua/Mayaqua.h>\r\n \r\n+#ifdef STATE_DIR\r\n+static char exe_file_name[MAX_SIZE] = STATE_DIR \"/a.out\";\r\n+static wchar_t exe_file_name_w[MAX_SIZE] = L\"\" STATE_DIR L\"/a.out\";\r\n+#else\r\n static char exe_file_name[MAX_SIZE] = \"/tmp/a.out\";\r\n static wchar_t exe_file_name_w[MAX_SIZE] = L\"/tmp/a.out\";\r\n+#endif\r\n+\r\n static LIST *hamcore = NULL;\r\n static IO *hamcore_io = NULL;\r\n \r\n@@ -1038,7 +1044,7 @@\n \t}\r\n \r\n \t// If the file exist in hamcore/ directory on the local disk, read it\r\n-\tGetExeDirW(exe_dir, sizeof(exe_dir));\r\n+\tGetStateDirW(exe_dir, sizeof(exe_dir));\r\n \r\n \tUniFormat(tmp, sizeof(tmp), L\"%s/%S/%S\", exe_dir, HAMCORE_DIR_NAME, filename);\r\n \r\n@@ -1154,7 +1160,7 @@\n \t\treturn;\r\n \t}\r\n \r\n-\tGetExeDirW(exe_dir, sizeof(exe_dir));\r\n+\tGetStateDirW(exe_dir, sizeof(exe_dir));\r\n \tUniFormat(tmp, sizeof(tmp), L\"%s/%S\", exe_dir, HAMCORE_FILE_NAME);\r\n \r\n \tUniFormat(tmp2, sizeof(tmp2), L\"%s/%S\", exe_dir, HAMCORE_FILE_NAME_2);\r\n@@ -1438,6 +1444,33 @@\n \tGetDirNameFromFilePathW(name, size, exe_file_name_w);\r\n }\r\n \r\n+void GetStateDir(char *name, UINT size)\r\n+{\r\n+\t// Validate arguments\r\n+\tif (name == NULL)\r\n+\t{\r\n+\t\treturn;\r\n+\t}\r\n+#ifdef STATE_DIR\r\n+\tStrCpy(name, size, STATE_DIR);\r\n+#else\r\n+\tGetExeDir(name, size)\r\n+#endif\r\n+}\r\n+void GetStateDirW(wchar_t *name, UINT size)\r\n+{\r\n+\t// Validate arguments\r\n+\tif (name == NULL)\r\n+\t{\r\n+\t\treturn;\r\n+\t}\r\n+#ifdef STATE_DIR\r\n+\tUniStrCpy(name, size, L\"\" STATE_DIR L\"\");\r\n+#else\r\n+\tGetExeDirW(name, size)\r\n+#endif\r\n+}\r\n+\r\n // Get the EXE file name\r\n void GetExeName(char *name, UINT size)\r\n {\r\n@@ -2389,7 +2422,7 @@\n \telse\r\n \t{\r\n \t\twchar_t dir[MAX_SIZE];\r\n-\t\tGetExeDirW(dir, sizeof(dir));\r\n+\t\tGetStateDirW(dir, sizeof(dir));\r\n \t\tConbinePathW(dst, size, dir, &src[1]);\r\n \t}\r\n }\r\nIndex: b/src/Mayaqua/FileIO.h\n===================================================================\n--- a/src/Mayaqua/FileIO.h\n+++ b/src/Mayaqua/FileIO.h\n@@ -349,6 +349,8 @@\n void GetExeNameW(wchar_t *name, UINT size);\r\n void GetExeDir(char *name, UINT size);\r\n void GetExeDirW(wchar_t *name, UINT size);\r\n+void GetStateDir(char *name, UINT size);\r\n+void GetStateDirW(wchar_t *name, UINT size);\r\n void BuildHamcore(char *dst_filename, char *src_dir, bool unix_only);\r\n int CompareHamcore(void *p1, void *p2);\r\n void InitHamcore();\r\nIndex: b/src/Mayaqua/Mayaqua.c\n===================================================================\n--- a/src/Mayaqua/Mayaqua.c\n+++ b/src/Mayaqua/Mayaqua.c\n@@ -611,7 +611,11 @@\n \t\t_exit(0);\r\n \t}\r\n \r\n+#ifndef STATE_DIR\r\n+\t// This check causes hamcorebuilder to fail in an unprivileged\r\n+\t// environment, and is unnecessary for a managed installation.\r\n \tCheckUnixTempDir();\r\n+#endif\r\n \r\n \t// Initialization of Probe\r\n \tInitProbe();\r\nIndex: b/src/Mayaqua/Table.c\n===================================================================\n--- a/src/Mayaqua/Table.c\n+++ b/src/Mayaqua/Table.c\n@@ -1191,7 +1191,7 @@\n \t\treturn;\r\n \t}\r\n \r\n-\tGetExeDirW(exe, sizeof(exe));\r\n+\tGetStateDirW(exe, sizeof(exe));\r\n \tUniStrCpy(hashtemp, sizeof(hashtemp), strfilename);\r\n \tBinToStrW(tmp, sizeof(tmp), filehash, MD5_SIZE);\r\n \tUniStrCat(hashtemp, sizeof(hashtemp), tmp);\r\n@@ -1204,7 +1204,11 @@\n \tUniStrLower(tmp);\r\n \r\n #ifndef\tOS_WIN32\r\n+#ifdef STATE_DIR\r\n+\tUniStrCpy(exe, sizeof(exe), L\"\" STATE_DIR L\"\");\r\n+#else\r\n \tUniStrCpy(exe, sizeof(exe), L\"/tmp\");\r\n+#endif\r\n #else\t// OS_WIN32\r\n \tStrToUni(exe, sizeof(exe), MsGetTempDir());\r\n #endif\t// OS_WIN32\r\nIndex: b/src/Mayaqua/Unix.c\n===================================================================\n--- a/src/Mayaqua/Unix.c\n+++ b/src/Mayaqua/Unix.c\n@@ -928,7 +928,7 @@\n \t\tStrCpy(tmp, sizeof(tmp), instance_name);\r\n \t}\r\n \r\n-\tGetExeDir(dir, sizeof(dir));\r\n+\tGetStateDir(dir, sizeof(dir));\r\n \r\n \t// File name generation\r\n \tFormat(name, sizeof(name), \"%s/.%s\", dir, tmp);\r\n@@ -2260,7 +2260,7 @@\n \t\treturn;\r\n \t}\r\n \r\n-\tGetExeDir(dir, sizeof(dir));\r\n+\tGetStateDir(dir, sizeof(dir));\r\n \r\n \tGetExeName(exe_name, sizeof(exe_name));\r\n \tStrCat(exe_name, sizeof(exe_name), \":pid_hash\");\r\n@@ -2305,7 +2305,7 @@\n \t\treturn;\r\n \t}\r\n \r\n-\tGetExeDir(dir, sizeof(dir));\r\n+\tGetStateDir(dir, sizeof(dir));\r\n \r\n \tGetExeName(exe_name, sizeof(exe_name));\r\n \tStrCat(exe_name, sizeof(exe_name), \":pid_hash\");\r\nIndex: b/src/bin/hamcore/Makefile.am\n===================================================================\n--- a/src/bin/hamcore/Makefile.am\n+++ b/src/bin/hamcore/Makefile.am\n@@ -18,12 +18,16 @@\n \n include $(top_srcdir)/autotools/softether.am\n \n-# This is required to use a custom build rule with -Wall and -Werror enabled.\n+# An empty EXEEXT required for overrides with -Wall and -Werror enabled.\n AUTOMAKE_OPTIONS = -Wno-override\n EXEEXT =\n+\n HAMCOREBUILDER = $(top_builddir)/src/hamcorebuilder/hamcorebuilder\n \n-sbin_PROGRAMS = hamcore.se2\n+noinst_PROGRAMS = hamcore.se2\n \n hamcore.se2$(EXEEXT): $(HAMCOREBUILDER)\n \t$(HAMCOREBUILDER) $(top_srcdir)/src/bin/hamcore $@\n+\n+install-exec-local: hamcore.se2$(EXEEXT)\n+\t$(INSTALL_DATA) -D hamcore.se2$(EXEEXT) $(DESTDIR)$(localstatedir)/lib/softether/hamcore.se2\n"
  },
  {
    "path": "package/softether/0004-create-non-forking-softetherd-for-upstart-and-systemd.patch",
    "content": "From 64dd780905ae339a0a57e4aba541799016816a1a Mon Sep 17 00:00:00 2001\nFrom: Darik Horn <dajhorn@vanadac.com>\nDate: Fri, 3 Oct 2014 13:30:24 -0400\nSubject: [PATCH] Create a non-forking softetherd for upstart and systemd.\n\nImplement a daemon that expects to be invoked by a new-style init like upstart\nor systemd as:\n\n\t/usr/sbin/softetherd [vpnbridge|vpnclient|vpnserver]\n\nAlternatively, if the command line argument is empty, then use the\n`SOFTETHER_MODE` environment variable instead.\n\nConflicts:\n\tsrc/bin/hamcore/strtable_en.stb\n\nTaken from Github at\nhttps://github.com/dajhorn/SoftEtherVPN/commit/64dd780905ae339a0a57e4aba541799016816a1a.\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.ac                    |   1 +\n src/Makefile.am                 |   3 ++\n src/bin/hamcore/strtable_en.stb |   1 +\n src/softetherd/Makefile.am      |  28 ++++++++++\n src/softetherd/softetherd.c     | 114 ++++++++++++++++++++++++++++++++++++++++\n 5 files changed, 147 insertions(+)\n create mode 100644 src/softetherd/Makefile.am\n create mode 100644 src/softetherd/softetherd.c\n\nIndex: b/configure.ac\n===================================================================\n--- a/configure.ac\n+++ b/configure.ac\n@@ -36,6 +36,7 @@\n \tsrc/vpnclient/Makefile\n \tsrc/vpnbridge/Makefile\n \tsrc/vpncmd/Makefile\n+\tsrc/softetherd/Makefile\n ])\n \n \nIndex: b/src/Makefile.am\n===================================================================\n--- a/src/Makefile.am\n+++ b/src/Makefile.am\n@@ -27,3 +27,6 @@\n \n # These are the final build products.\n SUBDIRS += vpnserver vpnclient vpnbridge vpncmd\n+\n+# This is a daemon for upstart and systemd.\n+SUBDIRS += softetherd\nIndex: b/src/bin/hamcore/strtable_en.stb\n===================================================================\n--- a/src/bin/hamcore/strtable_en.stb\n+++ b/src/bin/hamcore/strtable_en.stb\n@@ -1062,6 +1062,7 @@\n \r\n \r\n # Concerning services (UNIX)\r\n+UNIX_DAEMON_HELP\t\tSoftEther 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\r\n UNIX_SVC_HELP\t\t\t%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\r\n UNIX_SVC_STARTED\t\tThe %S service has been started.\\n\r\n UNIX_SVC_STOPPING\t\tStopping the %S service ...\\n\r\nIndex: b/src/softetherd/Makefile.am\n===================================================================\n--- /dev/null\n+++ b/src/softetherd/Makefile.am\n@@ -0,0 +1,28 @@\n+#  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+#\n+#  This file is part of SoftEther.\n+#\n+#  SoftEther is free software: you can redistribute it and/or modify it under\n+#  the terms of the GNU General Public License as published by the Free \n+#  Software Foundation, either version 2 of the License, or (at your option)\n+#  any later version.\n+#\n+#  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+#  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+#  details.\n+#\n+#  You should have received a copy of the GNU General Public License along with\n+#  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+include $(top_srcdir)/autotools/softether.am\n+\n+sbin_PROGRAMS = \\\n+\tsoftetherd\n+\n+softetherd_SOURCES = \\\n+\tsoftetherd.c\n+\n+softetherd_LDADD = \\\n+\t$(top_builddir)/src/libsoftether/libsoftether.la\nIndex: b/src/softetherd/softetherd.c\n===================================================================\n--- /dev/null\n+++ b/src/softetherd/softetherd.c\n@@ -0,0 +1,114 @@\n+//  SoftEther VPN daemon for upstart and systemd.\n+//\n+//  Copyright 2014 Darik Horn <dajhorn@vanadac.com>\n+//\n+//  This file is part of SoftEther.\n+//\n+//  SoftEther is free software: you can redistribute it and/or modify it under\n+//  the terms of the GNU General Public License as published by the Free \n+//  Software Foundation, either version 2 of the License, or (at your option)\n+//  any later version.\n+//\n+//  SoftEther is distributed in the hope that it will be useful, but WITHOUT ANY\n+//  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n+//  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n+//  details.\n+//\n+//  You should have received a copy of the GNU General Public License along with\n+//  SoftEther.  If not, see <http://www.gnu.org/licenses/>.\n+\n+\n+#include <GlobalConst.h>\n+\n+#define\tVPN_EXE\n+\n+#include <stdio.h>\n+#include <stdlib.h>\n+#include <string.h>\n+#include <wchar.h>\n+#include <stdarg.h>\n+#include <time.h>\n+#include <Mayaqua/Mayaqua.h>\n+#include <Cedar/Cedar.h>\n+\n+void DaemonUsage(char *name)\n+{\n+\tUniPrint(_UU(\"UNIX_DAEMON_HELP\"), name, name, name);\n+}\n+\n+\n+void DaemonStartProcess()\n+{\n+\t// This environment variable is exported by upstart.\n+\tchar *upstart_job = getenv(\"UPSTART_JOB\");\n+\n+\tInitCedar();\n+\tStInit();\n+\tStStartServer(false);\n+\n+\t// Notify upstart that softetherd is ready.\n+\tif (upstart_job != NULL)\n+\t{\n+\t\tunsetenv(\"UPSTART_JOB\");\n+\t\traise(SIGSTOP);\n+\t}\n+}\n+\n+\n+void DaemonStopProcess()\n+{\n+\tStStopServer();\n+\tStFree();\n+\tFreeCedar();\n+}\n+\n+\n+int main(int argc, char *argv[])\n+{\n+\t// This environment variable is sourced and exported by the init process from /etc/default/softether.\n+\tchar *softether_mode = getenv(\"SOFTETHER_MODE\");\n+\n+\tInitMayaqua(false, false, argc, argv);\n+\n+\t// Check for an explicit invocation. (eg: \"/usr/sbin/softetherd vpnserver\")\n+\tif (argc >= 2)\n+\t{\n+\t\tif (StrCmpi(argv[1], \"vpnbridge\") == 0\n+\t\t || StrCmpi(argv[1], \"vpnclient\") == 0\n+\t\t || StrCmpi(argv[1], \"vpnserver\") == 0)\n+\t\t{\n+\t\t\tUnixExecService(argv[1], DaemonStartProcess, DaemonStopProcess);\n+\t\t\tFreeMayaqua();\n+\t\t\treturn 0;\n+\t\t}\n+\n+\t\t// Exit status codes 150..199 are reserved for the application by the LSB.\n+\t\tfprintf(stderr, \"Error: Unrecognized parameter: %s\\n\", argv[1]);\n+\t\tfflush(stderr);\n+\t\tFreeMayaqua();\n+\t\treturn 150;\n+\t}\n+\n+\t// Alternatively, use the environment variable.\n+\tif (softether_mode != NULL)\n+\t{\n+\t\tif (StrCmpi(softether_mode, \"vpnbridge\") == 0 \n+\t\t || StrCmpi(softether_mode, \"vpnclient\") == 0\n+\t\t || StrCmpi(softether_mode, \"vpnserver\") == 0)\n+\t\t{\n+\t\t\tUnixExecService(softether_mode, DaemonStartProcess, DaemonStopProcess);\n+\t\t\tFreeMayaqua();\n+\t\t\treturn 0;\n+\t\t}\n+\n+\t\t// Exit status codes 150..199 are reserved for the application by the LSB.\n+\t\tfprintf(stderr, \"Error: Unrecognized environment variable: SOFTETHER_MODE=%s\\n\", softether_mode);\n+\t\tfflush(stderr);\n+\t\tFreeMayaqua();\n+\t\treturn 151;\n+\t}\n+\n+\tDaemonUsage(argv[0]);\n+\tFreeMayaqua();\n+\treturn 3;\n+}\n"
  },
  {
    "path": "package/softether/0005-change-GetExeDir-to-GetStateDir-in-Cedar-and-Mayaqua.patch",
    "content": "From d68db9f2cee975aad5e07b44485615f3d842ab45 Mon Sep 17 00:00:00 2001\nFrom: Darik Horn <dajhorn@vanadac.com>\nDate: Fri, 11 Jul 2014 16:17:18 -0400\nSubject: [PATCH] Change GetExeDir to GetStateDir in Cedar and Mayaqua.\n\nResolve this AppArmor error by ensuring that certificate files files are\nwritten into /var/lib/softether instead of the current working directory:\n\n\tProfile: /usr/sbin/softetherd\n\tOperation: mkdir\n\tName: /usr/sbin/chain_certs\n\tDenied: c\n\tLogfile: /var/log/kern.log\n\n\ttype=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\n\nTaken from Github\nhttps://github.com/dajhorn/SoftEtherVPN/commit/d68db9f2cee975aad5e07b44485615f3d842ab45.\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n src/Cedar/Protocol.c  | 12 ++++++------\n src/Mayaqua/Network.c |  6 +++---\n 2 files changed, 9 insertions(+), 9 deletions(-)\n\nIndex: b/src/Cedar/Protocol.c\n===================================================================\n--- a/src/Cedar/Protocol.c\n+++ b/src/Cedar/Protocol.c\n@@ -161,10 +161,10 @@\n \t\tUINT i;\r\n \t\tDIRLIST *dir;\r\n \t\twchar_t dirname[MAX_SIZE];\r\n-\t\twchar_t exedir[MAX_SIZE];\r\n+\t\twchar_t statedir[MAX_SIZE];\r\n \r\n-\t\tGetExeDirW(exedir, sizeof(exedir));\r\n-\t\tCombinePathW(dirname, sizeof(dirname), exedir, L\"chain_certs\");\r\n+\t\tGetStateDirW(statedir, sizeof(statedir));\r\n+\t\tCombinePathW(dirname, sizeof(dirname), statedir, L\"chain_certs\");\r\n \t\tMakeDirExW(dirname);\r\n \r\n \t\tif (auto_save)\r\n@@ -461,7 +461,7 @@\n void AddAllChainCertsToCertList(LIST *o)\r\n {\r\n \twchar_t dirname[MAX_SIZE];\r\n-\twchar_t exedir[MAX_SIZE];\r\n+\twchar_t statedir[MAX_SIZE];\r\n \tDIRLIST *dir;\r\n \t// Validate arguments\r\n \tif (o == NULL)\r\n@@ -469,9 +469,9 @@\n \t\treturn;\r\n \t}\r\n \r\n-\tGetExeDirW(exedir, sizeof(exedir));\r\n+\tGetStateDirW(statedir, sizeof(statedir));\r\n \r\n-\tCombinePathW(dirname, sizeof(dirname), exedir, L\"chain_certs\");\r\n+\tCombinePathW(dirname, sizeof(dirname), statedir, L\"chain_certs\");\r\n \r\n \tMakeDirExW(dirname);\r\n \r\nIndex: b/src/Mayaqua/Network.c\n===================================================================\n--- a/src/Mayaqua/Network.c\n+++ b/src/Mayaqua/Network.c\n@@ -12588,7 +12588,7 @@\n void AddChainSslCertOnDirectory(struct ssl_ctx_st *ctx)\r\n {\r\n \twchar_t dirname[MAX_SIZE];\r\n-\twchar_t exedir[MAX_SIZE];\r\n+\twchar_t statedir[MAX_SIZE];\r\n \twchar_t txtname[MAX_SIZE];\r\n \tDIRLIST *dir;\r\n \tLIST *o;\r\n@@ -12602,9 +12602,9 @@\n \r\n \to = NewListFast(NULL);\r\n \r\n-\tGetExeDirW(exedir, sizeof(exedir));\r\n+\tGetStateDirW(statedir, sizeof(statedir));\r\n \r\n-\tCombinePathW(dirname, sizeof(dirname), exedir, L\"chain_certs\");\r\n+\tCombinePathW(dirname, sizeof(dirname), statedir, L\"chain_certs\");\r\n \r\n \tMakeDirExW(dirname);\r\n \r\n"
  },
  {
    "path": "package/softether/0006-cross-compile.patch",
    "content": "Host version of hamcorebuilder is needed during cross-compile\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824.org/src/bin/hamcore/Makefile.am SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824/src/bin/hamcore/Makefile.am\n--- SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824.org/src/bin/hamcore/Makefile.am\t2014-09-27 12:56:53.108725793 +0200\n+++ SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824/src/bin/hamcore/Makefile.am\t2014-09-27 12:57:50.280009025 +0200\n@@ -26,8 +26,8 @@\n \n noinst_PROGRAMS = hamcore.se2\n \n-hamcore.se2$(EXEEXT): $(HAMCOREBUILDER)\n-\t$(HAMCOREBUILDER) $(top_srcdir)/src/bin/hamcore $@\n+hamcore.se2$(EXEEXT):\n+\thamcorebuilder $(top_srcdir)/src/bin/hamcore $@\n \n install-exec-local: hamcore.se2$(EXEEXT)\n \t$(INSTALL_DATA) -D hamcore.se2$(EXEEXT) $(DESTDIR)$(localstatedir)/lib/softether/hamcore.se2\ndiff -uNr SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824.org/src/Makefile.am SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824/src/Makefile.am\n--- SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824.org/src/Makefile.am\t2014-09-27 12:56:53.136726809 +0200\n+++ SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824/src/Makefile.am\t2014-09-27 12:58:12.959723109 +0200\n@@ -20,7 +20,7 @@\n SUBDIRS = Mayaqua Cedar\n \n # This is a nodist helper.\n-SUBDIRS += hamcorebuilder\n+# SUBDIRS += hamcorebuilder\n \n # These are shared components.\n SUBDIRS += libsoftether bin/hamcore\n"
  },
  {
    "path": "package/softether/0007-iconv.patch",
    "content": "Fix linking with libiconv\n\nInspired by https://github.com/el1n/OpenWRT-package-softether/blob/4cb1cd9073a76edf34c512e587069626e02e2404/patches/120-fix-iconv-headers-common.patch\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\nIndex: b/src/Mayaqua/Mayaqua.h\n===================================================================\n--- a/src/Mayaqua/Mayaqua.h\n+++ b/src/Mayaqua/Mayaqua.h\n@@ -282,17 +282,7 @@\n #include <ifaddrs.h>\r\n #endif\t// MAYAQUA_SUPPORTS_GETIFADDRS\r\n \r\n-#ifdef\tUNIX_LINUX\r\n-typedef void *iconv_t;\r\n-iconv_t iconv_open (__const char *__tocode, __const char *__fromcode);\r\n-size_t iconv (iconv_t __cd, char **__restrict __inbuf,\r\n-                     size_t *__restrict __inbytesleft,\r\n-                     char **__restrict __outbuf,\r\n-                     size_t *__restrict __outbytesleft);\r\n-int iconv_close (iconv_t __cd);\r\n-#else\t// UNIX_LINUX\r\n #include <iconv.h>\r\n-#endif\t// UNIX_LINUX\r\n \r\n \r\n \r\n"
  },
  {
    "path": "package/softether/0008-librt.patch",
    "content": "Downloaded from\nhttps://github.com/dajhorn/SoftEtherVPN/commit/9a8538a6f2287fe8bebd0a7185de408e31e5a7df\n\nFixes\nhttp://autobuild.buildroot.net/results/48f/48f778a891e0bf6a60ed2e4bec057c338ec25ec9/\nand many others\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n\nFrom 9a8538a6f2287fe8bebd0a7185de408e31e5a7df Mon Sep 17 00:00:00 2001\nFrom: Darik Horn <dajhorn@vanadac.com>\nDate: Thu, 5 Jun 2014 21:02:02 -0400\nSubject: [PATCH] Add an explicit autoconf check for librt.\n\nThe realtime extensions library is not automatically linked on Debian ARM\nplatforms, so do an AC_CHECK_LIB for it in the configuration macro.\n---\n configure.ac | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex 165623a..6f85393 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -60,6 +60,7 @@ CC=\"$PTHREAD_CC\"\n CFLAGS=\"$CFLAGS $PTHREAD_CFLAGS\"\n LIBS=\"$PTHREAD_LIBS $LIBS\"\n \n+AC_CHECK_LIB([rt],[clock_gettime])\n \n AX_CHECK_OPENSSL([\n \tAC_SUBST(OPENSSL_LIBS)\n"
  },
  {
    "path": "package/softether/0009-uclibc-ai-addrconfig.patch",
    "content": "Only enable getifaddrs support when available\n\nOn uClibc, the ifaddrs.h support is optional. While the default\nBuildroot uClibc configuration has it enabled, some external\ntoolchains may not. Therefore this patch detects that and adjusts\nsoftether usage of ifaddrs accordingly.\n\nBased on an initial patch from Bernd Kuhls.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/src/Mayaqua/Mayaqua.h\n===================================================================\n--- a/src/Mayaqua/Mayaqua.h\n+++ b/src/Mayaqua/Mayaqua.h\n@@ -235,9 +235,11 @@\n #ifdef\tOS_UNIX\r\n #ifndef\tUNIX_SOLARIS\r\n #ifndef\tCPU_SH4\r\n+#if !defined(__UCLIBC__) || defined(__UCLIBC_SUPPORT_AI_ADDRCONFIG__)\r\n // Getifaddrs system call is supported on UNIX other than Solaris.\r\n // However, it is not supported also by the Linux on SH4 CPU\r\n #define\tMAYAQUA_SUPPORTS_GETIFADDRS\r\n+#endif  // !UCLIBC || UCLIBC_SUPPORT_AI_ADDRCONFIG\r\n #endif\t// CPU_SH4\r\n #endif\t// UNIX_SOLARIS\r\n #endif\t// OS_UNIX\r\n"
  },
  {
    "path": "package/softether/Config.in",
    "content": "config BR2_PACKAGE_SOFTETHER\n\tbool \"softether\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  The SoftEther Server is a fully integrated implementation of\n\t  the SSTP, L2TP, L2TPv3, OpenVPN, and IPSec virtual private\n\t  networking protocols on Linux and several other\n\t  platforms. It is generally compatible with other\n\t  implementations by Apple, Cisco, Juniper, Microsoft, et al.\n\n\t  Convenient Layer-2 and Layer-3 bridging capabilities can\n\t  connect several branch offices into a single broadcast or\n\t  routing domain, even behind a NAT or without a static IPv4\n\t  address.\n\n\t  In addition to supporting most VPN protocols, the SoftEther\n\t  Client can penetrate hardened firewalls and captured\n\t  gateways through HTTPS, DNS, and ICMP exfiltration.\n\n\t  http://www.softether.org\n\ncomment \"softether needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !(BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS)\n"
  },
  {
    "path": "package/softether/softether.hash",
    "content": "# Locally computed\nsha256 f579fa938f6d5d0622f23b3c163b3de5dc171e30175e44511bf269b3bb9fb1fc softether-4.30-9700-beta.tar.gz\nsha256 5da6241ddb987c4543bf1cbba6b40a3cd3ecb624dbd4a63daf04440911656bde LICENSE\n"
  },
  {
    "path": "package/softether/softether.mk",
    "content": "################################################################################\n#\n# softether\n#\n################################################################################\n\nSOFTETHER_VERSION = 4.30-9700-beta\nSOFTETHER_SITE = $(call github,SoftEtherVPN,SoftEtherVPN_stable,v$(SOFTETHER_VERSION))\nSOFTETHER_LICENSE = Apache-2.0\nSOFTETHER_LICENSE_FILES = LICENSE\nSOFTETHER_DEPENDENCIES = host-pkgconf host-softether libopenssl readline\nSOFTETHER_AUTORECONF = YES\n\nifeq ($(BR2_ENABLE_LOCALE),)\nSOFTETHER_DEPENDENCIES += libiconv\nSOFTETHER_CONF_ENV = LIBS+=\" -liconv\"\nendif\n\nSOFTETHER_CONF_OPTS = --with-zlib=\"$(STAGING_DIR)/usr\"\n\n# host-libiconv does not exist, therefore we need this extra line\nHOST_SOFTETHER_DEPENDENCIES = host-pkgconf host-libopenssl host-readline\n\n# target build creates the file hamcore.se2 which needs the host variant of\n# hamcorebuilder, for details see http://www.vpnusers.com/viewtopic.php?p=5426\ndefine HOST_SOFTETHER_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/src/Mayaqua\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/src/Cedar\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/src/hamcorebuilder\nendef\n\ndefine HOST_SOFTETHER_INSTALL_CMDS\n\t$(INSTALL) -m 0755 $(@D)/src/hamcorebuilder/hamcorebuilder $(HOST_DIR)/bin/hamcorebuilder\nendef\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/softhsm2/Config.in",
    "content": "config BR2_PACKAGE_SOFTHSM2\n\tbool \"softhsm2\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES\n\thelp\n\t  SoftHSM is an implementation of a cryptographic store\n\t  accessible through a PKCS#11 interface. You can use it\n\t  to explore PKCS#11 without having a Hardware Security\n\t  Module.\n\n\t  https://www.opendnssec.org/softhsm\n\ncomment \"softhsm2 needs a toolchain w/ C++, threads, gcc >= 4.8 and dynamic library support\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/softhsm2/softhsm2.hash",
    "content": "# From https://www.opendnssec.org/2020/04/1602/\nsha256  61249473054bcd1811519ef9a989a880a7bdcc36d317c9c25457fc614df475f2  softhsm-2.6.1.tar.gz\n# Locally computed\nsha256  230cab7102816e99f7ce03ef476352fcad09d742fcbc6580d44393db6280b64c  LICENSE\n"
  },
  {
    "path": "package/softhsm2/softhsm2.mk",
    "content": "################################################################################\n#\n# softhsm2\n#\n################################################################################\n\nSOFTHSM2_VERSION = 2.6.1\nSOFTHSM2_SOURCE = softhsm-$(SOFTHSM2_VERSION).tar.gz\nSOFTHSM2_SITE = https://dist.opendnssec.org/source\nSOFTHSM2_LICENSE = BSD-2-Clause\nSOFTHSM2_LICENSE_FILES = LICENSE\nSOFTHSM2_DEPENDENCIES = openssl\nSOFTHSM2_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_P11_KIT),y)\nSOFTHSM2_CONF_OPTS += \\\n\t--enable-p11-kit \\\n\t--with-p11-kit=/usr/share/p11-kit/modules\nSOFTHSM2_DEPENDENCIES += p11-kit\nelse\nSOFTHSM2_CONF_OPTS += --disable-p11-kit\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/solarus/0001-cmake-remove-Werror.patch",
    "content": "From 5f372ba3502369c6501c77650a761300d26f64c0 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Thu, 22 Jun 2017 00:19:56 +0200\nSubject: [PATCH] cmake: remove Werror\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n cmake/AddCompilationFlags.cmake | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/cmake/AddCompilationFlags.cmake b/cmake/AddCompilationFlags.cmake\nindex 2c105db7f..cb5c5719a 100644\n--- a/cmake/AddCompilationFlags.cmake\n+++ b/cmake/AddCompilationFlags.cmake\n@@ -25,7 +25,7 @@ endif()\n set(CMAKE_CXX_FLAGS_RELEASE \"-Wno-error -Wall -Wextra -Wno-unknown-pragmas -Wno-fatal-errors ${CMAKE_CXX_FLAGS_RELEASE} -O3\")\n \n # Be more pedantic in debug mode for developers.\n-set(CMAKE_CXX_FLAGS_DEBUG \"-Werror -Wall -Wextra -Wno-error=deprecated-declarations -pedantic ${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG\")\n+set(CMAKE_CXX_FLAGS_DEBUG \"-Wno-error -Wall -Wextra -Wno-error=deprecated-declarations -pedantic ${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG\")\n if(CMAKE_COMPILER_IS_GNUCXX)\n     set(CMAKE_CXX_FLAGS_DEBUG \"${CMAKE_CXX_FLAGS_DEBUG} -Wsuggest-override\")\n endif()\n-- \n2.14.5\n\n"
  },
  {
    "path": "package/solarus/0002-Add-a-basic-FindOpenGLES2.cmake.patch",
    "content": "From 2bf0e98f17d92fd86ee61be179e3cebe93f75ea7 Mon Sep 17 00:00:00 2001\nFrom: Gleb Mazovetskiy <glex.spb@gmail.com>\nDate: Sun, 3 Jan 2021 12:38:13 +0000\nSubject: [PATCH] Add a basic FindOpenGLES2.cmake\n\nFixes #1324\n---\n cmake/modules/FindOpenGLES2.cmake | 28 ++++++++++++++++++++++++++++\n 1 file changed, 28 insertions(+)\n create mode 100644 cmake/modules/FindOpenGLES2.cmake\n\ndiff --git a/cmake/modules/FindOpenGLES2.cmake b/cmake/modules/FindOpenGLES2.cmake\nnew file mode 100644\nindex 000000000..70fd5e6f0\n--- /dev/null\n+++ b/cmake/modules/FindOpenGLES2.cmake\n@@ -0,0 +1,28 @@\n+# Try to find OpenGLES2. Once done this will define:\n+#     OPENGLES2_FOUND\n+#     OPENGLES2_INCLUDE_DIRS\n+#     OPENGLES2_LIBRARIES\n+#     OPENGLES2_DEFINITIONS\n+\n+find_package(PkgConfig QUIET)\n+\n+pkg_check_modules(PC_OPENGLES2 glesv2)\n+\n+if (PC_OPENGLES2_FOUND)\n+    set(OPENGLES2_DEFINITIONS ${PC_OPENGLES2_CFLAGS_OTHER})\n+endif ()\n+\n+find_path(OPENGLES2_INCLUDE_DIRS NAMES GLES2/gl2.h\n+    HINTS ${PC_OPENGLES2_INCLUDEDIR} ${PC_OPENGLES2_INCLUDE_DIRS}\n+)\n+\n+set(OPENGLES2_NAMES ${OPENGLES2_NAMES} glesv2 GLESv2)\n+find_library(OPENGLES2_LIBRARIES NAMES ${OPENGLES2_NAMES}\n+    HINTS ${PC_OPENGLES2_LIBDIR} ${PC_OPENGLES2_LIBRARY_DIRS}\n+)\n+\n+include(FindPackageHandleStandardArgs)\n+find_package_handle_standard_args(OpenGLES2 REQUIRED_VARS OPENGLES2_INCLUDE_DIRS OPENGLES2_LIBRARIES\n+                                  FOUND_VAR OPENGLES2_FOUND)\n+\n+mark_as_advanced(OPENGLES2_INCLUDE_DIRS OPENGLES2_LIBRARIES)\n-- \n2.27.0\n\n"
  },
  {
    "path": "package/solarus/Config.in",
    "content": "config BR2_PACKAGE_SOLARUS\n\tbool \"solarus\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # openal\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal\n\tdepends on !BR2_STATIC_LIBS # SDL2\n\tdepends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES\n\tselect BR2_PACKAGE_GLM\n\tselect BR2_PACKAGE_LIBMODPLUG\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_LIBPNG # runtime\n\tselect BR2_PACKAGE_LIBVORBIS\n\tselect BR2_PACKAGE_OPENAL\n\tselect BR2_PACKAGE_PHYSFS\n\tselect BR2_PACKAGE_SDL2\n\tselect BR2_PACKAGE_SDL2_IMAGE\n\tselect BR2_PACKAGE_SDL2_TTF\n\thelp\n\t  Solarus is an open-source Zelda-like 2D game engine written\n\t  in C++. It can run games scripted in Lua. This engine is used\n\t  by our Zelda fangames. Solarus is licensed under GPL v3.\n\n\t  http://www.solarus-games.org\n\t  https://github.com/solarus-games/solarus\n\ncomment \"solarus needs OpenGL and a toolchain w/ C++, gcc >= 4.9, NPTL, dynamic library, and luajit or lua 5.1\"\n\tdepends on !BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \\\n\t\t|| !BR2_PACKAGE_HAS_LIBGL\n"
  },
  {
    "path": "package/solarus/solarus.hash",
    "content": "# Locally calculated\nsha256  4b4ac59df8ab63ee2e305cbf48118d6be0cf9665968eb0b06dd1acdf4346516f  solarus-v1.6.5.tar.bz2\n\nsha256  309875d925041d909bc705473d6c4b7905272aea15c1c2389088c26c161bae1f  license.txt\n"
  },
  {
    "path": "package/solarus/solarus.mk",
    "content": "################################################################################\n#\n# solarus\n#\n################################################################################\n\nSOLARUS_VERSION = 1.6.5\nSOLARUS_SITE = \\\n\thttps://gitlab.com/solarus-games/solarus/-/archive/v$(SOLARUS_VERSION)\nSOLARUS_SOURCE = solarus-v$(SOLARUS_VERSION).tar.bz2\n\nSOLARUS_LICENSE = GPL-3.0 (code), CC-BY-SA-4.0 (Solarus logos and icons), \\\n\tCC-BY-SA-3.0 (GUI icons)\nSOLARUS_LICENSE_FILES = license.txt\n\n# Install libsolarus.so\nSOLARUS_INSTALL_STAGING = YES\n\nSOLARUS_DEPENDENCIES = glm libmodplug libogg libvorbis openal physfs \\\n\tsdl2 sdl2_image sdl2_ttf\n\n# Disable launcher GUI (requires Qt5)\nSOLARUS_CONF_OPTS = \\\n\t-DSOLARUS_GUI=OFF \\\n\t-DSOLARUS_TESTS=OFF\n\nifeq ($(BR2_PACKAGE_HAS_LIBGL),y)\nSOLARUS_DEPENDENCIES += libgl\nelse\nSOLARUS_CONF_OPTS += -DSOLARUS_GL_ES=ON\nSOLARUS_DEPENDENCIES += libgles\nendif\n\nifeq ($(BR2_PACKAGE_LUAJIT),y)\nSOLARUS_CONF_OPTS += -DSOLARUS_USE_LUAJIT=ON\nSOLARUS_DEPENDENCIES += luajit\nelse\nSOLARUS_CONF_OPTS += -DSOLARUS_USE_LUAJIT=OFF\nSOLARUS_DEPENDENCIES += lua\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/sound-theme-borealis/Config.in",
    "content": "config BR2_PACKAGE_SOUND_THEME_BOREALIS\n\tbool \"sound-theme-borealis\"\n\thelp\n\t  Borealis sound theme.\n\n\t  http://kde-look.org/content/show.php?content=12584\n"
  },
  {
    "path": "package/sound-theme-borealis/sound-theme-borealis.hash",
    "content": "# Locally calculated\nsha256\tdd80a9c6317de29d42786ba7d95b114b64d06ec6c0c17dd18df853a5c668e727\tBorealis_sound_theme_ogg-0.9a.tar.bz2\n"
  },
  {
    "path": "package/sound-theme-borealis/sound-theme-borealis.mk",
    "content": "################################################################################\n#\n# sound-theme-borealis\n#\n################################################################################\n\nSOUND_THEME_BOREALIS_VERSION = 0.9a\nSOUND_THEME_BOREALIS_SITE = http://ico.bukvic.net/Linux/Borealis_soundtheme\nSOUND_THEME_BOREALIS_SOURCE = \\\n\tBorealis_sound_theme_ogg-$(SOUND_THEME_BOREALIS_VERSION).tar.bz2\n\ndefine SOUND_THEME_BOREALIS_INSTALL_TARGET_CMDS\n\tfor f in $(@D)/*.ogg ; do \\\n\t\t$(INSTALL) -D -m 0644 $$f $(TARGET_DIR)/usr/share/sounds/borealis/stereo/`basename $$f` || exit 1; \\\n\tdone\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/sound-theme-freedesktop/Config.in",
    "content": "config BR2_PACKAGE_SOUND_THEME_FREEDESKTOP\n\tbool \"sound-theme-freedesktop\"\n\thelp\n\t  Default theme for the XDG Sound Theme Specification.\n\n\t  http://freedesktop.org/wiki/Specifications/sound-theme-spec\n"
  },
  {
    "path": "package/sound-theme-freedesktop/sound-theme-freedesktop.hash",
    "content": "# Locally calculated\nsha256\te6595afb02b76099ef6df42c2ac7c4f9680c21c3f26b2a7ca0943d1fdbbd9aef\tsound-theme-freedesktop-0.7.tar.bz2\n"
  },
  {
    "path": "package/sound-theme-freedesktop/sound-theme-freedesktop.mk",
    "content": "################################################################################\n#\n# sound-theme-freedesktop\n#\n################################################################################\n\nSOUND_THEME_FREEDESKTOP_VERSION = 0.7\nSOUND_THEME_FREEDESKTOP_SITE = \\\n\thttp://people.freedesktop.org/~mccann/dist\nSOUND_THEME_FREEDESKTOP_SOURCE = \\\n\tsound-theme-freedesktop-$(SOUND_THEME_FREEDESKTOP_VERSION).tar.bz2\nSOUND_THEME_FREEDESKTOP_DEPENDENCIES = host-intltool\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sox/0001-uclibc.patch",
    "content": "Make SoX support uclibc-based toolchains, from:\nhttp://sourceforge.net/p/sox/bugs/179/\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\nIndex: sox-14.4.1/src/formats.c\n===================================================================\n--- sox-14.4.1.orig/src/formats.c\n+++ sox-14.4.1/src/formats.c\n@@ -409,7 +409,7 @@ static void UNUSED rewind_pipe(FILE * fp\n #if defined _FSTDIO || defined _NEWLIB_VERSION || defined __APPLE__\n   fp->_p -= PIPE_AUTO_DETECT_SIZE;\n   fp->_r += PIPE_AUTO_DETECT_SIZE;\n-#elif defined __GLIBC__\n+#elif defined __GLIBC__ && ! defined __UCLIBC__\n   fp->_IO_read_ptr = fp->_IO_read_base;\n #elif defined _MSC_VER || defined _WIN32 || defined _WIN64 || defined _ISO_STDIO_ISO_H\n   fp->_ptr = fp->_base;\n@@ -417,7 +417,6 @@ static void UNUSED rewind_pipe(FILE * fp\n   /* To fix this #error, either simply remove the #error line and live without\n    * file-type detection with pipes, or add support for your compiler in the\n    * lines above.  Test with cat monkey.wav | ./sox --info - */\n-  #error FIX NEEDED HERE\n   #define NO_REWIND_PIPE\n   (void)fp;\n #endif\n"
  },
  {
    "path": "package/sox/0002-configure.ac-put-back-disable-stack-protector.patch",
    "content": "From 18ace560a15207503805d4df25b90c7a756bcbf6 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 2 Feb 2021 23:53:39 +0100\nSubject: [PATCH] configure.ac: put back --disable-stack-protector\n\nPut back --disable-stack-protector which has been removed by commit\n70c85915eace83142b84e4f65f5db421cf0c09e3. This will allow the user to\ndisable it or to let a higher buildsystem such as buildroot to finely\nconfigure it.\n\nIndeed, without this patch, build can fail as some compilers (such as\nuclibc) could missed the needed library (-lssp or -lssp_nonshared) at\nlinking step:\n\n  CCLD     libsox.la\n/home/fabrice/br-test-pkg/br-arm-full/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/5.5.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -lssp_nonshared\n/home/fabrice/br-test-pkg/br-arm-full/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/5.5.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -lssp\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://sourceforge.net/p/sox/patches/122/]\n---\n configure.ac | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 39306398..a1665467 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -32,7 +32,12 @@ AC_PROG_LN_S\n PKG_PROG_PKG_CONFIG\n PKG_INSTALLDIR\n \n-AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])\n+AC_ARG_ENABLE([stack-protector],\n+    AS_HELP_STRING([--disable-stack-protector], [Disable -fstack-protector-strong]),\n+    [enable_stack_protector=$enableval], [enable_stack_protector=yes])\n+AS_IF([test x\"$enable_stack_protector\" = \"xyes\"],\n+    [AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong])])\n+\n AX_APPEND_COMPILE_FLAGS([-Wall -Wmissing-prototypes -Wstrict-prototypes])\n AX_APPEND_LINK_FLAGS([-Wl,--as-needed])\n \n-- \n2.29.2\n\n"
  },
  {
    "path": "package/sox/0003-configure.ac-fix-static-linking-with-id3tag.patch",
    "content": "From 8df3a56cfb104c84d4701562ae2e3c9dc4686798 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 6 Feb 2021 11:08:45 +0100\nSubject: [PATCH] configure.ac: fix static linking with id3tag\n\nPut back -lz (i.e. ZLIB_LIBS) when searching for id3tag which was\nwrongly removed by commit 6ff0e9322f9891f5a6ac6c9b3bceffbfca16bec3. This\nwill fix the following static build failure:\n\nconfigure:15290: checking for id3_file_open in -lid3tag\nconfigure:15315: /home/buildroot/autobuild/instance-0/output-1/host/bin/arm-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -O2   -static -Wall -Wmissing-prototypes -Wstrict-prototypes  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -static -Wl,--as-needed conftest.c -lid3tag    >&5\nconftest.c:60:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]\n   60 | char id3_file_open ();\n      | ^~~~\nconftest.c:62:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]\n   62 | main ()\n      | ^~~~\n/home/buildroot/autobuild/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /home/buildroot/autobuild/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libid3tag.a(util.o): in function `id3_util_compress':\nutil.c:(.text+0x1ac): undefined reference to `compress2'\n/home/buildroot/autobuild/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /home/buildroot/autobuild/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libid3tag.a(util.o): in function `id3_util_decompress':\nutil.c:(.text+0x240): undefined reference to `uncompress'\n\nFixes:\n - http://autobuild.buildroot.org/results/73efdacf237e3d567fa66f3b3f68e624f5e35bc7\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://sourceforge.net/p/sox/patches/123]\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 39306398..896714f5 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -83,7 +83,7 @@ dnl Various libraries\n SOX_WITH_LIB([magic], [magic.h], [magic], [magic_open])\n SOX_CHECK_LIB([ZLIB], [zlib.h], [z], [uncompress])\n SOX_WITH_LIB([png], [png.h], [png], [png_set_rows], [], [], [], [$ZLIB_LIBS])\n-SOX_WITH_LIB([id3tag], [id3tag.h], [id3tag], [id3_file_open])\n+SOX_WITH_LIB([id3tag], [id3tag.h], [id3tag], [id3_file_open], [], [], [], [$ZLIB_LIBS])\n SOX_WITH_LIB([libgsm], [gsm/gsm.h gsm.h], [gsm], [gsm_create])\n \n dnl Optional formats\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/sox/0004-configure.ac-fix-static-linking-with-magic.patch",
    "content": "From 4630e574e6c0269b94fd910e7c72b8ad1ee62ce7 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 3 Mar 2021 16:48:57 +0100\nSubject: [PATCH] configure.ac: fix static linking with magic\n\nUse SOX_FMT_PKG to retrieve magic dependencies (e.g. bzip2 or zlib)\nindeed -lz (i.e. ZLIB_LIBS) was wrongly removed by commit\n6ff0e9322f9891f5a6ac6c9b3bceffbfca16bec3. This will fix the following\nstatic build failure:\n\nconfigure:11677: checking for magic_open in -lmagic\nconfigure:11702: /srv/storage/autobuild/run/instance-0/output-1/host/bin/arm-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os   -static -Wall -Wmissing-prototypes -Wstrict-prototypes  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -static -Wl,--as-needed conftest.c -lmagic    >&5\nconftest.c:53:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]\n   53 | char magic_open ();\n      | ^~~~\nconftest.c:55:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]\n   55 | main ()\n      | ^~~~\n/srv/storage/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /srv/storage/autobuild/run/instance-0/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libmagic.a(compress.o): in function `uncompresszlib':\ncompress.c:(.text+0x1d0): undefined reference to `inflateInit_'\n/srv/storage/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: compress.c:(.text+0x1e4): undefined reference to `inflate'\n/srv/storage/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: compress.c:(.text+0x1fc): undefined reference to `inflateEnd'\n\nFixes:\n - http://autobuild.buildroot.org/results/d96f27cd96926060046e2e1115777f5bceda3741\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not sent yet (waiting for feedback on third patch)]\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 896714f5..8ae3202c 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -80,7 +80,7 @@ SOX_REPORT([other], [LADSPA effect plugins], [$HAVE_LADSPA])\n \n dnl Various libraries\n \n-SOX_WITH_LIB([magic], [magic.h], [magic], [magic_open])\n+SOX_FMT_PKG([magic], [libmagic])\n SOX_CHECK_LIB([ZLIB], [zlib.h], [z], [uncompress])\n SOX_WITH_LIB([png], [png.h], [png], [png_set_rows], [], [], [], [$ZLIB_LIBS])\n SOX_WITH_LIB([id3tag], [id3tag.h], [id3tag], [id3_file_open], [], [], [], [$ZLIB_LIBS])\n-- \n2.30.1\n\n"
  },
  {
    "path": "package/sox/0005-configure.ac-fix-static-linking-with-sndfile.patch",
    "content": "From 06109c84ab6930265287049c4bf9405e7ebc4986 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Wed, 4 Aug 2021 10:27:16 +0200\nSubject: [PATCH] configure.ac: fix static linking with sndfile\n\nUse SOX_FMT_PKG to retrieve sndfile dependencies (e.g. flac, opus or\nvorbis). This will fix the following static build failure:\n\nconfigure:14720: checking for sf_open_virtual in -lsndfile\nconfigure:14745: /tmp/instance-1/output-1/host/bin/xtensa-buildroot-linux-uclibc-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -mlongcalls -mauto-litpools -Os -g0  -static -Wall -Wmissing-prototypes -Wstrict-prototypes  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -static -Wl,--as-needed conftest.c -lsndfile    >&5\nconftest.c:73:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]\n   73 | char sf_open_virtual ();\n      | ^~~~\nconftest.c:75:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]\n   75 | main ()\n      | ^~~~\n/tmp/instance-1/output-1/host/lib/gcc/xtensa-buildroot-linux-uclibc/10.3.0/../../../../xtensa-buildroot-linux-uclibc/bin/ld: /tmp/instance-1/output-1/host/xtensa-buildroot-linux-uclibc/sysroot/usr/lib/libsndfile.a(libsndfile_la-flac.o): in function `flac_byterate':\nflac.c:(.text+0xfc): undefined reference to `FLAC__StreamDecoderErrorStatusString'\n\nFixes:\n - http://autobuild.buildroot.org/results/4bc58ed68b29642876bb02710d0cd4f31540de86\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not sent yet (waiting for feedback on third patch)]\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 8ae3202c..26510769 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -117,7 +117,7 @@ SOX_FMT_REQ([mp3], [MAD LAME TWOLAME])\n SOX_FMT_PKG([oggvorbis], [ogg vorbis vorbisenc vorbisfile])\n SOX_FMT_PKG([opus], [opusfile])\n \n-SOX_DL_LIB([libsndfile], [sndfile.h], [sndfile], [sf_open_virtual])\n+SOX_FMT_PKG([libsndfile], [sndfile])\n SOX_FMT_REQ([sndfile], [LIBSNDFILE])\n \n SOX_FMT_LIB([wavpack], [wavpack/wavpack.h], [wavpack], [WavpackGetSampleRate])\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/sox/Config.in",
    "content": "config BR2_PACKAGE_SOX\n\tbool \"sox\"\n\thelp\n\t  SoX is a cross-platform (Windows, Linux, MacOS X, etc.)\n\t  command line utility that can convert various formats of\n\t  computer audio files into other formats.\n\n\t  It can also apply various effects to these sound files, and,\n\t  as an added bonus, SoX can play and record audio files on\n\t  most platforms.\n\n\t  http://sox.sourceforge.net/\n"
  },
  {
    "path": "package/sox/sox.hash",
    "content": "# Locally computed\nsha256  3d06ba8fc39ac92f16da73593be48afe0a704fe4dc4f6eca2e5137ef77cd5115  sox-7524160b29a476f7e87bc14fddf12d349f9a3c5e-br1.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  LICENSE.GPL\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  LICENSE.LGPL\n"
  },
  {
    "path": "package/sox/sox.mk",
    "content": "################################################################################\n#\n# sox\n#\n################################################################################\n\nSOX_VERSION = 7524160b29a476f7e87bc14fddf12d349f9a3c5e\nSOX_SITE = git://git.code.sf.net/p/sox/code\nSOX_SITE_METHOD = git\nSOX_DEPENDENCIES = host-autoconf-archive host-pkgconf\nSOX_LICENSE = GPL-2.0+ (sox binary), LGPL-2.1+ (libraries)\nSOX_LICENSE_FILES = LICENSE.GPL LICENSE.LGPL\nSOX_CPE_ID_VENDOR = sound_exchange_project\nSOX_CPE_ID_PRODUCT = sound_exchange\n# From git and we're patching configure.ac\nSOX_AUTORECONF = YES\nSOX_AUTORECONF_OPTS = --include=$(HOST_DIR)/share/autoconf-archive\nSOX_INSTALL_STAGING = YES\n\nSOX_IGNORE_CVES += CVE-2017-11332 CVE-2017-11358 CVE-2017-11359 \\\n\tCVE-2017-15370 CVE-2017-15371 CVE-2017-15372 CVE-2017-15642 \\\n\tCVE-2017-18189 CVE-2019-8354 CVE-2019-8355 CVE-2019-8356 \\\n\tCVE-2019-8357 CVE-2019-13590\n\nSOX_CONF_OPTS = \\\n\t--with-distro=\"Buildroot\" \\\n\t--disable-stack-protector\n\nifeq ($(BR2_PACKAGE_ALSA_LIB_PCM),y)\nSOX_DEPENDENCIES += alsa-lib\nSOX_CONF_OPTS += --enable-alsa\nelse\nSOX_CONF_OPTS += --disable-alsa\nendif\n\nifeq ($(BR2_PACKAGE_FILE),y)\nSOX_DEPENDENCIES += file\nSOX_CONF_OPTS += --enable-magic\nelse\nSOX_CONF_OPTS += --disable-magic\nendif\n\nifeq ($(BR2_PACKAGE_FLAC),y)\nSOX_DEPENDENCIES += flac\nSOX_CONF_OPTS += --enable-flac\nelse\nSOX_CONF_OPTS += --disable-flac\nendif\n\nifeq ($(BR2_PACKAGE_LAME),y)\nSOX_DEPENDENCIES += lame\nSOX_CONF_OPTS += --with-lame\nelse\nSOX_CONF_OPTS += --without-lame\nendif\n\nifeq ($(BR2_PACKAGE_LIBAO),y)\nSOX_DEPENDENCIES += libao\nSOX_CONF_OPTS += --enable-ao\nelse\nSOX_CONF_OPTS += --disable-ao\nendif\n\nifeq ($(BR2_PACKAGE_LIBGSM),y)\nSOX_DEPENDENCIES += libgsm\nSOX_CONF_OPTS += --enable-gsm\nelse\nSOX_CONF_OPTS += --disable-gsm\nendif\n\nifeq ($(BR2_PACKAGE_LIBID3TAG),y)\nSOX_DEPENDENCIES += libid3tag\nSOX_CONF_OPTS += --with-id3tag\nelse\nSOX_CONF_OPTS += --without-id3tag\nendif\n\nifeq ($(BR2_PACKAGE_LIBMAD),y)\nSOX_DEPENDENCIES += libmad\nSOX_CONF_OPTS += --with-mad\nelse\nSOX_CONF_OPTS += --without-mad\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nSOX_DEPENDENCIES += libpng\nSOX_CONF_OPTS += --with-png\nelse\nSOX_CONF_OPTS += --without-png\nendif\n\nifeq ($(BR2_PACKAGE_LIBSNDFILE),y)\nSOX_DEPENDENCIES += libsndfile\nSOX_CONF_OPTS += --enable-sndfile\nelse\nSOX_CONF_OPTS += --disable-sndfile\nendif\n\nifeq ($(BR2_PACKAGE_LIBVORBIS),y)\nSOX_DEPENDENCIES += libvorbis\nSOX_CONF_OPTS += --enable-oggvorbis\nelse\nSOX_CONF_OPTS += --disable-oggvorbis\nendif\n\nifeq ($(BR2_PACKAGE_OPENCORE_AMR),y)\nSOX_DEPENDENCIES += opencore-amr\nSOX_CONF_OPTS += --enable-amrwb --enable-amrnb\nelse\nSOX_CONF_OPTS += --disable-amrwb --disable-amrnb\nendif\n\nifeq ($(BR2_PACKAGE_OPUSFILE),y)\nSOX_DEPENDENCIES += opusfile\nSOX_CONF_OPTS += --enable-opus\nelse\nSOX_CONF_OPTS += --disable-opus\nendif\n\nifeq ($(BR2_PACKAGE_PULSEAUDIO),y)\nSOX_DEPENDENCIES += pulseaudio\nSOX_CONF_OPTS += --enable-pulseaudio\nelse\nSOX_CONF_OPTS += --disable-pulseaudio\nendif\n\nifeq ($(BR2_PACKAGE_TWOLAME),y)\nSOX_DEPENDENCIES += twolame\nSOX_CONF_OPTS += --with-twolame\nelse\nSOX_CONF_OPTS += --without-twolame\nendif\n\nifeq ($(BR2_PACKAGE_WAVPACK),y)\nSOX_DEPENDENCIES += wavpack\nSOX_CONF_OPTS += --enable-wavpack\nelse\nSOX_CONF_OPTS += --disable-wavpack\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sp-oops-extract/0001-Make-the-Makefile-more-cross-compiler-friendly.patch",
    "content": "Fetch from: https://github.com/Schischu/ptxdist_sh/tree/master/patches/sp-oops-extract-0.0.7\n\nFrom: Bernhard Walle <walle@corscience.de>\nDate: Wed, 21 Mar 2012 15:55:06 +0100\nSubject: [PATCH] Make the Makefile more cross-compiler friendly\n\nSigned-off-by: Bernhard Walle <walle@corscience.de>\n---\n src/Makefile |    2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/Makefile b/src/Makefile\nindex cf5b550..e05eb1f 100644\n--- a/src/Makefile\n+++ b/src/Makefile\n@@ -9,4 +9,4 @@ distclean: clean\n \t$(RM) $(TARGETS)\n \t\t\n sp-oops-extract: oopslog.c\n-\tgcc -Wall -s -o $@ $^\n+\t$(CC) $(LDFLAGS) $(CPPFLAGS) $(CFLAGS) -Wall -o $@ $^\n\n"
  },
  {
    "path": "package/sp-oops-extract/0002-stdint-cleanup.patch",
    "content": "consolidate use of stdint types\n\nChange u_int*_t to uint*_t for compatibility with a larger number of C\nlibraries.\n\nSigned-off-by: Doug Kehn <rdkehn@yahoo.com>\n\nIndex: sp-oops-extract-0.0.7-1/src/oopslog.c\n===================================================================\n--- sp-oops-extract-0.0.7-1.orig/src/oopslog.c\n+++ sp-oops-extract-0.0.7-1/src/oopslog.c\n@@ -64,8 +64,8 @@ static int try_to_check_for_bad_blocks(v\n \r\n int main(const int argc, const char *argv[])\r\n {\r\n-\tu_int32_t *count, maxcount = 0xffffffff;\r\n-\tu_int32_t *magic_ptr, magic_value = 0x5d005d00;\r\n+\tuint32_t *count, maxcount = 0xffffffff;\r\n+\tuint32_t *magic_ptr, magic_value = 0x5d005d00;\r\n \t\r\n \tunsigned char *charbuf;\r\n \tunsigned long size;\r\n@@ -137,8 +137,8 @@ int main(const int argc, const char *arg\n \t\terrx(-1, \"%s is something weird\", device);\r\n \r\n \tcharbuf = buf;\t\r\n-\tcount = (u_int32_t *) buf;\r\n-\tmagic_ptr = (u_int32_t *) (buf + sizeof(u_int32_t));\r\n+\tcount = (uint32_t *) buf;\r\n+\tmagic_ptr = (uint32_t *) (buf + sizeof(uint32_t));\r\n \r\n \tfor (i = 0; i < (size / OOPS_PAGE_SIZE); i++) {\r\n \t\tpread(fd, buf, OOPS_PAGE_SIZE, i * OOPS_PAGE_SIZE);\r\n"
  },
  {
    "path": "package/sp-oops-extract/Config.in",
    "content": "config BR2_PACKAGE_SP_OOPS_EXTRACT\n\tbool \"sp-oops-extract\"\n\thelp\n\t  A tool for extracting OOPS/panic logs from MTD.\n\n\t  http://maemo.org/packages/view/sp-oops-extract/\n"
  },
  {
    "path": "package/sp-oops-extract/sp-oops-extract.hash",
    "content": "# Locally computed:\nsha256  85601a569af1f4584db75fad21d3a70e377ce12d1bccad7dbe1112abd3b43d93  sp-oops-extract_0.0.7-1.tar.gz\nsha256  c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42  COPYING\n"
  },
  {
    "path": "package/sp-oops-extract/sp-oops-extract.mk",
    "content": "################################################################################\n#\n# sp-oops-extract\n#\n################################################################################\n\nSP_OOPS_EXTRACT_VERSION = 0.0.7-1\nSP_OOPS_EXTRACT_SITE = http://repository.maemo.org/pool/maemo5.0/free/s/sp-oops-extract\nSP_OOPS_EXTRACT_SOURCE = sp-oops-extract_$(SP_OOPS_EXTRACT_VERSION).tar.gz\nSP_OOPS_EXTRACT_LICENSE = GPL-2.0\nSP_OOPS_EXTRACT_LICENSE_FILES = COPYING\n\ndefine SP_OOPS_EXTRACT_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine SP_OOPS_EXTRACT_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install \\\n\t\tDESTDIR=$(TARGET_DIR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/spandsp/0001-configure.ac-fix-AVX-SSE-and-MMX-options.patch",
    "content": "From e7330bfe63efd0062fa51d50a4aaa0f1abd5ff75 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 22 Nov 2020 17:02:43 +0100\nSubject: [PATCH] configure.ac: fix AVX, SSE and MMX options\n\nAVX, SSE and MMX options are broken since\nhttps://github.com/freeswitch/spandsp/commit/87a900c70df73e128a5926587047f529105f5f64\n\nFor example, when the user enables SSE, it will also enable MMX and the\nuser can't disable MMX\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/freeswitch/spandsp/pull/20]\n---\n configure.ac | 8 --------\n 1 file changed, 8 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 83fb3fd..ac2592e 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -486,35 +486,27 @@ armv7[bl] | armv7-*)\n x86_64-* | i386-* | i686-*)\n     if test \"$enable_avx2\" = \"yes\" ; then\n         AC_DEFINE([SPANDSP_USE_AVX2], [1], [Use the AVX2 instruction set (i386 and x86_64 only).])\n-        enable_avx=\"yes\"\n     fi\n     if test \"$enable_avx\" = \"yes\" ; then\n         AC_DEFINE([SPANDSP_USE_AVX], [1], [Use the AVX instruction set (i386 and x86_64 only).])\n-        enable_sse4_2=\"yes\"\n     fi\n     if test \"$enable_sse4_2\" = \"yes\" ; then\n         AC_DEFINE([SPANDSP_USE_SSE4_2], [1], [Use the SSE4.2 instruction set (i386 and x86_64 only).])\n-        enable_sse4_1=\"yes\"\n     fi\n     if test \"$enable_sse4_1\" = \"yes\" ; then\n         AC_DEFINE([SPANDSP_USE_SSE4_1], [1], [Use the SSE4.1 instruction set (i386 and x86_64 only).])\n-        enable_ssse3=\"yes\"\n     fi\n     if test \"$enable_ssse3\" = \"yes\" ; then\n         AC_DEFINE([SPANDSP_USE_SSSE3], [1], [Use the SSSE3 instruction set (i386 and x86_64 only).])\n-        enable_sse3=\"yes\"\n     fi\n     if test \"$enable_sse3\" = \"yes\" ; then\n         AC_DEFINE([SPANDSP_USE_SSE3], [1], [Use the SSE3 instruction set (i386 and x86_64 only).])\n-        enable_sse2=\"yes\"\n     fi\n     if test \"$enable_sse2\" = \"yes\" ; then\n         AC_DEFINE([SPANDSP_USE_SSE2], [1], [Use the SSE2 instruction set (i386 and x86_64 only).])\n-        enable_sse=\"yes\"\n     fi\n     if test \"$enable_sse\" = \"yes\" ; then\n         AC_DEFINE([SPANDSP_USE_SSE], [1], [Use the SSE instruction set (i386 and x86_64 only).])\n-        enable_mmx=\"yes\"\n     fi\n     if test \"$enable_mmx\" = \"yes\" ; then\n         AC_DEFINE([SPANDSP_USE_MMX], [1], [Use the MMX instruction set (i386 and x86_64 only).])\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/spandsp/Config.in",
    "content": "config BR2_PACKAGE_SPANDSP\n\tbool \"spandsp\"\n\tselect BR2_PACKAGE_TIFF\n\tselect BR2_PACKAGE_TIFF_JPEG\n\thelp\n\t  Spandsp is a library of many DSP functions for telephony.\n\t  These range from simple modules, such as DTMF detection, to\n\t  a complete software FAX machine.\n\n\t  https://github.com/freeswitch/spandsp\n"
  },
  {
    "path": "package/spandsp/spandsp.hash",
    "content": "# sha256 locally computed\nsha256  a11beed46b488a4cac3b0c42042ad28448bcee4c0027a82d5449180bbb178836  spandsp-3.0.0-6ec23e5a7e.tar.gz\nsha256  366576cb0b869cd9e95a4882878607314650488ac635e5df0692180382e9666a  COPYING\n"
  },
  {
    "path": "package/spandsp/spandsp.mk",
    "content": "################################################################################\n#\n# spandsp\n#\n################################################################################\n\nSPANDSP_VERSION = 3.0.0-6ec23e5a7e\nSPANDSP_SITE = https://files.freeswitch.org/downloads/libs\nSPANDSP_LICENSE = LGPL-2.1 (library), GPL-2.0 (test suite)\nSPANDSP_LICENSE_FILES = COPYING\n# We're patching configure.ac\nSPANDSP_AUTORECONF = YES\n\nSPANDSP_DEPENDENCIES = tiff host-pkgconf\nSPANDSP_INSTALL_STAGING = YES\nSPANDSP_CONF_ENV = LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs libtiff-4`\"\n\n# MMX on i686 raises a build failure\nSPANDSP_CONF_OPTS = \\\n\t--disable-builtin-tiff \\\n\t$(if $(BR2_x86_64),--enable-mmx,--disable-mmx) \\\n\t$(if $(BR2_X86_CPU_HAS_SSE),--enable-sse,--disable-sse) \\\n\t$(if $(BR2_X86_CPU_HAS_SSE2),--enable-sse2,--disable-sse2) \\\n\t$(if $(BR2_X86_CPU_HAS_SSE3),--enable-sse3,--disable-sse3) \\\n\t$(if $(BR2_X86_CPU_HAS_SSSE3),--enable-ssse3,--disable-ssse3) \\\n\t$(if $(BR2_X86_CPU_HAS_SSE4),--enable-sse4-1,--disable-sse4-1) \\\n\t$(if $(BR2_X86_CPU_HAS_SSE42),--enable-sse4-2,--disable-sse4-2)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/spawn-fcgi/Config.in",
    "content": "config BR2_PACKAGE_SPAWN_FCGI\n\tbool \"spawn-fcgi\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  FastCGI process spawner.\n\t  Project split from lighttpd.\n\n\t  http://redmine.lighttpd.net/projects/spawn-fcgi\n"
  },
  {
    "path": "package/spawn-fcgi/spawn-fcgi.hash",
    "content": "# From http://redmine.lighttpd.net/news/9\nsha256  a3cfc7c9581b6ddc31084b379c9160323fa345d357ace6cd2d3d3af3593e2873  spawn-fcgi-1.6.4.tar.bz2\n# Locally computed\nsha256  5c98cad2fbaf5c5e2562bcbab401a7c557c1bb1bac9914ecc63730925052fb13  COPYING\n"
  },
  {
    "path": "package/spawn-fcgi/spawn-fcgi.mk",
    "content": "################################################################################\n#\n# spawn-fcgi\n#\n################################################################################\n\nSPAWN_FCGI_VERSION = 1.6.4\nSPAWN_FCGI_SITE = http://www.lighttpd.net/download\nSPAWN_FCGI_SOURCE = spawn-fcgi-$(SPAWN_FCGI_VERSION).tar.bz2\nSPAWN_FCGI_LICENSE = BSD-3-Clause\nSPAWN_FCGI_LICENSE_FILES = COPYING\nSPAWN_FCGI_CPE_ID_VENDOR = lighttpd\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/spdlog/Config.in",
    "content": "config BR2_PACKAGE_SPDLOG\n\tbool \"spdlog\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR # fmt\n\tselect BR2_PACKAGE_FMT\n\thelp\n\t  Very fast, header-only/compiled, C++ logging library.\n\n\t  https://github.com/gabime/spdlog\n\ncomment \"spdlog needs a toolchain w/ C++, threads, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/spdlog/spdlog.hash",
    "content": "# Locally calculated\nsha256  6fff9215f5cb81760be4cc16d033526d1080427d236e86d70bb02994f85e3d38  spdlog-1.9.2.tar.gz\nsha256  a7241a379cb98d37788f82c2fc2e484c3ae85dae881fd3406f0637644850926f  LICENSE\n"
  },
  {
    "path": "package/spdlog/spdlog.mk",
    "content": "################################################################################\n#\n# spdlog\n#\n################################################################################\n\nSPDLOG_VERSION = 1.9.2\nSPDLOG_SITE = $(call github,gabime,spdlog,v$(SPDLOG_VERSION))\nSPDLOG_LICENSE = MIT\nSPDLOG_LICENSE_FILES = LICENSE\nSPDLOG_INSTALL_STAGING = YES\nSPDLOG_DEPENDENCIES = fmt\nSPDLOG_CONF_OPTS += \\\n\t-DSPDLOG_BUILD_TESTS=OFF \\\n\t-DSPDLOG_BUILD_EXAMPLE=OFF \\\n\t-DSPDLOG_BUILD_BENCH=OFF \\\n\t-DSPDLOG_FMT_EXTERNAL=ON\n\nifeq ($(BR2_STATIC_LIBS),y)\nSPDLOG_CONF_OPTS += -DSPDLOG_BUILD_SHARED=OFF\nelse\nSPDLOG_CONF_OPTS += -DSPDLOG_BUILD_SHARED=ON\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/speex/0001-thumb2-support.patch",
    "content": "Make speex Thumb2 compatible\n\nPatch written by Michael Hope from Linaro, available at\nhttp://lists.xiph.org/pipermail/speex-dev/2010-November/008041.html.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n[Bernd: rebased for 1.2.0]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff --git a/libspeex/filters_arm4.h b/libspeex/filters_arm4.h\nindex 7a74042..6ec1f75 100644\n--- a/libspeex/filters_arm4.h\n+++ b/libspeex/filters_arm4.h\n@@ -47,8 +47,10 @@ int normalize16(const spx_sig_t *x, spx_word16_t *y, spx_sig_t max_scale, int le\n \n          \"\\tldr %4, [%0], #4 \\n\"\n          \"\\tcmp %4, %1 \\n\"\n+         \"\\tit gt \\n\"\n          \"\\tmovgt %1, %4 \\n\"\n          \"\\tcmp %4, %3 \\n\"\n+         \"\\tit lt \\n\"\n          \"\\tmovlt %3, %4 \\n\"\n \n          \"\\tsubs %2, %2, #1 \\n\"\n@@ -56,6 +58,7 @@ int normalize16(const spx_sig_t *x, spx_word16_t *y, spx_sig_t max_scale, int le\n \n          \"\\trsb %3, %3, #0 \\n\"\n          \"\\tcmp %1, %3 \\n\"\n+         \"\\tit lt \\n\"\n          \"\\tmovlt %1, %3 \\n\"\n    : \"=r\" (dead1), \"=r\" (max_val), \"=r\" (dead3), \"=r\" (dead4),\n    \"=r\" (dead5), \"=r\" (dead6)\ndiff --git a/libspeex/fixed_arm4.h b/libspeex/fixed_arm4.h\nindex b6981ca..b6218ca 100644\n--- a/libspeex/fixed_arm4.h\n+++ b/libspeex/fixed_arm4.h\n@@ -69,72 +69,90 @@ static inline short DIV32_16(int a, int b)\n    __asm__ __volatile__ (\n          \"\\teor %5, %0, %1\\n\"\n          \"\\tmovs %4, %0\\n\"\n+         \"\\tit mi \\n\"\n          \"\\trsbmi %0, %0, #0 \\n\"\n          \"\\tmovs %4, %1\\n\"\n+         \"\\tit mi \\n\"\n          \"\\trsbmi %1, %1, #0 \\n\"\n          \"\\tmov %4, #1\\n\"\n \n          \"\\tsubs %3, %0, %1, asl #14 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #14 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #13 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #13 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #12 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #12 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #11 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #11 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #10 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #10 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #9 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #9 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #8 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #8 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #7 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #7 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #6 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #6 \\n\"\n          \n          \"\\tsubs %3, %0, %1, asl #5 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #5 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #4 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #4 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #3 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #2 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #2 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #1 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4, asl #1 \\n\"\n \n          \"\\tsubs %3, %0, %1 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \"\\torrpl %2, %2, %4 \\n\"\n \n          \"\\tmovs %5, %5, lsr #31 \\n\"\n+         \"\\tit ne \\n\"\n          \"\\trsbne %2, %2, #0 \\n\"\n    : \"=r\" (dead1), \"=r\" (dead2), \"=r\" (res),\n    \"=r\" (dead3), \"=r\" (dead4), \"=r\" (dead5)\ndiff --git a/libspeex/fixed_arm5e.h b/libspeex/fixed_arm5e.h\nindex 9b4861c..bdadd02 100644\n--- a/libspeex/fixed_arm5e.h\n+++ b/libspeex/fixed_arm5e.h\n@@ -97,72 +97,90 @@ static inline short DIV32_16(int a, int b)\n    __asm__ __volatile__ (\n          \"\\teor %5, %0, %1\\n\"\n          \"\\tmovs %4, %0\\n\"\n+         \"\\tit mi \\n\"\n          \"\\trsbmi %0, %0, #0 \\n\"\n          \"\\tmovs %4, %1\\n\"\n+         \"\\tit mi \\n\"\n          \"\\trsbmi %1, %1, #0 \\n\"\n          \"\\tmov %4, #1\\n\"\n \n          \"\\tsubs %3, %0, %1, asl #14 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #14 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #13 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #13 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #12 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #12 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #11 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #11 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #10 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #10 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #9 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #9 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #8 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #8 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #7 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #7 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #6 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #6 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #5 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #5 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #4 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #4 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #3 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #3 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #2 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #2 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1, asl #1 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4, asl #1 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n \n          \"\\tsubs %3, %0, %1 \\n\"\n+         \"\\titt pl \\n\"\n          \"\\torrpl %2, %2, %4 \\n\"\n          \"\\tmovpl %0, %3 \\n\"\n          \n          \"\\tmovs %5, %5, lsr #31 \\n\"\n+         \"\\tit ne \\n\"\n          \"\\trsbne %2, %2, #0 \\n\"\n    : \"=r\" (dead1), \"=r\" (dead2), \"=r\" (res),\n    \"=r\" (dead3), \"=r\" (dead4), \"=r\" (dead5)\n"
  },
  {
    "path": "package/speex/Config.in",
    "content": "config BR2_PACKAGE_SPEEX\n\tbool \"speex\"\n\tselect BR2_PACKAGE_LIBOGG\n\thelp\n\t  Speex is an Open Source/Free Software patent-free\n\t  audio compression format designed for speech.\n\t  It can be used for Voice over IP\n\n\t  http://www.speex.org/\n\nif BR2_PACKAGE_SPEEX\n\nconfig BR2_PACKAGE_SPEEX_ARM4\n\tbool\n\tdefault y\n\tdepends on BR2_ARM_CPU_ARMV4\n\nconfig BR2_PACKAGE_SPEEX_ARM5E\n\tbool\n\tdefault y\n\tdepends on BR2_arm && !BR2_PACKAGE_SPEEX_ARM4\n\nendif\n"
  },
  {
    "path": "package/speex/speex.hash",
    "content": "# From https://downloads.xiph.org/releases/speex/SHA256SUMS.txt\nsha256 eaae8af0ac742dc7d542c9439ac72f1f385ce838392dc849cae4536af9210094  speex-1.2.0.tar.gz\n# From https://downloads.xiph.org/releases/speex/MD5SUMS\nmd5 8ab7bb2589110dfaf0ed7fa7757dc49c  speex-1.2.0.tar.gz\n# Locally computed\nsha256 671bb5d8fd3c6b05a2e831d90f978ac27965c92bd8ea6d16b3df76e3440c0e9f  COPYING\n"
  },
  {
    "path": "package/speex/speex.mk",
    "content": "################################################################################\n#\n# speex\n#\n################################################################################\n\nSPEEX_VERSION = 1.2.0\nSPEEX_SITE = https://downloads.xiph.org/releases/speex\nSPEEX_LICENSE = BSD-3-Clause\nSPEEX_LICENSE_FILES = COPYING\nSPEEX_CPE_ID_VENDOR = xiph\nSPEEX_INSTALL_STAGING = YES\nSPEEX_DEPENDENCIES = host-pkgconf libogg\nSPEEX_CONF_OPTS = \\\n\t--enable-fixed-point\n\nifeq ($(BR2_PACKAGE_SPEEXDSP),y)\nSPEEX_DEPENDENCIES += speexdsp\nendif\n\nifeq ($(BR2_PACKAGE_SPEEX_ARM4),y)\nSPEEX_CONF_OPTS += --enable-arm4-asm\nendif\n\nifeq ($(BR2_PACKAGE_SPEEX_ARM5E),y)\nSPEEX_CONF_OPTS += --enable-arm5e-asm\nendif\n\ndefine SPEEX_LIBTOOL_FIXUP\n\t$(SED) 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=\"\"|g' $(@D)/libtool\n\t$(SED) 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' $(@D)/libtool\nendef\n\nSPEEX_POST_CONFIGURE_HOOKS += SPEEX_LIBTOOL_FIXUP\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/speexdsp/Config.in",
    "content": "config BR2_PACKAGE_SPEEXDSP\n\tbool \"speexdsp\"\n\thelp\n\t  DSP library derived from speex.\n\n\t  https://www.speex.org\n"
  },
  {
    "path": "package/speexdsp/speexdsp.hash",
    "content": "# Locally computed\nsha256  c92c7e428cb5ca11b4e6f13118ff288332f330b6fefc93cb39bf7b43b13cb1f7  speexdsp-SpeexDSP-1.2.0-br1.tar.gz\nsha256  671bb5d8fd3c6b05a2e831d90f978ac27965c92bd8ea6d16b3df76e3440c0e9f  COPYING\n"
  },
  {
    "path": "package/speexdsp/speexdsp.mk",
    "content": "################################################################################\n#\n# speexdsp\n#\n################################################################################\n\nSPEEXDSP_VERSION = SpeexDSP-1.2.0\nSPEEXDSP_SITE = https://gitlab.xiph.org/xiph/speexdsp.git\nSPEEXDSP_SITE_METHOD = git\nSPEEXDSP_LICENSE = BSD-3-Clause\nSPEEXDSP_LICENSE_FILES = COPYING\nSPEEXDSP_INSTALL_STAGING = YES\nSPEEXDSP_DEPENDENCIES = host-pkgconf\nSPEEXDSP_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sphinxbase/Config.in",
    "content": "config BR2_PACKAGE_SPHINXBASE\n\tbool \"sphinxbase\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  CMUSphinx toolkit is a leading speech recognition toolkit\n\t  with various tools used to build speech applications. CMU\n\t  Sphinx toolkit has a number of packages for different tasks\n\t  and applications.\n\n\t  http://cmusphinx.sourceforge.net/\n\ncomment \"sphinxbase needs a toolchain with threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/sphinxbase/sphinxbase.hash",
    "content": "# Locally computed\nsha256  06971dbe272d2f73bde0ef7b3538c0c8f8ea885cb171fd6b17a5975bced66e64  sphinxbase-5prealpha.tar.gz\nsha256  26f12e0152a5d58c69904e439761a1b2fbb9267b5f04674dbf93667e3e6dd043  src/libsphinxbase/util/bio.c\n"
  },
  {
    "path": "package/sphinxbase/sphinxbase.mk",
    "content": "################################################################################\n#\n# sphinxbase\n#\n################################################################################\n\nSPHINXBASE_VERSION = 5prealpha\nSPHINXBASE_SITE = http://downloads.sourceforge.net/project/cmusphinx/sphinxbase/5prealpha\nSPHINXBASE_LICENSE = BSD-2-Clause\n# Note http://sourceforge.net/p/cmusphinx/bugs/441/ \"LICENSE file missing in\"\n# 5prealpha tarballs\". The license is contained in the copyright notice at the\n# top of each source file. For example:\nSPHINXBASE_LICENSE_FILES = src/libsphinxbase/util/bio.c\n\nSPHINXBASE_DEPENDENCIES = host-bison\n\nSPHINXBASE_CONF_OPTS = --without-python --without-lapack\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/spi-tools/Config.in",
    "content": "config BR2_PACKAGE_SPI_TOOLS\n\tbool \"spi-tools\"\n\thelp\n\t  This package contains some simple command line tools to help\n\t  using Linux spidev devices.\n\n\t  https://github.com/cpb-/spi-tools\n"
  },
  {
    "path": "package/spi-tools/spi-tools.hash",
    "content": "# locally computed hash\nsha256  5eb24670461dcf2c58471114dc69b5204dab1c0cc5053878f6de79503bd8cc9f  spi-tools-1.0.0.tar.gz\nsha256  a01259a1b522cf0de95824f9860613b453153eebac468e96196d5d7dba84786c  LICENSE\n"
  },
  {
    "path": "package/spi-tools/spi-tools.mk",
    "content": "################################################################################\n#\n# spi-tools\n#\n################################################################################\n\nSPI_TOOLS_VERSION = 1.0.0\nSPI_TOOLS_SITE = $(call github,cpb-,spi-tools,$(SPI_TOOLS_VERSION))\n# autoreconf must be run as specified in package documentation\nSPI_TOOLS_AUTORECONF = YES\nSPI_TOOLS_LICENSE = GPL-2.0\nSPI_TOOLS_LICENSE_FILES = LICENSE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/spice/Config.in",
    "content": "comment \"spice server needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_SPICE\n\tbool \"spice server\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_PIXMAN\n\tselect BR2_PACKAGE_SPICE_PROTOCOL\n\thelp\n\t  The Spice project aims to provide a complete open source\n\t  solution for interaction with virtualized desktop devices.\n\t  The Spice project deals with both the virtualized devices\n\t  and the front-end. Interaction between front-end and\n\t  back-end is done using VD-Interfaces.\n\n\t  This package implements the server-part of Spice.\n\n\t  http://www.spice-space.org/\n"
  },
  {
    "path": "package/spice/spice.hash",
    "content": "# Locally calculated\nsha256  b320cf8f4bd2852750acb703c15b72856027e5a8554f8217dfbb3cc09deba0f5  spice-0.15.0.tar.bz2\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/spice/spice.mk",
    "content": "################################################################################\n#\n# spice\n#\n################################################################################\n\nSPICE_VERSION = 0.15.0\nSPICE_SOURCE = spice-$(SPICE_VERSION).tar.bz2\nSPICE_SITE = http://www.spice-space.org/download/releases/spice-server\nSPICE_LICENSE = LGPL-2.1+\nSPICE_LICENSE_FILES = COPYING\nSPICE_CPE_ID_VENDOR = spice_project\nSPICE_INSTALL_STAGING = YES\nSPICE_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tjpeg \\\n\tlibglib2 \\\n\topenssl \\\n\tpixman \\\n\tspice-protocol\n\n# We disable everything for now, because the dependency tree can become\n# quite deep if we try to enable some features, and I have not tested that.\nSPICE_CONF_OPTS = \\\n\t--disable-gstreamer \\\n\t--disable-opengl \\\n\t--disable-smartcard \\\n\t--without-sasl \\\n\t--disable-manual \\\n\t--disable-tests\n\nSPICE_DEPENDENCIES += host-pkgconf\n\nifeq ($(BR2_PACKAGE_LZ4),y)\nSPICE_CONF_OPTS += --enable-lz4\nSPICE_DEPENDENCIES += lz4\nelse\nSPICE_CONF_OPTS += --disable-lz4\nendif\n\nifeq ($(BR2_PACKAGE_OPUS),y)\nSPICE_CONF_OPTS += --enable-opus\nSPICE_DEPENDENCIES += opus\nelse\nSPICE_CONF_OPTS += --disable-opus\nendif\n\n# We need to tweak spice.pc because it /forgets/ (for static linking) that\n# it should link against libz and libjpeg. libz is pkg-config-aware, while\n# libjpeg isn't, hence the two-line tweak\ndefine SPICE_POST_INSTALL_STAGING_FIX_PC\n\t$(SED) 's/^\\(Requires.private:.*\\)$$/\\1 zlib/; s/^\\(Libs.private:.*\\)$$/\\1 -ljpeg/;' \\\n\t\t\"$(STAGING_DIR)/usr/lib/pkgconfig/spice-server.pc\"\nendef\nSPICE_POST_INSTALL_STAGING_HOOKS += SPICE_POST_INSTALL_STAGING_FIX_PC\n\n# It is currently not possible to detect if stack-protection is available\n# or not, because it requires support from both the compiler *and* the\n# C library, but the C library (eg. uClibc) can be compiled without that\n# support, even if gcc accepts the -fstack-protector-all option.\n# spice's ./configure only checks for gcc's -fstack-protector-all option,\n# so it misses the case where the C library doe not provide the requires\n# support.\n# A correct fix would be to fix spice's ./configure to also check the C\n# library, but it might be much more involved.\n# So, we simply disable it for now. After all, as uClibc's help puts it:\n#     Note that NOEXECSTACK on a kernel with address space randomization\n#     is generally sufficient to prevent most buffer overflow exploits\n#     without increasing code size.\nSPICE_CONF_OPTS += gl_cv_warn__fstack_protector_all=no\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/spice-protocol/Config.in",
    "content": "config BR2_PACKAGE_SPICE_PROTOCOL\n\tbool \"spice protocol\"\n\thelp\n\t  The Spice project aims to provide a complete open source\n\t  solution for interaction with virtualized desktop devices.\n\t  The Spice project deals with both the virtualized devices\n\t  and the front-end. Interaction between front-end and\n\t  back-end is done using VD-Interfaces.\n\n\t  This package implements the protocol-part of Spice.\n\n\t  http://www.spice-space.org/\n"
  },
  {
    "path": "package/spice-protocol/spice-protocol.hash",
    "content": "# From https://www.spice-space.org/download/releases/spice-protocol-0.14.3.tar.xz.sha256sum\nsha256  f986e5bc2a1598532c4897f889afb0df9257ac21c160c083703ae7c8de99487a  spice-protocol-0.14.3.tar.xz\n\n# Hash for license file\nsha256  eb55ea746be694c449224c7ddce6340648b075fd377281712a19094e7fb7ef92  COPYING\n"
  },
  {
    "path": "package/spice-protocol/spice-protocol.mk",
    "content": "################################################################################\n#\n# spice-protocol\n#\n################################################################################\n\nSPICE_PROTOCOL_VERSION = 0.14.3\nSPICE_PROTOCOL_SOURCE = spice-protocol-$(SPICE_PROTOCOL_VERSION).tar.xz\nSPICE_PROTOCOL_SITE = http://www.spice-space.org/download/releases\nSPICE_PROTOCOL_LICENSE = BSD-3-Clause\nSPICE_PROTOCOL_LICENSE_FILES = COPYING\nSPICE_PROTOCOL_INSTALL_STAGING = YES\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/spidev_test/Config.in",
    "content": "config BR2_PACKAGE_SPIDEV_TEST\n\tbool \"spidev_test\"\n\thelp\n\t  SPI testing utility (using spidev driver).\n\n\t  This package builds and installs the userspace 'spidev_test'\n\t  command. It is up to the user to ensure that the kernel\n\t  configuration has all suitable options enabled to allow a\n\t  proper operation of 'spidev_test'.\n\n\t  The version used is based on your toolchain headers version,\n\t  if it's older than 3.15 then 3.0 is used, otherwise 3.15\n\t  is used.\n\t  This means you won't have quad-pumped SPI support if your\n\t  toolchain is too old.\n\n\t  https://www.kernel.org/doc/html/latest/spi/index.html\n"
  },
  {
    "path": "package/spidev_test/spidev_test.hash",
    "content": "# Locally calculated\nsha256 80471c330d8c0bf5ba6479c434a54a54bdd2dc59a703b9c76c2541ec04cfb8c3  spidev_test.c?id=v3.0\nsha256 3cf76b15d9a8644f3f5cbc0387cc02a7d4a392ade39788cbc6367cce98552e2f  spidev_test.c?id=v4.10\n"
  },
  {
    "path": "package/spidev_test/spidev_test.mk",
    "content": "################################################################################\n#\n# spidev_test\n#\n################################################################################\n\n# Build the latest version that is compatible with the toolchain's kernel headers\n# v3.15+ requires SPI_TX_QUAD/SPI_RX_QUAD to build\n# Normally kernel headers can't be newer than kernel so switch based on that.\n# If you need quad-pumped spi support you need to upgrade your toolchain.\n# Note that the location of spidev_test.c changes from v4.5 onwards.\n\nifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15),y)\nSPIDEV_TEST_VERSION = 4.10\nSPIDEV_TEST_PATH = tools/spi\nelse\nSPIDEV_TEST_VERSION = 3.0\nSPIDEV_TEST_PATH = Documentation/spi\nendif\n\nSPIDEV_TEST_SITE = http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/$(SPIDEV_TEST_PATH)\nSPIDEV_TEST_SOURCE = spidev_test.c?id=v$(SPIDEV_TEST_VERSION)\nSPIDEV_TEST_LICENSE = GPL-2.0\n\n# musl libc requires linux/ioctl.h for _IOC_SIZEBITS. Do a sed patch to keep\n# compatibility with different spidev_test.c versions that we support.\ndefine SPIDEV_TEST_ADD_LINUX_IOCTL\n\t$(SED) 's~^#include <sys/ioctl.h>~#include <sys/ioctl.h>\\n#include <linux/ioctl.h>~' \\\n\t\t$(@D)/spidev_test.c\nendef\n\nSPIDEV_TEST_POST_PATCH_HOOKS += SPIDEV_TEST_ADD_LINUX_IOCTL\n\ndefine SPIDEV_TEST_EXTRACT_CMDS\n\tcp $(SPIDEV_TEST_DL_DIR)/$(SPIDEV_TEST_SOURCE) $(@D)/spidev_test.c\nendef\n\ndefine SPIDEV_TEST_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CC) $(TARGET_CFLAGS) \\\n\t\t-o $(@D)/spidev_test $(@D)/spidev_test.c\nendef\n\ndefine SPIDEV_TEST_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/spidev_test \\\n\t\t$(TARGET_DIR)/usr/sbin/spidev_test\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/sqlcipher/Config.in",
    "content": "config BR2_PACKAGE_SQLCIPHER\n\tbool \"sqlcipher\"\n\tdepends on !BR2_PACKAGE_SQLITE\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  SQLCipher is an SQLite extension that provides 256 bits AES\n\t  encryption of database files. Note that it is a fork of\n\t  SQLite and they cannot be installed side-by-side.\n\n\t  http://sqlcipher.net\n\nif BR2_PACKAGE_SQLCIPHER\n\nconfig BR2_PACKAGE_SQLCIPHER_READLINE\n\tbool \"Command-line editing\"\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  Enable command-line editing. This requires ncurses and\n\t  readline.\n\nconfig BR2_PACKAGE_SQLCIPHER_STAT3\n\tbool \"Additional query optimizations (stat3)\"\n\thelp\n\t  Adds additional logic to the ANALYZE command and to the\n\t  query planner that can help SQLite to choose a better query\n\t  plan under certain situations.\n\nendif\n\ncomment \"sqlcipher conflicts with sqlite\"\n\tdepends on BR2_PACKAGE_SQLITE\n\ncomment \"sqlcipher needs a toolchain w/ threads\"\n\tdepends on !BR2_PACKAGE_SQLITE\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/sqlcipher/sqlcipher.hash",
    "content": "# locally computed\nsha256  b8df69b998c042ce7f8a99f07cf11f45dfebe51110ef92de95f1728358853133  sqlcipher-4.4.3.tar.gz\nsha256  3eee3c7964a9becc94d747bd36703d31fc86eb994680b06a61bfd4f2661eaac8  LICENSE\n"
  },
  {
    "path": "package/sqlcipher/sqlcipher.mk",
    "content": "################################################################################\n#\n# sqlcipher\n#\n################################################################################\n\nSQLCIPHER_VERSION = 4.4.3\nSQLCIPHER_SITE = $(call github,sqlcipher,sqlcipher,v$(SQLCIPHER_VERSION))\nSQLCIPHER_LICENSE = BSD-3-Clause\nSQLCIPHER_LICENSE_FILES = LICENSE\nSQLCIPHER_CPE_ID_VENDOR = zetetic\nSQLCIPHER_DEPENDENCIES = host-pkgconf openssl host-tcl\nSQLCIPHER_INSTALL_STAGING = YES\n\nSQLCIPHER_CONF_ENV = \\\n\tCFLAGS=\"$(TARGET_CFLAGS) $(SQLCIPHER_CFLAGS)\" \\\n\tTCLSH_CMD=$(HOST_DIR)/bin/tclsh$(TCL_VERSION_MAJOR)\n\nSQLCIPHER_CONF_OPTS = \\\n\t--enable-threadsafe \\\n\t--disable-tcl\n\nSQLCIPHER_CFLAGS += -DSQLITE_HAS_CODEC # Required according to the README\nSQLCIPHER_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`\n\nifeq ($(BR2_PACKAGE_SQLCIPHER_STAT3),y)\nSQLCIPHER_CFLAGS += -DSQLITE_ENABLE_STAT3\nendif\n\nifeq ($(BR2_PACKAGE_SQLCIPHER_READLINE),y)\nSQLCIPHER_DEPENDENCIES += ncurses readline\nSQLCIPHER_CONF_OPTS += --with-readline-inc=\"-I$(STAGING_DIR)/usr/include\"\nelse\nSQLCIPHER_CONF_OPTS += --disable-readline\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nSQLCIPHER_CONF_OPTS += --disable-load-extension\nelse\nSQLCIPHER_CONF_OPTS += --enable-load-extension\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sqlite/Config.in",
    "content": "config BR2_PACKAGE_SQLITE\n\tbool \"sqlite\"\n\thelp\n\t  SQLite is a small C library that implements a\n\t  self-contained, embeddable, zero-configuration SQL database\n\t  engine.\n\n\t  https://www.sqlite.org/\n\nif BR2_PACKAGE_SQLITE\n\nconfig BR2_PACKAGE_SQLITE_STAT4\n\tbool \"Additional query optimizations (stat4)\"\n\thelp\n\t  Adds additional logic to the ANALYZE command and to the\n\t  query planner that can help SQLite to choose a better query\n\t  plan under certain situations.\n\nconfig BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA\n\tbool \"Enable convenient access to meta-data about tables and queries\"\n\thelp\n\t  When this option is defined there are some additional APIs\n\t  enabled to acces meta-data about tables and queries (see\n\t  https://sqlite.org/compile.html).\n\nconfig BR2_PACKAGE_SQLITE_ENABLE_FTS3\n\tbool \"Enable version 3 of the full-text search engine\"\n\thelp\n\t  When this option is defined in the amalgamation (see\n\t  http://www.sqlite.org/amalgamation.html), version 3 of the\n\t  full-text search engine is added to the build automatically.\n\nconfig BR2_PACKAGE_SQLITE_ENABLE_JSON1\n\tbool \"Enable the JSON extensions for SQLite\"\n\thelp\n\t  When this option is defined in the amalgamation, the JSON\n\t  extensions are added to the build automatically.\n\nconfig BR2_PACKAGE_SQLITE_ENABLE_UNLOCK_NOTIFY\n\tbool \"Enable sqlite3_unlock_notify() interface\"\n\thelp\n\t  This option enables the sqlite3_unlock_notify() interface\n\t  and its accosiated functionality. See the documentation\n\t  http://www.sqlite.org/unlock_notify.html for additional\n\t  information.\n\nconfig BR2_PACKAGE_SQLITE_SECURE_DELETE\n\tbool \"Set the secure_delete pragma on by default\"\n\thelp\n\t  This compile-time option changes the default settings of the\n\t  secure_delete pragma. When this option is not used,\n\t  secure_delete defaults to off. When this option is present,\n\t  secure_delete defaults to on.\n\n\t  The secure_delete setting causes deleted content to be\n\t  overwritten with zeros. There is a small performance penalty\n\t  for this since additional I/O must occur. On the other hand,\n\t  secure_delete can prevent sensitive information from\n\t  lingering in unused parts of the database file after it has\n\t  allegedly been deleted. See the documentation on the\n\t  http://www.sqlite.org/pragma.html#pragma_secure_delete for\n\t  additional information.\n\nconfig BR2_PACKAGE_SQLITE_NO_SYNC\n\tbool \"Disable fsync\"\n\thelp\n\t  By default SQLite forces all database transactions to\n\t  storage immediately using fsync() to protect against data\n\t  loss in case of power failure. This option turns this\n\t  behavior off resulting in higher performance especially when\n\t  using slow flash storage.\n\nendif\n"
  },
  {
    "path": "package/sqlite/sqlite.hash",
    "content": "# Locally computed\nsha256  bd90c3eb96bee996206b83be7065c9ce19aef38c3f4fb53073ada0d0b69bbce3  sqlite-autoconf-3360000.tar.gz\nsha256  66e056b6e8687f32af30d5187611b98b12a8f46f07aaf62f43585f276e8f0ac9  tea/license.terms\n"
  },
  {
    "path": "package/sqlite/sqlite.mk",
    "content": "################################################################################\n#\n# sqlite\n#\n################################################################################\n\nSQLITE_VERSION = 3.36.0\nSQLITE_TAR_VERSION = 3360000\nSQLITE_SOURCE = sqlite-autoconf-$(SQLITE_TAR_VERSION).tar.gz\nSQLITE_SITE = https://www.sqlite.org/2021\nSQLITE_LICENSE = Public domain\nSQLITE_LICENSE_FILES = tea/license.terms\nSQLITE_CPE_ID_VENDOR = sqlite\nSQLITE_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_SQLITE_STAT4),y)\nSQLITE_CFLAGS += -DSQLITE_ENABLE_STAT4\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA),y)\nSQLITE_CFLAGS += -DSQLITE_ENABLE_COLUMN_METADATA\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE_ENABLE_FTS3),y)\nSQLITE_CFLAGS += -DSQLITE_ENABLE_FTS3\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE_ENABLE_JSON1),y)\nSQLITE_CFLAGS += -DSQLITE_ENABLE_JSON1\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE_ENABLE_UNLOCK_NOTIFY),y)\nSQLITE_CFLAGS += -DSQLITE_ENABLE_UNLOCK_NOTIFY\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE_SECURE_DELETE),y)\nSQLITE_CFLAGS += -DSQLITE_SECURE_DELETE\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE_NO_SYNC),y)\nSQLITE_CFLAGS += -DSQLITE_NO_SYNC\nendif\n\n# Building with Microblaze Gcc 4.9 makes compiling to hang.\n# Work around using -O0\nifeq ($(BR2_microblaze):$(BR2_TOOLCHAIN_GCC_AT_LEAST_5),y:)\nSQLITE_CFLAGS += $(TARGET_CFLAGS) -O0\nelse\n# fallback to standard -O3 when -Ofast is present to avoid -ffast-math\nSQLITE_CFLAGS += $(subst -Ofast,-O3,$(TARGET_CFLAGS))\nendif\n\nSQLITE_CONF_ENV = CFLAGS=\"$(SQLITE_CFLAGS)\"\n\nifeq ($(BR2_STATIC_LIBS),y)\nSQLITE_CONF_OPTS += --enable-dynamic-extensions=no\nelse\nSQLITE_CONF_OPTS += --disable-static-shell\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nSQLITE_CONF_OPTS += --enable-threadsafe\nelse\nSQLITE_CONF_OPTS += --disable-threadsafe\nSQLITE_CFLAGS += -DSQLITE_THREADSAFE=0\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES)$(BR2_PACKAGE_READLINE),yy)\nSQLITE_DEPENDENCIES += ncurses readline\nSQLITE_CONF_OPTS += --disable-editline --enable-readline\nelse ifeq ($(BR2_PACKAGE_LIBEDIT),y)\nSQLITE_DEPENDENCIES += libedit\nSQLITE_CONF_OPTS += --enable-editline --disable-readline\nelse\nSQLITE_CONF_OPTS += --disable-editline --disable-readline\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/squashfs/0001-squashfs-tools-fix-build-failure-against-gcc-10.patch",
    "content": "From e1cdcfd94172a0b1ba4c9df70f4d69a41c687404 Mon Sep 17 00:00:00 2001\nFrom: Sergei Trofimovich <slyfox@gentoo.org>\nDate: Sun, 26 Jan 2020 18:35:13 +0000\nSubject: [PATCH] squashfs-tools: fix build failure against gcc-10\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nOn gcc-10 (and gcc-9 -fno-common) build fails as:\n\n```\ncc ... -o mksquashfs\nld: read_fs.o:(.bss+0x0):\n  multiple definition of `fwriter_buffer'; mksquashfs.o:(.bss+0x400c90): first defined here\nld: read_fs.o:(.bss+0x8):\n  multiple definition of `bwriter_buffer'; mksquashfs.o:(.bss+0x400c98): first defined here\n```\n\ngcc-10 will change the default from -fcommon to fno-common:\nhttps://gcc.gnu.org/PR85678.\n\nThe error also happens if CFLAGS=-fno-common passed explicitly.\n\nReported-by: Toralf Förster\nBug: https://bugs.gentoo.org/706456\nSigned-off-by: Sergei Trofimovich <slyfox@gentoo.org>\n\n[Upstream: https://github.com/plougher/squashfs-tools/commit/fe2f5da4b0f8994169c53e84b7cb8a0feefc97b5.patch]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n squashfs-tools/mksquashfs.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/squashfs-tools/mksquashfs.h b/squashfs-tools/mksquashfs.h\nindex 1beefef..b650306 100644\n--- a/squashfs-tools/mksquashfs.h\n+++ b/squashfs-tools/mksquashfs.h\n@@ -143,7 +143,7 @@ struct append_file {\n #endif\n \n extern struct cache *reader_buffer, *fragment_buffer, *reserve_cache;\n-struct cache *bwriter_buffer, *fwriter_buffer;\n+extern struct cache *bwriter_buffer, *fwriter_buffer;\n extern struct queue *to_reader, *to_deflate, *to_writer, *from_writer,\n \t*to_frag, *locked_fragment, *to_process_frag;\n extern struct append_file **file_mapping;\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/squashfs/Config.in",
    "content": "config BR2_PACKAGE_SQUASHFS\n\tbool \"squashfs\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\t# ensure at least on compression backend (defaults to gzip)\n\tselect BR2_PACKAGE_SQUASHFS_GZIP if !( \\\n\t       BR2_PACKAGE_SQUASHFS_LZ4 || \\\n\t       BR2_PACKAGE_SQUASHFS_LZMA || \\\n\t       BR2_PACKAGE_SQUASHFS_LZO || \\\n\t       BR2_PACKAGE_SQUASHFS_XZ || \\\n\t       BR2_PACKAGE_SQUASHFS_ZSTD)\n\thelp\n\t  Tools to generate SquashFS filesystems.\n\n\t  https://github.com/plougher/squashfs-tools\n\nif BR2_PACKAGE_SQUASHFS\n\nconfig BR2_PACKAGE_SQUASHFS_GZIP\n\tbool \"gzip support\"\n\tdefault y\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Support GZIP compression algorithm\n\nconfig BR2_PACKAGE_SQUASHFS_LZ4\n\tbool \"lz4 support\"\n\tselect BR2_PACKAGE_LZ4\n\thelp\n\t  Support LZ4 compression algorithm\n\nconfig BR2_PACKAGE_SQUASHFS_LZMA\n\tbool \"lzma support\"\n\tselect BR2_PACKAGE_XZ\n\thelp\n\t  Support LZMA compression algorithm\n\nconfig BR2_PACKAGE_SQUASHFS_LZO\n\tbool \"lzo support\"\n\tselect BR2_PACKAGE_LZO\n\thelp\n\t  Support LZO compression algorithm\n\nconfig BR2_PACKAGE_SQUASHFS_XZ\n\tbool \"xz support\"\n\tselect BR2_PACKAGE_XZ\n\thelp\n\t  Support XZ compression algorithm\n\nconfig BR2_PACKAGE_SQUASHFS_ZSTD\n\tbool \"zstd support\"\n\tselect BR2_PACKAGE_ZSTD\n\thelp\n\t  Support ZSTD compression algorithm\n\nendif\n\ncomment \"squashfs needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/squashfs/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_SQUASHFS\n\tbool \"host squashfs\"\n\thelp\n\t  Tools to generate SquashFS filesystems.\n\n\t  https://github.com/plougher/squashfs-tools\n"
  },
  {
    "path": "package/squashfs/squashfs.hash",
    "content": "# Locally computed\nsha256 a7fa4845e9908523c38d4acf92f8a41fdfcd19def41bd5090d7ad767a6dc75c3 squashfs-4.4.tar.gz\n\n# License files\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING\n"
  },
  {
    "path": "package/squashfs/squashfs.mk",
    "content": "################################################################################\n#\n# squashfs\n#\n################################################################################\n\nSQUASHFS_VERSION = 4.4\nSQUASHFS_SITE = $(call github,plougher,squashfs-tools,$(SQUASHFS_VERSION))\nSQUASHFS_LICENSE = GPL-2.0+\nSQUASHFS_LICENSE_FILES = COPYING\nSQUASHFS_CPE_ID_VENDOR = squashfs_project\nSQUASHFS_MAKE_ARGS = XATTR_SUPPORT=1\n\nifeq ($(BR2_PACKAGE_SQUASHFS_LZ4),y)\nSQUASHFS_DEPENDENCIES += lz4\nSQUASHFS_MAKE_ARGS += LZ4_SUPPORT=1 COMP_DEFAULT=lz4\nelse\nSQUASHFS_MAKE_ARGS += LZ4_SUPPORT=0\nendif\n\nifeq ($(BR2_PACKAGE_SQUASHFS_LZMA),y)\nSQUASHFS_DEPENDENCIES += xz\nSQUASHFS_MAKE_ARGS += LZMA_XZ_SUPPORT=1 COMP_DEFAULT=lzma\nelse\nSQUASHFS_MAKE_ARGS += LZMA_XZ_SUPPORT=0\nendif\n\nifeq ($(BR2_PACKAGE_SQUASHFS_XZ),y)\nSQUASHFS_DEPENDENCIES += xz\nSQUASHFS_MAKE_ARGS += XZ_SUPPORT=1 COMP_DEFAULT=xz\nelse\nSQUASHFS_MAKE_ARGS += XZ_SUPPORT=0\nendif\n\nifeq ($(BR2_PACKAGE_SQUASHFS_LZO),y)\nSQUASHFS_DEPENDENCIES += lzo\nSQUASHFS_MAKE_ARGS += LZO_SUPPORT=1 COMP_DEFAULT=lzo\nelse\nSQUASHFS_MAKE_ARGS += LZO_SUPPORT=0\nendif\n\nifeq ($(BR2_PACKAGE_SQUASHFS_ZSTD),y)\nSQUASHFS_DEPENDENCIES += zstd\nSQUASHFS_MAKE_ARGS += ZSTD_SUPPORT=1 COMP_DEFAULT=zstd\nelse\nSQUASHFS_MAKE_ARGS += ZSTD_SUPPORT=0\nendif\n\nifeq ($(BR2_PACKAGE_SQUASHFS_GZIP),y)\nSQUASHFS_DEPENDENCIES += zlib\nSQUASHFS_MAKE_ARGS += GZIP_SUPPORT=1 COMP_DEFAULT=gzip\nelse\nSQUASHFS_MAKE_ARGS += GZIP_SUPPORT=0\nendif\n\nHOST_SQUASHFS_DEPENDENCIES = host-zlib host-lz4 host-lzo host-xz host-zstd\n\nHOST_SQUASHFS_MAKE_ARGS = \\\n\tXATTR_SUPPORT=1 \\\n\tXZ_SUPPORT=1 \\\n\tGZIP_SUPPORT=1 \\\n\tLZ4_SUPPORT=1 \\\n\tLZO_SUPPORT=1 \\\n\tLZMA_XZ_SUPPORT=1 \\\n\tZSTD_SUPPORT=1\n\ndefine SQUASHFS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\t\tCC=\"$(TARGET_CC)\" \\\n\t\tEXTRA_CFLAGS=\"$(TARGET_CFLAGS) -fgnu89-inline\" \\\n\t\tEXTRA_LDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\t\t$(SQUASHFS_MAKE_ARGS) \\\n\t\t-C $(@D)/squashfs-tools/\nendef\n\ndefine SQUASHFS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(SQUASHFS_MAKE_ARGS) \\\n\t\t-C $(@D)/squashfs-tools/ INSTALL_DIR=$(TARGET_DIR)/usr/bin install\nendef\n\ndefine HOST_SQUASHFS_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) \\\n\t\tCC=\"$(HOSTCC)\" \\\n\t\tEXTRA_CFLAGS=\"$(HOST_CFLAGS)\" \\\n\t\tEXTRA_LDFLAGS=\"$(HOST_LDFLAGS)\" \\\n\t\t$(HOST_SQUASHFS_MAKE_ARGS) \\\n\t\t-C $(@D)/squashfs-tools/\nendef\n\ndefine HOST_SQUASHFS_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) $(HOST_SQUASHFS_MAKE_ARGS) \\\n\t\t-C $(@D)/squashfs-tools/ INSTALL_DIR=$(HOST_DIR)/bin install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/squeezelite/Config.in",
    "content": "config BR2_PACKAGE_SQUEEZELITE\n\tbool \"squeezelite\"\n\tdepends on BR2_USE_WCHAR # flac\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_USE_MMU # mpg123\n\tdepends on !BR2_STATIC_LIBS # dlopen\n\tselect BR2_PACKAGE_ALSA_LIB\n\tselect BR2_PACKAGE_ALSA_LIB_MIXER\n\tselect BR2_PACKAGE_FLAC\n\tselect BR2_PACKAGE_LIBMAD\n\tselect BR2_PACKAGE_LIBVORBIS\n\tselect BR2_PACKAGE_MPG123\n\thelp\n\t  Logitech Media Server client\n\n\t  https://github.com/ralph-irving/squeezelite/\n\nif BR2_PACKAGE_SQUEEZELITE\n\nconfig BR2_PACKAGE_SQUEEZELITE_FFMPEG\n\tbool \"Enable WMA and ALAC decoding\"\n\tdefault y\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_FFMPEG\n\nconfig BR2_PACKAGE_SQUEEZELITE_DSD\n\tbool \"Enable DSD decoding\"\n\nconfig BR2_PACKAGE_SQUEEZELITE_LIRC\n\tbool \"Enable lirc support\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_LIRC_TOOLS\n\ncomment \"lirc support needs a toolchain with C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_SQUEEZELITE_RESAMPLE\n\tbool \"Enable resampling support\"\n\tselect BR2_PACKAGE_LIBSOXR\n\nconfig BR2_PACKAGE_SQUEEZELITE_VISEXPORT\n\tbool \"Enable visualiser support\"\n\nendif\n\ncomment \"squeezelite needs a toolchain w/ wchar, NPTL, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \\\n\t\t|| BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/squeezelite/squeezelite.hash",
    "content": "# Locally calculated\nsha256 7f0342f4943d3c3498d930060f5a1e8d63ccb7282b9c21f964926e310449d592 squeezelite-71c012ad9ba102feb95823b7b9dc17e5305689c7.tar.gz\nsha256 dc01c3da33fea11ed918f9e437b88baa59c70401aab0dad747e33dd9e8035706 LICENSE.txt\n"
  },
  {
    "path": "package/squeezelite/squeezelite.mk",
    "content": "################################################################################\n#\n# squeezelite\n#\n################################################################################\n\nSQUEEZELITE_VERSION = 71c012ad9ba102feb95823b7b9dc17e5305689c7\nSQUEEZELITE_SITE = $(call github,ralph-irving,squeezelite,$(SQUEEZELITE_VERSION))\nSQUEEZELITE_LICENSE = GPL-3.0\nSQUEEZELITE_LICENSE_FILES = LICENSE.txt\nSQUEEZELITE_DEPENDENCIES = alsa-lib flac libmad libvorbis mpg123\nSQUEEZELITE_MAKE_OPTS = -DLINKALL\n\nifeq ($(BR2_PACKAGE_FAAD2),y)\nSQUEEZELITE_DEPENDENCIES += faad2\nelse\nSQUEEZELITE_MAKE_OPTS += -DNO_FAAD\nendif\n\nifeq ($(BR2_PACKAGE_SQUEEZELITE_FFMPEG),y)\nSQUEEZELITE_DEPENDENCIES += ffmpeg\nSQUEEZELITE_MAKE_OPTS += -DFFMPEG\nendif\n\nifeq ($(BR2_PACKAGE_SQUEEZELITE_DSD),y)\nSQUEEZELITE_MAKE_OPTS += -DDSD\nendif\n\nifeq ($(BR2_PACKAGE_SQUEEZELITE_LIRC),y)\nSQUEEZELITE_DEPENDENCIES += lirc-tools\nSQUEEZELITE_MAKE_OPTS += -DIR\nendif\n\nifeq ($(BR2_PACKAGE_SQUEEZELITE_RESAMPLE),y)\nSQUEEZELITE_DEPENDENCIES += libsoxr\nSQUEEZELITE_MAKE_OPTS += -DRESAMPLE\nendif\n\nifeq ($(BR2_PACKAGE_SQUEEZELITE_VISEXPORT),y)\nSQUEEZELITE_MAKE_OPTS += -DVISEXPORT\nendif\n\ndefine SQUEEZELITE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tOPTS=\"$(SQUEEZELITE_MAKE_OPTS)\" -C $(@D) all\nendef\n\ndefine SQUEEZELITE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/squeezelite \\\n\t\t$(TARGET_DIR)/usr/bin/squeezelite\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/squid/Config.in",
    "content": "comment \"squid needs a toolchain w/ C++, gcc >= 4.8 not affected by bug 64735\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 || \\\n\t\t!BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\nconfig BR2_PACKAGE_SQUID\n\tbool \"squid\"\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::current_exception\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\t# needs fork()\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_LIBCAP\n\tselect BR2_PACKAGE_LIBTOOL\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  Caching proxy for the Web supporting HTTP, HTTPS, FTP, and\n\t  more.\n\n\t  http://www.squid-cache.org/\n"
  },
  {
    "path": "package/squid/S97squid",
    "content": "#!/bin/sh\n\n[ -f /etc/squid.conf ] || exit 0\n\ncase \"$1\" in\n  start)\n    printf \"Starting squid: \"\n    if [ ! -d /var/log/squid ]; then\n      mkdir -p /var/log/squid\n      chown squid:squid /var/log/squid\n    fi\n    start-stop-daemon -S -x /usr/sbin/squid\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    ;;\n\n   stop)\n    printf \"Stopping squid: \"\n    /usr/sbin/squid -k shutdown\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    ;;\n\n  reload)\n    printf \"Reloading squid configuration: \"\n    /usr/sbin/squid -k reconfigure\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    ;;\n\n  restart)\n    printf \"Restarting squid: \"\n    /usr/sbin/squid -k restart\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n    ;;\n\n  *)\n    echo \"Usage: $0 {start|stop|reload|restart}\"\n    exit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "package/squid/squid.hash",
    "content": "# From http://www.squid-cache.org/Versions/v4/squid-4.17.tar.xz.asc\nmd5  47b94b2d27516f1764c9d5dc1b9645e5  squid-4.17.tar.xz\nsha1  f6bd15fabbd67b53a831fe9f67de3279868036c1  squid-4.17.tar.xz\n# Locally calculated\nsha256  cb928ac08c7c86b151b1c8f827abe1a84d83181a2a86e0d512286163e1e31418  squid-4.17.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/squid/squid.mk",
    "content": "################################################################################\n#\n# squid\n#\n################################################################################\n\nSQUID_VERSION = 4.17\nSQUID_SOURCE = squid-$(SQUID_VERSION).tar.xz\nSQUID_SITE = http://www.squid-cache.org/Versions/v4\nSQUID_LICENSE = GPL-2.0+\nSQUID_LICENSE_FILES = COPYING\nSQUID_CPE_ID_VENDOR = squid-cache\nSQUID_SELINUX_MODULES = apache squid\nSQUID_DEPENDENCIES = libcap host-libcap libtool libxml2 host-pkgconf \\\n\t$(if $(BR2_PACKAGE_LIBNETFILTER_CONNTRACK),libnetfilter_conntrack)\nSQUID_CONF_ENV = \\\n\tac_cv_epoll_works=yes \\\n\tac_cv_func_setresuid=yes \\\n\tac_cv_func_va_copy=yes \\\n\tac_cv_func___va_copy=yes \\\n\tac_cv_func_strnstr=no \\\n\tac_cv_have_squid=yes \\\n\tBUILDCXX=\"$(HOSTCXX)\" \\\n\tBUILDCXXFLAGS=\"$(HOST_CXXFLAGS)\"\nSQUID_CONF_OPTS = \\\n\t--enable-async-io=8 \\\n\t--enable-linux-netfilter \\\n\t--enable-removal-policies=\"lru,heap\" \\\n\t--with-filedescriptors=1024 \\\n\t--disable-ident-lookups \\\n\t--enable-auth-basic=\"fake getpwnam\" \\\n\t--enable-auth-digest=\"file\" \\\n\t--enable-auth-negotiate=\"wrapper\" \\\n\t--enable-auth-ntlm=\"fake\" \\\n\t--disable-strict-error-checking \\\n\t--enable-external-acl-helpers=\"file_userip\" \\\n\t--disable-ltdl-install \\\n\t--without-included-ltdl \\\n\t--with-logdir=/var/log/squid/ \\\n\t--with-pidfile=/var/run/squid.pid \\\n\t--with-swapdir=/var/cache/squid/ \\\n\t--with-default-user=squid\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nSQUID_CONF_ENV += LIBS=-latomic\nendif\n\nifeq ($(BR2_PACKAGE_LIBKRB5),y)\nSQUID_CONF_OPTS += --with-mit-krb5\nSQUID_DEPENDENCIES += libkrb5\nelse\nSQUID_CONF_OPTS += --without-mit-krb5\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nSQUID_CONF_OPTS += --with-openssl\nSQUID_DEPENDENCIES += openssl\nelse\nSQUID_CONF_OPTS += --without-openssl\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nSQUID_CONF_OPTS += --with-gnutls\nSQUID_DEPENDENCIES += gnutls\nelse\nSQUID_CONF_OPTS += --without-gnutls\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nSQUID_CONF_OPTS += --with-systemd\nSQUID_DEPENDENCIES += systemd\nelse\nSQUID_CONF_OPTS += --without-systemd\nendif\n\ndefine SQUID_CLEANUP_TARGET\n\trm -f $(addprefix $(TARGET_DIR)/usr/bin/, \\\n\t\tRunCache RunAccel)\n\trm -f $(addprefix $(TARGET_DIR)/etc/, \\\n\t\tcachemgr.conf mime.conf.default squid.conf.default)\nendef\n\nSQUID_POST_INSTALL_TARGET_HOOKS += SQUID_CLEANUP_TARGET\n\ndefine SQUID_USERS\n\tsquid -1 squid -1 * - - - Squid proxy cache\nendef\n\ndefine SQUID_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/squid/S97squid \\\n\t\t$(TARGET_DIR)/etc/init.d/S97squid\nendef\n\ndefine SQUID_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 $(@D)/tools/systemd/squid.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/squid.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sredird/0001-termio.patch",
    "content": "Fix musl build\n\nPatch was inspired by\nhttp://svnweb.freebsd.org/ports/head/comms/sredird/files/patch-sredird.c?revision=363168&view=markup\nhttp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/sysutils/sredird/patches/patch-aa\nhttps://github.com/bitrig/bitrig-ports/blob/master/comms/sredird/patches/patch-sredird_c\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr sredird-2.2.2.org/sredird.c sredird-2.2.2/sredird.c\n--- sredird-2.2.2.org/sredird.c\t2005-08-12 16:10:46.000000000 +0200\n+++ sredird-2.2.2/sredird.c\t2016-01-31 18:53:08.000000000 +0100\n@@ -110,7 +110,6 @@\n #include <fcntl.h>\n #include <syslog.h>\n #include <termios.h>\n-#include <termio.h>\n #include <sys/socket.h>\n #include <netinet/in.h>\n #include <netinet/ip.h>\n"
  },
  {
    "path": "package/sredird/Config.in",
    "content": "config BR2_PACKAGE_SREDIRD\n\tbool \"sredird\"\n\thelp\n\t  Sredird is a serial port redirector that is compliant with\n\t  the RFC 2217 \"Telnet Com Port Control Option\" protocol. This\n\t  protocol lets you share a serial port through the network.\n\n\t  http://freecode.com/projects/sredird\n"
  },
  {
    "path": "package/sredird/sredird.hash",
    "content": "# Locally computed\nsha256  640c47dcd84b3b90640165a38eb336a675fdab06c14c09cae2f4a604cae560d3  sredird-2.2.2.tar.gz\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/sredird/sredird.mk",
    "content": "################################################################################\n#\n# sredird\n#\n################################################################################\n\nSREDIRD_VERSION = 2.2.2\nSREDIRD_SITE = http://www.ibiblio.org/pub/Linux/system/serial\nSREDIRD_LICENSE = GPL-2.0+\nSREDIRD_LICENSE_FILES = COPYING\n\ndefine SREDIRD_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine SREDIRD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/sredird $(TARGET_DIR)/usr/sbin/sredird\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ssdp-responder/Config.in",
    "content": "config BR2_PACKAGE_SSDP_RESPONDER\n\tbool \"ssdp-responder\"\n\tdepends on BR2_USE_MMU\n\thelp\n\t  Simple Service Discovery Protocol daemon (SSDP) for networked\n\t  Linux and UNIX devices. Useful in any setup, big or small, but\n\t  targeted more at embedded systems that need to announce\n\t  themselves to Windows systems.\n\n\t  ssdpd is a stand-alone UNIX, no external dependencies but the\n\t  standard C library.  It has a built-in web server for serving\n\t  the UPnP XML description which Windows use to present the\n\t  icon, by default an InternetGatewayDevice is announced.\n\n\t  Also included is ssdp-scan, a tool similar to mdns-scan, which\n\t  continuously scans for SSDP capable hosts on the network.\n\t  Take care only to use for debugging since it scans the network\n\t  quite aggressively.\n\n\t  https://github.com/troglobit/ssdp-responder/\n"
  },
  {
    "path": "package/ssdp-responder/S50ssdpd",
    "content": "#!/bin/sh\n\nNAME=ssdpd\nPIDFILE=/var/run/$NAME.pid\nDAEMON=/usr/sbin/$NAME\nCFGFILE=/etc/default/$NAME\n\nDAEMON_ARGS=\"\"\n\n# Read configuration variable file if it is present\n[ -f $CFGFILE ] && . $CFGFILE\n\nstart() {\n\tprintf 'Starting %s: ' \"$NAME\"\n\tstart-stop-daemon -S -q -p $PIDFILE -x $DAEMON -- $DAEMON_ARGS\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$NAME\"\n\tstart-stop-daemon -K -q -p $PIDFILE -x $DAEMON\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n    start|stop|restart)\n\t\"$1\"\n\t;;\n    reload)\n\trestart\n\t;;\n    *)\n\techo \"Usage: $0 {start|stop|restart|reload}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/ssdp-responder/ssdp-responder.hash",
    "content": "# Locally calculated\nsha256  7ae49229e7c7a55fed9e36598b12e2173eecef0fffe0a386b6a10fad30f3c79f  ssdp-responder-1.8.tar.gz\nsha256  e17dc0bc91bf499d8cca5e016c22c6d2a4770e3cc1a43756a7973375a83ddb90  LICENSE\n"
  },
  {
    "path": "package/ssdp-responder/ssdp-responder.mk",
    "content": "################################################################################\n#\n# ssdp-responder\n#\n################################################################################\n\nSSDP_RESPONDER_VERSION = 1.8\nSSDP_RESPONDER_SITE = https://github.com/troglobit/ssdp-responder/releases/download/v$(SSDP_RESPONDER_VERSION)\nSSDP_RESPONDER_LICENSE = ISC\nSSDP_RESPONDER_LICENSE_FILES = LICENSE\nSSDP_RESPONDER_CPE_ID_VENDOR = \\\n\tsimple_service_discovery_protocol_responder_project\nSSDP_RESPONDER_CPE_ID_PRODUCT = simple_service_discovery_protocol_responder\nSSDP_RESPONDER_DEPENDENCIES = host-pkgconf\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nSSDP_RESPONDER_DEPENDENCIES += systemd\nSSDP_RESPONDER_CONF_OPTS += --with-systemd\nelse\nSSDP_RESPONDER_CONF_OPTS += --without-systemd\nendif\n\ndefine SSDP_RESPONDER_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/ssdp-responder/S50ssdpd \\\n\t\t$(TARGET_DIR)/etc/init.d/S50ssdpd\nendef\n\ndefine SSDP-RESPONDER_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(@D)/ssdp-responder.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/ssdp-responder.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sshfs/Config.in",
    "content": "config BR2_PACKAGE_SSHFS\n\tbool \"sshfs (FUSE)\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libfuse3, glib2\n\tdepends on BR2_USE_MMU # libfuse3, glib2\n\tdepends on !BR2_STATIC_LIBS # libfuse3\n\tselect BR2_PACKAGE_LIBFUSE3\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_OPENSSH\n\thelp\n\t  FUSE filesystem client based on the SSH File Transfer\n\t  Protocol.\n\n\t  https://github.com/libfuse/sshfs\n\ncomment \"sshfs needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/sshfs/sshfs.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  fe5d3436d61b46974889e0c4515899c21a9d67851e3793c209989f72353d7750  sshfs-3.7.1.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/sshfs/sshfs.mk",
    "content": "################################################################################\n#\n# sshfs\n#\n################################################################################\n\nSSHFS_VERSION = 3.7.1\nSSHFS_SOURCE = sshfs-$(SSHFS_VERSION).tar.xz\nSSHFS_SITE = https://github.com/libfuse/sshfs/releases/download/sshfs-$(SSHFS_VERSION)\nSSHFS_LICENSE = GPL-2.0\nSSHFS_LICENSE_FILES = COPYING\nSSHFS_DEPENDENCIES = \\\n\tlibglib2 libfuse3 openssh \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\t$(if $(BR2_ENABLE_LOCALE),,libiconv)\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/sshguard/Config.in",
    "content": "config BR2_PACKAGE_SSHGUARD\n\tbool \"sshguard\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_IPTABLES # runtime\n\thelp\n\t  sshguard protects hosts from brute-force attacks against SSH\n\t  and other services. It aggregates system logs and blocks\n\t  repeat offenders using one of several firewall backends,\n\t  including iptables, ipfw, and pf.\n\n\t  https://www.sshguard.net\n\ncomment \"sshguard needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/sshguard/S49sshguard",
    "content": "#!/bin/sh\n\nDAEMON=\"sshguard\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\tiptables -L sshguard > /dev/null 2>&1 || \\\n\t    (iptables -N sshguard && iptables -A INPUT -j sshguard)\n\tstart-stop-daemon -S -q -b -p /run/sshguard.pid \\\n\t\t-x /usr/sbin/sshguard -- -i /run/sshguard.pid\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/sshguard/sshguard.hash",
    "content": "# sha256 from https://sourceforge.net/projects/sshguard/files/sshguard/2.4.2/sshguard-2.4.2.sha256\nsha256  2770b776e5ea70a9bedfec4fd84d57400afa927f0f7522870d2dcbbe1ace37e8  sshguard-2.4.2.tar.gz\n# Locally calculated\nsha256  c3ae64f12153a1bc55bc234d09f40a08ab0e0149fffc972c0b7f02d5a12c1a5c  COPYING\n"
  },
  {
    "path": "package/sshguard/sshguard.mk",
    "content": "################################################################################\n#\n# sshguard\n#\n################################################################################\n\nSSHGUARD_VERSION = 2.4.2\nSSHGUARD_SITE = https://sourceforge.net/projects/sshguard/files/sshguard/$(SSHGUARD_VERSION)\nSSHGUARD_LICENSE = ISC, Public Domain (fnv hash), BSD-3-Clause (SimCList)\nSSHGUARD_LICENSE_FILES = COPYING\n\ndefine SSHGUARD_INSTALL_CONFIG\n\t$(INSTALL) -D -m 0644 $(@D)/examples/sshguard.conf.sample \\\n\t\t$(TARGET_DIR)/etc/sshguard.conf\n\t$(SED) '/^#BACKEND/c\\BACKEND=\"/usr/libexec/sshg-fw-iptables\"' \\\n\t\t-e '/^#FILES/c\\FILES=\"/var/log/messages\"' $(TARGET_DIR)/etc/sshguard.conf\nendef\nSSHGUARD_POST_INSTALL_TARGET_HOOKS += SSHGUARD_INSTALL_CONFIG\n\ndefine SSHGUARD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/sshguard/S49sshguard \\\n\t\t$(TARGET_DIR)/etc/init.d/S49sshguard\nendef\n\ndefine SSHGUARD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 $(@D)/examples/sshguard.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/sshguard.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sshpass/Config.in",
    "content": "config BR2_PACKAGE_SSHPASS\n\tbool \"sshpass\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Sshpass is a tool for non-interactivly performing\n\t  password authentication with SSH's so called\n\t  \"interactive keyboard password authentication\".\n\n\t  http://sshpass.sourceforge.net\n"
  },
  {
    "path": "package/sshpass/sshpass.hash",
    "content": "# Locally computed:\nsha256  c6324fcee608b99a58f9870157dfa754837f8c48be3df0f5e2f3accf145dee60  sshpass-1.06.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/sshpass/sshpass.mk",
    "content": "################################################################################\n#\n# sshpass\n#\n################################################################################\n\nSSHPASS_VERSION = 1.06\nSSHPASS_SITE = http://downloads.sourceforge.net/project/sshpass/sshpass/$(SSHPASS_VERSION)\nSSHPASS_LICENSE = GPL-2.0+\nSSHPASS_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sslh/0001-Makefile-fix-static-linking-with-pcre.patch",
    "content": "From 0d9e004d324cc030c173de04c40db51a0f22bb5c Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 15 Oct 2020 07:58:05 +0200\nSubject: [PATCH] Makefile: fix static linking with pcre\n\nStatic build with pcre is broken since version 1.19b and\nhttps://github.com/yrutschle/sslh/commit/cb90cc97ae64a445242e517847c6e44b7003eda4\nbecause -lpcre has been replaced by -lpcreposix which will result in\nthe following static build failure:\n\n/srv/storage/autobuild/run/instance-1/output-1/host/bin/mipsel-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os   -static -static -o echosrv echosrv.o probe.o common.o tls.o  -lpcreposix -lconfig -lcap\n/srv/storage/autobuild/run/instance-1/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mipsel-buildroot-linux-uclibc/8.3.0/../../../../mipsel-buildroot-linux-uclibc/bin/ld: /srv/storage/autobuild/run/instance-1/output-1/host/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpcreposix.a(libpcreposix_la-pcreposix.o): in function `regfree':\npcreposix.c:(.text+0x120): undefined reference to `pcre_free'\n\nSo append -lpcre after -lpcreposix\n\nFixes:\n - http://autobuild.buildroot.org/results/a601824fc0c205a6a940e0f9f079ce2c39840605\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/yrutschle/sslh/pull/280]\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 986cf1c..ecadc22 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -43,7 +43,7 @@ endif\n \n ifneq ($(strip $(USELIBPCRE)),)\n \tCPPFLAGS+=-DLIBPCRE\n-\tLIBS:=$(LIBS) -lpcreposix\n+\tLIBS:=$(LIBS) -lpcreposix -lpcre\n endif\n \n ifneq ($(strip $(USELIBCONFIG)),)\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/sslh/Config.in",
    "content": "config BR2_PACKAGE_SSLH\n\tbool \"sslh\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBCONFIG if BR2_PACKAGE_SYSTEMD\n\thelp\n\t  Applicative protocol multiplexer\n\n\t  http://www.rutschle.net/tech/sslh.shtml\n"
  },
  {
    "path": "package/sslh/S35sslh",
    "content": "#!/bin/sh\n#\n# Starts the SSLH server\n#\n\n# default setup : listen on port 8090 forward ssh traffic to\n# localhost:22 and http traffic to localhost:80\nSSLH_ARGS=\"--listen 0.0.0.0:8090 --ssh 127.0.0.1:22 --http 127.0.0.1:80\"\n\n# Allow a few customizations from a config file (overrides\n# default setup)\ntest -r /etc/default/sslh && . /etc/default/sslh\n\nstart() {\n\tSSLH_ARGS=\"$SSLH_ARGS --user root\"\n\techo -n \"Starting sslh: \"\n\tstart-stop-daemon -S -q -p /var/run/sslh.pid \\\n\t\t--exec /usr/sbin/sslh -- $SSLH_ARGS\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n\tprintf \"Stopping sslh: \"\n\tstart-stop-daemon -K -q -p /var/run/sslh.pid\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n  start)\n\tstart\n\t;;\n  stop)\n\tstop\n\t;;\n  restart|reload)\n\trestart\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/sslh/sslh.hash",
    "content": "# Locally calculated\nsha256  3bfe783726f82c1f5a4be630ddc494ebb08dbb69980662cd7ffdeb7bc9e1e706  sslh-v1.21c.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/sslh/sslh.mk",
    "content": "################################################################################\n#\n# sslh\n#\n################################################################################\n\nSSLH_VERSION = 1.21c\nSSLH_SOURCE = sslh-v$(SSLH_VERSION).tar.gz\nSSLH_SITE = http://www.rutschle.net/tech/sslh\nSSLH_LICENSE = GPL-2.0+\nSSLH_LICENSE_FILES = COPYING\n\nSSLH_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS)\n\nifeq ($(BR2_PACKAGE_LIBBSD),y)\nSSLH_DEPENDENCIES += libbsd\nSSLH_MAKE_OPTS += USELIBBSD=1\nelse\nSSLH_MAKE_OPTS += USELIBBSD=\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nSSLH_DEPENDENCIES += libcap\nSSLH_MAKE_OPTS += USELIBCAP=1\nelse\nSSLH_MAKE_OPTS += USELIBCAP=\nendif\n\nifeq ($(BR2_PACKAGE_LIBCONFIG),y)\nSSLH_DEPENDENCIES += libconfig\nSSLH_MAKE_OPTS += USELIBCONFIG=1\nelse\nSSLH_MAKE_OPTS += USELIBCONFIG=\nendif\n\nifeq ($(BR2_PACKAGE_PCRE),y)\nSSLH_DEPENDENCIES += pcre\nSSLH_MAKE_OPTS += USELIBPCRE=1\nelse\nSSLH_MAKE_OPTS += USELIBPCRE=\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nSSLH_DEPENDENCIES += systemd\nSSLH_MAKE_OPTS += USESYSTEMD=1\nelse\nSSLH_MAKE_OPTS += USESYSTEMD=\nendif\n\ndefine SSLH_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(SSLH_MAKE_OPTS) -C $(@D)\nendef\n\ndefine SSLH_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(SSLH_MAKE_OPTS) -C $(@D) \\\n\t\tDESTDIR=$(TARGET_DIR) install\nendef\n\ndefine SSLH_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/sslh/S35sslh $(TARGET_DIR)/etc/init.d/S35sslh\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch",
    "content": "From 31e4116ec355701e239cddcca720314523512a47 Mon Sep 17 00:00:00 2001\nFrom: Gustavo Zacarias <gustavo@zacarias.com.ar>\nDate: Sun, 21 Mar 2021 17:59:15 +0100\nSubject: [PATCH] add uclibc alias and musl\n\nMake linux-uclibcgnueabi an alias for linux-uclibceabi since it's\nwhat we use in buildroot toolchains.\nSlightly tweak musleabi to match the buildroot-used tuple.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n[Rebased on 1.20.7.1]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n data/ostable | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/data/ostable b/data/ostable\nindex 99c1f88..087dc6e 100644\n--- a/data/ostable\n+++ b/data/ostable\n@@ -14,10 +14,10 @@\n #   system part of the output of the GNU config.guess script.\n #\n # <Debian name>\t\t<GNU name>\t\t<config.guess regex>\n-eabi-uclibc-linux\tlinux-uclibceabi\tlinux[^-]*-uclibceabi\n+eabi-uclibc-linux\tlinux-uclibceabi\tlinux[^-]*-uclibc.*eabi\n base-uclibc-linux\tlinux-uclibc\t\tlinux[^-]*-uclibc\n eabihf-musl-linux\tlinux-musleabihf\tlinux[^-]*-musleabihf\n-base-musl-linux\t\tlinux-musl\t\tlinux[^-]*-musl\n+base-musl-linux\t\tlinux-musl\t\tlinux[^-]*-musl[^-]*\n eabihf-gnu-linux\tlinux-gnueabihf\t\tlinux[^-]*-gnueabihf\n eabi-gnu-linux\t\tlinux-gnueabi\t\tlinux[^-]*-gnueabi\n abin32-gnu-linux\tlinux-gnuabin32\t\tlinux[^-]*-gnuabin32\n@@ -38,6 +38,6 @@ base-bsd-netbsd\t\tnetbsd\t\t\tnetbsd[^-]*\n base-bsd-openbsd\topenbsd\t\t\topenbsd[^-]*\n base-sysv-aix\t\taix\t\t\taix[^-]*\n base-sysv-solaris\tsolaris\t\t\tsolaris[^-]*\n-eabi-uclibc-uclinux\tuclinux-uclibceabi\tuclinux[^-]*-uclibceabi\n+eabi-uclibc-uclinux\tuclinux-uclibceabi\tuclinux[^-]*-uclibc.*eabi\n base-uclibc-uclinux\tuclinux-uclibc\t\tuclinux[^-]*(-uclibc.*)?\n base-tos-mint\t\tmint\t\t\tmint[^-]*\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/start-stop-daemon/0002-just-warn-on-missing-arch.patch",
    "content": "From 7b20d3f012013edd4e3bb48541bd2bda10dac186 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Sun, 21 Mar 2021 18:03:28 +0100\nSubject: [PATCH] just warn on missing arch\n\nJust warn on missing arch\n\nSome architectures are not listed in dpkg list (e.g. mips64el, xtensa, sh4a).\nDon't break the build for that.\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n[Rebased on 1.20.7.1]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n m4/dpkg-arch.m4 | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/m4/dpkg-arch.m4 b/m4/dpkg-arch.m4\nindex 71044c9..1394531 100644\n--- a/m4/dpkg-arch.m4\n+++ b/m4/dpkg-arch.m4\n@@ -58,7 +58,7 @@ AC_DEFUN([DPKG_ARCHITECTURE], [\n   AC_MSG_CHECKING([dpkg architecture name])\n   _DPKG_ARCHITECTURE([DEB_HOST_ARCH], [dpkg_arch])\n   AS_IF([test \"x$dpkg_arch\" = \"x\"], [\n-    AC_MSG_ERROR([cannot determine host dpkg architecture])\n+    AC_MSG_WARN([cannot determine host dpkg architecture])\n   ], [\n     AC_MSG_RESULT([$dpkg_arch])\n   ])\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/start-stop-daemon/Config.in",
    "content": "config BR2_PACKAGE_START_STOP_DAEMON\n\tbool \"start-stop-daemon\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  start-stop-daemon is used to control the creation and\n\t  termination of system-level processes.\n\n\t  https://tracker.debian.org/pkg/dpkg\n"
  },
  {
    "path": "package/start-stop-daemon/start-stop-daemon.hash",
    "content": "# From https://snapshot.debian.org/archive/debian/20210109T083441Z/pool/main/d/dpkg/dpkg_1.20.7.1.dsc\nsha256  0aad2de687f797ef8ebdabc7bafd16dc1497f1ce23bd9146f9aa73f396a5636f  dpkg_1.20.7.1.tar.xz\n# Locally computed\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/start-stop-daemon/start-stop-daemon.mk",
    "content": "################################################################################\n#\n# start-stop-daemon\n#\n################################################################################\n\n# Debian start-stop-daemon is part of dpkg. Since start-stop-daemon is the only\n# interesting tool in it, we call the buildroot package start-stop-daemon.\n\nSTART_STOP_DAEMON_VERSION = 1.20.7.1\nSTART_STOP_DAEMON_SOURCE = dpkg_$(START_STOP_DAEMON_VERSION).tar.xz\nSTART_STOP_DAEMON_SITE = https://snapshot.debian.org/archive/debian/20210109T083441Z/pool/main/d/dpkg\nSTART_STOP_DAEMON_CONF_OPTS = \\\n\t--disable-dselect \\\n\t--disable-update-alternatives \\\n\t--disable-install-info \\\n\t--exec-prefix=/\nSTART_STOP_DAEMON_CONF_ENV = \\\n\tdpkg_cv_va_copy=yes \\\n\tdpkg_cv_c99_snprintf=yes \\\n\tDPKG_DEVEL_MODE=1\nSTART_STOP_DAEMON_DEPENDENCIES = host-pkgconf\n# Patching m4/dpkg-arch.m4\nSTART_STOP_DAEMON_AUTORECONF = YES\nSTART_STOP_DAEMON_LICENSE = GPL-2.0+\nSTART_STOP_DAEMON_LICENSE_FILES = COPYING\n\ndefine START_STOP_DAEMON_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/lib/compat\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/utils\nendef\n\ndefine START_STOP_DAEMON_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/utils/start-stop-daemon \\\n\t\t$(TARGET_DIR)/sbin/start-stop-daemon\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/startup-notification/Config.in",
    "content": "config BR2_PACKAGE_STARTUP_NOTIFICATION\n\tbool \"startup-notification\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  Startup-notification is a library used to monitor\n\t  application startup.\n\n\t  http://freedesktop.org/software/startup-notification/releases\n"
  },
  {
    "path": "package/startup-notification/startup-notification.hash",
    "content": "# Locally calculated\nsha256  c2fa09f9a49d8b319e79638e49e967c682df8726006e03059b1ffca5ab82099c  startup-notification-0.9.tar.gz\nsha256  29935974beae046f50da806b5f4e54532401dd7bcfbc696a0b645f4cbcce9dbb  COPYING\n"
  },
  {
    "path": "package/startup-notification/startup-notification.mk",
    "content": "################################################################################\n#\n# startup-notification\n#\n################################################################################\n\nSTARTUP_NOTIFICATION_VERSION = 0.9\nSTARTUP_NOTIFICATION_SITE = http://freedesktop.org/software/startup-notification/releases\nSTARTUP_NOTIFICATION_INSTALL_STAGING = YES\nSTARTUP_NOTIFICATION_DEPENDENCIES = xlib_libX11\nSTARTUP_NOTIFICATION_CONF_ENV = lf_cv_sane_realloc=yes\nSTARTUP_NOTIFICATION_CONF_OPTS = --with-x \\\n\t--x-includes=\"$(STAGING_DIR)/usr/include/X11\" \\\n\t--x-libraries=\"$(STAGING_DIR)/usr/lib\"\nSTARTUP_NOTIFICATION_LICENSE = LGPL-2.0\nSTARTUP_NOTIFICATION_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/statserial/0001-ncurses-link.patch",
    "content": "Link to libncurses instead of the legacy libcurses.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura statserial-1.1.orig/Makefile statserial-1.1/Makefile\n--- statserial-1.1.orig/Makefile\t2014-07-04 12:47:41.279440415 -0300\n+++ statserial-1.1/Makefile\t2014-07-04 12:47:47.948665740 -0300\n@@ -10,7 +10,7 @@\n LDFLAGS = -s -N\n \n statserial:\tstatserial.o\n-\t$(LD) $(LDFLAGS) -o statserial statserial.o -lcurses\n+\t$(LD) $(LDFLAGS) -o statserial statserial.o -lncurses\n \n statserial.o: statserial.c\n \t$(CC) $(CFLAGS) -c statserial.c\n"
  },
  {
    "path": "package/statserial/Config.in",
    "content": "config BR2_PACKAGE_STATSERIAL\n\tbool \"statserial\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Displays a table of the signals on a standard\n\t  9-pin or 25-pin serial port, and indicates the\n\t  status of the handshaking lines. It can be\n\t  useful for debugging problems with serial\n\t  ports or modems.\n\n\t  https://sites.google.com/site/tranter/software\n"
  },
  {
    "path": "package/statserial/statserial.hash",
    "content": "# Locally calculated\nsha256  40cf3bd506852942aa98f468c90ed4ea66dbd343b93efacd40d617b55caf3967  statserial-1.1.tar.gz\nsha256  91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad  COPYING\n"
  },
  {
    "path": "package/statserial/statserial.mk",
    "content": "################################################################################\n#\n# statserial\n#\n################################################################################\n\nSTATSERIAL_VERSION = 1.1\nSTATSERIAL_SITE = http://www.ibiblio.org/pub/Linux/system/serial\nSTATSERIAL_DEPENDENCIES = ncurses\nSTATSERIAL_LICENSE = GPL-2.0+\nSTATSERIAL_LICENSE_FILES = COPYING\n\ndefine STATSERIAL_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" LD=\"$(TARGET_CC)\" CFLAGS=\"$(TARGET_CFLAGS)\" LDFLAGS=\"$(TARGET_LDFLAGS)\" -C $(@D)\nendef\n\ndefine STATSERIAL_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/statserial $(TARGET_DIR)/usr/bin/statserial\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/stella/Config.in",
    "content": "config BR2_PACKAGE_STELLA\n\tbool \"stella\"\n\tdepends on !BR2_STATIC_LIBS # sdl2\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_6 # C++14\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr\n\tselect BR2_PACKAGE_SDL2\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Stella is a multi-platform Atari 2600 VCS emulator.\n\n\t  https://stella-emu.github.io/\n\ncomment \"stella needs a toolchain w/ dynamic library, C++, threads, gcc >= 6\"\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_6\n\ncomment \"stella needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/stella/stella.hash",
    "content": "# Locally computed:\nsha256  0346900e9ba4b6d532b72d956adc5078502a9bd6bbc1648bb3dd68f5ffd4859b  stella-6.4-src.tar.xz\nsha256  d207ee9e563fdd062582df8cbb6c8303b9879bd107692c0db2a32477e47dfa35  Copyright.txt\nsha256  58530d09b6fcb91ae27071be0081af90e6c2d7fdf991d34a29e234a2a5e75455  License.txt\n"
  },
  {
    "path": "package/stella/stella.mk",
    "content": "################################################################################\n#\n# stella\n#\n################################################################################\n\nSTELLA_VERSION = 6.4\nSTELLA_SOURCE = stella-$(STELLA_VERSION)-src.tar.xz\nSTELLA_SITE = https://github.com/stella-emu/stella/releases/download/$(STELLA_VERSION)\nSTELLA_LICENSE = GPL-2.0+\nSTELLA_LICENSE_FILES = Copyright.txt License.txt\n\nSTELLA_DEPENDENCIES = sdl2 libpng zlib\n\nSTELLA_CONF_OPTS = \\\n\t--host=$(GNU_TARGET_NAME) \\\n\t--prefix=/usr \\\n\t--with-sdl-prefix=$(STAGING_DIR)/usr\n\n# The configure script is not autoconf based, so we use the\n# generic-package infrastructure\ndefine STELLA_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(TARGET_CONFIGURE_ARGS) \\\n\t\t./configure $(STELLA_CONF_OPTS) \\\n\t)\nendef\n\ndefine STELLA_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine STELLA_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=\"$(TARGET_DIR)\" -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/stellarium/Config.in",
    "content": "config BR2_PACKAGE_STELLARIUM\n\tbool \"stellarium\"\n\tdepends on BR2_PACKAGE_QT5\n\tdepends on BR2_PACKAGE_QT5_GL_AVAILABLE\n\tdepends on BR2_PACKAGE_HAS_LIBGL # does not support OpenGL ES\n\tselect BR2_PACKAGE_QT5BASE_CONCURRENT\n\tselect BR2_PACKAGE_QT5BASE_GUI\n\tselect BR2_PACKAGE_QT5BASE_NETWORK\n\tselect BR2_PACKAGE_QT5BASE_OPENGL\n\tselect BR2_PACKAGE_QT5BASE_PRINTSUPPORT\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\tselect BR2_PACKAGE_QT5LOCATION\n\tselect BR2_PACKAGE_QT5MULTIMEDIA\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Stellarium is a free open source planetarium for your\n\t  computer. It shows a realistic sky in 3D, just like what\n\t  you see with the naked eye, binoculars or a telescope.\n\n\t  https://stellarium.org\n\ncomment \"stellarium needs Qt5 and an OpenGL provider\"\n\tdepends on !BR2_PACKAGE_QT5 || !BR2_PACKAGE_HAS_LIBGL\n"
  },
  {
    "path": "package/stellarium/stellarium.hash",
    "content": "# From https://github.com/Stellarium/stellarium/releases\nsha1  e61b66eae54888cf90f6dab7b49bc4ca6d9d941b   stellarium-0.21.2.tar.gz\nsha256  e588b66a173834f74a6462f5219ce4d38e8f87405b932267f6f1d2d4dbff4a82  stellarium-0.21.2.tar.gz\n# Locally computed\nsha256  3aeeb5bb98bf7041ab82cffe15efa28ac58ee2bdf162b71301f5c192be631259  COPYING\n"
  },
  {
    "path": "package/stellarium/stellarium.mk",
    "content": "################################################################################\n#\n# stellarium\n#\n################################################################################\n\nSTELLARIUM_VERSION = 0.21.2\nSTELLARIUM_SITE = https://github.com/Stellarium/stellarium/releases/download/v$(STELLARIUM_VERSION)\nSTELLARIUM_LICENSE = GPL-2.0+\nSTELLARIUM_LICENSE_FILES = COPYING\nSTELLARIUM_DEPENDENCIES = \\\n\tqt5base \\\n\tqt5location \\\n\tqt5multimedia \\\n\tzlib\nSTELLARIUM_CONF_OPTS = \\\n\t-DENABLE_MEDIA=ON \\\n\t-DENABLE_NLS=OFF \\\n\t-DUSE_SYSTEM_ZLIB=ON\n\nifeq ($(BR2_PACKAGE_QT5SCRIPT),y)\nSTELLARIUM_DEPENDENCIES += qt5script\nSTELLARIUM_CONF_OPTS += -DENABLE_SCRIPTING=ON\nelse\nSTELLARIUM_CONF_OPTS += -DENABLE_SCRIPTING=OFF\nendif\n\nifeq ($(BR2_PACKAGE_QT5SERIALPORT),y)\nSTELLARIUM_DEPENDENCIES += qt5serialport\nifeq ($(BR2_PACKAGE_GPSD),y)\nSTELLARIUM_DEPENDENCIES += gpsd\nendif\nSTELLARIUM_CONF_OPTS += \\\n\t-DENABLE_GPS=ON \\\n\t-DUSE_PLUGIN_TELESCOPECONTROL=ON\nelse\nSTELLARIUM_CONF_OPTS += \\\n\t-DENABLE_GPS=OFF \\\n\t-DUSE_PLUGIN_TELESCOPECONTROL=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/stm32flash/Config.in",
    "content": "config BR2_PACKAGE_STM32FLASH\n\tbool \"stm32flash\"\n\thelp\n\t  Open source cross platform flash program for the STM32 ARM\n\t  microcontrollers using the built-in ST serial bootloader\n\t  over UART or I2C.\n\n\t  http://sourceforge.net/projects/stm32flash/\n"
  },
  {
    "path": "package/stm32flash/stm32flash.hash",
    "content": "# Locally computed:\nsha256  dec1a81a3ba85a61dfa39ec12e391ea16a8d431470f41d34413f7ab183da46ef  stm32flash-v0.6-br1.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  gpl-2.0.txt\n"
  },
  {
    "path": "package/stm32flash/stm32flash.mk",
    "content": "################################################################################\n#\n# stm32flash\n#\n################################################################################\n\nSTM32FLASH_VERSION = v0.6\nSTM32FLASH_SITE = git://git.code.sf.net/p/stm32flash/code\nSTM32FLASH_LICENSE = GPL-2.0+\nSTM32FLASH_LICENSE_FILES = gpl-2.0.txt\n\ndefine STM32FLASH_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine STM32FLASH_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=\"$(TARGET_DIR)\" PREFIX=\"/usr\" \\\n\t\t-C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/strace/0001-Avoid-relying-on-presence-of-ipx-h.patch",
    "content": "From 568ee52f885c463e7a283240f5ef6bbf9351bdb3 Mon Sep 17 00:00:00 2001\nFrom: Eugene Syromyatnikov <evgsyr@gmail.com>\nDate: Wed, 3 Nov 2021 00:48:59 +0100\nSubject: [PATCH] Avoid relying on presence of ipx.h\n\nAfter Linux has broken UAPI in commit v5.15-rc1~157^2~207, it is well\npossible that neither kernel nor libc (such as musl, for example)\nprovides an IPX-related header.  Avoid relying on its presence\nin the strace's code and conditionalise the relevant checks in the tests.\n\n* configure.ac (AC_CHECK_HEADERS): Add linux/ipx.h.\n* src/net.c: Remove <netipx/ipx.h>/<linux/ipx.h> includes.\n* src/sockaddr.c: Likewise.\n(IPX_NODE_LEN): New macro constant.\n(struct sockaddr_ipx): New type definition.\n* src/xlat/sock_ipx_options.in (IPX_TYPE): Provide a fallback value.\n* tests/net-sockaddr.c [!HAVE_LINUX_IPX_H]: Do not include\n<linux/ipx.h>.\n[!HAVE_LINUX_IPX_H && HAVE_NETIPX_IPX_H]: Include <netipx/ipx.h>.\n[!(HAVE_LINUX_IPX_H || defined HAVE_NETIPX_IPX_H)] (check_ipx): Do not\ndefine.\n(main) [!(HAVE_LINUX_IPX_H || defined HAVE_NETIPX_IPX_H)]: Do not call\ncheck_ipx.\n\nCloses: https://github.com/strace/strace/issues/201\n\n[Retrieved (and backported) from:\nhttps://github.com/strace/strace/commit/568ee52f885c463e7a283240f5ef6bbf9351bdb3]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac                 |  1 +\n src/net.c                    |  5 -----\n src/sockaddr.c               | 16 ++++++++++------\n src/xlat/sock_ipx_options.in |  2 +-\n tests/net-sockaddr.c         | 10 +++++++++-\n 5 files changed, 21 insertions(+), 13 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex b5053b7aff..c074a70c01 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -424,6 +424,7 @@ AC_CHECK_HEADERS(m4_normalize([\n \telf.h\n \tgcov.h\n \ticonv.h\n+\tlinux/ipx.h\n \tmqueue.h\n \tnetinet/sctp.h\n \tnetipx/ipx.h\ndiff --git a/src/net.c b/src/net.c\nindex bc2b1ad048..42696bfe89 100644\n--- a/src/net.c\n+++ b/src/net.c\n@@ -28,11 +28,6 @@\n #include <arpa/inet.h>\n #include <net/if.h>\n #include <asm/types.h>\n-#ifdef HAVE_NETIPX_IPX_H\n-# include <netipx/ipx.h>\n-#else\n-# include <linux/ipx.h>\n-#endif\n \n #include <linux/ip_vs.h>\n #include \"netlink.h\"\ndiff --git a/src/sockaddr.c b/src/sockaddr.c\nindex bdd5a5bb7a..27fda59f26 100644\n--- a/src/sockaddr.c\n+++ b/src/sockaddr.c\n@@ -24,12 +24,6 @@\n #include <linux/if_ether.h>\n #include <linux/x25.h>\n \n-#ifdef HAVE_NETIPX_IPX_H\n-# include <netipx/ipx.h>\n-#else\n-# include <linux/ipx.h>\n-#endif\n-\n #include \"xlat/addrfams.h\"\n #include \"xlat/arp_hardware_types.h\"\n #include \"xlat/ethernet_protocols.h\"\n@@ -42,6 +36,16 @@\n \n #define SIZEOF_SA_FAMILY sizeof_field(struct sockaddr, sa_family)\n \n+#define IPX_NODE_LEN\t6\n+struct sockaddr_ipx {\n+\tuint16_t sipx_family;\n+\tuint16_t sipx_port;\n+\tuint32_t sipx_network;\n+\tunsigned char sipx_node[IPX_NODE_LEN];\n+\tuint8_t sipx_type;\n+\tunsigned char sipx_zero;\n+};\n+\n static void\n print_sockaddr_data_un(struct tcb *tcp, const void *const buf, const int addrlen)\n {\ndiff --git a/src/xlat/sock_ipx_options.in b/src/xlat/sock_ipx_options.in\nindex eba97fd719..b09be117e4 100644\n--- a/src/xlat/sock_ipx_options.in\n+++ b/src/xlat/sock_ipx_options.in\n@@ -1 +1 @@\n-IPX_TYPE\n+IPX_TYPE\t1\ndiff --git a/tests/net-sockaddr.c b/tests/net-sockaddr.c\nindex f1f9b01cdd..c8049fd68b 100644\n--- a/tests/net-sockaddr.c\n+++ b/tests/net-sockaddr.c\n@@ -24,7 +24,11 @@\n #include <linux/if_ether.h>\n #include <linux/if_packet.h>\n #include <linux/x25.h>\n-#include <linux/ipx.h>\n+#if defined HAVE_LINUX_IPX_H\n+# include <linux/ipx.h>\n+#elif defined HAVE_NETIPX_IPX_H\n+# include <netipx/ipx.h>\n+#endif\n #ifdef HAVE_BLUETOOTH_BLUETOOTH_H\n # include <bluetooth/bluetooth.h>\n # include <bluetooth/hci.h>\n@@ -269,6 +273,7 @@ check_in6(void)\n \tprintf(\"connect(-1, %p, %u) = %d EBADF (%m)\\n\", in6, len, ret);\n }\n \n+#if defined HAVE_LINUX_IPX_H || defined HAVE_NETIPX_IPX_H\n static void\n check_ipx(void)\n {\n@@ -295,6 +300,7 @@ check_ipx(void)\n \t       c_ipx.sipx_node[4], c_ipx.sipx_node[5],\n \t       c_ipx.sipx_type, len, ret);\n }\n+#endif /* HAVE_LINUX_IPX_H || defined HAVE_NETIPX_IPX_H */\n \n /* for a bit more compact AX.25 address definitions */\n #define AX25_ADDR(c_, s_) \\\n@@ -773,7 +779,9 @@ main(void)\n \tcheck_un();\n \tcheck_in();\n \tcheck_in6();\n+#if defined HAVE_LINUX_IPX_H || defined HAVE_NETIPX_IPX_H\n \tcheck_ipx();\n+#endif\n \tcheck_ax25();\n \tcheck_x25();\n \tcheck_nl();\n"
  },
  {
    "path": "package/strace/Config.in",
    "content": "config BR2_PACKAGE_STRACE\n\tbool \"strace\"\n\t# needs at least kernel headers 4.0 on nios2\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 || !BR2_nios2\n\t# needs at least kernel headers 5.0 on xtensa\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 || !BR2_xtensa\n\tdepends on !BR2_nds32 && !BR2_RISCV_32\n\thelp\n\t  A useful diagnostic, instructional, and debugging tool.\n\t  Allows you to track what system calls a program makes\n\t  while it is running.\n\n\t  If you want 'strace -k' to work, make sure to enable the\n\t  'libunwind' package.\n\n\t  https://strace.io\n\ncomment \"strace needs a toolchain w/ headers >= 4.0 on nios2\"\n\tdepends on BR2_nios2\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0\n\ncomment \"strace needs a toolchain w/ headers >= 5.0 on xtensa\"\n\tdepends on BR2_xtensa\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0\n"
  },
  {
    "path": "package/strace/strace.hash",
    "content": "# Locally calculated after checking signature with RSA key 0xA8041FA839E16E36\n# https://strace.io/files/5.14/strace-5.14.tar.xz.asc\nsha256  901bee6db5e17debad4530dd9ffb4dc9a96c4a656edbe1c3141b7cb307b11e73  strace-5.14.tar.xz\nsha256  f847d5ef26ad1151ca63bb88536b23a4cac5040c67917f3d5ee7ea1316e2b736  COPYING\nsha256  7c379436436a562834aa7d2f5dcae1f80a25230fa74201046ca1fba4367d39aa  LGPL-2.1-or-later\n"
  },
  {
    "path": "package/strace/strace.mk",
    "content": "################################################################################\n#\n# strace\n#\n################################################################################\n\nSTRACE_VERSION = 5.14\nSTRACE_SOURCE = strace-$(STRACE_VERSION).tar.xz\nSTRACE_SITE = https://strace.io/files/$(STRACE_VERSION)\nSTRACE_LICENSE = LGPL-2.1+\nSTRACE_LICENSE_FILES = COPYING LGPL-2.1-or-later\nSTRACE_CPE_ID_VENDOR = strace_project\n# We're patching configure.ac\nSTRACE_AUTORECONF = YES\nSTRACE_CONF_OPTS = --enable-mpers=no\n\nifeq ($(BR2_PACKAGE_LIBUNWIND),y)\nSTRACE_DEPENDENCIES += libunwind\nSTRACE_CONF_OPTS += --with-libunwind\nelse\nSTRACE_CONF_OPTS += --without-libunwind\nendif\n\n# Demangling symbols in stack trace needs libunwind and libiberty.\nifeq ($(BR2_PACKAGE_BINUTILS)$(BR2_PACKAGE_LIBUNWIND),yy)\nSTRACE_DEPENDENCIES += binutils\nSTRACE_CONF_OPTS += --with-libiberty=check\nelse\nSTRACE_CONF_OPTS += --without-libiberty\nendif\n\nifeq ($(BR2_PACKAGE_PERL),)\ndefine STRACE_REMOVE_STRACE_GRAPH\n\trm -f $(TARGET_DIR)/usr/bin/strace-graph\nendef\n\nSTRACE_POST_INSTALL_TARGET_HOOKS += STRACE_REMOVE_STRACE_GRAPH\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/streameye/Config.in",
    "content": "config BR2_PACKAGE_STREAMEYE\n\tbool \"streameye\"\n\n"
  },
  {
    "path": "package/streameye/streameye.mk",
    "content": "################################################################################\n#\n# streameye\n#\n################################################################################\n\nSTREAMEYE_VERSION = 502a63bb14f8105a3daa9f0940b237300fe76d6f\nSTREAMEYE_SITE = $(call github,ccrisan,streameye,$(STREAMEYE_VERSION))\nSTREAMEYE_LICENSE = GPLv3\n\ndefine STREAMEYE_BUILD_CMDS\n    make CC=\"$(TARGET_CC)\" -C \"$(@D)\"\nendef\n\ndefine STREAMEYE_INSTALL_TARGET_CMDS\n    cp $(@D)/streameye $(TARGET_DIR)/usr/bin/\n    cp $(@D)/extras/raspimjpeg.py $(TARGET_DIR)/usr/bin/\nendef\n\n$(eval $(generic-package))\n\n"
  },
  {
    "path": "package/stress/Config.in",
    "content": "config BR2_PACKAGE_STRESS\n\tbool \"stress\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  A deliberately simple workload generator for POSIX systems.\n\t  It imposes a configurable amount of CPU, memory, I/O, and\n\t  disk stress on the system.\n\n\t  http://people.seas.harvard.edu/~apw/stress/\n"
  },
  {
    "path": "package/stress/stress.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  057e4fc2a7706411e1014bf172e4f94b63a12f18412378fca8684ca92408825b  stress-1.0.4.tar.gz\n# Locally computed\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/stress/stress.mk",
    "content": "################################################################################\n#\n# stress\n#\n################################################################################\n\nSTRESS_VERSION = 1.0.4\nSTRESS_SITE = http://people.seas.harvard.edu/~apw/stress\nSTRESS_LICENSE = GPL-2.0+\nSTRESS_LICENSE_FILES = COPYING\n\n# Stress is linked statically if the --enable-static is specified.\n# However, this option is always specified in the global\n# SHARED_STATIC_LIBS_OPTS to tell packages to build static libraries,\n# if supported.\n#\n# If the BR2_STATIC_LIBS is not defined, we have to specify\n# --disable-static explicitly to get stress linked dynamically.\n#\n# Also, disable documentation by undefining makeinfo\nSTRESS_CONF_OPTS = \\\n\t$(if $(BR2_STATIC_LIBS),,--disable-static) \\\n\tMAKEINFO=:\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/stress-ng/Config.in",
    "content": "config BR2_PACKAGE_STRESS_NG\n\tbool \"stress-ng\"\n\tdepends on BR2_USE_MMU # fork()\n\t# perf.c needs PERF_COUNT_HW_REF_CPU_CYCLES\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3\n\t# fenv.h lacks FE_INVALID, FE_OVERFLOW & FE_UNDERFLOW on nios2 and ARC\n\tdepends on !BR2_nios2\n\tdepends on !BR2_arc\n\thelp\n\t  stress-ng will stress test a computer system in various\n\t  selectable ways. It was designed to exercise various physical\n\t  subsystems of a computer as well as the various operating\n\t  system kernel interfaces.\n\n\t  https://github.com/ColinIanKing/stress-ng\n\ncomment \"stress-ng needs a toolchain w/ headers >= 3.3\"\n\tdepends on !BR2_nios2 && !BR2_arc\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3\n"
  },
  {
    "path": "package/stress-ng/stress-ng.hash",
    "content": "# Locally calculated\nsha256  1973b142b9b731952dd4ce77c3618a7e3c62494587e23bf37c8683503d048f68  stress-ng-0.13.01.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/stress-ng/stress-ng.mk",
    "content": "################################################################################\n#\n# stress-ng\n#\n################################################################################\n\nSTRESS_NG_VERSION = 0.13.01\nSTRESS_NG_SITE = $(call github,ColinIanKing,stress-ng,V$(STRESS_NG_VERSION))\nSTRESS_NG_LICENSE = GPL-2.0+\nSTRESS_NG_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_LIBBSD),y)\nSTRESS_NG_DEPENDENCIES += libbsd\nendif\n\nifeq ($(BR2_PACKAGE_KEYUTILS),y)\nSTRESS_NG_DEPENDENCIES += keyutils\nendif\n\ndefine STRESS_NG_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\n# Don't use make install otherwise stress-ng will be rebuild without\n# required link libraries if any. Furthermore, using INSTALL allow to\n# set the file permission correcly on the target.\ndefine STRESS_NG_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/stress-ng $(TARGET_DIR)/usr/bin/stress-ng\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/strongswan/Config.in",
    "content": "comment \"strongswan needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nmenuconfig BR2_PACKAGE_STRONGSWAN\n\tbool \"strongswan\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  strongSwan is an OpenSource IPsec implementation for the\n\t  Linux operating system. It is based on the discontinued\n\t  FreeS/WAN project and the X.509 patch.\n\n\t  The focus is on:\n\t   - simplicity of configuration\n\t   - strong encryption and authentication methods\n\t   - powerful IPsec policies supporting large and complex\n\t     VPN networks\n\n\t  strongSwan provide many plugins. Only a few are presented\n\t  here.\n\n\t  http://www.strongswan.org/\n\nif BR2_PACKAGE_STRONGSWAN\n\nchoice\n\tprompt \"Cryptographic backend\"\n\tdefault BR2_PACKAGE_STRONGSWAN_GMP\n\nconfig BR2_PACKAGE_STRONGSWAN_BOTAN\n\tbool \"botan\"\n\tdepends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\tselect BR2_PACKAGE_BOTAN\n\ncomment \"botan backend needs a toolchain w/ C++, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS\n\ncomment \"botan backend needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nconfig BR2_PACKAGE_STRONGSWAN_OPENSSL\n\tbool \"OpenSSL\"\n\tselect BR2_PACKAGE_OPENSSL\n\nconfig BR2_PACKAGE_STRONGSWAN_GCRYPT\n\tbool \"libgcrypt\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt\n\tselect BR2_PACKAGE_LIBGCRYPT\n\nconfig BR2_PACKAGE_STRONGSWAN_GMP\n\tbool \"GNU MP (libgmp)\"\n\tselect BR2_PACKAGE_GMP\n\nconfig BR2_PACKAGE_STRONGSWAN_WOLFSSL\n\tbool \"wolfssl\"\n\tselect BR2_PACKAGE_WOLFSSL\n\nendchoice\n\nconfig BR2_PACKAGE_STRONGSWAN_AF_ALG\n\tbool \"Enable AF_ALG crypto interface to Linux Crypto API\"\n\nconfig BR2_PACKAGE_STRONGSWAN_CURL\n\tbool \"Enable CURL fetcher plugin to fetch files via libcurl\"\n\tselect BR2_PACKAGE_LIBCURL\n\nconfig BR2_PACKAGE_STRONGSWAN_MD4\n\tbool \"Enable MD4 hash algorithm\"\n\nconfig BR2_PACKAGE_STRONGSWAN_CHARON\n\tbool \"Enable the IKEv1/IKEv2 keying daemon charon\"\n\tdefault y\n\nif BR2_PACKAGE_STRONGSWAN_CHARON\n\nconfig BR2_PACKAGE_STRONGSWAN_TNCCS_11\n\tbool \"Enable TNCCS 1.1 protocol module\"\n\tselect BR2_PACKAGE_LIBXML2\n\nconfig BR2_PACKAGE_STRONGSWAN_TNCCS_20\n\tbool \"Enable TNCCS 2.0 protocol module\"\n\nconfig BR2_PACKAGE_STRONGSWAN_TNCCS_DYNAMIC\n\tbool \"Enable dynamic TNCCS protocol discovery module\"\n\nconfig BR2_PACKAGE_STRONGSWAN_SYSTIME_FIX\n\tbool \"Enable systime-fix plugin\"\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_SIM\n\tbool \"Enable EAP-SIM\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_SIM_FILE\n\tbool \"Enable EAP-SIM file backend\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\tselect BR2_PACKAGE_STRONGSWAN_EAP_SIM\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_SIM_PCSC\n\tbool \"Enable EAP-SIM smart card backend\"\n\tdepends on !BR2_STATIC_LIBS # pcsc-lite\n\tselect BR2_PACKAGE_PCSC_LITE\n\tselect BR2_PACKAGE_STRONGSWAN_EAP_SIM\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_AKA\n\tbool \"Enable EAP-AKA\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_AKA_3GPP2\n\tbool \"Enable EAP-AKA 3GPP2 algorithms\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\tselect BR2_PACKAGE_GMP\n\tselect BR2_PACKAGE_STRONGSWAN_EAP_AKA\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_SQL\n\tbool \"Enable EAP-SIM/AKA backend based on a triplet/quintuplet SQL database\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\tselect BR2_PACKAGE_STRONGSWAN_EAP_AKA\n\tselect BR2_PACKAGE_STRONGSWAN_EAP_SIM\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_PSEUDONYM\n\tbool \"Enable EAP-SIM/AKA pseudonym storage\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\tselect BR2_PACKAGE_STRONGSWAN_EAP_AKA\n\tselect BR2_PACKAGE_STRONGSWAN_EAP_SIM\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_REAUTH\n\tbool \"Enable EAP-SIM/AKA reauthentication data storage\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\tselect BR2_PACKAGE_STRONGSWAN_EAP_AKA\n\tselect BR2_PACKAGE_STRONGSWAN_EAP_SIM\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_IDENTITY\n\tbool \"Enable EAP-Identity\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_MD5\n\tbool \"Enable EAP-MD5\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_GTC\n\tbool \"Enable EAP-GDC\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_MSCHAPV2\n\tbool \"Enable EAP-MSCHAPv2\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\tselect BR2_PACKAGE_STRONGSWAN_MD4\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_PEAP\n\tbool \"Enable EAP-PEAP\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_RADIUS\n\tbool \"Enable EAP-RADIUS\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_TLS\n\tbool \"Enable EAP-TLS\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_TTLS\n\tbool \"Enable EAP-TTLS\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_DYNAMIC\n\tbool \"Enable EAP-DYNAMIC\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\nconfig BR2_PACKAGE_STRONGSWAN_EAP_TNC\n\tbool \"Enable EAP-TNC\"\n\tdefault y if BR2_PACKAGE_STRONGSWAN_EAP # legacy\n\nconfig BR2_PACKAGE_STRONGSWAN_UNITY\n\tbool \"Enables Cisco Unity extension plugin\"\n\nconfig BR2_PACKAGE_STRONGSWAN_STROKE\n\tbool \"Enable charons stroke configuration backend\"\n\tdefault y\n\nconfig BR2_PACKAGE_STRONGSWAN_SQL\n\tbool \"Enable SQL database configuration backend\"\n\tdepends on BR2_PACKAGE_SQLITE || BR2_PACKAGE_MYSQL\n\nendif\n\nconfig BR2_PACKAGE_STRONGSWAN_PKI\n\tbool \"Enable pki certificate utility\"\n\tdefault y\n\nconfig BR2_PACKAGE_STRONGSWAN_SCEP\n\tbool \"Enable SCEP client tool\"\n\nconfig BR2_PACKAGE_STRONGSWAN_SCRIPTS\n\tbool \"Enable additional utilities (found in scripts directory)\"\n\tdefault y\n\tdepends on BR2_PACKAGE_STRONGSWAN_CHARON\n\nconfig BR2_PACKAGE_STRONGSWAN_VICI\n\tbool \"Enable vici/swanctl\"\n\tdefault y\n\tdepends on BR2_PACKAGE_STRONGSWAN_CHARON\n\nendif\n"
  },
  {
    "path": "package/strongswan/strongswan.hash",
    "content": "# From http://download.strongswan.org/strongswan-5.9.4.tar.bz2.md5\nmd5  9c387eb77f0159fdefbcf7e81c905c35  strongswan-5.9.4.tar.bz2\n# Calculated based on the hash above\nsha256  45fdf1a4c2af086d8ff5b76fd7b21d3b6f0890f365f83bf4c9a75dda26887518  strongswan-5.9.4.tar.bz2\n# Locally calculated\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  2292e21797754548dccdef9eef6aee7584e552fbd890fa914e1de8d3577d23f0  LICENSE\n"
  },
  {
    "path": "package/strongswan/strongswan.mk",
    "content": "################################################################################\n#\n# strongswan\n#\n################################################################################\n\nSTRONGSWAN_VERSION = 5.9.4\nSTRONGSWAN_SOURCE = strongswan-$(STRONGSWAN_VERSION).tar.bz2\nSTRONGSWAN_SITE = http://download.strongswan.org\nSTRONGSWAN_LICENSE = GPL-2.0+\nSTRONGSWAN_LICENSE_FILES = COPYING LICENSE\nSTRONGSWAN_CPE_ID_VENDOR = strongswan\nSTRONGSWAN_DEPENDENCIES = host-pkgconf\nSTRONGSWAN_INSTALL_STAGING = YES\nSTRONGSWAN_CONF_OPTS += \\\n\t--without-lib-prefix \\\n\t--enable-led \\\n\t--enable-pkcs11=yes \\\n\t--enable-kernel-netlink=yes \\\n\t--enable-socket-default=yes \\\n\t--enable-botan=$(if $(BR2_PACKAGE_STRONGSWAN_BOTAN),yes,no) \\\n\t--enable-openssl=$(if $(BR2_PACKAGE_STRONGSWAN_OPENSSL),yes,no) \\\n\t--enable-gcrypt=$(if $(BR2_PACKAGE_STRONGSWAN_GCRYPT),yes,no) \\\n\t--enable-gmp=$(if $(BR2_PACKAGE_STRONGSWAN_GMP),yes,no) \\\n\t--enable-af-alg=$(if $(BR2_PACKAGE_STRONGSWAN_AF_ALG),yes,no) \\\n\t--enable-curl=$(if $(BR2_PACKAGE_STRONGSWAN_CURL),yes,no) \\\n\t--enable-charon=$(if $(BR2_PACKAGE_STRONGSWAN_CHARON),yes,no) \\\n\t--enable-tnccs-11=$(if $(BR2_PACKAGE_STRONGSWAN_TNCCS_11),yes,no) \\\n\t--enable-tnccs-20=$(if $(BR2_PACKAGE_STRONGSWAN_TNCCS_20),yes,no) \\\n\t--enable-tnccs-dynamic=$(if $(BR2_PACKAGE_STRONGSWAN_TNCCS_DYNAMIC),yes,no) \\\n\t--enable-eap-sim-pcsc=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIM_PCSC),yes,no) \\\n\t--enable-unity=$(if $(BR2_PACKAGE_STRONGSWAN_UNITY),yes,no) \\\n\t--enable-stroke=$(if $(BR2_PACKAGE_STRONGSWAN_STROKE),yes,no) \\\n\t--enable-sql=$(if $(BR2_PACKAGE_STRONGSWAN_SQL),yes,no) \\\n\t--enable-pki=$(if $(BR2_PACKAGE_STRONGSWAN_PKI),yes,no) \\\n\t--enable-scepclient=$(if $(BR2_PACKAGE_STRONGSWAN_SCEP),yes,no) \\\n\t--enable-scripts=$(if $(BR2_PACKAGE_STRONGSWAN_SCRIPTS),yes,no) \\\n\t--enable-vici=$(if $(BR2_PACKAGE_STRONGSWAN_VICI),yes,no) \\\n\t--enable-swanctl=$(if $(BR2_PACKAGE_STRONGSWAN_VICI),yes,no) \\\n\t--enable-wolfssl=$(if $(BR2_PACKAGE_STRONGSWAN_WOLFSSL),yes,no) \\\n\t--enable-md4=$(if $(BR2_PACKAGE_STRONGSWAN_MD4),yes,no) \\\n\t--enable-systime-fix=$(if $(BR2_PACKAGE_STRONGSWAN_SYSTIME_FIX),yes,no) \\\n\t--enable-eap-sim=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIM),yes,no) \\\n\t--enable-eap-sim-file=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIM_FILE),yes,no) \\\n\t--enable-eap-aka=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_AKA),yes,no) \\\n\t--enable-eap-aka-3gpp2=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_AKA_3GPP2),yes,no) \\\n\t--enable-eap-simaka-sql=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_SQL),yes,no) \\\n\t--enable-eap-simaka-pseudonym=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_PSEUDONYM),yes,no) \\\n\t--enable-eap-simaka-reauth=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_REAUTH),yes,no) \\\n\t--enable-eap-identity=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_IDENTITY),yes,no) \\\n\t--enable-eap-md5=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_MD5),yes,no) \\\n\t--enable-eap-gtc=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_GTC),yes,no) \\\n\t--enable-eap-mschapv2=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_MSCHAPV2),yes,no) \\\n\t--enable-eap-tls=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_TLS),yes,no) \\\n\t--enable-eap-ttls=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_TTLS),yes,no) \\\n\t--enable-eap-peap=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_PEAP),yes,no) \\\n\t--enable-eap-tnc=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_TNC),yes,no) \\\n\t--enable-eap-dynamic=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_DYNAMIC),yes,no) \\\n\t--enable-eap-radius=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_RADIUS),yes,no) \\\n\t--with-ipseclibdir=/usr/lib \\\n\t--with-plugindir=/usr/lib/ipsec/plugins \\\n\t--with-imcvdir=/usr/lib/ipsec/imcvs \\\n\t--with-dev-headers=/usr/include\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nSTRONGSWAN_CONF_ENV += LIBS='-latomic'\nendif\n\nSTRONGSWAN_DEPENDENCIES += \\\n\t$(if $(BR2_PACKAGE_STRONGSWAN_BOTAN),botan) \\\n\t$(if $(BR2_PACKAGE_STRONGSWAN_OPENSSL),openssl) \\\n\t$(if $(BR2_PACKAGE_STRONGSWAN_GCRYPT),libgcrypt) \\\n\t$(if $(BR2_PACKAGE_STRONGSWAN_GMP),gmp) \\\n\t$(if $(BR2_PACKAGE_STRONGSWAN_EAP_AKA_3GPP2),gmp) \\\n\t$(if $(BR2_PACKAGE_STRONGSWAN_CURL),libcurl) \\\n\t$(if $(BR2_PACKAGE_STRONGSWAN_TNCCS_11),libxml2) \\\n\t$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIM_PCSC),pcsc-lite) \\\n\t$(if $(BR2_PACKAGE_STRONGSWAN_WOLFSSL),wolfssl)\n\nifeq ($(BR2_PACKAGE_STRONGSWAN_SQL),y)\nSTRONGSWAN_DEPENDENCIES += \\\n\t$(if $(BR2_PACKAGE_SQLITE),sqlite) \\\n\t$(if $(BR2_PACKAGE_MYSQL),mysql)\nendif\n\n# disable connmark/forecast until net/if.h vs. linux/if.h conflict resolved\n# problem exist since linux 4.5 header changes\nSTRONGSWAN_CONF_OPTS += \\\n\t--disable-connmark \\\n\t--disable-forecast\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/stunnel/Config.in",
    "content": "config BR2_PACKAGE_STUNNEL\n\tbool \"stunnel\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Stunnel is a program that wraps any TCP connection with an SSL\n\t  connection.\n\n\t  http://www.stunnel.org/\n"
  },
  {
    "path": "package/stunnel/S50stunnel",
    "content": "#!/bin/sh\n\nstart() {\n  printf \"Starting stunnel: \"\n  start-stop-daemon -S -q -p /var/run/stunnel.pid --exec /usr/bin/stunnel\n  [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n  printf \"Stopping stunnel: \"\n  start-stop-daemon -K -q -p /var/run/stunnel.pid\n  [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nrestart() {\n  stop\n  start\n}\n\ncase \"$1\" in\n  start)\n    start\n    ;;\n  stop)\n    stop\n    ;;\n  restart|reload)\n    restart\n    ;;\n  *)\n    echo \"Usage: $0 {start|stop|restart}\"\n    exit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/stunnel/stunnel.hash",
    "content": "# From https://www.stunnel.org/downloads/stunnel-5.60.tar.gz.sha256\nsha256  c45d765b1521861fea9b03b425b9dd7d48b3055128c0aec673bba5ef9b8f787d  stunnel-5.60.tar.gz\n# Locally calculated\nsha256  28b55d0157efd5ceb63640faeebb50fda13b1f49aec0b9c1240b9a3ea9f0eb4c  COPYING.md\nsha256  62f171d4d8b6726df61f18a6bbc0a70f79c4bc2134d837d35c81fc6289a2d84d  COPYRIGHT.md\n"
  },
  {
    "path": "package/stunnel/stunnel.mk",
    "content": "################################################################################\n#\n# stunnel\n#\n################################################################################\n\nSTUNNEL_VERSION_MAJOR = 5\nSTUNNEL_VERSION = $(STUNNEL_VERSION_MAJOR).60\nSTUNNEL_SITE = http://www.usenix.org.uk/mirrors/stunnel/archive/$(STUNNEL_VERSION_MAJOR).x\nSTUNNEL_DEPENDENCIES = host-pkgconf openssl\nSTUNNEL_CONF_OPTS = --with-ssl=$(STAGING_DIR)/usr --with-threads=fork \\\n\t--disable-libwrap\nSTUNNEL_CONF_ENV = \\\n\tax_cv_check_cflags___fstack_protector=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) \\\n\tLIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nSTUNNEL_LICENSE = GPL-2.0+\nSTUNNEL_LICENSE_FILES = COPYING.md COPYRIGHT.md\nSTUNNEL_CPE_ID_VENDOR = stunnel\nSTUNNEL_SELINUX_MODULES = stunnel\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nSTUNNEL_DEPENDENCIES += systemd\nelse\nSTUNNEL_CONF_OPTS += --disable-systemd\nendif\n\ndefine STUNNEL_INSTALL_CONF\n\t$(INSTALL) -m 0644 -D $(@D)/tools/stunnel.conf \\\n\t\t$(TARGET_DIR)/etc/stunnel/stunnel.conf\n\trm -f $(TARGET_DIR)/etc/stunnel/stunnel.conf-sample\nendef\n\nSTUNNEL_POST_INSTALL_TARGET_HOOKS += STUNNEL_INSTALL_CONF\n\ndefine STUNNEL_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/stunnel/S50stunnel $(TARGET_DIR)/etc/init.d/S50stunnel\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/subversion/0001-workaround-ac-run-ifelse.patch",
    "content": "build/ac-macros/macosx.m4: workaround AC_RUN_IFELSE\n\nThe SVN_LIB_MACHO_ITERATE macro contains an AC_RUN_IFELSE test that\ndoesn't work when cross-compiling. However, this macro is related to\ntesting Mac OS X APIs, so in the context of Buildroot, we don't care,\nand the test program is not even going to build. So we simply\nworkaround this by turning the test into an AC_COMPILE_IFELSE.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n\nIndex: b/build/ac-macros/macosx.m4\n===================================================================\n--- a/build/ac-macros/macosx.m4\n+++ b/build/ac-macros/macosx.m4\n@@ -24,7 +24,7 @@\n AC_DEFUN(SVN_LIB_MACHO_ITERATE,\n [\n   AC_MSG_CHECKING([for Mach-O dynamic module iteration functions])\n-  AC_RUN_IFELSE([AC_LANG_PROGRAM([[\n+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[\n     #include <mach-o/dyld.h>\n     #include <mach-o/loader.h>\n   ]],[[\n"
  },
  {
    "path": "package/subversion/Config.in",
    "content": "config BR2_PACKAGE_SUBVERSION\n\tbool \"subversion\"\n\t# apr really needs shared library support\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU # apr\n\tselect BR2_PACKAGE_APR\n\tselect BR2_PACKAGE_APR_UTIL\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_LZ4\n\tselect BR2_PACKAGE_UTF8PROC\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  Subversion is an open source version control system\n\n\t  http://subversion.apache.org/\n\ncomment \"subversion needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/subversion/subversion.hash",
    "content": "# From https://www.apache.org/dist/subversion/subversion-1.14.1.tar.bz2.sha512\nsha512  0a70c7152b77cdbcb810a029263e4b3240b6ef41d1c19714e793594088d3cca758d40dfbc05622a806b06463becb73207df249393924ce591026b749b875fcdd  subversion-1.14.1.tar.bz2\n\n# Locally calculated\nsha256  484aff0cfbb81155a10f903ed756e27e9fc65578c245a295bae295c4bb51eaad  LICENSE\n"
  },
  {
    "path": "package/subversion/subversion.mk",
    "content": "################################################################################\n#\n# subversion\n#\n################################################################################\n\nSUBVERSION_VERSION = 1.14.1\nSUBVERSION_SOURCE = subversion-$(SUBVERSION_VERSION).tar.bz2\nSUBVERSION_SITE = https://downloads.apache.org/subversion\nSUBVERSION_LICENSE = Apache-2.0\nSUBVERSION_LICENSE_FILES = LICENSE\nSUBVERSION_CPE_ID_VENDOR = apache\nSUBVERSION_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tapr \\\n\tapr-util \\\n\texpat \\\n\tlz4 \\\n\tutf8proc \\\n\tzlib \\\n\tsqlite \\\n\t$(TARGET_NLS_DEPENDENCIES)\nSUBVERSION_AUTORECONF = YES\nSUBVERSION_CONF_OPTS = \\\n\t--with-expat=$(STAGING_DIR)/usr/include:$(STAGING_DIR)/usr/lib: \\\n\t--with-apr=$(STAGING_DIR)/usr \\\n\t--with-apr-util=$(STAGING_DIR)/usr \\\n\t--with-lz4=$(STAGING_DIR)/usr \\\n\t--with-utf8proc=$(STAGING_DIR)/usr \\\n\t--with-zlib=$(STAGING_DIR)/usr \\\n\t--without-serf \\\n\t--without-apxs \\\n\t--without-berkeley-db \\\n\t--without-sasl \\\n\t--without-gnome-keyring \\\n\t--without-libmagic\nSUBVERSION_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sudo/Config.in",
    "content": "config BR2_PACKAGE_SUDO\n\tbool \"sudo\"\n\t# uses fork()\n\tdepends on BR2_USE_MMU\n\thelp\n\t  Sudo is a program designed to allow a sysadmin to give\n\t  limited root privileges to users and log root activity. The\n\t  basic philosophy is to give as few privileges as possible\n\t  but still allow people to get their work done.\n\n\t  http://www.sudo.ws/sudo/\n"
  },
  {
    "path": "package/sudo/sudo.hash",
    "content": "# From: http://www.sudo.ws/download.html\nsha256  9e3b8b8da7def43b6e60c257abe80467205670fd0f7c081de1423c414b680f2d  sudo-1.9.8p2.tar.gz\n# Locally calculated\nsha256  b678438594f04a7070a5fd125f7edffc871e13234baad318690b647bfc60705d  doc/LICENSE\n"
  },
  {
    "path": "package/sudo/sudo.mk",
    "content": "################################################################################\n#\n# sudo\n#\n################################################################################\n\nSUDO_VERSION_MAJOR = 1.9.8\nSUDO_VERSION_MINOR = p2\nSUDO_VERSION = $(SUDO_VERSION_MAJOR)$(SUDO_VERSION_MINOR)\nSUDO_SITE = https://www.sudo.ws/sudo/dist\nSUDO_LICENSE = ISC, BSD-3-Clause\nSUDO_LICENSE_FILES = doc/LICENSE\nSUDO_CPE_ID_VERSION = $(SUDO_VERSION_MAJOR)\nSUDO_CPE_ID_UPDATE = $(SUDO_VERSION_MINOR)\nSUDO_SELINUX_MODULES = sudo\n# This is to avoid sudo's make install from chown()ing files which fails\nSUDO_INSTALL_TARGET_OPTS = INSTALL_OWNER=\"\" DESTDIR=\"$(TARGET_DIR)\" install\nSUDO_CONF_OPTS = \\\n\t--without-lecture \\\n\t--without-sendmail \\\n\t--without-umask \\\n\t--with-logging=syslog \\\n\t--without-interfaces \\\n\t--with-env-editor\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\ndefine SUDO_INSTALL_PAM_CONF\n\t$(INSTALL) -D -m 0644 package/sudo/sudo.pam $(TARGET_DIR)/etc/pam.d/sudo\nendef\n\nSUDO_DEPENDENCIES += linux-pam\nSUDO_CONF_OPTS += --with-pam\nSUDO_POST_INSTALL_TARGET_HOOKS += SUDO_INSTALL_PAM_CONF\nelse\nSUDO_CONF_OPTS += --without-pam\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nSUDO_CONF_OPTS += --enable-zlib\nSUDO_DEPENDENCIES += zlib\nelse\nSUDO_CONF_OPTS += --disable-zlib\nendif\n\nifeq ($(BR2_PACKAGE_OPENLDAP),y)\nSUDO_DEPENDENCIES += openldap\nSUDO_CONF_OPTS += --with-ldap\n# If we are building sudo statically and openldap was linked with openssl, then\n# when we link sudo with openldap we need to specify the openssl libs, otherwise\n# it will fail with \"undefined reference\" errors.\nifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_OPENSSL),yy)\nSUDO_DEPENDENCIES += host-pkgconf\nSUDO_CONF_ENV += LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`\"\nendif\nelse\nSUDO_CONF_OPTS += --without-ldap\nendif\n\n# mksigname/mksiglist needs to run on build host to generate source files\ndefine SUDO_BUILD_MKSIGNAME_MKSIGLIST_HOST\n\t$(MAKE) $(HOST_CONFIGURE_OPTS) \\\n\t\tCPPFLAGS=\"$(HOST_CPPFLAGS) -I../../include -I../..\" \\\n\t\t-C $(@D)/lib/util mksigname mksiglist\nendef\n\nSUDO_POST_CONFIGURE_HOOKS += SUDO_BUILD_MKSIGNAME_MKSIGLIST_HOST\n\ndefine SUDO_PERMISSIONS\n\t/usr/bin/sudo f 4755 0 0 - - - - -\nendef\n\ndefine SUDO_REMOVE_DIST_EXAMPLES\n\t$(RM) $(TARGET_DIR)/etc/sudoers.dist\n\trmdir --ignore-fail-on-non-empty $(TARGET_DIR)/etc/sudoers.d\nendef\nSUDO_POST_INSTALL_TARGET_HOOKS += SUDO_REMOVE_DIST_EXAMPLES\n\ndefine SUDO_USERS\n\t- - sudo -1 - - - -\nendef\n\ndefine SUDO_ENABLE_SUDO_GROUP_RULE\n\t$(SED) '/^# \\%sudo\\tALL=(ALL) ALL/s/^# //' $(TARGET_DIR)/etc/sudoers\nendef\nSUDO_POST_INSTALL_TARGET_HOOKS += SUDO_ENABLE_SUDO_GROUP_RULE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sudo/sudo.pam",
    "content": "auth        sufficient   pam_rootok.so\nauth        required     pam_wheel.so use_uid\nauth        required     pam_env.so\nauth        required     pam_unix.so nullok\n\naccount     required     pam_unix.so\n\npassword    required     pam_unix.so nullok\n\nsession     required     pam_limits.so\nsession     required     pam_env.so\nsession     required     pam_unix.so\n"
  },
  {
    "path": "package/sunwait/Config.in",
    "content": "config BR2_PACKAGE_SUNWAIT\n\tbool \"sunwait\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Sunwait calculates sunrise or sunset times with civil,\n\t  nautical, astronomical and custom twilights.\n\n\t  https://github.com/risacher/sunwait\n\ncomment \"sunwait needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/sunwait/sunwait.hash",
    "content": "# sha256 locally computed\nsha256  ef26ed05882d5286a64a37c4044f99b877cc54f58a46f0e37ca60c93398df910  sunwait-7326b53e5406c7ebd552ae6dc0fc659252a18e7f.tar.gz\nsha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  LICENSE\n"
  },
  {
    "path": "package/sunwait/sunwait.mk",
    "content": "################################################################################\n#\n# sunwait\n#\n################################################################################\n\nSUNWAIT_VERSION = 7326b53e5406c7ebd552ae6dc0fc659252a18e7f\nSUNWAIT_SITE = $(call github,risacher,sunwait,$(SUNWAIT_VERSION))\nSUNWAIT_LICENSE = GPL-3.0\nSUNWAIT_LICENSE_FILES = LICENSE\n\nSUNWAIT_MAKE_OPTS = \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tC=$(TARGET_CXX) \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -c\" \\\n\tLDFLAGS=\"$(TARGET_LDFLAGS) -lm\"\n\ndefine SUNWAIT_BUILD_CMDS\n\t$(MAKE) $(SUNWAIT_MAKE_OPTS) -C $(@D) all\nendef\n\ndefine SUNWAIT_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/sunwait $(TARGET_DIR)/usr/bin/sunwait\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/sunxi-boards/Config.in",
    "content": "config BR2_PACKAGE_SUNXI_BOARDS\n\tbool \"sunxi script.bin board file\"\n\tdepends on BR2_arm\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # host-sunxi-tools\n\tselect BR2_PACKAGE_HOST_SUNXI_TOOLS\n\thelp\n\t  Sunxi-boards requires a compiled .fex files for hardware\n\t  description, used by the kernel during boot for hardware\n\t  initialization. This package is specific for linux-sunxi\n\t  kernel and it is useless for mainline kernel versions.\n\n\t  https://github.com/linux-sunxi/sunxi-boards\n\nif BR2_PACKAGE_SUNXI_BOARDS\nconfig BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE\n\tstring \".fex file to compile\"\n\thelp\n\t  This field defines the name of the .fex file for which the\n\t  .bin file should be generated.\n\n\t  This should be the path of the .fex file relative to the\n\t  sys_config/ directory, and including the .fex extension.\n\n\t  See inside sys_config/ directory in sunxi-boards source code\n\t  to see the list of valid .fex files.\nendif\n\ncomment \"sunxi script.bin board file needs a toolchain w/ host gcc >= 4.9\"\n\tdepends on BR2_arm\n\tdepends on !BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/sunxi-boards/sunxi-boards.hash",
    "content": "# locally computed\nsha256  ff1fa509fd5716d26c23a82e59300876a848122f745713a610f8f3c47d448064  sunxi-boards-a6a4e94066f4ec6b26fc7060dc453a6bcf26a504.tar.gz\n"
  },
  {
    "path": "package/sunxi-boards/sunxi-boards.mk",
    "content": "################################################################################\n#\n# sunxi-boards\n#\n################################################################################\n\nSUNXI_BOARDS_VERSION = a6a4e94066f4ec6b26fc7060dc453a6bcf26a504\nSUNXI_BOARDS_SITE = $(call github,linux-sunxi,sunxi-boards,$(SUNXI_BOARDS_VERSION))\nSUNXI_BOARDS_DEPENDENCIES = host-sunxi-tools\nSUNXI_BOARDS_INSTALL_IMAGES = YES\nSUNXI_BOARDS_INSTALL_TARGET = NO\nSUNXI_BOARDS_FEX_FILE = $(call qstrip,$(BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE))\n\ndefine SUNXI_BOARDS_INSTALL_IMAGES_CMDS\n\t$(FEX2BIN) $(@D)/sys_config/$(SUNXI_BOARDS_FEX_FILE) \\\n\t\t$(BINARIES_DIR)/script.bin\nendef\n\nifeq ($(BR2_PACKAGE_SUNXI_BOARDS)$(BR_BUILDING),yy)\n# we NEED a board name\nifeq ($(SUNXI_BOARDS_FEX_FILE),)\n$(error No sunxi .fex file specified. Check your BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE settings)\nendif\nendif\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/sunxi-cedarx/Config.in",
    "content": "config BR2_PACKAGE_SUNXI_CEDARX\n\tbool \"sunxi-cedarx\"\n\tdepends on BR2_arm\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  Sunxi CedarX decoder libraries. CedarX is Allwinner's\n\t  multimedia co-processing technology for hardware accelerated\n\t  video and image decoding, as used inside their A10 SoC's and\n\t  others.\n\n\t  http://github.com/linux-sunxi/cedarx-libs\n\t  http://linux-sunxi.org/CedarX\n\ncomment \"sunxi-cedarx needs a glibc toolchain\"\n\tdepends on BR2_arm\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/sunxi-cedarx/sunxi-cedarx.hash",
    "content": "# locally computed\nsha256  ea7426f83325d247ba0d4734eaf1cb53bab178a81f935e2535ddb3069f70ba84  sunxi-cedarx-b8f52d913f73720e50d8f1b2f8610467b575dc45.tar.gz\n"
  },
  {
    "path": "package/sunxi-cedarx/sunxi-cedarx.mk",
    "content": "################################################################################\n#\n# sunxi-cedarx\n#\n################################################################################\n\nSUNXI_CEDARX_VERSION = b8f52d913f73720e50d8f1b2f8610467b575dc45\nSUNXI_CEDARX_SITE = $(call github,linux-sunxi,cedarx-libs,$(SUNXI_CEDARX_VERSION))\n\nSUNXI_CEDARX_INSTALL_STAGING = YES\n\nSUNXI_CEDARX_CONFIGURE_OPTS = \\\n\tCROSS_COMPILE=$(TARGET_CROSS)\n\nifeq ($(BR2_ARM_EABIHF),y)\nSUNXI_CEDARX_BIN_DIR = $(@D)/libcedarv/linux-armhf\nelse\nSUNXI_CEDARX_BIN_DIR = $(@D)/libcedarv/linux-armel2\nendif\n\ndefine SUNXI_CEDARX_BUILD_AVHEAP\n\t$(TARGET_CC) $(TARGET_CFLAGS) -fPIC \\\n\t\t-c $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/avheap.c \\\n\t\t-o $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/avheap.o \\\n\t\t-I $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap \\\n\t\t-I $(SUNXI_CEDARX_BIN_DIR)/\n\t$(TARGET_CC) -shared -L./ -Wl,-soname,libavheap.so \\\n\t\t-o $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/libavheap.so \\\n\t\t$(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/avheap.o\nendef\n\ndefine SUNXI_CEDARX_INSTALL_AVHEAP\n\t$(INSTALL) -D -m 755 $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/libavheap.so \\\n\t\t$(1)/usr/lib/libavheap.so\nendef\n\ndefine SUNXI_CEDARX_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(SUNXI_CEDARX_BIN_DIR) \\\n\t\t$(SUNXI_CEDARX_CONFIGURE_OPTS)\n\t$(SUNXI_CEDARX_BUILD_AVHEAP)\nendef\n\ndefine SUNXI_CEDARX_INSTALL_STAGING_CMDS\n\t$(INSTALL) -d -m 755 $(STAGING_DIR)/usr/include/libvecore\n\t$(INSTALL) -m 664 $(SUNXI_CEDARX_BIN_DIR)/libvecore/*.h \\\n\t\t$(STAGING_DIR)/usr/include/libvecore\n\t$(INSTALL) -m 644 $(SUNXI_CEDARX_BIN_DIR)/*.h \\\n\t\t$(STAGING_DIR)/usr/include/\n\t$(INSTALL) -D -m 755 $(SUNXI_CEDARX_BIN_DIR)/libvecore/libvecore.so \\\n\t\t$(STAGING_DIR)/usr/lib/libvecore.so\n\t$(call SUNXI_CEDARX_INSTALL_AVHEAP, $(STAGING_DIR))\nendef\n\ndefine SUNXI_CEDARX_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(SUNXI_CEDARX_BIN_DIR)/libvecore/libvecore.so \\\n\t\t$(TARGET_DIR)/usr/lib/libvecore.so\n\t$(call SUNXI_CEDARX_INSTALL_AVHEAP, $(TARGET_DIR))\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/sunxi-mali-mainline/Config.in",
    "content": "config BR2_PACKAGE_SUNXI_MALI_MAINLINE\n\tbool \"sunxi-mali-mainline\"\n\tdepends on BR2_aarch64 || (BR2_ARM_EABIHF && BR2_arm)\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tselect BR2_PACKAGE_HAS_LIBEGL\n\tselect BR2_PACKAGE_HAS_LIBGLES\n\thelp\n\t  Install userspace Allwinner OpenGL libraries.\n\n\t  https://github.com/bootlin/mali-blobs\n\nif BR2_PACKAGE_SUNXI_MALI_MAINLINE\n\nconfig BR2_PACKAGE_PROVIDES_LIBEGL\n\tdefault \"sunxi-mali-mainline\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBGLES\n\tdefault \"sunxi-mali-mainline\"\n\nchoice\n\tprompt \"Version\"\n\tdefault BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2\n\thelp\n\t  Select the version of the userspace module.\n\nconfig BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2\n\tbool \"r6p2\"\nconfig BR2_PACKAGE_SUNXI_MALI_MAINLINE_R8P1\n\tbool \"r8p1\"\n\nendchoice\n\nconfig BR2_PACKAGE_SUNXI_MALI_MAINLINE_REVISION\n\tstring\n\tdefault \"r6p2\"\tif BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2\n\tdefault \"r8p1\"\tif BR2_PACKAGE_SUNXI_MALI_MAINLINE_R8P1\n\nendif\n\ncomment \"sunxi-mali needs an EABIhf glibc toolchain\"\n\tdepends on BR2_arm\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF\n"
  },
  {
    "path": "package/sunxi-mali-mainline/egl.pc",
    "content": "prefix=/usr/\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: egl\nDescription: ARM Mali implementation of EGL\nVersion: 1.4\nRequires:\nLibs: -L${libdir} -lEGL -lGLESv2\nCflags: -I${includedir}\n\n"
  },
  {
    "path": "package/sunxi-mali-mainline/glesv2.pc",
    "content": "prefix=/usr\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: glesv2\nDescription: ARM Mali implementation of OpenGL ESv2\nVersion: 2.0\nRequires:\nLibs: -L${libdir} -lGLESv2 -lGLESv1_CM\nCflags: -I${includedir}\n\n"
  },
  {
    "path": "package/sunxi-mali-mainline/sunxi-mali-mainline.hash",
    "content": "# Locally calculated\nsha256  b5e7e8f9f2886ed0b273f72ea16ae4868711726fe33e3d80ef24e86269c90fd2  sunxi-mali-mainline-418f55585e76f375792dbebb3e97532f0c1c556d.tar.gz\nsha256  8a06bcae44a41a886f339b4338422415a786787f113e9ed6456ae117104a0b6a  EULA_for_Mali_400MP_AW.pdf\n"
  },
  {
    "path": "package/sunxi-mali-mainline/sunxi-mali-mainline.mk",
    "content": "################################################################################\n#\n# sunxi-mali-mainline\n#\n################################################################################\n\nSUNXI_MALI_MAINLINE_VERSION = 418f55585e76f375792dbebb3e97532f0c1c556d\nSUNXI_MALI_MAINLINE_SITE = $(call github,bootlin,mali-blobs,$(SUNXI_MALI_MAINLINE_VERSION))\nSUNXI_MALI_MAINLINE_INSTALL_STAGING = YES\nSUNXI_MALI_MAINLINE_PROVIDES = libegl libgles\nSUNXI_MALI_MAINLINE_LICENSE = Allwinner End User Licence Agreement\nSUNXI_MALI_MAINLINE_EULA_ORIGINAL = EULA\\ for\\ Mali\\ 400MP\\ _AW.pdf\nSUNXI_MALI_MAINLINE_EULA_NO_SPACES = EULA_for_Mali_400MP_AW.pdf\nSUNXI_MALI_MAINLINE_LICENSE_FILES = $(SUNXI_MALI_MAINLINE_EULA_NO_SPACES)\n\nSUNXI_MALI_MAINLINE_REV = $(call qstrip,$(BR2_PACKAGE_SUNXI_MALI_MAINLINE_REVISION))\n\nifeq ($(BR2_arm),y)\nSUNXI_MALI_MAINLINE_ARCH=arm\nelse ifeq ($(BR2_aarch64),y)\nSUNXI_MALI_MAINLINE_ARCH=arm64\nendif\n\ndefine SUNXI_MALI_MAINLINE_INSTALL_STAGING_CMDS\n\tmkdir -p $(STAGING_DIR)/usr/lib $(STAGING_DIR)/usr/include\n\n\tcp -rf $(@D)/$(SUNXI_MALI_MAINLINE_REV)/$(SUNXI_MALI_MAINLINE_ARCH)/fbdev/*.so* \\\n\t\t$(STAGING_DIR)/usr/lib/\n\tcp -rf $(@D)/include/fbdev/* $(STAGING_DIR)/usr/include/\n\n\t$(INSTALL) -D -m 0644 package/sunxi-mali-mainline/egl.pc \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/egl.pc\n\t$(INSTALL) -D -m 0644 package/sunxi-mali-mainline/glesv2.pc \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/glesv2.pc\nendef\n\ndefine SUNXI_MALI_MAINLINE_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/usr/lib\n\tcp -rf $(@D)/$(SUNXI_MALI_MAINLINE_REV)/$(SUNXI_MALI_MAINLINE_ARCH)/fbdev/*.so* \\\n\t\t$(TARGET_DIR)/usr/lib/\nendef\n\ndefine SUNXI_MALI_MAINLINE_FIXUP_LICENSE_FILE\n\tmv $(@D)/$(SUNXI_MALI_MAINLINE_EULA_ORIGINAL) $(@D)/$(SUNXI_MALI_MAINLINE_EULA_NO_SPACES)\nendef\n\nSUNXI_MALI_MAINLINE_POST_PATCH_HOOKS += SUNXI_MALI_MAINLINE_FIXUP_LICENSE_FILE\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/sunxi-mali-mainline-driver/Config.in",
    "content": "comment \"sunxi-mali-mainline-driver needs a Linux kernel to be built\"\n\tdepends on BR2_PACKAGE_SUNXI_MALI_MAINLINE\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_SUNXI_MALI_MAINLINE_DRIVER\n\tbool \"sunxi-mali-mainline-driver\"\n\tdefault y\n\tdepends on BR2_PACKAGE_SUNXI_MALI_MAINLINE # runtime\n\tdepends on BR2_LINUX_KERNEL\n\tselect BR2_LINUX_NEEDS_MODULES # not using kernel-module infra\n\thelp\n\t  This package builds and installs the Linux kernel driver for\n\t  the Mali GPU on Allwinner platforms, compatible with recent\n\t  Linux kernels (>= 4.4). Note that it should be installed\n\t  together with the corresponding userspace OpenGL libraries,\n\t  which are provided as binaries only at:\n\t  https://github.com/bootlin/mali-blobs\n\n\t  sunxi-mali-mainline-driver requires a Linux kernel >= 4.4\n\t  with the following options enabled:\n\n\t  - CONFIG_CMA\n\t  - CONFIG_DMA_CMA\n\n\t  starting from Linux Kernel >= 4.20 following options must be\n\t  enabled:\n\t  - CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM\n\n\t  The following kernel command line options must be passed:\n\n\t  - drm_kms_helper.drm_leak_fbdev_smem = 1\n\t    since drm_kms_helper.drm_leak_fbdev_smem is set to 0 by\n\t    default\n\n\t  - drm_kms_helper.drm_fbdev_overalloc >= 200\n\t    since the driver requires at least double buffering and\n\t    fails to work with the default value(100).\n\n\t  https://github.com/mripard/sunxi-mali/blob/master/README.md\n"
  },
  {
    "path": "package/sunxi-mali-mainline-driver/sunxi-mali-mainline-driver.hash",
    "content": "# Locally calculated\nsha256  0197271dbf503e866dd4873091f61bb3de1f2c3031701aac1ba205d1e2f267ac  sunxi-mali-mainline-driver-e4a91c95096bb31450b556fcb13f3c4ba79f60b4.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/sunxi-mali-mainline-driver/sunxi-mali-mainline-driver.mk",
    "content": "################################################################################\n#\n# sunxi-mali-mainline-driver\n#\n################################################################################\n\nSUNXI_MALI_MAINLINE_DRIVER_VERSION = e4a91c95096bb31450b556fcb13f3c4ba79f60b4\nSUNXI_MALI_MAINLINE_DRIVER_SITE = $(call github,mripard,sunxi-mali,$(SUNXI_MALI_MAINLINE_DRIVER_VERSION))\nSUNXI_MALI_MAINLINE_DRIVER_DEPENDENCIES = linux\nSUNXI_MALI_MAINLINE_DRIVER_LICENSE = GPL-2.0\nSUNXI_MALI_MAINLINE_DRIVER_LICENSE_FILES = LICENSE\n\nSUNXI_MALI_MAINLINE_DRIVER_MAKE_OPTS = \\\n\t$(LINUX_MAKE_FLAGS) \\\n\tKDIR=$(LINUX_DIR)\n\ndefine SUNXI_MALI_MAINLINE_DRIVER_USE_APPLY_PATCHES\n\tln -sf $(SUNXI_MALI_MAINLINE_REV)/series $(@D)/patches\n\t$(SED) 's|quilt push -a|$(TOPDIR)/support/scripts/apply-patches.sh . ../patches|' \\\n\t\t$(@D)/build.sh\nendef\n\nSUNXI_MALI_MAINLINE_DRIVER_POST_PATCH_HOOKS += SUNXI_MALI_MAINLINE_DRIVER_USE_APPLY_PATCHES\n\ndefine SUNXI_MALI_MAINLINE_DRIVER_BUILD_CMDS\n\tcd $(@D) && $(SUNXI_MALI_MAINLINE_DRIVER_MAKE_OPTS) \\\n\t\t$(SHELL) ./build.sh -r $(SUNXI_MALI_MAINLINE_REV) -j $(PARALLEL_JOBS) -b\nendef\n\ndefine SUNXI_MALI_MAINLINE_DRIVER_INSTALL_TARGET_CMDS\n\tcd $(@D) && $(SUNXI_MALI_MAINLINE_DRIVER_MAKE_OPTS) \\\n\t\t$(SHELL) ./build.sh -r $(SUNXI_MALI_MAINLINE_REV) -j $(PARALLEL_JOBS) -i\nendef\n\ndefine SUNXI_MALI_MAINLINE_DRIVER_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CMA)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_DMA_CMA)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/sunxi-tools/0001-meminfo-Access-to-io-memory-via-pointers.patch",
    "content": "From 5c0a443ba336f10a8db6a99c769aa84ad37ed4d2 Mon Sep 17 00:00:00 2001\nFrom: Vadim Kochan <vadim4j@gmail.com>\nDate: Wed, 20 Feb 2019 02:48:43 +0200\nSubject: [PATCH] meminfo: Access to io memory via pointers\n\nThe main reason for this is to be able compile with musl library,\nbecause there is no support of inx/outx functions for ARM platform.\n\nSigned-off-by: Vadim Kochan <vadim4j@gmail.com>\n---\n meminfo.c | 11 ++++++-----\n 1 file changed, 6 insertions(+), 5 deletions(-)\n\ndiff --git a/meminfo.c b/meminfo.c\nindex 0b0ff23..7d9f10f 100644\n--- a/meminfo.c\n+++ b/meminfo.c\n@@ -22,7 +22,6 @@\n #include <sys/mman.h>\n #include <stdint.h>\n #include <errno.h>\n-#include <sys/io.h>\n #include <stdbool.h>\n \n #include \"common.h\"\n@@ -74,24 +73,26 @@ static enum sunxi_soc_version soc_version;\n unsigned int\n sunxi_io_read(void *base, int offset)\n {\n-\treturn inl((unsigned long) (base + offset));\n+\tunsigned long port = (unsigned long) (base + offset);\n+\treturn *((volatile unsigned long *) port);\n }\n \n void\n sunxi_io_write(void *base, int offset, unsigned int value)\n {\n-\toutl(value, (unsigned long) (base + offset));\n+\tunsigned long port = (unsigned long) (base + offset);\n+\t*((volatile unsigned long *) port) = value;\n }\n \n void\n sunxi_io_mask(void *base, int offset, unsigned int value, unsigned int mask)\n {\n-\tunsigned int tmp = inl((unsigned long) (base + offset));\n+\tunsigned int tmp = sunxi_io_read(base, offset);\n \n \ttmp &= ~mask;\n \ttmp |= value & mask;\n \n-\toutl(tmp, (unsigned long) (base + offset));\n+\tsunxi_io_write(base, offset, tmp);\n }\n \n \n-- \n2.14.1\n\n"
  },
  {
    "path": "package/sunxi-tools/Config.in",
    "content": "config BR2_PACKAGE_SUNXI_TOOLS\n\tbool \"sunxi-tools\"\n\tdepends on BR2_arm\n\thelp\n\t  Tools for Allwinner A10 (aka sun4i) and A13 (aka sun5i)\n\t  based devices.\n\n\t  http://linux-sunxi.org/Sunxi-tools\n\nif BR2_PACKAGE_SUNXI_TOOLS\n\nconfig BR2_PACKAGE_SUNXI_TOOLS_FEXC\n\tbool \"sunxi-fexc (fex2bin & bin2fex)\"\n\thelp\n\t  Convert between .fex board definition files and binary\n\t  format. These tools are specific for the linux-sunxi kernel\n\t  and do not apply to the mainline Linux kernel version.\n\nconfig BR2_PACKAGE_SUNXI_TOOLS_BOOTINFO\n\tbool \"sunxi-bootinfo\"\n\thelp\n\t  Displays information about sunxi boot code.\n\nconfig BR2_PACKAGE_SUNXI_TOOLS_FEL\n\tbool \"sunxi-fel\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  The sunxi-fel command can interact with a sunxi device in\n\t  fel mode. This allows do download code to memory and execute\n\t  it.\n\ncomment \"sunxi-fel needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_SUNXI_TOOLS_NAND_PART\n\tbool \"sunxi-nand-part\"\n\tdefault y\n\thelp\n\t  The sunxi-nand-part command allows to repartition the internal\n\t  NAND on sunxi devices.\n\nconfig BR2_PACKAGE_SUNXI_TOOLS_PIO\n\tbool \"sunxi-pio\"\n\thelp\n\t  GPIO manipulation tool for sunxi boards.\n\nconfig BR2_PACKAGE_SUNXI_TOOLS_MEMINFO\n\tbool \"sunxi-meminfo\"\n\thelp\n\t  Utility to retrieve DRAM information from registers on\n\t  Allwinner SoCs. Specific for the linux-sunxi kernel - does\n\t  not apply to the mainline Linux kernel version.\n\nconfig BR2_PACKAGE_SUNXI_TOOLS_PHOENIX_INFO\n\tbool \"phoenix_info\"\n\thelp\n\t  Display information about self-installing SD card images\n\t  (created with Phoenix Card).\n\n\t  https://linux-sunxi.org/PhoenixCard\n\nconfig BR2_PACKAGE_SUNXI_TOOLS_NAND_IMAGE_BUILDER\n\tbool \"sunxi-nand-image-builder\"\n\thelp\n\t  Creates a raw NAND image that can be read by the sunxi NAND\n\t  controller.\n\nendif # BR2_PACKAGE_SUNXI_TOOLS\n"
  },
  {
    "path": "package/sunxi-tools/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_SUNXI_TOOLS\n\tbool \"host sunxi-tools\"\n\tdepends on BR2_arm\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb\n\thelp\n\t  Tools for Allwinner A10 (aka sun4i) and A13 (aka sun5i)\n\t  based devices. This includes fex2bin which can be used to\n\t  compile .fex board definition files to the binary script.bin\n\t  format required by the linux-sunxi kernel. These tools are\n\t  specific for linux-sunxi kernel and do not apply to the\n\t  mainline Linux kernel version.\n\n\t  http://linux-sunxi.org/Sunxi-tools\n\ncomment \"host sunxi-tools needs a toolchain w/ host gcc >= 4.9\"\n\tdepends on BR2_arm\n\tdepends on !BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/sunxi-tools/sunxi-tools.hash",
    "content": "# Locally calculated\nsha256  81f48014a520cb83cac4e17f5ae627a637c4d6a422b60c693c5a705c92e43822  sunxi-tools-1.4.2.tar.gz\nsha256  2b0d4dda4bf8034e1506507a67f80f982131137afe62bf144d248f9faea31da4  LICENSE.md\n"
  },
  {
    "path": "package/sunxi-tools/sunxi-tools.mk",
    "content": "################################################################################\n#\n# sunxi-tools\n#\n################################################################################\n\nSUNXI_TOOLS_VERSION = 1.4.2\nSUNXI_TOOLS_SITE = $(call github,linux-sunxi,sunxi-tools,v$(SUNXI_TOOLS_VERSION))\nSUNXI_TOOLS_LICENSE = GPL-2.0+\nSUNXI_TOOLS_LICENSE_FILES = LICENSE.md\nHOST_SUNXI_TOOLS_DEPENDENCIES = host-libusb host-pkgconf\nFEX2BIN = $(HOST_DIR)/bin/fex2bin\n\nSUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_FEXC) += sunxi-fexc\nSUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_BOOTINFO) += sunxi-bootinfo\nSUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_FEL) += sunxi-fel\nSUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_NAND_PART) += sunxi-nand-part\nSUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_PIO) += sunxi-pio\nSUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_MEMINFO) += sunxi-meminfo\nSUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_PHOENIX_INFO) += phoenix_info\nSUNXI_TOOLS_TARGETS_$(BR2_PACKAGE_SUNXI_TOOLS_NAND_IMAGE_BUILDER) += \\\n\tsunxi-nand-image-builder\n\nifeq ($(BR2_PACKAGE_SUNXI_TOOLS_FEXC),y)\nSUNXI_TOOLS_FEXC_LINKS += fex2bin bin2fex\nendif\n\nifeq ($(BR2_PACKAGE_SUNXI_TOOLS_FEL),y)\nSUNXI_TOOLS_DEPENDENCIES += libusb host-pkgconf\nendif\n\ndefine HOST_SUNXI_TOOLS_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) CROSS_COMPILE=\"\" CC=\"$(HOSTCC)\" \\\n\t\tPREFIX=$(HOST_DIR) EXTRA_CFLAGS=\"$(HOST_CFLAGS)\" \\\n\t\tLDFLAGS=\"$(HOST_LDFLAGS)\" -C $(@D) tools misc\nendef\n\ndefine HOST_SUNXI_TOOLS_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) CROSS_COMPILE=\"\" CC=\"$(HOSTCC)\" \\\n\t\tPREFIX=$(HOST_DIR) EXTRA_CFLAGS=\"$(HOST_CFLAGS)\" \\\n\t\tLDFLAGS=\"$(HOST_LDFLAGS)\" -C $(@D) install-tools install-misc\nendef\n\ndefine SUNXI_TOOLS_BUILD_CMDS\n\t$(foreach t,$(SUNXI_TOOLS_TARGETS_y), \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\t\t\tCC=\"$(TARGET_CC)\" PREFIX=/usr \\\n\t\t\tEXTRA_CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\t\tLDFLAGS=\"$(TARGET_LDFLAGS)\" -C $(@D) $(t)\n\t)\nendef\n\ndefine SUNXI_TOOLS_INSTALL_TARGET_CMDS\n\t$(foreach t,$(SUNXI_TOOLS_TARGETS_y), \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/$(t) $(TARGET_DIR)/usr/bin/$(t)\n\t)\n\t$(foreach t,$(SUNXI_TOOLS_FEXC_LINKS), \\\n\t\tln -nfs sunxi-fexc $(TARGET_DIR)/usr/bin/$(t)\n\t)\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/supertux/0001-CMakeLists.txt-compile-squirrel-with-fPIC.patch",
    "content": "From 23d0bb0ef0fde52d1cffe235edead09287326fb4 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sun, 4 Oct 2020 01:11:30 +0200\nSubject: [PATCH] CMakeLists.txt: compile squirrel with -fPIC\n\nEnsure that squirrel is compiled with -fPIC to allow linking the static\nlibraries with dynamically linked programs. This is not a requirement\nfor most architectures but is mandatory for ARM.\n\nFixes:\nx86_64-buildroot-linux-musl/bin/ld: CMakeFiles/sq_static.dir/sq.c.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a PIE object; recompile with -fPIC\nx86_64-buildroot-linux-musl/bin/ld: final link failed: nonrepresentable section on output\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n CMakeLists.txt | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 8b1dafa1e..07c603cce 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -412,7 +412,8 @@ ExternalProject_Add(squirrel\n   -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}\n   -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}\n   -DCMAKE_INSTALL_PREFIX=${SQUIRREL_PREFIX}\n-  -DINSTALL_INC_DIR=include)\n+  -DINSTALL_INC_DIR=include\n+  -DCMAKE_POSITION_INDEPENDENT_CODE=ON)\n \n if(WIN32)\n   add_library(squirrel_lib SHARED IMPORTED)\n-- \n2.25.4\n\n"
  },
  {
    "path": "package/supertux/Config.in",
    "content": "config BR2_PACKAGE_SUPERTUX\n\tbool \"supertux\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_HAS_LIBGL # libglew\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_XORG7 # libglew, SDL2 OpenGL (GLX)\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_6 # C++14\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem\n\tdepends on BR2_USE_MMU # SDL2 OpenGL (GLX)\n\tdepends on !BR2_STATIC_LIBS # SDL2\n\tdepends on BR2_USE_WCHAR # Boost\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_DATE_TIME\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\tselect BR2_PACKAGE_BOOST_LOCALE\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBGLEW\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_LIBVORBIS\n\tselect BR2_PACKAGE_OPENAL\n\tselect BR2_PACKAGE_PHYSFS\n\tselect BR2_PACKAGE_SDL2\n\tselect BR2_PACKAGE_SDL2_IMAGE\n\tselect BR2_PACKAGE_SDL2_OPENGL\n\thelp\n\t  SuperTux is a free classic 2D jump'n run sidescroller game in\n\t  a style similar to the original Super Mario games covered\n\t  under the GNU GPL.\n\n\t  http://supertux.github.io/\n\ncomment \"supertux needs OpenGL and a toolchain w/ C++, gcc >= 6, NPTL, dynamic library, wchar\"\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_HAS_LIBGL || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_6 || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\tBR2_STATIC_LIBS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/supertux/supertux.hash",
    "content": "# Locally calculated\nsha256  26a9e56ea2d284148849f3239177d777dda5b675a10ab2d76ee65854c91ff598  SuperTux-v0.6.2-Source.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.txt\nsha256  09645215102c1013a1ef8c16a30bacdb9a78924ca064372290405fabd3e7074d  data/AUTHORS\n"
  },
  {
    "path": "package/supertux/supertux.mk",
    "content": "################################################################################\n#\n# supertux\n#\n################################################################################\n\nSUPERTUX_VERSION = 0.6.2\nSUPERTUX_SITE = https://github.com/SuperTux/supertux/releases/download/v$(SUPERTUX_VERSION)\nSUPERTUX_SOURCE = SuperTux-v$(SUPERTUX_VERSION)-Source.tar.gz\n\n# Supertux itself is GPL-3.0+, but it bundles a few libraries with different\n# licenses (sexp-cpp, squirrel, tinygettext) which are linked statically.\nSUPERTUX_LICENSE = GPL-3.0+ (code), CC-BY-SA-2.0, CC-BY-SA-3.0, CC-BY-SA-4.0, GPL-2.0+ (images music sounds)\nSUPERTUX_LICENSE_FILES = LICENSE.txt data/AUTHORS\n\n# Use bundled squirrel, tinygettext sexp-cpp packages which are hardcoded in\n# the CMake build system.\nSUPERTUX_DEPENDENCIES = host-pkgconf boost freetype libcurl libgl libglew \\\n\tlibogg libpng libvorbis openal physfs sdl2 sdl2_image\n\n# CMAKE_BUILD_TYPE=Release: disable profiling code (-pg)\n# ENABLE_BOOST_STATIC_LIBS=OFF: use boost shared libraries since supertux\n# depends on !BR2_STATIC_LIBS and boost provide only shared libraries with\n# BR2_SHARED_LIBS.\n# ENABLE_OPENGL=ON: Can be disabled but will make SuperTux unplayable slow.\n# GLBINDING_ENABLED=OFF: use GLEW (default) instead of glbinding.\n# Install the game directly in /usr/bin and game data in /usr/share/supertux2.\n# Force using physfs.so from staging since the check on PHYSFS_getPrefDir symbol\n# in physfs.h (CHECK_SYMBOL_EXISTS) doesn't work.\n# ENABLE_OPENGLES2=OFF: Disable opengles2 for now.\nSUPERTUX_CONF_OPTS += \\\n\t-DCMAKE_BUILD_TYPE=Release \\\n\t-DCMAKE_CXX_FLAGS=\"$(TARGET_CXXFLAGS) -DGLEW_NO_GLU\" \\\n\t-DENABLE_BOOST_STATIC_LIBS=OFF \\\n\t-DBUILD_DOCUMENTATION=OFF \\\n\t-DENABLE_OPENGL=ON \\\n\t-DGLBINDING_ENABLED=OFF \\\n\t-DINSTALL_SUBDIR_BIN=\"bin\" \\\n\t-DINSTALL_SUBDIR_SHARE=\"share/supertux2\" \\\n\t-DUSE_SYSTEM_PHYSFS=ON \\\n\t-DENABLE_OPENGLES2=OFF\n\n# Avoid incompatible posix_memalign declaration on x86 and x86_64 with\n# musl.\n# https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01425.html\nifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_i386)$(BR2_x86_64),y:y)\ndefine SUPERTUX_REMOVE_PEDANTIC\n\t$(SED) 's% -pedantic%%' $(@D)/CMakeLists.txt\n\t$(SED) 's%CHECK_CXX_FLAG(pedantic)%%' $(@D)/external/tinygettext/CMakeLists.txt\nendef\nSUPERTUX_POST_PATCH_HOOKS += SUPERTUX_REMOVE_PEDANTIC\nendif\n\n# From https://bugs.debian.org/cgi-bin/bugreport.cgi/?bug=770670\n# \"The problem lies within SDL_cpuinfo.h.  It includes altivec.h, which by\n# definition provides an unconditional vector, pixel and bool define in\n# standard-c++ mode.  In GNU-c++ mode this names are only defined\n# context-sensitive by cpp.  SDL_cpuinfo.h is included by SDL.h.\n# Including altivec.h makes arbitrary code break.\"\n#\n# Acording to a bug report in GCC [1]:\n# \"You need to use -std=g++11 or undefine bool after the include of altivec.h\n# as context sensitive keywords is not part of the C++11 standard\".\n# So use gnu++11 instead of c++11 only for altivec system.\n# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58241#c3\nifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y)\ndefine SUPERTUX_FIX_ALTIVEC_ISSUE\n\t$(SED) 's%std=c++0x%std=gnu++0x%' $(@D)/external/tinygettext/CMakeLists.txt\nendef\nSUPERTUX_POST_PATCH_HOOKS += SUPERTUX_FIX_ALTIVEC_ISSUE\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/supertuxkart/Config.in",
    "content": "config BR2_PACKAGE_SUPERTUXKART\n\tbool \"supertuxkart\"\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP # openal\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # openal\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS # openal\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_ENET\n\tselect BR2_PACKAGE_HARFBUZZ\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBFRIBIDI\n\tselect BR2_PACKAGE_LIBGLEW\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_LIBSQUISH\n\tselect BR2_PACKAGE_LIBVORBIS\n\tselect BR2_PACKAGE_NETTLE if !BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_OPENAL\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HID if BR2_PACKAGE_BLUEZ5_UTILS # runtime\n\thelp\n\t  Karts. Nitro. Action! SuperTuxKart is a free 3D arcade kart\n\t  racer with multiple karts, tracks and modes you can play.\n\t  Beat the evil Nolok by any means necessary, and make the\n\t  mascot kingdom safe once again!\n\n\t  http://supertuxkart.sourceforge.net/Main_Page\n\ncomment \"supertuxkart needs an OpenGL backend, a uClibc or glibc toolchain w/ NPTL, C++, gcc >= 4.9\"\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t|| !BR2_PACKAGE_HAS_LIBGL \\\n\t\t|| BR2_TOOLCHAIN_USES_MUSL\n"
  },
  {
    "path": "package/supertuxkart/supertuxkart.hash",
    "content": "# Locally computed\nsha256\te9b02b0b11ab68aacaec38306903feffe59a501224805cd3645cebf10e880ae8  supertuxkart-1.1-src.tar.xz\n# From https://sourceforge.net/projects/supertuxkart/files/SuperTuxKart/1.1/\nsha1\t68be26f4b15d30dede26563cbcc6de999036c5e0  supertuxkart-1.1-src.tar.xz\nmd5\t731569c58428f32a0e46943fad7ba1e3  supertuxkart-1.1-src.tar.xz\n\n# Locally computed\nsha256\td27207a5213f746aac53893e9ecc18456e9595d3ffa662bd1ec9eb10787c214a  COPYING\n"
  },
  {
    "path": "package/supertuxkart/supertuxkart.mk",
    "content": "################################################################################\n#\n# supertuxkart\n#\n################################################################################\n\nSUPERTUXKART_VERSION = 1.1\nSUPERTUXKART_SOURCE = supertuxkart-$(SUPERTUXKART_VERSION)-src.tar.xz\nSUPERTUXKART_SITE = http://downloads.sourceforge.net/project/supertuxkart/SuperTuxKart/$(SUPERTUXKART_VERSION)\n\n# Supertuxkart itself is GPL-3.0+, but it bundles a few libraries with different\n# licenses. Irrlicht, bullet and angelscript have Zlib license, while glew is\n# BSD-3-Clause. Since they are linked statically, the result is GPL-3.0+.\nSUPERTUXKART_LICENSE = GPL-3.0+\nSUPERTUXKART_LICENSE_FILES = COPYING\n\nSUPERTUXKART_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tfreetype \\\n\tenet \\\n\tharfbuzz \\\n\tjpeg \\\n\tlibcurl \\\n\tlibfribidi \\\n\tlibgl \\\n\tlibglew \\\n\tlibogg \\\n\tlibpng \\\n\tlibsquish \\\n\tlibvorbis \\\n\topenal \\\n\txlib_libXrandr \\\n\tzlib\n\n# Since supertuxkart is not installing libstkirrlicht.so, and since it is\n# the only user of the bundled libraries, turn off shared libraries entirely.\n# Disable In-game recorder (there is no libopenglrecorder package)\nSUPERTUXKART_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF \\\n\t-DBUILD_RECORDER=OFF \\\n\t-DUSE_SYSTEM_GLEW=ON \\\n\t-DUSE_SYSTEM_ENET=ON \\\n\t-DUSE_SYSTEM_SQUISH=ON\n\nifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y)\nSUPERTUXKART_DEPENDENCIES += bluez5_utils\nSUPERTUXKART_CONF_OPTS += -DUSE_WIIUSE=ON -DUSE_SYSTEM_WIIUSE=ON\nelse\n# Wiimote support relies on bluez5.\nSUPERTUXKART_CONF_OPTS += -DUSE_WIIUSE=OFF\nendif\n\n# Prefer openssl (the default) over nettle.\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nSUPERTUXKART_DEPENDENCIES += openssl\nSUPERTUXKART_CONF_OPTS += -DUSE_CRYPTO_OPENSSL=ON\nelse\nSUPERTUXKART_DEPENDENCIES += nettle\nSUPERTUXKART_CONF_OPTS += -DUSE_CRYPTO_OPENSSL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SQLITE),y)\nSUPERTUXKART_DEPENDENCIES += sqlite\nSUPERTUXKART_CONF_OPTS += -DUSE_SQLITE3=ON\nelse\nSUPERTUXKART_CONF_OPTS += -DUSE_SQLITE3=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/supervisor/Config.in",
    "content": "config BR2_PACKAGE_SUPERVISOR\n\tbool \"supervisor\"\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\tselect BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime dependency\n\thelp\n\t  A client/server system that allows its users to control a\n\t  number of processes on UNIX-like operating systems.\n\n\t  http://supervisord.org/\n\ncomment \"supervisor needs a python interpreter\"\n\tdepends on !BR2_PACKAGE_PYTHON\n\tdepends on !BR2_PACKAGE_PYTHON3\n"
  },
  {
    "path": "package/supervisor/S99supervisord",
    "content": "#!/bin/sh\n\nmkdir -p /var/log/supervisor\n\ncase \"$1\" in\n\tstart)\n\t\tprintf \"Starting supervisord: \"\n\t\tstart-stop-daemon -S -q -p /var/run/supervisord.pid --exec /usr/bin/supervisord\n\t\techo \"done\"\n\t\t;;\n\tstop)\n\t\tprintf \"Stopping supervisord: \"\n\t\tstart-stop-daemon -K -q -p /var/run/supervisord.pid\n\t\techo \"done\"\n\t\t;;\n\trestart)\n\t\t\"$0\" stop\n\t\tsleep 5\n\t\t\"$0\" start\n\t\t;;\n\treload)\n\t\tstart-stop-daemon -K -q -p /var/run/supervisord.pid -s HUP\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/supervisor/supervisor.hash",
    "content": "# Locally calculated\nsha256  5b2b8882ec8a3c3733cce6965cc098b6d80b417f21229ab90b18fe551d619f90  supervisor-4.2.2.tar.gz\nsha256  7b8dbd54ab1543b07b2fc5f6f5ab50d89d26c1c4952af93a579d8c52c56b8de4  COPYRIGHT.txt\nsha256  4c35fda9f70bb7883fd94e5a4d5addd88ad1a6d5d15e21c9d17c4d96fdc5e369  LICENSES.txt\n"
  },
  {
    "path": "package/supervisor/supervisor.mk",
    "content": "################################################################################\n#\n# supervisor\n#\n################################################################################\n\nSUPERVISOR_VERSION = 4.2.2\nSUPERVISOR_SITE = https://files.pythonhosted.org/packages/d3/7f/c780b7471ba0ff4548967a9f7a8b0bfce222c3a496c3dfad0164172222b0\nSUPERVISOR_LICENSE = BSD-like, rdflib (http_client.py), PSF (medusa)\nSUPERVISOR_LICENSE_FILES = COPYRIGHT.txt LICENSES.txt\nSUPERVISOR_CPE_ID_VENDOR = supervisord\nSUPERVISOR_SETUP_TYPE = setuptools\n\ndefine SUPERVISOR_INSTALL_CONF_FILES\n\t$(INSTALL) -d -m 755 $(TARGET_DIR)/etc/supervisor.d\n\t$(INSTALL) -D -m 644 package/supervisor/supervisord.conf \\\n\t\t$(TARGET_DIR)/etc/supervisord.conf\nendef\n\nSUPERVISOR_POST_INSTALL_TARGET_HOOKS += SUPERVISOR_INSTALL_CONF_FILES\n\ndefine SUPERVISOR_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/supervisor/S99supervisord \\\n\t\t$(TARGET_DIR)/etc/init.d/S99supervisord\nendef\n\ndefine SUPERVISOR_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/supervisor/supervisord.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/supervisord.service\nendef\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/supervisor/supervisord.conf",
    "content": "[unix_http_server]\nfile = /var/run/supervisor.sock\n\n[supervisord]\nlogfile = /var/log/supervisor/supervisord.log\nlogfile_maxbytes = 200KB\nlogfile_backups = 1\npidfile = /var/run/supervisord.pid\nchildlogdir = /var/log/supervisor\n\n[rpcinterface:supervisor]\nsupervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface\n\n[supervisorctl]\nserverurl = unix:///var/run/supervisor.sock\n\n[include]\nfiles = /etc/supervisor.d/*.conf\n"
  },
  {
    "path": "package/supervisor/supervisord.service",
    "content": "[Unit]\nDescription=Process Control System\nAfter=syslog.target\n\n[Service]\nExecStart=/usr/bin/supervisord -n\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/suricata/0001-python-ensure-proper-shabang-on-python-scripts.patch",
    "content": "From 44fe2328b715db25134ee095526d2fa47e6cd834 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Wed, 1 Jan 2020 15:25:57 +0100\nSubject: [PATCH] python: ensure proper shabang on python scripts\n\nWhen instlling python scripts, distutils would use the python used to\nrun setup.py as shabang for the scripts it installs.\n\nHowever, when cross-compiling, this is most often not correct.\n\nInstead, using '/usr/bin/env python' is guaranteed to find the proper\npython in the PATH, so we need to instruct setyup.py to use that as the\nexecutable.\n\n[yann.morin.1998@free.fr:\n  - author did not provide their SoB, but it's simple enough to\n    not require it for once\n  - provide proper commit log\n]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n[Fabrice: update for 6.0.0]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n python/Makefile.am | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/python/Makefile.am b/python/Makefile.am\nindex 59d195f29..a41604f72 100644\n--- a/python/Makefile.am\n+++ b/python/Makefile.am\n@@ -6,11 +6,11 @@ EXTRA_DIST =\tsetup.py \\\n if HAVE_PYTHON_DISTUTILS\n all-local:\n \tcd $(srcdir) && \\\n-\t\t$(HAVE_PYTHON) setup.py build --build-base \"$(abs_builddir)\"\n+\t\t$(HAVE_PYTHON) setup.py build -e \"/usr/bin/env python\" --build-base \"$(abs_builddir)\"\n \n install-exec-local:\n \tcd $(srcdir) && \\\n-\t\t$(HAVE_PYTHON) setup.py build --build-base \"$(abs_builddir)\" \\\n+\t\t$(HAVE_PYTHON) setup.py build -e \"/usr/bin/env python\" --build-base \"$(abs_builddir)\" \\\n \t\tinstall --prefix $(DESTDIR)$(prefix)\n \n uninstall-local:\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/suricata/0002-configure.ac-allow-the-user-to-override-RUST_TARGET.patch",
    "content": "From 7ab4d5eb55e1d3900390b76e5f46e80e22d4e80e Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 10 Oct 2020 21:34:21 +0200\nSubject: [PATCH] configure.ac: allow the user to override RUST_TARGET\n\nWhen cross-compiling, RUST_TARGET is not always equal to host_triplet\n(e.g. buildroot) so allow the user to override this default value\nthrough RUST_TARGET environment variable\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 32c230209..7d7c9373f 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2489,7 +2489,12 @@ fi\n     have_rust_vendor=\"no\"\n \n     if test \"x$cross_compiling\" = \"xyes\"; then\n-      RUST_SURICATA_LIB_XC_DIR=\"${host_alias}/\"\n+      if test \"x$RUST_TARGET\" != \"x\"; then\n+        RUST_SURICATA_LIB_XC_DIR=\"$RUST_TARGET/\"\n+        AC_SUBST([RUST_TARGET],[\"--target $RUST_TARGET\"])\n+      else\n+        RUST_SURICATA_LIB_XC_DIR=\"${host_alias}/\"\n+      fi\n     else\n       if test \"x$CARGO_BUILD_TARGET\" = \"x\"; then\n         RUST_SURICATA_LIB_XC_DIR=\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/suricata/Config.in",
    "content": "config BR2_PACKAGE_SURICATA\n\tbool \"suricata\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_HOST_RUSTC\n\tselect BR2_PACKAGE_JANSSON\n\tselect BR2_PACKAGE_LIBHTP\n\tselect BR2_PACKAGE_LIBPCAP\n\tselect BR2_PACKAGE_LIBYAML\n\tselect BR2_PACKAGE_PCRE\n\thelp\n\t  Suricata is a free and open source, mature, fast and robust\n\t  network threat detection engine.\n\n\t  The Suricata engine is capable of real time intrusion\n\t  detection (IDS), inline intrusion prevention (IPS), network\n\t  security monitoring (NSM) and offline pcap processing.\n\n\t  https://suricata-ids.org\n\ncomment \"suricata needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/suricata/S99suricata",
    "content": "#!/bin/sh\n\nDAEMON=suricata\nPIDFILE=/var/run/$DAEMON.pid\n\nSURICATA_ARGS=\"-c /etc/suricata/suricata.yaml -i eth0\"\n\nSURICATA_RELOAD=0\n\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\tmkdir -p /var/log/suricata\n\tstart-stop-daemon -b -m -S -q -p \"$PIDFILE\" -x \"/usr/bin/$DAEMON\" \\\n\t\t-- $SURICATA_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\n# SIGUSR2 makes suricata reload rules\nreload() {\n\tprintf 'Reloading %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -s \"$SURICATA_RELOAD\" -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\ncase \"$1\" in\n\tstart|stop|restart|reload)\n\t\t\"$1\";;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/suricata/suricata.hash",
    "content": "# Locally computed:\nsha256  a8f197e33d1678689ebbf7bc1abe84934c465d22c504c47c2c7e9b74aa042d0d  suricata-6.0.4.tar.gz\n\n# Hash for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/suricata/suricata.mk",
    "content": "################################################################################\n#\n# suricata\n#\n################################################################################\n\nSURICATA_VERSION = 6.0.4\nSURICATA_SITE = https://www.openinfosecfoundation.org/download\nSURICATA_LICENSE = GPL-2.0\nSURICATA_LICENSE_FILES = COPYING LICENSE\nSURICATA_CPE_ID_VENDOR = oisf\n# 0001-python-ensure-proper-shabang-on-python-scripts.patch\n# 0002-configure.ac-allow-the-user-to-override-RUST_TARGET.patch\nSURICATA_AUTORECONF = YES\n\nSURICATA_DEPENDENCIES = \\\n\thost-pkgconf \\\n\thost-rustc \\\n\tjansson \\\n\t$(if $(BR2_PACKAGE_LIBCAP_NG),libcap-ng) \\\n\t$(if $(BR2_PACKAGE_LIBEVENT),libevent) \\\n\tlibhtp \\\n\t$(if $(BR2_PACKAGE_LIBNFNETLINK),libnfnetlink) \\\n\tlibpcap \\\n\tlibyaml \\\n\t$(if $(BR2_PACKAGE_LZ4),lz4) \\\n\tpcre \\\n\t$(if $(BR2_PACKAGE_XZ),xz)\n\nSURICATA_CONF_ENV = \\\n\tac_cv_path_HAVE_SPHINXBUILD=no \\\n\tCARGO_HOME=$(HOST_DIR)/share/cargo \\\n\tRUST_TARGET=$(RUSTC_TARGET_NAME)\n\nSURICATA_CONF_OPTS = \\\n\t--disable-gccprotect \\\n\t--disable-pie \\\n\t--disable-suricata-update \\\n\t--enable-non-bundled-htp\n\n# install: install binaries\n# install-conf: install initial configuration files\n# install-full: install binaries, configuration and rules (rules will be\n#               download through wget/curl)\nSURICATA_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install install-conf\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nSURICATA_CONF_ENV += LIBS=-latomic\nendif\n\nifeq ($(BR2_PACKAGE_FILE),y)\nSURICATA_DEPENDENCIES += file\nSURICATA_CONF_OPTS += --enable-libmagic\nelse\nSURICATA_CONF_OPTS += --disable-libmagic\nendif\n\nifeq ($(BR2_PACKAGE_LIBMAXMINDDB),y)\nSURICATA_DEPENDENCIES += libmaxminddb\nSURICATA_CONF_OPTS += --enable-geoip\nelse\nSURICATA_CONF_OPTS += --disable-geoip\nendif\n\nifeq ($(BR2_PACKAGE_HIREDIS),y)\nSURICATA_DEPENDENCIES += hiredis\nSURICATA_CONF_OPTS += --enable-hiredis\nelse\nSURICATA_CONF_OPTS += --disable-hiredis\nendif\n\nifeq ($(BR2_PACKAGE_LIBNET),y)\nSURICATA_DEPENDENCIES += libnet\nSURICATA_CONF_OPTS += --with-libnet-includes=$(STAGING_DIR)/usr/include\nendif\n\nifeq ($(BR2_PACKAGE_LIBNETFILTER_LOG),y)\nSURICATA_DEPENDENCIES += libnetfilter_log\nSURICATA_CONF_OPTS += --enable-nflog\nelse\nSURICATA_CONF_OPTS += --disable-nflog\nendif\n\nifeq ($(BR2_PACKAGE_LIBNETFILTER_QUEUE),y)\nSURICATA_DEPENDENCIES += libnetfilter_queue\nSURICATA_CONF_OPTS += --enable-nfqueue\nelse\nSURICATA_CONF_OPTS += --disable-nfqueue\nendif\n\nifeq ($(BR2_PACKAGE_LIBNSPR),y)\nSURICATA_DEPENDENCIES += libnspr\nSURICATA_CONF_OPTS += --enable-nspr\nelse\nSURICATA_CONF_OPTS += --disable-nspr\nendif\n\nifeq ($(BR2_PACKAGE_LIBNSS),y)\nSURICATA_DEPENDENCIES += libnss\nSURICATA_CONF_OPTS += --enable-nss\nelse\nSURICATA_CONF_OPTS += --disable-nss\nendif\n\nifeq ($(BR2_PACKAGE_LUA),y)\nSURICATA_CONF_OPTS += --enable-lua\nSURICATA_DEPENDENCIES += lua\nelse\nSURICATA_CONF_OPTS += --disable-lua\nendif\n\nifeq ($(BR2_PACKAGE_LUAJIT),y)\nSURICATA_CONF_OPTS += --enable-luajit\nSURICATA_DEPENDENCIES += luajit\nelse\nSURICATA_CONF_OPTS += --disable-luajit\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)\nSURICATA_CONF_OPTS += --enable-python\nSURICATA_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,python3)\nelse\nSURICATA_CONF_OPTS += --disable-python\nendif\n\ndefine SURICATA_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/suricata/S99suricata \\\n\t\t$(TARGET_DIR)/etc/init.d/S99suricata\nendef\n\ndefine SURICATA_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/suricata/suricata.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/suricata.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/suricata/suricata.service",
    "content": "[Unit]\nDescription=Suricata Intrusion Detection Service\nAfter=network.target\n\n[Service]\nEnvironmentFile=-/etc/default/suricata\nExecStartPre=/bin/rm -f /var/run/suricata.pid\nExecStartPre=/usr/bin/mkdir -p /var/log/suricata\nExecStart=/usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 --pidfile /var/run/suricata.pid\nExecReload=/bin/kill -USR2 $MAINPID\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/swig/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_SWIG\n\tbool \"host swig\"\n\thelp\n\t  swig is a software development tool that connects programs\n\t  written in C and C++ with a variety of high-level\n\t  programming languages.\n\n\t  http://www.swig.org/\n"
  },
  {
    "path": "package/swig/swig.hash",
    "content": "# Locally computed:\nsha256\td53be9730d8d58a16bf0cbd1f8ac0c0c3e1090573168bfa151b01eb47fa906fc\tswig-4.0.2.tar.gz\nsha256\tf53abaeed775018d519a1b9615f0ca17894772bd9ca21c2a156bf340ac41c13e\tLICENSE\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\tLICENSE-GPL\nsha256\t7f50d942373a871211c5efee03f3db2f9efd1cff1002b0ef8e3748baa611a5c2\tLICENSE-UNIVERSITIES\n"
  },
  {
    "path": "package/swig/swig.mk",
    "content": "################################################################################\n#\n# swig\n#\n################################################################################\n\nSWIG_VERSION_MAJOR = 4.0\nSWIG_VERSION = $(SWIG_VERSION_MAJOR).2\nSWIG_SITE = http://downloads.sourceforge.net/project/swig/swig/swig-$(SWIG_VERSION)\nHOST_SWIG_DEPENDENCIES = host-bison host-pcre\nHOST_SWIG_CONF_OPTS = \\\n\t--with-pcre \\\n\t--disable-ccache \\\n\t--without-octave\nSWIG_LICENSE = GPL-3.0+, BSD-2-Clause, BSD-3-Clause\nSWIG_LICENSE_FILES = LICENSE LICENSE-GPL LICENSE-UNIVERSITIES\n\n# CMake looks first at swig3.0, then swig2.0 and then swig. However,\n# when doing the search, it will look into the PATH for swig2.0 first,\n# and then for swig.\n# While the PATH contains first our $(HOST_DIR)/bin, it also contains\n# /usr/bin and other system directories. Therefore, if there is an\n# installed swig3.0 on the system, it will get the preference over the\n# swig installed in $(HOST_DIR)/bin, which isn't nice. To prevent\n# this from happening we create a symbolic link swig3.0 -> swig, so that\n# our swig always gets used.\n\ndefine HOST_SWIG_INSTALL_SYMLINK\n\tln -fs swig $(HOST_DIR)/bin/swig$(SWIG_VERSION_MAJOR)\n\tln -fs swig $(HOST_DIR)/bin/swig3.0\nendef\n\nHOST_SWIG_POST_INSTALL_HOOKS += HOST_SWIG_INSTALL_SYMLINK\n\n$(eval $(host-autotools-package))\n\nSWIG = $(HOST_DIR)/bin/swig$(SWIG_VERSION_MAJOR)\n"
  },
  {
    "path": "package/swupdate/10-mongoose-args",
    "content": "SWUPDATE_WEBSERVER_ARGS=\"-r /var/www/swupdate ${SWUPDATE_MONGOOSE_EXTRA_ARGS:--p 8080}\"\n"
  },
  {
    "path": "package/swupdate/90-start-progress",
    "content": "exec /usr/bin/swupdate-progress -w -r &\n"
  },
  {
    "path": "package/swupdate/Config.in",
    "content": "config BR2_PACKAGE_SWUPDATE\n\tbool \"swupdate\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\t# swupdate requires a parser and uses libconfig as default\n\tselect BR2_PACKAGE_LIBCONFIG if !BR2_PACKAGE_JSON_C && \\\n\t\t!BR2_PACKAGE_HAS_LUAINTERPRETER\n\thelp\n\t  swupdate provides a reliable way to update the software on\n\t  an embedded system.\n\n\t  swupdate is highly configurable to fit the targets\n\t  requirements and to minimize the footprint. The provided\n\t  default configuration file BR2_PACKAGE_SWUPDATE_CONFIG will\n\t  enable swupdate with an embedded webserver, a parser and a\n\t  handler for raw NAND or NOR flash.\n\n\t  The default configuration file builds a reasonable firmware\n\t  update system with minimal external dependencies in mind.\n\t  If you like to use your own modified configuration,\n\t  you have to select the necessary packages manually:\n\n\t  * Select BR2_PACKAGE_LUA or BR2_PACKAGE_LUAJIT if you want\n\t    want to have Lua support.\n\t  * Select BR2_PACKAGE_LIBCURL if you want to use the download\n\t    feature.\n\t  * Select BR2_PACKAGE_OPENSSL or BR2_PACKAGE_MBEDTLS if you\n\t    want to add encryption support.\n\t  * Select BR2_PACKAGE_MTD if you want to use swupdate with\n\t    UBI partitions.\n\t  * Select BR2_PACKAGE_ZLIB if you want to deal with gzip\n\t    compressed archives.\n\t  * Select BR2_PACKAGE_ZSTD if you want to deal with zstd\n\t    compressed archives.\n\t  * Select BR2_PACKAGE_ZEROMQ to add support for using a\n\t    remote handler.\n\t  * Select BR2_PACKAGE_LIBRSYNC to add support for using\n\t    rdiff handler.\n\t  * Select BR2_PACKAGE_LIBUBOOTENV to add support for setting\n\t    the U-Boot environment.\n\t  * Select BR2_PACKAGE_LIBGPIOD to add support for\n\t    microcontroller firmware update.\n\t  * Select BR2_PACKAGE_EFIBOOTMGR to add support for EFI Boot\n\t    Guard.\n\t  * Select BR2_PACKAGE_LIBCURL, BR2_PACKAGE_JSON_C,\n\t    BR2_PACKAGE_LIBWEBSOCKETS, and BR2_PACKAGE_LIBURIPARSER\n\t    to add support for the SWU forwarder.\n\n\t  https://sbabic.github.io/swupdate\n\nif BR2_PACKAGE_SWUPDATE\n\nconfig BR2_PACKAGE_SWUPDATE_CONFIG\n\tstring \"swupdate configuration file\"\n\tdefault \"package/swupdate/swupdate.config\"\n\thelp\n\t  Path to the swupdate configuration file.\n\n\t  I you wish to use your own modified swupdate configuration\n\t  file specify the config file location with this option.\n\nconfig BR2_PACKAGE_SWUPDATE_USB\n\tbool \"swupdate usb\"\n\tdepends on BR2_PACKAGE_SYSTEMD\n\thelp\n\t  Enable update from USB disk.\n\ncomment \"swupdate usb needs systemd\"\n\tdepends on !BR2_PACKAGE_SYSTEMD\n\nconfig BR2_PACKAGE_SWUPDATE_WEBSERVER\n\tbool \"swupdate webserver\"\n\tdefault y\n\thelp\n\t  Enable update from remote using a web server on the target.\n\nconfig BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE\n\tbool \"install default website\"\n\tdefault y\n\tdepends on BR2_PACKAGE_SWUPDATE_WEBSERVER\n\thelp\n\t  Install the provided website to /var/www/swupdate.\n\n\t  This is necessary if you want to run swupdate with the\n\t  embedded webserver and do not provide an own website to be\n\t  installed to /var/www/swupdate.\nendif\n\ncomment \"swupdate needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/swupdate/S80swupdate",
    "content": "#!/bin/sh\n\nDAEMON=\"swupdate\"\nDAEMON_WRAPPER=\"/usr/lib/swupdate/swupdate.sh\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\tstart-stop-daemon -S -q -b -m -p \"$PIDFILE\" -x $DAEMON_WRAPPER\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature (does not\n\t\t# reconfigure/restart on SIGHUP, just closes all open files).\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/swupdate/swupdate-progress.service",
    "content": "[Unit]\nDescription=swupdate progress service\nAfter=swupdate.service\n\n[Service]\nExecStart=/usr/bin/swupdate-progress -r -w\n\n[Install]\nWantedBy=swupdate.service\n"
  },
  {
    "path": "package/swupdate/swupdate-usb.rules",
    "content": "ACTION==\"add\", KERNEL==\"sd*\", SUBSYSTEM==\"block\", ENV{ID_BUS}==\"usb\", ENV{ID_FS_USAGE}==\"filesystem\", TAG+=\"systemd\", ENV{SYSTEMD_WANTS}+=\"swupdate-usb@%k.service\"\n"
  },
  {
    "path": "package/swupdate/swupdate-usb@.service",
    "content": "[Unit]\nDescription=usb media swupdate service\nRequires=swupdate-progress.service\n\n[Service]\nExecStartPre=/bin/mount /dev/%I /mnt\nExecStart=/bin/sh -c \"swupdate-client -v /mnt/*.swu\"\nExecStopPost=/bin/umount /mnt\n"
  },
  {
    "path": "package/swupdate/swupdate.config",
    "content": "#\n# Automatically generated file; DO NOT EDIT.\n# Swupdate Configuration\n#\nCONFIG_HAVE_DOT_CONFIG=y\n\n#\n# Swupdate Settings\n#\n\n#\n# General Configuration\n#\n# CONFIG_CURL is not set\n# CONFIG_CURL_SSL is not set\n# CONFIG_SYSTEMD is not set\nCONFIG_DEFAULT_CONFIG_FILE=\"/etc/swupdate.cfg\"\nCONFIG_SCRIPTS=y\n# CONFIG_HW_COMPATIBILITY is not set\nCONFIG_SW_VERSIONS_FILE=\"/etc/sw-versions\"\n\n#\n# Socket Paths\n#\nCONFIG_SOCKET_CTRL_PATH=\"/tmp/sockinstctrl\"\nCONFIG_SOCKET_PROGRESS_PATH=\"/tmp/swupdateprog\"\nCONFIG_SOCKET_REMOTE_HANDLER_DIRECTORY=\"/tmp/\"\n\n#\n# MTD support needs libmtd\n#\n\n#\n# Lua support needs a Lua interpreter\n#\n# CONFIG_FEATURE_SYSLOG is not set\n\n#\n# Build Options\n#\nCONFIG_CROSS_COMPILE=\"\"\nCONFIG_SYSROOT=\"\"\nCONFIG_EXTRA_CFLAGS=\"\"\nCONFIG_EXTRA_LDFLAGS=\"\"\nCONFIG_EXTRA_LDLIBS=\"\"\n\n#\n# Debugging Options\n#\n# CONFIG_DEBUG is not set\n# CONFIG_WERROR is not set\n# CONFIG_NOCLEANUP is not set\n\n#\n# EFI Boot Guard needs libebgenv and libz\n#\nCONFIG_BOOTLOADER_NONE=y\n# CONFIG_BOOTLOADER_GRUB is not set\n\n#\n# U-Boot support needs libubootenv, libz\n#\nCONFIG_SSL_IMPL_NONE=y\n\n#\n# Image downloading support needs libcurl\n#\n\n#\n# Hash checking needs an SSL implementation\n#\n\n#\n# Image signature verification needs an SSL implementation\n#\n\n#\n# Image encryption needs an SSL implementation\n#\n# CONFIG_SURICATTA is not set\nCONFIG_WEBSERVER=y\nCONFIG_MONGOOSE=y\nCONFIG_MONGOOSEIPV6=y\n\n#\n# SSL support needs an SSL implementation\n#\n\n#\n# Parser Features\n#\nCONFIG_LIBCONFIG=y\nCONFIG_PARSERROOT=\"\"\n\n#\n# JSON config parser support needs json-c\n#\n# CONFIG_SETSWDESCRIPTION is not set\n\n#\n# Image Handlers\n#\n\n#\n# ubivol support needs libubi\n#\n# CONFIG_DISKPART is not set\nCONFIG_RAW=y\n# CONFIG_RDIFFHANDLER is not set\n# CONFIG_SHELLSCRIPTHANDLER is not set\n\n#\n# archive support needs libarchive\n#\n\n#\n# remote handler needs zeromq\n#\n\n#\n# swuforward handler needs json-c and curl\n#\n\n#\n# SWU forwarder requires libcurl\n#\n\n#\n# swuforward handler needs json-c and curl\n#\n# CONFIG_BOOTLOADERHANDLER is not set\n\n#\n# Microcontroller handler depends on libgpiod\n#\n"
  },
  {
    "path": "package/swupdate/swupdate.hash",
    "content": "# Locally calculated\nsha256  5afe78ae94e869bcb911d8592251641cdab80096d8e5149d483054ea49f9aab8  swupdate-2021.04.tar.gz\nsha256  4cf04ed34ff0ebbf5c71345b56e6af5093fc17206364cca0ebbae92ef3940683  LICENSES/BSD-1-Clause.txt\nsha256  3139f288c2e4cbe4a8c0e8c13c82661f3c798d446e1fbbc27a48a69aa7b4ec0d  LICENSES/BSD-2-Clause.txt\nsha256  e27a3e87706b3aa5ff2e50eaafe2e6ed5397fbf2d7679eaf444a6d000518a3a6  LICENSES/BSD-3-Clause.txt\nsha256  0558101984550fa84d1d13c2af11d116c20079d2be58711e8d99cadce7009192  LICENSES/CC0-1.0.txt\nsha256  6e4efcb1952c7976d3fae93b802c591384c4f50949225a802adf41bc266fa3e6  LICENSES/CC-BY-ND-4.0.txt\nsha256  5d51b52a40391a26cbb2accf5dc5d1c165de49a022d9d5efb50b22204d2682ec  LICENSES/GPL-2.0-only.txt\nsha256  43fd695e9b198a9a4997cc2d02e10d26cae937e2c4930b9eff9c6d349c85cd32  LICENSES/GPL-2.0-or-later.txt\nsha256  492e801f1b0632185431472f148885a4fe8e990b10da57b4986a8bcf140a5374  LICENSES/ISC.txt\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSES/LGPL-2.1-or-later.txt\nsha256  43492b377cf2fb67942d1dd231146bd4e6578646ad13ef289297c9dd75cbc478  LICENSES/LicenseRef-OpenSSL-Exception.txt\nsha256  89807acf2309bd285f033404ee78581602f3cd9b819a16ac2f0e5f60ff4a473e  LICENSES/MIT.txt\n"
  },
  {
    "path": "package/swupdate/swupdate.mk",
    "content": "################################################################################\n#\n# swupdate\n#\n################################################################################\n\nSWUPDATE_VERSION = 2021.04\nSWUPDATE_SITE = $(call github,sbabic,swupdate,$(SWUPDATE_VERSION))\nSWUPDATE_LICENSE = GPL-2.0, GPL-2.0+ with OpenSSL exception, LGPL-2.1+, MIT, ISC, BSD-1-Clause, BSD-2-Clause, BSD-3-Clause, CC0-1.0, CC-BY-ND-4.0\nSWUPDATE_LICENSE_FILES = LICENSES/BSD-1-Clause.txt \\\n\tLICENSES/BSD-2-Clause.txt \\\n\tLICENSES/BSD-3-Clause.txt \\\n\tLICENSES/CC0-1.0.txt \\\n\tLICENSES/CC-BY-ND-4.0.txt \\\n\tLICENSES/GPL-2.0-only.txt \\\n\tLICENSES/GPL-2.0-or-later.txt \\\n\tLICENSES/ISC.txt \\\n\tLICENSES/LGPL-2.1-or-later.txt \\\n\tLICENSES/LicenseRef-OpenSSL-Exception.txt \\\n\tLICENSES/MIT.txt\n\n# swupdate uses $CROSS-cc instead of $CROSS-gcc, which is not\n# available in all external toolchains, and use CC for linking. Ensure\n# TARGET_CC is used for both.\nSWUPDATE_MAKE_ENV = CC=\"$(TARGET_CC)\" LD=\"$(TARGET_CC)\" SKIP_STRIP=y\n\n# swupdate bundles its own version of mongoose (version 6.16)\n\nifeq ($(BR2_PACKAGE_E2FSPROGS),y)\nSWUPDATE_DEPENDENCIES += e2fsprogs\nendif\n\nifeq ($(BR2_PACKAGE_EFIBOOTMGR),y)\nSWUPDATE_DEPENDENCIES += efibootmgr\nSWUPDATE_MAKE_ENV += HAVE_LIBEBGENV=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_LIBEBGENV=n\nendif\n\nifeq ($(BR2_PACKAGE_JSON_C),y)\nSWUPDATE_DEPENDENCIES += json-c\nSWUPDATE_MAKE_ENV += HAVE_JSON_C=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_JSON_C=n\nendif\n\nifeq ($(BR2_PACKAGE_LIBARCHIVE),y)\nSWUPDATE_DEPENDENCIES += libarchive\nSWUPDATE_MAKE_ENV += HAVE_LIBARCHIVE=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_LIBARCHIVE=n\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y)\nSWUPDATE_DEPENDENCIES += util-linux\nSWUPDATE_MAKE_ENV += HAVE_LIBBLKID=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_LIBBLKID=n\nendif\n\nifeq ($(BR2_PACKAGE_LIBCONFIG),y)\nSWUPDATE_DEPENDENCIES += libconfig\nSWUPDATE_MAKE_ENV += HAVE_LIBCONFIG=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_LIBCONFIG=n\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nSWUPDATE_DEPENDENCIES += libcurl\nSWUPDATE_MAKE_ENV += HAVE_LIBCURL=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_LIBCURL=n\nendif\n\nifeq ($(BR2_PACKAGE_LIBGPIOD),y)\nSWUPDATE_DEPENDENCIES += libgpiod\nSWUPDATE_MAKE_ENV += HAVE_LIBGPIOD=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_LIBGPIOD=n\nendif\n\nifeq ($(BR2_PACKAGE_LIBURIPARSER),y)\nSWUPDATE_DEPENDENCIES += liburiparser\nSWUPDATE_MAKE_ENV += HAVE_URIPARSER=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_URIPARSER=n\nendif\n\nifeq ($(BR2_PACKAGE_LIBWEBSOCKETS),y)\nSWUPDATE_DEPENDENCIES += libwebsockets\nSWUPDATE_MAKE_ENV += HAVE_LIBWEBSOCKETS=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_LIBWEBSOCKETS=n\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LUAINTERPRETER),y)\nSWUPDATE_DEPENDENCIES += luainterpreter host-pkgconf\n# defines the base name for the pkg-config file (\"lua\" or \"luajit\")\ndefine SWUPDATE_SET_LUA_VERSION\n\t$(call KCONFIG_SET_OPT,CONFIG_LUAPKG,$(BR2_PACKAGE_PROVIDES_LUAINTERPRETER))\nendef\nSWUPDATE_MAKE_ENV += HAVE_LUA=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_LUA=n\nendif\n\nifeq ($(BR2_PACKAGE_MTD),y)\nSWUPDATE_DEPENDENCIES += mtd\nSWUPDATE_MAKE_ENV += HAVE_LIBMTD=y\nSWUPDATE_MAKE_ENV += HAVE_LIBUBI=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_LIBMTD=n\nSWUPDATE_MAKE_ENV += HAVE_LIBUBI=n\nendif\n\n# OpenSSL or mbedTLS\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nSWUPDATE_DEPENDENCIES += openssl\nSWUPDATE_MAKE_ENV += HAVE_LIBSSL=y\nSWUPDATE_MAKE_ENV += HAVE_LIBCRYPTO=y\nSWUPDATE_MAKE_ENV += HAVE_MBEDTLS=n\nelse\nSWUPDATE_MAKE_ENV += HAVE_LIBSSL=n\nSWUPDATE_MAKE_ENV += HAVE_LIBCRYPTO=n\nifeq ($(BR2_PACKAGE_MBEDTLS),y)\nSWUPDATE_DEPENDENCIES += mbedtls\nSWUPDATE_MAKE_ENV += HAVE_MBEDTLS=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_MBEDTLS=n\nendif\nendif\n\nifeq ($(BR2_PACKAGE_P11_KIT),y)\nSWUPDATE_DEPENDENCIES += p11-kit\nSWUPDATE_MAKE_ENV += HAVE_P11KIT=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_P11KIT=n\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nSWUPDATE_DEPENDENCIES += systemd\ndefine SWUPDATE_SET_SYSTEMD\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SYSTEMD)\nendef\nelse\ndefine SWUPDATE_SET_SYSTEMD\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_SYSTEMD)\nendef\nendif\n\nifeq ($(BR2_PACKAGE_LIBUBOOTENV),y)\nSWUPDATE_DEPENDENCIES += libubootenv\nSWUPDATE_MAKE_ENV += HAVE_LIBUBOOTENV=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_LIBUBOOTENV=n\nendif\n\nifeq ($(BR2_PACKAGE_WOLFSSL),y)\nSWUPDATE_DEPENDENCIES += wolfssl\nSWUPDATE_MAKE_ENV += HAVE_WOLFSSL=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_WOLFSSL=n\nendif\n\nifeq ($(BR2_PACKAGE_ZEROMQ),y)\nSWUPDATE_DEPENDENCIES += zeromq\nSWUPDATE_MAKE_ENV += HAVE_LIBZEROMQ=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_LIBZEROMQ=n\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nSWUPDATE_DEPENDENCIES += zlib\nSWUPDATE_MAKE_ENV += HAVE_ZLIB=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_ZLIB=n\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nSWUPDATE_DEPENDENCIES += zstd\nSWUPDATE_MAKE_ENV += HAVE_ZSTD=y\nelse\nSWUPDATE_MAKE_ENV += HAVE_ZSTD=n\nendif\n\nifeq ($(BR2_PACKAGE_LIBRSYNC),y)\nSWUPDATE_DEPENDENCIES += librsync\nendif\n\nifeq ($(BR2_PACKAGE_SWUPDATE_WEBSERVER),y)\ndefine SWUPDATE_SET_WEBSERVER\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_WEBSERVER)\nendef\nelse\ndefine SWUPDATE_SET_WEBSERVER\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_WEBSERVER)\nendef\nendif\n\nSWUPDATE_BUILD_CONFIG = $(@D)/.config\n\nSWUPDATE_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG))\nSWUPDATE_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig\n\nSWUPDATE_MAKE_OPTS = \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tCONFIG_EXTRA_CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\tCONFIG_EXTRA_LDFLAGS=\"$(TARGET_LDFLAGS)\"\n\ndefine SWUPDATE_KCONFIG_FIXUP_CMDS\n\t$(SWUPDATE_SET_LUA_VERSION)\n\t$(SWUPDATE_SET_SYSTEMD)\n\t$(SWUPDATE_SET_WEBSERVER)\nendef\n\ndefine SWUPDATE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(SWUPDATE_MAKE_ENV) $(MAKE) -C $(@D) $(SWUPDATE_MAKE_OPTS)\nendef\n\ndefine SWUPDATE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(SWUPDATE_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(SWUPDATE_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install\n\t$(if $(BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE), \\\n\t\tmkdir -p $(TARGET_DIR)/var/www/swupdate; \\\n\t\tcp -dpfr $(@D)/examples/www/v2/* $(TARGET_DIR)/var/www/swupdate)\nendef\n\n# Checks to give errors that the user can understand\n# Must be before we call to kconfig-package\nifeq ($(BR2_PACKAGE_SWUPDATE)$(BR_BUILDING),yy)\nifeq ($(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG)),)\n$(error No Swupdate configuration file specified, check your BR2_PACKAGE_SWUPDATE_CONFIG setting)\nendif\nendif\n\n# Services and configs derived from meta-swupdate(MIT license)\n# https://github.com/sbabic/meta-swupdate/tree/master/recipes-support/swupdate/swupdate\ndefine SWUPDATE_INSTALL_COMMON\n\tmkdir -p $(TARGET_DIR)/etc/swupdate/conf.d \\\n\t\t$(TARGET_DIR)/usr/lib/swupdate/conf.d\n\t$(INSTALL) -D -m 755 $(SWUPDATE_PKGDIR)/swupdate.sh \\\n\t\t$(TARGET_DIR)/usr/lib/swupdate/swupdate.sh\n\t$(if $(BR2_PACKAGE_SWUPDATE_WEBSERVER), \\\n\t\t$(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/10-mongoose-args \\\n\t\t\t$(TARGET_DIR)/usr/lib/swupdate/conf.d/10-mongoose-args)\nendef\ndefine SWUPDATE_INSTALL_INIT_SYSTEMD\n\t$(SWUPDATE_INSTALL_COMMON)\n\t$(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/swupdate.service\n\t$(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate.socket \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/swupdate.socket\n\t$(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate-usb@.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/swupdate-usb@.service\n\t$(if $(BR2_PACKAGE_SWUPDATE_USB), \\\n\t\t$(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate-usb.rules \\\n\t\t\t$(TARGET_DIR)/lib/udev/rules.d/swupdate-usb.rules)\n\t$(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/swupdate-progress.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/swupdate-progress.service\n\t$(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/tmpfiles-swupdate.conf \\\n\t\t$(TARGET_DIR)/usr/lib/tmpfiles.d/tmpfiles-swupdate.conf\nendef\ndefine SWUPDATE_INSTALL_INIT_SYSV\n\t$(SWUPDATE_INSTALL_COMMON)\n\t$(INSTALL) -D -m 755 $(SWUPDATE_PKGDIR)/S80swupdate \\\n\t\t$(TARGET_DIR)/etc/init.d/S80swupdate\n\t$(INSTALL) -D -m 644 $(SWUPDATE_PKGDIR)/90-start-progress \\\n\t\t$(TARGET_DIR)/usr/lib/swupdate/conf.d/90-start-progress\nendef\n\n$(eval $(kconfig-package))\n"
  },
  {
    "path": "package/swupdate/swupdate.service",
    "content": "[Unit]\nDescription=SWUpdate daemon\nDocumentation=https://github.com/sbabic/swupdate\nDocumentation=https://sbabic.github.io/swupdate\n\n[Service]\nExecStart=/usr/lib/swupdate/swupdate.sh\nKillMode=mixed\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/swupdate/swupdate.sh",
    "content": "#!/bin/sh\n\n# Based on example script created by Adrian Freihofer\n# https://github.com/sbabic/meta-swupdate/blob/master/recipes-support/swupdate/swupdate/swupdate.sh\n\n# Override these variables in sourced script(s) located\n# in /usr/lib/swupdate/conf.d or /etc/swupdate/conf.d\n# NOTE: There are substrings used in some swupdate commands which will\n#       need to be wrapped in a script to prevent tokenizing\n#       ( -p/-P post/pre cmds are good examples)\nSWUPDATE_ARGS=\"-v ${SWUPDATE_EXTRA_ARGS}\"\nSWUPDATE_WEBSERVER_ARGS=\"\"\nSWUPDATE_SURICATTA_ARGS=\"\"\n\n# source all files from /etc/swupdate/conf.d and /usr/lib/swupdate/conf.d/\n# A file found in /etc replaces the same file in /usr\nfor f in `(test -d /usr/lib/swupdate/conf.d/ && ls -1 /usr/lib/swupdate/conf.d/; test -d /etc/swupdate/conf.d && ls -1 /etc/swupdate/conf.d) | sort -u`; do\n  if [ -f /etc/swupdate/conf.d/$f ]; then\n    . /etc/swupdate/conf.d/$f\n  else\n    . /usr/lib/swupdate/conf.d/$f\n  fi\ndone\n\nif [ \"$SWUPDATE_WEBSERVER_ARGS\" != \"\" -a  \"$SWUPDATE_SURICATTA_ARGS\" != \"\" ]; then\n  exec /usr/bin/swupdate $SWUPDATE_ARGS -w \"$SWUPDATE_WEBSERVER_ARGS\" -u \"$SWUPDATE_SURICATTA_ARGS\"\nelif [ \"$SWUPDATE_WEBSERVER_ARGS\" != \"\" ]; then\n  exec /usr/bin/swupdate $SWUPDATE_ARGS -w \"$SWUPDATE_WEBSERVER_ARGS\"\nelif [ \"$SWUPDATE_SURICATTA_ARGS\" != \"\" ]; then\n  exec /usr/bin/swupdate $SWUPDATE_ARGS -u \"$SWUPDATE_SURICATTA_ARGS\"\nelse\n  exec /usr/bin/swupdate $SWUPDATE_ARGS\nfi\n"
  },
  {
    "path": "package/swupdate/swupdate.socket",
    "content": "[Unit]\nDescription=SWUpdate socket listener\nDocumentation=https://github.com/sbabic/swupdate\nDocumentation=https://sbabic.github.io/swupdate\n\n[Socket]\nListenStream=/tmp/sockinstctrl\nListenStream=/tmp/swupdateprog\n\n[Install]\nWantedBy=sockets.target\n"
  },
  {
    "path": "package/swupdate/tmpfiles-swupdate.conf",
    "content": "X /tmp/datadst\nX /tmp/scripts\n"
  },
  {
    "path": "package/sylpheed/0001-harden-link-checker-before-accepting-click.patch",
    "content": "From ac286a71ed78429e16c612161251b9ea90ccd431 Mon Sep 17 00:00:00 2001\nFrom: Paul <paul@claws-mail.org>\nDate: Sun, 23 May 2021 12:16:40 +0100\nSubject: [PATCH] harden link checker before accepting click\n\n[Retrieved from:\nhttps://git.claws-mail.org/?p=claws.git;a=commit;h=ac286a71ed78429e16c612161251b9ea90ccd431]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/textview.c | 4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/src/textview.c b/src/textview.c\nindex 62ad46eaf..3cdf5d911 100644\n--- a/src/textview.c\n+++ b/src/textview.c\n@@ -2885,7 +2885,7 @@ gboolean textview_uri_security_check(TextView *textview, ClickableText *uri)\n \tgboolean retval = TRUE;\n \n \tif (is_uri_string(uri->uri) == FALSE)\n-\t\treturn TRUE;\n+\t\treturn FALSE;\n \n \tvisible_str = textview_get_visible_uri(textview, uri);\n \tif (visible_str == NULL)\n@@ -2922,6 +2922,8 @@ gboolean textview_uri_security_check(TextView *textview, ClickableText *uri)\n \t\tif (aval == G_ALERTALTERNATE)\n \t\t\tretval = TRUE;\n \t}\n+\tif (strlen(uri->uri) > get_uri_len(uri->uri))\n+\t\tretval = FALSE;\n \n \tg_free(visible_str);\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/sylpheed/Config.in",
    "content": "config BR2_PACKAGE_SYLPHEED\n\tbool \"sylpheed\"\n\tdepends on BR2_PACKAGE_LIBGTK2\n\thelp\n\t  lightweight and user-friendly e-mail client.\n\n\t  http://sylpheed.sraoss.jp/en/\n"
  },
  {
    "path": "package/sylpheed/sylpheed.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256 0d6bc5eb46f5d0a463757c62bc80b00d219b294b3c3662840e4540f6db2e3e49  sylpheed-3.7.0.tar.xz\nsha256 c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42  COPYING\nsha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  COPYING.LIB\n"
  },
  {
    "path": "package/sylpheed/sylpheed.mk",
    "content": "################################################################################\n#\n# sylpheed\n#\n################################################################################\n\nSYLPHEED_VERSION_MAJOR = 3.7\nSYLPHEED_VERSION = $(SYLPHEED_VERSION_MAJOR).0\nSYLPHEED_SOURCE = sylpheed-$(SYLPHEED_VERSION).tar.xz\nSYLPHEED_SITE = http://sylpheed.sraoss.jp/sylpheed/v$(SYLPHEED_VERSION_MAJOR)\nSYLPHEED_LICENSE = GPL-2.0+ (executables), LGPL-2.1+ (library, attachment plugin)\nSYLPHEED_LICENSE_FILES = COPYING COPYING.LIB\nSYLPHEED_CPE_ID_VENDOR = sylpheed_project\nSYLPHEED_CONF_OPTS = --disable-gtkspell --disable-gpgme\nSYLPHEED_DEPENDENCIES = host-pkgconf libgtk2\n\n# 0001-harden-link-checker-before-accepting-click.patch\nSYLPHEED_IGNORE_CVES += CVE-2021-37746\n\n# Remove the -I$(includedir) from the Makefiles\n# because it refers to the host /usr/include.\ndefine SYLPHEED_PRECONFIGURE\n\tfor i in $$(find $(@D) -name \"Makefile*\"); do \\\n\t\tsed -i 's:-I$$(includedir)::g' $$i; \\\n\tdone\nendef\n\nSYLPHEED_PRE_CONFIGURE_HOOKS += SYLPHEED_PRECONFIGURE\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nSYLPHEED_DEPENDENCIES += openssl\nSYLPHEED_CONF_OPTS += --enable-ssl\nelse\nSYLPHEED_CONF_OPTS += --disable-ssl\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/synergy/Config.in",
    "content": "config BR2_PACKAGE_SYNERGY\n\tbool \"synergy\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXTST\n\thelp\n\t  Synergy lets you easily share a single mouse and\n\t  keyboard between multiple computers with different\n\t  operating systems, each with its own display,\n\t  without special hardware.\n\n\t  https://github.com/symless/synergy-core/\n\ncomment \"synergy needs a toolchain w/ C++, wchar, gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU\n\tdepends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && \\\n\t\tBR2_TOOLCHAIN_GCC_AT_LEAST_4_9)\n"
  },
  {
    "path": "package/synergy/synergy.hash",
    "content": "# Locally computed:\nsha256 06d1cb1d43251b0b624212652e9c0ab2657d124ac4f7e7d0c7f3e448c953c2a8  synergy-2.0.12-beta.tar.gz\nsha256 4921009cd76e7d38a8e873c362b25dbaf032c320bbb36a40dec775ddbdcbe1d8  LICENSE\n"
  },
  {
    "path": "package/synergy/synergy.mk",
    "content": "################################################################################\n#\n# synergy\n#\n################################################################################\n\nSYNERGY_VERSION = 2.0.12-beta\nSYNERGY_SITE = $(call github,symless,synergy-core,v$(SYNERGY_VERSION))\nSYNERGY_LICENSE = GPL-2.0\nSYNERGY_LICENSE_FILES = LICENSE\nSYNERGY_CPE_ID_VENDOR = symless\nSYNERGY_DEPENDENCIES = xlib_libX11 xlib_libXtst\n\n# Avoid using buildroot commit hash inside cmake/Version.cmake\n# by setting SYNERGY_VERSION_STAGE != snapshot\nSYNERGY_CONF_ENV += SYNERGY_VERSION_STAGE=\"beta\"\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXEXT),y)\nSYNERGY_DEPENDENCIES += xlib_libXext\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXI),y)\nSYNERGY_DEPENDENCIES += xlib_libXi\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nSYNERGY_DEPENDENCIES += xlib_libXinerama\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)\nSYNERGY_DEPENDENCIES += xlib_libXrandr\nendif\n\ndefine SYNERGY_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/bin/synergyc $(TARGET_DIR)/usr/bin/synergyc\n\t$(INSTALL) -D -m 0755 $(@D)/bin/synergys $(TARGET_DIR)/usr/bin/synergys\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/sysdig/Config.in",
    "content": "config BR2_PACKAGE_SYSDIG\n\tbool \"sysdig\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_INSTALL_LIBSTDCPP # jsoncpp\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # elfutils, jq\n\tdepends on !BR2_STATIC_LIBS # elfutils\n\tdepends on BR2_USE_WCHAR # elfutils\n\tdepends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils\n\tdepends on BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1\n\tselect BR2_PACKAGE_ELFUTILS\n\tselect BR2_PACKAGE_JQ\n\tselect BR2_PACKAGE_JSONCPP\n\tselect BR2_PACKAGE_LIBB64\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Sysdig is open source, system-level exploration:\n\t  capture system state and activity from a running Linux\n\t  instance, then save, filter and analyze.\n\t  Think of it as strace + tcpdump + lsof + awesome sauce.\n\t  With a little Lua cherry on top.\n\n\t  https://github.com/draios/sysdig/wiki\n\ncomment \"sysdig needs a glibc or uclibc toolchain w/ C++, threads, gcc >= 4.8, dynamic library, a Linux kernel, and luajit or lua 5.1 to be built\"\n\tdepends on !BR2_LINUX_KERNEL || !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || BR2_STATIC_LIBS \\\n\t\t|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) \\\n\t    || !BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION_5_1\n"
  },
  {
    "path": "package/sysdig/sysdig.hash",
    "content": "# sha256 locally computed\nsha256  57d5b713b875eba35546a1408bf3f20c2703904a17d956be115ee55272db4cfa  sysdig-0.23.1.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/sysdig/sysdig.mk",
    "content": "################################################################################\n#\n# sysdig\n#\n################################################################################\n\nSYSDIG_VERSION = 0.23.1\nSYSDIG_SITE = $(call github,draios,sysdig,$(SYSDIG_VERSION))\nSYSDIG_LICENSE = GPL-2.0\nSYSDIG_LICENSE_FILES = COPYING\nSYSDIG_CPE_ID_VENDOR = sysdig\nSYSDIG_CONF_OPTS = -DENABLE_DKMS=OFF -DUSE_BUNDLED_DEPS=OFF\nSYSDIG_SUPPORTS_IN_SOURCE_BUILD = NO\n\nSYSDIG_DEPENDENCIES = \\\n\telfutils \\\n\tjq \\\n\tjsoncpp \\\n\tlibb64 \\\n\tlibcurl \\\n\tluainterpreter \\\n\tncurses \\\n\topenssl \\\n\tzlib\n\n# sysdig creates the module Makefile from a template, which contains a\n# single place-holder, KBUILD_FLAGS, wich is only replaced with two\n# things:\n#   - debug flags, which we don't care about here,\n#   - 'sysdig-feature' flags, which are never set, so always empty\n# So, just replace the place-holder with the only meaningful value: nothing.\ndefine SYSDIG_MODULE_GEN_MAKEFILE\n\t$(INSTALL) -m 0644 $(@D)/driver/Makefile.in $(@D)/driver/Makefile\n\t$(SED) 's/@KBUILD_FLAGS@//;' $(@D)/driver/Makefile\n\t$(SED) 's/@PROBE_NAME@/sysdig-probe/;' $(@D)/driver/Makefile\nendef\nSYSDIG_POST_PATCH_HOOKS += SYSDIG_MODULE_GEN_MAKEFILE\n\n# Don't build the driver as part of the 'standard' procedure, we'll\n# build it on our own with the kernel-module infra.\nSYSDIG_CONF_OPTS += -DBUILD_DRIVER=OFF\n\nSYSDIG_MODULE_SUBDIRS = driver\nSYSDIG_MODULE_MAKE_OPTS = KERNELDIR=$(LINUX_DIR)\n\n$(eval $(kernel-module))\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/sysklogd/Config.in",
    "content": "config BR2_PACKAGE_SYSKLOGD\n\tbool \"sysklogd\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  The continuation of the original sysklogd package, based on\n\t  the original Berkeley syslog daemon. Now with kernel\n\t  logging, and log rotation built-in. It can both receive from\n\t  and send to remote syslog servers. The v2.x series include\n\t  extended support for RFC5424 with an alt. syslogp() API for\n\t  clients.\n\n\t  https://github.com/troglobit/sysklogd/\n\nif BR2_PACKAGE_SYSKLOGD\n\nconfig BR2_PACKAGE_SYSKLOGD_REMOTE_DELAY\n\tint \"Retry delay (sec)\"\n\tdefault \"180\"\n\thelp\n\t  Retry delay (seconds) for sending to remote syslog servers.\n\n\t  When set up to forward logs to a remote syslog server, the\n\t  network may not always be available. E.g., default interface\n\t  down, or no route to the remote server. This setting controls\n\t  the back-off time before retrying.\n\n\t  Default: 180 seconds\n\nconfig BR2_PACKAGE_SYSKLOGD_LOGGER\n\tbool \"logger tool\"\n\thelp\n\t  Generate log messages from scripts or from the command line.\n\n\t  This version of logger is receommended for use with sysklogd.\n\t  It makes use of the new syslogp() API for RFC5424 style logs,\n\t  e.g. MSGID, strucutred data (SD), etc.\n\n\t  The BusyBox, or util-linux, logger tools can also be used, but\n\t  are limited to RFC3164 style messages.\n\nendif\n\ncomment \"sysklogd needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/sysklogd/S01syslogd",
    "content": "#!/bin/sh\n\nDAEMON=\"syslogd\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nSYSLOGD_ARGS=\"-m 0\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"/sbin/$DAEMON\" \\\n\t\t-- $SYSLOGD_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\n# SIGHUP makes syslogd reload its configuration\nreload() {\n\tprintf 'Reloading %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -s HUP -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\ncase \"$1\" in\n\tstart|stop|restart|reload)\n\t\t\"$1\";;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/sysklogd/sysklogd.hash",
    "content": "# Upstream .md5 and .sha256 from GitHub\nmd5 2c6749c49f52b8c5dad18e9a9315e7dd  sysklogd-2.2.3.tar.gz\nsha256 e7ea09c15511a63c430e84f65ce3bf55a0386ee419ab52e9341c4a9fabae59ad  sysklogd-2.2.3.tar.gz\n\n# Locally calculated\nsha256  7a71d7603a7c4456df441463e54da35acf151c1be0879246de63544f1f34f477  LICENSE\n"
  },
  {
    "path": "package/sysklogd/sysklogd.mk",
    "content": "################################################################################\n#\n# sysklogd\n#\n################################################################################\n\nSYSKLOGD_VERSION = 2.2.3\nSYSKLOGD_SITE = https://github.com/troglobit/sysklogd/releases/download/v$(SYSKLOGD_VERSION)\nSYSKLOGD_LICENSE = BSD-3-Clause\nSYSKLOGD_LICENSE_FILES = LICENSE\nSYSKLOGD_CPE_ID_VENDOR = sysklogd_project\n\n# Busybox install logger in /usr/bin, and syslogd in /sbin, so install in\n# the same locations so that busybox does not install its applets in there.\nSYSKLOGD_CONF_OPTS = \\\n\t--bindir=/usr/bin \\\n\t--sbindir=/sbin \\\n\t--with-suspend-time=$(BR2_PACKAGE_SYSKLOGD_REMOTE_DELAY)\n\n# Disable/Enable utilities\nifeq ($(BR2_PACKAGE_SYSKLOGD_LOGGER),y)\nSYSKLOGD_CONF_OPTS += --with-logger\nelse\nSYSKLOGD_CONF_OPTS += --without-logger\nendif\n\ndefine SYSKLOGD_INSTALL_SAMPLE_CONFIG\n\t$(INSTALL) -D -m 0644 $(@D)/syslog.conf \\\n\t\t$(TARGET_DIR)/etc/syslog.conf\nendef\n\nSYSKLOGD_POST_INSTALL_TARGET_HOOKS += SYSKLOGD_INSTALL_SAMPLE_CONFIG\n\ndefine SYSKLOGD_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/sysklogd/S01syslogd \\\n\t\t$(TARGET_DIR)/etc/init.d/S01syslogd\nendef\n\ndefine SYSKLOGD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(SYSKLOGD_PKGDIR)/syslogd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/syslogd.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sysklogd/syslogd.service",
    "content": "[Unit]\nDescription=System Logging Service\nRequires=syslog.socket\n\n[Service]\nEnvironmentFile=-/etc/default/syslogd\nExecStart=/sbin/syslogd -m 0 -F $SYSLOGD_ARGS\nStandardOutput=null\nRestart=on-failure\n\n[Install]\nWantedBy=multi-user.target\nAlias=syslog.service\n"
  },
  {
    "path": "package/syslog-ng/0001-fix-build-on-uclibc.patch",
    "content": "From 98bd6106f8c48bc8f0a27bd712ed4ba6249e9a5f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 13 Jan 2019 11:03:51 +0100\nSubject: [PATCH] fix build on m68k with uclibc\n\nuclibc on m68k defines pthread_spinlock_t but does not define\npthread_spin_trylock so check for this function before using it\n\nFixes:\n - http://autobuild.buildroot.org/results/0a6de11c030a4f39e402917809fc6d33fb463d1b\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/buytenh/ivykis/pull/17]\n---\n configure.ac   | 3 +++\n src/spinlock.h | 4 ++++\n 2 files changed, 7 insertions(+)\n\ndiff --git a/lib/ivykis/configure.ac b/lib/ivykis/configure.ac\nindex e9b10c0..24152a9 100644\n--- a/lib/ivykis/configure.ac\n+++ b/lib/ivykis/configure.ac\n@@ -110,6 +110,9 @@ AC_CACHE_CHECK(for linux/netfilter_ipv4.h, ac_cv_header_linux_netfilter_ipv4_h,\n # Check for pthread_spinlock_t.\n AC_CHECK_TYPES([pthread_spinlock_t], [], [], [[#include <pthread.h>]])\n \n+# Check for pthread_spin_trylock\n+AC_CHECK_FUNCS([pthread_spin_trylock])\n+\n # Check which header file defines 'struct timespec'.\n for hdr in sys/time.h sys/timers.h time.h pthread.h\n do\ndiff --git a/lib/ivykis/src/spinlock.h b/lib/ivykis/src/spinlock.h\nindex ebcdbec..d837df8 100644\n--- a/lib/ivykis/src/spinlock.h\n+++ b/lib/ivykis/src/spinlock.h\n@@ -76,7 +76,11 @@ static inline void fallback_spin_unlock(fallback_spinlock_t *lock)\n \n static inline int pthread_spinlocks_available(void)\n {\n+#ifdef HAVE_PTHREAD_SPIN_TRYLOCK\n \treturn !!(pthread_spin_trylock != NULL);\n+#else\n+\treturn 0;\n+#endif\n }\n \n \n-- \n2.14.1\n\n"
  },
  {
    "path": "package/syslog-ng/Config.in",
    "content": "config BR2_PACKAGE_SYSLOG_NG\n\tbool \"syslog-ng\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  syslog-ng is an enhanced log daemon, supporting a wide range\n\t  of input and output methods: syslog, unstructured text,\n\t  queueing, SQL & NoSQL\n\n\t  https://www.syslog-ng.com/products/open-source-log-management/\n\ncomment \"syslog-ng needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/syslog-ng/S01syslog-ng",
    "content": "#!/bin/sh\n\nDAEMON=\"syslog-ng\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nSYSLOG_NG_ARGS=\"\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \\\n\t\t-- $SYSLOG_NG_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\n# SIGHUP makes syslog-ng reload its configuration\nreload() {\n\tprintf 'Reloading %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -s HUP -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\ncase \"$1\" in\n\tstart|stop|restart|reload)\n\t\t\"$1\";;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/syslog-ng/syslog-ng.conf",
    "content": "@version: 3.34\n\nsource s_sys {\n\tfile(\"/proc/kmsg\" program_override(\"kernel\"));\n\tunix-stream (\"/dev/log\");\n\tinternal();\n};\n\ndestination d_all {\n\tfile(\"/var/log/messages\");\n};\n\nlog {\n\tsource(s_sys);\n\tdestination(d_all);\n};\n"
  },
  {
    "path": "package/syslog-ng/syslog-ng.hash",
    "content": "# Locally computed\nsha256  cece39ec1c68c88d493705e0a528b83d038da384e89d4838393ccc75f62a2d4c  syslog-ng-3.34.1.tar.gz\nsha256  e912cf1e1c09b81d61c0154eb6c179588622c31ad07bfb4a90c612d07ff09d9b  COPYING\nsha256  ce3324c9f22299cfc7c281e5a6ab40fbe9c2ea1a67cee87226cb8cd39db1e1d2  GPL.txt\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LGPL.txt\n"
  },
  {
    "path": "package/syslog-ng/syslog-ng.mk",
    "content": "################################################################################\n#\n# syslog-ng\n#\n################################################################################\n\n# When updating the version, please check at runtime if the version in\n# syslog-ng.conf header needs to be updated\nSYSLOG_NG_VERSION = 3.34.1\nSYSLOG_NG_SITE = https://github.com/balabit/syslog-ng/releases/download/syslog-ng-$(SYSLOG_NG_VERSION)\nSYSLOG_NG_LICENSE = LGPL-2.1+ (syslog-ng core), GPL-2.0+ (modules)\nSYSLOG_NG_LICENSE_FILES = COPYING GPL.txt LGPL.txt\nSYSLOG_NG_CPE_ID_VENDOR = oneidentity\nSYSLOG_NG_DEPENDENCIES = host-bison host-flex host-pkgconf \\\n\tlibglib2 openssl pcre\n# We're patching configure.ac\nSYSLOG_NG_AUTORECONF = YES\nSYSLOG_NG_CONF_OPTS = --disable-manpages --localstatedir=/var/run \\\n\t--disable-java --disable-java-modules --disable-mongodb\n\nifeq ($(BR2_PACKAGE_GEOIP),y)\nSYSLOG_NG_DEPENDENCIES += geoip\nSYSLOG_NG_CONF_OPTS += --enable-geoip\nelse\nSYSLOG_NG_CONF_OPTS += --disable-geoip\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nSYSLOG_NG_DEPENDENCIES += libcap\nSYSLOG_NG_CONF_OPTS += --enable-linux-caps\nelse\nSYSLOG_NG_CONF_OPTS += --disable-linux-caps\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\nSYSLOG_NG_DEPENDENCIES += python\nSYSLOG_NG_CONF_OPTS += \\\n\t--enable-python \\\n\t--with-python=$(PYTHON_VERSION_MAJOR)\nelse ifeq ($(BR2_PACKAGE_PYTHON3),y)\nSYSLOG_NG_DEPENDENCIES += python3\nSYSLOG_NG_CONF_OPTS += \\\n\t--enable-python \\\n\t--with-python=$(PYTHON3_VERSION_MAJOR)\nelse\nSYSLOG_NG_CONF_OPTS += --disable-python\nendif\n\nifeq ($(BR2_PACKAGE_LIBESMTP),y)\nSYSLOG_NG_DEPENDENCIES += libesmtp\nSYSLOG_NG_CONF_OPTS += --enable-smtp\nSYSLOG_NG_CONF_OPTS += --with-libesmtp=\"$(STAGING_DIR)/usr\"\nelse\nSYSLOG_NG_CONF_OPTS += --disable-smtp\nendif\n\nifeq ($(BR2_PACKAGE_JSON_C),y)\nSYSLOG_NG_DEPENDENCIES += json-c\nSYSLOG_NG_CONF_OPTS += --enable-json\nelse\nSYSLOG_NG_CONF_OPTS += --disable-json\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)\nSYSLOG_NG_DEPENDENCIES += util-linux\nendif\n\nifeq ($(BR2_PACKAGE_LIBNET),y)\nSYSLOG_NG_DEPENDENCIES += libnet\nSYSLOG_NG_CONF_OPTS += \\\n\t--with-libnet=$(STAGING_DIR)/usr/bin \\\n\t--enable-spoof-source\nelse\nSYSLOG_NG_CONF_OPTS += --disable-spoof-source\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nSYSLOG_NG_DEPENDENCIES += libcurl\nSYSLOG_NG_CONF_OPTS += --enable-http\nSYSLOG_NG_CONF_OPTS += --with-libcurl=\"$(STAGING_DIR)/usr\"\nelse\nSYSLOG_NG_CONF_OPTS += --disable-http\nendif\n\nifeq ($(BR2_PACKAGE_RABBITMQ_C),y)\nSYSLOG_NG_DEPENDENCIES += rabbitmq-c\nSYSLOG_NG_CONF_OPTS += --enable-amqp\nelse\nSYSLOG_NG_CONF_OPTS += --disable-amqp\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nSYSLOG_NG_DEPENDENCIES += systemd\nSYSLOG_NG_CONF_OPTS += \\\n\t--enable-systemd \\\n\t--with-systemdsystemunitdir=/usr/lib/systemd/system\nelse\nSYSLOG_NG_CONF_OPTS += --disable-systemd\nendif\n\nifeq ($(BR2_PACKAGE_NETSNMP),y)\nSYSLOG_NG_DEPENDENCIES += netsnmp\nSYSLOG_NG_CONF_OPTS += --enable-afsnmp\nSYSLOG_NG_CONF_OPTS += --with-net-snmp=\"$(STAGING_DIR)/usr/bin\"\nelse\nSYSLOG_NG_CONF_OPTS += --disable-afsnmp\nendif\n\ndefine SYSLOG_NG_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/syslog-ng/S01syslog-ng \\\n\t\t$(TARGET_DIR)/etc/init.d/S01syslog-ng\nendef\n\n# By default syslog-ng installs a .service that requires a config file at\n# /etc/default, so provide one with the default values.\ndefine SYSLOG_NG_INSTALL_INIT_SYSTEMD\n\tmkdir -p $(TARGET_DIR)/usr/lib/systemd/system/syslog-ng@.service.d\n\tprintf '[Install]\\nDefaultInstance=default\\n' \\\n\t\t>$(TARGET_DIR)/usr/lib/systemd/system/syslog-ng@.service.d/buildroot-default-instance.conf\nendef\n\n# By default syslog-ng installs a number of sample configuration\n# files. Some of these rely on optional features being\n# enabled. Because of this buildroot uninstalls the shipped config\n# files and provides a simplified configuration.\ndefine SYSLOG_NG_FIXUP_CONFIG\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tDESTDIR=$(TARGET_DIR) scl-uninstall-local\n\t$(INSTALL) -D -m 0644 package/syslog-ng/syslog-ng.conf \\\n\t\t$(TARGET_DIR)/etc/syslog-ng.conf\nendef\n\nSYSLOG_NG_POST_INSTALL_TARGET_HOOKS = SYSLOG_NG_FIXUP_CONFIG\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sysprof/0001-define-NT_GNU_BUILD_ID.patch",
    "content": "On uclibc elf.h does not have GNU extentions but we need this define\nso we define it locally if its not getting it from elf.h\n\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\n\nUpstream-Status: Pending\n\nIndex: git/elfparser.h\n===================================================================\n--- git.orig/elfparser.h\t2011-07-16 18:57:41.000000000 -0700\n+++ git/elfparser.h\t2011-07-16 20:28:54.733829895 -0700\n@@ -17,6 +17,10 @@\n  */\n #include <glib.h>\n \n+#ifndef NT_GNU_BUILD_ID\n+#define NT_GNU_BUILD_ID 3\n+#endif\n+\n typedef struct ElfSym ElfSym;\n typedef struct ElfParser ElfParser;\n \n"
  },
  {
    "path": "package/sysprof/Config.in",
    "content": "config BR2_PACKAGE_SYSPROF\n\tbool \"sysprof\"\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tdepends on BR2_USE_MMU # glib2\n\t# In its util.h file, sysprof contains architecture-specific\n\t# code\n\tdepends on BR2_i386 || BR2_x86_64 || BR2_powerpc || BR2_sh4a || BR2_sh4aeb\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Sysprof is a statistical, system-wide profiler that can\n\t  profile user and kernel code using the perf API.\n\n\t  http://sysprof.com\n\nif BR2_PACKAGE_SYSPROF\n\nconfig BR2_PACKAGE_SYSPROF_GUI\n\tbool \"sysprof GUI\"\n\tdepends on BR2_PACKAGE_LIBGTK2\n\tselect BR2_PACKAGE_LIBGLADE\n\tselect BR2_PACKAGE_GDK_PIXBUF\n\thelp\n\t  GUI for the sysprof system-wide statistical profiler.\n\nendif\n\ncomment \"sysprof needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_i386 || BR2_x86_64 || BR2_powerpc || BR2_sh4a || BR2_sh4aeb\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/sysprof/sysprof.hash",
    "content": "# Locally calculated\nsha256  baf03c6fc01a845c705873e6fc7927aa89539dcda6963f9ec4c8eb4c086a64f1  sysprof-1.2.0.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/sysprof/sysprof.mk",
    "content": "################################################################################\n#\n# sysprof\n#\n################################################################################\n\nSYSPROF_VERSION = 1.2.0\nSYSPROF_SITE = http://sysprof.com\nSYSPROF_DEPENDENCIES = libglib2\nSYSPROF_LICENSE = GPL-2.0+\nSYSPROF_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_SYSPROF_GUI),y)\nSYSPROF_DEPENDENCIES += libgtk2 libglade gdk-pixbuf\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sysrepo/Config.in",
    "content": "config BR2_PACKAGE_SYSREPO\n\tbool \"sysrepo\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tselect BR2_PACKAGE_LIBYANG\n\tselect BR2_PACKAGE_PCRE\n\tselect BR2_PACKAGE_PCRE_UCP\n\thelp\n\t  Sysrepo is an YANG-based configuration and operational state\n\t  data store for Unix/Linux applications.\n\n\t  https://github.com/sysrepo\n\nif BR2_PACKAGE_SYSREPO\n\nconfig BR2_PACKAGE_SYSREPO_EXAMPLES\n\tbool \"enable examples\"\n\thelp\n\t  Enable sysrepo examples.\n\nendif\n\ncomment \"sysrepo needs a toolchain w/ C++, NPTL, dynamic library, gcc >= 4.8\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/sysrepo/S51sysrepo-plugind",
    "content": "#!/bin/sh\n\nDAEMON=\"sysrepo-plugind\"\nEXECUTABLE=\"/usr/bin/$DAEMON\"\n\nSYSREPO_PLUGIND_ARGS=\"\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\tstart-stop-daemon -S -q -x \"$EXECUTABLE\" \\\n\t\t-- $SYSREPO_PLUGIND_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -x \"$EXECUTABLE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\nreload() {\n\t# we do not support real reload .. just restart\n\trestart\n}\n\ncase \"$1\" in\n    start|stop|restart|reload)\n\t\t\"$1\";;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/sysrepo/sysrepo.hash",
    "content": "# Locally calculated\nsha256  2cc7537a03f48dc3c955436e1e0ed077bc3b31a755d6979d24ca42e1187fce01  sysrepo-1.4.122.tar.gz\nsha256  b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1  LICENSE\n"
  },
  {
    "path": "package/sysrepo/sysrepo.mk",
    "content": "################################################################################\n#\n# sysrepo\n#\n################################################################################\n\nSYSREPO_VERSION = 1.4.122\nSYSREPO_SITE = $(call github,sysrepo,sysrepo,v$(SYSREPO_VERSION))\nSYSREPO_INSTALL_STAGING = YES\nSYSREPO_LICENSE = Apache-2.0\nSYSREPO_LICENSE_FILES = LICENSE\nSYSREPO_DEPENDENCIES = libyang pcre host-sysrepo\nHOST_SYSREPO_DEPENDENCIES = host-libyang host-pcre\n\nSYSREPO_CONF_OPTS = \\\n\t-DBUILD_EXAMPLES=$(if $(BR2_PACKAGE_SYSREPO_EXAMPLES),ON,OFF) \\\n\t-DENABLE_TESTS=OFF \\\n\t-DENABLE_VALGRIND_TESTS=OFF \\\n\t-DREPO_PATH=/etc/sysrepo\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nSYSREPO_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\ndefine SYSREPO_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/sysrepo/S51sysrepo-plugind \\\n\t\t$(TARGET_DIR)/etc/init.d/S51sysrepo-plugind\nendef\n\nHOST_SYSREPO_CONF_OPTS = \\\n\t-DBUILD_EXAMPLES=OFF \\\n\t-DENABLE_TESTS=OFF \\\n\t-DENABLE_VALGRIND_TESTS=OFF \\\n\t-DREPO_PATH=$(TARGET_DIR)/etc/sysrepo\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/sysstat/Config.in",
    "content": "config BR2_PACKAGE_SYSSTAT\n\tbool \"sysstat\"\n\tdepends on BR2_USE_MMU \t# fork()\n\thelp\n\t  The sysstat utilities are a collection of performance\n\t  monitoring tools for Linux. These include sar, sadf, mpstat,\n\t  iostat, pidstat and sa tools.\n\n\t  Some Features :\n\n\t   * Input / Output and transfer rate statistics (global, per\n\t     device, per partition, per network filesystem and per\n\t     Linux task / PID)\n\t   * CPU statistics (global, per CPU and per Linux task /\n\t     PID), including support for virtualization architectures\n\t   * Memory and swap space utilization statistics\n\t   * Virtual memory, paging and fault statistics\n\t   * Per-task (per-PID) memory and page fault statistics\n\t   * Global CPU and page fault statistics for tasks and all\n\t     their children\n\t   * Process creation activity\n\t   * Interrupt statistics (global, per CPU and per interrupt,\n\t     including potential APIC interrupt sources)\n\t   * Extensive network statistics: network interface activity\n\t     (number of packets and kB received and transmitted per\n\t     second, etc.) including failures from network devices;\n\t     network traffic statistics for IP, TCP, ICMP and UDP\n\t     protocols based on SNMPv2 standards; support for\n\t     IPv6-related protocols.\n\t   * NFS server and client activity\n\t   * Socket statistics\n\t   * Run queue and system load statistics\n\t   * Kernel internal tables utilization statistics\n\t   * System and per Linux task switching activity\n\t   * Swapping statistics\n\t   * TTY device activity\n\t   * Power management statistics\n\n\t  http://pagesperso-orange.fr/sebastien.godard/\n"
  },
  {
    "path": "package/sysstat/sysstat.hash",
    "content": "# From: http://sebastien.godard.pagesperso-orange.fr/download.html\nsha1  1e38bc029979def730ae1fb1e39f631bd1a3bc73  sysstat-12.4.2.tar.xz\n# Locally calculated\nsha256  3701b2c1883d50eb384d7b95ce5b6df0a71fdcb3c23f96cb58098d1bcffa018f  sysstat-12.4.2.tar.xz\nsha256  db296f2f7f35bca3a174efb0eb392b3b17bd94b341851429a3dff411b1c2fc73  COPYING\n"
  },
  {
    "path": "package/sysstat/sysstat.mk",
    "content": "################################################################################\n#\n# sysstat\n#\n################################################################################\n\nSYSSTAT_VERSION = 12.4.2\nSYSSTAT_SOURCE = sysstat-$(SYSSTAT_VERSION).tar.xz\nSYSSTAT_SITE = http://pagesperso-orange.fr/sebastien.godard\nSYSSTAT_CONF_OPTS = --disable-file-attr\nSYSSTAT_DEPENDENCIES = host-gettext $(TARGET_NLS_DEPENDENCIES)\nSYSSTAT_LICENSE = GPL-2.0+\nSYSSTAT_LICENSE_FILES = COPYING\nSYSSTAT_CPE_ID_VENDOR = sysstat_project\nSYSSTAT_SELINUX_MODULES = sysstat\n\nifeq ($(BR2_PACKAGE_LM_SENSORS),y)\nSYSSTAT_DEPENDENCIES += lm-sensors\nSYSSTAT_CONF_OPTS += --enable-sensors\nelse\nSYSSTAT_CONF_OPTS += --disable-sensors\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/system-config-printer/0001-Add-option-to-disable-xmlto-manual-generation.patch",
    "content": "From 731c8d7e1f9edb527785d61f74031a5e5846554b Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Sun, 25 Jul 2021 16:30:59 -0600\nSubject: [PATCH] Add option to disable xmlto manual generation.\n\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[james.hilliard1@gmail.com: backport from upstream commit\n95e0b461f5a46c74b00287aca65732ea2fc9d69b]\n---\n Makefile.am  | 7 ++++++-\n configure.ac | 5 +++++\n 2 files changed, 11 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 843ba30d..7facab94 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -209,9 +209,11 @@ else\n systemd_CLEANFILES=\n endif\n \n+if XMLTO\n man_MANS=\t\t\t\t\t\\\n \tman/system-config-printer.1\t\t\\\n \tman/system-config-printer-applet.1\n+endif\n \n dbus_DATA =\t\t\t\t\t\\\n \tdbus/com.redhat.NewPrinterNotification.conf\t\t\\\n@@ -274,7 +276,6 @@ EXTRA_DIST=\\\n \t$(bin_SCRIPTS) \\\n \tsetup.py \\\n \t$(EXPORT_MODULES) \\\n-\tman/system-config-printer.xml \\\n \t$(dbus_DATA) \\\n \t$(dbusinterfaces_DATA) \\\n \t$(dbusservices_DATA) \\\n@@ -297,12 +298,16 @@ EXTRA_DIST=\\\n \ttest_PhysicalDevice.py \\\n \t$(appdata_in_files)\n \n+if XMLTO\n+EXTRA_DIST+=man/system-config-printer.xml\n+\n # The man pages are generated from DocBook XML.\n .stamp-man-pages-built: $(top_srcdir)/man/system-config-printer.xml\n \txmlto man -o man $<\n \ttouch .stamp-man-pages-built\n \n $(man_MANS): .stamp-man-pages-built\n+endif\n \n html:\t$(EXPORT_MODULES) $(EXPORT_MODULES_GEN)\n \trm -rf html\ndiff --git a/configure.ac b/configure.ac\nindex 811f897a..a2a66889 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -75,6 +75,11 @@ if test \"x$with_systemdsystemunitdir\" != xno; then\n fi\n AM_CONDITIONAL(HAVE_SYSTEMD, [test -n \"$with_systemdsystemunitdir\" -a \"x$with_systemdsystemunitdir\" != xno ])\n \n+AC_ARG_WITH(xmlto,\n+        [AC_HELP_STRING([--with-xmlto],\n+                [Enable xmlto manual generation @<:@default=yes@:>@])])\n+AM_CONDITIONAL([XMLTO], [test x$with_xmlto != xno])\n+\n ALL_LINGUAS=\"ar as ast bg bn_IN bn br bs ca cs cy da de el en_GB es et fa fi fr fur gu he hi hr hu id is it ja kn ko lt lv mai ml mr ms nb nds nl nn oc or pa pl pt_BR pt ro ru si sk sl sr@latin sr sv ta te th tr uk vi zh_CN zh_TW\"\n AC_CONFIG_FILES([\n Makefile\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/system-config-printer/0002-configure-accept-non-system-cups-config.patch",
    "content": "From 75db995dda74696123cde2869e4e9b3315b91abd Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sun, 1 Aug 2021 13:40:28 +0200\nSubject: [PATCH] configure: accept non-system cups-config\n\nIn cross-compilation setups, cups.config might not be installed, and\nmight not be in the PATH.\n\nAllow a user to specify the full path to cups-config.\n\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n configure.ac | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex dd013b4a..9f033d18 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -33,7 +33,11 @@ fi\n AC_SUBST(DESKTOPVENDOR)\n AC_SUBST(DESKTOPPREFIX)\n \n-cupsserverbindir=\"`cups-config --serverbin`\"\n+AC_ARG_WITH([cups-config],\n+            [AC_HELP_STRING([--with-cups-config], [Specify the path of cups-config])],,\n+            [with_cups_config=cups-config])\n+\n+cupsserverbindir=\"`${with_cups_config} --serverbin`\"\n AC_SUBST(cupsserverbindir)\n \n PKG_CHECK_MODULES(GLIB, glib-2.0, has_glib=yes, has_glib=no)\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/system-config-printer/Config.in",
    "content": "config BR2_PACKAGE_SYSTEM_CONFIG_PRINTER\n\tbool \"system-config-printer\"\n\tdepends on BR2_PACKAGE_CUPS\n\thelp\n\t  Graphical user interface for CUPS administration\n\n\t  https://github.com/OpenPrinting/system-config-printer\n"
  },
  {
    "path": "package/system-config-printer/system-config-printer.hash",
    "content": "# Locally calculated:\nsha256  fbd226ce215bf014213dded81b43b9d4d90470524f5bf7cd21ecc71d4aefa689  system-config-printer-1.5.15.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/system-config-printer/system-config-printer.mk",
    "content": "################################################################################\n#\n# system-config-printer\n#\n################################################################################\n\nSYSTEM_CONFIG_PRINTER_VERSION = 1.5.15\nSYSTEM_CONFIG_PRINTER_SOURCE = system-config-printer-$(SYSTEM_CONFIG_PRINTER_VERSION).tar.xz\nSYSTEM_CONFIG_PRINTER_SITE = https://github.com/OpenPrinting/system-config-printer/releases/download/v$(SYSTEM_CONFIG_PRINTER_VERSION)\nSYSTEM_CONFIG_PRINTER_LICENSE = GPL-2.0+\nSYSTEM_CONFIG_PRINTER_LICENSE_FILES = COPYING\nSYSTEM_CONFIG_PRINTER_DEPENDENCIES = cups host-desktop-file-utils host-intltool host-pkgconf\n\n# 0001-Add-option-to-disable-xmlto-manual-generation.patch\n# 0002-configure-accept-non-system-cups-config.patch\nSYSTEM_CONFIG_PRINTER_AUTORECONF = YES\n\nSYSTEM_CONFIG_PRINTER_CONF_OPTS = --with-cups-config=$(STAGING_DIR)/usr/bin/cups-config\n\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nSYSTEM_CONFIG_PRINTER_DEPENDENCIES += libglib2\nendif\n\nifeq ($(BR2_PACKAGE_LIBGLIB2)$(BR2_PACKAGE_LIBUSB)$(BR2_PACKAGE_HAS_UDEV),yyy)\nSYSTEM_CONFIG_PRINTER_CONF_OPTS += --with-udev-rules=yes\nSYSTEM_CONFIG_PRINTER_DEPENDENCIES += libusb udev\nelse\nSYSTEM_CONFIG_PRINTER_CONF_OPTS += --with-udev-rules=no\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nSYSTEM_CONFIG_PRINTER_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system\nSYSTEM_CONFIG_PRINTER_DEPENDENCIES += systemd\nelse\nSYSTEM_CONFIG_PRINTER_CONF_OPTS += --with-systemdsystemunitdir=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/systemd/0001-Add-meson-option-to-disable-urlify.patch",
    "content": "From e5d86ebed5624ef62342c820a5868b1075deb300 Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Sun, 11 Jul 2021 04:39:33 -0600\nSubject: [PATCH] Add meson option to disable urlify.\n\nUseful for systems that don't use a version of less with hyperlink\nsupport.\n\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[james.hilliard1@gmail.com: backport from upstream commit\ne5d86ebed5624ef62342c820a5868b1075deb300]\n---\n meson.build               | 1 +\n meson_options.txt         | 2 ++\n src/shared/pretty-print.c | 4 ++++\n 3 files changed, 7 insertions(+)\n\ndiff --git a/meson.build b/meson.build\nindex 5735cfc7ad..a2ee15bf32 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -278,6 +278,7 @@ conf.set_quoted('USER_PRESET_DIR',                            userpresetdir)\n conf.set_quoted('VENDOR_KEYRING_PATH',                        join_paths(rootlibexecdir, 'import-pubring.gpg'))\n \n conf.set('ANSI_OK_COLOR',                                     'ANSI_' + get_option('ok-color').underscorify().to_upper())\n+conf.set10('ENABLE_URLIFY',                                   get_option('urlify'))\n conf.set10('ENABLE_FEXECVE',                                  get_option('fexecve'))\n conf.set10('MEMORY_ACCOUNTING_DEFAULT',                       memory_accounting_default)\n conf.set('STATUS_UNIT_FORMAT_DEFAULT',                        'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())\ndiff --git a/meson_options.txt b/meson_options.txt\nindex 163c8df87d..b60261ac24 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -444,6 +444,8 @@ option('ok-color', type : 'combo',\n                   'highlight-cyan', 'highlight-white'],\n        value : 'green',\n        description: 'color of the \"OK\" status message')\n+option('urlify', type : 'boolean', value : 'true',\n+       description : 'enable pager Hyperlink ANSI sequence support')\n option('fexecve', type : 'boolean', value : 'false',\n        description : 'use fexecve() to spawn children')\n \ndiff --git a/src/shared/pretty-print.c b/src/shared/pretty-print.c\nindex 137ba77b3a..7983c0a33a 100644\n--- a/src/shared/pretty-print.c\n+++ b/src/shared/pretty-print.c\n@@ -19,6 +19,7 @@\n #include \"util.h\"\n \n bool urlify_enabled(void) {\n+#if ENABLE_URLIFY\n         static int cached_urlify_enabled = -1;\n \n         if (cached_urlify_enabled < 0) {\n@@ -32,6 +33,9 @@ bool urlify_enabled(void) {\n         }\n \n         return cached_urlify_enabled;\n+#else\n+        return 0;\n+#endif\n }\n \n int terminal_urlify(const char *url, const char *text, char **ret) {\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/systemd/80-buildroot.preset",
    "content": "# Higher priority than systemd presets\n# This file is currently empty, but is available for demonstration and future use\n"
  },
  {
    "path": "package/systemd/Config.in",
    "content": "config BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS\n\tbool\n\t# see src/basic/architecture.h\n\tdefault y if BR2_arc\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\tdefault y if BR2_arm || BR2_armeb\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_m68k\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdefault y if BR2_nios2\n\tdefault y if BR2_riscv\n\tdefault y if BR2_sh4 || BR2_sh4eb || BR2_sh4a || BR2_sh4aeb\n\tdefault y if BR2_sparc || BR2_sparc64\n\tdefault y if BR2_s390x\n\nmenuconfig BR2_PACKAGE_SYSTEMD\n\tbool \"systemd\"\n\tdepends on BR2_INIT_SYSTEMD\n\tdepends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS # kmod\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on BR2_TOOLCHAIN_HAS_SSP\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\tdepends on BR2_HOST_GCC_AT_LEAST_5 # host-systemd\n\tselect BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_DBUS # runtime dependency only\n\tselect BR2_PACKAGE_LIBCAP\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBS\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBMOUNT\n\tselect BR2_PACKAGE_UTIL_LINUX_AGETTY\n\tselect BR2_PACKAGE_UTIL_LINUX_MOUNT\n\tselect BR2_PACKAGE_UTIL_LINUX_FSCK\n\tselect BR2_PACKAGE_KMOD\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # kmod-tools\n\tselect BR2_PACKAGE_KMOD_TOOLS\n\tselect BR2_TARGET_TZ_INFO\n\tselect BR2_NEEDS_HOST_UTF8_LOCALE\n\tselect BR2_PACKAGE_HOST_SYSTEMD # for systemctl preset-all, during target-finalize\n\thelp\n\t  systemd is a system and service manager for Linux,\n\t  compatible with SysV and LSB init scripts. systemd provides\n\t  aggressive parallelization capabilities, uses socket and\n\t  D-Bus activation for starting services, offers on-demand\n\t  starting of daemons, keeps track of processes using Linux\n\t  cgroups, supports snapshotting and restoring of the system\n\t  state, maintains mount and automount points and implements\n\t  an elaborate transactional dependency-based service control\n\t  logic.  It can work as a drop-in replacement for sysvinit.\n\n\t  Systemd requires a Linux kernel >= 3.0 with the following\n\t  options enabled:\n\n\t  - CONFIG_CGROUPS\n\t  - CONFIG_INOTIFY_USER\n\t  - CONFIG_FHANDLE\n\t  - CONFIG_AUTOFS4_FS\n\t  - CONFIG_TMPFS_POSIX_ACL\n\t  - CONFIG_TMPFS_XATTR\n\n\t  These options will be automatically enabled by Buildroot if\n\t  it is responsible for building the kernel. Otherwise, if you\n\t  are building your kernel outside of Buildroot, make sure\n\t  these options are enabled.\n\n\t  Systemd also provides udev, the userspace device daemon.\n\n\t  The selection of other packages will enable some features:\n\n\t  - acl package will add support for multi-seat.\n\t  - xz and/or l4 packages will add compression support in\n\t    journal and coredump.\n\t  - libcurl package will add support for systemd-journal-upload.\n\t  - libgcrypt package will add support for journal sealing and\n\t    DNSSEC verification in resolved.\n\n\t  Notice that systemd selects the fsck wrapper from util-linux\n\t  but no particular fsck.<fstype> is selected. You must choose\n\t  the apropriate ones (e.g. e2fsck, from the e2fsprogs\n\t  package) according to the system configuration.\n\n\t  http://freedesktop.org/wiki/Software/systemd\n\nif BR2_PACKAGE_SYSTEMD\n\nconfig BR2_PACKAGE_PROVIDES_UDEV\n\tdefault \"systemd\"\n\nconfig BR2_PACKAGE_SYSTEMD_BOOT\n\tbool \"systemd-boot\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tselect BR2_PACKAGE_GNU_EFI\n\thelp\n\t  systemd-boot is a simple UEFI boot manager which executes\n\t  configured EFI images. The default entry is selected by a\n\t  configured pattern (glob) or an on-screen menu.\n\n\t  systemd-boot operates on the EFI System Partition (ESP)\n\t  only. Configuration file fragments, kernels, initrds, other\n\t  EFI images need to reside on the ESP. Linux kernels need to\n\t  be built with CONFIG_EFI_STUB to be able to be directly\n\t  executed as an EFI image.\n\n\t  See the Grub2 help text for details on preparing an EFI\n\t  capable disk image using systemd-boot: the instructions are\n\t  exactly the same, except that the systemd-boot configuration\n\t  files will be located in /loader/ inside the EFI partition.\n\n\t  https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/\n\nconfig BR2_PACKAGE_SYSTEMD_INITRD\n\tbool \"Services for booting from initrd\"\n\thelp\n\t  Install various services that are only useful if systemd is\n\t  run from an initrd.\n\nconfig BR2_PACKAGE_SYSTEMD_KERNELINSTALL\n\tbool \"install kernel-install and related files\"\n\thelp\n\t  kernel-install is used to install and remove kernel and\n\t  initramfs images to and from the boot loader partition.\n\t  The boot loader partition will usually be one of\n\t  /boot, /efi, or /boot/efi.\n\nconfig BR2_PACKAGE_SYSTEMD_ANALYZE\n\tbool \"systemd-analyze\"\n\thelp\n\t  systemd-analyze may be used to determine system boot-up\n\t  performance statistics and retrieve other state and tracing\n\t  information from the system and service manager, and to\n\t  verify the correctness of unit files.\n\t  It is also used to access special functions useful for\n\t  advanced system manager debugging.\n\nconfig BR2_PACKAGE_SYSTEMD_BOOT_EFI_ARCH\n\tstring\n\tdefault \"ia32\"  if BR2_i386\n\tdefault \"x64\"   if BR2_x86_64\n\tdepends on BR2_PACKAGE_SYSTEMD_BOOT\n\nconfig BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE\n\tbool \"enable journal remote tools\"\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBMICROHTTPD\n\thelp\n\t  journal remote functionality adds three tools:\n\n\t  systemd-journal-gatewayd serves journal events over the\n\t  network.\n\n\t  systemd-journal-remote is a command to receive serialized\n\t  journal events and store them to journal files.\n\n\t  systemd-journal-upload will upload journal entries to the\n\t  URL specified with --url=.\n\n\t  https://www.freedesktop.org/software/systemd/man/systemd-journal-gatewayd.service.html\n\t  https://www.freedesktop.org/software/systemd/man/systemd-journal-remote.service.html\n\t  https://www.freedesktop.org/software/systemd/man/systemd-journal-upload.html\n\nconfig BR2_PACKAGE_SYSTEMD_BACKLIGHT\n\tbool \"enable backlight support\"\n\thelp\n\t  systemd-backlight is a service that restores the display\n\t  backlight brightness at early boot and saves it at shutdown.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-backlight@.service.html\n\nconfig BR2_PACKAGE_SYSTEMD_BINFMT\n\tbool \"enable binfmt tool\"\n\thelp\n\t  systemd-binfmt is an early boot service that registers\n\t  additional binary formats for executables in the kernel.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-binfmt.service.html\n\nconfig BR2_PACKAGE_SYSTEMD_COREDUMP\n\tbool \"enable coredump hook\"\n\thelp\n\t  systemd-coredump can be used as a helper binary by the\n\t  kernel when a user space program receives a fatal signal and\n\t  dumps core.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-coredump.html\n\nconfig BR2_PACKAGE_SYSTEMD_PSTORE\n\tbool \"enable pstore support\"\n\tdefault y\n\thelp\n\t  When this features is enabled, additional tools and services\n\t  are built to support archiving contents of the persistent\n\t  storage filesytem.\n\n\t  https://www.freedesktop.org/software/systemd/man/systemd-pstore.html\n\nconfig BR2_PACKAGE_SYSTEMD_FIRSTBOOT\n\tbool \"enable firstboot support\"\n\thelp\n\t  systemd-firstboot initializes the most basic system settings\n\t  interactively on the first boot.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-firstboot.html\n\nconfig BR2_PACKAGE_SYSTEMD_HIBERNATE\n\tbool \"enable hibernation support\"\n\tselect BR2_PACKAGE_SYSTEMD_INITRD\n\thelp\n\t  When this features is enabled, additional tools and services\n\t  are built to support suspending and resuming the system.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-sleep.html\n\nconfig BR2_PACKAGE_SYSTEMD_HOMED\n\tbool \"enable home daemon\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # cryptsetup -> lvm2\n\tdepends on BR2_USE_MMU # cryptsetup -> lvm2\n\tdepends on !BR2_STATIC_LIBS # cryptsetup -> lvm2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # cryptsetup -> json-c\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 # fscrypt_key\n\tselect BR2_PACKAGE_CRYPTSETUP\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBFDISK\n\thelp\n\t  systemd-homed is a system service that may be used to create,\n\t  remove, change or inspect home directories.\n\n\t  https://www.freedesktop.org/software/systemd/man/systemd-homed.service.html\n\ncomment \"homed support needs a toolchain w/ threads, dynamic library, kernel headers >= 4.12\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n\nconfig BR2_PACKAGE_SYSTEMD_HOSTNAMED\n\tbool \"enable hostname daemon\"\n\tdefault y\n\thelp\n\t  systemd-hostnamed is a system service that may be used as a\n\t  mechanism to change the system's hostname.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-hostnamed.service.html\n\nconfig BR2_PACKAGE_SYSTEMD_HWDB\n\tbool \"enable hwdb installation\"\n\tdefault y\n\thelp\n\t  Enables hardware database installation to /usr/lib/udev/hwdb.d\n\n\t  Disabling this option improves first boot time (or every boot\n\t  time in case of initramfs images) and saves several MB space.\n\n\t  https://www.freedesktop.org/software/systemd/man/hwdb.html\n\nconfig BR2_PACKAGE_SYSTEMD_IMPORTD\n\tbool \"enable import daemon\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_XZ\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  systemd-importd is a system service that manages virtual\n\t  machine and container images for systemd-machined and\n\t  machinectl.\n\n\t  http://www.freedesktop.org/software/systemd/man/machinectl.html#Image%20Transfer%20Commands\n\nconfig BR2_PACKAGE_SYSTEMD_LOCALED\n\tbool \"enable locale daemon\"\n\thelp\n\t  systemd-localed is a system service that may be used as\n\t  mechanism to change the system locale settings, as well as\n\t  the console key mapping and default X11 key mapping.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-localed.service.html\n\nconfig BR2_PACKAGE_SYSTEMD_LOGIND\n\tbool \"enable login daemon\"\n\thelp\n\t  systemd-logind is a system service that manages user logins.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-logind.service.html\n\nconfig BR2_PACKAGE_SYSTEMD_MACHINED\n\tbool \"enable machine daemon\"\n\thelp\n\t  systemd-machined is a system service that keeps track of\n\t  virtual machines and containers, and processes belonging to\n\t  them.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-machined.service.html\n\nconfig BR2_PACKAGE_SYSTEMD_MYHOSTNAME\n\tbool \"enable myhostname NSS plugin\"\n\tdefault y\n\thelp\n\t  nss-myhostname is a plug-in module for the GNU Name Service\n\t  Switch (NSS) functionality of the GNU C Library (glibc),\n\t  primarily providing hostname resolution for the locally\n\t  configured system hostname as returned by gethostname(2).\n\n\t  http://www.freedesktop.org/software/systemd/man/nss-myhostname.html\n\nconfig BR2_PACKAGE_SYSTEMD_NETWORKD\n\tbool \"enable network manager\"\n\tdefault y\n\thelp\n\t  systemd-networkd is a system service that manages networks.\n\t  It detects and configures network devices as they appear, as\n\t  well as creating virtual network devices.\n\n\t  This simple network configuration solution is an alternative\n\t  to dhcpcd or ISC dhcp.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-networkd.html\n\nconfig BR2_PACKAGE_SYSTEMD_OOMD\n\tbool \"enable out-of-memory killer\"\n\thelp\n\t  systemd-oomd is a system service that uses cgroups-v2 and\n\t  pressure stall information (PSI) to monitor and take action\n\t  on processes before an OOM occurs in kernel space.\n\n\t  https://www.freedesktop.org/software/systemd/man/systemd-oomd.html\n\nconfig BR2_PACKAGE_SYSTEMD_POLKIT\n\tbool \"enable polkit support\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # polkit -> c++17\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # polkit\n\tdepends on BR2_USE_WCHAR # libglib2\n\tselect BR2_PACKAGE_POLKIT\n\thelp\n\t  If enabled, systemd is built with polkit support and policy\n\t  files for its services are generated and installed. It is\n\t  useful for allowing unprivileged processes to speak to\n\t  systemd's many privileged processes.\n\n\t  http://wiki.freedesktop.org/www/Software/polkit/\n\ncomment \"polkit support needs a toolchain with threads, wchar, gcc >= 7\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_SYSTEMD_PORTABLED\n\tbool \"enable portable services\"\n\thelp\n\t  Portable services are systemd services that can be dynamically\n\t  attached and detached from the system.\n\n\t  These services must come with their own root directory which\n\t  they are bound to through an automatically generated drop-in.\n\n\t  They also have restrictions applied by the host system in the\n\t  form of profiles.\n\n\t  This functionality is provided by the system service\n\t  systemd-portabled along with the corresponding CLI\n\t  portablectl.\n\n\t  https://systemd.io/PORTABLE_SERVICES/\n\nconfig BR2_PACKAGE_SYSTEMD_QUOTACHECK\n\tbool \"enable quotacheck tools\"\n\thelp\n\t  systemd-quotacheck is a service responsible for file system\n\t  quota checks. It is run once at boot after all necessary\n\t  file systems are mounted. It is pulled in only if at least\n\t  one file system has quotas enabled.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-quotacheck.service.html\n\nconfig BR2_PACKAGE_SYSTEMD_RANDOMSEED\n\tbool \"enable random-seed support\"\n\thelp\n\t  systemd-random-seed is a service that restores the random\n\t  seed of the system at early boot and saves it at\n\t  shutdown. Saving/restoring the random seed across boots\n\t  increases the amount of available entropy early at boot.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-random-seed.service.html\n\nconfig BR2_PACKAGE_SYSTEMD_REPART\n\tbool \"enable repart support\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBFDISK\n\thelp\n\t  systemd-repart grows and adds partitions to a partition table,\n\t  based on the configuration files described in repart.d.\n\n\t  https://www.freedesktop.org/software/systemd/man/systemd-repart.html\n\nconfig BR2_PACKAGE_SYSTEMD_RESOLVED\n\tbool \"enable resolve daemon\"\n\tdefault y\n\thelp\n\t  systemd-resolved is a system service that provides network\n\t  name resolution to local applications. It implements a\n\t  caching and validating DNS/DNSSEC stub resolver, as well as\n\t  an LLMNR resolver and responder.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-resolved.html\n\nconfig BR2_PACKAGE_SYSTEMD_RFKILL\n\tbool \"enable rfkill tools\"\n\thelp\n\t  systemd-rfkill is a service that restores the RF kill switch\n\t  state at early boot and saves it at shutdown.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-rfkill@.service.html\n\nconfig BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT\n\tbool \"enable SMACK support\"\n\tselect BR2_PACKAGE_ATTR\n\tselect BR2_PACKAGE_SMACK\n\thelp\n\t  Enable support for SMACK, the Simple Mandatory Access\n\t  Control Kernel, a minimal approach to Access Control\n\t  implemented as a kernel LSM.\n\n\t  This feature requires a kernel >= 3.8.\n\n\t  When this feature is enabled, Systemd mounts smackfs and\n\t  manages security labels for sockets.\n\nconfig BR2_PACKAGE_SYSTEMD_SYSEXT\n\tbool \"enable sysext support\"\n\thelp\n\t  systemd-sysext activates/deactivates system extension\n\t  images.\n\n\t  System extension images may – dynamically at runtime —\n\t  extend the /usr/ and /opt/ directory hierarchies with\n\t  additional files.\n\n\t  This is particularly useful on immutable system images where\n\t  a /usr/ and/or /opt/ hierarchy residing on a read-only file\n\t  system shall be extended temporarily at runtime without\n\t  making any persistent modifications.\n\n\t  https://www.freedesktop.org/software/systemd/man/systemd-sysext.html\n\nconfig BR2_PACKAGE_SYSTEMD_SYSUSERS\n\tbool \"enable sysusers support\"\n\thelp\n\t  systemd-sysusers creates system users and groups, based on\n\t  the file format and location specified in sysusers.d(5).\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-sysusers.html\n\nconfig BR2_PACKAGE_SYSTEMD_TIMEDATED\n\tbool \"enable timedate daemon\"\n\tdefault y\n\thelp\n\t  systemd-timedated is a system service that may be used as a\n\t  mechanism to change the system clock and timezone, as well\n\t  as to enable/disable NTP time synchronization.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-timedated.service.html\n\nconfig BR2_PACKAGE_SYSTEMD_TIMESYNCD\n\tbool \"enable timesync daemon\"\n\tdefault y\n\thelp\n\t  systemd-timesyncd is a service that may be used to\n\t  synchronize the local system clock with a Network Time\n\t  Protocol server.\n\n\t  This simple NTP solution is an alternative to sntp/ntpd from\n\t  the ntp package.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-timesyncd.html\n\nconfig BR2_PACKAGE_SYSTEMD_TMPFILES\n\tbool \"enable tmpfiles support\"\n\tdefault y\n\thelp\n\t  systemd-tmpfiles creates, deletes, and cleans up volatile\n\t  and temporary files and directories, based on the\n\t  configuration file format and location specified in\n\t  tmpfiles.d(5).\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.html\n\nconfig BR2_PACKAGE_SYSTEMD_USERDB\n\tbool \"enable userdb daemon\"\n\thelp\n\t  systemd-userdbd is a system service that multiplexes\n\t  user/group lookups to all local services that provide JSON\n\t  user/group record definitions to the system. In addition it\n\t  synthesizes JSON user/group records from classic UNIX/glibc\n\t  NSS user/group records in order to provide full backwards\n\t  compatibility.\n\n\t  https://www.freedesktop.org/software/systemd/man/systemd-userdbd.service.html\n\nconfig BR2_PACKAGE_SYSTEMD_VCONSOLE\n\tbool \"enable vconsole tool\"\n\tdefault y\n\thelp\n\t  systemd-vconsole-setup is an early boot service that\n\t  configures the virtual console font and console keymap.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-vconsole-setup.service.html\n\nendif\n"
  },
  {
    "path": "package/systemd/Config.in.host",
    "content": "# Select this if you need host systemd tools (e.g. systemctl)\nconfig BR2_PACKAGE_HOST_SYSTEMD\n\tbool\n\tdepends on BR2_HOST_GCC_AT_LEAST_5\n"
  },
  {
    "path": "package/systemd/boot-files/buildroot.conf",
    "content": "title\tBuildroot\nlinux\t/bzImage\noptions\troot=/dev/sda2 rootwait console=tty1\n"
  },
  {
    "path": "package/systemd/boot-files/loader.conf",
    "content": "timeout 3\ndefault buildroot\n"
  },
  {
    "path": "package/systemd/dhcp.network",
    "content": "[Match]\nName=SYSTEMD_NETWORKD_DHCP_IFACE\n[Network]\nDHCP=ipv4\n"
  },
  {
    "path": "package/systemd/systemd.hash",
    "content": "# sha256 locally computed\nsha256  773ee546ad6df0921ea6f9e12294eb102bf68c1ac9eb3dcaca1764f8306d6e13  systemd-249.5.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  LICENSE.GPL2\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSE.LGPL2.1\nsha256  f5645b4b846479859d6618fa7a5a1722681aa7fc43c1e45f8bf8e1fe5738d618  README\nsha256  83bb6bd9ccd2cf5230cb1807ed16258289768dc4d9cb80069a814e04415a1275  tools/chromiumos/LICENSE\n"
  },
  {
    "path": "package/systemd/systemd.mk",
    "content": "################################################################################\n#\n# systemd\n#\n################################################################################\n\nSYSTEMD_VERSION = 249.5\nSYSTEMD_SITE = $(call github,systemd,systemd-stable,v$(SYSTEMD_VERSION))\nSYSTEMD_LICENSE = LGPL-2.1+, GPL-2.0+ (udev), Public Domain (few source files, see README), BSD-3-Clause (tools/chromiumos)\nSYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README tools/chromiumos/LICENSE\nSYSTEMD_CPE_ID_VENDOR = freedesktop\nSYSTEMD_INSTALL_STAGING = YES\nSYSTEMD_DEPENDENCIES = \\\n\t$(BR2_COREUTILS_HOST_DEPENDENCY) \\\n\t$(if $(BR2_PACKAGE_BASH_COMPLETION),bash-completion) \\\n\thost-gperf \\\n\thost-python-jinja2 \\\n\tkmod \\\n\tlibcap \\\n\tutil-linux-libs \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nSYSTEMD_SELINUX_MODULES = systemd udev xdg\n\nSYSTEMD_PROVIDES = udev\n\nSYSTEMD_CONF_OPTS += \\\n\t-Ddefault-hierarchy=hybrid \\\n\t-Didn=true \\\n\t-Dima=false \\\n\t-Dkexec-path=/usr/sbin/kexec \\\n\t-Dkmod-path=/usr/bin/kmod \\\n\t-Dldconfig=false \\\n\t-Dloadkeys-path=/usr/bin/loadkeys \\\n\t-Dman=false \\\n\t-Dmount-path=/usr/bin/mount \\\n\t-Dmode=release \\\n\t-Dnss-systemd=true \\\n\t-Dquotacheck-path=/usr/sbin/quotacheck \\\n\t-Dquotaon-path=/usr/sbin/quotaon \\\n\t-Drootlibdir='/usr/lib' \\\n\t-Dsetfont-path=/usr/bin/setfont \\\n\t-Dsplit-bin=true \\\n\t-Dsplit-usr=false \\\n\t-Dsulogin-path=/usr/sbin/sulogin \\\n\t-Dsystem-gid-max=999 \\\n\t-Dsystem-uid-max=999 \\\n\t-Dsysvinit-path= \\\n\t-Dsysvrcnd-path= \\\n\t-Dtelinit-path= \\\n\t-Dtests=false \\\n\t-Dumount-path=/usr/bin/umount \\\n\t-Dutmp=false\n\nifeq ($(BR2_PACKAGE_ACL),y)\nSYSTEMD_DEPENDENCIES += acl\nSYSTEMD_CONF_OPTS += -Dacl=true\nelse\nSYSTEMD_CONF_OPTS += -Dacl=false\nendif\n\nifeq ($(BR2_PACKAGE_LESS),y)\nSYSTEMD_CONF_OPTS += -Durlify=true\nelse\nSYSTEMD_CONF_OPTS += -Durlify=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBAPPARMOR),y)\nSYSTEMD_DEPENDENCIES += libapparmor\nSYSTEMD_CONF_OPTS += -Dapparmor=true\nelse\nSYSTEMD_CONF_OPTS += -Dapparmor=false\nendif\n\nifeq ($(BR2_PACKAGE_AUDIT),y)\nSYSTEMD_DEPENDENCIES += audit\nSYSTEMD_CONF_OPTS += -Daudit=true\nelse\nSYSTEMD_CONF_OPTS += -Daudit=false\nendif\n\nifeq ($(BR2_PACKAGE_CRYPTSETUP),y)\nSYSTEMD_DEPENDENCIES += cryptsetup\nSYSTEMD_CONF_OPTS += -Dlibcryptsetup=true\nelse\nSYSTEMD_CONF_OPTS += -Dlibcryptsetup=false\nendif\n\nifeq ($(BR2_PACKAGE_ELFUTILS),y)\nSYSTEMD_DEPENDENCIES += elfutils\nSYSTEMD_CONF_OPTS += -Delfutils=true\nelse\nSYSTEMD_CONF_OPTS += -Delfutils=false\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nSYSTEMD_DEPENDENCIES += gnutls\nSYSTEMD_CONF_OPTS += -Dgnutls=true\nelse\nSYSTEMD_CONF_OPTS += -Dgnutls=false\nendif\n\nifeq ($(BR2_PACKAGE_IPTABLES),y)\nSYSTEMD_DEPENDENCIES += iptables\nSYSTEMD_CONF_OPTS += -Dlibiptc=true\nelse\nSYSTEMD_CONF_OPTS += -Dlibiptc=false\nendif\n\n# Both options can't be selected at the same time so prefer libidn2\nifeq ($(BR2_PACKAGE_LIBIDN2),y)\nSYSTEMD_DEPENDENCIES += libidn2\nSYSTEMD_CONF_OPTS += -Dlibidn2=true -Dlibidn=false\nelse ifeq ($(BR2_PACKAGE_LIBIDN),y)\nSYSTEMD_DEPENDENCIES += libidn\nSYSTEMD_CONF_OPTS += -Dlibidn=true -Dlibidn2=false\nelse\nSYSTEMD_CONF_OPTS += -Dlibidn=false -Dlibidn2=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECCOMP),y)\nSYSTEMD_DEPENDENCIES += libseccomp\nSYSTEMD_CONF_OPTS += -Dseccomp=true\nelse\nSYSTEMD_CONF_OPTS += -Dseccomp=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBXKBCOMMON),y)\nSYSTEMD_DEPENDENCIES += libxkbcommon\nSYSTEMD_CONF_OPTS += -Dxkbcommon=true\nelse\nSYSTEMD_CONF_OPTS += -Dxkbcommon=false\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nSYSTEMD_DEPENDENCIES += bzip2\nSYSTEMD_CONF_OPTS += -Dbzip2=true\nelse\nSYSTEMD_CONF_OPTS += -Dbzip2=false\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nSYSTEMD_DEPENDENCIES += zstd\nSYSTEMD_CONF_OPTS += -Dzstd=true\nelse\nSYSTEMD_CONF_OPTS += -Dzstd=false\nendif\n\nifeq ($(BR2_PACKAGE_LZ4),y)\nSYSTEMD_DEPENDENCIES += lz4\nSYSTEMD_CONF_OPTS += -Dlz4=true\nelse\nSYSTEMD_CONF_OPTS += -Dlz4=false\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nSYSTEMD_DEPENDENCIES += linux-pam\nSYSTEMD_CONF_OPTS += -Dpam=true\nelse\nSYSTEMD_CONF_OPTS += -Dpam=false\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBFDISK),y)\nSYSTEMD_CONF_OPTS += -Dfdisk=true\nelse\nSYSTEMD_CONF_OPTS += -Dfdisk=false\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND),y)\nSYSTEMD_DEPENDENCIES += valgrind\nSYSTEMD_CONF_OPTS += -Dvalgrind=true\nelse\nSYSTEMD_CONF_OPTS += -Dvalgrind=false\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nSYSTEMD_DEPENDENCIES += xz\nSYSTEMD_CONF_OPTS += -Dxz=true\nelse\nSYSTEMD_CONF_OPTS += -Dxz=false\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nSYSTEMD_DEPENDENCIES += zlib\nSYSTEMD_CONF_OPTS += -Dzlib=true\nelse\nSYSTEMD_CONF_OPTS += -Dzlib=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nSYSTEMD_DEPENDENCIES += libcurl\nSYSTEMD_CONF_OPTS += -Dlibcurl=true\nelse\nSYSTEMD_CONF_OPTS += -Dlibcurl=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nSYSTEMD_DEPENDENCIES += libgcrypt\nSYSTEMD_CONF_OPTS += -Ddefault-dnssec=allow-downgrade -Dgcrypt=true\nelse\nSYSTEMD_CONF_OPTS += -Ddefault-dnssec=no -Dgcrypt=false\nendif\n\nifeq ($(BR2_PACKAGE_P11_KIT),y)\nSYSTEMD_DEPENDENCIES += p11-kit\nSYSTEMD_CONF_OPTS += -Dp11kit=true\nelse\nSYSTEMD_CONF_OPTS += -Dp11kit=false\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nSYSTEMD_DEPENDENCIES += openssl\nSYSTEMD_CONF_OPTS += -Dopenssl=true\nelse\nSYSTEMD_CONF_OPTS += -Dopenssl=false\nendif\n\nifeq ($(BR2_PACKAGE_PCRE2),y)\nSYSTEMD_DEPENDENCIES += pcre2\nSYSTEMD_CONF_OPTS += -Dpcre2=true\nelse\nSYSTEMD_CONF_OPTS += -Dpcre2=false\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y)\nSYSTEMD_CONF_OPTS += -Dblkid=true\nelse\nSYSTEMD_CONF_OPTS += -Dblkid=false\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_NOLOGIN),y)\nSYSTEMD_CONF_OPTS += -Dnologin-path=/sbin/nologin\nelse\nSYSTEMD_CONF_OPTS += -Dnologin-path=/bin/false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_INITRD),y)\nSYSTEMD_CONF_OPTS += -Dinitrd=true\nelse\nSYSTEMD_CONF_OPTS += -Dinitrd=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_KERNELINSTALL),y)\nSYSTEMD_CONF_OPTS += -Dkernel-install=true\nelse\nSYSTEMD_CONF_OPTS += -Dkernel-install=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_ANALYZE),y)\nSYSTEMD_CONF_OPTS += -Danalyze=true\nelse\nSYSTEMD_CONF_OPTS += -Danalyze=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE),y)\n# remote also depends on libcurl, this is already added above.\nSYSTEMD_DEPENDENCIES += libmicrohttpd\nSYSTEMD_CONF_OPTS += -Dremote=true -Dmicrohttpd=true\nSYSTEMD_REMOTE_USER = systemd-journal-remote -1 systemd-journal-remote -1 * - - - systemd Journal Remote\nelse\nSYSTEMD_CONF_OPTS += -Dremote=false -Dmicrohttpd=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBQRENCODE),y)\nSYSTEMD_DEPENDENCIES += libqrencode\nSYSTEMD_CONF_OPTS += -Dqrencode=true\nelse\nSYSTEMD_CONF_OPTS += -Dqrencode=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nSYSTEMD_DEPENDENCIES += libselinux\nSYSTEMD_CONF_OPTS += -Dselinux=true\nelse\nSYSTEMD_CONF_OPTS += -Dselinux=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_HWDB),y)\nSYSTEMD_CONF_OPTS += -Dhwdb=true\ndefine SYSTEMD_BUILD_HWDB\n\t$(HOST_DIR)/bin/udevadm hwdb --update --root $(TARGET_DIR)\nendef\nSYSTEMD_TARGET_FINALIZE_HOOKS += SYSTEMD_BUILD_HWDB\ndefine SYSTEMD_RM_HWDB_SRV\n\trm -rf $(TARGET_DIR)/$(HOST_EUDEV_SYSCONFDIR)/udev/hwdb.d/\nendef\nSYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_RM_HWDB_SRV\nelse\nSYSTEMD_CONF_OPTS += -Dhwdb=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_BINFMT),y)\nSYSTEMD_CONF_OPTS += -Dbinfmt=true\nelse\nSYSTEMD_CONF_OPTS += -Dbinfmt=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_VCONSOLE),y)\nSYSTEMD_CONF_OPTS += -Dvconsole=true\nelse\nSYSTEMD_CONF_OPTS += -Dvconsole=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_QUOTACHECK),y)\nSYSTEMD_CONF_OPTS += -Dquotacheck=true\nelse\nSYSTEMD_CONF_OPTS += -Dquotacheck=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_TMPFILES),y)\nSYSTEMD_CONF_OPTS += -Dtmpfiles=true\nelse\nSYSTEMD_CONF_OPTS += -Dtmpfiles=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y)\nSYSTEMD_CONF_OPTS += -Dsysusers=true\nelse\nSYSTEMD_CONF_OPTS += -Dsysusers=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_FIRSTBOOT),y)\nSYSTEMD_CONF_OPTS += -Dfirstboot=true\nelse\nSYSTEMD_CONF_OPTS += -Dfirstboot=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_RANDOMSEED),y)\nSYSTEMD_CONF_OPTS += -Drandomseed=true\nelse\nSYSTEMD_CONF_OPTS += -Drandomseed=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_BACKLIGHT),y)\nSYSTEMD_CONF_OPTS += -Dbacklight=true\nelse\nSYSTEMD_CONF_OPTS += -Dbacklight=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_RFKILL),y)\nSYSTEMD_CONF_OPTS += -Drfkill=true\nelse\nSYSTEMD_CONF_OPTS += -Drfkill=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_LOGIND),y)\nSYSTEMD_CONF_OPTS += -Dlogind=true\nelse\nSYSTEMD_CONF_OPTS += -Dlogind=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_MACHINED),y)\nSYSTEMD_CONF_OPTS += -Dmachined=true -Dnss-mymachines=true\nelse\nSYSTEMD_CONF_OPTS += -Dmachined=false -Dnss-mymachines=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_IMPORTD),y)\nSYSTEMD_CONF_OPTS += -Dimportd=true\nelse\nSYSTEMD_CONF_OPTS += -Dimportd=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_HOMED),y)\nSYSTEMD_CONF_OPTS += -Dhomed=true\nSYSTEMD_DEPENDENCIES += cryptsetup openssl\nelse\nSYSTEMD_CONF_OPTS += -Dhomed=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_HOSTNAMED),y)\nSYSTEMD_CONF_OPTS += -Dhostnamed=true\nelse\nSYSTEMD_CONF_OPTS += -Dhostnamed=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_MYHOSTNAME),y)\nSYSTEMD_CONF_OPTS += -Dnss-myhostname=true\nelse\nSYSTEMD_CONF_OPTS += -Dnss-myhostname=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_TIMEDATED),y)\nSYSTEMD_CONF_OPTS += -Dtimedated=true\nelse\nSYSTEMD_CONF_OPTS += -Dtimedated=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_LOCALED),y)\nSYSTEMD_CONF_OPTS += -Dlocaled=true\nelse\nSYSTEMD_CONF_OPTS += -Dlocaled=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_REPART),y)\nSYSTEMD_CONF_OPTS += -Drepart=true\nSYSTEMD_DEPENDENCIES += openssl\nelse\nSYSTEMD_CONF_OPTS += -Drepart=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_USERDB),y)\nSYSTEMD_CONF_OPTS += -Duserdb=true\nelse\nSYSTEMD_CONF_OPTS += -Duserdb=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_COREDUMP),y)\nSYSTEMD_CONF_OPTS += -Dcoredump=true\nSYSTEMD_COREDUMP_USER = systemd-coredump -1 systemd-coredump -1 * - - - systemd core dump processing\nelse\nSYSTEMD_CONF_OPTS += -Dcoredump=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_PSTORE),y)\nSYSTEMD_CONF_OPTS += -Dpstore=true\nelse\nSYSTEMD_CONF_OPTS += -Dpstore=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_OOMD),y)\nSYSTEMD_CONF_OPTS += -Doomd=true\nelse\nSYSTEMD_CONF_OPTS += -Doomd=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_POLKIT),y)\nSYSTEMD_CONF_OPTS += -Dpolkit=true\nSYSTEMD_DEPENDENCIES += polkit\nelse\nSYSTEMD_CONF_OPTS += -Dpolkit=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_PORTABLED),y)\nSYSTEMD_CONF_OPTS += -Dportabled=true\nelse\nSYSTEMD_CONF_OPTS += -Dportabled=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_SYSEXT),y)\nSYSTEMD_CONF_OPTS += -Dsysext=true\nelse\nSYSTEMD_CONF_OPTS += -Dsysext=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_NETWORKD),y)\nSYSTEMD_CONF_OPTS += -Dnetworkd=true\nSYSTEMD_NETWORKD_USER = systemd-network -1 systemd-network -1 * - - - systemd Network Management\nSYSTEMD_NETWORKD_DHCP_IFACE = $(call qstrip,$(BR2_SYSTEM_DHCP))\nifneq ($(SYSTEMD_NETWORKD_DHCP_IFACE),)\ndefine SYSTEMD_INSTALL_NETWORK_CONFS\n\tsed s/SYSTEMD_NETWORKD_DHCP_IFACE/$(SYSTEMD_NETWORKD_DHCP_IFACE)/ \\\n\t\t$(SYSTEMD_PKGDIR)/dhcp.network > \\\n\t\t$(TARGET_DIR)/etc/systemd/network/$(SYSTEMD_NETWORKD_DHCP_IFACE).network\nendef\nendif\nelse\nSYSTEMD_CONF_OPTS += -Dnetworkd=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_RESOLVED),y)\ndefine SYSTEMD_INSTALL_RESOLVCONF_HOOK\n\tln -sf ../run/systemd/resolve/resolv.conf \\\n\t\t$(TARGET_DIR)/etc/resolv.conf\nendef\nSYSTEMD_CONF_OPTS += -Dnss-resolve=true -Dresolve=true\nSYSTEMD_RESOLVED_USER = systemd-resolve -1 systemd-resolve -1 * - - - systemd Resolver\nelse\nSYSTEMD_CONF_OPTS += -Dnss-resolve=false -Dresolve=false\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nSYSTEMD_CONF_OPTS += -Ddns-over-tls=gnutls -Ddefault-dns-over-tls=opportunistic\nSYSTEMD_DEPENDENCIES += gnutls\nelse ifeq ($(BR2_PACKAGE_OPENSSL),y)\nSYSTEMD_CONF_OPTS += -Ddns-over-tls=openssl -Ddefault-dns-over-tls=opportunistic\nSYSTEMD_DEPENDENCIES += openssl\nelse\nSYSTEMD_CONF_OPTS += -Ddns-over-tls=false -Ddefault-dns-over-tls=no\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_TIMESYNCD),y)\nSYSTEMD_CONF_OPTS += -Dtimesyncd=true\nSYSTEMD_TIMESYNCD_USER = systemd-timesync -1 systemd-timesync -1 * - - - systemd Time Synchronization\nelse\nSYSTEMD_CONF_OPTS += -Dtimesyncd=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT),y)\nSYSTEMD_CONF_OPTS += -Dsmack=true\nelse\nSYSTEMD_CONF_OPTS += -Dsmack=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_HIBERNATE),y)\nSYSTEMD_CONF_OPTS += -Dhibernate=true\nelse\nSYSTEMD_CONF_OPTS += -Dhibernate=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD_BOOT),y)\nSYSTEMD_INSTALL_IMAGES = YES\nSYSTEMD_DEPENDENCIES += gnu-efi\nSYSTEMD_CONF_OPTS += \\\n\t-Defi=true \\\n\t-Dgnu-efi=true \\\n\t-Defi-cc=$(TARGET_CC) \\\n\t-Defi-ld=$(TARGET_LD) \\\n\t-Defi-libdir=$(STAGING_DIR)/usr/lib \\\n\t-Defi-includedir=$(STAGING_DIR)/usr/include/efi\n\nSYSTEMD_BOOT_EFI_ARCH = $(call qstrip,$(BR2_PACKAGE_SYSTEMD_BOOT_EFI_ARCH))\ndefine SYSTEMD_INSTALL_BOOT_FILES\n\t$(INSTALL) -D -m 0644 $(@D)/build/src/boot/efi/systemd-boot$(SYSTEMD_BOOT_EFI_ARCH).efi \\\n\t\t$(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(SYSTEMD_BOOT_EFI_ARCH).efi\n\t$(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/boot-files/loader.conf \\\n\t\t$(BINARIES_DIR)/efi-part/loader/loader.conf\n\t$(INSTALL) -D -m 0644 $(SYSTEMD_PKGDIR)/boot-files/buildroot.conf \\\n\t\t$(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf\nendef\n\nelse\nSYSTEMD_CONF_OPTS += -Defi=false -Dgnu-efi=false\nendif # BR2_PACKAGE_SYSTEMD_BOOT == y\n\nSYSTEMD_FALLBACK_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME))\nifneq ($(SYSTEMD_FALLBACK_HOSTNAME),)\nSYSTEMD_CONF_OPTS += -Dfallback-hostname=$(SYSTEMD_FALLBACK_HOSTNAME)\nendif\n\ndefine SYSTEMD_INSTALL_INIT_HOOK\n\tln -fs multi-user.target \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/default.target\nendef\n\ndefine SYSTEMD_INSTALL_MACHINEID_HOOK\n\ttouch $(TARGET_DIR)/etc/machine-id\nendef\n\nSYSTEMD_POST_INSTALL_TARGET_HOOKS += \\\n\tSYSTEMD_INSTALL_INIT_HOOK \\\n\tSYSTEMD_INSTALL_MACHINEID_HOOK\n\ndefine SYSTEMD_INSTALL_IMAGES_CMDS\n\t$(SYSTEMD_INSTALL_BOOT_FILES)\nendef\n\ndefine SYSTEMD_USERS\n\t# udev user groups\n\t# systemd user groups\n\t- - systemd-journal -1 * - - - Journal\n\t$(SYSTEMD_REMOTE_USER)\n\t$(SYSTEMD_COREDUMP_USER)\n\t$(SYSTEMD_NETWORKD_USER)\n\t$(SYSTEMD_RESOLVED_USER)\n\t$(SYSTEMD_TIMESYNCD_USER)\nendef\n\ndefine SYSTEMD_INSTALL_NSSCONFIG_HOOK\n\t$(SED) '/^passwd:/ {/systemd/! s/$$/ systemd/}' \\\n\t\t-e '/^group:/ {/systemd/! s/$$/ [SUCCESS=merge] systemd/}' \\\n\t\t-e '/^shadow:/ {/systemd/! s/$$/ systemd/}' \\\n\t\t-e '/^gshadow:/ {/systemd/! s/$$/ systemd/}' \\\n\t\t$(if $(BR2_PACKAGE_SYSTEMD_RESOLVED), \\\n\t\t\t-e '/^hosts:/ s/[[:space:]]*mymachines//' \\\n\t\t\t-e '/^hosts:/ {/resolve/! s/files/files resolve [!UNAVAIL=return]/}' ) \\\n\t\t$(if $(BR2_PACKAGE_SYSTEMD_MYHOSTNAME), \\\n\t\t\t-e '/^hosts:/ {/myhostname/! s/$$/ myhostname/}' ) \\\n\t\t$(if $(BR2_PACKAGE_SYSTEMD_MACHINED), \\\n\t\t\t-e '/^passwd:/ {/mymachines/! s/files/files mymachines/}' \\\n\t\t\t-e '/^group:/ {/mymachines/! s/files/files [SUCCESS=merge] mymachines/}' \\\n\t\t\t-e '/^hosts:/ {/mymachines/! s/files/files mymachines/}' ) \\\n\t\t$(TARGET_DIR)/etc/nsswitch.conf\nendef\n\nSYSTEMD_TARGET_FINALIZE_HOOKS += \\\n\tSYSTEMD_INSTALL_NSSCONFIG_HOOK \\\n\tSYSTEMD_INSTALL_RESOLVCONF_HOOK\n\nifneq ($(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)),)\n# systemd provides multiple units to autospawn getty as neede\n# * getty@.service to start a getty on normal TTY\n# * sertial-getty@.service to start a getty on serial lines\n# * console-getty.service for generic /dev/console\n# * container-getty@.service for a getty on /dev/pts/*\n#\n# the generator systemd-getty-generator will\n# * read the console= kernel command line parameter\n# * enable one of the above units depending on what it finds\n#\n# Systemd defaults to enablinb getty@tty1.service\n#\n# What we want to do\n# * Enable a getty on $BR2_TARGET_GENERIC_TTY_PATH\n# * Set the baudrate for all units according to BR2_TARGET_GENERIC_GETTY_BAUDRATE\n# * Always enable a getty on the console using systemd-getty-generator\n#   (backward compatibility with previous releases of buildroot)\n#\n# What we do\n# * disable getty@tty1 (enabled by upstream systemd)\n# * enable getty@xxx if  $BR2_TARGET_GENERIC_TTY_PATH is a tty\n# * enable serial-getty@xxx for other $BR2_TARGET_GENERIC_TTY_PATH\n# * rewrite baudrates if a baudrate is provided\ndefine SYSTEMD_INSTALL_SERVICE_TTY\n\tmkdir -p $(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d; \\\n\tprintf '[Install]\\nDefaultInstance=\\n' \\\n\t\t>$(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d/buildroot-console.conf; \\\n\tif [ $(BR2_TARGET_GENERIC_GETTY_PORT) = \"console\" ]; \\\n\tthen \\\n\t\t: ; \\\n\telif echo $(BR2_TARGET_GENERIC_GETTY_PORT) | egrep -q 'tty[0-9]*$$'; \\\n\tthen \\\n\t\tprintf '[Install]\\nDefaultInstance=%s\\n' \\\n\t\t\t$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) \\\n\t\t\t>$(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d/buildroot-console.conf; \\\n\telse \\\n\t\tmkdir -p $(TARGET_DIR)/usr/lib/systemd/system/serial-getty@.service.d;\\\n\t\tprintf '[Install]\\nDefaultInstance=%s\\n' \\\n\t\t\t$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) \\\n\t\t\t>$(TARGET_DIR)/usr/lib/systemd/system/serial-getty@.service.d/buildroot-console.conf;\\\n\tfi; \\\n\tif [ $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE)) -gt 0 ] ; \\\n\tthen \\\n\t\t$(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/getty@.service; \\\n\t\t$(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/serial-getty@.service; \\\n\t\t$(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/console-getty@.service; \\\n\t\t$(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/container-getty@.service; \\\n\tfi\nendef\nendif\n\ndefine SYSTEMD_INSTALL_PRESET\n\t$(INSTALL) -D -m 644 $(SYSTEMD_PKGDIR)/80-buildroot.preset $(TARGET_DIR)/usr/lib/systemd/system-preset/80-buildroot.preset\nendef\n\ndefine SYSTEMD_INSTALL_INIT_SYSTEMD\n\t$(SYSTEMD_INSTALL_PRESET)\n\t$(SYSTEMD_INSTALL_SERVICE_TTY)\n\t$(SYSTEMD_INSTALL_NETWORK_CONFS)\nendef\n\ndefine SYSTEMD_PRESET_ALL\n\t$(HOST_DIR)/bin/systemctl --root=$(TARGET_DIR) preset-all\nendef\nSYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_PRESET_ALL\n\nSYSTEMD_CONF_ENV = $(HOST_UTF8_LOCALE_ENV)\nSYSTEMD_NINJA_ENV = $(HOST_UTF8_LOCALE_ENV)\n\ndefine SYSTEMD_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_FHANDLE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_EPOLL)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SIGNALFD)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_TIMERFD)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_PROC_FS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_SYSFS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_AUTOFS4_FS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_POSIX_ACL)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_XATTR)\nendef\n\n# We need a very minimal host variant, so we disable as much as possible.\nHOST_SYSTEMD_CONF_OPTS = \\\n\t-Dsplit-bin=true \\\n\t-Dsplit-usr=false \\\n\t--prefix=/usr \\\n\t--libdir=lib \\\n\t--sysconfdir=/etc \\\n\t--localstatedir=/var \\\n\t-Dmode=release \\\n\t-Dutmp=false \\\n\t-Dhibernate=false \\\n\t-Dldconfig=false \\\n\t-Dresolve=false \\\n\t-Defi=false \\\n\t-Dtpm=false \\\n\t-Denvironment-d=false \\\n\t-Dbinfmt=false \\\n\t-Drepart=false \\\n\t-Dcoredump=false \\\n\t-Dpstore=false \\\n\t-Doomd=false \\\n\t-Dlogind=false \\\n\t-Dhostnamed=false \\\n\t-Dlocaled=false \\\n\t-Dmachined=false \\\n\t-Dportabled=false \\\n\t-Dsysext=false \\\n\t-Duserdb=false \\\n\t-Dhomed=false \\\n\t-Dnetworkd=false \\\n\t-Dtimedated=false \\\n\t-Dtimesyncd=false \\\n\t-Dremote=false \\\n\t-Dcreate-log-dirs=false \\\n\t-Dnss-myhostname=false \\\n\t-Dnss-mymachines=false \\\n\t-Dnss-resolve=false \\\n\t-Dnss-systemd=false \\\n\t-Dfirstboot=false \\\n\t-Drandomseed=false \\\n\t-Dbacklight=false \\\n\t-Dvconsole=false \\\n\t-Dquotacheck=false \\\n\t-Dsysusers=false \\\n\t-Dtmpfiles=false \\\n\t-Dimportd=false \\\n\t-Dhwdb=false \\\n\t-Drfkill=false \\\n\t-Dman=false \\\n\t-Dhtml=false \\\n\t-Dsmack=false \\\n\t-Dpolkit=false \\\n\t-Dblkid=false \\\n\t-Didn=false \\\n\t-Dadm-group=false \\\n\t-Dwheel-group=false \\\n\t-Dzlib=false \\\n\t-Dgshadow=false \\\n\t-Dima=false \\\n\t-Dtests=false \\\n\t-Dglib=false \\\n\t-Dacl=false \\\n\t-Dsysvinit-path='' \\\n\t-Dinitrd=false \\\n\t-Dxdg-autostart=false \\\n\t-Dkernel-install=false \\\n\t-Danalyze=false \\\n\t-Dlibcryptsetup=false \\\n\t-Daudit=false \\\n\t-Dzstd=false\n\nHOST_SYSTEMD_DEPENDENCIES = \\\n\t$(BR2_COREUTILS_HOST_DEPENDENCY) \\\n\thost-util-linux \\\n\thost-patchelf \\\n\thost-libcap \\\n\thost-gperf \\\n\thost-python-jinja2\n\nHOST_SYSTEMD_NINJA_ENV = DESTDIR=$(HOST_DIR)\n\n# Fix RPATH After installation\n# * systemd provides a install_rpath instruction to meson because the binaries\n#   need to link with libsystemd which is not in a standard path\n# * meson can only replace the RPATH, not append to it\n# * the original rpath is thus lost.\n# * the original path had been tweaked by buildroot via LDFLAGS to add\n#   $(HOST_DIR)/lib\n# * thus re-tweak rpath after the installation for all binaries that need it\nHOST_SYSTEMD_HOST_TOOLS = busctl journalctl systemctl systemd-* udevadm\n\ndefine HOST_SYSTEMD_FIX_RPATH\n\tfor f in $(addprefix $(HOST_DIR)/bin/,$(HOST_SYSTEMD_HOST_TOOLS)); do \\\n\t\t[ -e $$f ] || continue; \\\n\t\t$(HOST_DIR)/bin/patchelf --set-rpath $(HOST_DIR)/lib:$(HOST_DIR)/lib/systemd $${f} \\\n\t\t|| exit 1; \\\n\tdone\nendef\nHOST_SYSTEMD_POST_INSTALL_HOOKS += HOST_SYSTEMD_FIX_RPATH\n\n$(eval $(meson-package))\n$(eval $(host-meson-package))\n"
  },
  {
    "path": "package/systemd-bootchart/Config.in",
    "content": "config BR2_PACKAGE_SYSTEMD_BOOTCHART_ARCH_SUPPORTS\n\tbool\n\t# see src/architecture.h\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\tdefault y if BR2_arm || BR2_armeb\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_m68k\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdefault y if BR2_sh\n\tdefault y if BR2_sparc || BR2_sparc64\n\nconfig BR2_PACKAGE_SYSTEMD_BOOTCHART\n\tbool \"systemd-bootchart\"\n\tdepends on BR2_PACKAGE_SYSTEMD_BOOTCHART_ARCH_SUPPORTS\n\tdepends on BR2_INIT_SYSTEMD\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17\n\thelp\n\t  systemd-bootchart is a tool, usually run at system startup,\n\t  that collects the CPU load, disk load, memory usage, as well\n\t  as per-process information from a running system. Collected\n\t  results are output as an SVG graph.\n\n\t  systemd-bootchart requires a Linux kernel >= 3.0 with the\n\t  following options enabled:\n\n\t  - CONFIG_SCHEDSTATS\n\t  - CONFIG_SCHED_DEBUG\n\n\t  These options will be automatically enabled by Buildroot if\n\t  it is responsible for building the kernel. Otherwise, if you\n\t  are building your kernel outside of Buildroot, make sure\n\t  these options are enabled.\n\n\t  http://www.freedesktop.org/software/systemd/man/systemd-bootchart.html\n\ncomment \"systemd-bootchart needs a toolchain w/ headers >= 3.17\"\n\tdepends on BR2_PACKAGE_SYSTEMD_BOOTCHART_ARCH_SUPPORTS\n\tdepends on BR2_INIT_SYSTEMD\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17\n"
  },
  {
    "path": "package/systemd-bootchart/systemd-bootchart.hash",
    "content": "# sha256 locally computed\nsha256  f4cb17b21928e36ec27de5c5294dea6ec1de4acd7ee6c56d6ecc75319cbcaefa  systemd-bootchart-233.tar.xz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  LICENSE.LGPL2.1\n"
  },
  {
    "path": "package/systemd-bootchart/systemd-bootchart.mk",
    "content": "################################################################################\n#\n# systemd-bootchart\n#\n################################################################################\n\nSYSTEMD_BOOTCHART_VERSION = 233\nSYSTEMD_BOOTCHART_SOURCE = systemd-bootchart-$(SYSTEMD_BOOTCHART_VERSION).tar.xz\n# Do not use the github helper here: the uploaded release tarball already\n# contains the generated autotools scripts. It also slightly differs with\n# two missing source files... :-/\nSYSTEMD_BOOTCHART_SITE = https://github.com/systemd/systemd-bootchart/releases/download/v$(SYSTEMD_BOOTCHART_VERSION)\nSYSTEMD_BOOTCHART_LICENSE = LGPL-2.1+\nSYSTEMD_BOOTCHART_LICENSE_FILES = LICENSE.LGPL2.1\nSYSTEMD_BOOTCHART_DEPENDENCIES = systemd\n\nSYSTEMD_BOOTCHART_CONF_OPTS = --disable-man\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/sysvinit/0001-Makefile-disable-stack-protector-strong.patch",
    "content": "From 0759f3f9bb2850df455599e7c82eda4ec804e3b6 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Wed, 10 Mar 2021 22:57:50 +0100\nSubject: [PATCH] Makefile: disable stack-protector-strong\n\nFixes:\n\n  .../aarch64-buildroot-linux-uclibc/bin/ld: runlevel.o: in function `main':\n  runlevel.c:(.text.startup+0x4): undefined reference to `__stack_chk_guard'\n  .../aarch64-buildroot-linux-uclibc/bin/ld: cannot find -lssp_nonshared\n  .../aarch64-buildroot-linux-uclibc/bin/ld: cannot find -lssp\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/Makefile b/src/Makefile\nindex 1b368dc..1985929 100644\n--- a/src/Makefile\n+++ b/src/Makefile\n@@ -10,7 +10,7 @@\n \n CPPFLAGS =\n CFLAGS  ?= -O2\n-override CFLAGS += -ansi -fomit-frame-pointer -fstack-protector-strong -W -Wall -Wunreachable-code -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -D_XOPEN_SOURCE -D_GNU_SOURCE -DVERSION=\\\"$(VERSION)\\\"\n+override CFLAGS += -ansi -fomit-frame-pointer -W -Wall -Wunreachable-code -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -D_XOPEN_SOURCE -D_GNU_SOURCE -DVERSION=\\\"$(VERSION)\\\"\n override CFLAGS += $(shell getconf LFS_CFLAGS)\n STATIC\t=\n MANDB\t:= s@^\\('\\\\\\\\\\\"\\)[^\\*-]*-\\*- coding: [^[:blank:]]\\+ -\\*-@\\1@\n-- \n2.30.1\n\n"
  },
  {
    "path": "package/sysvinit/Config.in",
    "content": "config BR2_PACKAGE_SYSVINIT\n\tbool \"sysvinit\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INIT_SYSV\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  System V style implementation of /sbin/init, parent of all\n\t  processes\n\n\t  http://savannah.nongnu.org/projects/sysvinit\n"
  },
  {
    "path": "package/sysvinit/inittab",
    "content": "# /etc/inittab\n#\n# This inittab is a basic inittab sample for sysvinit, which mimics\n# Buildroot's default inittab for BusyBox.\nid:3:initdefault:\n\nsi0::sysinit:/bin/mount -t proc proc /proc\nsi1::sysinit:/bin/mount -o remount,rw /\nsi2::sysinit:/bin/mkdir -p /dev/pts /dev/shm\nsi3::sysinit:/bin/mount -a\nsi4::sysinit:/sbin/swapon -a\nsi5::sysinit:/bin/ln -sf /proc/self/fd /dev/fd 2>/dev/null\nsi6::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin 2>/dev/null\nsi7::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout 2>/dev/null\nsi8::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr 2>/dev/null\nsi9::sysinit:/bin/hostname -F /etc/hostname\nrcS:12345:wait:/etc/init.d/rcS\n\n# S0:1:respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL\n\n# Stuff to do for the 3-finger salute\n#ca::ctrlaltdel:/sbin/reboot\n\n# Stuff to do before rebooting\nshd0:06:wait:/etc/init.d/rcK\nshd1:06:wait:/sbin/swapoff -a\nshd2:06:wait:/bin/umount -a -r\n\n# The usual halt or reboot actions\nhlt0:0:wait:/sbin/halt -dhp\nreb0:6:wait:/sbin/reboot\n"
  },
  {
    "path": "package/sysvinit/sysvinit.hash",
    "content": "# Locally computed:\nsha256\tb05c3677bb698afe64c997968b00c49b2a9bd320ce963523230ee7ea41197757  sysvinit-2.99.tar.xz\n\n# Hash for license files:\nsha256\tab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/sysvinit/sysvinit.mk",
    "content": "################################################################################\n#\n# sysvinit\n#\n################################################################################\n\nSYSVINIT_VERSION = 2.99\nSYSVINIT_SOURCE = sysvinit-$(SYSVINIT_VERSION).tar.xz\nSYSVINIT_SITE = http://download.savannah.nongnu.org/releases/sysvinit\nSYSVINIT_LICENSE = GPL-2.0+\nSYSVINIT_LICENSE_FILES = COPYING\nSYSVINIT_CPE_ID_VENDOR = sysvinit_project\n\nSYSVINIT_MAKE_OPTS = SYSROOT=$(STAGING_DIR)\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nSYSVINIT_DEPENDENCIES += libselinux\nSYSVINIT_MAKE_OPTS += WITH_SELINUX=\"yes\"\nendif\n\ndefine SYSVINIT_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) $(SYSVINIT_MAKE_OPTS) -C $(@D)/src\nendef\n\ndefine SYSVINIT_INSTALL_TARGET_CMDS\n\tfor x in halt init shutdown killall5; do \\\n\t\t$(INSTALL) -D -m 0755 $(@D)/src/$$x $(TARGET_DIR)/sbin/$$x || exit 1; \\\n\tdone\n\t$(INSTALL) -D -m 0644 package/sysvinit/inittab $(TARGET_DIR)/etc/inittab\n\tln -sf /sbin/halt $(TARGET_DIR)/sbin/reboot\n\tln -sf /sbin/halt $(TARGET_DIR)/sbin/poweroff\n\tln -sf killall5 $(TARGET_DIR)/sbin/pidof\nendef\n\nifeq ($(BR2_TARGET_GENERIC_GETTY),y)\ndefine SYSVINIT_SET_GETTY\n\t$(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) #~' \\\n\t\t$(TARGET_DIR)/etc/inittab\nendef\nelse\ndefine SYSVINIT_SET_GETTY\n\t$(SED) '/# GENERIC_SERIAL$$/s~^.*#~# S0:1:respawn:/sbin/getty -L ttyS0 115200 vt100 #~' \\\n\t\t$(TARGET_DIR)/etc/inittab\nendef\nendif # BR2_TARGET_GENERIC_GETTY\nSYSVINIT_TARGET_FINALIZE_HOOKS += SYSVINIT_SET_GETTY\n\nSYSVINIT_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/szip/Config.in",
    "content": "config BR2_PACKAGE_SZIP\n\tbool \"szip\"\n\thelp\n\t  Szip is an implementation of the extended-Rice lossless\n\t  compression algorithm.\n\n\t  The Consultative Committee on Space Data Systems (CCSDS) has\n\t  adopted the extended-Rice algorithm for international\n\t  standards for space applications[1,6,7]. Szip is reported to\n\t  provide fast and effective compression, specifically for the\n\t  EOS data generated by the NASA Earth Observatory System\n\t  (EOS)[1]. It was originally developed at University of New\n\t  Mexico (UNM) and integrated with HDF4 by UNM researchers and\n\t  developers.\n\n\t  http://www.hdfgroup.org/doc_resource/SZIP\n"
  },
  {
    "path": "package/szip/szip.hash",
    "content": "# Locally computed\nsha256 21ee958b4f2d4be2c9cabfa5e1a94877043609ce86fde5f286f105f7ff84d412 szip-2.1.1.tar.gz\nsha256 98cc66747133b26563fefc4630ad4c8c7848c722c7b8a60ecd4afbc4c7d7eb01 COPYING\n"
  },
  {
    "path": "package/szip/szip.mk",
    "content": "################################################################################\n#\n# szip\n#\n################################################################################\n\nSZIP_VERSION = 2.1.1\nSZIP_SITE = http://www.hdfgroup.org/ftp/lib-external/szip/2.1.1/src\nSZIP_LICENSE = szip license\nSZIP_LICENSE_FILES = COPYING\nSZIP_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/taglib/0001-fix-taglib-config-file-for-cross-compiling-906.patch",
    "content": "From 7470f92a67375d00e53b3785a88fa7b26ad6f1da Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Fri, 17 May 2019 13:13:35 +0200\nSubject: [PATCH] fix taglib-config file for cross compiling (#906)\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe current taglib-config program does not work for cross-compiling as it only\nreturns the paths to the host, which breaks building programs which uses\n`taglib-config` to link against taglib.\n\nFix this by passing sysroot to the `prefix` and `exec_prefix` fields.\n\nBackported from: 7470f92a67375d00e53b3785a88fa7b26ad6f1da\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n CMakeLists.txt      |  2 +-\n taglib-config.cmake | 10 +++++-----\n 2 files changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 2de06324..1a0302c4 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -105,7 +105,7 @@ math(EXPR TAGLIB_SOVERSION_PATCH \"${TAGLIB_SOVERSION_REVISION}\")\n include(ConfigureChecks.cmake)\n \n if(NOT WIN32)\n-  configure_file(\"${CMAKE_CURRENT_SOURCE_DIR}/taglib-config.cmake\" \"${CMAKE_CURRENT_BINARY_DIR}/taglib-config\")\n+  configure_file(\"${CMAKE_CURRENT_SOURCE_DIR}/taglib-config.cmake\" \"${CMAKE_CURRENT_BINARY_DIR}/taglib-config\" @ONLY)\n   install(PROGRAMS \"${CMAKE_CURRENT_BINARY_DIR}/taglib-config\" DESTINATION \"${BIN_INSTALL_DIR}\")\n endif()\n \ndiff --git a/taglib-config.cmake b/taglib-config.cmake\nindex 2bc2811a..96ef6883 100644\n--- a/taglib-config.cmake\n+++ b/taglib-config.cmake\n@@ -14,10 +14,10 @@ EOH\n \texit 1;\n }\n \n-prefix=${CMAKE_INSTALL_PREFIX}\n-exec_prefix=${CMAKE_INSTALL_PREFIX}\n-libdir=${LIB_INSTALL_DIR}\n-includedir=${INCLUDE_INSTALL_DIR}\n+prefix=@CMAKE_SYSROOT@@CMAKE_INSTALL_PREFIX@\n+exec_prefix=@CMAKE_SYSROOT@@CMAKE_INSTALL_PREFIX@\n+libdir=${exec_prefix}/lib\n+includedir=${prefix}/include\n \n flags=\"\"\n \n@@ -35,7 +35,7 @@ do\n \t  flags=\"$flags -I$includedir/taglib\"\n \t  ;;\n     --version)\n-\t  echo ${TAGLIB_LIB_VERSION_STRING}\n+\t  echo @TAGLIB_LIB_VERSION_STRING@\n \t  ;;\n     --prefix)\n \t  echo $prefix\n-- \n2.22.0\n\n"
  },
  {
    "path": "package/taglib/0002-Don-t-assume-TDRC-is-an-instance-of-TextIdentificationFrame.patch",
    "content": "From eb9ded1206f18f2c319157337edea2533a40bea6 Mon Sep 17 00:00:00 2001\nFrom: \"Stephen F. Booth\" <me@sbooth.org>\nDate: Sun, 23 Jul 2017 10:11:09 -0400\nSubject: [PATCH] Don't assume TDRC is an instance of TextIdentificationFrame\n\nIf TDRC is encrypted, FrameFactory::createFrame() returns UnknownFrame\nwhich causes problems in rebuildAggregateFrames() when it is assumed\nthat TDRC is a TextIdentificationFrame\n[Retrieved from:\nhttps://github.com/taglib/taglib/pull/831/commits/eb9ded1206f18f2c319157337edea2533a40bea6]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n taglib/mpeg/id3v2/id3v2framefactory.cpp | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/taglib/mpeg/id3v2/id3v2framefactory.cpp b/taglib/mpeg/id3v2/id3v2framefactory.cpp\nindex 759a9b7be..9347ab869 100644\n--- a/taglib/mpeg/id3v2/id3v2framefactory.cpp\n+++ b/taglib/mpeg/id3v2/id3v2framefactory.cpp\n@@ -334,10 +334,11 @@ void FrameFactory::rebuildAggregateFrames(ID3v2::Tag *tag) const\n      tag->frameList(\"TDAT\").size() == 1)\n   {\n     TextIdentificationFrame *tdrc =\n-      static_cast<TextIdentificationFrame *>(tag->frameList(\"TDRC\").front());\n+      dynamic_cast<TextIdentificationFrame *>(tag->frameList(\"TDRC\").front());\n     UnknownFrame *tdat = static_cast<UnknownFrame *>(tag->frameList(\"TDAT\").front());\n \n-    if(tdrc->fieldList().size() == 1 &&\n+    if(tdrc &&\n+       tdrc->fieldList().size() == 1 &&\n        tdrc->fieldList().front().size() == 4 &&\n        tdat->data().size() >= 5)\n     {\n"
  },
  {
    "path": "package/taglib/0003-Fixed-OOB-read-when-loading-invalid-ogg-flac-file.patch",
    "content": "From 2c4ae870ec086f2ddd21a47861a3709c36faac45 Mon Sep 17 00:00:00 2001\nFrom: Scott Gayou <github.scott@gmail.com>\nDate: Tue, 9 Oct 2018 18:46:55 -0500\nSubject: [PATCH] Fixed OOB read when loading invalid ogg flac file. (#868)\n (#869)\n\nCVE-2018-11439 is caused by a failure to check the minimum length\nof a ogg flac header. This header is detailed in full at:\nhttps://xiph.org/flac/ogg_mapping.html. Added more strict checking\nfor entire header.\n[Retrieved from:\nhttps://github.com/taglib/taglib/commit/2c4ae870ec086f2ddd21a47861a3709c36faac45]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n taglib/ogg/flac/oggflacfile.cpp | 14 ++++++++++++--\n 1 file changed, 12 insertions(+), 2 deletions(-)\n\ndiff --git a/taglib/ogg/flac/oggflacfile.cpp b/taglib/ogg/flac/oggflacfile.cpp\nindex 53d04508a..07ea9dccc 100644\n--- a/taglib/ogg/flac/oggflacfile.cpp\n+++ b/taglib/ogg/flac/oggflacfile.cpp\n@@ -231,11 +231,21 @@ void Ogg::FLAC::File::scan()\n \n   if(!metadataHeader.startsWith(\"fLaC\"))  {\n     // FLAC 1.1.2+\n+    // See https://xiph.org/flac/ogg_mapping.html for the header specification.\n+    if(metadataHeader.size() < 13)\n+      return;\n+\n+    if(metadataHeader[0] != 0x7f)\n+      return;\n+\n     if(metadataHeader.mid(1, 4) != \"FLAC\")\n       return;\n \n-    if(metadataHeader[5] != 1)\n-      return; // not version 1\n+    if(metadataHeader[5] != 1 && metadataHeader[6] != 0)\n+      return; // not version 1.0\n+\n+    if(metadataHeader.mid(9, 4) != \"fLaC\")\n+      return;\n \n     metadataHeader = metadataHeader.mid(13);\n   }\n"
  },
  {
    "path": "package/taglib/Config.in",
    "content": "config BR2_PACKAGE_TAGLIB\n\tbool \"taglib\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  TagLib is a library for reading and editing the meta-data of\n\t  several popular audio formats. Currently it supports both\n\t  ID3v1 and ID3v2 for MP3 files, Ogg Vorbis comments and ID3\n\t  tags and Vorbis comments in FLAC, MPC, Speex, WavPack and\n\t  TrueAudio files.\n\n\t  http://taglib.org/\n\ncomment \"taglib needs a toolchain w/ C++, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/taglib/taglib.hash",
    "content": "# Locally calculated\nsha256 b6d1a5a610aae6ff39d93de5efd0fdc787aa9e9dc1e7026fa4c961b26563526b  taglib-1.11.1.tar.gz\nsha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LGPL\nsha256 53692a2ed6c6a2c6ec9b32dd0b820dfae91e0a1fcdf625ca9ed0bdf8705fcc4f  COPYING.MPL\n"
  },
  {
    "path": "package/taglib/taglib.mk",
    "content": "################################################################################\n#\n# taglib\n#\n################################################################################\n\nTAGLIB_VERSION = 1.11.1\nTAGLIB_SITE = http://taglib.github.io/releases\nTAGLIB_INSTALL_STAGING = YES\nTAGLIB_LICENSE = LGPL-2.1 or MPL-1.1\nTAGLIB_LICENSE_FILES = COPYING.LGPL COPYING.MPL\nTAGLIB_CPE_ID_VENDOR = taglib\n\n# 0002-Don-t-assume-TDRC-is-an-instance-of-TextIdentificationFrame.patch\nTAGLIB_IGNORE_CVES += CVE-2017-12678\n\n# 0003-Fixed-OOB-read-when-loading-invalid-ogg-flac-file.patch\nTAGLIB_IGNORE_CVES += CVE-2018-11439\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nTAGLIB_DEPENDENCIES += zlib\nendif\n\ndefine TAGLIB_REMOVE_DEVFILE\n\trm -f $(TARGET_DIR)/usr/bin/taglib-config\nendef\n\nTAGLIB_POST_INSTALL_TARGET_HOOKS += TAGLIB_REMOVE_DEVFILE\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/tar/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch",
    "content": "From a0594387565e1e6b4a8a8ba04ad13b135cc1f0b5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 1 Apr 2021 07:49:46 +0200\nSubject: [PATCH] lib/getrandom.c: fix build with uclibc < 1.0.35\n\nFix the following build failure with uclibc < 1.0.35 which is raised\nsince the addition of getrandom module in\nhttps://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=682cc4e678aceff32dea2a84b6e5147bdf5a20a7:\n\nIn file included from ./sys/random.h:40,\n                 from getrandom.c:22:\n/tmp/instance-0/output-1/per-package/tar/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name 'size_t'\n   27 | extern int getrandom(void *__buf, size_t count, unsigned int flags)\n      |                                   ^~~~~~\n/tmp/instance-0/output-1/per-package/tar/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:8:1: note: 'size_t' is defined in header '<stddef.h>'; did you forget to '#include <stddef.h>'?\n    7 | #include <features.h>\n  +++ |+#include <stddef.h>\n    8 | \n\nThis patch is not upstreamable as it is only a workaround for\nuclibc < 1.0.35, upstream uclibc has been patched with\nhttps://github.com/wbx-github/uclibc-ng/commit/00972c02c2b6e0a95d5def4a71bdfb188e091782\n\nFixes:\n - http://autobuild.buildroot.org/results/f40e09d621ab5ba66dd97138dec174acfb7fda2a\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n gnu/getrandom.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/gnu/getrandom.c b/gnu/getrandom.c\nindex 41212fb32..0ad3f9648 100644\n--- a/gnu/getrandom.c\n+++ b/gnu/getrandom.c\n@@ -19,6 +19,7 @@\n \n #include <config.h>\n \n+#include <stddef.h>\n #include <sys/random.h>\n \n #include <errno.h>\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/tar/Config.in",
    "content": "config BR2_PACKAGE_TAR\n\tbool \"tar\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  A program that saves many files together into a single tape\n\t  or disk archive, and can restore individual files from the\n\t  archive.\n\n\t  http://www.gnu.org/software/tar/\n\ncomment \"tar needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/tar/tar.hash",
    "content": "# Locally calculated after checking signature\nsha256  63bebd26879c5e1eea4352f0d03c991f966aeb3ddeb3c7445c902568d5411d28  tar-1.34.tar.xz\nsha256  51337b19c71df92cd4f51c50efe4dc6ddc267d31fd54679be9e9bc2e6ce8132b  tar-1.34.cpio.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/tar/tar.mk",
    "content": "################################################################################\n#\n# tar\n#\n################################################################################\n\nTAR_VERSION = 1.34\nTAR_SOURCE = tar-$(TAR_VERSION).tar.xz\nTAR_SITE = $(BR2_GNU_MIRROR)/tar\n# busybox installs in /bin, so we need tar to install as well in /bin\n# so that we don't end up with two different tar\nTAR_CONF_OPTS = --exec-prefix=/\nTAR_LICENSE = GPL-3.0+\nTAR_LICENSE_FILES = COPYING\nTAR_CPE_ID_VENDOR = gnu\n# only tar <= 1.16\nTAR_IGNORE_CVES += CVE-2007-4476\n\nifeq ($(BR2_PACKAGE_ACL),y)\nTAR_DEPENDENCIES += acl\nTAR_CONF_OPTS += --with-posix-acls\nelse\nTAR_CONF_OPTS += --without-posix-acls\nendif\n\nifeq ($(BR2_PACKAGE_ATTR),y)\nTAR_DEPENDENCIES += attr\nTAR_CONF_OPTS += --with-xattrs\nelse\nTAR_CONF_OPTS += --without-xattrs\nendif\n\n$(eval $(autotools-package))\n\n# host-tar: use cpio.gz instead of tar.gz to prevent chicken-egg problem\n# of needing tar to build tar.\nHOST_TAR_SOURCE = tar-$(TAR_VERSION).cpio.gz\n\ndefine HOST_TAR_EXTRACT_CMDS\n\tmkdir -p $(@D)\n\tcd $(@D) && \\\n\t\t$(call suitable-extractor,$(HOST_TAR_SOURCE)) $(TAR_DL_DIR)/$(HOST_TAR_SOURCE) | cpio -i --preserve-modification-time\n\tmv $(@D)/tar-$(HOST_TAR_VERSION)/* $(@D)\n\trmdir $(@D)/tar-$(HOST_TAR_VERSION)\nendef\n\nHOST_TAR_CONF_OPTS = --without-selinux\n\n# we are built before ccache\nHOST_TAR_CONF_ENV = \\\n\tCC=\"$(HOSTCC_NOCCACHE)\" \\\n\tCXX=\"$(HOSTCXX_NOCCACHE)\"\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/targetcli-fb/Config.in",
    "content": "comment \"targetcli-fb depends on Python\"\n\tdepends on !BR2_PACKAGE_PYTHON3\n\nconfig BR2_PACKAGE_TARGETCLI_FB\n\tbool \"targetcli-fb\"\n\tdepends on BR2_PACKAGE_PYTHON3 # python-configshell-fb\n\tselect BR2_PACKAGE_PYTHON_CONFIGSHELL_FB\n\tselect BR2_PACKAGE_PYTHON_RTSLIB_FB\n\tselect BR2_PACKAGE_PYTHON_SIX\n\thelp\n\t  targetcli-fb is a command-line interface for configuring the\n\t  LIO generic SCSI target, present in 3.x Linux kernel\n\t  versions.\n\n\t  https://github.com/open-iscsi/targetcli-fb\n"
  },
  {
    "path": "package/targetcli-fb/S50target",
    "content": "#!/bin/sh\n#\n# Restore / clear the Linux \"SCSI target\" driver configuration with `targetctl`\n#\n\nstart() {\n\tlocal ret\n\n\tprintf \"Restoring target configuration: \"\n\t/usr/bin/targetctl restore >/dev/null 2>&1\n\tret=$?\n\techo \"done\"\n\n\treturn $ret\n}\n\nstop() {\n\tlocal ret\n\n\tprintf \"Clearing target configuration: \"\n\t/usr/bin/targetctl clear >/dev/null 2>&1\n\tret=$?\n\techo \"done\"\n\n\treturn $ret\n}\n\nrestart() {\n\tstop\n\tstart\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t\t;;\n\tstop)\n\t\tstop\n\t\t;;\n\trestart)\n\t\trestart\n\t\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/targetcli-fb/target.service",
    "content": "[Unit]\nDescription=Restore LIO kernel target configuration\nRequires=sys-kernel-config.mount\nAfter=sys-kernel-config.mount network.target local-fs.target\n\n[Service]\nType=oneshot\nRemainAfterExit=yes\nExecStart=/usr/bin/targetctl restore\nExecStop=/usr/bin/targetctl clear\nSyslogIdentifier=target\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/targetcli-fb/targetcli-fb.hash",
    "content": "# locally computed\nsha256  0f32ab6f3ecd234280d55be5e89ce2b3a02f9c82c8dccaae66e26464cff8901a  targetcli-fb-2.1.fb41.tar.gz\nsha256  5df2a0d87d6c562f0ea11c688ac52532aa28d744cabc7994ff0537f64b3b3320  COPYING\n"
  },
  {
    "path": "package/targetcli-fb/targetcli-fb.mk",
    "content": "################################################################################\n#\n# targetcli-fb\n#\n################################################################################\n\n# When upgrading the version, be sure to also upgrade python-rtslib-fb\n# and python-configshell-fb at the same time.\nTARGETCLI_FB_VERSION = 2.1.fb41\nTARGETCLI_FB_SITE = $(call github,open-iscsi,targetcli-fb,v$(TARGETCLI_FB_VERSION))\nTARGETCLI_FB_LICENSE = Apache-2.0\nTARGETCLI_FB_LICENSE_FILES = COPYING\nTARGETCLI_FB_SETUP_TYPE = setuptools\nTARGETCLI_FB_DEPENDENCIES = python-configshell-fb python-rtslib-fb python-six\n\ndefine TARGETCLI_FB_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/targetcli-fb/S50target \\\n\t\t$(TARGET_DIR)/etc/init.d/S50target\nendef\n\ndefine TARGETCLI_FB_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -m 0644 -D package/targetcli-fb/target.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/target.service\nendef\n\n# Targetcli stores its configuration in /etc/target/saveconfig.json\n# and complains if the /etc/target/ directory does not exist.\ndefine TARGETCLI_FB_INSTALL_CONF_DIR\n\t$(INSTALL) -m 0755 -d $(TARGET_DIR)/etc/target\nendef\n\nTARGETCLI_FB_POST_INSTALL_TARGET_HOOKS += TARGETCLI_FB_INSTALL_CONF_DIR\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/taskd/0001-Fix-missing-cmakedefine-HAVE_GET_CURRENT_DIR_NAME.patch",
    "content": "From b067ab9bf667bb9257bb9eeaa6bf25f9a1a17f06 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Fri, 6 May 2016 23:35:42 +0200\nSubject: [PATCH] Fix missing cmakedefine HAVE_GET_CURRENT_DIR_NAME\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n cmake.h.in | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/cmake.h.in b/cmake.h.in\nindex 4124ce9..0b8f9d0 100644\n--- a/cmake.h.in\n+++ b/cmake.h.in\n@@ -51,6 +51,7 @@\n #cmakedefine HAVE_ST_BIRTHTIME\n \n /* Functions */\n+#cmakedefine HAVE_GET_CURRENT_DIR_NAME\n #cmakedefine HAVE_TIMEGM\n #cmakedefine HAVE_UUID_UNPARSE_LOWER\n \n-- \n2.8.2\n\n"
  },
  {
    "path": "package/taskd/0002-Use-correct-variables-for-GnuTLS-detection.patch",
    "content": "From 88fee5c6eb2271d3de6b9878cd29a0494999aa18 Mon Sep 17 00:00:00 2001\nFrom: \"Arnout Vandecappelle (Essensium/Mind)\" <arnout@mind.be>\nDate: Sun, 20 Nov 2016 23:46:45 +0100\nSubject: [PATCH] Use correct variables for GnuTLS detection\n\nAt least with recent CMake, it seems the variables created by\nfind_package (GnuTLS) are called PC_GNUTLS_INCLUDE_DIRS and\nPC_GNUTLS_LIBRARIES.\n\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n---\n CMakeLists.txt | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex d8125d9..ccf827b 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -110,8 +110,8 @@ message (\"-- Looking for GnuTLS\")\n find_package (GnuTLS REQUIRED)\n if (GNUTLS_FOUND)\n   set (HAVE_LIBGNUTLS true)\n-  set (TASKD_INCLUDE_DIRS ${TASKD_INCLUDE_DIRS} ${GNUTLS_INCLUDE_DIR})\n-  set (TASKD_LIBRARIES    ${TASKD_LIBRARIES}    ${GNUTLS_LIBRARIES})\n+  set (TASKD_INCLUDE_DIRS ${TASKD_INCLUDE_DIRS} ${PC_GNUTLS_INCLUDE_DIRS})\n+  set (TASKD_LIBRARIES    ${TASKD_LIBRARIES}    ${PC_GNUTLS_LIBRARIES})\n endif (GNUTLS_FOUND)\n \n message (\"-- Looking for libuuid\")\n-- \n2.10.2\n\n"
  },
  {
    "path": "package/taskd/0003-CMakeLists-use-pkg-config-uuid-detection.patch",
    "content": "CMakeLists.txt: use pkg-config to detect uuid when possible\n\nIn order to take into account the libraries used by libuuid when\nbuilding statically, using pkg-config is recommended. This patch\ntherefore improves the CMakeLists.txt to use pkg-config to detect\nlibuuid when pkg-config is available.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/CMakeLists.txt\n===================================================================\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -6,6 +6,7 @@\n \n include (CheckFunctionExists)\n include (CheckStructHasMember)\n+include (FindPkgConfig)\n \n set (HAVE_CMAKE true)\n \n@@ -119,8 +120,16 @@\n   # Apple and FreeBSD include the uuid functions in their libc, rather than libuuid\n   check_function_exists (uuid_unparse_lower HAVE_UUID_UNPARSE_LOWER)\n else (DARWIN OR FREEBSD)\n-  find_path    (UUID_INCLUDE_DIR   uuid/uuid.h)\n-  find_library (UUID_LIBRARY NAMES uuid)\n+  if(PKG_CONFIG_FOUND)\n+    pkg_check_modules(PC_UUID uuid)\n+    if(PC_UUID_FOUND)\n+      set (UUID_INCLUDE_DIR ${PC_UUID_INCLUDE_DIRS})\n+      set (UUID_LIBRARY ${PC_UUID_LIBRARIES})\n+    endif(PC_UUID_FOUND)\n+  else(PKG_CONFIG_FOUND)\n+    find_path    (UUID_INCLUDE_DIR   uuid/uuid.h)\n+    find_library (UUID_LIBRARY NAMES uuid)\n+  endif(PKG_CONFIG_FOUND)\n   if (UUID_INCLUDE_DIR AND UUID_LIBRARY)\n     set (TASKD_INCLUDE_DIRS ${TASKD_INCLUDE_DIRS} ${UUID_INCLUDE_DIR})\n     set (TASKD_LIBRARIES    ${TASKD_LIBRARIES}    ${UUID_LIBRARY})\n"
  },
  {
    "path": "package/taskd/Config.in",
    "content": "config BR2_PACKAGE_TASKD\n\tbool \"taskd\"\n\tdepends on !BR2_STATIC_LIBS # gnutls\n\tdepends on BR2_USE_WCHAR # gnutls\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_GNUTLS\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Task management synchronization daemon.\n\n\t  http://taskwarrior.org/\n\ncomment \"taskd needs a toolchain w/ C++, wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/taskd/taskd.hash",
    "content": "# From http://taskwarrior.org/download/\nsha1 ded339deeee65277e4712f71a9159502f8b20b52 taskd-1.1.0.tar.gz\n# Locally calculated\nsha256  7b8488e687971ae56729ff4e2e5209ff8806cf8cd57718bfd7e521be130621b4  taskd-1.1.0.tar.gz\nsha256  84d1a8c2e6e306864ff350857a36b6c74756e61e2eae6822cf2fa88212720f68  COPYING\n"
  },
  {
    "path": "package/taskd/taskd.mk",
    "content": "################################################################################\n#\n# taskd\n#\n################################################################################\n\nTASKD_VERSION = 1.1.0\nTASKD_SITE = http://taskwarrior.org/download\nTASKD_LICENSE = MIT\nTASKD_LICENSE_FILES = COPYING\nTASKD_DEPENDENCIES = gnutls util-linux host-pkgconf\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/tcf-agent/Config.in",
    "content": "config BR2_PACKAGE_TCF_AGENT\n\tbool \"tcf-agent\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU # util-linux\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Target Communication Framework Agent is an example\n\t  application using the Target Communication Framework\n\t  Library.\n\n\t  Target Communication Framework is universal, extensible,\n\t  simple, lightweight, vendor agnostic framework for tools and\n\t  targets to communicate for purpose of debugging, profiling,\n\t  code patching and other device software development needs.\n\n\t  tcf-agent is a daemon, which provides TCF services that can\n\t  be used by local and remote clients.\n\n\t  https://wiki.eclipse.org/TCF\n\nconfig BR2_PACKAGE_TCF_AGENT_ARCH\n\tstring\n\tdefault \"arm\"        if BR2_arm || BR2_armeb\n\tdefault \"a64\"        if BR2_aarch64 || BR2_aarch64_be\n\tdefault \"i686\"       if BR2_i386 && BR2_ARCH=\"i686\"\n\tdefault \"i386\"       if BR2_i386 && !BR2_ARCH=\"i686\"\n\tdefault \"x86_64\"     if BR2_x86_64\n\tdefault \"powerpc\"    if BR2_powerpc || BR2_powerpcle\n\tdefault \"ppc64\"      if BR2_powerpc64 || BR2_powerpc64le\n\tdefault \"microblaze\" if BR2_microblaze || BR2_microblazeel\n\nconfig BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_PACKAGE_TCF_AGENT_ARCH != \"\"\n\ncomment \"tcf-agent needs a toolchain w/ threads\"\n\tdepends on BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/tcf-agent/S55tcf-agent",
    "content": "#!/bin/sh\n\nDAEMON_PATH=/usr/sbin/tcf-agent\nDAEMON_NAME=tcf-agent\nDAEMON_ARGS=\"-L- -l0\"\n\nPIDFILE=/var/run/$DAEMON_NAME.pid\n[ -r /etc/default/$DAEMON_NAME ] && . /etc/default/$DAEMON_NAME\n\nstart() {\n\tprintf \"Starting $DAEMON_NAME: \"\n\tstart-stop-daemon -S -o -q -p $PIDFILE -m -b \\\n\t\t-x $DAEMON_PATH -- $DAEMON_ARGS\n\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n\tprintf \"Stopping $DAEMON_NAME: \"\n\tstart-stop-daemon -K -o -q -p $PIDFILE \\\n\t\t-x $DAEMON_PATH\n\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\ncase \"$1\" in\n\tstart)\n\tstart\n\t;;\n\tstop)\n\tstop\n\t;;\n\trestart|reload)\n\tstop\n\tstart\n\t;;\n\t*)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n"
  },
  {
    "path": "package/tcf-agent/tcf-agent.hash",
    "content": "# Locally computed:\nsha256  2f8c7be8a0bf7c86c72fd5680bc19a9e8f98792d40c94a0fee30ceb6428b8f33  org.eclipse.tcf.agent-1.7.0.tar.gz\n\n# Hash for license files:\nsha256  f82d01b74a513bd3504d08136026a5ac2a7e6ff62ebcde391fa74aa222d11ce0  agent/edl-v10.html\n"
  },
  {
    "path": "package/tcf-agent/tcf-agent.mk",
    "content": "################################################################################\n#\n# tcf-agent\n#\n################################################################################\n\nTCF_AGENT_VERSION = 1.7.0\n# the tar.xz link was broken the time this file got authored\nTCF_AGENT_SOURCE = org.eclipse.tcf.agent-$(TCF_AGENT_VERSION).tar.gz\nTCF_AGENT_SITE = http://git.eclipse.org/c/tcf/org.eclipse.tcf.agent.git/snapshot\n# see https://wiki.spdx.org/view/Legal_Team/License_List/Licenses_Under_Consideration\nTCF_AGENT_LICENSE = BSD-3-Clause\nTCF_AGENT_LICENSE_FILES = agent/edl-v10.html\n\nTCF_AGENT_DEPENDENCIES = util-linux\nTCF_AGENT_SUBDIR = agent\n\n# there is not much purpose for the shared lib,\n# if wont be used (unmodifed) outside the tcf-agent application\nTCF_AGENT_CONF_OPTS = \\\n\t-DBUILD_SHARED_LIBS=OFF \\\n\t-DTCF_MACHINE=$(call qstrip,$(BR2_PACKAGE_TCF_AGENT_ARCH))\n\ndefine TCF_AGENT_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/tcf-agent/tcf-agent.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/tcf-agent.service\nendef\n\ndefine TCF_AGENT_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/tcf-agent/S55tcf-agent \\\n\t\t$(TARGET_DIR)/etc/init.d/S55tcf-agent\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/tcf-agent/tcf-agent.service",
    "content": "[Unit]\nDescription=Target Communication Framework Agent\nAfter=network.target\n\n[Service]\nExecStart=/usr/sbin/tcf-agent -L- -l0\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/tcl/0001-dont-build-compat.patch",
    "content": "From: Andrew Ruder <andrew.ruder@elecsyscorp.com>\nSubject: [PATCH] Disable tcl compatibility layers\n\nTurn off building compatibility layers for old/broken versions of\nstandard functions (strstr, strtoul, strtod) with the assumption that\nanything buildroot is using as a standard C library will be good enough\nto not have broken behavior.\n\nSigned-off-by: Andrew Ruder <andrew.ruder@elecsyscorp.com>\n[Fabrice: Update for 8.6.9]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n\ndiff --git a/unix/tcl.m4 b/unix/tcl.m4\n--- a/unix/tcl.m4\n+++ b/unix/tcl.m4\n@@ -2725,7 +2725,7 @@ AC_DEFUN([SC_TCL_CHECK_BROKEN_FUNC],[\n     if test [\"$tcl_ok\"] = 1; then\n \tAC_CACHE_CHECK([proper ]$1[ implementation], [tcl_cv_]$1[_unbroken],\n \t    AC_TRY_RUN([[int main() {]$2[}]],[tcl_cv_]$1[_unbroken]=ok,\n-\t\t[tcl_cv_]$1[_unbroken]=broken,[tcl_cv_]$1[_unbroken]=unknown))\n+\t\t[tcl_cv_]$1[_unbroken]=broken,[tcl_cv_]$1[_unbroken]=ok))\n \tif test [\"$tcl_cv_]$1[_unbroken\"] = \"ok\"; then\n \t    tcl_ok=1\n \telse\n"
  },
  {
    "path": "package/tcl/Config.in",
    "content": "comment \"tcl needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_TCL\n\tbool \"tcl\"\n\t# fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# See this mailing list thread:\n\t# http://lists.busybox.net/pipermail/buildroot/2015-March/121198.html\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  TCL (Tool Command Language) is a simple textual language.\n\n\t  http://www.tcl.tk\n\nif BR2_PACKAGE_TCL\n\nconfig BR2_PACKAGE_TCL_DEL_ENCODINGS\n\tbool \"delete encodings (saves 1.6Mb)\"\n\tdefault y\n\thelp\n\t  Delete encoding files for TCL. If your programs do not use\n\t  various tcl character recoding functions, you may safely\n\t  choose Y here.\n\n\t  It saves approx. 1.6 Mb of space.\n\nconfig BR2_PACKAGE_TCL_SHLIB_ONLY\n\tbool \"install only shared library\"\n\tdefault y\n\thelp\n\t  Install only TCL shared library and not binary tcl\n\t  interpreter (tclsh).\n\n\t  Saves ~14kb.\n\nendif\n"
  },
  {
    "path": "package/tcl/tcl.hash",
    "content": "# Locally calculated\nsha256 ad0cd2de2c87b9ba8086b43957a0de3eb2eb565c7159d5f53ccbba3feb915f4e  tcl8.6.9-src.tar.gz\nsha256 c0a69a2bfd757361ec7e6143973b103c90409316b49e9c88db26ad6388e79f16  license.terms\n"
  },
  {
    "path": "package/tcl/tcl.mk",
    "content": "################################################################################\n#\n# tcl\n#\n################################################################################\n\nTCL_VERSION_MAJOR = 8.6\nTCL_VERSION = $(TCL_VERSION_MAJOR).9\nTCL_SOURCE = tcl$(TCL_VERSION)-src.tar.gz\nTCL_SITE = http://downloads.sourceforge.net/project/tcl/Tcl/$(TCL_VERSION)\nTCL_LICENSE = TCL\nTCL_LICENSE_FILES = license.terms\nTCL_CPE_ID_VENDOR = tcl\nTCL_SUBDIR = unix\nTCL_INSTALL_STAGING = YES\nTCL_AUTORECONF = YES\n\nTCL_CONF_OPTS = \\\n\t--disable-symbols \\\n\t--disable-langinfo \\\n\t--disable-framework\n\nHOST_TCL_CONF_OPTS = \\\n\t--disable-symbols \\\n\t--disable-langinfo \\\n\t--disable-framework\n\n# I haven't found a good way to force pkgs to not build\n# or configure without just removing the entire pkg directory.\ndefine HOST_TCL_REMOVE_PACKAGES\n\trm -fr $(@D)/pkgs/sqlite3* $(@D)/pkgs/tdbc*\nendef\nHOST_TCL_PRE_CONFIGURE_HOOKS += HOST_TCL_REMOVE_PACKAGES\n\n# We remove the bundled sqlite as we prefer to not use bundled stuff at all.\ndefine TCL_REMOVE_PACKAGES\n\trm -fr $(@D)/pkgs/sqlite3* \\\n\t\t$(if $(BR2_PACKAGE_MYSQL),,$(@D)/pkgs/tdbcmysql*) \\\n\t\t$(@D)/pkgs/tdbcodbc* \\\n\t\t$(if $(BR2_PACKAGE_POSTGRESQL),,$(@D)/pkgs/tdbcpostgres*) \\\n\t\t$(if $(BR2_PACKAGE_SQLITE),,$(@D)/pkgs/tdbcsqlite3*)\nendef\nTCL_PRE_CONFIGURE_HOOKS += TCL_REMOVE_PACKAGES\n\nifeq ($(BR2_PACKAGE_TCL_DEL_ENCODINGS),y)\ndefine TCL_REMOVE_ENCODINGS\n\trm -rf $(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/encoding/*\nendef\nTCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_ENCODINGS\nendif\n\nifeq ($(BR2_PACKAGE_TCL_SHLIB_ONLY),y)\ndefine TCL_REMOVE_TCLSH\n\trm -f $(TARGET_DIR)/usr/bin/tclsh$(TCL_VERSION_MAJOR)\nendef\nTCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_TCLSH\nelse\ndefine TCL_SYMLINK_TCLSH\n\tln -sf tclsh$(TCL_VERSION_MAJOR) $(TARGET_DIR)/usr/bin/tclsh\nendef\nTCL_POST_INSTALL_TARGET_HOOKS += TCL_SYMLINK_TCLSH\nendif\n\n# Until someone needs it, we don't handle locale installation.  tcl has\n# a complicated method of translating LANG-style locale names into its internal\n# .msg name which makes it difficult to save the correct locales per the\n# configured whitelist.\ndefine TCL_REMOVE_EXTRA\n\trm -fr $(TARGET_DIR)/usr/lib/tclConfig.sh \\\n\t\t$(TARGET_DIR)/usr/lib/tclooConfig.sh \\\n\t\t$(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/tclAppInit.c \\\n\t\t$(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/msgs\nendef\nTCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_EXTRA\n\nTCL_DEPENDENCIES = $(if $(BR2_PACKAGE_SQLITE),sqlite) \\\n\t$(if $(BR2_PACKAGE_MYSQL),mysql) \\\n\t$(if $(BR2_PACKAGE_POSTGRESQL),postgresql)\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/tclap/Config.in",
    "content": "comment \"tclap needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_TCLAP\n\tbool \"tclap\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  This is a small, flexible library that provides a simple\n\t  interface for defining and accessing command line\n\t  arguments. It was initially inspired by the user friendly\n\t  CLAP libary. The difference is that this library is\n\t  templatized, so the argument class is type independent. Type\n\t  independence avoids identical-except-for-type objects, such\n\t  as IntArg, FloatArg, and StringArg. While the library is not\n\t  strictly compliant with the GNU or POSIX standards, it is\n\t  close.\n\n\t  http://tclap.sourceforge.net/\n"
  },
  {
    "path": "package/tclap/tclap.hash",
    "content": "# Locally computed:\nsha256  634c5b59dbb1ccbc9d6a5f6de494a257e29a3f59dcb6fc30445ff39b45188574  tclap-1.2.4.tar.gz\nsha256  cd81a61d47aeb1ed63036ca260baee37719923bbd7ebd988ec4edae128f3b6eb  COPYING\n"
  },
  {
    "path": "package/tclap/tclap.mk",
    "content": "################################################################################\n#\n# tclap\n#\n################################################################################\n\nTCLAP_VERSION = 1.2.4\nTCLAP_SITE = http://downloads.sourceforge.net/project/tclap\nTCLAP_LICENSE = MIT\nTCLAP_LICENSE_FILES = COPYING\nTCLAP_INSTALL_STAGING = YES\nTCLAP_CPE_ID_VENDOR = tclap_project\n\n# This package is a pure C++ template library, only made of headers.\nTCLAP_INSTALL_TARGET = NO\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tcllib/Config.in",
    "content": "config BR2_PACKAGE_TCLLIB\n\tbool \"tcllib\"\n\thelp\n\t  Tcllib is a collection of utility modules for Tcl. These\n\t  modules provide a wide variety of functionality, from\n\t  implementations of standard data structures to\n\t  implementations of common networking protocols. The intent\n\t  is to collect commonly used function into a single library,\n\t  which users can rely on to be available and stable\n\n\t  https://www.tcl.tk/software/tcllib/\n"
  },
  {
    "path": "package/tcllib/tcllib.hash",
    "content": "# Locally computed:\nsha256  0db9e17d6c0f44d3ca2df2ea5023e35c0f3767e7008c3cb26d201446eb68add1  tcllib-1.13.tar.bz2\nsha256  530ec70eb11a455bd582d86b6d74c2dd7cc367d90b8bbdd59fcb43ae02f95a4b  license.terms\n"
  },
  {
    "path": "package/tcllib/tcllib.mk",
    "content": "################################################################################\n#\n# tcllib\n#\n################################################################################\n\nTCLLIB_VERSION = 1.13\nTCLLIB_SOURCE = tcllib-$(TCLLIB_VERSION).tar.bz2\nTCLLIB_SITE = http://downloads.sourceforge.net/project/tcllib/tcllib/$(TCLLIB_VERSION)\nTCLLIB_LICENSE = TCL\nTCLLIB_LICENSE_FILES = license.terms\nTCLLIB_DEPENDENCIES = host-tcl\nTCLLIB_CONF_ENV = ac_cv_path_tclsh=\"$(HOST_DIR)/bin/tclsh$(TCL_VERSION_MAJOR)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tcpdump/Config.in",
    "content": "config BR2_PACKAGE_TCPDUMP\n\tbool \"tcpdump\"\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  A tool for network monitoring and data acquisition.\n\n\t  http://www.tcpdump.org/\n\nif BR2_PACKAGE_TCPDUMP\n\nconfig BR2_PACKAGE_TCPDUMP_SMB\n\tbool \"smb dump support\"\n\thelp\n\t  enable possibly-buggy SMB printer\n\nendif\n"
  },
  {
    "path": "package/tcpdump/tcpdump.hash",
    "content": "# Locally calculated after checking pgp signature at\n# https://www.tcpdump.org/release/tcpdump-4.99.1.tar.gz.sig\n# using key 1F166A5742ABB9E0249A8D30E089DEF1D9C15D0D\nsha256  79b36985fb2703146618d87c4acde3e068b91c553fb93f021a337f175fd10ebe  tcpdump-4.99.1.tar.gz\nsha256  8a54594d257e14a5260ac770f1633516cb51e3fc28c40136ce2697014eda7afd  LICENSE\n"
  },
  {
    "path": "package/tcpdump/tcpdump.mk",
    "content": "################################################################################\n#\n# tcpdump\n#\n################################################################################\n\nTCPDUMP_VERSION = 4.99.1\nTCPDUMP_SITE = https://www.tcpdump.org/release\nTCPDUMP_LICENSE = BSD-3-Clause\nTCPDUMP_LICENSE_FILES = LICENSE\nTCPDUMP_CPE_ID_VENDOR = tcpdump\nTCPDUMP_CONF_ENV = \\\n\tac_cv_linux_vers=2 \\\n\ttd_cv_buggygetaddrinfo=no \\\n\tPCAP_CONFIG=$(STAGING_DIR)/usr/bin/pcap-config\nTCPDUMP_CONF_OPTS = \\\n\t--without-crypto \\\n\t--disable-local-libpcap \\\n\t$(if $(BR2_PACKAGE_TCPDUMP_SMB),--enable-smb,--disable-smb)\nTCPDUMP_DEPENDENCIES = libpcap host-pkgconf\nTCPDUMP_SELINUX_MODULES = netutils\n\n# make install installs an unneeded extra copy of the tcpdump binary\ndefine TCPDUMP_REMOVE_DUPLICATED_BINARY\n\trm -f $(TARGET_DIR)/usr/bin/tcpdump.$(TCPDUMP_VERSION)\nendef\n\nTCPDUMP_POST_INSTALL_TARGET_HOOKS += TCPDUMP_REMOVE_DUPLICATED_BINARY\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tcping/Config.in",
    "content": "config BR2_PACKAGE_TCPING\n\tbool \"tcping\"\n\thelp\n\t  tcping does a TCP connect to the given ip/port\n\t  combination. The user can specify a timeout in seconds. This\n\t  is useful in shell scripts running in firewalled\n\t  environments. Often SYNs are just being dropped by\n\t  firewalls, thus connection establishment will be retried\n\t  several times (for minutes) until a TCP timeout is\n\t  reached. With tcping it is possible to check first if the\n\t  desired port is reachable and then start connection\n\t  establishment.\n\n\t  https://github.com/mkirchner/tcping\n"
  },
  {
    "path": "package/tcping/tcping.hash",
    "content": "# Locally calculated\nsha256\ta731f0e48ff931d7b2a0e896e4db40867043740fe901dd225780f2164fdbdcf3\ttcping-1.3.6.tar.gz\nsha256\t4a35620e27ddb8de27898e4206c8f93633d877c1e128e98e95a035f760d94428\tLICENSE\n"
  },
  {
    "path": "package/tcping/tcping.mk",
    "content": "################################################################################\n#\n# tcping\n#\n################################################################################\n\nTCPING_VERSION = 1.3.6\nTCPING_SITE = $(call github,mkirchner,tcping,$(TCPING_VERSION))\nTCPING_LICENSE = MIT\nTCPING_LICENSE_FILES = LICENSE\n\ndefine TCPING_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" CCFLAGS=\"$(TARGET_CFLAGS) $(TARGET_LDFLAGS)\" \\\n\t\t-C $(@D) tcping.linux\nendef\n\ndefine TCPING_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/tcping $(TARGET_DIR)/usr/bin/tcping\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/tcpreplay/0001-configure-ac-fix-without-libdnet.patch",
    "content": "From acee9c0c46f71f1f4c33c2dadf69d19e24b90f27 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 13 Aug 2019 20:19:23 +0200\nSubject: [PATCH] configure.ac: fix --without-libdnet\n\nAllow the user to disable libdnet check through --without-libdnet.\nThis option is useful to cross-compile tcpreplay to avoid build failures\nif libdnet is installed on host but not on target, see\nhttps://bugs.buildroot.org/show_bug.cgi?id=12096\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/appneta/tcpreplay/pull/567]\n---\n configure.ac | 48 +++++++++++++++++++++++++-----------------------\n 1 file changed, 25 insertions(+), 23 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 39ba58b7..5de3dcb5 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1464,30 +1464,32 @@ if test $have_cygwin = no ; then\n         AC_HELP_STRING([--with-libdnet=DIR], [Use libdnet in DIR]),\n         [trydnetdir=$withval])\n \n-    case \"$build_os\" in\n-    linux*)\n-        dnl # Debian/Ubuntu already have a package called libdnet\n-        dnl # so you the package you want to install libdumbnet-dev\n-        for testdir in $trydnetdir /usr/local /opt/local /usr ; do\n-            if test -x ${testdir}/bin/dumbnet-config -a $founddnet = no ; then\n-                LDNETINC=\"$($testdir/bin/dumbnet-config --cflags)\"\n-                LDNETLIB=\"$($testdir/bin/dumbnet-config --libs)\"\n-                libdnet_version=\"$($testdir/bin/dumbnet-config --version) (libdumbnet)\"\n-                founddnet=$testdir\n-            fi\n-        done\n-        ;;\n-    esac\n+    if test $trydnetdir != no; then\n+        case \"$build_os\" in\n+        linux*)\n+            dnl # Debian/Ubuntu already have a package called libdnet\n+            dnl # so you the package you want to install libdumbnet-dev\n+            for testdir in $trydnetdir /usr/local /opt/local /usr ; do\n+                if test -x ${testdir}/bin/dumbnet-config -a $founddnet = no ; then\n+                    LDNETINC=\"$($testdir/bin/dumbnet-config --cflags)\"\n+                    LDNETLIB=\"$($testdir/bin/dumbnet-config --libs)\"\n+                    libdnet_version=\"$($testdir/bin/dumbnet-config --version) (libdumbnet)\"\n+                    founddnet=$testdir\n+                fi\n+            done\n+            ;;\n+        esac\n \n-    if test $founddnet = no ; then\n-        for testdir in $trydnetdir /usr/local /opt/local $MACOSX_SDK_PATH/usr /usr ; do\n-            if test -x ${testdir}/bin/dnet-config -a $founddnet = no ; then\n-                LDNETINC=\"$($testdir/bin/dnet-config --cflags)\"\n-                LDNETLIB=\"$($testdir/bin/dnet-config --libs)\"\n-                libdnet_version=\"$($testdir/bin/dnet-config --version)\"\n-                founddnet=$testdir\n-            fi\n-        done\n+        if test $founddnet = no ; then\n+            for testdir in $trydnetdir /usr/local /opt/local $MACOSX_SDK_PATH/usr /usr ; do\n+                if test -x ${testdir}/bin/dnet-config -a $founddnet = no ; then\n+                    LDNETINC=\"$($testdir/bin/dnet-config --cflags)\"\n+                    LDNETLIB=\"$($testdir/bin/dnet-config --libs)\"\n+                    libdnet_version=\"$($testdir/bin/dnet-config --version)\"\n+                    founddnet=$testdir\n+                fi\n+            done\n+        fi\n     fi\n \n     if test $founddnet = no ; then\n"
  },
  {
    "path": "package/tcpreplay/Config.in",
    "content": "config BR2_PACKAGE_TCPREPLAY\n\tbool \"tcpreplay\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  Tcpreplay is a tool for replaying network traffic from files\n\t  saved with tcpdump or other tools which write pcap(3) files.\n\n\t  http://tcpreplay.appneta.com/\n"
  },
  {
    "path": "package/tcpreplay/tcpreplay.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://github.com/appneta/tcpreplay/releases/download/v4.3.3/tcpreplay-4.3.3.tar.xz.asc\n# using key 84E4FA215C934A7D97DC76D5E9E2149793BDE17E\nsha256  5e960e2a4432f583adbd11fa0855d17b73d9e0f2d6453b749f27aacaee53bab5  tcpreplay-4.3.3.tar.xz\nsha256  5971b0c544622f4b210a9cc56436a970685d3b0666e373c09e3cf9304db15d05  docs/LICENSE\n"
  },
  {
    "path": "package/tcpreplay/tcpreplay.mk",
    "content": "################################################################################\n#\n# tcpreplay\n#\n################################################################################\n\nTCPREPLAY_VERSION = 4.3.3\nTCPREPLAY_SITE = https://github.com/appneta/tcpreplay/releases/download/v$(TCPREPLAY_VERSION)\nTCPREPLAY_SOURCE = tcpreplay-$(TCPREPLAY_VERSION).tar.xz\nTCPREPLAY_LICENSE = GPL-3.0\nTCPREPLAY_LICENSE_FILES = docs/LICENSE\nTCPREPLAY_CPE_ID_VENDOR = tcpreplay\nTCPREPLAY_CONF_ENV = \\\n\tac_cv_path_ac_pt_PCAP_CONFIG=\"$(STAGING_DIR)/usr/bin/pcap-config\"\nTCPREPLAY_CONF_OPTS = --with-libpcap=$(STAGING_DIR)/usr \\\n\t--enable-pcapconfig\nTCPREPLAY_DEPENDENCIES = libpcap\n# We're patching configure.ac\nTCPREPLAY_AUTORECONF = YES\n\nifeq ($(BR2_STATIC_LIBS),y)\nTCPREPLAY_CONF_OPTS += --enable-dynamic-link=no\nTCPREPLAY_CONF_ENV += LIBS=\"`$(STAGING_DIR)/usr/bin/pcap-config --static --libs`\"\nendif\n\nifeq ($(BR2_PACKAGE_LIBDNET),y)\nTCPREPLAY_DEPENDENCIES += libdnet\nTCPREPLAY_CONF_OPTS += --with-libdnet=$(STAGING_DIR)/usr\nelse\nTCPREPLAY_CONF_OPTS += --without-libdnet\nendif\n\nifeq ($(BR2_PACKAGE_TCPDUMP),y)\nTCPREPLAY_CONF_ENV += ac_cv_path_tcpdump_path=/usr/sbin/tcpdump\nelse\nTCPREPLAY_CONF_ENV += ac_cv_path_tcpdump_path=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tegrarcm/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_TEGRARCM\n\tbool \"host tegrarcm\"\n\tdepends on BR2_arm || BR2_armeb\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb\n\thelp\n\t  This program is used to send code to a Tegra device in\n\t  recovery mode.\n\n\t  https://github.com/NVIDIA/tegrarcm\n\ncomment \"host tegrarcm needs a toolchain w/ host gcc >= 4.9\"\n\tdepends on BR2_arm || BR2_armeb\n\tdepends on !BR2_HOST_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/tegrarcm/tegrarcm.hash",
    "content": "# Locally computed\nsha256  08329ee0247499b28ec37b0cc639f35443792dfb9bc4a8a182eea63dae6f64ea  tegrarcm-1.8.tar.gz\nsha256  5f20d276321cb37346d911712a813cb7ce4c8e3a570bffc919bec820eeef13f6  LICENSE\n"
  },
  {
    "path": "package/tegrarcm/tegrarcm.mk",
    "content": "################################################################################\n#\n# tegrarcm\n#\n################################################################################\n\nTEGRARCM_VERSION = 1.8\nTEGRARCM_SITE = $(call github,NVIDIA,tegrarcm,v$(TEGRARCM_VERSION))\nTEGRARCM_LICENSE = BSD-3-Clause / NVIDIA Software License (src/miniloader)\nTEGRARCM_LICENSE_FILES = LICENSE\nTEGRARCM_AUTORECONF = YES\nHOST_TEGRARCM_DEPENDENCIES = host-libusb host-pkgconf host-cryptopp\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/tekui/Config.in",
    "content": "config BR2_PACKAGE_TEKUI\n\tbool \"tekui\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_HAS_LUAINTERPRETER\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_LUAFILESYSTEM\t# runtime only\n\tselect BR2_PACKAGE_LUAEXPAT\t\t# runtime only\n\tselect BR2_PACKAGE_LUASOCKET\t\t# runtime only\n\tselect BR2_PACKAGE_LUAPOSIX\t\t# runtime only\n\thelp\n\t  TekUI is a small, freestanding and portable graphical user\n\t  interface (GUI) toolkit written in Lua and C. It was\n\t  initially developed for the X Window System and has been\n\t  ported to DirectFB, Windows, Nano-X and a raw framebuffer\n\t  since\n\n\t  http://tekui.neoscientists.org/\n\ncomment \"tekui needs a Lua interpreter and a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_PACKAGE_HAS_LUAINTERPRETER || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/tekui/tekui.hash",
    "content": "# Locally computed\nsha256  28abfaacc0f2ddae962afbbca862a7fb619c33a99a497be9edd746091013dd7f  tekui-1.12.tgz\nsha256  92cdb348af49efe4c769ccbaeb34a23be084ddda408eace8f1a3a2c5dd4aad14  COPYRIGHT\n"
  },
  {
    "path": "package/tekui/tekui.mk",
    "content": "################################################################################\n#\n# tekui\n#\n################################################################################\n\nTEKUI_VERSION = 1.12\nTEKUI_SOURCE = tekui-$(TEKUI_VERSION).tgz\nTEKUI_SITE = http://tekui.neoscientists.org/releases\nTEKUI_LICENSE = MIT\nTEKUI_LICENSE_FILES = COPYRIGHT\nTEKUI_DEPENDENCIES = freetype luainterpreter\n\n# Package does not build in parallel due to improper make rules\nTEKUI_MAKE = $(MAKE1)\n\nTEKUI_MAKE_OPTS = \\\n\tCC=\"$(TARGET_CC) -fPIC\" \\\n\tAR=\"$(TARGET_AR) rcu\" \\\n\tINSTALL_S=\"install\" \\\n\tLUAVER=$(LUAINTERPRETER_ABIVER) \\\n\tLUA_DEFS=\"\"\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nTEKUI_DEPENDENCIES += libpng\nTEKUI_MAKE_OPTS += TEKUI_DEFS=\"-DENABLE_GRADIENT -DENABLE_FILENO -DENABLE_PIXMAP_CACHE -DENABLE_PNG\"\nTEKUI_MAKE_OPTS += TEKUI_LIBS=-lpng\nelse\nTEKUI_MAKE_OPTS += TEKUI_DEFS=\"-DENABLE_GRADIENT -DENABLE_FILENO -DENABLE_PIXMAP_CACHE\"\nendif\n\nifeq ($(BR2_PACKAGE_DEJAVU),y)\nTEKUI_FONTDIR=/usr/share/fonts/dejavu\nelse\nTEKUI_FONTDIR=/usr/share/lua/$(LUAINTERPRETER_ABIVER)/tek/ui/font\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFT)$(BR2_PACKAGE_XLIB_LIBXXF86VM),yy)\nTEKUI_DEPENDENCIES += xlib_libXft xlib_libXxf86vm\nTEKUI_MAKE_OPTS += \\\n\tX11_LIBS=\"-lXext -lXxf86vm -lXft -lfreetype -lfontconfig\" \\\n\tX11_DEFS=\"-D_XOPEN_SOURCE -DENABLE_XFT -DENABLE_XVID -I$(STAGING_DIR)/usr/include/freetype2 -I$(STAGING_DIR)/usr/include/fontconfig\" \\\n\tDISPLAY_DRIVER=x11\nelse\nifeq ($(BR2_PACKAGE_DIRECTFB),y)\nTEKUI_DEPENDENCIES += directfb\nTEKUI_MAKE_OPTS += \\\n\tDIRECTFB_LIBS=\"-lfreetype -ldirectfb -lpthread\" \\\n\tDIRECTFB_DEFS=\"-D_REENTRANT -I$(STAGING_DIR)/usr/include/directfb -I$(STAGING_DIR)/usr/include/freetype2\" \\\n\tDISPLAY_DRIVER=directfb\nelse\nTEKUI_MAKE_OPTS += \\\n\tFREETYPE_LIBS=-lfreetype \\\n\tFREETYPE_DEFS=\"-I$(STAGING_DIR)/usr/include/freetype2\" \\\n\tRAWFB_SUB_LIBS=\"\" \\\n\tRAWFB_SUB_DEFS=\"-DDEF_FONTDIR=\\\\\\\"$(TEKUI_FONTDIR)\\\\\\\"\" \\\n\tDISPLAY_DRIVER=rawfb\nendif\nendif\n\ndefine TEKUI_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TEKUI_MAKE_OPTS) PREFIX=\"/usr\" -C $(@D) all\nendef\n\ndefine TEKUI_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TEKUI_MAKE_OPTS) PREFIX=\"$(TARGET_DIR)/usr\" -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/terminology/Config.in",
    "content": "config BR2_PACKAGE_TERMINOLOGY\n\tbool \"terminology\"\n\tdepends on BR2_PACKAGE_EFL\n\thelp\n\t  Terminology is an EFL terminal emulator with some extra\n\t  bells and whistles.\n\n\t  https://www.enlightenment.org/about-terminology\n"
  },
  {
    "path": "package/terminology/terminology.hash",
    "content": "# From https://download.enlightenment.org/rel/apps/terminology/terminology-1.9.0.tar.xz.sha256sum\nsha256  3f3bc327da5cc239d468570afed29a17e2fda3b1fee02b28f02ee7ed5141e46c  terminology-1.9.0.tar.xz\nsha256  6863ee700fc82b9c3b82a1627136f6935a9eb68e6a64491f20e00b4023c33622  COPYING\n"
  },
  {
    "path": "package/terminology/terminology.mk",
    "content": "################################################################################\n#\n# terminology\n#\n################################################################################\n\nTERMINOLOGY_VERSION = 1.9.0\nTERMINOLOGY_SOURCE = terminology-$(TERMINOLOGY_VERSION).tar.xz\nTERMINOLOGY_SITE = https://download.enlightenment.org/rel/apps/terminology\nTERMINOLOGY_LICENSE = BSD-2-Clause\nTERMINOLOGY_LICENSE_FILES = COPYING\nTERMINOLOGY_CPE_ID_VENDOR = enlightenment\n\nTERMINOLOGY_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) efl host-pkgconf\nTERMINOLOGY_CONF_OPTS = \\\n\t-Dedje-cc=$(HOST_DIR)/bin/edje_cc \\\n\t-Deet=$(HOST_DIR)/bin/eet\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nTERMINOLOGY_CONF_OPTS += -Dnls=true\nelse\nTERMINOLOGY_CONF_OPTS += -Dnls=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/tesseract-ocr/0001-Fix-timeval-structure-build-failure.patch",
    "content": "From ea1e1ddfc0af9966a0c613a93087bc3e0a5979a7 Mon Sep 17 00:00:00 2001\nFrom: Gilles Talis <gilles.talis@gmail.com>\nDate: Fri, 19 Jul 2019 18:52:03 +0200\nSubject: [PATCH] Fix timeval structure build failure\n\ntimeval structure definition requires <sys/time.h> to be included\n\nSigned-off-by: Gilles Talis <gilles.talis@gmail.com>\n---\n src/ccutil/ocrclass.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/ccutil/ocrclass.h b/src/ccutil/ocrclass.h\nindex d39a6dd..2a01118 100644\n--- a/src/ccutil/ocrclass.h\n+++ b/src/ccutil/ocrclass.h\n@@ -28,6 +28,7 @@\n \n #include <chrono>\n #include <ctime>\n+#include <sys/time.h>\n #ifdef _WIN32\n #include <winsock2.h> // for timeval\n #endif\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/tesseract-ocr/Config.in",
    "content": "comment \"tesseract-ocr needs a toolchain w/ threads, C++, gcc >= 4.8, dynamic library, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || BR2_STATIC_LIBS || !BR2_USE_WCHAR\n\nmenuconfig BR2_PACKAGE_TESSERACT_OCR\n\tbool \"tesseract-ocr\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_LEPTONICA\n\thelp\n\t  Tesseract is an OCR (Optical Character Recognition) engine,\n\t  It can be used directly, or (for programmers) using an API.\n\t  It supports a wide variety of languages.\n\n\t  https://github.com/tesseract-ocr/tesseract\n\nif BR2_PACKAGE_TESSERACT_OCR\n\ncomment \"tesseract-ocr languages support\"\n\nconfig BR2_PACKAGE_TESSERACT_OCR_LANG_ENG\n\tbool \"English\"\n\nconfig BR2_PACKAGE_TESSERACT_OCR_LANG_FRA\n\tbool \"French\"\n\nconfig BR2_PACKAGE_TESSERACT_OCR_LANG_GER\n\tbool \"German\"\n\nconfig BR2_PACKAGE_TESSERACT_OCR_LANG_SPA\n\tbool \"Spanish\"\n\nconfig BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_SIM\n\tbool \"Simplified Chinese\"\n\nconfig BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_TRA\n\tbool \"Traditional Chinese\"\n\nendif\n"
  },
  {
    "path": "package/tesseract-ocr/tesseract-ocr.hash",
    "content": "# locally computed\nsha256  2a66ff0d8595bff8f04032165e6c936389b1e5727c3ce5a27b3e059d218db1cb  tesseract-ocr-4.1.1.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\nsha256  daa0c97d651c19fba3b25e81317cd697e9908c8208090c94c3905381c23fc047  eng.traineddata\nsha256  eac01c1d72540d6090facb7b2f42dd0a2ee8fc57c5be1b20548ae668e2761913  fra.traineddata\nsha256  896b3b4956503ab9daa10285db330881b2d74b70d889b79262cc534b9ec699a4  deu.traineddata\nsha256  0b0fcbb4665189e01ab8019e591f014dd7260460de072543edd4b2cb4ede7c96  spa.traineddata\nsha256  fc05d89ab31d8b4e226910f16a8bcbf78e43bae3e2580bb5feefd052efdab363  chi_sim.traineddata\nsha256  559067dc0f7c94788884742129d66a0117dde7f4ff12b263d92147173497db14  chi_tra.traineddata\n"
  },
  {
    "path": "package/tesseract-ocr/tesseract-ocr.mk",
    "content": "################################################################################\n#\n# tesseract-ocr\n#\n################################################################################\n\nTESSERACT_OCR_VERSION = 4.1.1\nTESSERACT_OCR_DATA_VERSION = 4.0.0\nTESSERACT_OCR_SITE = $(call github,tesseract-ocr,tesseract,$(TESSERACT_OCR_VERSION))\nTESSERACT_OCR_LICENSE = Apache-2.0\nTESSERACT_OCR_LICENSE_FILES = LICENSE\n\n# Source from github, no configure script provided\nTESSERACT_OCR_AUTORECONF = YES\n\n# cairo, pango and icu are optional dependencies, but only needed for\n# building training tools, which are only built explicitly with \"make\n# training\", which is not done by this package.\nTESSERACT_OCR_DEPENDENCIES = leptonica host-pkgconf\nTESSERACT_OCR_INSTALL_STAGING = YES\nTESSERACT_OCR_CONF_ENV = \\\n\tac_cv_prog_have_asciidoc=false \\\n\tLIBLEPT_HEADERSDIR=$(STAGING_DIR)/usr/include/leptonica\nTESSERACT_OCR_CONF_OPTS = \\\n\t--disable-opencl\n\n# Language data files download\nifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_ENG),y)\nTESSERACT_OCR_DATA_FILES += eng.traineddata\nendif\n\nifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_FRA),y)\nTESSERACT_OCR_DATA_FILES += fra.traineddata\nendif\n\nifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_DEU),y)\nTESSERACT_OCR_DATA_FILES += deu.traineddata\nendif\n\nifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_SPA),y)\nTESSERACT_OCR_DATA_FILES += spa.traineddata\nendif\n\nifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_SIM),y)\nTESSERACT_OCR_DATA_FILES += chi_sim.traineddata\nendif\n\nifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_TRA),y)\nTESSERACT_OCR_DATA_FILES += chi_tra.traineddata\nendif\n\nTESSERACT_OCR_EXTRA_DOWNLOADS = \\\n\t$(addprefix https://github.com/tesseract-ocr/tessdata/raw/$(TESSERACT_OCR_DATA_VERSION)/,\\\n\t\t$(TESSERACT_OCR_DATA_FILES))\n\n# Language data files installation\ndefine TESSERACT_OCR_INSTALL_LANG_DATA\n\t$(foreach langfile,$(TESSERACT_OCR_DATA_FILES), \\\n\t\t$(INSTALL) -D -m 0644 $(TESSERACT_OCR_DL_DIR)/$(langfile) \\\n\t\t\t$(TARGET_DIR)/usr/share/tessdata/$(langfile)\n\t)\nendef\n\nTESSERACT_OCR_POST_INSTALL_TARGET_HOOKS += TESSERACT_OCR_INSTALL_LANG_DATA\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tftpd/0001-Use-extern-qualifier-to-fix-gcc-10.x-build.patch",
    "content": "From 6f994166d8571961a08479736ae86c5baa2bb47f Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Fri, 7 Aug 2020 12:07:45 +0200\nSubject: [PATCH] Use \"extern\" qualifier to fix gcc 10.x build\n\nPatch from\nhttps://src.fedoraproject.org/rpms/tftp/raw/master/f/tftp-hpa-5.2-gcc10.patch.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n tftp/tftp.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/tftp/tftp.c b/tftp/tftp.c\nindex d15da22..d067f96 100644\n--- a/tftp/tftp.c\n+++ b/tftp/tftp.c\n@@ -48,7 +48,7 @@ extern int maxtimeout;\n #define PKTSIZE    SEGSIZE+4\n char ackbuf[PKTSIZE];\n int timeout;\n-sigjmp_buf toplevel;\n+extern sigjmp_buf toplevel;\n sigjmp_buf timeoutbuf;\n \n static void nak(int, const char *);\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/tftpd/Config.in",
    "content": "config BR2_PACKAGE_TFTPD\n\tbool \"tftpd\"\n\t# linker issue with pre-6.x toolchains\n\tdepends on !(BR2_nios2 && !BR2_TOOLCHAIN_GCC_AT_LEAST_6)\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  HPA's Trivial File Transfer Protocol (tftp) server.\n\n\t  https://git.kernel.org/pub/scm/network/tftp/tftp-hpa.git\n"
  },
  {
    "path": "package/tftpd/S80tftpd-hpa",
    "content": "#! /bin/sh\n\nOPTIONS=\"-c -l -s /var/lib/tftpboot\"\n\nset -e\n\nPATH=/sbin:/bin:/usr/sbin:/usr/bin\nDESC=\"HPA's tftpd\"\nNAME=tftpd\nDAEMON=/usr/sbin/$NAME\nPIDFILE=/var/run/$NAME.pid\nSCRIPTNAME=/etc/init.d/S80tftpd-hpa\n\n#\n#\tFunction that starts the daemon/service.\n#\nd_start() {\n\tmkdir -p /var/lib/tftpboot\n\tchmod 1777 /var/lib/tftpboot\n\t$DAEMON $OPTIONS\n}\n\n#\n#\tFunction that stops the daemon/service.\n#\nd_stop() {\n\tkillall -q $NAME\n}\n\n#\n#\tFunction that sends a SIGHUP to the daemon/service.\n#\nd_reload() {\n\td_start\n\td_stop\n}\n\ncase \"$1\" in\n  start)\n\tprintf \"Starting $DESC: \"\n\td_start\n\techo \"done\"\n\t;;\n  stop)\n\tprintf \"Stopping $DESC: \"\n\td_stop\n\techo \"done\"\n\t;;\n  #reload)\n\t#\n\t#\tIf the daemon can reload its configuration without\n\t#\trestarting (for example, when it is sent a SIGHUP),\n\t#\tthen implement that here.\n\t#\n\t#\tIf the daemon responds to changes in its config file\n\t#\tdirectly anyway, make this an \"exit 0\".\n\t#\n\t# printf \"Reloading $DESC configuration...\"\n\t# d_reload\n\t# echo \"done.\"\n  #;;\n  restart|force-reload)\n\t#\n\t#\tIf the \"reload\" option is implemented, move the \"force-reload\"\n\t#\toption to the \"reload\" entry above. If not, \"force-reload\" is\n\t#\tjust the same as \"restart\".\n\t#\n\tprintf \"Restarting $DESC: \"\n\td_stop\n\tsleep 1\n\td_start\n\techo \"done\"\n\t;;\n  *)\n\t# echo \"Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}\" >&2\n\techo \"Usage: $SCRIPTNAME {start|stop|restart|force-reload}\" >&2\n\texit 1\n\t;;\nesac\n\nexit 0\n"
  },
  {
    "path": "package/tftpd/tftpd.hash",
    "content": "# Locally calculated\nsha256  c86520c30dab0b6bcbae021ab26d2ac63227696596d37a9b02aa3e56ec5c2e77  tftpd-b2b34cecc8cbc18ff6f1fc00bda6ae6e9011e6c7-br1.tar.gz\n\n# Hash for license file\nsha256  67754ebd8f265571d3226ac97e521b1bd6fd8a61363ecd4ab7806a6f90efab92  tftpd/tftpd.c\n"
  },
  {
    "path": "package/tftpd/tftpd.mk",
    "content": "################################################################################\n#\n# tftpd\n#\n################################################################################\n\nTFTPD_VERSION = b2b34cecc8cbc18ff6f1fc00bda6ae6e9011e6c7\nTFTPD_SITE = git://git.kernel.org/pub/scm/network/tftp/tftp-hpa.git\nTFTPD_CONF_OPTS = --without-tcpwrappers\nTFTPD_LICENSE = BSD-4-Clause\nTFTPD_LICENSE_FILES = tftpd/tftpd.c\nTFTPD_CPE_ID_VENDOR = tftpd-hpa_project\nTFTPD_CPE_ID_PRODUCT = tftpd-hpa\nTFTPD_SELINUX_MODULES = tftp\n# From git\nTFTPD_AUTORECONF = YES\n\ndefine TFTPD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D $(@D)/tftp/tftp $(TARGET_DIR)/usr/bin/tftp\n\t$(INSTALL) -D $(@D)/tftpd/tftpd $(TARGET_DIR)/usr/sbin/tftpd\nendef\n\ndefine TFTPD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/tftpd/S80tftpd-hpa $(TARGET_DIR)/etc/init.d/S80tftpd-hpa\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/thermald/0001-thd_trip_point-fix-32-bit-build-error-with-musl-v1.2.patch",
    "content": "From 074575bf3640485ab6d43ae1efed3eff9cebae13 Mon Sep 17 00:00:00 2001\nFrom: Naveen Saini <naveen.kumar.saini@intel.com>\nDate: Thu, 5 Mar 2020 13:45:57 +0800\nSubject: [PATCH] thd_trip_point: fix 32-bit build error with musl v1.2.0\n\nError log:\n ../git/src/thd_trip_point.cpp: In member function 'bool cthd_trip_point::thd_trip_point_check(int, unsigned int, int, bool*)':\n| ../git/src/thd_trip_point.cpp:250:19: error: format '%ld' expects argument of type 'long int', but argument 6 has type 'time_t' {aka 'long long int'} [-Werror=format=]\n|   250 |      thd_log_info(\"Too early to act zone:%d index %d tm %ld\\n\",\n\nmusl 1.2.0 have new feature:\ntime_t is now 64-bit on all archs (not just 64-bit archs)\n\nCommit id:\nhttps://git.musl-libc.org/cgit/musl/commit/?id=38143339646a4ccce8afe298c34467767c899f51\n\nRelease note link for musl 1.2.0:\nhttps://git.musl-libc.org/cgit/musl/diff/\n\nuse %jd and typecast with intmax_t which is maximum width integer type\n\nSigned-off-by: Naveen Saini <naveen.kumar.saini@intel.com>\n[Upstream: https://github.com/intel/thermal_daemon/commit/a7136682b9e6ebdb53c3c8b472bcd5039d62dc78.patch]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/thd_trip_point.cpp | 10 ++--------\n 1 file changed, 2 insertions(+), 8 deletions(-)\n\ndiff --git a/src/thd_trip_point.cpp b/src/thd_trip_point.cpp\nindex 46f692d..6358c27 100644\n--- a/src/thd_trip_point.cpp\n+++ b/src/thd_trip_point.cpp\n@@ -242,15 +242,9 @@ bool cthd_trip_point::thd_trip_point_check(int id, unsigned int read_temp,\n \t\t\t\ttime_t tm;\n \t\t\t\ttime(&tm);\n \t\t\t\tif ((tm - cdevs[i].last_op_time) < cdevs[i].sampling_priod) {\n-#if defined __x86_64__ && defined __ILP32__\n-\t\t\t\t\tthd_log_info(\"Too early to act zone:%d index %d tm %lld\\n\",\n+\t\t\t\t\tthd_log_info(\"Too early to act zone:%d index %d tm %jd\\n\",\n \t\t\t\t\t\t\tzone_id, cdev->thd_cdev_get_index(),\n-\t\t\t\t\t\t\ttm - cdevs[i].last_op_time);\n-#else\n-\t\t\t\t\tthd_log_info(\"Too early to act zone:%d index %d tm %ld\\n\",\n-\t\t\t\t\t\t\tzone_id, cdev->thd_cdev_get_index(),\n-\t\t\t\t\t\t\ttm - cdevs[i].last_op_time);\n-#endif\n+\t\t\t\t\t\t\t(intmax_t)tm - cdevs[i].last_op_time);\n \t\t\t\t\tbreak;\n \t\t\t\t}\n \t\t\t\tcdevs[i].last_op_time = tm;\n-- \n2.29.2\n\n"
  },
  {
    "path": "package/thermald/Config.in",
    "content": "config BR2_PACKAGE_THERMALD\n\tbool \"thermald\"\n\tdepends on BR2_i386 || BR2_x86_64 # needs <cpuid.h>\n\tdepends on BR2_USE_MMU # uses fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus-glib -> glib2, dbus\n\tdepends on BR2_USE_WCHAR # dbus-glib -> glib2\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_DBUS_GLIB\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  Thermal Daemon is a Linux daemon for monitoring and\n\t  controlling platform temperatures. Once the system temperature\n\t  reaches a certain threshold, the Linux daemon activates\n\t  various cooling methods to try to cool the system.\n\n\t  https://01.org/linux-thermal-daemon\n\ncomment \"thermald needs a toolchain w/ C++, wchar, threads\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/thermald/thermald.hash",
    "content": "# Locally computed:\nsha256  aaf5ffdc12344eef2417b41b433094bb30e4ebf321f0140b090f97bfcf24ea1f  thermald-1.9.1.tar.gz\nsha256  e98be8bc482e038a14bfbc01caf800bbd0024fff275ef14cd999db6560254a8d  COPYING\n"
  },
  {
    "path": "package/thermald/thermald.mk",
    "content": "################################################################################\n#\n# thermald\n#\n################################################################################\n\nTHERMALD_VERSION = 1.9.1\nTHERMALD_SITE = $(call github,intel,thermal_daemon,v$(THERMALD_VERSION))\n# fetched from Github, with no configure script\nTHERMALD_AUTORECONF = YES\nTHERMALD_DEPENDENCIES = dbus dbus-glib libxml2 $(TARGET_NLS_DEPENDENCIES)\n# tools are GPL-3.0+ but are not added to the target\nTHERMALD_LICENSE = GPL-2.0+\nTHERMALD_LICENSE_FILES = COPYING\nTHERMALD_CPE_ID_VENDOR = intel\nTHERMALD_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nTHERMALD_DEPENDENCIES += systemd\nTHERMALD_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/thrift/Config.in",
    "content": "config BR2_PACKAGE_THRIFT\n\tbool \"thrift\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_LIBEVENT\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  The Apache Thrift software framework, for scalable\n\t  cross-language services development, combines a software\n\t  stack with a code generation engine to build services that\n\t  work efficiently and seamlessly between C++, Java, Python,\n\t  PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript,\n\t  Node.js, Smalltalk, OCaml and Delphi and other languages.\n\n\t  http://thrift.apache.org/\n\ncomment \"thrift needs a toolchain w/ C++, wchar, threads\"\n\tdepends on !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/thrift/thrift.hash",
    "content": "# From https://www.apache.org/dist/thrift/0.14.1/thrift-0.14.1.tar.gz.sha256\nsha256  13da5e1cd9c8a3bb89778c0337cc57eb0c29b08f3090b41cf6ab78594b410ca5  thrift-0.14.1.tar.gz\n# License files, locally calculated\nsha256  d315e6cdedc07c478de6992027bfb66f220886c6216fd7e9885ced30c3703646  LICENSE\n"
  },
  {
    "path": "package/thrift/thrift.mk",
    "content": "################################################################################\n#\n# thrift\n#\n################################################################################\n\nTHRIFT_VERSION = 0.14.1\nTHRIFT_SITE = http://www.us.apache.org/dist/thrift/$(THRIFT_VERSION)\nTHRIFT_LICENSE = Apache-2.0\nTHRIFT_LICENSE_FILES = LICENSE\nTHRIFT_CPE_ID_VENDOR = apache\n\nTHRIFT_DEPENDENCIES = host-pkgconf host-thrift boost \\\n\tlibevent openssl zlib\nTHRIFT_INSTALL_STAGING = YES\nHOST_THRIFT_DEPENDENCIES = host-bison host-boost \\\n\thost-flex host-libevent host-openssl host-pkgconf host-zlib\n\nTHRIFT_COMMON_CONF_OPTS = -DBUILD_TUTORIALS=OFF \\\n\t-DBUILD_TESTING=OFF \\\n\t-DWITH_NODEJS=OFF \\\n\t-DWITH_PYTHON=OFF \\\n\t-DWITH_JAVA=OFF \\\n\t-DWITH_JAVASCRIPT=OFF \\\n\t-DWITH_QT5=OFF\n\nTHRIFT_CONF_OPTS = $(THRIFT_COMMON_CONF_OPTS) -DBUILD_COMPILER=OFF\nHOST_THRIFT_CONF_OPTS = $(THRIFT_COMMON_CONF_OPTS) -DBUILD_COMPILER=ON\n\n# relocation truncated to fit: R_68K_GOT16O\nifeq ($(BR2_m68k_cf),y)\nTHRIFT_CONF_ENV += CXXFLAGS=\"$(TARGET_CXXFLAGS) -mxgot\"\nendif\n\n# thrift doesn't use the regular flags BUILD_{STATIC,SHARED}_LIBS\nifeq ($(BR2_STATIC_LIBS),y)\nTHRIFT_CONF_OPTS += -DWITH_STATIC_LIB=ON -DWITH_BOOST_STATIC=ON -DWITH_SHARED_LIB=OFF\nelse ifeq ($(BR2_SHARED_LIBS),y)\nTHRIFT_CONF_OPTS += -DWITH_STATIC_LIB=OFF -DWITH_BOOST_STATIC=OFF -DWITH_SHARED_LIB=ON\nelse\n# BR2_SHARED_STATIC_LIBS\nTHRIFT_CONF_OPTS += -DWITH_STATIC_LIB=ON -DWITH_BOOST_STATIC=OFF -DWITH_SHARED_LIB=ON\nendif\n\n# Language selection for the compiler\nHOST_THRIFT_CONF_OPTS += -DTHRIFT_COMPILER_CSHARP=OFF \\\n\t-DTHRIFT_COMPILER_JAVA=OFF \\\n\t-DTHRIFT_COMPILER_ERL=OFF \\\n\t-DTHRIFT_COMPILER_PY=OFF \\\n\t-DTHRIFT_COMPILER_PERL=OFF \\\n\t-DTHRIFT_COMPILER_PHP=OFF \\\n\t-DTHRIFT_COMPILER_RB=OFF \\\n\t-DTHRIFT_COMPILER_HS=OFF \\\n\t-DTHRIFT_COMPILER_GO=OFF \\\n\t-DTHRIFT_COMPILER_D=OFF \\\n\t-DTHRIFT_COMPILER_LUA=OFF \\\n\t-DBUILD_C_GLIB=OFF\n\n# C bindings\nifeq ($(BR2_PACKAGE_LIBGLIB2),y)\nTHRIFT_DEPENDENCIES += libglib2\nTHRIFT_CONF_OPTS += -DBUILD_C_GLIB=ON\nelse\nTHRIFT_CONF_OPTS += -DBUILD_C_GLIB=OFF\nendif\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n\n# to be used by other packages\nTHRIFT = $(HOST_DIR)/bin/thrift\n"
  },
  {
    "path": "package/thttpd/Config.in",
    "content": "config BR2_PACKAGE_THTTPD\n\tbool \"thttpd\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  thttpd is a simple, small, portable, fast, and secure HTTP\n\t  server\n\n\t  http://www.acme.com/software/thttpd/\n"
  },
  {
    "path": "package/thttpd/S90thttpd",
    "content": "#!/bin/sh\n\nDAEMON=\"thttpd\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nTHTTPD_ARGS=\"-C /etc/thttpd.conf\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \\\n\t\t-- $THTTPD_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\t# thttpd does not remove the pid file on exit\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/thttpd/thttpd.hash",
    "content": "# Locally calculated\nsha256\t99c09f47da326b1e7b5295c45549d2b65534dce27c44812cf7eef1441681a397\tthttpd-2.29.tar.gz\nsha256\tbe059e6b8219d5bb5480fa6a2864bbb34892f56951d03d08b356bc1fa8c81a01\tthttpd.c\n"
  },
  {
    "path": "package/thttpd/thttpd.mk",
    "content": "################################################################################\n#\n# thttpd\n#\n################################################################################\n\nTHTTPD_VERSION = 2.29\nTHTTPD_SITE = https://acme.com/software/thttpd\nTHTTPD_LICENSE = BSD-2-Clause\nTHTTPD_LICENSE_FILES = thttpd.c\nTHTTPD_CPE_ID_VENDOR = acme\n\nTHTTPD_MAKE = $(MAKE1)\n\ndefine THTTPD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/thttpd $(TARGET_DIR)/usr/sbin/thttpd\n\t$(INSTALL) -D -m 0755 $(@D)/extras/htpasswd $(TARGET_DIR)/usr/bin/htpasswd\n\t$(INSTALL) -D -m 0755 $(@D)/extras/makeweb $(TARGET_DIR)/usr/bin/makeweb\n\t$(INSTALL) -D -m 0755 $(@D)/extras/syslogtocern $(TARGET_DIR)/usr/bin/syslogtocern\n\t$(INSTALL) -D -m 0755 $(@D)/scripts/thttpd_wrapper $(TARGET_DIR)/usr/sbin/thttpd_wrapper\n\t$(SED) 's:/usr/local/sbin:/usr/sbin:g' -e \\\n\t\t's:/usr/local/www/thttpd_config:/etc/thttpd.conf:g' \\\n\t\t$(TARGET_DIR)/usr/sbin/thttpd_wrapper\n\t$(INSTALL) -d $(TARGET_DIR)/var/www/data\n\t$(INSTALL) -d $(TARGET_DIR)/var/www/logs\n\techo \"dir=/var/www/data\" > $(TARGET_DIR)/etc/thttpd.conf\n\techo 'cgipat=**.cgi' >> $(TARGET_DIR)/etc/thttpd.conf\n\techo \"logfile=/var/www/logs/thttpd_log\" >> $(TARGET_DIR)/etc/thttpd.conf\n\techo \"pidfile=/var/run/thttpd.pid\" >> $(TARGET_DIR)/etc/thttpd.conf\nendef\n\ndefine THTTPD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/thttpd/S90thttpd \\\n\t\t$(TARGET_DIR)/etc/init.d/S90thttpd\nendef\n\ndefine THTTPD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/thttpd/thttpd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/thttpd.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/thttpd/thttpd.service",
    "content": "[Unit]\nDescription=Tiny HTTP Daemon\n\n[Service]\nPIDFile=/run/thttpd.pid\nExecStart=/usr/sbin/thttpd -D -C /etc/thttpd.conf\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/ti-cgt-pru/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on BR2_arm\n\nconfig BR2_PACKAGE_HOST_TI_CGT_PRU\n\tbool \"host ti-cgt-pru\"\n\tdepends on BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS\n\tselect BR2_HOSTARCH_NEEDS_IA32_LIBS\n\thelp\n\t  This package provides the Code Generation Tools for the PRU\n\t  unit found on some TI processors e.g. AM3358.\n\n\t  Note: this is a binary cross toolchain that runs on x86 hosts\n\t  targeting PRU cores found alongside some ARM processors.\n\n\t  http://processors.wiki.ti.com/index.php/Programmable_Realtime_Unit_Software_Development\n"
  },
  {
    "path": "package/ti-cgt-pru/ti-cgt-pru.hash",
    "content": "# Locally calculated\nsha256\t1f1405167214f2c0ef848591b17a7799fdcd9f55f11bc90db9ace3490d426215\tti_cgt_pru_2.3.3_linux_installer_x86.bin\nsha256\t913cb4ab564f874b7c9a11726a16c4ccdc7ecc60be2738201281a1e28dc93641\tPRU_Code_Generation_Tools_2.3.x_manifest.html\nsha256\t5e198df9782c63cedc8363f0e298b241a9a8084398a925f6e1003dbcb60801cb\tpru_rts_2_3_0_82167478-F8C9-49b2-82BD-12F8550770F9.spdx\n"
  },
  {
    "path": "package/ti-cgt-pru/ti-cgt-pru.mk",
    "content": "################################################################################\n#\n# ti-cgt-pru\n#\n################################################################################\n\nTI_CGT_PRU_VERSION = 2.3.3\nTI_CGT_PRU_SOURCE = ti_cgt_pru_$(TI_CGT_PRU_VERSION)_linux_installer_x86.bin\nTI_CGT_PRU_SITE = http://downloads.ti.com/codegen/esd/cgt_public_sw/PRU/$(TI_CGT_PRU_VERSION)\nTI_CGT_PRU_LICENSE = TI Technology and Software Publicly Available License (compiler + PRU library), \\\n\tBSL-1.0 (compiler), BSD-2-Clause, BSD-3-Clause, MIT, AFL-3.0, Hewlett-Packard (PRU library)\nTI_CGT_PRU_LICENSE_FILES = PRU_Code_Generation_Tools_2.3.x_manifest.html \\\n\tpru_rts_2_3_0_82167478-F8C9-49b2-82BD-12F8550770F9.spdx\n\ndefine HOST_TI_CGT_PRU_EXTRACT_CMDS\n\tchmod +x $(HOST_TI_CGT_PRU_DL_DIR)/$(TI_CGT_PRU_SOURCE)\n\t$(HOST_TI_CGT_PRU_DL_DIR)/$(TI_CGT_PRU_SOURCE) --prefix $(@D) --mode unattended\n\tmv $(@D)/ti-cgt-pru_$(TI_CGT_PRU_VERSION)/* $(@D)\n\trmdir $(@D)/ti-cgt-pru_$(TI_CGT_PRU_VERSION)/\nendef\n\n# Since this is largely prebuilt toolchain and likes to live in its\n# own directory, put it in $(HOST_DIR)/share/ti-cgt-pru/.\n# Packages wanting to use this toolchain need to use this path as TI's\n# standard PRU_CGT path e.g. make PRU_CGT=$(TI_CGT_PRU_INSTALLDIR)...\nTI_CGT_PRU_INSTALLDIR = $(HOST_DIR)/share/ti-cgt-pru\n\ndefine HOST_TI_CGT_PRU_INSTALL_CMDS\n\tmkdir -p $(TI_CGT_PRU_INSTALLDIR)\n\tcp -dpfr $(@D)/* $(TI_CGT_PRU_INSTALLDIR)\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/ti-gfx/0001-newclkapi.patch",
    "content": "This patch adjusts the omap3630 portion of the powervr driver to use the new\nclk kernel api.\n\nSigned-off-by: Spenser Gilliland <spenser@gillilanding.com>\n[yann.morin.1998@free.fr: rebased ontop of 5.01.00.01]\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\ndiff -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\n--- ti-gfx-5_01_00_01.orig/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c\t2013-12-23 15:44:20.000000000 +0100\n+++ ti-gfx-5_01_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c\t2014-02-26 19:17:39.829571846 +0100\n@@ -182,6 +182,49 @@\n  @Return   PVRSRV_ERROR\n \n ******************************************************************************/\n+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)\n+int clk_disable_unprepare(struct clk *clk)\n+{\n+\treturn clk_disable(clk);\n+}\n+#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)\n+int clk_disable_unprepare(struct clk *clk)\n+{\n+\tres = clk_disable(clk);\n+\tif (res < 0)\n+\t\treturn res;\n+\n+\tres = clk_unprepare(clk);\n+\tif (ret < 0)\n+\t\treturn res;\n+\n+\treturn 0;\n+}\n+#endif\n+\n+\n+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)\n+int clk_prepare_enable(struct clk *clk)\n+{\n+\treturn clk_enable(clk);\n+}\n+#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)\n+int clk_prepare_enable(struct clk *clk)\n+{\n+\tres = clk_prepare(clk);\n+\tif (ret < 0)\n+\t\treturn res;\n+\n+\tres = clk_enable(clk);\n+\tif (res < 0) {\n+\t\tclk_unprepare(clk);\n+\t\treturn res;\n+\t}\n+\n+\treturn 0;\n+}\n+#endif\n+\n PVRSRV_ERROR EnableSGXClocks(SYS_DATA *psSysData)\n {\n #if !defined(NO_HARDWARE)\n@@ -198,7 +241,7 @@\n \n #if !defined(PM_RUNTIME_SUPPORT)\n         PVR_DPF((PVR_DBG_MESSAGE, \"EnableSGXClocks: Enabling SGX Clocks\"));\n-        res=clk_enable(psSysSpecData->psSGX_FCK);\n+        res=clk_prepare_enable(psSysSpecData->psSGX_FCK);\n         if (res < 0)\n         {\n                 PVR_DPF((PVR_DBG_ERROR, \"EnableSGXClocks: Couldn't enable SGX functional clock (%d)\", res));\n@@ -324,7 +367,7 @@\n \n \tPVR_DPF((PVR_DBG_MESSAGE, \"DisableSGXClocks: Disabling SGX Clocks\"));\n #if !defined(PM_RUNTIME_SUPPORT)\n-        clk_disable(psSysSpecData->psSGX_FCK);\n+        clk_disable_unprepare(psSysSpecData->psSGX_FCK);\n #endif\n \tSysDisableSGXInterrupts(psSysData);\n \n@@ -540,14 +583,14 @@\n \trate = clk_get_rate(psSysSpecData->psGPT11_FCK);\n \tPVR_TRACE((\"GPTIMER11 clock is %dMHz\", HZ_TO_MHZ(rate)));\n \n-\tres = clk_enable(psSysSpecData->psGPT11_FCK);\n+\tres = clk_prepare_enable(psSysSpecData->psGPT11_FCK);\n \tif (res < 0)\n \t{\n \t\tPVR_DPF((PVR_DBG_ERROR, \"EnableSystemClocks: Couldn't enable GPTIMER11 functional clock (%d)\", res));\n \t\tgoto ExitError;\n \t}\n \n-\tres = clk_enable(psSysSpecData->psGPT11_ICK);\n+\tres = clk_prepare_enable(psSysSpecData->psGPT11_ICK);\n \tif (res < 0)\n \t{\n \t\tPVR_DPF((PVR_DBG_ERROR, \"EnableSystemClocks: Couldn't enable GPTIMER11 interface clock (%d)\", res));\n@@ -610,9 +653,9 @@\n \n ExitDisableGPT11ICK:\n #if defined(PVR_OMAP4_TIMING_PRCM)\n-\tclk_disable(psSysSpecData->psGPT11_ICK);\n+\tclk_disable_unprepare(psSysSpecData->psGPT11_ICK);\n ExitDisableGPT11FCK:\n-\tclk_disable(psSysSpecData->psGPT11_FCK);\n+\tclk_disable_unprepare(psSysSpecData->psGPT11_FCK);\n ExitError:\n #endif\t/* defined(PVR_OMAP4_TIMING_PRCM) */\n \teError = PVRSRV_ERROR_CLOCK_REQUEST_FAILED;\n@@ -664,9 +707,9 @@\n \tpsSysSpecData->sTimerRegPhysBase.uiAddr = 0;\n #endif\n #if defined(PVR_OMAP4_TIMING_PRCM)\n-\tclk_disable(psSysSpecData->psGPT11_ICK);\n+\tclk_disable_unprepare(psSysSpecData->psGPT11_ICK);\n \n-\tclk_disable(psSysSpecData->psGPT11_FCK);\n+\tclk_disable_unprepare(psSysSpecData->psGPT11_FCK);\n #endif\t/* defined(PVR_OMAP4_TIMING_PRCM) */\n }\n #endif\t/* PVR_OMAP_USE_DM_TIMER_API */\n"
  },
  {
    "path": "package/ti-gfx/0002-fix-build-omaplfb-linux.patch",
    "content": "Since commit a73fdc647417699833f22d0f239affe22e062827 in the kernel,\nomap_dss_device's 'output' is renamed 'src'.\n\nFix build with at least es5.x selected (AM35xx).\n\nSigned-off-by: Hadrien Boutteville <hadrien.boutteville@gmail.com>\n\n--- a/GFX_Linux_KM/services4/3rdparty/dc_omapfb3_linux/omaplfb_linux.c\n+++ b/GFX_Linux_KM/services4/3rdparty/dc_omapfb3_linux/omaplfb_linux.c\n@@ -176,8 +176,10 @@\n #define OMAP_DSS_DRIVER(drv, dev) struct omap_dss_driver *drv = (dev) != NULL ? (dev)->driver : NULL\n #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))\n #define OMAP_DSS_MANAGER(man, dev) struct omap_overlay_manager *man = (dev) != NULL ? (dev)->manager : NULL\n-#else\n+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0))\n #define OMAP_DSS_MANAGER(man, dev) struct omap_overlay_manager *man = (dev) != NULL ? (dev)->output->manager : NULL\n+#else\n+#define OMAP_DSS_MANAGER(man, dev) struct omap_overlay_manager *man = (dev) != NULL ? (dev)->src->manager : NULL\n #endif\n \n #define\tWAIT_FOR_VSYNC(man)\t((man)->wait_for_vsync)\n"
  },
  {
    "path": "package/ti-gfx/0003-km_install_modules.patch",
    "content": "Patch to add modules_install target to the modules makefile.  This makes\ninstallation a little easier.\n\nSigned-off-by: Spenser Gilliland <spenser@gillilanding.com>\n----\nIndex: ti-gfx-4_09_00_01/GFX_Linux_KM/Makefile\n===================================================================\n--- ti-gfx-4_09_00_01.orig/GFX_Linux_KM/Makefile\t2013-03-07 11:00:11.000000000 -0600\n+++ ti-gfx-4_09_00_01/GFX_Linux_KM/Makefile\t2013-05-23 01:36:29.356676281 -0500\n@@ -479,6 +479,9 @@\n all:\n \t$(MAKE) -C $(KERNELDIR) M=`pwd` $*\n \n+install:\n+\t$(MAKE) -C $(KERNELDIR) M=`pwd` modules_install\n+\n clean:\n \t@find . -name \"*.o\" -exec rm -r {} \\;\n \t@find . -name \"*.ko\" -exec rm -r {} \\;\n"
  },
  {
    "path": "package/ti-gfx/Config.in",
    "content": "config BR2_PACKAGE_TI_GFX\n\tbool \"ti-gfx\"\n\tdepends on BR2_LINUX_KERNEL && BR2_TOOLCHAIN_USES_GLIBC && BR2_arm\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tselect BR2_HOSTARCH_NEEDS_IA32_LIBS\n\tselect BR2_PACKAGE_HAS_LIBEGL\n\tselect BR2_PACKAGE_HAS_LIBGLES\n\tselect BR2_PACKAGE_HAS_POWERVR\n\tselect BR2_PACKAGE_FBSET if !BR2_PACKAGE_BUSYBOX # Runtime dependency only\n\tselect BR2_LINUX_NEEDS_MODULES # not using kernel-module infra\n\thelp\n\t  Graphics libraries for TI boards using SGX acceleration.\n\n\t  Supports OMAP35xx, DM37xx/AM37xx, DM816x, DM814x, AM335x and\n\t  AM43xx.\n\n\t  For newer CPUs or kernels use the ti-sgx-{km,um} packages.\n\n\t  http://downloads.ti.com/dsps/dsps_public_sw/gfxsdk/\n\nif BR2_PACKAGE_TI_GFX\n\nconfig BR2_PACKAGE_PROVIDES_LIBEGL\n\tdefault \"ti-gfx\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBGLES\n\tdefault \"ti-gfx\"\n\nconfig BR2_PACKAGE_PROVIDES_POWERVR\n\tdefault \"ti-gfx\"\n\nconfig BR2_PACKAGE_TI_GFX_DEBUG\n\tbool \"enable debug support\"\n\thelp\n\t  Turns on debugging in the kernel module, install libraries\n\t  built with debugging enabled, installs various tests and\n\t  installs esrev script.\n\nconfig BR2_PACKAGE_TI_GFX_DEMOS\n\tbool \"install demos\"\n\tdefault y\n\thelp\n\t  Install the OGLES2ChameleonMan and OGLES2MagicLantern demos\n\nconfig BR2_PACKAGE_TI_GFX_EGLIMAGE\n\tbool \"install eglimage version of libraries\"\n\thelp\n\t  Installs OpenGL libaries which support the eglimage api.\n\nchoice\n\tprompt \"Target\"\n\tdefault BR2_PACKAGE_TI_GFX_ES3\n\thelp\n\t  Select the SOC for which you would like to install\n\t  drivers. Please use the chart at\n\t  http://processors.wiki.ti.com/index.php/OMAP35x_Graphics_SDK_Getting_Started_Guide\n\nconfig BR2_PACKAGE_TI_GFX_ES3\n\tbool \"es3.x (OMAP35xx, AM35xx Rev 3.1+)\"\n\thelp\n\t  OMAP35xx, AM35xx Rev 3.1+\n\nconfig BR2_PACKAGE_TI_GFX_ES5\n\tbool \"es5.x (AM37xx, DM37xx)\"\n\thelp\n\t  AM37xx, DM37xx\n\nconfig BR2_PACKAGE_TI_GFX_ES6\n\tbool \"es6.x (AM387x, DMA814x, AM389x, DM816x)\"\n\thelp\n\t  AM387x, DM814x, AM389x, DM816x\n\nconfig BR2_PACKAGE_TI_GFX_ES8\n\tbool \"es8.x (AM335x)\"\n\thelp\n\t  AM335x\n\nendchoice\n\nendif\n\ncomment \"ti-gfx needs a glibc toolchain and a Linux kernel to be built\"\n\tdepends on BR2_arm\n\tdepends on !(BR2_LINUX_KERNEL && BR2_TOOLCHAIN_USES_GLIBC)\n"
  },
  {
    "path": "package/ti-gfx/S80ti-gfx",
    "content": "#!/bin/sh\n\nstart() {\n\techo \"ti-gfx: starting pvr driver\"\n\n\tBITSPERPIXEL=\"$(fbset | awk '/geom/ {print $6}')\"\n\tYRES=\"$(fbset | awk '/geom/ {print $3}')\"\n\t# Set RGBA ordering to something the drivers like\n\tif [ \"$BITSPERPIXEL\" = \"32\" ] ; then\n\t\tfbset -rgba 8/16,8/8,8/0,8/24\n\tfi\n\t# Try to enable triple buffering when there's enough VRAM\n\tfbset -vyres $(( YRES*3 ))\n\n\tmodprobe pvrsrvkm\n\tmodprobe omaplfb\n\tmodprobe bufferclass_ti\n\n\tpvr_maj=$(awk '$2==\"pvrsrvkm\" { print $1; }' /proc/devices)\n\trm -f /dev/pvrsrvkm\n\n\tmknod /dev/pvrsrvkm c $pvr_maj 0\n\tchmod 600 /dev/pvrsrvkm\n\n\tif ! /usr/bin/pvrsrvctl --start --no-module; then\n\t\techo \"ti-gfx: unable to start server\"\n\tfi\n}\n\nstop() {\n\techo \"ti-gfx: stopping pvr driver\"\n\n\trmmod bufferclass_ti\n\trmmod omaplfb\n\trmmod pvrsrvkm\n}\n\ncase \"$1\" in\nstart)\n\tstart\n;;\nstop)\n\tstop\n;;\nrestart)\n\tstop\n\tstart\n;;\n*)\n\techo \"ti-gfx: Please use start, stop, or restart.\"\n\texit 1\n;;\nesac\n"
  },
  {
    "path": "package/ti-gfx/egl.pc",
    "content": "prefix=/usr/\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: egl\nDescription: TI Graphics SDK implementation of EGL\nVersion: 1.9.2188537\nRequires:\nLibs: -L${libdir} -lEGL -lGLESv2 -lIMGegl\nCflags: -I${includedir}\n"
  },
  {
    "path": "package/ti-gfx/esrev.sh",
    "content": "#!/bin/sh\n\n# Debug script to determine proper ES revision for the current board. The\n# pvrsrvkm module must be insmoded before attempting to get the es rev.\n\nmachine_id() { # return the machine ID\n\tawk 'BEGIN { FS=\": \" } /Hardware/ \\\n\t\t{ gsub(\" \", \"_\", $2); print tolower($2) } ' </proc/cpuinfo\n}\n\nif [ \"$(machine_id)\" = \"ti8168evm\" ] ; then\n\tCPUTYPE=TI816x\nelif [ \"$(machine_id)\" = \"am335xevm\" ] ; then\n\tCPUTYPE=TI33XX\nelse\n\tCPUTYPE=$(devmem 0x4800244c | sed -e 's/0x00005C00/OMAP3503/' \\\n\t                                  -e 's/0x00001C00/OMAP3515/' \\\n\t                                  -e 's/0x00004C00/OMAP3525/' \\\n\t                                  -e 's/0x00000C00/OMAP3530/' \\\n\t                                  -e 's/0x00005E00/OMAP3503/' \\\n\t                                  -e 's/0x00001E00/OMAP3515/' \\\n\t                                  -e 's/0x00004E00/OMAP3525/' \\\n\t                                  -e 's/0x00000E00/OMAP3530/' \\\n\t                                  -e 's/0x00000CC0/OMAP3530/' )\n\tif [[ \"$(echo $CPUTYPE | grep OMAP)\" == \"\" ]]; then\n\t\techo \"Unable to determine CPU type\"\n\t\texit 1\n\tfi\nfi\n\ncase $CPUTYPE in\n\"OMAP3530\")\n\tdevmem 0x48004B48 w 0x2\n\tdevmem 0x48004B10 w 0x1\n\tdevmem 0x48004B00 w 0x2\n\n\tES_REVISION=\"$(devmem 0x50000014 | sed -e s:0x00010205:5: \\\n\t\t-e s:0x00010201:3: -e s:0x00010003:2:)\"\n\t;;\n\"TI33XX\")\n\tdevmem 0x44e01104 w 0x0\n\tdevmem 0x44e00904 w 0x2\n\n\tES_REVISION=\"$(devmem 0x56000014 | sed -e s:0x00010205:8:)\"\n\t;;\n\"TI816x\")\n\tdevmem 0x48180F04 w 0x0\n\tdevmem 0x48180900 w 0x2\n\tdevmem 0x48180920 w 0x2\n\n\tES_REVISION=\"$(devmem 0x56000014 | sed -e s:0x00010205:6: \\\n\t\t-e s:0x00010201:3: -e s:0x00010003:2:)\"\n\t;;\n*)\n\techo Unable to determine SGX hardware\n\texit 2\n\t;;\nesac\n\necho $ES_REVISION\n"
  },
  {
    "path": "package/ti-gfx/glesv2.pc",
    "content": "prefix=/usr\nexec_prefix=${prefix}\nlibdir=${exec_prefix}/lib\nincludedir=${prefix}/include\n\nName: glesv2\nDescription: TI Graphics SDK implementation of OpenGL ESv2\nVersion: 1.9.2188537\nRequires:\nLibs: -L${libdir} -lGLESv2 -lGLES_CM -lsrv_um -lusc -lEGL -lIMGegl\nCflags: -I${includedir}\n"
  },
  {
    "path": "package/ti-gfx/powervr.ini",
    "content": "[default]\nWindowSystem=libpvrPVR2D_FRONTWSEGL.so\n"
  },
  {
    "path": "package/ti-gfx/ti-gfx.hash",
    "content": "# Locally computed:\nsha256  54641222cdb49b03f996cbd6412de227198d9e084f5647d706bbf4217e8cdb07  Graphics_SDK_setuplinux_hardfp_5_01_01_02.bin\nsha256  99dae9d33790c87860e828505ac07c5b864ef65d8372b39117704db6b78494ff  Graphics_SDK_setuplinux_softfp_5_01_00_01.bin\nsha256  74cc0f8a7806f685de6fd6c9f6d8453667078db4f2f3b29ab0b244e587bd7265  TSPA.txt\n"
  },
  {
    "path": "package/ti-gfx/ti-gfx.mk",
    "content": "################################################################################\n#\n# ti-gfx\n#\n################################################################################\n\n# SDK 5_01_01_01 only support EABIhf so we downgrade to 5_01_00_01 if EABIhf is\n# not available.\nifeq ($(BR2_ARM_EABIHF),y)\nTI_GFX_VERSION = 5_01_01_02\nTI_GFX_SOURCE = Graphics_SDK_setuplinux_hardfp_$(TI_GFX_VERSION).bin\nelse\nTI_GFX_VERSION = 5_01_00_01\nTI_GFX_SOURCE = Graphics_SDK_setuplinux_softfp_$(TI_GFX_VERSION).bin\nendif\n\nTI_GFX_SO_VERSION = 1.10.2359475\nTI_GFX_SITE = http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/gfxsdk/$(TI_GFX_VERSION)/exports\nTI_GFX_LICENSE = Technology / Software Publicly Available\nTI_GFX_LICENSE_FILES = TSPA.txt\nTI_GFX_INSTALL_STAGING = YES\n\nTI_GFX_DEPENDENCIES = linux\n\nTI_GFX_PROVIDES = libegl libgles powervr\n\nifeq ($(BR2_PACKAGE_TI_GFX_ES3),y)\nTI_GFX_OMAPES = 3.x\nTI_GFX_PLATFORM = omap3\nendif\nifeq ($(BR2_PACKAGE_TI_GFX_ES5),y)\nTI_GFX_OMAPES = 5.x\nTI_GFX_PLATFORM = omap3630\nendif\nifeq ($(BR2_PACKAGE_TI_GFX_ES6),y)\nTI_GFX_OMAPES = 6.x\nTI_GFX_PLATFORM = ti81xx\nendif\nifeq ($(BR2_PACKAGE_TI_GFX_ES8),y)\nTI_GFX_OMAPES = 8.x\nTI_GFX_PLATFORM = ti335x\nendif\n\nifeq ($(BR2_PACKAGE_TI_GFX_DEBUG),y)\nTI_GFX_DEBUG_LIB = dbg\nTI_GFX_DEBUG_KM = debug\nelse\nTI_GFX_DEBUG_LIB = rel\nTI_GFX_DEBUG_KM = release\nendif\n\nTI_GFX_BIN_PATH = gfx_$(TI_GFX_DEBUG_LIB)_es$(TI_GFX_OMAPES)\n\nTI_GFX_KM_MAKE_OPTS = \\\n\t$(LINUX_MAKE_FLAGS) \\\n\tBUILD=$(TI_GFX_DEBUG_KM) \\\n\tTI_PLATFORM=$(TI_GFX_PLATFORM) \\\n\tOMAPES=$(TI_GFX_OMAPES) \\\n\tSUPPORT_XORG=0 \\\n\tKERNELDIR=$(LINUX_DIR)\n\nTI_GFX_DEMO_MAKE_OPTS = \\\n\tPLATFORM=LinuxARMV7 \\\n\tX11BUILD=0 \\\n\tPLAT_CC=\"$(TARGET_CC)\" \\\n\tPLAT_CPP=\"$(TARGET_CXX)\" \\\n\tPLAT_AR=\"$(TARGET_AR)\"\n\n# The only required binary is pvrsrvctl all others are optional\nTI_GFX_BIN = pvrsrvctl\n\nifeq ($(BR2_PACKAGE_TI_GFX_DEBUG),y)\nTI_GFX_BIN += \\\n\teglinfo ews_server ews_server_es2 ews_test_gles1 ews_test_gles2 \\\n\tews_test_swrender gles1test1 gles2test1 pvr2d_test services_test \\\n\tsgx_blit_test sgx_clipblit_test sgx_flip_test sgx_init_test \\\n\tsgx_render_flip_test xeglinfo xgles1test1 xgles2test1 xmultiegltest\nendif\n\nTI_GFX_LIBS = \\\n\tlibews libpvr2d libpvrEWS_WSEGL libpvrPVR2D_BLITWSEGL libpvrPVR2D_DRIWSEGL \\\n\tlibpvrPVR2D_FLIPWSEGL libpvrPVR2D_FRONTWSEGL libpvrPVR2D_LINUXFBWSEGL \\\n\tlibPVRScopeServices libsrv_init libsrv_um libusc pvr_drv\n\nTI_GFX_EGLIMAGE_LIBS = \\\n\tlibEGL libGLES_CM libGLESv2 libglslcompiler libIMGegl\n\nTI_GFX_DEMOS = ChameleonMan MagicLantern\nTI_GFX_DEMOS_LOC = GFX_Linux_SDK/OGLES2/SDKPackage/Demos\nTI_GFX_DEMOS_MAKE_LOC = OGLES2/Build/LinuxGeneric\nTI_GFX_DEMOS_BIN_LOC = OGLES2/Build/LinuxARMV7/ReleaseRaw/\n\nTI_GFX_HDR_DIRS = OGLES2/EGL OGLES2/EWS OGLES2/GLES2 OGLES2/KHR \\\n\tOGLES/GLES bufferclass_ti/ pvr2d/ wsegl/\n\ndefine TI_GFX_EXTRACT_CMDS\n\tchmod +x $(TI_GFX_DL_DIR)/$(TI_GFX_SOURCE)\n\tprintf \"Y\\nY\\n qY\\n\\n\" | $(TI_GFX_DL_DIR)/$(TI_GFX_SOURCE) \\\n\t\t--prefix $(@D) \\\n\t\t--mode console\nendef\n\ndefine TI_GFX_BUILD_KM_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TI_GFX_KM_MAKE_OPTS) -C $(@D)/GFX_Linux_KM all\nendef\n\nifeq ($(BR2_PACKAGE_TI_GFX_DEMOS),y)\ndefine TI_GFX_BUILD_DEMO_CMDS\n\t$(foreach demo, $(TI_GFX_DEMOS), \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE1) -C \\\n\t\t\t$(@D)/$(TI_GFX_DEMOS_LOC)/$(demo)/$(TI_GFX_DEMOS_MAKE_LOC) \\\n\t\t\t$(TI_GFX_DEMO_MAKE_OPTS) all\n\t)\nendef\nendif\n\ndefine TI_GFX_BUILD_CMDS\n\t$(TI_GFX_BUILD_KM_CMDS)\n\t$(TI_GFX_BUILD_DEMO_CMDS)\nendef\n\n# Install libs\n# argument 1 is the location to install to (e.g. STAGING_DIR, TARGET_DIR)\ndefine TI_GFX_INSTALL_LIBS\n\t$(foreach lib,$(TI_GFX_LIBS),\n\t\t$(INSTALL) -D -m 0644 $(@D)/$(TI_GFX_BIN_PATH)/$(lib).so \\\n\t\t\t$(1)/usr/lib/$(lib).so.$(TI_GFX_SO_VERSION); \\\n\t\tln -sf $(lib).so.$(TI_GFX_SO_VERSION) \\\n\t\t\t$(1)/usr/lib/$(lib).so\n\t)\n\t$(foreach lib,$(TI_GFX_EGLIMAGE_LIBS),\n\t\t$(if $(BR2_PACKAGE_TI_GFX_EGLIMAGE),\n\t\t\t$(INSTALL) -D -m 0644 $(@D)/$(TI_GFX_BIN_PATH)/$(lib)_eglimage.so \\\n\t\t\t\t$(1)/usr/lib/$(lib).so.$(TI_GFX_SO_VERSION);\n\t\t,\n\t\t\t$(INSTALL) -D -m 0644 $(@D)/$(TI_GFX_BIN_PATH)/$(lib).so \\\n\t\t\t\t$(1)/usr/lib/$(lib).so.$(TI_GFX_SO_VERSION);\n\t\t)\n\t\tln -sf $(lib).so.$(TI_GFX_SO_VERSION) \\\n\t\t\t$(1)/usr/lib/$(lib).so\n\t)\nendef\n\ndefine TI_GFX_INSTALL_STAGING_CMDS\n\t$(foreach incdir,$(TI_GFX_HDR_DIRS),\n\t\t$(INSTALL) -d $(STAGING_DIR)/usr/include/$(notdir $(incdir)); \\\n\t\t$(INSTALL) -D -m 0644 $(@D)/include/$(incdir)/*.h \\\n\t\t\t$(STAGING_DIR)/usr/include/$(notdir $(incdir))/\n\t)\n\t$(call TI_GFX_INSTALL_LIBS,$(STAGING_DIR))\n\n\t$(INSTALL) -D -m 0644 package/ti-gfx/egl.pc \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/egl.pc\n\t$(INSTALL) -D -m 0644 package/ti-gfx/glesv2.pc \\\n\t\t$(STAGING_DIR)/usr/lib/pkgconfig/glesv2.pc\nendef\n\ndefine TI_GFX_INSTALL_KM_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TI_GFX_KM_MAKE_OPTS) -C $(@D)/GFX_Linux_KM install\nendef\n\ndefine TI_GFX_INSTALL_BINS_CMDS\n\t$(foreach bin,$(TI_GFX_BIN),\n\t\t$(INSTALL) -D -m 0755 $(@D)/$(TI_GFX_BIN_PATH)/$(bin) \\\n\t\t\t$(TARGET_DIR)/usr/bin/$(bin)\n\t)\n\t$(if $(BR2_PACKAGE_TI_GFX_DEBUG),\n\t\t$(INSTALL) -D -m 0755 package/ti-gfx/esrev.sh \\\n\t\t\t$(TARGET_DIR)/usr/sbin/esrev\n\t)\nendef\n\ndefine TI_GFX_INSTALL_CONF_CMDS\n\t# libs use the following file for configuration.\n\t$(INSTALL) -D -m 0644 package/ti-gfx/powervr.ini \\\n\t\t$(TARGET_DIR)/etc/powervr.ini\nendef\n\nifeq ($(BR2_PACKAGE_TI_GFX_DEMOS),y)\ndefine TI_GFX_INSTALL_DEMOS_CMDS\n\t$(foreach demo,$(TI_GFX_DEMOS),\n\t\t$(INSTALL) -D -m 0755 \\\n\t\t$(@D)/$(TI_GFX_DEMOS_LOC)/$(demo)/$(TI_GFX_DEMOS_BIN_LOC)/OGLES2$(demo) \\\n\t\t$(TARGET_DIR)/usr/bin/OGLES2$(demo)\n\t)\nendef\nendif\n\ndefine TI_GFX_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/ti-gfx/S80ti-gfx \\\n\t\t$(TARGET_DIR)/etc/init.d/S80ti-gfx\nendef\n\ndefine TI_GFX_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 755 package/ti-gfx/S80ti-gfx \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/scripts/ti-gfx\n\t$(INSTALL) -D -m 644 package/ti-gfx/ti-gfx.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/ti-gfx.service\nendef\n\ndefine TI_GFX_INSTALL_TARGET_CMDS\n\t$(TI_GFX_INSTALL_KM_CMDS)\n\t$(TI_GFX_INSTALL_BINS_CMDS)\n\t$(call TI_GFX_INSTALL_LIBS,$(TARGET_DIR))\n\t$(TI_GFX_INSTALL_CONF_CMDS)\n\t$(TI_GFX_INSTALL_DEMOS_CMDS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ti-gfx/ti-gfx.service",
    "content": "[Unit]\nDescription=TI graphics driver\n\n[Service]\nType=oneshot\nExecStart=/usr/lib/systemd/scripts/ti-gfx start\nExecStop=/usr/lib/systemd/scripts/ti-gfx stop\nRemainAfterExit=yes\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/ti-sgx-demos/Config.in",
    "content": "config BR2_PACKAGE_TI_SGX_DEMOS\n\tbool \"ti-sgx-demos\"\n\tdepends on BR2_PACKAGE_TI_SGX_UM\n\thelp\n\t  These SGX powervr demo applications from Imagination\n\t  Technologies are availabe as binaries only.  The binaries\n\t  are compiled for the TI SGX implementation.\n\n\t  https://git.ti.com/cgit/graphics/img-pvr-sdk\n"
  },
  {
    "path": "package/ti-sgx-demos/ti-sgx-demos.hash",
    "content": "# Locally computed:\nsha256  5564741d7669b6303e52f4c0d1eaa04aa2633c0c6ad8ff7c5295b7ef3764c719  ti-sgx-demos-bb8b74cdd1323e76697b3eb2258f863b15fee287-br1.tar.gz\nsha256  052741ea66a4a48e0ef8cab259d2dc136e7cf52fda694af8d1fe9bd28abe333b  LegalNotice.txt\n"
  },
  {
    "path": "package/ti-sgx-demos/ti-sgx-demos.mk",
    "content": "################################################################################\n#\n# ti-sgx-demos\n#\n################################################################################\n\n# This corresponds to SDK 06.00.00.07 plus one pull request\nTI_SGX_DEMOS_VERSION = bb8b74cdd1323e76697b3eb2258f863b15fee287\nTI_SGX_DEMOS_SITE = http://git.ti.com/git/graphics/img-pvr-sdk.git\nTI_SGX_DEMOS_SITE_METHOD = git\nTI_SGX_DEMOS_LICENSE = Imagination Technologies License Agreement\nTI_SGX_DEMOS_LICENSE_FILES = LegalNotice.txt\n\ndefine TI_SGX_DEMOS_INSTALL_TARGET_CMDS\n\tcp -dpfr $(@D)/targetfs/arm/Examples/Advanced/NullWS/OGLES* \\\n\t\t$(TARGET_DIR)/usr/bin/\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ti-sgx-km/Config.in",
    "content": "comment \"ti-sgx-km needs a Linux kernel to be built\"\n\tdepends on BR2_arm\n\tdepends on !BR2_LINUX_KERNEL\n\nconfig BR2_PACKAGE_TI_SGX_KM\n\tbool \"ti-sgx-km\"\n\tdepends on BR2_LINUX_KERNEL && BR2_arm\n\tselect BR2_LINUX_NEEDS_MODULES\n\thelp\n\t  Kernel modules for TI CPUs with SGX GPU.\n\t  This package supports AM335x only.\n\t  It builds the kernel module and the user space binaries.\n\t  For older CPUs or kernels use the ti-gfx package.\n\n\t  Note: it needs a TI specific kernel to build properly.\n\n\t  https://git.ti.com/cgit/graphics/omap5-sgx-ddk-linux\n"
  },
  {
    "path": "package/ti-sgx-km/ti-sgx-km.hash",
    "content": "# Locally computed:\nsha256  213b4ff3893c74f026a06404dca185216809d062e54d17c2302d56ff7ede5181  ti-sgx-km-cf7f48cb30abfd5df7a60c9bf4bbb1dde0d496d9-br1.tar.gz\nsha256  e9d660547691b2a9232850fd43aac16d40fd063023166fd27162020c30dc2bd4  eurasia_km/GPL-COPYING\n"
  },
  {
    "path": "package/ti-sgx-km/ti-sgx-km.mk",
    "content": "################################################################################\n#\n# ti-sgx-km\n#\n################################################################################\n\n# This corresponds to SDK 06.01.00.08\nTI_SGX_KM_VERSION = cf7f48cb30abfd5df7a60c9bf4bbb1dde0d496d9\nTI_SGX_KM_SITE = http://git.ti.com/git/graphics/omap5-sgx-ddk-linux.git\nTI_SGX_KM_SITE_METHOD = git\nTI_SGX_KM_LICENSE = GPL-2.0\nTI_SGX_KM_LICENSE_FILES = eurasia_km/GPL-COPYING\n\nTI_SGX_KM_DEPENDENCIES = linux\n\nTI_SGX_KM_MAKE_OPTS = \\\n\t$(LINUX_MAKE_FLAGS) \\\n\tKERNELDIR=$(LINUX_DIR) \\\n\tTARGET_PRODUCT=$(TI_SGX_KM_PLATFORM_NAME)\n\nTI_SGX_KM_PLATFORM_NAME = ti335x\n\nTI_SGX_KM_SUBDIR = eurasia_km/eurasiacon/build/linux2/omap_linux\n\ndefine TI_SGX_KM_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TI_SGX_KM_MAKE_OPTS) \\\n\t\t-C $(@D)/$(TI_SGX_KM_SUBDIR)\nendef\n\ndefine TI_SGX_KM_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TI_SGX_KM_MAKE_OPTS) \\\n\t\tDISCIMAGE=$(TARGET_DIR) \\\n\t\tkbuild_install -C $(@D)/$(TI_SGX_KM_SUBDIR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ti-sgx-um/0001-Makefile-do-not-install-init-script.patch",
    "content": "From afb92e4b1cd05388f519868215d0e8a4672ebb0e Mon Sep 17 00:00:00 2001\nFrom: Carlos Santos <unixmania@gmail.com>\nDate: Sun, 10 Nov 2019 22:44:44 -0300\nSubject: [PATCH] Makefile: do not install init script\n\nUse a custom one, made for Buildroot, instead.\n\nSigned-off-by: Carlos Santos <unixmania@gmail.com>\n---\n Makefile | 3 ---\n 1 file changed, 3 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 649111a..19016f3 100755\n--- a/Makefile\n+++ b/Makefile\n@@ -3,7 +3,6 @@ TARGET_PRODUCT ?= jacinto6evm\n SRCDIR = ./targetfs/${TARGET_PRODUCT}\n \n prefix = /usr\n-etcdir = /etc\n bindir = ${prefix}/bin\n incdir = ${prefix}/include\n libdir = ${prefix}/lib\n@@ -11,11 +10,9 @@ libdir = ${prefix}/lib\n all:\n \n install: \n-\tmkdir -p ${DESTDIR}${etcdir}\n \tmkdir -p ${DESTDIR}${bindir}\n \tmkdir -p ${DESTDIR}${incdir}\n \tmkdir -p ${DESTDIR}${libdir}\n-\tcp -ar ${SRCDIR}/etc/* ${DESTDIR}${etcdir}\n \tcp -ar ${SRCDIR}/bin/* ${DESTDIR}${bindir}\n \tcp -ar ${SRCDIR}/include/* ${DESTDIR}${incdir}\n \tcp -ar ${SRCDIR}/lib/* ${DESTDIR}${libdir}\n-- \n2.18.1\n\n"
  },
  {
    "path": "package/ti-sgx-um/Config.in",
    "content": "comment \"ti-sgx-um needs the ti-sgx-km driver\"\n\tdepends on !BR2_PACKAGE_TI_SGX_KM\n\ncomment \"ti-sgx-um needs udev and a glibc toolchain w/ threads\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_USES_GLIBC \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_TI_SGX_UM\n\tbool \"ti-sgx-um\"\n\tdepends on BR2_PACKAGE_TI_SGX_KM\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libdrm\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\t# pre-built binaries\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_LIBDRM_OMAP\n\tselect BR2_PACKAGE_HAS_LIBEGL\n\tselect BR2_PACKAGE_HAS_LIBGLES\n\tselect BR2_PACKAGE_HAS_POWERVR\n\tselect BR2_PACKAGE_LIBFFI\n\tselect BR2_PACKAGE_WAYLAND\n\thelp\n\t  Graphics libraries for TI CPUs with SGX5xx GPU.\n\t  This package supports AM335x, AM437x, AM4430 and AM5430.\n\t  For older CPUs or kernels use the ti-gfx package.\n\n\t  https://git.ti.com/cgit/graphics/omap5-sgx-ddk-um-linux\n\nif BR2_PACKAGE_TI_SGX_UM\n\nconfig BR2_PACKAGE_PROVIDES_LIBEGL\n\tdefault \"ti-sgx-um\"\n\nconfig BR2_PACKAGE_PROVIDES_LIBGLES\n\tdefault \"ti-sgx-um\"\n\nconfig BR2_PACKAGE_PROVIDES_POWERVR\n\tdefault \"ti-sgx-um\"\n\nendif\n"
  },
  {
    "path": "package/ti-sgx-um/S80ti-sgx",
    "content": "#!/bin/sh\n\npvrsrvkm_ko=\"/lib/modules/$(/bin/uname -r)/extra/pvrsrvkm.ko\"\n\npvr_loaded() {\n\t/sbin/lsmod | /bin/grep -q '^\\<pvrsrvkm\\>'\n}\n\npvr_load() {\n\t/sbin/insmod \"$pvrsrvkm_ko\" > /dev/null 2>&1\n}\n\nstart() {\n\tprintf 'Loading pvrsrvkm module: '\n\tpvr_loaded || pvr_load\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\tprintf 'Starting PowerVR services: '\n\t\t/usr/bin/pvrsrvctl --start --no-module > /dev/null 2>&1\n\t\tstatus=$?\n\tfi\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Starting PowerVR services: '\n\t/usr/bin/pvrsrvctl --stop > /dev/null 2>&1\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/ti-sgx-um/ti-sgx-um.hash",
    "content": "# Locally computed:\nsha256  e52c743194516fcc92d570bc5a26dfaa26d18c13d92d41640019f544ef25be3a  ti-sgx-um-909e237baf47d0bde006ff25552f5403fd7e359d-br1.tar.gz\nsha256  368c306246c9130b5c90a6fef2f80085f70b6225b3f552654a288c0f39fc1531  TI-Linux-Graphics-DDK-UM-Manifest.doc\n"
  },
  {
    "path": "package/ti-sgx-um/ti-sgx-um.mk",
    "content": "################################################################################\n#\n# ti-sgx-um\n#\n################################################################################\n\n# This corresponds to SDK 06.01.00.08\nTI_SGX_UM_VERSION = 909e237baf47d0bde006ff25552f5403fd7e359d\nTI_SGX_UM_SITE = http://git.ti.com/git/graphics/omap5-sgx-ddk-um-linux.git\nTI_SGX_UM_SITE_METHOD = git\nTI_SGX_UM_LICENSE = TI TSPA License\nTI_SGX_UM_LICENSE_FILES = TI-Linux-Graphics-DDK-UM-Manifest.doc\nTI_SGX_UM_INSTALL_STAGING = YES\nTI_SGX_UM_TARGET=ti335x\n\n# ti-sgx-um is a egl/gles provider only if libdrm is installed\nTI_SGX_UM_DEPENDENCIES = libdrm wayland\n\ndefine TI_SGX_UM_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DISCIMAGE=$(STAGING_DIR) \\\n\t\tTARGET_PRODUCT=$(TI_SGX_UM_TARGET) install\nendef\n\ndefine TI_SGX_UM_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DISCIMAGE=$(TARGET_DIR) \\\n\t\tTARGET_PRODUCT=$(TI_SGX_UM_TARGET) install\nendef\n\nTI_SGX_UM_POST_INSTALL_TARGET_HOOKS += TI_SGX_UM_INSTALL_CONF\n\ndefine TI_SGX_UM_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/ti-sgx-um/S80ti-sgx \\\n\t\t$(TARGET_DIR)/etc/init.d/S80ti-sgx\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ti-uim/Config.in",
    "content": "config BR2_PACKAGE_TI_UIM\n\tbool \"ti-uim\"\n\thelp\n\t  User Mode Initialization Manager for TI wl12xx connectivity\n\t  chip shared transport drivers. This daemon is needed to get\n\t  the btwilink driver to work.\n\n\t  http://omappedia.org/wiki/Device_Driver_Interface_of_WiLink_Solution\n"
  },
  {
    "path": "package/ti-uim/ti-uim.hash",
    "content": "# Locally computed\nsha256  da8a66968f4bf99366ab2b63baf358d937a6b1a5636ef6179c3aa7c852cbd1b2  ti-uim-a0236bc252e6484835ce266ae4a50b361f6a902d.tar.gz\nsha256  4e39276507524f938459b05d061ae77562f3f85926fe73027cfcac259cb03d0e  uim.h\n"
  },
  {
    "path": "package/ti-uim/ti-uim.mk",
    "content": "################################################################################\n#\n# ti-uim\n#\n################################################################################\n\nTI_UIM_VERSION = a0236bc252e6484835ce266ae4a50b361f6a902d\nTI_UIM_SITE = $(call github,96boards,uim,$(TI_UIM_VERSION))\nTI_UIM_LICENSE = GPL-2.0+\nTI_UIM_LICENSE_FILES = uim.h\n\ndefine TI_UIM_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)\nendef\n\ndefine TI_UIM_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/uim \\\n\t\t$(TARGET_DIR)/usr/sbin/uim\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ti-utils/0001-plt.h-fix-build-with-gcc-10.patch",
    "content": "From 9ed1946cef876acd5346ae806eecd7fc2e1e5341 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 3 Oct 2020 10:32:48 +0200\nSubject: [PATCH] plt.h: fix build with gcc 10\n\nDrop EFUSE_PARAMETER_TYPE_ENM to avoid the following build failure with\ngcc 10 (which defaults to -fno-common):\n\n/home/naourr/work/instance-1/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: misc_cmds.o:(.bss+0x0): multiple definition of `EFUSE_PARAMETER_TYPE_ENM'; nvs.o:(.bss+0x0): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/e96c70910544085dc5299fa59f80ab9c5922fde2\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/gxk/ti-utils/pull/2]\n---\n plt.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/plt.h b/plt.h\nindex 523fded..8ba01c9 100644\n--- a/plt.h\n+++ b/plt.h\n@@ -363,7 +363,7 @@ enum EFUSE_PARAMETER_TYPE_ENMT {\n \tTX_BIP_PD_BUFFER_VBIAS_ERROR_E,\n \tEFUSE_NUMBER_OF_PARAMETERS_E,\n \tEFUSE_LAST_PARAMETER_E = (EFUSE_NUMBER_OF_PARAMETERS_E - 1)\n-} EFUSE_PARAMETER_TYPE_ENM;\n+};\n \n int get_mac_addr(int ifc_num, unsigned char *mac_addr);\n \n-- \n2.28.0\n\n"
  },
  {
    "path": "package/ti-utils/Config.in",
    "content": "config BR2_PACKAGE_TI_UTILS\n\tbool \"ti-utils\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tselect BR2_PACKAGE_LIBNL\n\thelp\n\t  The calibrator and other useful utilities for TI wireless\n\t  solution, based on wl12xx driver.\n\n\t  http://linuxwireless.sipsolutions.net/en/users/Drivers/wl12xx/calibrator/\n\ncomment \"ti-utils needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/ti-utils/ti-utils.hash",
    "content": "# locally computed\nsha256  d05d4e3ad3599fca7854109938aebd24bbab72ac7d69dd053260f735a36613f9  ti-utils-06dbdb2727354b5f3ad7c723897f40051fddee49.tar.gz\nsha256  363cef40b276a7a91ebcff3f78626d9cfe5e5a51927c725236007259403d5fc4  COPYING\n"
  },
  {
    "path": "package/ti-utils/ti-utils.mk",
    "content": "################################################################################\n#\n# ti-utils\n#\n################################################################################\n\nTI_UTILS_VERSION = 06dbdb2727354b5f3ad7c723897f40051fddee49\nTI_UTILS_SITE = $(call github,gxk,ti-utils,$(TI_UTILS_VERSION))\nTI_UTILS_DEPENDENCIES = libnl host-pkgconf\nTI_UTILS_LICENSE = BSD-3-Clause\nTI_UTILS_LICENSE_FILES = COPYING\n\nTI_UTILS_CFLAGS = `$(PKG_CONFIG_HOST_BINARY) --cflags libnl-genl-3.0`\nTI_UTILS_LIBS = `$(PKG_CONFIG_HOST_BINARY) --libs libnl-genl-3.0`\n\ndefine TI_UTILS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) NFSROOT=\"$(STAGING_DIR)\" \\\n\t\tCC=\"$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) $(TI_UTILS_CFLAGS)\" \\\n\t\tLIBS=\"$(TI_UTILS_LIBS)\" -C $(@D) all\nendef\n\ndefine TI_UTILS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/calibrator \\\n\t\t$(TARGET_DIR)/usr/bin/calibrator\n\t$(INSTALL) -m 0755 -D $(@D)/scripts/go.sh \\\n\t\t$(TARGET_DIR)/usr/share/ti-utils/scripts/go.sh\n\n\tcp -r $(@D)/ini_files $(TARGET_DIR)/usr/share/ti-utils\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/tiff/Config.in",
    "content": "menuconfig BR2_PACKAGE_TIFF\n\tbool \"tiff\"\n\thelp\n\t  Library for handling TIFF (Tag Image File Format) images.\n\n\t  http://simplesystems.org/libtiff/\n\nif BR2_PACKAGE_TIFF\n\nconfig BR2_PACKAGE_TIFF_CCITT\n\tbool \"CCITT Group 3 & 4 support\"\n\tdefault y\n\nconfig BR2_PACKAGE_TIFF_PACKBITS\n\tbool \"Macintosh PackBits algorithm\"\n\tdefault y\n\nconfig BR2_PACKAGE_TIFF_LZW\n\tbool \"LZW algorithm\"\n\tdefault y\n\nconfig BR2_PACKAGE_TIFF_THUNDER\n\tbool \"ThunderScan 4-bit RLE algorithm\"\n\tdefault y\n\nconfig BR2_PACKAGE_TIFF_NEXT\n\tbool \"NeXT 2-bit RLE algorithm\"\n\tdefault y\n\nconfig BR2_PACKAGE_TIFF_LOGLUV\n\tbool \"LogLuv high dynamic range encoding\"\n\tdefault y\n\nconfig BR2_PACKAGE_TIFF_MDI\n\tbool \"Microsoft Document Imaging\"\n\tdefault y\n\nconfig BR2_PACKAGE_TIFF_ZLIB\n\tbool \"Zlib usage (required for Deflate compression)\"\n\tdefault y\n\tselect BR2_PACKAGE_ZLIB\n\nconfig BR2_PACKAGE_TIFF_XZ\n\tbool \"XZ compression\"\n\tselect BR2_PACKAGE_XZ\n\nconfig BR2_PACKAGE_TIFF_PIXARLOG\n\tbool \"Pixar log-format algorithm (requires Zlib)\"\n\tdefault y\n\tselect BR2_PACKAGE_TIFF_ZLIB\n\nconfig BR2_PACKAGE_TIFF_JPEG\n\tbool \"JPEG compression\"\n\tdefault y\n\tselect BR2_PACKAGE_JPEG\n\nconfig BR2_PACKAGE_TIFF_OLD_JPEG\n\tbool \"Old JPEG decompression\"\n\tdefault y\n\nconfig BR2_PACKAGE_TIFF_JBIG\n\tbool \"JBIG compression\"\n\tdefault y\n\nconfig BR2_PACKAGE_TIFF_UTILITIES\n\tbool \"tiff utilities\"\n\thelp\n\t  Install all tiff utilities.\n\nendif\n"
  },
  {
    "path": "package/tiff/tiff.hash",
    "content": "# Locally computed\nsha256  0e46e5acb087ce7d1ac53cf4f56a09b221537fc86dfc5daaad1c2e89e1b37ac8  tiff-4.3.0.tar.gz\nsha256  fbd6fed7938541d2c809c0826225fc85e551fdbfa8732b10f0c87e0847acafd7  COPYRIGHT\n"
  },
  {
    "path": "package/tiff/tiff.mk",
    "content": "################################################################################\n#\n# tiff\n#\n################################################################################\n\nTIFF_VERSION = 4.3.0\nTIFF_SITE = http://download.osgeo.org/libtiff\nTIFF_LICENSE = tiff license\nTIFF_LICENSE_FILES = COPYRIGHT\nTIFF_CPE_ID_VENDOR = libtiff\nTIFF_CPE_ID_PRODUCT = libtiff\nTIFF_INSTALL_STAGING = YES\nTIFF_CONF_OPTS = \\\n\t--disable-cxx \\\n\t--without-x\n\nTIFF_DEPENDENCIES = host-pkgconf\n\nHOST_TIFF_CONF_OPTS = \\\n\t--disable-cxx \\\n\t--without-x \\\n\t--disable-zlib \\\n\t--disable-lzma \\\n\t--disable-jpeg\nHOST_TIFF_DEPENDENCIES = host-pkgconf\n\nifneq ($(BR2_PACKAGE_TIFF_CCITT),y)\nTIFF_CONF_OPTS += --disable-ccitt\nendif\n\nifneq ($(BR2_PACKAGE_TIFF_PACKBITS),y)\nTIFF_CONF_OPTS += --disable-packbits\nendif\n\nifneq ($(BR2_PACKAGE_TIFF_LZW),y)\nTIFF_CONF_OPTS += --disable-lzw\nendif\n\nifneq ($(BR2_PACKAGE_TIFF_THUNDER),y)\nTIFF_CONF_OPTS += --disable-thunder\nendif\n\nifneq ($(BR2_PACKAGE_TIFF_NEXT),y)\nTIFF_CONF_OPTS += --disable-next\nendif\n\nifneq ($(BR2_PACKAGE_TIFF_LOGLUV),y)\nTIFF_CONF_OPTS += --disable-logluv\nendif\n\nifneq ($(BR2_PACKAGE_TIFF_MDI),y)\nTIFF_CONF_OPTS += --disable-mdi\nendif\n\nifneq ($(BR2_PACKAGE_TIFF_ZLIB),y)\nTIFF_CONF_OPTS += --disable-zlib\nelse\nTIFF_DEPENDENCIES += zlib\nendif\n\nifneq ($(BR2_PACKAGE_TIFF_XZ),y)\nTIFF_CONF_OPTS += --disable-lzma\nelse\nTIFF_DEPENDENCIES += xz\nendif\n\nifneq ($(BR2_PACKAGE_TIFF_PIXARLOG),y)\nTIFF_CONF_OPTS += --disable-pixarlog\nendif\n\nifneq ($(BR2_PACKAGE_TIFF_JPEG),y)\nTIFF_CONF_OPTS += --disable-jpeg\nelse\nTIFF_DEPENDENCIES += jpeg\nendif\n\nifneq ($(BR2_PACKAGE_TIFF_OLD_JPEG),y)\nTIFF_CONF_OPTS += --disable-old-jpeg\nendif\n\nifneq ($(BR2_PACKAGE_TIFF_JBIG),y)\nTIFF_CONF_OPTS += --disable-jbig\nendif\n\nTIFF_SUBDIRS = port libtiff\nifeq ($(BR2_PACKAGE_TIFF_UTILITIES),y)\nTIFF_SUBDIRS += tools\nendif\n\nTIFF_MAKE = $(MAKE) SUBDIRS=\"$(TIFF_SUBDIRS)\"\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/time/Config.in",
    "content": "config BR2_PACKAGE_TIME\n\tbool \"time\"\n\tdepends on BR2_USE_MMU # fork()\n\t# See https://savannah.gnu.org/bugs/index.php?48000\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  The GNU time utility.\n\n\t  http://savannah.gnu.org/projects/time/\n\ncomment \"time needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/time/time.hash",
    "content": "# From https://lists.gnu.org/archive/html/info-gnu/2018-03/msg00004.html\nsha1\t75068c26abbed3ad3980685bae21d7202d288317\t\t\t\ttime-1.9.tar.gz\nsha256\tfbacf0c81e62429df3e33bda4cee38756604f18e01d977338e23306a3e3b521e\ttime-1.9.tar.gz\n# Locally calculated\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\tCOPYING\n"
  },
  {
    "path": "package/time/time.mk",
    "content": "################################################################################\n#\n# time\n#\n################################################################################\n\nTIME_VERSION = 1.9\nTIME_SITE = $(BR2_GNU_MIRROR)/time\nTIME_CONF_ENV = ac_cv_func_wait3_rusage=yes\nTIME_LICENSE = GPL-3.0+\nTIME_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/timescaledb/Config.in",
    "content": "config BR2_PACKAGE_TIMESCALEDB\n\tbool \"timescaledb\"\n\tdepends on BR2_PACKAGE_POSTGRESQL\n\thelp\n\t  TimescaleDB is an open-source database designed\n\t  to make SQL scalable for time-series data.\n\t  It is engineered up from PostgreSQL and packaged\n\t  as a PostgreSQL extension, providing automatic\n\t  partitioning across time and space (partitioning key),\n\t  as well as full SQL support.\n\n\t  https://www.timescale.com/\n"
  },
  {
    "path": "package/timescaledb/timescaledb.hash",
    "content": "# Locally calculated\nsha256  b206a376251259eb745eee819e7a853b3fbab9dc8443303714484a0fef89a2a4  timescaledb-2.4.2.tar.gz\nsha256  0378e0948feefd85f579319c74d6e2b671194037f550c7176ef26649d94c895b  LICENSE\n"
  },
  {
    "path": "package/timescaledb/timescaledb.mk",
    "content": "################################################################################\n#\n# timescaledb\n#\n################################################################################\n\nTIMESCALEDB_VERSION = 2.4.2\nTIMESCALEDB_SITE = $(call github,timescale,timescaledb,$(TIMESCALEDB_VERSION))\nTIMESCALEDB_LICENSE = Apache-2.0\nTIMESCALEDB_LICENSE_FILES = LICENSE\n\nTIMESCALEDB_DEPENDENCIES = postgresql\n\n# The PG_CPPFLAGS, PG_CFLAGS, PG_LDFLAGS and PG_LIBS variables must be\n# non-empty, otherwise CMake will call the pg_config script, and our\n# pg_config replacement doesn't implement --cppflags --cflags\n# --ldflags and --libs.\nTIMESCALEDB_CONF_OPTS = \\\n\t-DTAP_CHECKS=OFF \\\n\t-DREGRESS_CHECKS=OFF \\\n\t-DWARNINGS_AS_ERRORS=OFF \\\n\t-DPG_PKGLIBDIR=lib/postgresql \\\n\t-DPG_SHAREDIR=share/postgresql \\\n\t-DPG_BINDIR=bin \\\n\t-DPG_CPPFLAGS=\"$(TARGET_CPPFLAGS) \" \\\n\t-DPG_CFLAGS=\"$(TARGET_CFLAGS) \" \\\n\t-DPG_LDFLAGS=\"$(TARGET_LDFLAGS) \" \\\n\t-DPG_LIBS=\" \"\n\n# There's no dependency on the OpenSSL package, because USE_OPENSSL\n# only tells if postgresql was built with OpenSSL support or not.\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nTIMESCALEDB_CONF_OPTS += -DUSE_OPENSSL=1\nelse\nTIMESCALEDB_CONF_OPTS += -DUSE_OPENSSL=0\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/tinc/Config.in",
    "content": "config BR2_PACKAGE_TINC\n\tbool \"tinc\"\n\tdepends on !BR2_STATIC_LIBS # tinc requires libdl for OpenSSL\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LZO\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  tinc is a Virtual Private Network (VPN) daemon that uses\n\t  tunnelling and encryption to create a secure private network\n\t  between hosts on the Internet.\n\n\t  http://www.tinc-vpn.org/\n\ncomment \"tinc needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/tinc/tinc.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  40f73bb3facc480effe0e771442a706ff0488edea7a5f2505d4ccb2aa8163108 tinc-1.0.36.tar.gz\nsha256  3b37ffbf3459f2aceeef169aa65ee8b111ac1f8ba24a2a1b90b079678a9c7faa COPYING\nsha256  9bf76a8aa304d807df20bf3d221c21d259764be63e39b58f299b80ba3ac14b5b COPYING.README\n"
  },
  {
    "path": "package/tinc/tinc.mk",
    "content": "################################################################################\n#\n# tinc\n#\n################################################################################\n\nTINC_VERSION = 1.0.36\nTINC_SITE = http://www.tinc-vpn.org/packages\nTINC_DEPENDENCIES = lzo openssl zlib\nTINC_LICENSE = GPL-2.0+ with OpenSSL exception\nTINC_LICENSE_FILES = COPYING COPYING.README\nTINC_CPE_ID_VENDOR = tinc-vpn\nTINC_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -std=c99\"\n\nifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),)\nTINC_CONF_ENV += \\\n\tax_cv_check_cflags___fPIE=no \\\n\tax_cv_check_ldflags___pie=no\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nTINC_DEPENDENCIES += systemd\nTINC_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tini/Config.in",
    "content": "config BR2_PACKAGE_TINI\n\tbool \"tini\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  tini is a simple but valid init binary to\n\t  act as PID 1 for containers.\n\n\t  https://github.com/krallin/tini\n\nif BR2_PACKAGE_TINI\n\nconfig BR2_PACKAGE_TINI_MINIMAL\n\tbool \"build minimal variant\"\n\thelp\n\t  Disables argument parsing and verbose output.\n\nendif\n"
  },
  {
    "path": "package/tini/tini.hash",
    "content": "# Locally computed\nsha256  e5f46bca81266bdd511cf08018d66866870531794569c04f9b45f50dd23c28b0  LICENSE\nsha256  0fd35a7030052acd9f58948d1d900fe1e432ee37103c5561554408bdac6bbf0d  tini-0.19.0.tar.gz\n"
  },
  {
    "path": "package/tini/tini.mk",
    "content": "################################################################################\n#\n# tini\n#\n################################################################################\n\nTINI_VERSION = 0.19.0\nTINI_SITE = $(call github,krallin,tini,v$(TINI_VERSION))\nTINI_LICENSE = MIT\nTINI_LICENSE_FILES = LICENSE\nTINI_CPE_ID_VENDOR = tini_project\n\nTINI_CFLAGS = $(TARGET_CFLAGS) \\\n\t-static \\\n\t-DTINI_VERSION=\\\"$(TINI_VERSION)\\\" \\\n\t-DTINI_GIT=\\\"\\\"\n\nifeq ($(BR2_PACKAGE_TINI_MINIMAL),y)\nTINI_CFLAGS += -DTINI_MINIMAL\nendif\n\ndefine TINI_CONFIGURE_CMDS\n\tprintf \"#pragma once\\n\" > $(@D)/src/tiniConfig.h\nendef\n\ndefine TINI_BUILD_CMDS\n\tmkdir -p $(@D)/bin\n\t$(TARGET_CC) $(TINI_CFLAGS) \\\n\t\t-o $(@D)/bin/tini $(@D)/src/tini.c\nendef\n\ndefine TINI_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/bin/tini $(TARGET_DIR)/usr/bin/tini\n\tln -sf tini $(TARGET_DIR)/usr/bin/docker-init\nendef\n\n# Tini's CMakeLists.txt is not suitable for Buildroot.\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/tinyalsa/0001-disable-doxygen-usage.patch",
    "content": "Disable doxygen usage\n\nIn order to avoid a dependency on doxygen on the build machine, this\npatch adjusts the main Makefile to not build and install the\ndocumentation.\n\n[Vincent: tweak patch for 1.1.1 version]\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n\ndiff -rup a/Makefile b/Makefile\n--- a/Makefile\t2017-05-24 05:23:57.000000000 +0100\n+++ b/Makefile\t2017-05-25 10:35:20.781747053 +0100\n@@ -11,14 +11,12 @@ export MANDIR ?= $(PREFIX)/share/man\n all:\n \t$(MAKE) -C src\n \t$(MAKE) -C utils\n-\t$(MAKE) -C doxygen\n \t$(MAKE) -C examples\n \n .PHONY: clean\n clean:\n \t$(MAKE) -C src clean\n \t$(MAKE) -C utils clean\n-\t$(MAKE) -C doxygen clean\n \t$(MAKE) -C examples clean\n \n .PHONY: install\n@@ -30,5 +28,4 @@ install:\n \tinstall include/tinyalsa/version.h $(DESTDIR)$(INCDIR)/\n \t$(MAKE) -C src install\n \t$(MAKE) -C utils install\n-\t$(MAKE) -C doxygen install\n \n"
  },
  {
    "path": "package/tinyalsa/0002-interval.h-add-missing-header.patch",
    "content": "From 685e530d8a0063134642371eaacd01fee2f62d85 Mon Sep 17 00:00:00 2001\nFrom: Baruch Siach <baruch@tkos.co.il>\nDate: Fri, 2 Jun 2017 12:19:03 +0300\nSubject: [PATCH] interval.h: add missing header\n\nThe ssize_t type requires the unistd.h header. This fixes build with musl\nlibc:\n\nIn file included from ../include/tinyalsa/limits.h:32:0,\n                 from limits.c:1:\n../include/tinyalsa/interval.h:38:2: error: unknown type name 'ssize_t'\n  ssize_t max;\n  ^\n\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n---\nUpstream status: https://github.com/tinyalsa/tinyalsa/pull/98\n\n include/tinyalsa/interval.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/include/tinyalsa/interval.h b/include/tinyalsa/interval.h\nindex 3f6f3dce5d90..068571df5a63 100644\n--- a/include/tinyalsa/interval.h\n+++ b/include/tinyalsa/interval.h\n@@ -30,6 +30,7 @@\n #define TINYALSA_INTERVAL_H\n \n #include <stdlib.h>\n+#include <unistd.h>\n \n /** A closed range signed interval. */\n \n-- \n2.11.0\n\n"
  },
  {
    "path": "package/tinyalsa/Config.in",
    "content": "config BR2_PACKAGE_TINYALSA\n\tbool \"tinyalsa\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  a small library to interface with ALSA in the Linux kernel\n\n\t  The aims are:\n\n\t  - Provide a basic pcm and mixer API\n\t  - If it's not absolutely needed, don't add it to the API\n\t  - Avoid supporting complex and unnecessary operations that\n\t    could be dealt with at a higher level\n\n\t  https://github.com/tinyalsa/tinyalsa\n\ncomment \"tinyalsa needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/tinyalsa/tinyalsa.hash",
    "content": "# locally computed\nsha256  d92b438cea348ae316c4b2cbf367b4f01ed821a947e6a34d813624e9e3c936c1  tinyalsa-1.1.1.tar.gz\nsha256  ca2b89a68c33fba3c8bcaec96f32907e2ede0eb33688ae61d29ec49732158f6d  NOTICE\n"
  },
  {
    "path": "package/tinyalsa/tinyalsa.mk",
    "content": "################################################################################\n#\n# tinyalsa\n#\n################################################################################\n\nTINYALSA_VERSION = 1.1.1\nTINYALSA_SITE = $(call github,tinyalsa,tinyalsa,$(TINYALSA_VERSION))\nTINYALSA_LICENSE = BSD-3-Clause\nTINYALSA_LICENSE_FILES = NOTICE\nTINYALSA_INSTALL_STAGING = YES\n\ndefine TINYALSA_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE=\"$(TARGET_CROSS)\" -C $(@D)\nendef\n\ndefine TINYALSA_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\t\t-C $(@D) \\\n\t\tPREFIX=\"/usr\" \\\n\t\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\t\tDESTDIR=\"$(STAGING_DIR)\" install\nendef\n\ndefine TINYALSA_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) \\\n\t\t-C $(@D) \\\n\t\tPREFIX=\"/usr\" \\\n\t\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\t\tDESTDIR=\"$(TARGET_DIR)\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/tinycbor/Config.in",
    "content": "config BR2_PACKAGE_TINYCBOR\n\tbool \"tinycbor\"\n\thelp\n\t  Concise Binary Object Representation (CBOR) Library\n\n\t  https://github.com/01org/tinycbor\n"
  },
  {
    "path": "package/tinycbor/tinycbor.hash",
    "content": "# Locally computed:\nsha256  e63668a71fd6d7abf1727dc31682ec7f107599a3c024a445c3e5da6af9328983  tinycbor-0.5.4.tar.gz\nsha256  3c6ba0b5bfa7830505301ffb336a17b0748e0d61c4d34216e9dc98f10e40395e  LICENSE\n"
  },
  {
    "path": "package/tinycbor/tinycbor.mk",
    "content": "################################################################################\n#\n# tinycbor\n#\n################################################################################\n\nTINYCBOR_VERSION = 0.5.4\nTINYCBOR_SITE = $(call github,intel,tinycbor,v$(TINYCBOR_VERSION))\nTINYCBOR_LICENSE = MIT\nTINYCBOR_LICENSE_FILES = LICENSE\n\nTINYCBOR_DEPENDENCIES = host-pkgconf\nTINYCBOR_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_CJSON),y)\nTINYCBOR_DEPENDENCIES += cjson\nendif\n\nTINYCBOR_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) V=1\n\nifeq ($(BR2_STATIC_LIBS),y)\nTINYCBOR_MAKE_OPTS += BUILD_STATIC=1 BUILD_SHARED=0\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nTINYCBOR_MAKE_OPTS += BUILD_STATIC=1 BUILD_SHARED=1\nelse ifeq ($(BR2_SHARED_LIBS),y)\nTINYCBOR_MAKE_OPTS += BUILD_STATIC=0 BUILD_SHARED=1\nendif\n\n# disabled parallel build because of build failures while\n# producing the .config file\ndefine TINYCBOR_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) $(TINYCBOR_MAKE_OPTS) -C $(@D)\nendef\n\ndefine TINYCBOR_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TINYCBOR_MAKE_OPTS) -C $(@D) \\\n\t\tDESTDIR=$(STAGING_DIR) prefix=/usr install\nendef\n\ndefine TINYCBOR_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TINYCBOR_MAKE_OPTS) -C $(@D) \\\n\t\tDESTDIR=$(TARGET_DIR) prefix=/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/tinydtls/0001-sha2-sha2.c-fix-build-on-big-endian.patch",
    "content": "From 608738ccad9ac3743ccd535bde1e84f401e6176f Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 20 Jun 2020 12:50:40 +0200\nSubject: [PATCH] sha2/sha2.c: fix build on big endian\n\nBuild is broken since 865ec9ba1d44e629c1107c299aebd20e901a19ff because\ntmp is undefined in put32be and put64be:\n\nsha2.c: In function 'put32be':\nsha2.c:177:34: error: 'tmp' undeclared (first use in this function)\n  MEMCPY_BCOPY(data, &val, sizeof(tmp));\n                                  ^~~\n\nFix this error by replacing tmp by val\n\nMoreover, move MEMCPY_BCOPY before its usage or linking step will fail\n\nFixes:\n - http://autobuild.buildroot.org/results/e8704e02fdede7b63e22da552292977b23380b32\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream: https://github.com/eclipse/tinydtls/commit/78a2d32f47165eda10cbf8f5cf79f86fa1c4872b]\n---\n sha2/sha2.c | 58 ++++++++++++++++++++++++++---------------------------\n 1 file changed, 29 insertions(+), 29 deletions(-)\n\ndiff --git a/sha2/sha2.c b/sha2/sha2.c\nindex cb6d90f..5c794c6 100644\n--- a/sha2/sha2.c\n+++ b/sha2/sha2.c\n@@ -114,6 +114,33 @@\n #error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN\n #endif\n \n+/*\n+ * Macros for copying blocks of memory and for zeroing out ranges\n+ * of memory.  Using these macros makes it easy to switch from\n+ * using memset()/memcpy() and using bzero()/bcopy().\n+ *\n+ * Please define either SHA2_USE_MEMSET_MEMCPY or define\n+ * SHA2_USE_BZERO_BCOPY depending on which function set you\n+ * choose to use:\n+ */\n+#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY)\n+/* Default to memset()/memcpy() if no option is specified */\n+#define\tSHA2_USE_MEMSET_MEMCPY\t1\n+#endif\n+#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY)\n+/* Abort with an error if BOTH options are defined */\n+#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both!\n+#endif\n+\n+#ifdef SHA2_USE_MEMSET_MEMCPY\n+#define MEMSET_BZERO(p,l)\tmemset((p), 0, (l))\n+#define MEMCPY_BCOPY(d,s,l)\tmemcpy((d), (s), (l))\n+#endif\n+#ifdef SHA2_USE_BZERO_BCOPY\n+#define MEMSET_BZERO(p,l)\tbzero((p), (l))\n+#define MEMCPY_BCOPY(d,s,l)\tbcopy((s), (d), (l))\n+#endif\n+\n /*\n  * Define the followingsha2_* types to types of the correct length on\n  * the native archtecture.   Most BSD systems and Linux define u_intXX_t\n@@ -174,7 +201,7 @@ static inline void put32be(sha2_byte* data, sha2_word32 val)\n \tdata[1] = val; val >>= 8;\n \tdata[0] = val;\n #else /* BYTE_ORDER != LITTLE_ENDIAN */\n-\tMEMCPY_BCOPY(data, &val, sizeof(tmp));\n+\tMEMCPY_BCOPY(data, &val, sizeof(val));\n #endif /* BYTE_ORDER != LITTLE_ENDIAN */\n }\n \n@@ -209,7 +236,7 @@ static inline void put64be(sha2_byte* data, sha2_word64 val)\n \tdata[1] = val; val >>= 8;\n \tdata[0] = val;\n #else /* BYTE_ORDER != LITTLE_ENDIAN */\n-\tMEMCPY_BCOPY(data, &val, sizeof(tmp));\n+\tMEMCPY_BCOPY(data, &val, sizeof(val));\n #endif /* BYTE_ORDER != LITTLE_ENDIAN */\n }\n \n@@ -225,33 +252,6 @@ static inline void put64be(sha2_byte* data, sha2_word64 val)\n \t} \\\n }\n \n-/*\n- * Macros for copying blocks of memory and for zeroing out ranges\n- * of memory.  Using these macros makes it easy to switch from\n- * using memset()/memcpy() and using bzero()/bcopy().\n- *\n- * Please define either SHA2_USE_MEMSET_MEMCPY or define\n- * SHA2_USE_BZERO_BCOPY depending on which function set you\n- * choose to use:\n- */\n-#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY)\n-/* Default to memset()/memcpy() if no option is specified */\n-#define\tSHA2_USE_MEMSET_MEMCPY\t1\n-#endif\n-#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY)\n-/* Abort with an error if BOTH options are defined */\n-#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both!\n-#endif\n-\n-#ifdef SHA2_USE_MEMSET_MEMCPY\n-#define MEMSET_BZERO(p,l)\tmemset((p), 0, (l))\n-#define MEMCPY_BCOPY(d,s,l)\tmemcpy((d), (s), (l))\n-#endif\n-#ifdef SHA2_USE_BZERO_BCOPY\n-#define MEMSET_BZERO(p,l)\tbzero((p), (l))\n-#define MEMCPY_BCOPY(d,s,l)\tbcopy((s), (d), (l))\n-#endif\n-\n \n /*** THE SIX LOGICAL FUNCTIONS ****************************************/\n /*\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/tinydtls/Config.in",
    "content": "config BR2_PACKAGE_TINYDTLS\n\tbool \"tinydtls\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  tinydtls is a library for Datagram Transport Layer Security\n\t  (DTLS) covering both the client and the server state\n\t  machine.  It is implemented in C and provides support for\n\t  the mandatory cipher suites specified in CoAP.\n\n\t  https://projects.eclipse.org/projects/iot.tinydtls\n\ncomment \"tinydtls needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/tinydtls/tinydtls.hash",
    "content": "# Locally computed:\nsha256  af73742835b5a66dc0b4a9c126ca8243b5db2986b4969d76e2b4531aa7e13f67  tinydtls-0.9-rc1.tar.gz\nsha256  7e906fb56da52bb6bba38e77eec00e7d37fe65b0b7b28c4bf68ff036573d0de5  LICENSE\n"
  },
  {
    "path": "package/tinydtls/tinydtls.mk",
    "content": "################################################################################\n#\n# tinydtls\n#\n################################################################################\n\nTINYDTLS_VERSION = 0.9-rc1\nTINYDTLS_SITE = $(call github,eclipse,tinydtls,v$(TINYDTLS_VERSION))\nTINYDTLS_LICENSE = EPL-1.0 or EDL-1.0\nTINYDTLS_LICENSE_FILES = LICENSE\nTINYDTLS_CPE_ID_VENDOR = eclipse\nTINYDTLS_INSTALL_STAGING = YES\nTINYDTLS_DEPENDENCIES = host-pkgconf\n# From git\nTINYDTLS_AUTORECONF = YES\n# use inttypes.h data types instead of u_intXX_t for musl compatibility\nTINYDTLS_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -DSHA2_USE_INTTYPES_H\"\n\n# Fix build with automake >= 1.16.4\ndefine TINYDTLS_TOUCH_AR_LIB\n\ttouch $(@D)/ar-lib\nendef\nTINYDTLS_PRE_CONFIGURE_HOOKS += TINYDTLS_TOUCH_AR_LIB\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tinymembench/0001-arm-fix-build-on-Thumb-only-architectures.patch",
    "content": "From 034a3552e9700c6d424bd706db106f5bce1f5a5e Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Fri, 11 Nov 2016 21:49:39 +0100\nSubject: [PATCH] arm: fix build on Thumb-only architectures\n\nBuilding tinymembench for ARM Cortex-M currently fails, because the\narm-neon.S file contains ARM code that doesn't build on Thumb-only\narchitectures. To account for this and fix the build for Cortex-M,\nthis patch adjusts the compile time condition to also verify that the\narchitecture supports the ARM instruction set, by testing the\n__ARM_ARCH_ISA_ARM compiler define.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n arm-neon.S | 2 +-\n asm-opt.c  | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/arm-neon.S b/arm-neon.S\nindex 4db78ce..19c30ad 100644\n--- a/arm-neon.S\n+++ b/arm-neon.S\n@@ -21,7 +21,7 @@\n  * DEALINGS IN THE SOFTWARE.\n  */\n \n-#ifdef __arm__\n+#if defined(__arm__) && defined(__ARM_ARCH_ISA_ARM)\n \n .text\n .fpu neon\ndiff --git a/asm-opt.c b/asm-opt.c\nindex 9da4596..eba1183 100644\n--- a/asm-opt.c\n+++ b/asm-opt.c\n@@ -202,7 +202,7 @@ bench_info *get_asm_framebuffer_benchmarks(void)\n         return empty;\n }\n \n-#elif defined(__arm__)\n+#elif defined(__arm__) && defined(__ARM_ARCH_ISA_ARM)\n \n #include \"arm-neon.h\"\n \n-- \n2.7.4\n\n"
  },
  {
    "path": "package/tinymembench/Config.in",
    "content": "config BR2_PACKAGE_TINYMEMBENCH\n\tbool \"tinymembench\"\n\tdepends on !BR2_MIPS_NABI32 && !BR2_MIPS_NABI64\n\thelp\n\t  Tinymembench is a simple memory benchmark program, which\n\t  tries to measure the peak bandwidth of sequential memory\n\t  accesses and the latency of random memory accesses.\n\t  Bandwidth is measured by running different assembly code for\n\t  the aligned memory blocks and attempting different prefetch\n\t  strategies.\n\n\t  https://github.com/ssvb/tinymembench\n"
  },
  {
    "path": "package/tinymembench/tinymembench.hash",
    "content": "# Locally calculated\nsha256 e37a2682065b2778f2fa7f22bd59472f5ca2191be48503952ae020b8f023f23d  tinymembench-0.4.tar.gz\nsha256 8ba473aced4630aee2808efe17b53e904a9d68a9b3361de491717f9a4e75da39  LICENSE\n"
  },
  {
    "path": "package/tinymembench/tinymembench.mk",
    "content": "################################################################################\n#\n# tinymembench\n#\n################################################################################\n\nTINYMEMBENCH_VERSION = 0.4\nTINYMEMBENCH_SITE = $(call github,ssvb,tinymembench,v$(TINYMEMBENCH_VERSION))\nTINYMEMBENCH_LICENSE = MIT\nTINYMEMBENCH_LICENSE_FILES = LICENSE\n\ndefine TINYMEMBENCH_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine TINYMEMBENCH_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/tinymembench \\\n\t\t$(TARGET_DIR)/usr/bin/tinymembench\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/tinyproxy/Config.in",
    "content": "config BR2_PACKAGE_TINYPROXY\n\tbool \"tinyproxy\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Tinyproxy is a small, efficient HTTP/SSL proxy daemon released\n\t  under the GNU General Public License. Tinyproxy is very\n\t  useful in a small network setting, where a larger proxy would\n\t  be too resource intensive.\n\n\t  https://tinyproxy.github.io\n\ncomment \"tinyproxy needs a toolchain w/ threads, wchar\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/tinyproxy/tinyproxy.hash",
    "content": "# From https://github.com/tinyproxy/tinyproxy/releases/tag/1.11.0\nsha256  c1ec81cfc4c551d2c24e0227a5aeeaad8723bd9a39b61cd729e516b82eaa3f32  tinyproxy-1.11.0.tar.xz\n# locally computed\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING\n"
  },
  {
    "path": "package/tinyproxy/tinyproxy.mk",
    "content": "################################################################################\n#\n# tinyproxy\n#\n################################################################################\n\nTINYPROXY_VERSION = 1.11.0\nTINYPROXY_SITE = https://github.com/tinyproxy/tinyproxy/releases/download/$(TINYPROXY_VERSION)\nTINYPROXY_SOURCE = tinyproxy-$(TINYPROXY_VERSION).tar.xz\nTINYPROXY_LICENSE = GPL-2.0+\nTINYPROXY_LICENSE_FILES = COPYING\nTINYPROXY_CPE_ID_VENDOR = tinyproxy_project\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tinyssh/Config.in",
    "content": "config BR2_PACKAGE_TINYSSH\n\tbool \"tinyssh\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  TinySSH is a minimalistic SSH server which implements only\n\t  a subset of SSHv2 features.\n\n\t  https://tinyssh.org\n"
  },
  {
    "path": "package/tinyssh/tinyssh.hash",
    "content": "# locally computed\nsha256  2a051437878998c7782d9d38ef13e5e7a76435ae6b9c3e9ec492c3a567bd6314  tinyssh-20210601.tar.gz\nsha256  b5dc19477e29f4111e1c16cd89ec0782f5a07b1a30e3bdb7c155425b81b12c46  LICENCE\n"
  },
  {
    "path": "package/tinyssh/tinyssh.mk",
    "content": "################################################################################\n#\n# tinyssh\n#\n################################################################################\n\nTINYSSH_VERSION = 20210601\nTINYSSH_SITE = $(call github,janmojzis,tinyssh,$(TINYSSH_VERSION))\nTINYSSH_LICENSE = Public Domain, CC0-1.0\nTINYSSH_LICENSE_FILES = LICENCE\n\ndefine TINYSSH_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) CC=\"$(TARGET_CC)\" $(MAKE) -C $(@D) cross-compile\nendef\n\ndefine TINYSSH_INSTALL_TARGET_CMDS\n\t$(MAKE) DESTDIR=\"$(TARGET_DIR)\" -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/tinyxml/Config.in",
    "content": "config BR2_PACKAGE_TINYXML\n\tbool \"tinyxml\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  TinyXML is a simple, small, C++ XML parser that can be\n\t  easily integrating into other programs.\n\n\t  https://github.com/leethomason/tinyxml2\n\ncomment \"tinyxml needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/tinyxml/tinyxml.hash",
    "content": "# Locally calculated\nsha256\t8164c9ad48b9028667768a584d62f7760cfbfb90d0dd6214ad174403058da10c\ttinyxml-2.6.2_2.tar.gz\nsha256\ta65b8363834ccbe31ab7b49dcba723ed204622df30326793e0121435624c1a8d\tREADME\n"
  },
  {
    "path": "package/tinyxml/tinyxml.mk",
    "content": "################################################################################\n#\n# tinyxml\n#\n################################################################################\n\nTINYXML_VERSION = 2.6.2_2\nTINYXML_SITE = http://mirrors.xbmc.org/build-deps/sources\n# AUTORECONF is needed because the XBMC's version of TinyXML contains a\n# configure.ac which is not present in mainline.\nTINYXML_AUTORECONF = YES\nTINYXML_INSTALL_STAGING = YES\nTINYXML_LICENSE = Zlib\nTINYXML_LICENSE_FILES = README\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tinyxml2/Config.in",
    "content": "config BR2_PACKAGE_TINYXML2\n\tbool \"tinyxml2\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  TinyXML-2 is a simple, small, efficient, C++ XML parser that\n\t  can be easily integrating into other programs.\n\n\t  http://www.grinninglizard.com/tinyxml2/index.html\n\ncomment \"tinyxml2 needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/tinyxml2/tinyxml2.hash",
    "content": "# Locally calculated\nsha256 6ce574fbb46751842d23089485ae73d3db12c1b6639cda7721bf3a7ee862012c  tinyxml2-8.0.0.tar.gz\nsha256 9332252e9b9e46db8285d4a3f0bf25f139bf1dca6781b956d57f2302efca6432  LICENSE.txt\n"
  },
  {
    "path": "package/tinyxml2/tinyxml2.mk",
    "content": "################################################################################\n#\n# tinyxml2\n#\n################################################################################\n\nTINYXML2_VERSION = 8.0.0\nTINYXML2_SITE = $(call github,leethomason,tinyxml2,$(TINYXML2_VERSION))\nTINYXML2_LICENSE = Zlib\nTINYXML2_LICENSE_FILES = LICENSE.txt\nTINYXML2_INSTALL_STAGING = YES\nTINYXML2_CPE_ID_VENDOR = tinyxml2_project\n\nifeq ($(BR2_STATIC_LIBS),y)\nTINYXML2_CONF_OPTS += -DBUILD_STATIC_LIBS=ON\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/tio/Config.in",
    "content": "config BR2_PACKAGE_TIO\n\tbool \"tio\"\n\tdepends on !BR2_sparc64 && !BR2_sparc\n\thelp\n\t  \"tio\" is a simple TTY terminal application which features a\n\t  straightforward commandline interface to easily connect to\n\t  TTY devices for basic input/output.\n\n\t  https://tio.github.io/\n\n# tio is disabled for sparc and sparc64 architectures because it fails\n# to build with a redefinition of 'struct termio' error, with no proper\n# fix or workaround for now\ncomment \"tio is disabled for sparc and sparc64 architectures\"\n\tdepends on BR2_sparc64 || BR2_sparc\n"
  },
  {
    "path": "package/tio/tio.hash",
    "content": "# Locally computed:\nsha256 a8f5ed6994cacb96780baa416b19e5a6d7d67e8c162a8ea4fd9eccd64984ae44  tio-1.32.tar.xz\n\n# Hash for license files:\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/tio/tio.mk",
    "content": "################################################################################\n#\n# tio\n#\n################################################################################\n\nTIO_VERSION = 1.32\nTIO_SOURCE = tio-$(TIO_VERSION).tar.xz\nTIO_SITE = https://github.com/tio/tio/releases/download/v$(TIO_VERSION)\nTIO_LICENSE = GPL-2.0+\nTIO_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tk/Config.in",
    "content": "config BR2_PACKAGE_TK\n\tbool \"tk\"\n\tdepends on BR2_USE_MMU # tcl\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # tcl\n\tdepends on !BR2_STATIC_LIBS # tcl\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_TCL\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXFT\n\thelp\n\t  A windowing toolkit for use with tcl\n\n\t  http://www.tcl.tk\n\ncomment \"tk needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/tk/tk.hash",
    "content": "# Locally calculated\nsha256 d62c371a71b4744ed830e3c21d27968c31dba74dd2c45f36b9b071e6d88eb19d  tk8.6.6-src.tar.gz\nsha256 2cde822b93ca16ae535c954b7dfe658b4ad10df2a193628d1b358f1765e8b198  license.terms\n"
  },
  {
    "path": "package/tk/tk.mk",
    "content": "################################################################################\n#\n# tk\n#\n################################################################################\n\nTK_VERSION_MAJOR = 8.6\nTK_VERSION = $(TK_VERSION_MAJOR).6\nTK_SOURCE = tk$(TK_VERSION)-src.tar.gz\nTK_SITE = http://downloads.sourceforge.net/project/tcl/Tcl/$(TK_VERSION)\nTK_LICENSE = TCL\nTK_LICENSE_FILES = license.terms\nTK_SUBDIR = unix\nTK_INSTALL_STAGING = YES\n\nTK_DEPENDENCIES = tcl xlib_libX11 xlib_libXft\n\n# hopefully our strtod is not buggy\nTK_CONF_ENV = tcl_cv_strtod_buggy=no\n\nTK_CONF_OPTS = --disable-rpath \\\n\t--with-tcl=$(BUILD_DIR)/tcl-$(TCL_VERSION)/unix \\\n\t--x-includes=$(STAGING_DIR)/usr/include \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib\n\ndefine TK_WISH_SYMLINK\n\tln -sf /usr/bin/wish$(TK_VERSION_MAJOR) $(TARGET_DIR)/usr/bin/wish\nendef\nTK_POST_INSTALL_TARGET_HOOKS += TK_WISH_SYMLINK\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tmux/Config.in",
    "content": "config BR2_PACKAGE_TMUX\n\tbool \"tmux\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR # mbtowc()\n\tdepends on BR2_ENABLE_LOCALE # runtime\n\tselect BR2_PACKAGE_LIBEVENT\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  tmux is a terminal multiplexer, it enables a number of\n\t  terminals (or windows) to be accessed and controlled from a\n\t  single terminal.\n\n\t  NOTE: tmux needs a working UTF-8 locale (BR2_GENERATE_LOCALE)\n\n\t  https://tmux.github.io/\n\ncomment \"tmux needs a toolchain w/ wchar, locale\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_ENABLE_LOCALE\n"
  },
  {
    "path": "package/tmux/tmux.hash",
    "content": "# Locally computed:\nsha256  918f7220447bef33a1902d4faff05317afd9db4ae1c9971bef5c787ac6c88386  tmux-3.1c.tar.gz\nsha256  c031bd37f464c534277814f6aa38686fa023d094261d57fd2545ad592bb53ccd  COPYING\n"
  },
  {
    "path": "package/tmux/tmux.mk",
    "content": "################################################################################\n#\n# tmux\n#\n################################################################################\n\nTMUX_VERSION = 3.1c\nTMUX_SITE = https://github.com/tmux/tmux/releases/download/$(TMUX_VERSION)\nTMUX_LICENSE = ISC\nTMUX_LICENSE_FILES = COPYING\nTMUX_CPE_ID_VENDOR = tmux_project\nTMUX_DEPENDENCIES = libevent ncurses host-pkgconf\n\n# Add /usr/bin/tmux to /etc/shells otherwise some login tools like dropbear\n# can reject the user connection. See man shells.\ndefine TMUX_ADD_TMUX_TO_SHELLS\n\tgrep -qsE '^/usr/bin/tmux$$' $(TARGET_DIR)/etc/shells \\\n\t\t|| echo \"/usr/bin/tmux\" >> $(TARGET_DIR)/etc/shells\nendef\nTMUX_TARGET_FINALIZE_HOOKS += TMUX_ADD_TMUX_TO_SHELLS\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tor/0001-Fix-static-linking-with-OpenSSL.patch",
    "content": "From ba6b8ee5b6dee19493a150c3715b0e202440d206 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Thu, 24 Jan 2019 18:19:51 +0100\nSubject: [PATCH] Fix static linking with OpenSSL\n\nAdjust link order of libz to solve bug with static linking\nand remove host paths when looking for openssl.\n\n[Vincent:\n - Adapt the patch to make it apply on the new version.]\n[Bernd: rebased for tor-0.2.7.6, 0.2.8.10, 0.2.9.9, 0.3.1.7, 0.3.2.10,\n        0.3.4.8, 0.3.5.7, 0.4.4.5, 0.4.5.6 & 0.4.6.7]\n[Fabrice: fix detection of openssl functions in 0.3.5.8]\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac         | 4 ++--\n src/test/include.am  | 8 ++++----\n src/tools/include.am | 4 ++--\n 4 files changed, 9 insertions(+), 9 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 05e1392cf..580befa6b 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1074,7 +1074,7 @@ AC_ARG_WITH(ssl-dir,\n   ])\n \n AC_MSG_NOTICE([Now, we'll look for OpenSSL >= 1.0.1])\n-TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto $TOR_LIB_GDI $TOR_LIB_WS32 $TOR_LIB_CRYPT32],\n+TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto -lz $TOR_LIB_GDI $TOR_LIB_WS32 $TOR_LIB_CRYPT32],\n     [#include <openssl/ssl.h>\n      char *getenv(const char *);],\n     [struct ssl_cipher_st;\n@@ -1104,7 +1104,7 @@ dnl Now check for particular openssl functions.\n save_LIBS=\"$LIBS\"\n save_LDFLAGS=\"$LDFLAGS\"\n save_CPPFLAGS=\"$CPPFLAGS\"\n-LIBS=\"$TOR_OPENSSL_LIBS $LIBS\"\n+LIBS=\"$TOR_OPENSSL_LIBS -lz $LIBS\"\n LDFLAGS=\"$TOR_LDFLAGS_openssl $LDFLAGS\"\n CPPFLAGS=\"$TOR_CPPFLAGS_openssl $CPPFLAGS\"\n \ndiff --git a/src/test/include.am b/src/test/include.am\nindex ecb768957..39a622e88 100644\n--- a/src/test/include.am\n+++ b/src/test/include.am\n@@ -399,8 +399,8 @@ src_test_test_ntor_cl_LDFLAGS = @TOR_LDFLAGS_zlib@ $(TOR_LDFLAGS_CRYPTLIB)\n src_test_test_ntor_cl_LDADD = \\\n \tlibtor.a \\\n \t$(rust_ldadd) \\\n-\t@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \\\n-\t$(TOR_LIBS_CRYPTLIB) @TOR_LIB_WS32@ @TOR_LIB_IPHLPAPI@ @TOR_LIB_SHLWAPI@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \\\n+\t@TOR_LIB_MATH@ \\\n+\t$(TOR_LIBS_CRYPTLIB) @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_IPHLPAPI@ @TOR_LIB_SHLWAPI@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \\\n \t@CURVE25519_LIBS@ @TOR_LZMA_LIBS@ @TOR_TRACE_LIBS@\n src_test_test_ntor_cl_AM_CPPFLAGS =\t       \\\n \t$(AM_CPPFLAGS)\n@@ -409,8 +409,8 @@\n src_test_test_hs_ntor_cl_LDFLAGS = @TOR_LDFLAGS_zlib@ $(TOR_LDFLAGS_CRYPTLIB)\n src_test_test_hs_ntor_cl_LDADD = \\\n \tlibtor.a \\\n-\t@TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \\\n-\t$(TOR_LIBS_CRYPTLIB) @TOR_LIB_WS32@ @TOR_LIB_IPHLPAPI@ @TOR_LIB_SHLWAPI@ @TOR_LIB_GDI@ \\\n+\t@TOR_LIB_MATH@ \\\n+\t$(TOR_LIBS_CRYPTLIB) @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_IPHLPAPI@ @TOR_LIB_SHLWAPI@ @TOR_LIB_GDI@ \\\n         @CURVE25519_LIBS@ @TOR_TRACE_LIBS@\n src_test_test_hs_ntor_cl_AM_CPPFLAGS =\t       \\\n \t$(AM_CPPFLAGS)\ndiff --git a/src/tools/include.am b/src/tools/include.am\nindex f7aa7e0d1..4c4e8aa7a 100644\n--- a/src/tools/include.am\n+++ b/src/tools/include.am\n@@ -35,7 +35,7 @@ src_tools_tor_gencert_LDADD = \\\n \t$(TOR_CRYPTO_LIBS) \\\n \t$(TOR_UTIL_LIBS) \\\n \t$(rust_ldadd) \\\n-\t@TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ $(TOR_LIBS_CRYPTLIB) \\\n+\t@TOR_LIB_MATH@ $(TOR_LIBS_CRYPTLIB) @TOR_ZLIB_LIBS@ \\\n \t@TOR_LIB_WS32@ @TOR_LIB_IPHLPAPI@ @TOR_LIB_SHLWAPI@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ @CURVE25519_LIBS@\n endif\n \n@@ -45,7 +45,7 @@ src_tools_tor_print_ed_signing_cert_LDADD = \\\n \tsrc/trunnel/libor-trunnel.a \\\n         $(TOR_CRYPTO_LIBS) \\\n         $(TOR_UTIL_LIBS) \\\n-\t@TOR_LIB_MATH@ $(TOR_LIBS_CRYPTLIB) \\\n+\t@TOR_LIB_MATH@ $(TOR_LIBS_CRYPTLIB) @TOR_ZLIB_LIBS@ \\\n \t@TOR_LIB_WS32@ @TOR_LIB_USERENV@ @TOR_LIB_SHLWAPI@ @TOR_LIB_GDI@\n \n if USE_NSS\n-- \n2.20.1\n"
  },
  {
    "path": "package/tor/Config.in",
    "content": "config BR2_PACKAGE_TOR\n\tbool \"tor\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_PACKAGE_LIBEVENT\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Tor is free software and an open network that helps you\n\t  defend against traffic analysis, a form of network\n\t  surveillance that threatens personal freedom and privacy,\n\t  confidential business activities and relationships, and\n\t  state security.\n\n\t  https://www.torproject.org\n\ncomment \"tor needs a toolchain w/ NPTL\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL\n"
  },
  {
    "path": "package/tor/tor.hash",
    "content": "# Locally computed\nsha256  15ce1a37b4cc175b07761e00acdcfa2c08f0d23d6c3ab9c97c464bd38cc5476a  tor-0.4.6.8.tar.gz\nsha256  47b54ed17e8fdcab3c44729a1789a09b208f9a63a845a7e50def9df729eebad0  LICENSE\n"
  },
  {
    "path": "package/tor/tor.mk",
    "content": "################################################################################\n#\n# tor\n#\n################################################################################\n\nTOR_VERSION = 0.4.6.8\nTOR_SITE = https://dist.torproject.org\nTOR_LICENSE = BSD-3-Clause\nTOR_LICENSE_FILES = LICENSE\nTOR_CPE_ID_VENDOR = torproject\nTOR_SELINUX_MODULES = tor\nTOR_DEPENDENCIES = libevent openssl zlib\nTOR_AUTORECONF = YES\n\nTOR_CONF_OPTS = \\\n\t--disable-gcc-hardening \\\n\t--disable-unittests \\\n\t--with-libevent-dir=$(STAGING_DIR)/usr \\\n\t--with-openssl-dir=$(STAGING_DIR)/usr \\\n\t--with-zlib-dir=$(STAGING_DIR)/usr\n\nifeq ($(BR2_STATIC_LIBS),y)\nTOR_CONF_OPTS += \\\n\t--enable-static-libevent \\\n\t--enable-static-openssl \\\n\t--enable-static-tor \\\n\t--enable-static-zlib\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nTOR_DEPENDENCIES += libcap\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nTOR_CONF_OPTS += --enable-systemd\nTOR_DEPENDENCIES += host-pkgconf systemd\nelse\nTOR_CONF_OPTS += --disable-systemd\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nTOR_CONF_OPTS += --enable-lzma\nTOR_DEPENDENCIES += host-pkgconf xz\nelse\nTOR_CONF_OPTS += --disable-lzma\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nTOR_CONF_OPTS += --enable-zstd\nTOR_DEPENDENCIES += host-pkgconf zstd\nelse\nTOR_CONF_OPTS += --disable-zstd\nendif\n\nifeq ($(BR2_arm)$(BR2_armeb)$(BR2_i386)$(BR2_x86_64)$(BR2_PACKAGE_LIBSECCOMP),yy)\nTOR_CONF_OPTS += --enable-seccomp\nTOR_DEPENDENCIES += libseccomp\nelse\nTOR_CONF_OPTS += --disable-seccomp\nendif\n\n# uses gnu extensions\nTOR_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nTOR_CONF_ENV += LIBS=-latomic\nendif\n\ndefine TOR_INSTALL_CONF\n\t$(INSTALL) -D -m 644 $(@D)/src/config/torrc.minimal \\\n\t\t$(TARGET_DIR)/etc/tor/torrc\nendef\n\nTOR_POST_INSTALL_TARGET_HOOKS += TOR_INSTALL_CONF\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tovid/0001-manpage.patch",
    "content": "setup.py: disable man page to kill txt2tags SVN checkout dependency\n\nSigned-off-by: Steve Kenton <skenton@ou.edu>\n\n+diff -pruN tovid-3534.ori/setup.py tovid-3534/setup.py\n--- tovid-3534.ori/setup.py\t2013-04-14 09:52:08.000000000 -0500\n+++ tovid-3534/setup.py\t2015-03-21 09:39:14.880173176 -0500\n@@ -186,7 +186,7 @@ class BuildTovidInit (Command):\n \n # Build tovid-init with regular 'build' command\n build.sub_commands.append(('build_tovid_init', None))\n-build.sub_commands.append(('build_docs', None))\n+#build.sub_commands.append(('build_docs', None))\n \n # The actual setup\n setup(\n@@ -244,8 +244,6 @@ setup(\n             'src/tovid.ini',\n         ]),\n         # Manual page\n-        ('share/man/man1',\n-         ['docs/man/tovid.1']),\n         # Desktop shortcut\n         ('share/applications',\n          ['tovidgui.desktop',\n"
  },
  {
    "path": "package/tovid/Config.in",
    "content": "config BR2_PACKAGE_TOVID\n\tbool \"tovid\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # mpv\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC # mpv\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # mpv\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC # mpv\n\t# The below dependencies are runtime dependencies only\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # procps_ng\n\tselect BR2_PACKAGE_DVDAUTHOR\n\tselect BR2_PACKAGE_DVDRW_TOOLS\n\tselect BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_IMAGEMAGICK\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_MJPEGTOOLS\n\tselect BR2_PACKAGE_MPV\n\tselect BR2_PACKAGE_PROCPS_NG # pgrep and pkill\n\tselect BR2_PACKAGE_SOX\n\thelp\n\t  The tovid suite, also known simply as tovid, is a collection\n\t  of shell and Python scripts for creating DVDs and\n\t  (S)VCDs. It is pronounced \"to vid\" (because it converts to\n\t  video disc formats).\n\n\t  http://tovid.wikia.com/wiki/Installing_tovid\n\ncomment \"tovid needs a toolchain w/ threads, C++, wchar, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_USE_WCHAR\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC\n\ncomment \"tovid depends on python or python3\"\n\tdepends on !BR2_PACKAGE_PYTHON && !BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC\n"
  },
  {
    "path": "package/tovid/tovid.hash",
    "content": "# Locally calculated\nsha256 c03a746a3592a656bab0be4045da114a4231eb0f858d6c18503dac64049fbe48  tovid-87c676f4aadb7303d2cd921380b054bafa4b85bb.tar.gz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/tovid/tovid.mk",
    "content": "################################################################################\n#\n# tovid\n#\n################################################################################\n\nTOVID_VERSION = 87c676f4aadb7303d2cd921380b054bafa4b85bb\nTOVID_SITE = $(call github,tovid-suite,tovid,$(TOVID_VERSION))\nTOVID_LICENSE = GPL-2.0+\nTOVID_LICENSE_FILES = COPYING\nTOVID_SETUP_TYPE = distutils\n\n$(eval $(python-package))\n"
  },
  {
    "path": "package/tpm-tools/Config.in",
    "content": "config BR2_PACKAGE_TPM_TOOLS\n\tbool \"tpm-tools\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # trousers\n\tdepends on !BR2_STATIC_LIBS # trousers\n\tselect BR2_PACKAGE_TROUSERS\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Tools to manage and diagnose a TPM\n\n\t  http://trousers.sourceforge.net/\n\ncomment \"tpm-tools needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/tpm-tools/tpm-tools.hash",
    "content": "# http://sourceforge.net/projects/trousers/files/tpm-tools/1.3.9.1/\nsha1 c35cb031c6b5220dd1c8a03995654fdd12aa3031 tpm-tools-1.3.9.1.tar.gz\nmd5  1532293aa632a0eaa7e60df87c779855         tpm-tools-1.3.9.1.tar.gz\n\n# Locally calculated\nsha256 9cb714e2650826e2e932f65bc0ba9d61b927dc5fea47f2c2a2b64f0fdfcbfa68 tpm-tools-1.3.9.1.tar.gz\nsha256 7b47225a5b77cb7825efc6a4d7e0ac57864c790542cf92f5080ec2bf310c00e5 LICENSE\n"
  },
  {
    "path": "package/tpm-tools/tpm-tools.mk",
    "content": "################################################################################\n#\n# tpm-tools\n#\n################################################################################\n\nTPM_TOOLS_VERSION = 1.3.9.1\nTPM_TOOLS_SITE = http://downloads.sourceforge.net/project/trousers/tpm-tools/$(TPM_TOOLS_VERSION)\nTPM_TOOLS_LICENSE = Common Public License Version 1.0\nTPM_TOOLS_LICENSE_FILES = LICENSE\nTPM_TOOLS_DEPENDENCIES = trousers openssl $(TARGET_NLS_DEPENDENCIES)\n\nTPM_TOOLS_CONF_OPTS = --disable-pkcs11-support\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nTPM_TOOLS_CONF_ENV += LIBS='-liconv'\nendif\n\nifeq ($(BR2_arc770d)$(BR2_arc750d),y)\nTPM_TOOLS_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -mno-compact-casesi\"\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tpm2-abrmd/Config.in",
    "content": "config BR2_PACKAGE_TPM2_ABRMD\n\tbool \"tpm2-abrmd\"\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on !BR2_STATIC_LIBS # tpm2-tss\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_TPM2_TSS\n\thelp\n\t  A system daemon implementing the TPM2 access broker (TAB) &\n\t  Resource Manager (RM) spec from the TCG. It should be started\n\t  during the OS boot process. Communication between the daemon\n\t  and clients using the TPM is done with a combination of DBus\n\t  and Unix pipes.\n\n\t  The package also provides a client library for interacting\n\t  with the daemon via TPM Command Transmission Interface (TCTI).\n\t  It is intended for use with the SAPI library (libtss2-sys)\n\t  like any other TCTI.\n\n\t  https://github.com/tpm2-software/tpm2-abrmd\n\ncomment \"tpm2-abrmd needs a toolchain w/ dynamic library, wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/tpm2-abrmd/S80tpm2-abrmd",
    "content": "#!/bin/sh\n\nmy_name=\"$0\"\n\ncheck_required_files() {\n\t[ -f \"$1\" ] || {\n\t\techo \"$my_name: $1 is missing\"\n\t\texit 1\n\t}\n}\n\ncheck_device() {\n\tls -1 /dev/tpm[0-9]* > /dev/null 2>&1 || {\n\t\techo \"device driver not loaded, skipping.\"\n\t\texit 0\n\t}\n\tchown tss:tss /dev/tpm[0-9]* && chmod 600 /dev/tpm*\n}\n\nrm_stale_pidfile() {\n\tif [ -e \"$1\" ]; then\n\t\texe=\"/proc/$(cat \"$1\")/exe\"\n\t\t{ [ -s \"$exe\" ] && [ \"$(readlink -f \"$exe\")\" = \"$2\" ]; } || rm -f \"$1\"\n\tfi\n}\n\nstart() {\n\tprintf \"Starting tpm2-abrmd: \"\n\tcheck_device\n\trm_stale_pidfile /var/run/tpm2-abrmd.pid /usr/sbin/tpm2-abrmd\n\tstart-stop-daemon -S -q -o -b -m -p /var/run/tpm2-abrmd.pid -c tss:tss -x /usr/sbin/tpm2-abrmd -- ${DAEMON_OPTS} || {\n\t\techo \"FAIL\"\n\t\texit 1\n\t}\n\tpidof /usr/sbin/tpm2-abrmd > /var/run/tpm2-abrmd.pid\n\techo \"OK\"\n}\n\nstop() {\n\tprintf \"Stopping tpm2-abrmd: \"\n\tstart-stop-daemon -K -q -o -p /var/run/tpm2-abrmd.pid -u tss -x /usr/sbin/tpm2-abrmd || {\n\t\techo \"FAIL\"\n\t\texit 1\n\t}\n\trm_stale_pidfile /var/run/tpm2-abrmd.pid /usr/sbin/tpm2-abrmd\n\techo \"OK\"\n}\n\ncheck_required_files /etc/dbus-1/system.d/tpm2-abrmd.conf\n\n# defaults\nDAEMON_OPTS=\"--tcti=device --logger=syslog --max-connections=20\"\n\n# Read configuration variable file if it is present\n[ -r /etc/default/tpm2-abrmd ] && . /etc/default/tpm2-abrmd\n\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t       \t;;\n\tstop)\n\t   \tstop\n\t\t;;\n\trestart|reload)\n\t\tstop\n\t\tsleep 1\n\t\tstart\n\t\t;;\n\t*)\n\t\techo \"Usage: tpm2-abrmd {start|stop|restart|reload}\" >&2\n\t\texit 1\nesac\n\nexit 0\n"
  },
  {
    "path": "package/tpm2-abrmd/tpm2-abrmd.hash",
    "content": "# Locally computed:\nsha256  1e587808c6739079d59f124d9c1a0058f8d34dd84f1f656c946667fa0a181c48  tpm2-abrmd-2.3.3.tar.gz\nsha256  18c1bf4b1ba1fb2c4ffa7398c234d83c0d55475298e470ae1e5e3a8a8bd2e448  LICENSE\n"
  },
  {
    "path": "package/tpm2-abrmd/tpm2-abrmd.mk",
    "content": "################################################################################\n#\n# tpm2-abrmd\n#\n################################################################################\n\nTPM2_ABRMD_VERSION = 2.3.3\nTPM2_ABRMD_SITE = https://github.com/tpm2-software/tpm2-abrmd/releases/download/$(TPM2_ABRMD_VERSION)\nTPM2_ABRMD_LICENSE = BSD-2-Clause\nTPM2_ABRMD_LICENSE_FILES = LICENSE\nTPM2_ABRMD_SELINUX_MODULES = tpm2\nTPM2_ABRMD_INSTALL_STAGING = YES\nTPM2_ABRMD_DEPENDENCIES = libglib2 tpm2-tss host-pkgconf\nTPM2_ABRMD_CONF_OPTS = \\\n\t--disable-defaultflags \\\n\t--with-systemdsystemunitdir=$(if $(BR2_INIT_SYSTEMD),/usr/lib/systemd/system,no) \\\n\t--with-udevrulesdir=$(if $(BR2_PACKAGE_HAS_UDEV),/usr/lib/udev/rules.d,no)\n\n# uses C99 code but forgets to pass -std=c99 when --disable-defaultflags is used\nTPM2_ABRMD_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -std=c99\"\n\ndefine TPM2_ABRMD_INSTALL_INIT_SYSTEMD\n\t$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(TARGET_DIR) \\\n\t\tinstall-systemdpresetDATA install-systemdsystemunitDATA\nendef\n\ndefine TPM2_ABRMD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 $(TPM2_ABRMD_PKGDIR)/S80tpm2-abrmd \\\n\t\t$(TARGET_DIR)/etc/init.d/S80tpm2-abrmd\nendef\n\ndefine TPM2_ABRMD_USERS\n\ttss -1 tss -1 * - - - TPM2 Access Broker & Resource Management daemon\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tpm2-pkcs11/Config.in",
    "content": "config BR2_PACKAGE_TPM2_PKCS11\n\tbool \"tpm2-pkcs11\"\n\tdepends on !BR2_STATIC_LIBS # tpm2-tss\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBYAML\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_TPM2_TSS\n\thelp\n\t  A PKCS#11 interface for TPM2 hardware\n\n\t  https://github.com/tpm2-software/tpm2-pkcs11\n\ncomment \"tpm2-pkcs11 needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/tpm2-pkcs11/tpm2-pkcs11.hash",
    "content": "# Locally computed:\nsha256  078a445ed0e9f5009675a162b4b7b88f3520436cfbc791bb2249f37bd1f475bd  tpm2-pkcs11-1.7.0.tar.gz\nsha256  793aa007f793458434d7cc60b1c827053a399308658b32fcaa6023802adc22e1  LICENSE\n"
  },
  {
    "path": "package/tpm2-pkcs11/tpm2-pkcs11.mk",
    "content": "################################################################################\n#\n# tpm2-pkcs11\n#\n################################################################################\n\nTPM2_PKCS11_VERSION = 1.7.0\nTPM2_PKCS11_SITE = https://github.com/tpm2-software/tpm2-pkcs11/releases/download/$(TPM2_PKCS11_VERSION)\nTPM2_PKCS11_LICENSE = BSD-2-Clause\nTPM2_PKCS11_LICENSE_FILES = LICENSE\nTPM2_PKCS11_DEPENDENCIES = host-pkgconf libyaml openssl sqlite tpm2-tss\n\nTPM2_PKCS11_CONF_OPTS += \\\n\t\t--disable-hardening\n\n# Fix tpm.c:746:5: error: 'for' loop initial declarations are only allowed in C99 mode\n# Fix implicit declaration of function 'strnlen'\nTPM2_PKCS11_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -std=gnu99\"\n\n# do not build man pages\nTPM2_PKCS11_CONF_ENV += ac_cv_prog_PANDOC=''\n\n# tpm2-pkcs11 checks for tpm2-tools programs and errors out if not\n# found, even though they are only used by the (unused in Buildroot)\n# python-based tools\nTPM2_PKCS11_CONF_ENV += \\\n\tac_cv_prog_tpm2_createprimary=yes \\\n\tac_cv_prog_tpm2_create=yes \\\n\tac_cv_prog_tpm2_evictcontrol=yes \\\n\tac_cv_prog_tpm2_readpublic=yes \\\n\tac_cv_prog_tpm2_load=yes \\\n\tac_cv_prog_tpm2_loadexternal=yes \\\n\tac_cv_prog_tpm2_unseal=yes \\\n\tac_cv_prog_tpm2_encryptdecrypt=yes \\\n\tac_cv_prog_tpm2_sign=yes \\\n\tac_cv_prog_tpm2_getcap=yes \\\n\tac_cv_prog_tpm2_import=yes \\\n\tac_cv_prog_tpm2_changeauth=yes\n\nifeq ($(BR2_PACKAGE_P11_KIT),y)\nTPM2_PKCS11_DEPENDENCIES += p11-kit\nTPM2_PKCS11_CONF_OPTS += \\\n\t--with-p11kitconfigdir=/usr/share/p11-kit/modules\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tpm2-tools/0001-configure-make-build-gnu99.patch",
    "content": "From 521c3cc506b18c5c84d86e1e90d1daee39849b0c Mon Sep 17 00:00:00 2001\nFrom: William Roberts <william.c.roberts@intel.com>\nDate: Mon, 8 Feb 2021 11:57:28 -0600\nSubject: [PATCH] configure: make build gnu99\n\nSigned-off-by: William Roberts <william.c.roberts@intel.com>\n\n[Retrieved from:\nhttps://github.com/tpm2-software/tpm2-tools/commit/521c3cc506b18c5c84d86e1e90d1daee39849b0c\nand updated to set gnu99 instead of c99 as done by\nhttps://github.com/tpm2-software/tpm2-tools/commit/5d0267428e96989afce406d096994ec5091ee107]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/configure.ac b/configure.ac\nindex dc15b5595..25039a0d9 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -287,6 +287,9 @@ AC_DEFUN([add_c_flag], [\n # -D_GNU_SOURCE is required for execvpe() in options.c\n add_c_flag([-D_GNU_SOURCE], [AC_MSG_ERROR([Cannot enable -D_GNU_SOURCE])])\n \n+# Enable gnu99 mode, since we use some of these features.\n+add_c_flag([-std=gnu99], [AC_MSG_ERROR([Cannot enable -std=gnu99])])\n+\n # Best attempt compiler options that are on newer versions of GCC that\n # we can't widely enforce without killing other peoples builds.\n # Works with gcc only. Needs to be disabled on BSD and clang\n"
  },
  {
    "path": "package/tpm2-tools/Config.in",
    "content": "config BR2_PACKAGE_TPM2_TOOLS\n\tbool \"tpm2-tools\"\n\tdepends on !BR2_STATIC_LIBS # tpm2-tss\n\tdepends on BR2_USE_WCHAR\n\t# c16rtomb() not implemented in uClibc\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_TPM2_TSS\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  TPM (Trusted Platform Module) 2.0 CLI tools based on system\n\t  API of TPM2-TSS. These tools can be used to manage keys,\n\t  perform encryption/decryption/signing/etc crypto operations,\n\t  and manage non-volatile storage through a TPM2.0 HW\n\t  implementation.\n\n\t  Notice: An in-kernel resource manager is provided by the\n\t  Linux kernel since 4.12. Depending on use cases and kernel\n\t  version, the user space resource manager provided by\n\t  tpm2-abrmd may be needed.\n\n\t  https://github.com/tpm2-software/tpm2-tools\n\ncomment \"tpm2-tools needs a glibc or musl toolchain w/ dynamic library, wchar\"\n\tdepends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || \\\n\t\t!(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)\n"
  },
  {
    "path": "package/tpm2-tools/tpm2-tools.hash",
    "content": "# Locally computed:\nsha256  e2802d4093a24b2c65b1f913d0f4c68eadde9b8fd8a9b7a3b17a6e50765e8350  tpm2-tools-4.3.2.tar.gz\nsha256  f6995d52c8b8e4d2c3bace7fc9c330a77a90d808166fbad4d7ead7e8ba2fc66c  doc/LICENSE\n"
  },
  {
    "path": "package/tpm2-tools/tpm2-tools.mk",
    "content": "################################################################################\n#\n# tpm2-tools\n#\n################################################################################\n\nTPM2_TOOLS_VERSION = 4.3.2\nTPM2_TOOLS_SITE = https://github.com/tpm2-software/tpm2-tools/releases/download/$(TPM2_TOOLS_VERSION)\nTPM2_TOOLS_LICENSE = BSD-3-Clause\nTPM2_TOOLS_LICENSE_FILES = doc/LICENSE\nTPM2_TOOLS_CPE_ID_VENDOR = tpm2-tools_project\nTPM2_TOOLS_SELINUX_MODULES = tpm2\nTPM2_TOOLS_DEPENDENCIES = libcurl openssl tpm2-tss host-pkgconf util-linux\n# We're patching configure.ac\nTPM2_TOOLS_AUTORECONF = YES\n\n# -fstack-protector-all and FORTIFY_SOURCE=2 is used by\n# default. Disable that so the BR2_SSP_* / BR2_FORTIFY_SOURCE_* options\n# in the toolchain wrapper and CFLAGS are used instead\nTPM2_TOOLS_CONF_OPTS = --disable-hardening\n\n# do not build man pages\nTPM2_TOOLS_CONF_ENV += ac_cv_prog_PANDOC=''\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tpm2-totp/Config.in",
    "content": "config BR2_PACKAGE_TPM2_TOTP\n\tbool \"tpm2-totp\"\n\tdepends on !BR2_STATIC_LIBS # tpm2-tss\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM # glibc < 2.20\n\tselect BR2_PACKAGE_LIBQRENCODE\n\tselect BR2_PACKAGE_TPM2_TSS\n\thelp\n\t  This is a reimplementation of Matthew Garrett's tpmtotp\n\t  software for TPM 2.0 using the tpm2-tss software stack. Its\n\t  purpose is to attest the trustworthiness of a device against\n\t  a human using time-based one-time passwords (TOTP),\n\t  facilitating the Trusted Platform Module (TPM) to bind the\n\t  TOTP secret to the known trustworthy system state. In\n\t  addition to the original tpmtotp, given the new capabilities\n\t  of in-TPM hmac calculation, the tpm2-totp's secret HMAC keys\n\t  do not have to be exported from the TPM to the CPU's RAM on\n\t  boot anymore.\n\n\t  https://github.com/tpm2-software/tpm2-totp\n\ncomment \"tpm2-totp needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM\n"
  },
  {
    "path": "package/tpm2-totp/tpm2-totp.hash",
    "content": "# Locally computed:\nsha256 0b2b63cc7ea74f5a6952f2cd689896c08f6b94ee6865f48af609f9a8ac247dc1  tpm2-totp-0.2.1.tar.gz\nsha256 67bc21a0bff2b0890307cfaa883bd3f5337f461eb6d8a612a015cea6d704e9ed  LICENSE\n"
  },
  {
    "path": "package/tpm2-totp/tpm2-totp.mk",
    "content": "################################################################################\n#\n# tpm2-totp\n#\n################################################################################\n\nTPM2_TOTP_VERSION = 0.2.1\nTPM2_TOTP_SITE = https://github.com/tpm2-software/tpm2-totp/releases/download/v$(TPM2_TOTP_VERSION)\nTPM2_TOTP_LICENSE = BSD-3-Clause\nTPM2_TOTP_LICENSE_FILES = LICENSE\nTPM2_TOTP_SELINUX_MODULES = tpm2\nTPM2_TOTP_DEPENDENCIES = libqrencode tpm2-tss host-pkgconf\nTPM2_TOTP_CONF_OPTS = \\\n\t--disable-defaultflags \\\n\t--disable-doxygen-doc \\\n\t--disable-plymouth \\\n\t--without-initramfstoolsdir \\\n\t--without-mkinitcpiodir\n\n# uses C99 code but forgets to pass -std=c99 when --disable-defaultflags is used\nTPM2_TOTP_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -std=c99\"\n\n# do not build man pages\nTPM2_TOTP_CONF_ENV += ac_cv_path_PANDOC=''\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tpm2-tss/0001-Temporary-fix-for-build-without-C.patch",
    "content": "From 7dc753ad27a8cd14c9b00be94ca89b847cf05ce9 Mon Sep 17 00:00:00 2001\nFrom: Carlos Santos <unixmania@gmail.com>\nDate: Mon, 23 Dec 2019 08:02:19 -0300\nSubject: [PATCH] Temporary fix for build without C++\n\nC++ is required only for the fuzzing tests but AC_PROG_CXX is included\nby configure.ac even when fuzzing is not enabled (which we don't do on\nBuildroot).\n\nThe patch applied upstream had issues and was reverted[1]. Use a local\npatch to solve the problem temporaryly.\n\nFixes:\n    http://autobuild.buildroot.net/results/13f5e37b47b255da4158bec34e5459136f7e60d4\n    http://autobuild.buildroot.net/results/1c26db2509c79e00c0de1165945277eaa57b149f\n    http://autobuild.buildroot.net/results/b7b6b7b7aca79e847b442cbd2305427d91fe5d70\n    http://autobuild.buildroot.net/results/1cd5a82a0e799aa5027e2e2c03b246332cc3a15d\n    http://autobuild.buildroot.net/results/d7ec878907f714377c83e9a496e97cbf9382d787\n    http://autobuild.buildroot.net/results/1c7f0c1b3ce4871cd87bd6059b1f0a6dc4e74a9c\n    http://autobuild.buildroot.net/results/196b81d580325607c8da90beeb79e1f6b8ab8b47\n    http://autobuild.buildroot.net/results/f90f7b4ac710b56686635f8ae27059c11b963e47\n\n1. https://github.com/tpm2-software/tpm2-tss/commit/60c26e4c4faba6ba12469485653e17092b510840\n\nSigned-off-by: Carlos Santos <unixmania@gmail.com>\n---\n configure.ac | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex ff59dd7c..3e4028fb 100755\n--- a/configure.ac\n+++ b/configure.ac\n@@ -26,7 +26,6 @@ AX_IS_RELEASE(dash-version)\n AX_CHECK_ENABLE_DEBUG([info])\n \n AC_PROG_CC\n-AC_PROG_CXX\n AC_PROG_LN_S\n AC_USE_SYSTEM_EXTENSIONS\n LT_INIT()\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/tpm2-tss/Config.in",
    "content": "config BR2_PACKAGE_TPM2_TSS\n\tbool \"tpm2-tss\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tselect BR2_PACKAGE_LIBURIPARSER\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL\n\thelp\n\t  OSS implementation of the Trusted Computing Group's (TCG) TPM2\n\t  Software Stack (TSS). This stack consists of the following\n\t  layers from top to bottom:\n\n\t  * System API (SAPI) as described in the system level API and\n\t    TPM command transmission interface specification. This API\n\t    is a 1-to-1 mapping of the TPM2 commands documented in Part\n\t    3 of the TPM2 specification. Additionally there are\n\t    asynchronous versions of each command. These asynchronous\n\t    variants may be useful for integration into event-driven\n\t    programming environments. Both the synchronous and\n\t    asynchronous API are exposed through a single library:\n\t    libtss2-sys.\n\n\t  * TPM Command Transmission Interface (TCTI) that is described\n\t    in the same specification. This API provides a standard\n\t    interface to transmit / receive TPM command / response\n\t    buffers. It is expected that any number of libraries\n\t    implementing the TCTI API will be implemented as a way to\n\t    abstract various platform specific IPC mechanisms. Currently\n\t    this repository provides two TCTI implementations:\n\t    libtss2-tcti-device and libtss2-tcti-mssim. The prior should\n\t    be used for direct access to the TPM through the Linux\n\t    kernel driver. The later implements the protocol exposed by\n\t    the Microsoft software TPM2 simulator.\n\n\t  https://github.com/tpm2-software/tpm2-tss\n\nif BR2_PACKAGE_TPM2_TSS\n\nconfig BR2_PACKAGE_TPM2_TSS_FAPI\n\tbool \"fapi support\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c\n\tselect BR2_PACKAGE_JSON_C\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  This option allows to enable Feature API (FAPI).  Feature\n\t  API (FAPI) as described in the \"TSS 2.0 Feature API\n\t  Specification\" along with \"TSS 2.0 JSON Data Types and\n\t  Policy Language Specification\" This API is designed to be\n\t  very high-level API, intended to make programming with the\n\t  TPM as simple as possible. The API functions are exposed\n\t  through a single library: libtss2-fapi.\n\n\t  https://trustedcomputinggroup.org/wp-content/uploads/TSS_FAPI_v0.94_r04_pubrev.pdf\n\t  https://trustedcomputinggroup.org/wp-content/uploads/TSS_JSON_Policy_v0.7_r04_pubrev.pdf\n\nendif\n\ncomment \"tpm2-tss needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/tpm2-tss/tpm2-tss.hash",
    "content": "# Locally computed:\nsha256  8900a6603f74310b749b65f23c3461cde6e2a23a5f61058b21004c25f9cf19e8  tpm2-tss-3.1.0.tar.gz\nsha256  18c1bf4b1ba1fb2c4ffa7398c234d83c0d55475298e470ae1e5e3a8a8bd2e448  LICENSE\n"
  },
  {
    "path": "package/tpm2-tss/tpm2-tss.mk",
    "content": "################################################################################\n#\n# tpm2-tss\n#\n################################################################################\n\nTPM2_TSS_VERSION = 3.1.0\nTPM2_TSS_SITE = https://github.com/tpm2-software/tpm2-tss/releases/download/$(TPM2_TSS_VERSION)\nTPM2_TSS_LICENSE = BSD-2-Clause\nTPM2_TSS_LICENSE_FILES = LICENSE\nTPM2_TSS_CPE_ID_VENDOR = tpm2_software_stack_project\nTPM2_TSS_CPE_ID_PRODUCT = tpm2_software_stack\nTPM2_TSS_INSTALL_STAGING = YES\nTPM2_TSS_DEPENDENCIES = liburiparser openssl host-pkgconf\n\n# 0001-configure-Only-use-CXX-when-fuzzing.patch\nTPM2_TSS_AUTORECONF = YES\n\n# systemd-sysusers and systemd-tmpfiles are only used at install time\n# to trigger the creation of users adn tmpfiles, which we do not care\n# about at build time. groupadd, useradd, and setfacl are used in the\n# fallback path when systemd-sysusers or systemd-tmpfiles are missing\n# and their failure is ignored anyway.\nTPM2_TSS_CONF_OPTS = \\\n\tac_cv_prog_result_groupadd=yes \\\n\tac_cv_prog_result_setfacl=yes \\\n\tac_cv_prog_systemd_sysusers=no \\\n\tac_cv_prog_systemd_tmpfiles=no \\\n\tac_cv_prog_result_useradd=yes \\\n\t--with-crypto=ossl \\\n\t--disable-doxygen-doc \\\n\t--disable-defaultflags\n\n# uses C99 code but forgets to pass -std=c99 when --disable-defaultflags is used\nTPM2_TSS_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -std=c99\"\n\nifeq ($(BR2_PACKAGE_TPM2_TSS_FAPI),y)\nTPM2_TSS_DEPENDENCIES += json-c libcurl\nTPM2_TSS_CONF_OPTS += --enable-fapi\nelse\nTPM2_TSS_CONF_OPTS += --disable-fapi\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/trace-cmd/Config.in",
    "content": "config BR2_PACKAGE_TRACE_CMD\n\tbool \"trace-cmd\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\thelp\n\t  Command line reader for ftrace.\n\n\t  To use this profiling tool, you should enable ftrace in your\n\t  kernel configuration. This command collect traces on your\n\t  target.  You can analyse these traces on the target or on\n\t  the host via the gui \"kernel shark\"\n\n\t  http://git.kernel.org/cgit/linux/kernel/git/rostedt/trace-cmd.git\n\ncomment \"trace-cmd needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/trace-cmd/trace-cmd.hash",
    "content": "# Locally computed\nsha256  026cce03b4ae61f19848646acecf151dd7dd62617859edcf73ae954eb65b2653  trace-cmd-trace-cmd-v2.9.5-br1.tar.gz\nsha256  b1d04b850c1c7471b0f0896f6c6f0fcfc9f07e2dd183a5f5826af269fe9e88fb  COPYING\nsha256  70f297763149e72306919c924e164f83041d5e512868d4c8c1826c171b3e49f9  COPYING.LIB\nsha256  f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79  LICENSES/GPL-2.0\nsha256  0b9a4febcdee6de55872501d5c1a8f5d8b0d1650cd4d5351995ceb22e889f8ca  LICENSES/LGPL-2.1\n"
  },
  {
    "path": "package/trace-cmd/trace-cmd.mk",
    "content": "################################################################################\n#\n# trace-cmd\n#\n################################################################################\n\nTRACE_CMD_VERSION = trace-cmd-v2.9.5\nTRACE_CMD_SITE = https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git\nTRACE_CMD_SITE_METHOD = git\nTRACE_CMD_LICENSE = GPL-2.0, LGPL-2.1\nTRACE_CMD_LICENSE_FILES = COPYING COPYING.LIB LICENSES/GPL-2.0 LICENSES/LGPL-2.1\n\nTRACE_CMD_DEPENDENCIES = host-pkgconf\nTRACE_CMD_MAKE_OPTS = prefix=/usr etcdir=/etc\n\nifeq ($(BR2_PACKAGE_AUDIT),y)\nTRACE_CMD_DEPENDENCIES += audit\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON),y)\nTRACE_CMD_DEPENDENCIES += python host-swig\nTRACE_CMD_MAKE_OPTS += PYTHON_VERS=python\nelse ifeq ($(BR2_PACKAGE_PYTHON3),y)\nTRACE_CMD_DEPENDENCIES += python3 host-swig\nTRACE_CMD_MAKE_OPTS += PYTHON_VERS=python3\nelse\nTRACE_CMD_MAKE_OPTS += NO_PYTHON=1\nendif\n\n# trace-cmd already defines _LARGEFILE64_SOURCE when necessary,\n# redefining it on the command line causes build problems.\nTRACE_CMD_CFLAGS = $(filter-out -D_LARGEFILE64_SOURCE,$(TARGET_CFLAGS))\n\n# Sparc64 needs -fPIC\nifeq ($(BR2_sparc64),y)\nTRACE_CMD_CFLAGS += -fPIC\nendif\n\n# trace-cmd use CPPFLAGS to add some extra flags.\n# But like for CFLAGS, $(TARGET_CPPFLAGS) contains _LARGEFILE64_SOURCE\n# that causes build problems.\nTRACE_CMD_CPPFLAGS = $(filter-out -D_LARGEFILE64_SOURCE,$(TARGET_CPPFLAGS))\n\ndefine TRACE_CMD_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tCFLAGS=\"$(TRACE_CMD_CFLAGS)\" \\\n\tCPPFLAGS=\"$(TRACE_CMD_CPPFLAGS)\" \\\n\t$(MAKE) $(TRACE_CMD_MAKE_OPTS) -C $(@D)\nendef\n\ndefine TRACE_CMD_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tCFLAGS=\"$(TRACE_CMD_CFLAGS)\" \\\n\tCPPFLAGS=\"$(TRACE_CMD_CPPFLAGS)\" \\\n\tDESTDIR=$(TARGET_DIR) \\\n\t$(MAKE) $(TRACE_CMD_MAKE_OPTS) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/traceroute/Config.in",
    "content": "config BR2_PACKAGE_TRACEROUTE\n\tbool \"traceroute\"\n\thelp\n\t  A new modern implementation of the traceroute(8) utility for\n\t  Linux systems. It tracks the route packets taken from an IP\n\t  network on their way to a given host.\n\n\t  http://traceroute.sourceforge.net/\n"
  },
  {
    "path": "package/traceroute/traceroute.hash",
    "content": "# Locally computed:\nsha256 3669d22a34d3f38ed50caba18cd525ba55c5c00d5465f2d20d7472e5d81603b6  traceroute-2.1.0.tar.gz\n\n# Hash for license files:\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\n"
  },
  {
    "path": "package/traceroute/traceroute.mk",
    "content": "################################################################################\n#\n# traceroute\n#\n################################################################################\n\nTRACEROUTE_VERSION = 2.1.0\nTRACEROUTE_SITE = http://downloads.sourceforge.net/traceroute/traceroute/traceroute-$(TRACEROUTE_VERSION)\n\nTRACEROUTE_LICENSE = GPL-2.0+, LGPL-2.1+\nTRACEROUTE_LICENSE_FILES = COPYING COPYING.LIB\n\ndefine TRACEROUTE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) VPATH=$(STAGING_DIR)/usr/lib $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -D_GNU_SOURCE\" -C $(@D)\nendef\n\ndefine TRACEROUTE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) prefix=/usr install \\\n\t\tINSTALL=$(INSTALL) -C $(@D)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/transmission/0001-fix-utypes.patch",
    "content": "Fix build error \"conflicting types for 'UTP_Write'\"\n\nFetch from: http://www.adminsehow.com/2012/10/how-to-install-transmission-2-71-on-debian-6-0-squeeze/\n\nThe corresponding upstream bug report (unfixed) can be found here:\nhttps://trac.transmissionbt.com/ticket/5232\n\nSigned-off-by: Bernd Kuhls <berndkuhls@hotmail.com>\n[Fabrice: adapt to 3.00, which always uses stdbool.h]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[yann.morin.1998@free.fr:\n  - don't comment-out dropped code, just drop it\n  - use CR-LF in replacement code, as used by upstream\n]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n\n--- transmission-2.82.org/third-party/libutp/utypes.h\t2013-08-09 04:47:43.000000000 +0200\n+++ transmission-2.82/third-party/libutp/utypes.h\t2014-01-02 20:17:18.000000000 +0100\n@@ -35,8 +35,8 @@\n typedef const char * cstr;\r\n typedef char * str;\r\n \r\n-#ifndef __cplusplus\r\n-typedef uint8 bool;\r\n-#endif\r\n+#ifndef __cplusplus\r\n+#include <stdbool.h>\r\n+#endif\r\n \r\n #endif //__UTYPES_H__\r\n"
  },
  {
    "path": "package/transmission/0002-fix-utp-include.patch",
    "content": "Fix compilation when using system libminiupnpc with libutp disabled\n\nIf transmission uses its own copy of libminiupnpc in third-party/ then\nthe configure script adds that path to CFLAGS:\nhttps://trac.transmissionbt.com/browser/trunk/configure.ac#L455\n\nThis path is also added if transmission uses its own copy of libutp:\nhttps://trac.transmissionbt.com/browser/trunk/configure.ac#L349\n\nBut if a system-provided libminiupnpc is used and utp-support is\ndisabled using --disable-utp the result is a build error, detected by\nbuildroot autobuilders:\nhttp://autobuild.buildroot.net/results/b79/b79e51140cb0320554a58ce59dcb33f53cd9211a/build-end.log\n\nnet.c:40:24: fatal error: libutp/utp.h: No such file or directory\n\nPatch proposed by Yann E. MORIN:\nhttp://lists.busybox.net/pipermail/buildroot/2016-July/167896.html\n\nPatch sent upstream: https://trac.transmissionbt.com/ticket/6163\n\nSigned-off-by: Bernd Kuhls <berndkuhls@hotmail.com>\n\ndiff -uNr transmission-2.92.org/configure.ac transmission-2.92/configure.ac\n--- transmission-2.92.org/configure.ac\t2016-03-06 21:23:45.336198393 +0100\n+++ transmission-2.92/configure.ac\t2016-07-31 12:13:40.921660078 +0200\n@@ -358,6 +358,10 @@\n     else\n       AC_MSG_ERROR(\"Unable to build uTP support -- C++ compiler not found\")\n     fi\n+else\n+    # For the system libminiupnpc with UTC disabled,\n+    # point to our bundled UTP headers\n+    LIBUTP_CFLAGS=\"-I\\$(top_srcdir)/third-party/\"\n fi\n AC_SUBST(LIBUTP_CFLAGS)\n AC_SUBST(LIBUTP_LIBS)\n@@ -457,7 +461,7 @@\n     LIBUPNP_LIBS_QT=\"\\$\\${TRANSMISSION_TOP}/third-party/miniupnp/libminiupnp.a\"\n else\n     AC_DEFINE([SYSTEM_MINIUPNP])\n-    LIBUPNP_CFLAGS=\"\" \n+    LIBUPNP_CFLAGS=\"${LIBUTP_CFLAGS}\"\n     LIBUPNP_LIBS=\"-lminiupnpc\"\n     LIBUPNP_LIBS_QT=\"-lminiupnpc\"\n fi\n"
  },
  {
    "path": "package/transmission/0003-configure.ac-fix-autoreconf-with-autoconf-2.70.patch",
    "content": "From 857ac91a03a096601f62b358fc61355d4cc25b9b Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 9 Oct 2021 18:51:13 +0200\nSubject: [PATCH] configure.ac: fix autoreconf with autoconf >= 2.70\n\nRemove the whitespace before IT_PROG_INTLTOOL as suggested in\nhttps://www.mail-archive.com/bug-autoconf@gnu.org/msg04851.html\nto avoid the following build failure with autoconf >= 2.70:\n\nERROR: 'IT_PROG_INTLTOOL' must appear in configure.ac for intltool to work.\n\nThe problem has been introduced by upstream autoconf commit\nhttp://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commit;h=b3b3af821a0b9e82ebe56b77b1731d2fe58f52de\n\nFixes:\n - http://autobuild.buildroot.org/results/e8bea26f6b12adf16335b24836a7c5c31911af6a\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: not upstreamable as upstream swicthed to cmake (\nhttps://github.com/transmission/transmission/issues/1573)]\n---\n configure.ac | 4 +---\n 1 file changed, 1 insertion(+), 3 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex fd1132fda..04e0e19bb 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -555,9 +555,7 @@ dnl it should be safe to re-edit 0.40 back down to 0.23\n use_nls=no\n if test \"x$enable_nls\" = \"xyes\" ; then\n     use_nls=yes\n-    m4_ifdef([IT_PROG_INTLTOOL],\n-             [IT_PROG_INTLTOOL([0.35.0],[no-xml])],\n-             [AC_MSG_ERROR(\"--enable-nls requires intltool to be installed.\")])\n+IT_PROG_INTLTOOL([0.35.0],[no-xml])\n     AC_CHECK_HEADERS([libintl.h])\n     GETTEXT_PACKAGE=transmission-gtk\n     AC_SUBST(GETTEXT_PACKAGE)\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/transmission/Config.in",
    "content": "config BR2_PACKAGE_TRANSMISSION\n\tbool \"transmission\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_ZLIB\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBCURL\n\tselect BR2_PACKAGE_LIBEVENT\n\thelp\n\t  Transmission is a cross-platform BitTorrent client.\n\n\t  http://www.transmissionbt.com/\n\nif BR2_PACKAGE_TRANSMISSION\n\nconfig BR2_PACKAGE_TRANSMISSION_UTP\n\tbool \"Transmission uTP support\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Install support for uTorrent Transport Protocol\n\ncomment \"uTP needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_TRANSMISSION_CLI\n\tbool \"transmission-cli\"\n\thelp\n\t  Install transmission command line interface.\n\nconfig BR2_PACKAGE_TRANSMISSION_DAEMON\n\tbool \"transmission-daemon\"\n\thelp\n\t  Install transmission daemon.\n\nconfig BR2_PACKAGE_TRANSMISSION_GTK\n\tbool \"transmission-gtk\"\n\tdepends on BR2_PACKAGE_LIBGTK3 && BR2_SYSTEM_ENABLE_NLS\n\thelp\n\t  Install transmission GTK-based GUI interface.\n\ncomment \"transmission-gtk needs NLS enabled\"\n\tdepends on BR2_PACKAGE_LIBGTK3 && !BR2_SYSTEM_ENABLE_NLS\nendif\n\ncomment \"transmission needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/transmission/S92transmission",
    "content": "#!/bin/sh\n\n# Original Author: Lennart A. Jtte, based on Rob Howell's script\n# Modified by Maarten Van Coile & others (on IRC)\n\n# Changes for buildroot:\n# USERNAME points to 'default' in standard installation\n# TODO: set logfile with --logfile option\n\n# Do NOT \"set -e\"\n\n#\n# ----- CONFIGURATION -----\n#\n# For the default location Transmission uses, visit:\n# http://trac.transmissionbt.com/wiki/ConfigFiles\n# For a guide on how set the preferences, visit:\n# http://trac.transmissionbt.com/wiki/EditConfigFiles\n# For the available environement variables, visit:\n# http://trac.transmissionbt.com/wiki/EnvironmentVariables\n#\n# The name of the user that should run Transmission.\n# It's RECOMENDED to run Transmission in it's own user,\n# by default, this is set to 'transmission'.\n# For the sake of security you shouldn't set a password\n# on this user\nUSERNAME=transmission\n\n\n# ----- *ADVANCED* CONFIGURATION -----\n# Only change these options if you know what you are doing!\n#\n# The folder where Transmission stores the config & web files.\n# ONLY change this you have it at a non-default location\n#TRANSMISSION_HOME=\"/var/config/transmission-daemon\"\n#TRANSMISSION_WEB_HOME=\"/usr/share/transmission/web\"\n#\n# The arguments passed on to transmission-daemon.\n# ONLY change this you need to, otherwise use the\n# settings file as per above.\n#TRANSMISSION_ARGS=\"\"\n\n\n# ----- END OF CONFIGURATION -----\n#\n# PATH should only include /usr/* if it runs after the mountnfs.sh script.\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\nDESC=\"bittorrent client\"\nNAME=transmission-daemon\nDAEMON=$(which $NAME)\nPIDFILE=/var/run/$NAME.pid\nSCRIPTNAME=/etc/init.d/$NAME\n\n# Read configuration variable file if it is present\n[ -r /etc/default/$NAME ] && . /etc/default/$NAME\n\n# Load the VERBOSE setting and other rcS variables\n[ -f /etc/default/rcS ] && . /etc/default/rcS\n\n#\n# Function that starts the daemon/service\n#\n\nstart()\n{\n    # Export the configuration/web directory, if set\n    if [ -n \"$TRANSMISSION_HOME\" ]; then\n          export TRANSMISSION_HOME\n    fi\n    if [ -n \"$TRANSMISSION_WEB_HOME\" ]; then\n          export TRANSMISSION_WEB_HOME\n    fi\n\n    # Return\n    #   0 if daemon has been started\n    #   1 if daemon was already running\n    #   2 if daemon could not be started\n    start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \\\n            --exec $DAEMON --background --test -- -f $TRANSMISSION_ARGS > /dev/null \\\n            || return 1\n    start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \\\n            --exec $DAEMON --background -- -f $TRANSMISSION_ARGS \\\n            || return 2\n}\n\n#\n# Function that stops the daemon/service\n#\nstop()\n{\n        # Return\n        #   0 if daemon has been stopped\n        #   1 if daemon was already stopped\n        #   2 if daemon could not be stopped\n        #   other if a failure occurred\n        start-stop-daemon --stop --quiet --retry=TERM/10/KILL/5 --pidfile $PIDFILE --exec $DAEMON\n        RETVAL=\"$?\"\n        [ \"$RETVAL\" = 2 ] && return 2\n\n        # Wait for children to finish too if this is a daemon that forks\n        # and if the daemon is only ever run from this initscript.\n        # If the above conditions are not satisfied then add some other code\n        # that waits for the process to drop all resources that could be\n        # needed by services started subsequently.  A last resort is to\n        # sleep for some time.\n\n        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON\n        [ \"$?\" = 2 ] && return 2\n\n        # Many daemons don't delete their pidfiles when they exit.\n        rm -f $PIDFILE\n\n        return \"$RETVAL\"\n}\n\ncase \"$1\" in\n  start)\n        echo \"Starting $DESC\" \"$NAME...\"\n        start\n        case \"$?\" in\n                0|1) echo \"   Starting $DESC $NAME succeeded\" ;;\n                *)   echo \"   Starting $DESC $NAME failed\" ;;\n        esac\n        ;;\n  stop)\n        echo \"Stopping $DESC $NAME...\"\n        stop\n        case \"$?\" in\n                0|1) echo \"   Stopping $DESC $NAME succeeded\" ;;\n                *)   echo \"   Stopping $DESC $NAME failed\" ;;\n        esac\n        ;;\n  restart|force-reload)\n        #\n        # If the \"reload\" option is implemented then remove the\n        # 'force-reload' alias\n        #\n        echo \"Restarting $DESC $NAME...\"\n        stop\n        case \"$?\" in\n          0|1)\n                start\n                case \"$?\" in\n                    0|1) echo \"   Restarting $DESC $NAME succeeded\" ;;\n                    *)   echo \"   Restarting $DESC $NAME failed: couldn't start $NAME\" ;;\n                esac\n                ;;\n          *)\n                echo \"   Restarting $DESC $NAME failed: couldn't stop $NAME\" ;;\n        esac\n        ;;\n  *)\n        echo \"Usage: $SCRIPTNAME {start|stop|restart|force-reload}\" >&2\n        exit 3\n        ;;\nesac\n"
  },
  {
    "path": "package/transmission/transmission.hash",
    "content": "# Locally calculated\nsha256  9144652fe742f7f7dd6657716e378da60b751aaeda8bef8344b3eefc4db255f2  transmission-3.00.tar.xz\nsha256  2b16da5bd02790d1e4d332cfd42b9dfd7d1b0ed3a16a75dc7e76b6ed239fdba9  COPYING\n"
  },
  {
    "path": "package/transmission/transmission.mk",
    "content": "################################################################################\n#\n# transmission\n#\n################################################################################\n\nTRANSMISSION_VERSION = 3.00\nTRANSMISSION_SITE = https://github.com/transmission/transmission-releases/raw/master\nTRANSMISSION_SOURCE = transmission-$(TRANSMISSION_VERSION).tar.xz\nTRANSMISSION_DEPENDENCIES = \\\n\thost-pkgconf \\\n\thost-intltool \\\n\tlibcurl \\\n\tlibevent \\\n\topenssl \\\n\tzlib\nTRANSMISSION_AUTORECONF = YES\nTRANSMISSION_CONF_OPTS = \\\n\t--without-inotify \\\n\t--enable-lightweight\nTRANSMISSION_LICENSE = GPL-2.0 or GPL-3.0 with OpenSSL exception\nTRANSMISSION_LICENSE_FILES = COPYING\nTRANSMISSION_CPE_ID_VENDOR = transmissionbt\n\nifeq ($(BR2_PACKAGE_LIBMINIUPNPC),y)\nTRANSMISSION_DEPENDENCIES += libminiupnpc\nendif\n\nifeq ($(BR2_PACKAGE_LIBNATPMP),y)\nTRANSMISSION_DEPENDENCIES += libnatpmp\nTRANSMISSION_CONF_OPTS += --enable-external-natpmp\nelse\nTRANSMISSION_CONF_OPTS += --disable-external-natpmp\nendif\n\nifeq ($(BR2_PACKAGE_TRANSMISSION_UTP),y)\nTRANSMISSION_CONF_OPTS += --enable-utp\nelse\nTRANSMISSION_CONF_OPTS += --disable-utp\nendif\n\nifeq ($(BR2_PACKAGE_TRANSMISSION_CLI),y)\nTRANSMISSION_CONF_OPTS += --enable-cli\nelse\nTRANSMISSION_CONF_OPTS += --disable-cli\nendif\n\nifeq ($(BR2_PACKAGE_TRANSMISSION_DAEMON),y)\nTRANSMISSION_CONF_OPTS += --enable-daemon\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nTRANSMISSION_DEPENDENCIES += systemd\nTRANSMISSION_CONF_OPTS += --with-systemd\nelse\nTRANSMISSION_CONF_OPTS += --without-systemd\nendif\n\ndefine TRANSMISSION_USERS\n\ttransmission -1 transmission -1 * /var/lib/transmission - transmission Transmission Daemon\nendef\n\ndefine TRANSMISSION_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/transmission/S92transmission \\\n\t\t$(TARGET_DIR)/etc/init.d/S92transmission\nendef\n\ndefine TRANSMISSION_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 $(@D)/daemon/transmission-daemon.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/transmission-daemon.service\nendef\n\nelse\nTRANSMISSION_CONF_OPTS += --disable-daemon\nendif\n\nifeq ($(BR2_PACKAGE_TRANSMISSION_GTK),y)\nTRANSMISSION_CONF_OPTS += --with-gtk\nTRANSMISSION_DEPENDENCIES += libgtk3\nelse\nTRANSMISSION_CONF_OPTS += --without-gtk\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tree/Config.in",
    "content": "config BR2_PACKAGE_TREE\n\tbool \"tree\"\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Tree is a recursive directory listing command that produces\n\t  a depth indented listing of files, which is colorized ala\n\t  dircolors if the LS_COLORS environment variable is set and\n\t  output is to tty.\n\n\t  http://mama.indstate.edu/users/ice/tree/\n\ncomment \"tree needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/tree/tree.hash",
    "content": "# Locally calculated\nsha256\t715d5d4b434321ce74706d0dd067505bb60c5ea83b5f0b3655dae40aa6f9b7c2\ttree-1.8.0.tgz\nsha256\t204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994\tLICENSE\n"
  },
  {
    "path": "package/tree/tree.mk",
    "content": "################################################################################\n#\n# tree\n#\n################################################################################\n\nTREE_VERSION = 1.8.0\nTREE_SOURCE = tree-$(TREE_VERSION).tgz\nTREE_SITE = http://mama.indstate.edu/users/ice/tree/src\nTREE_LICENSE = GPL-2.0+\nTREE_LICENSE_FILES = LICENSE\n\ndefine TREE_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine TREE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/tree $(TARGET_DIR)/usr/bin/tree\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/tremor/Config.in",
    "content": "config BR2_PACKAGE_TREMOR\n\tbool \"tremor (fixed point vorbis decoder)\"\n\tselect BR2_PACKAGE_LIBOGG\n\thelp\n\t  Tremor is a fixed point implementation of an Ogg Vorbis\n\t  decoder. It provides a decoding API similar to libvorbis,\n\t  but gives much better performance on systems without a\n\t  floating-point unit.\n\n\t  https://wiki.xiph.org/Tremor\n"
  },
  {
    "path": "package/tremor/tremor.hash",
    "content": "# Locally computed\nsha256  a387ebb4536ca98034eb91855616b971b0a85575943699b2a6d0be79b4a9f6a9  tremor-7c30a66346199f3f09017a09567c6c8a3a0eedc8-br1.tar.gz\nsha256  d2ab5758336489da61c12cc5bb757da5339c4ae9001f9bb0562b4370249af814  COPYING\n"
  },
  {
    "path": "package/tremor/tremor.mk",
    "content": "################################################################################\n#\n# tremor\n#\n################################################################################\n\nTREMOR_VERSION = 7c30a66346199f3f09017a09567c6c8a3a0eedc8\nTREMOR_SITE = https://gitlab.xiph.org/xiph/tremor.git\nTREMOR_SITE_METHOD = git\nTREMOR_LICENSE = BSD-3-Clause\nTREMOR_LICENSE_FILES = COPYING\n\nTREMOR_AUTORECONF = YES\nTREMOR_INSTALL_STAGING = YES\nTREMOR_DEPENDENCIES = libogg\n\n# tremor has ARM assembly code that cannot be compiled in Thumb2 mode,\n# so we must force the traditional ARM mode.\n# However, some ARM architectures like ARNv7-M only supports Thumb\n# instructions, but the tremor build configuration enables ARM assembly\n# code unconditionally for all arm triplets by defining _ARM_ASSEM_.\n# We are overriding this by undefining this macro for the ARM\n# architectures not supporting ARM instructions.\nifeq ($(BR2_arm),y)\nifeq ($(BR2_ARM_CPU_HAS_ARM),y)\nTREMOR_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -marm\"\nelse\nTREMOR_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -U_ARM_ASSEM_\"\nendif\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/triggerhappy/Config.in",
    "content": "config BR2_PACKAGE_TRIGGERHAPPY\n\tbool \"triggerhappy\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Triggerhappy is a hotkey daemon developed with small and\n\t  embedded systems in mind, e.g. linux based routers. It\n\t  attaches to the input device files and interprets the event\n\t  data received and executes scripts configured in its\n\t  configuration.\n\n\t  https://github.com/wertarbyte/triggerhappy\n"
  },
  {
    "path": "package/triggerhappy/S10triggerhappy",
    "content": "#!/bin/sh\n\nNAME=thd\nPIDFILE=/var/run/$NAME.pid\nDAEMON_ARGS=\"--daemon --triggers /etc/triggerhappy/triggers.d --socket /var/run/thd.socket --pidfile $PIDFILE --user nobody /dev/input/event*\"\n\n[ -r /etc/default/triggerhappy ] && . /etc/default/triggerhappy\n\nstart() {\n        printf \"Starting $NAME: \"\n        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec /usr/sbin/thd -- $DAEMON_ARGS \\\n                && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n        printf \"Stopping $NAME: \"\n        start-stop-daemon --stop --quiet --pidfile $PIDFILE \\\n                && echo \"OK\" || echo \"FAIL\"\n}\n\ncase \"$1\" in\n        start)\n                start\n                ;;\n        stop)\n                stop\n                ;;\n        restart)\n                stop\n                sleep 1\n                start\n                ;;\n        *)\n                echo \"Usage: $0 {start|stop|restart}\"\n                exit 1\nesac\n"
  },
  {
    "path": "package/triggerhappy/triggerhappy.hash",
    "content": "# Locally calculated\nsha256  af0fc196202f2d35153be401769a9ad9107b5b6387146cfa8895ae9cafad631c  triggerhappy-0.5.0.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/triggerhappy/triggerhappy.mk",
    "content": "################################################################################\n#\n# triggerhappy\n#\n################################################################################\n\nTRIGGERHAPPY_VERSION = 0.5.0\nTRIGGERHAPPY_SITE = \\\n\t$(call github,wertarbyte,triggerhappy,release/$(TRIGGERHAPPY_VERSION))\nTRIGGERHAPPY_LICENSE = GPL-3.0+\nTRIGGERHAPPY_LICENSE_FILES = COPYING\nTRIGGERHAPPY_DEPENDENCIES = host-pkgconf\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nTRIGGERHAPPY_DEPENDENCIES += systemd\nendif\n\ndefine TRIGGERHAPPY_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) PKGCONFIG=\"$(PKG_CONFIG_HOST_BINARY)\" \\\n\t\t-C $(@D) thd th-cmd\nendef\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\ndefine TRIGGERHAPPY_INSTALL_UDEV_RULE\n\t$(INSTALL) -D -m 0644 $(@D)/udev/triggerhappy-udev.rules \\\n\t\t$(TARGET_DIR)/lib/udev/rules.d/triggerhappy.rules\nendef\nendif\n\ndefine TRIGGERHAPPY_INSTALL_TARGET_CMDS\n\t$(INSTALL) -d $(TARGET_DIR)/etc/triggerhappy/triggers.d\n\t$(INSTALL) -D -m 0755 $(@D)/thd $(TARGET_DIR)/usr/sbin/thd\n\t$(INSTALL) -D -m 0755 $(@D)/th-cmd $(TARGET_DIR)/usr/sbin/th-cmd\n\t$(TRIGGERHAPPY_INSTALL_UDEV_RULE)\nendef\n\ndefine TRIGGERHAPPY_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/triggerhappy/S10triggerhappy \\\n\t\t$(TARGET_DIR)/etc/init.d/S10triggerhappy\nendef\n\ndefine TRIGGERHAPPY_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 package/triggerhappy/triggerhappy.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/triggerhappy.service\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/triggerhappy/triggerhappy.service",
    "content": "[Unit]\nDescription=Triggerhappy daemon\n\n[Service]\nExecStart=/usr/sbin/thd --triggers /etc/triggerhappy/triggers.d --socket /var/run/thd.socket --user nobody --deviceglob /dev/input/event*\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/trinity/0001-Fix-build-with-GCC-10.patch",
    "content": "From e53e25cc8dd5bdb5f7d9b4247de9e9921eec81d8 Mon Sep 17 00:00:00 2001\nFrom: Vinson Lee <vlee@freedesktop.org>\nDate: Thu, 30 Jan 2020 22:09:45 -0800\nSubject: [PATCH] Fix build with GCC 10.\n\n  CC\ttrinity\n/usr/bin/ld: debug.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here\n/usr/bin/ld: log-files.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here\n/usr/bin/ld: log.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here\n/usr/bin/ld: main.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here\n/usr/bin/ld: output.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here\n/usr/bin/ld: params.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here\n/usr/bin/ld: shm.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here\n/usr/bin/ld: trinity.o:include/logfile.h:8: multiple definition of `mainlogfile'; child.o:include/logfile.h:8: first defined here\n\nFixes: 13856316c259 (\"reinstate the log-to-file code for now.\")\nSigned-off-by: Vinson Lee <vlee@freedesktop.org>\n\n[Retrieved from:\nhttps://github.com/kernelslacker/trinity/commit/e53e25cc8dd5bdb5f7d9b4247de9e9921eec81d8]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/logfile.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/include/logfile.h b/include/logfile.h\nindex 90ea8b23..2305ac15 100644\n--- a/include/logfile.h\n+++ b/include/logfile.h\n@@ -5,7 +5,7 @@\n FILE *find_logfile_handle(void);\n void synclogs(void);\n \n-FILE *mainlogfile;\n+extern FILE *mainlogfile;\n void open_main_logfile(void);\n void close_logfile(FILE **handle);\n \n"
  },
  {
    "path": "package/trinity/0002-net-proto-ip-raw.c-fix-build-with-kernel-5.13.patch",
    "content": "From da65f0aa2bfcb4a2d9a77abfaa2955c6be3d37c9 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 17 Jul 2021 08:02:31 +0200\nSubject: [PATCH] net/proto-ip-raw.c: fix build with kernel >= 5.13\n\nFix the following build failure with kernel >= 5.13:\n\nIn file included from /home/buildroot/autobuild/instance-2/output-1/host/powerpc-buildroot-linux-uclibc/sysroot/usr/include/linux/icmp.h:23,\n                 from net/proto-ip-raw.c:1:\n/home/buildroot/autobuild/instance-2/output-1/host/powerpc-buildroot-linux-uclibc/sysroot/usr/include/netinet/in.h:33:5: error: redeclaration of enumerator 'IPPROTO_IP'\n   33 |     IPPROTO_IP = 0,    /* Dummy protocol for TCP.  */\n      |     ^~~~~~~~~~\n/home/buildroot/autobuild/instance-2/output-1/host/powerpc-buildroot-linux-uclibc/sysroot/usr/include/linux/in.h:29:3: note: previous definition of 'IPPROTO_IP' was here\n   29 |   IPPROTO_IP = 0,  /* Dummy protocol for TCP  */\n      |   ^~~~~~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/c58119baed8d7711da799e34a5ee1117f46b96f4\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/kernelslacker/trinity/pull/35]\n---\n net/proto-ip-raw.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/net/proto-ip-raw.c b/net/proto-ip-raw.c\nindex 95f2cb13..b407bb68 100644\n--- a/net/proto-ip-raw.c\n+++ b/net/proto-ip-raw.c\n@@ -1,3 +1,4 @@\n+#include <netinet/in.h>\n #include <linux/icmp.h>\n #include \"net.h\"\n #include \"trinity.h\"\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/trinity/Config.in",
    "content": "config BR2_PACKAGE_TRINITY_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_val_compare_and_swap_4\n\tdepends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \\\n\t\tBR2_mips || BR2_mipsel || BR2_powerpc || BR2_powerpc64 || \\\n\t\tBR2_powerpc64le || BR2_sparc || BR2_x86_64\n\nconfig BR2_PACKAGE_TRINITY\n\tbool \"trinity\"\n\tdepends on BR2_PACKAGE_TRINITY_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # IPV6_UNICAST_IF\n\thelp\n\t  A Linux System call fuzz tester\n\n\t  http://codemonkey.org.uk/projects/trinity/\n\ncomment \"trinity needs a toolchain w/ headers >= 3.4\"\n\tdepends on BR2_PACKAGE_TRINITY_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4\n"
  },
  {
    "path": "package/trinity/trinity.hash",
    "content": "# Locally calculated\nsha256 7e0da953c2cc6fb3907d1f37d35f61836433fb50e97117a72eef113abb783dc6  trinity-1.9.tar.xz\nsha256 35e3fc68c89fd7b8f72fd910b521cb3292f859e9181f3c26bd0df84d144bc1d4  COPYING\n"
  },
  {
    "path": "package/trinity/trinity.mk",
    "content": "################################################################################\n#\n# trinity\n#\n################################################################################\n\nTRINITY_VERSION = 1.9\nTRINITY_SITE = http://codemonkey.org.uk/projects/trinity\nTRINITY_SOURCE = trinity-$(TRINITY_VERSION).tar.xz\nTRINITY_LICENSE = GPL-2.0\nTRINITY_LICENSE_FILES = COPYING\nTRINITY_CPE_ID_VENDOR = trinity_project\n\ndefine TRINITY_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure)\nendef\n\ndefine TRINITY_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine TRINITY_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR)/usr install\nendef\n\n# Install helper scripts\ndefine TRINITY_INSTALL_HELPER_SCRIPTS\n\tmkdir -p $(TARGET_DIR)/usr/libexec/trinity\n\tcp -p $(@D)/scripts/* $(TARGET_DIR)/usr/libexec/trinity/\nendef\nTRINITY_POST_INSTALL_TARGET_HOOKS += TRINITY_INSTALL_HELPER_SCRIPTS\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/trousers/0001-Check-if-the-compiler-understands-pie-and-relro-options.patch",
    "content": "From 9abda1bb380bdbef1affaec381742ced394ca118 Mon Sep 17 00:00:00 2001\nFrom: Lada Trimasova <ltrimas@synopsys.com>\nDate: Mon, 18 Jan 2016 15:58:19 +0300\nSubject: [PATCH] Check if the compiler understands pie and relro options\n\n-pie and -fpie enable the building of position-independent\nexecutables, and -Wl,-z,relro turns on read-only relocation support in gcc.\nAdd checks to ensure that the compiler and linker understand these options.\n\nSigned-off-by: Lada Trimasova <ltrimas@synopsys.com>\n[Bernd: Rebased for version 0.3.14]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n configure.ac                |  5 +++\n m4/ax_check_compile_flag.m4 | 72 ++++++++++++++++++++++++++++++++++++\n m4/ax_check_link_flag.m4    | 71 +++++++++++++++++++++++++++++++++++\n src/tcsd/Makefile.am        |  4 +-\n 4 files changed, 150 insertions(+), 2 deletions(-)\n create mode 100644 m4/ax_check_compile_flag.m4\n create mode 100644 m4/ax_check_link_flag.m4\n\ndiff --git a/configure.in b/configure.in\nindex add23dc..9603353 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -12,6 +12,7 @@ TSS_VER_MINOR=3\n # compute $target\n AC_CANONICAL_TARGET\n AM_INIT_AUTOMAKE([foreign subdir-objects 1.6])\n+AC_CONFIG_MACRO_DIR([m4])\n \n # Debugging support\n AC_ARG_ENABLE([debug],\n@@ -383,6 +384,10 @@ elif test x\"${prefix}\" = x\"NONE\"; then\n \tlocalstatedir=\"/usr/local/var\"\n fi\n \n+AX_CHECK_COMPILE_FLAG([-fPIE -DPIE], [PIE_CFLAGS=\"-fPIE -DPIE\"])\n+AX_CHECK_LINK_FLAG([-pie], [PIE_LDFLAGS=\"$PIE_LDFLAGS -pie\"])\n+AX_CHECK_LINK_FLAG([-Wl,-z,relro], [LDFLAGS=\"$LDFLAGS -Wl,-z,relro\"])\n+\n AC_OUTPUT(dist/tcsd.conf \\\n \t  dist/fedora/trousers.spec \\\n \t  dist/trousers.spec \\\ndiff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4\nnew file mode 100644\nindex 0000000..c3a8d69\n--- /dev/null\n+++ b/m4/ax_check_compile_flag.m4\n@@ -0,0 +1,72 @@\n+# ===========================================================================\n+#   http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html\n+# ===========================================================================\n+#\n+# SYNOPSIS\n+#\n+#   AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])\n+#\n+# DESCRIPTION\n+#\n+#   Check whether the given FLAG works with the current language's compiler\n+#   or gives an error.  (Warnings, however, are ignored)\n+#\n+#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on\n+#   success/failure.\n+#\n+#   If EXTRA-FLAGS is defined, it is added to the current language's default\n+#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with\n+#   the flags: \"CFLAGS EXTRA-FLAGS FLAG\".  This can for example be used to\n+#   force the compiler to issue an error when a bad flag is given.\n+#\n+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this\n+#   macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.\n+#\n+# LICENSE\n+#\n+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>\n+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>\n+#\n+#   This program is free software: you can redistribute it and/or modify it\n+#   under the terms of the GNU General Public License as published by the\n+#   Free Software Foundation, either version 3 of the License, or (at your\n+#   option) any later version.\n+#\n+#   This program is distributed in the hope that it will be useful, but\n+#   WITHOUT ANY WARRANTY; without even the implied warranty of\n+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\n+#   Public License for more details.\n+#\n+#   You should have received a copy of the GNU General Public License along\n+#   with this program. If not, see <http://www.gnu.org/licenses/>.\n+#\n+#   As a special exception, the respective Autoconf Macro's copyright owner\n+#   gives unlimited permission to copy, distribute and modify the configure\n+#   scripts that are the output of Autoconf when processing the Macro. You\n+#   need not follow the terms of the GNU General Public License when using\n+#   or distributing such scripts, even though portions of the text of the\n+#   Macro appear in them. The GNU General Public License (GPL) does govern\n+#   all other use of the material that constitutes the Autoconf Macro.\n+#\n+#   This special exception to the GPL applies to versions of the Autoconf\n+#   Macro released by the Autoconf Archive. When you make and distribute a\n+#   modified version of the Autoconf Macro, you may extend this special\n+#   exception to the GPL to apply to your modified version as well.\n+\n+#serial 2\n+\n+AC_DEFUN([AX_CHECK_COMPILE_FLAG],\n+[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX\n+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl\n+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [\n+  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS\n+  _AC_LANG_PREFIX[]FLAGS=\"$[]_AC_LANG_PREFIX[]FLAGS $4 $1\"\n+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],\n+    [AS_VAR_SET(CACHEVAR,[yes])],\n+    [AS_VAR_SET(CACHEVAR,[no])])\n+  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])\n+AS_IF([test x\"AS_VAR_GET(CACHEVAR)\" = xyes],\n+  [m4_default([$2], :)],\n+  [m4_default([$3], :)])\n+AS_VAR_POPDEF([CACHEVAR])dnl\n+])dnl AX_CHECK_COMPILE_FLAGS\ndiff --git a/m4/ax_check_link_flag.m4 b/m4/ax_check_link_flag.m4\nnew file mode 100644\nindex 0000000..e2d0d36\n--- /dev/null\n+++ b/m4/ax_check_link_flag.m4\n@@ -0,0 +1,71 @@\n+# ===========================================================================\n+#    http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html\n+# ===========================================================================\n+#\n+# SYNOPSIS\n+#\n+#   AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])\n+#\n+# DESCRIPTION\n+#\n+#   Check whether the given FLAG works with the linker or gives an error.\n+#   (Warnings, however, are ignored)\n+#\n+#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on\n+#   success/failure.\n+#\n+#   If EXTRA-FLAGS is defined, it is added to the linker's default flags\n+#   when the check is done.  The check is thus made with the flags: \"LDFLAGS\n+#   EXTRA-FLAGS FLAG\".  This can for example be used to force the linker to\n+#   issue an error when a bad flag is given.\n+#\n+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this\n+#   macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.\n+#\n+# LICENSE\n+#\n+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>\n+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>\n+#\n+#   This program is free software: you can redistribute it and/or modify it\n+#   under the terms of the GNU General Public License as published by the\n+#   Free Software Foundation, either version 3 of the License, or (at your\n+#   option) any later version.\n+#\n+#   This program is distributed in the hope that it will be useful, but\n+#   WITHOUT ANY WARRANTY; without even the implied warranty of\n+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\n+#   Public License for more details.\n+#\n+#   You should have received a copy of the GNU General Public License along\n+#   with this program. If not, see <http://www.gnu.org/licenses/>.\n+#\n+#   As a special exception, the respective Autoconf Macro's copyright owner\n+#   gives unlimited permission to copy, distribute and modify the configure\n+#   scripts that are the output of Autoconf when processing the Macro. You\n+#   need not follow the terms of the GNU General Public License when using\n+#   or distributing such scripts, even though portions of the text of the\n+#   Macro appear in them. The GNU General Public License (GPL) does govern\n+#   all other use of the material that constitutes the Autoconf Macro.\n+#\n+#   This special exception to the GPL applies to versions of the Autoconf\n+#   Macro released by the Autoconf Archive. When you make and distribute a\n+#   modified version of the Autoconf Macro, you may extend this special\n+#   exception to the GPL to apply to your modified version as well.\n+\n+#serial 2\n+\n+AC_DEFUN([AX_CHECK_LINK_FLAG],\n+[AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl\n+AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [\n+  ax_check_save_flags=$LDFLAGS\n+  LDFLAGS=\"$LDFLAGS $4 $1\"\n+  AC_LINK_IFELSE([AC_LANG_PROGRAM()],\n+    [AS_VAR_SET(CACHEVAR,[yes])],\n+    [AS_VAR_SET(CACHEVAR,[no])])\n+  LDFLAGS=$ax_check_save_flags])\n+AS_IF([test x\"AS_VAR_GET(CACHEVAR)\" = xyes],\n+  [m4_default([$2], :)],\n+  [m4_default([$3], :)])\n+AS_VAR_POPDEF([CACHEVAR])dnl\n+])dnl AX_CHECK_LINK_FLAGS\ndiff --git a/src/tcsd/Makefile.am b/src/tcsd/Makefile.am\nindex 2210734..6640ab2 100644\n--- a/src/tcsd/Makefile.am\n+++ b/src/tcsd/Makefile.am\n@@ -1,8 +1,8 @@\n sbin_PROGRAMS=tcsd\n \n-tcsd_CFLAGS=-DAPPID=\\\"TCSD\\\" -DVAR_PREFIX=\\\"@localstatedir@\\\" -DETC_PREFIX=\\\"@sysconfdir@\\\" -I${top_srcdir}/src/include -fPIE -DPIE\n+tcsd_CFLAGS=-DAPPID=\\\"TCSD\\\" -DVAR_PREFIX=\\\"@localstatedir@\\\" -DETC_PREFIX=\\\"@sysconfdir@\\\" -I${top_srcdir}/src/include $(PIE_CFLAGS)\n tcsd_LDADD=${top_builddir}/src/tcs/libtcs.a ${top_builddir}/src/tddl/libtddl.a -lpthread @CRYPTOLIB@\n-tcsd_LDFLAGS=@TCSD_LDFLAGS@\n+tcsd_LDFLAGS=$(PIE_LDFLAGS) $(RELRO_LDFLAGS)\n tcsd_SOURCES=svrside.c tcsd_conf.c tcsd_threads.c platform.c\n \n if TSS_BUILD_PS\n"
  },
  {
    "path": "package/trousers/0002-Check-that-getpwent_r-is-available-before-using-it.patch",
    "content": "From 9e42c405f30d2b52d019598436ea346ef8586f43 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?No=C3=A9=20Rubinstein?= <nrubinstein@aldebaran.com>\nDate: Wed, 24 Aug 2016 18:55:25 +0200\nSubject: [PATCH] Check that getpwent_r is available before using it\n\nThis fixes building trousers with musl\n\nSigned-off-by: Noé Rubinstein <nrubinstein@aldebaran.com>\n[Bernd: Rebased for version 0.3.14]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n configure.ac        |  4 ++++\n src/tspi/ps/tspps.c | 10 +++++-----\n 2 files changed, 9 insertions(+), 5 deletions(-)\n\ndiff --git a/configure.in b/configure.in\nindex fd3f5f1..e3d7acf 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -145,6 +145,10 @@ else\n \tAC_MSG_ERROR([\"gtk\", \"openssl\" and \"none\" are the only supported gui options for trousers])\n fi\n \n+# Look for getpwent_r. If it is not found, getpwent will be used instead, with\n+# an additional mutex.\n+AC_CHECK_FUNC(getpwent_r, [AC_DEFINE(HAVE_GETPWENT_R)])\n+\n #\n # The default port that the TCS daemon listens on\n #\ndiff --git a/src/tspi/ps/tspps.c b/src/tspi/ps/tspps.c\nindex c6f9c3d..9d00d2a 100644\n--- a/src/tspi/ps/tspps.c\n+++ b/src/tspi/ps/tspps.c\n@@ -45,7 +45,7 @@\n \n static int user_ps_fd = -1;\n static MUTEX_DECLARE_INIT(user_ps_lock);\n-#if (defined (__FreeBSD__) || defined (__OpenBSD__))\n+#ifndef HAVE_GETPWENT_R\n static MUTEX_DECLARE_INIT(user_ps_path);\n #endif\n static struct flock fl;\n@@ -60,7 +60,7 @@ get_user_ps_path(char **file)\n \tTSS_RESULT result;\n \tchar *file_name = NULL, *home_dir = NULL;\n \tstruct passwd *pwp;\n-#if (defined (__linux) || defined (linux) || defined(__GLIBC__))\n+#ifdef HAVE_GETPWENT_R\n \tstruct passwd pw;\n #endif\n \tstruct stat stat_buf;\n@@ -72,7 +72,7 @@ get_user_ps_path(char **file)\n \t\t*file = strdup(file_name);\n \t\treturn (*file) ? TSS_SUCCESS : TSPERR(TSS_E_OUTOFMEMORY);\n \t}\n-#if (defined (__FreeBSD__) || defined (__OpenBSD__))\n+#ifndef HAVE_GETPWENT_R\n \tMUTEX_LOCK(user_ps_path);\n #endif\n \n@@ -90,7 +90,7 @@ get_user_ps_path(char **file)\n #else\n \tsetpwent();\n \twhile (1) {\n-#if (defined (__linux) || defined (linux) || defined(__GLIBC__))\n+#ifdef HAVE_GETPWENT_R\n \t\trc = getpwent_r(&pw, buf, PASSWD_BUFSIZE, &pwp);\n \t\tif (rc) {\n \t\t\tLogDebugFn(\"USER PS: Error getting path to home directory: getpwent_r: %s\",\n@@ -99,7 +99,7 @@ get_user_ps_path(char **file)\n \t\t\treturn TSPERR(TSS_E_INTERNAL_ERROR);\n \t\t}\n \n-#elif (defined (__FreeBSD__) || defined (__OpenBSD__))\n+#else\n \t\tif ((pwp = getpwent()) == NULL) {\n \t\t\tLogDebugFn(\"USER PS: Error getting path to home directory: getpwent: %s\",\n                                    strerror(rc));\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/trousers/Config.in",
    "content": "config BR2_PACKAGE_TROUSERS\n\tbool \"trousers\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# doesn't build properly in static only configurations\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  The open-source TCG Software Stack (TSS).\n\n\t  This library enables the use of a Trusted Platform Module\n\t  that complies with the TPM specification, version 1.2. It\n\t  implements the TSS specification, version 1.2.\n\n\t  http://trousers.sourceforge.net/\n\ncomment \"trousers needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/trousers/trousers.hash",
    "content": "# http://sourceforge.net/projects/trousers/files/trousers/0.3.15/\nsha1  75cd40e17c9385299e50ff2099905865442b59f1  trousers-0.3.15.tar.gz\nmd5  eb1b02e98c7d360749b9076196db3f0f  trousers-0.3.15.tar.gz\n# Locally computed\nsha256  1e5be93e518372acf1d92d2f567d01a46fdb0b730487e544e6fb896c59cac77f  trousers-0.3.15.tar.gz\nsha256  1ad596d12e7471549663c03e280b5b5d084a2e853fb86e4d766109818f9d7dae  LICENSE\n"
  },
  {
    "path": "package/trousers/trousers.mk",
    "content": "################################################################################\n#\n# trousers\n#\n################################################################################\n\nTROUSERS_VERSION = 0.3.15\nTROUSERS_SITE = http://downloads.sourceforge.net/project/trousers/trousers/$(TROUSERS_VERSION)\nTROUSERS_LICENSE = BSD-3-Clause\nTROUSERS_LICENSE_FILES = LICENSE\nTROUSERS_CPE_ID_VENDOR = trustedcomputinggroup\nTROUSERS_INSTALL_STAGING = YES\n# Need autoreconf because of a patch touching configure.in and Makefile.am\nTROUSERS_AUTORECONF = YES\nTROUSERS_DEPENDENCIES = host-pkgconf openssl\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nTROUSERS_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_arc770d)$(BR2_arc750d),y)\nTROUSERS_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -mno-compact-casesi\"\nendif\n\n# The TrouSerS build system attempts to create the tss user and group\n# on the host system. Disable the user checking feature as a\n# workaround.\nTROUSERS_CONF_OPTS += --disable-usercheck\n\nifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),)\nTROUSERS_CONF_ENV += \\\n\tax_cv_check_cflags___fPIE__DPIE=no \\\n\tax_cv_check_ldflags___pie=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ts4900-fpga/Config.in",
    "content": "config BR2_PACKAGE_TS4900_FPGA\n\tbool \"ts4900-fpga\"\n\tdepends on BR2_arm\n\thelp\n\t  TS-4900's FPGA implements clocks, UART MUX, and GPIOs. One\n\t  of these GPIOs is used to enable the wifi module.\n\n\t  It is loaded by U-Boot during the boot sequence, the default\n\t  U-boot script expects to find it in the /boot folder.\n\n\t  http://wiki.embeddedarm.com/wiki/TS-4900#FPGA_Changelog\n"
  },
  {
    "path": "package/ts4900-fpga/ts4900-fpga.hash",
    "content": "# From ftp://ftp.embeddedarm.com/ts-socket-macrocontrollers/ts-4900-linux/fpga/ts4900-fpga-20150930.bin.md5\nmd5 bf93c03ef914cf008287c8cd60781cc8  ts4900-fpga-20150930.bin\n\n# Locally calculated\nsha256 242ac6a90bea9a95c937ea8952cdc9b02f543cea24a0359bed66a408a6dd8bf9 ts4900-fpga-20150930.bin\n"
  },
  {
    "path": "package/ts4900-fpga/ts4900-fpga.mk",
    "content": "################################################################################\n#\n# ts4900-fpga\n#\n################################################################################\n\nTS4900_FPGA_VERSION = 20150930\nTS4900_FPGA_SOURCE = ts4900-fpga-$(TS4900_FPGA_VERSION).bin\nTS4900_FPGA_SITE = ftp://ftp.embeddedarm.com/ts-socket-macrocontrollers/ts-4900-linux/fpga\n# No license file provided, Yocto recipe from the vendor claims MIT.\n# https://github.com/embeddedarm/meta-ts/blob/f31860f1204b64f765a5380d3b93a2cf18234f90/recipes-extras/ts4900-fpga/ts4900-fpga.bb#L6\n\ndefine TS4900_FPGA_EXTRACT_CMDS\n\tcp $(TS4900_FPGA_DL_DIR)/$(TS4900_FPGA_SOURCE) $(@D)\nendef\n\ndefine TS4900_FPGA_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/$(TS4900_FPGA_SOURCE) $(TARGET_DIR)/boot/ts4900-fpga.bin\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/tslib/Config.in",
    "content": "config BR2_PACKAGE_TSLIB\n\tbool \"tslib\"\n\thelp\n\t  Tslib is a filtering layer for touchscreen panel events.\n\n\t  http://tslib.org\n"
  },
  {
    "path": "package/tslib/tslib.hash",
    "content": "# https://github.com/libts/tslib/releases/download/1.22/tslib-1.22.tar.xz.sha256\nsha256  aaf0aed410a268d7b51385d07fe4d9d64312038e87c447ec8a24c8db0a15617a  tslib-1.22.tar.xz\n\n# Locally computed\nsha256  9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9  COPYING\n"
  },
  {
    "path": "package/tslib/tslib.mk",
    "content": "################################################################################\n#\n# tslib\n#\n################################################################################\n\nTSLIB_VERSION = 1.22\nTSLIB_SITE = https://github.com/libts/tslib/releases/download/$(TSLIB_VERSION)\nTSLIB_SOURCE = tslib-$(TSLIB_VERSION).tar.xz\nTSLIB_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries)\nTSLIB_LICENSE_FILES = COPYING\n\nTSLIB_INSTALL_STAGING = YES\nTSLIB_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LDFLAGS=-L$(STAGING_DIR)/usr/lib install\n\nifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6),)\nTSLIB_CONF_OPTS += --disable-tools\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nTSLIB_CONF_OPTS += \\\n\t--enable-input=static \\\n\t--enable-linear=static \\\n\t--enable-median=static \\\n\t--enable-pthres=static \\\n\t--enable-iir=static \\\n\t--enable-dejitter=static \\\n\t--enable-debounce=static \\\n\t--enable-skip=static \\\n\t--enable-lowpass=static \\\n\t--enable-invert=static \\\n\t--enable-evthres=static\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tstools/0001-build-get-along-with-buildroot.patch",
    "content": "From 44f80bce0914d4d9c5e7486c7cdb521ba637b324 Mon Sep 17 00:00:00 2001\nFrom: Tzu-Jung Lee <tjlee@ambarella.com>\nDate: Fri, 19 Jul 2013 22:45:18 +0800\nSubject: [PATCH] build: get along with buildroot\n\nSigned-off-by: Tzu-Jung Lee <tjlee@ambarella.com>\n---\n Makefile | 12 ++++++------\n 1 file changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 2c3568e..98bb994 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -34,12 +34,6 @@ SHELL = /bin/sh\n .SUFFIXES:\n .SUFFIXES: .c .o\n \n-ifdef CROSS_COMPILE\n-CC = $(CROSS_COMPILE)gcc\n-else\n-CC = gcc\n-endif\n-\n # Use WARN=1 periodically to get too many warnings...\n ifdef WARN\n WARNING_FLAGS = -Wall -W -Wfloat-equal -Wundef -Wshadow -Wpointer-arith -Wcast-qual -Wconversion -Wmissing-prototypes -Wmissing-declarations -Wunreachable-code -Winline\n@@ -452,3 +446,9 @@ test_lists:\t$(BINDIR)/test_nal_unit_list  $(BINDIR)/test_es_unit_list\n \t@echo +++ Testing ES unit lists\n \t$(BINDIR)/test_es_unit_list\n \t@echo +++ Test succeeded\n+\n+.PHONY: install\n+install:\n+\t@for i in $(PROGS); do \\\n+\t\tcp -f $$i $(DESTDIR)/usr/bin/; \\\n+\tdone\n-- \n1.8.3.2\n\n"
  },
  {
    "path": "package/tstools/Config.in",
    "content": "config BR2_PACKAGE_TSTOOLS\n\tbool \"tstools\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  This is a set of cross-platform command line tools for\n\t  working with MPEG data.\n\n\t  The emphasis is on relatively simple tools which concentrate\n\t  on MPEG (H.264 and H.262) data packaged according to H.222\n\t  (i.e., TS or PS), with a particular interest in checking for\n\t  conformance.\n\n\t  Transport Stream (TS) is typically used for distribution of\n\t  cable and satellite data. Program Stream (PS) is typically\n\t  used to store data on DVDs.\n\n\t  https://github.com/kynesim/tstools/\n\ncomment \"tstools needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/tstools/tstools.hash",
    "content": "# Locally calculated\nsha256 3d2b2375e2874933f9aa59d4f25bb6b334747219eb0d7a076974e61222d59bf6  tstools-08f6be304040e7b84760ac3920bcff4a563b6cd2.tar.gz\n"
  },
  {
    "path": "package/tstools/tstools.mk",
    "content": "################################################################################\n#\n# tstools\n#\n################################################################################\n\n# No releases or tags yet. Use the latest commit ID from master branch.\nTSTOOLS_VERSION = 08f6be304040e7b84760ac3920bcff4a563b6cd2\nTSTOOLS_SITE = $(call github,kynesim,tstools,$(TSTOOLS_VERSION))\n# tstools upstream doesn't contain any license file so far. See:\n# https://github.com/kynesim/tstools/issues/32\nTSTOOLS_LICENSE = MPL-1.1\nTSTOOLS_LICENSE_FILES =\n\ndefine TSTOOLS_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) LD=\"$(TARGET_CC)\" $(TARGET_MAKE_ENV) \\\n\t\t$(MAKE1) -C $(@D)\nendef\n\ndefine TSTOOLS_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tDESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ttyd/Config.in",
    "content": "config BR2_PACKAGE_TTYD\n\tbool \"ttyd\"\n\tdepends on !BR2_STATIC_LIBS # libuv, libwebsockets\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv, json-c\n\tdepends on BR2_USE_MMU # libuv\n\tselect BR2_PACKAGE_JSON_C\n\tselect BR2_PACKAGE_LIBUV\n\tselect BR2_PACKAGE_LIBWEBSOCKETS\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  ttyd is a simple command-line tool for sharing terminal\n\t  over the web.\n\n\t  https://github.com/tsl0922/ttyd\n\ncomment \"ttyd needs a toolchain w/ NPTL, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n"
  },
  {
    "path": "package/ttyd/ttyd.hash",
    "content": "# Locally computed:\nsha256  1116419527edfe73717b71407fb6e06f46098fc8a8e6b0bb778c4c75dc9f64b9  ttyd-1.6.3.tar.gz\nsha256  711762f081c180ade3d09d7b0b7537eaf35eca8d1671e47bc66eaa39376edb12  LICENSE\n"
  },
  {
    "path": "package/ttyd/ttyd.mk",
    "content": "################################################################################\n#\n# ttyd\n#\n################################################################################\n\nTTYD_VERSION = 1.6.3\nTTYD_SITE = $(call github,tsl0922,ttyd,$(TTYD_VERSION))\nTTYD_LICENSE = MIT\nTTYD_LICENSE_FILES = LICENSE\nTTYD_DEPENDENCIES = json-c libuv libwebsockets openssl zlib\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/tunctl/Config.in",
    "content": "config BR2_PACKAGE_TUNCTL\n\tbool \"tunctl\"\n\thelp\n\t  Tunctl is a tool for controlling the TUN/TAP driver in Linux.\n\n\t  https://sourceforge.net/projects/tunctl/\n"
  },
  {
    "path": "package/tunctl/tunctl.hash",
    "content": "# Locally computed:\nsha256  aa2a6c4cc6bfacb11e0d9f62334a6638a0d435475c61230116f00b6af8b14fff  tunctl-1.5.tar.gz\nsha256  bcd12b6749dbd86c051cc2ef9e838096741602d4db213cc866b1da6cfeda5f16  tunctl.c\n"
  },
  {
    "path": "package/tunctl/tunctl.mk",
    "content": "################################################################################\n#\n# tunctl\n#\n################################################################################\n\nTUNCTL_VERSION = 1.5\nTUNCTL_SITE = http://downloads.sourceforge.net/project/tunctl/tunctl/$(TUNCTL_VERSION)\n\nTUNCTL_LICENSE = GPL-2.0\nTUNCTL_LICENSE_FILES = tunctl.c\n\ndefine TUNCTL_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) tunctl\nendef\n\ndefine TUNCTL_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/tunctl $(TARGET_DIR)/usr/sbin/tunctl\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/turbolua/Config.in",
    "content": "config BR2_PACKAGE_TURBOLUA\n\tbool \"turbolua\"\n\tdepends on BR2_PACKAGE_LUAJIT\n\thelp\n\t  Turbo.lua is a framework built for LuaJIT 2 to simplify the\n\t  task of building fast and scalable network applications. It\n\t  uses a event-driven, non-blocking, no thread design to deliver\n\t  excellent performance and minimal footprint to high-load\n\t  applications while also providing excellent support for\n\t  embedded uses. The toolkit can be used for HTTP REST API's,\n\t  traditional dynamic web pages through templating, open\n\t  connections like WebSockets, or just as high level building\n\t  blocks for native speed network applications.\n\n\t  http://www.turbolua.org\n\ncomment \"turbolua needs LuaJIT\"\n\tdepends on !BR2_PACKAGE_LUAJIT\n"
  },
  {
    "path": "package/turbolua/turbolua.hash",
    "content": "# Locally calculated\nsha256 4dbfbe4919118977c2ca40a4da81054ffe407d09f38bf5420eec5ae1449299d3 turbolua-2.1.3.tar.gz\nsha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE\n"
  },
  {
    "path": "package/turbolua/turbolua.mk",
    "content": "################################################################################\n#\n# turbolua\n#\n################################################################################\n\nTURBOLUA_VERSION = 2.1.3\nTURBOLUA_SITE = $(call github,kernelsauce,turbo,v$(TURBOLUA_VERSION))\nTURBOLUA_DEPENDENCIES = luajit\nTURBOLUA_LICENSE = Apache-2.0\nTURBOLUA_LICENSE_FILES = LICENSE\n\nTURBOLUA_MAKE_OPTS = \\\n\t$(TARGET_CONFIGURE_OPTS) \\\n\tLUAJIT_VERSION=\"$(LUAJIT_VERSION)\"\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nTURBOLUA_MAKE_OPTS += SSL=openssl\nTURBOLUA_DEPENDENCIES += openssl\nelse\nTURBOLUA_MAKE_OPTS += SSL=none\nendif\n\ndefine TURBOLUA_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TURBOLUA_MAKE_OPTS) -C $(@D) all\nendef\n\ndefine TURBOLUA_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TURBOLUA_MAKE_OPTS) LDCONFIG=true \\\n\t\tPREFIX=\"$(TARGET_DIR)/usr\" -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/tvheadend/0001-no-check_config.patch",
    "content": "Makefile: do not use check_config\n\ntest(1) only uses the second to compare two files dates.\ntest(1) also does a strict comparison wrt. dates.\n\nBut, on very fast systems, the configure and .config.mk\nfiles may be created in the same second, and so would lead\nto a false comparison of the files' dates.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN tvheadend-c84bc2b72b462ef2dbed305f3fd0bb3fa5046fc3.orig/Makefile tvheadend-c84bc2b72b462ef2dbed305f3fd0bb3fa5046fc3/Makefile\n--- tvheadend-c84bc2b72b462ef2dbed305f3fd0bb3fa5046fc3.orig/Makefile\t2014-03-09 14:47:43.780025330 +0100\n+++ tvheadend-c84bc2b72b462ef2dbed305f3fd0bb3fa5046fc3/Makefile\t2014-03-09 14:48:40.836539093 +0100\n@@ -708,7 +708,7 @@\n \t$(ROOTDIR)/configure $(CONFIGURE_ARGS)\n \n # Binary\n-${PROG}: .config.mk make_webui $(OBJS)\n+${PROG}: make_webui $(OBJS)\n \t$(pCC) -o $@ $(OBJS) $(CFLAGS) $(LDFLAGS)\n \n # Object\n"
  },
  {
    "path": "package/tvheadend/Config.in",
    "content": "comment \"tvheadend needs a toolchain w/ NPTL, headers >= 3.2, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 || BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\nmenuconfig BR2_PACKAGE_TVHEADEND\n\tbool \"tvheadend\"\n\tdepends on !BR2_STATIC_LIBS # dladdr()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_DTV_SCAN_TABLES\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\n\t  Tvheadend is a TV streaming server for Linux supporting\n\t  DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, and Analog video\n\t  (V4L) as input sources.\n\n\t  https://www.lonelycoder.com/redmine/projects/tvheadend/\n\n\t  Note:\n\t    - on first run, tvheadend will start in wizard mode; the\n\t      webUI is available on port 9981.\n\t    - if you want Avahi support, you'll need to enable:\n\t          Avahi, D-Bus, libdaemon\n\nif BR2_PACKAGE_TVHEADEND\n\nconfig BR2_PACKAGE_TVHEADEND_DESCRAMBLER\n\tbool \"descrambler support\"\n\tdefault y\n\thelp\n\t  Enable support for various descrambler modules.\n\nconfig BR2_PACKAGE_TVHEADEND_IPTV\n\tbool \"IPTV support\"\n\tdefault y\n\thelp\n\t  Enable IPTV support.\n\n\t  Note that some IPTV streams will need to be piped through\n\t  ffmpeg (the commandline tool), so you may have to enable it\n\t  with:\n\t    BR2_PACKAGE_FFMPEG=y\n\t    BR2_PACKAGE_FFMPEG_FFMPEG=y\n\nconfig BR2_PACKAGE_TVHEADEND_SATIP\n\tbool \"SAT>IP support\"\n\tdefault y\n\thelp\n\t  Enable SAT>IP support.\n\nconfig BR2_PACKAGE_TVHEADEND_TIMESHIFT\n\tbool \"timeshift support\"\n\tdefault y\n\thelp\n\t  Enable timeshift support.\n\nconfig BR2_PACKAGE_TVHEADEND_TRANSCODING\n\tbool \"transcoding support\"\n\tdepends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_FFMPEG\n\tselect BR2_PACKAGE_FFMPEG_AVRESAMPLE\n\tselect BR2_PACKAGE_FFMPEG_GPL # needed for x264 support\n\tselect BR2_PACKAGE_FFMPEG_SWSCALE\n\tselect BR2_PACKAGE_LIBVPX\n\tselect BR2_PACKAGE_X264\n\thelp\n\t  Enable transcoding support.\n\nendif\n"
  },
  {
    "path": "package/tvheadend/S99tvheadend",
    "content": "#! /bin/sh\n# tvheadend startup script inspired by the Debian one in the package\n\n# Author: Yann E. MORIN <yann.morin.1998@free.fr>\n\nPATH=/usr/sbin:/usr/bin:/sbin:/bin\nNAME=tvheadend\nPIDFILE=/var/run/$NAME.pid\n\n# Read configuration variable file if it is present\n[ -r \"/etc/default/${NAME}\" ] && . \"/etc/default/${NAME}\"\n\nARGS=\"-f\"\n[ -z \"${TVH_USER}\"      ] || ARGS=\"${ARGS} -u ${TVH_USER}\"\n[ -z \"${TVH_GROUP}\"     ] || ARGS=\"${ARGS} -g ${TVH_GROUP}\"\n[ -z \"${TVH_ADAPTERS}\"  ] || ARGS=\"${ARGS} -a ${TVH_ADAPTERS}\"\n[ -z \"${TVH_HTTP_PORT}\" ] || ARGS=\"${ARGS} -w ${TVH_HTTP_PORT}\"\n[ -z \"${TVH_HTSP_PORT}\" ] || ARGS=\"${ARGS} -e ${TVH_HTSP_PORT}\"\n[ \"${TVH_DEBUG}\" = \"1\"  ] && ARGS=\"${ARGS} -s\"\n\n# If first run, start in wizard mode\nif [ -z \"$(ls -1 /home/tvheadend/.hts/tvheadend/accesscontrol/ 2>/dev/null)\" ]; then\n    ARGS=\"${ARGS} -C\"\nfi\n\ncase \"$1\" in\n    start)\n        printf \"Starting TVHeadend daemon: \"\n        if start-stop-daemon -S -q -p ${PIDFILE} -m --exec /usr/bin/tvheadend -- ${ARGS}; then\n            printf \"OK\\n\"\n        else\n            printf \"failed\\n\"\n        fi\n        ;;\n    stop)\n        printf \"Stopping TVHeadend daemon: \"\n        start-stop-daemon -K -q -p ${PIDFILE} -s TERM\n        sleep 2\n        if start-stop-daemon -K -q -p ${PIDFILE} -t; then\n            printf \"failed, killing: \"\n            start-stop-daemon -K -q -p ${PIDFILE} -s KILL -o\n        fi\n        printf \"OK\\n\"\n        ;;\n    restart|force-reload)\n        \"${0}\" stop\n        sleep 2\n        \"${0}\" start\n        ;;\n    *)\n        echo \"Usage: $0 {start|stop|restart|force-reload}\" >&2\n        exit 1\n        ;;\nesac\n\n:\n"
  },
  {
    "path": "package/tvheadend/etc.default.tvheadend",
    "content": "TVH_USER=tvheadend\nTVH_GROUP=tvheadend\n#TVH_ADAPTERS=\n#TVH_HTTP_PORT=9981\n#TVH_HTSP_PORT=9982\n#TVH_DEBUG=1\n"
  },
  {
    "path": "package/tvheadend/tvheadend.hash",
    "content": "# Locally computed\nsha256  fc734c36c98aa1535172621c3b6fcac9f1d253f850abc50d01b771937bfd2a76  tvheadend-dbaa0f850394af8ab845df802f5f781ac0218ec4.tar.gz\nsha256  54dc3cbc00bf126bcba43e2af7f3ad1dc00f335985da1409fa943c7b7256d942  LICENSE.md\n"
  },
  {
    "path": "package/tvheadend/tvheadend.mk",
    "content": "################################################################################\n#\n# tvheadend\n#\n################################################################################\n\nTVHEADEND_VERSION = dbaa0f850394af8ab845df802f5f781ac0218ec4\nTVHEADEND_SITE = $(call github,tvheadend,tvheadend,$(TVHEADEND_VERSION))\nTVHEADEND_LICENSE = GPL-3.0+\nTVHEADEND_LICENSE_FILES = LICENSE.md\nTVHEADEND_DEPENDENCIES = \\\n\thost-gettext \\\n\thost-pkgconf \\\n\thost-pngquant \\\n\thost-python3 \\\n\topenssl\n\nifeq ($(BR2_PACKAGE_AVAHI),y)\nTVHEADEND_DEPENDENCIES += avahi\nendif\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nTVHEADEND_DEPENDENCIES += dbus\nTVHEADEND_CONF_OPTS += --enable-dbus-1\nelse\nTVHEADEND_CONF_OPTS += --disable-dbus-1\nendif\n\nifeq ($(BR2_PACKAGE_TVHEADEND_TRANSCODING),y)\nTVHEADEND_CONF_OPTS += --enable-libav --enable-libx264\nTVHEADEND_DEPENDENCIES += ffmpeg x264\nifeq ($(BR2_PACKAGE_LIBVA),y)\nTVHEADEND_CONF_OPTS += --enable-vaapi\nTVHEADEND_DEPENDENCIES += libva\nelse\nTVHEADEND_CONF_OPTS += --disable-vaapi\nendif\nifeq ($(BR2_PACKAGE_OPUS),y)\nTVHEADEND_CONF_OPTS += --enable-libopus\nTVHEADEND_DEPENDENCIES += opus\nelse\nTVHEADEND_CONF_OPTS += --disable-libopus\nendif\nifeq ($(BR2_PACKAGE_RPI_USERLAND),y)\nTVHEADEND_CONF_OPTS += --enable-omx\nTVHEADEND_DEPENDENCIES += rpi-userland\nelse\nTVHEADEND_CONF_OPTS += --disable-omx\nendif\nifeq ($(BR2_PACKAGE_X265),y)\nTVHEADEND_CONF_OPTS += --enable-libx265\nTVHEADEND_DEPENDENCIES += x265\nelse\nTVHEADEND_CONF_OPTS += --disable-libx265\nendif\nelse\nTVHEADEND_CONF_OPTS += \\\n\t--disable-libav \\\n\t--disable-libopus \\\n\t--disable-omx \\\n\t--disable-vaapi \\\n\t--disable-libx264 \\\n\t--disable-libx265\nendif\n\nifeq ($(BR2_PACKAGE_TVHEADEND_DESCRAMBLER),y)\nTVHEADEND_CONF_OPTS += \\\n\t--enable-cardclient \\\n\t--enable-cwc \\\n\t--enable-cccam \\\n\t--enable-capmt \\\n\t--enable-constcw\nelse\nTVHEADEND_CONF_OPTS += \\\n\t--disable-cardclient \\\n\t--disable-cwc \\\n\t--disable-cccam \\\n\t--disable-capmt \\\n\t--disable-constcw\nendif\n\nifeq ($(BR2_PACKAGE_TVHEADEND_IPTV),y)\nTVHEADEND_CONF_OPTS += --enable-iptv\nelse\nTVHEADEND_CONF_OPTS += --disable-iptv\nendif\n\nifeq ($(BR2_PACKAGE_TVHEADEND_SATIP),y)\nTVHEADEND_CONF_OPTS += --enable-satip_client --enable-satip_server\nelse\nTVHEADEND_CONF_OPTS += --disable-satip_client --disable-satip_server\nendif\n\nifeq ($(BR2_PACKAGE_TVHEADEND_TIMESHIFT),y)\nTVHEADEND_CONF_OPTS += --enable-timeshift\nelse\nTVHEADEND_CONF_OPTS += --disable-timeshift\nendif\n\nifeq ($(BR2_PACKAGE_LIBDVBCSA),y)\nTVHEADEND_DEPENDENCIES += libdvbcsa\nTVHEADEND_CONF_OPTS += --enable-tvhcsa\nelse\nTVHEADEND_CONF_OPTS += --disable-tvhcsa\nendif\n\nifeq ($(BR2_PACKAGE_LIBHDHOMERUN),y)\nTVHEADEND_DEPENDENCIES += libhdhomerun\nTVHEADEND_CONF_OPTS += --enable-hdhomerun_client\nelse\nTVHEADEND_CONF_OPTS += --disable-hdhomerun_client\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nTVHEADEND_DEPENDENCIES += libiconv\nendif\n\nTVHEADEND_CFLAGS = $(TARGET_CFLAGS)\nifeq ($(BR2_PACKAGE_LIBURIPARSER),y)\nTVHEADEND_DEPENDENCIES += liburiparser\nTVHEADEND_CFLAGS += $(if $(BR2_USE_WCHAR),,-DURI_NO_UNICODE)\nendif\n\nifeq ($(BR2_PACKAGE_PCRE),y)\nTVHEADEND_DEPENDENCIES += pcre\nTVHEADEND_CONF_OPTS += --enable-pcre\nelse\nTVHEADEND_CONF_OPTS += --disable-pcre\nendif\n\nifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),)\nTVHEADEND_CONF_OPTS += --disable-pie\nendif\n\nTVHEADEND_DEPENDENCIES += dtv-scan-tables\n\n# The tvheadend build system expects the transponder data to be present inside\n# its source tree. To prevent a download initiated by the build system just\n# copy the data files in the right place and add the corresponding stamp file.\ndefine TVHEADEND_INSTALL_DTV_SCAN_TABLES\n\t$(INSTALL) -d $(@D)/data/dvb-scan\n\tcp -r $(TARGET_DIR)/usr/share/dvb/* $(@D)/data/dvb-scan/\n\ttouch $(@D)/data/dvb-scan/.stamp\nendef\nTVHEADEND_PRE_CONFIGURE_HOOKS += TVHEADEND_INSTALL_DTV_SCAN_TABLES\n\ndefine TVHEADEND_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t$(TARGET_CONFIGURE_ARGS) \\\n\t\tCFLAGS=\"$(TVHEADEND_CFLAGS)\" \\\n\t\t./configure \\\n\t\t\t--prefix=/usr \\\n\t\t\t--arch=\"$(ARCH)\" \\\n\t\t\t--cpu=\"$(GCC_TARGET_CPU)\" \\\n\t\t\t--nowerror \\\n\t\t\t--python=\"$(HOST_DIR)/bin/python3\" \\\n\t\t\t--enable-dvbscan \\\n\t\t\t--enable-bundle \\\n\t\t\t--enable-pngquant \\\n\t\t\t--disable-ffmpeg_static \\\n\t\t\t--disable-hdhomerun_static \\\n\t\t\t$(TVHEADEND_CONF_OPTS) \\\n\t)\nendef\n\ndefine TVHEADEND_FIX_PNGQUANT_PATH\n\t$(SED) \"s%^pngquant_bin =.*%pngquant_bin = '$(HOST_DIR)/bin/pngquant'%\" \\\n\t\t$(@D)/support/mkbundle\nendef\nTVHEADEND_POST_CONFIGURE_HOOKS += TVHEADEND_FIX_PNGQUANT_PATH\n\ndefine TVHEADEND_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine TVHEADEND_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=\"$(TARGET_DIR)\" install\nendef\n\n# Remove documentation and source files that are not needed because we\n# use the bundled web interface version.\ndefine TVHEADEND_CLEAN_SHARE\n\trm -rf $(TARGET_DIR)/usr/share/tvheadend/docs\n\trm -rf $(TARGET_DIR)/usr/share/tvheadend/src\nendef\n\nTVHEADEND_POST_INSTALL_TARGET_HOOKS += TVHEADEND_CLEAN_SHARE\n\n#----------------------------------------------------------------------------\n# To run tvheadend, we need:\n#  - a startup script, and its config file\n#  - a non-root user to run as, and a home for it that is not accessible\n#    to the other users (because there will be crendentials in there)\n\ndefine TVHEADEND_INSTALL_INIT_SYSV\n\t$(INSTALL) -D package/tvheadend/etc.default.tvheadend \\\n\t\t$(TARGET_DIR)/etc/default/tvheadend\n\t$(INSTALL) -D package/tvheadend/S99tvheadend \\\n\t\t$(TARGET_DIR)/etc/init.d/S99tvheadend\nendef\n\ndefine TVHEADEND_USERS\n\ttvheadend -1 tvheadend -1 * /home/tvheadend - video TVHeadend daemon\nendef\ndefine TVHEADEND_PERMISSIONS\n\t/home/tvheadend r 0700 tvheadend tvheadend - - - - -\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/twolame/Config.in",
    "content": "config BR2_PACKAGE_TWOLAME\n\tbool \"twolame\"\n\thelp\n\t  TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder\n\t  based on tooLAME by Mike Cheng, which in turn is based upon\n\t  the ISO dist10 code and portions of LAME.\n\n\t  http://www.twolame.org/\n"
  },
  {
    "path": "package/twolame/twolame.hash",
    "content": "# Locally computed:\nsha256  cc35424f6019a88c6f52570b63e1baf50f62963a3eac52a03a800bb070d7c87d  twolame-0.4.0.tar.gz\nsha256  257a842724705950b07da76ce0e22ffa80ec77b3e9dfc6702522ac342409da0f  COPYING\n"
  },
  {
    "path": "package/twolame/twolame.mk",
    "content": "################################################################################\n#\n# twolame\n#\n################################################################################\n\nTWOLAME_VERSION = 0.4.0\nTWOLAME_SITE = http://downloads.sourceforge.net/project/twolame/twolame/$(TWOLAME_VERSION)\nTWOLAME_INSTALL_STAGING = YES\nTWOLAME_LICENSE = LGPL-2.1+\nTWOLAME_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_LIBSNDFILE),y)\nTWOLAME_DEPENDENCIES += host-pkgconf libsndfile\nTWOLAME_CONF_OPTS += --enable-sndfile\nelse\nTWOLAME_CONF_OPTS += --disable-sndfile\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/tz/Config.in",
    "content": "config BR2_PACKAGE_TZ\n\tbool\n\thelp\n\t  Timezone info for uClibc.\n"
  },
  {
    "path": "package/tz/tz.mk",
    "content": "################################################################################\n#\n# tz\n#\n################################################################################\n\nTZ_DEPENDENCIES = host-tzdata host-tzdump\nTZ_LICENSE = Public domain\n\nTZ_LOCALTIME = $(call qstrip,$(BR2_TARGET_LOCALTIME))\nifneq ($(TZ_LOCALTIME),)\ndefine TZ_SET_LOCALTIME\n\tif [ ! -f $(TARGET_DIR)/usr/share/zoneinfo/uclibc/$(TZ_LOCALTIME) ]; then \\\n\t\tprintf \"Error: '%s' is not a valid timezone, check your BR2_TARGET_LOCALTIME setting\\n\" \\\n\t\t\t\"$(TZ_LOCALTIME)\"; \\\n\t\texit 1; \\\n\tfi\n\tln -sf ../usr/share/zoneinfo/uclibc/$(TZ_LOCALTIME) $(TARGET_DIR)/etc/TZ\nendef\nendif\n\ndefine TZ_BUILD_CMDS\n\t(cd $(HOST_DIR)/share/zoneinfo/posix/; \\\n\t\tfor i in $$(find . -type f); do \\\n\t\t\tmkdir -p $(@D)/output/$$(dirname $$i); \\\n\t\t\t$(TZDUMP) -p . -q $${i#./} | sed '1d' > $(@D)/output/$$i; \\\n\t\tdone \\\n\t)\nendef\n\ndefine TZ_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0644 $(HOST_DIR)/share/zoneinfo/zone.tab \\\n\t\t$(TARGET_DIR)/usr/share/zoneinfo/zone.tab\n\t$(INSTALL) -D -m 0644 $(HOST_DIR)/share/zoneinfo/iso3166.tab \\\n\t\t$(TARGET_DIR)/usr/share/zoneinfo/iso3166.tab\n\tmkdir -p $(TARGET_DIR)/usr/share/zoneinfo/uclibc\n\tcp -a $(@D)/output/* $(TARGET_DIR)/usr/share/zoneinfo/uclibc\n\t$(TZ_SET_LOCALTIME)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/tzdata/Config.in",
    "content": "# This package is not meant to be user-visible.\n# It gets selected by BR2_TARGET_TZ in system/Config.in\n\nconfig BR2_PACKAGE_TZDATA\n\tbool\n\thelp\n\t  Time zone database\n\n\t  http://www.iana.org/time-zones/repository/tz-link.html\n"
  },
  {
    "path": "package/tzdata/tzdata.hash",
    "content": "# From https://mm.icann.org/pipermail/tz-announce/2021-January/000065.html\nsha512  7cdd762ec90ce12a30fa36b1d66d1ea82d9fa21e514e2b9c7fcbe2541514ee0fadf30843ff352c65512fb270857b51d1517b45e1232b89c6f954ba9ff1833bb3  tzdata2021a.tar.gz\n# Locally computed:\nsha256  0613408568889f5739e5ae252b722a2659c02002839ad970a63dc5e9174b27cf  LICENSE\n"
  },
  {
    "path": "package/tzdata/tzdata.mk",
    "content": "################################################################################\n#\n# tzdata\n#\n################################################################################\n\nTZDATA_VERSION = 2021a\nTZDATA_SOURCE = tzdata$(TZDATA_VERSION).tar.gz\nTZDATA_SITE = https://www.iana.org/time-zones/repository/releases\nTZDATA_STRIP_COMPONENTS = 0\nTZDATA_DEPENDENCIES = host-tzdata\nHOST_TZDATA_DEPENDENCIES = host-zic\nTZDATA_LICENSE = Public domain\nTZDATA_LICENSE_FILES = LICENSE\n\n# Take care when re-ordering this list since this might break zone\n# dependencies\nTZDATA_DEFAULT_ZONELIST = \\\n\tafrica antarctica asia australasia europe northamerica \\\n\tsouthamerica etcetera backward factory\n\nifeq ($(call qstrip,$(BR2_TARGET_TZ_ZONELIST)),default)\nTZDATA_ZONELIST = $(TZDATA_DEFAULT_ZONELIST)\nelse\nTZDATA_ZONELIST = $(call qstrip,$(BR2_TARGET_TZ_ZONELIST))\nendif\n\nTZDATA_LOCALTIME = $(call qstrip,$(BR2_TARGET_LOCALTIME))\nifneq ($(TZDATA_LOCALTIME),)\ndefine TZDATA_SET_LOCALTIME\n\tif [ ! -f $(TARGET_DIR)/usr/share/zoneinfo/$(TZDATA_LOCALTIME) ]; then \\\n\t\tprintf \"Error: '%s' is not a valid timezone, check your BR2_TARGET_LOCALTIME setting\\n\" \\\n\t\t\t\"$(TZDATA_LOCALTIME)\"; \\\n\t\texit 1; \\\n\tfi\n\tln -sf ../usr/share/zoneinfo/$(TZDATA_LOCALTIME) $(TARGET_DIR)/etc/localtime\n\techo \"$(TZDATA_LOCALTIME)\" >$(TARGET_DIR)/etc/timezone\nendef\nendif\n\ndefine TZDATA_INSTALL_TARGET_CMDS\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/share/zoneinfo\n\tcp -a $(HOST_DIR)/share/zoneinfo/* $(TARGET_DIR)/usr/share/zoneinfo\n\tcd $(TARGET_DIR)/usr/share/zoneinfo; \\\n\tfor zone in posix/*; do \\\n\t    ln -sfn \"$${zone}\" \"$${zone##*/}\"; \\\n\tdone\n\t$(TZDATA_SET_LOCALTIME)\nendef\n\ndefine HOST_TZDATA_BUILD_CMDS\n\t(cd $(@D); \\\n\t\tfor zone in $(TZDATA_ZONELIST); do \\\n\t\t\t$(ZIC) -b fat -d _output/posix $$zone || exit 1; \\\n\t\t\t$(ZIC) -b fat -d _output/right -L leapseconds $$zone || exit 1; \\\n\t\tdone; \\\n\t)\nendef\n\ndefine HOST_TZDATA_INSTALL_CMDS\n\t$(INSTALL) -d -m 0755 $(HOST_DIR)/share/zoneinfo\n\tcp -a $(@D)/_output/* $(@D)/*.tab $(HOST_DIR)/share/zoneinfo\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/tzdump/tzdump.hash",
    "content": "# locally computed\nsha256  e078ba9bd90cb46368beb3cfef2288194e5edefd53ad9565961a97d1c7d6c59f  tzdump-e1a52ce12a701b8ea4163d6719713e38c0e53d35.tar.gz\n"
  },
  {
    "path": "package/tzdump/tzdump.mk",
    "content": "################################################################################\n#\n# tzdump\n#\n################################################################################\n\nTZDUMP_VERSION = e1a52ce12a701b8ea4163d6719713e38c0e53d35\nTZDUMP_SITE = $(call github,alexandrebelloni,tzdump,$(TZDUMP_VERSION))\nHOST_TZDUMP_DEPENDENCIES = host-zic\n\ndefine HOST_TZDUMP_BUILD_CMDS\n\tcd $(@D) && $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o tzdump tzdump.c\nendef\n\ndefine HOST_TZDUMP_INSTALL_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/tzdump $(HOST_DIR)/sbin/tzdump\nendef\n\n$(eval $(host-generic-package))\n\nTZDUMP = $(HOST_DIR)/sbin/tzdump\n"
  },
  {
    "path": "package/uacme/Config.in",
    "content": "config BR2_PACKAGE_UACME\n\tbool \"uacme\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_OPENSSL if !(BR2_PACKAGE_GNUTLS || BR2_PACKAGE_MBEDTLS)\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  uacme is a client for the ACMEv2 protocol described in\n\t  RFC8555, written in plain C with minimal dependencies\n\t  (libcurl and either of GnuTLS, OpenSSL or mbedTLS). The\n\t  ACMEv2 protocol allows a Certificate Authority\n\t  (https://letsencrypt.org is a popular one) and an applicant\n\t  to automate the process of verification and certificate\n\t  issuance.\n\n\t  https://github.com/ndilieto/uacme\n\nif BR2_PACKAGE_UACME\n\nconfig BR2_PACKAGE_UACME_UALPN\n\tbool \"enable ualpn\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_PACKAGE_OPENSSL || BR2_PACKAGE_GNUTLS\n\tselect BR2_PACKAGE_LIBEV\n\thelp\n\t  Build and install ualpn, the transparent proxying tls-alpn-01\n\t  challenge responder.\n\ncomment \"ualpn needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\ncomment \"ualpn needs either OpenSSL or GnuTLS\"\n\tdepends on !(BR2_PACKAGE_OPENSSL || BR2_PACKAGE_GNUTLS)\n\nendif\n"
  },
  {
    "path": "package/uacme/uacme.hash",
    "content": "# Locally computed:\nsha256  36027a587256cbaa86650cec2a5b3eb000480e1150bd83941565661b392625ac  uacme-1.7.1.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/uacme/uacme.mk",
    "content": "################################################################################\n#\n# uacme\n#\n################################################################################\n\nUACME_VERSION = 1.7.1\n# Released versions are on branch upstream/latest, tagged as\n# upstream/X.Y.Z Do not use vX.Y.Z tags from master, as they do not\n# include .tarball-version\nUACME_SITE = $(call github,ndilieto,uacme,upstream/$(UACME_VERSION))\nUACME_LICENSE = GPL-3.0+\nUACME_LICENSE_FILES = COPYING\nUACME_DEPENDENCIES = libcurl\n\nUACME_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nUACME_CONF_OPTS += --with-gnutls\nUACME_DEPENDENCIES += gnutls\nelse ifeq ($(BR2_PACKAGE_OPENSSL),y)\nUACME_CONF_OPTS += --with-openssl\nUACME_DEPENDENCIES += openssl\nelse ifeq ($(BR2_PACKAGE_MBEDTLS),y)\nUACME_CONF_OPTS += --with-mbedtls\nUACME_DEPENDENCIES += mbedtls\nendif\n\nifeq ($(BR2_PACKAGE_UACME_UALPN),y)\nUACME_DEPENDENCIES += libev\nUACME_CONF_OPTS += --with-ualpn\nelse\nUACME_CONF_OPTS += --without-ualpn\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/uboot-tools/0001-drop-configh-from-tools.patch",
    "content": "From ab8b54cfc9d3fddba297c343a2d8dea9dbe20017 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Tue, 4 Aug 2015 22:13:20 +0200\nSubject: [PATCH] drop configh from tools\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nWe need to build u-boot tools without a board configuration for the target.\nfw_env just uses config.h to define the default environment of the created\nimage, so it really isn't mandatory.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n[Jörg Krause: update for version 2015.07]\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n[Romain: update for version 2017.05\n    after commit 9d80b49a671c9922931adcd823aab0ed319a42d1]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n[Pierre-Jean: update for version 2019.04]\nSigned-off-by: Pierre-Jean Texier <pjtexier@koncepto.io>\n---\n tools/env/fw_env_private.h | 11 -----------\n 1 file changed, 11 deletions(-)\n\ndiff --git a/tools/env/fw_env_private.h b/tools/env/fw_env_private.h\nindex 86be16d..3c62ac4 100644\n--- a/tools/env/fw_env_private.h\n+++ b/tools/env/fw_env_private.h\n@@ -4,17 +4,6 @@\n  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.\n  */\n \n-/* Pull in the current config to define the default environment */\n-#include <linux/kconfig.h>\n-\n-#ifndef __ASSEMBLY__\n-#define __ASSEMBLY__ /* get only #defines from config.h */\n-#include <config.h>\n-#undef\t__ASSEMBLY__\n-#else\n-#include <config.h>\n-#endif\n-\n /*\n  * To build the utility with the static configuration\n  * comment out the next line.\n-- \n2.9.4\n\n"
  },
  {
    "path": "package/uboot-tools/0002-tools-only-in-no-dot-config-targets.patch",
    "content": "From 460646b3c4c1718860915c38586ee8d2fbda38e4 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Sun, 1 Feb 2015 21:53:47 +0100\nSubject: [PATCH] tools only in no dot config targets\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nRevert upstream commit c7ad5cbb1ef2c33883f0fa7d0455095004fd306d:\n\n    Makefile: drop \"tools-only\" from no-dot-config-targets\n\nThis indirectly pulls in a build-dependency on libssl-dev used for FIT\nimage support, and possibly GPL/OpenSSL licensing incompatibility\nissues.\n\nBased on Debian patch from u-boot-tools:\nhttp://ftp.de.debian.org/debian/pool/main/u/u-boot/u-boot_2014.10+dfsg1-2.1.debian.tar.xz\n\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n[fabio: adapt it to 2016.09]\nSigned-off-by: Fabio Estevam <fabio.estevam@nxp.com>\n[Fabrice: adapt it to 2021.04]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 6aa08964ff..fcec83d183 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -486,7 +486,7 @@ defaultenv_h := include/generated/defaultenv_autogenerated.h\n \n no-dot-config-targets := clean clobber mrproper distclean \\\n \t\t\t help %docs check% coccicheck \\\n-\t\t\t ubootversion backup tests check qcheck tcheck\n+\t\t\t ubootversion backup tests tools-only check qcheck tcheck\n \n config-targets := 0\n mixed-targets  := 0\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/uboot-tools/0003-tools-Makefile-fix-C-LD-FLAGS-with-CROSS_BUILD_TOOLS.patch",
    "content": "From 3b89170333ef0fdfffee14751ce3e1d66d7dfa00 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 14 Sep 2021 19:08:02 +0200\nSubject: [PATCH] tools/Makefile: fix {C,LD}FLAGS with CROSS_BUILD_TOOLS\n\nWhen CROSS_BUILD_TOOLS is set, set KBUILD_HOST{CF,LD}FLAGS to\n{C,LD}FLAGS otherwise CC will be used with HOST{C,LD}FLAGS which seems\nwrong.\n\nIt should be noted that, for an unknown reason, overriding\nHOST{C,LD}FLAGS don't work.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n tools/Makefile | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/tools/Makefile b/tools/Makefile\nindex 4a86321f64..98bb92990d 100644\n--- a/tools/Makefile\n+++ b/tools/Makefile\n@@ -316,7 +316,8 @@ subdir- += env\n \n ifneq ($(CROSS_BUILD_TOOLS),)\n override HOSTCC = $(CC)\n-override HOSTCFLAGS = $(CFLAGS)\n+override KBUILD_HOSTCFLAGS = $(CFLAGS)\n+override KBUILD_HOSTLDFLAGS = $(LDFLAGS)\n \n quiet_cmd_crosstools_strip = STRIP   $^\n       cmd_crosstools_strip = $(STRIP) $^; touch $@\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/uboot-tools/Config.in",
    "content": "config BR2_PACKAGE_UBOOT_TOOLS\n\tbool \"u-boot tools\"\n\thelp\n\t  Companion tools for Das U-Boot bootloader.\n\n\t  http://www.denx.de/wiki/U-Boot/WebHome\n\nif BR2_PACKAGE_UBOOT_TOOLS\n\nconfig BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT\n\tbool \"Flattened Image Tree (FIT) support\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_DTC\n\tselect BR2_PACKAGE_DTC_PROGRAMS\n\thelp\n\t  Enables support for Flattened Image Tree (FIT).\n\n\t  This option allows to boot the new uImage structure,\n\t  Flattened Image Tree. FIT is formally a FDT, which can include\n\t  images of various types (kernel, FDT blob, ramdisk, etc.)\n\t  in a single blob. To boot this new uImage structure,\n\t  pass the address of the blob to the \"bootm\" command.\n\ncomment \"u-boot tools FIT support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nif BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT\n\nconfig BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT\n\tbool \"FIT signature verification support\"\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Enables support for FIT Signature Verification.\n\n\t  Flat Image Trees (FIT) supports hashing of images so that\n\t  these hashes can be checked on loading. This protects\n\t  against corruption of the image. However it does not prevent\n\t  the substitution of one image for another.\n\n\t  The signature feature allows the hash to be signed with a\n\t  private key such that it can be verified using a public key\n\t  later. Provided that the private key is kept secret and the\n\t  public key is stored in a non-volatile place, any image can\n\t  be verified in this way.\n\n\t  Enabling this option pulls in a dependency on libssl and\n\t  libcrypto, and possibly GPL/OpenSSL licensing\n\t  incompatibility issues.\n\nconfig BR2_PACKAGE_UBOOT_TOOLS_FIT_CHECK_SIGN\n\tbool \"fit_check_sign\"\n\tdepends on BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT\n\thelp\n\t  Install the fit_check_sign tool on the target system\n\n\t  The fit_check_sign tool from Das U-Boot bootloader, which\n\t  allows FIT image signature validation on target system.\n\nendif\n\nconfig BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE\n\tbool \"mkimage\"\n\thelp\n\t  Install the mkimage tool on the target system\n\n\t  The mkimage tool from Das U-Boot bootloader, which allows\n\t  generation of U-Boot images in various formats.\n\nconfig BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE\n\tbool \"mkenvimage\"\n\thelp\n\t  Install the mkenvimage tool on the target system\n\n\t  The mkenvimage tool from Das U-Boot bootloader, which allows\n\t  generation of a valid binary environment image from a text\n\t  file describing the key=value pairs of the environment.\n\nconfig BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV\n\tbool \"fw_printenv\"\n\tdefault y\n\thelp\n\t  Install the fw_printenv / fw_setenv tools on the target system\n\n\t  The fw_printenv and fw_setenv tools from Das U-Boot\n\t  bootloader, which allows access to the U-Boot environment\n\t  from Linux.\n\nconfig BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE\n\tbool \"dumpimage\"\n\thelp\n\t  Install the dumpimage tool on the target system\n\n\t  The dumpimage tool from Das U-Boot bootloader, which allows\n\t  extraction of data from U-Boot images.\n\nendif\n"
  },
  {
    "path": "package/uboot-tools/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_UBOOT_TOOLS\n\tbool \"host u-boot tools\"\n\thelp\n\t  Companion tools for Das U-Boot bootloader.\n\n\t  http://www.denx.de/wiki/U-Boot/WebHome\n\nif BR2_PACKAGE_HOST_UBOOT_TOOLS\n\nconfig BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT\n\tbool \"Flattened Image Tree (FIT) support\"\n\tselect BR2_PACKAGE_HOST_DTC\n\thelp\n\t  Enables support for Flattened Image Tree (FIT).\n\n\t  This option allows to boot the new uImage structure,\n\t  Flattened Image Tree. FIT is formally a FDT, which can include\n\t  images of various types (kernel, FDT blob, ramdisk, etc.)\n\t  in a single blob. To boot this new uImage structure,\n\t  pass the address of the blob to the \"bootm\" command.\n\nif BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT\n\nconfig BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT\n\tbool \"FIT signature verification support\"\n\thelp\n\t  Enables support for FIT Signature Verification.\n\n\t  Flat Image Trees (FIT) supports hashing of images so that\n\t  these hashes can be checked on loading. This protects\n\t  against corruption of the image. However it does not prevent\n\t  the substitution of one image for another.\n\n\t  The signature feature allows the hash to be signed with a\n\t  private key such that it can be verified using a public key\n\t  later. Provided that the private key is kept secret and the\n\t  public key is stored in a non-volatile place, any image can\n\t  be verified in this way.\n\nendif # BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT\n\nconfig BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE\n\tbool \"Environment image\"\n\thelp\n\t  Generate a valid binary environment image from a text file\n\t  describing the key=value pairs of the environment.\n\n\t  This option can be useful to build enviornment configurations\n\t  as part of a Linux / rootfs only defconfig instead of using\n\t  post scripts. This supports a hardware use case of a single\n\t  bootloader only defconfig but multiple Linux / rootfs\n\t  defconfigs with different boot environments.\n\n\t  The environment image will be called uboot-env.bin.\n\nif BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE\n\nconfig BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE\n\tstring \"Source files for environment\"\n\tdefault BR2_TARGET_UBOOT_ENVIMAGE_SOURCE if BR2_TARGET_UBOOT_ENVIMAGE_SOURCE != \"\" # legacy\n\thelp\n\t  Text files describing the environment. Files should have\n\t  lines of the form var=value, one per line. Blank lines and\n\t  lines starting with a # are ignored.\n\n\t  Multiple source files are concatenated in the order listed.\n\n\t  Leave empty to generate image from compiled-in env if a U-boot\n\t  target build is configured (BR2_TARGET_UBOOT)\n\nconfig BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE\n\tstring \"Size of environment\"\n\tdefault BR2_TARGET_UBOOT_ENVIMAGE_SIZE if BR2_TARGET_UBOOT_ENVIMAGE_SIZE != \"\" # legacy\n\thelp\n\t  Size of envronment, can be prefixed with 0x for hexadecimal\n\t  values.\n\nconfig BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_REDUNDANT\n\tbool \"Environment has two copies\"\n\thelp\n\t  Some platforms define in their U-Boot configuration that the\n\t  U-Boot environment should be duplicated in two locations (for\n\t  extra safety). Check your U-Boot configuration for the\n\t  CONFIG_ENV_ADDR_REDUND and CONFIG_ENV_SIZE_REDUND settings to\n\t  see if this is the case for your platform.\n\n\t  If it is the case, then you should enable this option to\n\t  ensure that the U-Boot environment image generated by\n\t  Buildroot is compatible with the \"redundant environment\"\n\t  mechanism of U-Boot.\n\nendif # BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE\n\nconfig BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT\n\tbool \"Generate a U-Boot boot script\"\n\thelp\n\t  Generate a U-Boot boot script, given a file listing U-Boot\n\t  commands to be executed at boot time. The generated boot\n\t  script will be called 'boot.scr'.\n\nif BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT\n\nconfig BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE\n\tstring \"U-Boot boot script source\"\n\tdefault BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE if BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE != \"\" # legacy\n\thelp\n\t  Source file to generate the U-Boot boot script.\n\nendif # BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT\n\nendif # BR2_PACKAGE_HOST_UBOOT_TOOLS\n"
  },
  {
    "path": "package/uboot-tools/uboot-tools.hash",
    "content": "# Locally computed:\nsha256  312b7eeae44581d1362c3a3f02c28d806647756c82ba8c72241c7cdbe68ba77e  u-boot-2021.07.tar.bz2\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  Licenses/gpl-2.0.txt\n"
  },
  {
    "path": "package/uboot-tools/uboot-tools.mk",
    "content": "################################################################################\n#\n# uboot-tools\n#\n################################################################################\n\nUBOOT_TOOLS_VERSION = 2021.07\nUBOOT_TOOLS_SOURCE = u-boot-$(UBOOT_TOOLS_VERSION).tar.bz2\nUBOOT_TOOLS_SITE = ftp://ftp.denx.de/pub/u-boot\nUBOOT_TOOLS_LICENSE = GPL-2.0+\nUBOOT_TOOLS_LICENSE_FILES = Licenses/gpl-2.0.txt\nUBOOT_TOOLS_CPE_ID_VENDOR = denx\nUBOOT_TOOLS_CPE_ID_PRODUCT = u-boot\nUBOOT_TOOLS_INSTALL_STAGING = YES\n\n# u-boot 2020.01+ needs make 4.0+\nUBOOT_TOOLS_DEPENDENCIES = $(BR2_MAKE_HOST_DEPENDENCY)\nHOST_UBOOT_TOOLS_DEPENDENCIES = $(BR2_MAKE_HOST_DEPENDENCY)\n\ndefine UBOOT_TOOLS_CONFIGURE_CMDS\n\tmkdir -p $(@D)/include/config\n\ttouch $(@D)/include/config/auto.conf\n\tmkdir -p $(@D)/include/generated\n\ttouch $(@D)/include/generated/autoconf.h\nendef\n\nUBOOT_TOOLS_MAKE_OPTS = CROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tCFLAGS=\"$(TARGET_CFLAGS)\" \\\n\tLDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\tHOSTCFLAGS=\"$(HOST_CFLAGS)\" \\\n\tSTRIP=$(TARGET_STRIP)\n\nifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT),y)\nUBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT=y CONFIG_MKIMAGE_DTC_PATH=dtc\nUBOOT_TOOLS_DEPENDENCIES += dtc\nendif\n\nifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y)\nUBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT_SIGNATURE=y CONFIG_FIT_SIGNATURE_MAX_SIZE=0x10000000\nUBOOT_TOOLS_DEPENDENCIES += openssl host-pkgconf\nendif\n\nifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_CHECK_SIGN),y)\ndefine UBOOT_TOOLS_INSTALL_FIT_CHECK_SIGN\n\t$(INSTALL) -m 0755 -D $(@D)/tools/fit_check_sign $(TARGET_DIR)/usr/bin/fit_check_sign\nendef\nendif\n\ndefine UBOOT_TOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(BR2_MAKE) -C $(@D) $(UBOOT_TOOLS_MAKE_OPTS) \\\n\t\tCROSS_BUILD_TOOLS=y tools-only\n\t$(TARGET_MAKE_ENV) $(BR2_MAKE) -C $(@D) $(UBOOT_TOOLS_MAKE_OPTS) \\\n\t\tenvtools no-dot-config-targets=envtools\nendef\n\nifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE),y)\ndefine UBOOT_TOOLS_INSTALL_MKIMAGE\n\t$(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(TARGET_DIR)/usr/bin/mkimage\nendef\nendif\n\nifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE),y)\ndefine UBOOT_TOOLS_INSTALL_MKENVIMAGE\n\t$(INSTALL) -m 0755 -D $(@D)/tools/mkenvimage $(TARGET_DIR)/usr/bin/mkenvimage\nendef\nendif\n\nifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV),y)\ndefine UBOOT_TOOLS_INSTALL_FWPRINTENV\n\t$(INSTALL) -m 0755 -D $(@D)/tools/env/fw_printenv $(TARGET_DIR)/usr/sbin/fw_printenv\n\tln -sf fw_printenv $(TARGET_DIR)/usr/sbin/fw_setenv\nendef\nendif\n\nifeq ($(BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE),y)\ndefine UBOOT_TOOLS_INSTALL_DUMPIMAGE\n\t$(INSTALL) -m 0755 -D $(@D)/tools/dumpimage $(TARGET_DIR)/usr/sbin/dumpimage\nendef\nendif\n\ndefine UBOOT_TOOLS_INSTALL_STAGING_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/tools/env/lib.a $(STAGING_DIR)/usr/lib/libubootenv.a\n\t$(INSTALL) -D -m 0644 $(@D)/tools/env/fw_env.h $(STAGING_DIR)/usr/include/fw_env.h\nendef\n\ndefine UBOOT_TOOLS_INSTALL_TARGET_CMDS\n\t$(UBOOT_TOOLS_INSTALL_MKIMAGE)\n\t$(UBOOT_TOOLS_INSTALL_MKENVIMAGE)\n\t$(UBOOT_TOOLS_INSTALL_FWPRINTENV)\n\t$(UBOOT_TOOLS_INSTALL_DUMPIMAGE)\n\t$(UBOOT_TOOLS_INSTALL_FIT_CHECK_SIGN)\nendef\n\n# host-uboot-tools\n\ndefine HOST_UBOOT_TOOLS_CONFIGURE_CMDS\n\tmkdir -p $(@D)/include/config\n\ttouch $(@D)/include/config/auto.conf\n\tmkdir -p $(@D)/include/generated\n\ttouch $(@D)/include/generated/autoconf.h\nendef\n\nHOST_UBOOT_TOOLS_MAKE_OPTS = HOSTCC=\"$(HOSTCC)\" \\\n\tHOSTCFLAGS=\"$(HOST_CFLAGS)\" \\\n\tHOSTLDFLAGS=\"$(HOST_LDFLAGS)\"\n\nifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT),y)\nHOST_UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT=y CONFIG_MKIMAGE_DTC_PATH=dtc\nHOST_UBOOT_TOOLS_DEPENDENCIES += host-dtc\nendif\n\nifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y)\nHOST_UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT_SIGNATURE=y CONFIG_FIT_SIGNATURE_MAX_SIZE=0x10000000\nHOST_UBOOT_TOOLS_DEPENDENCIES += host-openssl\nendif\n\nifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE),y)\n\nUBOOT_TOOLS_GENERATE_ENV_FILE = $(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE))\n\n# If BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE is left empty, we\n# will use the default environment provided in the U-Boot build\n# directory as boot-env-defaults.txt, which requires having uboot as a\n# dependency.\n# If BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE is not empty, is\n# might be referring to a file within the U-Boot source tree, so we\n# also need to have uboot as a dependency.\nifeq ($(BR2_TARGET_UBOOT),y)\nHOST_UBOOT_TOOLS_DEPENDENCIES += uboot\n\n# Handle the case where BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE\n# is left empty, use the default U-Boot environment.\nifeq ($(UBOOT_TOOLS_GENERATE_ENV_FILE),)\nUBOOT_TOOLS_GENERATE_ENV_FILE = $(@D)/boot-env-defaults.txt\ndefine HOST_UBOOT_TOOLS_GENERATE_ENV_DEFAULTS\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\t\t$(UBOOT_SRCDIR)/scripts/get_default_envs.sh \\\n\t\t$(UBOOT_SRCDIR) \\\n\t\t> $(UBOOT_TOOLS_GENERATE_ENV_FILE)\nendef\nendif # UBOOT_TOOLS_GENERATE_ENV_FILE\nendif # BR2_TARGET_UBOOT\n\nifeq ($(BR_BUILDING),y)\nifeq ($(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE)),)\n$(error Please provide U-Boot environment size (BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE setting))\nendif\n# If U-Boot is not available, ENVIMAGE_SOURCE must be provided by user,\n# otherwise it is optional because the default can be taken from U-Boot\nifeq ($(BR2_TARGET_UBOOT),)\nifeq ($(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE)),)\n$(error Please provide U-Boot environment file (BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE setting))\nendif\nendif #BR2_TARGET_UBOOT\nendif #BR_BUILDING\n\ndefine HOST_UBOOT_TOOLS_GENERATE_ENVIMAGE\n\t$(HOST_UBOOT_TOOLS_GENERATE_ENV_DEFAULTS)\n\tcat $(UBOOT_TOOLS_GENERATE_ENV_FILE) | \\\n\t\t$(@D)/tools/mkenvimage -s $(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE) \\\n\t\t$(if $(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_REDUNDANT),-r) \\\n\t\t$(if $(filter \"BIG\",$(BR2_ENDIAN)),-b) \\\n\t\t-o $(@D)/tools/uboot-env.bin \\\n\t\t-\nendef\ndefine HOST_UBOOT_TOOLS_INSTALL_ENVIMAGE\n\t$(INSTALL) -m 0755 -D $(@D)/tools/uboot-env.bin $(BINARIES_DIR)/uboot-env.bin\nendef\nendif #BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE\n\nifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT),y)\nifeq ($(BR_BUILDING),y)\nifeq ($(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE)),)\n$(error Please define a source file for U-Boot boot script (BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE setting))\nendif\nendif #BR_BUILDING\n\ndefine HOST_UBOOT_TOOLS_GENERATE_BOOT_SCRIPT\n\t$(@D)/tools/mkimage -C none -A $(MKIMAGE_ARCH) -T script \\\n\t\t-d $(call qstrip,$(BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE)) \\\n\t\t$(@D)/tools/boot.scr\nendef\ndefine HOST_UBOOT_TOOLS_INSTALL_BOOT_SCRIPT\n\t$(INSTALL) -m 0755 -D $(@D)/tools/boot.scr $(BINARIES_DIR)/boot.scr\nendef\nendif #BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT\n\ndefine HOST_UBOOT_TOOLS_BUILD_CMDS\n\t$(BR2_MAKE1) -C $(@D) $(HOST_UBOOT_TOOLS_MAKE_OPTS) tools-only\n\t$(HOST_UBOOT_TOOLS_GENERATE_ENVIMAGE)\n\t$(HOST_UBOOT_TOOLS_GENERATE_BOOT_SCRIPT)\nendef\n\ndefine HOST_UBOOT_TOOLS_INSTALL_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(HOST_DIR)/bin/mkimage\n\t$(INSTALL) -m 0755 -D $(@D)/tools/mkenvimage $(HOST_DIR)/bin/mkenvimage\n\t$(INSTALL) -m 0755 -D $(@D)/tools/dumpimage $(HOST_DIR)/bin/dumpimage\n\t$(HOST_UBOOT_TOOLS_INSTALL_ENVIMAGE)\n\t$(HOST_UBOOT_TOOLS_INSTALL_BOOT_SCRIPT)\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n\n# Convenience variables for other mk files that make use of mkimage\n\nMKIMAGE = $(HOST_DIR)/bin/mkimage\n\n# mkimage supports alpha arc arm arm64 blackfin ia64 invalid m68k microblaze mips mips64 nds32 nios2 or1k powerpc riscv s390 sandbox sh sparc sparc64 x86 x86_64 xtensa\n# KERNEL_ARCH can be arm64 arc arm blackfin m68k microblaze mips nios2 powerpc sh sparc i386 x86_64 xtensa\n# For i386, we need to convert\n# For openrisc, we need to convert\n# For others, we'll just keep KERNEL_ARCH\nifeq ($(KERNEL_ARCH),i386)\nMKIMAGE_ARCH = x86\nelse ifeq ($(KERNEL_ARCH),openrisc)\nMKIMAGE_ARCH = or1k\nelse\nMKIMAGE_ARCH = $(KERNEL_ARCH)\nendif\n"
  },
  {
    "path": "package/ubus/0001-Install-server-and-client-examples.patch",
    "content": "From aa4aea68a9d2a38fabb5ae8e5a0d05dfd7bcf907 Mon Sep 17 00:00:00 2001\nFrom: Rahul Jain <Rahul.Jain@imgtec.com>\nDate: Fri, 24 Mar 2017 18:03:24 +0530\nSubject: [PATCH] Install server and client examples\n\nSigned-off-by: Sergio Prado <sergio.prado@e-labworks.com>\nSigned-off-by: Rahul Jain <Rahul.Jain@imgtec.com>\n[Rahul Jain: rebase the patch on latest version]\n---\n examples/CMakeLists.txt | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt\nindex 81f9997..38f153f 100644\n--- a/examples/CMakeLists.txt\n+++ b/examples/CMakeLists.txt\n@@ -9,4 +9,8 @@ IF (BUILD_EXAMPLES)\n \n \tADD_EXECUTABLE(client client.c count.c)\n \tTARGET_LINK_LIBRARIES(client ubus ${ubox_library})\n+\n+\tINSTALL(TARGETS server client\n+\t\tRUNTIME DESTINATION sbin\n+\t)\n ENDIF()\n-- \n2.6.2\n\n"
  },
  {
    "path": "package/ubus/Config.in",
    "content": "comment \"ubus needs a toolchain w/ dynamic library\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_UBUS\n\tbool \"ubus\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c\n\tdepends on !BR2_STATIC_LIBS # libubox\n\tselect BR2_PACKAGE_LIBUBOX\n\tselect BR2_PACKAGE_JSON_C\n\thelp\n\t  IPC/RPC bus that allows communication between processes.\n\n\t  It consists of few parts including a daemon (ubusd), a\n\t  library (libubus) and a command line interface\n\t  (ubus). Although created for the OpenWRT project, it can be\n\t  used as a general IPC/RPC mechanism in other projects.\n\n\t  * Select BR2_PACKAGE_LUA_5_1 if you want to have Lua\n\t    support.\n\n\t  https://openwrt.org/docs/techref/ubus\n\nif BR2_PACKAGE_UBUS\n\nconfig BR2_PACKAGE_UBUS_EXAMPLES\n\tbool \"build and install ubus examples\"\n\thelp\n\t  Build and install client and server ubus examples.\n\nendif\n"
  },
  {
    "path": "package/ubus/ubus.hash",
    "content": "# Locally calculated\nsha256  275d184006f2f60c9b0172d8fd0ccc8952f182960c0d3d0945be640873c1bef6  ubus-a72457b61df045d3c499a6211362b751710590d7-br1.tar.gz\nsha256  a3caa6c0e90c87b7c97c2ac3d0c0d416082ef777215faec2e9b24ea6e68f6988  ubusd_acl.h\n"
  },
  {
    "path": "package/ubus/ubus.mk",
    "content": "################################################################################\n#\n# ubus\n#\n################################################################################\n\nUBUS_VERSION = a72457b61df045d3c499a6211362b751710590d7\nUBUS_SITE = https://git.openwrt.org/project/ubus.git\nUBUS_SITE_METHOD = git\n\nUBUS_LICENSE = LGPL-2.1\nUBUS_LICENSE_FILES = ubusd_acl.h\n\nUBUS_INSTALL_STAGING = YES\n\nUBUS_DEPENDENCIES = json-c libubox\n\n# package only compiles with Lua 5.1\nifeq ($(BR2_PACKAGE_LUA_5_1),y)\nUBUS_DEPENDENCIES += lua\nUBUS_CONF_OPTS += -DBUILD_LUA=ON \\\n\t-DLUA_CFLAGS=-I$(STAGING_DIR)/usr/include \\\n\t-DLUAPATH=/usr/lib/lua/$(LUAINTERPRETER_ABIVER)\nelse\nUBUS_CONF_OPTS += -DBUILD_LUA=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nUBUS_DEPENDENCIES += systemd\nUBUS_CONF_OPTS += -DENABLE_SYSTEMD=ON\nelse\nUBUS_CONF_OPTS += -DENABLE_SYSTEMD=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UBUS_EXAMPLES),y)\nUBUS_CONF_OPTS += -DBUILD_EXAMPLES=ON\nelse\nUBUS_CONF_OPTS += -DBUILD_EXAMPLES=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/uccp420wlan/Config.in",
    "content": "config BR2_PACKAGE_UCCP420WLAN\n\tbool \"uccp420wlan\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  SoftMAC (mac80211) based WiFi driver for Imagination's\n\t  Explorer RPU uccp420. This supports Dual Band WiFi with\n\t  2.4GHz - 2x2 b/g/n 40MHz, 5GHz - 2x2 a/n/11ac 80MHz modes\n\n\t  Used in creator ci40 board.\n\n\t  This module needs a Linux kernel >= v4.2.\n\n\t  https://github.com/CreatorDev/uccp420wlan\n\ncomment \"uccp420wlan needs a Linux kernel >= 4.2 to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/uccp420wlan/uccp420wlan.hash",
    "content": "# locally computed hash\nsha256  1d4de62fc842dbab739708cf0d9ebce270fcdf63c1c13ac676cbc253acdaa3bb  uccp420wlan-6.9.1.tar.gz\nsha256  af8067302947c01fd9eee72befa54c7e3ef8a48fecde7fd71277f2290b2bf0f7  COPYING\nsha256  9ac431585fddfe624b08cf7464876a5e96061047ff26a9e926da3d89d21a2a73  firmware/LICENSE.imagination\n"
  },
  {
    "path": "package/uccp420wlan/uccp420wlan.mk",
    "content": "################################################################################\n#\n# uccp420wlan\n#\n################################################################################\n\nUCCP420WLAN_VERSION = 6.9.1\nUCCP420WLAN_SITE = $(call github,CreatorDev,uccp420wlan,v$(UCCP420WLAN_VERSION))\nUCCP420WLAN_LICENSE = GPL-2.0 (kernel module), proprietary (firmware blob)\nUCCP420WLAN_LICENSE_FILES = COPYING firmware/LICENSE.imagination\n\ndefine UCCP420WLAN_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/lib/firmware/img/uccp420wlan\n\tcp $(@D)/firmware/*.ldr $(TARGET_DIR)/lib/firmware/img/uccp420wlan\nendef\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ucl/ucl.hash",
    "content": "# Locally calculated\nsha256  b865299ffd45d73412293369c9754b07637680e5c826915f097577cd27350348  ucl-1.03.tar.gz\nsha256  70439f6e2b47057a408d2390ed6663b9875f5a08066a06a060a357ef1df89a8c  COPYING\n"
  },
  {
    "path": "package/ucl/ucl.mk",
    "content": "################################################################################\n#\n# ucl\n#\n################################################################################\n\nUCL_VERSION = 1.03\nUCL_SITE = http://www.oberhumer.com/opensource/ucl/download\nUCL_LICENSE = GPL-2.0+\nUCL_LICENSE_FILES = COPYING\n\n# Fix ACC conformance test failure for host gcc 6.x\nHOST_UCL_CONF_ENV += CPPFLAGS=\"$(HOST_CPPFLAGS) -std=iso9899:1990\"\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/uclibc/Config.in",
    "content": "if BR2_TOOLCHAIN_BUILDROOT_UCLIBC\n\ncomment \"uClibc Options\"\n\nconfig BR2_PACKAGE_UCLIBC\n\tbool\n\tdefault y\n\tselect BR2_PACKAGE_LINUX_HEADERS\n\nconfig BR2_UCLIBC_CONFIG\n\tstring \"uClibc configuration file to use?\"\n\tdefault \"package/uclibc/uClibc-ng.config\"\n\thelp\n\t  Some people may wish to use their own modified uClibc\n\t  configuration file and will specify their config file\n\t  location with this option.  See also docs/README in this\n\t  package.  If unsure, use the default.\n\nconfig BR2_UCLIBC_CONFIG_FRAGMENT_FILES\n\tstring \"Additional uClibc configuration fragment files\"\n\thelp\n\t  A space-separated list of configuration fragment files, that\n\t  will be merged to the main uClibc configuration file.\n\nconfig BR2_TOOLCHAIN_BUILDROOT_WCHAR\n\tbool \"Enable WCHAR support\"\n\tselect BR2_USE_WCHAR\n\thelp\n\t  Enable this option if you want your toolchain to support\n\t  wide characters (i.e characters longer than 8 bits, needed\n\t  for locale support).\n\nconfig BR2_TOOLCHAIN_BUILDROOT_LOCALE\n\tbool \"Enable toolchain locale/i18n support\"\n\tselect BR2_TOOLCHAIN_BUILDROOT_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_NEEDS_HOST_UTF8_LOCALE\n\thelp\n\t  Enable this option if you want your toolchain to support\n\t  localization and internationalization.\n\nchoice\n\tprompt \"Thread library implementation\"\n\thelp\n\t  Use this option to select the thread library implementation\n\t  that should be used in your toolchain.\n\nconfig BR2_PTHREADS_NATIVE\n\tbool \"Native POSIX Threading (NPTL)\"\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\nconfig BR2_PTHREADS\n\tbool \"linuxthreads\"\n\tdepends on !BR2_aarch64 && !BR2_aarch64_be\n\tdepends on !BR2_RISCV_64\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PTHREADS_NONE\n\tbool \"none\"\n\nendchoice\n\nconfig BR2_PTHREAD_DEBUG\n\tbool \"Thread library debugging\"\n\tdepends on BR2_PTHREADS || BR2_PTHREADS_NATIVE\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\thelp\n\t  Build the thread library with debugging enabled.\n\nconfig BR2_TOOLCHAIN_BUILDROOT_USE_SSP\n\tbool \"Enable stack protection support\"\n\tdepends on BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\thelp\n\t  Enable stack smashing protection support using GCCs\n\t  -fstack-protector-all option in uClibc.\n\n\t  See\n\t  http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt\n\t  for details.\n\nconfig BR2_UCLIBC_INSTALL_UTILS\n\tbool \"Compile and install uClibc utilities\"\n\tdefault y\n\thelp\n\t  Enabling this option will compile and install the getconf,\n\t  ldconfig and ldd uClibc utilities for the target.\n\n\t  You can save ~32 KiB in target space by disabling them since\n\t  they're normally not needed.\n\n# Mapping from the Buildroot architecture configuration options to the\n# uClibc architecture names.\nconfig BR2_UCLIBC_TARGET_ARCH\n\tstring\n\tdefault \"arc\"\t   if BR2_arcle || BR2_arceb\n\tdefault \"arm\"\t   if BR2_arm\t|| BR2_armeb\n\tdefault \"m68k\"\t   if BR2_m68k\n\tdefault \"microblaze\"   if BR2_microblaze\n\tdefault \"mips\"\t   if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault \"or1k\"     if BR2_or1k\n\tdefault \"powerpc\"  if BR2_powerpc\n\tdefault \"sh\"\t   if BR2_sh\n\tdefault \"sparc\"\t   if BR2_sparc\n\tdefault \"xtensa\"   if BR2_xtensa\n\tdefault \"i386\"\t   if BR2_i386\n\tdefault \"x86_64\"   if BR2_x86_64\n\tdefault \"riscv64\"  if BR2_RISCV_64\n\nconfig BR2_UCLIBC_MIPS_ABI\n\tstring\n\tdefault \"O32\" if BR2_MIPS_OABI32\n\tdefault \"N32\" if BR2_MIPS_NABI32\n\tdefault \"N64\" if BR2_MIPS_NABI64\n\tdepends on BR2_UCLIBC_TARGET_ARCH = \"mips\"\n\nconfig BR2_UCLIBC_MIPS_NAN\n\tstring\n\tdefault \"LEGACY\" if BR2_MIPS_NAN_LEGACY\n\tdefault \"2008\" if BR2_MIPS_NAN_2008\n\tdepends on BR2_UCLIBC_TARGET_ARCH = \"mips\"\n\nconfig BR2_UCLIBC_SH_TYPE\n\tstring\n\tdefault \"SH2A\" if BR2_sh2a\n\tdefault \"SH4\"  if BR2_sh4 || BR2_sh4eb\n\tdepends on BR2_UCLIBC_TARGET_ARCH = \"sh\"\n\nconfig BR2_UCLIBC_SPARC_TYPE\n\tstring\n\tdefault \"V7\"\tif BR2_sparc_v7 || BR2_sparc_sparchfleon || BR2_sparc_sparcsfleon\n\tdefault \"V8\"\tif BR2_sparc_v8 || BR2_sparc_sparchfleonv8 || BR2_sparc_sparcsfleonv8\n\tdepends on BR2_UCLIBC_TARGET_ARCH = \"sparc\"\n\nconfig BR2_UCLIBC_POWERPC_TYPE\n\tstring\n\tdefault \"CLASSIC\" if !BR2_powerpc_8540 && !BR2_powerpc_8548\n\tdefault \"E500\"    if BR2_powerpc_8540 || BR2_powerpc_8548\n\tdepends on BR2_UCLIBC_TARGET_ARCH = \"powerpc\"\n\nconfig BR2_UCLIBC_X86_TYPE\n\tstring\n\tdefault \"486\"        if BR2_x86_i486\n\tdefault \"586\"        if BR2_x86_i586\n\tdefault \"586MMX\"     if BR2_x86_pentium_mmx\n\tdefault \"686\"\t     if BR2_x86_i686 || BR2_x86_pentiumpro\n\tdefault \"PENTIUMII\"  if BR2_x86_pentium2\n\tdefault \"PENTIUMIII\" if BR2_x86_pentium3\n\tdefault \"PENTIUM4\"   if BR2_x86_pentium4 || BR2_x86_pentium_m || \\\n\t                        BR2_x86_nocona || BR2_x86_core2 || BR2_x86_corei7\n\tdepends on BR2_UCLIBC_TARGET_ARCH = \"i386\"\n\nendif # BR2_TOOLCHAIN_BUILDROOT_UCLIBC\n"
  },
  {
    "path": "package/uclibc/uClibc-ng.config",
    "content": "DO_C99_MATH=y\nDO_XSI_MATH=y\nKERNEL_HEADERS=\"/usr/src/linux/include\"\n# LDSO_CACHE_SUPPORT is not set\n# UCLIBC_STATIC_LDCONFIG is not set\nLDSO_RUNPATH=y\nLDSO_RUNPATH_OF_EXECUTABLE=y\nUCLIBC_HAS_UTMPX=y\nUCLIBC_HAS_UTMP=y\nUCLIBC_SUSV2_LEGACY=y\nUCLIBC_SUSV3_LEGACY=y\nUCLIBC_HAS_CONTEXT_FUNCS=y\nUCLIBC_SUSV4_LEGACY=y\nUCLIBC_HAS_PROGRAM_INVOCATION_NAME=y\nUCLIBC_HAS_GETPT=y\nUCLIBC_HAS_LIBUTIL=y\nUCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y\nUCLIBC_HAS_SHA256_CRYPT_IMPL=y\nUCLIBC_HAS_SHA512_CRYPT_IMPL=y\nUCLIBC_USE_NETLINK=y\nUCLIBC_SUPPORT_AI_ADDRCONFIG=y\nUCLIBC_HAS_RESOLVER_SUPPORT=y\nUCLIBC_HAS_LIBRESOLV_STUB=y\nUCLIBC_HAS_LIBNSL_STUB=y\nUCLIBC_HAS_CTYPE_CHECKED=y\nUCLIBC_HAS_LIBINTL=y\nUCLIBC_HAS_HEXADECIMAL_FLOATS=y\nUCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y\nUCLIBC_HAS_STDIO_GETC_MACRO=y\nUCLIBC_HAS_STDIO_PUTC_MACRO=y\nUCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y\nUCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y\nUCLIBC_HAS_PRINTF_M_SPEC=y\nUCLIBC_HAS_WORDEXP=y\nUCLIBC_HAS_NFTW=y\nUCLIBC_HAS_FTW=y\nUCLIBC_HAS_GNU_GLOB=y\nRUNTIME_PREFIX=\"/\"\nDEVEL_PREFIX=\"/usr/\"\nUCLIBC_HAS_SSP=y\nUCLIBC_BUILD_NOW=y\n# DOSTRIP is not set\n"
  },
  {
    "path": "package/uclibc/uclibc.hash",
    "content": "# From https://downloads.uclibc-ng.org/releases/1.0.38/uClibc-ng-1.0.39.tar.xz.sha256\nsha256  cb089dfe14867a38f222d6428e85d0e1191dcbb66dd9b1a671484f6bc7c81920  uClibc-ng-1.0.39.tar.xz\n# Locally calculated\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  COPYING.LIB\n"
  },
  {
    "path": "package/uclibc/uclibc.mk",
    "content": "################################################################################\n#\n# uclibc\n#\n################################################################################\n\nUCLIBC_VERSION = 1.0.39\nUCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz\nUCLIBC_SITE = https://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION)\nUCLIBC_LICENSE = LGPL-2.1+\nUCLIBC_LICENSE_FILES = COPYING.LIB\nUCLIBC_INSTALL_STAGING = YES\nUCLIBC_CPE_ID_VENDOR = uclibc-ng_project\nUCLIBC_CPE_ID_PRODUCT = uclibc-ng\n\n# uclibc is part of the toolchain so disable the toolchain dependency\nUCLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO\n\n# Before uClibc is configured, we must have the first stage\n# cross-compiler and the kernel headers\nUCLIBC_DEPENDENCIES = host-gcc-initial linux-headers\n\n# specifying UCLIBC_CONFIG_FILE on the command-line overrides the .config\n# setting.\nifndef UCLIBC_CONFIG_FILE\nUCLIBC_CONFIG_FILE = $(call qstrip,$(BR2_UCLIBC_CONFIG))\nendif\n\nUCLIBC_KCONFIG_EDITORS = menuconfig nconfig\nUCLIBC_KCONFIG_FILE = $(UCLIBC_CONFIG_FILE)\nUCLIBC_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_UCLIBC_CONFIG_FRAGMENT_FILES))\n\n# UCLIBC_MAKE_FLAGS set HOSTCC to the default HOSTCC, which may be\n# wrapped with ccache. However, host-ccache may not already be built\n# and installed when we apply the configuration, so we override that\n# to use the non-ccached host compiler.\nUCLIBC_KCONFIG_OPTS = \\\n\t$(UCLIBC_MAKE_FLAGS) \\\n\tHOSTCC=\"$(HOSTCC_NOCCACHE)\" \\\n\tPREFIX=$(STAGING_DIR) \\\n\tDEVEL_PREFIX=/usr/ \\\n\tRUNTIME_PREFIX=$(STAGING_DIR)/\n\nUCLIBC_TARGET_ARCH = $(call qstrip,$(BR2_UCLIBC_TARGET_ARCH))\n\nUCLIBC_GENERATE_LOCALES = $(call qstrip,$(BR2_GENERATE_LOCALE))\n\nifeq ($(UCLIBC_GENERATE_LOCALES),)\n# We need at least one locale\nUCLIBC_LOCALES = en_US\nelse\n# Strip out the encoding part of locale names, if any\nUCLIBC_LOCALES = \\\n\t$(foreach locale,$(UCLIBC_GENERATE_LOCALES),\\\n\t$(firstword $(subst .,$(space),$(locale))))\nendif\n\n# noMMU binary formats\nifeq ($(BR2_BINFMT_FLAT_ONE),y)\ndefine UCLIBC_BINFMT_CONFIG\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FLAT)\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA)\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT)\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF)\nendef\nendif\nifeq ($(BR2_BINFMT_FLAT_SHARED),y)\ndefine UCLIBC_BINFMT_CONFIG\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT)\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA)\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT)\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF)\nendef\nendif\n\n#\n# ARC definitions\n#\n\nifeq ($(UCLIBC_TARGET_ARCH),arc)\nUCLIBC_ARC_PAGE_SIZE = CONFIG_ARC_PAGE_SIZE_$(call qstrip,$(BR2_ARC_PAGE_SIZE))\ndefine UCLIBC_ARC_PAGE_SIZE_CONFIG\n\t$(SED) '/CONFIG_ARC_PAGE_SIZE_*/d' $(@D)/.config\n\t$(call KCONFIG_ENABLE_OPT,$(UCLIBC_ARC_PAGE_SIZE))\nendef\n\nifeq ($(BR2_ARC_ATOMIC_EXT),)\ndefine UCLIBC_ARC_ATOMICS_CONFIG\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_ARC_HAS_ATOMICS)\nendef\nendif\n\nendif # arc\n\n#\n# ARM definitions\n#\n\nifeq ($(UCLIBC_TARGET_ARCH),arm)\ndefine UCLIBC_ARM_ABI_CONFIG\n\t$(SED) '/CONFIG_ARM_.ABI/d' $(@D)/.config\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_ARM_EABI)\nendef\n\nifeq ($(BR2_BINFMT_FLAT),y)\ndefine UCLIBC_ARM_BINFMT_FLAT\n\t$(call KCONFIG_DISABLE_OPT,DOPIC)\nendef\nendif\n\n# context functions are written with ARM instructions. Therefore, if\n# we are using a Thumb2-only platform (i.e, Cortex-M), they must be\n# disabled. Thumb1 platforms are not a problem, since they all also\n# support the ARM instructions.\nifeq ($(BR2_ARM_INSTRUCTIONS_THUMB2):$(BR2_ARM_CPU_HAS_ARM),y:)\ndefine UCLIBC_ARM_NO_CONTEXT_FUNCS\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_CONTEXT_FUNCS)\nendef\nendif\n\nendif # arm\n\n#\n# m68k/coldfire definitions\n#\n\nifeq ($(UCLIBC_TARGET_ARCH),m68k)\n\n# disable DOPIC for flat without separate data\nifeq ($(BR2_BINFMT_FLAT_ONE),y)\ndefine UCLIBC_M68K_BINFMT_FLAT\n\t$(call KCONFIG_DISABLE_OPT,DOPIC)\nendef\nendif\n\nendif # m68k/coldfire\n\n#\n# MIPS definitions\n#\n\nifeq ($(UCLIBC_TARGET_ARCH),mips)\nUCLIBC_MIPS_ABI = CONFIG_MIPS_$(call qstrip,$(BR2_UCLIBC_MIPS_ABI))_ABI\ndefine UCLIBC_MIPS_ABI_CONFIG\n\t$(SED) '/CONFIG_MIPS_[NO].._ABI/d' $(@D)/.config\n\t$(call KCONFIG_ENABLE_OPT,$(UCLIBC_MIPS_ABI))\nendef\n\nUCLIBC_MIPS_NAN = CONFIG_MIPS_NAN_$(call qstrip,$(BR2_UCLIBC_MIPS_NAN))\ndefine UCLIBC_MIPS_NAN_CONFIG\n\t$(SED) '/CONFIG_MIPS_NAN_.*/d' $(@D)/.config\n\t$(call KCONFIG_ENABLE_OPT,$(UCLIBC_MIPS_NAN))\nendef\nendif # mips\n\n#\n# SH definitions\n#\n\nifeq ($(UCLIBC_TARGET_ARCH),sh)\nUCLIBC_SH_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_SH_TYPE))\ndefine UCLIBC_SH_TYPE_CONFIG\n\t$(SED) '/CONFIG_SH[234A]*/d' $(@D)/.config\n\t$(call KCONFIG_ENABLE_OPT,$(UCLIBC_SH_TYPE))\nendef\nendif # sh\n\n#\n# SPARC definitions\n#\n\nifeq ($(UCLIBC_TARGET_ARCH),sparc)\nUCLIBC_SPARC_TYPE = CONFIG_SPARC_$(call qstrip,$(BR2_UCLIBC_SPARC_TYPE))\ndefine UCLIBC_SPARC_TYPE_CONFIG\n\t$(SED) 's/^\\(CONFIG_[^_]*[_]*SPARC[^=]*\\)=.*/# \\1 is not set/g' \\\n\t\t$(@D)/.config\n\t$(call KCONFIG_ENABLE_OPT,$(UCLIBC_SPARC_TYPE))\nendef\nendif # sparc\n\n#\n# PowerPC definitions\n#\n\nifeq ($(UCLIBC_TARGET_ARCH),powerpc)\nUCLIBC_POWERPC_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_POWERPC_TYPE))\ndefine UCLIBC_POWERPC_TYPE_CONFIG\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_GENERIC)\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_E500)\n\t$(call KCONFIG_ENABLE_OPT,$(UCLIBC_POWERPC_TYPE))\nendef\nendif # powerpc\n\n#\n# x86 definitions\n#\nifeq ($(UCLIBC_TARGET_ARCH),i386)\nUCLIBC_X86_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_X86_TYPE))\ndefine UCLIBC_X86_TYPE_CONFIG\n\t$(call KCONFIG_ENABLE_OPT,$(UCLIBC_X86_TYPE))\nendef\nendif\n\n#\n# Debug\n#\nifeq ($(BR2_ENABLE_DEBUG),y)\ndefine UCLIBC_DEBUG_CONFIG\n\t$(call KCONFIG_ENABLE_OPT,DODEBUG)\nendef\nendif\n\n#\n# Endianness\n#\n\nifeq ($(call qstrip,$(BR2_ENDIAN)),BIG)\ndefine UCLIBC_ENDIAN_CONFIG\n\t$(call KCONFIG_ENABLE_OPT,ARCH_BIG_ENDIAN)\n\t$(call KCONFIG_ENABLE_OPT,ARCH_WANTS_BIG_ENDIAN)\n\t$(call KCONFIG_DISABLE_OPT,ARCH_LITTLE_ENDIAN)\n\t$(call KCONFIG_DISABLE_OPT,ARCH_WANTS_LITTLE_ENDIAN)\nendef\nelse\ndefine UCLIBC_ENDIAN_CONFIG\n\t$(call KCONFIG_ENABLE_OPT,ARCH_LITTLE_ENDIAN)\n\t$(call KCONFIG_ENABLE_OPT,ARCH_WANTS_LITTLE_ENDIAN)\n\t$(call KCONFIG_DISABLE_OPT,ARCH_BIG_ENDIAN)\n\t$(call KCONFIG_DISABLE_OPT,ARCH_WANTS_BIG_ENDIAN)\nendef\nendif\n\n#\n# MMU\n#\n\nifeq ($(BR2_USE_MMU),y)\ndefine UCLIBC_MMU_CONFIG\n\t$(call KCONFIG_ENABLE_OPT,ARCH_HAS_MMU)\n\t$(call KCONFIG_ENABLE_OPT,ARCH_USE_MMU)\nendef\nelse\ndefine UCLIBC_MMU_CONFIG\n\t$(call KCONFIG_DISABLE_OPT,ARCH_HAS_MMU)\n\t$(call KCONFIG_DISABLE_OPT,ARCH_USE_MMU)\nendef\nendif\n\n#\n# IPv6\n#\n\nUCLIBC_IPV6_CONFIG = $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_IPV6)\n\n#\n# soft-float\n#\n\nifeq ($(BR2_SOFT_FLOAT),y)\ndefine UCLIBC_FLOAT_CONFIG\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_FPU)\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FLOATS)\n\t$(call KCONFIG_ENABLE_OPT,DO_C99_MATH)\nendef\nelse\ndefine UCLIBC_FLOAT_CONFIG\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FPU)\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FLOATS)\nendef\nendif\n\n#\n# SSP\n#\nifeq ($(BR2_TOOLCHAIN_BUILDROOT_USE_SSP),y)\ndefine UCLIBC_SSP_CONFIG\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_SSP)\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_BUILD_SSP)\nendef\nelse\ndefine UCLIBC_SSP_CONFIG\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_SSP)\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_BUILD_SSP)\nendef\nendif\n\n#\n# Threads\n#\nifeq ($(BR2_PTHREADS_NONE),y)\ndefine UCLIBC_THREAD_CONFIG\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS)\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LINUXTHREADS)\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS_NATIVE)\nendef\nelse ifeq ($(BR2_PTHREADS),y)\ndefine UCLIBC_THREAD_CONFIG\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS)\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_LINUXTHREADS)\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS_NATIVE)\nendef\nelse ifeq ($(BR2_PTHREADS_NATIVE),y)\ndefine UCLIBC_THREAD_CONFIG\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS)\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LINUXTHREADS)\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS_NATIVE)\nendef\nendif\n\n#\n# Thread debug\n#\n\nifeq ($(BR2_PTHREAD_DEBUG),y)\nUCLIBC_THREAD_DEBUG_CONFIG = $(call KCONFIG_ENABLE_OPT,PTHREADS_DEBUG_SUPPORT)\nelse\nUCLIBC_THREAD_DEBUG_CONFIG = $(call KCONFIG_DISABLE_OPT,PTHREADS_DEBUG_SUPPORT)\nendif\n\n#\n# Locale\n#\n\nifeq ($(BR2_TOOLCHAIN_BUILDROOT_LOCALE),y)\ndefine UCLIBC_LOCALE_CONFIG\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_LOCALE)\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_BUILD_ALL_LOCALE)\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_BUILD_MINIMAL_LOCALE)\n\t$(call KCONFIG_SET_OPT,UCLIBC_BUILD_MINIMAL_LOCALES,\"$(UCLIBC_LOCALES)\")\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_PREGENERATED_LOCALE_DATA)\n\t$(call KCONFIG_DISABLE_OPT,DOWNLOAD_PREGENERATED_LOCALE_DATA)\n\t$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_XLOCALE)\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_GLIBC_DIGIT_GROUPING)\nendef\nelse\ndefine UCLIBC_LOCALE_CONFIG\n\t$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LOCALE)\nendef\nendif\n\n#\n# wchar\n#\n\nifeq ($(BR2_TOOLCHAIN_BUILDROOT_WCHAR),y)\nUCLIBC_WCHAR_CONFIG = $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_WCHAR)\nelse\nUCLIBC_WCHAR_CONFIG = $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_WCHAR)\nendif\n\n#\n# static/shared libs\n#\n\nifeq ($(BR2_STATIC_LIBS),y)\nUCLIBC_SHARED_LIBS_CONFIG = $(call KCONFIG_DISABLE_OPT,HAVE_SHARED)\nelse\nUCLIBC_SHARED_LIBS_CONFIG = $(call KCONFIG_ENABLE_OPT,HAVE_SHARED)\nendif\n\n#\n# Commands\n#\n\nUCLIBC_MAKE_FLAGS = \\\n\tARCH=\"$(UCLIBC_TARGET_ARCH)\" \\\n\tCROSS_COMPILE=\"$(TARGET_CROSS)\" \\\n\tUCLIBC_EXTRA_CFLAGS=\"$(TARGET_ABI)\" \\\n\tHOSTCC=\"$(HOSTCC)\"\n\ndefine UCLIBC_KCONFIG_FIXUP_CMDS\n\t$(call KCONFIG_SET_OPT,CROSS_COMPILER_PREFIX,\"$(TARGET_CROSS)\")\n\t$(call KCONFIG_ENABLE_OPT,TARGET_$(UCLIBC_TARGET_ARCH))\n\t$(call KCONFIG_SET_OPT,TARGET_ARCH,\"$(UCLIBC_TARGET_ARCH)\")\n\t$(call KCONFIG_SET_OPT,KERNEL_HEADERS,\"$(LINUX_HEADERS_DIR)/usr/include\")\n\t$(call KCONFIG_SET_OPT,RUNTIME_PREFIX,\"/\")\n\t$(call KCONFIG_SET_OPT,DEVEL_PREFIX,\"/usr\")\n\t$(call KCONFIG_SET_OPT,SHARED_LIB_LOADER_PREFIX,\"/lib\")\n\t$(UCLIBC_MMU_CONFIG)\n\t$(UCLIBC_BINFMT_CONFIG)\n\t$(UCLIBC_ARC_PAGE_SIZE_CONFIG)\n\t$(UCLIBC_ARC_ATOMICS_CONFIG)\n\t$(UCLIBC_ARM_ABI_CONFIG)\n\t$(UCLIBC_ARM_BINFMT_FLAT)\n\t$(UCLIBC_ARM_NO_CONTEXT_FUNCS)\n\t$(UCLIBC_M68K_BINFMT_FLAT)\n\t$(UCLIBC_MIPS_ABI_CONFIG)\n\t$(UCLIBC_MIPS_NAN_CONFIG)\n\t$(UCLIBC_SH_TYPE_CONFIG)\n\t$(UCLIBC_SPARC_TYPE_CONFIG)\n\t$(UCLIBC_POWERPC_TYPE_CONFIG)\n\t$(UCLIBC_X86_TYPE_CONFIG)\n\t$(UCLIBC_DEBUG_CONFIG)\n\t$(UCLIBC_ENDIAN_CONFIG)\n\t$(UCLIBC_IPV6_CONFIG)\n\t$(UCLIBC_FLOAT_CONFIG)\n\t$(UCLIBC_SSP_CONFIG)\n\t$(UCLIBC_THREAD_CONFIG)\n\t$(UCLIBC_THREAD_DEBUG_CONFIG)\n\t$(UCLIBC_LOCALE_CONFIG)\n\t$(UCLIBC_WCHAR_CONFIG)\n\t$(UCLIBC_SHARED_LIBS_CONFIG)\nendef\n\ndefine UCLIBC_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS) headers\n\t$(MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS)\n\t$(MAKE) -C $(@D)/utils \\\n\t\tPREFIX=$(HOST_DIR) \\\n\t\tHOSTCC=\"$(HOSTCC)\" hostutils\nendef\n\nifeq ($(BR2_UCLIBC_INSTALL_UTILS),y)\ndefine UCLIBC_INSTALL_UTILS_TARGET\n\t$(MAKE1) -C $(@D) \\\n\t\tCC=\"$(TARGET_CC)\" CPP=\"$(TARGET_CPP)\" LD=\"$(TARGET_LD)\" \\\n\t\tARCH=\"$(UCLIBC_TARGET_ARCH)\" \\\n\t\tPREFIX=$(TARGET_DIR) \\\n\t\tutils install_utils\nendef\nendif\n\ndefine UCLIBC_INSTALL_TARGET_CMDS\n\t$(MAKE1) -C $(@D) \\\n\t\t$(UCLIBC_MAKE_FLAGS) \\\n\t\tPREFIX=$(TARGET_DIR) \\\n\t\tDEVEL_PREFIX=/usr/ \\\n\t\tRUNTIME_PREFIX=/ \\\n\t\tinstall_runtime\n\t$(UCLIBC_INSTALL_UTILS_TARGET)\nendef\n\n# STATIC has no ld* tools, only getconf\nifeq ($(BR2_STATIC_LIBS),)\ndefine UCLIBC_INSTALL_UTILS_STAGING\n\t$(INSTALL) -D -m 0755 $(@D)/utils/ldd.host $(HOST_DIR)/bin/ldd\n\tln -sf ldd $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-ldd\n\t$(INSTALL) -D -m 0755 $(@D)/utils/ldconfig.host $(HOST_DIR)/bin/ldconfig\n\tln -sf ldconfig $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-ldconfig\nendef\nendif\n\ndefine UCLIBC_INSTALL_STAGING_CMDS\n\t$(MAKE1) -C $(@D) \\\n\t\t$(UCLIBC_MAKE_FLAGS) \\\n\t\tPREFIX=$(STAGING_DIR) \\\n\t\tDEVEL_PREFIX=/usr/ \\\n\t\tRUNTIME_PREFIX=/ \\\n\t\tinstall_runtime install_dev\n\t$(UCLIBC_INSTALL_UTILS_STAGING)\nendef\n\n# Checks to give errors that the user can understand\n# Must be before we call to kconfig-package\nifeq ($(BR2_PACKAGE_UCLIBC)$(BR_BUILDING),yy)\nifeq ($(call qstrip,$(BR2_UCLIBC_CONFIG)),)\n$(error No uClibc configuration file specified, check your BR2_UCLIBC_CONFIG setting)\nendif\nendif\n\n$(eval $(kconfig-package))\n"
  },
  {
    "path": "package/uclibc-ng-test/Config.in",
    "content": "config BR2_PACKAGE_UCLIBC_NG_TEST\n\tbool \"uclibc-ng-test\"\n\thelp\n\t  Enabling this option will compile and install the uClibc-ng\n\t  test suite. This is useful if you want to check if the\n\t  uClibc-ng library is working for your architecture and/or\n\t  help developing uClibc-ng.\n\n\t  The test suite will be installed into\n\t  /usr/lib/uclibc-ng-test directory. To run the test suite\n\t  enter the /usr/lib/uclibc-ng-test/test directory and type\n\t  \"sh uclibcng-testrunner.sh\".\n\n\t  See the /usr/lib/uclibc-ng-test/test/README for additional\n\t  information.\n\n\t  This is not needed at all for normal builds, so you can\n\t  safely say no if you do not plan to dig into your C library.\n\n\t  The tests can also be used for GNU libc or musl.\n\n\t  http://www.uclibc-ng.org\n"
  },
  {
    "path": "package/uclibc-ng-test/uclibc-ng-test.hash",
    "content": "# Locally computed\nsha256  f731307c0547ce4bbd3f5025972f64e9b22208a147e34e5745000b54d4d3aa98  uclibc-ng-test-0844445e7358eb10e716155b55b0fb23e88d644a-br1.tar.gz\nsha256  6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  COPYING.LIB\n"
  },
  {
    "path": "package/uclibc-ng-test/uclibc-ng-test.mk",
    "content": "################################################################################\n#\n# uclibc-ng-test\n#\n################################################################################\n\nUCLIBC_NG_TEST_VERSION = 0844445e7358eb10e716155b55b0fb23e88d644a\nUCLIBC_NG_TEST_SITE = git://uclibc-ng.org/git/uclibc-ng-test\nUCLIBC_NG_TEST_LICENSE = LGPL-2.1+\nUCLIBC_NG_TEST_LICENSE_FILES = COPYING.LIB\n\n# the math tests are recently synced from glibc and need more adaption before\n# regular testing is possible\nUCLIBC_NG_TEST_MAKE_ENV += NO_MATH=1\n\n# obsolete encrypt and setkey functions are not available since glibc 2.28\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)\nUCLIBC_NG_TEST_MAKE_ENV += NO_CRYPT=1\nendif\n\n# locale tests are not compatible with musl, yet\nifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)\nUCLIBC_NG_TEST_MAKE_ENV += NO_LOCALE=1\nendif\nifeq ($(BR2_USE_WCHAR),)\nUCLIBC_NG_TEST_MAKE_ENV += NO_WCHAR=1\nendif\nifeq ($(BR2_ENABLE_LOCALE),)\nUCLIBC_NG_TEST_MAKE_ENV += NO_LOCALE=1\nendif\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),)\nUCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1 NO_THREADS=1\nendif\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),)\nUCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1 NO_NPTL=1\nendif\n# most NPTL/TLS tests use dlopen\nifeq ($(BR2_STATIC_LIBS),y)\nUCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1 NO_NPTL=1 NO_DL=1\nendif\n# no TLS macros available\nifeq ($(BR2_nds32)$(BR2_s390x),y)\nUCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1\nendif\n\n# to execute tests in a deterministic order, call test_gen separately\ndefine UCLIBC_NG_TEST_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(UCLIBC_NG_TEST_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tCC=\"$(TARGET_CC)\" \\\n\t\tUCLIBC_EXTRA_CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\tUCLIBC_EXTRA_LDFLAGS=\"$(TARGET_LDFLAGS)\" \\\n\t\ttest_compile\n\t$(TARGET_MAKE_ENV) $(UCLIBC_NG_TEST_MAKE_ENV) $(MAKE1) -C $(@D) \\\n\t\tCC=\"$(TARGET_CC)\" \\\n\t\tUCLIBC_EXTRA_CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\ttest_gen\nendef\n\ndefine UCLIBC_NG_TEST_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=\"$(TARGET_DIR)\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/udev/Config.in",
    "content": "config BR2_PACKAGE_HAS_UDEV\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_UDEV\n\tstring\n\tdepends on BR2_PACKAGE_HAS_UDEV\n"
  },
  {
    "path": "package/udev/udev.mk",
    "content": "################################################################################\n#\n# udev\n#\n################################################################################\n\n# Required by default rules for input devices\ndefine UDEV_USERS\n\t- - input -1 * - - - Input device group\n\t- - render -1 * - - - DRI rendering nodes\n\t- - kvm -1 * - - - kvm nodes\nendef\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "package/udev-gentoo-scripts/Config.in",
    "content": "config BR2_PACKAGE_UDEV_GENTOO_SCRIPTS\n\tbool\n\tdepends on BR2_PACKAGE_EUDEV\n\tdepends on BR2_INIT_OPENRC\n\thelp\n\t  Init scripts for eudev.\n"
  },
  {
    "path": "package/udev-gentoo-scripts/udev-gentoo-scripts.hash",
    "content": "# Locally calculated\nsha256 b206f72c93cd2e51ed59061931918a9c23c3c1f7e6caffacc9d4f8915a42c30a  udev-gentoo-scripts-33.tar.bz2\nsha256 329f95829088b95650b9012ae688f09baa1637985425a7964d33683363f48702  init.d/udev-settle\n"
  },
  {
    "path": "package/udev-gentoo-scripts/udev-gentoo-scripts.mk",
    "content": "################################################################################\n#\n# udev-gentoo-scripts\n#\n################################################################################\n\nUDEV_GENTOO_SCRIPTS_VERSION = 33\nUDEV_GENTOO_SCRIPTS_SOURCE = udev-gentoo-scripts-$(UDEV_GENTOO_SCRIPTS_VERSION).tar.bz2\nUDEV_GENTOO_SCRIPTS_SITE = https://gitweb.gentoo.org/proj/udev-gentoo-scripts.git/snapshot\nUDEV_GENTOO_SCRIPTS_LICENSE = GPL-2.0\nUDEV_GENTOO_SCRIPTS_LICENSE_FILES = init.d/udev-settle\n\n# We don't need to symlink /etc/init.d/udev to /etc/runlevels/sysinit, since\n# it's in the udev-settle and udev-trigger \"need\" lists.\ndefine UDEV_GENTOO_SCRIPTS_INSTALL_INIT_OPENRC\n\t$(MAKE1) -C $(@D) install DESTDIR=$(TARGET_DIR)\n\t$(INSTALL) -d -m 755 $(TARGET_DIR)/etc/runlevels/sysinit\n\tln -s -f /etc/init.d/udev-settle /etc/init.d/udev-trigger \\\n\t\t$(TARGET_DIR)/etc/runlevels/sysinit\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/udftools/Config.in",
    "content": "config BR2_PACKAGE_UDFTOOLS\n\tbool \"udftools\"\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_READLINE\n\thelp\n\t  Tools for creating UDF filesystems\n\t  Maintained fork of the 2004 Sourcforge package\n\n\t  https://github.com/pali/udftools\n\ncomment \"udftools needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/udftools/udftools.hash",
    "content": "# Locally computed\nsha256  750dcf5c797765eb42265e0a56d1a99f97f94b7f6f4534263a5410503f0caf59  udftools-2.3.tar.gz\nsha256  dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa  COPYING\n"
  },
  {
    "path": "package/udftools/udftools.mk",
    "content": "################################################################################\n#\n# udftools\n#\n################################################################################\n\nUDFTOOLS_VERSION = 2.3\nUDFTOOLS_SITE = https://github.com/pali/udftools/releases/download/$(UDFTOOLS_VERSION)\nUDFTOOLS_LICENSE = GPL-2.0+\nUDFTOOLS_LICENSE_FILES = COPYING\nUDFTOOLS_DEPENDENCIES = readline host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/udisks/Config.in",
    "content": "config BR2_PACKAGE_UDISKS\n\tbool \"udisks\"\n\tdepends on BR2_ENABLE_LOCALE # parted\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # polkit -> C++17\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # polkit\n\tdepends on BR2_USE_WCHAR # dbus-glib -> glib2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libblockdev -> cryptsetup -> json-c\n\tdepends on !BR2_STATIC_LIBS # polkit -> duktape\n\tselect BR2_PACKAGE_DBUS\n\tselect BR2_PACKAGE_DBUS_GLIB\n\tselect BR2_PACKAGE_LIBATASMART\n\tselect BR2_PACKAGE_LIBBLOCKDEV\n\tselect BR2_PACKAGE_LIBBLOCKDEV_CRYPTO\n\tselect BR2_PACKAGE_LIBBLOCKDEV_FS\n\tselect BR2_PACKAGE_LIBBLOCKDEV_LOOP\n\tselect BR2_PACKAGE_LIBBLOCKDEV_MDRAID\n\tselect BR2_PACKAGE_LIBBLOCKDEV_PART\n\tselect BR2_PACKAGE_LIBBLOCKDEV_SWAP\n\tselect BR2_PACKAGE_LIBGUDEV\n\tselect BR2_PACKAGE_PARTED\n\tselect BR2_PACKAGE_POLKIT\n\tselect BR2_PACKAGE_SG3_UTILS\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBMOUNT\n\thelp\n\t  The udisks project provides\n\n\t   o A storage daemon that implements well-defined D-Bus\n\t     interfaces that can be used to query and manipulate\n\t     storage devices.\n\n\t   o a command-line tool, udisks(1), that can be used to query\n\t     and use the daemon\n\n\t  http://www.freedesktop.org/wiki/Software/udisks\n\ncomment \"udisks needs udev /dev management\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n\ncomment \"udisks needs a toolchain with dynamic library, locale, wchar, threads, gcc >= 7\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_STATIC_LIBS || !BR2_ENABLE_LOCALE || \\\n\t\t!BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_7\n"
  },
  {
    "path": "package/udisks/udisks.hash",
    "content": "# Locally calculated\nsha256  b6b60ebab0d5e09624120c5d158882e87d8c2473db60783b63deeba74cb18d1c  udisks-2.9.4.tar.bz2\nsha256  98046e932dc6c739001e79d7079a3bd958fc55475dcd917d27f884c0c93525cc  COPYING\n"
  },
  {
    "path": "package/udisks/udisks.mk",
    "content": "################################################################################\n#\n# udisks\n#\n################################################################################\n\nUDISKS_VERSION = 2.9.4\nUDISKS_SOURCE = udisks-$(UDISKS_VERSION).tar.bz2\nUDISKS_SITE = https://github.com/storaged-project/udisks/releases/download/udisks-$(UDISKS_VERSION)\nUDISKS_LICENSE = GPL-2.0+\nUDISKS_LICENSE_FILES = COPYING\nUDISKS_CPE_ID_VENDOR = freedesktop\n\nUDISKS_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tdbus \\\n\tdbus-glib \\\n\tlibatasmart \\\n\tlibblockdev \\\n\tlibgudev \\\n\tparted \\\n\tpolkit \\\n\tsg3_utils \\\n\tudev \\\n\tutil-linux\n\nUDISKS_CONF_OPTS = \\\n\t--disable-acl \\\n\t--disable-bcache \\\n\t--disable-btrfs \\\n\t--disable-fhs-media \\\n\t--disable-introspection \\\n\t--disable-iscsi \\\n\t--disable-lsm \\\n\t--disable-lvm2 \\\n\t--disable-lvmcache \\\n\t--disable-man \\\n\t--disable-rpath \\\n\t--disable-vdo \\\n\t--disable-zram\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/udpcast/Config.in",
    "content": "comment \"udpcast needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_UDPCAST\n\tbool \"udpcast\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  A multicast protocol implementation which happens to\n\t  be very handy for imaging drives over the network.\n\n\t  http://www.udpcast.linux.lu/\n\nif BR2_PACKAGE_UDPCAST\n\nconfig BR2_PACKAGE_UDPCAST_SENDER\n\tbool \"sender\"\n\thelp\n\t  The udpcast transmitter.\n\nconfig BR2_PACKAGE_UDPCAST_RECEIVER\n\tbool \"receiver\"\n\thelp\n\t  The udpcast receiver.\n\nendif\n"
  },
  {
    "path": "package/udpcast/udpcast.hash",
    "content": "# locally computed hash\nsha256  9c19eebaa6e2f78127f0d59e95d0ce003b687d61e283b5963a1da6b8ac41f21a  udpcast-20200328.tar.gz\nsha256  422befd3503b1f39a6027017f639874c1f274e37ec60ba3174894646b584ccbc  COPYING\n"
  },
  {
    "path": "package/udpcast/udpcast.mk",
    "content": "################################################################################\n#\n# udpcast\n#\n################################################################################\n\nUDPCAST_VERSION = 20200328\nUDPCAST_SITE = http://www.udpcast.linux.lu/download\nUDPCAST_DEPENDENCIES = host-m4\nUDPCAST_LICENSE = BSD-2-Clause, GPL-2.0+\nUDPCAST_LICENSE_FILES = COPYING\n\ndefine UDPCAST_REMOVE_UDP_SENDER\n\trm -f $(TARGET_DIR)/usr/sbin/udp-sender\n\trm -f $(TARGET_DIR)/usr/sbin/udp-sender.1\nendef\n\nifneq ($(BR2_PACKAGE_UDPCAST_SENDER),y)\nUDPCAST_POST_INSTALL_TARGET_HOOKS += UDPCAST_REMOVE_UDP_SENDER\nendif\n\ndefine UDPCAST_REMOVE_UDP_RECEIVER\n\trm -f $(TARGET_DIR)/usr/sbin/udp-receiver\n\trm -f $(TARGET_DIR)/usr/sbin/udp-receiver.1\nendef\n\nifneq ($(BR2_PACKAGE_UDPCAST_RECEIVER),y)\nUDPCAST_POST_INSTALL_TARGET_HOOKS += UDPCAST_REMOVE_UDP_RECEIVER\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/udpxy/Config.in",
    "content": "config BR2_PACKAGE_UDPXY\n\tbool \"udpxy\"\n\tdepends on BR2_USE_MMU\n\thelp\n\t  udpxy is a UDP-to-HTTP multicast traffic relay daemon: it\n\t  forwards UDP traffic from a given multicast subscription to\n\t  the requesting HTTP client.\n\n\t  http://www.udpxy.com/\n"
  },
  {
    "path": "package/udpxy/udpxy.hash",
    "content": "# Locally computed\nsha256  6ce33b1d14a1aeab4bd2566aca112e41943df4d002a7678d9a715108e6b714bd  udpxy.1.0.23-9-prod.tar.gz\nsha256  60ead3913246c7cd930fe653c0053aba1af2cd9f82b266befdbbd6e0b8ecb750  README\n"
  },
  {
    "path": "package/udpxy/udpxy.mk",
    "content": "################################################################################\n#\n# udpxy\n#\n################################################################################\n\nUDPXY_VERSION = 1.0.23-9-prod\nUDPXY_SOURCE = udpxy.$(UDPXY_VERSION).tar.gz\nUDPXY_SITE = http://www.udpxy.com/download/1_23\nUDPXY_LICENSE = GPL-3.0+\nUDPXY_LICENSE_FILES = README\n\ndefine UDPXY_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine UDPXY_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr \\\n\t\t-C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/uemacs/01-clear-ixon-termios-flag.patch",
    "content": "[PATCH] clear ixon termios flag on initialization\n\nOtherwise ctrl-S/Q gets intercepted by the tty layer instead of\nhandled by uemacs.\n\nSigned-off-by: Peter Korsgaard <jacmet@sunsite.dk>\ndiff --git a/posix.c b/posix.c\nindex 97edd9f052b1..352c4712b689 100644\n--- a/posix.c\n+++ b/posix.c\n@@ -53,17 +53,17 @@ void ttopen(void)\n \t/*\n \t * base new settings on old ones - don't change things\n \t * we don't know about\n \t */\n \tntermios = otermios;\n \n \t/* raw CR/NL etc input handling, but keep ISTRIP if we're on a 7-bit line */\n \tntermios.c_iflag &= ~(IGNBRK | BRKINT | IGNPAR | PARMRK\n-\t\t\t      | INPCK | INLCR | IGNCR | ICRNL);\n+\t\t\t      | INPCK | INLCR | IGNCR | ICRNL | IXON);\n \n \t/* raw CR/NR etc output handling */\n \tntermios.c_oflag &=\n \t    ~(OPOST | ONLCR | OLCUC | OCRNL | ONOCR | ONLRET);\n \n \t/* No signal handling, no echo etc */\n \tntermios.c_lflag &= ~(ISIG | ICANON | XCASE | ECHO | ECHOE | ECHOK\n \t\t\t      | ECHONL | NOFLSH | TOSTOP | ECHOCTL |\n"
  },
  {
    "path": "package/uemacs/Config.in",
    "content": "config BR2_PACKAGE_UEMACS\n\tbool \"uemacs\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  A small emacs.\n\n\t  https://git.kernel.org/cgit/editors/uemacs/uemacs.git/\n"
  },
  {
    "path": "package/uemacs/uemacs.hash",
    "content": "# Locally computed\nsha256  96e30247365bb27bd74c550b637f5b2ffd2978379872a32a840f6667cec5fa2a  uemacs-1cdcf9df88144049750116e36fe20c8c39fa2517-br1.tar.gz\nsha256  6e2a4cf41ec8d4379c154923349733bc0d3935c6fa72c4337cf1bc137b98b90a  README\n"
  },
  {
    "path": "package/uemacs/uemacs.mk",
    "content": "################################################################################\n#\n# uemacs\n#\n################################################################################\n\nUEMACS_VERSION = 1cdcf9df88144049750116e36fe20c8c39fa2517\nUEMACS_SITE = https://git.kernel.org/pub/scm/editors/uemacs/uemacs.git\nUEMACS_SITE_METHOD = git\nUEMACS_DEPENDENCIES = ncurses\nUEMACS_LICENSE = MicroEMACS copyright notice\nUEMACS_LICENSE_FILES = README\n\ndefine UEMACS_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tCC=\"$(TARGET_CC)\" DEFINES=\"-DAUTOCONF -DPOSIX -DUSG\" \\\n\t\tCFLAGS+=\"$(TARGET_CFLAGS) \" LIBS=\"$(TARGET_CFLAGS) -lncurses\"\nendef\n\ndefine UEMACS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/em $(TARGET_DIR)/usr/bin/em\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/uftp/Config.in",
    "content": "config BR2_PACKAGE_UFTP\n\tbool \"uftp\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Encrypted UDP based FTP with multicast.\n\n\t  http://uftp-multicast.sourceforge.net/\n\ncomment \"uftp needs a toolchain w/ threads, wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/uftp/uftp.hash",
    "content": "# Locally computed sha256\nsha256  562f71ea5a24b615eb491f5744bad01e9c2e58244c1d6252d5ae98d320d308e0  uftp-5.0.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  LICENSE.txt\n"
  },
  {
    "path": "package/uftp/uftp.mk",
    "content": "################################################################################\n#\n# uftp\n#\n################################################################################\n\nUFTP_VERSION = 5.0\nUFTP_SITE = http://sourceforge.net/projects/uftp-multicast/files/source-tar\nUFTP_LICENSE = GPL-3.0+\nUFTP_LICENSE_FILES = LICENSE.txt\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nUFTP_DEPENDENCIES += host-pkgconf openssl\nUFTP_MAKE_OPTS += CRYPT_LIB=\"`$(PKG_CONFIG_HOST_BINARY) --libs libcrypto`\"\nelse\nUFTP_MAKE_OPTS += NO_ENCRYPTION=1\nendif\n\ndefine UFTP_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(UFTP_MAKE_OPTS)\nendef\n\ndefine UFTP_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(UFTP_MAKE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/uftrace/0001-cmds-records-replace-ADDR_NO_RANDOMIZE-by-its-value.patch",
    "content": "From dc0a75b1679debbc3712b262e5127e90961f92db Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Fri, 23 Apr 2021 22:57:56 +0200\nSubject: [PATCH] cmds/records: replace ADDR_NO_RANDOMIZE by its value\n\nuClibc-ng lacks the definition of ADDR_NO_RANDOMIZE, causing a build\nfailure. A patch was submitted to upstream uClibc-ng to address this\nissue, but in the mean time, use an hardcoded value.\n\nUsing a #ifdef ... #endif test doesn't work as this value is defined\nthrough an enum in glibc.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n cmds/record.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/cmds/record.c b/cmds/record.c\nindex e750f053..fc4eaed4 100644\n--- a/cmds/record.c\n+++ b/cmds/record.c\n@@ -2110,7 +2110,7 @@ int do_child_exec(int ready, struct opts *opts,\n \n \tif (opts->no_randomize_addr) {\n \t\t/* disable ASLR (Address Space Layout Randomization) */\n-\t\tif (personality(ADDR_NO_RANDOMIZE) < 0)\n+\t\tif (personality(0x0040000 /* ADDR_NO_RANDOMIZE */) < 0)\n \t\t\tpr_dbg(\"disabling ASLR failed\\n\");\n \t}\n \n-- \n2.30.2\n\n"
  },
  {
    "path": "package/uftrace/0002-arch-arm-mcount-support.c-define-EF_ARM_VFP_FLOAT-wh.patch",
    "content": "From 4e543097e62eb052650433d1d4c9c5996d30f242 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Fri, 23 Apr 2021 23:06:01 +0200\nSubject: [PATCH] arch/arm/mcount-support.c: define EF_ARM_VFP_FLOAT when not\n available\n\nuClibc-ng <elf.h> doesn't define EF_ARM_VFP_FLOAT, so let's define it.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n arch/arm/mcount-support.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/arch/arm/mcount-support.c b/arch/arm/mcount-support.c\nindex 8d23460b..51331740 100644\n--- a/arch/arm/mcount-support.c\n+++ b/arch/arm/mcount-support.c\n@@ -3,6 +3,10 @@\n #include <link.h>\n #include <elf.h>\n \n+#ifndef EF_ARM_VFP_FLOAT\n+# define EF_ARM_VFP_FLOAT 0x400\n+#endif\n+\n #ifndef EF_ARM_ABI_FLOAT_HARD\n # define EF_ARM_ABI_FLOAT_HARD  EF_ARM_VFP_FLOAT\n #endif\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/uftrace/Config.in",
    "content": "config BR2_PACKAGE_UFTRACE_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_ARM_CPU_ARMV6 || BR2_ARM_CPU_ARMV7A\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_i386\n\tdefault y if BR2_x86_64\n\nconfig BR2_PACKAGE_UFTRACE\n\tbool \"uftrace\"\n\tdepends on BR2_PACKAGE_UFTRACE_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_ARGP_STANDALONE if \\\n\t       BR2_TOOLCHAIN_USES_UCLIBC || \\\n\t       BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  The uftrace tool is to trace and analyze execution of a\n\t  program written in C/C++. It was heavily inspired by the\n\t  ftrace framework of the Linux kernel (especially function\n\t  graph tracer) and supports userspace programs.\n\t  It supports various kind of commands and filters to help\n\t  analysis of the program execution and performance.\n\n\t  https://github.com/namhyung/uftrace\n\ncomment \"uftrace needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_PACKAGE_UFTRACE_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/uftrace/uftrace.hash",
    "content": "# Locally computed\nsha256\tb8b56d540ea95c3eafe56440d6a998e0a140d53ca2584916b6ca82702795bbd9  uftrace-0.10.tar.gz\nsha256\t8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/uftrace/uftrace.mk",
    "content": "################################################################################\n#\n# uftrace\n#\n################################################################################\n\nUFTRACE_VERSION = 0.10\nUFTRACE_SITE = $(call github,namhyung,uftrace,v$(UFTRACE_VERSION))\nUFTRACE_LICENSE = GPL-2.0\nUFTRACE_LICENSE_FILES = COPYING\nUFTRACE_CONFIGURE_OPTS = \\\n\t--without-libdw \\\n\t--without-libpython \\\n\t--without-libluajit \\\n\t--without-libncurses \\\n\t--without-capstone\n\nifeq ($(BR2_i386),y)\nUFTRACE_ARCH = i386\nelse\nUFTRACE_ARCH = $(BR2_ARCH)\nendif\n\n# Only --without-<foo> options are supported.\nifeq ($(BR2_PACKAGE_ELFUTILS),y)\nUFTRACE_DEPENDENCIES += elfutils\nelse\nUFTRACE_CONFIGURE_OPTS += --without-libelf\nendif\n\nifeq ($(BR2_INSTALL_LIBSTDCPP),)\nUFTRACE_CONFIGURE_OPTS += --without-libstdc++\nendif\n\nUFTRACE_LDFLAGS = $(TARGET_LDFLAGS)\n\nifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y)\nUFTRACE_DEPENDENCIES += argp-standalone\nUFTRACE_LDFLAGS += -largp\nendif\n\ndefine UFTRACE_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) \\\n\t\tLDFLAGS=\"$(UFTRACE_LDFLAGS)\" \\\n\t\t./configure \\\n\t\t--arch=$(UFTRACE_ARCH) \\\n\t\t--prefix=/usr \\\n\t\t$(UFTRACE_CONFIGURE_OPTS) \\\n\t\t-o $(@D)/.config)\nendef\n\ndefine UFTRACE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine UFTRACE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/uhd/0001-host-CMakeLists-add-boost-unit_test_framework-requir.patch",
    "content": "From 881705ec581ab7cd61c8e4fe134db8854a83ec4e Mon Sep 17 00:00:00 2001\nFrom: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\nDate: Tue, 28 Apr 2020 16:56:29 +0200\nSubject: [PATCH] host: CMakeLists: add boost unit_test_framework required only\n when ENABLE_TESTS=ON\n\nBy default, boost unit_test_framework is always required, but only use\nwhen ENABLE_TESTS=ON.\nThis PR suppress unit_test_framework to the default list and append\nUHD_BOOST_REQUIRED_COMPONENTS when this library is needed\n\n[backported from https://github.com/EttusResearch/uhd/pull/341]\nSigned-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\n---\n host/CMakeLists.txt | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/host/CMakeLists.txt b/host/CMakeLists.txt\nindex 8f72ece76..a7731ffbd 100644\n--- a/host/CMakeLists.txt\n+++ b/host/CMakeLists.txt\n@@ -291,10 +291,14 @@ set(UHD_BOOST_REQUIRED_COMPONENTS\n     filesystem\n     program_options\n     system\n-    unit_test_framework\n     serialization\n     thread\n )\n+\n+if(ENABLE_TESTS)\n+    list(APPEND UHD_BOOST_REQUIRED_COMPONENTS unit_test_framework)\n+endif(ENABLE_TESTS)\n+\n include(UHDBoost)\n \n include_directories(${Boost_INCLUDE_DIRS})\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/uhd/0002-host-fix-build-boost-173.patch",
    "content": "From 13caaf001061db3c01082c4574a5e326c4969ab6 Mon Sep 17 00:00:00 2001\nFrom: Martin Braun <martin.braun@ettus.com>\nDate: Thu, 16 Jul 2020 13:07:34 +0200\nSubject: [PATCH] boost: Include bind.hpp where used, add\n BOOST_BIND_GLOBAL_PLACEHOLDERS\n\nConsists of two changes:\n- Grepped for files that use boost::bind, but don't include\n  boost/bind.hpp. Changed all of those to include bind.hpp\n- Add BOOST_BIND_GLOBAL_PLACEHOLDERS so that Boost doesn't complain\n  about using bind placeholders in the global namespace.\n\nBackground: boost/bind.hpp is a convenience header that pulls the Boost\nbind placeholders into the global namespace, but that's deprecated\nbehaviour. For UHD 3.15, we'll keep the deprecated behaviour (modern UHD\nno longer uses Boost.Bind), so this fixes build failures with modern\nBoost, and related warnings.\n\nPatch retrieved from\nhttps://github.com/EttusResearch/uhd/commit/13caaf001061db3c01082c4574a5e326c4969ab6\n\nSigned-off-by: Martin Braun <martin.braun@ettus.com>\nSigned-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\n---\n host/cmake/Modules/UHDBoost.cmake                      | 3 +++\n host/examples/network_relay.cpp                        | 1 +\n host/examples/rfnoc_rx_to_file.cpp                     | 1 +\n host/examples/test_clock_synch.cpp                     | 1 +\n host/examples/txrx_loopback_to_file.cpp                | 1 +\n host/lib/rfnoc/dma_fifo_block_ctrl_impl.cpp            | 1 +\n host/lib/rfnoc/legacy_compat.cpp                       | 1 +\n host/lib/transport/xport_benchmarker.cpp               | 1 +\n host/lib/usrp/b100/b100_impl.cpp                       | 1 +\n host/lib/usrp/b200/b200_iface.cpp                      | 1 +\n host/lib/usrp/b200/b200_impl.cpp                       | 1 +\n host/lib/usrp/cores/rx_dsp_core_3000.cpp               | 1 +\n host/lib/usrp/cores/tx_dsp_core_3000.cpp               | 1 +\n host/lib/usrp/dboard/db_cbx.cpp                        | 1 +\n host/lib/usrp/dboard/db_dbsrx.cpp                      | 1 +\n host/lib/usrp/dboard/db_dbsrx2.cpp                     | 1 +\n host/lib/usrp/dboard/db_sbx_common.cpp                 | 1 +\n host/lib/usrp/dboard/db_sbx_version3.cpp               | 1 +\n host/lib/usrp/dboard/db_sbx_version4.cpp               | 1 +\n host/lib/usrp/dboard/db_tvrx.cpp                       | 1 +\n host/lib/usrp/dboard/db_tvrx2.cpp                      | 1 +\n host/lib/usrp/dboard/db_twinrx.cpp                     | 1 +\n host/lib/usrp/dboard/db_ubx.cpp                        | 1 +\n host/lib/usrp/dboard/db_wbx_common.cpp                 | 1 +\n host/lib/usrp/dboard/db_wbx_simple.cpp                 | 1 +\n host/lib/usrp/dboard/db_wbx_version2.cpp               | 1 +\n host/lib/usrp/dboard/db_wbx_version3.cpp               | 1 +\n host/lib/usrp/dboard/db_wbx_version4.cpp               | 1 +\n host/lib/usrp/dboard/db_xcvr2450.cpp                   | 1 +\n host/lib/usrp/dboard/eiscat/eiscat_radio_ctrl_impl.cpp | 1 +\n host/lib/usrp/multi_usrp.cpp                           | 1 +\n host/lib/usrp/n230/n230_resource_manager.cpp           | 1 +\n host/lib/usrp/n230/n230_uart.cpp                       | 1 +\n host/lib/usrp/usrp1/soft_time_ctrl.cpp                 | 1 +\n host/lib/usrp/usrp1/usrp1_impl.cpp                     | 1 +\n host/lib/usrp/x300/x300_radio_ctrl_impl.cpp            | 1 +\n host/lib/usrp_clock/octoclock/octoclock_impl.cpp       | 1 +\n host/lib/utils/ihex.cpp                                | 1 +\n host/lib/utils/tasks.cpp                               | 1 +\n host/utils/uhd_cal_rx_iq_balance.cpp                   | 1 +\n host/utils/uhd_cal_tx_dc_offset.cpp                    | 1 +\n host/utils/uhd_cal_tx_iq_balance.cpp                   | 1 +\n 42 files changed, 44 insertions(+)\n\ndiff --git a/host/cmake/Modules/UHDBoost.cmake b/host/cmake/Modules/UHDBoost.cmake\nindex 5ebb4acef..e3ee42b50 100644\n--- a/host/cmake/Modules/UHDBoost.cmake\n+++ b/host/cmake/Modules/UHDBoost.cmake\n@@ -259,6 +259,9 @@ else()\n     # disable Boost's use of std::experimental::string_view\n     # works for Boost 1.67.0 and newer & doesn't hurt older\n     add_definitions(-DBOOST_ASIO_DISABLE_STD_EXPERIMENTAL_STRING_VIEW)\n+    # UHD 3.15 still uses global placeholders (_1, _2, ...) from Boost which\n+    # need to be enabled explicitly for some Boost versions\n+    add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)\n \n     # Boost 1.70.0's find cmake scripts don't always set the expected\n     # return variables. Replicate the commit that fixes that issue here:\ndiff --git a/host/examples/network_relay.cpp b/host/examples/network_relay.cpp\nindex bf2ac9255..9a9f56eb5 100644\n--- a/host/examples/network_relay.cpp\n+++ b/host/examples/network_relay.cpp\n@@ -8,6 +8,7 @@\n #include <uhd/utils/safe_main.hpp>\n #include <uhd/utils/thread.hpp>\n #include <boost/asio.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/program_options.hpp>\n #include <boost/thread/condition_variable.hpp>\ndiff --git a/host/examples/rfnoc_rx_to_file.cpp b/host/examples/rfnoc_rx_to_file.cpp\nindex 5bb9985ae..cbd35cbe8 100644\n--- a/host/examples/rfnoc_rx_to_file.cpp\n+++ b/host/examples/rfnoc_rx_to_file.cpp\n@@ -23,6 +23,7 @@\n #include <uhd/types/tune_request.hpp>\n #include <uhd/utils/safe_main.hpp>\n #include <uhd/utils/thread.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/program_options.hpp>\n #include <chrono>\ndiff --git a/host/examples/test_clock_synch.cpp b/host/examples/test_clock_synch.cpp\nindex 8556063d7..ec071f7c7 100644\n--- a/host/examples/test_clock_synch.cpp\n+++ b/host/examples/test_clock_synch.cpp\n@@ -12,6 +12,7 @@\n #include <uhd/usrp_clock/multi_usrp_clock.hpp>\n #include <uhd/utils/safe_main.hpp>\n #include <uhd/utils/thread.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/program_options.hpp>\n #include <chrono>\ndiff --git a/host/examples/txrx_loopback_to_file.cpp b/host/examples/txrx_loopback_to_file.cpp\nindex 271d249f6..a2f0427c9 100644\n--- a/host/examples/txrx_loopback_to_file.cpp\n+++ b/host/examples/txrx_loopback_to_file.cpp\n@@ -13,6 +13,7 @@\n #include <uhd/utils/static.hpp>\n #include <uhd/utils/thread.hpp>\n #include <boost/algorithm/string.hpp>\n+#include <boost/bind.hpp>\n #include <boost/filesystem.hpp>\n #include <boost/format.hpp>\n #include <boost/math/special_functions/round.hpp>\ndiff --git a/host/lib/rfnoc/dma_fifo_block_ctrl_impl.cpp b/host/lib/rfnoc/dma_fifo_block_ctrl_impl.cpp\nindex a80e2ef53..b78635002 100644\n--- a/host/lib/rfnoc/dma_fifo_block_ctrl_impl.cpp\n+++ b/host/lib/rfnoc/dma_fifo_block_ctrl_impl.cpp\n@@ -11,6 +11,7 @@\n #include <uhd/utils/log.hpp>\n #include <uhdlib/rfnoc/wb_iface_adapter.hpp>\n #include <uhdlib/usrp/cores/dma_fifo_core_3000.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/make_shared.hpp>\n #include <boost/thread/mutex.hpp>\ndiff --git a/host/lib/rfnoc/legacy_compat.cpp b/host/lib/rfnoc/legacy_compat.cpp\nindex 91de361df..f93fe871a 100644\n--- a/host/lib/rfnoc/legacy_compat.cpp\n+++ b/host/lib/rfnoc/legacy_compat.cpp\n@@ -19,6 +19,7 @@\n #include <uhd/usrp/subdev_spec.hpp>\n #include <uhd/utils/log.hpp>\n #include <uhdlib/rfnoc/legacy_compat.hpp>\n+#include <boost/bind.hpp>\n #include <boost/make_shared.hpp>\n #include <set>\n \ndiff --git a/host/lib/transport/xport_benchmarker.cpp b/host/lib/transport/xport_benchmarker.cpp\nindex 67582ff2c..7abd4c5fd 100644\n--- a/host/lib/transport/xport_benchmarker.cpp\n+++ b/host/lib/transport/xport_benchmarker.cpp\n@@ -6,6 +6,7 @@\n //\n \n #include \"xport_benchmarker.hpp\"\n+#include <boost/bind.hpp>\n #include <chrono>\n #include <thread>\n \ndiff --git a/host/lib/usrp/b100/b100_impl.cpp b/host/lib/usrp/b100/b100_impl.cpp\nindex cd4319803..08006ae32 100644\n--- a/host/lib/usrp/b100/b100_impl.cpp\n+++ b/host/lib/usrp/b100/b100_impl.cpp\n@@ -15,6 +15,7 @@\n #include <uhd/utils/paths.hpp>\n #include <uhd/utils/safe_call.hpp>\n #include <uhdlib/usrp/common/apply_corrections.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <cstdio>\n #include <iostream>\ndiff --git a/host/lib/usrp/b200/b200_iface.cpp b/host/lib/usrp/b200/b200_iface.cpp\nindex 082be071c..cdf88f69b 100644\n--- a/host/lib/usrp/b200/b200_iface.cpp\n+++ b/host/lib/usrp/b200/b200_iface.cpp\n@@ -12,6 +12,7 @@\n #include <uhd/exception.hpp>\n #include <uhdlib/utils/ihex.hpp>\n \n+#include <boost/bind.hpp>\n #include <boost/functional/hash.hpp>\n #include <boost/lexical_cast.hpp>\n #include <boost/format.hpp>\ndiff --git a/host/lib/usrp/b200/b200_impl.cpp b/host/lib/usrp/b200/b200_impl.cpp\nindex 1be8c263b..c0f8ee1ac 100644\n--- a/host/lib/usrp/b200/b200_impl.cpp\n+++ b/host/lib/usrp/b200/b200_impl.cpp\n@@ -17,6 +17,7 @@\n #include <uhd/utils/safe_call.hpp>\n #include <uhd/usrp/dboard_eeprom.hpp>\n #include <boost/format.hpp>\n+#include <boost/bind.hpp>\n #include <boost/filesystem.hpp>\n #include <boost/lexical_cast.hpp>\n #include <boost/functional/hash.hpp>\ndiff --git a/host/lib/usrp/cores/rx_dsp_core_3000.cpp b/host/lib/usrp/cores/rx_dsp_core_3000.cpp\nindex 46fce3f69..ff7caf105 100644\n--- a/host/lib/usrp/cores/rx_dsp_core_3000.cpp\n+++ b/host/lib/usrp/cores/rx_dsp_core_3000.cpp\n@@ -13,6 +13,7 @@\n #include <uhdlib/usrp/cores/dsp_core_utils.hpp>\n #include <uhdlib/usrp/cores/rx_dsp_core_3000.hpp>\n #include <boost/assign/list_of.hpp>\n+#include <boost/bind.hpp>\n #include <boost/math/special_functions/round.hpp>\n #include <boost/thread/thread.hpp> //thread sleep\n #include <algorithm>\ndiff --git a/host/lib/usrp/cores/tx_dsp_core_3000.cpp b/host/lib/usrp/cores/tx_dsp_core_3000.cpp\nindex be7593841..b76a74b1c 100644\n--- a/host/lib/usrp/cores/tx_dsp_core_3000.cpp\n+++ b/host/lib/usrp/cores/tx_dsp_core_3000.cpp\n@@ -12,6 +12,7 @@\n #include <uhdlib/usrp/cores/dsp_core_utils.hpp>\n #include <uhdlib/usrp/cores/tx_dsp_core_3000.hpp>\n #include <boost/assign/list_of.hpp>\n+#include <boost/bind.hpp>\n #include <boost/math/special_functions/round.hpp>\n #include <boost/thread/thread.hpp> //sleep\n #include <algorithm>\ndiff --git a/host/lib/usrp/dboard/db_cbx.cpp b/host/lib/usrp/dboard/db_cbx.cpp\nindex dd0640d00..f5c7f2399 100644\n--- a/host/lib/usrp/dboard/db_cbx.cpp\n+++ b/host/lib/usrp/dboard/db_cbx.cpp\n@@ -7,6 +7,7 @@\n \n #include \"db_sbx_common.hpp\"\n #include <boost/algorithm/string.hpp>\n+#include <boost/bind.hpp>\n #include <boost/math/special_functions/round.hpp>\n \n using namespace uhd;\ndiff --git a/host/lib/usrp/dboard/db_dbsrx.cpp b/host/lib/usrp/dboard/db_dbsrx.cpp\nindex 587158470..dc82b60f9 100644\n--- a/host/lib/usrp/dboard/db_dbsrx.cpp\n+++ b/host/lib/usrp/dboard/db_dbsrx.cpp\n@@ -21,6 +21,7 @@\n #include <uhd/usrp/dboard_base.hpp>\n #include <uhd/usrp/dboard_manager.hpp>\n #include <boost/assign/list_of.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/math/special_functions/round.hpp>\n #include <utility>\ndiff --git a/host/lib/usrp/dboard/db_dbsrx2.cpp b/host/lib/usrp/dboard/db_dbsrx2.cpp\nindex e2505dfd7..da4da4148 100644\n--- a/host/lib/usrp/dboard/db_dbsrx2.cpp\n+++ b/host/lib/usrp/dboard/db_dbsrx2.cpp\n@@ -18,6 +18,7 @@\n #include <uhd/usrp/dboard_base.hpp>\n #include <uhd/usrp/dboard_manager.hpp>\n #include <boost/assign/list_of.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/thread.hpp>\n #include <boost/math/special_functions/round.hpp>\ndiff --git a/host/lib/usrp/dboard/db_sbx_common.cpp b/host/lib/usrp/dboard/db_sbx_common.cpp\nindex b6eaedc3d..95aff96b4 100644\n--- a/host/lib/usrp/dboard/db_sbx_common.cpp\n+++ b/host/lib/usrp/dboard/db_sbx_common.cpp\n@@ -6,6 +6,7 @@\n //\n \n #include \"db_sbx_common.hpp\"\n+#include <boost/bind.hpp>\n \n using namespace uhd;\n using namespace uhd::usrp;\ndiff --git a/host/lib/usrp/dboard/db_sbx_version3.cpp b/host/lib/usrp/dboard/db_sbx_version3.cpp\nindex 369315b2e..fb829cf34 100644\n--- a/host/lib/usrp/dboard/db_sbx_version3.cpp\n+++ b/host/lib/usrp/dboard/db_sbx_version3.cpp\n@@ -9,6 +9,7 @@\n #include \"db_sbx_common.hpp\"\n #include <uhd/types/tune_request.hpp>\n #include <boost/algorithm/string.hpp>\n+#include <boost/bind.hpp>\n \n using namespace uhd;\n using namespace uhd::usrp;\ndiff --git a/host/lib/usrp/dboard/db_sbx_version4.cpp b/host/lib/usrp/dboard/db_sbx_version4.cpp\nindex d1c76287b..e1adebf99 100644\n--- a/host/lib/usrp/dboard/db_sbx_version4.cpp\n+++ b/host/lib/usrp/dboard/db_sbx_version4.cpp\n@@ -9,6 +9,7 @@\n #include \"db_sbx_common.hpp\"\n #include <uhd/types/tune_request.hpp>\n #include <boost/algorithm/string.hpp>\n+#include <boost/bind.hpp>\n \n using namespace uhd;\n using namespace uhd::usrp;\ndiff --git a/host/lib/usrp/dboard/db_tvrx.cpp b/host/lib/usrp/dboard/db_tvrx.cpp\nindex 8bf377c4d..5fbbf5bee 100644\n--- a/host/lib/usrp/dboard/db_tvrx.cpp\n+++ b/host/lib/usrp/dboard/db_tvrx.cpp\n@@ -28,6 +28,7 @@\n #include <uhd/usrp/dboard_base.hpp>\n #include <uhd/usrp/dboard_manager.hpp>\n #include <boost/assign/list_of.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/thread.hpp>\n #include <boost/array.hpp>\ndiff --git a/host/lib/usrp/dboard/db_tvrx2.cpp b/host/lib/usrp/dboard/db_tvrx2.cpp\nindex 5dba83551..e1623487d 100644\n--- a/host/lib/usrp/dboard/db_tvrx2.cpp\n+++ b/host/lib/usrp/dboard/db_tvrx2.cpp\n@@ -55,6 +55,7 @@\n #include <uhd/usrp/dboard_manager.hpp>\n #include <boost/assign/list_of.hpp>\n #include <boost/format.hpp>\n+#include <boost/bind.hpp>\n #include <boost/array.hpp>\n #include <boost/math/special_functions/round.hpp>\n #include <utility>\ndiff --git a/host/lib/usrp/dboard/db_twinrx.cpp b/host/lib/usrp/dboard/db_twinrx.cpp\nindex de1cd3f33..aa9da8adf 100644\n--- a/host/lib/usrp/dboard/db_twinrx.cpp\n+++ b/host/lib/usrp/dboard/db_twinrx.cpp\n@@ -19,6 +19,7 @@\n #include <uhd/utils/log.hpp>\n #include <uhd/utils/static.hpp>\n #include \"dboard_ctor_args.hpp\"\n+#include <boost/bind.hpp>\n #include <boost/make_shared.hpp>\n #include <boost/thread.hpp>\n #include <boost/thread/mutex.hpp>\ndiff --git a/host/lib/usrp/dboard/db_ubx.cpp b/host/lib/usrp/dboard/db_ubx.cpp\nindex 305a69c52..e78f9db75 100644\n--- a/host/lib/usrp/dboard/db_ubx.cpp\n+++ b/host/lib/usrp/dboard/db_ubx.cpp\n@@ -20,6 +20,7 @@\n #include <uhd/utils/safe_call.hpp>\n #include <uhdlib/usrp/common/max287x.hpp>\n \n+#include <boost/bind.hpp>\n #include <boost/shared_ptr.hpp>\n #include <boost/math/special_functions/round.hpp>\n #include <boost/algorithm/string.hpp>\ndiff --git a/host/lib/usrp/dboard/db_wbx_common.cpp b/host/lib/usrp/dboard/db_wbx_common.cpp\nindex 41f323d19..fd7b2481a 100644\n--- a/host/lib/usrp/dboard/db_wbx_common.cpp\n+++ b/host/lib/usrp/dboard/db_wbx_common.cpp\n@@ -12,6 +12,7 @@\n #include <uhd/utils/assert_has.hpp>\n #include <uhd/utils/algorithm.hpp>\n #include <uhd/utils/log.hpp>\n+#include <boost/bind.hpp>\n \n using namespace uhd;\n using namespace uhd::usrp;\ndiff --git a/host/lib/usrp/dboard/db_wbx_simple.cpp b/host/lib/usrp/dboard/db_wbx_simple.cpp\nindex 390c5c47a..e3a5667c7 100644\n--- a/host/lib/usrp/dboard/db_wbx_simple.cpp\n+++ b/host/lib/usrp/dboard/db_wbx_simple.cpp\n@@ -17,6 +17,7 @@\n #include <uhd/utils/assert_has.hpp>\n #include <uhd/usrp/dboard_manager.hpp>\n #include <boost/assign/list_of.hpp>\n+#include <boost/bind.hpp>\n \n using namespace uhd;\n using namespace uhd::usrp;\ndiff --git a/host/lib/usrp/dboard/db_wbx_version2.cpp b/host/lib/usrp/dboard/db_wbx_version2.cpp\nindex 775ee4467..f1bf7dacc 100644\n--- a/host/lib/usrp/dboard/db_wbx_version2.cpp\n+++ b/host/lib/usrp/dboard/db_wbx_version2.cpp\n@@ -16,6 +16,7 @@\n \n #include <uhd/usrp/dboard_base.hpp>\n #include <boost/assign/list_of.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/math/special_functions/round.hpp>\n #include <boost/algorithm/string.hpp>\ndiff --git a/host/lib/usrp/dboard/db_wbx_version3.cpp b/host/lib/usrp/dboard/db_wbx_version3.cpp\nindex 41979f8ef..b755d09a2 100644\n--- a/host/lib/usrp/dboard/db_wbx_version3.cpp\n+++ b/host/lib/usrp/dboard/db_wbx_version3.cpp\n@@ -15,6 +15,7 @@\n \n #include <uhd/usrp/dboard_base.hpp>\n #include <boost/assign/list_of.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/math/special_functions/round.hpp>\n #include <boost/algorithm/string.hpp>\ndiff --git a/host/lib/usrp/dboard/db_wbx_version4.cpp b/host/lib/usrp/dboard/db_wbx_version4.cpp\nindex 8b3d13b37..f2976d3a7 100644\n--- a/host/lib/usrp/dboard/db_wbx_version4.cpp\n+++ b/host/lib/usrp/dboard/db_wbx_version4.cpp\n@@ -15,6 +15,7 @@\n \n #include <uhd/usrp/dboard_base.hpp>\n #include <boost/assign/list_of.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/math/special_functions/round.hpp>\n #include <boost/algorithm/string.hpp>\ndiff --git a/host/lib/usrp/dboard/db_xcvr2450.cpp b/host/lib/usrp/dboard/db_xcvr2450.cpp\nindex 9e1c9f2b0..8f95dbb1c 100644\n--- a/host/lib/usrp/dboard/db_xcvr2450.cpp\n+++ b/host/lib/usrp/dboard/db_xcvr2450.cpp\n@@ -49,6 +49,7 @@\n #include <uhd/usrp/dboard_base.hpp>\n #include <uhd/usrp/dboard_manager.hpp>\n #include <boost/assign/list_of.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/math/special_functions/round.hpp>\n #include <utility>\ndiff --git a/host/lib/usrp/dboard/eiscat/eiscat_radio_ctrl_impl.cpp b/host/lib/usrp/dboard/eiscat/eiscat_radio_ctrl_impl.cpp\nindex 73851656b..717fa144f 100644\n--- a/host/lib/usrp/dboard/eiscat/eiscat_radio_ctrl_impl.cpp\n+++ b/host/lib/usrp/dboard/eiscat/eiscat_radio_ctrl_impl.cpp\n@@ -11,6 +11,7 @@\n #include <uhd/rfnoc/node_ctrl_base.hpp>\n #include <uhd/types/ranges.hpp>\n #include <boost/algorithm/string.hpp>\n+#include <boost/bind.hpp>\n #include <boost/make_shared.hpp>\n #include <boost/date_time/posix_time/posix_time_io.hpp>\n #include <boost/format.hpp>\ndiff --git a/host/lib/usrp/multi_usrp.cpp b/host/lib/usrp/multi_usrp.cpp\nindex 49ffec698..13cb03cf9 100644\n--- a/host/lib/usrp/multi_usrp.cpp\n+++ b/host/lib/usrp/multi_usrp.cpp\n@@ -21,6 +21,7 @@\n #include <uhdlib/usrp/gpio_defs.hpp>\n #include <uhdlib/rfnoc/legacy_compat.hpp>\n #include <boost/assign/list_of.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/algorithm/string.hpp>\n #include <algorithm>\ndiff --git a/host/lib/usrp/n230/n230_resource_manager.cpp b/host/lib/usrp/n230/n230_resource_manager.cpp\nindex 22f8ddedb..df3c9fb15 100644\n--- a/host/lib/usrp/n230/n230_resource_manager.cpp\n+++ b/host/lib/usrp/n230/n230_resource_manager.cpp\n@@ -14,6 +14,7 @@\n #include <uhd/utils/log.hpp>\n #include <uhd/utils/platform.hpp>\n #include <uhd/utils/paths.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/functional/hash.hpp>\n #include <boost/make_shared.hpp>\ndiff --git a/host/lib/usrp/n230/n230_uart.cpp b/host/lib/usrp/n230/n230_uart.cpp\nindex 8689335c8..26fafde94 100644\n--- a/host/lib/usrp/n230/n230_uart.cpp\n+++ b/host/lib/usrp/n230/n230_uart.cpp\n@@ -13,6 +13,7 @@\n #include <uhd/utils/log.hpp>\n #include <uhd/types/time_spec.hpp>\n #include <uhd/exception.hpp>\n+#include <boost/bind.hpp>\n \n using namespace uhd;\n using namespace uhd::transport;\ndiff --git a/host/lib/usrp/usrp1/soft_time_ctrl.cpp b/host/lib/usrp/usrp1/soft_time_ctrl.cpp\nindex 7f39caf8a..9a84ee188 100644\n--- a/host/lib/usrp/usrp1/soft_time_ctrl.cpp\n+++ b/host/lib/usrp/usrp1/soft_time_ctrl.cpp\n@@ -8,6 +8,7 @@\n #include \"soft_time_ctrl.hpp\"\n #include <uhdlib/utils/system_time.hpp>\n #include <uhd/utils/tasks.hpp>\n+#include <boost/bind.hpp>\n #include <boost/make_shared.hpp>\n #include <boost/thread/condition_variable.hpp>\n #include <boost/date_time/posix_time/posix_time.hpp>\ndiff --git a/host/lib/usrp/usrp1/usrp1_impl.cpp b/host/lib/usrp/usrp1/usrp1_impl.cpp\nindex 2134f8182..1e83ce3fc 100644\n--- a/host/lib/usrp/usrp1/usrp1_impl.cpp\n+++ b/host/lib/usrp/usrp1/usrp1_impl.cpp\n@@ -14,6 +14,7 @@\n #include <uhd/exception.hpp>\n #include <uhd/utils/static.hpp>\n #include <uhd/utils/paths.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/filesystem.hpp>\n #include <boost/lexical_cast.hpp>\ndiff --git a/host/lib/usrp/x300/x300_radio_ctrl_impl.cpp b/host/lib/usrp/x300/x300_radio_ctrl_impl.cpp\nindex 8d967ae15..de36379ea 100644\n--- a/host/lib/usrp/x300/x300_radio_ctrl_impl.cpp\n+++ b/host/lib/usrp/x300/x300_radio_ctrl_impl.cpp\n@@ -17,6 +17,7 @@\n #include <uhdlib/usrp/common/apply_corrections.hpp>\n #include <uhdlib/usrp/cores/gpio_atr_3000.hpp>\n #include <boost/algorithm/string.hpp>\n+#include <boost/bind.hpp>\n #include <boost/date_time/posix_time/posix_time_io.hpp>\n #include <boost/make_shared.hpp>\n #include <chrono>\ndiff --git a/host/lib/usrp_clock/octoclock/octoclock_impl.cpp b/host/lib/usrp_clock/octoclock/octoclock_impl.cpp\nindex f3cf3f4ea..4c11788d2 100644\n--- a/host/lib/usrp_clock/octoclock/octoclock_impl.cpp\n+++ b/host/lib/usrp_clock/octoclock/octoclock_impl.cpp\n@@ -9,6 +9,7 @@\n \n #include <boost/asio.hpp>\n #include <boost/assign.hpp>\n+#include <boost/bind.hpp>\n #include <stdint.h>\n #include <boost/filesystem.hpp>\n #include <boost/format.hpp>\ndiff --git a/host/lib/utils/ihex.cpp b/host/lib/utils/ihex.cpp\nindex 6bb0ba9d4..7fb605627 100644\n--- a/host/lib/utils/ihex.cpp\n+++ b/host/lib/utils/ihex.cpp\n@@ -7,6 +7,7 @@\n \n #include <uhd/exception.hpp>\n #include <uhdlib/utils/ihex.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/make_shared.hpp>\n #include <sstream>\ndiff --git a/host/lib/utils/tasks.cpp b/host/lib/utils/tasks.cpp\nindex 888a5a8f1..e5195fcf1 100644\n--- a/host/lib/utils/tasks.cpp\n+++ b/host/lib/utils/tasks.cpp\n@@ -10,6 +10,7 @@\n #include <uhd/utils/thread.hpp>\n #include <uhd/utils/log.hpp>\n #include <uhd/exception.hpp>\n+#include <boost/bind.hpp>\n #include <boost/thread/thread.hpp>\n #include <boost/thread/barrier.hpp>\n #include <exception>\ndiff --git a/host/utils/uhd_cal_rx_iq_balance.cpp b/host/utils/uhd_cal_rx_iq_balance.cpp\nindex c68c96173..3f5fa1788 100644\n--- a/host/utils/uhd_cal_rx_iq_balance.cpp\n+++ b/host/utils/uhd_cal_rx_iq_balance.cpp\n@@ -11,6 +11,7 @@\n #include <uhd/utils/paths.hpp>\n #include <uhd/utils/safe_main.hpp>\n #include <uhd/utils/thread.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/math/special_functions/round.hpp>\n #include <boost/program_options.hpp>\ndiff --git a/host/utils/uhd_cal_tx_dc_offset.cpp b/host/utils/uhd_cal_tx_dc_offset.cpp\nindex f47b5e913..2cb65d3f5 100644\n--- a/host/utils/uhd_cal_tx_dc_offset.cpp\n+++ b/host/utils/uhd_cal_tx_dc_offset.cpp\n@@ -11,6 +11,7 @@\n #include <uhd/utils/paths.hpp>\n #include <uhd/utils/safe_main.hpp>\n #include <uhd/utils/thread.hpp>\n+#include <boost/bind.hpp>\n #include <boost/format.hpp>\n #include <boost/math/special_functions/round.hpp>\n #include <boost/program_options.hpp>\ndiff --git a/host/utils/uhd_cal_tx_iq_balance.cpp b/host/utils/uhd_cal_tx_iq_balance.cpp\nindex 2e7229fd3..ace93462e 100644\n--- a/host/utils/uhd_cal_tx_iq_balance.cpp\n+++ b/host/utils/uhd_cal_tx_iq_balance.cpp\n@@ -8,6 +8,7 @@\n #include \"usrp_cal_utils.hpp\"\n #include <uhd/utils/safe_main.hpp>\n #include <uhd/utils/thread.hpp>\n+#include <boost/bind.hpp>\n #include <boost/math/special_functions/round.hpp>\n #include <boost/program_options.hpp>\n #include <boost/thread/thread.hpp>\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/uhd/0003-add-RISC-V-endian-detection.patch",
    "content": "From d4717a38d2287c2f583fefb2a0ed273337a92bb6 Mon Sep 17 00:00:00 2001\nFrom: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\nDate: Mon, 11 Jan 2021 18:18:26 +0100\nSubject: [PATCH] msgpack/predef: add riscV support\n\nWhen the target CPU is riscV, msgpack is unable to detect endianness with a list of errors like:\n\nuhd/host/lib/deps/rpclib/include/rpc/msgpack/pack.hpp:190:2: error: #error msgpack-c supports only big endian and little endian\n  190 | #error msgpack-c supports only big endian and little endian\n      |  ^~~~~\n\nand with subsequent errors:\n\nuhd0/host/lib/deps/rpclib/include/rpc/msgpack/pack.hpp:236:46: error: there are no arguments to 'take8_8' that depend on a template parameter, so a declaration of 'take8_8' must be available [-fpermissive]\n  236 |     char buf[2] = {static_cast<char>(0xccu), take8_8(d)};\n      |      \n\nThis is due to a missing support for this architecture in msgpack.\nThis patch adapt commit from https://github.com/boostorg/predef\n\n[backported from https://github.com/EttusResearch/uhd/pull/400]\n\nSigned-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\n---\n .../include/rpc/msgpack/predef/architecture.h |  1 +\n .../rpc/msgpack/predef/architecture/riscv.h   | 48 +++++++++++++++++++\n .../include/rpc/msgpack/predef/other/endian.h |  3 +-\n 3 files changed, 51 insertions(+), 1 deletion(-)\n create mode 100644 host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture/riscv.h\n\ndiff --git a/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture.h b/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture.h\nindex 4a0ce2749..1bd998c59 100644\n--- a/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture.h\n+++ b/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture.h\n@@ -18,6 +18,7 @@ http://www.boost.org/LICENSE_1_0.txt)\n #include <rpc/msgpack/predef/architecture/parisc.h>\n #include <rpc/msgpack/predef/architecture/ppc.h>\n #include <rpc/msgpack/predef/architecture/pyramid.h>\n+#include <rpc/msgpack/predef/architecture/riscv.h>\n #include <rpc/msgpack/predef/architecture/rs6k.h>\n #include <rpc/msgpack/predef/architecture/sparc.h>\n #include <rpc/msgpack/predef/architecture/superh.h>\ndiff --git a/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture/riscv.h b/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture/riscv.h\nnew file mode 100644\nindex 000000000..8b819d77e\n--- /dev/null\n+++ b/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture/riscv.h\n@@ -0,0 +1,48 @@\n+/*\n+Copyright Andreas Schwab 2019\n+Distributed under the Boost Software License, Version 1.0.\n+(See accompanying file LICENSE_1_0.txt or copy at\n+http://www.boost.org/LICENSE_1_0.txt)\n+*/\n+\n+#ifndef BOOST_PREDEF_ARCHITECTURE_RISCV_H\n+#define BOOST_PREDEF_ARCHITECTURE_RISCV_H\n+\n+#include <boost/predef/version_number.h>\n+#include <boost/predef/make.h>\n+\n+/* tag::reference[]\n+= `BOOST_ARCH_RISCV`\n+\n+http://en.wikipedia.org/wiki/RISC-V[RISC-V] architecture.\n+\n+[options=\"header\"]\n+|===\n+| {predef_symbol} | {predef_version}\n+\n+| `+__riscv+` | {predef_detection}\n+|===\n+*/ // end::reference[]\n+\n+#define BOOST_ARCH_RISCV BOOST_VERSION_NUMBER_NOT_AVAILABLE\n+\n+#if defined(__riscv)\n+#   undef BOOST_ARCH_RISCV\n+#   define BOOST_ARCH_RISCV BOOST_VERSION_NUMBER_AVAILABLE\n+#endif\n+\n+#if BOOST_ARCH_RISCV\n+#   define BOOST_ARCH_RISCV_AVAILABLE\n+#endif\n+\n+#if BOOST_ARCH_RISCV\n+#   undef BOOST_ARCH_WORD_BITS_32\n+#   define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE\n+#endif\n+\n+#define BOOST_ARCH_RISCV_NAME \"RISC-V\"\n+\n+#endif\n+\n+#include <boost/predef/detail/test.h>\n+BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_RISCV,BOOST_ARCH_RISCV_NAME)\ndiff --git a/host/lib/deps/rpclib/include/rpc/msgpack/predef/other/endian.h b/host/lib/deps/rpclib/include/rpc/msgpack/predef/other/endian.h\nindex 3f367b3d4..a7c1fb4dc 100644\n--- a/host/lib/deps/rpclib/include/rpc/msgpack/predef/other/endian.h\n+++ b/host/lib/deps/rpclib/include/rpc/msgpack/predef/other/endian.h\n@@ -127,7 +127,8 @@ information and acquired knowledge:\n         defined(__AARCH64EL__) || \\\n         defined(_MIPSEL) || \\\n         defined(__MIPSEL) || \\\n-        defined(__MIPSEL__)\n+        defined(__MIPSEL__) || \\\n+        defined(__riscv)\n #       undef MSGPACK_ENDIAN_LITTLE_BYTE\n #       define MSGPACK_ENDIAN_LITTLE_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE\n #   endif\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/uhd/0004-lib-Fix-missing-includes-in-rpc-hpp.patch",
    "content": "From 9c4d9d826a6f40f199c526afd5ec168d5d088591 Mon Sep 17 00:00:00 2001\nFrom: Martin Braun <martin.braun@ettus.com>\nDate: Fri, 29 Jan 2021 12:23:50 +0100\nSubject: [PATCH] lib: Fix missing includes in rpc.hpp\n\n[Retrieved from:\nhttps://github.com/EttusResearch/uhd/commit/9c4d9d826a6f40f199c526afd5ec168d5d088591]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n host/lib/include/uhdlib/utils/rpc.hpp | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/host/lib/include/uhdlib/utils/rpc.hpp b/host/lib/include/uhdlib/utils/rpc.hpp\nindex e87a2ee324..ca89c10547 100644\n--- a/host/lib/include/uhdlib/utils/rpc.hpp\n+++ b/host/lib/include/uhdlib/utils/rpc.hpp\n@@ -12,7 +12,11 @@\n #include <rpc/client.h>\n #include <rpc/rpc_error.h>\n #include <boost/format.hpp>\n+#include <chrono>\n #include <memory>\n+#include <mutex>\n+#include <string>\n+#include <thread>\n \n namespace {\n \n"
  },
  {
    "path": "package/uhd/0005-core-remove-boost-math-in-favor-of-std-cmath.patch",
    "content": "From dc187b5597779b14d0de4087db4aa54752a15d07 Mon Sep 17 00:00:00 2001\nFrom: Michael Dickens <michael.dickens@ettus.com>\nDate: Fri, 2 Jul 2021 16:43:41 -0400\nSubject: [PATCH] core: remove boost::math in favor of std cmath\n\nYA Boost removal!!!\n\nJustification\n---\nconst int if_freq_sign = boost::math::sign(fe_conn.get_if_freq());\n_dsp_freq_offset = if_freq * (-if_freq_sign);\n// boost::math::sign : 1 if x > 0, -1 if x < 0, and 0 if x is zero.\n// ==> if if_freq_sign > 0 then * by -1 else +1 (effectively)\n\n// std::signbit : true if arg is negative, false otherwise\n// ==> need 'not' of input argument to invert for same result as prior algorithm\ndouble fe_if_freq = fe_conn.get_if_freq();\nif (!std::signbit(fe_if_freq)) {\n  if_freq *= -1.0;\n}\n---\nThe above should result in the same algorithm except possibly\nif fe_if_freq is exactly 0.0 in which case the results might be\noff by the sign (+0.0 versus -0.0).\n\n[Retrieved from:\nhttps://github.com/EttusResearch/uhd/commit/dc187b5597779b14d0de4087db4aa54752a15d07]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n host/lib/usrp/cores/rx_dsp_core_3000.cpp      | 15 ++++++++-------\n host/lib/usrp/cores/rx_frontend_core_3000.cpp | 14 ++++++++------\n 2 files changed, 16 insertions(+), 13 deletions(-)\n\ndiff --git a/host/lib/usrp/cores/rx_dsp_core_3000.cpp b/host/lib/usrp/cores/rx_dsp_core_3000.cpp\nindex 879748fa2..1c15180ae 100644\n--- a/host/lib/usrp/cores/rx_dsp_core_3000.cpp\n+++ b/host/lib/usrp/cores/rx_dsp_core_3000.cpp\n@@ -8,7 +8,6 @@\n #include <uhd/exception.hpp>\n #include <uhd/types/dict.hpp>\n #include <uhd/utils/log.hpp>\n-#include <uhd/utils/math.hpp>\n #include <uhd/utils/safe_call.hpp>\n #include <uhdlib/usrp/cores/dsp_core_utils.hpp>\n #include <uhdlib/usrp/cores/rx_dsp_core_3000.hpp>\n@@ -81,19 +80,21 @@ class rx_dsp_core_3000_impl : public rx_dsp_core_3000\n         _iface->poke32(REG_DSP_RX_MUX, reg_val);\n \n         if (fe_conn.get_sampling_mode() == uhd::usrp::fe_connection_t::HETERODYNE) {\n-            // 1. Remember the sign of the IF frequency.\n-            //   It will be discarded in the next step\n-            int if_freq_sign = boost::math::sign(fe_conn.get_if_freq());\n+            // 1. Remember the IF frequency\n+            const double fe_if_freq = fe_conn.get_if_freq();\n             // 2. Map IF frequency to the range [0, _tick_rate)\n-            double if_freq = std::abs(std::fmod(fe_conn.get_if_freq(), _tick_rate));\n-            // 3. Map IF frequency to the range [-_tick_rate/2, _tick_rate/2)\n+            double if_freq = std::abs(std::fmod(fe_if_freq, _tick_rate));\n+            // 3. Map IF frequency to the range [-_tick_rate/2, _tick_rate/2]\n             //   This is the aliased frequency\n             if (if_freq > (_tick_rate / 2.0)) {\n                 if_freq -= _tick_rate;\n             }\n             // 4. Set DSP offset to spin the signal in the opposite\n             //   direction as the aliased frequency\n-            _dsp_freq_offset = if_freq * (-if_freq_sign);\n+            if (!std::signbit(fe_if_freq)) {\n+                if_freq *= -1.0;\n+            }\n+            _dsp_freq_offset = if_freq;\n         } else {\n             _dsp_freq_offset = 0.0;\n         }\ndiff --git a/host/lib/usrp/cores/rx_frontend_core_3000.cpp b/host/lib/usrp/cores/rx_frontend_core_3000.cpp\nindex eef25f27d..b9d908534 100644\n--- a/host/lib/usrp/cores/rx_frontend_core_3000.cpp\n+++ b/host/lib/usrp/cores/rx_frontend_core_3000.cpp\n@@ -119,19 +119,21 @@ class rx_frontend_core_3000_impl : public rx_frontend_core_3000\n \n         UHD_ASSERT_THROW(_adc_rate != 0.0)\n         if (fe_conn.get_sampling_mode() == fe_connection_t::HETERODYNE) {\n-            // 1. Remember the sign of the IF frequency.\n-            //   It will be discarded in the next step\n-            const int if_freq_sign = boost::math::sign(fe_conn.get_if_freq());\n+            // 1. Remember the IF frequency\n+            const double fe_if_freq = fe_conn.get_if_freq();\n             // 2. Map IF frequency to the range [0, _adc_rate)\n-            double if_freq = std::abs(std::fmod(fe_conn.get_if_freq(), _adc_rate));\n-            // 3. Map IF frequency to the range [-_adc_rate/2, _adc_rate/2)\n+            double if_freq = std::abs(std::fmod(fe_if_freq, _adc_rate));\n+            // 3. Map IF frequency to the range [-_adc_rate/2, _adc_rate/2]\n             //   This is the aliased frequency\n             if (if_freq > (_adc_rate / 2.0)) {\n                 if_freq -= _adc_rate;\n             }\n             // 4. Set DSP offset to spin the signal in the opposite\n             //   direction as the aliased frequency\n-            const double cordic_freq = if_freq * (-if_freq_sign);\n+            if (!std::signbit(fe_if_freq)) {\n+                if_freq *= -1.0;\n+            }\n+            const double cordic_freq = if_freq;\n             UHD_ASSERT_THROW(uhd::math::fp_compare::fp_compare_epsilon<double>(4.0)\n                              == std::abs(_adc_rate / cordic_freq));\n \n"
  },
  {
    "path": "package/uhd/0006-usrp2-Replace-boost-math-iround-math-sign-with-std-l.patch",
    "content": "From 3796175f32f0cc24c16809d8175d423bc7053de9 Mon Sep 17 00:00:00 2001\nFrom: StefanBruens <stefan.bruens@rwth-aachen.de>\nDate: Wed, 5 May 2021 18:24:58 +0200\nSubject: [PATCH] usrp2: Replace boost::math::iround/math::sign with std::lround\n\nInstead of multiplying zone with the sign repeatedly just make\nthe zone a signed value.\n\nSee #437, #438\n\nSigned-off-by: Aaron Rossetto <aaron.rossetto@ni.com>\n[gwenhael.goavec-merou@trabucayre.com: backport from upstream]\nSigned-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\n---\n host/lib/usrp/usrp2/usrp2_impl.cpp | 10 +++++-----\n 1 file changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp\nindex 1be4c7339..c0719a316 100644\n--- a/host/lib/usrp/usrp2/usrp2_impl.cpp\n+++ b/host/lib/usrp/usrp2/usrp2_impl.cpp\n@@ -22,6 +22,7 @@\n #include <boost/asio/ip/address_v4.hpp>\n #include <boost/asio.hpp> //used for htonl and ntohl\n #include <boost/thread.hpp>\n+#include <cmath>\n \n using namespace uhd;\n using namespace uhd::usrp;\n@@ -844,20 +845,19 @@ double usrp2_impl::set_tx_dsp_freq(\n         _tree->access<double>(\"/mboards/\"+mb+\"/tick_rate\").get();\n \n     //calculate the DAC shift (multiples of rate)\n-    const int sign = boost::math::sign(new_freq);\n-    const int zone = std::min(boost::math::iround(new_freq/tick_rate), 2);\n-    const double dac_shift = sign*zone*tick_rate;\n+    const int zone         = std::max(std::min(std::lround(new_freq / tick_rate), 2), -2);\n+    const double dac_shift = zone * tick_rate;\n     new_freq -= dac_shift; //update FPGA DSP target freq\n     UHD_LOG_TRACE(\"USRP2\",\n         \"DSP Tuning: Requested \" + std::to_string(freq_/1e6) + \" MHz, Using \"\n-        \"Nyquist zone \" + std::to_string(sign*zone) + \", leftover DSP tuning: \"\n+        \"Nyquist zone \" + std::to_string(zone) + \", leftover DSP tuning: \"\n         + std::to_string(new_freq/1e6) + \" MHz.\");\n \n     //set the DAC shift (modulation mode)\n     if (zone == 0) {\n         _mbc[mb].codec->set_tx_mod_mode(0); //no shift\n     } else {\n-        _mbc[mb].codec->set_tx_mod_mode(sign*4/zone); //DAC interp = 4\n+        _mbc[mb].codec->set_tx_mod_mode(4 / zone); // DAC interp = 4\n     }\n \n     return _mbc[mb].tx_dsp->set_freq(new_freq) + dac_shift; //actual freq\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/uhd/0007-usrp2-Use-explicit-template-type-for-std-min-T.patch",
    "content": "From d1c6290fe9c8b01068abfca6f272e2a1e031b9de Mon Sep 17 00:00:00 2001\nFrom: StefanBruens <stefan.bruens@rwth-aachen.de>\nDate: Wed, 5 May 2021 18:49:40 +0200\nSubject: [PATCH] usrp2: Use explicit template type for std::min<T>\n\nSigned-off-by: Aaron Rossetto <aaron.rossetto@ni.com>\n[gwenhael.goavec-merou@trabucayre.com: backport from upstream]\nSigned-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>\n---\n host/lib/usrp/usrp2/usrp2_impl.cpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp\nindex 59fd9849c..e82a9fa71 100644\n--- a/host/lib/usrp/usrp2/usrp2_impl.cpp\n+++ b/host/lib/usrp/usrp2/usrp2_impl.cpp\n@@ -845,7 +845,7 @@ double usrp2_impl::set_tx_dsp_freq(\n         _tree->access<double>(\"/mboards/\"+mb+\"/tick_rate\").get();\n \n     //calculate the DAC shift (multiples of rate)\n-    const int zone         = std::max(std::min(std::lround(new_freq / tick_rate), 2), -2);\n+    const int zone         = std::max(std::min<int>(std::lround(new_freq / tick_rate), 2), -2);\n     const double dac_shift = zone * tick_rate;\n     new_freq -= dac_shift; //update FPGA DSP target freq\n     UHD_LOG_TRACE(\"USRP2\",\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/uhd/Config.in",
    "content": "comment \"uhd needs a toolchain w/ C++, NPTL, wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS\n\ncomment \"uhd needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nconfig BR2_PACKAGE_UHD\n\tbool \"uhd\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic, boost-filesystem\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_USE_MMU # use fork()\n\tdepends on BR2_USE_WCHAR # boost\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_ATOMIC\n\tselect BR2_PACKAGE_BOOST_CHRONO\n\tselect BR2_PACKAGE_BOOST_DATE_TIME\n\tselect BR2_PACKAGE_BOOST_FILESYSTEM\n\tselect BR2_PACKAGE_BOOST_MATH\n\tselect BR2_PACKAGE_BOOST_PROGRAM_OPTIONS\n\tselect BR2_PACKAGE_BOOST_REGEX\n\tselect BR2_PACKAGE_BOOST_SERIALIZATION\n\tselect BR2_PACKAGE_BOOST_SYSTEM\n\tselect BR2_PACKAGE_BOOST_THREAD\n\thelp\n\t  Universal Software Radio Peripheral (USRP) Hardware Driver\n\n\t  https://kb.etthus.com\n\nif BR2_PACKAGE_UHD\n\nconfig BR2_PACKAGE_UHD_B100\n\tbool \"b100 support\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_UHD_USB\n\thelp\n\t  enable B100 support\n\ncomment \"B100 support needs a toolchain w/ gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_UHD_B200\n\tbool \"b200 support\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_UHD_USB\n\thelp\n\t  enable B200 support\n\ncomment \"B200 support needs a toolchain w/ gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_UHD_E300\n\tbool \"E300 support\"\n\tselect BR2_PACKAGE_UHD_MPMD\n\thelp\n\t  enable E300 support\n\nconfig BR2_PACKAGE_UHD_E320\n\tbool \"E320 support\"\n\tselect BR2_PACKAGE_UHD_MPMD\n\thelp\n\t  enable E320 support\n\nconfig BR2_PACKAGE_UHD_EXAMPLES\n\tbool \"uhd-examples\"\n\thelp\n\t  Examples\n\nconfig BR2_PACKAGE_UHD_MPMD\n\tbool \"MPMD support\"\n\thelp\n\t  enable MPMD support\n\nconfig BR2_PACKAGE_UHD_N230\n\tbool \"N230 support\"\n\thelp\n\t  enable N230 support\n\nconfig BR2_PACKAGE_UHD_N300\n\tbool \"N300 support\"\n\tselect BR2_PACKAGE_UHD_MPMD\n\thelp\n\t  enable N300 support\n\nconfig BR2_PACKAGE_UHD_N320\n\tbool \"N320 support\"\n\tselect BR2_PACKAGE_UHD_MPMD\n\thelp\n\t  enable N320 support\n\nconfig BR2_PACKAGE_UHD_OCTOCLOCK\n\tbool \"OctoClock support\"\n\thelp\n\t  enable OctoClock support\n\ncomment \"uhd python API needs python3 and a toolchain w/ glibc or musl\"\n\tdepends on !BR2_PACKAGE_PYTHON3\n\tdepends on !BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\tdepends on !(BR2_TOOLCHAIN_USES_GLIBC && BR2_TOOLCHAIN_USES_MUSL) # python-numpy\n\nconfig BR2_PACKAGE_UHD_PYTHON\n\tbool \"python API support\"\n\tdepends on BR2_PACKAGE_PYTHON3\n\tdepends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # python-numpy\n\tselect BR2_PACKAGE_PYTHON_NUMPY\n\tselect BR2_PACKAGE_PYTHON_REQUESTS\n\thelp\n\t  enable python API support\n\nconfig BR2_PACKAGE_UHD_RFNOC\n\tbool \"RFNoC support\"\n\thelp\n\t  enable RFNoC support\n\nconfig BR2_PACKAGE_UHD_USB\n\tbool \"USB support\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  enable UHD USB support\n\ncomment \"USB support needs a toolchain w/ gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_UHD_USRP1\n\tbool \"USRP1 support\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_UHD_USB\n\thelp\n\t  enable USRP1 support\n\ncomment \"USRP1 support needs a toolchain w/ gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_UHD_USRP2\n\tbool \"USRP2 support\"\n\thelp\n\t  enable USRP2 support\n\ncomment \"uhd utils depends on python API support\"\n\tdepends on !BR2_PACKAGE_UHD_PYTHON\n\nconfig BR2_PACKAGE_UHD_UTILS\n\tbool \"uhd-utils\"\n\tdepends on BR2_PACKAGE_UHD_PYTHON\n\tselect BR2_PACKAGE_PYTHON_SIX\n\thelp\n\t  uhd-utils\n\nconfig BR2_PACKAGE_UHD_X300\n\tbool \"X300 support\"\n\thelp\n\t  enable X300 support\n\nendif\n"
  },
  {
    "path": "package/uhd/uhd.hash",
    "content": "# Locally calculated:\nsha256  eed4a77d75faafff56be78985950039f8d9d1eb9fcbd58b8862e481dd49825cd  uhd-3.15.0.0.tar.gz\nsha256  8fc99820c2419d0de6bbbd319ff935d54960b37b716d0b4bb1c75de493f3e1fd  LICENSE.md\nsha256  70bf7e79c8cd73a81f97ce81745ea0719a617eebe299a61868165daeae71fff2  host/LICENSE\n"
  },
  {
    "path": "package/uhd/uhd.mk",
    "content": "################################################################################\n#\n# uhd\n#\n################################################################################\n\nUHD_VERSION = 3.15.0.0\nUHD_SITE = $(call github,EttusResearch,uhd,v$(UHD_VERSION))\nUHD_LICENSE = GPL-3.0+\nUHD_LICENSE_FILES = LICENSE.md host/LICENSE\n\nUHD_SUPPORTS_IN_SOURCE_BUILD = NO\nUHD_SUBDIR = host\nUHD_INSTALL_STAGING = YES\n\nUHD_DEPENDENCIES = \\\n\tboost \\\n\thost-python3 \\\n\thost-python-mako\n\nUHD_CONF_OPTS = \\\n\t-DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python \\\n\t-DRUNTIME_PYTHON_EXECUTABLE=/usr/bin/python \\\n\t-DENABLE_C_API=ON \\\n\t-DENABLE_DOXYGEN=OFF \\\n\t-DENABLE_DPDK=OFF \\\n\t-DENABLE_LIBUHD=ON \\\n\t-DENABLE_MANUAL=OFF \\\n\t-DENABLE_MAN_PAGES=OFF \\\n\t-DENABLE_TESTS=OFF\n\n# As soon as architecture is ARM, uhd will try to use NEON.\n# But not all ARM cores have NEON support.\n# When CPU support NEON -mfpu=neon must be added to CXX_FLAGS\nifeq ($(BR2_ARM_CPU_HAS_NEON),y)\nUHD_CONF_OPTS += -DCMAKE_CXX_FLAGS=\"$(TARGET_CXXFLAGS) -mfpu=neon\"\nUHD_CONF_OPTS += -DNEON_SIMD_ENABLE=ON\nelse\nUHD_CONF_OPTS += -Dhave_mfpu_neon=0\nUHD_CONF_OPTS += -DNEON_SIMD_ENABLE=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ORC),y)\nUHD_DEPENDENCIES += orc\nendif\n\nifeq ($(BR2_PACKAGE_UHD_B100),y)\nUHD_CONF_OPTS += -DENABLE_B100=ON\nelse\nUHD_CONF_OPTS += -DENABLE_B100=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_B200),y)\nUHD_CONF_OPTS += -DENABLE_B200=ON\nelse\nUHD_CONF_OPTS += -DENABLE_B200=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_E300),y)\nUHD_CONF_OPTS += -DENABLE_E300=ON\nelse\nUHD_CONF_OPTS += -DENABLE_E300=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_E320),y)\nUHD_CONF_OPTS += -DENABLE_E320=ON\nelse\nUHD_CONF_OPTS += -DENABLE_E320=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_EXAMPLES),y)\nUHD_CONF_OPTS += -DENABLE_EXAMPLES=ON\nelse\nUHD_CONF_OPTS += -DENABLE_EXAMPLES=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_MPMD),y)\nUHD_CONF_OPTS += -DENABLE_MPMD=ON\nelse\nUHD_CONF_OPTS += -DENABLE_MPMD=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_N230),y)\nUHD_CONF_OPTS += -DENABLE_N230=ON\nelse\nUHD_CONF_OPTS += -DENABLE_N230=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_N300),y)\nUHD_CONF_OPTS += -DENABLE_N300=ON\nelse\nUHD_CONF_OPTS += -DENABLE_N300=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_N320),y)\nUHD_CONF_OPTS += -DENABLE_N320=ON\nelse\nUHD_CONF_OPTS += -DENABLE_N320=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_OCTOCLOCK),y)\nUHD_CONF_OPTS += -DENABLE_OCTOCLOCK=ON\nelse\nUHD_CONF_OPTS += -DENABLE_OCTOCLOCK=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_RFNOC),y)\nUHD_CONF_OPTS += -DENABLE_RFNOC=ON\nelse\nUHD_CONF_OPTS += -DENABLE_RFNOC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_PYTHON),y)\nUHD_DEPENDENCIES += host-python-numpy host-python-requests \\\n\tpython-numpy python-requests\nUHD_CONF_OPTS += -DENABLE_PYTHON_API=ON\nelse\nUHD_CONF_OPTS += -DENABLE_PYTHON_API=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_USB),y)\nUHD_DEPENDENCIES += libusb\nUHD_CONF_OPTS += -DENABLE_USB=ON\nelse\nUHD_CONF_OPTS += -DENABLE_USB=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_USRP1),y)\nUHD_CONF_OPTS += -DENABLE_USRP1=ON\nelse\nUHD_CONF_OPTS += -DENABLE_USRP1=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_USRP2),y)\nUHD_CONF_OPTS += -DENABLE_USRP2=ON\nelse\nUHD_CONF_OPTS += -DENABLE_USRP2=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_UTILS),y)\nUHD_DEPENDENCIES += python-six\nUHD_CONF_OPTS += -DENABLE_UTILS=ON\nelse\nUHD_CONF_OPTS += -DENABLE_UTILS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UHD_X300),y)\nUHD_CONF_OPTS += -DENABLE_X300=ON\nelse\nUHD_CONF_OPTS += -DENABLE_X300=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/uhttpd/0001-Remove-Werror.patch",
    "content": "From ac52380eeca27e1e2e7eb5fb9d39059dbe58b919 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 7 Dec 2016 22:48:27 +0100\nSubject: [PATCH] Remove -Werror\n\n-Werror might cause build failures with newer versions of gcc or C\n libraries, not tested by upstream, for example:\n\n # warning \"_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE\"\n   ^\ncc1: all warnings being treated as errors\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n CMakeLists.txt | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 7ae8ba4..825342f 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -5,7 +5,7 @@ PROJECT(uhttpd C)\n INCLUDE (CheckFunctionExists)\n \n SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS \"\")\n-ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -Os -Wall -Werror -Wmissing-declarations --std=gnu99 -g3)\n+ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -Os -Wall -Wmissing-declarations --std=gnu99 -g3)\n \n OPTION(TLS_SUPPORT \"TLS support\" ON)\n OPTION(LUA_SUPPORT \"Lua support\" ON)\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/uhttpd/0002-Fix-TCP_FASTOPEN-related-compile-error.patch",
    "content": "From adbab70d3602d77736781be344cfdc5508cb0600 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Mon, 3 Apr 2017 19:22:30 +0200\nSubject: [PATCH] Fix TCP_FASTOPEN related compile error.\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n listen.c | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/listen.c b/listen.c\nindex 2a54888..4dabe34 100644\n--- a/listen.c\n+++ b/listen.c\n@@ -96,6 +96,12 @@ static void listener_cb(struct uloop_fd *fd, unsigned int events)\n \t\tuh_block_listener(l);\n }\n \n+#ifdef linux\n+#ifndef TCP_FASTOPEN\n+#define TCP_FASTOPEN 23\n+#endif\n+#endif\n+\n void uh_setup_listeners(void)\n {\n \tstruct listener *l;\n-- \n2.11.0\n\n"
  },
  {
    "path": "package/uhttpd/Config.in",
    "content": "config BR2_PACKAGE_UHTTPD\n\tbool \"uhttpd\"\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBUBOX\n\tselect BR2_PACKAGE_JSON_C\n\thelp\n\t  uHTTPd is a tiny single threaded HTTP server with TLS, CGI\n\t  and Lua support. It is intended as a drop-in replacement for\n\t  the Busybox HTTP daemon.\n\n\t  https://wiki.openwrt.org/doc/howto/http.uhttpd\n\ncomment \"uhttpd needs a toolchain w/ dynamic library\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/uhttpd/uhttpd.hash",
    "content": "# Locally calculated\nsha256  9ae10aaf6642b214e0a4ca47d6fd9693ac4b88d61e7d6446f0f0feb3a28ca510  uhttpd-15346de8d3ba422002496526ee24c62a3601ab8c-br1.tar.gz\nsha256  ce1803f83f776cc88661e303fede0e5ff52faf1d9f74508fadbecf7705b4c84d  uhttpd.h\n"
  },
  {
    "path": "package/uhttpd/uhttpd.mk",
    "content": "################################################################################\n#\n# uhttpd\n#\n################################################################################\n\nUHTTPD_VERSION = 15346de8d3ba422002496526ee24c62a3601ab8c\nUHTTPD_SITE = https://git.openwrt.org/project/uhttpd.git\nUHTTPD_SITE_METHOD = git\nUHTTPD_LICENSE = ISC\nUHTTPD_LICENSE_FILES = uhttpd.h\nUHTTPD_DEPENDENCIES = libubox json-c\n\nifeq ($(BR2_PACKAGE_LUA_5_1),y)\nUHTTPD_DEPENDENCIES += lua\nUHTTPD_CONF_OPTS += -DLUA_SUPPORT=ON\nelse\nUHTTPD_CONF_OPTS += -DLUA_SUPPORT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_USTREAM_SSL),y)\nUHTTPD_DEPENDENCIES += ustream-ssl\nUHTTPD_CONF_OPTS += -DTLS_SUPPORT=ON\nelse\nUHTTPD_CONF_OPTS += -DTLS_SUPPORT=OFF\nendif\n\nifeq ($(BR2_PACKAGE_UBUS),y)\nUHTTPD_DEPENDENCIES += ubus\nUHTTPD_CONF_OPTS += -DUBUS_SUPPORT=ON\nelse\nUHTTPD_CONF_OPTS += -DUBUS_SUPPORT=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/uhubctl/Config.in",
    "content": "config BR2_PACKAGE_UHUBCTL\n\tbool \"uhubctl\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Control USB power per-port on smart USB hubs.\n\n\t  https://github.com/mvp/uhubctl\n\ncomment \"uhubctl needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/uhubctl/uhubctl.hash",
    "content": "# Locally computed\nsha256  391f24fd1f89cacce801df38ecc289b34c3627bc08ee69eec515af7e1a283d97  uhubctl-2.4.0.tar.gz\nsha256  2d3aa0737e8db9dfd710f9a282b446cb7b15b2b3eecac383f0c45c64d736eea0  LICENSE\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/uhubctl/uhubctl.mk",
    "content": "################################################################################\n#\n# uhubctl\n#\n################################################################################\n\nUHUBCTL_VERSION = 2.4.0\nUHUBCTL_SITE = $(call github,mvp,uhubctl,v$(UHUBCTL_VERSION))\nUHUBCTL_LICENSE = GPL-2.0\nUHUBCTL_LICENSE_FILES = LICENSE COPYING\nUHUBCTL_DEPENDENCIES = libusb\n\ndefine UHUBCTL_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) GIT_VERSION=v$(UHUBCTL_VERSION) -C $(@D)\nendef\n\ndefine UHUBCTL_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) DESTDIR=$(TARGET_DIR) \\\n\t\t$(MAKE) -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ulogd/0001-ulogd-fix-build-with-musl-libc.patch",
    "content": "From 675e762091380590f78ff07a94a25caa459b786b Mon Sep 17 00:00:00 2001\nFrom: Cameron Norman <camerontnorman@gmail.com>\nDate: Sat, 27 Oct 2018 13:05:45 -0700\nSubject: ulogd: fix build with musl libc\n\nThe attached patch fixes building ulogd2 with musl libc. It is being\nused on Void Linux right now.\n\nCloses: https://bugzilla.netfilter.org/show_bug.cgi?id=1278\nSigned-off-by: Pablo Neira Ayuso <pablo@netfilter.org>\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrrieved from:\nhttps://git.netfilter.org/ulogd2/commit/?id=675e762091380590f78ff07a94a25caa459b786b]\n---\n src/ulogd.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/ulogd.c b/src/ulogd.c\nindex b8bc57c..9cd64e8 100644\n--- a/src/ulogd.c\n+++ b/src/ulogd.c\n@@ -65,6 +65,7 @@\n #include <sys/time.h>\n #include <sys/stat.h>\n #include <sched.h>\n+#include <limits.h>\n #include <ulogd/conffile.h>\n #include <ulogd/ulogd.h>\n #ifdef DEBUG\n-- \ncgit v1.2.1\n\n"
  },
  {
    "path": "package/ulogd/Config.in",
    "content": "config BR2_PACKAGE_ULOGD\n\tbool \"ulogd\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n\tselect BR2_PACKAGE_LIBMNL\n\tselect BR2_PACKAGE_LIBNETFILTER_ACCT\n\tselect BR2_PACKAGE_LIBNETFILTER_CONNTRACK\n\tselect BR2_PACKAGE_LIBNETFILTER_LOG\n\tselect BR2_PACKAGE_LIBNFNETLINK\n\thelp\n\t  ulogd is a userspace logging daemon for netfilter/iptables\n\t  related logging.\n\n\t  http://www.netfilter.org/projects/ulogd/\n\ncomment \"ulogd needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/ulogd/ulogd.hash",
    "content": "# From ftp://ftp.netfilter.org/pub/ulogd/ulogd-2.0.7.tar.bz2.{md5sum,sha1sum}\nmd5\t2bb2868cf51acbb90c35763c9f995f31\tulogd-2.0.7.tar.bz2\nsha1\tf2d90469e2842e2bfbe19c55cf6d56ac107aa4b9\tulogd-2.0.7.tar.bz2\n\n# Locally calculated\nsha256\t990a05494d9c16029ba0a83f3b7294fc05c756546b8d60d1c1572dc25249a92b\tulogd-2.0.7.tar.bz2\nsha256\tb8a2f73f743dc1a51aff23f1aacbca4b868564db52496fa3c0caba755bfd1eaf\tCOPYING\n"
  },
  {
    "path": "package/ulogd/ulogd.mk",
    "content": "################################################################################\n#\n# ulogd\n#\n################################################################################\n\nULOGD_VERSION = 2.0.7\nULOGD_SOURCE = ulogd-$(ULOGD_VERSION).tar.bz2\nULOGD_SITE = http://www.netfilter.org/projects/ulogd/files\nULOGD_CONF_OPTS = --without-dbi\nULOGD_DEPENDENCIES = host-pkgconf \\\n\tlibmnl libnetfilter_acct libnetfilter_conntrack libnetfilter_log \\\n\tlibnfnetlink\nULOGD_LICENSE = GPL-2.0\nULOGD_LICENSE_FILES = COPYING\nULOGD_SELINUX_MODULES = ulogd\n\n# DB backends need threads\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nifeq ($(BR2_PACKAGE_MYSQL),y)\nULOGD_CONF_OPTS += --with-mysql=$(STAGING_DIR)/usr\nULOGD_DEPENDENCIES += mysql\nelse\nULOGD_CONF_OPTS += --without-mysql\nendif\nifeq ($(BR2_PACKAGE_POSTGRESQL),y)\nULOGD_CONF_OPTS += --with-pgsql\nULOGD_DEPENDENCIES += postgresql\nelse\nULOGD_CONF_OPTS += --without-pgsql\nendif\nifeq ($(BR2_PACKAGE_SQLITE),y)\nULOGD_CONF_OPTS += --with-sqlite\nULOGD_DEPENDENCIES += sqlite\nelse\nULOGD_CONF_OPTS += --without-sqlite\nendif\nelse\nULOGD_CONF_OPTS += --without-mysql --without-pgsql --without-sqlite\nendif\n\nifeq ($(BR2_PACKAGE_LIBPCAP),y)\nULOGD_CONF_OPTS += --with-pcap\nULOGD_DEPENDENCIES += libpcap\nelse\nULOGD_CONF_OPTS += --without-pcap\nendif\n\nifeq ($(BR2_PACKAGE_JANSSON),y)\nULOGD_CONF_OPTS += --with-jansson\nULOGD_DEPENDENCIES += jansson\nelse\nULOGD_CONF_OPTS += --without-jansson\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/umtprd/Config.in",
    "content": "config BR2_PACKAGE_UMTPRD\n\tbool \"umtprd\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15\n\thelp\n\t  Lightweight USB MTP responder daemon for GNU/Linux\n\n\t  https://github.com/viveris/uMTP-Responder\n\ncomment \"umtprd needs a toolchain w/ threads, headers >= 3.15\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15\n"
  },
  {
    "path": "package/umtprd/umtprd.hash",
    "content": "# Locally computed\nsha256\tcce45c7d3df0022fc013c79de21b1f11b1027d090aeb628669f08b0c20d2afdd\tumtprd-1.3.10.tar.gz\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\tLICENSE\n"
  },
  {
    "path": "package/umtprd/umtprd.mk",
    "content": "################################################################################\n#\n# umtprd\n#\n################################################################################\n\nUMTPRD_VERSION = 1.3.10\nUMTPRD_SITE = https://github.com/viveris/uMTP-Responder/archive\nUMTPRD_LICENSE = GPL-3.0+\nUMTPRD_LICENSE_FILES = LICENSE\n\ndefine UMTPRD_BUILD_CMDS\n\t$(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)\nendef\n\ndefine UMTPRD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/umtprd $(TARGET_DIR)/usr/sbin/umtprd\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/unbound/Config.in",
    "content": "config BR2_PACKAGE_UNBOUND\n\tbool \"unbound\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_LIBEVENT\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  Unbound is a validating, recursive, and caching DNS resolver.\n\t  It supports DNSSEC, QNAME minimisation, DNS-over-TLS and\n\t  DNSCrypt.\n\n\t  https://www.unbound.net\n\nif BR2_PACKAGE_UNBOUND\nconfig BR2_PACKAGE_UNBOUND_DNSCRYPT\n\tbool \"enable DNSCrypt\"\n\tselect BR2_PACKAGE_LIBSODIUM\n\thelp\n\t  DNSCrypt wraps unmodified DNS queries between a client and\n\t  a DNS resolver. Default port used is 443 and like with\n\t  normal unencrypted DNS, it uses UDP first and falling back\n\t  to TCP if response too large.\n\n\t  There is also DNS-over-TLS, a TCP only version\n\t  of proposed standard for DNS encryption (RFC 7858).\n\t  Default port for DNS-over-TLS is 853 and Unbound has\n\t  built-in support for it.\n\n\t  https://tools.ietf.org/html/rfc7858\n\n\t  Note: Neither DNSCrypt or DNS-over-TLS encrypt the SNI.\n\t  Here is some suggestions how to handle SNI encryption:\n\n\t  https://tools.ietf.org/html/draft-ietf-tls-sni-encryption-00\nendif\n\ncomment \"unbound needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/unbound/S70unbound",
    "content": "#!/bin/sh\n\nDAEMON=\"unbound\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\nUNBOUND_ARGS=\"\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\nstart() {\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\tstart-stop-daemon -S -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \\\n\t\t-- $UNBOUND_ARGS\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nstop() {\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tstart-stop-daemon -K -q -p \"$PIDFILE\"\n\tstatus=$?\n\tif [ \"$status\" -eq 0 ]; then\n\t\trm -f \"$PIDFILE\"\n\t\techo \"OK\"\n\telse\n\t\techo \"FAIL\"\n\tfi\n\treturn \"$status\"\n}\n\nrestart() {\n\tstop\n\tsleep 1\n\tstart\n}\n\ncase \"$1\" in\n\tstart|stop|restart)\n\t\t\"$1\";;\n\treload)\n\t\t# Restart, since there is no true \"reload\" feature.\n\t\trestart;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/unbound/unbound.hash",
    "content": "# From https://nlnetlabs.nl/downloads/unbound/unbound-1.13.2.tar.gz.sha256\nsha256  0a13b547f3b92a026b5ebd0423f54c991e5718037fd9f72445817f6a040e1a83  unbound-1.13.2.tar.gz\n\n# Locally calculated\nsha256  8eb9a16cbfb8703090bbfa3a2028fd46bb351509a2f90dc1001e51fbe6fd45db  LICENSE\n"
  },
  {
    "path": "package/unbound/unbound.mk",
    "content": "################################################################################\n#\n# unbound\n#\n################################################################################\n\nUNBOUND_VERSION = 1.13.2\nUNBOUND_SITE = https://www.unbound.net/downloads\nUNBOUND_DEPENDENCIES = host-pkgconf expat libevent openssl\nUNBOUND_LICENSE = BSD-3-Clause\nUNBOUND_LICENSE_FILES = LICENSE\nUNBOUND_CPE_ID_VENDOR = nlnetlabs\nUNBOUND_CONF_OPTS = \\\n\t--disable-rpath \\\n\t--disable-debug \\\n\t--with-conf-file=/etc/unbound/unbound.conf \\\n\t--with-pidfile=/var/run/unbound.pid \\\n\t--with-rootkey-file=/etc/unbound/root.key \\\n\t--enable-tfo-server \\\n\t--with-libexpat=$(STAGING_DIR)/usr \\\n\t--with-ssl=$(STAGING_DIR)/usr\n\n# uClibc-ng does not have MSG_FASTOPEN\n# so TCP Fast Open client mode disabled for it\nifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)\nUNBOUND_CONF_OPTS += --disable-tfo-client\nelse\nUNBOUND_CONF_OPTS += --enable-tfo-client\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),y)\nUNBOUND_CONF_OPTS += --with-pthreads\nelse\nUNBOUND_CONF_OPTS += --without-pthreads\nendif\n\nifeq ($(BR2_GCC_ENABLE_LTO),y)\nUNBOUND_CONF_OPTS += --enable-flto\nelse\nUNBOUND_CONF_OPTS += --disable-flto\nendif\n\nifeq ($(BR2_PACKAGE_UNBOUND_DNSCRYPT),y)\nUNBOUND_CONF_OPTS += --enable-dnscrypt\nUNBOUND_DEPENDENCIES += libsodium\nelse\nUNBOUND_CONF_OPTS += --disable-dnscrypt\nendif\n\ndefine UNBOUND_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/unbound/S70unbound \\\n\t\t$(TARGET_DIR)/etc/init.d/S70unbound\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/unclutter-xfixes/Config.in",
    "content": "config BR2_PACKAGE_UNCLUTTER_XFIXES\n\tbool \"unclutter-xfixes\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_LIBEV\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES\n\tselect BR2_PACKAGE_XLIB_LIBXI\n\thelp\n\t  Remove idle cursor image from screen.\n\n\t  A rewrite of unclutter using the x11-xfixes extension.\n\n\t  https://github.com/Airblader/unclutter-xfixes\n"
  },
  {
    "path": "package/unclutter-xfixes/unclutter-xfixes.hash",
    "content": "# locally calculated\nsha256 35c75ad24be989dd6708db1d9ce9b2a2f814b80638c0633cdb075c6df090ed11  unclutter-xfixes-1.5.tar.gz\nsha256 33e94693849b57fdb34987c95fd0076b4aa4b70fcd9a3152313d00b86a3f7bf7  LICENSE\n"
  },
  {
    "path": "package/unclutter-xfixes/unclutter-xfixes.mk",
    "content": "################################################################################\n#\n# unclutter-xfixes\n#\n################################################################################\n\nUNCLUTTER_XFIXES_VERSION = 1.5\nUNCLUTTER_XFIXES_SITE = $(call github,Airblader,unclutter-xfixes,v$(UNCLUTTER_XFIXES_VERSION))\nUNCLUTTER_XFIXES_LICENSE = MIT\nUNCLUTTER_XFIXES_LICENSE_FILES = LICENSE\nUNCLUTTER_XFIXES_DEPENDENCIES = libev xlib_libX11 xlib_libXfixes xlib_libXi host-pkgconf\n\ndefine UNCLUTTER_XFIXES_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \\\n\t\t$(MAKE) -C $(@D) unclutter CC=\"$(TARGET_CC)\"\nendef\n\ndefine UNCLUTTER_XFIXES_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/unclutter $(TARGET_DIR)/usr/bin/unclutter\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/unionfs/Config.in",
    "content": "config BR2_PACKAGE_UNIONFS\n\tbool \"unionfs (FUSE)\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libfuse\n\tdepends on BR2_USE_MMU # libfuse\n\tdepends on !BR2_STATIC_LIBS # libfuse\n\tselect BR2_PACKAGE_LIBFUSE\n\thelp\n\t  A userspace unionfs implementation.\n\n\t  https://github.com/rpodgorny/unionfs-fuse\n\ncomment \"unionfs needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/unionfs/unionfs.hash",
    "content": "# Locally computed\nsha256  f56a5579d670e18e0667700bc599acbc0b8217ca1f76b2adb3dad7d2953c4049  LICENSE\nsha256  c705072a33a18cbc73ffe799331d43410b6deef5d6f2042038f8fd3ab17b6e2e  unionfs-2.1.tar.gz\n"
  },
  {
    "path": "package/unionfs/unionfs.mk",
    "content": "################################################################################\n#\n# unionfs\n#\n################################################################################\n\nUNIONFS_VERSION = 2.1\nUNIONFS_SITE = $(call github,rpodgorny,unionfs-fuse,v$(UNIONFS_VERSION))\nUNIONFS_DEPENDENCIES = libfuse host-pkgconf\nUNIONFS_LICENSE = BSD-3-Clause\nUNIONFS_LICENSE_FILES = LICENSE\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/unixodbc/Config.in",
    "content": "config BR2_PACKAGE_UNIXODBC\n\tbool \"unixodbc\"\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\thelp\n\t  The unixODBC Project goals are to develop and promote\n\t  unixODBC to be the definitive standard for ODBC on non MS\n\t  Windows platforms.\n\n\t  http://www.unixodbc.org\n\ncomment \"unixodbc needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/unixodbc/unixodbc.hash",
    "content": "# From ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.9.tar.gz.md5\nmd5  06f76e034bb41df5233554abe961a16f  unixODBC-2.3.9.tar.gz\n# Locally computed\nsha256  52833eac3d681c8b0c9a5a65f2ebd745b3a964f208fc748f977e44015a31b207  unixODBC-2.3.9.tar.gz\nsha256  a6b9aa1e9bfade121164c06fd975e9b913a8e38bf33d25ff967dfa3ed07d12f8  COPYING\nsha256  1e594f4c7fd6d099eca4bd1340b39d871ce0298331d8ebd4b68935548ee45cf4  exe/COPYING\n"
  },
  {
    "path": "package/unixodbc/unixodbc.mk",
    "content": "################################################################################\n#\n# unixodbc\n#\n################################################################################\n\nUNIXODBC_VERSION = 2.3.9\nUNIXODBC_SOURCE = unixODBC-$(UNIXODBC_VERSION).tar.gz\nUNIXODBC_SITE = ftp://ftp.unixodbc.org/pub/unixODBC\nUNIXODBC_INSTALL_STAGING = YES\nUNIXODBC_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (programs)\nUNIXODBC_LICENSE_FILES = COPYING exe/COPYING\nUNIXODBC_CPE_ID_VENDOR = unixodbc\n\nUNIXODBC_CONF_OPTS = --enable-drivers --enable-driver-conf\n\nifeq ($(BR2_PACKAGE_LIBEDIT),y)\nUNIXODBC_CONF_OPTS += --enable-editline\nUNIXODBC_DEPENDENCIES += libedit\nelse\nUNIXODBC_CONF_OPTS += --disable-editline\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nUNIXODBC_CONF_OPTS += --enable-iconv\nUNIXODBC_DEPENDENCIES += libiconv\nelse\nUNIXODBC_CONF_OPTS += --disable-iconv\nendif\n\nifeq ($(BR2_PACKAGE_LIBTOOL),y)\nUNIXODBC_CONF_OPTS += --without-included-ltdl\nUNIXODBC_DEPENDENCIES += libtool\nelse\nUNIXODBC_CONF_OPTS += --with-included-ltdl\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nUNIXODBC_CONF_OPTS += --enable-readline\nUNIXODBC_DEPENDENCIES += readline\nelse\nUNIXODBC_CONF_OPTS += --disable-readline\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nUNIXODBC_CONF_OPTS += --enable-threads\nelse\nUNIXODBC_CONF_OPTS += --disable-threads\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/unrar/Config.in",
    "content": "config BR2_PACKAGE_UNRAR\n\tbool \"unrar\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  RAR file uncompressor.\n\n\t  http://www.rarlab.com/rar_add.htm\n\ncomment \"unrar needs a toolchain w/ C++, wchar, threads\"\n\tdepends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/unrar/unrar.hash",
    "content": "# Locally computed:\nsha256  3d010d14223e0c7a385ed740e8f046edcbe885e5c22c5ad5733d009596865300  unrarsrc-5.9.4.tar.gz\nsha256  6ecc1687808b7d66b24f874755abfed7464d9751ed0001cd4e8e5d9bf397ff8a  license.txt\n"
  },
  {
    "path": "package/unrar/unrar.mk",
    "content": "################################################################################\n#\n# unrar\n#\n################################################################################\n\nUNRAR_VERSION = 5.9.4\nUNRAR_SOURCE = unrarsrc-$(UNRAR_VERSION).tar.gz\nUNRAR_SITE = https://www.rarlab.com/rar\nUNRAR_LICENSE = unrar\nUNRAR_LICENSE_FILES = license.txt\nUNRAR_CPE_ID_VENDOR = rarlab\n\ndefine UNRAR_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CXX=\"$(TARGET_CXX)\" STRIP=\"/bin/true\" \\\n\t\tCXXFLAGS=\"$(TARGET_CXXFLAGS) -pthread\" \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS) -pthread\" -C $(@D)\nendef\n\ndefine UNRAR_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR)/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/unscd/Config.in",
    "content": "config BR2_PACKAGE_UNSCD\n\tbool \"unscd\"\n\tdepends on !BR2_RISCV_32\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  Micro Name Service Caching Daemon\n\n\t  A daemon which handles passwd, group and host lookups for\n\t  running programs and caches the results for the next query.\n\t  You only need this package if you are using slow Name Services\n\t  like LDAP, NIS or NIS+.\n\n\t  This particular NSCD is a complete rewrite of the GNU glibc\n\t  nscd which is a single threaded server process which offloads\n\t  all NSS lookups to worker children; cache hits are handled by\n\t  the parent, and only cache misses start worker children,\n\t  making the parent immune to resource leaks, hangs, and crashes\n\t  in NSS libraries.\n\n\t  It should mostly be a drop-in replacement for existing\n\t  installs using nscd.\n\n\t  http://busybox.net/~vda/unscd\n\ncomment \"unscd needs a glibc toolchain\"\n\tdepends on !BR2_RISCV_32\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/unscd/S46unscd",
    "content": "#!/bin/sh\n\nNAME=\"nscd\"\nDAEMON=\"/usr/sbin/${NAME}\"\nPID_F=\"/var/run/nscd/${NAME}.pid\"\n\ncase \"$1\" in\nstart)\n        printf \"Starting ${NAME}: \"\n        start-stop-daemon -S -p ${PID_F} -x ${DAEMON}\n        [ $? -eq 0 ] && echo \"OK\" || echo \"FAIL\"\n        ;;\nstop)\n        printf \"Stopping ${NAME}: \"\n        start-stop-daemon -K -p ${PID_F}\n        [ $? -eq 0 ] && echo \"OK\" || echo \"FAIL\"\n        ;;\nrestart|reload)\n        $0 stop\n        $0 start\n        ;;\n*)\n        echo \"Usage: $0 {start|stop|restart|reload}\"\n        exit 1\nesac\n"
  },
  {
    "path": "package/unscd/nscd.conf",
    "content": "# /etc/nscd.conf\n#\n# An example Name Service Cache config file.  This file is needed by nscd.\n#\nserver-user unscd\ndebug-level 0\n\nenable-cache            passwd  yes\npositive-time-to-live   passwd  600\nnegative-time-to-live   passwd  20\nsuggested-size          passwd  1001\ncheck-files             passwd  yes\n\nenable-cache            group   yes\npositive-time-to-live   group   3600\nnegative-time-to-live   group   60\nsuggested-size          group   1001\ncheck-files             group   yes\n\n# hosts caching is broken with gethostby* calls, hence is now disabled\n# by default. Specifically, the caching does not obey DNS TTLs, and\n# thus could lead to problems if the positive-time-to-live is\n# significantly larger than the actual TTL.\n#\n# You should really use a caching nameserver instead of nscd for this\n# sort of request. However, you can easily re-enable this by default.\nenable-cache            hosts   no\npositive-time-to-live   hosts   3600\nnegative-time-to-live   hosts   20\nsuggested-size          hosts   1001\ncheck-files             hosts   yes\n\n# unscd does not support services caching\n"
  },
  {
    "path": "package/unscd/unscd.hash",
    "content": "# Locally computed:\nsha256  90e12c71732474cac4d055bf9d104e599178b4e1ecb6d3b8c556eaa11f8f6447  nscd-0.54.c\n"
  },
  {
    "path": "package/unscd/unscd.mk",
    "content": "################################################################################\n#\n# unscd\n#\n################################################################################\n\nUNSCD_VERSION = 0.54\nUNSCD_SOURCE = nscd-$(UNSCD_VERSION).c\nUNSCD_SITE = http://busybox.net/~vda/unscd\nUNSCD_LICENSE = GPL-2.0\nUNSCD_LICENSE_FILES = $(UNSCD_SOURCE)\n\ndefine UNSCD_EXTRACT_CMDS\n\tcp $(UNSCD_DL_DIR)/$($(PKG)_SOURCE) $(@D)/\nendef\n\ndefine UNSCD_BUILD_CMDS\n\tcd $(@D); \\\n\t$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) -o nscd $(UNSCD_SOURCE)\nendef\n\ndefine UNSCD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 755 -D $(@D)/nscd $(TARGET_DIR)/usr/sbin/nscd\n\t$(INSTALL) -m 600 -D package/unscd/nscd.conf $(TARGET_DIR)/etc/nscd.conf\nendef\n\ndefine UNSCD_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 755 -D package/unscd/S46unscd \\\n\t\t$(TARGET_DIR)/etc/init.d/S46unscd\nendef\n\ndefine UNSCD_USERS\n\tunscd -1 unscd -1 * - - - unscd user\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/unzip/0001-Add-a-CMakeFile.txt-to-ease-cross-compilation.patch",
    "content": "From 992a497e9c5c421d3931e02a01e9d7c159f27135 Mon Sep 17 00:00:00 2001\nFrom: Luca Ceresoli <luca@lucaceresoli.net>\nDate: Thu, 26 Nov 2015 12:49:10 +0100\nSubject: [PATCH] Add a CMakeFile.txt to ease cross-compilation\n\nInfo-ZIP's UnZip 6.0 has a complex, hand-crafted Makefile with a\ncompanion configure script which try to support an extremely wide\nrange of UNIX-like operating systems. The result is an overly complex\nmass of code that does not support cross-compilation in several ways.\n\nZip 3.0 has a similar build system, and has as many as 6 patches in\nBuildroot to cross-compile [0]. UnZip fails at building even with\nthese patches adapted and a few more on top of them.\n\nInstead of tweaking and fixing a huge and complex build system, skip\nit entirely and add a pretty simple CMakeLists.txt that cross-compiles\nsmoothly using CMake. It also preserves all of the Buildroot-provided\nbuild options and flags as the original Makefile does.\n\n[0] http://git.buildroot.net/buildroot/tree/package/infozip?id=2015.11-rc3\n\nSigned-off-by: Luca Ceresoli <luca@lucaceresoli.net>\n---\n CMakeLists.txt | 17 +++++++++++++++++\n 1 file changed, 17 insertions(+)\n create mode 100644 CMakeLists.txt\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nnew file mode 100644\nindex 0000000..27951b4\n--- /dev/null\n+++ b/CMakeLists.txt\n@@ -0,0 +1,17 @@\n+cmake_minimum_required(VERSION 2.8)\n+INCLUDE(CheckFunctionExists)\n+\n+project(unzip C)\n+\n+CHECK_FUNCTION_EXISTS(lchmod HAVE_LCHMOD)\n+if(NOT HAVE_LCHMOD)\n+add_definitions(\"-DNO_LCHMOD\")\n+endif()\n+\n+set(UNZIP_SOURCES unzip.c crc32.c crypt.c envargs.c explode.c\n+  extract.c fileio.c globals.c inflate.c list.c match.c process.c\n+  ttyio.c ubz2err.c unreduce.c unshrink.c zipinfo.c unix/unix.c)\n+\n+include_directories(.)\n+add_executable(unzip ${UNZIP_SOURCES})\n+install(TARGETS unzip DESTINATION bin)\n-- \n1.9.1\n\n"
  },
  {
    "path": "package/unzip/Config.in",
    "content": "config BR2_PACKAGE_UNZIP\n\tbool \"unzip\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  UnZip is an extraction utility for archives compressed in\n\t  .zip format (also called \"zipfiles\"). Although highly\n\t  compatible both with PKWARE's PKZIP and PKUNZIP utilities\n\t  for MS-DOS and with Info-ZIP's own Zip program, our primary\n\t  objectives have been portability and non-MSDOS\n\t  functionality.\n\n\t  http://www.info-zip.org/UnZip.html\n"
  },
  {
    "path": "package/unzip/unzip.hash",
    "content": "# From https://snapshot.debian.org/archive/debian/20210110T204103Z/pool/main/u/unzip/unzip_6.0-26.dsc\nsha256  036d96991646d0449ed0aa952e4fbe21b476ce994abc276e49d30e686708bd37  unzip_6.0.orig.tar.gz\nsha256  88cb7c0f1fd13252b662dfd224b64b352f9e75cd86389557fcb23fa6d2638599  unzip_6.0-26.debian.tar.xz\n\n# Locally computed:\nsha256  7469b81d5d29ac4fd670f7c86ba0cb9fa34f137a2d4d5198437d92ddf918984b  LICENSE\n"
  },
  {
    "path": "package/unzip/unzip.mk",
    "content": "################################################################################\n#\n# unzip\n#\n################################################################################\n\nUNZIP_VERSION = 6.0\nUNZIP_SOURCE = unzip_$(UNZIP_VERSION).orig.tar.gz\nUNZIP_PATCH = unzip_$(UNZIP_VERSION)-26.debian.tar.xz\nUNZIP_SITE = https://snapshot.debian.org/archive/debian/20210110T204103Z/pool/main/u/unzip\nUNZIP_LICENSE = Info-ZIP\nUNZIP_LICENSE_FILES = LICENSE\nUNZIP_CPE_ID_VENDOR = unzip_project\n\n# unzip_$(UNZIP_VERSION)-26.debian.tar.xz has patches to fix:\nUNZIP_IGNORE_CVES = \\\n\tCVE-2014-8139 \\\n\tCVE-2014-8140 \\\n\tCVE-2014-8141 \\\n\tCVE-2014-9636 \\\n\tCVE-2014-9913 \\\n\tCVE-2015-7696 \\\n\tCVE-2015-7697 \\\n\tCVE-2016-9844 \\\n\tCVE-2018-18384 \\\n\tCVE-2018-1000035 \\\n\tCVE-2019-13232\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/upmpdcli/Config.in",
    "content": "config BR2_PACKAGE_UPMPDCLI\n\tbool \"upmpdcli\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11, libupnpp\n\tselect BR2_PACKAGE_JSONCPP\n\tselect BR2_PACKAGE_LIBMICROHTTPD\n\tselect BR2_PACKAGE_LIBMPDCLIENT\n\tselect BR2_PACKAGE_LIBUPNPP\n\thelp\n\t  upmpdcli is a UPnP Media Renderer front-end for MPD, the Music\n\t  Player Daemon. It supports UPnP gapless track transitions and\n\t  the OpenHome ohMedia services.\n\n\t  http://www.lesbonscomptes.com/upmpdcli/\n\ncomment \"upmpdcli needs a toolchain w/ C++, NPTL, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/upmpdcli/S99upmpdcli",
    "content": "#!/bin/sh\n\nNAME=upmpdcli\nCONFFILE=/etc/$NAME.conf\nPIDFILE=/var/run/$NAME.pid\nDAEMON_ARGS=\"-D -c $CONFFILE\"\n\nstart() {\n        printf \"Starting $NAME: \"\n        start-stop-daemon --start --quiet --background --exec /usr/bin/upmpdcli \\\n                -- $DAEMON_ARGS \\\n                && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n        printf \"Stopping $NAME: \"\n        start-stop-daemon --stop --quiet --pidfile $PIDFILE \\\n                && echo \"OK\" || echo \"FAIL\"\n}\n\ncase \"$1\" in\n        start)\n                start\n                ;;\n        stop)\n                stop\n                ;;\n        restart)\n                stop\n                sleep 1\n                start\n                ;;\n        *)\n                echo \"Usage: $0 {start|stop|restart}\"\n                exit 1\nesac\n"
  },
  {
    "path": "package/upmpdcli/upmpdcli.hash",
    "content": "# From http://www.lesbonscomptes.com/upmpdcli/downloads/upmpdcli-1.5.12.tar.gz.sha256:\nsha256  1d7b6ab360c2549a7e3eff4f261471761dd837e18327a3ca29de1981c090ff3b  upmpdcli-1.5.12.tar.gz\n\n# Hash for license file:\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/upmpdcli/upmpdcli.mk",
    "content": "################################################################################\n#\n# upmpdcli\n#\n################################################################################\n\nUPMPDCLI_VERSION = 1.5.12\nUPMPDCLI_SITE = http://www.lesbonscomptes.com/upmpdcli/downloads\nUPMPDCLI_LICENSE = LGPL-2.1+\nUPMPDCLI_LICENSE_FILES = COPYING\nUPMPDCLI_DEPENDENCIES = host-pkgconf libmpdclient libupnpp libmicrohttpd jsoncpp\n\n# Disable spotify plugin which requires dlfcn.h\nifeq ($(BR2_STATIC_LIBS),y)\nUPMPDCLI_CONF_OPTS = --disable-spotify\nendif\n\n# Upmpdcli only runs if user upmpdcli exists\ndefine UPMPDCLI_USERS\n\tupmpdcli -1 upmpdcli -1 * - - audio Upmpdcli MPD UPnP Renderer Front-End\nendef\n\ndefine UPMPDCLI_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/upmpdcli/S99upmpdcli $(TARGET_DIR)/etc/init.d/S99upmpdcli\nendef\n\ndefine UPMPDCLI_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(@D)/systemd/upmpdcli.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/upmpdcli.service\nendef\n\ndefine UPMPDCLI_INSTALL_CONF_FILE\n\t$(INSTALL) -D -m 0755 $(@D)/src/upmpdcli.conf-dist $(TARGET_DIR)/etc/upmpdcli.conf\nendef\n\nUPMPDCLI_POST_INSTALL_TARGET_HOOKS += UPMPDCLI_INSTALL_CONF_FILE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/upower/Config.in",
    "content": "config BR2_PACKAGE_UPOWER\n\tbool \"upower\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libgudev, libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tdepends on BR2_USE_MMU # libgudev\n\tdepends on BR2_USE_WCHAR # libgudev\n\tselect BR2_PACKAGE_LIBGUDEV\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  UPower is an abstraction for enumerating power devices,\n\t  listening to device events and querying history and\n\t  statistics. Any application or service on the system can\n\t  access the org.freedesktop.UPower service via the system\n\t  message bus.\n\n\t  Note: upowerd require CONFIG_TIMER_STATS enabled in the\n\t  Linux kernel.\n\n\t  https://upower.freedesktop.org/\n\ncomment \"upower needs udev /dev management\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n\ncomment \"upower needs a toolchain w/ threads, wchar, gcc >= 4.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/upower/upower.hash",
    "content": "# Locally calculated\nsha256 64b5ffbfccd5bdb15d925777979a4dbee1a957f9eaeb158dc76175267eddbdef  upower-0.99.11.tar.xz\nsha256 c1753877db41d798d63369a825ad9225bbeb5e10a407be5fcd8de96182f1c50d  COPYING\n"
  },
  {
    "path": "package/upower/upower.mk",
    "content": "################################################################################\n#\n# upower\n#\n################################################################################\n\nUPOWER_VERSION = 0.99.11\nUPOWER_SOURCE = upower-$(UPOWER_VERSION).tar.xz\nUPOWER_SITE = https://upower.freedesktop.org/releases\nUPOWER_LICENSE = GPL-2.0+\nUPOWER_LICENSE_FILES = COPYING\n\n# libupower-glib.so\nUPOWER_INSTALL_STAGING = YES\n\nUPOWER_DEPENDENCIES = \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\thost-pkgconf \\\n\tlibgudev \\\n\tlibusb \\\n\tudev\n\nUPOWER_CONF_OPTS = --disable-man-pages --disable-tests\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/upx/0001-Check-DT_REL-DT_RELA-DT_RELSZ-DT_RELASZ.patch",
    "content": "From 3781df9da23840e596d5e9e8493f22666802fe6c Mon Sep 17 00:00:00 2001\nFrom: John Reiser <jreiser@BitWagon.com>\nDate: Fri, 11 Dec 2020 13:38:18 -0800\nSubject: [PATCH] Check DT_REL/DT_RELA, DT_RELSZ/DT_RELASZ\n\nhttps://github.com/upx/upx/issues/421\n\tmodified:   p_lx_elf.cpp\n\n[Retrieved from:\nhttps://github.com/upx/upx/commit/3781df9da23840e596d5e9e8493f22666802fe6c]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/p_lx_elf.cpp | 34 +++++++++++++++++++++++++++++-----\n 1 file changed, 29 insertions(+), 5 deletions(-)\n\ndiff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp\nindex 182db192f..3a4101cf7 100644\n--- a/src/p_lx_elf.cpp\n+++ b/src/p_lx_elf.cpp\n@@ -2222,8 +2222,20 @@ bool PackLinuxElf32::canPack()\n                         int z_rsz = dt_table[Elf32_Dyn::DT_RELSZ];\n                         if (z_rel && z_rsz) {\n                             unsigned rel_off = get_te32(&dynseg[-1+ z_rel].d_val);\n+                            if ((unsigned)file_size <= rel_off) {\n+                                char msg[70]; snprintf(msg, sizeof(msg),\n+                                     \"bad Elf32_Dynamic[DT_REL] %#x\\n\",\n+                                     rel_off);\n+                                throwCantPack(msg);\n+                            }\n                             Elf32_Rel *rp = (Elf32_Rel *)&file_image[rel_off];\n                             unsigned relsz   = get_te32(&dynseg[-1+ z_rsz].d_val);\n+                            if ((unsigned)file_size <= relsz) {\n+                                char msg[70]; snprintf(msg, sizeof(msg),\n+                                     \"bad Elf32_Dynamic[DT_RELSZ] %#x\\n\",\n+                                     relsz);\n+                                throwCantPack(msg);\n+                            }\n                             Elf32_Rel *last = (Elf32_Rel *)(relsz + (char *)rp);\n                             for (; rp < last; ++rp) {\n                                 unsigned r_va = get_te32(&rp->r_offset);\n@@ -2562,14 +2574,26 @@ PackLinuxElf64::canPack()\n                         int z_rel = dt_table[Elf64_Dyn::DT_RELA];\n                         int z_rsz = dt_table[Elf64_Dyn::DT_RELASZ];\n                         if (z_rel && z_rsz) {\n-                            unsigned rel_off = get_te64(&dynseg[-1+ z_rel].d_val);\n+                            upx_uint64_t rel_off = get_te64(&dynseg[-1+ z_rel].d_val);\n+                            if ((u64_t)file_size <= rel_off) {\n+                                char msg[70]; snprintf(msg, sizeof(msg),\n+                                     \"bad Elf64_Dynamic[DT_RELA] %#llx\\n\",\n+                                     rel_off);\n+                                throwCantPack(msg);\n+                            }\n                             Elf64_Rela *rp = (Elf64_Rela *)&file_image[rel_off];\n-                            unsigned relsz   = get_te64(&dynseg[-1+ z_rsz].d_val);\n+                            upx_uint64_t relsz   = get_te64(&dynseg[-1+ z_rsz].d_val);\n+                            if ((u64_t)file_size <= relsz) {\n+                                char msg[70]; snprintf(msg, sizeof(msg),\n+                                     \"bad Elf64_Dynamic[DT_RELASZ] %#llx\\n\",\n+                                     relsz);\n+                                throwCantPack(msg);\n+                            }\n                             Elf64_Rela *last = (Elf64_Rela *)(relsz + (char *)rp);\n                             for (; rp < last; ++rp) {\n-                                unsigned r_va = get_te64(&rp->r_offset);\n+                                upx_uint64_t r_va = get_te64(&rp->r_offset);\n                                 if (r_va == user_init_ava) { // found the Elf64_Rela\n-                                    unsigned r_info = get_te64(&rp->r_info);\n+                                    upx_uint64_t r_info = get_te64(&rp->r_info);\n                                     unsigned r_type = ELF64_R_TYPE(r_info);\n                                     if (Elf64_Ehdr::EM_AARCH64 == e_machine\n                                     &&  R_AARCH64_RELATIVE == r_type) {\n@@ -2581,7 +2605,7 @@ PackLinuxElf64::canPack()\n                                     }\n                                     else {\n                                         char msg[50]; snprintf(msg, sizeof(msg),\n-                                            \"bad relocation %#x DT_INIT_ARRAY[0]\",\n+                                            \"bad relocation %#llx DT_INIT_ARRAY[0]\",\n                                             r_info);\n                                         throwCantPack(msg);\n                                     }\n"
  },
  {
    "path": "package/upx/upx.hash",
    "content": "# Locally computed:\nsha256  47774df5c958f2868ef550fb258b97c73272cb1f44fe776b798e393465993714  upx-3.96-src.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/upx/upx.mk",
    "content": "################################################################################\n#\n# upx\n#\n################################################################################\n\nUPX_VERSION = 3.96\nUPX_SITE = https://github.com/upx/upx/releases/download/v$(UPX_VERSION)\nUPX_SOURCE = upx-$(UPX_VERSION)-src.tar.xz\nUPX_LICENSE = GPL-2.0+\nUPX_LICENSE_FILES = COPYING\nUPX_CPE_ID_VENDOR = upx_project\n\n# 0001-Check-DT_REL-DT_RELA-DT_RELSZ-DT_RELASZ.patch\nUPX_IGNORE_CVES += CVE-2021-20285\n\nHOST_UPX_DEPENDENCIES = host-ucl host-zlib\n\n# We need to specify all, otherwise the default target only prints a message\n# stating to \"please choose a target for 'make'\"... :-(\ndefine HOST_UPX_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) \\\n\t\tUPX_UCLDIR=$(HOST_DIR) CXXFLAGS_WERROR= -C $(@D) all\nendef\n\n# UPX has no install procedure, so install it manually.\ndefine HOST_UPX_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/src/upx.out $(HOST_DIR)/bin/upx\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/uqmi/Config.in",
    "content": "config BR2_PACKAGE_UQMI\n\tbool \"uqmi\"\n\tdepends on !BR2_STATIC_LIBS # libubox\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c\n\tselect BR2_PACKAGE_JSON_C\n\tselect BR2_PACKAGE_LIBUBOX\n\thelp\n\t  This command line tool originates from the OpenWrt project\n\t  to configure LTE modem in QMI mode for WAN connection.\n\n\t  https://git.openwrt.org/project/uqmi.git\n\ncomment \"uqmi needs a toolchain w/ dynamic library\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/uqmi/uqmi.hash",
    "content": "# Locally calculated\nsha256  aae6a72791da8f58012303ba3bfeeb613e74597cbebfb9e7c2d9125e6f256799  uqmi-0a19b5b77140465c29e2afa7d611fe93abc9672f-br1.tar.gz\nsha256  a69bf44dbff15d727578d2069a654d60e9034c5e2cc3e199a012e72afef6c259  main.c\n"
  },
  {
    "path": "package/uqmi/uqmi.mk",
    "content": "################################################################################\n#\n# uqmi\n#\n################################################################################\n\nUQMI_VERSION = 0a19b5b77140465c29e2afa7d611fe93abc9672f\nUQMI_SITE = https://git.openwrt.org/project/uqmi.git\nUQMI_SITE_METHOD = git\nUQMI_LICENSE = LGPL-2.0+\nUQMI_LICENSE_FILES = main.c\nUQMI_DEPENDENCIES = json-c libubox\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/urandom-scripts/Config.in",
    "content": "config BR2_PACKAGE_URANDOM_SCRIPTS\n\tbool \"urandom-initscripts\"\n\tdefault y if BR2_PACKAGE_INITSCRIPTS\n\tdepends on !BR2_PACKAGE_SYSTEMD\n\thelp\n\t  Initscript to preserve the random seed between reboots.\n\n\t  WARNING: this is a poor fit to try and get high-quality\n\t  entropy at boot. There are better ways, like haveged, or\n\t  rng-tools.\n"
  },
  {
    "path": "package/urandom-scripts/S20urandom",
    "content": "#! /bin/sh\n#\n# Preserve the random seed between reboots. See urandom(4).\n#\n\n# Quietly do nothing if /dev/urandom does not exist\n[ -c /dev/urandom ] || exit 0\n\nURANDOM_SEED=\"/var/lib/random-seed\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/urandom\" ] && . \"/etc/default/urandom\"\n\nif pool_bits=$(cat /proc/sys/kernel/random/poolsize 2> /dev/null); then\n\tpool_size=$((pool_bits/8))\nelse\n\tpool_size=512\nfi\n\ncheck_file_size() {\n\t[ -f \"$URANDOM_SEED\" ] || return 1\n\t# Try to read two blocks but exactly one will be read if the file has\n\t# the correct size.\n\tsize=$(dd if=\"$URANDOM_SEED\" bs=\"$pool_size\" count=2 2> /dev/null | wc -c)\n\ttest \"$size\" -eq \"$pool_size\"\n}\n\ninit_rng() {\n\tif check_file_size; then\n\t\tprintf 'Initializing random number generator: '\n\t\tdd if=\"$URANDOM_SEED\" bs=\"$pool_size\" of=/dev/urandom count=1 2> /dev/null\n\t\tstatus=$?\n\t\tif [ \"$status\" -eq 0 ]; then\n\t\t\techo \"OK\"\n\t\telse\n\t\t\techo \"FAIL\"\n\t\tfi\n\t\treturn \"$status\"\n\tfi\n}\n\nsave_random_seed() {\n\tprintf 'Saving random seed: '\n\tif touch \"$URANDOM_SEED\" 2> /dev/null; then\n\t\told_umask=$(umask)\n\t\tumask 077\n\t\tdd if=/dev/urandom of=\"$URANDOM_SEED\" bs=\"$pool_size\" count=1 2> /dev/null\n\t\tstatus=$?\n\t\tumask \"$old_umask\"\n\t\tif [ \"$status\" -eq 0 ]; then\n\t\t\techo \"OK\"\n\t\telse\n\t\t\techo \"FAIL\"\n\t\tfi\n\telse\n\t\tstatus=$?\n\t\techo \"SKIP (read-only file system detected)\"\n\tfi\n\treturn \"$status\"\n}\n\ncase \"$1\" in\n\tstart|restart|reload)\n\t\t# Carry a random seed from start-up to start-up\n\t\t# Load and then save the whole entropy pool\n\t\tinit_rng && save_random_seed;;\n\tstop)\n\t\t# Carry a random seed from shut-down to start-up\n\t\t# Save the whole entropy pool\n\t\tsave_random_seed;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart|reload}\"\n\t\texit 1\nesac\n"
  },
  {
    "path": "package/urandom-scripts/urandom-scripts.mk",
    "content": "################################################################################\n#\n# urandom-scripts\n#\n################################################################################\n\ndefine URANDOM_SCRIPTS_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 $(URANDOM_SCRIPTS_PKGDIR)/S20urandom \\\n\t\t$(TARGET_DIR)/etc/init.d/S20urandom\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/uredir/Config.in",
    "content": "config BR2_PACKAGE_UREDIR\n\tbool \"uredir\"\n\tselect BR2_PACKAGE_LIBUEV\n\thelp\n\t  A small Linux daemon to redirect UDP connections. It can be\n\t  used to forward connections on small and embedded systems that\n\t  do not have (or want to use) iptables.\n\n\t  https://github.com/troglobit/uredir\n"
  },
  {
    "path": "package/uredir/uredir.hash",
    "content": "# From https://github.com/troglobit/uredir/releases/download/v3.3/uredir-3.3.tar.gz.md5\nmd5  a42ee27e84de2e08e35ee733508bb6ea  uredir-3.3.tar.gz\n# License files\nsha256  e4b8fd3375ce44e5e03be199724a8785510ea5fa58ed92a7a34fd0ccbd35db10  LICENSE\n"
  },
  {
    "path": "package/uredir/uredir.mk",
    "content": "################################################################################\n#\n# uredir\n#\n################################################################################\n\nUREDIR_VERSION = 3.3\nUREDIR_SITE = https://github.com/troglobit/uredir/releases/download/v$(UREDIR_VERSION)\nUREDIR_LICENSE = ISC\nUREDIR_LICENSE_FILES = LICENSE\nUREDIR_DEPENDENCIES = host-pkgconf libuev\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/urg/0001-select-h.patch",
    "content": "From 08c7ebec7c58fbc9c1cc0542863b34119c75c91f Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Thu, 15 Sep 2016 06:19:57 +0200\nSubject: [PATCH] Serial driver: add missing header to C and C++ serial driver\n\nFixes:\n  http://autobuild.buildroot.net/results/cd7/cd76699188d2ee99b5f2d32b6a797de0d832a192/\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n---\n src/c/connection/serial_ctrl_lin.c      | 1 +\n src/cpp/connection/SerialDevice_lin.cpp | 1 +\n 2 files changed, 2 insertions(+)\n\nIndex: b/src/c/connection/serial_ctrl_lin.c\n===================================================================\n--- a/src/c/connection/serial_ctrl_lin.c\n+++ b/src/c/connection/serial_ctrl_lin.c\n@@ -18,6 +18,7 @@\n #include <errno.h>\n #include <string.h>\n \n+#include <sys/select.h>\n //#include <ctype.h>\n \n enum {\nIndex: b/src/cpp/connection/SerialDevice_lin.cpp\n===================================================================\n--- a/src/cpp/connection/SerialDevice_lin.cpp\n+++ b/src/cpp/connection/SerialDevice_lin.cpp\n@@ -13,7 +13,7 @@\n #include <cerrno>\r\n #include <cstring>\r\n #include <cstdio>\r\n-\r\n+#include <sys/select.h>\r\n \r\n class RawSerialDevice\r\n {\r\n"
  },
  {
    "path": "package/urg/0002-urg-gcc6-fix-narrowing-conversion.patch",
    "content": "urg: fix 'narrowing conversion' with gcc6\n\nFixes:\n  http://autobuild.buildroot.net/results/d0c/d0cd11163753db69a14c02e941dbda40e5f98bba/\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n\n--- a/src/cpp/urg/ScipHandler.cpp\t2016-09-11 16:11:16.083995214 +0200\n+++ b/src/cpp/urg/ScipHandler.cpp\t2016-09-11 16:11:24.380832543 +0200\n@@ -120,7 +120,7 @@ struct ScipHandler::pImpl\n \r\n       // QT ̔s\r\n       int return_code = -1;\r\n-      char qt_expected_response[] = { 0, -1 };\r\n+      char qt_expected_response[] = { 0, (char)-1 };\r\n       // return_code g߁AsetLaserOutput() p QT 𑗐M\r\n       if (response(return_code, \"QT\\n\", qt_expected_response)) {\r\n         laser_state_ = LaserOff;\r\n@@ -139,7 +139,7 @@ struct ScipHandler::pImpl\n \r\n       } else if (return_code == Scip11Response) {\r\n         // SCIP1.1 vgȐꍇ̂݁ASCIP2.0 𑗐M\r\n-        char scip20_expected_response[] = { 0, -1 };\r\n+        char scip20_expected_response[] = { 0, (char)-1 };\r\n         if (! response(return_code, \"SCIP2.0\\n\", scip20_expected_response)) {\r\n           error_message_ =\r\n             \"SCIP1.1 protocol is not supported. Please update URG firmware, or reconnect after a few seconds because sensor is booting.\";\r\n@@ -150,7 +150,7 @@ struct ScipHandler::pImpl\n \r\n       } else if (return_code == 0xE) {\r\n         // TM [hƂ݂ȂATM2 𔭍s\r\n-        char tm2_expected_response[] = { 0, -1 };\r\n+        char tm2_expected_response[] = { 0, (char)-1 };\r\n         if (response(return_code, \"TM2\\n\", tm2_expected_response)) {\r\n           laser_state_ = LaserOff;\r\n           return changeBothBaudrate(baudrate);\r\n@@ -202,7 +202,7 @@ struct ScipHandler::pImpl\n     snprintf(send_buffer, 10, \"SS%06ld\\n\", baudrate);\r\n     int return_code = -1;\r\n     // !!! ɐݒΏۂ̃{[[gȀꍇ̖߂l ss_expected... ɒǉ\r\n-    char ss_expected_response[] = { 0, 0x3, 0x4, 0xf, -1 };\r\n+    char ss_expected_response[] = { 0, 0x3, 0x4, 0xf, (char)-1 };\r\n     if (! response(return_code, send_buffer, ss_expected_response)) {\r\n       error_message_ = \"Baudrate change fail.\";\r\n       return false;\r\n@@ -216,7 +216,7 @@ struct ScipHandler::pImpl\n   {\r\n     // PP ̑Mƃf[^̎M\r\n     int return_code = -1;\r\n-    char pp_expected_response[] = { 0, -1 };\r\n+    char pp_expected_response[] = { 0, (char)-1 };\r\n     vector<string> lines;\r\n     if (! response(return_code, \"PP\\n\", pp_expected_response, &lines)) {\r\n       error_message_ = \"PP fail.\";\r\n@@ -356,7 +356,7 @@ struct ScipHandler::pImpl\n \r\n     if (on) {\r\n       int return_code = -1;\r\n-      char expected_response[] = { 0, -1 };\r\n+      char expected_response[] = { 0, (char)-1 };\r\n       if (! response(return_code, \"BM\\n\", expected_response)) {\r\n         error_message_ = \"BM fail.\";\r\n         return false;\r\n@@ -369,7 +369,7 @@ struct ScipHandler::pImpl\n       if (! mx_capturing_) {\r\n         // 邽߂ QT ł́A҂ׂ\r\n         int return_code = -1;\r\n-        char qt_expected_response[] = { 0, -1 };\r\n+        char qt_expected_response[] = { 0, (char)-1 };\r\n         if (! response(return_code, \"QT\\n\", qt_expected_response)) {\r\n           return false;\r\n         }\r\n@@ -777,7 +777,7 @@ bool ScipHandler::loadParameter(RangeSen\n bool ScipHandler::versionLines(vector<string>& lines)\r\n {\r\n   int return_code = -1;\r\n-  char expected_response[] = { 0, -1 };\r\n+  char expected_response[] = { 0, (char)-1 };\r\n   if (! pimpl->response(return_code, \"VV\\n\", expected_response, &lines)) {\r\n     return false;\r\n   }\r\n@@ -792,7 +792,7 @@ bool ScipHandler::setRawTimestampMode(bo\n \r\n   // TM0 or TM2 ̑M\r\n   int return_code = -1;\r\n-  char expected_response[] = { 0, -1 };\r\n+  char expected_response[] = { 0, (char)-1 };\r\n   if (! pimpl->response(return_code, send_command, expected_response)) {\r\n     pimpl->error_message_ = (on) ? \"TM0 fail.\" : \"TM2 fail.\";\r\n     return false;\r\n@@ -809,7 +809,7 @@ bool ScipHandler::rawTimestamp(int* time\n {\r\n   // TM1 ̒lԂ\r\n   int return_code = -1;\r\n-  char expected_response[] = { 0, -1 };\r\n+  char expected_response[] = { 0, (char)-1 };\r\n   vector<string> lines;\r\n   if (! pimpl->response(return_code, \"TM1\\n\", expected_response, &lines)) {\r\n     pimpl->error_message_ = \"TM1 fail.\";\r\n"
  },
  {
    "path": "package/urg/Config.in",
    "content": "config BR2_PACKAGE_URG\n\tbool \"urg\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Library to control Hokuyo's URG series sensors.\n\n\t  https://sourceforge.net/p/urgnetwork/wiki/Home/\n\ncomment \"urg needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/urg/urg.hash",
    "content": "# from http://pkgs.fedoraproject.org/repo/pkgs/urg/urg-0.8.18.zip/\nmd5\t\t93f90d2ccc36e784407c5282ef6bd2cb\turg-0.8.18.zip\n# Locally calculated\nsha256\tb2cab7e539c90c60fc99a2350a42b5d5390ff952b694b196c3cbb54623cfee7f\turg-0.8.18.zip\n# License files, locally calculated\nsha256\t9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1\tCOPYING\n"
  },
  {
    "path": "package/urg/urg.mk",
    "content": "################################################################################\n#\n# urg\n#\n################################################################################\n\nURG_VERSION = 0.8.18\nURG_SITE = http://pkgs.fedoraproject.org/repo/pkgs/urg/urg-0.8.18.zip/md5/93f90d2ccc36e784407c5282ef6bd2cb\nURG_SOURCE = urg-$(URG_VERSION).zip\nURG_LICENSE = LGPL-3.0\nURG_LICENSE_FILES = COPYING\n\nURG_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_SDL)$(BR2_PACKAGE_SDL_NET),yy)\nURG_DEPENDENCIES += sdl sdl_net\nURG_CONF_OPTS += \\\n\t--with-sdl-prefix=$(STAGING_DIR)/usr \\\n\t--with-sdl-exec-prefix=$(STAGING_DIR)/usr\nelse\nURG_CONF_OPTS = --without-sdl\nURG_CONF_ENV += ac_cv_path_SDL_CONFIG=\"\"\nendif\n\nURG_CONFIG_SCRIPTS = c_urg-config urg-config\n\ndefine URG_EXTRACT_CMDS\n\t$(UNZIP) -d $(BUILD_DIR) $(URG_DL_DIR)/$(URG_SOURCE)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/usb_modeswitch/Config.in",
    "content": "config BR2_PACKAGE_USB_MODESWITCH\n\tbool \"usb_modeswitch\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_JIMTCL if !BR2_PACKAGE_TCL || BR2_PACKAGE_TCL_SHLIB_ONLY\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  Some USB devices such as 3G/4G broadband modems power-up\n\t  in mass storage mode to provide access to drivers\n\t  for the device's application mode. usb_modeswitch\n\t  changes the mode of such devices from the initial power-up\n\t  mode to the application mode.\n\t  Specific configuration data for each device model is required.\n\n\t  usb_modeswitch can be used with the usb_modeswitch_data\n\t  package and eudev/systemd for automatic mode switching\n\t  when devices are connected.\n\n\t  For more information search the Internet for \"Virtual CD-ROM\n\t  switching utility\".\n\n\t  http://www.draisberghof.de/usb_modeswitch/\n\ncomment \"usb_modeswitch needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/usb_modeswitch/usb_modeswitch.hash",
    "content": "# From https://www.draisberghof.de/usb_modeswitch/usb-modeswitch-versions.xml\nmd5  69d00d6ed7097b97d972a159d14cfba1  usb-modeswitch-2.6.1.tar.bz2\n# Locally calculated\nsha256  5195d9e136e52f658f19e9f93e4f982b1b67bffac197d0a455cd8c2cd245fa34  usb-modeswitch-2.6.1.tar.bz2\nsha256  6195429209313925c0eba6c0da4ee7a6cb4277b99e35c886913f80f91ec20b94  COPYING\n"
  },
  {
    "path": "package/usb_modeswitch/usb_modeswitch.mk",
    "content": "################################################################################\n#\n# usb_modeswitch\n#\n################################################################################\n\nUSB_MODESWITCH_VERSION = 2.6.1\nUSB_MODESWITCH_SOURCE = usb-modeswitch-$(USB_MODESWITCH_VERSION).tar.bz2\nUSB_MODESWITCH_SITE = http://www.draisberghof.de/usb_modeswitch\nUSB_MODESWITCH_DEPENDENCIES = libusb\nUSB_MODESWITCH_LICENSE = GPL-2.0+, BSD-2-Clause\nUSB_MODESWITCH_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_TCL)$(BR2_PACKAGE_TCL_SHLIB_ONLY),y)\nUSB_MODESWITCH_DEPENDENCIES += tcl\nUSB_MODESWITCH_BUILD_TARGETS = all\nUSB_MODESWITCH_INSTALL_TARGETS = install-script\nelse\nUSB_MODESWITCH_DEPENDENCIES += jimtcl\nUSB_MODESWITCH_INSTALL_TARGETS = install-common\nifeq ($(BR2_STATIC_LIBS),y)\nUSB_MODESWITCH_BUILD_TARGETS = all-with-statlink-dispatcher\nelse\nUSB_MODESWITCH_BUILD_TARGETS = all-with-dynlink-dispatcher\nendif\nendif\n\ndefine USB_MODESWITCH_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\t-C $(@D) $(USB_MODESWITCH_BUILD_TARGETS)\nendef\n\ndefine USB_MODESWITCH_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\t-C $(@D) $(USB_MODESWITCH_INSTALL_TARGETS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/usb_modeswitch_data/Config.in",
    "content": "config BR2_PACKAGE_USB_MODESWITCH_DATA\n\tbool \"usb_modeswitch_data\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # usb_modeswitch -> libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # usb_modeswitch -> libusb\n\tselect BR2_PACKAGE_USB_MODESWITCH\n\thelp\n\t  USB mode switch data\n\t  Contains udev rules and events to allow usb_modeswitch to\n\t  function automatically\n\n\t  http://www.draisberghof.de/usb_modeswitch/\n\ncomment \"usb_modeswitch_data needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/usb_modeswitch_data/usb_modeswitch_data.hash",
    "content": "# From http://www.draisberghof.de/usb_modeswitch/\nmd5\te8fce7eb949cbe16c61fb71bade4cc17  usb-modeswitch-data-20191128.tar.bz2\n# Locally calculated\nsha256\t3f039b60791c21c7cb15c7986cac89650f076dc274798fa242231b910785eaf9  usb-modeswitch-data-20191128.tar.bz2\nsha256\t32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/usb_modeswitch_data/usb_modeswitch_data.mk",
    "content": "################################################################################\n#\n# usb_modeswitch_data\n#\n################################################################################\n\nUSB_MODESWITCH_DATA_VERSION = 20191128\nUSB_MODESWITCH_DATA_SOURCE = usb-modeswitch-data-$(USB_MODESWITCH_DATA_VERSION).tar.bz2\nUSB_MODESWITCH_DATA_SITE = http://www.draisberghof.de/usb_modeswitch\nUSB_MODESWITCH_DATA_DEPENDENCIES = usb_modeswitch\nUSB_MODESWITCH_DATA_LICENSE = GPL-2.0+\nUSB_MODESWITCH_DATA_LICENSE_FILES = COPYING\n\n# Nothing to build, it is a pure data package\n\ndefine USB_MODESWITCH_DATA_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/usbguard/Config.in",
    "content": "config BR2_PACKAGE_USBGUARD\n\tbool \"usbguard\"\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf\n\tdepends on BR2_INSTALL_LIBSTDCPP # protobuf\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libqb, protobuf\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # protobuf\n\tdepends on !BR2_STATIC_LIBS # libqb, protobuf\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::future\n\tselect BR2_PACKAGE_PROTOBUF\n\tselect BR2_PACKAGE_LIBQB\n\tselect BR2_PACKAGE_LIBSODIUM if !BR2_PACKAGE_LIBGCRYPT && !BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  The USBGuard software framework\n\n\t  Install a custom accept/deny list in /etc/usbguard/rules.conf\n\t  (e.g. using an overlay). This file can be generated on the\n\t  target using \"usbguard generate-policy\".\n\n\t  https://usbguard.github.io/\n\ncomment \"usbguard needs a glibc or uClibc toolchain w/ C++, threads, dynamic library, gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \\\n\t\t|| BR2_TOOLCHAIN_USES_MUSL\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n\ncomment \"usbguard needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/usbguard/S20usbguard",
    "content": "#!/bin/sh\n#\n# Start psplash\n#\n\nPIDFILE=/var/run/$NAME.pid\n\nstart() {\n    printf \"Starting usbguard daemon: \"\n    test -d /var/log/usbguard || mkdir -p /var/log/usbguard\n    start-stop-daemon -b -S -q -m -p $PIDFILE --exec /usr/sbin/usbguard-daemon -- -f -s -c /etc/usbguard/usbguard-daemon.conf\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n    printf \"Stopping usbguard daemon: \"\n    start-stop-daemon -K -q -p $PIDFILE\n    [ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\ncase \"$1\" in\n    start)\n\tstart\n\t;;\n    stop)\n\tstop\n\t;;\n    restart|reload)\n\tstop\n\tstart\n\t;;\n    *)\n\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n\nexit $?\n"
  },
  {
    "path": "package/usbguard/usbguard.hash",
    "content": "# Locally calculated\nsha256  5617986cd5dd1a2d311041648a1977d836cf4e33a4121d7f82599f21496abc42  usbguard-1.0.0.tar.gz\nsha256  a45d0bb572ed792ed34627a72621834b3ba92aab6e2cc4e04301dee7a728d753  LICENSE\n"
  },
  {
    "path": "package/usbguard/usbguard.mk",
    "content": "################################################################################\n#\n## usbguard\n#\n################################################################################\n\nUSBGUARD_VERSION = 1.0.0\nUSBGUARD_SITE = https://github.com/USBGuard/usbguard/releases/download/usbguard-$(USBGUARD_VERSION)\nUSBGUARD_LICENSE = GPL-2.0+\nUSBGUARD_LICENSE_FILES = LICENSE\nUSBGUARD_SELINUX_MODULES = usbguard\nUSBGUARD_CONF_OPTS = \\\n\t--with-bundled-catch \\\n\t--with-bundled-pegtl \\\n\t--disable-debug-build \\\n\t--without-dbus \\\n\t--without-polkit \\\n\t--disable-umockdev\n\nUSBGUARD_DEPENDENCIES += libqb protobuf\n\nifeq ($(BR2_PACKAGE_LIBSODIUM),y)\nUSBGUARD_CONF_OPTS += --with-crypto-library=sodium\nUSBGUARD_DEPENDENCIES += libsodium\nelse ifeq ($(BR2_PACKAGE_LIBOPENSSL),y)\nUSBGUARD_CONF_OPTS += --with-crypto-library=openssl\nUSBGUARD_DEPENDENCIES += libopenssl\nelse ifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nUSBGUARD_CONF_ENV += \\\n\tac_cv_path_LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config\nUSBGUARD_CONF_OPTS += --with-crypto-library=gcrypt\nUSBGUARD_DEPENDENCIES += libgcrypt\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nUSBGUARD_CONF_OPTS += --enable-systemd\nUSBGUARD_DEPENDENCIES += systemd\nelse\nUSBGUARD_CONF_OPTS += --disable-systemd\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECCOMP),y)\nUSBGUARD_CONF_OPTS += --enable-seccomp\nUSBGUARD_DEPENDENCIES += libseccomp\nelse\nUSBGUARD_CONF_OPTS += --disable-seccomp\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP_NG),y)\nUSBGUARD_CONF_OPTS += --enable-libcapng\nUSBGUARD_DEPENDENCIES += libcap-ng\nendif\n\ndefine USBGUARD_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/usbguard/S20usbguard \\\n\t\t$(TARGET_DIR)/etc/init.d/S20usbguard\nendef\n\ndefine USBGUARD_PERMISSIONS\n\t/etc/usbguard/rules.conf f 0600 0 0 - - - - -\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/usbmount/0001-rules-fix.patch",
    "content": "Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>\n---\n usbmount.rules |    4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\nIndex: b/usbmount.rules\n===================================================================\n--- a/usbmount.rules\n+++ b/usbmount.rules\n@@ -1,7 +1,7 @@\n # Rules for USBmount -*- conf -*-\n\n KERNEL==\"sd*\", DRIVERS==\"sbp2\",\t\tACTION==\"add\",\tRUN+=\"/usr/share/usbmount/usbmount add\"\n-KERNEL==\"sd*\", SUBSYSTEMS==\"usb\",\tACTION==\"add\",\tRUN+=\"/usr/share/usbmount/usbmount add\"\n-KERNEL==\"ub*\", SUBSYSTEMS==\"usb\",\tACTION==\"add\",\tRUN+=\"/usr/share/usbmount/usbmount add\"\n+KERNEL==\"sd*\", SUBSYSTEM==\"block\",\tACTION==\"add\",\tRUN+=\"/usr/share/usbmount/usbmount add\"\n+KERNEL==\"ub*\", SUBSYSTEM==\"block\",\tACTION==\"add\",\tRUN+=\"/usr/share/usbmount/usbmount add\"\n KERNEL==\"sd*\",\t\t\t\tACTION==\"remove\",\tRUN+=\"/usr/share/usbmount/usbmount remove\"\n KERNEL==\"ub*\",\t\t\t\tACTION==\"remove\",\tRUN+=\"/usr/share/usbmount/usbmount remove\"\n"
  },
  {
    "path": "package/usbmount/0002-use-udev-environment-instead-of-blkid.patch",
    "content": "udev can provide all the values that usbmount determined using the\nblkid binary. This patch drops use of blkid in favor of using the\nenvironment variables set by udev. Thus it removes the dependency\non blkid from usbmount.\n\nSigned-off-by: Sven Neumann <s.neumann@raumfeld.com>\n--- usbmount-0.0.22/usbmount.orig\t2013-06-18 14:44:40.143096147 +0200\n+++ usbmount-0.0.22/usbmount\t2013-06-19 16:13:09.882434896 +0200\n@@ -59,11 +59,6 @@\n     exit 0\n fi\n \n-if [ ! -x /sbin/blkid ]; then\n-    log err \"cannot execute /sbin/blkid\"\n-    exit 1\n-fi\n-\n # Per Policy 9.3.2, directories under /var/run have to be created\n # after every reboot.\n if [ ! -e /var/run/usbmount ]; then\n@@ -83,15 +78,7 @@\n     trap '( lockfile-remove /var/run/usbmount/.mount )' 0\n     log debug \"acquired lock /var/run/usbmount/.mount.lock\"\n \n-    # Grab device information from device and \"divide it\"\n-    #   FIXME: improvement: implement mounting by label (notice that labels\n-    #   can contain spaces, which makes things a little bit less comfortable).\n-    DEVINFO=$(/sbin/blkid -p $DEVNAME)\n-    FSTYPE=$(echo \"$DEVINFO\" | sed 's/.*[[:blank:]]TYPE=\"\\([^\"]*\\)\".*/\\1/g; s/[[:blank:]]*//g;')\n-    UUID=$(echo \"$DEVINFO\"   | sed 's/.*[[:blank:]]UUID=\"\\([^\"]*\\)\".*/\\1/g; s/[[:blank:]]*//g;')\n-    USAGE=$(echo \"$DEVINFO\"  | sed 's/.*[[:blank:]]USAGE=\"\\([^\"]*\\)\".*/\\1/g; s/[[:blank:]]*//g;')\n-\n-    if ! echo $USAGE | egrep -q \"(filesystem|disklabel)\"; then\n+    if ! echo $ID_FS_USAGE | egrep -q \"(filesystem|disklabel)\"; then\n \tlog info \"$DEVNAME does not contain a filesystem or disklabel\"\n \texit 1\n     fi\n@@ -101,14 +88,14 @@\n \tlog info \"executing command: mount $DEVNAME\"\n \tmount $DEVNAME || log err \"mount by DEVNAME with $DEVNAME wasn't successful; return code $?\"\n \n-    elif grep -q \"^[[:blank:]]*UUID=$UUID\" /etc/fstab; then\n-        log info \"executing command: mount -U $UUID\"\n-\tmount -U $UUID || log err \"mount by UUID with $UUID wasn't successful; return code $?\"\n+    elif grep -q \"^[[:blank:]]*UUID=$ID_FS_UUID\" /etc/fstab; then\n+        log info \"executing command: mount -U $ID_FS_UUID\"\n+\tmount -U $ID_FS_UUID || log err \"mount by UUID with $ID_FS_UUID wasn't successful; return code $?\"\n \n     else\n-\tlog debug \"$DEVNAME contains filesystem type $FSTYPE\"\n+\tlog debug \"$DEVNAME contains filesystem type $ID_FS_TYPE\"\n \n-\tfstype=$FSTYPE\n+\tfstype=$ID_FS_TYPE\n \t# Test if the filesystem type is in the list of filesystem\n \t# types to mount.\n \tif in_list \"$fstype\" \"$FILESYSTEMS\"; then\n@@ -176,11 +163,13 @@\n \n \t\t# Run hook scripts; ignore errors.\n \t\texport UM_DEVICE=\"$DEVNAME\"\n+\t\texport UM_UUID=\"$ID_FS_UUID\"\n \t\texport UM_MOUNTPOINT=\"$mountpoint\"\n \t\texport UM_FILESYSTEM=\"$fstype\"\n \t\texport UM_MOUNTOPTIONS=\"$options\"\n \t\texport UM_VENDOR=\"$vendor\"\n \t\texport UM_MODEL=\"$model\"\n+\t\texport UM_LABEL=\"$ID_FS_LABEL\"\n \t\tlog info \"executing command: run-parts /etc/usbmount/mount.d\"\n \t\trun-parts /etc/usbmount/mount.d || :\n \t    else\n"
  },
  {
    "path": "package/usbmount/Config.in",
    "content": "config BR2_PACKAGE_USBMOUNT\n\tbool \"usbmount\"\n\tdepends on BR2_USE_MMU # lockfile-progs -> liblockfile\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tselect BR2_PACKAGE_LOCKFILE_PROGS\n\thelp\n\t  The usbmount package automatically mounts USB mass storage\n\t  devices when they are plugged in, and unmounts them when\n\t  they are removed.\n\n\t  https://wiki.debian.org/usbmount\n\ncomment \"usbmount requires udev to be enabled\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n"
  },
  {
    "path": "package/usbmount/usbmount.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/u/usbmount/usbmount_0.0.22.dsc\nsha256  a2b8581534b6c92f0376d202639dbc28862d3834dac64c35bde752f84975527d  usbmount_0.0.22.tar.gz\n# Locally computed\nsha256  797a416c87923338aa3ed05cce3cfdac6101f0142e72d5ab05c7bd76af5e527b  debian/copyright\n"
  },
  {
    "path": "package/usbmount/usbmount.mk",
    "content": "################################################################################\n#\n# usbmount\n#\n################################################################################\n\nUSBMOUNT_VERSION = 0.0.22\nUSBMOUNT_SOURCE = usbmount_$(USBMOUNT_VERSION).tar.gz\nUSBMOUNT_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/u/usbmount\nUSBMOUNT_DEPENDENCIES = udev lockfile-progs\nUSBMOUNT_LICENSE = BSD-2-Clause\nUSBMOUNT_LICENSE_FILES = debian/copyright\n\ndefine USBMOUNT_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/usbmount $(TARGET_DIR)/usr/share/usbmount/usbmount\n\n\t$(INSTALL) -m 0755 -D $(@D)/00_create_model_symlink \\\n\t\t$(TARGET_DIR)/etc/usbmount/mount.d/00_create_model_symlink\n\t$(INSTALL) -m 0755 -D $(@D)/00_remove_model_symlink \\\n\t\t$(TARGET_DIR)/etc/usbmount/umount.d/00_remove_model_symlink\n\n\t$(INSTALL) -m 0644 -D $(@D)/usbmount.rules $(TARGET_DIR)/lib/udev/rules.d/usbmount.rules\n\t$(INSTALL) -m 0644 -D $(@D)/usbmount.conf $(TARGET_DIR)/etc/usbmount/usbmount.conf\n\n\tmkdir -p $(addprefix $(TARGET_DIR)/media/usb,0 1 2 3 4 5 6 7)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/usbredir/0001-meson-add-tests-option.patch",
    "content": "From 8490a7ac101d4ee0a78c44b252d3b7a6c2508c74 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 21 Aug 2021 11:55:48 +0200\nSubject: [PATCH] meson: add tests option\n\nAdd tests option to allow the user to disable them\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://gitlab.freedesktop.org/spice/usbredir/-/commit/8490a7ac101d4ee0a78c44b252d3b7a6c2508c74]\n---\n meson.build       | 4 +++-\n meson_options.txt | 5 +++++\n 2 files changed, 8 insertions(+), 1 deletion(-)\n\ndiff --git a/meson.build b/meson.build\nindex 6e773a7..a6d21b8 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -106,7 +106,9 @@ if host_machine.system() != 'windows'\n         subdir('fuzzing')\n     endif\n endif\n-subdir('tests')\n+if get_option('tests').enabled()\n+    subdir('tests')\n+endif\n subdir('data')\n \n summary(summary_info, bool_yn: true)\ndiff --git a/meson_options.txt b/meson_options.txt\nindex b35732b..63e8c85 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -21,3 +21,8 @@ option('tools',\n     type : 'feature',\n     value : 'enabled',\n     description : 'Build usbredir\\'s tools such as usbredirect')\n+\n+option('tests',\n+    type : 'feature',\n+    value : 'enabled',\n+    description : 'Build usbredir\\'s tests such as filter')\n-- \nGitLab\n\n"
  },
  {
    "path": "package/usbredir/0002-meson-add-stack_protector-option.patch",
    "content": "From 54cf1897ef3aa4d0a35b5f4eb1f5c6928b033af5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 24 Sep 2021 17:24:43 +0200\nSubject: [PATCH] meson: add stack_protector option\n\nAdd stack_protector option to allow the user to disable it as some\nembedded toolchains don't support it which will result in the following\nbuild failure:\n\n/home/giuliobenetti/autobuild/run/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/sparc-buildroot-linux-uclibc/9.3.0/../../../../sparc-buildroot-linux-uclibc/bin/ld: usbredirparser/libusbredirparser.so.1.1.0.p/usbredirparser.c.o: in function `va_log':\nusbredirparser.c:(.text+0x1c4): undefined reference to `__stack_chk_guard'\n\nFixes:\n - http://autobuild.buildroot.org/results/40de5443e98157ad50c6841ea70a835cd5ad4fe9\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.freedesktop.org/spice/usbredir/-/merge_requests/53]\n---\n meson.build       | 6 +++++-\n meson_options.txt | 5 +++++\n 2 files changed, 10 insertions(+), 1 deletion(-)\n\ndiff --git a/meson.build b/meson.build\nindex a6d21b8..4350f53 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -17,8 +17,12 @@ cc_flags = [\n if host_machine.system() != 'windows'\n     cc_flags += [\n \t'-Wp,-D_FORTIFY_SOURCE=2',\n-\t'-fstack-protector',\n     ]\n+    if get_option('stack_protector').enabled()\n+        cc_flags += [\n+\t    '-fstack-protector',\n+        ]\n+    endif\n endif\n \n # Check if we are building from .git\ndiff --git a/meson_options.txt b/meson_options.txt\nindex 63e8c85..34dd392 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -17,6 +17,11 @@ option('fuzzing-install-dir',\n     type : 'string',\n     description : 'Installation directory for fuzzing binaries')\n \n+option('stack_protector',\n+    type : 'feature',\n+    value : 'enabled',\n+    description : 'Build usbredir\\'s with stack-protector')\n+\n option('tools',\n     type : 'feature',\n     value : 'enabled',\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/usbredir/0003-meson.build-make-C-optional.patch",
    "content": "From 55fc307d23d657b52433d1c8508467d0589754d5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 16 Oct 2021 15:45:57 +0200\nSubject: [PATCH] meson.build: make C++ optional\n\nRemove cpp from meson project statement to make C++ optional and avoid\nthe following build failure when the toolchain does not provide a C++\ncompiler:\n\n../output-1/build/usbredir-0.11.0/meson.build:1:0: ERROR: Unknown compiler(s): [['/home/buildroot/autobuild/instance-3/output-1/host/bin/arm-linux-g++']]\nThe following exception(s) were encountered:\nRunning \"/home/buildroot/autobuild/instance-3/output-1/host/bin/arm-linux-g++ --version\" gave \"[Errno 2] No such file or directory: '/home/buildroot/autobuild/instance-3/output-1/host/bin/arm-linux-g++'\"\n\nIndeed C++ is only required for fuzzing which is already handled by\nmeson through add_languages('cpp', required: true)\n\nFixes:\n - http://autobuild.buildroot.org/results/eca1d8a2b73a769354ab1d24c7996be30f152138\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.freedesktop.org/spice/usbredir/-/merge_requests/55]\n---\n meson.build | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/meson.build b/meson.build\nindex 49dbce4..ca19f22 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1,4 +1,4 @@\n-project('usbredir', 'c', 'cpp',\n+project('usbredir', 'c',\n     version: '0.11.0',\n     license: 'LGPLv2.1+',\n     meson_version : '>= 0.53',\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/usbredir/Config.in",
    "content": "comment \"usbredir needs a toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_PACKAGE_USBREDIR\n\tbool \"usbredir\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  usbredir is the name of a network protocol for sending usb\n\t  device traffic over a network connection. It is also the\n\t  name of the software package offering a parsing library, a\n\t  usbredirhost library and several utilities implementing this\n\t  protocol.\n\n\t  Note: only the library is installed, not the utilities. Say\n\t  'y' below if you want the server too.\n\n\t  http://www.spice-space.org/page/UsbRedir\n\nif BR2_PACKAGE_USBREDIR\n\nconfig BR2_PACKAGE_USBREDIR_SERVER\n\tbool \"usbredirserver on target\"\n\thelp\n\t  If you want to serve usbredir requests on your target, say\n\t  'y' here to have the usbredir server on the target.\n\n\t  Note: the server is not required to use the library.\n\nendif\n"
  },
  {
    "path": "package/usbredir/usbredir.hash",
    "content": "# https://spice-space.org/download/usbredir/usbredir-0.11.0.tar.xz.sha256sum\nsha256  72dd5f3aa90dfbc0510b5149bb5b1654c8f21fdc405dfce7b5dc163dcff19cba  usbredir-0.11.0.tar.xz\n\n# Hash for license files\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c  COPYING.LIB\n"
  },
  {
    "path": "package/usbredir/usbredir.mk",
    "content": "################################################################################\n#\n# usbredir\n#\n################################################################################\n\nUSBREDIR_VERSION = 0.11.0\nUSBREDIR_SOURCE = usbredir-$(USBREDIR_VERSION).tar.xz\nUSBREDIR_SITE = http://spice-space.org/download/usbredir\nUSBREDIR_LICENSE = LGPL-2.1+ (libraries)\nUSBREDIR_LICENSE_FILES = COPYING.LIB\nUSBREDIR_INSTALL_STAGING = YES\nUSBREDIR_DEPENDENCIES = host-pkgconf libusb\nUSBREDIR_CONF_OPTS = \\\n\t-Dgit_werror=disabled \\\n\t-Dstack_protector=disabled \\\n\t-Dtests=disabled \\\n\t-Dtools=disabled\n\nifeq ($(BR2_PACKAGE_USBREDIR_SERVER),y)\n\nUSBREDIR_LICENSE += , GPL-2.0+ (program)\nUSBREDIR_LICENSE_FILES += COPYING\n\nelse # BR2_PACKAGE_USBREDIR_SERVER != y\n\ndefine USBREDIR_POST_INSTALL_TARGET_RM_SERVER\n\trm -f $(TARGET_DIR)/usr/sbin/usbredirserver\nendef\nUSBREDIR_POST_INSTALL_TARGET_HOOKS += USBREDIR_POST_INSTALL_TARGET_RM_SERVER\n\nendif # BR2_PACKAGE_USBREDIR_SERVER\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/usbutils/Config.in",
    "content": "config BR2_PACKAGE_USBUTILS\n\tbool \"usbutils\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libusb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb\n\tdepends on BR2_PACKAGE_HAS_UDEV # needs hwdb\n\tselect BR2_PACKAGE_LIBUSB\n\thelp\n\t  USB enumeration utilities\n\n\t  http://linux-usb.sourceforge.net/\n\ncomment \"usbutils needs udev /dev management and toolchain w/ threads, gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_PACKAGE_HAS_UDEV || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n"
  },
  {
    "path": "package/usbutils/usbutils.hash",
    "content": "# From https://www.kernel.org/pub/linux/utils/usb/usbutils/sha256sums.asc\nsha256  3a079cfad60560227b67192482d7813bf96326fcbb66c04254839715f276fc69  usbutils-014.tar.xz\n# Locally calculated\nsha256  91412672119c72352b76c1d48fa1a8b7cdc7f70be7929e468c8805db468e23e4  LICENSES/GPL-2.0-only.txt\nsha256  4631da83311d27f99078d0d102e31bd34a4fcbcc2dae2aa40f1454a5b48125dc  LICENSES/GPL-3.0-only.txt\n"
  },
  {
    "path": "package/usbutils/usbutils.mk",
    "content": "################################################################################\n#\n# usbutils\n#\n################################################################################\n\nUSBUTILS_VERSION = 014\nUSBUTILS_SOURCE = usbutils-$(USBUTILS_VERSION).tar.xz\nUSBUTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/usb/usbutils\nUSBUTILS_DEPENDENCIES = host-pkgconf libusb udev\nUSBUTILS_LICENSE = GPL-2.0+ (utils) GPL-2.0 or GPL-3.0 (lsusb.py)\nUSBUTILS_LICENSE_FILES = LICENSES/GPL-2.0-only.txt LICENSES/GPL-3.0-only.txt\n\n# Nice lsusb.py script only if there's python 3.x\nifeq ($(BR2_PACKAGE_PYTHON3),)\ndefine USBUTILS_REMOVE_PYTHON\n\trm -f $(TARGET_DIR)/usr/bin/lsusb.py\nendef\n\nUSBUTILS_POST_INSTALL_TARGET_HOOKS += USBUTILS_REMOVE_PYTHON\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ushare/0001-Don-t-build-po-files-if-NLS-is-disabled.patch",
    "content": "From c9f5783bb2df4a19c6281daeda30e8ab905d2ca3 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 22 Aug 2021 10:44:48 +0200\nSubject: [PATCH] Don't build po files if NLS is disabled\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/ddugovic/uShare/pull/12]\n---\n Makefile  | 7 +++++--\n configure | 3 +++\n 2 files changed, 8 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex ebd8f91..6686cfd 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -14,10 +14,13 @@ EXTRADIST = AUTHORS \\\n \t    THANKS \\\n \t    TODO \\\n \n-SUBDIRS = po \\\n-\t  scripts \\\n+SUBDIRS = scripts \\\n \t  src \\\n \n+ifeq ($(NLS),yes)\n+SUBDIRS += po\n+endif\n+\n all:\n \tfor subdir in $(SUBDIRS); do \\\n \t  $(MAKE) -C $$subdir $@; \\\ndiff --git a/configure b/configure\nindex 4a3efe0..f48806a 100755\n--- a/configure\n+++ b/configure\n@@ -414,6 +414,8 @@ for opt do\n   ;;\n   --with-libdlna-dir=*) libdlnadir=\"$optval\";\n   ;;\n+  --enable-nls) nls=\"yes\"\n+  ;;\n   --disable-nls) nls=\"no\"\n   ;;\n   --enable-dlna) dlna=\"yes\"\n@@ -723,6 +725,7 @@ append_config \"LDFLAGS=$LDFLAGS\"\n append_config \"INSTALL=$INSTALL\"\n \n append_config \"DEBUG=$debug\"\n+append_config \"NLS=$nls\"\n \n \n echolog \"Creating $CONFIG_H ...\"\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/ushare/Config.in",
    "content": "config BR2_PACKAGE_USHARE\n\tbool \"ushare\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libupnp\n\t# ushare has a completely custom configure script that does\n\t# broken things with library ordering, which breaks static\n\t# linking.\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBUPNP\n\thelp\n\t  uShare is a UPnP (TM) A/V & DLNA Media Server.\n\t  It implements the server component that provides UPnP media\n\t  devices with information on available multimedia files.\n\n\t  http://ushare.geexbox.org/\n\ncomment \"ushare needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/ushare/ushare.hash",
    "content": "# locally computed hash\nsha256  e4563141a171138900540cc979f205cf666e820f709d47a98521bc77f53a99e6  ushare-2.1.tar.gz\nsha256  231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c  COPYING\n"
  },
  {
    "path": "package/ushare/ushare.mk",
    "content": "################################################################################\n#\n# ushare\n#\n################################################################################\n\nUSHARE_VERSION = 2.1\nUSHARE_SITE = $(call github,ddugovic,uShare,v$(USHARE_VERSION))\nUSHARE_DEPENDENCIES = host-pkgconf libupnp $(TARGET_NLS_DEPENDENCIES)\nUSHARE_LICENSE = GPL-2.0+\nUSHARE_LICENSE_FILES = COPYING\nUSHARE_LDFLAGS = $(TARGET_NLS_LIBS)\n\nUSHARE_CONF_OPTS = \\\n\t--prefix=/usr \\\n\t--cross-compile \\\n\t--cross-prefix=\"$(TARGET_CROSS)\" \\\n\t--sysconfdir=/etc \\\n\t--disable-strip\n\nUSHARE_MAKE_OPTS = LDFLAGS=\"$(TARGET_LDFLAGS) $(USHARE_LDFLAGS)\"\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nUSHARE_CONF_OPTS += --enable-nls\nUSHARE_MAKE_OPTS += GMSGFMT=\"$(HOST_DIR)/bin/msgfmt\"\nelse\nUSHARE_CONF_OPTS += --disable-nls\nendif\n\ndefine USHARE_CONFIGURE_CMDS\n\t(cd $(@D); \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\t./configure \\\n\t\t\t$(USHARE_CONF_OPTS) \\\n\t)\nendef\n\ndefine USHARE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(USHARE_MAKE_OPTS) -C $(@D)\nendef\n\ndefine USHARE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\n\trm -f $(TARGET_DIR)/etc/init.d/ushare\nendef\n\n# Even though configure is called it's not autoconf\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/ussp-push/0001-fix-build-against-bluez-4.patch",
    "content": "Fix build against bluez4.\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n\n--- ussp-push-0.11.orig/src/obex_socket.c\t2012-11-01 09:58:51.049538708 +0100\n+++ ussp-push-0.11/src/obex_socket.c\t2012-11-01 12:10:10.719506951 +0100\n@@ -197,7 +197,7 @@ static int bt_sock_name2bth(int devid, c\n \tfor (i = 0; i < niinf; i++) {\n \t\tchar devname[128];\n \n-\t\tif (hci_remote_name(dd, &piinf[i].bdaddr, sizeof(devname) - 1,\n+\t\tif (hci_read_remote_name(dd, &piinf[i].bdaddr, sizeof(devname) - 1,\n \t\t\t\t    devname, 100000) >= 0) {\n \t\t\tif (strcasecmp(devname, btname) == 0) {\n \t\t\t\t*btaddr = piinf[i].bdaddr;\n"
  },
  {
    "path": "package/ussp-push/0002-fix-build-again-obex-bluez.patch",
    "content": "From 2d732026044d8e6cd16465ee87a73ac9692c021b Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Fri, 3 Nov 2017 09:04:12 +0100\nSubject: [PATCH] fix build again obex/bluez\n\n[fetch from debian source: http://http.debian.net/debian/pool/main/u/ussp-push/ussp-push_0.11-4.debian.tar.xz]\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n---\n src/obex_main.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/obex_main.c b/src/obex_main.c\nindex a7126e6..6233d7e 100644\n--- a/src/obex_main.c\n+++ b/src/obex_main.c\n@@ -197,7 +197,7 @@ obex_t *__obex_connect(int devid, void *addr, int timeout, int *err)\n \t\t*err = -1;\n \t\treturn NULL;\n \t}\n-\tif (!(handle = OBEX_Init(OBEX_TRANS_CUST, obex_event, 0))) {\n+\tif (!(handle = OBEX_Init(OBEX_TRANS_CUSTOM, obex_event, 0))) {\n \t\tBTERROR(\"OBEX_Init failed: %s\\n\", strerror(errno));\n \t\tobex_free(gt);\n \t\t*err = -1;\n-- \n2.15.0\n\n"
  },
  {
    "path": "package/ussp-push/0003-add-OBEX_CharToUnicode.patch",
    "content": "From eafac77d76d2a23c191a56f715d6c4afc0800da8 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Fri, 3 Nov 2017 09:10:01 +0100\nSubject: [PATCH] add OBEX_CharToUnicode\n\n[fetch from debian source: http://http.debian.net/debian/pool/main/u/ussp-push/ussp-push_0.11-4.debian.tar.xz]\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n---\n src/obex_main.c | 20 ++++++++++++++++++++\n 1 file changed, 20 insertions(+)\n\ndiff --git a/src/obex_main.c b/src/obex_main.c\nindex 6233d7e..971cc37 100644\n--- a/src/obex_main.c\n+++ b/src/obex_main.c\n@@ -84,7 +84,27 @@ void request_done(obex_t * handle, obex_object_t * object, int obex_cmd, int obe\n \n int bt_debug;\n \n+static int OBEX_CharToUnicode(uint8_t *uc, const uint8_t *c, int size)\n+{\n+\tint len, n;\n+\n+\tif (uc == NULL || c == NULL)\n+\t\treturn -1;\n+\n+\tlen = n = strlen((char *) c);\n+\tif (n*2+2 > size)\n+\t\treturn -1;\n+\n+\tuc[n*2+1] = 0;\n+\tuc[n*2] = 0;\n \n+\twhile (n--) {\n+\t\tuc[n*2+1] = c[n];\n+\t\tuc[n*2] = 0;\n+\t}\n+\n+\treturn (len * 2) + 2;\n+}\n \n /*\n  * These two functions are from affix/profiles/obex/obex_io.c\n-- \n2.15.0\n\n"
  },
  {
    "path": "package/ussp-push/Config.in",
    "content": "config BR2_PACKAGE_USSP_PUSH\n\tbool \"ussp-push\"\n\tdepends on !BR2_STATIC_LIBS # bluez5_utils\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus, alsa-lib, libglib2\n\tdepends on BR2_USE_MMU # dbus\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5_utils\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5_utils\n\tselect BR2_PACKAGE_OPENOBEX\n\tselect BR2_PACKAGE_BLUEZ5_UTILS\n\thelp\n\t  ussp-push is an OBEX object pusher for Linux, using the BlueZ\n\t  BlueTooth stack.\n\n\t  http://www.xmailserver.org/ussp-push.html\n\ncomment \"ussp-push needs a toolchain w/ wchar, threads, dynamic library, headers >= 3.4\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4\n"
  },
  {
    "path": "package/ussp-push/ussp-push.hash",
    "content": "# Locally calculated\nsha256\tbb2748eaed6164812555b4a1e186c4f2820c5ef9ce30f12d7aac28a452719bbd\tussp-push-0.11.tar.gz\n# License files, locally calculated\nsha256\t204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994\tCOPYING\n"
  },
  {
    "path": "package/ussp-push/ussp-push.mk",
    "content": "################################################################################\n#\n# ussp-push\n#\n################################################################################\n\nUSSP_PUSH_VERSION = 0.11\nUSSP_PUSH_SITE = http://www.xmailserver.org\nUSSP_PUSH_LICENSE = GPL-2.0+\nUSSP_PUSH_LICENSE_FILES = COPYING\n\nUSSP_PUSH_DEPENDENCIES = bluez5_utils openobex\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/ustream-ssl/Config.in",
    "content": "config BR2_PACKAGE_USTREAM_SSL\n\tbool \"ustream-ssl\"\n\tdepends on !BR2_STATIC_LIBS #libubox\n\tselect BR2_PACKAGE_LIBUBOX\n\tselect BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_MBEDTLS\n\thelp\n\t  ustream SSL wrapper\n\n\t  https://git.openwrt.org/?p=project/ustream-ssl.git;a=summary\n\ncomment \"ustream-ssl needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/ustream-ssl/ustream-ssl.hash",
    "content": "# Locally computed\nsha256  e77e579b718085c1447339e0fcd5385b85a783d5c92544e48a6b37b1695a7f39  ustream-ssl-68d09243b6fd4473004b27ff6483352e76e6af1a-br1.tar.gz\nsha256  cf28f0f01a57423983fa062eb0f04bb1a78891863cb58c53059c3d8cb52c1dd4  ustream-ssl.h\n"
  },
  {
    "path": "package/ustream-ssl/ustream-ssl.mk",
    "content": "################################################################################\n#\n# ustream-ssl\n#\n################################################################################\n\nUSTREAM_SSL_VERSION = 68d09243b6fd4473004b27ff6483352e76e6af1a\nUSTREAM_SSL_SITE = https://git.openwrt.org/project/ustream-ssl.git\nUSTREAM_SSL_SITE_METHOD = git\nUSTREAM_SSL_LICENSE = ISC\nUSTREAM_SSL_LICENSE_FILES = ustream-ssl.h\nUSTREAM_SSL_INSTALL_STAGING = YES\nUSTREAM_SSL_DEPENDENCIES = libubox\n\nifeq ($(BR2_PACKAGE_MBEDTLS),y)\nUSTREAM_SSL_DEPENDENCIES += mbedtls\nUSTREAM_SSL_CONF_OPTS += -DMBEDTLS=ON\nelse\nUSTREAM_SSL_DEPENDENCIES += openssl\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/utf8proc/Config.in",
    "content": "config BR2_PACKAGE_UTF8PROC\n\tbool \"utf8proc\"\n\thelp\n\t  A clean C library for processing UTF-8 Unicode data.\n\n\t  https://juliastrings.github.io/utf8proc\n"
  },
  {
    "path": "package/utf8proc/utf8proc.hash",
    "content": "# Locally calculated\nsha256  4c06a9dc4017e8a2438ef80ee371d45868bda2237a98b26554de7a95406b283b  utf8proc-2.6.1.tar.gz\nsha256  fbc720fcc90fb44396985646f67e4d19be03e0c0539f7138ed9dc6efba49dc49  LICENSE.md\n"
  },
  {
    "path": "package/utf8proc/utf8proc.mk",
    "content": "################################################################################\n#\n# utf8proc\n#\n################################################################################\n\nUTF8PROC_VERSION = 2.6.1\nUTF8PROC_SITE = $(call github,JuliaStrings,utf8proc,v$(UTF8PROC_VERSION))\nUTF8PROC_LICENSE = MIT\nUTF8PROC_LICENSE_FILES = LICENSE.md\nUTF8PROC_INSTALL_STAGING = YES\nUTF8PROC_SUPPORTS_IN_SOURCE_BUILD = NO\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/util-linux/0001-libuuid-include-c-h-to-cover-restrict-keyword.patch",
    "content": "From 5f9b88f43ba7f98f81bde3538d5f4e5cd1a6c01c Mon Sep 17 00:00:00 2001\nFrom: Karel Zak <kzak@redhat.com>\nDate: Thu, 5 Aug 2021 09:46:21 +0200\nSubject: libuuid: include c.h to cover restrict keyword\n\nReferences: https://github.com/karelzak/util-linux/issues/1405\nSigned-off-by: Karel Zak <kzak@redhat.com>\n\n[Retrieved from:\nhttps://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/commit/?id=5f9b88f43ba7f98f81bde3538d5f4e5cd1a6c01c]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n libuuid/src/unparse.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/libuuid/src/unparse.c b/libuuid/src/unparse.c\nindex f9a5e4315..ffeed2ed6 100644\n--- a/libuuid/src/unparse.c\n+++ b/libuuid/src/unparse.c\n@@ -33,6 +33,7 @@\n  */\n \n #include <stdio.h>\n+#include \"c.h\"\n \n #include \"uuidP.h\"\n \n-- \ncgit 1.2.3-1.el7\n\n"
  },
  {
    "path": "package/util-linux/0002-libblkid-don-t-mark-cache-as-probed-if-sys-not-available.patch",
    "content": "From 84d38ae3eca523ef990cb848563cc63de25266e6 Mon Sep 17 00:00:00 2001\nFrom: Karel Zak <kzak@redhat.com>\nDate: Fri, 19 Nov 2021 14:19:03 +0100\nSubject: [PATCH] libblkid: don't mark cache as \"probed\" if /sys not available\n\nFor \"mount --all\" we need to read the cache more than once in a short\ntime. The library checks the delay between probes, and if the delay is\ntoo short, it does not read devices. This is a problem on boot when there\nare no /sys, and the cache is empty. In this case, we need to check\nfor /sys until it's available constantly.\n\nhttps://github.com/util-linux/util-linux/issues/1492\nSigned-off-by: Karel Zak <kzak@redhat.com>\n\n[Retrieved from:\nhttps://github.com/util-linux/util-linux/commit/84d38ae3eca523ef990cb848563cc63de25266e6]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n libblkid/src/devname.c | 26 +++++++++++++++++---------\n libblkid/src/resolve.c |  2 +-\n libblkid/src/tag.c     |  8 +++++---\n 3 files changed, 23 insertions(+), 13 deletions(-)\n\ndiff --git a/libblkid/src/devname.c b/libblkid/src/devname.c\nindex 90a8245fc9..9a173e3489 100644\n--- a/libblkid/src/devname.c\n+++ b/libblkid/src/devname.c\n@@ -429,6 +429,8 @@ sysfs_probe_all(blkid_cache cache, int only_if_new, int only_removable)\n \tif (!sysfs)\n \t\treturn -BLKID_ERR_SYSFS;\n \n+\tDBG(DEVNAME, ul_debug(\" probe /sys/block\"));\n+\n \t/* scan /sys/block */\n \twhile ((dev = xreaddir(sysfs))) {\n \t\tDIR *dir = NULL;\n@@ -533,14 +535,18 @@ sysfs_probe_all(blkid_cache cache, int only_if_new, int only_removable)\n /*\n  * Read the device data for all available block devices in the system.\n  */\n-static int probe_all(blkid_cache cache, int only_if_new)\n+static int probe_all(blkid_cache cache, int only_if_new, int update_interval)\n {\n+\tint rc;\n+\n \tif (!cache)\n \t\treturn -BLKID_ERR_PARAM;\n \n \tif (cache->bic_flags & BLKID_BIC_FL_PROBED &&\n-\t    time(NULL) - cache->bic_time < BLKID_PROBE_INTERVAL)\n+\t    time(NULL) - cache->bic_time < BLKID_PROBE_INTERVAL) {\n+\t\tDBG(PROBE, ul_debug(\"don't re-probe [delay < %d]\", BLKID_PROBE_INTERVAL));\n \t\treturn 0;\n+\t}\n \n \tblkid_read_cache(cache);\n #ifdef VG_DIR\n@@ -548,7 +554,13 @@ static int probe_all(blkid_cache cache, int only_if_new)\n #endif\n \tubi_probe_all(cache, only_if_new);\n \n-\tsysfs_probe_all(cache, only_if_new, 0);\n+\trc = sysfs_probe_all(cache, only_if_new, 0);\n+\n+\t/* Don't mark the change as \"probed\" if /sys not avalable */\n+\tif (update_interval && rc == 0) {\n+\t\tcache->bic_time = time(NULL);\n+\t\tcache->bic_flags |= BLKID_BIC_FL_PROBED;\n+\t}\n \n \tblkid_flush_cache(cache);\n \treturn 0;\n@@ -567,11 +579,7 @@ int blkid_probe_all(blkid_cache cache)\n \tint ret;\n \n \tDBG(PROBE, ul_debug(\"Begin blkid_probe_all()\"));\n-\tret = probe_all(cache, 0);\n-\tif (ret == 0) {\n-\t\tcache->bic_time = time(NULL);\n-\t\tcache->bic_flags |= BLKID_BIC_FL_PROBED;\n-\t}\n+\tret = probe_all(cache, 0, 1);\n \tDBG(PROBE, ul_debug(\"End blkid_probe_all() [rc=%d]\", ret));\n \treturn ret;\n }\n@@ -589,7 +597,7 @@ int blkid_probe_all_new(blkid_cache cache)\n \tint ret;\n \n \tDBG(PROBE, ul_debug(\"Begin blkid_probe_all_new()\"));\n-\tret = probe_all(cache, 1);\n+\tret = probe_all(cache, 1, 0);\n \tDBG(PROBE, ul_debug(\"End blkid_probe_all_new() [rc=%d]\", ret));\n \treturn ret;\n }\ndiff --git a/libblkid/src/resolve.c b/libblkid/src/resolve.c\nindex 641b022860..16653fa8e1 100644\n--- a/libblkid/src/resolve.c\n+++ b/libblkid/src/resolve.c\n@@ -32,7 +32,7 @@ char *blkid_get_tag_value(blkid_cache cache, const char *tagname,\n \tblkid_cache c = cache;\n \tchar *ret = NULL;\n \n-\tDBG(TAG, ul_debug(\"looking for %s on %s\", tagname, devname));\n+\tDBG(TAG, ul_debug(\"looking for tag %s on %s device\", tagname, devname));\n \n \tif (!devname)\n \t\treturn NULL;\ndiff --git a/libblkid/src/tag.c b/libblkid/src/tag.c\nindex 390a648648..178336505f 100644\n--- a/libblkid/src/tag.c\n+++ b/libblkid/src/tag.c\n@@ -326,14 +326,14 @@ blkid_dev blkid_find_dev_with_tag(blkid_cache cache,\n \tblkid_dev\tdev;\n \tint\t\tpri;\n \tstruct list_head *p;\n-\tint\t\tprobe_new = 0;\n+\tint\t\tprobe_new = 0, probe_all = 0;\n \n \tif (!cache || !type || !value)\n \t\treturn NULL;\n \n \tblkid_read_cache(cache);\n \n-\tDBG(TAG, ul_debug(\"looking for %s=%s in cache\", type, value));\n+\tDBG(TAG, ul_debug(\"looking for tag %s=%s in cache\", type, value));\n \n try_again:\n \tpri = -1;\n@@ -366,9 +366,11 @@ blkid_dev blkid_find_dev_with_tag(blkid_cache cache,\n \t\tgoto try_again;\n \t}\n \n-\tif (!dev && !(cache->bic_flags & BLKID_BIC_FL_PROBED)) {\n+\tif (!dev && !probe_all\n+\t    && !(cache->bic_flags & BLKID_BIC_FL_PROBED)) {\n \t\tif (blkid_probe_all(cache) < 0)\n \t\t\treturn NULL;\n+\t\tprobe_all++;\n \t\tgoto try_again;\n \t}\n \treturn dev;\n"
  },
  {
    "path": "package/util-linux/Config.in",
    "content": "menuconfig BR2_PACKAGE_UTIL_LINUX\n\tbool \"util-linux\"\n\thelp\n\t  Various useful/essential linux libraries and utilities.\n\n\t  Things like mkfs, mkswap, swapon, fdisk, mount, dmesg, etc...\n\n\t  http://www.kernel.org/pub/linux/utils/util-linux/\n\nif BR2_PACKAGE_UTIL_LINUX\n\nconfig BR2_PACKAGE_UTIL_LINUX_LIBS\n\tbool\n\nconfig BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tbool \"libblkid\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Install libblkid.\n\nconfig BR2_PACKAGE_UTIL_LINUX_LIBFDISK\n\tbool \"libfdisk\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Install libfdisk.\n\nconfig BR2_PACKAGE_UTIL_LINUX_LIBMOUNT\n\tbool \"libmount\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\thelp\n\t  Install libmount.\n\nconfig BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS\n\tbool \"libsmartcols\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Install libsmartcols.\n\nconfig BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tbool \"libuuid\"\n\thelp\n\t  Install libuuid.\n\nconfig BR2_PACKAGE_UTIL_LINUX_BINARIES\n\tbool \"basic set\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBMOUNT\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBFDISK\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Install the basic set of util-linux binaries.\n\n\t  blkdiscard, blkid, blockdev, chcpu, choom, col, colcrt, colrm,\n\t  column, ctrlaltdel, dmesg, fdisk, fincore, findfs, findmnt,\n\t  flock, fsfreeze, fstrim, getopt, hexdump, ipcmk, isosize,\n\t  ldattach, look, lsblk, lscpu, lsipc, lslocks, lsns, mcookie,\n\t  mkfs, mkswap, namei, prlimit, readprofile, renice, rev,\n\t  rtcwake, script, scriptlive, scriptreplay, setarch, setsid,\n\t  sfdisk, swaplabel, swapoff, swapon, uuidgen, uuidparse,\n\t  whereis, wipefs\n\n\t  The setarch utility also installs architecture-specific\n\t  symlinks like linux32, linux64, uname26, i386 and x86_64.\n\nconfig BR2_PACKAGE_UTIL_LINUX_AGETTY\n\tbool \"agetty\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Alternative linux getty\n\nconfig BR2_PACKAGE_UTIL_LINUX_BFS\n\tbool \"bfs\"\n\thelp\n\t  SCO bfs filesystem support\n\nconfig BR2_PACKAGE_UTIL_LINUX_CAL\n\tbool \"cal\"\n\thelp\n\t  Display a calendar, or some part of it\n\nconfig BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH\n\tbool \"chfn/chsh\"\n\tdepends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU # linux-pam\n\tselect BR2_PACKAGE_LINUX_PAM\n\thelp\n\t  Change login shell, real user name and information\n\ncomment \"chfn/chsh needs a toolchain w/ wchar, locale, dynamic library\"\n\tdepends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \\\n\t\t|| BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_UTIL_LINUX_CHMEM\n\tbool \"chmem\"\n\thelp\n\t  Sets a particular size or range of memory online or offline\n\nconfig BR2_PACKAGE_UTIL_LINUX_CRAMFS\n\tbool \"cramfs utilities\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Utilities for compressed ROM file system (fsck.cramfs,\n\t  mkfs.cramfs)\n\nconfig BR2_PACKAGE_UTIL_LINUX_EJECT\n\tbool \"eject\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBMOUNT\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Eject removable media\n\nconfig BR2_PACKAGE_UTIL_LINUX_FALLOCATE\n\tbool \"fallocate\"\n\thelp\n\t  Preallocate space to a file\n\nconfig BR2_PACKAGE_UTIL_LINUX_FDFORMAT\n\tbool \"fdformat\"\n\thelp\n\t  Low-level format a floppy disk\n\nconfig BR2_PACKAGE_UTIL_LINUX_FSCK\n\tbool \"fsck\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBMOUNT\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Check and repair a linux filesystem\n\nconfig BR2_PACKAGE_UTIL_LINUX_HARDLINK\n\tbool \"hardlink\"\n\thelp\n\t  Consolidate duplicate files via hardlinks\n\nconfig BR2_PACKAGE_UTIL_LINUX_HWCLOCK\n\tbool \"hwclock\"\n\thelp\n\t  Query or set the hardware clock (RTC)\n\nconfig BR2_PACKAGE_UTIL_LINUX_IPCRM\n\tbool \"ipcrm\"\n\thelp\n\t  Remove certain IPC resources\n\nconfig BR2_PACKAGE_UTIL_LINUX_IPCS\n\tbool \"ipcs\"\n\thelp\n\t  Show information on IPC facilities\n\nconfig BR2_PACKAGE_UTIL_LINUX_KILL\n\tbool \"kill\"\n\thelp\n\t  Send a signal to a process\n\nconfig BR2_PACKAGE_UTIL_LINUX_LAST\n\tbool \"last\"\n\thelp\n\t  Show a listing of last logged in users\n\nconfig BR2_PACKAGE_UTIL_LINUX_LINE\n\tbool \"line\"\n\thelp\n\t  Read one line\n\nconfig BR2_PACKAGE_UTIL_LINUX_LOGGER\n\tbool \"logger\"\n\thelp\n\t  Enter messages into the system log\n\nconfig BR2_PACKAGE_UTIL_LINUX_LOGIN\n\tbool \"login\"\n\tdepends on BR2_ENABLE_LOCALE # linux-pam\n\tdepends on BR2_USE_WCHAR # linux-pam\n\tdepends on !BR2_STATIC_LIBS # linux-pam\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam\n\tdepends on BR2_USE_MMU # fork(), linux-pam\n\tselect BR2_PACKAGE_LINUX_PAM\n\thelp\n\t  Begin a session on the system\n\ncomment \"login needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library\"\n\tdepends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \\\n\t\t|| BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_UTIL_LINUX_LOSETUP\n\tbool \"losetup\"\n\tdepends on BR2_USE_MMU # libsmartcols\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS\n\thelp\n\t  Set up and control loop devices\n\nconfig BR2_PACKAGE_UTIL_LINUX_LSLOGINS\n\tbool \"lslogins\"\n\tdepends on BR2_USE_MMU # libsmartcols\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS\n\thelp\n\t  Display information about known users in the system\n\nconfig BR2_PACKAGE_UTIL_LINUX_LSMEM\n\tbool \"lsmem\"\n\tdepends on BR2_USE_MMU # libsmartcols\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS\n\thelp\n\t  List the ranges of available memory with their online status\n\nconfig BR2_PACKAGE_UTIL_LINUX_MESG\n\tbool \"mesg\"\n\thelp\n\t  Control write access to your terminal\n\nconfig BR2_PACKAGE_UTIL_LINUX_MINIX\n\tbool \"minix\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Minix filesystem support\n\nconfig BR2_PACKAGE_UTIL_LINUX_MORE\n\tbool \"more\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  File perusal filter for crt viewing\n\nconfig BR2_PACKAGE_UTIL_LINUX_MOUNT\n\tbool \"mount/umount\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBMOUNT\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Mount/unmount filesystems\n\nconfig BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT\n\tbool \"mountpoint\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBMOUNT\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  See if a directory is a mountpoint\n\nconfig BR2_PACKAGE_UTIL_LINUX_NEWGRP\n\tbool \"newgrp\"\n\thelp\n\t  Log in to a new group\n\nconfig BR2_PACKAGE_UTIL_LINUX_NOLOGIN\n\tbool \"nologin\"\n\thelp\n\t  Politely refuse a login\n\nconfig BR2_PACKAGE_UTIL_LINUX_NSENTER\n\tbool \"nsenter\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\thelp\n\t  Enter the namespaces of another process\n\ncomment \"nsenter needs a toolchain w/ headers >= 3.0\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\nconfig BR2_PACKAGE_UTIL_LINUX_PG\n\tbool \"pg\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Browse pagewise through text files\n\nconfig BR2_PACKAGE_UTIL_LINUX_PARTX\n\tbool \"partition utilities\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  Partition utilities (addpart, delpart, partx)\n\nconfig BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT\n\tbool \"pivot_root\"\n\thelp\n\t  Change the root filesystem\n\nconfig BR2_PACKAGE_UTIL_LINUX_RAW\n\tbool \"raw\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14\n\thelp\n\t  Build a linux raw character device\n\ncomment \"raw needs a toolchain w/ headers < 5.14\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14\n\nconfig BR2_PACKAGE_UTIL_LINUX_RENAME\n\tbool \"rename\"\n\thelp\n\t  Rename files\n\nconfig BR2_PACKAGE_UTIL_LINUX_RFKILL\n\tbool \"rfkill\"\n\tdepends on BR2_USE_MMU # libsmartcols\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS\n\thelp\n\t  Tool for enabling and disabling wireless devices. This new\n\t  implementation is based upon, and backward compatible with,\n\t  the original rfkill from Johannes Berg and Marcel Holtmann.\n\nconfig BR2_PACKAGE_UTIL_LINUX_RUNUSER\n\tbool \"runuser\"\n\tdepends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam\n\tdepends on BR2_USE_MMU # fork(), linux-pam\n\tselect BR2_PACKAGE_LINUX_PAM\n\thelp\n\t  Run a command with substitute user and group ID (does not need\n\t  to ask for a password, because it may be executed by the root\n\t  user only)\n\ncomment \"runuser needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library\"\n\tdepends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \\\n\t\t|| BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS\n\tbool \"scheduling utilities\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n\thelp\n\t  Scheduling utilities (chrt, ionice, taskset, uclampset)\n\ncomment \"scheduling utilities need a toolchain w/ headers >= 3.14\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n\nconfig BR2_PACKAGE_UTIL_LINUX_SETPRIV\n\tbool \"setpriv\"\n\tselect BR2_PACKAGE_LIBCAP_NG\n\thelp\n\t  Run a program with different Linux privilege settings\n\nconfig BR2_PACKAGE_UTIL_LINUX_SETTERM\n\tbool \"setterm\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Set terminal attributes\n\nconfig BR2_PACKAGE_UTIL_LINUX_SU\n\tbool \"su\"\n\tdepends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam\n\tdepends on BR2_USE_MMU # fork(), linux-pam\n\tselect BR2_PACKAGE_LINUX_PAM\n\thelp\n\t  Run a command with substitute user and group ID\n\ncomment \"su needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library\"\n\tdepends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \\\n\t\t|| BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_UTIL_LINUX_SULOGIN\n\tbool \"sulogin\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Single-user login\n\nconfig BR2_PACKAGE_UTIL_LINUX_SWITCH_ROOT\n\tbool \"switch_root\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Switch to another filesystem as the root of the mount tree\n\nconfig BR2_PACKAGE_UTIL_LINUX_TUNELP\n\tbool \"tunelp\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Set various parameters for the lp device\n\nconfig BR2_PACKAGE_UTIL_LINUX_UL\n\tbool \"ul\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Do underlining\n\nconfig BR2_PACKAGE_UTIL_LINUX_UNSHARE\n\tbool \"unshare\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Run program with some namespaces unshared from parent\n\nconfig BR2_PACKAGE_UTIL_LINUX_UTMPDUMP\n\tbool \"utmpdump\"\n\thelp\n\t  Dump UTMP and WTMP files in raw format\n\nconfig BR2_PACKAGE_UTIL_LINUX_UUIDD\n\tbool \"uuidd\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  UUID generation daemon\n\nconfig BR2_PACKAGE_UTIL_LINUX_VIPW\n\tbool \"vipw\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Edit the password, group, shadow-password or shadow-group file\n\nconfig BR2_PACKAGE_UTIL_LINUX_WALL\n\tbool \"wall\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  Send a message to everybody's terminal\n\nconfig BR2_PACKAGE_UTIL_LINUX_WIPEFS\n\tbool \"wipefs\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS\n\thelp\n\t  wipefs can erase filesystem, raid or partition-table\n\t  signatures (magic strings) from the specified device\n\t  to make the signatures invisible for libblkid. wipefs\n\t  does not erase the filesystem itself nor any other data\n\t  from the device.\n\nconfig BR2_PACKAGE_UTIL_LINUX_WDCTL\n\tbool \"wdctl\"\n\tdepends on BR2_USE_MMU # libsmartcols\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS\n\thelp\n\t  Shows hardware watchdog status\n\nconfig BR2_PACKAGE_UTIL_LINUX_WRITE\n\tbool \"write\"\n\thelp\n\t  Send a message to another user\n\nconfig BR2_PACKAGE_UTIL_LINUX_ZRAMCTL\n\tbool \"zramctl\"\n\tdepends on BR2_USE_MMU # libsmartcols\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS\n\thelp\n\t  Set up and control zram devices\n\nendif\n"
  },
  {
    "path": "package/util-linux/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_UTIL_LINUX\n\tbool \"host util-linux\"\n\thelp\n\t  Various useful/essential linux libraries and utilities.\n\n\t  Things like mkfs, mkswap, swapon, fdisk, mount, dmesg, etc...\n\n\t  http://www.kernel.org/pub/linux/utils/util-linux/\n"
  },
  {
    "path": "package/util-linux/su.pam",
    "content": "auth\t\tsufficient\tpam_rootok.so\nauth\t\trequired\tpam_wheel.so use_uid\nauth\t\trequired\tpam_env.so\nauth\t\trequired\tpam_unix.so nullok\n\naccount\t\trequired\tpam_unix.so\n\npassword\trequired\tpam_unix.so nullok\n\nsession\t\trequired\tpam_selinux.so close\nsession\t\trequired\tpam_limits.so\nsession\t\trequired\tpam_env.so\nsession\t\trequired\tpam_unix.so\nsession\t\toptional\tpam_lastlog.so\nsession\t\trequired\tpam_selinux.so open\n"
  },
  {
    "path": "package/util-linux/util-linux-libs/util-linux-libs.mk",
    "content": "################################################################################\n#\n# util-linux-libs\n#\n################################################################################\n\n# Please keep this file as similar as possible to util-linux.mk\n\nUTIL_LINUX_LIBS_VERSION = $(UTIL_LINUX_VERSION)\nUTIL_LINUX_LIBS_SOURCE = $(UTIL_LINUX_SOURCE)\nUTIL_LINUX_LIBS_SITE = $(UTIL_LINUX_SITE)\nUTIL_LINUX_LIBS_DL_SUBDIR = $(UTIL_LINUX_DL_SUBDIR)\nUTIL_LINUX_LIBS_CPE_ID_VENDOR = $(UTIL_LINUX_CPE_ID_VENDOR)\nUTIL_LINUX_LIBS_CPE_ID_PRODUCT = $(UTIL_LINUX_CPE_ID_PRODUCT)\n\n# README.licensing claims that some files are GPL-2.0 only, but this is not\n# true. Some files are GPL-3.0+ but only in tests and optionally in hwclock\n# (but we disable that option). rfkill uses an ISC-style license.\nUTIL_LINUX_LIBS_LICENSE = LGPL-2.1+ (libblkid, libfdisk, libmount), BSD-3-Clause (libuuid)\nUTIL_LINUX_LIBS_LICENSE_FILES = README.licensing \\\n\tDocumentation/licenses/COPYING.BSD-3-Clause \\\n\tDocumentation/licenses/COPYING.LGPL-2.1-or-later\n\nUTIL_LINUX_LIBS_INSTALL_STAGING = YES\nUTIL_LINUX_LIBS_DEPENDENCIES = \\\n\thost-pkgconf \\\n\t$(TARGET_NLS_DEPENDENCIES)\nUTIL_LINUX_LIBS_CONF_OPTS += \\\n\t--disable-rpath \\\n\t--disable-makeinstall-chown\n\nUTIL_LINUX_LIBS_LINK_LIBS = $(TARGET_NLS_LIBS)\n\n# Prevent the installation from attempting to move shared libraries from\n# ${usrlib_execdir} (/usr/lib) to ${libdir} (/lib), since both paths are\n# the same when merged usr is in use.\nifeq ($(BR2_ROOTFS_MERGED_USR),y)\nUTIL_LINUX_LIBS_CONF_OPTS += --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib\nendif\n\n# systemd depends on util-linux-libs so we disable systemd support\nUTIL_LINUX_LIBS_CONF_OPTS += \\\n\t--without-systemd \\\n\t--with-systemdsystemunitdir=no\n\n# systemd/eudev depend on util-linux-libs so we disable udev support\nUTIL_LINUX_LIBS_CONF_OPTS += --without-udev\n\n# No libs use wchar\nUTIL_LINUX_LIBS_CONF_OPTS += --disable-widechar\n\n# No libs use ncurses\nUTIL_LINUX_LIBS_CONF_OPTS += --without-ncursesw --without-ncurses\n\n# Unfortunately, the util-linux does LIBS=\"\" at the end of its\n# configure script. So we have to pass the proper LIBS value when\n# calling the configure script to make configure tests pass properly,\n# and then pass it again at build time.\nUTIL_LINUX_LIBS_CONF_ENV += LIBS=\"$(UTIL_LINUX_LIBS_LINK_LIBS)\"\nUTIL_LINUX_LIBS_MAKE_OPTS += LIBS=\"$(UTIL_LINUX_LIBS_LINK_LIBS)\"\n\n# libmount optionally uses selinux\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT)$(BR2_PACKAGE_LIBSELINUX),yy)\nUTIL_LINUX_LIBS_DEPENDENCIES += libselinux\nUTIL_LINUX_LIBS_CONF_OPTS += --with-selinux\nelse\nUTIL_LINUX_LIBS_CONF_OPTS += --without-selinux\nendif\n\n# Disable utilities\nUTIL_LINUX_LIBS_CONF_OPTS += \\\n\t--disable-all-programs \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),--enable-libblkid,--disable-libblkid) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBFDISK),--enable-libfdisk,--disable-libfdisk) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),--enable-libmount,--disable-libmount) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS),--enable-libsmartcols,--disable-libsmartcols) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBUUID),--enable-libuuid,--disable-libuuid)\n\n# libmount python bindings are separate, will be installed by full util-linux\nUTIL_LINUX_LIBS_CONF_OPTS += --without-python --disable-pylibmount\n\n# No libs use readline\nUTIL_LINUX_LIBS_CONF_OPTS += --without-readline\n\n# No libs use audit\nUTIL_LINUX_LIBS_CONF_OPTS += --without-audit\n\n# No libs use libmagic\nUTIL_LINUX_LIBS_CONF_OPTS += --without-libmagic\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/util-linux/util-linux.hash",
    "content": "# From https://www.kernel.org/pub/linux/utils/util-linux/v2.37/sha256sums.asc\nsha256  6a0764c1aae7fb607ef8a6dd2c0f6c47d5e5fd27aa08820abaad9ec14e28e9d9  util-linux-2.37.2.tar.xz\n# License files, locally calculated\nsha256  869660b5269f4f40a8a679da7f403ea3a6e71d46087aab5e14871b09bcb55955  README.licensing\nsha256  9b718a9460fed5952466421235bc79eb49d4e9eacc920d7a9dd6285ab8fd6c6d  Documentation/licenses/COPYING.BSD-3-Clause\nsha256  ba7640f00d93e72e92b94b9d71f25ec53bac2f1682f5c4adcccb0018359f60f8  Documentation/licenses/COPYING.BSD-4-Clause-UC\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  Documentation/licenses/COPYING.GPL-2.0-or-later\nsha256  e53348ce276358e9997014071c5294b36a18c4b34f32f00ee57b9acce0aafd63  Documentation/licenses/COPYING.ISC\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  Documentation/licenses/COPYING.LGPL-2.1-or-later\n"
  },
  {
    "path": "package/util-linux/util-linux.mk",
    "content": "################################################################################\n#\n# util-linux\n#\n################################################################################\n\n# When making changes to this file, please check if\n# util-linux-libs/util-linux-libs.mk needs to be updated accordingly as well.\n\nUTIL_LINUX_VERSION_MAJOR = 2.37\nUTIL_LINUX_VERSION = $(UTIL_LINUX_VERSION_MAJOR).2\nUTIL_LINUX_SOURCE = util-linux-$(UTIL_LINUX_VERSION).tar.xz\nUTIL_LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/util-linux/v$(UTIL_LINUX_VERSION_MAJOR)\n\n# README.licensing claims that some files are GPL-2.0 only, but this is not\n# true. Some files are GPL-3.0+ but only in tests and optionally in hwclock\n# (but we disable that option). rfkill uses an ISC-style license.\nUTIL_LINUX_LICENSE = GPL-2.0+, BSD-4-Clause, LGPL-2.1+ (libblkid, libfdisk, libmount), BSD-3-Clause (libuuid), ISC (rfkill)\nUTIL_LINUX_LICENSE_FILES = README.licensing \\\n\tDocumentation/licenses/COPYING.BSD-3-Clause \\\n\tDocumentation/licenses/COPYING.BSD-4-Clause-UC \\\n\tDocumentation/licenses/COPYING.GPL-2.0-or-later \\\n\tDocumentation/licenses/COPYING.ISC \\\n\tDocumentation/licenses/COPYING.LGPL-2.1-or-later\n\nUTIL_LINUX_CPE_ID_VENDOR = kernel\nUTIL_LINUX_INSTALL_STAGING = YES\nUTIL_LINUX_DEPENDENCIES = \\\n\thost-pkgconf \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBS),util-linux-libs) \\\n\t$(TARGET_NLS_DEPENDENCIES)\nUTIL_LINUX_CONF_OPTS += \\\n\t--disable-rpath \\\n\t--disable-makeinstall-chown\n\nUTIL_LINUX_LINK_LIBS = $(TARGET_NLS_LIBS)\n\nHOST_UTIL_LINUX_DEPENDENCIES = host-pkgconf\n\n# We also don't want the host-python dependency\nHOST_UTIL_LINUX_CONF_OPTS = \\\n\t--without-systemd \\\n\t--with-systemdsystemunitdir=no \\\n\t--without-python\n\nifneq ($(BR2_PACKAGE_UTIL_LINUX_BINARIES)$(BR2_PACKAGE_UTIL_LINUX_CRAMFS)$(BR2_PACKAGE_UTIL_LINUX_FSCK)$(BR2_PACKAGE_UTIL_LINUX_LOSETUP),)\nUTIL_LINUX_SELINUX_MODULES = fstools\nendif\n\n# Prevent the installation from attempting to move shared libraries from\n# ${usrlib_execdir} (/usr/lib) to ${libdir} (/lib), since both paths are\n# the same when merged usr is in use.\nifeq ($(BR2_ROOTFS_MERGED_USR),y)\nUTIL_LINUX_CONF_OPTS += --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nUTIL_LINUX_CONF_OPTS += --with-systemd --with-systemdsystemunitdir=/usr/lib/systemd/system\nUTIL_LINUX_DEPENDENCIES += systemd\nelse\nUTIL_LINUX_CONF_OPTS += --without-systemd --with-systemdsystemunitdir=no\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nUTIL_LINUX_CONF_OPTS += --with-udev\nUTIL_LINUX_DEPENDENCIES += udev\nelse\nUTIL_LINUX_CONF_OPTS += --without-udev\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES),y)\nUTIL_LINUX_DEPENDENCIES += ncurses\nifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)\nUTIL_LINUX_CONF_OPTS += --with-ncursesw\nUTIL_LINUX_CONF_ENV += NCURSESW6_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS)\nelse\nUTIL_LINUX_CONF_OPTS += --without-ncursesw --with-ncurses --disable-widechar\nUTIL_LINUX_CONF_ENV += NCURSES6_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS)\nendif\nelse\nifeq ($(BR2_USE_WCHAR),y)\nUTIL_LINUX_CONF_OPTS += --enable-widechar\nelse\nUTIL_LINUX_CONF_OPTS += --disable-widechar\nendif\nUTIL_LINUX_CONF_OPTS += --without-ncursesw --without-ncurses\nendif\n\n# Unfortunately, the util-linux does LIBS=\"\" at the end of its\n# configure script. So we have to pass the proper LIBS value when\n# calling the configure script to make configure tests pass properly,\n# and then pass it again at build time.\nUTIL_LINUX_CONF_ENV += LIBS=\"$(UTIL_LINUX_LINK_LIBS)\"\nUTIL_LINUX_MAKE_OPTS += LIBS=\"$(UTIL_LINUX_LINK_LIBS)\"\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nUTIL_LINUX_DEPENDENCIES += libselinux\nUTIL_LINUX_CONF_OPTS += --with-selinux\nelse\nUTIL_LINUX_CONF_OPTS += --without-selinux\ndefine UTIL_LINUX_SELINUX_PAMFILES_TWEAK\n\t$(foreach f,su su-l,\n\t\t$(SED) '/^.*pam_selinux.so.*$$/d' \\\n\t\t\t$(TARGET_DIR)/etc/pam.d/$(f)\n\t)\nendef\nendif\n\n# Used by setpriv\nUTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBCAP_NG),libcap-ng)\n\n# Used by cramfs utils\nUTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib)\n\n# Used by login-utils\nUTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_LINUX_PAM),linux-pam)\n\n# Used by hardlink\nUTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_PCRE2),pcre2)\n\n# Disable/Enable utilities\nUTIL_LINUX_CONF_OPTS += \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_BINARIES),--enable-all-programs,--disable-all-programs) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_AGETTY),--enable-agetty,--disable-agetty) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_BFS),--enable-bfs,--disable-bfs) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_CAL),--enable-cal,--disable-cal) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH),--enable-chfn-chsh,--disable-chfn-chsh) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_CHMEM),--enable-chmem,--disable-chmem) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_CRAMFS),--enable-cramfs,--disable-cramfs) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_EJECT),--enable-eject,--disable-eject) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_FALLOCATE),--enable-fallocate,--disable-fallocate) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_FDFORMAT),--enable-fdformat,--disable-fdformat) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_FSCK),--enable-fsck,--disable-fsck) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_HARDLINK),--enable-hardlink,--disable-hardlink) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_HWCLOCK),--enable-hwclock --disable-hwclock-gplv3,--disable-hwclock) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_IPCRM),--enable-ipcrm,--disable-ipcrm) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_IPCS),--enable-ipcs,--disable-ipcs) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_KILL),--enable-kill,--disable-kill) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LAST),--enable-last,--disable-last) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),--enable-libblkid,--disable-libblkid) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBFDISK),--enable-libfdisk,--disable-libfdisk) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),--enable-libmount,--disable-libmount) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS),--enable-libsmartcols,--disable-libsmartcols) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LIBUUID),--enable-libuuid,--disable-libuuid) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LINE),--enable-line,--disable-line) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LOGGER),--enable-logger,--disable-logger) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LOGIN),--enable-login,--disable-login) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LOSETUP),--enable-losetup,--disable-losetup) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LSLOGINS),--enable-lslogins,--disable-lslogins) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_LSMEM),--enable-lsmem,--disable-lsmem) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_MESG),--enable-mesg,--disable-mesg) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_MINIX),--enable-minix,--disable-minix) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_MORE),--enable-more,--disable-more) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_MOUNT),--enable-mount,--disable-mount) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT),--enable-mountpoint,--disable-mountpoint) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_NEWGRP),--enable-newgrp,--disable-newgrp) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_NOLOGIN),--enable-nologin,--disable-nologin) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_NSENTER),--enable-nsenter,--disable-nsenter) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_PARTX),--enable-partx,--disable-partx) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_PG),--enable-pg,--disable-pg) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT),--enable-pivot_root,--disable-pivot_root) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_RAW),--enable-raw,--disable-raw) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_RENAME),--enable-rename,--disable-rename) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_RFKILL),--enable-rfkill,--disable-rfkill) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_RUNUSER),--enable-runuser,--disable-runuser) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS),--enable-schedutils,--disable-schedutils) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_SETPRIV),--enable-setpriv,--disable-setpriv) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_SETTERM),--enable-setterm,--disable-setterm) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_SU),--enable-su,--disable-su) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_SULOGIN),--enable-sulogin,--disable-sulogin) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_SWITCH_ROOT),--enable-switch_root,--disable-switch_root) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_TUNELP),--enable-tunelp,--disable-tunelp) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_UL),--enable-ul,--disable-ul) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_UNSHARE),--enable-unshare,--disable-unshare) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_UTMPDUMP),--enable-utmpdump,--disable-utmpdump) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_UUIDD),--enable-uuidd,--disable-uuidd) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_VIPW),--enable-vipw,--disable-vipw) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_WALL),--enable-wall,--disable-wall) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_WDCTL),--enable-wdctl,--disable-wdctl) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_WIPEFS),--enable-wipefs,--disable-wipefs) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_WRITE),--enable-write,--disable-write) \\\n\t$(if $(BR2_PACKAGE_UTIL_LINUX_ZRAMCTL),--enable-zramctl,--disable-zramctl)\n\n# In the host version of util-linux, we only require libuuid and\n# libmount (plus libblkid as an indirect dependency of libmount).\n# So disable all of the programs, unless BR2_PACKAGE_HOST_UTIL_LINUX is set\n\nHOST_UTIL_LINUX_CONF_OPTS += \\\n\t--enable-libblkid \\\n\t--enable-libmount \\\n\t--enable-libuuid \\\n\t--without-libmagic \\\n\t--without-ncurses \\\n\t--without-ncursesw \\\n\t--without-tinfo\n\nifeq ($(BR2_PACKAGE_HOST_UTIL_LINUX),y)\nHOST_UTIL_LINUX_CONF_OPTS += --disable-makeinstall-chown\n# disable commands that have ncurses dependency, as well as\n# other ones that are useless on the host\nHOST_UTIL_LINUX_CONF_OPTS += \\\n\t--disable-agetty \\\n\t--disable-chfn-chsh \\\n\t--disable-chmem \\\n\t--disable-login \\\n\t--disable-lslogins \\\n\t--disable-mesg \\\n\t--disable-more \\\n\t--disable-newgrp \\\n\t--disable-nologin \\\n\t--disable-nsenter \\\n\t--disable-pg \\\n\t--disable-rfkill \\\n\t--disable-runuser \\\n\t--disable-schedutils \\\n\t--disable-setpriv \\\n\t--disable-setterm \\\n\t--disable-su \\\n\t--disable-sulogin \\\n\t--disable-tunelp \\\n\t--disable-ul \\\n\t--disable-unshare \\\n\t--disable-uuidd \\\n\t--disable-vipw \\\n\t--disable-wall \\\n\t--disable-wdctl \\\n\t--disable-write \\\n\t--disable-zramctl\n# Used by cramfs utils\nHOST_UTIL_LINUX_DEPENDENCIES += host-zlib\nelse\nHOST_UTIL_LINUX_CONF_OPTS += --disable-all-programs\nendif\n\n# Install libmount Python bindings\nifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y)\nUTIL_LINUX_CONF_OPTS += --with-python\nUTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,python3)\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y)\nUTIL_LINUX_CONF_OPTS += --enable-pylibmount\nelse\nUTIL_LINUX_CONF_OPTS += --disable-pylibmount\nendif\nelse\nUTIL_LINUX_CONF_OPTS += --without-python\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nUTIL_LINUX_CONF_OPTS += --with-readline\nUTIL_LINUX_LINK_LIBS += $(if $(BR2_STATIC_LIBS),-lcurses)\nUTIL_LINUX_DEPENDENCIES += readline\nelse\nUTIL_LINUX_CONF_OPTS += --without-readline\nendif\n\nifeq ($(BR2_PACKAGE_AUDIT),y)\nUTIL_LINUX_CONF_OPTS += --with-audit\nUTIL_LINUX_DEPENDENCIES += audit\nelse\nUTIL_LINUX_CONF_OPTS += --without-audit\nendif\n\nifeq ($(BR2_PACKAGE_FILE),y)\nUTIL_LINUX_CONF_OPTS += --with-libmagic\nUTIL_LINUX_DEPENDENCIES += file\nelse\nUTIL_LINUX_CONF_OPTS += --without-libmagic\nendif\n\n# Install PAM configuration files\nifeq ($(BR2_PACKAGE_UTIL_LINUX_SU)$(BR2_PACKAGE_LINUX_PAM),yy)\ndefine UTIL_LINUX_INSTALL_PAMFILES\n\t$(INSTALL) -D -m 0644 package/util-linux/su.pam \\\n\t\t$(TARGET_DIR)/etc/pam.d/su\n\t$(INSTALL) -D -m 0644 package/util-linux/su.pam \\\n\t\t$(TARGET_DIR)/etc/pam.d/su-l\n\t$(UTIL_LINUX_SELINUX_PAMFILES_TWEAK)\nendef\nUTIL_LINUX_POST_INSTALL_TARGET_HOOKS += UTIL_LINUX_INSTALL_PAMFILES\nendif\n\n# Install agetty->getty symlink to avoid breakage when there's no busybox\nifeq ($(BR2_PACKAGE_UTIL_LINUX_AGETTY),y)\nifeq ($(BR2_PACKAGE_BUSYBOX),)\ndefine UTIL_LINUX_GETTY_SYMLINK\n\tln -sf agetty $(TARGET_DIR)/sbin/getty\nendef\nendif\nendif\n\nUTIL_LINUX_POST_INSTALL_TARGET_HOOKS += UTIL_LINUX_GETTY_SYMLINK\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n\n# Must be included after the autotools-package call, to make sure all variables\n# are available\ninclude package/util-linux/util-linux-libs/util-linux-libs.mk\n"
  },
  {
    "path": "package/utp_com/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_UTP_COM\n\tbool \"host utp_com\"\n\thelp\n\t  This package is used to send commands to hardware\n\t  via Freescale's UTP protocol (similar to MFGTools)\n\n\t  https://github.com/ixonos/utp_com\n"
  },
  {
    "path": "package/utp_com/utp_com.hash",
    "content": "# locally computed\nsha256  8b5ba0058a78de69faf6822bb10b457fff2f9e55dc112ccb81c35214b061c6e6 utp_com-dee512ced1e9367d223d22f10797fbf9aeacfab6.tar.gz\nsha256  a45d0bb572ed792ed34627a72621834b3ba92aab6e2cc4e04301dee7a728d753 LICENSE\n"
  },
  {
    "path": "package/utp_com/utp_com.mk",
    "content": "################################################################################\n#\n# utp_com\n#\n################################################################################\n\nUTP_COM_VERSION = dee512ced1e9367d223d22f10797fbf9aeacfab6\nUTP_COM_SITE = $(call github,freescale,utp_com,$(UTP_COM_VERSION))\nUTP_COM_LICENSE = GPL-2.0+\nUTP_COM_LICENSE_FILES = LICENSE\nHOST_UTP_COM_DEPENDENCIES = host-sg3_utils\n\ndefine HOST_UTP_COM_BUILD_CMDS\n\t$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_UTP_COM_INSTALL_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/utp_com $(HOST_DIR)/bin/utp_com\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/uvw/Config.in",
    "content": "config BR2_PACKAGE_UVW\n\tbool \"uvw\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv\n\tdepends on BR2_USE_MMU # libuv\n\tdepends on !BR2_STATIC_LIBS # libuv\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17\n\tselect BR2_PACKAGE_LIBUV\n\thelp\n\t  Header-only, event based, tiny and easy to use\n\t  libuv wrapper in modern C++.\n\n\t  https://github.com/skypjack/uvw\n\ncomment \"uvw needs a toolchain w/ NPTL, dynamic library, C++, gcc >= 7\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS || \\\n\t\t!BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n"
  },
  {
    "path": "package/uvw/uvw.hash",
    "content": "# Locally calculated\nsha256  30b0ba97a94d5e652490c6b1b32c95e608263f21cf3bc606308d09b3e3a114bf  uvw-2.10.0_libuv_v1.42.tar.gz\nsha256  5de32af2469480cf3261c9781962e0887366666ba8ee1f4a32c386c77fc50c88  LICENSE\n"
  },
  {
    "path": "package/uvw/uvw.mk",
    "content": "################################################################################\n#\n# uvw\n#\n################################################################################\n\nUVW_VERSION = 2.10.0_libuv_v1.42\nUVW_SITE = $(call github,skypjack,uvw,v$(UVW_VERSION))\nUVW_INSTALL_STAGING = YES\nUVW_INSTALL_TARGET = NO\nUVW_SUPPORTS_IN_SOURCE_BUILD = NO\nUVW_DEPENDENCIES = libuv\nUVW_LICENSE = MIT\nUVW_LICENSE_FILES = LICENSE\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/ux500-firmware/Config.in",
    "content": "config BR2_PACKAGE_UX500_FIRMWARE\n\tbool \"ux500-firmware\"\n\thelp\n\t  This package provides various binary firmware files (closed\n\t  binary blobs) for the Azurewave AW-NH580 combo module (wifi,\n\t  bt, gps).\n\n\t  https://launchpad.net/~igloocommunity-maintainers/+archive/snowball/+files/\n"
  },
  {
    "path": "package/ux500-firmware/ux500-firmware.hash",
    "content": "# locally computed hash\nsha256  81633274a9157c076e5e09b5addd81fbcef504b829fc801041cea50eea774bcd  ux500-firmware_1.1.3-6linaro1.tar.gz\nsha256  b5bbc3fb3ff2f8e165b3bf60b25702d8970b3d7fe88b1c883f20615d550a7cb2  license.txt\n"
  },
  {
    "path": "package/ux500-firmware/ux500-firmware.mk",
    "content": "################################################################################\n#\n# ux500-firmware\n#\n################################################################################\n\nUX500_FIRMWARE_VERSION = 1.1.3-6\nUX500_FIRMWARE_SOURCE = ux500-firmware_$(UX500_FIRMWARE_VERSION)linaro1.tar.gz\nUX500_FIRMWARE_SITE = https://launchpad.net/~igloocommunity-maintainers/+archive/snowball/+files\nUX500_FIRMWARE_LICENSE = Snowball click-wrap license\nUX500_FIRMWARE_LICENSE_FILES = license.txt\nUX500_FIRMWARE_REDISTRIBUTE = NO\n\n# The CG2900 linux driver has to load firmware named CG29XX_* but the firmware\n# filenames contained in this package are CG2900_* hence the code below\ndefine UX500_FIRMWARE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install\n\tfor f in $(TARGET_DIR)/lib/firmware/CG2900* ; do \\\n\t\tmv $$f $${f/CG2900/CG29XX}; \\\n\tdone\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/v4l2cpp/0001-no-log4cpp.patch.bak",
    "content": "diff --git a/Makefile b/Makefile\nindex a51b316..60b801b 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -5,10 +5,6 @@ CXX ?= $(CROSS)g++\n AR ?= $(CROSS)ar\n PREFIX?=/usr\n \n-ifneq ($(wildcard $(SYSROOT)$(PREFIX)/include/log4cpp/Category.hh),)\n-CXXFLAGS += -DHAVE_LOG4CPP -I $(SYSROOT)$(PREFIX)/include\n-endif\n-\n V4L2WRAPPER_CPP:=$(wildcard src/*.cpp)\n V4L2WRAPPER_OBJ:=$(V4L2WRAPPER_CPP:%.cpp=%.o)\n \n"
  },
  {
    "path": "package/v4l2cpp/0001-shared-lib.patch",
    "content": "diff --git a/Makefile b/Makefile\nindex a51b316..7291248 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -5,16 +5,12 @@ CXX ?= $(CROSS)g++\n AR ?= $(CROSS)ar\n PREFIX?=/usr\n \n-ifneq ($(wildcard $(SYSROOT)$(PREFIX)/include/log4cpp/Category.hh),)\n-CXXFLAGS += -DHAVE_LOG4CPP -I $(SYSROOT)$(PREFIX)/include\n-endif\n-\n V4L2WRAPPER_CPP:=$(wildcard src/*.cpp)\n V4L2WRAPPER_OBJ:=$(V4L2WRAPPER_CPP:%.cpp=%.o)\n \n .DEFAULT_GOAL := all\n \n-all: libv4l2wrapper.a\n+all: libv4l2wrapper.a libv4l2wrapper.so\n \n %.o: %.cpp\n \t$(CXX) -c -o $@ $< $(CXXFLAGS)\n@@ -22,12 +18,14 @@ all: libv4l2wrapper.a\n libv4l2wrapper.a: $(V4L2WRAPPER_OBJ)\n \t$(AR) rcs $@ $^\n \n+libv4l2wrapper.so: $(V4L2WRAPPER_OBJ)\n+\t$(CXX) -shared -fPIC $(CXXFLAGS) -o $@ $^\n \n clean:\n-\t-@$(RM) *.a $(V4L2WRAPPER_OBJ)\n+\t-@$(RM) *.a *.so $(V4L2WRAPPER_OBJ)\n \n install:\n \tmkdir -p $(PREFIX)/include/libv4l2cpp/\n \tinstall -D -m 0755 inc/*.h $(PREFIX)/include/libv4l2cpp/\n \tinstall -D -m 0755 *.a $(PREFIX)/lib\n-\n+\tinstall -D -m 0755 *.so $(PREFIX)/lib\n"
  },
  {
    "path": "package/v4l2cpp/Config.in",
    "content": "config BR2_PACKAGE_V4L2CPP\n\tbool \"v4l2cpp\"\n\thelp\n\t  Build the V4L2 C++ Wrapper for target use.\n"
  },
  {
    "path": "package/v4l2cpp/v4l2cpp.mk",
    "content": "#############################################################\n#\n# v4l2cpp\n#\n#############################################################\n\nV4L2CPP_VERSION=021d887dc531bcf74c766cb413f87e8fc92579e3\nV4L2CPP_SITE = https://github.com/jasaw/libv4l2cpp.git\nV4L2CPP_SITE_METHOD = git\nV4L2CPP_LICENSE = UNLICENSE\nV4L2CPP_LICENSE_FILES = LICENSE\nV4L2CPP_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_STATIC_LIBS),y)\nV4L2CPP_CONFIG_TARGET = linux\nV4L2CPP_LIBRARY_LINK = $(TARGET_AR) cr\nelse\nV4L2CPP_CONFIG_TARGET = linux-with-shared-libraries\nV4L2CPP_LIBRARY_LINK = $(TARGET_CC) -o\nV4L2CPP_CFLAGS += -fPIC\nendif\n\nifndef ($(BR2_ENABLE_LOCALE),y)\nV4L2CPP_CFLAGS += -DLOCALE_NOT_USED\nendif\n\ndefine V4L2CPP_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" CXX=\"$(TARGET_CXX)\" AR=\"$(TARGET_AR)\" EXTRA_CXXFLAGS=\"$(V4L2CPP_CFLAGS)\" -C $(@D) all\nendef\n\ndefine V4L2CPP_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) PREFIX=\"$(STAGING_DIR)/usr\" -C $(@D) install\n\t$(INSTALL) -D -m 0755 $(@D)/libv4l2wrapper.so $(TARGET_DIR)/usr/lib\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/v4l2grab/Config.in",
    "content": "config BR2_PACKAGE_V4L2GRAB\n\tbool \"v4l2grab\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libv4l\n\tdepends on BR2_USE_MMU # libv4l\n\tdepends on !BR2_STATIC_LIBS # libv4l\n\tdepends on BR2_INSTALL_LIBSTDCPP # libv4l\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # libv4l\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBV4L\n\thelp\n\t  Utility for grabbing JPEGs form V4L2 devices. This tool is\n\t  similar to v4l2grab available from libv4l contrib directory,\n\t  but provides additional features such as JPEG output.\n\n\t  http://www.twam.info/software/v4l2grab-grabbing-jpegs-from-v4l2-devices\n\ncomment \"v4l2grab needs a toolchain w/ threads, dynamic library, C++ and headers >= 3.0\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n"
  },
  {
    "path": "package/v4l2grab/v4l2grab.hash",
    "content": "# Locally calculated\nsha256  9a8d0d1ca5ac9fb9f66e00300bb3265d156cf1cb67eb30f6e6637c83b0b507a1  v4l2grab-f8d8844d52387b3db7b8736f5e86156d9374f781.tar.gz\nsha256  7fa0d45fe86fda646fada21ecfa7672e951b01c521aecd358f586facd65fb5b3  LICENSE.md\n"
  },
  {
    "path": "package/v4l2grab/v4l2grab.mk",
    "content": "################################################################################\n#\n# v4l2grab\n#\n################################################################################\n\nV4L2GRAB_VERSION = f8d8844d52387b3db7b8736f5e86156d9374f781\nV4L2GRAB_SITE = $(call github,twam,v4l2grab,$(V4L2GRAB_VERSION))\nV4L2GRAB_LICENSE = GPL-2.0+\nV4L2GRAB_LICENSE_FILES = LICENSE.md\n# Fetched from github, no pre-generated configure script provided\nV4L2GRAB_AUTORECONF = YES\nV4L2GRAB_DEPENDENCIES = jpeg libv4l\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/v4l2loopback/Config.in",
    "content": "config BR2_PACKAGE_V4L2LOOPBACK\n\tbool \"v4l2loopback\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  This module allows you to create \"virtual video devices\".\n\t  Normal (v4l2) applications will read these devices as if\n\t  they were ordinary video devices, but the video will not be\n\t  read from e.g. a capture card but instead it is generated by\n\t  another application.\n\n\t  https://github.com/umlaeute/v4l2loopback\n\nif BR2_PACKAGE_V4L2LOOPBACK\n\nconfig BR2_PACKAGE_V4L2LOOPBACK_UTILS\n\tbool \"utils\"\n\tdepends on BR2_USE_MMU # bash\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash\n\tselect BR2_PACKAGE_BASH # runtime dependency\n\tselect BR2_PACKAGE_SUDO # runtime dependency\n\thelp\n\t  Install applications to interact with v4l2-loopback devices\n\t  (\"virtual video devices\").  Currently there is only a single\n\t  command line utility: v4l2loopback-ctl: tool to set\n\t  framerate, format and timeout image.\n\nendif\n\ncomment \"v4l2loopback needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/v4l2loopback/v4l2loopback.hash",
    "content": "# Locally calculated\nsha256  e152cd6df6a8add172fb74aca3a9188264823efa5a2317fe960d45880b9406ae  v4l2loopback-0.12.5.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/v4l2loopback/v4l2loopback.mk",
    "content": "################################################################################\n#\n# v4l2loopback\n#\n################################################################################\n\nV4L2LOOPBACK_VERSION = 0.12.5\nV4L2LOOPBACK_SITE = $(call github,umlaeute,v4l2loopback,v$(V4L2LOOPBACK_VERSION))\nV4L2LOOPBACK_LICENSE = GPL-2.0+\nV4L2LOOPBACK_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_V4L2LOOPBACK_UTILS),y)\ndefine V4L2LOOPBACK_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/utils/v4l2loopback-ctl $(TARGET_DIR)/usr/bin/v4l2loopback-ctl\nendef\nendif\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/v4l2rtspserver/0001-use-custom-makefile.patch",
    "content": "diff --git a/Makefile b/Makefile\nindex e69de29..fb3f2bf 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -0,0 +1,54 @@\n+ifneq ($(SRC),)\n+VPATH=$(SRC)\n+endif\n+\n+ALL_PROGS = v4l2rtspserver\n+PREFIX?=/usr\n+DESTDIR?=$(PREFIX)/bin\n+CC?=$(CROSS)gcc\n+CXX?=$(CROSS)g++\n+CXXFLAGS += -I$(SRC) -W -Wall -std=c++11 -g -O3 -D_POSIX_C_SOURCE=2\n+CXXFLAGS += -Iinc -I$(PREFIX)/include -I$(PREFIX)/include/BasicUsageEnvironment -I$(PREFIX)/include/UsageEnvironment -I$(PREFIX)/include/liveMedia -I$(PREFIX)/include/groupsock\n+CXXFLAGS += $(EXTRA_CXXFLAGS)\n+LDFLAGS += -pthread -L$(PREFIX)/lib -lBasicUsageEnvironment -lUsageEnvironment -lliveMedia -lgroupsock -lv4l2wrapper\n+RM = rm -rf\n+\n+RTSPSERVER_OBJS = \\\n+\tsrc/DeviceSource.o \\\n+\tsrc/H264_V4l2DeviceSource.o \\\n+\tsrc/HTTPServer.o \\\n+\tsrc/main.o \\\n+\tsrc/MemoryBufferSink.o \\\n+\tsrc/MJPEGVideoSource.o \\\n+\tsrc/MulticastServerMediaSubsession.o \\\n+\tsrc/ServerMediaSubsession.o \\\n+\tsrc/TSServerMediaSubsession.o \\\n+\tsrc/UnicastServerMediaSubsession.o \\\n+\n+\n+# v4l2wrapper\n+CXXFLAGS += -I$(PREFIX)/include/libv4l2cpp\n+\n+# ALSA\n+ifneq ($(HAVE_ALSA),)\n+CXXFLAGS += -DHAVE_ALSA\n+RTSPSERVER_OBJS += src/ALSACapture.o\n+LDFLAGS += -lasound\n+endif\n+\n+\n+.DEFAULT_GOAL := all\n+\n+all: $(ALL_PROGS)\n+\n+v4l2rtspserver: $(RTSPSERVER_OBJS)\n+\t$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)\n+\n+src/%.o : src/%.cpp\n+\t$(CXX) $(CXXFLAGS) -c $< -o $@\n+\n+clean:\n+\t$(RM) src/*.o v4l2rtspserver\n+\n+install: v4l2rtspserver\n+\tinstall -D -m 0777 v4l2rtspserver $(DESTDIR)\n"
  },
  {
    "path": "package/v4l2rtspserver/0001-use-system-v4l2wrapper.patch.bak",
    "content": "diff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 7cf9f3c..3f967b3 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -1,5 +1,7 @@\n cmake_minimum_required(VERSION 3.0)\n \n+set(CMAKE_VERBOSE_MAKEFILE ON)\n+\n project(v4l2rtspserver)\n \n option(COVERAGE \"Coverage\" OFF)\n@@ -39,7 +41,7 @@ message(STATUS \"CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}\")\n \n #pthread\n find_package (Threads)\n-target_link_libraries (${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT}) \n+target_link_libraries (${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT})\n \n #ALSA\n if (ALSA)\n@@ -47,9 +49,9 @@ find_package(ALSA QUIET)\n if (ALSA_LIBRARY)\n \tmessage(STATUS \"Alsa available\")\n \tadd_definitions(-DHAVE_ALSA)\n-        target_link_libraries (${PROJECT_NAME} ${ALSA_LIBRARY}) \n-\t\n-\tSET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}libasound2-dev,)\t\n+        target_link_libraries (${PROJECT_NAME} ${ALSA_LIBRARY})\n+\n+\tSET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}libasound2-dev,)\n endif (ALSA_LIBRARY)\n endif()\n \n@@ -59,16 +61,25 @@ if (LOG4CPP_LIBRARY)\n         message(STATUS \"Log4Cpp available\")\n \tadd_definitions(-DHAVE_LOG4CPP)\n \ttarget_link_libraries(${PROJECT_NAME} \"${LOG4CPP_LIBRARY}\")\n-\t\n+\n \tSET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}liblog4cpp5-dev,)\n endif ()\n \n # v4l2wrapper\n-EXEC_PROGRAM(\"git submodule update --init\")\n-aux_source_directory(v4l2wrapper/src LIBSRC_FILES)\n-include_directories(\"v4l2wrapper/inc\")\n-add_library(v4l2wrapper STATIC ${LIBSRC_FILES})\n-target_link_libraries (${PROJECT_NAME} v4l2wrapper) \n+#set(V4L2WRAPPER_LIBRARY ${CMAKE_SOURCE_DIR}/libv4l2wrapper.a)\n+target_link_libraries(${PROJECT_NAME} ${CMAKE_SOURCE_DIR}/libv4l2wrapper.a)\n+#find_library(V4L2WRAPPER_LIBRARY v4l2wrapper REQUIRED)\n+#find_package(v4l2cpp REQUIRED)\n+#if (V4L2CPP_LIBRARY)\n+#        message(STATUS \"v4l2wrapper available\")\n+#\ttarget_link_libraries(${PROJECT_NAME} \"${V4L2CPP_LIBRARY}\")\n+#endif ()\n+\n+# EXEC_PROGRAM(\"git submodule update --init\")\n+# aux_source_directory(v4l2wrapper/src LIBSRC_FILES)\n+# include_directories(\"v4l2wrapper/inc\")\n+# add_library(v4l2wrapper STATIC ${LIBSRC_FILES})\n+# target_link_libraries (${PROJECT_NAME} v4l2wrapper)\n \n # live555\n set(LIVE ${CMAKE_BINARY_DIR}/live)\n@@ -97,7 +108,7 @@ if (SYSTEMD_FOUND)\n \texecute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=systemdsystemunitdir systemd OUTPUT_VARIABLE SYSTEMD_SERVICES_INSTALL_DIR)\n \tstring(REGEX REPLACE \"[ \\t\\n]+\" \"\" SYSTEMD_SERVICES_INSTALL_DIR \"${SYSTEMD_SERVICES_INSTALL_DIR}\")\n \tmessage(STATUS \"SystemD directory '${SYSTEMD_SERVICES_INSTALL_DIR}'\")\n-\t\n+\n \tconfigure_file(v4l2rtspserver.service.in ${CMAKE_CURRENT_BINARY_DIR}/v4l2rtspserver.service @ONLY)\n         install(FILES ${CMAKE_CURRENT_BINARY_DIR}/v4l2rtspserver.service DESTINATION ${SYSTEMD_SERVICES_INSTALL_DIR})\n endif (SYSTEMD_FOUND)\n@@ -108,8 +119,8 @@ install (FILES index.html DESTINATION share/${PROJECT_NAME}/)\n install (FILES hls.js/dist/hls.light.min.js DESTINATION share/${PROJECT_NAME}/hls.js/dist/)\n \n SET(CPACK_GENERATOR \"DEB\")\n-SET(CPACK_DEBIAN_PACKAGE_MAINTAINER \"Michel Promonet\") \n-SET(CPACK_PACKAGE_CONTACT \"michel.promonet@free.fr\") \n+SET(CPACK_DEBIAN_PACKAGE_MAINTAINER \"Michel Promonet\")\n+SET(CPACK_PACKAGE_CONTACT \"michel.promonet@free.fr\")\n SET(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR})\n STRING(REGEX REPLACE \",$\" \"\" CPACK_DEBIAN_PACKAGE_DEPENDS \"${CPACK_DEBIAN_PACKAGE_DEPENDS}\")\n SET(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})\n@@ -117,4 +128,3 @@ if(VERSION)\n     SET(CPACK_PACKAGE_VERSION \"${VERSION}\")\n endif()\n INCLUDE(CPack)\n-\n"
  },
  {
    "path": "package/v4l2rtspserver/Config.in",
    "content": "config BR2_PACKAGE_V4L2RTSPSERVER\n\tbool \"v4l2rtspserver\"\n\tselect BR2_PACKAGE_V4L2CPP\n\tselect BR2_PACKAGE_LIVE555\n\thelp\n\t  Provides a streaming RTSP server for the target.\n"
  },
  {
    "path": "package/v4l2rtspserver/v4l2rtspserver.mk",
    "content": "#############################################################\n#\n# v4l2rtspserver\n#\n#############################################################\n\nV4L2RTSPSERVER_VERSION = 13e27dc78f2ed6bc5d43fd6eb759041d8e0b4a66\nV4L2RTSPSERVER_SITE = https://github.com/mpromonet/v4l2rtspserver.git\nV4L2RTSPSERVER_SITE_METHOD = git\nV4L2RTSPSERVER_LICENSE = UNLICENSE\nV4L2RTSPSERVER_LICENSE_FILES = LICENSE\nV4L2RTSPSERVER_INSTALL_TARGET = YES\nV4L2RTSPSERVER_DEPENDENCIES = live555 v4l2cpp\nV4L2RTSPSERVER_CFLAGS = $(TARGET_CFLAGS) -DVERSION=1\n\nifndef ($(BR2_ENABLE_LOCALE),y)\nV4L2RTSPSERVER_CFLAGS += -DLOCALE_NOT_USED\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nV4L2RTSPSERVER_OPTS += \"HAVE_ALSA=1\"\nendif\n\ndefine V4L2RTSPSERVER_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" CXX=\"$(TARGET_CXX)\" EXTRA_CXXFLAGS=\"$(V4L2RTSPSERVER_CFLAGS)\" PREFIX=\"$(STAGING_DIR)/usr\" $(V4L2RTSPSERVER_OPTS) -C $(@D) all\nendef\n\ndefine V4L2RTSPSERVER_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=\"$(TARGET_DIR)/usr/bin\" -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/v4l2tools/02-enable-cross-compile.patch",
    "content": "diff --git a/Makefile b/Makefile\nindex e69de29..f337374 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -0,0 +1,148 @@\n+ALL_PROGS = v4l2copy v4l2source_yuv\n+PREFIX?=/usr\n+DESTDIR?=$(PREFIX)/bin\n+CC?=$(CROSS)gcc\n+CXX?=$(CROSS)g++\n+CXXFLAGS += -W -Wall -g -O3 -D_POSIX_C_SOURCE=2\n+CXXFLAGS += -Iinclude -I$(PREFIX)/include -I$(PREFIX)/include/libv4l2cpp\n+CXXFLAGS += $(EXTRA_CXXFLAGS)\n+LDFLAGS += -pthread -L$(PREFIX)/lib -lv4l2wrapper\n+\n+.DEFAULT_GOAL := all\n+\n+# raspberry tools\n+ifneq ($(HAVE_RPI_IL),)\n+ILCFLAGS  = $(CXXFLAGS)\n+ILCFLAGS += -DOMX_SKIP64BIT\n+ILLDFLAGS = $(LDFLAGS) -lpthread -lopenmaxil -lbcm_host -lvcos -lvchostif -lvchiq_arm -lilclient\n+\n+v4l2compress_omx: src/encode_omx.cpp src/v4l2compress_omx.cpp\n+\t$(CXX) -o $@ $^ -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi $(ILCFLAGS) $(ILLDFLAGS)\n+\n+v4l2grab_h264: src/encode_omx.cpp src/v4l2grab_h264.cpp\n+\t$(CXX) -o $@ $^ -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi $(ILCFLAGS) $(ILLDFLAGS)\n+\n+v4l2display_h264: src/v4l2display_h264.cpp\n+\t$(CXX) -o $@ $^ -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi $(ILCFLAGS) $(ILLDFLAGS)\n+\n+\n+ALL_PROGS+=v4l2grab_h264\n+ALL_PROGS+=v4l2display_h264\n+ALL_PROGS+=v4l2compress_omx\n+endif\n+\n+ifneq ($(HAVE_RPI),)\n+MMALCAM_CFLAGS  = $(CXXFLAGS)\n+MMALCAM_LDFLAGS = $(LDFLAGS) -L/opt/vc/lib -lmmal -lmmal_core -lmmal_util -lpthread -lbcm_host -lvcos -lvchostif -lvchiq_arm\n+RASPICAM_CFLAGS = $(CFLAGS) -Isrc/raspicam -I/opt/vc/include\n+RASPICAM_OBJS = \\\n+\tsrc/raspicam/RaspiCamControl.o \\\n+\tsrc/raspicam/RaspiCLI.o \\\n+\tsrc/raspicam/RaspiCommonSettings.o \\\n+\tsrc/raspicam/RaspiHelpers.o \\\n+\tsrc/raspicam/RaspiPreview.o\n+\n+v4l2multi_stream_mmal: src/v4l2multi_stream_mmal.cpp $(RASPICAM_OBJS)\n+\t$(CXX) -o $@ $^ -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi $(MMALCAM_CFLAGS) $(RASPICAM_CFLAGS) $(MMALCAM_LDFLAGS)\n+\n+src/raspicam/%.o : src/raspicam/%.c\n+\t$(CC) -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi $(RASPICAM_CFLAGS) -c $< -o $@\n+\n+ALL_PROGS+=v4l2multi_stream_mmal\n+\n+endif\n+\n+# libyuv\n+ifneq ($(HAVE_LIBYUV),)\n+ALL_PROGS+=v4l2convert_yuv\n+\n+# libh264bitstream & libhevcbitstream\n+ifneq ($(HAVE_H264BITSTREAM),)\n+ifneq ($(HAVE_HEVCBITSTREAM),)\n+ALL_PROGS+=v4l2dump\n+endif\n+endif\n+\n+# libh264bitstream\n+ifneq ($(HAVE_H264BITSTREAM),)\n+ALL_PROGS+=v4l2compress_h264\n+endif\n+\n+# libhevcbitstream\n+ifneq ($(HAVE_HEVCBITSTREAM),)\n+ALL_PROGS+=v4l2compress_x265\n+endif\n+\n+# libvpx\n+ifneq ($(HAVE_LIBVPX),)\n+ALL_PROGS+=v4l2compress_vpx\n+endif\n+\n+# libjpeg\n+ifneq ($(HAVE_LIBJPEG),)\n+ALL_PROGS+=v4l2compress_jpeg v4l2uncompress_jpeg\n+CFLAGS += -DHAVE_JPEG\n+endif\n+\n+endif\n+\n+# libfuse\n+ifneq ($(HAVE_LIBFUSE),)\n+ALL_PROGS+=v4l2fuse\n+endif\n+\n+all: $(ALL_PROGS)\n+\n+# read V4L2 capture -> write V4L2 output\n+v4l2copy: src/v4l2copy.cpp\n+\t$(CXX) -o $@ $(CXXFLAGS) $^ $(LDFLAGS)\n+\n+# read V4L2 capture -> convert YUV format -> write V4L2 output\n+v4l2convert_yuv: src/v4l2convert_yuv.cpp\n+\t$(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lyuv -ljpeg\n+\n+# -> write V4L2 output\n+v4l2source_yuv: src/v4l2source_yuv.cpp\n+\t$(CXX) -o $@ $(CXXFLAGS) $^ $(LDFLAGS)\n+\n+# read V4L2 capture -> compress using libvpx -> write V4L2 output\n+v4l2compress_vpx: src/v4l2compress_vpx.cpp\n+\t$(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lvpx -lyuv -ljpeg\n+\n+# read V4L2 capture -> compress using x264 -> write V4L2 output\n+v4l2compress_h264: src/v4l2compress_h264.cpp\n+\t$(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lh264bitstream -lyuv -ljpeg\n+\n+# read V4L2 capture -> compress using x265 -> write V4L2 output\n+v4l2compress_x265: src/v4l2compress_x265.cpp\n+\t$(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lhevcbitstream -lyuv -ljpeg\n+\n+# read V4L2 capture -> compress using libjpeg -> write V4L2 output\n+v4l2compress_jpeg: src/v4l2compress_jpeg.cpp\n+\t$(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lyuv -ljpeg\n+\n+# read V4L2 capture -> uncompress using libjpeg -> write V4L2 output\n+v4l2uncompress_jpeg: src/v4l2uncompress_jpeg.cpp\n+\t$(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lyuv -ljpeg\n+\n+# try with opencv\n+v4l2detect_yuv: src/v4l2detect_yuv.cpp\n+\t$(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lopencv_core -lopencv_objdetect -lopencv_imgproc -lyuv -ljpeg\n+\n+# dump\n+v4l2dump: src/v4l2dump.cpp\n+\t$(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/h264bitstream -I$(PREFIX)/include/hevcbitstream -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lh264bitstream -lhevcbitstream -lyuv -ljpeg\n+\n+v4l2fuse: src/v4l2fuse.c\n+\t$(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) -D_FILE_OFFSET_BITS=64 -lfuse\n+\n+\n+upgrade:\n+\tgit submodule foreach git pull origin master\n+\n+install: all\n+\tmkdir -p $(DESTDIR)/bin\n+\tinstall -D -m 0755 $(ALL_PROGS) $(DESTDIR)/bin\n+\n+clean:\n+\t-@$(RM) $(ALL_PROGS) .*o *.a src/raspicam/.*o\n"
  },
  {
    "path": "package/v4l2tools/Config.in",
    "content": "config BR2_PACKAGE_V4L2TOOLS\n\tbool \"v4l2tools\"\n\tselect BR2_PACKAGE_V4L2CPP\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBFUSE\n\thelp\n\t  Build the V4L2 tools based on libv4l2cpp.\n\t  Optional dependencies: libvpx, x264, x265.\n"
  },
  {
    "path": "package/v4l2tools/v4l2tools.mk",
    "content": "#############################################################\n#\n# v4l2tools\n#\n#############################################################\n\nV4L2TOOLS_VERSION = ab94cf8\nV4L2TOOLS_SITE = https://github.com/jasaw/v4l2tools.git\nV4L2TOOLS_SITE_METHOD = git\nV4L2TOOLS_LICENSE = UNLICENSE\nV4L2TOOLS_LICENSE_FILES = LICENSE\nV4L2TOOLS_INSTALL_TARGET = YES\nV4L2TOOLS_DEPENDENCIES = v4l2cpp\nV4L2TOOLS_CFLAGS = $(TARGET_CFLAGS)\n\ndefine V4L2TOOLS_REMOVE_MAKEFILE\n\trm -f $(BUILD_DIR)/v4l2tools-$(V4L2TOOLS_VERSION)/Makefile\nendef\n\nV4L2TOOLS_PRE_PATCH_HOOKS += V4L2TOOLS_REMOVE_MAKEFILE\n\nifeq ($(BR2_PACKAGE_RPI_USERLAND),y)\nV4L2TOOLS_DEPENDENCIES += rpi-userland\nV4L2TOOLS_MAKE_OPTS += HAVE_RPI=1\nifeq ($(BR2_PACKAGE_RPI_USERLAND_HELLO),y)\nV4L2TOOLS_MAKE_OPTS += HAVE_RPI_IL=1\nV4L2TOOLS_CFLAGS += -I$(STAGING_DIR)/usr/src/hello_pi/libs/ilclient\nendif\nendif # BR2_PACKAGE_RPI_USERLAND\n\nifeq ($(BR2_PACKAGE_LIBYUV),y)\nV4L2TOOLS_DEPENDENCIES += libyuv\nV4L2TOOLS_MAKE_OPTS += HAVE_LIBYUV=1\n\nifeq ($(BR2_PACKAGE_H264BITSTREAM),y)\n# TODO: pull in h264bitstream from https://github.com/aizvorski/h264bitstream\n#V4L2TOOLS_DEPENDENCIES += h264bitstream\n#V4L2TOOLS_MAKE_OPTS += HAVE_H264BITSTREAM=1\nendif\n\nifeq ($(BR2_PACKAGE_HEVCBITSTREAM),y)\n# TODO: pull in hevcbitstream from https://github.com/leslie-wang/hevcbitstream\n#V4L2TOOLS_DEPENDENCIES += hevcbitstream\n#V4L2TOOLS_MAKE_OPTS += HAVE_HEVCBITSTREAM=1\nendif\n\nifeq ($(BR2_PACKAGE_LIBVPX),y)\nV4L2TOOLS_DEPENDENCIES += libvpx\nV4L2TOOLS_MAKE_OPTS += HAVE_LIBVPX=1\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nV4L2TOOLS_DEPENDENCIES += jpeg\nV4L2TOOLS_MAKE_OPTS += HAVE_LIBJPEG=1\nendif\nendif\n\nifeq ($(BR2_PACKAGE_LIBFUSE),y)\nV4L2TOOLS_DEPENDENCIES += libfuse\nV4L2TOOLS_MAKE_OPTS += HAVE_LIBFUSE=1\nendif\n\nifndef ($(BR2_ENABLE_LOCALE),y)\nV4L2TOOLS_CFLAGS += -DLOCALE_NOT_USED\nendif\n\ndefine V4L2TOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) CC=\"$(TARGET_CC)\" CXX=\"$(TARGET_CXX)\" AR=\"$(TARGET_AR)\" CFLAGS_EXTRA=\"$(V4L2TOOLS_CFLAGS)\" LDFLAGS=\"$(TARGET_LDFLAGS)\" ARFLAGS=\"$(TARGET_ARFLAGS)\" PREFIX=\"$(STAGING_DIR)/usr\" $(V4L2TOOLS_MAKE_OPTS) $(MAKE) -C $(@D) all\nendef\n\ndefine V4L2TOOLS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/v4l2copy $(TARGET_DIR)/usr/sbin\n\t$(INSTALL) -D -m 0755 $(@D)/v4l2source_yuv $(TARGET_DIR)/usr/sbin\n\t$(if $(BR2_PACKAGE_RPI_USERLAND_HELLO), $(INSTALL) -D -m 0755 $(@D)/v4l2grab_h264 $(TARGET_DIR)/usr/sbin )\n\t$(if $(BR2_PACKAGE_RPI_USERLAND_HELLO), $(INSTALL) -D -m 0755 $(@D)/v4l2display_h264 $(TARGET_DIR)/usr/sbin )\n\t$(if $(BR2_PACKAGE_RPI_USERLAND_HELLO), $(INSTALL) -D -m 0755 $(@D)/v4l2compress_omx $(TARGET_DIR)/usr/sbin )\n\t$(if $(BR2_PACKAGE_RPI_USERLAND), $(INSTALL) -D -m 0755 $(@D)/v4l2multi_stream_mmal $(TARGET_DIR)/usr/sbin )\n\t$(if $(BR2_PACKAGE_LIBYUV), $(INSTALL) -D -m 0755 $(@D)/v4l2convert_yuv $(TARGET_DIR)/usr/sbin )\n\t$(if $(and $(BR2_PACKAGE_LIBYUV),$(BR2_PACKAGE_H264BITSTREAM)), $(INSTALL) -D -m 0755 $(@D)/v4l2compress_h264 $(TARGET_DIR)/usr/sbin )\n\t$(if $(and $(BR2_PACKAGE_LIBYUV),$(BR2_PACKAGE_HEVCBITSTREAM)), $(INSTALL) -D -m 0755 $(@D)/v4l2compress_x265 $(TARGET_DIR)/usr/sbin )\n\t$(if $(and $(BR2_PACKAGE_LIBYUV),$(BR2_PACKAGE_H264BITSTREAM),$(BR2_PACKAGE_HEVCBITSTREAM)), $(INSTALL) -D -m 0755 $(@D)/v4l2dump $(TARGET_DIR)/usr/sbin )\n\t$(if $(and $(BR2_PACKAGE_LIBYUV),$(BR2_PACKAGE_VPX)), $(INSTALL) -D -m 0755 $(@D)/v4l2compress_vpx $(TARGET_DIR)/usr/sbin )\n\t$(if $(and $(BR2_PACKAGE_LIBYUV),$(BR2_PACKAGE_JPEG)), $(INSTALL) -D -m 0755 $(@D)/v4l2compress_jpeg $(TARGET_DIR)/usr/sbin )\n\t$(if $(and $(BR2_PACKAGE_LIBYUV),$(BR2_PACKAGE_JPEG)), $(INSTALL) -D -m 0755 $(@D)/v4l2uncompress_jpeg $(TARGET_DIR)/usr/sbin )\n\t$(if $(BR2_PACKAGE_LIBFUSE), $(INSTALL) -D -m 0755 $(@D)/v4l2fuse $(TARGET_DIR)/usr/sbin )\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/vala/0001-dont-add-dirty-to-valac-version.patch",
    "content": "valac: don't append -dirty to version\n\nDon't append -dirty to the valac version number if the Buildroot Git\ntree has uncommited changes.\n\nThe patched script is meant for the valac developers, but it also\nactivates if you build valac in a subdirectory of a Git tree (e.g.\nas is commonly done in Buildroot).\n\nThe effect is that valac gets built as being version x.y.z-dirty, which\nbreaks programs (such as Midori) that explicitly check for valac-x.y.z.\n\nSigned-off-by: Simon Dawson <spdawson@gmail.com>\n[Fabrice: update for 0.52.4]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\ndiff -Nur a/build-aux/git-version-gen b/build-aux/git-version-gen\n--- a/build-aux/git-version-gen\t2010-08-15 12:49:03.000000000 +0100\n+++ b/build-aux/git-version-gen\t2012-05-14 10:17:19.977204570 +0100\n@@ -135,7 +135,7 @@\n       *) # Append the suffix only if there isn't one already.\n           case $v in\n             *-dirty) ;;\n-            *) v=\"$v-dirty\" ;;\n+            #*) v=\"$v-dirty\" ;;\n           esac ;;\n   esac\n fi\n \n"
  },
  {
    "path": "package/vala/vala-wrapper",
    "content": "#!/bin/sh\n$0-@VALA_VERSION@ --vapidir=${STAGING_DIR}/usr/share/vala/vapi --girdir=${STAGING_DIR}/usr/share/gir-1.0 \"$@\"\n"
  },
  {
    "path": "package/vala/vala.hash",
    "content": "# From https://download.gnome.org/sources/vala/0.52/vala-0.52.4.sha256sum\nsha256  ecde520e5160e659ee699f8b1cdc96065edbd44bbd08eb48ef5f2506751fdf31  vala-0.52.4.tar.xz\n# Locally computed\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING\n"
  },
  {
    "path": "package/vala/vala.mk",
    "content": "################################################################################\n#\n# vala\n#\n################################################################################\n\nVALA_VERSION_MAJOR = 0.52\nVALA_VERSION = $(VALA_VERSION_MAJOR).4\nVALA_SITE = http://download.gnome.org/sources/vala/$(VALA_VERSION_MAJOR)\nVALA_SOURCE = vala-$(VALA_VERSION).tar.xz\nVALA_LICENSE = LGPL-2.1+\nVALA_LICENSE_FILES = COPYING\nVALA_CPE_ID_VENDOR = gnome\n\nHOST_VALA_DEPENDENCIES = host-bison host-flex host-libglib2\n# Yes, the autoconf script understands ':' as \"xsltproc is not\n# available\".\nHOST_VALA_CONF_ENV = ac_cv_path_XSLTPROC=:\nHOST_VALA_CONF_OPTS += --disable-valadoc\n\n# We wrap vala, valac and vapigen to point to the proper gir and vapi data dirs\n# Otherwise we'll get host directory data which isn't enough\ndefine HOST_VALA_INSTALL_WRAPPER\n\t$(INSTALL) -D -m 0755 package/vala/vala-wrapper \\\n\t\t$(HOST_DIR)/bin/vala\n\t$(INSTALL) -D -m 0755 package/vala/vala-wrapper \\\n\t\t$(HOST_DIR)/bin/valac\n\t$(INSTALL) -D -m 0755 package/vala/vala-wrapper \\\n\t\t$(HOST_DIR)/bin/vapigen\n\t$(SED) 's,@VALA_VERSION@,$(VALA_VERSION_MAJOR),' \\\n\t\t$(HOST_DIR)/bin/vala \\\n\t\t$(HOST_DIR)/bin/valac \\\n\t\t$(HOST_DIR)/bin/vapigen\nendef\nHOST_VALA_POST_INSTALL_HOOKS += HOST_VALA_INSTALL_WRAPPER\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/valgrind/0001-workaround-SIGSEGV-on-PPC.patch",
    "content": "From ff29b837f21a69c79289c3a87b03f8c23e05616e Mon Sep 17 00:00:00 2001\nFrom: Pierre Habouzit <madcoder@debian.org>\nDate: Tue, 10 May 2011 23:11:45 +0200\nSubject: [PATCH] workaround SIGSEGV on PPC.\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nSigned-off-by: Pierre Habouzit <madcoder@debian.org>\nSigned-off-by: Jérôme Pouiller <jezz@sysmic.org>\n---\n coregrind/m_machine.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/coregrind/m_machine.c b/coregrind/m_machine.c\nindex 6110c93..298a00e 100644\n--- a/coregrind/m_machine.c\n+++ b/coregrind/m_machine.c\n@@ -27,6 +27,10 @@\n    The GNU General Public License is contained in the file COPYING.\n */\n \n+#ifdef __powerpc__\n+#  pragma GCC optimize (\"-O0\")\n+#endif\n+\n #include \"pub_core_basics.h\"\n #include \"pub_core_vki.h\"\n #include \"pub_core_threadstate.h\"\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/valgrind/0002-Define-PTRACE_GETSIGINFO-on-PowerPC-when-not-availab.patch",
    "content": "From 7311686d6286972ff97cc18b2416a4cdd7fc5c7e Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 31 Oct 2015 12:15:24 +0100\nSubject: [PATCH] Define PTRACE_GETSIGINFO on PowerPC when not available\n\nuClibc 0.9.33.2 does not define PTRACE_GETSIGINFO in PowerPC. Even\nthough Buildroot has a uClibc patch doing that, it doesn't solve the\ncase of external uClibc toolchain from other sources (such as\nCrosstool-NG). Therefore, this patch modifies Valgrind to define\nPTRACE_GETSIGINFO on PowerPC to the right value, when such definition\nis not available from the C library.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n coregrind/vgdb-invoker-ptrace.c | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/coregrind/vgdb-invoker-ptrace.c b/coregrind/vgdb-invoker-ptrace.c\nindex d65f59a..bdefac2 100644\n--- a/coregrind/vgdb-invoker-ptrace.c\n+++ b/coregrind/vgdb-invoker-ptrace.c\n@@ -72,6 +72,12 @@\n #   endif\n #endif\n \n+#if defined(__powerpc__)\n+# ifndef PTRACE_GETSIGINFO\n+#  define PTRACE_GETSIGINFO 0x4202\n+# endif\n+#endif\n+\n // 32-bit or 64-bit wide, depending on primary architecture.\n typedef Addr  CORE_ADDR;\n typedef Addr  PTRACE_XFER_TYPE;\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/valgrind/Config.in",
    "content": "config BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_ARM_CPU_ARMV7A\n\tdefault y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdefault y if BR2_i386 || BR2_x86_64\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\ncomment \"valgrind needs a toolchain w/ dynamic library\"\n\tdepends on BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_VALGRIND\n\tbool \"valgrind\"\n\tdepends on BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Tool for debugging and profiling Linux programs.\n\n\t  http://valgrind.org/\n\nif BR2_PACKAGE_VALGRIND\n\nconfig BR2_PACKAGE_VALGRIND_MEMCHECK\n\tbool \"Memcheck: a memory error detector\"\n\tdefault y\n\thelp\n\t  This option allows to install the Memcheck tool\n\nconfig BR2_PACKAGE_VALGRIND_CACHEGRIND\n\tbool \"Cachegrind: a cache and branch-prediction profiler\"\n\tdefault y\n\thelp\n\t  This option allows to install the Cachegrind tool\n\nconfig BR2_PACKAGE_VALGRIND_CALLGRIND\n\tbool \"Callgrind: a call-graph generating cache and branch prediction profiler\"\n\tdefault y\n\thelp\n\t  This option allows to install the Callgrind tool\n\nconfig BR2_PACKAGE_VALGRIND_HELGRIND\n\tbool \"Helgrind: a thread error detector\"\n\tdefault y\n\thelp\n\t  This option allows to install the Helgrind tool\n\nconfig BR2_PACKAGE_VALGRIND_DRD\n\tbool \"DRD: a thread error detector\"\n\tdefault y\n\thelp\n\t  This option allows to install the DRD tool\n\nconfig BR2_PACKAGE_VALGRIND_MASSIF\n\tbool \"Massif: a heap profiler\"\n\tdefault y\n\thelp\n\t  This option allows to install the Massif tool\n\nconfig BR2_PACKAGE_VALGRIND_DHAT\n\tbool \"DHAT: a dynamic heap analysis tool\"\n\tdefault y\n\thelp\n\t  This option allows to install the DHAT tool\n\nconfig BR2_PACKAGE_VALGRIND_SGCHECK\n\tbool \"SGCheck: an experimental stack and global array overrun detector\"\n\thelp\n\t  This option allows to install the SGCheck tool\n\nconfig BR2_PACKAGE_VALGRIND_BBV\n\tbool \"BBV: an experimental basic block vector generation tool\"\n\thelp\n\t  This option allows to install the BBV tool\n\nconfig BR2_PACKAGE_VALGRIND_LACKEY\n\tbool \"Lackey: an example tool\"\n\thelp\n\t  This option allows to install the Lackey tool\n\nconfig BR2_PACKAGE_VALGRIND_NULGRIND\n\tbool \"Nulgrind: the minimal Valgrind tool\"\n\thelp\n\t  This option allows to install the Nulgrind tool\n\nendif\n"
  },
  {
    "path": "package/valgrind/uclibc.supp",
    "content": "{\n   <insert a suppression name here>\n   Memcheck:Addr1\n   fun:_dl_strdup\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr1\n   fun:_dl_malloc\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Cond\n   fun:_dl_get_ready_to_run\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr1\n   fun:_dl_get_ready_to_run\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr2\n   fun:_dl_get_ready_to_run\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   fun:_dl_get_ready_to_run\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr1\n   fun:_dl_add_elf_hash_table\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr2\n   fun:_dl_add_elf_hash_table\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   fun:_dl_add_elf_hash_table\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr1\n   fun:_dl_check_if_named_library_is_loaded\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   fun:_dl_check_if_named_library_is_loaded\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr1\n   fun:_dl_check_hashed_files\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   fun:_dl_check_hashed_files\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr1\n   fun:_dl_load_elf_shared_library\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr2\n   fun:_dl_load_elf_shared_library\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   fun:_dl_load_elf_shared_library\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr2\n   fun:_dl_load_shared_library\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr1\n   fun:_dl_find_hash\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   fun:_dl_find_hash\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   fun:_dl_fixup\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr2\n   fun:_dl_fixup\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   fun:_dl_linux_resolve\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   fun:_dl_linux_resolver\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr2\n   fun:_dl_parse_lazy_relocation_information\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr2\n   obj:/lib/ld-uClibc*\n   fun:_dl_parse_lazy_relocation_information\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   fun:_dl_parse_lazy_relocation_information\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   obj:/lib/ld-uClibc*\n   obj:/lib/ld-uClibc*\n   fun:_dl_parse_lazy_relocation_information\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   obj:/lib/ld-uClibc*\n   fun:_dl_parse_lazy_relocation_information\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr2\n   obj:/lib/ld-uClibc*\n   fun:_dl_parse_relocation_information\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr2\n   fun:_dl_parse_relocation_information\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   fun:_dl_parse_relocation_information\n   obj:/lib/ld-uClibc*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   obj:/lib/ld-uClibc*\n   fun:_dl_parse_relocation_information\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   obj:/lib/ld-uClibc*\n   obj:/lib/ld-uClibc*\n   fun:_dl_parse_relocation_information\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr2\n   obj:/lib/ld-uClibc-0.9.27.so\n   fun:*\n}\n{\n   <insert a suppression name here>\n   Memcheck:Addr4\n   obj:/lib/ld-uClibc-0.9.27.so\n   fun:*\n}\n"
  },
  {
    "path": "package/valgrind/valgrind.hash",
    "content": "# From https://valgrind.org/downloads/current.html\nmd5  de56a5532b0c81781db677ca712c585a  valgrind-3.18.1.tar.bz2\n# locally computed\nsha256  00859aa13a772eddf7822225f4b46ee0d39afbe071d32778da4d99984081f7f5  valgrind-3.18.1.tar.bz2\n\n# License files\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  56976e64523fa1e68db4e6f464f5b2cb89d7d08f54b1d012e317b8db286b3faf  COPYING.DOCS\n"
  },
  {
    "path": "package/valgrind/valgrind.mk",
    "content": "################################################################################\n#\n# valgrind\n#\n################################################################################\n\nVALGRIND_VERSION = 3.18.1\nVALGRIND_SITE = https://sourceware.org/pub/valgrind\nVALGRIND_SOURCE = valgrind-$(VALGRIND_VERSION).tar.bz2\nVALGRIND_LICENSE = GPL-2.0, GFDL-1.2\nVALGRIND_LICENSE_FILES = COPYING COPYING.DOCS\nVALGRIND_CPE_ID_VENDOR = valgrind\nVALGRIND_CONF_OPTS = \\\n\t--disable-ubsan \\\n\t--without-mpicc\nVALGRIND_INSTALL_STAGING = YES\n\n# Valgrind must be compiled with no stack protection, so forcefully\n# pass -fno-stack-protector to override what Buildroot may have in\n# TARGET_CFLAGS if BR2_SSP_* support is enabled.\nVALGRIND_CFLAGS = \\\n\t$(TARGET_CFLAGS) \\\n\t-fno-stack-protector\n\n# When Valgrind detects a 32-bit MIPS architecture, it forcibly adds\n# -march=mips32 to CFLAGS; when it detects a 64-bit MIPS architecture,\n# it forcibly adds -march=mips64. This causes Valgrind to be built\n# always for the first ISA revision level (R1), even when the user has\n# configured Buildroot for the second ISA revision level (R2).\n#\n# Override the CFLAGS variable (which Valgrind appends to its CFLAGS)\n# and pass the right -march option, so they take precedence over\n# Valgrind's wrongfully detected value.\nifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y)\nVALGRIND_CFLAGS += -march=\"$(GCC_TARGET_ARCH)\"\nendif\n\nVALGRIND_CONF_ENV = CFLAGS=\"$(VALGRIND_CFLAGS)\"\n\n# fix uclibc configure c99 support detection\nVALGRIND_CONF_ENV += ac_cv_prog_cc_c99='-std=gnu99'\n\n# On ARM, Valgrind only supports ARMv7, and uses the arch part of the\n# host tuple to determine whether it's being built for ARMv7 or\n# not. Therefore, we adjust the host tuple to specify we're on\n# ARMv7. The valgrind package is guaranteed, through Config.in, to\n# only be selected on ARMv7-A platforms.\nifeq ($(BR2_ARM_CPU_ARMV7A),y)\nVALGRIND_CONF_OPTS += \\\n\t--host=$(patsubst arm-%,armv7-%,$(GNU_TARGET_NAME))\nendif\n\nifeq ($(BR2_GCC_ENABLE_LTO),y)\nVALGRIND_CONF_OPTS += --enable-lto\nelse\nVALGRIND_CONF_OPTS += --disable-lto\nendif\n\ndefine VALGRIND_INSTALL_UCLIBC_SUPP\n\t$(INSTALL) -D -m 0644 package/valgrind/uclibc.supp $(TARGET_DIR)/usr/lib/valgrind/uclibc.supp\nendef\n\nVALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_INSTALL_UCLIBC_SUPP\n\nifeq ($(BR2_PACKAGE_VALGRIND_MEMCHECK),)\ndefine VALGRIND_REMOVE_MEMCHECK\n\trm -f $(TARGET_DIR)/usr/libexec/valgrind/*memcheck*\nendef\n\nVALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_MEMCHECK\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND_CACHEGRIND),)\ndefine VALGRIND_REMOVE_CACHEGRIND\n\trm -f $(TARGET_DIR)/usr/libexec/valgrind/*cachegrind*\n\tfor i in cg_annotate cg_diff cg_merge; do \\\n\t\trm -f $(TARGET_DIR)/usr/bin/$$i ; \\\n\tdone\nendef\n\nVALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_CACHEGRIND\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND_CALLGRIND),)\ndefine VALGRIND_REMOVE_CALLGRIND\n\trm -f $(TARGET_DIR)/usr/libexec/valgrind/*callgrind*\n\tfor i in callgrind_annotate callgrind_control ; do \\\n\t\trm -f $(TARGET_DIR)/usr/bin/$$i ; \\\n\tdone\nendef\n\nVALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_CALLGRIND\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND_HELGRIND),)\ndefine VALGRIND_REMOVE_HELGRIND\n\trm -f $(TARGET_DIR)/usr/libexec/valgrind/*helgrind*\nendef\n\nVALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_HELGRIND\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND_DRD),)\ndefine VALGRIND_REMOVE_DRD\n\trm -f $(TARGET_DIR)/usr/libexec/valgrind/*drd*\nendef\n\nVALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_DRD\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND_MASSIF),)\ndefine VALGRIND_REMOVE_MASSIF\n\trm -f $(TARGET_DIR)/usr/libexec/valgrind/*massif*\n\trm -f $(TARGET_DIR)/usr/bin/ms_print\nendef\n\nVALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_MASSIF\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND_DHAT),)\ndefine VALGRIND_REMOVE_DHAT\n\trm -f $(TARGET_DIR)/usr/libexec/valgrind/*dhat*\nendef\n\nVALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_DHAT\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND_SGCHECK),)\ndefine VALGRIND_REMOVE_SGCHECK\n\trm -f $(TARGET_DIR)/usr/libexec/valgrind/*sgcheck*\nendef\n\nVALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_SGCHECK\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND_BBV),)\ndefine VALGRIND_REMOVE_BBV\n\trm -f $(TARGET_DIR)/usr/libexec/valgrind/*bbv*\nendef\n\nVALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_BBV\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND_LACKEY),)\ndefine VALGRIND_REMOVE_LACKEY\n\trm -f $(TARGET_DIR)/usr/libexec/valgrind/*lackey*\nendef\n\nVALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_LACKEY\nendif\n\nifeq ($(BR2_PACKAGE_VALGRIND_NULGRIND),)\ndefine VALGRIND_REMOVE_NULGRIND\n\trm -f $(TARGET_DIR)/usr/libexec/valgrind/*none*\nendef\n\nVALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_NULGRIND\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/valijson/Config.in",
    "content": "config BR2_PACKAGE_VALIJSON\n\tbool \"valijson\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_REGEX\n\thelp\n\t  Valijson is a header-only JSON Schema Validation library for\n\t  C++. Valijson provides a simple validation API that allows\n\t  you load JSON Schemas, and validate documents loaded by one\n\t  of several supported parser libraries like boost, jsoncpp,\n\t  rapidjson and picoJSON.\n\n\t  https://github.com/tristanpenman/valijson\n\ncomment \"valijson needs a toolchain w/ C++, threads, wchar  support\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP  || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/valijson/valijson.hash",
    "content": "# Locally Computed:\nsha256  2ac881a36f90810b41b66511502dea1e7886137ad31bcfb4e917d929c5028c35  valijson-0.3.tar.gz\nsha256  1a0f99926a2dbec30eba3db820236d9953fbe3048976923ac24980e655fbe991  LICENSE\n"
  },
  {
    "path": "package/valijson/valijson.mk",
    "content": "################################################################################\n#\n# valijson\n#\n################################################################################\n\nVALIJSON_VERSION = 0.3\nVALIJSON_SITE = $(call github,tristanpenman,valijson,v$(VALIJSON_VERSION))\nVALIJSON_LICENSE = BSD-2-Clause\nVALIJSON_LICENSE_FILES = LICENSE\nVALIJSON_CPE_ID_VENDOR = valijson_project\nVALIJSON_INSTALL_STAGING = YES\nVALIJSON_INSTALL_TARGET = NO\nVALIJSON_DEPENDENCIES = boost\nVALIJSON_CONF_OPTS = -Dvalijson_INSTALL_HEADERS=TRUE -Dvalijson_BUILD_TESTS=FALSE\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/vboot-utils/0001-Add-missing-definition-of-MTD_CHAR_MAJOR.patch",
    "content": "From 1438211660e700b2c9505863aae1cc957236b7c8 Mon Sep 17 00:00:00 2001\nFrom: Alex Suykov <alex.suykov@gmail.com>\nDate: Thu, 21 Jan 2016 21:59:46 +0100\nSubject: [PATCH] Add missing definition of MTD_CHAR_MAJOR\n\nThis definition missing from <linux/major.h> for kernels <= 3.13\n\nSigned-off-by: Alex Suykov <alex.suykov@gmail.com>\n---\n cgpt/cgpt_wrapper.c | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/cgpt/cgpt_wrapper.c b/cgpt/cgpt_wrapper.c\nindex dcfaab9..4d07aad 100644\n--- a/cgpt/cgpt_wrapper.c\n+++ b/cgpt/cgpt_wrapper.c\n@@ -25,6 +25,10 @@\n #include \"cgpt_nor.h\"\n #include \"cryptolib.h\"\n \n+#ifndef MTD_CHAR_MAJOR\n+#define MTD_CHAR_MAJOR 90\n+#endif\n+\n // Check if cmdline |argv| has \"-D\". \"-D\" signifies that GPT structs are stored\n // off device, and hence we should not wrap around cgpt.\n static bool has_dash_D(int argc, const char *const argv[]) {\n-- \n2.6.4\n\n"
  },
  {
    "path": "package/vboot-utils/0002-Add-missing-header-include-for-ssize_t.patch",
    "content": "From b6bed8d4e9453bc74ba021c8c17e20c3b5964c37 Mon Sep 17 00:00:00 2001\nFrom: Alex Suykov <alex.suykov@gmail.com>\nDate: Thu, 21 Jan 2016 22:00:34 +0100\nSubject: [PATCH] Add missing header include for ssize_t\n\nThe code uses ssize_t which is usually defined in <unistd.h>.\n\nSigned-off-by: Alex Suykov <alex.suykov@gmail.com>\n---\n host/lib/fmap.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/host/lib/fmap.c b/host/lib/fmap.c\nindex c95338d..e3db826 100644\n--- a/host/lib/fmap.c\n+++ b/host/lib/fmap.c\n@@ -6,6 +6,7 @@\n \n #include <stdio.h>\n #include <string.h>\n+#include <unistd.h>\n \n #include \"fmap.h\"\n \n-- \n2.6.4\n\n"
  },
  {
    "path": "package/vboot-utils/0003-Avoid-RSA-type-redefinition.patch",
    "content": "From 593407d2b3ea3b871d55ec399671e48c84b900a7 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Thu, 21 Jan 2016 22:01:37 +0100\nSubject: [PATCH] Avoid RSA type redefinition\n\nThe host_key.h headers does:\n\n  typedef struct rsa_st RSA;\n\nBut this type definition is already done by the OpenSSL headers.\n\nWhile such a type redefinition is legal with recent gcc versions, it\ndoesn't build with older gcc versions such as gcc 4.4.\n\nTo work around this problem, we instead use a forward declaration of\n\"struct rsa_st\", and change the only place where the RSA type was used\nby \"struct rsa_st\".\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n host/lib/include/host_key.h | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/host/lib/include/host_key.h b/host/lib/include/host_key.h\nindex 9f98ccc..c2d01a5 100644\n--- a/host/lib/include/host_key.h\n+++ b/host/lib/include/host_key.h\n@@ -12,11 +12,11 @@\n #include \"vboot_struct.h\"\n \n \n-typedef struct rsa_st RSA;\n+struct rsa_st;\n \n /* Private key data */\n typedef struct VbPrivateKey {\n-  RSA* rsa_private_key;  /* Private key data */\n+  struct rsa_rt* rsa_private_key;  /* Private key data */\n   uint64_t algorithm;    /* Algorithm to use when signing */\n } VbPrivateKey;\n \n-- \n2.6.4\n\n"
  },
  {
    "path": "package/vboot-utils/0004-Disable-static-futility.patch",
    "content": "The package attempts to build a statically-linked host binary, futility_s,\nwhich is not used anywhere in buildroot but may be causing build failures\nif the build host lacks static libc.\n\nSigned-off-by: Alex Suykov <alex.suykov@gmail.com>\n\n--- a/Makefile\n+++ b/Makefile\n@@ -1079,7 +1079,7 @@\n # new Firmware Utility\n \n .PHONY: futil\n-futil: ${FUTIL_STATIC_BIN} ${FUTIL_BIN}\n+futil: ${FUTIL_BIN}\n \n ${FUTIL_STATIC_BIN}: ${FUTIL_STATIC_OBJS} ${UTILLIB}\n \t@${PRINTF} \"    LD            $(subst ${BUILD}/,,$@)\\n\"\n@@ -1091,10 +1091,10 @@\n \t${Q}${LD} -o $@ ${CFLAGS} ${LDFLAGS} $^ ${LDLIBS}\n \n .PHONY: futil_install\n-futil_install: ${FUTIL_BIN} ${FUTIL_STATIC_BIN}\n+futil_install: ${FUTIL_BIN}\n \t@${PRINTF} \"    INSTALL       futility\\n\"\n \t${Q}mkdir -p ${UB_DIR}\n-\t${Q}${INSTALL} -t ${UB_DIR} ${FUTIL_BIN} ${FUTIL_STATIC_BIN}\n+\t${Q}${INSTALL} -t ${UB_DIR} ${FUTIL_BIN}\n \t${Q}for prog in ${FUTIL_SYMLINKS}; do \\\n \t\tln -sf futility \"${UB_DIR}/$$prog\"; done\n \n"
  },
  {
    "path": "package/vboot-utils/0005-include-sys-sysmacros.h-for-major.patch",
    "content": "From 435fbcee218b37a87368e2b22fa33366875d458c Mon Sep 17 00:00:00 2001\nFrom: Mike Frysinger <vapier@chromium.org>\nDate: Tue, 19 Apr 2016 13:58:49 -0400\nSubject: [PATCH] include sys/sysmacros.h for major()\n\nThe major() func is defined in the sys/sysmacros.h header, so include it\nexplicitly for the prototype.  Upstream C libs are moving away from having\nsys/types.h include it all the time implicitly.\n\nBUG=None\nTEST=precq passes\nBRANCH=None\n\nChange-Id: I56b84138f08ded2376193403f9c9db22c5f24f71\nReviewed-on: https://chromium-review.googlesource.com/339680\nCommit-Ready: Mike Frysinger <vapier@chromium.org>\nTested-by: Mike Frysinger <vapier@chromium.org>\nReviewed-by: Bill Richardson <wfrichar@google.com>\nSigned-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>\n---\n cgpt/cgpt_wrapper.c               | 1 +\n futility/dump_kernel_config_lib.c | 1 +\n 2 files changed, 2 insertions(+)\n\ndiff --git a/cgpt/cgpt_wrapper.c b/cgpt/cgpt_wrapper.c\nindex dcfaab9c..1716cdde 100644\n--- a/cgpt/cgpt_wrapper.c\n+++ b/cgpt/cgpt_wrapper.c\n@@ -18,6 +18,7 @@\n #include <stdio.h>\n #include <string.h>\n #include <sys/stat.h>\n+#include <sys/sysmacros.h>\n #include <sys/types.h>\n #include <unistd.h>\n \ndiff --git a/futility/dump_kernel_config_lib.c b/futility/dump_kernel_config_lib.c\nindex 4fe990c3..abf37ae1 100644\n--- a/futility/dump_kernel_config_lib.c\n+++ b/futility/dump_kernel_config_lib.c\n@@ -10,6 +10,7 @@\n #include <string.h>\n #include <sys/mman.h>\n #include <sys/stat.h>\n+#include <sys/sysmacros.h>\n #include <sys/types.h>\n #include <unistd.h>\n \n-- \n2.17.1\n\n"
  },
  {
    "path": "package/vboot-utils/0006-Update-for-openssl-1.1.patch",
    "content": "From 2e730b2259c701f16d473dbfb7e58e86a6e71b01 Mon Sep 17 00:00:00 2001\nFrom: Daniel Kurtz <djkurtz@chromium.org>\nDate: Fri, 18 Jan 2019 13:04:59 +0200\nSubject: [PATCH] Update for openssl 1.1\n\nOpenSSL 1.1 has made significant non-backwards compatible changes to its\nAPI as outlined in:\nhttps://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes\n\nBRANCH=none\nBUG=chromium:738114\nTEST=cros_workon --host start vboot_reference\nTEST=w/ openssl-1.0.2k: sudo emerge vboot_reference\nTEST=w/ openssl-1.1.0e: sudo emerge vboot_reference\n => both build ok\n $ futility version\n  => command runs without error\nTEST=cros_workon --board=soraka start vboot_reference coreboot\nTEST=w/ openssl-1.0.2k: emerge-soraka vboot_reference coreboot\nTEST=w/ openssl-1.1.0e: emerge-soraka vboot_reference coreboot\n => All build ok\n\nChange-Id: I37cfc8cbb04a092eab7b0b3224f475b82609447c\nReviewed-on: https://chromium-review.googlesource.com/557739\nCommit-Ready: Daniel Kurtz <djkurtz@chromium.org>\nTested-by: Daniel Kurtz <djkurtz@chromium.org>\nReviewed-by: Randall Spangler <rspangler@chromium.org>\nReviewed-by: Mike Frysinger <vapier@chromium.org>\n\n(cherry-picked from bce7904376beee2912932433a4634c1c25afe2f5)\nSigned-off-by: Vadim Kochan <vadim4j@gmail.com>\n---\n futility/cmd_create.c         |  5 ++++-\n futility/vb2_helper.c         |  7 +++++--\n host/include/openssl_compat.h | 26 ++++++++++++++++++++++++++\n host/lib/util_misc.c          |  7 +++++--\n host/lib21/host_key.c         |  8 +++++++-\n utility/dumpRSAPublicKey.c    | 19 ++++++++++++++-----\n 6 files changed, 61 insertions(+), 11 deletions(-)\n create mode 100644 host/include/openssl_compat.h\n\ndiff --git a/futility/cmd_create.c b/futility/cmd_create.c\nindex 143ea9ae..80d3fd90 100644\n--- a/futility/cmd_create.c\n+++ b/futility/cmd_create.c\n@@ -13,6 +13,7 @@\n #include \"2common.h\"\n #include \"2id.h\"\n #include \"2rsa.h\"\n+#include \"openssl_compat.h\"\n #include \"util_misc.h\"\n #include \"vb2_common.h\"\n #include \"vb2_struct.h\"\n@@ -170,6 +171,7 @@ static int vb2_make_keypair()\n \tenum vb2_signature_algorithm sig_alg;\n \tuint8_t *pubkey_buf = 0;\n \tint has_priv = 0;\n+\tconst BIGNUM *rsa_d;\n \n \tFILE *fp;\n \tint ret = 1;\n@@ -193,7 +195,8 @@ static int vb2_make_keypair()\n \t\tgoto done;\n \t}\n \t/* Public keys doesn't have the private exponent */\n-\thas_priv = !!rsa_key->d;\n+\tRSA_get0_key(rsa_key, NULL, NULL, &rsa_d);\n+\thas_priv = !!rsa_d;\n \tif (!has_priv)\n \t\tfprintf(stderr, \"%s has a public key only.\\n\", infile);\n \ndiff --git a/futility/vb2_helper.c b/futility/vb2_helper.c\nindex 51a78375..c6cc0fdd 100644\n--- a/futility/vb2_helper.c\n+++ b/futility/vb2_helper.c\n@@ -11,6 +11,7 @@\n #include \"2common.h\"\n #include \"2id.h\"\n #include \"2rsa.h\"\n+#include \"openssl_compat.h\"\n #include \"util_misc.h\"\n #include \"vb2_common.h\"\n #include \"vb2_struct.h\"\n@@ -216,6 +217,7 @@ int ft_show_pem(const char *name, uint8_t *buf, uint32_t len, void *data)\n \tuint8_t *keyb, *digest;\n \tuint32_t keyb_len;\n \tint i, bits;\n+\tconst BIGNUM *rsa_key_n, *rsa_key_d;\n \n \t/* We're called only after ft_recognize_pem, so this should work. */\n \trsa_key = rsa_from_buffer(buf, len);\n@@ -223,10 +225,11 @@ int ft_show_pem(const char *name, uint8_t *buf, uint32_t len, void *data)\n \t\tDIE;\n \n \t/* Use to presence of the private exponent to decide if it's public */\n-\tprintf(\"%s Key file:      %s\\n\", rsa_key->d ? \"Private\" : \"Public\",\n+\tRSA_get0_key(rsa_key, &rsa_key_n, NULL, &rsa_key_d);\n+\tprintf(\"%s Key file:      %s\\n\", rsa_key_d ? \"Private\" : \"Public\",\n \t\t\t\t\t name);\n \n-\tbits = BN_num_bits(rsa_key->n);\n+\tbits = BN_num_bits(rsa_key_n);\n \tprintf(\"  Key length:          %d\\n\", bits);\n \n \tif (vb_keyb_from_rsa(rsa_key, &keyb, &keyb_len)) {\ndiff --git a/host/include/openssl_compat.h b/host/include/openssl_compat.h\nnew file mode 100644\nindex 00000000..7771f32a\n--- /dev/null\n+++ b/host/include/openssl_compat.h\n@@ -0,0 +1,26 @@\n+/* Copyright 2017 The Chromium OS Authors. All rights reserved.\n+ * Use of this source code is governed by a BSD-style license that can be\n+ * found in the LICENSE file.\n+ */\n+\n+#ifndef VBOOT_REFERENCE_OPENSSL_COMPAT_H_\n+#define VBOOT_REFERENCE_OPENSSL_COMPAT_H_\n+\n+#include <openssl/rsa.h>\n+\n+#if OPENSSL_VERSION_NUMBER < 0x10100000L\n+\n+static inline void RSA_get0_key(const RSA *rsa, const BIGNUM **n,\n+\t\t\t\tconst BIGNUM **e, const BIGNUM **d)\n+{\n+\tif (n != NULL)\n+\t\t*n = rsa->n;\n+\tif (e != NULL)\n+\t\t*e = rsa->e;\n+\tif (d != NULL)\n+\t\t*d = rsa->d;\n+}\n+\n+#endif  /* OPENSSL_VERSION_NUMBER < 0x10100000L */\n+\n+#endif  /* VBOOT_REFERENCE_OPENSSL_COMPAT_H_ */\ndiff --git a/host/lib/util_misc.c b/host/lib/util_misc.c\nindex 03ec683f..f0a1f7ad 100644\n--- a/host/lib/util_misc.c\n+++ b/host/lib/util_misc.c\n@@ -15,6 +15,7 @@\n \n #include \"cryptolib.h\"\n #include \"host_common.h\"\n+#include \"openssl_compat.h\"\n #include \"util_misc.h\"\n #include \"vboot_common.h\"\n \n@@ -58,6 +59,7 @@ int vb_keyb_from_rsa(struct rsa_st *rsa_private_key,\n \tBIGNUM *N0inv = NULL, *R = NULL, *RR = NULL;\n \tBIGNUM *RRTemp = NULL, *NnumBits = NULL;\n \tBIGNUM *n = NULL, *rr = NULL;\n+\tconst BIGNUM *rsa_private_key_n;\n \tBN_CTX *bn_ctx = BN_CTX_new();\n \tuint32_t n0invout;\n \tuint32_t bufsize;\n@@ -65,7 +67,7 @@ int vb_keyb_from_rsa(struct rsa_st *rsa_private_key,\n \tint retval = 1;\n \n \t/* Size of RSA key in 32-bit words */\n-\tnwords = BN_num_bits(rsa_private_key->n) / 32;\n+\tnwords = RSA_size(rsa_private_key) / 4;\n \n \tbufsize = (2 + nwords + nwords) * sizeof(uint32_t);\n \toutbuf = malloc(bufsize);\n@@ -94,7 +96,8 @@ int vb_keyb_from_rsa(struct rsa_st *rsa_private_key,\n \tNEW_BIGNUM(B);\n #undef NEW_BIGNUM\n \n-\tBN_copy(N, rsa_private_key->n);\n+\tRSA_get0_key(rsa_private_key, &rsa_private_key_n, NULL, NULL);\n+\tBN_copy(N, rsa_private_key_n);\n \tBN_set_word(Big1, 1L);\n \tBN_set_word(Big2, 2L);\n \tBN_set_word(Big32, 32L);\ndiff --git a/host/lib21/host_key.c b/host/lib21/host_key.c\nindex f7ea1622..f9419ad3 100644\n--- a/host/lib21/host_key.c\n+++ b/host/lib21/host_key.c\n@@ -17,6 +17,7 @@\n #include \"host_common.h\"\n #include \"host_key2.h\"\n #include \"host_misc.h\"\n+#include \"openssl_compat.h\"\n \n struct vb2_text_vs_enum vb2_text_vs_algorithm[] = {\n \t{\"RSA1024 SHA1\",   VB2_ALG_RSA1024_SHA1},\n@@ -544,7 +545,12 @@ int vb2_public_key_hash(struct vb2_public_key *key,\n \n enum vb2_signature_algorithm vb2_rsa_sig_alg(struct rsa_st *rsa)\n {\n-\tint bits = BN_num_bits(rsa->n);\n+\tconst BIGNUM *e, *n;\n+\tint exp, bits;\n+\n+\tRSA_get0_key(rsa, &n, &e, NULL);\n+\texp = BN_get_word(e);\n+\tbits = BN_num_bits(n);\n \n \tswitch (bits) {\n \tcase 1024:\ndiff --git a/utility/dumpRSAPublicKey.c b/utility/dumpRSAPublicKey.c\nindex b3b7b96b..a17b159e 100644\n--- a/utility/dumpRSAPublicKey.c\n+++ b/utility/dumpRSAPublicKey.c\n@@ -14,14 +14,20 @@\n #include <string.h>\n #include <unistd.h>\n \n+#include \"openssl_compat.h\"\n+\n /* Command line tool to extract RSA public keys from X.509 certificates\n  * and output a pre-processed version of keys for use by RSA verification\n  * routines.\n  */\n \n int check(RSA* key) {\n-  int public_exponent = BN_get_word(key->e);\n-  int modulus = BN_num_bits(key->n);\n+  const BIGNUM *n, *e;\n+  int public_exponent, modulus;\n+\n+  RSA_get0_key(key, &n, &e, NULL);\n+  public_exponent = BN_get_word(e);\n+  modulus = BN_num_bits(n);\n \n   if (public_exponent != 65537) {\n     fprintf(stderr, \"WARNING: Public exponent should be 65537 (but is %d).\\n\",\n@@ -40,7 +46,8 @@ int check(RSA* key) {\n  */\n void output(RSA* key) {\n   int i, nwords;\n-  BIGNUM *N = key->n;\n+  const BIGNUM *key_n;\n+  BIGNUM *N = NULL;\n   BIGNUM *Big1 = NULL, *Big2 = NULL, *Big32 = NULL, *BigMinus1 = NULL;\n   BIGNUM *B = NULL;\n   BIGNUM *N0inv= NULL, *R = NULL, *RR = NULL, *RRTemp = NULL, *NnumBits = NULL;\n@@ -48,14 +55,15 @@ void output(RSA* key) {\n   BN_CTX *bn_ctx = BN_CTX_new();\n   uint32_t n0invout;\n \n-  N = key->n;\n   /* Output size of RSA key in 32-bit words */\n-  nwords = BN_num_bits(N) / 32;\n+  nwords = RSA_size(key) / 4;\n   if (-1 == write(1, &nwords, sizeof(nwords)))\n     goto failure;\n \n \n   /* Initialize BIGNUMs */\n+  RSA_get0_key(key, &key_n, NULL, NULL);\n+  N = BN_dup(key_n);\n   Big1 = BN_new();\n   Big2 = BN_new();\n   Big32 = BN_new();\n@@ -120,6 +128,7 @@ void output(RSA* key) {\n \n failure:\n   /* Free BIGNUMs. */\n+  BN_free(N);\n   BN_free(Big1);\n   BN_free(Big2);\n   BN_free(Big32);\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/vboot-utils/0007-Make-vboot_version-extern-in-header.patch",
    "content": "From df4d2000a22db673a788b8e57e8e7c0cc3cee777 Mon Sep 17 00:00:00 2001\nFrom: Leonard Chan <leonardchan@google.com>\nDate: Thu, 3 Oct 2019 18:53:04 -0700\nSubject: [PATCH] Make vboot_version extern in header\n\nWhen enabling `-fno-common` in Fuchsia, we get a bunch of linker errors\nwhen linking futility:\n\n```\nld.lld: error: duplicate symbol: vboot_version\n>>> defined at futility.h:43 (../../third_party/vboot_reference/futility/futility.h:43)\n>>>            host_x63-asan_no_detect_leaks/obj/third_party/vboot_reference/futility/futility.cmd_bdb.c.o:(vboot_version)\n>>> defined at futility.h:43 (../../third_party/vboot_reference/futility/futility.h:43)\n>>>            host_x64-asan_no_detect_leaks/obj/third_party/vboot_reference/futility/futility.cmd_create.c.o:(.bss.vboot_version+0x0)\n```\n\nand think this is because -fno-common places vboot_version for\nunitialized global variables in the BSS section of each object file.\nMaking it extern instead resolves each reference to its definition in\nfutility/misc.c.\n\nChange-Id: I591f07abd1f975a8a9d078bb4366e2e0861390b4\nReviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1839207\nReviewed-by: Julius Werner <jwerner@chromium.org>\nReviewed-by: Joel Kitching <kitching@chromium.org>\nCommit-Queue: Julius Werner <jwerner@chromium.org>\nTested-by: Julius Werner <jwerner@chromium.org>\n\nPatch taken from upstream: https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/df4d2000a22db673a788b8e57e8e7c0cc3cee777\nSigned-off-by: Heiko Thiery <heiko.thiery@gmail.com>\n---\n futility/futility.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/futility/futility.h b/futility/futility.h\nindex 3bce1106..5dc426dd 100644\n--- a/futility/futility.h\n+++ b/futility/futility.h\n@@ -41,7 +41,7 @@ enum vboot_version  {\n };\n \n /* What's our preferred API & data format? */\n-enum vboot_version vboot_version;\n+extern enum vboot_version vboot_version;\n \n /* Here's a structure to define the commands that futility implements. */\n struct futil_cmd_t {\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/vboot-utils/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_VBOOT_UTILS\n\tbool \"host vboot utils\"\n\tselect BR2_PACKAGE_HOST_UTIL_LINUX\n\thelp\n\t  Chromium OS verified boot utilities: futility and cgpt.\n\n\t  https://www.chromium.org/chromium-os/chromiumos-design-docs/verified-boot\n"
  },
  {
    "path": "package/vboot-utils/vboot-utils.hash",
    "content": "# Locally computed\nsha256  9cdeaa2e4e1190c0cd200e1b07d394e5d24f57cc0efffdce861d5de934035bf7  vboot-utils-bbdd62f9b030db7ad8eef789aaf58a7ff9a25656-br1.tar.gz\nsha256  cb9dc8e96aedf9120b6757a60387db10f3c1a8e3fd97bb9d0f11327be5a7ed4d  LICENSE\n"
  },
  {
    "path": "package/vboot-utils/vboot-utils.mk",
    "content": "################################################################################\n#\n# vboot-utils\n#\n################################################################################\n\nVBOOT_UTILS_VERSION = bbdd62f9b030db7ad8eef789aaf58a7ff9a25656\nVBOOT_UTILS_SITE = https://chromium.googlesource.com/chromiumos/platform/vboot_reference\nVBOOT_UTILS_SITE_METHOD = git\nVBOOT_UTILS_LICENSE = BSD-3-Clause\nVBOOT_UTILS_LICENSE_FILES = LICENSE\n\nHOST_VBOOT_UTILS_DEPENDENCIES = host-openssl host-util-linux host-pkgconf\n\n# vboot_reference contains code that goes into bootloaders,\n# utilities intended for the target system, and a bunch of scripts\n# for Chromium OS build system. Most of that does not make sense\n# in a buildroot host-package.\n#\n# We only need futility for signing images, the keys, and cgpt for boot\n# media partitioning.\n#\n# make target for futility is \"futil\".\n#\n# The value of ARCH is only relevant for crossystem (a target tool) and\n# does not affect futil or cgpt in any way as long as it is one of the\n# supported targets.\n\ndefine HOST_VBOOT_UTILS_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\tCC=\"$(HOSTCC)\" \\\n\t\tCFLAGS=\"$(HOST_CFLAGS) -D_LARGEFILE64_SOURCE -D_GNU_SOURCE\" \\\n\t\tLDFLAGS=\"$(HOST_LDFLAGS)\" \\\n\t\tARCH=arm \\\n\t\tfutil cgpt\nendef\n\ndefine HOST_VBOOT_UTILS_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(HOST_DIR) \\\n\t\tfutil_install cgpt_install devkeys_install\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/vde2/0001-no-cxx.patch",
    "content": "configure: do not test for CXX, it's not needed\n\nThere is no C++ source file, so no reason to require a C++ compiler.\n\nReported-by: Peter Korsgaard <jacmet@uclibc.org>\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\n---\nPatch sent upstream\n( not yet in archives, awaits moderator approval... :-/ )\n\ndiff -durN vde2-2.3.2.orig/configure.ac vde2-2.3.2/configure.ac\n--- vde2-2.3.2.orig/configure.ac\t2011-11-23 17:41:19.000000000 +0100\n+++ vde2-2.3.2/configure.ac\t2012-12-14 21:56:47.146319686 +0100\n@@ -11,7 +11,6 @@\n AC_CONFIG_LIBOBJ_DIR(src/common)\n \n # Checks for programs.\n-AC_PROG_CXX\n AC_PROG_CC\n AC_PROG_INSTALL\n AC_PROG_LN_S\n"
  },
  {
    "path": "package/vde2/0002-fstp-Add-static-to-inline-functions.patch",
    "content": "From 67bc8443ac7e8144a78d84dee30a5cac3b5c99a4 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sun, 27 Aug 2017 23:56:05 +0200\nSubject: [PATCH] fstp: Add static to inline functions\n\nFrom [1]\n\"This is needed to avoid a link error where the inline functions appear\nmissing at link time.\nFrom c99 standard inline function should either be declared static or\nhave an extern instance in a c file for linking.\nThis fix is necessary to build with gcc 7; for some reason it was not\ntrigerred before.\"\n\n[1] https://git.buildroot.net/buildroot/commit/?id=21133ada326c87627f7bdee4493d8086587c3cca\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n src/vde_switch/fstp.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/src/vde_switch/fstp.c b/src/vde_switch/fstp.c\nindex aab7324..b1e7ee8 100644\n--- a/src/vde_switch/fstp.c\n+++ b/src/vde_switch/fstp.c\n@@ -30,14 +30,14 @@ static int numports;\n #ifdef FSTP\n #include <fstp.h>\n /*********************** sending macro used by FSTP & Core ******************/\n-void inline ltonstring(unsigned long l,unsigned char *s) {\n+static void inline ltonstring(unsigned long l,unsigned char *s) {\n \ts[3]=l; l>>=8;\n \ts[2]=l; l>>=8;\n \ts[1]=l; l>>=8;\n \ts[0]=l;\n }\n \n-unsigned long inline nstringtol(unsigned char *s) {\n+static unsigned long inline nstringtol(unsigned char *s) {\n \treturn (s[0]<<24)+(s[1]<<16)+(s[2]<<8)+s[3];\n }\n \n-- \n2.9.5\n\n"
  },
  {
    "path": "package/vde2/Config.in",
    "content": "config BR2_PACKAGE_VDE2\n\tbool \"vde2\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS # dlopen()\n\thelp\n\t  VDE is an ethernet compliant virtual network that can be\n\t  spawned over a set of physical computers over the Internet.\n\t  VDE is part of the virtualsquare project.\n\n\t  http://vde.sourceforge.net/\n\ncomment \"vde2 needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/vde2/vde2.hash",
    "content": "# Locally computed:\nsha256  cbea9b7e03097f87a6b5e98b07890d2275848f1fe4b9fcda77b8994148bc9542  vde2-2.3.2.tar.bz2\nsha256  fb295d0c24b8ef4b39017ac68e772e8e6e839612ce10da12b9f48d1e8e512e2e  COPYING\nsha256  5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a  COPYING.libvdeplug\nsha256  d5ac74315b2d2f9c53f5839e311484f4646a9401b68d02d36f3dab386352e74d  COPYING.slirpvde\n"
  },
  {
    "path": "package/vde2/vde2.mk",
    "content": "################################################################################\n#\n# vde2\n#\n################################################################################\n\nVDE2_VERSION = 2.3.2\nVDE2_SOURCE = vde2-$(VDE2_VERSION).tar.bz2\nVDE2_SITE = http://downloads.sourceforge.net/project/vde/vde2/$(VDE2_VERSION)\nVDE2_LICENSE = GPL-2.0+, LGPL-2.1+, BSD-3-Clause\nVDE2_LICENSE_FILES = COPYING COPYING.libvdeplug COPYING.slirpvde\nVDE2_CPE_ID_VENDOR = vde_project\nVDE2_CPE_ID_PRODUCT = vde\nVDE2_INSTALL_STAGING = YES\n\n# We touch configure.ac, so we need to autoreconf\nVDE2_AUTORECONF = YES\n\n# Reasons for enabling/disabling stuff:\n# - tuntap is enabled in the hope we're using a recent-enough toolchain\n#   that does have if_tun.h (virtually everything these days)\n# - kvde_switch is disabled because it requires a patched kernel\n# - cryptcab is disabled to not depend on openSSL\n# - python is disabled to not depend on Python\n# - pcap is disabled to not depend on libpcap\n# - profiling is disabled because we do not want to debug/profile\n#\n# Note: disabled features can be added with corresponding dependencies\n#       in future commits.\nVDE2_CONF_OPTS = \\\n\t--disable-cryptcab \\\n\t--disable-experimental \\\n\t--disable-kernel-switch \\\n\t--disable-pcap \\\n\t--disable-profile \\\n\t--disable-python \\\n\t--enable-tuntap\n\n# Package does not build in parallel due to improper make rules\nVDE2_MAKE = $(MAKE1)\n\nHOST_VDE2_CONF_OPTS = \\\n\t--disable-cryptcab \\\n\t--disable-experimental \\\n\t--disable-kernel-switch \\\n\t--disable-pcap \\\n\t--disable-profile \\\n\t--disable-python \\\n\t--enable-tuntap\n\nHOST_VDE2_MAKE = $(MAKE1)\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/vdr/Config.in",
    "content": "config BR2_PACKAGE_VDR\n\tbool \"vdr\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # execinfo.h\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBCAP\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  This project describes how to build your own digital\n\t  satellite receiver and Video Disk Recorder.\n\n\t  http://www.tvdr.de\n\ncomment \"vdr needs a glibc toolchain w/ C++, dynamic library, NPTL, wchar, headers >= 3.9\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\t!BR2_TOOLCHAIN_USES_GLIBC || !BR2_USE_WCHAR || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9\n"
  },
  {
    "path": "package/vdr/vdr.hash",
    "content": "# Locally computed\nsha256  27026b78a663758211d15c83a21555e28d91ab640c6d4f6cdd860f2abf1cae84  vdr-2.5.6.tar.gz\nsha256  ddb9db7630752f8fdc6898f7c99a99eaeeac5213627ecb093df9c82f56175dc7  COPYING\n"
  },
  {
    "path": "package/vdr/vdr.mk",
    "content": "################################################################################\n#\n# vdr\n#\n################################################################################\n\nVDR_VERSION = 2.5.6\nVDR_SITE = $(call github,vdr-projects,vdr,$(VDR_VERSION))\nVDR_LICENSE = GPL-2.0+\nVDR_LICENSE_FILES = COPYING\nVDR_CPE_ID_VENDOR = tvdr\nVDR_INSTALL_STAGING = YES\nVDR_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tfreetype \\\n\tfontconfig \\\n\tjpeg \\\n\tlibcap \\\n\t$(TARGET_NLS_DEPENDENCIES)\n\nVDR_MAKE_FLAGS = \\\n\tNO_KBD=yes \\\n\tPKG_CONFIG=$(PKG_CONFIG_HOST_BINARY) \\\n\tPLUGINLIBDIR=/usr/lib/vdr \\\n\tPREFIX=/usr \\\n\tVIDEODIR=/var/lib/vdr\nVDR_LDFLAGS = $(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_LIBFRIBIDI),y)\nVDR_DEPENDENCIES += libfribidi\nVDR_MAKE_FLAGS += BIDI=1\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nVDR_DEPENDENCIES += libiconv\nVDR_LDFLAGS += -liconv\nendif\n\nVDR_MAKE_ENV = \\\n\tLDFLAGS=\"$(VDR_LDFLAGS)\" \\\n\t$(VDR_MAKE_FLAGS)\n\ndefine VDR_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(VDR_MAKE_ENV) \\\n\t\tvdr vdr.pc include-dir\nendef\n\ndefine VDR_INSTALL_STAGING_CMDS\n\t$(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(VDR_MAKE_ENV) \\\n\t\tDESTDIR=$(STAGING_DIR) \\\n\t\tinstall-dirs install-bin install-conf install-includes \\\n\t\tinstall-pc\nendef\n\ndefine VDR_INSTALL_TARGET_CMDS\n\t$(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(VDR_MAKE_ENV) \\\n\t\tDESTDIR=$(TARGET_DIR) \\\n\t\tinstall-dirs install-bin install-conf\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/vdr-plugin-vnsiserver/Config.in",
    "content": "config BR2_PACKAGE_VDR_PLUGIN_VNSISERVER\n\tbool \"vdr-plugin-vnsiserver\"\n\tdepends on BR2_PACKAGE_VDR\n\thelp\n\t  VDR plugin to handle KODI clients.\n\t  The vdr-plugin-vnsiserver is able to handle serveral KODI\n\t  clients connecting via the VNSI addon.\n\n\t  https://github.com/FernetMenta/vdr-plugin-vnsiserver\n"
  },
  {
    "path": "package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.hash",
    "content": "# Locally computed\nsha256 d5989461541a91fe4de4ca9c396d4e7b2f4a8663fc9d6155d0830d2b143fce4d  vdr-plugin-vnsiserver-1.8.0.tar.gz\nsha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.mk",
    "content": "################################################################################\n#\n# vdr-plugin-vnsiserver\n#\n################################################################################\n\nVDR_PLUGIN_VNSISERVER_VERSION = 1.8.0\nVDR_PLUGIN_VNSISERVER_SITE = $(call github,FernetMenta,vdr-plugin-vnsiserver,v$(VDR_PLUGIN_VNSISERVER_VERSION))\nVDR_PLUGIN_VNSISERVER_LICENSE = GPL-2.0+\nVDR_PLUGIN_VNSISERVER_LICENSE_FILES = COPYING\nVDR_PLUGIN_VNSISERVER_DEPENDENCIES = vdr\n\nVDR_PLUGIN_VNSISERVER_CXXFLAGS = CXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11 -fPIC\"\n\nVDR_PLUGIN_VNSISERVER_INSTALL_TARGETS = install-lib\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nVDR_PLUGIN_VNSISERVER_INSTALL_TARGETS += install-i18n\nendif\n\ndefine VDR_PLUGIN_VNSISERVER_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\t$(VDR_PLUGIN_VNSISERVER_CXXFLAGS)\nendef\n\ndefine VDR_PLUGIN_VNSISERVER_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\t$(VDR_PLUGIN_VNSISERVER_INSTALL_TARGETS) DESTDIR=$(TARGET_DIR) \\\n\t\tLIBDIR=/usr/lib/vdr LOCDIR=/usr/share/locale\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/vim/Config.in",
    "content": "config BR2_PACKAGE_VIM\n\tbool \"vim\"\n\tdepends on BR2_USE_MMU # uses fork()\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  VIM Text editor\n\n\t  http://www.vim.org/\n\nif BR2_PACKAGE_VIM\n\nconfig BR2_PACKAGE_VIM_RUNTIME\n\tbool \"install runtime\"\n\tdefault y\n\thelp\n\t  Install VIM runtime (syntax highlighing + macros).\n\t  This option adds about 11MB of data to /usr/share/\n\nendif\n\ncomment \"vim needs a toolchain w/ wchar\"\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/vim/vim.hash",
    "content": "# Locally computed\nsha256  16ff13ea2a11da96080510fdfccf5f3a05f82e2c7027494bd8c98704bbf14428  vim-8.2.3690.tar.gz\nsha256  0bcab3b635dd39208c42b496568d1e8171dad247cf3da5bab3d750c9d5883499  LICENSE\nsha256  96970b67f9cb38b0e759946cff22562a3c4b11ce78f62f2117d5e7ecded9ab4d  README.txt\n"
  },
  {
    "path": "package/vim/vim.mk",
    "content": "################################################################################\n#\n# vim\n#\n################################################################################\n\nVIM_VERSION = 8.2.3690\nVIM_SITE = $(call github,vim,vim,v$(VIM_VERSION))\nVIM_DEPENDENCIES = ncurses $(TARGET_NLS_DEPENDENCIES)\nVIM_SUBDIR = src\nVIM_CONF_ENV = \\\n\tvim_cv_toupper_broken=no \\\n\tvim_cv_terminfo=yes \\\n\tvim_cv_tgetent=zero \\\n\tvim_cv_tty_group=world \\\n\tvim_cv_tty_mode=0620 \\\n\tvim_cv_getcwd_broken=no \\\n\tvim_cv_stat_ignores_slash=yes \\\n\tvim_cv_memmove_handles_overlap=yes \\\n\tac_cv_sizeof_int=4 \\\n\tac_cv_small_wchar_t=no\n# GUI/X11 headers leak from the host so forcibly disable them\nVIM_CONF_OPTS = --with-tlib=ncurses --enable-gui=no --without-x\nVIM_LICENSE = Charityware\nVIM_LICENSE_FILES = LICENSE README.txt\nVIM_CPE_ID_VENDOR = vim\n\nifeq ($(BR2_PACKAGE_ACL),y)\nVIM_CONF_OPTS += --enable-acl\nVIM_DEPENDENCIES += acl\nelse\nVIM_CONF_OPTS += --disable-acl\nendif\n\nifeq ($(BR2_PACKAGE_GPM),y)\nVIM_CONF_OPTS += --enable-gpm\nVIM_DEPENDENCIES += gpm\nelse\nVIM_CONF_OPTS += --disable-gpm\nendif\n\nifeq ($(BR2_PACKAGE_LIBSELINUX),y)\nVIM_CONF_OPTS += --enable-selinux\nVIM_DEPENDENCIES += libselinux\nelse\nVIM_CONF_OPTS += --disable-selinux\nendif\n\ndefine VIM_INSTALL_TARGET_CMDS\n\tcd $(@D)/src; \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installvimbin; \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installtools; \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installlinks\nendef\n\ndefine VIM_INSTALL_RUNTIME_CMDS\n\tcd $(@D)/src; \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installrtbase; \\\n\t\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installmacros\nendef\n\ndefine VIM_REMOVE_DOCS\n\t$(RM) -rf $(TARGET_DIR)/usr/share/vim/vim*/doc/\nendef\n\n# Avoid oopses with vipw/vigr, lack of $EDITOR and 'vi' command expectation\nifeq ($(BR2_ROOTFS_MERGED_USR),y)\ndefine VIM_INSTALL_VI_SYMLINK\n\tln -sf vim $(TARGET_DIR)/usr/bin/vi\nendef\nelse\ndefine VIM_INSTALL_VI_SYMLINK\n\tln -sf ../usr/bin/vim $(TARGET_DIR)/bin/vi\nendef\nendif\nVIM_POST_INSTALL_TARGET_HOOKS += VIM_INSTALL_VI_SYMLINK\n\nifeq ($(BR2_PACKAGE_VIM_RUNTIME),y)\nVIM_POST_INSTALL_TARGET_HOOKS += VIM_INSTALL_RUNTIME_CMDS\nVIM_POST_INSTALL_TARGET_HOOKS += VIM_REMOVE_DOCS\nendif\n\nHOST_VIM_DEPENDENCIES = host-ncurses\nHOST_VIM_CONF_OPTS = \\\n\t--with-tlib=ncurses \\\n\t--enable-gui=no \\\n\t--without-x \\\n\t--disable-acl \\\n\t--disable-gpm \\\n\t--disable-selinux\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/vlc/0001-Disable-building-of-statically-linked-vlc-binary.patch",
    "content": "From 7c2b3343a30ee53a1cded2ca5e712d8cd7d50f5f Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Tue, 1 May 2018 22:27:21 +0200\nSubject: [PATCH] Disable building of statically linked vlc binary\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n Makefile.am     | 2 +-\n bin/Makefile.am | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 3ac82623ad..637504a3f5 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -108,7 +108,7 @@ libvlc: libvlccore\n \tcd lib && $(MAKE) $(AM_MAKEFLAGS) libvlc.la\n \n core: libvlc vlc$(EXEEXT)\n-\tcd bin && $(MAKE) $(AM_MAKEFLAGS) vlc$(EXEEXT) vlc-static$(EXEEXT)\n+\tcd bin && $(MAKE) $(AM_MAKEFLAGS) vlc$(EXEEXT)\n \n doc:\n \tcd doc && $(MAKE) $(AM_MAKEFLAGS) doc\ndiff --git a/bin/Makefile.am b/bin/Makefile.am\nindex 2877e8b0ea..bef4160e8b 100644\n--- a/bin/Makefile.am\n+++ b/bin/Makefile.am\n@@ -6,7 +6,7 @@ bin_PROGRAMS = vlc-osx\n noinst_PROGRAMS = vlc-osx-static\n else\n bin_PROGRAMS = vlc\n-noinst_PROGRAMS = vlc-static\n+noinst_PROGRAMS =\n endif\n endif\n EXTRA_DIST = vlc_win32_rc.rc.in\n-- \n2.14.4\n\n"
  },
  {
    "path": "package/vlc/0002-automake-add-subdir-objects-option.patch",
    "content": "From 54e7e0bda02099ae9d1c42abed1932ffa8d354e8 Mon Sep 17 00:00:00 2001\nFrom: \"Arnout Vandecappelle (Essensium/Mind)\" <arnout@mind.be>\nDate: Tue, 1 May 2018 22:28:52 +0200\nSubject: [PATCH] automake: add subdir-objects option\n\nOur version of automake warns if this option is enabled and source files\nin subdirectories are used.\n\nIt doesn't really seems to have a noticable effect on the build, but it\ndoes remove a lot of annoying warnings.\n\nSigned-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n---\n configure.ac | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 206690b468..dfb4c1c329 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -24,7 +24,7 @@ AC_CANONICAL_BUILD\n AC_CANONICAL_HOST\n AC_PRESERVE_HELP_ORDER\n \n-AM_INIT_AUTOMAKE(tar-ustar color-tests foreign)\n+AM_INIT_AUTOMAKE(tar-ustar color-tests foreign subdir-objects)\n AC_CONFIG_HEADERS([config.h])\n \n AM_SILENT_RULES([yes])\n-- \n2.14.4\n\n"
  },
  {
    "path": "package/vlc/0003-build-use-pkg-config-to-get-tremor-libs.patch",
    "content": "From fb257e1e204c30436b3509ea3fa9f7c5fe131dc1 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 16 Oct 2018 14:25:20 +0200\nSubject: [PATCH] build: use pkg-config to get tremor libs\n\nUse PKG_ENABLE_MODULES_VLC to enable tremor based on availability of\nogg and vorbisidec\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n configure.ac              | 9 +--------\n modules/codec/Makefile.am | 2 +-\n 2 files changed, 2 insertions(+), 9 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 0d3222e00f..b506d735f2 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -2710,14 +2710,7 @@ PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorb\n dnl\n dnl  Tremor plugin\n dnl\n-AC_ARG_ENABLE(tremor,\n-  [  --enable-tremor         Tremor decoder support (default disabled)])\n-if test \"${enable_tremor}\" = \"yes\"\n-then\n-  AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [\n-    VLC_ADD_PLUGIN([tremor])\n-   ],[])\n-fi\n+PKG_ENABLE_MODULES_VLC([TREMOR], [], [vorbisidec ogg], [Tremor decoder support], [disabled])\n \n dnl\n dnl  Speex plugins\ndiff --git a/modules/codec/Makefile.am b/modules/codec/Makefile.am\nindex 075ee2a0e9..637b1d45a6 100644\n--- a/modules/codec/Makefile.am\n+++ b/modules/codec/Makefile.am\n@@ -318,7 +318,7 @@ codec_LTLIBRARIES += $(LTLIBdaala)\n libtremor_plugin_la_SOURCES = codec/vorbis.c\n libtremor_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) -DMODULE_NAME_IS_tremor\n libtremor_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(codecdir)'\n-libtremor_plugin_la_LIBADD = -lvorbisdec -logg\n+libtremor_plugin_la_LIBADD = $(TREMOR_LIBS)\n EXTRA_LTLIBRARIES += libtremor_plugin.la\n codec_LTLIBRARIES += $(LTLIBtremor)\n \n-- \n2.17.1\n\n"
  },
  {
    "path": "package/vlc/0004-Fix-build-error-using-uClibc-by-adding-sys-types.h.patch",
    "content": "From bbb15b9cbf9353423619f2c40abdf95d861e66ba Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sat, 2 Apr 2016 16:49:54 +0200\nSubject: [PATCH] Fix build error using uClibc by adding sys/types.h\n\nFixes\n\n  CC       core.lo\nIn file included from libvlc_internal.h:35:0,\n                 from core.c:28:\n../include/vlc/libvlc_media.h:313:18: error: expected declaration specifiers or '...' before '*' token\n typedef ssize_t (*libvlc_media_read_cb)(void *opaque, unsigned char *buf,\n                  ^\n../include/vlc/libvlc_media.h:423:36: error: unknown type name 'libvlc_media_read_cb'\n                                    libvlc_media_read_cb read_cb,\n                                    ^\nBug was reported to trac:\nhttps://trac.videolan.org/vlc/ticket/16768\n\nThis patch was suggested by courmisch in the trac ticket.\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n[Patch sent upstream:\n https://mailman.videolan.org/pipermail/vlc-devel/2016-April/106952.html]\n---\n include/vlc/libvlc_media.h | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/include/vlc/libvlc_media.h b/include/vlc/libvlc_media.h\nindex 383f366b69..1cbf00c3e3 100644\n--- a/include/vlc/libvlc_media.h\n+++ b/include/vlc/libvlc_media.h\n@@ -26,6 +26,8 @@\n #ifndef VLC_LIBVLC_MEDIA_H\n #define VLC_LIBVLC_MEDIA_H 1\n \n+#include <sys/types.h>  /* for ssize_t */\n+\n # ifdef __cplusplus\n extern \"C\" {\n # endif\n-- \n2.14.4\n\n"
  },
  {
    "path": "package/vlc/0005-Don-t-assume-strerror_l-is-available.patch",
    "content": "From 0435cf37308652af1cf244b6429e919fa7ffaa95 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Tue, 1 May 2018 22:31:23 +0200\nSubject: [PATCH] Don't assume strerror_l() is available\n\nFix compile error\n\n  CCLD     vlc\n/home/br/br3/output/build/vlc-2.2.1/src/.libs/libvlccore.so: undefined reference to `strerror_l'\n\nCode for #else condition was taken from\nhttp://patches.osdyson.org/patch/series/view/vlc/2.2.0~rc2-1+dyson2/dyson.patch\n\n[Bernd: rebased for vlc-3.0.6 & 3.0.9.2]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n configure.ac      | 2 +-\n src/posix/error.c | 4 ++++\n 2 files changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex dfb4c1c329..bfe43512a2 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -590,7 +590,7 @@ dnl Check for system libs needed\n need_libc=false\n \n dnl Check for usual libc functions\n-AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatvfs fork getenv getmntent_r getpwuid_r isatty lstat memalign mkostemp mmap newlocale open_memstream openat pipe2 pread posix_fadvise posix_madvise posix_memalign setlocale stricmp strnicmp strptime uselocale])\n+AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatvfs fork getenv getmntent_r getpwuid_r isatty lstat memalign mkostemp mmap newlocale open_memstream openat pipe2 pread posix_fadvise posix_madvise posix_memalign setlocale strerror_l stricmp strnicmp strptime uselocale])\n AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir ffsll flockfile fsync getdelim getpid lfind lldiv memrchr nrand48 poll recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tdestroy tfind timegm timespec_get strverscmp pathconf])\n AC_REPLACE_FUNCS([gettimeofday])\n AC_CHECK_FUNC(fdatasync,,\ndiff --git a/src/posix/error.c b/src/posix/error.c\nindex db51004601..b4aa6fb3ca 100644\n--- a/src/posix/error.c\n+++ b/src/posix/error.c\n@@ -31,6 +31,7 @@\n \n static const char *vlc_strerror_l(int errnum, const char *lname)\n {\n+#ifdef HAVE_STRERROR_L\n     int saved_errno = errno;\n     locale_t loc = newlocale(LC_MESSAGES_MASK, lname, (locale_t)0);\n \n@@ -51,6 +52,9 @@ static const char *vlc_strerror_l(int errnum, const char *lname)\n     const char *buf = strerror_l(errnum, loc);\n \n     freelocale(loc);\n+#else\n+    const char *buf = strerror(errnum);\n+#endif\n     return buf;\n }\n \n-- \n2.14.4\n\n"
  },
  {
    "path": "package/vlc/0006-posix-remove-ancient-run-time-fallback-to-real-time-.patch",
    "content": "From 5d561e1e2dcde3c9fca4d925f12447009d0d4a4c Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>\nDate: Wed, 18 Apr 2018 17:23:57 +0300\nSubject: [PATCH] posix: remove ancient run-time fallback to real-time clock\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nposix: remove ancient run-time fallback to real-time clock\n\nFor hysterical raisins, GNU/Linux and possibly some other OSes still\nreport that monotonic clock must be checked at run-time, although I\ndoubt that VLC or even current glibc would run on such old kernel.\n\nDrop that to simplify and avoid the systematic one-time init check.\n\nDownloaded from upstream commit to fix build error on m68k:\n\nposix/thread.c:79:5: warning: #warning Monotonic clock not available. Expect timing issues. [-Wcpp]\n #   warning Monotonic clock not available. Expect timing issues.\n     ^~~~~~~\nposix/thread.c: In function ‘vlc_clock_setup_once’:\nposix/thread.c:88:18: error: lvalue required as left operand of assignment\n     vlc_clock_id = (val < 0) ? CLOCK_REALTIME : CLOCK_MONOTONIC;\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n src/posix/thread.c | 96 +++++++-----------------------------------------------\n 1 file changed, 11 insertions(+), 85 deletions(-)\n\ndiff --git a/src/posix/thread.c b/src/posix/thread.c\nindex dab8b71f97..8878941913 100644\n--- a/src/posix/thread.c\n+++ b/src/posix/thread.c\n@@ -51,62 +51,16 @@\n # include <sys/pset.h>\n #endif\n \n-#if !defined (_POSIX_TIMERS)\n-# define _POSIX_TIMERS (-1)\n-#endif\n-#if !defined (_POSIX_CLOCK_SELECTION)\n-/* Clock selection was defined in 2001 and became mandatory in 2008. */\n-# define _POSIX_CLOCK_SELECTION (-1)\n-#endif\n-#if !defined (_POSIX_MONOTONIC_CLOCK)\n-# define _POSIX_MONOTONIC_CLOCK (-1)\n-#endif\n-\n-#if (_POSIX_TIMERS > 0)\n static unsigned vlc_clock_prec;\n \n-# if (_POSIX_MONOTONIC_CLOCK > 0) && (_POSIX_CLOCK_SELECTION > 0)\n-/* Compile-time POSIX monotonic clock support */\n-#  define vlc_clock_id (CLOCK_MONOTONIC)\n-\n-# elif (_POSIX_MONOTONIC_CLOCK == 0) && (_POSIX_CLOCK_SELECTION > 0)\n-/* Run-time POSIX monotonic clock support (see clock_setup() below) */\n-static clockid_t vlc_clock_id;\n-\n-# else\n-/* No POSIX monotonic clock support */\n-#   define vlc_clock_id (CLOCK_REALTIME)\n-#   warning Monotonic clock not available. Expect timing issues.\n-\n-# endif /* _POSIX_MONOTONIC_CLOKC */\n-\n static void vlc_clock_setup_once (void)\n {\n-# if (_POSIX_MONOTONIC_CLOCK == 0)\n-    long val = sysconf (_SC_MONOTONIC_CLOCK);\n-    assert (val != 0);\n-    vlc_clock_id = (val < 0) ? CLOCK_REALTIME : CLOCK_MONOTONIC;\n-# endif\n-\n     struct timespec res;\n-    if (unlikely(clock_getres (vlc_clock_id, &res) != 0 || res.tv_sec != 0))\n+    if (unlikely(clock_getres(CLOCK_MONOTONIC, &res) != 0 || res.tv_sec != 0))\n         abort ();\n     vlc_clock_prec = (res.tv_nsec + 500) / 1000;\n }\n \n-static pthread_once_t vlc_clock_once = PTHREAD_ONCE_INIT;\n-\n-# define vlc_clock_setup() \\\n-    pthread_once(&vlc_clock_once, vlc_clock_setup_once)\n-\n-#else /* _POSIX_TIMERS */\n-\n-# include <sys/time.h> /* gettimeofday() */\n-\n-# define vlc_clock_setup() (void)0\n-# warning Monotonic clock not available. Expect timing issues.\n-#endif /* _POSIX_TIMERS */\n-\n static struct timespec mtime_to_ts (mtime_t date)\n {\n     lldiv_t d = lldiv (date, CLOCK_FREQ);\n@@ -233,14 +187,11 @@ void vlc_cond_init (vlc_cond_t *p_condvar)\n {\n     pthread_condattr_t attr;\n \n-    if (unlikely(pthread_condattr_init (&attr)))\n-        abort ();\n-#if (_POSIX_CLOCK_SELECTION > 0)\n-    vlc_clock_setup ();\n-    pthread_condattr_setclock (&attr, vlc_clock_id);\n-#endif\n-    if (unlikely(pthread_cond_init (p_condvar, &attr)))\n+    if (unlikely(pthread_condattr_init (&attr))\n+     || unlikely(pthread_condattr_setclock(&attr, CLOCK_MONOTONIC))\n+     || unlikely(pthread_cond_init (p_condvar, &attr)))\n         abort ();\n+\n     pthread_condattr_destroy (&attr);\n }\n \n@@ -625,44 +576,27 @@ void vlc_control_cancel (int cmd, ...)\n \n mtime_t mdate (void)\n {\n-#if (_POSIX_TIMERS > 0)\n     struct timespec ts;\n \n-    vlc_clock_setup ();\n-    if (unlikely(clock_gettime (vlc_clock_id, &ts) != 0))\n+    if (unlikely(clock_gettime(CLOCK_MONOTONIC, &ts) != 0))\n         abort ();\n \n     return (INT64_C(1000000) * ts.tv_sec) + (ts.tv_nsec / 1000);\n-\n-#else\n-    struct timeval tv;\n-\n-    if (unlikely(gettimeofday (&tv, NULL) != 0))\n-        abort ();\n-    return (INT64_C(1000000) * tv.tv_sec) + tv.tv_usec;\n-\n-#endif\n }\n \n #undef mwait\n void mwait (mtime_t deadline)\n {\n-#if (_POSIX_CLOCK_SELECTION > 0)\n-    vlc_clock_setup ();\n+    static pthread_once_t vlc_clock_once = PTHREAD_ONCE_INIT;\n+\n     /* If the deadline is already elapsed, or within the clock precision,\n      * do not even bother the system timer. */\n+    pthread_once(&vlc_clock_once, vlc_clock_setup_once);\n     deadline -= vlc_clock_prec;\n \n     struct timespec ts = mtime_to_ts (deadline);\n \n-    while (clock_nanosleep (vlc_clock_id, TIMER_ABSTIME, &ts, NULL) == EINTR);\n-\n-#else\n-    deadline -= mdate ();\n-    if (deadline > 0)\n-        msleep (deadline);\n-\n-#endif\n+    while (clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &ts, NULL) == EINTR);\n }\n \n #undef msleep\n@@ -670,15 +604,7 @@ void msleep (mtime_t delay)\n {\n     struct timespec ts = mtime_to_ts (delay);\n \n-#if (_POSIX_CLOCK_SELECTION > 0)\n-    vlc_clock_setup ();\n-    while (clock_nanosleep (vlc_clock_id, 0, &ts, &ts) == EINTR);\n-\n-#else\n-    while (nanosleep (&ts, &ts) == -1)\n-        assert (errno == EINTR);\n-\n-#endif\n+    while (clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, &ts) == EINTR);\n }\n \n unsigned vlc_GetCPUCount(void)\n-- \n2.14.4\n\n"
  },
  {
    "path": "package/vlc/0007-Add-support-for-freerdp2.patch",
    "content": "From 3780bbb20bf35aa8f21ac672da3f0c5f408468e9 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Thu, 16 Aug 2018 12:27:40 +0200\nSubject: [PATCH] Add support for freerdp2\n\nDownloaded from\nhttps://gitweb.gentoo.org/repo/gentoo.git/tree/media-video/vlc/files/vlc-2.2.8-freerdp-2.patch\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n configure.ac         |  2 +-\n modules/access/rdp.c | 51 ++++++++++++++-------------------------------------\n 2 files changed, 15 insertions(+), 38 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex bfe43512a2..4808b8becf 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -1992,7 +1992,7 @@ PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client su\n \n dnl  RDP/Remote Desktop access module\n dnl\n-PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) )\n+PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp2 >= 1.0.1], (RDP/Remote Desktop client support) )\n \n dnl\n dnl  Real RTSP plugin\ndiff --git a/modules/access/rdp.c b/modules/access/rdp.c\nindex 2992090219..49986f5da9 100644\n--- a/modules/access/rdp.c\n+++ b/modules/access/rdp.c\n@@ -45,18 +45,6 @@\n # include <freerdp/version.h>\n #endif\n \n-#if !defined(FREERDP_VERSION_MAJOR) || \\\n-    (defined(FREERDP_VERSION_MAJOR) && !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 1)))\n-# define SoftwareGdi sw_gdi\n-# define Fullscreen fullscreen\n-# define ServerHostname hostname\n-# define Username username\n-# define Password password\n-# define ServerPort port\n-# define EncryptionMethods encryption\n-# define ContextSize context_size\n-#endif\n-\n #include <errno.h>\n #ifdef HAVE_POLL\n # include <poll.h>\n@@ -144,6 +132,7 @@ static void desktopResizeHandler( rdpContext *p_context )\n     vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_context;\n     demux_sys_t *p_sys = p_vlccontext->p_demux->p_sys;\n     rdpGdi *p_gdi = p_context->gdi;\n+    unsigned bytesPerPixel;\n \n     if ( p_sys->es )\n     {\n@@ -153,17 +142,21 @@ static void desktopResizeHandler( rdpContext *p_context )\n \n     /* Now init and fill es format */\n     vlc_fourcc_t i_chroma;\n-    switch( p_gdi->bytesPerPixel )\n+    switch( p_gdi->dstFormat )\n     {\n         default:\n-        case 16:\n+            msg_Dbg( p_vlccontext->p_demux, \"unhandled dstFormat %x bpp\", p_gdi->dstFormat);\n+        case PIXEL_FORMAT_BGR16:\n             i_chroma = VLC_CODEC_RGB16;\n+            bytesPerPixel = 16;\n             break;\n-        case 24:\n+        case PIXEL_FORMAT_BGR24:\n             i_chroma = VLC_CODEC_RGB24;\n+            bytesPerPixel = 24;\n             break;\n-        case 32:\n+        case PIXEL_FORMAT_BGRA32:\n             i_chroma = VLC_CODEC_RGB32;\n+            bytesPerPixel = 32;\n             break;\n     }\n     es_format_t fmt;\n@@ -176,7 +169,7 @@ static void desktopResizeHandler( rdpContext *p_context )\n     fmt.video.i_height = p_gdi->height;\n     fmt.video.i_frame_rate_base = 1000;\n     fmt.video.i_frame_rate = 1000 * p_sys->f_fps;\n-    p_sys->i_framebuffersize = p_gdi->width * p_gdi->height * p_gdi->bytesPerPixel;\n+    p_sys->i_framebuffersize = p_gdi->width * p_gdi->height * bytesPerPixel;\n \n     if ( p_sys->p_block )\n         p_sys->p_block = block_Realloc( p_sys->p_block, 0, p_sys->i_framebuffersize );\n@@ -237,28 +230,19 @@ static bool postConnectHandler( freerdp *p_instance )\n     vlcrdp_context_t * p_vlccontext = (vlcrdp_context_t *) p_instance->context;\n \n     msg_Dbg( p_vlccontext->p_demux, \"connected to desktop %dx%d (%d bpp)\",\n-#if defined(FREERDP_VERSION_MAJOR) && (FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 1))\n              p_instance->settings->DesktopWidth,\n              p_instance->settings->DesktopHeight,\n              p_instance->settings->ColorDepth\n-#else\n-             p_instance->settings->width,\n-             p_instance->settings->height,\n-             p_instance->settings->color_depth\n-#endif\n              );\n \n     p_instance->update->DesktopResize = desktopResizeHandler;\n     p_instance->update->BeginPaint = beginPaintHandler;\n     p_instance->update->EndPaint = endPaintHandler;\n \n-    gdi_init( p_instance,\n-                CLRBUF_16BPP |\n-#if defined(FREERDP_VERSION_MAJOR) && defined(FREERDP_VERSION_MINOR) && \\\n-    !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 2))\n-                CLRBUF_24BPP |\n-#endif\n-                CLRBUF_32BPP, NULL );\n+    if ( p_instance->settings->ColorDepth > 16 )\n+        gdi_init( p_instance, PIXEL_FORMAT_XRGB32);\n+    else\n+        gdi_init( p_instance, PIXEL_FORMAT_RGB16);\n \n     desktopResizeHandler( p_instance->context );\n     return true;\n@@ -432,10 +416,6 @@ static int Open( vlc_object_t *p_this )\n     if ( p_sys->f_fps <= 0 ) p_sys->f_fps = 1.0;\n     p_sys->i_frame_interval = 1000000 / p_sys->f_fps;\n \n-#if FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR < 2\n-    freerdp_channels_global_init();\n-#endif\n-\n     p_sys->p_instance = freerdp_new();\n     if ( !p_sys->p_instance )\n     {\n@@ -508,9 +488,6 @@ static void Close( vlc_object_t *p_this )\n \n     freerdp_disconnect( p_sys->p_instance );\n     freerdp_free( p_sys->p_instance );\n-#if FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR < 2\n-    freerdp_channels_global_uninit();\n-#endif\n \n     if ( p_sys->p_block )\n         block_Release( p_sys->p_block );\n-- \n2.14.4\n\n"
  },
  {
    "path": "package/vlc/0008-configure.ac-also-use-AC_PATH_PROG-to-check-for-wayl.patch",
    "content": "From 27635f902831fac898586f1f3dc98369f12582c9 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sun, 26 Aug 2018 12:51:04 +0200\nSubject: [PATCH] configure.ac: also use AC_PATH_PROG to check for\n wayland-scanner\n\nWhen cross-compiling the .pc file might point to the wrong\nwayland-scanner binary (target rather than host) resulting in a\nnon-executable and wrong scanner.\nTry searching the PATH first, and if that fails fall back into\npkg-config.\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n configure.ac | 19 +++++++++++--------\n 1 file changed, 11 insertions(+), 8 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex 4808b8becf..a18641ed23 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -3140,14 +3140,17 @@ AS_IF([test \"${enable_wayland}\" != \"no\"], [\n       AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors 'wayland-protocols >= 1.4')])\n     ])\n \n-    AC_MSG_CHECKING([for the Wayland scanner])\n-    PKG_CHECK_EXISTS([wayland-scanner], [\n-      WAYLAND_SCANNER=\"$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)\"\n-      AC_MSG_RESULT([${WAYLAND_SCANNER}])\n-    ], [\n-      AC_MSG_RESULT([not found])\n-      AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors wayland-scanner)])\n-    ])\n+    AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])\n+    if test \"x$WAYLAND_SCANNER\" = x; then\n+        AC_MSG_CHECKING([for the Wayland scanner])\n+        PKG_CHECK_EXISTS([wayland-scanner], [\n+          WAYLAND_SCANNER=\"$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)\"\n+          AC_MSG_RESULT([${WAYLAND_SCANNER}])\n+        ], [\n+          AC_MSG_RESULT([not found])\n+          AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors wayland-scanner)])\n+        ])\n+    fi\n \n     have_wayland=\"yes\"\n \n-- \n2.18.0\n\n"
  },
  {
    "path": "package/vlc/0009-modules-video_filter-opencv_example.cpp-fix-build-wi.patch",
    "content": "From 57b1e723b73da4c8d42c20d4e28040ec4c0edd85 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 28 Feb 2020 14:29:47 +0100\nSubject: [PATCH] modules/video_filter/opencv_example.cpp: fix build with\n opencv 3.4.9\n\nUse cvScalar instead of CV_RGB to avoid the following build failure with\nopencv 3.4.9:\n\nIn file included from /home/naourr/work/instance-2/output-1/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/opencv2/imgproc/imgproc.hpp:48,\n                 from video_filter/opencv_example.cpp:46:\nvideo_filter/opencv_example.cpp: In function 'picture_t* Filter(filter_t*, picture_t*)':\nvideo_filter/opencv_example.cpp:200:46: error: could not convert 'cv::Scalar_<double>((double)0, (double)0, (double)0, (double)0)' from 'cv::Scalar' {aka 'cv::Scalar_<double>'} to 'CvScalar'\n             cvRectangle( p_img[0], pt1, pt2, CV_RGB(0,0,0), 3, 8, 0 );\n                                              ^~~~~~\n\nIndeed, CV_RGB is defined as cv::Scalar instead of cvScalar since\nversion 3.4.2 and\nhttps://github.com/opencv/opencv/commit/7f9253ea0a9fe2635926379420002dbf0c3fce0f\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://patches.videolan.org/patch/26655]\n---\n modules/video_filter/opencv_example.cpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/modules/video_filter/opencv_example.cpp b/modules/video_filter/opencv_example.cpp\nindex 1334cd4c36..1a8d574f7a 100644\n--- a/modules/video_filter/opencv_example.cpp\n+++ b/modules/video_filter/opencv_example.cpp\n@@ -202,7 +202,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )\n             pt2.x = (r->x+r->width)*scale;\n             pt1.y = r->y*scale;\n             pt2.y = (r->y+r->height)*scale;\n-            cvRectangle( p_img[0], pt1, pt2, CV_RGB(0,0,0), 3, 8, 0 );\n+            cvRectangle( p_img[0], pt1, pt2, cvScalar(0,0,0,0), 3, 8, 0 );\n \n             *(CvRect*)(&(p_sys->event_info.p_region[i])) = *r;\n             p_sys->event_info.p_region[i].i_id = p_sys->i_id++;\n-- \n2.25.0\n\n"
  },
  {
    "path": "package/vlc/0010-modules-access-live555.cpp-fix-build-with-live555-20.patch",
    "content": "From eba390d13ec4089cd6b9d8687ab3f8905b9d3ac8 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 22 May 2021 22:56:04 +0200\nSubject: [PATCH] modules/access/live555.cpp: fix build with live555 >=\n 2020.12.11\n\nSince live555-2020.12.11, connectionEndpointAddress() member function\nuse a \"struct sockaddr_storage\" in preparation for eventual support of\nIPv6: http://www.live555.com/liveMedia/public/changelog.txt\n\nFixes:\n - http://autobuild.buildroot.org/results/83170984f96238756c45bf1f4e542363afafd45f\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n modules/access/live555.cpp | 4 +++-\n 1 file changed, 3 insertions(+), 1 deletion(-)\n\ndiff --git a/modules/access/live555.cpp b/modules/access/live555.cpp\nindex 9d6e01ae32..32a6c294eb 100644\n--- a/modules/access/live555.cpp\n+++ b/modules/access/live555.cpp\n@@ -850,7 +850,9 @@ static int SessionsSetup( demux_t *p_demux )\n             if( !p_sys->b_multicast )\n             {\n                 /* We need different rollover behaviour for multicast */\n-                p_sys->b_multicast = IsMulticastAddress( sub->connectionEndpointAddress() );\n+                struct sockaddr_storage tempAddr;\n+                sub->getConnectionEndpointAddress( tempAddr );\n+                p_sys->b_multicast = IsMulticastAddress( tempAddr );\n             }\n \n             tk = (live_track_t*)malloc( sizeof( live_track_t ) );\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/vlc/Config.in",
    "content": "config BR2_PACKAGE_VLC\n\tbool \"vlc\"\n\tdepends on !BR2_RISCV_32\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7\n\tselect BR2_PACKAGE_LIBVORBIS if BR2_PACKAGE_OPUS\n\tselect BR2_PACKAGE_VLC_OPENCV3_BACKEND if BR2_PACKAGE_OPENCV3\n\tselect BR2_PACKAGE_ZLIB if BR2_PACKAGE_TAGLIB\n\thelp\n\t  VLC is a free and open source cross-platform multimedia player\n\t  and framework that plays most multimedia files as well as DVD,\n\t  Audio CD, VCD, and various streaming protocols.\n\n\t  http://www.videolan.org/vlc/\n\nconfig BR2_PACKAGE_VLC_OPENCV3_BACKEND\n\tbool\n\tselect BR2_PACKAGE_OPENCV3_LIB_IMGPROC\n\tselect BR2_PACKAGE_OPENCV3_LIB_OBJDETECT\n\ncomment \"vlc needs a toolchain w/ C++, dynamic library, wchar, threads, gcc >= 4.9, headers >= 3.7\"\n\tdepends on !BR2_RISCV_32\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS \\\n\t\t|| !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \\\n\t\t|| !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7\n"
  },
  {
    "path": "package/vlc/vlc.hash",
    "content": "# From https://get.videolan.org/vlc/3.0.16/vlc-3.0.16.tar.xz.sha256\nsha256  ffae35fc64f625c175571d2346bc5f6207be99762517f15423e74f18399410f6  vlc-3.0.16.tar.xz\n# From https://get.videolan.org/vlc/3.0.16/vlc-3.0.16.tar.xz.sha1\nsha1  e22ac839a09b5ead8992ae6aa8ea886364283e6a  vlc-3.0.16.tar.xz\n# Locally computed\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB\n"
  },
  {
    "path": "package/vlc/vlc.mk",
    "content": "################################################################################\n#\n# vlc\n#\n################################################################################\n\nVLC_VERSION = 3.0.16\nVLC_SITE = https://get.videolan.org/vlc/$(VLC_VERSION)\nVLC_SOURCE = vlc-$(VLC_VERSION).tar.xz\nVLC_LICENSE = GPL-2.0+, LGPL-2.1+\nVLC_LICENSE_FILES = COPYING COPYING.LIB\nVLC_CPE_ID_VENDOR = videolan\nVLC_CPE_ID_PRODUCT = vlc_media_player\nVLC_DEPENDENCIES = host-pkgconf\nVLC_AUTORECONF = YES\n\n# Install vlc libraries in staging.\nVLC_INSTALL_STAGING = YES\n\n# gcc bug internal compiler error: in merge_overlapping_regs, at\n# regrename.c:304. This bug is fixed since gcc 6.\nifeq ($(BR2_microblaze)$(BR2_or1k):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:)\nVLC_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -O0\"\nVLC_CONF_OPTS += --disable-optimizations\nendif\n\n# configure check for -fstack-protector-strong is broken\nVLC_CONF_ENV += \\\n\tax_cv_check_cflags___fstack_protector_strong=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no)\n\n# VLC defines two autoconf functions which are also defined by our own pkg.m4\n# from pkgconf. Unfortunately, they are defined in a different way: VLC adds\n# --enable- options, but pkg.m4 adds --with- options. To make sure we use\n# VLC's definition, rename these two functions.\ndefine VLC_OVERRIDE_PKG_M4\n\t$(SED) 's/PKG_WITH_MODULES/VLC_PKG_WITH_MODULES/g' \\\n\t\t-e 's/PKG_HAVE_WITH_MODULES/VLC_PKG_HAVE_WITH_MODULES/g' \\\n\t\t$(@D)/configure.ac $(@D)/m4/with_pkg.m4\nendef\nVLC_POST_PATCH_HOOKS += VLC_OVERRIDE_PKG_M4\n\nVLC_CONF_OPTS += \\\n\t--disable-a52 \\\n\t--disable-addonmanagermodules \\\n\t--disable-aom \\\n\t--disable-aribb25 \\\n\t--disable-aribsub \\\n\t--disable-asdcp \\\n\t--disable-bpg \\\n\t--disable-caca \\\n\t--disable-chromaprint \\\n\t--disable-chromecast \\\n\t--disable-crystalhd \\\n\t--disable-dc1394 \\\n\t--disable-dca \\\n\t--disable-decklink \\\n\t--disable-dsm \\\n\t--disable-dv1394 \\\n\t--disable-fluidlite \\\n\t--disable-gme \\\n\t--disable-goom \\\n\t--disable-jack \\\n\t--disable-jpeg \\\n\t--disable-kai \\\n\t--disable-kate \\\n\t--disable-kva \\\n\t--disable-libplacebo \\\n\t--disable-linsys \\\n\t--disable-mfx \\\n\t--disable-microdns \\\n\t--disable-mmal \\\n\t--disable-mtp \\\n\t--disable-notify \\\n\t--disable-projectm \\\n\t--disable-schroedinger \\\n\t--disable-shine \\\n\t--disable-shout \\\n\t--disable-sndio \\\n\t--disable-spatialaudio \\\n\t--disable-srt \\\n\t--disable-telx \\\n\t--disable-tiger \\\n\t--disable-twolame \\\n\t--disable-vdpau \\\n\t--disable-vsxu \\\n\t--disable-wasapi \\\n\t--disable-x262 \\\n\t--disable-zvbi \\\n\t--enable-run-as-root\n\n# Uses __atomic_fetch_add_4\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nVLC_CONF_ENV += LIBS=\"-latomic\"\nendif\n\n# Building static and shared doesn't work, so force static off.\nifeq ($(BR2_STATIC_LIBS),)\nVLC_CONF_OPTS += --disable-static\nendif\n\nifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y)\nVLC_CONF_OPTS += --enable-altivec\nelse\nVLC_CONF_OPTS += --disable-altivec\nendif\n\nifeq ($(BR2_X86_CPU_HAS_SSE),y)\nVLC_CONF_OPTS += --enable-sse\nelse\nVLC_CONF_OPTS += --disable-sse\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB),y)\nVLC_CONF_OPTS += --enable-alsa\nVLC_DEPENDENCIES += alsa-lib\nelse\nVLC_CONF_OPTS += --disable-alsa\nendif\n\n# avahi support needs avahi-client, which needs avahi-daemon and dbus\nifeq ($(BR2_PACKAGE_AVAHI)$(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yyy)\nVLC_CONF_OPTS += --enable-avahi\nVLC_DEPENDENCIES += avahi\nelse\nVLC_CONF_OPTS += --disable-avahi\nendif\n\nifeq ($(BR2_PACKAGE_DAV1D),y)\nVLC_CONF_OPTS += --enable-dav1d\nVLC_DEPENDENCIES += dav1d\nelse\nVLC_CONF_OPTS += --disable-dav1d\nendif\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nVLC_CONF_OPTS += --enable-dbus\nVLC_DEPENDENCIES += dbus\nelse\nVLC_CONF_OPTS += --disable-dbus\nendif\n\nifeq ($(BR2_PACKAGE_FAAD2),y)\nVLC_CONF_OPTS += --enable-faad\nVLC_DEPENDENCIES += faad2\nelse\nVLC_CONF_OPTS += --disable-faad\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG),y)\nVLC_CONF_OPTS += --enable-avcodec\nVLC_DEPENDENCIES += ffmpeg\nelse\nVLC_CONF_OPTS += --disable-avcodec\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y)\nVLC_CONF_OPTS += --enable-postproc\nelse\nVLC_CONF_OPTS += --disable-postproc\nendif\n\nifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y)\nVLC_CONF_OPTS += --enable-swscale\nelse\nVLC_CONF_OPTS += --disable-swscale\nendif\n\nifeq ($(BR2_PACKAGE_FLAC),y)\nVLC_CONF_OPTS += --enable-flac\nVLC_DEPENDENCIES += flac\nelse\nVLC_CONF_OPTS += --disable-flac\nendif\n\nifeq ($(BR2_PACKAGE_FLUIDSYNTH),y)\nVLC_CONF_OPTS += --enable-fluidsynth\nVLC_DEPENDENCIES += fluidsynth\nelse\nVLC_CONF_OPTS += --disable-fluidsynth\nendif\n\nifeq ($(BR2_PACKAGE_FREERDP),y)\nVLC_CONF_OPTS += --enable-freerdp\nVLC_DEPENDENCIES += freerdp\nelse\nVLC_CONF_OPTS += --disable-freerdp\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y)\nVLC_CONF_OPTS += --enable-gst-decode\nVLC_DEPENDENCIES += gst1-plugins-base\nelse\nVLC_CONF_OPTS += --disable-gst-decode\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBGL),y)\nVLC_DEPENDENCIES += libgl\nendif\n\nifeq ($(BR2_PACKAGE_HARFBUZZ),y)\nVLC_CONF_OPTS += --enable-harfbuzz\nVLC_DEPENDENCIES += harfbuzz\nelse\nVLC_CONF_OPTS += --disable-harfbuzz\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBGLES),y)\nVLC_CONF_OPTS += --enable-gles2\nVLC_DEPENDENCIES += libgles\nelse\nVLC_CONF_OPTS += --disable-gles2\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3),y)\nVLC_CONF_OPTS += --enable-opencv\nVLC_DEPENDENCIES += opencv3\nelse\nVLC_CONF_OPTS += --disable-opencv\nendif\n\nifeq ($(BR2_PACKAGE_OPUS),y)\nVLC_CONF_OPTS += --enable-opus\nVLC_DEPENDENCIES += libvorbis opus\nelse\nVLC_CONF_OPTS += --disable-opus\nendif\n\nifeq ($(BR2_PACKAGE_LIBARCHIVE),y)\nVLC_CONF_OPTS += --enable-archive\nVLC_DEPENDENCIES += libarchive\nelse\nVLC_CONF_OPTS += --disable-archive\nendif\n\nifeq ($(BR2_PACKAGE_LIBASS),y)\nVLC_CONF_OPTS += --enable-libass\nVLC_DEPENDENCIES += libass\nelse\nVLC_CONF_OPTS += --disable-libass\nendif\n\nifeq ($(BR2_PACKAGE_LIBBLURAY),y)\nVLC_CONF_OPTS += --enable-bluray\nVLC_DEPENDENCIES += libbluray\nelse\nVLC_CONF_OPTS += --disable-bluray\nendif\n\nifeq ($(BR2_PACKAGE_LIBCDDB),y)\nVLC_CONF_OPTS += --enable-libcddb\nVLC_DEPENDENCIES += libcddb\nelse\nVLC_CONF_OPTS += --disable-libcddb\nendif\n\nifeq ($(BR2_PACKAGE_LIBDVBPSI),y)\nVLC_CONF_OPTS += --enable-dvbpsi\nVLC_DEPENDENCIES += libdvbpsi\nelse\nVLC_CONF_OPTS += --disable-dvbpsi\nendif\n\nifeq ($(BR2_PACKAGE_LIBDVDNAV),y)\nVLC_CONF_OPTS += --enable-dvdnav\nVLC_DEPENDENCIES += libdvdnav\nelse\nVLC_CONF_OPTS += --disable-dvdnav\nendif\n\nifeq ($(BR2_PACKAGE_LIBDVDREAD),y)\nVLC_CONF_OPTS += --enable-dvdread\nVLC_DEPENDENCIES += libdvdread\nelse\nVLC_CONF_OPTS += --disable-dvdread\nendif\n\nifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nVLC_CONF_OPTS += --enable-libgcrypt\nVLC_DEPENDENCIES += libgcrypt\nVLC_CONF_ENV += \\\n\tGCRYPT_CONFIG=\"$(STAGING_DIR)/usr/bin/libgcrypt-config\"\nelse\nVLC_CONF_OPTS += --disable-libgcrypt\nendif\n\nifeq ($(BR2_PACKAGE_LIBIDN),y)\nVLC_DEPENDENCIES += libidn\nendif\n\nifeq ($(BR2_PACKAGE_LIBMAD),y)\nVLC_CONF_OPTS += --enable-mad\nVLC_DEPENDENCIES += libmad\nelse\nVLC_CONF_OPTS += --disable-mad\nendif\n\nifeq ($(BR2_PACKAGE_LIBMATROSKA),y)\nVLC_CONF_OPTS += --enable-matroska\nVLC_DEPENDENCIES += libmatroska\nelse\nVLC_CONF_OPTS += --disable-matroska\nendif\n\nifeq ($(BR2_PACKAGE_LIBMODPLUG),y)\nVLC_CONF_OPTS += --enable-mod\nVLC_DEPENDENCIES += libmodplug\nelse\nVLC_CONF_OPTS += --disable-mod\nendif\n\nifeq ($(BR2_PACKAGE_LIBMPEG2),y)\nVLC_CONF_OPTS += --enable-libmpeg2\nVLC_DEPENDENCIES += libmpeg2\nelse\nVLC_CONF_OPTS += --disable-libmpeg2\nendif\n\nifeq ($(BR2_PACKAGE_LIBNFS),y)\nVLC_CONF_OPTS += --enable-nfs\nVLC_DEPENDENCIES += libnfs\nelse\nVLC_CONF_OPTS += --disable-nfs\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nVLC_CONF_OPTS += --enable-png\nVLC_DEPENDENCIES += libpng\nelse\nVLC_CONF_OPTS += --disable-png\nendif\n\nifeq ($(BR2_PACKAGE_LIBRSVG),y)\nVLC_CONF_OPTS += --enable-svg --enable-svgdec\nVLC_DEPENDENCIES += librsvg\nelse\nVLC_CONF_OPTS += --disable-svg --disable-svgdec\nendif\n\nifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y)\nVLC_CONF_OPTS += --enable-samplerate\nVLC_DEPENDENCIES += libsamplerate\nelse\nVLC_CONF_OPTS += --disable-samplerate\nendif\n\nifeq ($(BR2_PACKAGE_LIBSECRET),y)\nVLC_CONF_OPTS += --enable-secret\nVLC_DEPENDENCIES += libsecret\nelse\nVLC_CONF_OPTS += --disable-secret\nendif\n\nifeq ($(BR2_PACKAGE_LIBSOXR),y)\nVLC_CONF_OPTS += --enable-soxr\nVLC_DEPENDENCIES += libsoxr\nelse\nVLC_CONF_OPTS += --disable-soxr\nendif\n\nifeq ($(BR2_PACKAGE_LIBSSH2),y)\nVLC_CONF_OPTS += --enable-sftp\nVLC_DEPENDENCIES += libssh2\nelse\nVLC_CONF_OPTS += --disable-sftp\nendif\n\nifeq ($(BR2_PACKAGE_LIBSIDPLAY2),y)\nVLC_CONF_OPTS += --enable-sid\nVLC_DEPENDENCIES += libsidplay2\nelse\nVLC_CONF_OPTS += --disable-sid\nendif\n\nifeq ($(BR2_PACKAGE_LIBTHEORA),y)\nVLC_CONF_OPTS += --enable-theora\nVLC_DEPENDENCIES += libtheora\nelse\nVLC_CONF_OPTS += --disable-theora\nendif\n\nifeq ($(BR2_PACKAGE_LIBUPNP),y)\nVLC_CONF_OPTS += --enable-upnp\nVLC_DEPENDENCIES += libupnp\nelse\nVLC_CONF_OPTS += --disable-upnp\nendif\n\n# libva support depends on ffmpeg\nifeq ($(BR2_PACKAGE_FFMPEG)$(BR2_PACKAGE_LIBVA),yy)\nVLC_CONF_OPTS += --enable-libva\nVLC_DEPENDENCIES += libva\nelse\nVLC_CONF_OPTS += --disable-libva\nendif\n\nifeq ($(BR2_PACKAGE_LIBVNCSERVER),y)\nVLC_CONF_OPTS += --enable-vnc\nVLC_DEPENDENCIES += libvncserver\nelse\nVLC_CONF_OPTS += --disable-vnc\nendif\n\nifeq ($(BR2_PACKAGE_LIBVORBIS),y)\nVLC_CONF_OPTS += --enable-vorbis\nVLC_DEPENDENCIES += libvorbis\nelse\nVLC_CONF_OPTS += --disable-vorbis\nendif\n\nifeq ($(BR2_PACKAGE_LIBV4L),y)\nVLC_CONF_OPTS += --enable-v4l2\nVLC_DEPENDENCIES += libv4l\nelse\nVLC_CONF_OPTS += --disable-v4l2\nendif\n\nifeq ($(BR2_PACKAGE_LIBVPX),y)\nVLC_CONF_OPTS += --enable-vpx\nVLC_DEPENDENCIES += libvpx\nelse\nVLC_CONF_OPTS += --disable-vpx\nendif\n\nifeq ($(BR2_PACKAGE_LIBXCB),y)\nVLC_CONF_OPTS += --enable-xcb\nVLC_DEPENDENCIES += libxcb\nelse\nVLC_CONF_OPTS += --disable-xcb\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nVLC_CONF_OPTS += --enable-libxml2\nVLC_DEPENDENCIES += libxml2\nelse\nVLC_CONF_OPTS += --disable-libxml2\nendif\n\nifeq ($(BR2_PACKAGE_LIVE555),y)\nVLC_CONF_OPTS += --enable-live555\nVLC_DEPENDENCIES += live555\nifneq ($(BR2_PACKAGE_OPENSSL),y)\nVLC_CONF_ENV += CXXFLAGS=\"$(TARGET_CXXFLAGS) -DNO_OPENSSL\"\nendif\nelse\nVLC_CONF_OPTS += --disable-live555\nendif\n\nifeq ($(BR2_PACKAGE_LUA),y)\nVLC_CONF_OPTS += --enable-lua\nVLC_DEPENDENCIES += lua host-lua\nelse\nVLC_CONF_OPTS += --disable-lua\nendif\n\nifeq ($(BR2_PACKAGE_MINIZIP),y)\nVLC_DEPENDENCIES += minizip\nendif\n\nifeq ($(BR2_PACKAGE_MPG123),y)\nVLC_CONF_OPTS += --enable-mpg123\nVLC_DEPENDENCIES += mpg123\nelse\nVLC_CONF_OPTS += --disable-mpg123\nendif\n\nifeq ($(BR2_PACKAGE_MUSEPACK),y)\nVLC_CONF_OPTS += --enable-mpc\nVLC_DEPENDENCIES += musepack\nelse\nVLC_CONF_OPTS += --disable-mpc\nendif\n\nifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)\nVLC_CONF_OPTS += --enable-ncurses\nVLC_DEPENDENCIES += ncurses\nelse\nVLC_CONF_OPTS += --disable-ncurses\nendif\n\nifeq ($(BR2_PACKAGE_PULSEAUDIO),y)\nVLC_CONF_OPTS += --enable-pulse\nVLC_DEPENDENCIES += pulseaudio\nelse\nVLC_CONF_OPTS += --disable-pulse\nendif\n\nifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS)$(BR2_PACKAGE_QT5SVG),yy)\nVLC_CONF_OPTS += --enable-qt\nVLC_DEPENDENCIES += qt5base qt5svg\nifeq ($(BR2_PACKAGE_XLIB_LIBXEXT)$(BR2_PACKAGE_XLIB_LIBXINERAMA)$(BR2_PACKAGE_XLIB_LIBXPM),yyy)\nVLC_CONF_OPTS += --enable-skins2\nVLC_DEPENDENCIES += xlib_libXext xlib_libXinerama xlib_libXpm\nelse\nVLC_CONF_OPTS += --disable-skins2\nendif\nelse\nVLC_CONF_OPTS += --disable-qt --disable-skins2\nendif\n\nifeq ($(BR2_PACKAGE_SDL_IMAGE),y)\nVLC_CONF_OPTS += --enable-sdl-image\nVLC_DEPENDENCIES += sdl_image\nelse\nVLC_CONF_OPTS += --disable-sdl-image\nendif\n\nifeq ($(BR2_PACKAGE_SAMBA4),y)\nVLC_CONF_OPTS += --enable-smbclient\nVLC_DEPENDENCIES += samba4\nelse\nVLC_CONF_OPTS += --disable-smbclient\nendif\n\nifeq ($(BR2_PACKAGE_SPEEX)$(BR2_PACKAGE_SPEEXDSP),yy)\nVLC_CONF_OPTS += --enable-speex\nVLC_DEPENDENCIES += speex speexdsp\nelse\nVLC_CONF_OPTS += --disable-speex\nendif\n\nifeq ($(BR2_PACKAGE_TAGLIB),y)\nVLC_CONF_OPTS += --enable-taglib\nVLC_DEPENDENCIES += taglib\nelse\nVLC_CONF_OPTS += --disable-taglib\nendif\n\nifeq ($(BR2_PACKAGE_TREMOR),y)\nVLC_CONF_OPTS += --enable-tremor\nVLC_DEPENDENCIES += tremor\nelse\nVLC_CONF_OPTS += --disable-tremor\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nVLC_CONF_OPTS += --enable-udev\nVLC_DEPENDENCIES += udev\nelse\nVLC_CONF_OPTS += --disable-udev\nendif\n\nifeq ($(BR2_PACKAGE_WAYLAND)$(BR2_PACKAGE_WAYLAND_PROTOCOLS),yy)\nVLC_CONF_OPTS += --enable-wayland\nVLC_DEPENDENCIES += wayland wayland-protocols\nelse\nVLC_CONF_OPTS += --disable-wayland\nendif\n\nifeq ($(BR2_PACKAGE_X264),y)\nVLC_CONF_OPTS += --enable-x264\nVLC_DEPENDENCIES += x264\nelse\nVLC_CONF_OPTS += --disable-x264\nendif\n\nifeq ($(BR2_PACKAGE_X265),y)\nVLC_CONF_OPTS += --enable-x265\nVLC_DEPENDENCIES += x265\nelse\nVLC_CONF_OPTS += --disable-x265\nendif\n\nifeq ($(BR2_PACKAGE_XCB_UTIL_KEYSYMS),y)\nVLC_DEPENDENCIES += xcb-util-keysyms\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)\nVLC_CONF_OPTS += --with-x\nVLC_DEPENDENCIES += xlib_libX11\nelse\nVLC_CONF_OPTS += --without-x\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nVLC_DEPENDENCIES += zlib\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nVLC_CONF_OPTS += --enable-gnutls\nVLC_DEPENDENCIES += gnutls\nelse\nVLC_CONF_OPTS += --disable-gnutls\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/vmtouch/Config.in",
    "content": "config BR2_PACKAGE_VMTOUCH\n\tbool \"vmtouch\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  vmtouch is a tool for learning about and controlling\n\t  the file system cache of unix and unix-like systems. It\n\t  can discover which files the OS is caching, tell the OS\n\t  to cache or evict some files or regions of files, lock\n\t  files into memory so the OS won't evict them, and more.\n\n\t  https://hoytech.com/vmtouch/\n"
  },
  {
    "path": "package/vmtouch/vmtouch.hash",
    "content": "# Locally computed\nsha256 d57b7b3ae1146c4516429ab7d6db6f2122401db814ddd9cdaad10980e9c8428c  vmtouch-1.3.1.tar.gz\n\n# Hash for license files:\nsha256 13258709ed29c17394e0a3ba8c8b9360af35b85231db514f11a0ba385cecd08e  LICENSE\n"
  },
  {
    "path": "package/vmtouch/vmtouch.mk",
    "content": "################################################################################\n#\n# vmtouch\n#\n################################################################################\n\nVMTOUCH_VERSION = 1.3.1\nVMTOUCH_SITE = $(call github,hoytech,vmtouch,v$(VMTOUCH_VERSION))\nVMTOUCH_LICENSE = BSD-3-Clause\nVMTOUCH_LICENSE_FILES = LICENSE\n\ndefine VMTOUCH_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\ndefine VMTOUCH_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install \\\n\t\tDESTDIR=$(TARGET_DIR) PREFIX=/usr\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/vnstat/Config.in",
    "content": "config BR2_PACKAGE_VNSTAT\n\tbool \"vnstat\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR # mbstowcs()\n\tselect BR2_PACKAGE_SQLITE\n\thelp\n\t  vnStat is a console-based network traffic monitor that keeps a\n\t  log of network traffic for the selected interface(s). It uses\n\t  the network interface statistics provided by the kernel as\n\t  information source. This means that vnStat won't actually be\n\t  sniffing any traffic and also ensures light use of system\n\t  resources.\n\n\t  http://humdi.net/vnstat\n\ncomment \"vnstat needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n"
  },
  {
    "path": "package/vnstat/vnstat.hash",
    "content": "# Locally calculated\nsha256  03f858a7abf6bd85bb8cd595f3541fc3bd31f8f400ec092ef3034825ccb77c25  vnstat-2.8.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/vnstat/vnstat.mk",
    "content": "################################################################################\n#\n# vnstat\n#\n################################################################################\n\nVNSTAT_VERSION = 2.8\nVNSTAT_SITE = http://humdi.net/vnstat\nVNSTAT_LICENSE = GPL-2.0\nVNSTAT_LICENSE_FILES = COPYING\nVNSTAT_SELINUX_MODULES = vnstatd\nVNSTAT_DEPENDENCIES = host-pkgconf sqlite\nVNSTAT_CONF_OPTS = --disable-extra-paths\n\nifeq ($(BR2_PACKAGE_GD)$(BR2_PACKAGE_LIBPNG),yy)\nVNSTAT_DEPENDENCIES += gd\nVNSTAT_CONF_OPTS += --enable-image-output\nelse\nVNSTAT_CONF_OPTS += --disable-image-output\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/vo-aacenc/Config.in",
    "content": "config BR2_PACKAGE_VO_AACENC\n\tbool \"vo-aacenc\"\n\thelp\n\t  This library contains an encoder implementation of the\n\t  Advanced Audio Coding (AAC) audio codec. The library is\n\t  based on a codec implementation by VisualOn as part of the\n\t  Stagefright framework from the Google Android project.\n\n\t  http://sourceforge.net/projects/opencore-amr/\n"
  },
  {
    "path": "package/vo-aacenc/vo-aacenc.hash",
    "content": "# Locally computed:\nsha256  e51a7477a359f18df7c4f82d195dab4e14e7414cbd48cf79cc195fc446850f36  vo-aacenc-0.1.3.tar.gz\nsha256  8b3f1762349248d444ab9acbafe73941254e36e1064954da56bb9ddbd5873ddb  COPYING\n"
  },
  {
    "path": "package/vo-aacenc/vo-aacenc.mk",
    "content": "################################################################################\n#\n# vo-aacenc\n#\n################################################################################\n\nVO_AACENC_VERSION = 0.1.3\nVO_AACENC_SITE = http://downloads.sourceforge.net/project/opencore-amr/vo-aacenc\nVO_AACENC_LICENSE = Apache-2.0\nVO_AACENC_LICENSE_FILES = COPYING\nVO_AACENC_INSTALL_STAGING = YES\n\nVO_AACENC_CFLAGS = $(TARGET_CFLAGS)\n\n# arm specific asm optimizations\nifeq ($(BR2_arm),y)\n\nifeq ($(BR2_ARM_CPU_HAS_ARM),y)\n# vo-aacenc has ARM assembly code that cannot be compiled in Thumb2\n# mode, so we must force the traditional ARM mode.\nVO_AACENC_CFLAGS += -marm\n\nifeq ($(BR2_ARM_CPU_HAS_NEON),y)\nVO_AACENC_CONF_OPTS += --enable-armv7neon\n# mfpu=neon needed to assemble neon code\nVO_AACENC_CFLAGS += -mfpu=neon\nelse\nVO_AACENC_CONF_OPTS += --disable-armv7neon\n\nifeq ($(BR2_ARM_CPU_ARMV4),)\nVO_AACENC_CONF_OPTS += --enable-armv5e\nelse\nVO_AACENC_CONF_OPTS += --disable-armv5e\nendif\n\nendif # !neon\n\nelse\nVO_AACENC_CONF_OPTS += --disable-armv7neon --disable-armv5e\nendif # has-arm\nendif # arm\n\nVO_AACENC_CONF_ENV = \\\n\tCFLAGS=\"$(VO_AACENC_CFLAGS)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/vorbis-tools/Config.in",
    "content": "config BR2_PACKAGE_VORBIS_TOOLS\n\tbool \"vorbis-tools\"\n\tselect BR2_PACKAGE_LIBAO\n\tselect BR2_PACKAGE_LIBOGG\n\tselect BR2_PACKAGE_LIBVORBIS\n\tselect BR2_PACKAGE_LIBCURL\n\thelp\n\t  Standalone player, encoder and decoder for Ogg format files.\n\n\t  Works also as a streaming player.\n\n\t  http://www.vorbis.com/\n"
  },
  {
    "path": "package/vorbis-tools/vorbis-tools.hash",
    "content": "# From http://downloads.xiph.org/releases/vorbis/SHA256SUMS\nsha256  db7774ec2bf2c939b139452183669be84fda5774d6400fc57fde37f77624f0b0  vorbis-tools-1.4.2.tar.gz\n# Locally computed\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/vorbis-tools/vorbis-tools.mk",
    "content": "################################################################################\n#\n# vorbis-tools\n#\n################################################################################\n\nVORBIS_TOOLS_VERSION = 1.4.2\nVORBIS_TOOLS_SITE = http://downloads.xiph.org/releases/vorbis\nVORBIS_TOOLS_LICENSE = GPL-2.0\nVORBIS_TOOLS_LICENSE_FILES = COPYING\nVORBIS_TOOLS_CPE_ID_VENDOR = xiph\nVORBIS_TOOLS_DEPENDENCIES = libao libogg libvorbis libcurl\nVORBIS_TOOLS_CONF_OPTS = --program-transform-name=''\n\n# ogg123 calls math functions but forgets to link with libm\nVORBIS_TOOLS_CONF_ENV = LIBS=-lm\n\nifeq ($(BR2_PACKAGE_FLAC),y)\nVORBIS_TOOLS_DEPENDENCIES += flac\nendif\n\nifeq ($(BR2_PACKAGE_OPUSFILE),y)\nVORBIS_TOOLS_DEPENDENCIES += opusfile\nendif\n\nifeq ($(BR2_PACKAGE_SPEEX),y)\nVORBIS_TOOLS_DEPENDENCIES += speex\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/vpnc/0001-Makefile-allow-to-override-the-PREFIX-variable.patch",
    "content": "From 7314d232f8e85879d8f4c311ced44ee5b21fb239 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 10 Feb 2016 23:26:27 +0100\nSubject: [PATCH] Makefile: allow to override the PREFIX variable\n\nSome people may not want to install in /usr/local, so this commit\nmakes it possible to override the PREFIX variable from the make\ncommand line.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 69f5aca..f9a6781 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -20,7 +20,7 @@\n # $Id$\n \n DESTDIR=\n-PREFIX=/usr/local\n+PREFIX?=/usr/local\n ETCDIR=/etc/vpnc\n BINDIR=$(PREFIX)/bin\n SBINDIR=$(PREFIX)/sbin\n-- \n2.6.4\n\n"
  },
  {
    "path": "package/vpnc/0002-Makefile-allow-to-override-the-version.patch",
    "content": "From 8b035de4867db4fb8da41298224d92bf5b18e86f Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 10 Feb 2016 23:27:30 +0100\nSubject: [PATCH] Makefile: allow to override the version\n\nThe mk-version script makes the assumption that the build process runs\nfrom a SVN checkout or a Git clone of the vpnc source code. However,\nthis is not always the case, for example when you are building from a\ntarball, but inside a larger project that is versioned with Git.\n\nThis is typically the case when building vpnc under a tool like\nBuildroot, or potentially other embedded Linux build system: the build\nsystem tool itself is versioned in Git, downloads tarballs of software\ncomponents and builds them.\n\nIn order to support such situations, this commit adjusts the Makefile\nto allow the VERSION variable to be overriden from the make command\nline.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex f9a6781..e80ef17 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -57,7 +57,7 @@ OBJS = $(addsuffix .o,$(basename $(SRCS)))\n CRYPTO_OBJS = $(addsuffix .o,$(basename $(CRYPTO_SRCS)))\n BINOBJS = $(addsuffix .o,$(BINS))\n BINSRCS = $(addsuffix .c,$(BINS))\n-VERSION := $(shell sh mk-version)\n+VERSION ?= $(shell sh mk-version)\n RELEASE_VERSION := $(shell cat VERSION)\n \n CC ?= gcc\n-- \n2.6.4\n\n"
  },
  {
    "path": "package/vpnc/0003-Makefile-allow-passing-custom-CFLAGS-CPPFLAGS.patch",
    "content": "From 014a8e04a0fa775b2ade78e5f7655a1453375884 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 10 Feb 2016 23:31:12 +0100\nSubject: [PATCH] Makefile: allow passing custom CFLAGS/CPPFLAGS\n\nvpnc's Makefile specifies some CFLAGS and CPPFLAGS value, but it may\nbe needed to pass additional custom flags on the make command line. To\nmake this possible, we switch from a plain += operator to the\n\"override ... +=\" operator.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n\n Makefile | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex e80ef17..7ac225a 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -62,9 +62,9 @@ RELEASE_VERSION := $(shell cat VERSION)\n \n CC ?= gcc\n CFLAGS ?= -O3 -g\n-CFLAGS += -W -Wall -Wmissing-declarations -Wwrite-strings\n-CFLAGS +=  $(shell libgcrypt-config --cflags) $(CRYPTO_CFLAGS)\n-CPPFLAGS += -DVERSION=\\\"$(VERSION)\\\"\n+override CFLAGS += -W -Wall -Wmissing-declarations -Wwrite-strings\n+override CFLAGS +=  $(shell libgcrypt-config --cflags) $(CRYPTO_CFLAGS)\n+override CPPFLAGS += -DVERSION=\\\"$(VERSION)\\\"\n LDFLAGS ?= -g\n LIBS += $(shell libgcrypt-config --libs) $(CRYPTO_LDADD)\n \n@@ -73,7 +73,7 @@ LIBS += -lnsl -lresolv -lsocket\n endif\n ifneq (,$(findstring Apple,$(shell $(CC) --version)))\n # enabled in FSF GCC, disabled by default in Apple GCC\n-CFLAGS += -fstrict-aliasing -freorder-blocks -fsched-interblock\n+override CFLAGS += -fstrict-aliasing -freorder-blocks -fsched-interblock\n endif\n \n all : $(BINS) vpnc.8\n-- \n2.6.4\n\n"
  },
  {
    "path": "package/vpnc/0004-Makefile-provide-an-option-to-not-build-manpages.patch",
    "content": "From 3c16d0b7bf809a56affd6e1a4c0998027968b91a Mon Sep 17 00:00:00 2001\nFrom: Ulf Samuelsson <ulf.samuelsson@atmel.com>\nDate: Mon, 8 Feb 2016 23:03:48 +0100\nSubject: [PATCH] Makefile: provide an option to not build manpages\n\nThe process of generating the vpnc.8 man page consists in running the\nvpnc tool itself, and parse its --long-help output. While this is\nperfectly fine when building natively, it fails completely when\ncross-compiling: the vpnc binary that was built cannot be executed on\nthe build machine.\n\nIn order to support such situations with minimal changes, this patch\nadjusts the Makefile to make it understand a MANS variable. By\ndefault, it's defined to \"vpnc.8\", which means the manpage continues\nto be built as usual. However, if it's overriden to be empty, then no\nmanpage is built.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n\n Makefile | 5 ++++-\n 1 file changed, 4 insertions(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 7ac225a..ea2cd41 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -54,6 +54,7 @@ endif\n 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)\n BINS = vpnc cisco-decrypt test-crypto\n OBJS = $(addsuffix .o,$(basename $(SRCS)))\n+MANS ?= vpnc.8\n CRYPTO_OBJS = $(addsuffix .o,$(basename $(CRYPTO_SRCS)))\n BINOBJS = $(addsuffix .o,$(BINS))\n BINSRCS = $(addsuffix .c,$(BINS))\n@@ -76,7 +77,7 @@ ifneq (,$(findstring Apple,$(shell $(CC) --version)))\n override CFLAGS += -fstrict-aliasing -freorder-blocks -fsched-interblock\n endif\n \n-all : $(BINS) vpnc.8\n+all : $(BINS) $(MANS)\n \n vpnc : $(OBJS) vpnc.o\n \t$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)\n@@ -136,7 +137,9 @@ install-common: all\n \tinstall -m600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf\n \tinstall -m755 vpnc-disconnect $(DESTDIR)$(SBINDIR)\n \tinstall -m755 pcf2vpnc $(DESTDIR)$(BINDIR)\n+ifneq ($(MANS),)\n \tinstall -m644 vpnc.8 $(DESTDIR)$(MANDIR)/man8\n+endif\n \tinstall -m644 pcf2vpnc.1 $(DESTDIR)$(MANDIR)/man1\n \tinstall -m644 cisco-decrypt.1 $(DESTDIR)$(MANDIR)/man1\n \tinstall -m644 COPYING $(DESTDIR)$(DOCDIR)\n-- \n2.6.4\n\n"
  },
  {
    "path": "package/vpnc/0005-Makefile-allow-passing-a-custom-path-to-libgcrypt-co.patch",
    "content": "From 6180ca780e3a792bd632d8899c2b35991822c93d Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Mon, 8 Feb 2016 23:32:57 +0100\nSubject: [PATCH] Makefile: allow passing a custom path to libgcrypt-config\n\nThe libgcrypt-config program may not be in the PATH, so this patch\nadjusts the Makefile so that it understands a LIBGCRYPT_CONFIG\nvariable. By default, its value is libgcrypt-config so that the\nbehavior is unchanged.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n\n Makefile | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex ea2cd41..649ddfb 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -61,13 +61,14 @@ BINSRCS = $(addsuffix .c,$(BINS))\n VERSION ?= $(shell sh mk-version)\n RELEASE_VERSION := $(shell cat VERSION)\n \n+LIBGCRYPT_CONFIG ?= libgcrypt-config\n CC ?= gcc\n CFLAGS ?= -O3 -g\n override CFLAGS += -W -Wall -Wmissing-declarations -Wwrite-strings\n-override CFLAGS +=  $(shell libgcrypt-config --cflags) $(CRYPTO_CFLAGS)\n+override CFLAGS +=  $(shell $(LIBGCRYPT_CONFIG) --cflags) $(CRYPTO_CFLAGS)\n override CPPFLAGS += -DVERSION=\\\"$(VERSION)\\\"\n LDFLAGS ?= -g\n-LIBS += $(shell libgcrypt-config --libs) $(CRYPTO_LDADD)\n+LIBS += $(shell $(LIBGCRYPT_CONFIG) --libs) $(CRYPTO_LDADD)\n \n ifeq ($(shell uname -s), SunOS)\n LIBS += -lnsl -lresolv -lsocket\n-- \n2.6.4\n\n"
  },
  {
    "path": "package/vpnc/0006-config.c-Replace-deprecated-SUSv3-functions-with-POS.patch",
    "content": "From 627a45d88acf236cb36326919e4a2fa975c688bd Mon Sep 17 00:00:00 2001\nFrom: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>\nDate: Mon, 8 Feb 2016 23:05:23 +0100\nSubject: [PATCH] config.c: Replace deprecated SUSv3 functions with POSIX\n equivalents\n\nReplace the deprecated SUSv3 function index() by its POSIX equivalent\nstrchr(). This is necessary to successfully build vpnc with uClibc,\nwhen SUSv3 compatibility functions are not compiled in.\n\nPatch originally from Bernhard Reutner-Fischer\n<rep.dot.nop@gmail.com>.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n\n config.c | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/config.c b/config.c\nindex 57778e3..11b363b 100644\n--- a/config.c\n+++ b/config.c\n@@ -657,8 +657,7 @@ static const struct config_names_s {\n static char *get_config_filename(const char *name, int add_dot_conf)\n {\n \tchar *realname;\n-\n-\tasprintf(&realname, \"%s%s%s\", index(name, '/') ? \"\" : \"/etc/vpnc/\", name, add_dot_conf ? \".conf\" : \"\");\n+\tasprintf(&realname, \"%s%s%s\", strchr(name, '/') ? \"\" : \"/etc/vpnc/\", name, add_dot_conf ? \".conf\" : \"\");\n \treturn realname;\n }\n \n-- \n2.6.4\n\n"
  },
  {
    "path": "package/vpnc/0007-sysdep.h-don-t-assume-error.h-is-available-on-all-Li.patch",
    "content": "From 7f41ef32c8c887ee23ca83da4dfd7a4f27e01186 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 10 Feb 2016 23:09:51 +0100\nSubject: [PATCH] sysdep.h: don't assume <error.h> is available on all Linux\n platforms\n\nThe current logic in sysdep.h assumes that whenever you have __linux__\nor __GLIBC__ defined, then <error.h> functionality is\navailable. However, the <error.h> functionality is a glibc-ism, not\navailable in more standard-conformant C libraries such as the musl C\nlibrary. With musl, __linux__ is defined (but of course not\n__GLIBC__). With the current logic, sysdep.h assumes that <error.h> is\navailable, which isn't the case.\n\nThis patch therefore changes the logic to only use <error.h> when\n__GLIBC__ is defined. It fixes the following build error:\n\nIn file included from tunip.c:87:0:\nsysdep.h:41:19: fatal error: error.h: No such file or directory\n #include <error.h>\n\nOriginal patch from\nhttp://git.alpinelinux.org/cgit/aports/tree/testing/vpnc/working.patch.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n sysdep.h | 5 ++++-\n 1 file changed, 4 insertions(+), 1 deletion(-)\n\ndiff --git a/sysdep.h b/sysdep.h\nindex 137bf6d..fb65b31 100644\n--- a/sysdep.h\n+++ b/sysdep.h\n@@ -38,11 +38,14 @@ int tun_get_hwaddr(int fd, char *dev, uint8_t *hwaddr);\n \n /***************************************************************************/\n #if defined(__linux__) || defined(__GLIBC__)\n+\n+#ifdef __GLIBC__\n #include <error.h>\n+#define HAVE_ERROR     1\n+#endif\n \n #define HAVE_VASPRINTF 1\n #define HAVE_ASPRINTF  1\n-#define HAVE_ERROR     1\n #define HAVE_UNSETENV  1\n #define HAVE_SETENV    1\n #endif\n-- \n2.6.4\n\n"
  },
  {
    "path": "package/vpnc/0008-sysdep.c-don-t-include-linux-if_tun.h-on-Linux.patch",
    "content": "From 2e2eab070384834036c1458c669070ed17d81dbe Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 10 Feb 2016 23:15:36 +0100\nSubject: [PATCH] sysdep.c: don't include <linux/if_tun.h> on Linux\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nIncluding <linux/if_tun.h> in sysdep.c is not necessary since sysdep.h\nalready includes <netinet/if_ether.h>. And this is actually\npotentially harmful since both files redefine the same 'struct\nethhdr', causing the following build failure with the musl C library:\n\nIn file included from sysdep.h:28:0,\n                 from sysdep.c:71:\n.../buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/netinet/if_ether.h:96:8: error: redefinition of ‘struct ethhdr’\n struct ethhdr {\n        ^\nIn file included from .../buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/if_tun.h:20:0,\n                 from sysdep.c:62:\n.../buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/if_ether.h:138:8: note: originally defined here\n struct ethhdr {\n        ^\n\nOriginal patch from:\nhttp://git.alpinelinux.org/cgit/aports/tree/testing/vpnc/working.patch\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n sysdep.c | 4 +---\n 1 file changed, 1 insertion(+), 3 deletions(-)\n\ndiff --git a/sysdep.c b/sysdep.c\nindex d8f181d..f83543d 100644\n--- a/sysdep.c\n+++ b/sysdep.c\n@@ -58,13 +58,11 @@\n \n #if defined(__DragonFly__)\n #include <net/tun/if_tun.h>\n-#elif defined(__linux__)\n-#include <linux/if_tun.h>\n #elif defined(__APPLE__)\n /* no header for tun */\n #elif defined(__CYGWIN__)\n #include \"tap-win32.h\"\n-#else\n+#elif !defined(__linux__)\n #include <net/if_tun.h>\n #endif\n \n-- \n2.6.4\n\n"
  },
  {
    "path": "package/vpnc/0009-config.c-add-missing-sys-ttydefaults.h-include.patch",
    "content": "From 17277915af703a4767de791916621d8f59aef516 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Wed, 10 Feb 2016 23:21:26 +0100\nSubject: [PATCH] config.c: add missing <sys/ttydefaults.h> include\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThis include is needed to get the definition of CEOT, otherwise the\nbuild fails with:\n\nconfig.c: In function ‘vpnc_getline’:\nconfig.c:145:25: error: ‘CEOT’ undeclared (first use in this function)\n   if (llen == 0 && c == CEOT)\n                         ^\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n config.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/config.c b/config.c\nindex 11b363b..f47a534 100644\n--- a/config.c\n+++ b/config.c\n@@ -31,6 +31,7 @@\n #include <sys/types.h>\n #include <sys/utsname.h>\n #include <sys/wait.h>\n+#include <sys/ttydefaults.h>\n \n #include <gcrypt.h>\n \n-- \n2.6.4\n\n"
  },
  {
    "path": "package/vpnc/Config.in",
    "content": "config BR2_PACKAGE_VPNC\n\tbool \"vpnc\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt\n\tdepends on !BR2_STATIC_LIBS # gnutls\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_USE_WCHAR # gnutls\n\tselect BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_LIBGPG_ERROR\n\tselect BR2_PACKAGE_GNUTLS\n\thelp\n\t  Client for Cisco VPN concentrator\n\t  3000 Series VPN Concentrator\n\t  IOS Routers\n\t  PIX/ASA Zecurity Appliances\n\t  Juniper/Netscreen\n\n\t  http://www.unix-ag.uni-kl.de/~massar/vpnc\n\ncomment \"vpnc needs a toolchain w/ wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/vpnc/vpnc.hash",
    "content": "# locally computed hash\nsha256  5929d3b7f72970c8f7850e0daba0d9d05aaaa1281c69f58ac8647be11385ede5  vpnc-0.5.3r550-2jnpr1.tar.gz\nsha256  bf3ec1bd1dec31a6ab8980bfd04569f506432f35ee01e88a3910847784bc2de1  COPYING\n"
  },
  {
    "path": "package/vpnc/vpnc.mk",
    "content": "################################################################################\n#\n# vpnc\n#\n################################################################################\n\nVPNC_VERSION = 0.5.3r550-2jnpr1\nVPNC_SITE = $(call github,ndpgroup,vpnc,$(VPNC_VERSION))\nVPNC_LICENSE = GPL-2.0+\nVPNC_LICENSE_FILES = COPYING\n\nVPNC_DEPENDENCIES = libgcrypt libgpg-error gnutls host-pkgconf\n\ndefine VPNC_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \\\n\t\t$(TARGET_CONFIGURE_OPTS) \\\n\t\tLIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config \\\n\t\tVERSION=$(VPNC_VERSION) MANS=\nendef\n\ndefine VPNC_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install $(TARGET_CONFIGURE_OPTS) \\\n\t\tVERSION=$(VPNC_VERSION) MANS= \\\n\t\tDESTDIR=\"$(TARGET_DIR)\" PREFIX=/usr\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/vsftpd/0001-utmpx-builddef.patch",
    "content": "Add build option to disable utmpx update code\n\nOn some embedded systems the libc may have utmpx support, but the\nfeature would be redundant. So add a build switch to disable utmpx\nupdating, similar to compiling on systems without utmpx support.\n\nSigned-off-by: Maarten ter Huurne <maarten@treewalker.org>\n\ndiff -ru vsftpd-3.0.2.orig/builddefs.h vsftpd-3.0.2/builddefs.h\n--- vsftpd-3.0.2.orig/builddefs.h\t2012-04-05 05:24:56.000000000 +0200\n+++ vsftpd-3.0.2/builddefs.h\t2014-09-16 14:23:36.128003245 +0200\n@@ -4,6 +4,7 @@\n #undef VSF_BUILD_TCPWRAPPERS\n #define VSF_BUILD_PAM\n #undef VSF_BUILD_SSL\n+#define VSF_BUILD_UTMPX\n \n #endif /* VSF_BUILDDEFS_H */\n \ndiff -ru vsftpd-3.0.2.orig/sysdeputil.c vsftpd-3.0.2/sysdeputil.c\n--- vsftpd-3.0.2.orig/sysdeputil.c\t2012-09-16 06:18:04.000000000 +0200\n+++ vsftpd-3.0.2/sysdeputil.c\t2014-09-16 14:26:42.686887724 +0200\n@@ -1158,7 +1158,7 @@\n \n #endif /* !VSF_SYSDEP_NEED_OLD_FD_PASSING */\n \n-#ifndef VSF_SYSDEP_HAVE_UTMPX\n+#if !defined(VSF_BUILD_UTMPX) || !defined(VSF_SYSDEP_HAVE_UTMPX)\n \n void\n vsf_insert_uwtmp(const struct mystr* p_user_str,\n@@ -1173,7 +1173,7 @@\n {\n }\n \n-#else /* !VSF_SYSDEP_HAVE_UTMPX */\n+#else /* !VSF_BUILD_UTMPX || !VSF_SYSDEP_HAVE_UTMPX */\n \n /* IMHO, the pam_unix module REALLY should be doing this in its SM component */\n /* Statics */\n@@ -1238,7 +1238,7 @@\n   updwtmpx(WTMPX_FILE, &s_utent);\n }\n \n-#endif /* !VSF_SYSDEP_HAVE_UTMPX */\n+#endif /* !VSF_BUILD_UTMPX || !VSF_SYSDEP_HAVE_UTMPX */\n \n void\n vsf_set_die_if_parent_dies()\n"
  },
  {
    "path": "package/vsftpd/0002-fix-CVE-2015-1419.patch",
    "content": "Fix CVE-2015-1419 - config option deny_file is not handled correctly.\nFrom SUSE: https://bugzilla.suse.com/show_bug.cgi?id=915522\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\nIndex: vsftpd-3.0.2/ls.c\n===================================================================\n--- vsftpd-3.0.2.orig/ls.c\n+++ vsftpd-3.0.2/ls.c\n@@ -7,6 +7,7 @@\n  * Would you believe, code to handle directory listing.\n  */\n \n+#include <stdlib.h>\n #include \"ls.h\"\n #include \"access.h\"\n #include \"defs.h\"\n@@ -243,11 +244,42 @@ vsf_filename_passes_filter(const struct\n   struct mystr temp_str = INIT_MYSTR;\n   struct mystr brace_list_str = INIT_MYSTR;\n   struct mystr new_filter_str = INIT_MYSTR;\n+  struct mystr normalize_filename_str = INIT_MYSTR;\n+  const char *normname;\n+  const char *path;\n   int ret = 0;\n   char last_token = 0;\n   int must_match_at_current_pos = 1;\n+\n   str_copy(&filter_remain_str, p_filter_str);\n-  str_copy(&name_remain_str, p_filename_str);\n+\n+  /* normalize filepath */\n+  path = str_strdup(p_filename_str);\n+  normname = realpath(path, NULL);\n+  if (normname == NULL)\n+     goto out;\n+  str_alloc_text(&normalize_filename_str, normname);\n+\n+  if (!str_isempty (&filter_remain_str) && !str_isempty(&normalize_filename_str)) {\n+    if (str_get_char_at(p_filter_str, 0) == '/') {\n+      if (str_get_char_at(&normalize_filename_str, 0) != '/') {\n+        str_getcwd (&name_remain_str);\n+\n+        if (str_getlen(&name_remain_str) > 1) /* cwd != root dir */\n+          str_append_char (&name_remain_str, '/');\n+\n+        str_append_str (&name_remain_str, &normalize_filename_str);\n+      }\n+      else\n+       str_copy (&name_remain_str, &normalize_filename_str);\n+    } else {\n+      if (str_get_char_at(p_filter_str, 0) != '{')\n+        str_basename (&name_remain_str, &normalize_filename_str);\n+      else\n+        str_copy (&name_remain_str, &normalize_filename_str);\n+    }\n+  } else\n+    str_copy(&name_remain_str, &normalize_filename_str);\n \n   while (!str_isempty(&filter_remain_str) && *iters < VSFTP_MATCHITERS_MAX)\n   {\n@@ -360,6 +392,9 @@ vsf_filename_passes_filter(const struct\n     ret = 0;\n   }\n out:\n+  free(normname);\n+  free(path);\n+  str_free(&normalize_filename_str);\n   str_free(&filter_remain_str);\n   str_free(&name_remain_str);\n   str_free(&temp_str);\nIndex: vsftpd-3.0.2/str.c\n===================================================================\n--- vsftpd-3.0.2.orig/str.c\n+++ vsftpd-3.0.2/str.c\n@@ -711,3 +711,14 @@ str_replace_unprintable(struct mystr* p_\n   }\n }\n \n+void\n+str_basename (struct mystr* d_str, const struct mystr* path)\n+{\n+  static struct mystr tmp;\n+\n+  str_copy (&tmp, path);\n+  str_split_char_reverse(&tmp, d_str, '/');\n+\n+  if (str_isempty(d_str))\n+   str_copy (d_str, path);\n+}\nIndex: vsftpd-3.0.2/str.h\n===================================================================\n--- vsftpd-3.0.2.orig/str.h\n+++ vsftpd-3.0.2/str.h\n@@ -100,6 +100,7 @@ void str_replace_unprintable(struct myst\n int str_atoi(const struct mystr* p_str);\n filesize_t str_a_to_filesize_t(const struct mystr* p_str);\n unsigned int str_octal_to_uint(const struct mystr* p_str);\n+void str_basename (struct mystr* d_str, const struct mystr* path);\n \n /* PURPOSE: Extract a line of text (delimited by \\n or EOF) from a string\n  * buffer, starting at character position 'p_pos'. The extracted line will\n"
  },
  {
    "path": "package/vsftpd/0003-Prevent-hang-in-SIGCHLD-handler.patch",
    "content": "From 1e65a0a15f819b8bf1b551bd84f71d0da1f5a00c Mon Sep 17 00:00:00 2001\nFrom: Martin Sehnoutka <msehnout@redhat.com>\nDate: Thu, 17 Nov 2016 13:02:27 +0100\nSubject: [PATCH] Prevent hanging in SIGCHLD handler.\n\nvsftpd can now handle pam_exec.so in pam.d config without hanging\nin SIGCHLD handler.\n\n[Abdelmalek:\nFixes: https://bugzilla.redhat.com/show_bug.cgi?id=1198259\nFetched from:\nhttps://src.fedoraproject.org/cgit/rpms/vsftpd.git/plain/0026-Prevent-hanging-in-SIGCHLD-handler.patch]\nSigned-off-by: Abdelmalek Benelouezzane <abdelmalek.benelouezzane@savoirfairelinux.com>\n---\n sysutil.c    |  4 ++--\n sysutil.h    |  2 +-\n twoprocess.c | 13 +++++++++++--\n 3 files changed, 14 insertions(+), 5 deletions(-)\n\ndiff --git a/sysutil.c b/sysutil.c\nindex 6d7cb3f..099748f 100644\n--- a/sysutil.c\n+++ b/sysutil.c\n@@ -592,13 +592,13 @@ vsf_sysutil_exit(int exit_code)\n }\n \n struct vsf_sysutil_wait_retval\n-vsf_sysutil_wait(void)\n+vsf_sysutil_wait(int hang)\n {\n   struct vsf_sysutil_wait_retval retval;\n   vsf_sysutil_memclr(&retval, sizeof(retval));\n   while (1)\n   {\n-    int sys_ret = wait(&retval.exit_status);\n+    int sys_ret = waitpid(-1, &retval.exit_status, hang ? 0 : WNOHANG);\n     if (sys_ret < 0 && errno == EINTR)\n     {\n       vsf_sysutil_check_pending_actions(kVSFSysUtilUnknown, 0, 0);\ndiff --git a/sysutil.h b/sysutil.h\nindex c145bdf..13153cd 100644\n--- a/sysutil.h\n+++ b/sysutil.h\n@@ -175,7 +175,7 @@ struct vsf_sysutil_wait_retval\n   int PRIVATE_HANDS_OFF_syscall_retval;\n   int PRIVATE_HANDS_OFF_exit_status;\n };\n-struct vsf_sysutil_wait_retval vsf_sysutil_wait(void);\n+struct vsf_sysutil_wait_retval vsf_sysutil_wait(int hang);\n int vsf_sysutil_wait_reap_one(void);\n int vsf_sysutil_wait_get_retval(\n   const struct vsf_sysutil_wait_retval* p_waitret);\ndiff --git a/twoprocess.c b/twoprocess.c\nindex 33d84dc..b1891e7 100644\n--- a/twoprocess.c\n+++ b/twoprocess.c\n@@ -47,8 +47,17 @@ static void\n handle_sigchld(void* duff)\n {\n \n-  struct vsf_sysutil_wait_retval wait_retval = vsf_sysutil_wait();\n+  struct vsf_sysutil_wait_retval wait_retval = vsf_sysutil_wait(0);\n   (void) duff;\n+  if (!vsf_sysutil_wait_get_exitcode(&wait_retval) &&\n+      !vsf_sysutil_wait_get_retval(&wait_retval))\n+    /* There was nobody to wait for, possibly caused by underlying library\n+     * which created a new process through fork()/vfork() and already picked\n+     * it up, e.g. by pam_exec.so or integrity check routines for libraries\n+     * when FIPS mode is on (nss freebl), which can lead to calling prelink\n+     * if the prelink package is installed.\n+     */\n+    return;\n   /* Child died, so we'll do the same! Report it as an error unless the child\n    * exited normally with zero exit code\n    */\n@@ -390,7 +399,7 @@ common_do_login(struct vsf_session* p_sess, const struct mystr* p_user_str,\n   priv_sock_send_result(p_sess->parent_fd, PRIV_SOCK_RESULT_OK);\n   if (!p_sess->control_use_ssl)\n   {\n-    (void) vsf_sysutil_wait();\n+    (void) vsf_sysutil_wait(1);\n   }\n   else\n   {\n-- \n2.14.4\n\n"
  },
  {
    "path": "package/vsftpd/Config.in",
    "content": "config BR2_PACKAGE_VSFTPD\n\tbool \"vsftpd\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  vsftpd is an ftp daemon written with security in mind.\n\t  http://vsftpd.beasts.org/\n\nif BR2_PACKAGE_VSFTPD\n\nconfig BR2_PACKAGE_VSFTPD_UTMPX\n\tbool \"log vsftpd access to utmpx\"\n\t# musl 1.1.4 has an empty utmpx implementation and no WTMPX_FILE\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  Enable logging of vsftpd access to utmpx.\n\t  Note that Buildroot does not generate utmpx by default.\n\nendif\n"
  },
  {
    "path": "package/vsftpd/S70vsftpd",
    "content": "#! /bin/sh\n\nset -e\n\nDESC=\"vsftpd\"\nNAME=vsftpd\nDAEMON=/usr/sbin/$NAME\n\ncase \"$1\" in\n  start)\n\tprintf \"Starting $DESC: \"\n\tstart-stop-daemon -S -b -x $DAEMON\n\techo \"OK\"\n\t;;\n  stop)\n\tprintf \"Stopping $DESC: \"\n\tstart-stop-daemon -K -x $DAEMON\n\techo \"OK\"\n\t;;\n  restart|force-reload)\n\techo \"Restarting $DESC: \"\n\t$0 stop\n\tsleep 1\n\t$0 start\n\techo \"\"\n\t;;\n  *)\n\techo \"Usage: $0 {start|stop|restart|force-reload}\" >&2\n\texit 1\n\t;;\nesac\n\nexit 0\n"
  },
  {
    "path": "package/vsftpd/vsftpd.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  26b602ae454b0ba6d99ef44a09b6b9e0dfa7f67228106736df1f278c70bc91d3  vsftpd-3.0.5.tar.gz\n# Locally computed\nsha256  c9cf119e2f9dbcf187fb805ba5aded105db26a693803636fb7228c98460ffbf2  COPYING\n"
  },
  {
    "path": "package/vsftpd/vsftpd.mk",
    "content": "################################################################################\n#\n# vsftpd\n#\n################################################################################\n\nVSFTPD_VERSION = 3.0.5\nVSFTPD_SITE = https://security.appspot.com/downloads\nVSFTPD_LIBS = -lcrypt\nVSFTPD_LICENSE = GPL-2.0\nVSFTPD_LICENSE_FILES = COPYING\nVSFTPD_CPE_ID_VENDOR = vsftpd_project\nVSFTPD_SELINUX_MODULES = ftp\n\ndefine VSFTPD_DISABLE_UTMPX\n\t$(SED) 's/.*VSF_BUILD_UTMPX/#undef VSF_BUILD_UTMPX/' $(@D)/builddefs.h\nendef\n\ndefine VSFTPD_ENABLE_SSL\n\t$(SED) 's/.*VSF_BUILD_SSL/#define VSF_BUILD_SSL/' $(@D)/builddefs.h\nendef\n\nifeq ($(BR2_PACKAGE_VSFTPD_UTMPX),)\nVSFTPD_POST_CONFIGURE_HOOKS += VSFTPD_DISABLE_UTMPX\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nVSFTPD_DEPENDENCIES += openssl host-pkgconf\nVSFTPD_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`\nVSFTPD_POST_CONFIGURE_HOOKS += VSFTPD_ENABLE_SSL\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nVSFTPD_DEPENDENCIES += libcap\nVSFTPD_LIBS += -lcap\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nVSFTPD_DEPENDENCIES += linux-pam\nVSFTPD_LIBS += -lpam\nendif\n\ndefine VSFTPD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) CC=\"$(TARGET_CC)\" CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS)\" LIBS=\"$(VSFTPD_LIBS)\" -C $(@D)\nendef\n\ndefine VSFTPD_USERS\n\tftp -1 ftp -1 * /home/ftp - - Anonymous FTP User\nendef\n\ndefine VSFTPD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/vsftpd/vsftpd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/vsftpd.service\nendef\n\ndefine VSFTPD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/vsftpd/S70vsftpd $(TARGET_DIR)/etc/init.d/S70vsftpd\nendef\n\n# vsftpd won't work if the jail directory is writable, it has to be\n# readable only otherwise you get the following error:\n# 500 OOPS: vsftpd: refusing to run with writable root inside chroot()\n# That's why we have to adjust the permissions of /home/ftp\ndefine VSFTPD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/vsftpd $(TARGET_DIR)/usr/sbin/vsftpd\n\ttest -f $(TARGET_DIR)/etc/vsftpd.conf || \\\n\t\t$(INSTALL) -D -m 644 $(@D)/vsftpd.conf \\\n\t\t\t$(TARGET_DIR)/etc/vsftpd.conf\n\t$(INSTALL) -d -m 700 $(TARGET_DIR)/usr/share/empty\n\t$(INSTALL) -d -m 555 $(TARGET_DIR)/home/ftp\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/vsftpd/vsftpd.service",
    "content": "[Unit]\nDescription=vsftpd FTP server\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf\nExecReload=/bin/kill -HUP $MAINPID\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "package/vte/Config.in",
    "content": "config BR2_PACKAGE_VTE\n\tbool \"vte\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS # libgtk3 -> host-libgtk3 -> host-librsvg\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND || \\\n\t\tBR2_PACKAGE_HAS_LIBGL\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_LIBGTK3\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_PCRE2\n\thelp\n\t  VTE is a library (libvte) implementing a terminal emulator\n\t  widget for GTK+, and a minimal sample application (vte)\n\t  using that. Vte is mainly used in gnome-terminal, but\n\t  can also be used to embed a console/terminal in games,\n\t  editors, IDEs, etc.\n\n\t  http://github.com/GNOME/vte\n\ncomment \"vte needs a toolchain w/ wchar, threads, C++, gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\ncomment \"vte needs an OpenGL or an OpenGL-EGL/wayland backend\"\n\tdepends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_PACKAGE_HAS_LIBEGL_WAYLAND && \\\n\t\t!BR2_PACKAGE_HAS_LIBGL\n"
  },
  {
    "path": "package/vte/vte.hash",
    "content": "# Locally calculated\nsha256\ta3a9fb182740b392a45cd3f46fa61a985f68bb6b1817b52daec22034c46158c3  vte-0.48.3.tar.xz\nsha256\tdc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/vte/vte.mk",
    "content": "################################################################################\n#\n# vte\n#\n################################################################################\n\nVTE_VERSION = 0.48.3\nVTE_SOURCE = vte-$(VTE_VERSION).tar.xz\nVTE_SITE = http://ftp.gnome.org/pub/gnome/sources/vte/0.48\nVTE_DEPENDENCIES = host-intltool host-pkgconf libgtk3 libxml2 pcre2\nVTE_LICENSE = LGPL-2.1+\nVTE_LICENSE_FILES = COPYING\nVTE_CONF_OPTS += --disable-vala\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nVTE_CONF_OPTS += --enable-introspection\nVTE_DEPENDENCIES += gobject-introspection\nelse\nVTE_CONF_OPTS += --disable-introspection\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nVTE_CONF_OPTS += --with-gnutls\nVTE_DEPENDENCIES += gnutls\nelse\nVTE_CONF_OPTS += --without-gnutls\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/vtun/0001-fix-installation.patch",
    "content": "Makefile.in: fix installation steps\n\nNot sure what the reason for that patch is, but originally added by Ulf\nSamuelsson <ulf.samuelsson@atmel.com>, when upgrading from 2.6.x to 3.0.2.\n\nyann.morin.1998@free.fr: the initial commit in the Buildroot tree had the\nSoB by Ulf, but it was not explicitly reproduced here in the patch; so I\nadded it here directly in the patch.\n\nSomewhat-signed-off-by: Ulf Samuelsson <ulf.samuelsson@atmel.com>\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\ndiff -durN vtun-3.0.3.orig/Makefile.in vtun-3.0.3/Makefile.in\n--- vtun-3.0.3.orig/Makefile.in\t2012-07-09 06:55:38.000000000 +0200\n+++ vtun-3.0.3/Makefile.in\t2013-02-16 23:28:47.034036869 +0100\n@@ -28,7 +28,7 @@\n LEXFLAGS = -t \n \n INSTALL = @INSTALL@\n-INSTALL_OWNER = -o root -g 0\n+INSTALL_OWNER =\n \n prefix = @prefix@\n exec_prefix = @exec_prefix@\n@@ -89,16 +89,15 @@\n \n install_config: \n \t$(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(ETC_DIR)\n-\tif [ ! -f $(ETC_DIR)/vtund.conf ]; then \\\n-\t  $(INSTALL) -m 600 $(INSTALL_OWNER) vtund.conf $(DESTDIR)$(ETC_DIR); \\\n-\tfi\n+\t$(INSTALL) -m 600 $(INSTALL_OWNER) vtund.conf $(DESTDIR)$(ETC_DIR);\n+\t$(INSTALL) -m 600 $(INSTALL_OWNER) scripts/vtund-start.conf $(DESTDIR)$(ETC_DIR);\n \n install: vtund install_config install_man\n-\t$(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(VAR_DIR)/run\n \t$(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(STAT_DIR)\n \t$(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(LOCK_DIR)\n \t$(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(SBIN_DIR)\n \t$(INSTALL) -m 755 $(INSTALL_OWNER) vtund $(DESTDIR)$(SBIN_DIR)\n-\t$(BIN_DIR)/strip $(DESTDIR)$(SBIN_DIR)/vtund\n+\t$(INSTALL) -m 755 -D $(INSTALL_OWNER) scripts/vtund.rc.debian \\\n+\t\t$(DESTDIR)$(ETC_DIR)/init.d/S90vtun\n \n # DO NOT DELETE THIS LINE -- make depend depends on it.\n"
  },
  {
    "path": "package/vtun/0002-fix-ssl-headers-checks.patch",
    "content": "configure.in: do not hard-code search patch for SSL headers\n\nDo. Not. Do. That. It breaks cross-compilation.\n\nAlso use the SSL headers dir to look for blowfish headers.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n\ndiff -durN vtun-3.0.3.orig/configure.in vtun-3.0.3/configure.in\n--- vtun-3.0.3.orig/configure.in\t2009-03-29 12:08:51.000000000 +0200\n+++ vtun-3.0.3/configure.in\t2013-02-16 23:44:44.004339680 +0100\n@@ -166,7 +166,7 @@\n    AC_MSG_RESULT()\n    AC_CHECKING( for md5 Library and Header files ... )\n AC_SEARCH_HEADERS(md5.h,\n-    $SSL_HDR_DIR /usr/include/openssl \"\" /usr/include /usr/include/ssl /usr/local/include /usr/local/ssl/include /usr/include/sys, \n+    $SSL_HDR_DIR \"\" , \n     ,\n     AC_MSG_ERROR( SSL headers not found. )\n    )\n@@ -176,7 +176,7 @@\n    AC_MSG_RESULT()\n    AC_CHECKING( for blowfish Library and Header files ... )\n    AC_SEARCH_HEADERS(blowfish.h,\n-    $BLOWFISH_HDR_DIR /usr/include/ssl /usr/include/openssl /usr/include /usr/local/include /usr/local/ssl/include  /usr/include/crypto,\n+    $BLOWFISH_HDR_DIR $SSL_HDR_DIR,\n \tAC_CHECK_LIB(crypto, BF_set_key,\n \t    [\n \t       LIBS=\"$LIBS -lcrypto\"\n@@ -193,7 +193,7 @@\n    AC_MSG_RESULT()\n    AC_CHECKING( for AES Library and Header files ... )\n    AC_SEARCH_HEADERS(aes.h,\n-    $SSL_HDR_DIR /usr/include/ssl /usr/include/openssl /usr/include /usr/local/include /usr/local/ssl/include  /usr/include/crypto,\n+    $SSL_HDR_DIR ,\n \tAC_CHECK_LIB(crypto, AES_set_encrypt_key,\n \t    [\n \t       AC_DEFINE(HAVE_SSL_AES)\n@@ -208,7 +208,7 @@\n    AC_MSG_RESULT()\n    AC_CHECKING( for EVP Library and Header files ... )\n    AC_SEARCH_HEADERS(evp.h,\n-    $SSL_HDR_DIR /usr/include/ssl /usr/include/openssl /usr/include /usr/local/include /usr/local/ssl/include  /usr/include/crypto,\n+    $SSL_HDR_DIR ,\n \tAC_CHECK_LIB(crypto, EVP_EncryptInit,\n \t    [\n \t       AC_DEFINE(HAVE_SSL_EVP)\n"
  },
  {
    "path": "package/vtun/0003-openssl11.patch",
    "content": "Fix build with OpenSSL 1.1.x\n\nExtracted vtun-openssl.patch from\nhttp://dl.fedoraproject.org/pub/fedora/linux/releases/27/Everything/source/tree/Packages/v/vtun-3.0.4-4.fc27.src.rpm\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -NarU5 a/lfd_encrypt.c b/lfd_encrypt.c\n--- a/lfd_encrypt.c\t2016-10-01 17:27:51.000000000 -0400\n+++ b/lfd_encrypt.c\t2017-03-20 08:43:48.013308435 -0400\n@@ -93,15 +93,15 @@\n static int dec_init_first_time;\n static unsigned long sequence_num;\n static char * pkey;\n static char * iv_buf;\n \n-static EVP_CIPHER_CTX ctx_enc;\t/* encrypt */\n-static EVP_CIPHER_CTX ctx_dec;\t/* decrypt */\n+static EVP_CIPHER_CTX *ctx_enc;\t/* encrypt */\n+static EVP_CIPHER_CTX *ctx_dec;\t/* decrypt */\n \n-static EVP_CIPHER_CTX ctx_enc_ecb;\t/* sideband ecb encrypt */\n-static EVP_CIPHER_CTX ctx_dec_ecb;\t/* sideband ecb decrypt */\n+static EVP_CIPHER_CTX *ctx_enc_ecb;\t/* sideband ecb encrypt */\n+static EVP_CIPHER_CTX *ctx_dec_ecb;\t/* sideband ecb decrypt */\n \n static int send_msg(int len, char *in, char **out);\n static int recv_msg(int len, char *in, char **out);\n static int send_ib_mesg(int *len, char **in);\n static int recv_ib_mesg(int *len, char **in);\n@@ -180,37 +180,37 @@\n       case VTUN_ENC_AES256CBC:\n          blocksize = 16;\n          keysize = 32;\n          sb_init = 1;\n          cipher_type = EVP_aes_256_ecb();\n-         pctx_enc = &ctx_enc_ecb;\n-         pctx_dec = &ctx_dec_ecb;\n+         pctx_enc = ctx_enc_ecb;\n+         pctx_dec = ctx_dec_ecb;\n       break;\n       \n       case VTUN_ENC_AES256ECB:\n          blocksize = 16;\n          keysize = 32;\n-         pctx_enc = &ctx_enc;\n-         pctx_dec = &ctx_dec;\n+         pctx_enc = ctx_enc;\n+         pctx_dec = ctx_dec;\n          cipher_type = EVP_aes_256_ecb();\n          strcpy(cipher_name,\"AES-256-ECB\");\n       break;      \n       case VTUN_ENC_AES128OFB:\n       case VTUN_ENC_AES128CFB:\n       case VTUN_ENC_AES128CBC:\n          blocksize = 16;\n          keysize = 16;\n          sb_init=1;\n          cipher_type = EVP_aes_128_ecb();\n-         pctx_enc = &ctx_enc_ecb;\n-         pctx_dec = &ctx_dec_ecb;\n+         pctx_enc = ctx_enc_ecb;\n+         pctx_dec = ctx_dec_ecb;\n       break;\n       case VTUN_ENC_AES128ECB:\n          blocksize = 16;\n          keysize = 16;\n-         pctx_enc = &ctx_enc;\n-         pctx_dec = &ctx_dec;\n+         pctx_enc = ctx_enc;\n+         pctx_dec = ctx_dec;\n          cipher_type = EVP_aes_128_ecb();\n          strcpy(cipher_name,\"AES-128-ECB\");\n       break;\n \n       case VTUN_ENC_BF256OFB:\n@@ -219,20 +219,20 @@\n          blocksize = 8;\n          keysize = 32;\n          var_key = 1;\n          sb_init = 1;\n          cipher_type = EVP_bf_ecb();\n-         pctx_enc = &ctx_enc_ecb;\n-         pctx_dec = &ctx_dec_ecb;\n+         pctx_enc = ctx_enc_ecb;\n+         pctx_dec = ctx_dec_ecb;\n       break;\n \n       case VTUN_ENC_BF256ECB:\n          blocksize = 8;\n          keysize = 32;\n          var_key = 1;\n-         pctx_enc = &ctx_enc;\n-         pctx_dec = &ctx_dec;\n+         pctx_enc = ctx_enc;\n+         pctx_dec = ctx_dec;\n          cipher_type = EVP_bf_ecb();\n          strcpy(cipher_name,\"Blowfish-256-ECB\");\n       break;\n \n       case VTUN_ENC_BF128OFB:\n@@ -241,26 +241,28 @@\n          blocksize = 8;\n          keysize = 16;\n          var_key = 1;\n          sb_init = 1;\n          cipher_type = EVP_bf_ecb();\n-         pctx_enc = &ctx_enc_ecb;\n-         pctx_dec = &ctx_dec_ecb;\n+         pctx_enc = ctx_enc_ecb;\n+         pctx_dec = ctx_dec_ecb;\n       break;\n       case VTUN_ENC_BF128ECB: /* blowfish 128 ecb is the default */\n       default:\n          blocksize = 8;\n          keysize = 16;\n          var_key = 1;\n-         pctx_enc = &ctx_enc;\n-         pctx_dec = &ctx_dec;\n+         pctx_enc = ctx_enc;\n+         pctx_dec = ctx_dec;\n          cipher_type = EVP_bf_ecb();\n          strcpy(cipher_name,\"Blowfish-128-ECB\");\n       break;\n    } /* switch(host->cipher) */\n \n    if (prep_key(&pkey, keysize, host) != 0) return -1;\n+   pctx_enc = EVP_CIPHER_CTX_new();\n+   pctx_dec = EVP_CIPHER_CTX_new();\n    EVP_CIPHER_CTX_init(pctx_enc);\n    EVP_CIPHER_CTX_init(pctx_dec);\n    EVP_EncryptInit_ex(pctx_enc, cipher_type, NULL, NULL, NULL);\n    EVP_DecryptInit_ex(pctx_dec, cipher_type, NULL, NULL, NULL);\n    if (var_key)\n@@ -292,14 +294,14 @@\n    free_key(pkey); pkey = NULL;\n \n    lfd_free(enc_buf); enc_buf = NULL;\n    lfd_free(dec_buf); dec_buf = NULL;\n \n-   EVP_CIPHER_CTX_cleanup(&ctx_enc);\n-   EVP_CIPHER_CTX_cleanup(&ctx_dec);\n-   EVP_CIPHER_CTX_cleanup(&ctx_enc_ecb);\n-   EVP_CIPHER_CTX_cleanup(&ctx_dec_ecb);\n+   EVP_CIPHER_CTX_free(ctx_enc);\n+   EVP_CIPHER_CTX_free(ctx_dec);\n+   EVP_CIPHER_CTX_free(ctx_enc_ecb);\n+   EVP_CIPHER_CTX_free(ctx_dec_ecb);\n \n    return 0;\n }\n \n static int encrypt_buf(int len, char *in, char **out)\n@@ -321,11 +323,11 @@\n    \n    memset(in_ptr+len, pad, pad);\n    outlen=len+pad;\n    if (pad == blocksize)\n       RAND_bytes(in_ptr+len, blocksize-1);\n-   EVP_EncryptUpdate(&ctx_enc, out_ptr, &outlen, in_ptr, len+pad);\n+   EVP_EncryptUpdate(ctx_enc, out_ptr, &outlen, in_ptr, len+pad);\n    *out = enc_buf;\n \n    sequence_num++;\n \n    return outlen+msg_len;\n@@ -341,11 +343,11 @@\n    in = *out;\n    in_ptr = in;\n \n    outlen=len;\n    if (!len) return 0;\n-   EVP_DecryptUpdate(&ctx_dec, out_ptr, &outlen, in_ptr, len);\n+   EVP_DecryptUpdate(ctx_dec, out_ptr, &outlen, in_ptr, len);\n    recv_ib_mesg(&outlen, &out_ptr);\n    if (!outlen) return 0;\n    tmp_ptr = out_ptr + outlen; tmp_ptr--;\n    pad = *tmp_ptr;\n    if (pad < 1 || pad > blocksize) {\n@@ -429,17 +431,18 @@\n       /* if we're here, something weird's going on */\n          return -1;\n       break;\n    } /* switch(cipher) */\n \n-   EVP_CIPHER_CTX_init(&ctx_enc);\n-   EVP_EncryptInit_ex(&ctx_enc, cipher_type, NULL, NULL, NULL);\n+   ctx_enc = EVP_CIPHER_CTX_new();\n+   EVP_CIPHER_CTX_init(ctx_enc);\n+   EVP_EncryptInit_ex(ctx_enc, cipher_type, NULL, NULL, NULL);\n    if (var_key)\n-      EVP_CIPHER_CTX_set_key_length(&ctx_enc, keysize);\n-   EVP_EncryptInit_ex(&ctx_enc, NULL, NULL, pkey, NULL);\n-   EVP_EncryptInit_ex(&ctx_enc, NULL, NULL, NULL, iv);\n-   EVP_CIPHER_CTX_set_padding(&ctx_enc, 0);\n+      EVP_CIPHER_CTX_set_key_length(ctx_enc, keysize);\n+   EVP_EncryptInit_ex(ctx_enc, NULL, NULL, pkey, NULL);\n+   EVP_EncryptInit_ex(ctx_enc, NULL, NULL, NULL, iv);\n+   EVP_CIPHER_CTX_set_padding(ctx_enc, 0);\n    if (enc_init_first_time)\n    {\n       sprintf(tmpstr,\"%s encryption initialized\", cipher_name);\n       vtun_syslog(LOG_INFO, tmpstr);\n       enc_init_first_time = 0;\n@@ -519,17 +522,18 @@\n       /* if we're here, something weird's going on */\n          return -1;\n       break;\n    } /* switch(cipher) */\n \n-   EVP_CIPHER_CTX_init(&ctx_dec);\n-   EVP_DecryptInit_ex(&ctx_dec, cipher_type, NULL, NULL, NULL);\n+   ctx_dec = EVP_CIPHER_CTX_new();\n+   EVP_CIPHER_CTX_init(ctx_dec);\n+   EVP_DecryptInit_ex(ctx_dec, cipher_type, NULL, NULL, NULL);\n    if (var_key)\n-      EVP_CIPHER_CTX_set_key_length(&ctx_dec, keysize);\n-   EVP_DecryptInit_ex(&ctx_dec, NULL, NULL, pkey, NULL);\n-   EVP_DecryptInit_ex(&ctx_dec, NULL, NULL, NULL, iv);\n-   EVP_CIPHER_CTX_set_padding(&ctx_dec, 0);\n+      EVP_CIPHER_CTX_set_key_length(ctx_dec, keysize);\n+   EVP_DecryptInit_ex(ctx_dec, NULL, NULL, pkey, NULL);\n+   EVP_DecryptInit_ex(ctx_dec, NULL, NULL, NULL, iv);\n+   EVP_CIPHER_CTX_set_padding(ctx_dec, 0);\n    if (dec_init_first_time)\n    {\n       sprintf(tmpstr,\"%s decryption initialized\", cipher_name);\n       vtun_syslog(LOG_INFO, tmpstr);\n       dec_init_first_time = 0;\n@@ -557,11 +561,11 @@\n          memset(iv,0,blocksize); free(iv); iv = NULL;\n          RAND_bytes(in_ptr, in - in_ptr);\n \n          in_ptr = in - blocksize*2;\n          outlen = blocksize*2;\n-         EVP_EncryptUpdate(&ctx_enc_ecb, in_ptr, \n+         EVP_EncryptUpdate(ctx_enc_ecb, in_ptr, \n             &outlen, in_ptr, blocksize*2);\n          *out = in_ptr;\n          len = outlen;\n          cipher_enc_state = CIPHER_SEQUENCE;\n       break;\n@@ -584,11 +588,11 @@\n    {\n       case CIPHER_INIT:\n          in_ptr = in;\n          iv = malloc(blocksize);\n          outlen = blocksize*2;\n-         EVP_DecryptUpdate(&ctx_dec_ecb, in_ptr, &outlen, in_ptr, blocksize*2);\n+         EVP_DecryptUpdate(ctx_dec_ecb, in_ptr, &outlen, in_ptr, blocksize*2);\n          \n          if ( !strncmp(in_ptr, \"ivec\", 4) )\n          {\n             memcpy(iv, in_ptr+4, blocksize);\n             cipher_dec_init(iv);\n@@ -627,11 +631,11 @@\n                   \"Max. gibberish threshold reached\");\n #endif\n                if (cipher_enc_state != CIPHER_INIT)\n                {\n                   cipher_enc_state = CIPHER_INIT;\n-                  EVP_CIPHER_CTX_cleanup(&ctx_enc);\n+                  EVP_CIPHER_CTX_free(ctx_enc);\n #ifdef LFD_ENCRYPT_DEBUG\n                   vtun_syslog(LOG_INFO, \n                      \"Forcing local encryptor re-init\");\n #endif\n                }\n@@ -708,11 +712,11 @@\n          *len -= blocksize;\n \n          if (cipher_enc_state != CIPHER_INIT)\n          {\n             cipher_enc_state = CIPHER_INIT;\n-            EVP_CIPHER_CTX_cleanup(&ctx_enc);\n+            EVP_CIPHER_CTX_free(ctx_enc);\n          }\n #ifdef LFD_ENCRYPT_DEBUG\n          vtun_syslog(LOG_INFO, \"Remote requests encryptor re-init\");\n #endif\n       }\n@@ -722,11 +726,11 @@\n \n          if (cipher_dec_state != CIPHER_INIT &&\n              cipher_enc_state != CIPHER_REQ_INIT &&\n              cipher_enc_state != CIPHER_INIT)\n          {\n-            EVP_CIPHER_CTX_cleanup (&ctx_dec);\n+            EVP_CIPHER_CTX_free (ctx_dec);\n             cipher_dec_state = CIPHER_INIT;\n             cipher_enc_state = CIPHER_REQ_INIT;\n          }\n #ifdef LFD_ENCRYPT_DEBUG\n          vtun_syslog(LOG_INFO, \"Local decryptor out of sync\");\n"
  },
  {
    "path": "package/vtun/Config.in",
    "content": "config BR2_PACKAGE_VTUN\n\tbool \"vtun\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LZO\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Tool for easily creating Virtual Tunnels over TCP/IP networks\n\t  with traffic shaping, compression, and encryption.\n\n\t  It supports IP, PPP, SLIP, Ethernet and other tunnel types.\n\n\t  http://vtun.sourceforge.net/\n"
  },
  {
    "path": "package/vtun/vtun.hash",
    "content": "# From https://sourceforge.net/projects/vtun/files/vtun/3.0.4/\nmd5 f952c5895ae8f40235aaad9a8f41a4bd  vtun-3.0.4.tar.gz\nsha1 2335c21b56fadf9ce851dd7f342fb0ed4f522c47  vtun-3.0.4.tar.gz\n# Locally computed:\nsha256 abf8df6b15e3febeaaeae2ce24ead7105eb1537ad4ec0d830c83cbb684fd98b9  vtun-3.0.4.tar.gz\nsha256 5692a9a69dc5abc1aa9cbc54899d114b65c4cefbd9d7fcecc304316a2f26ced3  README.OpenSSL\n"
  },
  {
    "path": "package/vtun/vtun.mk",
    "content": "################################################################################\n#\n# vtun\n#\n################################################################################\n\nVTUN_VERSION = 3.0.4\nVTUN_SITE = http://downloads.sourceforge.net/project/vtun/vtun/$(VTUN_VERSION)\nVTUN_LICENSE = GPL-2.0+ with OpenSSL exception\nVTUN_LICENSE_FILES = README.OpenSSL\nVTUN_DEPENDENCIES = host-bison host-flex host-pkgconf zlib lzo openssl\nVTUN_AUTORECONF = YES\n\nVTUN_CONF_OPTS = \\\n\t--with-ssl-headers=$(STAGING_DIR)/usr/include/openssl \\\n\t--with-lzo-headers=$(STAGING_DIR)/usr/include/lzo \\\n\t--with-lzo-lib=$(STAGING_DIR)/usr/lib\n\n# Assumes old-style gcc inline symbol visibility rules\nVTUN_CONF_ENV = CFLAGS=\"$(TARGET_CFLAGS) -std=gnu89\"\n\n# configure.in forgets to link to dependent libraries of openssl breaking static\n# linking\nVTUN_CONF_ENV += LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/vuejs/Config.in",
    "content": "config BR2_PACKAGE_VUEJS\n\tbool \"vuejs\"\n\thelp\n\t  VueJS web application framework.\n\n\t  http://vuejs.org\n"
  },
  {
    "path": "package/vuejs/vuejs.hash",
    "content": "# Locally computed\nsha256  464ea5fdbcb51eee0b5f4762f169024b36a3bcd2c039ea8608b17fdd8a8595e9  vue-3.2.6.tgz\nsha256  1bb85cc9b13b81ef41c81c51866172fc345e0503c86726a6755b796590b70175  LICENSE\n"
  },
  {
    "path": "package/vuejs/vuejs.mk",
    "content": "################################################################################\n#\n# vuejs\n#\n################################################################################\n\nVUEJS_VERSION = 3.2.6\nVUEJS_SOURCE = vue-$(VUEJS_VERSION).tgz\nVUEJS_SITE = https://registry.npmjs.org/vue/-\nVUEJS_LICENSE = MIT\nVUEJS_LICENSE_FILES = LICENSE\n\n# Install .prod.js as .js\ndefine VUEJS_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 644 -D $(@D)/dist/vue.global.prod.js \\\n\t\t$(TARGET_DIR)/var/www/vue.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/vuejs-router/Config.in",
    "content": "config BR2_PACKAGE_VUEJS_ROUTER\n\tbool \"vuejs-router\"\n\thelp\n\t  The official router for Vue.js.\n\n\t  http://router.vuejs.org\n"
  },
  {
    "path": "package/vuejs-router/vuejs-router.hash",
    "content": "# Locally computed\nsha256  317ae9b916b9a8c5ec521697c345bef15759887d63342ddf19c18ff05ca279b9  vue-router-4.0.11.tgz\nsha256  9c0015250f592a09d7787efc07152afcf661fff6bda2554359f6d00987828c02  LICENSE\n"
  },
  {
    "path": "package/vuejs-router/vuejs-router.mk",
    "content": "################################################################################\n#\n# vuejs-router\n#\n################################################################################\n\nVUEJS_ROUTER_VERSION = 4.0.11\nVUEJS_ROUTER_SOURCE = vue-router-$(VUEJS_ROUTER_VERSION).tgz\nVUEJS_ROUTER_SITE = https://registry.npmjs.org/vue-router/-\nVUEJS_ROUTER_LICENSE = MIT\nVUEJS_ROUTER_LICENSE_FILES = LICENSE\n\n# Install .prod.js as .js\ndefine VUEJS_ROUTER_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 644 -D $(@D)/dist/vue-router.global.prod.js \\\n\t\t$(TARGET_DIR)/var/www/vue-router.js\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/w_scan/0001-musl.patch",
    "content": "Fix musl build\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr w_scan-20141122.org/descriptors.h w_scan-20141122/descriptors.h\n--- w_scan-20141122.org/descriptors.h\t2014-11-22 09:49:26.000000000 +0100\n+++ w_scan-20141122/descriptors.h\t2016-01-24 14:05:21.000000000 +0100\n@@ -28,6 +28,7 @@\n #ifndef __DESCRIPTORS_H__\n #define __DESCRIPTORS_H__\n \n+#include <time.h>\n #include \"extended_frontend.h\"\n \n /******************************************************************************\ndiff -uNr w_scan-20141122.org/version.h w_scan-20141122/version.h\n--- w_scan-20141122.org/version.h\t2014-11-22 11:59:56.000000000 +0100\n+++ w_scan-20141122/version.h\t2016-01-24 14:06:33.000000000 +0100\n@@ -1,6 +1,6 @@\n /* AUTOMATICALLY GENERATED - DO NOT EDIT MANUALLY */\n #ifndef W_SCAN_VERSION_H\n #define W_SCAN_VERSION_H\n-uint version=20170107;\n+unsigned int version=20170107;\n #endif\n \n"
  },
  {
    "path": "package/w_scan/0002-si_types-h-fix-build-with-gcc-10.patch",
    "content": "si_types.h: fix build with gcc 10\n\nDrop service_t, p_service_t, transponder_t and p_transponder_t to avoid\nthe following build failure with gcc 10 (which defaults to -fno-common):\n\n/home/giuliobenetti/autobuild/run/instance-3/output-1/host/bin/arm-buildroot-linux-gnueabihf-gcc -Wall -Wextra -Wno-comment -Wswitch-default -Wno-unused-parameter -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os   -lrt  -o w_scan atsc_psip_section.o countries.o descriptors.o diseqc.o dump-dvbscan.o dump-vdr.o dump-xine.o dump-mplayer.o dump-vlc-m3u.o dvbscan.o lnb.o parse-dvbscan.o satellites.o scan.o section.o tools.o emulate.o dump-xml.o iconv_codes.o char-coding.o  \n/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: descriptors.o:(.bss+0x404): multiple definition of `p_transponder_t'; countries.o:(.bss+0x0): first defined here\n/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: descriptors.o:(.bss+0x408): multiple definition of `transponder_t'; countries.o:(.bss+0x4): first defined here\n/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: descriptors.o:(.bss+0x480): multiple definition of `p_service_t'; countries.o:(.bss+0x7c): first defined here\n/home/giuliobenetti/autobuild/run/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/10.2.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: descriptors.o:(.bss+0x484): multiple definition of `service_t'; countries.o:(.bss+0x80): first defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/5640442cb4ba06bcbcf31540a64f5665862d39f7\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -Nura w_scan-20170107.orig/si_types.h w_scan-20170107/si_types.h\n--- w_scan-20170107.orig/si_types.h\t2020-09-20 11:09:56.776963441 +0200\n+++ w_scan-20170107/si_types.h\t2020-09-20 11:13:13.149232478 +0200\n@@ -114,7 +114,7 @@\n   uint32_t logical_channel_number;\n   uint8_t  running;\n   void   * priv;\n-} service_t, * p_service_t;\n+};\n \n /*******************************************************************************\n /* transponder type.\n@@ -201,7 +201,7 @@\n   /*----------------------------*/\n   char * network_name;\n   network_change_t network_change;\n-} __attribute__((packed))  transponder_t, * p_transponder_t;\n+} __attribute__((packed));\n \n /*******************************************************************************\n /* satellite channel routing type.\n"
  },
  {
    "path": "package/w_scan/Config.in",
    "content": "comment \"w_scan needs a toolchain w/ headers >= 3.7\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7\n\nconfig BR2_PACKAGE_W_SCAN\n\tbool \"w_scan\"\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  w_scan is a small command line utility used to perform\n\t  frequency scans for DVB and ATSC transmissions. It is\n\t  capable of creating channels.conf files (in different output\n\t  formats !) as well as initial tuning data for scan.\n\n\t  https://www.gen2vdr.de/wirbel/w_scan/index2.html\n"
  },
  {
    "path": "package/w_scan/w_scan.hash",
    "content": "# Locally calculated\nsha256  38e0f38a7bf06cff6d6ea01652ad4ee60da2cb0e937360468f936da785b46ffe  w_scan-20170107.tar.bz2\nsha256  ddb9db7630752f8fdc6898f7c99a99eaeeac5213627ecb093df9c82f56175dc7  COPYING\n"
  },
  {
    "path": "package/w_scan/w_scan.mk",
    "content": "################################################################################\n#\n# w_scan\n#\n################################################################################\n\nW_SCAN_VERSION = 20170107\nW_SCAN_SOURCE = w_scan-$(W_SCAN_VERSION).tar.bz2\nW_SCAN_SITE = http://wirbel.htpc-forum.de/w_scan\nW_SCAN_LICENSE = GPL-2.0+\nW_SCAN_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nW_SCAN_DEPENDENCIES += libiconv\nW_SCAN_CONF_ENV += LIBS=-liconv\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/waf/waf.hash",
    "content": "# Locally computed\nsha1  494ada411468129ed229f946ecec3048400e320b  waf-2.0.22\nsha256  0a09ad26a2cfc69fa26ab871cb558165b60374b5a653ff556a0c6aca63a00df1  waf-2.0.22\n\n# The waf script also contains its license, but is renamed `waf` in the extract\n# step, so this is a synonym for the above, to check WAF_LICENSE\nsha256  0a09ad26a2cfc69fa26ab871cb558165b60374b5a653ff556a0c6aca63a00df1  waf\n"
  },
  {
    "path": "package/waf/waf.mk",
    "content": "################################################################################\n#\n# waf\n#\n################################################################################\n\nWAF_VERSION = 2.0.22\nWAF_SOURCE = waf-$(WAF_VERSION)\nWAF_SITE = https://waf.io\nWAF_LICENSE = BSD-3-Clause\nWAF_LICENSE_FILES = waf\n\ndefine HOST_WAF_EXTRACT_CMDS\n\t$(INSTALL) -D -m 0755 $(HOST_WAF_DL_DIR)/waf-$(WAF_VERSION) $(@D)/waf\nendef\n\ndefine HOST_WAF_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/waf $(HOST_DIR)/bin/waf\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/waffle/0001-cmake-forward-cflags-from-.pc-files-to-waffle-cflags.patch",
    "content": "From 8b0ae49c8bea78df73c3ecae0059d54a95c561fa Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@gmail.com>\nDate: Sun, 24 Dec 2017 00:11:45 +0100\nSubject: [PATCH] cmake: forward cflags from *.pc files to waffle cflags\n\nWhen building mesa egl without x11 and gles2 the headers need a\nEGL_NO_X11 define to avoid including X11 headers.\n\nThis define EGL_NO_X11 is lost while building waffle\nsince CFLAGS defined by pc files are not used.\n\nEGL_NO_X11 is defined in CFLAGS from egl.pc.\n\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n src/waffle/CMakeLists.txt | 8 ++++++++\n 1 file changed, 8 insertions(+)\n\ndiff --git a/src/waffle/CMakeLists.txt b/src/waffle/CMakeLists.txt\nindex d76e029..2ff72c8 100644\n--- a/src/waffle/CMakeLists.txt\n+++ b/src/waffle/CMakeLists.txt\n@@ -5,6 +5,14 @@\n add_definitions(\n     -DWAFFLE_API_VERSION=${waffle_api_version}\n     -DWAFFLE_API_EXPERIMENTAL\n+    ${egl_CFLAGS}\n+    ${gbm_CFLAGS}\n+    ${gl_CFLAGS}\n+    ${GLEXT_CFLAGS}\n+    ${libudev_CFLAGS}\n+    ${wayland-client_CFLAGS}\n+    ${wayland-egl_CFLAGS}\n+    ${x11-xcb_CFLAGS}\n     )\n \n include_directories(\n-- \n2.14.3\n\n"
  },
  {
    "path": "package/waffle/Config.in",
    "content": "config BR2_PACKAGE_WAFFLE_SUPPORTS_GLX\n\tbool\n\tdefault y if BR2_PACKAGE_HAS_LIBGL && BR2_PACKAGE_XORG7\n\nconfig BR2_PACKAGE_WAFFLE_SUPPORTS_WAYLAND\n\tbool\n\tdefault y if BR2_PACKAGE_WAYLAND && BR2_PACKAGE_HAS_LIBEGL_WAYLAND\n\nconfig BR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL\n\tbool\n\tdefault y if BR2_PACKAGE_HAS_LIBEGL && BR2_PACKAGE_XORG7\n\nconfig BR2_PACKAGE_WAFFLE_SUPPORTS_GBM\n\tbool\n\t# mesa3d is for now the only GBM provider, and it is enabled\n\t# together with its EGL support\n\tdefault y if BR2_PACKAGE_HAS_LIBEGL && BR2_PACKAGE_MESA3D_OPENGL_EGL && BR2_PACKAGE_HAS_UDEV\n\nconfig BR2_PACKAGE_WAFFLE\n\tbool \"waffle\"\n\tdepends on BR2_PACKAGE_WAFFLE_SUPPORTS_GLX || \\\n\t\tBR2_PACKAGE_WAFFLE_SUPPORTS_WAYLAND || \\\n\t\tBR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL || \\\n\t\tBR2_PACKAGE_WAFFLE_SUPPORTS_GBM\n\tselect BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_WAFFLE_SUPPORTS_GLX || BR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL\n\tselect BR2_PACKAGE_LIBXCB if BR2_PACKAGE_WAFFLE_SUPPORTS_GLX || BR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL\n\thelp\n\t  Waffle is a cross-platform library that allows one to defer\n\t  selection of an OpenGL API and of window system until\n\t  runtime. For example, on Linux, Waffle enables an application\n\t  to select X11/EGL with an OpenGL 3.3 core profile, Wayland\n\t  with OpenGL ES2, and other window system / API combinations.\n\n\t  Waffle's immediate goal is to enable Piglit [1] to test\n\t  multiple OpenGL flavors in a cross-platform way, and to allow\n\t  each Piglit test to choose its OpenGL API and window system\n\t  at runtime. A future goal is to enable the ability to record\n\t  (with another tool such APITrace [2]) an application's OpenGL\n\t  calls on one operating system or window system, and then\n\t  replay that trace on a different system.\n\n\t  For more information, visit to Waffle's website.\n\n\t  [1] http://piglit.freedesktop.org\n\t  [2] http://github.com/apitrace/apitrace#readme\n\n\t  http://www.waffle-gl.org\n"
  },
  {
    "path": "package/waffle/waffle.hash",
    "content": "# Locally calculated\nsha256  234e65bdd2dd8f7d3bc8e9ad1a7cc80fce78a1deed3a04fe7f1d2c2edac0cd8a  waffle-v1.6.1.tar.bz2\nsha256  630844d1911c8a1b7b888a1de9097c4860b7e381362fd5aa64141d58ab7ecc9b  LICENSE.txt\n"
  },
  {
    "path": "package/waffle/waffle.mk",
    "content": "################################################################################\n#\n# waffle\n#\n################################################################################\n\nWAFFLE_VERSION = 1.6.1\nWAFFLE_SOURCE = waffle-v$(WAFFLE_VERSION).tar.bz2\nWAFFLE_SITE = https://gitlab.freedesktop.org/mesa/waffle/-/archive/v$(WAFFLE_VERSION)\nWAFFLE_INSTALL_STAGING = YES\nWAFFLE_LICENSE = BSD-2-Clause\nWAFFLE_LICENSE_FILES = LICENSE.txt\n\nWAFFLE_DEPENDENCIES = host-pkgconf\n\nWAFFLE_CONF_OPTS = -Dwaffle_build_tests=OFF \\\n\t-Dwaffle_build_examples=OFF \\\n\t-Dwaffle_build_manpages=OFF \\\n\t-Dwaffle_build_htmldocs=OFF \\\n\t-Dwaffle_has_nacl=OFF\n\nifeq ($(BR2_PACKAGE_WAFFLE_SUPPORTS_WAYLAND),y)\nWAFFLE_DEPENDENCIES += libegl wayland\nWAFFLE_CONF_OPTS += -Dwaffle_has_wayland=ON\nelse\nWAFFLE_CONF_OPTS += -Dwaffle_has_wayland=OFF\nendif\n\nifeq ($(BR2_PACKAGE_WAFFLE_SUPPORTS_X11_EGL),y)\nWAFFLE_DEPENDENCIES += libegl libxcb xlib_libX11\nWAFFLE_CONF_OPTS += -Dwaffle_has_x11_egl=ON\nelse\nWAFFLE_CONF_OPTS += -Dwaffle_has_x11_egl=OFF\nendif\n\nifeq ($(BR2_PACKAGE_WAFFLE_SUPPORTS_GLX),y)\nWAFFLE_DEPENDENCIES += libgl libxcb xlib_libX11\nWAFFLE_CONF_OPTS += -Dwaffle_has_glx=ON\nelse\nWAFFLE_CONF_OPTS += -Dwaffle_has_glx=OFF\nendif\n\nifeq ($(BR2_PACKAGE_WAFFLE_SUPPORTS_GBM),y)\nWAFFLE_DEPENDENCIES += libegl udev\nWAFFLE_CONF_OPTS += -Dwaffle_has_gbm=ON\nelse\nWAFFLE_CONF_OPTS += -Dwaffle_has_gbm=OFF\nendif\n\nifeq ($(BR2_PACKAGE_BASH_COMPLETION),y)\nWAFFLE_DEPENDENCIES += bash-completion\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D)$(BR2_PACKAGE_MESA3D_OPENGL_EGL),yy)\nWAFFLE_DEPENDENCIES += mesa3d\nWAFFLE_CONF_OPTS += -Dwaffle_has_surfaceless_egl=ON\nelse\nWAFFLE_CONF_OPTS += -Dwaffle_has_surfaceless_egl=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/wampcc/0001-Add-RISC-V-endian-detection.patch",
    "content": "From e94589ed36c4a311355efc46ba3f76523c546057 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nDate: Wed, 7 Aug 2019 16:17:16 +0200\nSubject: [PATCH] Add RISC-V endian detection\n\n3rdparty/msgpack-c/include/msgpack/predef/other/endian.h (which comes\nfrom Boost) two ways of detecting the endianess:\n\n (1) It includes <endian.h> if BOOST_LIB_C_GNU is defined, and then\n     use __BYTE_ORDER to decide the endianness.\n\n (2) Otherwise, if (1) was not possible for some reason, it uses\n     architecture defines to decide the endianness.\n\n(1) works perfectly fine with glibc toolchains, because\nBOOST_LIB_C_GNU is defined, but it doesn't work with musl. Due to\nthis, <endian.h> is not included, __BYTE_ORDER is not defined, and\nmethod (1) does not work, causing build failures on musl toolchains\nthat don't have explicit handling by architecture name (method 2).\n\nSo this commit fixes RISC-V musl build by adding support for the\n__riscv architecture define, to determine that the endianness is\nlittle endian.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\n---\n 3rdparty/msgpack-c/include/msgpack/predef/other/endian.h | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/3rdparty/msgpack-c/include/msgpack/predef/other/endian.h b/3rdparty/msgpack-c/include/msgpack/predef/other/endian.h\nindex 3c609fa..63a5722 100644\n--- a/3rdparty/msgpack-c/include/msgpack/predef/other/endian.h\n+++ b/3rdparty/msgpack-c/include/msgpack/predef/other/endian.h\n@@ -127,7 +127,8 @@ information and acquired knowledge:\n         defined(__AARCH64EL__) || \\\n         defined(_MIPSEL) || \\\n         defined(__MIPSEL) || \\\n-        defined(__MIPSEL__)\n+        defined(__MIPSEL__) || \\\n+        defined(__riscv)\n #       undef MSGPACK_ENDIAN_LITTLE_BYTE\n #       define MSGPACK_ENDIAN_LITTLE_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE\n #   endif\n-- \n2.21.0\n\n"
  },
  {
    "path": "package/wampcc/0002-include-wampcc-platform.h-fix-build-with-musl-1.2.0.patch",
    "content": "From 9c2559434b752df3dc8460ee242d321670a40847 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Mon, 1 Jun 2020 11:41:54 +0200\nSubject: [PATCH] include/wampcc/platform.h: fix build with musl 1.2.0\n\nFix the following build failure on musl 1.2.0 due to time_t being on 64\nbits:\n\n/home/naourr/work/instance-0/output-1/build/wampcc-1.6/libs/wampcc/utils.cc: In function 'std::__cxx11::string wampcc::local_timestamp()':\n/home/naourr/work/instance-0/output-1/build/wampcc-1.6/libs/wampcc/utils.cc:205:15: error: cannot convert 'wampcc::time_val::type_type*' {aka 'long int*'} to 'const time_t*' {aka 'const long long int*'}\n   localtime_r(&now.sec, &parts);\n               ^~~~~~~~\n\nFixes:\n - http://autobuild.buildroot.org/results/da996e189220499b85efbdb541a891ac18db38c6\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/darrenjs/wampcc/pull/62]\n---\n include/wampcc/platform.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/include/wampcc/platform.h b/include/wampcc/platform.h\nindex 24d0868..aebf950 100644\n--- a/include/wampcc/platform.h\n+++ b/include/wampcc/platform.h\n@@ -27,7 +27,7 @@ namespace wampcc\n   struct time_val\n   {\n #ifndef _WIN32\n-    typedef long type_type;\n+    typedef time_t type_type;\n #else\n     typedef __time64_t type_type;\n #endif\n-- \n2.26.2\n\n"
  },
  {
    "path": "package/wampcc/0003-Broken-build-on-Windows.patch",
    "content": "From eaa70a289288db1e8d90a2a9bcde435a8975fe74 Mon Sep 17 00:00:00 2001\nFrom: Sergey Lukashevich <sergey.lukashevi4@gmail.com>\nDate: Fri, 26 Jul 2019 21:58:34 +0300\nSubject: [PATCH] Broken build on Windows: \"http_parser.h(66,18): error C2039: \n 'runtime_error': is not a member of 'std'\"\n\nAdd missing <stdexcept> include.\n\n[Retrieved from:\nhttps://github.com/darrenjs/wampcc/commit/eaa70a289288db1e8d90a2a9bcde435a8975fe74]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n include/wampcc/http_parser.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/include/wampcc/http_parser.h b/include/wampcc/http_parser.h\nindex a9405dd..4c20417 100644\n--- a/include/wampcc/http_parser.h\n+++ b/include/wampcc/http_parser.h\n@@ -11,6 +11,7 @@\n #include <map>\n #include <string>\n #include <memory>\n+#include <stdexcept>\n \n // types brought in from nodejs http-parser project\n struct http_parser;\n"
  },
  {
    "path": "package/wampcc/Config.in",
    "content": "config BR2_PACKAGE_WAMPCC\n\tbool \"wampcc\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv\n\tdepends on BR2_USE_MMU # libuv\n\tdepends on !BR2_STATIC_LIBS # libuv\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future\n\tselect BR2_PACKAGE_LIBUV\n\tselect BR2_PACKAGE_JANSSON\n\tselect BR2_PACKAGE_OPENSSL\n\thelp\n\t  wampcc is a C++ library that implements the Web Application\n\t  Messaging Protocol.\n\n\t  https://github.com/darrenjs/wampcc\n\ncomment \"wampcc needs a toolchain w/ C++, NPTL, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS\n\ncomment \"wampcc needs a toolchain not affected by GCC bug 64735\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_ATOMIC\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n"
  },
  {
    "path": "package/wampcc/wampcc.hash",
    "content": "# Locally calculated\nsha256  b3c3633b4c6a74d7ac8a676a7ea30fbfde7ae19aa1fc37de3b8aa3a553b674a2  wampcc-1.6.tar.gz\nsha256  bd185b1ec8a292d42b42346757ff6e198073e13c1e080e9ea548d34dd42d30d8  LICENSE\n"
  },
  {
    "path": "package/wampcc/wampcc.mk",
    "content": "################################################################################\n#\n# wampcc\n#\n################################################################################\n\nWAMPCC_VERSION = 1.6\nWAMPCC_SITE = $(call github,darrenjs,wampcc,v$(WAMPCC_VERSION))\nWAMPCC_DEPENDENCIES = host-pkgconf libuv jansson openssl\nWAMPCC_INSTALL_STAGING = YES\nWAMPCC_LICENSE = MIT\nWAMPCC_LICENSE_FILES = LICENSE\n\n# Uses __atomic_fetch_add_8\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nWAMPCC_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/watchdog/Config.in",
    "content": "config BR2_PACKAGE_WATCHDOG\n\tbool \"watchdog\"\n\tdepends on BR2_USE_MMU\n\thelp\n\t  Watchdog is a daemon that periodically pets a watchdog device\n\t  if the configured system status checks pass. If they do not,\n\t  the daemon may execute repair commands, shutdown the system or\n\t  reboot it.\n\n\t  https://sourceforge.net/projects/watchdog/\n"
  },
  {
    "path": "package/watchdog/watchdog.hash",
    "content": "# Locally computed\nsha256  b8e7c070e1b72aee2663bdc13b5cc39f76c9232669cfbb1ac0adc7275a3b019d  watchdog-5.16.tar.gz\nsha256  af7f3f94e85080204b37f7c53717a2c94c6b54d7fa516ebd74e008cb4c0391bd  COPYING\n"
  },
  {
    "path": "package/watchdog/watchdog.mk",
    "content": "################################################################################\n#\n# watchdog\n#\n################################################################################\n\nWATCHDOG_VERSION = 5.16\nWATCHDOG_SITE = http://downloads.sourceforge.net/sourceforge/watchdog\nWATCHDOG_LICENSE = GPL-2.0+\nWATCHDOG_LICENSE_FILES = COPYING\n# By default installs binaries in /usr/sbin/, but we want them in\n# /sbin/ so that they fall at the same place as Busybox counterparts\nWATCHDOG_CONF_OPTS = --sbindir=/sbin\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/watchdogd/Config.in",
    "content": "config BR2_PACKAGE_WATCHDOGD\n\tbool \"watchdogd\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBCONFUSE\n\tselect BR2_PACKAGE_LIBITE\n\tselect BR2_PACKAGE_LIBUEV\n\thelp\n\t  Extended version of uClinux-dist watchdogd.  Monitors loadavg,\n\t  file descriptors and memory leaks, and capable of supervising\n\t  your processes main loop using an instrumentation API.\n\n\t  A reset reason is saved for power loss, CPU overload, or any\n\t  of the monitored conditions (above).\tThe full capabilities\n\t  are limited by the kernel watchdog driver, but even the basic\n\t  \"softdog\" driver is supported.  See /etc/watchdogd.conf for\n\t  details, and try watchdogctl for system status and available\n\t  commands.\n\n\t  https://github.com/troglobit/watchdogd/\n\nif BR2_PACKAGE_WATCHDOGD\n\nconfig BR2_PACKAGE_WATCHDOGD_TEST_SUITE\n\tbool \"Enable watchdogctl test cases\"\n\thelp\n\t  The watchdogctl program comes with a suite of tests built-in.\n\t  They can be used to verify correct operation of watchdogd and\n\t  the kernel watchdog driver.\n\nconfig BR2_PACKAGE_WATCHDOGD_GENERIC_POLL\n\tint \"Generic script monitor poll interval (sec)\"\n\tdefault \"300\"\n\thelp\n\t  Poll interval for generic script monitor, in seconds.  A value\n\t  of zero (0) disables the monitor.\n\nconfig BR2_PACKAGE_WATCHDOGD_LOADAVG_POLL\n\tint \"CPU load average monitor poll interval (sec)\"\n\tdefault \"300\"\n\thelp\n\t  Poll interval for CPU load average monitor, in seconds.  A\n\t  value of zero (0) disables the monitor.\n\nconfig BR2_PACKAGE_WATCHDOGD_FILENR_POLL\n\tint \"File descriptor leak monitor poll interval (sec)\"\n\tdefault \"300\"\n\thelp\n\t  Poll interval for file descriptor leak monitor, in seconds.  A\n\t  value of zero (0) disables the monitor.\n\nconfig BR2_PACKAGE_WATCHDOGD_MEMINFO_POLL\n\tint \"Memory leak monitor poll interval (sec)\"\n\tdefault \"300\"\n\thelp\n\t  Poll interval for memory leak monitor, in seconds.  A value of\n\t  zero (0) disables the monitor.\n\nendif\n"
  },
  {
    "path": "package/watchdogd/S01watchdogd",
    "content": "#!/bin/sh\n\nDAEMON=\"watchdogd\"\nPIDFILE=\"/var/run/$DAEMON.pid\"\n\n# shellcheck source=/dev/null\n[ -r \"/etc/default/$DAEMON\" ] && . \"/etc/default/$DAEMON\"\n\ncmd()\n{\n    start-stop-daemon -q -p \"$PIDFILE\" -x \"/usr/sbin/$DAEMON\" \"$@\"\n    status=$?\n    if [ $status -eq 0 ]; then\n\techo \"OK\"\n    else\n\techo \"FAIL\"\n    fi\n    return $status\n}\n\ncase \"$1\" in\n    start)\n\tprintf 'Starting %s: ' \"$DAEMON\"\n\t# shellcheck disable=SC2086 # we need the word splitting\n\tcmd -S -- $SMCROUTED_ARGS\n\t;;\n\n    stop)\n\tprintf 'Stopping %s: ' \"$DAEMON\"\n\tcmd -K\n\t;;\n\n    restart)\n\t$0 stop\n\tsleep 1\n\t$0 start\n\t;;\n\n    reload)\n\tprintf 'Reloading %s: ' \"$DAEMON\"\n\tcmd -K -s HUP\n\t;;\n\n    *)\n\techo \"Usage: $0 {start|stop|restart|reload}\"\n\texit 1\nesac\n"
  },
  {
    "path": "package/watchdogd/watchdogd.hash",
    "content": "# Upstream .sha256 from GitHub\nsha256 33ec4edc8cb4ada7a4d8324a27d897d33aae5e83257ed64d3d37508825c11237  watchdogd-3.5.tar.gz\n\n# Locally calculated\nsha256 fd685e20931174308c45a26418a7ce34d66704c4e4b92ab1d8299deb255cd676  LICENSE\n"
  },
  {
    "path": "package/watchdogd/watchdogd.mk",
    "content": "################################################################################\n#\n# watchdogd\n#\n################################################################################\n\nWATCHDOGD_VERSION = 3.5\nWATCHDOGD_SITE = https://github.com/troglobit/watchdogd/releases/download/$(WATCHDOGD_VERSION)\nWATCHDOGD_LICENSE = ISC\nWATCHDOGD_LICENSE_FILES = LICENSE\nWATCHDOGD_CPE_ID_VENDOR = troglobit\nWATCHDOGD_DEPENDENCIES = host-pkgconf libconfuse libite libuev\nWATCHDOGD_CONF_OPTS = --disable-compat --disable-examples --disable-test-mode\n\nifneq ($(BR2_PACKAGE_WATCHDOGD_TEST_SUITE),y)\nWATCHDOGD_CONF_OPTS += --disable-builtin-tests\nelse\nWATCHDOGD_CONF_OPTS += --enable-builtin-tests\nendif\n\nifeq ($(BR2_PACKAGE_WATCHDOGD_GENERIC_POLL),0)\nWATCHDOGD_CONF_OPTS += --without-generic\nelse\nWATCHDOGD_CONF_OPTS += --with-generic=$(BR2_PACKAGE_WATCHDOGD_GENERIC_POLL)\nendif\n\nifeq ($(BR2_PACKAGE_WATCHDOGD_LOADAVG_POLL),0)\nWATCHDOGD_CONF_OPTS += --without-loadavg\nelse\nWATCHDOGD_CONF_OPTS += --with-loadavg=$(BR2_PACKAGE_WATCHDOGD_LOADAVG_POLL)\nendif\n\nifeq ($(BR2_PACKAGE_WATCHDOGD_FILENR_POLL),0)\nWATCHDOGD_CONF_OPTS += --without-filenr\nelse\nWATCHDOGD_CONF_OPTS += --with-filenr=$(BR2_PACKAGE_WATCHDOGD_FILENR_POLL)\nendif\n\nifeq ($(BR2_PACKAGE_WATCHDOGD_MEMINFO_POLL),0)\nWATCHDOGD_CONF_OPTS += --without-meminfo\nelse\nWATCHDOGD_CONF_OPTS += --with-meminfo=$(BR2_PACKAGE_WATCHDOGD_MEMINFO_POLL)\nendif\n\ndefine WATCHDOGD_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 0755 package/watchdogd/S01watchdogd \\\n\t\t$(TARGET_DIR)/etc/init.d/S01watchdogd\nendef\n\ndefine WATCHDOGD_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 644 $(WATCHDOGD_SRCDIR)/watchdogd.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/watchdogd.service\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/wavemon/Config.in",
    "content": "config BR2_PACKAGE_WAVEMON\n\tbool \"wavemon\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS # libnl tools\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_LIBNL\n\tselect BR2_PACKAGE_LIBNL_TOOLS\n\thelp\n\t  wavemon is a wireless device monitoring application that\n\t  allows you to watch signal and noise levels, packet\n\t  statistics, device configuration and network parameters of\n\t  your wireless network hardware.\n\n\t  Note that you need a Linux Kernel configuration with\n\t  wireless extensions or with wireless extensions\n\t  compatibility enabled.\n\n\t  https://github.com/uoaerg/wavemon\n\ncomment \"wavemon needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/wavemon/wavemon.hash",
    "content": "# Locally calculated\nsha256  e7e4167292136ca7ff12ddeb880904c10f33e97620ea6aa5f7838e859fdb40ed  wavemon-0.9.4.tar.gz\nsha256  3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986  LICENSE\n"
  },
  {
    "path": "package/wavemon/wavemon.mk",
    "content": "################################################################################\n#\n# wavemon\n#\n################################################################################\n\nWAVEMON_VERSION = 0.9.4\nWAVEMON_SITE = $(call github,uoaerg,wavemon,v$(WAVEMON_VERSION))\nWAVEMON_LICENSE = GPL-3.0+\nWAVEMON_LICENSE_FILES = LICENSE\nWAVEMON_DEPENDENCIES = host-pkgconf libnl ncurses\n\n# Handwritten Makefile.in, automake isn't used\nWAVEMON_MAKE_OPTS = CC=\"$(TARGET_CC)\"\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nWAVEMON_CONF_OPTS += --with-libcap\nWAVEMON_DEPENDENCIES += libcap\nelse\nWAVEMON_CONF_OPTS += --without-libcap\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/wavpack/Config.in",
    "content": "config BR2_PACKAGE_WAVPACK\n\tbool \"wavpack\"\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  WavPack is a completely open audio compression format\n\t  providing lossless, high-quality lossy, and a unique\n\t  hybrid compression mode.\n\n\t  http://www.wavpack.com/\n"
  },
  {
    "path": "package/wavpack/wavpack.hash",
    "content": "# locally computed hash\nsha256  4bde6a6b2a86614a6bd2579e60dcc974e2c8f93608d2281110a717c1b3c28b79  wavpack-5.4.0.tar.xz\nsha256  f38defde000d62c4ff158f1445cb85a0c2f67cbc1d3cfa34ed882f439f6e3b43  COPYING\n"
  },
  {
    "path": "package/wavpack/wavpack.mk",
    "content": "################################################################################\n#\n# wavpack\n#\n################################################################################\n\nWAVPACK_VERSION = 5.4.0\nWAVPACK_SITE = \\\n\thttps://github.com/dbry/WavPack/releases/download/$(WAVPACK_VERSION)\nWAVPACK_SOURCE = wavpack-$(WAVPACK_VERSION).tar.xz\nWAVPACK_INSTALL_STAGING = YES\nWAVPACK_DEPENDENCIES = $(if $(BR2_ENABLE_LOCALE),,libiconv)\nWAVPACK_LICENSE = BSD-3-Clause\nWAVPACK_LICENSE_FILES = COPYING\nWAVPACK_CPE_ID_VENDOR = wavpack\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nWAVPACK_CONF_OPTS += LIBS=-liconv\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nWAVPACK_DEPENDENCIES += openssl\nWAVPACK_CONF_OPTS += --enable-libcrypto\nelse\nWAVPACK_CONF_OPTS += --disable-libcrypto\nendif\n\n# WavPack \"autodetects\" CPU type to enable ASM code. However, the assembly code\n# for ARM is written for ARMv7 only and building WavPack for an ARM-non-v7\n# architecture will fail. We explicitly enable ASM for the supported\n# architectures x86, x64 and ARMv7 and disable it for all others.\nifeq ($(BR2_i386)$(BR2_x86_64)$(BR2_ARM_CPU_ARMV7A),y)\nWAVPACK_CONF_OPTS += --enable-asm\nelse\nWAVPACK_CONF_OPTS += --disable-asm\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/wayland/0001-build-add-option-to-disable-tests.patch",
    "content": "From 88f1605a826ca0c2ff02be6f4cf9ecabf68e8341 Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Tue, 3 Mar 2020 15:27:51 -0700\nSubject: [PATCH] build: add option to disable tests\n\nWhen building for a product, tests are not needed.\n\nBesides, one test requires a C++ compiler, which is not always\navailable.\n\nSo, add an option to configure to disable building tests altogether.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nSigned-off-by: Alexey Brodkin <abrodkin@synopsys.com>\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[Upstream status:\nhttps://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/66]\nSigned-off-by: Adrian Perez de Castro <aperez@igalia.com>\n[yann.morin.1998@free.fr: backport from upstream]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n meson.build       | 4 +++-\n meson_options.txt | 4 ++++\n 2 files changed, 7 insertions(+), 1 deletion(-)\n\ndiff --git a/meson.build b/meson.build\nindex cdb66bc..714a86d 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -84,7 +84,9 @@ subdir('src')\n if get_option('libraries')\n \tsubdir('cursor')\n \tsubdir('egl')\n-\tsubdir('tests')\n+\tif get_option('tests')\n+\t\tsubdir('tests')\n+\tendif\n \tif get_option('documentation')\n \t\tsubdir('doc')\n \tendif\ndiff --git a/meson_options.txt b/meson_options.txt\nindex de588d1..4433fa0 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -6,6 +6,10 @@ option('scanner',\n   description: 'Compile wayland-scanner binary',\n   type: 'boolean',\n   value: 'true')\n+option('tests',\n+  description: 'Compile Wayland tests',\n+  type: 'boolean',\n+  value: 'true')\n option('documentation',\n   description: 'Build the documentation (requires Doxygen, dot, xmlto, xsltproc)',\n   type: 'boolean',\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/wayland/0002-meson-only-require-cpp-for-tests.patch",
    "content": "From 4c2105312379b62dc84f6eaaf26e2ab293d51b92 Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Fri, 16 Apr 2021 02:32:38 -0600\nSubject: [PATCH] meson: only require cpp for tests\n\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[Upstream status:\nhttps://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/130]\nSigned-off-by: Adrian Perez de Castro <aperez@igalia.com>\n[yann.morin.1998@free.fr: backport from upstream]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n meson.build       |  2 +-\n tests/meson.build | 16 +++++++++-------\n 2 files changed, 10 insertions(+), 8 deletions(-)\n\ndiff --git a/meson.build b/meson.build\nindex 12b4641..cdb66bc 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1,5 +1,5 @@\n project(\n-\t'wayland', 'c', 'cpp',\n+\t'wayland', 'c',\n \tversion: '1.19.0',\n \tlicense: 'MIT',\n \tmeson_version: '>= 0.52.1',\ndiff --git a/tests/meson.build b/tests/meson.build\nindex a32ac50..2e11af4 100644\n--- a/tests/meson.build\n+++ b/tests/meson.build\n@@ -64,15 +64,17 @@ executable(\n \tdependencies: test_runner_dep\n )\n \n-test(\n-\t'cpp-compile-test',\n-\texecutable(\n+if add_languages('cpp')\n+\ttest(\n \t\t'cpp-compile-test',\n-\t\t'cpp-compile-test.cpp',\n-\t\twayland_server_protocol_h,\n-\t\tinclude_directories: src_inc\n+\t\texecutable(\n+\t\t\t'cpp-compile-test',\n+\t\t\t'cpp-compile-test.cpp',\n+\t\t\twayland_server_protocol_h,\n+\t\t\tinclude_directories: src_inc\n+\t\t)\n \t)\n-)\n+endif\n \n sed_path = find_program('sed').path()\n \n-- \n2.31.1\n\n"
  },
  {
    "path": "package/wayland/Config.in",
    "content": "config BR2_PACKAGE_WAYLAND\n\tbool \"wayland\"\n\tdepends on !BR2_STATIC_LIBS # dlfcn.h\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_EXPAT\n\tselect BR2_PACKAGE_LIBFFI\n\tselect BR2_PACKAGE_LIBXML2\n\thelp\n\t  Wayland is a project to define a protocol for a compositor\n\t  to talk to its clients as well as a library implementation\n\t  of the protocol.\n\n\t  https://wayland.freedesktop.org/\n\ncomment \"wayland needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/wayland/wayland.hash",
    "content": "# From https://lists.freedesktop.org/archives/wayland-devel/2021-January/041692.html\nsha256  baccd902300d354581cd5ad3cc49daa4921d55fb416a5883e218750fef166d15  wayland-1.19.0.tar.xz\nsha512  d8a86f5e23e4a88e7c84b82fdb51eb350419086afe462ecb2f4d5c3ba9290ede310cbbcffd60215219ddccf5bad4adec21a5ebfbef6577200f66ac7a1b64a5ef  wayland-1.19.0.tar.xz\n\n# Locally calculated\nsha256  6eefcb023622a463168a5c20add95fd24a38c7482622a9254a23b99b7c153061  COPYING\n"
  },
  {
    "path": "package/wayland/wayland.mk",
    "content": "################################################################################\n#\n# wayland\n#\n################################################################################\n\nWAYLAND_VERSION = 1.19.0\nWAYLAND_SITE = https://wayland.freedesktop.org/releases\nWAYLAND_SOURCE = wayland-$(WAYLAND_VERSION).tar.xz\nWAYLAND_LICENSE = MIT\nWAYLAND_LICENSE_FILES = COPYING\nWAYLAND_CPE_ID_VENDOR = wayland\nWAYLAND_INSTALL_STAGING = YES\nWAYLAND_DEPENDENCIES = host-pkgconf host-wayland expat libffi libxml2\nHOST_WAYLAND_DEPENDENCIES = host-pkgconf host-expat host-libffi host-libxml2\n\nWAYLAND_CONF_OPTS = -Dtests=false -Ddocumentation=false\nHOST_WAYLAND_CONF_OPTS = -Dtests=false -Ddocumentation=false\n\n# Remove the DTD from the target, it's not needed at runtime\ndefine WAYLAND_TARGET_CLEANUP\n\trm -rf $(TARGET_DIR)/usr/share/wayland\nendef\nWAYLAND_POST_INSTALL_TARGET_HOOKS += WAYLAND_TARGET_CLEANUP\n\n$(eval $(meson-package))\n$(eval $(host-meson-package))\n"
  },
  {
    "path": "package/wayland-protocols/0001-meson.build-wayland-scanner-is-only-needed-for-tests.patch",
    "content": "From 80e97bd00bf6263845aa98b411507baba28be67e Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sun, 19 Sep 2021 11:01:00 +0200\nSubject: [PATCH] meson.build: wayland-scanner is only needed for tests\n\nwayland-scanner is only needed for tests so don't require it if tests\nare disabled\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://gitlab.freedesktop.org/wayland/wayland-protocols/-/commit/80e97bd00bf6263845aa98b411507baba28be67e]\n---\n meson.build       | 2 --\n tests/meson.build | 1 +\n 2 files changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/meson.build b/meson.build\nindex 94b49e7..15dbc37 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -8,8 +8,6 @@ wayland_protocols_version = meson.project_version()\n \n fs = import('fs')\n \n-dep_scanner = dependency('wayland-scanner', native: true)\n-\n stable_protocols = [\n \t'presentation-time',\n \t'viewporter',\ndiff --git a/tests/meson.build b/tests/meson.build\nindex 66337e7..74824ae 100644\n--- a/tests/meson.build\n+++ b/tests/meson.build\n@@ -1,4 +1,5 @@\n prog_scan_sh = find_program('scan.sh')\n+dep_scanner = dependency('wayland-scanner', native: true)\n prog_scanner = find_program(dep_scanner.get_pkgconfig_variable('wayland_scanner'))\n \n libwayland = [\n-- \nGitLab\n\n"
  },
  {
    "path": "package/wayland-protocols/Config.in",
    "content": "config BR2_PACKAGE_WAYLAND_PROTOCOLS\n\tbool \"wayland-protocols\"\n\t# Not really... but useless otherwise\n\tdepends on BR2_PACKAGE_WAYLAND\n\thelp\n\t  Wayland protocols that adds functionality not available in\n\t  the Wayland core protocol.\n\n\t  http://wayland.freedesktop.org/\n"
  },
  {
    "path": "package/wayland-protocols/wayland-protocols.hash",
    "content": "# From https://lists.freedesktop.org/archives/wayland-devel/2021-September/041979.html\nmd5  31a6c469718db37d2688109e548506e4  wayland-protocols-1.23.tar.xz\nsha1  8c4ebdce35953b1e2af458c139a432a308af6f50  wayland-protocols-1.23.tar.xz\nsha256  6c0af1915f96f615927a6270d025bd973ff1c58e521e4ca1fc9abfc914633f76  wayland-protocols-1.23.tar.xz\nsha256  f1a2b233e8a9a71c40f4aa885be08a0842ac85bb8588703c1dd7e6e6502e3124  COPYING\n"
  },
  {
    "path": "package/wayland-protocols/wayland-protocols.mk",
    "content": "################################################################################\n#\n# wayland-protocols\n#\n################################################################################\n\nWAYLAND_PROTOCOLS_VERSION = 1.23\nWAYLAND_PROTOCOLS_SITE = https://wayland.freedesktop.org/releases\nWAYLAND_PROTOCOLS_SOURCE = wayland-protocols-$(WAYLAND_PROTOCOLS_VERSION).tar.xz\nWAYLAND_PROTOCOLS_LICENSE = MIT\nWAYLAND_PROTOCOLS_LICENSE_FILES = COPYING\nWAYLAND_PROTOCOLS_INSTALL_STAGING = YES\nWAYLAND_PROTOCOLS_INSTALL_TARGET = NO\n\nWAYLAND_PROTOCOLS_CONF_OPTS = -Dtests=false\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/wayland-utils/Config.in",
    "content": "config BR2_PACKAGE_WAYLAND_UTILS\n\tbool \"wayland-utils\"\n\tdepends on BR2_PACKAGE_WAYLAND # wayland-client, wayland-server\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS\n\thelp\n\t  Wayland utils (wayland-info).\n\n\t  https://gitlab.freedesktop.org/ofourdan/wayland-utils\n"
  },
  {
    "path": "package/wayland-utils/wayland-utils.hash",
    "content": "# From https://lists.freedesktop.org/archives/wayland-devel/2020-July/041565.html\nmd5  714875aefb10e7f683cde24e58d033ad  wayland-utils-1.0.0.tar.xz\nsha1  b5b8d498a892866d56ffbe862039d7c97acbe7bc  wayland-utils-1.0.0.tar.xz\nsha256  64fecc4c58e87ae9b302901abe10c2e8af69c7503c221a96ecd0700e0aa268c0  wayland-utils-1.0.0.tar.xz\nsha512  4c6f1822435b36b3acd361c0c54e56150e8a2697a9c4b2c20a149fcfaafe237e45807df3471884ddf594d89558001099e2d938e3f48988ba6950a0f1e3538db2  wayland-utils-1.0.0.tar.xz\nsha256  1eba39c11640014a5841dd3017e5245fc31f47e1cf43a3287a286dd6a8de8a1a  COPYING\n"
  },
  {
    "path": "package/wayland-utils/wayland-utils.mk",
    "content": "################################################################################\n#\n# wayland-utils\n#\n################################################################################\n\nWAYLAND_UTILS_VERSION = 1.0.0\nWAYLAND_UTILS_SITE = https://wayland.freedesktop.org/releases\nWAYLAND_UTILS_SOURCE = wayland-utils-$(WAYLAND_UTILS_VERSION).tar.xz\nWAYLAND_UTILS_LICENSE = MIT\nWAYLAND_UTILS_LICENSE_FILES = COPYING\nWAYLAND_UTILS_DEPENDENCIES = host-pkgconf wayland wayland-protocols\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/waylandpp/Config.in",
    "content": "config BR2_PACKAGE_WAYLANDPP\n\tbool \"waylandpp\"\n\tdepends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_PACKAGE_WAYLAND\n\thelp\n\t  Wayland C++ bindings\n\n\t  https://github.com/NilsBrause/waylandpp\n\ncomment \"waylandpp needs an OpenGL-EGL/wayland backend, a toolchain w/ gcc >= 4.9, host gcc >= 4.9, C++ support\"\n\tdepends on BR2_PACKAGE_WAYLAND\n\tdepends on !BR2_PACKAGE_HAS_LIBEGL_WAYLAND || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \\\n\t\t!BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/waylandpp/waylandpp.hash",
    "content": "# Locally computed\nsha256  e7f486165d3568c3558b5c7099133aea4a285b82820eeafad329fc10271c654d  waylandpp-0.2.8.tar.gz\nsha256  8ff91f682a38f8a603b173222a60e8dc71754a79a522a316fb6b76ce138c542c  LICENSE\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  scanner/gpl-3.0.txt\n"
  },
  {
    "path": "package/waylandpp/waylandpp.mk",
    "content": "################################################################################\n#\n# waylandpp\n#\n################################################################################\n\nWAYLANDPP_VERSION = 0.2.8\nWAYLANDPP_SITE = $(call github,NilsBrause,waylandpp,$(WAYLANDPP_VERSION))\nWAYLANDPP_LICENSE = MIT, GPL-3.0+ (wayland_scanner)\nWAYLANDPP_LICENSE_FILES = LICENSE scanner/gpl-3.0.txt\nWAYLANDPP_INSTALL_STAGING = YES\n# pugixml is needed only to build the host version of wayland-scanner++\nHOST_WAYLANDPP_DEPENDENCIES = host-pugixml host-pkgconf host-wayland\nWAYLANDPP_DEPENDENCIES = libegl host-pkgconf wayland host-waylandpp\n\n# host variant of wayland-scanner++ is needed for building the target\n# package\nHOST_WAYLANDPP_CONF_OPTS = \\\n\t-DBUILD_LIBRARIES=OFF \\\n\t-DBUILD_SCANNER=ON\n\nWAYLANDPP_CONF_OPTS = \\\n\t-DBUILD_LIBRARIES=ON \\\n\t-DBUILD_SCANNER=OFF \\\n\t-DWAYLAND_SCANNERPP=$(HOST_DIR)/bin/wayland-scanner++\n\n$(eval $(cmake-package))\n$(eval $(host-cmake-package))\n"
  },
  {
    "path": "package/webkitgtk/Config.in",
    "content": "config BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS\n\tbool\n\t# ARM needs BLX, so v5t+, BE completely untested so disabled\n\tdefault y if BR2_arm && !BR2_ARM_CPU_ARMV4\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\tdefault y if BR2_i386 || BR2_x86_64\n\t# Disabled on MIPS big endian due to sigbus\n\tdefault y if BR2_mipsel || BR2_mips64el\n\t# Disabled on PowerPC pending runtime testing\n\t# Disabled on SuperH because of segfault\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt\n\ncomment \"webkitgtk needs libgtk3 and a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 7, host gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_PACKAGE_LIBGTK3 || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_4_9\n\tdepends on BR2_USE_MMU\n\nconfig BR2_PACKAGE_WEBKITGTK\n\tbool \"webkitgtk\"\n\tdepends on !BR2_STATIC_LIBS # wayland\n\tdepends on !BR2_BINFMT_FLAT # icu\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # icu, host-ruby\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # wayland, icu, libsoup\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tdepends on BR2_USE_WCHAR # icu, libsoup\n\tdepends on BR2_PACKAGE_LIBGTK3\n\tdepends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_CAIRO_PNG\n\tselect BR2_PACKAGE_ENCHANT\n\tselect BR2_PACKAGE_HARFBUZZ\n\tselect BR2_PACKAGE_ICU\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_LIBSECRET\n\tselect BR2_PACKAGE_LIBSOUP\n\tselect BR2_PACKAGE_LIBTASN1\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_LIBXSLT\n\tselect BR2_PACKAGE_OPENJPEG\n\tselect BR2_PACKAGE_SQLITE\n\tselect BR2_PACKAGE_WEBP\n\tselect BR2_PACKAGE_WEBP_DEMUX\n\tselect BR2_PACKAGE_WOFF2\n\tselect BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_LIBGTK3_X11\n\tselect BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_LIBGTK3_X11\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_LIBGTK3_X11\n\tselect BR2_PACKAGE_XLIB_LIBXT if BR2_PACKAGE_LIBGTK3_X11\n\thelp\n\t  WebKit is an open source, standards compliant web browser\n\t  engine.\n\n\t  http://www.webkitgtk.org/\n\nif BR2_PACKAGE_WEBKITGTK\n\nconfig BR2_PACKAGE_WEBKITGTK_SANDBOX\n\tbool \"sandboxing support\"\n\tdepends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # libseccomp\n\tselect BR2_PACKAGE_BUBBLEWRAP # runtime\n\tselect BR2_PACKAGE_XDG_DBUS_PROXY # runtime\n\tselect BR2_PACKAGE_LIBSECCOMP\n\thelp\n\t  Enable sandboxing of the processes used for network operation,\n\t  disk access, and Web content rendering.\n\ncomment \"sandboxing support needs a toolchain w/ headers >= 3.12\"\n\tdepends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\nconfig BR2_PACKAGE_WEBKITGTK_HTTPS\n\tbool \"HTTPS support\"\n\tdepends on !BR2_STATIC_LIBS # libsoup -> glib-networking, gnutls\n\tselect BR2_PACKAGE_CA_CERTIFICATES # runtime\n\tselect BR2_PACKAGE_LIBSOUP_SSL\n\thelp\n\t  Enable HTTPS protocol support.\n\ncomment \"webkitgtk https support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_WEBKITGTK_MULTIMEDIA\n\tbool \"multimedia support\"\n\tselect BR2_PACKAGE_GSTREAMER1\n\tselect BR2_PACKAGE_GST1_PLUGINS_BAD\n\tselect BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PLAYBACK\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX\n\tselect BR2_PACKAGE_GST1_LIBAV\n\thelp\n\t  This option pulls in all of the required dependencies\n\t  to enable multimedia (video/audio) support.\n\nif BR2_PACKAGE_WEBKITGTK_MULTIMEDIA\n\nconfig BR2_PACKAGE_WEBKITGTK_USE_GSTREAMER_GL\n\tbool \"use gstreamer-gl\"\n\tdefault y\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM\n\thelp\n\t  Use the GStreamer GL elements for handling video content.\n\t  This is recommended as it improves performance of video\n\t  playback. In some target configurations incorrect rendering\n\t  might be produced, and disabling this option may help.\n\nendif\n\nconfig BR2_PACKAGE_WEBKITGTK_WEBDRIVER\n\tbool \"WebDriver support\"\n\thelp\n\t  Enable support for WebDriver. This will build and install the\n\t  WebKitWebDriver program in the target.\n\nendif\n"
  },
  {
    "path": "package/webkitgtk/webkitgtk.hash",
    "content": "# From https://webkitgtk.org/releases/webkitgtk-2.32.4.tar.xz.sums\nmd5  51a167e5d03bacf30c5c588e6aa23143  webkitgtk-2.32.4.tar.xz\nsha1  f7255ffb488e727e9e250e0dae9f192266f50f01  webkitgtk-2.32.4.tar.xz\nsha256  00ce2d3f798d7bc5e9039d9059f0c3c974d51de38c8b716f00e94452a177d3fd  webkitgtk-2.32.4.tar.xz\n\n# Hashes for license files:\nsha256  0b5d3a7cc325942567373b0ecd757d07c132e0ebd7c97bfc63f7e1a76094edb4  Source/WebCore/LICENSE-APPLE\nsha256  f2b3bd09663381deb99721109d22b47af1213bb43007a8b56a06c6375c8050ce  Source/WebCore/LICENSE-LGPL-2.1\n"
  },
  {
    "path": "package/webkitgtk/webkitgtk.mk",
    "content": "################################################################################\n#\n# webkitgtk\n#\n################################################################################\n\nWEBKITGTK_VERSION = 2.32.4\nWEBKITGTK_SITE = https://www.webkitgtk.org/releases\nWEBKITGTK_SOURCE = webkitgtk-$(WEBKITGTK_VERSION).tar.xz\nWEBKITGTK_INSTALL_STAGING = YES\nWEBKITGTK_LICENSE = LGPL-2.1+, BSD-2-Clause\nWEBKITGTK_LICENSE_FILES = \\\n\tSource/WebCore/LICENSE-APPLE \\\n\tSource/WebCore/LICENSE-LGPL-2.1\nWEBKITGTK_CPE_ID_VENDOR = webkitgtk\nWEBKITGTK_DEPENDENCIES = host-ruby host-python3 host-gperf \\\n\tenchant harfbuzz icu jpeg libgcrypt libgtk3 libsecret libsoup \\\n\tlibtasn1 libxml2 libxslt openjpeg sqlite webp woff2\nWEBKITGTK_CONF_OPTS = \\\n\t-DENABLE_API_TESTS=OFF \\\n\t-DENABLE_GAMEPAD=OFF \\\n\t-DENABLE_GEOLOCATION=OFF \\\n\t-DENABLE_GTKDOC=OFF \\\n\t-DENABLE_INTROSPECTION=OFF \\\n\t-DENABLE_MINIBROWSER=ON \\\n\t-DENABLE_SPELLCHECK=ON \\\n\t-DPORT=GTK \\\n\t-DSILENCE_CROSS_COMPILATION_NOTICES=ON \\\n\t-DUSE_LIBNOTIFY=OFF \\\n\t-DUSE_LIBHYPHEN=OFF \\\n\t-DUSE_OPENJPEG=ON \\\n\t-DUSE_WOFF2=ON \\\n\t-DUSE_WPE_RENDERER=OFF\n\nifeq ($(BR2_PACKAGE_WEBKITGTK_SANDBOX),y)\nWEBKITGTK_CONF_OPTS += \\\n\t-DENABLE_BUBBLEWRAP_SANDBOX=ON \\\n\t-DBWRAP_EXECUTABLE=/usr/bin/bwrap \\\n\t-DDBUS_PROXY_EXECUTABLE=/usr/bin/xdg-dbus-proxy\nWEBKITGTK_DEPENDENCIES += libseccomp\nelse\nWEBKITGTK_CONF_OPTS += -DENABLE_BUBBLEWRAP_SANDBOX=OFF\nendif\n\nifeq ($(BR2_PACKAGE_WEBKITGTK_MULTIMEDIA),y)\nWEBKITGTK_CONF_OPTS += \\\n\t-DENABLE_VIDEO=ON \\\n\t-DENABLE_WEB_AUDIO=ON\nWEBKITGTK_DEPENDENCIES += gstreamer1 gst1-libav gst1-plugins-base\nelse\nWEBKITGTK_CONF_OPTS += \\\n\t-DENABLE_VIDEO=OFF \\\n\t-DENABLE_WEB_AUDIO=OFF\nendif\n\nifeq ($(BR2_PACKAGE_WEBKITGTK_WEBDRIVER),y)\nWEBKITGTK_CONF_OPTS += -DENABLE_WEBDRIVER=ON\nelse\nWEBKITGTK_CONF_OPTS += -DENABLE_WEBDRIVER=OFF\nendif\n\n# Only one target platform can be built, assume X11 > Wayland\n\n# GTK3-X11 target gives OpenGL from newer libgtk3 versions\n# Consider this better than EGL + maybe GLESv2 since both can't be built\n# 2D CANVAS acceleration requires OpenGL proper with cairo-gl\nifeq ($(BR2_PACKAGE_LIBGTK3_X11),y)\nWEBKITGTK_CONF_OPTS += \\\n\t-DENABLE_ACCELERATED_2D_CANVAS=ON \\\n\t-DENABLE_GLES2=OFF \\\n\t-DENABLE_GRAPHICS_CONTEXT_GL=ON \\\n\t-DENABLE_X11_TARGET=ON\nWEBKITGTK_DEPENDENCIES += libgl \\\n\txlib_libXcomposite xlib_libXdamage xlib_libXrender xlib_libXt\n# It can use libgtk2 for npapi plugins\nifeq ($(BR2_PACKAGE_LIBGTK2),y)\nWEBKITGTK_CONF_OPTS += -DENABLE_PLUGIN_PROCESS_GTK2=ON\nWEBKITGTK_DEPENDENCIES += libgtk2\nelse\nWEBKITGTK_CONF_OPTS += -DENABLE_PLUGIN_PROCESS_GTK2=OFF\nendif\nelse # !X11\n# GTK3-BROADWAY/WAYLAND needs at least EGL\nWEBKITGTK_DEPENDENCIES += libegl\n# GLESv2 support is optional though\nifeq ($(BR2_PACKAGE_HAS_LIBGLES),y)\nWEBKITGTK_CONF_OPTS += \\\n\t-DENABLE_GLES2=ON \\\n\t-DENABLE_GRAPHICS_CONTEXT_GL=ON\nWEBKITGTK_DEPENDENCIES += libgles\nelse\n# Disable general OpenGL (shading) if there's no GLESv2\nWEBKITGTK_CONF_OPTS += \\\n\t-DENABLE_GLES2=OFF \\\n\t-DENABLE_GRAPHICS_CONTEXT_GL=OFF\nendif\n# We must explicitly state the wayland target\nifeq ($(BR2_PACKAGE_LIBGTK3_WAYLAND),y)\nWEBKITGTK_CONF_OPTS += -DENABLE_WAYLAND_TARGET=ON\nendif\nendif\n\nifeq ($(BR2_PACKAGE_WEBKITGTK_USE_GSTREAMER_GL),y)\nWEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=ON\nelse\nWEBKITGTK_CONF_OPTS += -DUSE_GSTREAMER_GL=OFF\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nWEBKITGTK_CONF_OPTS += -DUSE_SYSTEMD=ON\nWEBKITGTK_DEPENDENCIES += systemd\nelse\nWEBKITGTK_CONF_OPTS += -DUSE_SYSTEMD=OFF\nendif\n\n# JIT is not supported for MIPS r6, but the WebKit build system does not\n# have a check for these processors. The same goes for ARMv5 and ARMv6.\n# Disable JIT forcibly here and use the CLoop interpreter instead.\n#\n# Also, we have to disable the sampling profiler, which does NOT work\n# with ENABLE_C_LOOP.\n#\n# Upstream bugs: https://bugs.webkit.org/show_bug.cgi?id=191258\n#                https://bugs.webkit.org/show_bug.cgi?id=172765\n#\nifeq ($(BR2_ARM_CPU_ARMV5)$(BR2_ARM_CPU_ARMV6)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y)\nWEBKITGTK_CONF_OPTS += -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON -DENABLE_SAMPLING_PROFILER=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/webp/Config.in",
    "content": "config BR2_PACKAGE_WEBP\n\tbool \"webp\"\n\thelp\n\t  WebP is a new image format that provides lossless and lossy\n\t  compression for images on the web\n\n\t  https://developers.google.com/speed/webp/\n\nif BR2_PACKAGE_WEBP\n\nconfig BR2_PACKAGE_WEBP_DEMUX\n\tbool \"webpdemux\"\n\thelp\n\t  Demux is a part of WebPMux for extraction and manipulation\n\t  of an extended format WebP file, which can have features\n\t  like color profile, metadata and animation.\n\nconfig BR2_PACKAGE_WEBP_MUX\n\tbool \"webpmux\"\n\thelp\n\t  Mux is a part of WebPMux for creation and manipulation\n\t  of an extended format WebP file, which can have features\n\t  like color profile, metadata and animation.\n\nendif\n"
  },
  {
    "path": "package/webp/webp.hash",
    "content": "# Locally calculated\nsha256  808b98d2f5b84e9b27fdef6c5372dac769c3bda4502febbfa5031bd3c4d7d018  libwebp-1.2.1.tar.gz\nsha256  5aec868f669e384a22372a4e8a1a6cd7d44c64cd451f960ca69cc170d1e13acf  COPYING\n"
  },
  {
    "path": "package/webp/webp.mk",
    "content": "################################################################################\n#\n# webp\n#\n################################################################################\n\nWEBP_VERSION = 1.2.1\nWEBP_SOURCE = libwebp-$(WEBP_VERSION).tar.gz\nWEBP_SITE = http://downloads.webmproject.org/releases/webp\nWEBP_LICENSE = BSD-3-Clause\nWEBP_LICENSE_FILES = COPYING\nWEBP_CPE_ID_VENDOR = webmproject\nWEBP_CPE_ID_PRODUCT = libwebp\nWEBP_INSTALL_STAGING = YES\n\nWEBP_CONF_OPTS += \\\n\t--with-jpegincludedir=$(STAGING_DIR)/usr/include \\\n\t--with-jpeglibdir=$(STAGING_DIR)/usr/lib \\\n\t--with-tiffincludedir=$(STAGING_DIR)/usr/include \\\n\t--with-tifflibdir=$(STAGING_DIR)/usr/lib\n\nifeq ($(BR2_PACKAGE_WEBP_DEMUX),y)\nWEBP_CONF_OPTS += --enable-libwebpdemux\nelse\nWEBP_CONF_OPTS += --disable-libwebpdemux\nendif\n\nifeq ($(BR2_PACKAGE_WEBP_MUX),y)\nWEBP_CONF_OPTS += --enable-libwebpmux\nelse\nWEBP_CONF_OPTS += --disable-libwebpmux\nendif\n\nifeq ($(BR2_PACKAGE_GIFLIB),y)\nWEBP_DEPENDENCIES += giflib\nWEBP_CONF_OPTS += --enable-gif\nelse\nWEBP_CONF_OPTS += --disable-gif\nendif\n\nifeq ($(BR2_PACKAGE_LIBFREEGLUT),y)\nWEBP_DEPENDENCIES += libfreeglut\nWEBP_CONF_OPTS += --enable-gl\nelse\nWEBP_CONF_OPTS += --disable-gl\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nWEBP_DEPENDENCIES += libpng\nWEBP_CONF_ENV += ac_cv_path_LIBPNG_CONFIG=$(STAGING_DIR)/usr/bin/libpng-config\nelse\nWEBP_CONF_ENV += ac_cv_path_LIBPNG_CONFIG=/bin/false\nendif\n\nWEBP_DEPENDENCIES += $(if $(BR2_PACKAGE_JPEG),jpeg)\nWEBP_DEPENDENCIES += $(if $(BR2_PACKAGE_TIFF),tiff)\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/webrtc-audio-processing/0001-Proper-detection-of-cxxabi.h-and-execinfo.h.patch",
    "content": "From b7a166acaddc4c78afa2b653e25114d9114699f3 Mon Sep 17 00:00:00 2001\nFrom: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\nDate: Sat, 6 Aug 2016 11:24:50 +0200\nSubject: [PATCH] Proper detection of cxxabi.h and execinfo.h\n\nThe current code in webrtc/base/checks.cc assumes that if __GLIBCXX__ is\ndefined and __UCLIBC__ is not defined, then both cxxabi.h and execinfo.h\nwill be available.\n\nUnfortunately, this is not correct with the musl C library:\n\n - It defines __GLIBCXX__\n - It does not define __UCLIBC__ (it's not uClibc after all!)\n - But it also doesn't provide execinfo.h\n\nTherefore, in order to make things work properly, we switch to proper\nautoconf checks for cxxabi.h and execinfo.h, and only use the backtrace\nfunctionality if both are provided.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n---\n configure.ac          | 2 ++\n webrtc/base/checks.cc | 4 ++--\n 2 files changed, 4 insertions(+), 2 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex acbb3e2..ff4c752 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -45,6 +45,8 @@ AC_SUBST(GNUSTL_CFLAGS)\n # Borrowed from gst-plugins-bad\n AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS=\"yes\", HAVE_IOS=\"no\", [-])\n \n+AC_CHECK_HEADERS([cxxabi.h execinfo.h])\n+\n # Based on gst-plugins-bad configure.ac and defines in\n # <chromium source>/build/config/BUILDCONFIG.gn and\n # webrtc/BUILD.gn\ndiff --git a/webrtc/base/checks.cc b/webrtc/base/checks.cc\nindex 49a31f2..05d23a6 100644\n--- a/webrtc/base/checks.cc\n+++ b/webrtc/base/checks.cc\n@@ -16,7 +16,7 @@\n #include <cstdio>\n #include <cstdlib>\n \n-#if defined(__GLIBCXX__) && !defined(__UCLIBC__)\n+#if defined(HAVE_CXX_ABI_H) && defined(HAVE_EXECINFO_H)\n #include <cxxabi.h>\n #include <execinfo.h>\n #endif\n@@ -55,7 +55,7 @@ void PrintError(const char* format, ...) {\n // to get usable symbols on Linux. This is copied from V8. Chromium has a more\n // advanced stace trace system; also more difficult to copy.\n void DumpBacktrace() {\n-#if defined(__GLIBCXX__) && !defined(__UCLIBC__)\n+#if defined(HAVE_CXX_ABI_H) && defined(HAVE_EXECINFO_H)\n   void* trace[100];\n   int size = backtrace(trace, sizeof(trace) / sizeof(*trace));\n   char** symbols = backtrace_symbols(trace, size);\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/webrtc-audio-processing/Config.in",
    "content": "config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64 || BR2_arm || BR2_i386 || BR2_x86_64\n\nconfig BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING\n\tbool \"webrtc-audio-processing\"\n\tdepends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\t# pthread_condattr_setclock\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\thelp\n\t  AudioProcessing library based on Google's implementation of\n\t  WebRTC.\n\n\t  http://freedesktop.org/software/pulseaudio/webrtc-audio-processing/\n\ncomment \"webrtc-audio-processing needs a toolchain w/ C++, NPTL, gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/webrtc-audio-processing/webrtc-audio-processing.hash",
    "content": "# Locally calculated\nsha256\ta0fdd938fd85272d67e81572c5a4d9e200a0c104753cb3c209ded175ce3c5dbf  webrtc-audio-processing-0.3.1.tar.xz\nsha256\t9b79539028e216e813e152d45f5c1ed5fdd0554426ad50270fb03134e7082dac  COPYING\n"
  },
  {
    "path": "package/webrtc-audio-processing/webrtc-audio-processing.mk",
    "content": "################################################################################\n#\n# webrtc-audio-processing\n#\n################################################################################\n\nWEBRTC_AUDIO_PROCESSING_VERSION = 0.3.1\nWEBRTC_AUDIO_PROCESSING_SOURCE = webrtc-audio-processing-$(WEBRTC_AUDIO_PROCESSING_VERSION).tar.xz\nWEBRTC_AUDIO_PROCESSING_SITE = http://freedesktop.org/software/pulseaudio/webrtc-audio-processing\nWEBRTC_AUDIO_PROCESSING_INSTALL_STAGING = YES\nWEBRTC_AUDIO_PROCESSING_LICENSE = BSD-3-Clause\nWEBRTC_AUDIO_PROCESSING_LICENSE_FILES = COPYING\nWEBRTC_AUDIO_PROCESSING_DEPENDENCIES = host-pkgconf\n# 0001-Proper-detection-of-cxxabi.h-and-execinfo.h.patch\nWEBRTC_AUDIO_PROCESSING_AUTORECONF = YES\n\nifeq ($(BR2_SOFT_FLOAT),y)\nWEBRTC_AUDIO_PROCESSING_CONF_OPTS += --with-ns-mode=fixed\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/websocketpp/Config.in",
    "content": "config BR2_PACKAGE_WEBSOCKETPP\n\tbool \"websocketpp\"\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  WebSocket++ is a header only C++ library that implements\n\t  RFC6455 The WebSocket Protocol. It allows integrating\n\t  WebSocket client and server functionality into C++ programs.\n\t  It uses interchangeable network transport modules including\n\t  one based on C++ iostreams and one based on Boost Asio.\n\n\t  http://www.zaphoyd.com/websocketpp\n\ncomment \"websocketpp needs a toolchain w/ C++ and gcc >= 4.8\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n"
  },
  {
    "path": "package/websocketpp/websocketpp.hash",
    "content": "# Locally Computed:\nsha256  6ce889d85ecdc2d8fa07408d6787e7352510750daa66b5ad44aacb47bea76755  websocketpp-0.8.2.tar.gz\nsha256  b31e597bc777d884a39663c11d0557a0af40780e1f451de11ea5103924a69667  COPYING\n"
  },
  {
    "path": "package/websocketpp/websocketpp.mk",
    "content": "################################################################################\n#\n# websocketpp\n#\n################################################################################\n\nWEBSOCKETPP_VERSION = 0.8.2\nWEBSOCKETPP_SITE = $(call github,zaphoyd,websocketpp,$(WEBSOCKETPP_VERSION))\nWEBSOCKETPP_LICENSE = BSD-3-Clause, MIT, Zlib\nWEBSOCKETPP_LICENSE_FILES = COPYING\nWEBSOCKETPP_CPE_ID_VENDOR = zaphoyd\nWEBSOCKETPP_INSTALL_STAGING = YES\n# Only installs headers\nWEBSOCKETPP_INSTALL_TARGET = NO\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/weston/0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch",
    "content": "From b10c0e843dcb8148bbe869bb15261955b94ac98c Mon Sep 17 00:00:00 2001\nFrom: Denys Dmytriyenko <denys@ti.com>\nDate: Tue, 8 Sep 2020 19:37:42 -0400\nSubject: [PATCH] tests: include fcntl.h for open(), O_RDWR, O_CLOEXEC and\n O_CREAT\n\nmusl libc (unlike glibc) requires explicitly incuding fcntl.h to define open(),\nO_RDWR, O_CLOEXEC and O_CREAT. Otherwise the build fails with the errors:\n\n| ../weston-9.0.0/tests/weston-test-fixture-compositor.c: In function 'wait_for_lock':\n| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:7: warning: implicit declaration of function 'open'; did you mean 'popen'? [-Wimplicit-function-declaration]\n|   135 |  fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700);\n|       |       ^~~~\n|       |       popen\n| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:23: error: 'O_RDWR' undeclared (first use in this function)\n|   135 |  fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700);\n|       |                       ^~~~~~\n| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:23: note: each undeclared identifier is reported only once for each function it appears in\n| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:32: error: 'O_CLOEXEC' undeclared (first use in this function)\n|   135 |  fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700);\n|       |                                ^~~~~~~~~\n| ../weston-9.0.0/tests/weston-test-fixture-compositor.c:135:44: error: 'O_CREAT' undeclared (first use in this function)\n|   135 |  fd = open(lock_path, O_RDWR | O_CLOEXEC | O_CREAT, 00700);\n|       |                                            ^~~~~~~\n\nSigned-off-by: Denys Dmytriyenko <denys@ti.com>\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[james.hilliard1@gmail.com: backport from upstream commit\nb10c0e843dcb8148bbe869bb15261955b94ac98c]\n---\n tests/weston-test-fixture-compositor.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/tests/weston-test-fixture-compositor.c b/tests/weston-test-fixture-compositor.c\nindex 1c32959c..c1eb26c4 100644\n--- a/tests/weston-test-fixture-compositor.c\n+++ b/tests/weston-test-fixture-compositor.c\n@@ -35,6 +35,7 @@\n #include <stdarg.h>\n #include <stdlib.h>\n #include <errno.h>\n+#include <fcntl.h>\n \n #include \"shared/helpers.h\"\n #include \"weston-test-fixture-compositor.h\"\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/weston/0002-libweston-backend-drm-might-need-EGL.patch",
    "content": "From 4b93b71067949cc5efabb9b3d59278a3f362b11c Mon Sep 17 00:00:00 2001\nFrom: Heiko Thiery <heiko.thiery@gmail.com>\nDate: Wed, 21 Oct 2020 13:33:25 +0200\nSubject: [PATCH] libweston/backend/drm: might need EGL\n\ngbm-drm.c includes gl-renderer.h. When EGL is enabled, that in turns\nincludes egl.h. As such, dependencies for drm should include EGL if\nit is available.\n\nThis condition is modelled after a similar one in libweston/meson.build\n\nReported-by: Gary Bisson <gary.bisson@boundarydevices.com>\nReported-by: Heiko Thiery <heiko.thiery@gmail.com>\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\nCc: Refik Tuzakli <tuzakli.refik@gmail.com>\nCc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>\nSigned-off-by: Heiko Thiery <heiko.thiery@gmail.com>\n---\nThis patch should be a proper fix for the issue discribed in the patch from\nGary [1].\n\nSince the MR on weston upstream [2] is not merged now I add this patch\nto have working weston with imx in buildroot.\n\n[1] https://patchwork.ozlabs.org/project/buildroot/patch/20200402130842.918696-3-gary.bisson@boundarydevices.com/\n[2] https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/508\n---\n libweston/backend-drm/meson.build | 3 +++\n 1 file changed, 3 insertions(+)\n\ndiff --git a/libweston/backend-drm/meson.build b/libweston/backend-drm/meson.build\nindex 484c2702..e3e5b976 100644\n--- a/libweston/backend-drm/meson.build\n+++ b/libweston/backend-drm/meson.build\n@@ -53,6 +53,9 @@ if get_option('renderer-gl')\n \t\tconfig_h.set('HAVE_GBM_FD_IMPORT', '1')\n \tendif\n \tdeps_drm += dep_gbm\n+\tif dep_egl.found()\n+\t\tdeps_drm += dep_egl\n+\tendif\n \tsrcs_drm += 'drm-gbm.c'\n \tconfig_h.set('BUILD_DRM_GBM', '1')\n endif\n--\n2.20.1\n\n"
  },
  {
    "path": "package/weston/0003-pipewire-add-support-for-0.3-API.patch",
    "content": "From cc08737e3fd174ec3c4c208ea4f2a3a6a9e8af3e Mon Sep 17 00:00:00 2001\nFrom: James Hilliard <james.hilliard1@gmail.com>\nDate: Mon, 6 Jul 2020 00:58:02 -0600\nSubject: [PATCH] pipewire: add support for 0.3 API\n\nFixes: #369\n\nSigned-off-by: James Hilliard <james.hilliard1@gmail.com>\n[james.hilliard1@gmail.com: backport from upstream commit\n80b585f8d2a31e780b4de41fbd187a742bea7e1a]\n---\n .gitlab-ci.yml               |   2 +-\n .gitlab-ci/debian-install.sh |  16 ++++-\n pipewire/meson.build         |  28 ++++++---\n pipewire/pipewire-plugin.c   | 118 ++++++++++++++++++++++++++++++++++-\n 4 files changed, 151 insertions(+), 13 deletions(-)\n\ndiff --git a/pipewire/meson.build b/pipewire/meson.build\nindex 3d3374b8..e30a0b62 100644\n--- a/pipewire/meson.build\n+++ b/pipewire/meson.build\n@@ -5,17 +5,25 @@ if get_option('pipewire')\n \t\terror('Attempting to build the pipewire plugin without the required DRM backend. ' + user_hint)\n \tendif\n \n-\tdepnames = [\n-\t\t'libpipewire-0.2', 'libspa-0.1'\n-\t]\n \tdeps_pipewire = [ dep_libweston_private ]\n-\tforeach depname : depnames\n-\t\tdep = dependency(depname, required: false)\n-\t\tif not dep.found()\n-\t\t\terror('Pipewire plugin requires @0@ which was not found. '.format(depname) + user_hint)\n-\t\tendif\n-\t\tdeps_pipewire += dep\n-\tendforeach\n+\n+\tdep_libpipewire = dependency('libpipewire-0.3', required: false)\n+\tif not dep_libpipewire.found()\n+\t\tdep_libpipewire = dependency('libpipewire-0.2', required: false)\n+\tendif\n+\tif not dep_libpipewire.found()\n+\t\terror('Pipewire plugin requires libpipewire which was not found. ' + user_hint)\n+\tendif\n+\tdeps_pipewire += dep_libpipewire\n+\n+\tdep_libspa = dependency('libspa-0.2', required: false)\n+\tif not dep_libspa.found()\n+\t\tdep_libspa = dependency('libspa-0.1', required: false)\n+\tendif\n+\tif not dep_libspa.found()\n+\t\terror('Pipewire plugin requires libspa which was not found. ' + user_hint)\n+\tendif\n+\tdeps_pipewire += dep_libspa\n \n \tplugin_pipewire = shared_library(\n \t\t'pipewire-plugin',\ndiff --git a/pipewire/pipewire-plugin.c b/pipewire/pipewire-plugin.c\nindex 6f892574..ce70ea63 100644\n--- a/pipewire/pipewire-plugin.c\n+++ b/pipewire/pipewire-plugin.c\n@@ -34,20 +34,27 @@\n #include <errno.h>\n #include <unistd.h>\n \n+#include <pipewire/pipewire.h>\n+\n #include <spa/param/format-utils.h>\n #include <spa/param/video/format-utils.h>\n #include <spa/utils/defs.h>\n \n-#include <pipewire/pipewire.h>\n+#if PW_CHECK_VERSION(0, 2, 90)\n+#include <spa/buffer/meta.h>\n+#include <spa/utils/result.h>\n+#endif\n \n #define PROP_RANGE(min, max) 2, (min), (max)\n \n+#if !PW_CHECK_VERSION(0, 2, 90)\n struct type {\n \tstruct spa_type_media_type media_type;\n \tstruct spa_type_media_subtype media_subtype;\n \tstruct spa_type_format_video format_video;\n \tstruct spa_type_video_format video_format;\n };\n+#endif\n \n struct weston_pipewire {\n \tstruct weston_compositor *compositor;\n@@ -60,12 +67,19 @@ struct weston_pipewire {\n \tstruct pw_loop *loop;\n \tstruct wl_event_source *loop_source;\n \n+#if PW_CHECK_VERSION(0, 2, 90)\n+\tstruct pw_context *context;\n+#endif\n \tstruct pw_core *core;\n \tstruct pw_type *t;\n+#if PW_CHECK_VERSION(0, 2, 90)\n+\tstruct spa_hook core_listener;\n+#else\n \tstruct type type;\n \n \tstruct pw_remote *remote;\n \tstruct spa_hook remote_listener;\n+#endif\n };\n \n struct pipewire_output {\n@@ -100,6 +114,7 @@ struct pipewire_frame_data {\n \tstruct wl_event_source *fence_sync_event_source;\n };\n \n+#if !PW_CHECK_VERSION(0, 2, 90)\n static inline void init_type(struct type *type, struct spa_type_map *map)\n {\n \tspa_type_media_type_map(map, &type->media_type);\n@@ -107,6 +122,7 @@ static inline void init_type(struct type *type, struct spa_type_map *map)\n \tspa_type_format_video_map(map, &type->format_video);\n \tspa_type_video_format_map(map, &type->video_format);\n }\n+#endif\n \n static void\n pipewire_debug_impl(struct weston_pipewire *pipewire,\n@@ -141,6 +157,7 @@ pipewire_debug_impl(struct weston_pipewire *pipewire,\n \tfree(logstr);\n }\n \n+#if !PW_CHECK_VERSION(0, 2, 90)\n static void\n pipewire_debug(struct weston_pipewire *pipewire, const char *fmt, ...)\n {\n@@ -150,6 +167,7 @@ pipewire_debug(struct weston_pipewire *pipewire, const char *fmt, ...)\n \tpipewire_debug_impl(pipewire, NULL, fmt, ap);\n \tva_end(ap);\n }\n+#endif\n \n static void\n pipewire_output_debug(struct pipewire_output *output, const char *fmt, ...)\n@@ -185,7 +203,9 @@ pipewire_output_handle_frame(struct pipewire_output *output, int fd,\n \tconst struct weston_drm_virtual_output_api *api =\n \t\toutput->pipewire->virtual_output_api;\n \tsize_t size = output->output->height * stride;\n+#if !PW_CHECK_VERSION(0, 2, 90)\n \tstruct pw_type *t = output->pipewire->t;\n+#endif\n \tstruct pw_buffer *buffer;\n \tstruct spa_buffer *spa_buffer;\n \tstruct spa_meta_header *h;\n@@ -203,7 +223,12 @@ pipewire_output_handle_frame(struct pipewire_output *output, int fd,\n \n \tspa_buffer = buffer->buffer;\n \n+#if PW_CHECK_VERSION(0, 2, 90)\n+\tif ((h = spa_buffer_find_meta_data(spa_buffer, SPA_META_Header,\n+\t\t\t\t     sizeof(struct spa_meta_header)))) {\n+#else\n \tif ((h = spa_buffer_find_meta(spa_buffer, t->meta.Header))) {\n+#endif\n \t\th->pts = -1;\n \t\th->flags = 0;\n \t\th->seq = output->seq++;\n@@ -375,18 +400,40 @@ pipewire_set_dpms(struct weston_output *base_output, enum dpms_enum level)\n static int\n pipewire_output_connect(struct pipewire_output *output)\n {\n+#if !PW_CHECK_VERSION(0, 2, 90)\n \tstruct weston_pipewire *pipewire = output->pipewire;\n \tstruct type *type = &pipewire->type;\n+#endif\n \tuint8_t buffer[1024];\n \tstruct spa_pod_builder builder =\n \t\tSPA_POD_BUILDER_INIT(buffer, sizeof(buffer));\n \tconst struct spa_pod *params[1];\n+#if !PW_CHECK_VERSION(0, 2, 90)\n \tstruct pw_type *t = pipewire->t;\n+#endif\n \tint frame_rate = output->output->current_mode->refresh / 1000;\n \tint width = output->output->width;\n \tint height = output->output->height;\n \tint ret;\n \n+#if PW_CHECK_VERSION(0, 2, 90)\n+\tparams[0] = spa_pod_builder_add_object(&builder,\n+\t\tSPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,\n+\t\tSPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video),\n+\t\tSPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),\n+\t\tSPA_FORMAT_VIDEO_format, SPA_POD_Id(SPA_VIDEO_FORMAT_BGRx),\n+\t\tSPA_FORMAT_VIDEO_size, SPA_POD_Rectangle(&SPA_RECTANGLE(width, height)),\n+\t\tSPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction(&SPA_FRACTION (0, 1)),\n+\t\tSPA_FORMAT_VIDEO_maxFramerate,\n+\t\tSPA_POD_CHOICE_RANGE_Fraction(&SPA_FRACTION(frame_rate, 1),\n+\t\t\t&SPA_FRACTION(1, 1),\n+\t\t\t&SPA_FRACTION(frame_rate, 1)));\n+\n+\tret = pw_stream_connect(output->stream, PW_DIRECTION_OUTPUT, SPA_ID_INVALID,\n+\t\t\t\t(PW_STREAM_FLAG_DRIVER |\n+\t\t\t\t PW_STREAM_FLAG_MAP_BUFFERS),\n+\t\t\t\tparams, 1);\n+#else\n \tparams[0] = spa_pod_builder_object(&builder,\n \t\tt->param.idEnumFormat, t->spa_format,\n \t\t\"I\", type->media_type.video,\n@@ -406,6 +453,7 @@ pipewire_output_connect(struct pipewire_output *output)\n \t\t\t\t(PW_STREAM_FLAG_DRIVER |\n \t\t\t\t PW_STREAM_FLAG_MAP_BUFFERS),\n \t\t\t\tparams, 1);\n+#endif\n \tif (ret != 0) {\n \t\tweston_log(\"Failed to connect pipewire stream: %s\",\n \t\t\t   spa_strerror(ret));\n@@ -482,26 +530,42 @@ pipewire_output_stream_state_changed(void *data, enum pw_stream_state old,\n }\n \n static void\n+#if PW_CHECK_VERSION(0, 2, 90)\n+pipewire_output_stream_param_changed(void *data, uint32_t id, const struct spa_pod *format)\n+#else\n pipewire_output_stream_format_changed(void *data, const struct spa_pod *format)\n+#endif\n {\n \tstruct pipewire_output *output = data;\n+#if !PW_CHECK_VERSION(0, 2, 90)\n \tstruct weston_pipewire *pipewire = output->pipewire;\n+#endif\n \tuint8_t buffer[1024];\n \tstruct spa_pod_builder builder =\n \t\tSPA_POD_BUILDER_INIT(buffer, sizeof(buffer));\n \tconst struct spa_pod *params[2];\n+#if !PW_CHECK_VERSION(0, 2, 90)\n \tstruct pw_type *t = pipewire->t;\n+#endif\n \tint32_t width, height, stride, size;\n \tconst int bpp = 4;\n \n \tif (!format) {\n \t\tpipewire_output_debug(output, \"format = None\");\n+#if PW_CHECK_VERSION(0, 2, 90)\n+\t\tpw_stream_update_params(output->stream, NULL, 0);\n+#else\n \t\tpw_stream_finish_format(output->stream, 0, NULL, 0);\n+#endif\n \t\treturn;\n \t}\n \n+#if PW_CHECK_VERSION(0, 2, 90)\n+\tspa_format_video_raw_parse(format, &output->video_format);\n+#else\n \tspa_format_video_raw_parse(format, &output->video_format,\n \t\t\t\t   &pipewire->type.format_video);\n+#endif\n \n \twidth = output->video_format.size.width;\n \theight = output->video_format.size.height;\n@@ -510,6 +574,21 @@ pipewire_output_stream_format_changed(void *data, const struct spa_pod *format)\n \n \tpipewire_output_debug(output, \"format = %dx%d\", width, height);\n \n+#if PW_CHECK_VERSION(0, 2, 90)\n+\tparams[0] = spa_pod_builder_add_object(&builder,\n+\t\tSPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,\n+\t\tSPA_PARAM_BUFFERS_size, SPA_POD_Int(size),\n+\t\tSPA_PARAM_BUFFERS_stride, SPA_POD_Int(stride),\n+\t\tSPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(4, 2, 8),\n+\t\tSPA_PARAM_BUFFERS_align, SPA_POD_Int(16));\n+\n+\tparams[1] = spa_pod_builder_add_object(&builder,\n+\t\tSPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,\n+\t\tSPA_PARAM_META_type, SPA_POD_Id(SPA_META_Header),\n+\t\tSPA_PARAM_META_size, SPA_POD_Int(sizeof(struct spa_meta_header)));\n+\n+\tpw_stream_update_params(output->stream, params, 2);\n+#else\n \tparams[0] = spa_pod_builder_object(&builder,\n \t\tt->param.idBuffers, t->param_buffers.Buffers,\n \t\t\":\", t->param_buffers.size,\n@@ -527,12 +606,17 @@ pipewire_output_stream_format_changed(void *data, const struct spa_pod *format)\n \t\t\":\", t->param_meta.size, \"i\", sizeof(struct spa_meta_header));\n \n \tpw_stream_finish_format(output->stream, 0, params, 2);\n+#endif\n }\n \n static const struct pw_stream_events stream_events = {\n \tPW_VERSION_STREAM_EVENTS,\n \t.state_changed = pipewire_output_stream_state_changed,\n+#if PW_CHECK_VERSION(0, 2, 90)\n+\t.param_changed = pipewire_output_stream_param_changed,\n+#else\n \t.format_changed = pipewire_output_stream_format_changed,\n+#endif\n };\n \n static struct weston_output *\n@@ -560,7 +644,11 @@ pipewire_output_create(struct weston_compositor *c, char *name)\n \tif (!head)\n \t\tgoto err;\n \n+#if PW_CHECK_VERSION(0, 2, 90)\n+\toutput->stream = pw_stream_new(pipewire->core, name, NULL);\n+#else\n \toutput->stream = pw_stream_new(pipewire->remote, name, NULL);\n+#endif\n \tif (!output->stream) {\n \t\tweston_log(\"Cannot initialize pipewire stream\\n\");\n \t\tgoto err;\n@@ -704,6 +792,14 @@ weston_pipewire_loop_handler(int fd, uint32_t mask, void *data)\n \treturn 0;\n }\n \n+#if PW_CHECK_VERSION(0, 2, 90)\n+static void\n+weston_pipewire_error(void *data, uint32_t id, int seq, int res,\n+\t\t\t      const char *error)\n+{\n+\tweston_log(\"pipewire remote error: %s\\n\", error);\n+}\n+#else\n static void\n weston_pipewire_state_changed(void *data, enum pw_remote_state old,\n \t\t\t      enum pw_remote_state state, const char *error)\n@@ -725,12 +821,20 @@ weston_pipewire_state_changed(void *data, enum pw_remote_state old,\n \t\tbreak;\n \t}\n }\n+#endif\n \n \n+#if PW_CHECK_VERSION(0, 2, 90)\n+static const struct pw_core_events core_events = {\n+\tPW_VERSION_CORE_EVENTS,\n+\t.error = weston_pipewire_error,\n+};\n+#else\n static const struct pw_remote_events remote_events = {\n \tPW_VERSION_REMOTE_EVENTS,\n \t.state_changed = weston_pipewire_state_changed,\n };\n+#endif\n \n static int\n weston_pipewire_init(struct weston_pipewire *pipewire)\n@@ -745,10 +849,19 @@ weston_pipewire_init(struct weston_pipewire *pipewire)\n \n \tpw_loop_enter(pipewire->loop);\n \n+#if PW_CHECK_VERSION(0, 2, 90)\n+\tpipewire->context = pw_context_new(pipewire->loop, NULL, 0);\n+#else\n \tpipewire->core = pw_core_new(pipewire->loop, NULL);\n \tpipewire->t = pw_core_get_type(pipewire->core);\n \tinit_type(&pipewire->type, pipewire->t->map);\n+#endif\n \n+#if PW_CHECK_VERSION(0, 2, 90)\n+\tpw_core_add_listener(pipewire->core,\n+\t\t\t       &pipewire->core_listener,\n+\t\t\t       &core_events, pipewire);\n+#else\n \tpipewire->remote = pw_remote_new(pipewire->core, NULL, 0);\n \tpw_remote_add_listener(pipewire->remote,\n \t\t\t       &pipewire->remote_listener,\n@@ -777,6 +890,7 @@ weston_pipewire_init(struct weston_pipewire *pipewire)\n \t\t\tgoto err;\n \t\t}\n \t}\n+#endif\n \n \tloop = wl_display_get_event_loop(pipewire->compositor->wl_display);\n \tpipewire->loop_source =\n@@ -786,12 +900,14 @@ weston_pipewire_init(struct weston_pipewire *pipewire)\n \t\t\t\t     pipewire);\n \n \treturn 0;\n+#if !PW_CHECK_VERSION(0, 2, 90)\n err:\n \tif (pipewire->remote)\n \t\tpw_remote_destroy(pipewire->remote);\n \tpw_loop_leave(pipewire->loop);\n \tpw_loop_destroy(pipewire->loop);\n \treturn -1;\n+#endif\n }\n \n static const struct weston_pipewire_api pipewire_api = {\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/weston/0004-pipewire-fix-null-deref-in-0-3-API.patch",
    "content": "From a67393c353e0f25b142910a817be5a7754d436c3 Mon Sep 17 00:00:00 2001\nFrom: Ambareesh Balaji <ambareeshbalaji@gmail.com>\nDate: Sat, 5 Dec 2020 20:49:55 -0500\nSubject: [PATCH] pipewire: fix null deref in 0.3 API\n\nSigned-off-by: Ambareesh Balaji <ambareeshbalaji@gmail.com>\n[Retrieved from:\nhttps://gitlab.freedesktop.org/wayland/weston/-/commit/a67393c353e0f25b142910a817be5a7754d436c3]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n pipewire/pipewire-plugin.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/pipewire/pipewire-plugin.c b/pipewire/pipewire-plugin.c\nindex ca5cbfec1..55705acfc 100644\n--- a/pipewire/pipewire-plugin.c\n+++ b/pipewire/pipewire-plugin.c\n@@ -856,6 +856,7 @@ weston_pipewire_init(struct weston_pipewire *pipewire)\n \n #if PW_CHECK_VERSION(0, 2, 90)\n \tpipewire->context = pw_context_new(pipewire->loop, NULL, 0);\n+\tpipewire->core = pw_context_connect(pipewire->context, NULL, 0);\n #else\n \tpipewire->core = pw_core_new(pipewire->loop, NULL);\n \tpipewire->t = pw_core_get_type(pipewire->core);\n-- \nGitLab\n\n"
  },
  {
    "path": "package/weston/Config.in",
    "content": "comment \"weston needs udev and a toolchain w/ locale, threads, dynamic library, headers >= 3.0\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 || BR2_STATIC_LIBS || \\\n\t\t!BR2_ENABLE_LOCALE\n\nconfig BR2_PACKAGE_WESTON\n\tbool \"weston\"\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tdepends on !BR2_STATIC_LIBS # wayland\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # wayland\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\tselect BR2_PACKAGE_WAYLAND\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS\n\tselect BR2_PACKAGE_LIBXKBCOMMON\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_CAIRO_PNG\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBINPUT\n\tselect BR2_PACKAGE_LIBDRM\n\t# Runtime dependency\n\tselect BR2_PACKAGE_XKEYBOARD_CONFIG\n\tselect BR2_PACKAGE_WESTON_SHELL_DESKTOP if !BR2_PACKAGE_WESTON_HAS_SHELL\n\thelp\n\t  Weston is the reference implementation of a Wayland\n\t  compositor, and a useful compositor in its own right.\n\t  Weston has various backends that lets it run on Linux kernel\n\t  modesetting and evdev input as well as under X11.\n\n\t  http://wayland.freedesktop.org/\n\nif BR2_PACKAGE_WESTON\n\nchoice\n\tprompt \"default compositor\"\n\nconfig BR2_PACKAGE_WESTON_DEFAULT_FBDEV\n\tbool \"fbdev\"\n\tselect BR2_PACKAGE_WESTON_FBDEV\n\nconfig BR2_PACKAGE_WESTON_DEFAULT_DRM\n\tbool \"drm\"\n\tdepends on BR2_PACKAGE_MESA3D_OPENGL_EGL || BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL\n\tselect BR2_PACKAGE_WESTON_DRM\n\ncomment \"drm backend needs mesa3d w/ EGL driver\"\n\tdepends on !BR2_PACKAGE_MESA3D_OPENGL_EGL && !BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL\n\nconfig BR2_PACKAGE_WESTON_DEFAULT_X11\n\tbool \"X11\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_WESTON_X11\n\ncomment \"X11 backend needs X.org\"\n\tdepends on !BR2_PACKAGE_XORG7\n\nendchoice\n\nconfig BR2_PACKAGE_WESTON_DEFAULT_COMPOSITOR\n\tstring\n\tdefault \"fbdev\" if BR2_PACKAGE_WESTON_DEFAULT_FBDEV\n\tdefault \"drm\"   if BR2_PACKAGE_WESTON_DEFAULT_DRM\n\tdefault \"x11\"   if BR2_PACKAGE_WESTON_DEFAULT_X11\n\nconfig BR2_PACKAGE_WESTON_DRM\n\tbool \"DRM compositor\"\n\tdepends on BR2_PACKAGE_MESA3D_OPENGL_EGL || BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL\n\n# Uses libgbm from mesa3d\ncomment \"DRM compositor needs an OpenGL EGL backend provided by mesa3d\"\n\tdepends on !BR2_PACKAGE_MESA3D_OPENGL_EGL && !BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL\n\nconfig BR2_PACKAGE_WESTON_FBDEV\n\tbool \"fbdev compositor\"\n\n# FreeRDP needs threads and !static, already the case for weston\nconfig BR2_PACKAGE_WESTON_RDP\n\tbool \"RDP compositor\"\n\tdepends on BR2_USE_MMU # freerdp, libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_USE_WCHAR # freerdp\n\tdepends on BR2_INSTALL_LIBSTDCPP # freerdp\n\tselect BR2_PACKAGE_FREERDP\n\thelp\n\t  This enables the RDP backend, which allows accessing weston\n\t  through the network with any RDP-compliant client.\n\n\t  Please note that one must pass those options to weston for RDP\n\t  to be functional:\n\t    --rdp-tls-cert=/path/to/server.crt\n\t    --rdp-tls-key=/path/to/server.key\n\n\t  By default, Buildroot installs such files in\n\t  /etc/freerdp/server/ so you may want to change them in a\n\t  post-build script or a rootfs overlay.\n\ncomment \"RDP compositor needs a toolchain w/ wchar, C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_WESTON_X11\n\tbool \"X11 compositor\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_LIBXCB\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\ncomment \"X11 compositor needs X.org enabled\"\n\tdepends on !BR2_PACKAGE_XORG7\n\nconfig BR2_PACKAGE_WESTON_XWAYLAND\n\tbool \"XWayland support\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_PACKAGE_LIBEPOXY\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_LIBXCB\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXCURSOR\n\ncomment \"XWayland support needs libepoxy and X.org enabled\"\n\tdepends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_LIBEPOXY\n\n# Weston needs at least one shell; this can be one of the bundled ones,\n# below, of from a third-party package, which should then select this.\nconfig BR2_PACKAGE_WESTON_HAS_SHELL\n\tbool\n\nconfig BR2_PACKAGE_WESTON_SHELL_DESKTOP\n\tbool \"desktop shell\"\n\tdefault y\n\nconfig BR2_PACKAGE_WESTON_SHELL_FULLSCREEN\n\tbool \"fullscreen shell\"\n\tdefault y\n\tselect BR2_PACKAGE_WESTON_HAS_SHELL\n\nconfig BR2_PACKAGE_WESTON_SHELL_IVI\n\tbool \"ivi shell\"\n\tdefault y\n\tselect BR2_PACKAGE_WESTON_HAS_SHELL\n\nconfig BR2_PACKAGE_WESTON_SHELL_KIOSK\n\tbool \"kiosk shell\"\n\tdefault y\n\tselect BR2_PACKAGE_WESTON_HAS_SHELL\n\nconfig BR2_PACKAGE_WESTON_DEMO_CLIENTS\n\tbool \"demo clients\"\n\tdepends on BR2_USE_MMU # pango\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango\n\tdepends on BR2_INSTALL_LIBSTDCPP # pango\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # pango\n\tdepends on BR2_USE_WCHAR # pango\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n\tdepends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND\n\tselect BR2_PACKAGE_PANGO\n\thelp\n\t  This enables the installation of Weston's demo clients.\n\ncomment \"demo clients needs an OpenGL ES provider, an OpenEGL-capable Wayland backend and a toolchain w/ wchar, threads, C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_USE_WCHAR || !BR2_PACKAGE_HAS_LIBGLES || \\\n\t\t!BR2_PACKAGE_HAS_LIBEGL_WAYLAND\n\nendif\n"
  },
  {
    "path": "package/weston/weston.hash",
    "content": "# From https://lists.freedesktop.org/archives/wayland-devel/2020-September/041595.html\nmd5  b406da0fe9139fd39653238fde22a6cf  weston-9.0.0.tar.xz\nsha1  90b9540a0bd6d6f7a465817f1c696d4d393183c9  weston-9.0.0.tar.xz\nsha256  5cf5d6ce192e0eb15c1fc861a436bf21b5bb3b91dbdabbdebe83e1f83aa098fe  weston-9.0.0.tar.xz\nsha512  ccc263f8279b7b23e5c593b4a8a023de2c3dc178b1b8d6593599171770bcfe97608de9fcb77aa1cab39255451d289d323e51c317dae190c7641282e085b84f90  weston-9.0.0.tar.xz\nsha256  fdb65868f65d0fbdb05c2d3b779e10ce9969fa0c4b9262ba4f260e87086ab860  COPYING\n"
  },
  {
    "path": "package/weston/weston.mk",
    "content": "################################################################################\n#\n# weston\n#\n################################################################################\n\nWESTON_VERSION = 9.0.0\nWESTON_SITE = https://wayland.freedesktop.org/releases\nWESTON_SOURCE = weston-$(WESTON_VERSION).tar.xz\nWESTON_LICENSE = MIT\nWESTON_LICENSE_FILES = COPYING\nWESTON_CPE_ID_VENDOR = wayland\n\nWESTON_DEPENDENCIES = host-pkgconf wayland wayland-protocols \\\n\tlibxkbcommon pixman libpng jpeg udev cairo libinput libdrm\n\nWESTON_CONF_OPTS = \\\n\t-Dbackend-headless=false \\\n\t-Dcolor-management-colord=false \\\n\t-Dremoting=false\n\n# Uses VIDIOC_EXPBUF, only available from 3.8+\nifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8),y)\nWESTON_CONF_OPTS += -Dsimple-clients=dmabuf-v4l\nelse\nWESTON_CONF_OPTS += -Dsimple-clients=\nendif\n\nifeq ($(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_SYSTEMD),yy)\nWESTON_CONF_OPTS += -Dlauncher-logind=true\nWESTON_DEPENDENCIES += dbus systemd\nelse\nWESTON_CONF_OPTS += -Dlauncher-logind=false\nendif\n\nifeq ($(BR2_PACKAGE_WEBP),y)\nWESTON_CONF_OPTS += -Dimage-webp=true\nWESTON_DEPENDENCIES += webp\nelse\nWESTON_CONF_OPTS += -Dimage-webp=false\nendif\n\n# weston-launch must be u+s root in order to work properly\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\ndefine WESTON_PERMISSIONS\n\t/usr/bin/weston-launch f 4755 0 0 - - - - -\nendef\ndefine WESTON_USERS\n\t- - weston-launch -1 - - - - Weston launcher group\nendef\nWESTON_CONF_OPTS += -Dweston-launch=true\nWESTON_DEPENDENCIES += linux-pam\nelse\nWESTON_CONF_OPTS += -Dweston-launch=false\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBEGL_WAYLAND)$(BR2_PACKAGE_HAS_LIBGLES),yy)\nWESTON_CONF_OPTS += -Drenderer-gl=true\nWESTON_DEPENDENCIES += libegl libgles\nifeq ($(BR2_PACKAGE_PIPEWIRE)$(BR2_PACKAGE_WESTON_DRM),yy)\nWESTON_CONF_OPTS += -Dpipewire=true\nWESTON_DEPENDENCIES += pipewire\nelse\nWESTON_CONF_OPTS += -Dpipewire=false\nendif\nelse\nWESTON_CONF_OPTS += \\\n\t-Drenderer-gl=false \\\n\t-Dpipewire=false\nendif\n\nifeq ($(BR2_PACKAGE_WESTON_RDP),y)\nWESTON_DEPENDENCIES += freerdp\nWESTON_CONF_OPTS += -Dbackend-rdp=true\nelse\nWESTON_CONF_OPTS += -Dbackend-rdp=false\nendif\n\nifeq ($(BR2_PACKAGE_WESTON_FBDEV),y)\nWESTON_CONF_OPTS += -Dbackend-fbdev=true\nelse\nWESTON_CONF_OPTS += -Dbackend-fbdev=false\nendif\n\nifeq ($(BR2_PACKAGE_WESTON_DRM),y)\nWESTON_CONF_OPTS += -Dbackend-drm=true\nelse\nWESTON_CONF_OPTS += -Dbackend-drm=false\nendif\n\nifeq ($(BR2_PACKAGE_WESTON_X11),y)\nWESTON_CONF_OPTS += -Dbackend-x11=true\nWESTON_DEPENDENCIES += libxcb xlib_libX11\nelse\nWESTON_CONF_OPTS += -Dbackend-x11=false\nendif\n\n# We're guaranteed to have at least one backend\nWESTON_CONF_OPTS += -Dbackend-default=$(call qstrip,$(BR2_PACKAGE_WESTON_DEFAULT_COMPOSITOR))\n\nifeq ($(BR2_PACKAGE_WESTON_XWAYLAND),y)\nWESTON_CONF_OPTS += -Dxwayland=true\nWESTON_DEPENDENCIES += cairo libepoxy libxcb xlib_libX11 xlib_libXcursor\nelse\nWESTON_CONF_OPTS += -Dxwayland=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBVA),y)\nWESTON_CONF_OPTS += -Dbackend-drm-screencast-vaapi=true\nWESTON_DEPENDENCIES += libva\nelse\nWESTON_CONF_OPTS += -Dbackend-drm-screencast-vaapi=false\nendif\n\nifeq ($(BR2_PACKAGE_LCMS2),y)\nWESTON_CONF_OPTS += -Dcolor-management-lcms=true\nWESTON_DEPENDENCIES += lcms2\nelse\nWESTON_CONF_OPTS += -Dcolor-management-lcms=false\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nWESTON_CONF_OPTS += -Dsystemd=true\nWESTON_DEPENDENCIES += systemd\nelse\nWESTON_CONF_OPTS += -Dsystemd=false\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nWESTON_CONF_OPTS += -Dtest-junit-xml=true\nWESTON_DEPENDENCIES += libxml2\nelse\nWESTON_CONF_OPTS += -Dtest-junit-xml=false\nendif\n\nifeq ($(BR2_PACKAGE_WESTON_SHELL_DESKTOP),y)\nWESTON_CONF_OPTS += -Dshell-desktop=true\nelse\nWESTON_CONF_OPTS += -Dshell-desktop=false\nendif\n\nifeq ($(BR2_PACKAGE_WESTON_SHELL_FULLSCREEN),y)\nWESTON_CONF_OPTS += -Dshell-fullscreen=true\nelse\nWESTON_CONF_OPTS += -Dshell-fullscreen=false\nendif\n\nifeq ($(BR2_PACKAGE_WESTON_SHELL_IVI),y)\nWESTON_CONF_OPTS += -Dshell-ivi=true\nelse\nWESTON_CONF_OPTS += -Dshell-ivi=false\nendif\n\nifeq ($(BR2_PACKAGE_WESTON_SHELL_KIOSK),y)\nWESTON_CONF_OPTS += -Dshell-kiosk=true\nelse\nWESTON_CONF_OPTS += -Dshell-kiosk=false\nendif\n\nifeq ($(BR2_PACKAGE_WESTON_DEMO_CLIENTS),y)\nWESTON_CONF_OPTS += -Ddemo-clients=true\nWESTON_DEPENDENCIES += pango\nelse\nWESTON_CONF_OPTS += -Ddemo-clients=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/wf111/Config.in",
    "content": "config BR2_PACKAGE_WF111\n\tbool \"wf111\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_ARM_CPU_ARMV5 || BR2_ARM_CPU_ARMV7A || BR2_i386\n\t# Binary tools are distributed alongside the driver, and are\n\t# dynamically linked against the glibc.\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  Silicon Labs WF111 WiFi driver and utilities.\n\n\t  Warning: CONFIG_WIRELESS_EXT and CONFIG_WEXT_PRIV must be\n\t  selected in the Linux kernel configuration. These are blind\n\t  options (i.e. not selectable directly) so they cannot be\n\t  enabled by a change in linux/linux.mk. There are two choices\n\t  to enable these options:\n\t  - By making them non blind, with a \"WF111 support\"\n\t    configuration entry that selects them, for example.\n\t  - By enabling another random WiFi driver that select them.\n\n\t  https://www.silabs.com/wireless/wi-fi/bluegiga-legacy-modules/device.wf111\n\ncomment \"wf111 needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\tdepends on BR2_ARM_CPU_ARMV5 || BR2_ARM_CPU_ARMV7A || BR2_i386\n\ncomment \"wf111 needs a glibc toolchain\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_ARM_CPU_ARMV5 || BR2_ARM_CPU_ARMV7A || BR2_i386\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC\n"
  },
  {
    "path": "package/wf111/wf111.hash",
    "content": "# Locally calculated\nsha256\t33de265d28702ce32bb292f29a43e9e946382a1e31f1e4feae0f4753cf18b4f4\twf111-linux-driver_5.2.2-r4_armv7-a.tar.gz\nsha256\tfbe86a30e4025b9f510feb4cb8f846aca82f8f3e8f6c8a28a74baf45c87f6e96\twf111-linux-driver_5.2.2-r4_armv5te.tar.gz\nsha256\t37983d73f60bab9768eb02a89695448f27cd1964e23cf462e76657344a9c67ac\twf111-linux-driver-5-2-2-r3-x86.tar.gz\n"
  },
  {
    "path": "package/wf111/wf111.mk",
    "content": "################################################################################\n#\n# wf111\n#\n################################################################################\n\nifeq ($(BR2_ARM_CPU_ARMV7A)$(BR2_ARM_CPU_ARMV5),y)\nWF111_VERSION = 5.2.2-r4\nelse\nWF111_VERSION = 5-2-2-r3\nendif\n\nWF111_SITE = https://www.silabs.com/documents/login/software\nWF111_DEPENDENCIES = linux\n\nifeq ($(BR2_ARM_CPU_ARMV7A),y)\nWF111_SOURCE = wf111-linux-driver_$(WF111_VERSION)_armv7-a.tar.gz\nelse ifeq ($(BR2_ARM_CPU_ARMV5),y)\nWF111_SOURCE = wf111-linux-driver_$(WF111_VERSION)_armv5te.tar.gz\nelse ifeq ($(BR2_i386),y)\nWF111_SOURCE = wf111-linux-driver-$(WF111_VERSION)-x86.tar.gz\nendif\n\n# Due to the stupidity of the package Makefile, we can't invoke\n# separately the build step and the install step and get a correct\n# behavior. So we do everything in the install step.\ndefine WF111_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PWD=$(@D) \\\n\t\t$(LINUX_MAKE_FLAGS) KDIR=$(LINUX_DIR) \\\n\t\tOUTPUT=$(TARGET_DIR) install_static\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/wget/0001-lib-getrandom.c-fix-build-with-uclibc-1.0.35.patch",
    "content": "From a0594387565e1e6b4a8a8ba04ad13b135cc1f0b5 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 1 Apr 2021 07:49:46 +0200\nSubject: [PATCH] lib/getrandom.c: fix build with uclibc < 1.0.35\n\nFix the following build failure with uclibc < 1.0.35 which is raised\nsince the addition of getrandom module in\nhttps://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=682cc4e678aceff32dea2a84b6e5147bdf5a20a7:\n\nIn file included from ./sys/random.h:40,\n                 from getrandom.c:22:\n/home/fabrice/buildroot/output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:27:35: error: unknown type name 'size_t'\n   27 | extern int getrandom(void *__buf, size_t count, unsigned int flags)\n      |                                   ^~~~~~\n/home/fabrice/buildroot/output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/sys/random.h:8:1: note: 'size_t' is defined in header '<stddef.h>'; did you forget to '#include <stddef.h>'?\n    7 | #include <features.h>\n  +++ |+#include <stddef.h>\n    8 |\n\nThis patch is not upstreamable as it is only a workaround for\nuclibc < 1.0.35, upstream uclibc has been patched with\nhttps://github.com/wbx-github/uclibc-ng/commit/00972c02c2b6e0a95d5def4a71bdfb188e091782\n\nFixes:\n - http://autobuild.buildroot.org/results/d507f8d8ae4dd6aac1e83b7cc81017caf0d2c30e\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n lib/getrandom.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/lib/getrandom.c b/lib/getrandom.c\nindex 41212fb32..0ad3f9648 100644\n--- a/lib/getrandom.c\n+++ b/lib/getrandom.c\n@@ -19,6 +19,7 @@\n \n #include <config.h>\n \n+#include <stddef.h>\n #include <sys/random.h>\n \n #include <errno.h>\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/wget/Config.in",
    "content": "config BR2_PACKAGE_WGET\n\tbool \"wget\"\n\t# fork()\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Network utility to retrieve files from http, https and ftp.\n\n\t  http://www.gnu.org/software/wget/\n\ncomment \"wget needs a toolchain w/ wchar\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n"
  },
  {
    "path": "package/wget/wget.hash",
    "content": "# Locally calculated after checking pgp signature\n# https://ftp.gnu.org/gnu/wget/wget-1.21.2.tar.lz.sig\n# with key 6B98F637D879C5236E277C5C64FF90AAE8C70AF9\nsha256  1727a330a86acacb3e57615ce268f5f29978bf7adec4abe6a30d370207bc91b3  wget-1.21.2.tar.lz\n# Locally calculated\nsha256  e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b  COPYING\n"
  },
  {
    "path": "package/wget/wget.mk",
    "content": "################################################################################\n#\n# wget\n#\n################################################################################\n\nWGET_VERSION = 1.21.2\nWGET_SOURCE = wget-$(WGET_VERSION).tar.lz\nWGET_SITE = $(BR2_GNU_MIRROR)/wget\nWGET_DEPENDENCIES = host-pkgconf\nWGET_LICENSE = GPL-3.0+\nWGET_LICENSE_FILES = COPYING\nWGET_CPE_ID_VENDOR = gnu\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nWGET_CONF_OPTS += --with-ssl=gnutls\nWGET_DEPENDENCIES += gnutls\nelse ifeq ($(BR2_PACKAGE_OPENSSL),y)\nWGET_CONF_OPTS += --with-ssl=openssl\nWGET_DEPENDENCIES += openssl\nelse\nWGET_CONF_OPTS += --without-ssl\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nWGET_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_PACKAGE_LIBIDN2),y)\nWGET_CONF_OPTS += --with-libidn\nWGET_DEPENDENCIES += libidn2\nelse\nWGET_CONF_OPTS += --without-libidn\nendif\n\nifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)\nWGET_DEPENDENCIES += util-linux\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nWGET_CONF_OPTS += --with-zlib\nWGET_DEPENDENCIES += zlib\nelse\nWGET_CONF_OPTS += --without-zlib\nendif\n\nifeq ($(BR2_PACKAGE_PCRE2),y)\nWGET_CONF_OPTS += --disable-pcre --enable-pcre2\nWGET_DEPENDENCIES += pcre2\nelse ifeq ($(BR2_PACKAGE_PCRE),y)\nWGET_CONF_OPTS += --enable-pcre --disable-pcre2\nWGET_DEPENDENCIES += pcre\nelse\nWGET_CONF_OPTS += --disable-pcre --disable-pcre2\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/whetstone/Config.in",
    "content": "config BR2_PACKAGE_WHETSTONE\n\tbool \"whetstone\"\n\thelp\n\t  C Converted Whetstone Double Precision Benchmark\n\n\t  http://www.netlib.org/benchmark/\n"
  },
  {
    "path": "package/whetstone/whetstone.hash",
    "content": "# Locally calculated\nsha256 333e4ceca042c146f63eec605573d16ae8b07166cbc44a17bec1ea97c6f1efbf  whetstone.c\n"
  },
  {
    "path": "package/whetstone/whetstone.mk",
    "content": "################################################################################\n#\n# whetstone\n#\n################################################################################\n\nWHETSTONE_VERSION = 1.2\nWHETSTONE_SOURCE = whetstone.c\nWHETSTONE_SITE = http://www.netlib.org/benchmark\n\ndefine WHETSTONE_EXTRACT_CMDS\n\tcp $(WHETSTONE_DL_DIR)/$($(PKG)_SOURCE) $(@D)/\nendef\n\ndefine WHETSTONE_BUILD_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) LDLIBS=\"-lm\" -C $(@D) whetstone\nendef\n\ndefine WHETSTONE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D $(@D)/whetstone $(TARGET_DIR)/usr/bin/whetstone\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/which/Config.in",
    "content": "config BR2_PACKAGE_WHICH\n\tbool \"which\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  The standard 'which' utility.\n\n\t  http://carlowood.github.io/which/index.html\n"
  },
  {
    "path": "package/which/which.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  f4a245b94124b377d8b49646bf421f9155d36aa7614b6ebf83705d3ffc76eaad  which-2.21.tar.gz\n# Locally computed\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\n"
  },
  {
    "path": "package/which/which.mk",
    "content": "################################################################################\n#\n# which\n#\n################################################################################\n\nWHICH_VERSION = 2.21\nWHICH_SITE = $(BR2_GNU_MIRROR)/which\nWHICH_LICENSE = GPL-3.0+\nWHICH_LICENSE_FILES = COPYING\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/whois/Config.in",
    "content": "config BR2_PACKAGE_WHOIS\n\tbool \"whois\"\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\thelp\n\t  Improved whois client.\n\n\t  https://github.com/rfc1036/whois\n"
  },
  {
    "path": "package/whois/whois.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20210606T204545Z/pool/main/w/whois/whois_5.5.10.dsc\nsha256  2391037b079695d0e9fd3c85ab021809a539cf093d25b6c51ca65019a54158dd  whois_5.5.10.tar.xz\n\n# Hash for license file:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/whois/whois.mk",
    "content": "################################################################################\n#\n# whois\n#\n################################################################################\n\nWHOIS_VERSION = 5.5.10\nWHOIS_SITE = http://snapshot.debian.org/archive/debian/20210606T204545Z/pool/main/w/whois\nWHOIS_SOURCE = whois_$(WHOIS_VERSION).tar.xz\nWHOIS_DEPENDENCIES = \\\n\thost-pkgconf \\\n\t$(if $(BR2_PACKAGE_LIBIDN2),libidn2) \\\n\t$(TARGET_NLS_DEPENDENCIES)\nWHOIS_MAKE_ENV = $(TARGET_MAKE_ENV)\nWHOIS_MAKE_OPTS = CC=\"$(TARGET_CC)\" CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\tLIBS=\"$(WHOIS_EXTRA_LIBS)\"\nWHOIS_LICENSE = GPL-2.0+\nWHOIS_LICENSE_FILES = COPYING\nWHOIS_EXTRA_LIBS = $(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nWHOIS_DEPENDENCIES += libiconv\nWHOIS_EXTRA_LIBS += -liconv\nWHOIS_MAKE_ENV += HAVE_ICONV=1\nendif\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nWHOIS_BUILD_TARGETS =\nWHOIS_INSTALL_TARGETS = install\nelse\nWHOIS_BUILD_TARGETS = Makefile.depend whois mkpasswd\nWHOIS_INSTALL_TARGETS = install-whois install-mkpasswd\nendif\n\ndefine WHOIS_BUILD_CMDS\n\t$(WHOIS_MAKE_ENV) $(MAKE) $(WHOIS_MAKE_OPTS) \\\n\t\t$(WHOIS_BUILD_TARGETS) -C $(@D)\nendef\n\ndefine WHOIS_INSTALL_TARGET_CMDS\n\t$(WHOIS_MAKE_ENV) $(MAKE) $(WHOIS_MAKE_OPTS) \\\n\t\tBASEDIR=\"$(TARGET_DIR)\" $(WHOIS_INSTALL_TARGETS) -C $(@D)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/wilc1000-firmware/Config.in",
    "content": "config BR2_PACKAGE_WILC1000_FIRMWARE\n\tbool \"wilc1000-firmware\"\n\thelp\n\t  Firmware for Atmel Wilc1000 wireless device\n\n\t  https://github.com/linux4sc/wireless-firmware.git\n"
  },
  {
    "path": "package/wilc1000-firmware/wilc1000-firmware.hash",
    "content": "# Locally calculated\nsha256 a2e7a327dd545ba2051946f7613005cbde88fdd952afb8eecdd1dacda7e767d2  v14.1_Firmware.zip\n"
  },
  {
    "path": "package/wilc1000-firmware/wilc1000-firmware.mk",
    "content": "################################################################################\n#\n# wilc1000-firmware\n#\n################################################################################\n\nWILC1000_FIRMWARE_VERSION = 14.1\nWILC1000_FIRMWARE_SITE = https://github.com/linux4sc/wireless-firmware/archive\nWILC1000_FIRMWARE_SOURCE = v$(WILC1000_FIRMWARE_VERSION)_Firmware.zip\n\nWILC1000_FIRMWARE_LICENSE = PROPRIETARY\n\ndefine WILC1000_FIRMWARE_EXTRACT_CMDS\n\t$(UNZIP) -d $(BUILD_DIR) $(WILC1000_FIRMWARE_DL_DIR)/$(WILC1000_FIRMWARE_SOURCE)\n\tmv $(BUILD_DIR)/wireless-firmware-$(WILC1000_FIRMWARE_VERSION)_Firmware/* $(@D)\n\trmdir $(BUILD_DIR)/wireless-firmware-$(WILC1000_FIRMWARE_VERSION)_Firmware\nendef\n\ndefine WILC1000_FIRMWARE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/wilc1003_firmware.bin \\\n\t\t$(TARGET_DIR)/lib/firmware/atmel/wilc1003_firmware.bin\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/wilink-bt-firmware/Config.in",
    "content": "config BR2_PACKAGE_WILINK_BT_FIRMWARE\n\tbool \"wilink-bt-firmware\"\n\thelp\n\t  Texas Instruments Wilink7 and Wilink8 (wl12xx/wl18xx) UART\n\t  attached Bluetooth firmware.\n\n\t  https://github.com/TI-ECS/bt-firmware\n"
  },
  {
    "path": "package/wilink-bt-firmware/wilink-bt-firmware.hash",
    "content": "# Locally calculated\nsha256  209e1a46a945e7d4d031e22fb7bd1e3fc96fa3b99d069051ce257c5e2e0843f4  wilink-bt-firmware-43fca73c6a98c63fcb98f82af5bf83761778e005-br1.tar.gz\nsha256  21fd99ce784dc33b39ec0b4a383a9a9b8dafea261d73ad4548683c4eecd87f37  LICENSE\n"
  },
  {
    "path": "package/wilink-bt-firmware/wilink-bt-firmware.mk",
    "content": "################################################################################\n#\n# wilink-bt-firmware\n#\n################################################################################\n\nWILINK_BT_FIRMWARE_VERSION = 43fca73c6a98c63fcb98f82af5bf83761778e005\nWILINK_BT_FIRMWARE_SITE = git://git.ti.com/ti-bt/service-packs.git\nWILINK_BT_FIRMWARE_SITE_METHOD = git\nWILINK_BT_FIRMWARE_LICENSE = PROPRIETARY\nWILINK_BT_FIRMWARE_LICENSE_FILES = LICENSE\n\ndefine WILINK_BT_FIRMWARE_INSTALL_TARGET_CMDS\n\tmkdir -p $(TARGET_DIR)/lib/firmware/ti-connectivity\n\tcp $(@D)/initscripts/TIInit_*.bts $(TARGET_DIR)/lib/firmware/ti-connectivity\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/wine/Config.in",
    "content": "config BR2_PACKAGE_WINE_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\t# Wine only builds on certain architectures\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\" || \\\n\t           BR2_HOSTARCH = \"powerpc\" || BR2_HOSTARCH = \"arm\" || \\\n\t           BR2_HOSTARCH = \"aarch64\"\n\t# Wine has much CPU specific code and mostly makes sense on x86\n\tdepends on BR2_i386\n\nconfig BR2_PACKAGE_WINE\n\tbool \"wine\"\n\tdepends on BR2_PACKAGE_WINE_ARCH_SUPPORTS\n\t# Wine unconditionally builds shared libraries\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Wine is a compatibility layer capable of running Windows\n\t  applications on Linux. Instead of simulating internal\n\t  Windows logic like a virtual machine or emulator, Wine\n\t  translates Windows API calls into POSIX calls on-the-fly,\n\t  eliminating the performance and memory penalties of other\n\t  methods.\n\n\t  http://www.winehq.org\n\ncomment \"wine needs a toolchain w/ dynamic library\"\n\tdepends on BR2_PACKAGE_WINE_ARCH_SUPPORTS\n\tdepends on BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/wine/wine.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  b493065f2f83ee429c62e2ec58698a3cf63ef78722e1b20765823152e8582c56  wine-6.0.tar.xz\n# Locally calculated\nsha256  e237fa56668030e928551ddd60f05df5fe957f75eab874bbd017e085ed722e7c  COPYING.LIB\nsha256  111398f1be25b1ae1f124512fe61569e6b4555408e2feb9bc82f9fe57d39b302  LICENSE\n"
  },
  {
    "path": "package/wine/wine.mk",
    "content": "################################################################################\n#\n# wine\n#\n################################################################################\n\nWINE_VERSION = 6.0\nWINE_SOURCE = wine-$(WINE_VERSION).tar.xz\nWINE_SITE = https://dl.winehq.org/wine/source/6.0\nWINE_LICENSE = LGPL-2.1+\nWINE_LICENSE_FILES = COPYING.LIB LICENSE\nWINE_CPE_ID_VENDOR = winehq\nWINE_SELINUX_MODULES = wine\nWINE_DEPENDENCIES = host-bison host-flex host-wine\nHOST_WINE_DEPENDENCIES = host-bison host-flex\n\n# Wine needs its own directory structure and tools for cross compiling\nWINE_CONF_OPTS = \\\n\t--with-wine-tools=../host-wine-$(WINE_VERSION) \\\n\t--disable-tests \\\n\t--disable-win64 \\\n\t--without-capi \\\n\t--without-coreaudio \\\n\t--without-faudio \\\n\t--without-gettext \\\n\t--without-gettextpo \\\n\t--without-gphoto \\\n\t--without-gsm \\\n\t--without-hal \\\n\t--without-mingw \\\n\t--without-opencl \\\n\t--without-oss \\\n\t--without-vkd3d \\\n\t--without-vulkan\n\n# Wine uses a wrapper around gcc, and uses the value of --host to\n# construct the filename of the gcc to call.  But for external\n# toolchains, the GNU_TARGET_NAME tuple that we construct from our\n# internal variables may differ from the actual gcc prefix for the\n# external toolchains. So, we have to override whatever the gcc\n# wrapper believes what the real gcc is named, and force the tuple of\n# the external toolchain, not the one we compute in GNU_TARGET_NAME.\nifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)\nWINE_CONF_OPTS += TARGETFLAGS=\"-b $(TOOLCHAIN_EXTERNAL_PREFIX)\"\nendif\n\nifeq ($(BR2_PACKAGE_ALSA_LIB)$(BR2_PACKAGE_ALSA_LIB_SEQ)$(BR2_PACKAGE_ALSA_LIB_RAWMIDI),yyy)\nWINE_CONF_OPTS += --with-alsa\nWINE_DEPENDENCIES += alsa-lib\nelse\nWINE_CONF_OPTS += --without-alsa\nendif\n\nifeq ($(BR2_PACKAGE_CUPS),y)\nWINE_CONF_OPTS += --with-cups\nWINE_DEPENDENCIES += cups\nWINE_CONF_ENV += CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config\nelse\nWINE_CONF_OPTS += --without-cups\nendif\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nWINE_CONF_OPTS += --with-dbus\nWINE_DEPENDENCIES += dbus\nelse\nWINE_CONF_OPTS += --without-dbus\nendif\n\nifeq ($(BR2_PACKAGE_FONTCONFIG),y)\nWINE_CONF_OPTS += --with-fontconfig\nWINE_DEPENDENCIES += fontconfig\nelse\nWINE_CONF_OPTS += --without-fontconfig\nendif\n\n# To support freetype in wine we also need freetype in host-wine for the cross compiling tools\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nWINE_CONF_OPTS += --with-freetype\nHOST_WINE_CONF_OPTS += --with-freetype\nWINE_DEPENDENCIES += freetype\nHOST_WINE_DEPENDENCIES += host-freetype\nWINE_CONF_ENV += FREETYPE_CONFIG=$(STAGING_DIR)/usr/bin/freetype-config\nelse\nWINE_CONF_OPTS += --without-freetype\nHOST_WINE_CONF_OPTS += --without-freetype\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nWINE_CONF_OPTS += --with-gnutls\nWINE_DEPENDENCIES += gnutls\nelse\nWINE_CONF_OPTS += --without-gnutls\nendif\n\nifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y)\nWINE_CONF_OPTS += --with-gstreamer\nWINE_DEPENDENCIES += gst1-plugins-base\nelse\nWINE_CONF_OPTS += --without-gstreamer\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nWINE_CONF_OPTS += --with-jpeg\nWINE_DEPENDENCIES += jpeg\nelse\nWINE_CONF_OPTS += --without-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_LCMS2),y)\nWINE_CONF_OPTS += --with-cms\nWINE_DEPENDENCIES += lcms2\nelse\nWINE_CONF_OPTS += --without-cms\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBGL),y)\nWINE_CONF_OPTS += --with-opengl\nWINE_DEPENDENCIES += libgl\nelse\nWINE_CONF_OPTS += --without-opengl\nendif\n\nifeq ($(BR2_PACKAGE_LIBKRB5),y)\nWINE_CONF_OPTS += --with-krb5\nWINE_DEPENDENCIES += libkrb5\nelse\nWINE_CONF_OPTS += --without-krb5\nendif\n\nifeq ($(BR2_PACKAGE_LIBPCAP),y)\nWINE_CONF_OPTS += --with-pcap\nWINE_DEPENDENCIES += libpcap\nelse\nWINE_CONF_OPTS += --without-pcap\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nWINE_CONF_OPTS += --with-png\nWINE_DEPENDENCIES += libpng\nelse\nWINE_CONF_OPTS += --without-png\nendif\n\nifeq ($(BR2_PACKAGE_LIBUSB),y)\nWINE_CONF_OPTS += --with-usb\nWINE_DEPENDENCIES += libusb\nelse\nWINE_CONF_OPTS += --without-usb\nendif\n\nifeq ($(BR2_PACKAGE_LIBV4L),y)\nWINE_CONF_OPTS += --with-v4l2\nWINE_DEPENDENCIES += libv4l\nelse\nWINE_CONF_OPTS += --without-v4l2\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nWINE_CONF_OPTS += --with-xml\nWINE_DEPENDENCIES += libxml2\nWINE_CONF_ENV += XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config\nelse\nWINE_CONF_OPTS += --without-xml\nendif\n\nifeq ($(BR2_PACKAGE_LIBXSLT),y)\nWINE_CONF_OPTS += --with-xslt\nWINE_DEPENDENCIES += libxslt\nWINE_CONF_ENV += XSLT_CONFIG=$(STAGING_DIR)/usr/bin/xslt-config\nelse\nWINE_CONF_OPTS += --without-xslt\nendif\n\nifeq ($(BR2_PACKAGE_MPG123),y)\nWINE_CONF_OPTS += --with-mpg123\nWINE_DEPENDENCIES += mpg123\nelse\nWINE_CONF_OPTS += --without-mpg123\nendif\n\nifeq ($(BR2_PACKAGE_OPENAL),y)\nWINE_CONF_OPTS += --with-openal\nWINE_DEPENDENCIES += openal\nelse\nWINE_CONF_OPTS += --without-openal\nendif\n\nifeq ($(BR2_PACKAGE_OPENLDAP),y)\nWINE_CONF_OPTS += --with-ldap\nWINE_DEPENDENCIES += openldap\nelse\nWINE_CONF_OPTS += --without-ldap\nendif\n\nifeq ($(BR2_PACKAGE_MESA3D_OSMESA_GALLIUM),y)\nWINE_CONF_OPTS += --with-osmesa\nWINE_DEPENDENCIES += mesa3d\nelse\nWINE_CONF_OPTS += --without-osmesa\nendif\n\nifeq ($(BR2_PACKAGE_PULSEAUDIO),y)\nWINE_CONF_OPTS += --with-pulse\nWINE_DEPENDENCIES += pulseaudio\nelse\nWINE_CONF_OPTS += --without-pulse\nendif\n\nifeq ($(BR2_PACKAGE_SAMBA4),y)\nWINE_CONF_OPTS += --with-netapi\nWINE_DEPENDENCIES += samba4\nelse\nWINE_CONF_OPTS += --without-netapi\nendif\n\nifeq ($(BR2_PACKAGE_SANE_BACKENDS),y)\nWINE_CONF_OPTS += --with-sane\nWINE_DEPENDENCIES += sane-backends\nWINE_CONF_ENV += SANE_CONFIG=$(STAGING_DIR)/usr/bin/sane-config\nelse\nWINE_CONF_OPTS += --without-sane\nendif\n\nifeq ($(BR2_PACKAGE_SDL2),y)\nWINE_CONF_OPTS += --with-sdl\nWINE_DEPENDENCIES += sdl2\nelse\nWINE_CONF_OPTS += --without-sdl\nendif\n\nifeq ($(BR2_PACKAGE_TIFF),y)\nWINE_CONF_OPTS += --with-tiff\nWINE_DEPENDENCIES += tiff\nelse\nWINE_CONF_OPTS += --without-tiff\nendif\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nWINE_CONF_OPTS += --with-udev\nWINE_DEPENDENCIES += udev\nelse\nWINE_CONF_OPTS += --without-udev\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)\nWINE_CONF_OPTS += --with-x\nWINE_DEPENDENCIES += xlib_libX11\nelse\nWINE_CONF_OPTS += --without-x\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y)\nWINE_CONF_OPTS += --with-xcomposite\nWINE_DEPENDENCIES += xlib_libXcomposite\nelse\nWINE_CONF_OPTS += --without-xcomposite\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y)\nWINE_CONF_OPTS += --with-xcursor\nWINE_DEPENDENCIES += xlib_libXcursor\nelse\nWINE_CONF_OPTS += --without-xcursor\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXEXT),y)\nWINE_CONF_OPTS += --with-xshape --with-xshm\nWINE_DEPENDENCIES += xlib_libXext\nelse\nWINE_CONF_OPTS += --without-xshape --without-xshm\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXI),y)\nWINE_CONF_OPTS += --with-xinput --with-xinput2\nWINE_DEPENDENCIES += xlib_libXi\nelse\nWINE_CONF_OPTS += --without-xinput --without-xinput2\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nWINE_CONF_OPTS += --with-xinerama\nWINE_DEPENDENCIES += xlib_libXinerama\nelse\nWINE_CONF_OPTS += --without-xinerama\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)\nWINE_CONF_OPTS += --with-xrandr\nWINE_DEPENDENCIES += xlib_libXrandr\nelse\nWINE_CONF_OPTS += --without-xrandr\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y)\nWINE_CONF_OPTS += --with-xrender\nWINE_DEPENDENCIES += xlib_libXrender\nelse\nWINE_CONF_OPTS += --without-xrender\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y)\nWINE_CONF_OPTS += --with-xxf86vm\nWINE_DEPENDENCIES += xlib_libXxf86vm\nelse\nWINE_CONF_OPTS += --without-xxf86vm\nendif\n\n# host-gettext is essential for .po file support in host-wine wrc\nifeq ($(BR2_SYSTEM_ENABLE_NLS),y)\nHOST_WINE_DEPENDENCIES += host-gettext\nHOST_WINE_CONF_OPTS += --with-gettext --with-gettextpo\nelse\nHOST_WINE_CONF_OPTS += --without-gettext --without-gettextpo\nendif\n\n# Wine needs to enable 64-bit build tools on 64-bit host\nifeq ($(HOSTARCH),x86_64)\nHOST_WINE_CONF_OPTS += --enable-win64\nendif\n\n# Wine only needs the host tools to be built, so cut-down the\n# build time by building just what we need.\nHOST_WINE_TOOLS = \\\n\ttools \\\n\ttools/sfnt2fon \\\n\ttools/widl \\\n\ttools/winebuild \\\n\ttools/winegcc \\\n\ttools/wmc \\\n\ttools/wrc\n\ndefine HOST_WINE_BUILD_CMDS\n\t$(foreach t, $(HOST_WINE_TOOLS),\n\t\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/$(t)\n\t)\nendef\n\n# Wine only needs its host variant to be built, not that it is\n# installed, as it uses the tools from the build directory. But\n# we have no way in Buildroot to state that a host package should\n# not be installed. So, just provide an noop install command.\ndefine HOST_WINE_INSTALL_CMDS\n\t:\nendef\n\n# We are focused on the cross compiling tools, disable everything else\nHOST_WINE_CONF_OPTS += \\\n\t--disable-tests \\\n\t--disable-win16 \\\n\t--without-alsa \\\n\t--without-capi \\\n\t--without-cms \\\n\t--without-coreaudio \\\n\t--without-faudio \\\n\t--without-cups \\\n\t--without-dbus \\\n\t--without-fontconfig \\\n\t--without-gphoto \\\n\t--without-gnutls \\\n\t--without-gsm \\\n\t--without-gssapi \\\n\t--without-gstreamer \\\n\t--without-hal \\\n\t--without-jpeg \\\n\t--without-krb5 \\\n\t--without-ldap \\\n\t--without-mingw \\\n\t--without-mpg123 \\\n\t--without-netapi \\\n\t--without-openal \\\n\t--without-opencl \\\n\t--without-opengl \\\n\t--without-osmesa \\\n\t--without-oss \\\n\t--without-pcap \\\n\t--without-pulse \\\n\t--without-png \\\n\t--without-sane \\\n\t--without-sdl \\\n\t--without-tiff \\\n\t--without-usb \\\n\t--without-v4l2 \\\n\t--without-vkd3d \\\n\t--without-vulkan \\\n\t--without-x \\\n\t--without-xcomposite \\\n\t--without-xcursor \\\n\t--without-xinerama \\\n\t--without-xinput \\\n\t--without-xinput2 \\\n\t--without-xml \\\n\t--without-xrandr \\\n\t--without-xrender \\\n\t--without-xshape \\\n\t--without-xshm \\\n\t--without-xslt \\\n\t--without-xxf86vm\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/wipe/0001-musl.patch",
    "content": "Fix musl build\n\nIn file included from main.c:46:0:\nrand.h:31:9: error: unknown type name ‘u_int32_t’\n typedef u_int32_t u_rand_t;\n         ^\n<builtin>: recipe for target 'main.o' failed\n\nPatch sent upstream: https://sourceforge.net/p/wipe/patches/4/\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr wipe-2.3.1.org/rand.h wipe-2.3.1/rand.h\n--- wipe-2.3.1.org/rand.h\t2003-12-03 04:01:02.000000000 +0100\n+++ wipe-2.3.1/rand.h\t2016-01-31 21:39:54.000000000 +0100\n@@ -22,10 +22,9 @@\n \n #ifdef HAVE_STDINT_H\n # include \"stdint.h\"\n-#else\n-# ifndef LINUX\n+#endif\n+#if !defined(u_int32_t)\n #  define u_int32_t uint32_t\n-# endif\n #endif\n \n typedef u_int32_t u_rand_t;\n"
  },
  {
    "path": "package/wipe/Config.in",
    "content": "config BR2_PACKAGE_WIPE\n\tbool \"wipe\"\n\thelp\n\t  Wipe is a little command for securely erasing files\n\t  from magnetic media. It compiles under various unix platforms.\n\n\t  http://wipe.sourceforge.net\n"
  },
  {
    "path": "package/wipe/wipe.hash",
    "content": "# Locally computed:\nsha256  463916370f9b35bb34419c2c0ae3dc4c0a471db32e8595afa1d14c0337b61aa0  wipe-2.3.1.tar.bz2\nsha256  890cd89006bb57ce95b460e867c7bcc81d30cbc23067a9be4644bdac6882bc14  LICENSE\n"
  },
  {
    "path": "package/wipe/wipe.mk",
    "content": "################################################################################\n#\n# wipe\n#\n################################################################################\n\nWIPE_VERSION = 2.3.1\nWIPE_SITE = http://downloads.sourceforge.net/project/wipe/wipe/$(WIPE_VERSION)\nWIPE_SOURCE = wipe-$(WIPE_VERSION).tar.bz2\nWIPE_LICENSE = GPL-2.0+\nWIPE_LICENSE_FILES = LICENSE\n\ndefine WIPE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/wipe $(TARGET_DIR)/usr/bin/wipe\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/wireguard-linux-compat/Config.in",
    "content": "config BR2_PACKAGE_WIREGUARD_LINUX_COMPAT\n\tbool \"wireguard linux-compat\"\n\tdepends on BR2_LINUX_KERNEL\n\t# kernel module requires 3.10+\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n\t# kernel module in upstream linux since 5.6\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6\n\thelp\n\t  WireGuard is an extremely simple yet fast and modern VPN\n\t  that utilizes state-of-the-art cryptography. It aims to be\n\t  faster, simpler, leaner, and more useful than IPSec, while\n\t  avoiding the massive headache. It intends to be considerably\n\t  more performant than OpenVPN. WireGuard is designed as a\n\t  general purpose VPN for running on embedded interfaces and\n\t  super computers alike, fit for many different\n\t  circumstances.\n\n\t  Support for WireGuard is included in Linux 5.6+. This\n\t  package provides a backport of the kernel support for older\n\t  kernels.\n\n\t  https://www.wireguard.com\n\ncomment \"wireguard-linux-compat needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\ncomment \"wireguard-linux-compat needs a toolchain w/ headers >= 3.10\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n"
  },
  {
    "path": "package/wireguard-linux-compat/wireguard-linux-compat.hash",
    "content": "# https://lists.zx2c4.com/pipermail/wireguard/2021-June/006781.html\nsha256  3f5d990006e6eabfd692d925ec314fff2c5ee7dcdb869a6510d579acfdd84ec0  wireguard-linux-compat-1.0.20210606.tar.xz\n# Locally calculated\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/wireguard-linux-compat/wireguard-linux-compat.mk",
    "content": "################################################################################\n#\n# wireguard\n#\n################################################################################\n\nWIREGUARD_LINUX_COMPAT_VERSION = 1.0.20210606\nWIREGUARD_LINUX_COMPAT_SITE = https://git.zx2c4.com/wireguard-linux-compat/snapshot\nWIREGUARD_LINUX_COMPAT_SOURCE = wireguard-linux-compat-$(WIREGUARD_LINUX_COMPAT_VERSION).tar.xz\nWIREGUARD_LINUX_COMPAT_LICENSE = GPL-2.0\nWIREGUARD_LINUX_COMPAT_LICENSE_FILES = COPYING\nWIREGUARD_LINUX_COMPAT_MODULE_SUBDIRS = src\n\ndefine WIREGUARD_LINUX_COMPAT_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_INET)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NET)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NET_FOU)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_MANAGER)\nendef\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/wireguard-tools/Config.in",
    "content": "config BR2_PACKAGE_WIREGUARD_TOOLS\n\tbool \"wireguard tools\"\n\t# kernel module requires 3.10+, userspace makes no sense without it\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n\thelp\n\t  WireGuard is an extremely simple yet fast and modern VPN\n\t  that utilizes state-of-the-art cryptography. It aims to be\n\t  faster, simpler, leaner, and more useful than IPSec, while\n\t  avoiding the massive headache. It intends to be considerably\n\t  more performant than OpenVPN. WireGuard is designed as a\n\t  general purpose VPN for running on embedded interfaces and\n\t  super computers alike, fit for many different\n\t  circumstances.\n\n\t  This package provides the userspace tooling to configure\n\t  WireGuard tunnels.\n\n\t  https://www.wireguard.com\n\ncomment \"wireguard-tools needs a toolchain w/ headers >= 3.10\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n"
  },
  {
    "path": "package/wireguard-tools/wireguard-tools.hash",
    "content": "# https://lists.zx2c4.com/pipermail/wireguard/2021-September/007049.html\nsha256  97ff31489217bb265b7ae850d3d0f335ab07d2652ba1feec88b734bc96bd05ac  wireguard-tools-1.0.20210914.tar.xz\n# Locally calculated\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/wireguard-tools/wireguard-tools.mk",
    "content": "################################################################################\n#\n# wireguard-tools\n#\n################################################################################\n\nWIREGUARD_TOOLS_VERSION = 1.0.20210914\nWIREGUARD_TOOLS_SITE = https://git.zx2c4.com/wireguard-tools/snapshot\nWIREGUARD_TOOLS_SOURCE = wireguard-tools-$(WIREGUARD_TOOLS_VERSION).tar.xz\nWIREGUARD_TOOLS_LICENSE = GPL-2.0\nWIREGUARD_TOOLS_LICENSE_FILES = COPYING\nWIREGUARD_TOOLS_SELINUX_MODULES = wireguard\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nWIREGUARD_TOOLS_MAKE_OPTS += WITH_SYSTEMDUNITS=yes\nWIREGUARD_TOOLS_DEPENDENCIES += host-pkgconf\nelse\nWIREGUARD_TOOLS_MAKE_OPTS += WITH_SYSTEMDUNITS=no\nendif\n\nifeq ($(BR2_PACKAGE_BASH),y)\nWIREGUARD_TOOLS_MAKE_OPTS += WITH_BASHCOMPLETION=yes WITH_WGQUICK=yes\nelse\nWIREGUARD_TOOLS_MAKE_OPTS += WITH_BASHCOMPLETION=no WITH_WGQUICK=no\nendif\n\ndefine WIREGUARD_TOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(WIREGUARD_TOOLS_MAKE_OPTS) \\\n\t\t-C $(@D)/src\nendef\n\ndefine WIREGUARD_TOOLS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(WIREGUARD_TOOLS_MAKE_OPTS) \\\n\t\t-C $(@D)/src install DESTDIR=$(TARGET_DIR)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/wireless-regdb/Config.in",
    "content": "config BR2_PACKAGE_WIRELESS_REGDB\n\tbool \"wireless-regdb\"\n\thelp\n\t  Wireless regulatory database.\n\n\t  Wireless regulatory database. The database lists the\n\t  allowed radio frequencies for each local jurisdiction.\n\n\t  Since linux-4.15 the kernel supports loading the files\n\t  regulatory.db/regulatory.db.p7s directly from the\n\t  /lib/firmware directory, for earlier versions the crda helper\n\t  application is needed.\n\n\t  https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb\n"
  },
  {
    "path": "package/wireless-regdb/wireless-regdb.hash",
    "content": "# From https://www.kernel.org/pub/software/network/wireless-regdb/sha256sums.asc\nsha256  cff370c410d1e6d316ae0a7fa8ac6278fdf1efca5d3d664aca7cfd2aafa54446  wireless-regdb-2021.08.28.tar.xz\n# Locally computed\nsha256  678b0df753c86198fc496d1f1033429bbd57f101472132ee7eaaf9f5e0a7fae1  LICENSE\n"
  },
  {
    "path": "package/wireless-regdb/wireless-regdb.mk",
    "content": "################################################################################\n#\n# wireless-regdb\n#\n################################################################################\n\nWIRELESS_REGDB_VERSION = 2021.08.28\nWIRELESS_REGDB_SOURCE = wireless-regdb-$(WIRELESS_REGDB_VERSION).tar.xz\nWIRELESS_REGDB_SITE = $(BR2_KERNEL_MIRROR)/software/network/wireless-regdb\nWIRELESS_REGDB_LICENSE = ISC\nWIRELESS_REGDB_LICENSE_FILES = LICENSE\nWIRELESS_REGDB_CPE_ID_VENDOR = kernel\n\nifeq ($(BR2_PACKAGE_CRDA),y)\ndefine WIRELESS_REGDB_INSTALL_CRDA_TARGET_CMDS\n\t$(INSTALL) -m 644 -D -T $(@D)/regulatory.bin \\\n\t\t$(TARGET_DIR)/usr/lib/crda/regulatory.bin\n\t$(INSTALL) -m 644 -D -T $(@D)/sforshee.key.pub.pem \\\n\t\t$(TARGET_DIR)/etc/wireless-regdb/pubkeys/sforshee.key.pub.pem\nendef\nendif\n\ndefine WIRELESS_REGDB_INSTALL_TARGET_CMDS\n\t$(WIRELESS_REGDB_INSTALL_CRDA_TARGET_CMDS)\n\t$(INSTALL) -m 644 -D -T $(@D)/regulatory.db \\\n\t\t$(TARGET_DIR)/lib/firmware/regulatory.db\n\t$(INSTALL) -m 644 -D -T $(@D)/regulatory.db.p7s \\\n\t\t$(TARGET_DIR)/lib/firmware/regulatory.db.p7s\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/wireless_tools/0001-remove-bzero.patch",
    "content": "Switch all instances of deprecated bzero() to memset() equivalent.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\ndiff -Nura wireless_tools.30/ifrename.c wireless_tools.30-bzero/ifrename.c\n--- wireless_tools.30/ifrename.c\t2007-10-16 20:12:41.000000000 -0300\n+++ wireless_tools.30-bzero/ifrename.c\t2014-06-11 09:52:59.623741119 -0300\n@@ -541,7 +541,7 @@\n \t    victimname, autoname);\n \n   /* Prepare request */\n-  bzero(&ifr, sizeof(struct ifreq));\n+  memset(&ifr, 0, sizeof(struct ifreq));\n   strncpy(ifr.ifr_name, victimname, IFNAMSIZ); \n   strncpy(ifr.ifr_newname, autoname, IFNAMSIZ); \n \n@@ -587,7 +587,7 @@\n     }\n \n   /* Prepare request */\n-  bzero(&ifr, sizeof(struct ifreq));\n+  memset(&ifr, 0, sizeof(struct ifreq));\n   strncpy(ifr.ifr_name, oldname, IFNAMSIZ); \n   strncpy(ifr.ifr_newname, newname, IFNAMSIZ); \n \n@@ -747,7 +747,7 @@\n   int\t\ti;\n \n   /* Get MAC address */\n-  bzero(&ifr, sizeof(struct ifreq));\n+  memset(&ifr, 0, sizeof(struct ifreq));\n   strncpy(ifr.ifr_name, ifname, IFNAMSIZ);\n   ret = ioctl(skfd, SIOCGIFHWADDR, &ifr);\n   if(ret < 0)\n@@ -1040,8 +1040,8 @@\n     return(0);\n \n   /* Prepare request */\n-  bzero(&ifr, sizeof(struct ifreq));\n-  bzero(&drvinfo, sizeof(struct ethtool_drvinfo));\n+  memset(&ifr, 0, sizeof(struct ifreq));\n+  memset(&drvinfo, 0, sizeof(struct ethtool_drvinfo));\n   strncpy(ifr.ifr_name, ifname, IFNAMSIZ);\n   drvinfo.cmd = ETHTOOL_GDRVINFO;\n   ifr.ifr_data = (caddr_t) &drvinfo;\n@@ -1206,8 +1206,8 @@\n     return(0);\n \n   /* Prepare request */\n-  bzero(&ifr, sizeof(struct ifreq));\n-  bzero(&map, sizeof(struct ifmap));\n+  memset(&ifr, 0, sizeof(struct ifreq));\n+  memset(&map, 0, sizeof(struct ifmap));\n   strncpy(ifr.ifr_name, ifname, IFNAMSIZ);\n \n   /* Do it */\n@@ -2050,7 +2050,7 @@\n   struct add_extra\textrainfo;\n \n   /* Reset the list of filters */\n-  bzero(selector_active, sizeof(selector_active));\n+  memset(selector_active, 0, sizeof(selector_active));\n \n   /* Check filename */\n   if(!strcmp(filename, \"-\"))\ndiff -Nura wireless_tools.30/iwlib.c wireless_tools.30-bzero/iwlib.c\n--- wireless_tools.30/iwlib.c\t2009-11-23 23:28:59.000000000 -0300\n+++ wireless_tools.30-bzero/iwlib.c\t2014-06-11 09:50:20.611371384 -0300\n@@ -484,7 +484,7 @@\n   union iw_range_raw *\trange_raw;\n \n   /* Cleanup */\n-  bzero(buffer, sizeof(buffer));\n+  memset(buffer, 0, sizeof(buffer));\n \n   wrq.u.data.pointer = (caddr_t) buffer;\n   wrq.u.data.length = sizeof(buffer);\n@@ -513,7 +513,7 @@\n   else\n     {\n       /* Zero unknown fields */\n-      bzero((char *) range, sizeof(struct iw_range));\n+      memset((char *) range, 0, sizeof(struct iw_range));\n \n       /* Initial part unmoved */\n       memcpy((char *) range,\n@@ -3064,7 +3064,7 @@\n \toldwscan->next = wscan;\n \n       /* Reset it */\n-      bzero(wscan, sizeof(struct wireless_scan));\n+      memset(wscan, 0, sizeof(struct wireless_scan));\n \n       /* Save cell identifier */\n       wscan->has_ap_addr = 1;\n"
  },
  {
    "path": "package/wireless_tools/Config.in",
    "content": "config BR2_PACKAGE_WIRELESS_TOOLS\n\tbool \"wireless tools\"\n\thelp\n\t  A collection of tools to configure wireless lan cards.\n\n\t  https://hewlettpackard.github.io/wireless-tools/\n\nif BR2_PACKAGE_WIRELESS_TOOLS\n\nconfig BR2_PACKAGE_WIRELESS_TOOLS_LIB\n\tbool \"Install shared library\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  The shared library of wireless tools\n\nendif\n"
  },
  {
    "path": "package/wireless_tools/wireless_tools.hash",
    "content": "# locally computed hash\nsha256 abd9c5c98abf1fdd11892ac2f8a56737544fe101e1be27c6241a564948f34c63 wireless_tools.30.pre9.tar.gz\nsha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING\n"
  },
  {
    "path": "package/wireless_tools/wireless_tools.mk",
    "content": "################################################################################\n#\n# wireless_tools\n#\n################################################################################\n\nWIRELESS_TOOLS_VERSION_MAJOR = 30\nWIRELESS_TOOLS_VERSION = $(WIRELESS_TOOLS_VERSION_MAJOR).pre9\nWIRELESS_TOOLS_SITE = https://hewlettpackard.github.io/wireless-tools\nWIRELESS_TOOLS_SOURCE = wireless_tools.$(WIRELESS_TOOLS_VERSION).tar.gz\nWIRELESS_TOOLS_LICENSE = GPL-2.0\nWIRELESS_TOOLS_LICENSE_FILES = COPYING\nWIRELESS_TOOLS_CPE_ID_VERSION = $(WIRELESS_TOOLS_VERSION_MAJOR)\nWIRELESS_TOOLS_CPE_ID_UPDATE = pre9\nWIRELESS_TOOLS_INSTALL_STAGING = YES\n\nWIRELESS_TOOLS_BUILD_TARGETS = iwmulticall\nWIRELESS_TOOLS_INSTALL_TARGETS = install-iwmulticall\n\nifeq ($(BR2_PACKAGE_WIRELESS_TOOLS_LIB),y)\nWIRELESS_TOOLS_BUILD_TARGETS += libiw.so.$(WIRELESS_TOOLS_VERSION_MAJOR)\nWIRELESS_TOOLS_INSTALL_TARGETS += install-dynamic\n\ndefine WIRELESS_TOOLS_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=\"$(STAGING_DIR)\" LDCONFIG=/bin/true \\\n\t\tinstall-dynamic\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=\"$(STAGING_DIR)/usr\" install-hdr\nendef\n\nendif\n\ndefine WIRELESS_TOOLS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC=\"$(TARGET_CC)\" CFLAGS=\"$(TARGET_CFLAGS)\" \\\n\t\t$(WIRELESS_TOOLS_BUILD_TARGETS)\nendef\n\ndefine WIRELESS_TOOLS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=\"$(TARGET_DIR)\" LDCONFIG=/bin/true \\\n\t\t$(WIRELESS_TOOLS_INSTALL_TARGETS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/wireplumber/Config.in",
    "content": "config BR2_PACKAGE_WIREPLUMBER\n\tbool \"wireplumber\"\n\tdepends on BR2_PACKAGE_PIPEWIRE\n\tdepends on BR2_PACKAGE_LUA_5_3 || BR2_PACKAGE_LUA_5_4\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  WirePlumber is a modular session / policy manager for\n\t  PipeWire and a GObject-based high-level library that\n\t  wraps PipeWire’s API, providing convenience for writing\n\t  the daemon’s modules as well as external tools for\n\t  managing PipeWire.\n\n\t  https://pipewire.pages.freedesktop.org/wireplumber/\n\ncomment \"wireplumber needs a toolchain w/ wchar, threads and Lua >= 5.3\"\n\tdepends on BR2_PACKAGE_PIPEWIRE\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t(!BR2_PACKAGE_LUA_5_3 && !BR2_PACKAGE_LUA_5_4)\n"
  },
  {
    "path": "package/wireplumber/wireplumber.hash",
    "content": "# Locally calculated\nsha256  41f174eaae5a630e195001fdd580918fa5143a71edceb050b320f85a8e65e53b  wireplumber-0.4.2.tar.bz2\nsha256  ff2eb9af5b05d92ac3a38cffcad27582ef555a31ff1781e1c1d4e087f77c9c81  LICENSE\n"
  },
  {
    "path": "package/wireplumber/wireplumber.mk",
    "content": "################################################################################\n#\n# wireplumber\n#\n################################################################################\n\nWIREPLUMBER_VERSION = 0.4.2\nWIREPLUMBER_SOURCE = wireplumber-$(WIREPLUMBER_VERSION).tar.bz2\nWIREPLUMBER_SITE = https://gitlab.freedesktop.org/pipewire/wireplumber/-/archive/$(WIREPLUMBER_VERSION)\nWIREPLUMBER_LICENSE = MIT\nWIREPLUMBER_LICENSE_FILES = LICENSE\nWIREPLUMBER_DEPENDENCIES = host-pkgconf dbus pipewire libglib2 lua\n\nWIREPLUMBER_CONF_OPTS = \\\n\t-Ddoc=disabled \\\n\t-Dsystem-lua=true \\\n\t-Dsystem-lua-version=\n\nifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)\nWIREPLUMBER_DEPENDENCIES += gobject-introspection\nWIREPLUMBER_CONF_OPTS += -Dintrospection=enabled\nelse\nWIREPLUMBER_CONF_OPTS += -Dintrospection=disabled\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nWIREPLUMBER_DEPENDENCIES += systemd\nWIREPLUMBER_CONF_OPTS += \\\n\t-Dsystemd=enabled \\\n\t-Dsystemd-system-service=true \\\n\t-Dsystemd-user-service=true\nelse\nWIREPLUMBER_CONF_OPTS += \\\n\t-Dsystemd=disabled \\\n\t-Dsystemd-system-service=false \\\n\t-Dsystemd-user-service=false\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/wireshark/0001-cmake-lemon-wipe-CMAKE_-EXE_LINKER_FLAGS-SYSROOT-if-.patch",
    "content": "From 33270f56477542dedf978e660cf8d08464f28797 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 26 Nov 2021 17:45:23 +0100\nSubject: [PATCH] cmake: lemon: wipe CMAKE_{EXE_LINKER_FLAGS,SYSROOT} if needed\n\nWipe CMAKE_{EXE_LINKER_FLAGS,SYSROOT} when LEMON_C_COMPILER is set to\navoid a build failure when cross-compiling (e.g. with buildroot)\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.com/wireshark/wireshark/-/merge_requests/5224]\n---\n tools/lemon/CMakeLists.txt | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/tools/lemon/CMakeLists.txt b/tools/lemon/CMakeLists.txt\nindex 8742aa9fc9..7a9263fe0d 100644\n--- a/tools/lemon/CMakeLists.txt\n+++ b/tools/lemon/CMakeLists.txt\n@@ -12,6 +12,8 @@ add_executable(lemon lemon.c)\n if(DEFINED LEMON_C_COMPILER)\n \tset(CMAKE_C_COMPILER \"${LEMON_C_COMPILER}\")\n \tset(CMAKE_C_FLAGS \"\")\n+\tset(CMAKE_EXE_LINKER_FLAGS \"\")\n+\tset(CMAKE_SYSROOT \"\")\n endif()\n \n # To keep lemon.c as close to upstream as possible, deliberately ignore\n-- \n2.33.0\n\n"
  },
  {
    "path": "package/wireshark/Config.in",
    "content": "config BR2_PACKAGE_WIRESHARK\n\tbool \"wireshark\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt -> libgpg-error\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU # fork(), glib2\n\tdepends on BR2_USE_WCHAR # glib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # glib2\n\tselect BR2_PACKAGE_C_ARES\n\tselect BR2_PACKAGE_LIBPCAP\n\tselect BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_SPEEXDSP\n\thelp\n\t  Network traffic sniffer and protocol decoder.\n\n\t  https://www.wireshark.org\n\nif BR2_PACKAGE_WIRESHARK\n\nconfig BR2_PACKAGE_WIRESHARK_GUI\n\tbool \"Qt5 GUI\"\n\tdefault y\n\tdepends on BR2_INSTALL_LIBSTDCPP # qt5\n\tdepends on BR2_HOST_GCC_AT_LEAST_5 # qt5\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # qt5\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # qt5\n\tdepends on !BR2_arc # qt5\n\tdepends on BR2_PACKAGE_HAS_UDEV # qt5 input\n\tselect BR2_PACKAGE_QT5\n\tselect BR2_PACKAGE_QT5BASE_FONTCONFIG # runtime\n\tselect BR2_PACKAGE_QT5BASE_PNG # runtime\n\tselect BR2_PACKAGE_QT5BASE_WIDGETS\n\tselect BR2_PACKAGE_QT5MULTIMEDIA\n\tselect BR2_PACKAGE_QT5SVG\n\tselect BR2_PACKAGE_QT5TOOLS\n\tselect BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS\n\thelp\n\t  Enable Qt5 GUI\n\ncomment \"Qt5 GUI needs a udev /dev management and a toolchain w/ C++, NPTL, host gcc >= 5.0, gcc >= 5.0\"\n\tdepends on !BR2_arc\n\tdepends on !BR2_PACKAGE_HAS_UDEV || !BR2_INSTALL_LIBSTDCPP || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_5\n\nendif # BR2_PACKAGE_WIRESHARK\n\ncomment \"wireshark needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n"
  },
  {
    "path": "package/wireshark/wireshark.hash",
    "content": "# From https://www.wireshark.org/download/src/all-versions/SIGNATURES-3.4.10.txt\nsha1  63839abd94d3ae376f860e2d2969777680106578  wireshark-3.4.10.tar.xz\nsha256  8aa7ef4a44ae62bb8db463cf761e2cc03b97305e0e77ed5be53fa83729187cef  wireshark-3.4.10.tar.xz\n\n# Locally calculated\nsha256  7cdbed2b697efaa45576a033f1ac0e73cd045644a91c79bbf41d4a7d81dac7bf  COPYING\n"
  },
  {
    "path": "package/wireshark/wireshark.mk",
    "content": "################################################################################\n#\n# wireshark\n#\n################################################################################\n\nWIRESHARK_VERSION = 3.4.10\nWIRESHARK_SOURCE = wireshark-$(WIRESHARK_VERSION).tar.xz\nWIRESHARK_SITE = https://www.wireshark.org/download/src/all-versions\nWIRESHARK_LICENSE = wireshark license\nWIRESHARK_LICENSE_FILES = COPYING\nWIRESHARK_CPE_ID_VENDOR = wireshark\nWIRESHARK_SELINUX_MODULES = wireshark\nWIRESHARK_DEPENDENCIES = \\\n\tc-ares \\\n\thost-pkgconf \\\n\thost-python3 \\\n\tlibgcrypt \\\n\tlibglib2 \\\n\tlibpcap \\\n\tspeexdsp\n\nWIRESHARK_CONF_OPTS = \\\n\t-DDISABLE_WERROR=ON \\\n\t-DENABLE_ILBC=OFF \\\n\t-DENABLE_PCAP=ON \\\n\t-DENABLE_SMI=OFF \\\n\t-DLEMON_C_COMPILER=$(HOSTCC)\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nWIRESHARK_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic\nendif\n\nifeq ($(BR2_GCC_ENABLE_LTO),y)\nWIRESHARK_CONF_OPTS += -DENABLE_LTO=ON\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_LTO=OFF\nendif\n\nifeq ($(BR2_PACKAGE_WIRESHARK_GUI),y)\nWIRESHARK_CONF_OPTS += -DBUILD_wireshark=ON\nWIRESHARK_DEPENDENCIES += qt5base qt5multimedia qt5svg qt5tools\nelse\nWIRESHARK_CONF_OPTS += -DBUILD_wireshark=OFF\nendif\n\nifeq ($(BR2_PACKAGE_BCG729),y)\nWIRESHARK_CONF_OPTS += -DENABLE_BCG729=ON\nWIRESHARK_DEPENDENCIES += bcg729\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_BCG729=OFF\nendif\n\nifeq ($(BR2_PACKAGE_BROTLI),y)\nWIRESHARK_CONF_OPTS += -DENABLE_BROTLI=ON\nWIRESHARK_DEPENDENCIES += brotli\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_BROTLI=OFF\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nWIRESHARK_CONF_OPTS += -DENABLE_GNUTLS=ON\nWIRESHARK_DEPENDENCIES += gnutls\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_GNUTLS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBKRB5),y)\nWIRESHARK_CONF_OPTS += -DENABLE_KERBEROS=ON\nWIRESHARK_DEPENDENCIES += libkrb5\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_KERBEROS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBMAXMINDDB),y)\nWIRESHARK_CONF_OPTS += -DBUILD_mmdbresolve=ON\nWIRESHARK_DEPENDENCIES += libmaxminddb\nelse\nWIRESHARK_CONF_OPTS += -DBUILD_mmdbresolve=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBNL),y)\nWIRESHARK_CONF_OPTS += -DENABLE_NETLINK=ON\nWIRESHARK_DEPENDENCIES += libnl\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_NETLINK=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBSSH),y)\nWIRESHARK_CONF_OPTS += -DENABLE_LIBSSH=ON\nWIRESHARK_DEPENDENCIES += libssh\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_LIBSSH=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LIBXML2),y)\nWIRESHARK_CONF_OPTS += -DENABLE_LIBXML2=ON\nWIRESHARK_DEPENDENCIES += libxml2\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_LIBXML2=OFF\nendif\n\n# no support for lua53 yet\nifeq ($(BR2_PACKAGE_LUA_5_1),y)\nWIRESHARK_CONF_OPTS += -DENABLE_LUA=ON\nWIRESHARK_DEPENDENCIES += lua\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_LUA=OFF\nendif\n\nifeq ($(BR2_PACKAGE_LZ4),y)\nWIRESHARK_CONF_OPTS += -DENABLE_LZ4=ON\nWIRESHARK_DEPENDENCIES += lz4\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_LZ4=OFF\nendif\n\nifeq ($(BR2_PACKAGE_NGHTTP2),y)\nWIRESHARK_CONF_OPTS += -DENABLE_NGHTTP2=ON\nWIRESHARK_DEPENDENCIES += nghttp2\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_NGHTTP2=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPUS),y)\nWIRESHARK_CONF_OPTS += -DENABLE_OPUS=ON\nWIRESHARK_DEPENDENCIES += opus\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_OPUS=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SBC),y)\nWIRESHARK_CONF_OPTS += -DENABLE_SBC=ON\nWIRESHARK_DEPENDENCIES += sbc\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_SBC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SNAPPY),y)\nWIRESHARK_CONF_OPTS += -DENABLE_SNAPPY=ON\nWIRESHARK_DEPENDENCIES += snappy\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_SNAPPY=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SPANDSP),y)\nWIRESHARK_CONF_OPTS += -DENABLE_SPANDSP=ON\nWIRESHARK_DEPENDENCIES += spandsp\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_SPANDSP=OFF\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nWIRESHARK_CONF_OPTS += -DBUILD_sdjournal=ON\nWIRESHARK_DEPENDENCIES += systemd\nelse\nWIRESHARK_CONF_OPTS += -DBUILD_sdjournal=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ZSTD),y)\nWIRESHARK_CONF_OPTS += -DENABLE_ZSTD=ON\nWIRESHARK_DEPENDENCIES += zstd\nelse\nWIRESHARK_CONF_OPTS += -DENABLE_ZSTD=OFF\nendif\n\n# Disable plugins as some of them (like l16mono) can't be built\n# statically. ENABLE_STATIC=ON actually means \"disable shared library\"\n# and ENABLE_STATIC=OFF means \"enable shared library\". So for the\n# BR2_SHARED_STATIC_LIBS=y case, we want ENABLE_STATIC=OFF even if\n# that sounds counter-intuitive.\nifeq ($(BR2_STATIC_LIBS),y)\nWIRESHARK_CONF_OPTS += \\\n\t-DENABLE_PLUGINS=OFF \\\n\t-DENABLE_STATIC=ON \\\n\t-DUSE_STATIC=ON\nelse\nWIRESHARK_CONF_OPTS += \\\n\t-DENABLE_PLUGINS=ON \\\n\t-DENABLE_STATIC=OFF \\\n\t-DUSE_STATIC=OFF\nendif\n\ndefine WIRESHARK_REMOVE_DOCS\n\tfind $(TARGET_DIR)/usr/share/wireshark -name '*.txt' -print0 \\\n\t\t-o -name '*.html' -print0 | xargs -0 rm -f\nendef\n\nWIRESHARK_POST_INSTALL_TARGET_HOOKS += WIRESHARK_REMOVE_DOCS\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/wlroots/0001-Add-feature-macros-to-more-C-files-.patch",
    "content": "From cf37ba4c0bf31316b698ba23015f91903766871d Mon Sep 17 00:00:00 2001\nFrom: Paul Cercueil <paul@crapouillou.net>\nDate: Thu, 18 Feb 2021 22:31:39 +0000\nSubject: [PATCH] Add feature macros to more C files\n\nThese source files use \"struct timespec\", which is POSIX 1993.09.\n\nSigned-off-by: Paul Cercueil <paul@crapouillou.net>\n\n[Retrieved from: https://github.com/swaywm/wlroots/pull/2493]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n backend/wayland/output.c                  | 1 +\n types/data_device/wlr_data_device.c       | 1 +\n types/data_device/wlr_drag.c              | 1 +\n types/wlr_export_dmabuf_v1.c              | 1 +\n types/wlr_idle.c                          | 1 +\n types/wlr_keyboard_shortcuts_inhibit_v1.c | 1 +\n types/wlr_pointer_constraints_v1.c        | 1 +\n types/wlr_primary_selection.c             | 1 +\n types/wlr_relative_pointer_v1.c           | 1 +\n types/wlr_screencopy_v1.c                 | 1 +\n types/wlr_virtual_pointer_v1.c            | 1 +\n types/wlr_xdg_decoration_v1.c             | 1 +\n types/xdg_shell/wlr_xdg_popup.c           | 1 +\n types/xdg_shell/wlr_xdg_positioner.c      | 1 +\n types/xdg_shell/wlr_xdg_shell.c           | 1 +\n types/xdg_shell/wlr_xdg_surface.c         | 1 +\n 16 files changed, 16 insertions(+)\n\ndiff --git a/backend/wayland/output.c b/backend/wayland/output.c\nindex d5410e0d32..8ff8fa2a00 100644\n--- a/backend/wayland/output.c\n+++ b/backend/wayland/output.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdint.h>\n #include <stdio.h>\ndiff --git a/types/data_device/wlr_data_device.c b/types/data_device/wlr_data_device.c\nindex 6cd84ec0ab..beac496124 100644\n--- a/types/data_device/wlr_data_device.c\n+++ b/types/data_device/wlr_data_device.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdlib.h>\n #include <string.h>\ndiff --git a/types/data_device/wlr_drag.c b/types/data_device/wlr_drag.c\nindex 53bf4066a1..e3c1e249b4 100644\n--- a/types/data_device/wlr_drag.c\n+++ b/types/data_device/wlr_drag.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdlib.h>\n #include <string.h>\ndiff --git a/types/wlr_export_dmabuf_v1.c b/types/wlr_export_dmabuf_v1.c\nindex a8e2a4bde3..98ceae68f1 100644\n--- a/types/wlr_export_dmabuf_v1.c\n+++ b/types/wlr_export_dmabuf_v1.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdlib.h>\n #include <unistd.h>\ndiff --git a/types/wlr_idle.c b/types/wlr_idle.c\nindex 4c338931cc..80fd871fab 100644\n--- a/types/wlr_idle.c\n+++ b/types/wlr_idle.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdlib.h>\n #include <string.h>\ndiff --git a/types/wlr_keyboard_shortcuts_inhibit_v1.c b/types/wlr_keyboard_shortcuts_inhibit_v1.c\nindex fe4e64b04e..8360a9c21c 100644\n--- a/types/wlr_keyboard_shortcuts_inhibit_v1.c\n+++ b/types/wlr_keyboard_shortcuts_inhibit_v1.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdlib.h>\n #include <util/signal.h>\ndiff --git a/types/wlr_pointer_constraints_v1.c b/types/wlr_pointer_constraints_v1.c\nindex eca45984c4..f1db8e3415 100644\n--- a/types/wlr_pointer_constraints_v1.c\n+++ b/types/wlr_pointer_constraints_v1.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <limits.h>\n #include <pixman.h>\ndiff --git a/types/wlr_primary_selection.c b/types/wlr_primary_selection.c\nindex 0875462c8c..7e0e11ddaa 100644\n--- a/types/wlr_primary_selection.c\n+++ b/types/wlr_primary_selection.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdlib.h>\n #include <wlr/types/wlr_primary_selection.h>\ndiff --git a/types/wlr_relative_pointer_v1.c b/types/wlr_relative_pointer_v1.c\nindex 8613f2b91c..3f8dd8b72a 100644\n--- a/types/wlr_relative_pointer_v1.c\n+++ b/types/wlr_relative_pointer_v1.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <inttypes.h>\n #include <stdlib.h>\ndiff --git a/types/wlr_screencopy_v1.c b/types/wlr_screencopy_v1.c\nindex 6feb074274..29864c2364 100644\n--- a/types/wlr_screencopy_v1.c\n+++ b/types/wlr_screencopy_v1.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdlib.h>\n #include <drm_fourcc.h>\ndiff --git a/types/wlr_virtual_pointer_v1.c b/types/wlr_virtual_pointer_v1.c\nindex a9d1fd7bc4..5566e9e013 100644\n--- a/types/wlr_virtual_pointer_v1.c\n+++ b/types/wlr_virtual_pointer_v1.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdlib.h>\n #include <wlr/types/wlr_seat.h>\ndiff --git a/types/wlr_xdg_decoration_v1.c b/types/wlr_xdg_decoration_v1.c\nindex 544035b7b8..904474c088 100644\n--- a/types/wlr_xdg_decoration_v1.c\n+++ b/types/wlr_xdg_decoration_v1.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdbool.h>\n #include <stdlib.h>\ndiff --git a/types/xdg_shell/wlr_xdg_popup.c b/types/xdg_shell/wlr_xdg_popup.c\nindex 69b4cfe19f..05d6551fc8 100644\n--- a/types/xdg_shell/wlr_xdg_popup.c\n+++ b/types/xdg_shell/wlr_xdg_popup.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdlib.h>\n #include <string.h>\ndiff --git a/types/xdg_shell/wlr_xdg_positioner.c b/types/xdg_shell/wlr_xdg_positioner.c\nindex f88bf323b8..8881c49916 100644\n--- a/types/xdg_shell/wlr_xdg_positioner.c\n+++ b/types/xdg_shell/wlr_xdg_positioner.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdlib.h>\n #include \"types/wlr_xdg_shell.h\"\ndiff --git a/types/xdg_shell/wlr_xdg_shell.c b/types/xdg_shell/wlr_xdg_shell.c\nindex 0480d5f354..c93fe7c3fb 100644\n--- a/types/xdg_shell/wlr_xdg_shell.c\n+++ b/types/xdg_shell/wlr_xdg_shell.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdlib.h>\n #include \"types/wlr_xdg_shell.h\"\ndiff --git a/types/xdg_shell/wlr_xdg_surface.c b/types/xdg_shell/wlr_xdg_surface.c\nindex edf562abcd..c1dfbfba7e 100644\n--- a/types/xdg_shell/wlr_xdg_surface.c\n+++ b/types/xdg_shell/wlr_xdg_surface.c\n@@ -1,3 +1,4 @@\n+#define _POSIX_C_SOURCE 199309L\n #include <assert.h>\n #include <stdlib.h>\n #include <string.h>\n"
  },
  {
    "path": "package/wlroots/Config.in",
    "content": "comment \"wlroots needs udev, EGL w/ Wayland backend and OpenGL ES support\"\n\tdepends on !BR2_PACKAGE_HAS_LIBEGL || \\\n\t\t!BR2_PACKAGE_HAS_LIBEGL_WAYLAND || \\\n\t\t!BR2_PACKAGE_HAS_LIBGLES || \\\n\t\t!BR2_PACKAGE_HAS_UDEV\n\ncomment \"wlroots needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_WLROOTS\n\tbool \"wlroots\"\n\tdepends on !BR2_STATIC_LIBS # wayland\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libdrm, wayland\n\tdepends on BR2_PACKAGE_HAS_UDEV # libinput\n\tdepends on BR2_PACKAGE_HAS_LIBEGL\n\tdepends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND\n\tdepends on BR2_PACKAGE_HAS_LIBGLES\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_LIBINPUT\n\tselect BR2_PACKAGE_LIBXKBCOMMON\n\tselect BR2_PACKAGE_PIXMAN\n\tselect BR2_PACKAGE_SEATD\n\tselect BR2_PACKAGE_WAYLAND\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS\n\thelp\n\t  wlroots is a modular Wayland library for building compositors\n\t  which implements many of their common features.\n\n\t  https://github.com/swaywm/wlroots\n\nif BR2_PACKAGE_WLROOTS\n\nconfig BR2_PACKAGE_WLROOTS_X11\n\tbool \"X11 backend\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_LIBXCB\n\tselect BR2_PACKAGE_XCB_UTIL_RENDERUTIL\n\tselect BR2_PACKAGE_XCB_UTIL_WM\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  Support Wayland sessions nested inside a X11 window\n\nendif\n"
  },
  {
    "path": "package/wlroots/wlroots.hash",
    "content": "# Generated locally, after checking https://github.com/swaywm/wlroots/releases/download/0.14.1/wlroots-0.14.1.tar.gz.sig\nsha256  448a83d579ac280357c8a4e902b9477bacbab81cc4d9c140e443642d458869db  wlroots-0.14.1.tar.gz\n\n# Hashes for license files:\nsha256  ffd3737a478b83a8b51b42757d3bf909ef36694508355879722e11fc1fa6736b  LICENSE\n"
  },
  {
    "path": "package/wlroots/wlroots.mk",
    "content": "################################################################################\n#\n# wlroots\n#\n################################################################################\n\nWLROOTS_VERSION = 0.14.1\nWLROOTS_SITE = https://github.com/swaywm/wlroots/releases/download/$(WLROOTS_VERSION)\nWLROOTS_LICENSE = MIT\nWLROOTS_LICENSE_FILES = LICENSE\nWLROOTS_INSTALL_STAGING = YES\n\nWLROOTS_DEPENDENCIES = \\\n\thost-pkgconf \\\n\thost-wayland \\\n\tlibinput \\\n\tlibxkbcommon \\\n\tlibegl \\\n\tlibgles \\\n\tpixman \\\n\tseatd \\\n\tudev \\\n\twayland \\\n\twayland-protocols\n\nWLROOTS_CONF_OPTS = -Dexamples=false -Dxcb-errors=disabled -Drenderers=gles2\n\nifeq ($(BR2_PACKAGE_FFMPEG),y)\nWLROOTS_DEPENDENCIES += ffmpeg\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nWLROOTS_DEPENDENCIES += libpng\nendif\n\nifeq ($(BR2_PACKAGE_WLROOTS_X11),y)\nWLROOTS_CONF_OPTS += -Dx11-backend=enabled -Dxwayland=enabled\nWLROOTS_DEPENDENCIES += libxcb xcb-util-wm xcb-util-renderutil xlib_libX11\nelse\nWLROOTS_CONF_OPTS += -Dx11-backend=disabled -Dxwayland=disabled\nendif\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/wmctrl/Config.in",
    "content": "config BR2_PACKAGE_WMCTRL\n\tbool \"wmctrl\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Provides command line access to almost all the features\n\t  defined in the EWMH specification. It can be used, for\n\t  example, to get information about the window manager, to get\n\t  a detailed list of desktops and managed windows, to switch\n\t  and resize desktops, to make windows full-screen,\n\t  always-above or sticky, and to activate, close, move,\n\t  resize, maximize and minimize them.\n\n\t  https://sites.google.com/site/tstyblo/wmctrl/\n\ncomment \"wmctrl needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/wmctrl/wmctrl.hash",
    "content": "# Locally computed\nsha256  d78a1efdb62f18674298ad039c5cbdb1edb6e8e149bb3a8e3a01a4750aa3cca9  wmctrl-1.07.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/wmctrl/wmctrl.mk",
    "content": "################################################################################\n#\n# wmctrl\n#\n################################################################################\n\nWMCTRL_VERSION = 1.07\nWMCTRL_SITE = https://sites.google.com/site/tstyblo/wmctrl\nWMCTRL_LICENSE = GPL-2.0+\nWMCTRL_LICENSE_FILES = COPYING\n\nWMCTRL_DEPENDENCIES = libglib2 xlib_libX11 xlib_libXmu\n\nWMCTRL_CONF_OPTS = \\\n\t--x-includes=$(STAGING_DIR)/usr/include \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/woff2/0001-CMake-Handle-multiple-libraries-being-returned-for-B.patch",
    "content": "From 9a6d50b3f355c1e4d72a235aa0bac4856dff1785 Mon Sep 17 00:00:00 2001\nFrom: Adrian Perez de Castro <aperez@igalia.com>\nDate: Tue, 27 Mar 2018 19:59:23 +0100\nSubject: [PATCH] CMake: Handle multiple libraries being returned for Brotli\n\nBrotli is built as three libraries: libbrotlienc, libbrotlidec, and\nlibbrotlicommon. When requesting the linker flags using pkg-config for\ne.g. libbrotlidec, it will return both libbrotlidec and libbrotlicommon.\nThe FindBrotli*.cmake files ignore the names of the libraries returned\nby pkg-config, and hardcode only the libbrotli{enc,dec} names. While\nthis is fine when using shared libraries (they contain an entry for\nlibbrotlicommon as required library in their headers), it will cause\nlinker errors when Brotli has been built as static libraries, due to\nthe missing symbols from libbrotlicommon being unknown to the linker.\n\nThis fixes FindBrotli*.cmake files by using the library names reported\nby pkg-config (instead of hardcoding them), and applying find_library()\nto each of the libraries to find their absolute paths. If any of the\nlibraries is missing, the corresponding BROTLI{ENC,DEC}_LIBRARIES is\nunset to let find_package_handle_standard_args() report an error.\n---\n cmake/FindBrotliDec.cmake | 13 +++++++++----\n cmake/FindBrotliEnc.cmake | 14 ++++++++++----\n 2 files changed, 19 insertions(+), 8 deletions(-)\n\nSigned-off-by: Adrian Perez de Castro <aperez@igalia.com>\nUpstream-Status: Submitted [https://github.com/google/woff2/pull/112]\n\ndiff --git a/cmake/FindBrotliDec.cmake b/cmake/FindBrotliDec.cmake\nindex abb06f4..9cbb415 100644\n--- a/cmake/FindBrotliDec.cmake\n+++ b/cmake/FindBrotliDec.cmake\n@@ -18,10 +18,15 @@ find_path(BROTLIDEC_INCLUDE_DIRS\n     HINTS ${PC_BROTLIDEC_INCLUDEDIR}\n )\n \n-find_library(BROTLIDEC_LIBRARIES\n-    NAMES brotlidec\n-    HINTS ${PC_BROTLIDEC_LIBDIR}\n-)\n+set(BROTLIDEC_LIBRARIES \"\")\n+foreach(_lib ${PC_BROTLIDEC_LIBRARIES})\n+\tfind_library(PC_BROTLIDEC_PATH_${_lib} ${_lib} HINTS ${PC_BROTLIDEC_LIBRARY_DIRS})\n+\tif(NOT PC_BROTLIDEC_PATH_${_lib})\n+\t\tunset(BROTLIDEC_LIBRARIES)\n+\t\tbreak()\n+\tendif()\n+\tlist(APPEND BROTLIDEC_LIBRARIES \"${PC_BROTLIDEC_PATH_${_lib}}\")\n+endforeach()\n \n include(FindPackageHandleStandardArgs)\n find_package_handle_standard_args(BrotliDec\ndiff --git a/cmake/FindBrotliEnc.cmake b/cmake/FindBrotliEnc.cmake\nindex 4be347d..55f3932 100644\n--- a/cmake/FindBrotliEnc.cmake\n+++ b/cmake/FindBrotliEnc.cmake\n@@ -18,10 +18,16 @@ find_path(BROTLIENC_INCLUDE_DIRS\n     HINTS ${PC_BROTLIENC_INCLUDEDIR}\n )\n \n-find_library(BROTLIENC_LIBRARIES\n-    NAMES brotlienc\n-    HINTS ${PC_BROTLIENC_LIBDIR}\n-)\n+set(BROTLIENC_LIBRARIES \"\")\n+foreach(_lib ${PC_BROTLIENC_LIBRARIES})\n+\tfind_library(PC_BROTLIENC_PATH_${_lib} ${_lib}\n+\t\tHINTS ${PC_BROTLIENC_LIBRARY_DIRS})\n+\tif(NOT PC_BROTLIENC_PATH_${_lib})\n+\t\tunset(BROTLIENC_LIBRARIES)\n+\t\tbreak()\n+\tendif()\n+\tlist(APPEND BROTLIENC_LIBRARIES \"${PC_BROTLIENC_PATH_${_lib}}\")\n+endforeach()\n \n include(FindPackageHandleStandardArgs)\n find_package_handle_standard_args(BrotliEnc\n-- \n2.16.3\n\n"
  },
  {
    "path": "package/woff2/Config.in",
    "content": "config BR2_PACKAGE_WOFF2\n\tbool \"woff2\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_BROTLI\n\thelp\n\t  Reference implementation for the WOFF2 font file format,\n\t  typically used for Web fonts\n\n\t  https://github.com/google/woff2\n\ncomment \"woff2 needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/woff2/woff2.hash",
    "content": "# Locally generated:\nsha512  c788bba1530aec463e755e901f9342f4b599e3a07f54645fef1dc388ab5d5c30625535e5dd38e9e792e04a640574baa50eeefb6b7338ab403755f4a4e0c3044d  v1.0.2.tar.gz\n\n# Hash for license files:\nsha512  8ee924da3fb5d16135adcf6a8fbe9e2e8f3d2d80468617e72ca4fa059a60f8455c9a5f68a8dc381b1297c8bf39c887a912d0f69246d2604ada74d3da9e8e490b  LICENSE\n"
  },
  {
    "path": "package/woff2/woff2.mk",
    "content": "################################################################################\n#\n# woff2\n#\n################################################################################\n\nWOFF2_VERSION = 1.0.2\nWOFF2_SOURCE = v$(WOFF2_VERSION).tar.gz\nWOFF2_SITE = https://github.com/google/woff2/archive\nWOFF2_LICENSE = MIT\nWOFF2_LICENSE_FILES = LICENSE\nWOFF2_INSTALL_STAGING = YES\nWOFF2_DEPENDENCIES = brotli\nWOFF2_CONF_OPTS = \\\n\t-DNOISY_LOGGING=OFF\n\n# The CMake build files for woff2 manually set some RPATH handling options\n# which make the installation steps fail with static builds, so pass this\n# to prevent any attempt of mangling RPATH that CMake would do.\nifneq ($(BR2_SHARED_LIBS),y)\nWOFF2_CONF_OPTS += -DCMAKE_SKIP_RPATH=ON\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/wolfssl/Config.in",
    "content": "config BR2_PACKAGE_WOLFSSL\n\tbool \"wolfssl\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  The wolfSSL embedded SSL library (formerly CyaSSL) is a\n\t  lightweight, portable, C-language-based SSL/TLS library\n\t  targeted at IoT, embedded, and RTOS environments primarily\n\t  because of its size, speed, and feature set.\n\n\t  https://www.wolfssl.com/\n\nif BR2_PACKAGE_WOLFSSL\n\nconfig BR2_PACKAGE_WOLFSSL_ALL\n\tbool \"enable all features, except SSLv3\"\n\thelp\n\t  Enable all wolfSSL features, except SSL version 3.0 support.\n\nconfig BR2_PACKAGE_WOLFSSL_SSLV3\n\tbool \"enable SSLv3\"\n\thelp\n\t  Enable SSL version 3.0 support.\n\nendif\n\ncomment \"wolfssl needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/wolfssl/wolfssl.hash",
    "content": "# Locally computed:\nsha256  50db45f348f47e00c93dd244c24108220120cb3cc9d01434789229c32937c444  wolfssl-4.8.1-stable.tar.gz\n\n# Hash for license files:\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  b23c1da1f85d699d3288d73c952b4cd02760d23dc1ddc1b221cbb8be82387189  LICENSING\n"
  },
  {
    "path": "package/wolfssl/wolfssl.mk",
    "content": "################################################################################\n#\n# wolfssl\n#\n################################################################################\n\nWOLFSSL_VERSION = 4.8.1-stable\nWOLFSSL_SITE = $(call github,wolfSSL,wolfssl,v$(WOLFSSL_VERSION))\nWOLFSSL_INSTALL_STAGING = YES\n\nWOLFSSL_LICENSE = GPL-2.0+\nWOLFSSL_LICENSE_FILES = COPYING LICENSING\nWOLFSSL_CPE_ID_VENDOR = wolfssl\n\nWOLFSSL_DEPENDENCIES = host-pkgconf\n\n# wolfssl's source code is released without a configure\n# script, so we need autoreconf\nWOLFSSL_AUTORECONF = YES\n\nWOLFSSL_CONF_OPTS = --disable-examples --disable-crypttests\n\nifeq ($(BR2_PACKAGE_WOLFSSL_ALL),y)\nWOLFSSL_CONF_OPTS += --enable-all\nelse\nWOLFSSL_CONF_OPTS += --disable-all\nendif\n\nifeq ($(BR2_PACKAGE_WOLFSSL_SSLV3),y)\nWOLFSSL_CONF_OPTS += --enable-sslv3\nelse\nWOLFSSL_CONF_OPTS += --disable-sslv3\nendif\n\n# enable ARMv8 hardware acceleration\nifeq ($(BR2_ARM_CPU_ARMV8A),y)\nWOLFSSL_CONF_OPTS += --enable-armasm\n# the flag -mstrict-align is needed to prevent build errors caused by\n# some inline assembly in parts of the AES structure using the \"m\"\n# constraint\nifeq ($(BR2_aarch64),y)\nWOLFSSL_CONF_ENV += CPPFLAGS=\"$(TARGET_CPPFLAGS) -mstrict-align\"\nendif\nelse\nWOLFSSL_CONF_OPTS += --disable-armasm\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/wpa_supplicant/0001-AP-Silently-ignore-management-frame-from-unexpected-.patch",
    "content": "From 8c07fa9eda13e835f3f968b2e1c9a8be3a851ff9 Mon Sep 17 00:00:00 2001\nFrom: Jouni Malinen <j@w1.fi>\nDate: Thu, 29 Aug 2019 11:52:04 +0300\nSubject: [PATCH] AP: Silently ignore management frame from unexpected source\n address\n\nDo not process any received Management frames with unexpected/invalid SA\nso that we do not add any state for unexpected STA addresses or end up\nsending out frames to unexpected destination. This prevents unexpected\nsequences where an unprotected frame might end up causing the AP to send\nout a response to another device and that other device processing the\nunexpected response.\n\nIn particular, this prevents some potential denial of service cases\nwhere the unexpected response frame from the AP might result in a\nconnected station dropping its association.\n\nSigned-off-by: Jouni Malinen <j@w1.fi>\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://w1.fi/security/2019-7/0001-AP-Silently-ignore-management-frame-from-unexpected-.patch]\n---\n src/ap/drv_callbacks.c | 13 +++++++++++++\n src/ap/ieee802_11.c    | 12 ++++++++++++\n 2 files changed, 25 insertions(+)\n\ndiff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c\nindex 31587685fe3b..34ca379edc3d 100644\n--- a/src/ap/drv_callbacks.c\n+++ b/src/ap/drv_callbacks.c\n@@ -131,6 +131,19 @@ int hostapd_notif_assoc(struct hostapd_data *hapd, const u8 *addr,\n \t\t\t   \"hostapd_notif_assoc: Skip event with no address\");\n \t\treturn -1;\n \t}\n+\n+\tif (is_multicast_ether_addr(addr) ||\n+\t    is_zero_ether_addr(addr) ||\n+\t    os_memcmp(addr, hapd->own_addr, ETH_ALEN) == 0) {\n+\t\t/* Do not process any frames with unexpected/invalid SA so that\n+\t\t * we do not add any state for unexpected STA addresses or end\n+\t\t * up sending out frames to unexpected destination. */\n+\t\twpa_printf(MSG_DEBUG, \"%s: Invalid SA=\" MACSTR\n+\t\t\t   \" in received indication - ignore this indication silently\",\n+\t\t\t   __func__, MAC2STR(addr));\n+\t\treturn 0;\n+\t}\n+\n \trandom_add_randomness(addr, ETH_ALEN);\n \n \thostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,\ndiff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c\nindex c85a28db44b7..e7065372e158 100644\n--- a/src/ap/ieee802_11.c\n+++ b/src/ap/ieee802_11.c\n@@ -4626,6 +4626,18 @@ int ieee802_11_mgmt(struct hostapd_data *hapd, const u8 *buf, size_t len,\n \tfc = le_to_host16(mgmt->frame_control);\n \tstype = WLAN_FC_GET_STYPE(fc);\n \n+\tif (is_multicast_ether_addr(mgmt->sa) ||\n+\t    is_zero_ether_addr(mgmt->sa) ||\n+\t    os_memcmp(mgmt->sa, hapd->own_addr, ETH_ALEN) == 0) {\n+\t\t/* Do not process any frames with unexpected/invalid SA so that\n+\t\t * we do not add any state for unexpected STA addresses or end\n+\t\t * up sending out frames to unexpected destination. */\n+\t\twpa_printf(MSG_DEBUG, \"MGMT: Invalid SA=\" MACSTR\n+\t\t\t   \" in received frame - ignore this frame silently\",\n+\t\t\t   MAC2STR(mgmt->sa));\n+\t\treturn 0;\n+\t}\n+\n \tif (stype == WLAN_FC_STYPE_BEACON) {\n \t\thandle_beacon(hapd, mgmt, len, fi);\n \t\treturn 1;\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/wpa_supplicant/0002-ASN.1-Validate-DigestAlgorithmIdentifier-parameters.patch",
    "content": "From a0541334a6394f8237a4393b7372693cd7e96f15 Mon Sep 17 00:00:00 2001\nFrom: Jouni Malinen <j@w1.fi>\nDate: Sat, 13 Mar 2021 18:19:31 +0200\nSubject: [PATCH] ASN.1: Validate DigestAlgorithmIdentifier parameters\n\nThe supported hash algorithms do not use AlgorithmIdentifier parameters.\nHowever, there are implementations that include NULL parameters in\naddition to ones that omit the parameters. Previous implementation did\nnot check the parameters value at all which supported both these cases,\nbut did not reject any other unexpected information.\n\nUse strict validation of digest algorithm parameters and reject any\nunexpected value when validating a signature. This is needed to prevent\npotential forging attacks.\n\nSigned-off-by: Jouni Malinen <j@w1.fi>\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n src/tls/pkcs1.c  | 21 +++++++++++++++++++++\n src/tls/x509v3.c | 20 ++++++++++++++++++++\n 2 files changed, 41 insertions(+)\n\ndiff --git a/src/tls/pkcs1.c b/src/tls/pkcs1.c\nindex bbdb0d72d..5761dfed0 100644\n--- a/src/tls/pkcs1.c\n+++ b/src/tls/pkcs1.c\n@@ -244,6 +244,8 @@ int pkcs1_v15_sig_ver(struct crypto_public_key *pk,\n \t\tos_free(decrypted);\n \t\treturn -1;\n \t}\n+\twpa_hexdump(MSG_MSGDUMP, \"PKCS #1: DigestInfo\",\n+\t\t    hdr.payload, hdr.length);\n \n \tpos = hdr.payload;\n \tend = pos + hdr.length;\n@@ -265,6 +267,8 @@ int pkcs1_v15_sig_ver(struct crypto_public_key *pk,\n \t\tos_free(decrypted);\n \t\treturn -1;\n \t}\n+\twpa_hexdump(MSG_MSGDUMP, \"PKCS #1: DigestAlgorithmIdentifier\",\n+\t\t    hdr.payload, hdr.length);\n \tda_end = hdr.payload + hdr.length;\n \n \tif (asn1_get_oid(hdr.payload, hdr.length, &oid, &next)) {\n@@ -273,6 +277,23 @@ int pkcs1_v15_sig_ver(struct crypto_public_key *pk,\n \t\tos_free(decrypted);\n \t\treturn -1;\n \t}\n+\twpa_hexdump(MSG_MSGDUMP, \"PKCS #1: Digest algorithm parameters\",\n+\t\t    next, da_end - next);\n+\n+\t/*\n+\t * RFC 5754: The correct encoding for the SHA2 algorithms would be to\n+\t * omit the parameters, but there are implementation that encode these\n+\t * as a NULL element. Allow these two cases and reject anything else.\n+\t */\n+\tif (da_end > next &&\n+\t    (asn1_get_next(next, da_end - next, &hdr) < 0 ||\n+\t     !asn1_is_null(&hdr) ||\n+\t     hdr.payload + hdr.length != da_end)) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"PKCS #1: Unexpected digest algorithm parameters\");\n+\t\tos_free(decrypted);\n+\t\treturn -1;\n+\t}\n \n \tif (!asn1_oid_equal(&oid, hash_alg)) {\n \t\tchar txt[100], txt2[100];\ndiff --git a/src/tls/x509v3.c b/src/tls/x509v3.c\nindex a8944dd2f..df337ec4d 100644\n--- a/src/tls/x509v3.c\n+++ b/src/tls/x509v3.c\n@@ -1964,6 +1964,7 @@ int x509_check_signature(struct x509_certificate *issuer,\n \t\tos_free(data);\n \t\treturn -1;\n \t}\n+\twpa_hexdump(MSG_MSGDUMP, \"X509: DigestInfo\", hdr.payload, hdr.length);\n \n \tpos = hdr.payload;\n \tend = pos + hdr.length;\n@@ -1985,6 +1986,8 @@ int x509_check_signature(struct x509_certificate *issuer,\n \t\tos_free(data);\n \t\treturn -1;\n \t}\n+\twpa_hexdump(MSG_MSGDUMP, \"X509: DigestAlgorithmIdentifier\",\n+\t\t    hdr.payload, hdr.length);\n \tda_end = hdr.payload + hdr.length;\n \n \tif (asn1_get_oid(hdr.payload, hdr.length, &oid, &next)) {\n@@ -1992,6 +1995,23 @@ int x509_check_signature(struct x509_certificate *issuer,\n \t\tos_free(data);\n \t\treturn -1;\n \t}\n+\twpa_hexdump(MSG_MSGDUMP, \"X509: Digest algorithm parameters\",\n+\t\t    next, da_end - next);\n+\n+\t/*\n+\t * RFC 5754: The correct encoding for the SHA2 algorithms would be to\n+\t * omit the parameters, but there are implementation that encode these\n+\t * as a NULL element. Allow these two cases and reject anything else.\n+\t */\n+\tif (da_end > next &&\n+\t    (asn1_get_next(next, da_end - next, &hdr) < 0 ||\n+\t     !asn1_is_null(&hdr) ||\n+\t     hdr.payload + hdr.length != da_end)) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"X509: Unexpected digest algorithm parameters\");\n+\t\tos_free(data);\n+\t\treturn -1;\n+\t}\n \n \tif (x509_sha1_oid(&oid)) {\n \t\tif (signature->oid.oid[6] != 5 /* sha-1WithRSAEncryption */) {\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/wpa_supplicant/0003-Include-stdbool.h-to-allow-C99-bool-to-be-used.patch",
    "content": "From 99cf89555313056d3a8fa54b21d02dc880b363e1 Mon Sep 17 00:00:00 2001\nFrom: Jouni Malinen <jouni@codeaurora.org>\nDate: Mon, 20 Apr 2020 20:29:31 +0300\nSubject: [PATCH] Include stdbool.h to allow C99 bool to be used\n\nWe have practically started requiring some C99 features, so might as\nwell finally go ahead and bring in the C99 bool as well.\n\nSigned-off-by: Jouni Malinen <jouni@codeaurora.org>\n[geomatsi@gmail.com: backport from upstream]\nSigned-off-by: Sergey Matyukevich <geomatsi@gmail.com>\n[yann.morin.1998@free.fr: keep upstream sha1 in header, drop numbering]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n src/utils/includes.h | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/utils/includes.h b/src/utils/includes.h\nindex 75513fc8c..741fc9c14 100644\n--- a/src/utils/includes.h\n+++ b/src/utils/includes.h\n@@ -18,6 +18,7 @@\n \n #include <stdlib.h>\n #include <stddef.h>\n+#include <stdbool.h>\n #include <stdio.h>\n #include <stdarg.h>\n #include <string.h>\n-- \n2.25.1\n\n"
  },
  {
    "path": "package/wpa_supplicant/0004-ASN.1-Add-helper-functions-for-recognizing-tag-value.patch",
    "content": "From 9a990e8c4eb92dd64e0ec483599820e45c35ac23 Mon Sep 17 00:00:00 2001\nFrom: Jouni Malinen <j@w1.fi>\nDate: Sat, 13 Mar 2021 23:14:23 +0200\nSubject: [PATCH] ASN.1: Add helper functions for recognizing tag values\n\nSigned-off-by: Jouni Malinen <j@w1.fi>\n[geomatsi@gmail.com: backport asn1_is_null() from upstream 9a990e8c4eb9]\nSigned-off-by: Sergey Matyukevich <geomatsi@gmail.com>\n[yann.morin.1998@free.fr: \n  - reformat, keep the upstream sha1 and title,\n  - drop numbering\n]\nSigned-off-by: Yann E. MORIN <yann.morin.1998@free.fr>\n---\n src/tls/asn1.h | 102 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 file changed, 102 insertions(+)\n\ndiff --git a/src/tls/asn1.h b/src/tls/asn1.h\nindex de3430adb..a4d1be473 100644\n--- a/src/tls/asn1.h\n+++ b/src/tls/asn1.h\n@@ -66,6 +66,12 @@ struct wpabuf * asn1_build_alg_id(const struct asn1_oid *oid,\n unsigned long asn1_bit_string_to_long(const u8 *buf, size_t len);\n int asn1_oid_equal(const struct asn1_oid *a, const struct asn1_oid *b);\n \n+static inline bool asn1_is_null(const struct asn1_hdr *hdr)\n+{\n+\treturn hdr->class == ASN1_CLASS_UNIVERSAL &&\n+\t\thdr->tag == ASN1_TAG_NULL;\n+}\n+\n extern struct asn1_oid asn1_sha1_oid;\n extern struct asn1_oid asn1_sha256_oid;\n \n-- \n2.25.1\n\n"
  },
  {
    "path": "package/wpa_supplicant/50-wpa_supplicant.preset",
    "content": "disable wpa_supplicant@.service\ndisable wpa_supplicant-nl80211@.service\ndisable wpa_supplicant-wired@.service\n\n"
  },
  {
    "path": "package/wpa_supplicant/Config.in",
    "content": "menuconfig BR2_PACKAGE_WPA_SUPPLICANT\n\tbool \"wpa_supplicant\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_MD4 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  WPA supplicant for secure wireless networks\n\n\t  http://w1.fi/wpa_supplicant/\n\nif BR2_PACKAGE_WPA_SUPPLICANT\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_NL80211\n\tbool \"Enable nl80211 support\"\n\tdefault y\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libnl\n\tselect BR2_PACKAGE_LIBNL\n\thelp\n\t  Enable support for nl80211.  This is the current wireless\n\t  API for Linux, supported by all wireless drivers in vanilla\n\t  Linux, but may not be supported by some out-of-tree Linux\n\t  wireless drivers.  wpa_supplicant will still fall back to\n\t  using the Wireless Extensions (wext) API with these drivers.\n\n\t  If this option is disabled, then only the deprecated wext\n\t  API will be supported, with far less features.  Linux may\n\t  supports using wext with modern drivers using a\n\t  compatibility layer, but it must be enabled in the kernel\n\t  configuration.\n\ncomment \"nl80211 support needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_WEXT\n\tbool \"Enable wext (deprecated)\"\n\tdefault y if !BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Enable support for wext.  This is the historic wireless API\n\t  for Linux, which is now deprecated and in maintenance-only in\n\t  the kernel.  It may still be required by out-of-tree drivers.\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_WIRED\n\tbool \"Enable wired support\"\n\tselect BR2_PACKAGE_WPA_SUPPLICANT_EAP\n\thelp\n\t  Include the \"wired\" driver, so the internal IEEE 802.1x\n\t  supplicant can be used with Ethernet.  This also enables\n\t  support for MACSEC.\n\ncomment \"wpa_supplicant will be useless without at least one driver\"\n\tdepends on !BR2_PACKAGE_WPA_SUPPLICANT_NL80211 && \\\n\t\t!BR2_PACKAGE_WPA_SUPPLICANT_WEXT && \\\n\t\t!BR2_PACKAGE_WPA_SUPPLICANT_WIRED\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_IBSS_RSN\n\tbool \"Enable IBSS RSN\"\n\tdepends on BR2_PACKAGE_WPA_SUPPLICANT_NL80211\n\thelp\n\t  Enable support for RSN/WPA2 in Ad-Hoc mode.\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT\n\tbool \"Enable AP mode\"\n\tdepends on BR2_PACKAGE_WPA_SUPPLICANT_NL80211\n\thelp\n\t  With this option enabled, wpa_supplicant can act as an\n\t  access point much like hostapd does with a limited feature\n\t  set.  This links in parts of hostapd functionality into\n\t  wpa_supplicant, making it bigger but dispensing the need for\n\t  a separate hostapd binary in some applications hence being\n\t  smaller overall.  It also enables support for Wi-Fi Direct.\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY\n\tbool \"Enable Wi-Fi Display\"\n\tdepends on BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT\n\thelp\n\t  Enable support for Wi-Fi Display\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING\n\tbool \"Enable mesh networking\"\n\tdepends on BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL\n\thelp\n\t  Enable support for open and secured mesh networking\n\t  (IEEE 802.11s)\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN\n\tbool \"Enable autoscan\"\n\thelp\n\t  Enable support for the autoscan feature (allow periodic scan)\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_EAP\n\tbool \"Enable EAP\"\n\thelp\n\t  Enable support for EAP, 802.1x/WPA-Enterprise and FILS.\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT\n\tbool \"Enable HS20\"\n\tselect BR2_PACKAGE_WPA_SUPPLICANT_EAP\n\thelp\n\t  Enable Hotspot 2.0 and IEEE 802.11u interworking\n\t  functionality.\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG\n\tbool \"Enable syslog support\"\n\thelp\n\t  Enable support for sending debug messages to syslog.\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_WPS\n\tbool \"Enable WPS\"\n\thelp\n\t  Enable support for Wi-Fi Protected Setup (WPS).\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_WPA3\n\tbool \"Enable WPA3 support\"\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL\n\thelp\n\t  Enable WPA3 support including OWE, SAE, DPP\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_CLI\n\tbool \"Install wpa_cli binary\"\n\tselect BR2_PACKAGE_WPA_SUPPLICANT_CTRL_IFACE\n\thelp\n\t  Install wpa_cli command line utility\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO\n\tbool \"Install wpa_client shared library\"\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  Install libwpa_client.so.\n\ncomment \"wpa_client library needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE\n\tbool \"Install wpa_passphrase binary\"\n\thelp\n\t  Install wpa_passphrase command line utility.\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_CTRL_IFACE\n\tbool \"Enable the Unix-socket control interface\"\n\thelp\n\t  Enable support for the Unix-socket-based API.\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_DBUS\n\tbool \"Enable support for the DBus control interface\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # dbus\n\tselect BR2_PACKAGE_DBUS\n\thelp\n\t  Enable support for the DBus control interface.\n\ncomment \"dbus support needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION\n\tbool \"Introspection support\"\n\tdepends on BR2_PACKAGE_WPA_SUPPLICANT_DBUS\n\thelp\n\t  Add introspection support for the DBus control interface.\n\nendif\n"
  },
  {
    "path": "package/wpa_supplicant/wpa_supplicant.conf",
    "content": "ctrl_interface=/var/run/wpa_supplicant\nap_scan=1\n\nnetwork={\n  key_mgmt=NONE\n}\n"
  },
  {
    "path": "package/wpa_supplicant/wpa_supplicant.hash",
    "content": "# Locally calculated\nsha256  fcbdee7b4a64bea8177973299c8c824419c413ec2e3a95db63dd6a5dc3541f17  wpa_supplicant-2.9.tar.gz\nsha256  9da5dd0776da266b180b915e460ff75c6ff729aca1196ab396529510f24f3761  README\nsha256  c4d65cc13863e0237d0644198558e2c47b4ed91e2b2be4516ff590724187c4a5  0001-P2P-Fix-copying-of-secondary-device-types-for-P2P-gr.patch\nsha256  7f40cfec5faf5e927ea9028ab9392cd118685bde7229ad24210caf0a8f6e9611  0001-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch\n"
  },
  {
    "path": "package/wpa_supplicant/wpa_supplicant.mk",
    "content": "################################################################################\n#\n# wpa_supplicant\n#\n################################################################################\n\nWPA_SUPPLICANT_VERSION = 2.9\nWPA_SUPPLICANT_SITE = http://w1.fi/releases\nWPA_SUPPLICANT_PATCH = \\\n\thttps://w1.fi/security/2020-2/0001-P2P-Fix-copying-of-secondary-device-types-for-P2P-gr.patch \\\n\thttps://w1.fi/security/2021-1/0001-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch\nWPA_SUPPLICANT_LICENSE = BSD-3-Clause\nWPA_SUPPLICANT_LICENSE_FILES = README\nWPA_SUPPLICANT_CPE_ID_VENDOR = w1.fi\nWPA_SUPPLICANT_CONFIG = $(WPA_SUPPLICANT_DIR)/wpa_supplicant/.config\nWPA_SUPPLICANT_SUBDIR = wpa_supplicant\nWPA_SUPPLICANT_DBUS_SERVICE = fi.w1.wpa_supplicant1\nWPA_SUPPLICANT_CFLAGS = $(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/libnl3/\nWPA_SUPPLICANT_LDFLAGS = $(TARGET_LDFLAGS)\nWPA_SUPPLICANT_SELINUX_MODULES = networkmanager\n\n# 0001-AP-Silently-ignore-management-frame-from-unexpected-.patch\nWPA_SUPPLICANT_IGNORE_CVES += CVE-2019-16275\n\n# 0001-P2P-Fix-a-corner-case-in-peer-addition-based-on-PD-R.patch\nWPA_SUPPLICANT_IGNORE_CVES += CVE-2021-27803\n\n# 0002-ASN.1-Validate-DigestAlgorithmIdentifier-parameters.patch\nWPA_SUPPLICANT_IGNORE_CVES += CVE-2021-30004\n\n# install the wpa_client library\nWPA_SUPPLICANT_INSTALL_STAGING = YES\n\nWPA_SUPPLICANT_CONFIG_EDITS =\n\nWPA_SUPPLICANT_CONFIG_ENABLE = \\\n\tCONFIG_INTERNAL_LIBTOMMATH \\\n\tCONFIG_MATCH_IFACE\n\nWPA_SUPPLICANT_CONFIG_DISABLE = \\\n\tCONFIG_SMARTCARD\n\n# libnl-3 needs -lm (for rint) and -lpthread if linking statically\n# And library order matters hence stick -lnl-3 first since it's appended\n# in the wpa_supplicant Makefiles as in LIBS+=-lnl-3 ... thus failing\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_NL80211),y)\nifeq ($(BR2_STATIC_LIBS),y)\nWPA_SUPPLICANT_LIBS += -lnl-3 -lm -lpthread\nendif\nWPA_SUPPLICANT_DEPENDENCIES += host-pkgconf libnl\nWPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_LIBNL32\nelse\nWPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_DRIVER_NL80211\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WEXT),)\nWPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_DRIVER_WEXT\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_IBSS_RSN), )\nWPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_IBSS_RSN\nendif\n\n# Trailing underscore on purpose to not enable CONFIG_EAPOL_TEST\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_EAP),y)\nWPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_EAP_\n# uses dlopen()\nifeq ($(BR2_STATIC_LIBS),y)\nWPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_EAP_TNC\nendif\nelse\nWPA_SUPPLICANT_CONFIG_DISABLE += \\\n\tCONFIG_EAP \\\n\tCONFIG_IEEE8021X_EAPOL \\\n\tCONFIG_FILS\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WIRED),)\nWPA_SUPPLICANT_CONFIG_DISABLE += \\\n\tCONFIG_DRIVER_WIRED \\\n\tCONFIG_MACSEC \\\n\tCONFIG_DRIVER_MACSEC\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT),)\nWPA_SUPPLICANT_CONFIG_DISABLE += \\\n\tCONFIG_HS20 \\\n\tCONFIG_INTERWORKING\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT),y)\nWPA_SUPPLICANT_CONFIG_ENABLE += \\\n\tCONFIG_AP \\\n\tCONFIG_P2P\nelse\nWPA_SUPPLICANT_CONFIG_DISABLE += \\\n\tCONFIG_AP \\\n\tCONFIG_P2P\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY),y)\nWPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_WIFI_DISPLAY\nelse\nWPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_WIFI_DISPLAY\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING),y)\nWPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_MESH\nelse\nWPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_MESH\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN),y)\nWPA_SUPPLICANT_CONFIG_ENABLE += \\\n\tCONFIG_AUTOSCAN_EXPONENTIAL \\\n\tCONFIG_AUTOSCAN_PERIODIC\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WPS),)\nWPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_WPS\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WPA3),y)\nWPA_SUPPLICANT_CONFIG_ENABLE += \\\n\tCONFIG_DPP \\\n\tCONFIG_SAE \\\n\tCONFIG_OWE\nelse\nWPA_SUPPLICANT_CONFIG_DISABLE += \\\n\tCONFIG_DPP \\\n\tCONFIG_SAE \\\n\tCONFIG_OWE\nendif\n\n# Try to use openssl if it's already available\nifeq ($(BR2_PACKAGE_LIBOPENSSL),y)\nWPA_SUPPLICANT_DEPENDENCIES += host-pkgconf libopenssl\nWPA_SUPPLICANT_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`\nWPA_SUPPLICANT_CONFIG_EDITS += 's/\\#\\(CONFIG_TLS=openssl\\)/\\1/'\nelse\nWPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_EAP_PWD CONFIG_EAP_TEAP\nWPA_SUPPLICANT_CONFIG_EDITS += 's/\\#\\(CONFIG_TLS=\\).*/\\1internal/'\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_CTRL_IFACE),)\nWPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_CTRL_IFACE\\>\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DBUS),y)\nWPA_SUPPLICANT_DEPENDENCIES += host-pkgconf dbus\nWPA_SUPPLICANT_MAKE_ENV = \\\n\tPKG_CONFIG_SYSROOT_DIR=\"$(STAGING_DIR)\" \\\n\tPKG_CONFIG_PATH=\"$(STAGING_DIR)/usr/lib/pkgconfig\"\nWPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_CTRL_IFACE_DBUS_NEW\ndefine WPA_SUPPLICANT_INSTALL_DBUS_NEW\n\t$(INSTALL) -m 0644 -D \\\n\t\t$(@D)/wpa_supplicant/dbus/$(WPA_SUPPLICANT_DBUS_SERVICE).service \\\n\t\t$(TARGET_DIR)/usr/share/dbus-1/system-services/$(WPA_SUPPLICANT_DBUS_SERVICE).service\nendef\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION),y)\nWPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_CTRL_IFACE_DBUS_INTRO\nendif\n\nelse\nWPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_CTRL_IFACE_DBUS_NEW\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG),)\nWPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_DEBUG_SYSLOG\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nWPA_SUPPLICANT_DEPENDENCIES += readline\nWPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_READLINE\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO),y)\nWPA_SUPPLICANT_CONFIG_SET += CONFIG_BUILD_WPA_CLIENT_SO\ndefine WPA_SUPPLICANT_INSTALL_WPA_CLIENT_SO\n\t$(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/libwpa_client.so \\\n\t\t$(TARGET_DIR)/usr/lib/libwpa_client.so\n\t$(INSTALL) -m 0644 -D $(@D)/src/common/wpa_ctrl.h \\\n\t\t$(TARGET_DIR)/usr/include/wpa_ctrl.h\nendef\ndefine WPA_SUPPLICANT_INSTALL_STAGING_WPA_CLIENT_SO\n\t$(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/libwpa_client.so \\\n\t\t$(STAGING_DIR)/usr/lib/libwpa_client.so\n\t$(INSTALL) -m 0644 -D $(@D)/src/common/wpa_ctrl.h \\\n\t\t$(STAGING_DIR)/usr/include/wpa_ctrl.h\nendef\nendif\n\ndefine WPA_SUPPLICANT_CONFIGURE_CMDS\n\tcp $(@D)/wpa_supplicant/defconfig $(WPA_SUPPLICANT_CONFIG)\n\tsed -i $(patsubst %,-e 's/^#\\(%\\)/\\1/',$(WPA_SUPPLICANT_CONFIG_ENABLE)) \\\n\t\t$(patsubst %,-e 's/^\\(%\\)/#\\1/',$(WPA_SUPPLICANT_CONFIG_DISABLE)) \\\n\t\t$(patsubst %,-e '1i%=y',$(WPA_SUPPLICANT_CONFIG_SET)) \\\n\t\t$(patsubst %,-e %,$(WPA_SUPPLICANT_CONFIG_EDITS)) \\\n\t\t$(WPA_SUPPLICANT_CONFIG)\nendef\n\n# LIBS for wpa_supplicant, LIBS_c for wpa_cli, LIBS_p for wpa_passphrase\ndefine WPA_SUPPLICANT_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) CFLAGS=\"$(WPA_SUPPLICANT_CFLAGS)\" \\\n\t\tLDFLAGS=\"$(TARGET_LDFLAGS)\" BINDIR=/usr/sbin \\\n\t\tLIBS=\"$(WPA_SUPPLICANT_LIBS)\" LIBS_c=\"$(WPA_SUPPLICANT_LIBS)\" \\\n\t\tLIBS_p=\"$(WPA_SUPPLICANT_LIBS)\" \\\n\t\t$(MAKE) CC=\"$(TARGET_CC)\" -C $(@D)/$(WPA_SUPPLICANT_SUBDIR)\nendef\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_CLI),y)\ndefine WPA_SUPPLICANT_INSTALL_CLI\n\t$(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_cli \\\n\t\t$(TARGET_DIR)/usr/sbin/wpa_cli\nendef\nendif\n\nifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE),y)\ndefine WPA_SUPPLICANT_INSTALL_PASSPHRASE\n\t$(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_passphrase \\\n\t\t$(TARGET_DIR)/usr/sbin/wpa_passphrase\nendef\nendif\n\nifeq ($(BR2_PACKAGE_DBUS),y)\ndefine WPA_SUPPLICANT_INSTALL_DBUS\n\t$(INSTALL) -m 0644 -D \\\n\t\t$(@D)/wpa_supplicant/dbus/dbus-wpa_supplicant.conf \\\n\t\t$(TARGET_DIR)/etc/dbus-1/system.d/wpa_supplicant.conf\n\t$(WPA_SUPPLICANT_INSTALL_DBUS_NEW)\nendef\nendif\n\ndefine WPA_SUPPLICANT_INSTALL_STAGING_CMDS\n\t$(WPA_SUPPLICANT_INSTALL_STAGING_WPA_CLIENT_SO)\nendef\n\ndefine WPA_SUPPLICANT_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_supplicant \\\n\t\t$(TARGET_DIR)/usr/sbin/wpa_supplicant\n\t$(INSTALL) -m 644 -D package/wpa_supplicant/wpa_supplicant.conf \\\n\t\t$(TARGET_DIR)/etc/wpa_supplicant.conf\n\t$(WPA_SUPPLICANT_INSTALL_CLI)\n\t$(WPA_SUPPLICANT_INSTALL_PASSPHRASE)\n\t$(WPA_SUPPLICANT_INSTALL_DBUS)\n\t$(WPA_SUPPLICANT_INSTALL_WPA_CLIENT_SO)\nendef\n\ndefine WPA_SUPPLICANT_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant.service\n\t$(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant@.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant@.service\n\t$(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant-nl80211@.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant-nl80211@.service\n\t$(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant-wired@.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant-wired@.service\n\t$(INSTALL) -D -m 644 $(WPA_SUPPLICANT_PKGDIR)/50-wpa_supplicant.preset \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system-preset/50-wpa_supplicant.preset\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/wpan-tools/Config.in",
    "content": "config BR2_PACKAGE_WPAN_TOOLS\n\tbool \"wpan-tools\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBNL\n\thelp\n\t  Userspace tools for Linux IEEE 802.15.4 stack.\n\n\t  http://wpan.cakelab.org/\n\ncomment \"wpan-tools needs a toolchain w/ threads\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/wpan-tools/wpan-tools.hash",
    "content": "# Locally calculated\nsha256\t3e509d9ed838df1247cc9a0c6ca483cb356ae778851817bd7410044687b655e2\twpan-tools-0.9.tar.gz\nsha256\tfe8e595c24d821a60885eb259619df5e5e3976c48465fde0be29fcd78530798f\tCOPYING\n"
  },
  {
    "path": "package/wpan-tools/wpan-tools.mk",
    "content": "################################################################################\n#\n# wpan-tools\n#\n################################################################################\n\nWPAN_TOOLS_VERSION = 0.9\nWPAN_TOOLS_SITE = $(call github,linux-wpan,wpan-tools,wpan-tools-$(WPAN_TOOLS_VERSION))\nWPAN_TOOLS_DEPENDENCIES = host-pkgconf libnl\nWPAN_TOOLS_LICENSE = ISC\nWPAN_TOOLS_LICENSE_FILES = COPYING\n# From git\nWPAN_TOOLS_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/wpebackend-fdo/Config.in",
    "content": "comment \"wpebackend-fdo needs a toolchain w/ C++, wchar, threads, dynamic library and an OpenEGL-capable Wayland backend\"\n\tdepends on !BR2_PACKAGE_HAS_LIBEGL_WAYLAND || !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_WPEBACKEND_FDO\n\tbool \"wpebackend-fdo\"\n\tdepends on !BR2_STATIC_LIBS # wayland\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # wayland, libglib2\n\tdepends on BR2_USE_WCHAR # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND\n\tselect BR2_PACKAGE_LIBEPOXY\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_LIBWPE\n\tselect BR2_PACKAGE_WAYLAND\n\thelp\n\t  WPEBackend interface using freedesktop.org API.\n\n\t  https://wpewebkit.org/\n"
  },
  {
    "path": "package/wpebackend-fdo/wpebackend-fdo.hash",
    "content": "# From https://wpewebkit.org/releases/wpebackend-fdo-1.10.0.tar.xz.sums\nmd5  306adbb0c66dc753e1794c83b7a2682b  wpebackend-fdo-1.10.0.tar.xz\nsha1  bf71718a213c6511dea278ade5ce90967d181995  wpebackend-fdo-1.10.0.tar.xz\nsha256  b89dfd3500a4dec711132cd7bff72599e67d56a419d000730e14bb99547509cc  wpebackend-fdo-1.10.0.tar.xz\n\n# Hashes for license files:\nsha256  c9f6803371047fad3e72200ec6cd226329a5ee08ac61104c8211c2761fb46825  COPYING\n"
  },
  {
    "path": "package/wpebackend-fdo/wpebackend-fdo.mk",
    "content": "################################################################################\n#\n# wpebackend-fdo\n#\n################################################################################\n\nWPEBACKEND_FDO_VERSION = 1.10.0\nWPEBACKEND_FDO_SITE = https://wpewebkit.org/releases\nWPEBACKEND_FDO_SOURCE = wpebackend-fdo-$(WPEBACKEND_FDO_VERSION).tar.xz\nWPEBACKEND_FDO_INSTALL_STAGING = YES\nWPEBACKEND_FDO_LICENSE = BSD-2-Clause\nWPEBACKEND_FDO_LICENSE_FILES = COPYING\nWPEBACKEND_FDO_DEPENDENCIES = libepoxy libglib2 libwpe wayland\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/wpewebkit/Config.in",
    "content": "config BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS\n\tbool\n\t# ARM needs BLX, so v5t+, BE completely untested so disabled\n\tdefault y if BR2_arm && !BR2_ARM_CPU_ARMV4\n\tdefault y if BR2_aarch64 || BR2_aarch64_be\n\tdefault y if BR2_i386 || BR2_x86_64\n\t# Disabled on MIPS big endian due to sigbus\n\tdefault y if BR2_mipsel || BR2_mips64el\n\t# Disabled on PowerPC pending runtime testing\n\t# Disabled on SuperH because of segfault\n\tdepends on BR2_USE_MMU # libglib2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt\n\ncomment \"wpewebkit needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 7, host gcc >= 4.9\"\n\tdepends on BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR \\\n\t\t|| !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \\\n\t\t|| !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \\\n\t\t|| !BR2_HOST_GCC_AT_LEAST_4_9\n\ncomment \"wpewebkit needs an OpenGL ES w/ EGL-capable Wayland backend\"\n\tdepends on BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS\n\tdepends on !BR2_BINFMT_FLAT\n\tdepends on !BR2_PACKAGE_HAS_LIBGLES || !BR2_PACKAGE_HAS_LIBEGL \\\n\t\t|| !BR2_PACKAGE_HAS_LIBEGL_WAYLAND\n\nconfig BR2_PACKAGE_WPEWEBKIT\n\tbool \"wpewebkit\"\n\tdepends on !BR2_STATIC_LIBS # wayland\n\tdepends on !BR2_BINFMT_FLAT # icu\n\tdepends on BR2_HOST_GCC_AT_LEAST_4_9 # icu, host-ruby\n\tdepends on BR2_INSTALL_LIBSTDCPP # harfbuzz, icu\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # wayland, icu, libsoup\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tdepends on BR2_USE_WCHAR # icu, libsoup\n\tdepends on BR2_PACKAGE_HAS_LIBGLES # libepoxy\n\tdepends on BR2_PACKAGE_HAS_LIBEGL # libepoxy\n\tdepends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND # wpebackend-fdo\n\tdepends on BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_CAIRO\n\tselect BR2_PACKAGE_CAIRO_PNG\n\tselect BR2_PACKAGE_HARFBUZZ\n\tselect BR2_PACKAGE_ICU\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBEPOXY\n\tselect BR2_PACKAGE_LIBGCRYPT\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_LIBSOUP\n\tselect BR2_PACKAGE_LIBTASN1\n\tselect BR2_PACKAGE_LIBXSLT\n\tselect BR2_PACKAGE_OPENJPEG\n\tselect BR2_PACKAGE_WAYLAND\n\tselect BR2_PACKAGE_WAYLAND_PROTOCOLS\n\tselect BR2_PACKAGE_WEBP\n\tselect BR2_PACKAGE_WEBP_DEMUX\n\tselect BR2_PACKAGE_WPEBACKEND_FDO\n\thelp\n\t  WPE (Web Platform for Embedded) port of the WebKit engine,\n\t  to allow embedders to create simple and performant systems\n\t  based on Web platform technologies.\n\n\t  https://wpewebkit.org/\n\nif BR2_PACKAGE_WPEWEBKIT\n\nconfig BR2_PACKAGE_WPEWEBKIT_SANDBOX\n\tbool \"sandboxing support\"\n\tdepends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # libseccomp\n\tselect BR2_PACKAGE_BUBBLEWRAP # runtime\n\tselect BR2_PACKAGE_XDG_DBUS_PROXY # runtime\n\tselect BR2_PACKAGE_LIBSECCOMP\n\thelp\n\t  Enable sandboxing of the processes used for network operation,\n\t  disk asccess, and Web content rendering.\n\ncomment \"sandboxing supports needs a toolchain w/ headers >= 3.12\"\n\tdepends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\nconfig BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA\n\tbool \"multimedia support\"\n\tselect BR2_PACKAGE_GSTREAMER1\n\tselect BR2_PACKAGE_GST1_PLUGINS_BAD\n\tselect BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PLAYBACK\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE\n\tselect BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP\n\tselect BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX\n\tselect BR2_PACKAGE_GST1_LIBAV\n\thelp\n\t  This option pulls in all of the required dependencies\n\t  to enable multimedia (video/audio) support.\n\nif BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA\n\nconfig BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM\n\tbool \"media-stream support\"\n\thelp\n\t  This option enables media-stream support.\n\nconfig BR2_PACKAGE_WPEWEBKIT_USE_GSTREAMER_GL\n\tbool \"use gstreamer-gl\"\n\tdefault y\n\tdepends on BR2_PACKAGE_GST1_PLUGINS_BASE_LIB_OPENGL_HAS_PLATFORM\n\thelp\n\t  Use the GStreamer GL elements for handling video content.\n\t  This is recommended as it improves performance of video\n\t  playback. In some target configurations incorrect rendering\n\t  might be produced, and disabling this option may help.\n\nendif\n\nconfig BR2_PACKAGE_WPEWEBKIT_WEBDRIVER\n\tbool \"WebDriver support\"\n\thelp\n\t  Enable support for WebDriver. This will build and install the\n\t  WebKitWebDriver program in the target.\n\nendif\n"
  },
  {
    "path": "package/wpewebkit/wpewebkit.hash",
    "content": "# From https://wpewebkit.org/releases/wpewebkit-2.32.4.tar.xz.sums\nmd5  94ca1cc3f7b2de8b96c59d6e59cafcd0  wpewebkit-2.32.4.tar.xz\nsha1  19b8ebdbfef193ca50f7625703d871db87624f86  wpewebkit-2.32.4.tar.xz\nsha256  381f1422cbc319db1aa42dda48de39590ed90ac3bec6b81ec83f3f2cae5c3eeb  wpewebkit-2.32.4.tar.xz\n\n# Hashes for license files:\nsha256  0b5d3a7cc325942567373b0ecd757d07c132e0ebd7c97bfc63f7e1a76094edb4  Source/WebCore/LICENSE-APPLE\nsha256  f2b3bd09663381deb99721109d22b47af1213bb43007a8b56a06c6375c8050ce  Source/WebCore/LICENSE-LGPL-2.1\n"
  },
  {
    "path": "package/wpewebkit/wpewebkit.mk",
    "content": "################################################################################\n#\n# wpewebkit\n#\n################################################################################\n\nWPEWEBKIT_VERSION = 2.32.4\nWPEWEBKIT_SITE = http://www.wpewebkit.org/releases\nWPEWEBKIT_SOURCE = wpewebkit-$(WPEWEBKIT_VERSION).tar.xz\nWPEWEBKIT_INSTALL_STAGING = YES\nWPEWEBKIT_LICENSE = LGPL-2.1+, BSD-2-Clause\nWPEWEBKIT_LICENSE_FILES = \\\n\tSource/WebCore/LICENSE-APPLE \\\n\tSource/WebCore/LICENSE-LGPL-2.1\nWPEWEBKIT_CPE_ID_VENDOR = wpewebkit\nWPEWEBKIT_CPE_ID_PRODUCT = wpe_webkit\nWPEWEBKIT_DEPENDENCIES = host-gperf host-python3 host-ruby \\\n\tharfbuzz cairo icu jpeg libepoxy libgcrypt libgles libsoup libtasn1 \\\n\tlibpng libxslt openjpeg wayland-protocols webp wpebackend-fdo\n\nWPEWEBKIT_CONF_OPTS = \\\n\t-DPORT=WPE \\\n\t-DENABLE_ACCESSIBILITY=OFF \\\n\t-DENABLE_API_TESTS=OFF \\\n\t-DENABLE_MINIBROWSER=OFF \\\n\t-DSILENCE_CROSS_COMPILATION_NOTICES=ON\n\nifeq ($(BR2_PACKAGE_WPEWEBKIT_SANDBOX),y)\nWPEWEBKIT_CONF_OPTS += \\\n\t-DENABLE_BUBBLEWRAP_SANDBOX=ON \\\n\t-DBWRAP_EXECUTABLE=/usr/bin/bwrap \\\n\t-DDBUS_PROXY_EXECUTABLE=/usr/bin/xdg-dbus-proxy\nWPEWEBKIT_DEPENDENCIES += libseccomp\nelse\nWPEWEBKIT_CONF_OPTS += -DENABLE_BUBBLEWRAP_SANDBOX=OFF\nendif\n\nifeq ($(BR2_PACKAGE_WPEWEBKIT_MULTIMEDIA),y)\nWPEWEBKIT_CONF_OPTS += \\\n\t-DENABLE_VIDEO=ON \\\n\t-DENABLE_WEB_AUDIO=ON\nWPEWEBKIT_DEPENDENCIES += gstreamer1 gst1-libav gst1-plugins-base\nelse\nWPEWEBKIT_CONF_OPTS += \\\n\t-DENABLE_VIDEO=OFF \\\n\t-DENABLE_WEB_AUDIO=OFF\nendif\n\nifeq ($(BR2_PACKAGE_WPEWEBKIT_MEDIA_STREAM),y)\nWPEWEBKIT_CONF_OPTS += -DENABLE_MEDIA_STREAM=ON\nWPEWEBKIT_DEPENDENCIES += gst1-plugins-bad\nelse\nWPEWEBKIT_CONF_OPTS += -DENABLE_MEDIA_STREAM=OFF\nendif\n\nifeq ($(BR2_PACKAGE_WPEWEBKIT_USE_GSTREAMER_GL),y)\nWPEWEBKIT_CONF_OPTS += -DUSE_GSTREAMER_GL=ON\nelse\nWPEWEBKIT_CONF_OPTS += -DUSE_GSTREAMER_GL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_WPEWEBKIT_WEBDRIVER),y)\nWPEWEBKIT_CONF_OPTS += -DENABLE_WEBDRIVER=ON\nelse\nWPEWEBKIT_CONF_OPTS += -DENABLE_WEBDRIVER=OFF\nendif\n\nifeq ($(BR2_PACKAGE_WOFF2),y)\nWPEWEBKIT_CONF_OPTS += -DUSE_WOFF2=ON\nWPEWEBKIT_DEPENDENCIES += woff2\nelse\nWPEWEBKIT_CONF_OPTS += -DUSE_WOFF2=OFF\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\nWPEWEBKIT_CONF_OPTS += -DUSE_SYSTEMD=ON\nWPEWEBKIT_DEPENDENCIES += systemd\nelse\nWPEWEBKIT_CONF_OPTS += -DUSE_SYSTEMD=OFF\nendif\n\n# JIT is not supported for MIPS r6, but the WebKit build system does not\n# have a check for these processors. The same goes for ARMv5 and ARMv6.\n# Disable JIT forcibly here and use the CLoop interpreter instead.\n#\n# Also, we have to disable the sampling profiler, which does NOT work\n# with ENABLE_C_LOOP.\n#\n# Upstream bugs: https://bugs.webkit.org/show_bug.cgi?id=191258\n#                https://bugs.webkit.org/show_bug.cgi?id=172765\n#\nifeq ($(BR2_ARM_CPU_ARMV5)$(BR2_ARM_CPU_ARMV6)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y)\nWPEWEBKIT_CONF_OPTS += -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON -DENABLE_SAMPLING_PROFILER=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/wqy-zenhei/Config.in",
    "content": "config BR2_PACKAGE_WQY_ZENHEI\n\tbool \"wqy-zenhei\"\n\thelp\n\t  \"WenQuanYi Zen Hei\" is a Hei-Ti Style (sans-serif) Chinese\n\t  font capable of text formatting and on-screen display of\n\t  both simplified and traditional forms of Chinese Hanzi\n\t  glyphs (among many other languages). Both the proportional\n\t  \"WenQuanYi Zen Hei\", as well as the monospaced typeface\n\t  \"WenQuanYi Zen Hei Mono\" provides over 35,000 glyphs,\n\t  including over 21,000 Chinese Hanzi. This font provides full\n\t  coverage of GBK (CP936) charset, CJK Unified Ideographs, as\n\t  well as the code-points needed for zh_CN, zh_SG, zh_TW,\n\t  zh_HK, zh_MO, ja (Japanese) and ko (Korean) locales for\n\t  fontconfig.\n\n\t  https://sourceforge.net/projects/wqy/\n"
  },
  {
    "path": "package/wqy-zenhei/wqy-zenhei.hash",
    "content": "# from https://sourceforge.net/projects/wqy/files/wqy-zenhei/0.9.45%20%28Fighting-state%20RC1%29/\nmd5  4c6c3f4e902dd5ee0a121e8c41d040bd  wqy-zenhei-0.9.45.tar.gz\nsha1  b86b65d3048ade868fcc89229cfac6baf80a3e54  wqy-zenhei-0.9.45.tar.gz\n# locally calculated\nsha256  e4b7e306475bf9427d1757578f0e4528930c84c44eaa3f167d4c42f110ee75d6  wqy-zenhei-0.9.45.tar.gz\nsha256  871c2a85e6bbf7bec65043820b706a265ed95d4e58c577fbb2c9f60c39c26ca7  COPYING\n"
  },
  {
    "path": "package/wqy-zenhei/wqy-zenhei.mk",
    "content": "################################################################################\n#\n# wqy-zenhei\n#\n################################################################################\n\nWQY_ZENHEI_VERSION = 0.9.45\nWQY_ZENHEI_SITE = https://downloads.sourceforge.net/project/wqy/wqy-zenhei/$(WQY_ZENHEI_VERSION)%20%28Fighting-state%20RC1%29\nWQY_ZENHEI_LICENSE = GPL-2.0-with-font-exception\nWQY_ZENHEI_LICENSE_FILES = COPYING\n\nifeq ($(BR2_PACKAGE_FONTCONFIG),y)\ndefine WQY_ZENHEI_FONTCONFIG_CONF_INSTALL_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/43-wqy-zenhei-sharp.conf \\\n\t\t$(TARGET_DIR)/usr/share/fontconfig/conf.avail/43-wqy-zenhei-sharp.conf\n\t$(INSTALL) -D -m 0644 $(@D)/44-wqy-zenhei.conf \\\n\t\t$(TARGET_DIR)/usr/share/fontconfig/conf.avail/44-wqy-zenhei.conf\nendef\nendif\n\ndefine WQY_ZENHEI_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0644 $(@D)/wqy-zenhei.ttc \\\n\t\t$(TARGET_DIR)/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc\n\t$(WQY_ZENHEI_FONTCONFIG_CONF_INSTALL_CMDS)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/wsapi/Config.in",
    "content": "config BR2_PACKAGE_WSAPI\n\tbool \"wsapi\"\n\tselect BR2_PACKAGE_COXPCALL if BR2_PACKAGE_LUA_5_1 # runtime\n\tselect BR2_PACKAGE_LUAFILESYSTEM # runtime\n\tselect BR2_PACKAGE_RINGS # runtime\n\thelp\n\t  API that abstracts the web server from Lua web applications.\n\n\t  https://keplerproject.github.io/wsapi/\n"
  },
  {
    "path": "package/wsapi/wsapi.hash",
    "content": "# computed by luarocks/buildroot\nsha256 1a0829dffd6bdbf99f5c4278d504cda5ede9344d5089bdcf5216c9eb2999ae22  wsapi-1.7-1.src.rock\nsha256 6aa14e3febf7a9e810ce672b015f5a5514241ce5d1c3a6a48f921f089d270159  wsapi/doc/us/license.html\nsha256 c7bf3061d00a96d10cb9dbc3a737d0af22594e2ef8f788842d7ab92eeaa864f2  wsapi/doc/us/license.md\n"
  },
  {
    "path": "package/wsapi/wsapi.mk",
    "content": "################################################################################\n#\n# wsapi\n#\n################################################################################\n\nWSAPI_VERSION = 1.7-1\nWSAPI_SUBDIR = wsapi\nWSAPI_LICENSE = MIT\nWSAPI_LICENSE_FILES = \\\n\t$(WSAPI_SUBDIR)/doc/us/license.html \\\n\t$(WSAPI_SUBDIR)/doc/us/license.md\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/wsapi-fcgi/Config.in",
    "content": "config BR2_PACKAGE_WSAPI_FCGI\n\tbool \"wsapi-fcgi\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBFCGI\n\tselect BR2_PACKAGE_WSAPI # runtime\n\thelp\n\t  WSAPI is an API that abstracts the web server from Lua web\n\t  applications. This is the rock that contains the FCGI module\n\t  lfcgi.\n\n\t  https://luarocks.org/modules/mascarenhas/wsapi-fcgi\n"
  },
  {
    "path": "package/wsapi-fcgi/wsapi-fcgi.hash",
    "content": "# computed by luarocks/buildroot\nsha256 14b77861638a5e863fd10d60ad460a961dc108ea5b915f71461a18d5e6be8e4e  wsapi-fcgi-1.7-1.src.rock\nsha256 6aa14e3febf7a9e810ce672b015f5a5514241ce5d1c3a6a48f921f089d270159  wsapi/doc/us/license.html\nsha256 c7bf3061d00a96d10cb9dbc3a737d0af22594e2ef8f788842d7ab92eeaa864f2  wsapi/doc/us/license.md\n"
  },
  {
    "path": "package/wsapi-fcgi/wsapi-fcgi.mk",
    "content": "################################################################################\n#\n# wsapi-fcgi\n#\n################################################################################\n\nWSAPI_FCGI_VERSION = 1.7-1\nWSAPI_FCGI_SUBDIR = wsapi\nWSAPI_FCGI_LICENSE = MIT\nWSAPI_FCGI_LICENSE_FILES = \\\n\t$(WSAPI_FCGI_SUBDIR)/doc/us/license.html \\\n\t$(WSAPI_FCGI_SUBDIR)/doc/us/license.md\nWSAPI_FCGI_DEPENDENCIES = libfcgi\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/wsapi-xavante/Config.in",
    "content": "config BR2_PACKAGE_WSAPI_XAVANTE\n\tbool \"wsapi-xavante\"\n\tselect BR2_PACKAGE_WSAPI # runtime\n\tselect BR2_PACKAGE_XAVANTE # runtime\n\thelp\n\t  WSAPI is an API that abstracts the web server from Lua web\n\t  applications. This is the rock that contains the Xavante\n\t  adapter and launcher.\n\n\t  https://keplerproject.github.io/wsapi/\n"
  },
  {
    "path": "package/wsapi-xavante/wsapi-xavante.hash",
    "content": "# computed by luarocks/buildroot\nsha256 01211bb80dab92f87cece6e31854d73ae4a2ce06af7c48423a54313d72adf9fb  wsapi-xavante-1.7-1.src.rock\nsha256 6aa14e3febf7a9e810ce672b015f5a5514241ce5d1c3a6a48f921f089d270159  wsapi/doc/us/license.html\nsha256 c7bf3061d00a96d10cb9dbc3a737d0af22594e2ef8f788842d7ab92eeaa864f2  wsapi/doc/us/license.md\n"
  },
  {
    "path": "package/wsapi-xavante/wsapi-xavante.mk",
    "content": "################################################################################\n#\n# wsapi-xavante\n#\n################################################################################\n\nWSAPI_XAVANTE_VERSION = 1.7-1\nWSAPI_XAVANTE_SUBDIR = wsapi\nWSAPI_XAVANTE_LICENSE = MIT\nWSAPI_XAVANTE_LICENSE_FILES = \\\n\t$(WSAPI_XAVANTE_SUBDIR)/doc/us/license.html \\\n\t$(WSAPI_XAVANTE_SUBDIR)/doc/us/license.md\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/x11r7/Config.in",
    "content": "menuconfig BR2_PACKAGE_XORG7\n\tbool \"X.org X Window System\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS # dlopen in xlib_libX11\n\thelp\n\t  Support for X11R7 libraries, servers, drivers, and/or\n\t  applications in the target.\n\n\t  http://xorg.freedesktop.org\n\nif BR2_PACKAGE_XORG7\n\tmenu \"X11R7 Servers\"\n\t\tsource package/x11r7/xserver_xorg-server/Config.in\n\tendmenu\n\tmenu \"X11R7 Libraries\"\n\t\tsource package/x11r7/libxcb/Config.in\n\t\tsource package/x11r7/xcb-util/Config.in\n\t\tsource package/x11r7/xcb-util-cursor/Config.in\n\t\tsource package/x11r7/xcb-util-image/Config.in\n\t\tsource package/x11r7/xcb-util-keysyms/Config.in\n\t\tsource package/x11r7/xcb-util-renderutil/Config.in\n\t\tsource package/x11r7/xcb-util-wm/Config.in\n\t\tsource package/x11r7/xlib_libFS/Config.in\n\t\tsource package/x11r7/xlib_libICE/Config.in\n\t\tsource package/x11r7/xlib_libSM/Config.in\n\t\tsource package/x11r7/xlib_libX11/Config.in\n\t\tsource package/x11r7/xlib_libXScrnSaver/Config.in\n\t\tsource package/x11r7/xlib_libXau/Config.in\n\t\tsource package/x11r7/xlib_libXaw/Config.in\n\t\tsource package/x11r7/xlib_libXcomposite/Config.in\n\t\tsource package/x11r7/xlib_libXcursor/Config.in\n\t\tsource package/x11r7/xlib_libXdamage/Config.in\n\t\tsource package/x11r7/xlib_libXdmcp/Config.in\n\t\tsource package/x11r7/xlib_libXext/Config.in\n\t\tsource package/x11r7/xlib_libXfixes/Config.in\n\t\tsource package/x11r7/xlib_libXfont/Config.in\n\t\tsource package/x11r7/xlib_libXfont2/Config.in\n\t\tsource package/x11r7/xlib_libXft/Config.in\n\t\tsource package/x11r7/xlib_libXi/Config.in\n\t\tsource package/x11r7/xlib_libXinerama/Config.in\n\t\tsource package/x11r7/xlib_libXmu/Config.in\n\t\tsource package/x11r7/xlib_libXpm/Config.in\n\t\tsource package/x11r7/xlib_libXrandr/Config.in\n\t\tsource package/x11r7/xlib_libXrender/Config.in\n\t\tsource package/x11r7/xlib_libXres/Config.in\n\t\tsource package/x11r7/xlib_libXt/Config.in\n\t\tsource package/x11r7/xlib_libXtst/Config.in\n\t\tsource package/x11r7/xlib_libXv/Config.in\n\t\tsource package/x11r7/xlib_libXvMC/Config.in\n\t\tsource package/x11r7/xlib_libXxf86dga/Config.in\n\t\tsource package/x11r7/xlib_libXxf86vm/Config.in\n\t\tsource package/x11r7/xlib_libdmx/Config.in\n\t\tsource package/x11r7/xlib_libfontenc/Config.in\n\t\tsource package/x11r7/xlib_libxkbfile/Config.in\n\t\tsource package/x11r7/xlib_libxshmfence/Config.in\n\t\tsource package/x11r7/xlib_xtrans/Config.in\n\tendmenu\n\tmenu \"X11R7 Applications\"\n\t\tsource package/x11r7/xapp_appres/Config.in\n\t\tsource package/x11r7/xapp_bdftopcf/Config.in\n\t\tsource package/x11r7/xapp_beforelight/Config.in\n\t\tsource package/x11r7/xapp_bitmap/Config.in\n\t\tsource package/x11r7/xapp_editres/Config.in\n\t\tsource package/x11r7/xapp_fonttosfnt/Config.in\n\t\tsource package/x11r7/xapp_fslsfonts/Config.in\n\t\tsource package/x11r7/xapp_fstobdf/Config.in\n\t\tsource package/x11r7/xapp_iceauth/Config.in\n\t\tsource package/x11r7/xapp_ico/Config.in\n\t\tsource package/x11r7/xapp_listres/Config.in\n\t\tsource package/x11r7/xapp_luit/Config.in\n\t\tsource package/x11r7/xapp_mkfontscale/Config.in\n\t\tsource package/x11r7/xapp_oclock/Config.in\n\t\tsource package/x11r7/xapp_rgb/Config.in\n\t\tsource package/x11r7/xapp_rstart/Config.in\n\t\tsource package/x11r7/xapp_scripts/Config.in\n\t\tsource package/x11r7/xapp_sessreg/Config.in\n\t\tsource package/x11r7/xapp_setxkbmap/Config.in\n\t\tsource package/x11r7/xapp_showfont/Config.in\n\t\tsource package/x11r7/xapp_smproxy/Config.in\n\t\tsource package/x11r7/xapp_twm/Config.in\n\t\tsource package/x11r7/xapp_viewres/Config.in\n\t\tsource package/x11r7/xapp_x11perf/Config.in\n\t\tsource package/x11r7/xapp_xauth/Config.in\n\t\tsource package/x11r7/xapp_xbacklight/Config.in\n\t\tsource package/x11r7/xapp_xbiff/Config.in\n\t\tsource package/x11r7/xapp_xcalc/Config.in\n\t\tsource package/x11r7/xapp_xclipboard/Config.in\n\t\tsource package/x11r7/xapp_xclock/Config.in\n\t\tsource package/x11r7/xapp_xcmsdb/Config.in\n\t\tsource package/x11r7/xapp_xcompmgr/Config.in\n\t\tsource package/x11r7/xapp_xconsole/Config.in\n\t\tsource package/x11r7/xapp_xcursorgen/Config.in\n\t\tsource package/x11r7/xapp_xdbedizzy/Config.in\n\t\tsource package/x11r7/xapp_xditview/Config.in\n\t\tsource package/x11r7/xapp_xdm/Config.in\n\t\tsource package/x11r7/xapp_xdpyinfo/Config.in\n\t\tsource package/x11r7/xapp_xdriinfo/Config.in\n\t\tsource package/x11r7/xapp_xedit/Config.in\n\t\tsource package/x11r7/xapp_xev/Config.in\n\t\tsource package/x11r7/xapp_xeyes/Config.in\n\t\tsource package/x11r7/xapp_xf86dga/Config.in\n\t\tsource package/x11r7/xapp_xfd/Config.in\n\t\tsource package/x11r7/xapp_xfindproxy/Config.in\n\t\tsource package/x11r7/xapp_xfontsel/Config.in\n\t\tsource package/x11r7/xapp_xfs/Config.in\n\t\tsource package/x11r7/xapp_xfsinfo/Config.in\n\t\tsource package/x11r7/xapp_xgamma/Config.in\n\t\tsource package/x11r7/xapp_xgc/Config.in\n\t\tsource package/x11r7/xapp_xhost/Config.in\n\t\tsource package/x11r7/xapp_xinit/Config.in\n\t\tsource package/x11r7/xapp_xinput/Config.in\n\t\tsource package/x11r7/xapp_xinput-calibrator/Config.in\n\t\tsource package/x11r7/xapp_xkbcomp/Config.in\n\t\tsource package/x11r7/xapp_xkbevd/Config.in\n\t\tsource package/x11r7/xapp_xkbprint/Config.in\n\t\tsource package/x11r7/xapp_xkbutils/Config.in\n\t\tsource package/x11r7/xapp_xkill/Config.in\n\t\tsource package/x11r7/xapp_xload/Config.in\n\t\tsource package/x11r7/xapp_xlogo/Config.in\n\t\tsource package/x11r7/xapp_xlsatoms/Config.in\n\t\tsource package/x11r7/xapp_xlsclients/Config.in\n\t\tsource package/x11r7/xapp_xlsfonts/Config.in\n\t\tsource package/x11r7/xapp_xmag/Config.in\n\t\tsource package/x11r7/xapp_xman/Config.in\n\t\tsource package/x11r7/xapp_xmessage/Config.in\n\t\tsource package/x11r7/xapp_xmh/Config.in\n\t\tsource package/x11r7/xapp_xmodmap/Config.in\n\t\tsource package/x11r7/xapp_xmore/Config.in\n\t\tsource package/x11r7/xapp_xpr/Config.in\n\t\tsource package/x11r7/xapp_xprop/Config.in\n\t\tsource package/x11r7/xapp_xrandr/Config.in\n\t\tsource package/x11r7/xapp_xrdb/Config.in\n\t\tsource package/x11r7/xapp_xrefresh/Config.in\n\t\tsource package/x11r7/xapp_xset/Config.in\n\t\tsource package/x11r7/xapp_xsetmode/Config.in\n\t\tsource package/x11r7/xapp_xsetpointer/Config.in\n\t\tsource package/x11r7/xapp_xsetroot/Config.in\n\t\tsource package/x11r7/xapp_xsm/Config.in\n\t\tsource package/x11r7/xapp_xstdcmap/Config.in\n\t\tsource package/x11r7/xapp_xvidtune/Config.in\n\t\tsource package/x11r7/xapp_xvinfo/Config.in\n\t\tsource package/x11r7/xapp_xwd/Config.in\n\t\tsource package/x11r7/xapp_xwininfo/Config.in\n\t\tsource package/x11r7/xapp_xwud/Config.in\n\tendmenu\n\tif BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR\n\tmenu \"X11R7 Drivers\"\n\t\tsource package/x11r7/xdriver_xf86-input-evdev/Config.in\n\t\tsource package/x11r7/xdriver_xf86-input-joystick/Config.in\n\t\tsource package/x11r7/xdriver_xf86-input-keyboard/Config.in\n\t\tsource package/x11r7/xdriver_xf86-input-libinput/Config.in\n\t\tsource package/x11r7/xdriver_xf86-input-mouse/Config.in\n\t\tsource package/x11r7/xdriver_xf86-input-synaptics/Config.in\n\t\tsource package/x11r7/xdriver_xf86-input-tslib/Config.in\n\t\tsource package/x11r7/xdriver_xf86-input-vmmouse/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-amdgpu/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-ark/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-ast/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-ati/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-cirrus/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-dummy/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-fbdev/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-fbturbo/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-geode/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-glint/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-i128/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-imx/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-imx-viv/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-intel/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-mach64/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-mga/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-neomagic/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-nouveau/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-nv/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-openchrome/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-qxl/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-r128/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-savage/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-siliconmotion/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-sis/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-tdfx/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-tga/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-trident/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-vesa/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-vmware/Config.in\n\t\tsource package/x11r7/xdriver_xf86-video-voodoo/Config.in\n\tendmenu\n\tendif\n\tmenu \"X11R7 Fonts\"\n\t\tsource package/x11r7/xfont_font-util/Config.in\n\t\tsource package/x11r7/xfont_encodings/Config.in\n\t\tsource package/x11r7/xfont_font-adobe-100dpi/Config.in\n\t\tsource package/x11r7/xfont_font-adobe-75dpi/Config.in\n\t\tsource package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in\n\t\tsource package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in\n\t\tsource package/x11r7/xfont_font-adobe-utopia-type1/Config.in\n\t\tsource package/x11r7/xfont_font-alias/Config.in\n\t\tsource package/x11r7/xfont_font-arabic-misc/Config.in\n\t\tsource package/x11r7/xfont_font-bh-100dpi/Config.in\n\t\tsource package/x11r7/xfont_font-bh-75dpi/Config.in\n\t\tsource package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in\n\t\tsource package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in\n\t\tsource package/x11r7/xfont_font-bh-ttf/Config.in\n\t\tsource package/x11r7/xfont_font-bh-type1/Config.in\n\t\tsource package/x11r7/xfont_font-bitstream-100dpi/Config.in\n\t\tsource package/x11r7/xfont_font-bitstream-75dpi/Config.in\n\t\tsource package/x11r7/xfont_font-bitstream-type1/Config.in\n\t\tsource package/x11r7/xfont_font-cronyx-cyrillic/Config.in\n\t\tsource package/x11r7/xfont_font-cursor-misc/Config.in\n\t\tsource package/x11r7/xfont_font-daewoo-misc/Config.in\n\t\tsource package/x11r7/xfont_font-dec-misc/Config.in\n\t\tsource package/x11r7/xfont_font-ibm-type1/Config.in\n\t\tsource package/x11r7/xfont_font-isas-misc/Config.in\n\t\tsource package/x11r7/xfont_font-jis-misc/Config.in\n\t\tsource package/x11r7/xfont_font-micro-misc/Config.in\n\t\tsource package/x11r7/xfont_font-misc-cyrillic/Config.in\n\t\tsource package/x11r7/xfont_font-misc-ethiopic/Config.in\n\t\tsource package/x11r7/xfont_font-misc-meltho/Config.in\n\t\tsource package/x11r7/xfont_font-misc-misc/Config.in\n\t\tsource package/x11r7/xfont_font-mutt-misc/Config.in\n\t\tsource package/x11r7/xfont_font-schumacher-misc/Config.in\n\t\tsource package/x11r7/xfont_font-screen-cyrillic/Config.in\n\t\tsource package/x11r7/xfont_font-sony-misc/Config.in\n\t\tsource package/x11r7/xfont_font-sun-misc/Config.in\n\t\tsource package/x11r7/xfont_font-winitzki-cyrillic/Config.in\n\t\tsource package/x11r7/xfont_font-xfree86-type1/Config.in\n\tendmenu\n\tmenu \"X11R7 X protocols\"\n\t\tsource package/x11r7/xcb-proto/Config.in\n\t\tsource package/x11r7/xorgproto/Config.in\n\tendmenu\n\tmenu \"X11R7 Utilities\"\n\t\tsource package/x11r7/xutil_makedepend/Config.in\n\t\tsource package/x11r7/mcookie/Config.in\n\tendmenu\n\tmenu \"X11R7 Other data\"\n\t\tsource package/x11r7/xdata_xbitmaps/Config.in\n\t\tsource package/x11r7/xdata_xcursor-themes/Config.in\n\t\tsource package/x11r7/xcursor-transparent-theme/Config.in\n\tendmenu\nendif\n\ncomment \"X.org needs a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/x11r7/libxcb/Config.in",
    "content": "config BR2_PACKAGE_LIBXCB\n\tbool \"libxcb\"\n\tselect BR2_PACKAGE_XCB_PROTO\n\tselect BR2_PACKAGE_XLIB_LIBXDMCP\n\tselect BR2_PACKAGE_XLIB_LIBXAU\n\thelp\n\t  The X protocol C-language Binding (XCB) is a replacement for\n\t  Xlib featuring a small footprint, latency hiding, direct\n\t  access to the protocol, improved threading support, and\n\t  extensibility.\n\n\t  http://xcb.freedesktop.org/\n"
  },
  {
    "path": "package/x11r7/libxcb/libxcb.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2020-February/003039.html\nsha256 a55ed6db98d43469801262d81dc2572ed124edc3db31059d4e9916eb9f844c34  libxcb-1.14.tar.xz\nsha512 b90a23204b0d2c29d8b115577edb01df0465e02d6a8876550fecd62375d24a5d5f872ddd5946772ddba077cadce75b12c7a6d218469dc30b5b92bc82188e8bc6  libxcb-1.14.tar.xz\n# Locally computed\nsha256 c5ffbfeaa501071ceeb97b7de2c0d703fdaa35de01c0fb6cbac1c28453a3e9fd  COPYING\n"
  },
  {
    "path": "package/x11r7/libxcb/libxcb.mk",
    "content": "################################################################################\n#\n# libxcb\n#\n################################################################################\n\nLIBXCB_VERSION = 1.14\nLIBXCB_SOURCE = libxcb-$(LIBXCB_VERSION).tar.xz\nLIBXCB_SITE = http://xcb.freedesktop.org/dist\nLIBXCB_LICENSE = MIT\nLIBXCB_LICENSE_FILES = COPYING\nLIBXCB_CPE_ID_VENDOR = x\n\nLIBXCB_INSTALL_STAGING = YES\n\nLIBXCB_DEPENDENCIES = \\\n\thost-libxslt xcb-proto xlib_libXdmcp xlib_libXau \\\n\thost-xcb-proto host-python3 host-pkgconf\nHOST_LIBXCB_DEPENDENCIES = \\\n\thost-libxslt host-xcb-proto host-xlib_libXdmcp \\\n\thost-xlib_libXau host-python3 host-pkgconf\n\nLIBXCB_CONF_OPTS = --with-doxygen=no\nHOST_LIBXCB_CONF_OPTS = --with-doxygen=no\n\n# Force detection of Buildroot host-python3 over system python\nLIBXCB_CONF_OPTS += ac_cv_path_PYTHON=$(HOST_DIR)/bin/python3\nHOST_LIBXCB_CONF_OPTS += ac_cv_path_PYTHON=$(HOST_DIR)/bin/python3\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/mcookie/Config.in",
    "content": "config BR2_PACKAGE_MCOOKIE\n\tbool \"mcookie\"\n\thelp\n\t  cookie generator for X server\n\n\t  http://www.x.org\n"
  },
  {
    "path": "package/x11r7/mcookie/mcookie.c",
    "content": "/* mcookie.c -- Generates random numbers for xauth\n * Created: Fri Feb  3 10:42:48 1995 by faith@cs.unc.edu\n * Revised: Fri Mar 19 07:48:01 1999 by faith@acm.org\n * Public Domain 1995, 1999 Rickard E. Faith (faith@acm.org)\n * This program comes with ABSOLUTELY NO WARRANTY.\n * \n * $Id: mcookie.c,v 1.5 1997/07/06 00:13:06 aebr Exp $\n *\n * This program gathers some random bits of data and used the MD5\n * message-digest algorithm to generate a 128-bit hexadecimal number for\n * use with xauth(1).\n *\n * NOTE: Unless /dev/random is available, this program does not actually\n * gather 128 bits of random information, so the magic cookie generated\n * will be considerably easier to guess than one might expect.\n *\n * 1999-02-22 Arkadiusz Mikiewicz <misiek@pld.ORG.PL>\n * - added Native Language Support\n * 1999-03-21 aeb: Added some fragments of code from Colin Plumb.\n *\n */\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <fcntl.h>\n#include <sys/time.h>\n#include <time.h>\n#include <unistd.h>\n\n#define BUFFERSIZE 4096\n\n\n#ifndef MD5_H\n#define MD5_H\n\n#if defined (__alpha__) || defined (__ia64__) || defined (__x86_64__)\ntypedef unsigned int uint32;\n#else\ntypedef unsigned long uint32;\n#endif\n\nstruct MD5Context {\n\tuint32 buf[4];\n\tuint32 bits[2];\n\tunsigned char in[64];\n};\n\nvoid MD5Init(struct MD5Context *context);\nvoid MD5Update(struct MD5Context *context, unsigned char const *buf,\n\t       unsigned len);\nvoid MD5Final(unsigned char digest[16], struct MD5Context *context);\nvoid MD5Transform(uint32 buf[4], uint32 const in[16]);\n\n/*\n * This is needed to make RSAREF happy on some MS-DOS compilers.\n */\ntypedef struct MD5Context MD5_CTX;\n\n#endif /* !MD5_H */\n\n\n\n/*\n * This code implements the MD5 message-digest algorithm.\n * The algorithm is due to Ron Rivest.  This code was\n * written by Colin Plumb in 1993, no copyright is claimed.\n * This code is in the public domain; do with it what you wish.\n *\n * Equivalent code is available from RSA Data Security, Inc.\n * This code has been tested against that, and is equivalent,\n * except that you don't need to include two pages of legalese\n * with every copy.\n *\n * To compute the message digest of a chunk of bytes, declare an\n * MD5Context structure, pass it to MD5Init, call MD5Update as\n * needed on buffers full of bytes, and then call MD5Final, which\n * will fill a supplied 16-byte array with the digest.\n */\n#include <string.h>\t\t/* for memcpy() */\n#include <endian.h>\n\n#if __BYTE_ORDER == __LITTLE_ENDIAN\n#define byteReverse(buf, len)\t/* Nothing */\n#else\nvoid byteReverse(unsigned char *buf, unsigned longs);\n\n/*\n * Note: this code is harmless on little-endian machines.\n */\nvoid byteReverse(unsigned char *buf, unsigned longs)\n{\n    uint32 t;\n    do {\n\tt = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |\n\t    ((unsigned) buf[1] << 8 | buf[0]);\n\t*(uint32 *) buf = t;\n\tbuf += 4;\n    } while (--longs);\n}\n#endif\n\n/*\n * Start MD5 accumulation.  Set bit count to 0 and buffer to mysterious\n * initialization constants.\n */\nvoid MD5Init(struct MD5Context *ctx)\n{\n    ctx->buf[0] = 0x67452301;\n    ctx->buf[1] = 0xefcdab89;\n    ctx->buf[2] = 0x98badcfe;\n    ctx->buf[3] = 0x10325476;\n\n    ctx->bits[0] = 0;\n    ctx->bits[1] = 0;\n}\n\n/*\n * Update context to reflect the concatenation of another buffer full\n * of bytes.\n */\nvoid MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len)\n{\n    uint32 t;\n\n    /* Update bitcount */\n\n    t = ctx->bits[0];\n    if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)\n\tctx->bits[1]++;\t\t/* Carry from low to high */\n    ctx->bits[1] += len >> 29;\n\n    t = (t >> 3) & 0x3f;\t/* Bytes already in shsInfo->data */\n\n    /* Handle any leading odd-sized chunks */\n\n    if (t) {\n\tunsigned char *p = (unsigned char *) ctx->in + t;\n\n\tt = 64 - t;\n\tif (len < t) {\n\t    memcpy(p, buf, len);\n\t    return;\n\t}\n\tmemcpy(p, buf, t);\n\tbyteReverse(ctx->in, 16);\n\tMD5Transform(ctx->buf, (uint32 *) ctx->in);\n\tbuf += t;\n\tlen -= t;\n    }\n    /* Process data in 64-byte chunks */\n\n    while (len >= 64) {\n\tmemcpy(ctx->in, buf, 64);\n\tbyteReverse(ctx->in, 16);\n\tMD5Transform(ctx->buf, (uint32 *) ctx->in);\n\tbuf += 64;\n\tlen -= 64;\n    }\n\n    /* Handle any remaining bytes of data. */\n\n    memcpy(ctx->in, buf, len);\n}\n\n/*\n * Final wrapup - pad to 64-byte boundary with the bit pattern \n * 1 0* (64-bit count of bits processed, MSB-first)\n */\nvoid MD5Final(unsigned char digest[16], struct MD5Context *ctx)\n{\n    unsigned count;\n    unsigned char *p;\n\n    /* Compute number of bytes mod 64 */\n    count = (ctx->bits[0] >> 3) & 0x3F;\n\n    /* Set the first char of padding to 0x80.  This is safe since there is\n       always at least one byte free */\n    p = ctx->in + count;\n    *p++ = 0x80;\n\n    /* Bytes of padding needed to make 64 bytes */\n    count = 64 - 1 - count;\n\n    /* Pad out to 56 mod 64 */\n    if (count < 8) {\n\t/* Two lots of padding:  Pad the first block to 64 bytes */\n\tmemset(p, 0, count);\n\tbyteReverse(ctx->in, 16);\n\tMD5Transform(ctx->buf, (uint32 *) ctx->in);\n\n\t/* Now fill the next block with 56 bytes */\n\tmemset(ctx->in, 0, 56);\n    } else {\n\t/* Pad block to 56 bytes */\n\tmemset(p, 0, count - 8);\n    }\n    byteReverse(ctx->in, 14);\n\n    /* Append length in bits and transform */\n    ((uint32 *) ctx->in)[14] = ctx->bits[0];\n    ((uint32 *) ctx->in)[15] = ctx->bits[1];\n\n    MD5Transform(ctx->buf, (uint32 *) ctx->in);\n    byteReverse((unsigned char *) ctx->buf, 4);\n    memcpy(digest, ctx->buf, 16);\n    memset(ctx, 0, sizeof(*ctx));\t/* In case it's sensitive */\n}\n\n/* The four core functions - F1 is optimized somewhat */\n\n/* #define F1(x, y, z) (x & y | ~x & z) */\n#define F1(x, y, z) (z ^ (x & (y ^ z)))\n#define F2(x, y, z) F1(z, x, y)\n#define F3(x, y, z) (x ^ y ^ z)\n#define F4(x, y, z) (y ^ (x | ~z))\n\n/* This is the central step in the MD5 algorithm. */\n#define MD5STEP(f, w, x, y, z, data, s) \\\n\t( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )\n\n/*\n * The core of the MD5 algorithm, this alters an existing MD5 hash to\n * reflect the addition of 16 longwords of new data.  MD5Update blocks\n * the data and converts bytes into longwords for this routine.\n */\nvoid MD5Transform(uint32 buf[4], uint32 const in[16])\n{\n    register uint32 a, b, c, d;\n\n    a = buf[0];\n    b = buf[1];\n    c = buf[2];\n    d = buf[3];\n\n    MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);\n    MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);\n    MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);\n    MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);\n    MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);\n    MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);\n    MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);\n    MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);\n    MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);\n    MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);\n    MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);\n    MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);\n    MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);\n    MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);\n    MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);\n    MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);\n\n    MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);\n    MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);\n    MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);\n    MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);\n    MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);\n    MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);\n    MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);\n    MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);\n    MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);\n    MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);\n    MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);\n    MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);\n    MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);\n    MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);\n    MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);\n    MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);\n\n    MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);\n    MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);\n    MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);\n    MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);\n    MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);\n    MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);\n    MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);\n    MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);\n    MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);\n    MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);\n    MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);\n    MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);\n    MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);\n    MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);\n    MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);\n    MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);\n\n    MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);\n    MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);\n    MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);\n    MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);\n    MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);\n    MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);\n    MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);\n    MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);\n    MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);\n    MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);\n    MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);\n    MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);\n    MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);\n    MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);\n    MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);\n    MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);\n\n    buf[0] += a;\n    buf[1] += b;\n    buf[2] += c;\n    buf[3] += d;\n}\n\n\n\n\nstruct rngs {\n   const char *path;\n   int minlength, maxlength;\n} rngs[] = {\n   { \"/dev/random\",              16,  16 }, /* 16 bytes = 128 bits suffice */\n   { \"/proc/interrupts\",          0,   0 },\n   { \"/proc/slabinfo\",            0,   0 },\n   { \"/proc/stat\",                0,   0 },\n   { \"/dev/urandom\",             32,  64 },\n};\n#define RNGS (sizeof(rngs)/sizeof(struct rngs))\n\nint Verbose = 0;\n\n/* The basic function to hash a file */\nstatic off_t\nhash_file(struct MD5Context *ctx, int fd)\n{\n   off_t count = 0;\n   ssize_t r;\n   unsigned char buf[BUFFERSIZE];\n\n   while ((r = read(fd, buf, sizeof(buf))) > 0) {\n      MD5Update(ctx, buf, r);\n      count += r;\n   }\n   /* Separate files with a null byte */\n   buf[0] = 0;\n   MD5Update(ctx, buf, 1);\n   return count;\n}\n\nint main( int argc, char **argv )\n{\n   int               i;\n   struct MD5Context ctx;\n   unsigned char     digest[16];\n   unsigned char     buf[BUFFERSIZE];\n   int               fd;\n   int               c;\n   pid_t             pid;\n   char              *file = NULL;\n   int               r;\n   struct timeval    tv;\n   struct timezone   tz;\n\n   while ((c = getopt( argc, argv, \"vf:\" )) != -1)\n      switch (c) {\n      case 'v': ++Verbose;     break;\n      case 'f': file = optarg; break;\n      }\n\n   MD5Init( &ctx );\n   \n   gettimeofday( &tv, &tz );\n   MD5Update( &ctx, (unsigned char *)&tv, sizeof( tv ) );\n   pid = getppid();\n   MD5Update( &ctx, (unsigned char *)&pid, sizeof( pid ));\n   pid = getpid();\n   MD5Update( &ctx, (unsigned char *)&pid, sizeof( pid ));\n\n   if (file) {\n      int count = 0;\n      \n      if (file[0] == '-' && !file[1])\n\t fd = fileno(stdin);\n      else\n\t fd = open( file, O_RDONLY );\n\n      if (fd < 0) {\n\t fprintf( stderr, \"Could not open %s\\n\", file );\n      } else {\n         count = hash_file( &ctx, fd );\n\t if (Verbose)\n\t    fprintf( stderr, \"Got %d bytes from %s\\n\", count, file );\n\n\t if (file[0] != '-' || file[1]) close( fd );\n      }\n   }\n\n   for (i = 0; i < RNGS; i++) {\n      if ((fd = open( rngs[i].path, O_RDONLY|O_NONBLOCK )) >= 0) {\n\t int count = sizeof(buf);\n\n\t if (rngs[i].maxlength && count > rngs[i].maxlength)\n\t    count = rngs[i].maxlength;\n\t r = read( fd, buf, count );\n\t if (r > 0)\n\t    MD5Update( &ctx, buf, r );\n\t else\n\t    r = 0;\n\t close( fd );\n\t if (Verbose)\n\t    fprintf( stderr, \"Got %d bytes from %s\\n\", r, rngs[i].path );\n\t if (rngs[i].minlength && r >= rngs[i].minlength)\n\t    break;\n      } else if (Verbose)\n\t fprintf( stderr, \"Could not open %s\\n\", rngs[i].path );\n   }\n\n   MD5Final( digest, &ctx );\n   for (i = 0; i < 16; i++) printf( \"%02x\", digest[i] );\n   putchar ( '\\n' );\n   \n   /*\n    * The following is important for cases like disk full, so shell scripts\n    * can bomb out properly rather than think they succeeded.\n    */\n   if (fflush(stdout) < 0 || fclose(stdout) < 0)\n      return 1;\n\n   return 0;\n}\n"
  },
  {
    "path": "package/x11r7/mcookie/mcookie.mk",
    "content": "################################################################################\n#\n# mcookie\n#\n################################################################################\n\nMCOOKIE_LICENSE = Public Domain\n\ndefine MCOOKIE_EXTRACT_CMDS\n\tcp package/x11r7/mcookie/mcookie.c $(@D)/\nendef\n\ndefine MCOOKIE_BUILD_CMDS\n\t(cd $(@D); $(TARGET_CC) -Wall -Os -s mcookie.c -o mcookie)\nendef\n\ndefine MCOOKIE_INSTALL_TARGET_CMDS\n\tinstall -m 0755 -D $(@D)/mcookie $(TARGET_DIR)/usr/bin/mcookie\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/x11r7/x11r7.mk",
    "content": "include $(sort $(wildcard package/x11r7/*/*.mk))\n"
  },
  {
    "path": "package/x11r7/xapp_appres/Config.in",
    "content": "config BR2_PACKAGE_XAPP_APPRES\n\tbool \"appres\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\thelp\n\t  list X application resource database\n"
  },
  {
    "path": "package/x11r7/xapp_appres/xapp_appres.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002847.html\nmd5 f544e701043249d2bb3deed48314bc55  appres-1.0.5.tar.bz2\nsha1 5e5dbffd0a125732bb8bb8a202e04555a9604089  appres-1.0.5.tar.bz2\nsha256 ffad893712c81943b919e3cbfe46fc65259cc0d9eb96d5e658670e3fbb265928  appres-1.0.5.tar.bz2\nsha512 70825563cd80f0f433c48ab2fdae888072939c1b22fb22340b70b9444c97916275ed92c9e5bf9a06bb76c32a5371b89ff7c0211a9a47a227c88311078c2c4137  appres-1.0.5.tar.bz2\n# Locally computed\nsha256 5969302729a9621fd526a7f9942a51a29b858e0b682ffd28eeda5fc4dfaddf55  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_appres/xapp_appres.mk",
    "content": "################################################################################\n#\n# xapp_appres\n#\n################################################################################\n\nXAPP_APPRES_VERSION = 1.0.5\nXAPP_APPRES_SOURCE = appres-$(XAPP_APPRES_VERSION).tar.bz2\nXAPP_APPRES_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_APPRES_LICENSE = MIT\nXAPP_APPRES_LICENSE_FILES = COPYING\nXAPP_APPRES_DEPENDENCIES = xlib_libX11 xlib_libXt\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_bdftopcf/Config.in",
    "content": "config BR2_PACKAGE_XAPP_BDFTOPCF\n\tbool \"bdftopcf\"\n\tselect BR2_PACKAGE_XLIB_LIBXFONT\n\thelp\n\t  X.Org bdftopcf application\n"
  },
  {
    "path": "package/x11r7/xapp_bdftopcf/xapp_bdftopcf.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2017-November/002821.html\nmd5 2a455d3c02390597feb9cefb3fe97a45  bdftopcf-1.1.tar.bz2\nsha1 48a783337a5aa49ebc102c9788ff0f43ea35c5c4  bdftopcf-1.1.tar.bz2\nsha256 4b4df05fc53f1e98993638d6f7e178d95b31745c4568cee407e167491fd311a2  bdftopcf-1.1.tar.bz2\nsha512 7b790e8d512ca2812ac889c156ef91c48798b4744a6857e5b17e0128764b5afa8c5426fe5de05a9819d64745116718db4221b3e657e3c2633465e87179c44bec  bdftopcf-1.1.tar.bz2\n\n# Locally calculated\nsha256 a437fb5272ba507c2977b2ef623bb391270f521b2a20271ed044785f4eaa5dbc  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_bdftopcf/xapp_bdftopcf.mk",
    "content": "################################################################################\n#\n# xapp_bdftopcf\n#\n################################################################################\n\nXAPP_BDFTOPCF_VERSION = 1.1\nXAPP_BDFTOPCF_SOURCE = bdftopcf-$(XAPP_BDFTOPCF_VERSION).tar.bz2\nXAPP_BDFTOPCF_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_BDFTOPCF_LICENSE = MIT\nXAPP_BDFTOPCF_LICENSE_FILES = COPYING\nXAPP_BDFTOPCF_DEPENDENCIES = xlib_libXfont\nHOST_XAPP_BDFTOPCF_DEPENDENCIES = host-xlib_libXfont\n\n# needed for linking against libXfont\nXAPP_BDFTOPCF_MAKE_OPTS += LIBS=-ldl\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_beforelight/Config.in",
    "content": "config BR2_PACKAGE_XAPP_BEFORELIGHT\n\tbool \"beforelight\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXSCRNSAVER\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\thelp\n\t  screen saver\n"
  },
  {
    "path": "package/x11r7/xapp_beforelight/xapp_beforelight.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2013-January/002131.html\nsha256  8fcab6f15148ca680c0d3da8de7dcb41f8e6a076f442cf8bdcf272be9e348166  beforelight-1.0.5.tar.bz2\n# Locally computed\nsha256  27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_beforelight/xapp_beforelight.mk",
    "content": "################################################################################\n#\n# xapp_beforelight\n#\n################################################################################\n\nXAPP_BEFORELIGHT_VERSION = 1.0.5\nXAPP_BEFORELIGHT_SOURCE = beforelight-$(XAPP_BEFORELIGHT_VERSION).tar.bz2\nXAPP_BEFORELIGHT_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_BEFORELIGHT_LICENSE = MIT\nXAPP_BEFORELIGHT_LICENSE_FILES = COPYING\nXAPP_BEFORELIGHT_DEPENDENCIES = xlib_libX11 xlib_libXScrnSaver xlib_libXaw xlib_libXt\nXAPP_BEFORELIGHT_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_bitmap/Config.in",
    "content": "config BR2_PACKAGE_XAPP_BITMAP\n\tbool \"bitmap\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\tselect BR2_PACKAGE_XDATA_XBITMAPS\n\thelp\n\t  X.Org bitmap application\n"
  },
  {
    "path": "package/x11r7/xapp_bitmap/xapp_bitmap.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-February/002941.html\nmd5 b94172053ffa282bd88274f1e6a677f1  bitmap-1.0.9.tar.bz2\nsha1 26ba3130b14a2db81b427f2353ac21301c5d2527  bitmap-1.0.9.tar.bz2\nsha256 e0f3afad5272d796f54c33fa1b5bd1fb3f62843a54b28c87196d06a35123e5f5  bitmap-1.0.9.tar.bz2\nsha512 873c626c72a0f4025fe8c8aeedbf3fe4ee5657fb487ad7410406a20da518c0358041dc45c2549926cc10e1d031977073b9d1ddb32830fdce95b716a52fe44456  bitmap-1.0.9.tar.bz2\n# Locally computed\nsha256 03be44611edac06827bd13c0815a67ecd37ffe8fb1b9e210d6545d79bec89a3a  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_bitmap/xapp_bitmap.mk",
    "content": "################################################################################\n#\n# xapp_bitmap\n#\n################################################################################\n\nXAPP_BITMAP_VERSION = 1.0.9\nXAPP_BITMAP_SOURCE = bitmap-$(XAPP_BITMAP_VERSION).tar.bz2\nXAPP_BITMAP_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_BITMAP_LICENSE = MIT\nXAPP_BITMAP_LICENSE_FILES = COPYING\nXAPP_BITMAP_DEPENDENCIES = xlib_libX11 xlib_libXaw xlib_libXmu xdata_xbitmaps\nXAPP_BITMAP_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_editres/Config.in",
    "content": "config BR2_PACKAGE_XAPP_EDITRES\n\tbool \"editres\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\thelp\n\t  a dynamic resource editor for X Toolkit applications\n"
  },
  {
    "path": "package/x11r7/xapp_editres/xapp_editres.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002846.html\nmd5 526cf79edc0c5e379aefb21539243f96  editres-1.0.7.tar.bz2\nsha1 389e953ebb5080564a6780cb34b72bafae7f5540  editres-1.0.7.tar.bz2\nsha256 089ad34628e55a779b97e369f55fb12caefc96d684b508d9022eb9e12b775c11  editres-1.0.7.tar.bz2\nsha512 b9c928b556116bf50cf4b6ea779bdc9fedf29f5db3e6a8cc75c122578c92e1cc530a81b226ec24aad183b8ebc2de570f200314b0d9ce7883b6e3306007365b32  editres-1.0.7.tar.bz2\n# Locally computed\nsha256 b1049cf96db2c00428b8313541ab333ec4e06f102955f3edd44f88ec43b0acd6  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_editres/xapp_editres.mk",
    "content": "################################################################################\n#\n# xapp_editres\n#\n################################################################################\n\nXAPP_EDITRES_VERSION = 1.0.7\nXAPP_EDITRES_SOURCE = editres-$(XAPP_EDITRES_VERSION).tar.bz2\nXAPP_EDITRES_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_EDITRES_LICENSE = MIT\nXAPP_EDITRES_LICENSE_FILES = COPYING\nXAPP_EDITRES_DEPENDENCIES = xlib_libX11 xlib_libXaw xlib_libXmu xlib_libXt\nXAPP_EDITRES_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_fonttosfnt/Config.in",
    "content": "config BR2_PACKAGE_XAPP_FONTTOSFNT\n\tbool \"fonttosfnt\"\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBFONTENC\n\thelp\n\t  X.Org fonttosfnt application\n"
  },
  {
    "path": "package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-June/003093.html\nsha256  1a1bb4ef25856dea7de3d491ae7231493225b400bee0f6a1f949017ffd203a64  fonttosfnt-1.2.2.tar.bz2\nsha512  ceac6ccb064043d46f9f16f31fb89c6cbf7f026d049f7b5325d6af97e809b4cd068e6149413bb328c0af601a98b5070e21d469888a6853f6cabecd5b46f60240  fonttosfnt-1.2.2.tar.bz2\n# Locally computed\nsha256  f83378580cb7909a98b52bf5cd6a29f4894d76318c5c5312dd3f17a3e92beef1  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.mk",
    "content": "################################################################################\n#\n# xapp_fonttosfnt\n#\n################################################################################\n\nXAPP_FONTTOSFNT_VERSION = 1.2.2\nXAPP_FONTTOSFNT_SOURCE = fonttosfnt-$(XAPP_FONTTOSFNT_VERSION).tar.bz2\nXAPP_FONTTOSFNT_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_FONTTOSFNT_LICENSE = MIT\nXAPP_FONTTOSFNT_LICENSE_FILES = COPYING\nXAPP_FONTTOSFNT_DEPENDENCIES = freetype xlib_libX11 xlib_libfontenc\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_fslsfonts/Config.in",
    "content": "config BR2_PACKAGE_XAPP_FSLSFONTS\n\tbool \"fslsfonts\"\n\tselect BR2_PACKAGE_XLIB_LIBFS\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  list fonts served by X font server\n"
  },
  {
    "path": "package/x11r7/xapp_fslsfonts/xapp_fslsfonts.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2014-December/002510.html\nsha256  f1ed55093356b78daec2678d22f52d42ec11fe88575562d734396962e626d7f6  fslsfonts-1.0.5.tar.bz2\n# Locally computed\nsha256  fbdfcafb5755565ad688bf3f7f808109d358040ec83ed3de496155105451fdf4  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_fslsfonts/xapp_fslsfonts.mk",
    "content": "################################################################################\n#\n# xapp_fslsfonts\n#\n################################################################################\n\nXAPP_FSLSFONTS_VERSION = 1.0.5\nXAPP_FSLSFONTS_SOURCE = fslsfonts-$(XAPP_FSLSFONTS_VERSION).tar.bz2\nXAPP_FSLSFONTS_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_FSLSFONTS_LICENSE = MIT\nXAPP_FSLSFONTS_LICENSE_FILES = COPYING\nXAPP_FSLSFONTS_DEPENDENCIES = xlib_libFS xlib_libX11\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_fstobdf/Config.in",
    "content": "config BR2_PACKAGE_XAPP_FSTOBDF\n\tbool \"fstobdf\"\n\tselect BR2_PACKAGE_XLIB_LIBFS\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  generate BDF font from X font server\n"
  },
  {
    "path": "package/x11r7/xapp_fstobdf/xapp_fstobdf.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2014-December/002511.html\nsha256  66cf550326c993e7043f260a8ec4a533a3bf9d8f0e7397a6fe9cca803732e92e  fstobdf-1.0.6.tar.bz2\n# Locally computed\nsha256  b76125d919ac2bfbff96955dec98b90729633b2df5fbfa2ad3f2e4376164febb  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_fstobdf/xapp_fstobdf.mk",
    "content": "################################################################################\n#\n# xapp_fstobdf\n#\n################################################################################\n\nXAPP_FSTOBDF_VERSION = 1.0.6\nXAPP_FSTOBDF_SOURCE = fstobdf-$(XAPP_FSTOBDF_VERSION).tar.bz2\nXAPP_FSTOBDF_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_FSTOBDF_LICENSE = MIT\nXAPP_FSTOBDF_LICENSE_FILES = COPYING\nXAPP_FSTOBDF_DEPENDENCIES = xlib_libFS xlib_libX11\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_iceauth/Config.in",
    "content": "config BR2_PACKAGE_XAPP_ICEAUTH\n\tbool \"iceauth\"\n\tselect BR2_PACKAGE_XLIB_LIBICE\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  ICE authority file utility\n"
  },
  {
    "path": "package/x11r7/xapp_iceauth/xapp_iceauth.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002850.html\nmd5 3b9b79fa0f9928161f4bad94273de7ae  iceauth-1.0.8.tar.bz2\nsha1 2ce23c40a17d98badeb8ce70d26e81a5ac0e178c  iceauth-1.0.8.tar.bz2\nsha256 e6ee213a217265cc76050e4293ea70b98c32dce6505c6421227efbda62ab60c6  iceauth-1.0.8.tar.bz2\nsha512 9d4520adf951b16a3e784349dbb70d5d8176b74b956f8adc63abf55d049745c113b03ccfa60a281fc39b487db3742302dc6287c9985ce83a0157bf4674df2af1  iceauth-1.0.8.tar.bz2\n# Locally computed\nsha256 fdd9ba8ccb92af2f31f542e7b7a18c27257e6cdce147d231bc9ba3654ad84976  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_iceauth/xapp_iceauth.mk",
    "content": "################################################################################\n#\n# xapp_iceauth\n#\n################################################################################\n\nXAPP_ICEAUTH_VERSION = 1.0.8\nXAPP_ICEAUTH_SOURCE = iceauth-$(XAPP_ICEAUTH_VERSION).tar.bz2\nXAPP_ICEAUTH_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_ICEAUTH_LICENSE = MIT\nXAPP_ICEAUTH_LICENSE_FILES = COPYING\nXAPP_ICEAUTH_DEPENDENCIES = xlib_libICE xlib_libX11\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_ico/Config.in",
    "content": "config BR2_PACKAGE_XAPP_ICO\n\tbool \"ico\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  animate an icosahedron or other polyhedron\n"
  },
  {
    "path": "package/x11r7/xapp_ico/xapp_ico.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002880.html\nmd5 7895f2d109f4206b6d2db37257e07d12  ico-1.0.5.tar.bz2\nsha1 8759ec954375f3a1b37dc920a12790bfbfb0cad3  ico-1.0.5.tar.bz2\nsha256 d73b62f29eb98d850f16b76d759395180b860b613fbe1686b18eee99a6e3773f  ico-1.0.5.tar.bz2\nsha512 93a94a66d4a41b39d4b3657050e58f8269d352dae5d5916c9ecdda1cb14f23b9d159d67c50fdfa654b4b1c2ad11434bed140ace70703c82b05d3fe8686aab8f6  ico-1.0.5.tar.bz2\n# Locally computed\nsha256 97ef3a622f2f385cabfc8ab7aff13dc46468c10a5520670b5edfa33f2c3999eb COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_ico/xapp_ico.mk",
    "content": "################################################################################\n#\n# xapp_ico\n#\n################################################################################\n\nXAPP_ICO_VERSION = 1.0.5\nXAPP_ICO_SOURCE = ico-$(XAPP_ICO_VERSION).tar.bz2\nXAPP_ICO_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_ICO_LICENSE = MIT\nXAPP_ICO_LICENSE_FILES = COPYING\nXAPP_ICO_DEPENDENCIES = xlib_libX11\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_listres/Config.in",
    "content": "config BR2_PACKAGE_XAPP_LISTRES\n\tbool \"listres\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\thelp\n\t  list resources in widgets\n"
  },
  {
    "path": "package/x11r7/xapp_listres/xapp_listres.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002848.html\nmd5 24e05349f2881aaa58cbe160e49223ac  listres-1.0.4.tar.bz2\nsha1 903857c7a9ec3d8edc8a88101aef33cd27796649  listres-1.0.4.tar.bz2\nsha256 6a1229f478796e141d6658762f432ebbe1f6083b27550847d52239b3f7ec2b10  listres-1.0.4.tar.bz2\nsha512 925bceab6ff96fcf91f58ba2f858905d6e2eff7074ba29cfc02def7c19fb493545837884f1070dc004422451f749cd459000c01e8c9bb51a7cce7f7ab4067b8a  listres-1.0.4.tar.bz2\n# Locally computed\nsha256 aefb540c54bc95c68702cd2ae668c559e63cc1a84f55ae5c0e78547e7d75d2d5  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_listres/xapp_listres.mk",
    "content": "################################################################################\n#\n# xapp_listres\n#\n################################################################################\n\nXAPP_LISTRES_VERSION = 1.0.4\nXAPP_LISTRES_SOURCE = listres-$(XAPP_LISTRES_VERSION).tar.bz2\nXAPP_LISTRES_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_LISTRES_LICENSE = MIT\nXAPP_LISTRES_LICENSE_FILES = COPYING\nXAPP_LISTRES_DEPENDENCIES = xlib_libX11 xlib_libXaw xlib_libXmu xlib_libXt\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_luit/0001-posix-openpt.patch",
    "content": "Suggested workaround to build with recent gcc versions\n\nUpstream bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47792\n\nSigned-off-by: Markos Chandras <markos.chandras@imgtec.com>\n\nIndex: xapp_luit-1.1.1/sys.c\n===================================================================\n--- xapp_luit-1.1.1.orig/sys.c\n+++ xapp_luit-1.1.1/sys.c\n@@ -20,6 +20,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWAR\n THE SOFTWARE.\n */\n \n+#define _XOPEN_SOURCE 600\n+\n #ifdef HAVE_CONFIG_H\n # include \"config.h\"\n #endif\n"
  },
  {
    "path": "package/x11r7/xapp_luit/Config.in",
    "content": "config BR2_PACKAGE_XAPP_LUIT\n\tbool \"luit\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBFONTENC\n\thelp\n\t  Locale and ISO 2022 support for Unicode terminals\n"
  },
  {
    "path": "package/x11r7/xapp_luit/xapp_luit.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2012-March/001894.html\nsha256  30b0e787cb07a0f504b70f1d6123930522111ce9d4276f6683a69b322b49c636  luit-1.1.1.tar.bz2\n# Locally computed\nsha256  20b6a1481d9dafeaa471e2ac497ecc651428e8369cc935b5bd9d0e5b77d78081  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_luit/xapp_luit.mk",
    "content": "################################################################################\n#\n# xapp_luit\n#\n################################################################################\n\nXAPP_LUIT_VERSION = 1.1.1\nXAPP_LUIT_SOURCE = luit-$(XAPP_LUIT_VERSION).tar.bz2\nXAPP_LUIT_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_LUIT_LICENSE = MIT\nXAPP_LUIT_LICENSE_FILES = COPYING\nXAPP_LUIT_DEPENDENCIES = xlib_libX11 xlib_libfontenc\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_mkfontscale/Config.in",
    "content": "config BR2_PACKAGE_XAPP_MKFONTSCALE\n\tbool \"mkfontscale\"\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBFONTENC\n\tselect BR2_PACKAGE_XORGPROTO\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  create an index of scalable font files for X\n"
  },
  {
    "path": "package/x11r7/xapp_mkfontscale/xapp_mkfontscale.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002988.html\nmd5 215940de158b1a3d8b3f8b442c606e2f  mkfontscale-1.2.1.tar.bz2\nsha1 fb9d0458a4476a237609b676f9cebcc64b0a8a85  mkfontscale-1.2.1.tar.bz2\nsha256 ca0495eb974a179dd742bfa6199d561bda1c8da4a0c5a667f21fd82aaab6bac7  mkfontscale-1.2.1.tar.bz2\nsha512 4d243160e1f7f8dfa6a8f53349c1a42a55fc99426455ebdef58352c5e951fce8b4f1fbd1061a76c9a148095b002eac372db1ae5e2647d2ccb4886635b317b18c  mkfontscale-1.2.1.tar.bz2\n# Locally computed\nsha256 80df6f5b759f7775042313e4586506db60f26fd15b98b532cf518bd8cf1e8488  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_mkfontscale/xapp_mkfontscale.mk",
    "content": "################################################################################\n#\n# xapp_mkfontscale\n#\n################################################################################\n\nXAPP_MKFONTSCALE_VERSION = 1.2.1\nXAPP_MKFONTSCALE_SOURCE = mkfontscale-$(XAPP_MKFONTSCALE_VERSION).tar.bz2\nXAPP_MKFONTSCALE_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_MKFONTSCALE_LICENSE = MIT\nXAPP_MKFONTSCALE_LICENSE_FILES = COPYING\nXAPP_MKFONTSCALE_DEPENDENCIES = zlib freetype xlib_libfontenc xorgproto\nHOST_XAPP_MKFONTSCALE_DEPENDENCIES = \\\n\thost-zlib host-freetype host-xlib_libfontenc host-xorgproto\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_oclock/Config.in",
    "content": "config BR2_PACKAGE_XAPP_OCLOCK\n\tbool \"oclock\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  round X clock\n"
  },
  {
    "path": "package/x11r7/xapp_oclock/xapp_oclock.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002856.html\nmd5 973f6d25a6f0990720b98a15c9436b92  oclock-1.0.4.tar.bz2\nsha1 0bc8f3f44290950f60af894e20e0ceb0c5e8e862  oclock-1.0.4.tar.bz2\nsha256 cc20cfc1c0d5128d89e1eecd9ba52e58f111075be163e0aeda5690dbaafbaefe  oclock-1.0.4.tar.bz2\nsha512 6e0d36a84572a153226b2929f2253cb7adc3c9e5e3af168aeaf8c487ade2e43517b271a8e9cdb2a2c4a67ca56ed0b99c194ca63a4a822b68bfc72ca6518335e7  oclock-1.0.4.tar.bz2\n# Locally computed\nsha256 f6cae4b0c603ef5bd76da2df96b38aa43aa7547e482adb8cb8b83f09af35e4a2  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_oclock/xapp_oclock.mk",
    "content": "################################################################################\n#\n# xapp_oclock\n#\n################################################################################\n\nXAPP_OCLOCK_VERSION = 1.0.4\nXAPP_OCLOCK_SOURCE = oclock-$(XAPP_OCLOCK_VERSION).tar.bz2\nXAPP_OCLOCK_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_OCLOCK_LICENSE = MIT\nXAPP_OCLOCK_LICENSE_FILES = COPYING\nXAPP_OCLOCK_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXmu\nXAPP_OCLOCK_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXKBFILE),y)\nXAPP_OCLOCK_CONF_OPTS += --with-xkb\nXAPP_OCLOCK_DEPENDENCIES += xlib_libxkbfile\nelse\nXAPP_OCLOCK_CONF_OPTS += --without-xkb\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_rgb/Config.in",
    "content": "config BR2_PACKAGE_XAPP_RGB\n\tbool \"rgb\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  uncompile an rgb color-name database\n"
  },
  {
    "path": "package/x11r7/xapp_rgb/xapp_rgb.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2014-November/002494.html\nsha256  bbca7c6aa59939b9f6a0fb9fff15dfd62176420ffd4ae30c8d92a6a125fbe6b0  rgb-1.0.6.tar.bz2\n# Locally computed\nsha256  1d08eb3384f5dedc7735bcfae1aa58cb64643ca9389edce3312b1c3cefbfdaa7  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_rgb/xapp_rgb.mk",
    "content": "################################################################################\n#\n# xapp_rgb\n#\n################################################################################\n\nXAPP_RGB_VERSION = 1.0.6\nXAPP_RGB_SOURCE = rgb-$(XAPP_RGB_VERSION).tar.bz2\nXAPP_RGB_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_RGB_LICENSE = MIT\nXAPP_RGB_LICENSE_FILES = COPYING\nXAPP_RGB_DEPENDENCIES = xorgproto host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_rstart/Config.in",
    "content": "config BR2_PACKAGE_XAPP_RSTART\n\tbool \"rstart\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  X.Org rstart application\n"
  },
  {
    "path": "package/x11r7/xapp_rstart/xapp_rstart.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2013-February/002168.html\nsha256  29134e9fdffc8d6ac6904c293b392ba6a493ce571fbd2015485b19a8e4d0ffeb  rstart-1.0.5.tar.bz2\n# Locally computed\nsha256  7561fa083e87cd511669d8725ebe89dde6cd4f72cdea35b817262dc6ad6fbe9a  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_rstart/xapp_rstart.mk",
    "content": "################################################################################\n#\n# xapp_rstart\n#\n################################################################################\n\nXAPP_RSTART_VERSION = 1.0.5\nXAPP_RSTART_SOURCE = rstart-$(XAPP_RSTART_VERSION).tar.bz2\nXAPP_RSTART_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_RSTART_LICENSE = MIT\nXAPP_RSTART_LICENSE_FILES = COPYING\nXAPP_RSTART_DEPENDENCIES = xlib_libX11\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_scripts/Config.in",
    "content": "config BR2_PACKAGE_XAPP_SCRIPTS\n\tbool \"scripts\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  start an X program on a remote machine\n"
  },
  {
    "path": "package/x11r7/xapp_scripts/xapp_scripts.hash",
    "content": "# locally computed\nsha256  1b154b4359302ca499818c45396325aef9ff364d6ff4ce5c3769e4803994a136  scripts-1.0.1.tar.bz2\nsha256  27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_scripts/xapp_scripts.mk",
    "content": "################################################################################\n#\n# xapp_scripts\n#\n################################################################################\n\nXAPP_SCRIPTS_VERSION = 1.0.1\nXAPP_SCRIPTS_SOURCE = scripts-$(XAPP_SCRIPTS_VERSION).tar.bz2\nXAPP_SCRIPTS_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_SCRIPTS_LICENSE = MIT\nXAPP_SCRIPTS_LICENSE_FILES = COPYING\nXAPP_SCRIPTS_DEPENDENCIES = xlib_libX11\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_sessreg/Config.in",
    "content": "config BR2_PACKAGE_XAPP_SESSREG\n\tbool \"sessreg\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  manage utmp/wtmp entries for non-init clients\n"
  },
  {
    "path": "package/x11r7/xapp_sessreg/xapp_sessreg.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-June/002994.html\nmd5 92be564d4be7d8aa7b5024057b715210  sessreg-1.1.2.tar.bz2\nsha1 169c1ff9fb152b4b4ca0cfbd3e1aee33af042016  sessreg-1.1.2.tar.bz2\nsha256 dfcb9e954273ace63879aec053c7880466f8755752a35aa9ced3fa5f04fd2c33  sessreg-1.1.2.tar.bz2\nsha512 7e3c2bdcadb7133aace463b58d8c6108d315ec95d2a42509073eeddc7f02644092a4b3168bd3b426c041736a016291092e0bf8368acd620dbeff96d53d12f98c  sessreg-1.1.2.tar.bz2\n# Locally computed\nsha256 ac8f5cc696e6c473aea4caaf18650316dc8912fcf0f370cae1df5f395cea8631  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_sessreg/xapp_sessreg.mk",
    "content": "################################################################################\n#\n# xapp_sessreg\n#\n################################################################################\n\nXAPP_SESSREG_VERSION = 1.1.2\nXAPP_SESSREG_SOURCE = sessreg-$(XAPP_SESSREG_VERSION).tar.bz2\nXAPP_SESSREG_SITE = https://xorg.freedesktop.org/archive/individual/app\nXAPP_SESSREG_LICENSE = MIT\nXAPP_SESSREG_LICENSE_FILES = COPYING\nXAPP_SESSREG_DEPENDENCIES = xlib_libX11 xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_setxkbmap/Config.in",
    "content": "config BR2_PACKAGE_XAPP_SETXKBMAP\n\tbool \"setxkbmap\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXKBFILE\n\thelp\n\t  Controls the keyboard layout of a running X server.\n"
  },
  {
    "path": "package/x11r7/xapp_setxkbmap/xapp_setxkbmap.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-July/003007.html\nmd5 93e736c98fb75856ee8227a0c49a128d  setxkbmap-1.3.2.tar.bz2\nsha1 44783734bc58fca93165a20da0bb3eca1ccb9ad9  setxkbmap-1.3.2.tar.bz2\nsha256 8ff27486442725e50b02d7049152f51d125ecad71b7ce503cfa09d5d8ceeb9f5  setxkbmap-1.3.2.tar.bz2\nsha512 bfa8015dee0d8d3fdbbd89afbd71c8606ce168d6edca8521d5ed05a00fecbea39bc4bfcce84b71458bdeb34c60bd80a5df27e0691ccee3966443ecdc937faf38  setxkbmap-1.3.2.tar.bz2\n# Locally computed\nsha256 afb8ce58340b6a6b85b73e256425263ce46f5a427279785e275991cb660cce82  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_setxkbmap/xapp_setxkbmap.mk",
    "content": "################################################################################\n#\n# xapp_setxkbmap\n#\n################################################################################\n\nXAPP_SETXKBMAP_VERSION = 1.3.2\nXAPP_SETXKBMAP_SOURCE = setxkbmap-$(XAPP_SETXKBMAP_VERSION).tar.bz2\nXAPP_SETXKBMAP_SITE = https://xorg.freedesktop.org/archive/individual/app\nXAPP_SETXKBMAP_LICENSE = MIT\nXAPP_SETXKBMAP_LICENSE_FILES = COPYING\nXAPP_SETXKBMAP_DEPENDENCIES = xlib_libX11 xlib_libxkbfile\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_showfont/Config.in",
    "content": "config BR2_PACKAGE_XAPP_SHOWFONT\n\tbool \"showfont\"\n\tselect BR2_PACKAGE_XLIB_LIBFS\n\thelp\n\t  font dumper for X font server\n"
  },
  {
    "path": "package/x11r7/xapp_showfont/xapp_showfont.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2014-December/002513.html\nsha256  e9735c1c530b8a52edfab7415cc0fd7f8d2889095114f4cb689a27476461ac89  showfont-1.0.5.tar.bz2\n# Locally computed\nsha256  c32217021e0507207e2ee6da3fcee3d9e32816003a7153b3357c08cdc97934a8  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_showfont/xapp_showfont.mk",
    "content": "################################################################################\n#\n# xapp_showfont\n#\n################################################################################\n\nXAPP_SHOWFONT_VERSION = 1.0.5\nXAPP_SHOWFONT_SOURCE = showfont-$(XAPP_SHOWFONT_VERSION).tar.bz2\nXAPP_SHOWFONT_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_SHOWFONT_LICENSE = MIT\nXAPP_SHOWFONT_LICENSE_FILES = COPYING\nXAPP_SHOWFONT_DEPENDENCIES = xlib_libFS\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_smproxy/Config.in",
    "content": "config BR2_PACKAGE_XAPP_SMPROXY\n\tbool \"smproxy\"\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\thelp\n\t  Session Manager Proxy\n"
  },
  {
    "path": "package/x11r7/xapp_smproxy/xapp_smproxy.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-April/002564.html\nsha256  6cf19155a2752237f36dbf8bc4184465ea190d2652f887faccb4e2a6ebf77266  smproxy-1.0.6.tar.bz2\n# Locally computed\nsha256  92dce6d8a1fcc0c6b5e56dc44e431e7f73bfa2ed5e83295662aa314067a671d8  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_smproxy/xapp_smproxy.mk",
    "content": "################################################################################\n#\n# xapp_smproxy\n#\n################################################################################\n\nXAPP_SMPROXY_VERSION = 1.0.6\nXAPP_SMPROXY_SOURCE = smproxy-$(XAPP_SMPROXY_VERSION).tar.bz2\nXAPP_SMPROXY_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_SMPROXY_LICENSE = MIT\nXAPP_SMPROXY_LICENSE_FILES = COPYING\nXAPP_SMPROXY_DEPENDENCIES = xlib_libXmu xlib_libXt\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_twm/Config.in",
    "content": "config BR2_PACKAGE_XAPP_TWM\n\tbool \"twm\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xapp_twm/xapp_twm.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2020-June/003047.html\nsha256  f4e8a842dec410e79741f25ed4dfac09df080835d0bba2e3983b5914569b68c7  twm-1.0.11.tar.xz\nsha512  948034bba23e6b6c4412fcd2e46bb11a9980297601218a54a5055165ab0229a44dde0d50f338b24e82d76f390597e2fa09d11ff7f3fe1b1d736b10083c7da20d  twm-1.0.11.tar.xz\n# Locally computed\nsha256  4809ffc9656bc9a704e19ab467d1cedc97c48c9d1f9a4018e6d99d2e61f75945  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_twm/xapp_twm.mk",
    "content": "################################################################################\n#\n# xapp_twm\n#\n################################################################################\n\nXAPP_TWM_VERSION = 1.0.11\nXAPP_TWM_SOURCE = twm-$(XAPP_TWM_VERSION).tar.xz\nXAPP_TWM_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_TWM_LICENSE = MIT\nXAPP_TWM_LICENSE_FILES = COPYING\nXAPP_TWM_DEPENDENCIES = \\\n\thost-bison xlib_libX11 xlib_libXext xlib_libXt xlib_libXmu\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_viewres/Config.in",
    "content": "config BR2_PACKAGE_XAPP_VIEWRES\n\tbool \"viewres\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  graphical class browser for Xt\n"
  },
  {
    "path": "package/x11r7/xapp_viewres/xapp_viewres.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-August/003020.html\nmd5 38e6568271d8098327706c5cf855dbc7  viewres-1.0.6.tar.bz2\nsha1 f1d12e5b4e1180916edb44234599a486b025b480  viewres-1.0.6.tar.bz2\nsha256 11c15db02066c1d5fc3febf9b185d16c1112f87e37c4b101a484dcefffb80934  viewres-1.0.6.tar.bz2\nsha512 3f4cfc61608bc6c9b35ef66ceb473661ca01946d3306d54040d32803e8e0eec506a0ce37ea22bfe514544a6ba9645fd30f39b20c063aff696b3c0fda3fe95dff  viewres-1.0.6.tar.bz2\n# Locally computed\nsha256 aefb540c54bc95c68702cd2ae668c559e63cc1a84f55ae5c0e78547e7d75d2d5  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_viewres/xapp_viewres.mk",
    "content": "################################################################################\n#\n# xapp_viewres\n#\n################################################################################\n\nXAPP_VIEWRES_VERSION = 1.0.6\nXAPP_VIEWRES_SOURCE = viewres-$(XAPP_VIEWRES_VERSION).tar.bz2\nXAPP_VIEWRES_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_VIEWRES_LICENSE = MIT\nXAPP_VIEWRES_LICENSE_FILES = COPYING\nXAPP_VIEWRES_DEPENDENCIES = xlib_libXaw\nXAPP_VIEWRES_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_x11perf/Config.in",
    "content": "config BR2_PACKAGE_XAPP_X11PERF\n\tbool \"x11perf\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\tselect BR2_PACKAGE_XLIB_LIBXFT\n\thelp\n\t  summarize x11perf results\n"
  },
  {
    "path": "package/x11r7/xapp_x11perf/xapp_x11perf.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002983.html\nmd5 e96b56756990c56c24d2d02c2964456b  x11perf-1.6.1.tar.bz2\nsha1 c54ebef80b6cb565397fe2e3069e0d7470027e5a  x11perf-1.6.1.tar.bz2\nsha256 1c7e0b8ffc2794b4ccf11e04d551823abe0ea47b4f7db0637390db6fbe817c34  x11perf-1.6.1.tar.bz2\nsha512 b386151bfe3d7c04ab9953ae1882f3c5b627d6d1afb9a8cfe87c58236a88883fc11bbadb2226b9aa61df84b4fce625a1c9e3d146a124ac17e8d7d605b35d9c0b  x11perf-1.6.1.tar.bz2\n# Locally computed\nsha256 f467ff659142e2eb4cb7275c48c789d249af398b09a405d3e181dcc339b3b922  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_x11perf/xapp_x11perf.mk",
    "content": "################################################################################\n#\n# xapp_x11perf\n#\n################################################################################\n\nXAPP_X11PERF_VERSION = 1.6.1\nXAPP_X11PERF_SOURCE = x11perf-$(XAPP_X11PERF_VERSION).tar.bz2\nXAPP_X11PERF_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_X11PERF_LICENSE = MIT\nXAPP_X11PERF_LICENSE_FILES = COPYING\nXAPP_X11PERF_DEPENDENCIES = xlib_libX11 xlib_libXmu xlib_libXft\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xauth/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XAUTH\n\tbool \"xauth\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXAU\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  X authority file utility\n"
  },
  {
    "path": "package/x11r7/xapp_xauth/xapp_xauth.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-July/003005.html\nmd5 e50587c1bb832aafd1a19d91a0890a0b  xauth-1.1.tar.bz2\nsha1 16180e36d75a23cb182cb91e78f24273f1a63967  xauth-1.1.tar.bz2\nsha256 6d1dd1b79dd185107c5b0fdd22d1d791ad749ad6e288d0cdf80964c4ffa7530c  xauth-1.1.tar.bz2\nsha512 b6ecd59a853a491ef45bf8cfbff63bed36645f81cb79ae9d18458b57f7502bccf92f0d979d3337578518646f680ad379e67b1dac15a927cbb11372733e7a3a0c  xauth-1.1.tar.bz2\n# Locally computed\nsha256 dcdf5fa36a652efbe61a21def1301739b0010334ae3f049f1cff433221a8c7a5  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xauth/xapp_xauth.mk",
    "content": "################################################################################\n#\n# xapp_xauth\n#\n################################################################################\n\nXAPP_XAUTH_VERSION = 1.1\nXAPP_XAUTH_SOURCE = xauth-$(XAPP_XAUTH_VERSION).tar.bz2\nXAPP_XAUTH_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XAUTH_LICENSE = MIT\nXAPP_XAUTH_LICENSE_FILES = COPYING\nXAPP_XAUTH_DEPENDENCIES = xlib_libX11 xlib_libXau xlib_libXext xlib_libXmu\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xbacklight/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XBACKLIGHT\n\tbool \"xbacklight\"\n\tselect BR2_PACKAGE_XCB_UTIL\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\thelp\n\t  xbacklight\n"
  },
  {
    "path": "package/x11r7/xapp_xbacklight/xapp_xbacklight.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-July/003008.html\nmd5 5b6405973db69c0443be2fba8e1a8ab7  xbacklight-1.2.3.tar.bz2\nsha1 f0a6163738143ec23542b459aef567309a119e0c  xbacklight-1.2.3.tar.bz2\nsha256 3a27f324777ae99fee476cfb2f064576fb8cba4eb77f97cda37adda1c1d39ade  xbacklight-1.2.3.tar.bz2\nsha512 717c87ce24634892fc4ac54fc59dcc0a5bc8f206aaf1d13410f95f7e4fe6e3dbc7ff8d951bcd8ea8c5e955357a00fea6ceadd4559e60b1a632e40f71290e12c7  xbacklight-1.2.3.tar.bz2\n# Locally computed\nsha256 c9fbf1f272215babef31808c1235de8e4f7641ca5edfc4fc615b6556054b2b04 COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xbacklight/xapp_xbacklight.mk",
    "content": "################################################################################\n#\n# xapp_xbacklight\n#\n################################################################################\n\nXAPP_XBACKLIGHT_VERSION = 1.2.3\nXAPP_XBACKLIGHT_SOURCE = xbacklight-$(XAPP_XBACKLIGHT_VERSION).tar.bz2\nXAPP_XBACKLIGHT_SITE = https://xorg.freedesktop.org/archive/individual/app\nXAPP_XBACKLIGHT_LICENSE = MIT\nXAPP_XBACKLIGHT_LICENSE_FILES = COPYING\nXAPP_XBACKLIGHT_DEPENDENCIES = xlib_libX11 xlib_libXrandr xlib_libXrender xcb-util\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xbiff/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XBIFF\n\tbool \"xbiff\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XDATA_XBITMAPS\n\thelp\n\t  mailbox flag for X\n"
  },
  {
    "path": "package/x11r7/xapp_xbiff/xapp_xbiff.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-July/003009.html\nmd5 66dd3ebd6351b1911b831b89b2dba8ec  xbiff-1.0.4.tar.bz2\nsha1 193c0a2be1f7f374bb9d32217a198c92a63619e8  xbiff-1.0.4.tar.bz2\nsha256 e1e1a39628a5678585008ef7fb1ff2864edaaa0e062989c2331f8c74e0fec971  xbiff-1.0.4.tar.bz2\nsha512 0fb920a08640ec59f23d8a8a47bd244565dfbaff7a21c38a8a2abe1edb5eacabc970b5dbdc409163fc444fde5b75a2dc4e0114312938efec5b77228f3bf785ac  xbiff-1.0.4.tar.bz2\n# Locally computed\nsha256 9b840f2e1900889124cc999f3158da2b6b07bf6d0d77bdbb01ce65d2e702dc83  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xbiff/xapp_xbiff.mk",
    "content": "################################################################################\n#\n# xapp_xbiff\n#\n################################################################################\n\nXAPP_XBIFF_VERSION = 1.0.4\nXAPP_XBIFF_SOURCE = xbiff-$(XAPP_XBIFF_VERSION).tar.bz2\nXAPP_XBIFF_SITE = https://xorg.freedesktop.org/archive/individual/app\nXAPP_XBIFF_LICENSE = MIT\nXAPP_XBIFF_LICENSE_FILES = COPYING\nXAPP_XBIFF_DEPENDENCIES = xlib_libXaw xdata_xbitmaps\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xcalc/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XCALC\n\tbool \"xcalc\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  scientific calculator for X\n"
  },
  {
    "path": "package/x11r7/xapp_xcalc/xapp_xcalc.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-June/002996.html\nmd5 3b566e47c76356cecaa71eb431767ae1  xcalc-1.1.0.tar.bz2\nsha1 0537f7ee56558cf80133c6b49c4757c1166aaeb6  xcalc-1.1.0.tar.bz2\nsha256 d5d746954465afc3da1f355d721882806568fb04b4d059c027702c0d16a3b5eb  xcalc-1.1.0.tar.bz2\nsha512 877aab7bb08f409a21c26b841f4d91eb6993914ed0d26512e47d6b3d2b3e0b231158901415a106cfb45de43f03f253bf2a8733f986538d4ee810afe0e54f98d5  xcalc-1.1.0.tar.bz2\n# Locally computed\nsha256 8dd69dbec37866a41d3040c5c478aca46e0b50c30319f178064d5e2ed9d3f912  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xcalc/xapp_xcalc.mk",
    "content": "################################################################################\n#\n# xapp_xcalc\n#\n################################################################################\n\nXAPP_XCALC_VERSION = 1.1.0\nXAPP_XCALC_SOURCE = xcalc-$(XAPP_XCALC_VERSION).tar.bz2\nXAPP_XCALC_SITE = https://xorg.freedesktop.org/releases/individual/app\nXAPP_XCALC_LICENSE = MIT\nXAPP_XCALC_LICENSE_FILES = COPYING\nXAPP_XCALC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec install-data\nXAPP_XCALC_DEPENDENCIES = xlib_libXaw\nXAPP_XCALC_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xclipboard/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XCLIPBOARD\n\tbool \"xclipboard\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  interchange between cut buffer and selection\n"
  },
  {
    "path": "package/x11r7/xapp_xclipboard/xapp_xclipboard.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2013-September/002299.html\nsha256  9c0e0a1f4f1d49f73c6cf3ccd27b5ca0e18afc63679f1a1ee466b1d82446ebb5  xclipboard-1.1.3.tar.bz2\n# Locally computed\nsha256  f0a362fc1b8e788845b1c0ad7ba9ade58fdfb73da750c3b9780db5d70b947657  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xclipboard/xapp_xclipboard.mk",
    "content": "################################################################################\n#\n# xapp_xclipboard\n#\n################################################################################\n\nXAPP_XCLIPBOARD_VERSION = 1.1.3\nXAPP_XCLIPBOARD_SOURCE = xclipboard-$(XAPP_XCLIPBOARD_VERSION).tar.bz2\nXAPP_XCLIPBOARD_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XCLIPBOARD_LICENSE = MIT\nXAPP_XCLIPBOARD_LICENSE_FILES = COPYING\nXAPP_XCLIPBOARD_DEPENDENCIES = xlib_libXaw xlib_libXmu xlib_libXt\nXAPP_XCLIPBOARD_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xclock/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XCLOCK\n\tbool \"xclock\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXFT\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\tselect BR2_PACKAGE_XLIB_LIBXKBFILE\n\thelp\n\t  analog / digital clock for X\n"
  },
  {
    "path": "package/x11r7/xapp_xclock/xapp_xclock.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-July/003010.html\nmd5 437522a96f424f68fc64ed34ece9b211  xclock-1.0.9.tar.bz2\nsha1 774c711cf7ee3f601f7209bbb01ce3f0d5ddbde6  xclock-1.0.9.tar.bz2\nsha256 cf461fb2c6f2ac42c54d8429ee2010fdb9a1442a370adfbfe8a7bfaf33c123bb  xclock-1.0.9.tar.bz2\nsha512 fcbac0b4ab1cea4ae0751ce1c0c6302048e5d98d459873c7580e4ca786ec49fa27f73e5831bdfe135abb5cfeabe886456276e9d01351ea7905c606f40f84522d  xclock-1.0.9.tar.bz2\n# Locally computed\nsha256 ee1f19f46801ef00e70498603e74df644d0b93fc82f06b55ce64c3a2c9f16e71  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xclock/xapp_xclock.mk",
    "content": "################################################################################\n#\n# xapp_xclock\n#\n################################################################################\n\nXAPP_XCLOCK_VERSION = 1.0.9\nXAPP_XCLOCK_SOURCE = xclock-$(XAPP_XCLOCK_VERSION).tar.bz2\nXAPP_XCLOCK_SITE = https://xorg.freedesktop.org/archive/individual/app\nXAPP_XCLOCK_LICENSE = MIT\nXAPP_XCLOCK_LICENSE_FILES = COPYING\nXAPP_XCLOCK_DEPENDENCIES = xlib_libX11 xlib_libXaw xlib_libXft xlib_libXrender xlib_libxkbfile\nXAPP_XCLOCK_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xcmsdb/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XCMSDB\n\tbool \"xcmsdb\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  Device Color Characterization utility for X Color Management\n\t  System\n"
  },
  {
    "path": "package/x11r7/xapp_xcmsdb/xapp_xcmsdb.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-April/002567.html\nsha256  e5585361bb8b6a05bb814a8d0e444ee93e0f00180881d3070aff4571e97f67c6  xcmsdb-1.0.5.tar.bz2\n# Locally computed\nsha256  c3bd4ac91beb08fee5272b17a3ddee8d2791cc5eaee5bce5271042a45fa4fa6a  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xcmsdb/xapp_xcmsdb.mk",
    "content": "################################################################################\n#\n# xapp_xcmsdb\n#\n################################################################################\n\nXAPP_XCMSDB_VERSION = 1.0.5\nXAPP_XCMSDB_SOURCE = xcmsdb-$(XAPP_XCMSDB_VERSION).tar.bz2\nXAPP_XCMSDB_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XCMSDB_LICENSE = MIT\nXAPP_XCMSDB_LICENSE_FILES = COPYING\nXAPP_XCMSDB_DEPENDENCIES = xlib_libX11\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xcompmgr/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XCOMPMGR\n\tbool \"xcompmgr\"\n\tselect BR2_PACKAGE_XLIB_LIBXCOMPOSITE\n\tselect BR2_PACKAGE_XLIB_LIBXDAMAGE\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\thelp\n\t  xcompmgr is a sample compositing manager that enables basic\n\t  eye-candy effects.\n"
  },
  {
    "path": "package/x11r7/xapp_xcompmgr/xapp_xcompmgr.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002989.html\nmd5 ef8c7d4140c11efb8de4141b3968208c  xcompmgr-1.1.8.tar.bz2\nsha1 7bb28329b4bb687763df2d2c1723cb6ecb20945a  xcompmgr-1.1.8.tar.bz2\nsha256 0b89daf4f060fa3fa83cca862c45d531fef7121b5d06552c1d73d396ad9a7243  xcompmgr-1.1.8.tar.bz2\nsha512 ccf29426ffb0797a53653d1ce152de5eee0cec284811fed4b8e634ea0d948180531e4619d96f47e4f9594432c57322624fe0fdaee2c9200efac427fc0904953d  xcompmgr-1.1.8.tar.bz2\n# Locally computed\nsha256 c843545f72771b3ff95eb88defc2e3ed8f9a1802d9bb6c32c196bb5eec3d3a5d  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xcompmgr/xapp_xcompmgr.mk",
    "content": "################################################################################\n#\n# xapp_xcompmgr\n#\n################################################################################\n\nXAPP_XCOMPMGR_VERSION = 1.1.8\nXAPP_XCOMPMGR_SOURCE = xcompmgr-$(XAPP_XCOMPMGR_VERSION).tar.bz2\nXAPP_XCOMPMGR_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XCOMPMGR_LICENSE = MIT\nXAPP_XCOMPMGR_LICENSE_FILES = COPYING\nXAPP_XCOMPMGR_DEPENDENCIES = \\\n\txlib_libXcomposite \\\n\txlib_libXdamage \\\n\txlib_libXext \\\n\txlib_libXfixes \\\n\txlib_libXrender\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xconsole/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XCONSOLE\n\tbool \"xconsole\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  xconsole - monitor system console messages with X\n"
  },
  {
    "path": "package/x11r7/xapp_xconsole/xapp_xconsole.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2017-January/002774.html\nsha256  d1144882df207378381bc83927906559defbf7b83a01d52c50ad44234c5851e0  xconsole-1.0.7.tar.bz2\n# Locally computed\nsha256  a29ea5dbcde7ba1695c95949be6303d1ca1de0b7786a38b60f33eccf03506f9d  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xconsole/xapp_xconsole.mk",
    "content": "################################################################################\n#\n# xapp_xconsole\n#\n################################################################################\n\nXAPP_XCONSOLE_VERSION = 1.0.7\nXAPP_XCONSOLE_SOURCE = xconsole-$(XAPP_XCONSOLE_VERSION).tar.bz2\nXAPP_XCONSOLE_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XCONSOLE_LICENSE = MIT\nXAPP_XCONSOLE_LICENSE_FILES = COPYING\nXAPP_XCONSOLE_DEPENDENCIES = \\\n\txlib_libX11 xlib_libXaw xlib_libXt xorgproto \\\n\txlib_libXmu\nXAPP_XCONSOLE_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xcursorgen/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XCURSORGEN\n\tbool \"xcursorgen\"\n\tselect BR2_PACKAGE_LIBPNG\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXCURSOR\n\thelp\n\t  create an X cursor file from a collection of PNG images\n"
  },
  {
    "path": "package/x11r7/xapp_xcursorgen/xapp_xcursorgen.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-January/002936.html\nmd5 25cc7ca1ce5dcbb61c2b471c55e686b5  xcursorgen-1.0.7.tar.bz2\nsha1 109367eb23b0ad52cf5de15f50c02ebe872698ae  xcursorgen-1.0.7.tar.bz2\nsha256 35b6f844b24f1776e9006c880a745728800764dbe3b327a128772b4610d8eb3d  xcursorgen-1.0.7.tar.bz2\nsha512 bd13ad23691d3daa2d5dcdc5902cf62e3dcb97a0289aff362e6cd85866a1d8cafb64f98800a75bfb4cf1f3c76244ca20201847dff594543d136d0abaec7011d2  xcursorgen-1.0.7.tar.bz2\n# Locally computed\nsha256 8c773336b654442ac8018715a52be1a8254895c57c898d5387016e9488cc2009  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xcursorgen/xapp_xcursorgen.mk",
    "content": "################################################################################\n#\n# xapp_xcursorgen\n#\n################################################################################\n\nXAPP_XCURSORGEN_VERSION = 1.0.7\nXAPP_XCURSORGEN_SOURCE = xcursorgen-$(XAPP_XCURSORGEN_VERSION).tar.bz2\nXAPP_XCURSORGEN_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XCURSORGEN_LICENSE = MIT\nXAPP_XCURSORGEN_LICENSE_FILES = COPYING\nXAPP_XCURSORGEN_DEPENDENCIES = libpng xlib_libX11 xlib_libXcursor\nHOST_XAPP_XCURSORGEN_DEPENDENCIES = \\\n\thost-libpng host-xlib_libX11 host-xlib_libXcursor\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xdbedizzy/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XDBEDIZZY\n\tbool \"xdbedizzy\"\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\thelp\n\t  X.Org xdbedizzy application\n"
  },
  {
    "path": "package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2010-October/001514.html\nsha1\t281bee72116311e2d8393ae53ea832e9d267eded\txdbedizzy-1.1.0.tar.bz2\n# Locally computed\nsha256  27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.mk",
    "content": "################################################################################\n#\n# xapp_xdbedizzy\n#\n################################################################################\n\nXAPP_XDBEDIZZY_VERSION = 1.1.0\nXAPP_XDBEDIZZY_SOURCE = xdbedizzy-$(XAPP_XDBEDIZZY_VERSION).tar.bz2\nXAPP_XDBEDIZZY_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XDBEDIZZY_LICENSE = MIT\nXAPP_XDBEDIZZY_LICENSE_FILES = COPYING\nXAPP_XDBEDIZZY_DEPENDENCIES = xlib_libXext\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xditview/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XDITVIEW\n\tbool \"xditview\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  display ditroff output\n"
  },
  {
    "path": "package/x11r7/xapp_xditview/xapp_xditview.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-April/002570.html\nmd5 3a909116a3b2abe3845215cf49e09fa5  xditview-1.0.5.tar.bz2\nsha1 f06f65bca31168c86bcebd7f92dbbda08817a5cc  xditview-1.0.5.tar.bz2\nsha256 eecb1ed51ab4edc7f454476d1248cfb7799a17c5679b3dd834e8b4658331c04b  xditview-1.0.5.tar.bz2\nsha512 e20c903f38394b496111267e142d84d11e69a3b89f91869652d1f2ee5c997a13f90bfa2966651b42cd3979a330b348a6e397cc6a74c45b1f3f91643e7c06765d  xditview-1.0.5.tar.bz2\n# Locally computed\nsha256 023d879308a49249181f78bbb567e93c45138ad847fe969d191e4802e7a1a005  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xditview/xapp_xditview.mk",
    "content": "################################################################################\n#\n# xapp_xditview\n#\n################################################################################\n\nXAPP_XDITVIEW_VERSION = 1.0.5\nXAPP_XDITVIEW_SOURCE = xditview-$(XAPP_XDITVIEW_VERSION).tar.bz2\nXAPP_XDITVIEW_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XDITVIEW_LICENSE = MIT\nXAPP_XDITVIEW_LICENSE_FILES = COPYING\nXAPP_XDITVIEW_DEPENDENCIES = xlib_libXaw\nXAPP_XDITVIEW_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xdm/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XDM\n\tbool \"xdm\"\n\tdepends on BR2_USE_MMU # fork()\n\t# Runtime dependency: can't start an X server unless there is one\n\tdepends on BR2_PACKAGE_XSERVER_XORG_SERVER\n\tselect BR2_PACKAGE_XAPP_SESSREG\n\tselect BR2_PACKAGE_XAPP_XRDB\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXDMCP\n\tselect BR2_PACKAGE_XLIB_LIBXINERAMA\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org xdm application\n"
  },
  {
    "path": "package/x11r7/xapp_xdm/S99xdm",
    "content": "#!/bin/sh\n\nXDM_BIN=/usr/bin/xdm\n\ncase \"$1\" in\n    start)\n        printf \"Starting XDM: \"\n        $XDM_BIN\n        echo \"done\"\n        ;;\n    stop)\n\techo \"Stopping XDM\"\n        killall -q xdm\n        ;;\n    restart)\n\t$0 stop\n\t$0 start\n        ;;\n    *)\n        echo \"Usage: $0 {start|stop|restart}\"\n        exit 1\n        ;;\nesac\n\nexit 0\n"
  },
  {
    "path": "package/x11r7/xapp_xdm/xapp_xdm.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002959.html\nmd5 47c4c3bf8d59b64b64d134df8b5e5ec5  xdm-1.1.12.tar.bz2\nsha1 5cc5590e40837949b1a63cb030878f8ceebd4d85  xdm-1.1.12.tar.bz2\nsha256 0dd283f72dda098d09e2925b9278c95e21551e693a5802ab442d1b577d8327f4  xdm-1.1.12.tar.bz2\nsha512 1a4be0a070ced5db8fda6fc74794c9f9ed0cb37fa440fda6a3a7652aff62dfc3d7ba68b9facf054671ebf0f4db2a0eec29d0aa3716e3407ccd5529bac3553bdb  xdm-1.1.12.tar.bz2\n# Locally computed\nsha256 b33b4bebbd6511b3e15315e8e29d67f25334ee45da8b7da6e6e97c53a70c6923  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xdm/xapp_xdm.mk",
    "content": "################################################################################\n#\n# xapp_xdm\n#\n################################################################################\n\nXAPP_XDM_VERSION = 1.1.12\nXAPP_XDM_SOURCE = xdm-$(XAPP_XDM_VERSION).tar.bz2\nXAPP_XDM_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XDM_LICENSE = MIT\nXAPP_XDM_LICENSE_FILES = COPYING\nXAPP_XDM_CONF_ENV = ac_cv_file__dev_urandom=yes\nXAPP_XDM_DEPENDENCIES = \\\n\txapp_sessreg \\\n\txapp_xrdb \\\n\txlib_libX11 \\\n\txlib_libXaw \\\n\txlib_libXdmcp \\\n\txlib_libXinerama \\\n\txlib_libXt \\\n\txorgproto\nXAPP_XDM_CONF_OPTS = \\\n\t--with-appdefaultdir=/usr/share/X11/app-defaults \\\n\t--with-utmp-file=/var/adm/utmpx \\\n\t--with-wtmp-file=/var/adm/wtmpx\n\ndefine XAPP_XDM_INSTALL_INIT_SYSV\n\t$(INSTALL) -m 0755 -D package/x11r7/xapp_xdm/S99xdm \\\n\t\t$(TARGET_DIR)/etc/init.d/S99xdm\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xdpyinfo/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XDPYINFO\n\tbool \"xdpyinfo\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXTST\n\thelp\n\t  display information utility for X\n"
  },
  {
    "path": "package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-April/002569.html\nsha256  30238ed915619e06ceb41721e5f747d67320555cc38d459e954839c189ccaf51  xdpyinfo-1.3.2.tar.bz2\n# Locally computed\nsha256  49733ead65fdfa1da0d176f9b965cc08dae74d73d66c9606488d52f6fc036abf  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.mk",
    "content": "################################################################################\n#\n# xapp_xdpyinfo\n#\n################################################################################\n\nXAPP_XDPYINFO_VERSION = 1.3.2\nXAPP_XDPYINFO_SOURCE = xdpyinfo-$(XAPP_XDPYINFO_VERSION).tar.bz2\nXAPP_XDPYINFO_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XDPYINFO_LICENSE = MIT\nXAPP_XDPYINFO_LICENSE_FILES = COPYING\nXAPP_XDPYINFO_CONF_OPTS = --without-xf86misc # not in BR\nXAPP_XDPYINFO_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXtst \\\n\t$(if $(BR2_PACKAGE_XLIB_LIBXI),xlib_libXi) \\\n\t$(if $(BR2_PACKAGE_XLIB_LIBXRENDER),xlib_libXrender) \\\n\t$(if $(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),xlib_libXcomposite) \\\n\t$(if $(BR2_PACKAGE_XLIB_LIBXXF86VM),xlib_libXxf86vm)\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXXF86DGA),y)\nXAPP_XDPYINFO_DEPENDENCIES += xlib_libXxf86dga\nelse\nXAPP_XDPYINFO_CONF_OPTS += --without-dga\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBDMX),y)\nXAPP_XDPYINFO_DEPENDENCIES += xlib_libdmx\nelse\nXAPP_XDPYINFO_CONF_OPTS += --without-dmx\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nXAPP_XDPYINFO_DEPENDENCIES += xlib_libXinerama\nelse\nXAPP_XDPYINFO_CONF_OPTS += --without-xinerama\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xdriinfo/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XDRIINFO\n\tbool \"xdriinfo\"\n\tdepends on BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  query configuration information of DRI drivers\n\ncomment \"xdriinfo needs an OpenGL backend\"\n\tdepends on !BR2_PACKAGE_HAS_LIBGL\n"
  },
  {
    "path": "package/x11r7/xapp_xdriinfo/xapp_xdriinfo.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002858.html\nmd5 480e63cd365f03eb2515a6527d5f4ca6  xdriinfo-1.0.6.tar.bz2\nsha1 11682ae1f04a311b832651d78bbf4c6ac77f0ed9  xdriinfo-1.0.6.tar.bz2\nsha256 d9ccd2c3e87899417acc9ea1f3e319a4198112babe1dc711273584f607449d51  xdriinfo-1.0.6.tar.bz2\nsha512 7ddd9e19abaef93e4d85004293528ec3814ef84c470d496dbb8dc8313d804bb7520406de8d33d2bc2b3af942bd0a5d5032a109b2726438a966af63ea680a102f  xdriinfo-1.0.6.tar.bz2\n# Locally computed\nsha256 de2fbb160bbb64c48975d7a3ebe3636a312b73227df1efe37488a8cecb9c1932  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xdriinfo/xapp_xdriinfo.mk",
    "content": "################################################################################\n#\n# xapp_xdriinfo\n#\n################################################################################\n\nXAPP_XDRIINFO_VERSION = 1.0.6\nXAPP_XDRIINFO_SOURCE = xdriinfo-$(XAPP_XDRIINFO_VERSION).tar.bz2\nXAPP_XDRIINFO_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XDRIINFO_LICENSE = MIT\nXAPP_XDRIINFO_LICENSE_FILES = COPYING\nXAPP_XDRIINFO_DEPENDENCIES = libgl xlib_libX11 xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xedit/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XEDIT\n\tbool \"xedit\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  simple text editor for X\n"
  },
  {
    "path": "package/x11r7/xapp_xedit/xapp_xedit.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-February/002535.html\nsha1\tf37b5d0f8ec461955f0419dbb1890d8cf63d179d\t\t\t\txedit-1.2.2.tar.bz2\nsha256\t69aa42885dfc06332ca22eb01cc7187e49206e6d65b74113a8ee4cc345fc2927\txedit-1.2.2.tar.bz2\n# Locally computed\nsha256  6d3e4092277ea08fc6b3180dba061120ea53ee965afb84fce16f8ab3d35bb47a  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xedit/xapp_xedit.mk",
    "content": "################################################################################\n#\n# xapp_xedit\n#\n################################################################################\n\nXAPP_XEDIT_VERSION = 1.2.2\nXAPP_XEDIT_SOURCE = xedit-$(XAPP_XEDIT_VERSION).tar.bz2\nXAPP_XEDIT_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XEDIT_LICENSE = MIT\nXAPP_XEDIT_LICENSE_FILES = COPYING\nXAPP_XEDIT_DEPENDENCIES = xlib_libXaw\n\nXAPP_XEDIT_CONF_OPTS = \\\n\t--disable-selective-werror \\\n\t--with-appdefaultdir=/usr/share/X11/app-defaults\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xev/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XEV\n\tbool \"xev\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\thelp\n\t  print contents of X events\n"
  },
  {
    "path": "package/x11r7/xapp_xev/xapp_xev.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2020-July/003048.html\nsha256  d700e08bfe751ed2dbf802baa204b056d0e49348b6eb3c6f9cb035d8ae4885e2  xev-1.2.4.tar.bz2\nsha512  383472ddbfad639ba46a69080ecdd11a514a0578fd32c463fae18da02e0265c944589eebf12a858994f5fd601c02a0d51517e9b3ff61c6afe740d374f02781ca  xev-1.2.4.tar.bz2\n# Locally computed\nsha256  9b840f2e1900889124cc999f3158da2b6b07bf6d0d77bdbb01ce65d2e702dc83  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xev/xapp_xev.mk",
    "content": "################################################################################\n#\n# xapp_xev\n#\n################################################################################\n\nXAPP_XEV_VERSION = 1.2.4\nXAPP_XEV_SOURCE = xev-$(XAPP_XEV_VERSION).tar.bz2\nXAPP_XEV_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XEV_LICENSE = MIT\nXAPP_XEV_LICENSE_FILES = COPYING\nXAPP_XEV_DEPENDENCIES = xlib_libX11 xlib_libXrandr\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xeyes/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XEYES\n\tbool \"xeyes\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXI\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\thelp\n\t  X.Org xeyes application\n"
  },
  {
    "path": "package/x11r7/xapp_xeyes/xapp_xeyes.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-August/003101.html\nsha256  f8a17e23146bef1ab345a1e303c6749e42aaa7bcf4f25428afad41770721b6db  xeyes-1.2.0.tar.bz2\nsha512  2d1614614b3ba3d1ebaa0e9801a2e159389b94aaacafb962d326b7e6dc712c1eb2c12a50ceb10b3135cf0eee6ae86bbf84e73098deb08e73792f14a60616b4d8  xeyes-1.2.0.tar.bz2\n# Locally computed\nsha256  d8de1de40e16227d1eb4b19e95117ce3f990f71f71df096a2259b0bc9931e042  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xeyes/xapp_xeyes.mk",
    "content": "################################################################################\n#\n# xapp_xeyes\n#\n################################################################################\n\nXAPP_XEYES_VERSION = 1.2.0\nXAPP_XEYES_SOURCE = xeyes-$(XAPP_XEYES_VERSION).tar.bz2\nXAPP_XEYES_SITE = https://xorg.freedesktop.org/archive/individual/app\nXAPP_XEYES_LICENSE = MIT\nXAPP_XEYES_LICENSE_FILES = COPYING\nXAPP_XEYES_DEPENDENCIES = \\\n\txlib_libX11 \\\n\txlib_libXext \\\n\txlib_libXi \\\n\txlib_libXmu \\\n\txlib_libXt\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y)\nXAPP_XEYES_DEPENDENCIES += xlib_libXrender\nXAPP_XEYES_CONF_OPTS += --with-xrender\nelse\nXAPP_XEYES_CONF_OPTS += --without-xrender\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xf86dga/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XF86DGA\n\tbool \"xf86dga\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXXF86DGA\n\thelp\n\t  test program for the XFree86-DGA extension\n"
  },
  {
    "path": "package/x11r7/xapp_xf86dga/xapp_xf86dga.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2010-October/001515.html\nsha1\t030659e3728f5f7142e1cf727f147aceeabe4b9e\txf86dga-1.0.3.tar.bz2\n# Locally computed\nsha256  27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xf86dga/xapp_xf86dga.mk",
    "content": "################################################################################\n#\n# xapp_xf86dga\n#\n################################################################################\n\nXAPP_XF86DGA_VERSION = 1.0.3\nXAPP_XF86DGA_SOURCE = xf86dga-$(XAPP_XF86DGA_VERSION).tar.bz2\nXAPP_XF86DGA_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XF86DGA_LICENSE = MIT\nXAPP_XF86DGA_LICENSE_FILES = COPYING\nXAPP_XF86DGA_DEPENDENCIES = \\\n\thost-pkgconf \\\n\txlib_libX11 \\\n\txlib_libXxf86dga\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xfd/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XFD\n\tbool \"xfd\"\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXFT\n\thelp\n\t  X.Org xfd application\n"
  },
  {
    "path": "package/x11r7/xapp_xfd/xapp_xfd.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002968.html\nmd5 f9c9f2b101a96d4b50c2a4ab9b5ab5b1  xfd-1.1.3.tar.bz2\nsha1 ca6dbe2027b205992a52c6bb717a43508f12a8c4  xfd-1.1.3.tar.bz2\nsha256 192f938ba5830e84cc807d8ead2ad9655b43eaed6500c830f3e083aad10ed958  xfd-1.1.3.tar.bz2\nsha512 68e2d4ce5e24215353b6f3231191d69639c4dd90a703e03ccf152bbfe4012da071c387ba289f918fb0336a3be9ee49dc05cbec7273fa85f5e476ead7e10795f0  xfd-1.1.3.tar.bz2\n# Locally computed\nsha256 57ae10f24fc110dafb3b8d7735cf26b1905ff74e716745b2520e4ccd7751095c  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xfd/xapp_xfd.mk",
    "content": "################################################################################\n#\n# xapp_xfd\n#\n################################################################################\n\nXAPP_XFD_VERSION = 1.1.3\nXAPP_XFD_SOURCE = xfd-$(XAPP_XFD_VERSION).tar.bz2\nXAPP_XFD_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XFD_LICENSE = MIT\nXAPP_XFD_LICENSE_FILES = COPYING\nXAPP_XFD_DEPENDENCIES = \\\n\tfreetype \\\n\tfontconfig \\\n\txlib_libXaw \\\n\txlib_libXft \\\n\t$(TARGET_NLS_DEPENDENCIES)\nXAPP_XFD_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\nXAPP_XFD_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXKBFILE),y)\nXAPP_XFD_CONF_OPTS += --with-xkb\nXAPP_XFD_DEPENDENCIES += xlib_libxkbfile\nelse\nXAPP_XFD_CONF_OPTS += --without-xkb\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xfindproxy/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XFINDPROXY\n\tbool \"xfindproxy\"\n\tselect BR2_PACKAGE_XLIB_LIBICE\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  xfindproxy utilizes the Proxy Management Protocol to\n\t  communicate with a proxy manager to locate available X11\n\t  proxy services.\n"
  },
  {
    "path": "package/x11r7/xapp_xfindproxy/xapp_xfindproxy.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-April/002573.html\nsha256  5626bda27c7faa5cbe289a17f8552538fff08a96d542b85efdda1804ccf8a01f  xfindproxy-1.0.4.tar.bz2\n# Locally computed\nsha256  373984cd13212f3e2fbbcdf88694fd1f5a3658ed9184a6ac44f686fc2e8620f2  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xfindproxy/xapp_xfindproxy.mk",
    "content": "################################################################################\n#\n# xapp_xfindproxy\n#\n################################################################################\n\nXAPP_XFINDPROXY_VERSION = 1.0.4\nXAPP_XFINDPROXY_SOURCE = xfindproxy-$(XAPP_XFINDPROXY_VERSION).tar.bz2\nXAPP_XFINDPROXY_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XFINDPROXY_LICENSE = MIT\nXAPP_XFINDPROXY_LICENSE_FILES = COPYING\nXAPP_XFINDPROXY_DEPENDENCIES = \\\n\txlib_libICE \\\n\txlib_libXt \\\n\txorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xfontsel/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XFONTSEL\n\tbool \"xfontsel\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  point and click selection of X11 font names\n"
  },
  {
    "path": "package/x11r7/xapp_xfontsel/xapp_xfontsel.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002861.html\nmd5 13150ff98846bf6d9a14bee00697fa47  xfontsel-1.0.6.tar.bz2\nsha1 3fd8d78cc270030b41298170c3e5222065dd1cfd  xfontsel-1.0.6.tar.bz2\nsha256 25aa0b7c4262f5e99c07c2b96e00e4eb25b7e53f94fa803942af9d0e8da3001c  xfontsel-1.0.6.tar.bz2\nsha512 2f6bc51549a302404cdaf9a5a825add383953fcbb2a0c7076691cefd4dd7e4a3c772c047be74101c8486f75d03ce0bd3e65ede14e91732cf2a932810441c9099  xfontsel-1.0.6.tar.bz2\n# Locally computed\nsha256 a27097bcc5cdf4fa5d761dd4e5cea1f41911c51b0a7d9da6e3a48f69d9fd0c09 COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xfontsel/xapp_xfontsel.mk",
    "content": "################################################################################\n#\n# xapp_xfontsel\n#\n################################################################################\n\nXAPP_XFONTSEL_VERSION = 1.0.6\nXAPP_XFONTSEL_SOURCE = xfontsel-$(XAPP_XFONTSEL_VERSION).tar.bz2\nXAPP_XFONTSEL_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XFONTSEL_LICENSE = MIT\nXAPP_XFONTSEL_LICENSE_FILES = COPYING\nXAPP_XFONTSEL_DEPENDENCIES = xlib_libXaw\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xfs/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XFS\n\tbool \"xfs\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBFS\n\tselect BR2_PACKAGE_XLIB_LIBXFONT2\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X font server\n"
  },
  {
    "path": "package/x11r7/xapp_xfs/xapp_xfs.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2017-November/002826.html\nmd5  b4d2e644bfb35cae8858d2411501b07e  xfs-1.2.0.tar.bz2\nsha1 00848fcc2915ed8b00e75ac311c4727327324f57  xfs-1.2.0.tar.bz2\nsha256 db2212115783498f8eeaaee1349461d6c4e9d2005e142bacd3a984fe57269860  xfs-1.2.0.tar.bz2\nsha512 557b08aa07919239ce345d60b288b886640200bb1a59649fc890c3ccaa8559cc6745189614e696ab1b390ec024b393be5493787b7b0d2b3545b342d743c2e0ef  xfs-1.2.0.tar.bz2\n# Locally computed\nsha256 0314ea37f40eff3c9ffe44b3924b2a768422f006a754e8286bfd1c73203d225e  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xfs/xapp_xfs.mk",
    "content": "################################################################################\n#\n# xapp_xfs\n#\n################################################################################\n\nXAPP_XFS_VERSION = 1.2.0\nXAPP_XFS_SOURCE = xfs-$(XAPP_XFS_VERSION).tar.bz2\nXAPP_XFS_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XFS_LICENSE = MIT\nXAPP_XFS_LICENSE_FILES = COPYING\nXAPP_XFS_DEPENDENCIES = xlib_libFS xlib_libXfont2 xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xfsinfo/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XFSINFO\n\tbool \"xfsinfo\"\n\tselect BR2_PACKAGE_XLIB_LIBFS\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  X font server information utility\n"
  },
  {
    "path": "package/x11r7/xapp_xfsinfo/xapp_xfsinfo.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-February/002949.html\nmd5 0060d6151427d9e570e54fc52a88e7d7  xfsinfo-1.0.6.tar.bz2\nsha1 cbfe7470179f1ab5eecf992226dc1b28902c6b4c  xfsinfo-1.0.6.tar.bz2\nsha256 8a3e8b9b9ae6ed571989d04e1846d39b9043e28f7623b500ebe1d47762c9b1d6  xfsinfo-1.0.6.tar.bz2\nsha512 901fc3817d7c95f2ba75ed0c51de91abd8efa67bbb93ad6b7d66e56a2f721af9db364e92f9ef2e719835fd48e934a5ea7402e5565c0ccd9b6b82633e869dc57b  xfsinfo-1.0.6.tar.bz2\n# Locally computed\nsha256 bae01fa08f30f21f9cfb75e8339d081b34e5e03d12677177f85a55b0ca41d0db  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xfsinfo/xapp_xfsinfo.mk",
    "content": "################################################################################\n#\n# xapp_xfsinfo\n#\n################################################################################\n\nXAPP_XFSINFO_VERSION = 1.0.6\nXAPP_XFSINFO_SOURCE = xfsinfo-$(XAPP_XFSINFO_VERSION).tar.bz2\nXAPP_XFSINFO_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XFSINFO_LICENSE = MIT\nXAPP_XFSINFO_LICENSE_FILES = COPYING\nXAPP_XFSINFO_DEPENDENCIES = xlib_libFS xlib_libX11\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xgamma/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XGAMMA\n\tbool \"xgamma\"\n\tselect BR2_PACKAGE_XLIB_LIBXXF86VM\n\thelp\n\t  Alter a monitor's gamma correction through the X server\n"
  },
  {
    "path": "package/x11r7/xapp_xgamma/xapp_xgamma.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-April/002574.html\nsha256  0ef1c35b5c18b1b22317f455c8df13c0a471a8efad63c89c98ae3ce8c2b222d3  xgamma-1.0.6.tar.bz2\n# Locally computed\nsha256  78d354d348feaaab8d67a220e84137ec24fece04af4dface2e67132c72e216a2  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xgamma/xapp_xgamma.mk",
    "content": "################################################################################\n#\n# xapp_xgamma\n#\n################################################################################\n\nXAPP_XGAMMA_VERSION = 1.0.6\nXAPP_XGAMMA_SOURCE = xgamma-$(XAPP_XGAMMA_VERSION).tar.bz2\nXAPP_XGAMMA_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XGAMMA_LICENSE = MIT\nXAPP_XGAMMA_LICENSE_FILES = COPYING\nXAPP_XGAMMA_DEPENDENCIES = xlib_libXxf86vm\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xgc/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XGC\n\tbool \"xgc\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  X graphics demo\n"
  },
  {
    "path": "package/x11r7/xapp_xgc/xapp_xgc.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-April/002575.html\nsha256  14828d9bda358ad57efc0206bc416ee33ba542091edb186485cca5389adc2f5e  xgc-1.0.5.tar.bz2\n# Locally computed\nsha256  13ebeb3e59e406064d46e94a707ed5ec5d8d2bf840971265dd46db0850d22d02  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xgc/xapp_xgc.mk",
    "content": "################################################################################\n#\n# xapp_xgc\n#\n################################################################################\n\nXAPP_XGC_VERSION = 1.0.5\nXAPP_XGC_SOURCE = xgc-$(XAPP_XGC_VERSION).tar.bz2\nXAPP_XGC_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XGC_LICENSE = MIT\nXAPP_XGC_LICENSE_FILES = COPYING\nXAPP_XGC_DEPENDENCIES = xlib_libXaw\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xhost/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XHOST\n\tbool \"xhost\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  Controls host and/or user access to a running X server.\n"
  },
  {
    "path": "package/x11r7/xapp_xhost/xapp_xhost.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-February/002950.html\nmd5 a48c72954ae6665e0616f6653636da8c  xhost-1.0.8.tar.bz2\nsha1 971670858a464d4f8eeb6f4e182f9fcd94149790  xhost-1.0.8.tar.bz2\nsha256 a2dc3c579e13674947395ef8ccc1b3763f89012a216c2cc6277096489aadc396  xhost-1.0.8.tar.bz2\nsha512 55581f9bc45a70a73b13fe718ca83c4cb0a6116d26addc0f07659ebeb5bf7d2379e84cab5a1702ae77a298a66f42ae03f41ddc7d5acd61c6f18448e58ad7cb6b  xhost-1.0.8.tar.bz2\n# Locally computed\nsha256 7e69bed6fcfff05ecf454d7e4b29cd265172385833f1978f04b638f92f2cfecf  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xhost/xapp_xhost.mk",
    "content": "################################################################################\n#\n# xapp_xhost\n#\n################################################################################\n\nXAPP_XHOST_VERSION = 1.0.8\nXAPP_XHOST_SOURCE = xhost-$(XAPP_XHOST_VERSION).tar.bz2\nXAPP_XHOST_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XHOST_LICENSE = MIT\nXAPP_XHOST_LICENSE_FILES = COPYING\nXAPP_XHOST_DEPENDENCIES = xlib_libX11 xlib_libXmu\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xinit/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XINIT\n\tbool \"xinit\"\n\tdepends on BR2_USE_MMU # fork()\n\t# Runtime dependency: can't start an X server unless there is one\n\tdepends on BR2_PACKAGE_XSERVER_XORG_SERVER\n\t# Runtime dependency; mcookie is also in util-linux\n\tselect BR2_PACKAGE_MCOOKIE if !BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_XAPP_XAUTH\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  X Window System initializer\n"
  },
  {
    "path": "package/x11r7/xapp_xinit/xapp_xinit.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002962.html\nmd5 6d506ab2efc17a08e87778654e099d37  xinit-1.4.1.tar.bz2\nsha1 d874a2eecf2c30291e327851b151fdab8183260c  xinit-1.4.1.tar.bz2\nsha256 de9b8f617b68a70f6caf87da01fcf0ebd2b75690cdcba9c921d0ef54fa54abb9  xinit-1.4.1.tar.bz2\nsha512 6cbc5d025a891c419f3f4493381b2fca57a67d78df866d2f16a83426f86bad6eca7f240fac12b25cbcc63df0fec41f625407184e044898602d66483715315340  xinit-1.4.1.tar.bz2\n# Locally computed\nsha256 c47001aa217d4ae7787121d80634db4bdba564e49a0ecab8d48b1bdc4edee1c7 COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xinit/xapp_xinit.mk",
    "content": "################################################################################\n#\n# xapp_xinit\n#\n################################################################################\n\nXAPP_XINIT_VERSION = 1.4.1\nXAPP_XINIT_SOURCE = xinit-$(XAPP_XINIT_VERSION).tar.bz2\nXAPP_XINIT_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XINIT_DEPENDENCIES = xapp_xauth xlib_libX11\nXAPP_XINIT_LICENSE = MIT\nXAPP_XINIT_LICENSE_FILES = COPYING\nXAPP_XINIT_CONF_OPTS = MCOOKIE=/usr/bin/mcookie\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xinput/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XINPUT\n\tbool \"xinput\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXI\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\tselect BR2_PACKAGE_XLIB_LIBXINERAMA\n\thelp\n\t  xinput\n"
  },
  {
    "path": "package/x11r7/xapp_xinput/xapp_xinput.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-July/003013.html\nmd5 ac6b7432726008b2f50eba82b0e2dbe4  xinput-1.6.3.tar.bz2\nsha1 92ea7dfb3d8465921b0dca85da7d5b01cedae6c8  xinput-1.6.3.tar.bz2\nsha256 35a281dd3b9b22ea85e39869bb7670ba78955d5fec17c6ef7165d61e5aeb66ed  xinput-1.6.3.tar.bz2\nsha512 cb2fef866ac5a71dbca3e23b4ecadaca38e65dc1b30f8bb024bad92486554fafc472706619a1af04c746a4f53ce6aea827d694b9f4f0c7d0d46bb1da81984076  xinput-1.6.3.tar.bz2\n# Locally computed\nsha256 bbd35c7a8e8c5cb073935e84b29b0c53f7131a4ef1ce737dc2be5616941e07e1  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xinput/xapp_xinput.mk",
    "content": "################################################################################\n#\n# xapp_xinput\n#\n################################################################################\n\nXAPP_XINPUT_VERSION = 1.6.3\nXAPP_XINPUT_SOURCE = xinput-$(XAPP_XINPUT_VERSION).tar.bz2\nXAPP_XINPUT_SITE = https://xorg.freedesktop.org/archive/individual/app\nXAPP_XINPUT_LICENSE = MIT\nXAPP_XINPUT_LICENSE_FILES = COPYING\nXAPP_XINPUT_DEPENDENCIES = xlib_libX11 xlib_libXi xlib_libXrandr xlib_libXinerama\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xinput-calibrator/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XINPUT_CALIBRATOR\n\tbool \"xinput-calibrator\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXI\n\thelp\n\t  A generic touchscreen calibration program for X.Org.\n\n\t  http://www.freedesktop.org/wiki/Software/xinput_calibrator\n\ncomment \"xinput-calibrator needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.hash",
    "content": "# locally computed\nsha256  baa4ddca49ec94c27ba4c715bfa26692fec1132103e927213c3169e475d3d971  xinput_calibrator-0.7.5.tar.gz\nsha256  ba6f260bba7d9640cfedfde3a6ae1790583ab8b9ee7c547233ecc0a214d1a6d3  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.mk",
    "content": "################################################################################\n#\n# xapp_xinput-calibrator\n#\n################################################################################\n\nXAPP_XINPUT_CALIBRATOR_VERSION = 0.7.5\nXAPP_XINPUT_CALIBRATOR_SOURCE = xinput_calibrator-$(XAPP_XINPUT_CALIBRATOR_VERSION).tar.gz\nXAPP_XINPUT_CALIBRATOR_SITE = http://github.com/downloads/tias/xinput_calibrator\nXAPP_XINPUT_CALIBRATOR_LICENSE = MIT\nXAPP_XINPUT_CALIBRATOR_LICENSE_FILES = COPYING\nXAPP_XINPUT_CALIBRATOR_DEPENDENCIES = xlib_libX11 xlib_libXi\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xkbcomp/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XKBCOMP\n\tbool \"xkbcomp\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXKBFILE\n\thelp\n\t  compile XKB keyboard description\n"
  },
  {
    "path": "package/x11r7/xapp_xkbcomp/xapp_xkbcomp.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-March/003075.html\nsha256  6851086c4244b6fd0cc562880d8ff193fb2bbf1e141c73632e10731b31d4b05e  xkbcomp-1.4.5.tar.bz2\nsha512  2e84f8d6b083e2e818cb95e5d2a184da00e50d71b280e92d1a71465a9a4348f922f4ddccb42cfeee6f76705bbfc8580ef67aedd0d958aaa1ae6bbcc66ccd8154  xkbcomp-1.4.5.tar.bz2\n\n# Locally computed\nsha256  6b833fdc05906ce57f016dc791db86830d49ee4da2861ce45806c50b3f4dda9e  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xkbcomp/xapp_xkbcomp.mk",
    "content": "################################################################################\n#\n# xapp_xkbcomp\n#\n################################################################################\n\nXAPP_XKBCOMP_VERSION = 1.4.5\nXAPP_XKBCOMP_SOURCE = xkbcomp-$(XAPP_XKBCOMP_VERSION).tar.bz2\nXAPP_XKBCOMP_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XKBCOMP_LICENSE = MIT\nXAPP_XKBCOMP_LICENSE_FILES = COPYING\nXAPP_XKBCOMP_DEPENDENCIES = xlib_libX11 xlib_libxkbfile\nHOST_XAPP_XKBCOMP_DEPENDENCIES = host-xlib_libX11 host-xlib_libxkbfile\nXAPP_XKBCOMP_CONF_ENV = ac_cv_file___xkbparse_c=yes\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xkbevd/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XKBEVD\n\tbool \"xkbevd\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBXKBFILE\n\thelp\n\t  XKB event daemon\n"
  },
  {
    "path": "package/x11r7/xapp_xkbevd/xapp_xkbevd.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-April/002577.html\nsha256  2430a2e5302a4cb4a5530c1df8cb3721a149bbf8eb377a2898921a145197f96a  xkbevd-1.1.4.tar.bz2\n# Locally computed\nsha256  38c6dbf8f88b1c920561ff3a4d1ffdb85c069c664f5f8b64a9adb477ef347b7c  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xkbevd/xapp_xkbevd.mk",
    "content": "################################################################################\n#\n# xapp_xkbevd\n#\n################################################################################\n\nXAPP_XKBEVD_VERSION = 1.1.4\nXAPP_XKBEVD_SOURCE = xkbevd-$(XAPP_XKBEVD_VERSION).tar.bz2\nXAPP_XKBEVD_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XKBEVD_LICENSE = MIT\nXAPP_XKBEVD_LICENSE_FILES = COPYING\nXAPP_XKBEVD_DEPENDENCIES = xlib_libxkbfile\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xkbprint/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XKBPRINT\n\tbool \"xkbprint\"\n\tselect BR2_PACKAGE_XLIB_LIBXKBFILE\n\thelp\n\t  print an XKB keyboard description\n"
  },
  {
    "path": "package/x11r7/xapp_xkbprint/xapp_xkbprint.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-November/003030.html\nmd5 9c34da77363dc3d0f616980da87244bf  xkbprint-1.0.5.tar.bz2\nsha1 e707caffb3c680b3a869a776aa3f80caeac9e9c3  xkbprint-1.0.5.tar.bz2\nsha256 5b58fe834f0822f06d63d283fac404098c6d3f6acce61888b81016f1c41023fa  xkbprint-1.0.5.tar.bz2\nsha512 ac3870352f3a595b5b8a8cb64f39e9bea81b17572c73cfbf72482477a2f576d0ffcdcf735cb3c66b8a88a7fe0f7aece6738cbac87df5641e44fae1ab9b97111f  xkbprint-1.0.5.tar.bz2\n# Locally computed\nsha256 79b32f28f7f5063054a564e1fdeee56f82a525b6516303704a1f70e55fe7197e  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xkbprint/xapp_xkbprint.mk",
    "content": "################################################################################\n#\n# xapp_xkbprint\n#\n################################################################################\n\nXAPP_XKBPRINT_VERSION = 1.0.5\nXAPP_XKBPRINT_SOURCE = xkbprint-$(XAPP_XKBPRINT_VERSION).tar.bz2\nXAPP_XKBPRINT_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XKBPRINT_LICENSE = MIT\nXAPP_XKBPRINT_LICENSE_FILES = COPYING\nXAPP_XKBPRINT_DEPENDENCIES = xlib_libxkbfile\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xkbutils/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XKBUTILS\n\tbool \"xkbutils\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXKBFILE\n\thelp\n\t  X.Org xkbutils application\n"
  },
  {
    "path": "package/x11r7/xapp_xkbutils/xapp_xkbutils.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2013-February/002162.html\nsha256  d2a18ab90275e8bca028773c44264d2266dab70853db4321bdbc18da75148130  xkbutils-1.0.4.tar.bz2\n# Locally computed\nsha256  3d67b53c085de6d475705b60855b9277afac5d4c4ec531d0ffd1ef0d00571594  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xkbutils/xapp_xkbutils.mk",
    "content": "################################################################################\n#\n# xapp_xkbutils\n#\n################################################################################\n\nXAPP_XKBUTILS_VERSION = 1.0.4\nXAPP_XKBUTILS_SOURCE = xkbutils-$(XAPP_XKBUTILS_VERSION).tar.bz2\nXAPP_XKBUTILS_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XKBUTILS_LICENSE = MIT\nXAPP_XKBUTILS_LICENSE_FILES = COPYING\nXAPP_XKBUTILS_DEPENDENCIES = xlib_libXaw xlib_libxkbfile\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xkill/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XKILL\n\tbool \"xkill\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  kill a client by its X resource\n"
  },
  {
    "path": "package/x11r7/xapp_xkill/xapp_xkill.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002864.html\nmd5 938177e4472c346cf031c1aefd8934fc  xkill-1.0.5.tar.bz2\nsha1 c5ee06b33adb252a41e4f737be6bd47651ff582a  xkill-1.0.5.tar.bz2\nsha256 c5f0bb6a95e1ac7c4def8a657496d5d2f21ccd41eb47ef2c9ccb03fb6d6aff6b  xkill-1.0.5.tar.bz2\nsha512 4603a1794f114f5cea2c885020c9d073c8421d1e785c99ff6b936ae97139c8dac8020a187b5bbd0fa6d56ed6fab879441b42ba900cc5f2f5a534dafdc86b9249  xkill-1.0.5.tar.bz2\n# Locally computed\nsha256 13306c3890e4c8710bc468dee0eba7f9677cd94c7a67d2d81fa932d4f635b21f COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xkill/xapp_xkill.mk",
    "content": "################################################################################\n#\n# xapp_xkill\n#\n################################################################################\n\nXAPP_XKILL_VERSION = 1.0.5\nXAPP_XKILL_SOURCE = xkill-$(XAPP_XKILL_VERSION).tar.bz2\nXAPP_XKILL_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XKILL_LICENSE = MIT\nXAPP_XKILL_LICENSE_FILES = COPYING\nXAPP_XKILL_DEPENDENCIES = xlib_libX11 xlib_libXmu\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xload/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XLOAD\n\tbool \"xload\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  system load average display for X\n"
  },
  {
    "path": "package/x11r7/xapp_xload/xapp_xload.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002865.html\nmd5 29afafdffe97f809d43a41db9dd63f25  xload-1.1.3.tar.bz2\nsha1 fd5053d38551883309863c2a43de2ceffa908a50  xload-1.1.3.tar.bz2\nsha256 f34e4803871d771325cfe52bebd98cc5b6040d3f065184ec73de436f9a375907  xload-1.1.3.tar.bz2\nsha512 8dbc4f0cee7b30d7381be819152b27653d9b0049266e59bde2e2c972a88c4f2bdea766fc407bbdfef15d0aab30fedc756189a1048170a812853133a5094fe7a5  xload-1.1.3.tar.bz2\n# Locally computed\nsha256 a09b31d26e4d2781eef1e71f39789f86cad6d81153e72064f45875910fa6258f COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xload/xapp_xload.mk",
    "content": "################################################################################\n#\n# xapp_xload\n#\n################################################################################\n\nXAPP_XLOAD_VERSION = 1.1.3\nXAPP_XLOAD_SOURCE = xload-$(XAPP_XLOAD_VERSION).tar.bz2\nXAPP_XLOAD_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XLOAD_LICENSE = MIT\nXAPP_XLOAD_LICENSE_FILES = COPYING\nXAPP_XLOAD_DEPENDENCIES = xlib_libXaw $(TARGET_NLS_DEPENDENCIES)\nXAPP_XLOAD_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\nXAPP_XLOAD_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)\n# musl doesn't have rwhod.h, but xload can replace it with stubs\nXAPP_XLOAD_CONF_OPTS += CFLAGS=\"$(TARGET_CFLAGS) -DRLOADSTUB\"\nendif\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),)\nXAPP_XLOAD_CONF_ENV += ac_cv_search_gettext=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xlogo/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XLOGO\n\tbool \"xlogo\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\tselect BR2_PACKAGE_XLIB_LIBXFT\n\thelp\n\t  X Window System logo\n"
  },
  {
    "path": "package/x11r7/xapp_xlogo/xapp_xlogo.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002963.html\nmd5 e9d21de1dc8c8b9f854509a26a985cd7  xlogo-1.0.5.tar.bz2\nsha1 f025a0ad30c45cbec1c2f3b1610bff94fb4e9f33  xlogo-1.0.5.tar.bz2\nsha256 633d7a3aa5df61e4e643b740e5799664741ab1a0ba40593e54fcd15dc30f378e  xlogo-1.0.5.tar.bz2\nsha512 0d78e269b0be3c5de71de7f362b896bfd9934ecd9d0361b3302399b1269e029c4a9f35418d792121a1edc34405d753f9d69c996cc3a69ac717f2b0d1f736406b  xlogo-1.0.5.tar.bz2\n# Locally computed\nsha256 972b454b6c0da17cec61225ab9dfd4afc69fd8e7e4c629497197c6f79adc6fb0  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xlogo/xapp_xlogo.mk",
    "content": "################################################################################\n#\n# xapp_xlogo\n#\n################################################################################\n\nXAPP_XLOGO_VERSION = 1.0.5\nXAPP_XLOGO_SOURCE = xlogo-$(XAPP_XLOGO_VERSION).tar.bz2\nXAPP_XLOGO_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XLOGO_LICENSE = MIT\nXAPP_XLOGO_LICENSE_FILES = COPYING\nXAPP_XLOGO_DEPENDENCIES = \\\n\txlib_libXaw xlib_libXrender \\\n\txlib_libXft host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xlsatoms/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XLSATOMS\n\tbool \"xlsatoms\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  list interned atoms defined on server\n"
  },
  {
    "path": "package/x11r7/xapp_xlsatoms/xapp_xlsatoms.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-February/002951.html\nmd5 61671fee12535347db24ec3a715032a7  xlsatoms-1.1.3.tar.bz2\nsha1 9fdb1e8df6bb08529a812ac90f63d500bf5174cc  xlsatoms-1.1.3.tar.bz2\nsha256 57868f958c263976727881f3078e55b86b4a109dc578d2b92f5c6d690850a382  xlsatoms-1.1.3.tar.bz2\nsha512 c267ccfdc5a83e834bfb5c3b144e22642badcadef4eb146eeec2df6fe6f85e9379500ae4219912c70fa2e535036a1a96cf496381f5d814e79af075e03c975f30  xlsatoms-1.1.3.tar.bz2\n# Locally computed\nsha256 f0a362fc1b8e788845b1c0ad7ba9ade58fdfb73da750c3b9780db5d70b947657  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xlsatoms/xapp_xlsatoms.mk",
    "content": "################################################################################\n#\n# xapp_xlsatoms\n#\n################################################################################\n\nXAPP_XLSATOMS_VERSION = 1.1.3\nXAPP_XLSATOMS_SOURCE = xlsatoms-$(XAPP_XLSATOMS_VERSION).tar.bz2\nXAPP_XLSATOMS_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XLSATOMS_LICENSE = MIT\nXAPP_XLSATOMS_LICENSE_FILES = COPYING\nXAPP_XLSATOMS_DEPENDENCIES = xlib_libX11 xlib_libXmu\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xlsclients/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XLSCLIENTS\n\tbool \"xlsclients\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\tselect BR2_PACKAGE_LIBXCB\n\tselect BR2_PACKAGE_XCB_UTIL\n\thelp\n\t  X.Org xlsclients application\n"
  },
  {
    "path": "package/x11r7/xapp_xlsclients/xapp_xlsclients.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002866.html\nmd5 4fa92377e0ddc137cd226a7a87b6b29a  xlsclients-1.1.4.tar.bz2\nsha1 175af1c216a1db3de5023ecd6cce186e7693c6e4  xlsclients-1.1.4.tar.bz2\nsha256 773f2af49c7ea2c44fba4213bee64325875c1b3c9bc4bbcd8dac9261751809c1  xlsclients-1.1.4.tar.bz2\nsha512 42fd848d88d3cf31168a37fed63f9f5b60ddc4f36be2956b354e574c93129d75f29e005d6631784380bcef27860b54c64f419ca18ad77f092f4520dec47b10f4  xlsclients-1.1.4.tar.bz2\n# Locally computed\nsha256 716d6f1d18cb97cdd4a2ef7b101d944a250ca9de57578a490c038b9aaf950648 COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xlsclients/xapp_xlsclients.mk",
    "content": "################################################################################\n#\n# xapp_xlsclients\n#\n################################################################################\n\nXAPP_XLSCLIENTS_VERSION = 1.1.4\nXAPP_XLSCLIENTS_SOURCE = xlsclients-$(XAPP_XLSCLIENTS_VERSION).tar.bz2\nXAPP_XLSCLIENTS_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XLSCLIENTS_LICENSE = MIT\nXAPP_XLSCLIENTS_LICENSE_FILES = COPYING\nXAPP_XLSCLIENTS_DEPENDENCIES = xlib_libX11 xlib_libXmu libxcb xcb-util\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xlsfonts/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XLSFONTS\n\tbool \"xlsfonts\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  X.Org xlsfonts application\n"
  },
  {
    "path": "package/x11r7/xapp_xlsfonts/xapp_xlsfonts.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002867.html\nmd5 5774fd4f518b3f338f2b28f270e04bfc  xlsfonts-1.0.6.tar.bz2\nsha1 bf95e46e0897dcb9d197ce20d4fa024b8ace5148  xlsfonts-1.0.6.tar.bz2\nsha256 89b80b3a030006ab6cef717be286c12f2477894b227158b1e6133274f6ebd368  xlsfonts-1.0.6.tar.bz2\nsha512 052a3b1dec23cb20fdfacd4500cb836feb3b888bf568a548ea71deb58a4ba10a1ad5392d658e95272c6d4a1832edf1f19c3de2498b78dca82c43ee52800a30c0  xlsfonts-1.0.6.tar.bz2\n# Locally computed\nsha256 dcdf5fa36a652efbe61a21def1301739b0010334ae3f049f1cff433221a8c7a5 COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xlsfonts/xapp_xlsfonts.mk",
    "content": "################################################################################\n#\n# xapp_xlsfonts\n#\n################################################################################\n\nXAPP_XLSFONTS_VERSION = 1.0.6\nXAPP_XLSFONTS_SOURCE = xlsfonts-$(XAPP_XLSFONTS_VERSION).tar.bz2\nXAPP_XLSFONTS_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XLSFONTS_LICENSE = MIT\nXAPP_XLSFONTS_LICENSE_FILES = COPYING\nXAPP_XLSFONTS_DEPENDENCIES = xlib_libX11\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xmag/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XMAG\n\tbool \"xmag\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  X.Org xmag application\n"
  },
  {
    "path": "package/x11r7/xapp_xmag/xapp_xmag.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-April/002581.html\nsha256  87a2bc23b251e2d8f8370d3283a4d6c8dac98a30cb5749a04336cdb55c14e161  xmag-1.0.6.tar.bz2\n# Locally computed\nsha256  ef8744e617719339c4934579f8558ee4a5aec4396bebd6af02562b63a7c16d27  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xmag/xapp_xmag.mk",
    "content": "################################################################################\n#\n# xapp_xmag\n#\n################################################################################\n\nXAPP_XMAG_VERSION = 1.0.6\nXAPP_XMAG_SOURCE = xmag-$(XAPP_XMAG_VERSION).tar.bz2\nXAPP_XMAG_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XMAG_LICENSE = MIT\nXAPP_XMAG_LICENSE_FILES = COPYING\nXAPP_XMAG_DEPENDENCIES = xlib_libXaw\nXAPP_XMAG_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xman/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XMAN\n\tbool \"xman\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  Manual page display program for the X Window System\n"
  },
  {
    "path": "package/x11r7/xapp_xman/xapp_xman.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-July/003011.html\nmd5 629436867b202098967636b17c8d303c  xman-1.1.5.tar.bz2\nsha1 ec76dbd010f68974e05dfe8bc4b91731a3b7285b  xman-1.1.5.tar.bz2\nsha256 4e3c2c7497e9734a6d3c8e1b6a364612892bb31e9f33076c9fdae7177ab60978  xman-1.1.5.tar.bz2\nsha512 f6b2be424a79f298bf1a81edce4172572195c9efc9454e5b7b7046f344ed08154c77ccaa763ccdf3f1a30b64aa4802783bf813ee637437ccb1fba434fc5d4400  xman-1.1.5.tar.bz2\n# Locally computed\nsha256 4c3d6d6fc5661c64285931a0871728f3745d962d877477235dc66e4043db3d36  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xman/xapp_xman.mk",
    "content": "################################################################################\n#\n# xapp_xman\n#\n################################################################################\n\nXAPP_XMAN_VERSION = 1.1.5\nXAPP_XMAN_SOURCE = xman-$(XAPP_XMAN_VERSION).tar.bz2\nXAPP_XMAN_SITE = https://xorg.freedesktop.org/archive/individual/app\nXAPP_XMAN_LICENSE = MIT\nXAPP_XMAN_LICENSE_FILES = COPYING\nXAPP_XMAN_DEPENDENCIES = xlib_libXaw\nXAPP_XMAN_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\nXAPP_XMAN_CONF_ENV = \\\n\tac_cv_file__etc_man_conf=no \\\n\tac_cv_file__etc_man_config=no \\\n\tac_cv_file__etc_manpath_config=no \\\n\tac_cv_file__usr_share_misc_man_conf=no\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xmessage/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XMESSAGE\n\tbool \"xmessage\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  display a message or query in a window (X-based /bin/echo)\n"
  },
  {
    "path": "package/x11r7/xapp_xmessage/xapp_xmessage.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002868.html\nmd5 e50ffae17eeb3943079620cb78f5ce0b  xmessage-1.0.5.tar.bz2\nsha1 d3eca72c7173d0d9547c676a16bcec51ca1213a2  xmessage-1.0.5.tar.bz2\nsha256 373dfb81e7a6f06d3d22485a12fcde6e255d58c6dee1bbaeb00c7d0caa9b2029  xmessage-1.0.5.tar.bz2\nsha512 a8423c3986b1576fa67800c315a605a527bb9a8f594ac269a736ae7b91eed0d4d83deb89148197dc3cd3f0e51894146958ce2979f78e97dcdb99c5326e34dabe  xmessage-1.0.5.tar.bz2\n# Locally computed\nsha256 dfd5427188bd6d6647ad1a9a0644428403c6239f6aa7f9d1a17629d8cc0a4ecd COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xmessage/xapp_xmessage.mk",
    "content": "################################################################################\n#\n# xapp_xmessage\n#\n################################################################################\n\nXAPP_XMESSAGE_VERSION = 1.0.5\nXAPP_XMESSAGE_SOURCE = xmessage-$(XAPP_XMESSAGE_VERSION).tar.bz2\nXAPP_XMESSAGE_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XMESSAGE_LICENSE = MIT\nXAPP_XMESSAGE_LICENSE_FILES = COPYING\nXAPP_XMESSAGE_DEPENDENCIES = xlib_libXaw\nXAPP_XMESSAGE_CONF_OPTS = --with-appdefaultdir=/usr/share/X11/app-defaults\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xmh/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XMH\n\tbool \"xmh\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XDATA_XBITMAPS\n\thelp\n\t  send and read mail with an X interface to MH\n"
  },
  {
    "path": "package/x11r7/xapp_xmh/xapp_xmh.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-April/002582.html\nsha256  b92f4f912a5fb6346d52cc2b639aea087b347f3b2e4e1a4fc7a165b1345f5689  xmh-1.0.3.tar.bz2\n# Locally computed\nsha256  27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xmh/xapp_xmh.mk",
    "content": "################################################################################\n#\n# xapp_xmh\n#\n################################################################################\n\nXAPP_XMH_VERSION = 1.0.3\nXAPP_XMH_SOURCE = xmh-$(XAPP_XMH_VERSION).tar.bz2\nXAPP_XMH_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XMH_LICENSE = MIT\nXAPP_XMH_LICENSE_FILES = COPYING\nXAPP_XMH_DEPENDENCIES = xlib_libXaw xdata_xbitmaps\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xmodmap/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XMODMAP\n\tbool \"xmodmap\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  utility for modifying keymaps and pointer button mappings in X\n"
  },
  {
    "path": "package/x11r7/xapp_xmodmap/xapp_xmodmap.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-February/002952.html\nmd5 51f1d30a525e9903280ffeea2744b1f6  xmodmap-1.0.10.tar.bz2\nsha1 69e041f8a8c501bd1feb68805a0880633a685bc8  xmodmap-1.0.10.tar.bz2\nsha256 473f0941d7439d501bb895ff358832b936ec34c749b9704c37a15e11c318487c  xmodmap-1.0.10.tar.bz2\nsha512 324c7dcef843186088f16b3bc47485eb3c9b4331e56ce43b692deb4bb3d4f4f27512480e91a379cceac8383df920dc5e37cd825246b50b6343291cec48134c04  xmodmap-1.0.10.tar.bz2\n# Locally computed\nsha256 c149563cf2cb0ecfb1148b6eb8f604c62bed43452a0d0fbafb97286a97840f5c  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xmodmap/xapp_xmodmap.mk",
    "content": "################################################################################\n#\n# xapp_xmodmap\n#\n################################################################################\n\nXAPP_XMODMAP_VERSION = 1.0.10\nXAPP_XMODMAP_SOURCE = xmodmap-$(XAPP_XMODMAP_VERSION).tar.bz2\nXAPP_XMODMAP_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XMODMAP_LICENSE = MIT\nXAPP_XMODMAP_LICENSE_FILES = COPYING\nXAPP_XMODMAP_DEPENDENCIES = xlib_libX11\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xmore/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XMORE\n\tbool \"xmore\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  plain text display program for the X Window System\n"
  },
  {
    "path": "package/x11r7/xapp_xmore/xapp_xmore.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002964.html\nmd5 8e1279352192e4142740c21db58f9be9  xmore-1.0.3.tar.bz2\nsha1 b57b92afd783d28c4c505e0c95556939f24c3ec9  xmore-1.0.3.tar.bz2\nsha256 644a1e0d5182d7708d413722d0579a587dc56b9a8cb60640df076d302e09251b  xmore-1.0.3.tar.bz2\nsha512 e3e44831cd87a54bb585f80ef0d87f69dc35f6c834a73241aad9f6e2b0999b53c51a0a3f915a94ae4d6dc9bdfb9f60b6576f0bdcec441443abd98efa6c51b1d3  xmore-1.0.3.tar.bz2\n# Locally computed\nsha256 27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xmore/xapp_xmore.mk",
    "content": "################################################################################\n#\n# xapp_xmore\n#\n################################################################################\n\nXAPP_XMORE_VERSION = 1.0.3\nXAPP_XMORE_SOURCE = xmore-$(XAPP_XMORE_VERSION).tar.bz2\nXAPP_XMORE_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XMORE_LICENSE = MIT\nXAPP_XMORE_LICENSE_FILES = COPYING\nXAPP_XMORE_DEPENDENCIES = xlib_libXaw\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xpr/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XPR\n\tbool \"xpr\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  X.Org xpr application\n"
  },
  {
    "path": "package/x11r7/xapp_xpr/xapp_xpr.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002869.html\nmd5 eaac255076ea351fd08d76025788d9f9  xpr-1.0.5.tar.bz2\nsha1 0632c7d8632ac9d23f285811aaea805a2956e155  xpr-1.0.5.tar.bz2\nsha256 b936e0f1f8d63f5ad097a0bbdce2e67c34f5d49b7263f32a832ff62d394d1e1f  xpr-1.0.5.tar.bz2\nsha512 d5dfb936ec4ad0067d02654dec8e862fe337ff6a2c2f974b2b3a612a829c2e728a0d51e7aba00ed2a94dc96dc50cc69f2c59f522e0635013f5f4f5bb3f4ab967  xpr-1.0.5.tar.bz2\n# Locally computed\nsha256 5e8ff9b5d3fc86b5d0bc5957c9ee0aa1a6d0fb9a6b116aae70762b628a0d5069 COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xpr/xapp_xpr.mk",
    "content": "################################################################################\n#\n# xapp_xpr\n#\n################################################################################\n\nXAPP_XPR_VERSION = 1.0.5\nXAPP_XPR_SOURCE = xpr-$(XAPP_XPR_VERSION).tar.bz2\nXAPP_XPR_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XPR_LICENSE = MIT\nXAPP_XPR_LICENSE_FILES = COPYING\nXAPP_XPR_DEPENDENCIES = xlib_libX11 xlib_libXmu\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xprop/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XPROP\n\tbool \"xprop\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  property displayer for X\n"
  },
  {
    "path": "package/x11r7/xapp_xprop/xapp_xprop.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2020-November/003064.html\nsha256  9b92ed0316bf2486121d8bac88bd1878f16b43bd335f18009b1f941f1eca93a1  xprop-1.2.5.tar.bz2\nsha512  93cfa621fa76ca6e8e780a252c508380b6dc9db39b67bfca16bb9800f0d39110f5d18189409a8577ef79e98bf5eece17f5e23f2218ca72ae8bb04ee7b429d559  xprop-1.2.5.tar.bz2\n# Locally computed\nsha256  f19ff982936cca133b9593a6561c3817512207e0b4c951d0e4eb5956d30d4415 COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xprop/xapp_xprop.mk",
    "content": "################################################################################\n#\n# xapp_xprop\n#\n################################################################################\n\nXAPP_XPROP_VERSION = 1.2.5\nXAPP_XPROP_SOURCE = xprop-$(XAPP_XPROP_VERSION).tar.bz2\nXAPP_XPROP_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XPROP_LICENSE = MIT\nXAPP_XPROP_LICENSE_FILES = COPYING\nXAPP_XPROP_DEPENDENCIES = xlib_libX11 xlib_libXmu\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xrandr/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XRANDR\n\tbool \"xrandr\"\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  primitive command line interface to RandR extension\n"
  },
  {
    "path": "package/x11r7/xapp_xrandr/xapp_xrandr.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-August/003018.html\nmd5 fe40f7a4fd39dd3a02248d3e0b1972e4  xrandr-1.5.1.tar.xz\nsha1 9f72957e0d2a26ece509336ea7e1529cc9ea881e  xrandr-1.5.1.tar.xz\nsha256 7bc76daf9d72f8aff885efad04ce06b90488a1a169d118dea8a2b661832e8762  xrandr-1.5.1.tar.xz\nsha512 3d0d37e974b9dffb996276ee7fd676327fd0956e5f5f572dd142a651a35d3cdfa2f6dd415cf27bf87f306981957aba4cc014c12baebefcabaa5d66b78a114922  xrandr-1.5.1.tar.xz\n# Locally computed\nsha256 0dd9a3d62c48dd7b87790029e39fb5e11756d33fded3bc1644e11585c87b2038  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xrandr/xapp_xrandr.mk",
    "content": "################################################################################\n#\n# xapp_xrandr\n#\n################################################################################\n\nXAPP_XRANDR_VERSION = 1.5.1\nXAPP_XRANDR_SOURCE = xrandr-$(XAPP_XRANDR_VERSION).tar.xz\nXAPP_XRANDR_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XRANDR_LICENSE = MIT\nXAPP_XRANDR_LICENSE_FILES = COPYING\nXAPP_XRANDR_DEPENDENCIES = xlib_libXrandr xlib_libX11\nXAPP_XRANDR_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xrdb/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XRDB\n\tbool \"xrdb\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  X server resource database utility\n"
  },
  {
    "path": "package/x11r7/xapp_xrdb/xapp_xrdb.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-August/003107.html\nsha256  4f5d031c214ffb88a42ae7528492abde1178f5146351ceb3c05f3b8d5abee8b4  xrdb-1.2.1.tar.bz2\nsha512  d88135cdfea8536523dfb986249ee42761d5363c936352f12f55b4d0c849f21236f7d74d39869c5ec5b549019d6ed89d9096cde4b3c2b4816c2778a8e370b5c9  xrdb-1.2.1.tar.bz2\n# Locally computed\nsha256  ca1b3e2f9f37c35876b69a9c1c5a7860fae59b7ba87a1d2dc541b722e29b1ecc  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xrdb/xapp_xrdb.mk",
    "content": "################################################################################\n#\n# xapp_xrdb\n#\n################################################################################\n\nXAPP_XRDB_VERSION = 1.2.1\nXAPP_XRDB_SOURCE = xrdb-$(XAPP_XRDB_VERSION).tar.bz2\nXAPP_XRDB_SITE = https://xorg.freedesktop.org/archive/individual/app\nXAPP_XRDB_LICENSE = MIT\nXAPP_XRDB_LICENSE_FILES = COPYING\nXAPP_XRDB_DEPENDENCIES = xlib_libX11 xlib_libXmu\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xrefresh/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XREFRESH\n\tbool \"xrefresh\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  refresh all or part of an X screen\n"
  },
  {
    "path": "package/x11r7/xapp_xrefresh/xapp_xrefresh.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002872.html\nmd5 c56fa4adbeed1ee5173f464a4c4a61a6  xrefresh-1.0.6.tar.bz2\nsha1 11eb5b3f905631281d2cedd86a0b666bab0d9bdc  xrefresh-1.0.6.tar.bz2\nsha256 287dfb9bb7e8d780d07e672e3252150850869cb550958ed5f8401f0835cd6353  xrefresh-1.0.6.tar.bz2\nsha512 361e97fecfc2706d5eeab69df0d4dd4baa55b6783cfddabf51d8561b7c930d71ce6c217e0512c6564208d69b04f89c69ea8c0bfb2e4f6cc25b062b55e4db3674  xrefresh-1.0.6.tar.bz2\n# Locally computed\nsha256 4f51c9a91cd277697cbea6604bf4cb240c1ed14cdba82550cb9cac8f1286f663 COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xrefresh/xapp_xrefresh.mk",
    "content": "################################################################################\n#\n# xapp_xrefresh\n#\n################################################################################\n\nXAPP_XREFRESH_VERSION = 1.0.6\nXAPP_XREFRESH_SOURCE = xrefresh-$(XAPP_XREFRESH_VERSION).tar.bz2\nXAPP_XREFRESH_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XREFRESH_LICENSE = MIT\nXAPP_XREFRESH_LICENSE_FILES = COPYING\nXAPP_XREFRESH_DEPENDENCIES = xlib_libX11\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xset/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XSET\n\tbool \"xset\"\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  X.Org xset application\n"
  },
  {
    "path": "package/x11r7/xapp_xset/xapp_xset.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002873.html\nmd5 70ea7bc7bacf1a124b1692605883f620  xset-1.2.4.tar.bz2\nsha1 41a857f30ff5bb0dfbda1549bb703984344ea228  xset-1.2.4.tar.bz2\nsha256 e4fd95280df52a88e9b0abc1fee11dcf0f34fc24041b9f45a247e52df941c957  xset-1.2.4.tar.bz2\nsha512 f24714c9a82081a09d3054bbad98553de9366992f22eaf3e2bcadbb58fad1d3dad2547fef6fa9898d8a9df064573c29df9d82a5c801fa92248604c95f65dc83d  xset-1.2.4.tar.bz2\n# Locally computed\nsha256 6bfc619b6d37dd0e6ca575edcb3a05194136e04d1d9989b8e14e6f7850587382 COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xset/xapp_xset.mk",
    "content": "################################################################################\n#\n# xapp_xset\n#\n################################################################################\n\nXAPP_XSET_VERSION = 1.2.4\nXAPP_XSET_SOURCE = xset-$(XAPP_XSET_VERSION).tar.bz2\nXAPP_XSET_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XSET_LICENSE = MIT\nXAPP_XSET_LICENSE_FILES = COPYING\nXAPP_XSET_DEPENDENCIES = xlib_libXmu\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xsetmode/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XSETMODE\n\tbool \"xsetmode\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXI\n\thelp\n\t  set the mode for an X Input device\n"
  },
  {
    "path": "package/x11r7/xapp_xsetmode/xapp_xsetmode.hash",
    "content": "# locally computed\nsha256  988b47cd922991c6e6adbce15dc386ac75690b61744b526c3af5a4eaa9afa0aa  xsetmode-1.0.0.tar.bz2\nsha256  8f22998f14924220f0f530660811d24e5371a8d7672287c9d22f1eafb7256863  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xsetmode/xapp_xsetmode.mk",
    "content": "################################################################################\n#\n# xapp_xsetmode\n#\n################################################################################\n\nXAPP_XSETMODE_VERSION = 1.0.0\nXAPP_XSETMODE_SOURCE = xsetmode-$(XAPP_XSETMODE_VERSION).tar.bz2\nXAPP_XSETMODE_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XSETMODE_LICENSE = MIT\nXAPP_XSETMODE_LICENSE_FILES = COPYING\nXAPP_XSETMODE_DEPENDENCIES = xlib_libX11 xlib_libXi\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xsetpointer/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XSETPOINTER\n\tbool \"xsetpointer\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXI\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  set an X Input device as the main pointer\n"
  },
  {
    "path": "package/x11r7/xapp_xsetpointer/xapp_xsetpointer.hash",
    "content": "# From https://lists.freedesktop.org/archives/xorg-announce/2006-November/000150.html\nmd5 9e5bcbeda4aaf02bfa095e41d30baee4  xsetpointer-1.0.1.tar.bz2\nsha1 a8b01c6f27625a6f6943f9be17b1e5511f69d710  xsetpointer-1.0.1.tar.bz2\n# locally computed\nsha256 495d88871eb5081e98bbae55f813f73cb3ce4145d6ca3e8f2826800166c04571  xsetpointer-1.0.1.tar.bz2\nsha256 8f22998f14924220f0f530660811d24e5371a8d7672287c9d22f1eafb7256863  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xsetpointer/xapp_xsetpointer.mk",
    "content": "################################################################################\n#\n# xapp_xsetpointer\n#\n################################################################################\n\nXAPP_XSETPOINTER_VERSION = 1.0.1\nXAPP_XSETPOINTER_SOURCE = xsetpointer-$(XAPP_XSETPOINTER_VERSION).tar.bz2\nXAPP_XSETPOINTER_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XSETPOINTER_LICENSE = MIT\nXAPP_XSETPOINTER_LICENSE_FILES = COPYING\nXAPP_XSETPOINTER_DEPENDENCIES = xlib_libX11 xlib_libXi xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xsetroot/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XSETROOT\n\tbool \"xsetroot\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\tselect BR2_PACKAGE_XLIB_LIBXCURSOR\n\tselect BR2_PACKAGE_XDATA_XBITMAPS\n\thelp\n\t  X.Org xsetroot application\n"
  },
  {
    "path": "package/x11r7/xapp_xsetroot/xapp_xsetroot.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002874.html\nmd5 5fe769c8777a6e873ed1305e4ce2c353  xsetroot-1.1.2.tar.bz2\nsha1 42ab81761823b44974feab86477007c49dbace50  xsetroot-1.1.2.tar.bz2\nsha256 10c442ba23591fb5470cea477a0aa5f679371f4f879c8387a1d9d05637ae417c  xsetroot-1.1.2.tar.bz2\nsha512 0b9df1b72305e5c24f1e1664578aa4411a5ffcdc5d318458117594e641f01c34700205b0d16c08abf4a8106d36128ccdbe1ea1f1035fce9018d6b52801a8b72b  xsetroot-1.1.2.tar.bz2\n# Locally computed\nsha256 48e9c9572e0dc1c14b93b753542f780e7751dd7f035816374d8a8be0211a4520 COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xsetroot/xapp_xsetroot.mk",
    "content": "################################################################################\n#\n# xapp_xsetroot\n#\n################################################################################\n\nXAPP_XSETROOT_VERSION = 1.1.2\nXAPP_XSETROOT_SOURCE = xsetroot-$(XAPP_XSETROOT_VERSION).tar.bz2\nXAPP_XSETROOT_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XSETROOT_LICENSE = MIT\nXAPP_XSETROOT_LICENSE_FILES = COPYING\nXAPP_XSETROOT_DEPENDENCIES = xlib_libX11 xlib_libXmu xlib_libXcursor xdata_xbitmaps\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xsm/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XSM\n\tbool \"xsm\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  X Session Manager\n"
  },
  {
    "path": "package/x11r7/xapp_xsm/xapp_xsm.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002875.html\nmd5 bd32c14f09d58f46084b6a8f20e6e8f1  xsm-1.0.4.tar.bz2\nsha1 dd41234e276fe8b2d0a853879568f73b6d98812a  xsm-1.0.4.tar.bz2\nsha256 9934b6893a4e52cf7435368fc8d425c371b5e32d96e420ead30166eb82d64425  xsm-1.0.4.tar.bz2\nsha512 d4e4da7c309a4eae126d2b58a13684f4dbc06b09f76dde9c89c707375df2843614f3d83bc44f9cd02f239200db3397abd86796dca0dbafc69f60482b0af5a176  xsm-1.0.4.tar.bz2\n# Locally computed\nsha256 27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xsm/xapp_xsm.mk",
    "content": "################################################################################\n#\n# xapp_xsm\n#\n################################################################################\n\nXAPP_XSM_VERSION = 1.0.4\nXAPP_XSM_SOURCE = xsm-$(XAPP_XSM_VERSION).tar.bz2\nXAPP_XSM_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XSM_LICENSE = MIT\nXAPP_XSM_LICENSE_FILES = COPYING\nXAPP_XSM_DEPENDENCIES = xlib_libXaw\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xstdcmap/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XSTDCMAP\n\tbool \"xstdcmap\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  X standard colormap utility\n"
  },
  {
    "path": "package/x11r7/xapp_xstdcmap/xapp_xstdcmap.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-February/002954.html\nmd5  da67142c128d18386ff145882e0afc66  xstdcmap-1.0.4.tar.bz2\nsha1 a5eff72ba31625e5b11506add800140019a39636  xstdcmap-1.0.4.tar.bz2\nsha256 06898b3f1eaad0b205ff3c75bdefa3207868b889d4cb37b32b8267b2bbfe6f8b  xstdcmap-1.0.4.tar.bz2\nsha512 2adbb0aec1766341e04090efa962241ff6c9e32c612851b7221cec0ee16852107d406a08ec5251070f39df882c13e3c8c9edcd88f278187a9f373e1727643a8f  xstdcmap-1.0.4.tar.bz2\n# Locally computed\nsha256 f0a362fc1b8e788845b1c0ad7ba9ade58fdfb73da750c3b9780db5d70b947657  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xstdcmap/xapp_xstdcmap.mk",
    "content": "################################################################################\n#\n# xapp_xstdcmap\n#\n################################################################################\n\nXAPP_XSTDCMAP_VERSION = 1.0.4\nXAPP_XSTDCMAP_SOURCE = xstdcmap-$(XAPP_XSTDCMAP_VERSION).tar.bz2\nXAPP_XSTDCMAP_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XSTDCMAP_LICENSE = MIT\nXAPP_XSTDCMAP_LICENSE_FILES = COPYING\nXAPP_XSTDCMAP_DEPENDENCIES = xlib_libX11 xlib_libXmu\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xvidtune/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XVIDTUNE\n\tbool \"xvidtune\"\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXXF86VM\n\thelp\n\t  video mode tuner for Xorg\n"
  },
  {
    "path": "package/x11r7/xapp_xvidtune/xapp_xvidtune.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2013-January/002129.html\nsha256  24e5e103933a04bfb2e1d18562619ed74031ab515e7343eb546bacdbcbeecf01  xvidtune-1.0.3.tar.bz2\n# Locally computed\nsha256  f3da8eaed19e27e4f67e6f076d4ebdb8d649e15a8ad33a415fb65a23de1b6689  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xvidtune/xapp_xvidtune.mk",
    "content": "################################################################################\n#\n# xapp_xvidtune\n#\n################################################################################\n\nXAPP_XVIDTUNE_VERSION = 1.0.3\nXAPP_XVIDTUNE_SOURCE = xvidtune-$(XAPP_XVIDTUNE_VERSION).tar.bz2\nXAPP_XVIDTUNE_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XVIDTUNE_LICENSE = MIT\nXAPP_XVIDTUNE_LICENSE_FILES = COPYING\nXAPP_XVIDTUNE_DEPENDENCIES = xlib_libXaw xlib_libXxf86vm\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xvinfo/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XVINFO\n\tbool \"xvinfo\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXV\n\thelp\n\t  Print out X-Video extension adaptor information\n"
  },
  {
    "path": "package/x11r7/xapp_xvinfo/xapp_xvinfo.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-February/002955.html\nmd5 b13afec137b9b331814a9824ab03ec80  xvinfo-1.1.4.tar.bz2\nsha1 136a70a72b23c81f4fe8f4c8cb7073316be16b44  xvinfo-1.1.4.tar.bz2\nsha256 0353220d6606077ba42363db65f50410759f9815352f77adc799e2adfa76e73f  xvinfo-1.1.4.tar.bz2\nsha512 85e1f936c5c826f0fdde3670bd77d5cde8641c6e8e7849e42142e91b5aa01d7e0e60d2b064eb6fef4f5666321813ca2dc9f9656756ccbe6dcda37b119ee8a63e  xvinfo-1.1.4.tar.bz2\n# Locally computed\nsha256 7725b0484faa1832534814ecb577f5a86acc74f1bcce25f92c55dfc1b693717d  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xvinfo/xapp_xvinfo.mk",
    "content": "################################################################################\n#\n# xapp_xvinfo\n#\n################################################################################\n\nXAPP_XVINFO_VERSION = 1.1.4\nXAPP_XVINFO_SOURCE = xvinfo-$(XAPP_XVINFO_VERSION).tar.bz2\nXAPP_XVINFO_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XVINFO_LICENSE = MIT\nXAPP_XVINFO_LICENSE_FILES = COPYING\nXAPP_XVINFO_DEPENDENCIES = xlib_libX11 xlib_libXv\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xwd/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XWD\n\tbool \"xwd\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXKBFILE\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  dump an image of an X window\n"
  },
  {
    "path": "package/x11r7/xapp_xwd/xapp_xwd.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-August/003102.html\nsha256  fbaa2b34163714fe7be22b60920ea4683f63b355babb1781aec2e452a033031b  xwd-1.0.8.tar.bz2\nsha512  d2aaf42c60d20c4b09f4947d3702058dbfad4633b2c5c8ea62e8897fc9ced1ab3417ce99255a223286d21a731f543019470737e3074f1bc68033b4eb47bc773e  xwd-1.0.8.tar.bz2\n# Locally computed\nsha256  7cfda56afd92a1ecd2f23bd0064e01b5141053390d854785504adfe2c0fbd946  COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xwd/xapp_xwd.mk",
    "content": "################################################################################\n#\n# xapp_xwd\n#\n################################################################################\n\nXAPP_XWD_VERSION = 1.0.8\nXAPP_XWD_SOURCE = xwd-$(XAPP_XWD_VERSION).tar.bz2\nXAPP_XWD_SITE = https://xorg.freedesktop.org/archive/individual/app\nXAPP_XWD_LICENSE = MIT\nXAPP_XWD_LICENSE_FILES = COPYING\nXAPP_XWD_DEPENDENCIES = xlib_libX11 xlib_libXmu xlib_libxkbfile\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xwininfo/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XWININFO\n\tbool \"xwininfo\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\thelp\n\t  window information utility for X\n"
  },
  {
    "path": "package/x11r7/xapp_xwininfo/xapp_xwininfo.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-July/003012.html\nmd5 26d46f7ef0588d3392da3ad5802be420  xwininfo-1.1.5.tar.bz2\nsha1 9f67b1eb07c5824d437bf577cf6198962af1aeb7  xwininfo-1.1.5.tar.bz2\nsha256 7a405441dfc476666c744f5fcd1bc8a75abf8b5b1d85db7b88b370982365080e  xwininfo-1.1.5.tar.bz2\nsha512 a3268bbeeeeafac94e589fdd47554a965910d40df7cc3d9c36c7c24fa4f5dd49615484d5916ccb41efca9cd4cf9d8981a4c60953b921220b3f4f57f9cce0e1a6  xwininfo-1.1.5.tar.bz2\n# Locally computed\nsha256 443d675237c023a47e4886506b72796afbb2633394812027f91d6e8fa433b2af COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xwininfo/xapp_xwininfo.mk",
    "content": "################################################################################\n#\n# xapp_xwininfo\n#\n################################################################################\n\nXAPP_XWININFO_VERSION = 1.1.5\nXAPP_XWININFO_SOURCE = xwininfo-$(XAPP_XWININFO_VERSION).tar.bz2\nXAPP_XWININFO_SITE = https://xorg.freedesktop.org/archive/individual/app\nXAPP_XWININFO_LICENSE = MIT\nXAPP_XWININFO_LICENSE_FILES = COPYING\nXAPP_XWININFO_DEPENDENCIES = xlib_libX11 xlib_libXmu\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xapp_xwud/Config.in",
    "content": "config BR2_PACKAGE_XAPP_XWUD\n\tbool \"xwud\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  image displayer for X\n"
  },
  {
    "path": "package/x11r7/xapp_xwud/xapp_xwud.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002878.html\nmd5 79972093bb0766fcd0223b2bd6d11932  xwud-1.0.5.tar.bz2\nsha1 a85d84a1b81f8e667ea6ac126d447590c93eb079  xwud-1.0.5.tar.bz2\nsha256 99997051f8a892313f22edf41dab45864e86e7062ee9012d5dbb6a40fc6b10a9  xwud-1.0.5.tar.bz2\nsha512 27a0ce7481978ae6cd94b0d94374af72185e270d68f2496620e148bb00945427c4827138d9efc48745e6382e3da3390ed0cdff7dbd02dcf9706e8ecccae97184  xwud-1.0.5.tar.bz2\n# Locally computed\nsha256 be3db9aa060c462490a8c1ed44a4d059b32bba359f4688b1ecf3f794d363539e COPYING\n"
  },
  {
    "path": "package/x11r7/xapp_xwud/xapp_xwud.mk",
    "content": "################################################################################\n#\n# xapp_xwud\n#\n################################################################################\n\nXAPP_XWUD_VERSION = 1.0.5\nXAPP_XWUD_SOURCE = xwud-$(XAPP_XWUD_VERSION).tar.bz2\nXAPP_XWUD_SITE = http://xorg.freedesktop.org/releases/individual/app\nXAPP_XWUD_LICENSE = MIT\nXAPP_XWUD_LICENSE_FILES = COPYING\nXAPP_XWUD_DEPENDENCIES = xlib_libX11\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xcb-proto/Config.in",
    "content": "config BR2_PACKAGE_XCB_PROTO\n\tbool \"xcb-proto\"\n\thelp\n\t  The protocol headers that define XCB.\n\n\t  http://xcb.freedesktop.org/\n"
  },
  {
    "path": "package/x11r7/xcb-proto/xcb-proto.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2020-October/003061.html\nsha256  f04add9a972ac334ea11d9d7eb4fc7f8883835da3e4859c9afa971efdf57fcc3  xcb-proto-1.14.1.tar.xz\nsha512  140fbf48483bacc7f6b70fdcf76f9e4ff0e87df9cb3a071cea47d8fe4574407cdefcfbd674099014d297e5fc010748e71d8609fca4cc32e8b25c634f928b727d  xcb-proto-1.14.1.tar.xz\n# Locally computed\nsha256  c5ffbfeaa501071ceeb97b7de2c0d703fdaa35de01c0fb6cbac1c28453a3e9fd  COPYING\n"
  },
  {
    "path": "package/x11r7/xcb-proto/xcb-proto.mk",
    "content": "################################################################################\n#\n# xcb-proto\n#\n################################################################################\n\nXCB_PROTO_VERSION = 1.14.1\nXCB_PROTO_SOURCE = xcb-proto-$(XCB_PROTO_VERSION).tar.xz\nXCB_PROTO_SITE = https://xorg.freedesktop.org/archive/individual/proto\nXCB_PROTO_LICENSE = MIT\nXCB_PROTO_LICENSE_FILES = COPYING\n\nXCB_PROTO_INSTALL_STAGING = YES\n\nXCB_PROTO_DEPENDENCIES = host-python3\nHOST_XCB_PROTO_DEPENDENCIES = host-python3\n\n# Force detection of Buildroot host-python3 over system python\nXCB_PROTO_CONF_OPTS += ac_cv_path_PYTHON=$(HOST_DIR)/bin/python3\nHOST_XCB_PROTO_CONF_OPTS += ac_cv_path_PYTHON=$(HOST_DIR)/bin/python3\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xcb-util/Config.in",
    "content": "config BR2_PACKAGE_XCB_UTIL\n\tbool \"xcb-util\"\n\tdepends on BR2_PACKAGE_LIBXCB\n\thelp\n\t  Libraries which sit on top of libxcb, the core X protocol\n\t  library, and some of the extension libraries.\n\n\t  http://xcb.freedesktop.org/\n"
  },
  {
    "path": "package/x11r7/xcb-util/xcb-util.hash",
    "content": "# locally computed\nsha256  46e49469cb3b594af1d33176cd7565def2be3fa8be4371d62271fabb5eae50e9  xcb-util-0.4.0.tar.bz2\nsha256  325b64f0b0284e08bbb7a78ae3e55c1edc2a7cd77f603225ae4b8ffc35423e37  COPYING\n"
  },
  {
    "path": "package/x11r7/xcb-util/xcb-util.mk",
    "content": "################################################################################\n#\n# xcb-util\n#\n################################################################################\n\nXCB_UTIL_VERSION = 0.4.0\nXCB_UTIL_SOURCE = xcb-util-$(XCB_UTIL_VERSION).tar.bz2\nXCB_UTIL_SITE = http://xcb.freedesktop.org/dist\nXCB_UTIL_LICENSE = MIT\nXCB_UTIL_LICENSE_FILES = COPYING\nXCB_UTIL_INSTALL_STAGING = YES\nXCB_UTIL_DEPENDENCIES = libxcb\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xcb-util-cursor/Config.in",
    "content": "config BR2_PACKAGE_XCB_UTIL_CURSOR\n\tbool \"xcb-util-cursor\"\n\tdepends on BR2_PACKAGE_LIBXCB\n\tselect BR2_PACKAGE_XCB_UTIL\n\tselect BR2_PACKAGE_XCB_UTIL_IMAGE\n\tselect BR2_PACKAGE_XCB_UTIL_RENDERUTIL\n\thelp\n\t  The XCB util modules provides a number of libraries which\n\t  sit on top of libxcb, the core X protocol library, and some\n\t  of the extension libraries. These experimental libraries\n\t  provide convenience functions and interfaces which make the\n\t  raw X protocol more usable. Some of the libraries also\n\t  provide client-side code which is not strictly part of the X\n\t  protocol but which have traditionally been provided by Xlib.\n\n\t  XCB util-cursor module provides the following libraries:\n\t    - cursor: port of libxcursor\n\n\t  http://xcb.freedesktop.org/\n"
  },
  {
    "path": "package/x11r7/xcb-util-cursor/xcb-util-cursor.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2016-May/002691.html\nsha1\t26562eb6d4151307f7b6a53453d360ecfc0563ac\txcb-util-cursor-0.1.3.tar.bz2\n# Locally computed\nsha256  0dde91ae1d443105dc9e13cbaed6674c36683b7095836ad9ddfce26be270aad5  COPYING\n"
  },
  {
    "path": "package/x11r7/xcb-util-cursor/xcb-util-cursor.mk",
    "content": "################################################################################\n#\n# xcb-util-cursor\n#\n################################################################################\n\nXCB_UTIL_CURSOR_VERSION = 0.1.3\nXCB_UTIL_CURSOR_SITE = http://xcb.freedesktop.org/dist\nXCB_UTIL_CURSOR_SOURCE = xcb-util-cursor-$(XCB_UTIL_CURSOR_VERSION).tar.bz2\nXCB_UTIL_CURSOR_LICENSE = MIT\nXCB_UTIL_CURSOR_LICENSE_FILES = COPYING\nXCB_UTIL_CURSOR_INSTALL_STAGING = YES\nXCB_UTIL_CURSOR_DEPENDENCIES = xcb-util xcb-util-image xcb-util-renderutil\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xcb-util-image/Config.in",
    "content": "config BR2_PACKAGE_XCB_UTIL_IMAGE\n\tbool \"xcb-util-image\"\n\tselect BR2_PACKAGE_XCB_UTIL\n\thelp\n\n\t  The XCB util modules provides a number of libraries which\n\t  sit on top of libxcb, the core X protocol library, and some\n\t  of the extension libraries. These experimental libraries\n\t  provide convenience functions and interfaces which make the\n\t  raw X protocol more usable. Some of the libraries also\n\t  provide client-side code which is not strictly part of the X\n\t  protocol but which have traditionally been provided by Xlib.\n\n\t  XCB util-image module provides the following library:\n\t    - image: Port of Xlib's XImage and XShmImage functions.\n\n\t  http://xcb.freedesktop.org/\n"
  },
  {
    "path": "package/x11r7/xcb-util-image/xcb-util-image.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2014-October/002489.html\nsha256\t2db96a37d78831d643538dd1b595d7d712e04bdccf8896a5e18ce0f398ea2ffc\txcb-util-image-0.4.0.tar.bz2\n# License file, locally calculated\nsha256\t19672c6153d8c4870abe734fa4dd2197481a311f4788d02ad729be07e116b26b\tCOPYING\n"
  },
  {
    "path": "package/x11r7/xcb-util-image/xcb-util-image.mk",
    "content": "################################################################################\n#\n# xcb-util-image\n#\n################################################################################\n\nXCB_UTIL_IMAGE_VERSION = 0.4.0\nXCB_UTIL_IMAGE_SITE = http://xcb.freedesktop.org/dist\nXCB_UTIL_IMAGE_SOURCE = xcb-util-image-$(XCB_UTIL_IMAGE_VERSION).tar.bz2\nXCB_UTIL_IMAGE_INSTALL_STAGING = YES\nXCB_UTIL_IMAGE_LICENSE = MIT\nXCB_UTIL_IMAGE_LICENSE_FILES = COPYING\nXCB_UTIL_IMAGE_DEPENDENCIES = xcb-util\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xcb-util-keysyms/Config.in",
    "content": "config BR2_PACKAGE_XCB_UTIL_KEYSYMS\n\tbool \"xcb-util-keysyms\"\n\tselect BR2_PACKAGE_LIBXCB\n\thelp\n\t  The XCB util modules provides a number of libraries which\n\t  sit on top of libxcb, the core X protocol library, and some\n\t  of the extension libraries. These experimental libraries\n\t  provide convenience functions and interfaces which make the\n\t  raw X protocol more usable. Some of the libraries also\n\t  provide client-side code which is not strictly part of the X\n\t  protocol but which have traditionally been provided by Xlib.\n\n\t  XCB util-keysyms module provides the following library:\n\t  keysyms: Standard X key constants and conversion to/from\n\t  keycodes.\n\n\t  http://xcb.freedesktop.org/\n"
  },
  {
    "path": "package/x11r7/xcb-util-keysyms/xcb-util-keysyms.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2014-October/002485.html\nsha256\t0ef8490ff1dede52b7de533158547f8b454b241aa3e4dcca369507f66f216dd9\txcb-util-keysyms-0.4.0.tar.bz2\n"
  },
  {
    "path": "package/x11r7/xcb-util-keysyms/xcb-util-keysyms.mk",
    "content": "################################################################################\n#\n# xcb-util-keysyms\n#\n################################################################################\n\nXCB_UTIL_KEYSYMS_VERSION = 0.4.0\nXCB_UTIL_KEYSYMS_SOURCE = xcb-util-keysyms-$(XCB_UTIL_KEYSYMS_VERSION).tar.bz2\nXCB_UTIL_KEYSYMS_SITE = http://xcb.freedesktop.org/dist\n\n# unfortunately, no license file\nXCB_UTIL_KEYSYMS_LICENSE = MIT\n\nXCB_UTIL_KEYSYMS_INSTALL_STAGING = YES\n\nXCB_UTIL_KEYSYMS_DEPENDENCIES = host-pkgconf libxcb\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xcb-util-renderutil/Config.in",
    "content": "config BR2_PACKAGE_XCB_UTIL_RENDERUTIL\n\tbool \"xcb-util-renderutil\"\n\tdepends on BR2_PACKAGE_LIBXCB # xcb-util\n\tselect BR2_PACKAGE_XCB_UTIL\n\thelp\n\t  The XCB util modules provides a number of libraries which\n\t  sit on top of libxcb, the core X protocol library, and some\n\t  of the extension libraries. These experimental libraries\n\t  provide convenience functions and interfaces which make the\n\t  raw X protocol more usable. Some of the libraries also\n\t  provide client-side code which is not strictly part of the X\n\t  protocol but which have traditionally been provided by Xlib.\n\n\t  XCB util-renderutil module provides the following library:\n\t    - renderutil: Convenience functions for the Render\n\t      extension.\n\n\t  http://xcb.freedesktop.org/\n"
  },
  {
    "path": "package/x11r7/xcb-util-renderutil/xcb-util-renderutil.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2014-June/002446.html\nsha256  c6e97e48fb1286d6394dddb1c1732f00227c70bd1bedb7d1acabefdd340bea5b  xcb-util-renderutil-0.3.9.tar.bz2\n# Locally computed\nsha256  271169dd66674e9c396697af0b4822d1c59ccd2342b7740864d667a02963068b  COPYING\n"
  },
  {
    "path": "package/x11r7/xcb-util-renderutil/xcb-util-renderutil.mk",
    "content": "################################################################################\n#\n# xcb-util-renderutil\n#\n################################################################################\n\nXCB_UTIL_RENDERUTIL_VERSION = 0.3.9\nXCB_UTIL_RENDERUTIL_SITE = http://xcb.freedesktop.org/dist\nXCB_UTIL_RENDERUTIL_SOURCE = xcb-util-renderutil-$(XCB_UTIL_RENDERUTIL_VERSION).tar.bz2\nXCB_UTIL_RENDERUTIL_LICENSE = MIT\nXCB_UTIL_RENDERUTIL_LICENSE_FILES = COPYING\nXCB_UTIL_RENDERUTIL_INSTALL_STAGING = YES\nXCB_UTIL_RENDERUTIL_DEPENDENCIES = xcb-util\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xcb-util-wm/Config.in",
    "content": "config BR2_PACKAGE_XCB_UTIL_WM\n\tbool \"xcb-util-wm\"\n\tselect BR2_PACKAGE_LIBXCB\n\thelp\n\t  The XCB util modules provides a number of libraries which\n\t  sit on top of libxcb, the core X protocol library, and some\n\t  of the extension libraries. These experimental libraries\n\t  provide convenience functions and interfaces which make the\n\t  raw X protocol more usable. Some of the libraries also\n\t  provide client-side code which is not strictly part of the X\n\t  protocol but which have traditionally been provided by Xlib.\n\n\t  XCB util-wm module provides the following libraries:\n\t    - ewmh: Both client and window-manager helpers for EWMH.\n\t    - icccm: Both client and window-manager helpers for ICCCM.\n\n\t  http://xcb.freedesktop.org/\n"
  },
  {
    "path": "package/x11r7/xcb-util-wm/xcb-util-wm.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2014-February/002401.html\nsha256\t28bf8179640eaa89276d2b0f1ce4285103d136be6c98262b6151aaee1d3c2a3f\txcb-util-wm-0.4.1.tar.bz2\n# License file, locally calculated\nsha256\t12ab3559977a4b22ae3030b90c64a386e6ec51ab0e4eab1ff530f81a2639400a\tCOPYING\n"
  },
  {
    "path": "package/x11r7/xcb-util-wm/xcb-util-wm.mk",
    "content": "################################################################################\n#\n# xcb-util-wm\n#\n################################################################################\n\nXCB_UTIL_WM_VERSION = 0.4.1\nXCB_UTIL_WM_SITE = http://xcb.freedesktop.org/dist\nXCB_UTIL_WM_SOURCE = xcb-util-wm-$(XCB_UTIL_WM_VERSION).tar.bz2\nXCB_UTIL_WM_INSTALL_STAGING = YES\nXCB_UTIL_WM_LICENSE = MIT\nXCB_UTIL_WM_LICENSE_FILES = COPYING\nXCB_UTIL_WM_DEPENDENCIES = libxcb\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xcursor-transparent-theme/0001-fix-symlink.patch",
    "content": "Do not symlink to a host directory\n\nThe installation of xcursor-transparent-theme creates many symbolic\nlinks to the 'transp' cursor file, but it does so using an absolute\ndirectory, that happens to point to the installation location, which\nis incorrect when cross-compiling.\n\nAlso add the -f option so that the package can be reinstalled even if\nit has already been installed.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/cursors/Makefile.am\n===================================================================\n--- a/cursors/Makefile.am\n+++ b/cursors/Makefile.am\n@@ -91,6 +91,6 @@\n \t$(INSTALL_DATA) $(CURSOR_REAL) $(DESTDIR)$(CURSOR_DIR)/ \n \tfor CURSOR in $(CURSOR_NAMES); do \\\n \t\techo '-- Installing cursor '$$CURSOR; \\\n-\t\tln -s $(DESTDIR)$(CURSOR_DIR)/transp $(DESTDIR)$(CURSOR_DIR)/$$CURSOR; \\\n+\t\tln -sf transp $(DESTDIR)$(CURSOR_DIR)/$$CURSOR; \\\n \tdone\n \nIndex: b/cursors/Makefile.in\n===================================================================\n--- a/cursors/Makefile.in\n+++ b/cursors/Makefile.in\n@@ -177,7 +177,7 @@\n \t$(INSTALL_DATA) $(CURSOR_REAL) $(DESTDIR)$(CURSOR_DIR)/ \n \tfor CURSOR in $(CURSOR_NAMES); do \\\n \t\techo '-- Installing cursor '$$CURSOR; \\\n-\t\tln -s $(DESTDIR)$(CURSOR_DIR)/transp $(DESTDIR)$(CURSOR_DIR)/$$CURSOR; \\\n+\t\tln -sf transp $(DESTDIR)$(CURSOR_DIR)/$$CURSOR; \\\n \tdone\n \n # Tell versions [3.59,3.63) of GNU make to not export all variables.\n"
  },
  {
    "path": "package/x11r7/xcursor-transparent-theme/Config.in",
    "content": "config BR2_PACKAGE_XCURSOR_TRANSPARENT_THEME\n\tbool \"xcursor-transparent-theme\"\n\tselect BR2_PACKAGE_XLIB_LIBXCURSOR\n\thelp\n\t  Completely transparent theme for hiding the X11 cursor.\n\n\t  No upstream site.\n"
  },
  {
    "path": "package/x11r7/xcursor-transparent-theme/index.theme",
    "content": "[Icon Theme]\nInherits=xcursor-transparent\n"
  },
  {
    "path": "package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.hash",
    "content": "# locally computed\nsha256  b26adf2d503d01299718390ae39dab4691a67220de09423be0364e9a060bf7e4  xcursor-transparent-theme-0.1.1.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.mk",
    "content": "################################################################################\n#\n# xcursor-transparent-theme\n#\n################################################################################\n\nXCURSOR_TRANSPARENT_THEME_VERSION = 0.1.1\nXCURSOR_TRANSPARENT_THEME_SITE = http://downloads.yoctoproject.org/releases/matchbox/utils\nXCURSOR_TRANSPARENT_THEME_DEPENDENCIES = xlib_libXcursor host-xapp_xcursorgen\nXCURSOR_TRANSPARENT_THEME_LICENSE = GPL-2.0\nXCURSOR_TRANSPARENT_THEME_LICENSE_FILES = COPYING\n\ndefine XCURSOR_TRANSPARENT_THEME_ICONS_DEFAULT_CONFIG_INSTALL\n\t$(INSTALL) -m 0755 -D package/x11r7/xcursor-transparent-theme/index.theme \\\n\t\t$(TARGET_DIR)/usr/share/icons/default/index.theme\nendef\n\nXCURSOR_TRANSPARENT_THEME_POST_INSTALL_TARGET_HOOKS += \\\n\tXCURSOR_TRANSPARENT_THEME_ICONS_DEFAULT_CONFIG_INSTALL\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdata_xbitmaps/Config.in",
    "content": "config BR2_PACKAGE_XDATA_XBITMAPS\n\tbool \"xbitmaps\"\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xdata_xbitmaps/xdata_xbitmaps.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-March/002881.html\nmd5 cedeef095918aca86da79a2934e03daf  xbitmaps-1.1.2.tar.bz2\nsha1 1cb0e485a66280e9a64b48426140b8a0de9cf169  xbitmaps-1.1.2.tar.bz2\nsha256 b9f0c71563125937776c8f1f25174ae9685314cbd130fb4c2efce811981e07ee  xbitmaps-1.1.2.tar.bz2\nsha512 eed5e2fce9fc6c532984e6ed1262e440591e311ca6c61a7fe7a5c877df84bfc2d7aff388fb9c894fc098785b8e5352f0bd7c918252247a040cf123874847450d  xbitmaps-1.1.2.tar.bz2\n# Locally computed\nsha256 e121ec6605558ee021674d33b1ab9306e16b9ea7d30453df42286556247be17a COPYING\n"
  },
  {
    "path": "package/x11r7/xdata_xbitmaps/xdata_xbitmaps.mk",
    "content": "################################################################################\n#\n# xdata_xbitmaps\n#\n################################################################################\n\nXDATA_XBITMAPS_VERSION = 1.1.2\nXDATA_XBITMAPS_SOURCE = xbitmaps-$(XDATA_XBITMAPS_VERSION).tar.bz2\nXDATA_XBITMAPS_SITE = http://xorg.freedesktop.org/releases/individual/data\nXDATA_XBITMAPS_LICENSE = MIT\nXDATA_XBITMAPS_LICENSE_FILES = COPYING\n\nXDATA_XBITMAPS_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdata_xcursor-themes/Config.in",
    "content": "config BR2_PACKAGE_XDATA_XCURSOR_THEMES\n\tbool \"xdata_xcursor-themes\"\n\tselect BR2_PACKAGE_XLIB_LIBXCURSOR\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-February/002945.html\nmd5 aea14eabf40528ec4db18f1cfcf5c458  xcursor-themes-1.0.6.tar.bz2\nsha1 b56fd5bf5b1ada0532a85c27db0d296e392168c5  xcursor-themes-1.0.6.tar.bz2\nsha256 ee1ec574741293abcf66ac14ce7e74add7ac6be7deb8b38179ef010d22354999  xcursor-themes-1.0.6.tar.bz2\nsha512 2ad3586a5571a5ddc0001187362b54b839644916164834213af98e58698044aec4392dd6e1e42f1794fda85c8fedf259b09214a9636bd0e71a1629c710f198d3  xcursor-themes-1.0.6.tar.bz2\n# Locally computed\nsha256 e437aed89c3440a9fe7e19968a3f2eeb97041ef6c9616837a3fd42d0874fc0e6 COPYING\n"
  },
  {
    "path": "package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.mk",
    "content": "################################################################################\n#\n# xdata_xcursor-themes\n#\n################################################################################\n\nXDATA_XCURSOR_THEMES_VERSION = 1.0.6\nXDATA_XCURSOR_THEMES_SOURCE = xcursor-themes-$(XDATA_XCURSOR_THEMES_VERSION).tar.bz2\nXDATA_XCURSOR_THEMES_SITE = http://xorg.freedesktop.org/releases/individual/data\nXDATA_XCURSOR_THEMES_LICENSE = MIT\nXDATA_XCURSOR_THEMES_LICENSE_FILES = COPYING\n\nXDATA_XCURSOR_THEMES_INSTALL_STAGING = YES\nXDATA_XCURSOR_THEMES_DEPENDENCIES = xlib_libXcursor host-xapp_xcursorgen\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-evdev/0001-build-get-rid-of-sdkdir.patch",
    "content": "From 1ad5e1593556f767150c2ca75176453bee4771e6 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sun, 23 Oct 2016 22:00:10 +0200\nSubject: [PATCH] build: get rid of sdkdir\n\nUse of sdkdir causes problems during cross-compilation, where the full\npath is then appended to the DESTDIR, leading to host paths being\nappended in the target:\n    https://bugs.busybox.net/show_bug.cgi?id=8696\n\nOther drivers (e.g. keyboard) got rid of sdkdir. Do the same.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n---\n Makefile.am         |  4 ----\n configure.ac        |  9 ---------\n include/Makefile.am |  5 ++++-\n xorg-evdev.pc.in    | 10 ++++++++--\n 4 files changed, 12 insertions(+), 16 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 1cc3ea6..1ae042a 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -18,10 +18,6 @@\n #  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n \n-\n-# Provide an sdk location that is writable by the evdev module\n-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir='$${includedir}/xorg'\n-\n SUBDIRS = src man include\n MAINTAINERCLEANFILES = ChangeLog INSTALL\n \ndiff --git a/configure.ac b/configure.ac\nindex e4887a3..4adfa43 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -66,15 +66,6 @@ AC_ARG_WITH(xorg-conf-dir,\n             [xorgconfdir=\"$prefix/share/X11/xorg.conf.d\"])\n AC_SUBST(xorgconfdir)\n \n-# X Server SDK location is required to install evdev header files\n-# This location is also relayed in the xorg-evdev.pc file\n-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`\n-\n-# Workaround overriding sdkdir to be able to create a tarball when user has no\n-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am\n-AC_ARG_WITH([sdkdir], [], [sdkdir=\"$withval\"])\n-AC_SUBST([sdkdir])\n-\n DRIVER_NAME=evdev\n AC_SUBST([DRIVER_NAME])\n \ndiff --git a/include/Makefile.am b/include/Makefile.am\nindex 0e3fc1b..afc96ed 100644\n--- a/include/Makefile.am\n+++ b/include/Makefile.am\n@@ -1 +1,4 @@\n-sdk_HEADERS = evdev-properties.h\n+# location formerly known as 'sdkdir':\n+xorgincludedir = $(includedir)/xorg\n+\n+xorginclude_HEADERS = evdev-properties.h\ndiff --git a/xorg-evdev.pc.in b/xorg-evdev.pc.in\nindex 20710a6..fcbf511 100644\n--- a/xorg-evdev.pc.in\n+++ b/xorg-evdev.pc.in\n@@ -1,6 +1,12 @@\n-sdkdir=@sdkdir@\n+prefix=@prefix@\n+exec_prefix=@exec_prefix@\n+libdir=@libdir@\n+includedir=@includedir@\n+datarootdir=@datarootdir@\n+moduledir=@moduledir@\n+sysconfigdir=@sysconfigdir@\n \n Name: xorg-evdev\n Description: X.Org evdev input driver.\n Version: @PACKAGE_VERSION@\n-Cflags: -I${sdkdir}\n+Cflags: -I${includedir}/xorg\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-evdev/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV\n\tbool \"xf86-input-evdev\"\n\tdepends on BR2_PACKAGE_HAS_UDEV # libudev is configure dependency\n\tselect BR2_PACKAGE_LIBEVDEV\n\tselect BR2_PACKAGE_MTDEV\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Generic Linux input driver\n\ncomment \"xf86-input-evdev requires udev to be enabled\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-May/002898.html\nmd5 e8bd1edc6751f92e425cae7eba3c61eb  xf86-input-evdev-2.10.6.tar.bz2\nsha1 660de292d5a40e2b8f385965c6a4e149c981ba59  xf86-input-evdev-2.10.6.tar.bz2\nsha256 8726073e81861bc7b2321e76272cbdbd33c7e1a121535a9827977265b9033ec0  xf86-input-evdev-2.10.6.tar.bz2\nsha512 560b0a6491d50a46913a5890a35c0367e59f550670993493bd9712d712a9747ddaa6fe5086daabf2fcafa24b0159383787eb273da4a2a60c089bfc0a77ad2ad1  xf86-input-evdev-2.10.6.tar.bz2\n# Locally computed\nsha256 f6b9b4732932434cad03b29cb3151d20edcf7d6e5681f40ee3c47f03dbd92dc9  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-input-evdev\n#\n################################################################################\n\nXDRIVER_XF86_INPUT_EVDEV_VERSION = 2.10.6\nXDRIVER_XF86_INPUT_EVDEV_SOURCE = xf86-input-evdev-$(XDRIVER_XF86_INPUT_EVDEV_VERSION).tar.bz2\nXDRIVER_XF86_INPUT_EVDEV_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_INPUT_EVDEV_LICENSE = MIT\nXDRIVER_XF86_INPUT_EVDEV_LICENSE_FILES = COPYING\nXDRIVER_XF86_INPUT_EVDEV_AUTORECONF = YES\n\nXDRIVER_XF86_INPUT_EVDEV_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tlibevdev \\\n\tmtdev \\\n\txorgproto \\\n\txserver_xorg-server \\\n\tudev\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-joystick/0001-build-get-rid-of-sdkdir.patch",
    "content": "From 2826691dcd01f470d30dc8eb3bbd24a96cd3a93c Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sun, 23 Oct 2016 22:29:29 +0200\nSubject: [PATCH] build: get rid of sdkdir\n\nUse of sdkdir causes problems during cross-compilation, where the full\npath is then appended to the DESTDIR, leading to host paths being\nappended in the target:\n    https://bugs.busybox.net/show_bug.cgi?id=8696\n\nOther drivers (e.g. keyboard) got rid of sdkdir. Do the same.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n---\n Makefile.am         | 1 -\n configure.ac        | 9 ---------\n include/Makefile.am | 5 ++++-\n xorg-joystick.pc.in | 2 +-\n 4 files changed, 5 insertions(+), 12 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 13946b8..c1567ae 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -18,7 +18,6 @@\n #  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n \n-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir=\\$${includedir}/xorg\n SUBDIRS = src man config include\n MAINTAINERCLEANFILES = ChangeLog INSTALL\n \ndiff --git a/configure.ac b/configure.ac\nindex b5834a5..44b9d27 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -66,15 +66,6 @@ AC_ARG_WITH(xorg-module-dir,\n inputdir=${moduledir}/input\n AC_SUBST(inputdir)\n \n-# Define a configure option for an alternate X Server SDK Headers\n-# X Server SDK location is required to install joystick header files\n-AC_ARG_WITH(sdkdir,\n-            AS_HELP_STRING([--with-sdkdir=<path>],\n-                           [Xorg X Server sdk headers (default is autodetected)]),\n-            [sdkdir=\"$withval\"],\n-            [sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`])\n-AC_SUBST(sdkdir)\n-\n # Define a configure option to enable code debugging\n AC_ARG_ENABLE(debug, AS_HELP_STRING([--disable-debug],\n                                     [Disable debugging code (default: enabled)]),\ndiff --git a/include/Makefile.am b/include/Makefile.am\nindex ed618c2..d656568 100644\n--- a/include/Makefile.am\n+++ b/include/Makefile.am\n@@ -18,4 +18,7 @@\n #  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n \n-sdk_HEADERS = joystick-properties.h\n+# Location formerly known as 'sdkdir'\n+xorgincludedir = $(includedir)/xorg\n+\n+xorginclude_HEADERS = joystick-properties.h\ndiff --git a/xorg-joystick.pc.in b/xorg-joystick.pc.in\nindex 76bb92f..a5972c7 100644\n--- a/xorg-joystick.pc.in\n+++ b/xorg-joystick.pc.in\n@@ -4,4 +4,4 @@ includedir=@includedir@\n Name: xorg-joystick\n Description: X.Org joystick input driver.\n Version: @PACKAGE_VERSION@\n-Cflags: -I${includedir}\n+Cflags: -I${includedir}/xorg\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-joystick/50-joystick.conf",
    "content": "Section \"InputClass\"\n\tIdentifier \"joystick catchall\"\n\tMatchIsJoystick \"on\"\n\tMatchDevicePath \"/dev/input/event*\"\n\tDriver \"joystick\"\nEndSection\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-joystick/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_INPUT_JOYSTICK\n\tbool \"xf86-input-joystick\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org driver for joystick input devices\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2016-November/002742.html\nsha256  9e7669ecf0f23b8e5dc39d5397cf28296f692aa4c0e4255f5e02816612c18eab  xf86-input-joystick-1.6.3.tar.bz2\n# Locally calculated\nsha256  460cf612147407317a3911ce03a215707d8d6d5f3e604a53fefa6e54974ad07e  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-input-joystick\n#\n################################################################################\n\nXDRIVER_XF86_INPUT_JOYSTICK_VERSION = 1.6.3\nXDRIVER_XF86_INPUT_JOYSTICK_SOURCE = xf86-input-joystick-$(XDRIVER_XF86_INPUT_JOYSTICK_VERSION).tar.bz2\nXDRIVER_XF86_INPUT_JOYSTICK_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_INPUT_JOYSTICK_LICENSE = MIT\nXDRIVER_XF86_INPUT_JOYSTICK_LICENSE_FILES = COPYING\nXDRIVER_XF86_INPUT_JOYSTICK_DEPENDENCIES = xserver_xorg-server xorgproto\nXDRIVER_XF86_INPUT_JOYSTICK_AUTORECONF = YES\n\ndefine XDRIVER_XF86_INPUT_JOYSTICK_CONF\n\t$(INSTALL) -m 0644 -D \\\n\t\t$(XDRIVER_XF86_INPUT_JOYSTICK_PKGDIR)/50-joystick.conf \\\n\t\t$(TARGET_DIR)/usr/share/X11/xorg.conf.d/50-joystick.conf\nendef\nXDRIVER_XF86_INPUT_JOYSTICK_POST_INSTALL_TARGET_HOOKS += XDRIVER_XF86_INPUT_JOYSTICK_CONF\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-keyboard/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD\n\tbool \"xf86-input-keyboard\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Keyboard input driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2016-November/002739.html\nsha256  f7c900f21752683402992b288d5a2826de7a6c0c0abac2aadd7e8a409e170388  xf86-input-keyboard-1.9.0.tar.bz2\n# Locally calculated\nsha256  b91b17c53724c79685e3025a38028b7d48c966fdd239e0efe2d98874d3c139a0  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-input-keyboard\n#\n################################################################################\n\nXDRIVER_XF86_INPUT_KEYBOARD_VERSION = 1.9.0\nXDRIVER_XF86_INPUT_KEYBOARD_SOURCE = xf86-input-keyboard-$(XDRIVER_XF86_INPUT_KEYBOARD_VERSION).tar.bz2\nXDRIVER_XF86_INPUT_KEYBOARD_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_INPUT_KEYBOARD_LICENSE = MIT\nXDRIVER_XF86_INPUT_KEYBOARD_LICENSE_FILES = COPYING\nXDRIVER_XF86_INPUT_KEYBOARD_DEPENDENCIES = xserver_xorg-server xorgproto\nXDRIVER_XF86_INPUT_KEYBOARD_CONF_OPTS = --disable-selective-werror\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-libinput/0001-build-get-rid-of-sdkdir.patch",
    "content": "From 1b2cf6e6c2640e08166af36eee775542a45325af Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sun, 23 Oct 2016 22:36:40 +0200\nSubject: [PATCH] build: get rid of sdkdir\n\nUse of sdkdir causes problems during cross-compilation, where the full\npath is then appended to the DESTDIR, leading to host paths being\nappended in the target:\n    https://bugs.busybox.net/show_bug.cgi?id=8696\n\nOther drivers (e.g. keyboard) got rid of sdkdir. Do the same.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n---\n Makefile.am         | 2 --\n configure.ac        | 8 --------\n include/Makefile.am | 4 +++-\n xorg-libinput.pc.in | 5 +++--\n 4 files changed, 6 insertions(+), 13 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex a447d61..7aa5523 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -19,8 +19,6 @@\n #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n \n \n-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir='$${includedir}/xorg'\n-\n SUBDIRS = src include man test\n MAINTAINERCLEANFILES = ChangeLog INSTALL\n \ndiff --git a/configure.ac b/configure.ac\nindex 9894817..fe198cb 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -63,14 +63,6 @@ AC_ARG_WITH(xorg-conf-dir,\n             [xorgconfdir='${prefix}/share/X11/xorg.conf.d'])\n AC_SUBST(xorgconfdir)\n \n-# X Server SDK location is required to install header files\n-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`\n-\n-# Workaround overriding sdkdir to be able to create a tarball when user has no\n-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am\n-AC_ARG_WITH([sdkdir], [], [sdkdir=\"$withval\"])\n-AC_SUBST([sdkdir])\n-\n DRIVER_NAME=libinput\n AC_SUBST([DRIVER_NAME])\n \ndiff --git a/include/Makefile.am b/include/Makefile.am\nindex 0d52b9b..271ffac 100644\n--- a/include/Makefile.am\n+++ b/include/Makefile.am\n@@ -1 +1,3 @@\n-sdk_HEADERS = libinput-properties.h\n+# Location formerly known as 'sdkdir'\n+xorgincludedir = $(includedir)/xorg\n+xorginclude_HEADERS = libinput-properties.h\ndiff --git a/xorg-libinput.pc.in b/xorg-libinput.pc.in\nindex ff98189..9c0f506 100644\n--- a/xorg-libinput.pc.in\n+++ b/xorg-libinput.pc.in\n@@ -1,6 +1,7 @@\n-sdkdir=@sdkdir@\n+prefix=@prefix@\n+includedir=@includedir@\n \n Name: xorg-libinput\n Description: X.Org libinput input driver.\n Version: @PACKAGE_VERSION@\n-Cflags: -I${sdkdir}\n+Cflags: -I${includedir}/xorg\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-libinput/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_INPUT_LIBINPUT\n\tbool \"xf86-input-libinput\"\n\tdepends on BR2_PACKAGE_HAS_UDEV # libinput\n\tselect BR2_PACKAGE_LIBINPUT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  This is an X driver based on libinput. It is a thin wrapper\n\t  around libinput, so while it does provide all features that\n\t  libinput supports it does little beyond.\n\ncomment \"xf86-input-libinput needs udev /dev management\"\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-June/003094.html\nsha256  e11d2a41419124a6e9b148f1df181bf7819fc7398c8ee9a1b6390b0742c68d16  xf86-input-libinput-1.1.0.tar.bz2\nsha512  7def9a4834a9203d1672613b1a4b384a0eb3d664818865b375969bf9ca96c512b752859acc8916de9224f7e488f8d59953308e53b983dfa8031ca01fd707fa2b  xf86-input-libinput-1.1.0.tar.bz2\n\n# Locally computed\nsha256  4114220b281561e80f3422f0e7ae8d3e1fc85131ffc2e3b6265119e66f1adb27  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-input-libinput\n#\n################################################################################\n\nXDRIVER_XF86_INPUT_LIBINPUT_VERSION = 1.1.0\nXDRIVER_XF86_INPUT_LIBINPUT_SOURCE = xf86-input-libinput-$(XDRIVER_XF86_INPUT_LIBINPUT_VERSION).tar.bz2\nXDRIVER_XF86_INPUT_LIBINPUT_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_INPUT_LIBINPUT_LICENSE = MIT\nXDRIVER_XF86_INPUT_LIBINPUT_LICENSE_FILES = COPYING\nXDRIVER_XF86_INPUT_LIBINPUT_DEPENDENCIES = libinput xserver_xorg-server xorgproto\nXDRIVER_XF86_INPUT_LIBINPUT_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-mouse/0001-build-get-rid-of-sdkdir.patch",
    "content": "From aef3d9bca4d77db833f71d50b1c84b16c69d7deb Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sun, 23 Oct 2016 22:53:21 +0200\nSubject: [PATCH] build: get rid of sdkdir\n\nUse of sdkdir causes problems during cross-compilation, where the full\npath is then appended to the DESTDIR, leading to host paths being\nappended in the target:\n    https://bugs.busybox.net/show_bug.cgi?id=8696\n\nOther drivers (e.g. keyboard) got rid of sdkdir. Do the same.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n---\n Makefile.am         |  3 ---\n configure.ac        | 10 ----------\n include/Makefile.am |  4 +++-\n xorg-mouse.pc.in    |  3 +--\n 4 files changed, 4 insertions(+), 16 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 7142485..efe66cb 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -34,9 +34,6 @@ ChangeLog:\n \n dist-hook: ChangeLog INSTALL\n \n-# Provide an sdk location that is writable by this module\n-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir='$${includedir}/xorg'\n-\n if LINT\n # Check source code with tools like lint & sparse\n lint:\ndiff --git a/configure.ac b/configure.ac\nindex 15d9047..515681d 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -60,16 +60,6 @@ AC_ARG_WITH(xorg-module-dir,\n inputdir=${moduledir}/input\n AC_SUBST(inputdir)\n \n-# X Server SDK location is required to install xf86-mouse-properties.h\n-# This location is also relayed in the xorg-mouse.pc file\n-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`\n-\n-# Workaround overriding sdkdir to be able to create a tarball when user has no\n-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am\n-AC_ARG_WITH([sdkdir], [], [sdkdir=\"$withval\"])\n-AC_SUBST([sdkdir])\n-\n-\n # Work out which OS mouse driver we need to build\n case $host_os in\n   linux*)\ndiff --git a/include/Makefile.am b/include/Makefile.am\nindex 27ce0fb..2b85e4e 100644\n--- a/include/Makefile.am\n+++ b/include/Makefile.am\n@@ -1 +1,3 @@\n-sdk_HEADERS = xf86-mouse-properties.h\n+# Location formerly known as 'sdkdir'\n+xorgincludedir = $(includedir)/xorg\n+xorginclude_HEADERS = xf86-mouse-properties.h\ndiff --git a/xorg-mouse.pc.in b/xorg-mouse.pc.in\nindex 57df596..8355e61 100644\n--- a/xorg-mouse.pc.in\n+++ b/xorg-mouse.pc.in\n@@ -1,6 +1,7 @@ prefix=@prefix@\n-sdkdir=@sdkdir@\n+prefix=@prefix@\n+includedir=@includedir@\n \n Name: xorg-mouse\n Description: X.Org mouse input driver for non-evdev OS'es\n Version: @PACKAGE_VERSION@\n-Cflags: -I${sdkdir}\n+Cflags: -I${includedir}/xorg\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-mouse/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE\n\tbool \"xf86-input-mouse\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org driver for mouse input devices\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-June/002903.html\nmd5 a2104693bbcfe1413397f7905eecd3dc  xf86-input-mouse-1.9.3.tar.bz2\nsha1 b3982998808ba43117fc066c4ecc94ce67c5818e  xf86-input-mouse-1.9.3.tar.bz2\nsha256 93ecb350604d05be98b7d4e5db3b8155a44890069a7d8d6b800c0bea79c85cc5  xf86-input-mouse-1.9.3.tar.bz2\nsha512 d99f5b4b1ef1aa4cbf1a92549e412f54f121bc804e4d6643248ad7ea18081b38b958bd289dc8476ebc0f6ef5f7424c2f2a8abcfaa30cae5378829549af6b148f  xf86-input-mouse-1.9.3.tar.bz2\n# Locally computed\nsha256 472ff645ead9bf3ffb48d42c596376ffc595897e0c0993a071a7ada0da1f4f10  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-input-mouse\n#\n################################################################################\n\nXDRIVER_XF86_INPUT_MOUSE_VERSION = 1.9.3\nXDRIVER_XF86_INPUT_MOUSE_SOURCE = xf86-input-mouse-$(XDRIVER_XF86_INPUT_MOUSE_VERSION).tar.bz2\nXDRIVER_XF86_INPUT_MOUSE_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_INPUT_MOUSE_LICENSE = MIT\nXDRIVER_XF86_INPUT_MOUSE_LICENSE_FILES = COPYING\nXDRIVER_XF86_INPUT_MOUSE_DEPENDENCIES = xserver_xorg-server xorgproto\nXDRIVER_XF86_INPUT_MOUSE_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-synaptics/0001-build-get-rid-of-sdkdir.patch",
    "content": "From 231a35e99fee8aba23f18cce21dfb5fa8bef0c36 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sun, 23 Oct 2016 23:07:33 +0200\nSubject: [PATCH] build: get rid of sdkdir\n\nUse of sdkdir causes problems during cross-compilation, where the full\npath is then appended to the DESTDIR, leading to host paths being\nappended in the target:\n    https://bugs.busybox.net/show_bug.cgi?id=8696\n\nOther drivers (e.g. keyboard) got rid of sdkdir. Do the same.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n---\n Makefile.am          | 1 -\n configure.ac         | 9 ---------\n include/Makefile.am  | 4 +++-\n xorg-synaptics.pc.in | 5 +++--\n 4 files changed, 6 insertions(+), 13 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 678124c..c48c5c8 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -21,7 +21,6 @@\n # During distcheck, system locations (as provided by pkg-config) may\n # not be writable; provide instead relative locations.\n DISTCHECK_CONFIGURE_FLAGS = \\\n-\t--with-sdkdir='$${includedir}/xorg' \\\n \t--with-xorg-conf-dir='$${datadir}/X11/xorg.conf.d'\n \n SUBDIRS = include src man tools conf\ndiff --git a/configure.ac b/configure.ac\nindex 970dd5f..574353b 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -55,11 +55,6 @@ XORG_DRIVER_CHECK_EXT(RANDR, randrproto)\n # Obtain compiler/linker options for the Synaptics driver dependencies\n PKG_CHECK_MODULES(XORG, [inputproto >= 2.1.99.3] [xorg-server >= 1.12] xproto inputproto $REQUIRED_MODULES)\n \n-# X Server SDK location is required to install Synaptics header files\n-# This location is also relayed in the xorg-synaptics.pc file\n-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`\n-AC_SUBST([sdkdir])\n-\n # -----------------------------------------------------------------------------\n #\t\t\tConfiguration options\n # -----------------------------------------------------------------------------\n@@ -154,10 +149,6 @@ if test \"x$have_libxtst\" = \"xyes\" ; then\n fi\n # -----------------------------------------------------------------------------\n \n-# Workaround overriding sdkdir to be able to create a tarball when user has no\n-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am\n-AC_ARG_WITH([sdkdir], [], [sdkdir=\"$withval\"])\n-\n AC_CONFIG_FILES([Makefile\n                 src/Makefile\n                 man/Makefile\ndiff --git a/include/Makefile.am b/include/Makefile.am\nindex 8234020..565868b 100644\n--- a/include/Makefile.am\n+++ b/include/Makefile.am\n@@ -18,4 +18,6 @@\n #  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n \n-sdk_HEADERS = synaptics-properties.h\n+# Location formerly known as 'sdkdir'\n+xorgincludedir = $(includedir)/xorg\n+xorginclude_HEADERS = synaptics-properties.h\ndiff --git a/xorg-synaptics.pc.in b/xorg-synaptics.pc.in\nindex 159cfbf..68e0fbe 100644\n--- a/xorg-synaptics.pc.in\n+++ b/xorg-synaptics.pc.in\n@@ -1,6 +1,7 @@\n-sdkdir=@sdkdir@\n+prefix=@prefix@\n+includedir=@includedir@\n \n Name: synaptics\n Description: X.Org synaptics input driver.\n Version: @PACKAGE_VERSION@\n-Cflags: -I${sdkdir}\n+Cflags: -I${includedir}/xorg\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-synaptics/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_INPUT_SYNAPTICS\n\tbool \"xf86-input-synaptics\"\n\tselect BR2_PACKAGE_LIBEVDEV\n\tselect BR2_PACKAGE_MTDEV\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org driver for synaptics input devices\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-May/002899.html\nmd5 cfb79d3c975151f9bbf30b727c260cb9  xf86-input-synaptics-1.9.1.tar.bz2\nsha1 07eeef716820105cae959bbc3aa103e2fcfd0084  xf86-input-synaptics-1.9.1.tar.bz2\nsha256 7af83526eff1c76e8b9e1553b34245c203d029028d8044dd9dcf71eef1001576  xf86-input-synaptics-1.9.1.tar.bz2\nsha512 978eddd456aa7361047bc3d72e5127b24b13de29b0dddb6a0acc9f9da93931baa2b22fb5d1e6be164f629a11e5d97d753b835426435396b45b1af5eb8d546c3f  xf86-input-synaptics-1.9.1.tar.bz2\n# Locally computed\nsha256 e14dc9a27158cadaeea8bcc2c70069762f05adb29030a444336bfde268751dc7  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-input-synaptics\n#\n################################################################################\n\nXDRIVER_XF86_INPUT_SYNAPTICS_VERSION = 1.9.1\nXDRIVER_XF86_INPUT_SYNAPTICS_SOURCE = xf86-input-synaptics-$(XDRIVER_XF86_INPUT_SYNAPTICS_VERSION).tar.bz2\nXDRIVER_XF86_INPUT_SYNAPTICS_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_INPUT_SYNAPTICS_LICENSE = MIT\nXDRIVER_XF86_INPUT_SYNAPTICS_LICENSE_FILES = COPYING\nXDRIVER_XF86_INPUT_SYNAPTICS_DEPENDENCIES = libevdev xserver_xorg-server xorgproto mtdev\nXDRIVER_XF86_INPUT_SYNAPTICS_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-tslib/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_INPUT_TSLIB\n\tbool \"xf86-input-tslib\"\n\tselect BR2_PACKAGE_XORGPROTO\n\tselect BR2_PACKAGE_TSLIB\n\thelp\n\t  Touch screen library input driver\n\n\t  https://github.com/merge/xf86-input-tslib\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.hash",
    "content": "# https://github.com/merge/xf86-input-tslib/releases/download/1.1.1/xf86-input-tslib-1.1.1.tar.bz2.sha256\nsha256 8b6a9f2ad73598a3619e66e252bd54b1792c4deba0213101fa4d272b5e9217ec  xf86-input-tslib-1.1.1.tar.bz2\n\n# Locally computed\nsha256  edfc46c9b91499699fc54d39e986756a2dcce8a919c6066be177123441532856  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-input-tslib\n#\n################################################################################\n\nXDRIVER_XF86_INPUT_TSLIB_VERSION = 1.1.1\nXDRIVER_XF86_INPUT_TSLIB_SOURCE = xf86-input-tslib-$(XDRIVER_XF86_INPUT_TSLIB_VERSION).tar.bz2\nXDRIVER_XF86_INPUT_TSLIB_SITE = https://github.com/merge/xf86-input-tslib/releases/download/$(XDRIVER_XF86_INPUT_TSLIB_VERSION)\nXDRIVER_XF86_INPUT_TSLIB_LICENSE = MIT\nXDRIVER_XF86_INPUT_TSLIB_LICENSE_FILES = COPYING\nXDRIVER_XF86_INPUT_TSLIB_DEPENDENCIES = \\\n\txserver_xorg-server \\\n\txorgproto \\\n\ttslib\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-vmmouse/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_INPUT_VMMOUSE\n\tbool \"xf86-input-vmmouse\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  VMWare mouse input driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-June/002616.html\nsha256  0af558957ac1be1b2863712c2475de8f4d7f14921fd01ded2e2fde4921b19319  xf86-input-vmmouse-13.1.0.tar.bz2\n# Locally calculated\nsha256  804737a1582428fdde4e2bfd1e9f3ca07971fc3bdce20ba2d06cc2bba6c84a9e  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-input-vmmouse\n#\n################################################################################\n\nXDRIVER_XF86_INPUT_VMMOUSE_VERSION = 13.1.0\nXDRIVER_XF86_INPUT_VMMOUSE_SOURCE = xf86-input-vmmouse-$(XDRIVER_XF86_INPUT_VMMOUSE_VERSION).tar.bz2\nXDRIVER_XF86_INPUT_VMMOUSE_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_INPUT_VMMOUSE_LICENSE = MIT\nXDRIVER_XF86_INPUT_VMMOUSE_LICENSE_FILES = COPYING\nXDRIVER_XF86_INPUT_VMMOUSE_DEPENDENCIES = xserver_xorg-server xorgproto\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nXDRIVER_XF86_INPUT_VMMOUSE_CONF_OPTS += --with-libudev\nXDRIVER_XF86_INPUT_VMMOUSE_DEPENDENCIES += udev\nelse\nXDRIVER_XF86_INPUT_VMMOUSE_CONF_OPTS += --without-libudev\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-amdgpu/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_AMDGPU\n\tbool \"xf86-video-amdgpu\"\n\tdepends on BR2_USE_MMU # libdrm\n\tdepends on BR2_PACKAGE_MESA3D_DRI_DRIVER\n\tdepends on BR2_PACKAGE_MESA3D_OPENGL_EGL # gbm\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_LIBDRM_AMDGPU\n\tselect BR2_PACKAGE_LIBEPOXY\n\tselect BR2_PACKAGE_XLIB_LIBXCOMPOSITE\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  AMD GPU video driver\n\ncomment \"xf86-video-amdgpu needs egl/opengl support from mesa3d\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_PACKAGE_MESA3D_OPENGL_EGL || \\\n\t\t!BR2_PACKAGE_MESA3D_DRI_DRIVER\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-October/003026.html\nmd5 55ad19b858e186a2cf4e91ed832c05e7  xf86-video-amdgpu-19.1.0.tar.bz2\nsha1 044a97ea2f36dd3d2d4844bb503dd4e2b2854d56  xf86-video-amdgpu-19.1.0.tar.bz2\nsha256 4f0ea4e0ae61995ac2b7c72433d31deab63b60c78763020aaa1b28696124fe5d  xf86-video-amdgpu-19.1.0.tar.bz2\nsha512 ccdaa2378492da1a2f3d18fedacd1318c4708da534a8a959276a82730d5420619d83ad1ec8d7835c55655fe56123cd9bffb44e6223c5a97033c01f598af4a173  xf86-video-amdgpu-19.1.0.tar.bz2\n# Locally computed\nsha256 58847c8e97190c401afa84b3f0b8b147379c876a184e99af2cb51bfd40ac8936  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-amdgpu\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_AMDGPU_VERSION = 19.1.0\nXDRIVER_XF86_VIDEO_AMDGPU_SOURCE = xf86-video-amdgpu-$(XDRIVER_XF86_VIDEO_AMDGPU_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_AMDGPU_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_AMDGPU_LICENSE = MIT\nXDRIVER_XF86_VIDEO_AMDGPU_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_AMDGPU_DEPENDENCIES = \\\n\tlibdrm \\\n\txlib_libXcomposite \\\n\txorgproto \\\n\txserver_xorg-server\n\n# xdriver_xf86-video-amdgpu requires O_CLOEXEC\nXDRIVER_XF86_VIDEO_AMDGPU_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -D_GNU_SOURCE\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-ark/0001-mibstore.patch",
    "content": "From 3a3eb72baec46f48e6cf15a834271c3d3386deac Mon Sep 17 00:00:00 2001\nFrom: Gaetan Nadon <memsize@videotron.ca>\nDate: Tue, 17 Sep 2013 19:55:37 +0000\nSubject: Remove usage of mibstore.h (removed from server)\n\nThe module had a compile error for this missing header file.\n\nChanges similar to vmware commit\n23d87c92b7211cc5249eefe4ab3a2c7f370e279e\n\nReviewed-by: Alex Deucher <alexander.deucher@amd.com>\nSigned-off-by: Gaetan Nadon <memsize@videotron.ca>\n---\nFetch from:\nhttp://cgit.freedesktop.org/xorg/driver/xf86-video-ark/commit/?id=3a3eb72baec46f48e6cf15a834271c3d3386deac\n\nSigned-off-by: Bernd Kuhls <berndkuhls@hotmail.com>\n\ndiff --git a/src/ark_driver.c b/src/ark_driver.c\nindex b7c287c..65cfe84 100644\n--- a/src/ark_driver.c\n+++ b/src/ark_driver.c\n@@ -39,7 +39,6 @@\n #include \"compiler.h\"\n #include \"mipointer.h\"\n #include \"micmap.h\"\n-#include \"mibstore.h\"\n #include \"fb.h\"\n #include \"ark.h\"\n \n@@ -538,7 +537,6 @@ static Bool ARKScreenInit(SCREEN_INIT_ARGS_DECL)\n \n \tfbPictureInit (pScreen, 0, 0);\n \n-\tmiInitializeBackingStore(pScreen);\n \txf86SetBackingStore(pScreen);\n \n \tif (!pARK->NoAccel) {\n--\ncgit v0.9.0.2-2-gbebe\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-ark/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_ARK\n\tbool \"xf86-video-ark\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org driver for ark cards\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2012-July/002007.html\nsha256  c690e046f34a393aac1c8d9616b4790e93cda60a460b00b9597d322175dbe51e  xf86-video-ark-0.7.5.tar.bz2\n# Locally calculated\nsha256  8ba9850fb0ecd9033bb1d25c1be85625cb53ca56ce76b71f78f4a034f7310bda  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-ark\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_ARK_VERSION = 0.7.5\nXDRIVER_XF86_VIDEO_ARK_SOURCE = xf86-video-ark-$(XDRIVER_XF86_VIDEO_ARK_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_ARK_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_ARK_LICENSE = MIT\nXDRIVER_XF86_VIDEO_ARK_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_ARK_DEPENDENCIES = xserver_xorg-server xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-ast/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_AST\n\tbool \"xf86-video-ast\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.hash",
    "content": "# Locally computed\nsha256  1edbbc55d47d3fd71dec99b15c2483e22738c642623a0fb86ef4a81a9067a2de  xf86-video-ast-1.1.5.tar.bz2\n# Locally calculated\nsha256  1cdd3d57e2fdcbd21b8a7b788ffbe6f809216a9bdd36b2225cff6c4b4404a170  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-ast\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_AST_VERSION = 1.1.5\nXDRIVER_XF86_VIDEO_AST_SOURCE = xf86-video-ast-$(XDRIVER_XF86_VIDEO_AST_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_AST_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_AST_LICENSE = MIT\nXDRIVER_XF86_VIDEO_AST_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_AST_DEPENDENCIES = xorgproto xserver_xorg-server\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-ati/0001-Fix-link-failure-with-gcc-10.patch",
    "content": "From f223035f4ffcff2a9296d1e907a5193f8e8845a3 Mon Sep 17 00:00:00 2001\nFrom: Adam Jackson <ajax@redhat.com>\nDate: Tue, 4 Feb 2020 16:38:06 -0500\nSubject: [PATCH xf86-video-ati] Fix link failure with gcc 10\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nWithout the 'extern' this looks like a definition not just a\ndeclaration, in every file that includes the header. gcc 10 is stricter\nabout this kind of multiple definition.\n\nReviewed-by: Michel Dänzer <mdaenzer@redhat.com>\n[backport from upstream: f223035f4ffcff2a9296d1e907a5193f8e8845a3]\nSigned-off-by: Romain Naour <romain.naour@gmail.com>\n---\n src/drmmode_display.h | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/drmmode_display.h b/src/drmmode_display.h\nindex 96eaef0a..8cd8a0a6 100644\n--- a/src/drmmode_display.h\n+++ b/src/drmmode_display.h\n@@ -262,7 +262,7 @@ Bool drmmode_wait_vblank(xf86CrtcPtr crtc, drmVBlankSeqType type,\n \t\t\t uint64_t *ust, uint32_t *result_seq);\n \n \n-miPointerSpriteFuncRec drmmode_sprite_funcs;\n+extern miPointerSpriteFuncRec drmmode_sprite_funcs;\n \n \n #endif\n-- \n2.25.4\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-ati/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_ATI\n\tbool \"xf86-video-ati\"\n\tdepends on BR2_i386 || BR2_x86_64 # DRI radeon r100 driver\n\tdepends on BR2_PACKAGE_MESA3D\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_LIBDRM_RADEON\n\tselect BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON\n\tselect BR2_PACKAGE_XLIB_LIBXCOMPOSITE\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  ATI video driver\n\ncomment \"xf86-video-ati needs mesa3d\"\n\tdepends on BR2_i386 || BR2_x86_64\n\tdepends on !BR2_PACKAGE_MESA3D\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-October/003027.html\nmd5 6e49d3c2839582af415ceded76e626e6  xf86-video-ati-19.1.0.tar.bz2\nsha1 aea1d11c05531b03f2eb67c6785cddf6d7f30e5f  xf86-video-ati-19.1.0.tar.bz2\nsha256 659f5a1629eea5f5334d9b39b18e6807a63aa1efa33c1236d9cc53acbb223c49  xf86-video-ati-19.1.0.tar.bz2\nsha512 73a81f6c492daf2e89067fb52b3033dc0fe6841f109627ddca1aee54a45a738c8c134443753a2a2aaa2c131e1d560057ebc76351ff2304c16407df3ff568fcd6  xf86-video-ati-19.1.0.tar.bz2\n# Locally computed\nsha256 58847c8e97190c401afa84b3f0b8b147379c876a184e99af2cb51bfd40ac8936  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-ati\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_ATI_VERSION = 19.1.0\nXDRIVER_XF86_VIDEO_ATI_SOURCE = xf86-video-ati-$(XDRIVER_XF86_VIDEO_ATI_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_ATI_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_ATI_LICENSE = MIT\nXDRIVER_XF86_VIDEO_ATI_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_ATI_DEPENDENCIES = \\\n\tlibdrm \\\n\txlib_libXcomposite \\\n\txorgproto \\\n\txserver_xorg-server\n\nifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_LIBEPOXY),yyy)\nXDRIVER_XF86_VIDEO_ATI_CONF_OPTS = --enable-glamor\nelse\nXDRIVER_XF86_VIDEO_ATI_CONF_OPTS = --disable-glamor\nendif\n\n# xdriver_xf86-video-ati requires O_CLOEXEC\nXDRIVER_XF86_VIDEO_ATI_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -D_GNU_SOURCE\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-cirrus/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_CIRRUS\n\tbool \"xf86-video-cirrus\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Cirrus Logic video driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-May/002600.html\nsha256  edc87b20a55259126b5239b5c1ef913419eab7ded0ed12ae9ae989460d7351ab  xf86-video-cirrus-1.5.3.tar.bz2\n# Locally calculated\nsha256  a113cf02dcfa523593727790a17172080ac87d8de16e766bda4cbbe73dd8dc62  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-cirrus\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_CIRRUS_VERSION = 1.5.3\nXDRIVER_XF86_VIDEO_CIRRUS_SOURCE = xf86-video-cirrus-$(XDRIVER_XF86_VIDEO_CIRRUS_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_CIRRUS_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_CIRRUS_LICENSE = MIT\nXDRIVER_XF86_VIDEO_CIRRUS_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_CIRRUS_DEPENDENCIES = xserver_xorg-server xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-dummy/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_DUMMY\n\tbool \"xf86-video-dummy\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org driver for dummy cards\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2016-December/002751.html\nsha256 3712bb869307233491e4c570732d6073c0dc3d99adfdb9977396a3fdf84e95b9  xf86-video-dummy-0.3.8.tar.bz2\n# Locally calculated\nsha256 e29aa81e74563d14e5633963107c030e74e8352ea7dafee1a9d7e19b7d0e887b  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-dummy\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_DUMMY_VERSION = 0.3.8\nXDRIVER_XF86_VIDEO_DUMMY_SOURCE = xf86-video-dummy-$(XDRIVER_XF86_VIDEO_DUMMY_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_DUMMY_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_DUMMY_LICENSE = MIT\nXDRIVER_XF86_VIDEO_DUMMY_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_DUMMY_DEPENDENCIES = xserver_xorg-server xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-fbdev/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV\n\tbool \"xf86-video-fbdev\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  video driver for framebuffer device\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2013-September/002324.html\nsha256\tdcc3d85f378022180e437a9ec00a59b6cb7680ff79c40394d695060af2374699\txf86-video-fbdev-0.5.0.tar.bz2\n# Locally calculated\nsha256  e437aed89c3440a9fe7e19968a3f2eeb97041ef6c9616837a3fd42d0874fc0e6  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-fbdev\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_FBDEV_VERSION = 0.5.0\nXDRIVER_XF86_VIDEO_FBDEV_SOURCE = xf86-video-fbdev-$(XDRIVER_XF86_VIDEO_FBDEV_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_FBDEV_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_FBDEV_LICENSE = MIT\nXDRIVER_XF86_VIDEO_FBDEV_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_FBDEV_DEPENDENCIES = xserver_xorg-server xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-fbturbo/0001-sunxi_x_g2d-drop-unused-dri2-include.patch",
    "content": "From 232c5b6924652f65ef5c047754e84b87b5fc6ac8 Mon Sep 17 00:00:00 2001\nFrom: Peter Korsgaard <peter@korsgaard.com>\nDate: Sat, 3 Oct 2015 19:01:38 +0200\nSubject: [PATCH] sunxi_x_g2d: drop unused dri2 include\n\nThe driver doesn't use DRI for anything.\n\n[Upstream-status: submitted (https://github.com/ssvb/xf86-video-fbturbo/pull/45)]\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n src/sunxi_x_g2d.c | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/src/sunxi_x_g2d.c b/src/sunxi_x_g2d.c\nindex d826027..8888abe 100644\n--- a/src/sunxi_x_g2d.c\n+++ b/src/sunxi_x_g2d.c\n@@ -31,7 +31,6 @@\n #include \"xf86_OSproc.h\"\n #include \"xf86.h\"\n #include \"xf86drm.h\"\n-#include \"dri2.h\"\n #include \"damage.h\"\n #include \"fb.h\"\n #include \"gcstruct.h\"\n-- \n2.1.4\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-fbturbo/0002-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch",
    "content": "From 2186a4e5ed6b8b8f24ebd4d2045df10d1f895999 Mon Sep 17 00:00:00 2001\nFrom: Adam Jackson <ajax@redhat.com>\nDate: Wed, 21 May 2014 09:49:56 -0400\nSubject: [PATCH] Use own thunk functions instead of fbdevHW*Weak\n\nI plan to remove the Weak functions from a future server.\n\nSigned-off-by: Adam Jackson <ajax@redhat.com>\n[Upstream https://gitlab.freedesktop.org/xorg/driver/xf86-video-fbdev/-/commit/2673e727063fe28310836f1e6e9eda552930218a\n ported to xf86-video-fbturbo]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/fbdev.c | 86 +++++++++++++++++++++++++++++++++++++++++++----------\n 1 file changed, 71 insertions(+), 15 deletions(-)\n\ndiff --git a/src/fbdev.c b/src/fbdev.c\nindex 90d9f39..81bd1fb 100644\n--- a/src/fbdev.c\n+++ b/src/fbdev.c\n@@ -269,6 +269,35 @@ FBDevIdentify(int flags)\n \txf86PrintChipsets(FBDEV_NAME, \"driver for framebuffer\", FBDevChipsets);\n }\n \n+static Bool\n+fbdevSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode)\n+{\n+    return fbdevHWSwitchMode(pScrn, mode);\n+}\n+\n+static void\n+fbdevAdjustFrame(ScrnInfoPtr pScrn, int x, int y)\n+{\n+    fbdevHWAdjustFrame(pScrn, x, y);\n+}\n+\n+static Bool\n+fbdevEnterVT(ScrnInfoPtr pScrn)\n+{\n+    return fbdevHWEnterVT(pScrn);\n+}\n+\n+static void\n+fbdevLeaveVT(ScrnInfoPtr pScrn)\n+{\n+    fbdevHWLeaveVT(pScrn);\n+}\n+\n+static ModeStatus\n+fbdevValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool verbose, int flags)\n+{\n+    return fbdevHWValidMode(pScrn, mode, verbose, flags);\n+}\n \n #ifdef XSERVER_LIBPCIACCESS\n static Bool FBDevPciProbe(DriverPtr drv, int entity_num,\n@@ -294,11 +323,11 @@ static Bool FBDevPciProbe(DriverPtr drv, int entity_num,\n \t    pScrn->Probe         = FBDevProbe;\n \t    pScrn->PreInit       = FBDevPreInit;\n \t    pScrn->ScreenInit    = FBDevScreenInit;\n-\t    pScrn->SwitchMode    = fbdevHWSwitchModeWeak();\n-\t    pScrn->AdjustFrame   = fbdevHWAdjustFrameWeak();\n-\t    pScrn->EnterVT       = fbdevHWEnterVTWeak();\n-\t    pScrn->LeaveVT       = fbdevHWLeaveVTWeak();\n-\t    pScrn->ValidMode     = fbdevHWValidModeWeak();\n+\t    pScrn->SwitchMode    = fbdevSwitchMode;\n+\t    pScrn->AdjustFrame   = fbdevAdjustFrame;\n+\t    pScrn->EnterVT       = fbdevEnterVT;\n+\t    pScrn->LeaveVT       = fbdevLeaveVT;\n+\t    pScrn->ValidMode     = fbdevValidMode;\n \n \t    xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,\n \t\t       \"claimed PCI slot %d@%d:%d:%d\\n\", \n@@ -411,11 +440,11 @@ FBDevProbe(DriverPtr drv, int flags)\n \t\t    pScrn->Probe         = FBDevProbe;\n \t\t    pScrn->PreInit       = FBDevPreInit;\n \t\t    pScrn->ScreenInit    = FBDevScreenInit;\n-\t\t    pScrn->SwitchMode    = fbdevHWSwitchModeWeak();\n-\t\t    pScrn->AdjustFrame   = fbdevHWAdjustFrameWeak();\n-\t\t    pScrn->EnterVT       = fbdevHWEnterVTWeak();\n-\t\t    pScrn->LeaveVT       = fbdevHWLeaveVTWeak();\n-\t\t    pScrn->ValidMode     = fbdevHWValidModeWeak();\n+\t\t    pScrn->SwitchMode    = fbdevSwitchMode;\n+\t\t    pScrn->AdjustFrame   = fbdevAdjustFrame;\n+\t\t    pScrn->EnterVT       = fbdevEnterVT;\n+\t\t    pScrn->LeaveVT       = fbdevLeaveVT;\n+\t\t    pScrn->ValidMode     = fbdevValidMode;\n \t\t    \n \t\t    xf86DrvMsg(pScrn->scrnIndex, X_INFO,\n \t\t\t       \"using %s\\n\", dev ? dev : \"default device\");\n@@ -656,6 +685,17 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)\n \treturn TRUE;\n }\n \n+static void\n+fbdevUpdateRotatePacked(ScreenPtr pScreen, shadowBufPtr pBuf)\n+{\n+    shadowUpdateRotatePacked(pScreen, pBuf);\n+}\n+\n+static void\n+fbdevUpdatePacked(ScreenPtr pScreen, shadowBufPtr pBuf)\n+{\n+    shadowUpdatePacked(pScreen, pBuf);\n+}\n \n static Bool\n FBDevCreateScreenResources(ScreenPtr pScreen)\n@@ -675,7 +715,7 @@ FBDevCreateScreenResources(ScreenPtr pScreen)\n     pPixmap = pScreen->GetScreenPixmap(pScreen);\n \n     if (!shadowAdd(pScreen, pPixmap, fPtr->rotate ?\n-\t\t   shadowUpdateRotatePackedWeak() : shadowUpdatePackedWeak(),\n+\t\t   fbdevUpdateRotatePacked : fbdevUpdatePacked,\n \t\t   FBDevWindowLinear, fPtr->rotate, NULL)) {\n \treturn FALSE;\n     }\n@@ -699,6 +739,23 @@ FBDevShadowInit(ScreenPtr pScreen)\n     return TRUE;\n }\n \n+static void\n+fbdevLoadPalette(ScrnInfoPtr pScrn, int num, int *i, LOCO *col, VisualPtr pVis)\n+{\n+    fbdevHWLoadPalette(pScrn, num, i, col, pVis);\n+}\n+\n+static void\n+fbdevDPMSSet(ScrnInfoPtr pScrn, int mode, int flags)\n+{\n+    fbdevHWDPMSSet(pScrn, mode, flags);\n+}\n+\n+static Bool\n+fbdevSaveScreen(ScreenPtr pScreen, int mode)\n+{\n+    return fbdevHWSaveScreen(pScreen, mode);\n+}\n \n static Bool\n FBDevScreenInit(SCREEN_INIT_ARGS_DECL)\n@@ -1025,13 +1082,12 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL)\n \t\treturn FALSE;\n \t}\n \tflags = CMAP_PALETTED_TRUECOLOR;\n-\tif(!xf86HandleColormaps(pScreen, 256, 8, fbdevHWLoadPaletteWeak(), \n-\t\t\t\tNULL, flags))\n+\tif(!xf86HandleColormaps(pScreen, 256, 8, fbdevLoadPalette, NULL, flags))\n \t\treturn FALSE;\n \n-\txf86DPMSInit(pScreen, fbdevHWDPMSSetWeak(), 0);\n+\txf86DPMSInit(pScreen, fbdevDPMSSet, 0);\n \n-\tpScreen->SaveScreen = fbdevHWSaveScreenWeak();\n+\tpScreen->SaveScreen = fbdevSaveScreen;\n \n \t/* Wrap the current CloseScreen function */\n \tfPtr->CloseScreen = pScreen->CloseScreen;\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-fbturbo/0003-Update-for-1.20-ABI.patch",
    "content": "From 5112829fe3f9f4776276800a175bf460061f83b1 Mon Sep 17 00:00:00 2001\nFrom: Adam Jackson <ajax@redhat.com>\nDate: Wed, 30 May 2018 12:31:04 -0400\nSubject: [PATCH] Update for 1.20 ABI\n\nSigned-off-by: Adam Jackson <ajax@redhat.com>\n[Upstream https://gitlab.freedesktop.org/xorg/driver/xf86-video-fbdev/-/commit/67525c485f3b32ce0c9bff250d905852f75dfc1c\n ported to xf86-video-fbturbo]\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n src/fbdev.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/src/fbdev.c b/src/fbdev.c\nindex 81bd1fb..489a231 100644\n--- a/src/fbdev.c\n+++ b/src/fbdev.c\n@@ -1036,7 +1036,9 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL)\n \t  xf86DrvMsg(pScrn->scrnIndex, X_INFO, \"display rotated; disabling DGA\\n\");\n \t  xf86DrvMsg(pScrn->scrnIndex, X_INFO, \"using driver rotation; disabling \"\n \t\t\t                \"XRandR\\n\");\n+#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 24\n \t  xf86DisableRandR();\n+#endif\n \t  if (pScrn->bitsPerPixel == 24)\n \t    xf86DrvMsg(pScrn->scrnIndex, X_WARNING, \"rotation might be broken at 24 \"\n                                              \"bits per pixel\\n\");\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-fbturbo/0004-xorg.conf-add-mandatory-modules-fb-shadow-fbdevhw.patch",
    "content": "From 04d1f756ac1204b8d5be1757499ac3a239bd93e1 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Wed, 2 Jun 2021 21:42:56 +0200\nSubject: [PATCH] xorg.conf: add mandatory modules (fb, shadow, fbdevhw)\n\nXorg does not implement real dynamic linking and requires that its\nmodules get loaded so add mandatory modules:\n\n- fbdevhw, fixes:\n  [   303.906] (II) LoadModule: \"fbturbo\"\n  [   303.906] (II) Loading /usr/lib/xorg/modules/drivers/fbturbo_drv.so\n  [   303.907] (EE) Failed to load /usr/lib/xorg/modules/drivers/fbturbo_drv.so: /usr/lib/xorg/modules/drivers/fbturbo_drv.so: undefined symbol: fbdevHWSave\n  [   303.907] (EE) Failed to load module \"fbturbo\" (loader failed, 0)\n  [   303.907] (EE) No drivers available.\n\n- shadow, fixes:\n  [   426.403] (II) LoadModule: \"fbturbo\"\n  [   426.404] (II) Loading /usr/lib/xorg/modules/drivers/fbturbo_drv.so\n  [   426.404] (EE) Failed to load /usr/lib/xorg/modules/drivers/fbturbo_drv.so: /usr/lib/xorg/modules/drivers/fbturbo_drv.so: undefined symbol: shadowRemove\n  [   426.404] (EE) Failed to load module \"fbturbo\" (loader failed, 0)\n  [   426.404] (EE) No drivers available.\n\n- fb, fixes:\n  [   471.912] (II) LoadModule: \"shadow\"\n  [   471.913] (II) Loading /usr/lib/xorg/modules/libshadow.so\n  [   471.913] (EE) Failed to load /usr/lib/xorg/modules/libshadow.so: /usr/lib/xorg/modules/libshadow.so: undefined symbol: fbGetScreenPrivateKey\n  [   471.913] (EE) Failed to load module \"shadow\" (loader failed, 0)\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n xorg.conf | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/xorg.conf b/xorg.conf\nindex 6217d11..fda62e3 100644\n--- a/xorg.conf\n+++ b/xorg.conf\n@@ -8,6 +8,12 @@\n # Run \"man fbturbo\" to get additional information about the extra\n # configuration options for tuning the driver.\n \n+Section \"Module\"\n+   Load \"fb\"\n+   Load \"shadow\"\n+   Load \"fbdevhw\"\n+EndSection\n+\n Section \"Device\"\n         Identifier      \"Allwinner A10/A13 FBDEV\"\n         Driver          \"fbturbo\"\n-- \n2.31.1\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-fbturbo/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBTURBO\n\tbool \"xf86-video-fbturbo\"\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_PIXMAN\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  video driver, primarily optimized for the devices powered\n\t  by the Allwinner SoC (A10, A13, A20). It can use some of\n\t  the 2D/3D hardware acceleration features.\n\n\t  https://github.com/ssvb/xf86-video-fbturbo\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.hash",
    "content": "# locally computed\nsha256  10411686de0a9d8b2cde300b0d68e9f1d22e3611470d357ef3afc337f123ca0f  xdriver_xf86-video-fbturbo-0.4.0.tar.gz\nsha256  8333e3fa5b0f8d8aceca2f060d4eceeb6033cefed2301b03c3e92f6e3ebbffce  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-fbturbo\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_FBTURBO_VERSION = 0.4.0\nXDRIVER_XF86_VIDEO_FBTURBO_SITE = $(call github,ssvb,xf86-video-fbturbo,$(XDRIVER_XF86_VIDEO_FBTURBO_VERSION))\nXDRIVER_XF86_VIDEO_FBTURBO_LICENSE = MIT\nXDRIVER_XF86_VIDEO_FBTURBO_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_FBTURBO_DEPENDENCIES = \\\n\txserver_xorg-server \\\n\tlibdrm \\\n\tpixman \\\n\txorgproto\n\nifeq ($(BR2_PACKAGE_LIBPCIACCESS),y)\nXDRIVER_XF86_VIDEO_FBTURBO_DEPENDENCIES += libpciaccess\nXDRIVER_XF86_VIDEO_FBTURBO_CONF_OPTS += --enable-pciaccess\nelse\nXDRIVER_XF86_VIDEO_FBTURBO_CONF_OPTS += --disable-pciaccess\nendif\n\ndefine XDRIVER_XF86_VIDEO_FBTURBO_INSTALL_CONF_FILE\n\t$(INSTALL) -m 0644 -D $(@D)/xorg.conf $(TARGET_DIR)/etc/X11/xorg.conf\nendef\n\nXDRIVER_XF86_VIDEO_FBTURBO_POST_INSTALL_TARGET_HOOKS += XDRIVER_XF86_VIDEO_FBTURBO_INSTALL_CONF_FILE\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-geode/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_GEODE\n\tbool \"xf86-video-geode\"\n\tdepends on BR2_i386\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  video driver for geode device\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.hash",
    "content": "# Locally calculated\nsha256  f497d0bfb09f36c72e3467e2d701f57f6b03ab8992c5d570e66582f714f84d64  xf86-video-geode-2.11.20.tar.bz2\nsha256  3994ef7cee54f0935a4b57b1c34efd904da567931dd9e1a2d9390d22c8332ea2  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-geode\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_GEODE_VERSION = 2.11.20\nXDRIVER_XF86_VIDEO_GEODE_SOURCE = xf86-video-geode-$(XDRIVER_XF86_VIDEO_GEODE_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_GEODE_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_GEODE_LICENSE = MIT\nXDRIVER_XF86_VIDEO_GEODE_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_GEODE_DEPENDENCIES = xserver_xorg-server xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-glint/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_GLINT\n\tbool \"xf86-video-glint\"\n\tdepends on BR2_PACKAGE_MESA3D\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  GLINT/Permedia video driver\n\ncomment \"xf86-video-glint needs mesa3d\"\n\tdepends on !BR2_PACKAGE_MESA3D\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2017-January/002759.html\nsha256  852833ab2ea9ce519195dfd061a6c7aa5945a093cdc19546d1e9e69df7d577d2  xf86-video-glint-1.2.9.tar.bz2\n# Locally calculated\nsha256  6ca8e1a7e1d491f3618d3f14df1be64dbc8adefae7bbaf11d4920240dfb12f6e  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-glint\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_GLINT_VERSION = 1.2.9\nXDRIVER_XF86_VIDEO_GLINT_SOURCE = xf86-video-glint-$(XDRIVER_XF86_VIDEO_GLINT_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_GLINT_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_GLINT_LICENSE = MIT\nXDRIVER_XF86_VIDEO_GLINT_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_GLINT_DEPENDENCIES = xserver_xorg-server libdrm xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-i128/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_I128\n\tbool \"xf86-video-i128\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Number 9 I128 video driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-December/002932.html\nmd5  a980f1b8532ccfe81932580bc4e0f2a0  xf86-video-i128-1.4.0.tar.bz2\nsha1 56d5b897b2695222c13e59d2ade74620a99e1011  xf86-video-i128-1.4.0.tar.bz2\nsha256 8f2c0a6bf5a169dad3fc07c6dd4537b492d0e44489e4a1297311e617c3bed0ea  xf86-video-i128-1.4.0.tar.bz2\nsha512 d58baee3f20b3ad2ece6853da0ff20a6d54b984c6e3289bad2715cc003b277a0b44d20ded25cfc116400468df552390bdb5d80fbd3fb60861488ee5d027664b2  xf86-video-i128-1.4.0.tar.bz2\n# Locally computed\nsha256 7677424d79633dbf255a81bd4e05dd621931b89997af33c31522269ec2ed391e  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-i128\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_I128_VERSION = 1.4.0\nXDRIVER_XF86_VIDEO_I128_SOURCE = xf86-video-i128-$(XDRIVER_XF86_VIDEO_I128_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_I128_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_I128_LICENSE = MIT\nXDRIVER_XF86_VIDEO_I128_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_I128_DEPENDENCIES = xserver_xorg-server xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-imx/0001-Update-to-newer-swap-macros.patch",
    "content": "From fc7f191a1a0f290a4e808dd8f9bd58ba1dbd2be4 Mon Sep 17 00:00:00 2001\nFrom: Otavio Salvador <otavio@ossystems.com.br>\nDate: Sat, 29 Dec 2012 18:00:36 -0200\nSubject: [PATCH 1/2] ext: Update to newer swap macros\n\nThe swap macros now use an internal temporary variable so we need to\nadapt the code according.\n\nUpstream-Status: Pending\n\nSigned-off-by: Otavio Salvador <otavio@ossystems.com.br>\n---\n src/imx_ext.c |   16 ++++++----------\n 1 file changed, 6 insertions(+), 10 deletions(-)\n\ndiff --git a/src/imx_ext.c b/src/imx_ext.c\nindex f12469a..710cba4 100644\n--- a/src/imx_ext.c\n+++ b/src/imx_ext.c\n@@ -57,8 +57,6 @@ void imxExtInit()\n static int\n Proc_IMX_EXT_GetPixmapPhysAddr(ClientPtr client)\n {\n-\tint n;\n-\n \tREQUEST(xIMX_EXT_GetPixmapPhysAddrReq);\n \tREQUEST_SIZE_MATCH(xIMX_EXT_GetPixmapPhysAddrReq);\n \n@@ -96,10 +94,10 @@ Proc_IMX_EXT_GetPixmapPhysAddr(ClientPtr client)\n \t/* Check if any reply values need byte swapping */\n \tif (client->swapped) {\n \n-\t\tswaps(&rep.sequenceNumber, n);\n-\t\tswapl(&rep.length, n);\n-\t\tswapl(&rep.pixmapPhysAddr, n);\n-\t\tswapl(&rep.pixmapPitch, n);\n+\t\tswaps(&rep.sequenceNumber);\n+\t\tswapl(&rep.length);\n+\t\tswapl(&rep.pixmapPhysAddr);\n+\t\tswapl(&rep.pixmapPitch);\n \t}\n \n \t/* Reply to client */\n@@ -123,16 +121,14 @@ Proc_IMX_EXT_Dispatch(ClientPtr client)\n static int\n SProc_IMX_EXT_GetPixmapPhysAddr(ClientPtr client)\n {\n-\tint n;\n-\n \tREQUEST(xIMX_EXT_GetPixmapPhysAddrReq);\n \n \t/* Swap request message length and verify it is correct. */\n-\tswaps(&stuff->length, n);\n+\tswaps(&stuff->length);\n \tREQUEST_SIZE_MATCH(xIMX_EXT_GetPixmapPhysAddrReq);\n \n \t/* Swap remaining request message parameters. */\n-\tswapl(&stuff->pixmap, n);\n+\tswapl(&stuff->pixmap);\n \n \treturn Proc_IMX_EXT_GetPixmapPhysAddr(client);\n }\n-- \n1.7.10.4\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-imx/0002-Fix-error-unknown-type-name-uint.patch",
    "content": "From ccdfce5e75ba707deacdd5808a8f3de8744848d0 Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Eric=20B=C3=A9nard?= <eric@eukrea.com>\nDate: Tue, 5 Feb 2013 10:57:47 +0100\nSubject: [PATCH] Fix \"error: unknown type name 'uint'\"\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nIn file included from imx_driver.c:33:0:\n.../sysroots/imx53qsb/usr/src/kernel/include/linux/mxcfb.h:107:2: error: unknown type name 'uint'\n\nUpstream-Status: Pending\n\nSigned-off-by: Eric Bénard <eric@eukrea.com>\n---\n src/imx_driver.c |    1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/imx_driver.c b/src/imx_driver.c\nindex f4b3e38..4cf662d 100644\n--- a/src/imx_driver.c\n+++ b/src/imx_driver.c\n@@ -29,6 +29,7 @@\n #include <errno.h>\n #include <fcntl.h>\n #include <string.h>\n+#include <sys/types.h>\n #include <linux/fb.h>\n #include <linux/mxcfb.h>\n \n-- \n1.7.10.4\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-imx/0003-support-glibc-2.20.patch",
    "content": "Fix build errors seen with glibc 2.20\n\n/home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/imx53qsb/usr/include/xorg/os.h:579:1: error: expected identifier or '(' before '__extension__'\n strndup(const char *str, size_t n);\n ^\n\nSigned-off-by: Khem Raj <raj.khem@gmail.com>\nUpstream-Status: Pending\nIndex: xserver-xorg-video-imx-11.09.01/src/imx_accel.c\n===================================================================\n--- xserver-xorg-video-imx-11.09.01.orig/src/imx_accel.c\t2011-07-26 14:22:47.000000000 -0700\n+++ xserver-xorg-video-imx-11.09.01/src/imx_accel.c\t2014-08-29 15:54:43.648070587 -0700\n@@ -21,6 +21,7 @@\n  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE \n  * SOFTWARE.\n  */\n+#include <xorg-server.h>\n \n #include <stdint.h>\n #include \"xf86.h\"\nIndex: xserver-xorg-video-imx-11.09.01/src/imx_exa_offscreen.c\n===================================================================\n--- xserver-xorg-video-imx-11.09.01.orig/src/imx_exa_offscreen.c\t2014-08-29 15:26:31.992070587 -0700\n+++ xserver-xorg-video-imx-11.09.01/src/imx_exa_offscreen.c\t2014-08-29 15:54:54.632070587 -0700\n@@ -53,7 +53,7 @@\n  * When allocating, the contiguous block of areas with the minimum eviction\n  * cost is found and evicted in order to make room for the new allocation.\n  */\n-\n+#include <xorg-server.h>\n \n #include \"xf86.h\"\n #include \"exa.h\"\nIndex: xserver-xorg-video-imx-11.09.01/src/imx_exa_z160.c\n===================================================================\n--- xserver-xorg-video-imx-11.09.01.orig/src/imx_exa_z160.c\t2014-08-29 15:26:31.992070587 -0700\n+++ xserver-xorg-video-imx-11.09.01/src/imx_exa_z160.c\t2014-08-29 15:54:36.056070587 -0700\n@@ -21,6 +21,7 @@\n  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE \n  * SOFTWARE.\n  */\n+#include <xorg-server.h>\n \n #include \"xf86.h\"\n #include \"xf86_OSproc.h\"\nIndex: xserver-xorg-video-imx-11.09.01/src/imx_ext.c\n===================================================================\n--- xserver-xorg-video-imx-11.09.01.orig/src/imx_ext.c\t2014-08-29 15:26:32.064070587 -0700\n+++ xserver-xorg-video-imx-11.09.01/src/imx_ext.c\t2014-08-29 15:55:18.048070587 -0700\n@@ -21,6 +21,7 @@\n  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE \n  * SOFTWARE.\n  */\n+#include <xorg-server.h>\n \n #include <X11/X.h>\n #include <X11/Xproto.h>\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-imx/0004-Make-video-API-forward-and-backward-compatible.patch",
    "content": "From 5216cb0f14414b5451f58df48a36c1c62c035276 Mon Sep 17 00:00:00 2001\nFrom: Otavio Salvador <otavio@ossystems.com.br>\nDate: Sat, 29 Dec 2012 18:02:11 -0200\nSubject: [PATCH] Make video API forward and backward compatible\n\nThis updates the video API in a forward and backward compatible way\nusing the \"compat-api.h\" as used in Xorg maintained drivers.\n\nUpstream-Status: Pending\n\nSigned-off-by: Otavio Salvador <otavio@ossystems.com.br>\n---\n src/compat-api.h        |  106 +++++++++++++++++++++++++++++++++++++++++++++++\n src/imx_display.c       |   22 +++++-----\n src/imx_display.h       |    8 ++--\n src/imx_driver.c        |   60 ++++++++++++++-------------\n src/imx_exa_offscreen.c |   12 +++---\n src/imx_exa_z160.c      |   53 ++++++++++++------------\n src/imx_xv_ipu.c        |    4 +-\n 7 files changed, 188 insertions(+), 77 deletions(-)\n create mode 100644 src/compat-api.h\n\ndiff --git a/src/compat-api.h b/src/compat-api.h\nnew file mode 100644\nindex 0000000..73ac8a2\n--- /dev/null\n+++ b/src/compat-api.h\n@@ -0,0 +1,106 @@\n+/*\n+ * Copyright 2012 Red Hat, Inc.\n+ *\n+ * Permission is hereby granted, free of charge, to any person obtaining a\n+ * copy of this software and associated documentation files (the \"Software\"),\n+ * to deal in the Software without restriction, including without limitation\n+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n+ * and/or sell copies of the Software, and to permit persons to whom the\n+ * Software is furnished to do so, subject to the following conditions:\n+ *\n+ * The above copyright notice and this permission notice (including the next\n+ * paragraph) shall be included in all copies or substantial portions of the\n+ * Software.\n+ *\n+ * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL\n+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n+ * DEALINGS IN THE SOFTWARE.\n+ *\n+ * Author: Dave Airlie <airlied@redhat.com>\n+ */\n+\n+/* this file provides API compat between server post 1.13 and pre it,\n+   it should be reused inside as many drivers as possible */\n+#ifndef COMPAT_API_H\n+#define COMPAT_API_H\n+\n+#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR\n+#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]\n+#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p\n+#endif\n+\n+#ifndef XF86_HAS_SCRN_CONV\n+#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]\n+#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]\n+#endif\n+\n+#ifndef XF86_SCRN_INTERFACE\n+\n+#define SCRN_ARG_TYPE int\n+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]\n+\n+#define SCREEN_ARG_TYPE int\n+#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]\n+\n+#define SCREEN_INIT_ARGS_DECL int index, ScreenPtr pScreen, int argc, char **argv\n+\n+#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask\n+#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask\n+\n+#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen\n+#define CLOSE_SCREEN_ARGS scrnIndex, pScreen\n+#define CLOSE_SCREEN_DECL_ScrnInfoPtr ScrnInfoPtr pScrn = xf86Screens[scrnIndex];\n+\n+#define FBDEVHWADJUSTFRAME_ARGS(x, y) scrnIndex, (x), (y), 0\n+\n+#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags\n+\n+#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags\n+\n+#define FREE_SCREEN_ARGS_DECL int arg, int flags\n+#define FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0\n+\n+#define VT_FUNC_ARGS_DECL int arg, int flags\n+#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags)\n+\n+#define ENABLE_DISABLE_FB_ACCESS_ARGS(pScrn, b) pScrn->scrnIndex, b\n+\n+#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex)\n+#else\n+#define SCRN_ARG_TYPE ScrnInfoPtr\n+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)\n+\n+#define SCREEN_ARG_TYPE ScreenPtr\n+#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)\n+\n+#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv\n+\n+#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask\n+#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask\n+\n+#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen\n+#define CLOSE_SCREEN_ARGS pScreen\n+#define CLOSE_SCREEN_DECL_ScrnInfoPtr ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+\n+#define FBDEVHWADJUSTFRAME_ARGS(x, y) pScrn, (x), (y)\n+\n+#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y\n+#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode\n+\n+#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg\n+#define FREE_SCREEN_ARGS(x) (x)\n+\n+#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg\n+#define VT_FUNC_ARGS(flags) pScrn\n+\n+#define ENABLE_DISABLE_FB_ACCESS_ARGS(pScrn, b) pScrn, b\n+\n+#define XF86_ENABLEDISABLEFB_ARG(x) (x)\n+\n+#endif\n+\n+#endif\ndiff --git a/src/imx_display.c b/src/imx_display.c\nindex fcb8195..e2dc36a 100644\n--- a/src/imx_display.c\n+++ b/src/imx_display.c\n@@ -42,6 +42,8 @@\n #include \"imx.h\"\n #include \"imx_display.h\"\n \n+#include \"compat-api.h\"\n+\n #include <X11/Xatom.h>\n \n #if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,7,6,0,0)\n@@ -1373,19 +1375,19 @@ imxDisplayPreInit(ScrnInfoPtr pScrn)\n Bool\n imxDisplayStartScreenInit(int scrnIndex, ScreenPtr pScreen)\n {\n-\tScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n \tImxPtr fPtr = IMXPTR(pScrn);\n \n \tif (!xf86SetDesiredModes(pScrn)) {\n \n-\t\txf86DrvMsg(scrnIndex, X_ERROR, \"mode initialization failed\\n\");\n+\t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR, \"mode initialization failed\\n\");\n \t\treturn FALSE;\n \t}\n \n #if 0\n \tif (!fbdevHWModeInit(pScrn, pScrn->currentMode)) {\n \n-\t\txf86DrvMsg(scrnIndex, X_ERROR, \"mode initialization failed\\n\");\n+\t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR, \"mode initialization failed\\n\");\n \t\treturn FALSE;\n \t}\n \tpScrn->displayWidth =\n@@ -1463,29 +1465,29 @@ imxDisplayFinishScreenInit(int scrnIndex, ScreenPtr pScreen)\n /* -------------------------------------------------------------------- */\n \n Bool\n-imxDisplaySwitchMode(int scrnIndex, DisplayModePtr mode, int flags)\n+imxDisplaySwitchMode(SWITCH_MODE_ARGS_DECL)\n {\n-\tScrnInfoPtr pScrn = xf86Screens[scrnIndex];\n+\tSCRN_INFO_PTR(arg);\n \n \treturn xf86SetSingleMode(pScrn, mode, RR_Rotate_0);\n }\n \n void\n-imxDisplayAdjustFrame(int scrnIndex, int x, int y, int flags)\n+imxDisplayAdjustFrame(ADJUST_FRAME_ARGS_DECL)\n {\n-//\tfbdevHWAdjustFrame(scrnIndex, x, y, flags);\n+//\tfbdevHWAdjustFrame(pScrn->scrnIndex, x, y, flags);\n }\n \n Bool\n-imxDisplayEnterVT(int scrnIndex, int flags)\n+imxDisplayEnterVT(VT_FUNC_ARGS_DECL)\n {\n-\tScrnInfoPtr pScrn = xf86Screens[scrnIndex];\n+\tSCRN_INFO_PTR(arg);\n \n \treturn xf86SetDesiredModes(pScrn);\n }\n \n void\n-imxDisplayLeaveVT(int scrnIndex, int flags)\n+imxDisplayLeaveVT(VT_FUNC_ARGS_DECL)\n {\n }\n \ndiff --git a/src/imx_display.h b/src/imx_display.h\nindex 4a5d5aa..3a3d43a 100644\n--- a/src/imx_display.h\n+++ b/src/imx_display.h\n@@ -59,16 +59,16 @@ imxDisplayValidMode(int scrnIndex, DisplayModePtr mode,\n \t\t\tBool verbose, int flags);\n \n extern Bool\n-imxDisplaySwitchMode(int scrnIndex, DisplayModePtr mode, int flags);\n+imxDisplaySwitchMode(SWITCH_MODE_ARGS_DECL);\n \n extern void\n-imxDisplayAdjustFrame(int scrnIndex, int x, int y, int flags);\n+imxDisplayAdjustFrame(ADJUST_FRAME_ARGS_DECL);\n \n extern Bool\n-imxDisplayEnterVT(int scrnIndex, int flags);\n+imxDisplayEnterVT(VT_FUNC_ARGS_DECL);\n \n extern void\n-imxDisplayLeaveVT(int scrnIndex, int flags);\n+imxDisplayLeaveVT(VT_FUNC_ARGS_DECL);\n \n extern Bool\n imxDisplayChangeFrameBufferRotateEPDC(int scrnIndex, int fbRotate);\ndiff --git a/src/imx_driver.c b/src/imx_driver.c\nindex 178e36e..f4b3e38 100644\n--- a/src/imx_driver.c\n+++ b/src/imx_driver.c\n@@ -46,6 +46,8 @@\n #include \"fb.h\"\n #include \"fbdevhw.h\"\n \n+#include \"compat-api.h\"\n+\n #if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6\n #include \"xf86Resources.h\"\n #include \"xf86RAC.h\"\n@@ -435,17 +437,17 @@ errorPreInit:\n }\n \n static void\n-imxFreeScreen(int scrnIndex, int flags)\n+imxFreeScreen(FREE_SCREEN_ARGS_DECL)\n {\n-\tScrnInfoPtr pScrn = xf86Screens[scrnIndex];\n+\tSCRN_INFO_PTR(arg);\n \n \timxFreeRec(pScrn);\n }\n \n static Bool\n-imxCloseScreen(int scrnIndex, ScreenPtr pScreen)\n+imxCloseScreen(CLOSE_SCREEN_ARGS_DECL)\n {\n-\tScrnInfoPtr pScrn = xf86Screens[scrnIndex];\n+\tCLOSE_SCREEN_DECL_ScrnInfoPtr;\n \tImxPtr fPtr = IMXPTR(pScrn);\n \n \tfbdevHWRestore(pScrn);\n@@ -453,7 +455,7 @@ imxCloseScreen(int scrnIndex, ScreenPtr pScreen)\n \tpScrn->vtSema = FALSE;\n \n \tpScreen->CloseScreen = fPtr->saveCloseScreen;\n-\treturn (*pScreen->CloseScreen)(scrnIndex, pScreen);\n+\treturn (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);\n }\n \n static int\n@@ -488,9 +490,9 @@ LCM(a, b)\n }\n \n static Bool\n-imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n+imxScreenInit(SCREEN_INIT_ARGS_DECL)\n {\n-\tScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n \tImxPtr fPtr = IMXPTR(pScrn);\n \tVisualPtr visual;\n \tint init_picture = 0;\n@@ -514,7 +516,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n \t/* Map frame buffer memory */\n \tfPtr->fbMemoryBase = fbdevHWMapVidmem(pScrn);\n \tif (NULL == fPtr->fbMemoryBase) {\n-\t        xf86DrvMsg(scrnIndex,X_ERROR,\"mapping of video memory\"\n+\t        xf86DrvMsg(pScrn->scrnIndex,X_ERROR,\"mapping of video memory\"\n \t\t\t   \" failed\\n\");\n \t\treturn FALSE;\n \t}\n@@ -558,7 +560,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n \tconst int fbOffsetScreen2 =\n \t\tIMX_ALIGN(fbMaxScreenSize, fbMaxAlignOffset);\n \tfPtr->fbMemoryScreenReserve = fbMaxScreenSize;\n-\txf86DrvMsg(scrnIndex, X_INFO,\n+\txf86DrvMsg(pScrn->scrnIndex, X_INFO,\n \t\t\"reserve %d bytes of frame buffer for screen\\n\",\n \t\tfPtr->fbMemoryScreenReserve);\n \tfPtr->fbMemoryStart2 = NULL;\n@@ -568,12 +570,12 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n \n \t\tfPtr->fbMemoryScreenReserve += fbOffsetScreen2;\n \n-\t\txf86DrvMsg(scrnIndex, X_INFO,\n+\t\txf86DrvMsg(pScrn->scrnIndex, X_INFO,\n \t\t\t\"reserve same number of bytes for XRandR rotated screen at offset %d\\n\",\n \t\t\tfbOffsetScreen2);\n \t}\n \n-\tif (!imxDisplayStartScreenInit(scrnIndex, pScreen)) {\n+\tif (!imxDisplayStartScreenInit(pScrn->scrnIndex, pScreen)) {\n \n \t\treturn FALSE;\n \t}\n@@ -582,7 +584,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n \tmiClearVisualTypes();\n \tif (pScrn->bitsPerPixel > 8) {\n \t\tif (!miSetVisualTypes(pScrn->depth, TrueColorMask, pScrn->rgbBits, TrueColor)) {\n-\t\t\txf86DrvMsg(scrnIndex,X_ERROR,\"visual type setup failed\"\n+\t\t\txf86DrvMsg(pScrn->scrnIndex,X_ERROR,\"visual type setup failed\"\n \t\t\t\t   \" for %d bits per pixel [1]\\n\",\n \t\t\t\t   pScrn->bitsPerPixel);\n \t\t\treturn FALSE;\n@@ -591,14 +593,14 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n \t\tif (!miSetVisualTypes(pScrn->depth,\n \t\t\t\t      miGetDefaultVisualMask(pScrn->depth),\n \t\t\t\t      pScrn->rgbBits, pScrn->defaultVisual)) {\n-\t\t\txf86DrvMsg(scrnIndex,X_ERROR,\"visual type setup failed\"\n+\t\t\txf86DrvMsg(pScrn->scrnIndex,X_ERROR,\"visual type setup failed\"\n \t\t\t\t   \" for %d bits per pixel [2]\\n\",\n \t\t\t\t   pScrn->bitsPerPixel);\n \t\t\treturn FALSE;\n \t\t}\n \t}\n \tif (!miSetPixmapDepths()) {\n-\t  xf86DrvMsg(scrnIndex,X_ERROR,\"pixmap depth setup failed\\n\");\n+\t  xf86DrvMsg(pScrn->scrnIndex,X_ERROR,\"pixmap depth setup failed\\n\");\n \t  return FALSE;\n \t}\n \n@@ -607,10 +609,10 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n \t\thas a padding which is independent from the depth (controlfb) */\n \tpScrn->displayWidth = fbdevHWGetLineLength(pScrn) /\n \t\t\t      (pScrn->bitsPerPixel / 8);\n-\txf86DrvMsg(scrnIndex, X_INFO, \"displayWidth = %d\\n\", pScrn->displayWidth);\n+\txf86DrvMsg(pScrn->scrnIndex, X_INFO, \"displayWidth = %d\\n\", pScrn->displayWidth);\n \n \tif (pScrn->displayWidth != pScrn->virtualX) {\n-\t\txf86DrvMsg(scrnIndex, X_INFO,\n+\t\txf86DrvMsg(pScrn->scrnIndex, X_INFO,\n \t\t\t   \"Pitch updated to %d after ModeInit\\n\",\n \t\t\t   pScrn->displayWidth);\n \t}\n@@ -633,7 +635,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n \t\t\tinit_picture = 1;\n \t\t\tbreak;\n \t \tdefault:\n-\t\t\txf86DrvMsg(scrnIndex, X_ERROR,\n+\t\t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR,\n \t\t\t\t   \"internal error: invalid number of bits per\"\n \t\t\t\t   \" pixel (%d) encountered in\"\n \t\t\t\t   \" imxScreenInit()\\n\", pScrn->bitsPerPixel);\n@@ -644,7 +646,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n \tcase FBDEVHW_INTERLEAVED_PLANES:\n \t\t/* This should never happen ...\n \t\t* we should check for this much much earlier ... */\n-\t\txf86DrvMsg(scrnIndex, X_ERROR,\n+\t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR,\n \t\t           \"internal error: interleaved planes are not yet \"\n \t\t\t   \"supported by the imx driver\\n\");\n \t\tret = FALSE;\n@@ -652,20 +654,20 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n \tcase FBDEVHW_TEXT:\n \t\t/* This should never happen ...\n \t\t* we should check for this much much earlier ... */\n-\t\txf86DrvMsg(scrnIndex, X_ERROR,\n+\t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR,\n \t\t           \"internal error: text mode is not supported by the \"\n \t\t\t   \"imx driver\\n\");\n \t\tret = FALSE;\n \t\tbreak;\n \tcase FBDEVHW_VGA_PLANES:\n \t\t/* Not supported yet */\n-\t\txf86DrvMsg(scrnIndex, X_ERROR,\n+\t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR,\n \t\t           \"internal error: EGA/VGA Planes are not yet \"\n \t\t\t   \"supported by the imx driver\\n\");\n \t\tret = FALSE;\n \t\tbreak;\n \tdefault:\n-\t\txf86DrvMsg(scrnIndex, X_ERROR,\n+\t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR,\n \t\t           \"internal error: unrecognised hardware type (%d) \"\n \t\t\t   \"encountered in imxScreenInit()\\n\", type);\n \t\tret = FALSE;\n@@ -699,7 +701,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n \t/* INIT ACCELERATION BEFORE INIT FOR BACKING STORE & SOFTWARE CURSOR */ \n \tif (fPtr->useAccel) {\n \n-\t\tif (!imxExaZ160Setup(scrnIndex, pScreen)) {\n+\t\tif (!imxExaZ160Setup(pScrn->scrnIndex, pScreen)) {\n \n \t\t\tfPtr->useAccel = FALSE;\n \t\t}\n@@ -731,29 +733,29 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n \t/* XXX It would be simpler to use miCreateDefColormap() in all cases. */\n \tcase FBDEVHW_PACKED_PIXELS:\n \t\tif (!miCreateDefColormap(pScreen)) {\n-\t\t\txf86DrvMsg(scrnIndex, X_ERROR,\n+\t\t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR,\n                                    \"internal error: miCreateDefColormap failed \"\n \t\t\t\t   \"in imxScreenInit()\\n\");\n \t\t\treturn FALSE;\n \t\t}\n \t\tbreak;\n \tcase FBDEVHW_INTERLEAVED_PLANES:\n-\t\txf86DrvMsg(scrnIndex, X_ERROR,\n+\t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR,\n \t\t           \"internal error: interleaved planes are not yet \"\n \t\t\t   \"supported by the imx driver\\n\");\n \t\treturn FALSE;\n \tcase FBDEVHW_TEXT:\n-\t\txf86DrvMsg(scrnIndex, X_ERROR,\n+\t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR,\n \t\t           \"internal error: text mode is not supported by \"\n \t\t\t   \"the imx driver\\n\");\n \t\treturn FALSE;\n \tcase FBDEVHW_VGA_PLANES:\n-\t\txf86DrvMsg(scrnIndex, X_ERROR,\n+\t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR,\n \t\t           \"internal error: EGA/VGA planes are not yet \"\n \t\t\t   \"supported by the imx driver\\n\");\n \t\treturn FALSE;\n \tdefault:\n-\t\txf86DrvMsg(scrnIndex, X_ERROR,\n+\t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR,\n \t\t           \"internal error: unrecognised imx hardware type \"\n \t\t\t   \"(%d) encountered in imxScreenInit()\\n\", type);\n \t\treturn FALSE;\n@@ -782,7 +784,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)\n \t}\n #endif\n \n-\tif (!imxDisplayFinishScreenInit(scrnIndex, pScreen)) {\n+\tif (!imxDisplayFinishScreenInit(pScrn->scrnIndex, pScreen)) {\n \t\treturn FALSE;\n \t}\n \n@@ -810,7 +812,7 @@ IMXGetPixmapProperties(\n \t}\n \n \t/* Access screen associated with this pixmap. */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);\n \n \t/* Check if the screen associated with this pixmap has IMX driver. */\n \tif (0 != strcmp(IMX_DRIVER_NAME, pScrn->driverName)) {\ndiff --git a/src/imx_exa_offscreen.c b/src/imx_exa_offscreen.c\nindex 3a5c24d..0fbe2fc 100644\n--- a/src/imx_exa_offscreen.c\n+++ b/src/imx_exa_offscreen.c\n@@ -79,7 +79,7 @@ static void\n imxExaOffscreenValidate (ScreenPtr pScreen)\n {\n     /* Access the driver specific data. */\n-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n     ImxPtr imxPtr = IMXPTR(pScrn);\n     ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr);\n     ExaOffscreenArea *prev = 0, *area;\n@@ -135,7 +135,7 @@ imxExaOffscreenMerge (ImxExaPtr imxExaPtr, ExaOffscreenArea *area)\n ExaOffscreenArea *\n imxExaOffscreenFree (ScreenPtr pScreen, ExaOffscreenArea *area)\n {\n-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n     ImxPtr imxPtr = IMXPTR(pScrn);\n     ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr);\n     ExaOffscreenArea\t*next = area->next;\n@@ -281,7 +281,7 @@ imxExaOffscreenAlloc (ScreenPtr pScreen, int size, int align,\n                    pointer privData)\n {\n     ExaOffscreenArea *area;\n-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n     ImxPtr imxPtr = IMXPTR(pScrn);\n     ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr);\n     int real_size = 0, largest_avail = 0;\n@@ -418,7 +418,7 @@ imxExaOffscreenSwapIn (ScreenPtr pScreen)\n Bool\n imxExaOffscreenInit (ScreenPtr pScreen)\n {\n-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n     ImxPtr imxPtr = IMXPTR(pScrn);\n     ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr);\n     ExaOffscreenArea *area;\n@@ -453,7 +453,7 @@ imxExaOffscreenInit (ScreenPtr pScreen)\n void\n imxExaOffscreenFini (ScreenPtr pScreen)\n {\n-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n     ImxPtr imxPtr = IMXPTR(pScrn);\n     ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr);\n     ExaOffscreenArea *area;\n@@ -472,7 +472,7 @@ imxExaOffscreenFini (ScreenPtr pScreen)\n void\n imxExaOffscreenSwapOut (ScreenPtr pScreen)\n {\n-    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n     ImxPtr imxPtr = IMXPTR(pScrn);\n     ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr);\n \ndiff --git a/src/imx_exa_z160.c b/src/imx_exa_z160.c\nindex fb718e0..3d0bc96 100644\n--- a/src/imx_exa_z160.c\n+++ b/src/imx_exa_z160.c\n@@ -32,6 +32,7 @@\n #include <errno.h>\n #include <fcntl.h>\n \n+#include \"compat-api.h\"\n \n /* Set if handles pixmap allocation and migration, i.e, EXA_HANDLES_PIXMAPS */\n #define\tIMX_EXA_ENABLE_HANDLES_PIXMAPS\t\\\n@@ -299,7 +300,7 @@ imxExaZ160GetPixmapAddress(PixmapPtr pPixmap)\n \treturn fPixmapPtr->ptr;\n #else\n \t/* Access screen associated with this pixmap. */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);\n \n \t/* Access driver specific data */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -344,7 +345,7 @@ imxExaZ160GetPixmapProperties(\n #else\n \n \t/* Access screen associated with this pixmap. */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);\n \n \t/* Make sure pixmap is in framebuffer */\n \tif (!exaDrawableIsOffscreen(&(pPixmap->drawable))) {\n@@ -856,7 +857,7 @@ imxExaZ160SyncIfBusyPixmap(PixmapPtr pPixmap)\n {\n \t/* Access screen associated with this pixmap. */\n \tScreenPtr pScreen = pPixmap->drawable.pScreen;\n-\tScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n \n \t/* Access driver specific data for screen. */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -924,7 +925,7 @@ imxExaZ160CreatePixmap2(ScreenPtr pScreen, int width, int height,\n \t}\n \n \t/* Access the driver specific data. */\n-\tScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n \tImxPtr imxPtr = IMXPTR(pScrn);\n \tImxExaZ160Ptr fPtr = IMXEXAZ160PTR(imxPtr);\n \t\n@@ -1028,7 +1029,7 @@ imxExaZ160DestroyPixmap(ScreenPtr pScreen, void *driverPriv)\n \tImxExaPixmapPtr fPixmapPtr = (ImxExaPixmapPtr)driverPriv;\n \n \t/* Access the driver specific data. */\n-\tScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n \tImxPtr imxPtr = IMXPTR(pScrn);\n \tImxExaZ160Ptr fPtr = IMXEXAZ160PTR(imxPtr);\n \n@@ -1068,7 +1069,7 @@ imxExaZ160ModifyPixmapHeader(PixmapPtr pPixmap, int width, int height,\n \t}\n \n \t/* Access screen associated with this pixmap */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);\n \n \t/* Access driver specific data */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -1194,7 +1195,7 @@ imxExaZ160TrackBusyPixmap(ImxExaZ160Ptr fPtr, PixmapPtr pPixmap)\n static void\n imxExaZ160WaitMarker(ScreenPtr pScreen, int marker)\n {\n-\tScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n \n \t/* Access driver specific data associated with the screen. */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -1249,7 +1250,7 @@ imxExaZ160PrepareSolid(PixmapPtr pPixmap, int alu, Pixel planemask, Pixel fg)\n \t}\n \n \t/* Access screen associated with this pixmap */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);\n \n \t/* Access driver specific data */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -1352,7 +1353,7 @@ static void\n imxExaZ160Solid(PixmapPtr pPixmap, int x1, int y1, int x2, int y2)\n {\n \t/* Access screen associated with this pixmap */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);\n \n \t/* Access driver specific data */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -1423,7 +1424,7 @@ static void\n imxExaZ160DoneSolid(PixmapPtr pPixmap)\n {\n \t/* Access screen associated with this pixmap */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen);\n \n \t/* Access driver specific data */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -1485,7 +1486,7 @@ imxExaZ160PrepareCopy(\n \t}\n \n \t/* Access the screen associated with this pixmap. */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);\n \n \t/* Access driver specific data */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -1599,7 +1600,7 @@ static void\n imxExaZ160Copy(PixmapPtr pPixmapDst, int srcX, int srcY, int dstX, int dstY, int width, int height)\n {\n \t/* Access screen associated with dst pixmap */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);\n \n \t/* Access driver specific data */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -1661,7 +1662,7 @@ static void\n imxExaZ160DoneCopy(PixmapPtr pPixmapDst)\n {\n \t/* Access screen associated with this pixmap */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);\n \n \t/* Access driver specific data */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -1770,7 +1771,7 @@ imxExaZ160CheckComposite(int op, PicturePtr pPictureSrc, PicturePtr pPictureMask\n \t}\n \n \t/* Access screen associated with dst pixmap (same screen as for src pixmap). */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);\n \n \t/* Check the number of entities, and fail if it isn't one. */\n \tif (pScrn->numEntities != 1) {\n@@ -1987,7 +1988,7 @@ imxExaZ160PrepareComposite(\n {\n \t/* Access screen associated with dst pixmap. */\n \t/* Should be same screen as for src pixmap. */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);\n \n \t/* NOTE - many preconditions already verified in CheckComposite. */\n \n@@ -2196,7 +2197,7 @@ imxExaZ160Composite(\n \tint height)\n {\n \t/* Access screen associated with dst pixmap */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);\n \n \t/* Access driver specific data */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -2275,7 +2276,7 @@ static void\n imxExaZ160DoneComposite(PixmapPtr pPixmapDst)\n {\n \t/* Access screen associated with this pixmap */\n-\tScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen);\n \n \t/* Access driver specific data */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -2323,7 +2324,7 @@ imxExaZ160UploadToScreen(\n \n \t/* Access screen associated with this pixmap */\n \tScreenPtr pScreen = pPixmapDst->drawable.pScreen;\n-\tScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n \n \t/* Access driver specific data */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -2381,7 +2382,7 @@ imxExaZ160DownloadFromScreen(\n \n \t/* Access screen associated with this pixmap */\n \tScreenPtr pScreen = pPixmapSrc->drawable.pScreen;\n-\tScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n \n \t/* Access driver specific data */\n \tImxPtr imxPtr = IMXPTR(pScrn);\n@@ -2412,9 +2413,9 @@ imxExaZ160DownloadFromScreen(\n }\n \n Bool\n-imxExaZ160CloseScreen(int scrnIndex, ScreenPtr pScreen)\n+imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS_DECL)\n {\n-\tScrnInfoPtr pScrn = xf86Screens[scrnIndex];\n+\tCLOSE_SCREEN_DECL_ScrnInfoPtr;\n \tImxPtr imxPtr = IMXPTR(pScrn);\n \n \tImxExaZ160Ptr fPtr = IMXEXAZ160PTR(imxPtr);\n@@ -2504,7 +2505,7 @@ imxExaZ160CloseScreen(int scrnIndex, ScreenPtr pScreen)\n \t/* Install our CloseScreen function so that it gets called. */\n \tif (NULL != pScreen->CloseScreen) {\n \n-\t\treturn (*pScreen->CloseScreen)(scrnIndex, pScreen);\n+\t\treturn (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);\n \t}\n \n \treturn TRUE;\n@@ -2514,7 +2515,7 @@ Bool\n imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen)\n {\n \t/* Access the screen info and then private data structures. */\n-\tScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];\n+\tScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);\n \tImxPtr imxPtr = IMXPTR(pScrn);\n \n \t/* Private data structure must not already be in use. */\n@@ -2582,7 +2583,7 @@ imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen)\n \n \t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR,\n \t\t\t\"Initialize Z160 interfaces failed.\\n\");\n-\t\timxExaZ160CloseScreen(scrnIndex, pScreen);\n+\t\timxExaZ160CloseScreen(CLOSE_SCREEN_ARGS);\n \t\treturn FALSE;\n \t}\n \n@@ -2592,7 +2593,7 @@ imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen)\n \n \t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR,\n \t\t\t\"Allocate EXA driver structure.\\n\");\n-\t\timxExaZ160CloseScreen(scrnIndex, pScreen);\n+\t\timxExaZ160CloseScreen(CLOSE_SCREEN_ARGS);\n \t\treturn FALSE;\n \t}\n \n@@ -2657,7 +2658,7 @@ imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen)\n \tif (!exaDriverInit(pScreen, exaDriverPtr)) {\n \n \t\txf86DrvMsg(pScrn->scrnIndex, X_ERROR, \"EXA initialization failed.\\n\");\n-\t\timxExaZ160CloseScreen(scrnIndex, pScreen);\n+\t\timxExaZ160CloseScreen(CLOSE_SCREEN_ARGS);\n \t\treturn FALSE;\n \t}\n \tfPtr->imxExaRec.exaDriverPtr = exaDriverPtr;\ndiff --git a/src/imx_xv_ipu.c b/src/imx_xv_ipu.c\nindex a517742..fc8a827 100644\n--- a/src/imx_xv_ipu.c\n+++ b/src/imx_xv_ipu.c\n@@ -398,7 +398,7 @@ xf86XVFillKeyHelper1 (ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes)\n \txRectangle *rects;\n \tGCPtr gc;\n \n-\tif(!xf86Screens[pScreen->myNum]->vtSema) return;\n+\tif(!xf86ScreenToScrn(pScreen)->vtSema) return;\n \n \tgc = GetScratchGC(root->depth, pScreen);\n \tpval[0] = key;\n@@ -771,7 +771,7 @@ MXXVInitializeAdaptor\n \tXF86VideoAdaptorPtr **pppAdaptor\n )\n {\n-\tScreenPtr           pScreen    = screenInfo.screens[pScreenInfo->scrnIndex];\n+\tScreenPtr           pScreen    = xf86ScrnToScreen(pScreenInfo);\n \tXF86VideoAdaptorPtr *ppAdaptor = NULL;\n \tIMXPtr fPtr = IMXPTR(pScreenInfo);\n \tint                 nAdaptor;\n-- \n1.7.10.4\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-imx/0005-xf86-video-imxfb-fix-m4-hardcodded-paths.patch",
    "content": "From 5b348e7be67957f4be6fcfa4942128c04f6db905 Mon Sep 17 00:00:00 2001\nFrom: Adrian Alonso <b38018@freescale.com>\nDate: Thu, 4 Aug 2011 14:24:26 -0500\nSubject: [PATCH] xf86-video-imxfb: fix m4 hardcodded paths\n\n* Fix m4 macros lookup location; remove /usr/share/aclocal path\n\nSigned-off-by: Adrian Alonso <b38018@freescale.com>\n---\n Makefile.am  |    2 +-\n Makefile.in  |    2 +-\n configure.ac |    2 +-\n 3 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 6752256..e205657 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -20,4 +20,4 @@\n \n AUTOMAKE_OPTIONS = foreign\n SUBDIRS = src\n-ACLOCAL_AMFLAGS = -I /usr/share/aclocal\n+ACLOCAL_AMFLAGS = -I m4\ndiff --git a/Makefile.in b/Makefile.in\nindex 5c0ba0e..f829db7 100644\n--- a/Makefile.in\n+++ b/Makefile.in\n@@ -243,7 +243,7 @@ top_builddir = @top_builddir@\n top_srcdir = @top_srcdir@\n AUTOMAKE_OPTIONS = foreign\n SUBDIRS = src\n-ACLOCAL_AMFLAGS = -I /usr/share/aclocal\n+ACLOCAL_AMFLAGS = -I m4\n all: config.h\n \t$(MAKE) $(AM_MAKEFLAGS) all-recursive\n \ndiff --git a/configure.ac b/configure.ac\nindex a1ac73b..0078b86 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -29,7 +29,7 @@ AC_INIT([xf86-video-imx],\n AC_CONFIG_SRCDIR([Makefile.am])\n AM_CONFIG_HEADER([config.h])\n AC_CONFIG_AUX_DIR(.)\n-AC_CONFIG_MACRO_DIR([/usr/share/aclocal])\n+AC_CONFIG_MACRO_DIR([m4])\n \n AM_INIT_AUTOMAKE([dist-bzip2])\n \n-- \n1.7.4.1\n\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-imx/0006-xserver-1.14-compat.patch",
    "content": "Fix building using new Xorg 1.14\n\nmibstore functions are no longer supported. This patch removes them\nfrom this driver, following the pattern in\nhttp://patches.openembedded.org/patch/46133/\n\nThis checkin shows when/where the changes to the X server were made\nthat deleted the header mibstore.h and mentions the reasons.\nhttp://lists.x.org/archives/xorg-devel/2012-September/033575.html\n\nUpstream-Status: Pending\n\nSigned-off-by: Otavio Salvador <otavio@ossystems.com.br>\n\nIndex: xserver-xorg-video-imx-11.09.01/src/imx_driver.c\n===================================================================\n--- xserver-xorg-video-imx-11.09.01.orig/src/imx_driver.c\n+++ xserver-xorg-video-imx-11.09.01/src/imx_driver.c\n@@ -37,7 +37,6 @@\n #include \"xf86_OSproc.h\"\n \n #include \"mipointer.h\"\n-#include \"mibstore.h\"\n #include \"micmap.h\"\n #include \"colormapst.h\"\n #include \"xf86cmap.h\"\n@@ -722,7 +721,6 @@ imxScreenInit(SCREEN_INIT_ARGS_DECL)\n \t/* Initialize for X extensions. */\n \timxExtInit();\n \n-\tmiInitializeBackingStore(pScreen);\n \txf86SetBackingStore(pScreen);\n \n \t/* software cursor */\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-imx/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX\n\tbool \"xf86-video-imx\"\n\tdepends on BR2_ARM_EABI # libz160\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC # libz160\n\tdepends on BR2_LINUX_KERNEL # linux/mxcfb.h\n\tdepends on BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_X11\n\tselect BR2_PACKAGE_LIBZ160\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org driver for iMX5 GPU\n\n\t  To use this driver, add the correct configuration to your\n\t  /etc/X11/xorg.conf, as follows:\n\n\t  Section \"Device\"\n\t    [...]\n\t    Driver \"imx\"\n\t    Option \"fbdev\" \"/dev/fb0\"\n\t  EndSection\n\ncomment \"xf86-video-imx needs an EABI toolchain w/ glibc\"\n\tdepends on BR2_arm\n\tdepends on !BR2_ARM_EABI || !BR2_TOOLCHAIN_USES_GLIBC\n\ncomment \"xf86-video-imx needs gpu-amd-bin-mx51 with X11 output and a Linux kernel to be built\"\n\tdepends on BR2_arm\n\tdepends on !BR2_LINUX_KERNEL || !BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_X11\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.hash",
    "content": "# locally computed\nsha256  d7d85e9f13c6dd58addab89847f3a8a67f6382a54135c7978c9a95368af024d4  xserver-xorg-video-imx-11.09.01.tar.gz\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-imx\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_IMX_VERSION = 11.09.01\nXDRIVER_XF86_VIDEO_IMX_SOURCE = xserver-xorg-video-imx-$(XDRIVER_XF86_VIDEO_IMX_VERSION).tar.gz\nXDRIVER_XF86_VIDEO_IMX_SITE = $(FREESCALE_IMX_SITE)\nXDRIVER_XF86_VIDEO_IMX_DEPENDENCIES = linux libz160 xserver_xorg-server \\\n\txorgproto\nXDRIVER_XF86_VIDEO_IMX_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -I$(LINUX_DIR)/include\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-imx-viv/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX_VIV\n\tbool \"xf86-video-imx-viv\"\n\tdepends on BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11\n\tdepends on BR2_PACKAGE_IMX_GPU_G2D\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_1 # mesa3d\n\tselect BR2_PACKAGE_MESA3D # Needed in order to compile xorg with glx/dri\n\tselect BR2_PACKAGE_MESA3D_DRI_DRIVER\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org driver for iMX6 GPU (Vivante)\n\n\t  Notice EGL and GLes2 APIs are correctly supported. This\n\t  driver should also be able to provide Desktop OpenGL\n\t  implementation but, this feature seems broken since quite\n\t  some time.\n\n\t  To use this driver, add correct configuration to your\n\t  /etc/X11/xorg.conf:\n\n\t  Section \"Device\"\n\t    [...]\n\t    Driver          \"vivante\"\n\t    Option          \"vivante_fbdev\" \"/dev/fbX\"\n\t  EndSection\n\n\t  Don't forget to load galcore.ko and create /dev/galcore\n\t  before using this driver (else, Xorg will exit with an\n\t  obscur message like \"Segmentation fault at address 0xc\").\n\ncomment \"xf86-video-imx-viv depends on imx-gpu-viv with X11 output\"\n\tdepends on BR2_arm\n\tdepends on !BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_1\n\ncomment \"xf86-video-imx-viv depends on imx-gpu-g2d\"\n\tdepends on BR2_arm\n\tdepends on !BR2_PACKAGE_IMX_GPU_G2D\n\tdepends on BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_1\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash",
    "content": "# Locally calculated\nsha256  638a8aa8b64f860900d003527529689bc342d18ff5e41a9e1750884544898e67  xdriver_xf86-video-imx-viv-rel_imx_4.9.x_1.0.0_ga-br1.tar.gz\nsha256  9d3e373f0440cc0c58853e963636a7c1ffda9308ec5f30ebe9adfb9c16a8a1e4  COPYING-MIT\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-imx-viv\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_IMX_VIV_VERSION = rel_imx_4.9.x_1.0.0_ga\nXDRIVER_XF86_VIDEO_IMX_VIV_SITE = https://source.codeaurora.org/external/imx/xf86-video-imx-vivante\nXDRIVER_XF86_VIDEO_IMX_VIV_SITE_METHOD = git\nXDRIVER_XF86_VIDEO_IMX_VIV_DEPENDENCIES = imx-gpu-viv imx-gpu-g2d xserver_xorg-server \\\n\txorgproto libdrm\nXDRIVER_XF86_VIDEO_IMX_VIV_LICENSE = MIT\nXDRIVER_XF86_VIDEO_IMX_VIV_LICENSE_FILES = COPYING-MIT\nXDRIVER_XF86_VIDEO_IMX_VIV_INSTALL_STAGING = YES\nXDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD = $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D)/EXA/src -f makefile.linux\n\ndefine XDRIVER_XF86_VIDEO_IMX_VIV_BUILD_CMDS\n\t$(XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD) sysroot=$(STAGING_DIR) \\\n\t\tBUSID_HAS_NUMBER=1 BUILD_IN_YOCTO=1 XSERVER_GREATER_THAN_13=1 \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS)\"\nendef\n\ndefine XDRIVER_XF86_VIDEO_IMX_VIV_INSTALL_STAGING_CMDS\n\t$(XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD) prefix=$(STAGING_DIR)/usr install\n\t$(INSTALL) -D -m 644 $(@D)/EXA/src/vivante_gal/vivante_priv.h \\\n\t\t$(STAGING_DIR)/usr/include/vivante_priv.h\n\t$(INSTALL) -D -m 644 $(@D)/EXA/src/vivante_gal/vivante_gal.h \\\n\t\t$(STAGING_DIR)/usr/include/vivante_gal.h\nendef\n\ndefine XDRIVER_XF86_VIDEO_IMX_VIV_INSTALL_TARGET_CMDS\n\t$(XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD) prefix=$(TARGET_DIR)/usr install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-intel/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_INTEL\n\tbool \"xf86-video-intel\"\n\tdepends on (BR2_i386 || BR2_x86_64)\n\tselect BR2_PACKAGE_LIBPCIACCESS\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_LIBDRM_INTEL\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Intel video driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.hash",
    "content": "# Locally computed\nsha256  11f48628d2b1f495446c49df93de40569ced664c6fdbd5d3f8f7a863e4a1124c  xdriver_xf86-video-intel-31486f40f8e8f8923ca0799aea84b58799754564-br1.tar.gz\nsha256  5808e89f4b9a30afc59f335bfa8219ecf2dacb89a81d16b322bc6d92993a48fa  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-intel\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_INTEL_VERSION = 31486f40f8e8f8923ca0799aea84b58799754564\nXDRIVER_XF86_VIDEO_INTEL_SITE = git://anongit.freedesktop.org/xorg/driver/xf86-video-intel\nXDRIVER_XF86_VIDEO_INTEL_LICENSE = MIT\nXDRIVER_XF86_VIDEO_INTEL_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_INTEL_AUTORECONF = YES\n\n# -D_GNU_SOURCE fixes a getline-related compile error in src/sna/kgem.c\n# We force -O2 regardless of the optimization level chosen by the user,\n# as compiling this package is known to be broken with -Os.\nXDRIVER_XF86_VIDEO_INTEL_CONF_ENV = \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -D_GNU_SOURCE -O2\"\n\nXDRIVER_XF86_VIDEO_INTEL_CONF_OPTS = \\\n\t--disable-xvmc \\\n\t--enable-sna \\\n\t--disable-xaa \\\n\t--disable-dga \\\n\t--disable-tools \\\n\t--disable-async-swap\n\nXDRIVER_XF86_VIDEO_INTEL_DEPENDENCIES = \\\n\tlibdrm \\\n\tlibpciaccess \\\n\txlib_libXrandr \\\n\txorgproto \\\n\txserver_xorg-server\n\n# X.org server support for DRI depends on a Mesa3D DRI driver\nifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y)\nXDRIVER_XF86_VIDEO_INTEL_CONF_OPTS += \\\n\t--enable-dri2 \\\n\t--enable-dri3 \\\n\t--enable-uxa\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-mach64/0001-cross-compile.patch",
    "content": "--- a/configure.ac\t2008-06-23 10:39:28.000000000 -0400\n+++ b/configure.ac\t2008-06-23 10:40:46.000000000 -0400\n@@ -85,14 +85,20 @@ sdkdir=$(pkg-config --variable=sdkdir xo\n AC_HEADER_STDC\n \n if test \"$DRI\" != no; then\n-\tAC_CHECK_FILE([${sdkdir}/dri.h],\n+ \tif test \"$cross_compiling\" = \"no\" ; then\n+\t\tAC_CHECK_FILE([${sdkdir}/dri.h],\n                       [have_dri_h=\"yes\"], [have_dri_h=\"no\"])\n-\tAC_CHECK_FILE([${sdkdir}/sarea.h],\n+\t\tAC_CHECK_FILE([${sdkdir}/sarea.h],\n                       [have_sarea_h=\"yes\"], [have_sarea_h=\"no\"])\n-\tAC_CHECK_FILE([${sdkdir}/dristruct.h],\n+\t\tAC_CHECK_FILE([${sdkdir}/dristruct.h],\n                       [have_dristruct_h=\"yes\"], [have_dristruct_h=\"no\"])\n-\tAC_CHECK_FILE([${sdkdir}/damage.h],\n+\t\tAC_CHECK_FILE([${sdkdir}/damage.h],\n                       [have_damage_h=\"yes\"], [have_damage_h=\"no\"])\n+ \telse\n+ \t\thave_dri_h=\"yes\"\n+ \t\thave_sarea_h=\"yes\"\n+ \t\thave_dristruct_h=\"yes\"\n+ \tfi\n fi\n \n AC_MSG_CHECKING([whether to include DRI support])\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-mach64/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_MACH64\n\tbool \"xf86-video-mach64\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  mach64 video driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-May/002896.html\nmd5 0e12f9a3b5659e1e27e03adc42b04d99  xf86-video-mach64-6.9.6.tar.bz2\nsha1 1fdf0c3488ab88cb46b563efee166a5d54a01932  xf86-video-mach64-6.9.6.tar.bz2\nsha256 7a0707c71bb522430f83bb5e9d9ee697e661e35534a3a2d10834f86b327a3c9c  xf86-video-mach64-6.9.6.tar.bz2\nsha512 687f6ac60491b704d5c4788463763d2f4bf725611e10bd2163156963fe0a8fdbffe0a1b7c737eff131f01759e43b5ec3544a7dabe66a67e85b286dcb969da2f1  xf86-video-mach64-6.9.6.tar.bz2\n# Locally computed\nsha256 a7d68021893bced0d709338a59a137c74b11e624880e110e4a2f14ccef475120  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-mach64\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_MACH64_VERSION = 6.9.6\nXDRIVER_XF86_VIDEO_MACH64_SOURCE = xf86-video-mach64-$(XDRIVER_XF86_VIDEO_MACH64_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_MACH64_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_MACH64_LICENSE = MIT\nXDRIVER_XF86_VIDEO_MACH64_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_MACH64_AUTORECONF = YES\nXDRIVER_XF86_VIDEO_MACH64_DEPENDENCIES = xserver_xorg-server xorgproto\n\nifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)\nXDRIVER_XF86_VIDEO_MACH64_CONF_OPTS = --disable-dri\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-mga/0001-misc-fixes.patch",
    "content": "--- xf86-video-mga-1.4.9/configure.ac.orig\t2007-06-10 11:55:24.000000000 +0200\n+++ xf86-video-mga-1.4.9/configure.ac\t2007-06-10 12:00:37.000000000 +0200\n@@ -77,12 +77,18 @@\n AC_HEADER_STDC\n \n if test \"x$DRI\" != xno; then\n+\tif test \"$cross_compiling\" = no; then\n         AC_CHECK_FILE([${sdkdir}/dri.h],\n                       [have_dri_h=\"yes\"], [have_dri_h=\"no\"])\n         AC_CHECK_FILE([${sdkdir}/sarea.h],\n                       [have_sarea_h=\"yes\"], [have_sarea_h=\"no\"])\n         AC_CHECK_FILE([${sdkdir}/dristruct.h],\n                       [have_dristruct_h=\"yes\"], [have_dristruct_h=\"no\"])\n+\telse\n+\t\thave_dri_h=\"yes\"\n+\t\thave_sarea_h=\"yes\"\n+\t\thave_dristruct_h=\"yes\"\n+\tfi\n fi\n \n AC_MSG_CHECKING([whether to include DRI support])\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-mga/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_MGA\n\tbool \"xf86-video-mga\"\n\tdepends on BR2_PACKAGE_MESA3D\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Matrox video driver\n\ncomment \"xf86-video-mga needs mesa3d\"\n\tdepends on !BR2_PACKAGE_MESA3D\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-December/002933.html\nmd5 b8fc99b4adea8bfe80156b13df4b6c9c  xf86-video-mga-2.0.0.tar.bz2\nsha1 833f2710a1fd7b3f2db3700b2ad055527da5033b  xf86-video-mga-2.0.0.tar.bz2\nsha256 268946e1a13e9d80e4f724a0740df9e6e8c8bad37697fcbf456924e9fdbb5d79  xf86-video-mga-2.0.0.tar.bz2\nsha512 b92006486aef815ff4399f291d610c65d88c0b32a9dae97658c644715ff62b221b01495b5c7a2311745e26f699c1c1f753b81c7bf54cf75567af9f78ac015540  xf86-video-mga-2.0.0.tar.bz2\n# Locally computed\nsha256 6c567575e381478c7616eedff3ea2ae5228a5b54fbdd22d4070ebae312fa085c  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-mga\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_MGA_VERSION = 2.0.0\nXDRIVER_XF86_VIDEO_MGA_SOURCE = xf86-video-mga-$(XDRIVER_XF86_VIDEO_MGA_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_MGA_SITE = http://xorg.freedesktop.org/archive/individual/driver\nXDRIVER_XF86_VIDEO_MGA_LICENSE = MIT\nXDRIVER_XF86_VIDEO_MGA_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_MGA_AUTORECONF = YES\nXDRIVER_XF86_VIDEO_MGA_DEPENDENCIES = xserver_xorg-server libdrm xorgproto\n\nifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)\nXDRIVER_XF86_VIDEO_MGA_CONF_OPTS = --disable-dri\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-neomagic/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_NEOMAGIC\n\tbool \"xf86-video-neomagic\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Neomagic video driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-December/002934.html\nmd5 349d5254d09eb46f2a1f151cd423b89a  xf86-video-neomagic-1.3.0.tar.bz2\nsha1 6bccfa15ea05d5264120cd96ccf13687642e8f6d  xf86-video-neomagic-1.3.0.tar.bz2\nsha256 93833950fae7757088eb6abb125e15e8c245e5e25681c19c3ad4213ec7319064  xf86-video-neomagic-1.3.0.tar.bz2\nsha512 25d019a2556e52aeb4e25942f444437a921e76d527c10ddd420f16aa7d85bf2b8a51612c382a2a7e3e407bb1e8d610d063101184eea0889c3e1a69bfb3b37735  xf86-video-neomagic-1.3.0.tar.bz2\n# Locally computed\nsha256 95063ce9aa09850025dd317549ce688519079a8d3cf66ceb3d882cb2bafcced9  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-neomagic\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_NEOMAGIC_VERSION = 1.3.0\nXDRIVER_XF86_VIDEO_NEOMAGIC_SOURCE = xf86-video-neomagic-$(XDRIVER_XF86_VIDEO_NEOMAGIC_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_NEOMAGIC_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_NEOMAGIC_LICENSE = MIT\nXDRIVER_XF86_VIDEO_NEOMAGIC_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_NEOMAGIC_DEPENDENCIES = xserver_xorg-server xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-nouveau/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_NOUVEAU\n\tbool \"xf86-video-nouveau\"\n\tdepends on BR2_PACKAGE_MESA3D\n\tselect BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_LIBDRM_NOUVEAU\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Nouveau video driver\n\n\t  http://nouveau.freedesktop.org\n\ncomment \"xf86-video-nouveau needs mesa3d\"\n\tdepends on !BR2_PACKAGE_MESA3D\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.hash",
    "content": "# From https://lists.freedesktop.org/archives/nouveau/2021-January/037766.html\nsha256  499322e27a55c8183166bf2dd1e47d085eb834143e0d7036baba8427b90c156b  xf86-video-nouveau-1.0.17.tar.bz2\nsha512  adba58ba5298d1a5b3f9f8540f9ef2cb2e10e47bba8e374103ec2e1f92e915f5f4393ed0021168cd649646e12315135a1efcdf77e8fb1648e1295914d87279b2  xf86-video-nouveau-1.0.17.tar.bz2\n\n# Locally computed\nsha256  27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-nouveau\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_NOUVEAU_VERSION = 1.0.17\nXDRIVER_XF86_VIDEO_NOUVEAU_SOURCE = xf86-video-nouveau-$(XDRIVER_XF86_VIDEO_NOUVEAU_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_NOUVEAU_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_NOUVEAU_LICENSE = MIT\nXDRIVER_XF86_VIDEO_NOUVEAU_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_NOUVEAU_DEPENDENCIES = \\\n\thost-pkgconf \\\n\tlibdrm \\\n\txorgproto \\\n\txserver_xorg-server\n\n# xdriver_xf86-video-nouveau requires O_CLOEXEC\nXDRIVER_XF86_VIDEO_NOUVEAU_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -D_GNU_SOURCE\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-nv/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_NV\n\tbool \"xf86-video-nv\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  NVIDIA video driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2017-January/002761.html\nsha256  1f98649e6ff0e8214b9d5dcac661f1d004be8e73823d8247b9c7025fd81db32d  xf86-video-nv-2.1.21.tar.bz2\n# Locally calculated\nsha256  10d10e1ec37594d481c3de8dda22a40b731ebd43be7ccd462baaa7394738a9f3  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-nv\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_NV_VERSION = 2.1.21\nXDRIVER_XF86_VIDEO_NV_SOURCE = xf86-video-nv-$(XDRIVER_XF86_VIDEO_NV_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_NV_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_NV_LICENSE = MIT\nXDRIVER_XF86_VIDEO_NV_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_NV_DEPENDENCIES = xserver_xorg-server xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-openchrome/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_OPENCHROME\n\tbool \"xf86-video-openchrome\"\n\tdepends on BR2_PACKAGE_MESA3D_DRI_DRIVER\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXCOMPOSITE\n\tselect BR2_PACKAGE_XLIB_LIBXVMC\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Openchrome, A free and Open Source video driver for the\n\t  VIA/S3G UniChrome and UniChrome Pro graphics chipsets.\n\n\t  https://www.freedesktop.org/wiki/Openchrome/\n\ncomment \"xf86-video-openchrome needs a DRI driver from mesa3d\"\n\tdepends on !BR2_PACKAGE_MESA3D_DRI_DRIVER\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2017-March/002781.html\nmd5 c87f164739729b00f7e1a9934420c22d  xf86-video-openchrome-0.6.0.tar.bz2\nsha1 2077181ded4d86e9cbe6d3e9b1245339692e848d  xf86-video-openchrome-0.6.0.tar.bz2\nsha256 da2975c6379358de52c1257710c67eb59139a7f0a1cd28d00cc64cc3e1c02f75  xf86-video-openchrome-0.6.0.tar.bz2\n# Locally computed\nsha256 1fde58bce5cff8c32e9a0a80bfa3e60213a2767954e30a367127d5afa2884ca2  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-openchrome\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_OPENCHROME_VERSION = 0.6.0\nXDRIVER_XF86_VIDEO_OPENCHROME_SOURCE = xf86-video-openchrome-$(XDRIVER_XF86_VIDEO_OPENCHROME_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_OPENCHROME_SITE = http://xorg.freedesktop.org/archive/individual/driver\nXDRIVER_XF86_VIDEO_OPENCHROME_LICENSE = MIT\nXDRIVER_XF86_VIDEO_OPENCHROME_LICENSE_FILES = COPYING\n\nXDRIVER_XF86_VIDEO_OPENCHROME_DEPENDENCIES = \\\n\txserver_xorg-server \\\n\tlibdrm \\\n\txlib_libX11 \\\n\txlib_libXcomposite \\\n\txlib_libXvMC \\\n\txorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-qxl/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_QXL\n\tbool \"xf86-video-qxl\"\n\tdepends on (BR2_i386 || BR2_x86_64)\n\tselect BR2_PACKAGE_LIBDRM if BR2_PACKAGE_HAS_UDEV # for KMS\n\tselect BR2_PACKAGE_LIBPCIACCESS\n\tselect BR2_PACKAGE_SPICE_PROTOCOL\n\tselect BR2_PACKAGE_XLIB_LIBXFONT2 if !BR2_PACKAGE_XLIB_LIBXFONT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  QEMU QXL paravirt video driver\n\n\t  http://www.spice-space.org/page/XorgQXL\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2016-December/002753.html\nsha256  b18682e04503c6326f7bf7190f3ee50a3d4d69758a2a3cc9af102a6b3f114c92  xf86-video-qxl-0.1.5.tar.bz2\n# Locally calculated\nsha256  83f3bf7be3fbf5e66174b8184bd837a6b44264f8e340126ea4d9e9ce956a1866  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-qxl\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_QXL_VERSION = 0.1.5\nXDRIVER_XF86_VIDEO_QXL_SOURCE = xf86-video-qxl-$(XDRIVER_XF86_VIDEO_QXL_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_QXL_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_QXL_LICENSE = MIT\nXDRIVER_XF86_VIDEO_QXL_LICENSE_FILES = COPYING\n\nXDRIVER_XF86_VIDEO_QXL_CONF_OPTS = \\\n\t--enable-xspice=no\n\nXDRIVER_XF86_VIDEO_QXL_DEPENDENCIES = \\\n\tlibpciaccess \\\n\tspice-protocol \\\n\txorgproto \\\n\txserver_xorg-server\n\n# configure doesn't look for drm headers in the appropiate place, so help it\n# libdrm is only useful with udev for KMS\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nXDRIVER_XF86_VIDEO_QXL_CONF_ENV += REQUIRED_MODULES=libdrm\nXDRIVER_XF86_VIDEO_QXL_DEPENDENCIES += libdrm\nelse\nXDRIVER_XF86_VIDEO_QXL_CONF_OPTS += --disable-kms\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFONT2),y)\nXDRIVER_XF86_VIDEO_QXL_DEPENDENCIES += xlib_libXfont2\nelse\nXDRIVER_XF86_VIDEO_QXL_DEPENDENCIES += xlib_libXfont\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-r128/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_R128\n\tbool \"xf86-video-r128\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  R128 video driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-October/002926.html\nmd5 105ebcfe1bac06fe84645ac3def91184  xf86-video-r128-6.12.0.tar.bz2\nsha1 7cfa41d386fa43b5d30299203e4845d8afba4899  xf86-video-r128-6.12.0.tar.bz2\nsha256 801c86882cbd2bbb3084d471dcc5cfee2c1754dcbfb4dc446676d58a6bd9e057  xf86-video-r128-6.12.0.tar.bz2\nsha512 0e667e2cfa8a87a00846361d86528c93754c403c812b66798953fa4c857b2143b2c4c44885da467e7f910d8cb910b69492cdcb6f25e2197bae6617364d152e38  xf86-video-r128-6.12.0.tar.bz2\n# Locally computed\nsha256 69f7c71859dc8f51aabdbe7a9ee915a480933eb81658f8af2bf4c918e65afe8b  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-r128\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_R128_VERSION = 6.12.0\nXDRIVER_XF86_VIDEO_R128_SOURCE = xf86-video-r128-$(XDRIVER_XF86_VIDEO_R128_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_R128_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_R128_LICENSE = MIT\nXDRIVER_XF86_VIDEO_R128_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_R128_DEPENDENCIES = xserver_xorg-server xorgproto\n\nifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)\nXDRIVER_XF86_VIDEO_R128_CONF_OPTS = --disable-dri\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-savage/0001-cross-compile.patch",
    "content": "--- a/configure.ac\t2008-05-21 16:04:23.000000000 -0400\n+++ b/configure.ac\t2008-06-23 11:41:50.000000000 -0400\n@@ -68,12 +68,18 @@ sdkdir=$(pkg-config --variable=sdkdir xo\n AC_HEADER_STDC\n \n if test \"$DRI\" != no; then\n-        AC_CHECK_FILE([${sdkdir}/dri.h],\n-                      [have_dri_h=\"yes\"], [have_dri_h=\"no\"])\n-        AC_CHECK_FILE([${sdkdir}/sarea.h],\n-                      [have_sarea_h=\"yes\"], [have_sarea_h=\"no\"])\n-        AC_CHECK_FILE([${sdkdir}/dristruct.h],\n-                      [have_dristruct_h=\"yes\"], [have_dristruct_h=\"no\"])\n+  \tif test \"$cross_compiling\" = \"no\" ; then\n+ \t\tAC_CHECK_FILE([${sdkdir}/dri.h],\n+                        [have_dri_h=\"yes\"], [have_dri_h=\"no\"])\n+ \t\tAC_CHECK_FILE([${sdkdir}/sarea.h],\n+                        [have_sarea_h=\"yes\"], [have_sarea_h=\"no\"])\n+ \t\tAC_CHECK_FILE([${sdkdir}/dristruct.h],\n+                        [have_dristruct_h=\"yes\"], [have_dristruct_h=\"no\"])\n+  \telse\n+  \t\thave_dri_h=\"yes\"\n+  \t\thave_sarea_h=\"yes\"\n+  \t\thave_dristruct_h=\"yes\"\n+  \tfi\n fi\n \n AC_MSG_CHECKING([whether to include DRI support])\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-savage/0002-xorg-xserver120.patch",
    "content": "Fix build with modular-xorg-server-1.20\n\nDownloaded from\nhttp://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/x11/xf86-video-savage/patches/patch-src_savage__driver.c?rev=1.3&content-type=text/x-cvsweb-markup\n\nPatch was sent upstream by Thomas Klausner <wiz@netbsd.org>:\nhttps://lists.x.org/archives/xorg-devel/2018-May/056952.html\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- a/src/savage_driver.c.orig\t2017-01-17 22:43:40.000000000 +0000\n+++ b/src/savage_driver.c\n@@ -2034,8 +2034,10 @@ static Bool SavagePreInit(ScrnInfoPtr pS\n     xf86DrvMsg(pScrn->scrnIndex, X_PROBED, \"Detected current MCLK value of %1.3f MHz\\n\",\n \t       mclk / 1000.0);\n \n+#if 0\n     pScrn->maxHValue = 2048 << 3;\t/* 11 bits of h_total 8-pixel units */\n     pScrn->maxVValue = 2048;\t\t/* 11 bits of v_total */\n+#endif\n     pScrn->virtualX = pScrn->display->virtualX;\n     pScrn->virtualY = pScrn->display->virtualY;\n \n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-savage/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_SAVAGE\n\tbool \"xf86-video-savage\"\n\tdepends on BR2_PACKAGE_MESA3D\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  S3 Savage video driver\n\ncomment \"xf86-video-savage needs mesa3d\"\n\tdepends on !BR2_PACKAGE_MESA3D\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2017-January/002760.html\nsha256  2c93c4db1f71e725dda0caee5821253129d4b52d7aa0fd720593e7769bceec86  xf86-video-savage-2.3.9.tar.bz2\n# Locally calculated\nsha256  611f4020815e3d5011a39a58f0958262715cd3becd9cb1ef14cc166fd84ec5a6  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-savage\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_SAVAGE_VERSION = 2.3.9\nXDRIVER_XF86_VIDEO_SAVAGE_SOURCE = xf86-video-savage-$(XDRIVER_XF86_VIDEO_SAVAGE_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_SAVAGE_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_SAVAGE_LICENSE = MIT\nXDRIVER_XF86_VIDEO_SAVAGE_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_SAVAGE_AUTORECONF = YES\nXDRIVER_XF86_VIDEO_SAVAGE_DEPENDENCIES = xserver_xorg-server libdrm xorgproto\n\nifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)\nXDRIVER_XF86_VIDEO_SAVAGE_CONF_OPTS = --disable-dri\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-siliconmotion/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_SILICONMOTION\n\tbool \"xf86-video-siliconmotion\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Silicon Motion video driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2017-January/002763.html\nsha256 d0f3c691e71108d27a061beb62bf78b36ec35bd755905692734dd68cfb3359bc  xf86-video-siliconmotion-1.7.9.tar.bz2\n# Locally calculated\nsha256 e1e3ce7ce1f63fff96444206e09c8490ad7a4af7457c81ea6cdee4f1fee1f960  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-siliconmotion\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_SILICONMOTION_VERSION = 1.7.9\nXDRIVER_XF86_VIDEO_SILICONMOTION_SOURCE = xf86-video-siliconmotion-$(XDRIVER_XF86_VIDEO_SILICONMOTION_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_SILICONMOTION_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_SILICONMOTION_LICENSE = MIT\nXDRIVER_XF86_VIDEO_SILICONMOTION_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_SILICONMOTION_DEPENDENCIES = xserver_xorg-server xorgproto\n\nXDRIVER_XF86_VIDEO_SILICONMOTION_CONF_OPTS = --disable-selective-werror\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-sis/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_SIS\n\tbool \"xf86-video-sis\"\n\tdepends on BR2_PACKAGE_MESA3D\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  SiS and XGI video driver\n\ncomment \"xf86-video-sis needs mesa3d\"\n\tdepends on !BR2_PACKAGE_MESA3D\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-December/003033.html\nmd5  b8ec9c21758043b1480f11baec296f5d  xf86-video-sis-0.12.0.tar.bz2\nsha1 d22f0d0081e222a62f9e788f5e73246c6d339f80  xf86-video-sis-0.12.0.tar.bz2\nsha256 119d3f17d53c862ec4bf891ed696a6f1d32cdf8bd11d944a9f0ad24625333a5b  xf86-video-sis-0.12.0.tar.bz2\nsha512 5aa101e5217f15667f2c94f7a76f4afcf47717b61f5d206ce65efe35dc3f674ca294f98ca8586971c6467f31decdd94d8255ebfc7dc220fac0179afc61995952  xf86-video-sis-0.12.0.tar.bz2\n# Locally computed\nsha256 e7958f9497a4daa3ae5aeaf885e4565520af2c540b6e4e04b52bf95d41d56c39  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-sis\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_SIS_VERSION = 0.12.0\nXDRIVER_XF86_VIDEO_SIS_SOURCE = xf86-video-sis-$(XDRIVER_XF86_VIDEO_SIS_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_SIS_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_SIS_LICENSE = MIT\nXDRIVER_XF86_VIDEO_SIS_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_SIS_DEPENDENCIES = xserver_xorg-server libdrm xorgproto\n\nifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)\nXDRIVER_XF86_VIDEO_SIS_CONF_OPTS += --disable-dri\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-tdfx/0001-cross.patch",
    "content": "--- xf86-video-tdfx-1.3.0/configure.ac.orig\t2007-06-10 21:01:54.000000000 +0200\n+++ xf86-video-tdfx-1.3.0/configure.ac\t2007-06-10 21:02:06.000000000 +0200\n@@ -67,13 +67,20 @@\n # Checks for header files.\n AC_HEADER_STDC\n \n-if test \"$DRI\" != no; then\n+if test \"x$DRI\" != xno; then\n+\tif test \"$cross_compiling\" = \"no\" ; then\n         AC_CHECK_FILE([${sdkdir}/dri.h],\n                       [have_dri_h=\"yes\"], [have_dri_h=\"no\"])\n         AC_CHECK_FILE([${sdkdir}/sarea.h],\n                       [have_sarea_h=\"yes\"], [have_sarea_h=\"no\"])\n         AC_CHECK_FILE([${sdkdir}/dristruct.h],\n                       [have_dristruct_h=\"yes\"], [have_dristruct_h=\"no\"])\n+\t\tAC_CHECK_HEADER\n+\telse\n+\t\thave_dri_h=\"yes\"\n+\t\thave_sarea_h=\"yes\"\n+\t\thave_dristruct_h=\"yes\"\n+\tfi\n fi\n \n AC_MSG_CHECKING([whether to include DRI support])\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-tdfx/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_TDFX\n\tbool \"xf86-video-tdfx\"\n\tdepends on BR2_PACKAGE_MESA3D\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  3Dfx video driver\n\ncomment \"xf86-video-tdfx needs mesa3d\"\n\tdepends on !BR2_PACKAGE_MESA3D\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-February/002944.html\nmd5 4697f0cc69ff1ff90bc770863c158d29  xf86-video-tdfx-1.5.0.tar.bz2\nsha1 8042dd0c2bc5a396b2cfeb5418b03059a089be25  xf86-video-tdfx-1.5.0.tar.bz2\nsha256 2f4580e1f66901dd578d6e1f73df8150fd4b8480eb0c9653d4c5d8e0f8e78561  xf86-video-tdfx-1.5.0.tar.bz2\nsha512 eca3359c7db56183a1cfcce7295e41ccc349005ee1cbcf75209f1e4e8e04e887ba511712ef35efc11c940713c8327b0b8ab8b6c86facf02062b3e84c0b1af5ff  xf86-video-tdfx-1.5.0.tar.bz2\n# Locally computed\nsha256 5bb3d3baff0b7bbef885215ca9c12a5be1a42c848c96601b699637557fbb41ec  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-tdfx\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_TDFX_VERSION = 1.5.0\nXDRIVER_XF86_VIDEO_TDFX_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_TDFX_SOURCE = xf86-video-tdfx-$(XDRIVER_XF86_VIDEO_TDFX_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_TDFX_LICENSE = MIT\nXDRIVER_XF86_VIDEO_TDFX_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_TDFX_AUTORECONF = YES\nXDRIVER_XF86_VIDEO_TDFX_DEPENDENCIES = \\\n\tlibdrm \\\n\txorgproto \\\n\txserver_xorg-server\n\nifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)\nXDRIVER_XF86_VIDEO_TDFX_CONF_OPTS = --disable-dri\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-tga/0001-mibstore.patch",
    "content": "From b7022db0559cd1b6cd3eb6b5abf6896a607b478d Mon Sep 17 00:00:00 2001\nFrom: Adam Jackson <ajax@redhat.com>\nDate: Tue, 25 Sep 2012 12:55:00 +0000\nSubject: Remove mibstore.h\n\nSigned-off-by: Adam Jackson <ajax@redhat.com>\n---\nFetch from:\nhttp://cgit.freedesktop.org/xorg/driver/xf86-video-tga/commit/?id=b7022db0559cd1b6cd3eb6b5abf6896a607b478d\n\nSigned-off-by: Bernd Kuhls <berndkuhls@hotmail.com>\n\ndiff --git a/src/tga_accel.c b/src/tga_accel.c\nindex 35af1a4..b414df5 100644\n--- a/src/tga_accel.c\n+++ b/src/tga_accel.c\n@@ -37,7 +37,6 @@\n #include \"xf86cmap.h\"\n #include \"mipointer.h\"\n \n-#include \"mibstore.h\"\n #include \"miline.h\"\n \n #include \"tga_regs.h\"\ndiff --git a/src/tga_driver.c b/src/tga_driver.c\nindex dd4f3e6..90d2660 100644\n--- a/src/tga_driver.c\n+++ b/src/tga_driver.c\n@@ -46,8 +46,6 @@\n \n /* software cursor */\n #include \"mipointer.h\"\n-/* backing store */\n-#include \"mibstore.h\"\n \n /*  #include \"mibank.h\" */\n /* colormap manipulation */\n@@ -1451,7 +1449,6 @@ TGAScreenInit(SCREEN_INIT_ARGS_DECL)\n     \n     fbPictureInit (pScreen, 0, 0);\n     \n-    miInitializeBackingStore(pScreen);\n     xf86SetBackingStore(pScreen);\n     xf86SetSilkenMouse(pScreen);\n \n--\ncgit v0.9.0.2-2-gbebe\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-tga/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_TGA\n\tbool \"xf86-video-tga\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org driver for tga cards\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-tga/xdriver_xf86-video-tga.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2012-July/002025.html\nsha256  2023818000200eb50a59476e36d59b07a361b110e73b1d9cc526beb669306131  xf86-video-tga-1.2.2.tar.bz2\n# Locally calculated\nsha256  92e36c6b7c99c8335e5823d53686e58ebd82ee8051a6360f60c8c0fb05745954  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-tga/xdriver_xf86-video-tga.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-tga\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_TGA_VERSION = 1.2.2\nXDRIVER_XF86_VIDEO_TGA_SOURCE = xf86-video-tga-$(XDRIVER_XF86_VIDEO_TGA_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_TGA_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_TGA_LICENSE = MIT\nXDRIVER_XF86_VIDEO_TGA_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_TGA_DEPENDENCIES = xserver_xorg-server xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-trident/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_TRIDENT\n\tbool \"xf86-video-trident\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Trident video driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2017-January/002762.html\nsha256 9e5119d974c3e2221994542d35e3a0b3426a441869ddd6dd08a84f324856ac3f  xf86-video-trident-1.3.8.tar.bz2\n# Locally calculated\nsha256 4f065198c49eac1513b915bc4478152c21119f31a97919a6ea8f3e1d10133d15  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-trident\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_TRIDENT_VERSION = 1.3.8\nXDRIVER_XF86_VIDEO_TRIDENT_SOURCE = xf86-video-trident-$(XDRIVER_XF86_VIDEO_TRIDENT_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_TRIDENT_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_TRIDENT_LICENSE = MIT\nXDRIVER_XF86_VIDEO_TRIDENT_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_TRIDENT_DEPENDENCIES = xserver_xorg-server xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-vesa/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_VESA\n\tbool \"xf86-video-vesa\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Generic VESA video driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2020-September/003060.html\nsha256  1f1624f3c73906801ad1bc98335a2cb5676a7a4d18e5374d9a1d18464e54c659  xf86-video-vesa-2.5.0.tar.bz2\nsha512  36fd921f54f33eb25966b5f9ea1e1b3e9009965c012c8b9c676686b472111719921b80cf62dafc746058878253e21f0ef341a2ff2d650df22ca1e35e81716a8b  xf86-video-vesa-2.5.0.tar.bz2\n# Locally computed\nsha256  bda49ba1e860501c20fd444423bc790f6da4f769561b69acc0cbe5abff9409b6  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-vesa\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_VESA_VERSION = 2.5.0\nXDRIVER_XF86_VIDEO_VESA_SOURCE = xf86-video-vesa-$(XDRIVER_XF86_VIDEO_VESA_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_VESA_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_VESA_LICENSE = MIT\nXDRIVER_XF86_VIDEO_VESA_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_VESA_DEPENDENCIES = xserver_xorg-server xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-vmware/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_VMWARE\n\tbool \"xf86-video-vmware\"\n\tdepends on BR2_PACKAGE_MESA3D\n\tdepends on BR2_i386 || BR2_x86_64\n\tselect BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  VMware SVGA video driver\n\ncomment \"xf86-video-vmware needs mesa3d\"\n\tdepends on !BR2_PACKAGE_MESA3D\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-May/002895.html\nmd5 08d66d062055080ff699ab4869726ea2  xf86-video-vmware-13.3.0.tar.bz2\nsha1 f01335fe6bdb507e749571bfcd69163aed97312a  xf86-video-vmware-13.3.0.tar.bz2\nsha256 47971924659e51666a757269ad941a059ef5afe7a47b5101c174a6022ac4066c  xf86-video-vmware-13.3.0.tar.bz2\nsha512 c318de893cae7b2b11e11c1b389ee47478b7c8d1f52c27099dbe453efec28f3e9da449217307a8c2251999eada66312f766996be1a6ead413b8b6dedc42c68ca  xf86-video-vmware-13.3.0.tar.bz2\n# Locally computed\nsha256 7e59b8ca2a161855a60561f27ada8dfdbb678733eacdb23423fff6d21f9ad43b  COPYING\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-vmware\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_VMWARE_VERSION = 13.3.0\nXDRIVER_XF86_VIDEO_VMWARE_SOURCE = xf86-video-vmware-$(XDRIVER_XF86_VIDEO_VMWARE_VERSION).tar.bz2\nXDRIVER_XF86_VIDEO_VMWARE_SITE = http://xorg.freedesktop.org/releases/individual/driver\nXDRIVER_XF86_VIDEO_VMWARE_LICENSE = MIT\nXDRIVER_XF86_VIDEO_VMWARE_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_VMWARE_DEPENDENCIES = mesa3d xserver_xorg-server xorgproto\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nXDRIVER_XF86_VIDEO_VMWARE_CONF_OPTS += --with-libudev\nXDRIVER_XF86_VIDEO_VMWARE_DEPENDENCIES += udev\nelse\nXDRIVER_XF86_VIDEO_VMWARE_CONF_OPTS += --without-libudev\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-voodoo/Config.in",
    "content": "config BR2_PACKAGE_XDRIVER_XF86_VIDEO_VOODOO\n\tbool \"xf86-video-voodoo\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  Voodoo video driver\n"
  },
  {
    "path": "package/x11r7/xdriver_xf86-video-voodoo/xdriver_xf86-video-voodoo.mk",
    "content": "################################################################################\n#\n# xdriver_xf86-video-voodoo\n#\n################################################################################\n\nXDRIVER_XF86_VIDEO_VOODOO_VERSION = 9172ae566a0e85313fc80ab62b4455393eefe593\nXDRIVER_XF86_VIDEO_VOODOO_SITE = git://anongit.freedesktop.org/xorg/driver/xf86-video-voodoo\nXDRIVER_XF86_VIDEO_VOODOO_LICENSE = MIT\nXDRIVER_XF86_VIDEO_VOODOO_LICENSE_FILES = COPYING\nXDRIVER_XF86_VIDEO_VOODOO_AUTORECONF = YES\nXDRIVER_XF86_VIDEO_VOODOO_DEPENDENCIES = xserver_xorg-server xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_encodings/Config.in",
    "content": "config BR2_PACKAGE_XFONT_ENCODINGS\n\tbool \"encodings\"\n\tselect BR2_PACKAGE_XUTIL_UTIL_MACROS\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_encodings/xfont_encodings.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-June/002998.html\nmd5 bbae4f247b88ccde0e85ed6a403da22a  encodings-1.0.5.tar.bz2\nsha1 7ffec76dba1cfd5040c5b43ccfae930c83ddf92e  encodings-1.0.5.tar.bz2\nsha256 bd96e16143a044b19e87f217cf6a3763a70c561d1076aad6f6d862ec41774a31  encodings-1.0.5.tar.bz2\nsha512 920e49f0b3545f181a1574ca3280ac9adef1e68fe27566c195dd7013f728d355c0d759132789357fcf8fa7391fcbe1e17edf2bd85aa5611df5a4d99740011008  encodings-1.0.5.tar.bz2\n# Locally computed\nsha256 13b4a0f9431f0fdd6ee36ed386e0b7d1eb429c5cb88df73353896078cbb5a137  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_encodings/xfont_encodings.mk",
    "content": "################################################################################\n#\n# xfont_encodings\n#\n################################################################################\n\nXFONT_ENCODINGS_VERSION = 1.0.5\nXFONT_ENCODINGS_SOURCE = encodings-$(XFONT_ENCODINGS_VERSION).tar.bz2\nXFONT_ENCODINGS_SITE = https://xorg.freedesktop.org/releases/individual/font\nXFONT_ENCODINGS_LICENSE = Public Domain\nXFONT_ENCODINGS_LICENSE_FILES = COPYING\n\nXFONT_ENCODINGS_DEPENDENCIES = host-xapp_mkfontscale host-pkgconf xutil_util-macros\nHOST_XFONT_ENCODINGS_DEPENDENCIES = \\\n\thost-xapp_mkfontscale host-pkgconf host-xutil_util-macros\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-100dpi/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_ADOBE_100DPI\n\tbool \"font-adobe-100dpi\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.hash",
    "content": "# locally computed\nsha256  b2c08433eab5cb202470aa9f779efefce8d9cab2534f34f3aa4a31d05671c054  font-adobe-100dpi-1.0.3.tar.bz2\nsha256  bf6d862672b4fcc86f3f38bc138ad44e52d52207dd8689b8d3701630fc331194  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.mk",
    "content": "################################################################################\n#\n# xfont_font-adobe-100dpi\n#\n################################################################################\n\nXFONT_FONT_ADOBE_100DPI_VERSION = 1.0.3\nXFONT_FONT_ADOBE_100DPI_SOURCE = font-adobe-100dpi-$(XFONT_FONT_ADOBE_100DPI_VERSION).tar.bz2\nXFONT_FONT_ADOBE_100DPI_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_ADOBE_100DPI_LICENSE = MIT\nXFONT_FONT_ADOBE_100DPI_LICENSE_FILES = COPYING\n\nXFONT_FONT_ADOBE_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_ADOBE_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_ADOBE_100DPI_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-75dpi/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_ADOBE_75DPI\n\tbool \"font-adobe-75dpi\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.hash",
    "content": "# locally computed\nsha256  c6024a1e4a1e65f413f994dd08b734efd393ce0a502eb465deb77b9a36db4d09  font-adobe-75dpi-1.0.3.tar.bz2\nsha256  bf6d862672b4fcc86f3f38bc138ad44e52d52207dd8689b8d3701630fc331194  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.mk",
    "content": "################################################################################\n#\n# xfont_font-adobe-75dpi\n#\n################################################################################\n\nXFONT_FONT_ADOBE_75DPI_VERSION = 1.0.3\nXFONT_FONT_ADOBE_75DPI_SOURCE = font-adobe-75dpi-$(XFONT_FONT_ADOBE_75DPI_VERSION).tar.bz2\nXFONT_FONT_ADOBE_75DPI_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_ADOBE_75DPI_LICENSE = MIT\nXFONT_FONT_ADOBE_75DPI_LICENSE_FILES = COPYING\n\nXFONT_FONT_ADOBE_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_ADOBE_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_ADOBE_75DPI_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_100DPI\n\tbool \"font-adobe-utopia-100dpi\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.hash",
    "content": "# locally computed\nsha256  d16f5e3f227cc6dd07a160a71f443559682dbc35f1c056a5385085aaec4fada5  font-adobe-utopia-100dpi-1.0.4.tar.bz2\nsha256  234c2a8109afa8034c787dbf69696a9bdd374914aadf937d2a103831d95c1867  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.mk",
    "content": "################################################################################\n#\n# xfont_font-adobe-utopia-100dpi\n#\n################################################################################\n\nXFONT_FONT_ADOBE_UTOPIA_100DPI_VERSION = 1.0.4\nXFONT_FONT_ADOBE_UTOPIA_100DPI_SOURCE = font-adobe-utopia-100dpi-$(XFONT_FONT_ADOBE_UTOPIA_100DPI_VERSION).tar.bz2\nXFONT_FONT_ADOBE_UTOPIA_100DPI_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_ADOBE_UTOPIA_100DPI_LICENSE = Adobe License (no modification allowed)\nXFONT_FONT_ADOBE_UTOPIA_100DPI_LICENSE_FILES = COPYING\n\nXFONT_FONT_ADOBE_UTOPIA_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_ADOBE_UTOPIA_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_ADOBE_UTOPIA_100DPI_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_75DPI\n\tbool \"font-adobe-utopia-75dpi\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.hash",
    "content": "# locally computed\nsha256  8732719c61f3661c8bad63804ebfd54fc7de21ab848e9a26a19b1778ef8b5c94  font-adobe-utopia-75dpi-1.0.4.tar.bz2\nsha256  234c2a8109afa8034c787dbf69696a9bdd374914aadf937d2a103831d95c1867  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.mk",
    "content": "################################################################################\n#\n# xfont_font-adobe-utopia-75dpi\n#\n################################################################################\n\nXFONT_FONT_ADOBE_UTOPIA_75DPI_VERSION = 1.0.4\nXFONT_FONT_ADOBE_UTOPIA_75DPI_SOURCE = font-adobe-utopia-75dpi-$(XFONT_FONT_ADOBE_UTOPIA_75DPI_VERSION).tar.bz2\nXFONT_FONT_ADOBE_UTOPIA_75DPI_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_ADOBE_UTOPIA_75DPI_LICENSE = Adobe License (no modification allowed)\nXFONT_FONT_ADOBE_UTOPIA_75DPI_LICENSE_FILES = COPYING\n\nXFONT_FONT_ADOBE_UTOPIA_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_ADOBE_UTOPIA_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_ADOBE_UTOPIA_75DPI_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-utopia-type1/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_TYPE1\n\tbool \"font-adobe-utopia-type1\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.hash",
    "content": "# locally computed\nsha256  979435105f897a70f8993fa02c8362160b0513366c2ab896965416f96dbb8077  font-adobe-utopia-type1-1.0.4.tar.bz2\nsha256  234c2a8109afa8034c787dbf69696a9bdd374914aadf937d2a103831d95c1867  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.mk",
    "content": "################################################################################\n#\n# xfont_font-adobe-utopia-type1\n#\n################################################################################\n\nXFONT_FONT_ADOBE_UTOPIA_TYPE1_VERSION = 1.0.4\nXFONT_FONT_ADOBE_UTOPIA_TYPE1_SOURCE = font-adobe-utopia-type1-$(XFONT_FONT_ADOBE_UTOPIA_TYPE1_VERSION).tar.bz2\nXFONT_FONT_ADOBE_UTOPIA_TYPE1_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_ADOBE_UTOPIA_TYPE1_LICENSE = Adobe License (no modification allowed)\nXFONT_FONT_ADOBE_UTOPIA_TYPE1_LICENSE_FILES = COPYING\n\nXFONT_FONT_ADOBE_UTOPIA_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_ADOBE_UTOPIA_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_ADOBE_UTOPIA_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-alias/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_ALIAS\n\tbool \"font-alias\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-alias/xfont_font-alias.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2020-August/003054.html\nsha256  f3111ae8bf2e980f5f56af400e8eefe5fc9f4207f4a412ea79637fd66c945276  font-alias-1.0.4.tar.bz2\nsha512  c67ac2ee344a601fcc09471580214b30c3fd6acc4800702840de44f0733e6d18b3faeec2fa3f4e2314025cc1724d7d6796ebaf620398fe350710182fd2c4b07d  font-alias-1.0.4.tar.bz2\n# locally computed\nsha256  bdba5452fc080c0f1a56d66978ac4150d1d1a00a9cc0248bba4f0b76c80ad47e  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-alias/xfont_font-alias.mk",
    "content": "################################################################################\n#\n# xfont_font-alias\n#\n################################################################################\n\nXFONT_FONT_ALIAS_VERSION = 1.0.4\nXFONT_FONT_ALIAS_SOURCE = font-alias-$(XFONT_FONT_ALIAS_VERSION).tar.bz2\nXFONT_FONT_ALIAS_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_ALIAS_LICENSE = MIT\nXFONT_FONT_ALIAS_LICENSE_FILES = COPYING\n\nXFONT_FONT_ALIAS_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_ALIAS_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_ALIAS_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-arabic-misc/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_ARABIC_MISC\n\tbool \"font-arabic-misc\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.hash",
    "content": "# locally computed\nsha256  505d9b12a7093389e67a925dfda6346bde26d114c67f0cdca7aeda6e5d3344f4  font-arabic-misc-1.0.3.tar.bz2\nsha256  192b677a887c20f9671cc357cd5ea7bae586003d61c1f8f6e164e8f5530abf57  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.mk",
    "content": "################################################################################\n#\n# xfont_font-arabic-misc\n#\n################################################################################\n\nXFONT_FONT_ARABIC_MISC_VERSION = 1.0.3\nXFONT_FONT_ARABIC_MISC_SOURCE = font-arabic-misc-$(XFONT_FONT_ARABIC_MISC_VERSION).tar.bz2\nXFONT_FONT_ARABIC_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_ARABIC_MISC_LICENSE = MIT\nXFONT_FONT_ARABIC_MISC_LICENSE_FILES = COPYING\n\nXFONT_FONT_ARABIC_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_ARABIC_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_ARABIC_MISC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-100dpi/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_BH_100DPI\n\tbool \"font-bh-100dpi\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.hash",
    "content": "# locally computed\nsha256  23c07162708e4b79eb33095c8bfa62c783717a9431254bbf44863734ea239481  font-bh-100dpi-1.0.3.tar.bz2\nsha256  888fd79d2c7e6332559d661c62f7a50f92fc5842e6ff0e0bd4c59b0083dabce9  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.mk",
    "content": "################################################################################\n#\n# xfont_font-bh-100dpi\n#\n################################################################################\n\nXFONT_FONT_BH_100DPI_VERSION = 1.0.3\nXFONT_FONT_BH_100DPI_SOURCE = font-bh-100dpi-$(XFONT_FONT_BH_100DPI_VERSION).tar.bz2\nXFONT_FONT_BH_100DPI_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_BH_100DPI_LICENSE = Bigelow & Holmes License (no modification)\nXFONT_FONT_BH_100DPI_LICENSE_FILES = COPYING\n\nXFONT_FONT_BH_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_BH_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_BH_100DPI_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-75dpi/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_BH_75DPI\n\tbool \"font-bh-75dpi\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.hash",
    "content": "# locally computed\nsha256  3486aa51ac92c646a448fe899c5c3dae0024b1fef724d5100d52640d1cac721c  font-bh-75dpi-1.0.3.tar.bz2\nsha256  888fd79d2c7e6332559d661c62f7a50f92fc5842e6ff0e0bd4c59b0083dabce9  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.mk",
    "content": "################################################################################\n#\n# xfont_font-bh-75dpi\n#\n################################################################################\n\nXFONT_FONT_BH_75DPI_VERSION = 1.0.3\nXFONT_FONT_BH_75DPI_SOURCE = font-bh-75dpi-$(XFONT_FONT_BH_75DPI_VERSION).tar.bz2\nXFONT_FONT_BH_75DPI_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_BH_75DPI_LICENSE = Bigelow & Holmes License (no modification)\nXFONT_FONT_BH_75DPI_LICENSE_FILES = COPYING\n\nXFONT_FONT_BH_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_BH_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_BH_75DPI_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI\n\tbool \"font-bh-lucidatypewriter-100dpi\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.hash",
    "content": "# locally computed\nsha256  62a83363c2536095fda49d260d21e0847675676e4e3415054064cbdffa641fbb  font-bh-lucidatypewriter-100dpi-1.0.3.tar.bz2\nsha256  9428a98add4fada4c98e031ae0f29d27f8b15a2c8c6e8830591a4c18ea26a6cd  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.mk",
    "content": "################################################################################\n#\n# xfont_font-bh-lucidatypewriter-100dpi\n#\n################################################################################\n\nXFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_VERSION = 1.0.3\nXFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_SOURCE = font-bh-lucidatypewriter-100dpi-$(XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_VERSION).tar.bz2\nXFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_LICENSE = Bigelow & Holmes License (no modification)\nXFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_LICENSE_FILES = COPYING\n\nXFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI\n\tbool \"font-bh-lucidatypewriter-75dpi\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.hash",
    "content": "# locally computed\nsha256  4ac16afbe205480cc5572e2977ea63488c543d05be0ea8e5a94c845a6eebcb31  font-bh-lucidatypewriter-75dpi-1.0.3.tar.bz2\nsha256  9428a98add4fada4c98e031ae0f29d27f8b15a2c8c6e8830591a4c18ea26a6cd  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.mk",
    "content": "################################################################################\n#\n# xfont_font-bh-lucidatypewriter-75dpi\n#\n################################################################################\n\nXFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_VERSION = 1.0.3\nXFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_SOURCE = font-bh-lucidatypewriter-75dpi-$(XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_VERSION).tar.bz2\nXFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_LICENSE = Bigelow & Holmes License (no modification)\nXFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_LICENSE_FILES = COPYING\n\nXFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-ttf/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_BH_TTF\n\tbool \"font-bh-ttf\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2010-November/001537.html\nsha1\tf42ebd527096011040a312e0f9cdf78d64177419\tfont-bh-ttf-1.0.3.tar.bz2\n# Locally computed\nsha256  27d47d50006773f1c0bd97661252ae27bb8cfd6951f253bd9d3ef81ed1243934  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.mk",
    "content": "################################################################################\n#\n# xfont_font-bh-ttf\n#\n################################################################################\n\nXFONT_FONT_BH_TTF_VERSION = 1.0.3\nXFONT_FONT_BH_TTF_SOURCE = font-bh-ttf-$(XFONT_FONT_BH_TTF_VERSION).tar.bz2\nXFONT_FONT_BH_TTF_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_BH_TTF_LICENSE = Bigelow & Holmes License (no modification)\nXFONT_FONT_BH_TTF_LICENSE_FILES = COPYING\n\nXFONT_FONT_BH_TTF_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_BH_TTF_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_BH_TTF_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-type1/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_BH_TYPE1\n\tbool \"font-bh-type1\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.hash",
    "content": "# locally computed\nsha256  761455a297486f3927a85d919b5c948d1d324181d4bea6c95d542504b68a63c1  font-bh-type1-1.0.3.tar.bz2\nsha256  27d47d50006773f1c0bd97661252ae27bb8cfd6951f253bd9d3ef81ed1243934  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.mk",
    "content": "################################################################################\n#\n# xfont_font-bh-type1\n#\n################################################################################\n\nXFONT_FONT_BH_TYPE1_VERSION = 1.0.3\nXFONT_FONT_BH_TYPE1_SOURCE = font-bh-type1-$(XFONT_FONT_BH_TYPE1_VERSION).tar.bz2\nXFONT_FONT_BH_TYPE1_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_BH_TYPE1_LICENSE = Bigelow & Holmes License (no modification)\nXFONT_FONT_BH_TYPE1_LICENSE_FILES = COPYING\n\nXFONT_FONT_BH_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_BH_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_BH_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-bitstream-100dpi/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_BITSTREAM_100DPI\n\tbool \"font-bitstream-100dpi\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.hash",
    "content": "# locally computed\nsha256  ebe0d7444e3d7c8da7642055ac2206f0190ee060700d99cd876f8fc9964cb6ce  font-bitstream-100dpi-1.0.3.tar.bz2\nsha256  6faf32f092c2b92f3f99e0d63db9d802b11b4dd5aa0ce991f107a398d7f1ae80  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.mk",
    "content": "################################################################################\n#\n# xfont_font-bitstream-100dpi\n#\n################################################################################\n\nXFONT_FONT_BITSTREAM_100DPI_VERSION = 1.0.3\nXFONT_FONT_BITSTREAM_100DPI_SOURCE = font-bitstream-100dpi-$(XFONT_FONT_BITSTREAM_100DPI_VERSION).tar.bz2\nXFONT_FONT_BITSTREAM_100DPI_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_BITSTREAM_100DPI_LICENSE = MIT\nXFONT_FONT_BITSTREAM_100DPI_LICENSE_FILES = COPYING\n\nXFONT_FONT_BITSTREAM_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_BITSTREAM_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_BITSTREAM_100DPI_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-bitstream-75dpi/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_BITSTREAM_75DPI\n\tbool \"font-bitstream-75dpi\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.hash",
    "content": "# locally computed\nsha256  ba3f5e4610c07bd5859881660753ec6d75d179f26fc967aa776dbb3d5d5cf48e  font-bitstream-75dpi-1.0.3.tar.bz2\nsha256  6faf32f092c2b92f3f99e0d63db9d802b11b4dd5aa0ce991f107a398d7f1ae80  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.mk",
    "content": "################################################################################\n#\n# xfont_font-bitstream-75dpi\n#\n################################################################################\n\nXFONT_FONT_BITSTREAM_75DPI_VERSION = 1.0.3\nXFONT_FONT_BITSTREAM_75DPI_SOURCE = font-bitstream-75dpi-$(XFONT_FONT_BITSTREAM_75DPI_VERSION).tar.bz2\nXFONT_FONT_BITSTREAM_75DPI_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_BITSTREAM_75DPI_LICENSE = MIT\nXFONT_FONT_BITSTREAM_75DPI_LICENSE_FILES = COPYING\n\nXFONT_FONT_BITSTREAM_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_BITSTREAM_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_BITSTREAM_75DPI_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-bitstream-type1/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_BITSTREAM_TYPE1\n\tbool \"font-bitstream-type1\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.hash",
    "content": "# locally computed\nsha256  c6ea0569adad2c577f140328dc3302e729cb1b1ea90cd0025caf380625f8a688  font-bitstream-type1-1.0.3.tar.bz2\nsha256  ecad5afdbd1308634896744a4c962361e9eca73e7d9969bb3aad94533c66d046  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.mk",
    "content": "################################################################################\n#\n# xfont_font-bitstream-type1\n#\n################################################################################\n\nXFONT_FONT_BITSTREAM_TYPE1_VERSION = 1.0.3\nXFONT_FONT_BITSTREAM_TYPE1_SOURCE = font-bitstream-type1-$(XFONT_FONT_BITSTREAM_TYPE1_VERSION).tar.bz2\nXFONT_FONT_BITSTREAM_TYPE1_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_BITSTREAM_TYPE1_LICENSE = MIT\nXFONT_FONT_BITSTREAM_TYPE1_LICENSE_FILES = COPYING\n\nXFONT_FONT_BITSTREAM_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_BITSTREAM_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_BITSTREAM_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-cronyx-cyrillic/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_CRONYX_CYRILLIC\n\tbool \"font-cronyx-cyrillic\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.hash",
    "content": "# locally computed\nsha256  6e8631936157677c77ba032b5c7b1fb3cb2ee872dbcea0444f12cd602cd9212a  font-cronyx-cyrillic-1.0.3.tar.bz2\nsha256  857fa9f8d12bd7ce7fb235393d775dd5e0b5130fac7a88fdea9156d75b609402  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.mk",
    "content": "################################################################################\n#\n# xfont_font-cronyx-cyrillic\n#\n################################################################################\n\nXFONT_FONT_CRONYX_CYRILLIC_VERSION = 1.0.3\nXFONT_FONT_CRONYX_CYRILLIC_SOURCE = font-cronyx-cyrillic-$(XFONT_FONT_CRONYX_CYRILLIC_VERSION).tar.bz2\nXFONT_FONT_CRONYX_CYRILLIC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_CRONYX_CYRILLIC_LICENSE = MIT\nXFONT_FONT_CRONYX_CYRILLIC_LICENSE_FILES = COPYING\n\nXFONT_FONT_CRONYX_CYRILLIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_CRONYX_CYRILLIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_CRONYX_CYRILLIC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-cursor-misc/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_CURSOR_MISC\n\tbool \"font-cursor-misc\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.hash",
    "content": "# locally computed\nsha256  17363eb35eece2e08144da5f060c70103b59d0972b4f4d77fd84c9a7a2dba635  font-cursor-misc-1.0.3.tar.bz2\nsha256  c22415fb2144d7298e995dbeee2eb120822d653c61ae43c64fa0fda2cc3ca3a0  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.mk",
    "content": "################################################################################\n#\n# xfont_font-cursor-misc\n#\n################################################################################\n\nXFONT_FONT_CURSOR_MISC_VERSION = 1.0.3\nXFONT_FONT_CURSOR_MISC_SOURCE = font-cursor-misc-$(XFONT_FONT_CURSOR_MISC_VERSION).tar.bz2\nXFONT_FONT_CURSOR_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_CURSOR_MISC_LICENSE = unencumbered\nXFONT_FONT_CURSOR_MISC_LICENSE_FILES = COPYING\n\nXFONT_FONT_CURSOR_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_CURSOR_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_CURSOR_MISC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-daewoo-misc/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_DAEWOO_MISC\n\tbool \"font-daewoo-misc\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.hash",
    "content": "# locally computed\nsha256  bc65de70bee12698caa95b523d3b652c056347e17b68cc8b5d6bbdff235c4be8  font-daewoo-misc-1.0.3.tar.bz2\n"
  },
  {
    "path": "package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.mk",
    "content": "################################################################################\n#\n# xfont_font-daewoo-misc\n#\n################################################################################\n\nXFONT_FONT_DAEWOO_MISC_VERSION = 1.0.3\nXFONT_FONT_DAEWOO_MISC_SOURCE = font-daewoo-misc-$(XFONT_FONT_DAEWOO_MISC_VERSION).tar.bz2\nXFONT_FONT_DAEWOO_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_DAEWOO_MISC_LICENSE_FILES = COPYING\n\nXFONT_FONT_DAEWOO_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_DAEWOO_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_DAEWOO_MISC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-dec-misc/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_DEC_MISC\n\tbool \"font-dec-misc\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.hash",
    "content": "# locally computed\nsha256  e19ddf8b5f8de914d81675358fdfe37762e9ce524887cc983adef34f2850ff7b  font-dec-misc-1.0.3.tar.bz2\nsha256  bf4d44be4b5eb66c53bf5f7eb2d9d4817fb937788b37ed6ceda1876fdb964817  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.mk",
    "content": "################################################################################\n#\n# xfont_font-dec-misc\n#\n################################################################################\n\nXFONT_FONT_DEC_MISC_VERSION = 1.0.3\nXFONT_FONT_DEC_MISC_SOURCE = font-dec-misc-$(XFONT_FONT_DEC_MISC_VERSION).tar.bz2\nXFONT_FONT_DEC_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_DEC_MISC_LICENSE = MIT\nXFONT_FONT_DEC_MISC_LICENSE_FILES = COPYING\n\nXFONT_FONT_DEC_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_DEC_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_DEC_MISC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-ibm-type1/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_IBM_TYPE1\n\tbool \"font-ibm-type1\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.hash",
    "content": "# locally computed\nsha256  fddb28d3db5a07f4b4ca15388488a9680a10e1367a18f358f903b2a608a5d2df  font-ibm-type1-1.0.3.tar.bz2\nsha256  fc0fd4df7ac7ac7f9b1ff3a221f28c52edea4506dc4c84f1869a3f4281360ca1  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.mk",
    "content": "################################################################################\n#\n# xfont_font-ibm-type1\n#\n################################################################################\n\nXFONT_FONT_IBM_TYPE1_VERSION = 1.0.3\nXFONT_FONT_IBM_TYPE1_SOURCE = font-ibm-type1-$(XFONT_FONT_IBM_TYPE1_VERSION).tar.bz2\nXFONT_FONT_IBM_TYPE1_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_IBM_TYPE1_LICENSE = IBM/MIT X Consortium Courier Typefont agreement (no modification)\nXFONT_FONT_IBM_TYPE1_LICENSE_FILES = COPYING\n\nXFONT_FONT_IBM_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_IBM_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_IBM_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-isas-misc/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_ISAS_MISC\n\tbool \"font-isas-misc\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.hash",
    "content": "# locally computed\nsha256  5824ab4b485951107dd245b8f7717d2822f1a6dbf6cea98f1ac7f49905c0a867  font-isas-misc-1.0.3.tar.bz2\nsha256  32d5d082b8186051bbe75ea9cbedc646830217ca931b1b7a1e534a828c94e839  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.mk",
    "content": "################################################################################\n#\n# xfont_font-isas-misc\n#\n################################################################################\n\nXFONT_FONT_ISAS_MISC_VERSION = 1.0.3\nXFONT_FONT_ISAS_MISC_SOURCE = font-isas-misc-$(XFONT_FONT_ISAS_MISC_VERSION).tar.bz2\nXFONT_FONT_ISAS_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_ISAS_MISC_LICENSE = MIT\nXFONT_FONT_ISAS_MISC_LICENSE_FILES = COPYING\n\nXFONT_FONT_ISAS_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_ISAS_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_ISAS_MISC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-jis-misc/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_JIS_MISC\n\tbool \"font-jis-misc\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.hash",
    "content": "# locally computed\nsha256  2b18ce10b367ebafe95a17de799b6db9a24e2337188d124adaf68af05b1fac65  font-jis-misc-1.0.3.tar.bz2\n"
  },
  {
    "path": "package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.mk",
    "content": "################################################################################\n#\n# xfont_font-jis-misc\n#\n################################################################################\n\nXFONT_FONT_JIS_MISC_VERSION = 1.0.3\nXFONT_FONT_JIS_MISC_SOURCE = font-jis-misc-$(XFONT_FONT_JIS_MISC_VERSION).tar.bz2\nXFONT_FONT_JIS_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_JIS_MISC_LICENSE_FILES = COPYING\n\nXFONT_FONT_JIS_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_JIS_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_JIS_MISC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-micro-misc/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_MICRO_MISC\n\tbool \"font-micro-misc\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.hash",
    "content": "# locally computed\nsha256  9a3381c10f32d9511f0ad4179df395914c50779103c16cddf7017f5220ed8db6  font-micro-misc-1.0.3.tar.bz2\nsha256  1711d038bca0efb51b5114e902412019d1c21531882866b1a6908c6386268cfb  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.mk",
    "content": "################################################################################\n#\n# xfont_font-micro-misc\n#\n################################################################################\n\nXFONT_FONT_MICRO_MISC_VERSION = 1.0.3\nXFONT_FONT_MICRO_MISC_SOURCE = font-micro-misc-$(XFONT_FONT_MICRO_MISC_VERSION).tar.bz2\nXFONT_FONT_MICRO_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_MICRO_MISC_LICENSE = Public Domain\nXFONT_FONT_MICRO_MISC_LICENSE_FILES = COPYING\n\nXFONT_FONT_MICRO_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_MICRO_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_MICRO_MISC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-misc-cyrillic/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC\n\tbool \"font-misc-cyrillic\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.hash",
    "content": "# locally computed\nsha256  e40fe3e3323c62b738550795457ad555c70c008aa91b5912dfd46f8e745f5e60  font-misc-cyrillic-1.0.3.tar.bz2\nsha256  8765722448e0ca6ce113d0406554c40224f74abfc005f4b2ef927567349f1529  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.mk",
    "content": "################################################################################\n#\n# xfont_font-misc-cyrillic\n#\n################################################################################\n\nXFONT_FONT_MISC_CYRILLIC_VERSION = 1.0.3\nXFONT_FONT_MISC_CYRILLIC_SOURCE = font-misc-cyrillic-$(XFONT_FONT_MISC_CYRILLIC_VERSION).tar.bz2\nXFONT_FONT_MISC_CYRILLIC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_MISC_CYRILLIC_LICENSE = MIT / Public Domain\nXFONT_FONT_MISC_CYRILLIC_LICENSE_FILES = COPYING\n\nXFONT_FONT_MISC_CYRILLIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_MISC_CYRILLIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_MISC_CYRILLIC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-misc-ethiopic/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_MISC_ETHIOPIC\n\tbool \"font-misc-ethiopic\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2020-August/003055.html\nsha256  698c0f6ddf9ca482250bdafa08293893148393bb9cb23e0a9ca313c6dbfc4ae0  font-misc-ethiopic-1.0.4.tar.bz2\nsha512  4fed9ff3782746898c56dac199e9ca89356f4967779937049b9ff4ffad202317c023859f92d44b371dfa5485d5368ccad648e64b12cde0ed21f7d4aee5affcd5  font-misc-ethiopic-1.0.4.tar.bz2\n# locally computed\nsha256  94835f274f1ddad34f8fd3a06b2c493222a68e4094f4097000d101f22ee0d0d5  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.mk",
    "content": "################################################################################\n#\n# xfont_font-misc-ethiopic\n#\n################################################################################\n\nXFONT_FONT_MISC_ETHIOPIC_VERSION = 1.0.4\nXFONT_FONT_MISC_ETHIOPIC_SOURCE = font-misc-ethiopic-$(XFONT_FONT_MISC_ETHIOPIC_VERSION).tar.bz2\nXFONT_FONT_MISC_ETHIOPIC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_MISC_ETHIOPIC_LICENSE = MIT\nXFONT_FONT_MISC_ETHIOPIC_LICENSE_FILES = COPYING\n\nXFONT_FONT_MISC_ETHIOPIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_MISC_ETHIOPIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_MISC_ETHIOPIC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-misc-meltho/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_MISC_MELTHO\n\tbool \"font-misc-meltho\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.hash",
    "content": "# locally computed\nsha256  3721323f13855cf7ca609115a1f7b182491e9b2b9c6e01eb1a2c7f8edd480791  font-misc-meltho-1.0.3.tar.bz2\nsha256  6a02b45e4877b9df8c1bdaa21e1e8fba86d85e3be4c90f2791183a501e0cbd25  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.mk",
    "content": "################################################################################\n#\n# xfont_font-misc-meltho\n#\n################################################################################\n\nXFONT_FONT_MISC_MELTHO_VERSION = 1.0.3\nXFONT_FONT_MISC_MELTHO_SOURCE = font-misc-meltho-$(XFONT_FONT_MISC_MELTHO_VERSION).tar.bz2\nXFONT_FONT_MISC_MELTHO_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_MISC_MELTHO_LICENSE = Meltho License\nXFONT_FONT_MISC_MELTHO_LICENSE_FILES = COPYING\n\nXFONT_FONT_MISC_MELTHO_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_MISC_MELTHO_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_MISC_MELTHO_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-misc-misc/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_MISC_MISC\n\tbool \"font-misc-misc\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.hash",
    "content": "# locally computed\nsha256  b8e77940e4e1769dc47ef1805918d8c9be37c708735832a07204258bacc11794  font-misc-misc-1.1.2.tar.bz2\nsha256  1711d038bca0efb51b5114e902412019d1c21531882866b1a6908c6386268cfb  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.mk",
    "content": "################################################################################\n#\n# xfont_font-misc-misc\n#\n################################################################################\n\nXFONT_FONT_MISC_MISC_VERSION = 1.1.2\nXFONT_FONT_MISC_MISC_SOURCE = font-misc-misc-$(XFONT_FONT_MISC_MISC_VERSION).tar.bz2\nXFONT_FONT_MISC_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_MISC_MISC_LICENSE = Public Domain\nXFONT_FONT_MISC_MISC_LICENSE_FILES = COPYING\n\nXFONT_FONT_MISC_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_MISC_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_MISC_MISC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-mutt-misc/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_MUTT_MISC\n\tbool \"font-mutt-misc\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.hash",
    "content": "# locally computed\nsha256  bd5f7adb34367c197773a9801df5bce7b019664941900b2a31fbfe1ff2830f8f  font-mutt-misc-1.0.3.tar.bz2\nsha256  81d42a6eeaf3ac2fcc1e1408fb6e2039d1162ca85d4abaf75e3daddcb250e4ff  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.mk",
    "content": "################################################################################\n#\n# xfont_font-mutt-misc\n#\n################################################################################\n\nXFONT_FONT_MUTT_MISC_VERSION = 1.0.3\nXFONT_FONT_MUTT_MISC_SOURCE = font-mutt-misc-$(XFONT_FONT_MUTT_MISC_VERSION).tar.bz2\nXFONT_FONT_MUTT_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_MUTT_MISC_LICENSE = MIT\nXFONT_FONT_MUTT_MISC_LICENSE_FILES = COPYING\n\nXFONT_FONT_MUTT_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_MUTT_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_MUTT_MISC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-schumacher-misc/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_SCHUMACHER_MISC\n\tbool \"font-schumacher-misc\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.hash",
    "content": "# locally computed\nsha256  e444028656e0767e2eddc6d9aca462b16a2be75a47244dbc199b2c44eca87e5a  font-schumacher-misc-1.1.2.tar.bz2\nsha256  4e2b9933887950acad3a780dce91c71770c8887f132bcd0c2ba6146cdc372407  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.mk",
    "content": "################################################################################\n#\n# xfont_font-schumacher-misc\n#\n################################################################################\n\nXFONT_FONT_SCHUMACHER_MISC_VERSION = 1.1.2\nXFONT_FONT_SCHUMACHER_MISC_SOURCE = font-schumacher-misc-$(XFONT_FONT_SCHUMACHER_MISC_VERSION).tar.bz2\nXFONT_FONT_SCHUMACHER_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_SCHUMACHER_MISC_LICENSE = MIT\nXFONT_FONT_SCHUMACHER_MISC_LICENSE_FILES = COPYING\n\nXFONT_FONT_SCHUMACHER_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_SCHUMACHER_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_SCHUMACHER_MISC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-screen-cyrillic/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_SCREEN_CYRILLIC\n\tbool \"font-screen-cyrillic\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.hash",
    "content": "# From http://www.x.org/archive/current/src/everything/CHECKSUMS\nsha256  824231e8dffe15299454e47259f29d98001c9cf8ad3d6b5171399e4d71705e79  font-screen-cyrillic-1.0.4.tar.bz2\n# Locally computed\nsha256  5234cbcbdcc9865ce2b576b5f67e77e40ccdc1aa01e6528bea5a17784934b894  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.mk",
    "content": "################################################################################\n#\n# xfont_font-screen-cyrillic\n#\n################################################################################\n\nXFONT_FONT_SCREEN_CYRILLIC_VERSION = 1.0.4\nXFONT_FONT_SCREEN_CYRILLIC_SOURCE = font-screen-cyrillic-$(XFONT_FONT_SCREEN_CYRILLIC_VERSION).tar.bz2\nXFONT_FONT_SCREEN_CYRILLIC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_SCREEN_CYRILLIC_LICENSE = MIT\nXFONT_FONT_SCREEN_CYRILLIC_LICENSE_FILES = COPYING\n\nXFONT_FONT_SCREEN_CYRILLIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_SCREEN_CYRILLIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_SCREEN_CYRILLIC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-sony-misc/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_SONY_MISC\n\tbool \"font-sony-misc\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.hash",
    "content": "# From http://www.x.org/archive/current/src/everything/CHECKSUMS\nsha256  2043a326ba347c9da5ca1e9bc363e2521c3ea40b43b1f9662d333efd4867cff5  font-sony-misc-1.0.3.tar.bz2\n# Locally computed\nsha256  8233ff7d7bc8b5b46cbba3f6cd0069d2ef875bd1b1e0090ca4145282aa096739  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.mk",
    "content": "################################################################################\n#\n# xfont_font-sony-misc\n#\n################################################################################\n\nXFONT_FONT_SONY_MISC_VERSION = 1.0.3\nXFONT_FONT_SONY_MISC_SOURCE = font-sony-misc-$(XFONT_FONT_SONY_MISC_VERSION).tar.bz2\nXFONT_FONT_SONY_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_SONY_MISC_LICENSE = MIT\nXFONT_FONT_SONY_MISC_LICENSE_FILES = COPYING\n\nXFONT_FONT_SONY_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_SONY_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_SONY_MISC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-sun-misc/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_SUN_MISC\n\tbool \"font-sun-misc\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.hash",
    "content": "# From http://www.x.org/archive/current/src/everything/CHECKSUMS\nsha256  481f4fcbbf7005658b080b3cf342c8c76de752e77f47958b2b383de73266d2e0  font-sun-misc-1.0.3.tar.bz2\n# Locally computed\nsha256  dd6da1d39832ab2878c3304405c1c7883c6da292ffde262fca1785239534c40f  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.mk",
    "content": "################################################################################\n#\n# xfont_font-sun-misc\n#\n################################################################################\n\nXFONT_FONT_SUN_MISC_VERSION = 1.0.3\nXFONT_FONT_SUN_MISC_SOURCE = font-sun-misc-$(XFONT_FONT_SUN_MISC_VERSION).tar.bz2\nXFONT_FONT_SUN_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_SUN_MISC_LICENSE = MIT\nXFONT_FONT_SUN_MISC_LICENSE_FILES = COPYING\n\nXFONT_FONT_SUN_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_SUN_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_SUN_MISC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-util/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_UTIL\n\tbool \"font-util\"\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-util/xfont_font-util.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-August/003019.html\nmd5 3d6adb76fdd072db8c8fae41b40855e8  font-util-1.3.2.tar.bz2\nsha1 1b36275c174b64a9c16da5c902c91546789a67ef  font-util-1.3.2.tar.bz2\nsha256 3ad880444123ac06a7238546fa38a2a6ad7f7e0cc3614de7e103863616522282  font-util-1.3.2.tar.bz2\nsha512 7cac529b12ae71185b89c72c1569b9826f52eeaecc1c76010338e7c42c4078ae339f18220b580bbd68fb5dc09df6ecf169a47c32e6104d8ee53bd443fa21d167  font-util-1.3.2.tar.bz2\n\n# Locally calculated\nsha256\tce16c3ee6f2a38db6870b66bdb54fce9dcf24acd1161840789e321f6faa1251c\tCOPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-util/xfont_font-util.mk",
    "content": "################################################################################\n#\n# xfont_font-util\n#\n################################################################################\n\nXFONT_FONT_UTIL_VERSION = 1.3.2\nXFONT_FONT_UTIL_SOURCE = font-util-$(XFONT_FONT_UTIL_VERSION).tar.bz2\nXFONT_FONT_UTIL_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_UTIL_LICENSE = MIT/BSD-2-Clause\nXFONT_FONT_UTIL_LICENSE_FILES = COPYING\n\nXFONT_FONT_UTIL_DEPENDENCIES = host-pkgconf\nHOST_XFONT_FONT_UTIL_DEPENDENCIES = host-pkgconf\nXFONT_FONT_UTIL_INSTALL_STAGING = YES\nXFONT_FONT_UTIL_INSTALL_TARGET = NO\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-winitzki-cyrillic/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_WINITZKI_CYRILLIC\n\tbool \"font-winitzki-cyrillic\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.hash",
    "content": "# From http://www.x.org/archive/current/src/everything/CHECKSUMS\nsha256  abd13b63d02fcaec488686c23683e5cf640b43bd32f8ca22eeae6f84df0a36a0  font-winitzki-cyrillic-1.0.3.tar.bz2\n# Locally computed\nsha256  ca60a2aa1133e39e8c72a01af06cf0c927f5ddfe70d469d1535231100618095d  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.mk",
    "content": "################################################################################\n#\n# xfont_font-winitzki-cyrillic\n#\n################################################################################\n\nXFONT_FONT_WINITZKI_CYRILLIC_VERSION = 1.0.3\nXFONT_FONT_WINITZKI_CYRILLIC_SOURCE = font-winitzki-cyrillic-$(XFONT_FONT_WINITZKI_CYRILLIC_VERSION).tar.bz2\nXFONT_FONT_WINITZKI_CYRILLIC_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_WINITZKI_CYRILLIC_LICENSE = Public Domain\nXFONT_FONT_WINITZKI_CYRILLIC_LICENSE_FILES = COPYING\n\nXFONT_FONT_WINITZKI_CYRILLIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_WINITZKI_CYRILLIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_WINITZKI_CYRILLIC_DEPENDENCIES = \\\n\txfont_font-util \\\n\thost-xfont_font-util \\\n\thost-xapp_mkfontscale \\\n\thost-xapp_bdftopcf \\\n\thost-gzip\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xfont_font-xfree86-type1/Config.in",
    "content": "config BR2_PACKAGE_XFONT_FONT_XFREE86_TYPE1\n\tbool \"font-xfree86-type1\"\n\tselect BR2_PACKAGE_XFONT_FONT_UTIL\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.hash",
    "content": "# From http://www.x.org/archive/current/src/everything/CHECKSUMS\nsha256  caebf42aec7be7f3bd40e0f232d6f34881b853dc84acfcdf7458358701fbe34a  font-xfree86-type1-1.0.4.tar.bz2\n# Locally computed\nsha256  51e6bc6513b3fa94512d8dd570240498c878605f25292c3883d92fdfca18d0c6  COPYING\n"
  },
  {
    "path": "package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.mk",
    "content": "################################################################################\n#\n# xfont_font-xfree86-type1\n#\n################################################################################\n\nXFONT_FONT_XFREE86_TYPE1_VERSION = 1.0.4\nXFONT_FONT_XFREE86_TYPE1_SOURCE = font-xfree86-type1-$(XFONT_FONT_XFREE86_TYPE1_VERSION).tar.bz2\nXFONT_FONT_XFREE86_TYPE1_SITE = http://xorg.freedesktop.org/releases/individual/font\nXFONT_FONT_XFREE86_TYPE1_LICENSE = MIT\nXFONT_FONT_XFREE86_TYPE1_LICENSE_FILES = COPYING\n\nXFONT_FONT_XFREE86_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install\nXFONT_FONT_XFREE86_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data\nXFONT_FONT_XFREE86_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_bdftopcf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xkeyboard-config/Config.in",
    "content": "config BR2_PACKAGE_XKEYBOARD_CONFIG\n\tbool \"xkeyboard-config\"\n\t# Runtime dependencies\n\tselect BR2_PACKAGE_XAPP_XKBCOMP if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XORGPROTO if BR2_PACKAGE_XORG7\n\thelp\n\t  keyboard configuration database for X\n\n\t  https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config\n"
  },
  {
    "path": "package/x11r7/xkeyboard-config/xkeyboard-config.hash",
    "content": "# Locally computed\nsha256  1feee317ba39b91902b0cbd2987c0c73e6afbfc8f4c096367a5c86c216c036a8  xkeyboard-config-2.32.tar.bz2\nsha256  6ca90f4b67dced4062894d6d77f4cc39343df9e359fc12f5e5d3c89ef2a3ef6d  COPYING\n"
  },
  {
    "path": "package/x11r7/xkeyboard-config/xkeyboard-config.mk",
    "content": "################################################################################\n#\n# xkeyboard-config\n#\n################################################################################\n\nXKEYBOARD_CONFIG_VERSION = 2.32\nXKEYBOARD_CONFIG_SOURCE = xkeyboard-config-$(XKEYBOARD_CONFIG_VERSION).tar.bz2\nXKEYBOARD_CONFIG_SITE = https://www.x.org/releases/individual/data/xkeyboard-config\nXKEYBOARD_CONFIG_LICENSE = MIT\nXKEYBOARD_CONFIG_LICENSE_FILES = COPYING\n\nXKEYBOARD_CONFIG_DEPENDENCIES = \\\n\t$(BR2_PYTHON3_HOST_DEPENDENCY) \\\n\thost-gettext \\\n\thost-xapp_xkbcomp\n\n# xkeyboard-config.pc\nXKEYBOARD_CONFIG_INSTALL_STAGING = YES\n\nXKEYBOARD_CONFIG_CONF_OPTS = --disable-runtime-deps\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libFS/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBFS\n\tbool \"libFS\"\n\tselect BR2_PACKAGE_XLIB_XTRANS\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org FS library\n"
  },
  {
    "path": "package/x11r7/xlib_libFS/xlib_libFS.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002970.html\nmd5 4e1196275aa743d6ebd3d3d5ec1dff9c  libFS-1.0.8.tar.bz2\nsha1 70173cc15a7a55defb7b22b00a9387901acad634  libFS-1.0.8.tar.bz2\nsha256 c8e13727149b2ddfe40912027459b2522042e3844c5cd228c3300fe5eef6bd0f  libFS-1.0.8.tar.bz2\nsha512 466198ae5c0b83e3579713d86ddfd0b039f5c5b511cf6d5dc0e9664ee2d40aec9e8929445c8e97394d85faf76a7cf2f81bddb13d23de7ce19919e3b1e36ba56f  libFS-1.0.8.tar.bz2\n# Locally computed\nsha256 5386724e7475b89394dd836b954a6688f875efab99e43e8eb7e8775f5b99a341  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libFS/xlib_libFS.mk",
    "content": "################################################################################\n#\n# xlib_libFS\n#\n################################################################################\n\nXLIB_LIBFS_VERSION = 1.0.8\nXLIB_LIBFS_SOURCE = libFS-$(XLIB_LIBFS_VERSION).tar.bz2\nXLIB_LIBFS_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBFS_LICENSE = MIT\nXLIB_LIBFS_LICENSE_FILES = COPYING\nXLIB_LIBFS_CPE_ID_VENDOR = x\nXLIB_LIBFS_CPE_ID_PRODUCT = libfs\nXLIB_LIBFS_INSTALL_STAGING = YES\nXLIB_LIBFS_DEPENDENCIES = xlib_xtrans xorgproto host-pkgconf\nXLIB_LIBFS_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libICE/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBICE\n\tbool \"libICE\"\n\tselect BR2_PACKAGE_XLIB_XTRANS\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org ICE library\n"
  },
  {
    "path": "package/x11r7/xlib_libICE/xlib_libICE.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-July/003006.html\nmd5 76d77499ee7120a56566891ca2c0dbcf  libICE-1.0.10.tar.bz2\nsha1 5b5eb125d4f43a3ab8153b0f850963ee6c982c24  libICE-1.0.10.tar.bz2\nsha256 6f86dce12cf4bcaf5c37dddd8b1b64ed2ddf1ef7b218f22b9942595fb747c348  libICE-1.0.10.tar.bz2\nsha512 2f1ef2c32c833c71894a08fa7e7ed53f301f6c7bd22485d71c12884d8e8b36b99f362ec886349dcc84d08edc81c8b2cea035320831d64974edeba021b433c468  libICE-1.0.10.tar.bz2\n# Locally computed\nsha256 60105b7ea93cb07a67fee8443b092b727e3db7f0dff4fbe05bc6cd7747fb53c8  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libICE/xlib_libICE.mk",
    "content": "################################################################################\n#\n# xlib_libICE\n#\n################################################################################\n\nXLIB_LIBICE_VERSION = 1.0.10\nXLIB_LIBICE_SOURCE = libICE-$(XLIB_LIBICE_VERSION).tar.bz2\nXLIB_LIBICE_SITE = https://xorg.freedesktop.org/archive/individual/lib\nXLIB_LIBICE_LICENSE = MIT\nXLIB_LIBICE_LICENSE_FILES = COPYING\nXLIB_LIBICE_CPE_ID_VENDOR = freedesktop\nXLIB_LIBICE_CPE_ID_PRODUCT = libice\nXLIB_LIBICE_INSTALL_STAGING = YES\nXLIB_LIBICE_DEPENDENCIES = xlib_xtrans xorgproto host-pkgconf\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libSM/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBSM\n\tbool \"libSM\"\n\tselect BR2_PACKAGE_XLIB_LIBICE\n\tselect BR2_PACKAGE_XLIB_XTRANS\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org SM library\n"
  },
  {
    "path": "package/x11r7/xlib_libSM/xlib_libSM.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-October/002922.html\nmd5  87c7fad1c1813517979184c8ccd76628  libSM-1.2.3.tar.bz2\nsha1 437d7b13fa2eba325df3a106f177df46ccec6546  libSM-1.2.3.tar.bz2\nsha256 2d264499dcb05f56438dee12a1b4b71d76736ce7ba7aa6efbf15ebb113769cbb  libSM-1.2.3.tar.bz2\nsha512 74c42e27029db78475e62025b4711dbac5e22d2f8e8a24be98a1c31b03c0fc4afe859928f851800ea0b76854f12147900dc4f27bbfd3d8ea45daaaf24b70a903  libSM-1.2.3.tar.bz2\n# Locally computed\nsha256 af7926a14d85ad367622688636e8c9c6f7807c8a6867536af1c530b5c262bfba  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libSM/xlib_libSM.mk",
    "content": "################################################################################\n#\n# xlib_libSM\n#\n################################################################################\n\nXLIB_LIBSM_VERSION = 1.2.3\nXLIB_LIBSM_SOURCE = libSM-$(XLIB_LIBSM_VERSION).tar.bz2\nXLIB_LIBSM_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBSM_LICENSE = MIT\nXLIB_LIBSM_LICENSE_FILES = COPYING\nXLIB_LIBSM_INSTALL_STAGING = YES\nXLIB_LIBSM_DEPENDENCIES = xlib_libICE xlib_xtrans xorgproto\nXLIB_LIBSM_CONF_OPTS = --without-libuuid\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libX11/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBX11\n\tbool \"libX11\"\n\tselect BR2_PACKAGE_LIBXCB\n\tselect BR2_PACKAGE_XUTIL_UTIL_MACROS\n\tselect BR2_PACKAGE_XLIB_XTRANS\n\tselect BR2_PACKAGE_XLIB_LIBXAU\n\tselect BR2_PACKAGE_XLIB_LIBXDMCP\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org X11 library\n"
  },
  {
    "path": "package/x11r7/xlib_libX11/xlib_libX11.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-June/003092.html\nsha256  1cfa35e37aaabbe4792e9bb690468efefbfbf6b147d9c69d6f90d13c3092ea6c  libX11-1.7.2.tar.bz2\nsha512  d01e5c1848c76218605e5af2d353de6b301a251555b52a38dbe930e6635d5e8a92d1486eb6d328ad5d42a5939e0d16868ffa19a75e5a7863d1a32e0d0727bdc7  libX11-1.7.2.tar.bz2\n\n# Locally computed\nsha256  2daec087a88e7c9b8082557cdeebad5bbb8155a4137472f0b22e269cd99d0c1e  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libX11/xlib_libX11.mk",
    "content": "################################################################################\n#\n# xlib_libX11\n#\n################################################################################\n\nXLIB_LIBX11_VERSION = 1.7.2\nXLIB_LIBX11_SOURCE = libX11-$(XLIB_LIBX11_VERSION).tar.bz2\nXLIB_LIBX11_SITE = https://xorg.freedesktop.org/archive/individual/lib\nXLIB_LIBX11_LICENSE = MIT\nXLIB_LIBX11_LICENSE_FILES = COPYING\nXLIB_LIBX11_CPE_ID_VENDOR = x.org\nXLIB_LIBX11_CPE_ID_PRODUCT = libx11\nXLIB_LIBX11_INSTALL_STAGING = YES\nXLIB_LIBX11_DEPENDENCIES = \\\n\tlibxcb \\\n\txutil_util-macros \\\n\txlib_xtrans \\\n\txlib_libXau \\\n\txlib_libXdmcp \\\n\txorgproto \\\n\thost-xorgproto\n\nHOST_XLIB_LIBX11_DEPENDENCIES = \\\n\thost-libxcb \\\n\thost-xutil_util-macros \\\n\thost-xlib_xtrans \\\n\thost-xlib_libXau \\\n\thost-xlib_libXdmcp \\\n\thost-xorgproto\n\nXLIB_LIBX11_CONF_OPTS = \\\n\t--disable-malloc0returnsnull \\\n\t--disable-specs \\\n\t--without-perl\n\nHOST_XLIB_LIBX11_CONF_OPTS = \\\n\t--disable-specs \\\n\t--without-perl\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXScrnSaver/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXSCRNSAVER\n\tbool \"libXScrnSaver\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org XScrnSaver library\n"
  },
  {
    "path": "package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-July/002906.html\nmd5 eeea9d5af3e6c143d0ea1721d27a5e49  libXScrnSaver-1.2.3.tar.bz2\nsha1 70c791c5755a298ecf1a0823e239a24fa4b2b42f  libXScrnSaver-1.2.3.tar.bz2\nsha256 f917075a1b7b5a38d67a8b0238eaab14acd2557679835b154cf2bca576e89bf8  libXScrnSaver-1.2.3.tar.bz2\nsha512 7ea628324a11b25ee82c7b11c6bf98f37de219354de51c1e29467b5de422669ba1ab121f3b9dc674093c8f3960e93c5d5428122f5539092f79bc8451c768354a  libXScrnSaver-1.2.3.tar.bz2\n# Locally computed\nsha256 5cf3e16f5dd753a4c0853e8227134ab65f5562d9ef89b1a2d7681f5c8ac9feb5  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.mk",
    "content": "################################################################################\n#\n# xlib_libXScrnSaver\n#\n################################################################################\n\nXLIB_LIBXSCRNSAVER_VERSION = 1.2.3\nXLIB_LIBXSCRNSAVER_SOURCE = libXScrnSaver-$(XLIB_LIBXSCRNSAVER_VERSION).tar.bz2\nXLIB_LIBXSCRNSAVER_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXSCRNSAVER_LICENSE = MIT\nXLIB_LIBXSCRNSAVER_LICENSE_FILES = COPYING\nXLIB_LIBXSCRNSAVER_INSTALL_STAGING = YES\nXLIB_LIBXSCRNSAVER_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto\nXLIB_LIBXSCRNSAVER_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXau/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXAU\n\tbool \"libXau\"\n\tselect BR2_PACKAGE_XORGPROTO\n\tselect BR2_PACKAGE_XUTIL_UTIL_MACROS\n\thelp\n\t  X.Org Xau library\n"
  },
  {
    "path": "package/x11r7/xlib_libXau/xlib_libXau.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-February/002942.html\nmd5 c5f16288f2da9f071b29111d68797480  libXau-1.0.9.tar.bz2\nsha1 ef9b1ad00f958c8b6e30a1bbc11fdfac311c9733  libXau-1.0.9.tar.bz2\nsha256 ccf8cbf0dbf676faa2ea0a6d64bcc3b6746064722b606c8c52917ed00dcb73ec  libXau-1.0.9.tar.bz2\nsha512 3ca454ba466a807ea28b0f715066d73dc76ad312697b121d43e4d5766215052e9b7ffb8fe3ed3e496fa3f2a13f164ac692ff85cc428e26731b679f0f06a1d562  libXau-1.0.9.tar.bz2\n# Locally computed\nsha256 56abe29bb1d9806a9e04fa9f80fed2c0f18027594df3f098148d814aef6bddfa  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXau/xlib_libXau.mk",
    "content": "################################################################################\n#\n# xlib_libXau\n#\n################################################################################\n\nXLIB_LIBXAU_VERSION = 1.0.9\nXLIB_LIBXAU_SOURCE = libXau-$(XLIB_LIBXAU_VERSION).tar.bz2\nXLIB_LIBXAU_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXAU_LICENSE = MIT\nXLIB_LIBXAU_LICENSE_FILES = COPYING\nXLIB_LIBXAU_INSTALL_STAGING = YES\nXLIB_LIBXAU_DEPENDENCIES = host-pkgconf xutil_util-macros xorgproto\nHOST_XLIB_LIBXAU_DEPENDENCIES = \\\n\thost-pkgconf host-xutil_util-macros host-xorgproto\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXaw/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXAW\n\tbool \"libXaw\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\tselect BR2_PACKAGE_XLIB_LIBXPM\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xaw library\n"
  },
  {
    "path": "package/x11r7/xlib_libXaw/xlib_libXaw.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-March/003077.html\nsha256  76aef98ea3df92615faec28004b5ce4e5c6855e716fa16de40c32030722a6f8e  libXaw-1.0.14.tar.bz2\nsha512  29d1c151369523ae6cb418e636b0b7b39ccccc35462a0b394dbeb46d5b6d780badd2eb872a55d9fbba1ee1af034e76c0463f40f8d8a7be2c336d08b3b1bf81d4  libXaw-1.0.14.tar.bz2\n\n# Locally calculated\nsha256  9f5adb26952f93b3e4650285b94ec6c61a27aab5a21088bfb6694001be1b360d  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXaw/xlib_libXaw.mk",
    "content": "################################################################################\n#\n# xlib_libXaw\n#\n################################################################################\n\nXLIB_LIBXAW_VERSION = 1.0.14\nXLIB_LIBXAW_SOURCE = libXaw-$(XLIB_LIBXAW_VERSION).tar.bz2\nXLIB_LIBXAW_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXAW_LICENSE = MIT\nXLIB_LIBXAW_LICENSE_FILES = COPYING\nXLIB_LIBXAW_INSTALL_STAGING = YES\nXLIB_LIBXAW_DEPENDENCIES = xlib_libX11 xlib_libXt xlib_libXmu xlib_libXpm xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXcomposite/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXCOMPOSITE\n\tbool \"libXcomposite\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xcomposite library\n"
  },
  {
    "path": "package/x11r7/xlib_libXcomposite/xlib_libXcomposite.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002971.html\nmd5 3fa0841ea89024719b20cd702a9b54e0  libXcomposite-0.4.5.tar.bz2\nsha1 902631efb55a798c81086e5ff90b60349839db40  libXcomposite-0.4.5.tar.bz2\nsha256 b3218a2c15bab8035d16810df5b8251ffc7132ff3aa70651a1fba0bfe9634e8f  libXcomposite-0.4.5.tar.bz2\nsha512 502fd51fd9097bb3ca72174ac5b25b9d3b1ff240d32c4765199df03d89337d94b4ddea49e90b177b370862430089d966ce9c38988337156352cfeae911c2d3d5  libXcomposite-0.4.5.tar.bz2\n# Locally computed\nsha256 efa0219ed8485ac555c1a3fb82daf34539b2e0dcf4dadc99c01f1e39c69a4a68  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXcomposite/xlib_libXcomposite.mk",
    "content": "################################################################################\n#\n# xlib_libXcomposite\n#\n################################################################################\n\nXLIB_LIBXCOMPOSITE_VERSION = 0.4.5\nXLIB_LIBXCOMPOSITE_SOURCE = libXcomposite-$(XLIB_LIBXCOMPOSITE_VERSION).tar.bz2\nXLIB_LIBXCOMPOSITE_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXCOMPOSITE_LICENSE = MIT\nXLIB_LIBXCOMPOSITE_LICENSE_FILES = COPYING\nXLIB_LIBXCOMPOSITE_INSTALL_STAGING = YES\nXLIB_LIBXCOMPOSITE_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXfixes xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXcursor/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXCURSOR\n\tbool \"libXcursor\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xcursor library\n"
  },
  {
    "path": "package/x11r7/xlib_libXcursor/xlib_libXcursor.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002972.html\nmd5 9b9be0e289130fb820aedf67705fc549  libXcursor-1.2.0.tar.bz2\nsha1 cca0b34955d3c2f657f05a2a2c40f75353ddd912  libXcursor-1.2.0.tar.bz2\nsha256 3ad3e9f8251094af6fe8cb4afcf63e28df504d46bfa5a5529db74a505d628782  libXcursor-1.2.0.tar.bz2\nsha512 2b12d0fd17e311ce269dbba58588698885815eb07aa44d48525ed5cd9e5f379bb90138a792a191e2f74888ab10b3ca9a4f507f21de0984ed79748973ab927a03  libXcursor-1.2.0.tar.bz2\n# Locally computed\nsha256 1f1588aff23eec0cb6bb9cfe02f8a75abbe43faf3d9b1eff54b7fbc42774b3ad  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXcursor/xlib_libXcursor.mk",
    "content": "################################################################################\n#\n# xlib_libXcursor\n#\n################################################################################\n\nXLIB_LIBXCURSOR_VERSION = 1.2.0\nXLIB_LIBXCURSOR_SOURCE = libXcursor-$(XLIB_LIBXCURSOR_VERSION).tar.bz2\nXLIB_LIBXCURSOR_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXCURSOR_LICENSE = MIT\nXLIB_LIBXCURSOR_LICENSE_FILES = COPYING\nXLIB_LIBXCURSOR_INSTALL_STAGING = YES\nXLIB_LIBXCURSOR_CPE_ID_VENDOR = x\nXLIB_LIBXCURSOR_CPE_ID_PRODUCT = libxcursor\nXLIB_LIBXCURSOR_DEPENDENCIES = xlib_libX11 xlib_libXfixes xlib_libXrender xorgproto\nHOST_XLIB_LIBXCURSOR_DEPENDENCIES = \\\n\thost-xlib_libX11 host-xlib_libXfixes host-xlib_libXrender \\\n\thost-xorgproto\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXdamage/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXDAMAGE\n\tbool \"libXdamage\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xdamage library\n"
  },
  {
    "path": "package/x11r7/xlib_libXdamage/xlib_libXdamage.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002973.html\nmd5 e3f554267a7a04b042dc1f6352bd6d99  libXdamage-1.1.5.tar.bz2\nsha1 719ae6ab8c1b972c6386b654976c479255af5572  libXdamage-1.1.5.tar.bz2\nsha256 b734068643cac3b5f3d2c8279dd366b5bf28c7219d9e9d8717e1383995e0ea45  libXdamage-1.1.5.tar.bz2\nsha512 a3ca6cc33b1727f717a3e2aa5593f660508a81a47918a0aa949e9e8fba105e303fe5071983b48caac92feea0fe6e8e01620805e4d19b41f21f20d837b191c124  libXdamage-1.1.5.tar.bz2\n# Locally computed\nsha256 33effe928634be12e668465c3935c5570ff2787b970b15d9243d69df42302c57  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXdamage/xlib_libXdamage.mk",
    "content": "################################################################################\n#\n# xlib_libXdamage\n#\n################################################################################\n\nXLIB_LIBXDAMAGE_VERSION = 1.1.5\nXLIB_LIBXDAMAGE_SOURCE = libXdamage-$(XLIB_LIBXDAMAGE_VERSION).tar.bz2\nXLIB_LIBXDAMAGE_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXDAMAGE_LICENSE = MIT\nXLIB_LIBXDAMAGE_LICENSE_FILES = COPYING\nXLIB_LIBXDAMAGE_INSTALL_STAGING = YES\nXLIB_LIBXDAMAGE_DEPENDENCIES = xlib_libX11 xlib_libXfixes xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXdmcp/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXDMCP\n\tbool \"libXdmcp\"\n\tselect BR2_PACKAGE_XUTIL_UTIL_MACROS\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xdmcp library\n"
  },
  {
    "path": "package/x11r7/xlib_libXdmcp/xlib_libXdmcp.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002974.html\nmd5 115c5c12ecce0e749cd91d999a5fd160  libXdmcp-1.1.3.tar.bz2\nsha1 0a8f8a274f829331efb1e8e2027c38631b204dd0  libXdmcp-1.1.3.tar.bz2\nsha256 20523b44aaa513e17c009e873ad7bbc301507a3224c232610ce2e099011c6529  libXdmcp-1.1.3.tar.bz2\nsha512 cb1d4650f97d66e73acd2465ec7d757b9b797cce2f85e301860a44997a461837eea845ec9bd5b639ec5ca34c804f8bdd870697a5ce3f4e270b687c9ef74f25ec  libXdmcp-1.1.3.tar.bz2\n# Locally computed\nsha256 8a3c3f35b0dbcb60a4e242b9e4394a352a65bb27deb2938ea1e2e62a626e16e9  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXdmcp/xlib_libXdmcp.mk",
    "content": "################################################################################\n#\n# xlib_libXdmcp\n#\n################################################################################\n\nXLIB_LIBXDMCP_VERSION = 1.1.3\nXLIB_LIBXDMCP_SOURCE = libXdmcp-$(XLIB_LIBXDMCP_VERSION).tar.bz2\nXLIB_LIBXDMCP_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXDMCP_LICENSE = MIT\nXLIB_LIBXDMCP_LICENSE_FILES = COPYING\nXLIB_LIBXDMCP_CPE_ID_VENDOR = x.org\nXLIB_LIBXDMCP_CPE_ID_PRODUCT = libxdmcp\nXLIB_LIBXDMCP_INSTALL_STAGING = YES\nXLIB_LIBXDMCP_DEPENDENCIES = xutil_util-macros xorgproto host-pkgconf\nHOST_XLIB_LIBXDMCP_DEPENDENCIES = host-xutil_util-macros host-xorgproto host-pkgconf\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXext/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXEXT\n\tbool \"libXext\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xext library\n"
  },
  {
    "path": "package/x11r7/xlib_libXext/xlib_libXext.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002975.html\nmd5 f5b48bb76ba327cd2a8dc7a383532a95  libXext-1.3.4.tar.bz2\nsha1 14e2451162e8766173b5b14c73e94a22b1fcab55  libXext-1.3.4.tar.bz2\nsha256 59ad6fcce98deaecc14d39a672cf218ca37aba617c9a0f691cac3bcd28edf82b  libXext-1.3.4.tar.bz2\nsha512 09146397d95f80c04701be1cc0a9c580ab5a085842ac31d17dfb6d4c2e42b4253b89cba695e54444e520be359883a76ffd02f42484c9e2ba2c33a5a40c29df4a  libXext-1.3.4.tar.bz2\n# Locally computed\nsha256 80767ac915f2f0f94de9efb15f0197a59b6f1e609cae85059f8703272dc3e146  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXext/xlib_libXext.mk",
    "content": "################################################################################\n#\n# xlib_libXext\n#\n################################################################################\n\nXLIB_LIBXEXT_VERSION = 1.3.4\nXLIB_LIBXEXT_SOURCE = libXext-$(XLIB_LIBXEXT_VERSION).tar.bz2\nXLIB_LIBXEXT_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXEXT_LICENSE = MIT\nXLIB_LIBXEXT_LICENSE_FILES = COPYING\nXLIB_LIBXEXT_CPE_ID_VENDOR = x\nXLIB_LIBXEXT_CPE_ID_PRODUCT = libxext\nXLIB_LIBXEXT_INSTALL_STAGING = YES\nXLIB_LIBXEXT_DEPENDENCIES = xlib_libX11 xorgproto\nXLIB_LIBXEXT_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXfixes/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXFIXES\n\tbool \"libXfixes\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xfixes library\n"
  },
  {
    "path": "package/x11r7/xlib_libXfixes/xlib_libXfixes.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-May/003086.html\nsha256  a7c1a24da53e0b46cac5aea79094b4b2257321c621b258729bc3139149245b4c  libXfixes-6.0.0.tar.bz2\nsha512  1985ef156f382e9a7e1cc7e044e0f626de1e4c82557a511cbcf6431994c0ac25b1f8b3a0293bd3089331593db8ce01d3a71ddec68f19b5fe6029d5082fb6885d  libXfixes-6.0.0.tar.bz2\n\n# Locally calculated\nsha256 d64e671ffeb483d4543f98c842788ab34c77427e27d83d6b082065a4438d4885  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXfixes/xlib_libXfixes.mk",
    "content": "################################################################################\n#\n# xlib_libXfixes\n#\n################################################################################\n\nXLIB_LIBXFIXES_VERSION = 6.0.0\nXLIB_LIBXFIXES_SOURCE = libXfixes-$(XLIB_LIBXFIXES_VERSION).tar.bz2\nXLIB_LIBXFIXES_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXFIXES_LICENSE = MIT\nXLIB_LIBXFIXES_LICENSE_FILES = COPYING\nXLIB_LIBXFIXES_CPE_ID_VENDOR = x\nXLIB_LIBXFIXES_CPE_ID_PRODUCT = libxfixes\nXLIB_LIBXFIXES_INSTALL_STAGING = YES\nXLIB_LIBXFIXES_DEPENDENCIES =  xlib_libX11 xorgproto\nHOST_XLIB_LIBXFIXES_DEPENDENCIES = \\\n\thost-xlib_libX11 host-xorgproto\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXfont/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXFONT\n\tbool \"libXfont\"\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_XLIB_LIBFONTENC\n\tselect BR2_PACKAGE_XLIB_XTRANS\n\tselect BR2_PACKAGE_XFONT_ENCODINGS\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xfont library\n"
  },
  {
    "path": "package/x11r7/xlib_libXfont/xlib_libXfont.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2017-November/002825.html\nmd5  16eaf156edd79b68038b6a7c44aa9e9b  libXfont-1.5.4.tar.bz2\nsha1 9db050f63b9c4cb19e0dbb40575558ccb95719ca  libXfont-1.5.4.tar.bz2\nsha256 1a7f7490774c87f2052d146d1e0e64518d32e6848184a18654e8d0bb57883242  libXfont-1.5.4.tar.bz2\nsha512 864edbaff45c44bd92bc4b06275c73fdf584a9b88bc523a297d4c75c01ca253f438463e929af70d753ddecfa648bb0b9bcf0ec72267db9f2b1704f7afa906cb3  libXfont-1.5.4.tar.bz2\n\n# Locally calculated\nsha256 97e413bb4962bbb5773085cd5405502bf1d4eadeaf98ff5be015eacacc840462  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXfont/xlib_libXfont.mk",
    "content": "################################################################################\n#\n# xlib_libXfont\n#\n################################################################################\n\nXLIB_LIBXFONT_VERSION = 1.5.4\nXLIB_LIBXFONT_SOURCE = libXfont-$(XLIB_LIBXFONT_VERSION).tar.bz2\nXLIB_LIBXFONT_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXFONT_LICENSE = MIT\nXLIB_LIBXFONT_LICENSE_FILES = COPYING\nXLIB_LIBXFONT_INSTALL_STAGING = YES\n\nXLIB_LIBXFONT_DEPENDENCIES = freetype xlib_libfontenc xlib_xtrans xorgproto\n\nHOST_XLIB_LIBXFONT_DEPENDENCIES = \\\n\thost-freetype host-xlib_libfontenc host-xlib_xtrans \\\n\thost-xorgproto\n\nXLIB_LIBXFONT_CONF_OPTS = --disable-devel-docs\nHOST_XLIB_LIBXFONT_CONF_OPTS = --disable-devel-docs\n\nifeq ($(BR2_microblaze),y)\n# The microblaze toolchains don't define the __ELF__ preprocessor\n# symbol even though they do use the elf format. LibXfont checks for\n# this symbol to know if weak symbols are supported, and otherwise\n# falls back to emulation code using dlopen - Causing linker issues\n# for stuff using libXfont.\n# Work around it by defining the symbol here as well.\nXLIB_LIBXFONT_CONF_ENV += CFLAGS=\"$(TARGET_CFLAGS) -D__ELF__\"\nendif\n\nXLIB_LIBXFONT_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nXLIB_LIBXFONT_CFLAGS += -O0\nendif\n\nXLIB_LIBXFONT_CONF_ENV += CFLAGS=\"$(XLIB_LIBXFONT_CFLAGS)\"\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXfont2/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXFONT2\n\tbool \"libXfont2\"\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_XLIB_LIBFONTENC\n\tselect BR2_PACKAGE_XLIB_XTRANS\n\tselect BR2_PACKAGE_XFONT_ENCODINGS\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xfont library\n"
  },
  {
    "path": "package/x11r7/xlib_libXfont2/xlib_libXfont2.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-August/003103.html\nsha256  aa7c6f211cf7215c0ab4819ed893dc98034363d7b930b844bb43603c2e10b53e  libXfont2-2.0.5.tar.bz2\nsha512  64d0635d14676bb645d61932afb177eb3808a46525b26e7ee31abc975eca75207743e85523fdd82b08010ce124eb4802338b508ee7b126875d2a3c12f8ac4faa  libXfont2-2.0.5.tar.bz2\n# Locally calculated\nsha256  97e413bb4962bbb5773085cd5405502bf1d4eadeaf98ff5be015eacacc840462  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXfont2/xlib_libXfont2.mk",
    "content": "################################################################################\n#\n# xlib_libXfont2\n#\n################################################################################\n\nXLIB_LIBXFONT2_VERSION = 2.0.5\nXLIB_LIBXFONT2_SOURCE = libXfont2-$(XLIB_LIBXFONT2_VERSION).tar.bz2\nXLIB_LIBXFONT2_SITE = https://xorg.freedesktop.org/archive/individual/lib\nXLIB_LIBXFONT2_LICENSE = MIT\nXLIB_LIBXFONT2_LICENSE_FILES = COPYING\nXLIB_LIBXFONT2_CPE_ID_VENDOR = x\nXLIB_LIBXFONT2_CPE_ID_PRODUCT = libxfont\nXLIB_LIBXFONT2_INSTALL_STAGING = YES\n# 0001-configure-define-HAVE_LIBBSD-when-libbsd-was-found.patch\nXLIB_LIBXFONT2_AUTORECONF = YES\nXLIB_LIBXFONT2_DEPENDENCIES = \\\n\tfreetype \\\n\txlib_libfontenc \\\n\txlib_xtrans \\\n\txorgproto \\\n\txfont_encodings\n\nifeq ($(BR2_PACKAGE_LIBBSD),y)\nXLIB_LIBXFONT2_DEPENDENCIES += libbsd\nendif\n\nHOST_XLIB_LIBXFONT2_DEPENDENCIES = \\\n\thost-freetype \\\n\thost-xlib_libfontenc \\\n\thost-xlib_xtrans \\\n\thost-xorgproto \\\n\thost-xfont_encodings\n\nXLIB_LIBXFONT2_CONF_OPTS = --disable-devel-docs\nHOST_XLIB_LIBXFONT2_CONF_OPTS = --disable-devel-docs\n\nXLIB_LIBXFONT2_CFLAGS = $(TARGET_CFLAGS)\n\nifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)\nXLIB_LIBXFONT2_CFLAGS += -O0\nendif\n\nXLIB_LIBXFONT2_CONF_ENV = CFLAGS=\"$(XLIB_LIBXFONT2_CFLAGS)\"\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXft/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXFT\n\tbool \"libXft\"\n\tselect BR2_PACKAGE_FONTCONFIG\n\tselect BR2_PACKAGE_FREETYPE\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xft library\n"
  },
  {
    "path": "package/x11r7/xlib_libXft/xlib_libXft.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-August/003104.html\nsha256  57dedaab20914002146bdae0cb0c769ba3f75214c4c91bd2613d6ef79fc9abdd  libXft-2.3.4.tar.bz2\nsha512  5bb019750982ed4643880efd7368bc226ad49cfa8c0c8c6d4614dfeed74f588c65e1ba69adcc12284ec07d841e5b58fc1c27f3fddf83fe1a2837b29dd9ecec51  libXft-2.3.4.tar.bz2\n# Locally computed\nsha256  7cda22286b1379b9b73df695f72cbad36595e65b039a5fbc5c89b69ecc44438c  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXft/xlib_libXft.mk",
    "content": "################################################################################\n#\n# xlib_libXft\n#\n################################################################################\n\nXLIB_LIBXFT_VERSION = 2.3.4\nXLIB_LIBXFT_SOURCE = libXft-$(XLIB_LIBXFT_VERSION).tar.bz2\nXLIB_LIBXFT_SITE = https://xorg.freedesktop.org/archive/individual/lib\nXLIB_LIBXFT_LICENSE = MIT\nXLIB_LIBXFT_LICENSE_FILES = COPYING\nXLIB_LIBXFT_INSTALL_STAGING = YES\nXLIB_LIBXFT_DEPENDENCIES = fontconfig freetype xlib_libX11 xlib_libXext xlib_libXrender xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXi/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXI\n\tbool \"libXi\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xi library\n"
  },
  {
    "path": "package/x11r7/xlib_libXi/xlib_libXi.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-June/002999.html\nmd5 62c4af0839072024b4b1c8cbe84216c7  libXi-1.7.10.tar.bz2\nsha1 79052e50ea07ce2431f8988a60553d9091d46207  libXi-1.7.10.tar.bz2\nsha256 36a30d8f6383a72e7ce060298b4b181fd298bc3a135c8e201b7ca847f5f81061  libXi-1.7.10.tar.bz2\nsha512 591f0860bf5904897587c4990d6c852f3729a212d1ef390362d41242440e078221877c31db2232d5cc81727fe97f4e194b077f7de917e251e60641bbd06ee218  libXi-1.7.10.tar.bz2\n# Locally computed\nsha256 9392174bc86e291369fd2f61f3ed325962735a5f5c585ce8d7ebd365e2a5639f  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXi/xlib_libXi.mk",
    "content": "################################################################################\n#\n# xlib_libXi\n#\n################################################################################\n\nXLIB_LIBXI_VERSION = 1.7.10\nXLIB_LIBXI_SOURCE = libXi-$(XLIB_LIBXI_VERSION).tar.bz2\nXLIB_LIBXI_SITE = https://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXI_LICENSE = MIT\nXLIB_LIBXI_LICENSE_FILES = COPYING\nXLIB_LIBXI_CPE_ID_VENDOR = x.org\nXLIB_LIBXI_CPE_ID_PRODUCT = libxi\nXLIB_LIBXI_INSTALL_STAGING = YES\nXLIB_LIBXI_DEPENDENCIES = \\\n\thost-pkgconf \\\n\txlib_libX11 \\\n\txlib_libXext \\\n\txlib_libXfixes \\\n\txorgproto\n\nXLIB_LIBXI_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXinerama/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXINERAMA\n\tbool \"libXinerama\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xinerama library\n"
  },
  {
    "path": "package/x11r7/xlib_libXinerama/xlib_libXinerama.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-July/002905.html\nmd5 0d5f826a197dae74da67af4a9ef35885  libXinerama-1.1.4.tar.bz2\nsha1 34a1d9908ffbd46805d2357c6b05f5e341a8dc7c  libXinerama-1.1.4.tar.bz2\nsha256 0008dbd7ecf717e1e507eed1856ab0d9cf946d03201b85d5dcf61489bb02d720  libXinerama-1.1.4.tar.bz2\nsha512 cff777ad942614fbf6bc6d8529f399e62debf3ecbf6cc0694a94e38c022bf929ffd5636fb59f55533c394d89b23af3ea51fa5128927f12a85787e16239330f14  libXinerama-1.1.4.tar.bz2\n# Locally computed\nsha256 f661fd883b6e980b3b118e0fbe230fbf10eef8d4d4a35931355f29ed647ddbe3  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXinerama/xlib_libXinerama.mk",
    "content": "################################################################################\n#\n# xlib_libXinerama\n#\n################################################################################\n\nXLIB_LIBXINERAMA_VERSION = 1.1.4\nXLIB_LIBXINERAMA_SOURCE = libXinerama-$(XLIB_LIBXINERAMA_VERSION).tar.bz2\nXLIB_LIBXINERAMA_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXINERAMA_LICENSE = MIT\nXLIB_LIBXINERAMA_LICENSE_FILES = COPYING\nXLIB_LIBXINERAMA_CPE_ID_VENDOR = x\nXLIB_LIBXINERAMA_CPE_ID_PRODUCT = libxinerama\nXLIB_LIBXINERAMA_INSTALL_STAGING = YES\nXLIB_LIBXINERAMA_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto\nXLIB_LIBXINERAMA_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXmu/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXMU\n\tbool \"libXmu\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xmu library\n"
  },
  {
    "path": "package/x11r7/xlib_libXmu/xlib_libXmu.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002978.html\nmd5 ac774cff8b493f566088a255dbf91201  libXmu-1.1.3.tar.bz2\nsha1 7ff54ce38379fb795aebed38f6be404ee0dfeec6  libXmu-1.1.3.tar.bz2\nsha256 9c343225e7c3dc0904f2122b562278da5fed639b1b5e880d25111561bac5b731  libXmu-1.1.3.tar.bz2\nsha512 8c6cc65b22aa031ad870dd92736681a068a0878a425a53dbed909943da1136c4a24034d467cfd3785c3a8d78f66850b69f1ebe1eb24aaf9bc176b1d171a5c762  libXmu-1.1.3.tar.bz2\n# Locally computed\nsha256 e65a4a8bbf8b0dfd2439d6bc6d86df03e2b8e693b757593b25149e099aeb8ec4  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXmu/xlib_libXmu.mk",
    "content": "################################################################################\n#\n# xlib_libXmu\n#\n################################################################################\n\nXLIB_LIBXMU_VERSION = 1.1.3\nXLIB_LIBXMU_SOURCE = libXmu-$(XLIB_LIBXMU_VERSION).tar.bz2\nXLIB_LIBXMU_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXMU_LICENSE = MIT\nXLIB_LIBXMU_LICENSE_FILES = COPYING\nXLIB_LIBXMU_INSTALL_STAGING = YES\nXLIB_LIBXMU_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXt xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXpm/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXPM\n\tbool \"libXpm\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xpm library\n"
  },
  {
    "path": "package/x11r7/xlib_libXpm/xlib_libXpm.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-December/003034.html\nmd5 6f0ecf8d103d528cfc803aa475137afa  libXpm-3.5.13.tar.bz2\nsha1 38b1a2728adb49f4e255aba1530f51789815ffc4  libXpm-3.5.13.tar.bz2\nsha256 9cd1da57588b6cb71450eff2273ef6b657537a9ac4d02d0014228845b935ac25  libXpm-3.5.13.tar.bz2\nsha512 3b8f6e926272f39b1d95135c2274c00f5aaee1f9fb2ef79f71628df5edeb7ba20158819ef6a778101cc4092493a3b5b613c53634fdccadcc0fc85f0605e5e9a5  libXpm-3.5.13.tar.bz2\n# Locally calculated\nsha256 ed3b06bb3b75a0954bd6837a96b41a4676f60dfeee647271613aadecc0fd596e COPYING\nsha256 cbe4ced0abc8a32bea471204ae01038c202758ce4e772d3d329a341ffa761e71 COPYRIGHT\n"
  },
  {
    "path": "package/x11r7/xlib_libXpm/xlib_libXpm.mk",
    "content": "################################################################################\n#\n# xlib_libXpm\n#\n################################################################################\n\nXLIB_LIBXPM_VERSION = 3.5.13\nXLIB_LIBXPM_SOURCE = libXpm-$(XLIB_LIBXPM_VERSION).tar.bz2\nXLIB_LIBXPM_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXPM_LICENSE = MIT\nXLIB_LIBXPM_LICENSE_FILES = COPYING COPYRIGHT\nXLIB_LIBXPM_CPE_ID_VENDOR = libxpm_project\nXLIB_LIBXPM_CPE_ID_PRODUCT = libxpm\nXLIB_LIBXPM_INSTALL_STAGING = YES\nXLIB_LIBXPM_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXt xorgproto \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv) \\\n\t$(TARGET_NLS_DEPENDENCIES)\nXLIB_LIBXPM_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\n\nifeq ($(BR2_SYSTEM_ENABLE_NLS),)\nXLIB_LIBXPM_CONF_ENV += ac_cv_search_gettext=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXrandr/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXRANDR\n\tbool \"libXrandr\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xrandr library\n"
  },
  {
    "path": "package/x11r7/xlib_libXrandr/xlib_libXrandr.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002979.html\nmd5 18f3b20d522f45e4dadd34afb5bea048  libXrandr-1.5.2.tar.bz2\nsha1 7a1f6df239341b76fd59ebbe101d6f180adb43bb  libXrandr-1.5.2.tar.bz2\nsha256 8aea0ebe403d62330bb741ed595b53741acf45033d3bda1792f1d4cc3daee023  libXrandr-1.5.2.tar.bz2\nsha512 fcd005f9839e7ef980607128a5d76d7b671cc2f5755949e03c569c500d7e987cb3f6932750ab8bf6e2c1086ec69dde09d5831f0c2098b9f9ad46be4f56db0d87  libXrandr-1.5.2.tar.bz2\n# Locally computed\nsha256 73777e5be1cef2827d843e4b186803f050c66db472cf8076d88e2b5f71696e67  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXrandr/xlib_libXrandr.mk",
    "content": "################################################################################\n#\n# xlib_libXrandr\n#\n################################################################################\n\nXLIB_LIBXRANDR_VERSION = 1.5.2\nXLIB_LIBXRANDR_SOURCE = libXrandr-$(XLIB_LIBXRANDR_VERSION).tar.bz2\nXLIB_LIBXRANDR_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXRANDR_LICENSE = MIT\nXLIB_LIBXRANDR_LICENSE_FILES = COPYING\nXLIB_LIBXRANDR_CPE_ID_VENDOR = x.org\nXLIB_LIBXRANDR_CPE_ID_PRODUCT = libxrandr\nXLIB_LIBXRANDR_INSTALL_STAGING = YES\nXLIB_LIBXRANDR_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXrender xorgproto\nXLIB_LIBXRANDR_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXrender/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXRENDER\n\tbool \"libXrender\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xrender library\n"
  },
  {
    "path": "package/x11r7/xlib_libXrender/xlib_libXrender.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2016-October/002725.html\nsha256 c06d5979f86e64cabbde57c223938db0b939dff49fdb5a793a1d3d0396650949  libXrender-0.9.10.tar.bz2\n\n# Locally calculated\nsha256 bbe1db89c48816c48248796adac91defd8fbde1141b145f01511781ab87f29a1  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXrender/xlib_libXrender.mk",
    "content": "################################################################################\n#\n# xlib_libXrender\n#\n################################################################################\n\nXLIB_LIBXRENDER_VERSION = 0.9.10\nXLIB_LIBXRENDER_SOURCE = libXrender-$(XLIB_LIBXRENDER_VERSION).tar.bz2\nXLIB_LIBXRENDER_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXRENDER_LICENSE = MIT\nXLIB_LIBXRENDER_LICENSE_FILES = COPYING\nXLIB_LIBXRENDER_CPE_ID_VENDOR = x.org\nXLIB_LIBXRENDER_CPE_ID_PRODUCT = libxrender\nXLIB_LIBXRENDER_INSTALL_STAGING = YES\nXLIB_LIBXRENDER_DEPENDENCIES = xlib_libX11 xorgproto\nHOST_XLIB_LIBXRENDER_DEPENDENCIES = \\\n\thost-xlib_libX11 host-xorgproto\n\nXLIB_LIBXRENDER_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXres/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXRES\n\tbool \"libXres\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org XRes library\n"
  },
  {
    "path": "package/x11r7/xlib_libXres/xlib_libXres.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-March/003078.html\nsha256  b6e6fb1ebb61610e56017edd928fb89a5f53b3f4f990078309877468663b2b11  libXres-1.2.1.tar.bz2\nsha512  c17d28406e17e305dc4976f095e88059735f5bd8c600adf2e556523c9e0dd7fa01dcbf7a9d28a642e77e49a5b30f54bb9b2fc34bfbedce467ee2a020bba5cdf1  libXres-1.2.1.tar.bz2\n\n# Locally calculated\nsha256  0d7300168f85833ea2564835f66a61e036ede90b33e76c06a7b4078096fedbcc  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXres/xlib_libXres.mk",
    "content": "################################################################################\n#\n# xlib_libXres\n#\n################################################################################\n\nXLIB_LIBXRES_VERSION = 1.2.1\nXLIB_LIBXRES_SOURCE = libXres-$(XLIB_LIBXRES_VERSION).tar.bz2\nXLIB_LIBXRES_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXRES_LICENSE = MIT\nXLIB_LIBXRES_LICENSE_FILES = COPYING\nXLIB_LIBXRES_CPE_ID_VENDOR = x\nXLIB_LIBXRES_CPE_ID_PRODUCT = libxres\nXLIB_LIBXRES_INSTALL_STAGING = YES\nXLIB_LIBXRES_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto\nXLIB_LIBXRES_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXt/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXT\n\tbool \"libXt\"\n\tselect BR2_PACKAGE_XLIB_LIBSM\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XORGPROTO\n\tselect BR2_PACKAGE_XCB_PROTO\n\tselect BR2_PACKAGE_LIBXCB\n\thelp\n\t  X.Org Xt library\n"
  },
  {
    "path": "package/x11r7/xlib_libXt/xlib_libXt.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-January/003070.html\nsha256  679cc08f1646dbd27f5e48ffe8dd49406102937109130caab02ca32c083a3d60  libXt-1.2.1.tar.bz2\nsha512  6877af61ba91eeed6b6f80471b84f354ad0ec0827249c7ee0a00c13508063fe8d2696dd400a4bdbc6ca2ff67cbe1317ad5ac24522fd96099dc56535e33ca052c  libXt-1.2.1.tar.bz2\n# Locally calculated\nsha256  a2866ccc0b1745149e4a2258d934314d40cbb43bd8318c6fa597f233995b0a81 COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXt/xlib_libXt.mk",
    "content": "################################################################################\n#\n# xlib_libXt\n#\n################################################################################\n\nXLIB_LIBXT_VERSION = 1.2.1\nXLIB_LIBXT_SOURCE = libXt-$(XLIB_LIBXT_VERSION).tar.bz2\nXLIB_LIBXT_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXT_LICENSE = MIT\nXLIB_LIBXT_LICENSE_FILES = COPYING\nXLIB_LIBXT_INSTALL_STAGING = YES\nXLIB_LIBXT_CPE_ID_VENDOR = x\nXLIB_LIBXT_CPE_ID_PRODUCT = libxt\nXLIB_LIBXT_DEPENDENCIES = xlib_libSM xlib_libX11 xorgproto xcb-proto libxcb host-xorgproto\nXLIB_LIBXT_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXtst/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXTST\n\tbool \"libXtst\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXI\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xtst library\n"
  },
  {
    "path": "package/x11r7/xlib_libXtst/xlib_libXtst.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2016-October/002726.html\nsha256  4655498a1b8e844e3d6f21f3b2c4e2b571effb5fd83199d428a6ba7ea4bf5204  libXtst-1.2.3.tar.bz2\n# Locally computed\nsha256  940190489c7a0e5ae3d83fc4fcbd79e0cd1b765bf1a4efd408293c1ee0332ceb  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXtst/xlib_libXtst.mk",
    "content": "################################################################################\n#\n# xlib_libXtst\n#\n################################################################################\n\nXLIB_LIBXTST_VERSION = 1.2.3\nXLIB_LIBXTST_SOURCE = libXtst-$(XLIB_LIBXTST_VERSION).tar.bz2\nXLIB_LIBXTST_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXTST_LICENSE = MIT\nXLIB_LIBXTST_LICENSE_FILES = COPYING\nXLIB_LIBXTST_INSTALL_STAGING = YES\nXLIB_LIBXTST_CPE_ID_VENDOR = x\nXLIB_LIBXTST_CPE_ID_PRODUCT = libxtst\n\nXLIB_LIBXTST_DEPENDENCIES = \\\n\txlib_libX11 \\\n\txlib_libXext \\\n\txlib_libXi \\\n\txorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXv/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXV\n\tbool \"libXv\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xv library\n"
  },
  {
    "path": "package/x11r7/xlib_libXv/xlib_libXv.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2016-October/002727.html\nsha256 d26c13eac99ac4504c532e8e76a1c8e4bd526471eb8a0a4ff2a88db60cb0b088  libXv-1.0.11.tar.bz2\n\n# Locally calculated\nsha256 4fac4d581d00f11c459d68b7cb970f3d4e5a5bbfb53784d85f59a90076280301  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXv/xlib_libXv.mk",
    "content": "################################################################################\n#\n# xlib_libXv\n#\n################################################################################\n\nXLIB_LIBXV_VERSION = 1.0.11\nXLIB_LIBXV_SOURCE = libXv-$(XLIB_LIBXV_VERSION).tar.bz2\nXLIB_LIBXV_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXV_LICENSE = ISC-like\nXLIB_LIBXV_LICENSE_FILES = COPYING\nXLIB_LIBXV_CPE_ID_VENDOR = x.org\nXLIB_LIBXV_CPE_ID_PRODUCT = libxv\nXLIB_LIBXV_INSTALL_STAGING = YES\nXLIB_LIBXV_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto\nXLIB_LIBXV_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXvMC/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXVMC\n\tbool \"libXvMC\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXV\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org XvMC library\n"
  },
  {
    "path": "package/x11r7/xlib_libXvMC/xlib_libXvMC.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-September/003023.html\nmd5 3569ff7f3e26864d986d6a21147eaa58  libXvMC-1.0.12.tar.bz2\nsha1 4871f92a83faa86aff5c630a2d6016c67bf11b97  libXvMC-1.0.12.tar.bz2\nsha256 6b3da7977b3f7eaf4f0ac6470ab1e562298d82c4e79077765787963ab7966dcd  libXvMC-1.0.12.tar.bz2\nsha512 62cb9a72b20af3b081d2d555a253b0e2b8b26b31f4fad10bd3e53bbf96e1663b61bd8df2b78b16f18218cd37cce0c9e6809ae16ded226b37a8b199e41b223955  libXvMC-1.0.12.tar.bz2\n\n# Locally computed\nsha256 b7c709df281675a07eb60a71c5fa2599d1ef538eb79ae7ad6e774b10e4a804c4  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXvMC/xlib_libXvMC.mk",
    "content": "################################################################################\n#\n# xlib_libXvMC\n#\n################################################################################\n\nXLIB_LIBXVMC_VERSION = 1.0.12\nXLIB_LIBXVMC_SOURCE = libXvMC-$(XLIB_LIBXVMC_VERSION).tar.bz2\nXLIB_LIBXVMC_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXVMC_LICENSE = MIT\nXLIB_LIBXVMC_LICENSE_FILES = COPYING\nXLIB_LIBXVMC_CPE_ID_VENDOR = x.org\nXLIB_LIBXVMC_CPE_ID_PRODUCT = libxvmc\nXLIB_LIBXVMC_INSTALL_STAGING = YES\nXLIB_LIBXVMC_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXv xorgproto\nXLIB_LIBXVMC_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXxf86dga/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXXF86DGA\n\tbool \"libXxf86dga\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xxf86dga library\n"
  },
  {
    "path": "package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002982.html\nmd5 0ddeafc13b33086357cfa96fae41ee8e  libXxf86dga-1.1.5.tar.bz2\nsha1 332ba80d1b3d06473f7bbfe1612e7c5b58fbdf69  libXxf86dga-1.1.5.tar.bz2\nsha256 2b98bc5f506c6140d4eddd3990842d30f5dae733b64f198a504f07461bdb7203  libXxf86dga-1.1.5.tar.bz2\nsha512 0e77c4003aeba737b10c17d55aeefa935fc57c4ba9e8f79a834f3f8c690d6a1d98f69ad707eded784346c1cf40c41829719d257283b5eae3207147fb4c79ed89  libXxf86dga-1.1.5.tar.bz2\n# Locally computed\nsha256 dd27933ebc5c063128b158b085e4c442a36b0e6f704cf753116da119610191da  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.mk",
    "content": "################################################################################\n#\n# xlib_libXxf86dga\n#\n################################################################################\n\nXLIB_LIBXXF86DGA_VERSION = 1.1.5\nXLIB_LIBXXF86DGA_SOURCE = libXxf86dga-$(XLIB_LIBXXF86DGA_VERSION).tar.bz2\nXLIB_LIBXXF86DGA_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXXF86DGA_LICENSE = MIT\nXLIB_LIBXXF86DGA_LICENSE_FILES = COPYING\nXLIB_LIBXXF86DGA_CPE_ID_VENDOR = x\nXLIB_LIBXXF86DGA_CPE_ID_PRODUCT = libxxf86dga\nXLIB_LIBXXF86DGA_INSTALL_STAGING = YES\nXLIB_LIBXXF86DGA_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto\nXLIB_LIBXXF86DGA_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libXxf86vm/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXXF86VM\n\tbool \"libXxf86vm\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org Xxf86vm library\n"
  },
  {
    "path": "package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.hash",
    "content": "# From http://lists.x.org/archives/xorg-announce/2015-February/002539.html\nsha1\t78ef18ca2be157131899e01c62679e247409a13f\t\t\t\tlibXxf86vm-1.1.4.tar.bz2\nsha256\tafee27f93c5f31c0ad582852c0fb36d50e4de7cd585fcf655e278a633d85cd57\tlibXxf86vm-1.1.4.tar.bz2\n\n# Locally calculated\nsha256\tf3da8eaed19e27e4f67e6f076d4ebdb8d649e15a8ad33a415fb65a23de1b6689\tCOPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.mk",
    "content": "################################################################################\n#\n# xlib_libXxf86vm\n#\n################################################################################\n\nXLIB_LIBXXF86VM_VERSION = 1.1.4\nXLIB_LIBXXF86VM_SOURCE = libXxf86vm-$(XLIB_LIBXXF86VM_VERSION).tar.bz2\nXLIB_LIBXXF86VM_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXXF86VM_LICENSE = MIT\nXLIB_LIBXXF86VM_LICENSE_FILES = COPYING\nXLIB_LIBXXF86VM_CPE_ID_VENDOR = x\nXLIB_LIBXXF86VM_CPE_ID_PRODUCT = libxxf86vm\nXLIB_LIBXXF86VM_INSTALL_STAGING = YES\nXLIB_LIBXXF86VM_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto\nXLIB_LIBXXF86VM_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libdmx/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBDMX\n\tbool \"libdmx\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org dmx library\n"
  },
  {
    "path": "package/x11r7/xlib_libdmx/xlib_libdmx.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-May/002894.html\nmd5 d2f1f0ec68ac3932dd7f1d9aa0a7a11c  libdmx-1.1.4.tar.bz2\nsha1 499e2540ca0e94ca858037865243c3c60908fd94  libdmx-1.1.4.tar.bz2\nsha256 253f90005d134fa7a209fbcbc5a3024335367c930adf0f3203e754cf32747243  libdmx-1.1.4.tar.bz2\nsha512 77aba6cadfd17db0cc7e1bc26f14d908223a0fdb135d46f86c3be34e3bc7e2f843f08d4d0ef773357e83b17122bffe56a0442d12908378c05a22177b10ae10e9  libdmx-1.1.4.tar.bz2\n# Locally computed\nsha256 819e8dcd3dd2a44850c350331aa492230f86bccb0983dd739dec5ba36d7d2b8e  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libdmx/xlib_libdmx.mk",
    "content": "################################################################################\n#\n# xlib_libdmx\n#\n################################################################################\n\nXLIB_LIBDMX_VERSION = 1.1.4\nXLIB_LIBDMX_SOURCE = libdmx-$(XLIB_LIBDMX_VERSION).tar.bz2\nXLIB_LIBDMX_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBDMX_LICENSE = MIT\nXLIB_LIBDMX_LICENSE_FILES = COPYING\nXLIB_LIBDMX_CPE_ID_VENDOR = x\nXLIB_LIBDMX_CPE_ID_PRODUCT = libdmx\nXLIB_LIBDMX_INSTALL_STAGING = YES\nXLIB_LIBDMX_DEPENDENCIES = xlib_libX11 xlib_libXext xorgproto\nXLIB_LIBDMX_CONF_OPTS = --disable-malloc0returnsnull\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libfontenc/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBFONTENC\n\tbool \"libfontenc\"\n\tselect BR2_PACKAGE_XORGPROTO\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  X.Org fontenc library\n"
  },
  {
    "path": "package/x11r7/xlib_libfontenc/xlib_libfontenc.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-February/002956.html\nmd5 6447db6a689fb530c218f0f8328c3abc  libfontenc-1.1.4.tar.bz2\nsha1 d4f232b0b07487b984e13422ce4130b61a8b9edb  libfontenc-1.1.4.tar.bz2\nsha256 2cfcce810ddd48f2e5dc658d28c1808e86dcf303eaff16728b9aa3dbc0092079  libfontenc-1.1.4.tar.bz2\nsha512 76fa851d00113241f15fdd5b5bb7e927b8d8b9a82ce3fcb0678b8c7e32cb5e8d898c4bda1d60dafb7748145049d3240627ac34a2360c64e98a7a912ea7c30582  libfontenc-1.1.4.tar.bz2\n# Locally computed\nsha256 a4dda7a643b517794bfa23dc9605da030055df38ac8a5b9e1905e690975a59c4  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libfontenc/xlib_libfontenc.mk",
    "content": "################################################################################\n#\n# xlib_libfontenc\n#\n################################################################################\n\nXLIB_LIBFONTENC_VERSION = 1.1.4\nXLIB_LIBFONTENC_SOURCE = libfontenc-$(XLIB_LIBFONTENC_VERSION).tar.bz2\nXLIB_LIBFONTENC_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBFONTENC_LICENSE = MIT\nXLIB_LIBFONTENC_LICENSE_FILES = COPYING\nXLIB_LIBFONTENC_INSTALL_STAGING = YES\nXLIB_LIBFONTENC_DEPENDENCIES = zlib xorgproto host-pkgconf\nHOST_XLIB_LIBFONTENC_DEPENDENCIES = host-zlib host-xorgproto host-pkgconf\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libxkbfile/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXKBFILE\n\tbool \"libxkbfile\"\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org xkbfile library\n"
  },
  {
    "path": "package/x11r7/xlib_libxkbfile/xlib_libxkbfile.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002977.html\nmd5 dd7e1e946def674e78c0efbc5c7d5b3b  libxkbfile-1.1.0.tar.bz2\nsha1 487f314b6dbc17e93d0fe1e3741392156a9ca895  libxkbfile-1.1.0.tar.bz2\nsha256 758dbdaa20add2db4902df0b1b7c936564b7376c02a0acd1f2a331bd334b38c7  libxkbfile-1.1.0.tar.bz2\nsha512 1c6a57564e916ccdc3df3c49b9f3589f701df0cec55112c12ddc35ac3ed556608c28fe98e5ba0ac1962e9a65ed1e90eb7e6169b564951bf55a7cf3499b745826  libxkbfile-1.1.0.tar.bz2\n# Locally computed\nsha256 e1b3fdad8037ab3f986ef9caaa7c8da47d8d55875e680c7d6011f6c07363ea7c  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libxkbfile/xlib_libxkbfile.mk",
    "content": "################################################################################\n#\n# xlib_libxkbfile\n#\n################################################################################\n\nXLIB_LIBXKBFILE_VERSION = 1.1.0\nXLIB_LIBXKBFILE_SOURCE = libxkbfile-$(XLIB_LIBXKBFILE_VERSION).tar.bz2\nXLIB_LIBXKBFILE_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXKBFILE_LICENSE = MIT\nXLIB_LIBXKBFILE_LICENSE_FILES = COPYING\nXLIB_LIBXKBFILE_INSTALL_STAGING = YES\nXLIB_LIBXKBFILE_DEPENDENCIES = xlib_libX11 xorgproto\nHOST_XLIB_LIBXKBFILE_DEPENDENCIES = host-xlib_libX11 host-xorgproto\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_libxshmfence/Config.in",
    "content": "config BR2_PACKAGE_XLIB_LIBXSHMFENCE\n\tbool \"libxshmfence\"\n\t# Due to use of SYS_futex - can be enabled again when upstream\n\t# adds SYS_futex64 as an alternative\n\tdepends on !BR2_RISCV_32\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  X.Org shmfence library\n"
  },
  {
    "path": "package/x11r7/xlib_libxshmfence/xlib_libxshmfence.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2018-February/002840.html\nmd5 42dda8016943dc12aff2c03a036e0937  libxshmfence-1.3.tar.bz2\nsha1 3472218fc0e8ee8183533d22dbcd4bbe90bf3ab8  libxshmfence-1.3.tar.bz2\nsha256 b884300d26a14961a076fbebc762a39831cb75f92bed5ccf9836345b459220c7  libxshmfence-1.3.tar.bz2\nsha512 c446e055f8fac62b9aa266132289a4cfc030282147974c45ce96d1768a98d1afb997470e58e4a68513174c404cbf373bdde2f0cd4b34abdbce1d89dd0b6fe2b7  libxshmfence-1.3.tar.bz2\n# Locally computed\nsha256 64a579d1a0b3347301d87c94698a58ea7933d0ae6ca7e8fdd702fde2ea376301  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_libxshmfence/xlib_libxshmfence.mk",
    "content": "################################################################################\n#\n# xlib_libxshmfence\n#\n################################################################################\n\nXLIB_LIBXSHMFENCE_VERSION = 1.3\nXLIB_LIBXSHMFENCE_SOURCE = libxshmfence-$(XLIB_LIBXSHMFENCE_VERSION).tar.bz2\nXLIB_LIBXSHMFENCE_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_LIBXSHMFENCE_LICENSE = MIT\nXLIB_LIBXSHMFENCE_LICENSE_FILES = COPYING\nXLIB_LIBXSHMFENCE_INSTALL_STAGING = YES\nXLIB_LIBXSHMFENCE_DEPENDENCIES = host-pkgconf xorgproto\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xlib_xtrans/Config.in",
    "content": "config BR2_PACKAGE_XLIB_XTRANS\n\tbool \"xtrans\"\n\thelp\n\t  X.Org xtrans library\n"
  },
  {
    "path": "package/x11r7/xlib_xtrans/xlib_xtrans.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002980.html\nmd5 ce2fb8100c6647ee81451ebe388b17ad  xtrans-1.4.0.tar.bz2\nsha1 7c490026efb450798e02b040c05eba5212291c08  xtrans-1.4.0.tar.bz2\nsha256 377c4491593c417946efcd2c7600d1e62639f7a8bbca391887e2c4679807d773  xtrans-1.4.0.tar.bz2\nsha512 4fea89a3455c0e13321cbefa43340016dbb59bdd0dbdb5b796c1a6d2a6b1fd63cf1327b769ab426286b9c54b32ec764a50cd2b46228e4e43b841bda6b94de214  xtrans-1.4.0.tar.bz2\n# Locally computed\nsha256 a9c96c832e00774266b492d4d41556f12a64f039ba3ef645c4b8c6010fcb8f2a  COPYING\n"
  },
  {
    "path": "package/x11r7/xlib_xtrans/xlib_xtrans.mk",
    "content": "################################################################################\n#\n# xlib_xtrans\n#\n################################################################################\n\nXLIB_XTRANS_VERSION = 1.4.0\nXLIB_XTRANS_SOURCE = xtrans-$(XLIB_XTRANS_VERSION).tar.bz2\nXLIB_XTRANS_SITE = http://xorg.freedesktop.org/releases/individual/lib\nXLIB_XTRANS_LICENSE = MIT\nXLIB_XTRANS_LICENSE_FILES = COPYING\nXLIB_XTRANS_INSTALL_STAGING = YES\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xorgproto/Config.in",
    "content": "config BR2_PACKAGE_XORGPROTO\n\tbool \"xorgproto\"\n\thelp\n\t  This package combines the protocol headers, which were\n\t  formerly scattered in individual packages.\n"
  },
  {
    "path": "package/x11r7/xorgproto/xorgproto.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-April/003085.html\nsha256  0f5157030162844b398e7ce69b8bb967c2edb8064b0a9c9bb5517eb621459fbf  xorgproto-2021.4.tar.bz2\nsha512  0d905e5f135daf7005e23371cbdc41a62d99567e0a20784e71ead0092ffd1e7582733819f7198add1d97edcc9aa80012ae01d2be8367280d69b41d0c25349367  xorgproto-2021.4.tar.bz2\n\n# Locally computed\nsha256  aacd931f191b610902aee1e526090c2858aabc07969441fa2537ffd3e7049555  COPYING-applewmproto\nsha256  dabc025f93129a0eb2d17f37c719dbe5ecbcb5bc8f7bc7f4ce89fe04576cc0c2  COPYING-bigreqsproto\nsha256  ab587ca94282c1e60797ffe4a77aea195418387db20ec7e0c24cedf2c844f8c1  COPYING-compositeproto\nsha256  f67a18cb46c4c203c5122b4a901cfcc3178b2a62f83f31ca5fef5bdca3966094  COPYING-damageproto\nsha256  819e8dcd3dd2a44850c350331aa492230f86bccb0983dd739dec5ba36d7d2b8e  COPYING-dmxproto\nsha256  0c306691492c4d7a8cda1ec3847668b797887dddcd7e986b4c166ae27619af7d  COPYING-dri2proto\nsha256  64a579d1a0b3347301d87c94698a58ea7933d0ae6ca7e8fdd702fde2ea376301  COPYING-dri3proto\nsha256  0aa43d03da3cedbd9882c0ded621b0d855353eb9e551f9eed940d75c8a0b03c1  COPYING-evieproto\nsha256  65cb0b867b00fb27f066a37353713b265645b3301146562570d7638ed2ddd548  COPYING-fixesproto\nsha256  1ab381e978bff63d68be2e4f235d51935f3f16f3ba3bebf83afa99a70c0484a2  COPYING-fontcacheproto\nsha256  f4af05774b02ae149357cc26f7bf5ef1116c2e09373c2492081a3a1892c58417  COPYING-fontsproto\nsha256  823deb4673d3f26aa8c90e704888299648f00be3262f9363eaeecedcd65b936d  COPYING-glproto\nsha256  5e083a2ace0215a6084c877c023a6079952ba803d692488203ba4269196debe3  COPYING-inputproto\nsha256  d397a67d4b28e897bc5fce79b2b917df9905b54f961fc3ad1f49c7fe3803f92c  COPYING-kbproto\nsha256  7a5dd5d4c989c167da50f15879959f42bbda960e06d0a0aea7197f61fe1dc846  COPYING-lg3dproto\nsha256  8442b5f22f2fb13017a4302a906e7dedc899267b41f613558970941120170128  COPYING-pmproto\nsha256  64a579d1a0b3347301d87c94698a58ea7933d0ae6ca7e8fdd702fde2ea376301  COPYING-presentproto\nsha256  6b890b118261694865988378dbba876bcd9caa1a421c5c0d626116948bc0ae35  COPYING-printproto\nsha256  41c13dcd09147ed2440286f2fb8151df8ebee06deee4ed78ddf094601c216d3d  COPYING-randrproto\nsha256  ee10aee0f1697ffdbe870a39f037361d4f7136f2976bb7919a41b3f66407caee  COPYING-recordproto\nsha256  9e48921a94da36d7a69fe71809223ee0bb46370db9842dccdeeb55b5a9946872  COPYING-renderproto\nsha256  403e7be948674530ad40669b1e3a31adeddb656502f3b0ef810d5d3cc35d0b52  COPYING-resourceproto\nsha256  fcbd3c628bf4d28ee3e6032054bf44bbe58f3b1a944dad856a8d3eb6b37ea412  COPYING-scrnsaverproto\nsha256  d6d3513f5a7099748dc387f54498d799380b45f8a444f13aa98aa45a860ae55b  COPYING-trapproto\nsha256  f8f49bbad61967ebc890fb79fff5bfb7cfc1c341aa8f8dee13eb3fb534040b47  COPYING-videoproto\nsha256  eb183a00c61bb47992f096b6993ed7ec17518bea9c285fe87efff7f622cc6c12  COPYING-windowswmproto\nsha256  3bd8e0c41497bfe6ab8d11c3c90c5e79edd0b2437f2bf81161575f54bae53f21  COPYING-x11proto\nsha256  5531d18cfcc944dab39991f63f182cbbce3fe493ba0c7cf08a25c0d01ee84482  COPYING-xcmiscproto\nsha256  fb42146c6c06a200a9b121220eb692ff9101ba0fbd0b224b9e16a016c59ae86a  COPYING-xextproto\nsha256  3591964e01a9cdfc9cc4149a847a431a3f3d98328cc9e5864c7a7831b29c4058  COPYING-xf86bigfontproto\nsha256  3591964e01a9cdfc9cc4149a847a431a3f3d98328cc9e5864c7a7831b29c4058  COPYING-xf86dgaproto\nsha256  4a05d06752388d9db71ee1006f371d4fb2c316a821fc2fc272db90b3ef978334  COPYING-xf86driproto\nsha256  3591964e01a9cdfc9cc4149a847a431a3f3d98328cc9e5864c7a7831b29c4058  COPYING-xf86miscproto\nsha256  3591964e01a9cdfc9cc4149a847a431a3f3d98328cc9e5864c7a7831b29c4058  COPYING-xf86rushproto\nsha256  942bb46a3503a708948491699171b00b9e0dfb47818d9268b160bccc5f51a4b9  COPYING-xf86vidmodeproto\nsha256  b2d8cda803e900915ce10f0ba735ff2c033b39c7cc5a8a436667ca583d4066fa  COPYING-xineramaproto\n"
  },
  {
    "path": "package/x11r7/xorgproto/xorgproto.mk",
    "content": "################################################################################\n#\n# xorgproto\n#\n################################################################################\n\nXORGPROTO_VERSION = 2021.4\nXORGPROTO_SOURCE = xorgproto-$(XORGPROTO_VERSION).tar.bz2\nXORGPROTO_SITE = https://xorg.freedesktop.org/archive/individual/proto\nXORGPROTO_LICENSE = MIT\nXORGPROTO_LICENSE_FILES = \\\n\tCOPYING-applewmproto \\\n\tCOPYING-bigreqsproto \\\n\tCOPYING-compositeproto \\\n\tCOPYING-damageproto \\\n\tCOPYING-dmxproto \\\n\tCOPYING-dri2proto \\\n\tCOPYING-dri3proto \\\n\tCOPYING-evieproto \\\n\tCOPYING-fixesproto \\\n\tCOPYING-fontcacheproto \\\n\tCOPYING-fontsproto \\\n\tCOPYING-glproto \\\n\tCOPYING-inputproto \\\n\tCOPYING-kbproto \\\n\tCOPYING-lg3dproto \\\n\tCOPYING-pmproto \\\n\tCOPYING-presentproto \\\n\tCOPYING-printproto \\\n\tCOPYING-randrproto \\\n\tCOPYING-recordproto \\\n\tCOPYING-renderproto \\\n\tCOPYING-resourceproto \\\n\tCOPYING-scrnsaverproto \\\n\tCOPYING-trapproto \\\n\tCOPYING-videoproto \\\n\tCOPYING-windowswmproto \\\n\tCOPYING-x11proto \\\n\tCOPYING-xcmiscproto \\\n\tCOPYING-xextproto \\\n\tCOPYING-xf86bigfontproto \\\n\tCOPYING-xf86dgaproto \\\n\tCOPYING-xf86driproto \\\n\tCOPYING-xf86miscproto \\\n\tCOPYING-xf86rushproto \\\n\tCOPYING-xf86vidmodeproto \\\n\tCOPYING-xineramaproto\nXORGPROTO_INSTALL_STAGING = YES\nXORGPROTO_INSTALL_TARGET = NO\n# xproxymngproto is needed by xfindproxy\nXORGPROTO_CONF_OPTS += --enable-legacy\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11r7/xserver_xorg-server/0001-modesettings-needs-dri2.patch",
    "content": "Kernel modesettings support also depends on dri2, see\nhttp://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/drivers/modesetting/Makefile.am#n46\n\nPatch sent upstream: https://gitlab.freedesktop.org/xorg/xserver/issues/479\n\n[rebased for version 1.20.0]\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr xorg-server-1.17.2.org/configure.ac xorg-server-1.17.2/configure.ac\n--- xorg-server-1.17.2.org/configure.ac\t2015-06-16 17:42:40.000000000 +0200\n+++ xorg-server-1.17.2/configure.ac\t2015-08-08 10:44:59.702382624 +0200\n@@ -1962,7 +1962,7 @@\n \t        XORG_SYS_LIBS=\"$XORG_SYS_LIBS $XORG_MODULES_LIBS\"\n \tfi\n \n-\tif test \"x$DRM\" = xyes; then\n+\tif test \"x$DRM\" = xyes -a \"x$DRI2\" = xyes; then\n \t\tXORG_DRIVER_MODESETTING=yes\n \tfi\n \n"
  },
  {
    "path": "package/x11r7/xserver_xorg-server/0002-include-misc.h-fix-uClibc-build.patch",
    "content": "From 2e8fca00f5bdb02f2f59aaa428d1e9d808ab0e86 Mon Sep 17 00:00:00 2001\nFrom: Bernd Kuhls <bernd.kuhls@t-online.de>\nDate: Sat, 16 Jun 2018 19:20:16 +0200\nSubject: [PATCH] include/misc.h: fix uClibc build\n\nA similar fix was used for Dovecot:\nhttps://www.dovecot.org/list/dovecot/2017-November/110019.html\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n---\n include/misc.h | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/include/misc.h b/include/misc.h\nindex 14920c3c3..390e52b60 100644\n--- a/include/misc.h\n+++ b/include/misc.h\n@@ -185,6 +185,10 @@ typedef struct _xReq *xReqPtr;\n #endif\n #endif\n \n+#undef bswap_16\n+#undef bswap_32\n+#undef bswap_64\n+\n /**\n  * Calculate the number of bytes needed to hold bits.\n  * @param bits The minimum number of bits needed.\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/x11r7/xserver_xorg-server/0003-hw-xwayland-Makefile.am-fix-build-without-glx.patch",
    "content": "From b1d2a82d644518c1a75775244ac63be738aaf062 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 19 Apr 2019 10:19:50 +0200\nSubject: [PATCH] hw/xwayland/Makefile.am: fix build without glx\n\nCommit d8ec33fe0542141aed1d9016d2ecaf52da944b4b added libglxvnd.la to\nXwayland_LDFLAGS but GLX can be disabled through --disable-glx.\nIn this case, build fails on:\n\nmake[3]: *** No rule to make target '../../glx/libglxvnd.la', needed by 'Xwayland'.  Stop.\nmake[3]: *** Waiting for unfinished jobs....\n\nFixes:\n - http://autobuild.buildroot.org/results/397f8098c57fc6c88aa12dc8d35ebb1b933d52ef\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status:\nhttps://gitlab.freedesktop.org/xorg/xserver/merge_requests/173]\n---\n hw/xwayland/Makefile.am | 6 +++++-\n 1 file changed, 5 insertions(+), 1 deletion(-)\n\ndiff --git a/hw/xwayland/Makefile.am b/hw/xwayland/Makefile.am\nindex bc1cb8506..502879e2a 100644\n--- a/hw/xwayland/Makefile.am\n+++ b/hw/xwayland/Makefile.am\n@@ -21,10 +21,14 @@ Xwayland_SOURCES =\t\t\t\t\\\n \t$(top_srcdir)/Xi/stubs.c\t\t\\\n \t$(top_srcdir)/mi/miinitext.c\n \n+if GLX\n+GLXVND_LIB = $(top_builddir)/glx/libglxvnd.la\n+endif\n+\n Xwayland_LDADD =\t\t\t\t\\\n \t$(glamor_lib)\t\t\t\t\\\n \t$(XWAYLAND_LIBS)\t\t\t\\\n-\t$(top_builddir)/glx/libglxvnd.la\t\\\n+\t$(GLXVND_LIB)\t\t\t\t\\\n \t$(XWAYLAND_SYS_LIBS)\t\t\t\\\n \t$(top_builddir)/Xext/libXvidmode.la\t\\\n \t$(XSERVER_SYS_LIBS)\n-- \n2.20.1\n\n"
  },
  {
    "path": "package/x11r7/xserver_xorg-server/0004-hw-xfree86-common-xf86Init.c-fix-build-without-glx.patch",
    "content": "From 49456e0a37fac7bc9d1f01bc1519fb0d699956db Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 27 Dec 2019 23:33:37 +0100\nSubject: [PATCH] hw/xfree86/common/xf86Init.c: fix build without glx\n\nSince commit d8ec33fe0542141aed1d9016d2ecaf52da944b4b, an include on\nglxvndabi.h has been added to hw/xfree86/common/xf86Init.c\n\nHowever, if glx is disabled through --disable-glx and GLX headers are\nnot installed in the build's environment, build fails on:\n\nIn file included from xf86Init.c:81:\n../../../include/glxvndabi.h:64:10: fatal error: GL/glxproto.h: No such file or directory\n   64 | #include <GL/glxproto.h>\n      |          ^~~~~~~~~~~~~~~\n\nFix this failure by removing this include which does not seem to be\nneeded (an other option would have been to keep it under an ifdef GLXEXT\nblock)\n\nFixes:\n - http://autobuild.buildroot.org/results/de838a843f97673d1381a55fd4e9b07164693913\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Retrieved from:\nhttps://gitlab.freedesktop.org/xorg/xserver/commit/49456e0a37fac7bc9d1f01bc1519fb0d699956db]\n---\n hw/xfree86/common/xf86Init.c | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c\nindex 0631c7237..e6fb11398 100644\n--- a/hw/xfree86/common/xf86Init.c\n+++ b/hw/xfree86/common/xf86Init.c\n@@ -78,7 +78,6 @@\n #include \"xf86InPriv.h\"\n #include \"picturestr.h\"\n #include \"randrstr.h\"\n-#include \"glxvndabi.h\"\n #include \"xf86Bus.h\"\n #ifdef XSERVER_LIBPCIACCESS\n #include \"xf86VGAarbiter.h\"\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/x11r7/xserver_xorg-server/0005-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch",
    "content": "From e50c85f4ebf559a3bac4817b41074c43d4691779 Mon Sep 17 00:00:00 2001\nFrom: Eric Anholt <eric@anholt.net>\nDate: Fri, 26 Oct 2018 17:47:30 -0700\nSubject: [PATCH] Fix segfault on probing a non-PCI platform device on a system\n with PCI.\n\nSome Broadcom set-top-box boards have PCI busses, but the GPU is still\nprobed through DT.  We would dereference a null busid here in that\ncase.\n\nSigned-off-by: Eric Anholt <eric@anholt.net>\nBackported from: e50c85f4ebf559a3bac4817b41074c43d4691779\nSigned-off-by: Joseph Kogut <joseph.kogut@gmail.com>\n---\n hw/xfree86/common/xf86platformBus.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c\nindex cef47da03..dadbac6c8 100644\n--- a/hw/xfree86/common/xf86platformBus.c\n+++ b/hw/xfree86/common/xf86platformBus.c\n@@ -289,7 +289,7 @@ xf86platformProbe(void)\n     for (i = 0; i < xf86_num_platform_devices; i++) {\n         char *busid = xf86_platform_odev_attributes(i)->busid;\n\n-        if (pci && (strncmp(busid, \"pci:\", 4) == 0)) {\n+        if (pci && busid && (strncmp(busid, \"pci:\", 4) == 0)) {\n             platform_find_pci_info(&xf86_platform_devices[i], busid);\n         }\n\n--\n2.24.1\n\n"
  },
  {
    "path": "package/x11r7/xserver_xorg-server/0006-compiler.h-don-t-define-inb-outb-and-friends-on-mips.patch",
    "content": "From de5e24b5036a1a5a877f8f30169e3497d0e296d6 Mon Sep 17 00:00:00 2001\nFrom: Julien Cristau <jcristau@debian.org>\nDate: Wed, 6 Jan 2021 10:20:53 +0100\nSubject: [PATCH] compiler.h: don't define inb/outb and friends on mips\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe definition relies on IOPortBase, which is only ever set in\nhw/xfree86/os-support/bsd/arm_video.c\n\nThis caused build failures on linux/mips with GCC 10, due to this\nchange (from https://gcc.gnu.org/gcc-10/changes.html#c):\n\n\"GCC now defaults to -fno-common. As a result, global variable accesses\nare more efficient on various targets. In C, global variables with\nmultiple tentative definitions now result in linker errors. With\n-fcommon such definitions are silently merged during linking.\"\n\nAs a result anything including compiler.h would get its own definition\nof IOPortBase and the linker would error out.\n\nSigned-off-by: Raphaël Mélotte <raphael.melotte@mind.be>\n---\n hw/xfree86/common/compiler.h          | 8 ++------\n hw/xfree86/os-support/bsd/arm_video.c | 3 +++\n 2 files changed, 5 insertions(+), 6 deletions(-)\n\ndiff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h\nindex 2b2008b3f..eb788d3fd 100644\n--- a/hw/xfree86/common/compiler.h\n+++ b/hw/xfree86/common/compiler.h\n@@ -518,14 +518,10 @@ xf86WriteMmio32Le(__volatile__ void *base, const unsigned long offset,\n     barrier();\n }\n \n-#elif defined(__mips__) || (defined(__arm32__) && !defined(__linux__))\n-#if defined(__arm32__) || defined(__mips64)\n+#elif defined(__arm32__) && !defined(__linux__)\n #define PORT_SIZE long\n-#else\n-#define PORT_SIZE short\n-#endif\n \n-_X_EXPORT unsigned int IOPortBase;      /* Memory mapped I/O port area */\n+extern _X_EXPORT unsigned int IOPortBase;      /* Memory mapped I/O port area */\n \n static __inline__ void\n outb(unsigned PORT_SIZE port, unsigned char val)\ndiff --git a/hw/xfree86/os-support/bsd/arm_video.c b/hw/xfree86/os-support/bsd/arm_video.c\nindex dd1020e33..180d70543 100644\n--- a/hw/xfree86/os-support/bsd/arm_video.c\n+++ b/hw/xfree86/os-support/bsd/arm_video.c\n@@ -65,6 +65,7 @@\n #include \"xf86Priv.h\"\n #include \"xf86_OSlib.h\"\n #include \"xf86OSpriv.h\"\n+#include \"compiler.h\"\n \n #if defined(__NetBSD__) && !defined(MAP_FILE)\n #define MAP_FLAGS MAP_SHARED\n@@ -162,6 +163,8 @@ xf86DisableIO()\n \n #if defined(USE_ARC_MMAP) || defined(__arm32__)\n \n+unsigned int IOPortBase;\n+\n Bool\n xf86EnableIO()\n {\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/x11r7/xserver_xorg-server/Config.in",
    "content": "comment \"xorg-server needs a glibc or uClibc toolchain\"\n\tdepends on BR2_arm && BR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_XSERVER_XORG_SERVER\n\tbool \"xorg-server\"\n\tdepends on BR2_USE_MMU # fork()\n\t# xserver uses inb/outb on arm, which aren't available with musl\n\tdepends on !(BR2_arm && BR2_TOOLCHAIN_USES_MUSL)\n\t# We need a SHA1 implementation. If either openssl or\n\t# libgcrypt are already part of the build, we'll use one of\n\t# them, otherwise, use the small libsha1 library.\n\tselect BR2_PACKAGE_LIBSHA1 if (!BR2_PACKAGE_OPENSSL && !BR2_PACKAGE_LIBGCRYPT)\n\tselect BR2_PACKAGE_MCOOKIE\n\tselect BR2_PACKAGE_PIXMAN\n\tselect BR2_PACKAGE_XFONT_FONT_ALIAS if !BR2_PACKAGE_XSERVER_XORG_SERVER_BUILTIN_FONTS\n\tselect BR2_PACKAGE_XFONT_FONT_MISC_MISC if !BR2_PACKAGE_XSERVER_XORG_SERVER_BUILTIN_FONTS\n\tselect BR2_PACKAGE_XFONT_FONT_CURSOR_MISC if !BR2_PACKAGE_XSERVER_XORG_SERVER_BUILTIN_FONTS\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXAU\n\tselect BR2_PACKAGE_XLIB_LIBXCURSOR\n\tselect BR2_PACKAGE_XLIB_LIBXDAMAGE\n\tselect BR2_PACKAGE_XLIB_LIBXDMCP\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXFIXES\n\tselect BR2_PACKAGE_XLIB_LIBXFONT2\n\tselect BR2_PACKAGE_XLIB_LIBXFT\n\tselect BR2_PACKAGE_XLIB_LIBXI\n\tselect BR2_PACKAGE_XLIB_LIBXINERAMA\n\tselect BR2_PACKAGE_XLIB_LIBXRANDR\n\tselect BR2_PACKAGE_XLIB_LIBXRENDER\n\tselect BR2_PACKAGE_XLIB_LIBXRES\n\tselect BR2_PACKAGE_XLIB_LIBXXF86VM\n\tselect BR2_PACKAGE_XLIB_LIBXKBFILE\n\tselect BR2_PACKAGE_XLIB_XTRANS\n\tselect BR2_PACKAGE_XDATA_XBITMAPS\n\tselect BR2_PACKAGE_XORGPROTO\n\tselect BR2_PACKAGE_XUTIL_UTIL_MACROS\n\tselect BR2_PACKAGE_XKEYBOARD_CONFIG\n\thelp\n\t  X.Org X server\n\n\t  http://xorg.freedesktop.org\n\nif BR2_PACKAGE_XSERVER_XORG_SERVER\n\nchoice\n\tprompt \"X Window System server type\"\n\thelp\n\t  Select the X Window System server to use\n\nconfig BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR\n\tbool \"Modular X.org\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_LIBDRM\n\tselect BR2_PACKAGE_LIBPCIACCESS\n\tselect BR2_PACKAGE_XLIB_LIBXSHMFENCE if \\\n\t\t(BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_RISCV_32)\n\thelp\n\t  This variant of the X.org server is the full-blown variant,\n\t  as used by desktop GNU/Linux distributions. The drivers (for\n\t  input and graphics) are built separately from the X.org\n\t  server (see the xdriver* packages).\n\ncomment \"Modular X.org needs a toolchain w/ C++\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n\nconfig BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE\n\tbool \"KDrive / TinyX\"\n\thelp\n\t  This variant of the X.org server is a lightweight version\n\t  intended for embedded systems. The drivers (for input and\n\t  graphics) are built into the server. It is generally used\n\t  directly on top of the Linux framebuffer without DRM or\n\t  video card specific drivers.\n\nendchoice\n\ncomment \"Optional Servers\"\n\nconfig BR2_PACKAGE_XSERVER_XORG_SERVER_XVFB\n\tbool \"Xvfb server\"\n\thelp\n\t  Virtual frame buffer X server.\n\nconfig BR2_PACKAGE_XSERVER_XORG_SERVER_XEPHYR\n\tbool \"Xephyr server\"\n\thelp\n\t  Xephyr nested X server; successor to Xnest.\n\nendif\n"
  },
  {
    "path": "package/x11r7/xserver_xorg-server/S40xorg",
    "content": "#!/bin/sh\n#\n# Starts Xorg\n#\n\nBIN=/usr/bin/Xorg\nPIDFILE=/var/run/xorg.pid\n\n# \":0.0 vt01\" makes sure Xorg finds the correct terminal.\n# -allowMouseOpenFail allows the server to start up even if the mouse device\n#   can't be opened or initialised.\n# -noreset prevents a server reset when the last client connection is closed.\nXORG_ARGS=\":0.0 vt01 -s 0 -noreset -allowMouseOpenFail\"\n\nstart() {\n\tprintf \"Starting Xorg: \"\n\tstart-stop-daemon -S -q -b -m -p $PIDFILE --exec $BIN -- $XORG_ARGS\n\t[ $? = 0 ] && sleep 3 && echo \"OK\" || echo \"FAIL\"\n}\n\nstop() {\n\tprintf \"Stopping Xorg: \"\n\tstart-stop-daemon -K -q -p $PIDFILE\n\t[ $? = 0 ] && echo \"OK\" || echo \"FAIL\"\n}\n\nrestart() {\n\tstop\n\tsleep 2\n\tstart\n}\n\ncase \"$1\" in\n\tstart)\n\t\tstart\n\t;;\n\tstop)\n\t\tstop\n\t;;\n\trestart|reload)\n\t\trestart\n\t;;\n\t*)\n\t\techo \"Usage: $0 {start|stop|restart}\"\n\texit 1\nesac\n"
  },
  {
    "path": "package/x11r7/xserver_xorg-server/xorg.service",
    "content": "[Unit]\nDescription=Xorg server\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=/usr/bin/Xorg :0.0 vt01 -s 0 -noreset -allowMouseOpenFail\nRestart=always\n\n[Install]\nWantedBy=graphical.target\n"
  },
  {
    "path": "package/x11r7/xserver_xorg-server/xserver_xorg-server.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-July/003100.html\nsha256  40aa4e96a56a81a301f15a9b10e06a22700f12b42d9e0e453c7f11d354386300  xorg-server-1.20.13.tar.xz\nsha512  4e0b7bd4e070dc52cb2c51c2056feb133de2c0487d359392ed63abba9702910cd2e2983e9415973d8d6e9672eac78be6f39202687fc56610877914ce722554b3  xorg-server-1.20.13.tar.xz\n\n# Locally calculated\nsha256  4cc0447a22635c7b2f1a93fec4aa94f1970fadeb72a063de006b51cf4963a06f  COPYING\n"
  },
  {
    "path": "package/x11r7/xserver_xorg-server/xserver_xorg-server.mk",
    "content": "################################################################################\n#\n# xserver_xorg-server\n#\n################################################################################\n\nXSERVER_XORG_SERVER_VERSION = 1.20.13\nXSERVER_XORG_SERVER_SOURCE = xorg-server-$(XSERVER_XORG_SERVER_VERSION).tar.xz\nXSERVER_XORG_SERVER_SITE = https://xorg.freedesktop.org/archive/individual/xserver\nXSERVER_XORG_SERVER_LICENSE = MIT\nXSERVER_XORG_SERVER_LICENSE_FILES = COPYING\nXSERVER_XORG_SERVER_SELINUX_MODULES = xdg xserver\nXSERVER_XORG_SERVER_INSTALL_STAGING = YES\n# xfont_font-util is needed only for autoreconf\nXSERVER_XORG_SERVER_AUTORECONF = YES\nXSERVER_XORG_SERVER_DEPENDENCIES = \\\n\txfont_font-util \\\n\txutil_util-macros \\\n\txlib_libX11 \\\n\txlib_libXau \\\n\txlib_libXdmcp \\\n\txlib_libXext \\\n\txlib_libXfixes \\\n\txlib_libXfont2 \\\n\txlib_libXi \\\n\txlib_libXrender \\\n\txlib_libXres \\\n\txlib_libXft \\\n\txlib_libXcursor \\\n\txlib_libXinerama \\\n\txlib_libXrandr \\\n\txlib_libXdamage \\\n\txlib_libXxf86vm \\\n\txlib_libxkbfile \\\n\txlib_xtrans \\\n\txdata_xbitmaps \\\n\txorgproto \\\n\txkeyboard-config \\\n\tpixman \\\n\tmcookie \\\n\thost-pkgconf\n\n# We force -O2 regardless of the optimization level chosen by the\n# user, as the X.org server is known to trigger some compiler bugs at\n# -Os on several architectures.\nXSERVER_XORG_SERVER_CONF_OPTS = \\\n\t--disable-config-hal \\\n\t--enable-record \\\n\t--disable-xnest \\\n\t--disable-dmx \\\n\t--disable-unit-tests \\\n\t--with-builder-addr=buildroot@buildroot.org \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/pixman-1 -O2\" \\\n\t--with-fontrootdir=/usr/share/fonts/X11/ \\\n\t--$(if $(BR2_PACKAGE_XSERVER_XORG_SERVER_XEPHYR),en,dis)able-xephyr \\\n\t--$(if $(BR2_PACKAGE_XSERVER_XORG_SERVER_XVFB),en,dis)able-xvfb\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nXSERVER_XORG_SERVER_CONF_OPTS += \\\n\t--with-systemd-daemon \\\n\t--enable-systemd-logind\nXSERVER_XORG_SERVER_DEPENDENCIES += \\\n\tsystemd\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += \\\n\t--without-systemd-daemon \\\n\t--disable-systemd-logind\nendif\n\n# Xwayland support needs libdrm, libepoxy, wayland and libxcomposite\nifeq ($(BR2_PACKAGE_LIBDRM)$(BR2_PACKAGE_LIBEPOXY)$(BR2_PACKAGE_WAYLAND)$(BR2_PACKAGE_WAYLAND_PROTOCOLS)$(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),yyyyy)\nXSERVER_XORG_SERVER_CONF_OPTS += --enable-xwayland\nXSERVER_XORG_SERVER_DEPENDENCIES += libdrm libepoxy wayland wayland-protocols xlib_libXcomposite\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-xwayland\nendif\n\nifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR),y)\nXSERVER_XORG_SERVER_CONF_OPTS += --enable-xorg\nXSERVER_XORG_SERVER_DEPENDENCIES += libpciaccess\nifeq ($(BR2_PACKAGE_LIBDRM),y)\nXSERVER_XORG_SERVER_DEPENDENCIES += libdrm\nXSERVER_XORG_SERVER_CONF_OPTS += --enable-libdrm\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-libdrm\nendif\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-xorg\nendif\n\nifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE),y)\nXSERVER_XORG_SERVER_CONF_OPTS += \\\n\t--enable-kdrive \\\n\t--disable-glx \\\n\t--disable-dri\n\nelse # modular\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-kdrive\nendif\n\nifeq ($(BR2_PACKAGE_HAS_LIBGL),y)\nXSERVER_XORG_SERVER_CONF_OPTS += --enable-dri --enable-glx\nXSERVER_XORG_SERVER_DEPENDENCIES += libgl\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-dri --disable-glx\nendif\n\n# Optional packages\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nXSERVER_XORG_SERVER_DEPENDENCIES += udev\nXSERVER_XORG_SERVER_CONF_OPTS += --enable-config-udev\n# udev kms support depends on libdrm and dri2\nifeq ($(BR2_PACKAGE_LIBDRM),y)\nXSERVER_XORG_SERVER_CONF_OPTS += --enable-config-udev-kms\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-config-udev-kms\nendif\nendif\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nXSERVER_XORG_SERVER_DEPENDENCIES += dbus\nXSERVER_XORG_SERVER_CONF_OPTS += --enable-config-dbus\nendif\n\nifeq ($(BR2_PACKAGE_FREETYPE),y)\nXSERVER_XORG_SERVER_DEPENDENCIES += freetype\nendif\n\nifeq ($(BR2_PACKAGE_LIBUNWIND),y)\nXSERVER_XORG_SERVER_DEPENDENCIES += libunwind\nXSERVER_XORG_SERVER_CONF_OPTS += --enable-libunwind\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-libunwind\nendif\n\nifneq ($(BR2_PACKAGE_XLIB_LIBXVMC),y)\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-xvmc\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y)\nXSERVER_XORG_SERVER_DEPENDENCIES += xlib_libXcomposite\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-composite\nendif\n\nifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR),y)\nXSERVER_XORG_SERVER_CONF_OPTS += --enable-dri2\nifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)\nXSERVER_XORG_SERVER_DEPENDENCIES += xlib_libxshmfence\nXSERVER_XORG_SERVER_CONF_OPTS += --enable-dri3\nifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_LIBEPOXY),yyy)\nXSERVER_XORG_SERVER_DEPENDENCIES += libepoxy\nXSERVER_XORG_SERVER_CONF_OPTS += --enable-glamor\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-glamor\nendif\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-dri3 --disable-glamor\nendif\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-dri2 --disable-dri3 --disable-glamor\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXSCRNSAVER),y)\nXSERVER_XORG_SERVER_DEPENDENCIES += xlib_libXScrnSaver\nXSERVER_XORG_SERVER_CONF_OPTS += --enable-screensaver\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-screensaver\nendif\n\nifneq ($(BR2_PACKAGE_XLIB_LIBDMX),y)\nXSERVER_XORG_SERVER_CONF_OPTS += --disable-dmx\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nXSERVER_XORG_SERVER_CONF_OPTS += --with-sha1=libcrypto\nXSERVER_XORG_SERVER_DEPENDENCIES += openssl\nelse ifeq ($(BR2_PACKAGE_LIBGCRYPT),y)\nXSERVER_XORG_SERVER_CONF_OPTS += --with-sha1=libgcrypt\nXSERVER_XORG_SERVER_DEPENDENCIES += libgcrypt\nelse\nXSERVER_XORG_SERVER_CONF_OPTS += --with-sha1=libsha1\nXSERVER_XORG_SERVER_DEPENDENCIES += libsha1\nendif\n\ndefine XSERVER_XORG_SERVER_INSTALL_INIT_SYSTEMD\n\t$(INSTALL) -D -m 0644 package/x11r7/xserver_xorg-server/xorg.service \\\n\t\t$(TARGET_DIR)/usr/lib/systemd/system/xorg.service\nendef\n\n# init script conflicts with S90nodm\nifneq ($(BR2_PACKAGE_NODM),y)\ndefine XSERVER_XORG_SERVER_INSTALL_INIT_SYSV\n\t$(INSTALL) -D -m 755 package/x11r7/xserver_xorg-server/S40xorg \\\n\t\t$(TARGET_DIR)/etc/init.d/S40xorg\nendef\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x11r7/xutil_makedepend/Config.in",
    "content": "config BR2_PACKAGE_XUTIL_MAKEDEPEND\n\tbool \"makedepend\"\n\tselect BR2_PACKAGE_XORGPROTO\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/x11r7/xutil_makedepend/xutil_makedepend.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2019-March/002985.html\nmd5 b2ca7f2f21f1c04a88b6a254c19c9b68  makedepend-1.0.6.tar.bz2\nsha1 3f321f7b570ec98f1fabc441267d29347a2e1456  makedepend-1.0.6.tar.bz2\nsha256 d558a52e8017d984ee59596a9582c8d699a1962391b632bec3bb6804bf4d501c  makedepend-1.0.6.tar.bz2\nsha512 eb0e8ee8ab7515806d7d98a060cdcd392ec38e4225e5e05db26daa6651f185d0b764aab403edeea904d4d23211b1f7db20daeee6eafce8abe65225784ed0aa42  makedepend-1.0.6.tar.bz2\n# Locally computed\nsha256 0530078db78c47ae978dc2bd77f4f427e6cd97df868672c95b1ef284113c8cb7  COPYING\n"
  },
  {
    "path": "package/x11r7/xutil_makedepend/xutil_makedepend.mk",
    "content": "################################################################################\n#\n# xutil_makedepend\n#\n################################################################################\n\nXUTIL_MAKEDEPEND_VERSION = 1.0.6\nXUTIL_MAKEDEPEND_SOURCE = makedepend-$(XUTIL_MAKEDEPEND_VERSION).tar.bz2\nXUTIL_MAKEDEPEND_SITE = http://xorg.freedesktop.org/releases/individual/util\nXUTIL_MAKEDEPEND_LICENSE = MIT\nXUTIL_MAKEDEPEND_LICENSE_FILES = COPYING\n\nXUTIL_MAKEDEPEND_DEPENDENCIES = xorgproto host-pkgconf\nHOST_XUTIL_MAKEDEPEND_DEPENDENCIES = host-xorgproto host-pkgconf\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/x11vnc/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch",
    "content": "From daecf59cc8b294265666482a4766aaa3148c308b Mon Sep 17 00:00:00 2001\nFrom: Khem Raj <raj.khem@gmail.com>\nDate: Sat, 30 Nov 2019 11:43:32 -0800\nSubject: [PATCH] Fix build on 32bit arches with 64bit time_t\n\ntime element is deprecated on new input_event structure in kernel's\ninput.h [1]\n\n[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f\n\n[Retrieved from:\nhttps://github.com/LibVNC/x11vnc/commit/daecf59cc8b294265666482a4766aaa3148c308b]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/uinput.c | 25 +++++++++++++++++++++----\n 1 file changed, 21 insertions(+), 4 deletions(-)\n\ndiff --git a/src/uinput.c b/src/uinput.c\nindex 28fbad3..d71bcde 100644\n--- a/src/uinput.c\n+++ b/src/uinput.c\n@@ -54,6 +54,11 @@ so, delete this exception statement from your version.\n #include <linux/input.h>\n #include <linux/uinput.h>\n \n+#ifndef input_event_sec\n+#define input_event_sec time.tv_sec\n+#define input_event_usec time.tv_usec\n+#endif\n+\n #if !defined(EV_SYN) || !defined(SYN_REPORT)\n #undef UINPUT_OK\n #endif\n@@ -710,6 +715,7 @@ void parse_uinput_str(char *in) {\n static void ptr_move(int dx, int dy) {\n #ifdef UINPUT_OK\n \tstruct input_event ev;\n+\tstruct timeval tval;\n \tint d = direct_rel_fd < 0 ? fd : direct_rel_fd;\n \n \tif (injectable && strchr(injectable, 'M') == NULL) {\n@@ -720,7 +726,9 @@ static void ptr_move(int dx, int dy) {\n \n \tif (db) fprintf(stderr, \"ptr_move(%d, %d) fd=%d\\n\", dx, dy, d);\n \n-\tgettimeofday(&ev.time, NULL);\n+\tgettimeofday(&tval, NULL);\n+\tev.input_event_sec = tval.tv_sec;\n+\tev.input_event_usec = tval.tv_usec;\n \tev.type = EV_REL;\n \tev.code = REL_Y;\n \tev.value = dy;\n@@ -755,6 +763,7 @@ static void apply_tslib(int *x, int *y) {\n static void ptr_abs(int x, int y, int p) {\n #ifdef UINPUT_OK\n \tstruct input_event ev;\n+\tstruct timeval tval;\n \tint x0, y0;\n \tint d = direct_abs_fd < 0 ? fd : direct_abs_fd;\n \n@@ -773,7 +782,9 @@ static void ptr_abs(int x, int y, int p) {\n \n \tif (db) fprintf(stderr, \"ptr_abs(%d, %d => %d %d, p=%d) fd=%d\\n\", x0, y0, x, y, p, d);\n \n-\tgettimeofday(&ev.time, NULL);\n+\tgettimeofday(&tval, NULL);\n+\tev.input_event_sec = tval.tv_sec;\n+\tev.input_event_usec = tval.tv_usec;\n \tev.type = EV_ABS;\n \tev.code = ABS_Y;\n \tev.value = y;\n@@ -950,6 +961,7 @@ if (0) {usleep(100*1000) ;}\n static void button_click(int down, int btn) {\n #ifdef UINPUT_OK\n \tstruct input_event ev;\n+\tstruct timeval tval;\n \tint d = direct_btn_fd < 0 ? fd : direct_btn_fd;\n \n \tif (injectable && strchr(injectable, 'B') == NULL) {\n@@ -959,7 +971,9 @@ static void button_click(int down, int btn) {\n \tif (db) fprintf(stderr, \"button_click: btn %d %s fd=%d\\n\", btn, down ? \"down\" : \"up\", d);\n \n \tmemset(&ev, 0, sizeof(ev));\n-\tgettimeofday(&ev.time, NULL);\n+\tgettimeofday(&tval, NULL);\n+\tev.input_event_sec = tval.tv_sec;\n+\tev.input_event_usec = tval.tv_usec;\n \tev.type = EV_KEY;\n \tev.value = down;\n \n@@ -1230,6 +1244,7 @@ void uinput_pointer_command(int mask, int x, int y, rfbClientPtr client) {\n void uinput_key_command(int down, int keysym, rfbClientPtr client) {\n #ifdef UINPUT_OK\n \tstruct input_event ev;\n+\tstruct timeval tval;\n \tint scancode;\n \tallowed_input_t input;\n \tint d = direct_key_fd < 0 ? fd : direct_key_fd;\n@@ -1253,7 +1268,9 @@ void uinput_key_command(int down, int keysym, rfbClientPtr client) {\n \tif (db) fprintf(stderr, \"uinput_key_command: %d -> %d %s fd=%d\\n\", keysym, scancode, down ? \"down\" : \"up\", d);\n \n \tmemset(&ev, 0, sizeof(ev));\n-\tgettimeofday(&ev.time, NULL);\n+\tgettimeofday(&tval, NULL);\n+\tev.input_event_sec = tval.tv_sec;\n+\tev.input_event_usec = tval.tv_usec;\n \tev.type = EV_KEY;\n \tev.code = (unsigned char) scancode;\n \tev.value = down;\n"
  },
  {
    "path": "package/x11vnc/0002-scan-limit-access-to-shared-memory-segments-to-current-user.patch",
    "content": "From 69eeb9f7baa14ca03b16c9de821f9876def7a36a Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?Gu=C3=A9nal=20DAVALAN?= <guenal.davalan@uca.fr>\nDate: Wed, 18 Nov 2020 08:40:45 +0100\nSubject: [PATCH] scan: limit access to shared memory segments to current user\n\n[Retrieved from:\nhttps://github.com/LibVNC/x11vnc/commit/69eeb9f7baa14ca03b16c9de821f9876def7a36a]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/scan.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/src/scan.c b/src/scan.c\nindex 43e00d2..12994d5 100644\n--- a/src/scan.c\n+++ b/src/scan.c\n@@ -320,7 +320,7 @@ static int shm_create(XShmSegmentInfo *shm, XImage **ximg_ptr, int w, int h,\n \n #if HAVE_XSHM\n \tshm->shmid = shmget(IPC_PRIVATE,\n-\t    xim->bytes_per_line * xim->height, IPC_CREAT | 0777);\n+\t    xim->bytes_per_line * xim->height, IPC_CREAT | 0600);\n \n \tif (shm->shmid == -1) {\n \t\trfbErr(\"shmget(%s) failed.\\n\", name);\n"
  },
  {
    "path": "package/x11vnc/Config.in",
    "content": "config BR2_PACKAGE_X11VNC\n\tbool \"x11vnc\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_nios2 # libvncserver\n\tselect BR2_PACKAGE_LIBVNCSERVER\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXTST\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RC4 if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_RMD160 if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  VNC server for X11 display\n\n\t  http://www.karlrunge.com/x11vnc/\n"
  },
  {
    "path": "package/x11vnc/x11vnc.hash",
    "content": "# Locally computed:\nsha256  885e5b5f5f25eec6f9e4a1e8be3d0ac71a686331ee1cfb442dba391111bd32bd  x11vnc-0.9.16.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/x11vnc/x11vnc.mk",
    "content": "################################################################################\n#\n# x11vnc\n#\n################################################################################\n\nX11VNC_VERSION = 0.9.16\nX11VNC_SITE = $(call github,LibVNC,x11vnc,$(X11VNC_VERSION))\n# sdl support is not used in x11vnc, but host include / library search paths\n# leak in if host has sdl-config\nX11VNC_CONF_OPTS = --without-sdl\nX11VNC_DEPENDENCIES = xlib_libXt xlib_libXext xlib_libXtst libvncserver\nX11VNC_LICENSE = GPL-2.0+\nX11VNC_LICENSE_FILES = COPYING\nX11VNC_CPE_ID_VENDOR = x11vnc_project\n# 0002-scan-limit-access-to-shared-memory-segments-to-current-user.patch\nX11VNC_IGNORE_CVES += CVE-2020-29074\n\n# Source coming from github, no configure included\nX11VNC_AUTORECONF = YES\n\nifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy)\nX11VNC_DEPENDENCIES += avahi dbus\nelse\nX11VNC_CONF_OPTS += --without-avahi\nendif\n\nifeq ($(BR2_PACKAGE_JPEG),y)\nX11VNC_DEPENDENCIES += jpeg\nelse\nX11VNC_CONF_OPTS += --without-jpeg\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nX11VNC_DEPENDENCIES += openssl\nelse\nX11VNC_CONF_OPTS += --without-ssl --without-crypto\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nX11VNC_DEPENDENCIES += xlib_libXinerama\nelse\nX11VNC_CONF_OPTS += --without-xinerama\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)\nX11VNC_DEPENDENCIES += xlib_libXrandr\nelse\nX11VNC_CONF_OPTS += --without-xrandr\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y)\nX11VNC_DEPENDENCIES += xlib_libXfixes\nelse\nX11VNC_CONF_OPTS += --without-xfixes\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y)\nX11VNC_DEPENDENCIES += xlib_libXdamage\nelse\nX11VNC_CONF_OPTS += --without-xdamage\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nX11VNC_DEPENDENCIES += zlib\nelse\nX11VNC_CONF_OPTS += --without-zlib\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/x264/Config.in",
    "content": "config BR2_PACKAGE_X264\n\tbool \"x264\"\n\thelp\n\t  x264 is a free software library and application for\n\t  encoding video streams into the H.264/MPEG-4 AVC\n\t  compression format, and is released under the terms\n\t  of the GNU GPL.\n\n\t  https://www.videolan.org/developers/x264.html\n\nif BR2_PACKAGE_X264\n\nconfig BR2_PACKAGE_X264_CLI\n\tbool \"CLI\"\n\thelp\n\t  Command-line tool to encode video streams into the\n\t  H.264/MPEG-4 AVC compression format.\n\nendif\n"
  },
  {
    "path": "package/x264/x264.hash",
    "content": "# Locally computed\nsha256  58f39bf23a4e38ac3dd841a3f9ccf2aa16d2b0c35df9aecd9f3b5062780e5d74  x264-35417dcd65a57321fbadf98c9a4cff1cb741db4b-br1.tar.gz\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  COPYING\n"
  },
  {
    "path": "package/x264/x264.mk",
    "content": "################################################################################\n#\n# x264\n#\n################################################################################\n\nX264_VERSION = 35417dcd65a57321fbadf98c9a4cff1cb741db4b\nX264_SITE = https://code.videolan.org/videolan/x264.git\nX264_SITE_METHOD = git\nX264_LICENSE = GPL-2.0+\nX264_DEPENDENCIES = host-pkgconf\nX264_LICENSE_FILES = COPYING\nX264_INSTALL_STAGING = YES\nX264_CONF_OPTS = --disable-avs --disable-lavf --disable-swscale\n\nifeq ($(BR2_i386)$(BR2_x86_64),y)\n# nasm needed for assembly files\nX264_DEPENDENCIES += host-nasm\nX264_CONF_ENV += AS=\"$(HOST_DIR)/bin/nasm\"\nelse ifeq ($(BR2_ARM_CPU_ARMV7A)$(BR2_aarch64),y)\n# We need to pass gcc as AS, because the ARM assembly files have to be\n# preprocessed\nX264_CONF_ENV += AS=\"$(TARGET_CC)\"\nelse\nX264_CONF_OPTS += --disable-asm\nendif\n\nifeq ($(BR2_STATIC_LIBS),)\nX264_CONF_OPTS += --enable-pic --enable-shared\nendif\n\nifeq ($(BR2_PACKAGE_X264_CLI),)\nX264_CONF_OPTS += --disable-cli\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),)\nX264_CONF_OPTS += --disable-thread\nendif\n\n# Even though the configure script is not generated by autoconf, x264\n# uses config.sub/config.guess, so we want up-to-date versions of\n# them.\nX264_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK\n\n# the configure script is not generated by autoconf\ndefine X264_CONFIGURE_CMDS\n\t(cd $(@D); $(TARGET_CONFIGURE_OPTS) $(X264_CONF_ENV) ./configure \\\n\t\t--prefix=/usr \\\n\t\t--host=\"$(GNU_TARGET_NAME)\" \\\n\t\t--cross-prefix=\"$(TARGET_CROSS)\" \\\n\t\t--disable-ffms \\\n\t\t--enable-static \\\n\t\t--disable-opencl \\\n\t\t$(X264_CONF_OPTS) \\\n\t)\nendef\n\ndefine X264_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine X264_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=\"$(STAGING_DIR)\" -C $(@D) install\nendef\n\ndefine X264_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) DESTDIR=\"$(TARGET_DIR)\" -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/x265/0001-fix-gcc-options.patch",
    "content": "# HG changeset patch\n# User Bertrand Jacquin <bertrand@jacquin.bzh>\n# Date 1444431941 -3600\n# Node ID 5c6d2a6f2f9a0534933cc999b3845be4344e1af0\n# Parent  b6156a08b1def3584647f26096866c1a0c11e54a\nbuild: Disable -march selection from CMakeLists.txt\n\nx32 arch as defined on https://sites.google.com/site/x32abi is neither\nX86 nor X64, then forcing -march=i686 leads to build failure as wrong\n-march is used.\n\nForcing -march, -mfloat-abi and -mfpu for ARM is also wrong\n\nAs a global sanity sake, disable all forced -march in CMakeLists\n\nBackported from upstream pull request:\nhttps://bitbucket.org/multicoreware/x265/pull-requests/21\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -r 58dddcf01b7d source/CMakeLists.txt\n--- a/source/CMakeLists.txt\tMon Jan 23 09:50:33 2017 +0530\n+++ b/source/CMakeLists.txt\tMon Jan 23 21:03:10 2017 +0100\n@@ -194,28 +194,6 @@\n     if(NATIVE_BUILD)\n         if(INTEL_CXX)\n             add_definitions(-xhost)\n-        else()\n-            add_definitions(-march=native)\n-        endif()\n-    elseif(X86 AND NOT X64)\n-        string(FIND \"${CMAKE_CXX_FLAGS}\" \"-march\" marchPos)\n-        if(marchPos LESS \"0\")\n-            add_definitions(-march=i686)\n-            if(WIN32 AND NOT INTEL_CXX AND NOT CLANG AND\n-               CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0)\n-                add_definitions(-mpreferred-stack-boundary=2)\n-            endif()\n-        endif()\n-    endif()\n-    if(ARM AND CROSS_COMPILE_ARM)\n-        set(ARM_ARGS -march=armv6 -mfloat-abi=soft -mfpu=vfp -marm -fPIC)\n-    elseif(ARM)\n-        find_package(Neon)\n-        if(CPU_HAS_NEON)\n-            set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=neon -marm -fPIC)\n-            add_definitions(-DHAVE_NEON)\n-        else()\n-            set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=vfp -marm)\n         endif()\n     endif()\n     add_definitions(${ARM_ARGS})\n"
  },
  {
    "path": "package/x265/0002-arm-asm-primitives.patch",
    "content": "Fixes \"arm assembly fail to compile on 1.8\"\n\nDownloaded from upstream bug report:\nhttps://bitbucket.org/multicoreware/x265/issues/406\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\n--- ./source/common/arm/asm-primitives.cpp.orig\t2018-05-21 02:33:10.000000000 -0600\n+++ ./source/common/arm/asm-primitives.cpp\t2018-05-28 20:38:37.302378303 -0600\n@@ -48,77 +48,77 @@ void setupAssemblyPrimitives(EncoderPrim\n         p.ssim_4x4x2_core = PFX(ssim_4x4x2_core_neon);\n \n         // addAvg\n-         p.pu[LUMA_4x4].addAvg   = PFX(addAvg_4x4_neon);\n-         p.pu[LUMA_4x8].addAvg   = PFX(addAvg_4x8_neon);\n-         p.pu[LUMA_4x16].addAvg  = PFX(addAvg_4x16_neon);\n-         p.pu[LUMA_8x4].addAvg   = PFX(addAvg_8x4_neon);\n-         p.pu[LUMA_8x8].addAvg   = PFX(addAvg_8x8_neon);\n-         p.pu[LUMA_8x16].addAvg  = PFX(addAvg_8x16_neon);\n-         p.pu[LUMA_8x32].addAvg  = PFX(addAvg_8x32_neon);\n-         p.pu[LUMA_12x16].addAvg = PFX(addAvg_12x16_neon);\n-         p.pu[LUMA_16x4].addAvg  = PFX(addAvg_16x4_neon);\n-         p.pu[LUMA_16x8].addAvg  = PFX(addAvg_16x8_neon);\n-         p.pu[LUMA_16x12].addAvg = PFX(addAvg_16x12_neon);\n-         p.pu[LUMA_16x16].addAvg = PFX(addAvg_16x16_neon);\n-         p.pu[LUMA_16x32].addAvg = PFX(addAvg_16x32_neon);\n-         p.pu[LUMA_16x64].addAvg = PFX(addAvg_16x64_neon);\n-         p.pu[LUMA_24x32].addAvg = PFX(addAvg_24x32_neon);\n-         p.pu[LUMA_32x8].addAvg  = PFX(addAvg_32x8_neon);\n-         p.pu[LUMA_32x16].addAvg = PFX(addAvg_32x16_neon);\n-         p.pu[LUMA_32x24].addAvg = PFX(addAvg_32x24_neon);\n-         p.pu[LUMA_32x32].addAvg = PFX(addAvg_32x32_neon);\n-         p.pu[LUMA_32x64].addAvg = PFX(addAvg_32x64_neon);\n-         p.pu[LUMA_48x64].addAvg = PFX(addAvg_48x64_neon);\n-         p.pu[LUMA_64x16].addAvg = PFX(addAvg_64x16_neon);\n-         p.pu[LUMA_64x32].addAvg = PFX(addAvg_64x32_neon);\n-         p.pu[LUMA_64x48].addAvg = PFX(addAvg_64x48_neon);\n-         p.pu[LUMA_64x64].addAvg = PFX(addAvg_64x64_neon);\n+         p.pu[LUMA_4x4].addAvg[ALIGNED]   = PFX(addAvg_4x4_neon);\n+         p.pu[LUMA_4x8].addAvg[ALIGNED]   = PFX(addAvg_4x8_neon);\n+         p.pu[LUMA_4x16].addAvg[ALIGNED]  = PFX(addAvg_4x16_neon);\n+         p.pu[LUMA_8x4].addAvg[ALIGNED]   = PFX(addAvg_8x4_neon);\n+         p.pu[LUMA_8x8].addAvg[ALIGNED]   = PFX(addAvg_8x8_neon);\n+         p.pu[LUMA_8x16].addAvg[ALIGNED]  = PFX(addAvg_8x16_neon);\n+         p.pu[LUMA_8x32].addAvg[ALIGNED]  = PFX(addAvg_8x32_neon);\n+         p.pu[LUMA_12x16].addAvg[ALIGNED] = PFX(addAvg_12x16_neon);\n+         p.pu[LUMA_16x4].addAvg[ALIGNED]  = PFX(addAvg_16x4_neon);\n+         p.pu[LUMA_16x8].addAvg[ALIGNED]  = PFX(addAvg_16x8_neon);\n+         p.pu[LUMA_16x12].addAvg[ALIGNED] = PFX(addAvg_16x12_neon);\n+         p.pu[LUMA_16x16].addAvg[ALIGNED] = PFX(addAvg_16x16_neon);\n+         p.pu[LUMA_16x32].addAvg[ALIGNED] = PFX(addAvg_16x32_neon);\n+         p.pu[LUMA_16x64].addAvg[ALIGNED] = PFX(addAvg_16x64_neon);\n+         p.pu[LUMA_24x32].addAvg[ALIGNED] = PFX(addAvg_24x32_neon);\n+         p.pu[LUMA_32x8].addAvg[ALIGNED]  = PFX(addAvg_32x8_neon);\n+         p.pu[LUMA_32x16].addAvg[ALIGNED] = PFX(addAvg_32x16_neon);\n+         p.pu[LUMA_32x24].addAvg[ALIGNED] = PFX(addAvg_32x24_neon);\n+         p.pu[LUMA_32x32].addAvg[ALIGNED] = PFX(addAvg_32x32_neon);\n+         p.pu[LUMA_32x64].addAvg[ALIGNED] = PFX(addAvg_32x64_neon);\n+         p.pu[LUMA_48x64].addAvg[ALIGNED] = PFX(addAvg_48x64_neon);\n+         p.pu[LUMA_64x16].addAvg[ALIGNED] = PFX(addAvg_64x16_neon);\n+         p.pu[LUMA_64x32].addAvg[ALIGNED] = PFX(addAvg_64x32_neon);\n+         p.pu[LUMA_64x48].addAvg[ALIGNED] = PFX(addAvg_64x48_neon);\n+         p.pu[LUMA_64x64].addAvg[ALIGNED] = PFX(addAvg_64x64_neon);\n \n         // chroma addAvg\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x2].addAvg   = PFX(addAvg_4x2_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x4].addAvg   = PFX(addAvg_4x4_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x8].addAvg   = PFX(addAvg_4x8_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x16].addAvg  = PFX(addAvg_4x16_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_6x8].addAvg   = PFX(addAvg_6x8_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x2].addAvg   = PFX(addAvg_8x2_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x4].addAvg   = PFX(addAvg_8x4_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x6].addAvg   = PFX(addAvg_8x6_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x8].addAvg   = PFX(addAvg_8x8_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x16].addAvg  = PFX(addAvg_8x16_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x32].addAvg  = PFX(addAvg_8x32_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_12x16].addAvg = PFX(addAvg_12x16_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x4].addAvg  = PFX(addAvg_16x4_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x8].addAvg  = PFX(addAvg_16x8_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x12].addAvg = PFX(addAvg_16x12_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x16].addAvg = PFX(addAvg_16x16_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x32].addAvg = PFX(addAvg_16x32_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_24x32].addAvg = PFX(addAvg_24x32_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x8].addAvg  = PFX(addAvg_32x8_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x16].addAvg = PFX(addAvg_32x16_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x24].addAvg = PFX(addAvg_32x24_neon);\n-        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x32].addAvg = PFX(addAvg_32x32_neon);\n-\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_4x8].addAvg   = PFX(addAvg_4x8_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_4x16].addAvg  = PFX(addAvg_4x16_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_4x32].addAvg  = PFX(addAvg_4x32_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_6x16].addAvg  = PFX(addAvg_6x16_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x4].addAvg   = PFX(addAvg_8x4_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x8].addAvg   = PFX(addAvg_8x8_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x12].addAvg  = PFX(addAvg_8x12_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x16].addAvg  = PFX(addAvg_8x16_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x32].addAvg  = PFX(addAvg_8x32_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x64].addAvg  = PFX(addAvg_8x64_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_12x32].addAvg = PFX(addAvg_12x32_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x8].addAvg  = PFX(addAvg_16x8_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x16].addAvg = PFX(addAvg_16x16_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x24].addAvg = PFX(addAvg_16x24_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x32].addAvg = PFX(addAvg_16x32_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x64].addAvg = PFX(addAvg_16x64_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_24x64].addAvg = PFX(addAvg_24x64_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x16].addAvg = PFX(addAvg_32x16_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x32].addAvg = PFX(addAvg_32x32_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x48].addAvg = PFX(addAvg_32x48_neon);\n-        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x64].addAvg = PFX(addAvg_32x64_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x2].addAvg[ALIGNED]   = PFX(addAvg_4x2_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x4].addAvg[ALIGNED]   = PFX(addAvg_4x4_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x8].addAvg[ALIGNED]   = PFX(addAvg_4x8_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_4x16].addAvg[ALIGNED]  = PFX(addAvg_4x16_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_6x8].addAvg[ALIGNED]   = PFX(addAvg_6x8_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x2].addAvg[ALIGNED]   = PFX(addAvg_8x2_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x4].addAvg[ALIGNED]   = PFX(addAvg_8x4_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x6].addAvg[ALIGNED]   = PFX(addAvg_8x6_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x8].addAvg[ALIGNED]   = PFX(addAvg_8x8_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x16].addAvg[ALIGNED]  = PFX(addAvg_8x16_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_8x32].addAvg[ALIGNED]  = PFX(addAvg_8x32_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_12x16].addAvg[ALIGNED] = PFX(addAvg_12x16_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x4].addAvg[ALIGNED]  = PFX(addAvg_16x4_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x8].addAvg[ALIGNED]  = PFX(addAvg_16x8_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x12].addAvg[ALIGNED] = PFX(addAvg_16x12_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x16].addAvg[ALIGNED] = PFX(addAvg_16x16_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_16x32].addAvg[ALIGNED] = PFX(addAvg_16x32_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_24x32].addAvg[ALIGNED] = PFX(addAvg_24x32_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x8].addAvg[ALIGNED]  = PFX(addAvg_32x8_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x16].addAvg[ALIGNED] = PFX(addAvg_32x16_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x24].addAvg[ALIGNED] = PFX(addAvg_32x24_neon);\n+        p.chroma[X265_CSP_I420].pu[CHROMA_420_32x32].addAvg[ALIGNED] = PFX(addAvg_32x32_neon);\n+\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_4x8].addAvg[ALIGNED]   = PFX(addAvg_4x8_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_4x16].addAvg[ALIGNED]  = PFX(addAvg_4x16_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_4x32].addAvg[ALIGNED]  = PFX(addAvg_4x32_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_6x16].addAvg[ALIGNED]  = PFX(addAvg_6x16_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x4].addAvg[ALIGNED]   = PFX(addAvg_8x4_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x8].addAvg[ALIGNED]   = PFX(addAvg_8x8_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x12].addAvg[ALIGNED]  = PFX(addAvg_8x12_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x16].addAvg[ALIGNED]  = PFX(addAvg_8x16_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x32].addAvg[ALIGNED]  = PFX(addAvg_8x32_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_8x64].addAvg[ALIGNED]  = PFX(addAvg_8x64_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_12x32].addAvg[ALIGNED] = PFX(addAvg_12x32_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x8].addAvg[ALIGNED]  = PFX(addAvg_16x8_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x16].addAvg[ALIGNED] = PFX(addAvg_16x16_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x24].addAvg[ALIGNED] = PFX(addAvg_16x24_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x32].addAvg[ALIGNED] = PFX(addAvg_16x32_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_16x64].addAvg[ALIGNED] = PFX(addAvg_16x64_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_24x64].addAvg[ALIGNED] = PFX(addAvg_24x64_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x16].addAvg[ALIGNED] = PFX(addAvg_32x16_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x32].addAvg[ALIGNED] = PFX(addAvg_32x32_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x48].addAvg[ALIGNED] = PFX(addAvg_32x48_neon);\n+        p.chroma[X265_CSP_I422].pu[CHROMA_422_32x64].addAvg[ALIGNED] = PFX(addAvg_32x64_neon);\n \n         // quant\n          p.quant = PFX(quant_neon);\n@@ -402,7 +402,7 @@ void setupAssemblyPrimitives(EncoderPrim\n         p.scale2D_64to32  = PFX(scale2D_64to32_neon);\n \n         // scale1D_128to64\n-        p.scale1D_128to64 = PFX(scale1D_128to64_neon);\n+        p.scale1D_128to64[ALIGNED] = PFX(scale1D_128to64_neon);\n \n         // copy_count\n         p.cu[BLOCK_4x4].copy_cnt     = PFX(copy_cnt_4_neon);\n@@ -411,37 +411,37 @@ void setupAssemblyPrimitives(EncoderPrim\n         p.cu[BLOCK_32x32].copy_cnt   = PFX(copy_cnt_32_neon);\n \n         // filterPixelToShort\n-        p.pu[LUMA_4x4].convert_p2s   = PFX(filterPixelToShort_4x4_neon);\n-        p.pu[LUMA_4x8].convert_p2s   = PFX(filterPixelToShort_4x8_neon);\n-        p.pu[LUMA_4x16].convert_p2s  = PFX(filterPixelToShort_4x16_neon);\n-        p.pu[LUMA_8x4].convert_p2s   = PFX(filterPixelToShort_8x4_neon);\n-        p.pu[LUMA_8x8].convert_p2s   = PFX(filterPixelToShort_8x8_neon);\n-        p.pu[LUMA_8x16].convert_p2s  = PFX(filterPixelToShort_8x16_neon);\n-        p.pu[LUMA_8x32].convert_p2s  = PFX(filterPixelToShort_8x32_neon);\n-        p.pu[LUMA_12x16].convert_p2s = PFX(filterPixelToShort_12x16_neon);\n-        p.pu[LUMA_16x4].convert_p2s  = PFX(filterPixelToShort_16x4_neon);\n-        p.pu[LUMA_16x8].convert_p2s  = PFX(filterPixelToShort_16x8_neon);\n-        p.pu[LUMA_16x12].convert_p2s = PFX(filterPixelToShort_16x12_neon);\n-        p.pu[LUMA_16x16].convert_p2s = PFX(filterPixelToShort_16x16_neon);\n-        p.pu[LUMA_16x32].convert_p2s = PFX(filterPixelToShort_16x32_neon);\n-        p.pu[LUMA_16x64].convert_p2s = PFX(filterPixelToShort_16x64_neon);\n-        p.pu[LUMA_24x32].convert_p2s = PFX(filterPixelToShort_24x32_neon);\n-        p.pu[LUMA_32x8].convert_p2s  = PFX(filterPixelToShort_32x8_neon);\n-        p.pu[LUMA_32x16].convert_p2s = PFX(filterPixelToShort_32x16_neon);\n-        p.pu[LUMA_32x24].convert_p2s = PFX(filterPixelToShort_32x24_neon);\n-        p.pu[LUMA_32x32].convert_p2s = PFX(filterPixelToShort_32x32_neon);\n-        p.pu[LUMA_32x64].convert_p2s = PFX(filterPixelToShort_32x64_neon);\n-        p.pu[LUMA_48x64].convert_p2s = PFX(filterPixelToShort_48x64_neon);\n-        p.pu[LUMA_64x16].convert_p2s = PFX(filterPixelToShort_64x16_neon);\n-        p.pu[LUMA_64x32].convert_p2s = PFX(filterPixelToShort_64x32_neon);\n-        p.pu[LUMA_64x48].convert_p2s = PFX(filterPixelToShort_64x48_neon);\n-        p.pu[LUMA_64x64].convert_p2s = PFX(filterPixelToShort_64x64_neon);\n+        p.pu[LUMA_4x4].convert_p2s[ALIGNED]   = PFX(filterPixelToShort_4x4_neon);\n+        p.pu[LUMA_4x8].convert_p2s[ALIGNED]   = PFX(filterPixelToShort_4x8_neon);\n+        p.pu[LUMA_4x16].convert_p2s[ALIGNED]  = PFX(filterPixelToShort_4x16_neon);\n+        p.pu[LUMA_8x4].convert_p2s[ALIGNED]   = PFX(filterPixelToShort_8x4_neon);\n+        p.pu[LUMA_8x8].convert_p2s[ALIGNED]   = PFX(filterPixelToShort_8x8_neon);\n+        p.pu[LUMA_8x16].convert_p2s[ALIGNED]  = PFX(filterPixelToShort_8x16_neon);\n+        p.pu[LUMA_8x32].convert_p2s[ALIGNED]  = PFX(filterPixelToShort_8x32_neon);\n+        p.pu[LUMA_12x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_12x16_neon);\n+        p.pu[LUMA_16x4].convert_p2s[ALIGNED]  = PFX(filterPixelToShort_16x4_neon);\n+        p.pu[LUMA_16x8].convert_p2s[ALIGNED]  = PFX(filterPixelToShort_16x8_neon);\n+        p.pu[LUMA_16x12].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x12_neon);\n+        p.pu[LUMA_16x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x16_neon);\n+        p.pu[LUMA_16x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x32_neon);\n+        p.pu[LUMA_16x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x64_neon);\n+        p.pu[LUMA_24x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_24x32_neon);\n+        p.pu[LUMA_32x8].convert_p2s[ALIGNED]  = PFX(filterPixelToShort_32x8_neon);\n+        p.pu[LUMA_32x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x16_neon);\n+        p.pu[LUMA_32x24].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x24_neon);\n+        p.pu[LUMA_32x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x32_neon);\n+        p.pu[LUMA_32x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x64_neon);\n+        p.pu[LUMA_48x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_48x64_neon);\n+        p.pu[LUMA_64x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x16_neon);\n+        p.pu[LUMA_64x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x32_neon);\n+        p.pu[LUMA_64x48].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x48_neon);\n+        p.pu[LUMA_64x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x64_neon);\n \n         // Block_fill\n-        p.cu[BLOCK_4x4].blockfill_s   = PFX(blockfill_s_4x4_neon);\n-        p.cu[BLOCK_8x8].blockfill_s   = PFX(blockfill_s_8x8_neon);\n-        p.cu[BLOCK_16x16].blockfill_s = PFX(blockfill_s_16x16_neon);\n-        p.cu[BLOCK_32x32].blockfill_s = PFX(blockfill_s_32x32_neon);\n+        p.cu[BLOCK_4x4].blockfill_s[ALIGNED]   = PFX(blockfill_s_4x4_neon);\n+        p.cu[BLOCK_8x8].blockfill_s[ALIGNED]   = PFX(blockfill_s_8x8_neon);\n+        p.cu[BLOCK_16x16].blockfill_s[ALIGNED] = PFX(blockfill_s_16x16_neon);\n+        p.cu[BLOCK_32x32].blockfill_s[ALIGNED] = PFX(blockfill_s_32x32_neon);\n \n         // Blockcopy_ss\n         p.cu[BLOCK_4x4].copy_ss   = PFX(blockcopy_ss_4x4_neon);\n@@ -495,21 +495,21 @@ void setupAssemblyPrimitives(EncoderPrim\n         p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].copy_sp = PFX(blockcopy_sp_32x64_neon);\n \n         // pixel_add_ps\n-        p.cu[BLOCK_4x4].add_ps   = PFX(pixel_add_ps_4x4_neon);\n-        p.cu[BLOCK_8x8].add_ps   = PFX(pixel_add_ps_8x8_neon);\n-        p.cu[BLOCK_16x16].add_ps = PFX(pixel_add_ps_16x16_neon);\n-        p.cu[BLOCK_32x32].add_ps = PFX(pixel_add_ps_32x32_neon);\n-        p.cu[BLOCK_64x64].add_ps = PFX(pixel_add_ps_64x64_neon);\n+        p.cu[BLOCK_4x4].add_ps[ALIGNED]   = PFX(pixel_add_ps_4x4_neon);\n+        p.cu[BLOCK_8x8].add_ps[ALIGNED]   = PFX(pixel_add_ps_8x8_neon);\n+        p.cu[BLOCK_16x16].add_ps[ALIGNED] = PFX(pixel_add_ps_16x16_neon);\n+        p.cu[BLOCK_32x32].add_ps[ALIGNED] = PFX(pixel_add_ps_32x32_neon);\n+        p.cu[BLOCK_64x64].add_ps[ALIGNED] = PFX(pixel_add_ps_64x64_neon);\n \n         // chroma add_ps\n-        p.chroma[X265_CSP_I420].cu[BLOCK_420_4x4].add_ps   = PFX(pixel_add_ps_4x4_neon);\n-        p.chroma[X265_CSP_I420].cu[BLOCK_420_8x8].add_ps   = PFX(pixel_add_ps_8x8_neon);\n-        p.chroma[X265_CSP_I420].cu[BLOCK_420_16x16].add_ps = PFX(pixel_add_ps_16x16_neon);\n-        p.chroma[X265_CSP_I420].cu[BLOCK_420_32x32].add_ps = PFX(pixel_add_ps_32x32_neon);\n-        p.chroma[X265_CSP_I422].cu[BLOCK_422_4x8].add_ps   = PFX(pixel_add_ps_4x8_neon);\n-        p.chroma[X265_CSP_I422].cu[BLOCK_422_8x16].add_ps  = PFX(pixel_add_ps_8x16_neon);\n-        p.chroma[X265_CSP_I422].cu[BLOCK_422_16x32].add_ps = PFX(pixel_add_ps_16x32_neon);\n-        p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].add_ps = PFX(pixel_add_ps_32x64_neon);\n+        p.chroma[X265_CSP_I420].cu[BLOCK_420_4x4].add_ps[ALIGNED]   = PFX(pixel_add_ps_4x4_neon);\n+        p.chroma[X265_CSP_I420].cu[BLOCK_420_8x8].add_ps[ALIGNED]   = PFX(pixel_add_ps_8x8_neon);\n+        p.chroma[X265_CSP_I420].cu[BLOCK_420_16x16].add_ps[ALIGNED] = PFX(pixel_add_ps_16x16_neon);\n+        p.chroma[X265_CSP_I420].cu[BLOCK_420_32x32].add_ps[ALIGNED] = PFX(pixel_add_ps_32x32_neon);\n+        p.chroma[X265_CSP_I422].cu[BLOCK_422_4x8].add_ps[ALIGNED]   = PFX(pixel_add_ps_4x8_neon);\n+        p.chroma[X265_CSP_I422].cu[BLOCK_422_8x16].add_ps[ALIGNED]  = PFX(pixel_add_ps_8x16_neon);\n+        p.chroma[X265_CSP_I422].cu[BLOCK_422_16x32].add_ps[ALIGNED] = PFX(pixel_add_ps_16x32_neon);\n+        p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].add_ps[ALIGNED] = PFX(pixel_add_ps_32x64_neon);\n \n         // cpy2Dto1D_shr\n         p.cu[BLOCK_4x4].cpy2Dto1D_shr   = PFX(cpy2Dto1D_shr_4x4_neon);\n@@ -518,10 +518,10 @@ void setupAssemblyPrimitives(EncoderPrim\n         p.cu[BLOCK_32x32].cpy2Dto1D_shr = PFX(cpy2Dto1D_shr_32x32_neon);\n \n         // ssd_s\n-        p.cu[BLOCK_4x4].ssd_s   = PFX(pixel_ssd_s_4x4_neon);\n-        p.cu[BLOCK_8x8].ssd_s   = PFX(pixel_ssd_s_8x8_neon);\n-        p.cu[BLOCK_16x16].ssd_s = PFX(pixel_ssd_s_16x16_neon);\n-        p.cu[BLOCK_32x32].ssd_s = PFX(pixel_ssd_s_32x32_neon);\n+        p.cu[BLOCK_4x4].ssd_s[ALIGNED]   = PFX(pixel_ssd_s_4x4_neon);\n+        p.cu[BLOCK_8x8].ssd_s[ALIGNED]   = PFX(pixel_ssd_s_8x8_neon);\n+        p.cu[BLOCK_16x16].ssd_s[ALIGNED] = PFX(pixel_ssd_s_16x16_neon);\n+        p.cu[BLOCK_32x32].ssd_s[ALIGNED] = PFX(pixel_ssd_s_32x32_neon);\n \n         // sse_ss\n         p.cu[BLOCK_4x4].sse_ss   = PFX(pixel_sse_ss_4x4_neon);\n@@ -548,10 +548,10 @@ void setupAssemblyPrimitives(EncoderPrim\n         p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].sub_ps = PFX(pixel_sub_ps_32x64_neon);\n \n         // calc_Residual\n-        p.cu[BLOCK_4x4].calcresidual   = PFX(getResidual4_neon);\n-        p.cu[BLOCK_8x8].calcresidual   = PFX(getResidual8_neon);\n-        p.cu[BLOCK_16x16].calcresidual = PFX(getResidual16_neon);\n-        p.cu[BLOCK_32x32].calcresidual = PFX(getResidual32_neon);\n+        p.cu[BLOCK_4x4].calcresidual[ALIGNED]   = PFX(getResidual4_neon);\n+        p.cu[BLOCK_8x8].calcresidual[ALIGNED]   = PFX(getResidual8_neon);\n+        p.cu[BLOCK_16x16].calcresidual[ALIGNED] = PFX(getResidual16_neon);\n+        p.cu[BLOCK_32x32].calcresidual[ALIGNED] = PFX(getResidual32_neon);\n \n         // sse_pp\n         p.cu[BLOCK_4x4].sse_pp   = PFX(pixel_sse_pp_4x4_neon);\n@@ -722,31 +722,31 @@ void setupAssemblyPrimitives(EncoderPrim\n         p.pu[LUMA_64x64].sad_x4 = PFX(sad_x4_64x64_neon);\n \n         // pixel_avg_pp\n-        p.pu[LUMA_4x4].pixelavg_pp   = PFX(pixel_avg_pp_4x4_neon);\n-        p.pu[LUMA_4x8].pixelavg_pp   = PFX(pixel_avg_pp_4x8_neon);\n-        p.pu[LUMA_4x16].pixelavg_pp  = PFX(pixel_avg_pp_4x16_neon);\n-        p.pu[LUMA_8x4].pixelavg_pp   = PFX(pixel_avg_pp_8x4_neon);\n-        p.pu[LUMA_8x8].pixelavg_pp   = PFX(pixel_avg_pp_8x8_neon);\n-        p.pu[LUMA_8x16].pixelavg_pp  = PFX(pixel_avg_pp_8x16_neon);\n-        p.pu[LUMA_8x32].pixelavg_pp  = PFX(pixel_avg_pp_8x32_neon);\n-        p.pu[LUMA_12x16].pixelavg_pp = PFX(pixel_avg_pp_12x16_neon);\n-        p.pu[LUMA_16x4].pixelavg_pp  = PFX(pixel_avg_pp_16x4_neon);\n-        p.pu[LUMA_16x8].pixelavg_pp  = PFX(pixel_avg_pp_16x8_neon);\n-        p.pu[LUMA_16x12].pixelavg_pp = PFX(pixel_avg_pp_16x12_neon);\n-        p.pu[LUMA_16x16].pixelavg_pp = PFX(pixel_avg_pp_16x16_neon);\n-        p.pu[LUMA_16x32].pixelavg_pp = PFX(pixel_avg_pp_16x32_neon);\n-        p.pu[LUMA_16x64].pixelavg_pp = PFX(pixel_avg_pp_16x64_neon);\n-        p.pu[LUMA_24x32].pixelavg_pp = PFX(pixel_avg_pp_24x32_neon);\n-        p.pu[LUMA_32x8].pixelavg_pp  = PFX(pixel_avg_pp_32x8_neon);\n-        p.pu[LUMA_32x16].pixelavg_pp = PFX(pixel_avg_pp_32x16_neon);\n-        p.pu[LUMA_32x24].pixelavg_pp = PFX(pixel_avg_pp_32x24_neon);\n-        p.pu[LUMA_32x32].pixelavg_pp = PFX(pixel_avg_pp_32x32_neon);\n-        p.pu[LUMA_32x64].pixelavg_pp = PFX(pixel_avg_pp_32x64_neon);\n-        p.pu[LUMA_48x64].pixelavg_pp = PFX(pixel_avg_pp_48x64_neon);\n-        p.pu[LUMA_64x16].pixelavg_pp = PFX(pixel_avg_pp_64x16_neon);\n-        p.pu[LUMA_64x32].pixelavg_pp = PFX(pixel_avg_pp_64x32_neon);\n-        p.pu[LUMA_64x48].pixelavg_pp = PFX(pixel_avg_pp_64x48_neon);\n-        p.pu[LUMA_64x64].pixelavg_pp = PFX(pixel_avg_pp_64x64_neon);\n+        p.pu[LUMA_4x4].pixelavg_pp[ALIGNED]   = PFX(pixel_avg_pp_4x4_neon);\n+        p.pu[LUMA_4x8].pixelavg_pp[ALIGNED]   = PFX(pixel_avg_pp_4x8_neon);\n+        p.pu[LUMA_4x16].pixelavg_pp[ALIGNED]  = PFX(pixel_avg_pp_4x16_neon);\n+        p.pu[LUMA_8x4].pixelavg_pp[ALIGNED]   = PFX(pixel_avg_pp_8x4_neon);\n+        p.pu[LUMA_8x8].pixelavg_pp[ALIGNED]   = PFX(pixel_avg_pp_8x8_neon);\n+        p.pu[LUMA_8x16].pixelavg_pp[ALIGNED]  = PFX(pixel_avg_pp_8x16_neon);\n+        p.pu[LUMA_8x32].pixelavg_pp[ALIGNED]  = PFX(pixel_avg_pp_8x32_neon);\n+        p.pu[LUMA_12x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_12x16_neon);\n+        p.pu[LUMA_16x4].pixelavg_pp[ALIGNED]  = PFX(pixel_avg_pp_16x4_neon);\n+        p.pu[LUMA_16x8].pixelavg_pp[ALIGNED]  = PFX(pixel_avg_pp_16x8_neon);\n+        p.pu[LUMA_16x12].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x12_neon);\n+        p.pu[LUMA_16x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x16_neon);\n+        p.pu[LUMA_16x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x32_neon);\n+        p.pu[LUMA_16x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x64_neon);\n+        p.pu[LUMA_24x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_24x32_neon);\n+        p.pu[LUMA_32x8].pixelavg_pp[ALIGNED]  = PFX(pixel_avg_pp_32x8_neon);\n+        p.pu[LUMA_32x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x16_neon);\n+        p.pu[LUMA_32x24].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x24_neon);\n+        p.pu[LUMA_32x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x32_neon);\n+        p.pu[LUMA_32x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x64_neon);\n+        p.pu[LUMA_48x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_48x64_neon);\n+        p.pu[LUMA_64x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x16_neon);\n+        p.pu[LUMA_64x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x32_neon);\n+        p.pu[LUMA_64x48].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x48_neon);\n+        p.pu[LUMA_64x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x64_neon);\n \n         // planecopy\n         p.planecopy_cp = PFX(pixel_planecopy_cp_neon);\n"
  },
  {
    "path": "package/x265/Config.in",
    "content": "config BR2_PACKAGE_X265\n\tbool \"x265\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS # dlfcn\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\thelp\n\t  x265 is an open source free software and library for\n\t  encoding video using the High Efficiency Video Coding\n\t  (HEVC/H.265) standard. x265 is offered under either the GNU\n\t  General Public License (GPL) 2 license or a commercial\n\t  license, similar to the x264 project.\n\n\t  https://bitbucket.org/multicoreware/x265/wiki/Home\n\nif BR2_PACKAGE_X265\n\nconfig BR2_PACKAGE_X265_CLI\n\tbool \"CLI\"\n\thelp\n\t  Command-line tool to encode video streams into the\n\t  H.265/HEVC compression format.\n\nendif\n\ncomment \"x265 needs a toolchain w/ C++, threads, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n"
  },
  {
    "path": "package/x265/x265.hash",
    "content": "# From https://mailman.videolan.org/pipermail/x265-devel/2020-February/012880.html\nmd5  0c8c747b59b5411dea8cf557554636c1  x265_3.3.tar.gz\n# Locally generated\nsha256  f26e148ed1f4dfb33fd1eb3ff5e60e08078d1b2017e88bcbb045b3fb58300b9c  x265_3.3.tar.gz\nsha256  d8afb1bcc7a2cfc603683b168d6987ef0a48e59e0da3693bf55c5d33b67e2b49  COPYING\n"
  },
  {
    "path": "package/x265/x265.mk",
    "content": "################################################################################\n#\n# x265\n#\n################################################################################\n\nX265_VERSION = 3.3\nX265_SOURCE = x265_$(X265_VERSION).tar.gz\nX265_SITE = https://bitbucket.org/multicoreware/x265/downloads\nX265_LICENSE = GPL-2.0+\nX265_LICENSE_FILES = COPYING\nX265_CPE_ID_VENDOR = multicorewareinc\nX265_SUBDIR = source\nX265_INSTALL_STAGING = YES\nX265_MAKE = $(MAKE1)\n\nifeq ($(BR2_i386)$(BR2_x86_64),y)\nX265_DEPENDENCIES += host-nasm\nendif\n\n# disable altivec, it has build issues\n# https://bitbucket.org/multicoreware/x265/issues/320/\nifeq ($(BR2_powerpc64)$(BR2_powerpc64le),y)\nX265_CONF_OPTS += -DENABLE_ALTIVEC=OFF\nendif\n\nifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y)\nX265_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_PIC=ON\nelse\nX265_CONF_OPTS += -DENABLE_SHARED=OFF\nendif\n\nifeq ($(BR2_PACKAGE_X265_CLI),y)\nX265_CONF_OPTS += -DENABLE_CLI=ON\nelse\nX265_CONF_OPTS += -DENABLE_CLI=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/xapian/Config.in",
    "content": "config BR2_PACKAGE_XAPIAN\n\tbool \"xapian\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  Xapian is an open Source search engine Library\n\t  It is a highly adaptable toolkit which allows developers\n\t  to easily add advanced indexing and search facilities to\n\t  their own applications.\n\t  It has built-in support for several families of weighting\n\t  models and supports a rich set of boolean query operators.\n\n\t  https://xapian.org/\n\ncomment \"xapian needs a toolchain w/ C++\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_INSTALL_LIBSTDCPP\n"
  },
  {
    "path": "package/xapian/xapian.hash",
    "content": "# From https://lists.xapian.org/pipermail/xapian-discuss/2021-January/009856.html\nsha256  196ddbb4ad10450100f0991a599e4ed944cbad92e4a6fe813be6dce160244b77  xapian-core-1.4.18.tar.xz\n\n# locally computed\nsha256  c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42  COPYING\n"
  },
  {
    "path": "package/xapian/xapian.mk",
    "content": "################################################################################\n#\n# xapian\n#\n################################################################################\n\nXAPIAN_VERSION = 1.4.18\nXAPIAN_SOURCE = xapian-core-$(XAPIAN_VERSION).tar.xz\nXAPIAN_SITE = https://oligarchy.co.uk/xapian/$(XAPIAN_VERSION)\nXAPIAN_LICENSE = GPL-2.0+\nXAPIAN_LICENSE_FILES = COPYING\nXAPIAN_CPE_ID_VENDOR = xapian\nXAPIAN_CPE_ID_PRODUCT = xapian-core\nXAPIAN_INSTALL_STAGING = YES\nXAPIAN_DEPENDENCIES = zlib\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/xavante/Config.in",
    "content": "config BR2_PACKAGE_XAVANTE\n\tbool \"xavante\"\n\tselect BR2_PACKAGE_COPAS # runtime\n\tselect BR2_PACKAGE_LUAFILESYSTEM # runtime\n\tselect BR2_PACKAGE_LUASOCKET # runtime\n\thelp\n\t  Xavante is a Lua HTTP 1.1 Web server that uses a modular\n\t  architecture based on URI mapped handlers. Xavante currently\n\t  offers a file handler, a redirect handler and a WSAPI handler.\n\t  Those are used for general files, URI remapping and WSAPI\n\t  applications respectively.\n\n\t  http://keplerproject.github.io/xavante\n"
  },
  {
    "path": "package/xavante/xavante.hash",
    "content": "# computed by luarocks/buildroot\nsha256 67c738f981e7d65d18c717f3acac59a37f95d5139c00fb0de5d3167262025273  xavante-2.4.0-1.src.rock\nsha256 57b2c50f08bf500c969fe13500f217adb36582e4d8e75c9e2ed04191cb4a045c  xavante-2.4.0/doc/us/license.html\n"
  },
  {
    "path": "package/xavante/xavante.mk",
    "content": "################################################################################\n#\n# xavante\n#\n################################################################################\n\nXAVANTE_VERSION = 2.4.0-1\nXAVANTE_LICENSE = MIT\nXAVANTE_LICENSE_FILES = $(XAVANTE_SUBDIR)/doc/us/license.html\n\n$(eval $(luarocks-package))\n"
  },
  {
    "path": "package/xdg-dbus-proxy/0001-Fix-musl-compilation-by-adding-TEMP_FAILURE_RETRY.patch",
    "content": "From 645c45f0334bb1d6e31b5927cece5e446f129cbb Mon Sep 17 00:00:00 2001\nFrom: Danilo Spinella <danyspin97@protonmail.com>\nDate: Sat, 7 Dec 2019 00:05:21 +0100\nSubject: [PATCH] Fix musl compilation by adding TEMP_FAILURE_RETRY\n\nFetch from: https://github.com/flatpak/xdg-dbus-proxy/pull/13\nUpstream-Status: Accepted\nSigned-off-by: Adrian Perez de Castro <aperez@igalia.com>\n\n---\n dbus-proxy.c | 9 +++++++++\n 1 file changed, 9 insertions(+)\n\ndiff --git a/dbus-proxy.c b/dbus-proxy.c\nindex 163df21..4b07931 100644\n--- a/dbus-proxy.c\n+++ b/dbus-proxy.c\n@@ -30,6 +30,15 @@\n #include <errno.h>\n \n #include \"flatpak-proxy.h\"\n+// Taken from glibc unistd.h\n+#ifndef TEMP_FAILURE_RETRY\n+# define TEMP_FAILURE_RETRY(expression) \\\n+  (__extension__                                                              \\\n+    ({ long int __result;                                                     \\\n+       do __result = (long int) (expression);                                 \\\n+       while (__result == -1L && errno == EINTR);                             \\\n+       __result; }))\n+#endif\n \n static const char *argv0;\n static GList *proxies;\n-- \n2.24.1\n\n"
  },
  {
    "path": "package/xdg-dbus-proxy/Config.in",
    "content": "config BR2_PACKAGE_XDG_DBUS_PROXY\n\tbool \"xdg-dbus-proxy\"\n\tdepends on BR2_USE_WCHAR # libglib2 -> gettext\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_MMU # libglib2\n\tselect BR2_PACKAGE_LIBGLIB2\n\thelp\n\t  Filtering proxy for D-Bus connections.\n\n\t  https://github.com/flatpak/xdg-dbus-proxy\n\ncomment \"xdg-dbus-proxy needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/xdg-dbus-proxy/xdg-dbus-proxy.hash",
    "content": "# From https://github.com/flatpak/xdg-dbus-proxy/releases/tag/0.1.2\nsha256 1749d6f9f46dcc9edc87725641cf56cf91dcad1b01707891ea0850c1000c520f xdg-dbus-proxy-0.1.2.tar.xz\n\n# Hash for license files:\nsha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING\n"
  },
  {
    "path": "package/xdg-dbus-proxy/xdg-dbus-proxy.mk",
    "content": "################################################################################\n#\n# bubblewrap\n#\n################################################################################\n\nXDG_DBUS_PROXY_VERSION = 0.1.2\nXDG_DBUS_PROXY_SITE = https://github.com/flatpak/xdg-dbus-proxy/releases/download/$(XDG_DBUS_PROXY_VERSION)\nXDG_DBUS_PROXY_SOURCE = xdg-dbus-proxy-$(XDG_DBUS_PROXY_VERSION).tar.xz\nXDG_DBUS_PROXY_DEPENDENCIES = host-pkgconf libglib2\n\nXDG_DBUS_PROXY_LICENSE = LGPL-2.1+\nXDG_DBUS_PROXY_LICENSE_FILES = COPYING\n\nXDG_DBUS_PROXY_CONF_OPTS = --disable-man\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/xdotool/Config.in",
    "content": "config BR2_PACKAGE_XDOTOOL\n\tbool \"xdotool\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_XLIB_LIBXTST\n\tselect BR2_PACKAGE_XLIB_LIBXINERAMA\n\tselect BR2_PACKAGE_LIBXKBCOMMON\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\thelp\n\t  Command-line X11 automation tool\n\n\t  http://www.semicomplete.com/projects/xdotool\n"
  },
  {
    "path": "package/xdotool/xdotool.hash",
    "content": "# locally computed hash\nsha256 ddafca1239075c203769c17a5a184587731e56fbe0438c09d08f8af1704e117a  xdotool-3.20160805.1.tar.gz\nsha256 129d156c35b1cb19350f3716129173c8c89e019c0497d9df073db5b801becef2  COPYRIGHT\n"
  },
  {
    "path": "package/xdotool/xdotool.mk",
    "content": "################################################################################\n#\n# xdotool\n#\n################################################################################\n\nXDOTOOL_VERSION = 3.20160805.1\nXDOTOOL_SITE = $(call github,jordansissel,xdotool,v$(XDOTOOL_VERSION))\nXDOTOOL_LICENSE = BSD-3-Clause\nXDOTOOL_LICENSE_FILES = COPYRIGHT\nXDOTOOL_DEPENDENCIES = xlib_libXtst xlib_libXinerama libxkbcommon xlib_libX11\n\ndefine XDOTOOL_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)\nendef\n\n# Avoid 'install' target to skip 'post-install' which runs ldconfig on host\ndefine XDOTOOL_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \\\n\t\tpre-install installlib installprog installheader \\\n\t\tPREFIX=\"$(TARGET_DIR)/usr\"\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/xen/0001-9pfs-include-linux-limits.h-for-XATTR_SIZE_MAX.patch",
    "content": "Message-Id: <07010a2ad79559c412949f0005dbe3cb03d8416e.1498504812.git.ps@pks.im>\nFrom: Patrick Steinhardt <ps@pks.im>\nDate: Mon, 26 Jun 2017 21:20:45 +0200\nSubject: [PATCH] 9pfs: include <linux/limits.h> for XATTR_SIZE_MAX\n\nThe function `v9fs_xattrcreate` makes use of the define `XATTR_SIZE_MAX`\nto reject attempts of creating xattrs with an invalid size, which is\ndefined in <linux/limits.h>. On glibc-based systems, this header is\nindirectly included via <limits.h>, <bits/posix1_lim.h>,\n<bitts/local_lim.h>, but on other platforms this is not guaranteed due\nto not being part of the POSIX standard. One examples are systems based\non musl libc, which do not include the <linux/limits.h> indirectly,\nwhich leads to `XATTR_SIZE_MAX` being undefined.\n\nFix this error by directly include <linux/limits.h>. As the 9P fs code\nis being Linux-based either way, we can simply do so without breaking\nother platforms. This enables building 9pfs on musl-based systems.\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\n[ Changes by AF\n - Apply to the QEMU tree inside of Xen\n]\nSigned-off-by: Alistair Francis <alistair.francis@xilinx.com>\n---\nUpstream Status: Pending review and acceptance\n\n tools/qemu-xen/hw/9pfs/9p.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/tools/qemu-xen/hw/9pfs/9p.c b/tools/qemu-xen/hw/9pfs/9p.c\nindex 96d2683348..48cd558e96 100644\n--- a/tools/qemu-xen/hw/9pfs/9p.c\n+++ b/tools/qemu-xen/hw/9pfs/9p.c\n@@ -13,6 +13,7 @@\n \n #include \"qemu/osdep.h\"\n #include <glib/gprintf.h>\n+#include <linux/limits.h>\n #include \"hw/virtio/virtio.h\"\n #include \"qapi/error.h\"\n #include \"qemu/error-report.h\"\n-- \n2.13.2\n"
  },
  {
    "path": "package/xen/0002-Fix-build-with-64-bits-time_t.patch",
    "content": "From f7a6df5f5bf3acc219352a1b25573ae2082d7e42 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 3 Dec 2020 20:58:19 +0100\nSubject: [PATCH] Fix build with 64 bits time_t\n\ntime element is deprecated on new input_event structure in kernel's\ninput.h [1]\n\nThis will avoid the following build failure:\n\nhw/input/virtio-input-host.c: In function 'virtio_input_host_handle_status':\nhw/input/virtio-input-host.c:198:28: error: 'struct input_event' has no member named 'time'\n  198 |     if (gettimeofday(&evdev.time, NULL)) {\n      |                            ^\n\nFixes:\n - http://autobuild.buildroot.org/results/a538167e288c14208d557cd45446df86d3d599d5\n - http://autobuild.buildroot.org/results/efd4474fb4b6c0ce0ab3838ce130429c51e43bbb\n\n[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nMessage-Id: <20201203195819.583626-1-fontaine.fabrice@gmail.com>\nFixes: https://gitlab.com/qemu-project/qemu/-/issues/246\nReviewed-by: Michael S. Tsirkin <mst@redhat.com>\nSigned-off-by: Michael S. Tsirkin <mst@redhat.com>\n\n[Retrieved (and updated for qemu-xen) from:\nhttps://github.com/qemu/qemu/commit/f7a6df5f5bf3acc219352a1b25573ae2082d7e42]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n contrib/vhost-user-input/main.c | 8 ++++++--\n hw/input/virtio-input-host.c    | 5 ++++-\n 2 files changed, 10 insertions(+), 3 deletions(-)\n\ndiff --git a/tools/qemu-xen/contrib/vhost-user-input/main.c b/tools/qemu-xen/contrib/vhost-user-input/main.c\nindex c15d18c33f0c..081230da548a 100644\n--- a/tools/qemu-xen/contrib/vhost-user-input/main.c\n+++ b/tools/qemu-xen/contrib/vhost-user-input/main.c\n@@ -6,13 +6,14 @@\n #include \"qemu/osdep.h\"\n \n #include <glib.h>\n-#include <linux/input.h>\n+#include <sys/ioctl.h>\n \n #include \"qemu/iov.h\"\n #include \"qemu/bswap.h\"\n #include \"qemu/sockets.h\"\n #include \"contrib/libvhost-user/libvhost-user.h\"\n #include \"contrib/libvhost-user/libvhost-user-glib.h\"\n+#include \"standard-headers/linux/input.h\"\n #include \"standard-headers/linux/virtio_input.h\"\n #include \"qapi/error.h\"\n \n@@ -113,13 +114,16 @@ vi_evdev_watch(VuDev *dev, int condition, void *data)\n static void vi_handle_status(VuInput *vi, virtio_input_event *event)\n {\n     struct input_event evdev;\n+    struct timeval tval;\n     int rc;\n \n-    if (gettimeofday(&evdev.time, NULL)) {\n+    if (gettimeofday(&tval, NULL)) {\n         perror(\"vi_handle_status: gettimeofday\");\n         return;\n     }\n \n+    evdev.input_event_sec = tval.tv_sec;\n+    evdev.input_event_usec = tval.tv_usec;\n     evdev.type = le16toh(event->type);\n     evdev.code = le16toh(event->code);\n     evdev.value = le32toh(event->value);\ndiff --git a/tools/qemu-xen/hw/input/virtio-input-host.c b/tools/qemu-xen/hw/input/virtio-input-host.c\nindex 85daf73f1a80..137efba57b0f 100644\n--- a/tools/qemu-xen/hw/input/virtio-input-host.c\n+++ b/tools/qemu-xen/hw/input/virtio-input-host.c\n@@ -193,13 +193,16 @@ static void virtio_input_host_handle_status(VirtIOInput *vinput,\n {\n     VirtIOInputHost *vih = VIRTIO_INPUT_HOST(vinput);\n     struct input_event evdev;\n+    struct timeval tval;\n     int rc;\n \n-    if (gettimeofday(&evdev.time, NULL)) {\n+    if (gettimeofday(&tval, NULL)) {\n         perror(\"virtio_input_host_handle_status: gettimeofday\");\n         return;\n     }\n \n+    evdev.input_event_sec = tval.tv_sec;\n+    evdev.input_event_usec = tval.tv_usec;\n     evdev.type = le16_to_cpu(event->type);\n     evdev.code = le16_to_cpu(event->code);\n     evdev.value = le32_to_cpu(event->value);\n"
  },
  {
    "path": "package/xen/0003-libs-light-fix-tv_sec-printf-format.patch",
    "content": "From a8ac01aa3e3ea5e6a9a1620aa8fa7e9da3458120 Mon Sep 17 00:00:00 2001\nFrom: Manuel Bouyer <bouyer@netbsd.org>\nDate: Tue, 26 Jan 2021 23:47:55 +0100\nSubject: [PATCH] libs/light: fix tv_sec printf format\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nDon't assume tv_sec is a unsigned long, it is 64 bits on NetBSD 32 bits.\nUse %jd and cast to (intmax_t) instead\n\nSigned-off-by: Manuel Bouyer <bouyer@netbsd.org>\nReviewed-by: Roger Pau Monné <roger.pau@citrix.com>\n[Retrieved (and backported) from:\nhttps://gitlab.com/xen-project/xen/-/commit/a8ac01aa3e3ea5e6a9a1620aa8fa7e9da3458120]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n tools/libs/light/libxl_create.c | 8 ++++----\n 1 file changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c\nindex 8616113e72..9848d65f36 100644\n--- a/tools/libxl/libxl_create.c\n+++ b/tools/libxl/libxl_create.c\n@@ -496,7 +496,7 @@ int libxl__domain_build(libxl__gc *gc,\n         vments[2] = \"image/ostype\";\n         vments[3] = \"hvm\";\n         vments[4] = \"start_time\";\n-        vments[5] = GCSPRINTF(\"%lu.%02d\", start_time.tv_sec,(int)start_time.tv_usec/10000);\n+        vments[5] = GCSPRINTF(\"%jd.%02d\", (intmax_t)start_time.tv_sec,(int)start_time.tv_usec/10000);\n \n         localents = libxl__calloc(gc, 13, sizeof(char *));\n         i = 0;\n@@ -535,7 +535,7 @@ int libxl__domain_build(libxl__gc *gc,\n         vments[i++] = \"image/kernel\";\n         vments[i++] = (char *) state->pv_kernel.path;\n         vments[i++] = \"start_time\";\n-        vments[i++] = GCSPRINTF(\"%lu.%02d\", start_time.tv_sec,(int)start_time.tv_usec/10000);\n+        vments[i++] = GCSPRINTF(\"%jd.%02d\", (intmax_t)start_time.tv_sec,(int)start_time.tv_usec/10000);\n         if (state->pv_ramdisk.path) {\n             vments[i++] = \"image/ramdisk\";\n             vments[i++] = (char *) state->pv_ramdisk.path;\n@@ -1502,7 +1502,7 @@ static void domcreate_stream_done(libxl__egc *egc,\n         vments[2] = \"image/ostype\";\n         vments[3] = \"hvm\";\n         vments[4] = \"start_time\";\n-        vments[5] = GCSPRINTF(\"%lu.%02d\", start_time.tv_sec,(int)start_time.tv_usec/10000);\n+        vments[5] = GCSPRINTF(\"%jd.%02d\", (intmax_t)start_time.tv_sec,(int)start_time.tv_usec/10000);\n         break;\n     case LIBXL_DOMAIN_TYPE_PV:\n         vments = libxl__calloc(gc, 11, sizeof(char *));\n@@ -1512,7 +1512,7 @@ static void domcreate_stream_done(libxl__egc *egc,\n         vments[i++] = \"image/kernel\";\n         vments[i++] = (char *) state->pv_kernel.path;\n         vments[i++] = \"start_time\";\n-        vments[i++] = GCSPRINTF(\"%lu.%02d\", start_time.tv_sec,(int)start_time.tv_usec/10000);\n+        vments[i++] = GCSPRINTF(\"%jd.%02d\", (intmax_t)start_time.tv_sec,(int)start_time.tv_usec/10000);\n         if (state->pv_ramdisk.path) {\n             vments[i++] = \"image/ramdisk\";\n             vments[i++] = (char *) state->pv_ramdisk.path;\n-- \nGitLab\n\n"
  },
  {
    "path": "package/xen/0004-libs-light-fix-tv_sec-fprintf-format.patch",
    "content": "From 4881285bcfd8f2e2c913c6e9f011b1e90652f414 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 28 Aug 2021 11:00:07 +0200\nSubject: [PATCH] libs/light: fix tv_sec fprintf format\n\nDon't assume tv_sec is a unsigned long, it is 64 bits on NetBSD 32 bits.\nUse %jd and cast to (intmax_t) instead\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: sent to xen-devel@lists.xenproject.org]\n---\n tools/libs/light/libxl_domain.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/tools/libxl/libxl_domain.c b/tools/libxl/libxl_domain.c\nindex c00c36c928..51a6127552 100644\n--- a/tools/libxl/libxl_domain.c\n+++ b/tools/libxl/libxl_domain.c\n@@ -1444,7 +1444,7 @@ static int libxl__mark_domid_recent(libxl__gc *gc, uint32_t domid)\n         }\n     }\n \n-    r = fprintf(nf, \"%lu %u\\n\", ctxt.ts.tv_sec, domid);\n+    r = fprintf(nf, \"%jd %u\\n\", (intmax_t)ctxt.ts.tv_sec, domid);\n     if (r < 0) {\n         LOGED(ERROR, domid, \"failed to write to '%s'\", new);\n         goto out;\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/xen/Config.in",
    "content": "config BR2_PACKAGE_XEN\n\tbool \"xen\"\n\t# needs \"dmb\" on ARM, so ARM >= v7\n\tdepends on BR2_ARM_CPU_ARMV7A || BR2_aarch64\n\tselect BR2_PACKAGE_XEN_HYPERVISOR if !BR2_PACKAGE_XEN_TOOLS\n\thelp\n\t  This package builds the Xen hypervisor and toolstack.\n\n\t  http://www.xenproject.org/\n\nif BR2_PACKAGE_XEN\n\nconfig BR2_PACKAGE_XEN_HYPERVISOR\n\tbool \"Xen hypervisor\"\n\thelp\n\t  The Xen binaries are avaliable in /usr/lib/xen/ See\n\t  http://wiki.xenproject.org/wiki/Getting_Started for using\n\t  the Xen hypervisor.\n\nconfig BR2_PACKAGE_XEN_TOOLS\n\tbool \"Xen tools\"\n\tdepends on !BR2_STATIC_LIBS # dtc (libfdt)\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libglib2\n\tdepends on BR2_USE_WCHAR # libglib2\n\tselect BR2_PACKAGE_DTC\n\tselect BR2_PACKAGE_LIBAIO\n\tselect BR2_PACKAGE_LIBGLIB2\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_PIXMAN\n\tselect BR2_PACKAGE_SLIRP\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_YAJL\n\tselect BR2_PACKAGE_ARGP_STANDALONE if !BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  The Xen tools can be accessed by the xl command.\n\ncomment \"xen tools need a toolchain w/ wchar, threads, dynamic library\"\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\tBR2_STATIC_LIBS\n\nendif\n"
  },
  {
    "path": "package/xen/xen.hash",
    "content": "# Locally computed\nsha256  a3dad76a772393a1875e8f44a6059a95fea4bde40f97b800966969ac6f3a498d  xen-4.14.3.tar.gz\nsha256  ecca9538e9d3f7e3c2bff827502f4495e2ef9e22c451298696ea08886b176c2c  COPYING\n"
  },
  {
    "path": "package/xen/xen.mk",
    "content": "################################################################################\n#\n# Xen\n#\n################################################################################\n\nXEN_VERSION = 4.14.3\nXEN_SITE = https://downloads.xenproject.org/release/xen/$(XEN_VERSION)\nXEN_LICENSE = GPL-2.0\nXEN_LICENSE_FILES = COPYING\nXEN_CPE_ID_VENDOR = xen\nXEN_CPE_ID_PREFIX = cpe:2.3:o\nXEN_DEPENDENCIES = host-acpica host-python3\n\n# Calculate XEN_ARCH\nifeq ($(ARCH),aarch64)\nXEN_ARCH = arm64\nelse ifeq ($(ARCH),arm)\nXEN_ARCH = arm32\nendif\n\nXEN_CONF_OPTS = \\\n\t--disable-golang \\\n\t--disable-ocamltools \\\n\t--with-initddir=/etc/init.d\n\nXEN_CONF_ENV = PYTHON=$(HOST_DIR)/bin/python3\nXEN_MAKE_ENV = \\\n\tXEN_TARGET_ARCH=$(XEN_ARCH) \\\n\tCROSS_COMPILE=$(TARGET_CROSS) \\\n\tHOST_EXTRACFLAGS=\"-Wno-error\" \\\n\tXEN_HAS_CHECKPOLICY=n \\\n\t$(TARGET_CONFIGURE_OPTS)\n\nifeq ($(BR2_PACKAGE_XEN_HYPERVISOR),y)\nXEN_MAKE_OPTS += dist-xen\nXEN_INSTALL_IMAGES = YES\ndefine XEN_INSTALL_IMAGES_CMDS\n\tcp $(@D)/xen/xen $(BINARIES_DIR)\nendef\nelse\nXEN_CONF_OPTS += --disable-xen\nendif\n\nifeq ($(BR2_PACKAGE_XEN_TOOLS),y)\nXEN_DEPENDENCIES += \\\n\tdtc libaio libglib2 ncurses openssl pixman slirp util-linux yajl\nifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y)\nXEN_DEPENDENCIES += argp-standalone\nendif\nXEN_INSTALL_TARGET_OPTS += DESTDIR=$(TARGET_DIR) install-tools\nXEN_MAKE_OPTS += dist-tools\nXEN_CONF_OPTS += --with-extra-qemuu-configure-args=\"--disable-sdl --disable-opengl\"\n\ndefine XEN_INSTALL_INIT_SYSV\n\tmv $(TARGET_DIR)/etc/init.d/xencommons $(TARGET_DIR)/etc/init.d/S50xencommons\n\tmv $(TARGET_DIR)/etc/init.d/xen-watchdog $(TARGET_DIR)/etc/init.d/S50xen-watchdog\n\tmv $(TARGET_DIR)/etc/init.d/xendomains $(TARGET_DIR)/etc/init.d/S60xendomains\nendef\nelse\nXEN_INSTALL_TARGET = NO\nXEN_CONF_OPTS += --disable-tools\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/xenomai/3.0.10/0001-lib-boilerplate-iniparser-Allow-building-with-GCC-10-2-2020101.patch",
    "content": "From 8acdbd718b7828b5d8903a6254b2fa198b866491 Mon Sep 17 00:00:00 2001\nFrom: Florian Bezdeka <florian.bezdeka@siemens.com>\nDate: Thu, 12 Nov 2020 11:45:28 +0000\nSubject: [PATCH] lib/boilerplate/iniparser: Allow building with GCC 10.2\n 2020101\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nUpdating to upstream revision f858275f7f307eecba84c2f5429483f9f28007f8.\nUpstream repository is located at [1].\n\nThe reason for updating was the following compiler error when trying\nto compile with GCC 10.2 10.2.1 20201016. As it turned out the problem\nwas already addressed upstream:\n\niniparser/iniparser.c: In function ‘iniparser_load’:\niniparser/iniparser.c:616:13: error: ‘sprintf’ arguments 3, 4 may\noverlap destination object ‘buf’ [-Werror=restrict]\n   616 |             sprintf(tmp, \"%s:%s\", section, key);\n       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nI reviewed especially the API changes. Most of them are cleanups only\nbut two things should be pointed out:\n\n  - The type of the size field of struct _dictionary_ changed from int\n    to ssize_t. The only user of this struct is\n    lib/analogy/calibration.c which uses this structure for internal\n    things only. It is never exposed to any public API so updating is\n    OK and fully backward compatible.\n\n  - dictionary_new changed its signature\n      from dictionary_new(int size)\n      to   dictionary_new(size_t size).\n    This function is not part of any public API. So updating does not\n    break backward compatibility.\n\n[1] https://github.com/ndevilla/iniparser\n\nSigned-off-by: Florian Bezdeka <florian.bezdeka@siemens.com>\nSigned-off-by: Jan Kiszka <jan.kiszka@siemens.com>\n\n[Retrieved from:\nhttps://gitlab.denx.de/Xenomai/xenomai/-/commit/8acdbd718b7828b5d8903a6254b2fa198b866491]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n lib/boilerplate/iniparser/dictionary.c | 409 ++++++++++----------\n lib/boilerplate/iniparser/dictionary.h |  43 ++-\n lib/boilerplate/iniparser/iniparser.c  | 491 +++++++++++++++++--------\n lib/boilerplate/iniparser/iniparser.h  | 131 +++++--\n 4 files changed, 646 insertions(+), 428 deletions(-)\n\ndiff --git a/lib/boilerplate/iniparser/dictionary.c b/lib/boilerplate/iniparser/dictionary.c\nindex 5299b77ed..cb7ccd49e 100644\n--- a/lib/boilerplate/iniparser/dictionary.c\n+++ b/lib/boilerplate/iniparser/dictionary.c\n@@ -1,10 +1,8 @@\n /*-------------------------------------------------------------------------*/\n /**\n-   @file\tdictionary.c\n-   @author\tN. Devillard\n-   @date\tSep 2007\n-   @version\t$Revision: 1.27 $\n-   @brief\tImplements a dictionary for string variables.\n+   @file    dictionary.c\n+   @author  N. Devillard\n+   @brief   Implements a dictionary for string variables.\n \n    This module implements a simple dictionary object, i.e. a list\n    of string/string associations. This object is useful to store e.g.\n@@ -12,12 +10,8 @@\n */\n /*--------------------------------------------------------------------------*/\n \n-/*\n-\t$Id: dictionary.c,v 1.27 2007-11-23 21:39:18 ndevilla Exp $\n-\t$Revision: 1.27 $\n-*/\n /*---------------------------------------------------------------------------\n-   \t\t\t\t\t\t\t\tIncludes\n+                                Includes\n  ---------------------------------------------------------------------------*/\n #include \"dictionary.h\"\n \n@@ -27,33 +21,18 @@\n #include <unistd.h>\n \n /** Maximum value size for integers and doubles. */\n-#define MAXVALSZ\t1024\n+#define MAXVALSZ    1024\n \n /** Minimal allocated number of entries in a dictionary */\n-#define DICTMINSZ\t128\n+#define DICTMINSZ   128\n \n /** Invalid key token */\n #define DICT_INVALID_KEY    ((char*)-1)\n \n /*---------------------------------------------------------------------------\n-  \t\t\t\t\t\t\tPrivate functions\n+                            Private functions\n  ---------------------------------------------------------------------------*/\n \n-/* Doubles the allocated size associated to a pointer */\n-/* 'size' is the current allocated size. */\n-static void * mem_double(void * ptr, int size)\n-{\n-    void * newptr ;\n- \n-    newptr = calloc(2*size, 1);\n-    if (newptr==NULL) {\n-        return NULL ;\n-    }\n-    memcpy(newptr, ptr, size);\n-    free(ptr);\n-    return newptr ;\n-}\n-\n /*-------------------------------------------------------------------------*/\n /**\n   @brief    Duplicate a string\n@@ -67,23 +46,68 @@ static void * mem_double(void * ptr, int size)\n static char * xstrdup(const char * s)\n {\n     char * t ;\n+    size_t len ;\n     if (!s)\n         return NULL ;\n-    t = malloc(strlen(s)+1) ;\n+\n+    len = strlen(s) + 1 ;\n+    t = (char*) malloc(len) ;\n     if (t) {\n-        strcpy(t,s);\n+        memcpy(t, s, len) ;\n     }\n     return t ;\n }\n \n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Double the size of the dictionary\n+  @param    d Dictionary to grow\n+  @return   This function returns non-zero in case of failure\n+ */\n+/*--------------------------------------------------------------------------*/\n+static int dictionary_grow(dictionary * d)\n+{\n+    char        ** new_val ;\n+    char        ** new_key ;\n+    unsigned     * new_hash ;\n+\n+    new_val  = (char**) calloc(d->size * 2, sizeof *d->val);\n+    new_key  = (char**) calloc(d->size * 2, sizeof *d->key);\n+    new_hash = (unsigned*) calloc(d->size * 2, sizeof *d->hash);\n+    if (!new_val || !new_key || !new_hash) {\n+        /* An allocation failed, leave the dictionary unchanged */\n+        if (new_val)\n+            free(new_val);\n+        if (new_key)\n+            free(new_key);\n+        if (new_hash)\n+            free(new_hash);\n+        return -1 ;\n+    }\n+    /* Initialize the newly allocated space */\n+    memcpy(new_val, d->val, d->size * sizeof(char *));\n+    memcpy(new_key, d->key, d->size * sizeof(char *));\n+    memcpy(new_hash, d->hash, d->size * sizeof(unsigned));\n+    /* Delete previous data */\n+    free(d->val);\n+    free(d->key);\n+    free(d->hash);\n+    /* Actually update the dictionary */\n+    d->size *= 2 ;\n+    d->val = new_val;\n+    d->key = new_key;\n+    d->hash = new_hash;\n+    return 0 ;\n+}\n+\n /*---------------------------------------------------------------------------\n-  \t\t\t\t\t\t\tFunction codes\n+                            Function codes\n  ---------------------------------------------------------------------------*/\n /*-------------------------------------------------------------------------*/\n /**\n-  @brief\tCompute the hash key for a string.\n-  @param\tkey\t\tCharacter string to use for key.\n-  @return\t1 unsigned int on at least 32 bits.\n+  @brief    Compute the hash key for a string.\n+  @param    key     Character string to use for key.\n+  @return   1 unsigned int on at least 32 bits.\n \n   This hash function has been taken from an Article in Dr Dobbs Journal.\n   This is normally a collision-free function, distributing keys evenly.\n@@ -93,84 +117,88 @@ static char * xstrdup(const char * s)\n /*--------------------------------------------------------------------------*/\n unsigned dictionary_hash(const char * key)\n {\n-\tint\t\t\tlen ;\n-\tunsigned\thash ;\n-\tint\t\t\ti ;\n-\n-\tlen = strlen(key);\n-\tfor (hash=0, i=0 ; i<len ; i++) {\n-\t\thash += (unsigned)key[i] ;\n-\t\thash += (hash<<10);\n-\t\thash ^= (hash>>6) ;\n-\t}\n-\thash += (hash <<3);\n-\thash ^= (hash >>11);\n-\thash += (hash <<15);\n-\treturn hash ;\n+    size_t      len ;\n+    unsigned    hash ;\n+    size_t      i ;\n+\n+    if (!key)\n+        return 0 ;\n+\n+    len = strlen(key);\n+    for (hash=0, i=0 ; i<len ; i++) {\n+        hash += (unsigned)key[i] ;\n+        hash += (hash<<10);\n+        hash ^= (hash>>6) ;\n+    }\n+    hash += (hash <<3);\n+    hash ^= (hash >>11);\n+    hash += (hash <<15);\n+    return hash ;\n }\n \n /*-------------------------------------------------------------------------*/\n /**\n-  @brief\tCreate a new dictionary object.\n-  @param\tsize\tOptional initial size of the dictionary.\n-  @return\t1 newly allocated dictionary objet.\n+  @brief    Create a new dictionary object.\n+  @param    size    Optional initial size of the dictionary.\n+  @return   1 newly allocated dictionary objet.\n \n   This function allocates a new dictionary object of given size and returns\n   it. If you do not know in advance (roughly) the number of entries in the\n   dictionary, give size=0.\n  */\n-/*--------------------------------------------------------------------------*/\n-dictionary * dictionary_new(int size)\n+/*-------------------------------------------------------------------------*/\n+dictionary * dictionary_new(size_t size)\n {\n-\tdictionary\t*\td ;\n-\n-\t/* If no size was specified, allocate space for DICTMINSZ */\n-\tif (size<DICTMINSZ) size=DICTMINSZ ;\n-\n-\tif (!(d = (dictionary *)calloc(1, sizeof(dictionary)))) {\n-\t\treturn NULL;\n-\t}\n-\td->size = size ;\n-\td->val  = (char **)calloc(size, sizeof(char*));\n-\td->key  = (char **)calloc(size, sizeof(char*));\n-\td->hash = (unsigned int *)calloc(size, sizeof(unsigned));\n-\treturn d ;\n+    dictionary  *   d ;\n+\n+    /* If no size was specified, allocate space for DICTMINSZ */\n+    if (size<DICTMINSZ) size=DICTMINSZ ;\n+\n+    d = (dictionary*) calloc(1, sizeof *d) ;\n+\n+    if (d) {\n+        d->size = size ;\n+        d->val  = (char**) calloc(size, sizeof *d->val);\n+        d->key  = (char**) calloc(size, sizeof *d->key);\n+        d->hash = (unsigned*) calloc(size, sizeof *d->hash);\n+    }\n+    return d ;\n }\n \n /*-------------------------------------------------------------------------*/\n /**\n-  @brief\tDelete a dictionary object\n-  @param\td\tdictionary object to deallocate.\n-  @return\tvoid\n+  @brief    Delete a dictionary object\n+  @param    d   dictionary object to deallocate.\n+  @return   void\n \n   Deallocate a dictionary object and all memory associated to it.\n  */\n /*--------------------------------------------------------------------------*/\n void dictionary_del(dictionary * d)\n {\n-\tint\t\ti ;\n-\n-\tif (d==NULL) return ;\n-\tfor (i=0 ; i<d->size ; i++) {\n-\t\tif (d->key[i]!=NULL)\n-\t\t\tfree(d->key[i]);\n-\t\tif (d->val[i]!=NULL)\n-\t\t\tfree(d->val[i]);\n-\t}\n-\tfree(d->val);\n-\tfree(d->key);\n-\tfree(d->hash);\n-\tfree(d);\n-\treturn ;\n+    ssize_t  i ;\n+\n+    if (d==NULL) return ;\n+    for (i=0 ; i<d->size ; i++) {\n+        if (d->key[i]!=NULL)\n+            free(d->key[i]);\n+        if (d->val[i]!=NULL)\n+            free(d->val[i]);\n+    }\n+    free(d->val);\n+    free(d->key);\n+    free(d->hash);\n+    free(d);\n+    return ;\n }\n \n /*-------------------------------------------------------------------------*/\n /**\n-  @brief\tGet a value from a dictionary.\n-  @param\td\t\tdictionary object to search.\n-  @param\tkey\t\tKey to look for in the dictionary.\n+  @brief    Get a value from a dictionary.\n+  @param    d       dictionary object to search.\n+  @param    key     Key to look for in the dictionary.\n   @param    def     Default value to return if key not found.\n-  @return\t1 pointer to internally allocated character string.\n+  @return   1 pointer to internally allocated character string.\n \n   This function locates a key in a dictionary and returns a pointer to its\n   value, or the passed 'def' pointer if no such key can be found in\n@@ -178,24 +206,24 @@ void dictionary_del(dictionary * d)\n   dictionary object, you should not try to free it or modify it.\n  */\n /*--------------------------------------------------------------------------*/\n-const char * dictionary_get(dictionary * d, const char * key, const char * def)\n+const char * dictionary_get(const dictionary * d, const char * key, const char * def)\n {\n-\tunsigned\thash ;\n-\tint\t\t\ti ;\n+    unsigned    hash ;\n+    ssize_t      i ;\n \n-\thash = dictionary_hash(key);\n-\tfor (i=0 ; i<d->size ; i++) {\n+    hash = dictionary_hash(key);\n+    for (i=0 ; i<d->size ; i++) {\n         if (d->key[i]==NULL)\n             continue ;\n         /* Compare hash */\n-\t\tif (hash==d->hash[i]) {\n+        if (hash==d->hash[i]) {\n             /* Compare string, to avoid hash collisions */\n             if (!strcmp(key, d->key[i])) {\n-\t\t\t\treturn d->val[i] ;\n-\t\t\t}\n-\t\t}\n-\t}\n-\treturn def ;\n+                return d->val[i] ;\n+            }\n+        }\n+    }\n+    return def ;\n }\n \n /*-------------------------------------------------------------------------*/\n@@ -226,66 +254,57 @@ const char * dictionary_get(dictionary * d, const char * key, const char * def)\n /*--------------------------------------------------------------------------*/\n int dictionary_set(dictionary * d, const char * key, const char * val)\n {\n-\tint\t\t\ti ;\n-\tunsigned\thash ;\n-\n-\tif (d==NULL || key==NULL) return -1 ;\n-\t\n-\t/* Compute hash for this key */\n-\thash = dictionary_hash(key) ;\n-\t/* Find if value is already in dictionary */\n-\tif (d->n>0) {\n-\t\tfor (i=0 ; i<d->size ; i++) {\n+    ssize_t         i ;\n+    unsigned       hash ;\n+\n+    if (d==NULL || key==NULL) return -1 ;\n+\n+    /* Compute hash for this key */\n+    hash = dictionary_hash(key) ;\n+    /* Find if value is already in dictionary */\n+    if (d->n>0) {\n+        for (i=0 ; i<d->size ; i++) {\n             if (d->key[i]==NULL)\n                 continue ;\n-\t\t\tif (hash==d->hash[i]) { /* Same hash value */\n-\t\t\t\tif (!strcmp(key, d->key[i])) {\t /* Same key */\n-\t\t\t\t\t/* Found a value: modify and return */\n-\t\t\t\t\tif (d->val[i]!=NULL)\n-\t\t\t\t\t\tfree(d->val[i]);\n-                    d->val[i] = val ? xstrdup(val) : NULL ;\n+            if (hash==d->hash[i]) { /* Same hash value */\n+                if (!strcmp(key, d->key[i])) {   /* Same key */\n+                    /* Found a value: modify and return */\n+                    if (d->val[i]!=NULL)\n+                        free(d->val[i]);\n+                    d->val[i] = (val ? xstrdup(val) : NULL);\n                     /* Value has been modified: return */\n-\t\t\t\t\treturn 0 ;\n-\t\t\t\t}\n-\t\t\t}\n-\t\t}\n-\t}\n-\t/* Add a new value */\n-\t/* See if dictionary needs to grow */\n-\tif (d->n==d->size) {\n-\n-\t\t/* Reached maximum size: reallocate dictionary */\n-\t\td->val  = (char **)mem_double(d->val,  d->size * sizeof(char*)) ;\n-\t\td->key  = (char **)mem_double(d->key,  d->size * sizeof(char*)) ;\n-\t\td->hash = (unsigned int *)mem_double(d->hash, d->size * sizeof(unsigned)) ;\n-        if ((d->val==NULL) || (d->key==NULL) || (d->hash==NULL)) {\n-            /* Cannot grow dictionary */\n-            return -1 ;\n+                    return 0 ;\n+                }\n+            }\n         }\n-\t\t/* Double size */\n-\t\td->size *= 2 ;\n-\t}\n+    }\n+    /* Add a new value */\n+    /* See if dictionary needs to grow */\n+    if (d->n==d->size) {\n+        /* Reached maximum size: reallocate dictionary */\n+        if (dictionary_grow(d) != 0)\n+            return -1;\n+    }\n \n-    /* Insert key in the first empty slot */\n-    for (i=0 ; i<d->size ; i++) {\n-        if (d->key[i]==NULL) {\n-            /* Add key here */\n-            break ;\n-        }\n+    /* Insert key in the first empty slot. Start at d->n and wrap at\n+       d->size. Because d->n < d->size this will necessarily\n+       terminate. */\n+    for (i=d->n ; d->key[i] ; ) {\n+        if(++i == d->size) i = 0;\n     }\n-\t/* Copy key */\n-\td->key[i]  = xstrdup(key);\n-    d->val[i]  = val ? xstrdup(val) : NULL ;\n-\td->hash[i] = hash;\n-\td->n ++ ;\n-\treturn 0 ;\n+    /* Copy key */\n+    d->key[i]  = xstrdup(key);\n+    d->val[i]  = (val ? xstrdup(val) : NULL) ;\n+    d->hash[i] = hash;\n+    d->n ++ ;\n+    return 0 ;\n }\n \n /*-------------------------------------------------------------------------*/\n /**\n-  @brief\tDelete a key in a dictionary\n-  @param\td\t\tdictionary object to modify.\n-  @param\tkey\t\tKey to remove.\n+  @brief    Delete a key in a dictionary\n+  @param    d       dictionary object to modify.\n+  @param    key     Key to remove.\n   @return   void\n \n   This function deletes a key in a dictionary. Nothing is done if the\n@@ -294,26 +313,26 @@ int dictionary_set(dictionary * d, const char * key, const char * val)\n /*--------------------------------------------------------------------------*/\n void dictionary_unset(dictionary * d, const char * key)\n {\n-\tunsigned\thash ;\n-\tint\t\t\ti ;\n+    unsigned    hash ;\n+    ssize_t      i ;\n \n-\tif (key == NULL) {\n-\t\treturn;\n-\t}\n+    if (key == NULL || d == NULL) {\n+        return;\n+    }\n \n-\thash = dictionary_hash(key);\n-\tfor (i=0 ; i<d->size ; i++) {\n+    hash = dictionary_hash(key);\n+    for (i=0 ; i<d->size ; i++) {\n         if (d->key[i]==NULL)\n             continue ;\n         /* Compare hash */\n-\t\tif (hash==d->hash[i]) {\n+        if (hash==d->hash[i]) {\n             /* Compare string, to avoid hash collisions */\n             if (!strcmp(key, d->key[i])) {\n                 /* Found key */\n                 break ;\n-\t\t\t}\n-\t\t}\n-\t}\n+            }\n+        }\n+    }\n     if (i>=d->size)\n         /* Key not found */\n         return ;\n@@ -331,75 +350,31 @@ void dictionary_unset(dictionary * d, const char * key)\n \n /*-------------------------------------------------------------------------*/\n /**\n-  @brief\tDump a dictionary to an opened file pointer.\n-  @param\td\tDictionary to dump\n-  @param\tout\tOpened file pointer.\n-  @return\tvoid\n+  @brief    Dump a dictionary to an opened file pointer.\n+  @param    d   Dictionary to dump\n+  @param    f   Opened file pointer.\n+  @return   void\n \n   Dumps a dictionary onto an opened file pointer. Key pairs are printed out\n   as @c [Key]=[Value], one per line. It is Ok to provide stdout or stderr as\n   output file pointers.\n  */\n /*--------------------------------------------------------------------------*/\n-void dictionary_dump(dictionary * d, FILE * out)\n+void dictionary_dump(const dictionary * d, FILE * out)\n {\n-\tint\t\ti ;\n-\n-\tif (d==NULL || out==NULL) return ;\n-\tif (d->n<1) {\n-\t\tfprintf(out, \"empty dictionary\\n\");\n-\t\treturn ;\n-\t}\n-\tfor (i=0 ; i<d->size ; i++) {\n+    ssize_t  i ;\n+\n+    if (d==NULL || out==NULL) return ;\n+    if (d->n<1) {\n+        fprintf(out, \"empty dictionary\\n\");\n+        return ;\n+    }\n+    for (i=0 ; i<d->size ; i++) {\n         if (d->key[i]) {\n             fprintf(out, \"%20s\\t[%s]\\n\",\n                     d->key[i],\n                     d->val[i] ? d->val[i] : \"UNDEF\");\n         }\n-\t}\n-\treturn ;\n-}\n-\n-\n-/* Test code */\n-#ifdef TESTDIC\n-#define NVALS 20000\n-int main(int argc, char *argv[])\n-{\n-\tdictionary\t*\td ;\n-\tchar\t*\tval ;\n-\tint\t\t\ti ;\n-\tchar\t\tcval[90] ;\n-\n-\t/* Allocate dictionary */\n-\tprintf(\"allocating...\\n\");\n-\td = dictionary_new(0);\n-\t\n-\t/* Set values in dictionary */\n-\tprintf(\"setting %d values...\\n\", NVALS);\n-\tfor (i=0 ; i<NVALS ; i++) {\n-\t\tsprintf(cval, \"%04d\", i);\n-\t\tdictionary_set(d, cval, \"salut\");\n-\t}\n-\tprintf(\"getting %d values...\\n\", NVALS);\n-\tfor (i=0 ; i<NVALS ; i++) {\n-\t\tsprintf(cval, \"%04d\", i);\n-\t\tval = dictionary_get(d, cval, DICT_INVALID_KEY);\n-\t\tif (val==DICT_INVALID_KEY) {\n-\t\t\tprintf(\"cannot get value for key [%s]\\n\", cval);\n-\t\t}\n-\t}\n-    printf(\"unsetting %d values...\\n\", NVALS);\n-\tfor (i=0 ; i<NVALS ; i++) {\n-\t\tsprintf(cval, \"%04d\", i);\n-\t\tdictionary_unset(d, cval);\n-\t}\n-    if (d->n != 0) {\n-        printf(\"error deleting values\\n\");\n     }\n-\tprintf(\"deallocating...\\n\");\n-\tdictionary_del(d);\n-\treturn 0 ;\n+    return ;\n }\n-#endif\n-/* vim: set ts=4 et sw=4 tw=75 */\ndiff --git a/lib/boilerplate/iniparser/dictionary.h b/lib/boilerplate/iniparser/dictionary.h\nindex fa4dcb727..d04b6ce71 100644\n--- a/lib/boilerplate/iniparser/dictionary.h\n+++ b/lib/boilerplate/iniparser/dictionary.h\n@@ -3,8 +3,6 @@\n /**\n    @file    dictionary.h\n    @author  N. Devillard\n-   @date    Sep 2007\n-   @version $Revision: 1.12 $\n    @brief   Implements a dictionary for string variables.\n \n    This module implements a simple dictionary object, i.e. a list\n@@ -13,18 +11,11 @@\n */\n /*--------------------------------------------------------------------------*/\n \n-/*\n-\t$Id: dictionary.h,v 1.12 2007-11-23 21:37:00 ndevilla Exp $\n-\t$Author: ndevilla $\n-\t$Date: 2007-11-23 21:37:00 $\n-\t$Revision: 1.12 $\n-*/\n-\n #ifndef _DICTIONARY_H_\n #define _DICTIONARY_H_\n \n /*---------------------------------------------------------------------------\n-   \t\t\t\t\t\t\t\tIncludes\n+                                Includes\n  ---------------------------------------------------------------------------*/\n \n #include <stdio.h>\n@@ -32,14 +23,18 @@\n #include <string.h>\n #include <unistd.h>\n \n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n /*---------------------------------------------------------------------------\n-   \t\t\t\t\t\t\t\tNew types\n+                                New types\n  ---------------------------------------------------------------------------*/\n \n \n /*-------------------------------------------------------------------------*/\n /**\n-  @brief\tDictionary object\n+  @brief    Dictionary object\n \n   This object contains a list of string/string associations. Each\n   association is identified by a unique string key. Looking up values\n@@ -48,16 +43,16 @@\n  */\n /*-------------------------------------------------------------------------*/\n typedef struct _dictionary_ {\n-\tint\t\t\t\tn ;\t\t/** Number of entries in dictionary */\n-\tint\t\t\t\tsize ;\t/** Storage size */\n-\tchar \t\t**\tval ;\t/** List of string values */\n-\tchar \t\t**  key ;\t/** List of string keys */\n-\tunsigned\t *\thash ;\t/** List of hash values for keys */\n+    int             n ;     /** Number of entries in dictionary */\n+    ssize_t         size ;  /** Storage size */\n+    char        **  val ;   /** List of string values */\n+    char        **  key ;   /** List of string keys */\n+    unsigned     *  hash ;  /** List of hash values for keys */\n } dictionary ;\n \n \n /*---------------------------------------------------------------------------\n-  \t\t\t\t\t\t\tFunction prototypes\n+                            Function prototypes\n  ---------------------------------------------------------------------------*/\n \n /*-------------------------------------------------------------------------*/\n@@ -85,7 +80,7 @@ unsigned dictionary_hash(const char * key);\n   dictionary, give size=0.\n  */\n /*--------------------------------------------------------------------------*/\n-dictionary * dictionary_new(int size);\n+dictionary * dictionary_new(size_t size);\n \n /*-------------------------------------------------------------------------*/\n /**\n@@ -112,7 +107,7 @@ void dictionary_del(dictionary * vd);\n   dictionary object, you should not try to free it or modify it.\n  */\n /*--------------------------------------------------------------------------*/\n-const char * dictionary_get(dictionary * d, const char * key, const char * def);\n+const char * dictionary_get(const dictionary * d, const char * key, const char * def);\n \n \n /*-------------------------------------------------------------------------*/\n@@ -161,7 +156,7 @@ void dictionary_unset(dictionary * d, const char * key);\n /**\n   @brief    Dump a dictionary to an opened file pointer.\n   @param    d   Dictionary to dump\n-  @param    out   Opened file pointer.\n+  @param    f   Opened file pointer.\n   @return   void\n \n   Dumps a dictionary onto an opened file pointer. Key pairs are printed out\n@@ -169,6 +164,10 @@ void dictionary_unset(dictionary * d, const char * key);\n   output file pointers.\n  */\n /*--------------------------------------------------------------------------*/\n-void dictionary_dump(dictionary * d, FILE * out);\n+void dictionary_dump(const dictionary * d, FILE * out);\n+\n+#ifdef __cplusplus\n+}\n+#endif\n \n #endif\ndiff --git a/lib/boilerplate/iniparser/iniparser.c b/lib/boilerplate/iniparser/iniparser.c\nindex 5b2094a00..f1d165896 100644\n--- a/lib/boilerplate/iniparser/iniparser.c\n+++ b/lib/boilerplate/iniparser/iniparser.c\n@@ -3,19 +3,12 @@\n /**\n    @file    iniparser.c\n    @author  N. Devillard\n-   @date    Sep 2007\n-   @version 3.0\n    @brief   Parser for ini files.\n */\n /*--------------------------------------------------------------------------*/\n-/*\n-    $Id: iniparser.c,v 2.18 2008-01-03 18:35:39 ndevilla Exp $\n-    $Revision: 2.18 $\n-    $Date: 2008-01-03 18:35:39 $\n-*/\n /*---------------------------- Includes ------------------------------------*/\n #include <ctype.h>\n-#include <errno.h>\n+#include <stdarg.h>\n #include \"iniparser.h\"\n \n /*---------------------------- Defines -------------------------------------*/\n@@ -39,65 +32,115 @@ typedef enum _line_status_ {\n \n /*-------------------------------------------------------------------------*/\n /**\n-  @brief\tConvert a string to lowercase.\n-  @param\ts\tString to convert.\n-  @return\tptr to statically allocated string.\n-\n-  This function returns a pointer to a statically allocated string\n-  containing a lowercased version of the input string. Do not free\n-  or modify the returned string! Since the returned string is statically\n-  allocated, it will be modified at each function call (not re-entrant).\n+  @brief    Convert a string to lowercase.\n+  @param    in   String to convert.\n+  @param    out Output buffer.\n+  @param    len Size of the out buffer.\n+  @return   ptr to the out buffer or NULL if an error occured.\n+\n+  This function convert a string into lowercase.\n+  At most len - 1 elements of the input string will be converted.\n  */\n /*--------------------------------------------------------------------------*/\n-\n-static char strbuf[ASCIILINESZ+1];\n-\n-static char * strlwc(const char * s)\n+static const char * strlwc(const char * in, char *out, unsigned len)\n {\n-    int i ;\n+    unsigned i ;\n \n-    if (s==NULL) return NULL ;\n-    memset(strbuf, 0, ASCIILINESZ+1);\n+    if (in==NULL || out == NULL || len==0) return NULL ;\n     i=0 ;\n-    while (s[i] && i<ASCIILINESZ) {\n-        strbuf[i] = (char)tolower((int)s[i]);\n+    while (in[i] != '\\0' && i < len-1) {\n+        out[i] = (char)tolower((int)in[i]);\n         i++ ;\n     }\n-    strbuf[ASCIILINESZ]=(char)0;\n-    return strbuf ;\n+    out[i] = '\\0';\n+    return out ;\n+}\n+\n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Duplicate a string\n+  @param    s String to duplicate\n+  @return   Pointer to a newly allocated string, to be freed with free()\n+\n+  This is a replacement for strdup(). This implementation is provided\n+  for systems that do not have it.\n+ */\n+/*--------------------------------------------------------------------------*/\n+static char * xstrdup(const char * s)\n+{\n+    char * t ;\n+    size_t len ;\n+    if (!s)\n+        return NULL ;\n+\n+    len = strlen(s) + 1 ;\n+    t = (char*) malloc(len) ;\n+    if (t) {\n+        memcpy(t, s, len) ;\n+    }\n+    return t ;\n+}\n+\n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Remove blanks at the beginning and the end of a string.\n+  @param    str  String to parse and alter.\n+  @return   unsigned New size of the string.\n+ */\n+/*--------------------------------------------------------------------------*/\n+static unsigned strstrip(char * s)\n+{\n+    char *last = NULL ;\n+    char *dest = s;\n+\n+    if (s==NULL) return 0;\n+\n+    last = s + strlen(s);\n+    while (isspace((int)*s) && *s) s++;\n+    while (last > s) {\n+        if (!isspace((int)*(last-1)))\n+            break ;\n+        last -- ;\n+    }\n+    *last = (char)0;\n+\n+    memmove(dest,s,last - s + 1);\n+    return last - s;\n+}\n+\n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Default error callback for iniparser: wraps `fprintf(stderr, ...)`.\n+ */\n+/*--------------------------------------------------------------------------*/\n+static int default_error_callback(const char *format, ...)\n+{\n+  int ret;\n+  va_list argptr;\n+  va_start(argptr, format);\n+  ret = vfprintf(stderr, format, argptr);\n+  va_end(argptr);\n+  return ret;\n }\n \n+static int (*iniparser_error_callback)(const char*, ...) = default_error_callback;\n+\n /*-------------------------------------------------------------------------*/\n /**\n-  @brief\tRemove blanks at the beginning and the end of a string.\n-  @param\ts\tString to parse.\n-  @return\tptr to statically allocated string.\n-\n-  This function returns a pointer to a statically allocated string,\n-  which is identical to the input string, except that all blank\n-  characters at the end and the beg. of the string have been removed.\n-  Do not free or modify the returned string! Since the returned string\n-  is statically allocated, it will be modified at each function call\n-  (not re-entrant).\n+  @brief    Configure a function to receive the error messages.\n+  @param    errback  Function to call.\n+\n+  By default, the error will be printed on stderr. If a null pointer is passed\n+  as errback the error callback will be switched back to default.\n  */\n /*--------------------------------------------------------------------------*/\n-static char * strstrip(const char * s)\n+void iniparser_set_error_callback(int (*errback)(const char *, ...))\n {\n-\tchar * last ;\n-\t\n-    if (s==NULL) return NULL ;\n-    \n-\twhile (isspace((int)*s) && *s) s++;\n-\tmemset(strbuf, 0, ASCIILINESZ+1);\n-\tstrcpy(strbuf, s);\n-\tlast = strbuf + strlen(strbuf);\n-\twhile (last > strbuf) {\n-\t\tif (!isspace((int)*(last-1)))\n-\t\t\tbreak ;\n-\t\tlast -- ;\n-\t}\n-\t*last = (char)0;\n-\treturn (char*)strbuf ;\n+  if (errback) {\n+    iniparser_error_callback = errback;\n+  } else {\n+    iniparser_error_callback = default_error_callback;\n+  }\n }\n \n /*-------------------------------------------------------------------------*/\n@@ -118,7 +161,7 @@ static char * strstrip(const char * s)\n   This function returns -1 in case of error.\n  */\n /*--------------------------------------------------------------------------*/\n-int iniparser_getnsec(dictionary * d)\n+int iniparser_getnsec(const dictionary * d)\n {\n     int i ;\n     int nsec ;\n@@ -149,7 +192,7 @@ int iniparser_getnsec(dictionary * d)\n   This function returns NULL in case of error.\n  */\n /*--------------------------------------------------------------------------*/\n-const char * iniparser_getsecname(dictionary * d, int n)\n+const char * iniparser_getsecname(const dictionary * d, int n)\n {\n     int i ;\n     int foundsec ;\n@@ -184,7 +227,7 @@ const char * iniparser_getsecname(dictionary * d, int n)\n   purposes mostly.\n  */\n /*--------------------------------------------------------------------------*/\n-void iniparser_dump(dictionary * d, FILE * f)\n+void iniparser_dump(const dictionary * d, FILE * f)\n {\n     int     i ;\n \n@@ -212,13 +255,11 @@ void iniparser_dump(dictionary * d, FILE * f)\n   It is Ok to specify @c stderr or @c stdout as output files.\n  */\n /*--------------------------------------------------------------------------*/\n-void iniparser_dump_ini(dictionary * d, FILE * f)\n+void iniparser_dump_ini(const dictionary * d, FILE * f)\n {\n-    int     i, j ;\n-    char    keym[ASCIILINESZ+1];\n-    int     nsec ;\n-    const char *  secname ;\n-    int     seclen ;\n+    int          i ;\n+    int          nsec ;\n+    const char * secname ;\n \n     if (d==NULL || f==NULL) return ;\n \n@@ -234,24 +275,126 @@ void iniparser_dump_ini(dictionary * d, FILE * f)\n     }\n     for (i=0 ; i<nsec ; i++) {\n         secname = iniparser_getsecname(d, i) ;\n-        seclen  = (int)strlen(secname);\n-        fprintf(f, \"\\n[%s]\\n\", secname);\n-        sprintf(keym, \"%s:\", secname);\n-        for (j=0 ; j<d->size ; j++) {\n-            if (d->key[j]==NULL)\n-                continue ;\n-            if (!strncmp(d->key[j], keym, seclen+1)) {\n-                fprintf(f,\n-                        \"%-30s = %s\\n\",\n-                        d->key[j]+seclen+1,\n-                        d->val[j] ? d->val[j] : \"\");\n-            }\n+        iniparser_dumpsection_ini(d, secname, f);\n+    }\n+    fprintf(f, \"\\n\");\n+    return ;\n+}\n+\n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Save a dictionary section to a loadable ini file\n+  @param    d   Dictionary to dump\n+  @param    s   Section name of dictionary to dump\n+  @param    f   Opened file pointer to dump to\n+  @return   void\n+\n+  This function dumps a given section of a given dictionary into a loadable ini\n+  file.  It is Ok to specify @c stderr or @c stdout as output files.\n+ */\n+/*--------------------------------------------------------------------------*/\n+void iniparser_dumpsection_ini(const dictionary * d, const char * s, FILE * f)\n+{\n+    int     j ;\n+    char    keym[ASCIILINESZ+1];\n+    int     seclen ;\n+\n+    if (d==NULL || f==NULL) return ;\n+    if (! iniparser_find_entry(d, s)) return ;\n+\n+    seclen  = (int)strlen(s);\n+    fprintf(f, \"\\n[%s]\\n\", s);\n+    sprintf(keym, \"%s:\", s);\n+    for (j=0 ; j<d->size ; j++) {\n+        if (d->key[j]==NULL)\n+            continue ;\n+        if (!strncmp(d->key[j], keym, seclen+1)) {\n+            fprintf(f,\n+                    \"%-30s = %s\\n\",\n+                    d->key[j]+seclen+1,\n+                    d->val[j] ? d->val[j] : \"\");\n         }\n     }\n     fprintf(f, \"\\n\");\n     return ;\n }\n \n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Get the number of keys in a section of a dictionary.\n+  @param    d   Dictionary to examine\n+  @param    s   Section name of dictionary to examine\n+  @return   Number of keys in section\n+ */\n+/*--------------------------------------------------------------------------*/\n+int iniparser_getsecnkeys(const dictionary * d, const char * s)\n+{\n+    int     seclen, nkeys ;\n+    char    keym[ASCIILINESZ+1];\n+    int j ;\n+\n+    nkeys = 0;\n+\n+    if (d==NULL) return nkeys;\n+    if (! iniparser_find_entry(d, s)) return nkeys;\n+\n+    seclen  = (int)strlen(s);\n+    strlwc(s, keym, sizeof(keym));\n+    keym[seclen] = ':';\n+\n+    for (j=0 ; j<d->size ; j++) {\n+        if (d->key[j]==NULL)\n+            continue ;\n+        if (!strncmp(d->key[j], keym, seclen+1))\n+            nkeys++;\n+    }\n+\n+    return nkeys;\n+\n+}\n+\n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Get the number of keys in a section of a dictionary.\n+  @param    d    Dictionary to examine\n+  @param    s    Section name of dictionary to examine\n+  @param    keys Already allocated array to store the keys in\n+  @return   The pointer passed as `keys` argument or NULL in case of error\n+\n+  This function queries a dictionary and finds all keys in a given section.\n+  The keys argument should be an array of pointers which size has been\n+  determined by calling `iniparser_getsecnkeys` function prior to this one.\n+\n+  Each pointer in the returned char pointer-to-pointer is pointing to\n+  a string allocated in the dictionary; do not free or modify them.\n+ */\n+/*--------------------------------------------------------------------------*/\n+const char ** iniparser_getseckeys(const dictionary * d, const char * s, const char ** keys)\n+{\n+    int i, j, seclen ;\n+    char keym[ASCIILINESZ+1];\n+\n+    if (d==NULL || keys==NULL) return NULL;\n+    if (! iniparser_find_entry(d, s)) return NULL;\n+\n+    seclen  = (int)strlen(s);\n+    strlwc(s, keym, sizeof(keym));\n+    keym[seclen] = ':';\n+\n+    i = 0;\n+\n+    for (j=0 ; j<d->size ; j++) {\n+        if (d->key[j]==NULL)\n+            continue ;\n+        if (!strncmp(d->key[j], keym, seclen+1)) {\n+            keys[i] = d->key[j];\n+            i++;\n+        }\n+    }\n+\n+    return keys;\n+}\n+\n /*-------------------------------------------------------------------------*/\n /**\n   @brief    Get the string associated to a key\n@@ -267,24 +410,27 @@ void iniparser_dump_ini(dictionary * d, FILE * f)\n   the dictionary, do not free or modify it.\n  */\n /*--------------------------------------------------------------------------*/\n-const char * iniparser_getstring(dictionary * d, const char * key, const char * def)\n+const char * iniparser_getstring(const dictionary * d, const char * key, const char * def)\n {\n-    char * lc_key ;\n+    const char * lc_key ;\n+    const char * sval ;\n+    char tmp_str[ASCIILINESZ+1];\n \n     if (d==NULL || key==NULL)\n         return def ;\n \n-    lc_key = strlwc(key);\n-    return dictionary_get(d, lc_key, def);\n+    lc_key = strlwc(key, tmp_str, sizeof(tmp_str));\n+    sval = dictionary_get(d, lc_key, def);\n+    return sval ;\n }\n \n /*-------------------------------------------------------------------------*/\n /**\n-  @brief    Get the string associated to a key, convert to an int\n+  @brief    Get the string associated to a key, convert to an long int\n   @param    d Dictionary to search\n   @param    key Key string to look for\n   @param    notfound Value to return in case of error\n-  @return   integer\n+  @return   long integer\n \n   This function queries a dictionary for a key. A key as read from an\n   ini file is given as \"section:key\". If the key cannot be found,\n@@ -305,13 +451,46 @@ const char * iniparser_getstring(dictionary * d, const char * key, const char *\n   Credits: Thanks to A. Becker for suggesting strtol()\n  */\n /*--------------------------------------------------------------------------*/\n-int iniparser_getint(dictionary * d, const char * key, int notfound)\n+long int iniparser_getlongint(const dictionary * d, const char * key, long int notfound)\n {\n-    const char    *   str ;\n+    const char * str ;\n \n     str = iniparser_getstring(d, key, INI_INVALID_KEY);\n     if (str==INI_INVALID_KEY) return notfound ;\n-    return (int)strtol(str, NULL, 0);\n+    return strtol(str, NULL, 0);\n+}\n+\n+\n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Get the string associated to a key, convert to an int\n+  @param    d Dictionary to search\n+  @param    key Key string to look for\n+  @param    notfound Value to return in case of error\n+  @return   integer\n+\n+  This function queries a dictionary for a key. A key as read from an\n+  ini file is given as \"section:key\". If the key cannot be found,\n+  the notfound value is returned.\n+\n+  Supported values for integers include the usual C notation\n+  so decimal, octal (starting with 0) and hexadecimal (starting with 0x)\n+  are supported. Examples:\n+\n+  \"42\"      ->  42\n+  \"042\"     ->  34 (octal -> decimal)\n+  \"0x42\"    ->  66 (hexa  -> decimal)\n+\n+  Warning: the conversion may overflow in various ways. Conversion is\n+  totally outsourced to strtol(), see the associated man page for overflow\n+  handling.\n+\n+  Credits: Thanks to A. Becker for suggesting strtol()\n+ */\n+/*--------------------------------------------------------------------------*/\n+int iniparser_getint(const dictionary * d, const char * key, int notfound)\n+{\n+    return (int)iniparser_getlongint(d, key, notfound);\n }\n \n /*-------------------------------------------------------------------------*/\n@@ -327,9 +506,9 @@ int iniparser_getint(dictionary * d, const char * key, int notfound)\n   the notfound value is returned.\n  */\n /*--------------------------------------------------------------------------*/\n-double iniparser_getdouble(dictionary * d, const char * key, double notfound)\n+double iniparser_getdouble(const dictionary * d, const char * key, double notfound)\n {\n-    const char    *   str ;\n+    const char * str ;\n \n     str = iniparser_getstring(d, key, INI_INVALID_KEY);\n     if (str==INI_INVALID_KEY) return notfound ;\n@@ -368,10 +547,10 @@ double iniparser_getdouble(dictionary * d, const char * key, double notfound)\n   necessarily have to be 0 or 1.\n  */\n /*--------------------------------------------------------------------------*/\n-int iniparser_getboolean(dictionary * d, const char * key, int notfound)\n+int iniparser_getboolean(const dictionary * d, const char * key, int notfound)\n {\n-    const char    *   c ;\n-    int         ret ;\n+    int          ret ;\n+    const char * c ;\n \n     c = iniparser_getstring(d, key, INI_INVALID_KEY);\n     if (c==INI_INVALID_KEY) return notfound ;\n@@ -397,10 +576,7 @@ int iniparser_getboolean(dictionary * d, const char * key, int notfound)\n   of querying for the presence of sections in a dictionary.\n  */\n /*--------------------------------------------------------------------------*/\n-int iniparser_find_entry(\n-    dictionary  *   ini,\n-    const char        *   entry\n-)\n+int iniparser_find_entry(const dictionary * ini, const char * entry)\n {\n     int found=0 ;\n     if (iniparser_getstring(ini, entry, INI_INVALID_KEY)!=INI_INVALID_KEY) {\n@@ -418,13 +594,14 @@ int iniparser_find_entry(\n   @return   int 0 if Ok, -1 otherwise.\n \n   If the given entry can be found in the dictionary, it is modified to\n-  contain the provided value. If it cannot be found, -1 is returned.\n+  contain the provided value. If it cannot be found, the entry is created.\n   It is Ok to set val to NULL.\n  */\n /*--------------------------------------------------------------------------*/\n int iniparser_set(dictionary * ini, const char * entry, const char * val)\n {\n-    return dictionary_set(ini, strlwc(entry), val) ;\n+    char tmp_str[ASCIILINESZ+1];\n+    return dictionary_set(ini, strlwc(entry, tmp_str, sizeof(tmp_str)), val) ;\n }\n \n /*-------------------------------------------------------------------------*/\n@@ -439,12 +616,13 @@ int iniparser_set(dictionary * ini, const char * entry, const char * val)\n /*--------------------------------------------------------------------------*/\n void iniparser_unset(dictionary * ini, const char * entry)\n {\n-    dictionary_unset(ini, strlwc(entry));\n+    char tmp_str[ASCIILINESZ+1];\n+    dictionary_unset(ini, strlwc(entry, tmp_str, sizeof(tmp_str)));\n }\n \n /*-------------------------------------------------------------------------*/\n /**\n-  @brief\tLoad a single line from an INI file\n+  @brief    Load a single line from an INI file\n   @param    input_line  Input line, may be concatenated multi-line input\n   @param    section     Output space to store section\n   @param    key         Output space to store key\n@@ -457,34 +635,39 @@ static line_status iniparser_line(\n     char * section,\n     char * key,\n     char * value)\n-{   \n+{\n     line_status sta ;\n-    char        line[ASCIILINESZ+1];\n-    int         len ;\n+    char * line = NULL;\n+    size_t      len ;\n \n-    strcpy(line, strstrip(input_line));\n-    len = (int)strlen(line);\n+    line = xstrdup(input_line);\n+    len = strstrip(line);\n \n     sta = LINE_UNPROCESSED ;\n     if (len<1) {\n         /* Empty line */\n         sta = LINE_EMPTY ;\n-    } else if (line[0]=='#') {\n+    } else if (line[0]=='#' || line[0]==';') {\n         /* Comment line */\n-        sta = LINE_COMMENT ; \n+        sta = LINE_COMMENT ;\n     } else if (line[0]=='[' && line[len-1]==']') {\n         /* Section name */\n         sscanf(line, \"[%[^]]\", section);\n-        strcpy(section, strstrip(section));\n-        strcpy(section, strlwc(section));\n+        strstrip(section);\n+        strlwc(section, section, len);\n         sta = LINE_SECTION ;\n     } else if (sscanf (line, \"%[^=] = \\\"%[^\\\"]\\\"\", key, value) == 2\n-           ||  sscanf (line, \"%[^=] = '%[^\\']'\",   key, value) == 2\n-           ||  sscanf (line, \"%[^=] = %[^;#]\",     key, value) == 2) {\n-        /* Usual key=value, with or without comments */\n-        strcpy(key, strstrip(key));\n-        strcpy(key, strlwc(key));\n-        strcpy(value, strstrip(value));\n+           ||  sscanf (line, \"%[^=] = '%[^\\']'\",   key, value) == 2) {\n+        /* Usual key=value with quotes, with or without comments */\n+        strstrip(key);\n+        strlwc(key, key, len);\n+        /* Don't strip spaces from values surrounded with quotes */\n+        sta = LINE_VALUE ;\n+    } else if (sscanf (line, \"%[^=] = %[^;#]\", key, value) == 2) {\n+        /* Usual key=value without quotes, with or without comments */\n+        strstrip(key);\n+        strlwc(key, key, len);\n+        strstrip(value);\n         /*\n          * sscanf cannot handle '' or \"\" as empty values\n          * this is done here\n@@ -501,14 +684,16 @@ static line_status iniparser_line(\n          * key=;\n          * key=#\n          */\n-        strcpy(key, strstrip(key));\n-        strcpy(key, strlwc(key));\n+        strstrip(key);\n+        strlwc(key, key, len);\n         value[0]=0 ;\n         sta = LINE_VALUE ;\n     } else {\n         /* Generate syntax error */\n         sta = LINE_ERROR ;\n     }\n+\n+    free(line);\n     return sta ;\n }\n \n@@ -528,44 +713,33 @@ static line_status iniparser_line(\n /*--------------------------------------------------------------------------*/\n dictionary * iniparser_load(const char * ininame)\n {\n-    char *buf;\n     FILE * in ;\n \n-    char *line;\n-    char *section;\n-    char *key;\n-    char *tmp;\n-    char *val;\n+    char line    [ASCIILINESZ+1] ;\n+    char section [ASCIILINESZ+1] ;\n+    char key     [ASCIILINESZ+1] ;\n+    char tmp     [(ASCIILINESZ * 2) + 2] ;\n+    char val     [ASCIILINESZ+1] ;\n \n     int  last=0 ;\n     int  len ;\n     int  lineno=0 ;\n     int  errs=0;\n-    int  ret;\n+    int  mem_err=0;\n \n     dictionary * dict ;\n \n-    if ((in=fopen(ininame, \"r\"))==NULL)\n+    if ((in=fopen(ininame, \"r\"))==NULL) {\n+        iniparser_error_callback(\"iniparser: cannot open %s\\n\", ininame);\n         return NULL ;\n+    }\n \n     dict = dictionary_new(0) ;\n     if (!dict) {\n         fclose(in);\n-\terrno = ENOMEM;\n         return NULL ;\n     }\n \n-    buf = malloc((ASCIILINESZ+1) * 5);\n-    if (buf == NULL) {\n-\t    errno = -ENOMEM;\n-\t    return NULL;\n-    }\n-    line = buf;\n-    section = line + ASCIILINESZ + 1;\n-    key = section + ASCIILINESZ + 1;\n-    tmp = key + ASCIILINESZ + 1;\n-    val = tmp + ASCIILINESZ + 1;\n-\n     memset(line,    0, ASCIILINESZ);\n     memset(section, 0, ASCIILINESZ);\n     memset(key,     0, ASCIILINESZ);\n@@ -575,18 +749,16 @@ dictionary * iniparser_load(const char * ininame)\n     while (fgets(line+last, ASCIILINESZ-last, in)!=NULL) {\n         lineno++ ;\n         len = (int)strlen(line)-1;\n+        if (len<=0)\n+            continue;\n         /* Safety check against buffer overflows */\n-        if (last > 0 && line[len]!='\\n') {\n-#if 0\n-            warning(anon_scope,\n-                    \"iniparser: input line too long in %s (%d)\\n\",\n-                    ininame,\n-                    lineno);\n-#endif\n+        if (line[len]!='\\n' && !feof(in)) {\n+            iniparser_error_callback(\n+              \"iniparser: input line too long in %s (%d)\\n\",\n+              ininame,\n+              lineno);\n             dictionary_del(dict);\n             fclose(in);\n-\t    free(buf);\n-\t    errno = EINVAL;\n             return NULL ;\n         }\n         /* Get rid of \\n and spaces at end of line */\n@@ -595,8 +767,11 @@ dictionary * iniparser_load(const char * ininame)\n             line[len]=0 ;\n             len-- ;\n         }\n+        if (len < 0) { /* Line was entirely \\n and/or spaces */\n+            len = 0;\n+        }\n         /* Detect multi-line */\n-        if (len >= 0 && line[len]=='\\\\') {\n+        if (line[len]=='\\\\') {\n             /* Multi-line value */\n             last=len ;\n             continue ;\n@@ -609,24 +784,20 @@ dictionary * iniparser_load(const char * ininame)\n             break ;\n \n             case LINE_SECTION:\n-            errs = dictionary_set(dict, section, NULL);\n+            mem_err = dictionary_set(dict, section, NULL);\n             break ;\n \n             case LINE_VALUE:\n             sprintf(tmp, \"%s:%s\", section, key);\n-            errs = dictionary_set(dict, tmp, val) ;\n+            mem_err = dictionary_set(dict, tmp, val);\n             break ;\n \n-\tcase LINE_ERROR:\n-#if 0\n-            printf(\"iniparser: syntax error in %s (%d):\\n\",\n-                    ininame,\n-                    lineno);\n-            printf( \"-> %s\\n\", line);\n-\n-#endif\n-\n-\t    ret = EINVAL;\n+            case LINE_ERROR:\n+            iniparser_error_callback(\n+              \"iniparser: syntax error in %s (%d):\\n-> %s\\n\",\n+              ininame,\n+              lineno,\n+              line);\n             errs++ ;\n             break;\n \n@@ -635,18 +806,16 @@ dictionary * iniparser_load(const char * ininame)\n         }\n         memset(line, 0, ASCIILINESZ);\n         last=0;\n-        if (errs<0) {\n-\t    ret = ENOMEM;\n+        if (mem_err<0) {\n+            iniparser_error_callback(\"iniparser: memory allocation failure\\n\");\n             break ;\n         }\n     }\n-    fclose(in);\n-    free(buf);\n     if (errs) {\n         dictionary_del(dict);\n         dict = NULL ;\n-\terrno = ret;\n     }\n+    fclose(in);\n     return dict ;\n }\n \n@@ -665,5 +834,3 @@ void iniparser_freedict(dictionary * d)\n {\n     dictionary_del(d);\n }\n-\n-/* vim: set ts=4 et sw=4 tw=75 */\ndiff --git a/lib/boilerplate/iniparser/iniparser.h b/lib/boilerplate/iniparser/iniparser.h\nindex d454cef34..37ff7b71b 100644\n--- a/lib/boilerplate/iniparser/iniparser.h\n+++ b/lib/boilerplate/iniparser/iniparser.h\n@@ -3,22 +3,15 @@\n /**\n    @file    iniparser.h\n    @author  N. Devillard\n-   @date    Sep 2007\n-   @version 3.0\n    @brief   Parser for ini files.\n */\n /*--------------------------------------------------------------------------*/\n \n-/*\n-\t$Id: iniparser.h,v 1.24 2007-11-23 21:38:19 ndevilla Exp $\n-\t$Revision: 1.24 $\n-*/\n-\n #ifndef _INIPARSER_H_\n #define _INIPARSER_H_\n \n /*---------------------------------------------------------------------------\n-   \t\t\t\t\t\t\t\tIncludes\n+                                Includes\n  ---------------------------------------------------------------------------*/\n \n #include <stdio.h>\n@@ -34,12 +27,21 @@\n \n #include \"dictionary.h\"\n \n-/*---------------------------------------------------------------------------\n-   \t\t\t\t\t\t\t\tMacros\n- ---------------------------------------------------------------------------*/\n-/** For backwards compatibility only */\n-#define iniparser_getstr(d, k)  iniparser_getstring(d, k, NULL)\n-#define iniparser_setstr        iniparser_setstring\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Configure a function to receive the error messages.\n+  @param    errback  Function to call.\n+\n+  By default, the error will be printed on stderr. If a null pointer is passed\n+  as errback the error callback will be switched back to default.\n+ */\n+/*--------------------------------------------------------------------------*/\n+\n+void iniparser_set_error_callback(int (*errback)(const char *, ...));\n \n /*-------------------------------------------------------------------------*/\n /**\n@@ -60,7 +62,7 @@\n  */\n /*--------------------------------------------------------------------------*/\n \n-int iniparser_getnsec(dictionary * d);\n+int iniparser_getnsec(const dictionary * d);\n \n \n /*-------------------------------------------------------------------------*/\n@@ -78,7 +80,7 @@ int iniparser_getnsec(dictionary * d);\n  */\n /*--------------------------------------------------------------------------*/\n \n-const char * iniparser_getsecname(dictionary * d, int n);\n+const char * iniparser_getsecname(const dictionary * d, int n);\n \n \n /*-------------------------------------------------------------------------*/\n@@ -93,7 +95,22 @@ const char * iniparser_getsecname(dictionary * d, int n);\n  */\n /*--------------------------------------------------------------------------*/\n \n-void iniparser_dump_ini(dictionary * d, FILE * f);\n+void iniparser_dump_ini(const dictionary * d, FILE * f);\n+\n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Save a dictionary section to a loadable ini file\n+  @param    d   Dictionary to dump\n+  @param    s   Section name of dictionary to dump\n+  @param    f   Opened file pointer to dump to\n+  @return   void\n+\n+  This function dumps a given section of a given dictionary into a loadable ini\n+  file.  It is Ok to specify @c stderr or @c stdout as output files.\n+ */\n+/*--------------------------------------------------------------------------*/\n+\n+void iniparser_dumpsection_ini(const dictionary * d, const char * s, FILE * f);\n \n /*-------------------------------------------------------------------------*/\n /**\n@@ -108,7 +125,36 @@ void iniparser_dump_ini(dictionary * d, FILE * f);\n   purposes mostly.\n  */\n /*--------------------------------------------------------------------------*/\n-void iniparser_dump(dictionary * d, FILE * f);\n+void iniparser_dump(const dictionary * d, FILE * f);\n+\n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Get the number of keys in a section of a dictionary.\n+  @param    d   Dictionary to examine\n+  @param    s   Section name of dictionary to examine\n+  @return   Number of keys in section\n+ */\n+/*--------------------------------------------------------------------------*/\n+int iniparser_getsecnkeys(const dictionary * d, const char * s);\n+\n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Get the number of keys in a section of a dictionary.\n+  @param    d    Dictionary to examine\n+  @param    s    Section name of dictionary to examine\n+  @param    keys Already allocated array to store the keys in\n+  @return   The pointer passed as `keys` argument or NULL in case of error\n+\n+  This function queries a dictionary and finds all keys in a given section.\n+  The keys argument should be an array of pointers which size has been\n+  determined by calling `iniparser_getsecnkeys` function prior to this one.\n+\n+  Each pointer in the returned char pointer-to-pointer is pointing to\n+  a string allocated in the dictionary; do not free or modify them.\n+ */\n+/*--------------------------------------------------------------------------*/\n+const char ** iniparser_getseckeys(const dictionary * d, const char * s, const char ** keys);\n+\n \n /*-------------------------------------------------------------------------*/\n /**\n@@ -125,7 +171,7 @@ void iniparser_dump(dictionary * d, FILE * f);\n   the dictionary, do not free or modify it.\n  */\n /*--------------------------------------------------------------------------*/\n-const char * iniparser_getstring(dictionary * d, const char * key, const char * def);\n+const char * iniparser_getstring(const dictionary * d, const char * key, const char * def);\n \n /*-------------------------------------------------------------------------*/\n /**\n@@ -154,7 +200,35 @@ const char * iniparser_getstring(dictionary * d, const char * key, const char *\n   Credits: Thanks to A. Becker for suggesting strtol()\n  */\n /*--------------------------------------------------------------------------*/\n-int iniparser_getint(dictionary * d, const char * key, int notfound);\n+int iniparser_getint(const dictionary * d, const char * key, int notfound);\n+\n+/*-------------------------------------------------------------------------*/\n+/**\n+  @brief    Get the string associated to a key, convert to an long int\n+  @param    d Dictionary to search\n+  @param    key Key string to look for\n+  @param    notfound Value to return in case of error\n+  @return   integer\n+\n+  This function queries a dictionary for a key. A key as read from an\n+  ini file is given as \"section:key\". If the key cannot be found,\n+  the notfound value is returned.\n+\n+  Supported values for integers include the usual C notation\n+  so decimal, octal (starting with 0) and hexadecimal (starting with 0x)\n+  are supported. Examples:\n+\n+  - \"42\"      ->  42\n+  - \"042\"     ->  34 (octal -> decimal)\n+  - \"0x42\"    ->  66 (hexa  -> decimal)\n+\n+  Warning: the conversion may overflow in various ways. Conversion is\n+  totally outsourced to strtol(), see the associated man page for overflow\n+  handling.\n+ */\n+/*--------------------------------------------------------------------------*/\n+long int iniparser_getlongint(const dictionary * d, const char * key, long int notfound);\n+\n \n /*-------------------------------------------------------------------------*/\n /**\n@@ -169,7 +243,7 @@ int iniparser_getint(dictionary * d, const char * key, int notfound);\n   the notfound value is returned.\n  */\n /*--------------------------------------------------------------------------*/\n-double iniparser_getdouble(dictionary * d, const char * key, double notfound);\n+double iniparser_getdouble(const dictionary * d, const char * key, double notfound);\n \n /*-------------------------------------------------------------------------*/\n /**\n@@ -203,7 +277,7 @@ double iniparser_getdouble(dictionary * d, const char * key, double notfound);\n   necessarily have to be 0 or 1.\n  */\n /*--------------------------------------------------------------------------*/\n-int iniparser_getboolean(dictionary * d, const char * key, int notfound);\n+int iniparser_getboolean(const dictionary * d, const char * key, int notfound);\n \n \n /*-------------------------------------------------------------------------*/\n@@ -212,17 +286,16 @@ int iniparser_getboolean(dictionary * d, const char * key, int notfound);\n   @param    ini     Dictionary to modify.\n   @param    entry   Entry to modify (entry name)\n   @param    val     New value to associate to the entry.\n-  @return   int 0 if Ok, -1 otherwise.\n+  @return   int     0 if Ok, -1 otherwise.\n \n   If the given entry can be found in the dictionary, it is modified to\n-  contain the provided value. If it cannot be found, -1 is returned.\n+  contain the provided value. If it cannot be found, the entry is created.\n   It is Ok to set val to NULL.\n  */\n /*--------------------------------------------------------------------------*/\n-int iniparser_setstring(dictionary * ini, const char * entry, const char * val);\n-\n int iniparser_set(dictionary * ini, const char * entry, const char * val);\n \n+\n /*-------------------------------------------------------------------------*/\n /**\n   @brief    Delete an entry in a dictionary\n@@ -247,7 +320,7 @@ void iniparser_unset(dictionary * ini, const char * entry);\n   of querying for the presence of sections in a dictionary.\n  */\n /*--------------------------------------------------------------------------*/\n-int iniparser_find_entry(dictionary * ini, const char * entry) ;\n+int iniparser_find_entry(const dictionary * ini, const char * entry) ;\n \n /*-------------------------------------------------------------------------*/\n /**\n@@ -278,4 +351,8 @@ dictionary * iniparser_load(const char * ininame);\n /*--------------------------------------------------------------------------*/\n void iniparser_freedict(dictionary * d);\n \n+#ifdef __cplusplus\n+}\n+#endif\n+\n #endif\n-- \nGitLab\n\n"
  },
  {
    "path": "package/xenomai/3.0.10/0002-Add-disable-demo-testsuite-options.patch",
    "content": "From 702697cafcec735e55f075594a2990204c8ea17d Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 10 Aug 2021 18:01:48 +0200\nSubject: [PATCH] Add --disable-{demo,testsuite} options\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nAllow the user to disable demo and testsuite to avoid the following\nbuild failures on arc and riscv32:\n\nlatency.c: In function 'display':\nlatency.c:326:21: error: format '%ld' expects argument of type 'long int', but argument 2 has type 'time_t' {aka 'long long int'} [-Werror=format=]\n  326 |         (\"RTT|  %.2ld:%.2ld:%.2ld  (%s, %Ld us period, \"\n      |                 ~~~~^\n      |                     |\n      |                     long int\n      |                 %.2lld\n  327 |          \"priority %d)\\n\", dt / 3600,\n      |                            ~~~~~~~~~\n      |                               |\n      |                               time_t {aka long long int}\n\naltency.c: In function ‘display’:\naltency.c:262:21: error: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘time_t’ {aka ‘long long int’} [-Werror=format=]\n  262 |         (\"RTT|  %.2ld:%.2ld:%.2ld  (%s, %Ld us period, \"\n      |                 ~~~~^\n      |                     |\n      |                     long int\n      |                 %.2lld\n  263 |          \"priority %d)\\n\", dt / 3600,\n      |                            ~~~~~~~~~\n      |                               |\n      |                               time_t {aka long long int}\n\nFixes:\n - http://autobuild.buildroot.org/results/448efe22e8fe058a1b354a3c124874e30b9ce138\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile.am  | 12 ++++++++++--\n configure.ac | 12 ++++++++++++\n 2 files changed, 22 insertions(+), 2 deletions(-)\n\ndiff --git a/Makefile.am b/Makefile.am\nindex 891e53f66..604644277 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -6,9 +6,17 @@ SUBDIRS = \t\t\\\n \tconfig\t\t\\\n \tinclude\t\t\\\n \tscripts\t\t\\\n-\ttestsuite\t\\\n-\tutils\t\t\\\n+\tutils\n+\n+if XENO_ENABLE_DEMO\n+SUBDIRS += \t\t\\\n \tdemo\n+endif\n+\n+if XENO_ENABLE_TESTSUITE\n+SUBDIRS += \t\t\\\n+\ttestsuite\n+endif\n \n EXTRA_DIST = kernel debian\n \ndiff --git a/configure.ac b/configure.ac\nindex bd5fd5ba9..29dfd16e5 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -200,6 +200,18 @@ test \\! x$debug_mode = x && AC_DEFINE(CONFIG_XENO_DEBUG,1,[config])\n AM_CONDITIONAL(XENO_DEBUG_FULL,[test x$debug_mode = xfull])\n test x$debug_mode = xfull && AC_DEFINE(CONFIG_XENO_DEBUG_FULL,1,[config])\n \n+dnl Demo (default: on)\n+\n+AC_ARG_ENABLE(demo,\n+\tAS_HELP_STRING([--disable-demo], [Disable demo]))\n+AM_CONDITIONAL(XENO_ENABLE_DEMO,[test x$enable_demo != xno])\n+\n+dnl Testsuite (default: on)\n+\n+AC_ARG_ENABLE(testsuite,\n+\tAS_HELP_STRING([--disable-testsuite], [Disable testsuite]))\n+AM_CONDITIONAL(XENO_ENABLE_TESTSUITE,[test x$enable_testsuite != xno])\n+\n dnl Low resolution clock (default: off)\n \n unset lores_clock\n-- \n2.30.2\n\n"
  },
  {
    "path": "package/xenomai/Config.in",
    "content": "config BR2_PACKAGE_XENOMAI_COBALT_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_i386\n\tdefault y if BR2_x86_64\n\tdefault y if BR2_powerpc\n\tdefault y if BR2_arm && !BR2_ARM_CPU_ARMV7M && !BR2_ARM_CPU_ARMV8A\n\ncomment \"xenomai needs a glibc or uClibc toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL\n\nconfig BR2_PACKAGE_XENOMAI\n\tbool \"Xenomai Userspace\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\t# uses <error.h>, __WORDSIZE and bits/local_lim.h\n\tdepends on !BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  Real-Time Framework for Linux\n\t  http://www.xenomai.org\n\n\t  Xenomai is split in two parts: a kernel part and an\n\t  userspace part.\n\n\t  This package contains the userspace part, which consists\n\t  mainly in libraries to write userspace real-time programs\n\t  that interact with the in-kernel Xenomai real-time core.\n\n\t  For those libraries to work, you need a Xenomai-enabled\n\t  kernel. This is possible in two ways:\n\t   - if you compile your kernel with Buildroot, you need to go\n\t     to Linux Kernel -> Linux Kernel Extensions to enable the\n\t     Xenomai extension.\n\t   - if you compile your kernel outside of Buildroot, you need\n\t     to make sure that it is Xenomai-enabled.\n\n\t  Finally, if you are using a static /dev, make sure to\n\t  uncomment the Xenomai entries listed in\n\t  target/generic/device_table_dev.txt.\n\nif BR2_PACKAGE_XENOMAI\n\nchoice\n\tbool \"Xenomai version\"\n\thelp\n\t  Make sure that the selected version has a patch for your\n\t  selected Linux kernel. If it does not, download and select a\n\t  patch manually with BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH,\n\t  in the Linux Kernel -> Linux Kernel Extensions menu.\n\nconfig BR2_PACKAGE_XENOMAI_LATEST_VERSION\n\tbool \"Latest version (3.0.10)\"\n\nconfig BR2_PACKAGE_XENOMAI_CUSTOM_VERSION\n\tbool \"Custom version\"\n\nconfig BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL\n\tbool \"Custom tarball\"\n\nconfig BR2_PACKAGE_XENOMAI_CUSTOM_GIT\n\tbool \"Custom Git repository\"\n\nendchoice\n\nconfig BR2_PACKAGE_XENOMAI_REPOSITORY\n\tstring \"URL of custom repository\"\n\tdefault \"https://gitlab.denx.de/Xenomai/xenomai.git\"\n\tdepends on BR2_PACKAGE_XENOMAI_CUSTOM_GIT\n\nconfig BR2_PACKAGE_XENOMAI_VERSION\n\tstring \"Custom Xenomai version\" if \\\n\t\t!BR2_PACKAGE_XENOMAI_LATEST_VERSION && \\\n\t\t!BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL\n\tdefault \"3.0.10\" if BR2_PACKAGE_XENOMAI_LATEST_VERSION\n\tdefault \"custom\" if BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL\n\nconfig BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL_URL\n\tstring \"URL of custom tarball\"\n\tdepends on BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL\n\nchoice\n\tprompt \"Xenomai core\"\n\tdefault BR2_PACKAGE_XENOMAI_MERCURY\n\thelp\n\t  Select the Xenomai core: dual kernel (Cobalt)\n\t  or native Linux Kernel (Mercury).\n\nconfig BR2_PACKAGE_XENOMAI_MERCURY\n\tbool \"Mercury\"\n\tdepends on !BR2_LINUX_KERNEL_EXT_XENOMAI\n\thelp\n\t  Select Mercury core for the Xenomai userspace.\n\t  You want to use it if you have the native Linux Kernel.\n\nconfig BR2_PACKAGE_XENOMAI_COBALT\n\tbool \"Cobalt\"\n\tdepends on BR2_PACKAGE_XENOMAI_COBALT_ARCH_SUPPORTS\n\thelp\n\t  Select Cobalt core (dual kernel) for the Xenomai\n\t  userspace. Use this if you use a Xenomai-patched\n\t  Linux kernel.\n\n\t  If you want to use Cobalt core, your kernel must have\n\t  the Adeos and Xenomai patches applied to it. You can\n\t  add these through the BR2_LINUX_KERNEL_EXT_XENOMAI option\n\t  in the Linux Kernel Extensions menu.\nendchoice\n\nconfig BR2_PACKAGE_XENOMAI_ENABLE_SMP\n\tbool \"Enable SMP support\"\n\tdefault y\n\t# SMP not supported below armv6\n\tdepends on !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5\n\thelp\n\t  This option enables SMP support in Xenomai userspace.\n\n\t  If this option is turned on while no SMP support is enabled\n\t  in the kernel, things will still work. However, if SMP is\n\t  enabled in the kernel but this option is not turned on,\n\t  Xenomai applications will complain with:\n\n\t    feature mismatch: missing=\"smp/nosmp\"\n\n\t  Please refer to this troubleshooting guide for more\n\t  information:\n\n\t  http://xenomai.org/troubleshooting-a-dual-kernel-configuration/#feature_mismatch_missing8221smpnosmp8221\n\nconfig BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY\n\tbool \"Enable registry\"\n\tdepends on !BR2_STATIC_LIBS # libfuse\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libfuse\n\tdepends on BR2_USE_MMU # libfuse\n\tselect BR2_PACKAGE_LIBFUSE\n\thelp\n\t  Xenomai APIs can export their internal state through a\n\t  pseudo-filesystem, whose files may be read to obtain\n\t  information about the existing real-time objects, such as\n\t  tasks, semaphores, message queues and so on.\n\ncomment \"registry needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY_PATH\n\tstring \"Custom registry root path\"\n\tdepends on BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY\n\thelp\n\t  Specify the root path of the registry here.\n\t  To use the Xenomai default (currently: /var/run/xenomai),\n\t  leave this option empty.\n\nconfig BR2_PACKAGE_XENOMAI_ADDITIONAL_CONF_OPTS\n\tstring \"Additional configure options\"\n\thelp\n\t  Specify any additional options to pass to the configure\n\t  script here.  See Xenomai documentation for details.\n\nconfig BR2_PACKAGE_XENOMAI_TESTSUITE\n\tbool \"Install testsuite\"\n\thelp\n\t  This option allows to install the Xenomai test programs.\n\nconfig BR2_PACKAGE_XENOMAI_RTCAN\n\tbool \"RTCan utilities\"\n\thelp\n\t  This option allows to install the Xenomai RT-CAN utilities.\n\nconfig BR2_PACKAGE_XENOMAI_ANALOGY\n\tbool \"Analogy libs and utils\"\n\thelp\n\t  This option allows to install the Xenomai Analogy utilities\n\t  and libraries\n\nmenu \"Skin selection\"\n\nconfig BR2_PACKAGE_XENOMAI_NATIVE_SKIN\n\tbool \"Alchemy (native) skin\"\n\tdefault y\n\thelp\n\t  This option allows to install the Alchemy Xenomai skin,\n\t  previously called 'native'\n\nconfig BR2_PACKAGE_XENOMAI_POSIX_SKIN\n\tbool \"POSIX skin\"\n\tdefault y\n\thelp\n\t  This option allows to install the POSIX Xenomai skin\n\nconfig BR2_PACKAGE_XENOMAI_PSOS_SKIN\n\tbool \"pSOS skin\"\n\thelp\n\t  This option allows to install the pSOS Xenomai skin\n\nconfig BR2_PACKAGE_XENOMAI_RTAI_SKIN\n\tbool \"RTAI skin\"\n\thelp\n\t  This option allows to install the RTAI Xenomai skin\n\nconfig BR2_PACKAGE_XENOMAI_UITRON_SKIN\n\tbool \"uITRON skin\"\n\thelp\n\t  This option allows to install the uITRON Xenomai skin\n\nconfig BR2_PACKAGE_XENOMAI_VRTX_SKIN\n\tbool \"VRTX skin\"\n\thelp\n\t  This option allows to install the VRTX Xenomai skin\n\nconfig BR2_PACKAGE_XENOMAI_VXWORKS_SKIN\n\tbool \"VxWorks skin\"\n\thelp\n\t  This option allows to install the VxWorks Xenomai skin\n\nendmenu\n\nendif\n"
  },
  {
    "path": "package/xenomai/xenomai.hash",
    "content": "# Locally computed;\nsha256  080f893d6ab8e3065285fbb482695477a0502b9490dccd1f744cebaac94691e5  xenomai-3.0.10.tar.bz2\nsha256  d37ebe86bf618942dad958927c44403f9b02fbebb3071a4a08408ccbdab5290f  debian/copyright\nsha256  f3380321da72ff509bf6939aa80e6d02fd22268f5c705137b34c205b39bc63a0  include/COPYING\nsha256  d6b6d8ed1b12309085caf1cf775ea4acdad3288c7f7d993c2502bd19c87e4764  kernel/cobalt/COPYING\nsha256  d6b6d8ed1b12309085caf1cf775ea4acdad3288c7f7d993c2502bd19c87e4764  kernel/cobalt/posix/COPYING\nsha256  9c90501baa30534ffed6b39eef413bd1727170ef691fd9768dc8644c3042df54  kernel/cobalt/rtdm/COPYING\nsha256  eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449  lib/alchemy/COPYING\nsha256  eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449  lib/analogy/COPYING\nsha256  0519083691511d71408f8c9a2794fa2f6ad13a5eec00717f4572b54d18d6f9da  lib/boilerplate/iniparser/LICENSE\nsha256  eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449  lib/boilerplate/COPYING\nsha256  eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449  lib/cobalt/COPYING\nsha256  eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449  lib/copperplate/COPYING\nsha256  eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449  lib/psos/COPYING\nsha256  eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449  lib/smokey/COPYING\nsha256  eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449  lib/trank/COPYING\nsha256  eea173a556abac0370461e57e12aab266894ea6be3874c2be05fd87871f75449  lib/vxworks/COPYING\n"
  },
  {
    "path": "package/xenomai/xenomai.mk",
    "content": "################################################################################\n#\n# xenomai\n#\n################################################################################\n\nXENOMAI_VERSION = $(call qstrip,$(BR2_PACKAGE_XENOMAI_VERSION))\nifeq ($(BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL),y)\nXENOMAI_TARBALL = $(call qstrip,$(BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL_URL))\nXENOMAI_SOURCE = $(notdir $(XENOMAI_TARBALL))\nXENOMAI_SITE = $(patsubst %/,%,$(dir $(XENOMAI_TARBALL)))\nelse ifeq ($(BR2_PACKAGE_XENOMAI_CUSTOM_GIT),y)\nXENOMAI_SITE = $(call qstrip,$(BR2_PACKAGE_XENOMAI_REPOSITORY))\nXENOMAI_SITE_METHOD = git\nelse\nXENOMAI_SOURCE = xenomai-$(XENOMAI_VERSION).tar.bz2\nXENOMAI_SITE = http://xenomai.org/downloads/xenomai/stable\nendif\n# We're patching configure.ac\nXENOMAI_AUTORECONF = YES\n\n# Exclude all from the hash check, but the latest version.\nifeq ($(BR2_PACKAGE_XENOMAI)$(BR2_PACKAGE_XENOMAI_LATEST_VERSION),y)\nBR_NO_CHECK_HASH_FOR += $(XENOMAI_SOURCE)\nendif\n\nXENOMAI_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)\n# GFDL is not included but refers to gnu.org\nXENOMAI_LICENSE_FILES = debian/copyright include/COPYING kernel/cobalt/COPYING \\\n\tkernel/cobalt/posix/COPYING kernel/cobalt/rtdm/COPYING \\\n\tlib/alchemy/COPYING lib/analogy/COPYING \\\n\tlib/boilerplate/iniparser/LICENSE lib/boilerplate/COPYING \\\n\tlib/cobalt/COPYING lib/copperplate/COPYING lib/psos/COPYING \\\n\tlib/smokey/COPYING lib/trank/COPYING lib/vxworks/COPYING\n\nXENOMAI_DEPENDENCIES = host-pkgconf\n\nXENOMAI_INSTALL_STAGING = YES\nXENOMAI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-user\nXENOMAI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install-user\n\nXENOMAI_CONF_OPTS += \\\n\t--disable-demo \\\n\t--disable-testsuite \\\n\t--includedir=/usr/include/xenomai/\n\nifeq ($(BR2_PACKAGE_XENOMAI_MERCURY),y)\nXENOMAI_CONF_OPTS += --with-core=mercury\nelse\nXENOMAI_CONF_OPTS += --with-core=cobalt\nendif\n\nifeq ($(BR2_PACKAGE_XENOMAI_ENABLE_SMP),y)\nXENOMAI_CONF_OPTS += --enable-smp\nelse\nXENOMAI_CONF_OPTS += --disable-smp\nendif\n\nifeq ($(BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY),y)\nXENOMAI_DEPENDENCIES += libfuse\nXENOMAI_REGISTRY_PATH = $(call qstrip,$(BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY_PATH))\nifeq ($(XENOMAI_REGISTRY_PATH),)\nXENOMAI_CONF_OPTS += --enable-registry\nelse\nXENOMAI_CONF_OPTS += --enable-registry=$(XENOMAI_REGISTRY_PATH)\nendif\nelse\nXENOMAI_CONF_OPTS += --disable-registry\nendif\n\nXENOMAI_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_XENOMAI_ADDITIONAL_CONF_OPTS))\n\n# Some of these files may be desired by some users -- at that point specific\n# config options need to be added to keep a particular set.\ndefine XENOMAI_REMOVE_UNNEEDED_FILES\n\tfor i in xeno xeno-config xeno-info wrap-link.sh ; do \\\n\t\trm -f $(TARGET_DIR)/usr/bin/$$i ; \\\n\tdone\n\tfor i in cobalt modechk ; do \\\n\t\trm -f $(TARGET_DIR)/usr/lib/$$i.wrappers ; \\\n\tdone\n\tfor i in autotune corectl hdb rtnet nomaccfg rtcfg rtifconfig \\\n\t\trtiwconfig rtping rtroute tdmacfg rtps slackspot version; do \\\n\t\trm -f $(TARGET_DIR)/usr/sbin/$$i ; \\\n\tdone\nendef\n\nXENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_UNNEEDED_FILES\n\nifeq ($(BR2_PACKAGE_XENOMAI_TESTSUITE),)\ndefine XENOMAI_REMOVE_TESTSUITE\n\trm -rf $(TARGET_DIR)/usr/share/xenomai/\n\tfor i in clocktest gpiotest latency smokey spitest switchtest \\\n\t\txeno-test-run-wrapper dohell xeno-test-run xeno-test ; do \\\n\t\trm -f $(TARGET_DIR)/usr/bin/$$i ; \\\n\tdone\n\trm -rf $(TARGET_DIR)/usr/demo/\nendef\n\nXENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_TESTSUITE\nendif\n\nifeq ($(BR2_PACKAGE_XENOMAI_RTCAN),)\ndefine XENOMAI_REMOVE_RTCAN_PROGS\n\tfor i in rtcanrecv rtcansend ; do \\\n\t\trm -f $(TARGET_DIR)/usr/bin/$$i ; \\\n\tdone\n\trm -f $(TARGET_DIR)/usr/sbin/rtcanconfig\nendef\n\nXENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_RTCAN_PROGS\nendif\n\nifeq ($(BR2_PACKAGE_XENOMAI_ANALOGY),)\ndefine XENOMAI_REMOVE_ANALOGY\n\tfor i in cmd_read cmd_write cmd_bits insn_read insn_write insn_bits \\\n\t\t\twf_generate ; do \\\n\t\trm -f $(TARGET_DIR)/usr/bin/$$i ; \\\n\tdone\n\tfor i in analogy_config analogy_calibrate ; do \\\n\t\trm -f $(TARGET_DIR)/usr/sbin/$$i ; \\\n\tdone\n\trm -f $(TARGET_DIR)/usr/lib/libanalogy.*\nendef\n\nXENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_ANALOGY\nendif\n\nXENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_NATIVE_SKIN),,alchemy)\nXENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_POSIX_SKIN),,posix)\nXENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_PSOS_SKIN),,psos)\nXENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_RTAI_SKIN),,rtai)\nXENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_TESTSUITE),,smokey)\nXENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_UITRON_SKIN),,uitron)\nXENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_VXWORKS_SKIN),,vxworks)\nXENOMAI_REMOVE_LIBS_LIST += $(if $(BR2_PACKAGE_XENOMAI_VRTX_SKIN),,vrtx)\n\ndefine XENOMAI_REMOVE_LIBS\n\tfor i in $(XENOMAI_REMOVE_LIBS_LIST) ; do \\\n\t\trm -f $(TARGET_DIR)/usr/lib/lib$$i.* ; \\\n\tdone\nendef\n\nXENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_LIBS\n\ndefine XENOMAI_DEVICES\n\t/dev/rtheap  c  666  0  0  10  254  0  0  -\n\t/dev/rtscope c  666  0  0  10  253  0  0  -\n\t/dev/rtp     c  666  0  0  150 0    0  1  32\nendef\n\nifeq ($(BR2_PACKAGE_HAS_UDEV),y)\nXENOMAI_DEPENDENCIES += udev\n\ndefine XENOMAI_INSTALL_UDEV_RULES\n\tif test -d $(TARGET_DIR)/etc/udev/rules.d ; then \\\n\t\tfor f in $(@D)/kernel/cobalt/udev/*.rules ; do \\\n\t\t\tcp $$f $(TARGET_DIR)/etc/udev/rules.d/ || exit 1 ; \\\n\t\tdone ; \\\n\tfi;\nendef\n\nXENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_INSTALL_UDEV_RULES\nendif # udev\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/xerces/0001-fix-static-linking-with-curl.patch",
    "content": "From 26e3f1440bbc75c704fc93ff43a2abbfbe4c0203 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 11 Oct 2018 22:56:50 +0200\nSubject: [PATCH] fix static linking with curl\n\nWhen curl is statically built with openssl support, xerces needs to\nlink with openssl libraries so use pkg_check_modules to get any\nneeded dependencies\n\nFixes:\n - http://autobuild.buildroot.org/results/29ca90fff2c8e38f2edf7240eca3aa3fe7397c45\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n cmake/XercesNetAccessorSelection.cmake | 8 +++++++-\n 1 file changed, 7 insertions(+), 1 deletion(-)\n\ndiff --git a/cmake/XercesNetAccessorSelection.cmake b/cmake/XercesNetAccessorSelection.cmake\nindex 7a63f1f6b..e90fcf034 100644\n--- a/cmake/XercesNetAccessorSelection.cmake\n+++ b/cmake/XercesNetAccessorSelection.cmake\n@@ -31,7 +31,13 @@ if(network)\n \n   # Requires select() which is UNIX only\n   if(UNIX)\n-    find_package(CURL)\n+    find_package(PkgConfig)\n+    if (PkgConfig_FOUND)\n+      pkg_check_modules(CURL libcurl)\n+      if (NOT CURL_FOUND)\n+        find_package(CURL)\n+      endif()\n+    endif()\n     if(CURL_FOUND)\n       list(APPEND netaccessors curl)\n     endif()\n-- \n2.17.1\n\n"
  },
  {
    "path": "package/xerces/0002-InMemMsgLoader-loadMsg-fix-memory-leak-when-transcod.patch",
    "content": "From 1bdf6d8ba878c1fe1d779824be70001fc0bebd2c Mon Sep 17 00:00:00 2001\nFrom: Even Rouault <even.rouault@spatialys.com>\nDate: Fri, 27 Aug 2021 01:33:27 +0200\nSubject: [PATCH] InMemMsgLoader::loadMsg(): fix memory leak when transcoding\n fails.\n\nSeen with the IconvGNU transcoder when parsing \"<aaa.xsdopengis.net/gml\\x96\".\nThe reason is that XMLString::transcode(repText2, manager) throws a TranscodingException\nwhich causes the tmp1 string to leak.\n\n```\n0 0x8791409 in operator new(unsigned int) /src/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:99:3\n1 0xbd147f7 in xercesc_4_0::MemoryManagerImpl::allocate(unsigned int) gdal/xerces-c/src/xercesc/internal/MemoryManagerImpl.cpp:40:18\n2 0xbe8c73e in xercesc_4_0::IconvGNULCPTranscoder::transcode(char const*, xercesc_4_0::MemoryManager*) gdal/xerces-c/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp:870:32\n3 0xbc22ca2 in xercesc_4_0::XMLString::transcode(char const*, xercesc_4_0::MemoryManager*) gdal/xerces-c/src/xercesc/util/XMLString.cpp:621:25\n4 0xbe8f4ad in xercesc_4_0::InMemMsgLoader::loadMsg(unsigned int, char16_t*, unsigned int, char const*, char const*, char const*, char const*, xercesc_4_0::MemoryManager*) gdal/xerces-c/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp:157:16\n5 0xbc20175 in xercesc_4_0::XMLException::loadExceptText(xercesc_4_0::XMLExcepts::Codes, char const*, char const*, char const*, char const*) gdal/xerces-c/src/xercesc/util/XMLException.cpp:241:23\n6 0xbc48bee in xercesc_4_0::UTFDataFormatException::UTFDataFormatException(char const*, unsigned long long, xercesc_4_0::XMLExcepts::Codes, char const*, char const*, char const*, char const*, xercesc_4_0::MemoryManager*) gdal/xerces-c/src/xercesc/util/UTFDataFormatException.hpp:31:1\n7 0xbc4824e in xercesc_4_0::XMLUTF8Transcoder::transcodeFrom(unsigned char const*, unsigned int, char16_t*, unsigned int, unsigned int&, unsigned char*) gdal/xerces-c/src/xercesc/util/XMLUTF8Transcoder.cpp:182:13\n8 0xbd27d7e in xercesc_4_0::XMLReader::xcodeMoreChars(char16_t*, unsigned char*, unsigned int) gdal/xerces-c/src/xercesc/internal/XMLReader.cpp:1926:34\n9 0xbd271dd in xercesc_4_0::XMLReader::refreshCharBuffer() gdal/xerces-c/src/xercesc/internal/XMLReader.cpp:571:19\n10 0xbd15c63 in xercesc_4_0::XMLReader::peekNextChar(char16_t&) gdal/xerces-c/src/xercesc/internal/XMLReader.hpp:767:14\n11 0xbd15aaf in xercesc_4_0::ReaderMgr::peekNextChar() gdal/xerces-c/src/xercesc/internal/ReaderMgr.cpp:158:21\n12 0xbd328da in xercesc_4_0::XMLScanner::scanProlog() gdal/xerces-c/src/xercesc/internal/XMLScanner.cpp:1241:45\n13 0xbd31ef4 in xercesc_4_0::XMLScanner::scanFirst(xercesc_4_0::InputSource const&, xercesc_4_0::XMLPScanToken&) gdal/xerces-c/src/xercesc/internal/XMLScanner.cpp:549:9\n14 0xbdadcff in xercesc_4_0::SAX2XMLReaderImpl::parseFirst(xercesc_4_0::InputSource const&, xercesc_4_0::XMLPScanToken&) gdal/xerces-c/src/xercesc/parsers/SAX2XMLReaderImpl.cpp:500:22\n```\nUpstream: https://github.com/apache/xerces-c/commit/1bdf6d8ba878c1fe1d779824be70001fc0bebd2c\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n\n---\n .../MsgLoaders/InMemory/InMemMsgLoader.cpp    | 31 ++++++++++++++-----\n 1 file changed, 23 insertions(+), 8 deletions(-)\n\ndiff --git a/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp b/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp\nindex cda103226..6971fde96 100644\n--- a/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp\n+++ b/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp\n@@ -25,6 +25,7 @@\n // ---------------------------------------------------------------------------\n #include <xercesc/util/BitOps.hpp>\n #include <xercesc/util/PlatformUtils.hpp>\n+#include <xercesc/util/TranscodingException.hpp>\n #include <xercesc/util/XMLMsgLoader.hpp>\n #include <xercesc/util/XMLString.hpp>\n #include <xercesc/util/XMLUni.hpp>\n@@ -153,14 +154,28 @@ bool InMemMsgLoader::loadMsg(const  XMLMsgLoader::XMLMsgId  msgToLoad\n     XMLCh* tmp4 = 0;\n     \n     bool bRet = false;\n-    if (repText1)\n-        tmp1 = XMLString::transcode(repText1, manager);\n-    if (repText2)\n-        tmp2 = XMLString::transcode(repText2, manager);\n-    if (repText3)\n-        tmp3 = XMLString::transcode(repText3, manager);\n-    if (repText4)\n-        tmp4 = XMLString::transcode(repText4, manager);\n+    try\n+    {\n+        if (repText1)\n+            tmp1 = XMLString::transcode(repText1, manager);\n+        if (repText2)\n+            tmp2 = XMLString::transcode(repText2, manager);\n+        if (repText3)\n+            tmp3 = XMLString::transcode(repText3, manager);\n+        if (repText4)\n+            tmp4 = XMLString::transcode(repText4, manager);\n+    }\n+    catch( const TranscodingException& )\n+    {\n+        if (tmp1)\n+            manager->deallocate(tmp1);\n+        if (tmp2)\n+            manager->deallocate(tmp2);\n+        if (tmp3)\n+            manager->deallocate(tmp3);\n+        // Note: tmp4 cannot leak\n+        throw;\n+    }\n \n     bRet = loadMsg(msgToLoad, toFill, maxChars, tmp1, tmp2, tmp3, tmp4, manager);\n \n-- \n2.17.1\n\n"
  },
  {
    "path": "package/xerces/Config.in",
    "content": "config BR2_PACKAGE_XERCES\n\tbool \"xerces-c++\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_WCHAR\n\thelp\n\t  Xerces-C++ is a validating XML parser written in portable C++.\n\n\t  http://xerces.apache.org/xerces-c/\n\nif BR2_PACKAGE_XERCES\n\nconfig BR2_PACKAGE_XERCES_ENABLE_NETWORK\n\tbool \"Enable network support\"\n\tdefault y\n\thelp\n\t  Enable network support in xerces\n\nendif\n\ncomment \"xerces-c++ needs a toolchain w/ C++, dynamic library, wchar\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_USE_WCHAR\n"
  },
  {
    "path": "package/xerces/xerces.hash",
    "content": "# From http://www.apache.org/dist/xerces/c/3/sources/xerces-c-3.2.3.tar.xz.sha256\nsha256  12fc99a9fc1d1a79bd0e927b8b5637a576d6656f45b0d5e70ee3694d379cc149  xerces-c-3.2.3.tar.xz\n\n# Hash for license file\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/xerces/xerces.mk",
    "content": "################################################################################\n#\n# xerces\n#\n################################################################################\n\nXERCES_VERSION = 3.2.3\nXERCES_SOURCE = xerces-c-$(XERCES_VERSION).tar.xz\nXERCES_SITE = http://archive.apache.org/dist/xerces/c/3/sources\nXERCES_LICENSE = Apache-2.0\nXERCES_LICENSE_FILES = LICENSE\nXERCES_CPE_ID_VENDOR = apache\nXERCES_CPE_ID_PRODUCT = xerces-c\\+\\+\nXERCES_INSTALL_STAGING = YES\n\ndefine XERCES_DISABLE_SAMPLES\n\t$(SED) 's/add_subdirectory(samples)//' $(@D)/CMakeLists.txt\nendef\n\nXERCES_POST_PATCH_HOOKS += XERCES_DISABLE_SAMPLES\n\nifeq ($(BR2_PACKAGE_ICU),y)\nXERCES_DEPENDENCIES += icu\nendif\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nXERCES_CONF_ENV += LIBS=-liconv\nXERCES_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_PACKAGE_XERCES_ENABLE_NETWORK),y)\nifeq ($(BR2_PACKAGE_LIBCURL),y)\nXERCES_CONF_OPTS += -Dnetwork-accessor=curl\nXERCES_DEPENDENCIES += libcurl\nelse\nXERCES_CONF_OPTS += -Dnetwork-accessor=socket\nendif\nelse\nXERCES_CONF_OPTS += -Dnetwork=OFF\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nXERCES_CONF_OPTS += -Dthreads=ON\nelse\nXERCES_CONF_OPTS += -Dthreads=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch",
    "content": "From d5cbb4f43cc9c30100fbf18a3e0d1fb95e1c1b0a Mon Sep 17 00:00:00 2001\nFrom: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\nDate: Wed, 25 Nov 2015 10:50:00 +0000\nSubject: [PATCH] mdrestore, scrub: do not do dynamic linking of libtool\n libraries\n\nAs explained in commit ece49daeff1a3cad765e106d678c608925c9d768, use\n-static-libtool-libs instead of -static to allow fallback to the dynamic\nlinking for libuuid only. Otherwise the build will fail like this:\n\nld: attempted static link of dynamic object `/usr/lib/libuuid.so'\n\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\n[Sent upstream: https://www.spinics.net/lists/xfs/msg36149.html]\n[baruch: update for v4.15.1; extend to include scrub]\nSigned-off-by: Baruch Siach <baruch@tkos.co.il>\n[matt: update for v4.16.1; adjusted libunistring -> libicu]\nSigned-off-by: Matt Weber <matthew.weber@rockwellcollins.com>\n---\n mdrestore/Makefile | 2 +-\n scrub/Makefile     | 2 +-\n 2 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/mdrestore/Makefile b/mdrestore/Makefile\nindex 136ae716d691..75ff1bad78e9 100644\n--- a/mdrestore/Makefile\n+++ b/mdrestore/Makefile\n@@ -10,7 +10,7 @@ CFILES = xfs_mdrestore.c\n \n LLDLIBS = $(LIBXFS) $(LIBFROG) $(LIBRT) $(LIBPTHREAD) $(LIBUUID)\n LTDEPENDENCIES = $(LIBXFS) $(LIBFROG)\n-LLDFLAGS = -static\n+LLDFLAGS = -static-libtool-libs\n \n default: depend $(LTCOMMAND)\n \ndiff --git a/scrub/Makefile b/scrub/Makefile\nindex 063279400262..949f6fd8ba94 100644\n--- a/scrub/Makefile\n+++ b/scrub/Makefile\n@@ -70,7 +70,7 @@ xfs_scrub.c\n \n LLDLIBS += $(LIBHANDLE) $(LIBFROG) $(LIBPTHREAD) $(LIBICU_LIBS) $(LIBRT)\n LTDEPENDENCIES += $(LIBHANDLE) $(LIBFROG)\n-LLDFLAGS = -static\n+LLDFLAGS = -static-libtool-libs\n \n ifeq ($(HAVE_MALLINFO),yes)\n LCFLAGS += -DHAVE_MALLINFO\n-- \n2.16.2\n\n"
  },
  {
    "path": "package/xfsprogs/0002-libxfs-do-not-try-to-run-the-crc32selftest.patch",
    "content": "From 3a77dfc54271059dcac305384bf6ace34fe1f3d3 Mon Sep 17 00:00:00 2001\nFrom: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nDate: Sun, 18 Dec 2016 15:37:27 +0100\nSubject: [PATCH] libxfs: do not try to run the crc32selftest\n\nEven though the crc32selftest is natively compiled (because it is to be\nexecuted), it fails in cross-compilation as the host may lack the\nrequired headers, like uuid/uuid.h (e.g. in a minimal environment).\n\nMoreover, running the crc32selftest natively is completely wrong,\nbecause it passing on the host does not mean it would still pass n the\ntarget (because endianness or bitness or alignment differences).\n\nSo, just disable running the crc32selftest altogether.\n\nNote that there's a remaining bug-in-hiding, because the crc32 table\ngenerator is natively built, but with the target CFLAGS.\n\nSigned-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\nSigned-off-by: \"Fabrice Fontaine\" <fontaine.fabrice@gmail.com>\n[Update for 4.18.0: crc32 has been moved from libxfs to libfrog]\n---\n libxfs/Makefile | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/libfrog/Makefile b/libxfs/Makefile\nindex 62608bd..e021625 100644\n--- a/libfrog/Makefile\n+++ b/libfrog/Makefile\n@@ -112,9 +112,9 @@ LTLIBS = $(LIBPTHREAD) $(LIBRT)\n # don't try linking xfs_repair with a debug libxfs.\n DEBUG = -DNDEBUG\n \n-LDIRT = gen_crc32table crc32table.h crc32selftest\n+LDIRT = gen_crc32table crc32table.h\n \n-default: crc32selftest ltdepend $(LTLIBRARY)\n+default: ltdepend $(LTLIBRARY)\n \n crc32table.h: gen_crc32table.c\n \t@echo \"    [CC]     gen_crc32table\"\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/xfsprogs/Config.in",
    "content": "comment \"xfsprogs needs a toolchain w/ threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_XFSPROGS\n\tbool \"xfsprogs\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_INIH\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\thelp\n\t  The XFS file system utilities and libraries\n\n\t  http://xfs.org\n"
  },
  {
    "path": "package/xfsprogs/xfsprogs.hash",
    "content": "# From https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/sha256sums.asc\nsha256  e04017e46d43e4d54b9a560fd7cea922520f8f6ef882404969d20cd4e5c790e9  xfsprogs-5.10.0.tar.xz\n\n# Hash for license files\nsha256  f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79  LICENSES/GPL-2.0\nsha256  0b9a4febcdee6de55872501d5c1a8f5d8b0d1650cd4d5351995ceb22e889f8ca  LICENSES/LGPL-2.1\n"
  },
  {
    "path": "package/xfsprogs/xfsprogs.mk",
    "content": "################################################################################\n#\n# xfsprogs\n#\n################################################################################\n\nXFSPROGS_VERSION = 5.10.0\nXFSPROGS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/fs/xfs/xfsprogs\nXFSPROGS_SOURCE = xfsprogs-$(XFSPROGS_VERSION).tar.xz\nXFSPROGS_LICENSE = GPL-2.0, GPL-2.0+, LGPL-2.1 (libhandle, few headers)\nXFSPROGS_LICENSE_FILES = LICENSES/GPL-2.0 LICENSES/LGPL-2.1\n\nXFSPROGS_DEPENDENCIES = inih util-linux\n\nXFSPROGS_CONF_ENV = ac_cv_header_aio_h=yes ac_cv_lib_rt_lio_listio=yes PLATFORM=\"linux\"\nXFSPROGS_CONF_OPTS = \\\n\t--enable-lib64=no \\\n\t--enable-gettext=no \\\n\tINSTALL_USER=root \\\n\tINSTALL_GROUP=root \\\n\t--enable-static\n\nifeq ($(BR2_PACKAGE_ICU),y)\nXFSPROGS_DEPENDENCIES += icu\nXFSPROGS_CONF_OPTS += --enable-libicu\nelse\nXFSPROGS_CONF_OPTS += --disable-libicu\nendif\n\nXFSPROGS_INSTALL_TARGET_OPTS = DIST_ROOT=$(TARGET_DIR) install\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/xinetd/0001-ar.patch",
    "content": "This patch changes all of the hard-coded invocations of \"ar\" to $(AR), to\nsupport a cross-compilation toolchain.\n\nThe content of this patch was copied from the OpenWrt project:\nhttps://dev.openwrt.org/browser/packages/net/xinetd/patches/001-ar.patch\n\nSigned-off-by: Danomi Manchego <danomimanchego123@gmail.com>\n\n--- a/libs/src/misc/Makefile.in\n+++ b/libs/src/misc/Makefile.in\n@@ -62,7 +62,7 @@\n \n \n $(LIBNAME): $(OBJECTS)\n-\tar r $@ $?\n+\t$(AR) r $@ $?\n \t$(RANLIB) $@\n \n install: $(LIBNAME)\n--- a/libs/src/portable/Makefile.in\n+++ b/libs/src/portable/Makefile.in\n@@ -57,7 +57,7 @@\n \n \n $(LIBNAME): $(OBJECTS)\n-\tar r $@ $?\n+\t$(AR) r $@ $?\n \t$(RANLIB) $@\n \n install: $(LIBNAME)\n--- a/libs/src/pset/Makefile.in\n+++ b/libs/src/pset/Makefile.in\n@@ -53,7 +53,7 @@\n \tmv $(LIBNAME) $(LIBDIR)/optimized\n \n $(LIBNAME): $(OBJECTS)\n-\tar r $@ $?\n+\t$(AR) r $@ $?\n \t$(RANLIB) $@\n \n install: $(LIBNAME)\n--- a/libs/src/sio/Makefile.in\n+++ b/libs/src/sio/Makefile.in\n@@ -52,7 +52,7 @@\n \t$(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)/optimized\n \n $(LIBNAME): $(OBJECTS)\n-\tar r $@ $?\n+\t$(AR) r $@ $?\n \t$(RANLIB) $@\n \n install: $(LIBNAME)\n--- a/libs/src/str/Makefile.in\n+++ b/libs/src/str/Makefile.in\n@@ -63,7 +63,7 @@\n \t$(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)-O\n \n $(LIBNAME): $(OBJECTS)\n-\tar r $@ $?\n+\t$(AR) r $@ $?\n \t$(RANLIB) $@\n \n LINT_IGNORE=possible pointer alignment|RCSid unused\n--- a/libs/src/xlog/Makefile.in\n+++ b/libs/src/xlog/Makefile.in\n@@ -58,7 +58,7 @@\n \t$(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)/optimized\n \n $(LIBNAME): $(OBJECTS)\n-\tar r $@ $?\n+\t$(AR) r $@ $?\n \t$(RANLIB) $@\n \n install: $(LIBNAME)\n"
  },
  {
    "path": "package/xinetd/0002-destdir.patch",
    "content": "This patch adds $(DESTDIR) to xinetd's installation paths, to support \ninstallation to a cross-compiled RFS area.\n\nThe content of this patch was inspired by the OpenWrt project:\nhttps://dev.openwrt.org/browser/packages/net/xinetd/patches/002-destdir.patch\n\nSigned-off-by: Danomi Manchego <danomimanchego123@gmail.com>\n\ndiff -urN xinetd-2.3.15.ORIG/Makefile.in xinetd-2.3.15/Makefile.in\n--- xinetd-2.3.15.ORIG/Makefile.in\t2007-09-20 13:01:52.000000000 -0400\n+++ xinetd-2.3.15/Makefile.in\t2012-06-18 10:20:00.540864388 -0400\n@@ -75,27 +75,27 @@\n \n install: build\n \tfor i in $(DAEMONDIR) $(BINDIR) $(MANDIR)/man5 $(MANDIR)/man8 ; do \\\n-\t   test -d $$i || mkdir -p $$i ; done\n-\t$(INSTALL_CMD) -m 755 xinetd/xinetd $(DAEMONDIR)\n-\t$(INSTALL_CMD) -m 755 xinetd/itox $(DAEMONDIR)\n-\t$(INSTALL_CMD) -m 755 $(SRCDIR)/xinetd/xconv.pl $(DAEMONDIR)\n-\t$(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.conf.man $(MANDIR)/man5/xinetd.conf.5\n-\t$(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.log.man $(MANDIR)/man8/xinetd.log.8\n-\t$(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.man $(MANDIR)/man8/xinetd.8\n-\t$(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/itox.8 $(MANDIR)/man8/itox.8\n-\t$(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xconv.pl.8 $(MANDIR)/man8/xconv.pl.8\n+\t   test -d $(DESTDIR)$$i || mkdir -p $(DESTDIR)$$i ; done\n+\t$(INSTALL_CMD) -m 755 xinetd/xinetd $(DESTDIR)$(DAEMONDIR)\n+\t$(INSTALL_CMD) -m 755 xinetd/itox $(DESTDIR)$(DAEMONDIR)\n+\t$(INSTALL_CMD) -m 755 $(SRCDIR)/xinetd/xconv.pl $(DESTDIR)$(DAEMONDIR)\n+\t$(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.conf.man $(DESTDIR)$(MANDIR)/man5/xinetd.conf.5\n+\t$(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.log.man $(DESTDIR)$(MANDIR)/man8/xinetd.log.8\n+\t$(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.man $(DESTDIR)$(MANDIR)/man8/xinetd.8\n+\t$(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/itox.8 $(DESTDIR)$(MANDIR)/man8/itox.8\n+\t$(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xconv.pl.8 $(DESTDIR)$(MANDIR)/man8/xconv.pl.8\n \t@echo \"You must put your xinetd.conf in /etc/xinetd.conf\"\n \t@echo \"There is a sample config file in xinetd/sample.conf and you can\"\n \t@echo \"use xconv.pl to convert your old inetd.conf file to an xinetd format\"\n \n uninstall:\n-\trm -f $(DAEMONDIR)/xinetd\n-\trm -f $(DAEMONDIR)/itox\n-\trm -f $(DAEMONDIR)/xconv.pl\n-\trm -f $(MANDIR)/man5/xinetd.conf.5\n-\trm -f $(MANDIR)/man8/xinetd.log.8\n-\trm -f $(MANDIR)/man8/xinetd.8\n-\trm -f $(MANDIR)/man8/itox.8\n+\trm -f $(DESTDIR)$(DAEMONDIR)/xinetd\n+\trm -f $(DESTDIR)$(DAEMONDIR)/itox\n+\trm -f $(DESTDIR)$(DAEMONDIR)/xconv.pl\n+\trm -f $(DESTDIR)$(MANDIR)/man5/xinetd.conf.5\n+\trm -f $(DESTDIR)$(MANDIR)/man8/xinetd.log.8\n+\trm -f $(DESTDIR)$(MANDIR)/man8/xinetd.8\n+\trm -f $(DESTDIR)$(MANDIR)/man8/itox.8\n  \n distclean: clean\n \trm -f config.cache config.log Makefile config.status xinetd/itox\n"
  },
  {
    "path": "package/xinetd/0003-rpc-fix.patch",
    "content": "This patch fixes compiling xinetd without RPC support.\n\nThe content of this patch was copied from the OpenWrt project:\nhttps://dev.openwrt.org/browser/packages/net/xinetd/patches/003-rpc_fix.patch\n\nSigned-off-by: Danomi Manchego <danomimanchego123@gmail.com>\n\n--- a/xinetd/confparse.c\n+++ b/xinetd/confparse.c\n@@ -745,7 +745,7 @@ static status_e check_entry( struct serv\n \t   }\n    }\n \n-/* #ifndef NO_RPC */\n+#ifndef NO_RPC\n #if defined(HAVE_RPC_RPCENT_H) || defined(HAVE_NETDB_H)\n    if ( SC_IS_RPC( scp ) && !SC_IS_UNLISTED( scp ) )\n    {\n@@ -759,6 +759,7 @@ static status_e check_entry( struct serv\n       SC_RPCDATA( scp )->rd_program_number = rep->r_number ;\n    }\n    else\n+#endif\n #endif   /* ! NO_RPC */\n    {\n        if ( !SC_IS_UNLISTED( scp ) ) \n"
  },
  {
    "path": "package/xinetd/0004-configure-rlim_t.patch",
    "content": "Have the configure script look for rlim_t in <sys/resource.h>\n\nThat's where POSIX says it should be. Some libcs will include its\ndefinition via <sys/types.h> as well, but musl doesn't.\n\nSigned-off-by: Maarten ter Huurne <maarten@treewalker.org>\n\n--- xinetd-2.3.15.orig/configure\t2007-09-20 16:58:27.000000000 +0200\n+++ xinetd-2.3.15/configure\t2014-09-16 17:20:22.787665449 +0200\n@@ -7909,7 +7909,7 @@\n cat confdefs.h >>conftest.$ac_ext\n cat >>conftest.$ac_ext <<_ACEOF\n /* end confdefs.h.  */\n-#include <sys/types.h>\n+#include <sys/resource.h>\n #if STDC_HEADERS\n #include <stdlib.h>\n #endif\n"
  },
  {
    "path": "package/xinetd/0005-CVE-2013-4342-xinetd-ignores-user-and-group-directiv.patch",
    "content": "From 91e2401a219121eae15244a6b25d2e79c1af5864 Mon Sep 17 00:00:00 2001\nFrom: Thomas Swan <thomas.swan@gmail.com>\nDate: Wed, 2 Oct 2013 23:17:17 -0500\nSubject: [PATCH] CVE-2013-4342: xinetd: ignores user and group directives for\n TCPMUX services\n\nOriginally reported to Debian in 2005 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=324678> and rediscovered <https://bugzilla.redhat.com/show_bug.cgi?id=1006100>, xinetd would execute TCPMUX services without dropping privilege to match the service configuration allowing the service to run with same privilege as the xinetd process (root).\n\nSigned-off-by: Peter Korsgaard <peter@korsgaard.com>\n---\n xinetd/builtins.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/xinetd/builtins.c b/xinetd/builtins.c\nindex 3b85579..34a5bac 100644\n--- a/xinetd/builtins.c\n+++ b/xinetd/builtins.c\n@@ -617,7 +617,7 @@ static void tcpmux_handler( const struct server *serp )\n    if( SC_IS_INTERNAL( scp ) ) {\n       SC_INTERNAL(scp, nserp);\n    } else {\n-      exec_server(nserp);\n+      child_process(nserp);\n    }\n }\n \n-- \n2.20.1\n\n"
  },
  {
    "path": "package/xinetd/Config.in",
    "content": "config BR2_PACKAGE_XINETD\n\tbool \"xinetd\"\n\tdepends on BR2_USE_MMU # fork()\n\thelp\n\t  xinetd is a secure replacement for inetd. It was originally\n\t  written by panos@cs.colorado.edu.\n\n\t  http://www.xinetd.org\n"
  },
  {
    "path": "package/xinetd/xinetd.hash",
    "content": "# locally computed\nsha256  620b25f4ab4d72fdf32b13797156ea40df2049f1c07e640177e5fec544e9a94c  xinetd-2.3.15.tar.gz\nsha256  2f3dd19831b1837f7360f80a7700a130c04a59e387d4359299d6df712308bbed  COPYRIGHT\n"
  },
  {
    "path": "package/xinetd/xinetd.mk",
    "content": "################################################################################\n#\n# xinetd\n#\n################################################################################\n\nXINETD_VERSION = 2.3.15\nXINETD_SITE = \\\n\t$(call github,xinetd-org,xinetd,xinetd-$(subst .,-,$(XINETD_VERSION)))\nXINETD_LICENSE = xinetd license\nXINETD_LICENSE_FILES = COPYRIGHT\nXINETD_CPE_ID_VENDOR = xinetd\n\n# 0005-CVE-2013-4342-xinetd-ignores-user-and-group-directiv.patch\nXINETD_IGNORE_CVES += CVE-2013-4342\n\nXINETD_CFLAGS = $(TARGET_CFLAGS)\n\n# Three cases here:\n#  1. We have libtirpc, use it by passing special flags\n#  2. We have native RPC support, use it, no need to pass special\n#     flags (so this case 2 is implicit and not visible below)\n#  3. We don't have RPC support, pass -DNO_RPC to disable it\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nXINETD_DEPENDENCIES += libtirpc host-pkgconf\nXINETD_CFLAGS += \"`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`\"\nXINETD_LIBS += \"`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`\"\nelse ifeq ($(BR2_TOOLCHAIN_HAS_NATIVE_RPC),)\nXINETD_CFLAGS += -DNO_RPC\nendif\n\nXINETD_CONF_ENV += \\\n\tCFLAGS=\"$(XINETD_CFLAGS)\" \\\n\tLIBS=\"$(XINETD_LIBS)\"\n\nXINETD_MAKE_OPTS = AR=\"$(TARGET_AR)\"\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/xl2tp/Config.in",
    "content": "config BR2_PACKAGE_XL2TP\n\tbool \"xl2tp\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBPCAP\n\thelp\n\t  Layer 2 Tunnelling Protocol (RFC2661).\n\n\t  xl2tpd is an open source implementation of the L2TP tunneling\n\t  protocol. xl2tpd is forked from l2tpd and is maintained by\n\t  Xelerance Corporation.\n\n\t  http://www.xelerance.com/software/xl2tpd/\n"
  },
  {
    "path": "package/xl2tp/xl2tp.hash",
    "content": "# locally computed\nsha256  c28608b315adb25c8bf9579c1d6ab52ab47c4c43b68a5ab63c5d039196fd180f  xl2tp-1.3.16.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  LICENSE\n"
  },
  {
    "path": "package/xl2tp/xl2tp.mk",
    "content": "################################################################################\n#\n# xl2tp\n#\n################################################################################\n\nXL2TP_VERSION = 1.3.16\nXL2TP_SITE = $(call github,xelerance,xl2tpd,v$(XL2TP_VERSION))\nXL2TP_DEPENDENCIES = libpcap\nXL2TP_LICENSE = GPL-2.0\nXL2TP_LICENSE_FILES = LICENSE\nXL2TP_SELINUX_MODULES = l2tp\n\nifeq ($(BR2_STATIC_LIBS),y)\nXL2TP_LDLIBS = LDLIBS=\"`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`\"\nendif\n\ndefine XL2TP_BUILD_CMDS\n\t$(SED) 's/ -O2 //' $(@D)/Makefile\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) $(XL2TP_LDLIBS) -C $(@D)\nendef\n\ndefine XL2TP_INSTALL_TARGET_CMDS\n\t$(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/xl2tp/xl2tpd",
    "content": "#!/bin/sh\n#\nPATH=/bin:/usr/bin:/sbin:/usr/sbin\nDAEMON=/usr/sbin/xl2tpd\nPIDFILE=/var/run/xl2tpd.pid\n\ntest -f $DAEMON || exit 0\n\ncase \"$1\" in\n  start)\n    start-stop-daemon -S  -p $PIDFILE -x $DAEMON -- -D &\n    ;;\n  stop)\n    start-stop-daemon -K  -p $PIDFILE -x $DAEMON\n    ;;\n  restart|force-reload)\n    start-stop-daemon -K  -p $PIDFILE -x $DAEMON \n    sleep 1\n    start-stop-daemon -S  -p $PIDFILE -x $DAEMON\n    ;;\n  *)\n    echo \"Usage: /etc/init.d/xl2tdp {start|stop|restart|force-reload}\"\n    exit 1\n    ;;\nesac\n\nexit 0\n"
  },
  {
    "path": "package/xml-security-c/0001-autoconf-variable-cache-option-for-getcwd-test.patch",
    "content": "From 9d14fad412a497fe83cfc6ab594ddc612512f02a Mon Sep 17 00:00:00 2001\nFrom: Matt Weber <matthew.weber@rockwellcollins.com>\nDate: Thu, 4 Jun 2020 20:34:11 -0500\nSubject: [PATCH] autoconf variable cache option for getcwd test\n\nThe cached variable allows cross compiled builds to successfully set the\ndesired default for this value without invoking a test.\n\nFixes:\nhttps://issues.apache.org/jira/browse/SANTUARIO-549\n\nSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>\n---\n configure.ac | 20 ++++++++++++--------\n 1 file changed, 12 insertions(+), 8 deletions(-)\n\ndiff --git a/configure.ac b/configure.ac\nindex b43d7a5..c3d4489 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -74,14 +74,18 @@ AC_CHECK_FUNCS([strcasecmp])\n \n # Check whether getcwd can dynamically allocate memory.\n AC_MSG_CHECKING([whether getcwd(NULL, 0) works])\n-AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>\n-     #include <unistd.h>],\n-[char *cwd = getcwd(NULL, 0);\n-return (cwd != NULL) ? EXIT_SUCCESS : EXIT_FAILURE;])],\n-     [AC_MSG_RESULT(yes)\n-      AC_DEFINE([XSEC_HAVE_GETCWD_DYN], [1],\n-         [Define to 1 if getcwd(NULL, 0) works])],\n-     [AC_MSG_RESULT(no)])\n+AC_CACHE_VAL([xml_cv_func_getcwd_null],\n+[AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>\n+     #include <unistd.h>\n+     char *cwd = getcwd(NULL, 0);\n+     return (cwd != NULL) ? EXIT_SUCCESS : EXIT_FAILURE;]])],\n+  [xml_cv_func_getcwd_null=yes],\n+  [xml_cv_func_getcwd_null=no])])\n+AC_MSG_RESULT([$xml_cv_func_getcwd_null])\n+if test $xml_cv_func_getcwd_null = yes; then\n+AC_DEFINE([XSEC_HAVE_GETCWD_DYN], [1],\n+  [Define to 1 if getcwd(NULL, 0) works])\n+fi\n \n AC_LANG(C++)\n \n-- \n2.17.1\n\n"
  },
  {
    "path": "package/xml-security-c/Config.in",
    "content": "config BR2_PACKAGE_XML_SECURITY_C\n\tbool \"xml-security-c\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # xerces\n\tdepends on !BR2_STATIC_LIBS # xerces\n\tdepends on BR2_USE_WCHAR # xerces\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_DES if BR2_PACKAGE_LIBOPENSSL\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_XERCES\n\thelp\n\t  The xml-security-c library is a C++ implementation of\n\t  the XML Digital Signature and Encryption specifications.\n\n\t  https://santuario.apache.org/cindex.html\n\ncomment \"xml-security-c needs a toolchain w/ C++, wchar, dynamic library, gcc >= 4.7\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \\\n\t\tBR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/xml-security-c/xml-security-c.hash",
    "content": "# From http://www.apache.org/dist/santuario/c-library/xml-security-c-2.0.2.tar.gz.sha256\nsha256  c303a2b08cb9ca0f5594adcbb83829b1e793175d7114a82f7d78def8bb2e30df  xml-security-c-2.0.2.tar.gz\nsha256  c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4  LICENSE.txt\n"
  },
  {
    "path": "package/xml-security-c/xml-security-c.mk",
    "content": "################################################################################\n#\n# xml-security-c\n#\n################################################################################\n\nXML_SECURITY_C_VERSION = 2.0.2\nXML_SECURITY_C_SITE = http://archive.apache.org/dist/santuario/c-library\nXML_SECURITY_C_LICENSE = Apache-2.0\nXML_SECURITY_C_LICENSE_FILES = LICENSE.txt\nXML_SECURITY_C_DEPENDENCIES = openssl xerces\nXML_SECURITY_C_INSTALL_STAGING = YES\n\nXML_SECURITY_C_CONF_ENV = \\\n\txml_cv_func_getcwd_null=yes \\\n\tCXXFLAGS=\"$(TARGET_CXXFLAGS) -std=c++11\"\n\n# Patched configure.ac\nXML_SECURITY_C_AUTORECONF = YES\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/xmlstarlet/Config.in",
    "content": "config BR2_PACKAGE_XMLSTARLET\n\tbool \"xmlstarlet\"\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_LIBXSLT\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  Command Line XML Toolkit\n\n\t  http://xmlstar.sourceforge.net/\n"
  },
  {
    "path": "package/xmlstarlet/xmlstarlet.hash",
    "content": "# From https://sourceforge.net/projects/xmlstar/files/xmlstarlet/1.6.1/\nsha1\t87bb104f546caca71b9540807c5b2738944cb219\txmlstarlet-1.6.1.tar.gz\nmd5\tf3c5dfa3b1a2ee06cd57c255cc8b70a0\t\txmlstarlet-1.6.1.tar.gz\n# Locally computed\nsha256  6641cc5b00c1651fa22175f34efd01695e64a348b1ba07048538276f44866862  COPYING\n"
  },
  {
    "path": "package/xmlstarlet/xmlstarlet.mk",
    "content": "################################################################################\n#\n# xmlstarlet\n#\n################################################################################\n\nXMLSTARLET_VERSION = 1.6.1\nXMLSTARLET_SITE = http://downloads.sourceforge.net/project/xmlstar/xmlstarlet/$(XMLSTARLET_VERSION)\nXMLSTARLET_LICENSE = MIT\nXMLSTARLET_LICENSE_FILES = COPYING\n\nXMLSTARLET_DEPENDENCIES += libxml2 libxslt \\\n\t$(if $(BR2_PACKAGE_LIBICONV),libiconv)\n\nXMLSTARLET_CONF_OPTS += \\\n\t--with-libxml-prefix=$(STAGING_DIR)/usr \\\n\t--with-libxslt-prefix=$(STAGING_DIR)/usr \\\n\t--with-libiconv-prefix=$(STAGING_DIR)/usr\n\nifeq ($(BR2_STATIC_LIBS),y)\nXMLSTARLET_CONF_OPTS += --enable-static-libs\nXMLSTARLET_CONF_ENV = LIBS=\"`$(PKG_CONFIG_HOST_BINARY) --libs libxml-2.0 libexslt`\"\nelse\nXMLSTARLET_CONF_OPTS += --disable-static-libs\nendif\n\nHOST_XMLSTARLET_DEPENDENCIES += host-libxml2 host-libxslt\n\nHOST_XMLSTARLET_CONF_OPTS += \\\n\t--with-libxml-prefix=$(HOST_DIR) \\\n\t--with-libxslt-prefix=$(HOST_DIR)\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/xmrig/Config.in",
    "content": "config BR2_PACKAGE_XMRIG\n\tbool \"xmrig\"\n\t# archs officially supported by upstream\n\tdepends on BR2_aarch64 || BR2_x86_64 || BR2_i386\n\tdepends on BR2_USE_MMU # libuv\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv\n\t# xmrig needs fenv.h which is not provided by uclibc\n\tdepends on !BR2_TOOLCHAIN_USES_UCLIBC\n\tdepends on !BR2_STATIC_LIBS # libuv\n\tselect BR2_PACKAGE_LIBUV\n\thelp\n\t  RandomX, CryptoNight, AstroBWT and Argon2 CPU/GPU miner.\n\n\t  https://xmrig.com\n\ncomment \"xmrig needs a glibc or musl toolchain w/ NPTL, dynamic library\"\n\tdepends on BR2_aarch64 || BR2_x86_64 || BR2_i386\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \\\n\t\tBR2_TOOLCHAIN_USES_UCLIBC || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/xmrig/xmrig.hash",
    "content": "# Locally calculated\nsha256  27a6c34ee1bec60f8c49a5e2b97223971f579a26a4632fb64c4a4556b3bb04ae  xmrig-6.15.2.tar.gz\nsha256  589ed823e9a84c56feb95ac58e7cf384626b9cbf4fda2a907bc36e103de1bad2  LICENSE\n"
  },
  {
    "path": "package/xmrig/xmrig.mk",
    "content": "################################################################################\n#\n# xmrig\n#\n################################################################################\n\nXMRIG_VERSION = 6.15.2\nXMRIG_SITE = $(call github,xmrig,xmrig,v$(XMRIG_VERSION))\nXMRIG_LICENSE = GPL-3.0+\nXMRIG_LICENSE_FILES = LICENSE\nXMRIG_DEPENDENCIES = libuv\nXMRIG_CONF_OPTS = -DWITH_CUDA=OFF\n\nifeq ($(BR2_PACKAGE_HAS_LIBOPENCL),y)\nXMRIG_CONF_OPTS += -DWITH_OPENCL=ON\nXMRIG_DEPENDENCIES += libopencl\nelse\nXMRIG_CONF_OPTS += -DWITH_OPENCL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_HWLOC),y)\nXMRIG_CONF_OPTS += -DWITH_HWLOC=ON\nXMRIG_DEPENDENCIES += hwloc\nelse\nXMRIG_CONF_OPTS += -DWITH_HWLOC=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nXMRIG_CONF_OPTS += -DWITH_TLS=ON\nXMRIG_DEPENDENCIES += openssl\nelse\nXMRIG_CONF_OPTS += -DWITH_TLS=OFF\nXMRIG_SUFFIX = -notls\nendif\n\n# Upstream provides no installation rule:\n#   *** No rule to make target 'install/fast'.  Stop.\ndefine XMRIG_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/xmrig$(XMRIG_SUFFIX) \\\n\t\t$(TARGET_DIR)/usr/bin/xmrig$(XMRIG_SUFFIX)\nendef\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/xorcurses/Config.in",
    "content": "config BR2_PACKAGE_XORCURSES\n\tbool \"xorcurses\"\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  XorCurses is a game remake of the 8-bit game 'Xor'. Your task\n\t  is to roam around a series of mazes where you have to collect\n\t  all blue masks before finding the exit. Note that the game\n\t  needs a terminal with colors, i.e. make sure that the TERM\n\t  environment variable is set to \"linux\" (\"vt100\" won't work).\n\n\t  https://github.com/jwm-art-net/XorCurses/\n"
  },
  {
    "path": "package/xorcurses/xorcurses.hash",
    "content": "# Locally calculated\nsha256  6c60a41b9a74ecd5f6ded337b9982e81eaf7b31a654a4a32b219e3a2ff638ae3  xorcurses-04b664826c5bd30dd483f6a5c8c189ef97e255da.tar.gz\nsha256  8632a67e5a76be4cdf7fd0fc6509e21bd6c647183bd9d2325310d5098c652a3a  README\n"
  },
  {
    "path": "package/xorcurses/xorcurses.mk",
    "content": "################################################################################\n#\n# xorcurses\n#\n################################################################################\n\nXORCURSES_VERSION = 04b664826c5bd30dd483f6a5c8c189ef97e255da\nXORCURSES_SITE = $(call github,jwm-art-net,XorCurses,$(XORCURSES_VERSION))\nXORCURSES_DEPENDENCIES = ncurses\nXORCURSES_LICENSE = GPL-3.0\nXORCURSES_LICENSE_FILES = README\n\ndefine XORCURSES_BUILD_CMDS\n\t$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(TARGET_CFLAGS) -std=gnu99 \\\n\t\t\t-DDATADIR='\\\"/usr/share/xorcurses\\\"' \\\n\t\t\t-DVERSION='\\\"$(XORCURSES_VERSION)\\\"'\"\nendef\n\ndefine XORCURSES_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/xorcurses $(TARGET_DIR)/usr/bin/xorcurses\n\tmkdir -p $(TARGET_DIR)/usr/share/xorcurses/maps\n\t$(INSTALL) -D -m 0644 $(@D)/maps/*.xcm \\\n\t\t$(TARGET_DIR)/usr/share/xorcurses/maps/\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/xorriso/Config.in",
    "content": "config BR2_PACKAGE_XORRISO\n\tbool \"xorriso\"\n\tdepends on BR2_USE_WCHAR\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE\n\thelp\n\t  xorriso copies file objects from POSIX compliant\n\t  filesystems into Rock Ridge enhanced ISO 9660 filesystems\n\t  and allows session-wise manipulation of such filesystems.\n\t  It can load the management information of existing ISO\n\t  images and it writes the session results to optical media\n\t  or to filesystem objects.\n\n\t  Vice versa xorriso is able to copy file objects out of ISO\n\t  9660 filesystems.\n\n\t  https://www.gnu.org/software/xorriso\n\ncomment \"xorriso needs a toolchain w/ wchar, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS\n"
  },
  {
    "path": "package/xorriso/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_XORRISO\n\tbool \"host xorriso\"\n\thelp\n\t  xorriso copies file objects from POSIX compliant\n\t  filesystems into Rock Ridge enhanced ISO 9660 filesystems\n\t  and allows session-wise manipulation of such filesystems.\n\t  It can load the management information of existing ISO\n\t  images and it writes the session results to optical media\n\t  or to filesystem objects.\n\n\t  Vice versa xorriso is able to copy file objects out of ISO\n\t  9660 filesystems.\n\n\t  https://www.gnu.org/software/xorriso\n"
  },
  {
    "path": "package/xorriso/xorriso.hash",
    "content": "# Locally computed\nsha256  3ec7393d4a9dcbf5f74309c28a415f55227ec62770b95ae993ac8d7a3b152972  xorriso-1.5.4.pl02.tar.gz\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING\nsha256  72e99e72cd68f226415e5d898f3b38e24ae7991ed038ed72d789fff5b060f028  COPYRIGHT\n"
  },
  {
    "path": "package/xorriso/xorriso.mk",
    "content": "################################################################################\n#\n# xorriso\n#\n################################################################################\n\nXORRISO_VERSION = 1.5.4.pl02\nXORRISO_SITE = $(BR2_GNU_MIRROR)/xorriso\nXORRISO_LICENSE = GPL-3.0+\nXORRISO_LICENSE_FILES = COPYING COPYRIGHT\n\n# Disable everything until we actually need those features, and add the correct\n# host libraries\nHOST_XORRISO_CONF_OPTS = \\\n\t--enable-zlib \\\n\t--disable-xattr-h-pref-attr \\\n\t--disable-libbz2 \\\n\t--disable-libcdio \\\n\t--disable-libreadline \\\n\t--disable-libedit \\\n\t--disable-libacl\n\nHOST_XORRISO_DEPENDENCIES = host-zlib\n\n# libcdio doesn't make sense for Linux\n# http://lists.gnu.org/archive/html/bug-xorriso/2017-04/msg00004.html\nXORRISO_CONF_OPTS = --disable-libcdio\n\n# we need sys/xattr.h\nXORRISO_CONF_OPTS += \\\n\t--disable-xattr-h-pref-attr\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nXORRISO_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nXORRISO_DEPENDENCIES += readline\nXORRISO_CONF_OPTS += --enable-libreadline\nelse\nXORRISO_CONF_OPTS += --disable-libreadline\nendif\n\nifeq ($(BR2_PACKAGE_ACL),y)\nXORRISO_DEPENDENCIES += acl\nXORRISO_CONF_OPTS += --enable-libacl\nelse\nXORRISO_CONF_OPTS += --disable-libacl\nendif\n\nifeq ($(BR2_PACKAGE_ATTR),y)\nXORRISO_DEPENDENCIES += attr\nXORRISO_CONF_OPTS += --enable-xattr\nelse\nXORRISO_CONF_OPTS += --disable-xattr\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nXORRISO_DEPENDENCIES += zlib\nXORRISO_CONF_OPTS += --enable-zlib\nelse\nXORRISO_CONF_OPTS += --disable-zlib\nendif\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nXORRISO_DEPENDENCIES += bzip2\nXORRISO_CONF_OPTS += --enable-libbz2\nelse\nXORRISO_CONF_OPTS += --disable-libbz2\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nXORRISO_CONF_OPTS += --enable-jtethreads\nelse\nXORRISO_CONF_OPTS += --disable-jtethreads\nendif\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/xr819-xradio/Config.in",
    "content": "config BR2_PACKAGE_XR819_XRADIO\n\tbool \"xr819-xradio\"\n\tdepends on BR2_LINUX_KERNEL\n\thelp\n\t  Wireless driver for SDIO WiFi chip XR819\n\n\t  https://github.com/fifteenhex/xradio\n\ncomment \"xr819-xradio driver needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n"
  },
  {
    "path": "package/xr819-xradio/xr819-xradio.hash",
    "content": "# Locally computed\nsha256 5900821a777b9008d7cf9b8128e0cb75a4623ecb608b45438e17c7a056cde1bf xr819-xradio-6bf0e2e21c80456e2a3d4ad1267caecde7165871.tar.gz\n# Locally computed\nsha256 db296f2f7f35bca3a174efb0eb392b3b17bd94b341851429a3dff411b1c2fc73 LICENSE\n"
  },
  {
    "path": "package/xr819-xradio/xr819-xradio.mk",
    "content": "################################################################################\n#\n# xr819-xradio\n#\n################################################################################\n\nXR819_XRADIO_VERSION = 6bf0e2e21c80456e2a3d4ad1267caecde7165871\nXR819_XRADIO_SITE = $(call github,fifteenhex,xradio,$(XR819_XRADIO_VERSION))\nXR819_XRADIO_LICENSE = GPL-2.0\nXR819_XRADIO_LICENSE_FILES = LICENSE\n\n$(eval $(kernel-module))\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/xscreensaver/Config.in",
    "content": "config BR2_PACKAGE_XSCREENSAVER\n\tbool \"xscreensaver\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_INSTALL_LIBSTDCPP # libgtk2 -> pango\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # gdk-pixbuf, libgtk2 -> glib2\n\tdepends on BR2_USE_WCHAR # gdk-pixbuf, libgtk2 -> glib2\n\tdepends on BR2_USE_MMU # gdk-pixbuf, libgtk2 -> glib2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # libgtk2 -> pango -> harfbuzz\n\tselect BR2_PACKAGE_GDK_PIXBUF\n\tselect BR2_PACKAGE_LIBGLU if BR2_PACKAGE_HAS_LIBGL\n\tselect BR2_PACKAGE_LIBGTK2\n\tselect BR2_PACKAGE_LIBXML2\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\thelp\n\t  XScreenSaver is the standard screen saver collection shipped\n\t  on most Linux and Unix systems running the X11 Window\n\t  System.\n\n\t  On X11 systems, XScreenSaver is two things: it is both a\n\t  large collection of screen savers; and it is also the\n\t  framework for blanking and locking the screen.\n\n\t  http://www.jwz.org/xscreensaver/\n\ncomment \"xscreensaver needs a toolchain w/ wchar, C++, threads, gcc >= 4.8\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \\\n\t\t!BR2_USE_WCHAR\n"
  },
  {
    "path": "package/xscreensaver/xscreensaver.hash",
    "content": "# Locally calculated\nsha256  7016df6736ba0126a68c1f35abcf411a695fe93bc01a18ebd9df46c9a9f4d50d  xscreensaver-5.45.tar.gz\nsha256  8a03451ba5c4c9af669b53e47e50c38c149b9e152d3d627809b962da7b760bbd  hacks/screenhack.h\nsha256  56db580415bb313a4a82c5e08f106304904d15d42faf8e6ab14b34e14e2087a5  hacks/glx/chessmodels.h\n"
  },
  {
    "path": "package/xscreensaver/xscreensaver.mk",
    "content": "################################################################################\n#\n# xscreensaver\n#\n################################################################################\n\nXSCREENSAVER_VERSION = 5.45\nXSCREENSAVER_SITE = https://www.jwz.org/xscreensaver\n\n# N.B. GPL-2.0+ code (in the hacks/glx subdirectory) is not currently built.\nXSCREENSAVER_LICENSE = MIT-like, GPL-2.0+\nXSCREENSAVER_LICENSE_FILES = hacks/screenhack.h hacks/glx/chessmodels.h\nXSCREENSAVER_CPE_ID_VENDOR = xscreensaver_project\nXSCREENSAVER_SELINUX_MODULES = xdg xscreensaver xserver\n\nXSCREENSAVER_DEPENDENCIES = \\\n\tgdk-pixbuf \\\n\tjpeg \\\n\tlibgtk2 \\\n\tlibxml2 \\\n\txlib_libX11 \\\n\txlib_libXt \\\n\t$(TARGET_NLS_DEPENDENCIES) \\\n\thost-intltool\n\n# otherwise we end up with host include/library dirs passed to the\n# compiler/linker\nXSCREENSAVER_CONF_OPTS = \\\n\t--includedir=$(STAGING_DIR)/usr/include \\\n\t--libdir=$(STAGING_DIR)/usr/lib\n\nifeq ($(BR2_PACKAGE_HAS_LIBGL),y)\nXSCREENSAVER_CONF_OPTS += --with-gl=yes\nXSCREENSAVER_DEPENDENCIES += libgl libglu\nelse\nXSCREENSAVER_CONF_OPTS += --with-gl=no\nendif\n\nifeq ($(BR2_PACKAGE_LIBPNG),y)\nXSCREENSAVER_CONF_OPTS += --with-png=yes\nXSCREENSAVER_DEPENDENCIES += libpng\nelse\nXSCREENSAVER_CONF_OPTS += --with-png=no\nendif\n\nifeq ($(BR2_PACKAGE_SYSTEMD),y)\nXSCREENSAVER_CONF_OPTS += --with-systemd=yes\nXSCREENSAVER_DEPENDENCIES += systemd\nelse\nXSCREENSAVER_CONF_OPTS += --with-systemd=no\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y)\nXSCREENSAVER_CONF_OPTS += --with-xft=yes\nXSCREENSAVER_DEPENDENCIES += xlib_libXft\nelse\nXSCREENSAVER_CONF_OPTS += --with-xft=no\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXI),y)\nXSCREENSAVER_CONF_OPTS += --with-xinput-ext=yes\nXSCREENSAVER_DEPENDENCIES += xlib_libXi\nelse\nXSCREENSAVER_CONF_OPTS += --with-xinput-ext=no\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nXSCREENSAVER_CONF_OPTS += --with-xinerama-ext=yes\nXSCREENSAVER_DEPENDENCIES += xlib_libXinerama\nelse\nXSCREENSAVER_CONF_OPTS += --with-xinerama-ext=no\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)\nXSCREENSAVER_CONF_OPTS += --with-randr-ext=yes\nXSCREENSAVER_DEPENDENCIES += xlib_libXrandr\nelse\nXSCREENSAVER_CONF_OPTS += --with-randr-ext=no\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y)\nXSCREENSAVER_CONF_OPTS += --with-xf86vmode-ext=yes\nXSCREENSAVER_DEPENDENCIES += xlib_libXxf86vm\nelse\nXSCREENSAVER_CONF_OPTS += --with-xf86vmode-ext=no\nendif\n\nXSCREENSAVER_INSTALL_TARGET_OPTS = install_prefix=\"$(TARGET_DIR)\" install\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/xtables-addons/Config.in",
    "content": "comment \"xtables-addons needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\ncomment \"xtables-addons needs a toolchain w/ dynamic library, threads\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS\n\nconfig BR2_PACKAGE_XTABLES_ADDONS\n\tbool \"xtables-addons\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS # extensions are .so\n\tselect BR2_PACKAGE_IPTABLES\n\tselect BR2_LINUX_NEEDS_MODULES # not using kernel-module infra\n\thelp\n\t  Xtables-addons is the successor to patch-o-matic(-ng).\n\t  Likewise, it contains extensions that were not, or are not\n\t  yet, accepted in the main kernel/iptables packages.\n\n\t  https://inai.de/projects/xtables-addons/\n"
  },
  {
    "path": "package/xtables-addons/xtables-addons.hash",
    "content": "# Locally calculated\nsha256  2a640535f209ec59467b8c8b4343b446801a21a112a3fc189818d6e2697f5cf1  xtables-addons-3.17.tar.xz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  LICENSE\n"
  },
  {
    "path": "package/xtables-addons/xtables-addons.mk",
    "content": "################################################################################\n#\n# xtables-addons\n#\n################################################################################\n\nXTABLES_ADDONS_VERSION = 3.17\nXTABLES_ADDONS_SOURCE = xtables-addons-$(XTABLES_ADDONS_VERSION).tar.xz\nXTABLES_ADDONS_SITE = https://inai.de/files/xtables-addons\nXTABLES_ADDONS_DEPENDENCIES = iptables linux host-pkgconf\nXTABLES_ADDONS_LICENSE = GPL-2.0+\nXTABLES_ADDONS_LICENSE_FILES = LICENSE\n\nXTABLES_ADDONS_CONF_OPTS = \\\n\t--with-kbuild=\"$(LINUX_DIR)\" \\\n\t--with-xtables=\"$(STAGING_DIR)/usr\" \\\n\t--with-xtlibdir=\"/usr/lib/xtables\"\n\n# geoip helpers need perl with modules and unzip so disable\ndefine XTABLES_ADDONS_DISABLE_GEOIP_HELPERS\n\t$(SED) 's/ geoip//' $(@D)/Makefile.in\nendef\nXTABLES_ADDONS_POST_PATCH_HOOKS += XTABLES_ADDONS_DISABLE_GEOIP_HELPERS\n\ndefine XTABLES_ADDONS_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS)\nendef\n\ndefine XTABLES_ADDONS_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) DESTDIR=\"$(TARGET_DIR)\" install\nendef\n\ndefine XTABLES_ADDONS_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_ADVANCED)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_MARK)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_NF_NAT)\nendef\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/xterm/Config.in",
    "content": "config BR2_PACKAGE_XTERM\n\tbool \"xterm\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_NCURSES\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\thelp\n\t  xterm terminal emulator\n\n\t  http://invisible-island.net/xterm/\n"
  },
  {
    "path": "package/xterm/xterm.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  27f1a8b1c756e269fd5684e60802b545f0be9b36b8b5d6bdbc840c6b000dc51f  xterm-367.tgz\n# Locally calculated\nsha256  dfb668cc977e24649500f3cc54de3e2b793928d210715a445ab1227930b07ba6  COPYING\n"
  },
  {
    "path": "package/xterm/xterm.mk",
    "content": "################################################################################\n#\n# xterm\n#\n################################################################################\n\nXTERM_VERSION = 367\nXTERM_SOURCE = xterm-$(XTERM_VERSION).tgz\nXTERM_SITE = http://invisible-mirror.net/archives/xterm\nXTERM_DEPENDENCIES = ncurses xlib_libXaw host-pkgconf\nXTERM_LICENSE = MIT\nXTERM_LICENSE_FILES = COPYING\nXTERM_CPE_ID_VENDOR = invisible-island\nXTERM_CONF_OPTS = --enable-256-color \\\n\t--x-includes=$(STAGING_DIR)/usr/include \\\n\t--x-libraries=$(STAGING_DIR)/usr/lib\n\n# Avoid freetype2 path poisoning by imake\nXTERM_CONF_ENV = ac_cv_path_IMAKE=\"\"\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y)\nXTERM_DEPENDENCIES += xlib_libXft\nXTERM_CONF_OPTS += --enable-freetype \\\n\t--with-freetype-config=auto\nelse\nXTERM_CONF_OPTS += --disable-freetype\nendif\n\nifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)\nXTERM_DEPENDENCIES += xlib_libXinerama\nXTERM_CONF_OPTS += --with-xinerama\nelse\nXTERM_CONF_OPTS += --without-xinerama\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/xutil_util-macros/Config.in",
    "content": "config BR2_PACKAGE_XUTIL_UTIL_MACROS\n\tbool \"util-macros\"\n\thelp\n\t  No description available\n"
  },
  {
    "path": "package/xutil_util-macros/xutil_util-macros.hash",
    "content": "# From https://lists.x.org/archives/xorg-announce/2021-January/003069.html\nsha256  0f812e6e9d2786ba8f54b960ee563c0663ddbe2434bf24ff193f5feab1f31971  util-macros-1.19.3.tar.bz2\nsha512  b9c7398a912c688a782eab5b1e0f6da2df11a430775c5c98fc3269f73a665de6eeb60d300a849e38d345714a6e51f74e9334cb6039767304cca4b93d823a53a2  util-macros-1.19.3.tar.bz2\n# Locally computed\nsha256 489b630a75e3255485732eae3d50ff4d29d3feb66760bb3acb04f897e4d9e375  COPYING\n"
  },
  {
    "path": "package/xutil_util-macros/xutil_util-macros.mk",
    "content": "################################################################################\n#\n# xutil_util-macros\n#\n################################################################################\n\nXUTIL_UTIL_MACROS_VERSION = 1.19.3\nXUTIL_UTIL_MACROS_SOURCE = util-macros-$(XUTIL_UTIL_MACROS_VERSION).tar.bz2\nXUTIL_UTIL_MACROS_SITE = http://xorg.freedesktop.org/releases/individual/util\nXUTIL_UTIL_MACROS_LICENSE = MIT\nXUTIL_UTIL_MACROS_LICENSE_FILES = COPYING\n\nXUTIL_UTIL_MACROS_INSTALL_STAGING = YES\nXUTIL_UTIL_MACROS_INSTALL_TARGET = NO\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/xvisor/0001-fix-build-with-gcc-10.patch",
    "content": "From 8458abb357cd981f55d730ec2d74459a3042e571 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Tue, 6 Oct 2020 21:52:20 +0200\nSubject: [PATCH] fix build with gcc 10\n\nDefine variables in header files as extern to avoid the following build failure\nwith gcc 10 (which defaults to -fno-common):\n\n/home/giuliobenetti/autobuild/run/instance-3/output-1/host/bin/arm-buildroot-linux-gnueabihf-ld:\n/home/giuliobenetti/autobuild/run/instance-3/output-1/build/xvisor-0.3.0/build/drivers/mmc/core/mmc.o:/home/giuliobenetti/autobuild/run/instance-3/output-1/build/xvisor-0.3.0/drivers/mmc/core/core.h:67:\nmultiple definition of `sdio_func_type';\n/home/giuliobenetti/autobuild/run/instance-3/output-1/build/xvisor-0.3.0/build/drivers/mmc/core/core.o:/home/giuliobenetti/autobuild/run/instance-3/output-1/build/xvisor-0.3.0/drivers/mmc/core/core.h:67:\nfirst defined here\n\nFixes:\n - http://autobuild.buildroot.org/results/b6070c0721b33824e71833ce53423979980aa598\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/xvisor/xvisor/pull/125]\n---\n drivers/mmc/core/core.h    |  2 +-\n emulators/display/drawfn.h | 10 +++++-----\n 2 files changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h\nindex d75d135a..e2ca3141 100644\n--- a/drivers/mmc/core/core.h\n+++ b/drivers/mmc/core/core.h\n@@ -64,7 +64,7 @@ int mmc_go_idle(struct mmc_host *host);\n  * Note: Must be called with host->lock held.\n  */\n extern struct vmm_bus sdio_bus_type;\n-struct vmm_device_type sdio_func_type;\n+extern struct vmm_device_type sdio_func_type;\n \n int __sdio_attach(struct mmc_host *host);\n \ndiff --git a/emulators/display/drawfn.h b/emulators/display/drawfn.h\nindex f9163cff..385deaf6 100644\n--- a/emulators/display/drawfn.h\n+++ b/emulators/display/drawfn.h\n@@ -69,14 +69,14 @@ typedef void (*drawfn)(struct vmm_surface *,\n \t\t\t\t DRAWFN_ORDER_MAX * \\\n \t\t\t\t DRAWFN_FORMAT_MAX)\n \n-drawfn drawfn_surface_fntable_8[DRAWFN_FNTABLE_SIZE];\n+extern drawfn drawfn_surface_fntable_8[DRAWFN_FNTABLE_SIZE];\n \n-drawfn drawfn_surface_fntable_15[DRAWFN_FNTABLE_SIZE];\n+extern drawfn drawfn_surface_fntable_15[DRAWFN_FNTABLE_SIZE];\n \n-drawfn drawfn_surface_fntable_16[DRAWFN_FNTABLE_SIZE];\n+extern drawfn drawfn_surface_fntable_16[DRAWFN_FNTABLE_SIZE];\n \n-drawfn drawfn_surface_fntable_24[DRAWFN_FNTABLE_SIZE];\n+extern drawfn drawfn_surface_fntable_24[DRAWFN_FNTABLE_SIZE];\n \n-drawfn drawfn_surface_fntable_32[DRAWFN_FNTABLE_SIZE];\n+extern drawfn drawfn_surface_fntable_32[DRAWFN_FNTABLE_SIZE];\n \n #endif\n-- \n2.28.0\n\n"
  },
  {
    "path": "package/xvisor/0002-psmouse-back.c-fix-build-with-gcc-11.patch",
    "content": "From 0e07e82121697d99470a147eadad9a708889c4df Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Thu, 2 Sep 2021 18:13:03 +0200\nSubject: [PATCH] psmouse-back.c: fix build with gcc 11\n\nFix the following build failures with gcc 11 by defining inline\nfunctions as static:\n\n/home/buildroot/autobuild/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/11.1.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: /home/buildroot/autobuild/instance-3/output-1/build/xvisor-0.3.0/build/drivers/drivers.o: in function `psmouse_extensions':\n/home/buildroot/autobuild/instance-3/output-1/build/xvisor-0.3.0/drivers/input/mouse/psmouse-base.c:783: undefined reference to `lifebook_detect'\n/home/buildroot/autobuild/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/11.1.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: /home/buildroot/autobuild/instance-3/output-1/build/xvisor-0.3.0/drivers/input/mouse/psmouse-base.c:783: undefined reference to `alps_detect'\n/home/buildroot/autobuild/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/11.1.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: /home/buildroot/autobuild/instance-3/output-1/build/xvisor-0.3.0/drivers/input/mouse/psmouse-base.c:783: undefined reference to `ps2pp_init'\n/home/buildroot/autobuild/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/11.1.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: /home/buildroot/autobuild/instance-3/output-1/build/xvisor-0.3.0/drivers/input/mouse/psmouse-base.c:783: undefined reference to `trackpoint_detect'\n/home/buildroot/autobuild/instance-3/output-1/host/lib/gcc/arm-buildroot-linux-gnueabihf/11.1.0/../../../../arm-buildroot-linux-gnueabihf/bin/ld: /home/buildroot/autobuild/instance-3/output-1/build/xvisor-0.3.0/drivers/input/mouse/psmouse-base.c:783: undefined reference to `fsp_detect'\n\nFixes:\n - http://autobuild.buildroot.org/results/69062b9c80567d135edd48890165e69881cf7295\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n drivers/input/mouse/alps.h       | 4 ++--\n drivers/input/mouse/lifebook.h   | 6 +++---\n drivers/input/mouse/logips2pp.h  | 2 +-\n drivers/input/mouse/sentelic.h   | 4 ++--\n drivers/input/mouse/trackpoint.h | 2 +-\n 5 files changed, 9 insertions(+), 9 deletions(-)\n\ndiff --git a/drivers/input/mouse/alps.h b/drivers/input/mouse/alps.h\nindex ae1ac354..acc1e89e 100644\n--- a/drivers/input/mouse/alps.h\n+++ b/drivers/input/mouse/alps.h\n@@ -51,11 +51,11 @@ struct alps_data {\n int alps_detect(struct psmouse *psmouse, bool set_properties);\n int alps_init(struct psmouse *psmouse);\n #else\n-inline int alps_detect(struct psmouse *psmouse, bool set_properties)\n+static inline int alps_detect(struct psmouse *psmouse, bool set_properties)\n {\n \treturn -ENOSYS;\n }\n-inline int alps_init(struct psmouse *psmouse)\n+static inline int alps_init(struct psmouse *psmouse)\n {\n \treturn -ENOSYS;\n }\ndiff --git a/drivers/input/mouse/lifebook.h b/drivers/input/mouse/lifebook.h\nindex 4c4326c6..0baf02a7 100644\n--- a/drivers/input/mouse/lifebook.h\n+++ b/drivers/input/mouse/lifebook.h\n@@ -16,14 +16,14 @@ void lifebook_module_init(void);\n int lifebook_detect(struct psmouse *psmouse, bool set_properties);\n int lifebook_init(struct psmouse *psmouse);\n #else\n-inline void lifebook_module_init(void)\n+static inline void lifebook_module_init(void)\n {\n }\n-inline int lifebook_detect(struct psmouse *psmouse, bool set_properties)\n+static inline int lifebook_detect(struct psmouse *psmouse, bool set_properties)\n {\n \treturn -ENOSYS;\n }\n-inline int lifebook_init(struct psmouse *psmouse)\n+static inline int lifebook_init(struct psmouse *psmouse)\n {\n \treturn -ENOSYS;\n }\ndiff --git a/drivers/input/mouse/logips2pp.h b/drivers/input/mouse/logips2pp.h\nindex 0c186f02..439e9c58 100644\n--- a/drivers/input/mouse/logips2pp.h\n+++ b/drivers/input/mouse/logips2pp.h\n@@ -14,7 +14,7 @@\n #ifdef CONFIG_MOUSE_PS2_LOGIPS2PP\n int ps2pp_init(struct psmouse *psmouse, bool set_properties);\n #else\n-inline int ps2pp_init(struct psmouse *psmouse, bool set_properties)\n+static inline int ps2pp_init(struct psmouse *psmouse, bool set_properties)\n {\n \treturn -ENOSYS;\n }\ndiff --git a/drivers/input/mouse/sentelic.h b/drivers/input/mouse/sentelic.h\nindex aa697ece..42df9e3b 100644\n--- a/drivers/input/mouse/sentelic.h\n+++ b/drivers/input/mouse/sentelic.h\n@@ -123,11 +123,11 @@ struct fsp_data {\n extern int fsp_detect(struct psmouse *psmouse, bool set_properties);\n extern int fsp_init(struct psmouse *psmouse);\n #else\n-inline int fsp_detect(struct psmouse *psmouse, bool set_properties)\n+static inline int fsp_detect(struct psmouse *psmouse, bool set_properties)\n {\n \treturn -ENOSYS;\n }\n-inline int fsp_init(struct psmouse *psmouse)\n+static inline int fsp_init(struct psmouse *psmouse)\n {\n \treturn -ENOSYS;\n }\ndiff --git a/drivers/input/mouse/trackpoint.h b/drivers/input/mouse/trackpoint.h\nindex e558a709..f14e59c0 100644\n--- a/drivers/input/mouse/trackpoint.h\n+++ b/drivers/input/mouse/trackpoint.h\n@@ -145,7 +145,7 @@ struct trackpoint_data\n #ifdef CONFIG_MOUSE_PS2_TRACKPOINT\n int trackpoint_detect(struct psmouse *psmouse, bool set_properties);\n #else\n-inline int trackpoint_detect(struct psmouse *psmouse, bool set_properties)\n+static inline int trackpoint_detect(struct psmouse *psmouse, bool set_properties)\n {\n \treturn -ENOSYS;\n }\n-- \n2.32.0\n\n"
  },
  {
    "path": "package/xvisor/Config.in",
    "content": "config BR2_PACKAGE_XVISOR_ARCH_SUPPORTS\n\tbool\n\tdefault y\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_arm || BR2_aarch64 || BR2_x86_64\n\tdepends on !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV7M\n\nmenuconfig BR2_PACKAGE_XVISOR\n\tbool \"xvisor\"\n\tdepends on BR2_PACKAGE_XVISOR_ARCH_SUPPORTS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\thelp\n\t  Xvisor is an open-source type-1 hypervisor, which aims at\n\t  providing a monolithic, light-weight, portable, and flexible\n\t  virtualization solution.\n\n\t  http://www.xhypervisor.org/\n\nif BR2_PACKAGE_XVISOR\n\nchoice\n\tprompt \"Xvisor configuration\"\n\tdefault BR2_PACKAGE_XVISOR_USE_DEFCONFIG\n\nconfig BR2_PACKAGE_XVISOR_USE_DEFCONFIG\n\tbool \"Using an in-tree defconfig file\"\n\nconfig BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG\n\tbool \"Using a custom (def)config file\"\n\nendchoice\n\nconfig BR2_PACKAGE_XVISOR_DEFCONFIG\n\tstring \"Defconfig name\"\n\tdefault \"generic-v5\" if BR2_ARM_CPU_ARMV5\n\tdefault \"generic-v6\" if BR2_ARM_CPU_ARMV6\n\tdefault \"generic-v7\" if BR2_ARM_CPU_ARMV7A\n\tdefault \"generic-v8\" if BR2_aarch64\n\tdefault \"x86_64_generic\" if BR2_x86_64\n\tdepends on BR2_PACKAGE_XVISOR_USE_DEFCONFIG\n\thelp\n\t  Name of the Xvisor defconfig file to use, without the\n\t  trailing -defconfig. The defconfig is located in\n\t  arch/<arch>/configs in the source tree.\n\nconfig BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE\n\tstring \"Configuration file path\"\n\tdepends on BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG\n\thelp\n\t  Path to the Xvisor configuration file\n\nconfig BR2_PACKAGE_XVISOR_CREATE_UBOOT_IMAGE\n\tbool \"Create U-Boot image of Xvisor\"\n\tdepends on BR2_arm\n\tselect BR2_PACKAGE_HOST_UBOOT_TOOLS\n\thelp\n\t  Create an image file of Xvisor loadable from Das U-Boot.\n\nconfig BR2_PACKAGE_XVISOR_BUILD_TEST_DTB\n\tbool \"Build test device-tree blobs\"\n\thelp\n\t  Build test device-tree blobs for popular boards.\n\nendif\n\ncomment \"xvisor needs a toolchain w/ gcc >= 4.9\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdepends on BR2_PACKAGE_XVISOR_ARCH_SUPPORTS\n"
  },
  {
    "path": "package/xvisor/xvisor.hash",
    "content": "# Locally generated\nsha256  81660d26a0bc63979ba40872f10511df777185712eba2d0e19e816438388de05  xvisor-0.3.0.tar.xz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/xvisor/xvisor.mk",
    "content": "################################################################################\n#\n# xvisor\n#\n################################################################################\n\nXVISOR_VERSION = 0.3.0\nXVISOR_SOURCE = xvisor-$(XVISOR_VERSION).tar.xz\nXVISOR_SITE = http://www.xhypervisor.org/tarball\nXVISOR_LICENSE = GPL-2.0+\nXVISOR_LICENSE_FILES = COPYING\nXVISOR_INSTALL_IMAGES = YES\nXVISOR_INSTALL_TARGET = NO\nXVISOR_DEPENDENCIES = host-bison host-dtc host-flex\n\nXVISOR_MAKE_TARGETS = all\n\nifeq ($(BR2_PACKAGE_XVISOR_BUILD_TEST_DTB),y)\nXVISOR_MAKE_TARGETS += dtbs\nendif\n\nXVISOR_KCONFIG_DOTCONFIG = build/openconf/.config\n\nifeq ($(BR2_PACKAGE_XVISOR_USE_DEFCONFIG),y)\nXVISOR_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_PACKAGE_XVISOR_DEFCONFIG))-defconfig\nelse ifeq ($(BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG),y)\nXVISOR_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE))\nendif\nXVISOR_KCONFIG_EDITORS = menuconfig\n\nifeq ($(BR2_x86_64),y)\nXVISOR_ARCH = x86\nelse ifeq ($(BR2_arm)$(BR2_aarch64),y)\nXVISOR_ARCH = arm\nendif\n\nifeq ($(BR2_PACKAGE_XVISOR)$(BR_BUILDING),yy)\nifeq ($(XVISOR_ARCH),)\n$(error \"Architecture not supported by XVisor\")\nendif\nendif\n\nXVISOR_MAKE_ENV = \\\n\tARCH=$(XVISOR_ARCH) \\\n\tCROSS_COMPILE=$(TARGET_CROSS)\n\nXVISOR_MAKE_OPTS = $(if $(VERBOSE),VERBOSE=1)\n\ndefine XVISOR_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(XVISOR_MAKE_ENV) $(MAKE) $(XVISOR_MAKE_OPTS) \\\n\t\t-C $(@D) $(XVISOR_MAKE_TARGETS)\nendef\n\ndefine XVISOR_INSTALL_IMAGES_CMDS\n\t$(INSTALL) -m 0644 -D $(@D)/build/vmm.bin $(BINARIES_DIR)/vmm.bin\nendef\n\nifeq ($(BR2_PACKAGE_XVISOR_CREATE_UBOOT_IMAGE),y)\nXVISOR_DEPENDENCIES += host-uboot-tools\ndefine XVISOR_CREATE_UBOOT_IMAGE\n\t$(MKIMAGE) -A $(MKIMAGE_ARCH) -O linux -T kernel -C none \\\n\t\t-a 0x00008000 -e 0x00008000 \\\n\t\t-n Xvisor -d $(BINARIES_DIR)/vmm.bin $(BINARIES_DIR)/uvmm.bin\nendef\nendif\n\nXVISOR_POST_INSTALL_IMAGES_HOOKS += XVISOR_CREATE_UBOOT_IMAGE\n\n# Checks to give errors that the user can understand\nifeq ($(BR_BUILDING),y)\n\nifeq ($(BR2_PACKAGE_XVISOR_USE_DEFCONFIG),y)\nifeq ($(call qstrip,$(BR2_PACKAGE_XVISOR_DEFCONFIG)),)\n$(error No Xvisor defconfig name specified, check your BR2_PACKAGE_XVISOR_DEFCONFIG setting)\nendif\nendif\n\nifeq ($(BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG),y)\nifeq ($(BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE),)\n$(error No Xvisor configuration file specified, check your BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE setting)\nendif\nendif\n\nendif\n\n$(eval $(kconfig-package))\n"
  },
  {
    "path": "package/xvkbd/Config.in",
    "content": "config BR2_PACKAGE_XVKBD\n\tbool \"xvkbd\"\n\tdepends on BR2_PACKAGE_XORG7\n\tselect BR2_PACKAGE_XLIB_LIBICE\n\tselect BR2_PACKAGE_XLIB_LIBSM\n\tselect BR2_PACKAGE_XLIB_LIBX11\n\tselect BR2_PACKAGE_XLIB_LIBXAW\n\tselect BR2_PACKAGE_XLIB_LIBXEXT\n\tselect BR2_PACKAGE_XLIB_LIBXMU\n\tselect BR2_PACKAGE_XLIB_LIBXPM\n\tselect BR2_PACKAGE_XLIB_LIBXT\n\tselect BR2_PACKAGE_XLIB_LIBXTST\n\thelp\n\t  on-screen keyboard for X\n\n\t  http://t-sato.in.coocan.jp/xvkbd\n"
  },
  {
    "path": "package/xvkbd/xvkbd.hash",
    "content": "# Locally calculated\nsha256  952d07df0fe1e45286520b7c98b4fd00fd60dbf3e3e8ff61e12c259f76a3bef4  xvkbd-4.1.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\nsha256  5dada320d6b4fb7c76ef110a027b019feaf1149576acf7ac5cacf0d0dcdc3671  README\n"
  },
  {
    "path": "package/xvkbd/xvkbd.mk",
    "content": "################################################################################\n#\n# xvkbd\n#\n################################################################################\n\nXVKBD_VERSION = 4.1\nXVKBD_SITE = http://t-sato.in.coocan.jp/xvkbd\nXVKBD_LICENSE = GPL-2.0+\nXVKBD_LICENSE_FILES = COPYING README\n\nXVKBD_DEPENDENCIES = \\\n\txlib_libICE \\\n\txlib_libSM \\\n\txlib_libX11 \\\n\txlib_libXaw \\\n\txlib_libXext \\\n\txlib_libXmu \\\n\txlib_libXpm \\\n\txlib_libXt \\\n\txlib_libXtst\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/xxhash/Config.in",
    "content": "config BR2_PACKAGE_XXHASH\n\tbool \"xxhash\"\n\thelp\n\t  xxHash is an extremely fast hash algorithm, running at RAM\n\t  speed limits.\n\n\t  https://github.com/Cyan4973/xxHash\n"
  },
  {
    "path": "package/xxhash/xxhash.hash",
    "content": "# locally computed\nsha256  7054c3ebd169c97b64a92d7b994ab63c70dd53a06974f1f630ab782c28db0f4f  xxhash-0.8.0.tar.gz\nsha256  9da63520e9293d82c4b1613be5c84058cadb82b02f5972179bad13731d589910  LICENSE\n"
  },
  {
    "path": "package/xxhash/xxhash.mk",
    "content": "################################################################################\n#\n# xxhash\n#\n################################################################################\n\nXXHASH_VERSION = 0.8.0\nXXHASH_SITE = $(call github,Cyan4973,xxHash,v$(XXHASH_VERSION))\nXXHASH_LICENSE = BSD-2-Clause (library), GPL-2.0+ (xxhsum)\nXXHASH_LICENSE_FILES = LICENSE\n\ndefine XXHASH_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) xxhsum\nendef\n\ndefine XXHASH_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -D $(@D)/xxhsum $(TARGET_DIR)/usr/bin/xxhsum\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/xz/Config.in",
    "content": "config BR2_PACKAGE_XZ\n\tbool \"xz-utils\"\n\thelp\n\t  XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm\n\t  compression format, which provides memory-hungry but\n\t  powerful compression (often better than bzip2) and fast,\n\t  easy decompression.\n\n\t  This package provides the command line tools for working\n\t  with XZ compression, including xz, unxz, xzcat, xzgrep, and\n\t  so on. They can also handle the older LZMA format, and if\n\t  invoked via appropriate symlinks will emulate the behavior\n\t  of the commands in the lzma package.\n\n\t  https://tukaani.org/xz/\n"
  },
  {
    "path": "package/xz/xz.hash",
    "content": "# Locally calculated after checking pgp signature\nsha256  5117f930900b341493827d63aa910ff5e011e0b994197c3b71c08a20228a42df  xz-5.2.5.tar.bz2\n\n# Hash for license files\nsha256  bcb02973ef6e87ea73d331b3a80df7748407f17efdb784b61b47e0e610d3bb5c  COPYING\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING.GPLv2\nsha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING.GPLv3\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LGPLv2.1\n"
  },
  {
    "path": "package/xz/xz.mk",
    "content": "################################################################################\n#\n# xz\n#\n################################################################################\n\nXZ_VERSION = 5.2.5\nXZ_SOURCE = xz-$(XZ_VERSION).tar.bz2\nXZ_SITE = https://tukaani.org/xz\nXZ_INSTALL_STAGING = YES\nXZ_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'\nXZ_LICENSE = Public Domain, GPL-2.0+, GPL-3.0+, LGPL-2.1+\nXZ_LICENSE_FILES = COPYING COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1\nXZ_CPE_ID_VENDOR = tukaani\n\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nXZ_CONF_OPTS = --enable-threads\nelse\nXZ_CONF_OPTS = --disable-threads\nendif\n\n# we are built before ccache\nHOST_XZ_CONF_ENV = \\\n\tCC=\"$(HOSTCC_NOCCACHE)\" \\\n\tCXX=\"$(HOSTCXX_NOCCACHE)\"\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/yad/Config.in",
    "content": "config BR2_PACKAGE_YAD\n\tbool \"yad\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on BR2_PACKAGE_LIBGTK2 || BR2_PACKAGE_LIBGTK3_X11\n\thelp\n\t  YAD (yet another dialog) is a tool for create graphical\n\t  dialogs from shell scripts.\n\n\t  http://sourceforge.net/projects/yad-dialog/\n\ncomment \"yad needs libgtk2 or libgtk3 w/ X11 backend\"\n\tdepends on BR2_PACKAGE_XORG7\n\tdepends on !BR2_PACKAGE_LIBGTK2 && !BR2_PACKAGE_LIBGTK3_X11\n"
  },
  {
    "path": "package/yad/yad.hash",
    "content": "# From http://sourceforge.net/projects/yad-dialog/files/\nmd5\t82d458a2e1695dd0709f71ad26109812\tyad-0.40.0.tar.xz\nsha1\t4376eb42f8e38972124dc81e534cbdc9088109fb\tyad-0.40.0.tar.xz\n\n# Hash for license file\nsha256\t8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903\tCOPYING\n"
  },
  {
    "path": "package/yad/yad.mk",
    "content": "################################################################################\n#\n# yad\n#\n################################################################################\n\nYAD_VERSION = 0.40.0\nYAD_SOURCE = yad-$(YAD_VERSION).tar.xz\nYAD_SITE = http://sourceforge.net/projects/yad-dialog/files\nYAD_LICENSE = GPL-3.0\nYAD_LICENSE_FILES = COPYING\nYAD_DEPENDENCIES = host-intltool host-pkgconf $(TARGET_NLS_DEPENDENCIES)\nYAD_CONF_ENV = LIBS=$(TARGET_NLS_LIBS)\nYAD_CONF_OPTS = --enable-html=no\n\nifeq ($(BR2_PACKAGE_LIBGTK3_X11),y)\nYAD_DEPENDENCIES += libgtk3\nYAD_CONF_OPTS += --with-gtk=gtk3\nelse\nYAD_DEPENDENCIES += libgtk2\nYAD_CONF_OPTS += --with-gtk=gtk2\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/yaffs2utils/yaffs2utils.hash",
    "content": "# locally computed\nsha256  9b0912bf683eb839b6e57c9255c83894c3b700d16489a49d319c54c1abf8f6d7  0.2.9.tar.gz\nsha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING\n"
  },
  {
    "path": "package/yaffs2utils/yaffs2utils.mk",
    "content": "################################################################################\n#\n# yaffs2utils\n#\n################################################################################\n\nYAFFS2UTILS_VERSION = 0.2.9\nYAFFS2UTILS_SOURCE = $(YAFFS2UTILS_VERSION).tar.gz\nYAFFS2UTILS_SITE = https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/yaffs2utils\nYAFFS2UTILS_LICENSE = GPL-2.0\nYAFFS2UTILS_LICENSE_FILES = COPYING\n\ndefine HOST_YAFFS2UTILS_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D)\nendef\n\ndefine HOST_YAFFS2UTILS_INSTALL_CMDS\n\tmkdir -p $(HOST_DIR)/bin\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) INSTALLDIR=$(HOST_DIR)/bin install\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/yajl/0001-Let-the-shared-and-the-static-library-have-the-same-.patch",
    "content": "From b08fe001e3d3f3564ef298e62342f07080807f7a Mon Sep 17 00:00:00 2001\nFrom: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\nDate: Wed, 28 Oct 2015 15:45:10 +0000\nSubject: [PATCH] Let the shared and the static library have the same name\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nThe will be differentiated by the extension (.so or .a).\n\nFetched from:\nhttps://github.com/vriera/yajl/commit/6d09f11b8fd358cab0e31b965327e64a599f9ce9\n\nSigned-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n src/CMakeLists.txt | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/src/CMakeLists.txt b/src/CMakeLists.txt\nindex 99cf9e9..1a900d3 100644\n--- a/src/CMakeLists.txt\n+++ b/src/CMakeLists.txt\n@@ -36,6 +36,7 @@ SET (shareDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/share/pkgconfig)\n SET(LIBRARY_OUTPUT_PATH ${libDir})\n \n ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS})\n+SET_TARGET_PROPERTIES(yajl_s PROPERTIES OUTPUT_NAME yajl)\n \n ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS})\n \n-- \n2.8.0\n\n"
  },
  {
    "path": "package/yajl/0002-cmake-disable-shared-library-build-when-BUILD_SHARED.patch",
    "content": "From b3cddf92adacfe5ca40574afb3e323cc7cdebc5c Mon Sep 17 00:00:00 2001\nFrom: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>\nDate: Tue, 2 Feb 2016 15:46:09 +0100\nSubject: [PATCH] cmake: Add shared library conditonnal build\n\nWhen BUILD_SHARED_LIBS is off, you don't want to build the shared\nlibrary.\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n---\n src/CMakeLists.txt | 4 ++++\n 1 file changed, 4 insertions(+)\n\ndiff --git a/src/CMakeLists.txt b/src/CMakeLists.txt\nindex 99cf9e9..9e9c77d 100644\n--- a/src/CMakeLists.txt\n+++ b/src/CMakeLists.txt\n@@ -37,6 +37,7 @@ SET(LIBRARY_OUTPUT_PATH ${libDir})\n \n ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS})\n \n+IF(BUILD_SHARED_LIBS)\n ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS})\n \n #### setup shared library version number\n@@ -51,6 +52,7 @@ IF(APPLE)\n   SET_TARGET_PROPERTIES(yajl PROPERTIES\n                         INSTALL_NAME_DIR \"${CMAKE_INSTALL_PREFIX}/lib\")\n ENDIF(APPLE)\n+ENDIF(BUILD_SHARED_LIBS)\n \n #### build up an sdk as a post build step\n \n@@ -77,10 +79,12 @@ INCLUDE_DIRECTORIES(${incDir}/..)\n \n # at build time you may specify the cmake variable LIB_SUFFIX to handle\n # 64-bit systems which use 'lib64'\n+IF(BUILD_SHARED_LIBS)\n INSTALL(TARGETS yajl\n         RUNTIME DESTINATION lib${LIB_SUFFIX}\n         LIBRARY DESTINATION lib${LIB_SUFFIX}\n         ARCHIVE DESTINATION lib${LIB_SUFFIX})\n+ENDIF(BUILD_SHARED_LIBS)\n INSTALL(TARGETS yajl_s ARCHIVE DESTINATION lib${LIB_SUFFIX})\n INSTALL(FILES ${PUB_HDRS} DESTINATION include/yajl)\n INSTALL(FILES ${incDir}/yajl_version.h DESTINATION include/yajl)\n-- \n2.7.0\n\n"
  },
  {
    "path": "package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch",
    "content": "From 425b25993ef58d07aa18c5d4938876a90e22c47a Mon Sep 17 00:00:00 2001\nFrom: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>\nDate: Sat, 9 Apr 2016 23:24:27 +0200\nSubject: [PATCH] Link with shared libyajl in a shared build\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nBuilding yajl in a static context fails in a parallel build:\n\n[ 21%] Linking C executable gen-extra-close\n[ 26%] Building C object src/CMakeFiles/yajl_s.dir/yajl_buf.c.o\n/home/test/autobuild/instance-3/output/host/opt/ext-toolchain/bfin-uclinux/bfin-uclinux/bin/ld.real: cannot find -lyajl\n\nFix this issue by linking against the shared libyail in a shared build. Apply\nthis fix also to all other build targets who are linking against the library.\n\nUpstream status: Pending\nhttps://github.com/lloyd/yajl/pull/187\n\n[Update: align with commit 302563539dacb284576a443401cdfd061eb2e1e8 and remove\n linking with libm from test/api/CMakeLists.txt]\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\n---\n example/CMakeLists.txt      | 7 ++++++-\n perf/CMakeLists.txt         | 6 +++++-\n reformatter/CMakeLists.txt  | 6 +++++-\n test/api/CMakeLists.txt     | 6 +++++-\n test/parsing/CMakeLists.txt | 6 +++++-\n verify/CMakeLists.txt       | 6 +++++-\n 6 files changed, 31 insertions(+), 6 deletions(-)\n\ndiff --git a/example/CMakeLists.txt b/example/CMakeLists.txt\nindex 0a7f622..8cfcef8 100644\n--- a/example/CMakeLists.txt\n+++ b/example/CMakeLists.txt\n@@ -20,4 +20,9 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib)\n \n ADD_EXECUTABLE(parse_config ${SRCS})\n \n-TARGET_LINK_LIBRARIES(parse_config yajl_s)\n+IF(BUILD_SHARED_LIBS)\n+  TARGET_LINK_LIBRARIES(parse_config yajl)\n+ELSE()\n+  TARGET_LINK_LIBRARIES(parse_config yajl_s)\n+ENDIF()\n+\ndiff --git a/perf/CMakeLists.txt b/perf/CMakeLists.txt\nindex b438d7a..40ba363 100644\n--- a/perf/CMakeLists.txt\n+++ b/perf/CMakeLists.txt\n@@ -20,4 +20,8 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib)\n \n ADD_EXECUTABLE(perftest ${SRCS})\n \n-TARGET_LINK_LIBRARIES(perftest yajl_s)\n+IF(BUILD_SHARED_LIBS)\n+  TARGET_LINK_LIBRARIES(perftest yajl)\n+ELSE()\n+  TARGET_LINK_LIBRARIES(perftest yajl_s)\n+ENDIF()\ndiff --git a/reformatter/CMakeLists.txt b/reformatter/CMakeLists.txt\nindex 52a9bee..7629094 100644\n--- a/reformatter/CMakeLists.txt\n+++ b/reformatter/CMakeLists.txt\n@@ -26,7 +26,11 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib)\n \n ADD_EXECUTABLE(json_reformat ${SRCS})\n \n-TARGET_LINK_LIBRARIES(json_reformat yajl_s)\n+IF(BUILD_SHARED_LIBS)\n+  TARGET_LINK_LIBRARIES(json_reformat yajl)\n+ELSE()\n+  TARGET_LINK_LIBRARIES(json_reformat yajl_s)\n+ENDIF()\n \n # In some environments, we must explicitly link libm (like qnx,\n # thanks @shahbag)\ndiff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt\nindex cd65a54..0c9debf 100644\n--- a/test/api/CMakeLists.txt\n+++ b/test/api/CMakeLists.txt\n@@ -21,5 +21,9 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../../${YAJL_DIST_NAME}/lib)\n FOREACH (test ${TESTS})\n   GET_FILENAME_COMPONENT(testProg ${test} NAME_WE)\n   ADD_EXECUTABLE(${testProg} ${test})\n-  TARGET_LINK_LIBRARIES(${testProg} yajl)\n+  IF(BUILD_SHARED_LIBS)\n+    TARGET_LINK_LIBRARIES(${testProg} yajl)\n+  ELSE()\n+    TARGET_LINK_LIBRARIES(${testProg} yajl_s)\n+  ENDIF()\n ENDFOREACH()\ndiff --git a/test/parsing/CMakeLists.txt b/test/parsing/CMakeLists.txt\nindex c22a388..285f048 100644\n--- a/test/parsing/CMakeLists.txt\n+++ b/test/parsing/CMakeLists.txt\n@@ -20,4 +20,8 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../../${YAJL_DIST_NAME}/lib)\n \n ADD_EXECUTABLE(yajl_test ${SRCS})\n \n-TARGET_LINK_LIBRARIES(yajl_test yajl_s)\n+IF(BUILD_SHARED_LIBS)\n+  TARGET_LINK_LIBRARIES(yajl_test yajl)\n+ELSE()\n+  TARGET_LINK_LIBRARIES(yajl_test yajl_s)\n+ENDIF()\ndiff --git a/verify/CMakeLists.txt b/verify/CMakeLists.txt\nindex 967fca1..06cb2dc 100644\n--- a/verify/CMakeLists.txt\n+++ b/verify/CMakeLists.txt\n@@ -26,7 +26,11 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib)\n \n ADD_EXECUTABLE(json_verify ${SRCS})\n \n-TARGET_LINK_LIBRARIES(json_verify yajl_s)\n+IF(BUILD_SHARED_LIBS)\n+  TARGET_LINK_LIBRARIES(json_verify yajl)\n+ELSE()\n+  TARGET_LINK_LIBRARIES(json_verify yajl_s)\n+ENDIF()\n \n # copy in the binary\n GET_TARGET_PROPERTY(binPath json_verify LOCATION)\n-- \n2.8.0\n\n"
  },
  {
    "path": "package/yajl/0004-Link-libyajl-_s-with-libm-when-isnan-is-not-brought-.patch",
    "content": "From b47f6a50925efb8c8707b1faed5561a4b66ffdb1 Mon Sep 17 00:00:00 2001\nFrom: Samuel Martin <s.martin49@gmail.com>\nDate: Sun, 24 Apr 2016 18:45:27 +0200\nSubject: [PATCH] Link libyajl{,_s} with libm when isnan is not brought by the\n libc\n\nCheck whether isnan is provided by the libc library, otherwise make sure\nyajl libraries are link against libm.\n\nNote that setting libm as PUBLIC link libraries enable the transitivity\n[1, 2]; therefore it will be automatically passed to target linking\nagainst libyajl{,_s}.\n\nThis patch also makes sure the link libraries will appear in the yajl.pc\nfile.\n\n[1] https://cmake.org/cmake/help/v3.5/command/target_link_libraries.html\n[2] https://cmake.org/cmake/help/v3.5/manual/cmake-buildsystem.7.html#target-usage-requirements\n\nSigned-off-by: Samuel Martin <s.martin49@gmail.com>\n---\n src/CMakeLists.txt | 10 ++++++++++\n src/yajl.pc.cmake  |  2 +-\n 2 files changed, 11 insertions(+), 1 deletion(-)\n\ndiff --git a/src/CMakeLists.txt b/src/CMakeLists.txt\nindex b487bfd..a88698f 100644\n--- a/src/CMakeLists.txt\n+++ b/src/CMakeLists.txt\n@@ -35,11 +35,21 @@ SET (shareDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/share/pkgconfig)\n # set the output path for libraries\n SET(LIBRARY_OUTPUT_PATH ${libDir})\n \n+SET(yajl_lib_link)\n+INCLUDE(CheckLibraryExists)\n+CHECK_LIBRARY_EXISTS(c isnan \"\" HAVE_LIBC_ISNAN)\n+\n+IF(NOT HAVE_LIBC_ISNAN)\n+  LIST(APPEND yajl_lib_link \"-lm\")\n+ENDIF(NOT HAVE_LIBC_ISNAN)\n+\n ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS})\n SET_TARGET_PROPERTIES(yajl_s PROPERTIES OUTPUT_NAME yajl)\n+TARGET_LINK_LIBRARIES(yajl_s PUBLIC ${yajl_lib_link})\n \n IF(BUILD_SHARED_LIBS)\n ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS})\n+TARGET_LINK_LIBRARIES(yajl PUBLIC ${yajl_lib_link})\n \n #### setup shared library version number\n SET_TARGET_PROPERTIES(yajl PROPERTIES\ndiff --git a/src/yajl.pc.cmake b/src/yajl.pc.cmake\nindex 6eaca14..4681dd4 100644\n--- a/src/yajl.pc.cmake\n+++ b/src/yajl.pc.cmake\n@@ -6,4 +6,4 @@ Name: Yet Another JSON Library\n Description: A Portable JSON parsing and serialization library in ANSI C\n Version: ${YAJL_MAJOR}.${YAJL_MINOR}.${YAJL_MICRO}\n Cflags: -I${dollar}{includedir}\n-Libs: -L${dollar}{libdir} -lyajl\n+Libs: -L${dollar}{libdir} -lyajl ${yajl_lib_link}\n-- \n2.8.0\n\n"
  },
  {
    "path": "package/yajl/Config.in",
    "content": "config BR2_PACKAGE_YAJL\n\tbool \"yajl\"\n\thelp\n\t  Yet Another JSON Library. YAJL is a small event-driven\n\t  (SAX-style) JSON parser written in ANSI C, and a small\n\t  validating JSON generator.\n\n\t  http://lloyd.github.com/yajl/\n"
  },
  {
    "path": "package/yajl/yajl.hash",
    "content": "# Locally calculated\nsha256  3fb73364a5a30efe615046d07e6db9d09fd2b41c763c5f7d3bfb121cd5c5ac5a  yajl-2.1.0.tar.gz\nsha256  054bf2c11686c5442850b1da58ad592e3d1d2a236a362e67279b957f8e662f5a  COPYING\n"
  },
  {
    "path": "package/yajl/yajl.mk",
    "content": "################################################################################\n#\n# yajl\n#\n################################################################################\n\nYAJL_VERSION = 2.1.0\nYAJL_SITE = $(call github,lloyd,yajl,$(YAJL_VERSION))\nYAJL_INSTALL_STAGING = YES\nYAJL_LICENSE = ISC\nYAJL_LICENSE_FILES = COPYING\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/yaml-cpp/Config.in",
    "content": "config BR2_PACKAGE_YAML_CPP\n\tbool \"yaml-cpp\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11\n\thelp\n\t  yaml-cpp is a YAML parser and emitter in C++ matching\n\t  the YAML 1.2 spec.\n\n\t  https://github.com/jbeder/yaml-cpp\n\ncomment \"yaml-cpp needs a toolchain w/ C++, gcc >= 4.7\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n"
  },
  {
    "path": "package/yaml-cpp/yaml-cpp.hash",
    "content": "# locally computed\nsha256  77ea1b90b3718aa0c324207cb29418f5bced2354c2e483a9523d98c3460af1ed  yaml-cpp-0.6.3.tar.gz\nsha256  aa6fcc27be034e41e21dd832f9175bfe694a48491d9e14ff0fa278e19ad14f1b  LICENSE\n"
  },
  {
    "path": "package/yaml-cpp/yaml-cpp.mk",
    "content": "################################################################################\n#\n# yaml-cpp\n#\n################################################################################\n\nYAML_CPP_VERSION = 0.6.3\nYAML_CPP_SITE = $(call github,jbeder,yaml-cpp,yaml-cpp-$(YAML_CPP_VERSION))\nYAML_CPP_INSTALL_STAGING = YES\nYAML_CPP_LICENSE = MIT\nYAML_CPP_LICENSE_FILES = LICENSE\nYAML_CPP_CPE_ID_VENDOR = yaml-cpp_project\n\n# Disable testing and parse tools\nYAML_CPP_CONF_OPTS += \\\n\t-DYAML_CPP_BUILD_TESTS=OFF \\\n\t-DYAML_CPP_BUILD_TOOLS=OFF\n\nifeq ($(BR2_STATIC_LIBS),y)\nYAML_CPP_CONF_OPTS += -DYAML_BUILD_SHARED_LIBS=OFF\nelse\nYAML_CPP_CONF_OPTS += -DYAML_BUILD_SHARED_LIBS=ON\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/yasm/Config.in",
    "content": "config BR2_PACKAGE_YASM\n\tbool \"yasm\"\n\tdepends on BR2_i386 || BR2_x86_64\n\thelp\n\t  Yasm is a complete rewrite of the NASM-2.10.01 assembler.\n\t  It supports the x86 and AMD64 instruction sets, accepts NASM\n\t  and GAS assembler syntaxes and outputs binary, ELF32 and ELF64\n\t  object formats.\n\n\t  http://www.tortall.net/projects/yasm/\n"
  },
  {
    "path": "package/yasm/yasm.hash",
    "content": "# Locally computed:\nsha256  3dce6601b495f5b3d45b59f7d2492a340ee7e84b5beca17e48f862502bd5603f  yasm-1.3.0.tar.gz\nsha256  795f8d76eade6130129b680ac72ea81cb3e143467a65ea1f5f64946151d7fa20  COPYING\nsha256  a84b45f23040624681ca6974ff48d8ef6b477a1cb51e4a1c842e49d00c231e0d  BSD.txt\nsha256  b7fd9b73ea99602016a326e0b62e6646060d18febdd065ceca8bb482208c3d88  Artistic.txt\nsha256  e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  GNU_GPL-2.0\nsha256  1faefae1fe8838a2e48864df7d1376e421a50c551c5ae2f60c9f2093206e18a9  GNU_LGPL-2.0\n"
  },
  {
    "path": "package/yasm/yasm.mk",
    "content": "################################################################################\n#\n# yasm\n#\n################################################################################\n\nYASM_VERSION = 1.3.0\nYASM_SITE = http://www.tortall.net/projects/yasm/releases\nYASM_LICENSE = BSD-2-Clause, BSD-3-Clause, Artistic, GPL-2.0, LGPL-2.0\nYASM_LICENSE_FILES = COPYING BSD.txt Artistic.txt GNU_GPL-2.0 GNU_LGPL-2.0\n\n# This sed prevents it compiling 2 programs (vsyasm and ytasm)\n# that are only of use on Microsoft Windows.\ndefine YASM_PRE_CONFIGURE_FIXUP\n\t$(SED) 's#) ytasm.*#)#' $(@D)/Makefile.in\nendef\n\nYASM_PRE_CONFIGURE_HOOKS += YASM_PRE_CONFIGURE_FIXUP\nHOST_YASM_PRE_CONFIGURE_HOOKS += YASM_PRE_CONFIGURE_FIXUP\n\n$(eval $(autotools-package))\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/yavta/Config.in",
    "content": "config BR2_PACKAGE_YAVTA\n\tbool \"yavta\"\n\thelp\n\t  Yet Another V4L2 Test Application\n\n\t  https://git.ideasonboard.org/yavta.git\n"
  },
  {
    "path": "package/yavta/yavta.hash",
    "content": "# Locally computed\nsha256  108a0ceec862b56a3fbcb3ad28a8744d9800555ccb3e11bdd94c8cd4614296d5  yavta-583bedefc2a247d2cfd32d1b4a0abbe3e2015c70-br1.tar.gz\nsha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING.GPL\n"
  },
  {
    "path": "package/yavta/yavta.mk",
    "content": "################################################################################\n#\n# yavta\n#\n################################################################################\n\nYAVTA_VERSION = 583bedefc2a247d2cfd32d1b4a0abbe3e2015c70\nYAVTA_SITE = https://git.ideasonboard.org/git/yavta.git\nYAVTA_SITE_METHOD = git\nYAVTA_LICENSE = GPL-2.0+\nYAVTA_LICENSE_FILES = COPYING.GPL\nYAVTA_CONF_OPTS = -Dwerror=false\n\n$(eval $(meson-package))\n"
  },
  {
    "path": "package/ympd/0001-only-c-language.patch",
    "content": "ympd is implemented only in C\n\nBy default, CMake assumes that the project is using both C and C++. By\nexplicitly passing 'C' as argument of the project() macro, we tell\nCMake that only C is used, which prevents CMake from checking if a C++\ncompiler exists.\n\nSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\nIndex: b/CMakeLists.txt\n===================================================================\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -1,6 +1,6 @@\n cmake_minimum_required(VERSION 2.6)\n \n-project (ympd)\n+project (ympd C)\n set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} \"${PROJECT_SOURCE_DIR}/cmake/\")\n set(CPACK_PACKAGE_VERSION_MAJOR \"1\")\n set(CPACK_PACKAGE_VERSION_MINOR \"2\")\n"
  },
  {
    "path": "package/ympd/0002-added-forward-declarations.patch",
    "content": "From 2268e0f0f372a61827b912155a1796490968b3ff Mon Sep 17 00:00:00 2001\nFrom: SuperBFG7 <daniel@despite.ch>\nDate: Tue, 2 Jun 2020 12:41:52 +0200\nSubject: [PATCH] added forward declarations\n\n\n[Retrieved (and slightly updated to remove update of dirble_api_token)\nfrom:\nhttps://github.com/notandy/ympd/pull/191/commits/2268e0f0f372a61827b912155a1796490968b3ff]\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n src/mpd_client.c | 2 ++\n src/mpd_client.h | 6 ++++--\n 2 files changed, 6 insertions(+), 2 deletions(-)\n\ndiff --git a/src/mpd_client.c b/src/mpd_client.c\nindex 2911e461..9f003ab0 100644\n--- a/src/mpd_client.c\n+++ b/src/mpd_client.c\n@@ -30,6 +30,8 @@\n \n /* forward declaration */\n static int mpd_notify_callback(struct mg_connection *c, enum mg_event ev);\n+char dirble_api_token[28];\n+struct t_mpd mpd;\n \n const char * mpd_cmd_strs[] = {\n     MPD_CMDS(GEN_STR)\ndiff --git a/src/mpd_client.h b/src/mpd_client.h\nindex 447dd563..9342c550 100644\n--- a/src/mpd_client.h\n+++ b/src/mpd_client.h\n@@ -96,6 +96,8 @@ struct t_mpd {\n \n     int song_id;\n     unsigned queue_version;\n-} mpd;\n+};\n+\n+extern struct t_mpd mpd;\n \n struct t_mpd_client_session {\n     int song_id;\n"
  },
  {
    "path": "package/ympd/Config.in",
    "content": "config BR2_PACKAGE_YMPD\n\tbool \"ympd\"\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_LIBMPDCLIENT\n\thelp\n\t  ympd, a standalone MPD Web GUI written in C, utilizing\n\t  Websockets and Bootstrap/JS\n\n\t  https://www.ympd.org/\n\ncomment \"ympd needs a toolchain w/ threads, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/ympd/ympd.hash",
    "content": "# locally computed\nsha256  d9f68920cd93d1cfa971e1d7b9162a2b1724909bc9753c1338cecb3688d234d5  ympd-1.3.0.tar.gz\nsha256  e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  LICENSE\n"
  },
  {
    "path": "package/ympd/ympd.mk",
    "content": "################################################################################\n#\n# ympd\n#\n################################################################################\n\nYMPD_VERSION = 1.3.0\nYMPD_SITE = $(call github,notandy,ympd,v$(YMPD_VERSION))\nYMPD_LICENSE = GPL-2.0\nYMPD_LICENSE_FILES = LICENSE\nYMPD_DEPENDENCIES = libmpdclient\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nYMPD_DEPENDENCIES += openssl\nYMPD_CONF_OPTS += -DWITH_SSL=ON\nelse\nYMPD_CONF_OPTS += -DWITH_SSL=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/ytree/0001-fix-musl.patch",
    "content": "Fix musl build\n\nFixes\n\n  match.c.text+0x9c): undefined reference to `re_comp'\n  match.c.text+0xca): undefined reference to `re_exec'\n\nby forcing to use the 'modern' regex methods implementation instead of\nthe obsolete re_comp/re_exec ([1]) one?\n\n[1] http://man7.org/linux/man-pages/man3/re_comp.3.html\n\nSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>\n\ndiff -uNr ytree-1.99pl2.orig/match.c ytree-1.99pl2/match.c\n--- ytree-1.99pl2.orig/match.c\t2019-09-29 12:37:57.000000000 +0200\n+++ ytree-1.99pl2/match.c\t2019-10-01 19:46:56.193815327 +0200\n@@ -10,7 +10,7 @@\n #include \"ytree.h\"\n \n #if defined( sun ) || defined( linux ) || defined( __NeXT__ ) || defined( OSF1 ) ||  defined( __OpenBSD__ ) || defined(__NetBSD__) || defined( __FreeBSD__ ) || defined( __GNU__ )\n-#define HAS_REGEX\n+#define HAS_REGCOMP\n #endif\n \n #ifdef linux\n"
  },
  {
    "path": "package/ytree/Config.in",
    "content": "config BR2_PACKAGE_YTREE\n\tbool \"ytree\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  Ytree - a (curses-based) file manager similar to DOS Xtree(tm)\n\n\t  https://www.han.de/~werner/ytree.html\n"
  },
  {
    "path": "package/ytree/ytree.hash",
    "content": "# Locally computed\nsha256  583aa71552d1347e0eabe39a236fa5a174bf67dde98871853b9fe2a233bcaef1  ytree-2.03.tar.gz\nsha256  eb6bf7204569b4fe8eaf9d4dffc57e44047c5efb5deba1b2d99069ddbc99d031  COPYING\n"
  },
  {
    "path": "package/ytree/ytree.mk",
    "content": "################################################################################\n#\n# ytree\n#\n################################################################################\n\nYTREE_VERSION = 2.03\nYTREE_SITE = https://www.han.de/~werner\nYTREE_LICENSE = GPL-2.0+\nYTREE_LICENSE_FILES = COPYING\nYTREE_DEPENDENCIES = ncurses\n\nYTREE_CFLAGS = -DCOLOR_SUPPORT $(TARGET_CFLAGS)\nYTREE_LDFLAGS = -lncurses $(TARGET_LDFLAGS)\n\nifeq ($(BR2_PACKAGE_READLINE),y)\nYTREE_DEPENDENCIES += host-pkgconf readline\nYTREE_CFLAGS += -DREADLINE_SUPPORT\nYTREE_LDFLAGS += `$(PKG_CONFIG_HOST_BINARY) --libs readline`\nendif\n\ndefine YTREE_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCFLAGS=\"$(YTREE_CFLAGS)\" LDFLAGS=\"$(YTREE_LDFLAGS)\"\nendef\n\ndefine YTREE_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=\"$(TARGET_DIR)/usr\" install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/zbar/Config.in",
    "content": "config BR2_PACKAGE_ZBAR\n\tbool \"zbar\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # libv4l\n\tdepends on BR2_USE_MMU # libv4l\n\tdepends on BR2_INSTALL_LIBSTDCPP # libv4l\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # libv4l\n\tselect BR2_PACKAGE_JPEG\n\tselect BR2_PACKAGE_LIBV4L\n\thelp\n\t  QR and barcode scanner\n\n\t  https://git.linuxtv.org/zbar.git/about/\n\ncomment \"zbar needs a toolchain w/ threads, C++ and headers >= 3.0\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n"
  },
  {
    "path": "package/zbar/zbar.hash",
    "content": "# Locally computed:\nsha256  9152c8fb302b3891e1cb9cc719883d2f4ccd2483e3430783a2cf2d93bd5901ad  zbar-0.23.90.tar.bz2\nsha256  44260f9252c7fe38ba8dfb645330504f4a375e3a5e9dd7d5d6b9f04adb4952f1  LICENSE.md\n"
  },
  {
    "path": "package/zbar/zbar.mk",
    "content": "################################################################################\n#\n# zbar\n#\n################################################################################\n\nZBAR_VERSION = 0.23.90\nZBAR_SOURCE = zbar-$(ZBAR_VERSION).tar.bz2\nZBAR_SITE = https://www.linuxtv.org/downloads/zbar\nZBAR_LICENSE = LGPL-2.1+\nZBAR_LICENSE_FILES = LICENSE.md\nZBAR_INSTALL_STAGING = YES\nZBAR_DEPENDENCIES = libv4l jpeg $(TARGET_NLS_DEPENDENCIES)\n# uses C99 features\nZBAR_CONF_ENV = \\\n\tCFLAGS=\"$(TARGET_CFLAGS) -std=gnu99\" \\\n\tLIBS=$(TARGET_NLS_LIBS)\nZBAR_CONF_OPTS = \\\n\t--disable-doc \\\n\t--without-imagemagick \\\n\t--without-qt \\\n\t--without-qt5 \\\n\t--without-gtk \\\n\t--without-x \\\n\t--without-java\n\nifeq ($(BR2_PACKAGE_DBUS),y)\nZBAR_DEPENDENCIES += dbus\nZBAR_CONF_OPTS += --with-dbus\nelse\nZBAR_CONF_OPTS += --without-dbus\nendif\n\nifeq ($(BR2_PACKAGE_PYTHON3),y)\nZBAR_DEPENDENCIES += host-python3 python3\nZBAR_CONF_OPTS += --with-python=python3\nZBAR_CONF_ENV += PYTHON_CONFIG=\"$(STAGING_DIR)/usr/bin/python3-config\"\nelse\nZBAR_CONF_OPTS += --with-python=no\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/zd1211-firmware/Config.in",
    "content": "config BR2_PACKAGE_ZD1211_FIRMWARE\n\tbool \"zd1211-firmware\"\n\thelp\n\t  Firmware for the ZyDAS ZD1211 / Atheros AR5007UG wifi devices.\n\n\t  https://sourceforge.net/projects/zd1211/\n"
  },
  {
    "path": "package/zd1211-firmware/zd1211-firmware.hash",
    "content": "# Locally computed:\nsha256  f11d3810d7f72833997f634584a586dcced71a353f965abf81062ec431d02b12  zd1211-firmware-1.5.tar.bz2\nsha256  e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING\n"
  },
  {
    "path": "package/zd1211-firmware/zd1211-firmware.mk",
    "content": "################################################################################\n#\n# zd1211-firmware\n#\n################################################################################\n\nZD1211_FIRMWARE_VERSION = 1.5\nZD1211_FIRMWARE_SITE = http://downloads.sourceforge.net/project/zd1211/zd1211-firmware/$(ZD1211_FIRMWARE_VERSION)\nZD1211_FIRMWARE_SOURCE = zd1211-firmware-$(ZD1211_FIRMWARE_VERSION).tar.bz2\nZD1211_FIRMWARE_LICENSE = GPL-2.0\nZD1211_FIRMWARE_LICENSE_FILES = COPYING\n\n# Not all of the firmware files are used\ndefine ZD1211_FIRMWARE_INSTALL_TARGET_CMDS\n\t$(INSTALL) -d -m 0755 $(TARGET_DIR)/lib/firmware/zd1211/\n\tcp -dpf $(@D)/zd1211*{ub,uphr,ur} $(TARGET_DIR)/lib/firmware/zd1211\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/zeromq/Config.in",
    "content": "comment \"zeromq needs a toolchain w/ C++, threads\"\n\tdepends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS)\n\nconfig BR2_PACKAGE_ZEROMQ\n\tbool \"zeromq\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\thelp\n\t  ØMQ (ZeroMQ, 0MQ, zmq) looks like an embeddable networking\n\t  library but acts like a concurrency framework. It gives you\n\t  sockets that carry whole messages across various transports\n\t  like in-process, inter- process, TCP, and multicast. You can\n\t  connect sockets N-to-N with patterns like fanout, pub-sub,\n\t  task distribution, and request-reply. It's fast enough to\n\t  be the fabric for clustered products. Its asynchronous I/O\n\t  model gives you scalable multicore applications, built as\n\t  asynchronous message-processing tasks. It has a score of\n\t  language APIs and runs on most operating systems.\n\n\t  ØMQ is from iMatix and is LGPL open source.\n\n\t  http://www.zeromq.org/\n\nif BR2_PACKAGE_ZEROMQ\n\ncomment \"norm support needs a toolchain w/ dynamic library\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_ZEROMQ_NORM\n\tbool \"NORM support\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_NORM\n\thelp\n\t  Add support for NACK-Oriented Reliable Multicast (RFC 5740)\n\t  protocol.\n\ncomment \"PGM/EPGM support needs a toolchain w/ wchar\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on !BR2_USE_WCHAR\n\nconfig BR2_PACKAGE_ZEROMQ_PGM\n\tbool \"PGM/EPGM support\"\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_2\n\tdepends on BR2_TOOLCHAIN_HAS_SYNC_4\n\tdepends on BR2_USE_WCHAR # openpgm\n\tselect BR2_PACKAGE_OPENPGM\n\thelp\n\t  Add support for Pragmatic General Multicast protocol (RFC\n\t  3208) implemented either over raw IP packets or UDP\n\t  datagrams (encapsulated PGM).\n\nconfig BR2_PACKAGE_ZEROMQ_DRAFTS\n\tbool \"Draft APIs support\"\n\thelp\n\t  Enable unstable draft ZeroMQ APIs\n\n\t  https://pyzmq.readthedocs.io/en/latest/draft.html\n\nconfig BR2_PACKAGE_ZEROMQ_WEBSOCKET\n\tbool \"WebSocket support\"\n\thelp\n\t  Enable WebSocket transport\n\nendif\n"
  },
  {
    "path": "package/zeromq/zeromq.hash",
    "content": "# From https://github.com/zeromq/libzmq/releases\nmd5  c897d4005a3f0b8276b00b7921412379  zeromq-4.3.4.tar.gz\nsha1  47277a64749049123d1401600e8cfbab10a3ae28  zeromq-4.3.4.tar.gz\n# Locally computed\nsha256  c593001a89f5a85dd2ddf564805deb860e02471171b3f204944857336295c3e5  zeromq-4.3.4.tar.gz\nsha256  4fd86507c9b486764343065a9e035222869a27b5789efeb4fd93edc85412d7a3  COPYING\nsha256  83f32abe61ee58ffb1b007412c08415168c052501dbf56d7a47aaaac52b03ef6  COPYING.LESSER\n"
  },
  {
    "path": "package/zeromq/zeromq.mk",
    "content": "################################################################################\n#\n# zeromq\n#\n################################################################################\n\nZEROMQ_VERSION = 4.3.4\nZEROMQ_SITE = https://github.com/zeromq/libzmq/releases/download/v$(ZEROMQ_VERSION)\nZEROMQ_INSTALL_STAGING = YES\nZEROMQ_DEPENDENCIES = util-linux\nZEROMQ_CONF_OPTS = --disable-Werror --without-documentation\nZEROMQ_LICENSE = LGPL-3.0+ with exceptions\nZEROMQ_LICENSE_FILES = COPYING COPYING.LESSER\nZEROMQ_CPE_ID_VENDOR = zeromq\nZEROMQ_CPE_ID_PRODUCT = libzmq\n\n# Assume these flags are always available. It is true, at least for\n# SOCK_CLOEXEC, since linux v2.6.27.\n# Note: the flag TCP_KEEPALIVE is NOT available so we do not include it.\nZEROMQ_CONF_ENV = libzmq_cv_sock_cloexec=yes \\\n\tlibzmq_cv_so_keepalive=yes \\\n\tlibzmq_cv_tcp_keepcnt=yes \\\n\tlibzmq_cv_tcp_keepidle=yes \\\n\tlibzmq_cv_tcp_keepintvl=yes\n\n# Internal error, aborting at dwarf2cfi.c:2752 in connect_traces\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58864\nifeq ($(BR2_m68k_cf),y)\nZEROMQ_CONF_OPTS += CXXFLAGS=\"$(TARGET_CXXFLAGS) -fno-defer-pop\"\nendif\n\n# Only tools/curve_keygen.c needs this, but it doesn't hurt to pass it\n# for the rest of the build as well (which automatically includes stdc++).\nifeq ($(BR2_STATIC_LIBS),y)\nZEROMQ_CONF_OPTS += LIBS=-lstdc++\nendif\n\nifeq ($(BR2_PACKAGE_ZEROMQ_NORM),y)\nZEROMQ_CONF_OPTS += --with-norm\nZEROMQ_DEPENDENCIES += norm\nelse\nZEROMQ_CONF_OPTS += --without-norm\nendif\n\nifeq ($(BR2_PACKAGE_ZEROMQ_PGM),y)\nZEROMQ_DEPENDENCIES += host-pkgconf openpgm\nZEROMQ_CONF_OPTS += --with-pgm\nelse\nZEROMQ_CONF_OPTS += --without-pgm\nendif\n\nifeq ($(BR2_PACKAGE_ZEROMQ_DRAFTS),y)\nZEROMQ_CONF_OPTS += --enable-drafts\nelse\nZEROMQ_CONF_OPTS += --disable-drafts\nendif\n\nifeq ($(BR2_PACKAGE_ZEROMQ_WEBSOCKET),y)\nZEROMQ_CONF_OPTS += --enable-ws\nelse\nZEROMQ_CONF_OPTS += --disable-ws\nendif\n\nifeq ($(BR2_PACKAGE_GNUTLS),y)\nZEROMQ_DEPENDENCIES += host-pkgconf gnutls\nZEROMQ_CONF_OPTS += --with-tls\nelse\nZEROMQ_CONF_OPTS += --without-tls\nendif\n\nifeq ($(BR2_PACKAGE_LIBBSD),y)\nZEROMQ_DEPENDENCIES += host-pkgconf libbsd\nZEROMQ_CONF_OPTS += --enable-libbsd\nelse\nZEROMQ_CONF_OPTS += --disable-libbsd\nendif\n\nifeq ($(BR2_PACKAGE_LIBNSS),y)\nZEROMQ_DEPENDENCIES += host-pkgconf libnss\nZEROMQ_CONF_OPTS += --with-nss\nelse\nZEROMQ_CONF_OPTS += --without-nss\nendif\n\n# ZeroMQ uses libsodium if it's available.\nifeq ($(BR2_PACKAGE_LIBSODIUM),y)\nZEROMQ_DEPENDENCIES += libsodium\nZEROMQ_CONF_OPTS += --with-libsodium=\"$(STAGING_DIR)/usr\"\nelse\nZEROMQ_CONF_OPTS += --without-libsodium\nendif\n\nifeq ($(BR2_PACKAGE_LIBUNWIND),y)\nZEROMQ_DEPENDENCIES += libunwind\nZEROMQ_CONF_OPTS += --enable-libunwind\nelse\nZEROMQ_CONF_OPTS += --disable-libunwind\nendif\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/zfs/Config.in",
    "content": "comment \"zfs needs a Linux kernel to be built\"\n\tdepends on !BR2_LINUX_KERNEL\n\ncomment \"zfs needs udev /dev management\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on !BR2_PACKAGE_HAS_UDEV\n\nconfig BR2_PACKAGE_ZFS\n\tbool \"zfs\"\n\tdepends on BR2_LINUX_KERNEL\n\tdepends on BR2_PACKAGE_HAS_UDEV\n\tdepends on BR2_USE_MMU  # util-linux (libblkid)\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS  # libtirpc\n\tselect BR2_PACKAGE_UTIL_LINUX\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBBLKID\n\tselect BR2_PACKAGE_UTIL_LINUX_LIBUUID\n\tselect BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_PACKAGE_LIBAIO\n\tselect BR2_PACKAGE_OPENSSL\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  OpenZFS on Linux and FreeBSD\n\n\t  OpenZFS is an advanced file system and volume manager which\n\t  was originally developed for Solaris and is now maintained by\n\t  the OpenZFS community. This repository contains the code for\n\t  running OpenZFS on Linux and FreeBSD.\n\n\t  This package builds the kernel modules and userland utils\n\t  required to operates with ZFS volumes.\n\n\t  http://zfsonlinux.org/\n"
  },
  {
    "path": "package/zfs/zfs.hash",
    "content": "# From https://github.com/openzfs/zfs/releases/download/zfs-2.0.5/zfs-2.0.5.sha256.asc\nsha256  3a17498d704ebf4c5d7231660f6fb44ae07a1545519f567452a4270851a86ec9  zfs-2.0.5.tar.gz\n\n# Hash for license files:\nsha256  1ffb70c33c4f79f04e947facc5c7851f289609256aacb47fc115f700427d9520  LICENSE\nsha256  f125a37c829705eff3e6f77a9f6c58fd71060f84ab54180b98fafdf94a2021eb  COPYRIGHT\n"
  },
  {
    "path": "package/zfs/zfs.mk",
    "content": "################################################################################\n#\n# zfs\n#\n################################################################################\n\nZFS_VERSION = 2.0.5\nZFS_SITE = https://github.com/openzfs/zfs/releases/download/zfs-$(ZFS_VERSION)\nZFS_LICENSE = CDDL\nZFS_LICENSE_FILES = LICENSE COPYRIGHT\nZFS_CPE_ID_VENDOR = openzfs\nZFS_CPE_ID_PRODUCT = openzfs\n\nZFS_AUTORECONF = YES\n\nZFS_DEPENDENCIES = libaio openssl udev util-linux zlib\n\n# sysvinit installs only a commented-out modules-load.d/ config file\nZFS_CONF_OPTS = \\\n\t--with-linux=$(LINUX_DIR) \\\n\t--with-linux-obj=$(LINUX_DIR) \\\n\t--disable-rpath \\\n\t--disable-sysvinit\n\nifeq ($(BR2_PACKAGE_LIBTIRPC),y)\nZFS_DEPENDENCIES += libtirpc\nZFS_CONF_OPTS += --with-tirpc\nelse\nZFS_CONF_OPTS += --without-tirpc\nendif\n\nifeq ($(BR2_INIT_SYSTEMD),y)\n# Installs the optional systemd generators, units, and presets files.\nZFS_CONF_OPTS += --enable-systemd\nelse\nZFS_CONF_OPTS += --disable-systemd\nendif\n\n# The optional PyZFS uses different scripts depending on the python\n# version (ex: arc_summary2 or arc_summary3).\nifeq ($(BR2_PACKAGE_PYTHON),y)\nZFS_DEPENDENCIES += python python-setuptools host-python-cffi\nZFS_CONF_ENV += \\\n\tPYTHON=$(HOST_DIR)/usr/bin/python2 \\\n\tPYTHON_CPPFLAGS=\"`$(STAGING_DIR)/usr/bin/python2-config --includes`\" \\\n\tPYTHON_LIBS=\"`$(STAGING_DIR)/usr/bin/python2-config --ldflags`\" \\\n\tPYTHON_SITE_PKG=\"/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages\"\nZFS_CONF_OPTS += --enable-pyzfs\nelse ifeq ($(BR2_PACKAGE_PYTHON3),y)\nZFS_DEPENDENCIES += python3 python-setuptools host-python-cffi\nZFS_CONF_ENV += \\\n\tPYTHON=$(HOST_DIR)/usr/bin/python3 \\\n\tPYTHON_CPPFLAGS=\"`$(STAGING_DIR)/usr/bin/python3-config --includes`\" \\\n\tPYTHON_LIBS=\"`$(STAGING_DIR)/usr/bin/python3-config --ldflags`\" \\\n\tPYTHON_EXTRA_LIBS=\"`$(STAGING_DIR)/usr/bin/python3-config --libs --embed`\" \\\n\tPYTHON_SITE_PKG=\"/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages\"\nZFS_CONF_OPTS += --enable-pyzfs\nelse\nZFS_CONF_OPTS += --disable-pyzfs --without-python\nendif\n\nifeq ($(BR2_PACKAGE_LINUX_PAM),y)\nZFS_DEPENDENCIES += linux-pam\nZFS_CONF_ENV += --enable-pam=yes\nelse\nZFS_CONF_OPTS += --disable-pam\nendif\n\n# ZFS userland tools are unfunctional without the Linux kernel modules.\nZFS_MODULE_SUBDIRS = \\\n\tmodule/avl \\\n\tmodule/icp \\\n\tmodule/lua \\\n\tmodule/nvpair \\\n\tmodule/spl \\\n\tmodule/unicode \\\n\tmodule/zcommon \\\n\tmodule/zstd \\\n\tmodule/zfs\n\n# These requirements will be validated by zfs/config/kernel-config-defined.m4\ndefine ZFS_LINUX_CONFIG_FIXUPS\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_DEBUG_LOCK_ALLOC)\n\t$(call KCONFIG_DISABLE_OPT,CONFIG_TRIM_UNUSED_KSYMS)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_DEFLATE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_ZLIB_DEFLATE)\n\t$(call KCONFIG_ENABLE_OPT,CONFIG_ZLIB_INFLATE)\nendef\n\n$(eval $(kernel-module))\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/zic/0001-remove-dependency-check-on-version-file.patch",
    "content": "From 4ad8932f93c490d15586b1def3863e9580e6eceb Mon Sep 17 00:00:00 2001\nFrom: Martin Bark <martin@barkynet.com>\nDate: Sat, 3 Dec 2016 13:51:50 +0000\nSubject: [PATCH] remove dependency check on version file\n\n$(VERSION_DEPS) includes dependencies from tzdata meaning applications\nsuch as zic can't build from tzcode on their own.  Remove the dependency\nto $(VERSION_DEPS) since it is not necessary to check for version updates\nin released code.  This solves building zic from tzcode without needing\ntzdata.\n\nSigned-off-by: Martin Bark <martin@barkynet.com>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 1b714a8..00d2c09 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -587,7 +587,7 @@ INSTALL:\tALL install date.1\n # Otherwise, use $(VERSION) unless it is \"unknown\" and there is already\n # a 'version' file, in which case reuse the existing 'version' contents\n # and append \"-dirty\" if the contents do not already end in \"-dirty\".\n-version:\t$(VERSION_DEPS)\n+version:\n \t\t{ (type git) >/dev/null 2>&1 && \\\n \t\t  V=`git describe --match '[0-9][0-9][0-9][0-9][a-z]*' \\\n \t\t\t\t--abbrev=7 --dirty` || \\\n-- \n2.7.4\n\n"
  },
  {
    "path": "package/zic/zic.hash",
    "content": "# From https://mm.icann.org/pipermail/tz-announce/2020-December/000064.html\nsha512  5f6bf1b508434842eb9dacacc744b5f3375c35b88e401ef372b5fde80ad2f523484fe52a6e99460e402230406ebf6a9261a97efde45a610f8e8085893d55c4ed  tzcode2020f.tar.gz\n# Locally computed:\nsha256  0613408568889f5739e5ae252b722a2659c02002839ad970a63dc5e9174b27cf  LICENSE\n"
  },
  {
    "path": "package/zic/zic.mk",
    "content": "################################################################################\n#\n# zic\n#\n################################################################################\n\nZIC_VERSION = 2020f\nZIC_SOURCE = tzcode$(ZIC_VERSION).tar.gz\nZIC_SITE = https://www.iana.org/time-zones/repository/releases\nZIC_STRIP_COMPONENTS = 0\nZIC_LICENSE = Public domain\nZIC_LICENSE_FILES = LICENSE\n\ndefine HOST_ZIC_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) -C $(@D) zic\nendef\n\ndefine HOST_ZIC_INSTALL_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/zic $(HOST_DIR)/sbin/zic\n\t$(INSTALL) -D -m 644 $(@D)/tzfile.h $(HOST_DIR)/include/tzfile.h\nendef\n\n$(eval $(host-generic-package))\n\nZIC = $(HOST_DIR)/sbin/zic\n"
  },
  {
    "path": "package/zip/0001-configure-Remove-Check-C-compiler-type-optimization-.patch",
    "content": "From 0f5e1658c05746b17f05a1bade263cad19b37e79 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Thu, 22 Jan 2015 15:20:25 +0100\nSubject: [PATCH 1/6] configure: Remove \"Check C compiler type (optimization\n options)\"\n\nThis test force optimization to -O3\nwhile it is already set in CFLAGS\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n unix/configure | 98 ----------------------------------------------------------\n 1 file changed, 98 deletions(-)\n\ndiff --git a/unix/configure b/unix/configure\nindex 73ba803..4185fee 100644\n--- a/unix/configure\n+++ b/unix/configure\n@@ -22,108 +22,10 @@ LFLAGS1=''\n LFLAGS2=''\n LN=\"ln -s\"\n \n-CFLAGS_OPT=''\n-\n # bzip2\n IZ_BZIP2=${3-}\n CFLAGS_BZ=''\n \n-\n-echo 'Check C compiler type (optimization options)'\n-# Sun C?\n-cat > conftest.c << _EOF_\n-int main()\n-{\n-#ifndef __SUNPRO_C\n-   bad code\n-#endif\n-   return 0;\n-}\n-_EOF_\n-$CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null\n-if test $? -eq 0; then\n-  CFLAGS_OPT='-xO3'\n-  echo \"  Sun C ($CFLAGS_OPT)\"\n-else\n-  # Tru64 DEC/Compaq/HP C?\n-  cat > conftest.c << _EOF_\n-int main()\n-{\n-#ifndef __DECC\n-   bad code\n-#endif\n-   return 0;\n-}\n-_EOF_\n-  $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null\n-  if test $? -eq 0; then\n-    CFLAGS_OPT='-O3'\n-    echo \"  DEC C ($CFLAGS_OPT)\"\n-  else\n-    # HP-UX HP C?\n-    cat > conftest.c << _EOF_\n-int main()\n-{\n-#ifdef __GNUC__\n-   bad code\n-#endif\n-#ifndef __hpux\n-   bad code\n-#endif\n-   return 0;\n-}\n-_EOF_\n-    $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null\n-    if test $? -eq 0; then\n-      # HP-UX, not GCC.  Lame bundled or real ANSI compiler?\n-      CFLAGS_OPT_TRY=\"+O3 +Onolimit\"\n-      $CC $CFLAGS $CFLAGS_OPT_TRY -c conftest.c 2>&1 | \\\n-       grep '(Bundled)' > /dev/null\n-      if test $? -ne 0; then\n-        CFLAGS_OPT=\"$CFLAGS_OPT_TRY\"\n-        echo \"  HP-UX ANSI C ($CFLAGS_OPT)\"\n-      else\n-        echo '  HP-UX Bundled C (no opt)'\n-      fi\n-    else\n-      # GNU C?\n-      cat > conftest.c << _EOF_\n-int main()\n-{\n-#ifndef __GNUC__\n-   bad code\n-#endif\n-   return 0;\n-}\n-_EOF_\n-      $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null\n-      if test $? -eq 0; then\n-        CFLAGS_OPT='-O3'\n-        echo \"  GNU C ($CFLAGS_OPT)\"\n-        # Special Mac OS X shared library \"ld\" option?\n-        if test ` uname -s 2> /dev/null ` = 'Darwin'; then\n-          lf='-Wl,-search_paths_first'\n-          $CC $CFLAGS $lf conftest.c > /dev/null 2>/dev/null\n-          if test $? -eq 0; then\n-            LFLAGS2=\"${LFLAGS2} ${lf}\"\n-          fi\n-          rm -f conftest\n-        fi\n-      else\n-        CFLAGS_OPT='-O'\n-        echo \"  Other-unknown C ($CFLAGS_OPT)\"\n-      fi\n-    fi\n-  fi\n-fi\n-\n-# optimization flags\n-if test -n \"${CFLAGS_OPT}\"; then\n-  CFLAGS=\"${CFLAGS} ${CFLAGS_OPT}\"\n-  CFLAGS_BZ=\"${CFLAGS_BZ} ${CFLAGS_OPT}\"\n-fi\n-\n-\n # bzip2\n \n echo \"Check bzip2 support\"\n-- \n1.9.3\n\n"
  },
  {
    "path": "package/zip/0002-configure-Don-t-use-host-CPP.patch",
    "content": "From fc5c889131ff6270e1028cc7edd87e7f10a7da6d Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Thu, 22 Jan 2015 15:21:31 +0100\nSubject: [PATCH 2/6] configure: Don't use host CPP\n\nCPP is redefined if a cpp binary (/lib/cpp) is found on the host.\n\nUse the CPP=\"${CC} -E\" allows to pass the following checks:\nCheck if we can use asm code (for -DASMV)\nCheck if compiler generates underlines (for -DASM_CRC)\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n unix/configure | 7 -------\n 1 file changed, 7 deletions(-)\n\ndiff --git a/unix/configure b/unix/configure\nindex 4185fee..489009f 100644\n--- a/unix/configure\n+++ b/unix/configure\n@@ -122,13 +122,6 @@ fi\n echo Check for the C preprocessor\n # on SVR4, cc -E does not produce correct assembler files. Need /lib/cpp.\n CPP=\"${CC} -E\"\n-# solaris as(1) needs -P, maybe others as well ?\n-[ -f /usr/ccs/lib/cpp ] && CPP=\"/usr/ccs/lib/cpp -P\"\n-[ -f /usr/lib/cpp ] && CPP=/usr/lib/cpp\n-[ -f /lib/cpp ] && CPP=/lib/cpp\n-[ -f /usr/bin/cpp ] && CPP=/usr/bin/cpp\n-[ -f /xenix ] && CPP=\"${CC} -E\"\n-[ -f /lynx.os ] && CPP=\"${CC} -E\"\n \n echo \"#include <stdio.h>\" > conftest.c\n $CPP conftest.c >/dev/null 2>/dev/null || CPP=\"${CC} -E\"\n-- \n1.9.3\n\n"
  },
  {
    "path": "package/zip/0003-Makefile-Use-CFLAGS-from-command-line.patch",
    "content": "From 93189390de7322da78bc5b807f4cadaff46393c9 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Thu, 22 Jan 2015 22:45:30 +0100\nSubject: [PATCH 3/6] Makefile: Use CFLAGS from command line\n\nReplace CFLAGS_NOOPT by CFLAGS when calling unix/configure script\nto create 'flags' file which contains all variables used to build\nzip binary.\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n unix/Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/unix/Makefile b/unix/Makefile\nindex abd0c44..db62368 100644\n--- a/unix/Makefile\n+++ b/unix/Makefile\n@@ -177,7 +177,7 @@ uninstall:\n \n \n flags:  unix/configure\n-\tsh unix/configure \"${CC}\" \"${CFLAGS_NOOPT}\" \"${IZ_BZIP2}\"\n+\tsh unix/configure \"${CC}\" \"${CFLAGS}\" \"${IZ_BZIP2}\"\n \n # These symbols, when #defined using -D have these effects on compilation:\n # ZMEM                  - includes C language versions of memset(), memcpy(),\n-- \n1.9.3\n\n"
  },
  {
    "path": "package/zip/0004-configure-use-LDFLAGS-from-command-line.patch",
    "content": "From 5c58b8737dc9ccf9407f6725f6f07b764d6abb22 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Thu, 22 Jan 2015 23:47:55 +0100\nSubject: [PATCH 4/6] configure: use LDFLAGS from command line\n\nThe bzip2 support may not enabled due to a build error\nduring the checking for bzip2 library.\nThe library path (-L) to bzip2 library is missing.\n\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n unix/configure | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/unix/configure b/unix/configure\nindex 489009f..de9fd68 100644\n--- a/unix/configure\n+++ b/unix/configure\n@@ -106,11 +106,11 @@ int main()\n   return 0;\n }\n _EOF_\n-      $CC $CFLAGS -o conftest conftest.c -lbz2 > /dev/null 2>/dev/null\n+      $CC $CFLAGS $LDFLAGS -o conftest conftest.c -lbz2 > /dev/null 2>/dev/null\n       if test $? -eq 0; then\n         echo \"-- OS supports bzip2 - linking in bzip2\"\n         CFLAGS=\"${CFLAGS} -DBZIP2_SUPPORT\"\n-        LFLAGS2=\"${LFLAGS2} -lbz2\"\n+        LFLAGS2=\"${LFLAGS2} ${LDFLAGS} -lbz2\"\n       else\n         echo \"-- Either bzlib.h or libbz2.a not found - no bzip2\"\n       fi\n-- \n1.9.3\n\n"
  },
  {
    "path": "package/zip/0005-unix-configure-remove-GID-UID-size-check.patch",
    "content": "From d8da4e5f0ebed000f880e60b6cca7c575f7ed1c7 Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Fri, 23 Jan 2015 22:13:14 +0100\nSubject: [PATCH 5/6] unix/configure: remove GID/UID size check\n\nThis check can't work for cross-compilation since it\ntry to run a target's binary on the host system.\n\nReported-by: Richard Genoud <richard.genoud@gmail.com>\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n unix/configure | 57 ---------------------------------------------------------\n 1 file changed, 57 deletions(-)\n\ndiff --git a/unix/configure b/unix/configure\nindex de9fd68..7bfc9eb 100644\n--- a/unix/configure\n+++ b/unix/configure\n@@ -237,63 +237,6 @@ _EOF_\n $CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null\n [ $? -ne 0 ] && CFLAGS=\"${CFLAGS} -DNO_OFF_T\"\n \n-\n-echo Check size of UIDs and GIDs\n-echo \"(Now zip stores variable size UIDs/GIDs using a new extra field.  This\"\n-echo \" tests if this OS uses 16-bit UIDs/GIDs and so if the old 16-bit storage\"\n-echo \" should also be used for backward compatibility.)\"\n-# Added 2008-04-15 CS\n-cat > conftest.c << _EOF_\n-# define _LARGEFILE_SOURCE          /* some OSes need this for fseeko */\n-# define _LARGEFILE64_SOURCE\n-# define _FILE_OFFSET_BITS 64       /* select default interface as 64 bit */\n-# define _LARGE_FILES               /* some OSes need this for 64-bit off_t */\n-#include <sys/types.h>\n-#include <sys/stat.h>\n-#include <unistd.h>\n-#include <stdio.h>\n-int main()\n-{\n-  struct stat s;\n-\n-  printf(\"  s.st_uid is %u bytes\\n\", sizeof(s.st_uid));\n-  printf(\"  s.st_gid is %u bytes\\n\", sizeof(s.st_gid));\n-\n-  /* see if have 16-bit UID */\n-  if (sizeof(s.st_uid) != 2) {\n-    return 1;\n-  }\n-  /* see if have 16-bit GID */\n-  if (sizeof(s.st_gid) != 2) {\n-    return 2;\n-  }\n-  return 3;\n-}\n-_EOF_\n-# compile it\n-$CC -o conftest conftest.c >/dev/null 2>/dev/null\n-if [ $? -ne 0 ]; then\n-  echo -- UID/GID test failed on compile - disabling old 16-bit UID/GID support\n-  CFLAGS=\"${CFLAGS} -DUIDGID_NOT_16BIT\"\n-else\n-# run it\n-  ./conftest\n-  r=$?\n-  if [ $r -eq 1 ]; then\n-    echo -- UID not 2 bytes - disabling old 16-bit UID/GID support\n-    CFLAGS=\"${CFLAGS} -DUIDGID_NOT_16BIT\"\n-  elif [ $r -eq 2 ]; then\n-    echo -- GID not 2 bytes - disabling old 16-bit UID/GID support\n-    CFLAGS=\"${CFLAGS} -DUIDGID_NOT_16BIT\"\n-  elif [ $r -eq 3 ]; then\n-    echo -- 16-bit UIDs and GIDs - keeping old 16-bit UID/GID support\n-  else\n-    echo -- test failed - conftest returned $r - disabling old 16-bit UID/GID support\n-    CFLAGS=\"${CFLAGS} -DUIDGID_NOT_16BIT\"\n-  fi\n-fi\n-\n-\n # Now we set the 64-bit file environment and check the size of off_t\n # Added 11/4/2003 EG\n # Revised 8/12/2004 EG\n-- \n1.9.3\n\n"
  },
  {
    "path": "package/zip/0006-unix-configure-borrow-the-LFS-test-from-autotools.patch",
    "content": "From fc392c939b9a18959482f588aff0afc29dd6d30a Mon Sep 17 00:00:00 2001\nFrom: Romain Naour <romain.naour@openwide.fr>\nDate: Fri, 23 Jan 2015 22:20:18 +0100\nSubject: [PATCH 6/6] unix/configure: borrow the LFS test from autotools.\n\nInfozip's LFS check can't work for cross-compilation\nsince it try to run a target's binary on the host system.\n\nInstead, use to LFS test used by autotools which is a\ncompilation test.\n(see autotools/lib/autoconf/specific.m4)\n\nReported-by: Richard Genoud <richard.genoud@gmail.com>\nSigned-off-by: Romain Naour <romain.naour@openwide.fr>\n---\n unix/configure | 51 ++++++++++++++++++---------------------------------\n 1 file changed, 18 insertions(+), 33 deletions(-)\n\ndiff --git a/unix/configure b/unix/configure\nindex 7bfc9eb..588f269 100644\n--- a/unix/configure\n+++ b/unix/configure\n@@ -237,9 +237,8 @@ _EOF_\n $CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null\n [ $? -ne 0 ] && CFLAGS=\"${CFLAGS} -DNO_OFF_T\"\n \n-# Now we set the 64-bit file environment and check the size of off_t\n-# Added 11/4/2003 EG\n-# Revised 8/12/2004 EG\n+# LFS check borrowed from autotools sources\n+# lib/autoconf/specific.m4\n \n echo Check for Large File Support\n cat > conftest.c << _EOF_\n@@ -247,24 +246,22 @@ cat > conftest.c << _EOF_\n # define _LARGEFILE64_SOURCE\n # define _FILE_OFFSET_BITS 64       /* select default interface as 64 bit */\n # define _LARGE_FILES        /* some OSes need this for 64-bit off_t */\n+\n #include <sys/types.h>\n-#include <sys/stat.h>\n-#include <unistd.h>\n-#include <stdio.h>\n-int main()\n+ /* Check that off_t can represent 2**63 - 1 correctly.\n+    We can't simply define LARGE_OFF_T to be 9223372036854775807,\n+    since some C++ compilers masquerading as C compilers\n+    incorrectly reject 9223372036854775807.  */\n+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))\n+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721\n+\t\t       && LARGE_OFF_T % 2147483647 == 1)\n+\t\t      ? 1 : -1];\n+int\n+main ()\n {\n-  off_t offset;\n-  struct stat s;\n-  /* see if have 64-bit off_t */\n-  if (sizeof(offset) < 8)\n-    return 1;\n-  printf(\"  off_t is %d bytes\\n\", sizeof(off_t));\n-  /* see if have 64-bit stat */\n-  if (sizeof(s.st_size) < 8) {\n-    printf(\"  s.st_size is %d bytes\\n\", sizeof(s.st_size));\n-    return 2;\n-  }\n-  return 3;\n+\n+  ;\n+  return 0;\n }\n _EOF_\n # compile it\n@@ -272,22 +269,10 @@ $CC -o conftest conftest.c >/dev/null 2>/dev/null\n if [ $? -ne 0 ]; then\n   echo -- no Large File Support\n else\n-# run it\n-  ./conftest\n-  r=$?\n-  if [ $r -eq 1 ]; then\n-    echo -- no Large File Support - no 64-bit off_t\n-  elif [ $r -eq 2 ]; then\n-    echo -- no Large File Support - no 64-bit stat\n-  elif [ $r -eq 3 ]; then\n-    echo -- yes we have Large File Support!\n-    CFLAGS=\"${CFLAGS} -DLARGE_FILE_SUPPORT\"\n-  else\n-    echo -- no Large File Support - conftest returned $r\n-  fi\n+      echo -- yes we have Large File Support!\n+      CFLAGS=\"${CFLAGS} -DLARGE_FILE_SUPPORT\"\n fi\n \n-\n # Check for wide char for Unicode support\n # Added 11/24/2005 EG\n \n-- \n1.9.3\n\n"
  },
  {
    "path": "package/zip/0007-timezone.c-needs-time.h-fixes-musl-compile.patch",
    "content": "From 68abba9fb2ed114ac35712756b1f7700a865c498 Mon Sep 17 00:00:00 2001\nFrom: Peter Seiderer <ps.report@gmx.net>\nDate: Tue, 17 Dec 2019 21:25:01 +0100\nSubject: [PATCH] timezone.c: needs time.h (fixes musl compile)\n\nFixes:\n\n  In file included from util.c:28:\n  timezone.c: In function 'mktime':\n  timezone.c:644:18: error: dereferencing pointer to incomplete type 'struct tm'\n       save_isdst = tm->tm_isdst;\n\n  timezone.c:661:11: warning: implicit declaration of function 'localtime'; did you mean 'dostime'? [-Wimplicit-function-declaration]\n       ltm = localtime(&then);\n\n  timezone.c:661:9: warning: assignment to 'struct tm *' from 'int' makes pointer from integer without a cast [-Wint-conversion]\n       ltm = localtime(&then);\n\nSigned-off-by: Peter Seiderer <ps.report@gmx.net>\n---\n timezone.c | 1 +\n 1 file changed, 1 insertion(+)\n\ndiff --git a/timezone.c b/timezone.c\nindex 485ec02..18aecbd 100644\n--- a/timezone.c\n+++ b/timezone.c\n@@ -41,6 +41,7 @@\n #include \"timezone.h\"\n #include <ctype.h>\n #include <errno.h>\n+#include <time.h>\n \n #ifdef IZTZ_DEFINESTDGLOBALS\n long timezone = 0;\n-- \n2.24.0\n\n"
  },
  {
    "path": "package/zip/0008-fix-musl-static-build.patch",
    "content": "fix musl static build\n\nDon't define NO_DIR if no directory library is needed\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n\ndiff -Nura zip30.orig/unix/configure zip30/unix/configure\n--- zip30.orig/unix/configure\t2021-08-31 21:29:55.219967136 +0200\n+++ zip30/unix/configure\t2021-08-31 21:50:48.239280513 +0200\n@@ -569,8 +569,8 @@\n   done\n   if [ ${OPT} ]; then\n     LFLAGS2=\"${LFLAGS2} ${OPT}\"\n-  else\n-    CFLAGS=\"${CFLAGS} -DNO_DIR\"\n+  #else\n+  #  CFLAGS=\"${CFLAGS} -DNO_DIR\"\n   fi\n fi\n \n"
  },
  {
    "path": "package/zip/Config.in",
    "content": "config BR2_PACKAGE_ZIP\n\tbool \"zip\"\n\thelp\n\t  Zip is a compression and file packaging/archive utility.\n\t  Although highly compatible both with PKWARE's PKZIP and\n\t  PKUNZIP utilities for MS-DOS and with Info-ZIP's own UnZip,\n\t  our primary objectives have been portability and\n\t  other-than-MSDOS functionality.\n\n\t  http://infozip.sourceforge.net/Zip.html\n"
  },
  {
    "path": "package/zip/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_ZIP\n\tbool \"host zip\"\n\thelp\n\t  Zip is a compression and file packaging/archive utility.\n\t  Although highly compatible both with PKWARE's PKZIP and\n\t  PKUNZIP utilities for MS-DOS and with Info-ZIP's own UnZip,\n\t  our primary objectives have been portability and\n\t  other-than-MSDOS functionality.\n\n\t  http://infozip.sourceforge.net/Zip.html\n"
  },
  {
    "path": "package/zip/zip.hash",
    "content": "# Locally calculated from download (no sig, hash)\nsha256\tf0e8bb1f9b7eb0b01285495a2699df3a4b766784c1765a8f1aeedf63c0806369\tzip30.tgz\nsha256\t8ecd6c1bab449127eb665cef1561e73a8bce52e217375f6f466939e137b1e110\tLICENSE\n"
  },
  {
    "path": "package/zip/zip.mk",
    "content": "################################################################################\n#\n# zip\n#\n################################################################################\n\nZIP_VERSION = 3.0\n# The version is really 3.0, but the tarball is named zip30.tgz\nZIP_SOURCE = zip$(subst .,,$(ZIP_VERSION)).tgz\nZIP_SITE = ftp://ftp.info-zip.org/pub/infozip/src\nZIP_LICENSE = Info-ZIP\nZIP_LICENSE_FILES = LICENSE\nZIP_CPE_ID_VENDOR = info-zip_project\nZIP_INSTALL_STAGING = YES\n\nifeq ($(BR2_PACKAGE_BZIP2),y)\nZIP_DEPENDENCIES += bzip2\nendif\n\n# Infozip's default CFLAGS.\nZIP_CFLAGS = -I. -DUNIX\n\n# Disable the support of 16-bit UIDs/GIDs, the test in unix/configure was\n# removed since it can't work for cross-compilation.\nZIP_CFLAGS += -DUIDGID_NOT_16BIT\n\n# infozip already defines _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE when\n# necessary, redefining it on the command line causes some warnings.\nZIP_TARGET_CFLAGS = \\\n\t$(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE,$(TARGET_CFLAGS))\n\ndefine ZIP_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \\\n\t\tCFLAGS=\"$(ZIP_TARGET_CFLAGS) $(ZIP_CFLAGS)\" \\\n\t\tAS=\"$(TARGET_CC) -c\" \\\n\t\t-f unix/Makefile generic\nendef\n\ndefine ZIP_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \\\n\t\tprefix=$(TARGET_DIR)/usr\nendef\n\ndefine ZIP_INSTALLING_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \\\n\t\tprefix=$(STAGING_DIR)/usr\nendef\n\ndefine HOST_ZIP_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) \\\n\t\tCFLAGS=\"$(HOST_CFLAGS) $(ZIP_CFLAGS)\" \\\n\t\tAS=\"$(HOSTCC) -c\" \\\n\t\t-f unix/Makefile generic\nendef\n\ndefine HOST_ZIP_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \\\n\t\tprefix=$(HOST_DIR)\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/zisofs-tools/zisofs-tools.hash",
    "content": "# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit/cdrkit_1.1.11-3.dsc\nsha256  d1c030756ecc182defee9fe885638c1785d35a2c2a297b4604c0e0dcc78e47da  cdrkit_1.1.11.orig.tar.gz\n\n# Locally computed\nsha256  32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670  3rd-party/zisofs_tools/COPYING\n"
  },
  {
    "path": "package/zisofs-tools/zisofs-tools.mk",
    "content": "################################################################################\n#\n# zisofs-tools\n#\n################################################################################\n\nZISOFS_TOOLS_VERSION = 1.1.11\nZISOFS_TOOLS_SOURCE = cdrkit_$(ZISOFS_TOOLS_VERSION).orig.tar.gz\nZISOFS_TOOLS_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit\nZISOFS_TOOLS_LICENSE = GPL-2.0+\nZISOFS_TOOLS_LICENSE_FILES = 3rd-party/zisofs_tools/COPYING\nZISOFS_TOOLS_SUBDIR = 3rd-party/zisofs_tools\nHOST_ZISOFS_TOOLS_DEPENDENCIES = host-zlib\n\n$(eval $(host-autotools-package))\n"
  },
  {
    "path": "package/zlib/Config.in",
    "content": "config BR2_PACKAGE_ZLIB_NG_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_arm\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_i386\n\tdefault y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le\n\tdefault y if BR2_s390x\n\tdefault y if BR2_x86_64\n\nconfig BR2_PACKAGE_ZLIB\n\tbool \"zlib support\"\n\thelp\n\t  Select the desired Zlib library provider.\n\nif BR2_PACKAGE_ZLIB\n\nchoice\n\tprompt \"zlib variant\"\n\tdefault BR2_PACKAGE_LIBZLIB\n\thelp\n\t  Select the desired Zlib library provider.\n\nconfig BR2_PACKAGE_LIBZLIB\n\tbool \"zlib\"\n\tselect BR2_PACKAGE_HAS_ZLIB\n\thelp\n\t  Standard (de)compression library. Used by things like\n\t  gzip and libpng.\n\n\t  http://www.zlib.net\n\nconfig BR2_PACKAGE_ZLIB_NG\n\tbool \"zlib-ng\"\n\tdepends on BR2_PACKAGE_ZLIB_NG_ARCH_SUPPORTS\n\tselect BR2_PACKAGE_HAS_ZLIB\n\thelp\n\t  Zlib replacement with optimizations for\n\t  \"next generation\" systems.\n\n\t  https://github.com/zlib-ng/zlib-ng\n\nendchoice\n\nconfig BR2_PACKAGE_HAS_ZLIB\n\tbool\n\nconfig BR2_PACKAGE_PROVIDES_ZLIB\n\tstring\n\tdefault \"libzlib\" if BR2_PACKAGE_LIBZLIB\n\tdefault \"zlib-ng\" if BR2_PACKAGE_ZLIB_NG\n\nendif\n\n# ensure libzlib is used for the host variant\nconfig BR2_PACKAGE_PROVIDES_HOST_ZLIB\n\tstring\n\tdefault \"host-libzlib\"\n"
  },
  {
    "path": "package/zlib/zlib.mk",
    "content": "################################################################################\n#\n# zlib\n#\n################################################################################\n\n$(eval $(virtual-package))\n$(eval $(host-virtual-package))\n"
  },
  {
    "path": "package/zlib-ng/zlib-ng.hash",
    "content": "# Locally calculated\nsha256  379723c0c954679a50d1d7df43084e2194dc51ecbc9987c889cb129d1f6734bc  zlib-ng-1.9.9-b1.tar.gz\nsha256  d3c80be055d94d798eaa786116e84fa0b010bc11420b5d2060d978ea77845436  LICENSE.md\n"
  },
  {
    "path": "package/zlib-ng/zlib-ng.mk",
    "content": "################################################################################\n#\n# zlib-ng\n#\n################################################################################\n\nZLIB_NG_VERSION = 1.9.9-b1\nZLIB_NG_SITE = $(call github,zlib-ng,zlib-ng,$(ZLIB_NG_VERSION))\nZLIB_NG_LICENSE = Zlib\nZLIB_NG_LICENSE_FILES = LICENSE.md\nZLIB_NG_INSTALL_STAGING = YES\nZLIB_NG_PROVIDES = zlib\n\n# Build with zlib compatible API, gzFile support and optimizations on\nZLIB_NG_CONF_OPTS += \\\n\t-DWITH_GZFILEOP=1 \\\n\t-DWITH_OPTIM=1 \\\n\t-DZLIB_COMPAT=1 \\\n\t-DZLIB_ENABLE_TESTS=OFF\n\n# Enable NEON and ACLE on ARM\nifeq ($(BR2_arm),y)\nZLIB_NG_CONF_OPTS += -DWITH_ACLE=1 -DWITH_NEON=1\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/zlog/Config.in",
    "content": "config BR2_PACKAGE_ZLOG\n\tbool \"zlog\"\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  zlog is a reliable, high-performance, thread safe, flexible,\n\t  clear-model, pure C logging library.\n\n\t  https://github.com/HardySimpson/zlog\n\ncomment \"zlog needs a toolchain w/ threads, dynamic library\"\n\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS\n"
  },
  {
    "path": "package/zlog/zlog.hash",
    "content": "# Locally computed\nsha256  00037ab8d52772a95d645f1dcfd2c292b7cea326b54e63e219a5b7fdcb7e6508  zlog-1.2.15.tar.gz\nsha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING\n"
  },
  {
    "path": "package/zlog/zlog.mk",
    "content": "################################################################################\n#\n# zlog\n#\n################################################################################\n\nZLOG_VERSION = 1.2.15\nZLOG_SITE = $(call github,HardySimpson,zlog,$(ZLOG_VERSION))\nZLOG_LICENSE = LGPL-2.1\nZLOG_LICENSE_FILES = COPYING\nZLOG_INSTALL_STAGING = YES\n\ndefine ZLOG_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE1) CC=\"$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)\" \\\n\t\t-C $(@D) all\nendef\n\ndefine ZLOG_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(STAGING_DIR)/usr -C $(@D) install\nendef\n\ndefine ZLOG_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch",
    "content": "From 93005632eca13d8eda409f6e9496fd5dd69e75b0 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Fri, 4 May 2018 18:38:31 +0200\nSubject: [PATCH] Allow building shared or static library only\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\n\nPatchs retrieved from:\n - https://git.buildroot.net/buildroot/tree/package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch\n - https://git.buildroot.net/buildroot/tree/package/zmqpp/0002-Install-static-library-for-static-builds.patch\n\nBoth patches have been merged in a single one and slightly updated to\nkeep default behavior of building and installing static library\n(BUILD_STATIC is set to yes by default)\n\n[Upstream status: merged (https://github.com/zeromq/zmqpp/pull/218)]\nSigned-off-by: Jörg Krause <joerg.krause@embedded.rocks>\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n---\n Makefile | 24 ++++++++++++++++++++----\n 1 file changed, 20 insertions(+), 4 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 689acaa..e43054c 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -81,6 +81,9 @@ ifeq ($(UNAME_S),Darwin)\n endif\n \n \n+BUILD_SHARED   ?= yes\n+BUILD_STATIC   ?= yes\n+\n CONFIG_FLAGS =\n ifeq ($(CONFIG),debug)\n \tCONFIG_FLAGS = -g -fno-inline -ftemplate-depth-1000\n@@ -95,13 +98,22 @@ ifneq (,$(findstring $(CONFIG),release loadtest))\n \tCONFIG_FLAGS = -O3 -funroll-loops -ffast-math -finline-functions -fomit-frame-pointer -DNO_DEBUG_LOG -DNO_TRACE_LOG -DNDEBUG\n endif\n \n-COMMON_FLAGS = -MMD -std=c++11 -pipe -Wall -fPIC \\\n+COMMON_FLAGS = -MMD -std=c++11 -pipe -Wall \\\n \t-DBUILD_ENV=$(CONFIG) \\\n \t-DBUILD_DATESTAMP='$(APP_DATESTAMP)' \\\n \t-DBUILD_LIBRARY_NAME='\"$(LIBRARY_NAME)\"' \\\n \t-DBUILD_CLIENT_NAME='\"$(CLIENT_TARGET)\"' \\\n \t-I$(SRC_PATH) $(CUSTOM_INCLUDE_PATH)\n \n+ifeq ($(BUILD_SHARED),yes)\n+COMMON_FLAGS += -fPIC\n+LIBRARY_TARGETS += $(LIBRARY_SHARED)\n+endif\n+\n+ifeq ($(BUILD_STATIC),yes)\n+LIBRARY_TARGETS += $(LIBRARY_ARCHIVE)\n+endif\n+\n COMMON_LIBS = -lzmq\n \n LIBRARY_LIBS =\n@@ -150,11 +162,15 @@ install:\n \tmkdir -p $(LIBDIR)\n \tmkdir -p $(PKGCONFIGDIR)\n \tinstall -m 644 $(ALL_LIBRARY_INCLUDES) $(INCLUDEDIR)/$(LIBRARY_DIR)\n-\tinstall -m 755 $(BUILD_PATH)/$(LIBRARY_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_FULL_VERSION_SHARED)\n-\tinstall -m 755 $(BUILD_PATH)/$(LIBRARY_ARCHIVE) $(LIBDIR)/$(LIBRARY_ARCHIVE)\n \tinstall -m 755 $(BUILD_PATH)/$(PKGCONFIG_FILE) $(PKGCONFIGDIR)/$(PKGCONFIG_FILE)\n+ifeq ($(BUILD_SHARED),yes)\n+\tinstall -m 755 $(BUILD_PATH)/$(LIBRARY_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_FULL_VERSION_SHARED)\n \tln -sf $(LIBRARY_FULL_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_VERSION_SHARED)\n \tln -sf $(LIBRARY_FULL_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_SHARED)\n+endif\n+ifeq ($(BUILD_STATIC),yes)\n+\tinstall -m 755 $(BUILD_PATH)/$(LIBRARY_ARCHIVE) $(LIBDIR)/$(LIBRARY_ARCHIVE)\n+endif\n \tif [ -f $(BUILD_PATH)/$(CLIENT_TARGET) ]; then install -m 755 $(BUILD_PATH)/$(CLIENT_TARGET) $(BINDIR); fi\n \t$(LDCONFIG)\n \t@echo \"use make installcheck to test the install\"\n@@ -176,7 +192,7 @@ clean:\n \n client: $(CLIENT_TARGET)\n \n-library: $(LIBRARY_SHARED) $(LIBRARY_ARCHIVE)\n+library: $(LIBRARY_TARGETS)\n \n #\n # BUILD Targets\n-- \n2.14.1\n\n"
  },
  {
    "path": "package/zmqpp/Config.in",
    "content": "config BR2_PACKAGE_ZMQPP\n\tbool \"zmqpp\"\n\t# c++1x support\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # zeromq\n\tdepends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr\n\tselect BR2_PACKAGE_ZEROMQ\n\thelp\n\t  C++ binding for zeromq (ZeroMQ, 0MQ, zmq).\n\n\t  This C++ binding is a 'high-level' library that hides most\n\t  of the C-style interface core zeromq provides.\n\n\t  http://github.com/benjamg/zmqpp\n\ncomment \"zmqpp needs a toolchain w/ C++, threads, gcc >= 4.7\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n\ncomment \"zmqpp needs exception_ptr\"\n\tdepends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\nif BR2_PACKAGE_ZMQPP\n\nconfig BR2_PACKAGE_ZMQPP_CLIENT\n\tbool \"zmqpp client\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # boost\n\tdepends on BR2_USE_WCHAR # boost\n\tselect BR2_PACKAGE_BOOST\n\tselect BR2_PACKAGE_BOOST_PROGRAM_OPTIONS\n\thelp\n\t  Build and install the zmqpp client, a command line tool that\n\t  can be used to listen or send to zeromq sockets.\n\ncomment \"zmqpp client needs a toolchain w/ dynamic library, threads, wchar\"\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \\\n\t\t|| !BR2_USE_WCHAR\n\nendif\n"
  },
  {
    "path": "package/zmqpp/zmqpp.hash",
    "content": "# Locally calculated\nsha256 c1d4587df3562f73849d9e5f8c932ca7dcfc7d8bec31f62d7f35073ef81f4d29  zmqpp-4.2.0.tar.gz\nsha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85  LICENSE\n"
  },
  {
    "path": "package/zmqpp/zmqpp.mk",
    "content": "################################################################################\n#\n# zmqpp\n#\n################################################################################\n\nZMQPP_VERSION = 4.2.0\nZMQPP_SITE = $(call github,zeromq,zmqpp,$(ZMQPP_VERSION))\nZMQPP_INSTALL_STAGING = YES\nZMQPP_DEPENDENCIES = zeromq\nZMQPP_LICENSE = MPL-2.0\nZMQPP_LICENSE_FILES = LICENSE\nZMQPP_MAKE_OPTS = LD=\"$(TARGET_CXX)\" BUILD_PATH=./build PREFIX=/usr\nZMQPP_LDFLAGS = $(TARGET_LDFLAGS) -lpthread\n\n# gcc bug internal compiler error: in merge_overlapping_regs, at\n# regrename.c:304. This bug is fixed since gcc 6.\n# By setting CONFIG to empty, all optimizations such as -funroll-loops\n# -ffast-math -finline-functions -fomit-frame-pointer are disabled,\n# so only set CONFIG for the non-affected cases.\nifneq ($(BR2_or1k):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:)\nZMQPP_CONFIG = $(if $(BR2_ENABLE_RUNTIME_DEBUG),buildroot,release)\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)\nZMQPP_LDFLAGS += -latomic\nendif\n\nifeq ($(BR2_PACKAGE_ZMQPP_CLIENT),y)\nZMQPP_DEPENDENCIES += boost\nendif\n\nifeq ($(BR2_STATIC_LIBS),y)\nZMQPP_MAKE_OPTS += BUILD_STATIC=yes BUILD_SHARED=no\nelse ifeq ($(BR2_SHARED_STATIC_LIBS),y)\nZMQPP_MAKE_OPTS += BUILD_STATIC=yes BUILD_SHARED=yes\nelse ifeq ($(BR2_SHARED_LIBS),y)\nZMQPP_MAKE_OPTS += BUILD_STATIC=no BUILD_SHARED=yes\nendif\n\ndefine ZMQPP_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\tCONFIG=$(ZMQPP_CONFIG) LDFLAGS=\"$(ZMQPP_LDFLAGS)\" \\\n\t\t$(ZMQPP_MAKE_OPTS) $(if $(BR2_PACKAGE_ZMQPP_CLIENT),client,library) -C $(@D)\nendef\n\ndefine ZMQPP_INSTALL_TARGET_CMDS\n\t$(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/include/zmqpp\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\t$(ZMQPP_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install -C $(@D)\nendef\n\ndefine ZMQPP_INSTALL_STAGING_CMDS\n\t$(INSTALL) -m 0755 -d $(STAGING_DIR)/usr/include/zmqpp\n\t$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \\\n\t\t$(ZMQPP_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install -C $(@D)\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "package/znc/Config.in",
    "content": "config BR2_PACKAGE_ZNC\n\tbool \"znc\"\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\tdepends on BR2_USE_MMU # fork()\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_PACKAGE_LIBOPENSSL_ENABLE_BLOWFISH if BR2_PACKAGE_LIBOPENSSL\n\thelp\n\t  Advanced IRC bouncer\n\n\t  http://www.znc.in\n\ncomment \"znc needs a toolchain w/ C++, dynamic library, gcc >= 4.8, threads\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_USE_MMU\n"
  },
  {
    "path": "package/znc/znc.hash",
    "content": "# Locally calculated\nsha256  ff238aae3f2ae0e44e683c4aee17dc8e4fdd261ca9379d83b48a7d422488de0d  znc-1.8.2.tar.gz\nsha256  cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30  LICENSE\n"
  },
  {
    "path": "package/znc/znc.mk",
    "content": "################################################################################\n#\n# znc\n#\n################################################################################\n\nZNC_VERSION = 1.8.2\nZNC_SITE = http://znc.in/releases/archive\nZNC_LICENSE = Apache-2.0\nZNC_LICENSE_FILES = LICENSE\nZNC_CPE_ID_VENDOR = znc\nZNC_DEPENDENCIES = host-pkgconf\nZNC_CONF_OPTS = -DWANT_CYRUS=OFF -DWANT_I18N=OFF -DWANT_PERL=OFF\n\nifeq ($(BR2_PACKAGE_ICU),y)\nZNC_DEPENDENCIES += icu\nZNC_CONF_OPTS += -DWANT_ICU=ON\nelse\nZNC_CONF_OPTS += -DWANT_ICU=OFF\nendif\n\nifeq ($(BR2_PACKAGE_OPENSSL),y)\nZNC_DEPENDENCIES += openssl\nZNC_CONF_OPTS += -DWANT_OPENSSL=ON\nelse\nZNC_CONF_OPTS += -DWANT_OPENSSL=OFF\nendif\n\nifeq ($(BR2_PACKAGE_ZLIB),y)\nZNC_DEPENDENCIES += zlib\nZNC_CONF_OPTS += -DWANT_ZLIB=ON\nelse\nZNC_CONF_OPTS += -DWANT_ZLIB=OFF\nendif\n\n# python support depends on icu\nifeq ($(BR2_PACKAGE_ICU)$(BR2_PACKAGE_PYTHON3),yy)\nZNC_DEPENDENCIES += python3 host-swig\nZNC_CONF_OPTS += \\\n\t-DWANT_PYTHON=ON \\\n\t-DWANT_PYTHON_VERSION=python3 \\\n\t-DWANT_SWIG=ON\nelse\nZNC_CONF_OPTS += \\\n\t-DWANT_PYTHON=OFF \\\n\t-DWANT_SWIG=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/zsh/Config.in",
    "content": "config BR2_PACKAGE_ZSH\n\tbool \"zsh\"\n\tdepends on BR2_USE_MMU # fork()\n\tselect BR2_PACKAGE_NCURSES\n\thelp\n\t  zsh is a shell designed for interactive use, although it is\n\t  also a powerful scripting language. Many of the useful\n\t  features of bash, ksh, and tcsh were incorporated into zsh;\n\t  many original features were added.\n\n\t  http://www.zsh.org/\n"
  },
  {
    "path": "package/zsh/zsh.hash",
    "content": "# From http://www.zsh.org/pub/MD5SUM\nmd5  e02a5428620b3dd268800c7843b3dd4d  zsh-5.8.tar.xz\n# Calculated based on the hash above and after checking signature\n# http://www.zsh.org/pub/zsh-5.8.tar.xz.asc\nsha256  dcc4b54cc5565670a65581760261c163d720991f0d06486da61f8d839b52de27  zsh-5.8.tar.xz\n# Locally calculated\nsha256  d06fdf3ef9b1ec69d6b9e170b0a9516fbad3523261ff1668bde3bfea6e0ef5f5  LICENCE\n"
  },
  {
    "path": "package/zsh/zsh.mk",
    "content": "################################################################################\n#\n# zsh\n#\n################################################################################\n\nZSH_VERSION = 5.8\nZSH_SITE = http://www.zsh.org/pub\nZSH_SOURCE = zsh-$(ZSH_VERSION).tar.xz\nZSH_DEPENDENCIES = ncurses\nZSH_CONF_OPTS = --bindir=/bin\nZSH_CONF_ENV = zsh_cv_sys_nis=no zsh_cv_sys_nis_plus=no\nZSH_LICENSE = MIT-like\nZSH_LICENSE_FILES = LICENCE\nZSH_CPE_ID_VENDOR = zsh\n\nifeq ($(BR2_PACKAGE_GDBM),y)\nZSH_CONF_OPTS += --enable-gdbm\nZSH_DEPENDENCIES += gdbm\nelse\nZSH_CONF_OPTS += --disable-gdbm\nendif\n\nifeq ($(BR2_PACKAGE_LIBCAP),y)\nZSH_CONF_OPTS += --enable-cap\nZSH_DEPENDENCIES += libcap\nelse\nZSH_CONF_OPTS += --disable-cap\nendif\n\nifeq ($(BR2_PACKAGE_PCRE),y)\nZSH_CONF_OPTS += --enable-pcre\nZSH_CONF_ENV += ac_cv_prog_PCRECONF=$(STAGING_DIR)/usr/bin/pcre-config\nZSH_DEPENDENCIES += pcre\nelse\nZSH_CONF_OPTS += --disable-pcre\nendif\n\n# Add /bin/zsh to /etc/shells otherwise some login tools like dropbear\n# can reject the user connection. See man shells.\ndefine ZSH_ADD_ZSH_TO_SHELLS\n\tgrep -qsE '^/bin/zsh$$' $(TARGET_DIR)/etc/shells \\\n\t\t|| echo \"/bin/zsh\" >> $(TARGET_DIR)/etc/shells\nendef\nZSH_TARGET_FINALIZE_HOOKS += ZSH_ADD_ZSH_TO_SHELLS\n\n# Remove versioned zsh-x.y.z binary taking up space\ndefine ZSH_TARGET_INSTALL_FIXUPS\n\trm -f $(TARGET_DIR)/bin/zsh-$(ZSH_VERSION)\nendef\nZSH_POST_INSTALL_TARGET_HOOKS += ZSH_TARGET_INSTALL_FIXUPS\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/zstd/Config.in",
    "content": "config BR2_PACKAGE_ZSTD\n\tbool \"zstd\"\n\thelp\n\t  Zstandard, or zstd as short version, is a fast lossless\n\t  compression algorithm, targeting real-time compression\n\t  scenarios at zlib-level and better compression ratios\n\n\t  The selection of other packages will enable some features:\n\t  xz, lz4 and/or zlib will enable support for corresponding\n\t  compression formats\n\n\t  https://facebook.github.io/zstd\n"
  },
  {
    "path": "package/zstd/Config.in.host",
    "content": "config BR2_PACKAGE_HOST_ZSTD\n\tbool \"host zstd\"\n\thelp\n\t  Zstandard, or zstd as short version, is a fast lossless\n\t  compression algorithm, targeting real-time compression\n\t  scenarios at zlib-level and better compression ratios\n\n\t  https://facebook.github.io/zstd\n"
  },
  {
    "path": "package/zstd/zstd.hash",
    "content": "# From https://github.com/facebook/zstd/releases/download/v1.5.0/zstd-1.5.0.tar.gz.sha256\nsha256  5194fbfa781fcf45b98c5e849651aa7b3b0a008c6b72d4a0db760f3002291e94  zstd-1.5.0.tar.gz\n\n# License files (locally computed)\nsha256  2c1a7fa704df8f3a606f6fc010b8b5aaebf403f3aeec339a12048f1ba7331a0b  LICENSE\nsha256  f9c375a1be4a41f7b70301dd83c91cb89e41567478859b77eef375a52d782505  COPYING\n"
  },
  {
    "path": "package/zstd/zstd.mk",
    "content": "################################################################################\n#\n# zstd\n#\n################################################################################\n\nZSTD_VERSION = 1.5.0\nZSTD_SITE = https://github.com/facebook/zstd/releases/download/v$(ZSTD_VERSION)\nZSTD_INSTALL_STAGING = YES\nZSTD_LICENSE = BSD-3-Clause or GPL-2.0\nZSTD_LICENSE_FILES = LICENSE COPYING\nZSTD_CPE_ID_VENDOR = facebook\nZSTD_CPE_ID_PRODUCT = zstandard\n\nZSTD_OPTS += PREFIX=/usr\nZSTD_OPTS += ZSTD_LEGACY_SUPPORT=0\nifeq ($(BR2_PACKAGE_ZLIB),y)\nZSTD_DEPENDENCIES += zlib\nZSTD_OPTS += HAVE_ZLIB=1\nelse\nZSTD_OPTS += HAVE_ZLIB=0\nendif\n\nifeq ($(BR2_PACKAGE_XZ),y)\nZSTD_DEPENDENCIES += xz\nZSTD_OPTS += HAVE_LZMA=1\nelse\nZSTD_OPTS += HAVE_LZMA=0\nendif\n\nifeq ($(BR2_PACKAGE_LZ4),y)\nZSTD_DEPENDENCIES += lz4\nZSTD_OPTS += HAVE_LZ4=1\nelse\nZSTD_OPTS += HAVE_LZ4=0\nendif\n\n# zstd will append -O3 after $(CFLAGS), use MOREFLAGS to override again\nZSTD_OPTS += MOREFLAGS=\"$(TARGET_OPTIMIZATION)\"\n\nifeq ($(BR2_STATIC_LIBS),y)\nZSTD_BUILD_LIBS = libzstd.a\nZSTD_INSTALL_LIBS = install-static\nelse ifeq ($(BR2_SHARED_LIBS),y)\nZSTD_BUILD_LIBS = lib\nZSTD_INSTALL_LIBS = install-shared\nelse\nZSTD_BUILD_LIBS = lib\nZSTD_INSTALL_LIBS = install-static install-shared\nendif\n\n# prefer zstd-dll unless no library is available\nifeq ($(BR2_STATIC_LIBS),y)\nZSTD_BUILD_PROG_TARGET = zstd-release\nelse\nZSTD_BUILD_PROG_TARGET = zstd-dll\nendif\n\n# The HAVE_THREAD flag is read by the 'programs' makefile but not by  the 'lib'\n# one. Building a multi-threaded binary with a static library (which defaults\n# to single-threaded) gives a runtime error when compressing files.\n# The 'lib' makefile provides specific '%-mt' and '%-nomt' targets for this\n# purpose.\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nZSTD_OPTS += HAVE_THREAD=1\nZSTD_BUILD_LIBS := $(addsuffix -mt,$(ZSTD_BUILD_LIBS))\nelse\nZSTD_OPTS += HAVE_THREAD=0\nZSTD_BUILD_LIBS := $(addsuffix -nomt,$(ZSTD_BUILD_LIBS))\nendif\n# check-package disable OverriddenVariable - override intended\nZSTD_BUILD_LIBS := $(addsuffix -release,$(ZSTD_BUILD_LIBS))\n\ndefine ZSTD_BUILD_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \\\n\t\t-C $(@D)/lib $(ZSTD_BUILD_LIBS) libzstd.pc\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \\\n\t\t-C $(@D)/programs $(ZSTD_BUILD_PROG_TARGET)\nendef\n\ndefine ZSTD_INSTALL_STAGING_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \\\n\t\tDESTDIR=$(STAGING_DIR) PREFIX=/usr -C $(@D)/lib \\\n\t\tinstall-pc install-includes $(ZSTD_INSTALL_LIBS)\nendef\n\ndefine ZSTD_INSTALL_TARGET_CMDS\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) -C $(@D)/programs install\n\t$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \\\n\t\tDESTDIR=$(TARGET_DIR) -C $(@D)/lib $(ZSTD_INSTALL_LIBS)\nendef\n\nHOST_ZSTD_OPTS += PREFIX=$(HOST_DIR)\n\ndefine HOST_ZSTD_BUILD_CMDS\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) $(HOST_ZSTD_OPTS) \\\n\t\t-C $(@D) zstd-release lib-release\nendef\n\ndefine HOST_ZSTD_INSTALL_CMDS\n\t$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) $(HOST_ZSTD_OPTS) \\\n\t\t-C $(@D) install\nendef\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/zxing-cpp/0001-Link-library-with-OpenCV-make-libs-private-not-exported-to-the-users.patch",
    "content": "From 9e5dfa57f3b998bc3049bfa893b20e81dea656df Mon Sep 17 00:00:00 2001\nFrom: Yuri <yuri@rawbw.com>\nDate: Sat, 20 Apr 2019 07:28:26 -0700\nSubject: [PATCH] Link library with OpenCV, not only the executable, make libs\n PRIVATE.\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/glassechidna/zxing-cpp/pull/86]\n---\n CMakeLists.txt | 7 ++++++-\n 1 file changed, 6 insertions(+), 1 deletion(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 738f4e1..efe3aee 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -60,10 +60,12 @@ include_directories(core/src)\n add_library(libzxing ${LIBZXING_FILES})\n set_target_properties(libzxing PROPERTIES PREFIX \"\")\n \n+set(libzxing_LIBS \"\")\n+\n find_package(Iconv)\n if(ICONV_FOUND)\n     include_directories(${ICONV_INCLUDE_DIR})\n-    target_link_libraries(libzxing ${ICONV_LIBRARIES})\n+    set(libzxing_LIBS ${libzxing_LIBS} ${ICONV_LIBRARIES})\n else()\n     add_definitions(-DNO_ICONV=1)\n endif()\n@@ -75,9 +77,12 @@ if(OpenCV_FOUND)\n         \"./opencv-cli/src/*.h\"\n     )\n     add_executable(zxing-cv ${OPENCV_ZXING_FILES})\n+    set(libzxing_LIBS ${libzxing_LIBS} ${OpenCV_LIBRARIES})\n     target_link_libraries(zxing-cv libzxing ${OpenCV_LIBRARIES})\n endif()\n \n+target_link_libraries(libzxing PRIVATE ${libzxing_LIBS})\n+\n # Add cli executable.\n file(GLOB_RECURSE ZXING_FILES\n     \"./cli/src/*.cpp\"\n"
  },
  {
    "path": "package/zxing-cpp/0002-CMakeLists-txt-add-BUILD_OPENCV-option.patch",
    "content": "From fe740316af970f57ec511cdeafb512510e4842a9 Mon Sep 17 00:00:00 2001\nFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com>\nDate: Sat, 9 Nov 2019 17:21:13 +0100\nSubject: [PATCH] CMakeLists.txt: add BUILD_OPENCV option\n\nAdd BUILD_OPENCV option to allow the user to disable OpenCV. It is\nespecially useful as opencv library can be built without highgui support\n\nSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>\n[Upstream status: https://github.com/glassechidna/zxing-cpp/pull/90]\n---\n CMakeLists.txt | 7 +++++--\n 1 file changed, 5 insertions(+), 2 deletions(-)\n\ndiff --git a/CMakeLists.txt b/CMakeLists.txt\nindex 738f4e1..12913cd 100644\n--- a/CMakeLists.txt\n+++ b/CMakeLists.txt\n@@ -3,6 +3,7 @@ cmake_minimum_required(VERSION 3.0)\n project(zxing)\n \n option(BUILD_TESTING \"Enable generation of test targets\" OFF)\n+option(BUILD_OPENCV \"Enable OpenCV classes and OpenCV cli executable\" ON)\n \n set(CMAKE_LIBRARY_PATH /opt/local/lib ${CMAKE_LIBRARY_PATH})\n \n@@ -44,8 +45,10 @@ else()\n     set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -std=c++11\")\n endif()\n \n-# OpenCV classes\n-find_package(OpenCV)\n+if (BUILD_OPENCV)\n+    # OpenCV classes\n+    find_package(OpenCV)\n+endif()\n if(OpenCV_FOUND)\n     list(APPEND LIBZXING_FILES\n         opencv/src/zxing/MatSource.cpp\n"
  },
  {
    "path": "package/zxing-cpp/Config.in",
    "content": "comment \"zxing-cpp needs a toolchain w/ C++, dynamic library\"\n\tdepends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS\n\nconfig BR2_PACKAGE_ZXING_CPP\n\tbool \"zxing-cpp\"\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  ZXing-cpp (pronounced \"zebra crossing\") is an open-source,\n\t  multi-format 1D/2D barcode image processing library\n\t  implemented in Java, with ports to other languages. This\n\t  compiles the C++ port.\n\n\t  https://github.com/glassechidna/zxing-cpp\n"
  },
  {
    "path": "package/zxing-cpp/zxing-cpp.hash",
    "content": "# Locally calculated\nsha256 4c2b8601d0e3377143c1a0bbab220146af9fa5a5e29e8fbef42862fe3d38f8e6 zxing-cpp-e0e40ddec63f38405aca5c8c1ff60b85ec8b1f10.tar.gz\n\n# License files\nsha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 COPYING\n"
  },
  {
    "path": "package/zxing-cpp/zxing-cpp.mk",
    "content": "################################################################################\n#\n# zxing-cpp\n#\n################################################################################\n\nZXING_CPP_VERSION = e0e40ddec63f38405aca5c8c1ff60b85ec8b1f10\nZXING_CPP_SITE = $(call github,glassechidna,zxing-cpp,$(ZXING_CPP_VERSION))\nZXING_CPP_LICENSE = Apache-2.0\nZXING_CPP_LICENSE_FILES = COPYING\nZXING_CPP_INSTALL_STAGING = YES\nZXING_CPP_SUPPORTS_IN_SOURCE_BUILD = NO\nZXING_CPP_CONF_OPTS = -DBUILD_TESTING=OFF\n\nifeq ($(BR2_PACKAGE_LIBICONV),y)\nZXING_CPP_DEPENDENCIES += libiconv\nendif\n\nifeq ($(BR2_PACKAGE_OPENCV3_LIB_HIGHGUI),y)\nZXING_CPP_DEPENDENCIES += opencv3\nZXING_CPP_CONF_OPTS += -DBUILD_OPENCV=ON\nelse\nZXING_CPP_CONF_OPTS += -DBUILD_OPENCV=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "package/zynq-boot-bin/zynq-boot-bin.hash",
    "content": "# From https://raw.githubusercontent.com/Xilinx/u-boot-xlnx\nsha1\t940331ee02b0007099effa61e382fe7ea4174054\tzynq-boot-bin.py\n"
  },
  {
    "path": "package/zynq-boot-bin/zynq-boot-bin.mk",
    "content": "################################################################################\n#\n# zynq-boot-bin\n#\n################################################################################\n\nZYNQ_BOOT_BIN_VERSION = 2015.1\nZYNQ_BOOT_BIN_SOURCE = zynq-boot-bin.py\nZYNQ_BOOT_BIN_SITE = https://raw.githubusercontent.com/Xilinx/u-boot-xlnx/xilinx-v$(ZYNQ_BOOT_BIN_VERSION)/tools\nZYNQ_BOOT_BIN_LICENSE = GPL-3.0+\n\nHOST_ZYNQ_BOOT_BIN_DEPENDENCIES = host-python\n\ndefine HOST_ZYNQ_BOOT_BIN_EXTRACT_CMDS\n\tcp $(HOST_ZYNQ_BOOT_BIN_DL_DIR)/$(ZYNQ_BOOT_BIN_SOURCE) $(@D)\nendef\n\ndefine HOST_ZYNQ_BOOT_BIN_INSTALL_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/$(ZYNQ_BOOT_BIN_SOURCE) $(HOST_DIR)/bin/$(ZYNQ_BOOT_BIN_SOURCE)\nendef\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "package/zyre/Config.in",
    "content": "config BR2_PACKAGE_ZYRE\n\tbool \"zyre\"\n\tdepends on BR2_INSTALL_LIBSTDCPP # zeromq\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS # zeromq\n\tdepends on BR2_USE_MMU # czmq\n\tselect BR2_PACKAGE_CZMQ\n\tselect BR2_PACKAGE_ZEROMQ\n\thelp\n\t  An open-source framework for proximity-based peer-to-peer\n\t  applications.\n\n\t  http://zyre.org\n\ncomment \"zyre needs a toolchain w/ C++, threads\"\n\tdepends on BR2_USE_MMU\n\tdepends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS)\n"
  },
  {
    "path": "package/zyre/zyre.hash",
    "content": "# Locally computed\nsha256  624d379dc880025144f58d3a7dc35ea1be4a57ba4e2a58c98ec15a60891be12d  zyre-2.0.1.tar.gz\nsha256  1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5  LICENSE\n"
  },
  {
    "path": "package/zyre/zyre.mk",
    "content": "################################################################################\n#\n# zyre\n#\n################################################################################\n\nZYRE_VERSION = 2.0.1\nZYRE_SITE = $(call github,zeromq,zyre,v$(ZYRE_VERSION))\nZYRE_LICENSE = MPL-2.0\nZYRE_LICENSE_FILES = LICENSE\nZYRE_INSTALL_STAGING = YES\nZYRE_DEPENDENCIES = czmq zeromq host-pkgconf\nZYRE_AUTORECONF = YES\nZYRE_CONF_OPTS = --without-docs\n\ndefine ZYRE_CREATE_CONFIG_DIR\n\tmkdir -p $(@D)/config\nendef\n\nZYRE_POST_PATCH_HOOKS += ZYRE_CREATE_CONFIG_DIR\n\n$(eval $(autotools-package))\n"
  },
  {
    "path": "package/zziplib/Config.in",
    "content": "config BR2_PACKAGE_ZZIPLIB\n\tbool \"zziplib\"\n\tselect BR2_PACKAGE_ZLIB\n\thelp\n\t  The zziplib provides read access to zipped files in a\n\t  zip-archive, using compression based solely on free algorithms\n\t  provided by zlib. It also provides a functionality to overlay\n\t  the archive filesystem with the filesystem of the operating\n\t  system environment.\n\n\t  http://zziplib.sourceforge.net\n"
  },
  {
    "path": "package/zziplib/zziplib.hash",
    "content": "# sha256 locally computed\nsha256  93ef44bf1f1ea24fc66080426a469df82fa631d13ca3b2e4abaeab89538518dc  zziplib-0.13.72.tar.gz\nsha256  94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23  docs/COPYING.LIB\nsha256  c2aa7d58cebd24cb877bbf11d6b13a4bb7cd08b9d7db5d3037ca06c46bf4cfd8  docs/COPYING.MPL\nsha256  1c6da11efe8c43ee853fe5b21501dd72b81831ae84d58ea376bddc0620a5c361  docs/copying.htm\n"
  },
  {
    "path": "package/zziplib/zziplib.mk",
    "content": "################################################################################\n#\n# zziplib\n#\n################################################################################\n\nZZIPLIB_VERSION = 0.13.72\nZZIPLIB_SITE = $(call github,gdraheim,zziplib,v$(ZZIPLIB_VERSION))\nZZIPLIB_LICENSE = LGPL-2.0+ or MPL-1.1\nZZIPLIB_LICENSE_FILES = docs/COPYING.LIB docs/COPYING.MPL docs/copying.htm\nZZIPLIB_CPE_ID_VENDOR = zziplib_project\nZZIPLIB_INSTALL_STAGING = YES\nZZIPLIB_CONF_OPTS += \\\n\t-DZZIPDOCS=OFF \\\n\t-DZZIPTEST=OFF\nZZIPLIB_DEPENDENCIES = host-pkgconf zlib\n\ndefine ZZIPLIB_POST_EXTRACT_FIXUP\n\trm $(@D)/GNUmakefile\nendef\nZZIPLIB_POST_EXTRACT_HOOKS += ZZIPLIB_POST_EXTRACT_FIXUP\n\nifeq ($(BR2_PACKAGE_SDL2),y)\nZZIPLIB_CONF_OPTS += -DZZIPSDL=ON\nZZIPLIB_DEPENDENCIES += sdl2\nelse\nZZIPLIB_CONF_OPTS += -DZZIPSDL=OFF\nendif\n\n$(eval $(cmake-package))\n"
  },
  {
    "path": "support/config-fragments/autobuild/andes-nds32.config",
    "content": "BR2_nds32=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_ANDES_NDS32=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/arm-aarch64.config",
    "content": "BR2_aarch64=y\nBR2_cortex_a72=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-aarch64-glibc.config",
    "content": "BR2_aarch64=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-arcle-hs38-uclibc.config",
    "content": "BR2_arcle=y\nBR2_archs38=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-armv5-uclibc.config",
    "content": "BR2_arm=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-armv7-glibc.config",
    "content": "BR2_arm=y\nBR2_cortex_a9=y\nBR2_ARM_ENABLE_VFP=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_BLEEDING_EDGE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-armv7-musl.config",
    "content": "BR2_arm=y\nBR2_cortex_a9=y\nBR2_ARM_ENABLE_VFP=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-armv7m-uclibc.config",
    "content": "BR2_arm=y\nBR2_cortex_m4=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-m68k-5208-uclibc.config",
    "content": "BR2_m68k=y\nBR2_m68k_cf5208=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-m68k-68040-uclibc.config",
    "content": "BR2_m68k=y\nBR2_m68k_68040=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-microblazeel-uclibc.config",
    "content": "BR2_microblazeel=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-mipsel-uclibc.config",
    "content": "BR2_mipsel=y\n# BR2_MIPS_SOFT_FLOAT is not set\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-mipsel32r6-glibc.config",
    "content": "BR2_mipsel=y\nBR2_mips_32r6=y\n# BR2_MIPS_SOFT_FLOAT is not set\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-nios2-glibc.config",
    "content": "BR2_nios2=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-openrisc-uclibc.config",
    "content": "BR2_or1k=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-powerpc-e500mc-uclibc.config",
    "content": "BR2_powerpc=y\nBR2_powerpc_e500mc=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-powerpc64le-power8-glibc.config",
    "content": "BR2_powerpc64le=y\nBR2_powerpc_power8=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-riscv32-glibc.config",
    "content": "BR2_riscv=y\nBR2_RISCV_32=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_GLIBC_BLEEDING_EDGE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-riscv64-glibc.config",
    "content": "BR2_riscv=y\nBR2_RISCV_ABI_LP64=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_GLIBC_BLEEDING_EDGE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-riscv64-musl.config",
    "content": "BR2_riscv=y\nBR2_RISCV_ABI_LP64=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_MUSL_BLEEDING_EDGE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-sh4-uclibc.config",
    "content": "BR2_sh=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-sparc-uclibc.config",
    "content": "BR2_sparc=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-sparc64-glibc.config",
    "content": "BR2_sparc64=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-x86-64-glibc.config",
    "content": "BR2_x86_64=y\nBR2_x86_corei7=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-x86-64-musl.config",
    "content": "BR2_x86_64=y\nBR2_x86_corei7=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-x86-64-uclibc.config",
    "content": "BR2_x86_64=y\nBR2_x86_corei7=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/bootlin-xtensa-uclibc.config",
    "content": "BR2_xtensa=y\nBR2_XTENSA_CUSTOM=y\nBR2_XTENSA_LITTLE_ENDIAN=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_STABLE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-arc-full-internal.config",
    "content": "BR2_arcle=y\nBR2_TOOLCHAIN_BUILDROOT_LOCALE=y\nBR2_TOOLCHAIN_BUILDROOT_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-arc-internal-glibc.config",
    "content": "BR2_arcle=y\nBR2_archs38=y\nBR2_TOOLCHAIN_BUILDROOT_GLIBC=y\nBR2_TOOLCHAIN_BUILDROOT_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-arm-basic.config",
    "content": "BR2_arm=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\nBR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\nBR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.org/toolchains/tarballs/br-arm-basic-2020.11.2.tar.bz2\"\nBR2_TOOLCHAIN_EXTERNAL_GCC_9=y\nBR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y\n# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-arm-full-nothread.config",
    "content": "BR2_arm=y\nBR2_arm1176jzf_s=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\nBR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\nBR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.org/toolchains/tarballs/br-arm11-full-nothread-2020.11.2.tar.bz2\"\nBR2_TOOLCHAIN_EXTERNAL_GCC_9=y\nBR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y\nBR2_TOOLCHAIN_EXTERNAL_LOCALE=y\n# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS is not set\nBR2_TOOLCHAIN_EXTERNAL_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-arm-full-static.config",
    "content": "BR2_arm=y\nBR2_STATIC_LIBS=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\nBR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\nBR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-static-2020.11.2.tar.bz2\"\nBR2_TOOLCHAIN_EXTERNAL_GCC_9=y\nBR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4=y\nBR2_TOOLCHAIN_EXTERNAL_LOCALE=y\n# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set\nBR2_TOOLCHAIN_EXTERNAL_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-arm-internal-full.config",
    "content": "BR2_arm=y\nBR2_ARM_EABI=y\nBR2_TOOLCHAIN_BUILDROOT_LOCALE=y\nBR2_TOOLCHAIN_BUILDROOT_WCHAR=y\nBR2_TOOLCHAIN_BUILDROOT_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-arm-internal-glibc.config",
    "content": "BR2_arm=y\nBR2_cortex_a8=y\nBR2_TOOLCHAIN_BUILDROOT_GLIBC=y\nBR2_BINUTILS_VERSION_2_36_X=y\nBR2_GCC_VERSION_11_X=y\nBR2_TOOLCHAIN_BUILDROOT_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-arm-internal-musl.config",
    "content": "BR2_arm=y\nBR2_cortex_a8=y\nBR2_TOOLCHAIN_BUILDROOT_MUSL=y\nBR2_TOOLCHAIN_BUILDROOT_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-i386-pentium-mmx-musl.config",
    "content": "BR2_x86_pentium_mmx=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\nBR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\nBR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.net/toolchains/tarballs/br-i386-pentium-mmx-musl-2020.11.2.tar.bz2\"\nBR2_TOOLCHAIN_EXTERNAL_GCC_9=y\nBR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9=y\nBR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y\n# BR2_TOOLCHAIN_EXTERNAL_HAS_SSP is not set\nBR2_TOOLCHAIN_EXTERNAL_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-i386-pentium4-full.config",
    "content": "BR2_x86_pentium4=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\nBR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\nBR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.org/toolchains/tarballs/br-i386-pentium4-full-2020.11.2.tar.bz2\"\nBR2_TOOLCHAIN_EXTERNAL_GCC_9=y\nBR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4=y\nBR2_TOOLCHAIN_EXTERNAL_LOCALE=y\n# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set\nBR2_TOOLCHAIN_EXTERNAL_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-microblazeel-full-internal.config",
    "content": "BR2_microblazeel=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-mips64-n64-full.config",
    "content": "BR2_mips64el=y\nBR2_MIPS_NABI64=y\n# BR2_MIPS_SOFT_FLOAT is not set\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\nBR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.org/toolchains/tarballs/br-mips64-n64-full-2020.11.2.tar.bz2\"\nBR2_TOOLCHAIN_EXTERNAL_GCC_8=y\nBR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y\nBR2_TOOLCHAIN_EXTERNAL_LOCALE=y\nBR2_TOOLCHAIN_EXTERNAL_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config",
    "content": "BR2_mips64el=y\nBR2_mips_64r6=y\nBR2_MIPS_NABI64=y\n# BR2_MIPS_SOFT_FLOAT is not set\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\nBR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\nBR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.org/toolchains/tarballs/br-mips64r6-n64-el-hf-2020.11.2.tar.bz2\"\nBR2_TOOLCHAIN_EXTERNAL_GCC_9=y\nBR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y\nBR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y\nBR2_TOOLCHAIN_EXTERNAL_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config",
    "content": "BR2_powerpc=y\nBR2_powerpc_603e=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\nBR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\nBR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.org/toolchains/tarballs/br-powerpc-603e-basic-cpp-2020.11.2.tar.bz2\"\nBR2_TOOLCHAIN_EXTERNAL_GCC_9=y\nBR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y\n# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set\nBR2_TOOLCHAIN_EXTERNAL_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-powerpc-internal-full.config",
    "content": "BR2_powerpc=y\nBR2_TOOLCHAIN_BUILDROOT_LOCALE=y\nBR2_TOOLCHAIN_BUILDROOT_WCHAR=y\nBR2_TOOLCHAIN_BUILDROOT_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-powerpc64-power7-glibc.config",
    "content": "BR2_powerpc64=y\nBR2_powerpc_power7=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\nBR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.net/toolchains/tarballs/br-powerpc64-power7-glibc-2020.11.2.tar.bz2\"\nBR2_TOOLCHAIN_EXTERNAL_GCC_9=y\nBR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y\nBR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y\nBR2_TOOLCHAIN_EXTERNAL_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-riscv64-full-internal.config",
    "content": "BR2_riscv=y\nBR2_TOOLCHAIN_BUILDROOT_LOCALE=y\nBR2_TOOLCHAIN_BUILDROOT_WCHAR=y\nBR2_TOOLCHAIN_BUILDROOT_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-s390x-z13-internal-glibc.config",
    "content": "BR2_s390x=y\nBR2_s390x_z13=y\nBR2_TOOLCHAIN_BUILDROOT_GLIBC=y\nBR2_TOOLCHAIN_BUILDROOT_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/br-xtensa-full-internal.config",
    "content": "BR2_xtensa=y\nBR2_TOOLCHAIN_BUILDROOT_LOCALE=y\nBR2_TOOLCHAIN_BUILDROOT_CXX=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/linaro-aarch64-be.config",
    "content": "BR2_aarch64_be=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/linaro-aarch64.config",
    "content": "BR2_aarch64=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/linaro-arm.config",
    "content": "BR2_arm=y\nBR2_cortex_a8=y\nBR2_ARM_EABIHF=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/sourcery-arm-armv4t.config",
    "content": "BR2_arm=y\nBR2_arm920t=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/sourcery-arm-thumb2.config",
    "content": "BR2_arm=y\nBR2_cortex_a8=y\nBR2_ARM_EABI=y\nBR2_ARM_INSTRUCTIONS_THUMB2=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y\nBR2_TARGET_OPTIMIZATION=\"\"\n"
  },
  {
    "path": "support/config-fragments/autobuild/sourcery-arm.config",
    "content": "BR2_arm=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/sourcery-mips.config",
    "content": "BR2_mips=y\nBR2_mips_32r2=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/sourcery-mips64.config",
    "content": "BR2_mips64el=y\nBR2_mips_64r2=y\nBR2_MIPS_NABI64=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/sourcery-nios2.config",
    "content": "BR2_nios2=y\nBR2_TOOLCHAIN_EXTERNAL=y\nBR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n"
  },
  {
    "path": "support/config-fragments/autobuild/toolchain-configs.csv",
    "content": "# This file is sorted by \"importance\" of toolchains, so that by\n# default test-pkg tests a useful subset of toolchains\n\n# Toolchains used by default by test-pkg:\n\n# Test a regular uClibc toolchain\nsupport/config-fragments/autobuild/bootlin-armv5-uclibc.config,x86_64\n\n# Test a toolchain with glibc and a very recent gcc version\nsupport/config-fragments/autobuild/bootlin-armv7-glibc.config,x86_64\n\n# Test a noMMU toolchain with no dynamic library support\nsupport/config-fragments/autobuild/bootlin-armv7m-uclibc.config,x86_64\n\n# Test a musl toolchain\nsupport/config-fragments/autobuild/bootlin-x86-64-musl.config,x86_64\n\n# Test a MMU toolchain without dynamic library support\nsupport/config-fragments/autobuild/br-arm-full-static.config,x86_64\n\n# Test a toolchain with an old gcc version (gcc 4.8)\nsupport/config-fragments/autobuild/sourcery-arm.config,x86\n\n# Toolchains used by test-pkg only when the '-a' option is passed:\nsupport/config-fragments/autobuild/andes-nds32.config,x86\nsupport/config-fragments/autobuild/arm-aarch64.config,x86_64\nsupport/config-fragments/autobuild/bootlin-aarch64-glibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-arcle-hs38-uclibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-armv7-musl.config,x86_64\nsupport/config-fragments/autobuild/bootlin-m68k-68040-uclibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-m68k-5208-uclibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-microblazeel-uclibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-mipsel-uclibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-mipsel32r6-glibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-nios2-glibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-openrisc-uclibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-powerpc64le-power8-glibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-powerpc-e500mc-uclibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-riscv32-glibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-riscv64-glibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-riscv64-musl.config,x86_64\nsupport/config-fragments/autobuild/bootlin-sh4-uclibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-sparc-uclibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-sparc64-glibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-x86-64-glibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-x86-64-uclibc.config,x86_64\nsupport/config-fragments/autobuild/bootlin-xtensa-uclibc.config,x86_64\nsupport/config-fragments/autobuild/br-arc-full-internal.config,any\nsupport/config-fragments/autobuild/br-arc-internal-glibc.config,any\nsupport/config-fragments/autobuild/br-arm-basic.config,x86_64\nsupport/config-fragments/autobuild/br-arm-full-nothread.config,x86_64\nsupport/config-fragments/autobuild/br-arm-internal-full.config,any\nsupport/config-fragments/autobuild/br-arm-internal-glibc.config,any\nsupport/config-fragments/autobuild/br-arm-internal-musl.config,any\nsupport/config-fragments/autobuild/br-i386-pentium4-full.config,x86_64\nsupport/config-fragments/autobuild/br-i386-pentium-mmx-musl.config,x86_64\nsupport/config-fragments/autobuild/br-microblazeel-full-internal.config,any\nsupport/config-fragments/autobuild/br-mips64-n64-full.config,x86_64\nsupport/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config,x86_64\nsupport/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config,x86_64\nsupport/config-fragments/autobuild/br-powerpc64-power7-glibc.config,x86_64\nsupport/config-fragments/autobuild/br-powerpc-internal-full.config,any\nsupport/config-fragments/autobuild/br-riscv64-full-internal.config,any\nsupport/config-fragments/autobuild/br-s390x-z13-internal-glibc.config,any\nsupport/config-fragments/autobuild/br-xtensa-full-internal.config,any\nsupport/config-fragments/autobuild/linaro-aarch64.config,x86\nsupport/config-fragments/autobuild/linaro-aarch64-be.config,x86\nsupport/config-fragments/autobuild/linaro-arm.config,x86\nsupport/config-fragments/autobuild/sourcery-arm-armv4t.config,x86\nsupport/config-fragments/autobuild/sourcery-arm-thumb2.config,x86\nsupport/config-fragments/autobuild/sourcery-mips64.config,x86\nsupport/config-fragments/autobuild/sourcery-mips.config,x86\nsupport/config-fragments/autobuild/sourcery-nios2.config,x86\n"
  },
  {
    "path": "support/config-fragments/minimal.config",
    "content": "# This config fragment disables Buildroot options that are turned on by\n# default, in order to arrive at minimal build time.\nBR2_INIT_NONE=y\nBR2_SYSTEM_BIN_SH_NONE=y\n# BR2_PACKAGE_BUSYBOX is not set\n# BR2_TARGET_ROOTFS_TAR is not set\nBR2_COMPILER_PARANOID_UNSAFE_PATH=y\nBR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y\n"
  },
  {
    "path": "support/dependencies/check-host-asciidoc.sh",
    "content": "#!/bin/sh\n\ncandidate=\"$1\" #ignored\n\nasciidoc=`which asciidoc`\nif [ ! -x \"$asciidoc\" ]; then\n\t# echo nothing: no suitable asciidoc found\n\texit 1\nfi\n\n# Output of 'asciidoc --version' examples:\n# asciidoc 8.6.7\nversion=`$asciidoc --version | cut -d\\  -f2`\nmajor=`echo \"$version\" | cut -d. -f1`\nminor=`echo \"$version\" | cut -d. -f2`\nbugfix=`echo \"$version\" | cut -d. -f3`\n\n# To generate the manual, we need asciidoc >= 8.6.3\nmajor_min=8\nminor_min=6\nbugfix_min=3\nif [ $major -gt $major_min ]; then\n\techo $asciidoc\nelse\n\tif [ $major -eq $major_min -a $minor -ge $minor_min ]; then\n\t\techo $asciidoc\n\telse\n\t\tif [ $major -eq $major_min -a $minor -eq $minor_min \\\n\t\t\t-a $bugfix -ge $bugfix_min ]; then\n\t\t\techo $asciidoc\n\t\telse\n\t\t\t# echo nothing: no suitable asciidoc found\n\t\t\texit 1\n\t\tfi\n\tfi\nfi\n"
  },
  {
    "path": "support/dependencies/check-host-bison-flex.mk",
    "content": "# If the system lacks bison or flex, add\n# dependencies to suitable host packages\n#\n# BR2_{BISON,FLES}_HOST_DEPENDENCY should only be used to build code\n# that runs on host, e.g. Kconfig. To build code for target use plain\n# host-{bison,flex}.\n\nifeq ($(shell which bison 2>/dev/null),)\nBR2_BISON_HOST_DEPENDENCY = host-bison\nendif\n\nifeq ($(shell which flex 2>/dev/null),)\nBR2_FLEX_HOST_DEPENDENCY = host-flex\nendif\n"
  },
  {
    "path": "support/dependencies/check-host-cmake.mk",
    "content": "# Set this to either 3.16 or higher, depending on the highest minimum\n# version required by any of the packages bundled in Buildroot. If a\n# package is bumped or a new one added, and it requires a higher\n# version, our cmake infra will catch it and build its own.\n#\nBR2_CMAKE_VERSION_MIN = 3.16\n\nBR2_CMAKE_CANDIDATES ?= cmake cmake3\nBR2_CMAKE ?= $(call suitable-host-package,cmake,\\\n\t$(BR2_CMAKE_VERSION_MIN) $(BR2_CMAKE_CANDIDATES))\nifeq ($(BR2_CMAKE),)\nBR2_CMAKE = $(HOST_DIR)/bin/cmake\nBR2_CMAKE_HOST_DEPENDENCY = host-cmake\nendif\n"
  },
  {
    "path": "support/dependencies/check-host-cmake.sh",
    "content": "#!/bin/sh\n\n# prevent shift error\n[ $# -lt 2 ] && exit 1\n\nmajor_min=\"${1%.*}\"\nminor_min=\"${1#*.}\"\n\nshift\n\nfor candidate; do\n\n    # Try to locate the candidate. Discard it if not located.\n    cmake=`which \"${candidate}\" 2>/dev/null`\n    [ -n \"${cmake}\" ] || continue\n\n    # Extract version X.Y from versions in the form X.Y or X.Y.Z\n    # with X, Y and Z numbers with one or more digits each, e.g.\n    #   3.2     -> 3.2\n    #   3.2.3   -> 3.2\n    #   3.2.42  -> 3.2\n    #   3.10    -> 3.10\n    #   3.10.4  -> 3.10\n    #   3.10.42 -> 3.10\n    # Discard the candidate if no version can be obtained\n    version=\"$(${cmake} --version \\\n               |sed -r -e '/.* ([[:digit:]]+\\.[[:digit:]]+).*$/!d;' \\\n                       -e 's//\\1/'\n              )\"\n    [ -n \"${version}\" ] || continue\n\n    major=\"${version%.*}\"\n    minor=\"${version#*.}\"\n\n    if [ ${major} -gt ${major_min} ]; then\n        echo \"${cmake}\"\n        exit\n    elif [ ${major} -eq ${major_min} -a ${minor} -ge ${minor_min} ]; then\n        echo \"${cmake}\"\n        exit\n    fi\ndone\n\n# echo nothing: no suitable cmake found\nexit 1\n"
  },
  {
    "path": "support/dependencies/check-host-coreutils.mk",
    "content": "# Check whether the host's coreutils are up to date enough\n# to provide 'ln --relative' and 'realpath'.\n\nifeq (,$(call suitable-host-package,coreutils))\nBR2_COREUTILS_HOST_DEPENDENCY = host-coreutils\nendif\n"
  },
  {
    "path": "support/dependencies/check-host-coreutils.sh",
    "content": "#!/bin/sh\n\n# Exit on the first error\nset -e\n\n# Does ln supports the --relative/-r option?\nln --relative --help >/dev/null 2>&1\n\n# Does realpath exist?\nrealpath --help >/dev/null 2>&1\n\necho OK\n"
  },
  {
    "path": "support/dependencies/check-host-gzip.mk",
    "content": "ifeq (,$(call suitable-host-package,gzip))\nBR2_GZIP_HOST_DEPENDENCY = host-gzip\nendif\n"
  },
  {
    "path": "support/dependencies/check-host-gzip.sh",
    "content": "#!/bin/sh\n\ncandidate=\"$1\" # ignored\n\ngzip=\"$(which gzip)\"\nif [ ! -x \"${gzip}\" ]; then\n    # echo nothing: no suitable gzip found\n    exit 1\nfi\n\n# gzip displays its version string on stdout\n# pigz displays its version string on stderr\nversion=\"$(\"${gzip}\" --version 2>&1)\"\ncase \"${version}\" in\n  (*pigz*)\n    # echo nothing: no suitable gzip found\n    exit 1\n    ;;\nesac\n\nprintf \"%s\" \"${gzip}\"\n"
  },
  {
    "path": "support/dependencies/check-host-lzip.mk",
    "content": "ifeq (,$(call suitable-host-package,lzip,$(LZCAT)))\nBR2_LZIP_HOST_DEPENDENCY = host-lzip\nLZCAT = $(HOST_DIR)/bin/lzip -d -c\nendif\n"
  },
  {
    "path": "support/dependencies/check-host-lzip.sh",
    "content": "#!/bin/sh\n\ncandidate=\"$1\"\n\nlzip=`which $candidate 2>/dev/null`\nif [ ! -x \"$lzip\" ]; then\n\tlzip=`which lzip 2>/dev/null`\n\tif [ ! -x \"$lzip\" ]; then\n\t\t# echo nothing: no suitable lzip found\n\t\texit 1\n\tfi\nfi\n\necho $lzip\n"
  },
  {
    "path": "support/dependencies/check-host-make.mk",
    "content": "# Since version 2.28, glibc requires GNU Make >= 4.0\n# https://www.sourceware.org/ml/libc-alpha/2018-08/msg00003.html\n#\n# Set this to either 4.0 or higher, depending on the highest minimum\n# version required by any of the packages bundled in Buildroot. If a\n# package is bumped or a new one added, and it requires a higher\n# version, our package infra will catch it and whine.\n#\nBR2_MAKE_VERSION_MIN = 4.0\n\nBR2_MAKE ?= $(call suitable-host-package,make,\\\n\t$(BR2_MAKE_VERSION_MIN) $(MAKE))\n\nifeq ($(BR2_MAKE),)\nBR2_MAKE = $(HOST_DIR)/bin/host-make -j$(PARALLEL_JOBS)\nBR2_MAKE1 = $(HOST_DIR)/bin/host-make -j1\nBR2_MAKE_HOST_DEPENDENCY = host-make\nelse\nBR2_MAKE = $(MAKE)\nBR2_MAKE1 = $(MAKE1)\nendif\n"
  },
  {
    "path": "support/dependencies/check-host-make.sh",
    "content": "#!/bin/sh\n\n# prevent shift error\n[ $# -lt 2 ] && exit 1\n\nmajor_min=\"${1%.*}\"\nminor_min=\"${1#*.}\"\n\nshift\n\n# The host make program is already checked by dependencies.sh but we\n# want to check the version number even if Buildroot is able to use\n# GNU make >= 3.81 but some packages may require a more recent version.\nmake=\"$1\"\n\n# Output of 'make --version' examples:\n# GNU Make 4.2.1\n# GNU Make 4.0\n# GNU Make 3.81\nversion=`$make --version 2>&1 | sed -e 's/^.* \\([0-9\\.]\\)/\\1/g' -e 's/[-\\\n].*//g' -e '1q'`\n\nmajor=`echo \"$version\" | cut -d. -f1`\nminor=`echo \"$version\" | cut -d. -f2`\n\nif [ $major -lt $major_min ]; then\n\t# echo nothing: no suitable make found\n\texit 1\nfi\n\nif [ $major -eq $major_min -a $minor -lt $minor_min ]; then\n\t# echo nothing: no suitable make found\n\texit 1\nfi\n\n# valid\necho $make\n"
  },
  {
    "path": "support/dependencies/check-host-python3.mk",
    "content": "# Since version 2.29, glibc requires python 3.4 or later to build the GNU C Library.\n# https://www.sourceware.org/ml/libc-alpha/2019-01/msg00723.html\n\nBR2_PYTHON3_VERSION_MIN = 3.4\n\nifeq (,$(call suitable-host-package,python3,$(BR2_PYTHON3_VERSION_MIN) python3 python))\nBR2_PYTHON3_HOST_DEPENDENCY = host-python3\nendif\n"
  },
  {
    "path": "support/dependencies/check-host-python3.sh",
    "content": "#!/bin/sh\n\n# prevent shift error\n[ $# -lt 2 ] && exit 1\n\nversion_min=\"$(echo ${1} | awk '{ split($1, v, \".\"); print v[1] v[2] }')\"\n\nshift\n\n# The host python interpreter is already checked by dependencies.sh but\n# it only check if the version is at least 2.7.\n# We want to check the version number of the python3 interpreter even\n# if Buildroot is able to use any version but some packages may require\n# a more recent version.\n\nfor candidate in \"${@}\" ; do\n\tpython3=`which $candidate 2>/dev/null`\n\tif [ ! -x \"$python3\" ]; then\n\t\tcontinue\n\tfi\n\tversion=`$python3 -V 2>&1 | awk '{ split($2, v, \".\"); print v[1] v[2] }'`\n\n\tif [ $version -lt $version_min ]; then\n\t\t# no suitable python3 found\n\t\tcontinue\n\tfi\n\n\t# suitable python3 found\n\techo $python3\n\tbreak\ndone\n"
  },
  {
    "path": "support/dependencies/check-host-tar.mk",
    "content": "TAR ?= tar\n\nifeq (,$(call suitable-host-package,tar,$(TAR)))\nTAR = $(HOST_DIR)/bin/tar\nBR2_TAR_HOST_DEPENDENCY = host-tar\nendif\n"
  },
  {
    "path": "support/dependencies/check-host-tar.sh",
    "content": "#!/bin/sh\n\ncandidate=\"$1\"\n\ntar=`which $candidate`\nif [ ! -x \"$tar\" ]; then\n\ttar=`which tar`\n\tif [ ! -x \"$tar\" ]; then\n\t\t# echo nothing: no suitable tar found\n\t\texit 1\n\tfi\nfi\n\n# Output of 'tar --version' examples:\n# tar (GNU tar) 1.15.1\n# tar (GNU tar) 1.25\n# bsdtar 2.8.3 - libarchive 2.8.3\nversion=`$tar --version | head -n 1 | sed 's/^.*\\s\\([0-9]\\+\\.\\S\\+\\).*$/\\1/'`\nmajor=`echo \"$version\" | cut -d. -f1`\nminor=`echo \"$version\" | cut -d. -f2`\nbugfix=`echo \"$version\" | cut -d. -f3`\nversion_bsd=`$tar --version | grep 'bsdtar'`\n\n# BSD tar does not have all the command-line options\nif [ -n \"${version_bsd}\" ] ; then\n    # echo nothing: no suitable tar found\n    exit 1\nfi\n\n# Minimal version = 1.27 (previous versions do not correctly unpack archives\n# containing hard-links if the --strip-components option is used or create\n# different gnu long link headers for path elements > 100 characters).\nmajor_min=1\nminor_min=27\n\nif [ $major -lt $major_min ]; then\n\t# echo nothing: no suitable tar found\n\texit 1\nfi\n\nif [ $major -eq $major_min -a $minor -lt $minor_min ]; then\n\t# echo nothing: no suitable tar found\n\texit 1\nfi\n\n# valid\necho $tar\n"
  },
  {
    "path": "support/dependencies/check-host-xzcat.mk",
    "content": "# XZCAT is taken from BR2_XZCAT (defaults to 'xzcat') (see Makefile)\n# If it is not present, build our own host-xzcat\n\nifeq (,$(call suitable-host-package,xzcat,$(XZCAT)))\nBR2_XZCAT_HOST_DEPENDENCY = host-xz\nXZCAT = $(HOST_DIR)/bin/xzcat\nendif\n"
  },
  {
    "path": "support/dependencies/check-host-xzcat.sh",
    "content": "#!/bin/sh\n\ncandidate=\"$1\"\n\nxzcat=`which $candidate 2>/dev/null`\nif [ ! -x \"$xzcat\" ]; then\n\txzcat=`which xzcat 2>/dev/null`\n\tif [ ! -x \"$xzcat\" ]; then\n\t\t# echo nothing: no suitable xzcat found\n\t\texit 1\n\tfi\nfi\n\necho $xzcat\n"
  },
  {
    "path": "support/dependencies/dependencies.mk",
    "content": "################################################################################\n#\n# Check buildroot dependencies and bail out if the user's\n# system is judged to be lacking....\n#\n################################################################################\n\nifeq ($(BR2_FORCE_HOST_BUILD),y)\n# ignore all available host packages\ndefine suitable-host-package\nendef\nelse\n# suitable-host-pkg: calls check-host-$(1).sh shell script. Parameter (2)\n# can be the candidate to be checked. If not present, the check-host-$(1).sh\n# script should use 'which' to find a candidate. The script should return\n# the path to the suitable host tool, or nothing if no suitable tool was found.\ndefine suitable-host-package\n$(if $(1),$(shell support/dependencies/check-host-$(1).sh $(2)))\nendef\nendif\n# host utilities needs host-tar to extract the source code tarballs, so\n# ensure check-host-tar.mk is included before the rest\ninclude support/dependencies/check-host-tar.mk\n-include $(sort $(filter-out %-tar.mk,$(wildcard support/dependencies/check-host-*.mk)))\n\ndependencies:\n\t@MAKE=\"$(MAKE)\" DL_TOOLS=\"$(sort $(DL_TOOLS_DEPENDENCIES))\" \\\n\t\t$(TOPDIR)/support/dependencies/dependencies.sh\n\n################################################################################\n#\n# Toplevel Makefile options\n#\n################################################################################\n.PHONY: dependencies\n"
  },
  {
    "path": "support/dependencies/dependencies.sh",
    "content": "#!/bin/sh\n# vi: set sw=4 ts=4:\n\nexport LC_ALL=C\nTAB=\"$(printf '\\t')\"\nNL=\"\n\"\n\n# Verify that grep works\necho \"WORKS\" | grep \"WORKS\" >/dev/null 2>&1\nif test $? != 0 ; then\n\techo\n\techo \"grep doesn't work\"\n\texit 1\nfi\n\n# Sanity check for CWD in LD_LIBRARY_PATH\ncase \":${LD_LIBRARY_PATH:-unset}:\" in\n(*::*|*:.:*)\n\techo\n\techo \"You seem to have the current working directory in your\"\n\techo \"LD_LIBRARY_PATH environment variable. This doesn't work.\"\n\texit 1\n\t;;\nesac\n\n# Sanity check for CWD in PATH. Having the current working directory\n# in the PATH makes various packages (e.g. toolchain, coreutils...)\n# build process break.\n# PATH should not contain a newline, otherwise it fails in spectacular\n# ways as soon as PATH is referenced in a package rule\n# An empty PATH is technically possible, but in practice we would not\n# even arrive here if that was the case.\ncase \":${PATH:-unset}:\" in\n(*::*|*:.:*)\n\techo\n\techo \"You seem to have the current working directory in your\"\n\techo \"PATH environment variable. This doesn't work.\"\n\texit 1\n\t;;\n(*\" \"*|*\"${TAB}\"*|*\"${NL}\"*)\n\tprintf \"\\n\"\n\tprintf \"Your PATH contains spaces, TABs, and/or newline (\\\\\\n) characters.\\n\"\n\tprintf \"This doesn't work. Fix you PATH.\\n\"\n\texit 1\n\t;;\nesac\n\nif test -n \"$PERL_MM_OPT\" ; then\n\techo\n\techo \"You have PERL_MM_OPT defined because Perl local::lib\"\n\techo \"is installed on your system. Please unset this variable\"\n\techo \"before starting Buildroot, otherwise the compilation of\"\n\techo \"Perl related packages will fail\"\n\texit 1\nfi\n\ncheck_prog_host()\n{\n\tprog=\"$1\"\n\tif ! which $prog > /dev/null ; then\n\t\techo >&2\n\t\techo \"You must install '$prog' on your build machine\" >&2\n\t\texit 1\n\tfi\n}\n\n# Verify that which is installed\ncheck_prog_host \"which\"\n# Verify that sed is installed\ncheck_prog_host \"sed\"\n\n# 'file' must be present and must be exactly /usr/bin/file,\n# otherwise libtool fails in incomprehensible ways.\ncheck_prog_host \"/usr/bin/file\"\n\n# Check make\nMAKE=$(which make 2> /dev/null)\nif [ -z \"$MAKE\" ] ; then\n\techo\n\techo \"You must install 'make' on your build machine\";\n\texit 1;\nfi;\nMAKE_VERSION=$($MAKE --version 2>&1 | sed -e 's/^.* \\([0-9\\.]\\)/\\1/g' -e 's/[-\\ ].*//g' -e '1q')\nif [ -z \"$MAKE_VERSION\" ] ; then\n\techo\n\techo \"You must install 'make' on your build machine\";\n\texit 1;\nfi;\nMAKE_MAJOR=$(echo $MAKE_VERSION | sed -e \"s/\\..*//g\")\nMAKE_MINOR=$(echo $MAKE_VERSION | sed -e \"s/^$MAKE_MAJOR\\.//g\" -e \"s/\\..*//g\" -e \"s/[a-zA-Z].*//g\")\nif [ $MAKE_MAJOR -lt 3 ] || [ $MAKE_MAJOR -eq 3 -a $MAKE_MINOR -lt 81 ] ; then\n\techo\n\techo \"You have make '$MAKE_VERSION' installed.  GNU make >=3.81 is required\"\n\texit 1;\nfi;\n\n# Check host gcc\nCOMPILER=$(which $HOSTCC_NOCCACHE 2> /dev/null)\nif [ -z \"$COMPILER\" ] ; then\n\tCOMPILER=$(which cc 2> /dev/null)\nfi;\nif [ -z \"$COMPILER\" ] ; then\n\techo\n\techo \"You must install 'gcc' on your build machine\";\n\texit 1;\nfi;\n\nCOMPILER_VERSION=$($COMPILER -v 2>&1 | sed -n '/^gcc version/p' |\n\tsed -e 's/^gcc version \\([0-9\\.]\\)/\\1/g' -e 's/[-\\ ].*//g' -e '1q')\nif [ -z \"$COMPILER_VERSION\" ] ; then\n\techo\n\techo \"You must install 'gcc' on your build machine\";\n\texit 1;\nfi;\nCOMPILER_MAJOR=$(echo $COMPILER_VERSION | sed -e \"s/\\..*//g\")\nCOMPILER_MINOR=$(echo $COMPILER_VERSION | sed -e \"s/^$COMPILER_MAJOR\\.//g\" -e \"s/\\..*//g\")\nif [ $COMPILER_MAJOR -lt 4 -o $COMPILER_MAJOR -eq 4 -a $COMPILER_MINOR -lt 8 ] ; then\n\techo\n\techo \"You have gcc '$COMPILER_VERSION' installed.  gcc >= 4.8 is required\"\n\texit 1;\nfi;\n\n# check for host CXX\nCXXCOMPILER=$(which $HOSTCXX_NOCCACHE 2> /dev/null)\nif [ -z \"$CXXCOMPILER\" ] ; then\n\tCXXCOMPILER=$(which c++ 2> /dev/null)\nfi\n\nif [ -z \"$CXXCOMPILER\" ] ; then\n\techo\n\techo \"You may have to install 'g++' on your build machine\"\nfi\nif [ ! -z \"$CXXCOMPILER\" ] ; then\n\tCXXCOMPILER_VERSION=$($CXXCOMPILER -v 2>&1 | sed -n '/^gcc version/p' |\n\t\tsed -e 's/^gcc version \\([0-9\\.]\\)/\\1/g' -e 's/[-\\ ].*//g' -e '1q')\n\tif [ -z \"$CXXCOMPILER_VERSION\" ] ; then\n\t\techo\n\t\techo \"You may have to install 'g++' on your build machine\"\n\tfi\nfi\n\nif [ -n \"$CXXCOMPILER_VERSION\" ] ; then\n\tCXXCOMPILER_MAJOR=$(echo $CXXCOMPILER_VERSION | sed -e \"s/\\..*//g\")\n\tCXXCOMPILER_MINOR=$(echo $CXXCOMPILER_VERSION | sed -e \"s/^$CXXCOMPILER_MAJOR\\.//g\" -e \"s/\\..*//g\")\n\tif [ $CXXCOMPILER_MAJOR -lt 4 -o $CXXCOMPILER_MAJOR -eq 4 -a $CXXCOMPILER_MINOR -lt 8 ] ; then\n\t\techo\n\t\techo \"You have g++ '$CXXCOMPILER_VERSION' installed.  g++ >= 4.8 is required\"\n\t\texit 1\n\tfi\nfi\n\n# Check bash\n# We only check bash is available, setting SHELL appropriately is done\n# in the top-level Makefile, and we mimick the same sequence here\nif   [ -n \"${BASH}\" ]; then :\nelif [ -x /bin/bash ]; then :\nelif [ -z \"$( sh -c 'echo $BASH' )\" ]; then\n\techo\n\techo \"You must install 'bash' on your build machine\"\n\texit 1\nfi\n\n# Check that a few mandatory programs are installed\nmissing_progs=\"no\"\nfor prog in perl tar wget cpio unzip rsync bc ${DL_TOOLS} ; do\n\tif ! which $prog > /dev/null ; then\n\t\techo \"You must install '$prog' on your build machine\";\n\t\tmissing_progs=\"yes\"\n\t\tif test $prog = \"svn\" ; then\n\t\t\techo \"  svn is usually part of the subversion package in your distribution\"\n\t\telif test $prog = \"hg\" ; then\n\t\t\techo \"  hg is usually part of the mercurial package in your distribution\"\n\t\telif test $prog = \"zcat\" ; then\n\t\t\techo \"  zcat is usually part of the gzip package in your distribution\"\n\t\telif test $prog = \"bzcat\" ; then\n\t\t\techo \"  bzcat is usually part of the bzip2 package in your distribution\"\n\t\tfi\n\tfi\ndone\n\nif test \"${missing_progs}\" = \"yes\" ; then\n\texit 1\nfi\n\nPATCH_VERSION=\"$(patch -v 2>/dev/null | sed -n 's/^GNU patch \\(.*\\)/\\1/p')\"\nif [ -z \"${PATCH_VERSION}\" ] ; then\n\techo\n\techo \"You must install GNU patch\"\n\texit 1\nfi\nPATCH_MAJOR=\"$(echo \"${PATCH_VERSION}\" | cut -d . -f 1)\"\nPATCH_MINOR=\"$(echo \"${PATCH_VERSION}\" | cut -d . -f 2)\"\nif [ \"${PATCH_MAJOR}\" -lt 2 ] || [ \"${PATCH_MAJOR}\" -eq 2 -a \"${PATCH_MINOR}\" -lt 7 ] ; then\n\techo\n\techo \"You have GNU patch '${PATCH_VERSION}' installed.  GNU patch >= 2.7 is required\"\n\texit 1;\nfi\n\nif grep ^BR2_NEEDS_HOST_UTF8_LOCALE=y $BR2_CONFIG > /dev/null; then\n\tif ! which locale > /dev/null ; then\n\t\techo\n\t\techo \"You need locale support on your build machine to build a toolchain supporting locales\"\n\t\texit 1 ;\n\tfi\n\tif ! locale -a | grep -q -i -E 'utf-?8$' ; then\n\t\techo\n\t\techo \"You need at least one UTF8 locale to build a toolchain supporting locales\"\n\t\texit 1 ;\n\tfi\nfi\n\nif grep -q ^BR2_NEEDS_HOST_JAVA=y $BR2_CONFIG ; then\n\tcheck_prog_host \"java\"\n\tJAVA_GCJ=$(java -version 2>&1 | grep gcj)\n\tif [ ! -z \"$JAVA_GCJ\" ] ; then\n\t\techo\n\t\techo \"$JAVA_GCJ is not sufficient to compile your package selection.\"\n\t\techo \"Please install an OpenJDK/IcedTea/Oracle Java.\"\n\t\texit 1 ;\n\tfi\nfi\n\nif grep -q ^BR2_HOSTARCH_NEEDS_IA32_LIBS=y $BR2_CONFIG ; then\n\tif test ! -f /lib/ld-linux.so.2 ; then\n\t\techo\n\t\techo \"Your Buildroot configuration uses pre-built tools for the x86 architecture,\"\n\t\techo \"but your build machine uses the x86-64 architecture without the 32 bits compatibility\"\n\t\techo \"library.\"\n\t\techo \"If you're running a Debian/Ubuntu distribution, install the libc6-i386,\"\n\t\techo \"lib32stdc++6, and lib32z1 packages (or alternatively libc6:i386,\"\n\t\techo \"libstdc++6:i386, and zlib1g:i386).\"\n\t\techo \"If you're running a RedHat/Fedora distribution, install the glibc.i686 and\"\n\t\techo \"zlib.i686 packages.\"\n\t\techo \"If you're running an ArchLinux distribution, install lib32-glibc.\"\n\t\techo \"For other distributions, refer to the documentation on how to install the 32 bits\"\n\t\techo \"compatibility libraries.\"\n\t\texit 1\n\tfi\nfi\n\nif grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then\n\tif ! echo \"int main(void) {}\" | gcc -m32 -x c - -o /dev/null 2>/dev/null; then\n\t\techo\n\t\techo \"Your Buildroot configuration needs a compiler capable of building 32 bits binaries.\"\n\t\techo \"If you're running a Debian/Ubuntu distribution, install the gcc-multilib package.\"\n\t\techo \"For other distributions, refer to their documentation.\"\n\t\texit 1\n\tfi\n\n\tif ! echo \"int main(void) {}\" | g++ -m32 -x c++ - -o /dev/null 2>/dev/null; then\n\t\techo\n\t\techo \"Your Buildroot configuration needs a compiler capable of building 32 bits binaries.\"\n\t\techo \"If you're running a Debian/Ubuntu distribution, install the g++-multilib package.\"\n\t\techo \"For other distributions, refer to their documentation.\"\n\t\texit 1\n\tfi\nfi\n\nif grep ^BR2_NEEDS_HOST_GCC_PLUGIN_SUPPORT=y $BR2_CONFIG ; then\n\tif ! echo \"#include <gcc-plugin.h>\" | $HOSTCXX_NOCCACHE -I$($HOSTCXX_NOCCACHE -print-file-name=plugin)/include -x c++ -c - -o /dev/null ; then\n\t\techo\n\t\techo \"Your Buildroot configuration needs a host compiler capable of building gcc plugins.\"\n\t\techo \"If you're running a Debian/Ubuntu distribution, install gcc-X-plugin-dev package.\"\n\t\techo \"For other distributions, refer to their documentation.\"\n\t\texit 1 ;\n\tfi\nfi\n\n# Check that the Perl installation is complete enough for Buildroot.\nrequired_perl_modules=\"Data::Dumper\" # Needed to build host-autoconf\nrequired_perl_modules=\"$required_perl_modules ExtUtils::MakeMaker\" # Used by host-libxml-parser-perl\nrequired_perl_modules=\"$required_perl_modules Thread::Queue\" # Used by host-automake\n\nif grep -q ^BR2_PACKAGE_MPV=y $BR2_CONFIG ; then\n    required_perl_modules=\"$required_perl_modules Math::BigInt\"\n    required_perl_modules=\"$required_perl_modules Math::BigRat\"\nfi\n\nif grep -q ^BR2_PACKAGE_WHOIS=y $BR2_CONFIG ; then\n    required_perl_modules=\"$required_perl_modules autodie\"\nfi\n\nif grep -q -E '^BR2_PACKAGE_(WEBKITGTK|WPEWEBKIT)=y' $BR2_CONFIG ; then\n    required_perl_modules=\"${required_perl_modules} JSON::PP\"\nfi\n\n# This variable will keep the modules that are missing in your system.\nmissing_perl_modules=\"\"\n\nfor pm in $required_perl_modules ; do\n\tif ! perl  -e \"require $pm\" > /dev/null 2>&1 ; then\n\t\tmissing_perl_modules=\"$missing_perl_modules $pm\"\n\tfi\ndone\n\nif [ -n \"$missing_perl_modules\" ] ; then\n\techo \"Your Perl installation is not complete enough; at least the following\"\n\techo \"modules are missing:\"\n\techo\n\tfor pm in $missing_perl_modules ; do\n\t\tprintf \"\\t $pm\\n\"\n\tdone\n\techo\n\texit 1\nfi\n"
  },
  {
    "path": "support/docker/Dockerfile",
    "content": "# This Dockerfile generates the docker image that gets used by Gitlab CI\n# To build it (YYYYMMDD.HHMM is the current date and time in UTC):\n#   docker build -t registry.gitlab.com/buildroot.org/buildroot/base:YYYYMMDD.HHMM support/docker\n#   docker push registry.gitlab.com/buildroot.org/buildroot/base:YYYYMMDD.HHMM\n\n# We use a specific tag for the base image *and* the corresponding date\n# for the repository., so do not forget to update the apt-sources.list\n# file that is shipped next to this Dockerfile.\nFROM debian:bullseye-20210902\n\nLABEL maintainer=\"Buildroot mailing list <buildroot@buildroot.org>\" \\\n      vendor=\"Buildroot\" \\\ndescription=\"Container with everything needed to run Buildroot\"\n\n# Setup environment\nENV DEBIAN_FRONTEND noninteractive\n\n# This repository can be a bit slow at times. Don't panic...\nCOPY apt-sources.list /etc/apt/sources.list\n\n# The container has no package lists, so need to update first\nRUN dpkg --add-architecture i386 && \\\n    apt-get update -y\nRUN apt-get install -y --no-install-recommends \\\n        bc \\\n        build-essential \\\n        bzr \\\n        ca-certificates \\\n        cmake \\\n        cpio \\\n        cvs \\\n        file \\\n        g++-multilib \\\n        git \\\n        libc6:i386 \\\n        libncurses5-dev \\\n        locales \\\n        mercurial \\\n        python3 \\\n        python3-flake8 \\\n        python3-nose2 \\\n        python3-pexpect \\\n        qemu-system-arm \\\n        qemu-system-x86 \\\n        rsync \\\n        subversion \\\n        unzip \\\n        wget \\\n        && \\\n    apt-get -y autoremove && \\\n    apt-get -y clean\n\n# To be able to generate a toolchain with locales, enable one UTF-8 locale\nRUN sed -i 's/# \\(en_US.UTF-8\\)/\\1/' /etc/locale.gen && \\\n    /usr/sbin/locale-gen\n\nRUN useradd -ms /bin/bash br-user && \\\n    chown -R br-user:br-user /home/br-user\n\nUSER br-user\nWORKDIR /home/br-user\nENV HOME /home/br-user\nENV LC_ALL en_US.UTF-8\n"
  },
  {
    "path": "support/docker/apt-sources.list",
    "content": "# Latest just before 20210817T000000Z:\ndeb [check-valid-until=no] http://snapshot.debian.org/archive/debian/20210902T205533Z/ bullseye main\ndeb [check-valid-until=no] http://snapshot.debian.org/archive/debian-security/20210902T193650Z/ bullseye-security main\ndeb [check-valid-until=no] http://snapshot.debian.org/archive/debian/20210902T205533Z/ bullseye-updates main\n"
  },
  {
    "path": "support/download/bzr",
    "content": "#!/usr/bin/env bash\n\n# We want to catch any unexpected failure, and exit immediately\nset -e\n\n# Download helper for bzr, to be called from the download wrapper script\n#\n# Options:\n#   -q          Be quiet\n#   -o FILE     Generate archive in FILE.\n#   -u URI      Clone from repository at URI.\n#   -c CSET     Use changeset (or revision) CSET.\n#   -n NAME     Use basename NAME.\n#\n# Environment:\n#   BZR      : the bzr command to call\n\n\nquiet=\nwhile getopts \"${BR_BACKEND_DL_GETOPTS}\" OPT; do\n    case \"${OPT}\" in\n    q)  quiet=-q;;\n    o)  output=\"${OPTARG}\";;\n    u)  uri=\"${OPTARG}\";;\n    c)  cset=\"${OPTARG}\";;\n    n)  basename=\"${OPTARG}\";;\n    :)  printf \"option '%s' expects a mandatory argument\\n\" \"${OPTARG}\"; exit 1;;\n    \\?) printf \"unknown option '%s'\\n\" \"${OPTARG}\" >&2; exit 1;;\n    esac\ndone\n\nshift $((OPTIND-1)) # Get rid of our options\n\n# Caller needs to single-quote its arguments to prevent them from\n# being expanded a second time (in case there are spaces in them)\n_bzr() {\n    if [ -z \"${quiet}\" ]; then\n        printf '%s ' ${BZR} \"${@}\"; printf '\\n'\n    fi\n    _plain_bzr \"$@\"\n}\n# Note: please keep command below aligned with what is printed above\n_plain_bzr() {\n    eval ${BZR} \"${@}\"\n}\n\n# --per-file-timestamps comes with bzr-2.2 (released August 2010),\n# so only pass it if bzr is recent enough. We compute versions as:\n# major*1000 + minor\nbzr_min_version=2002\nbzr_version=$(($(bzr --version |\n                 sed -r -n 's/^Bazaar \\(bzr\\) ([[:digit:]]+)\\.([[:digit:]]+)\\..*$/\\1*1000+\\2/p')\n             ))\n\n# If the version is recent enough, we can generate reproducible\n# archives; otherwise, we just hope for the best (as it would\n# be downloaded from the BR mirror if what we generate here does\n# not match the hash we have for it).\nif [ ${bzr_version} -ge ${bzr_min_version} ]; then\n    timestamp_opt=\"--per-file-timestamps\"\nfi\n\n_bzr export ${quiet} --root=\"'${basename}/'\" --format=tgz \\\n    ${timestamp_opt} - \"${@}\" \"'${uri}'\" -r \"'${cset}'\" \\\n    >\"${output}\"\n"
  },
  {
    "path": "support/download/cargo-post-process",
    "content": "#!/usr/bin/env bash\n\nset -e\nset -o pipefail\n\n. \"${0%/*}/helpers\"\n\nwhile getopts \"n:o:\" OPT; do\n    case \"${OPT}\" in\n    o)  output=\"${OPTARG}\";;\n    n)  base_name=\"${OPTARG}\";;\n    :)  error \"option '%s' expects a mandatory argument\\n\" \"${OPTARG}\";;\n    \\?) error \"unknown option '%s'\\n\" \"${OPTARG}\";;\n    esac\ndone\n\n# Already vendored tarball, nothing to do\nif tar tf \"${output}\" | grep -q \"^[^/]*/VENDOR\" ; then\n    exit 0\nfi\n\npost_process_unpack \"${base_name}\" \"${output}\"\n\n# Do the Cargo vendoring\npushd \"${base_name}\" > /dev/null\n\n# Create the local .cargo/config with vendor info\n#\n# The first line of the output to stdout is empty.\n# So skip it to have the file start with the vendoring\n# configuration (`tail --lines=+2`).\n#\n# NOTE:\n#   There is  a patch for cargo to remove the first empty line:\n#   See: https://github.com/rust-lang/cargo/pull/11273\n#\n#   The patch already landed in +nightly and will end up\n#   in +stable soon.\n#\n# ->  When updating rust/cargo, the call to `tail` must be removed.\n#\nmkdir -p .cargo/\ncargo vendor \\\n    --manifest-path ${BR_CARGO_MANIFEST_PATH-Cargo.toml} \\\n    --locked VENDOR \\\n    | tail --lines=+2 | tee .cargo/config\n\npopd > /dev/null\n\npost_process_repack \"$(pwd)\" \"${base_name}\" \"${output}\"\n"
  },
  {
    "path": "support/download/check-hash",
    "content": "#!/usr/bin/env bash\nset -e\n\n# Helper to check a file matches its known hash\n# Call it with:\n#   $1: the path of the file containing all the expected hashes\n#   $2: the full path to the temporary file that was downloaded, and\n#       that is to be checked\n#   $3: the final basename of the file, to which it will be ultimately\n#       saved as, to be able to match it to the corresponding hashes\n#       in the .hash file\n#\n# Exit codes:\n#   0:  the hash file exists and the file to check matches all its hashes,\n#       or the hash file does not exist\n#   1:  unknown command-line option\n#   2:  the hash file exists and the file to check does not match at least\n#       one of its hashes\n#   3:  the hash file exists and there was no hash to check the file against\n#   4:  the hash file exists and at least one hash type is unknown\n\nwhile getopts :q OPT; do\n    case \"${OPT}\" in\n    q)  exec >/dev/null;;\n    \\?) exit 1;;\n    esac\ndone\nshift $((OPTIND-1))\n\nh_file=\"${1}\"\nfile=\"${2}\"\nbase=\"${3}\"\n\n# Bail early if no hash to check\nif [ -z \"${h_file}\" ]; then\n    exit 0\nfi\n# Does the hash-file exist?\nif [ ! -f \"${h_file}\" ]; then\n    printf \"WARNING: no hash file for %s\\n\" \"${base}\" >&2\n    exit 0\nfi\n\n# Check one hash for a file\n# $1: algo hash\n# $2: known hash\n# $3: file (full path)\ncheck_one_hash() {\n    _h=\"${1}\"\n    _known=\"${2}\"\n    _file=\"${3}\"\n\n    # Note: md5 is supported, but undocumented on purpose.\n    # Note: sha3 is not supported, since there is currently no implementation\n    #       (the NIST has yet to publish the parameters).\n    # Note: 'none' means there is explicitly no hash for that file.\n    case \"${_h}\" in\n        none)\n            return 0\n            ;;\n        md5|sha1)                       ;;\n        sha224|sha256|sha384|sha512)    ;;\n        *) # Unknown hash, exit with error\n            printf \"ERROR: unknown hash '%s' for '%s'\\n\"  \\\n                   \"${_h}\" \"${base}\" >&2\n            exit 4\n            ;;\n    esac\n\n    # Do the hashes match?\n    _hash=$( ${_h}sum \"${_file}\" |cut -d ' ' -f 1 )\n    if [ \"${_hash}\" = \"${_known}\" ]; then\n        printf \"%s: OK (%s: %s)\\n\" \"${base}\" \"${_h}\" \"${_hash}\"\n        return 0\n    fi\n\n    printf \"ERROR: %s has wrong %s hash:\\n\" \"${base}\" \"${_h}\" >&2\n    printf \"ERROR: expected: %s\\n\" \"${_known}\" >&2\n    printf \"ERROR: got     : %s\\n\" \"${_hash}\" >&2\n    printf \"ERROR: Incomplete download, or man-in-the-middle (MITM) attack\\n\" >&2\n\n    exit 2\n}\n\n# Do we know one or more hashes for that file?\nnb_checks=0\nwhile read t h f; do\n    case \"${t}\" in\n        ''|'#'*)\n            # Skip comments and empty lines\n            continue\n            ;;\n        *)\n            if [ \"${f}\" = \"${base}\" ]; then\n                check_one_hash \"${t}\" \"${h}\" \"${file}\"\n                : $((nb_checks++))\n            fi\n            ;;\n    esac\ndone <\"${h_file}\"\n\nif [ ${nb_checks} -eq 0 ]; then\n    case \" ${BR_NO_CHECK_HASH_FOR} \" in\n    *\" ${base} \"*)\n        # File explicitly has no hash\n        exit 0\n        ;;\n    esac\n    printf \"ERROR: No hash found for %s\\n\" \"${base}\" >&2\n    exit 3\nfi\n"
  },
  {
    "path": "support/download/cvs",
    "content": "#!/usr/bin/env bash\n\n# We want to catch any unexpected failure, and exit immediately\nset -e\n\n# Download helper for cvs, to be called from the download wrapper script\n#\n# Options:\n#   -q          Be quiet\n#   -o FILE     Generate archive in FILE.\n#   -u URI      Checkout from repository at URI.\n#   -c REV      Use revision REV.\n#   -N RAWNAME  Use rawname (aka module name) RAWNAME.\n#   -n NAME     Use basename NAME.\n#\n# Environment:\n#   CVS      : the cvs command to call\n\nquiet=\nwhile getopts \"${BR_BACKEND_DL_GETOPTS}\" OPT; do\n    case \"${OPT}\" in\n    q)  quiet=-Q;;\n    o)  output=\"${OPTARG}\";;\n    u)  uri=\"${OPTARG#*://}\";;\n    c)  rev=\"${OPTARG}\";;\n    N)  rawname=\"${OPTARG}\";;\n    n)  basename=\"${OPTARG}\";;\n    :)  printf \"option '%s' expects a mandatory argument\\n\" \"${OPTARG}\"; exit 1;;\n    \\?) printf \"unknown option '%s'\\n\" \"${OPTARG}\" >&2; exit 1;;\n    esac\ndone\n\nshift $((OPTIND-1)) # Get rid of our options\n\n# Caller needs to single-quote its arguments to prevent them from\n# being expanded a second time (in case there are spaces in them).\n# If the CVS server is deadlocked, the client will never return (cfr.\n# http://autobuild.buildroot.net/results/23d/23d1034b33d0354de15de2ec4a8ccd0603e8db78/build-end.log\n# ). Since nobody sane will put large code bases in CVS, a timeout of\n# 10 minutes should do the trick.\n_cvs() {\n    if [ -z \"${quiet}\" ]; then\n        printf '%s ' timeout 10m ${CVS} \"${@}\"; printf '\\n'\n    fi\n    _plain_cvs \"$@\"\n}\n# Note: please keep command below aligned with what is printed above\n_plain_cvs() {\n    eval timeout 10m ${CVS} \"${@}\"\n}\n\nif [[ ${rev} =~ ^[0-9] ]]; then\n    # Date, because a tag or a branch cannot begin with a number\n    select=\"-D\"\nelse\n    # Tag or branch\n    select=\"-r\"\nfi\n\n# The absence of an initial : on ${uri} means access method undefined\nif [[ ! \"${uri}\" =~ ^: ]]; then\n   # defaults to anonymous pserver\n   uri=\":pserver:anonymous@${uri}\"\nfi\n\nexport TZ=UTC\n_cvs ${quiet} -z3 -d\"'${uri}'\" \\\n     co \"${@}\" -d \"'${basename}'\" ${select} \"'${rev}'\" -P \"'${rawname}'\"\n\ntar czf \"${output}\" \"${basename}\"\n"
  },
  {
    "path": "support/download/dl-wrapper",
    "content": "#!/usr/bin/env bash\n\n# This script is a wrapper to the other download backends.\n# Its role is to ensure atomicity when saving downloaded files\n# back to BR2_DL_DIR, and not clutter BR2_DL_DIR with partial,\n# failed downloads.\n\n# To avoid cluttering BR2_DL_DIR, we download to a trashable\n# location, namely in $(BUILD_DIR).\n# Then, we move the downloaded file to a temporary file in the\n# same directory as the final output file.\n# This allows us to finally atomically rename it to its final\n# name.\n# If anything goes wrong, we just remove all the temporaries\n# created so far.\n\n# We want to catch any unexpected failure, and exit immediately.\nset -e\n\nexport BR_BACKEND_DL_GETOPTS=\":hc:d:o:n:N:H:ru:qf:e\"\n\nmain() {\n    local OPT OPTARG\n    local backend output hfile recurse quiet rc\n    local -a uris\n\n    # Parse our options; anything after '--' is for the backend\n    while getopts \":c:d:D:o:n:N:H:rf:u:q\" OPT; do\n        case \"${OPT}\" in\n        c)  cset=\"${OPTARG}\";;\n        d)  dl_dir=\"${OPTARG}\";;\n        D)  old_dl_dir=\"${OPTARG}\";;\n        o)  output=\"${OPTARG}\";;\n        n)  raw_base_name=\"${OPTARG}\";;\n        N)  base_name=\"${OPTARG}\";;\n        H)  hfile=\"${OPTARG}\";;\n        r)  recurse=\"-r\";;\n        f)  filename=\"${OPTARG}\";;\n        u)  uris+=( \"${OPTARG}\" );;\n        q)  quiet=\"-q\";;\n        :)  error \"option '%s' expects a mandatory argument\\n\" \"${OPTARG}\";;\n        \\?) error \"unknown option '%s'\\n\" \"${OPTARG}\";;\n        esac\n    done\n\n    # Forget our options, and keep only those for the backend\n    shift $((OPTIND-1))\n\n    if [ -z \"${output}\" ]; then\n        error \"no output specified, use -o\\n\"\n    fi\n\n    # Legacy handling: check if the file already exists in the global\n    # download directory. If it does, hard-link it. If it turns out it\n    # was an incorrect download, we'd still check it below anyway.\n    # If we can neither link nor copy, fallback to doing a download.\n    # NOTE! This is not atomic, is subject to TOCTTOU, but the whole\n    # dl-wrapper runs under an flock, so we're safe.\n    if [ ! -e \"${output}\" -a -e \"${old_dl_dir}/${filename}\" ]; then\n        ln \"${old_dl_dir}/${filename}\" \"${output}\" || \\\n        cp \"${old_dl_dir}/${filename}\" \"${output}\" || \\\n        true\n    fi\n\n    # If the output file already exists and:\n    # - there's no .hash file: do not download it again and exit promptly\n    # - matches all its hashes: do not download it again and exit promptly\n    # - fails at least one of its hashes: force a re-download\n    # - there's no hash (but a .hash file): consider it a hard error\n    if [ -e \"${output}\" ]; then\n        if support/download/check-hash ${quiet} \"${hfile}\" \"${output}\" \"${output##*/}\"; then\n            exit 0\n        elif [ ${?} -ne 2 ]; then\n            # Do not remove the file, otherwise it might get re-downloaded\n            # from a later location (i.e. primary -> upstream -> mirror).\n            # Do not print a message, check-hash already did.\n            exit 1\n        fi\n        rm -f \"${output}\"\n        warn \"Re-downloading '%s'...\\n\" \"${output##*/}\"\n    fi\n\n    # Look through all the uris that we were given to download the package\n    # source\n    download_and_check=0\n    rc=1\n    for uri in \"${uris[@]}\"; do\n        backend_urlencode=\"${uri%%+*}\"\n        backend=\"${backend_urlencode%|*}\"\n        case \"${backend}\" in\n            git|svn|cvs|bzr|file|scp|hg) ;;\n            *) backend=\"wget\" ;;\n        esac\n        uri=${uri#*+}\n\n        urlencode=${backend_urlencode#*|}\n        # urlencode must be \"urlencode\"\n        [ \"${urlencode}\" != \"urlencode\" ] && urlencode=\"\"\n\n        # tmpd is a temporary directory in which backends may store\n        # intermediate by-products of the download.\n        # tmpf is the file in which the backends should put the downloaded\n        # content.\n        # tmpd is located in $(BUILD_DIR), so as not to clutter the (precious)\n        # $(BR2_DL_DIR)\n        # We let the backends create tmpf, so they are able to set whatever\n        # permission bits they want (although we're only really interested in\n        # the executable bit.)\n        tmpd=\"$(mktemp -d \"${BUILD_DIR}/.${output##*/}.XXXXXX\")\"\n        tmpf=\"${tmpd}/output\"\n\n        # Helpers expect to run in a directory that is *really* trashable, so\n        # they are free to create whatever files and/or sub-dirs they might need.\n        # Doing the 'cd' here rather than in all backends is easier.\n        cd \"${tmpd}\"\n\n        # If the backend fails, we can just remove the content of the temporary\n        # directory to remove all the cruft it may have left behind, and try\n        # the next URI until it succeeds. Once out of URI to try, we need to\n        # cleanup and exit.\n        if ! \"${OLDPWD}/support/download/${backend}\" \\\n                $([ -n \"${urlencode}\" ] && printf %s '-e') \\\n                -c \"${cset}\" \\\n                -d \"${dl_dir}\" \\\n                -n \"${raw_base_name}\" \\\n                -N \"${base_name}\" \\\n                -f \"${filename}\" \\\n                -u \"${uri}\" \\\n                -o \"${tmpf}\" \\\n                ${quiet} ${recurse} -- \"${@}\"\n        then\n            # cd back to keep path coherence\n            cd \"${OLDPWD}\"\n            rm -rf \"${tmpd}\"\n            continue\n        fi\n\n        # cd back to free the temp-dir, so we can remove it later\n        cd \"${OLDPWD}\"\n\n        # Check if the downloaded file is sane, and matches the stored hashes\n        # for that file\n        if support/download/check-hash ${quiet} \"${hfile}\" \"${tmpf}\" \"${output##*/}\"; then\n            rc=0\n        else\n            if [ ${?} -ne 3 ]; then\n                rm -rf \"${tmpd}\"\n                continue\n            fi\n\n            # the hash file exists and there was no hash to check the file\n            # against\n            rc=1\n        fi\n        download_and_check=1\n        break\n    done\n\n    # We tried every URI possible, none seems to work or to check against the\n    # available hash. *ABORT MISSION*\n    if [ \"${download_and_check}\" -eq 0 ]; then\n        rm -rf \"${tmpd}\"\n        exit 1\n    fi\n\n    # tmp_output is in the same directory as the final output, so we can\n    # later move it atomically.\n    tmp_output=\"$(mktemp \"${output}.XXXXXX\")\"\n\n    # 'mktemp' creates files with 'go=-rwx', so the files are not accessible\n    # to users other than the one doing the download (and root, of course).\n    # This can be problematic when a shared BR2_DL_DIR is used by different\n    # users (e.g. on a build server), where all users may write to the shared\n    # location, since other users would not be allowed to read the files\n    # another user downloaded.\n    # So, we restore the 'go' access rights to a more sensible value, while\n    # still abiding by the current user's umask. We must do that before the\n    # final 'mv', so just do it now.\n    # Some backends (cp and scp) may create executable files, so we need to\n    # carry the executable bit if needed.\n    [ -x \"${tmpf}\" ] && new_mode=755 || new_mode=644\n    new_mode=$(printf \"%04o\" $((0${new_mode} & ~0$(umask))))\n    chmod ${new_mode} \"${tmp_output}\"\n\n    # We must *not* unlink tmp_output, otherwise there is a small window\n    # during which another download process may create the same tmp_output\n    # name (very, very unlikely; but not impossible.)\n    # Using 'cp' is not reliable, since 'cp' may unlink the destination file\n    # if it is unable to open it with O_WRONLY|O_TRUNC; see:\n    #   http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cp.html\n    # Since the destination filesystem can be anything, it might not support\n    # O_TRUNC, so 'cp' would unlink it first.\n    # Use 'cat' and append-redirection '>>' to save to the final location,\n    # since that is the only way we can be 100% sure of the behaviour.\n    if ! cat \"${tmpf}\" >>\"${tmp_output}\"; then\n        rm -rf \"${tmpd}\" \"${tmp_output}\"\n        exit 1\n    fi\n    rm -rf \"${tmpd}\"\n\n    # tmp_output and output are on the same filesystem, so POSIX guarantees\n    # that 'mv' is atomic, because it then uses rename() that POSIX mandates\n    # to be atomic, see:\n    #   http://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html\n    if ! mv -f \"${tmp_output}\" \"${output}\"; then\n        rm -f \"${tmp_output}\"\n        exit 1\n    fi\n\n    return ${rc}\n}\n\ntrace()  { local msg=\"${1}\"; shift; printf \"%s: ${msg}\" \"${my_name}\" \"${@}\"; }\nwarn()   { trace \"${@}\" >&2; }\nerrorN() { local ret=\"${1}\"; shift; warn \"${@}\"; exit ${ret}; }\nerror()  { errorN 1 \"${@}\"; }\n\nmy_name=\"${0##*/}\"\nmain \"${@}\"\n"
  },
  {
    "path": "support/download/file",
    "content": "#!/usr/bin/env bash\n\n# We want to catch any unexpected failure, and exit immediately\nset -e\n\n# Download helper for cp, to be called from the download wrapper script\n#\n# Options:\n#   -q          Be quiet.\n#   -o FILE     Copy to file FILE.\n#   -f FILE     Copy from basename file FILE.\n#   -u DIR      Copy from FILE in DIR.\n#\n# Environment:\n#   LOCALFILES: the cp command to call\n\n# 'cp' usually does not print anything on its stdout, whereas the\n# other download backends, even if not verbose, at least print some\n# progress information.\n# Make 'cp' verbose by default, so it behaves a bit like the others.\nverbose=-v\n\nwhile getopts \"${BR_BACKEND_DL_GETOPTS}\" OPT; do\n    case \"${OPT}\" in\n    q)  verbose=;;\n    o)  output=\"${OPTARG}\";;\n    f)  file=\"${OPTARG}\";;\n    u)  dir=\"${OPTARG}\";;\n    :)  printf \"option '%s' expects a mandatory argument\\n\" \"${OPTARG}\"; exit 1;;\n    \\?) printf \"unknown option '%s'\\n\" \"${OPTARG}\" >&2; exit 1;;\n    esac\ndone\n\nshift $((OPTIND-1)) # Get rid of our options\n\n# Caller needs to single-quote its arguments to prevent them from\n# being expanded a second time (in case there are spaces in them)\n_localfiles() {\n    if [ -n \"${verbose}\" ]; then\n        printf '%s ' ${LOCALFILES} \"${@}\"; printf '\\n'\n    fi\n    _plain_localfiles \"$@\"\n}\n# Note: please keep command below aligned with what is printed above\n_plain_localfiles() {\n    eval ${LOCALFILES} \"${@}\"\n}\n\n_localfiles ${verbose} \"'${dir##file://}/${file}'\" \"'${output}'\"\n"
  },
  {
    "path": "support/download/git",
    "content": "#!/usr/bin/env bash\n\n# NOTE: if the output of this backend has to change (e.g. we change what gets\n# included in the archive (e.g. LFS), or we change the format of the archive\n# (e.g. tar options, compression ratio or method)), we MUST update the format\n# version in the variable BR_FMT_VERSION_git, in package/pkg-download.mk.\n\n# We want to catch any unexpected failure, and exit immediately\nset -E\n\n# Download helper for git, to be called from the download wrapper script\n#\n# Options:\n#   -q          Be quiet.\n#   -r          Clone and archive sub-modules.\n#   -o FILE     Generate archive in FILE.\n#   -u URI      Clone from repository at URI.\n#   -c CSET     Use changeset CSET.\n#   -n NAME     Use basename NAME.\n#\n# Environment:\n#   GIT      : the git command to call\n\n. \"${0%/*}/helpers\"\n\n# Save our path and options in case we need to call ourselves again\nmyname=\"${0}\"\ndeclare -a OPTS=(\"${@}\")\n\n# This function is called when an error occurs. Its job is to attempt a\n# clone from scratch (only once!) in case the git tree is borked, or in\n# case an unexpected and unsupported situation arises with submodules\n# or uncommitted stuff (e.g. if the user manually mucked around in the\n# git cache).\n_on_error() {\n    local ret=${?}\n\n    printf \"Detected a corrupted git cache.\\n\" >&2\n    if ${BR_GIT_BACKEND_FIRST_FAULT:-false}; then\n        printf \"This is the second time in a row; bailing out\\n\" >&2\n        exit ${ret}\n    fi\n    export BR_GIT_BACKEND_FIRST_FAULT=true\n\n    printf \"Removing it and starting afresh.\\n\" >&2\n\n    popd >/dev/null\n    rm -rf \"${git_cache}\"\n\n    exec \"${myname}\" \"${OPTS[@]}\" || exit ${ret}\n}\n\nquiet=\nrecurse=0\nwhile getopts \"${BR_BACKEND_DL_GETOPTS}\" OPT; do\n    case \"${OPT}\" in\n    q)  quiet=-q; exec >/dev/null;;\n    r)  recurse=1;;\n    o)  output=\"${OPTARG}\";;\n    u)  uri=\"${OPTARG}\";;\n    c)  cset=\"${OPTARG}\";;\n    d)  dl_dir=\"${OPTARG}\";;\n    n)  basename=\"${OPTARG}\";;\n    :)  printf \"option '%s' expects a mandatory argument\\n\" \"${OPTARG}\"; exit 1;;\n    \\?) printf \"unknown option '%s'\\n\" \"${OPTARG}\" >&2; exit 1;;\n    esac\ndone\n\nshift $((OPTIND-1)) # Get rid of our options\n\n# Create and cd into the directory that will contain the local git cache\ngit_cache=\"${dl_dir}/git\"\nmkdir -p \"${git_cache}\"\npushd \"${git_cache}\" >/dev/null\n\n# Any error now should try to recover\ntrap _on_error ERR\n\n# Caller needs to single-quote its arguments to prevent them from\n# being expanded a second time (in case there are spaces in them)\n_git() {\n    if [ -z \"${quiet}\" ]; then\n        printf '%s ' GIT_DIR=\"${git_cache}/.git\" ${GIT} \"${@}\"; printf '\\n'\n    fi\n    _plain_git \"$@\"\n}\n# Note: please keep command below aligned with what is printed above\n_plain_git() {\n    eval GIT_DIR=\"${git_cache}/.git\" ${GIT} \"${@}\"\n}\n\n# Create a warning file, that the user should not use the git cache.\n# It's ours. Our precious.\ncat <<-_EOF_ >\"${dl_dir}/git.readme\"\n\tIMPORTANT NOTE!\n\n\tThe git tree located in this directory is for the exclusive use\n\tby Buildroot, which uses it as a local cache to reduce bandwidth\n\tusage.\n\n\tBuildroot *will* trash any changes in that tree whenever it needs\n\tto use it. Buildroot may even remove it in case it detects the\n\trepository may have been damaged or corrupted.\n\n\tDo *not* work in that directory; your changes will eventually get\n\tlost. Do *not* even use it as a remote, or as the source for new\n\tworktrees; your commits will eventually get lost.\n_EOF_\n\n# Initialise a repository in the git cache. If the repository already\n# existed, this is a noop, unless the repository was broken, in which\n# case this magically restores it to working conditions. In the latter\n# case, we might be missing blobs, but that's not a problem: we'll\n# fetch what we need later anyway.\n#\n# We can still go through the wrapper, because 'init' does not use the\n# path pointed to by GIT_DIR, but really uses the directory passed as\n# argument.\n_git init .\n\n# Ensure the repo has an origin (in case a previous run was killed).\nif ! _plain_git remote |grep -q -E '^origin$'; then\n    _git remote add origin \"'${uri}'\"\nfi\n\n_git remote set-url origin \"'${uri}'\"\n\nprintf \"Fetching all references\\n\"\n_git fetch origin\n_git fetch origin -t\n\n# Try to get the special refs exposed by some forges (pull-requests for\n# github, changes for gerrit...). There is no easy way to know whether\n# the cset the user passed us is such a special ref or a tag or a sha1\n# or whatever else. We'll eventually fail at checking out that cset,\n# below, if there is an issue anyway. Since most of the cset we're gonna\n# have to clone are not such special refs, consign the output to oblivion\n# so as not to alarm unsuspecting users, but still trace it as a warning.\nif ! _git fetch origin \"'${cset}:${cset}'\" >/dev/null 2>&1; then\n    printf \"Could not fetch special ref '%s'; assuming it is not special.\\n\" \"${cset}\"\nfi\n\n# Check that the changeset does exist. If it does not, re-cloning from\n# scratch won't help, so we don't want to trash the repository for a\n# missing commit. We just exit without going through the ERR trap.\nif ! _git rev-parse --quiet --verify \"'${cset}^{commit}'\" >/dev/null 2>&1; then\n    printf \"Commit '%s' does not exist in this repository.\\n\" \"${cset}\"\n    exit 1\nfi\n\n# The new cset we want to checkout might have different submodules, or\n# have sub-dirs converted to/from a submodule. So we would need to\n# deregister _current_ submodules before we checkout.\n#\n# Using \"git submodule deinit --all\" would remove all the files for\n# all submodules, including the corresponding .git files or directories.\n# However, it  was only introduced with git-1.8.3, which is too recent\n# for some enterprise-grade distros.\n#\n# So, we fall-back to just removing all submodules directories. We do\n# not need to be recursive, as removing a submodule will de-facto remove\n# its own submodules.\n#\n# For recent git versions, the repository for submodules is stored\n# inside the repository of the super repository, so the following will\n# only remove the working copies of submodules, effectively caching the\n# submodules.\n#\n# For older versions however, the repository is stored in the .git/ of\n# the submodule directory, so the following will effectively remove the\n# the working copy as well as the repository, which means submodules\n# will not be cached for older versions.\n#\ncmd='printf \"Deregistering submodule \\\"%s\\\"\\n\" \"${path}\" && cd .. && rm -rf \"${path##*/}\"'\n_git submodule --quiet foreach \"'${cmd}'\"\n\n# Checkout the required changeset, so that we can update the required\n# submodules.\n_git checkout -f -q \"'${cset}'\"\n\n# Get rid of now-untracked directories (in case a git operation was\n# interrupted in a previous run, or to get rid of empty directories\n# that were parents of submodules removed above).\n_git clean -ffdx\n\n# Get date of commit to generate a reproducible archive.\n# %ci is ISO 8601, so it's fully qualified, with TZ and all.\ndate=\"$( _plain_git log -1 --pretty=format:%ci )\"\n\n# There might be submodules, so fetch them.\nif [ ${recurse} -eq 1 ]; then\n    _git submodule update --init --recursive\n\n    # Older versions of git will store the absolute path of the git tree\n    # in the .git of submodules, while newer versions just use relative\n    # paths. Detect and fix the older variants to use relative paths, so\n    # that the archives are reproducible across a wider range of git\n    # versions. However, we can't do that if git is too old and uses\n    # full repositories for submodules.\n    cmd='printf \"%s\\n\" \"${path}/\"'\n    for module_dir in $( _plain_git submodule --quiet foreach \"'${cmd}'\" ); do\n        [ -f \"${module_dir}/.git\" ] || continue\n        relative_dir=\"$( sed -r -e 's,/+,/,g; s,[^/]+/,../,g' <<<\"${module_dir}\" )\"\n        sed -r -i -e \"s:^gitdir\\: $(pwd)/:gitdir\\: \"${relative_dir}\":\" \"${module_dir}/.git\"\n    done\nfi\n\npopd >/dev/null\n\n# Generate the archive.\n# We do not want the .git dir; we keep other .git files, in case they are the\n# only files in their directory.\n# The .git dir would generate non reproducible tarballs as it depends on\n# the state of the remote server. It also would generate large tarballs\n# (gigabytes for some linux trees) when a full clone took place.\nmk_tar_gz \"${git_cache}\" \"${basename}\" \"${date}\" \"${output}\" \".git/*\"\n"
  },
  {
    "path": "support/download/helpers",
    "content": "# Generate a reproducible archive from the content of a directory\n#\n# $1    : input directory\n# $2    : leading component in archive\n# $3    : ISO8601 date: YYYY-MM-DDThh:mm:ssZZ\n# $4    : output file\n# $5... : globs of filenames to exclude from the archive, suitable for\n#         find's -path option, and relative to the input directory $1\n#\n# Notes :\n#   - the timestamp is internally rounded to the highest entire second\n#     less than or equal to the timestamp (i.e. any sub-second fractional\n#     part is ignored)\n#   - must not be called with CWD as, or below, the input directory\n#   - some temporary files are created in CWD, and removed at the end\n#\n# Example:\n#   $ find /path/to/temp/dir\n#   /path/to/temp/dir/\n#   /path/to/temp/dir/some-file\n#   /path/to/temp/dir/some-dir/\n#   /path/to/temp/dir/some-dir/some-other-file\n#\n#   $ mk_tar_gz /path/to/some/dir \\\n#               foo_bar-1.2.3 \\\n#               1970-01-01T00:00:00Z \\\n#               /path/to/foo.tar.gz \\\n#               '.git/*' '.svn/*'\n#\n#   $ tar tzf /path/to/foo.tar.gz\n#   foo_bar-1.2.3/some-file\n#   foo_bar-1.2.3/some-dir/some-other-file\n#\nmk_tar_gz() {\n    local in_dir=\"${1}\"\n    local base_dir=\"${2}\"\n    local date=\"${3}\"\n    local out=\"${4}\"\n    shift 4\n    local glob tmp pax_options\n    local -a find_opts\n\n    for glob; do\n        find_opts+=( -or -path \"./${glob#./}\" )\n    done\n\n    # Drop sub-second precision to play nice with GNU tar's valid_timespec check\n    date=\"$(date -d \"${date}\" -u +%Y-%m-%dT%H:%M:%S+00:00)\"\n\n    pax_options=\"delete=atime,delete=ctime,delete=mtime\"\n    pax_options+=\",exthdr.name=%d/PaxHeaders/%f,exthdr.mtime={${date}}\"\n\n    tmp=\"$(mktemp --tmpdir=\"$(pwd)\")\"\n    pushd \"${in_dir}\" >/dev/null\n\n    # Establish list\n    find . -not -type d -and -not \\( -false \"${find_opts[@]}\" \\) >\"${tmp}.list\"\n    # Sort list for reproducibility\n    LC_ALL=C sort <\"${tmp}.list\" >\"${tmp}.sorted\"\n\n    # Create POSIX tarballs, since that's the format the most reproducible\n    tar cf - --transform=\"s#^\\./#${base_dir}/#S\" \\\n             --numeric-owner --owner=0 --group=0 --mtime=\"${date}\" \\\n             --format=posix --pax-option=\"${pax_options}\" \\\n             -T \"${tmp}.sorted\" >\"${tmp}.tar\"\n\n    # Compress the archive\n    gzip -6 -n <\"${tmp}.tar\" >\"${out}\"\n\n    rm -f \"${tmp}\"{.list,.sorted,.tar}\n\n    popd >/dev/null\n}\n\n# Keep this line and the following as last lines in this file.\n# vim: ft=bash\n"
  },
  {
    "path": "support/download/hg",
    "content": "#!/usr/bin/env bash\n\n# We want to catch any unexpected failure, and exit immediately\nset -e\n\n# Download helper for hg, to be called from the download wrapper script\n#\n# Options:\n#   -q          Be quiet.\n#   -o FILE     Generate archive in FILE.\n#   -u URI      Clone from repository at URI.\n#   -c CSET     Use changeset (or revision) CSET.\n#   -n NAME     Use basename NAME.\n#\n# Environment:\n#   HG       : the hg command to call\n\nquiet=\nwhile getopts \"${BR_BACKEND_DL_GETOPTS}\" OPT; do\n    case \"${OPT}\" in\n    q)  quiet=-q;;\n    o)  output=\"${OPTARG}\";;\n    u)  uri=\"${OPTARG}\";;\n    c)  cset=\"${OPTARG}\";;\n    n)  basename=\"${OPTARG}\";;\n    :)  printf \"option '%s' expects a mandatory argument\\n\" \"${OPTARG}\"; exit 1;;\n    \\?) printf \"unknown option '%s'\\n\" \"${OPTARG}\" >&2; exit 1;;\n    esac\ndone\n\nshift $((OPTIND-1)) # Get rid of our options\n\n# Caller needs to single-quote its arguments to prevent them from\n# being expanded a second time (in case there are spaces in them)\n_hg() {\n    if [ -z \"${quiet}\" ]; then\n        printf '%s ' ${HG} \"${@}\"; printf '\\n'\n    fi\n    _plain_hg \"$@\"\n}\n# Note: please keep command below aligned with what is printed above\n_plain_hg() {\n    eval ${HG} \"${@}\"\n}\n\n_hg clone ${quiet} \"${@}\" --noupdate \"'${uri}'\" \"'${basename}'\"\n\n_plain_hg archive ${quiet} --repository \"'${basename}'\" --type tgz \\\n            --prefix \"'${basename}'\" --rev \"'${cset}'\" \\\n            - >\"${output}\"\n"
  },
  {
    "path": "support/download/scp",
    "content": "#!/usr/bin/env bash\n\n# We want to catch any unexpected failure, and exit immediately\nset -e\n\n# Download helper for scp, to be called from the download wrapper script\n#\n# Options:\n#   -q          Be quiet.\n#   -o FILE     Copy to local file FILE.\n#   -f FILE     Copy from remote file FILE.\n#   -u URI      Download file at URI.\n#\n# Environment:\n#   SCP       : the scp command to call\n\nquiet=\nwhile getopts \"${BR_BACKEND_DL_GETOPTS}\" OPT; do\n    case \"${OPT}\" in\n    q)  quiet=-q;;\n    o)  output=\"${OPTARG}\";;\n    f)  filename=\"${OPTARG}\";;\n    u)  uri=\"${OPTARG}\";;\n    :)  printf \"option '%s' expects a mandatory argument\\n\" \"${OPTARG}\"; exit 1;;\n    \\?) printf \"unknown option '%s'\\n\" \"${OPTARG}\" >&2; exit 1;;\n    esac\ndone\n\nshift $((OPTIND-1)) # Get rid of our options\n\n# Caller needs to single-quote its arguments to prevent them from\n# being expanded a second time (in case there are spaces in them)\n_scp() {\n    if [ -z \"${quiet}\" ]; then\n        printf '%s ' ${SCP} \"${@}\"; printf '\\n'\n    fi\n    _plain_scp \"$@\"\n}\n# Note: please keep command below aligned with what is printed above\n_plain_scp() {\n    eval ${SCP} \"${@}\"\n}\n\n# Remove any scheme prefix\nuri=\"${uri##scp://}\"\n\n_scp ${quiet} \"${@}\" \"'${uri}/${filename}'\" \"'${output}'\"\n"
  },
  {
    "path": "support/download/svn",
    "content": "#!/usr/bin/env bash\n\n# NOTE: if the output of this backend has to change (e.g. we change what gets\n# included in the archive, or we change the format of the archive (e.g. tar\n# options, compression ratio or method)), we MUST update the format version\n# in the variable BR_FTM_VERSION_svn, in package/pkg-download.mk.\n\n# We want to catch any unexpected failure, and exit immediately\nset -e\n\n# Download helper for svn, to be called from the download wrapper script\n#\n# Options:\n#   -q          Be quiet.\n#   -o FILE     Generate archive in FILE.\n#   -u URI      Checkout from repository at URI.\n#   -c REV      Use revision REV.\n#   -n NAME     Use basename NAME.\n#\n# Environment:\n#   SVN      : the svn command to call\n\n. \"${0%/*}/helpers\"\n\nquiet=\nwhile getopts \"${BR_BACKEND_DL_GETOPTS}\" OPT; do\n    case \"${OPT}\" in\n    q)  quiet=-q;;\n    o)  output=\"${OPTARG}\";;\n    u)  uri=\"${OPTARG}\";;\n    c)  rev=\"${OPTARG}\";;\n    n)  basename=\"${OPTARG}\";;\n    :)  printf \"option '%s' expects a mandatory argument\\n\" \"${OPTARG}\"; exit 1;;\n    \\?) printf \"unknown option '%s'\\n\" \"${OPTARG}\" >&2; exit 1;;\n    esac\ndone\n\nshift $((OPTIND-1)) # Get rid of our options\n\n# Caller needs to single-quote its arguments to prevent them from\n# being expanded a second time (in case there are spaces in them)\n_svn() {\n    if [ -z \"${quiet}\" ]; then\n        printf '%s ' ${SVN} \"${@}\"; printf '\\n'\n    fi\n    _plain_svn \"$@\"\n}\n# Note: please keep command below aligned with what is printed above\n_plain_svn() {\n    eval ${SVN} \"${@}\"\n}\n\n_svn export --ignore-keywords ${quiet} \"${@}\" \"'${uri}@${rev}'\" \"'${basename}'\"\n\n# Get the date of the revision, to generate reproducible archives.\n# The output format is YYYY-MM-DDTHH:MM:SS.mmmuuuZ (i.e. always in the\n# UTC timezone), which we can feed as-is to the --mtime option for tar.\n# In case there is a redirection (e.g. http -> https), just keep the\n# last line (svn outputs everything on stdout)\ndate=\"$( _plain_svn info \"'${uri}@${rev}'\" \\\n        |sed -r -e '/^Last Changed Date: /!d; s///'\n       )\"\n\n# Generate the archive.\n# We did a 'svn export' above, so it's not a working copy (there is no .svn\n# directory or file to ignore).\nmk_tar_gz \"${basename}\" \"${basename}\" \"${date}\" \"${output}\"\n"
  },
  {
    "path": "support/download/wget",
    "content": "#!/usr/bin/env bash\n\n# We want to catch any unexpected failure, and exit immediately\nset -e\n\n# Download helper for wget, to be called from the download wrapper script\n#\n# Options:\n#   -q          Be quiet.\n#   -o FILE     Save into file FILE.\n#   -f FILENAME The filename of the tarball to get at URL\n#   -u URL      Download file at URL.\n#   -e ENCODE   Tell wget to urlencode the filename passed to it\n#\n# Environment:\n#   WGET     : the wget command to call\n\nquiet=\nwhile getopts \"${BR_BACKEND_DL_GETOPTS}\" OPT; do\n    case \"${OPT}\" in\n    q)  quiet=-q;;\n    o)  output=\"${OPTARG}\";;\n    f)  filename=\"${OPTARG}\";;\n    u)  url=\"${OPTARG}\";;\n    e)  encode=\"-e\";;\n    :)  printf \"option '%s' expects a mandatory argument\\n\" \"${OPTARG}\"; exit 1;;\n    \\?) printf \"unknown option '%s'\\n\" \"${OPTARG}\" >&2; exit 1;;\n    esac\ndone\n\nshift $((OPTIND-1)) # Get rid of our options\n\n# Caller needs to single-quote its arguments to prevent them from\n# being expanded a second time (in case there are spaces in them)\n_wget() {\n    if [ -z \"${quiet}\" ]; then\n        printf '%s ' ${WGET} \"${@}\"; printf '\\n'\n    fi\n    _plain_wget \"$@\"\n}\n# Note: please keep command below aligned with what is printed above\n_plain_wget() {\n    eval ${WGET} \"${@}\"\n}\n\n# Replace every '?' with '%3F' in the filename; only for the PRIMARY and BACKUP\n# mirror\n[ -n \"${encode}\" ] && filename=${filename//\\?/%3F}\n\n_wget ${quiet} \"${@}\" -O \"'${output}'\" \"'${url}/${filename}'\"\n"
  },
  {
    "path": "support/gnuconfig/README.buildroot",
    "content": "--- HOWTO ---\nIf your package uses config.guess and/or config.sub, then it probably\nrelies on the autotools as its build system. In this case, you should\nuse the autotools-package infrastructure, which will take care of updating\nthe config.guess and/or config.sub files appropriately. See the\nBuildroot documentation for details about the autotools-package\ninfrastructure.\n\nIf for some reason your package does not use the autotools-package\ninfrastructure, you can request the config.guess and/or config.sub\nfiles of your package to be updated by using:\n\n<pkg>_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK\n\n--- UPDATE ---\nRun the script 'update' in this directory, and commit the result.\n\nThe current Buildroot version is based on this commit of the config.git\nrepository (leave alone on its own line, the script updates it):\n\nd7a4dee7cc25e332b990d0a6d9f0ddd42cb33cf5\n"
  },
  {
    "path": "support/gnuconfig/config.guess",
    "content": "#! /bin/sh\n# Attempt to guess a canonical system name.\n#   Copyright 1992-2020 Free Software Foundation, Inc.\n\ntimestamp='2020-09-19'\n\n# This file is free software; you can redistribute it and/or modify it\n# under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 3 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful, but\n# WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n# General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, see <https://www.gnu.org/licenses/>.\n#\n# As a special exception to the GNU General Public License, if you\n# distribute this file as part of a program that contains a\n# configuration script generated by Autoconf, you may include it under\n# the same distribution terms that you use for the rest of that\n# program.  This Exception is an additional permission under section 7\n# of the GNU General Public License, version 3 (\"GPLv3\").\n#\n# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.\n#\n# You can get the latest version of this script from:\n# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess\n#\n# Please send patches to <config-patches@gnu.org>.\n\n\nme=`echo \"$0\" | sed -e 's,.*/,,'`\n\nusage=\"\\\nUsage: $0 [OPTION]\n\nOutput the configuration name of the system \\`$me' is run on.\n\nOptions:\n  -h, --help         print this help, then exit\n  -t, --time-stamp   print date of last modification, then exit\n  -v, --version      print version number, then exit\n\nReport bugs and patches to <config-patches@gnu.org>.\"\n\nversion=\"\\\nGNU config.guess ($timestamp)\n\nOriginally written by Per Bothner.\nCopyright 1992-2020 Free Software Foundation, Inc.\n\nThis is free software; see the source for copying conditions.  There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\"\n\nhelp=\"\nTry \\`$me --help' for more information.\"\n\n# Parse command line\nwhile test $# -gt 0 ; do\n  case $1 in\n    --time-stamp | --time* | -t )\n       echo \"$timestamp\" ; exit ;;\n    --version | -v )\n       echo \"$version\" ; exit ;;\n    --help | --h* | -h )\n       echo \"$usage\"; exit ;;\n    -- )     # Stop option processing\n       shift; break ;;\n    - )\t# Use stdin as input.\n       break ;;\n    -* )\n       echo \"$me: invalid option $1$help\" >&2\n       exit 1 ;;\n    * )\n       break ;;\n  esac\ndone\n\nif test $# != 0; then\n  echo \"$me: too many arguments$help\" >&2\n  exit 1\nfi\n\n# CC_FOR_BUILD -- compiler used by this script. Note that the use of a\n# compiler to aid in system detection is discouraged as it requires\n# temporary files to be created and, as you can see below, it is a\n# headache to deal with in a portable fashion.\n\n# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still\n# use `HOST_CC' if defined, but it is deprecated.\n\n# Portable tmp directory creation inspired by the Autoconf team.\n\ntmp=\n# shellcheck disable=SC2172\ntrap 'test -z \"$tmp\" || rm -fr \"$tmp\"' 0 1 2 13 15\n\nset_cc_for_build() {\n    # prevent multiple calls if $tmp is already set\n    test \"$tmp\" && return 0\n    : \"${TMPDIR=/tmp}\"\n    # shellcheck disable=SC2039\n    { tmp=`(umask 077 && mktemp -d \"$TMPDIR/cgXXXXXX\") 2>/dev/null` && test -n \"$tmp\" && test -d \"$tmp\" ; } ||\n\t{ test -n \"$RANDOM\" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir \"$tmp\" 2>/dev/null) ; } ||\n\t{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir \"$tmp\" 2>/dev/null) && echo \"Warning: creating insecure temp directory\" >&2 ; } ||\n\t{ echo \"$me: cannot create a temporary directory in $TMPDIR\" >&2 ; exit 1 ; }\n    dummy=$tmp/dummy\n    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in\n\t,,)    echo \"int x;\" > \"$dummy.c\"\n\t       for driver in cc gcc c89 c99 ; do\n\t\t   if ($driver -c -o \"$dummy.o\" \"$dummy.c\") >/dev/null 2>&1 ; then\n\t\t       CC_FOR_BUILD=\"$driver\"\n\t\t       break\n\t\t   fi\n\t       done\n\t       if test x\"$CC_FOR_BUILD\" = x ; then\n\t\t   CC_FOR_BUILD=no_compiler_found\n\t       fi\n\t       ;;\n\t,,*)   CC_FOR_BUILD=$CC ;;\n\t,*,*)  CC_FOR_BUILD=$HOST_CC ;;\n    esac\n}\n\n# This is needed to find uname on a Pyramid OSx when run in the BSD universe.\n# (ghazi@noc.rutgers.edu 1994-08-24)\nif test -f /.attbin/uname ; then\n\tPATH=$PATH:/.attbin ; export PATH\nfi\n\nUNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown\nUNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown\nUNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown\nUNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown\n\ncase \"$UNAME_SYSTEM\" in\nLinux|GNU|GNU/*)\n\t# If the system lacks a compiler, then just pick glibc.\n\t# We could probably try harder.\n\tLIBC=gnu\n\n\tset_cc_for_build\n\tcat <<-EOF > \"$dummy.c\"\n\t#include <features.h>\n\t#if defined(__UCLIBC__)\n\tLIBC=uclibc\n\t#elif defined(__dietlibc__)\n\tLIBC=dietlibc\n\t#else\n\t#include <stdarg.h>\n\t#ifdef __DEFINED_va_list\n\tLIBC=musl\n\t#else\n\tLIBC=gnu\n\t#endif\n\t#endif\n\tEOF\n\teval \"`$CC_FOR_BUILD -E \"$dummy.c\" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`\"\n\t;;\nesac\n\n# Note: order is significant - the case branches are not exclusive.\n\ncase \"$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION\" in\n    *:NetBSD:*:*)\n\t# NetBSD (nbsd) targets should (where applicable) match one or\n\t# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,\n\t# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently\n\t# switched to ELF, *-*-netbsd* would select the old\n\t# object file format.  This provides both forward\n\t# compatibility and a consistent mechanism for selecting the\n\t# object file format.\n\t#\n\t# Note: NetBSD doesn't particularly care about the vendor\n\t# portion of the name.  We always set it to \"unknown\".\n\tsysctl=\"sysctl -n hw.machine_arch\"\n\tUNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \\\n\t    \"/sbin/$sysctl\" 2>/dev/null || \\\n\t    \"/usr/sbin/$sysctl\" 2>/dev/null || \\\n\t    echo unknown)`\n\tcase \"$UNAME_MACHINE_ARCH\" in\n\t    armeb) machine=armeb-unknown ;;\n\t    arm*) machine=arm-unknown ;;\n\t    sh3el) machine=shl-unknown ;;\n\t    sh3eb) machine=sh-unknown ;;\n\t    sh5el) machine=sh5le-unknown ;;\n\t    earmv*)\n\t\tarch=`echo \"$UNAME_MACHINE_ARCH\" | sed -e 's,^e\\(armv[0-9]\\).*$,\\1,'`\n\t\tendian=`echo \"$UNAME_MACHINE_ARCH\" | sed -ne 's,^.*\\(eb\\)$,\\1,p'`\n\t\tmachine=\"${arch}${endian}\"-unknown\n\t\t;;\n\t    *) machine=\"$UNAME_MACHINE_ARCH\"-unknown ;;\n\tesac\n\t# The Operating System including object format, if it has switched\n\t# to ELF recently (or will in the future) and ABI.\n\tcase \"$UNAME_MACHINE_ARCH\" in\n\t    earm*)\n\t\tos=netbsdelf\n\t\t;;\n\t    arm*|i386|m68k|ns32k|sh3*|sparc|vax)\n\t\tset_cc_for_build\n\t\tif echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \\\n\t\t\t| grep -q __ELF__\n\t\tthen\n\t\t    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).\n\t\t    # Return netbsd for either.  FIX?\n\t\t    os=netbsd\n\t\telse\n\t\t    os=netbsdelf\n\t\tfi\n\t\t;;\n\t    *)\n\t\tos=netbsd\n\t\t;;\n\tesac\n\t# Determine ABI tags.\n\tcase \"$UNAME_MACHINE_ARCH\" in\n\t    earm*)\n\t\texpr='s/^earmv[0-9]/-eabi/;s/eb$//'\n\t\tabi=`echo \"$UNAME_MACHINE_ARCH\" | sed -e \"$expr\"`\n\t\t;;\n\tesac\n\t# The OS release\n\t# Debian GNU/NetBSD machines have a different userland, and\n\t# thus, need a distinct triplet. However, they do not need\n\t# kernel version information, so it can be replaced with a\n\t# suitable tag, in the style of linux-gnu.\n\tcase \"$UNAME_VERSION\" in\n\t    Debian*)\n\t\trelease='-gnu'\n\t\t;;\n\t    *)\n\t\trelease=`echo \"$UNAME_RELEASE\" | sed -e 's/[-_].*//' | cut -d. -f1,2`\n\t\t;;\n\tesac\n\t# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:\n\t# contains redundant information, the shorter form:\n\t# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.\n\techo \"$machine-${os}${release}${abi-}\"\n\texit ;;\n    *:Bitrig:*:*)\n\tUNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`\n\techo \"$UNAME_MACHINE_ARCH\"-unknown-bitrig\"$UNAME_RELEASE\"\n\texit ;;\n    *:OpenBSD:*:*)\n\tUNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`\n\techo \"$UNAME_MACHINE_ARCH\"-unknown-openbsd\"$UNAME_RELEASE\"\n\texit ;;\n    *:LibertyBSD:*:*)\n\tUNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\\.//'`\n\techo \"$UNAME_MACHINE_ARCH\"-unknown-libertybsd\"$UNAME_RELEASE\"\n\texit ;;\n    *:MidnightBSD:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-midnightbsd\"$UNAME_RELEASE\"\n\texit ;;\n    *:ekkoBSD:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-ekkobsd\"$UNAME_RELEASE\"\n\texit ;;\n    *:SolidBSD:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-solidbsd\"$UNAME_RELEASE\"\n\texit ;;\n    *:OS108:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-os108_\"$UNAME_RELEASE\"\n\texit ;;\n    macppc:MirBSD:*:*)\n\techo powerpc-unknown-mirbsd\"$UNAME_RELEASE\"\n\texit ;;\n    *:MirBSD:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-mirbsd\"$UNAME_RELEASE\"\n\texit ;;\n    *:Sortix:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-sortix\n\texit ;;\n    *:Twizzler:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-twizzler\n\texit ;;\n    *:Redox:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-redox\n\texit ;;\n    mips:OSF1:*.*)\n\techo mips-dec-osf1\n\texit ;;\n    alpha:OSF1:*:*)\n\tcase $UNAME_RELEASE in\n\t*4.0)\n\t\tUNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`\n\t\t;;\n\t*5.*)\n\t\tUNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`\n\t\t;;\n\tesac\n\t# According to Compaq, /usr/sbin/psrinfo has been available on\n\t# OSF/1 and Tru64 systems produced since 1995.  I hope that\n\t# covers most systems running today.  This code pipes the CPU\n\t# types through head -n 1, so we only detect the type of CPU 0.\n\tALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \\(.*\\) processor.*$/\\1/p' | head -n 1`\n\tcase \"$ALPHA_CPU_TYPE\" in\n\t    \"EV4 (21064)\")\n\t\tUNAME_MACHINE=alpha ;;\n\t    \"EV4.5 (21064)\")\n\t\tUNAME_MACHINE=alpha ;;\n\t    \"LCA4 (21066/21068)\")\n\t\tUNAME_MACHINE=alpha ;;\n\t    \"EV5 (21164)\")\n\t\tUNAME_MACHINE=alphaev5 ;;\n\t    \"EV5.6 (21164A)\")\n\t\tUNAME_MACHINE=alphaev56 ;;\n\t    \"EV5.6 (21164PC)\")\n\t\tUNAME_MACHINE=alphapca56 ;;\n\t    \"EV5.7 (21164PC)\")\n\t\tUNAME_MACHINE=alphapca57 ;;\n\t    \"EV6 (21264)\")\n\t\tUNAME_MACHINE=alphaev6 ;;\n\t    \"EV6.7 (21264A)\")\n\t\tUNAME_MACHINE=alphaev67 ;;\n\t    \"EV6.8CB (21264C)\")\n\t\tUNAME_MACHINE=alphaev68 ;;\n\t    \"EV6.8AL (21264B)\")\n\t\tUNAME_MACHINE=alphaev68 ;;\n\t    \"EV6.8CX (21264D)\")\n\t\tUNAME_MACHINE=alphaev68 ;;\n\t    \"EV6.9A (21264/EV69A)\")\n\t\tUNAME_MACHINE=alphaev69 ;;\n\t    \"EV7 (21364)\")\n\t\tUNAME_MACHINE=alphaev7 ;;\n\t    \"EV7.9 (21364A)\")\n\t\tUNAME_MACHINE=alphaev79 ;;\n\tesac\n\t# A Pn.n version is a patched version.\n\t# A Vn.n version is a released version.\n\t# A Tn.n version is a released field test version.\n\t# A Xn.n version is an unreleased experimental baselevel.\n\t# 1.2 uses \"1.2\" for uname -r.\n\techo \"$UNAME_MACHINE\"-dec-osf\"`echo \"$UNAME_RELEASE\" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`\"\n\t# Reset EXIT trap before exiting to avoid spurious non-zero exit code.\n\texitcode=$?\n\ttrap '' 0\n\texit $exitcode ;;\n    Amiga*:UNIX_System_V:4.0:*)\n\techo m68k-unknown-sysv4\n\texit ;;\n    *:[Aa]miga[Oo][Ss]:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-amigaos\n\texit ;;\n    *:[Mm]orph[Oo][Ss]:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-morphos\n\texit ;;\n    *:OS/390:*:*)\n\techo i370-ibm-openedition\n\texit ;;\n    *:z/VM:*:*)\n\techo s390-ibm-zvmoe\n\texit ;;\n    *:OS400:*:*)\n\techo powerpc-ibm-os400\n\texit ;;\n    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)\n\techo arm-acorn-riscix\"$UNAME_RELEASE\"\n\texit ;;\n    arm*:riscos:*:*|arm*:RISCOS:*:*)\n\techo arm-unknown-riscos\n\texit ;;\n    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)\n\techo hppa1.1-hitachi-hiuxmpp\n\texit ;;\n    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)\n\t# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.\n\tif test \"`(/bin/universe) 2>/dev/null`\" = att ; then\n\t\techo pyramid-pyramid-sysv3\n\telse\n\t\techo pyramid-pyramid-bsd\n\tfi\n\texit ;;\n    NILE*:*:*:dcosx)\n\techo pyramid-pyramid-svr4\n\texit ;;\n    DRS?6000:unix:4.0:6*)\n\techo sparc-icl-nx6\n\texit ;;\n    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)\n\tcase `/usr/bin/uname -p` in\n\t    sparc) echo sparc-icl-nx7; exit ;;\n\tesac ;;\n    s390x:SunOS:*:*)\n\techo \"$UNAME_MACHINE\"-ibm-solaris2\"`echo \"$UNAME_RELEASE\" | sed -e 's/[^.]*//'`\"\n\texit ;;\n    sun4H:SunOS:5.*:*)\n\techo sparc-hal-solaris2\"`echo \"$UNAME_RELEASE\"|sed -e 's/[^.]*//'`\"\n\texit ;;\n    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)\n\techo sparc-sun-solaris2\"`echo \"$UNAME_RELEASE\" | sed -e 's/[^.]*//'`\"\n\texit ;;\n    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)\n\techo i386-pc-auroraux\"$UNAME_RELEASE\"\n\texit ;;\n    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)\n\tset_cc_for_build\n\tSUN_ARCH=i386\n\t# If there is a compiler, see if it is configured for 64-bit objects.\n\t# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.\n\t# This test works for both compilers.\n\tif test \"$CC_FOR_BUILD\" != no_compiler_found; then\n\t    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \\\n\t\t(CCOPTS=\"\" $CC_FOR_BUILD -E - 2>/dev/null) | \\\n\t\tgrep IS_64BIT_ARCH >/dev/null\n\t    then\n\t\tSUN_ARCH=x86_64\n\t    fi\n\tfi\n\techo \"$SUN_ARCH\"-pc-solaris2\"`echo \"$UNAME_RELEASE\"|sed -e 's/[^.]*//'`\"\n\texit ;;\n    sun4*:SunOS:6*:*)\n\t# According to config.sub, this is the proper way to canonicalize\n\t# SunOS6.  Hard to guess exactly what SunOS6 will be like, but\n\t# it's likely to be more like Solaris than SunOS4.\n\techo sparc-sun-solaris3\"`echo \"$UNAME_RELEASE\"|sed -e 's/[^.]*//'`\"\n\texit ;;\n    sun4*:SunOS:*:*)\n\tcase \"`/usr/bin/arch -k`\" in\n\t    Series*|S4*)\n\t\tUNAME_RELEASE=`uname -v`\n\t\t;;\n\tesac\n\t# Japanese Language versions have a version number like `4.1.3-JL'.\n\techo sparc-sun-sunos\"`echo \"$UNAME_RELEASE\"|sed -e 's/-/_/'`\"\n\texit ;;\n    sun3*:SunOS:*:*)\n\techo m68k-sun-sunos\"$UNAME_RELEASE\"\n\texit ;;\n    sun*:*:4.2BSD:*)\n\tUNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`\n\ttest \"x$UNAME_RELEASE\" = x && UNAME_RELEASE=3\n\tcase \"`/bin/arch`\" in\n\t    sun3)\n\t\techo m68k-sun-sunos\"$UNAME_RELEASE\"\n\t\t;;\n\t    sun4)\n\t\techo sparc-sun-sunos\"$UNAME_RELEASE\"\n\t\t;;\n\tesac\n\texit ;;\n    aushp:SunOS:*:*)\n\techo sparc-auspex-sunos\"$UNAME_RELEASE\"\n\texit ;;\n    # The situation for MiNT is a little confusing.  The machine name\n    # can be virtually everything (everything which is not\n    # \"atarist\" or \"atariste\" at least should have a processor\n    # > m68000).  The system name ranges from \"MiNT\" over \"FreeMiNT\"\n    # to the lowercase version \"mint\" (or \"freemint\").  Finally\n    # the system name \"TOS\" denotes a system which is actually not\n    # MiNT.  But MiNT is downward compatible to TOS, so this should\n    # be no problem.\n    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)\n\techo m68k-atari-mint\"$UNAME_RELEASE\"\n\texit ;;\n    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)\n\techo m68k-atari-mint\"$UNAME_RELEASE\"\n\texit ;;\n    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)\n\techo m68k-atari-mint\"$UNAME_RELEASE\"\n\texit ;;\n    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)\n\techo m68k-milan-mint\"$UNAME_RELEASE\"\n\texit ;;\n    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)\n\techo m68k-hades-mint\"$UNAME_RELEASE\"\n\texit ;;\n    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)\n\techo m68k-unknown-mint\"$UNAME_RELEASE\"\n\texit ;;\n    m68k:machten:*:*)\n\techo m68k-apple-machten\"$UNAME_RELEASE\"\n\texit ;;\n    powerpc:machten:*:*)\n\techo powerpc-apple-machten\"$UNAME_RELEASE\"\n\texit ;;\n    RISC*:Mach:*:*)\n\techo mips-dec-mach_bsd4.3\n\texit ;;\n    RISC*:ULTRIX:*:*)\n\techo mips-dec-ultrix\"$UNAME_RELEASE\"\n\texit ;;\n    VAX*:ULTRIX*:*:*)\n\techo vax-dec-ultrix\"$UNAME_RELEASE\"\n\texit ;;\n    2020:CLIX:*:* | 2430:CLIX:*:*)\n\techo clipper-intergraph-clix\"$UNAME_RELEASE\"\n\texit ;;\n    mips:*:*:UMIPS | mips:*:*:RISCos)\n\tset_cc_for_build\n\tsed 's/^\t//' << EOF > \"$dummy.c\"\n#ifdef __cplusplus\n#include <stdio.h>  /* for printf() prototype */\n\tint main (int argc, char *argv[]) {\n#else\n\tint main (argc, argv) int argc; char *argv[]; {\n#endif\n\t#if defined (host_mips) && defined (MIPSEB)\n\t#if defined (SYSTYPE_SYSV)\n\t  printf (\"mips-mips-riscos%ssysv\\\\n\", argv[1]); exit (0);\n\t#endif\n\t#if defined (SYSTYPE_SVR4)\n\t  printf (\"mips-mips-riscos%ssvr4\\\\n\", argv[1]); exit (0);\n\t#endif\n\t#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)\n\t  printf (\"mips-mips-riscos%sbsd\\\\n\", argv[1]); exit (0);\n\t#endif\n\t#endif\n\t  exit (-1);\n\t}\nEOF\n\t$CC_FOR_BUILD -o \"$dummy\" \"$dummy.c\" &&\n\t  dummyarg=`echo \"$UNAME_RELEASE\" | sed -n 's/\\([0-9]*\\).*/\\1/p'` &&\n\t  SYSTEM_NAME=`\"$dummy\" \"$dummyarg\"` &&\n\t    { echo \"$SYSTEM_NAME\"; exit; }\n\techo mips-mips-riscos\"$UNAME_RELEASE\"\n\texit ;;\n    Motorola:PowerMAX_OS:*:*)\n\techo powerpc-motorola-powermax\n\texit ;;\n    Motorola:*:4.3:PL8-*)\n\techo powerpc-harris-powermax\n\texit ;;\n    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)\n\techo powerpc-harris-powermax\n\texit ;;\n    Night_Hawk:Power_UNIX:*:*)\n\techo powerpc-harris-powerunix\n\texit ;;\n    m88k:CX/UX:7*:*)\n\techo m88k-harris-cxux7\n\texit ;;\n    m88k:*:4*:R4*)\n\techo m88k-motorola-sysv4\n\texit ;;\n    m88k:*:3*:R3*)\n\techo m88k-motorola-sysv3\n\texit ;;\n    AViiON:dgux:*:*)\n\t# DG/UX returns AViiON for all architectures\n\tUNAME_PROCESSOR=`/usr/bin/uname -p`\n\tif test \"$UNAME_PROCESSOR\" = mc88100 || test \"$UNAME_PROCESSOR\" = mc88110\n\tthen\n\t    if test \"$TARGET_BINARY_INTERFACE\"x = m88kdguxelfx || \\\n\t       test \"$TARGET_BINARY_INTERFACE\"x = x\n\t    then\n\t\techo m88k-dg-dgux\"$UNAME_RELEASE\"\n\t    else\n\t\techo m88k-dg-dguxbcs\"$UNAME_RELEASE\"\n\t    fi\n\telse\n\t    echo i586-dg-dgux\"$UNAME_RELEASE\"\n\tfi\n\texit ;;\n    M88*:DolphinOS:*:*)\t# DolphinOS (SVR3)\n\techo m88k-dolphin-sysv3\n\texit ;;\n    M88*:*:R3*:*)\n\t# Delta 88k system running SVR3\n\techo m88k-motorola-sysv3\n\texit ;;\n    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)\n\techo m88k-tektronix-sysv3\n\texit ;;\n    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)\n\techo m68k-tektronix-bsd\n\texit ;;\n    *:IRIX*:*:*)\n\techo mips-sgi-irix\"`echo \"$UNAME_RELEASE\"|sed -e 's/-/_/g'`\"\n\texit ;;\n    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.\n\techo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id\n\texit ;;               # Note that: echo \"'`uname -s`'\" gives 'AIX '\n    i*86:AIX:*:*)\n\techo i386-ibm-aix\n\texit ;;\n    ia64:AIX:*:*)\n\tif test -x /usr/bin/oslevel ; then\n\t\tIBM_REV=`/usr/bin/oslevel`\n\telse\n\t\tIBM_REV=\"$UNAME_VERSION.$UNAME_RELEASE\"\n\tfi\n\techo \"$UNAME_MACHINE\"-ibm-aix\"$IBM_REV\"\n\texit ;;\n    *:AIX:2:3)\n\tif grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then\n\t\tset_cc_for_build\n\t\tsed 's/^\t\t//' << EOF > \"$dummy.c\"\n\t\t#include <sys/systemcfg.h>\n\n\t\tmain()\n\t\t\t{\n\t\t\tif (!__power_pc())\n\t\t\t\texit(1);\n\t\t\tputs(\"powerpc-ibm-aix3.2.5\");\n\t\t\texit(0);\n\t\t\t}\nEOF\n\t\tif $CC_FOR_BUILD -o \"$dummy\" \"$dummy.c\" && SYSTEM_NAME=`\"$dummy\"`\n\t\tthen\n\t\t\techo \"$SYSTEM_NAME\"\n\t\telse\n\t\t\techo rs6000-ibm-aix3.2.5\n\t\tfi\n\telif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then\n\t\techo rs6000-ibm-aix3.2.4\n\telse\n\t\techo rs6000-ibm-aix3.2\n\tfi\n\texit ;;\n    *:AIX:*:[4567])\n\tIBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`\n\tif /usr/sbin/lsattr -El \"$IBM_CPU_ID\" | grep ' POWER' >/dev/null 2>&1; then\n\t\tIBM_ARCH=rs6000\n\telse\n\t\tIBM_ARCH=powerpc\n\tfi\n\tif test -x /usr/bin/lslpp ; then\n\t\tIBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |\n\t\t\t   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`\n\telse\n\t\tIBM_REV=\"$UNAME_VERSION.$UNAME_RELEASE\"\n\tfi\n\techo \"$IBM_ARCH\"-ibm-aix\"$IBM_REV\"\n\texit ;;\n    *:AIX:*:*)\n\techo rs6000-ibm-aix\n\texit ;;\n    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)\n\techo romp-ibm-bsd4.4\n\texit ;;\n    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and\n\techo romp-ibm-bsd\"$UNAME_RELEASE\"   # 4.3 with uname added to\n\texit ;;                             # report: romp-ibm BSD 4.3\n    *:BOSX:*:*)\n\techo rs6000-bull-bosx\n\texit ;;\n    DPX/2?00:B.O.S.:*:*)\n\techo m68k-bull-sysv3\n\texit ;;\n    9000/[34]??:4.3bsd:1.*:*)\n\techo m68k-hp-bsd\n\texit ;;\n    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)\n\techo m68k-hp-bsd4.4\n\texit ;;\n    9000/[34678]??:HP-UX:*:*)\n\tHPUX_REV=`echo \"$UNAME_RELEASE\"|sed -e 's/[^.]*.[0B]*//'`\n\tcase \"$UNAME_MACHINE\" in\n\t    9000/31?)            HP_ARCH=m68000 ;;\n\t    9000/[34]??)         HP_ARCH=m68k ;;\n\t    9000/[678][0-9][0-9])\n\t\tif test -x /usr/bin/getconf; then\n\t\t    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`\n\t\t    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`\n\t\t    case \"$sc_cpu_version\" in\n\t\t      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0\n\t\t      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1\n\t\t      532)                      # CPU_PA_RISC2_0\n\t\t\tcase \"$sc_kernel_bits\" in\n\t\t\t  32) HP_ARCH=hppa2.0n ;;\n\t\t\t  64) HP_ARCH=hppa2.0w ;;\n\t\t\t  '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20\n\t\t\tesac ;;\n\t\t    esac\n\t\tfi\n\t\tif test \"$HP_ARCH\" = \"\"; then\n\t\t    set_cc_for_build\n\t\t    sed 's/^\t\t//' << EOF > \"$dummy.c\"\n\n\t\t#define _HPUX_SOURCE\n\t\t#include <stdlib.h>\n\t\t#include <unistd.h>\n\n\t\tint main ()\n\t\t{\n\t\t#if defined(_SC_KERNEL_BITS)\n\t\t    long bits = sysconf(_SC_KERNEL_BITS);\n\t\t#endif\n\t\t    long cpu  = sysconf (_SC_CPU_VERSION);\n\n\t\t    switch (cpu)\n\t\t\t{\n\t\t\tcase CPU_PA_RISC1_0: puts (\"hppa1.0\"); break;\n\t\t\tcase CPU_PA_RISC1_1: puts (\"hppa1.1\"); break;\n\t\t\tcase CPU_PA_RISC2_0:\n\t\t#if defined(_SC_KERNEL_BITS)\n\t\t\t    switch (bits)\n\t\t\t\t{\n\t\t\t\tcase 64: puts (\"hppa2.0w\"); break;\n\t\t\t\tcase 32: puts (\"hppa2.0n\"); break;\n\t\t\t\tdefault: puts (\"hppa2.0\"); break;\n\t\t\t\t} break;\n\t\t#else  /* !defined(_SC_KERNEL_BITS) */\n\t\t\t    puts (\"hppa2.0\"); break;\n\t\t#endif\n\t\t\tdefault: puts (\"hppa1.0\"); break;\n\t\t\t}\n\t\t    exit (0);\n\t\t}\nEOF\n\t\t    (CCOPTS=\"\" $CC_FOR_BUILD -o \"$dummy\" \"$dummy.c\" 2>/dev/null) && HP_ARCH=`\"$dummy\"`\n\t\t    test -z \"$HP_ARCH\" && HP_ARCH=hppa\n\t\tfi ;;\n\tesac\n\tif test \"$HP_ARCH\" = hppa2.0w\n\tthen\n\t    set_cc_for_build\n\n\t    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating\n\t    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler\n\t    # generating 64-bit code.  GNU and HP use different nomenclature:\n\t    #\n\t    # $ CC_FOR_BUILD=cc ./config.guess\n\t    # => hppa2.0w-hp-hpux11.23\n\t    # $ CC_FOR_BUILD=\"cc +DA2.0w\" ./config.guess\n\t    # => hppa64-hp-hpux11.23\n\n\t    if echo __LP64__ | (CCOPTS=\"\" $CC_FOR_BUILD -E - 2>/dev/null) |\n\t\tgrep -q __LP64__\n\t    then\n\t\tHP_ARCH=hppa2.0w\n\t    else\n\t\tHP_ARCH=hppa64\n\t    fi\n\tfi\n\techo \"$HP_ARCH\"-hp-hpux\"$HPUX_REV\"\n\texit ;;\n    ia64:HP-UX:*:*)\n\tHPUX_REV=`echo \"$UNAME_RELEASE\"|sed -e 's/[^.]*.[0B]*//'`\n\techo ia64-hp-hpux\"$HPUX_REV\"\n\texit ;;\n    3050*:HI-UX:*:*)\n\tset_cc_for_build\n\tsed 's/^\t//' << EOF > \"$dummy.c\"\n\t#include <unistd.h>\n\tint\n\tmain ()\n\t{\n\t  long cpu = sysconf (_SC_CPU_VERSION);\n\t  /* The order matters, because CPU_IS_HP_MC68K erroneously returns\n\t     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct\n\t     results, however.  */\n\t  if (CPU_IS_PA_RISC (cpu))\n\t    {\n\t      switch (cpu)\n\t\t{\n\t\t  case CPU_PA_RISC1_0: puts (\"hppa1.0-hitachi-hiuxwe2\"); break;\n\t\t  case CPU_PA_RISC1_1: puts (\"hppa1.1-hitachi-hiuxwe2\"); break;\n\t\t  case CPU_PA_RISC2_0: puts (\"hppa2.0-hitachi-hiuxwe2\"); break;\n\t\t  default: puts (\"hppa-hitachi-hiuxwe2\"); break;\n\t\t}\n\t    }\n\t  else if (CPU_IS_HP_MC68K (cpu))\n\t    puts (\"m68k-hitachi-hiuxwe2\");\n\t  else puts (\"unknown-hitachi-hiuxwe2\");\n\t  exit (0);\n\t}\nEOF\n\t$CC_FOR_BUILD -o \"$dummy\" \"$dummy.c\" && SYSTEM_NAME=`\"$dummy\"` &&\n\t\t{ echo \"$SYSTEM_NAME\"; exit; }\n\techo unknown-hitachi-hiuxwe2\n\texit ;;\n    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)\n\techo hppa1.1-hp-bsd\n\texit ;;\n    9000/8??:4.3bsd:*:*)\n\techo hppa1.0-hp-bsd\n\texit ;;\n    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)\n\techo hppa1.0-hp-mpeix\n\texit ;;\n    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)\n\techo hppa1.1-hp-osf\n\texit ;;\n    hp8??:OSF1:*:*)\n\techo hppa1.0-hp-osf\n\texit ;;\n    i*86:OSF1:*:*)\n\tif test -x /usr/sbin/sysversion ; then\n\t    echo \"$UNAME_MACHINE\"-unknown-osf1mk\n\telse\n\t    echo \"$UNAME_MACHINE\"-unknown-osf1\n\tfi\n\texit ;;\n    parisc*:Lites*:*:*)\n\techo hppa1.1-hp-lites\n\texit ;;\n    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)\n\techo c1-convex-bsd\n\texit ;;\n    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)\n\tif getsysinfo -f scalar_acc\n\tthen echo c32-convex-bsd\n\telse echo c2-convex-bsd\n\tfi\n\texit ;;\n    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)\n\techo c34-convex-bsd\n\texit ;;\n    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)\n\techo c38-convex-bsd\n\texit ;;\n    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)\n\techo c4-convex-bsd\n\texit ;;\n    CRAY*Y-MP:*:*:*)\n\techo ymp-cray-unicos\"$UNAME_RELEASE\" | sed -e 's/\\.[^.]*$/.X/'\n\texit ;;\n    CRAY*[A-Z]90:*:*:*)\n\techo \"$UNAME_MACHINE\"-cray-unicos\"$UNAME_RELEASE\" \\\n\t| sed -e 's/CRAY.*\\([A-Z]90\\)/\\1/' \\\n\t      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \\\n\t      -e 's/\\.[^.]*$/.X/'\n\texit ;;\n    CRAY*TS:*:*:*)\n\techo t90-cray-unicos\"$UNAME_RELEASE\" | sed -e 's/\\.[^.]*$/.X/'\n\texit ;;\n    CRAY*T3E:*:*:*)\n\techo alphaev5-cray-unicosmk\"$UNAME_RELEASE\" | sed -e 's/\\.[^.]*$/.X/'\n\texit ;;\n    CRAY*SV1:*:*:*)\n\techo sv1-cray-unicos\"$UNAME_RELEASE\" | sed -e 's/\\.[^.]*$/.X/'\n\texit ;;\n    *:UNICOS/mp:*:*)\n\techo craynv-cray-unicosmp\"$UNAME_RELEASE\" | sed -e 's/\\.[^.]*$/.X/'\n\texit ;;\n    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)\n\tFUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`\n\tFUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\\///'`\n\tFUJITSU_REL=`echo \"$UNAME_RELEASE\" | sed -e 's/ /_/'`\n\techo \"${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}\"\n\texit ;;\n    5000:UNIX_System_V:4.*:*)\n\tFUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\\///'`\n\tFUJITSU_REL=`echo \"$UNAME_RELEASE\" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`\n\techo \"sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}\"\n\texit ;;\n    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\\ Embedded/OS:*:*)\n\techo \"$UNAME_MACHINE\"-pc-bsdi\"$UNAME_RELEASE\"\n\texit ;;\n    sparc*:BSD/OS:*:*)\n\techo sparc-unknown-bsdi\"$UNAME_RELEASE\"\n\texit ;;\n    *:BSD/OS:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-bsdi\"$UNAME_RELEASE\"\n\texit ;;\n    arm:FreeBSD:*:*)\n\tUNAME_PROCESSOR=`uname -p`\n\tset_cc_for_build\n\tif echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \\\n\t    | grep -q __ARM_PCS_VFP\n\tthen\n\t    echo \"${UNAME_PROCESSOR}\"-unknown-freebsd\"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`\"-gnueabi\n\telse\n\t    echo \"${UNAME_PROCESSOR}\"-unknown-freebsd\"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`\"-gnueabihf\n\tfi\n\texit ;;\n    *:FreeBSD:*:*)\n\tUNAME_PROCESSOR=`/usr/bin/uname -p`\n\tcase \"$UNAME_PROCESSOR\" in\n\t    amd64)\n\t\tUNAME_PROCESSOR=x86_64 ;;\n\t    i386)\n\t\tUNAME_PROCESSOR=i586 ;;\n\tesac\n\techo \"$UNAME_PROCESSOR\"-unknown-freebsd\"`echo \"$UNAME_RELEASE\"|sed -e 's/[-(].*//'`\"\n\texit ;;\n    i*:CYGWIN*:*)\n\techo \"$UNAME_MACHINE\"-pc-cygwin\n\texit ;;\n    *:MINGW64*:*)\n\techo \"$UNAME_MACHINE\"-pc-mingw64\n\texit ;;\n    *:MINGW*:*)\n\techo \"$UNAME_MACHINE\"-pc-mingw32\n\texit ;;\n    *:MSYS*:*)\n\techo \"$UNAME_MACHINE\"-pc-msys\n\texit ;;\n    i*:PW*:*)\n\techo \"$UNAME_MACHINE\"-pc-pw32\n\texit ;;\n    *:Interix*:*)\n\tcase \"$UNAME_MACHINE\" in\n\t    x86)\n\t\techo i586-pc-interix\"$UNAME_RELEASE\"\n\t\texit ;;\n\t    authenticamd | genuineintel | EM64T)\n\t\techo x86_64-unknown-interix\"$UNAME_RELEASE\"\n\t\texit ;;\n\t    IA64)\n\t\techo ia64-unknown-interix\"$UNAME_RELEASE\"\n\t\texit ;;\n\tesac ;;\n    i*:UWIN*:*)\n\techo \"$UNAME_MACHINE\"-pc-uwin\n\texit ;;\n    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)\n\techo x86_64-pc-cygwin\n\texit ;;\n    prep*:SunOS:5.*:*)\n\techo powerpcle-unknown-solaris2\"`echo \"$UNAME_RELEASE\"|sed -e 's/[^.]*//'`\"\n\texit ;;\n    *:GNU:*:*)\n\t# the GNU system\n\techo \"`echo \"$UNAME_MACHINE\"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo \"$UNAME_RELEASE\"|sed -e 's,/.*$,,'`\"\n\texit ;;\n    *:GNU/*:*:*)\n\t# other systems with GNU libc and userland\n\techo \"$UNAME_MACHINE-unknown-`echo \"$UNAME_SYSTEM\" | sed 's,^[^/]*/,,' | tr \"[:upper:]\" \"[:lower:]\"``echo \"$UNAME_RELEASE\"|sed -e 's/[-(].*//'`-$LIBC\"\n\texit ;;\n    *:Minix:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-minix\n\texit ;;\n    aarch64:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    aarch64_be:Linux:*:*)\n\tUNAME_MACHINE=aarch64_be\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    alpha:Linux:*:*)\n\tcase `sed -n '/^cpu model/s/^.*: \\(.*\\)/\\1/p' /proc/cpuinfo 2>/dev/null` in\n\t  EV5)   UNAME_MACHINE=alphaev5 ;;\n\t  EV56)  UNAME_MACHINE=alphaev56 ;;\n\t  PCA56) UNAME_MACHINE=alphapca56 ;;\n\t  PCA57) UNAME_MACHINE=alphapca56 ;;\n\t  EV6)   UNAME_MACHINE=alphaev6 ;;\n\t  EV67)  UNAME_MACHINE=alphaev67 ;;\n\t  EV68*) UNAME_MACHINE=alphaev68 ;;\n\tesac\n\tobjdump --private-headers /bin/sh | grep -q ld.so.1\n\tif test \"$?\" = 0 ; then LIBC=gnulibc1 ; fi\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    arc:Linux:*:* | arceb:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    arm*:Linux:*:*)\n\tset_cc_for_build\n\tif echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \\\n\t    | grep -q __ARM_EABI__\n\tthen\n\t    echo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\telse\n\t    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \\\n\t\t| grep -q __ARM_PCS_VFP\n\t    then\n\t\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"eabi\n\t    else\n\t\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"eabihf\n\t    fi\n\tfi\n\texit ;;\n    avr32*:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    cris:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-axis-linux-\"$LIBC\"\n\texit ;;\n    crisv32:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-axis-linux-\"$LIBC\"\n\texit ;;\n    e2k:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    frv:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    hexagon:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    i*86:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-pc-linux-\"$LIBC\"\n\texit ;;\n    ia64:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    k1om:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    m32r*:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    m68*:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    mips:Linux:*:* | mips64:Linux:*:*)\n\tset_cc_for_build\n\tIS_GLIBC=0\n\ttest x\"${LIBC}\" = xgnu && IS_GLIBC=1\n\tsed 's/^\t//' << EOF > \"$dummy.c\"\n\t#undef CPU\n\t#undef mips\n\t#undef mipsel\n\t#undef mips64\n\t#undef mips64el\n\t#if ${IS_GLIBC} && defined(_ABI64)\n\tLIBCABI=gnuabi64\n\t#else\n\t#if ${IS_GLIBC} && defined(_ABIN32)\n\tLIBCABI=gnuabin32\n\t#else\n\tLIBCABI=${LIBC}\n\t#endif\n\t#endif\n\n\t#if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6\n\tCPU=mipsisa64r6\n\t#else\n\t#if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6\n\tCPU=mipsisa32r6\n\t#else\n\t#if defined(__mips64)\n\tCPU=mips64\n\t#else\n\tCPU=mips\n\t#endif\n\t#endif\n\t#endif\n\n\t#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)\n\tMIPS_ENDIAN=el\n\t#else\n\t#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)\n\tMIPS_ENDIAN=\n\t#else\n\tMIPS_ENDIAN=\n\t#endif\n\t#endif\nEOF\n\teval \"`$CC_FOR_BUILD -E \"$dummy.c\" 2>/dev/null | grep '^CPU\\|^MIPS_ENDIAN\\|^LIBCABI'`\"\n\ttest \"x$CPU\" != x && { echo \"$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI\"; exit; }\n\t;;\n    mips64el:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    openrisc*:Linux:*:*)\n\techo or1k-unknown-linux-\"$LIBC\"\n\texit ;;\n    or32:Linux:*:* | or1k*:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    padre:Linux:*:*)\n\techo sparc-unknown-linux-\"$LIBC\"\n\texit ;;\n    parisc64:Linux:*:* | hppa64:Linux:*:*)\n\techo hppa64-unknown-linux-\"$LIBC\"\n\texit ;;\n    parisc:Linux:*:* | hppa:Linux:*:*)\n\t# Look for CPU level\n\tcase `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in\n\t  PA7*) echo hppa1.1-unknown-linux-\"$LIBC\" ;;\n\t  PA8*) echo hppa2.0-unknown-linux-\"$LIBC\" ;;\n\t  *)    echo hppa-unknown-linux-\"$LIBC\" ;;\n\tesac\n\texit ;;\n    ppc64:Linux:*:*)\n\techo powerpc64-unknown-linux-\"$LIBC\"\n\texit ;;\n    ppc:Linux:*:*)\n\techo powerpc-unknown-linux-\"$LIBC\"\n\texit ;;\n    ppc64le:Linux:*:*)\n\techo powerpc64le-unknown-linux-\"$LIBC\"\n\texit ;;\n    ppcle:Linux:*:*)\n\techo powerpcle-unknown-linux-\"$LIBC\"\n\texit ;;\n    riscv32:Linux:*:* | riscv64:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    s390:Linux:*:* | s390x:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-ibm-linux-\"$LIBC\"\n\texit ;;\n    sh64*:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    sh*:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    sparc:Linux:*:* | sparc64:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    tile*:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    vax:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-dec-linux-\"$LIBC\"\n\texit ;;\n    x86_64:Linux:*:*)\n\tset_cc_for_build\n\tLIBCABI=$LIBC\n\tif test \"$CC_FOR_BUILD\" != no_compiler_found; then\n\t    if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \\\n\t\t(CCOPTS=\"\" $CC_FOR_BUILD -E - 2>/dev/null) | \\\n\t\tgrep IS_X32 >/dev/null\n\t    then\n\t\tLIBCABI=\"$LIBC\"x32\n\t    fi\n\tfi\n\techo \"$UNAME_MACHINE\"-pc-linux-\"$LIBCABI\"\n\texit ;;\n    xtensa*:Linux:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-linux-\"$LIBC\"\n\texit ;;\n    i*86:DYNIX/ptx:4*:*)\n\t# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.\n\t# earlier versions are messed up and put the nodename in both\n\t# sysname and nodename.\n\techo i386-sequent-sysv4\n\texit ;;\n    i*86:UNIX_SV:4.2MP:2.*)\n\t# Unixware is an offshoot of SVR4, but it has its own version\n\t# number series starting with 2...\n\t# I am not positive that other SVR4 systems won't match this,\n\t# I just have to hope.  -- rms.\n\t# Use sysv4.2uw... so that sysv4* matches it.\n\techo \"$UNAME_MACHINE\"-pc-sysv4.2uw\"$UNAME_VERSION\"\n\texit ;;\n    i*86:OS/2:*:*)\n\t# If we were able to find `uname', then EMX Unix compatibility\n\t# is probably installed.\n\techo \"$UNAME_MACHINE\"-pc-os2-emx\n\texit ;;\n    i*86:XTS-300:*:STOP)\n\techo \"$UNAME_MACHINE\"-unknown-stop\n\texit ;;\n    i*86:atheos:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-atheos\n\texit ;;\n    i*86:syllable:*:*)\n\techo \"$UNAME_MACHINE\"-pc-syllable\n\texit ;;\n    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)\n\techo i386-unknown-lynxos\"$UNAME_RELEASE\"\n\texit ;;\n    i*86:*DOS:*:*)\n\techo \"$UNAME_MACHINE\"-pc-msdosdjgpp\n\texit ;;\n    i*86:*:4.*:*)\n\tUNAME_REL=`echo \"$UNAME_RELEASE\" | sed 's/\\/MP$//'`\n\tif grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then\n\t\techo \"$UNAME_MACHINE\"-univel-sysv\"$UNAME_REL\"\n\telse\n\t\techo \"$UNAME_MACHINE\"-pc-sysv\"$UNAME_REL\"\n\tfi\n\texit ;;\n    i*86:*:5:[678]*)\n\t# UnixWare 7.x, OpenUNIX and OpenServer 6.\n\tcase `/bin/uname -X | grep \"^Machine\"` in\n\t    *486*)\t     UNAME_MACHINE=i486 ;;\n\t    *Pentium)\t     UNAME_MACHINE=i586 ;;\n\t    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;\n\tesac\n\techo \"$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}\"\n\texit ;;\n    i*86:*:3.2:*)\n\tif test -f /usr/options/cb.name; then\n\t\tUNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`\n\t\techo \"$UNAME_MACHINE\"-pc-isc\"$UNAME_REL\"\n\telif /bin/uname -X 2>/dev/null >/dev/null ; then\n\t\tUNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`\n\t\t(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486\n\t\t(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \\\n\t\t\t&& UNAME_MACHINE=i586\n\t\t(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \\\n\t\t\t&& UNAME_MACHINE=i686\n\t\t(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \\\n\t\t\t&& UNAME_MACHINE=i686\n\t\techo \"$UNAME_MACHINE\"-pc-sco\"$UNAME_REL\"\n\telse\n\t\techo \"$UNAME_MACHINE\"-pc-sysv32\n\tfi\n\texit ;;\n    pc:*:*:*)\n\t# Left here for compatibility:\n\t# uname -m prints for DJGPP always 'pc', but it prints nothing about\n\t# the processor, so we play safe by assuming i586.\n\t# Note: whatever this is, it MUST be the same as what config.sub\n\t# prints for the \"djgpp\" host, or else GDB configure will decide that\n\t# this is a cross-build.\n\techo i586-pc-msdosdjgpp\n\texit ;;\n    Intel:Mach:3*:*)\n\techo i386-pc-mach3\n\texit ;;\n    paragon:*:*:*)\n\techo i860-intel-osf1\n\texit ;;\n    i860:*:4.*:*) # i860-SVR4\n\tif grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then\n\t  echo i860-stardent-sysv\"$UNAME_RELEASE\" # Stardent Vistra i860-SVR4\n\telse # Add other i860-SVR4 vendors below as they are discovered.\n\t  echo i860-unknown-sysv\"$UNAME_RELEASE\"  # Unknown i860-SVR4\n\tfi\n\texit ;;\n    mini*:CTIX:SYS*5:*)\n\t# \"miniframe\"\n\techo m68010-convergent-sysv\n\texit ;;\n    mc68k:UNIX:SYSTEM5:3.51m)\n\techo m68k-convergent-sysv\n\texit ;;\n    M680?0:D-NIX:5.3:*)\n\techo m68k-diab-dnix\n\texit ;;\n    M68*:*:R3V[5678]*:*)\n\ttest -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;\n    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)\n\tOS_REL=''\n\ttest -r /etc/.relid \\\n\t&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \\([0-9][0-9]\\).*/\\1/p' < /etc/.relid`\n\t/bin/uname -p 2>/dev/null | grep 86 >/dev/null \\\n\t  && { echo i486-ncr-sysv4.3\"$OS_REL\"; exit; }\n\t/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \\\n\t  && { echo i586-ncr-sysv4.3\"$OS_REL\"; exit; } ;;\n    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)\n\t/bin/uname -p 2>/dev/null | grep 86 >/dev/null \\\n\t  && { echo i486-ncr-sysv4; exit; } ;;\n    NCR*:*:4.2:* | MPRAS*:*:4.2:*)\n\tOS_REL='.3'\n\ttest -r /etc/.relid \\\n\t    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \\([0-9][0-9]\\).*/\\1/p' < /etc/.relid`\n\t/bin/uname -p 2>/dev/null | grep 86 >/dev/null \\\n\t    && { echo i486-ncr-sysv4.3\"$OS_REL\"; exit; }\n\t/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \\\n\t    && { echo i586-ncr-sysv4.3\"$OS_REL\"; exit; }\n\t/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \\\n\t    && { echo i586-ncr-sysv4.3\"$OS_REL\"; exit; } ;;\n    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)\n\techo m68k-unknown-lynxos\"$UNAME_RELEASE\"\n\texit ;;\n    mc68030:UNIX_System_V:4.*:*)\n\techo m68k-atari-sysv4\n\texit ;;\n    TSUNAMI:LynxOS:2.*:*)\n\techo sparc-unknown-lynxos\"$UNAME_RELEASE\"\n\texit ;;\n    rs6000:LynxOS:2.*:*)\n\techo rs6000-unknown-lynxos\"$UNAME_RELEASE\"\n\texit ;;\n    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)\n\techo powerpc-unknown-lynxos\"$UNAME_RELEASE\"\n\texit ;;\n    SM[BE]S:UNIX_SV:*:*)\n\techo mips-dde-sysv\"$UNAME_RELEASE\"\n\texit ;;\n    RM*:ReliantUNIX-*:*:*)\n\techo mips-sni-sysv4\n\texit ;;\n    RM*:SINIX-*:*:*)\n\techo mips-sni-sysv4\n\texit ;;\n    *:SINIX-*:*:*)\n\tif uname -p 2>/dev/null >/dev/null ; then\n\t\tUNAME_MACHINE=`(uname -p) 2>/dev/null`\n\t\techo \"$UNAME_MACHINE\"-sni-sysv4\n\telse\n\t\techo ns32k-sni-sysv\n\tfi\n\texit ;;\n    PENTIUM:*:4.0*:*)\t# Unisys `ClearPath HMP IX 4000' SVR4/MP effort\n\t\t\t# says <Richard.M.Bartel@ccMail.Census.GOV>\n\techo i586-unisys-sysv4\n\texit ;;\n    *:UNIX_System_V:4*:FTX*)\n\t# From Gerald Hewes <hewes@openmarket.com>.\n\t# How about differentiating between stratus architectures? -djm\n\techo hppa1.1-stratus-sysv4\n\texit ;;\n    *:*:*:FTX*)\n\t# From seanf@swdc.stratus.com.\n\techo i860-stratus-sysv4\n\texit ;;\n    i*86:VOS:*:*)\n\t# From Paul.Green@stratus.com.\n\techo \"$UNAME_MACHINE\"-stratus-vos\n\texit ;;\n    *:VOS:*:*)\n\t# From Paul.Green@stratus.com.\n\techo hppa1.1-stratus-vos\n\texit ;;\n    mc68*:A/UX:*:*)\n\techo m68k-apple-aux\"$UNAME_RELEASE\"\n\texit ;;\n    news*:NEWS-OS:6*:*)\n\techo mips-sony-newsos6\n\texit ;;\n    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)\n\tif test -d /usr/nec; then\n\t\techo mips-nec-sysv\"$UNAME_RELEASE\"\n\telse\n\t\techo mips-unknown-sysv\"$UNAME_RELEASE\"\n\tfi\n\texit ;;\n    BeBox:BeOS:*:*)\t# BeOS running on hardware made by Be, PPC only.\n\techo powerpc-be-beos\n\texit ;;\n    BeMac:BeOS:*:*)\t# BeOS running on Mac or Mac clone, PPC only.\n\techo powerpc-apple-beos\n\texit ;;\n    BePC:BeOS:*:*)\t# BeOS running on Intel PC compatible.\n\techo i586-pc-beos\n\texit ;;\n    BePC:Haiku:*:*)\t# Haiku running on Intel PC compatible.\n\techo i586-pc-haiku\n\texit ;;\n    x86_64:Haiku:*:*)\n\techo x86_64-unknown-haiku\n\texit ;;\n    SX-4:SUPER-UX:*:*)\n\techo sx4-nec-superux\"$UNAME_RELEASE\"\n\texit ;;\n    SX-5:SUPER-UX:*:*)\n\techo sx5-nec-superux\"$UNAME_RELEASE\"\n\texit ;;\n    SX-6:SUPER-UX:*:*)\n\techo sx6-nec-superux\"$UNAME_RELEASE\"\n\texit ;;\n    SX-7:SUPER-UX:*:*)\n\techo sx7-nec-superux\"$UNAME_RELEASE\"\n\texit ;;\n    SX-8:SUPER-UX:*:*)\n\techo sx8-nec-superux\"$UNAME_RELEASE\"\n\texit ;;\n    SX-8R:SUPER-UX:*:*)\n\techo sx8r-nec-superux\"$UNAME_RELEASE\"\n\texit ;;\n    SX-ACE:SUPER-UX:*:*)\n\techo sxace-nec-superux\"$UNAME_RELEASE\"\n\texit ;;\n    Power*:Rhapsody:*:*)\n\techo powerpc-apple-rhapsody\"$UNAME_RELEASE\"\n\texit ;;\n    *:Rhapsody:*:*)\n\techo \"$UNAME_MACHINE\"-apple-rhapsody\"$UNAME_RELEASE\"\n\texit ;;\n    arm64:Darwin:*:*)\n\techo aarch64-apple-darwin\"$UNAME_RELEASE\"\n\texit ;;\n    *:Darwin:*:*)\n\tUNAME_PROCESSOR=`uname -p`\n\tcase $UNAME_PROCESSOR in\n\t    unknown) UNAME_PROCESSOR=powerpc ;;\n\tesac\n\tif command -v xcode-select > /dev/null 2> /dev/null && \\\n\t\t! xcode-select --print-path > /dev/null 2> /dev/null ; then\n\t    # Avoid executing cc if there is no toolchain installed as\n\t    # cc will be a stub that puts up a graphical alert\n\t    # prompting the user to install developer tools.\n\t    CC_FOR_BUILD=no_compiler_found\n\telse\n\t    set_cc_for_build\n\tfi\n\tif test \"$CC_FOR_BUILD\" != no_compiler_found; then\n\t    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \\\n\t\t   (CCOPTS=\"\" $CC_FOR_BUILD -E - 2>/dev/null) | \\\n\t\t   grep IS_64BIT_ARCH >/dev/null\n\t    then\n\t\tcase $UNAME_PROCESSOR in\n\t\t    i386) UNAME_PROCESSOR=x86_64 ;;\n\t\t    powerpc) UNAME_PROCESSOR=powerpc64 ;;\n\t\tesac\n\t    fi\n\t    # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc\n\t    if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \\\n\t\t   (CCOPTS=\"\" $CC_FOR_BUILD -E - 2>/dev/null) | \\\n\t\t   grep IS_PPC >/dev/null\n\t    then\n\t\tUNAME_PROCESSOR=powerpc\n\t    fi\n\telif test \"$UNAME_PROCESSOR\" = i386 ; then\n\t    # uname -m returns i386 or x86_64\n\t    UNAME_PROCESSOR=$UNAME_MACHINE\n\tfi\n\techo \"$UNAME_PROCESSOR\"-apple-darwin\"$UNAME_RELEASE\"\n\texit ;;\n    *:procnto*:*:* | *:QNX:[0123456789]*:*)\n\tUNAME_PROCESSOR=`uname -p`\n\tif test \"$UNAME_PROCESSOR\" = x86; then\n\t\tUNAME_PROCESSOR=i386\n\t\tUNAME_MACHINE=pc\n\tfi\n\techo \"$UNAME_PROCESSOR\"-\"$UNAME_MACHINE\"-nto-qnx\"$UNAME_RELEASE\"\n\texit ;;\n    *:QNX:*:4*)\n\techo i386-pc-qnx\n\texit ;;\n    NEO-*:NONSTOP_KERNEL:*:*)\n\techo neo-tandem-nsk\"$UNAME_RELEASE\"\n\texit ;;\n    NSE-*:NONSTOP_KERNEL:*:*)\n\techo nse-tandem-nsk\"$UNAME_RELEASE\"\n\texit ;;\n    NSR-*:NONSTOP_KERNEL:*:*)\n\techo nsr-tandem-nsk\"$UNAME_RELEASE\"\n\texit ;;\n    NSV-*:NONSTOP_KERNEL:*:*)\n\techo nsv-tandem-nsk\"$UNAME_RELEASE\"\n\texit ;;\n    NSX-*:NONSTOP_KERNEL:*:*)\n\techo nsx-tandem-nsk\"$UNAME_RELEASE\"\n\texit ;;\n    *:NonStop-UX:*:*)\n\techo mips-compaq-nonstopux\n\texit ;;\n    BS2000:POSIX*:*:*)\n\techo bs2000-siemens-sysv\n\texit ;;\n    DS/*:UNIX_System_V:*:*)\n\techo \"$UNAME_MACHINE\"-\"$UNAME_SYSTEM\"-\"$UNAME_RELEASE\"\n\texit ;;\n    *:Plan9:*:*)\n\t# \"uname -m\" is not consistent, so use $cputype instead. 386\n\t# is converted to i386 for consistency with other x86\n\t# operating systems.\n\t# shellcheck disable=SC2154\n\tif test \"$cputype\" = 386; then\n\t    UNAME_MACHINE=i386\n\telse\n\t    UNAME_MACHINE=\"$cputype\"\n\tfi\n\techo \"$UNAME_MACHINE\"-unknown-plan9\n\texit ;;\n    *:TOPS-10:*:*)\n\techo pdp10-unknown-tops10\n\texit ;;\n    *:TENEX:*:*)\n\techo pdp10-unknown-tenex\n\texit ;;\n    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)\n\techo pdp10-dec-tops20\n\texit ;;\n    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)\n\techo pdp10-xkl-tops20\n\texit ;;\n    *:TOPS-20:*:*)\n\techo pdp10-unknown-tops20\n\texit ;;\n    *:ITS:*:*)\n\techo pdp10-unknown-its\n\texit ;;\n    SEI:*:*:SEIUX)\n\techo mips-sei-seiux\"$UNAME_RELEASE\"\n\texit ;;\n    *:DragonFly:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-dragonfly\"`echo \"$UNAME_RELEASE\"|sed -e 's/[-(].*//'`\"\n\texit ;;\n    *:*VMS:*:*)\n\tUNAME_MACHINE=`(uname -p) 2>/dev/null`\n\tcase \"$UNAME_MACHINE\" in\n\t    A*) echo alpha-dec-vms ; exit ;;\n\t    I*) echo ia64-dec-vms ; exit ;;\n\t    V*) echo vax-dec-vms ; exit ;;\n\tesac ;;\n    *:XENIX:*:SysV)\n\techo i386-pc-xenix\n\texit ;;\n    i*86:skyos:*:*)\n\techo \"$UNAME_MACHINE\"-pc-skyos\"`echo \"$UNAME_RELEASE\" | sed -e 's/ .*$//'`\"\n\texit ;;\n    i*86:rdos:*:*)\n\techo \"$UNAME_MACHINE\"-pc-rdos\n\texit ;;\n    i*86:AROS:*:*)\n\techo \"$UNAME_MACHINE\"-pc-aros\n\texit ;;\n    x86_64:VMkernel:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-esx\n\texit ;;\n    amd64:Isilon\\ OneFS:*:*)\n\techo x86_64-unknown-onefs\n\texit ;;\n    *:Unleashed:*:*)\n\techo \"$UNAME_MACHINE\"-unknown-unleashed\"$UNAME_RELEASE\"\n\texit ;;\nesac\n\n# No uname command or uname output not recognized.\nset_cc_for_build\ncat > \"$dummy.c\" <<EOF\n#ifdef _SEQUENT_\n#include <sys/types.h>\n#include <sys/utsname.h>\n#endif\n#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)\n#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)\n#include <signal.h>\n#if defined(_SIZE_T_) || defined(SIGLOST)\n#include <sys/utsname.h>\n#endif\n#endif\n#endif\nmain ()\n{\n#if defined (sony)\n#if defined (MIPSEB)\n  /* BFD wants \"bsd\" instead of \"newsos\".  Perhaps BFD should be changed,\n     I don't know....  */\n  printf (\"mips-sony-bsd\\n\"); exit (0);\n#else\n#include <sys/param.h>\n  printf (\"m68k-sony-newsos%s\\n\",\n#ifdef NEWSOS4\n  \"4\"\n#else\n  \"\"\n#endif\n  ); exit (0);\n#endif\n#endif\n\n#if defined (NeXT)\n#if !defined (__ARCHITECTURE__)\n#define __ARCHITECTURE__ \"m68k\"\n#endif\n  int version;\n  version=`(hostinfo | sed -n 's/.*NeXT Mach \\([0-9]*\\).*/\\1/p') 2>/dev/null`;\n  if (version < 4)\n    printf (\"%s-next-nextstep%d\\n\", __ARCHITECTURE__, version);\n  else\n    printf (\"%s-next-openstep%d\\n\", __ARCHITECTURE__, version);\n  exit (0);\n#endif\n\n#if defined (MULTIMAX) || defined (n16)\n#if defined (UMAXV)\n  printf (\"ns32k-encore-sysv\\n\"); exit (0);\n#else\n#if defined (CMU)\n  printf (\"ns32k-encore-mach\\n\"); exit (0);\n#else\n  printf (\"ns32k-encore-bsd\\n\"); exit (0);\n#endif\n#endif\n#endif\n\n#if defined (__386BSD__)\n  printf (\"i386-pc-bsd\\n\"); exit (0);\n#endif\n\n#if defined (sequent)\n#if defined (i386)\n  printf (\"i386-sequent-dynix\\n\"); exit (0);\n#endif\n#if defined (ns32000)\n  printf (\"ns32k-sequent-dynix\\n\"); exit (0);\n#endif\n#endif\n\n#if defined (_SEQUENT_)\n  struct utsname un;\n\n  uname(&un);\n  if (strncmp(un.version, \"V2\", 2) == 0) {\n    printf (\"i386-sequent-ptx2\\n\"); exit (0);\n  }\n  if (strncmp(un.version, \"V1\", 2) == 0) { /* XXX is V1 correct? */\n    printf (\"i386-sequent-ptx1\\n\"); exit (0);\n  }\n  printf (\"i386-sequent-ptx\\n\"); exit (0);\n#endif\n\n#if defined (vax)\n#if !defined (ultrix)\n#include <sys/param.h>\n#if defined (BSD)\n#if BSD == 43\n  printf (\"vax-dec-bsd4.3\\n\"); exit (0);\n#else\n#if BSD == 199006\n  printf (\"vax-dec-bsd4.3reno\\n\"); exit (0);\n#else\n  printf (\"vax-dec-bsd\\n\"); exit (0);\n#endif\n#endif\n#else\n  printf (\"vax-dec-bsd\\n\"); exit (0);\n#endif\n#else\n#if defined(_SIZE_T_) || defined(SIGLOST)\n  struct utsname un;\n  uname (&un);\n  printf (\"vax-dec-ultrix%s\\n\", un.release); exit (0);\n#else\n  printf (\"vax-dec-ultrix\\n\"); exit (0);\n#endif\n#endif\n#endif\n#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)\n#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)\n#if defined(_SIZE_T_) || defined(SIGLOST)\n  struct utsname *un;\n  uname (&un);\n  printf (\"mips-dec-ultrix%s\\n\", un.release); exit (0);\n#else\n  printf (\"mips-dec-ultrix\\n\"); exit (0);\n#endif\n#endif\n#endif\n\n#if defined (alliant) && defined (i860)\n  printf (\"i860-alliant-bsd\\n\"); exit (0);\n#endif\n\n  exit (1);\n}\nEOF\n\n$CC_FOR_BUILD -o \"$dummy\" \"$dummy.c\" 2>/dev/null && SYSTEM_NAME=`$dummy` &&\n\t{ echo \"$SYSTEM_NAME\"; exit; }\n\n# Apollos put the system type in the environment.\ntest -d /usr/apollo && { echo \"$ISP-apollo-$SYSTYPE\"; exit; }\n\necho \"$0: unable to guess system type\" >&2\n\ncase \"$UNAME_MACHINE:$UNAME_SYSTEM\" in\n    mips:Linux | mips64:Linux)\n\t# If we got here on MIPS GNU/Linux, output extra information.\n\tcat >&2 <<EOF\n\nNOTE: MIPS GNU/Linux systems require a C compiler to fully recognize\nthe system type. Please install a C compiler and try again.\nEOF\n\t;;\nesac\n\ncat >&2 <<EOF\n\nThis script (version $timestamp), has failed to recognize the\noperating system you are using. If your script is old, overwrite *all*\ncopies of config.guess and config.sub with the latest versions from:\n\n  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess\nand\n  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub\nEOF\n\nyear=`echo $timestamp | sed 's,-.*,,'`\n# shellcheck disable=SC2003\nif test \"`expr \"\\`date +%Y\\`\" - \"$year\"`\" -lt 3 ; then\n   cat >&2 <<EOF\n\nIf $0 has already been updated, send the following data and any\ninformation you think might be pertinent to config-patches@gnu.org to\nprovide the necessary information to handle your system.\n\nconfig.guess timestamp = $timestamp\n\nuname -m = `(uname -m) 2>/dev/null || echo unknown`\nuname -r = `(uname -r) 2>/dev/null || echo unknown`\nuname -s = `(uname -s) 2>/dev/null || echo unknown`\nuname -v = `(uname -v) 2>/dev/null || echo unknown`\n\n/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`\n/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`\n\nhostinfo               = `(hostinfo) 2>/dev/null`\n/bin/universe          = `(/bin/universe) 2>/dev/null`\n/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`\n/bin/arch              = `(/bin/arch) 2>/dev/null`\n/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`\n/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`\n\nUNAME_MACHINE = \"$UNAME_MACHINE\"\nUNAME_RELEASE = \"$UNAME_RELEASE\"\nUNAME_SYSTEM  = \"$UNAME_SYSTEM\"\nUNAME_VERSION = \"$UNAME_VERSION\"\nEOF\nfi\n\nexit 1\n\n# Local variables:\n# eval: (add-hook 'before-save-hook 'time-stamp)\n# time-stamp-start: \"timestamp='\"\n# time-stamp-format: \"%:y-%02m-%02d\"\n# time-stamp-end: \"'\"\n# End:\n"
  },
  {
    "path": "support/gnuconfig/config.sub",
    "content": "#! /bin/sh\n# Configuration validation subroutine script.\n#   Copyright 1992-2020 Free Software Foundation, Inc.\n\ntimestamp='2020-09-08'\n\n# This file is free software; you can redistribute it and/or modify it\n# under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 3 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful, but\n# WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n# General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, see <https://www.gnu.org/licenses/>.\n#\n# As a special exception to the GNU General Public License, if you\n# distribute this file as part of a program that contains a\n# configuration script generated by Autoconf, you may include it under\n# the same distribution terms that you use for the rest of that\n# program.  This Exception is an additional permission under section 7\n# of the GNU General Public License, version 3 (\"GPLv3\").\n\n\n# Please send patches to <config-patches@gnu.org>.\n#\n# Configuration subroutine to validate and canonicalize a configuration type.\n# Supply the specified configuration type as an argument.\n# If it is invalid, we print an error message on stderr and exit with code 1.\n# Otherwise, we print the canonical config type on stdout and succeed.\n\n# You can get the latest version of this script from:\n# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub\n\n# This file is supposed to be the same for all GNU packages\n# and recognize all the CPU types, system types and aliases\n# that are meaningful with *any* GNU software.\n# Each package is responsible for reporting which valid configurations\n# it does not support.  The user should be able to distinguish\n# a failure to support a valid configuration from a meaningless\n# configuration.\n\n# The goal of this file is to map all the various variations of a given\n# machine specification into a single specification in the form:\n#\tCPU_TYPE-MANUFACTURER-OPERATING_SYSTEM\n# or in some cases, the newer four-part form:\n#\tCPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM\n# It is wrong to echo any other type of specification.\n\nme=`echo \"$0\" | sed -e 's,.*/,,'`\n\nusage=\"\\\nUsage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS\n\nCanonicalize a configuration name.\n\nOptions:\n  -h, --help         print this help, then exit\n  -t, --time-stamp   print date of last modification, then exit\n  -v, --version      print version number, then exit\n\nReport bugs and patches to <config-patches@gnu.org>.\"\n\nversion=\"\\\nGNU config.sub ($timestamp)\n\nCopyright 1992-2020 Free Software Foundation, Inc.\n\nThis is free software; see the source for copying conditions.  There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\"\n\nhelp=\"\nTry \\`$me --help' for more information.\"\n\n# Parse command line\nwhile test $# -gt 0 ; do\n  case $1 in\n    --time-stamp | --time* | -t )\n       echo \"$timestamp\" ; exit ;;\n    --version | -v )\n       echo \"$version\" ; exit ;;\n    --help | --h* | -h )\n       echo \"$usage\"; exit ;;\n    -- )     # Stop option processing\n       shift; break ;;\n    - )\t# Use stdin as input.\n       break ;;\n    -* )\n       echo \"$me: invalid option $1$help\" >&2\n       exit 1 ;;\n\n    *local*)\n       # First pass through any local machine types.\n       echo \"$1\"\n       exit ;;\n\n    * )\n       break ;;\n  esac\ndone\n\ncase $# in\n 0) echo \"$me: missing argument$help\" >&2\n    exit 1;;\n 1) ;;\n *) echo \"$me: too many arguments$help\" >&2\n    exit 1;;\nesac\n\n# Split fields of configuration type\n# shellcheck disable=SC2162\nIFS=\"-\" read field1 field2 field3 field4 <<EOF\n$1\nEOF\n\n# Separate into logical components for further validation\ncase $1 in\n\t*-*-*-*-*)\n\t\techo Invalid configuration \\`\"$1\"\\': more than four components >&2\n\t\texit 1\n\t\t;;\n\t*-*-*-*)\n\t\tbasic_machine=$field1-$field2\n\t\tbasic_os=$field3-$field4\n\t\t;;\n\t*-*-*)\n\t\t# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two\n\t\t# parts\n\t\tmaybe_os=$field2-$field3\n\t\tcase $maybe_os in\n\t\t\tnto-qnx* | linux-* | uclinux-uclibc* \\\n\t\t\t| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \\\n\t\t\t| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \\\n\t\t\t| storm-chaos* | os2-emx* | rtmk-nova*)\n\t\t\t\tbasic_machine=$field1\n\t\t\t\tbasic_os=$maybe_os\n\t\t\t\t;;\n\t\t\tandroid-linux)\n\t\t\t\tbasic_machine=$field1-unknown\n\t\t\t\tbasic_os=linux-android\n\t\t\t\t;;\n\t\t\t*)\n\t\t\t\tbasic_machine=$field1-$field2\n\t\t\t\tbasic_os=$field3\n\t\t\t\t;;\n\t\tesac\n\t\t;;\n\t*-*)\n\t\t# A lone config we happen to match not fitting any pattern\n\t\tcase $field1-$field2 in\n\t\t\tdecstation-3100)\n\t\t\t\tbasic_machine=mips-dec\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\t*-*)\n\t\t\t\t# Second component is usually, but not always the OS\n\t\t\t\tcase $field2 in\n\t\t\t\t\t# Prevent following clause from handling this valid os\n\t\t\t\t\tsun*os*)\n\t\t\t\t\t\tbasic_machine=$field1\n\t\t\t\t\t\tbasic_os=$field2\n\t\t\t\t\t\t;;\n\t\t\t\t\t# Manufacturers\n\t\t\t\t\tdec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \\\n\t\t\t\t\t| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \\\n\t\t\t\t\t| unicom* | ibm* | next | hp | isi* | apollo | altos* \\\n\t\t\t\t\t| convergent* | ncr* | news | 32* | 3600* | 3100* \\\n\t\t\t\t\t| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \\\n\t\t\t\t\t| ultra | tti* | harris | dolphin | highlevel | gould \\\n\t\t\t\t\t| cbm | ns | masscomp | apple | axis | knuth | cray \\\n\t\t\t\t\t| microblaze* | sim | cisco \\\n\t\t\t\t\t| oki | wec | wrs | winbond)\n\t\t\t\t\t\tbasic_machine=$field1-$field2\n\t\t\t\t\t\tbasic_os=\n\t\t\t\t\t\t;;\n\t\t\t\t\t*)\n\t\t\t\t\t\tbasic_machine=$field1\n\t\t\t\t\t\tbasic_os=$field2\n\t\t\t\t\t\t;;\n\t\t\t\tesac\n\t\t\t;;\n\t\tesac\n\t\t;;\n\t*)\n\t\t# Convert single-component short-hands not valid as part of\n\t\t# multi-component configurations.\n\t\tcase $field1 in\n\t\t\t386bsd)\n\t\t\t\tbasic_machine=i386-pc\n\t\t\t\tbasic_os=bsd\n\t\t\t\t;;\n\t\t\ta29khif)\n\t\t\t\tbasic_machine=a29k-amd\n\t\t\t\tbasic_os=udi\n\t\t\t\t;;\n\t\t\tadobe68k)\n\t\t\t\tbasic_machine=m68010-adobe\n\t\t\t\tbasic_os=scout\n\t\t\t\t;;\n\t\t\talliant)\n\t\t\t\tbasic_machine=fx80-alliant\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\taltos | altos3068)\n\t\t\t\tbasic_machine=m68k-altos\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\tam29k)\n\t\t\t\tbasic_machine=a29k-none\n\t\t\t\tbasic_os=bsd\n\t\t\t\t;;\n\t\t\tamdahl)\n\t\t\t\tbasic_machine=580-amdahl\n\t\t\t\tbasic_os=sysv\n\t\t\t\t;;\n\t\t\tamiga)\n\t\t\t\tbasic_machine=m68k-unknown\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\tamigaos | amigados)\n\t\t\t\tbasic_machine=m68k-unknown\n\t\t\t\tbasic_os=amigaos\n\t\t\t\t;;\n\t\t\tamigaunix | amix)\n\t\t\t\tbasic_machine=m68k-unknown\n\t\t\t\tbasic_os=sysv4\n\t\t\t\t;;\n\t\t\tapollo68)\n\t\t\t\tbasic_machine=m68k-apollo\n\t\t\t\tbasic_os=sysv\n\t\t\t\t;;\n\t\t\tapollo68bsd)\n\t\t\t\tbasic_machine=m68k-apollo\n\t\t\t\tbasic_os=bsd\n\t\t\t\t;;\n\t\t\taros)\n\t\t\t\tbasic_machine=i386-pc\n\t\t\t\tbasic_os=aros\n\t\t\t\t;;\n\t\t\taux)\n\t\t\t\tbasic_machine=m68k-apple\n\t\t\t\tbasic_os=aux\n\t\t\t\t;;\n\t\t\tbalance)\n\t\t\t\tbasic_machine=ns32k-sequent\n\t\t\t\tbasic_os=dynix\n\t\t\t\t;;\n\t\t\tblackfin)\n\t\t\t\tbasic_machine=bfin-unknown\n\t\t\t\tbasic_os=linux\n\t\t\t\t;;\n\t\t\tcegcc)\n\t\t\t\tbasic_machine=arm-unknown\n\t\t\t\tbasic_os=cegcc\n\t\t\t\t;;\n\t\t\tconvex-c1)\n\t\t\t\tbasic_machine=c1-convex\n\t\t\t\tbasic_os=bsd\n\t\t\t\t;;\n\t\t\tconvex-c2)\n\t\t\t\tbasic_machine=c2-convex\n\t\t\t\tbasic_os=bsd\n\t\t\t\t;;\n\t\t\tconvex-c32)\n\t\t\t\tbasic_machine=c32-convex\n\t\t\t\tbasic_os=bsd\n\t\t\t\t;;\n\t\t\tconvex-c34)\n\t\t\t\tbasic_machine=c34-convex\n\t\t\t\tbasic_os=bsd\n\t\t\t\t;;\n\t\t\tconvex-c38)\n\t\t\t\tbasic_machine=c38-convex\n\t\t\t\tbasic_os=bsd\n\t\t\t\t;;\n\t\t\tcray)\n\t\t\t\tbasic_machine=j90-cray\n\t\t\t\tbasic_os=unicos\n\t\t\t\t;;\n\t\t\tcrds | unos)\n\t\t\t\tbasic_machine=m68k-crds\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\tda30)\n\t\t\t\tbasic_machine=m68k-da30\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\tdecstation | pmax | pmin | dec3100 | decstatn)\n\t\t\t\tbasic_machine=mips-dec\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\tdelta88)\n\t\t\t\tbasic_machine=m88k-motorola\n\t\t\t\tbasic_os=sysv3\n\t\t\t\t;;\n\t\t\tdicos)\n\t\t\t\tbasic_machine=i686-pc\n\t\t\t\tbasic_os=dicos\n\t\t\t\t;;\n\t\t\tdjgpp)\n\t\t\t\tbasic_machine=i586-pc\n\t\t\t\tbasic_os=msdosdjgpp\n\t\t\t\t;;\n\t\t\tebmon29k)\n\t\t\t\tbasic_machine=a29k-amd\n\t\t\t\tbasic_os=ebmon\n\t\t\t\t;;\n\t\t\tes1800 | OSE68k | ose68k | ose | OSE)\n\t\t\t\tbasic_machine=m68k-ericsson\n\t\t\t\tbasic_os=ose\n\t\t\t\t;;\n\t\t\tgmicro)\n\t\t\t\tbasic_machine=tron-gmicro\n\t\t\t\tbasic_os=sysv\n\t\t\t\t;;\n\t\t\tgo32)\n\t\t\t\tbasic_machine=i386-pc\n\t\t\t\tbasic_os=go32\n\t\t\t\t;;\n\t\t\th8300hms)\n\t\t\t\tbasic_machine=h8300-hitachi\n\t\t\t\tbasic_os=hms\n\t\t\t\t;;\n\t\t\th8300xray)\n\t\t\t\tbasic_machine=h8300-hitachi\n\t\t\t\tbasic_os=xray\n\t\t\t\t;;\n\t\t\th8500hms)\n\t\t\t\tbasic_machine=h8500-hitachi\n\t\t\t\tbasic_os=hms\n\t\t\t\t;;\n\t\t\tharris)\n\t\t\t\tbasic_machine=m88k-harris\n\t\t\t\tbasic_os=sysv3\n\t\t\t\t;;\n\t\t\thp300 | hp300hpux)\n\t\t\t\tbasic_machine=m68k-hp\n\t\t\t\tbasic_os=hpux\n\t\t\t\t;;\n\t\t\thp300bsd)\n\t\t\t\tbasic_machine=m68k-hp\n\t\t\t\tbasic_os=bsd\n\t\t\t\t;;\n\t\t\thppaosf)\n\t\t\t\tbasic_machine=hppa1.1-hp\n\t\t\t\tbasic_os=osf\n\t\t\t\t;;\n\t\t\thppro)\n\t\t\t\tbasic_machine=hppa1.1-hp\n\t\t\t\tbasic_os=proelf\n\t\t\t\t;;\n\t\t\ti386mach)\n\t\t\t\tbasic_machine=i386-mach\n\t\t\t\tbasic_os=mach\n\t\t\t\t;;\n\t\t\tisi68 | isi)\n\t\t\t\tbasic_machine=m68k-isi\n\t\t\t\tbasic_os=sysv\n\t\t\t\t;;\n\t\t\tm68knommu)\n\t\t\t\tbasic_machine=m68k-unknown\n\t\t\t\tbasic_os=linux\n\t\t\t\t;;\n\t\t\tmagnum | m3230)\n\t\t\t\tbasic_machine=mips-mips\n\t\t\t\tbasic_os=sysv\n\t\t\t\t;;\n\t\t\tmerlin)\n\t\t\t\tbasic_machine=ns32k-utek\n\t\t\t\tbasic_os=sysv\n\t\t\t\t;;\n\t\t\tmingw64)\n\t\t\t\tbasic_machine=x86_64-pc\n\t\t\t\tbasic_os=mingw64\n\t\t\t\t;;\n\t\t\tmingw32)\n\t\t\t\tbasic_machine=i686-pc\n\t\t\t\tbasic_os=mingw32\n\t\t\t\t;;\n\t\t\tmingw32ce)\n\t\t\t\tbasic_machine=arm-unknown\n\t\t\t\tbasic_os=mingw32ce\n\t\t\t\t;;\n\t\t\tmonitor)\n\t\t\t\tbasic_machine=m68k-rom68k\n\t\t\t\tbasic_os=coff\n\t\t\t\t;;\n\t\t\tmorphos)\n\t\t\t\tbasic_machine=powerpc-unknown\n\t\t\t\tbasic_os=morphos\n\t\t\t\t;;\n\t\t\tmoxiebox)\n\t\t\t\tbasic_machine=moxie-unknown\n\t\t\t\tbasic_os=moxiebox\n\t\t\t\t;;\n\t\t\tmsdos)\n\t\t\t\tbasic_machine=i386-pc\n\t\t\t\tbasic_os=msdos\n\t\t\t\t;;\n\t\t\tmsys)\n\t\t\t\tbasic_machine=i686-pc\n\t\t\t\tbasic_os=msys\n\t\t\t\t;;\n\t\t\tmvs)\n\t\t\t\tbasic_machine=i370-ibm\n\t\t\t\tbasic_os=mvs\n\t\t\t\t;;\n\t\t\tnacl)\n\t\t\t\tbasic_machine=le32-unknown\n\t\t\t\tbasic_os=nacl\n\t\t\t\t;;\n\t\t\tncr3000)\n\t\t\t\tbasic_machine=i486-ncr\n\t\t\t\tbasic_os=sysv4\n\t\t\t\t;;\n\t\t\tnetbsd386)\n\t\t\t\tbasic_machine=i386-pc\n\t\t\t\tbasic_os=netbsd\n\t\t\t\t;;\n\t\t\tnetwinder)\n\t\t\t\tbasic_machine=armv4l-rebel\n\t\t\t\tbasic_os=linux\n\t\t\t\t;;\n\t\t\tnews | news700 | news800 | news900)\n\t\t\t\tbasic_machine=m68k-sony\n\t\t\t\tbasic_os=newsos\n\t\t\t\t;;\n\t\t\tnews1000)\n\t\t\t\tbasic_machine=m68030-sony\n\t\t\t\tbasic_os=newsos\n\t\t\t\t;;\n\t\t\tnecv70)\n\t\t\t\tbasic_machine=v70-nec\n\t\t\t\tbasic_os=sysv\n\t\t\t\t;;\n\t\t\tnh3000)\n\t\t\t\tbasic_machine=m68k-harris\n\t\t\t\tbasic_os=cxux\n\t\t\t\t;;\n\t\t\tnh[45]000)\n\t\t\t\tbasic_machine=m88k-harris\n\t\t\t\tbasic_os=cxux\n\t\t\t\t;;\n\t\t\tnindy960)\n\t\t\t\tbasic_machine=i960-intel\n\t\t\t\tbasic_os=nindy\n\t\t\t\t;;\n\t\t\tmon960)\n\t\t\t\tbasic_machine=i960-intel\n\t\t\t\tbasic_os=mon960\n\t\t\t\t;;\n\t\t\tnonstopux)\n\t\t\t\tbasic_machine=mips-compaq\n\t\t\t\tbasic_os=nonstopux\n\t\t\t\t;;\n\t\t\tos400)\n\t\t\t\tbasic_machine=powerpc-ibm\n\t\t\t\tbasic_os=os400\n\t\t\t\t;;\n\t\t\tOSE68000 | ose68000)\n\t\t\t\tbasic_machine=m68000-ericsson\n\t\t\t\tbasic_os=ose\n\t\t\t\t;;\n\t\t\tos68k)\n\t\t\t\tbasic_machine=m68k-none\n\t\t\t\tbasic_os=os68k\n\t\t\t\t;;\n\t\t\tparagon)\n\t\t\t\tbasic_machine=i860-intel\n\t\t\t\tbasic_os=osf\n\t\t\t\t;;\n\t\t\tparisc)\n\t\t\t\tbasic_machine=hppa-unknown\n\t\t\t\tbasic_os=linux\n\t\t\t\t;;\n\t\t\tpsp)\n\t\t\t\tbasic_machine=mipsallegrexel-sony\n\t\t\t\tbasic_os=psp\n\t\t\t\t;;\n\t\t\tpw32)\n\t\t\t\tbasic_machine=i586-unknown\n\t\t\t\tbasic_os=pw32\n\t\t\t\t;;\n\t\t\trdos | rdos64)\n\t\t\t\tbasic_machine=x86_64-pc\n\t\t\t\tbasic_os=rdos\n\t\t\t\t;;\n\t\t\trdos32)\n\t\t\t\tbasic_machine=i386-pc\n\t\t\t\tbasic_os=rdos\n\t\t\t\t;;\n\t\t\trom68k)\n\t\t\t\tbasic_machine=m68k-rom68k\n\t\t\t\tbasic_os=coff\n\t\t\t\t;;\n\t\t\tsa29200)\n\t\t\t\tbasic_machine=a29k-amd\n\t\t\t\tbasic_os=udi\n\t\t\t\t;;\n\t\t\tsei)\n\t\t\t\tbasic_machine=mips-sei\n\t\t\t\tbasic_os=seiux\n\t\t\t\t;;\n\t\t\tsequent)\n\t\t\t\tbasic_machine=i386-sequent\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\tsps7)\n\t\t\t\tbasic_machine=m68k-bull\n\t\t\t\tbasic_os=sysv2\n\t\t\t\t;;\n\t\t\tst2000)\n\t\t\t\tbasic_machine=m68k-tandem\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\tstratus)\n\t\t\t\tbasic_machine=i860-stratus\n\t\t\t\tbasic_os=sysv4\n\t\t\t\t;;\n\t\t\tsun2)\n\t\t\t\tbasic_machine=m68000-sun\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\tsun2os3)\n\t\t\t\tbasic_machine=m68000-sun\n\t\t\t\tbasic_os=sunos3\n\t\t\t\t;;\n\t\t\tsun2os4)\n\t\t\t\tbasic_machine=m68000-sun\n\t\t\t\tbasic_os=sunos4\n\t\t\t\t;;\n\t\t\tsun3)\n\t\t\t\tbasic_machine=m68k-sun\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\tsun3os3)\n\t\t\t\tbasic_machine=m68k-sun\n\t\t\t\tbasic_os=sunos3\n\t\t\t\t;;\n\t\t\tsun3os4)\n\t\t\t\tbasic_machine=m68k-sun\n\t\t\t\tbasic_os=sunos4\n\t\t\t\t;;\n\t\t\tsun4)\n\t\t\t\tbasic_machine=sparc-sun\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\tsun4os3)\n\t\t\t\tbasic_machine=sparc-sun\n\t\t\t\tbasic_os=sunos3\n\t\t\t\t;;\n\t\t\tsun4os4)\n\t\t\t\tbasic_machine=sparc-sun\n\t\t\t\tbasic_os=sunos4\n\t\t\t\t;;\n\t\t\tsun4sol2)\n\t\t\t\tbasic_machine=sparc-sun\n\t\t\t\tbasic_os=solaris2\n\t\t\t\t;;\n\t\t\tsun386 | sun386i | roadrunner)\n\t\t\t\tbasic_machine=i386-sun\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\t\tsv1)\n\t\t\t\tbasic_machine=sv1-cray\n\t\t\t\tbasic_os=unicos\n\t\t\t\t;;\n\t\t\tsymmetry)\n\t\t\t\tbasic_machine=i386-sequent\n\t\t\t\tbasic_os=dynix\n\t\t\t\t;;\n\t\t\tt3e)\n\t\t\t\tbasic_machine=alphaev5-cray\n\t\t\t\tbasic_os=unicos\n\t\t\t\t;;\n\t\t\tt90)\n\t\t\t\tbasic_machine=t90-cray\n\t\t\t\tbasic_os=unicos\n\t\t\t\t;;\n\t\t\ttoad1)\n\t\t\t\tbasic_machine=pdp10-xkl\n\t\t\t\tbasic_os=tops20\n\t\t\t\t;;\n\t\t\ttpf)\n\t\t\t\tbasic_machine=s390x-ibm\n\t\t\t\tbasic_os=tpf\n\t\t\t\t;;\n\t\t\tudi29k)\n\t\t\t\tbasic_machine=a29k-amd\n\t\t\t\tbasic_os=udi\n\t\t\t\t;;\n\t\t\tultra3)\n\t\t\t\tbasic_machine=a29k-nyu\n\t\t\t\tbasic_os=sym1\n\t\t\t\t;;\n\t\t\tv810 | necv810)\n\t\t\t\tbasic_machine=v810-nec\n\t\t\t\tbasic_os=none\n\t\t\t\t;;\n\t\t\tvaxv)\n\t\t\t\tbasic_machine=vax-dec\n\t\t\t\tbasic_os=sysv\n\t\t\t\t;;\n\t\t\tvms)\n\t\t\t\tbasic_machine=vax-dec\n\t\t\t\tbasic_os=vms\n\t\t\t\t;;\n\t\t\tvsta)\n\t\t\t\tbasic_machine=i386-pc\n\t\t\t\tbasic_os=vsta\n\t\t\t\t;;\n\t\t\tvxworks960)\n\t\t\t\tbasic_machine=i960-wrs\n\t\t\t\tbasic_os=vxworks\n\t\t\t\t;;\n\t\t\tvxworks68)\n\t\t\t\tbasic_machine=m68k-wrs\n\t\t\t\tbasic_os=vxworks\n\t\t\t\t;;\n\t\t\tvxworks29k)\n\t\t\t\tbasic_machine=a29k-wrs\n\t\t\t\tbasic_os=vxworks\n\t\t\t\t;;\n\t\t\txbox)\n\t\t\t\tbasic_machine=i686-pc\n\t\t\t\tbasic_os=mingw32\n\t\t\t\t;;\n\t\t\tymp)\n\t\t\t\tbasic_machine=ymp-cray\n\t\t\t\tbasic_os=unicos\n\t\t\t\t;;\n\t\t\t*)\n\t\t\t\tbasic_machine=$1\n\t\t\t\tbasic_os=\n\t\t\t\t;;\n\t\tesac\n\t\t;;\nesac\n\n# Decode 1-component or ad-hoc basic machines\ncase $basic_machine in\n\t# Here we handle the default manufacturer of certain CPU types.  It is in\n\t# some cases the only manufacturer, in others, it is the most popular.\n\tw89k)\n\t\tcpu=hppa1.1\n\t\tvendor=winbond\n\t\t;;\n\top50n)\n\t\tcpu=hppa1.1\n\t\tvendor=oki\n\t\t;;\n\top60c)\n\t\tcpu=hppa1.1\n\t\tvendor=oki\n\t\t;;\n\tibm*)\n\t\tcpu=i370\n\t\tvendor=ibm\n\t\t;;\n\torion105)\n\t\tcpu=clipper\n\t\tvendor=highlevel\n\t\t;;\n\tmac | mpw | mac-mpw)\n\t\tcpu=m68k\n\t\tvendor=apple\n\t\t;;\n\tpmac | pmac-mpw)\n\t\tcpu=powerpc\n\t\tvendor=apple\n\t\t;;\n\n\t# Recognize the various machine names and aliases which stand\n\t# for a CPU type and a company and sometimes even an OS.\n\t3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)\n\t\tcpu=m68000\n\t\tvendor=att\n\t\t;;\n\t3b*)\n\t\tcpu=we32k\n\t\tvendor=att\n\t\t;;\n\tbluegene*)\n\t\tcpu=powerpc\n\t\tvendor=ibm\n\t\tbasic_os=cnk\n\t\t;;\n\tdecsystem10* | dec10*)\n\t\tcpu=pdp10\n\t\tvendor=dec\n\t\tbasic_os=tops10\n\t\t;;\n\tdecsystem20* | dec20*)\n\t\tcpu=pdp10\n\t\tvendor=dec\n\t\tbasic_os=tops20\n\t\t;;\n\tdelta | 3300 | motorola-3300 | motorola-delta \\\n\t      | 3300-motorola | delta-motorola)\n\t\tcpu=m68k\n\t\tvendor=motorola\n\t\t;;\n\tdpx2*)\n\t\tcpu=m68k\n\t\tvendor=bull\n\t\tbasic_os=sysv3\n\t\t;;\n\tencore | umax | mmax)\n\t\tcpu=ns32k\n\t\tvendor=encore\n\t\t;;\n\telxsi)\n\t\tcpu=elxsi\n\t\tvendor=elxsi\n\t\tbasic_os=${basic_os:-bsd}\n\t\t;;\n\tfx2800)\n\t\tcpu=i860\n\t\tvendor=alliant\n\t\t;;\n\tgenix)\n\t\tcpu=ns32k\n\t\tvendor=ns\n\t\t;;\n\th3050r* | hiux*)\n\t\tcpu=hppa1.1\n\t\tvendor=hitachi\n\t\tbasic_os=hiuxwe2\n\t\t;;\n\thp3k9[0-9][0-9] | hp9[0-9][0-9])\n\t\tcpu=hppa1.0\n\t\tvendor=hp\n\t\t;;\n\thp9k2[0-9][0-9] | hp9k31[0-9])\n\t\tcpu=m68000\n\t\tvendor=hp\n\t\t;;\n\thp9k3[2-9][0-9])\n\t\tcpu=m68k\n\t\tvendor=hp\n\t\t;;\n\thp9k6[0-9][0-9] | hp6[0-9][0-9])\n\t\tcpu=hppa1.0\n\t\tvendor=hp\n\t\t;;\n\thp9k7[0-79][0-9] | hp7[0-79][0-9])\n\t\tcpu=hppa1.1\n\t\tvendor=hp\n\t\t;;\n\thp9k78[0-9] | hp78[0-9])\n\t\t# FIXME: really hppa2.0-hp\n\t\tcpu=hppa1.1\n\t\tvendor=hp\n\t\t;;\n\thp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)\n\t\t# FIXME: really hppa2.0-hp\n\t\tcpu=hppa1.1\n\t\tvendor=hp\n\t\t;;\n\thp9k8[0-9][13679] | hp8[0-9][13679])\n\t\tcpu=hppa1.1\n\t\tvendor=hp\n\t\t;;\n\thp9k8[0-9][0-9] | hp8[0-9][0-9])\n\t\tcpu=hppa1.0\n\t\tvendor=hp\n\t\t;;\n\ti*86v32)\n\t\tcpu=`echo \"$1\" | sed -e 's/86.*/86/'`\n\t\tvendor=pc\n\t\tbasic_os=sysv32\n\t\t;;\n\ti*86v4*)\n\t\tcpu=`echo \"$1\" | sed -e 's/86.*/86/'`\n\t\tvendor=pc\n\t\tbasic_os=sysv4\n\t\t;;\n\ti*86v)\n\t\tcpu=`echo \"$1\" | sed -e 's/86.*/86/'`\n\t\tvendor=pc\n\t\tbasic_os=sysv\n\t\t;;\n\ti*86sol2)\n\t\tcpu=`echo \"$1\" | sed -e 's/86.*/86/'`\n\t\tvendor=pc\n\t\tbasic_os=solaris2\n\t\t;;\n\tj90 | j90-cray)\n\t\tcpu=j90\n\t\tvendor=cray\n\t\tbasic_os=${basic_os:-unicos}\n\t\t;;\n\tiris | iris4d)\n\t\tcpu=mips\n\t\tvendor=sgi\n\t\tcase $basic_os in\n\t\t    irix*)\n\t\t\t;;\n\t\t    *)\n\t\t\tbasic_os=irix4\n\t\t\t;;\n\t\tesac\n\t\t;;\n\tminiframe)\n\t\tcpu=m68000\n\t\tvendor=convergent\n\t\t;;\n\t*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)\n\t\tcpu=m68k\n\t\tvendor=atari\n\t\tbasic_os=mint\n\t\t;;\n\tnews-3600 | risc-news)\n\t\tcpu=mips\n\t\tvendor=sony\n\t\tbasic_os=newsos\n\t\t;;\n\tnext | m*-next)\n\t\tcpu=m68k\n\t\tvendor=next\n\t\tcase $basic_os in\n\t\t    openstep*)\n\t\t        ;;\n\t\t    nextstep*)\n\t\t\t;;\n\t\t    ns2*)\n\t\t      basic_os=nextstep2\n\t\t\t;;\n\t\t    *)\n\t\t      basic_os=nextstep3\n\t\t\t;;\n\t\tesac\n\t\t;;\n\tnp1)\n\t\tcpu=np1\n\t\tvendor=gould\n\t\t;;\n\top50n-* | op60c-*)\n\t\tcpu=hppa1.1\n\t\tvendor=oki\n\t\tbasic_os=proelf\n\t\t;;\n\tpa-hitachi)\n\t\tcpu=hppa1.1\n\t\tvendor=hitachi\n\t\tbasic_os=hiuxwe2\n\t\t;;\n\tpbd)\n\t\tcpu=sparc\n\t\tvendor=tti\n\t\t;;\n\tpbb)\n\t\tcpu=m68k\n\t\tvendor=tti\n\t\t;;\n\tpc532)\n\t\tcpu=ns32k\n\t\tvendor=pc532\n\t\t;;\n\tpn)\n\t\tcpu=pn\n\t\tvendor=gould\n\t\t;;\n\tpower)\n\t\tcpu=power\n\t\tvendor=ibm\n\t\t;;\n\tps2)\n\t\tcpu=i386\n\t\tvendor=ibm\n\t\t;;\n\trm[46]00)\n\t\tcpu=mips\n\t\tvendor=siemens\n\t\t;;\n\trtpc | rtpc-*)\n\t\tcpu=romp\n\t\tvendor=ibm\n\t\t;;\n\tsde)\n\t\tcpu=mipsisa32\n\t\tvendor=sde\n\t\tbasic_os=${basic_os:-elf}\n\t\t;;\n\tsimso-wrs)\n\t\tcpu=sparclite\n\t\tvendor=wrs\n\t\tbasic_os=vxworks\n\t\t;;\n\ttower | tower-32)\n\t\tcpu=m68k\n\t\tvendor=ncr\n\t\t;;\n\tvpp*|vx|vx-*)\n\t\tcpu=f301\n\t\tvendor=fujitsu\n\t\t;;\n\tw65)\n\t\tcpu=w65\n\t\tvendor=wdc\n\t\t;;\n\tw89k-*)\n\t\tcpu=hppa1.1\n\t\tvendor=winbond\n\t\tbasic_os=proelf\n\t\t;;\n\tnone)\n\t\tcpu=none\n\t\tvendor=none\n\t\t;;\n\tleon|leon[3-9])\n\t\tcpu=sparc\n\t\tvendor=$basic_machine\n\t\t;;\n\tleon-*|leon[3-9]-*)\n\t\tcpu=sparc\n\t\tvendor=`echo \"$basic_machine\" | sed 's/-.*//'`\n\t\t;;\n\n\t*-*)\n\t\t# shellcheck disable=SC2162\n\t\tIFS=\"-\" read cpu vendor <<EOF\n$basic_machine\nEOF\n\t\t;;\n\t# We use `pc' rather than `unknown'\n\t# because (1) that's what they normally are, and\n\t# (2) the word \"unknown\" tends to confuse beginning users.\n\ti*86 | x86_64)\n\t\tcpu=$basic_machine\n\t\tvendor=pc\n\t\t;;\n\t# These rules are duplicated from below for sake of the special case above;\n\t# i.e. things that normalized to x86 arches should also default to \"pc\"\n\tpc98)\n\t\tcpu=i386\n\t\tvendor=pc\n\t\t;;\n\tx64 | amd64)\n\t\tcpu=x86_64\n\t\tvendor=pc\n\t\t;;\n\t# Recognize the basic CPU types without company name.\n\t*)\n\t\tcpu=$basic_machine\n\t\tvendor=unknown\n\t\t;;\nesac\n\nunset -v basic_machine\n\n# Decode basic machines in the full and proper CPU-Company form.\ncase $cpu-$vendor in\n\t# Here we handle the default manufacturer of certain CPU types in canonical form. It is in\n\t# some cases the only manufacturer, in others, it is the most popular.\n\tcraynv-unknown)\n\t\tvendor=cray\n\t\tbasic_os=${basic_os:-unicosmp}\n\t\t;;\n\tc90-unknown | c90-cray)\n\t\tvendor=cray\n\t\tbasic_os=${Basic_os:-unicos}\n\t\t;;\n\tfx80-unknown)\n\t\tvendor=alliant\n\t\t;;\n\tromp-unknown)\n\t\tvendor=ibm\n\t\t;;\n\tmmix-unknown)\n\t\tvendor=knuth\n\t\t;;\n\tmicroblaze-unknown | microblazeel-unknown)\n\t\tvendor=xilinx\n\t\t;;\n\trs6000-unknown)\n\t\tvendor=ibm\n\t\t;;\n\tvax-unknown)\n\t\tvendor=dec\n\t\t;;\n\tpdp11-unknown)\n\t\tvendor=dec\n\t\t;;\n\twe32k-unknown)\n\t\tvendor=att\n\t\t;;\n\tcydra-unknown)\n\t\tvendor=cydrome\n\t\t;;\n\ti370-ibm*)\n\t\tvendor=ibm\n\t\t;;\n\torion-unknown)\n\t\tvendor=highlevel\n\t\t;;\n\txps-unknown | xps100-unknown)\n\t\tcpu=xps100\n\t\tvendor=honeywell\n\t\t;;\n\n\t# Here we normalize CPU types with a missing or matching vendor\n\tdpx20-unknown | dpx20-bull)\n\t\tcpu=rs6000\n\t\tvendor=bull\n\t\tbasic_os=${basic_os:-bosx}\n\t\t;;\n\n\t# Here we normalize CPU types irrespective of the vendor\n\tamd64-*)\n\t\tcpu=x86_64\n\t\t;;\n\tblackfin-*)\n\t\tcpu=bfin\n\t\tbasic_os=linux\n\t\t;;\n\tc54x-*)\n\t\tcpu=tic54x\n\t\t;;\n\tc55x-*)\n\t\tcpu=tic55x\n\t\t;;\n\tc6x-*)\n\t\tcpu=tic6x\n\t\t;;\n\te500v[12]-*)\n\t\tcpu=powerpc\n\t\tbasic_os=${basic_os}\"spe\"\n\t\t;;\n\tmips3*-*)\n\t\tcpu=mips64\n\t\t;;\n\tms1-*)\n\t\tcpu=mt\n\t\t;;\n\tm68knommu-*)\n\t\tcpu=m68k\n\t\tbasic_os=linux\n\t\t;;\n\tm9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)\n\t\tcpu=s12z\n\t\t;;\n\topenrisc-*)\n\t\tcpu=or32\n\t\t;;\n\tparisc-*)\n\t\tcpu=hppa\n\t\tbasic_os=linux\n\t\t;;\n\tpentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)\n\t\tcpu=i586\n\t\t;;\n\tpentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)\n\t\tcpu=i686\n\t\t;;\n\tpentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)\n\t\tcpu=i686\n\t\t;;\n\tpentium4-*)\n\t\tcpu=i786\n\t\t;;\n\tpc98-*)\n\t\tcpu=i386\n\t\t;;\n\tppc-* | ppcbe-*)\n\t\tcpu=powerpc\n\t\t;;\n\tppcle-* | powerpclittle-*)\n\t\tcpu=powerpcle\n\t\t;;\n\tppc64-*)\n\t\tcpu=powerpc64\n\t\t;;\n\tppc64le-* | powerpc64little-*)\n\t\tcpu=powerpc64le\n\t\t;;\n\tsb1-*)\n\t\tcpu=mipsisa64sb1\n\t\t;;\n\tsb1el-*)\n\t\tcpu=mipsisa64sb1el\n\t\t;;\n\tsh5e[lb]-*)\n\t\tcpu=`echo \"$cpu\" | sed 's/^\\(sh.\\)e\\(.\\)$/\\1\\2e/'`\n\t\t;;\n\tspur-*)\n\t\tcpu=spur\n\t\t;;\n\tstrongarm-* | thumb-*)\n\t\tcpu=arm\n\t\t;;\n\ttx39-*)\n\t\tcpu=mipstx39\n\t\t;;\n\ttx39el-*)\n\t\tcpu=mipstx39el\n\t\t;;\n\tx64-*)\n\t\tcpu=x86_64\n\t\t;;\n\txscale-* | xscalee[bl]-*)\n\t\tcpu=`echo \"$cpu\" | sed 's/^xscale/arm/'`\n\t\t;;\n\tarm64-*)\n\t\tcpu=aarch64\n\t\t;;\n\n\t# Recognize the canonical CPU Types that limit and/or modify the\n\t# company names they are paired with.\n\tcr16-*)\n\t\tbasic_os=${basic_os:-elf}\n\t\t;;\n\tcrisv32-* | etraxfs*-*)\n\t\tcpu=crisv32\n\t\tvendor=axis\n\t\t;;\n\tcris-* | etrax*-*)\n\t\tcpu=cris\n\t\tvendor=axis\n\t\t;;\n\tcrx-*)\n\t\tbasic_os=${basic_os:-elf}\n\t\t;;\n\tneo-tandem)\n\t\tcpu=neo\n\t\tvendor=tandem\n\t\t;;\n\tnse-tandem)\n\t\tcpu=nse\n\t\tvendor=tandem\n\t\t;;\n\tnsr-tandem)\n\t\tcpu=nsr\n\t\tvendor=tandem\n\t\t;;\n\tnsv-tandem)\n\t\tcpu=nsv\n\t\tvendor=tandem\n\t\t;;\n\tnsx-tandem)\n\t\tcpu=nsx\n\t\tvendor=tandem\n\t\t;;\n\tmipsallegrexel-sony)\n\t\tcpu=mipsallegrexel\n\t\tvendor=sony\n\t\t;;\n\ttile*-*)\n\t\tbasic_os=${basic_os:-linux-gnu}\n\t\t;;\n\n\t*)\n\t\t# Recognize the canonical CPU types that are allowed with any\n\t\t# company name.\n\t\tcase $cpu in\n\t\t\t1750a | 580 \\\n\t\t\t| a29k \\\n\t\t\t| aarch64 | aarch64_be \\\n\t\t\t| abacus \\\n\t\t\t| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \\\n\t\t\t| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \\\n\t\t\t| alphapca5[67] | alpha64pca5[67] \\\n\t\t\t| am33_2.0 \\\n\t\t\t| amdgcn \\\n\t\t\t| arc | arceb \\\n\t\t\t| arm | arm[lb]e | arme[lb] | armv* \\\n\t\t\t| avr | avr32 \\\n\t\t\t| asmjs \\\n\t\t\t| ba \\\n\t\t\t| be32 | be64 \\\n\t\t\t| bfin | bpf | bs2000 \\\n\t\t\t| c[123]* | c30 | [cjt]90 | c4x \\\n\t\t\t| c8051 | clipper | craynv | csky | cydra \\\n\t\t\t| d10v | d30v | dlx | dsp16xx \\\n\t\t\t| e2k | elxsi | epiphany \\\n\t\t\t| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \\\n\t\t\t| h8300 | h8500 \\\n\t\t\t| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \\\n\t\t\t| hexagon \\\n\t\t\t| i370 | i*86 | i860 | i960 | ia16 | ia64 \\\n\t\t\t| ip2k | iq2000 \\\n\t\t\t| k1om \\\n\t\t\t| le32 | le64 \\\n\t\t\t| lm32 \\\n\t\t\t| m32c | m32r | m32rle \\\n\t\t\t| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \\\n\t\t\t| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \\\n\t\t\t| m88110 | m88k | maxq | mb | mcore | mep | metag \\\n\t\t\t| microblaze | microblazeel \\\n\t\t\t| mips | mipsbe | mipseb | mipsel | mipsle \\\n\t\t\t| mips16 \\\n\t\t\t| mips64 | mips64eb | mips64el \\\n\t\t\t| mips64octeon | mips64octeonel \\\n\t\t\t| mips64orion | mips64orionel \\\n\t\t\t| mips64r5900 | mips64r5900el \\\n\t\t\t| mips64vr | mips64vrel \\\n\t\t\t| mips64vr4100 | mips64vr4100el \\\n\t\t\t| mips64vr4300 | mips64vr4300el \\\n\t\t\t| mips64vr5000 | mips64vr5000el \\\n\t\t\t| mips64vr5900 | mips64vr5900el \\\n\t\t\t| mipsisa32 | mipsisa32el \\\n\t\t\t| mipsisa32r2 | mipsisa32r2el \\\n\t\t\t| mipsisa32r6 | mipsisa32r6el \\\n\t\t\t| mipsisa64 | mipsisa64el \\\n\t\t\t| mipsisa64r2 | mipsisa64r2el \\\n\t\t\t| mipsisa64r6 | mipsisa64r6el \\\n\t\t\t| mipsisa64sb1 | mipsisa64sb1el \\\n\t\t\t| mipsisa64sr71k | mipsisa64sr71kel \\\n\t\t\t| mipsr5900 | mipsr5900el \\\n\t\t\t| mipstx39 | mipstx39el \\\n\t\t\t| mmix \\\n\t\t\t| mn10200 | mn10300 \\\n\t\t\t| moxie \\\n\t\t\t| mt \\\n\t\t\t| msp430 \\\n\t\t\t| nds32 | nds32le | nds32be \\\n\t\t\t| nfp \\\n\t\t\t| nios | nios2 | nios2eb | nios2el \\\n\t\t\t| none | np1 | ns16k | ns32k | nvptx \\\n\t\t\t| open8 \\\n\t\t\t| or1k* \\\n\t\t\t| or32 \\\n\t\t\t| orion \\\n\t\t\t| picochip \\\n\t\t\t| pdp10 | pdp11 | pj | pjl | pn | power \\\n\t\t\t| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \\\n\t\t\t| pru \\\n\t\t\t| pyramid \\\n\t\t\t| riscv | riscv32 | riscv64 \\\n\t\t\t| rl78 | romp | rs6000 | rx \\\n\t\t\t| s390 | s390x \\\n\t\t\t| score \\\n\t\t\t| sh | shl \\\n\t\t\t| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \\\n\t\t\t| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \\\n\t\t\t| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \\\n\t\t\t| sparclite \\\n\t\t\t| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \\\n\t\t\t| spu \\\n\t\t\t| tahoe \\\n\t\t\t| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \\\n\t\t\t| tron \\\n\t\t\t| ubicom32 \\\n\t\t\t| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \\\n\t\t\t| vax \\\n\t\t\t| visium \\\n\t\t\t| w65 \\\n\t\t\t| wasm32 | wasm64 \\\n\t\t\t| we32k \\\n\t\t\t| x86 | x86_64 | xc16x | xgate | xps100 \\\n\t\t\t| xstormy16 | xtensa* \\\n\t\t\t| ymp \\\n\t\t\t| z8k | z80)\n\t\t\t\t;;\n\n\t\t\t*)\n\t\t\t\techo Invalid configuration \\`\"$1\"\\': machine \\`\"$cpu-$vendor\"\\' not recognized 1>&2\n\t\t\t\texit 1\n\t\t\t\t;;\n\t\tesac\n\t\t;;\nesac\n\n# Here we canonicalize certain aliases for manufacturers.\ncase $vendor in\n\tdigital*)\n\t\tvendor=dec\n\t\t;;\n\tcommodore*)\n\t\tvendor=cbm\n\t\t;;\n\t*)\n\t\t;;\nesac\n\n# Decode manufacturer-specific aliases for certain operating systems.\n\nif test x$basic_os != x\nthen\n\n# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just\n# set os.\ncase $basic_os in\n\tgnu/linux*)\n\t\tkernel=linux\n\t\tos=`echo $basic_os | sed -e 's|gnu/linux|gnu|'`\n\t\t;;\n\tnto-qnx*)\n\t\tkernel=nto\n\t\tos=`echo $basic_os | sed -e 's|nto-qnx|qnx|'`\n\t\t;;\n\t*-*)\n\t\t# shellcheck disable=SC2162\n\t\tIFS=\"-\" read kernel os <<EOF\n$basic_os\nEOF\n\t\t;;\n\t# Default OS when just kernel was specified\n\tnto*)\n\t\tkernel=nto\n\t\tos=`echo $basic_os | sed -e 's|nto|qnx|'`\n\t\t;;\n\tlinux*)\n\t\tkernel=linux\n\t\tos=`echo $basic_os | sed -e 's|linux|gnu|'`\n\t\t;;\n\t*)\n\t\tkernel=\n\t\tos=$basic_os\n\t\t;;\nesac\n\n# Now, normalize the OS (knowing we just have one component, it's not a kernel,\n# etc.)\ncase $os in\n\t# First match some system type aliases that might get confused\n\t# with valid system types.\n\t# solaris* is a basic system type, with this one exception.\n\tauroraux)\n\t\tos=auroraux\n\t\t;;\n\tbluegene*)\n\t\tos=cnk\n\t\t;;\n\tsolaris1 | solaris1.*)\n\t\tos=`echo $os | sed -e 's|solaris1|sunos4|'`\n\t\t;;\n\tsolaris)\n\t\tos=solaris2\n\t\t;;\n\tunixware*)\n\t\tos=sysv4.2uw\n\t\t;;\n\t# es1800 is here to avoid being matched by es* (a different OS)\n\tes1800*)\n\t\tos=ose\n\t\t;;\n\t# Some version numbers need modification\n\tchorusos*)\n\t\tos=chorusos\n\t\t;;\n\tisc)\n\t\tos=isc2.2\n\t\t;;\n\tsco6)\n\t\tos=sco5v6\n\t\t;;\n\tsco5)\n\t\tos=sco3.2v5\n\t\t;;\n\tsco4)\n\t\tos=sco3.2v4\n\t\t;;\n\tsco3.2.[4-9]*)\n\t\tos=`echo $os | sed -e 's/sco3.2./sco3.2v/'`\n\t\t;;\n\tsco*v* | scout)\n\t\t# Don't match below\n\t\t;;\n\tsco*)\n\t\tos=sco3.2v2\n\t\t;;\n\tpsos*)\n\t\tos=psos\n\t\t;;\n\tqnx*)\n\t\tos=qnx\n\t\t;;\n\thiux*)\n\t\tos=hiuxwe2\n\t\t;;\n\tlynx*178)\n\t\tos=lynxos178\n\t\t;;\n\tlynx*5)\n\t\tos=lynxos5\n\t\t;;\n\tlynxos*)\n\t\t# don't get caught up in next wildcard\n\t\t;;\n\tlynx*)\n\t\tos=lynxos\n\t\t;;\n\tmac[0-9]*)\n\t\tos=`echo \"$os\" | sed -e 's|mac|macos|'`\n\t\t;;\n\topened*)\n\t\tos=openedition\n\t\t;;\n\tos400*)\n\t\tos=os400\n\t\t;;\n\tsunos5*)\n\t\tos=`echo \"$os\" | sed -e 's|sunos5|solaris2|'`\n\t\t;;\n\tsunos6*)\n\t\tos=`echo \"$os\" | sed -e 's|sunos6|solaris3|'`\n\t\t;;\n\twince*)\n\t\tos=wince\n\t\t;;\n\tutek*)\n\t\tos=bsd\n\t\t;;\n\tdynix*)\n\t\tos=bsd\n\t\t;;\n\tacis*)\n\t\tos=aos\n\t\t;;\n\tatheos*)\n\t\tos=atheos\n\t\t;;\n\tsyllable*)\n\t\tos=syllable\n\t\t;;\n\t386bsd)\n\t\tos=bsd\n\t\t;;\n\tctix* | uts*)\n\t\tos=sysv\n\t\t;;\n\tnova*)\n\t\tos=rtmk-nova\n\t\t;;\n\tns2)\n\t\tos=nextstep2\n\t\t;;\n\t# Preserve the version number of sinix5.\n\tsinix5.*)\n\t\tos=`echo $os | sed -e 's|sinix|sysv|'`\n\t\t;;\n\tsinix*)\n\t\tos=sysv4\n\t\t;;\n\ttpf*)\n\t\tos=tpf\n\t\t;;\n\ttriton*)\n\t\tos=sysv3\n\t\t;;\n\toss*)\n\t\tos=sysv3\n\t\t;;\n\tsvr4*)\n\t\tos=sysv4\n\t\t;;\n\tsvr3)\n\t\tos=sysv3\n\t\t;;\n\tsysvr4)\n\t\tos=sysv4\n\t\t;;\n\tose*)\n\t\tos=ose\n\t\t;;\n\t*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)\n\t\tos=mint\n\t\t;;\n\tdicos*)\n\t\tos=dicos\n\t\t;;\n\tpikeos*)\n\t\t# Until real need of OS specific support for\n\t\t# particular features comes up, bare metal\n\t\t# configurations are quite functional.\n\t\tcase $cpu in\n\t\t    arm*)\n\t\t\tos=eabi\n\t\t\t;;\n\t\t    *)\n\t\t\tos=elf\n\t\t\t;;\n\t\tesac\n\t\t;;\n\t*)\n\t\t# No normalization, but not necessarily accepted, that comes below.\n\t\t;;\nesac\n\nelse\n\n# Here we handle the default operating systems that come with various machines.\n# The value should be what the vendor currently ships out the door with their\n# machine or put another way, the most popular os provided with the machine.\n\n# Note that if you're going to try to match \"-MANUFACTURER\" here (say,\n# \"-sun\"), then you have to tell the case statement up towards the top\n# that MANUFACTURER isn't an operating system.  Otherwise, code above\n# will signal an error saying that MANUFACTURER isn't an operating\n# system, and we'll never get to this point.\n\nkernel=\ncase $cpu-$vendor in\n\tscore-*)\n\t\tos=elf\n\t\t;;\n\tspu-*)\n\t\tos=elf\n\t\t;;\n\t*-acorn)\n\t\tos=riscix1.2\n\t\t;;\n\tarm*-rebel)\n\t\tkernel=linux\n\t\tos=gnu\n\t\t;;\n\tarm*-semi)\n\t\tos=aout\n\t\t;;\n\tc4x-* | tic4x-*)\n\t\tos=coff\n\t\t;;\n\tc8051-*)\n\t\tos=elf\n\t\t;;\n\tclipper-intergraph)\n\t\tos=clix\n\t\t;;\n\thexagon-*)\n\t\tos=elf\n\t\t;;\n\ttic54x-*)\n\t\tos=coff\n\t\t;;\n\ttic55x-*)\n\t\tos=coff\n\t\t;;\n\ttic6x-*)\n\t\tos=coff\n\t\t;;\n\t# This must come before the *-dec entry.\n\tpdp10-*)\n\t\tos=tops20\n\t\t;;\n\tpdp11-*)\n\t\tos=none\n\t\t;;\n\t*-dec | vax-*)\n\t\tos=ultrix4.2\n\t\t;;\n\tm68*-apollo)\n\t\tos=domain\n\t\t;;\n\ti386-sun)\n\t\tos=sunos4.0.2\n\t\t;;\n\tm68000-sun)\n\t\tos=sunos3\n\t\t;;\n\tm68*-cisco)\n\t\tos=aout\n\t\t;;\n\tmep-*)\n\t\tos=elf\n\t\t;;\n\tmips*-cisco)\n\t\tos=elf\n\t\t;;\n\tmips*-*)\n\t\tos=elf\n\t\t;;\n\tor32-*)\n\t\tos=coff\n\t\t;;\n\t*-tti)\t# must be before sparc entry or we get the wrong os.\n\t\tos=sysv3\n\t\t;;\n\tsparc-* | *-sun)\n\t\tos=sunos4.1.1\n\t\t;;\n\tpru-*)\n\t\tos=elf\n\t\t;;\n\t*-be)\n\t\tos=beos\n\t\t;;\n\t*-ibm)\n\t\tos=aix\n\t\t;;\n\t*-knuth)\n\t\tos=mmixware\n\t\t;;\n\t*-wec)\n\t\tos=proelf\n\t\t;;\n\t*-winbond)\n\t\tos=proelf\n\t\t;;\n\t*-oki)\n\t\tos=proelf\n\t\t;;\n\t*-hp)\n\t\tos=hpux\n\t\t;;\n\t*-hitachi)\n\t\tos=hiux\n\t\t;;\n\ti860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)\n\t\tos=sysv\n\t\t;;\n\t*-cbm)\n\t\tos=amigaos\n\t\t;;\n\t*-dg)\n\t\tos=dgux\n\t\t;;\n\t*-dolphin)\n\t\tos=sysv3\n\t\t;;\n\tm68k-ccur)\n\t\tos=rtu\n\t\t;;\n\tm88k-omron*)\n\t\tos=luna\n\t\t;;\n\t*-next)\n\t\tos=nextstep\n\t\t;;\n\t*-sequent)\n\t\tos=ptx\n\t\t;;\n\t*-crds)\n\t\tos=unos\n\t\t;;\n\t*-ns)\n\t\tos=genix\n\t\t;;\n\ti370-*)\n\t\tos=mvs\n\t\t;;\n\t*-gould)\n\t\tos=sysv\n\t\t;;\n\t*-highlevel)\n\t\tos=bsd\n\t\t;;\n\t*-encore)\n\t\tos=bsd\n\t\t;;\n\t*-sgi)\n\t\tos=irix\n\t\t;;\n\t*-siemens)\n\t\tos=sysv4\n\t\t;;\n\t*-masscomp)\n\t\tos=rtu\n\t\t;;\n\tf30[01]-fujitsu | f700-fujitsu)\n\t\tos=uxpv\n\t\t;;\n\t*-rom68k)\n\t\tos=coff\n\t\t;;\n\t*-*bug)\n\t\tos=coff\n\t\t;;\n\t*-apple)\n\t\tos=macos\n\t\t;;\n\t*-atari*)\n\t\tos=mint\n\t\t;;\n\t*-wrs)\n\t\tos=vxworks\n\t\t;;\n\t*)\n\t\tos=none\n\t\t;;\nesac\n\nfi\n\n# Now, validate our (potentially fixed-up) OS.\ncase $os in\n\t# Sometimes we do \"kernel-abi\", so those need to count as OSes.\n\tmusl* | newlib* | uclibc*)\n\t\t;;\n\t# Likewise for \"kernel-libc\"\n\teabi | eabihf | gnueabi | gnueabihf)\n\t\t;;\n\t# Now accept the basic system types.\n\t# The portable systems comes first.\n\t# Each alternative MUST end in a * to match a version number.\n\tgnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \\\n\t     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \\\n\t     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \\\n\t     | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \\\n\t     | hiux* | abug | nacl* | netware* | windows* \\\n\t     | os9* | macos* | osx* | ios* \\\n\t     | mpw* | magic* | mmixware* | mon960* | lnews* \\\n\t     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \\\n\t     | aos* | aros* | cloudabi* | sortix* | twizzler* \\\n\t     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \\\n\t     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \\\n\t     | mirbsd* | netbsd* | dicos* | openedition* | ose* \\\n\t     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \\\n\t     | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \\\n\t     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \\\n\t     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \\\n\t     | udi* | lites* | ieee* | go32* | aux* | hcos* \\\n\t     | chorusrdb* | cegcc* | glidix* \\\n\t     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \\\n\t     | midipix* | mingw32* | mingw64* | mint* \\\n\t     | uxpv* | beos* | mpeix* | udk* | moxiebox* \\\n\t     | interix* | uwin* | mks* | rhapsody* | darwin* \\\n\t     | openstep* | oskit* | conix* | pw32* | nonstopux* \\\n\t     | storm-chaos* | tops10* | tenex* | tops20* | its* \\\n\t     | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \\\n\t     | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \\\n\t     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \\\n\t     | skyos* | haiku* | rdos* | toppers* | drops* | es* \\\n\t     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \\\n\t     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \\\n\t     | nsk* | powerunix* | genode* | zvmoe* | qnx* )\n\t\t;;\n\t# This one is extra strict with allowed versions\n\tsco3.2v2 | sco3.2v[4-9]* | sco5v6*)\n\t\t# Don't forget version if it is 3.2v4 or newer.\n\t\t;;\n\tnone)\n\t\t;;\n\t*)\n\t\techo Invalid configuration \\`\"$1\"\\': OS \\`\"$os\"\\' not recognized 1>&2\n\t\texit 1\n\t\t;;\nesac\n\n# As a final step for OS-related things, validate the OS-kernel combination\n# (given a valid OS), if there is a kernel.\ncase $kernel-$os in\n\tlinux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )\n\t\t;;\n\tuclinux-uclibc* )\n\t\t;;\n\t-dietlibc* | -newlib* | -musl* | -uclibc* )\n\t\t# These are just libc implementations, not actual OSes, and thus\n\t\t# require a kernel.\n\t\techo \"Invalid configuration \\`$1': libc \\`$os' needs explicit kernel.\" 1>&2\n\t\texit 1\n\t\t;;\n\tkfreebsd*-gnu* | kopensolaris*-gnu*)\n\t\t;;\n\tnto-qnx*)\n\t\t;;\n\t*-eabi* | *-gnueabi*)\n\t\t;;\n\t-*)\n\t\t# Blank kernel with real OS is always fine.\n\t\t;;\n\t*-*)\n\t\techo \"Invalid configuration \\`$1': Kernel \\`$kernel' not known to work with OS \\`$os'.\" 1>&2\n\t\texit 1\n\t\t;;\nesac\n\n# Here we handle the case where we know the os, and the CPU type, but not the\n# manufacturer.  We pick the logical manufacturer.\ncase $vendor in\n\tunknown)\n\t\tcase $cpu-$os in\n\t\t\t*-riscix*)\n\t\t\t\tvendor=acorn\n\t\t\t\t;;\n\t\t\t*-sunos*)\n\t\t\t\tvendor=sun\n\t\t\t\t;;\n\t\t\t*-cnk* | *-aix*)\n\t\t\t\tvendor=ibm\n\t\t\t\t;;\n\t\t\t*-beos*)\n\t\t\t\tvendor=be\n\t\t\t\t;;\n\t\t\t*-hpux*)\n\t\t\t\tvendor=hp\n\t\t\t\t;;\n\t\t\t*-mpeix*)\n\t\t\t\tvendor=hp\n\t\t\t\t;;\n\t\t\t*-hiux*)\n\t\t\t\tvendor=hitachi\n\t\t\t\t;;\n\t\t\t*-unos*)\n\t\t\t\tvendor=crds\n\t\t\t\t;;\n\t\t\t*-dgux*)\n\t\t\t\tvendor=dg\n\t\t\t\t;;\n\t\t\t*-luna*)\n\t\t\t\tvendor=omron\n\t\t\t\t;;\n\t\t\t*-genix*)\n\t\t\t\tvendor=ns\n\t\t\t\t;;\n\t\t\t*-clix*)\n\t\t\t\tvendor=intergraph\n\t\t\t\t;;\n\t\t\t*-mvs* | *-opened*)\n\t\t\t\tvendor=ibm\n\t\t\t\t;;\n\t\t\t*-os400*)\n\t\t\t\tvendor=ibm\n\t\t\t\t;;\n\t\t\ts390-* | s390x-*)\n\t\t\t\tvendor=ibm\n\t\t\t\t;;\n\t\t\t*-ptx*)\n\t\t\t\tvendor=sequent\n\t\t\t\t;;\n\t\t\t*-tpf*)\n\t\t\t\tvendor=ibm\n\t\t\t\t;;\n\t\t\t*-vxsim* | *-vxworks* | *-windiss*)\n\t\t\t\tvendor=wrs\n\t\t\t\t;;\n\t\t\t*-aux*)\n\t\t\t\tvendor=apple\n\t\t\t\t;;\n\t\t\t*-hms*)\n\t\t\t\tvendor=hitachi\n\t\t\t\t;;\n\t\t\t*-mpw* | *-macos*)\n\t\t\t\tvendor=apple\n\t\t\t\t;;\n\t\t\t*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)\n\t\t\t\tvendor=atari\n\t\t\t\t;;\n\t\t\t*-vos*)\n\t\t\t\tvendor=stratus\n\t\t\t\t;;\n\t\tesac\n\t\t;;\nesac\n\necho \"$cpu-$vendor-${kernel:+$kernel-}$os\"\nexit\n\n# Local variables:\n# eval: (add-hook 'before-save-hook 'time-stamp)\n# time-stamp-start: \"timestamp='\"\n# time-stamp-format: \"%:y-%02m-%02d\"\n# time-stamp-end: \"'\"\n# End:\n"
  },
  {
    "path": "support/gnuconfig/update",
    "content": "#!/usr/bin/env bash\n\nset -e\n\ncd \"${0%/*}\"\n\ngit clone https://git.savannah.gnu.org/git/config.git\nsha=\"$(cd config; git log -1 --pretty=tformat:%H)\"\nsed -r -i -e \"\\$s/.*/${sha}/\" README.buildroot\ncp config/config.* .\nfor p in $(ls patches/*.patch 2>/dev/null); do\n    patch -p1 < \"${p}\"\ndone\nrm -rf config\n"
  },
  {
    "path": "support/kconfig/.gitignore",
    "content": "#\n# Quilt is being used to handle the patch series\n#\n.pc\n"
  },
  {
    "path": "support/kconfig/Makefile",
    "content": "# SPDX-License-Identifier: GPL-2.0\n# ===========================================================================\n# Kernel configuration targets\n# These targets are used from top-level makefile\n\nPHONY += xconfig gconfig menuconfig config syncconfig update-po-config \\\n\tlocalmodconfig localyesconfig\n\n# Easy method for doing a status message\n       kecho := :\n quiet_kecho := echo\nsilent_kecho := :\nkecho := $($(quiet)kecho)\n\nifdef KBUILD_KCONFIG\nKconfig := $(KBUILD_KCONFIG)\nelse\nKconfig := Kconfig\nendif\n\nifeq ($(quiet),silent_)\nsilent := -s\nendif\n\n# We need this, in case the user has it in its environment\nunexport CONFIG_\n\nxconfig: $(obj)/qconf\n\t$< $(silent) $(Kconfig)\n\ngconfig: $(obj)/gconf\n\t$< $(silent) $(Kconfig)\n\nmenuconfig: $(obj)/mconf\n\t$< $(silent) $(Kconfig)\n\nconfig: $(obj)/conf\n\t$< $(silent) --oldaskconfig $(Kconfig)\n\nnconfig: $(obj)/nconf\n\t$< $(silent) $(Kconfig)\n\n# This has become an internal implementation detail and is now deprecated\n# for external use.\nsyncconfig: $(obj)/conf\n\t$(Q)mkdir -p include/config include/generated\n\t$< $(silent) --$@ $(Kconfig)\n\nlocalyesconfig localmodconfig: $(obj)/conf\n\t$(Q)mkdir -p include/config include/generated\n\t$(Q)perl $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config\n\t$(Q)if [ -f .config ]; then \t\t\t\t\t\\\n\t\t\tcmp -s .tmp.config .config ||\t\t\t\\\n\t\t\t(mv -f .config .config.old.1;\t\t\t\\\n\t\t\t mv -f .tmp.config .config;\t\t\t\\\n\t\t\t $< $(silent) --oldconfig $(Kconfig);\t\t\\\n\t\t\t mv -f .config.old.1 .config.old)\t\t\\\n\telse\t\t\t\t\t\t\t\t\\\n\t\t\tmv -f .tmp.config .config;\t\t\t\\\n\t\t\t$< $(silent) --oldconfig $(Kconfig);\t\t\\\n\tfi\n\t$(Q)rm -f .tmp.config\n\n# Create new linux.pot file\n# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files\nupdate-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h\n\t$(Q)$(kecho) \"  GEN     config.pot\"\n\t$(Q)xgettext --default-domain=linux                         \\\n\t    --add-comments --keyword=_ --keyword=N_                 \\\n\t    --from-code=UTF-8                                       \\\n\t    --files-from=$(srctree)/scripts/kconfig/POTFILES.in     \\\n\t    --directory=$(srctree) --directory=$(objtree)           \\\n\t    --output $(obj)/config.pot\n\t$(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot\n\t$(Q)(for i in `ls $(srctree)/arch/*/Kconfig      \\\n\t    $(srctree)/arch/*/um/Kconfig`;               \\\n\t    do                                           \\\n\t\t$(kecho) \"  GEN     $$i\";                    \\\n\t\t$(obj)/kxgettext $$i                     \\\n\t\t     >> $(obj)/config.pot;               \\\n\t    done )\n\t$(Q)$(kecho) \"  GEN     linux.pot\"\n\t$(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \\\n\t    --output $(obj)/linux.pot\n\t$(Q)rm -f $(obj)/config.pot\n\n# These targets map 1:1 to the commandline options of 'conf'\nsimple-targets := oldconfig allnoconfig allyesconfig allmodconfig \\\n\talldefconfig randconfig listnewconfig olddefconfig\nPHONY += $(simple-targets)\n\n$(simple-targets): $(obj)/conf\n\t$< $(silent) --$@ $(Kconfig)\n\nPHONY += oldnoconfig silentoldconfig savedefconfig defconfig\n\n# oldnoconfig is an alias of olddefconfig, because people already are dependent\n# on its behavior (sets new symbols to their default value but not 'n') with the\n# counter-intuitive name.\noldnoconfig: olddefconfig\n\t@echo \"  WARNING: \\\"oldnoconfig\\\" target will be removed after Linux 4.19\"\n\t@echo \"            Please use \\\"olddefconfig\\\" instead, which is an alias.\"\n\n# We do not expect manual invokcation of \"silentoldcofig\" (or \"syncconfig\").\nsilentoldconfig: syncconfig\n\t@echo \"  WARNING: \\\"silentoldconfig\\\" has been renamed to \\\"syncconfig\\\"\"\n\t@echo \"            and is now an internal implementation detail.\"\n\t@echo \"            What you want is probably \\\"oldconfig\\\".\"\n\t@echo \"            \\\"silentoldconfig\\\" will be removed after Linux 4.19\"\n\nsavedefconfig: $(obj)/conf\n\t$< $(silent) --$@=defconfig $(Kconfig)\n\ndefconfig: $(obj)/conf\nifeq ($(KBUILD_DEFCONFIG),)\n\t$< $(silent) --defconfig $(Kconfig)\nelse\nifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),)\n\t@$(kecho) \"*** Default configuration is based on '$(KBUILD_DEFCONFIG)'\"\n\t$(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig)\nelse\n\t@$(kecho) \"*** Default configuration is based on target '$(KBUILD_DEFCONFIG)'\"\n\t$(Q)$(MAKE) -f $(srctree)/Makefile $(KBUILD_DEFCONFIG)\nendif\nendif\n\n%_defconfig: $(obj)/conf\n\t$(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)\n\nconfigfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/configs/$@)\n\n%.config: $(obj)/conf\n\t$(if $(call configfiles),, $(error No configuration exists for this target on this architecture))\n\t$(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m .config $(configfiles)\n\t+$(Q)yes \"\" | $(MAKE) -f $(srctree)/Makefile oldconfig\n\nPHONY += kvmconfig\nkvmconfig: kvm_guest.config\n\t@:\n\nPHONY += xenconfig\nxenconfig: xen.config\n\t@:\n\nPHONY += tinyconfig\ntinyconfig:\n\t$(Q)$(MAKE) -f $(srctree)/Makefile allnoconfig tiny.config\n\n# CHECK: -o cache_dir=<path> working?\nPHONY += testconfig\ntestconfig: $(obj)/conf\n\t$(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \\\n\t-o cache_dir=$(abspath $(obj)/tests/.cache) \\\n\t$(if $(findstring 1,$(KBUILD_VERBOSE)),--capture=no)\nclean-dirs += tests/.cache\n\n# Help text used by make help\nhelp:\n\t@echo  '  config\t  - Update current config utilising a line-oriented program'\n\t@echo  '  nconfig         - Update current config utilising a ncurses menu based'\n\t@echo  '                    program'\n\t@echo  '  menuconfig\t  - Update current config utilising a menu based program'\n\t@echo  '  xconfig\t  - Update current config utilising a Qt based front-end'\n\t@echo  '  gconfig\t  - Update current config utilising a GTK+ based front-end'\n\t@echo  '  oldconfig\t  - Update current config utilising a provided .config as base'\n\t@echo  '  localmodconfig  - Update current config disabling modules not loaded'\n\t@echo  '  localyesconfig  - Update current config converting local mods to core'\n\t@echo  '  defconfig\t  - New config with default from ARCH supplied defconfig'\n\t@echo  '  savedefconfig   - Save current config as ./defconfig (minimal config)'\n\t@echo  '  allnoconfig\t  - New config where all options are answered with no'\n\t@echo  '  allyesconfig\t  - New config where all options are accepted with yes'\n\t@echo  '  allmodconfig\t  - New config selecting modules when possible'\n\t@echo  '  alldefconfig    - New config with all symbols set to default'\n\t@echo  '  randconfig\t  - New config with random answer to all options'\n\t@echo  '  listnewconfig   - List new options'\n\t@echo  '  olddefconfig\t  - Same as oldconfig but sets new symbols to their'\n\t@echo  '                    default value without prompting'\n\t@echo  '  kvmconfig\t  - Enable additional options for kvm guest kernel support'\n\t@echo  '  xenconfig       - Enable additional options for xen dom0 and guest kernel support'\n\t@echo  '  tinyconfig\t  - Configure the tiniest possible kernel'\n\n# lxdialog stuff\ncheck-lxdialog  := $(srctree)/$(src)/lxdialog/check-lxdialog.sh\n\n# Use recursively expanded variables so we do not call gcc unless\n# we really need to do so. (Do not call gcc as part of make mrproper)\nHOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \\\n                    -DLOCALE\n\n# ===========================================================================\n# Shared Makefile for the various kconfig executables:\n# conf:\t  Used for defconfig, oldconfig and related targets\n# nconf:  Used for the nconfig target.\n#         Utilizes ncurses\n# mconf:  Used for the menuconfig target\n#         Utilizes the lxdialog package\n# qconf:  Used for the xconfig target\n#         Based on Qt which needs to be installed to compile it\n# gconf:  Used for the gconfig target\n#         Based on GTK+ which needs to be installed to compile it\n# object files used by all kconfig flavours\n\nlxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o\nlxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o\n\nconf-objs\t:= conf.o  zconf.tab.o\nmconf-objs     := mconf.o zconf.tab.o $(lxdialog)\nnconf-objs     := nconf.o zconf.tab.o nconf.gui.o\nkxgettext-objs\t:= kxgettext.o zconf.tab.o\nqconf-cxxobjs\t:= qconf.o\nqconf-objs\t:= zconf.tab.o\ngconf-objs\t:= gconf.o zconf.tab.o\n\nhostprogs-y := conf\n\nifeq ($(MAKECMDGOALS),nconf)\n\thostprogs-y += nconf\nendif\n\nifeq ($(MAKECMDGOALS),mconf)\n\thostprogs-y += mconf\nendif\n\nifeq ($(MAKECMDGOALS),update-po-config)\n\thostprogs-y += kxgettext\nendif\n\nifeq ($(MAKECMDGOALS),qconf)\n\tqconf-target := 1\nendif\n\nifeq ($(MAKECMDGOALS),gconf)\n\tgconf-target := 1\nendif\n\nifeq ($(qconf-target),1)\n\thostprogs-y += qconf\nendif\n\nifeq ($(gconf-target),1)\n\thostprogs-y += gconf\nendif\n\ntargets\t\t+= zconf.lex.c\nclean-files\t:= qconf.moc .tmp_qtcheck .tmp_gtkcheck\nclean-files\t+= gconf.glade.h\nclean-files     += config.pot linux.pot\n\n# Check that we have the required ncurses stuff installed for lxdialog (menuconfig)\nPHONY += $(obj)/dochecklxdialog\n$(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/dochecklxdialog\n$(obj)/dochecklxdialog:\n\t$(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTLOADLIBES_mconf)\n\nalways := dochecklxdialog\n\n# Add environment specific flags\nHOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS))\nHOST_EXTRACXXFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCXX) $(HOSTCXXFLAGS))\n\n# generated files seem to need this to find local include files\nHOSTCFLAGS_zconf.lex.o\t:= -I$(src)\nHOSTCFLAGS_zconf.tab.o\t:= -I$(src)\n\nHOSTLOADLIBES_qconf\t= $(KC_QT_LIBS)\nHOSTCXXFLAGS_qconf.o\t= $(KC_QT_CFLAGS)\n\nHOSTLOADLIBES_gconf\t= `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0`\nHOSTCFLAGS_gconf.o\t= `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \\\n                          -Wno-missing-prototypes\n\nHOSTLOADLIBES_mconf   = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))\n\nHOSTLOADLIBES_nconf\t= $(shell \\\n\t\t\t\tpkg-config --libs menuw panelw ncursesw 2>/dev/null \\\n\t\t\t\t|| pkg-config --libs menu panel ncurses 2>/dev/null \\\n\t\t\t\t|| echo \"-lmenu -lpanel -lncurses\"  )\n$(obj)/qconf.o: $(obj)/.tmp_qtcheck\n\nifeq ($(MAKECMDGOALS),qconf)\n$(obj)/.tmp_qtcheck: $(src)/Makefile\n-include $(obj)/.tmp_qtcheck\n\n# Qt needs some extra effort...\n$(obj)/.tmp_qtcheck:\n\t@set -e; $(kecho) \"  CHECK   qt\"; \\\n\tif pkg-config --exists Qt5Core; then \\\n\t    cflags=\"-std=c++11 -fPIC `pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets`\"; \\\n\t    libs=`pkg-config --libs Qt5Core Qt5Gui Qt5Widgets`; \\\n\t    moc=`pkg-config --variable=host_bins Qt5Core`/moc; \\\n\telif pkg-config --exists QtCore; then \\\n\t    cflags=`pkg-config --cflags QtCore QtGui`; \\\n\t    libs=`pkg-config --libs QtCore QtGui`; \\\n\t    moc=`pkg-config --variable=moc_location QtCore`; \\\n\telse \\\n\t    echo >&2 \"*\"; \\\n\t    echo >&2 \"* Could not find Qt via pkg-config.\"; \\\n\t    echo >&2 \"* Please install either Qt 4.8 or 5.x. and make sure it's in PKG_CONFIG_PATH\"; \\\n\t    echo >&2 \"*\"; \\\n\t    exit 1; \\\n\tfi; \\\n\techo \"KC_QT_CFLAGS=$$cflags\" > $@; \\\n\techo \"KC_QT_LIBS=$$libs\" >> $@; \\\n\techo \"KC_QT_MOC=$$moc\" >> $@\nendif\n\nifeq ($(MAKECMDGOALS),gconf)\n$(obj)/gconf.o: $(obj)/.tmp_gtkcheck\n-include $(obj)/.tmp_gtkcheck\n\n# GTK+ needs some extra effort, too...\n$(obj)/.tmp_gtkcheck:\n\t@if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then\t\t\\\n\t\tif `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then\t\t\t\\\n\t\t\ttouch $@;\t\t\t\t\t\t\t\t\\\n\t\telse\t\t\t\t\t\t\t\t\t\\\n\t\t\techo >&2 \"*\"; \t\t\t\t\t\t\t\\\n\t\t\techo >&2 \"* GTK+ is present but version >= 2.0.0 is required.\";\t\\\n\t\t\techo >&2 \"*\";\t\t\t\t\t\t\t\\\n\t\t\tfalse;\t\t\t\t\t\t\t\t\\\n\t\tfi\t\t\t\t\t\t\t\t\t\\\n\telse\t\t\t\t\t\t\t\t\t\t\\\n\t\techo >&2 \"*\"; \t\t\t\t\t\t\t\t\\\n\t\techo >&2 \"* Unable to find the GTK+ installation. Please make sure that\"; \t\\\n\t\techo >&2 \"* the GTK+ 2.0 development package is correctly installed...\"; \t\\\n\t\techo >&2 \"* You need gtk+-2.0, glib-2.0 and libglade-2.0.\"; \t\t\\\n\t\techo >&2 \"*\"; \t\t\t\t\t\t\t\t\\\n\t\tfalse;\t\t\t\t\t\t\t\t\t\\\n\tfi\nendif\n\n$(obj)/zconf.tab.o: $(obj)/zconf.lex.c\n\n$(obj)/qconf.o: $(obj)/qconf.moc\n\n$(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck\n\t$(KC_QT_MOC) -i $< -o $@\n\n# Extract gconf menu items for i18n support\n$(obj)/gconf.glade.h: $(obj)/gconf.glade\n\t$(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \\\n\t$(obj)/gconf.glade\n"
  },
  {
    "path": "support/kconfig/Makefile.br",
    "content": "src := .\ntop_srcdir=../../\ntop_builddir=../../\nsrctree := .\nobj ?= .\n\ninclude Makefile\n#HOSTCFLAGS+=-Dinline=\"\" -include foo.h\n-include $(obj)/.depend\n$(obj)/.depend: $(wildcard *.h *.c)\n\t$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || :\n\n__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m))\nhost-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m)))\nhost-cmulti := $(foreach m,$(__hostprogs),\\\n           $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m))))\nhost-cxxmulti := $(foreach m,$(__hostprogs),\\\n           $(if $($(m)-cxxobjs),$(m),$(if $($(m)-objs),)))\nhost-cobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-objs))))\nhost-cxxobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs))))\n\nHOST_EXTRACFLAGS += -I$(obj) -DCONFIG_=\\\"\\\"\n\n$(host-csingle): %: %.c\n\t$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@\n\n$(host-cmulti): %: $(host-cobjs) $(host-cshlib)\n\t$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@\n\n$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib)\n\t$(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@\n\n$(obj)/%.o: %.c\n\t$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@\n\n$(obj)/%.o: $(obj)/%.c\n\t$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@\n\n$(obj)/%.o: %.cc\n\t$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@\n\n$(obj)/%:: $(src)/%_shipped\n\t$(Q)cat $< > $@\n\nclean:\n\t$(Q)rm -f $(addprefix $(obj)/,$(clean-files))\ndistclean: clean\n\t$(Q)rm -f $(addprefix $(obj)/,$(lxdialog) $(conf-objs) $(mconf-objs) $(kxgettext-objs) \\\n\t\t$(hostprogs-y) $(qconf-cxxobjs) $(qconf-objs) $(gconf-objs) \\\n\t\tmconf .depend)\n\nFORCE:\n.PHONY: FORCE clean distclean\n"
  },
  {
    "path": "support/kconfig/POTFILES.in",
    "content": "scripts/kconfig/lxdialog/checklist.c\nscripts/kconfig/lxdialog/inputbox.c\nscripts/kconfig/lxdialog/menubox.c\nscripts/kconfig/lxdialog/textbox.c\nscripts/kconfig/lxdialog/util.c\nscripts/kconfig/lxdialog/yesno.c\nscripts/kconfig/mconf.c\nscripts/kconfig/conf.c\nscripts/kconfig/confdata.c\nscripts/kconfig/gconf.c\nscripts/kconfig/gconf.glade.h\nscripts/kconfig/qconf.cc\n"
  },
  {
    "path": "support/kconfig/README.buildroot",
    "content": "This is a copy of the kconfig code in the kernel (currently 4.17-rc2) tweaked\nto suit Buildroot.\n\nTo update:\n\tcp -r /usr/src/linux/scripts/kconfig support/kconfig.new\n\tcd support/kconfig.new\n\t# zconf.lex.c and zconf.tab.c needs to be generated by 'make menuconfig'\n\tmv zconf.lex.c zconf.lex.c_shipped\n\tmv zconf.tab.c zconf.tab.c_shipped\n\trm -rf tests/\n\tcp -a ../kconfig/patches ../kconfig/README.buildroot ../kconfig/.gitignore .\n\tquilt push -a\n\t# Fix any conflict\n\tcd ..\n\trm -rf kconfig\n\tmv kconfig.new kconfig\n\nThen verify the toplevel targets work:\n\tconfig\n\tdefconfig\n\tmenuconfig\n\tnconfig\n\txconfig\n\tgconfig\n\toldconfig\n"
  },
  {
    "path": "support/kconfig/check.sh",
    "content": "#!/bin/sh\n# SPDX-License-Identifier: GPL-2.0\n# Needed for systems without gettext\n$* -x c -o /dev/null - > /dev/null 2>&1 << EOF\n#include <libintl.h>\nint main()\n{\n\tgettext(\"\");\n\treturn 0;\n}\nEOF\nif [ ! \"$?\" -eq \"0\"  ]; then\n\techo -DKBUILD_NO_NLS;\nfi\n"
  },
  {
    "path": "support/kconfig/conf.c",
    "content": "/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#include <locale.h>\n#include <ctype.h>\n#include <limits.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <time.h>\n#include <unistd.h>\n#include <getopt.h>\n#include <sys/stat.h>\n#include <sys/time.h>\n#include <errno.h>\n\n#include \"lkc.h\"\n\nstatic void conf(struct menu *menu);\nstatic void check_conf(struct menu *menu);\n\nenum input_mode {\n\toldaskconfig,\n\tsyncconfig,\n\toldconfig,\n\tallnoconfig,\n\tallyesconfig,\n\tallmodconfig,\n\talldefconfig,\n\trandconfig,\n\tdefconfig,\n\tsavedefconfig,\n\tlistnewconfig,\n\tolddefconfig,\n};\nstatic enum input_mode input_mode = oldaskconfig;\n\nstatic int indent = 1;\nstatic int tty_stdio;\nstatic int sync_kconfig;\nstatic int conf_cnt;\nstatic char line[PATH_MAX];\nstatic struct menu *rootEntry;\n\nstatic void print_help(struct menu *menu)\n{\n\tstruct gstr help = str_new();\n\n\tmenu_get_ext_help(menu, &help);\n\n\tprintf(\"\\n%s\\n\", str_get(&help));\n\tstr_free(&help);\n}\n\nstatic void strip(char *str)\n{\n\tchar *p = str;\n\tint l;\n\n\twhile ((isspace(*p)))\n\t\tp++;\n\tl = strlen(p);\n\tif (p != str)\n\t\tmemmove(str, p, l + 1);\n\tif (!l)\n\t\treturn;\n\tp = str + l - 1;\n\twhile ((isspace(*p)))\n\t\t*p-- = 0;\n}\n\n/* Helper function to facilitate fgets() by Jean Sacren. */\nstatic void xfgets(char *str, int size, FILE *in)\n{\n\tif (!fgets(str, size, in))\n\t\tfprintf(stderr, \"\\nError in reading or end of file.\\n\");\n\n\tif (!tty_stdio)\n\t\tprintf(\"%s\", str);\n}\n\nstatic int conf_askvalue(struct symbol *sym, const char *def)\n{\n\tenum symbol_type type = sym_get_type(sym);\n\n\tif (!sym_has_value(sym))\n\t\tprintf(_(\"(NEW) \"));\n\n\tline[0] = '\\n';\n\tline[1] = 0;\n\n\tif (!sym_is_changable(sym)) {\n\t\tprintf(\"%s\\n\", def);\n\t\tline[0] = '\\n';\n\t\tline[1] = 0;\n\t\treturn 0;\n\t}\n\n\tswitch (input_mode) {\n\tcase oldconfig:\n\tcase syncconfig:\n\t\tif (sym_has_value(sym)) {\n\t\t\tprintf(\"%s\\n\", def);\n\t\t\treturn 0;\n\t\t}\n\t\t/* fall through */\n\tcase oldaskconfig:\n\t\tfflush(stdout);\n\t\txfgets(line, sizeof(line), stdin);\n\t\treturn 1;\n\tdefault:\n\t\tbreak;\n\t}\n\n\tswitch (type) {\n\tcase S_INT:\n\tcase S_HEX:\n\tcase S_STRING:\n\t\tprintf(\"%s\\n\", def);\n\t\treturn 1;\n\tdefault:\n\t\t;\n\t}\n\tprintf(\"%s\", line);\n\treturn 1;\n}\n\nstatic int conf_string(struct menu *menu)\n{\n\tstruct symbol *sym = menu->sym;\n\tconst char *def;\n\n\twhile (1) {\n\t\tprintf(\"%*s%s \", indent - 1, \"\", _(menu->prompt->text));\n\t\tprintf(\"(%s) \", sym->name);\n\t\tdef = sym_get_string_value(sym);\n\t\tif (sym_get_string_value(sym))\n\t\t\tprintf(\"[%s] \", def);\n\t\tif (!conf_askvalue(sym, def))\n\t\t\treturn 0;\n\t\tswitch (line[0]) {\n\t\tcase '\\n':\n\t\t\tbreak;\n\t\tcase '?':\n\t\t\t/* print help */\n\t\t\tif (line[1] == '\\n') {\n\t\t\t\tprint_help(menu);\n\t\t\t\tdef = NULL;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/* fall through */\n\t\tdefault:\n\t\t\tline[strlen(line)-1] = 0;\n\t\t\tdef = line;\n\t\t}\n\t\tif (def && sym_set_string_value(sym, def))\n\t\t\treturn 0;\n\t}\n}\n\nstatic int conf_sym(struct menu *menu)\n{\n\tstruct symbol *sym = menu->sym;\n\ttristate oldval, newval;\n\n\twhile (1) {\n\t\tprintf(\"%*s%s \", indent - 1, \"\", _(menu->prompt->text));\n\t\tif (sym->name)\n\t\t\tprintf(\"(%s) \", sym->name);\n\t\tputchar('[');\n\t\toldval = sym_get_tristate_value(sym);\n\t\tswitch (oldval) {\n\t\tcase no:\n\t\t\tputchar('N');\n\t\t\tbreak;\n\t\tcase mod:\n\t\t\tputchar('M');\n\t\t\tbreak;\n\t\tcase yes:\n\t\t\tputchar('Y');\n\t\t\tbreak;\n\t\t}\n\t\tif (oldval != no && sym_tristate_within_range(sym, no))\n\t\t\tprintf(\"/n\");\n\t\tif (oldval != mod && sym_tristate_within_range(sym, mod))\n\t\t\tprintf(\"/m\");\n\t\tif (oldval != yes && sym_tristate_within_range(sym, yes))\n\t\t\tprintf(\"/y\");\n\t\tprintf(\"/?] \");\n\t\tif (!conf_askvalue(sym, sym_get_string_value(sym)))\n\t\t\treturn 0;\n\t\tstrip(line);\n\n\t\tswitch (line[0]) {\n\t\tcase 'n':\n\t\tcase 'N':\n\t\t\tnewval = no;\n\t\t\tif (!line[1] || !strcmp(&line[1], \"o\"))\n\t\t\t\tbreak;\n\t\t\tcontinue;\n\t\tcase 'm':\n\t\tcase 'M':\n\t\t\tnewval = mod;\n\t\t\tif (!line[1])\n\t\t\t\tbreak;\n\t\t\tcontinue;\n\t\tcase 'y':\n\t\tcase 'Y':\n\t\t\tnewval = yes;\n\t\t\tif (!line[1] || !strcmp(&line[1], \"es\"))\n\t\t\t\tbreak;\n\t\t\tcontinue;\n\t\tcase 0:\n\t\t\tnewval = oldval;\n\t\t\tbreak;\n\t\tcase '?':\n\t\t\tgoto help;\n\t\tdefault:\n\t\t\tcontinue;\n\t\t}\n\t\tif (sym_set_tristate_value(sym, newval))\n\t\t\treturn 0;\nhelp:\n\t\tprint_help(menu);\n\t}\n}\n\nstatic int conf_choice(struct menu *menu)\n{\n\tstruct symbol *sym, *def_sym;\n\tstruct menu *child;\n\tbool is_new;\n\n\tsym = menu->sym;\n\tis_new = !sym_has_value(sym);\n\tif (sym_is_changable(sym)) {\n\t\tconf_sym(menu);\n\t\tsym_calc_value(sym);\n\t\tswitch (sym_get_tristate_value(sym)) {\n\t\tcase no:\n\t\t\treturn 1;\n\t\tcase mod:\n\t\t\treturn 0;\n\t\tcase yes:\n\t\t\tbreak;\n\t\t}\n\t} else {\n\t\tswitch (sym_get_tristate_value(sym)) {\n\t\tcase no:\n\t\t\treturn 1;\n\t\tcase mod:\n\t\t\tprintf(\"%*s%s\\n\", indent - 1, \"\", _(menu_get_prompt(menu)));\n\t\t\treturn 0;\n\t\tcase yes:\n\t\t\tbreak;\n\t\t}\n\t}\n\n\twhile (1) {\n\t\tint cnt, def;\n\n\t\tprintf(\"%*s%s\\n\", indent - 1, \"\", _(menu_get_prompt(menu)));\n\t\tdef_sym = sym_get_choice_value(sym);\n\t\tcnt = def = 0;\n\t\tline[0] = 0;\n\t\tfor (child = menu->list; child; child = child->next) {\n\t\t\tif (!menu_is_visible(child))\n\t\t\t\tcontinue;\n\t\t\tif (!child->sym) {\n\t\t\t\tprintf(\"%*c %s\\n\", indent, '*', _(menu_get_prompt(child)));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcnt++;\n\t\t\tif (child->sym == def_sym) {\n\t\t\t\tdef = cnt;\n\t\t\t\tprintf(\"%*c\", indent, '>');\n\t\t\t} else\n\t\t\t\tprintf(\"%*c\", indent, ' ');\n\t\t\tprintf(\" %d. %s\", cnt, _(menu_get_prompt(child)));\n\t\t\tif (child->sym->name)\n\t\t\t\tprintf(\" (%s)\", child->sym->name);\n\t\t\tif (!sym_has_value(child->sym))\n\t\t\t\tprintf(_(\" (NEW)\"));\n\t\t\tprintf(\"\\n\");\n\t\t}\n\t\tprintf(_(\"%*schoice\"), indent - 1, \"\");\n\t\tif (cnt == 1) {\n\t\t\tprintf(\"[1]: 1\\n\");\n\t\t\tgoto conf_childs;\n\t\t}\n\t\tprintf(\"[1-%d?]: \", cnt);\n\t\tswitch (input_mode) {\n\t\tcase oldconfig:\n\t\tcase syncconfig:\n\t\t\tif (!is_new) {\n\t\t\t\tcnt = def;\n\t\t\t\tprintf(\"%d\\n\", cnt);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/* fall through */\n\t\tcase oldaskconfig:\n\t\t\tfflush(stdout);\n\t\t\txfgets(line, sizeof(line), stdin);\n\t\t\tstrip(line);\n\t\t\tif (line[0] == '?') {\n\t\t\t\tprint_help(menu);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!line[0])\n\t\t\t\tcnt = def;\n\t\t\telse if (isdigit(line[0]))\n\t\t\t\tcnt = atoi(line);\n\t\t\telse\n\t\t\t\tcontinue;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\tconf_childs:\n\t\tfor (child = menu->list; child; child = child->next) {\n\t\t\tif (!child->sym || !menu_is_visible(child))\n\t\t\t\tcontinue;\n\t\t\tif (!--cnt)\n\t\t\t\tbreak;\n\t\t}\n\t\tif (!child)\n\t\t\tcontinue;\n\t\tif (line[0] && line[strlen(line) - 1] == '?') {\n\t\t\tprint_help(child);\n\t\t\tcontinue;\n\t\t}\n\t\tsym_set_choice_value(sym, child->sym);\n\t\tfor (child = child->list; child; child = child->next) {\n\t\t\tindent += 2;\n\t\t\tconf(child);\n\t\t\tindent -= 2;\n\t\t}\n\t\treturn 1;\n\t}\n}\n\nstatic void conf(struct menu *menu)\n{\n\tstruct symbol *sym;\n\tstruct property *prop;\n\tstruct menu *child;\n\n\tif (!menu_is_visible(menu))\n\t\treturn;\n\n\tsym = menu->sym;\n\tprop = menu->prompt;\n\tif (prop) {\n\t\tconst char *prompt;\n\n\t\tswitch (prop->type) {\n\t\tcase P_MENU:\n\t\t\t/*\n\t\t\t * Except in oldaskconfig mode, we show only menus that\n\t\t\t * contain new symbols.\n\t\t\t */\n\t\t\tif (input_mode != oldaskconfig && rootEntry != menu) {\n\t\t\t\tcheck_conf(menu);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t/* fall through */\n\t\tcase P_COMMENT:\n\t\t\tprompt = menu_get_prompt(menu);\n\t\t\tif (prompt)\n\t\t\t\tprintf(\"%*c\\n%*c %s\\n%*c\\n\",\n\t\t\t\t\tindent, '*',\n\t\t\t\t\tindent, '*', _(prompt),\n\t\t\t\t\tindent, '*');\n\t\tdefault:\n\t\t\t;\n\t\t}\n\t}\n\n\tif (!sym)\n\t\tgoto conf_childs;\n\n\tif (sym_is_choice(sym)) {\n\t\tconf_choice(menu);\n\t\tif (sym->curr.tri != mod)\n\t\t\treturn;\n\t\tgoto conf_childs;\n\t}\n\n\tswitch (sym->type) {\n\tcase S_INT:\n\tcase S_HEX:\n\tcase S_STRING:\n\t\tconf_string(menu);\n\t\tbreak;\n\tdefault:\n\t\tconf_sym(menu);\n\t\tbreak;\n\t}\n\nconf_childs:\n\tif (sym)\n\t\tindent += 2;\n\tfor (child = menu->list; child; child = child->next)\n\t\tconf(child);\n\tif (sym)\n\t\tindent -= 2;\n}\n\nstatic void check_conf(struct menu *menu)\n{\n\tstruct symbol *sym;\n\tstruct menu *child;\n\n\tif (!menu_is_visible(menu))\n\t\treturn;\n\n\tsym = menu->sym;\n\tif (sym && !sym_has_value(sym)) {\n\t\tif (sym_is_changable(sym) ||\n\t\t    (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {\n\t\t\tif (input_mode == listnewconfig) {\n\t\t\t\tif (sym->name) {\n\t\t\t\t\tconst char *str;\n\n\t\t\t\t\tif (sym->type == S_STRING) {\n\t\t\t\t\t\tstr = sym_get_string_value(sym);\n\t\t\t\t\t\tstr = sym_escape_string_value(str);\n\t\t\t\t\t\tprintf(\"%s%s=%s\\n\", CONFIG_, sym->name, str);\n\t\t\t\t\t\tfree((void *)str);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstr = sym_get_string_value(sym);\n\t\t\t\t\t\tprintf(\"%s%s=%s\\n\", CONFIG_, sym->name, str);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!conf_cnt++)\n\t\t\t\t\tprintf(_(\"*\\n* Restart config...\\n*\\n\"));\n\t\t\t\trootEntry = menu_get_parent_menu(menu);\n\t\t\t\tconf(rootEntry);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (child = menu->list; child; child = child->next)\n\t\tcheck_conf(child);\n}\n\nstatic struct option long_opts[] = {\n\t{\"oldaskconfig\",    no_argument,       NULL, oldaskconfig},\n\t{\"oldconfig\",       no_argument,       NULL, oldconfig},\n\t{\"syncconfig\",      no_argument,       NULL, syncconfig},\n\t{\"defconfig\",       optional_argument, NULL, defconfig},\n\t{\"savedefconfig\",   required_argument, NULL, savedefconfig},\n\t{\"allnoconfig\",     no_argument,       NULL, allnoconfig},\n\t{\"allyesconfig\",    no_argument,       NULL, allyesconfig},\n\t{\"allmodconfig\",    no_argument,       NULL, allmodconfig},\n\t{\"alldefconfig\",    no_argument,       NULL, alldefconfig},\n\t{\"randconfig\",      no_argument,       NULL, randconfig},\n\t{\"listnewconfig\",   no_argument,       NULL, listnewconfig},\n\t{\"olddefconfig\",    no_argument,       NULL, olddefconfig},\n\t/*\n\t * oldnoconfig is an alias of olddefconfig, because people already\n\t * are dependent on its behavior(sets new symbols to their default\n\t * value but not 'n') with the counter-intuitive name.\n\t */\n\t{\"oldnoconfig\",     no_argument,       NULL, olddefconfig},\n\t{NULL, 0, NULL, 0}\n};\n\nstatic void conf_usage(const char *progname)\n{\n\n\tprintf(\"Usage: %s [-s] [option] <kconfig-file>\\n\", progname);\n\tprintf(\"[option] is _one_ of the following:\\n\");\n\tprintf(\"  --listnewconfig         List new options\\n\");\n\tprintf(\"  --oldaskconfig          Start a new configuration using a line-oriented program\\n\");\n\tprintf(\"  --oldconfig             Update a configuration using a provided .config as base\\n\");\n\tprintf(\"  --syncconfig            Similar to oldconfig but generates configuration in\\n\"\n\t       \"                          include/{generated/,config/}\\n\");\n\tprintf(\"  --olddefconfig          Same as oldconfig but sets new symbols to their default value\\n\");\n\tprintf(\"  --oldnoconfig           An alias of olddefconfig\\n\");\n\tprintf(\"  --defconfig <file>      New config with default defined in <file>\\n\");\n\tprintf(\"  --savedefconfig <file>  Save the minimal current configuration to <file>\\n\");\n\tprintf(\"  --allnoconfig           New config where all options are answered with no\\n\");\n\tprintf(\"  --allyesconfig          New config where all options are answered with yes\\n\");\n\tprintf(\"  --allmodconfig          New config where all options are answered with mod\\n\");\n\tprintf(\"  --alldefconfig          New config with all symbols set to default\\n\");\n\tprintf(\"  --randconfig            New config with random answer to all options\\n\");\n}\n\nint main(int ac, char **av)\n{\n\tconst char *progname = av[0];\n\tint opt;\n\tconst char *name, *defconfig_file = NULL /* gcc uninit */;\n\tstruct stat tmpstat;\n\n\tsetlocale(LC_ALL, \"\");\n\tbindtextdomain(PACKAGE, LOCALEDIR);\n\ttextdomain(PACKAGE);\n\n\ttty_stdio = isatty(0) && isatty(1);\n\n\twhile ((opt = getopt_long(ac, av, \"s\", long_opts, NULL)) != -1) {\n\t\tif (opt == 's') {\n\t\t\tconf_set_message_callback(NULL);\n\t\t\tcontinue;\n\t\t}\n\t\tinput_mode = (enum input_mode)opt;\n\t\tswitch (opt) {\n\t\tcase syncconfig:\n\t\t\tsync_kconfig = 1;\n\t\t\tbreak;\n\t\tcase defconfig:\n\t\tcase savedefconfig:\n\t\t\tdefconfig_file = optarg;\n\t\t\tbreak;\n\t\tcase randconfig:\n\t\t{\n\t\t\tstruct timeval now;\n\t\t\tunsigned int seed;\n\t\t\tchar *seed_env;\n\n\t\t\t/*\n\t\t\t * Use microseconds derived seed,\n\t\t\t * compensate for systems where it may be zero\n\t\t\t */\n\t\t\tgettimeofday(&now, NULL);\n\t\t\tseed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1));\n\n\t\t\tseed_env = getenv(\"KCONFIG_SEED\");\n\t\t\tif( seed_env && *seed_env ) {\n\t\t\t\tchar *endp;\n\t\t\t\tint tmp = (int)strtol(seed_env, &endp, 0);\n\t\t\t\tif (*endp == '\\0') {\n\t\t\t\t\tseed = tmp;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfprintf( stderr, \"KCONFIG_SEED=0x%X\\n\", seed );\n\t\t\tsrand(seed);\n\t\t\tbreak;\n\t\t}\n\t\tcase oldaskconfig:\n\t\tcase oldconfig:\n\t\tcase allnoconfig:\n\t\tcase allyesconfig:\n\t\tcase allmodconfig:\n\t\tcase alldefconfig:\n\t\tcase listnewconfig:\n\t\tcase olddefconfig:\n\t\t\tbreak;\n\t\tcase '?':\n\t\t\tconf_usage(progname);\n\t\t\texit(1);\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (ac == optind) {\n\t\tfprintf(stderr, _(\"%s: Kconfig file missing\\n\"), av[0]);\n\t\tconf_usage(progname);\n\t\texit(1);\n\t}\n\tname = av[optind];\n\tconf_parse(name);\n\tif (sync_kconfig) {\n\t\tname = conf_get_configname();\n\t\tif (stat(name, &tmpstat)) {\n\t\t\tfprintf(stderr, _(\"***\\n\"\n\t\t\t\t\"*** Configuration file \\\"%s\\\" not found!\\n\"\n\t\t\t\t\"***\\n\"\n\t\t\t\t\"*** Please run some configurator (e.g. \\\"make oldconfig\\\" or\\n\"\n\t\t\t\t\"*** \\\"make menuconfig\\\" or \\\"make xconfig\\\").\\n\"\n\t\t\t\t\"***\\n\"), name);\n\t\t\texit(1);\n\t\t}\n\t}\n\n\tswitch (input_mode) {\n\tcase defconfig:\n\t\tif (!defconfig_file)\n\t\t\tdefconfig_file = conf_get_default_confname();\n\t\tif (conf_read(defconfig_file)) {\n\t\t\tfprintf(stderr,\n\t\t\t\t_(\"***\\n\"\n\t\t\t\t  \"*** Can't find default configuration \\\"%s\\\"!\\n\"\n\t\t\t\t  \"***\\n\"),\n\t\t\t\tdefconfig_file);\n\t\t\texit(1);\n\t\t}\n\t\tbreak;\n\tcase savedefconfig:\n\tcase syncconfig:\n\tcase oldaskconfig:\n\tcase oldconfig:\n\tcase listnewconfig:\n\tcase olddefconfig:\n\t\tconf_read(NULL);\n\t\tbreak;\n\tcase allnoconfig:\n\tcase allyesconfig:\n\tcase allmodconfig:\n\tcase alldefconfig:\n\tcase randconfig:\n\t\tname = getenv(\"KCONFIG_ALLCONFIG\");\n\t\tif (!name)\n\t\t\tbreak;\n\t\tif ((strcmp(name, \"\") != 0) && (strcmp(name, \"1\") != 0)) {\n\t\t\tif (conf_read_simple(name, S_DEF_USER)) {\n\t\t\t\tfprintf(stderr,\n\t\t\t\t\t_(\"*** Can't read seed configuration \\\"%s\\\"!\\n\"),\n\t\t\t\t\tname);\n\t\t\t\texit(1);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tswitch (input_mode) {\n\t\tcase allnoconfig:\tname = \"allno.config\"; break;\n\t\tcase allyesconfig:\tname = \"allyes.config\"; break;\n\t\tcase allmodconfig:\tname = \"allmod.config\"; break;\n\t\tcase alldefconfig:\tname = \"alldef.config\"; break;\n\t\tcase randconfig:\tname = \"allrandom.config\"; break;\n\t\tdefault: break;\n\t\t}\n\t\tif (conf_read_simple(name, S_DEF_USER) &&\n\t\t    conf_read_simple(\"all.config\", S_DEF_USER)) {\n\t\t\tfprintf(stderr,\n\t\t\t\t_(\"*** KCONFIG_ALLCONFIG set, but no \\\"%s\\\" or \\\"all.config\\\" file found\\n\"),\n\t\t\t\tname);\n\t\t\texit(1);\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\tif (sync_kconfig) {\n\t\tif (conf_get_changed()) {\n\t\t\tname = getenv(\"KCONFIG_NOSILENTUPDATE\");\n\t\t\tif (name && *name) {\n\t\t\t\tfprintf(stderr,\n\t\t\t\t\t_(\"\\n*** The configuration requires explicit update.\\n\\n\"));\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch (input_mode) {\n\tcase allnoconfig:\n\t\tconf_set_all_new_symbols(def_no);\n\t\tbreak;\n\tcase allyesconfig:\n\t\tconf_set_all_new_symbols(def_yes);\n\t\tbreak;\n\tcase allmodconfig:\n\t\tconf_set_all_new_symbols(def_mod);\n\t\tbreak;\n\tcase alldefconfig:\n\t\tconf_set_all_new_symbols(def_default);\n\t\tbreak;\n\tcase randconfig:\n\t\t/* Really nothing to do in this loop */\n\t\twhile (conf_set_all_new_symbols(def_random)) ;\n\t\tbreak;\n\tcase defconfig:\n\t\tconf_set_all_new_symbols(def_default);\n\t\tbreak;\n\tcase savedefconfig:\n\t\tbreak;\n\tcase oldaskconfig:\n\t\trootEntry = &rootmenu;\n\t\tconf(&rootmenu);\n\t\tinput_mode = oldconfig;\n\t\t/* fall through */\n\tcase oldconfig:\n\tcase listnewconfig:\n\tcase syncconfig:\n\t\t/* Update until a loop caused no more changes */\n\t\tdo {\n\t\t\tconf_cnt = 0;\n\t\t\tcheck_conf(&rootmenu);\n\t\t} while (conf_cnt);\n\t\tbreak;\n\tcase olddefconfig:\n\tdefault:\n\t\tbreak;\n\t}\n\n\tif (sync_kconfig) {\n\t\t/* syncconfig is used during the build so we shall update autoconf.\n\t\t * All other commands are only used to generate a config.\n\t\t */\n\t\tif (conf_get_changed() && conf_write(NULL)) {\n\t\t\tfprintf(stderr, _(\"\\n*** Error during writing of the configuration.\\n\\n\"));\n\t\t\texit(1);\n\t\t}\n\t\tif (conf_write_autoconf()) {\n\t\t\tfprintf(stderr, _(\"\\n*** Error during update of the configuration.\\n\\n\"));\n\t\t\treturn 1;\n\t\t}\n\t} else if (input_mode == savedefconfig) {\n\t\tif (conf_write_defconfig(defconfig_file)) {\n\t\t\tfprintf(stderr, _(\"n*** Error while saving defconfig to: %s\\n\\n\"),\n\t\t\t\tdefconfig_file);\n\t\t\treturn 1;\n\t\t}\n\t} else if (input_mode != listnewconfig) {\n\t\tif (conf_write(NULL)) {\n\t\t\tfprintf(stderr, _(\"\\n*** Error during writing of the configuration.\\n\\n\"));\n\t\t\texit(1);\n\t\t}\n\t}\n\treturn 0;\n}\n"
  },
  {
    "path": "support/kconfig/confdata.c",
    "content": "/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#include <sys/stat.h>\n#include <ctype.h>\n#include <errno.h>\n#include <fcntl.h>\n#include <stdarg.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <time.h>\n#include <unistd.h>\n#include <libgen.h>\n\n#include \"lkc.h\"\n\nstruct conf_printer {\n\tvoid (*print_symbol)(FILE *, struct symbol *, const char *, void *);\n\tvoid (*print_comment)(FILE *, const char *, void *);\n};\n\nstatic void conf_warning(const char *fmt, ...)\n\t__attribute__ ((format (printf, 1, 2)));\n\nstatic void conf_message(const char *fmt, ...)\n\t__attribute__ ((format (printf, 1, 2)));\n\nstatic const char *conf_filename;\nstatic int conf_lineno, conf_warnings;\n\nconst char conf_defname[] = \".defconfig\";\n\nstatic void conf_warning(const char *fmt, ...)\n{\n\tva_list ap;\n\tva_start(ap, fmt);\n\tfprintf(stderr, \"%s:%d:warning: \", conf_filename, conf_lineno);\n\tvfprintf(stderr, fmt, ap);\n\tfprintf(stderr, \"\\n\");\n\tva_end(ap);\n\tconf_warnings++;\n}\n\nstatic void conf_default_message_callback(const char *fmt, va_list ap)\n{\n\tprintf(\"#\\n# \");\n\tvprintf(fmt, ap);\n\tprintf(\"\\n#\\n\");\n}\n\nstatic void (*conf_message_callback) (const char *fmt, va_list ap) =\n\tconf_default_message_callback;\nvoid conf_set_message_callback(void (*fn) (const char *fmt, va_list ap))\n{\n\tconf_message_callback = fn;\n}\n\nstatic void conf_message(const char *fmt, ...)\n{\n\tva_list ap;\n\n\tva_start(ap, fmt);\n\tif (conf_message_callback)\n\t\tconf_message_callback(fmt, ap);\n\tva_end(ap);\n}\n\nconst char *conf_get_configname(void)\n{\n\tchar *name = getenv(\"BR2_CONFIG\");\n\n\treturn name ? name : \".config\";\n}\n\nconst char *conf_get_autoconfig_name(void)\n{\n\treturn getenv(\"KCONFIG_AUTOCONFIG\");\n}\n\nstatic char *conf_expand_value(const char *in)\n{\n\tstruct symbol *sym;\n\tconst char *src;\n\tstatic char res_value[SYMBOL_MAXLENGTH];\n\tchar *dst, name[SYMBOL_MAXLENGTH];\n\n\tres_value[0] = 0;\n\tdst = name;\n\twhile ((src = strchr(in, '$'))) {\n\t\tstrncat(res_value, in, src - in);\n\t\tsrc++;\n\t\tdst = name;\n\t\twhile (isalnum(*src) || *src == '_')\n\t\t\t*dst++ = *src++;\n\t\t*dst = 0;\n\t\tsym = sym_lookup(name, 0);\n\t\tsym_calc_value(sym);\n\t\tstrcat(res_value, sym_get_string_value(sym));\n\t\tin = src;\n\t}\n\tstrcat(res_value, in);\n\n\treturn res_value;\n}\n\nchar *conf_get_default_confname(void)\n{\n\tstruct stat buf;\n\tstatic char fullname[PATH_MAX+1];\n\tchar *env, *name;\n\n\tname = conf_expand_value(conf_defname);\n\tenv = getenv(SRCTREE);\n\tif (env) {\n\t\tsprintf(fullname, \"%s/%s\", env, name);\n\t\tif (!stat(fullname, &buf))\n\t\t\treturn fullname;\n\t}\n\treturn name;\n}\n\nstatic int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)\n{\n\tchar *p2;\n\n\tswitch (sym->type) {\n\tcase S_TRISTATE:\n\t\tif (p[0] == 'm') {\n\t\t\tsym->def[def].tri = mod;\n\t\t\tsym->flags |= def_flags;\n\t\t\tbreak;\n\t\t}\n\t\t/* fall through */\n\tcase S_BOOLEAN:\n\t\tif (p[0] == 'y') {\n\t\t\tsym->def[def].tri = yes;\n\t\t\tsym->flags |= def_flags;\n\t\t\tbreak;\n\t\t}\n\t\tif (p[0] == 'n') {\n\t\t\tsym->def[def].tri = no;\n\t\t\tsym->flags |= def_flags;\n\t\t\tbreak;\n\t\t}\n\t\tif (def != S_DEF_AUTO)\n\t\t\tconf_warning(\"symbol value '%s' invalid for %s\",\n\t\t\t\t     p, sym->name);\n\t\treturn 1;\n\tcase S_OTHER:\n\t\tif (*p != '\"') {\n\t\t\tfor (p2 = p; *p2 && !isspace(*p2); p2++)\n\t\t\t\t;\n\t\t\tsym->type = S_STRING;\n\t\t\tgoto done;\n\t\t}\n\t\t/* fall through */\n\tcase S_STRING:\n\t\tif (*p++ != '\"')\n\t\t\tbreak;\n\t\tfor (p2 = p; (p2 = strpbrk(p2, \"\\\"\\\\\")); p2++) {\n\t\t\tif (*p2 == '\"') {\n\t\t\t\t*p2 = 0;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmemmove(p2, p2 + 1, strlen(p2));\n\t\t}\n\t\tif (!p2) {\n\t\t\tif (def != S_DEF_AUTO)\n\t\t\t\tconf_warning(\"invalid string found\");\n\t\t\treturn 1;\n\t\t}\n\t\t/* fall through */\n\tcase S_INT:\n\tcase S_HEX:\n\tdone:\n\t\tif (sym_string_valid(sym, p)) {\n\t\t\tsym->def[def].val = xstrdup(p);\n\t\t\tsym->flags |= def_flags;\n\t\t} else {\n\t\t\tif (def != S_DEF_AUTO)\n\t\t\t\tconf_warning(\"symbol value '%s' invalid for %s\",\n\t\t\t\t\t     p, sym->name);\n\t\t\treturn 1;\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\t;\n\t}\n\treturn 0;\n}\n\n#define LINE_GROWTH 16\nstatic int add_byte(int c, char **lineptr, size_t slen, size_t *n)\n{\n\tchar *nline;\n\tsize_t new_size = slen + 1;\n\tif (new_size > *n) {\n\t\tnew_size += LINE_GROWTH - 1;\n\t\tnew_size *= 2;\n\t\tnline = xrealloc(*lineptr, new_size);\n\t\tif (!nline)\n\t\t\treturn -1;\n\n\t\t*lineptr = nline;\n\t\t*n = new_size;\n\t}\n\n\t(*lineptr)[slen] = c;\n\n\treturn 0;\n}\n\nstatic ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream)\n{\n\tchar *line = *lineptr;\n\tsize_t slen = 0;\n\n\tfor (;;) {\n\t\tint c = getc(stream);\n\n\t\tswitch (c) {\n\t\tcase '\\n':\n\t\t\tif (add_byte(c, &line, slen, n) < 0)\n\t\t\t\tgoto e_out;\n\t\t\tslen++;\n\t\t\t/* fall through */\n\t\tcase EOF:\n\t\t\tif (add_byte('\\0', &line, slen, n) < 0)\n\t\t\t\tgoto e_out;\n\t\t\t*lineptr = line;\n\t\t\tif (slen == 0)\n\t\t\t\treturn -1;\n\t\t\treturn slen;\n\t\tdefault:\n\t\t\tif (add_byte(c, &line, slen, n) < 0)\n\t\t\t\tgoto e_out;\n\t\t\tslen++;\n\t\t}\n\t}\n\ne_out:\n\tline[slen-1] = '\\0';\n\t*lineptr = line;\n\treturn -1;\n}\n\nint conf_read_simple(const char *name, int def)\n{\n\tFILE *in = NULL;\n\tchar   *line = NULL;\n\tsize_t  line_asize = 0;\n\tchar *p, *p2;\n\tstruct symbol *sym;\n\tint i, def_flags;\n\n\tif (name) {\n\t\tin = zconf_fopen(name);\n\t} else {\n\t\tstruct property *prop;\n\n\t\tname = conf_get_configname();\n\t\tin = zconf_fopen(name);\n\t\tif (in)\n\t\t\tgoto load;\n\t\tsym_add_change_count(1);\n\t\tif (!sym_defconfig_list)\n\t\t\treturn 1;\n\n\t\tfor_all_defaults(sym_defconfig_list, prop) {\n\t\t\tif (expr_calc_value(prop->visible.expr) == no ||\n\t\t\t    prop->expr->type != E_SYMBOL)\n\t\t\t\tcontinue;\n\t\t\tname = conf_expand_value(prop->expr->left.sym->name);\n\t\t\tin = zconf_fopen(name);\n\t\t\tif (in) {\n\t\t\t\tconf_message(_(\"using defaults found in %s\"),\n\t\t\t\t\t name);\n\t\t\t\tgoto load;\n\t\t\t}\n\t\t}\n\t}\n\tif (!in)\n\t\treturn 1;\n\nload:\n\tconf_filename = name;\n\tconf_lineno = 0;\n\tconf_warnings = 0;\n\n\tdef_flags = SYMBOL_DEF << def;\n\tfor_all_symbols(i, sym) {\n\t\tsym->flags |= SYMBOL_CHANGED;\n\t\tsym->flags &= ~(def_flags|SYMBOL_VALID);\n\t\tif (sym_is_choice(sym))\n\t\t\tsym->flags |= def_flags;\n\t\tswitch (sym->type) {\n\t\tcase S_INT:\n\t\tcase S_HEX:\n\t\tcase S_STRING:\n\t\t\tif (sym->def[def].val)\n\t\t\t\tfree(sym->def[def].val);\n\t\t\t/* fall through */\n\t\tdefault:\n\t\t\tsym->def[def].val = NULL;\n\t\t\tsym->def[def].tri = no;\n\t\t}\n\t}\n\n\twhile (compat_getline(&line, &line_asize, in) != -1) {\n\t\tconf_lineno++;\n\t\tsym = NULL;\n\t\tif (line[0] == '#') {\n\t\t\tif (memcmp(line + 2, CONFIG_, strlen(CONFIG_)))\n\t\t\t\tcontinue;\n\t\t\tp = strchr(line + 2 + strlen(CONFIG_), ' ');\n\t\t\tif (!p)\n\t\t\t\tcontinue;\n\t\t\t*p++ = 0;\n\t\t\tif (strncmp(p, \"is not set\", 10))\n\t\t\t\tcontinue;\n\t\t\tif (def == S_DEF_USER) {\n\t\t\t\tsym = sym_find(line + 2 + strlen(CONFIG_));\n\t\t\t\tif (!sym) {\n\t\t\t\t\tsym_add_change_count(1);\n\t\t\t\t\tgoto setsym;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsym = sym_lookup(line + 2 + strlen(CONFIG_), 0);\n\t\t\t\tif (sym->type == S_UNKNOWN)\n\t\t\t\t\tsym->type = S_BOOLEAN;\n\t\t\t}\n\t\t\tif (sym->flags & def_flags) {\n\t\t\t\tconf_warning(\"override: reassigning to symbol %s\", sym->name);\n\t\t\t}\n\t\t\tswitch (sym->type) {\n\t\t\tcase S_BOOLEAN:\n\t\t\tcase S_TRISTATE:\n\t\t\t\tsym->def[def].tri = no;\n\t\t\t\tsym->flags |= def_flags;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t;\n\t\t\t}\n\t\t} else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) {\n\t\t\tp = strchr(line + strlen(CONFIG_), '=');\n\t\t\tif (!p)\n\t\t\t\tcontinue;\n\t\t\t*p++ = 0;\n\t\t\tp2 = strchr(p, '\\n');\n\t\t\tif (p2) {\n\t\t\t\t*p2-- = 0;\n\t\t\t\tif (*p2 == '\\r')\n\t\t\t\t\t*p2 = 0;\n\t\t\t}\n\t\t\tif (def == S_DEF_USER) {\n\t\t\t\tsym = sym_find(line + strlen(CONFIG_));\n\t\t\t\tif (!sym) {\n\t\t\t\t\tsym_add_change_count(1);\n\t\t\t\t\tgoto setsym;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsym = sym_lookup(line + strlen(CONFIG_), 0);\n\t\t\t\tif (sym->type == S_UNKNOWN)\n\t\t\t\t\tsym->type = S_OTHER;\n\t\t\t}\n\t\t\tif (sym->flags & def_flags) {\n\t\t\t\tconf_warning(\"override: reassigning to symbol %s\", sym->name);\n\t\t\t}\n\t\t\tif (conf_set_sym_val(sym, def, def_flags, p))\n\t\t\t\tcontinue;\n\t\t} else {\n\t\t\tif (line[0] != '\\r' && line[0] != '\\n')\n\t\t\t\tconf_warning(\"unexpected data: %.*s\",\n\t\t\t\t\t     (int)strcspn(line, \"\\r\\n\"), line);\n\n\t\t\tcontinue;\n\t\t}\nsetsym:\n\t\tif (sym && sym_is_choice_value(sym)) {\n\t\t\tstruct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));\n\t\t\tswitch (sym->def[def].tri) {\n\t\t\tcase no:\n\t\t\t\tbreak;\n\t\t\tcase mod:\n\t\t\t\tif (cs->def[def].tri == yes) {\n\t\t\t\t\tconf_warning(\"%s creates inconsistent choice state\", sym->name);\n\t\t\t\t\tcs->flags &= ~def_flags;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase yes:\n\t\t\t\tif (cs->def[def].tri != no)\n\t\t\t\t\tconf_warning(\"override: %s changes choice state\", sym->name);\n\t\t\t\tcs->def[def].val = sym;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcs->def[def].tri = EXPR_OR(cs->def[def].tri, sym->def[def].tri);\n\t\t}\n\t}\n\tfree(line);\n\tfclose(in);\n\treturn 0;\n}\n\nint conf_read(const char *name)\n{\n\tstruct symbol *sym;\n\tint conf_unsaved = 0;\n\tint i;\n\n\tsym_set_change_count(0);\n\n\tif (conf_read_simple(name, S_DEF_USER)) {\n\t\tsym_calc_value(modules_sym);\n\t\treturn 1;\n\t}\n\n\tsym_calc_value(modules_sym);\n\n\tfor_all_symbols(i, sym) {\n\t\tsym_calc_value(sym);\n\t\tif (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO))\n\t\t\tcontinue;\n\t\tif (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) {\n\t\t\t/* check that calculated value agrees with saved value */\n\t\t\tswitch (sym->type) {\n\t\t\tcase S_BOOLEAN:\n\t\t\tcase S_TRISTATE:\n\t\t\t\tif (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym))\n\t\t\t\t\tbreak;\n\t\t\t\tif (!sym_is_choice(sym))\n\t\t\t\t\tcontinue;\n\t\t\t\t/* fall through */\n\t\t\tdefault:\n\t\t\t\tif (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val))\n\t\t\t\t\tcontinue;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE))\n\t\t\t/* no previous value and not saved */\n\t\t\tcontinue;\n\t\tconf_unsaved++;\n\t\t/* maybe print value in verbose mode... */\n\t}\n\n\tfor_all_symbols(i, sym) {\n\t\tif (sym_has_value(sym) && !sym_is_choice_value(sym)) {\n\t\t\t/* Reset values of generates values, so they'll appear\n\t\t\t * as new, if they should become visible, but that\n\t\t\t * doesn't quite work if the Kconfig and the saved\n\t\t\t * configuration disagree.\n\t\t\t */\n\t\t\tif (sym->visible == no && !conf_unsaved)\n\t\t\t\tsym->flags &= ~SYMBOL_DEF_USER;\n\t\t\tswitch (sym->type) {\n\t\t\tcase S_STRING:\n\t\t\tcase S_INT:\n\t\t\tcase S_HEX:\n\t\t\t\t/* Reset a string value if it's out of range */\n\t\t\t\tif (sym_string_within_range(sym, sym->def[S_DEF_USER].val))\n\t\t\t\t\tbreak;\n\t\t\t\tsym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER);\n\t\t\t\tconf_unsaved++;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tsym_add_change_count(conf_warnings || conf_unsaved);\n\n\treturn 0;\n}\n\n/*\n * Kconfig configuration printer\n *\n * This printer is used when generating the resulting configuration after\n * kconfig invocation and `defconfig' files. Unset symbol might be omitted by\n * passing a non-NULL argument to the printer.\n *\n */\nstatic void\nkconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)\n{\n\n\tswitch (sym->type) {\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\tif (*value == 'n') {\n\t\t\tbool skip_unset = (arg != NULL);\n\n\t\t\tif (!skip_unset)\n\t\t\t\tfprintf(fp, \"# %s%s is not set\\n\",\n\t\t\t\t    CONFIG_, sym->name);\n\t\t\treturn;\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\tfprintf(fp, \"%s%s=%s\\n\", CONFIG_, sym->name, value);\n}\n\nstatic void\nkconfig_print_comment(FILE *fp, const char *value, void *arg)\n{\n\tconst char *p = value;\n\tsize_t l;\n\n\tfor (;;) {\n\t\tl = strcspn(p, \"\\n\");\n\t\tfprintf(fp, \"#\");\n\t\tif (l) {\n\t\t\tfprintf(fp, \" \");\n\t\t\txfwrite(p, l, 1, fp);\n\t\t\tp += l;\n\t\t}\n\t\tfprintf(fp, \"\\n\");\n\t\tif (*p++ == '\\0')\n\t\t\tbreak;\n\t}\n}\n\nstatic struct conf_printer kconfig_printer_cb =\n{\n\t.print_symbol = kconfig_print_symbol,\n\t.print_comment = kconfig_print_comment,\n};\n\n/*\n * Header printer\n *\n * This printer is used when generating the `include/generated/autoconf.h' file.\n */\nstatic void\nheader_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)\n{\n\n\tswitch (sym->type) {\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE: {\n\t\tconst char *suffix = \"\";\n\n\t\tswitch (*value) {\n\t\tcase 'n':\n\t\t\tbreak;\n\t\tcase 'm':\n\t\t\tsuffix = \"_MODULE\";\n\t\t\t/* fall through */\n\t\tdefault:\n\t\t\tfprintf(fp, \"#define %s%s%s 1\\n\",\n\t\t\t    CONFIG_, sym->name, suffix);\n\t\t}\n\t\tbreak;\n\t}\n\tcase S_HEX: {\n\t\tconst char *prefix = \"\";\n\n\t\tif (value[0] != '0' || (value[1] != 'x' && value[1] != 'X'))\n\t\t\tprefix = \"0x\";\n\t\tfprintf(fp, \"#define %s%s %s%s\\n\",\n\t\t    CONFIG_, sym->name, prefix, value);\n\t\tbreak;\n\t}\n\tcase S_STRING:\n\tcase S_INT:\n\t\tfprintf(fp, \"#define %s%s %s\\n\",\n\t\t    CONFIG_, sym->name, value);\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n}\n\nstatic void\nheader_print_comment(FILE *fp, const char *value, void *arg)\n{\n\tconst char *p = value;\n\tsize_t l;\n\n\tfprintf(fp, \"/*\\n\");\n\tfor (;;) {\n\t\tl = strcspn(p, \"\\n\");\n\t\tfprintf(fp, \" *\");\n\t\tif (l) {\n\t\t\tfprintf(fp, \" \");\n\t\t\txfwrite(p, l, 1, fp);\n\t\t\tp += l;\n\t\t}\n\t\tfprintf(fp, \"\\n\");\n\t\tif (*p++ == '\\0')\n\t\t\tbreak;\n\t}\n\tfprintf(fp, \" */\\n\");\n}\n\nstatic struct conf_printer header_printer_cb =\n{\n\t.print_symbol = header_print_symbol,\n\t.print_comment = header_print_comment,\n};\n\n/*\n * Tristate printer\n *\n * This printer is used when generating the `include/config/tristate.conf' file.\n */\nstatic void\ntristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)\n{\n\n\tif (sym->type == S_TRISTATE && *value != 'n')\n\t\tfprintf(fp, \"%s%s=%c\\n\", CONFIG_, sym->name, (char)toupper(*value));\n}\n\nstatic struct conf_printer tristate_printer_cb =\n{\n\t.print_symbol = tristate_print_symbol,\n\t.print_comment = kconfig_print_comment,\n};\n\nstatic void conf_write_symbol(FILE *fp, struct symbol *sym,\n\t\t\t      struct conf_printer *printer, void *printer_arg)\n{\n\tconst char *str;\n\n\tswitch (sym->type) {\n\tcase S_OTHER:\n\tcase S_UNKNOWN:\n\t\tbreak;\n\tcase S_STRING:\n\t\tstr = sym_get_string_value(sym);\n\t\tstr = sym_escape_string_value(str);\n\t\tprinter->print_symbol(fp, sym, str, printer_arg);\n\t\tfree((void *)str);\n\t\tbreak;\n\tdefault:\n\t\tstr = sym_get_string_value(sym);\n\t\tprinter->print_symbol(fp, sym, str, printer_arg);\n\t}\n}\n\nstatic void\nconf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg)\n{\n\tchar buf[256];\n\n\tsnprintf(buf, sizeof(buf),\n\t    \"\\n\"\n\t    \"Automatically generated file; DO NOT EDIT.\\n\"\n\t    \"%s\\n\",\n\t    rootmenu.prompt->text);\n\n\tprinter->print_comment(fp, buf, printer_arg);\n}\n\n/*\n * Write out a minimal config.\n * All values that has default values are skipped as this is redundant.\n */\nint conf_write_defconfig(const char *filename)\n{\n\tstruct symbol *sym;\n\tstruct menu *menu;\n\tFILE *out;\n\n\tout = fopen(filename, \"w\");\n\tif (!out)\n\t\treturn 1;\n\n\tsym_clear_all_valid();\n\n\t/* Traverse all menus to find all relevant symbols */\n\tmenu = rootmenu.list;\n\n\twhile (menu != NULL)\n\t{\n\t\tsym = menu->sym;\n\t\tif (sym == NULL) {\n\t\t\tif (!menu_is_visible(menu))\n\t\t\t\tgoto next_menu;\n\t\t} else if (!sym_is_choice(sym)) {\n\t\t\tsym_calc_value(sym);\n\t\t\tif (!(sym->flags & SYMBOL_WRITE))\n\t\t\t\tgoto next_menu;\n\t\t\tsym->flags &= ~SYMBOL_WRITE;\n\t\t\t/* If we cannot change the symbol - skip */\n\t\t\tif (!sym_is_changable(sym))\n\t\t\t\tgoto next_menu;\n\t\t\t/* If symbol equals to default value - skip */\n\t\t\tif (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0)\n\t\t\t\tgoto next_menu;\n\n\t\t\t/*\n\t\t\t * If symbol is a choice value and equals to the\n\t\t\t * default for a choice - skip.\n\t\t\t * But only if value is bool and equal to \"y\" and\n\t\t\t * choice is not \"optional\".\n\t\t\t * (If choice is \"optional\" then all values can be \"n\")\n\t\t\t */\n\t\t\tif (sym_is_choice_value(sym)) {\n\t\t\t\tstruct symbol *cs;\n\t\t\t\tstruct symbol *ds;\n\n\t\t\t\tcs = prop_get_symbol(sym_get_choice_prop(sym));\n\t\t\t\tds = sym_choice_default(cs);\n\t\t\t\tif (!sym_is_optional(cs) && sym == ds) {\n\t\t\t\t\tif ((sym->type == S_BOOLEAN) &&\n\t\t\t\t\t    sym_get_tristate_value(sym) == yes)\n\t\t\t\t\t\tgoto next_menu;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconf_write_symbol(out, sym, &kconfig_printer_cb, NULL);\n\t\t}\nnext_menu:\n\t\tif (menu->list != NULL) {\n\t\t\tmenu = menu->list;\n\t\t}\n\t\telse if (menu->next != NULL) {\n\t\t\tmenu = menu->next;\n\t\t} else {\n\t\t\twhile ((menu = menu->parent)) {\n\t\t\t\tif (menu->next != NULL) {\n\t\t\t\t\tmenu = menu->next;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfclose(out);\n\treturn 0;\n}\n\nint conf_write(const char *name)\n{\n\tFILE *out;\n\tstruct symbol *sym;\n\tstruct menu *menu;\n\tconst char *basename;\n\tconst char *str;\n\tchar dirname[PATH_MAX+1], tmpname[PATH_MAX+20], newname[PATH_MAX+1];\n\tchar *env;\n\n\tif (!name)\n\t\tname = conf_get_configname();\n\n\tdirname[0] = 0;\n\tif (name && name[0]) {\n\t\tstruct stat st;\n\t\tchar *slash;\n\n\t\tif (!stat(name, &st) && S_ISDIR(st.st_mode)) {\n\t\t\tstrcpy(dirname, name);\n\t\t\tstrcat(dirname, \"/\");\n\t\t\tbasename = conf_get_configname();\n\t\t} else if ((slash = strrchr(name, '/'))) {\n\t\t\tint size = slash - name + 1;\n\t\t\tmemcpy(dirname, name, size);\n\t\t\tdirname[size] = 0;\n\t\t\tif (slash[1])\n\t\t\t\tbasename = slash + 1;\n\t\t\telse\n\t\t\t\tbasename = conf_get_configname();\n\t\t} else\n\t\t\tbasename = name;\n\t} else\n\t\tbasename = conf_get_configname();\n\n\tsprintf(newname, \"%s%s\", dirname, basename);\n\tenv = getenv(\"KCONFIG_OVERWRITECONFIG\");\n\tif (!env || !*env) {\n\t\tsprintf(tmpname, \"%s.tmpconfig.%d\", dirname, (int)getpid());\n\t\tout = fopen(tmpname, \"w\");\n\t} else {\n\t\t*tmpname = 0;\n\t\tout = fopen(newname, \"w\");\n\t}\n\tif (!out)\n\t\treturn 1;\n\n\tconf_write_heading(out, &kconfig_printer_cb, NULL);\n\n\tif (!conf_get_changed())\n\t\tsym_clear_all_valid();\n\n\tmenu = rootmenu.list;\n\twhile (menu) {\n\t\tsym = menu->sym;\n\t\tif (!sym) {\n\t\t\tif (!menu_is_visible(menu))\n\t\t\t\tgoto next;\n\t\t\tstr = menu_get_prompt(menu);\n\t\t\tfprintf(out, \"\\n\"\n\t\t\t\t     \"#\\n\"\n\t\t\t\t     \"# %s\\n\"\n\t\t\t\t     \"#\\n\", str);\n\t\t} else if (!(sym->flags & SYMBOL_CHOICE)) {\n\t\t\tsym_calc_value(sym);\n\t\t\tif (!(sym->flags & SYMBOL_WRITE))\n\t\t\t\tgoto next;\n\t\t\tsym->flags &= ~SYMBOL_WRITE;\n\n\t\t\tconf_write_symbol(out, sym, &kconfig_printer_cb, NULL);\n\t\t}\n\nnext:\n\t\tif (menu->list) {\n\t\t\tmenu = menu->list;\n\t\t\tcontinue;\n\t\t}\n\t\tif (menu->next)\n\t\t\tmenu = menu->next;\n\t\telse while ((menu = menu->parent)) {\n\t\t\tif (menu->next) {\n\t\t\t\tmenu = menu->next;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tfclose(out);\n\n\tif (*tmpname) {\n\t\tstrcat(dirname, basename);\n\t\tstrcat(dirname, \".old\");\n\t\trename(newname, dirname);\n\t\tif (rename(tmpname, newname))\n\t\t\treturn 1;\n\t}\n\n\tconf_message(_(\"configuration written to %s\"), newname);\n\n\tsym_set_change_count(0);\n\n\treturn 0;\n}\n\nstatic int conf_split_config(void)\n{\n\tconst char *name;\n\tchar path[PATH_MAX+1];\n\tchar *opwd, *dir, *_name;\n\tchar *s, *d, c;\n\tstruct symbol *sym;\n\tstruct stat sb;\n\tint res, i, fd;\n\n\tname = conf_get_autoconfig_name();\n\tconf_read_simple(name, S_DEF_AUTO);\n\tsym_calc_value(modules_sym);\n\n\topwd = malloc(256);\n\t_name = strdup(name);\n\tif (opwd == NULL || _name == NULL)\n \t\treturn 1;\n\topwd = getcwd(opwd, 256);\n\tdir = dirname(_name);\n\tif (dir == NULL) {\n\t\tres = 1;\n\t\tgoto err;\n\t}\n\tif (chdir(dir)) {\n\t\tres = 1;\n\t\tgoto err;\n\t}\n\n\tres = 0;\n\tfor_all_symbols(i, sym) {\n\t\tsym_calc_value(sym);\n\t\tif ((sym->flags & SYMBOL_AUTO) || !sym->name)\n\t\t\tcontinue;\n\t\tif (sym->flags & SYMBOL_WRITE) {\n\t\t\tif (sym->flags & SYMBOL_DEF_AUTO) {\n\t\t\t\t/*\n\t\t\t\t * symbol has old and new value,\n\t\t\t\t * so compare them...\n\t\t\t\t */\n\t\t\t\tswitch (sym->type) {\n\t\t\t\tcase S_BOOLEAN:\n\t\t\t\tcase S_TRISTATE:\n\t\t\t\t\tif (sym_get_tristate_value(sym) ==\n\t\t\t\t\t    sym->def[S_DEF_AUTO].tri)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_STRING:\n\t\t\t\tcase S_HEX:\n\t\t\t\tcase S_INT:\n\t\t\t\t\tif (!strcmp(sym_get_string_value(sym),\n\t\t\t\t\t\t    sym->def[S_DEF_AUTO].val))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t/*\n\t\t\t\t * If there is no old value, only 'no' (unset)\n\t\t\t\t * is allowed as new value.\n\t\t\t\t */\n\t\t\t\tswitch (sym->type) {\n\t\t\t\tcase S_BOOLEAN:\n\t\t\t\tcase S_TRISTATE:\n\t\t\t\t\tif (sym_get_tristate_value(sym) == no)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!(sym->flags & SYMBOL_DEF_AUTO))\n\t\t\t/* There is neither an old nor a new value. */\n\t\t\tcontinue;\n\t\t/* else\n\t\t *\tThere is an old value, but no new value ('no' (unset)\n\t\t *\tisn't saved in auto.conf, so the old value is always\n\t\t *\tdifferent from 'no').\n\t\t */\n\n\t\t/* Replace all '_' and append \".h\" */\n\t\ts = sym->name;\n\t\td = path;\n\t\twhile ((c = *s++)) {\n\t\t\tc = tolower(c);\n\t\t\t*d++ = (c == '_') ? '/' : c;\n\t\t}\n\t\tstrcpy(d, \".h\");\n\n\t\t/* Assume directory path already exists. */\n\t\tfd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);\n\t\tif (fd == -1) {\n\t\t\tif (errno != ENOENT) {\n\t\t\t\tres = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/*\n\t\t\t * Create directory components,\n\t\t\t * unless they exist already.\n\t\t\t */\n\t\t\td = path;\n\t\t\twhile ((d = strchr(d, '/'))) {\n\t\t\t\t*d = 0;\n\t\t\t\tif (stat(path, &sb) && mkdir(path, 0755)) {\n\t\t\t\t\tres = 1;\n\t\t\t\t\tgoto out;\n\t\t\t\t}\n\t\t\t\t*d++ = '/';\n\t\t\t}\n\t\t\t/* Try it again. */\n\t\t\tfd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);\n\t\t\tif (fd == -1) {\n\t\t\t\tres = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tclose(fd);\n\t}\nout:\n\tif (chdir(opwd))\n\t\tres = 1;\nerr:\n\tfree(opwd);\n\tfree(_name);\n\treturn res;\n}\n\nint conf_write_autoconf(void)\n{\n\tstruct symbol *sym;\n\tconst char *name;\n\tFILE *out, *tristate, *out_h;\n\tint i;\n\tchar dir[PATH_MAX+1], buf[PATH_MAX+20];\n\tchar *s;\n\n\tstrcpy(dir, conf_get_configname());\n\ts = strrchr(dir, '/');\n\tif (s)\n\t\ts[1] = 0;\n\telse\n\t\tdir[0] = 0;\n\n\tsym_clear_all_valid();\n\n\tsprintf(buf, \"%s.config.cmd\", dir);\n\tfile_write_dep(buf);\n\n\tif (conf_split_config())\n\t\treturn 1;\n\n\tsprintf(buf, \"%s.tmpconfig\", dir);\n\tout = fopen(buf, \"w\");\n\tif (!out)\n\t\treturn 1;\n\n\tsprintf(buf, \"%s.tmpconfig_tristate\", dir);\n\ttristate = fopen(buf, \"w\");\n\tif (!tristate) {\n\t\tfclose(out);\n\t\treturn 1;\n\t}\n\n\tsprintf(buf, \"%s.tmpconfig.h\", dir);\n\tout_h = fopen(buf, \"w\");\n\tif (!out_h) {\n\t\tfclose(out);\n\t\tfclose(tristate);\n\t\treturn 1;\n\t}\n\n\tconf_write_heading(out, &kconfig_printer_cb, NULL);\n\n\tconf_write_heading(tristate, &tristate_printer_cb, NULL);\n\n\tconf_write_heading(out_h, &header_printer_cb, NULL);\n\n\tfor_all_symbols(i, sym) {\n\t\tsym_calc_value(sym);\n\t\tif (!(sym->flags & SYMBOL_WRITE) || !sym->name)\n\t\t\tcontinue;\n\n\t\t/* write symbol to auto.conf, tristate and header files */\n\t\tconf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1);\n\n\t\tconf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1);\n\n\t\tconf_write_symbol(out_h, sym, &header_printer_cb, NULL);\n\t}\n\tfclose(out);\n\tfclose(tristate);\n\tfclose(out_h);\n\n\tname = getenv(\"KCONFIG_AUTOHEADER\");\n\tif (!name)\n\t\tname = \"include/generated/autoconf.h\";\n\tsprintf(buf, \"%s.tmpconfig.h\", dir);\n\tif (rename(buf, name))\n\t\treturn 1;\n\tname = getenv(\"KCONFIG_TRISTATE\");\n\tif (!name)\n\t\tname = \"include/config/tristate.conf\";\n\tsprintf(buf, \"%s.tmpconfig_tristate\", dir);\n\tif (rename(buf, name))\n\t\treturn 1;\n\tname = conf_get_autoconfig_name();\n\t/*\n\t * This must be the last step, kbuild has a dependency on auto.conf\n\t * and this marks the successful completion of the previous steps.\n\t */\n\tsprintf(buf, \"%s.tmpconfig\", dir);\n\tif (rename(buf, name))\n\t\treturn 1;\n\n\treturn 0;\n}\n\nstatic int sym_change_count;\nstatic void (*conf_changed_callback)(void);\n\nvoid sym_set_change_count(int count)\n{\n\tint _sym_change_count = sym_change_count;\n\tsym_change_count = count;\n\tif (conf_changed_callback &&\n\t    (bool)_sym_change_count != (bool)count)\n\t\tconf_changed_callback();\n}\n\nvoid sym_add_change_count(int count)\n{\n\tsym_set_change_count(count + sym_change_count);\n}\n\nbool conf_get_changed(void)\n{\n\treturn sym_change_count;\n}\n\nvoid conf_set_changed_callback(void (*fn)(void))\n{\n\tconf_changed_callback = fn;\n}\n\nstatic bool randomize_choice_values(struct symbol *csym)\n{\n\tstruct property *prop;\n\tstruct symbol *sym;\n\tstruct expr *e;\n\tint cnt, def;\n\n\t/*\n\t * If choice is mod then we may have more items selected\n\t * and if no then no-one.\n\t * In both cases stop.\n\t */\n\tif (csym->curr.tri != yes)\n\t\treturn false;\n\n\tprop = sym_get_choice_prop(csym);\n\n\t/* count entries in choice block */\n\tcnt = 0;\n\texpr_list_for_each_sym(prop->expr, e, sym)\n\t\tcnt++;\n\n\t/*\n\t * find a random value and set it to yes,\n\t * set the rest to no so we have only one set\n\t */\n\tdef = (rand() % cnt);\n\n\tcnt = 0;\n\texpr_list_for_each_sym(prop->expr, e, sym) {\n\t\tif (def == cnt++) {\n\t\t\tsym->def[S_DEF_USER].tri = yes;\n\t\t\tcsym->def[S_DEF_USER].val = sym;\n\t\t}\n\t\telse {\n\t\t\tsym->def[S_DEF_USER].tri = no;\n\t\t}\n\t\tsym->flags |= SYMBOL_DEF_USER;\n\t\t/* clear VALID to get value calculated */\n\t\tsym->flags &= ~SYMBOL_VALID;\n\t}\n\tcsym->flags |= SYMBOL_DEF_USER;\n\t/* clear VALID to get value calculated */\n\tcsym->flags &= ~(SYMBOL_VALID);\n\n\treturn true;\n}\n\nvoid set_all_choice_values(struct symbol *csym)\n{\n\tstruct property *prop;\n\tstruct symbol *sym;\n\tstruct expr *e;\n\n\tprop = sym_get_choice_prop(csym);\n\n\t/*\n\t * Set all non-assinged choice values to no\n\t */\n\texpr_list_for_each_sym(prop->expr, e, sym) {\n\t\tif (!sym_has_value(sym))\n\t\t\tsym->def[S_DEF_USER].tri = no;\n\t}\n\tcsym->flags |= SYMBOL_DEF_USER;\n\t/* clear VALID to get value calculated */\n\tcsym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES);\n}\n\nbool conf_set_all_new_symbols(enum conf_def_mode mode)\n{\n\tstruct symbol *sym, *csym;\n\tint i, cnt, pby, pty, ptm;\t/* pby: probability of bool     = y\n\t\t\t\t\t * pty: probability of tristate = y\n\t\t\t\t\t * ptm: probability of tristate = m\n\t\t\t\t\t */\n\n\tpby = 50; pty = ptm = 33; /* can't go as the default in switch-case\n\t\t\t\t   * below, otherwise gcc whines about\n\t\t\t\t   * -Wmaybe-uninitialized */\n\tif (mode == def_random) {\n\t\tint n, p[3];\n\t\tchar *env = getenv(\"KCONFIG_PROBABILITY\");\n\t\tn = 0;\n\t\twhile( env && *env ) {\n\t\t\tchar *endp;\n\t\t\tint tmp = strtol( env, &endp, 10 );\n\t\t\tif( tmp >= 0 && tmp <= 100 ) {\n\t\t\t\tp[n++] = tmp;\n\t\t\t} else {\n\t\t\t\terrno = ERANGE;\n\t\t\t\tperror( \"KCONFIG_PROBABILITY\" );\n\t\t\t\texit( 1 );\n\t\t\t}\n\t\t\tenv = (*endp == ':') ? endp+1 : endp;\n\t\t\tif( n >=3 ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tswitch( n ) {\n\t\tcase 1:\n\t\t\tpby = p[0]; ptm = pby/2; pty = pby-ptm;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tpty = p[0]; ptm = p[1]; pby = pty + ptm;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tpby = p[0]; pty = p[1]; ptm = p[2];\n\t\t\tbreak;\n\t\t}\n\n\t\tif( pty+ptm > 100 ) {\n\t\t\terrno = ERANGE;\n\t\t\tperror( \"KCONFIG_PROBABILITY\" );\n\t\t\texit( 1 );\n\t\t}\n\t}\n\tbool has_changed = false;\n\n\tfor_all_symbols(i, sym) {\n\t\tif (sym_has_value(sym) || (sym->flags & SYMBOL_VALID))\n\t\t\tcontinue;\n\t\tswitch (sym_get_type(sym)) {\n\t\tcase S_BOOLEAN:\n\t\tcase S_TRISTATE:\n\t\t\thas_changed = true;\n\t\t\tswitch (mode) {\n\t\t\tcase def_yes:\n\t\t\t\tsym->def[S_DEF_USER].tri = yes;\n\t\t\t\tbreak;\n\t\t\tcase def_mod:\n\t\t\t\tsym->def[S_DEF_USER].tri = mod;\n\t\t\t\tbreak;\n\t\t\tcase def_no:\n\t\t\t\tif (sym->flags & SYMBOL_ALLNOCONFIG_Y)\n\t\t\t\t\tsym->def[S_DEF_USER].tri = yes;\n\t\t\t\telse\n\t\t\t\t\tsym->def[S_DEF_USER].tri = no;\n\t\t\t\tbreak;\n\t\t\tcase def_random:\n\t\t\t\tsym->def[S_DEF_USER].tri = no;\n\t\t\t\tcnt = rand() % 100;\n\t\t\t\tif (sym->type == S_TRISTATE) {\n\t\t\t\t\tif (cnt < pty)\n\t\t\t\t\t\tsym->def[S_DEF_USER].tri = yes;\n\t\t\t\t\telse if (cnt < (pty+ptm))\n\t\t\t\t\t\tsym->def[S_DEF_USER].tri = mod;\n\t\t\t\t} else if (cnt < pby)\n\t\t\t\t\tsym->def[S_DEF_USER].tri = yes;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!(sym_is_choice(sym) && mode == def_random))\n\t\t\t\tsym->flags |= SYMBOL_DEF_USER;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t}\n\n\tsym_clear_all_valid();\n\n\t/*\n\t * We have different type of choice blocks.\n\t * If curr.tri equals to mod then we can select several\n\t * choice symbols in one block.\n\t * In this case we do nothing.\n\t * If curr.tri equals yes then only one symbol can be\n\t * selected in a choice block and we set it to yes,\n\t * and the rest to no.\n\t */\n\tif (mode != def_random) {\n\t\tfor_all_symbols(i, csym) {\n\t\t\tif ((sym_is_choice(csym) && !sym_has_value(csym)) ||\n\t\t\t    sym_is_choice_value(csym))\n\t\t\t\tcsym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES;\n\t\t}\n\t}\n\n\tfor_all_symbols(i, csym) {\n\t\tif (sym_has_value(csym) || !sym_is_choice(csym))\n\t\t\tcontinue;\n\n\t\tsym_calc_value(csym);\n\t\tif (mode == def_random)\n\t\t\thas_changed = randomize_choice_values(csym);\n\t\telse {\n\t\t\tset_all_choice_values(csym);\n\t\t\thas_changed = true;\n\t\t}\n\t}\n\n\treturn has_changed;\n}\n"
  },
  {
    "path": "support/kconfig/expr.c",
    "content": "/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n#include \"lkc.h\"\n\n#define DEBUG_EXPR\t0\n\nstatic int expr_eq(struct expr *e1, struct expr *e2);\nstatic struct expr *expr_eliminate_yn(struct expr *e);\n\nstruct expr *expr_alloc_symbol(struct symbol *sym)\n{\n\tstruct expr *e = xcalloc(1, sizeof(*e));\n\te->type = E_SYMBOL;\n\te->left.sym = sym;\n\treturn e;\n}\n\nstruct expr *expr_alloc_one(enum expr_type type, struct expr *ce)\n{\n\tstruct expr *e = xcalloc(1, sizeof(*e));\n\te->type = type;\n\te->left.expr = ce;\n\treturn e;\n}\n\nstruct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2)\n{\n\tstruct expr *e = xcalloc(1, sizeof(*e));\n\te->type = type;\n\te->left.expr = e1;\n\te->right.expr = e2;\n\treturn e;\n}\n\nstruct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2)\n{\n\tstruct expr *e = xcalloc(1, sizeof(*e));\n\te->type = type;\n\te->left.sym = s1;\n\te->right.sym = s2;\n\treturn e;\n}\n\nstruct expr *expr_alloc_and(struct expr *e1, struct expr *e2)\n{\n\tif (!e1)\n\t\treturn e2;\n\treturn e2 ? expr_alloc_two(E_AND, e1, e2) : e1;\n}\n\nstruct expr *expr_alloc_or(struct expr *e1, struct expr *e2)\n{\n\tif (!e1)\n\t\treturn e2;\n\treturn e2 ? expr_alloc_two(E_OR, e1, e2) : e1;\n}\n\nstruct expr *expr_copy(const struct expr *org)\n{\n\tstruct expr *e;\n\n\tif (!org)\n\t\treturn NULL;\n\n\te = xmalloc(sizeof(*org));\n\tmemcpy(e, org, sizeof(*org));\n\tswitch (org->type) {\n\tcase E_SYMBOL:\n\t\te->left = org->left;\n\t\tbreak;\n\tcase E_NOT:\n\t\te->left.expr = expr_copy(org->left.expr);\n\t\tbreak;\n\tcase E_EQUAL:\n\tcase E_GEQ:\n\tcase E_GTH:\n\tcase E_LEQ:\n\tcase E_LTH:\n\tcase E_UNEQUAL:\n\t\te->left.sym = org->left.sym;\n\t\te->right.sym = org->right.sym;\n\t\tbreak;\n\tcase E_AND:\n\tcase E_OR:\n\tcase E_LIST:\n\t\te->left.expr = expr_copy(org->left.expr);\n\t\te->right.expr = expr_copy(org->right.expr);\n\t\tbreak;\n\tdefault:\n\t\tfprintf(stderr, \"can't copy type %d\\n\", e->type);\n\t\tfree(e);\n\t\te = NULL;\n\t\tbreak;\n\t}\n\n\treturn e;\n}\n\nvoid expr_free(struct expr *e)\n{\n\tif (!e)\n\t\treturn;\n\n\tswitch (e->type) {\n\tcase E_SYMBOL:\n\t\tbreak;\n\tcase E_NOT:\n\t\texpr_free(e->left.expr);\n\t\tbreak;\n\tcase E_EQUAL:\n\tcase E_GEQ:\n\tcase E_GTH:\n\tcase E_LEQ:\n\tcase E_LTH:\n\tcase E_UNEQUAL:\n\t\tbreak;\n\tcase E_OR:\n\tcase E_AND:\n\t\texpr_free(e->left.expr);\n\t\texpr_free(e->right.expr);\n\t\tbreak;\n\tdefault:\n\t\tfprintf(stderr, \"how to free type %d?\\n\", e->type);\n\t\tbreak;\n\t}\n\tfree(e);\n}\n\nstatic int trans_count;\n\n#define e1 (*ep1)\n#define e2 (*ep2)\n\n/*\n * expr_eliminate_eq() helper.\n *\n * Walks the two expression trees given in 'ep1' and 'ep2'. Any node that does\n * not have type 'type' (E_OR/E_AND) is considered a leaf, and is compared\n * against all other leaves. Two equal leaves are both replaced with either 'y'\n * or 'n' as appropriate for 'type', to be eliminated later.\n */\nstatic void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2)\n{\n\t/* Recurse down to leaves */\n\n\tif (e1->type == type) {\n\t\t__expr_eliminate_eq(type, &e1->left.expr, &e2);\n\t\t__expr_eliminate_eq(type, &e1->right.expr, &e2);\n\t\treturn;\n\t}\n\tif (e2->type == type) {\n\t\t__expr_eliminate_eq(type, &e1, &e2->left.expr);\n\t\t__expr_eliminate_eq(type, &e1, &e2->right.expr);\n\t\treturn;\n\t}\n\n\t/* e1 and e2 are leaves. Compare them. */\n\n\tif (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&\n\t    e1->left.sym == e2->left.sym &&\n\t    (e1->left.sym == &symbol_yes || e1->left.sym == &symbol_no))\n\t\treturn;\n\tif (!expr_eq(e1, e2))\n\t\treturn;\n\n\t/* e1 and e2 are equal leaves. Prepare them for elimination. */\n\n\ttrans_count++;\n\texpr_free(e1); expr_free(e2);\n\tswitch (type) {\n\tcase E_OR:\n\t\te1 = expr_alloc_symbol(&symbol_no);\n\t\te2 = expr_alloc_symbol(&symbol_no);\n\t\tbreak;\n\tcase E_AND:\n\t\te1 = expr_alloc_symbol(&symbol_yes);\n\t\te2 = expr_alloc_symbol(&symbol_yes);\n\t\tbreak;\n\tdefault:\n\t\t;\n\t}\n}\n\n/*\n * Rewrites the expressions 'ep1' and 'ep2' to remove operands common to both.\n * Example reductions:\n *\n *\tep1: A && B           ->  ep1: y\n *\tep2: A && B && C      ->  ep2: C\n *\n *\tep1: A || B           ->  ep1: n\n *\tep2: A || B || C      ->  ep2: C\n *\n *\tep1: A && (B && FOO)  ->  ep1: FOO\n *\tep2: (BAR && B) && A  ->  ep2: BAR\n *\n *\tep1: A && (B || C)    ->  ep1: y\n *\tep2: (C || B) && A    ->  ep2: y\n *\n * Comparisons are done between all operands at the same \"level\" of && or ||.\n * For example, in the expression 'e1 && (e2 || e3) && (e4 || e5)', the\n * following operands will be compared:\n *\n *\t- 'e1', 'e2 || e3', and 'e4 || e5', against each other\n *\t- e2 against e3\n *\t- e4 against e5\n *\n * Parentheses are irrelevant within a single level. 'e1 && (e2 && e3)' and\n * '(e1 && e2) && e3' are both a single level.\n *\n * See __expr_eliminate_eq() as well.\n */\nvoid expr_eliminate_eq(struct expr **ep1, struct expr **ep2)\n{\n\tif (!e1 || !e2)\n\t\treturn;\n\tswitch (e1->type) {\n\tcase E_OR:\n\tcase E_AND:\n\t\t__expr_eliminate_eq(e1->type, ep1, ep2);\n\tdefault:\n\t\t;\n\t}\n\tif (e1->type != e2->type) switch (e2->type) {\n\tcase E_OR:\n\tcase E_AND:\n\t\t__expr_eliminate_eq(e2->type, ep1, ep2);\n\tdefault:\n\t\t;\n\t}\n\te1 = expr_eliminate_yn(e1);\n\te2 = expr_eliminate_yn(e2);\n}\n\n#undef e1\n#undef e2\n\n/*\n * Returns true if 'e1' and 'e2' are equal, after minor simplification. Two\n * &&/|| expressions are considered equal if every operand in one expression\n * equals some operand in the other (operands do not need to appear in the same\n * order), recursively.\n */\nstatic int expr_eq(struct expr *e1, struct expr *e2)\n{\n\tint res, old_count;\n\n\tif (e1->type != e2->type)\n\t\treturn 0;\n\tswitch (e1->type) {\n\tcase E_EQUAL:\n\tcase E_GEQ:\n\tcase E_GTH:\n\tcase E_LEQ:\n\tcase E_LTH:\n\tcase E_UNEQUAL:\n\t\treturn e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym;\n\tcase E_SYMBOL:\n\t\treturn e1->left.sym == e2->left.sym;\n\tcase E_NOT:\n\t\treturn expr_eq(e1->left.expr, e2->left.expr);\n\tcase E_AND:\n\tcase E_OR:\n\t\te1 = expr_copy(e1);\n\t\te2 = expr_copy(e2);\n\t\told_count = trans_count;\n\t\texpr_eliminate_eq(&e1, &e2);\n\t\tres = (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&\n\t\t       e1->left.sym == e2->left.sym);\n\t\texpr_free(e1);\n\t\texpr_free(e2);\n\t\ttrans_count = old_count;\n\t\treturn res;\n\tcase E_LIST:\n\tcase E_RANGE:\n\tcase E_NONE:\n\t\t/* panic */;\n\t}\n\n\tif (DEBUG_EXPR) {\n\t\texpr_fprint(e1, stdout);\n\t\tprintf(\" = \");\n\t\texpr_fprint(e2, stdout);\n\t\tprintf(\" ?\\n\");\n\t}\n\n\treturn 0;\n}\n\n/*\n * Recursively performs the following simplifications in-place (as well as the\n * corresponding simplifications with swapped operands):\n *\n *\texpr && n  ->  n\n *\texpr && y  ->  expr\n *\texpr || n  ->  expr\n *\texpr || y  ->  y\n *\n * Returns the optimized expression.\n */\nstatic struct expr *expr_eliminate_yn(struct expr *e)\n{\n\tstruct expr *tmp;\n\n\tif (e) switch (e->type) {\n\tcase E_AND:\n\t\te->left.expr = expr_eliminate_yn(e->left.expr);\n\t\te->right.expr = expr_eliminate_yn(e->right.expr);\n\t\tif (e->left.expr->type == E_SYMBOL) {\n\t\t\tif (e->left.expr->left.sym == &symbol_no) {\n\t\t\t\texpr_free(e->left.expr);\n\t\t\t\texpr_free(e->right.expr);\n\t\t\t\te->type = E_SYMBOL;\n\t\t\t\te->left.sym = &symbol_no;\n\t\t\t\te->right.expr = NULL;\n\t\t\t\treturn e;\n\t\t\t} else if (e->left.expr->left.sym == &symbol_yes) {\n\t\t\t\tfree(e->left.expr);\n\t\t\t\ttmp = e->right.expr;\n\t\t\t\t*e = *(e->right.expr);\n\t\t\t\tfree(tmp);\n\t\t\t\treturn e;\n\t\t\t}\n\t\t}\n\t\tif (e->right.expr->type == E_SYMBOL) {\n\t\t\tif (e->right.expr->left.sym == &symbol_no) {\n\t\t\t\texpr_free(e->left.expr);\n\t\t\t\texpr_free(e->right.expr);\n\t\t\t\te->type = E_SYMBOL;\n\t\t\t\te->left.sym = &symbol_no;\n\t\t\t\te->right.expr = NULL;\n\t\t\t\treturn e;\n\t\t\t} else if (e->right.expr->left.sym == &symbol_yes) {\n\t\t\t\tfree(e->right.expr);\n\t\t\t\ttmp = e->left.expr;\n\t\t\t\t*e = *(e->left.expr);\n\t\t\t\tfree(tmp);\n\t\t\t\treturn e;\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tcase E_OR:\n\t\te->left.expr = expr_eliminate_yn(e->left.expr);\n\t\te->right.expr = expr_eliminate_yn(e->right.expr);\n\t\tif (e->left.expr->type == E_SYMBOL) {\n\t\t\tif (e->left.expr->left.sym == &symbol_no) {\n\t\t\t\tfree(e->left.expr);\n\t\t\t\ttmp = e->right.expr;\n\t\t\t\t*e = *(e->right.expr);\n\t\t\t\tfree(tmp);\n\t\t\t\treturn e;\n\t\t\t} else if (e->left.expr->left.sym == &symbol_yes) {\n\t\t\t\texpr_free(e->left.expr);\n\t\t\t\texpr_free(e->right.expr);\n\t\t\t\te->type = E_SYMBOL;\n\t\t\t\te->left.sym = &symbol_yes;\n\t\t\t\te->right.expr = NULL;\n\t\t\t\treturn e;\n\t\t\t}\n\t\t}\n\t\tif (e->right.expr->type == E_SYMBOL) {\n\t\t\tif (e->right.expr->left.sym == &symbol_no) {\n\t\t\t\tfree(e->right.expr);\n\t\t\t\ttmp = e->left.expr;\n\t\t\t\t*e = *(e->left.expr);\n\t\t\t\tfree(tmp);\n\t\t\t\treturn e;\n\t\t\t} else if (e->right.expr->left.sym == &symbol_yes) {\n\t\t\t\texpr_free(e->left.expr);\n\t\t\t\texpr_free(e->right.expr);\n\t\t\t\te->type = E_SYMBOL;\n\t\t\t\te->left.sym = &symbol_yes;\n\t\t\t\te->right.expr = NULL;\n\t\t\t\treturn e;\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\t;\n\t}\n\treturn e;\n}\n\n/*\n * bool FOO!=n => FOO\n */\nstruct expr *expr_trans_bool(struct expr *e)\n{\n\tif (!e)\n\t\treturn NULL;\n\tswitch (e->type) {\n\tcase E_AND:\n\tcase E_OR:\n\tcase E_NOT:\n\t\te->left.expr = expr_trans_bool(e->left.expr);\n\t\te->right.expr = expr_trans_bool(e->right.expr);\n\t\tbreak;\n\tcase E_UNEQUAL:\n\t\t// FOO!=n -> FOO\n\t\tif (e->left.sym->type == S_TRISTATE) {\n\t\t\tif (e->right.sym == &symbol_no) {\n\t\t\t\te->type = E_SYMBOL;\n\t\t\t\te->right.sym = NULL;\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\t;\n\t}\n\treturn e;\n}\n\n/*\n * e1 || e2 -> ?\n */\nstatic struct expr *expr_join_or(struct expr *e1, struct expr *e2)\n{\n\tstruct expr *tmp;\n\tstruct symbol *sym1, *sym2;\n\n\tif (expr_eq(e1, e2))\n\t\treturn expr_copy(e1);\n\tif (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT)\n\t\treturn NULL;\n\tif (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT)\n\t\treturn NULL;\n\tif (e1->type == E_NOT) {\n\t\ttmp = e1->left.expr;\n\t\tif (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL)\n\t\t\treturn NULL;\n\t\tsym1 = tmp->left.sym;\n\t} else\n\t\tsym1 = e1->left.sym;\n\tif (e2->type == E_NOT) {\n\t\tif (e2->left.expr->type != E_SYMBOL)\n\t\t\treturn NULL;\n\t\tsym2 = e2->left.expr->left.sym;\n\t} else\n\t\tsym2 = e2->left.sym;\n\tif (sym1 != sym2)\n\t\treturn NULL;\n\tif (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE)\n\t\treturn NULL;\n\tif (sym1->type == S_TRISTATE) {\n\t\tif (e1->type == E_EQUAL && e2->type == E_EQUAL &&\n\t\t    ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||\n\t\t     (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) {\n\t\t\t// (a='y') || (a='m') -> (a!='n')\n\t\t\treturn expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no);\n\t\t}\n\t\tif (e1->type == E_EQUAL && e2->type == E_EQUAL &&\n\t\t    ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||\n\t\t     (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) {\n\t\t\t// (a='y') || (a='n') -> (a!='m')\n\t\t\treturn expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod);\n\t\t}\n\t\tif (e1->type == E_EQUAL && e2->type == E_EQUAL &&\n\t\t    ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||\n\t\t     (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) {\n\t\t\t// (a='m') || (a='n') -> (a!='y')\n\t\t\treturn expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes);\n\t\t}\n\t}\n\tif (sym1->type == S_BOOLEAN && sym1 == sym2) {\n\t\tif ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) ||\n\t\t    (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL))\n\t\t\treturn expr_alloc_symbol(&symbol_yes);\n\t}\n\n\tif (DEBUG_EXPR) {\n\t\tprintf(\"optimize (\");\n\t\texpr_fprint(e1, stdout);\n\t\tprintf(\") || (\");\n\t\texpr_fprint(e2, stdout);\n\t\tprintf(\")?\\n\");\n\t}\n\treturn NULL;\n}\n\nstatic struct expr *expr_join_and(struct expr *e1, struct expr *e2)\n{\n\tstruct expr *tmp;\n\tstruct symbol *sym1, *sym2;\n\n\tif (expr_eq(e1, e2))\n\t\treturn expr_copy(e1);\n\tif (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT)\n\t\treturn NULL;\n\tif (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT)\n\t\treturn NULL;\n\tif (e1->type == E_NOT) {\n\t\ttmp = e1->left.expr;\n\t\tif (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL)\n\t\t\treturn NULL;\n\t\tsym1 = tmp->left.sym;\n\t} else\n\t\tsym1 = e1->left.sym;\n\tif (e2->type == E_NOT) {\n\t\tif (e2->left.expr->type != E_SYMBOL)\n\t\t\treturn NULL;\n\t\tsym2 = e2->left.expr->left.sym;\n\t} else\n\t\tsym2 = e2->left.sym;\n\tif (sym1 != sym2)\n\t\treturn NULL;\n\tif (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE)\n\t\treturn NULL;\n\n\tif ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) ||\n\t    (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes))\n\t\t// (a) && (a='y') -> (a='y')\n\t\treturn expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);\n\n\tif ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) ||\n\t    (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no))\n\t\t// (a) && (a!='n') -> (a)\n\t\treturn expr_alloc_symbol(sym1);\n\n\tif ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) ||\n\t    (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod))\n\t\t// (a) && (a!='m') -> (a='y')\n\t\treturn expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);\n\n\tif (sym1->type == S_TRISTATE) {\n\t\tif (e1->type == E_EQUAL && e2->type == E_UNEQUAL) {\n\t\t\t// (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b'\n\t\t\tsym2 = e1->right.sym;\n\t\t\tif ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))\n\t\t\t\treturn sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)\n\t\t\t\t\t\t\t     : expr_alloc_symbol(&symbol_no);\n\t\t}\n\t\tif (e1->type == E_UNEQUAL && e2->type == E_EQUAL) {\n\t\t\t// (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b'\n\t\t\tsym2 = e2->right.sym;\n\t\t\tif ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))\n\t\t\t\treturn sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)\n\t\t\t\t\t\t\t     : expr_alloc_symbol(&symbol_no);\n\t\t}\n\t\tif (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&\n\t\t\t   ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||\n\t\t\t    (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes)))\n\t\t\t// (a!='y') && (a!='n') -> (a='m')\n\t\t\treturn expr_alloc_comp(E_EQUAL, sym1, &symbol_mod);\n\n\t\tif (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&\n\t\t\t   ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||\n\t\t\t    (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes)))\n\t\t\t// (a!='y') && (a!='m') -> (a='n')\n\t\t\treturn expr_alloc_comp(E_EQUAL, sym1, &symbol_no);\n\n\t\tif (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&\n\t\t\t   ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||\n\t\t\t    (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod)))\n\t\t\t// (a!='m') && (a!='n') -> (a='m')\n\t\t\treturn expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);\n\n\t\tif ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) ||\n\t\t    (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) ||\n\t\t    (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) ||\n\t\t    (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes))\n\t\t\treturn NULL;\n\t}\n\n\tif (DEBUG_EXPR) {\n\t\tprintf(\"optimize (\");\n\t\texpr_fprint(e1, stdout);\n\t\tprintf(\") && (\");\n\t\texpr_fprint(e2, stdout);\n\t\tprintf(\")?\\n\");\n\t}\n\treturn NULL;\n}\n\n/*\n * expr_eliminate_dups() helper.\n *\n * Walks the two expression trees given in 'ep1' and 'ep2'. Any node that does\n * not have type 'type' (E_OR/E_AND) is considered a leaf, and is compared\n * against all other leaves to look for simplifications.\n */\nstatic void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2)\n{\n#define e1 (*ep1)\n#define e2 (*ep2)\n\tstruct expr *tmp;\n\n\t/* Recurse down to leaves */\n\n\tif (e1->type == type) {\n\t\texpr_eliminate_dups1(type, &e1->left.expr, &e2);\n\t\texpr_eliminate_dups1(type, &e1->right.expr, &e2);\n\t\treturn;\n\t}\n\tif (e2->type == type) {\n\t\texpr_eliminate_dups1(type, &e1, &e2->left.expr);\n\t\texpr_eliminate_dups1(type, &e1, &e2->right.expr);\n\t\treturn;\n\t}\n\n\t/* e1 and e2 are leaves. Compare and process them. */\n\n\tif (e1 == e2)\n\t\treturn;\n\n\tswitch (e1->type) {\n\tcase E_OR: case E_AND:\n\t\texpr_eliminate_dups1(e1->type, &e1, &e1);\n\tdefault:\n\t\t;\n\t}\n\n\tswitch (type) {\n\tcase E_OR:\n\t\ttmp = expr_join_or(e1, e2);\n\t\tif (tmp) {\n\t\t\texpr_free(e1); expr_free(e2);\n\t\t\te1 = expr_alloc_symbol(&symbol_no);\n\t\t\te2 = tmp;\n\t\t\ttrans_count++;\n\t\t}\n\t\tbreak;\n\tcase E_AND:\n\t\ttmp = expr_join_and(e1, e2);\n\t\tif (tmp) {\n\t\t\texpr_free(e1); expr_free(e2);\n\t\t\te1 = expr_alloc_symbol(&symbol_yes);\n\t\t\te2 = tmp;\n\t\t\ttrans_count++;\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\t;\n\t}\n#undef e1\n#undef e2\n}\n\n/*\n * Rewrites 'e' in-place to remove (\"join\") duplicate and other redundant\n * operands.\n *\n * Example simplifications:\n *\n *\tA || B || A    ->  A || B\n *\tA && B && A=y  ->  A=y && B\n *\n * Returns the deduplicated expression.\n */\nstruct expr *expr_eliminate_dups(struct expr *e)\n{\n\tint oldcount;\n\tif (!e)\n\t\treturn e;\n\n\toldcount = trans_count;\n\twhile (1) {\n\t\ttrans_count = 0;\n\t\tswitch (e->type) {\n\t\tcase E_OR: case E_AND:\n\t\t\texpr_eliminate_dups1(e->type, &e, &e);\n\t\tdefault:\n\t\t\t;\n\t\t}\n\t\tif (!trans_count)\n\t\t\t/* No simplifications done in this pass. We're done */\n\t\t\tbreak;\n\t\te = expr_eliminate_yn(e);\n\t}\n\ttrans_count = oldcount;\n\treturn e;\n}\n\n/*\n * Performs various simplifications involving logical operators and\n * comparisons.\n *\n * Allocates and returns a new expression.\n */\nstruct expr *expr_transform(struct expr *e)\n{\n\tstruct expr *tmp;\n\n\tif (!e)\n\t\treturn NULL;\n\tswitch (e->type) {\n\tcase E_EQUAL:\n\tcase E_GEQ:\n\tcase E_GTH:\n\tcase E_LEQ:\n\tcase E_LTH:\n\tcase E_UNEQUAL:\n\tcase E_SYMBOL:\n\tcase E_LIST:\n\t\tbreak;\n\tdefault:\n\t\te->left.expr = expr_transform(e->left.expr);\n\t\te->right.expr = expr_transform(e->right.expr);\n\t}\n\n\tswitch (e->type) {\n\tcase E_EQUAL:\n\t\tif (e->left.sym->type != S_BOOLEAN)\n\t\t\tbreak;\n\t\tif (e->right.sym == &symbol_no) {\n\t\t\te->type = E_NOT;\n\t\t\te->left.expr = expr_alloc_symbol(e->left.sym);\n\t\t\te->right.sym = NULL;\n\t\t\tbreak;\n\t\t}\n\t\tif (e->right.sym == &symbol_mod) {\n\t\t\tprintf(\"boolean symbol %s tested for 'm'? test forced to 'n'\\n\", e->left.sym->name);\n\t\t\te->type = E_SYMBOL;\n\t\t\te->left.sym = &symbol_no;\n\t\t\te->right.sym = NULL;\n\t\t\tbreak;\n\t\t}\n\t\tif (e->right.sym == &symbol_yes) {\n\t\t\te->type = E_SYMBOL;\n\t\t\te->right.sym = NULL;\n\t\t\tbreak;\n\t\t}\n\t\tbreak;\n\tcase E_UNEQUAL:\n\t\tif (e->left.sym->type != S_BOOLEAN)\n\t\t\tbreak;\n\t\tif (e->right.sym == &symbol_no) {\n\t\t\te->type = E_SYMBOL;\n\t\t\te->right.sym = NULL;\n\t\t\tbreak;\n\t\t}\n\t\tif (e->right.sym == &symbol_mod) {\n\t\t\tprintf(\"boolean symbol %s tested for 'm'? test forced to 'y'\\n\", e->left.sym->name);\n\t\t\te->type = E_SYMBOL;\n\t\t\te->left.sym = &symbol_yes;\n\t\t\te->right.sym = NULL;\n\t\t\tbreak;\n\t\t}\n\t\tif (e->right.sym == &symbol_yes) {\n\t\t\te->type = E_NOT;\n\t\t\te->left.expr = expr_alloc_symbol(e->left.sym);\n\t\t\te->right.sym = NULL;\n\t\t\tbreak;\n\t\t}\n\t\tbreak;\n\tcase E_NOT:\n\t\tswitch (e->left.expr->type) {\n\t\tcase E_NOT:\n\t\t\t// !!a -> a\n\t\t\ttmp = e->left.expr->left.expr;\n\t\t\tfree(e->left.expr);\n\t\t\tfree(e);\n\t\t\te = tmp;\n\t\t\te = expr_transform(e);\n\t\t\tbreak;\n\t\tcase E_EQUAL:\n\t\tcase E_UNEQUAL:\n\t\t\t// !a='x' -> a!='x'\n\t\t\ttmp = e->left.expr;\n\t\t\tfree(e);\n\t\t\te = tmp;\n\t\t\te->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL;\n\t\t\tbreak;\n\t\tcase E_LEQ:\n\t\tcase E_GEQ:\n\t\t\t// !a<='x' -> a>'x'\n\t\t\ttmp = e->left.expr;\n\t\t\tfree(e);\n\t\t\te = tmp;\n\t\t\te->type = e->type == E_LEQ ? E_GTH : E_LTH;\n\t\t\tbreak;\n\t\tcase E_LTH:\n\t\tcase E_GTH:\n\t\t\t// !a<'x' -> a>='x'\n\t\t\ttmp = e->left.expr;\n\t\t\tfree(e);\n\t\t\te = tmp;\n\t\t\te->type = e->type == E_LTH ? E_GEQ : E_LEQ;\n\t\t\tbreak;\n\t\tcase E_OR:\n\t\t\t// !(a || b) -> !a && !b\n\t\t\ttmp = e->left.expr;\n\t\t\te->type = E_AND;\n\t\t\te->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);\n\t\t\ttmp->type = E_NOT;\n\t\t\ttmp->right.expr = NULL;\n\t\t\te = expr_transform(e);\n\t\t\tbreak;\n\t\tcase E_AND:\n\t\t\t// !(a && b) -> !a || !b\n\t\t\ttmp = e->left.expr;\n\t\t\te->type = E_OR;\n\t\t\te->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);\n\t\t\ttmp->type = E_NOT;\n\t\t\ttmp->right.expr = NULL;\n\t\t\te = expr_transform(e);\n\t\t\tbreak;\n\t\tcase E_SYMBOL:\n\t\t\tif (e->left.expr->left.sym == &symbol_yes) {\n\t\t\t\t// !'y' -> 'n'\n\t\t\t\ttmp = e->left.expr;\n\t\t\t\tfree(e);\n\t\t\t\te = tmp;\n\t\t\t\te->type = E_SYMBOL;\n\t\t\t\te->left.sym = &symbol_no;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (e->left.expr->left.sym == &symbol_mod) {\n\t\t\t\t// !'m' -> 'm'\n\t\t\t\ttmp = e->left.expr;\n\t\t\t\tfree(e);\n\t\t\t\te = tmp;\n\t\t\t\te->type = E_SYMBOL;\n\t\t\t\te->left.sym = &symbol_mod;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (e->left.expr->left.sym == &symbol_no) {\n\t\t\t\t// !'n' -> 'y'\n\t\t\t\ttmp = e->left.expr;\n\t\t\t\tfree(e);\n\t\t\t\te = tmp;\n\t\t\t\te->type = E_SYMBOL;\n\t\t\t\te->left.sym = &symbol_yes;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t;\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\t;\n\t}\n\treturn e;\n}\n\nint expr_contains_symbol(struct expr *dep, struct symbol *sym)\n{\n\tif (!dep)\n\t\treturn 0;\n\n\tswitch (dep->type) {\n\tcase E_AND:\n\tcase E_OR:\n\t\treturn expr_contains_symbol(dep->left.expr, sym) ||\n\t\t       expr_contains_symbol(dep->right.expr, sym);\n\tcase E_SYMBOL:\n\t\treturn dep->left.sym == sym;\n\tcase E_EQUAL:\n\tcase E_GEQ:\n\tcase E_GTH:\n\tcase E_LEQ:\n\tcase E_LTH:\n\tcase E_UNEQUAL:\n\t\treturn dep->left.sym == sym ||\n\t\t       dep->right.sym == sym;\n\tcase E_NOT:\n\t\treturn expr_contains_symbol(dep->left.expr, sym);\n\tdefault:\n\t\t;\n\t}\n\treturn 0;\n}\n\nbool expr_depends_symbol(struct expr *dep, struct symbol *sym)\n{\n\tif (!dep)\n\t\treturn false;\n\n\tswitch (dep->type) {\n\tcase E_AND:\n\t\treturn expr_depends_symbol(dep->left.expr, sym) ||\n\t\t       expr_depends_symbol(dep->right.expr, sym);\n\tcase E_SYMBOL:\n\t\treturn dep->left.sym == sym;\n\tcase E_EQUAL:\n\t\tif (dep->left.sym == sym) {\n\t\t\tif (dep->right.sym == &symbol_yes || dep->right.sym == &symbol_mod)\n\t\t\t\treturn true;\n\t\t}\n\t\tbreak;\n\tcase E_UNEQUAL:\n\t\tif (dep->left.sym == sym) {\n\t\t\tif (dep->right.sym == &symbol_no)\n\t\t\t\treturn true;\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\t;\n\t}\n \treturn false;\n}\n\n/*\n * Inserts explicit comparisons of type 'type' to symbol 'sym' into the\n * expression 'e'.\n *\n * Examples transformations for type == E_UNEQUAL, sym == &symbol_no:\n *\n *\tA              ->  A!=n\n *\t!A             ->  A=n\n *\tA && B         ->  !(A=n || B=n)\n *\tA || B         ->  !(A=n && B=n)\n *\tA && (B || C)  ->  !(A=n || (B=n && C=n))\n *\n * Allocates and returns a new expression.\n */\nstruct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym)\n{\n\tstruct expr *e1, *e2;\n\n\tif (!e) {\n\t\te = expr_alloc_symbol(sym);\n\t\tif (type == E_UNEQUAL)\n\t\t\te = expr_alloc_one(E_NOT, e);\n\t\treturn e;\n\t}\n\tswitch (e->type) {\n\tcase E_AND:\n\t\te1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);\n\t\te2 = expr_trans_compare(e->right.expr, E_EQUAL, sym);\n\t\tif (sym == &symbol_yes)\n\t\t\te = expr_alloc_two(E_AND, e1, e2);\n\t\tif (sym == &symbol_no)\n\t\t\te = expr_alloc_two(E_OR, e1, e2);\n\t\tif (type == E_UNEQUAL)\n\t\t\te = expr_alloc_one(E_NOT, e);\n\t\treturn e;\n\tcase E_OR:\n\t\te1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);\n\t\te2 = expr_trans_compare(e->right.expr, E_EQUAL, sym);\n\t\tif (sym == &symbol_yes)\n\t\t\te = expr_alloc_two(E_OR, e1, e2);\n\t\tif (sym == &symbol_no)\n\t\t\te = expr_alloc_two(E_AND, e1, e2);\n\t\tif (type == E_UNEQUAL)\n\t\t\te = expr_alloc_one(E_NOT, e);\n\t\treturn e;\n\tcase E_NOT:\n\t\treturn expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym);\n\tcase E_UNEQUAL:\n\tcase E_LTH:\n\tcase E_LEQ:\n\tcase E_GTH:\n\tcase E_GEQ:\n\tcase E_EQUAL:\n\t\tif (type == E_EQUAL) {\n\t\t\tif (sym == &symbol_yes)\n\t\t\t\treturn expr_copy(e);\n\t\t\tif (sym == &symbol_mod)\n\t\t\t\treturn expr_alloc_symbol(&symbol_no);\n\t\t\tif (sym == &symbol_no)\n\t\t\t\treturn expr_alloc_one(E_NOT, expr_copy(e));\n\t\t} else {\n\t\t\tif (sym == &symbol_yes)\n\t\t\t\treturn expr_alloc_one(E_NOT, expr_copy(e));\n\t\t\tif (sym == &symbol_mod)\n\t\t\t\treturn expr_alloc_symbol(&symbol_yes);\n\t\t\tif (sym == &symbol_no)\n\t\t\t\treturn expr_copy(e);\n\t\t}\n\t\tbreak;\n\tcase E_SYMBOL:\n\t\treturn expr_alloc_comp(type, e->left.sym, sym);\n\tcase E_LIST:\n\tcase E_RANGE:\n\tcase E_NONE:\n\t\t/* panic */;\n\t}\n\treturn NULL;\n}\n\nenum string_value_kind {\n\tk_string,\n\tk_signed,\n\tk_unsigned,\n\tk_invalid\n};\n\nunion string_value {\n\tunsigned long long u;\n\tsigned long long s;\n};\n\nstatic enum string_value_kind expr_parse_string(const char *str,\n\t\t\t\t\t\tenum symbol_type type,\n\t\t\t\t\t\tunion string_value *val)\n{\n\tchar *tail;\n\tenum string_value_kind kind;\n\n\terrno = 0;\n\tswitch (type) {\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\tval->s = !strcmp(str, \"n\") ? 0 :\n\t\t\t !strcmp(str, \"m\") ? 1 :\n\t\t\t !strcmp(str, \"y\") ? 2 : -1;\n\t\treturn k_signed;\n\tcase S_INT:\n\t\tval->s = strtoll(str, &tail, 10);\n\t\tkind = k_signed;\n\t\tbreak;\n\tcase S_HEX:\n\t\tval->u = strtoull(str, &tail, 16);\n\t\tkind = k_unsigned;\n\t\tbreak;\n\tcase S_STRING:\n\tcase S_UNKNOWN:\n\t\tval->s = strtoll(str, &tail, 0);\n\t\tkind = k_signed;\n\t\tbreak;\n\tdefault:\n\t\treturn k_invalid;\n\t}\n\treturn !errno && !*tail && tail > str && isxdigit(tail[-1])\n\t       ? kind : k_string;\n}\n\ntristate expr_calc_value(struct expr *e)\n{\n\ttristate val1, val2;\n\tconst char *str1, *str2;\n\tenum string_value_kind k1 = k_string, k2 = k_string;\n\tunion string_value lval = {}, rval = {};\n\tint res;\n\n\tif (!e)\n\t\treturn yes;\n\n\tswitch (e->type) {\n\tcase E_SYMBOL:\n\t\tsym_calc_value(e->left.sym);\n\t\treturn e->left.sym->curr.tri;\n\tcase E_AND:\n\t\tval1 = expr_calc_value(e->left.expr);\n\t\tval2 = expr_calc_value(e->right.expr);\n\t\treturn EXPR_AND(val1, val2);\n\tcase E_OR:\n\t\tval1 = expr_calc_value(e->left.expr);\n\t\tval2 = expr_calc_value(e->right.expr);\n\t\treturn EXPR_OR(val1, val2);\n\tcase E_NOT:\n\t\tval1 = expr_calc_value(e->left.expr);\n\t\treturn EXPR_NOT(val1);\n\tcase E_EQUAL:\n\tcase E_GEQ:\n\tcase E_GTH:\n\tcase E_LEQ:\n\tcase E_LTH:\n\tcase E_UNEQUAL:\n\t\tbreak;\n\tdefault:\n\t\tprintf(\"expr_calc_value: %d?\\n\", e->type);\n\t\treturn no;\n\t}\n\n\tsym_calc_value(e->left.sym);\n\tsym_calc_value(e->right.sym);\n\tstr1 = sym_get_string_value(e->left.sym);\n\tstr2 = sym_get_string_value(e->right.sym);\n\n\tif (e->left.sym->type != S_STRING || e->right.sym->type != S_STRING) {\n\t\tk1 = expr_parse_string(str1, e->left.sym->type, &lval);\n\t\tk2 = expr_parse_string(str2, e->right.sym->type, &rval);\n\t}\n\n\tif (k1 == k_string || k2 == k_string)\n\t\tres = strcmp(str1, str2);\n\telse if (k1 == k_invalid || k2 == k_invalid) {\n\t\tif (e->type != E_EQUAL && e->type != E_UNEQUAL) {\n\t\t\tprintf(\"Cannot compare \\\"%s\\\" and \\\"%s\\\"\\n\", str1, str2);\n\t\t\treturn no;\n\t\t}\n\t\tres = strcmp(str1, str2);\n\t} else if (k1 == k_unsigned || k2 == k_unsigned)\n\t\tres = (lval.u > rval.u) - (lval.u < rval.u);\n\telse /* if (k1 == k_signed && k2 == k_signed) */\n\t\tres = (lval.s > rval.s) - (lval.s < rval.s);\n\n\tswitch(e->type) {\n\tcase E_EQUAL:\n\t\treturn res ? no : yes;\n\tcase E_GEQ:\n\t\treturn res >= 0 ? yes : no;\n\tcase E_GTH:\n\t\treturn res > 0 ? yes : no;\n\tcase E_LEQ:\n\t\treturn res <= 0 ? yes : no;\n\tcase E_LTH:\n\t\treturn res < 0 ? yes : no;\n\tcase E_UNEQUAL:\n\t\treturn res ? yes : no;\n\tdefault:\n\t\tprintf(\"expr_calc_value: relation %d?\\n\", e->type);\n\t\treturn no;\n\t}\n}\n\nstatic int expr_compare_type(enum expr_type t1, enum expr_type t2)\n{\n\tif (t1 == t2)\n\t\treturn 0;\n\tswitch (t1) {\n\tcase E_LEQ:\n\tcase E_LTH:\n\tcase E_GEQ:\n\tcase E_GTH:\n\t\tif (t2 == E_EQUAL || t2 == E_UNEQUAL)\n\t\t\treturn 1;\n\tcase E_EQUAL:\n\tcase E_UNEQUAL:\n\t\tif (t2 == E_NOT)\n\t\t\treturn 1;\n\tcase E_NOT:\n\t\tif (t2 == E_AND)\n\t\t\treturn 1;\n\tcase E_AND:\n\t\tif (t2 == E_OR)\n\t\t\treturn 1;\n\tcase E_OR:\n\t\tif (t2 == E_LIST)\n\t\t\treturn 1;\n\tcase E_LIST:\n\t\tif (t2 == 0)\n\t\t\treturn 1;\n\tdefault:\n\t\treturn -1;\n\t}\n\tprintf(\"[%dgt%d?]\", t1, t2);\n\treturn 0;\n}\n\nvoid expr_print(struct expr *e,\n\t\tvoid (*fn)(void *, struct symbol *, const char *),\n\t\tvoid *data, int prevtoken)\n{\n\tif (!e) {\n\t\tfn(data, NULL, \"y\");\n\t\treturn;\n\t}\n\n\tif (expr_compare_type(prevtoken, e->type) > 0)\n\t\tfn(data, NULL, \"(\");\n\tswitch (e->type) {\n\tcase E_SYMBOL:\n\t\tif (e->left.sym->name)\n\t\t\tfn(data, e->left.sym, e->left.sym->name);\n\t\telse\n\t\t\tfn(data, NULL, \"<choice>\");\n\t\tbreak;\n\tcase E_NOT:\n\t\tfn(data, NULL, \"!\");\n\t\texpr_print(e->left.expr, fn, data, E_NOT);\n\t\tbreak;\n\tcase E_EQUAL:\n\t\tif (e->left.sym->name)\n\t\t\tfn(data, e->left.sym, e->left.sym->name);\n\t\telse\n\t\t\tfn(data, NULL, \"<choice>\");\n\t\tfn(data, NULL, \"=\");\n\t\tfn(data, e->right.sym, e->right.sym->name);\n\t\tbreak;\n\tcase E_LEQ:\n\tcase E_LTH:\n\t\tif (e->left.sym->name)\n\t\t\tfn(data, e->left.sym, e->left.sym->name);\n\t\telse\n\t\t\tfn(data, NULL, \"<choice>\");\n\t\tfn(data, NULL, e->type == E_LEQ ? \"<=\" : \"<\");\n\t\tfn(data, e->right.sym, e->right.sym->name);\n\t\tbreak;\n\tcase E_GEQ:\n\tcase E_GTH:\n\t\tif (e->left.sym->name)\n\t\t\tfn(data, e->left.sym, e->left.sym->name);\n\t\telse\n\t\t\tfn(data, NULL, \"<choice>\");\n\t\tfn(data, NULL, e->type == E_GEQ ? \">=\" : \">\");\n\t\tfn(data, e->right.sym, e->right.sym->name);\n\t\tbreak;\n\tcase E_UNEQUAL:\n\t\tif (e->left.sym->name)\n\t\t\tfn(data, e->left.sym, e->left.sym->name);\n\t\telse\n\t\t\tfn(data, NULL, \"<choice>\");\n\t\tfn(data, NULL, \"!=\");\n\t\tfn(data, e->right.sym, e->right.sym->name);\n\t\tbreak;\n\tcase E_OR:\n\t\texpr_print(e->left.expr, fn, data, E_OR);\n\t\tfn(data, NULL, \" || \");\n\t\texpr_print(e->right.expr, fn, data, E_OR);\n\t\tbreak;\n\tcase E_AND:\n\t\texpr_print(e->left.expr, fn, data, E_AND);\n\t\tfn(data, NULL, \" && \");\n\t\texpr_print(e->right.expr, fn, data, E_AND);\n\t\tbreak;\n\tcase E_LIST:\n\t\tfn(data, e->right.sym, e->right.sym->name);\n\t\tif (e->left.expr) {\n\t\t\tfn(data, NULL, \" ^ \");\n\t\t\texpr_print(e->left.expr, fn, data, E_LIST);\n\t\t}\n\t\tbreak;\n\tcase E_RANGE:\n\t\tfn(data, NULL, \"[\");\n\t\tfn(data, e->left.sym, e->left.sym->name);\n\t\tfn(data, NULL, \" \");\n\t\tfn(data, e->right.sym, e->right.sym->name);\n\t\tfn(data, NULL, \"]\");\n\t\tbreak;\n\tdefault:\n\t  {\n\t\tchar buf[32];\n\t\tsprintf(buf, \"<unknown type %d>\", e->type);\n\t\tfn(data, NULL, buf);\n\t\tbreak;\n\t  }\n\t}\n\tif (expr_compare_type(prevtoken, e->type) > 0)\n\t\tfn(data, NULL, \")\");\n}\n\nstatic void expr_print_file_helper(void *data, struct symbol *sym, const char *str)\n{\n\txfwrite(str, strlen(str), 1, data);\n}\n\nvoid expr_fprint(struct expr *e, FILE *out)\n{\n\texpr_print(e, expr_print_file_helper, out, E_NONE);\n}\n\nstatic void expr_print_gstr_helper(void *data, struct symbol *sym, const char *str)\n{\n\tstruct gstr *gs = (struct gstr*)data;\n\tconst char *sym_str = NULL;\n\n\tif (sym)\n\t\tsym_str = sym_get_string_value(sym);\n\n\tif (gs->max_width) {\n\t\tunsigned extra_length = strlen(str);\n\t\tconst char *last_cr = strrchr(gs->s, '\\n');\n\t\tunsigned last_line_length;\n\n\t\tif (sym_str)\n\t\t\textra_length += 4 + strlen(sym_str);\n\n\t\tif (!last_cr)\n\t\t\tlast_cr = gs->s;\n\n\t\tlast_line_length = strlen(gs->s) - (last_cr - gs->s);\n\n\t\tif ((last_line_length + extra_length) > gs->max_width)\n\t\t\tstr_append(gs, \"\\\\\\n\");\n\t}\n\n\tstr_append(gs, str);\n\tif (sym && sym->type != S_UNKNOWN)\n\t\tstr_printf(gs, \" [=%s]\", sym_str);\n}\n\nvoid expr_gstr_print(struct expr *e, struct gstr *gs)\n{\n\texpr_print(e, expr_print_gstr_helper, gs, E_NONE);\n}\n\n/*\n * Transform the top level \"||\" tokens into newlines and prepend each\n * line with a minus. This makes expressions much easier to read.\n * Suitable for reverse dependency expressions.\n */\nstatic void expr_print_revdep(struct expr *e,\n\t\t\t      void (*fn)(void *, struct symbol *, const char *),\n\t\t\t      void *data, tristate pr_type, const char **title)\n{\n\tif (e->type == E_OR) {\n\t\texpr_print_revdep(e->left.expr, fn, data, pr_type, title);\n\t\texpr_print_revdep(e->right.expr, fn, data, pr_type, title);\n\t} else if (expr_calc_value(e) == pr_type) {\n\t\tif (*title) {\n\t\t\tfn(data, NULL, *title);\n\t\t\t*title = NULL;\n\t\t}\n\n\t\tfn(data, NULL, \"  - \");\n\t\texpr_print(e, fn, data, E_NONE);\n\t\tfn(data, NULL, \"\\n\");\n\t}\n}\n\nvoid expr_gstr_print_revdep(struct expr *e, struct gstr *gs,\n\t\t\t    tristate pr_type, const char *title)\n{\n\texpr_print_revdep(e, expr_print_gstr_helper, gs, pr_type, &title);\n}\n"
  },
  {
    "path": "support/kconfig/expr.h",
    "content": "/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#ifndef EXPR_H\n#define EXPR_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include <assert.h>\n#include <stdio.h>\n#include \"list.h\"\n#ifndef __cplusplus\n#include <stdbool.h>\n#endif\n\nstruct file {\n\tstruct file *next;\n\tstruct file *parent;\n\tconst char *name;\n\tint lineno;\n};\n\ntypedef enum tristate {\n\tno, mod, yes\n} tristate;\n\nenum expr_type {\n\tE_NONE, E_OR, E_AND, E_NOT,\n\tE_EQUAL, E_UNEQUAL, E_LTH, E_LEQ, E_GTH, E_GEQ,\n\tE_LIST, E_SYMBOL, E_RANGE\n};\n\nunion expr_data {\n\tstruct expr *expr;\n\tstruct symbol *sym;\n};\n\nstruct expr {\n\tenum expr_type type;\n\tunion expr_data left, right;\n};\n\n#define EXPR_OR(dep1, dep2)\t(((dep1)>(dep2))?(dep1):(dep2))\n#define EXPR_AND(dep1, dep2)\t(((dep1)<(dep2))?(dep1):(dep2))\n#define EXPR_NOT(dep)\t\t(2-(dep))\n\n#define expr_list_for_each_sym(l, e, s) \\\n\tfor (e = (l); e && (s = e->right.sym); e = e->left.expr)\n\nstruct expr_value {\n\tstruct expr *expr;\n\ttristate tri;\n};\n\nstruct symbol_value {\n\tvoid *val;\n\ttristate tri;\n};\n\nenum symbol_type {\n\tS_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER\n};\n\n/* enum values are used as index to symbol.def[] */\nenum {\n\tS_DEF_USER,\t\t/* main user value */\n\tS_DEF_AUTO,\t\t/* values read from auto.conf */\n\tS_DEF_DEF3,\t\t/* Reserved for UI usage */\n\tS_DEF_DEF4,\t\t/* Reserved for UI usage */\n\tS_DEF_COUNT\n};\n\n/*\n * Represents a configuration symbol.\n *\n * Choices are represented as a special kind of symbol and have the\n * SYMBOL_CHOICE bit set in 'flags'.\n */\nstruct symbol {\n\t/* The next symbol in the same bucket in the symbol hash table */\n\tstruct symbol *next;\n\n\t/* The name of the symbol, e.g. \"FOO\" for 'config FOO' */\n\tchar *name;\n\n\t/* S_BOOLEAN, S_TRISTATE, ... */\n\tenum symbol_type type;\n\n\t/*\n\t * The calculated value of the symbol. The SYMBOL_VALID bit is set in\n\t * 'flags' when this is up to date. Note that this value might differ\n\t * from the user value set in e.g. a .config file, due to visibility.\n\t */\n\tstruct symbol_value curr;\n\n\t/*\n\t * Values for the symbol provided from outside. def[S_DEF_USER] holds\n\t * the .config value.\n\t */\n\tstruct symbol_value def[S_DEF_COUNT];\n\n\t/*\n\t * An upper bound on the tristate value the user can set for the symbol\n\t * if it is a boolean or tristate. Calculated from prompt dependencies,\n\t * which also inherit dependencies from enclosing menus, choices, and\n\t * ifs. If 'n', the user value will be ignored.\n\t *\n\t * Symbols lacking prompts always have visibility 'n'.\n\t */\n\ttristate visible;\n\n\t/* SYMBOL_* flags */\n\tint flags;\n\n\t/* List of properties. See prop_type. */\n\tstruct property *prop;\n\n\t/* Dependencies from enclosing menus, choices, and ifs */\n\tstruct expr_value dir_dep;\n\n\t/* Reverse dependencies through being selected by other symbols */\n\tstruct expr_value rev_dep;\n\n\t/*\n\t * \"Weak\" reverse dependencies through being implied by other symbols\n\t */\n\tstruct expr_value implied;\n};\n\n#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)\n\n#define SYMBOL_CONST      0x0001  /* symbol is const */\n#define SYMBOL_CHECK      0x0008  /* used during dependency checking */\n#define SYMBOL_CHOICE     0x0010  /* start of a choice block (null name) */\n#define SYMBOL_CHOICEVAL  0x0020  /* used as a value in a choice block */\n#define SYMBOL_VALID      0x0080  /* set when symbol.curr is calculated */\n#define SYMBOL_OPTIONAL   0x0100  /* choice is optional - values can be 'n' */\n#define SYMBOL_WRITE      0x0200  /* write symbol to file (KCONFIG_CONFIG) */\n#define SYMBOL_CHANGED    0x0400  /* ? */\n#define SYMBOL_AUTO       0x1000  /* value from environment variable */\n#define SYMBOL_CHECKED    0x2000  /* used during dependency checking */\n#define SYMBOL_WARNED     0x8000  /* warning has been issued */\n\n/* Set when symbol.def[] is used */\n#define SYMBOL_DEF        0x10000  /* First bit of SYMBOL_DEF */\n#define SYMBOL_DEF_USER   0x10000  /* symbol.def[S_DEF_USER] is valid */\n#define SYMBOL_DEF_AUTO   0x20000  /* symbol.def[S_DEF_AUTO] is valid */\n#define SYMBOL_DEF3       0x40000  /* symbol.def[S_DEF_3] is valid */\n#define SYMBOL_DEF4       0x80000  /* symbol.def[S_DEF_4] is valid */\n\n/* choice values need to be set before calculating this symbol value */\n#define SYMBOL_NEED_SET_CHOICE_VALUES  0x100000\n\n/* Set symbol to y if allnoconfig; used for symbols that hide others */\n#define SYMBOL_ALLNOCONFIG_Y 0x200000\n\n#define SYMBOL_MAXLENGTH\t256\n#define SYMBOL_HASHSIZE\t\t9973\n\n/* A property represent the config options that can be associated\n * with a config \"symbol\".\n * Sample:\n * config FOO\n *         default y\n *         prompt \"foo prompt\"\n *         select BAR\n * config BAZ\n *         int \"BAZ Value\"\n *         range 1..255\n */\nenum prop_type {\n\tP_UNKNOWN,\n\tP_PROMPT,   /* prompt \"foo prompt\" or \"BAZ Value\" */\n\tP_COMMENT,  /* text associated with a comment */\n\tP_MENU,     /* prompt associated with a menu or menuconfig symbol */\n\tP_DEFAULT,  /* default y */\n\tP_CHOICE,   /* choice value */\n\tP_SELECT,   /* select BAR */\n\tP_IMPLY,    /* imply BAR */\n\tP_RANGE,    /* range 7..100 (for a symbol) */\n\tP_ENV,      /* value from environment variable */\n\tP_SYMBOL,   /* where a symbol is defined */\n};\n\nstruct property {\n\tstruct property *next;     /* next property - null if last */\n\tstruct symbol *sym;        /* the symbol for which the property is associated */\n\tenum prop_type type;       /* type of property */\n\tconst char *text;          /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */\n\tstruct expr_value visible;\n\tstruct expr *expr;         /* the optional conditional part of the property */\n\tstruct menu *menu;         /* the menu the property are associated with\n\t                            * valid for: P_SELECT, P_RANGE, P_CHOICE,\n\t                            * P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */\n\tstruct file *file;         /* what file was this property defined */\n\tint lineno;                /* what lineno was this property defined */\n};\n\n#define for_all_properties(sym, st, tok) \\\n\tfor (st = sym->prop; st; st = st->next) \\\n\t\tif (st->type == (tok))\n#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT)\n#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE)\n#define for_all_prompts(sym, st) \\\n\tfor (st = sym->prop; st; st = st->next) \\\n\t\tif (st->text)\n\n/*\n * Represents a node in the menu tree, as seen in e.g. menuconfig (though used\n * for all front ends). Each symbol, menu, etc. defined in the Kconfig files\n * gets a node. A symbol defined in multiple locations gets one node at each\n * location.\n */\nstruct menu {\n\t/* The next menu node at the same level */\n\tstruct menu *next;\n\n\t/* The parent menu node, corresponding to e.g. a menu or choice */\n\tstruct menu *parent;\n\n\t/* The first child menu node, for e.g. menus and choices */\n\tstruct menu *list;\n\n\t/*\n\t * The symbol associated with the menu node. Choices are implemented as\n\t * a special kind of symbol. NULL for menus, comments, and ifs.\n\t */\n\tstruct symbol *sym;\n\n\t/*\n\t * The prompt associated with the node. This holds the prompt for a\n\t * symbol as well as the text for a menu or comment, along with the\n\t * type (P_PROMPT, P_MENU, etc.)\n\t */\n\tstruct property *prompt;\n\n\t/*\n\t * 'visible if' dependencies. If more than one is given, they will be\n\t * ANDed together.\n\t */\n\tstruct expr *visibility;\n\n\t/*\n\t * Ordinary dependencies from e.g. 'depends on' and 'if', ANDed\n\t * together\n\t */\n\tstruct expr *dep;\n\n\t/* MENU_* flags */\n\tunsigned int flags;\n\n\t/* Any help text associated with the node */\n\tchar *help;\n\n\t/* The location where the menu node appears in the Kconfig files */\n\tstruct file *file;\n\tint lineno;\n\n\t/* For use by front ends that need to store auxiliary data */\n\tvoid *data;\n};\n\n/*\n * Set on a menu node when the corresponding symbol changes state in some way.\n * Can be checked by front ends.\n */\n#define MENU_CHANGED\t\t0x0001\n\n#define MENU_ROOT\t\t0x0002\n\nstruct jump_key {\n\tstruct list_head entries;\n\tsize_t offset;\n\tstruct menu *target;\n\tint index;\n};\n\n#define JUMP_NB\t\t\t9\n\nextern struct file *file_list;\nextern struct file *current_file;\nstruct file *lookup_file(const char *name);\n\nextern struct symbol symbol_yes, symbol_no, symbol_mod;\nextern struct symbol *modules_sym;\nextern struct symbol *sym_defconfig_list;\nextern int cdebug;\nstruct expr *expr_alloc_symbol(struct symbol *sym);\nstruct expr *expr_alloc_one(enum expr_type type, struct expr *ce);\nstruct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2);\nstruct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2);\nstruct expr *expr_alloc_and(struct expr *e1, struct expr *e2);\nstruct expr *expr_alloc_or(struct expr *e1, struct expr *e2);\nstruct expr *expr_copy(const struct expr *org);\nvoid expr_free(struct expr *e);\nvoid expr_eliminate_eq(struct expr **ep1, struct expr **ep2);\ntristate expr_calc_value(struct expr *e);\nstruct expr *expr_trans_bool(struct expr *e);\nstruct expr *expr_eliminate_dups(struct expr *e);\nstruct expr *expr_transform(struct expr *e);\nint expr_contains_symbol(struct expr *dep, struct symbol *sym);\nbool expr_depends_symbol(struct expr *dep, struct symbol *sym);\nstruct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym);\n\nvoid expr_fprint(struct expr *e, FILE *out);\nstruct gstr; /* forward */\nvoid expr_gstr_print(struct expr *e, struct gstr *gs);\nvoid expr_gstr_print_revdep(struct expr *e, struct gstr *gs,\n\t\t\t    tristate pr_type, const char *title);\n\nstatic inline int expr_is_yes(struct expr *e)\n{\n\treturn !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes);\n}\n\nstatic inline int expr_is_no(struct expr *e)\n{\n\treturn e && (e->type == E_SYMBOL && e->left.sym == &symbol_no);\n}\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* EXPR_H */\n"
  },
  {
    "path": "support/kconfig/foo.h",
    "content": "#ifndef __KCONFIG_FOO_H\n#define __KCONFIG_FOO_H\n\n#ifndef __APPLE__\n#include <features.h>\n#endif\n#include <limits.h>\n\n#ifndef PATH_MAX\n#define PATH_MAX 1024\n#endif\n#endif /* __KCONFIG_FOO_H */\n"
  },
  {
    "path": "support/kconfig/gconf.c",
    "content": "/* Hey EMACS -*- linux-c -*- */\n/*\n *\n * Copyright (C) 2002-2003 Romain Lievin <roms@tilp.info>\n * Released under the terms of the GNU GPL v2.0.\n *\n */\n\n#ifdef HAVE_CONFIG_H\n#  include <config.h>\n#endif\n\n#include <stdlib.h>\n#include \"lkc.h\"\n#include \"images.c\"\n\n#include <glade/glade.h>\n#include <gtk/gtk.h>\n#include <glib.h>\n#include <gdk/gdkkeysyms.h>\n\n#include <stdio.h>\n#include <string.h>\n#include <unistd.h>\n#include <time.h>\n\n//#define DEBUG\n\nenum {\n\tSINGLE_VIEW, SPLIT_VIEW, FULL_VIEW\n};\n\nenum {\n\tOPT_NORMAL, OPT_ALL, OPT_PROMPT\n};\n\nstatic gint view_mode = FULL_VIEW;\nstatic gboolean show_name = TRUE;\nstatic gboolean show_range = TRUE;\nstatic gboolean show_value = TRUE;\nstatic gboolean resizeable = FALSE;\nstatic int opt_mode = OPT_NORMAL;\n\nGtkWidget *main_wnd = NULL;\nGtkWidget *tree1_w = NULL;\t// left  frame\nGtkWidget *tree2_w = NULL;\t// right frame\nGtkWidget *text_w = NULL;\nGtkWidget *hpaned = NULL;\nGtkWidget *vpaned = NULL;\nGtkWidget *back_btn = NULL;\nGtkWidget *save_btn = NULL;\nGtkWidget *save_menu_item = NULL;\n\nGtkTextTag *tag1, *tag2;\nGdkColor color;\n\nGtkTreeStore *tree1, *tree2, *tree;\nGtkTreeModel *model1, *model2;\nstatic GtkTreeIter *parents[256];\nstatic gint indent;\n\nstatic struct menu *current; // current node for SINGLE view\nstatic struct menu *browsed; // browsed node for SPLIT view\n\nenum {\n\tCOL_OPTION, COL_NAME, COL_NO, COL_MOD, COL_YES, COL_VALUE,\n\tCOL_MENU, COL_COLOR, COL_EDIT, COL_PIXBUF,\n\tCOL_PIXVIS, COL_BTNVIS, COL_BTNACT, COL_BTNINC, COL_BTNRAD,\n\tCOL_NUMBER\n};\n\nstatic void display_list(void);\nstatic void display_tree(struct menu *menu);\nstatic void display_tree_part(void);\nstatic void update_tree(struct menu *src, GtkTreeIter * dst);\nstatic void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row);\nstatic gchar **fill_row(struct menu *menu);\nstatic void conf_changed(void);\n\n/* Helping/Debugging Functions */\n\nconst char *dbg_sym_flags(int val)\n{\n\tstatic char buf[256];\n\n\tbzero(buf, 256);\n\n\tif (val & SYMBOL_CONST)\n\t\tstrcat(buf, \"const/\");\n\tif (val & SYMBOL_CHECK)\n\t\tstrcat(buf, \"check/\");\n\tif (val & SYMBOL_CHOICE)\n\t\tstrcat(buf, \"choice/\");\n\tif (val & SYMBOL_CHOICEVAL)\n\t\tstrcat(buf, \"choiceval/\");\n\tif (val & SYMBOL_VALID)\n\t\tstrcat(buf, \"valid/\");\n\tif (val & SYMBOL_OPTIONAL)\n\t\tstrcat(buf, \"optional/\");\n\tif (val & SYMBOL_WRITE)\n\t\tstrcat(buf, \"write/\");\n\tif (val & SYMBOL_CHANGED)\n\t\tstrcat(buf, \"changed/\");\n\tif (val & SYMBOL_AUTO)\n\t\tstrcat(buf, \"auto/\");\n\n\tbuf[strlen(buf) - 1] = '\\0';\n\n\treturn buf;\n}\n\nvoid replace_button_icon(GladeXML * xml, GdkDrawable * window,\n\t\t\t GtkStyle * style, gchar * btn_name, gchar ** xpm)\n{\n\tGdkPixmap *pixmap;\n\tGdkBitmap *mask;\n\tGtkToolButton *button;\n\tGtkWidget *image;\n\n\tpixmap = gdk_pixmap_create_from_xpm_d(window, &mask,\n\t\t\t\t\t      &style->bg[GTK_STATE_NORMAL],\n\t\t\t\t\t      xpm);\n\n\tbutton = GTK_TOOL_BUTTON(glade_xml_get_widget(xml, btn_name));\n\timage = gtk_image_new_from_pixmap(pixmap, mask);\n\tgtk_widget_show(image);\n\tgtk_tool_button_set_icon_widget(button, image);\n}\n\n/* Main Window Initialization */\nvoid init_main_window(const gchar * glade_file)\n{\n\tGladeXML *xml;\n\tGtkWidget *widget;\n\tGtkTextBuffer *txtbuf;\n\tGtkStyle *style;\n\n\txml = glade_xml_new(glade_file, \"window1\", NULL);\n\tif (!xml)\n\t\tg_error(_(\"GUI loading failed !\\n\"));\n\tglade_xml_signal_autoconnect(xml);\n\n\tmain_wnd = glade_xml_get_widget(xml, \"window1\");\n\thpaned = glade_xml_get_widget(xml, \"hpaned1\");\n\tvpaned = glade_xml_get_widget(xml, \"vpaned1\");\n\ttree1_w = glade_xml_get_widget(xml, \"treeview1\");\n\ttree2_w = glade_xml_get_widget(xml, \"treeview2\");\n\ttext_w = glade_xml_get_widget(xml, \"textview3\");\n\n\tback_btn = glade_xml_get_widget(xml, \"button1\");\n\tgtk_widget_set_sensitive(back_btn, FALSE);\n\n\twidget = glade_xml_get_widget(xml, \"show_name1\");\n\tgtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,\n\t\t\t\t       show_name);\n\n\twidget = glade_xml_get_widget(xml, \"show_range1\");\n\tgtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,\n\t\t\t\t       show_range);\n\n\twidget = glade_xml_get_widget(xml, \"show_data1\");\n\tgtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,\n\t\t\t\t       show_value);\n\n\tsave_btn = glade_xml_get_widget(xml, \"button3\");\n\tsave_menu_item = glade_xml_get_widget(xml, \"save1\");\n\tconf_set_changed_callback(conf_changed);\n\n\tstyle = gtk_widget_get_style(main_wnd);\n\twidget = glade_xml_get_widget(xml, \"toolbar1\");\n\n\treplace_button_icon(xml, main_wnd->window, style,\n\t\t\t    \"button4\", (gchar **) xpm_single_view);\n\treplace_button_icon(xml, main_wnd->window, style,\n\t\t\t    \"button5\", (gchar **) xpm_split_view);\n\treplace_button_icon(xml, main_wnd->window, style,\n\t\t\t    \"button6\", (gchar **) xpm_tree_view);\n\n\ttxtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));\n\ttag1 = gtk_text_buffer_create_tag(txtbuf, \"mytag1\",\n\t\t\t\t\t  \"foreground\", \"red\",\n\t\t\t\t\t  \"weight\", PANGO_WEIGHT_BOLD,\n\t\t\t\t\t  NULL);\n\ttag2 = gtk_text_buffer_create_tag(txtbuf, \"mytag2\",\n\t\t\t\t\t  /*\"style\", PANGO_STYLE_OBLIQUE, */\n\t\t\t\t\t  NULL);\n\n\tgtk_window_set_title(GTK_WINDOW(main_wnd), rootmenu.prompt->text);\n\n\tgtk_widget_show(main_wnd);\n}\n\nvoid init_tree_model(void)\n{\n\tgint i;\n\n\ttree = tree2 = gtk_tree_store_new(COL_NUMBER,\n\t\t\t\t\t  G_TYPE_STRING, G_TYPE_STRING,\n\t\t\t\t\t  G_TYPE_STRING, G_TYPE_STRING,\n\t\t\t\t\t  G_TYPE_STRING, G_TYPE_STRING,\n\t\t\t\t\t  G_TYPE_POINTER, GDK_TYPE_COLOR,\n\t\t\t\t\t  G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF,\n\t\t\t\t\t  G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,\n\t\t\t\t\t  G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,\n\t\t\t\t\t  G_TYPE_BOOLEAN);\n\tmodel2 = GTK_TREE_MODEL(tree2);\n\n\tfor (parents[0] = NULL, i = 1; i < 256; i++)\n\t\tparents[i] = (GtkTreeIter *) g_malloc(sizeof(GtkTreeIter));\n\n\ttree1 = gtk_tree_store_new(COL_NUMBER,\n\t\t\t\t   G_TYPE_STRING, G_TYPE_STRING,\n\t\t\t\t   G_TYPE_STRING, G_TYPE_STRING,\n\t\t\t\t   G_TYPE_STRING, G_TYPE_STRING,\n\t\t\t\t   G_TYPE_POINTER, GDK_TYPE_COLOR,\n\t\t\t\t   G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF,\n\t\t\t\t   G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,\n\t\t\t\t   G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,\n\t\t\t\t   G_TYPE_BOOLEAN);\n\tmodel1 = GTK_TREE_MODEL(tree1);\n}\n\nvoid init_left_tree(void)\n{\n\tGtkTreeView *view = GTK_TREE_VIEW(tree1_w);\n\tGtkCellRenderer *renderer;\n\tGtkTreeSelection *sel;\n\tGtkTreeViewColumn *column;\n\n\tgtk_tree_view_set_model(view, model1);\n\tgtk_tree_view_set_headers_visible(view, TRUE);\n\tgtk_tree_view_set_rules_hint(view, TRUE);\n\n\tcolumn = gtk_tree_view_column_new();\n\tgtk_tree_view_append_column(view, column);\n\tgtk_tree_view_column_set_title(column, _(\"Options\"));\n\n\trenderer = gtk_cell_renderer_toggle_new();\n\tgtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),\n\t\t\t\t\trenderer, FALSE);\n\tgtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),\n\t\t\t\t\t    renderer,\n\t\t\t\t\t    \"active\", COL_BTNACT,\n\t\t\t\t\t    \"inconsistent\", COL_BTNINC,\n\t\t\t\t\t    \"visible\", COL_BTNVIS,\n\t\t\t\t\t    \"radio\", COL_BTNRAD, NULL);\n\trenderer = gtk_cell_renderer_text_new();\n\tgtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),\n\t\t\t\t\trenderer, FALSE);\n\tgtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),\n\t\t\t\t\t    renderer,\n\t\t\t\t\t    \"text\", COL_OPTION,\n\t\t\t\t\t    \"foreground-gdk\",\n\t\t\t\t\t    COL_COLOR, NULL);\n\n\tsel = gtk_tree_view_get_selection(view);\n\tgtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);\n\tgtk_widget_realize(tree1_w);\n}\n\nstatic void renderer_edited(GtkCellRendererText * cell,\n\t\t\t    const gchar * path_string,\n\t\t\t    const gchar * new_text, gpointer user_data);\n\nvoid init_right_tree(void)\n{\n\tGtkTreeView *view = GTK_TREE_VIEW(tree2_w);\n\tGtkCellRenderer *renderer;\n\tGtkTreeSelection *sel;\n\tGtkTreeViewColumn *column;\n\tgint i;\n\n\tgtk_tree_view_set_model(view, model2);\n\tgtk_tree_view_set_headers_visible(view, TRUE);\n\tgtk_tree_view_set_rules_hint(view, TRUE);\n\n\tcolumn = gtk_tree_view_column_new();\n\tgtk_tree_view_append_column(view, column);\n\tgtk_tree_view_column_set_title(column, _(\"Options\"));\n\n\trenderer = gtk_cell_renderer_pixbuf_new();\n\tgtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),\n\t\t\t\t\trenderer, FALSE);\n\tgtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),\n\t\t\t\t\t    renderer,\n\t\t\t\t\t    \"pixbuf\", COL_PIXBUF,\n\t\t\t\t\t    \"visible\", COL_PIXVIS, NULL);\n\trenderer = gtk_cell_renderer_toggle_new();\n\tgtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),\n\t\t\t\t\trenderer, FALSE);\n\tgtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),\n\t\t\t\t\t    renderer,\n\t\t\t\t\t    \"active\", COL_BTNACT,\n\t\t\t\t\t    \"inconsistent\", COL_BTNINC,\n\t\t\t\t\t    \"visible\", COL_BTNVIS,\n\t\t\t\t\t    \"radio\", COL_BTNRAD, NULL);\n\trenderer = gtk_cell_renderer_text_new();\n\tgtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),\n\t\t\t\t\trenderer, FALSE);\n\tgtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),\n\t\t\t\t\t    renderer,\n\t\t\t\t\t    \"text\", COL_OPTION,\n\t\t\t\t\t    \"foreground-gdk\",\n\t\t\t\t\t    COL_COLOR, NULL);\n\n\trenderer = gtk_cell_renderer_text_new();\n\tgtk_tree_view_insert_column_with_attributes(view, -1,\n\t\t\t\t\t\t    _(\"Name\"), renderer,\n\t\t\t\t\t\t    \"text\", COL_NAME,\n\t\t\t\t\t\t    \"foreground-gdk\",\n\t\t\t\t\t\t    COL_COLOR, NULL);\n\trenderer = gtk_cell_renderer_text_new();\n\tgtk_tree_view_insert_column_with_attributes(view, -1,\n\t\t\t\t\t\t    \"N\", renderer,\n\t\t\t\t\t\t    \"text\", COL_NO,\n\t\t\t\t\t\t    \"foreground-gdk\",\n\t\t\t\t\t\t    COL_COLOR, NULL);\n\trenderer = gtk_cell_renderer_text_new();\n\tgtk_tree_view_insert_column_with_attributes(view, -1,\n\t\t\t\t\t\t    \"M\", renderer,\n\t\t\t\t\t\t    \"text\", COL_MOD,\n\t\t\t\t\t\t    \"foreground-gdk\",\n\t\t\t\t\t\t    COL_COLOR, NULL);\n\trenderer = gtk_cell_renderer_text_new();\n\tgtk_tree_view_insert_column_with_attributes(view, -1,\n\t\t\t\t\t\t    \"Y\", renderer,\n\t\t\t\t\t\t    \"text\", COL_YES,\n\t\t\t\t\t\t    \"foreground-gdk\",\n\t\t\t\t\t\t    COL_COLOR, NULL);\n\trenderer = gtk_cell_renderer_text_new();\n\tgtk_tree_view_insert_column_with_attributes(view, -1,\n\t\t\t\t\t\t    _(\"Value\"), renderer,\n\t\t\t\t\t\t    \"text\", COL_VALUE,\n\t\t\t\t\t\t    \"editable\",\n\t\t\t\t\t\t    COL_EDIT,\n\t\t\t\t\t\t    \"foreground-gdk\",\n\t\t\t\t\t\t    COL_COLOR, NULL);\n\tg_signal_connect(G_OBJECT(renderer), \"edited\",\n\t\t\t G_CALLBACK(renderer_edited), NULL);\n\n\tcolumn = gtk_tree_view_get_column(view, COL_NAME);\n\tgtk_tree_view_column_set_visible(column, show_name);\n\tcolumn = gtk_tree_view_get_column(view, COL_NO);\n\tgtk_tree_view_column_set_visible(column, show_range);\n\tcolumn = gtk_tree_view_get_column(view, COL_MOD);\n\tgtk_tree_view_column_set_visible(column, show_range);\n\tcolumn = gtk_tree_view_get_column(view, COL_YES);\n\tgtk_tree_view_column_set_visible(column, show_range);\n\tcolumn = gtk_tree_view_get_column(view, COL_VALUE);\n\tgtk_tree_view_column_set_visible(column, show_value);\n\n\tif (resizeable) {\n\t\tfor (i = 0; i < COL_VALUE; i++) {\n\t\t\tcolumn = gtk_tree_view_get_column(view, i);\n\t\t\tgtk_tree_view_column_set_resizable(column, TRUE);\n\t\t}\n\t}\n\n\tsel = gtk_tree_view_get_selection(view);\n\tgtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);\n}\n\n\n/* Utility Functions */\n\n\nstatic void text_insert_help(struct menu *menu)\n{\n\tGtkTextBuffer *buffer;\n\tGtkTextIter start, end;\n\tconst char *prompt = _(menu_get_prompt(menu));\n\tstruct gstr help = str_new();\n\n\tmenu_get_ext_help(menu, &help);\n\n\tbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));\n\tgtk_text_buffer_get_bounds(buffer, &start, &end);\n\tgtk_text_buffer_delete(buffer, &start, &end);\n\tgtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15);\n\n\tgtk_text_buffer_get_end_iter(buffer, &end);\n\tgtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1,\n\t\t\t\t\t NULL);\n\tgtk_text_buffer_insert_at_cursor(buffer, \"\\n\\n\", 2);\n\tgtk_text_buffer_get_end_iter(buffer, &end);\n\tgtk_text_buffer_insert_with_tags(buffer, &end, str_get(&help), -1, tag2,\n\t\t\t\t\t NULL);\n\tstr_free(&help);\n}\n\n\nstatic void text_insert_msg(const char *title, const char *message)\n{\n\tGtkTextBuffer *buffer;\n\tGtkTextIter start, end;\n\tconst char *msg = message;\n\n\tbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));\n\tgtk_text_buffer_get_bounds(buffer, &start, &end);\n\tgtk_text_buffer_delete(buffer, &start, &end);\n\tgtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15);\n\n\tgtk_text_buffer_get_end_iter(buffer, &end);\n\tgtk_text_buffer_insert_with_tags(buffer, &end, title, -1, tag1,\n\t\t\t\t\t NULL);\n\tgtk_text_buffer_insert_at_cursor(buffer, \"\\n\\n\", 2);\n\tgtk_text_buffer_get_end_iter(buffer, &end);\n\tgtk_text_buffer_insert_with_tags(buffer, &end, msg, -1, tag2,\n\t\t\t\t\t NULL);\n}\n\n\n/* Main Windows Callbacks */\n\nvoid on_save_activate(GtkMenuItem * menuitem, gpointer user_data);\ngboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event,\n\t\t\t\t gpointer user_data)\n{\n\tGtkWidget *dialog, *label;\n\tgint result;\n\n\tif (!conf_get_changed())\n\t\treturn FALSE;\n\n\tdialog = gtk_dialog_new_with_buttons(_(\"Warning !\"),\n\t\t\t\t\t     GTK_WINDOW(main_wnd),\n\t\t\t\t\t     (GtkDialogFlags)\n\t\t\t\t\t     (GTK_DIALOG_MODAL |\n\t\t\t\t\t      GTK_DIALOG_DESTROY_WITH_PARENT),\n\t\t\t\t\t     GTK_STOCK_OK,\n\t\t\t\t\t     GTK_RESPONSE_YES,\n\t\t\t\t\t     GTK_STOCK_NO,\n\t\t\t\t\t     GTK_RESPONSE_NO,\n\t\t\t\t\t     GTK_STOCK_CANCEL,\n\t\t\t\t\t     GTK_RESPONSE_CANCEL, NULL);\n\tgtk_dialog_set_default_response(GTK_DIALOG(dialog),\n\t\t\t\t\tGTK_RESPONSE_CANCEL);\n\n\tlabel = gtk_label_new(_(\"\\nSave configuration ?\\n\"));\n\tgtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label);\n\tgtk_widget_show(label);\n\n\tresult = gtk_dialog_run(GTK_DIALOG(dialog));\n\tswitch (result) {\n\tcase GTK_RESPONSE_YES:\n\t\ton_save_activate(NULL, NULL);\n\t\treturn FALSE;\n\tcase GTK_RESPONSE_NO:\n\t\treturn FALSE;\n\tcase GTK_RESPONSE_CANCEL:\n\tcase GTK_RESPONSE_DELETE_EVENT:\n\tdefault:\n\t\tgtk_widget_destroy(dialog);\n\t\treturn TRUE;\n\t}\n\n\treturn FALSE;\n}\n\n\nvoid on_window1_destroy(GtkObject * object, gpointer user_data)\n{\n\tgtk_main_quit();\n}\n\n\nvoid\non_window1_size_request(GtkWidget * widget,\n\t\t\tGtkRequisition * requisition, gpointer user_data)\n{\n\tstatic gint old_h;\n\tgint w, h;\n\n\tif (widget->window == NULL)\n\t\tgtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h);\n\telse\n\t\tgdk_window_get_size(widget->window, &w, &h);\n\n\tif (h == old_h)\n\t\treturn;\n\told_h = h;\n\n\tgtk_paned_set_position(GTK_PANED(vpaned), 2 * h / 3);\n}\n\n\n/* Menu & Toolbar Callbacks */\n\n\nstatic void\nload_filename(GtkFileSelection * file_selector, gpointer user_data)\n{\n\tconst gchar *fn;\n\n\tfn = gtk_file_selection_get_filename(GTK_FILE_SELECTION\n\t\t\t\t\t     (user_data));\n\n\tif (conf_read(fn))\n\t\ttext_insert_msg(_(\"Error\"), _(\"Unable to load configuration !\"));\n\telse\n\t\tdisplay_tree(&rootmenu);\n}\n\nvoid on_load1_activate(GtkMenuItem * menuitem, gpointer user_data)\n{\n\tGtkWidget *fs;\n\n\tfs = gtk_file_selection_new(_(\"Load file...\"));\n\tg_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button),\n\t\t\t \"clicked\",\n\t\t\t G_CALLBACK(load_filename), (gpointer) fs);\n\tg_signal_connect_swapped(GTK_OBJECT\n\t\t\t\t (GTK_FILE_SELECTION(fs)->ok_button),\n\t\t\t\t \"clicked\", G_CALLBACK(gtk_widget_destroy),\n\t\t\t\t (gpointer) fs);\n\tg_signal_connect_swapped(GTK_OBJECT\n\t\t\t\t (GTK_FILE_SELECTION(fs)->cancel_button),\n\t\t\t\t \"clicked\", G_CALLBACK(gtk_widget_destroy),\n\t\t\t\t (gpointer) fs);\n\tgtk_widget_show(fs);\n}\n\n\nvoid on_save_activate(GtkMenuItem * menuitem, gpointer user_data)\n{\n\tif (conf_write(NULL))\n\t\ttext_insert_msg(_(\"Error\"), _(\"Unable to save configuration !\"));\n}\n\n\nstatic void\nstore_filename(GtkFileSelection * file_selector, gpointer user_data)\n{\n\tconst gchar *fn;\n\n\tfn = gtk_file_selection_get_filename(GTK_FILE_SELECTION\n\t\t\t\t\t     (user_data));\n\n\tif (conf_write(fn))\n\t\ttext_insert_msg(_(\"Error\"), _(\"Unable to save configuration !\"));\n\n\tgtk_widget_destroy(GTK_WIDGET(user_data));\n}\n\nvoid on_save_as1_activate(GtkMenuItem * menuitem, gpointer user_data)\n{\n\tGtkWidget *fs;\n\n\tfs = gtk_file_selection_new(_(\"Save file as...\"));\n\tg_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button),\n\t\t\t \"clicked\",\n\t\t\t G_CALLBACK(store_filename), (gpointer) fs);\n\tg_signal_connect_swapped(GTK_OBJECT\n\t\t\t\t (GTK_FILE_SELECTION(fs)->ok_button),\n\t\t\t\t \"clicked\", G_CALLBACK(gtk_widget_destroy),\n\t\t\t\t (gpointer) fs);\n\tg_signal_connect_swapped(GTK_OBJECT\n\t\t\t\t (GTK_FILE_SELECTION(fs)->cancel_button),\n\t\t\t\t \"clicked\", G_CALLBACK(gtk_widget_destroy),\n\t\t\t\t (gpointer) fs);\n\tgtk_widget_show(fs);\n}\n\n\nvoid on_quit1_activate(GtkMenuItem * menuitem, gpointer user_data)\n{\n\tif (!on_window1_delete_event(NULL, NULL, NULL))\n\t\tgtk_widget_destroy(GTK_WIDGET(main_wnd));\n}\n\n\nvoid on_show_name1_activate(GtkMenuItem * menuitem, gpointer user_data)\n{\n\tGtkTreeViewColumn *col;\n\n\tshow_name = GTK_CHECK_MENU_ITEM(menuitem)->active;\n\tcol = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NAME);\n\tif (col)\n\t\tgtk_tree_view_column_set_visible(col, show_name);\n}\n\n\nvoid on_show_range1_activate(GtkMenuItem * menuitem, gpointer user_data)\n{\n\tGtkTreeViewColumn *col;\n\n\tshow_range = GTK_CHECK_MENU_ITEM(menuitem)->active;\n\tcol = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NO);\n\tif (col)\n\t\tgtk_tree_view_column_set_visible(col, show_range);\n\tcol = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_MOD);\n\tif (col)\n\t\tgtk_tree_view_column_set_visible(col, show_range);\n\tcol = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_YES);\n\tif (col)\n\t\tgtk_tree_view_column_set_visible(col, show_range);\n\n}\n\n\nvoid on_show_data1_activate(GtkMenuItem * menuitem, gpointer user_data)\n{\n\tGtkTreeViewColumn *col;\n\n\tshow_value = GTK_CHECK_MENU_ITEM(menuitem)->active;\n\tcol = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_VALUE);\n\tif (col)\n\t\tgtk_tree_view_column_set_visible(col, show_value);\n}\n\n\nvoid\non_set_option_mode1_activate(GtkMenuItem *menuitem, gpointer user_data)\n{\n\topt_mode = OPT_NORMAL;\n\tgtk_tree_store_clear(tree2);\n\tdisplay_tree(&rootmenu);\t/* instead of update_tree to speed-up */\n}\n\n\nvoid\non_set_option_mode2_activate(GtkMenuItem *menuitem, gpointer user_data)\n{\n\topt_mode = OPT_ALL;\n\tgtk_tree_store_clear(tree2);\n\tdisplay_tree(&rootmenu);\t/* instead of update_tree to speed-up */\n}\n\n\nvoid\non_set_option_mode3_activate(GtkMenuItem *menuitem, gpointer user_data)\n{\n\topt_mode = OPT_PROMPT;\n\tgtk_tree_store_clear(tree2);\n\tdisplay_tree(&rootmenu);\t/* instead of update_tree to speed-up */\n}\n\n\nvoid on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data)\n{\n\tGtkWidget *dialog;\n\tconst gchar *intro_text = _(\n\t    \"Welcome to gkc, the GTK+ graphical configuration tool\\n\"\n\t    \"For each option, a blank box indicates the feature is disabled, a\\n\"\n\t    \"check indicates it is enabled, and a dot indicates that it is to\\n\"\n\t    \"be compiled as a module.  Clicking on the box will cycle through the three states.\\n\"\n\t    \"\\n\"\n\t    \"If you do not see an option (e.g., a device driver) that you\\n\"\n\t    \"believe should be present, try turning on Show All Options\\n\"\n\t    \"under the Options menu.\\n\"\n\t    \"Although there is no cross reference yet to help you figure out\\n\"\n\t    \"what other options must be enabled to support the option you\\n\"\n\t    \"are interested in, you can still view the help of a grayed-out\\n\"\n\t    \"option.\\n\"\n\t    \"\\n\"\n\t    \"Toggling Show Debug Info under the Options menu will show \\n\"\n\t    \"the dependencies, which you can then match by examining other options.\");\n\n\tdialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd),\n\t\t\t\t\tGTK_DIALOG_DESTROY_WITH_PARENT,\n\t\t\t\t\tGTK_MESSAGE_INFO,\n\t\t\t\t\tGTK_BUTTONS_CLOSE, \"%s\", intro_text);\n\tg_signal_connect_swapped(GTK_OBJECT(dialog), \"response\",\n\t\t\t\t G_CALLBACK(gtk_widget_destroy),\n\t\t\t\t GTK_OBJECT(dialog));\n\tgtk_widget_show_all(dialog);\n}\n\n\nvoid on_about1_activate(GtkMenuItem * menuitem, gpointer user_data)\n{\n\tGtkWidget *dialog;\n\tconst gchar *about_text =\n\t    _(\"gkc is copyright (c) 2002 Romain Lievin <roms@lpg.ticalc.org>.\\n\"\n\t      \"Based on the source code from Roman Zippel.\\n\");\n\n\tdialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd),\n\t\t\t\t\tGTK_DIALOG_DESTROY_WITH_PARENT,\n\t\t\t\t\tGTK_MESSAGE_INFO,\n\t\t\t\t\tGTK_BUTTONS_CLOSE, \"%s\", about_text);\n\tg_signal_connect_swapped(GTK_OBJECT(dialog), \"response\",\n\t\t\t\t G_CALLBACK(gtk_widget_destroy),\n\t\t\t\t GTK_OBJECT(dialog));\n\tgtk_widget_show_all(dialog);\n}\n\n\nvoid on_license1_activate(GtkMenuItem * menuitem, gpointer user_data)\n{\n\tGtkWidget *dialog;\n\tconst gchar *license_text =\n\t    _(\"gkc is released under the terms of the GNU GPL v2.\\n\"\n\t      \"For more information, please see the source code or\\n\"\n\t      \"visit http://www.fsf.org/licenses/licenses.html\\n\");\n\n\tdialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd),\n\t\t\t\t\tGTK_DIALOG_DESTROY_WITH_PARENT,\n\t\t\t\t\tGTK_MESSAGE_INFO,\n\t\t\t\t\tGTK_BUTTONS_CLOSE, \"%s\", license_text);\n\tg_signal_connect_swapped(GTK_OBJECT(dialog), \"response\",\n\t\t\t\t G_CALLBACK(gtk_widget_destroy),\n\t\t\t\t GTK_OBJECT(dialog));\n\tgtk_widget_show_all(dialog);\n}\n\n\nvoid on_back_clicked(GtkButton * button, gpointer user_data)\n{\n\tenum prop_type ptype;\n\n\tcurrent = current->parent;\n\tptype = current->prompt ? current->prompt->type : P_UNKNOWN;\n\tif (ptype != P_MENU)\n\t\tcurrent = current->parent;\n\tdisplay_tree_part();\n\n\tif (current == &rootmenu)\n\t\tgtk_widget_set_sensitive(back_btn, FALSE);\n}\n\n\nvoid on_load_clicked(GtkButton * button, gpointer user_data)\n{\n\ton_load1_activate(NULL, user_data);\n}\n\n\nvoid on_single_clicked(GtkButton * button, gpointer user_data)\n{\n\tview_mode = SINGLE_VIEW;\n\tgtk_widget_hide(tree1_w);\n\tcurrent = &rootmenu;\n\tdisplay_tree_part();\n}\n\n\nvoid on_split_clicked(GtkButton * button, gpointer user_data)\n{\n\tgint w, h;\n\tview_mode = SPLIT_VIEW;\n\tgtk_widget_show(tree1_w);\n\tgtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h);\n\tgtk_paned_set_position(GTK_PANED(hpaned), w / 2);\n\tif (tree2)\n\t\tgtk_tree_store_clear(tree2);\n\tdisplay_list();\n\n\t/* Disable back btn, like in full mode. */\n\tgtk_widget_set_sensitive(back_btn, FALSE);\n}\n\n\nvoid on_full_clicked(GtkButton * button, gpointer user_data)\n{\n\tview_mode = FULL_VIEW;\n\tgtk_widget_hide(tree1_w);\n\tif (tree2)\n\t\tgtk_tree_store_clear(tree2);\n\tdisplay_tree(&rootmenu);\n\tgtk_widget_set_sensitive(back_btn, FALSE);\n}\n\n\nvoid on_collapse_clicked(GtkButton * button, gpointer user_data)\n{\n\tgtk_tree_view_collapse_all(GTK_TREE_VIEW(tree2_w));\n}\n\n\nvoid on_expand_clicked(GtkButton * button, gpointer user_data)\n{\n\tgtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w));\n}\n\n\n/* CTree Callbacks */\n\n/* Change hex/int/string value in the cell */\nstatic void renderer_edited(GtkCellRendererText * cell,\n\t\t\t    const gchar * path_string,\n\t\t\t    const gchar * new_text, gpointer user_data)\n{\n\tGtkTreePath *path = gtk_tree_path_new_from_string(path_string);\n\tGtkTreeIter iter;\n\tconst char *old_def, *new_def;\n\tstruct menu *menu;\n\tstruct symbol *sym;\n\n\tif (!gtk_tree_model_get_iter(model2, &iter, path))\n\t\treturn;\n\n\tgtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);\n\tsym = menu->sym;\n\n\tgtk_tree_model_get(model2, &iter, COL_VALUE, &old_def, -1);\n\tnew_def = new_text;\n\n\tsym_set_string_value(sym, new_def);\n\n\tupdate_tree(&rootmenu, NULL);\n\n\tgtk_tree_path_free(path);\n}\n\n/* Change the value of a symbol and update the tree */\nstatic void change_sym_value(struct menu *menu, gint col)\n{\n\tstruct symbol *sym = menu->sym;\n\ttristate newval;\n\n\tif (!sym)\n\t\treturn;\n\n\tif (col == COL_NO)\n\t\tnewval = no;\n\telse if (col == COL_MOD)\n\t\tnewval = mod;\n\telse if (col == COL_YES)\n\t\tnewval = yes;\n\telse\n\t\treturn;\n\n\tswitch (sym_get_type(sym)) {\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\tif (!sym_tristate_within_range(sym, newval))\n\t\t\tnewval = yes;\n\t\tsym_set_tristate_value(sym, newval);\n\t\tif (view_mode == FULL_VIEW)\n\t\t\tupdate_tree(&rootmenu, NULL);\n\t\telse if (view_mode == SPLIT_VIEW) {\n\t\t\tupdate_tree(browsed, NULL);\n\t\t\tdisplay_list();\n\t\t}\n\t\telse if (view_mode == SINGLE_VIEW)\n\t\t\tdisplay_tree_part();\t//fixme: keep exp/coll\n\t\tbreak;\n\tcase S_INT:\n\tcase S_HEX:\n\tcase S_STRING:\n\tdefault:\n\t\tbreak;\n\t}\n}\n\nstatic void toggle_sym_value(struct menu *menu)\n{\n\tif (!menu->sym)\n\t\treturn;\n\n\tsym_toggle_tristate_value(menu->sym);\n\tif (view_mode == FULL_VIEW)\n\t\tupdate_tree(&rootmenu, NULL);\n\telse if (view_mode == SPLIT_VIEW) {\n\t\tupdate_tree(browsed, NULL);\n\t\tdisplay_list();\n\t}\n\telse if (view_mode == SINGLE_VIEW)\n\t\tdisplay_tree_part();\t//fixme: keep exp/coll\n}\n\nstatic gint column2index(GtkTreeViewColumn * column)\n{\n\tgint i;\n\n\tfor (i = 0; i < COL_NUMBER; i++) {\n\t\tGtkTreeViewColumn *col;\n\n\t\tcol = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), i);\n\t\tif (col == column)\n\t\t\treturn i;\n\t}\n\n\treturn -1;\n}\n\n\n/* User click: update choice (full) or goes down (single) */\ngboolean\non_treeview2_button_press_event(GtkWidget * widget,\n\t\t\t\tGdkEventButton * event, gpointer user_data)\n{\n\tGtkTreeView *view = GTK_TREE_VIEW(widget);\n\tGtkTreePath *path;\n\tGtkTreeViewColumn *column;\n\tGtkTreeIter iter;\n\tstruct menu *menu;\n\tgint col;\n\n#if GTK_CHECK_VERSION(2,1,4) // bug in ctree with earlier version of GTK\n\tgint tx = (gint) event->x;\n\tgint ty = (gint) event->y;\n\tgint cx, cy;\n\n\tgtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx,\n\t\t\t\t      &cy);\n#else\n\tgtk_tree_view_get_cursor(view, &path, &column);\n#endif\n\tif (path == NULL)\n\t\treturn FALSE;\n\n\tif (!gtk_tree_model_get_iter(model2, &iter, path))\n\t\treturn FALSE;\n\tgtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);\n\n\tcol = column2index(column);\n\tif (event->type == GDK_2BUTTON_PRESS) {\n\t\tenum prop_type ptype;\n\t\tptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;\n\n\t\tif (ptype == P_MENU && view_mode != FULL_VIEW && col == COL_OPTION) {\n\t\t\t// goes down into menu\n\t\t\tcurrent = menu;\n\t\t\tdisplay_tree_part();\n\t\t\tgtk_widget_set_sensitive(back_btn, TRUE);\n\t\t} else if (col == COL_OPTION) {\n\t\t\ttoggle_sym_value(menu);\n\t\t\tgtk_tree_view_expand_row(view, path, TRUE);\n\t\t}\n\t} else {\n\t\tif (col == COL_VALUE) {\n\t\t\ttoggle_sym_value(menu);\n\t\t\tgtk_tree_view_expand_row(view, path, TRUE);\n\t\t} else if (col == COL_NO || col == COL_MOD\n\t\t\t   || col == COL_YES) {\n\t\t\tchange_sym_value(menu, col);\n\t\t\tgtk_tree_view_expand_row(view, path, TRUE);\n\t\t}\n\t}\n\n\treturn FALSE;\n}\n\n/* Key pressed: update choice */\ngboolean\non_treeview2_key_press_event(GtkWidget * widget,\n\t\t\t     GdkEventKey * event, gpointer user_data)\n{\n\tGtkTreeView *view = GTK_TREE_VIEW(widget);\n\tGtkTreePath *path;\n\tGtkTreeViewColumn *column;\n\tGtkTreeIter iter;\n\tstruct menu *menu;\n\tgint col;\n\n\tgtk_tree_view_get_cursor(view, &path, &column);\n\tif (path == NULL)\n\t\treturn FALSE;\n\n\tif (event->keyval == GDK_space) {\n\t\tif (gtk_tree_view_row_expanded(view, path))\n\t\t\tgtk_tree_view_collapse_row(view, path);\n\t\telse\n\t\t\tgtk_tree_view_expand_row(view, path, FALSE);\n\t\treturn TRUE;\n\t}\n\tif (event->keyval == GDK_KP_Enter) {\n\t}\n\tif (widget == tree1_w)\n\t\treturn FALSE;\n\n\tgtk_tree_model_get_iter(model2, &iter, path);\n\tgtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);\n\n\tif (!strcasecmp(event->string, \"n\"))\n\t\tcol = COL_NO;\n\telse if (!strcasecmp(event->string, \"m\"))\n\t\tcol = COL_MOD;\n\telse if (!strcasecmp(event->string, \"y\"))\n\t\tcol = COL_YES;\n\telse\n\t\tcol = -1;\n\tchange_sym_value(menu, col);\n\n\treturn FALSE;\n}\n\n\n/* Row selection changed: update help */\nvoid\non_treeview2_cursor_changed(GtkTreeView * treeview, gpointer user_data)\n{\n\tGtkTreeSelection *selection;\n\tGtkTreeIter iter;\n\tstruct menu *menu;\n\n\tselection = gtk_tree_view_get_selection(treeview);\n\tif (gtk_tree_selection_get_selected(selection, &model2, &iter)) {\n\t\tgtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);\n\t\ttext_insert_help(menu);\n\t}\n}\n\n\n/* User click: display sub-tree in the right frame. */\ngboolean\non_treeview1_button_press_event(GtkWidget * widget,\n\t\t\t\tGdkEventButton * event, gpointer user_data)\n{\n\tGtkTreeView *view = GTK_TREE_VIEW(widget);\n\tGtkTreePath *path;\n\tGtkTreeViewColumn *column;\n\tGtkTreeIter iter;\n\tstruct menu *menu;\n\n\tgint tx = (gint) event->x;\n\tgint ty = (gint) event->y;\n\tgint cx, cy;\n\n\tgtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx,\n\t\t\t\t      &cy);\n\tif (path == NULL)\n\t\treturn FALSE;\n\n\tgtk_tree_model_get_iter(model1, &iter, path);\n\tgtk_tree_model_get(model1, &iter, COL_MENU, &menu, -1);\n\n\tif (event->type == GDK_2BUTTON_PRESS) {\n\t\ttoggle_sym_value(menu);\n\t\tcurrent = menu;\n\t\tdisplay_tree_part();\n\t} else {\n\t\tbrowsed = menu;\n\t\tdisplay_tree_part();\n\t}\n\n\tgtk_widget_realize(tree2_w);\n\tgtk_tree_view_set_cursor(view, path, NULL, FALSE);\n\tgtk_widget_grab_focus(tree2_w);\n\n\treturn FALSE;\n}\n\n\n/* Fill a row of strings */\nstatic gchar **fill_row(struct menu *menu)\n{\n\tstatic gchar *row[COL_NUMBER];\n\tstruct symbol *sym = menu->sym;\n\tconst char *def;\n\tint stype;\n\ttristate val;\n\tenum prop_type ptype;\n\tint i;\n\n\tfor (i = COL_OPTION; i <= COL_COLOR; i++)\n\t\tg_free(row[i]);\n\tbzero(row, sizeof(row));\n\n\trow[COL_OPTION] =\n\t    g_strdup_printf(\"%s %s\", _(menu_get_prompt(menu)),\n\t\t\t    sym && !sym_has_value(sym) ? \"(NEW)\" : \"\");\n\n\tif (opt_mode == OPT_ALL && !menu_is_visible(menu))\n\t\trow[COL_COLOR] = g_strdup(\"DarkGray\");\n\telse if (opt_mode == OPT_PROMPT &&\n\t\t\tmenu_has_prompt(menu) && !menu_is_visible(menu))\n\t\trow[COL_COLOR] = g_strdup(\"DarkGray\");\n\telse\n\t\trow[COL_COLOR] = g_strdup(\"Black\");\n\n\tptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;\n\tswitch (ptype) {\n\tcase P_MENU:\n\t\trow[COL_PIXBUF] = (gchar *) xpm_menu;\n\t\tif (view_mode == SINGLE_VIEW)\n\t\t\trow[COL_PIXVIS] = GINT_TO_POINTER(TRUE);\n\t\trow[COL_BTNVIS] = GINT_TO_POINTER(FALSE);\n\t\tbreak;\n\tcase P_COMMENT:\n\t\trow[COL_PIXBUF] = (gchar *) xpm_void;\n\t\trow[COL_PIXVIS] = GINT_TO_POINTER(FALSE);\n\t\trow[COL_BTNVIS] = GINT_TO_POINTER(FALSE);\n\t\tbreak;\n\tdefault:\n\t\trow[COL_PIXBUF] = (gchar *) xpm_void;\n\t\trow[COL_PIXVIS] = GINT_TO_POINTER(FALSE);\n\t\trow[COL_BTNVIS] = GINT_TO_POINTER(TRUE);\n\t\tbreak;\n\t}\n\n\tif (!sym)\n\t\treturn row;\n\trow[COL_NAME] = g_strdup(sym->name);\n\n\tsym_calc_value(sym);\n\tsym->flags &= ~SYMBOL_CHANGED;\n\n\tif (sym_is_choice(sym)) {\t// parse childs for getting final value\n\t\tstruct menu *child;\n\t\tstruct symbol *def_sym = sym_get_choice_value(sym);\n\t\tstruct menu *def_menu = NULL;\n\n\t\trow[COL_BTNVIS] = GINT_TO_POINTER(FALSE);\n\n\t\tfor (child = menu->list; child; child = child->next) {\n\t\t\tif (menu_is_visible(child)\n\t\t\t    && child->sym == def_sym)\n\t\t\t\tdef_menu = child;\n\t\t}\n\n\t\tif (def_menu)\n\t\t\trow[COL_VALUE] =\n\t\t\t    g_strdup(_(menu_get_prompt(def_menu)));\n\t}\n\tif (sym->flags & SYMBOL_CHOICEVAL)\n\t\trow[COL_BTNRAD] = GINT_TO_POINTER(TRUE);\n\n\tstype = sym_get_type(sym);\n\tswitch (stype) {\n\tcase S_BOOLEAN:\n\t\tif (GPOINTER_TO_INT(row[COL_PIXVIS]) == FALSE)\n\t\t\trow[COL_BTNVIS] = GINT_TO_POINTER(TRUE);\n\t\tif (sym_is_choice(sym))\n\t\t\tbreak;\n\t\t/* fall through */\n\tcase S_TRISTATE:\n\t\tval = sym_get_tristate_value(sym);\n\t\tswitch (val) {\n\t\tcase no:\n\t\t\trow[COL_NO] = g_strdup(\"N\");\n\t\t\trow[COL_VALUE] = g_strdup(\"N\");\n\t\t\trow[COL_BTNACT] = GINT_TO_POINTER(FALSE);\n\t\t\trow[COL_BTNINC] = GINT_TO_POINTER(FALSE);\n\t\t\tbreak;\n\t\tcase mod:\n\t\t\trow[COL_MOD] = g_strdup(\"M\");\n\t\t\trow[COL_VALUE] = g_strdup(\"M\");\n\t\t\trow[COL_BTNINC] = GINT_TO_POINTER(TRUE);\n\t\t\tbreak;\n\t\tcase yes:\n\t\t\trow[COL_YES] = g_strdup(\"Y\");\n\t\t\trow[COL_VALUE] = g_strdup(\"Y\");\n\t\t\trow[COL_BTNACT] = GINT_TO_POINTER(TRUE);\n\t\t\trow[COL_BTNINC] = GINT_TO_POINTER(FALSE);\n\t\t\tbreak;\n\t\t}\n\n\t\tif (val != no && sym_tristate_within_range(sym, no))\n\t\t\trow[COL_NO] = g_strdup(\"_\");\n\t\tif (val != mod && sym_tristate_within_range(sym, mod))\n\t\t\trow[COL_MOD] = g_strdup(\"_\");\n\t\tif (val != yes && sym_tristate_within_range(sym, yes))\n\t\t\trow[COL_YES] = g_strdup(\"_\");\n\t\tbreak;\n\tcase S_INT:\n\tcase S_HEX:\n\tcase S_STRING:\n\t\tdef = sym_get_string_value(sym);\n\t\trow[COL_VALUE] = g_strdup(def);\n\t\trow[COL_EDIT] = GINT_TO_POINTER(TRUE);\n\t\trow[COL_BTNVIS] = GINT_TO_POINTER(FALSE);\n\t\tbreak;\n\t}\n\n\treturn row;\n}\n\n\n/* Set the node content with a row of strings */\nstatic void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row)\n{\n\tGdkColor color;\n\tgboolean success;\n\tGdkPixbuf *pix;\n\n\tpix = gdk_pixbuf_new_from_xpm_data((const char **)\n\t\t\t\t\t   row[COL_PIXBUF]);\n\n\tgdk_color_parse(row[COL_COLOR], &color);\n\tgdk_colormap_alloc_colors(gdk_colormap_get_system(), &color, 1,\n\t\t\t\t  FALSE, FALSE, &success);\n\n\tgtk_tree_store_set(tree, node,\n\t\t\t   COL_OPTION, row[COL_OPTION],\n\t\t\t   COL_NAME, row[COL_NAME],\n\t\t\t   COL_NO, row[COL_NO],\n\t\t\t   COL_MOD, row[COL_MOD],\n\t\t\t   COL_YES, row[COL_YES],\n\t\t\t   COL_VALUE, row[COL_VALUE],\n\t\t\t   COL_MENU, (gpointer) menu,\n\t\t\t   COL_COLOR, &color,\n\t\t\t   COL_EDIT, GPOINTER_TO_INT(row[COL_EDIT]),\n\t\t\t   COL_PIXBUF, pix,\n\t\t\t   COL_PIXVIS, GPOINTER_TO_INT(row[COL_PIXVIS]),\n\t\t\t   COL_BTNVIS, GPOINTER_TO_INT(row[COL_BTNVIS]),\n\t\t\t   COL_BTNACT, GPOINTER_TO_INT(row[COL_BTNACT]),\n\t\t\t   COL_BTNINC, GPOINTER_TO_INT(row[COL_BTNINC]),\n\t\t\t   COL_BTNRAD, GPOINTER_TO_INT(row[COL_BTNRAD]),\n\t\t\t   -1);\n\n\tg_object_unref(pix);\n}\n\n\n/* Add a node to the tree */\nstatic void place_node(struct menu *menu, char **row)\n{\n\tGtkTreeIter *parent = parents[indent - 1];\n\tGtkTreeIter *node = parents[indent];\n\n\tgtk_tree_store_append(tree, node, parent);\n\tset_node(node, menu, row);\n}\n\n\n/* Find a node in the GTK+ tree */\nstatic GtkTreeIter found;\n\n/*\n * Find a menu in the GtkTree starting at parent.\n */\nGtkTreeIter *gtktree_iter_find_node(GtkTreeIter * parent,\n\t\t\t\t    struct menu *tofind)\n{\n\tGtkTreeIter iter;\n\tGtkTreeIter *child = &iter;\n\tgboolean valid;\n\tGtkTreeIter *ret;\n\n\tvalid = gtk_tree_model_iter_children(model2, child, parent);\n\twhile (valid) {\n\t\tstruct menu *menu;\n\n\t\tgtk_tree_model_get(model2, child, 6, &menu, -1);\n\n\t\tif (menu == tofind) {\n\t\t\tmemcpy(&found, child, sizeof(GtkTreeIter));\n\t\t\treturn &found;\n\t\t}\n\n\t\tret = gtktree_iter_find_node(child, tofind);\n\t\tif (ret)\n\t\t\treturn ret;\n\n\t\tvalid = gtk_tree_model_iter_next(model2, child);\n\t}\n\n\treturn NULL;\n}\n\n\n/*\n * Update the tree by adding/removing entries\n * Does not change other nodes\n */\nstatic void update_tree(struct menu *src, GtkTreeIter * dst)\n{\n\tstruct menu *child1;\n\tGtkTreeIter iter, tmp;\n\tGtkTreeIter *child2 = &iter;\n\tgboolean valid;\n\tGtkTreeIter *sibling;\n\tstruct symbol *sym;\n\tstruct menu *menu1, *menu2;\n\n\tif (src == &rootmenu)\n\t\tindent = 1;\n\n\tvalid = gtk_tree_model_iter_children(model2, child2, dst);\n\tfor (child1 = src->list; child1; child1 = child1->next) {\n\n\t\tsym = child1->sym;\n\n\t      reparse:\n\t\tmenu1 = child1;\n\t\tif (valid)\n\t\t\tgtk_tree_model_get(model2, child2, COL_MENU,\n\t\t\t\t\t   &menu2, -1);\n\t\telse\n\t\t\tmenu2 = NULL;\t// force adding of a first child\n\n#ifdef DEBUG\n\t\tprintf(\"%*c%s | %s\\n\", indent, ' ',\n\t\t       menu1 ? menu_get_prompt(menu1) : \"nil\",\n\t\t       menu2 ? menu_get_prompt(menu2) : \"nil\");\n#endif\n\n\t\tif ((opt_mode == OPT_NORMAL && !menu_is_visible(child1)) ||\n\t\t    (opt_mode == OPT_PROMPT && !menu_has_prompt(child1)) ||\n\t\t    (opt_mode == OPT_ALL    && !menu_get_prompt(child1))) {\n\n\t\t\t/* remove node */\n\t\t\tif (gtktree_iter_find_node(dst, menu1) != NULL) {\n\t\t\t\tmemcpy(&tmp, child2, sizeof(GtkTreeIter));\n\t\t\t\tvalid = gtk_tree_model_iter_next(model2,\n\t\t\t\t\t\t\t\t child2);\n\t\t\t\tgtk_tree_store_remove(tree2, &tmp);\n\t\t\t\tif (!valid)\n\t\t\t\t\treturn;\t\t/* next parent */\n\t\t\t\telse\n\t\t\t\t\tgoto reparse;\t/* next child */\n\t\t\t} else\n\t\t\t\tcontinue;\n\t\t}\n\n\t\tif (menu1 != menu2) {\n\t\t\tif (gtktree_iter_find_node(dst, menu1) == NULL) {\t// add node\n\t\t\t\tif (!valid && !menu2)\n\t\t\t\t\tsibling = NULL;\n\t\t\t\telse\n\t\t\t\t\tsibling = child2;\n\t\t\t\tgtk_tree_store_insert_before(tree2,\n\t\t\t\t\t\t\t     child2,\n\t\t\t\t\t\t\t     dst, sibling);\n\t\t\t\tset_node(child2, menu1, fill_row(menu1));\n\t\t\t\tif (menu2 == NULL)\n\t\t\t\t\tvalid = TRUE;\n\t\t\t} else {\t// remove node\n\t\t\t\tmemcpy(&tmp, child2, sizeof(GtkTreeIter));\n\t\t\t\tvalid = gtk_tree_model_iter_next(model2,\n\t\t\t\t\t\t\t\t child2);\n\t\t\t\tgtk_tree_store_remove(tree2, &tmp);\n\t\t\t\tif (!valid)\n\t\t\t\t\treturn;\t// next parent\n\t\t\t\telse\n\t\t\t\t\tgoto reparse;\t// next child\n\t\t\t}\n\t\t} else if (sym && (sym->flags & SYMBOL_CHANGED)) {\n\t\t\tset_node(child2, menu1, fill_row(menu1));\n\t\t}\n\n\t\tindent++;\n\t\tupdate_tree(child1, child2);\n\t\tindent--;\n\n\t\tvalid = gtk_tree_model_iter_next(model2, child2);\n\t}\n}\n\n\n/* Display the whole tree (single/split/full view) */\nstatic void display_tree(struct menu *menu)\n{\n\tstruct symbol *sym;\n\tstruct property *prop;\n\tstruct menu *child;\n\tenum prop_type ptype;\n\n\tif (menu == &rootmenu) {\n\t\tindent = 1;\n\t\tcurrent = &rootmenu;\n\t}\n\n\tfor (child = menu->list; child; child = child->next) {\n\t\tprop = child->prompt;\n\t\tsym = child->sym;\n\t\tptype = prop ? prop->type : P_UNKNOWN;\n\n\t\tif (sym)\n\t\t\tsym->flags &= ~SYMBOL_CHANGED;\n\n\t\tif ((view_mode == SPLIT_VIEW)\n\t\t    && !(child->flags & MENU_ROOT) && (tree == tree1))\n\t\t\tcontinue;\n\n\t\tif ((view_mode == SPLIT_VIEW) && (child->flags & MENU_ROOT)\n\t\t    && (tree == tree2))\n\t\t\tcontinue;\n\n\t\tif ((opt_mode == OPT_NORMAL && menu_is_visible(child)) ||\n\t\t    (opt_mode == OPT_PROMPT && menu_has_prompt(child)) ||\n\t\t    (opt_mode == OPT_ALL    && menu_get_prompt(child)))\n\t\t\tplace_node(child, fill_row(child));\n#ifdef DEBUG\n\t\tprintf(\"%*c%s: \", indent, ' ', menu_get_prompt(child));\n\t\tprintf(\"%s\", child->flags & MENU_ROOT ? \"rootmenu | \" : \"\");\n\t\tprintf(\"%s\", prop_get_type_name(ptype));\n\t\tprintf(\" | \");\n\t\tif (sym) {\n\t\t\tprintf(\"%s\", sym_type_name(sym->type));\n\t\t\tprintf(\" | \");\n\t\t\tprintf(\"%s\", dbg_sym_flags(sym->flags));\n\t\t\tprintf(\"\\n\");\n\t\t} else\n\t\t\tprintf(\"\\n\");\n#endif\n\t\tif ((view_mode != FULL_VIEW) && (ptype == P_MENU)\n\t\t    && (tree == tree2))\n\t\t\tcontinue;\n/*\n\t\tif (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))\n\t\t    || (view_mode == FULL_VIEW)\n\t\t    || (view_mode == SPLIT_VIEW))*/\n\n\t\t/* Change paned position if the view is not in 'split mode' */\n\t\tif (view_mode == SINGLE_VIEW || view_mode == FULL_VIEW) {\n\t\t\tgtk_paned_set_position(GTK_PANED(hpaned), 0);\n\t\t}\n\n\t\tif (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT))\n\t\t    || (view_mode == FULL_VIEW)\n\t\t    || (view_mode == SPLIT_VIEW)) {\n\t\t\tindent++;\n\t\t\tdisplay_tree(child);\n\t\t\tindent--;\n\t\t}\n\t}\n}\n\n/* Display a part of the tree starting at current node (single/split view) */\nstatic void display_tree_part(void)\n{\n\tif (tree2)\n\t\tgtk_tree_store_clear(tree2);\n\tif (view_mode == SINGLE_VIEW)\n\t\tdisplay_tree(current);\n\telse if (view_mode == SPLIT_VIEW)\n\t\tdisplay_tree(browsed);\n\tgtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w));\n}\n\n/* Display the list in the left frame (split view) */\nstatic void display_list(void)\n{\n\tif (tree1)\n\t\tgtk_tree_store_clear(tree1);\n\n\ttree = tree1;\n\tdisplay_tree(&rootmenu);\n\tgtk_tree_view_expand_all(GTK_TREE_VIEW(tree1_w));\n\ttree = tree2;\n}\n\nvoid fixup_rootmenu(struct menu *menu)\n{\n\tstruct menu *child;\n\tstatic int menu_cnt = 0;\n\n\tmenu->flags |= MENU_ROOT;\n\tfor (child = menu->list; child; child = child->next) {\n\t\tif (child->prompt && child->prompt->type == P_MENU) {\n\t\t\tmenu_cnt++;\n\t\t\tfixup_rootmenu(child);\n\t\t\tmenu_cnt--;\n\t\t} else if (!menu_cnt)\n\t\t\tfixup_rootmenu(child);\n\t}\n}\n\n\n/* Main */\nint main(int ac, char *av[])\n{\n\tconst char *name;\n\tchar *env;\n\tgchar *glade_file;\n\n\tbindtextdomain(PACKAGE, LOCALEDIR);\n\tbind_textdomain_codeset(PACKAGE, \"UTF-8\");\n\ttextdomain(PACKAGE);\n\n\t/* GTK stuffs */\n\tgtk_set_locale();\n\tgtk_init(&ac, &av);\n\tglade_init();\n\n\t//add_pixmap_directory (PACKAGE_DATA_DIR \"/\" PACKAGE \"/pixmaps\");\n\t//add_pixmap_directory (PACKAGE_SOURCE_DIR \"/pixmaps\");\n\n\t/* Determine GUI path */\n\tenv = getenv(SRCTREE);\n\tif (env)\n\t\tglade_file = g_strconcat(env, \"/support/kconfig/gconf.glade\", NULL);\n\telse if (av[0][0] == '/')\n\t\tglade_file = g_strconcat(av[0], \".glade\", NULL);\n\telse\n\t\tglade_file = g_strconcat(g_get_current_dir(), \"/\", av[0], \".glade\", NULL);\n\n\t/* Conf stuffs */\n\tif (ac > 1 && av[1][0] == '-') {\n\t\tswitch (av[1][1]) {\n\t\tcase 'a':\n\t\t\t//showAll = 1;\n\t\t\tbreak;\n\t\tcase 's':\n\t\t\tconf_set_message_callback(NULL);\n\t\t\tbreak;\n\t\tcase 'h':\n\t\tcase '?':\n\t\t\tprintf(\"%s [-s] <config>\\n\", av[0]);\n\t\t\texit(0);\n\t\t}\n\t\tname = av[2];\n\t} else\n\t\tname = av[1];\n\n\tconf_parse(name);\n\tfixup_rootmenu(&rootmenu);\n\tconf_read(NULL);\n\n\t/* Load the interface and connect signals */\n\tinit_main_window(glade_file);\n\tinit_tree_model();\n\tinit_left_tree();\n\tinit_right_tree();\n\n\tswitch (view_mode) {\n\tcase SINGLE_VIEW:\n\t\tdisplay_tree_part();\n\t\tbreak;\n\tcase SPLIT_VIEW:\n\t\tdisplay_list();\n\t\tbreak;\n\tcase FULL_VIEW:\n\t\tdisplay_tree(&rootmenu);\n\t\tbreak;\n\t}\n\n\tgtk_main();\n\n\treturn 0;\n}\n\nstatic void conf_changed(void)\n{\n\tbool changed = conf_get_changed();\n\tgtk_widget_set_sensitive(save_btn, changed);\n\tgtk_widget_set_sensitive(save_menu_item, changed);\n}\n"
  },
  {
    "path": "support/kconfig/gconf.glade",
    "content": "<?xml version=\"1.0\" standalone=\"no\"?> <!--*- mode: xml -*-->\n\n<glade-interface>\n\n<widget class=\"GtkWindow\" id=\"window1\">\n  <property name=\"visible\">True</property>\n  <property name=\"title\" translatable=\"yes\">Gtk Buildroot Configurator</property>\n  <property name=\"type\">GTK_WINDOW_TOPLEVEL</property>\n  <property name=\"window_position\">GTK_WIN_POS_NONE</property>\n  <property name=\"modal\">False</property>\n  <property name=\"default_width\">640</property>\n  <property name=\"default_height\">480</property>\n  <property name=\"resizable\">True</property>\n  <property name=\"destroy_with_parent\">False</property>\n  <property name=\"decorated\">True</property>\n  <property name=\"skip_taskbar_hint\">False</property>\n  <property name=\"skip_pager_hint\">False</property>\n  <property name=\"type_hint\">GDK_WINDOW_TYPE_HINT_NORMAL</property>\n  <property name=\"gravity\">GDK_GRAVITY_NORTH_WEST</property>\n  <signal name=\"destroy\" handler=\"on_window1_destroy\" object=\"window1\"/>\n  <signal name=\"size_request\" handler=\"on_window1_size_request\" object=\"vpaned1\" last_modification_time=\"Fri, 11 Jan 2002 16:17:11 GMT\"/>\n  <signal name=\"delete_event\" handler=\"on_window1_delete_event\" object=\"window1\" last_modification_time=\"Sun, 09 Mar 2003 19:42:46 GMT\"/>\n\n  <child>\n    <widget class=\"GtkVBox\" id=\"vbox1\">\n      <property name=\"visible\">True</property>\n      <property name=\"homogeneous\">False</property>\n      <property name=\"spacing\">0</property>\n\n      <child>\n\t<widget class=\"GtkMenuBar\" id=\"menubar1\">\n\t  <property name=\"visible\">True</property>\n\n\t  <child>\n\t    <widget class=\"GtkMenuItem\" id=\"file1\">\n\t      <property name=\"visible\">True</property>\n\t      <property name=\"label\" translatable=\"yes\">_File</property>\n\t      <property name=\"use_underline\">True</property>\n\n\t      <child>\n\t\t<widget class=\"GtkMenu\" id=\"file1_menu\">\n\n\t\t  <child>\n\t\t    <widget class=\"GtkImageMenuItem\" id=\"load1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"tooltip\" translatable=\"yes\">Load a config file</property>\n\t\t      <property name=\"label\" translatable=\"yes\">_Load</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <signal name=\"activate\" handler=\"on_load1_activate\"/>\n\t\t      <accelerator key=\"L\" modifiers=\"GDK_CONTROL_MASK\" signal=\"activate\"/>\n\n\t\t      <child internal-child=\"image\">\n\t\t\t<widget class=\"GtkImage\" id=\"image39\">\n\t\t\t  <property name=\"visible\">True</property>\n\t\t\t  <property name=\"stock\">gtk-open</property>\n\t\t\t  <property name=\"icon_size\">1</property>\n\t\t\t  <property name=\"xalign\">0.5</property>\n\t\t\t  <property name=\"yalign\">0.5</property>\n\t\t\t  <property name=\"xpad\">0</property>\n\t\t\t  <property name=\"ypad\">0</property>\n\t\t\t</widget>\n\t\t      </child>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkImageMenuItem\" id=\"save1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"tooltip\" translatable=\"yes\">Save the config in .config</property>\n\t\t      <property name=\"label\" translatable=\"yes\">_Save</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <signal name=\"activate\" handler=\"on_save_activate\"/>\n\t\t      <accelerator key=\"S\" modifiers=\"GDK_CONTROL_MASK\" signal=\"activate\"/>\n\n\t\t      <child internal-child=\"image\">\n\t\t\t<widget class=\"GtkImage\" id=\"image40\">\n\t\t\t  <property name=\"visible\">True</property>\n\t\t\t  <property name=\"stock\">gtk-save</property>\n\t\t\t  <property name=\"icon_size\">1</property>\n\t\t\t  <property name=\"xalign\">0.5</property>\n\t\t\t  <property name=\"yalign\">0.5</property>\n\t\t\t  <property name=\"xpad\">0</property>\n\t\t\t  <property name=\"ypad\">0</property>\n\t\t\t</widget>\n\t\t      </child>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkImageMenuItem\" id=\"save_as1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"tooltip\" translatable=\"yes\">Save the config in a file</property>\n\t\t      <property name=\"label\" translatable=\"yes\">Save _as</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <signal name=\"activate\" handler=\"on_save_as1_activate\"/>\n\n\t\t      <child internal-child=\"image\">\n\t\t\t<widget class=\"GtkImage\" id=\"image41\">\n\t\t\t  <property name=\"visible\">True</property>\n\t\t\t  <property name=\"stock\">gtk-save-as</property>\n\t\t\t  <property name=\"icon_size\">1</property>\n\t\t\t  <property name=\"xalign\">0.5</property>\n\t\t\t  <property name=\"yalign\">0.5</property>\n\t\t\t  <property name=\"xpad\">0</property>\n\t\t\t  <property name=\"ypad\">0</property>\n\t\t\t</widget>\n\t\t      </child>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkSeparatorMenuItem\" id=\"separator1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkImageMenuItem\" id=\"quit1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"label\" translatable=\"yes\">_Quit</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <signal name=\"activate\" handler=\"on_quit1_activate\"/>\n\t\t      <accelerator key=\"Q\" modifiers=\"GDK_CONTROL_MASK\" signal=\"activate\"/>\n\n\t\t      <child internal-child=\"image\">\n\t\t\t<widget class=\"GtkImage\" id=\"image42\">\n\t\t\t  <property name=\"visible\">True</property>\n\t\t\t  <property name=\"stock\">gtk-quit</property>\n\t\t\t  <property name=\"icon_size\">1</property>\n\t\t\t  <property name=\"xalign\">0.5</property>\n\t\t\t  <property name=\"yalign\">0.5</property>\n\t\t\t  <property name=\"xpad\">0</property>\n\t\t\t  <property name=\"ypad\">0</property>\n\t\t\t</widget>\n\t\t      </child>\n\t\t    </widget>\n\t\t  </child>\n\t\t</widget>\n\t      </child>\n\t    </widget>\n\t  </child>\n\n\t  <child>\n\t    <widget class=\"GtkMenuItem\" id=\"options1\">\n\t      <property name=\"visible\">True</property>\n\t      <property name=\"label\" translatable=\"yes\">_Options</property>\n\t      <property name=\"use_underline\">True</property>\n\n\t      <child>\n\t\t<widget class=\"GtkMenu\" id=\"options1_menu\">\n\n\t\t  <child>\n\t\t    <widget class=\"GtkCheckMenuItem\" id=\"show_name1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"tooltip\" translatable=\"yes\">Show name</property>\n\t\t      <property name=\"label\" translatable=\"yes\">Show _name</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <property name=\"active\">False</property>\n\t\t      <signal name=\"activate\" handler=\"on_show_name1_activate\"/>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkCheckMenuItem\" id=\"show_range1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"tooltip\" translatable=\"yes\">Show range (Y/M/N)</property>\n\t\t      <property name=\"label\" translatable=\"yes\">Show _range</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <property name=\"active\">False</property>\n\t\t      <signal name=\"activate\" handler=\"on_show_range1_activate\"/>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkCheckMenuItem\" id=\"show_data1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"tooltip\" translatable=\"yes\">Show value of the option</property>\n\t\t      <property name=\"label\" translatable=\"yes\">Show _data</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <property name=\"active\">False</property>\n\t\t      <signal name=\"activate\" handler=\"on_show_data1_activate\"/>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkSeparatorMenuItem\" id=\"separator2\">\n\t\t      <property name=\"visible\">True</property>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkRadioMenuItem\" id=\"set_option_mode1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"tooltip\" translatable=\"yes\">Show normal options</property>\n\t\t      <property name=\"label\" translatable=\"yes\">Show normal options</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <property name=\"active\">True</property>\n\t\t      <signal name=\"activate\" handler=\"on_set_option_mode1_activate\"/>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkRadioMenuItem\" id=\"set_option_mode2\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"tooltip\" translatable=\"yes\">Show all options</property>\n\t\t      <property name=\"label\" translatable=\"yes\">Show all _options</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <property name=\"active\">False</property>\n\t\t      <property name=\"group\">set_option_mode1</property>\n\t\t      <signal name=\"activate\" handler=\"on_set_option_mode2_activate\"/>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkRadioMenuItem\" id=\"set_option_mode3\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"tooltip\" translatable=\"yes\">Show all options with prompts</property>\n\t\t      <property name=\"label\" translatable=\"yes\">Show all prompt options</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <property name=\"active\">False</property>\n\t\t      <property name=\"group\">set_option_mode1</property>\n\t\t      <signal name=\"activate\" handler=\"on_set_option_mode3_activate\"/>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t</widget>\n\t      </child>\n\t    </widget>\n\t  </child>\n\n\t  <child>\n\t    <widget class=\"GtkMenuItem\" id=\"help1\">\n\t      <property name=\"visible\">True</property>\n\t      <property name=\"label\" translatable=\"yes\">_Help</property>\n\t      <property name=\"use_underline\">True</property>\n\n\t      <child>\n\t\t<widget class=\"GtkMenu\" id=\"help1_menu\">\n\n\t\t  <child>\n\t\t    <widget class=\"GtkImageMenuItem\" id=\"introduction1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"label\" translatable=\"yes\">_Introduction</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <signal name=\"activate\" handler=\"on_introduction1_activate\" last_modification_time=\"Fri, 15 Nov 2002 20:26:30 GMT\"/>\n\t\t      <accelerator key=\"I\" modifiers=\"GDK_CONTROL_MASK\" signal=\"activate\"/>\n\n\t\t      <child internal-child=\"image\">\n\t\t\t<widget class=\"GtkImage\" id=\"image43\">\n\t\t\t  <property name=\"visible\">True</property>\n\t\t\t  <property name=\"stock\">gtk-dialog-question</property>\n\t\t\t  <property name=\"icon_size\">1</property>\n\t\t\t  <property name=\"xalign\">0.5</property>\n\t\t\t  <property name=\"yalign\">0.5</property>\n\t\t\t  <property name=\"xpad\">0</property>\n\t\t\t  <property name=\"ypad\">0</property>\n\t\t\t</widget>\n\t\t      </child>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkImageMenuItem\" id=\"about1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"label\" translatable=\"yes\">_About</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <signal name=\"activate\" handler=\"on_about1_activate\" last_modification_time=\"Fri, 15 Nov 2002 20:26:30 GMT\"/>\n\t\t      <accelerator key=\"A\" modifiers=\"GDK_CONTROL_MASK\" signal=\"activate\"/>\n\n\t\t      <child internal-child=\"image\">\n\t\t\t<widget class=\"GtkImage\" id=\"image44\">\n\t\t\t  <property name=\"visible\">True</property>\n\t\t\t  <property name=\"stock\">gtk-properties</property>\n\t\t\t  <property name=\"icon_size\">1</property>\n\t\t\t  <property name=\"xalign\">0.5</property>\n\t\t\t  <property name=\"yalign\">0.5</property>\n\t\t\t  <property name=\"xpad\">0</property>\n\t\t\t  <property name=\"ypad\">0</property>\n\t\t\t</widget>\n\t\t      </child>\n\t\t    </widget>\n\t\t  </child>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkImageMenuItem\" id=\"license1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"label\" translatable=\"yes\">_License</property>\n\t\t      <property name=\"use_underline\">True</property>\n\t\t      <signal name=\"activate\" handler=\"on_license1_activate\" last_modification_time=\"Fri, 15 Nov 2002 20:26:30 GMT\"/>\n\n\t\t      <child internal-child=\"image\">\n\t\t\t<widget class=\"GtkImage\" id=\"image45\">\n\t\t\t  <property name=\"visible\">True</property>\n\t\t\t  <property name=\"stock\">gtk-justify-fill</property>\n\t\t\t  <property name=\"icon_size\">1</property>\n\t\t\t  <property name=\"xalign\">0.5</property>\n\t\t\t  <property name=\"yalign\">0.5</property>\n\t\t\t  <property name=\"xpad\">0</property>\n\t\t\t  <property name=\"ypad\">0</property>\n\t\t\t</widget>\n\t\t      </child>\n\t\t    </widget>\n\t\t  </child>\n\t\t</widget>\n\t      </child>\n\t    </widget>\n\t  </child>\n\t</widget>\n\t<packing>\n\t  <property name=\"padding\">0</property>\n\t  <property name=\"expand\">False</property>\n\t  <property name=\"fill\">False</property>\n\t</packing>\n      </child>\n\n      <child>\n\t<widget class=\"GtkHandleBox\" id=\"handlebox1\">\n\t  <property name=\"visible\">True</property>\n\t  <property name=\"shadow_type\">GTK_SHADOW_OUT</property>\n\t  <property name=\"handle_position\">GTK_POS_LEFT</property>\n\t  <property name=\"snap_edge\">GTK_POS_TOP</property>\n\n\t  <child>\n\t    <widget class=\"GtkToolbar\" id=\"toolbar1\">\n\t      <property name=\"visible\">True</property>\n\t      <property name=\"orientation\">GTK_ORIENTATION_HORIZONTAL</property>\n\t      <property name=\"toolbar_style\">GTK_TOOLBAR_BOTH</property>\n\t      <property name=\"tooltips\">True</property>\n\t      <property name=\"show_arrow\">True</property>\n\n\t      <child>\n\t\t<widget class=\"GtkToolButton\" id=\"button1\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"tooltip\" translatable=\"yes\">Goes up of one level (single view)</property>\n\t\t  <property name=\"label\" translatable=\"yes\">Back</property>\n\t\t  <property name=\"use_underline\">True</property>\n\t\t  <property name=\"stock_id\">gtk-undo</property>\n\t\t  <property name=\"visible_horizontal\">True</property>\n\t\t  <property name=\"visible_vertical\">True</property>\n\t\t  <property name=\"is_important\">False</property>\n\t\t  <signal name=\"clicked\" handler=\"on_back_clicked\"/>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"expand\">False</property>\n\t\t  <property name=\"homogeneous\">True</property>\n\t\t</packing>\n\t      </child>\n\n\t      <child>\n\t\t<widget class=\"GtkToolItem\" id=\"toolitem1\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"visible_horizontal\">True</property>\n\t\t  <property name=\"visible_vertical\">True</property>\n\t\t  <property name=\"is_important\">False</property>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkVSeparator\" id=\"vseparator1\">\n\t\t      <property name=\"visible\">True</property>\n\t\t    </widget>\n\t\t  </child>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"expand\">False</property>\n\t\t  <property name=\"homogeneous\">False</property>\n\t\t</packing>\n\t      </child>\n\n\t      <child>\n\t\t<widget class=\"GtkToolButton\" id=\"button2\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"tooltip\" translatable=\"yes\">Load a config file</property>\n\t\t  <property name=\"label\" translatable=\"yes\">Load</property>\n\t\t  <property name=\"use_underline\">True</property>\n\t\t  <property name=\"stock_id\">gtk-open</property>\n\t\t  <property name=\"visible_horizontal\">True</property>\n\t\t  <property name=\"visible_vertical\">True</property>\n\t\t  <property name=\"is_important\">False</property>\n\t\t  <signal name=\"clicked\" handler=\"on_load_clicked\"/>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"expand\">False</property>\n\t\t  <property name=\"homogeneous\">True</property>\n\t\t</packing>\n\t      </child>\n\n\t      <child>\n\t\t<widget class=\"GtkToolButton\" id=\"button3\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"tooltip\" translatable=\"yes\">Save a config file</property>\n\t\t  <property name=\"label\" translatable=\"yes\">Save</property>\n\t\t  <property name=\"use_underline\">True</property>\n\t\t  <property name=\"stock_id\">gtk-save</property>\n\t\t  <property name=\"visible_horizontal\">True</property>\n\t\t  <property name=\"visible_vertical\">True</property>\n\t\t  <property name=\"is_important\">False</property>\n\t\t  <signal name=\"clicked\" handler=\"on_save_activate\"/>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"expand\">False</property>\n\t\t  <property name=\"homogeneous\">True</property>\n\t\t</packing>\n\t      </child>\n\n\t      <child>\n\t\t<widget class=\"GtkToolItem\" id=\"toolitem2\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"visible_horizontal\">True</property>\n\t\t  <property name=\"visible_vertical\">True</property>\n\t\t  <property name=\"is_important\">False</property>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkVSeparator\" id=\"vseparator2\">\n\t\t      <property name=\"visible\">True</property>\n\t\t    </widget>\n\t\t  </child>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"expand\">False</property>\n\t\t  <property name=\"homogeneous\">False</property>\n\t\t</packing>\n\t      </child>\n\n\t      <child>\n\t\t<widget class=\"GtkToolButton\" id=\"button4\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"tooltip\" translatable=\"yes\">Single view</property>\n\t\t  <property name=\"label\" translatable=\"yes\">Single</property>\n\t\t  <property name=\"use_underline\">True</property>\n\t\t  <property name=\"stock_id\">gtk-missing-image</property>\n\t\t  <property name=\"visible_horizontal\">True</property>\n\t\t  <property name=\"visible_vertical\">True</property>\n\t\t  <property name=\"is_important\">False</property>\n\t\t  <signal name=\"clicked\" handler=\"on_single_clicked\" last_modification_time=\"Sun, 12 Jan 2003 14:28:39 GMT\"/>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"expand\">False</property>\n\t\t  <property name=\"homogeneous\">True</property>\n\t\t</packing>\n\t      </child>\n\n\t      <child>\n\t\t<widget class=\"GtkToolButton\" id=\"button5\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"tooltip\" translatable=\"yes\">Split view</property>\n\t\t  <property name=\"label\" translatable=\"yes\">Split</property>\n\t\t  <property name=\"use_underline\">True</property>\n\t\t  <property name=\"stock_id\">gtk-missing-image</property>\n\t\t  <property name=\"visible_horizontal\">True</property>\n\t\t  <property name=\"visible_vertical\">True</property>\n\t\t  <property name=\"is_important\">False</property>\n\t\t  <signal name=\"clicked\" handler=\"on_split_clicked\" last_modification_time=\"Sun, 12 Jan 2003 14:28:45 GMT\"/>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"expand\">False</property>\n\t\t  <property name=\"homogeneous\">True</property>\n\t\t</packing>\n\t      </child>\n\n\t      <child>\n\t\t<widget class=\"GtkToolButton\" id=\"button6\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"tooltip\" translatable=\"yes\">Full view</property>\n\t\t  <property name=\"label\" translatable=\"yes\">Full</property>\n\t\t  <property name=\"use_underline\">True</property>\n\t\t  <property name=\"stock_id\">gtk-missing-image</property>\n\t\t  <property name=\"visible_horizontal\">True</property>\n\t\t  <property name=\"visible_vertical\">True</property>\n\t\t  <property name=\"is_important\">False</property>\n\t\t  <signal name=\"clicked\" handler=\"on_full_clicked\" last_modification_time=\"Sun, 12 Jan 2003 14:28:50 GMT\"/>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"expand\">False</property>\n\t\t  <property name=\"homogeneous\">True</property>\n\t\t</packing>\n\t      </child>\n\n\t      <child>\n\t\t<widget class=\"GtkToolItem\" id=\"toolitem3\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"visible_horizontal\">True</property>\n\t\t  <property name=\"visible_vertical\">True</property>\n\t\t  <property name=\"is_important\">False</property>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkVSeparator\" id=\"vseparator3\">\n\t\t      <property name=\"visible\">True</property>\n\t\t    </widget>\n\t\t  </child>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"expand\">False</property>\n\t\t  <property name=\"homogeneous\">False</property>\n\t\t</packing>\n\t      </child>\n\n\t      <child>\n\t\t<widget class=\"GtkToolButton\" id=\"button7\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"tooltip\" translatable=\"yes\">Collapse the whole tree in the right frame</property>\n\t\t  <property name=\"label\" translatable=\"yes\">Collapse</property>\n\t\t  <property name=\"use_underline\">True</property>\n\t\t  <property name=\"stock_id\">gtk-remove</property>\n\t\t  <property name=\"visible_horizontal\">True</property>\n\t\t  <property name=\"visible_vertical\">True</property>\n\t\t  <property name=\"is_important\">False</property>\n\t\t  <signal name=\"clicked\" handler=\"on_collapse_clicked\"/>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"expand\">False</property>\n\t\t  <property name=\"homogeneous\">True</property>\n\t\t</packing>\n\t      </child>\n\n\t      <child>\n\t\t<widget class=\"GtkToolButton\" id=\"button8\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"tooltip\" translatable=\"yes\">Expand the whole tree in the right frame</property>\n\t\t  <property name=\"label\" translatable=\"yes\">Expand</property>\n\t\t  <property name=\"use_underline\">True</property>\n\t\t  <property name=\"stock_id\">gtk-add</property>\n\t\t  <property name=\"visible_horizontal\">True</property>\n\t\t  <property name=\"visible_vertical\">True</property>\n\t\t  <property name=\"is_important\">False</property>\n\t\t  <signal name=\"clicked\" handler=\"on_expand_clicked\"/>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"expand\">False</property>\n\t\t  <property name=\"homogeneous\">True</property>\n\t\t</packing>\n\t      </child>\n\t    </widget>\n\t  </child>\n\t</widget>\n\t<packing>\n\t  <property name=\"padding\">0</property>\n\t  <property name=\"expand\">False</property>\n\t  <property name=\"fill\">False</property>\n\t</packing>\n      </child>\n\n      <child>\n\t<widget class=\"GtkHPaned\" id=\"hpaned1\">\n\t  <property name=\"width_request\">1</property>\n\t  <property name=\"visible\">True</property>\n\t  <property name=\"can_focus\">True</property>\n\t  <property name=\"position\">0</property>\n\n\t  <child>\n\t    <widget class=\"GtkScrolledWindow\" id=\"scrolledwindow1\">\n\t      <property name=\"visible\">True</property>\n\t      <property name=\"hscrollbar_policy\">GTK_POLICY_AUTOMATIC</property>\n\t      <property name=\"vscrollbar_policy\">GTK_POLICY_AUTOMATIC</property>\n\t      <property name=\"shadow_type\">GTK_SHADOW_IN</property>\n\t      <property name=\"window_placement\">GTK_CORNER_TOP_LEFT</property>\n\n\t      <child>\n\t\t<widget class=\"GtkTreeView\" id=\"treeview1\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"can_focus\">True</property>\n\t\t  <property name=\"headers_visible\">True</property>\n\t\t  <property name=\"rules_hint\">False</property>\n\t\t  <property name=\"reorderable\">False</property>\n\t\t  <property name=\"enable_search\">False</property>\n\t\t  <signal name=\"cursor_changed\" handler=\"on_treeview2_cursor_changed\" last_modification_time=\"Sun, 12 Jan 2003 15:58:22 GMT\"/>\n\t\t  <signal name=\"button_press_event\" handler=\"on_treeview1_button_press_event\" last_modification_time=\"Sun, 12 Jan 2003 16:03:52 GMT\"/>\n\t\t  <signal name=\"key_press_event\" handler=\"on_treeview2_key_press_event\" last_modification_time=\"Sun, 12 Jan 2003 16:11:44 GMT\"/>\n\t\t</widget>\n\t      </child>\n\t    </widget>\n\t    <packing>\n\t      <property name=\"shrink\">True</property>\n\t      <property name=\"resize\">False</property>\n\t    </packing>\n\t  </child>\n\n\t  <child>\n\t    <widget class=\"GtkVPaned\" id=\"vpaned1\">\n\t      <property name=\"visible\">True</property>\n\t      <property name=\"can_focus\">True</property>\n\t      <property name=\"position\">0</property>\n\n\t      <child>\n\t\t<widget class=\"GtkScrolledWindow\" id=\"scrolledwindow2\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"hscrollbar_policy\">GTK_POLICY_AUTOMATIC</property>\n\t\t  <property name=\"vscrollbar_policy\">GTK_POLICY_AUTOMATIC</property>\n\t\t  <property name=\"shadow_type\">GTK_SHADOW_IN</property>\n\t\t  <property name=\"window_placement\">GTK_CORNER_TOP_LEFT</property>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkTreeView\" id=\"treeview2\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"can_focus\">True</property>\n\t\t      <property name=\"has_focus\">True</property>\n\t\t      <property name=\"headers_visible\">True</property>\n\t\t      <property name=\"rules_hint\">False</property>\n\t\t      <property name=\"reorderable\">False</property>\n\t\t      <property name=\"enable_search\">False</property>\n\t\t      <signal name=\"cursor_changed\" handler=\"on_treeview2_cursor_changed\" last_modification_time=\"Sun, 12 Jan 2003 15:57:55 GMT\"/>\n\t\t      <signal name=\"button_press_event\" handler=\"on_treeview2_button_press_event\" last_modification_time=\"Sun, 12 Jan 2003 15:57:58 GMT\"/>\n\t\t      <signal name=\"key_press_event\" handler=\"on_treeview2_key_press_event\" last_modification_time=\"Sun, 12 Jan 2003 15:58:01 GMT\"/>\n\t\t    </widget>\n\t\t  </child>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"shrink\">True</property>\n\t\t  <property name=\"resize\">False</property>\n\t\t</packing>\n\t      </child>\n\n\t      <child>\n\t\t<widget class=\"GtkScrolledWindow\" id=\"scrolledwindow3\">\n\t\t  <property name=\"visible\">True</property>\n\t\t  <property name=\"hscrollbar_policy\">GTK_POLICY_NEVER</property>\n\t\t  <property name=\"vscrollbar_policy\">GTK_POLICY_AUTOMATIC</property>\n\t\t  <property name=\"shadow_type\">GTK_SHADOW_IN</property>\n\t\t  <property name=\"window_placement\">GTK_CORNER_TOP_LEFT</property>\n\n\t\t  <child>\n\t\t    <widget class=\"GtkTextView\" id=\"textview3\">\n\t\t      <property name=\"visible\">True</property>\n\t\t      <property name=\"can_focus\">True</property>\n\t\t      <property name=\"editable\">False</property>\n\t\t      <property name=\"overwrite\">False</property>\n\t\t      <property name=\"accepts_tab\">True</property>\n\t\t      <property name=\"justification\">GTK_JUSTIFY_LEFT</property>\n\t\t      <property name=\"wrap_mode\">GTK_WRAP_WORD</property>\n\t\t      <property name=\"cursor_visible\">True</property>\n\t\t      <property name=\"pixels_above_lines\">0</property>\n\t\t      <property name=\"pixels_below_lines\">0</property>\n\t\t      <property name=\"pixels_inside_wrap\">0</property>\n\t\t      <property name=\"left_margin\">0</property>\n\t\t      <property name=\"right_margin\">0</property>\n\t\t      <property name=\"indent\">0</property>\n\t\t      <property name=\"text\" translatable=\"yes\">Sorry, no help available for this option yet.</property>\n\t\t    </widget>\n\t\t  </child>\n\t\t</widget>\n\t\t<packing>\n\t\t  <property name=\"shrink\">True</property>\n\t\t  <property name=\"resize\">True</property>\n\t\t</packing>\n\t      </child>\n\t    </widget>\n\t    <packing>\n\t      <property name=\"shrink\">True</property>\n\t      <property name=\"resize\">True</property>\n\t    </packing>\n\t  </child>\n\t</widget>\n\t<packing>\n\t  <property name=\"padding\">0</property>\n\t  <property name=\"expand\">True</property>\n\t  <property name=\"fill\">True</property>\n\t</packing>\n      </child>\n    </widget>\n  </child>\n</widget>\n\n</glade-interface>\n"
  },
  {
    "path": "support/kconfig/images.c",
    "content": "/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\nstatic const char *xpm_load[] = {\n\"22 22 5 1\",\n\". c None\",\n\"# c #000000\",\n\"c c #838100\",\n\"a c #ffff00\",\n\"b c #ffffff\",\n\"......................\",\n\"......................\",\n\"......................\",\n\"............####....#.\",\n\"...........#....##.##.\",\n\"..................###.\",\n\".................####.\",\n\".####...........#####.\",\n\"#abab##########.......\",\n\"#babababababab#.......\",\n\"#ababababababa#.......\",\n\"#babababababab#.......\",\n\"#ababab###############\",\n\"#babab##cccccccccccc##\",\n\"#abab##cccccccccccc##.\",\n\"#bab##cccccccccccc##..\",\n\"#ab##cccccccccccc##...\",\n\"#b##cccccccccccc##....\",\n\"###cccccccccccc##.....\",\n\"##cccccccccccc##......\",\n\"###############.......\",\n\"......................\"};\n\nstatic const char *xpm_save[] = {\n\"22 22 5 1\",\n\". c None\",\n\"# c #000000\",\n\"a c #838100\",\n\"b c #c5c2c5\",\n\"c c #cdb6d5\",\n\"......................\",\n\".####################.\",\n\".#aa#bbbbbbbbbbbb#bb#.\",\n\".#aa#bbbbbbbbbbbb#bb#.\",\n\".#aa#bbbbbbbbbcbb####.\",\n\".#aa#bbbccbbbbbbb#aa#.\",\n\".#aa#bbbccbbbbbbb#aa#.\",\n\".#aa#bbbbbbbbbbbb#aa#.\",\n\".#aa#bbbbbbbbbbbb#aa#.\",\n\".#aa#bbbbbbbbbbbb#aa#.\",\n\".#aa#bbbbbbbbbbbb#aa#.\",\n\".#aaa############aaa#.\",\n\".#aaaaaaaaaaaaaaaaaa#.\",\n\".#aaaaaaaaaaaaaaaaaa#.\",\n\".#aaa#############aa#.\",\n\".#aaa#########bbb#aa#.\",\n\".#aaa#########bbb#aa#.\",\n\".#aaa#########bbb#aa#.\",\n\".#aaa#########bbb#aa#.\",\n\".#aaa#########bbb#aa#.\",\n\"..##################..\",\n\"......................\"};\n\nstatic const char *xpm_back[] = {\n\"22 22 3 1\",\n\". c None\",\n\"# c #000083\",\n\"a c #838183\",\n\"......................\",\n\"......................\",\n\"......................\",\n\"......................\",\n\"......................\",\n\"...........######a....\",\n\"..#......##########...\",\n\"..##...####......##a..\",\n\"..###.###.........##..\",\n\"..######..........##..\",\n\"..#####...........##..\",\n\"..######..........##..\",\n\"..#######.........##..\",\n\"..########.......##a..\",\n\"...............a###...\",\n\"...............###....\",\n\"......................\",\n\"......................\",\n\"......................\",\n\"......................\",\n\"......................\",\n\"......................\"};\n\nstatic const char *xpm_tree_view[] = {\n\"22 22 2 1\",\n\". c None\",\n\"# c #000000\",\n\"......................\",\n\"......................\",\n\"......#...............\",\n\"......#...............\",\n\"......#...............\",\n\"......#...............\",\n\"......#...............\",\n\"......########........\",\n\"......#...............\",\n\"......#...............\",\n\"......#...............\",\n\"......#...............\",\n\"......#...............\",\n\"......########........\",\n\"......#...............\",\n\"......#...............\",\n\"......#...............\",\n\"......#...............\",\n\"......#...............\",\n\"......########........\",\n\"......................\",\n\"......................\"};\n\nstatic const char *xpm_single_view[] = {\n\"22 22 2 1\",\n\". c None\",\n\"# c #000000\",\n\"......................\",\n\"......................\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"..........#...........\",\n\"......................\",\n\"......................\"};\n\nstatic const char *xpm_split_view[] = {\n\"22 22 2 1\",\n\". c None\",\n\"# c #000000\",\n\"......................\",\n\"......................\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......#......#........\",\n\"......................\",\n\"......................\"};\n\nstatic const char *xpm_symbol_no[] = {\n\"12 12 2 1\",\n\"  c white\",\n\". c black\",\n\"            \",\n\" .......... \",\n\" .        . \",\n\" .        . \",\n\" .        . \",\n\" .        . \",\n\" .        . \",\n\" .        . \",\n\" .        . \",\n\" .        . \",\n\" .......... \",\n\"            \"};\n\nstatic const char *xpm_symbol_mod[] = {\n\"12 12 2 1\",\n\"  c white\",\n\". c black\",\n\"            \",\n\" .......... \",\n\" .        . \",\n\" .        . \",\n\" .   ..   . \",\n\" .  ....  . \",\n\" .  ....  . \",\n\" .   ..   . \",\n\" .        . \",\n\" .        . \",\n\" .......... \",\n\"            \"};\n\nstatic const char *xpm_symbol_yes[] = {\n\"12 12 2 1\",\n\"  c white\",\n\". c black\",\n\"            \",\n\" .......... \",\n\" .        . \",\n\" .        . \",\n\" .      . . \",\n\" .     .. . \",\n\" . .  ..  . \",\n\" . ....   . \",\n\" .  ..    . \",\n\" .        . \",\n\" .......... \",\n\"            \"};\n\nstatic const char *xpm_choice_no[] = {\n\"12 12 2 1\",\n\"  c white\",\n\". c black\",\n\"            \",\n\"    ....    \",\n\"  ..    ..  \",\n\"  .      .  \",\n\" .        . \",\n\" .        . \",\n\" .        . \",\n\" .        . \",\n\"  .      .  \",\n\"  ..    ..  \",\n\"    ....    \",\n\"            \"};\n\nstatic const char *xpm_choice_yes[] = {\n\"12 12 2 1\",\n\"  c white\",\n\". c black\",\n\"            \",\n\"    ....    \",\n\"  ..    ..  \",\n\"  .      .  \",\n\" .   ..   . \",\n\" .  ....  . \",\n\" .  ....  . \",\n\" .   ..   . \",\n\"  .      .  \",\n\"  ..    ..  \",\n\"    ....    \",\n\"            \"};\n\nstatic const char *xpm_menu[] = {\n\"12 12 2 1\",\n\"  c white\",\n\". c black\",\n\"            \",\n\" .......... \",\n\" .        . \",\n\" . ..     . \",\n\" . ....   . \",\n\" . ...... . \",\n\" . ...... . \",\n\" . ....   . \",\n\" . ..     . \",\n\" .        . \",\n\" .......... \",\n\"            \"};\n\nstatic const char *xpm_menu_inv[] = {\n\"12 12 2 1\",\n\"  c white\",\n\". c black\",\n\"            \",\n\" .......... \",\n\" .......... \",\n\" ..  ...... \",\n\" ..    .... \",\n\" ..      .. \",\n\" ..      .. \",\n\" ..    .... \",\n\" ..  ...... \",\n\" .......... \",\n\" .......... \",\n\"            \"};\n\nstatic const char *xpm_menuback[] = {\n\"12 12 2 1\",\n\"  c white\",\n\". c black\",\n\"            \",\n\" .......... \",\n\" .        . \",\n\" .     .. . \",\n\" .   .... . \",\n\" . ...... . \",\n\" . ...... . \",\n\" .   .... . \",\n\" .     .. . \",\n\" .        . \",\n\" .......... \",\n\"            \"};\n\nstatic const char *xpm_void[] = {\n\"12 12 2 1\",\n\"  c white\",\n\". c black\",\n\"            \",\n\"            \",\n\"            \",\n\"            \",\n\"            \",\n\"            \",\n\"            \",\n\"            \",\n\"            \",\n\"            \",\n\"            \",\n\"            \"};\n"
  },
  {
    "path": "support/kconfig/kconf_id.c",
    "content": "\nstatic struct kconf_id kconf_id_array[] = {\n\t{ \"mainmenu\",\t\tT_MAINMENU,\t\tTF_COMMAND },\n\t{ \"menu\",\t\tT_MENU,\t\t\tTF_COMMAND },\n\t{ \"endmenu\",\t\tT_ENDMENU,\t\tTF_COMMAND },\n\t{ \"source\",\t\tT_SOURCE,\t\tTF_COMMAND },\n\t{ \"choice\",\t\tT_CHOICE,\t\tTF_COMMAND },\n\t{ \"endchoice\",\t\tT_ENDCHOICE,\t\tTF_COMMAND },\n\t{ \"comment\",\t\tT_COMMENT,\t\tTF_COMMAND },\n\t{ \"config\",\t\tT_CONFIG,\t\tTF_COMMAND },\n\t{ \"menuconfig\",\t\tT_MENUCONFIG,\t\tTF_COMMAND },\n\t{ \"help\",\t\tT_HELP,\t\t\tTF_COMMAND },\n\t{ \"---help---\",\t\tT_HELP,\t\t\tTF_COMMAND },\n\t{ \"if\",\t\t\tT_IF,\t\t\tTF_COMMAND|TF_PARAM },\n\t{ \"endif\",\t\tT_ENDIF,\t\tTF_COMMAND },\n\t{ \"depends\",\t\tT_DEPENDS,\t\tTF_COMMAND },\n\t{ \"optional\",\t\tT_OPTIONAL,\t\tTF_COMMAND },\n\t{ \"default\",\t\tT_DEFAULT,\t\tTF_COMMAND, S_UNKNOWN },\n\t{ \"prompt\",\t\tT_PROMPT,\t\tTF_COMMAND },\n\t{ \"tristate\",\t\tT_TYPE,\t\t\tTF_COMMAND, S_TRISTATE },\n\t{ \"def_tristate\",\tT_DEFAULT,\t\tTF_COMMAND, S_TRISTATE },\n\t{ \"bool\",\t\tT_TYPE,\t\t\tTF_COMMAND, S_BOOLEAN },\n\t{ \"def_bool\",\t\tT_DEFAULT,\t\tTF_COMMAND, S_BOOLEAN },\n\t{ \"int\",\t\tT_TYPE,\t\t\tTF_COMMAND, S_INT },\n\t{ \"hex\",\t\tT_TYPE,\t\t\tTF_COMMAND, S_HEX },\n\t{ \"string\",\t\tT_TYPE,\t\t\tTF_COMMAND, S_STRING },\n\t{ \"select\",\t\tT_SELECT,\t\tTF_COMMAND },\n\t{ \"imply\",\t\tT_IMPLY,\t\tTF_COMMAND },\n\t{ \"range\",\t\tT_RANGE,\t\tTF_COMMAND },\n\t{ \"visible\",\t\tT_VISIBLE,\t\tTF_COMMAND },\n\t{ \"option\",\t\tT_OPTION,\t\tTF_COMMAND },\n\t{ \"on\",\t\t\tT_ON,\t\t\tTF_PARAM },\n\t{ \"modules\",\t\tT_OPT_MODULES,\t\tTF_OPTION },\n\t{ \"defconfig_list\",\tT_OPT_DEFCONFIG_LIST,\tTF_OPTION },\n\t{ \"env\",\t\tT_OPT_ENV,\t\tTF_OPTION },\n\t{ \"allnoconfig_y\",\tT_OPT_ALLNOCONFIG_Y,\tTF_OPTION },\n};\n\n#define KCONF_ID_ARRAY_SIZE (sizeof(kconf_id_array)/sizeof(struct kconf_id))\n\nstatic const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len)\n{\n\tint i;\n\n\tfor (i = 0; i < KCONF_ID_ARRAY_SIZE; i++) {\n\t\tstruct kconf_id *id = kconf_id_array+i;\n\t\tint l = strlen(id->name);\n\n\t\tif (len == l && !memcmp(str, id->name, len))\n\t\t\treturn id;\n\t}\n\treturn NULL;\n}\n"
  },
  {
    "path": "support/kconfig/kxgettext.c",
    "content": "/*\n * Arnaldo Carvalho de Melo <acme@conectiva.com.br>, 2005\n *\n * Released under the terms of the GNU GPL v2.0\n */\n\n#include <stdlib.h>\n#include <string.h>\n\n#include \"lkc.h\"\n\nstatic char *escape(const char* text, char *bf, int len)\n{\n\tchar *bfp = bf;\n\tint multiline = strchr(text, '\\n') != NULL;\n\tint eol = 0;\n\tint textlen = strlen(text);\n\n\tif ((textlen > 0) && (text[textlen-1] == '\\n'))\n\t\teol = 1;\n\n\t*bfp++ = '\"';\n\t--len;\n\n\tif (multiline) {\n\t\t*bfp++ = '\"';\n\t\t*bfp++ = '\\n';\n\t\t*bfp++ = '\"';\n\t\tlen -= 3;\n\t}\n\n\twhile (*text != '\\0' && len > 1) {\n\t\tif (*text == '\"')\n\t\t\t*bfp++ = '\\\\';\n\t\telse if (*text == '\\n') {\n\t\t\t*bfp++ = '\\\\';\n\t\t\t*bfp++ = 'n';\n\t\t\t*bfp++ = '\"';\n\t\t\t*bfp++ = '\\n';\n\t\t\t*bfp++ = '\"';\n\t\t\tlen -= 5;\n\t\t\t++text;\n\t\t\tgoto next;\n\t\t}\n\t\telse if (*text == '\\\\') {\n\t\t\t*bfp++ = '\\\\';\n\t\t\tlen--;\n\t\t}\n\t\t*bfp++ = *text++;\nnext:\n\t\t--len;\n\t}\n\n\tif (multiline && eol)\n\t\tbfp -= 3;\n\n\t*bfp++ = '\"';\n\t*bfp = '\\0';\n\n\treturn bf;\n}\n\nstruct file_line {\n\tstruct file_line *next;\n\tconst char *file;\n\tint lineno;\n};\n\nstatic struct file_line *file_line__new(const char *file, int lineno)\n{\n\tstruct file_line *self = malloc(sizeof(*self));\n\n\tif (self == NULL)\n\t\tgoto out;\n\n\tself->file   = file;\n\tself->lineno = lineno;\n\tself->next   = NULL;\nout:\n\treturn self;\n}\n\nstruct message {\n\tconst char\t *msg;\n\tconst char\t *option;\n\tstruct message\t *next;\n\tstruct file_line *files;\n};\n\nstatic struct message *message__list;\n\nstatic struct message *message__new(const char *msg, char *option,\n\t\t\t\t    const char *file, int lineno)\n{\n\tstruct message *self = malloc(sizeof(*self));\n\n\tif (self == NULL)\n\t\tgoto out;\n\n\tself->files = file_line__new(file, lineno);\n\tif (self->files == NULL)\n\t\tgoto out_fail;\n\n\tself->msg = xstrdup(msg);\n\tif (self->msg == NULL)\n\t\tgoto out_fail_msg;\n\n\tself->option = option;\n\tself->next = NULL;\nout:\n\treturn self;\nout_fail_msg:\n\tfree(self->files);\nout_fail:\n\tfree(self);\n\tself = NULL;\n\tgoto out;\n}\n\nstatic struct message *mesage__find(const char *msg)\n{\n\tstruct message *m = message__list;\n\n\twhile (m != NULL) {\n\t\tif (strcmp(m->msg, msg) == 0)\n\t\t\tbreak;\n\t\tm = m->next;\n\t}\n\n\treturn m;\n}\n\nstatic int message__add_file_line(struct message *self, const char *file,\n\t\t\t\t  int lineno)\n{\n\tint rc = -1;\n\tstruct file_line *fl = file_line__new(file, lineno);\n\n\tif (fl == NULL)\n\t\tgoto out;\n\n\tfl->next    = self->files;\n\tself->files = fl;\n\trc = 0;\nout:\n\treturn rc;\n}\n\nstatic int message__add(const char *msg, char *option, const char *file,\n\t\t\tint lineno)\n{\n\tint rc = 0;\n\tchar bf[16384];\n\tchar *escaped = escape(msg, bf, sizeof(bf));\n\tstruct message *m = mesage__find(escaped);\n\n\tif (m != NULL)\n\t\trc = message__add_file_line(m, file, lineno);\n\telse {\n\t\tm = message__new(escaped, option, file, lineno);\n\n\t\tif (m != NULL) {\n\t\t\tm->next\t      = message__list;\n\t\t\tmessage__list = m;\n\t\t} else\n\t\t\trc = -1;\n\t}\n\treturn rc;\n}\n\nstatic void menu_build_message_list(struct menu *menu)\n{\n\tstruct menu *child;\n\n\tmessage__add(menu_get_prompt(menu), NULL,\n\t\t     menu->file == NULL ? \"Root Menu\" : menu->file->name,\n\t\t     menu->lineno);\n\n\tif (menu->sym != NULL && menu_has_help(menu))\n\t\tmessage__add(menu_get_help(menu), menu->sym->name,\n\t\t\t     menu->file == NULL ? \"Root Menu\" : menu->file->name,\n\t\t\t     menu->lineno);\n\n\tfor (child = menu->list; child != NULL; child = child->next)\n\t\tif (child->prompt != NULL)\n\t\t\tmenu_build_message_list(child);\n}\n\nstatic void message__print_file_lineno(struct message *self)\n{\n\tstruct file_line *fl = self->files;\n\n\tputchar('\\n');\n\tif (self->option != NULL)\n\t\tprintf(\"# %s:00000\\n\", self->option);\n\n\tprintf(\"#: %s:%d\", fl->file, fl->lineno);\n\tfl = fl->next;\n\n\twhile (fl != NULL) {\n\t\tprintf(\", %s:%d\", fl->file, fl->lineno);\n\t\tfl = fl->next;\n\t}\n\n\tputchar('\\n');\n}\n\nstatic void message__print_gettext_msgid_msgstr(struct message *self)\n{\n\tmessage__print_file_lineno(self);\n\n\tprintf(\"msgid %s\\n\"\n\t       \"msgstr \\\"\\\"\\n\", self->msg);\n}\n\nstatic void menu__xgettext(void)\n{\n\tstruct message *m = message__list;\n\n\twhile (m != NULL) {\n\t\t/* skip empty lines (\"\") */\n\t\tif (strlen(m->msg) > sizeof(\"\\\"\\\"\"))\n\t\t\tmessage__print_gettext_msgid_msgstr(m);\n\t\tm = m->next;\n\t}\n}\n\nint main(int ac, char **av)\n{\n\tconf_parse(av[1]);\n\n\tmenu_build_message_list(menu_get_root_menu(NULL));\n\tmenu__xgettext();\n\treturn 0;\n}\n"
  },
  {
    "path": "support/kconfig/list.h",
    "content": "/* SPDX-License-Identifier: GPL-2.0 */\n#ifndef LIST_H\n#define LIST_H\n\n/*\n * Copied from include/linux/...\n */\n\n#undef offsetof\n#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)\n\n/**\n * container_of - cast a member of a structure out to the containing structure\n * @ptr:        the pointer to the member.\n * @type:       the type of the container struct this is embedded in.\n * @member:     the name of the member within the struct.\n *\n */\n#define container_of(ptr, type, member) ({                      \\\n\tconst typeof( ((type *)0)->member ) *__mptr = (ptr);    \\\n\t(type *)( (char *)__mptr - offsetof(type,member) );})\n\n\nstruct list_head {\n\tstruct list_head *next, *prev;\n};\n\n\n#define LIST_HEAD_INIT(name) { &(name), &(name) }\n\n#define LIST_HEAD(name) \\\n\tstruct list_head name = LIST_HEAD_INIT(name)\n\n/**\n * list_entry - get the struct for this entry\n * @ptr:\tthe &struct list_head pointer.\n * @type:\tthe type of the struct this is embedded in.\n * @member:\tthe name of the list_head within the struct.\n */\n#define list_entry(ptr, type, member) \\\n\tcontainer_of(ptr, type, member)\n\n/**\n * list_for_each_entry\t-\titerate over list of given type\n * @pos:\tthe type * to use as a loop cursor.\n * @head:\tthe head for your list.\n * @member:\tthe name of the list_head within the struct.\n */\n#define list_for_each_entry(pos, head, member)\t\t\t\t\\\n\tfor (pos = list_entry((head)->next, typeof(*pos), member);\t\\\n\t     &pos->member != (head); \t\\\n\t     pos = list_entry(pos->member.next, typeof(*pos), member))\n\n/**\n * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry\n * @pos:\tthe type * to use as a loop cursor.\n * @n:\t\tanother type * to use as temporary storage\n * @head:\tthe head for your list.\n * @member:\tthe name of the list_head within the struct.\n */\n#define list_for_each_entry_safe(pos, n, head, member)\t\t\t\\\n\tfor (pos = list_entry((head)->next, typeof(*pos), member),\t\\\n\t\tn = list_entry(pos->member.next, typeof(*pos), member);\t\\\n\t     &pos->member != (head);\t\t\t\t\t\\\n\t     pos = n, n = list_entry(n->member.next, typeof(*n), member))\n\n/**\n * list_empty - tests whether a list is empty\n * @head: the list to test.\n */\nstatic inline int list_empty(const struct list_head *head)\n{\n\treturn head->next == head;\n}\n\n/*\n * Insert a new entry between two known consecutive entries.\n *\n * This is only for internal list manipulation where we know\n * the prev/next entries already!\n */\nstatic inline void __list_add(struct list_head *_new,\n\t\t\t      struct list_head *prev,\n\t\t\t      struct list_head *next)\n{\n\tnext->prev = _new;\n\t_new->next = next;\n\t_new->prev = prev;\n\tprev->next = _new;\n}\n\n/**\n * list_add_tail - add a new entry\n * @new: new entry to be added\n * @head: list head to add it before\n *\n * Insert a new entry before the specified head.\n * This is useful for implementing queues.\n */\nstatic inline void list_add_tail(struct list_head *_new, struct list_head *head)\n{\n\t__list_add(_new, head->prev, head);\n}\n\n/*\n * Delete a list entry by making the prev/next entries\n * point to each other.\n *\n * This is only for internal list manipulation where we know\n * the prev/next entries already!\n */\nstatic inline void __list_del(struct list_head *prev, struct list_head *next)\n{\n\tnext->prev = prev;\n\tprev->next = next;\n}\n\n#define LIST_POISON1  ((void *) 0x00100100)\n#define LIST_POISON2  ((void *) 0x00200200)\n/**\n * list_del - deletes entry from list.\n * @entry: the element to delete from the list.\n * Note: list_empty() on entry does not return true after this, the entry is\n * in an undefined state.\n */\nstatic inline void list_del(struct list_head *entry)\n{\n\t__list_del(entry->prev, entry->next);\n\tentry->next = (struct list_head*)LIST_POISON1;\n\tentry->prev = (struct list_head*)LIST_POISON2;\n}\n#endif\n"
  },
  {
    "path": "support/kconfig/lkc.h",
    "content": "/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#ifndef LKC_H\n#define LKC_H\n\n#include \"expr.h\"\n\n#ifndef KBUILD_NO_NLS\n# include <libintl.h>\n#else\nstatic inline const char *gettext(const char *txt) { return txt; }\nstatic inline void textdomain(const char *domainname) {}\nstatic inline void bindtextdomain(const char *name, const char *dir) {}\nstatic inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; }\n#endif\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include \"lkc_proto.h\"\n\n#define SRCTREE \"srctree\"\n\n#ifndef PACKAGE\n#define PACKAGE \"linux\"\n#endif\n\n#define LOCALEDIR \"/usr/share/locale\"\n\n#define _(text) gettext(text)\n#define N_(text) (text)\n\n#ifndef CONFIG_\n#define CONFIG_ \"CONFIG_\"\n#endif\nstatic inline const char *CONFIG_prefix(void)\n{\n\treturn getenv( \"CONFIG_\" ) ?: CONFIG_;\n}\n#undef CONFIG_\n#define CONFIG_ CONFIG_prefix()\n\n#define TF_COMMAND\t0x0001\n#define TF_PARAM\t0x0002\n#define TF_OPTION\t0x0004\n\nenum conf_def_mode {\n\tdef_default,\n\tdef_yes,\n\tdef_mod,\n\tdef_no,\n\tdef_random\n};\n\n#define T_OPT_MODULES\t\t1\n#define T_OPT_DEFCONFIG_LIST\t2\n#define T_OPT_ENV\t\t3\n#define T_OPT_ALLNOCONFIG_Y\t4\n\nstruct kconf_id {\n\tconst char *name;\n\tint token;\n\tunsigned int flags;\n\tenum symbol_type stype;\n};\n\nextern int yylineno;\nvoid zconfdump(FILE *out);\nvoid zconf_starthelp(void);\nFILE *zconf_fopen(const char *name);\nvoid zconf_initscan(const char *name);\nvoid zconf_nextfile(const char *name);\nint zconf_lineno(void);\nconst char *zconf_curname(void);\n\n/* confdata.c */\nconst char *conf_get_configname(void);\nconst char *conf_get_autoconfig_name(void);\nchar *conf_get_default_confname(void);\nvoid sym_set_change_count(int count);\nvoid sym_add_change_count(int count);\nbool conf_set_all_new_symbols(enum conf_def_mode mode);\nvoid set_all_choice_values(struct symbol *csym);\n\n/* confdata.c and expr.c */\nstatic inline void xfwrite(const void *str, size_t len, size_t count, FILE *out)\n{\n\tassert(len != 0);\n\n\tif (fwrite(str, len, count, out) != count)\n\t\tfprintf(stderr, \"Error in writing or end of file.\\n\");\n}\n\n/* menu.c */\nvoid _menu_init(void);\nvoid menu_warn(struct menu *menu, const char *fmt, ...);\nstruct menu *menu_add_menu(void);\nvoid menu_end_menu(void);\nvoid menu_add_entry(struct symbol *sym);\nvoid menu_add_dep(struct expr *dep);\nvoid menu_add_visibility(struct expr *dep);\nstruct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);\nvoid menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);\nvoid menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);\nvoid menu_add_option(int token, char *arg);\nvoid menu_finalize(struct menu *parent);\nvoid menu_set_type(int type);\n\n/* util.c */\nstruct file *file_lookup(const char *name);\nint file_write_dep(const char *name);\nvoid *xmalloc(size_t size);\nvoid *xcalloc(size_t nmemb, size_t size);\nvoid *xrealloc(void *p, size_t size);\nchar *xstrdup(const char *s);\n\nstruct gstr {\n\tsize_t len;\n\tchar  *s;\n\t/*\n\t* when max_width is not zero long lines in string s (if any) get\n\t* wrapped not to exceed the max_width value\n\t*/\n\tint max_width;\n};\nstruct gstr str_new(void);\nvoid str_free(struct gstr *gs);\nvoid str_append(struct gstr *gs, const char *s);\nvoid str_printf(struct gstr *gs, const char *fmt, ...);\nconst char *str_get(struct gstr *gs);\n\n/* symbol.c */\nextern struct expr *sym_env_list;\n\nvoid sym_init(void);\nvoid sym_clear_all_valid(void);\nstruct symbol *sym_choice_default(struct symbol *sym);\nconst char *sym_get_string_default(struct symbol *sym);\nstruct symbol *sym_check_deps(struct symbol *sym);\nstruct property *prop_alloc(enum prop_type type, struct symbol *sym);\nstruct symbol *prop_get_symbol(struct property *prop);\nstruct property *sym_get_env_prop(struct symbol *sym);\n\nstatic inline tristate sym_get_tristate_value(struct symbol *sym)\n{\n\treturn sym->curr.tri;\n}\n\n\nstatic inline struct symbol *sym_get_choice_value(struct symbol *sym)\n{\n\treturn (struct symbol *)sym->curr.val;\n}\n\nstatic inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval)\n{\n\treturn sym_set_tristate_value(chval, yes);\n}\n\nstatic inline bool sym_is_choice(struct symbol *sym)\n{\n\treturn sym->flags & SYMBOL_CHOICE ? true : false;\n}\n\nstatic inline bool sym_is_choice_value(struct symbol *sym)\n{\n\treturn sym->flags & SYMBOL_CHOICEVAL ? true : false;\n}\n\nstatic inline bool sym_is_optional(struct symbol *sym)\n{\n\treturn sym->flags & SYMBOL_OPTIONAL ? true : false;\n}\n\nstatic inline bool sym_has_value(struct symbol *sym)\n{\n\treturn sym->flags & SYMBOL_DEF_USER ? true : false;\n}\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* LKC_H */\n"
  },
  {
    "path": "support/kconfig/lkc_proto.h",
    "content": "/* SPDX-License-Identifier: GPL-2.0 */\n#include <stdarg.h>\n\n/* confdata.c */\nvoid conf_parse(const char *name);\nint conf_read(const char *name);\nint conf_read_simple(const char *name, int);\nint conf_write_defconfig(const char *name);\nint conf_write(const char *name);\nint conf_write_autoconf(void);\nbool conf_get_changed(void);\nvoid conf_set_changed_callback(void (*fn)(void));\nvoid conf_set_message_callback(void (*fn)(const char *fmt, va_list ap));\n\n/* menu.c */\nextern struct menu rootmenu;\n\nbool menu_is_empty(struct menu *menu);\nbool menu_is_visible(struct menu *menu);\nbool menu_has_prompt(struct menu *menu);\nconst char * menu_get_prompt(struct menu *menu);\nstruct menu * menu_get_root_menu(struct menu *menu);\nstruct menu * menu_get_parent_menu(struct menu *menu);\nbool menu_has_help(struct menu *menu);\nconst char * menu_get_help(struct menu *menu);\nstruct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head);\nvoid menu_get_ext_help(struct menu *menu, struct gstr *help);\n\n/* symbol.c */\nextern struct symbol * symbol_hash[SYMBOL_HASHSIZE];\n\nstruct symbol * sym_lookup(const char *name, int flags);\nstruct symbol * sym_find(const char *name);\nchar *sym_expand_string_value(const char *in);\nconst char * sym_escape_string_value(const char *in);\nstruct symbol ** sym_re_search(const char *pattern);\nconst char * sym_type_name(enum symbol_type type);\nvoid sym_calc_value(struct symbol *sym);\nenum symbol_type sym_get_type(struct symbol *sym);\nbool sym_tristate_within_range(struct symbol *sym,tristate tri);\nbool sym_set_tristate_value(struct symbol *sym,tristate tri);\ntristate sym_toggle_tristate_value(struct symbol *sym);\nbool sym_string_valid(struct symbol *sym, const char *newval);\nbool sym_string_within_range(struct symbol *sym, const char *str);\nbool sym_set_string_value(struct symbol *sym, const char *newval);\nbool sym_is_changable(struct symbol *sym);\nstruct property * sym_get_choice_prop(struct symbol *sym);\nconst char * sym_get_string_value(struct symbol *sym);\n\nconst char * prop_get_type_name(enum prop_type type);\n\n/* expr.c */\nvoid expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken);\n"
  },
  {
    "path": "support/kconfig/mconf.c",
    "content": "/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n *\n * Introduced single menu mode (show all sub-menus in one large tree).\n * 2002-11-06 Petr Baudis <pasky@ucw.cz>\n *\n * i18n, 2005, Arnaldo Carvalho de Melo <acme@conectiva.com.br>\n */\n\n#include <ctype.h>\n#include <errno.h>\n#include <fcntl.h>\n#include <limits.h>\n#include <stdarg.h>\n#include <stdlib.h>\n#include <string.h>\n#include <signal.h>\n#include <unistd.h>\n#include <locale.h>\n\n#include \"lkc.h\"\n#include \"lxdialog/dialog.h\"\n\nstatic const char mconf_readme[] = N_(\n\"Overview\\n\"\n\"--------\\n\"\n\"This interface lets you select features and parameters for the build.\\n\"\n\"Features can either be built-in, modularized, or ignored. Parameters\\n\"\n\"must be entered in as decimal or hexadecimal numbers or text.\\n\"\n\"\\n\"\n\"Menu items beginning with following braces represent features that\\n\"\n\"  [ ] can be built in or removed\\n\"\n\"  < > can be built in, modularized or removed\\n\"\n\"  { } can be built in or modularized (selected by other feature)\\n\"\n\"  - - are selected by other feature,\\n\"\n\"while *, M or whitespace inside braces means to build in, build as\\n\"\n\"a module or to exclude the feature respectively.\\n\"\n\"\\n\"\n\"To change any of these features, highlight it with the cursor\\n\"\n\"keys and press <Y> to build it in, <M> to make it a module or\\n\"\n\"<N> to remove it.  You may also press the <Space Bar> to cycle\\n\"\n\"through the available options (i.e. Y->N->M->Y).\\n\"\n\"\\n\"\n\"Some additional keyboard hints:\\n\"\n\"\\n\"\n\"Menus\\n\"\n\"----------\\n\"\n\"o  Use the Up/Down arrow keys (cursor keys) to highlight the item you\\n\"\n\"   wish to change or the submenu you wish to select and press <Enter>.\\n\"\n\"   Submenus are designated by \\\"--->\\\", empty ones by \\\"----\\\".\\n\"\n\"\\n\"\n\"   Shortcut: Press the option's highlighted letter (hotkey).\\n\"\n\"             Pressing a hotkey more than once will sequence\\n\"\n\"             through all visible items which use that hotkey.\\n\"\n\"\\n\"\n\"   You may also use the <PAGE UP> and <PAGE DOWN> keys to scroll\\n\"\n\"   unseen options into view.\\n\"\n\"\\n\"\n\"o  To exit a menu use the cursor keys to highlight the <Exit> button\\n\"\n\"   and press <ENTER>.\\n\"\n\"\\n\"\n\"   Shortcut: Press <ESC><ESC> or <E> or <X> if there is no hotkey\\n\"\n\"             using those letters.  You may press a single <ESC>, but\\n\"\n\"             there is a delayed response which you may find annoying.\\n\"\n\"\\n\"\n\"   Also, the <TAB> and cursor keys will cycle between <Select>,\\n\"\n\"   <Exit>, <Help>, <Save>, and <Load>.\\n\"\n\"\\n\"\n\"o  To get help with an item, use the cursor keys to highlight <Help>\\n\"\n\"   and press <ENTER>.\\n\"\n\"\\n\"\n\"   Shortcut: Press <H> or <?>.\\n\"\n\"\\n\"\n\"o  To toggle the display of hidden options, press <Z>.\\n\"\n\"\\n\"\n\"\\n\"\n\"Radiolists  (Choice lists)\\n\"\n\"-----------\\n\"\n\"o  Use the cursor keys to select the option you wish to set and press\\n\"\n\"   <S> or the <SPACE BAR>.\\n\"\n\"\\n\"\n\"   Shortcut: Press the first letter of the option you wish to set then\\n\"\n\"             press <S> or <SPACE BAR>.\\n\"\n\"\\n\"\n\"o  To see available help for the item, use the cursor keys to highlight\\n\"\n\"   <Help> and Press <ENTER>.\\n\"\n\"\\n\"\n\"   Shortcut: Press <H> or <?>.\\n\"\n\"\\n\"\n\"   Also, the <TAB> and cursor keys will cycle between <Select> and\\n\"\n\"   <Help>\\n\"\n\"\\n\"\n\"\\n\"\n\"Data Entry\\n\"\n\"-----------\\n\"\n\"o  Enter the requested information and press <ENTER>\\n\"\n\"   If you are entering hexadecimal values, it is not necessary to\\n\"\n\"   add the '0x' prefix to the entry.\\n\"\n\"\\n\"\n\"o  For help, use the <TAB> or cursor keys to highlight the help option\\n\"\n\"   and press <ENTER>.  You can try <TAB><H> as well.\\n\"\n\"\\n\"\n\"\\n\"\n\"Text Box    (Help Window)\\n\"\n\"--------\\n\"\n\"o  Use the cursor keys to scroll up/down/left/right.  The VI editor\\n\"\n\"   keys h,j,k,l function here as do <u>, <d>, <SPACE BAR> and <B> for\\n\"\n\"   those who are familiar with less and lynx.\\n\"\n\"\\n\"\n\"o  Press <E>, <X>, <q>, <Enter> or <Esc><Esc> to exit.\\n\"\n\"\\n\"\n\"\\n\"\n\"Alternate Configuration Files\\n\"\n\"-----------------------------\\n\"\n\"Menuconfig supports the use of alternate configuration files for\\n\"\n\"those who, for various reasons, find it necessary to switch\\n\"\n\"between different configurations.\\n\"\n\"\\n\"\n\"The <Save> button will let you save the current configuration to\\n\"\n\"a file of your choosing.  Use the <Load> button to load a previously\\n\"\n\"saved alternate configuration.\\n\"\n\"\\n\"\n\"Even if you don't use alternate configuration files, but you find\\n\"\n\"during a Menuconfig session that you have completely messed up your\\n\"\n\"settings, you may use the <Load> button to restore your previously\\n\"\n\"saved settings from \\\".config\\\" without restarting Menuconfig.\\n\"\n\"\\n\"\n\"Other information\\n\"\n\"-----------------\\n\"\n\"If you use Menuconfig in an XTERM window, make sure you have your\\n\"\n\"$TERM variable set to point to an xterm definition which supports\\n\"\n\"color.  Otherwise, Menuconfig will look rather bad.  Menuconfig will\\n\"\n\"not display correctly in an RXVT window because rxvt displays only one\\n\"\n\"intensity of color, bright.\\n\"\n\"\\n\"\n\"Menuconfig will display larger menus on screens or xterms which are\\n\"\n\"set to display more than the standard 25 row by 80 column geometry.\\n\"\n\"In order for this to work, the \\\"stty size\\\" command must be able to\\n\"\n\"display the screen's current row and column geometry.  I STRONGLY\\n\"\n\"RECOMMEND that you make sure you do NOT have the shell variables\\n\"\n\"LINES and COLUMNS exported into your environment.  Some distributions\\n\"\n\"export those variables via /etc/profile.  Some ncurses programs can\\n\"\n\"become confused when those variables (LINES & COLUMNS) don't reflect\\n\"\n\"the true screen size.\\n\"\n\"\\n\"\n\"Optional personality available\\n\"\n\"------------------------------\\n\"\n\"If you prefer to have all of the options listed in a single menu,\\n\"\n\"rather than the default multimenu hierarchy, run the menuconfig with\\n\"\n\"MENUCONFIG_MODE environment variable set to single_menu. Example:\\n\"\n\"\\n\"\n\"make MENUCONFIG_MODE=single_menu menuconfig\\n\"\n\"\\n\"\n\"<Enter> will then unroll the appropriate category, or enfold it if it\\n\"\n\"is already unrolled.\\n\"\n\"\\n\"\n\"Note that this mode can eventually be a little more CPU expensive\\n\"\n\"(especially with a larger number of unrolled categories) than the\\n\"\n\"default mode.\\n\"\n\"\\n\"\n\"Different color themes available\\n\"\n\"--------------------------------\\n\"\n\"It is possible to select different color themes using the variable\\n\"\n\"MENUCONFIG_COLOR. To select a theme use:\\n\"\n\"\\n\"\n\"make MENUCONFIG_COLOR=<theme> menuconfig\\n\"\n\"\\n\"\n\"Available themes are\\n\"\n\" mono       => selects colors suitable for monochrome displays\\n\"\n\" blackbg    => selects a color scheme with black background\\n\"\n\" classic    => theme with blue background. The classic look\\n\"\n\" bluetitle  => an LCD friendly version of classic. (default)\\n\"\n\"\\n\"),\nmenu_instructions[] = N_(\n\t\"Arrow keys navigate the menu.  \"\n\t\"<Enter> selects submenus ---> (or empty submenus ----).  \"\n\t\"Highlighted letters are hotkeys.  \"\n\t\"Pressing <Y> selects a feature, while <N> excludes a feature.  \"\n\t\"Press <Esc><Esc> to exit, <?> for Help, </> for Search.  \"\n\t\"Legend: [*] feature is selected  [ ] feature is excluded\"),\nradiolist_instructions[] = N_(\n\t\"Use the arrow keys to navigate this window or \"\n\t\"press the hotkey of the item you wish to select \"\n\t\"followed by the <SPACE BAR>. \"\n\t\"Press <?> for additional information about this option.\"),\ninputbox_instructions_int[] = N_(\n\t\"Please enter a decimal value. \"\n\t\"Fractions will not be accepted.  \"\n\t\"Use the <TAB> key to move from the input field to the buttons below it.\"),\ninputbox_instructions_hex[] = N_(\n\t\"Please enter a hexadecimal value. \"\n\t\"Use the <TAB> key to move from the input field to the buttons below it.\"),\ninputbox_instructions_string[] = N_(\n\t\"Please enter a string value. \"\n\t\"Use the <TAB> key to move from the input field to the buttons below it.\"),\nsetmod_text[] = N_(\n\t\"This feature depends on another which has been configured as a module.\\n\"\n\t\"As a result, this feature will be built as a module.\"),\nload_config_text[] = N_(\n\t\"Enter the name of the configuration file you wish to load.  \"\n\t\"Accept the name shown to restore the configuration you \"\n\t\"last retrieved.  Leave blank to abort.\"),\nload_config_help[] = N_(\n\t\"\\n\"\n\t\"For various reasons, one may wish to keep several different\\n\"\n\t\"configurations available on a single machine.\\n\"\n\t\"\\n\"\n\t\"If you have saved a previous configuration in a file other than the\\n\"\n\t\"default one, entering its name here will allow you to modify that\\n\"\n\t\"configuration.\\n\"\n\t\"\\n\"\n\t\"If you are uncertain, then you have probably never used alternate\\n\"\n\t\"configuration files. You should therefore leave this blank to abort.\\n\"),\nsave_config_text[] = N_(\n\t\"Enter a filename to which this configuration should be saved \"\n\t\"as an alternate.  Leave blank to abort.\"),\nsave_config_help[] = N_(\n\t\"\\n\"\n\t\"For various reasons, one may wish to keep different configurations\\n\"\n\t\"available on a single machine.\\n\"\n\t\"\\n\"\n\t\"Entering a file name here will allow you to later retrieve, modify\\n\"\n\t\"and use the current configuration as an alternate to whatever\\n\"\n\t\"configuration options you have selected at that time.\\n\"\n\t\"\\n\"\n\t\"If you are uncertain what all this means then you should probably\\n\"\n\t\"leave this blank.\\n\"),\nsearch_help[] = N_(\n\t\"\\n\"\n\t\"Search for symbols and display their relations.\\n\"\n\t\"Regular expressions are allowed.\\n\"\n\t\"Example: search for \\\"^FOO\\\"\\n\"\n\t\"Result:\\n\"\n\t\"-----------------------------------------------------------------\\n\"\n\t\"Symbol: FOO [=m]\\n\"\n\t\"Type  : tristate\\n\"\n\t\"Prompt: Foo bus is used to drive the bar HW\\n\"\n\t\"  Location:\\n\"\n\t\"    -> Bus options (PCI, PCMCIA, EISA, ISA)\\n\"\n\t\"      -> PCI support (PCI [=y])\\n\"\n\t\"(1)     -> PCI access mode (<choice> [=y])\\n\"\n\t\"  Defined at drivers/pci/Kconfig:47\\n\"\n\t\"  Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\\n\"\n\t\"  Selects: LIBCRC32\\n\"\n\t\"  Selected by: BAR [=n]\\n\"\n\t\"-----------------------------------------------------------------\\n\"\n\t\"o The line 'Type:' shows the type of the configuration option for\\n\"\n\t\"  this symbol (bool, tristate, string, ...)\\n\"\n\t\"o The line 'Prompt:' shows the text used in the menu structure for\\n\"\n\t\"  this symbol\\n\"\n\t\"o The 'Defined at' line tells at what file / line number the symbol\\n\"\n\t\"  is defined\\n\"\n\t\"o The 'Depends on:' line tells what symbols need to be defined for\\n\"\n\t\"  this symbol to be visible in the menu (selectable)\\n\"\n\t\"o The 'Location:' lines tells where in the menu structure this symbol\\n\"\n\t\"  is located\\n\"\n\t\"    A location followed by a [=y] indicates that this is a\\n\"\n\t\"    selectable menu item - and the current value is displayed inside\\n\"\n\t\"    brackets.\\n\"\n\t\"    Press the key in the (#) prefix to jump directly to that\\n\"\n\t\"    location. You will be returned to the current search results\\n\"\n\t\"    after exiting this new menu.\\n\"\n\t\"o The 'Selects:' line tells what symbols will be automatically\\n\"\n\t\"  selected if this symbol is selected (y or m)\\n\"\n\t\"o The 'Selected by' line tells what symbol has selected this symbol\\n\"\n\t\"\\n\"\n\t\"Only relevant lines are shown.\\n\"\n\t\"\\n\\n\"\n\t\"Search examples:\\n\"\n\t\"Examples: USB\t=> find all symbols containing USB\\n\"\n\t\"          ^USB => find all symbols starting with USB\\n\"\n\t\"          USB$ => find all symbols ending with USB\\n\"\n\t\"\\n\");\n\nstatic int indent;\nstatic struct menu *current_menu;\nstatic int child_count;\nstatic int single_menu_mode;\nstatic int show_all_options;\nstatic int save_and_exit;\nstatic int silent;\n\nstatic void conf(struct menu *menu, struct menu *active_menu);\nstatic void conf_choice(struct menu *menu);\nstatic void conf_string(struct menu *menu);\nstatic void conf_load(void);\nstatic void conf_save(void);\nstatic int show_textbox_ext(const char *title, char *text, int r, int c,\n\t\t\t    int *keys, int *vscroll, int *hscroll,\n\t\t\t    update_text_fn update_text, void *data);\nstatic void show_textbox(const char *title, const char *text, int r, int c);\nstatic void show_helptext(const char *title, const char *text);\nstatic void show_help(struct menu *menu);\n\nstatic char filename[PATH_MAX+1];\nstatic void set_config_filename(const char *config_filename)\n{\n\tstatic char menu_backtitle[PATH_MAX+128];\n\tint size;\n\n\tsize = snprintf(menu_backtitle, sizeof(menu_backtitle),\n\t\t\t\"%s - %s\", config_filename, rootmenu.prompt->text);\n\tif (size >= sizeof(menu_backtitle))\n\t\tmenu_backtitle[sizeof(menu_backtitle)-1] = '\\0';\n\tset_dialog_backtitle(menu_backtitle);\n\n\tsize = snprintf(filename, sizeof(filename), \"%s\", config_filename);\n\tif (size >= sizeof(filename))\n\t\tfilename[sizeof(filename)-1] = '\\0';\n}\n\nstruct subtitle_part {\n\tstruct list_head entries;\n\tconst char *text;\n};\nstatic LIST_HEAD(trail);\n\nstatic struct subtitle_list *subtitles;\nstatic void set_subtitle(void)\n{\n\tstruct subtitle_part *sp;\n\tstruct subtitle_list *pos, *tmp;\n\n\tfor (pos = subtitles; pos != NULL; pos = tmp) {\n\t\ttmp = pos->next;\n\t\tfree(pos);\n\t}\n\n\tsubtitles = NULL;\n\tlist_for_each_entry(sp, &trail, entries) {\n\t\tif (sp->text) {\n\t\t\tif (pos) {\n\t\t\t\tpos->next = xcalloc(1, sizeof(*pos));\n\t\t\t\tpos = pos->next;\n\t\t\t} else {\n\t\t\t\tsubtitles = pos = xcalloc(1, sizeof(*pos));\n\t\t\t}\n\t\t\tpos->text = sp->text;\n\t\t}\n\t}\n\n\tset_dialog_subtitles(subtitles);\n}\n\nstatic void reset_subtitle(void)\n{\n\tstruct subtitle_list *pos, *tmp;\n\n\tfor (pos = subtitles; pos != NULL; pos = tmp) {\n\t\ttmp = pos->next;\n\t\tfree(pos);\n\t}\n\tsubtitles = NULL;\n\tset_dialog_subtitles(subtitles);\n}\n\nstruct search_data {\n\tstruct list_head *head;\n\tstruct menu **targets;\n\tint *keys;\n};\n\nstatic void update_text(char *buf, size_t start, size_t end, void *_data)\n{\n\tstruct search_data *data = _data;\n\tstruct jump_key *pos;\n\tint k = 0;\n\n\tlist_for_each_entry(pos, data->head, entries) {\n\t\tif (pos->offset >= start && pos->offset < end) {\n\t\t\tchar header[4];\n\n\t\t\tif (k < JUMP_NB) {\n\t\t\t\tint key = '0' + (pos->index % JUMP_NB) + 1;\n\n\t\t\t\tsprintf(header, \"(%c)\", key);\n\t\t\t\tdata->keys[k] = key;\n\t\t\t\tdata->targets[k] = pos->target;\n\t\t\t\tk++;\n\t\t\t} else {\n\t\t\t\tsprintf(header, \"   \");\n\t\t\t}\n\n\t\t\tmemcpy(buf + pos->offset, header, sizeof(header) - 1);\n\t\t}\n\t}\n\tdata->keys[k] = 0;\n}\n\nstatic void search_conf(void)\n{\n\tstruct symbol **sym_arr;\n\tstruct gstr res;\n\tstruct gstr title;\n\tchar *dialog_input;\n\tint dres, vscroll = 0, hscroll = 0;\n\tbool again;\n\tstruct gstr sttext;\n\tstruct subtitle_part stpart;\n\n\ttitle = str_new();\n\tstr_printf( &title, _(\"Enter (sub)string or regexp to search for \"\n\t\t\t      \"(with or without \\\"%s\\\")\"), CONFIG_);\n\nagain:\n\tdialog_clear();\n\tdres = dialog_inputbox(_(\"Search Configuration Parameter\"),\n\t\t\t      str_get(&title),\n\t\t\t      10, 75, \"\");\n\tswitch (dres) {\n\tcase 0:\n\t\tbreak;\n\tcase 1:\n\t\tshow_helptext(_(\"Search Configuration\"), search_help);\n\t\tgoto again;\n\tdefault:\n\t\tstr_free(&title);\n\t\treturn;\n\t}\n\n\t/* strip the prefix if necessary */\n\tdialog_input = dialog_input_result;\n\tif (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0)\n\t\tdialog_input += strlen(CONFIG_);\n\n\tsttext = str_new();\n\tstr_printf(&sttext, \"Search (%s)\", dialog_input_result);\n\tstpart.text = str_get(&sttext);\n\tlist_add_tail(&stpart.entries, &trail);\n\n\tsym_arr = sym_re_search(dialog_input);\n\tdo {\n\t\tLIST_HEAD(head);\n\t\tstruct menu *targets[JUMP_NB];\n\t\tint keys[JUMP_NB + 1], i;\n\t\tstruct search_data data = {\n\t\t\t.head = &head,\n\t\t\t.targets = targets,\n\t\t\t.keys = keys,\n\t\t};\n\t\tstruct jump_key *pos, *tmp;\n\n\t\tres = get_relations_str(sym_arr, &head);\n\t\tset_subtitle();\n\t\tdres = show_textbox_ext(_(\"Search Results\"), (char *)\n\t\t\t\t\tstr_get(&res), 0, 0, keys, &vscroll,\n\t\t\t\t\t&hscroll, &update_text, (void *)\n\t\t\t\t\t&data);\n\t\tagain = false;\n\t\tfor (i = 0; i < JUMP_NB && keys[i]; i++)\n\t\t\tif (dres == keys[i]) {\n\t\t\t\tconf(targets[i]->parent, targets[i]);\n\t\t\t\tagain = true;\n\t\t\t}\n\t\tstr_free(&res);\n\t\tlist_for_each_entry_safe(pos, tmp, &head, entries)\n\t\t\tfree(pos);\n\t} while (again);\n\tfree(sym_arr);\n\tstr_free(&title);\n\tlist_del(trail.prev);\n\tstr_free(&sttext);\n}\n\nstatic void build_conf(struct menu *menu)\n{\n\tstruct symbol *sym;\n\tstruct property *prop;\n\tstruct menu *child;\n\tint type, tmp, doint = 2;\n\ttristate val;\n\tchar ch;\n\tbool visible;\n\n\t/*\n\t * note: menu_is_visible() has side effect that it will\n\t * recalc the value of the symbol.\n\t */\n\tvisible = menu_is_visible(menu);\n\tif (show_all_options && !menu_has_prompt(menu))\n\t\treturn;\n\telse if (!show_all_options && !visible)\n\t\treturn;\n\n\tsym = menu->sym;\n\tprop = menu->prompt;\n\tif (!sym) {\n\t\tif (prop && menu != current_menu) {\n\t\t\tconst char *prompt = menu_get_prompt(menu);\n\t\t\tswitch (prop->type) {\n\t\t\tcase P_MENU:\n\t\t\t\tchild_count++;\n\t\t\t\tprompt = _(prompt);\n\t\t\t\tif (single_menu_mode) {\n\t\t\t\t\titem_make(\"%s%*c%s\",\n\t\t\t\t\t\t  menu->data ? \"-->\" : \"++>\",\n\t\t\t\t\t\t  indent + 1, ' ', prompt);\n\t\t\t\t} else\n\t\t\t\t\titem_make(\"   %*c%s  %s\",\n\t\t\t\t\t\t  indent + 1, ' ', prompt,\n\t\t\t\t\t\t  menu_is_empty(menu) ? \"----\" : \"--->\");\n\t\t\t\titem_set_tag('m');\n\t\t\t\titem_set_data(menu);\n\t\t\t\tif (single_menu_mode && menu->data)\n\t\t\t\t\tgoto conf_childs;\n\t\t\t\treturn;\n\t\t\tcase P_COMMENT:\n\t\t\t\tif (prompt) {\n\t\t\t\t\tchild_count++;\n\t\t\t\t\titem_make(\"   %*c*** %s ***\", indent + 1, ' ', _(prompt));\n\t\t\t\t\titem_set_tag(':');\n\t\t\t\t\titem_set_data(menu);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (prompt) {\n\t\t\t\t\tchild_count++;\n\t\t\t\t\titem_make(\"---%*c%s\", indent + 1, ' ', _(prompt));\n\t\t\t\t\titem_set_tag(':');\n\t\t\t\t\titem_set_data(menu);\n\t\t\t\t}\n\t\t\t}\n\t\t} else\n\t\t\tdoint = 0;\n\t\tgoto conf_childs;\n\t}\n\n\ttype = sym_get_type(sym);\n\tif (sym_is_choice(sym)) {\n\t\tstruct symbol *def_sym = sym_get_choice_value(sym);\n\t\tstruct menu *def_menu = NULL;\n\n\t\tchild_count++;\n\t\tfor (child = menu->list; child; child = child->next) {\n\t\t\tif (menu_is_visible(child) && child->sym == def_sym)\n\t\t\t\tdef_menu = child;\n\t\t}\n\n\t\tval = sym_get_tristate_value(sym);\n\t\tif (sym_is_changable(sym)) {\n\t\t\tswitch (type) {\n\t\t\tcase S_BOOLEAN:\n\t\t\t\titem_make(\"[%c]\", val == no ? ' ' : '*');\n\t\t\t\tbreak;\n\t\t\tcase S_TRISTATE:\n\t\t\t\tswitch (val) {\n\t\t\t\tcase yes: ch = '*'; break;\n\t\t\t\tcase mod: ch = 'M'; break;\n\t\t\t\tdefault:  ch = ' '; break;\n\t\t\t\t}\n\t\t\t\titem_make(\"<%c>\", ch);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\titem_set_tag('t');\n\t\t\titem_set_data(menu);\n\t\t} else {\n\t\t\titem_make(\"   \");\n\t\t\titem_set_tag(def_menu ? 't' : ':');\n\t\t\titem_set_data(menu);\n\t\t}\n\n\t\titem_add_str(\"%*c%s\", indent + 1, ' ', _(menu_get_prompt(menu)));\n\t\tif (val == yes) {\n\t\t\tif (def_menu) {\n\t\t\t\titem_add_str(\" (%s)\", _(menu_get_prompt(def_menu)));\n\t\t\t\titem_add_str(\"  --->\");\n\t\t\t\tif (def_menu->list) {\n\t\t\t\t\tindent += 2;\n\t\t\t\t\tbuild_conf(def_menu);\n\t\t\t\t\tindent -= 2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t} else {\n\t\tif (menu == current_menu) {\n\t\t\titem_make(\"---%*c%s\", indent + 1, ' ', _(menu_get_prompt(menu)));\n\t\t\titem_set_tag(':');\n\t\t\titem_set_data(menu);\n\t\t\tgoto conf_childs;\n\t\t}\n\t\tchild_count++;\n\t\tval = sym_get_tristate_value(sym);\n\t\tif (sym_is_choice_value(sym) && val == yes) {\n\t\t\titem_make(\"   \");\n\t\t\titem_set_tag(':');\n\t\t\titem_set_data(menu);\n\t\t} else {\n\t\t\tswitch (type) {\n\t\t\tcase S_BOOLEAN:\n\t\t\t\tif (sym_is_changable(sym))\n\t\t\t\t\titem_make(\"[%c]\", val == no ? ' ' : '*');\n\t\t\t\telse\n\t\t\t\t\titem_make(\"-%c-\", val == no ? ' ' : '*');\n\t\t\t\titem_set_tag('t');\n\t\t\t\titem_set_data(menu);\n\t\t\t\tbreak;\n\t\t\tcase S_TRISTATE:\n\t\t\t\tswitch (val) {\n\t\t\t\tcase yes: ch = '*'; break;\n\t\t\t\tcase mod: ch = 'M'; break;\n\t\t\t\tdefault:  ch = ' '; break;\n\t\t\t\t}\n\t\t\t\tif (sym_is_changable(sym)) {\n\t\t\t\t\tif (sym->rev_dep.tri == mod)\n\t\t\t\t\t\titem_make(\"{%c}\", ch);\n\t\t\t\t\telse\n\t\t\t\t\t\titem_make(\"<%c>\", ch);\n\t\t\t\t} else\n\t\t\t\t\titem_make(\"-%c-\", ch);\n\t\t\t\titem_set_tag('t');\n\t\t\t\titem_set_data(menu);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttmp = 2 + strlen(sym_get_string_value(sym)); /* () = 2 */\n\t\t\t\titem_make(\"(%s)\", sym_get_string_value(sym));\n\t\t\t\ttmp = indent - tmp + 4;\n\t\t\t\tif (tmp < 0)\n\t\t\t\t\ttmp = 0;\n\t\t\t\titem_add_str(\"%*c%s%s\", tmp, ' ', _(menu_get_prompt(menu)),\n\t\t\t\t\t     (sym_has_value(sym) || !sym_is_changable(sym)) ?\n\t\t\t\t\t     \"\" : _(\" (NEW)\"));\n\t\t\t\titem_set_tag('s');\n\t\t\t\titem_set_data(menu);\n\t\t\t\tgoto conf_childs;\n\t\t\t}\n\t\t}\n\t\titem_add_str(\"%*c%s%s\", indent + 1, ' ', _(menu_get_prompt(menu)),\n\t\t\t  (sym_has_value(sym) || !sym_is_changable(sym)) ?\n\t\t\t  \"\" : _(\" (NEW)\"));\n\t\tif (menu->prompt->type == P_MENU) {\n\t\t\titem_add_str(\"  %s\", menu_is_empty(menu) ? \"----\" : \"--->\");\n\t\t\treturn;\n\t\t}\n\t}\n\nconf_childs:\n\tindent += doint;\n\tfor (child = menu->list; child; child = child->next)\n\t\tbuild_conf(child);\n\tindent -= doint;\n}\n\nstatic void conf(struct menu *menu, struct menu *active_menu)\n{\n\tstruct menu *submenu;\n\tconst char *prompt = menu_get_prompt(menu);\n\tstruct subtitle_part stpart;\n\tstruct symbol *sym;\n\tint res;\n\tint s_scroll = 0;\n\n\tif (menu != &rootmenu)\n\t\tstpart.text = menu_get_prompt(menu);\n\telse\n\t\tstpart.text = NULL;\n\tlist_add_tail(&stpart.entries, &trail);\n\n\twhile (1) {\n\t\titem_reset();\n\t\tcurrent_menu = menu;\n\t\tbuild_conf(menu);\n\t\tif (!child_count)\n\t\t\tbreak;\n\t\tset_subtitle();\n\t\tdialog_clear();\n\t\tres = dialog_menu(prompt ? _(prompt) : _(\"Main Menu\"),\n\t\t\t\t  _(menu_instructions),\n\t\t\t\t  active_menu, &s_scroll);\n\t\tif (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL)\n\t\t\tbreak;\n\t\tif (item_count() != 0) {\n\t\t\tif (!item_activate_selected())\n\t\t\t\tcontinue;\n\t\t\tif (!item_tag())\n\t\t\t\tcontinue;\n\t\t}\n\t\tsubmenu = item_data();\n\t\tactive_menu = item_data();\n\t\tif (submenu)\n\t\t\tsym = submenu->sym;\n\t\telse\n\t\t\tsym = NULL;\n\n\t\tswitch (res) {\n\t\tcase 0:\n\t\t\tswitch (item_tag()) {\n\t\t\tcase 'm':\n\t\t\t\tif (single_menu_mode)\n\t\t\t\t\tsubmenu->data = (void *) (long) !submenu->data;\n\t\t\t\telse\n\t\t\t\t\tconf(submenu, NULL);\n\t\t\t\tbreak;\n\t\t\tcase 't':\n\t\t\t\tif (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)\n\t\t\t\t\tconf_choice(submenu);\n\t\t\t\telse if (submenu->prompt->type == P_MENU)\n\t\t\t\t\tconf(submenu, NULL);\n\t\t\t\tbreak;\n\t\t\tcase 's':\n\t\t\t\tconf_string(submenu);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tif (sym)\n\t\t\t\tshow_help(submenu);\n\t\t\telse {\n\t\t\t\treset_subtitle();\n\t\t\t\tshow_helptext(_(\"README\"), _(mconf_readme));\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\treset_subtitle();\n\t\t\tconf_save();\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\treset_subtitle();\n\t\t\tconf_load();\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tif (item_is_tag('t')) {\n\t\t\t\tif (sym_set_tristate_value(sym, yes))\n\t\t\t\t\tbreak;\n\t\t\t\tif (sym_set_tristate_value(sym, mod))\n\t\t\t\t\tshow_textbox(NULL, setmod_text, 6, 74);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tif (item_is_tag('t'))\n\t\t\t\tsym_set_tristate_value(sym, no);\n\t\t\tbreak;\n\t\tcase 7:\n\t\t\tif (item_is_tag('t'))\n\t\t\t\tsym_set_tristate_value(sym, mod);\n\t\t\tbreak;\n\t\tcase 8:\n\t\t\tif (item_is_tag('t'))\n\t\t\t\tsym_toggle_tristate_value(sym);\n\t\t\telse if (item_is_tag('m'))\n\t\t\t\tconf(submenu, NULL);\n\t\t\tbreak;\n\t\tcase 9:\n\t\t\tsearch_conf();\n\t\t\tbreak;\n\t\tcase 10:\n\t\t\tshow_all_options = !show_all_options;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlist_del(trail.prev);\n}\n\nstatic int show_textbox_ext(const char *title, char *text, int r, int c, int\n\t\t\t    *keys, int *vscroll, int *hscroll, update_text_fn\n\t\t\t    update_text, void *data)\n{\n\tdialog_clear();\n\treturn dialog_textbox(title, text, r, c, keys, vscroll, hscroll,\n\t\t\t      update_text, data);\n}\n\nstatic void show_textbox(const char *title, const char *text, int r, int c)\n{\n\tshow_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL,\n\t\t\t NULL, NULL);\n}\n\nstatic void show_helptext(const char *title, const char *text)\n{\n\tshow_textbox(title, text, 0, 0);\n}\n\nstatic void conf_message_callback(const char *fmt, va_list ap)\n{\n\tchar buf[PATH_MAX+1];\n\n\tvsnprintf(buf, sizeof(buf), fmt, ap);\n\tif (save_and_exit) {\n\t\tif (!silent)\n\t\t\tprintf(\"%s\", buf);\n\t} else {\n\t\tshow_textbox(NULL, buf, 6, 60);\n\t}\n}\n\nstatic void show_help(struct menu *menu)\n{\n\tstruct gstr help = str_new();\n\n\thelp.max_width = getmaxx(stdscr) - 10;\n\tmenu_get_ext_help(menu, &help);\n\n\tshow_helptext(_(menu_get_prompt(menu)), str_get(&help));\n\tstr_free(&help);\n}\n\nstatic void conf_choice(struct menu *menu)\n{\n\tconst char *prompt = _(menu_get_prompt(menu));\n\tstruct menu *child;\n\tstruct symbol *active;\n\n\tactive = sym_get_choice_value(menu->sym);\n\twhile (1) {\n\t\tint res;\n\t\tint selected;\n\t\titem_reset();\n\n\t\tcurrent_menu = menu;\n\t\tfor (child = menu->list; child; child = child->next) {\n\t\t\tif (!menu_is_visible(child))\n\t\t\t\tcontinue;\n\t\t\tif (child->sym)\n\t\t\t\titem_make(\"%s\", _(menu_get_prompt(child)));\n\t\t\telse {\n\t\t\t\titem_make(\"*** %s ***\", _(menu_get_prompt(child)));\n\t\t\t\titem_set_tag(':');\n\t\t\t}\n\t\t\titem_set_data(child);\n\t\t\tif (child->sym == active)\n\t\t\t\titem_set_selected(1);\n\t\t\tif (child->sym == sym_get_choice_value(menu->sym))\n\t\t\t\titem_set_tag('X');\n\t\t}\n\t\tdialog_clear();\n\t\tres = dialog_checklist(prompt ? _(prompt) : _(\"Main Menu\"),\n\t\t\t\t\t_(radiolist_instructions),\n\t\t\t\t\tMENUBOX_HEIGTH_MIN,\n\t\t\t\t\tMENUBOX_WIDTH_MIN,\n\t\t\t\t\tCHECKLIST_HEIGTH_MIN);\n\t\tselected = item_activate_selected();\n\t\tswitch (res) {\n\t\tcase 0:\n\t\t\tif (selected) {\n\t\t\t\tchild = item_data();\n\t\t\t\tif (!child->sym)\n\t\t\t\t\tbreak;\n\n\t\t\t\tsym_set_tristate_value(child->sym, yes);\n\t\t\t}\n\t\t\treturn;\n\t\tcase 1:\n\t\t\tif (selected) {\n\t\t\t\tchild = item_data();\n\t\t\t\tshow_help(child);\n\t\t\t\tactive = child->sym;\n\t\t\t} else\n\t\t\t\tshow_help(menu);\n\t\t\tbreak;\n\t\tcase KEY_ESC:\n\t\t\treturn;\n\t\tcase -ERRDISPLAYTOOSMALL:\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nstatic void conf_string(struct menu *menu)\n{\n\tconst char *prompt = menu_get_prompt(menu);\n\n\twhile (1) {\n\t\tint res;\n\t\tconst char *heading;\n\n\t\tswitch (sym_get_type(menu->sym)) {\n\t\tcase S_INT:\n\t\t\theading = _(inputbox_instructions_int);\n\t\t\tbreak;\n\t\tcase S_HEX:\n\t\t\theading = _(inputbox_instructions_hex);\n\t\t\tbreak;\n\t\tcase S_STRING:\n\t\t\theading = _(inputbox_instructions_string);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\theading = _(\"Internal mconf error!\");\n\t\t}\n\t\tdialog_clear();\n\t\tres = dialog_inputbox(prompt ? _(prompt) : _(\"Main Menu\"),\n\t\t\t\t      heading, 10, 75,\n\t\t\t\t      sym_get_string_value(menu->sym));\n\t\tswitch (res) {\n\t\tcase 0:\n\t\t\tif (sym_set_string_value(menu->sym, dialog_input_result))\n\t\t\t\treturn;\n\t\t\tshow_textbox(NULL, _(\"You have made an invalid entry.\"), 5, 43);\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tshow_help(menu);\n\t\t\tbreak;\n\t\tcase KEY_ESC:\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nstatic void conf_load(void)\n{\n\n\twhile (1) {\n\t\tint res;\n\t\tdialog_clear();\n\t\tres = dialog_inputbox(NULL, load_config_text,\n\t\t\t\t      11, 55, filename);\n\t\tswitch(res) {\n\t\tcase 0:\n\t\t\tif (!dialog_input_result[0])\n\t\t\t\treturn;\n\t\t\tif (!conf_read(dialog_input_result)) {\n\t\t\t\tset_config_filename(dialog_input_result);\n\t\t\t\tsym_set_change_count(1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tshow_textbox(NULL, _(\"File does not exist!\"), 5, 38);\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tshow_helptext(_(\"Load Alternate Configuration\"), load_config_help);\n\t\t\tbreak;\n\t\tcase KEY_ESC:\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nstatic void conf_save(void)\n{\n\twhile (1) {\n\t\tint res;\n\t\tdialog_clear();\n\t\tres = dialog_inputbox(NULL, save_config_text,\n\t\t\t\t      11, 55, filename);\n\t\tswitch(res) {\n\t\tcase 0:\n\t\t\tif (!dialog_input_result[0])\n\t\t\t\treturn;\n\t\t\tif (!conf_write(dialog_input_result)) {\n\t\t\t\tset_config_filename(dialog_input_result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tshow_textbox(NULL, _(\"Can't create file!  Probably a nonexistent directory.\"), 5, 60);\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tshow_helptext(_(\"Save Alternate Configuration\"), save_config_help);\n\t\t\tbreak;\n\t\tcase KEY_ESC:\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nstatic int handle_exit(void)\n{\n\tint res;\n\n\tsave_and_exit = 1;\n\treset_subtitle();\n\tdialog_clear();\n\tif (conf_get_changed())\n\t\tres = dialog_yesno(NULL,\n\t\t\t\t   _(\"Do you wish to save your new configuration?\\n\"\n\t\t\t\t     \"(Press <ESC><ESC> to continue Buildroot configuration.)\"),\n\t\t\t\t   6, 60);\n\telse\n\t\tres = -1;\n\n\tend_dialog(saved_x, saved_y);\n\n\tswitch (res) {\n\tcase 0:\n\t\tif (conf_write(filename)) {\n\t\t\tfprintf(stderr, _(\"\\n\\n\"\n\t\t\t\t\t  \"Error while writing of the configuration.\\n\"\n\t\t\t\t\t  \"Your configuration changes were NOT saved.\"\n\t\t\t\t\t  \"\\n\\n\"));\n\t\t\treturn 1;\n\t\t}\n\t\t/* fall through */\n\tcase -1:\n\t\tif (!silent)\n\t\t\tprintf(_(\"\\n\\n\"\n\t\t\t\t \"*** End of the configuration.\\n\"\n\t\t\t\t \"*** Execute 'make' to start the build or try 'make help'.\"\n\t\t\t\t \"\\n\\n\"));\n\t\tres = 0;\n\t\tbreak;\n\tdefault:\n\t\tif (!silent)\n\t\t\tfprintf(stderr, _(\"\\n\\n\"\n\t\t\t\t\t  \"Your configuration changes were NOT saved.\"\n\t\t\t\t\t  \"\\n\\n\"));\n\t\tif (res != KEY_ESC)\n\t\t\tres = 0;\n\t}\n\n\treturn res;\n}\n\nstatic void sig_handler(int signo)\n{\n\texit(handle_exit());\n}\n\nint main(int ac, char **av)\n{\n\tchar *mode;\n\tint res;\n\n\tsetlocale(LC_ALL, \"\");\n\tbindtextdomain(PACKAGE, LOCALEDIR);\n\ttextdomain(PACKAGE);\n\n\tsignal(SIGINT, sig_handler);\n\n\tif (ac > 1 && strcmp(av[1], \"-s\") == 0) {\n\t\tsilent = 1;\n\t\t/* Silence conf_read() until the real callback is set up */\n\t\tconf_set_message_callback(NULL);\n\t\tav++;\n\t}\n\tconf_parse(av[1]);\n\tconf_read(NULL);\n\n\tmode = getenv(\"MENUCONFIG_MODE\");\n\tif (mode) {\n\t\tif (!strcasecmp(mode, \"single_menu\"))\n\t\t\tsingle_menu_mode = 1;\n\t}\n\n\tif (init_dialog(NULL)) {\n\t\tfprintf(stderr, N_(\"Your display is too small to run Menuconfig!\\n\"));\n\t\tfprintf(stderr, N_(\"It must be at least 19 lines by 80 columns.\\n\"));\n\t\treturn 1;\n\t}\n\n\tset_config_filename(conf_get_configname());\n\tconf_set_message_callback(conf_message_callback);\n\tdo {\n\t\tconf(&rootmenu, NULL);\n\t\tres = handle_exit();\n\t} while (res == KEY_ESC);\n\n\treturn res;\n}\n"
  },
  {
    "path": "support/kconfig/menu.c",
    "content": "/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#include <ctype.h>\n#include <stdarg.h>\n#include <stdlib.h>\n#include <string.h>\n\n#include \"lkc.h\"\n\nstatic const char nohelp_text[] = \"There is no help available for this option.\";\n\nstruct menu rootmenu;\nstatic struct menu **last_entry_ptr;\n\nstruct file *file_list;\nstruct file *current_file;\n\nvoid menu_warn(struct menu *menu, const char *fmt, ...)\n{\n\tva_list ap;\n\tva_start(ap, fmt);\n\tfprintf(stderr, \"%s:%d:warning: \", menu->file->name, menu->lineno);\n\tvfprintf(stderr, fmt, ap);\n\tfprintf(stderr, \"\\n\");\n\tva_end(ap);\n}\n\nstatic void prop_warn(struct property *prop, const char *fmt, ...)\n{\n\tva_list ap;\n\tva_start(ap, fmt);\n\tfprintf(stderr, \"%s:%d:warning: \", prop->file->name, prop->lineno);\n\tvfprintf(stderr, fmt, ap);\n\tfprintf(stderr, \"\\n\");\n\tva_end(ap);\n}\n\nvoid _menu_init(void)\n{\n\tcurrent_entry = current_menu = &rootmenu;\n\tlast_entry_ptr = &rootmenu.list;\n}\n\nvoid menu_add_entry(struct symbol *sym)\n{\n\tstruct menu *menu;\n\n\tmenu = xmalloc(sizeof(*menu));\n\tmemset(menu, 0, sizeof(*menu));\n\tmenu->sym = sym;\n\tmenu->parent = current_menu;\n\tmenu->file = current_file;\n\tmenu->lineno = zconf_lineno();\n\n\t*last_entry_ptr = menu;\n\tlast_entry_ptr = &menu->next;\n\tcurrent_entry = menu;\n\tif (sym)\n\t\tmenu_add_symbol(P_SYMBOL, sym, NULL);\n}\n\nstruct menu *menu_add_menu(void)\n{\n\tlast_entry_ptr = &current_entry->list;\n\treturn current_menu = current_entry;\n}\n\nvoid menu_end_menu(void)\n{\n\tlast_entry_ptr = &current_menu->next;\n\tcurrent_menu = current_menu->parent;\n}\n\n/*\n * Rewrites 'm' to 'm' && MODULES, so that it evaluates to 'n' when running\n * without modules\n */\nstatic struct expr *rewrite_m(struct expr *e)\n{\n\tif (!e)\n\t\treturn e;\n\n\tswitch (e->type) {\n\tcase E_NOT:\n\t\te->left.expr = rewrite_m(e->left.expr);\n\t\tbreak;\n\tcase E_OR:\n\tcase E_AND:\n\t\te->left.expr = rewrite_m(e->left.expr);\n\t\te->right.expr = rewrite_m(e->right.expr);\n\t\tbreak;\n\tcase E_SYMBOL:\n\t\t/* change 'm' into 'm' && MODULES */\n\t\tif (e->left.sym == &symbol_mod)\n\t\t\treturn expr_alloc_and(e, expr_alloc_symbol(modules_sym));\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\treturn e;\n}\n\nvoid menu_add_dep(struct expr *dep)\n{\n\tcurrent_entry->dep = expr_alloc_and(current_entry->dep, dep);\n}\n\nvoid menu_set_type(int type)\n{\n\tstruct symbol *sym = current_entry->sym;\n\n\tif (sym->type == type)\n\t\treturn;\n\tif (sym->type == S_UNKNOWN) {\n\t\tsym->type = type;\n\t\treturn;\n\t}\n\tmenu_warn(current_entry,\n\t\t\"ignoring type redefinition of '%s' from '%s' to '%s'\",\n\t\tsym->name ? sym->name : \"<choice>\",\n\t\tsym_type_name(sym->type), sym_type_name(type));\n}\n\nstatic struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep)\n{\n\tstruct property *prop = prop_alloc(type, current_entry->sym);\n\n\tprop->menu = current_entry;\n\tprop->expr = expr;\n\tprop->visible.expr = dep;\n\n\tif (prompt) {\n\t\tif (isspace(*prompt)) {\n\t\t\tprop_warn(prop, \"leading whitespace ignored\");\n\t\t\twhile (isspace(*prompt))\n\t\t\t\tprompt++;\n\t\t}\n\t\tif (current_entry->prompt && current_entry != &rootmenu)\n\t\t\tprop_warn(prop, \"prompt redefined\");\n\n\t\t/* Apply all upper menus' visibilities to actual prompts. */\n\t\tif(type == P_PROMPT) {\n\t\t\tstruct menu *menu = current_entry;\n\n\t\t\twhile ((menu = menu->parent) != NULL) {\n\t\t\t\tstruct expr *dup_expr;\n\n\t\t\t\tif (!menu->visibility)\n\t\t\t\t\tcontinue;\n\t\t\t\t/*\n\t\t\t\t * Do not add a reference to the\n\t\t\t\t * menu's visibility expression but\n\t\t\t\t * use a copy of it.  Otherwise the\n\t\t\t\t * expression reduction functions\n\t\t\t\t * will modify expressions that have\n\t\t\t\t * multiple references which can\n\t\t\t\t * cause unwanted side effects.\n\t\t\t\t */\n\t\t\t\tdup_expr = expr_copy(menu->visibility);\n\n\t\t\t\tprop->visible.expr\n\t\t\t\t\t= expr_alloc_and(prop->visible.expr,\n\t\t\t\t\t\t\t dup_expr);\n\t\t\t}\n\t\t}\n\n\t\tcurrent_entry->prompt = prop;\n\t}\n\tprop->text = prompt;\n\n\treturn prop;\n}\n\nstruct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep)\n{\n\treturn menu_add_prop(type, prompt, NULL, dep);\n}\n\nvoid menu_add_visibility(struct expr *expr)\n{\n\tcurrent_entry->visibility = expr_alloc_and(current_entry->visibility,\n\t    expr);\n}\n\nvoid menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep)\n{\n\tmenu_add_prop(type, NULL, expr, dep);\n}\n\nvoid menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)\n{\n\tmenu_add_prop(type, NULL, expr_alloc_symbol(sym), dep);\n}\n\nvoid menu_add_option(int token, char *arg)\n{\n\tswitch (token) {\n\tcase T_OPT_MODULES:\n\t\tif (modules_sym)\n\t\t\tzconf_error(\"symbol '%s' redefines option 'modules'\"\n\t\t\t\t    \" already defined by symbol '%s'\",\n\t\t\t\t    current_entry->sym->name,\n\t\t\t\t    modules_sym->name\n\t\t\t\t    );\n\t\tmodules_sym = current_entry->sym;\n\t\tbreak;\n\tcase T_OPT_DEFCONFIG_LIST:\n\t\tif (!sym_defconfig_list)\n\t\t\tsym_defconfig_list = current_entry->sym;\n\t\telse if (sym_defconfig_list != current_entry->sym)\n\t\t\tzconf_error(\"trying to redefine defconfig symbol\");\n\t\tsym_defconfig_list->flags |= SYMBOL_AUTO;\n\t\tbreak;\n\tcase T_OPT_ENV:\n\t\tprop_add_env(arg);\n\t\tbreak;\n\tcase T_OPT_ALLNOCONFIG_Y:\n\t\tcurrent_entry->sym->flags |= SYMBOL_ALLNOCONFIG_Y;\n\t\tbreak;\n\t}\n}\n\nstatic int menu_validate_number(struct symbol *sym, struct symbol *sym2)\n{\n\treturn sym2->type == S_INT || sym2->type == S_HEX ||\n\t       (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name));\n}\n\nstatic void sym_check_prop(struct symbol *sym)\n{\n\tstruct property *prop;\n\tstruct symbol *sym2;\n\tchar *use;\n\n\tfor (prop = sym->prop; prop; prop = prop->next) {\n\t\tswitch (prop->type) {\n\t\tcase P_DEFAULT:\n\t\t\tif ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) &&\n\t\t\t    prop->expr->type != E_SYMBOL)\n\t\t\t\tprop_warn(prop,\n\t\t\t\t    \"default for config symbol '%s'\"\n\t\t\t\t    \" must be a single symbol\", sym->name);\n\t\t\tif (prop->expr->type != E_SYMBOL)\n\t\t\t\tbreak;\n\t\t\tsym2 = prop_get_symbol(prop);\n\t\t\tif (sym->type == S_HEX || sym->type == S_INT) {\n\t\t\t\tif (!menu_validate_number(sym, sym2))\n\t\t\t\t\tprop_warn(prop,\n\t\t\t\t\t    \"'%s': number is invalid\",\n\t\t\t\t\t    sym->name);\n\t\t\t}\n\t\t\tif (sym_is_choice(sym)) {\n\t\t\t\tstruct property *choice_prop =\n\t\t\t\t\tsym_get_choice_prop(sym2);\n\n\t\t\t\tif (!choice_prop ||\n\t\t\t\t    prop_get_symbol(choice_prop) != sym)\n\t\t\t\t\tprop_warn(prop,\n\t\t\t\t\t\t  \"choice default symbol '%s' is not contained in the choice\",\n\t\t\t\t\t\t  sym2->name);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase P_SELECT:\n\t\tcase P_IMPLY:\n\t\t\tuse = prop->type == P_SELECT ? \"select\" : \"imply\";\n\t\t\tsym2 = prop_get_symbol(prop);\n\t\t\tif (sym->type != S_BOOLEAN && sym->type != S_TRISTATE)\n\t\t\t\tprop_warn(prop,\n\t\t\t\t    \"config symbol '%s' uses %s, but is \"\n\t\t\t\t    \"not bool or tristate\", sym->name, use);\n\t\t\telse if (sym2->type != S_UNKNOWN &&\n\t\t\t\t sym2->type != S_BOOLEAN &&\n\t\t\t\t sym2->type != S_TRISTATE)\n\t\t\t\tprop_warn(prop,\n\t\t\t\t    \"'%s' has wrong type. '%s' only \"\n\t\t\t\t    \"accept arguments of bool and \"\n\t\t\t\t    \"tristate type\", sym2->name, use);\n\t\t\tbreak;\n\t\tcase P_RANGE:\n\t\t\tif (sym->type != S_INT && sym->type != S_HEX)\n\t\t\t\tprop_warn(prop, \"range is only allowed \"\n\t\t\t\t\t\t\"for int or hex symbols\");\n\t\t\tif (!menu_validate_number(sym, prop->expr->left.sym) ||\n\t\t\t    !menu_validate_number(sym, prop->expr->right.sym))\n\t\t\t\tprop_warn(prop, \"range is invalid\");\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t;\n\t\t}\n\t}\n}\n\nvoid menu_finalize(struct menu *parent)\n{\n\tstruct menu *menu, *last_menu;\n\tstruct symbol *sym;\n\tstruct property *prop;\n\tstruct expr *parentdep, *basedep, *dep, *dep2, **ep;\n\n\tsym = parent->sym;\n\tif (parent->list) {\n\t\t/*\n\t\t * This menu node has children. We (recursively) process them\n\t\t * and propagate parent dependencies before moving on.\n\t\t */\n\n\t\tif (sym && sym_is_choice(sym)) {\n\t\t\tif (sym->type == S_UNKNOWN) {\n\t\t\t\t/* find the first choice value to find out choice type */\n\t\t\t\tcurrent_entry = parent;\n\t\t\t\tfor (menu = parent->list; menu; menu = menu->next) {\n\t\t\t\t\tif (menu->sym && menu->sym->type != S_UNKNOWN) {\n\t\t\t\t\t\tmenu_set_type(menu->sym->type);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t/* set the type of the remaining choice values */\n\t\t\tfor (menu = parent->list; menu; menu = menu->next) {\n\t\t\t\tcurrent_entry = menu;\n\t\t\t\tif (menu->sym && menu->sym->type == S_UNKNOWN)\n\t\t\t\t\tmenu_set_type(sym->type);\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Use the choice itself as the parent dependency of\n\t\t\t * the contained items. This turns the mode of the\n\t\t\t * choice into an upper bound on the visibility of the\n\t\t\t * choice value symbols.\n\t\t\t */\n\t\t\tparentdep = expr_alloc_symbol(sym);\n\t\t} else if (parent->prompt)\n\t\t\t/* Menu node for 'menu' */\n\t\t\tparentdep = parent->prompt->visible.expr;\n\t\telse\n\t\t\t/* Menu node for 'if' */\n\t\t\tparentdep = parent->dep;\n\n\t\t/* For each child menu node... */\n\t\tfor (menu = parent->list; menu; menu = menu->next) {\n\t\t\t/*\n\t\t\t * Propagate parent dependencies to the child menu\n\t\t\t * node, also rewriting and simplifying expressions\n\t\t\t */\n\t\t\tbasedep = rewrite_m(menu->dep);\n\t\t\tbasedep = expr_transform(basedep);\n\t\t\tbasedep = expr_alloc_and(expr_copy(parentdep), basedep);\n\t\t\tbasedep = expr_eliminate_dups(basedep);\n\t\t\tmenu->dep = basedep;\n\n\t\t\tif (menu->sym)\n\t\t\t\t/*\n\t\t\t\t * Note: For symbols, all prompts are included\n\t\t\t\t * too in the symbol's own property list\n\t\t\t\t */\n\t\t\t\tprop = menu->sym->prop;\n\t\t\telse\n\t\t\t\t/*\n\t\t\t\t * For non-symbol menu nodes, we just need to\n\t\t\t\t * handle the prompt\n\t\t\t\t */\n\t\t\t\tprop = menu->prompt;\n\n\t\t\t/* For each property... */\n\t\t\tfor (; prop; prop = prop->next) {\n\t\t\t\tif (prop->menu != menu)\n\t\t\t\t\t/*\n\t\t\t\t\t * Two possibilities:\n\t\t\t\t\t *\n\t\t\t\t\t * 1. The property lacks dependencies\n\t\t\t\t\t *    and so isn't location-specific,\n\t\t\t\t\t *    e.g. an 'option'\n\t\t\t\t\t *\n\t\t\t\t\t * 2. The property belongs to a symbol\n\t\t\t\t\t *    defined in multiple locations and\n\t\t\t\t\t *    is from some other location. It\n\t\t\t\t\t *    will be handled there in that\n\t\t\t\t\t *    case.\n\t\t\t\t\t *\n\t\t\t\t\t * Skip the property.\n\t\t\t\t\t */\n\t\t\t\t\tcontinue;\n\n\t\t\t\t/*\n\t\t\t\t * Propagate parent dependencies to the\n\t\t\t\t * property's condition, rewriting and\n\t\t\t\t * simplifying expressions at the same time\n\t\t\t\t */\n\t\t\t\tdep = rewrite_m(prop->visible.expr);\n\t\t\t\tdep = expr_transform(dep);\n\t\t\t\tdep = expr_alloc_and(expr_copy(basedep), dep);\n\t\t\t\tdep = expr_eliminate_dups(dep);\n\t\t\t\tif (menu->sym && menu->sym->type != S_TRISTATE)\n\t\t\t\t\tdep = expr_trans_bool(dep);\n\t\t\t\tprop->visible.expr = dep;\n\n\t\t\t\t/*\n\t\t\t\t * Handle selects and implies, which modify the\n\t\t\t\t * dependencies of the selected/implied symbol\n\t\t\t\t */\n\t\t\t\tif (prop->type == P_SELECT) {\n\t\t\t\t\tstruct symbol *es = prop_get_symbol(prop);\n\t\t\t\t\tes->rev_dep.expr = expr_alloc_or(es->rev_dep.expr,\n\t\t\t\t\t\t\texpr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));\n\t\t\t\t} else if (prop->type == P_IMPLY) {\n\t\t\t\t\tstruct symbol *es = prop_get_symbol(prop);\n\t\t\t\t\tes->implied.expr = expr_alloc_or(es->implied.expr,\n\t\t\t\t\t\t\texpr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (sym && sym_is_choice(sym))\n\t\t\texpr_free(parentdep);\n\n\t\t/*\n\t\t * Recursively process children in the same fashion before\n\t\t * moving on\n\t\t */\n\t\tfor (menu = parent->list; menu; menu = menu->next)\n\t\t\tmenu_finalize(menu);\n\t} else if (sym) {\n\t\t/*\n\t\t * Automatic submenu creation. If sym is a symbol and A, B, C,\n\t\t * ... are consecutive items (symbols, menus, ifs, etc.) that\n\t\t * all depend on sym, then the following menu structure is\n\t\t * created:\n\t\t *\n\t\t *\tsym\n\t\t *\t +-A\n\t\t *\t +-B\n\t\t *\t +-C\n\t\t *\t ...\n\t\t *\n\t\t * This also works recursively, giving the following structure\n\t\t * if A is a symbol and B depends on A:\n\t\t *\n\t\t *\tsym\n\t\t *\t +-A\n\t\t *\t | +-B\n\t\t *\t +-C\n\t\t *\t ...\n\t\t */\n\n\t\tbasedep = parent->prompt ? parent->prompt->visible.expr : NULL;\n\t\tbasedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no);\n\t\tbasedep = expr_eliminate_dups(expr_transform(basedep));\n\n\t\t/* Examine consecutive elements after sym */\n\t\tlast_menu = NULL;\n\t\tfor (menu = parent->next; menu; menu = menu->next) {\n\t\t\tdep = menu->prompt ? menu->prompt->visible.expr : menu->dep;\n\t\t\tif (!expr_contains_symbol(dep, sym))\n\t\t\t\t/* No dependency, quit */\n\t\t\t\tbreak;\n\t\t\tif (expr_depends_symbol(dep, sym))\n\t\t\t\t/* Absolute dependency, put in submenu */\n\t\t\t\tgoto next;\n\n\t\t\t/*\n\t\t\t * Also consider it a dependency on sym if our\n\t\t\t * dependencies contain sym and are a \"superset\" of\n\t\t\t * sym's dependencies, e.g. '(sym || Q) && R' when sym\n\t\t\t * depends on R.\n\t\t\t *\n\t\t\t * Note that 'R' might be from an enclosing menu or if,\n\t\t\t * making this a more common case than it might seem.\n\t\t\t */\n\t\t\tdep = expr_trans_compare(dep, E_UNEQUAL, &symbol_no);\n\t\t\tdep = expr_eliminate_dups(expr_transform(dep));\n\t\t\tdep2 = expr_copy(basedep);\n\t\t\texpr_eliminate_eq(&dep, &dep2);\n\t\t\texpr_free(dep);\n\t\t\tif (!expr_is_yes(dep2)) {\n\t\t\t\t/* Not superset, quit */\n\t\t\t\texpr_free(dep2);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/* Superset, put in submenu */\n\t\t\texpr_free(dep2);\n\t\tnext:\n\t\t\tmenu_finalize(menu);\n\t\t\tmenu->parent = parent;\n\t\t\tlast_menu = menu;\n\t\t}\n\t\texpr_free(basedep);\n\t\tif (last_menu) {\n\t\t\tparent->list = parent->next;\n\t\t\tparent->next = last_menu->next;\n\t\t\tlast_menu->next = NULL;\n\t\t}\n\n\t\tsym->dir_dep.expr = expr_alloc_or(sym->dir_dep.expr, parent->dep);\n\t}\n\tfor (menu = parent->list; menu; menu = menu->next) {\n\t\tif (sym && sym_is_choice(sym) &&\n\t\t    menu->sym && !sym_is_choice_value(menu->sym)) {\n\t\t\tcurrent_entry = menu;\n\t\t\tmenu->sym->flags |= SYMBOL_CHOICEVAL;\n\t\t\tif (!menu->prompt)\n\t\t\t\tmenu_warn(menu, \"choice value must have a prompt\");\n\t\t\tfor (prop = menu->sym->prop; prop; prop = prop->next) {\n\t\t\t\tif (prop->type == P_DEFAULT)\n\t\t\t\t\tprop_warn(prop, \"defaults for choice \"\n\t\t\t\t\t\t  \"values not supported\");\n\t\t\t\tif (prop->menu == menu)\n\t\t\t\t\tcontinue;\n\t\t\t\tif (prop->type == P_PROMPT &&\n\t\t\t\t    prop->menu->parent->sym != sym)\n\t\t\t\t\tprop_warn(prop, \"choice value used outside its choice group\");\n\t\t\t}\n\t\t\t/* Non-tristate choice values of tristate choices must\n\t\t\t * depend on the choice being set to Y. The choice\n\t\t\t * values' dependencies were propagated to their\n\t\t\t * properties above, so the change here must be re-\n\t\t\t * propagated.\n\t\t\t */\n\t\t\tif (sym->type == S_TRISTATE && menu->sym->type != S_TRISTATE) {\n\t\t\t\tbasedep = expr_alloc_comp(E_EQUAL, sym, &symbol_yes);\n\t\t\t\tmenu->dep = expr_alloc_and(basedep, menu->dep);\n\t\t\t\tfor (prop = menu->sym->prop; prop; prop = prop->next) {\n\t\t\t\t\tif (prop->menu != menu)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tprop->visible.expr = expr_alloc_and(expr_copy(basedep),\n\t\t\t\t\t\t\t\t\t    prop->visible.expr);\n\t\t\t\t}\n\t\t\t}\n\t\t\tmenu_add_symbol(P_CHOICE, sym, NULL);\n\t\t\tprop = sym_get_choice_prop(sym);\n\t\t\tfor (ep = &prop->expr; *ep; ep = &(*ep)->left.expr)\n\t\t\t\t;\n\t\t\t*ep = expr_alloc_one(E_LIST, NULL);\n\t\t\t(*ep)->right.sym = menu->sym;\n\t\t}\n\n\t\t/*\n\t\t * This code serves two purposes:\n\t\t *\n\t\t * (1) Flattening 'if' blocks, which do not specify a submenu\n\t\t *     and only add dependencies.\n\t\t *\n\t\t *     (Automatic submenu creation might still create a submenu\n\t\t *     from an 'if' before this code runs.)\n\t\t *\n\t\t * (2) \"Undoing\" any automatic submenus created earlier below\n\t\t *     promptless symbols.\n\t\t *\n\t\t * Before:\n\t\t *\n\t\t *\tA\n\t\t *\tif ... (or promptless symbol)\n\t\t *\t +-B\n\t\t *\t +-C\n\t\t *\tD\n\t\t *\n\t\t * After:\n\t\t *\n\t\t *\tA\n\t\t *\tif ... (or promptless symbol)\n\t\t *\tB\n\t\t *\tC\n\t\t *\tD\n\t\t */\n\t\tif (menu->list && (!menu->prompt || !menu->prompt->text)) {\n\t\t\tfor (last_menu = menu->list; ; last_menu = last_menu->next) {\n\t\t\t\tlast_menu->parent = parent;\n\t\t\t\tif (!last_menu->next)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tlast_menu->next = menu->next;\n\t\t\tmenu->next = menu->list;\n\t\t\tmenu->list = NULL;\n\t\t}\n\t}\n\n\tif (sym && !(sym->flags & SYMBOL_WARNED)) {\n\t\tif (sym->type == S_UNKNOWN)\n\t\t\tmenu_warn(parent, \"config symbol defined without type\");\n\n\t\tif (sym_is_choice(sym) && !parent->prompt)\n\t\t\tmenu_warn(parent, \"choice must have a prompt\");\n\n\t\t/* Check properties connected to this symbol */\n\t\tsym_check_prop(sym);\n\t\tsym->flags |= SYMBOL_WARNED;\n\t}\n\n\t/*\n\t * For non-optional choices, add a reverse dependency (corresponding to\n\t * a select) of '<visibility> && m'. This prevents the user from\n\t * setting the choice mode to 'n' when the choice is visible.\n\t *\n\t * This would also work for non-choice symbols, but only non-optional\n\t * choices clear SYMBOL_OPTIONAL as of writing. Choices are implemented\n\t * as a type of symbol.\n\t */\n\tif (sym && !sym_is_optional(sym) && parent->prompt) {\n\t\tsym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr,\n\t\t\t\texpr_alloc_and(parent->prompt->visible.expr,\n\t\t\t\t\texpr_alloc_symbol(&symbol_mod)));\n\t}\n}\n\nbool menu_has_prompt(struct menu *menu)\n{\n\tif (!menu->prompt)\n\t\treturn false;\n\treturn true;\n}\n\n/*\n * Determine if a menu is empty.\n * A menu is considered empty if it contains no or only\n * invisible entries.\n */\nbool menu_is_empty(struct menu *menu)\n{\n\tstruct menu *child;\n\n\tfor (child = menu->list; child; child = child->next) {\n\t\tif (menu_is_visible(child))\n\t\t\treturn(false);\n\t}\n\treturn(true);\n}\n\nbool menu_is_visible(struct menu *menu)\n{\n\tstruct menu *child;\n\tstruct symbol *sym;\n\ttristate visible;\n\n\tif (!menu->prompt)\n\t\treturn false;\n\n\tif (menu->visibility) {\n\t\tif (expr_calc_value(menu->visibility) == no)\n\t\t\treturn false;\n\t}\n\n\tsym = menu->sym;\n\tif (sym) {\n\t\tsym_calc_value(sym);\n\t\tvisible = menu->prompt->visible.tri;\n\t} else\n\t\tvisible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr);\n\n\tif (visible != no)\n\t\treturn true;\n\n\tif (!sym || sym_get_tristate_value(menu->sym) == no)\n\t\treturn false;\n\n\tfor (child = menu->list; child; child = child->next) {\n\t\tif (menu_is_visible(child)) {\n\t\t\tif (sym)\n\t\t\t\tsym->flags |= SYMBOL_DEF_USER;\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nconst char *menu_get_prompt(struct menu *menu)\n{\n\tif (menu->prompt)\n\t\treturn menu->prompt->text;\n\telse if (menu->sym)\n\t\treturn menu->sym->name;\n\treturn NULL;\n}\n\nstruct menu *menu_get_root_menu(struct menu *menu)\n{\n\treturn &rootmenu;\n}\n\nstruct menu *menu_get_parent_menu(struct menu *menu)\n{\n\tenum prop_type type;\n\n\tfor (; menu != &rootmenu; menu = menu->parent) {\n\t\ttype = menu->prompt ? menu->prompt->type : 0;\n\t\tif (type == P_MENU)\n\t\t\tbreak;\n\t}\n\treturn menu;\n}\n\nbool menu_has_help(struct menu *menu)\n{\n\treturn menu->help != NULL;\n}\n\nconst char *menu_get_help(struct menu *menu)\n{\n\tif (menu->help)\n\t\treturn menu->help;\n\telse\n\t\treturn \"\";\n}\n\nstatic void get_prompt_str(struct gstr *r, struct property *prop,\n\t\t\t   struct list_head *head)\n{\n\tint i, j;\n\tstruct menu *submenu[8], *menu, *location = NULL;\n\tstruct jump_key *jump = NULL;\n\n\tstr_printf(r, _(\"Prompt: %s\\n\"), _(prop->text));\n\tmenu = prop->menu->parent;\n\tfor (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) {\n\t\tbool accessible = menu_is_visible(menu);\n\n\t\tsubmenu[i++] = menu;\n\t\tif (location == NULL && accessible)\n\t\t\tlocation = menu;\n\t}\n\tif (head && location) {\n\t\tjump = xmalloc(sizeof(struct jump_key));\n\n\t\tif (menu_is_visible(prop->menu)) {\n\t\t\t/*\n\t\t\t * There is not enough room to put the hint at the\n\t\t\t * beginning of the \"Prompt\" line. Put the hint on the\n\t\t\t * last \"Location\" line even when it would belong on\n\t\t\t * the former.\n\t\t\t */\n\t\t\tjump->target = prop->menu;\n\t\t} else\n\t\t\tjump->target = location;\n\n\t\tif (list_empty(head))\n\t\t\tjump->index = 0;\n\t\telse\n\t\t\tjump->index = list_entry(head->prev, struct jump_key,\n\t\t\t\t\t\t entries)->index + 1;\n\n\t\tlist_add_tail(&jump->entries, head);\n\t}\n\n\tif (i > 0) {\n\t\tstr_printf(r, _(\"  Location:\\n\"));\n\t\tfor (j = 4; --i >= 0; j += 2) {\n\t\t\tmenu = submenu[i];\n\t\t\tif (jump && menu == location)\n\t\t\t\tjump->offset = strlen(r->s);\n\t\t\tstr_printf(r, \"%*c-> %s\", j, ' ',\n\t\t\t\t   _(menu_get_prompt(menu)));\n\t\t\tif (menu->sym) {\n\t\t\t\tstr_printf(r, \" (%s [=%s])\", menu->sym->name ?\n\t\t\t\t\tmenu->sym->name : _(\"<choice>\"),\n\t\t\t\t\tsym_get_string_value(menu->sym));\n\t\t\t}\n\t\t\tstr_append(r, \"\\n\");\n\t\t}\n\t}\n}\n\n/*\n * get property of type P_SYMBOL\n */\nstatic struct property *get_symbol_prop(struct symbol *sym)\n{\n\tstruct property *prop = NULL;\n\n\tfor_all_properties(sym, prop, P_SYMBOL)\n\t\tbreak;\n\treturn prop;\n}\n\nstatic void get_symbol_props_str(struct gstr *r, struct symbol *sym,\n\t\t\t\t enum prop_type tok, const char *prefix)\n{\n\tbool hit = false;\n\tstruct property *prop;\n\n\tfor_all_properties(sym, prop, tok) {\n\t\tif (!hit) {\n\t\t\tstr_append(r, prefix);\n\t\t\thit = true;\n\t\t} else\n\t\t\tstr_printf(r, \" && \");\n\t\texpr_gstr_print(prop->expr, r);\n\t}\n\tif (hit)\n\t\tstr_append(r, \"\\n\");\n}\n\n/*\n * head is optional and may be NULL\n */\nstatic void get_symbol_str(struct gstr *r, struct symbol *sym,\n\t\t    struct list_head *head)\n{\n\tstruct property *prop;\n\n\tif (sym && sym->name) {\n\t\tstr_printf(r, \"Symbol: %s [=%s]\\n\", sym->name,\n\t\t\t   sym_get_string_value(sym));\n\t\tstr_printf(r, \"Type  : %s\\n\", sym_type_name(sym->type));\n\t\tif (sym->type == S_INT || sym->type == S_HEX) {\n\t\t\tprop = sym_get_range_prop(sym);\n\t\t\tif (prop) {\n\t\t\t\tstr_printf(r, \"Range : \");\n\t\t\t\texpr_gstr_print(prop->expr, r);\n\t\t\t\tstr_append(r, \"\\n\");\n\t\t\t}\n\t\t}\n\t}\n\tfor_all_prompts(sym, prop)\n\t\tget_prompt_str(r, prop, head);\n\n\tprop = get_symbol_prop(sym);\n\tif (prop) {\n\t\tstr_printf(r, _(\"  Defined at %s:%d\\n\"), prop->menu->file->name,\n\t\t\tprop->menu->lineno);\n\t\tif (!expr_is_yes(prop->visible.expr)) {\n\t\t\tstr_append(r, _(\"  Depends on: \"));\n\t\t\texpr_gstr_print(prop->visible.expr, r);\n\t\t\tstr_append(r, \"\\n\");\n\t\t}\n\t}\n\n\tget_symbol_props_str(r, sym, P_SELECT, _(\"  Selects: \"));\n\tif (sym->rev_dep.expr) {\n\t\texpr_gstr_print_revdep(sym->rev_dep.expr, r, yes, \"  Selected by [y]:\\n\");\n\t\texpr_gstr_print_revdep(sym->rev_dep.expr, r, mod, \"  Selected by [m]:\\n\");\n\t\texpr_gstr_print_revdep(sym->rev_dep.expr, r, no, \"  Selected by [n]:\\n\");\n\t}\n\n\tget_symbol_props_str(r, sym, P_IMPLY, _(\"  Implies: \"));\n\tif (sym->implied.expr) {\n\t\texpr_gstr_print_revdep(sym->implied.expr, r, yes, \"  Implied by [y]:\\n\");\n\t\texpr_gstr_print_revdep(sym->implied.expr, r, mod, \"  Implied by [m]:\\n\");\n\t\texpr_gstr_print_revdep(sym->implied.expr, r, no, \"  Implied by [n]:\\n\");\n\t}\n\n\tstr_append(r, \"\\n\\n\");\n}\n\nstruct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head)\n{\n\tstruct symbol *sym;\n\tstruct gstr res = str_new();\n\tint i;\n\n\tfor (i = 0; sym_arr && (sym = sym_arr[i]); i++)\n\t\tget_symbol_str(&res, sym, head);\n\tif (!i)\n\t\tstr_append(&res, _(\"No matches found.\\n\"));\n\treturn res;\n}\n\n\nvoid menu_get_ext_help(struct menu *menu, struct gstr *help)\n{\n\tstruct symbol *sym = menu->sym;\n\tconst char *help_text = nohelp_text;\n\n\tif (menu_has_help(menu)) {\n\t\tif (sym->name)\n\t\t\tstr_printf(help, \"%s%s:\\n\\n\", CONFIG_, sym->name);\n\t\thelp_text = menu_get_help(menu);\n\t}\n\tstr_printf(help, \"%s\\n\", _(help_text));\n\tif (sym)\n\t\tget_symbol_str(help, sym, NULL);\n}\n"
  },
  {
    "path": "support/kconfig/merge_config.sh",
    "content": "#!/bin/sh\n#  merge_config.sh - Takes a list of config fragment values, and merges\n#  them one by one. Provides warnings on overridden values, and specified\n#  values that did not make it to the resulting .config file (due to missed\n#  dependencies or config symbol removal).\n#\n#  Portions reused from kconf_check and generate_cfg:\n#  http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check\n#  http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg\n#\n#  Copyright (c) 2009-2010 Wind River Systems, Inc.\n#  Copyright 2011 Linaro\n#\n#  This program is free software; you can redistribute it and/or modify\n#  it under the terms of the GNU General Public License version 2 as\n#  published by the Free Software Foundation.\n#\n#  This program is distributed in the hope that it will be useful,\n#  but WITHOUT ANY WARRANTY; without even the implied warranty of\n#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n#  See the GNU General Public License for more details.\n\nclean_up() {\n\trm -f $TMP_FILE\n\texit\n}\ntrap clean_up HUP INT TERM\n\nusage() {\n\techo \"Usage: $0 [OPTIONS] [CONFIG [...]]\"\n\techo \"  -h    display this help text\"\n\techo \"  -m    only merge the fragments, do not execute the make command\"\n\techo \"  -n    use allnoconfig instead of alldefconfig\"\n\techo \"  -r    list redundant entries when merging fragments\"\n\techo \"  -O    dir to put generated output files.  Consider setting \\$KCONFIG_CONFIG instead.\"\n\techo \"  -e    colon-separated list of br2-external trees to use (optional)\"\n\techo\n\techo \"Used prefix: '$CONFIG_PREFIX'. You can redefine it with \\$CONFIG_\n\tenvironment variable.\"\n}\n\nRUNMAKE=true\nALLTARGET=alldefconfig\nWARNREDUN=false\nOUTPUT=.\nCONFIG_PREFIX=${CONFIG_-CONFIG_}\n\nwhile true; do\n\tcase $1 in\n\t\"-n\")\n\t\tALLTARGET=allnoconfig\n\t\tshift\n\t\tcontinue\n\t\t;;\n\t\"-m\")\n\t\tRUNMAKE=false\n\t\tshift\n\t\tcontinue\n\t\t;;\n\t\"-h\")\n\t\tusage\n\t\texit\n\t\t;;\n\t\"-r\")\n\t\tWARNREDUN=true\n\t\tshift\n\t\tcontinue\n\t\t;;\n\t\"-O\")\n\t\tif [ -d $2 ];then\n\t\t\tOUTPUT=$(echo $2 | sed 's/\\/*$//')\n\t\telse\n\t\t\techo \"output directory $2 does not exist\" 1>&2\n\t\t\texit 1\n\t\tfi\n\t\tshift 2\n\t\tcontinue\n\t\t;;\n\t\"-e\")\n\t\tEXTERNAL_ARG=\"BR2_EXTERNAL=$2\"\n\t\tshift 2\n\t\tcontinue\n\t\t;;\n\t*)\n\t\tbreak\n\t\t;;\n\tesac\ndone\n\nif [ \"$#\" -lt 1 ] ; then\n\tusage\n\texit\nfi\n\nif [ -z \"$KCONFIG_CONFIG\" ]; then\n\tif [ \"$OUTPUT\" != . ]; then\n\t\tKCONFIG_CONFIG=$(readlink -m -- \"$OUTPUT/.config\")\n\telse\n\t\tKCONFIG_CONFIG=.config\n\tfi\nfi\n\nINITFILE=$1\nshift;\n\nif [ ! -r \"$INITFILE\" ]; then\n\techo \"The base file '$INITFILE' does not exist.  Exit.\" >&2\n\texit 1\nfi\n\nMERGE_LIST=$*\nSED_CONFIG_EXP1=\"s/^\\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\\)=.*/\\1/p\"\nSED_CONFIG_EXP2=\"s/^# \\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\\) is not set$/\\1/p\"\n\nTMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX)\n\necho \"Using $INITFILE as base\"\ncat $INITFILE > $TMP_FILE\n\n# Merge files, printing warnings on overridden values\nfor MERGE_FILE in $MERGE_LIST ; do\n\techo \"Merging $MERGE_FILE\"\n\tif [ ! -r \"$MERGE_FILE\" ]; then\n\t\techo \"The merge file '$MERGE_FILE' does not exist.  Exit.\" >&2\n\t\texit 1\n\tfi\n\tCFG_LIST=$(sed -n -e \"$SED_CONFIG_EXP1\" -e \"$SED_CONFIG_EXP2\" $MERGE_FILE)\n\n\tfor CFG in $CFG_LIST ; do\n\t\tgrep -q -w $CFG $TMP_FILE || continue\n\t\tPREV_VAL=$(grep -w $CFG $TMP_FILE)\n\t\tNEW_VAL=$(grep -w $CFG $MERGE_FILE)\n\t\tif [ \"x$PREV_VAL\" != \"x$NEW_VAL\" ] ; then\n\t\t\techo Value of $CFG is redefined by fragment $MERGE_FILE:\n\t\t\techo Previous  value: $PREV_VAL\n\t\t\techo New value:       $NEW_VAL\n\t\t\techo\n\t\telif [ \"$WARNREDUN\" = \"true\" ]; then\n\t\t\techo Value of $CFG is redundant by fragment $MERGE_FILE:\n\t\tfi\n\t\tsed -i \"/$CFG[ =]/d\" $TMP_FILE\n\tdone\n\tcat $MERGE_FILE >> $TMP_FILE\ndone\n\nif [ \"$RUNMAKE\" = \"false\" ]; then\n\tcp -T -- \"$TMP_FILE\" \"$KCONFIG_CONFIG\"\n\techo \"#\"\n\techo \"# merged configuration written to $KCONFIG_CONFIG (needs make)\"\n\techo \"#\"\n\tclean_up\n\texit\nfi\n\n# If we have an output dir, setup the O= argument, otherwise leave\n# it blank, since O=. will create an unnecessary ./source softlink\nOUTPUT_ARG=\"\"\nif [ \"$OUTPUT\" != \".\" ] ; then\n\tOUTPUT_ARG=\"O=$OUTPUT\"\nfi\n\n\n# Use the merged file as the starting point for:\n# alldefconfig: Fills in any missing symbols with Kconfig default\n# allnoconfig: Fills in any missing symbols with # CONFIG_* is not set\nmake KCONFIG_ALLCONFIG=$TMP_FILE $EXTERNAL_ARG $OUTPUT_ARG $ALLTARGET\n\n\n# Check all specified config values took (might have missed-dependency issues)\nfor CFG in $(sed -n -e \"$SED_CONFIG_EXP1\" -e \"$SED_CONFIG_EXP2\" $TMP_FILE); do\n\n\tREQUESTED_VAL=$(grep -w -e \"$CFG\" $TMP_FILE)\n\tACTUAL_VAL=$(grep -w -e \"$CFG\" \"$KCONFIG_CONFIG\")\n\tif [ \"x$REQUESTED_VAL\" != \"x$ACTUAL_VAL\" ] ; then\n\t\techo \"Value requested for $CFG not in final .config\"\n\t\techo \"Requested value:  $REQUESTED_VAL\"\n\t\techo \"Actual value:     $ACTUAL_VAL\"\n\t\techo \"\"\n\tfi\ndone\n\nclean_up\n"
  },
  {
    "path": "support/kconfig/nconf.c",
    "content": "/*\n * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com?\n * Released under the terms of the GNU GPL v2.0.\n *\n * Derived from menuconfig.\n *\n */\n#ifndef _GNU_SOURCE\n#define _GNU_SOURCE\n#endif\n#include <string.h>\n#include <stdlib.h>\n\n#include \"lkc.h\"\n#include \"nconf.h\"\n#include <ctype.h>\n\nstatic const char nconf_global_help[] = N_(\n\"Help windows\\n\"\n\"------------\\n\"\n\"o  Global help:  Unless in a data entry window, pressing <F1> will give \\n\"\n\"   you the global help window, which you are just reading.\\n\"\n\"\\n\"\n\"o  A short version of the global help is available by pressing <F3>.\\n\"\n\"\\n\"\n\"o  Local help:  To get help related to the current menu entry, use any\\n\"\n\"   of <?> <h>, or if in a data entry window then press <F1>.\\n\"\n\"\\n\"\n\"\\n\"\n\"Menu entries\\n\"\n\"------------\\n\"\n\"This interface lets you select features and parameters for the kernel\\n\"\n\"build.  Kernel features can either be built-in, modularized, or removed.\\n\"\n\"Parameters must be entered as text or decimal or hexadecimal numbers.\\n\"\n\"\\n\"\n\"Menu entries beginning with following braces represent features that\\n\"\n\"  [ ]  can be built in or removed\\n\"\n\"  < >  can be built in, modularized or removed\\n\"\n\"  { }  can be built in or modularized, are selected by another feature\\n\"\n\"  - -  are selected by another feature\\n\"\n\"  XXX  cannot be selected.  Symbol Info <F2> tells you why.\\n\"\n\"*, M or whitespace inside braces means to build in, build as a module\\n\"\n\"or to exclude the feature respectively.\\n\"\n\"\\n\"\n\"To change any of these features, highlight it with the movement keys\\n\"\n\"listed below and press <y> to build it in, <m> to make it a module or\\n\"\n\"<n> to remove it.  You may press the <Space> key to cycle through the\\n\"\n\"available options.\\n\"\n\"\\n\"\n\"A trailing \\\"--->\\\" designates a submenu, a trailing \\\"----\\\" an\\n\"\n\"empty submenu.\\n\"\n\"\\n\"\n\"Menu navigation keys\\n\"\n\"----------------------------------------------------------------------\\n\"\n\"Linewise up                 <Up>\\n\"\n\"Linewise down               <Down>\\n\"\n\"Pagewise up                 <Page Up>\\n\"\n\"Pagewise down               <Page Down>\\n\"\n\"First entry                 <Home>\\n\"\n\"Last entry                  <End>\\n\"\n\"Enter a submenu             <Right>  <Enter>\\n\"\n\"Go back to parent menu      <Left>   <Esc>  <F5>\\n\"\n\"Close a help window         <Enter>  <Esc>  <F5>\\n\"\n\"Close entry window, apply   <Enter>\\n\"\n\"Close entry window, forget  <Esc>  <F5>\\n\"\n\"Start incremental, case-insensitive search for STRING in menu entries,\\n\"\n\"    no regex support, STRING is displayed in upper left corner\\n\"\n\"                            </>STRING\\n\"\n\"    Remove last character   <Backspace>\\n\"\n\"    Jump to next hit        <Down>\\n\"\n\"    Jump to previous hit    <Up>\\n\"\n\"Exit menu search mode       </>  <Esc>\\n\"\n\"Search for configuration variables with or without leading CONFIG_\\n\"\n\"                            <F8>RegExpr<Enter>\\n\"\n\"Verbose search help         <F8><F1>\\n\"\n\"----------------------------------------------------------------------\\n\"\n\"\\n\"\n\"Unless in a data entry window, key <1> may be used instead of <F1>,\\n\"\n\"<2> instead of <F2>, etc.\\n\"\n\"\\n\"\n\"\\n\"\n\"Radiolist (Choice list)\\n\"\n\"-----------------------\\n\"\n\"Use the movement keys listed above to select the option you wish to set\\n\"\n\"and press <Space>.\\n\"\n\"\\n\"\n\"\\n\"\n\"Data entry\\n\"\n\"----------\\n\"\n\"Enter the requested information and press <Enter>.  Hexadecimal values\\n\"\n\"may be entered without the \\\"0x\\\" prefix.\\n\"\n\"\\n\"\n\"\\n\"\n\"Text Box (Help Window)\\n\"\n\"----------------------\\n\"\n\"Use movement keys as listed in table above.\\n\"\n\"\\n\"\n\"Press any of <Enter> <Esc> <q> <F5> <F9> to exit.\\n\"\n\"\\n\"\n\"\\n\"\n\"Alternate configuration files\\n\"\n\"-----------------------------\\n\"\n\"nconfig supports switching between different configurations.\\n\"\n\"Press <F6> to save your current configuration.  Press <F7> and enter\\n\"\n\"a file name to load a previously saved configuration.\\n\"\n\"\\n\"\n\"\\n\"\n\"Terminal configuration\\n\"\n\"----------------------\\n\"\n\"If you use nconfig in a xterm window, make sure your TERM environment\\n\"\n\"variable specifies a terminal configuration which supports at least\\n\"\n\"16 colors.  Otherwise nconfig will look rather bad.\\n\"\n\"\\n\"\n\"If the \\\"stty size\\\" command reports the current terminalsize correctly,\\n\"\n\"nconfig will adapt to sizes larger than the traditional 80x25 \\\"standard\\\"\\n\"\n\"and display longer menus properly.\\n\"\n\"\\n\"\n\"\\n\"\n\"Single menu mode\\n\"\n\"----------------\\n\"\n\"If you prefer to have all of the menu entries listed in a single menu,\\n\"\n\"rather than the default multimenu hierarchy, run nconfig with\\n\"\n\"NCONFIG_MODE environment variable set to single_menu.  Example:\\n\"\n\"\\n\"\n\"make NCONFIG_MODE=single_menu nconfig\\n\"\n\"\\n\"\n\"<Enter> will then unfold the appropriate category, or fold it if it\\n\"\n\"is already unfolded.  Folded menu entries will be designated by a\\n\"\n\"leading \\\"++>\\\" and unfolded entries by a leading \\\"-->\\\".\\n\"\n\"\\n\"\n\"Note that this mode can eventually be a little more CPU expensive than\\n\"\n\"the default mode, especially with a larger number of unfolded submenus.\\n\"\n\"\\n\"),\nmenu_no_f_instructions[] = N_(\n\"Legend:  [*] built-in  [ ] excluded  <M> module  < > module capable.\\n\"\n\"Submenus are designated by a trailing \\\"--->\\\", empty ones by \\\"----\\\".\\n\"\n\"\\n\"\n\"Use the following keys to navigate the menus:\\n\"\n\"Move up or down with <Up> and <Down>.\\n\"\n\"Enter a submenu with <Enter> or <Right>.\\n\"\n\"Exit a submenu to its parent menu with <Esc> or <Left>.\\n\"\n\"Pressing <y> includes, <n> excludes, <m> modularizes features.\\n\"\n\"Pressing <Space> cycles through the available options.\\n\"\n\"To search for menu entries press </>.\\n\"\n\"<Esc> always leaves the current window.\\n\"\n\"\\n\"\n\"You do not have function keys support.\\n\"\n\"Press <1> instead of <F1>, <2> instead of <F2>, etc.\\n\"\n\"For verbose global help use key <1>.\\n\"\n\"For help related to the current menu entry press <?> or <h>.\\n\"),\nmenu_instructions[] = N_(\n\"Legend:  [*] built-in  [ ] excluded  <M> module  < > module capable.\\n\"\n\"Submenus are designated by a trailing \\\"--->\\\", empty ones by \\\"----\\\".\\n\"\n\"\\n\"\n\"Use the following keys to navigate the menus:\\n\"\n\"Move up or down with <Up> or <Down>.\\n\"\n\"Enter a submenu with <Enter> or <Right>.\\n\"\n\"Exit a submenu to its parent menu with <Esc> or <Left>.\\n\"\n\"Pressing <y> includes, <n> excludes, <m> modularizes features.\\n\"\n\"Pressing <Space> cycles through the available options.\\n\"\n\"To search for menu entries press </>.\\n\"\n\"<Esc> always leaves the current window.\\n\"\n\"\\n\"\n\"Pressing <1> may be used instead of <F1>, <2> instead of <F2>, etc.\\n\"\n\"For verbose global help press <F1>.\\n\"\n\"For help related to the current menu entry press <?> or <h>.\\n\"),\nradiolist_instructions[] = N_(\n\"Press <Up>, <Down>, <Home> or <End> to navigate a radiolist, select\\n\"\n\"with <Space>.\\n\"\n\"For help related to the current entry press <?> or <h>.\\n\"\n\"For global help press <F1>.\\n\"),\ninputbox_instructions_int[] = N_(\n\"Please enter a decimal value.\\n\"\n\"Fractions will not be accepted.\\n\"\n\"Press <Enter> to apply, <Esc> to cancel.\"),\ninputbox_instructions_hex[] = N_(\n\"Please enter a hexadecimal value.\\n\"\n\"Press <Enter> to apply, <Esc> to cancel.\"),\ninputbox_instructions_string[] = N_(\n\"Please enter a string value.\\n\"\n\"Press <Enter> to apply, <Esc> to cancel.\"),\nsetmod_text[] = N_(\n\"This feature depends on another feature which has been configured as a\\n\"\n\"module.  As a result, the current feature will be built as a module too.\"),\nload_config_text[] = N_(\n\"Enter the name of the configuration file you wish to load.\\n\"\n\"Accept the name shown to restore the configuration you last\\n\"\n\"retrieved.  Leave empty to abort.\"),\nload_config_help[] = N_(\n\"For various reasons, one may wish to keep several different\\n\"\n\"configurations available on a single machine.\\n\"\n\"\\n\"\n\"If you have saved a previous configuration in a file other than the\\n\"\n\"default one, entering its name here will allow you to load and modify\\n\"\n\"that configuration.\\n\"\n\"\\n\"\n\"Leave empty to abort.\\n\"),\nsave_config_text[] = N_(\n\"Enter a filename to which this configuration should be saved\\n\"\n\"as an alternate.  Leave empty to abort.\"),\nsave_config_help[] = N_(\n\"For various reasons, one may wish to keep several different\\n\"\n\"configurations available on a single machine.\\n\"\n\"\\n\"\n\"Entering a file name here will allow you to later retrieve, modify\\n\"\n\"and use the current configuration as an alternate to whatever\\n\"\n\"configuration options you have selected at that time.\\n\"\n\"\\n\"\n\"Leave empty to abort.\\n\"),\nsearch_help[] = N_(\n\"Search for symbols (configuration variable names CONFIG_*) and display\\n\"\n\"their relations.  Regular expressions are supported.\\n\"\n\"Example:  Search for \\\"^FOO\\\".\\n\"\n\"Result:\\n\"\n\"-----------------------------------------------------------------\\n\"\n\"Symbol: FOO [ = m]\\n\"\n\"Prompt: Foo bus is used to drive the bar HW\\n\"\n\"Defined at drivers/pci/Kconfig:47\\n\"\n\"Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\\n\"\n\"Location:\\n\"\n\"  -> Bus options (PCI, PCMCIA, EISA, ISA)\\n\"\n\"    -> PCI support (PCI [ = y])\\n\"\n\"      -> PCI access mode (<choice> [ = y])\\n\"\n\"Selects: LIBCRC32\\n\"\n\"Selected by: BAR\\n\"\n\"-----------------------------------------------------------------\\n\"\n\"o  The line 'Prompt:' shows the text displayed for this symbol in\\n\"\n\"   the menu hierarchy.\\n\"\n\"o  The 'Defined at' line tells at what file / line number the symbol is\\n\"\n\"   defined.\\n\"\n\"o  The 'Depends on:' line lists symbols that need to be defined for\\n\"\n\"   this symbol to be visible and selectable in the menu.\\n\"\n\"o  The 'Location:' lines tell, where in the menu structure this symbol\\n\"\n\"   is located.  A location followed by a [ = y] indicates that this is\\n\"\n\"   a selectable menu item, and the current value is displayed inside\\n\"\n\"   brackets.\\n\"\n\"o  The 'Selects:' line tells, what symbol will be automatically selected\\n\"\n\"   if this symbol is selected (y or m).\\n\"\n\"o  The 'Selected by' line tells what symbol has selected this symbol.\\n\"\n\"\\n\"\n\"Only relevant lines are shown.\\n\"\n\"\\n\\n\"\n\"Search examples:\\n\"\n\"USB  => find all symbols containing USB\\n\"\n\"^USB => find all symbols starting with USB\\n\"\n\"USB$ => find all symbols ending with USB\\n\"\n\"\\n\");\n\nstruct mitem {\n\tchar str[256];\n\tchar tag;\n\tvoid *usrptr;\n\tint is_visible;\n};\n\n#define MAX_MENU_ITEMS 4096\nstatic int show_all_items;\nstatic int indent;\nstatic struct menu *current_menu;\nstatic int child_count;\nstatic int single_menu_mode;\n/* the window in which all information appears */\nstatic WINDOW *main_window;\n/* the largest size of the menu window */\nstatic int mwin_max_lines;\nstatic int mwin_max_cols;\n/* the window in which we show option buttons */\nstatic MENU *curses_menu;\nstatic ITEM *curses_menu_items[MAX_MENU_ITEMS];\nstatic struct mitem k_menu_items[MAX_MENU_ITEMS];\nstatic int items_num;\nstatic int global_exit;\n/* the currently selected button */\nstatic const char *current_instructions = menu_instructions;\n\nstatic char *dialog_input_result;\nstatic int dialog_input_result_len;\n\nstatic void conf(struct menu *menu);\nstatic void conf_choice(struct menu *menu);\nstatic void conf_string(struct menu *menu);\nstatic void conf_load(void);\nstatic void conf_save(void);\nstatic void show_help(struct menu *menu);\nstatic int do_exit(void);\nstatic void setup_windows(void);\nstatic void search_conf(void);\n\ntypedef void (*function_key_handler_t)(int *key, struct menu *menu);\nstatic void handle_f1(int *key, struct menu *current_item);\nstatic void handle_f2(int *key, struct menu *current_item);\nstatic void handle_f3(int *key, struct menu *current_item);\nstatic void handle_f4(int *key, struct menu *current_item);\nstatic void handle_f5(int *key, struct menu *current_item);\nstatic void handle_f6(int *key, struct menu *current_item);\nstatic void handle_f7(int *key, struct menu *current_item);\nstatic void handle_f8(int *key, struct menu *current_item);\nstatic void handle_f9(int *key, struct menu *current_item);\n\nstruct function_keys {\n\tconst char *key_str;\n\tconst char *func;\n\tfunction_key key;\n\tfunction_key_handler_t handler;\n};\n\nstatic const int function_keys_num = 9;\nstatic struct function_keys function_keys[] = {\n\t{\n\t\t.key_str = \"F1\",\n\t\t.func = \"Help\",\n\t\t.key = F_HELP,\n\t\t.handler = handle_f1,\n\t},\n\t{\n\t\t.key_str = \"F2\",\n\t\t.func = \"SymInfo\",\n\t\t.key = F_SYMBOL,\n\t\t.handler = handle_f2,\n\t},\n\t{\n\t\t.key_str = \"F3\",\n\t\t.func = \"Help 2\",\n\t\t.key = F_INSTS,\n\t\t.handler = handle_f3,\n\t},\n\t{\n\t\t.key_str = \"F4\",\n\t\t.func = \"ShowAll\",\n\t\t.key = F_CONF,\n\t\t.handler = handle_f4,\n\t},\n\t{\n\t\t.key_str = \"F5\",\n\t\t.func = \"Back\",\n\t\t.key = F_BACK,\n\t\t.handler = handle_f5,\n\t},\n\t{\n\t\t.key_str = \"F6\",\n\t\t.func = \"Save\",\n\t\t.key = F_SAVE,\n\t\t.handler = handle_f6,\n\t},\n\t{\n\t\t.key_str = \"F7\",\n\t\t.func = \"Load\",\n\t\t.key = F_LOAD,\n\t\t.handler = handle_f7,\n\t},\n\t{\n\t\t.key_str = \"F8\",\n\t\t.func = \"SymSearch\",\n\t\t.key = F_SEARCH,\n\t\t.handler = handle_f8,\n\t},\n\t{\n\t\t.key_str = \"F9\",\n\t\t.func = \"Exit\",\n\t\t.key = F_EXIT,\n\t\t.handler = handle_f9,\n\t},\n};\n\nstatic void print_function_line(void)\n{\n\tint i;\n\tint offset = 1;\n\tconst int skip = 1;\n\tint lines = getmaxy(stdscr);\n\n\tfor (i = 0; i < function_keys_num; i++) {\n\t\t(void) wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]);\n\t\tmvwprintw(main_window, lines-3, offset,\n\t\t\t\t\"%s\",\n\t\t\t\tfunction_keys[i].key_str);\n\t\t(void) wattrset(main_window, attributes[FUNCTION_TEXT]);\n\t\toffset += strlen(function_keys[i].key_str);\n\t\tmvwprintw(main_window, lines-3,\n\t\t\t\toffset, \"%s\",\n\t\t\t\tfunction_keys[i].func);\n\t\toffset += strlen(function_keys[i].func) + skip;\n\t}\n\t(void) wattrset(main_window, attributes[NORMAL]);\n}\n\n/* help */\nstatic void handle_f1(int *key, struct menu *current_item)\n{\n\tshow_scroll_win(main_window,\n\t\t\t_(\"Global help\"), _(nconf_global_help));\n\treturn;\n}\n\n/* symbole help */\nstatic void handle_f2(int *key, struct menu *current_item)\n{\n\tshow_help(current_item);\n\treturn;\n}\n\n/* instructions */\nstatic void handle_f3(int *key, struct menu *current_item)\n{\n\tshow_scroll_win(main_window,\n\t\t\t_(\"Short help\"),\n\t\t\t_(current_instructions));\n\treturn;\n}\n\n/* config */\nstatic void handle_f4(int *key, struct menu *current_item)\n{\n\tint res = btn_dialog(main_window,\n\t\t\t_(\"Show all symbols?\"),\n\t\t\t2,\n\t\t\t\"   <Show All>   \",\n\t\t\t\"<Don't show all>\");\n\tif (res == 0)\n\t\tshow_all_items = 1;\n\telse if (res == 1)\n\t\tshow_all_items = 0;\n\n\treturn;\n}\n\n/* back */\nstatic void handle_f5(int *key, struct menu *current_item)\n{\n\t*key = KEY_LEFT;\n\treturn;\n}\n\n/* save */\nstatic void handle_f6(int *key, struct menu *current_item)\n{\n\tconf_save();\n\treturn;\n}\n\n/* load */\nstatic void handle_f7(int *key, struct menu *current_item)\n{\n\tconf_load();\n\treturn;\n}\n\n/* search */\nstatic void handle_f8(int *key, struct menu *current_item)\n{\n\tsearch_conf();\n\treturn;\n}\n\n/* exit */\nstatic void handle_f9(int *key, struct menu *current_item)\n{\n\tdo_exit();\n\treturn;\n}\n\n/* return != 0 to indicate the key was handles */\nstatic int process_special_keys(int *key, struct menu *menu)\n{\n\tint i;\n\n\tif (*key == KEY_RESIZE) {\n\t\tsetup_windows();\n\t\treturn 1;\n\t}\n\n\tfor (i = 0; i < function_keys_num; i++) {\n\t\tif (*key == KEY_F(function_keys[i].key) ||\n\t\t    *key == '0' + function_keys[i].key){\n\t\t\tfunction_keys[i].handler(key, menu);\n\t\t\treturn 1;\n\t\t}\n\t}\n\n\treturn 0;\n}\n\nstatic void clean_items(void)\n{\n\tint i;\n\tfor (i = 0; curses_menu_items[i]; i++)\n\t\tfree_item(curses_menu_items[i]);\n\tbzero(curses_menu_items, sizeof(curses_menu_items));\n\tbzero(k_menu_items, sizeof(k_menu_items));\n\titems_num = 0;\n}\n\ntypedef enum {MATCH_TINKER_PATTERN_UP, MATCH_TINKER_PATTERN_DOWN,\n\tFIND_NEXT_MATCH_DOWN, FIND_NEXT_MATCH_UP} match_f;\n\n/* return the index of the matched item, or -1 if no such item exists */\nstatic int get_mext_match(const char *match_str, match_f flag)\n{\n\tint match_start = item_index(current_item(curses_menu));\n\tint index;\n\n\tif (flag == FIND_NEXT_MATCH_DOWN)\n\t\t++match_start;\n\telse if (flag == FIND_NEXT_MATCH_UP)\n\t\t--match_start;\n\n\tindex = match_start;\n\tindex = (index + items_num) % items_num;\n\twhile (true) {\n\t\tchar *str = k_menu_items[index].str;\n\t\tif (strcasestr(str, match_str) != NULL)\n\t\t\treturn index;\n\t\tif (flag == FIND_NEXT_MATCH_UP ||\n\t\t    flag == MATCH_TINKER_PATTERN_UP)\n\t\t\t--index;\n\t\telse\n\t\t\t++index;\n\t\tindex = (index + items_num) % items_num;\n\t\tif (index == match_start)\n\t\t\treturn -1;\n\t}\n}\n\n/* Make a new item. */\nstatic void item_make(struct menu *menu, char tag, const char *fmt, ...)\n{\n\tva_list ap;\n\n\tif (items_num > MAX_MENU_ITEMS-1)\n\t\treturn;\n\n\tbzero(&k_menu_items[items_num], sizeof(k_menu_items[0]));\n\tk_menu_items[items_num].tag = tag;\n\tk_menu_items[items_num].usrptr = menu;\n\tif (menu != NULL)\n\t\tk_menu_items[items_num].is_visible =\n\t\t\tmenu_is_visible(menu);\n\telse\n\t\tk_menu_items[items_num].is_visible = 1;\n\n\tva_start(ap, fmt);\n\tvsnprintf(k_menu_items[items_num].str,\n\t\t  sizeof(k_menu_items[items_num].str),\n\t\t  fmt, ap);\n\tva_end(ap);\n\n\tif (!k_menu_items[items_num].is_visible)\n\t\tmemcpy(k_menu_items[items_num].str, \"XXX\", 3);\n\n\tcurses_menu_items[items_num] = new_item(\n\t\t\tk_menu_items[items_num].str,\n\t\t\tk_menu_items[items_num].str);\n\tset_item_userptr(curses_menu_items[items_num],\n\t\t\t&k_menu_items[items_num]);\n\t/*\n\tif (!k_menu_items[items_num].is_visible)\n\t\titem_opts_off(curses_menu_items[items_num], O_SELECTABLE);\n\t*/\n\n\titems_num++;\n\tcurses_menu_items[items_num] = NULL;\n}\n\n/* very hackish. adds a string to the last item added */\nstatic void item_add_str(const char *fmt, ...)\n{\n\tva_list ap;\n\tint index = items_num-1;\n\tchar new_str[256];\n\tchar tmp_str[256];\n\n\tif (index < 0)\n\t\treturn;\n\n\tva_start(ap, fmt);\n\tvsnprintf(new_str, sizeof(new_str), fmt, ap);\n\tva_end(ap);\n\tsnprintf(tmp_str, sizeof(tmp_str), \"%s%s\",\n\t\t\tk_menu_items[index].str, new_str);\n\tstrncpy(k_menu_items[index].str,\n\t\ttmp_str,\n\t\tsizeof(k_menu_items[index].str));\n\n\tfree_item(curses_menu_items[index]);\n\tcurses_menu_items[index] = new_item(\n\t\t\tk_menu_items[index].str,\n\t\t\tk_menu_items[index].str);\n\tset_item_userptr(curses_menu_items[index],\n\t\t\t&k_menu_items[index]);\n}\n\n/* get the tag of the currently selected item */\nstatic char item_tag(void)\n{\n\tITEM *cur;\n\tstruct mitem *mcur;\n\n\tcur = current_item(curses_menu);\n\tif (cur == NULL)\n\t\treturn 0;\n\tmcur = (struct mitem *) item_userptr(cur);\n\treturn mcur->tag;\n}\n\nstatic int curses_item_index(void)\n{\n\treturn  item_index(current_item(curses_menu));\n}\n\nstatic void *item_data(void)\n{\n\tITEM *cur;\n\tstruct mitem *mcur;\n\n\tcur = current_item(curses_menu);\n\tif (!cur)\n\t\treturn NULL;\n\tmcur = (struct mitem *) item_userptr(cur);\n\treturn mcur->usrptr;\n\n}\n\nstatic int item_is_tag(char tag)\n{\n\treturn item_tag() == tag;\n}\n\nstatic char filename[PATH_MAX+1];\nstatic char menu_backtitle[PATH_MAX+128];\nstatic const char *set_config_filename(const char *config_filename)\n{\n\tint size;\n\n\tsize = snprintf(menu_backtitle, sizeof(menu_backtitle),\n\t\t\t\"%s - %s\", config_filename, rootmenu.prompt->text);\n\tif (size >= sizeof(menu_backtitle))\n\t\tmenu_backtitle[sizeof(menu_backtitle)-1] = '\\0';\n\n\tsize = snprintf(filename, sizeof(filename), \"%s\", config_filename);\n\tif (size >= sizeof(filename))\n\t\tfilename[sizeof(filename)-1] = '\\0';\n\treturn menu_backtitle;\n}\n\n/* return = 0 means we are successful.\n * -1 means go on doing what you were doing\n */\nstatic int do_exit(void)\n{\n\tint res;\n\tif (!conf_get_changed()) {\n\t\tglobal_exit = 1;\n\t\treturn 0;\n\t}\n\tres = btn_dialog(main_window,\n\t\t\t_(\"Do you wish to save your new configuration?\\n\"\n\t\t\t\t\"<ESC> to cancel and resume nconfig.\"),\n\t\t\t2,\n\t\t\t\"   <save>   \",\n\t\t\t\"<don't save>\");\n\tif (res == KEY_EXIT) {\n\t\tglobal_exit = 0;\n\t\treturn -1;\n\t}\n\n\t/* if we got here, the user really wants to exit */\n\tswitch (res) {\n\tcase 0:\n\t\tres = conf_write(filename);\n\t\tif (res)\n\t\t\tbtn_dialog(\n\t\t\t\tmain_window,\n\t\t\t\t_(\"Error during writing of configuration.\\n\"\n\t\t\t\t  \"Your configuration changes were NOT saved.\"),\n\t\t\t\t  1,\n\t\t\t\t  \"<OK>\");\n\t\tbreak;\n\tdefault:\n\t\tbtn_dialog(\n\t\t\tmain_window,\n\t\t\t_(\"Your configuration changes were NOT saved.\"),\n\t\t\t1,\n\t\t\t\"<OK>\");\n\t\tbreak;\n\t}\n\tglobal_exit = 1;\n\treturn 0;\n}\n\n\nstatic void search_conf(void)\n{\n\tstruct symbol **sym_arr;\n\tstruct gstr res;\n\tstruct gstr title;\n\tchar *dialog_input;\n\tint dres;\n\n\ttitle = str_new();\n\tstr_printf( &title, _(\"Enter (sub)string or regexp to search for \"\n\t\t\t      \"(with or without \\\"%s\\\")\"), CONFIG_);\n\nagain:\n\tdres = dialog_inputbox(main_window,\n\t\t\t_(\"Search Configuration Parameter\"),\n\t\t\tstr_get(&title),\n\t\t\t\"\", &dialog_input_result, &dialog_input_result_len);\n\tswitch (dres) {\n\tcase 0:\n\t\tbreak;\n\tcase 1:\n\t\tshow_scroll_win(main_window,\n\t\t\t\t_(\"Search Configuration\"), search_help);\n\t\tgoto again;\n\tdefault:\n\t\tstr_free(&title);\n\t\treturn;\n\t}\n\n\t/* strip the prefix if necessary */\n\tdialog_input = dialog_input_result;\n\tif (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0)\n\t\tdialog_input += strlen(CONFIG_);\n\n\tsym_arr = sym_re_search(dialog_input);\n\tres = get_relations_str(sym_arr, NULL);\n\tfree(sym_arr);\n\tshow_scroll_win(main_window,\n\t\t\t_(\"Search Results\"), str_get(&res));\n\tstr_free(&res);\n\tstr_free(&title);\n}\n\n\nstatic void build_conf(struct menu *menu)\n{\n\tstruct symbol *sym;\n\tstruct property *prop;\n\tstruct menu *child;\n\tint type, tmp, doint = 2;\n\ttristate val;\n\tchar ch;\n\n\tif (!menu || (!show_all_items && !menu_is_visible(menu)))\n\t\treturn;\n\n\tsym = menu->sym;\n\tprop = menu->prompt;\n\tif (!sym) {\n\t\tif (prop && menu != current_menu) {\n\t\t\tconst char *prompt = menu_get_prompt(menu);\n\t\t\tenum prop_type ptype;\n\t\t\tptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;\n\t\t\tswitch (ptype) {\n\t\t\tcase P_MENU:\n\t\t\t\tchild_count++;\n\t\t\t\tprompt = _(prompt);\n\t\t\t\tif (single_menu_mode) {\n\t\t\t\t\titem_make(menu, 'm',\n\t\t\t\t\t\t\"%s%*c%s\",\n\t\t\t\t\t\tmenu->data ? \"-->\" : \"++>\",\n\t\t\t\t\t\tindent + 1, ' ', prompt);\n\t\t\t\t} else\n\t\t\t\t\titem_make(menu, 'm',\n\t\t\t\t\t\t  \"   %*c%s  %s\",\n\t\t\t\t\t\t  indent + 1, ' ', prompt,\n\t\t\t\t\t\t  menu_is_empty(menu) ? \"----\" : \"--->\");\n\n\t\t\t\tif (single_menu_mode && menu->data)\n\t\t\t\t\tgoto conf_childs;\n\t\t\t\treturn;\n\t\t\tcase P_COMMENT:\n\t\t\t\tif (prompt) {\n\t\t\t\t\tchild_count++;\n\t\t\t\t\titem_make(menu, ':',\n\t\t\t\t\t\t\"   %*c*** %s ***\",\n\t\t\t\t\t\tindent + 1, ' ',\n\t\t\t\t\t\t_(prompt));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (prompt) {\n\t\t\t\t\tchild_count++;\n\t\t\t\t\titem_make(menu, ':', \"---%*c%s\",\n\t\t\t\t\t\tindent + 1, ' ',\n\t\t\t\t\t\t_(prompt));\n\t\t\t\t}\n\t\t\t}\n\t\t} else\n\t\t\tdoint = 0;\n\t\tgoto conf_childs;\n\t}\n\n\ttype = sym_get_type(sym);\n\tif (sym_is_choice(sym)) {\n\t\tstruct symbol *def_sym = sym_get_choice_value(sym);\n\t\tstruct menu *def_menu = NULL;\n\n\t\tchild_count++;\n\t\tfor (child = menu->list; child; child = child->next) {\n\t\t\tif (menu_is_visible(child) && child->sym == def_sym)\n\t\t\t\tdef_menu = child;\n\t\t}\n\n\t\tval = sym_get_tristate_value(sym);\n\t\tif (sym_is_changable(sym)) {\n\t\t\tswitch (type) {\n\t\t\tcase S_BOOLEAN:\n\t\t\t\titem_make(menu, 't', \"[%c]\",\n\t\t\t\t\t\tval == no ? ' ' : '*');\n\t\t\t\tbreak;\n\t\t\tcase S_TRISTATE:\n\t\t\t\tswitch (val) {\n\t\t\t\tcase yes:\n\t\t\t\t\tch = '*';\n\t\t\t\t\tbreak;\n\t\t\t\tcase mod:\n\t\t\t\t\tch = 'M';\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tch = ' ';\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\titem_make(menu, 't', \"<%c>\", ch);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\titem_make(menu, def_menu ? 't' : ':', \"   \");\n\t\t}\n\n\t\titem_add_str(\"%*c%s\", indent + 1,\n\t\t\t\t' ', _(menu_get_prompt(menu)));\n\t\tif (val == yes) {\n\t\t\tif (def_menu) {\n\t\t\t\titem_add_str(\" (%s)\",\n\t\t\t\t\t_(menu_get_prompt(def_menu)));\n\t\t\t\titem_add_str(\"  --->\");\n\t\t\t\tif (def_menu->list) {\n\t\t\t\t\tindent += 2;\n\t\t\t\t\tbuild_conf(def_menu);\n\t\t\t\t\tindent -= 2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t} else {\n\t\tif (menu == current_menu) {\n\t\t\titem_make(menu, ':',\n\t\t\t\t\"---%*c%s\", indent + 1,\n\t\t\t\t' ', _(menu_get_prompt(menu)));\n\t\t\tgoto conf_childs;\n\t\t}\n\t\tchild_count++;\n\t\tval = sym_get_tristate_value(sym);\n\t\tif (sym_is_choice_value(sym) && val == yes) {\n\t\t\titem_make(menu, ':', \"   \");\n\t\t} else {\n\t\t\tswitch (type) {\n\t\t\tcase S_BOOLEAN:\n\t\t\t\tif (sym_is_changable(sym))\n\t\t\t\t\titem_make(menu, 't', \"[%c]\",\n\t\t\t\t\t\tval == no ? ' ' : '*');\n\t\t\t\telse\n\t\t\t\t\titem_make(menu, 't', \"-%c-\",\n\t\t\t\t\t\tval == no ? ' ' : '*');\n\t\t\t\tbreak;\n\t\t\tcase S_TRISTATE:\n\t\t\t\tswitch (val) {\n\t\t\t\tcase yes:\n\t\t\t\t\tch = '*';\n\t\t\t\t\tbreak;\n\t\t\t\tcase mod:\n\t\t\t\t\tch = 'M';\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tch = ' ';\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (sym_is_changable(sym)) {\n\t\t\t\t\tif (sym->rev_dep.tri == mod)\n\t\t\t\t\t\titem_make(menu,\n\t\t\t\t\t\t\t't', \"{%c}\", ch);\n\t\t\t\t\telse\n\t\t\t\t\t\titem_make(menu,\n\t\t\t\t\t\t\t't', \"<%c>\", ch);\n\t\t\t\t} else\n\t\t\t\t\titem_make(menu, 't', \"-%c-\", ch);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttmp = 2 + strlen(sym_get_string_value(sym));\n\t\t\t\titem_make(menu, 's', \"    (%s)\",\n\t\t\t\t\t\tsym_get_string_value(sym));\n\t\t\t\ttmp = indent - tmp + 4;\n\t\t\t\tif (tmp < 0)\n\t\t\t\t\ttmp = 0;\n\t\t\t\titem_add_str(\"%*c%s%s\", tmp, ' ',\n\t\t\t\t\t\t_(menu_get_prompt(menu)),\n\t\t\t\t\t\t(sym_has_value(sym) ||\n\t\t\t\t\t\t !sym_is_changable(sym)) ? \"\" :\n\t\t\t\t\t\t_(\" (NEW)\"));\n\t\t\t\tgoto conf_childs;\n\t\t\t}\n\t\t}\n\t\titem_add_str(\"%*c%s%s\", indent + 1, ' ',\n\t\t\t\t_(menu_get_prompt(menu)),\n\t\t\t\t(sym_has_value(sym) || !sym_is_changable(sym)) ?\n\t\t\t\t\"\" : _(\" (NEW)\"));\n\t\tif (menu->prompt && menu->prompt->type == P_MENU) {\n\t\t\titem_add_str(\"  %s\", menu_is_empty(menu) ? \"----\" : \"--->\");\n\t\t\treturn;\n\t\t}\n\t}\n\nconf_childs:\n\tindent += doint;\n\tfor (child = menu->list; child; child = child->next)\n\t\tbuild_conf(child);\n\tindent -= doint;\n}\n\nstatic void reset_menu(void)\n{\n\tunpost_menu(curses_menu);\n\tclean_items();\n}\n\n/* adjust the menu to show this item.\n * prefer not to scroll the menu if possible*/\nstatic void center_item(int selected_index, int *last_top_row)\n{\n\tint toprow;\n\n\tset_top_row(curses_menu, *last_top_row);\n\ttoprow = top_row(curses_menu);\n\tif (selected_index < toprow ||\n\t    selected_index >= toprow+mwin_max_lines) {\n\t\ttoprow = max(selected_index-mwin_max_lines/2, 0);\n\t\tif (toprow >= item_count(curses_menu)-mwin_max_lines)\n\t\t\ttoprow = item_count(curses_menu)-mwin_max_lines;\n\t\tset_top_row(curses_menu, toprow);\n\t}\n\tset_current_item(curses_menu,\n\t\t\tcurses_menu_items[selected_index]);\n\t*last_top_row = toprow;\n\tpost_menu(curses_menu);\n\trefresh_all_windows(main_window);\n}\n\n/* this function assumes reset_menu has been called before */\nstatic void show_menu(const char *prompt, const char *instructions,\n\t\tint selected_index, int *last_top_row)\n{\n\tint maxx, maxy;\n\tWINDOW *menu_window;\n\n\tcurrent_instructions = instructions;\n\n\tclear();\n\t(void) wattrset(main_window, attributes[NORMAL]);\n\tprint_in_middle(stdscr, 1, 0, getmaxx(stdscr),\n\t\t\tmenu_backtitle,\n\t\t\tattributes[MAIN_HEADING]);\n\n\t(void) wattrset(main_window, attributes[MAIN_MENU_BOX]);\n\tbox(main_window, 0, 0);\n\t(void) wattrset(main_window, attributes[MAIN_MENU_HEADING]);\n\tmvwprintw(main_window, 0, 3, \" %s \", prompt);\n\t(void) wattrset(main_window, attributes[NORMAL]);\n\n\tset_menu_items(curses_menu, curses_menu_items);\n\n\t/* position the menu at the middle of the screen */\n\tscale_menu(curses_menu, &maxy, &maxx);\n\tmaxx = min(maxx, mwin_max_cols-2);\n\tmaxy = mwin_max_lines;\n\tmenu_window = derwin(main_window,\n\t\t\tmaxy,\n\t\t\tmaxx,\n\t\t\t2,\n\t\t\t(mwin_max_cols-maxx)/2);\n\tkeypad(menu_window, TRUE);\n\tset_menu_win(curses_menu, menu_window);\n\tset_menu_sub(curses_menu, menu_window);\n\n\t/* must reassert this after changing items, otherwise returns to a\n\t * default of 16\n\t */\n\tset_menu_format(curses_menu, maxy, 1);\n\tcenter_item(selected_index, last_top_row);\n\tset_menu_format(curses_menu, maxy, 1);\n\n\tprint_function_line();\n\n\t/* Post the menu */\n\tpost_menu(curses_menu);\n\trefresh_all_windows(main_window);\n}\n\nstatic void adj_match_dir(match_f *match_direction)\n{\n\tif (*match_direction == FIND_NEXT_MATCH_DOWN)\n\t\t*match_direction =\n\t\t\tMATCH_TINKER_PATTERN_DOWN;\n\telse if (*match_direction == FIND_NEXT_MATCH_UP)\n\t\t*match_direction =\n\t\t\tMATCH_TINKER_PATTERN_UP;\n\t/* else, do no change.. */\n}\n\nstruct match_state\n{\n\tint in_search;\n\tmatch_f match_direction;\n\tchar pattern[256];\n};\n\n/* Return 0 means I have handled the key. In such a case, ans should hold the\n * item to center, or -1 otherwise.\n * Else return -1 .\n */\nstatic int do_match(int key, struct match_state *state, int *ans)\n{\n\tchar c = (char) key;\n\tint terminate_search = 0;\n\t*ans = -1;\n\tif (key == '/' || (state->in_search && key == 27)) {\n\t\tmove(0, 0);\n\t\trefresh();\n\t\tclrtoeol();\n\t\tstate->in_search = 1-state->in_search;\n\t\tbzero(state->pattern, sizeof(state->pattern));\n\t\tstate->match_direction = MATCH_TINKER_PATTERN_DOWN;\n\t\treturn 0;\n\t} else if (!state->in_search)\n\t\treturn 1;\n\n\tif (isalnum(c) || isgraph(c) || c == ' ') {\n\t\tstate->pattern[strlen(state->pattern)] = c;\n\t\tstate->pattern[strlen(state->pattern)] = '\\0';\n\t\tadj_match_dir(&state->match_direction);\n\t\t*ans = get_mext_match(state->pattern,\n\t\t\t\tstate->match_direction);\n\t} else if (key == KEY_DOWN) {\n\t\tstate->match_direction = FIND_NEXT_MATCH_DOWN;\n\t\t*ans = get_mext_match(state->pattern,\n\t\t\t\tstate->match_direction);\n\t} else if (key == KEY_UP) {\n\t\tstate->match_direction = FIND_NEXT_MATCH_UP;\n\t\t*ans = get_mext_match(state->pattern,\n\t\t\t\tstate->match_direction);\n\t} else if (key == KEY_BACKSPACE || key == 127) {\n\t\tstate->pattern[strlen(state->pattern)-1] = '\\0';\n\t\tadj_match_dir(&state->match_direction);\n\t} else\n\t\tterminate_search = 1;\n\n\tif (terminate_search) {\n\t\tstate->in_search = 0;\n\t\tbzero(state->pattern, sizeof(state->pattern));\n\t\tmove(0, 0);\n\t\trefresh();\n\t\tclrtoeol();\n\t\treturn -1;\n\t}\n\treturn 0;\n}\n\nstatic void conf(struct menu *menu)\n{\n\tstruct menu *submenu = NULL;\n\tconst char *prompt = menu_get_prompt(menu);\n\tstruct symbol *sym;\n\tint res;\n\tint current_index = 0;\n\tint last_top_row = 0;\n\tstruct match_state match_state = {\n\t\t.in_search = 0,\n\t\t.match_direction = MATCH_TINKER_PATTERN_DOWN,\n\t\t.pattern = \"\",\n\t};\n\n\twhile (!global_exit) {\n\t\treset_menu();\n\t\tcurrent_menu = menu;\n\t\tbuild_conf(menu);\n\t\tif (!child_count)\n\t\t\tbreak;\n\n\t\tshow_menu(prompt ? _(prompt) : _(\"Main Menu\"),\n\t\t\t\t_(menu_instructions),\n\t\t\t\tcurrent_index, &last_top_row);\n\t\tkeypad((menu_win(curses_menu)), TRUE);\n\t\twhile (!global_exit) {\n\t\t\tif (match_state.in_search) {\n\t\t\t\tmvprintw(0, 0,\n\t\t\t\t\t\"searching: %s\", match_state.pattern);\n\t\t\t\tclrtoeol();\n\t\t\t}\n\t\t\trefresh_all_windows(main_window);\n\t\t\tres = wgetch(menu_win(curses_menu));\n\t\t\tif (!res)\n\t\t\t\tbreak;\n\t\t\tif (do_match(res, &match_state, &current_index) == 0) {\n\t\t\t\tif (current_index != -1)\n\t\t\t\t\tcenter_item(current_index,\n\t\t\t\t\t\t    &last_top_row);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (process_special_keys(&res,\n\t\t\t\t\t\t(struct menu *) item_data()))\n\t\t\t\tbreak;\n\t\t\tswitch (res) {\n\t\t\tcase KEY_DOWN:\n\t\t\t\tmenu_driver(curses_menu, REQ_DOWN_ITEM);\n\t\t\t\tbreak;\n\t\t\tcase KEY_UP:\n\t\t\t\tmenu_driver(curses_menu, REQ_UP_ITEM);\n\t\t\t\tbreak;\n\t\t\tcase KEY_NPAGE:\n\t\t\t\tmenu_driver(curses_menu, REQ_SCR_DPAGE);\n\t\t\t\tbreak;\n\t\t\tcase KEY_PPAGE:\n\t\t\t\tmenu_driver(curses_menu, REQ_SCR_UPAGE);\n\t\t\t\tbreak;\n\t\t\tcase KEY_HOME:\n\t\t\t\tmenu_driver(curses_menu, REQ_FIRST_ITEM);\n\t\t\t\tbreak;\n\t\t\tcase KEY_END:\n\t\t\t\tmenu_driver(curses_menu, REQ_LAST_ITEM);\n\t\t\t\tbreak;\n\t\t\tcase 'h':\n\t\t\tcase '?':\n\t\t\t\tshow_help((struct menu *) item_data());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (res == 10 || res == 27 ||\n\t\t\t\tres == 32 || res == 'n' || res == 'y' ||\n\t\t\t\tres == KEY_LEFT || res == KEY_RIGHT ||\n\t\t\t\tres == 'm')\n\t\t\t\tbreak;\n\t\t\trefresh_all_windows(main_window);\n\t\t}\n\n\t\trefresh_all_windows(main_window);\n\t\t/* if ESC or left*/\n\t\tif (res == 27 || (menu != &rootmenu && res == KEY_LEFT))\n\t\t\tbreak;\n\n\t\t/* remember location in the menu */\n\t\tlast_top_row = top_row(curses_menu);\n\t\tcurrent_index = curses_item_index();\n\n\t\tif (!item_tag())\n\t\t\tcontinue;\n\n\t\tsubmenu = (struct menu *) item_data();\n\t\tif (!submenu || !menu_is_visible(submenu))\n\t\t\tcontinue;\n\t\tsym = submenu->sym;\n\n\t\tswitch (res) {\n\t\tcase ' ':\n\t\t\tif (item_is_tag('t'))\n\t\t\t\tsym_toggle_tristate_value(sym);\n\t\t\telse if (item_is_tag('m'))\n\t\t\t\tconf(submenu);\n\t\t\tbreak;\n\t\tcase KEY_RIGHT:\n\t\tcase 10: /* ENTER WAS PRESSED */\n\t\t\tswitch (item_tag()) {\n\t\t\tcase 'm':\n\t\t\t\tif (single_menu_mode)\n\t\t\t\t\tsubmenu->data =\n\t\t\t\t\t\t(void *) (long) !submenu->data;\n\t\t\t\telse\n\t\t\t\t\tconf(submenu);\n\t\t\t\tbreak;\n\t\t\tcase 't':\n\t\t\t\tif (sym_is_choice(sym) &&\n\t\t\t\t    sym_get_tristate_value(sym) == yes)\n\t\t\t\t\tconf_choice(submenu);\n\t\t\t\telse if (submenu->prompt &&\n\t\t\t\t\t submenu->prompt->type == P_MENU)\n\t\t\t\t\tconf(submenu);\n\t\t\t\telse if (res == 10)\n\t\t\t\t\tsym_toggle_tristate_value(sym);\n\t\t\t\tbreak;\n\t\t\tcase 's':\n\t\t\t\tconf_string(submenu);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'y':\n\t\t\tif (item_is_tag('t')) {\n\t\t\t\tif (sym_set_tristate_value(sym, yes))\n\t\t\t\t\tbreak;\n\t\t\t\tif (sym_set_tristate_value(sym, mod))\n\t\t\t\t\tbtn_dialog(main_window, setmod_text, 0);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'n':\n\t\t\tif (item_is_tag('t'))\n\t\t\t\tsym_set_tristate_value(sym, no);\n\t\t\tbreak;\n\t\tcase 'm':\n\t\t\tif (item_is_tag('t'))\n\t\t\t\tsym_set_tristate_value(sym, mod);\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nstatic void conf_message_callback(const char *fmt, va_list ap)\n{\n\tchar buf[1024];\n\n\tvsnprintf(buf, sizeof(buf), fmt, ap);\n\tbtn_dialog(main_window, buf, 1, \"<OK>\");\n}\n\nstatic void show_help(struct menu *menu)\n{\n\tstruct gstr help;\n\n\tif (!menu)\n\t\treturn;\n\n\thelp = str_new();\n\tmenu_get_ext_help(menu, &help);\n\tshow_scroll_win(main_window, _(menu_get_prompt(menu)), str_get(&help));\n\tstr_free(&help);\n}\n\nstatic void conf_choice(struct menu *menu)\n{\n\tconst char *prompt = _(menu_get_prompt(menu));\n\tstruct menu *child = NULL;\n\tstruct symbol *active;\n\tint selected_index = 0;\n\tint last_top_row = 0;\n\tint res, i = 0;\n\tstruct match_state match_state = {\n\t\t.in_search = 0,\n\t\t.match_direction = MATCH_TINKER_PATTERN_DOWN,\n\t\t.pattern = \"\",\n\t};\n\n\tactive = sym_get_choice_value(menu->sym);\n\t/* this is mostly duplicated from the conf() function. */\n\twhile (!global_exit) {\n\t\treset_menu();\n\n\t\tfor (i = 0, child = menu->list; child; child = child->next) {\n\t\t\tif (!show_all_items && !menu_is_visible(child))\n\t\t\t\tcontinue;\n\n\t\t\tif (child->sym == sym_get_choice_value(menu->sym))\n\t\t\t\titem_make(child, ':', \"<X> %s\",\n\t\t\t\t\t\t_(menu_get_prompt(child)));\n\t\t\telse if (child->sym)\n\t\t\t\titem_make(child, ':', \"    %s\",\n\t\t\t\t\t\t_(menu_get_prompt(child)));\n\t\t\telse\n\t\t\t\titem_make(child, ':', \"*** %s ***\",\n\t\t\t\t\t\t_(menu_get_prompt(child)));\n\n\t\t\tif (child->sym == active){\n\t\t\t\tlast_top_row = top_row(curses_menu);\n\t\t\t\tselected_index = i;\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\tshow_menu(prompt ? _(prompt) : _(\"Choice Menu\"),\n\t\t\t\t_(radiolist_instructions),\n\t\t\t\tselected_index,\n\t\t\t\t&last_top_row);\n\t\twhile (!global_exit) {\n\t\t\tif (match_state.in_search) {\n\t\t\t\tmvprintw(0, 0, \"searching: %s\",\n\t\t\t\t\t match_state.pattern);\n\t\t\t\tclrtoeol();\n\t\t\t}\n\t\t\trefresh_all_windows(main_window);\n\t\t\tres = wgetch(menu_win(curses_menu));\n\t\t\tif (!res)\n\t\t\t\tbreak;\n\t\t\tif (do_match(res, &match_state, &selected_index) == 0) {\n\t\t\t\tif (selected_index != -1)\n\t\t\t\t\tcenter_item(selected_index,\n\t\t\t\t\t\t    &last_top_row);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (process_special_keys(\n\t\t\t\t\t\t&res,\n\t\t\t\t\t\t(struct menu *) item_data()))\n\t\t\t\tbreak;\n\t\t\tswitch (res) {\n\t\t\tcase KEY_DOWN:\n\t\t\t\tmenu_driver(curses_menu, REQ_DOWN_ITEM);\n\t\t\t\tbreak;\n\t\t\tcase KEY_UP:\n\t\t\t\tmenu_driver(curses_menu, REQ_UP_ITEM);\n\t\t\t\tbreak;\n\t\t\tcase KEY_NPAGE:\n\t\t\t\tmenu_driver(curses_menu, REQ_SCR_DPAGE);\n\t\t\t\tbreak;\n\t\t\tcase KEY_PPAGE:\n\t\t\t\tmenu_driver(curses_menu, REQ_SCR_UPAGE);\n\t\t\t\tbreak;\n\t\t\tcase KEY_HOME:\n\t\t\t\tmenu_driver(curses_menu, REQ_FIRST_ITEM);\n\t\t\t\tbreak;\n\t\t\tcase KEY_END:\n\t\t\t\tmenu_driver(curses_menu, REQ_LAST_ITEM);\n\t\t\t\tbreak;\n\t\t\tcase 'h':\n\t\t\tcase '?':\n\t\t\t\tshow_help((struct menu *) item_data());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (res == 10 || res == 27 || res == ' ' ||\n\t\t\t\t\tres == KEY_LEFT){\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\trefresh_all_windows(main_window);\n\t\t}\n\t\t/* if ESC or left */\n\t\tif (res == 27 || res == KEY_LEFT)\n\t\t\tbreak;\n\n\t\tchild = item_data();\n\t\tif (!child || !menu_is_visible(child) || !child->sym)\n\t\t\tcontinue;\n\t\tswitch (res) {\n\t\tcase ' ':\n\t\tcase  10:\n\t\tcase KEY_RIGHT:\n\t\t\tsym_set_tristate_value(child->sym, yes);\n\t\t\treturn;\n\t\tcase 'h':\n\t\tcase '?':\n\t\t\tshow_help(child);\n\t\t\tactive = child->sym;\n\t\t\tbreak;\n\t\tcase KEY_EXIT:\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nstatic void conf_string(struct menu *menu)\n{\n\tconst char *prompt = menu_get_prompt(menu);\n\n\twhile (1) {\n\t\tint res;\n\t\tconst char *heading;\n\n\t\tswitch (sym_get_type(menu->sym)) {\n\t\tcase S_INT:\n\t\t\theading = _(inputbox_instructions_int);\n\t\t\tbreak;\n\t\tcase S_HEX:\n\t\t\theading = _(inputbox_instructions_hex);\n\t\t\tbreak;\n\t\tcase S_STRING:\n\t\t\theading = _(inputbox_instructions_string);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\theading = _(\"Internal nconf error!\");\n\t\t}\n\t\tres = dialog_inputbox(main_window,\n\t\t\t\tprompt ? _(prompt) : _(\"Main Menu\"),\n\t\t\t\theading,\n\t\t\t\tsym_get_string_value(menu->sym),\n\t\t\t\t&dialog_input_result,\n\t\t\t\t&dialog_input_result_len);\n\t\tswitch (res) {\n\t\tcase 0:\n\t\t\tif (sym_set_string_value(menu->sym,\n\t\t\t\t\t\tdialog_input_result))\n\t\t\t\treturn;\n\t\t\tbtn_dialog(main_window,\n\t\t\t\t_(\"You have made an invalid entry.\"), 0);\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tshow_help(menu);\n\t\t\tbreak;\n\t\tcase KEY_EXIT:\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nstatic void conf_load(void)\n{\n\twhile (1) {\n\t\tint res;\n\t\tres = dialog_inputbox(main_window,\n\t\t\t\tNULL, load_config_text,\n\t\t\t\tfilename,\n\t\t\t\t&dialog_input_result,\n\t\t\t\t&dialog_input_result_len);\n\t\tswitch (res) {\n\t\tcase 0:\n\t\t\tif (!dialog_input_result[0])\n\t\t\t\treturn;\n\t\t\tif (!conf_read(dialog_input_result)) {\n\t\t\t\tset_config_filename(dialog_input_result);\n\t\t\t\tsym_set_change_count(1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tbtn_dialog(main_window, _(\"File does not exist!\"), 0);\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tshow_scroll_win(main_window,\n\t\t\t\t\t_(\"Load Alternate Configuration\"),\n\t\t\t\t\tload_config_help);\n\t\t\tbreak;\n\t\tcase KEY_EXIT:\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nstatic void conf_save(void)\n{\n\twhile (1) {\n\t\tint res;\n\t\tres = dialog_inputbox(main_window,\n\t\t\t\tNULL, save_config_text,\n\t\t\t\tfilename,\n\t\t\t\t&dialog_input_result,\n\t\t\t\t&dialog_input_result_len);\n\t\tswitch (res) {\n\t\tcase 0:\n\t\t\tif (!dialog_input_result[0])\n\t\t\t\treturn;\n\t\t\tres = conf_write(dialog_input_result);\n\t\t\tif (!res) {\n\t\t\t\tset_config_filename(dialog_input_result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tbtn_dialog(main_window, _(\"Can't create file! \"\n\t\t\t\t\"Probably a nonexistent directory.\"),\n\t\t\t\t1, \"<OK>\");\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tshow_scroll_win(main_window,\n\t\t\t\t_(\"Save Alternate Configuration\"),\n\t\t\t\tsave_config_help);\n\t\t\tbreak;\n\t\tcase KEY_EXIT:\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nstatic void setup_windows(void)\n{\n\tint lines, columns;\n\n\tgetmaxyx(stdscr, lines, columns);\n\n\tif (main_window != NULL)\n\t\tdelwin(main_window);\n\n\t/* set up the menu and menu window */\n\tmain_window = newwin(lines-2, columns-2, 2, 1);\n\tkeypad(main_window, TRUE);\n\tmwin_max_lines = lines-7;\n\tmwin_max_cols = columns-6;\n\n\t/* panels order is from bottom to top */\n\tnew_panel(main_window);\n}\n\nint main(int ac, char **av)\n{\n\tint lines, columns;\n\tchar *mode;\n\n\tsetlocale(LC_ALL, \"\");\n\tbindtextdomain(PACKAGE, LOCALEDIR);\n\ttextdomain(PACKAGE);\n\n\tif (ac > 1 && strcmp(av[1], \"-s\") == 0) {\n\t\t/* Silence conf_read() until the real callback is set up */\n\t\tconf_set_message_callback(NULL);\n\t\tav++;\n\t}\n\tconf_parse(av[1]);\n\tconf_read(NULL);\n\n\tmode = getenv(\"NCONFIG_MODE\");\n\tif (mode) {\n\t\tif (!strcasecmp(mode, \"single_menu\"))\n\t\t\tsingle_menu_mode = 1;\n\t}\n\n\t/* Initialize curses */\n\tinitscr();\n\t/* set color theme */\n\tset_colors();\n\n\tcbreak();\n\tnoecho();\n\tkeypad(stdscr, TRUE);\n\tcurs_set(0);\n\n\tgetmaxyx(stdscr, lines, columns);\n\tif (columns < 75 || lines < 20) {\n\t\tendwin();\n\t\tprintf(\"Your terminal should have at \"\n\t\t\t\"least 20 lines and 75 columns\\n\");\n\t\treturn 1;\n\t}\n\n\tnotimeout(stdscr, FALSE);\n#if NCURSES_REENTRANT\n\tset_escdelay(1);\n#else\n\tESCDELAY = 1;\n#endif\n\n\t/* set btns menu */\n\tcurses_menu = new_menu(curses_menu_items);\n\tmenu_opts_off(curses_menu, O_SHOWDESC);\n\tmenu_opts_on(curses_menu, O_SHOWMATCH);\n\tmenu_opts_on(curses_menu, O_ONEVALUE);\n\tmenu_opts_on(curses_menu, O_NONCYCLIC);\n\tmenu_opts_on(curses_menu, O_IGNORECASE);\n\tset_menu_mark(curses_menu, \" \");\n\tset_menu_fore(curses_menu, attributes[MAIN_MENU_FORE]);\n\tset_menu_back(curses_menu, attributes[MAIN_MENU_BACK]);\n\tset_menu_grey(curses_menu, attributes[MAIN_MENU_GREY]);\n\n\tset_config_filename(conf_get_configname());\n\tsetup_windows();\n\n\t/* check for KEY_FUNC(1) */\n\tif (has_key(KEY_F(1)) == FALSE) {\n\t\tshow_scroll_win(main_window,\n\t\t\t\t_(\"Instructions\"),\n\t\t\t\t_(menu_no_f_instructions));\n\t}\n\n\tconf_set_message_callback(conf_message_callback);\n\t/* do the work */\n\twhile (!global_exit) {\n\t\tconf(&rootmenu);\n\t\tif (!global_exit && do_exit() == 0)\n\t\t\tbreak;\n\t}\n\t/* ok, we are done */\n\tunpost_menu(curses_menu);\n\tfree_menu(curses_menu);\n\tdelwin(main_window);\n\tclear();\n\trefresh();\n\tendwin();\n\treturn 0;\n}\n"
  },
  {
    "path": "support/kconfig/nconf.gui.c",
    "content": "/*\n * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com?\n * Released under the terms of the GNU GPL v2.0.\n *\n * Derived from menuconfig.\n *\n */\n#include \"nconf.h\"\n#include \"lkc.h\"\n\n/* a list of all the different widgets we use */\nattributes_t attributes[ATTR_MAX+1] = {0};\n\n/* available colors:\n   COLOR_BLACK   0\n   COLOR_RED     1\n   COLOR_GREEN   2\n   COLOR_YELLOW  3\n   COLOR_BLUE    4\n   COLOR_MAGENTA 5\n   COLOR_CYAN    6\n   COLOR_WHITE   7\n   */\nstatic void set_normal_colors(void)\n{\n\tinit_pair(NORMAL, -1, -1);\n\tinit_pair(MAIN_HEADING, COLOR_MAGENTA, -1);\n\n\t/* FORE is for the selected item */\n\tinit_pair(MAIN_MENU_FORE, -1, -1);\n\t/* BACK for all the rest */\n\tinit_pair(MAIN_MENU_BACK, -1, -1);\n\tinit_pair(MAIN_MENU_GREY, -1, -1);\n\tinit_pair(MAIN_MENU_HEADING, COLOR_GREEN, -1);\n\tinit_pair(MAIN_MENU_BOX, COLOR_YELLOW, -1);\n\n\tinit_pair(SCROLLWIN_TEXT, -1, -1);\n\tinit_pair(SCROLLWIN_HEADING, COLOR_GREEN, -1);\n\tinit_pair(SCROLLWIN_BOX, COLOR_YELLOW, -1);\n\n\tinit_pair(DIALOG_TEXT, -1, -1);\n\tinit_pair(DIALOG_BOX, COLOR_YELLOW, -1);\n\tinit_pair(DIALOG_MENU_BACK, COLOR_YELLOW, -1);\n\tinit_pair(DIALOG_MENU_FORE, COLOR_RED, -1);\n\n\tinit_pair(INPUT_BOX, COLOR_YELLOW, -1);\n\tinit_pair(INPUT_HEADING, COLOR_GREEN, -1);\n\tinit_pair(INPUT_TEXT, -1, -1);\n\tinit_pair(INPUT_FIELD, -1, -1);\n\n\tinit_pair(FUNCTION_HIGHLIGHT, -1, -1);\n\tinit_pair(FUNCTION_TEXT, COLOR_YELLOW, -1);\n}\n\n/* available attributes:\n   A_NORMAL        Normal display (no highlight)\n   A_STANDOUT      Best highlighting mode of the terminal.\n   A_UNDERLINE     Underlining\n   A_REVERSE       Reverse video\n   A_BLINK         Blinking\n   A_DIM           Half bright\n   A_BOLD          Extra bright or bold\n   A_PROTECT       Protected mode\n   A_INVIS         Invisible or blank mode\n   A_ALTCHARSET    Alternate character set\n   A_CHARTEXT      Bit-mask to extract a character\n   COLOR_PAIR(n)   Color-pair number n\n   */\nstatic void normal_color_theme(void)\n{\n\t/* automatically add color... */\n#define mkattr(name, attr) do { \\\nattributes[name] = attr | COLOR_PAIR(name); } while (0)\n\tmkattr(NORMAL, NORMAL);\n\tmkattr(MAIN_HEADING, A_BOLD | A_UNDERLINE);\n\n\tmkattr(MAIN_MENU_FORE, A_REVERSE);\n\tmkattr(MAIN_MENU_BACK, A_NORMAL);\n\tmkattr(MAIN_MENU_GREY, A_NORMAL);\n\tmkattr(MAIN_MENU_HEADING, A_BOLD);\n\tmkattr(MAIN_MENU_BOX, A_NORMAL);\n\n\tmkattr(SCROLLWIN_TEXT, A_NORMAL);\n\tmkattr(SCROLLWIN_HEADING, A_BOLD);\n\tmkattr(SCROLLWIN_BOX, A_BOLD);\n\n\tmkattr(DIALOG_TEXT, A_BOLD);\n\tmkattr(DIALOG_BOX, A_BOLD);\n\tmkattr(DIALOG_MENU_FORE, A_STANDOUT);\n\tmkattr(DIALOG_MENU_BACK, A_NORMAL);\n\n\tmkattr(INPUT_BOX, A_NORMAL);\n\tmkattr(INPUT_HEADING, A_BOLD);\n\tmkattr(INPUT_TEXT, A_NORMAL);\n\tmkattr(INPUT_FIELD, A_UNDERLINE);\n\n\tmkattr(FUNCTION_HIGHLIGHT, A_BOLD);\n\tmkattr(FUNCTION_TEXT, A_REVERSE);\n}\n\nstatic void no_colors_theme(void)\n{\n\t/* automatically add highlight, no color */\n#define mkattrn(name, attr) { attributes[name] = attr; }\n\n\tmkattrn(NORMAL, NORMAL);\n\tmkattrn(MAIN_HEADING, A_BOLD | A_UNDERLINE);\n\n\tmkattrn(MAIN_MENU_FORE, A_STANDOUT);\n\tmkattrn(MAIN_MENU_BACK, A_NORMAL);\n\tmkattrn(MAIN_MENU_GREY, A_NORMAL);\n\tmkattrn(MAIN_MENU_HEADING, A_BOLD);\n\tmkattrn(MAIN_MENU_BOX, A_NORMAL);\n\n\tmkattrn(SCROLLWIN_TEXT, A_NORMAL);\n\tmkattrn(SCROLLWIN_HEADING, A_BOLD);\n\tmkattrn(SCROLLWIN_BOX, A_BOLD);\n\n\tmkattrn(DIALOG_TEXT, A_NORMAL);\n\tmkattrn(DIALOG_BOX, A_BOLD);\n\tmkattrn(DIALOG_MENU_FORE, A_STANDOUT);\n\tmkattrn(DIALOG_MENU_BACK, A_NORMAL);\n\n\tmkattrn(INPUT_BOX, A_BOLD);\n\tmkattrn(INPUT_HEADING, A_BOLD);\n\tmkattrn(INPUT_TEXT, A_NORMAL);\n\tmkattrn(INPUT_FIELD, A_UNDERLINE);\n\n\tmkattrn(FUNCTION_HIGHLIGHT, A_BOLD);\n\tmkattrn(FUNCTION_TEXT, A_REVERSE);\n}\n\nvoid set_colors(void)\n{\n\tstart_color();\n\tuse_default_colors();\n\tset_normal_colors();\n\tif (has_colors()) {\n\t\tnormal_color_theme();\n\t} else {\n\t\t/* give defaults */\n\t\tno_colors_theme();\n\t}\n}\n\n\n/* this changes the windows attributes !!! */\nvoid print_in_middle(WINDOW *win,\n\t\tint starty,\n\t\tint startx,\n\t\tint width,\n\t\tconst char *string,\n\t\tchtype color)\n{      int length, x, y;\n\tfloat temp;\n\n\n\tif (win == NULL)\n\t\twin = stdscr;\n\tgetyx(win, y, x);\n\tif (startx != 0)\n\t\tx = startx;\n\tif (starty != 0)\n\t\ty = starty;\n\tif (width == 0)\n\t\twidth = 80;\n\n\tlength = strlen(string);\n\ttemp = (width - length) / 2;\n\tx = startx + (int)temp;\n\t(void) wattrset(win, color);\n\tmvwprintw(win, y, x, \"%s\", string);\n\trefresh();\n}\n\nint get_line_no(const char *text)\n{\n\tint i;\n\tint total = 1;\n\n\tif (!text)\n\t\treturn 0;\n\n\tfor (i = 0; text[i] != '\\0'; i++)\n\t\tif (text[i] == '\\n')\n\t\t\ttotal++;\n\treturn total;\n}\n\nconst char *get_line(const char *text, int line_no)\n{\n\tint i;\n\tint lines = 0;\n\n\tif (!text)\n\t\treturn NULL;\n\n\tfor (i = 0; text[i] != '\\0' && lines < line_no; i++)\n\t\tif (text[i] == '\\n')\n\t\t\tlines++;\n\treturn text+i;\n}\n\nint get_line_length(const char *line)\n{\n\tint res = 0;\n\twhile (*line != '\\0' && *line != '\\n') {\n\t\tline++;\n\t\tres++;\n\t}\n\treturn res;\n}\n\n/* print all lines to the window. */\nvoid fill_window(WINDOW *win, const char *text)\n{\n\tint x, y;\n\tint total_lines = get_line_no(text);\n\tint i;\n\n\tgetmaxyx(win, y, x);\n\t/* do not go over end of line */\n\ttotal_lines = min(total_lines, y);\n\tfor (i = 0; i < total_lines; i++) {\n\t\tchar tmp[x+10];\n\t\tconst char *line = get_line(text, i);\n\t\tint len = get_line_length(line);\n\t\tstrncpy(tmp, line, min(len, x));\n\t\ttmp[len] = '\\0';\n\t\tmvwprintw(win, i, 0, \"%s\", tmp);\n\t}\n}\n\n/* get the message, and buttons.\n * each button must be a char*\n * return the selected button\n *\n * this dialog is used for 2 different things:\n * 1) show a text box, no buttons.\n * 2) show a dialog, with horizontal buttons\n */\nint btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...)\n{\n\tva_list ap;\n\tchar *btn;\n\tint btns_width = 0;\n\tint msg_lines = 0;\n\tint msg_width = 0;\n\tint total_width;\n\tint win_rows = 0;\n\tWINDOW *win;\n\tWINDOW *msg_win;\n\tWINDOW *menu_win;\n\tMENU *menu;\n\tITEM *btns[btn_num+1];\n\tint i, x, y;\n\tint res = -1;\n\n\n\tva_start(ap, btn_num);\n\tfor (i = 0; i < btn_num; i++) {\n\t\tbtn = va_arg(ap, char *);\n\t\tbtns[i] = new_item(btn, \"\");\n\t\tbtns_width += strlen(btn)+1;\n\t}\n\tva_end(ap);\n\tbtns[btn_num] = NULL;\n\n\t/* find the widest line of msg: */\n\tmsg_lines = get_line_no(msg);\n\tfor (i = 0; i < msg_lines; i++) {\n\t\tconst char *line = get_line(msg, i);\n\t\tint len = get_line_length(line);\n\t\tif (msg_width < len)\n\t\t\tmsg_width = len;\n\t}\n\n\ttotal_width = max(msg_width, btns_width);\n\t/* place dialog in middle of screen */\n\ty = (getmaxy(stdscr)-(msg_lines+4))/2;\n\tx = (getmaxx(stdscr)-(total_width+4))/2;\n\n\n\t/* create the windows */\n\tif (btn_num > 0)\n\t\twin_rows = msg_lines+4;\n\telse\n\t\twin_rows = msg_lines+2;\n\n\twin = newwin(win_rows, total_width+4, y, x);\n\tkeypad(win, TRUE);\n\tmenu_win = derwin(win, 1, btns_width, win_rows-2,\n\t\t\t1+(total_width+2-btns_width)/2);\n\tmenu = new_menu(btns);\n\tmsg_win = derwin(win, win_rows-2, msg_width, 1,\n\t\t\t1+(total_width+2-msg_width)/2);\n\n\tset_menu_fore(menu, attributes[DIALOG_MENU_FORE]);\n\tset_menu_back(menu, attributes[DIALOG_MENU_BACK]);\n\n\t(void) wattrset(win, attributes[DIALOG_BOX]);\n\tbox(win, 0, 0);\n\n\t/* print message */\n\t(void) wattrset(msg_win, attributes[DIALOG_TEXT]);\n\tfill_window(msg_win, msg);\n\n\tset_menu_win(menu, win);\n\tset_menu_sub(menu, menu_win);\n\tset_menu_format(menu, 1, btn_num);\n\tmenu_opts_off(menu, O_SHOWDESC);\n\tmenu_opts_off(menu, O_SHOWMATCH);\n\tmenu_opts_on(menu, O_ONEVALUE);\n\tmenu_opts_on(menu, O_NONCYCLIC);\n\tset_menu_mark(menu, \"\");\n\tpost_menu(menu);\n\n\n\ttouchwin(win);\n\trefresh_all_windows(main_window);\n\twhile ((res = wgetch(win))) {\n\t\tswitch (res) {\n\t\tcase KEY_LEFT:\n\t\t\tmenu_driver(menu, REQ_LEFT_ITEM);\n\t\t\tbreak;\n\t\tcase KEY_RIGHT:\n\t\t\tmenu_driver(menu, REQ_RIGHT_ITEM);\n\t\t\tbreak;\n\t\tcase 10: /* ENTER */\n\t\tcase 27: /* ESCAPE */\n\t\tcase ' ':\n\t\tcase KEY_F(F_BACK):\n\t\tcase KEY_F(F_EXIT):\n\t\t\tbreak;\n\t\t}\n\t\ttouchwin(win);\n\t\trefresh_all_windows(main_window);\n\n\t\tif (res == 10 || res == ' ') {\n\t\t\tres = item_index(current_item(menu));\n\t\t\tbreak;\n\t\t} else if (res == 27 || res == KEY_F(F_BACK) ||\n\t\t\t\tres == KEY_F(F_EXIT)) {\n\t\t\tres = KEY_EXIT;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tunpost_menu(menu);\n\tfree_menu(menu);\n\tfor (i = 0; i < btn_num; i++)\n\t\tfree_item(btns[i]);\n\n\tdelwin(win);\n\treturn res;\n}\n\nint dialog_inputbox(WINDOW *main_window,\n\t\tconst char *title, const char *prompt,\n\t\tconst char *init, char **resultp, int *result_len)\n{\n\tint prompt_lines = 0;\n\tint prompt_width = 0;\n\tWINDOW *win;\n\tWINDOW *prompt_win;\n\tWINDOW *form_win;\n\tPANEL *panel;\n\tint i, x, y, lines, columns, win_lines, win_cols;\n\tint res = -1;\n\tint cursor_position = strlen(init);\n\tint cursor_form_win;\n\tchar *result = *resultp;\n\n\tgetmaxyx(stdscr, lines, columns);\n\n\tif (strlen(init)+1 > *result_len) {\n\t\t*result_len = strlen(init)+1;\n\t\t*resultp = result = xrealloc(result, *result_len);\n\t}\n\n\t/* find the widest line of msg: */\n\tprompt_lines = get_line_no(prompt);\n\tfor (i = 0; i < prompt_lines; i++) {\n\t\tconst char *line = get_line(prompt, i);\n\t\tint len = get_line_length(line);\n\t\tprompt_width = max(prompt_width, len);\n\t}\n\n\tif (title)\n\t\tprompt_width = max(prompt_width, strlen(title));\n\n\twin_lines = min(prompt_lines+6, lines-2);\n\twin_cols = min(prompt_width+7, columns-2);\n\tprompt_lines = max(win_lines-6, 0);\n\tprompt_width = max(win_cols-7, 0);\n\n\t/* place dialog in middle of screen */\n\ty = (lines-win_lines)/2;\n\tx = (columns-win_cols)/2;\n\n\tstrncpy(result, init, *result_len);\n\n\t/* create the windows */\n\twin = newwin(win_lines, win_cols, y, x);\n\tprompt_win = derwin(win, prompt_lines+1, prompt_width, 2, 2);\n\tform_win = derwin(win, 1, prompt_width, prompt_lines+3, 2);\n\tkeypad(form_win, TRUE);\n\n\t(void) wattrset(form_win, attributes[INPUT_FIELD]);\n\n\t(void) wattrset(win, attributes[INPUT_BOX]);\n\tbox(win, 0, 0);\n\t(void) wattrset(win, attributes[INPUT_HEADING]);\n\tif (title)\n\t\tmvwprintw(win, 0, 3, \"%s\", title);\n\n\t/* print message */\n\t(void) wattrset(prompt_win, attributes[INPUT_TEXT]);\n\tfill_window(prompt_win, prompt);\n\n\tmvwprintw(form_win, 0, 0, \"%*s\", prompt_width, \" \");\n\tcursor_form_win = min(cursor_position, prompt_width-1);\n\tmvwprintw(form_win, 0, 0, \"%s\",\n\t\t  result + cursor_position-cursor_form_win);\n\n\t/* create panels */\n\tpanel = new_panel(win);\n\n\t/* show the cursor */\n\tcurs_set(1);\n\n\ttouchwin(win);\n\trefresh_all_windows(main_window);\n\twhile ((res = wgetch(form_win))) {\n\t\tint len = strlen(result);\n\t\tswitch (res) {\n\t\tcase 10: /* ENTER */\n\t\tcase 27: /* ESCAPE */\n\t\tcase KEY_F(F_HELP):\n\t\tcase KEY_F(F_EXIT):\n\t\tcase KEY_F(F_BACK):\n\t\t\tbreak;\n\t\tcase 127:\n\t\tcase KEY_BACKSPACE:\n\t\t\tif (cursor_position > 0) {\n\t\t\t\tmemmove(&result[cursor_position-1],\n\t\t\t\t\t\t&result[cursor_position],\n\t\t\t\t\t\tlen-cursor_position+1);\n\t\t\t\tcursor_position--;\n\t\t\t\tcursor_form_win--;\n\t\t\t\tlen--;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase KEY_DC:\n\t\t\tif (cursor_position >= 0 && cursor_position < len) {\n\t\t\t\tmemmove(&result[cursor_position],\n\t\t\t\t\t\t&result[cursor_position+1],\n\t\t\t\t\t\tlen-cursor_position+1);\n\t\t\t\tlen--;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase KEY_UP:\n\t\tcase KEY_RIGHT:\n\t\t\tif (cursor_position < len) {\n\t\t\t\tcursor_position++;\n\t\t\t\tcursor_form_win++;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase KEY_DOWN:\n\t\tcase KEY_LEFT:\n\t\t\tif (cursor_position > 0) {\n\t\t\t\tcursor_position--;\n\t\t\t\tcursor_form_win--;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase KEY_HOME:\n\t\t\tcursor_position = 0;\n\t\t\tcursor_form_win = 0;\n\t\t\tbreak;\n\t\tcase KEY_END:\n\t\t\tcursor_position = len;\n\t\t\tcursor_form_win = min(cursor_position, prompt_width-1);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tif ((isgraph(res) || isspace(res))) {\n\t\t\t\t/* one for new char, one for '\\0' */\n\t\t\t\tif (len+2 > *result_len) {\n\t\t\t\t\t*result_len = len+2;\n\t\t\t\t\t*resultp = result = realloc(result,\n\t\t\t\t\t\t\t\t*result_len);\n\t\t\t\t}\n\t\t\t\t/* insert the char at the proper position */\n\t\t\t\tmemmove(&result[cursor_position+1],\n\t\t\t\t\t\t&result[cursor_position],\n\t\t\t\t\t\tlen-cursor_position+1);\n\t\t\t\tresult[cursor_position] = res;\n\t\t\t\tcursor_position++;\n\t\t\t\tcursor_form_win++;\n\t\t\t\tlen++;\n\t\t\t} else {\n\t\t\t\tmvprintw(0, 0, \"unknown key: %d\\n\", res);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tif (cursor_form_win < 0)\n\t\t\tcursor_form_win = 0;\n\t\telse if (cursor_form_win > prompt_width-1)\n\t\t\tcursor_form_win = prompt_width-1;\n\n\t\twmove(form_win, 0, 0);\n\t\twclrtoeol(form_win);\n\t\tmvwprintw(form_win, 0, 0, \"%*s\", prompt_width, \" \");\n\t\tmvwprintw(form_win, 0, 0, \"%s\",\n\t\t\tresult + cursor_position-cursor_form_win);\n\t\twmove(form_win, 0, cursor_form_win);\n\t\ttouchwin(win);\n\t\trefresh_all_windows(main_window);\n\n\t\tif (res == 10) {\n\t\t\tres = 0;\n\t\t\tbreak;\n\t\t} else if (res == 27 || res == KEY_F(F_BACK) ||\n\t\t\t\tres == KEY_F(F_EXIT)) {\n\t\t\tres = KEY_EXIT;\n\t\t\tbreak;\n\t\t} else if (res == KEY_F(F_HELP)) {\n\t\t\tres = 1;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* hide the cursor */\n\tcurs_set(0);\n\tdel_panel(panel);\n\tdelwin(prompt_win);\n\tdelwin(form_win);\n\tdelwin(win);\n\treturn res;\n}\n\n/* refresh all windows in the correct order */\nvoid refresh_all_windows(WINDOW *main_window)\n{\n\tupdate_panels();\n\ttouchwin(main_window);\n\trefresh();\n}\n\n/* layman's scrollable window... */\nvoid show_scroll_win(WINDOW *main_window,\n\t\tconst char *title,\n\t\tconst char *text)\n{\n\tint res;\n\tint total_lines = get_line_no(text);\n\tint x, y, lines, columns;\n\tint start_x = 0, start_y = 0;\n\tint text_lines = 0, text_cols = 0;\n\tint total_cols = 0;\n\tint win_cols = 0;\n\tint win_lines = 0;\n\tint i = 0;\n\tWINDOW *win;\n\tWINDOW *pad;\n\tPANEL *panel;\n\n\tgetmaxyx(stdscr, lines, columns);\n\n\t/* find the widest line of msg: */\n\ttotal_lines = get_line_no(text);\n\tfor (i = 0; i < total_lines; i++) {\n\t\tconst char *line = get_line(text, i);\n\t\tint len = get_line_length(line);\n\t\ttotal_cols = max(total_cols, len+2);\n\t}\n\n\t/* create the pad */\n\tpad = newpad(total_lines+10, total_cols+10);\n\t(void) wattrset(pad, attributes[SCROLLWIN_TEXT]);\n\tfill_window(pad, text);\n\n\twin_lines = min(total_lines+4, lines-2);\n\twin_cols = min(total_cols+2, columns-2);\n\ttext_lines = max(win_lines-4, 0);\n\ttext_cols = max(win_cols-2, 0);\n\n\t/* place window in middle of screen */\n\ty = (lines-win_lines)/2;\n\tx = (columns-win_cols)/2;\n\n\twin = newwin(win_lines, win_cols, y, x);\n\tkeypad(win, TRUE);\n\t/* show the help in the help window, and show the help panel */\n\t(void) wattrset(win, attributes[SCROLLWIN_BOX]);\n\tbox(win, 0, 0);\n\t(void) wattrset(win, attributes[SCROLLWIN_HEADING]);\n\tmvwprintw(win, 0, 3, \" %s \", title);\n\tpanel = new_panel(win);\n\n\t/* handle scrolling */\n\tdo {\n\n\t\tcopywin(pad, win, start_y, start_x, 2, 2, text_lines,\n\t\t\t\ttext_cols, 0);\n\t\tprint_in_middle(win,\n\t\t\t\ttext_lines+2,\n\t\t\t\t0,\n\t\t\t\ttext_cols,\n\t\t\t\t\"<OK>\",\n\t\t\t\tattributes[DIALOG_MENU_FORE]);\n\t\twrefresh(win);\n\n\t\tres = wgetch(win);\n\t\tswitch (res) {\n\t\tcase KEY_NPAGE:\n\t\tcase ' ':\n\t\tcase 'd':\n\t\t\tstart_y += text_lines-2;\n\t\t\tbreak;\n\t\tcase KEY_PPAGE:\n\t\tcase 'u':\n\t\t\tstart_y -= text_lines+2;\n\t\t\tbreak;\n\t\tcase KEY_HOME:\n\t\t\tstart_y = 0;\n\t\t\tbreak;\n\t\tcase KEY_END:\n\t\t\tstart_y = total_lines-text_lines;\n\t\t\tbreak;\n\t\tcase KEY_DOWN:\n\t\tcase 'j':\n\t\t\tstart_y++;\n\t\t\tbreak;\n\t\tcase KEY_UP:\n\t\tcase 'k':\n\t\t\tstart_y--;\n\t\t\tbreak;\n\t\tcase KEY_LEFT:\n\t\tcase 'h':\n\t\t\tstart_x--;\n\t\t\tbreak;\n\t\tcase KEY_RIGHT:\n\t\tcase 'l':\n\t\t\tstart_x++;\n\t\t\tbreak;\n\t\t}\n\t\tif (res == 10 || res == 27 || res == 'q' ||\n\t\t\tres == KEY_F(F_HELP) || res == KEY_F(F_BACK) ||\n\t\t\tres == KEY_F(F_EXIT))\n\t\t\tbreak;\n\t\tif (start_y < 0)\n\t\t\tstart_y = 0;\n\t\tif (start_y >= total_lines-text_lines)\n\t\t\tstart_y = total_lines-text_lines;\n\t\tif (start_x < 0)\n\t\t\tstart_x = 0;\n\t\tif (start_x >= total_cols-text_cols)\n\t\t\tstart_x = total_cols-text_cols;\n\t} while (res);\n\n\tdel_panel(panel);\n\tdelwin(win);\n\trefresh_all_windows(main_window);\n}\n"
  },
  {
    "path": "support/kconfig/nconf.h",
    "content": "/*\n * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com?\n * Released under the terms of the GNU GPL v2.0.\n *\n * Derived from menuconfig.\n *\n */\n\n#include <ctype.h>\n#include <errno.h>\n#include <fcntl.h>\n#include <limits.h>\n#include <stdarg.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <locale.h>\n#include <ncurses.h>\n#include <menu.h>\n#include <panel.h>\n#include <form.h>\n\n#include <stdio.h>\n#include <time.h>\n#include <sys/time.h>\n\n#define max(a, b) ({\\\n\t\ttypeof(a) _a = a;\\\n\t\ttypeof(b) _b = b;\\\n\t\t_a > _b ? _a : _b; })\n\n#define min(a, b) ({\\\n\t\ttypeof(a) _a = a;\\\n\t\ttypeof(b) _b = b;\\\n\t\t_a < _b ? _a : _b; })\n\ntypedef enum {\n\tNORMAL = 1,\n\tMAIN_HEADING,\n\tMAIN_MENU_BOX,\n\tMAIN_MENU_FORE,\n\tMAIN_MENU_BACK,\n\tMAIN_MENU_GREY,\n\tMAIN_MENU_HEADING,\n\tSCROLLWIN_TEXT,\n\tSCROLLWIN_HEADING,\n\tSCROLLWIN_BOX,\n\tDIALOG_TEXT,\n\tDIALOG_MENU_FORE,\n\tDIALOG_MENU_BACK,\n\tDIALOG_BOX,\n\tINPUT_BOX,\n\tINPUT_HEADING,\n\tINPUT_TEXT,\n\tINPUT_FIELD,\n\tFUNCTION_TEXT,\n\tFUNCTION_HIGHLIGHT,\n\tATTR_MAX\n} attributes_t;\nextern attributes_t attributes[];\n\ntypedef enum {\n\tF_HELP = 1,\n\tF_SYMBOL = 2,\n\tF_INSTS = 3,\n\tF_CONF = 4,\n\tF_BACK = 5,\n\tF_SAVE = 6,\n\tF_LOAD = 7,\n\tF_SEARCH = 8,\n\tF_EXIT = 9,\n} function_key;\n\nvoid set_colors(void);\n\n/* this changes the windows attributes !!! */\nvoid print_in_middle(WINDOW *win,\n\t\tint starty,\n\t\tint startx,\n\t\tint width,\n\t\tconst char *string,\n\t\tchtype color);\nint get_line_length(const char *line);\nint get_line_no(const char *text);\nconst char *get_line(const char *text, int line_no);\nvoid fill_window(WINDOW *win, const char *text);\nint btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...);\nint dialog_inputbox(WINDOW *main_window,\n\t\tconst char *title, const char *prompt,\n\t\tconst char *init, char **resultp, int *result_len);\nvoid refresh_all_windows(WINDOW *main_window);\nvoid show_scroll_win(WINDOW *main_window,\n\t\tconst char *title,\n\t\tconst char *text);\n"
  },
  {
    "path": "support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch",
    "content": "---\n confdata.c          |    4 ++--\n gconf.glade         |    2 +-\n mconf.c             |    4 ++--\n zconf.tab.c_shipped |    2 +-\n zconf.y             |    2 +-\n 5 files changed, 7 insertions(+), 7 deletions(-)\n\nIndex: kconfig/gconf.glade\n===================================================================\n--- kconfig.orig/gconf.glade\n+++ kconfig/gconf.glade\n@@ -4,7 +4,7 @@\n \n <widget class=\"GtkWindow\" id=\"window1\">\n   <property name=\"visible\">True</property>\n-  <property name=\"title\" translatable=\"yes\">Gtk Kernel Configurator</property>\n+  <property name=\"title\" translatable=\"yes\">Gtk Buildroot Configurator</property>\n   <property name=\"type\">GTK_WINDOW_TOPLEVEL</property>\n   <property name=\"window_position\">GTK_WIN_POS_NONE</property>\n   <property name=\"modal\">False</property>\nIndex: kconfig/mconf.c\n===================================================================\n--- kconfig.orig/mconf.c\n+++ kconfig/mconf.c\n@@ -176,9 +176,9 @@ menu_instructions[] = N_(\n \t\"Arrow keys navigate the menu.  \"\n \t\"<Enter> selects submenus ---> (or empty submenus ----).  \"\n \t\"Highlighted letters are hotkeys.  \"\n-\t\"Pressing <Y> includes, <N> excludes, <M> modularizes features.  \"\n+\t\"Pressing <Y> selects a feature, while <N> excludes a feature.  \"\n \t\"Press <Esc><Esc> to exit, <?> for Help, </> for Search.  \"\n-\t\"Legend: [*] built-in  [ ] excluded  <M> module  < > module capable\"),\n+\t\"Legend: [*] feature is selected  [ ] feature is excluded\"),\n radiolist_instructions[] = N_(\n \t\"Use the arrow keys to navigate this window or \"\n \t\"press the hotkey of the item you wish to select \"\n@@ -962,7 +962,7 @@ static int handle_exit(void)\n \tif (conf_get_changed())\n \t\tres = dialog_yesno(NULL,\n \t\t\t\t   _(\"Do you wish to save your new configuration?\\n\"\n-\t\t\t\t     \"(Press <ESC><ESC> to continue kernel configuration.)\"),\n+\t\t\t\t     \"(Press <ESC><ESC> to continue Buildroot configuration.)\"),\n \t\t\t\t   6, 60);\n \telse\n \t\tres = -1;\nIndex: kconfig/zconf.tab.c_shipped\n===================================================================\n--- kconfig.orig/zconf.tab.c_shipped\n+++ kconfig/zconf.tab.c_shipped\n@@ -1515,7 +1515,7 @@ yyreduce:\n \t * later regardless of whether it comes from the 'prompt' in\n \t * mainmenu_stmt or here\n \t */\n-\tmenu_add_prompt(P_MENU, xstrdup(\"Linux Kernel Configuration\"), NULL);\n+\tmenu_add_prompt(P_MENU, xstrdup(\"Buildroot Configuration\"), NULL);\n }\n \n     break;\nIndex: kconfig/zconf.y\n===================================================================\n--- kconfig.orig/zconf.y\n+++ kconfig/zconf.y\n@@ -127,7 +127,7 @@ no_mainmenu_stmt: /* empty */\n \t * later regardless of whether it comes from the 'prompt' in\n \t * mainmenu_stmt or here\n \t */\n-\tmenu_add_prompt(P_MENU, xstrdup(\"Linux Kernel Configuration\"), NULL);\n+\tmenu_add_prompt(P_MENU, xstrdup(\"Buildroot Configuration\"), NULL);\n };\n \n \nIndex: kconfig/confdata.c\n===================================================================\n--- kconfig.orig/confdata.c\n+++ kconfig/confdata.c\n@@ -30,7 +30,7 @@ static void conf_message(const char *fmt\n static const char *conf_filename;\n static int conf_lineno, conf_warnings;\n \n-const char conf_defname[] = \"arch/$ARCH/defconfig\";\n+const char conf_defname[] = \".defconfig\";\n \n static void conf_warning(const char *fmt, ...)\n {\n@@ -69,7 +69,7 @@ static void conf_message(const char *fmt\n \n const char *conf_get_configname(void)\n {\n-\tchar *name = getenv(\"KCONFIG_CONFIG\");\n+\tchar *name = getenv(\"BR2_CONFIG\");\n \n \treturn name ? name : \".config\";\n }\nIndex: kconfig/qconf.cc\n===================================================================\n--- kconfig.orig/qconf.cc\n+++ kconfig/qconf.cc\n@@ -55,7 +55,7 @@ static inline QString qgettext(const QSt\n }\n \n ConfigSettings::ConfigSettings()\n-\t: QSettings(\"kernel.org\", \"qconf\")\n+\t: QSettings(\"buildroot.org\", \"qconf\")\n {\n }\n \n"
  },
  {
    "path": "support/kconfig/patches/06-br-build-system-integration.patch",
    "content": "Index: kconfig/Makefile\n===================================================================\n--- kconfig.orig/Makefile\n+++ kconfig/Makefile\n@@ -205,7 +205,35 @@ qconf-cxxobjs\t:= qconf.o\n qconf-objs\t:= zconf.tab.o\n gconf-objs\t:= gconf.o zconf.tab.o\n \n-hostprogs-y := conf nconf mconf kxgettext qconf gconf\n+hostprogs-y := conf\n+\n+ifeq ($(MAKECMDGOALS),nconf)\n+\thostprogs-y += nconf\n+endif\n+\n+ifeq ($(MAKECMDGOALS),mconf)\n+\thostprogs-y += mconf\n+endif\n+\n+ifeq ($(MAKECMDGOALS),update-po-config)\n+\thostprogs-y += kxgettext\n+endif\n+\n+ifeq ($(MAKECMDGOALS),qconf)\n+\tqconf-target := 1\n+endif\n+\n+ifeq ($(MAKECMDGOALS),gconf)\n+\tgconf-target := 1\n+endif\n+\n+ifeq ($(qconf-target),1)\n+\thostprogs-y += qconf\n+endif\n+\n+ifeq ($(gconf-target),1)\n+\thostprogs-y += gconf\n+endif\n \n targets\t\t+= zconf.lex.c\n clean-files\t:= qconf.moc .tmp_qtcheck .tmp_gtkcheck\n@@ -243,7 +271,7 @@ HOSTLOADLIBES_nconf\t= $(shell \\\n \t\t\t\t|| echo \"-lmenu -lpanel -lncurses\"  )\n $(obj)/qconf.o: $(obj)/.tmp_qtcheck\n \n-ifeq ($(MAKECMDGOALS),xconfig)\n+ifeq ($(MAKECMDGOALS),qconf)\n $(obj)/.tmp_qtcheck: $(src)/Makefile\n -include $(obj)/.tmp_qtcheck\n \n@@ -270,9 +298,8 @@ $(obj)/.tmp_qtcheck:\n \techo \"KC_QT_MOC=$$moc\" >> $@\n endif\n \n+ifeq ($(MAKECMDGOALS),gconf)\n $(obj)/gconf.o: $(obj)/.tmp_gtkcheck\n-\n-ifeq ($(MAKECMDGOALS),gconfig)\n -include $(obj)/.tmp_gtkcheck\n \n # GTK+ needs some extra effort, too...\n@@ -300,11 +327,8 @@ $(obj)/zconf.tab.o: $(obj)/zconf.lex.c\n \n $(obj)/qconf.o: $(obj)/qconf.moc\n \n-quiet_cmd_moc = MOC     $@\n-      cmd_moc = $(KC_QT_MOC) -i $< -o $@\n-\n $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck\n-\t$(call cmd,moc)\n+\t$(KC_QT_MOC) -i $< -o $@\n \n # Extract gconf menu items for i18n support\n $(obj)/gconf.glade.h: $(obj)/gconf.glade\n"
  },
  {
    "path": "support/kconfig/patches/10-br-build-system.patch",
    "content": "---\n Makefile.br |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++++\n foo.h       |   12 ++++++++++++\n 2 files changed, 65 insertions(+)\n\nIndex: kconfig/Makefile.br\n===================================================================\n--- /dev/null\n+++ kconfig/Makefile.br\n@@ -0,0 +1,53 @@\n+src := .\n+top_srcdir=../../\n+top_builddir=../../\n+srctree := .\n+obj ?= .\n+\n+include Makefile\n+#HOSTCFLAGS+=-Dinline=\"\" -include foo.h\n+-include $(obj)/.depend\n+$(obj)/.depend: $(wildcard *.h *.c)\n+\t$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || :\n+\n+__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m))\n+host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m)))\n+host-cmulti := $(foreach m,$(__hostprogs),\\\n+           $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m))))\n+host-cxxmulti := $(foreach m,$(__hostprogs),\\\n+           $(if $($(m)-cxxobjs),$(m),$(if $($(m)-objs),)))\n+host-cobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-objs))))\n+host-cxxobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs))))\n+\n+HOST_EXTRACFLAGS += -I$(obj) -DCONFIG_=\\\"\\\"\n+\n+$(host-csingle): %: %.c\n+\t$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@\n+\n+$(host-cmulti): %: $(host-cobjs) $(host-cshlib)\n+\t$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@\n+\n+$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib)\n+\t$(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@\n+\n+$(obj)/%.o: %.c\n+\t$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@\n+\n+$(obj)/%.o: $(obj)/%.c\n+\t$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@\n+\n+$(obj)/%.o: %.cc\n+\t$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@\n+\n+$(obj)/%:: $(src)/%_shipped\n+\t$(Q)cat $< > $@\n+\n+clean:\n+\t$(Q)rm -f $(addprefix $(obj)/,$(clean-files))\n+distclean: clean\n+\t$(Q)rm -f $(addprefix $(obj)/,$(lxdialog) $(conf-objs) $(mconf-objs) $(kxgettext-objs) \\\n+\t\t$(hostprogs-y) $(qconf-cxxobjs) $(qconf-objs) $(gconf-objs) \\\n+\t\tmconf .depend)\n+\n+FORCE:\n+.PHONY: FORCE clean distclean\nIndex: kconfig/foo.h\n===================================================================\n--- /dev/null\n+++ kconfig/foo.h\n@@ -0,0 +1,12 @@\n+#ifndef __KCONFIG_FOO_H\n+#define __KCONFIG_FOO_H\n+\n+#ifndef __APPLE__\n+#include <features.h>\n+#endif\n+#include <limits.h>\n+\n+#ifndef PATH_MAX\n+#define PATH_MAX 1024\n+#endif\n+#endif /* __KCONFIG_FOO_H */\n"
  },
  {
    "path": "support/kconfig/patches/11-use-mktemp-for-lxdialog.patch",
    "content": "---\n lxdialog/check-lxdialog.sh |    2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\nIndex: kconfig/lxdialog/check-lxdialog.sh\n===================================================================\n--- kconfig.orig/lxdialog/check-lxdialog.sh\n+++ kconfig/lxdialog/check-lxdialog.sh\n@@ -41,7 +41,7 @@ ccflags()\n }\n \n # Temp file, try to clean up after us\n-tmp=.lxdialog.tmp\n+tmp=$(mktemp)\n trap \"rm -f $tmp\" 0 1 2 3 15\n \n # Check if we can link to ncurses\n"
  },
  {
    "path": "support/kconfig/patches/12-fix-glade-file-path.patch",
    "content": "---\n gconf.c |    2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\nIndex: kconfig/gconf.c\n===================================================================\n--- kconfig.orig/gconf.c\n+++ kconfig/gconf.c\n@@ -1462,7 +1462,7 @@ int main(int ac, char *av[])\n \t/* Determine GUI path */\n \tenv = getenv(SRCTREE);\n \tif (env)\n-\t\tglade_file = g_strconcat(env, \"/scripts/kconfig/gconf.glade\", NULL);\n+\t\tglade_file = g_strconcat(env, \"/support/kconfig/gconf.glade\", NULL);\n \telse if (av[0][0] == '/')\n \t\tglade_file = g_strconcat(av[0], \".glade\", NULL);\n \telse\n"
  },
  {
    "path": "support/kconfig/patches/14-support-out-of-tree-config.patch",
    "content": "---\n conf.c     |    1 \n confdata.c |   62 ++++++++++++++++++++++++++++++++++++++++++++++---------------\n util.c     |   16 +++++++++++++--\n 3 files changed, 61 insertions(+), 18 deletions(-)\n\nIndex: kconfig/conf.c\n===================================================================\n--- kconfig.orig/conf.c\n+++ kconfig/conf.c\n@@ -565,7 +565,6 @@ int main(int ac, char **av)\n \t}\n \tname = av[optind];\n \tconf_parse(name);\n-\t//zconfdump(stdout);\n \tif (sync_kconfig) {\n \t\tname = conf_get_configname();\n \t\tif (stat(name, &tmpstat)) {\nIndex: kconfig/confdata.c\n===================================================================\n--- kconfig.orig/confdata.c\n+++ kconfig/confdata.c\n@@ -13,6 +13,7 @@\n #include <string.h>\n #include <time.h>\n #include <unistd.h>\n+#include <libgen.h>\n \n #include \"lkc.h\"\n \n@@ -76,9 +77,7 @@ const char *conf_get_configname(void)\n \n const char *conf_get_autoconfig_name(void)\n {\n-\tchar *name = getenv(\"KCONFIG_AUTOCONFIG\");\n-\n-\treturn name ? name : \"include/config/auto.conf\";\n+\treturn getenv(\"KCONFIG_AUTOCONFIG\");\n }\n \n static char *conf_expand_value(const char *in)\n@@ -748,6 +747,9 @@ int conf_write(const char *name)\n \tchar dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1];\n \tchar *env;\n \n+\tif (!name)\n+\t\tname = conf_get_configname();\n+\n \tdirname[0] = 0;\n \tif (name && name[0]) {\n \t\tstruct stat st;\n@@ -842,6 +844,7 @@ static int conf_split_config(void)\n {\n \tconst char *name;\n \tchar path[PATH_MAX+1];\n+\tchar *opwd, *dir, *_name;\n \tchar *s, *d, c;\n \tstruct symbol *sym;\n \tstruct stat sb;\n@@ -851,8 +854,20 @@ static int conf_split_config(void)\n \tconf_read_simple(name, S_DEF_AUTO);\n \tsym_calc_value(modules_sym);\n \n-\tif (chdir(\"include/config\"))\n-\t\treturn 1;\n+\topwd = malloc(256);\n+\t_name = strdup(name);\n+\tif (opwd == NULL || _name == NULL)\n+ \t\treturn 1;\n+\topwd = getcwd(opwd, 256);\n+\tdir = dirname(_name);\n+\tif (dir == NULL) {\n+\t\tres = 1;\n+\t\tgoto err;\n+\t}\n+\tif (chdir(dir)) {\n+\t\tres = 1;\n+\t\tgoto err;\n+\t}\n \n \tres = 0;\n \tfor_all_symbols(i, sym) {\n@@ -945,9 +960,11 @@ static int conf_split_config(void)\n \t\tclose(fd);\n \t}\n out:\n-\tif (chdir(\"../..\"))\n-\t\treturn 1;\n-\n+\tif (chdir(opwd))\n+\t\tres = 1;\n+err:\n+\tfree(opwd);\n+\tfree(_name);\n \treturn res;\n }\n \n@@ -957,25 +974,38 @@ int conf_write_autoconf(void)\n \tconst char *name;\n \tFILE *out, *tristate, *out_h;\n \tint i;\n+\tchar dir[PATH_MAX+1], buf[PATH_MAX+1];\n+\tchar *s;\n+\n+\tstrcpy(dir, conf_get_configname());\n+\ts = strrchr(dir, '/');\n+\tif (s)\n+\t\ts[1] = 0;\n+\telse\n+\t\tdir[0] = 0;\n \n \tsym_clear_all_valid();\n \n-\tfile_write_dep(\"include/config/auto.conf.cmd\");\n+\tsprintf(buf, \"%s.config.cmd\", dir);\n+\tfile_write_dep(buf);\n \n \tif (conf_split_config())\n \t\treturn 1;\n \n-\tout = fopen(\".tmpconfig\", \"w\");\n+\tsprintf(buf, \"%s.tmpconfig\", dir);\n+\tout = fopen(buf, \"w\");\n \tif (!out)\n \t\treturn 1;\n \n-\ttristate = fopen(\".tmpconfig_tristate\", \"w\");\n+\tsprintf(buf, \"%s.tmpconfig_tristate\", dir);\n+\ttristate = fopen(buf, \"w\");\n \tif (!tristate) {\n \t\tfclose(out);\n \t\treturn 1;\n \t}\n \n-\tout_h = fopen(\".tmpconfig.h\", \"w\");\n+\tsprintf(buf, \"%s.tmpconfig.h\", dir);\n+\tout_h = fopen(buf, \"w\");\n \tif (!out_h) {\n \t\tfclose(out);\n \t\tfclose(tristate);\n@@ -1007,19 +1037,22 @@ int conf_write_autoconf(void)\n \tname = getenv(\"KCONFIG_AUTOHEADER\");\n \tif (!name)\n \t\tname = \"include/generated/autoconf.h\";\n-\tif (rename(\".tmpconfig.h\", name))\n+\tsprintf(buf, \"%s.tmpconfig.h\", dir);\n+\tif (rename(buf, name))\n \t\treturn 1;\n \tname = getenv(\"KCONFIG_TRISTATE\");\n \tif (!name)\n \t\tname = \"include/config/tristate.conf\";\n-\tif (rename(\".tmpconfig_tristate\", name))\n+\tsprintf(buf, \"%s.tmpconfig_tristate\", dir);\n+\tif (rename(buf, name))\n \t\treturn 1;\n \tname = conf_get_autoconfig_name();\n \t/*\n \t * This must be the last step, kbuild has a dependency on auto.conf\n \t * and this marks the successful completion of the previous steps.\n \t */\n-\tif (rename(\".tmpconfig\", name))\n+\tsprintf(buf, \"%s.tmpconfig\", dir);\n+\tif (rename(buf, name))\n \t\treturn 1;\n \n \treturn 0;\nIndex: kconfig/util.c\n===================================================================\n--- kconfig.orig/util.c\n+++ kconfig/util.c\n@@ -34,6 +34,8 @@ struct file *file_lookup(const char *nam\n /* write a dependency file as used by kbuild to track dependencies */\n int file_write_dep(const char *name)\n {\n+\tchar *str;\n+\tchar buf[PATH_MAX+1], buf2[PATH_MAX+1], dir[PATH_MAX+1];\n \tstruct symbol *sym, *env_sym;\n \tstruct expr *e;\n \tstruct file *file;\n@@ -41,7 +43,16 @@ int file_write_dep(const char *name)\n \n \tif (!name)\n \t\tname = \".kconfig.d\";\n-\tout = fopen(\"..config.tmp\", \"w\");\n+\n+\tstrcpy(dir, conf_get_configname());\n+\tstr = strrchr(dir, '/');\n+\tif (str)\n+\t\tstr[1] = 0;\n+\telse\n+\t\tdir[0] = 0;\n+\n+\tsprintf(buf, \"%s..config.tmp\", dir);\n+\tout = fopen(buf, \"w\");\n \tif (!out)\n \t\treturn 1;\n \tfprintf(out, \"deps_config := \\\\\\n\");\n@@ -72,7 +83,8 @@ int file_write_dep(const char *name)\n \n \tfprintf(out, \"\\n$(deps_config): ;\\n\");\n \tfclose(out);\n-\trename(\"..config.tmp\", name);\n+\tsprintf(buf2, \"%s%s\", dir, name);\n+\trename(buf, buf2);\n \treturn 0;\n }\n \n"
  },
  {
    "path": "support/kconfig/patches/16-fix-space-to-de-select-options.patch",
    "content": "commit 6faa447282fe90d42e0513af46c13f20b4b327d4\nAuthor: Yann E. MORIN <yann.morin.1998@free.fr>\nDate:   Wed Nov 13 22:45:02 2013 +0100\n\n    support/kconfig: fix 'space' to (de)select options\n    \n    In case a menu has comment without letters/numbers (eg. characters\n    matching the regexp '^[^[:alpha:][:digit:]]+$', for example - or *),\n    hitting space will cycle through those comments, rather than\n    selecting/deselecting the currently-highlighted option.\n    \n    This is the behaviour of hitting any letter/digit: jump to the next\n    option which prompt starts with that letter. The only letters that\n    do not behave as such are 'y' 'm' and 'n'. Prompts that start with\n    one of those three letters are instead matched on the first letter\n    that is not 'y', 'm' or 'n'.\n    \n    Fix that by treating 'space' as we treat y/m/n, ie. as an action key,\n    not as shortcut to jump to  prompt.\n    \n    Signed-off-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n    Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n    Cc: Peter Korsgaard <jacmet@uclibc.org>\n    Cc: Samuel Martin <s.martin49@gmail.com>\n    Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>\n    ---\n    Note: I'll be running this upstream soonish.\n\nIndex: kconfig/lxdialog/menubox.c\n===================================================================\n--- kconfig.orig/lxdialog/menubox.c\n+++ kconfig/lxdialog/menubox.c\n@@ -285,7 +285,7 @@ do_resize:\n \t\tif (key < 256 && isalpha(key))\n \t\t\tkey = tolower(key);\n \n-\t\tif (strchr(\"ynmh\", key))\n+\t\tif (strchr(\"ynmh \", key))\n \t\t\ti = max_choice;\n \t\telse {\n \t\t\tfor (i = choice + 1; i < max_choice; i++) {\n"
  },
  {
    "path": "support/kconfig/patches/17-backport-kecho.patch",
    "content": "This commit added kecho to scripts/Kbuild.include (and doc).\nBackported just Kbuild.include part to Makefile\n\ncommit 5410ecc0def8955ab99810c5626cc7e156991896\nAuthor: Mike Frysinger <vapier@gentoo.org>\nDate:   Thu Nov 6 03:31:34 2008 -0500\n\n    kbuild: introduce $(kecho) convenience echo\n\nIndex: kconfig/Makefile\n===================================================================\n--- kconfig.orig/Makefile\n+++ kconfig/Makefile\n@@ -6,6 +6,12 @@\n PHONY += xconfig gconfig menuconfig config syncconfig update-po-config \\\n \tlocalmodconfig localyesconfig\n \n+# Easy method for doing a status message\n+       kecho := :\n+ quiet_kecho := echo\n+silent_kecho := :\n+kecho := $($(quiet)kecho)\n+\n ifdef KBUILD_KCONFIG\n Kconfig := $(KBUILD_KCONFIG)\n else\n"
  },
  {
    "path": "support/kconfig/patches/18-merge-config.sh-create-temporary-files-in-tmp.patch",
    "content": "commit 0f56304521db42bd2c05867fd78a247104a4ad95\nAuthor: Henrique Marks <henrique.marks@datacom.ind.br>\nDate: Mon, 7 Dec 2015 12:08:45 -0200\n\n    merge_config.sh: create temporary files in /tmp\n\n    Creating temporary files in /tmp (or the path pointed by $TMPDIR) allows the\n    buildroot top directory to be read-only and shareable between multible builds.\n    This follows what other scripts do, e.g. check-kernel-headers.sh.\n\n    Signed-off-by: Henrique Marks <henrique.marks@datacom.ind.br>\n    Signed-off-by: Carlos Santos <casantos@datacom.ind.br>\n    Signed-off-by: Peter Korsgaard <peter@korsgaard.com>\n\nIndex: kconfig/merge_config.sh\n===================================================================\n--- kconfig.orig/merge_config.sh\n+++ kconfig/merge_config.sh\n@@ -100,7 +100,7 @@ fi\n \n MERGE_LIST=$*\n SED_CONFIG_EXP=\"s/^\\(# \\)\\{0,1\\}\\(CONFIG_[a-zA-Z0-9_]*\\)[= ].*/\\2/p\"\n-TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX)\n+TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX)\n \n echo \"Using $INITFILE as base\"\n cat $INITFILE > $TMP_FILE\n"
  },
  {
    "path": "support/kconfig/patches/19-merge_config.sh-add-br2-external-support.patch",
    "content": "commit 28fac3973b3c693c453594b007c08c1e1e5c4af3\nAuthor: Ilya Kuzmich <ilya.kuzmich@gmail.com>\nDate: Tue, 9 Jan 2018 14:37:43 +0300\n\n    merge_config.sh: add br2-external support\n\n    Pass BR2_EXTERNAL value via -e option.\n    This will prevent merge_config.sh from silently eating any symbols defined in\n    external trees on a clean buildroot tree invocation.\n\n    Signed-off-by: Ilya Kuzmich <ilya.kuzmich@gmail.com>\n    Acked-by: \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n    Signed-off-by: Peter Korsgaard <peter@korsgaard.com>\n\nIndex: kconfig/merge_config.sh\n===================================================================\n--- kconfig.orig/merge_config.sh\n+++ kconfig/merge_config.sh\n@@ -33,6 +33,7 @@ usage() {\n \techo \"  -n    use allnoconfig instead of alldefconfig\"\n \techo \"  -r    list redundant entries when merging fragments\"\n \techo \"  -O    dir to put generated output files.  Consider setting \\$KCONFIG_CONFIG instead.\"\n+\techo \"  -e    colon-separated list of br2-external trees to use (optional)\"\n }\n \n RUNMAKE=true\n@@ -71,6 +72,11 @@ while true; do\n \t\tshift 2\n \t\tcontinue\n \t\t;;\n+\t\"-e\")\n+\t\tEXTERNAL_ARG=\"BR2_EXTERNAL=$2\"\n+\t\tshift 2\n+\t\tcontinue\n+\t\t;;\n \t*)\n \t\tbreak\n \t\t;;\n@@ -151,7 +157,7 @@ fi\n # Use the merged file as the starting point for:\n # alldefconfig: Fills in any missing symbols with Kconfig default\n # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set\n-make KCONFIG_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $ALLTARGET\n+make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERNAL_ARG $OUTPUT_ARG $ALLTARGET\n \n \n # Check all specified config values took (might have missed-dependency issues)\n"
  },
  {
    "path": "support/kconfig/patches/20-merge_config.sh-Allow-to-define-config-prefix.patch",
    "content": "Index: kconfig/merge_config.sh\n===================================================================\n--- kconfig.orig/merge_config.sh\n+++ kconfig/merge_config.sh\n@@ -34,12 +34,16 @@ usage() {\n \techo \"  -r    list redundant entries when merging fragments\"\n \techo \"  -O    dir to put generated output files.  Consider setting \\$KCONFIG_CONFIG instead.\"\n \techo \"  -e    colon-separated list of br2-external trees to use (optional)\"\n+\techo\n+\techo \"Used prefix: '$CONFIG_PREFIX'. You can redefine it with \\$CONFIG_\n+\tenvironment variable.\"\n }\n \n RUNMAKE=true\n ALLTARGET=alldefconfig\n WARNREDUN=false\n OUTPUT=.\n+CONFIG_PREFIX=${CONFIG_-CONFIG_}\n \n while true; do\n \tcase $1 in\n@@ -105,7 +109,8 @@ if [ ! -r \"$INITFILE\" ]; then\n fi\n \n MERGE_LIST=$*\n-SED_CONFIG_EXP=\"s/^\\(# \\)\\{0,1\\}\\(CONFIG_[a-zA-Z0-9_]*\\)[= ].*/\\2/p\"\n+SED_CONFIG_EXP=\"s/^\\(# \\)\\{0,1\\}\\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\\)[= ].*/\\2/p\"\n+\n TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX)\n \n echo \"Using $INITFILE as base\"\n"
  },
  {
    "path": "support/kconfig/patches/21-Avoid-false-positive-matches-from-comment-lines.patch",
    "content": "Index: kconfig/merge_config.sh\n===================================================================\n--- kconfig.orig/merge_config.sh\n+++ kconfig/merge_config.sh\n@@ -109,7 +109,8 @@ if [ ! -r \"$INITFILE\" ]; then\n fi\n \n MERGE_LIST=$*\n-SED_CONFIG_EXP=\"s/^\\(# \\)\\{0,1\\}\\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\\)[= ].*/\\2/p\"\n+SED_CONFIG_EXP1=\"s/^\\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\\)=.*/\\1/p\"\n+SED_CONFIG_EXP2=\"s/^# \\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\\) is not set$/\\1/p\"\n \n TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX)\n \n@@ -123,7 +124,7 @@ for MERGE_FILE in $MERGE_LIST ; do\n \t\techo \"The merge file '$MERGE_FILE' does not exist.  Exit.\" >&2\n \t\texit 1\n \tfi\n-\tCFG_LIST=$(sed -n \"$SED_CONFIG_EXP\" $MERGE_FILE)\n+\tCFG_LIST=$(sed -n -e \"$SED_CONFIG_EXP1\" -e \"$SED_CONFIG_EXP2\" $MERGE_FILE)\n \n \tfor CFG in $CFG_LIST ; do\n \t\tgrep -q -w $CFG $TMP_FILE || continue\n@@ -166,7 +167,7 @@ make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERN\n \n \n # Check all specified config values took (might have missed-dependency issues)\n-for CFG in $(sed -n \"$SED_CONFIG_EXP\" $TMP_FILE); do\n+for CFG in $(sed -n -e \"$SED_CONFIG_EXP1\" -e \"$SED_CONFIG_EXP2\" $TMP_FILE); do\n \n \tREQUESTED_VAL=$(grep -w -e \"$CFG\" $TMP_FILE)\n \tACTUAL_VAL=$(grep -w -e \"$CFG\" \"$KCONFIG_CONFIG\")\n"
  },
  {
    "path": "support/kconfig/patches/series",
    "content": "01-kconfig-kernel-to-buildroot.patch\n06-br-build-system-integration.patch\n10-br-build-system.patch\n11-use-mktemp-for-lxdialog.patch\n12-fix-glade-file-path.patch\n14-support-out-of-tree-config.patch\n16-fix-space-to-de-select-options.patch\n17-backport-kecho.patch\n18-merge-config.sh-create-temporary-files-in-tmp.patch\n19-merge_config.sh-add-br2-external-support.patch\n20-merge_config.sh-Allow-to-define-config-prefix.patch\n21-Avoid-false-positive-matches-from-comment-lines.patch\n"
  },
  {
    "path": "support/kconfig/qconf.cc",
    "content": "/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Copyright (C) 2015 Boris Barbulovski <bbarbulovski@gmail.com>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#include <qglobal.h>\n\n#include <QMainWindow>\n#include <QList>\n#include <qtextbrowser.h>\n#include <QAction>\n#include <QFileDialog>\n#include <QMenu>\n\n#include <qapplication.h>\n#include <qdesktopwidget.h>\n#include <qtoolbar.h>\n#include <qlayout.h>\n#include <qsplitter.h>\n#include <qlineedit.h>\n#include <qlabel.h>\n#include <qpushbutton.h>\n#include <qmenubar.h>\n#include <qmessagebox.h>\n#include <qregexp.h>\n#include <qevent.h>\n\n#include <stdlib.h>\n\n#include \"lkc.h\"\n#include \"qconf.h\"\n\n#include \"qconf.moc\"\n#include \"images.c\"\n\n#ifdef _\n# undef _\n# define _ qgettext\n#endif\n\nstatic QApplication *configApp;\nstatic ConfigSettings *configSettings;\n\nQAction *ConfigMainWindow::saveAction;\n\nstatic inline QString qgettext(const char* str)\n{\n\treturn QString::fromLocal8Bit(gettext(str));\n}\n\nstatic inline QString qgettext(const QString& str)\n{\n\treturn QString::fromLocal8Bit(gettext(str.toLatin1()));\n}\n\nConfigSettings::ConfigSettings()\n\t: QSettings(\"buildroot.org\", \"qconf\")\n{\n}\n\n/**\n * Reads a list of integer values from the application settings.\n */\nQList<int> ConfigSettings::readSizes(const QString& key, bool *ok)\n{\n\tQList<int> result;\n\n\tif (contains(key))\n\t{\n\t\tQStringList entryList = value(key).toStringList();\n\t\tQStringList::Iterator it;\n\n\t\tfor (it = entryList.begin(); it != entryList.end(); ++it)\n\t\t\tresult.push_back((*it).toInt());\n\n\t\t*ok = true;\n\t}\n\telse\n\t\t*ok = false;\n\n\treturn result;\n}\n\n/**\n * Writes a list of integer values to the application settings.\n */\nbool ConfigSettings::writeSizes(const QString& key, const QList<int>& value)\n{\n\tQStringList stringList;\n\tQList<int>::ConstIterator it;\n\n\tfor (it = value.begin(); it != value.end(); ++it)\n\t\tstringList.push_back(QString::number(*it));\n\tsetValue(key, stringList);\n\n\treturn true;\n}\n\n\n/*\n * set the new data\n * TODO check the value\n */\nvoid ConfigItem::okRename(int col)\n{\n}\n\n/*\n * update the displayed of a menu entry\n */\nvoid ConfigItem::updateMenu(void)\n{\n\tConfigList* list;\n\tstruct symbol* sym;\n\tstruct property *prop;\n\tQString prompt;\n\tint type;\n\ttristate expr;\n\n\tlist = listView();\n\tif (goParent) {\n\t\tsetPixmap(promptColIdx, list->menuBackPix);\n\t\tprompt = \"..\";\n\t\tgoto set_prompt;\n\t}\n\n\tsym = menu->sym;\n\tprop = menu->prompt;\n\tprompt = _(menu_get_prompt(menu));\n\n\tif (prop) switch (prop->type) {\n\tcase P_MENU:\n\t\tif (list->mode == singleMode || list->mode == symbolMode) {\n\t\t\t/* a menuconfig entry is displayed differently\n\t\t\t * depending whether it's at the view root or a child.\n\t\t\t */\n\t\t\tif (sym && list->rootEntry == menu)\n\t\t\t\tbreak;\n\t\t\tsetPixmap(promptColIdx, list->menuPix);\n\t\t} else {\n\t\t\tif (sym)\n\t\t\t\tbreak;\n\t\t\tsetPixmap(promptColIdx, QIcon());\n\t\t}\n\t\tgoto set_prompt;\n\tcase P_COMMENT:\n\t\tsetPixmap(promptColIdx, QIcon());\n\t\tgoto set_prompt;\n\tdefault:\n\t\t;\n\t}\n\tif (!sym)\n\t\tgoto set_prompt;\n\n\tsetText(nameColIdx, QString::fromLocal8Bit(sym->name));\n\n\ttype = sym_get_type(sym);\n\tswitch (type) {\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\tchar ch;\n\n\t\tif (!sym_is_changable(sym) && list->optMode == normalOpt) {\n\t\t\tsetPixmap(promptColIdx, QIcon());\n\t\t\tsetText(noColIdx, QString::null);\n\t\t\tsetText(modColIdx, QString::null);\n\t\t\tsetText(yesColIdx, QString::null);\n\t\t\tbreak;\n\t\t}\n\t\texpr = sym_get_tristate_value(sym);\n\t\tswitch (expr) {\n\t\tcase yes:\n\t\t\tif (sym_is_choice_value(sym) && type == S_BOOLEAN)\n\t\t\t\tsetPixmap(promptColIdx, list->choiceYesPix);\n\t\t\telse\n\t\t\t\tsetPixmap(promptColIdx, list->symbolYesPix);\n\t\t\tsetText(yesColIdx, \"Y\");\n\t\t\tch = 'Y';\n\t\t\tbreak;\n\t\tcase mod:\n\t\t\tsetPixmap(promptColIdx, list->symbolModPix);\n\t\t\tsetText(modColIdx, \"M\");\n\t\t\tch = 'M';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tif (sym_is_choice_value(sym) && type == S_BOOLEAN)\n\t\t\t\tsetPixmap(promptColIdx, list->choiceNoPix);\n\t\t\telse\n\t\t\t\tsetPixmap(promptColIdx, list->symbolNoPix);\n\t\t\tsetText(noColIdx, \"N\");\n\t\t\tch = 'N';\n\t\t\tbreak;\n\t\t}\n\t\tif (expr != no)\n\t\t\tsetText(noColIdx, sym_tristate_within_range(sym, no) ? \"_\" : 0);\n\t\tif (expr != mod)\n\t\t\tsetText(modColIdx, sym_tristate_within_range(sym, mod) ? \"_\" : 0);\n\t\tif (expr != yes)\n\t\t\tsetText(yesColIdx, sym_tristate_within_range(sym, yes) ? \"_\" : 0);\n\n\t\tsetText(dataColIdx, QChar(ch));\n\t\tbreak;\n\tcase S_INT:\n\tcase S_HEX:\n\tcase S_STRING:\n\t\tconst char* data;\n\n\t\tdata = sym_get_string_value(sym);\n\n\t\tsetText(dataColIdx, data);\n\t\tif (type == S_STRING)\n\t\t\tprompt = QString(\"%1: %2\").arg(prompt).arg(data);\n\t\telse\n\t\t\tprompt = QString(\"(%2) %1\").arg(prompt).arg(data);\n\t\tbreak;\n\t}\n\tif (!sym_has_value(sym) && visible)\n\t\tprompt += _(\" (NEW)\");\nset_prompt:\n\tsetText(promptColIdx, prompt);\n}\n\nvoid ConfigItem::testUpdateMenu(bool v)\n{\n\tConfigItem* i;\n\n\tvisible = v;\n\tif (!menu)\n\t\treturn;\n\n\tsym_calc_value(menu->sym);\n\tif (menu->flags & MENU_CHANGED) {\n\t\t/* the menu entry changed, so update all list items */\n\t\tmenu->flags &= ~MENU_CHANGED;\n\t\tfor (i = (ConfigItem*)menu->data; i; i = i->nextItem)\n\t\t\ti->updateMenu();\n\t} else if (listView()->updateAll)\n\t\tupdateMenu();\n}\n\n\n/*\n * construct a menu entry\n */\nvoid ConfigItem::init(void)\n{\n\tif (menu) {\n\t\tConfigList* list = listView();\n\t\tnextItem = (ConfigItem*)menu->data;\n\t\tmenu->data = this;\n\n\t\tif (list->mode != fullMode)\n\t\t\tsetExpanded(true);\n\t\tsym_calc_value(menu->sym);\n\t}\n\tupdateMenu();\n}\n\n/*\n * destruct a menu entry\n */\nConfigItem::~ConfigItem(void)\n{\n\tif (menu) {\n\t\tConfigItem** ip = (ConfigItem**)&menu->data;\n\t\tfor (; *ip; ip = &(*ip)->nextItem) {\n\t\t\tif (*ip == this) {\n\t\t\t\t*ip = nextItem;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\nConfigLineEdit::ConfigLineEdit(ConfigView* parent)\n\t: Parent(parent)\n{\n\tconnect(this, SIGNAL(editingFinished()), SLOT(hide()));\n}\n\nvoid ConfigLineEdit::show(ConfigItem* i)\n{\n\titem = i;\n\tif (sym_get_string_value(item->menu->sym))\n\t\tsetText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym)));\n\telse\n\t\tsetText(QString::null);\n\tParent::show();\n\tsetFocus();\n}\n\nvoid ConfigLineEdit::keyPressEvent(QKeyEvent* e)\n{\n\tswitch (e->key()) {\n\tcase Qt::Key_Escape:\n\t\tbreak;\n\tcase Qt::Key_Return:\n\tcase Qt::Key_Enter:\n\t\tsym_set_string_value(item->menu->sym, text().toLatin1());\n\t\tparent()->updateList(item);\n\t\tbreak;\n\tdefault:\n\t\tParent::keyPressEvent(e);\n\t\treturn;\n\t}\n\te->accept();\n\tparent()->list->setFocus();\n\thide();\n}\n\nConfigList::ConfigList(ConfigView* p, const char *name)\n\t: Parent(p),\n\t  updateAll(false),\n\t  symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no),\n\t  choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no),\n\t  menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void),\n\t  showName(false), showRange(false), showData(false), mode(singleMode), optMode(normalOpt),\n\t  rootEntry(0), headerPopup(0)\n{\n\tint i;\n\n\tsetObjectName(name);\n\tsetSortingEnabled(false);\n\tsetRootIsDecorated(true);\n\n\tsetVerticalScrollMode(ScrollPerPixel);\n\tsetHorizontalScrollMode(ScrollPerPixel);\n\n\tsetHeaderLabels(QStringList() << _(\"Option\") << _(\"Name\") << \"N\" << \"M\" << \"Y\" << _(\"Value\"));\n\n\tconnect(this, SIGNAL(itemSelectionChanged(void)),\n\t\tSLOT(updateSelection(void)));\n\n\tif (name) {\n\t\tconfigSettings->beginGroup(name);\n\t\tshowName = configSettings->value(\"/showName\", false).toBool();\n\t\tshowRange = configSettings->value(\"/showRange\", false).toBool();\n\t\tshowData = configSettings->value(\"/showData\", false).toBool();\n\t\toptMode = (enum optionMode)configSettings->value(\"/optionMode\", 0).toInt();\n\t\tconfigSettings->endGroup();\n\t\tconnect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings()));\n\t}\n\n\taddColumn(promptColIdx);\n\n\treinit();\n}\n\nbool ConfigList::menuSkip(struct menu *menu)\n{\n\tif (optMode == normalOpt && menu_is_visible(menu))\n\t\treturn false;\n\tif (optMode == promptOpt && menu_has_prompt(menu))\n\t\treturn false;\n\tif (optMode == allOpt)\n\t\treturn false;\n\treturn true;\n}\n\nvoid ConfigList::reinit(void)\n{\n\tremoveColumn(dataColIdx);\n\tremoveColumn(yesColIdx);\n\tremoveColumn(modColIdx);\n\tremoveColumn(noColIdx);\n\tremoveColumn(nameColIdx);\n\n\tif (showName)\n\t\taddColumn(nameColIdx);\n\tif (showRange) {\n\t\taddColumn(noColIdx);\n\t\taddColumn(modColIdx);\n\t\taddColumn(yesColIdx);\n\t}\n\tif (showData)\n\t\taddColumn(dataColIdx);\n\n\tupdateListAll();\n}\n\nvoid ConfigList::saveSettings(void)\n{\n\tif (!objectName().isEmpty()) {\n\t\tconfigSettings->beginGroup(objectName());\n\t\tconfigSettings->setValue(\"/showName\", showName);\n\t\tconfigSettings->setValue(\"/showRange\", showRange);\n\t\tconfigSettings->setValue(\"/showData\", showData);\n\t\tconfigSettings->setValue(\"/optionMode\", (int)optMode);\n\t\tconfigSettings->endGroup();\n\t}\n}\n\nConfigItem* ConfigList::findConfigItem(struct menu *menu)\n{\n\tConfigItem* item = (ConfigItem*)menu->data;\n\n\tfor (; item; item = item->nextItem) {\n\t\tif (this == item->listView())\n\t\t\tbreak;\n\t}\n\n\treturn item;\n}\n\nvoid ConfigList::updateSelection(void)\n{\n\tstruct menu *menu;\n\tenum prop_type type;\n\n\tif (selectedItems().count() == 0)\n\t\treturn;\n\n\tConfigItem* item = (ConfigItem*)selectedItems().first();\n\tif (!item)\n\t\treturn;\n\n\tmenu = item->menu;\n\temit menuChanged(menu);\n\tif (!menu)\n\t\treturn;\n\ttype = menu->prompt ? menu->prompt->type : P_UNKNOWN;\n\tif (mode == menuMode && type == P_MENU)\n\t\temit menuSelected(menu);\n}\n\nvoid ConfigList::updateList(ConfigItem* item)\n{\n\tConfigItem* last = 0;\n\n\tif (!rootEntry) {\n\t\tif (mode != listMode)\n\t\t\tgoto update;\n\t\tQTreeWidgetItemIterator it(this);\n\t\tConfigItem* item;\n\n\t\twhile (*it) {\n\t\t\titem = (ConfigItem*)(*it);\n\t\t\tif (!item->menu)\n\t\t\t\tcontinue;\n\t\t\titem->testUpdateMenu(menu_is_visible(item->menu));\n\n\t\t\t++it;\n\t\t}\n\t\treturn;\n\t}\n\n\tif (rootEntry != &rootmenu && (mode == singleMode ||\n\t    (mode == symbolMode && rootEntry->parent != &rootmenu))) {\n\t\titem = (ConfigItem *)topLevelItem(0);\n\t\tif (!item)\n\t\t\titem = new ConfigItem(this, 0, true);\n\t\tlast = item;\n\t}\n\tif ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) &&\n\t    rootEntry->sym && rootEntry->prompt) {\n\t\titem = last ? last->nextSibling() : firstChild();\n\t\tif (!item)\n\t\t\titem = new ConfigItem(this, last, rootEntry, true);\n\t\telse\n\t\t\titem->testUpdateMenu(true);\n\n\t\tupdateMenuList(item, rootEntry);\n\t\tupdate();\n\t\tresizeColumnToContents(0);\n\t\treturn;\n\t}\nupdate:\n\tupdateMenuList(this, rootEntry);\n\tupdate();\n\tresizeColumnToContents(0);\n}\n\nvoid ConfigList::setValue(ConfigItem* item, tristate val)\n{\n\tstruct symbol* sym;\n\tint type;\n\ttristate oldval;\n\n\tsym = item->menu ? item->menu->sym : 0;\n\tif (!sym)\n\t\treturn;\n\n\ttype = sym_get_type(sym);\n\tswitch (type) {\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\toldval = sym_get_tristate_value(sym);\n\n\t\tif (!sym_set_tristate_value(sym, val))\n\t\t\treturn;\n\t\tif (oldval == no && item->menu->list)\n\t\t\titem->setExpanded(true);\n\t\tparent()->updateList(item);\n\t\tbreak;\n\t}\n}\n\nvoid ConfigList::changeValue(ConfigItem* item)\n{\n\tstruct symbol* sym;\n\tstruct menu* menu;\n\tint type, oldexpr, newexpr;\n\n\tmenu = item->menu;\n\tif (!menu)\n\t\treturn;\n\tsym = menu->sym;\n\tif (!sym) {\n\t\tif (item->menu->list)\n\t\t\titem->setExpanded(!item->isExpanded());\n\t\treturn;\n\t}\n\n\ttype = sym_get_type(sym);\n\tswitch (type) {\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\toldexpr = sym_get_tristate_value(sym);\n\t\tnewexpr = sym_toggle_tristate_value(sym);\n\t\tif (item->menu->list) {\n\t\t\tif (oldexpr == newexpr)\n\t\t\t\titem->setExpanded(!item->isExpanded());\n\t\t\telse if (oldexpr == no)\n\t\t\t\titem->setExpanded(true);\n\t\t}\n\t\tif (oldexpr != newexpr)\n\t\t\tparent()->updateList(item);\n\t\tbreak;\n\tcase S_INT:\n\tcase S_HEX:\n\tcase S_STRING:\n\t\tparent()->lineEdit->show(item);\n\t\tbreak;\n\t}\n}\n\nvoid ConfigList::setRootMenu(struct menu *menu)\n{\n\tenum prop_type type;\n\n\tif (rootEntry == menu)\n\t\treturn;\n\ttype = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN;\n\tif (type != P_MENU)\n\t\treturn;\n\tupdateMenuList(this, 0);\n\trootEntry = menu;\n\tupdateListAll();\n\tif (currentItem()) {\n\t\tcurrentItem()->setSelected(hasFocus());\n\t\tscrollToItem(currentItem());\n\t}\n}\n\nvoid ConfigList::setParentMenu(void)\n{\n\tConfigItem* item;\n\tstruct menu *oldroot;\n\n\toldroot = rootEntry;\n\tif (rootEntry == &rootmenu)\n\t\treturn;\n\tsetRootMenu(menu_get_parent_menu(rootEntry->parent));\n\n\tQTreeWidgetItemIterator it(this);\n\twhile (*it) {\n\t\titem = (ConfigItem *)(*it);\n\t\tif (item->menu == oldroot) {\n\t\t\tsetCurrentItem(item);\n\t\t\tscrollToItem(item);\n\t\t\tbreak;\n\t\t}\n\n\t\t++it;\n\t}\n}\n\n/*\n * update all the children of a menu entry\n *   removes/adds the entries from the parent widget as necessary\n *\n * parent: either the menu list widget or a menu entry widget\n * menu: entry to be updated\n */\nvoid ConfigList::updateMenuList(ConfigItem *parent, struct menu* menu)\n{\n\tstruct menu* child;\n\tConfigItem* item;\n\tConfigItem* last;\n\tbool visible;\n\tenum prop_type type;\n\n\tif (!menu) {\n\t\twhile (parent->childCount() > 0)\n\t\t{\n\t\t\tdelete parent->takeChild(0);\n\t\t}\n\n\t\treturn;\n\t}\n\n\tlast = parent->firstChild();\n\tif (last && !last->goParent)\n\t\tlast = 0;\n\tfor (child = menu->list; child; child = child->next) {\n\t\titem = last ? last->nextSibling() : parent->firstChild();\n\t\ttype = child->prompt ? child->prompt->type : P_UNKNOWN;\n\n\t\tswitch (mode) {\n\t\tcase menuMode:\n\t\t\tif (!(child->flags & MENU_ROOT))\n\t\t\t\tgoto hide;\n\t\t\tbreak;\n\t\tcase symbolMode:\n\t\t\tif (child->flags & MENU_ROOT)\n\t\t\t\tgoto hide;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\tvisible = menu_is_visible(child);\n\t\tif (!menuSkip(child)) {\n\t\t\tif (!child->sym && !child->list && !child->prompt)\n\t\t\t\tcontinue;\n\t\t\tif (!item || item->menu != child)\n\t\t\t\titem = new ConfigItem(parent, last, child, visible);\n\t\t\telse\n\t\t\t\titem->testUpdateMenu(visible);\n\n\t\t\tif (mode == fullMode || mode == menuMode || type != P_MENU)\n\t\t\t\tupdateMenuList(item, child);\n\t\t\telse\n\t\t\t\tupdateMenuList(item, 0);\n\t\t\tlast = item;\n\t\t\tcontinue;\n\t\t}\n\thide:\n\t\tif (item && item->menu == child) {\n\t\t\tlast = parent->firstChild();\n\t\t\tif (last == item)\n\t\t\t\tlast = 0;\n\t\t\telse while (last->nextSibling() != item)\n\t\t\t\tlast = last->nextSibling();\n\t\t\tdelete item;\n\t\t}\n\t}\n}\n\nvoid ConfigList::updateMenuList(ConfigList *parent, struct menu* menu)\n{\n\tstruct menu* child;\n\tConfigItem* item;\n\tConfigItem* last;\n\tbool visible;\n\tenum prop_type type;\n\n\tif (!menu) {\n\t\twhile (parent->topLevelItemCount() > 0)\n\t\t{\n\t\t\tdelete parent->takeTopLevelItem(0);\n\t\t}\n\n\t\treturn;\n\t}\n\n\tlast = (ConfigItem*)parent->topLevelItem(0);\n\tif (last && !last->goParent)\n\t\tlast = 0;\n\tfor (child = menu->list; child; child = child->next) {\n\t\titem = last ? last->nextSibling() : (ConfigItem*)parent->topLevelItem(0);\n\t\ttype = child->prompt ? child->prompt->type : P_UNKNOWN;\n\n\t\tswitch (mode) {\n\t\tcase menuMode:\n\t\t\tif (!(child->flags & MENU_ROOT))\n\t\t\t\tgoto hide;\n\t\t\tbreak;\n\t\tcase symbolMode:\n\t\t\tif (child->flags & MENU_ROOT)\n\t\t\t\tgoto hide;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\tvisible = menu_is_visible(child);\n\t\tif (!menuSkip(child)) {\n\t\t\tif (!child->sym && !child->list && !child->prompt)\n\t\t\t\tcontinue;\n\t\t\tif (!item || item->menu != child)\n\t\t\t\titem = new ConfigItem(parent, last, child, visible);\n\t\t\telse\n\t\t\t\titem->testUpdateMenu(visible);\n\n\t\t\tif (mode == fullMode || mode == menuMode || type != P_MENU)\n\t\t\t\tupdateMenuList(item, child);\n\t\t\telse\n\t\t\t\tupdateMenuList(item, 0);\n\t\t\tlast = item;\n\t\t\tcontinue;\n\t\t}\n\thide:\n\t\tif (item && item->menu == child) {\n\t\t\tlast = (ConfigItem*)parent->topLevelItem(0);\n\t\t\tif (last == item)\n\t\t\t\tlast = 0;\n\t\t\telse while (last->nextSibling() != item)\n\t\t\t\tlast = last->nextSibling();\n\t\t\tdelete item;\n\t\t}\n\t}\n}\n\nvoid ConfigList::keyPressEvent(QKeyEvent* ev)\n{\n\tQTreeWidgetItem* i = currentItem();\n\tConfigItem* item;\n\tstruct menu *menu;\n\tenum prop_type type;\n\n\tif (ev->key() == Qt::Key_Escape && mode != fullMode && mode != listMode) {\n\t\temit parentSelected();\n\t\tev->accept();\n\t\treturn;\n\t}\n\n\tif (!i) {\n\t\tParent::keyPressEvent(ev);\n\t\treturn;\n\t}\n\titem = (ConfigItem*)i;\n\n\tswitch (ev->key()) {\n\tcase Qt::Key_Return:\n\tcase Qt::Key_Enter:\n\t\tif (item->goParent) {\n\t\t\temit parentSelected();\n\t\t\tbreak;\n\t\t}\n\t\tmenu = item->menu;\n\t\tif (!menu)\n\t\t\tbreak;\n\t\ttype = menu->prompt ? menu->prompt->type : P_UNKNOWN;\n\t\tif (type == P_MENU && rootEntry != menu &&\n\t\t    mode != fullMode && mode != menuMode) {\n\t\t\temit menuSelected(menu);\n\t\t\tbreak;\n\t\t}\n\tcase Qt::Key_Space:\n\t\tchangeValue(item);\n\t\tbreak;\n\tcase Qt::Key_N:\n\t\tsetValue(item, no);\n\t\tbreak;\n\tcase Qt::Key_M:\n\t\tsetValue(item, mod);\n\t\tbreak;\n\tcase Qt::Key_Y:\n\t\tsetValue(item, yes);\n\t\tbreak;\n\tdefault:\n\t\tParent::keyPressEvent(ev);\n\t\treturn;\n\t}\n\tev->accept();\n}\n\nvoid ConfigList::mousePressEvent(QMouseEvent* e)\n{\n\t//QPoint p(contentsToViewport(e->pos()));\n\t//printf(\"contentsMousePressEvent: %d,%d\\n\", p.x(), p.y());\n\tParent::mousePressEvent(e);\n}\n\nvoid ConfigList::mouseReleaseEvent(QMouseEvent* e)\n{\n\tQPoint p = e->pos();\n\tConfigItem* item = (ConfigItem*)itemAt(p);\n\tstruct menu *menu;\n\tenum prop_type ptype;\n\tQIcon icon;\n\tint idx, x;\n\n\tif (!item)\n\t\tgoto skip;\n\n\tmenu = item->menu;\n\tx = header()->offset() + p.x();\n\tidx = header()->logicalIndexAt(x);\n\tswitch (idx) {\n\tcase promptColIdx:\n\t\ticon = item->pixmap(promptColIdx);\n\t\tif (!icon.isNull()) {\n\t\t\tint off = header()->sectionPosition(0) + visualRect(indexAt(p)).x() + 4; // 4 is Hardcoded image offset. There might be a way to do it properly.\n\t\t\tif (x >= off && x < off + icon.availableSizes().first().width()) {\n\t\t\t\tif (item->goParent) {\n\t\t\t\t\temit parentSelected();\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (!menu)\n\t\t\t\t\tbreak;\n\t\t\t\tptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;\n\t\t\t\tif (ptype == P_MENU && rootEntry != menu &&\n\t\t\t\t    mode != fullMode && mode != menuMode)\n\t\t\t\t\temit menuSelected(menu);\n\t\t\t\telse\n\t\t\t\t\tchangeValue(item);\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tcase noColIdx:\n\t\tsetValue(item, no);\n\t\tbreak;\n\tcase modColIdx:\n\t\tsetValue(item, mod);\n\t\tbreak;\n\tcase yesColIdx:\n\t\tsetValue(item, yes);\n\t\tbreak;\n\tcase dataColIdx:\n\t\tchangeValue(item);\n\t\tbreak;\n\t}\n\nskip:\n\t//printf(\"contentsMouseReleaseEvent: %d,%d\\n\", p.x(), p.y());\n\tParent::mouseReleaseEvent(e);\n}\n\nvoid ConfigList::mouseMoveEvent(QMouseEvent* e)\n{\n\t//QPoint p(contentsToViewport(e->pos()));\n\t//printf(\"contentsMouseMoveEvent: %d,%d\\n\", p.x(), p.y());\n\tParent::mouseMoveEvent(e);\n}\n\nvoid ConfigList::mouseDoubleClickEvent(QMouseEvent* e)\n{\n\tQPoint p = e->pos(); // TODO: Check if this works(was contentsToViewport).\n\tConfigItem* item = (ConfigItem*)itemAt(p);\n\tstruct menu *menu;\n\tenum prop_type ptype;\n\n\tif (!item)\n\t\tgoto skip;\n\tif (item->goParent) {\n\t\temit parentSelected();\n\t\tgoto skip;\n\t}\n\tmenu = item->menu;\n\tif (!menu)\n\t\tgoto skip;\n\tptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;\n\tif (ptype == P_MENU && (mode == singleMode || mode == symbolMode))\n\t\temit menuSelected(menu);\n\telse if (menu->sym)\n\t\tchangeValue(item);\n\nskip:\n\t//printf(\"contentsMouseDoubleClickEvent: %d,%d\\n\", p.x(), p.y());\n\tParent::mouseDoubleClickEvent(e);\n}\n\nvoid ConfigList::focusInEvent(QFocusEvent *e)\n{\n\tstruct menu *menu = NULL;\n\n\tParent::focusInEvent(e);\n\n\tConfigItem* item = (ConfigItem *)currentItem();\n\tif (item) {\n\t\titem->setSelected(true);\n\t\tmenu = item->menu;\n\t}\n\temit gotFocus(menu);\n}\n\nvoid ConfigList::contextMenuEvent(QContextMenuEvent *e)\n{\n\tif (e->y() <= header()->geometry().bottom()) {\n\t\tif (!headerPopup) {\n\t\t\tQAction *action;\n\n\t\t\theaderPopup = new QMenu(this);\n\t\t\taction = new QAction(_(\"Show Name\"), this);\n\t\t\t  action->setCheckable(true);\n\t\t\t  connect(action, SIGNAL(toggled(bool)),\n\t\t\t\t  parent(), SLOT(setShowName(bool)));\n\t\t\t  connect(parent(), SIGNAL(showNameChanged(bool)),\n\t\t\t\t  action, SLOT(setOn(bool)));\n\t\t\t  action->setChecked(showName);\n\t\t\t  headerPopup->addAction(action);\n\t\t\taction = new QAction(_(\"Show Range\"), this);\n\t\t\t  action->setCheckable(true);\n\t\t\t  connect(action, SIGNAL(toggled(bool)),\n\t\t\t\t  parent(), SLOT(setShowRange(bool)));\n\t\t\t  connect(parent(), SIGNAL(showRangeChanged(bool)),\n\t\t\t\t  action, SLOT(setOn(bool)));\n\t\t\t  action->setChecked(showRange);\n\t\t\t  headerPopup->addAction(action);\n\t\t\taction = new QAction(_(\"Show Data\"), this);\n\t\t\t  action->setCheckable(true);\n\t\t\t  connect(action, SIGNAL(toggled(bool)),\n\t\t\t\t  parent(), SLOT(setShowData(bool)));\n\t\t\t  connect(parent(), SIGNAL(showDataChanged(bool)),\n\t\t\t\t  action, SLOT(setOn(bool)));\n\t\t\t  action->setChecked(showData);\n\t\t\t  headerPopup->addAction(action);\n\t\t}\n\t\theaderPopup->exec(e->globalPos());\n\t\te->accept();\n\t} else\n\t\te->ignore();\n}\n\nConfigView*ConfigView::viewList;\nQAction *ConfigView::showNormalAction;\nQAction *ConfigView::showAllAction;\nQAction *ConfigView::showPromptAction;\n\nConfigView::ConfigView(QWidget* parent, const char *name)\n\t: Parent(parent)\n{\n\tsetObjectName(name);\n\tQVBoxLayout *verticalLayout = new QVBoxLayout(this);\n\tverticalLayout->setContentsMargins(0, 0, 0, 0);\n\n\tlist = new ConfigList(this);\n\tverticalLayout->addWidget(list);\n\tlineEdit = new ConfigLineEdit(this);\n\tlineEdit->hide();\n\tverticalLayout->addWidget(lineEdit);\n\n\tthis->nextView = viewList;\n\tviewList = this;\n}\n\nConfigView::~ConfigView(void)\n{\n\tConfigView** vp;\n\n\tfor (vp = &viewList; *vp; vp = &(*vp)->nextView) {\n\t\tif (*vp == this) {\n\t\t\t*vp = nextView;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nvoid ConfigView::setOptionMode(QAction *act)\n{\n\tif (act == showNormalAction)\n\t\tlist->optMode = normalOpt;\n\telse if (act == showAllAction)\n\t\tlist->optMode = allOpt;\n\telse\n\t\tlist->optMode = promptOpt;\n\n\tlist->updateListAll();\n}\n\nvoid ConfigView::setShowName(bool b)\n{\n\tif (list->showName != b) {\n\t\tlist->showName = b;\n\t\tlist->reinit();\n\t\temit showNameChanged(b);\n\t}\n}\n\nvoid ConfigView::setShowRange(bool b)\n{\n\tif (list->showRange != b) {\n\t\tlist->showRange = b;\n\t\tlist->reinit();\n\t\temit showRangeChanged(b);\n\t}\n}\n\nvoid ConfigView::setShowData(bool b)\n{\n\tif (list->showData != b) {\n\t\tlist->showData = b;\n\t\tlist->reinit();\n\t\temit showDataChanged(b);\n\t}\n}\n\nvoid ConfigList::setAllOpen(bool open)\n{\n\tQTreeWidgetItemIterator it(this);\n\n\twhile (*it) {\n\t\t(*it)->setExpanded(open);\n\n\t\t++it;\n\t}\n}\n\nvoid ConfigView::updateList(ConfigItem* item)\n{\n\tConfigView* v;\n\n\tfor (v = viewList; v; v = v->nextView)\n\t\tv->list->updateList(item);\n}\n\nvoid ConfigView::updateListAll(void)\n{\n\tConfigView* v;\n\n\tfor (v = viewList; v; v = v->nextView)\n\t\tv->list->updateListAll();\n}\n\nConfigInfoView::ConfigInfoView(QWidget* parent, const char *name)\n\t: Parent(parent), sym(0), _menu(0)\n{\n\tsetObjectName(name);\n\n\n\tif (!objectName().isEmpty()) {\n\t\tconfigSettings->beginGroup(objectName());\n\t\tsetShowDebug(configSettings->value(\"/showDebug\", false).toBool());\n\t\tconfigSettings->endGroup();\n\t\tconnect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings()));\n\t}\n}\n\nvoid ConfigInfoView::saveSettings(void)\n{\n\tif (!objectName().isEmpty()) {\n\t\tconfigSettings->beginGroup(objectName());\n\t\tconfigSettings->setValue(\"/showDebug\", showDebug());\n\t\tconfigSettings->endGroup();\n\t}\n}\n\nvoid ConfigInfoView::setShowDebug(bool b)\n{\n\tif (_showDebug != b) {\n\t\t_showDebug = b;\n\t\tif (_menu)\n\t\t\tmenuInfo();\n\t\telse if (sym)\n\t\t\tsymbolInfo();\n\t\temit showDebugChanged(b);\n\t}\n}\n\nvoid ConfigInfoView::setInfo(struct menu *m)\n{\n\tif (_menu == m)\n\t\treturn;\n\t_menu = m;\n\tsym = NULL;\n\tif (!_menu)\n\t\tclear();\n\telse\n\t\tmenuInfo();\n}\n\nvoid ConfigInfoView::symbolInfo(void)\n{\n\tQString str;\n\n\tstr += \"<big>Symbol: <b>\";\n\tstr += print_filter(sym->name);\n\tstr += \"</b></big><br><br>value: \";\n\tstr += print_filter(sym_get_string_value(sym));\n\tstr += \"<br>visibility: \";\n\tstr += sym->visible == yes ? \"y\" : sym->visible == mod ? \"m\" : \"n\";\n\tstr += \"<br>\";\n\tstr += debug_info(sym);\n\n\tsetText(str);\n}\n\nvoid ConfigInfoView::menuInfo(void)\n{\n\tstruct symbol* sym;\n\tQString head, debug, help;\n\n\tsym = _menu->sym;\n\tif (sym) {\n\t\tif (_menu->prompt) {\n\t\t\thead += \"<big><b>\";\n\t\t\thead += print_filter(_(_menu->prompt->text));\n\t\t\thead += \"</b></big>\";\n\t\t\tif (sym->name) {\n\t\t\t\thead += \" (\";\n\t\t\t\tif (showDebug())\n\t\t\t\t\thead += QString().sprintf(\"<a href=\\\"s%p\\\">\", sym);\n\t\t\t\thead += print_filter(sym->name);\n\t\t\t\tif (showDebug())\n\t\t\t\t\thead += \"</a>\";\n\t\t\t\thead += \")\";\n\t\t\t}\n\t\t} else if (sym->name) {\n\t\t\thead += \"<big><b>\";\n\t\t\tif (showDebug())\n\t\t\t\thead += QString().sprintf(\"<a href=\\\"s%p\\\">\", sym);\n\t\t\thead += print_filter(sym->name);\n\t\t\tif (showDebug())\n\t\t\t\thead += \"</a>\";\n\t\t\thead += \"</b></big>\";\n\t\t}\n\t\thead += \"<br><br>\";\n\n\t\tif (showDebug())\n\t\t\tdebug = debug_info(sym);\n\n\t\tstruct gstr help_gstr = str_new();\n\t\tmenu_get_ext_help(_menu, &help_gstr);\n\t\thelp = print_filter(str_get(&help_gstr));\n\t\tstr_free(&help_gstr);\n\t} else if (_menu->prompt) {\n\t\thead += \"<big><b>\";\n\t\thead += print_filter(_(_menu->prompt->text));\n\t\thead += \"</b></big><br><br>\";\n\t\tif (showDebug()) {\n\t\t\tif (_menu->prompt->visible.expr) {\n\t\t\t\tdebug += \"&nbsp;&nbsp;dep: \";\n\t\t\t\texpr_print(_menu->prompt->visible.expr, expr_print_help, &debug, E_NONE);\n\t\t\t\tdebug += \"<br><br>\";\n\t\t\t}\n\t\t}\n\t}\n\tif (showDebug())\n\t\tdebug += QString().sprintf(\"defined at %s:%d<br><br>\", _menu->file->name, _menu->lineno);\n\n\tsetText(head + debug + help);\n}\n\nQString ConfigInfoView::debug_info(struct symbol *sym)\n{\n\tQString debug;\n\n\tdebug += \"type: \";\n\tdebug += print_filter(sym_type_name(sym->type));\n\tif (sym_is_choice(sym))\n\t\tdebug += \" (choice)\";\n\tdebug += \"<br>\";\n\tif (sym->rev_dep.expr) {\n\t\tdebug += \"reverse dep: \";\n\t\texpr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE);\n\t\tdebug += \"<br>\";\n\t}\n\tfor (struct property *prop = sym->prop; prop; prop = prop->next) {\n\t\tswitch (prop->type) {\n\t\tcase P_PROMPT:\n\t\tcase P_MENU:\n\t\t\tdebug += QString().sprintf(\"prompt: <a href=\\\"m%p\\\">\", prop->menu);\n\t\t\tdebug += print_filter(_(prop->text));\n\t\t\tdebug += \"</a><br>\";\n\t\t\tbreak;\n\t\tcase P_DEFAULT:\n\t\tcase P_SELECT:\n\t\tcase P_RANGE:\n\t\tcase P_ENV:\n\t\t\tdebug += prop_get_type_name(prop->type);\n\t\t\tdebug += \": \";\n\t\t\texpr_print(prop->expr, expr_print_help, &debug, E_NONE);\n\t\t\tdebug += \"<br>\";\n\t\t\tbreak;\n\t\tcase P_CHOICE:\n\t\t\tif (sym_is_choice(sym)) {\n\t\t\t\tdebug += \"choice: \";\n\t\t\t\texpr_print(prop->expr, expr_print_help, &debug, E_NONE);\n\t\t\t\tdebug += \"<br>\";\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tdebug += \"unknown property: \";\n\t\t\tdebug += prop_get_type_name(prop->type);\n\t\t\tdebug += \"<br>\";\n\t\t}\n\t\tif (prop->visible.expr) {\n\t\t\tdebug += \"&nbsp;&nbsp;&nbsp;&nbsp;dep: \";\n\t\t\texpr_print(prop->visible.expr, expr_print_help, &debug, E_NONE);\n\t\t\tdebug += \"<br>\";\n\t\t}\n\t}\n\tdebug += \"<br>\";\n\n\treturn debug;\n}\n\nQString ConfigInfoView::print_filter(const QString &str)\n{\n\tQRegExp re(\"[<>&\\\"\\\\n]\");\n\tQString res = str;\n\tfor (int i = 0; (i = res.indexOf(re, i)) >= 0;) {\n\t\tswitch (res[i].toLatin1()) {\n\t\tcase '<':\n\t\t\tres.replace(i, 1, \"&lt;\");\n\t\t\ti += 4;\n\t\t\tbreak;\n\t\tcase '>':\n\t\t\tres.replace(i, 1, \"&gt;\");\n\t\t\ti += 4;\n\t\t\tbreak;\n\t\tcase '&':\n\t\t\tres.replace(i, 1, \"&amp;\");\n\t\t\ti += 5;\n\t\t\tbreak;\n\t\tcase '\"':\n\t\t\tres.replace(i, 1, \"&quot;\");\n\t\t\ti += 6;\n\t\t\tbreak;\n\t\tcase '\\n':\n\t\t\tres.replace(i, 1, \"<br>\");\n\t\t\ti += 4;\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn res;\n}\n\nvoid ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char *str)\n{\n\tQString* text = reinterpret_cast<QString*>(data);\n\tQString str2 = print_filter(str);\n\n\tif (sym && sym->name && !(sym->flags & SYMBOL_CONST)) {\n\t\t*text += QString().sprintf(\"<a href=\\\"s%p\\\">\", sym);\n\t\t*text += str2;\n\t\t*text += \"</a>\";\n\t} else\n\t\t*text += str2;\n}\n\nQMenu* ConfigInfoView::createStandardContextMenu(const QPoint & pos)\n{\n\tQMenu* popup = Parent::createStandardContextMenu(pos);\n\tQAction* action = new QAction(_(\"Show Debug Info\"), popup);\n\t  action->setCheckable(true);\n\t  connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool)));\n\t  connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool)));\n\t  action->setChecked(showDebug());\n\tpopup->addSeparator();\n\tpopup->addAction(action);\n\treturn popup;\n}\n\nvoid ConfigInfoView::contextMenuEvent(QContextMenuEvent *e)\n{\n\tParent::contextMenuEvent(e);\n}\n\nConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name)\n\t: Parent(parent), result(NULL)\n{\n\tsetObjectName(name);\n\tsetWindowTitle(\"Search Config\");\n\n\tQVBoxLayout* layout1 = new QVBoxLayout(this);\n\tlayout1->setContentsMargins(11, 11, 11, 11);\n\tlayout1->setSpacing(6);\n\tQHBoxLayout* layout2 = new QHBoxLayout(0);\n\tlayout2->setContentsMargins(0, 0, 0, 0);\n\tlayout2->setSpacing(6);\n\tlayout2->addWidget(new QLabel(_(\"Find:\"), this));\n\teditField = new QLineEdit(this);\n\tconnect(editField, SIGNAL(returnPressed()), SLOT(search()));\n\tlayout2->addWidget(editField);\n\tsearchButton = new QPushButton(_(\"Search\"), this);\n\tsearchButton->setAutoDefault(false);\n\tconnect(searchButton, SIGNAL(clicked()), SLOT(search()));\n\tlayout2->addWidget(searchButton);\n\tlayout1->addLayout(layout2);\n\n\tsplit = new QSplitter(this);\n\tsplit->setOrientation(Qt::Vertical);\n\tlist = new ConfigView(split, name);\n\tlist->list->mode = listMode;\n\tinfo = new ConfigInfoView(split, name);\n\tconnect(list->list, SIGNAL(menuChanged(struct menu *)),\n\t\tinfo, SLOT(setInfo(struct menu *)));\n\tconnect(list->list, SIGNAL(menuChanged(struct menu *)),\n\t\tparent, SLOT(setMenuLink(struct menu *)));\n\n\tlayout1->addWidget(split);\n\n\tif (name) {\n\t\tQVariant x, y;\n\t\tint width, height;\n\t\tbool ok;\n\n\t\tconfigSettings->beginGroup(name);\n\t\twidth = configSettings->value(\"/window width\", parent->width() / 2).toInt();\n\t\theight = configSettings->value(\"/window height\", parent->height() / 2).toInt();\n\t\tresize(width, height);\n\t\tx = configSettings->value(\"/window x\");\n\t\ty = configSettings->value(\"/window y\");\n\t\tif ((x.isValid())&&(y.isValid()))\n\t\t\tmove(x.toInt(), y.toInt());\n\t\tQList<int> sizes = configSettings->readSizes(\"/split\", &ok);\n\t\tif (ok)\n\t\t\tsplit->setSizes(sizes);\n\t\tconfigSettings->endGroup();\n\t\tconnect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings()));\n\t}\n}\n\nvoid ConfigSearchWindow::saveSettings(void)\n{\n\tif (!objectName().isEmpty()) {\n\t\tconfigSettings->beginGroup(objectName());\n\t\tconfigSettings->setValue(\"/window x\", pos().x());\n\t\tconfigSettings->setValue(\"/window y\", pos().y());\n\t\tconfigSettings->setValue(\"/window width\", size().width());\n\t\tconfigSettings->setValue(\"/window height\", size().height());\n\t\tconfigSettings->writeSizes(\"/split\", split->sizes());\n\t\tconfigSettings->endGroup();\n\t}\n}\n\nvoid ConfigSearchWindow::search(void)\n{\n\tstruct symbol **p;\n\tstruct property *prop;\n\tConfigItem *lastItem = NULL;\n\n\tfree(result);\n\tlist->list->clear();\n\tinfo->clear();\n\n\tresult = sym_re_search(editField->text().toLatin1());\n\tif (!result)\n\t\treturn;\n\tfor (p = result; *p; p++) {\n\t\tfor_all_prompts((*p), prop)\n\t\t\tlastItem = new ConfigItem(list->list, lastItem, prop->menu,\n\t\t\t\t\t\t  menu_is_visible(prop->menu));\n\t}\n}\n\n/*\n * Construct the complete config widget\n */\nConfigMainWindow::ConfigMainWindow(void)\n\t: searchWindow(0)\n{\n\tQMenuBar* menu;\n\tbool ok = true;\n\tQVariant x, y;\n\tint width, height;\n\tchar title[256];\n\n\tQDesktopWidget *d = configApp->desktop();\n\tsnprintf(title, sizeof(title), \"%s%s\",\n\t\trootmenu.prompt->text,\n\t\t\"\"\n\t\t);\n\tsetWindowTitle(title);\n\n\twidth = configSettings->value(\"/window width\", d->width() - 64).toInt();\n\theight = configSettings->value(\"/window height\", d->height() - 64).toInt();\n\tresize(width, height);\n\tx = configSettings->value(\"/window x\");\n\ty = configSettings->value(\"/window y\");\n\tif ((x.isValid())&&(y.isValid()))\n\t\tmove(x.toInt(), y.toInt());\n\n\tsplit1 = new QSplitter(this);\n\tsplit1->setOrientation(Qt::Horizontal);\n\tsetCentralWidget(split1);\n\n\tmenuView = new ConfigView(split1, \"menu\");\n\tmenuList = menuView->list;\n\n\tsplit2 = new QSplitter(split1);\n\tsplit2->setOrientation(Qt::Vertical);\n\n\t// create config tree\n\tconfigView = new ConfigView(split2, \"config\");\n\tconfigList = configView->list;\n\n\thelpText = new ConfigInfoView(split2, \"help\");\n\n\tsetTabOrder(configList, helpText);\n\tconfigList->setFocus();\n\n\tmenu = menuBar();\n\ttoolBar = new QToolBar(\"Tools\", this);\n\taddToolBar(toolBar);\n\n\tbackAction = new QAction(QPixmap(xpm_back), _(\"Back\"), this);\n\t  connect(backAction, SIGNAL(triggered(bool)), SLOT(goBack()));\n\t  backAction->setEnabled(false);\n\tQAction *quitAction = new QAction(_(\"&Quit\"), this);\n\tquitAction->setShortcut(Qt::CTRL + Qt::Key_Q);\n\t  connect(quitAction, SIGNAL(triggered(bool)), SLOT(close()));\n\tQAction *loadAction = new QAction(QPixmap(xpm_load), _(\"&Load\"), this);\n\tloadAction->setShortcut(Qt::CTRL + Qt::Key_L);\n\t  connect(loadAction, SIGNAL(triggered(bool)), SLOT(loadConfig()));\n\tsaveAction = new QAction(QPixmap(xpm_save), _(\"&Save\"), this);\n\tsaveAction->setShortcut(Qt::CTRL + Qt::Key_S);\n\t  connect(saveAction, SIGNAL(triggered(bool)), SLOT(saveConfig()));\n\tconf_set_changed_callback(conf_changed);\n\t// Set saveAction's initial state\n\tconf_changed();\n\tQAction *saveAsAction = new QAction(_(\"Save &As...\"), this);\n\t  connect(saveAsAction, SIGNAL(triggered(bool)), SLOT(saveConfigAs()));\n\tQAction *searchAction = new QAction(_(\"&Find\"), this);\n\tsearchAction->setShortcut(Qt::CTRL + Qt::Key_F);\n\t  connect(searchAction, SIGNAL(triggered(bool)), SLOT(searchConfig()));\n\tsingleViewAction = new QAction(QPixmap(xpm_single_view), _(\"Single View\"), this);\n\tsingleViewAction->setCheckable(true);\n\t  connect(singleViewAction, SIGNAL(triggered(bool)), SLOT(showSingleView()));\n\tsplitViewAction = new QAction(QPixmap(xpm_split_view), _(\"Split View\"), this);\n\tsplitViewAction->setCheckable(true);\n\t  connect(splitViewAction, SIGNAL(triggered(bool)), SLOT(showSplitView()));\n\tfullViewAction = new QAction(QPixmap(xpm_tree_view), _(\"Full View\"), this);\n\tfullViewAction->setCheckable(true);\n\t  connect(fullViewAction, SIGNAL(triggered(bool)), SLOT(showFullView()));\n\n\tQAction *showNameAction = new QAction(_(\"Show Name\"), this);\n\t  showNameAction->setCheckable(true);\n\t  connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool)));\n\t  showNameAction->setChecked(configView->showName());\n\tQAction *showRangeAction = new QAction(_(\"Show Range\"), this);\n\t  showRangeAction->setCheckable(true);\n\t  connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool)));\n\tQAction *showDataAction = new QAction(_(\"Show Data\"), this);\n\t  showDataAction->setCheckable(true);\n\t  connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool)));\n\n\tQActionGroup *optGroup = new QActionGroup(this);\n\toptGroup->setExclusive(true);\n\tconnect(optGroup, SIGNAL(triggered(QAction*)), configView,\n\t\tSLOT(setOptionMode(QAction *)));\n\tconnect(optGroup, SIGNAL(triggered(QAction *)), menuView,\n\t\tSLOT(setOptionMode(QAction *)));\n\n\tconfigView->showNormalAction = new QAction(_(\"Show Normal Options\"), optGroup);\n\tconfigView->showAllAction = new QAction(_(\"Show All Options\"), optGroup);\n\tconfigView->showPromptAction = new QAction(_(\"Show Prompt Options\"), optGroup);\n\tconfigView->showNormalAction->setCheckable(true);\n\tconfigView->showAllAction->setCheckable(true);\n\tconfigView->showPromptAction->setCheckable(true);\n\n\tQAction *showDebugAction = new QAction( _(\"Show Debug Info\"), this);\n\t  showDebugAction->setCheckable(true);\n\t  connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool)));\n\t  showDebugAction->setChecked(helpText->showDebug());\n\n\tQAction *showIntroAction = new QAction( _(\"Introduction\"), this);\n\t  connect(showIntroAction, SIGNAL(triggered(bool)), SLOT(showIntro()));\n\tQAction *showAboutAction = new QAction( _(\"About\"), this);\n\t  connect(showAboutAction, SIGNAL(triggered(bool)), SLOT(showAbout()));\n\n\t// init tool bar\n\ttoolBar->addAction(backAction);\n\ttoolBar->addSeparator();\n\ttoolBar->addAction(loadAction);\n\ttoolBar->addAction(saveAction);\n\ttoolBar->addSeparator();\n\ttoolBar->addAction(singleViewAction);\n\ttoolBar->addAction(splitViewAction);\n\ttoolBar->addAction(fullViewAction);\n\n\t// create config menu\n\tQMenu* config = menu->addMenu(_(\"&File\"));\n\tconfig->addAction(loadAction);\n\tconfig->addAction(saveAction);\n\tconfig->addAction(saveAsAction);\n\tconfig->addSeparator();\n\tconfig->addAction(quitAction);\n\n\t// create edit menu\n\tQMenu* editMenu = menu->addMenu(_(\"&Edit\"));\n\teditMenu->addAction(searchAction);\n\n\t// create options menu\n\tQMenu* optionMenu = menu->addMenu(_(\"&Option\"));\n\toptionMenu->addAction(showNameAction);\n\toptionMenu->addAction(showRangeAction);\n\toptionMenu->addAction(showDataAction);\n\toptionMenu->addSeparator();\n\toptionMenu->addActions(optGroup->actions());\n\toptionMenu->addSeparator();\n\toptionMenu->addAction(showDebugAction);\n\n\t// create help menu\n\tmenu->addSeparator();\n\tQMenu* helpMenu = menu->addMenu(_(\"&Help\"));\n\thelpMenu->addAction(showIntroAction);\n\thelpMenu->addAction(showAboutAction);\n\n\tconnect(configList, SIGNAL(menuChanged(struct menu *)),\n\t\thelpText, SLOT(setInfo(struct menu *)));\n\tconnect(configList, SIGNAL(menuSelected(struct menu *)),\n\t\tSLOT(changeMenu(struct menu *)));\n\tconnect(configList, SIGNAL(parentSelected()),\n\t\tSLOT(goBack()));\n\tconnect(menuList, SIGNAL(menuChanged(struct menu *)),\n\t\thelpText, SLOT(setInfo(struct menu *)));\n\tconnect(menuList, SIGNAL(menuSelected(struct menu *)),\n\t\tSLOT(changeMenu(struct menu *)));\n\n\tconnect(configList, SIGNAL(gotFocus(struct menu *)),\n\t\thelpText, SLOT(setInfo(struct menu *)));\n\tconnect(menuList, SIGNAL(gotFocus(struct menu *)),\n\t\thelpText, SLOT(setInfo(struct menu *)));\n\tconnect(menuList, SIGNAL(gotFocus(struct menu *)),\n\t\tSLOT(listFocusChanged(void)));\n\tconnect(helpText, SIGNAL(menuSelected(struct menu *)),\n\t\tSLOT(setMenuLink(struct menu *)));\n\n\tQString listMode = configSettings->value(\"/listMode\", \"symbol\").toString();\n\tif (listMode == \"single\")\n\t\tshowSingleView();\n\telse if (listMode == \"full\")\n\t\tshowFullView();\n\telse /*if (listMode == \"split\")*/\n\t\tshowSplitView();\n\n\t// UI setup done, restore splitter positions\n\tQList<int> sizes = configSettings->readSizes(\"/split1\", &ok);\n\tif (ok)\n\t\tsplit1->setSizes(sizes);\n\n\tsizes = configSettings->readSizes(\"/split2\", &ok);\n\tif (ok)\n\t\tsplit2->setSizes(sizes);\n}\n\nvoid ConfigMainWindow::loadConfig(void)\n{\n\tQString s = QFileDialog::getOpenFileName(this, \"\", conf_get_configname());\n\tif (s.isNull())\n\t\treturn;\n\tif (conf_read(QFile::encodeName(s)))\n\t\tQMessageBox::information(this, \"qconf\", _(\"Unable to load configuration!\"));\n\tConfigView::updateListAll();\n}\n\nbool ConfigMainWindow::saveConfig(void)\n{\n\tif (conf_write(NULL)) {\n\t\tQMessageBox::information(this, \"qconf\", _(\"Unable to save configuration!\"));\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nvoid ConfigMainWindow::saveConfigAs(void)\n{\n\tQString s = QFileDialog::getSaveFileName(this, \"\", conf_get_configname());\n\tif (s.isNull())\n\t\treturn;\n\tsaveConfig();\n}\n\nvoid ConfigMainWindow::searchConfig(void)\n{\n\tif (!searchWindow)\n\t\tsearchWindow = new ConfigSearchWindow(this, \"search\");\n\tsearchWindow->show();\n}\n\nvoid ConfigMainWindow::changeMenu(struct menu *menu)\n{\n\tconfigList->setRootMenu(menu);\n\tif (configList->rootEntry->parent == &rootmenu)\n\t\tbackAction->setEnabled(false);\n\telse\n\t\tbackAction->setEnabled(true);\n}\n\nvoid ConfigMainWindow::setMenuLink(struct menu *menu)\n{\n\tstruct menu *parent;\n\tConfigList* list = NULL;\n\tConfigItem* item;\n\n\tif (configList->menuSkip(menu))\n\t\treturn;\n\n\tswitch (configList->mode) {\n\tcase singleMode:\n\t\tlist = configList;\n\t\tparent = menu_get_parent_menu(menu);\n\t\tif (!parent)\n\t\t\treturn;\n\t\tlist->setRootMenu(parent);\n\t\tbreak;\n\tcase symbolMode:\n\t\tif (menu->flags & MENU_ROOT) {\n\t\t\tconfigList->setRootMenu(menu);\n\t\t\tconfigList->clearSelection();\n\t\t\tlist = menuList;\n\t\t} else {\n\t\t\tlist = configList;\n\t\t\tparent = menu_get_parent_menu(menu->parent);\n\t\t\tif (!parent)\n\t\t\t\treturn;\n\t\t\titem = menuList->findConfigItem(parent);\n\t\t\tif (item) {\n\t\t\t\titem->setSelected(true);\n\t\t\t\tmenuList->scrollToItem(item);\n\t\t\t}\n\t\t\tlist->setRootMenu(parent);\n\t\t}\n\t\tbreak;\n\tcase fullMode:\n\t\tlist = configList;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\tif (list) {\n\t\titem = list->findConfigItem(menu);\n\t\tif (item) {\n\t\t\titem->setSelected(true);\n\t\t\tlist->scrollToItem(item);\n\t\t\tlist->setFocus();\n\t\t}\n\t}\n}\n\nvoid ConfigMainWindow::listFocusChanged(void)\n{\n\tif (menuList->mode == menuMode)\n\t\tconfigList->clearSelection();\n}\n\nvoid ConfigMainWindow::goBack(void)\n{\n\tConfigItem* item, *oldSelection;\n\n\tconfigList->setParentMenu();\n\tif (configList->rootEntry == &rootmenu)\n\t\tbackAction->setEnabled(false);\n\n\tif (menuList->selectedItems().count() == 0)\n\t\treturn;\n\n\titem = (ConfigItem*)menuList->selectedItems().first();\n\toldSelection = item;\n\twhile (item) {\n\t\tif (item->menu == configList->rootEntry) {\n\t\t\toldSelection->setSelected(false);\n\t\t\titem->setSelected(true);\n\t\t\tbreak;\n\t\t}\n\t\titem = (ConfigItem*)item->parent();\n\t}\n}\n\nvoid ConfigMainWindow::showSingleView(void)\n{\n\tsingleViewAction->setEnabled(false);\n\tsingleViewAction->setChecked(true);\n\tsplitViewAction->setEnabled(true);\n\tsplitViewAction->setChecked(false);\n\tfullViewAction->setEnabled(true);\n\tfullViewAction->setChecked(false);\n\n\tmenuView->hide();\n\tmenuList->setRootMenu(0);\n\tconfigList->mode = singleMode;\n\tif (configList->rootEntry == &rootmenu)\n\t\tconfigList->updateListAll();\n\telse\n\t\tconfigList->setRootMenu(&rootmenu);\n\tconfigList->setFocus();\n}\n\nvoid ConfigMainWindow::showSplitView(void)\n{\n\tsingleViewAction->setEnabled(true);\n\tsingleViewAction->setChecked(false);\n\tsplitViewAction->setEnabled(false);\n\tsplitViewAction->setChecked(true);\n\tfullViewAction->setEnabled(true);\n\tfullViewAction->setChecked(false);\n\n\tconfigList->mode = symbolMode;\n\tif (configList->rootEntry == &rootmenu)\n\t\tconfigList->updateListAll();\n\telse\n\t\tconfigList->setRootMenu(&rootmenu);\n\tconfigList->setAllOpen(true);\n\tconfigApp->processEvents();\n\tmenuList->mode = menuMode;\n\tmenuList->setRootMenu(&rootmenu);\n\tmenuList->setAllOpen(true);\n\tmenuView->show();\n\tmenuList->setFocus();\n}\n\nvoid ConfigMainWindow::showFullView(void)\n{\n\tsingleViewAction->setEnabled(true);\n\tsingleViewAction->setChecked(false);\n\tsplitViewAction->setEnabled(true);\n\tsplitViewAction->setChecked(false);\n\tfullViewAction->setEnabled(false);\n\tfullViewAction->setChecked(true);\n\n\tmenuView->hide();\n\tmenuList->setRootMenu(0);\n\tconfigList->mode = fullMode;\n\tif (configList->rootEntry == &rootmenu)\n\t\tconfigList->updateListAll();\n\telse\n\t\tconfigList->setRootMenu(&rootmenu);\n\tconfigList->setFocus();\n}\n\n/*\n * ask for saving configuration before quitting\n * TODO ask only when something changed\n */\nvoid ConfigMainWindow::closeEvent(QCloseEvent* e)\n{\n\tif (!conf_get_changed()) {\n\t\te->accept();\n\t\treturn;\n\t}\n\tQMessageBox mb(\"qconf\", _(\"Save configuration?\"), QMessageBox::Warning,\n\t\t\tQMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape);\n\tmb.setButtonText(QMessageBox::Yes, _(\"&Save Changes\"));\n\tmb.setButtonText(QMessageBox::No, _(\"&Discard Changes\"));\n\tmb.setButtonText(QMessageBox::Cancel, _(\"Cancel Exit\"));\n\tswitch (mb.exec()) {\n\tcase QMessageBox::Yes:\n\t\tif (saveConfig())\n\t\t\te->accept();\n\t\telse\n\t\t\te->ignore();\n\t\tbreak;\n\tcase QMessageBox::No:\n\t\te->accept();\n\t\tbreak;\n\tcase QMessageBox::Cancel:\n\t\te->ignore();\n\t\tbreak;\n\t}\n}\n\nvoid ConfigMainWindow::showIntro(void)\n{\n\tstatic const QString str = _(\"Welcome to the qconf graphical configuration tool.\\n\\n\"\n\t\t\"For each option, a blank box indicates the feature is disabled, a check\\n\"\n\t\t\"indicates it is enabled, and a dot indicates that it is to be compiled\\n\"\n\t\t\"as a module.  Clicking on the box will cycle through the three states.\\n\\n\"\n\t\t\"If you do not see an option (e.g., a device driver) that you believe\\n\"\n\t\t\"should be present, try turning on Show All Options under the Options menu.\\n\"\n\t\t\"Although there is no cross reference yet to help you figure out what other\\n\"\n\t\t\"options must be enabled to support the option you are interested in, you can\\n\"\n\t\t\"still view the help of a grayed-out option.\\n\\n\"\n\t\t\"Toggling Show Debug Info under the Options menu will show the dependencies,\\n\"\n\t\t\"which you can then match by examining other options.\\n\\n\");\n\n\tQMessageBox::information(this, \"qconf\", str);\n}\n\nvoid ConfigMainWindow::showAbout(void)\n{\n\tstatic const QString str = _(\"qconf is Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>.\\n\"\n\t\t\"Copyright (C) 2015 Boris Barbulovski <bbarbulovski@gmail.com>.\\n\\n\"\n\t\t\"Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\\n\");\n\n\tQMessageBox::information(this, \"qconf\", str);\n}\n\nvoid ConfigMainWindow::saveSettings(void)\n{\n\tconfigSettings->setValue(\"/window x\", pos().x());\n\tconfigSettings->setValue(\"/window y\", pos().y());\n\tconfigSettings->setValue(\"/window width\", size().width());\n\tconfigSettings->setValue(\"/window height\", size().height());\n\n\tQString entry;\n\tswitch(configList->mode) {\n\tcase singleMode :\n\t\tentry = \"single\";\n\t\tbreak;\n\n\tcase symbolMode :\n\t\tentry = \"split\";\n\t\tbreak;\n\n\tcase fullMode :\n\t\tentry = \"full\";\n\t\tbreak;\n\n\tdefault:\n\t\tbreak;\n\t}\n\tconfigSettings->setValue(\"/listMode\", entry);\n\n\tconfigSettings->writeSizes(\"/split1\", split1->sizes());\n\tconfigSettings->writeSizes(\"/split2\", split2->sizes());\n}\n\nvoid ConfigMainWindow::conf_changed(void)\n{\n\tif (saveAction)\n\t\tsaveAction->setEnabled(conf_get_changed());\n}\n\nvoid fixup_rootmenu(struct menu *menu)\n{\n\tstruct menu *child;\n\tstatic int menu_cnt = 0;\n\n\tmenu->flags |= MENU_ROOT;\n\tfor (child = menu->list; child; child = child->next) {\n\t\tif (child->prompt && child->prompt->type == P_MENU) {\n\t\t\tmenu_cnt++;\n\t\t\tfixup_rootmenu(child);\n\t\t\tmenu_cnt--;\n\t\t} else if (!menu_cnt)\n\t\t\tfixup_rootmenu(child);\n\t}\n}\n\nstatic const char *progname;\n\nstatic void usage(void)\n{\n\tprintf(_(\"%s [-s] <config>\\n\").toLatin1().constData(), progname);\n\texit(0);\n}\n\nint main(int ac, char** av)\n{\n\tConfigMainWindow* v;\n\tconst char *name;\n\n\tbindtextdomain(PACKAGE, LOCALEDIR);\n\ttextdomain(PACKAGE);\n\n\tprogname = av[0];\n\tconfigApp = new QApplication(ac, av);\n\tif (ac > 1 && av[1][0] == '-') {\n\t\tswitch (av[1][1]) {\n\t\tcase 's':\n\t\t\tconf_set_message_callback(NULL);\n\t\t\tbreak;\n\t\tcase 'h':\n\t\tcase '?':\n\t\t\tusage();\n\t\t}\n\t\tname = av[2];\n\t} else\n\t\tname = av[1];\n\tif (!name)\n\t\tusage();\n\n\tconf_parse(name);\n\tfixup_rootmenu(&rootmenu);\n\tconf_read(NULL);\n\t//zconfdump(stdout);\n\n\tconfigSettings = new ConfigSettings();\n\tconfigSettings->beginGroup(\"/kconfig/qconf\");\n\tv = new ConfigMainWindow();\n\n\t//zconfdump(stdout);\n\tconfigApp->connect(configApp, SIGNAL(lastWindowClosed()), SLOT(quit()));\n\tconfigApp->connect(configApp, SIGNAL(aboutToQuit()), v, SLOT(saveSettings()));\n\tv->show();\n\tconfigApp->exec();\n\n\tconfigSettings->endGroup();\n\tdelete configSettings;\n\tdelete v;\n\tdelete configApp;\n\n\treturn 0;\n}\n"
  },
  {
    "path": "support/kconfig/qconf.h",
    "content": "/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#include <QTextBrowser>\n#include <QTreeWidget>\n#include <QMainWindow>\n#include <QHeaderView>\n#include <qsettings.h>\n#include <QPushButton>\n#include <QSettings>\n#include <QLineEdit>\n#include <QSplitter>\n#include <QCheckBox>\n#include <QDialog>\n#include \"expr.h\"\n\nclass ConfigView;\nclass ConfigList;\nclass ConfigItem;\nclass ConfigLineEdit;\nclass ConfigMainWindow;\n\nclass ConfigSettings : public QSettings {\npublic:\n\tConfigSettings();\n\tQList<int> readSizes(const QString& key, bool *ok);\n\tbool writeSizes(const QString& key, const QList<int>& value);\n};\n\nenum colIdx {\n\tpromptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr\n};\nenum listMode {\n\tsingleMode, menuMode, symbolMode, fullMode, listMode\n};\nenum optionMode {\n\tnormalOpt = 0, allOpt, promptOpt\n};\n\nclass ConfigList : public QTreeWidget {\n\tQ_OBJECT\n\ttypedef class QTreeWidget Parent;\npublic:\n\tConfigList(ConfigView* p, const char *name = 0);\n\tvoid reinit(void);\n\tConfigView* parent(void) const\n\t{\n\t\treturn (ConfigView*)Parent::parent();\n\t}\n\tConfigItem* findConfigItem(struct menu *);\n\nprotected:\n\tvoid keyPressEvent(QKeyEvent *e);\n\tvoid mousePressEvent(QMouseEvent *e);\n\tvoid mouseReleaseEvent(QMouseEvent *e);\n\tvoid mouseMoveEvent(QMouseEvent *e);\n\tvoid mouseDoubleClickEvent(QMouseEvent *e);\n\tvoid focusInEvent(QFocusEvent *e);\n\tvoid contextMenuEvent(QContextMenuEvent *e);\n\npublic slots:\n\tvoid setRootMenu(struct menu *menu);\n\n\tvoid updateList(ConfigItem *item);\n\tvoid setValue(ConfigItem* item, tristate val);\n\tvoid changeValue(ConfigItem* item);\n\tvoid updateSelection(void);\n\tvoid saveSettings(void);\nsignals:\n\tvoid menuChanged(struct menu *menu);\n\tvoid menuSelected(struct menu *menu);\n\tvoid parentSelected(void);\n\tvoid gotFocus(struct menu *);\n\npublic:\n\tvoid updateListAll(void)\n\t{\n\t\tupdateAll = true;\n\t\tupdateList(NULL);\n\t\tupdateAll = false;\n\t}\n\tConfigList* listView()\n\t{\n\t\treturn this;\n\t}\n\tConfigItem* firstChild() const\n\t{\n\t\treturn (ConfigItem *)children().first();\n\t}\n\tvoid addColumn(colIdx idx)\n\t{\n\t\tshowColumn(idx);\n\t}\n\tvoid removeColumn(colIdx idx)\n\t{\n\t\thideColumn(idx);\n\t}\n\tvoid setAllOpen(bool open);\n\tvoid setParentMenu(void);\n\n\tbool menuSkip(struct menu *);\n\n\tvoid updateMenuList(ConfigItem *parent, struct menu*);\n\tvoid updateMenuList(ConfigList *parent, struct menu*);\n\n\tbool updateAll;\n\n\tQPixmap symbolYesPix, symbolModPix, symbolNoPix;\n\tQPixmap choiceYesPix, choiceNoPix;\n\tQPixmap menuPix, menuInvPix, menuBackPix, voidPix;\n\n\tbool showName, showRange, showData;\n\tenum listMode mode;\n\tenum optionMode optMode;\n\tstruct menu *rootEntry;\n\tQPalette disabledColorGroup;\n\tQPalette inactivedColorGroup;\n\tQMenu* headerPopup;\n};\n\nclass ConfigItem : public QTreeWidgetItem {\n\ttypedef class QTreeWidgetItem Parent;\npublic:\n\tConfigItem(ConfigList *parent, ConfigItem *after, struct menu *m, bool v)\n\t: Parent(parent, after), nextItem(0), menu(m), visible(v), goParent(false)\n\t{\n\t\tinit();\n\t}\n\tConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v)\n\t: Parent(parent, after), nextItem(0), menu(m), visible(v), goParent(false)\n\t{\n\t\tinit();\n\t}\n\tConfigItem(ConfigList *parent, ConfigItem *after, bool v)\n\t: Parent(parent, after), nextItem(0), menu(0), visible(v), goParent(true)\n\t{\n\t\tinit();\n\t}\n\t~ConfigItem(void);\n\tvoid init(void);\n\tvoid okRename(int col);\n\tvoid updateMenu(void);\n\tvoid testUpdateMenu(bool v);\n\tConfigList* listView() const\n\t{\n\t\treturn (ConfigList*)Parent::treeWidget();\n\t}\n\tConfigItem* firstChild() const\n\t{\n\t\treturn (ConfigItem *)Parent::child(0);\n\t}\n\tConfigItem* nextSibling()\n\t{\n\t\tConfigItem *ret = NULL;\n\t\tConfigItem *_parent = (ConfigItem *)parent();\n\n\t\tif(_parent) {\n\t\t\tret = (ConfigItem *)_parent->child(_parent->indexOfChild(this)+1);\n\t\t} else {\n\t\t\tQTreeWidget *_treeWidget = treeWidget();\n\t\t\tret = (ConfigItem *)_treeWidget->topLevelItem(_treeWidget->indexOfTopLevelItem(this)+1);\n\t\t}\n\n\t\treturn ret;\n\t}\n\tvoid setText(colIdx idx, const QString& text)\n\t{\n\t\tParent::setText(idx, text);\n\t}\n\tQString text(colIdx idx) const\n\t{\n\t\treturn Parent::text(idx);\n\t}\n\tvoid setPixmap(colIdx idx, const QIcon &icon)\n\t{\n\t\tParent::setIcon(idx, icon);\n\t}\n\tconst QIcon pixmap(colIdx idx) const\n\t{\n\t\treturn icon(idx);\n\t}\n\t// TODO: Implement paintCell\n\n\tConfigItem* nextItem;\n\tstruct menu *menu;\n\tbool visible;\n\tbool goParent;\n};\n\nclass ConfigLineEdit : public QLineEdit {\n\tQ_OBJECT\n\ttypedef class QLineEdit Parent;\npublic:\n\tConfigLineEdit(ConfigView* parent);\n\tConfigView* parent(void) const\n\t{\n\t\treturn (ConfigView*)Parent::parent();\n\t}\n\tvoid show(ConfigItem *i);\n\tvoid keyPressEvent(QKeyEvent *e);\n\npublic:\n\tConfigItem *item;\n};\n\nclass ConfigView : public QWidget {\n\tQ_OBJECT\n\ttypedef class QWidget Parent;\npublic:\n\tConfigView(QWidget* parent, const char *name = 0);\n\t~ConfigView(void);\n\tstatic void updateList(ConfigItem* item);\n\tstatic void updateListAll(void);\n\n\tbool showName(void) const { return list->showName; }\n\tbool showRange(void) const { return list->showRange; }\n\tbool showData(void) const { return list->showData; }\npublic slots:\n\tvoid setShowName(bool);\n\tvoid setShowRange(bool);\n\tvoid setShowData(bool);\n\tvoid setOptionMode(QAction *);\nsignals:\n\tvoid showNameChanged(bool);\n\tvoid showRangeChanged(bool);\n\tvoid showDataChanged(bool);\npublic:\n\tConfigList* list;\n\tConfigLineEdit* lineEdit;\n\n\tstatic ConfigView* viewList;\n\tConfigView* nextView;\n\n\tstatic QAction *showNormalAction;\n\tstatic QAction *showAllAction;\n\tstatic QAction *showPromptAction;\n};\n\nclass ConfigInfoView : public QTextBrowser {\n\tQ_OBJECT\n\ttypedef class QTextBrowser Parent;\npublic:\n\tConfigInfoView(QWidget* parent, const char *name = 0);\n\tbool showDebug(void) const { return _showDebug; }\n\npublic slots:\n\tvoid setInfo(struct menu *menu);\n\tvoid saveSettings(void);\n\tvoid setShowDebug(bool);\n\nsignals:\n\tvoid showDebugChanged(bool);\n\tvoid menuSelected(struct menu *);\n\nprotected:\n\tvoid symbolInfo(void);\n\tvoid menuInfo(void);\n\tQString debug_info(struct symbol *sym);\n\tstatic QString print_filter(const QString &str);\n\tstatic void expr_print_help(void *data, struct symbol *sym, const char *str);\n\tQMenu *createStandardContextMenu(const QPoint & pos);\n\tvoid contextMenuEvent(QContextMenuEvent *e);\n\n\tstruct symbol *sym;\n\tstruct menu *_menu;\n\tbool _showDebug;\n};\n\nclass ConfigSearchWindow : public QDialog {\n\tQ_OBJECT\n\ttypedef class QDialog Parent;\npublic:\n\tConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0);\n\npublic slots:\n\tvoid saveSettings(void);\n\tvoid search(void);\n\nprotected:\n\tQLineEdit* editField;\n\tQPushButton* searchButton;\n\tQSplitter* split;\n\tConfigView* list;\n\tConfigInfoView* info;\n\n\tstruct symbol **result;\n};\n\nclass ConfigMainWindow : public QMainWindow {\n\tQ_OBJECT\n\n\tstatic QAction *saveAction;\n\tstatic void conf_changed(void);\npublic:\n\tConfigMainWindow(void);\npublic slots:\n\tvoid changeMenu(struct menu *);\n\tvoid setMenuLink(struct menu *);\n\tvoid listFocusChanged(void);\n\tvoid goBack(void);\n\tvoid loadConfig(void);\n\tbool saveConfig(void);\n\tvoid saveConfigAs(void);\n\tvoid searchConfig(void);\n\tvoid showSingleView(void);\n\tvoid showSplitView(void);\n\tvoid showFullView(void);\n\tvoid showIntro(void);\n\tvoid showAbout(void);\n\tvoid saveSettings(void);\n\nprotected:\n\tvoid closeEvent(QCloseEvent *e);\n\n\tConfigSearchWindow *searchWindow;\n\tConfigView *menuView;\n\tConfigList *menuList;\n\tConfigView *configView;\n\tConfigList *configList;\n\tConfigInfoView *helpText;\n\tQToolBar *toolBar;\n\tQAction *backAction;\n\tQAction *singleViewAction;\n\tQAction *splitViewAction;\n\tQAction *fullViewAction;\n\tQSplitter *split1;\n\tQSplitter *split2;\n};\n"
  },
  {
    "path": "support/kconfig/streamline_config.pl",
    "content": "#!/usr/bin/env perl\n#\n# Copyright 2005-2009 - Steven Rostedt\n# Licensed under the terms of the GNU GPL License version 2\n#\n#  It's simple enough to figure out how this works.\n#  If not, then you can ask me at stripconfig@goodmis.org\n#\n# What it does?\n#\n#   If you have installed a Linux kernel from a distribution\n#   that turns on way too many modules than you need, and\n#   you only want the modules you use, then this program\n#   is perfect for you.\n#\n#   It gives you the ability to turn off all the modules that are\n#   not loaded on your system.\n#\n# Howto:\n#\n#  1. Boot up the kernel that you want to stream line the config on.\n#  2. Change directory to the directory holding the source of the\n#       kernel that you just booted.\n#  3. Copy the configuraton file to this directory as .config\n#  4. Have all your devices that you need modules for connected and\n#      operational (make sure that their corresponding modules are loaded)\n#  5. Run this script redirecting the output to some other file\n#       like config_strip.\n#  6. Back up your old config (if you want too).\n#  7. copy the config_strip file to .config\n#  8. Run \"make oldconfig\"\n#\n#  Now your kernel is ready to be built with only the modules that\n#  are loaded.\n#\n# Here's what I did with my Debian distribution.\n#\n#    cd /usr/src/linux-2.6.10\n#    cp /boot/config-2.6.10-1-686-smp .config\n#    ~/bin/streamline_config > config_strip\n#    mv .config config_sav\n#    mv config_strip .config\n#    make oldconfig\n#\nuse warnings;\nuse strict;\nuse Getopt::Long;\n\n# set the environment variable LOCALMODCONFIG_DEBUG to get\n# debug output.\nmy $debugprint = 0;\n$debugprint = 1 if (defined($ENV{LOCALMODCONFIG_DEBUG}));\n\nsub dprint {\n    return if (!$debugprint);\n    print STDERR @_;\n}\n\nmy $config = \".config\";\n\nmy $uname = `uname -r`;\nchomp $uname;\n\nmy @searchconfigs = (\n\t{\n\t    \"file\" => \".config\",\n\t    \"exec\" => \"cat\",\n\t},\n\t{\n\t    \"file\" => \"/proc/config.gz\",\n\t    \"exec\" => \"zcat\",\n\t},\n\t{\n\t    \"file\" => \"/boot/config-$uname\",\n\t    \"exec\" => \"cat\",\n\t},\n\t{\n\t    \"file\" => \"/boot/vmlinuz-$uname\",\n\t    \"exec\" => \"scripts/extract-ikconfig\",\n\t    \"test\" => \"scripts/extract-ikconfig\",\n\t},\n\t{\n\t    \"file\" => \"vmlinux\",\n\t    \"exec\" => \"scripts/extract-ikconfig\",\n\t    \"test\" => \"scripts/extract-ikconfig\",\n\t},\n\t{\n\t    \"file\" => \"/lib/modules/$uname/kernel/kernel/configs.ko\",\n\t    \"exec\" => \"scripts/extract-ikconfig\",\n\t    \"test\" => \"scripts/extract-ikconfig\",\n\t},\n\t{\n\t    \"file\" => \"kernel/configs.ko\",\n\t    \"exec\" => \"scripts/extract-ikconfig\",\n\t    \"test\" => \"scripts/extract-ikconfig\",\n\t},\n\t{\n\t    \"file\" => \"kernel/configs.o\",\n\t    \"exec\" => \"scripts/extract-ikconfig\",\n\t    \"test\" => \"scripts/extract-ikconfig\",\n\t},\n);\n\nsub read_config {\n    foreach my $conf (@searchconfigs) {\n\tmy $file = $conf->{\"file\"};\n\n\tnext if ( ! -f \"$file\");\n\n\tif (defined($conf->{\"test\"})) {\n\t    `$conf->{\"test\"} $conf->{\"file\"} 2>/dev/null`;\n\t    next if ($?);\n\t}\n\n\tmy $exec = $conf->{\"exec\"};\n\n\tprint STDERR \"using config: '$file'\\n\";\n\n\topen(my $infile, '-|', \"$exec $file\") || die \"Failed to run $exec $file\";\n\tmy @x = <$infile>;\n\tclose $infile;\n\treturn @x;\n    }\n    die \"No config file found\";\n}\n\nmy @config_file = read_config;\n\n# Parse options\nmy $localmodconfig = 0;\nmy $localyesconfig = 0;\n\nGetOptions(\"localmodconfig\" => \\$localmodconfig,\n\t   \"localyesconfig\" => \\$localyesconfig);\n\n# Get the build source and top level Kconfig file (passed in)\nmy $ksource = ($ARGV[0] ? $ARGV[0] : '.');\nmy $kconfig = $ARGV[1];\nmy $lsmod_file = $ENV{'LSMOD'};\n\nmy @makefiles = `find $ksource -name Makefile -or -name Kbuild 2>/dev/null`;\nchomp @makefiles;\n\nmy %depends;\nmy %selects;\nmy %prompts;\nmy %objects;\nmy $var;\nmy $iflevel = 0;\nmy @ifdeps;\n\n# prevent recursion\nmy %read_kconfigs;\n\nsub read_kconfig {\n    my ($kconfig) = @_;\n\n    my $state = \"NONE\";\n    my $config;\n\n    my $cont = 0;\n    my $line;\n\n    my $source = \"$ksource/$kconfig\";\n    my $last_source = \"\";\n\n    # Check for any environment variables used\n    while ($source =~ /\\$(\\w+)/ && $last_source ne $source) {\n\tmy $env = $1;\n\t$last_source = $source;\n\t$source =~ s/\\$$env/$ENV{$env}/;\n    }\n\n    open(my $kinfile, '<', $source) || die \"Can't open $kconfig\";\n    while (<$kinfile>) {\n\tchomp;\n\n\t# Make sure that lines ending with \\ continue\n\tif ($cont) {\n\t    $_ = $line . \" \" . $_;\n\t}\n\n\tif (s/\\\\$//) {\n\t    $cont = 1;\n\t    $line = $_;\n\t    next;\n\t}\n\n\t$cont = 0;\n\n\t# collect any Kconfig sources\n\tif (/^source\\s+\"?([^\"]+)/) {\n\t    my $kconfig = $1;\n\t    # prevent reading twice.\n\t    if (!defined($read_kconfigs{$kconfig})) {\n\t\t$read_kconfigs{$kconfig} = 1;\n\t\tread_kconfig($kconfig);\n\t    }\n\t    next;\n\t}\n\n\t# configs found\n\tif (/^\\s*(menu)?config\\s+(\\S+)\\s*$/) {\n\t    $state = \"NEW\";\n\t    $config = $2;\n\n\t    # Add depends for 'if' nesting\n\t    for (my $i = 0; $i < $iflevel; $i++) {\n\t\tif ($i) {\n\t\t    $depends{$config} .= \" \" . $ifdeps[$i];\n\t\t} else {\n\t\t    $depends{$config} = $ifdeps[$i];\n\t\t}\n\t\t$state = \"DEP\";\n\t    }\n\n\t# collect the depends for the config\n\t} elsif ($state eq \"NEW\" && /^\\s*depends\\s+on\\s+(.*)$/) {\n\t    $state = \"DEP\";\n\t    $depends{$config} = $1;\n\t} elsif ($state eq \"DEP\" && /^\\s*depends\\s+on\\s+(.*)$/) {\n\t    $depends{$config} .= \" \" . $1;\n\t} elsif ($state eq \"DEP\" && /^\\s*def(_(bool|tristate)|ault)\\s+(\\S.*)$/) {\n\t    my $dep = $3;\n\t    if ($dep !~ /^\\s*(y|m|n)\\s*$/) {\n\t\t$dep =~ s/.*\\sif\\s+//;\n\t\t$depends{$config} .= \" \" . $dep;\n\t\tdprint \"Added default depends $dep to $config\\n\";\n\t    }\n\n\t# Get the configs that select this config\n\t} elsif ($state ne \"NONE\" && /^\\s*select\\s+(\\S+)/) {\n\t    my $conf = $1;\n\t    if (defined($selects{$conf})) {\n\t\t$selects{$conf} .= \" \" . $config;\n\t    } else {\n\t\t$selects{$conf} = $config;\n\t    }\n\n\t# configs without prompts must be selected\n\t} elsif ($state ne \"NONE\" && /^\\s*(tristate\\s+\\S|prompt\\b)/) {\n\t    # note if the config has a prompt\n\t    $prompts{$config} = 1;\n\n\t# Check for if statements\n\t} elsif (/^if\\s+(.*\\S)\\s*$/) {\n\t    my $deps = $1;\n\t    # remove beginning and ending non text\n\t    $deps =~ s/^[^a-zA-Z0-9_]*//;\n\t    $deps =~ s/[^a-zA-Z0-9_]*$//;\n\n\t    my @deps = split /[^a-zA-Z0-9_]+/, $deps;\n\n\t    $ifdeps[$iflevel++] = join ':', @deps;\n\n\t} elsif (/^endif/) {\n\n\t    $iflevel-- if ($iflevel);\n\n\t# stop on \"help\" and keywords that end a menu entry\n\t} elsif (/^\\s*(---)?help(---)?\\s*$/ || /^(comment|choice|menu)\\b/) {\n\t    $state = \"NONE\";\n\t}\n    }\n    close($kinfile);\n}\n\nif ($kconfig) {\n    read_kconfig($kconfig);\n}\n\n# Makefiles can use variables to define their dependencies\nsub convert_vars {\n    my ($line, %vars) = @_;\n\n    my $process = \"\";\n\n    while ($line =~ s/^(.*?)(\\$\\((.*?)\\))//) {\n\tmy $start = $1;\n\tmy $variable = $2;\n\tmy $var = $3;\n\n\tif (defined($vars{$var})) {\n\t    $process .= $start . $vars{$var};\n\t} else {\n\t    $process .= $start . $variable;\n\t}\n    }\n\n    $process .= $line;\n\n    return $process;\n}\n\n# Read all Makefiles to map the configs to the objects\nforeach my $makefile (@makefiles) {\n\n    my $line = \"\";\n    my %make_vars;\n\n    open(my $infile, '<', $makefile) || die \"Can't open $makefile\";\n    while (<$infile>) {\n\t# if this line ends with a backslash, continue\n\tchomp;\n\tif (/^(.*)\\\\$/) {\n\t    $line .= $1;\n\t    next;\n\t}\n\n\t$line .= $_;\n\t$_ = $line;\n\t$line = \"\";\n\n\tmy $objs;\n\n\t# Convert variables in a line (could define configs)\n\t$_ = convert_vars($_, %make_vars);\n\n\t# collect objects after obj-$(CONFIG_FOO_BAR)\n\tif (/obj-\\$\\((CONFIG_[^\\)]*)\\)\\s*[+:]?=\\s*(.*)/) {\n\t    $var = $1;\n\t    $objs = $2;\n\n\t# check if variables are set\n\t} elsif (/^\\s*(\\S+)\\s*[:]?=\\s*(.*\\S)/) {\n\t    $make_vars{$1} = $2;\n\t}\n\tif (defined($objs)) {\n\t    foreach my $obj (split /\\s+/,$objs) {\n\t\t$obj =~ s/-/_/g;\n\t\tif ($obj =~ /(.*)\\.o$/) {\n\t\t    # Objects may be enabled by more than one config.\n\t\t    # Store configs in an array.\n\t\t    my @arr;\n\n\t\t    if (defined($objects{$1})) {\n\t\t\t@arr = @{$objects{$1}};\n\t\t    }\n\n\t\t    $arr[$#arr+1] = $var;\n\n\t\t    # The objects have a hash mapping to a reference\n\t\t    # of an array of configs.\n\t\t    $objects{$1} = \\@arr;\n\t\t}\n\t    }\n\t}\n    }\n    close($infile);\n}\n\nmy %modules;\nmy $linfile;\n\nif (defined($lsmod_file)) {\n    if ( ! -f $lsmod_file) {\n\tif ( -f $ENV{'objtree'}.\"/\".$lsmod_file) {\n\t    $lsmod_file = $ENV{'objtree'}.\"/\".$lsmod_file;\n\t} else {\n\t\tdie \"$lsmod_file not found\";\n\t}\n    }\n\n    my $otype = ( -x $lsmod_file) ? '-|' : '<';\n    open($linfile, $otype, $lsmod_file);\n\n} else {\n\n    # see what modules are loaded on this system\n    my $lsmod;\n\n    foreach my $dir ( (\"/sbin\", \"/bin\", \"/usr/sbin\", \"/usr/bin\") ) {\n\tif ( -x \"$dir/lsmod\" ) {\n\t    $lsmod = \"$dir/lsmod\";\n\t    last;\n\t}\n}\n    if (!defined($lsmod)) {\n\t# try just the path\n\t$lsmod = \"lsmod\";\n    }\n\n    open($linfile, '-|', $lsmod) || die \"Can not call lsmod with $lsmod\";\n}\n\nwhile (<$linfile>) {\n\tnext if (/^Module/);  # Skip the first line.\n\tif (/^(\\S+)/) {\n\t\t$modules{$1} = 1;\n\t}\n}\nclose ($linfile);\n\n# add to the configs hash all configs that are needed to enable\n# a loaded module. This is a direct obj-${CONFIG_FOO} += bar.o\n# where we know we need bar.o so we add FOO to the list.\nmy %configs;\nforeach my $module (keys(%modules)) {\n    if (defined($objects{$module})) {\n\tmy @arr = @{$objects{$module}};\n\tforeach my $conf (@arr) {\n\t    $configs{$conf} = $module;\n\t    dprint \"$conf added by direct ($module)\\n\";\n\t    if ($debugprint) {\n\t\tmy $c=$conf;\n\t\t$c =~ s/^CONFIG_//;\n\t\tif (defined($depends{$c})) {\n\t\t    dprint \" deps = $depends{$c}\\n\";\n\t\t} else {\n\t\t    dprint \" no deps\\n\";\n\t\t}\n\t    }\n\t}\n    } else {\n\t# Most likely, someone has a custom (binary?) module loaded.\n\tprint STDERR \"$module config not found!!\\n\";\n    }\n}\n\n# Read the current config, and see what is enabled. We want to\n# ignore configs that we would not enable anyway.\n\nmy %orig_configs;\nmy $valid = \"A-Za-z_0-9\";\n\nforeach my $line (@config_file) {\n    $_ = $line;\n\n    if (/(CONFIG_[$valid]*)=(m|y)/) {\n\t$orig_configs{$1} = $2;\n    }\n}\n\nmy $repeat = 1;\n\nmy $depconfig;\n\n#\n# Note, we do not care about operands (like: &&, ||, !) we want to add any\n# config that is in the depend list of another config. This script does\n# not enable configs that are not already enabled. If we come across a\n# config A that depends on !B, we can still add B to the list of depends\n# to keep on. If A was on in the original config, B would not have been\n# and B would not be turned on by this script.\n#\nsub parse_config_depends\n{\n    my ($p) = @_;\n\n    while ($p =~ /[$valid]/) {\n\n\tif ($p =~ /^[^$valid]*([$valid]+)/) {\n\t    my $conf = \"CONFIG_\" . $1;\n\n\t    $p =~ s/^[^$valid]*[$valid]+//;\n\n\t    # We only need to process if the depend config is a module\n\t    if (!defined($orig_configs{$conf}) || $orig_configs{$conf} eq \"y\") {\n\t\tnext;\n\t    }\n\n\t    if (!defined($configs{$conf})) {\n\t\t# We must make sure that this config has its\n\t\t# dependencies met.\n\t\t$repeat = 1; # do again\n\t\tdprint \"$conf selected by depend $depconfig\\n\";\n\t\t$configs{$conf} = 1;\n\t    }\n\t} else {\n\t    die \"this should never happen\";\n\t}\n    }\n}\n\n# Select is treated a bit differently than depends. We call this\n# when a config has no prompt and requires another config to be\n# selected. We use to just select all configs that selected this\n# config, but found that that can balloon into enabling hundreds\n# of configs that we do not care about.\n#\n# The idea is we look at all the configs that select it. If one\n# is already in our list of configs to enable, then there's nothing\n# else to do. If there isn't, we pick the first config that was\n# enabled in the orignal config and use that.\nsub parse_config_selects\n{\n    my ($config, $p) = @_;\n\n    my $next_config;\n\n    while ($p =~ /[$valid]/) {\n\n\tif ($p =~ /^[^$valid]*([$valid]+)/) {\n\t    my $conf = \"CONFIG_\" . $1;\n\n\t    $p =~ s/^[^$valid]*[$valid]+//;\n\n\t    # Make sure that this config exists in the current .config file\n\t    if (!defined($orig_configs{$conf})) {\n\t\tdprint \"$conf not set for $config select\\n\";\n\t\tnext;\n\t    }\n\n\t    # Check if something other than a module selects this config\n\t    if (defined($orig_configs{$conf}) && $orig_configs{$conf} ne \"m\") {\n\t\tdprint \"$conf (non module) selects config, we are good\\n\";\n\t\t# we are good with this\n\t\treturn;\n\t    }\n\t    if (defined($configs{$conf})) {\n\t\tdprint \"$conf selects $config so we are good\\n\";\n\t\t# A set config selects this config, we are good\n\t\treturn;\n\t    }\n\t    # Set this config to be selected\n\t    if (!defined($next_config)) {\n\t\t$next_config = $conf;\n\t    }\n\t} else {\n\t    die \"this should never happen\";\n\t}\n    }\n\n    # If no possible config selected this, then something happened.\n    if (!defined($next_config)) {\n\tprint STDERR \"WARNING: $config is required, but nothing in the\\n\";\n\tprint STDERR \"  current config selects it.\\n\";\n\treturn;\n    }\n\n    # If we are here, then we found no config that is set and\n    # selects this config. Repeat.\n    $repeat = 1;\n    # Make this config need to be selected\n    $configs{$next_config} = 1;\n    dprint \"$next_config selected by select $config\\n\";\n}\n\nmy %process_selects;\n\n# loop through all configs, select their dependencies.\nsub loop_depend {\n    $repeat = 1;\n\n    while ($repeat) {\n\t$repeat = 0;\n\n      forloop:\n\tforeach my $config (keys %configs) {\n\n\t    # If this config is not a module, we do not need to process it\n\t    if (defined($orig_configs{$config}) && $orig_configs{$config} ne \"m\") {\n\t\tnext forloop;\n\t    }\n\n\t    $config =~ s/^CONFIG_//;\n\t    $depconfig = $config;\n\n\t    if (defined($depends{$config})) {\n\t\t# This config has dependencies. Make sure they are also included\n\t\tparse_config_depends $depends{$config};\n\t    }\n\n\t    # If the config has no prompt, then we need to check if a config\n\t    # that is enabled selected it. Or if we need to enable one.\n\t    if (!defined($prompts{$config}) && defined($selects{$config})) {\n\t\t$process_selects{$config} = 1;\n\t    }\n\t}\n    }\n}\n\nsub loop_select {\n\n    foreach my $config (keys %process_selects) {\n\t$config =~ s/^CONFIG_//;\n\n\tdprint \"Process select $config\\n\";\n\n\t# config has no prompt and must be selected.\n\tparse_config_selects $config, $selects{$config};\n    }\n}\n\nwhile ($repeat) {\n    # Get the first set of configs and their dependencies.\n    loop_depend;\n\n    $repeat = 0;\n\n    # Now we need to see if we have to check selects;\n    loop_select;\n}\n\nmy %setconfigs;\n\n# Finally, read the .config file and turn off any module enabled that\n# we could not find a reason to keep enabled.\nforeach my $line (@config_file) {\n    $_ = $line;\n\n    if (/CONFIG_IKCONFIG/) {\n\tif (/# CONFIG_IKCONFIG is not set/) {\n\t    # enable IKCONFIG at least as a module\n\t    print \"CONFIG_IKCONFIG=m\\n\";\n\t    # don't ask about PROC\n\t    print \"# CONFIG_IKCONFIG_PROC is not set\\n\";\n\t} else {\n\t    print;\n\t}\n\tnext;\n    }\n\n    if (/CONFIG_MODULE_SIG_KEY=\"(.+)\"/) {\n        my $orig_cert = $1;\n        my $default_cert = \"certs/signing_key.pem\";\n\n        # Check that the logic in this script still matches the one in Kconfig\n        if (!defined($depends{\"MODULE_SIG_KEY\"}) ||\n            $depends{\"MODULE_SIG_KEY\"} !~ /\"\\Q$default_cert\\E\"/) {\n            print STDERR \"WARNING: MODULE_SIG_KEY assertion failure, \",\n                \"update needed to \", __FILE__, \" line \", __LINE__, \"\\n\";\n            print;\n        } elsif ($orig_cert ne $default_cert && ! -f $orig_cert) {\n            print STDERR \"Module signature verification enabled but \",\n                \"module signing key \\\"$orig_cert\\\" not found. Resetting \",\n                \"signing key to default value.\\n\";\n            print \"CONFIG_MODULE_SIG_KEY=\\\"$default_cert\\\"\\n\";\n        } else {\n            print;\n        }\n        next;\n    }\n\n    if (/CONFIG_SYSTEM_TRUSTED_KEYS=\"(.+)\"/) {\n        my $orig_keys = $1;\n\n        if (! -f $orig_keys) {\n            print STDERR \"System keyring enabled but keys \\\"$orig_keys\\\" \",\n                \"not found. Resetting keys to default value.\\n\";\n            print \"CONFIG_SYSTEM_TRUSTED_KEYS=\\\"\\\"\\n\";\n        } else {\n            print;\n        }\n        next;\n    }\n\n    if (/^(CONFIG.*)=(m|y)/) {\n\tif (defined($configs{$1})) {\n\t    if ($localyesconfig) {\n\t        $setconfigs{$1} = 'y';\n\t\tprint \"$1=y\\n\";\n\t\tnext;\n\t    } else {\n\t        $setconfigs{$1} = $2;\n\t    }\n\t} elsif ($2 eq \"m\") {\n\t    print \"# $1 is not set\\n\";\n\t    next;\n\t}\n    }\n    print;\n}\n\n# Integrity check, make sure all modules that we want enabled do\n# indeed have their configs set.\nloop:\nforeach my $module (keys(%modules)) {\n    if (defined($objects{$module})) {\n\tmy @arr = @{$objects{$module}};\n\tforeach my $conf (@arr) {\n\t    if (defined($setconfigs{$conf})) {\n\t\tnext loop;\n\t    }\n\t}\n\tprint STDERR \"module $module did not have configs\";\n\tforeach my $conf (@arr) {\n\t    print STDERR \" \" , $conf;\n\t}\n\tprint STDERR \"\\n\";\n    }\n}\n"
  },
  {
    "path": "support/kconfig/symbol.c",
    "content": "/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#include <ctype.h>\n#include <stdlib.h>\n#include <string.h>\n#include <regex.h>\n#include <sys/utsname.h>\n\n#include \"lkc.h\"\n\nstruct symbol symbol_yes = {\n\t.name = \"y\",\n\t.curr = { \"y\", yes },\n\t.flags = SYMBOL_CONST|SYMBOL_VALID,\n}, symbol_mod = {\n\t.name = \"m\",\n\t.curr = { \"m\", mod },\n\t.flags = SYMBOL_CONST|SYMBOL_VALID,\n}, symbol_no = {\n\t.name = \"n\",\n\t.curr = { \"n\", no },\n\t.flags = SYMBOL_CONST|SYMBOL_VALID,\n}, symbol_empty = {\n\t.name = \"\",\n\t.curr = { \"\", no },\n\t.flags = SYMBOL_VALID,\n};\n\nstruct symbol *sym_defconfig_list;\nstruct symbol *modules_sym;\ntristate modules_val;\n\nstruct expr *sym_env_list;\n\nstatic void sym_add_default(struct symbol *sym, const char *def)\n{\n\tstruct property *prop = prop_alloc(P_DEFAULT, sym);\n\n\tprop->expr = expr_alloc_symbol(sym_lookup(def, SYMBOL_CONST));\n}\n\nvoid sym_init(void)\n{\n\tstruct symbol *sym;\n\tstruct utsname uts;\n\tstatic bool inited = false;\n\n\tif (inited)\n\t\treturn;\n\tinited = true;\n\n\tuname(&uts);\n\n\tsym = sym_lookup(\"UNAME_RELEASE\", 0);\n\tsym->type = S_STRING;\n\tsym->flags |= SYMBOL_AUTO;\n\tsym_add_default(sym, uts.release);\n}\n\nenum symbol_type sym_get_type(struct symbol *sym)\n{\n\tenum symbol_type type = sym->type;\n\n\tif (type == S_TRISTATE) {\n\t\tif (sym_is_choice_value(sym) && sym->visible == yes)\n\t\t\ttype = S_BOOLEAN;\n\t\telse if (modules_val == no)\n\t\t\ttype = S_BOOLEAN;\n\t}\n\treturn type;\n}\n\nconst char *sym_type_name(enum symbol_type type)\n{\n\tswitch (type) {\n\tcase S_BOOLEAN:\n\t\treturn \"bool\";\n\tcase S_TRISTATE:\n\t\treturn \"tristate\";\n\tcase S_INT:\n\t\treturn \"integer\";\n\tcase S_HEX:\n\t\treturn \"hex\";\n\tcase S_STRING:\n\t\treturn \"string\";\n\tcase S_UNKNOWN:\n\t\treturn \"unknown\";\n\tcase S_OTHER:\n\t\tbreak;\n\t}\n\treturn \"???\";\n}\n\nstruct property *sym_get_choice_prop(struct symbol *sym)\n{\n\tstruct property *prop;\n\n\tfor_all_choices(sym, prop)\n\t\treturn prop;\n\treturn NULL;\n}\n\nstruct property *sym_get_env_prop(struct symbol *sym)\n{\n\tstruct property *prop;\n\n\tfor_all_properties(sym, prop, P_ENV)\n\t\treturn prop;\n\treturn NULL;\n}\n\nstatic struct property *sym_get_default_prop(struct symbol *sym)\n{\n\tstruct property *prop;\n\n\tfor_all_defaults(sym, prop) {\n\t\tprop->visible.tri = expr_calc_value(prop->visible.expr);\n\t\tif (prop->visible.tri != no)\n\t\t\treturn prop;\n\t}\n\treturn NULL;\n}\n\nstatic struct property *sym_get_range_prop(struct symbol *sym)\n{\n\tstruct property *prop;\n\n\tfor_all_properties(sym, prop, P_RANGE) {\n\t\tprop->visible.tri = expr_calc_value(prop->visible.expr);\n\t\tif (prop->visible.tri != no)\n\t\t\treturn prop;\n\t}\n\treturn NULL;\n}\n\nstatic long long sym_get_range_val(struct symbol *sym, int base)\n{\n\tsym_calc_value(sym);\n\tswitch (sym->type) {\n\tcase S_INT:\n\t\tbase = 10;\n\t\tbreak;\n\tcase S_HEX:\n\t\tbase = 16;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\treturn strtoll(sym->curr.val, NULL, base);\n}\n\nstatic void sym_validate_range(struct symbol *sym)\n{\n\tstruct property *prop;\n\tint base;\n\tlong long val, val2;\n\tchar str[64];\n\n\tswitch (sym->type) {\n\tcase S_INT:\n\t\tbase = 10;\n\t\tbreak;\n\tcase S_HEX:\n\t\tbase = 16;\n\t\tbreak;\n\tdefault:\n\t\treturn;\n\t}\n\tprop = sym_get_range_prop(sym);\n\tif (!prop)\n\t\treturn;\n\tval = strtoll(sym->curr.val, NULL, base);\n\tval2 = sym_get_range_val(prop->expr->left.sym, base);\n\tif (val >= val2) {\n\t\tval2 = sym_get_range_val(prop->expr->right.sym, base);\n\t\tif (val <= val2)\n\t\t\treturn;\n\t}\n\tif (sym->type == S_INT)\n\t\tsprintf(str, \"%lld\", val2);\n\telse\n\t\tsprintf(str, \"0x%llx\", val2);\n\tsym->curr.val = xstrdup(str);\n}\n\nstatic void sym_set_changed(struct symbol *sym)\n{\n\tstruct property *prop;\n\n\tsym->flags |= SYMBOL_CHANGED;\n\tfor (prop = sym->prop; prop; prop = prop->next) {\n\t\tif (prop->menu)\n\t\t\tprop->menu->flags |= MENU_CHANGED;\n\t}\n}\n\nstatic void sym_set_all_changed(void)\n{\n\tstruct symbol *sym;\n\tint i;\n\n\tfor_all_symbols(i, sym)\n\t\tsym_set_changed(sym);\n}\n\nstatic void sym_calc_visibility(struct symbol *sym)\n{\n\tstruct property *prop;\n\tstruct symbol *choice_sym = NULL;\n\ttristate tri;\n\n\t/* any prompt visible? */\n\ttri = no;\n\n\tif (sym_is_choice_value(sym))\n\t\tchoice_sym = prop_get_symbol(sym_get_choice_prop(sym));\n\n\tfor_all_prompts(sym, prop) {\n\t\tprop->visible.tri = expr_calc_value(prop->visible.expr);\n\t\t/*\n\t\t * Tristate choice_values with visibility 'mod' are\n\t\t * not visible if the corresponding choice's value is\n\t\t * 'yes'.\n\t\t */\n\t\tif (choice_sym && sym->type == S_TRISTATE &&\n\t\t    prop->visible.tri == mod && choice_sym->curr.tri == yes)\n\t\t\tprop->visible.tri = no;\n\n\t\ttri = EXPR_OR(tri, prop->visible.tri);\n\t}\n\tif (tri == mod && (sym->type != S_TRISTATE || modules_val == no))\n\t\ttri = yes;\n\tif (sym->visible != tri) {\n\t\tsym->visible = tri;\n\t\tsym_set_changed(sym);\n\t}\n\tif (sym_is_choice_value(sym))\n\t\treturn;\n\t/* defaulting to \"yes\" if no explicit \"depends on\" are given */\n\ttri = yes;\n\tif (sym->dir_dep.expr)\n\t\ttri = expr_calc_value(sym->dir_dep.expr);\n\tif (tri == mod && sym_get_type(sym) == S_BOOLEAN)\n\t\ttri = yes;\n\tif (sym->dir_dep.tri != tri) {\n\t\tsym->dir_dep.tri = tri;\n\t\tsym_set_changed(sym);\n\t}\n\ttri = no;\n\tif (sym->rev_dep.expr)\n\t\ttri = expr_calc_value(sym->rev_dep.expr);\n\tif (tri == mod && sym_get_type(sym) == S_BOOLEAN)\n\t\ttri = yes;\n\tif (sym->rev_dep.tri != tri) {\n\t\tsym->rev_dep.tri = tri;\n\t\tsym_set_changed(sym);\n\t}\n\ttri = no;\n\tif (sym->implied.expr && sym->dir_dep.tri != no)\n\t\ttri = expr_calc_value(sym->implied.expr);\n\tif (tri == mod && sym_get_type(sym) == S_BOOLEAN)\n\t\ttri = yes;\n\tif (sym->implied.tri != tri) {\n\t\tsym->implied.tri = tri;\n\t\tsym_set_changed(sym);\n\t}\n}\n\n/*\n * Find the default symbol for a choice.\n * First try the default values for the choice symbol\n * Next locate the first visible choice value\n * Return NULL if none was found\n */\nstruct symbol *sym_choice_default(struct symbol *sym)\n{\n\tstruct symbol *def_sym;\n\tstruct property *prop;\n\tstruct expr *e;\n\n\t/* any of the defaults visible? */\n\tfor_all_defaults(sym, prop) {\n\t\tprop->visible.tri = expr_calc_value(prop->visible.expr);\n\t\tif (prop->visible.tri == no)\n\t\t\tcontinue;\n\t\tdef_sym = prop_get_symbol(prop);\n\t\tif (def_sym->visible != no)\n\t\t\treturn def_sym;\n\t}\n\n\t/* just get the first visible value */\n\tprop = sym_get_choice_prop(sym);\n\texpr_list_for_each_sym(prop->expr, e, def_sym)\n\t\tif (def_sym->visible != no)\n\t\t\treturn def_sym;\n\n\t/* failed to locate any defaults */\n\treturn NULL;\n}\n\nstatic struct symbol *sym_calc_choice(struct symbol *sym)\n{\n\tstruct symbol *def_sym;\n\tstruct property *prop;\n\tstruct expr *e;\n\tint flags;\n\n\t/* first calculate all choice values' visibilities */\n\tflags = sym->flags;\n\tprop = sym_get_choice_prop(sym);\n\texpr_list_for_each_sym(prop->expr, e, def_sym) {\n\t\tsym_calc_visibility(def_sym);\n\t\tif (def_sym->visible != no)\n\t\t\tflags &= def_sym->flags;\n\t}\n\n\tsym->flags &= flags | ~SYMBOL_DEF_USER;\n\n\t/* is the user choice visible? */\n\tdef_sym = sym->def[S_DEF_USER].val;\n\tif (def_sym && def_sym->visible != no)\n\t\treturn def_sym;\n\n\tdef_sym = sym_choice_default(sym);\n\n\tif (def_sym == NULL)\n\t\t/* no choice? reset tristate value */\n\t\tsym->curr.tri = no;\n\n\treturn def_sym;\n}\n\nstatic void sym_warn_unmet_dep(struct symbol *sym)\n{\n\tstruct gstr gs = str_new();\n\n\tstr_printf(&gs,\n\t\t   \"\\nWARNING: unmet direct dependencies detected for %s\\n\",\n\t\t   sym->name);\n\tstr_printf(&gs,\n\t\t   \"  Depends on [%c]: \",\n\t\t   sym->dir_dep.tri == mod ? 'm' : 'n');\n\texpr_gstr_print(sym->dir_dep.expr, &gs);\n\tstr_printf(&gs, \"\\n\");\n\n\texpr_gstr_print_revdep(sym->rev_dep.expr, &gs, yes,\n\t\t\t       \"  Selected by [y]:\\n\");\n\texpr_gstr_print_revdep(sym->rev_dep.expr, &gs, mod,\n\t\t\t       \"  Selected by [m]:\\n\");\n\n\tfputs(str_get(&gs), stderr);\n}\n\nvoid sym_calc_value(struct symbol *sym)\n{\n\tstruct symbol_value newval, oldval;\n\tstruct property *prop;\n\tstruct expr *e;\n\n\tif (!sym)\n\t\treturn;\n\n\tif (sym->flags & SYMBOL_VALID)\n\t\treturn;\n\n\tif (sym_is_choice_value(sym) &&\n\t    sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) {\n\t\tsym->flags &= ~SYMBOL_NEED_SET_CHOICE_VALUES;\n\t\tprop = sym_get_choice_prop(sym);\n\t\tsym_calc_value(prop_get_symbol(prop));\n\t}\n\n\tsym->flags |= SYMBOL_VALID;\n\n\toldval = sym->curr;\n\n\tswitch (sym->type) {\n\tcase S_INT:\n\tcase S_HEX:\n\tcase S_STRING:\n\t\tnewval = symbol_empty.curr;\n\t\tbreak;\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\tnewval = symbol_no.curr;\n\t\tbreak;\n\tdefault:\n\t\tsym->curr.val = sym->name;\n\t\tsym->curr.tri = no;\n\t\treturn;\n\t}\n\tsym->flags &= ~SYMBOL_WRITE;\n\n\tsym_calc_visibility(sym);\n\n\tif (sym->visible != no)\n\t\tsym->flags |= SYMBOL_WRITE;\n\n\t/* set default if recursively called */\n\tsym->curr = newval;\n\n\tswitch (sym_get_type(sym)) {\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\tif (sym_is_choice_value(sym) && sym->visible == yes) {\n\t\t\tprop = sym_get_choice_prop(sym);\n\t\t\tnewval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no;\n\t\t} else {\n\t\t\tif (sym->visible != no) {\n\t\t\t\t/* if the symbol is visible use the user value\n\t\t\t\t * if available, otherwise try the default value\n\t\t\t\t */\n\t\t\t\tif (sym_has_value(sym)) {\n\t\t\t\t\tnewval.tri = EXPR_AND(sym->def[S_DEF_USER].tri,\n\t\t\t\t\t\t\t      sym->visible);\n\t\t\t\t\tgoto calc_newval;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (sym->rev_dep.tri != no)\n\t\t\t\tsym->flags |= SYMBOL_WRITE;\n\t\t\tif (!sym_is_choice(sym)) {\n\t\t\t\tprop = sym_get_default_prop(sym);\n\t\t\t\tif (prop) {\n\t\t\t\t\tnewval.tri = EXPR_AND(expr_calc_value(prop->expr),\n\t\t\t\t\t\t\t      prop->visible.tri);\n\t\t\t\t\tif (newval.tri != no)\n\t\t\t\t\t\tsym->flags |= SYMBOL_WRITE;\n\t\t\t\t}\n\t\t\t\tif (sym->implied.tri != no) {\n\t\t\t\t\tsym->flags |= SYMBOL_WRITE;\n\t\t\t\t\tnewval.tri = EXPR_OR(newval.tri, sym->implied.tri);\n\t\t\t\t}\n\t\t\t}\n\t\tcalc_newval:\n\t\t\tif (sym->dir_dep.tri < sym->rev_dep.tri)\n\t\t\t\tsym_warn_unmet_dep(sym);\n\t\t\tnewval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri);\n\t\t}\n\t\tif (newval.tri == mod &&\n\t\t    (sym_get_type(sym) == S_BOOLEAN || sym->implied.tri == yes))\n\t\t\tnewval.tri = yes;\n\t\tbreak;\n\tcase S_STRING:\n\tcase S_HEX:\n\tcase S_INT:\n\t\tif (sym->visible != no && sym_has_value(sym)) {\n\t\t\tnewval.val = sym->def[S_DEF_USER].val;\n\t\t\tbreak;\n\t\t}\n\t\tprop = sym_get_default_prop(sym);\n\t\tif (prop) {\n\t\t\tstruct symbol *ds = prop_get_symbol(prop);\n\t\t\tif (ds) {\n\t\t\t\tsym->flags |= SYMBOL_WRITE;\n\t\t\t\tsym_calc_value(ds);\n\t\t\t\tnewval.val = ds->curr.val;\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\t;\n\t}\n\n\tsym->curr = newval;\n\tif (sym_is_choice(sym) && newval.tri == yes)\n\t\tsym->curr.val = sym_calc_choice(sym);\n\tsym_validate_range(sym);\n\n\tif (memcmp(&oldval, &sym->curr, sizeof(oldval))) {\n\t\tsym_set_changed(sym);\n\t\tif (modules_sym == sym) {\n\t\t\tsym_set_all_changed();\n\t\t\tmodules_val = modules_sym->curr.tri;\n\t\t}\n\t}\n\n\tif (sym_is_choice(sym)) {\n\t\tstruct symbol *choice_sym;\n\n\t\tprop = sym_get_choice_prop(sym);\n\t\texpr_list_for_each_sym(prop->expr, e, choice_sym) {\n\t\t\tif ((sym->flags & SYMBOL_WRITE) &&\n\t\t\t    choice_sym->visible != no)\n\t\t\t\tchoice_sym->flags |= SYMBOL_WRITE;\n\t\t\tif (sym->flags & SYMBOL_CHANGED)\n\t\t\t\tsym_set_changed(choice_sym);\n\t\t}\n\t}\n\n\tif (sym->flags & SYMBOL_AUTO)\n\t\tsym->flags &= ~SYMBOL_WRITE;\n\n\tif (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES)\n\t\tset_all_choice_values(sym);\n}\n\nvoid sym_clear_all_valid(void)\n{\n\tstruct symbol *sym;\n\tint i;\n\n\tfor_all_symbols(i, sym)\n\t\tsym->flags &= ~SYMBOL_VALID;\n\tsym_add_change_count(1);\n\tsym_calc_value(modules_sym);\n}\n\nbool sym_tristate_within_range(struct symbol *sym, tristate val)\n{\n\tint type = sym_get_type(sym);\n\n\tif (sym->visible == no)\n\t\treturn false;\n\n\tif (type != S_BOOLEAN && type != S_TRISTATE)\n\t\treturn false;\n\n\tif (type == S_BOOLEAN && val == mod)\n\t\treturn false;\n\tif (sym->visible <= sym->rev_dep.tri)\n\t\treturn false;\n\tif (sym->implied.tri == yes && val == mod)\n\t\treturn false;\n\tif (sym_is_choice_value(sym) && sym->visible == yes)\n\t\treturn val == yes;\n\treturn val >= sym->rev_dep.tri && val <= sym->visible;\n}\n\nbool sym_set_tristate_value(struct symbol *sym, tristate val)\n{\n\ttristate oldval = sym_get_tristate_value(sym);\n\n\tif (oldval != val && !sym_tristate_within_range(sym, val))\n\t\treturn false;\n\n\tif (!(sym->flags & SYMBOL_DEF_USER)) {\n\t\tsym->flags |= SYMBOL_DEF_USER;\n\t\tsym_set_changed(sym);\n\t}\n\t/*\n\t * setting a choice value also resets the new flag of the choice\n\t * symbol and all other choice values.\n\t */\n\tif (sym_is_choice_value(sym) && val == yes) {\n\t\tstruct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));\n\t\tstruct property *prop;\n\t\tstruct expr *e;\n\n\t\tcs->def[S_DEF_USER].val = sym;\n\t\tcs->flags |= SYMBOL_DEF_USER;\n\t\tprop = sym_get_choice_prop(cs);\n\t\tfor (e = prop->expr; e; e = e->left.expr) {\n\t\t\tif (e->right.sym->visible != no)\n\t\t\t\te->right.sym->flags |= SYMBOL_DEF_USER;\n\t\t}\n\t}\n\n\tsym->def[S_DEF_USER].tri = val;\n\tif (oldval != val)\n\t\tsym_clear_all_valid();\n\n\treturn true;\n}\n\ntristate sym_toggle_tristate_value(struct symbol *sym)\n{\n\ttristate oldval, newval;\n\n\toldval = newval = sym_get_tristate_value(sym);\n\tdo {\n\t\tswitch (newval) {\n\t\tcase no:\n\t\t\tnewval = mod;\n\t\t\tbreak;\n\t\tcase mod:\n\t\t\tnewval = yes;\n\t\t\tbreak;\n\t\tcase yes:\n\t\t\tnewval = no;\n\t\t\tbreak;\n\t\t}\n\t\tif (sym_set_tristate_value(sym, newval))\n\t\t\tbreak;\n\t} while (oldval != newval);\n\treturn newval;\n}\n\nbool sym_string_valid(struct symbol *sym, const char *str)\n{\n\tsigned char ch;\n\n\tswitch (sym->type) {\n\tcase S_STRING:\n\t\treturn true;\n\tcase S_INT:\n\t\tch = *str++;\n\t\tif (ch == '-')\n\t\t\tch = *str++;\n\t\tif (!isdigit(ch))\n\t\t\treturn false;\n\t\tif (ch == '0' && *str != 0)\n\t\t\treturn false;\n\t\twhile ((ch = *str++)) {\n\t\t\tif (!isdigit(ch))\n\t\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\tcase S_HEX:\n\t\tif (str[0] == '0' && (str[1] == 'x' || str[1] == 'X'))\n\t\t\tstr += 2;\n\t\tch = *str++;\n\t\tdo {\n\t\t\tif (!isxdigit(ch))\n\t\t\t\treturn false;\n\t\t} while ((ch = *str++));\n\t\treturn true;\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\tswitch (str[0]) {\n\t\tcase 'y': case 'Y':\n\t\tcase 'm': case 'M':\n\t\tcase 'n': case 'N':\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nbool sym_string_within_range(struct symbol *sym, const char *str)\n{\n\tstruct property *prop;\n\tlong long val;\n\n\tswitch (sym->type) {\n\tcase S_STRING:\n\t\treturn sym_string_valid(sym, str);\n\tcase S_INT:\n\t\tif (!sym_string_valid(sym, str))\n\t\t\treturn false;\n\t\tprop = sym_get_range_prop(sym);\n\t\tif (!prop)\n\t\t\treturn true;\n\t\tval = strtoll(str, NULL, 10);\n\t\treturn val >= sym_get_range_val(prop->expr->left.sym, 10) &&\n\t\t       val <= sym_get_range_val(prop->expr->right.sym, 10);\n\tcase S_HEX:\n\t\tif (!sym_string_valid(sym, str))\n\t\t\treturn false;\n\t\tprop = sym_get_range_prop(sym);\n\t\tif (!prop)\n\t\t\treturn true;\n\t\tval = strtoll(str, NULL, 16);\n\t\treturn val >= sym_get_range_val(prop->expr->left.sym, 16) &&\n\t\t       val <= sym_get_range_val(prop->expr->right.sym, 16);\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\tswitch (str[0]) {\n\t\tcase 'y': case 'Y':\n\t\t\treturn sym_tristate_within_range(sym, yes);\n\t\tcase 'm': case 'M':\n\t\t\treturn sym_tristate_within_range(sym, mod);\n\t\tcase 'n': case 'N':\n\t\t\treturn sym_tristate_within_range(sym, no);\n\t\t}\n\t\treturn false;\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nbool sym_set_string_value(struct symbol *sym, const char *newval)\n{\n\tconst char *oldval;\n\tchar *val;\n\tint size;\n\n\tswitch (sym->type) {\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\tswitch (newval[0]) {\n\t\tcase 'y': case 'Y':\n\t\t\treturn sym_set_tristate_value(sym, yes);\n\t\tcase 'm': case 'M':\n\t\t\treturn sym_set_tristate_value(sym, mod);\n\t\tcase 'n': case 'N':\n\t\t\treturn sym_set_tristate_value(sym, no);\n\t\t}\n\t\treturn false;\n\tdefault:\n\t\t;\n\t}\n\n\tif (!sym_string_within_range(sym, newval))\n\t\treturn false;\n\n\tif (!(sym->flags & SYMBOL_DEF_USER)) {\n\t\tsym->flags |= SYMBOL_DEF_USER;\n\t\tsym_set_changed(sym);\n\t}\n\n\toldval = sym->def[S_DEF_USER].val;\n\tsize = strlen(newval) + 1;\n\tif (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) {\n\t\tsize += 2;\n\t\tsym->def[S_DEF_USER].val = val = xmalloc(size);\n\t\t*val++ = '0';\n\t\t*val++ = 'x';\n\t} else if (!oldval || strcmp(oldval, newval))\n\t\tsym->def[S_DEF_USER].val = val = xmalloc(size);\n\telse\n\t\treturn true;\n\n\tstrcpy(val, newval);\n\tfree((void *)oldval);\n\tsym_clear_all_valid();\n\n\treturn true;\n}\n\n/*\n * Find the default value associated to a symbol.\n * For tristate symbol handle the modules=n case\n * in which case \"m\" becomes \"y\".\n * If the symbol does not have any default then fallback\n * to the fixed default values.\n */\nconst char *sym_get_string_default(struct symbol *sym)\n{\n\tstruct property *prop;\n\tstruct symbol *ds;\n\tconst char *str;\n\ttristate val;\n\n\tsym_calc_visibility(sym);\n\tsym_calc_value(modules_sym);\n\tval = symbol_no.curr.tri;\n\tstr = symbol_empty.curr.val;\n\n\t/* If symbol has a default value look it up */\n\tprop = sym_get_default_prop(sym);\n\tif (prop != NULL) {\n\t\tswitch (sym->type) {\n\t\tcase S_BOOLEAN:\n\t\tcase S_TRISTATE:\n\t\t\t/* The visibility may limit the value from yes => mod */\n\t\t\tval = EXPR_AND(expr_calc_value(prop->expr), prop->visible.tri);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t/*\n\t\t\t * The following fails to handle the situation\n\t\t\t * where a default value is further limited by\n\t\t\t * the valid range.\n\t\t\t */\n\t\t\tds = prop_get_symbol(prop);\n\t\t\tif (ds != NULL) {\n\t\t\t\tsym_calc_value(ds);\n\t\t\t\tstr = (const char *)ds->curr.val;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Handle select statements */\n\tval = EXPR_OR(val, sym->rev_dep.tri);\n\n\t/* transpose mod to yes if modules are not enabled */\n\tif (val == mod)\n\t\tif (!sym_is_choice_value(sym) && modules_sym->curr.tri == no)\n\t\t\tval = yes;\n\n\t/* transpose mod to yes if type is bool */\n\tif (sym->type == S_BOOLEAN && val == mod)\n\t\tval = yes;\n\n\t/* adjust the default value if this symbol is implied by another */\n\tif (val < sym->implied.tri)\n\t\tval = sym->implied.tri;\n\n\tswitch (sym->type) {\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\tswitch (val) {\n\t\tcase no: return \"n\";\n\t\tcase mod: return \"m\";\n\t\tcase yes: return \"y\";\n\t\t}\n\tcase S_INT:\n\tcase S_HEX:\n\t\treturn str;\n\tcase S_STRING:\n\t\treturn str;\n\tcase S_OTHER:\n\tcase S_UNKNOWN:\n\t\tbreak;\n\t}\n\treturn \"\";\n}\n\nconst char *sym_get_string_value(struct symbol *sym)\n{\n\ttristate val;\n\n\tswitch (sym->type) {\n\tcase S_BOOLEAN:\n\tcase S_TRISTATE:\n\t\tval = sym_get_tristate_value(sym);\n\t\tswitch (val) {\n\t\tcase no:\n\t\t\treturn \"n\";\n\t\tcase mod:\n\t\t\tsym_calc_value(modules_sym);\n\t\t\treturn (modules_sym->curr.tri == no) ? \"n\" : \"m\";\n\t\tcase yes:\n\t\t\treturn \"y\";\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\t;\n\t}\n\treturn (const char *)sym->curr.val;\n}\n\nbool sym_is_changable(struct symbol *sym)\n{\n\treturn sym->visible > sym->rev_dep.tri;\n}\n\nstatic unsigned strhash(const char *s)\n{\n\t/* fnv32 hash */\n\tunsigned hash = 2166136261U;\n\tfor (; *s; s++)\n\t\thash = (hash ^ *s) * 0x01000193;\n\treturn hash;\n}\n\nstruct symbol *sym_lookup(const char *name, int flags)\n{\n\tstruct symbol *symbol;\n\tchar *new_name;\n\tint hash;\n\n\tif (name) {\n\t\tif (name[0] && !name[1]) {\n\t\t\tswitch (name[0]) {\n\t\t\tcase 'y': return &symbol_yes;\n\t\t\tcase 'm': return &symbol_mod;\n\t\t\tcase 'n': return &symbol_no;\n\t\t\t}\n\t\t}\n\t\thash = strhash(name) % SYMBOL_HASHSIZE;\n\n\t\tfor (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {\n\t\t\tif (symbol->name &&\n\t\t\t    !strcmp(symbol->name, name) &&\n\t\t\t    (flags ? symbol->flags & flags\n\t\t\t\t   : !(symbol->flags & (SYMBOL_CONST|SYMBOL_CHOICE))))\n\t\t\t\treturn symbol;\n\t\t}\n\t\tnew_name = xstrdup(name);\n\t} else {\n\t\tnew_name = NULL;\n\t\thash = 0;\n\t}\n\n\tsymbol = xmalloc(sizeof(*symbol));\n\tmemset(symbol, 0, sizeof(*symbol));\n\tsymbol->name = new_name;\n\tsymbol->type = S_UNKNOWN;\n\tsymbol->flags |= flags;\n\n\tsymbol->next = symbol_hash[hash];\n\tsymbol_hash[hash] = symbol;\n\n\treturn symbol;\n}\n\nstruct symbol *sym_find(const char *name)\n{\n\tstruct symbol *symbol = NULL;\n\tint hash = 0;\n\n\tif (!name)\n\t\treturn NULL;\n\n\tif (name[0] && !name[1]) {\n\t\tswitch (name[0]) {\n\t\tcase 'y': return &symbol_yes;\n\t\tcase 'm': return &symbol_mod;\n\t\tcase 'n': return &symbol_no;\n\t\t}\n\t}\n\thash = strhash(name) % SYMBOL_HASHSIZE;\n\n\tfor (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {\n\t\tif (symbol->name &&\n\t\t    !strcmp(symbol->name, name) &&\n\t\t    !(symbol->flags & SYMBOL_CONST))\n\t\t\t\tbreak;\n\t}\n\n\treturn symbol;\n}\n\n/*\n * Expand symbol's names embedded in the string given in argument. Symbols'\n * name to be expanded shall be prefixed by a '$'. Unknown symbol expands to\n * the empty string.\n */\nchar *sym_expand_string_value(const char *in)\n{\n\tconst char *src;\n\tchar *res;\n\tsize_t reslen;\n\n\t/*\n\t * Note: 'in' might come from a token that's about to be\n\t * freed, so make sure to always allocate a new string\n\t */\n\treslen = strlen(in) + 1;\n\tres = xmalloc(reslen);\n\tres[0] = '\\0';\n\n\twhile ((src = strchr(in, '$'))) {\n\t\tchar *p, name[SYMBOL_MAXLENGTH];\n\t\tconst char *symval = \"\";\n\t\tstruct symbol *sym;\n\t\tsize_t newlen;\n\n\t\tstrncat(res, in, src - in);\n\t\tsrc++;\n\n\t\tp = name;\n\t\twhile (isalnum(*src) || *src == '_')\n\t\t\t*p++ = *src++;\n\t\t*p = '\\0';\n\n\t\tsym = sym_find(name);\n\t\tif (sym != NULL) {\n\t\t\tsym_calc_value(sym);\n\t\t\tsymval = sym_get_string_value(sym);\n\t\t}\n\n\t\tnewlen = strlen(res) + strlen(symval) + strlen(src) + 1;\n\t\tif (newlen > reslen) {\n\t\t\treslen = newlen;\n\t\t\tres = xrealloc(res, reslen);\n\t\t}\n\n\t\tstrcat(res, symval);\n\t\tin = src;\n\t}\n\tstrcat(res, in);\n\n\treturn res;\n}\n\nconst char *sym_escape_string_value(const char *in)\n{\n\tconst char *p;\n\tsize_t reslen;\n\tchar *res;\n\tsize_t l;\n\n\treslen = strlen(in) + strlen(\"\\\"\\\"\") + 1;\n\n\tp = in;\n\tfor (;;) {\n\t\tl = strcspn(p, \"\\\"\\\\\");\n\t\tp += l;\n\n\t\tif (p[0] == '\\0')\n\t\t\tbreak;\n\n\t\treslen++;\n\t\tp++;\n\t}\n\n\tres = xmalloc(reslen);\n\tres[0] = '\\0';\n\n\tstrcat(res, \"\\\"\");\n\n\tp = in;\n\tfor (;;) {\n\t\tl = strcspn(p, \"\\\"\\\\\");\n\t\tstrncat(res, p, l);\n\t\tp += l;\n\n\t\tif (p[0] == '\\0')\n\t\t\tbreak;\n\n\t\tstrcat(res, \"\\\\\");\n\t\tstrncat(res, p++, 1);\n\t}\n\n\tstrcat(res, \"\\\"\");\n\treturn res;\n}\n\nstruct sym_match {\n\tstruct symbol\t*sym;\n\toff_t\t\tso, eo;\n};\n\n/* Compare matched symbols as thus:\n * - first, symbols that match exactly\n * - then, alphabetical sort\n */\nstatic int sym_rel_comp(const void *sym1, const void *sym2)\n{\n\tconst struct sym_match *s1 = sym1;\n\tconst struct sym_match *s2 = sym2;\n\tint exact1, exact2;\n\n\t/* Exact match:\n\t * - if matched length on symbol s1 is the length of that symbol,\n\t *   then this symbol should come first;\n\t * - if matched length on symbol s2 is the length of that symbol,\n\t *   then this symbol should come first.\n\t * Note: since the search can be a regexp, both symbols may match\n\t * exactly; if this is the case, we can't decide which comes first,\n\t * and we fallback to sorting alphabetically.\n\t */\n\texact1 = (s1->eo - s1->so) == strlen(s1->sym->name);\n\texact2 = (s2->eo - s2->so) == strlen(s2->sym->name);\n\tif (exact1 && !exact2)\n\t\treturn -1;\n\tif (!exact1 && exact2)\n\t\treturn 1;\n\n\t/* As a fallback, sort symbols alphabetically */\n\treturn strcmp(s1->sym->name, s2->sym->name);\n}\n\nstruct symbol **sym_re_search(const char *pattern)\n{\n\tstruct symbol *sym, **sym_arr = NULL;\n\tstruct sym_match *sym_match_arr = NULL;\n\tint i, cnt, size;\n\tregex_t re;\n\tregmatch_t match[1];\n\n\tcnt = size = 0;\n\t/* Skip if empty */\n\tif (strlen(pattern) == 0)\n\t\treturn NULL;\n\tif (regcomp(&re, pattern, REG_EXTENDED|REG_ICASE))\n\t\treturn NULL;\n\n\tfor_all_symbols(i, sym) {\n\t\tif (sym->flags & SYMBOL_CONST || !sym->name)\n\t\t\tcontinue;\n\t\tif (regexec(&re, sym->name, 1, match, 0))\n\t\t\tcontinue;\n\t\tif (cnt >= size) {\n\t\t\tvoid *tmp;\n\t\t\tsize += 16;\n\t\t\ttmp = realloc(sym_match_arr, size * sizeof(struct sym_match));\n\t\t\tif (!tmp)\n\t\t\t\tgoto sym_re_search_free;\n\t\t\tsym_match_arr = tmp;\n\t\t}\n\t\tsym_calc_value(sym);\n\t\t/* As regexec returned 0, we know we have a match, so\n\t\t * we can use match[0].rm_[se]o without further checks\n\t\t */\n\t\tsym_match_arr[cnt].so = match[0].rm_so;\n\t\tsym_match_arr[cnt].eo = match[0].rm_eo;\n\t\tsym_match_arr[cnt++].sym = sym;\n\t}\n\tif (sym_match_arr) {\n\t\tqsort(sym_match_arr, cnt, sizeof(struct sym_match), sym_rel_comp);\n\t\tsym_arr = malloc((cnt+1) * sizeof(struct symbol *));\n\t\tif (!sym_arr)\n\t\t\tgoto sym_re_search_free;\n\t\tfor (i = 0; i < cnt; i++)\n\t\t\tsym_arr[i] = sym_match_arr[i].sym;\n\t\tsym_arr[cnt] = NULL;\n\t}\nsym_re_search_free:\n\t/* sym_match_arr can be NULL if no match, but free(NULL) is OK */\n\tfree(sym_match_arr);\n\tregfree(&re);\n\n\treturn sym_arr;\n}\n\n/*\n * When we check for recursive dependencies we use a stack to save\n * current state so we can print out relevant info to user.\n * The entries are located on the call stack so no need to free memory.\n * Note insert() remove() must always match to properly clear the stack.\n */\nstatic struct dep_stack {\n\tstruct dep_stack *prev, *next;\n\tstruct symbol *sym;\n\tstruct property *prop;\n\tstruct expr *expr;\n} *check_top;\n\nstatic void dep_stack_insert(struct dep_stack *stack, struct symbol *sym)\n{\n\tmemset(stack, 0, sizeof(*stack));\n\tif (check_top)\n\t\tcheck_top->next = stack;\n\tstack->prev = check_top;\n\tstack->sym = sym;\n\tcheck_top = stack;\n}\n\nstatic void dep_stack_remove(void)\n{\n\tcheck_top = check_top->prev;\n\tif (check_top)\n\t\tcheck_top->next = NULL;\n}\n\n/*\n * Called when we have detected a recursive dependency.\n * check_top point to the top of the stact so we use\n * the ->prev pointer to locate the bottom of the stack.\n */\nstatic void sym_check_print_recursive(struct symbol *last_sym)\n{\n\tstruct dep_stack *stack;\n\tstruct symbol *sym, *next_sym;\n\tstruct menu *menu = NULL;\n\tstruct property *prop;\n\tstruct dep_stack cv_stack;\n\n\tif (sym_is_choice_value(last_sym)) {\n\t\tdep_stack_insert(&cv_stack, last_sym);\n\t\tlast_sym = prop_get_symbol(sym_get_choice_prop(last_sym));\n\t}\n\n\tfor (stack = check_top; stack != NULL; stack = stack->prev)\n\t\tif (stack->sym == last_sym)\n\t\t\tbreak;\n\tif (!stack) {\n\t\tfprintf(stderr, \"unexpected recursive dependency error\\n\");\n\t\treturn;\n\t}\n\n\tfor (; stack; stack = stack->next) {\n\t\tsym = stack->sym;\n\t\tnext_sym = stack->next ? stack->next->sym : last_sym;\n\t\tprop = stack->prop;\n\t\tif (prop == NULL)\n\t\t\tprop = stack->sym->prop;\n\n\t\t/* for choice values find the menu entry (used below) */\n\t\tif (sym_is_choice(sym) || sym_is_choice_value(sym)) {\n\t\t\tfor (prop = sym->prop; prop; prop = prop->next) {\n\t\t\t\tmenu = prop->menu;\n\t\t\t\tif (prop->menu)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (stack->sym == last_sym)\n\t\t\tfprintf(stderr, \"%s:%d:error: recursive dependency detected!\\n\",\n\t\t\t\tprop->file->name, prop->lineno);\n\n\t\tif (stack->expr) {\n\t\t\tfprintf(stderr, \"%s:%d:\\tsymbol %s %s value contains %s\\n\",\n\t\t\t\tprop->file->name, prop->lineno,\n\t\t\t\tsym->name ? sym->name : \"<choice>\",\n\t\t\t\tprop_get_type_name(prop->type),\n\t\t\t\tnext_sym->name ? next_sym->name : \"<choice>\");\n\t\t} else if (stack->prop) {\n\t\t\tfprintf(stderr, \"%s:%d:\\tsymbol %s depends on %s\\n\",\n\t\t\t\tprop->file->name, prop->lineno,\n\t\t\t\tsym->name ? sym->name : \"<choice>\",\n\t\t\t\tnext_sym->name ? next_sym->name : \"<choice>\");\n\t\t} else if (sym_is_choice(sym)) {\n\t\t\tfprintf(stderr, \"%s:%d:\\tchoice %s contains symbol %s\\n\",\n\t\t\t\tmenu->file->name, menu->lineno,\n\t\t\t\tsym->name ? sym->name : \"<choice>\",\n\t\t\t\tnext_sym->name ? next_sym->name : \"<choice>\");\n\t\t} else if (sym_is_choice_value(sym)) {\n\t\t\tfprintf(stderr, \"%s:%d:\\tsymbol %s is part of choice %s\\n\",\n\t\t\t\tmenu->file->name, menu->lineno,\n\t\t\t\tsym->name ? sym->name : \"<choice>\",\n\t\t\t\tnext_sym->name ? next_sym->name : \"<choice>\");\n\t\t} else {\n\t\t\tfprintf(stderr, \"%s:%d:\\tsymbol %s is selected by %s\\n\",\n\t\t\t\tprop->file->name, prop->lineno,\n\t\t\t\tsym->name ? sym->name : \"<choice>\",\n\t\t\t\tnext_sym->name ? next_sym->name : \"<choice>\");\n\t\t}\n\t}\n\n\tfprintf(stderr,\n\t\t\"For a resolution refer to Documentation/kbuild/kconfig-language.txt\\n\"\n\t\t\"subsection \\\"Kconfig recursive dependency limitations\\\"\\n\"\n\t\t\"\\n\");\n\n\tif (check_top == &cv_stack)\n\t\tdep_stack_remove();\n}\n\nstatic struct symbol *sym_check_expr_deps(struct expr *e)\n{\n\tstruct symbol *sym;\n\n\tif (!e)\n\t\treturn NULL;\n\tswitch (e->type) {\n\tcase E_OR:\n\tcase E_AND:\n\t\tsym = sym_check_expr_deps(e->left.expr);\n\t\tif (sym)\n\t\t\treturn sym;\n\t\treturn sym_check_expr_deps(e->right.expr);\n\tcase E_NOT:\n\t\treturn sym_check_expr_deps(e->left.expr);\n\tcase E_EQUAL:\n\tcase E_GEQ:\n\tcase E_GTH:\n\tcase E_LEQ:\n\tcase E_LTH:\n\tcase E_UNEQUAL:\n\t\tsym = sym_check_deps(e->left.sym);\n\t\tif (sym)\n\t\t\treturn sym;\n\t\treturn sym_check_deps(e->right.sym);\n\tcase E_SYMBOL:\n\t\treturn sym_check_deps(e->left.sym);\n\tdefault:\n\t\tbreak;\n\t}\n\tfprintf(stderr, \"Oops! How to check %d?\\n\", e->type);\n\treturn NULL;\n}\n\n/* return NULL when dependencies are OK */\nstatic struct symbol *sym_check_sym_deps(struct symbol *sym)\n{\n\tstruct symbol *sym2;\n\tstruct property *prop;\n\tstruct dep_stack stack;\n\n\tdep_stack_insert(&stack, sym);\n\n\tsym2 = sym_check_expr_deps(sym->rev_dep.expr);\n\tif (sym2)\n\t\tgoto out;\n\n\tfor (prop = sym->prop; prop; prop = prop->next) {\n\t\tif (prop->type == P_CHOICE || prop->type == P_SELECT)\n\t\t\tcontinue;\n\t\tstack.prop = prop;\n\t\tsym2 = sym_check_expr_deps(prop->visible.expr);\n\t\tif (sym2)\n\t\t\tbreak;\n\t\tif (prop->type != P_DEFAULT || sym_is_choice(sym))\n\t\t\tcontinue;\n\t\tstack.expr = prop->expr;\n\t\tsym2 = sym_check_expr_deps(prop->expr);\n\t\tif (sym2)\n\t\t\tbreak;\n\t\tstack.expr = NULL;\n\t}\n\nout:\n\tdep_stack_remove();\n\n\treturn sym2;\n}\n\nstatic struct symbol *sym_check_choice_deps(struct symbol *choice)\n{\n\tstruct symbol *sym, *sym2;\n\tstruct property *prop;\n\tstruct expr *e;\n\tstruct dep_stack stack;\n\n\tdep_stack_insert(&stack, choice);\n\n\tprop = sym_get_choice_prop(choice);\n\texpr_list_for_each_sym(prop->expr, e, sym)\n\t\tsym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);\n\n\tchoice->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);\n\tsym2 = sym_check_sym_deps(choice);\n\tchoice->flags &= ~SYMBOL_CHECK;\n\tif (sym2)\n\t\tgoto out;\n\n\texpr_list_for_each_sym(prop->expr, e, sym) {\n\t\tsym2 = sym_check_sym_deps(sym);\n\t\tif (sym2)\n\t\t\tbreak;\n\t}\nout:\n\texpr_list_for_each_sym(prop->expr, e, sym)\n\t\tsym->flags &= ~SYMBOL_CHECK;\n\n\tif (sym2 && sym_is_choice_value(sym2) &&\n\t    prop_get_symbol(sym_get_choice_prop(sym2)) == choice)\n\t\tsym2 = choice;\n\n\tdep_stack_remove();\n\n\treturn sym2;\n}\n\nstruct symbol *sym_check_deps(struct symbol *sym)\n{\n\tstruct symbol *sym2;\n\tstruct property *prop;\n\n\tif (sym->flags & SYMBOL_CHECK) {\n\t\tsym_check_print_recursive(sym);\n\t\treturn sym;\n\t}\n\tif (sym->flags & SYMBOL_CHECKED)\n\t\treturn NULL;\n\n\tif (sym_is_choice_value(sym)) {\n\t\tstruct dep_stack stack;\n\n\t\t/* for choice groups start the check with main choice symbol */\n\t\tdep_stack_insert(&stack, sym);\n\t\tprop = sym_get_choice_prop(sym);\n\t\tsym2 = sym_check_deps(prop_get_symbol(prop));\n\t\tdep_stack_remove();\n\t} else if (sym_is_choice(sym)) {\n\t\tsym2 = sym_check_choice_deps(sym);\n\t} else {\n\t\tsym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);\n\t\tsym2 = sym_check_sym_deps(sym);\n\t\tsym->flags &= ~SYMBOL_CHECK;\n\t}\n\n\tif (sym2 && sym2 == sym)\n\t\tsym2 = NULL;\n\n\treturn sym2;\n}\n\nstruct property *prop_alloc(enum prop_type type, struct symbol *sym)\n{\n\tstruct property *prop;\n\tstruct property **propp;\n\n\tprop = xmalloc(sizeof(*prop));\n\tmemset(prop, 0, sizeof(*prop));\n\tprop->type = type;\n\tprop->sym = sym;\n\tprop->file = current_file;\n\tprop->lineno = zconf_lineno();\n\n\t/* append property to the prop list of symbol */\n\tif (sym) {\n\t\tfor (propp = &sym->prop; *propp; propp = &(*propp)->next)\n\t\t\t;\n\t\t*propp = prop;\n\t}\n\n\treturn prop;\n}\n\nstruct symbol *prop_get_symbol(struct property *prop)\n{\n\tif (prop->expr && (prop->expr->type == E_SYMBOL ||\n\t\t\t   prop->expr->type == E_LIST))\n\t\treturn prop->expr->left.sym;\n\treturn NULL;\n}\n\nconst char *prop_get_type_name(enum prop_type type)\n{\n\tswitch (type) {\n\tcase P_PROMPT:\n\t\treturn \"prompt\";\n\tcase P_ENV:\n\t\treturn \"env\";\n\tcase P_COMMENT:\n\t\treturn \"comment\";\n\tcase P_MENU:\n\t\treturn \"menu\";\n\tcase P_DEFAULT:\n\t\treturn \"default\";\n\tcase P_CHOICE:\n\t\treturn \"choice\";\n\tcase P_SELECT:\n\t\treturn \"select\";\n\tcase P_IMPLY:\n\t\treturn \"imply\";\n\tcase P_RANGE:\n\t\treturn \"range\";\n\tcase P_SYMBOL:\n\t\treturn \"symbol\";\n\tcase P_UNKNOWN:\n\t\tbreak;\n\t}\n\treturn \"unknown\";\n}\n\nstatic void prop_add_env(const char *env)\n{\n\tstruct symbol *sym, *sym2;\n\tstruct property *prop;\n\tchar *p;\n\n\tsym = current_entry->sym;\n\tsym->flags |= SYMBOL_AUTO;\n\tfor_all_properties(sym, prop, P_ENV) {\n\t\tsym2 = prop_get_symbol(prop);\n\t\tif (strcmp(sym2->name, env))\n\t\t\tmenu_warn(current_entry, \"redefining environment symbol from %s\",\n\t\t\t\t  sym2->name);\n\t\treturn;\n\t}\n\n\tprop = prop_alloc(P_ENV, sym);\n\tprop->expr = expr_alloc_symbol(sym_lookup(env, SYMBOL_CONST));\n\n\tsym_env_list = expr_alloc_one(E_LIST, sym_env_list);\n\tsym_env_list->right.sym = sym;\n\n\tp = getenv(env);\n\tif (p)\n\t\tsym_add_default(sym, p);\n\telse\n\t\tmenu_warn(current_entry, \"environment variable %s undefined\", env);\n}\n"
  },
  {
    "path": "support/kconfig/util.c",
    "content": "/*\n * Copyright (C) 2002-2005 Roman Zippel <zippel@linux-m68k.org>\n * Copyright (C) 2002-2005 Sam Ravnborg <sam@ravnborg.org>\n *\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#include <stdarg.h>\n#include <stdlib.h>\n#include <string.h>\n#include \"lkc.h\"\n\n/* file already present in list? If not add it */\nstruct file *file_lookup(const char *name)\n{\n\tstruct file *file;\n\tchar *file_name = sym_expand_string_value(name);\n\n\tfor (file = file_list; file; file = file->next) {\n\t\tif (!strcmp(name, file->name)) {\n\t\t\tfree(file_name);\n\t\t\treturn file;\n\t\t}\n\t}\n\n\tfile = xmalloc(sizeof(*file));\n\tmemset(file, 0, sizeof(*file));\n\tfile->name = file_name;\n\tfile->next = file_list;\n\tfile_list = file;\n\treturn file;\n}\n\n/* write a dependency file as used by kbuild to track dependencies */\nint file_write_dep(const char *name)\n{\n\tchar *str;\n\tchar buf[PATH_MAX+20], buf2[PATH_MAX+1], dir[PATH_MAX+1];\n\tstruct symbol *sym, *env_sym;\n\tstruct expr *e;\n\tstruct file *file;\n\tFILE *out;\n\n\tif (!name)\n\t\tname = \".kconfig.d\";\n\n\tstrcpy(dir, conf_get_configname());\n\tstr = strrchr(dir, '/');\n\tif (str)\n\t\tstr[1] = 0;\n\telse\n\t\tdir[0] = 0;\n\n\tsprintf(buf, \"%s..config.tmp\", dir);\n\tout = fopen(buf, \"w\");\n\tif (!out)\n\t\treturn 1;\n\tfprintf(out, \"deps_config := \\\\\\n\");\n\tfor (file = file_list; file; file = file->next) {\n\t\tif (file->next)\n\t\t\tfprintf(out, \"\\t%s \\\\\\n\", file->name);\n\t\telse\n\t\t\tfprintf(out, \"\\t%s\\n\", file->name);\n\t}\n\tfprintf(out, \"\\n%s: \\\\\\n\"\n\t\t     \"\\t$(deps_config)\\n\\n\", conf_get_autoconfig_name());\n\n\texpr_list_for_each_sym(sym_env_list, e, sym) {\n\t\tstruct property *prop;\n\t\tconst char *value;\n\n\t\tprop = sym_get_env_prop(sym);\n\t\tenv_sym = prop_get_symbol(prop);\n\t\tif (!env_sym)\n\t\t\tcontinue;\n\t\tvalue = getenv(env_sym->name);\n\t\tif (!value)\n\t\t\tvalue = \"\";\n\t\tfprintf(out, \"ifneq \\\"$(%s)\\\" \\\"%s\\\"\\n\", env_sym->name, value);\n\t\tfprintf(out, \"%s: FORCE\\n\", conf_get_autoconfig_name());\n\t\tfprintf(out, \"endif\\n\");\n\t}\n\n\tfprintf(out, \"\\n$(deps_config): ;\\n\");\n\tfclose(out);\n\tsprintf(buf2, \"%s%s\", dir, name);\n\trename(buf, buf2);\n\treturn 0;\n}\n\n\n/* Allocate initial growable string */\nstruct gstr str_new(void)\n{\n\tstruct gstr gs;\n\tgs.s = xmalloc(sizeof(char) * 64);\n\tgs.len = 64;\n\tgs.max_width = 0;\n\tstrcpy(gs.s, \"\\0\");\n\treturn gs;\n}\n\n/* Free storage for growable string */\nvoid str_free(struct gstr *gs)\n{\n\tif (gs->s)\n\t\tfree(gs->s);\n\tgs->s = NULL;\n\tgs->len = 0;\n}\n\n/* Append to growable string */\nvoid str_append(struct gstr *gs, const char *s)\n{\n\tsize_t l;\n\tif (s) {\n\t\tl = strlen(gs->s) + strlen(s) + 1;\n\t\tif (l > gs->len) {\n\t\t\tgs->s = xrealloc(gs->s, l);\n\t\t\tgs->len = l;\n\t\t}\n\t\tstrcat(gs->s, s);\n\t}\n}\n\n/* Append printf formatted string to growable string */\nvoid str_printf(struct gstr *gs, const char *fmt, ...)\n{\n\tva_list ap;\n\tchar s[10000]; /* big enough... */\n\tva_start(ap, fmt);\n\tvsnprintf(s, sizeof(s), fmt, ap);\n\tstr_append(gs, s);\n\tva_end(ap);\n}\n\n/* Retrieve value of growable string */\nconst char *str_get(struct gstr *gs)\n{\n\treturn gs->s;\n}\n\nvoid *xmalloc(size_t size)\n{\n\tvoid *p = malloc(size);\n\tif (p)\n\t\treturn p;\n\tfprintf(stderr, \"Out of memory.\\n\");\n\texit(1);\n}\n\nvoid *xcalloc(size_t nmemb, size_t size)\n{\n\tvoid *p = calloc(nmemb, size);\n\tif (p)\n\t\treturn p;\n\tfprintf(stderr, \"Out of memory.\\n\");\n\texit(1);\n}\n\nvoid *xrealloc(void *p, size_t size)\n{\n\tp = realloc(p, size);\n\tif (p)\n\t\treturn p;\n\tfprintf(stderr, \"Out of memory.\\n\");\n\texit(1);\n}\n\nchar *xstrdup(const char *s)\n{\n\tchar *p;\n\n\tp = strdup(s);\n\tif (p)\n\t\treturn p;\n\tfprintf(stderr, \"Out of memory.\\n\");\n\texit(1);\n}\n"
  },
  {
    "path": "support/kconfig/zconf.l",
    "content": "%option nostdinit noyywrap never-interactive full ecs\n%option 8bit nodefault yylineno\n%option noinput\n%x COMMAND HELP STRING PARAM\n%{\n/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#include <limits.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n\n#include \"lkc.h\"\n\n#define START_STRSIZE\t16\n\nstatic struct {\n\tstruct file *file;\n\tint lineno;\n} current_pos;\n\nstatic char *text;\nstatic int text_size, text_asize;\n\nstruct buffer {\n\tstruct buffer *parent;\n\tYY_BUFFER_STATE state;\n};\n\nstruct buffer *current_buf;\n\nstatic int last_ts, first_ts;\n\nstatic void zconf_endhelp(void);\nstatic void zconf_endfile(void);\n\nstatic void new_string(void)\n{\n\ttext = xmalloc(START_STRSIZE);\n\ttext_asize = START_STRSIZE;\n\ttext_size = 0;\n\t*text = 0;\n}\n\nstatic void append_string(const char *str, int size)\n{\n\tint new_size = text_size + size + 1;\n\tif (new_size > text_asize) {\n\t\tnew_size += START_STRSIZE - 1;\n\t\tnew_size &= -START_STRSIZE;\n\t\ttext = xrealloc(text, new_size);\n\t\ttext_asize = new_size;\n\t}\n\tmemcpy(text + text_size, str, size);\n\ttext_size += size;\n\ttext[text_size] = 0;\n}\n\nstatic void alloc_string(const char *str, int size)\n{\n\ttext = xmalloc(size + 1);\n\tmemcpy(text, str, size);\n\ttext[size] = 0;\n}\n\nstatic void warn_ignored_character(char chr)\n{\n\tfprintf(stderr,\n\t        \"%s:%d:warning: ignoring unsupported character '%c'\\n\",\n\t        zconf_curname(), zconf_lineno(), chr);\n}\n%}\n\nn\t[A-Za-z0-9_-]\n\n%%\n\tint str = 0;\n\tint ts, i;\n\n[ \\t]*#.*\\n\t|\n[ \\t]*\\n\t{\n\treturn T_EOL;\n}\n[ \\t]*#.*\n\n\n[ \\t]+\t{\n\tBEGIN(COMMAND);\n}\n\n.\t{\n\tunput(yytext[0]);\n\tBEGIN(COMMAND);\n}\n\n\n<COMMAND>{\n\t{n}+\t{\n\t\tconst struct kconf_id *id = kconf_id_lookup(yytext, yyleng);\n\t\tBEGIN(PARAM);\n\t\tcurrent_pos.file = current_file;\n\t\tcurrent_pos.lineno = yylineno;\n\t\tif (id && id->flags & TF_COMMAND) {\n\t\t\tyylval.id = id;\n\t\t\treturn id->token;\n\t\t}\n\t\talloc_string(yytext, yyleng);\n\t\tyylval.string = text;\n\t\treturn T_WORD;\n\t}\n\t.\twarn_ignored_character(*yytext);\n\t\\n\t{\n\t\tBEGIN(INITIAL);\n\t\treturn T_EOL;\n\t}\n}\n\n<PARAM>{\n\t\"&&\"\treturn T_AND;\n\t\"||\"\treturn T_OR;\n\t\"(\"\treturn T_OPEN_PAREN;\n\t\")\"\treturn T_CLOSE_PAREN;\n\t\"!\"\treturn T_NOT;\n\t\"=\"\treturn T_EQUAL;\n\t\"!=\"\treturn T_UNEQUAL;\n\t\"<=\"\treturn T_LESS_EQUAL;\n\t\">=\"\treturn T_GREATER_EQUAL;\n\t\"<\"\treturn T_LESS;\n\t\">\"\treturn T_GREATER;\n\t\\\"|\\'\t{\n\t\tstr = yytext[0];\n\t\tnew_string();\n\t\tBEGIN(STRING);\n\t}\n\t\\n\tBEGIN(INITIAL); return T_EOL;\n\t({n}|[/.])+\t{\n\t\tconst struct kconf_id *id = kconf_id_lookup(yytext, yyleng);\n\t\tif (id && id->flags & TF_PARAM) {\n\t\t\tyylval.id = id;\n\t\t\treturn id->token;\n\t\t}\n\t\talloc_string(yytext, yyleng);\n\t\tyylval.string = text;\n\t\treturn T_WORD;\n\t}\n\t#.*\t/* comment */\n\t\\\\\\n\t;\n\t[[:blank:]]+\n\t.\twarn_ignored_character(*yytext);\n\t<<EOF>> {\n\t\tBEGIN(INITIAL);\n\t}\n}\n\n<STRING>{\n\t[^'\"\\\\\\n]+/\\n\t{\n\t\tappend_string(yytext, yyleng);\n\t\tyylval.string = text;\n\t\treturn T_WORD_QUOTE;\n\t}\n\t[^'\"\\\\\\n]+\t{\n\t\tappend_string(yytext, yyleng);\n\t}\n\t\\\\.?/\\n\t{\n\t\tappend_string(yytext + 1, yyleng - 1);\n\t\tyylval.string = text;\n\t\treturn T_WORD_QUOTE;\n\t}\n\t\\\\.?\t{\n\t\tappend_string(yytext + 1, yyleng - 1);\n\t}\n\t\\'|\\\"\t{\n\t\tif (str == yytext[0]) {\n\t\t\tBEGIN(PARAM);\n\t\t\tyylval.string = text;\n\t\t\treturn T_WORD_QUOTE;\n\t\t} else\n\t\t\tappend_string(yytext, 1);\n\t}\n\t\\n\t{\n\t\tfprintf(stderr,\n\t\t\t\"%s:%d:warning: multi-line strings not supported\\n\",\n\t\t\tzconf_curname(), zconf_lineno());\n\t\tBEGIN(INITIAL);\n\t\treturn T_EOL;\n\t}\n\t<<EOF>>\t{\n\t\tBEGIN(INITIAL);\n\t}\n}\n\n<HELP>{\n\t[ \\t]+\t{\n\t\tts = 0;\n\t\tfor (i = 0; i < yyleng; i++) {\n\t\t\tif (yytext[i] == '\\t')\n\t\t\t\tts = (ts & ~7) + 8;\n\t\t\telse\n\t\t\t\tts++;\n\t\t}\n\t\tlast_ts = ts;\n\t\tif (first_ts) {\n\t\t\tif (ts < first_ts) {\n\t\t\t\tzconf_endhelp();\n\t\t\t\treturn T_HELPTEXT;\n\t\t\t}\n\t\t\tts -= first_ts;\n\t\t\twhile (ts > 8) {\n\t\t\t\tappend_string(\"        \", 8);\n\t\t\t\tts -= 8;\n\t\t\t}\n\t\t\tappend_string(\"        \", ts);\n\t\t}\n\t}\n\t[ \\t]*\\n/[^ \\t\\n] {\n\t\tzconf_endhelp();\n\t\treturn T_HELPTEXT;\n\t}\n\t[ \\t]*\\n\t{\n\t\tappend_string(\"\\n\", 1);\n\t}\n\t[^ \\t\\n].* {\n\t\twhile (yyleng) {\n\t\t\tif ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\\t'))\n\t\t\t\tbreak;\n\t\t\tyyleng--;\n\t\t}\n\t\tappend_string(yytext, yyleng);\n\t\tif (!first_ts)\n\t\t\tfirst_ts = last_ts;\n\t}\n\t<<EOF>>\t{\n\t\tzconf_endhelp();\n\t\treturn T_HELPTEXT;\n\t}\n}\n\n<<EOF>>\t{\n\tif (current_file) {\n\t\tzconf_endfile();\n\t\treturn T_EOL;\n\t}\n\tfclose(yyin);\n\tyyterminate();\n}\n\n%%\nvoid zconf_starthelp(void)\n{\n\tnew_string();\n\tlast_ts = first_ts = 0;\n\tBEGIN(HELP);\n}\n\nstatic void zconf_endhelp(void)\n{\n\tyylval.string = text;\n\tBEGIN(INITIAL);\n}\n\n\n/*\n * Try to open specified file with following names:\n * ./name\n * $(srctree)/name\n * The latter is used when srctree is separate from objtree\n * when compiling the kernel.\n * Return NULL if file is not found.\n */\nFILE *zconf_fopen(const char *name)\n{\n\tchar *env, fullname[PATH_MAX+1];\n\tFILE *f;\n\n\tf = fopen(name, \"r\");\n\tif (!f && name != NULL && name[0] != '/') {\n\t\tenv = getenv(SRCTREE);\n\t\tif (env) {\n\t\t\tsprintf(fullname, \"%s/%s\", env, name);\n\t\t\tf = fopen(fullname, \"r\");\n\t\t}\n\t}\n\treturn f;\n}\n\nvoid zconf_initscan(const char *name)\n{\n\tyyin = zconf_fopen(name);\n\tif (!yyin) {\n\t\tfprintf(stderr, \"can't find file %s\\n\", name);\n\t\texit(1);\n\t}\n\n\tcurrent_buf = xmalloc(sizeof(*current_buf));\n\tmemset(current_buf, 0, sizeof(*current_buf));\n\n\tcurrent_file = file_lookup(name);\n\tyylineno = 1;\n}\n\nvoid zconf_nextfile(const char *name)\n{\n\tstruct file *iter;\n\tstruct file *file = file_lookup(name);\n\tstruct buffer *buf = xmalloc(sizeof(*buf));\n\tmemset(buf, 0, sizeof(*buf));\n\n\tcurrent_buf->state = YY_CURRENT_BUFFER;\n\tyyin = zconf_fopen(file->name);\n\tif (!yyin) {\n\t\tfprintf(stderr, \"%s:%d: can't open file \\\"%s\\\"\\n\",\n\t\t\tzconf_curname(), zconf_lineno(), file->name);\n\t\texit(1);\n\t}\n\tyy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));\n\tbuf->parent = current_buf;\n\tcurrent_buf = buf;\n\n\tcurrent_file->lineno = yylineno;\n\tfile->parent = current_file;\n\n\tfor (iter = current_file; iter; iter = iter->parent) {\n\t\tif (!strcmp(iter->name, file->name)) {\n\t\t\tfprintf(stderr,\n\t\t\t\t\"Recursive inclusion detected.\\n\"\n\t\t\t\t\"Inclusion path:\\n\"\n\t\t\t\t\"  current file : %s\\n\", file->name);\n\t\t\titer = file;\n\t\t\tdo {\n\t\t\t\titer = iter->parent;\n\t\t\t\tfprintf(stderr, \"  included from: %s:%d\\n\",\n\t\t\t\t\titer->name, iter->lineno - 1);\n\t\t\t} while (strcmp(iter->name, file->name));\n\t\t\texit(1);\n\t\t}\n\t}\n\n\tyylineno = 1;\n\tcurrent_file = file;\n}\n\nstatic void zconf_endfile(void)\n{\n\tstruct buffer *parent;\n\n\tcurrent_file = current_file->parent;\n\tif (current_file)\n\t\tyylineno = current_file->lineno;\n\n\tparent = current_buf->parent;\n\tif (parent) {\n\t\tfclose(yyin);\n\t\tyy_delete_buffer(YY_CURRENT_BUFFER);\n\t\tyy_switch_to_buffer(parent->state);\n\t}\n\tfree(current_buf);\n\tcurrent_buf = parent;\n}\n\nint zconf_lineno(void)\n{\n\treturn current_pos.lineno;\n}\n\nconst char *zconf_curname(void)\n{\n\treturn current_pos.file ? current_pos.file->name : \"<none>\";\n}\n"
  },
  {
    "path": "support/kconfig/zconf.lex.c_shipped",
    "content": "\n#define  YY_INT_ALIGNED short int\n\n/* A lexical scanner generated by flex */\n\n#define FLEX_SCANNER\n#define YY_FLEX_MAJOR_VERSION 2\n#define YY_FLEX_MINOR_VERSION 6\n#define YY_FLEX_SUBMINOR_VERSION 4\n#if YY_FLEX_SUBMINOR_VERSION > 0\n#define FLEX_BETA\n#endif\n\n/* First, we deal with  platform-specific or compiler-specific issues. */\n\n/* begin standard C headers. */\n#include <stdio.h>\n#include <string.h>\n#include <errno.h>\n#include <stdlib.h>\n\n/* end standard C headers. */\n\n/* flex integer type definitions */\n\n#ifndef FLEXINT_H\n#define FLEXINT_H\n\n/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */\n\n#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n\n/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,\n * if you want the limit (max/min) macros for int types. \n */\n#ifndef __STDC_LIMIT_MACROS\n#define __STDC_LIMIT_MACROS 1\n#endif\n\n#include <inttypes.h>\ntypedef int8_t flex_int8_t;\ntypedef uint8_t flex_uint8_t;\ntypedef int16_t flex_int16_t;\ntypedef uint16_t flex_uint16_t;\ntypedef int32_t flex_int32_t;\ntypedef uint32_t flex_uint32_t;\n#else\ntypedef signed char flex_int8_t;\ntypedef short int flex_int16_t;\ntypedef int flex_int32_t;\ntypedef unsigned char flex_uint8_t; \ntypedef unsigned short int flex_uint16_t;\ntypedef unsigned int flex_uint32_t;\n\n/* Limits of integral types. */\n#ifndef INT8_MIN\n#define INT8_MIN               (-128)\n#endif\n#ifndef INT16_MIN\n#define INT16_MIN              (-32767-1)\n#endif\n#ifndef INT32_MIN\n#define INT32_MIN              (-2147483647-1)\n#endif\n#ifndef INT8_MAX\n#define INT8_MAX               (127)\n#endif\n#ifndef INT16_MAX\n#define INT16_MAX              (32767)\n#endif\n#ifndef INT32_MAX\n#define INT32_MAX              (2147483647)\n#endif\n#ifndef UINT8_MAX\n#define UINT8_MAX              (255U)\n#endif\n#ifndef UINT16_MAX\n#define UINT16_MAX             (65535U)\n#endif\n#ifndef UINT32_MAX\n#define UINT32_MAX             (4294967295U)\n#endif\n\n#ifndef SIZE_MAX\n#define SIZE_MAX               (~(size_t)0)\n#endif\n\n#endif /* ! C99 */\n\n#endif /* ! FLEXINT_H */\n\n/* begin standard C++ headers. */\n\n/* TODO: this is always defined, so inline it */\n#define yyconst const\n\n#if defined(__GNUC__) && __GNUC__ >= 3\n#define yynoreturn __attribute__((__noreturn__))\n#else\n#define yynoreturn\n#endif\n\n/* Returned upon end-of-file. */\n#define YY_NULL 0\n\n/* Promotes a possibly negative, possibly signed char to an\n *   integer in range [0..255] for use as an array index.\n */\n#define YY_SC_TO_UI(c) ((YY_CHAR) (c))\n\n/* Enter a start condition.  This macro really ought to take a parameter,\n * but we do it the disgusting crufty way forced on us by the ()-less\n * definition of BEGIN.\n */\n#define BEGIN (yy_start) = 1 + 2 *\n/* Translate the current start state into a value that can be later handed\n * to BEGIN to return to the state.  The YYSTATE alias is for lex\n * compatibility.\n */\n#define YY_START (((yy_start) - 1) / 2)\n#define YYSTATE YY_START\n/* Action number for EOF rule of a given start state. */\n#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)\n/* Special action meaning \"start processing a new file\". */\n#define YY_NEW_FILE yyrestart( yyin  )\n#define YY_END_OF_BUFFER_CHAR 0\n\n/* Size of default input buffer. */\n#ifndef YY_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k.\n * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.\n * Ditto for the __ia64__ case accordingly.\n */\n#define YY_BUF_SIZE 32768\n#else\n#define YY_BUF_SIZE 16384\n#endif /* __ia64__ */\n#endif\n\n/* The state buf must be large enough to hold one state per character in the main buffer.\n */\n#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))\n\n#ifndef YY_TYPEDEF_YY_BUFFER_STATE\n#define YY_TYPEDEF_YY_BUFFER_STATE\ntypedef struct yy_buffer_state *YY_BUFFER_STATE;\n#endif\n\n#ifndef YY_TYPEDEF_YY_SIZE_T\n#define YY_TYPEDEF_YY_SIZE_T\ntypedef size_t yy_size_t;\n#endif\n\nextern int yyleng;\n\nextern FILE *yyin, *yyout;\n\n#define EOB_ACT_CONTINUE_SCAN 0\n#define EOB_ACT_END_OF_FILE 1\n#define EOB_ACT_LAST_MATCH 2\n\n    /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires\n     *       access to the local variable yy_act. Since yyless() is a macro, it would break\n     *       existing scanners that call yyless() from OUTSIDE yylex.\n     *       One obvious solution it to make yy_act a global. I tried that, and saw\n     *       a 5% performance hit in a non-yylineno scanner, because yy_act is\n     *       normally declared as a register variable-- so it is not worth it.\n     */\n    #define  YY_LESS_LINENO(n) \\\n            do { \\\n                int yyl;\\\n                for ( yyl = n; yyl < yyleng; ++yyl )\\\n                    if ( yytext[yyl] == '\\n' )\\\n                        --yylineno;\\\n            }while(0)\n    #define YY_LINENO_REWIND_TO(dst) \\\n            do {\\\n                const char *p;\\\n                for ( p = yy_cp-1; p >= (dst); --p)\\\n                    if ( *p == '\\n' )\\\n                        --yylineno;\\\n            }while(0)\n    \n/* Return all but the first \"n\" matched characters back to the input stream. */\n#define yyless(n) \\\n\tdo \\\n\t\t{ \\\n\t\t/* Undo effects of setting up yytext. */ \\\n        int yyless_macro_arg = (n); \\\n        YY_LESS_LINENO(yyless_macro_arg);\\\n\t\t*yy_cp = (yy_hold_char); \\\n\t\tYY_RESTORE_YY_MORE_OFFSET \\\n\t\t(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \\\n\t\tYY_DO_BEFORE_ACTION; /* set up yytext again */ \\\n\t\t} \\\n\twhile ( 0 )\n#define unput(c) yyunput( c, (yytext_ptr)  )\n\n#ifndef YY_STRUCT_YY_BUFFER_STATE\n#define YY_STRUCT_YY_BUFFER_STATE\nstruct yy_buffer_state\n\t{\n\tFILE *yy_input_file;\n\n\tchar *yy_ch_buf;\t\t/* input buffer */\n\tchar *yy_buf_pos;\t\t/* current position in input buffer */\n\n\t/* Size of input buffer in bytes, not including room for EOB\n\t * characters.\n\t */\n\tint yy_buf_size;\n\n\t/* Number of characters read into yy_ch_buf, not including EOB\n\t * characters.\n\t */\n\tint yy_n_chars;\n\n\t/* Whether we \"own\" the buffer - i.e., we know we created it,\n\t * and can realloc() it to grow it, and should free() it to\n\t * delete it.\n\t */\n\tint yy_is_our_buffer;\n\n\t/* Whether this is an \"interactive\" input source; if so, and\n\t * if we're using stdio for input, then we want to use getc()\n\t * instead of fread(), to make sure we stop fetching input after\n\t * each newline.\n\t */\n\tint yy_is_interactive;\n\n\t/* Whether we're considered to be at the beginning of a line.\n\t * If so, '^' rules will be active on the next match, otherwise\n\t * not.\n\t */\n\tint yy_at_bol;\n\n    int yy_bs_lineno; /**< The line count. */\n    int yy_bs_column; /**< The column count. */\n\n\t/* Whether to try to fill the input buffer when we reach the\n\t * end of it.\n\t */\n\tint yy_fill_buffer;\n\n\tint yy_buffer_status;\n\n#define YY_BUFFER_NEW 0\n#define YY_BUFFER_NORMAL 1\n\t/* When an EOF's been seen but there's still some text to process\n\t * then we mark the buffer as YY_EOF_PENDING, to indicate that we\n\t * shouldn't try reading from the input source any more.  We might\n\t * still have a bunch of tokens to match, though, because of\n\t * possible backing-up.\n\t *\n\t * When we actually see the EOF, we change the status to \"new\"\n\t * (via yyrestart()), so that the user can continue scanning by\n\t * just pointing yyin at a new input file.\n\t */\n#define YY_BUFFER_EOF_PENDING 2\n\n\t};\n#endif /* !YY_STRUCT_YY_BUFFER_STATE */\n\n/* Stack of input buffers. */\nstatic size_t yy_buffer_stack_top = 0; /**< index of top of stack. */\nstatic size_t yy_buffer_stack_max = 0; /**< capacity of stack. */\nstatic YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */\n\n/* We provide macros for accessing buffer states in case in the\n * future we want to put the buffer states in a more general\n * \"scanner state\".\n *\n * Returns the top of the stack, or NULL.\n */\n#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \\\n                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \\\n                          : NULL)\n/* Same as previous macro, but useful when we know that the buffer stack is not\n * NULL or when we need an lvalue. For internal use only.\n */\n#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]\n\n/* yy_hold_char holds the character lost when yytext is formed. */\nstatic char yy_hold_char;\nstatic int yy_n_chars;\t\t/* number of characters read into yy_ch_buf */\nint yyleng;\n\n/* Points to current character in buffer. */\nstatic char *yy_c_buf_p = NULL;\nstatic int yy_init = 0;\t\t/* whether we need to initialize */\nstatic int yy_start = 0;\t/* start state number */\n\n/* Flag which is used to allow yywrap()'s to do buffer switches\n * instead of setting up a fresh yyin.  A bit of a hack ...\n */\nstatic int yy_did_buffer_switch_on_eof;\n\nvoid yyrestart ( FILE *input_file  );\nvoid yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );\nYY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );\nvoid yy_delete_buffer ( YY_BUFFER_STATE b  );\nvoid yy_flush_buffer ( YY_BUFFER_STATE b  );\nvoid yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );\nvoid yypop_buffer_state ( void );\n\nstatic void yyensure_buffer_stack ( void );\nstatic void yy_load_buffer_state ( void );\nstatic void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );\n#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )\n\nYY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );\nYY_BUFFER_STATE yy_scan_string ( const char *yy_str  );\nYY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );\n\nvoid *yyalloc ( yy_size_t  );\nvoid *yyrealloc ( void *, yy_size_t  );\nvoid yyfree ( void *  );\n\n#define yy_new_buffer yy_create_buffer\n#define yy_set_interactive(is_interactive) \\\n\t{ \\\n\tif ( ! YY_CURRENT_BUFFER ){ \\\n        yyensure_buffer_stack (); \\\n\t\tYY_CURRENT_BUFFER_LVALUE =    \\\n            yy_create_buffer( yyin, YY_BUF_SIZE ); \\\n\t} \\\n\tYY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \\\n\t}\n#define yy_set_bol(at_bol) \\\n\t{ \\\n\tif ( ! YY_CURRENT_BUFFER ){\\\n        yyensure_buffer_stack (); \\\n\t\tYY_CURRENT_BUFFER_LVALUE =    \\\n            yy_create_buffer( yyin, YY_BUF_SIZE ); \\\n\t} \\\n\tYY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \\\n\t}\n#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)\n\n/* Begin user sect3 */\n\n#define yywrap() (/*CONSTCOND*/1)\n#define YY_SKIP_YYWRAP\ntypedef flex_uint8_t YY_CHAR;\n\nFILE *yyin = NULL, *yyout = NULL;\n\ntypedef int yy_state_type;\n\nextern int yylineno;\nint yylineno = 1;\n\nextern char *yytext;\n#ifdef yytext_ptr\n#undef yytext_ptr\n#endif\n#define yytext_ptr yytext\n\nstatic const flex_int16_t yy_nxt[][18] =\n    {\n    {\n        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,\n        0,    0,    0,    0,    0,    0,    0,    0\n    },\n\n    {\n       11,   12,   13,   14,   12,   12,   15,   12,   12,   12,\n       12,   12,   12,   12,   12,   12,   12,   12\n    },\n\n    {\n       11,   12,   13,   14,   12,   12,   15,   12,   12,   12,\n       12,   12,   12,   12,   12,   12,   12,   12\n    },\n\n    {\n       11,   16,   16,   17,   16,   16,   16,   16,   16,   16,\n       16,   18,   16,   16,   16,   16,   16,   16\n    },\n\n    {\n       11,   16,   16,   17,   16,   16,   16,   16,   16,   16,\n       16,   18,   16,   16,   16,   16,   16,   16\n\n    },\n\n    {\n       11,   19,   20,   21,   19,   19,   19,   19,   19,   19,\n       19,   19,   19,   19,   19,   19,   19,   19\n    },\n\n    {\n       11,   19,   20,   21,   19,   19,   19,   19,   19,   19,\n       19,   19,   19,   19,   19,   19,   19,   19\n    },\n\n    {\n       11,   22,   22,   23,   22,   24,   22,   22,   24,   22,\n       22,   22,   22,   22,   22,   22,   25,   22\n    },\n\n    {\n       11,   22,   22,   23,   22,   24,   22,   22,   24,   22,\n       22,   22,   22,   22,   22,   22,   25,   22\n    },\n\n    {\n       11,   26,   27,   28,   29,   30,   31,   32,   30,   33,\n       34,   35,   35,   36,   37,   38,   39,   40\n\n    },\n\n    {\n       11,   26,   27,   28,   29,   30,   31,   32,   30,   33,\n       34,   35,   35,   36,   37,   38,   39,   40\n    },\n\n    {\n      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,\n      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11\n    },\n\n    {\n       11,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,\n      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12\n    },\n\n    {\n       11,  -13,   41,   42,  -13,  -13,   43,  -13,  -13,  -13,\n      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13\n    },\n\n    {\n       11,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,\n      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14\n\n    },\n\n    {\n       11,   44,   44,   45,   44,   44,   44,   44,   44,   44,\n       44,   44,   44,   44,   44,   44,   44,   44\n    },\n\n    {\n       11,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,\n      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16\n    },\n\n    {\n       11,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,\n      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17\n    },\n\n    {\n       11,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,\n      -18,   46,  -18,  -18,  -18,  -18,  -18,  -18\n    },\n\n    {\n       11,   47,   47,  -19,   47,   47,   47,   47,   47,   47,\n       47,   47,   47,   47,   47,   47,   47,   47\n\n    },\n\n    {\n       11,  -20,   48,   49,  -20,  -20,  -20,  -20,  -20,  -20,\n      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20\n    },\n\n    {\n       11,   50,  -21,  -21,   50,   50,   50,   50,   50,   50,\n       50,   50,   50,   50,   50,   50,   50,   50\n    },\n\n    {\n       11,   51,   51,   52,   51,  -22,   51,   51,  -22,   51,\n       51,   51,   51,   51,   51,   51,  -22,   51\n    },\n\n    {\n       11,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,\n      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23\n    },\n\n    {\n       11,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,\n      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24\n\n    },\n\n    {\n       11,   53,   53,   54,   53,   53,   53,   53,   53,   53,\n       53,   53,   53,   53,   53,   53,   53,   53\n    },\n\n    {\n       11,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,\n      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26\n    },\n\n    {\n       11,  -27,   55,  -27,  -27,  -27,  -27,  -27,  -27,  -27,\n      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27\n    },\n\n    {\n       11,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,\n      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28\n    },\n\n    {\n       11,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,\n      -29,  -29,  -29,  -29,   56,  -29,  -29,  -29\n\n    },\n\n    {\n       11,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,\n      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30\n    },\n\n    {\n       11,   57,   57,  -31,   57,   57,   57,   57,   57,   57,\n       57,   57,   57,   57,   57,   57,   57,   57\n    },\n\n    {\n       11,  -32,  -32,  -32,  -32,  -32,  -32,   58,  -32,  -32,\n      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32\n    },\n\n    {\n       11,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,\n      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33\n    },\n\n    {\n       11,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,\n      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34\n\n    },\n\n    {\n       11,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,\n      -35,   59,   59,  -35,  -35,  -35,  -35,  -35\n    },\n\n    {\n       11,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,\n      -36,  -36,  -36,  -36,   60,  -36,  -36,  -36\n    },\n\n    {\n       11,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,\n      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37\n    },\n\n    {\n       11,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,\n      -38,  -38,  -38,  -38,   61,  -38,  -38,  -38\n    },\n\n    {\n       11,  -39,  -39,   62,  -39,  -39,  -39,  -39,  -39,  -39,\n      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39\n\n    },\n\n    {\n       11,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,\n      -40,  -40,  -40,  -40,  -40,  -40,  -40,   63\n    },\n\n    {\n       11,  -41,   41,   42,  -41,  -41,   43,  -41,  -41,  -41,\n      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41\n    },\n\n    {\n       11,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,\n      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42\n    },\n\n    {\n       11,   44,   44,   45,   44,   44,   44,   44,   44,   44,\n       44,   44,   44,   44,   44,   44,   44,   44\n    },\n\n    {\n       11,   44,   44,   45,   44,   44,   44,   44,   44,   44,\n       44,   44,   44,   44,   44,   44,   44,   44\n\n    },\n\n    {\n       11,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,\n      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45\n    },\n\n    {\n       11,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,\n      -46,   46,  -46,  -46,  -46,  -46,  -46,  -46\n    },\n\n    {\n       11,   47,   47,  -47,   47,   47,   47,   47,   47,   47,\n       47,   47,   47,   47,   47,   47,   47,   47\n    },\n\n    {\n       11,  -48,   48,   49,  -48,  -48,  -48,  -48,  -48,  -48,\n      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48\n    },\n\n    {\n       11,   50,  -49,  -49,   50,   50,   50,   50,   50,   50,\n       50,   50,   50,   50,   50,   50,   50,   50\n\n    },\n\n    {\n       11,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,\n      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50\n    },\n\n    {\n       11,   51,   51,   52,   51,  -51,   51,   51,  -51,   51,\n       51,   51,   51,   51,   51,   51,  -51,   51\n    },\n\n    {\n       11,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,\n      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52\n    },\n\n    {\n       11,  -53,  -53,   54,  -53,  -53,  -53,  -53,  -53,  -53,\n      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53\n    },\n\n    {\n       11,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,\n      -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54\n\n    },\n\n    {\n       11,  -55,   55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,\n      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55\n    },\n\n    {\n       11,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,\n      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56\n    },\n\n    {\n       11,   57,   57,  -57,   57,   57,   57,   57,   57,   57,\n       57,   57,   57,   57,   57,   57,   57,   57\n    },\n\n    {\n       11,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,\n      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58\n    },\n\n    {\n       11,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,\n      -59,   59,   59,  -59,  -59,  -59,  -59,  -59\n\n    },\n\n    {\n       11,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,\n      -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60\n    },\n\n    {\n       11,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,\n      -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61\n    },\n\n    {\n       11,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,\n      -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62\n    },\n\n    {\n       11,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,\n      -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63\n    },\n\n    } ;\n\nstatic yy_state_type yy_get_previous_state ( void );\nstatic yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );\nstatic int yy_get_next_buffer ( void );\nstatic void yynoreturn yy_fatal_error ( const char* msg  );\n\n/* Done after the current pattern has been matched and before the\n * corresponding action - sets up yytext.\n */\n#define YY_DO_BEFORE_ACTION \\\n\t(yytext_ptr) = yy_bp; \\\n\tyyleng = (int) (yy_cp - yy_bp); \\\n\t(yy_hold_char) = *yy_cp; \\\n\t*yy_cp = '\\0'; \\\n\t(yy_c_buf_p) = yy_cp;\n#define YY_NUM_RULES 37\n#define YY_END_OF_BUFFER 38\n/* This struct is not used in this scanner,\n   but its presence is necessary. */\nstruct yy_trans_info\n\t{\n\tflex_int32_t yy_verify;\n\tflex_int32_t yy_nxt;\n\t};\nstatic const flex_int16_t yy_accept[64] =\n    {   0,\n        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,\n       38,    5,    4,    2,    3,    7,    8,    6,   36,   33,\n       35,   28,   32,   31,   30,   26,   25,   21,   13,   20,\n       23,   26,   11,   12,   22,   18,   14,   19,   26,   26,\n        4,    2,    3,    3,    1,    6,   36,   33,   35,   34,\n       28,   27,   30,   29,   25,   15,   23,    9,   22,   16,\n       17,   24,   10\n    } ;\n\nstatic const YY_CHAR yy_ec[256] =\n    {   0,\n        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    2,    4,    5,    6,    1,    1,    7,    8,    9,\n       10,    1,    1,    1,   11,   12,   12,   11,   11,   11,\n       11,   11,   11,   11,   11,   11,   11,    1,    1,   13,\n       14,   15,    1,    1,   11,   11,   11,   11,   11,   11,\n       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,\n       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,\n        1,   16,    1,    1,   11,    1,   11,   11,   11,   11,\n\n       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,\n       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,\n       11,   11,    1,   17,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n        1,    1,    1,    1,    1\n    } ;\n\n/* Table of booleans, true if rule could match eol. */\nstatic const flex_int32_t yy_rule_can_match_eol[38] =\n    {   0,\n1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n    0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0,     };\n\nextern int yy_flex_debug;\nint yy_flex_debug = 0;\n\n/* The intent behind this definition is that it'll catch\n * any uses of REJECT which flex missed.\n */\n#define REJECT reject_used_but_not_detected\n#define yymore() yymore_used_but_not_detected\n#define YY_MORE_ADJ 0\n#define YY_RESTORE_YY_MORE_OFFSET\nchar *yytext;\n#define YY_NO_INPUT 1\n\n/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#include <limits.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n\n#include \"lkc.h\"\n\n#define START_STRSIZE\t16\n\nstatic struct {\n\tstruct file *file;\n\tint lineno;\n} current_pos;\n\nstatic char *text;\nstatic int text_size, text_asize;\n\nstruct buffer {\n\tstruct buffer *parent;\n\tYY_BUFFER_STATE state;\n};\n\nstruct buffer *current_buf;\n\nstatic int last_ts, first_ts;\n\nstatic void zconf_endhelp(void);\nstatic void zconf_endfile(void);\n\nstatic void new_string(void)\n{\n\ttext = xmalloc(START_STRSIZE);\n\ttext_asize = START_STRSIZE;\n\ttext_size = 0;\n\t*text = 0;\n}\n\nstatic void append_string(const char *str, int size)\n{\n\tint new_size = text_size + size + 1;\n\tif (new_size > text_asize) {\n\t\tnew_size += START_STRSIZE - 1;\n\t\tnew_size &= -START_STRSIZE;\n\t\ttext = xrealloc(text, new_size);\n\t\ttext_asize = new_size;\n\t}\n\tmemcpy(text + text_size, str, size);\n\ttext_size += size;\n\ttext[text_size] = 0;\n}\n\nstatic void alloc_string(const char *str, int size)\n{\n\ttext = xmalloc(size + 1);\n\tmemcpy(text, str, size);\n\ttext[size] = 0;\n}\n\nstatic void warn_ignored_character(char chr)\n{\n\tfprintf(stderr,\n\t        \"%s:%d:warning: ignoring unsupported character '%c'\\n\",\n\t        zconf_curname(), zconf_lineno(), chr);\n}\n\n#define INITIAL 0\n#define COMMAND 1\n#define HELP 2\n#define STRING 3\n#define PARAM 4\n\n#ifndef YY_NO_UNISTD_H\n/* Special case for \"unistd.h\", since it is non-ANSI. We include it way\n * down here because we want the user's section 1 to have been scanned first.\n * The user has a chance to override it with an option.\n */\n#include <unistd.h>\n#endif\n\n#ifndef YY_EXTRA_TYPE\n#define YY_EXTRA_TYPE void *\n#endif\n\nstatic int yy_init_globals ( void );\n\n/* Accessor methods to globals.\n   These are made visible to non-reentrant scanners for convenience. */\n\nint yylex_destroy ( void );\n\nint yyget_debug ( void );\n\nvoid yyset_debug ( int debug_flag  );\n\nYY_EXTRA_TYPE yyget_extra ( void );\n\nvoid yyset_extra ( YY_EXTRA_TYPE user_defined  );\n\nFILE *yyget_in ( void );\n\nvoid yyset_in  ( FILE * _in_str  );\n\nFILE *yyget_out ( void );\n\nvoid yyset_out  ( FILE * _out_str  );\n\n\t\t\tint yyget_leng ( void );\n\nchar *yyget_text ( void );\n\nint yyget_lineno ( void );\n\nvoid yyset_lineno ( int _line_number  );\n\n/* Macros after this point can all be overridden by user definitions in\n * section 1.\n */\n\n#ifndef YY_SKIP_YYWRAP\n#ifdef __cplusplus\nextern \"C\" int yywrap ( void );\n#else\nextern int yywrap ( void );\n#endif\n#endif\n\n#ifndef YY_NO_UNPUT\n    \n    static void yyunput ( int c, char *buf_ptr  );\n\n#endif\n\n#ifndef yytext_ptr\nstatic void yy_flex_strncpy ( char *, const char *, int );\n#endif\n\n#ifdef YY_NEED_STRLEN\nstatic int yy_flex_strlen ( const char * );\n#endif\n\n#ifndef YY_NO_INPUT\n#ifdef __cplusplus\nstatic int yyinput ( void );\n#else\nstatic int input ( void );\n#endif\n\n#endif\n\n/* Amount of stuff to slurp up with each read. */\n#ifndef YY_READ_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k */\n#define YY_READ_BUF_SIZE 16384\n#else\n#define YY_READ_BUF_SIZE 8192\n#endif /* __ia64__ */\n#endif\n\n/* Copy whatever the last rule matched to the standard output. */\n#ifndef ECHO\n/* This used to be an fputs(), but since the string might contain NUL's,\n * we now use fwrite().\n */\n#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)\n#endif\n\n/* Gets input and stuffs it into \"buf\".  number of characters read, or YY_NULL,\n * is returned in \"result\".\n */\n#ifndef YY_INPUT\n#define YY_INPUT(buf,result,max_size) \\\n\terrno=0; \\\n\twhile ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \\\n\t{ \\\n\t\tif( errno != EINTR) \\\n\t\t{ \\\n\t\t\tYY_FATAL_ERROR( \"input in flex scanner failed\" ); \\\n\t\t\tbreak; \\\n\t\t} \\\n\t\terrno=0; \\\n\t\tclearerr(yyin); \\\n\t}\\\n\\\n\n#endif\n\n/* No semi-colon after return; correct usage is to write \"yyterminate();\" -\n * we don't want an extra ';' after the \"return\" because that will cause\n * some compilers to complain about unreachable statements.\n */\n#ifndef yyterminate\n#define yyterminate() return YY_NULL\n#endif\n\n/* Number of entries by which start-condition stack grows. */\n#ifndef YY_START_STACK_INCR\n#define YY_START_STACK_INCR 25\n#endif\n\n/* Report a fatal error. */\n#ifndef YY_FATAL_ERROR\n#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )\n#endif\n\n/* end tables serialization structures and prototypes */\n\n/* Default declaration of generated scanner - a define so the user can\n * easily add parameters.\n */\n#ifndef YY_DECL\n#define YY_DECL_IS_OURS 1\n\nextern int yylex (void);\n\n#define YY_DECL int yylex (void)\n#endif /* !YY_DECL */\n\n/* Code executed at the beginning of each rule, after yytext and yyleng\n * have been set up.\n */\n#ifndef YY_USER_ACTION\n#define YY_USER_ACTION\n#endif\n\n/* Code executed at the end of each rule. */\n#ifndef YY_BREAK\n#define YY_BREAK /*LINTED*/break;\n#endif\n\n#define YY_RULE_SETUP \\\n\tYY_USER_ACTION\n\n/** The main scanner function which does all the work.\n */\nYY_DECL\n{\n\tyy_state_type yy_current_state;\n\tchar *yy_cp, *yy_bp;\n\tint yy_act;\n    \n\tif ( !(yy_init) )\n\t\t{\n\t\t(yy_init) = 1;\n\n#ifdef YY_USER_INIT\n\t\tYY_USER_INIT;\n#endif\n\n\t\tif ( ! (yy_start) )\n\t\t\t(yy_start) = 1;\t/* first start state */\n\n\t\tif ( ! yyin )\n\t\t\tyyin = stdin;\n\n\t\tif ( ! yyout )\n\t\t\tyyout = stdout;\n\n\t\tif ( ! YY_CURRENT_BUFFER ) {\n\t\t\tyyensure_buffer_stack ();\n\t\t\tYY_CURRENT_BUFFER_LVALUE =\n\t\t\t\tyy_create_buffer( yyin, YY_BUF_SIZE );\n\t\t}\n\n\t\tyy_load_buffer_state(  );\n\t\t}\n\n\t{\n\n\tint str = 0;\n\tint ts, i;\n\n\twhile ( /*CONSTCOND*/1 )\t\t/* loops until end-of-file is reached */\n\t\t{\n\t\tyy_cp = (yy_c_buf_p);\n\n\t\t/* Support of yytext. */\n\t\t*yy_cp = (yy_hold_char);\n\n\t\t/* yy_bp points to the position in yy_ch_buf of the start of\n\t\t * the current run.\n\t\t */\n\t\tyy_bp = yy_cp;\n\n\t\tyy_current_state = (yy_start);\nyy_match:\n\t\twhile ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)]  ]) > 0 )\n\t\t\t++yy_cp;\n\n\t\tyy_current_state = -yy_current_state;\n\nyy_find_action:\n\t\tyy_act = yy_accept[yy_current_state];\n\n\t\tYY_DO_BEFORE_ACTION;\n\n\t\tif ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )\n\t\t\t{\n\t\t\tint yyl;\n\t\t\tfor ( yyl = 0; yyl < yyleng; ++yyl )\n\t\t\t\tif ( yytext[yyl] == '\\n' )\n\n    yylineno++;\n;\n\t\t\t}\n\ndo_action:\t/* This label is used only to access EOF actions. */\n\n\t\tswitch ( yy_act )\n\t{ /* beginning of action switch */\ncase 1:\n/* rule 1 can match eol */\ncase 2:\n/* rule 2 can match eol */\nYY_RULE_SETUP\n{\n\treturn T_EOL;\n}\n\tYY_BREAK\ncase 3:\nYY_RULE_SETUP\n\n\tYY_BREAK\ncase 4:\nYY_RULE_SETUP\n{\n\tBEGIN(COMMAND);\n}\n\tYY_BREAK\ncase 5:\nYY_RULE_SETUP\n{\n\tunput(yytext[0]);\n\tBEGIN(COMMAND);\n}\n\tYY_BREAK\n\ncase 6:\nYY_RULE_SETUP\n{\n\t\tconst struct kconf_id *id = kconf_id_lookup(yytext, yyleng);\n\t\tBEGIN(PARAM);\n\t\tcurrent_pos.file = current_file;\n\t\tcurrent_pos.lineno = yylineno;\n\t\tif (id && id->flags & TF_COMMAND) {\n\t\t\tyylval.id = id;\n\t\t\treturn id->token;\n\t\t}\n\t\talloc_string(yytext, yyleng);\n\t\tyylval.string = text;\n\t\treturn T_WORD;\n\t}\n\tYY_BREAK\ncase 7:\nYY_RULE_SETUP\nwarn_ignored_character(*yytext);\n\tYY_BREAK\ncase 8:\n/* rule 8 can match eol */\nYY_RULE_SETUP\n{\n\t\tBEGIN(INITIAL);\n\t\treturn T_EOL;\n\t}\n\tYY_BREAK\n\ncase 9:\nYY_RULE_SETUP\nreturn T_AND;\n\tYY_BREAK\ncase 10:\nYY_RULE_SETUP\nreturn T_OR;\n\tYY_BREAK\ncase 11:\nYY_RULE_SETUP\nreturn T_OPEN_PAREN;\n\tYY_BREAK\ncase 12:\nYY_RULE_SETUP\nreturn T_CLOSE_PAREN;\n\tYY_BREAK\ncase 13:\nYY_RULE_SETUP\nreturn T_NOT;\n\tYY_BREAK\ncase 14:\nYY_RULE_SETUP\nreturn T_EQUAL;\n\tYY_BREAK\ncase 15:\nYY_RULE_SETUP\nreturn T_UNEQUAL;\n\tYY_BREAK\ncase 16:\nYY_RULE_SETUP\nreturn T_LESS_EQUAL;\n\tYY_BREAK\ncase 17:\nYY_RULE_SETUP\nreturn T_GREATER_EQUAL;\n\tYY_BREAK\ncase 18:\nYY_RULE_SETUP\nreturn T_LESS;\n\tYY_BREAK\ncase 19:\nYY_RULE_SETUP\nreturn T_GREATER;\n\tYY_BREAK\ncase 20:\nYY_RULE_SETUP\n{\n\t\tstr = yytext[0];\n\t\tnew_string();\n\t\tBEGIN(STRING);\n\t}\n\tYY_BREAK\ncase 21:\n/* rule 21 can match eol */\nYY_RULE_SETUP\nBEGIN(INITIAL); return T_EOL;\n\tYY_BREAK\ncase 22:\nYY_RULE_SETUP\n{\n\t\tconst struct kconf_id *id = kconf_id_lookup(yytext, yyleng);\n\t\tif (id && id->flags & TF_PARAM) {\n\t\t\tyylval.id = id;\n\t\t\treturn id->token;\n\t\t}\n\t\talloc_string(yytext, yyleng);\n\t\tyylval.string = text;\n\t\treturn T_WORD;\n\t}\n\tYY_BREAK\ncase 23:\nYY_RULE_SETUP\n/* comment */\n\tYY_BREAK\ncase 24:\n/* rule 24 can match eol */\nYY_RULE_SETUP\n;\n\tYY_BREAK\ncase 25:\nYY_RULE_SETUP\n\n\tYY_BREAK\ncase 26:\nYY_RULE_SETUP\nwarn_ignored_character(*yytext);\n\tYY_BREAK\ncase YY_STATE_EOF(PARAM):\n{\n\t\tBEGIN(INITIAL);\n\t}\n\tYY_BREAK\n\ncase 27:\n/* rule 27 can match eol */\n*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */\nYY_LINENO_REWIND_TO(yy_cp - 1);\n(yy_c_buf_p) = yy_cp -= 1;\nYY_DO_BEFORE_ACTION; /* set up yytext again */\nYY_RULE_SETUP\n{\n\t\tappend_string(yytext, yyleng);\n\t\tyylval.string = text;\n\t\treturn T_WORD_QUOTE;\n\t}\n\tYY_BREAK\ncase 28:\nYY_RULE_SETUP\n{\n\t\tappend_string(yytext, yyleng);\n\t}\n\tYY_BREAK\ncase 29:\n/* rule 29 can match eol */\n*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */\nYY_LINENO_REWIND_TO(yy_cp - 1);\n(yy_c_buf_p) = yy_cp -= 1;\nYY_DO_BEFORE_ACTION; /* set up yytext again */\nYY_RULE_SETUP\n{\n\t\tappend_string(yytext + 1, yyleng - 1);\n\t\tyylval.string = text;\n\t\treturn T_WORD_QUOTE;\n\t}\n\tYY_BREAK\ncase 30:\nYY_RULE_SETUP\n{\n\t\tappend_string(yytext + 1, yyleng - 1);\n\t}\n\tYY_BREAK\ncase 31:\nYY_RULE_SETUP\n{\n\t\tif (str == yytext[0]) {\n\t\t\tBEGIN(PARAM);\n\t\t\tyylval.string = text;\n\t\t\treturn T_WORD_QUOTE;\n\t\t} else\n\t\t\tappend_string(yytext, 1);\n\t}\n\tYY_BREAK\ncase 32:\n/* rule 32 can match eol */\nYY_RULE_SETUP\n{\n\t\tfprintf(stderr,\n\t\t\t\"%s:%d:warning: multi-line strings not supported\\n\",\n\t\t\tzconf_curname(), zconf_lineno());\n\t\tBEGIN(INITIAL);\n\t\treturn T_EOL;\n\t}\n\tYY_BREAK\ncase YY_STATE_EOF(STRING):\n{\n\t\tBEGIN(INITIAL);\n\t}\n\tYY_BREAK\n\ncase 33:\nYY_RULE_SETUP\n{\n\t\tts = 0;\n\t\tfor (i = 0; i < yyleng; i++) {\n\t\t\tif (yytext[i] == '\\t')\n\t\t\t\tts = (ts & ~7) + 8;\n\t\t\telse\n\t\t\t\tts++;\n\t\t}\n\t\tlast_ts = ts;\n\t\tif (first_ts) {\n\t\t\tif (ts < first_ts) {\n\t\t\t\tzconf_endhelp();\n\t\t\t\treturn T_HELPTEXT;\n\t\t\t}\n\t\t\tts -= first_ts;\n\t\t\twhile (ts > 8) {\n\t\t\t\tappend_string(\"        \", 8);\n\t\t\t\tts -= 8;\n\t\t\t}\n\t\t\tappend_string(\"        \", ts);\n\t\t}\n\t}\n\tYY_BREAK\ncase 34:\n/* rule 34 can match eol */\n*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */\nYY_LINENO_REWIND_TO(yy_cp - 1);\n(yy_c_buf_p) = yy_cp -= 1;\nYY_DO_BEFORE_ACTION; /* set up yytext again */\nYY_RULE_SETUP\n{\n\t\tzconf_endhelp();\n\t\treturn T_HELPTEXT;\n\t}\n\tYY_BREAK\ncase 35:\n/* rule 35 can match eol */\nYY_RULE_SETUP\n{\n\t\tappend_string(\"\\n\", 1);\n\t}\n\tYY_BREAK\ncase 36:\nYY_RULE_SETUP\n{\n\t\twhile (yyleng) {\n\t\t\tif ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\\t'))\n\t\t\t\tbreak;\n\t\t\tyyleng--;\n\t\t}\n\t\tappend_string(yytext, yyleng);\n\t\tif (!first_ts)\n\t\t\tfirst_ts = last_ts;\n\t}\n\tYY_BREAK\ncase YY_STATE_EOF(HELP):\n{\n\t\tzconf_endhelp();\n\t\treturn T_HELPTEXT;\n\t}\n\tYY_BREAK\n\ncase YY_STATE_EOF(INITIAL):\ncase YY_STATE_EOF(COMMAND):\n{\n\tif (current_file) {\n\t\tzconf_endfile();\n\t\treturn T_EOL;\n\t}\n\tfclose(yyin);\n\tyyterminate();\n}\n\tYY_BREAK\ncase 37:\nYY_RULE_SETUP\nYY_FATAL_ERROR( \"flex scanner jammed\" );\n\tYY_BREAK\n\n\tcase YY_END_OF_BUFFER:\n\t\t{\n\t\t/* Amount of text matched not including the EOB char. */\n\t\tint yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;\n\n\t\t/* Undo the effects of YY_DO_BEFORE_ACTION. */\n\t\t*yy_cp = (yy_hold_char);\n\t\tYY_RESTORE_YY_MORE_OFFSET\n\n\t\tif ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )\n\t\t\t{\n\t\t\t/* We're scanning a new file or input source.  It's\n\t\t\t * possible that this happened because the user\n\t\t\t * just pointed yyin at a new source and called\n\t\t\t * yylex().  If so, then we have to assure\n\t\t\t * consistency between YY_CURRENT_BUFFER and our\n\t\t\t * globals.  Here is the right place to do so, because\n\t\t\t * this is the first action (other than possibly a\n\t\t\t * back-up) that will match for the new input source.\n\t\t\t */\n\t\t\t(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;\n\t\t\tYY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;\n\t\t\tYY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;\n\t\t\t}\n\n\t\t/* Note that here we test for yy_c_buf_p \"<=\" to the position\n\t\t * of the first EOB in the buffer, since yy_c_buf_p will\n\t\t * already have been incremented past the NUL character\n\t\t * (since all states make transitions on EOB to the\n\t\t * end-of-buffer state).  Contrast this with the test\n\t\t * in input().\n\t\t */\n\t\tif ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )\n\t\t\t{ /* This was really a NUL. */\n\t\t\tyy_state_type yy_next_state;\n\n\t\t\t(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;\n\n\t\t\tyy_current_state = yy_get_previous_state(  );\n\n\t\t\t/* Okay, we're now positioned to make the NUL\n\t\t\t * transition.  We couldn't have\n\t\t\t * yy_get_previous_state() go ahead and do it\n\t\t\t * for us because it doesn't know how to deal\n\t\t\t * with the possibility of jamming (and we don't\n\t\t\t * want to build jamming into it because then it\n\t\t\t * will run more slowly).\n\t\t\t */\n\n\t\t\tyy_next_state = yy_try_NUL_trans( yy_current_state );\n\n\t\t\tyy_bp = (yytext_ptr) + YY_MORE_ADJ;\n\n\t\t\tif ( yy_next_state )\n\t\t\t\t{\n\t\t\t\t/* Consume the NUL. */\n\t\t\t\tyy_cp = ++(yy_c_buf_p);\n\t\t\t\tyy_current_state = yy_next_state;\n\t\t\t\tgoto yy_match;\n\t\t\t\t}\n\n\t\t\telse\n\t\t\t\t{\n\t\t\t\tyy_cp = (yy_c_buf_p);\n\t\t\t\tgoto yy_find_action;\n\t\t\t\t}\n\t\t\t}\n\n\t\telse switch ( yy_get_next_buffer(  ) )\n\t\t\t{\n\t\t\tcase EOB_ACT_END_OF_FILE:\n\t\t\t\t{\n\t\t\t\t(yy_did_buffer_switch_on_eof) = 0;\n\n\t\t\t\tif ( yywrap(  ) )\n\t\t\t\t\t{\n\t\t\t\t\t/* Note: because we've taken care in\n\t\t\t\t\t * yy_get_next_buffer() to have set up\n\t\t\t\t\t * yytext, we can now set up\n\t\t\t\t\t * yy_c_buf_p so that if some total\n\t\t\t\t\t * hoser (like flex itself) wants to\n\t\t\t\t\t * call the scanner after we return the\n\t\t\t\t\t * YY_NULL, it'll still work - another\n\t\t\t\t\t * YY_NULL will get returned.\n\t\t\t\t\t */\n\t\t\t\t\t(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;\n\n\t\t\t\t\tyy_act = YY_STATE_EOF(YY_START);\n\t\t\t\t\tgoto do_action;\n\t\t\t\t\t}\n\n\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\tif ( ! (yy_did_buffer_switch_on_eof) )\n\t\t\t\t\t\tYY_NEW_FILE;\n\t\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase EOB_ACT_CONTINUE_SCAN:\n\t\t\t\t(yy_c_buf_p) =\n\t\t\t\t\t(yytext_ptr) + yy_amount_of_matched_text;\n\n\t\t\t\tyy_current_state = yy_get_previous_state(  );\n\n\t\t\t\tyy_cp = (yy_c_buf_p);\n\t\t\t\tyy_bp = (yytext_ptr) + YY_MORE_ADJ;\n\t\t\t\tgoto yy_match;\n\n\t\t\tcase EOB_ACT_LAST_MATCH:\n\t\t\t\t(yy_c_buf_p) =\n\t\t\t\t&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];\n\n\t\t\t\tyy_current_state = yy_get_previous_state(  );\n\n\t\t\t\tyy_cp = (yy_c_buf_p);\n\t\t\t\tyy_bp = (yytext_ptr) + YY_MORE_ADJ;\n\t\t\t\tgoto yy_find_action;\n\t\t\t}\n\t\tbreak;\n\t\t}\n\n\tdefault:\n\t\tYY_FATAL_ERROR(\n\t\t\t\"fatal flex scanner internal error--no action found\" );\n\t} /* end of action switch */\n\t\t} /* end of scanning one token */\n\t} /* end of user's declarations */\n} /* end of yylex */\n\n/* yy_get_next_buffer - try to read in a new buffer\n *\n * Returns a code representing an action:\n *\tEOB_ACT_LAST_MATCH -\n *\tEOB_ACT_CONTINUE_SCAN - continue scanning from current position\n *\tEOB_ACT_END_OF_FILE - end of file\n */\nstatic int yy_get_next_buffer (void)\n{\n\tchar *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;\n\tchar *source = (yytext_ptr);\n\tint number_to_move, i;\n\tint ret_val;\n\n\tif ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )\n\t\tYY_FATAL_ERROR(\n\t\t\"fatal flex scanner internal error--end of buffer missed\" );\n\n\tif ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )\n\t\t{ /* Don't try to fill the buffer, so this is an EOF. */\n\t\tif ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )\n\t\t\t{\n\t\t\t/* We matched a single character, the EOB, so\n\t\t\t * treat this as a final EOF.\n\t\t\t */\n\t\t\treturn EOB_ACT_END_OF_FILE;\n\t\t\t}\n\n\t\telse\n\t\t\t{\n\t\t\t/* We matched some text prior to the EOB, first\n\t\t\t * process it.\n\t\t\t */\n\t\t\treturn EOB_ACT_LAST_MATCH;\n\t\t\t}\n\t\t}\n\n\t/* Try to read more data. */\n\n\t/* First move last chars to start of buffer. */\n\tnumber_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);\n\n\tfor ( i = 0; i < number_to_move; ++i )\n\t\t*(dest++) = *(source++);\n\n\tif ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )\n\t\t/* don't do the read, it's not guaranteed to return an EOF,\n\t\t * just force an EOF\n\t\t */\n\t\tYY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;\n\n\telse\n\t\t{\n\t\t\tint num_to_read =\n\t\t\tYY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;\n\n\t\twhile ( num_to_read <= 0 )\n\t\t\t{ /* Not enough room in the buffer - grow it. */\n\n\t\t\t/* just a shorter name for the current buffer */\n\t\t\tYY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;\n\n\t\t\tint yy_c_buf_p_offset =\n\t\t\t\t(int) ((yy_c_buf_p) - b->yy_ch_buf);\n\n\t\t\tif ( b->yy_is_our_buffer )\n\t\t\t\t{\n\t\t\t\tint new_size = b->yy_buf_size * 2;\n\n\t\t\t\tif ( new_size <= 0 )\n\t\t\t\t\tb->yy_buf_size += b->yy_buf_size / 8;\n\t\t\t\telse\n\t\t\t\t\tb->yy_buf_size *= 2;\n\n\t\t\t\tb->yy_ch_buf = (char *)\n\t\t\t\t\t/* Include room in for 2 EOB chars. */\n\t\t\t\t\tyyrealloc( (void *) b->yy_ch_buf,\n\t\t\t\t\t\t\t (yy_size_t) (b->yy_buf_size + 2)  );\n\t\t\t\t}\n\t\t\telse\n\t\t\t\t/* Can't grow it, we don't own it. */\n\t\t\t\tb->yy_ch_buf = NULL;\n\n\t\t\tif ( ! b->yy_ch_buf )\n\t\t\t\tYY_FATAL_ERROR(\n\t\t\t\t\"fatal error - scanner input buffer overflow\" );\n\n\t\t\t(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];\n\n\t\t\tnum_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -\n\t\t\t\t\t\tnumber_to_move - 1;\n\n\t\t\t}\n\n\t\tif ( num_to_read > YY_READ_BUF_SIZE )\n\t\t\tnum_to_read = YY_READ_BUF_SIZE;\n\n\t\t/* Read in more data. */\n\t\tYY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),\n\t\t\t(yy_n_chars), num_to_read );\n\n\t\tYY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);\n\t\t}\n\n\tif ( (yy_n_chars) == 0 )\n\t\t{\n\t\tif ( number_to_move == YY_MORE_ADJ )\n\t\t\t{\n\t\t\tret_val = EOB_ACT_END_OF_FILE;\n\t\t\tyyrestart( yyin  );\n\t\t\t}\n\n\t\telse\n\t\t\t{\n\t\t\tret_val = EOB_ACT_LAST_MATCH;\n\t\t\tYY_CURRENT_BUFFER_LVALUE->yy_buffer_status =\n\t\t\t\tYY_BUFFER_EOF_PENDING;\n\t\t\t}\n\t\t}\n\n\telse\n\t\tret_val = EOB_ACT_CONTINUE_SCAN;\n\n\tif (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {\n\t\t/* Extend the array by 50%, plus the number we really need. */\n\t\tint new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);\n\t\tYY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(\n\t\t\t(void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );\n\t\tif ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )\n\t\t\tYY_FATAL_ERROR( \"out of dynamic memory in yy_get_next_buffer()\" );\n\t\t/* \"- 2\" to take care of EOB's */\n\t\tYY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);\n\t}\n\n\t(yy_n_chars) += number_to_move;\n\tYY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;\n\tYY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;\n\n\t(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];\n\n\treturn ret_val;\n}\n\n/* yy_get_previous_state - get the state just before the EOB char was reached */\n\n    static yy_state_type yy_get_previous_state (void)\n{\n\tyy_state_type yy_current_state;\n\tchar *yy_cp;\n    \n\tyy_current_state = (yy_start);\n\n\tfor ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )\n\t\t{\n\t\tyy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];\n\t\t}\n\n\treturn yy_current_state;\n}\n\n/* yy_try_NUL_trans - try to make a transition on the NUL character\n *\n * synopsis\n *\tnext_state = yy_try_NUL_trans( current_state );\n */\n    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )\n{\n\tint yy_is_jam;\n    \n\tyy_current_state = yy_nxt[yy_current_state][1];\n\tyy_is_jam = (yy_current_state <= 0);\n\n\t\treturn yy_is_jam ? 0 : yy_current_state;\n}\n\n#ifndef YY_NO_UNPUT\n\n    static void yyunput (int c, char * yy_bp )\n{\n\tchar *yy_cp;\n    \n    yy_cp = (yy_c_buf_p);\n\n\t/* undo effects of setting up yytext */\n\t*yy_cp = (yy_hold_char);\n\n\tif ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )\n\t\t{ /* need to shift things up to make room */\n\t\t/* +2 for EOB chars. */\n\t\tint number_to_move = (yy_n_chars) + 2;\n\t\tchar *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[\n\t\t\t\t\tYY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];\n\t\tchar *source =\n\t\t\t\t&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];\n\n\t\twhile ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )\n\t\t\t*--dest = *--source;\n\n\t\tyy_cp += (int) (dest - source);\n\t\tyy_bp += (int) (dest - source);\n\t\tYY_CURRENT_BUFFER_LVALUE->yy_n_chars =\n\t\t\t(yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;\n\n\t\tif ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )\n\t\t\tYY_FATAL_ERROR( \"flex scanner push-back overflow\" );\n\t\t}\n\n\t*--yy_cp = (char) c;\n\n    if ( c == '\\n' ){\n        --yylineno;\n    }\n\n\t(yytext_ptr) = yy_bp;\n\t(yy_hold_char) = *yy_cp;\n\t(yy_c_buf_p) = yy_cp;\n}\n\n#endif\n\n#ifndef YY_NO_INPUT\n#ifdef __cplusplus\n    static int yyinput (void)\n#else\n    static int input  (void)\n#endif\n\n{\n\tint c;\n    \n\t*(yy_c_buf_p) = (yy_hold_char);\n\n\tif ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )\n\t\t{\n\t\t/* yy_c_buf_p now points to the character we want to return.\n\t\t * If this occurs *before* the EOB characters, then it's a\n\t\t * valid NUL; if not, then we've hit the end of the buffer.\n\t\t */\n\t\tif ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )\n\t\t\t/* This was really a NUL. */\n\t\t\t*(yy_c_buf_p) = '\\0';\n\n\t\telse\n\t\t\t{ /* need more input */\n\t\t\tint offset = (int) ((yy_c_buf_p) - (yytext_ptr));\n\t\t\t++(yy_c_buf_p);\n\n\t\t\tswitch ( yy_get_next_buffer(  ) )\n\t\t\t\t{\n\t\t\t\tcase EOB_ACT_LAST_MATCH:\n\t\t\t\t\t/* This happens because yy_g_n_b()\n\t\t\t\t\t * sees that we've accumulated a\n\t\t\t\t\t * token and flags that we need to\n\t\t\t\t\t * try matching the token before\n\t\t\t\t\t * proceeding.  But for input(),\n\t\t\t\t\t * there's no matching to consider.\n\t\t\t\t\t * So convert the EOB_ACT_LAST_MATCH\n\t\t\t\t\t * to EOB_ACT_END_OF_FILE.\n\t\t\t\t\t */\n\n\t\t\t\t\t/* Reset buffer status. */\n\t\t\t\t\tyyrestart( yyin );\n\n\t\t\t\t\t/*FALLTHROUGH*/\n\n\t\t\t\tcase EOB_ACT_END_OF_FILE:\n\t\t\t\t\t{\n\t\t\t\t\tif ( yywrap(  ) )\n\t\t\t\t\t\treturn 0;\n\n\t\t\t\t\tif ( ! (yy_did_buffer_switch_on_eof) )\n\t\t\t\t\t\tYY_NEW_FILE;\n#ifdef __cplusplus\n\t\t\t\t\treturn yyinput();\n#else\n\t\t\t\t\treturn input();\n#endif\n\t\t\t\t\t}\n\n\t\t\t\tcase EOB_ACT_CONTINUE_SCAN:\n\t\t\t\t\t(yy_c_buf_p) = (yytext_ptr) + offset;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\tc = *(unsigned char *) (yy_c_buf_p);\t/* cast for 8-bit char's */\n\t*(yy_c_buf_p) = '\\0';\t/* preserve yytext */\n\t(yy_hold_char) = *++(yy_c_buf_p);\n\n\tif ( c == '\\n' )\n\n    yylineno++;\n;\n\n\treturn c;\n}\n#endif\t/* ifndef YY_NO_INPUT */\n\n/** Immediately switch to a different input stream.\n * @param input_file A readable stream.\n * \n * @note This function does not reset the start condition to @c INITIAL .\n */\n    void yyrestart  (FILE * input_file )\n{\n    \n\tif ( ! YY_CURRENT_BUFFER ){\n        yyensure_buffer_stack ();\n\t\tYY_CURRENT_BUFFER_LVALUE =\n            yy_create_buffer( yyin, YY_BUF_SIZE );\n\t}\n\n\tyy_init_buffer( YY_CURRENT_BUFFER, input_file );\n\tyy_load_buffer_state(  );\n}\n\n/** Switch to a different input buffer.\n * @param new_buffer The new input buffer.\n * \n */\n    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )\n{\n    \n\t/* TODO. We should be able to replace this entire function body\n\t * with\n\t *\t\tyypop_buffer_state();\n\t *\t\tyypush_buffer_state(new_buffer);\n     */\n\tyyensure_buffer_stack ();\n\tif ( YY_CURRENT_BUFFER == new_buffer )\n\t\treturn;\n\n\tif ( YY_CURRENT_BUFFER )\n\t\t{\n\t\t/* Flush out information for old buffer. */\n\t\t*(yy_c_buf_p) = (yy_hold_char);\n\t\tYY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);\n\t\tYY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);\n\t\t}\n\n\tYY_CURRENT_BUFFER_LVALUE = new_buffer;\n\tyy_load_buffer_state(  );\n\n\t/* We don't actually know whether we did this switch during\n\t * EOF (yywrap()) processing, but the only time this flag\n\t * is looked at is after yywrap() is called, so it's safe\n\t * to go ahead and always set it.\n\t */\n\t(yy_did_buffer_switch_on_eof) = 1;\n}\n\nstatic void yy_load_buffer_state  (void)\n{\n    \t(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;\n\t(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;\n\tyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;\n\t(yy_hold_char) = *(yy_c_buf_p);\n}\n\n/** Allocate and initialize an input buffer state.\n * @param file A readable stream.\n * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.\n * \n * @return the allocated buffer state.\n */\n    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )\n{\n\tYY_BUFFER_STATE b;\n    \n\tb = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );\n\tif ( ! b )\n\t\tYY_FATAL_ERROR( \"out of dynamic memory in yy_create_buffer()\" );\n\n\tb->yy_buf_size = size;\n\n\t/* yy_ch_buf has to be 2 characters longer than the size given because\n\t * we need to put in 2 end-of-buffer characters.\n\t */\n\tb->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );\n\tif ( ! b->yy_ch_buf )\n\t\tYY_FATAL_ERROR( \"out of dynamic memory in yy_create_buffer()\" );\n\n\tb->yy_is_our_buffer = 1;\n\n\tyy_init_buffer( b, file );\n\n\treturn b;\n}\n\n/** Destroy the buffer.\n * @param b a buffer created with yy_create_buffer()\n * \n */\n    void yy_delete_buffer (YY_BUFFER_STATE  b )\n{\n    \n\tif ( ! b )\n\t\treturn;\n\n\tif ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */\n\t\tYY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;\n\n\tif ( b->yy_is_our_buffer )\n\t\tyyfree( (void *) b->yy_ch_buf  );\n\n\tyyfree( (void *) b  );\n}\n\n/* Initializes or reinitializes a buffer.\n * This function is sometimes called more than once on the same buffer,\n * such as during a yyrestart() or at EOF.\n */\n    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )\n\n{\n\tint oerrno = errno;\n    \n\tyy_flush_buffer( b );\n\n\tb->yy_input_file = file;\n\tb->yy_fill_buffer = 1;\n\n    /* If b is the current buffer, then yy_init_buffer was _probably_\n     * called from yyrestart() or through yy_get_next_buffer.\n     * In that case, we don't want to reset the lineno or column.\n     */\n    if (b != YY_CURRENT_BUFFER){\n        b->yy_bs_lineno = 1;\n        b->yy_bs_column = 0;\n    }\n\n        b->yy_is_interactive = 0;\n    \n\terrno = oerrno;\n}\n\n/** Discard all buffered characters. On the next scan, YY_INPUT will be called.\n * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.\n * \n */\n    void yy_flush_buffer (YY_BUFFER_STATE  b )\n{\n    \tif ( ! b )\n\t\treturn;\n\n\tb->yy_n_chars = 0;\n\n\t/* We always need two end-of-buffer characters.  The first causes\n\t * a transition to the end-of-buffer state.  The second causes\n\t * a jam in that state.\n\t */\n\tb->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;\n\tb->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;\n\n\tb->yy_buf_pos = &b->yy_ch_buf[0];\n\n\tb->yy_at_bol = 1;\n\tb->yy_buffer_status = YY_BUFFER_NEW;\n\n\tif ( b == YY_CURRENT_BUFFER )\n\t\tyy_load_buffer_state(  );\n}\n\n/** Pushes the new state onto the stack. The new state becomes\n *  the current state. This function will allocate the stack\n *  if necessary.\n *  @param new_buffer The new state.\n *  \n */\nvoid yypush_buffer_state (YY_BUFFER_STATE new_buffer )\n{\n    \tif (new_buffer == NULL)\n\t\treturn;\n\n\tyyensure_buffer_stack();\n\n\t/* This block is copied from yy_switch_to_buffer. */\n\tif ( YY_CURRENT_BUFFER )\n\t\t{\n\t\t/* Flush out information for old buffer. */\n\t\t*(yy_c_buf_p) = (yy_hold_char);\n\t\tYY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);\n\t\tYY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);\n\t\t}\n\n\t/* Only push if top exists. Otherwise, replace top. */\n\tif (YY_CURRENT_BUFFER)\n\t\t(yy_buffer_stack_top)++;\n\tYY_CURRENT_BUFFER_LVALUE = new_buffer;\n\n\t/* copied from yy_switch_to_buffer. */\n\tyy_load_buffer_state(  );\n\t(yy_did_buffer_switch_on_eof) = 1;\n}\n\n/** Removes and deletes the top of the stack, if present.\n *  The next element becomes the new top.\n *  \n */\nvoid yypop_buffer_state (void)\n{\n    \tif (!YY_CURRENT_BUFFER)\n\t\treturn;\n\n\tyy_delete_buffer(YY_CURRENT_BUFFER );\n\tYY_CURRENT_BUFFER_LVALUE = NULL;\n\tif ((yy_buffer_stack_top) > 0)\n\t\t--(yy_buffer_stack_top);\n\n\tif (YY_CURRENT_BUFFER) {\n\t\tyy_load_buffer_state(  );\n\t\t(yy_did_buffer_switch_on_eof) = 1;\n\t}\n}\n\n/* Allocates the stack if it does not exist.\n *  Guarantees space for at least one push.\n */\nstatic void yyensure_buffer_stack (void)\n{\n\tyy_size_t num_to_alloc;\n    \n\tif (!(yy_buffer_stack)) {\n\n\t\t/* First allocation is just for 2 elements, since we don't know if this\n\t\t * scanner will even need a stack. We use 2 instead of 1 to avoid an\n\t\t * immediate realloc on the next call.\n         */\n      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */\n\t\t(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc\n\t\t\t\t\t\t\t\t(num_to_alloc * sizeof(struct yy_buffer_state*)\n\t\t\t\t\t\t\t\t);\n\t\tif ( ! (yy_buffer_stack) )\n\t\t\tYY_FATAL_ERROR( \"out of dynamic memory in yyensure_buffer_stack()\" );\n\n\t\tmemset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));\n\n\t\t(yy_buffer_stack_max) = num_to_alloc;\n\t\t(yy_buffer_stack_top) = 0;\n\t\treturn;\n\t}\n\n\tif ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){\n\n\t\t/* Increase the buffer to prepare for a possible push. */\n\t\tyy_size_t grow_size = 8 /* arbitrary grow size */;\n\n\t\tnum_to_alloc = (yy_buffer_stack_max) + grow_size;\n\t\t(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc\n\t\t\t\t\t\t\t\t((yy_buffer_stack),\n\t\t\t\t\t\t\t\tnum_to_alloc * sizeof(struct yy_buffer_state*)\n\t\t\t\t\t\t\t\t);\n\t\tif ( ! (yy_buffer_stack) )\n\t\t\tYY_FATAL_ERROR( \"out of dynamic memory in yyensure_buffer_stack()\" );\n\n\t\t/* zero only the new slots.*/\n\t\tmemset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));\n\t\t(yy_buffer_stack_max) = num_to_alloc;\n\t}\n}\n\n/** Setup the input buffer state to scan directly from a user-specified character buffer.\n * @param base the character buffer\n * @param size the size in bytes of the character buffer\n * \n * @return the newly allocated buffer state object.\n */\nYY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )\n{\n\tYY_BUFFER_STATE b;\n    \n\tif ( size < 2 ||\n\t     base[size-2] != YY_END_OF_BUFFER_CHAR ||\n\t     base[size-1] != YY_END_OF_BUFFER_CHAR )\n\t\t/* They forgot to leave room for the EOB's. */\n\t\treturn NULL;\n\n\tb = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );\n\tif ( ! b )\n\t\tYY_FATAL_ERROR( \"out of dynamic memory in yy_scan_buffer()\" );\n\n\tb->yy_buf_size = (int) (size - 2);\t/* \"- 2\" to take care of EOB's */\n\tb->yy_buf_pos = b->yy_ch_buf = base;\n\tb->yy_is_our_buffer = 0;\n\tb->yy_input_file = NULL;\n\tb->yy_n_chars = b->yy_buf_size;\n\tb->yy_is_interactive = 0;\n\tb->yy_at_bol = 1;\n\tb->yy_fill_buffer = 0;\n\tb->yy_buffer_status = YY_BUFFER_NEW;\n\n\tyy_switch_to_buffer( b  );\n\n\treturn b;\n}\n\n/** Setup the input buffer state to scan a string. The next call to yylex() will\n * scan from a @e copy of @a str.\n * @param yystr a NUL-terminated string to scan\n * \n * @return the newly allocated buffer state object.\n * @note If you want to scan bytes that may contain NUL values, then use\n *       yy_scan_bytes() instead.\n */\nYY_BUFFER_STATE yy_scan_string (const char * yystr )\n{\n    \n\treturn yy_scan_bytes( yystr, (int) strlen(yystr) );\n}\n\n/** Setup the input buffer state to scan the given bytes. The next call to yylex() will\n * scan from a @e copy of @a bytes.\n * @param yybytes the byte buffer to scan\n * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.\n * \n * @return the newly allocated buffer state object.\n */\nYY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )\n{\n\tYY_BUFFER_STATE b;\n\tchar *buf;\n\tyy_size_t n;\n\tint i;\n    \n\t/* Get memory for full buffer, including space for trailing EOB's. */\n\tn = (yy_size_t) (_yybytes_len + 2);\n\tbuf = (char *) yyalloc( n  );\n\tif ( ! buf )\n\t\tYY_FATAL_ERROR( \"out of dynamic memory in yy_scan_bytes()\" );\n\n\tfor ( i = 0; i < _yybytes_len; ++i )\n\t\tbuf[i] = yybytes[i];\n\n\tbuf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;\n\n\tb = yy_scan_buffer( buf, n );\n\tif ( ! b )\n\t\tYY_FATAL_ERROR( \"bad buffer in yy_scan_bytes()\" );\n\n\t/* It's okay to grow etc. this buffer, and we should throw it\n\t * away when we're done.\n\t */\n\tb->yy_is_our_buffer = 1;\n\n\treturn b;\n}\n\n#ifndef YY_EXIT_FAILURE\n#define YY_EXIT_FAILURE 2\n#endif\n\nstatic void yynoreturn yy_fatal_error (const char* msg )\n{\n\t\t\tfprintf( stderr, \"%s\\n\", msg );\n\texit( YY_EXIT_FAILURE );\n}\n\n/* Redefine yyless() so it works in section 3 code. */\n\n#undef yyless\n#define yyless(n) \\\n\tdo \\\n\t\t{ \\\n\t\t/* Undo effects of setting up yytext. */ \\\n        int yyless_macro_arg = (n); \\\n        YY_LESS_LINENO(yyless_macro_arg);\\\n\t\tyytext[yyleng] = (yy_hold_char); \\\n\t\t(yy_c_buf_p) = yytext + yyless_macro_arg; \\\n\t\t(yy_hold_char) = *(yy_c_buf_p); \\\n\t\t*(yy_c_buf_p) = '\\0'; \\\n\t\tyyleng = yyless_macro_arg; \\\n\t\t} \\\n\twhile ( 0 )\n\n/* Accessor  methods (get/set functions) to struct members. */\n\n/** Get the current line number.\n * \n */\nint yyget_lineno  (void)\n{\n\n    return yylineno;\n}\n\n/** Get the input stream.\n * \n */\nFILE *yyget_in  (void)\n{\n        return yyin;\n}\n\n/** Get the output stream.\n * \n */\nFILE *yyget_out  (void)\n{\n        return yyout;\n}\n\n/** Get the length of the current token.\n * \n */\nint yyget_leng  (void)\n{\n        return yyleng;\n}\n\n/** Get the current token.\n * \n */\n\nchar *yyget_text  (void)\n{\n        return yytext;\n}\n\n/** Set the current line number.\n * @param _line_number line number\n * \n */\nvoid yyset_lineno (int  _line_number )\n{\n    \n    yylineno = _line_number;\n}\n\n/** Set the input stream. This does not discard the current\n * input buffer.\n * @param _in_str A readable stream.\n * \n * @see yy_switch_to_buffer\n */\nvoid yyset_in (FILE *  _in_str )\n{\n        yyin = _in_str ;\n}\n\nvoid yyset_out (FILE *  _out_str )\n{\n        yyout = _out_str ;\n}\n\nint yyget_debug  (void)\n{\n        return yy_flex_debug;\n}\n\nvoid yyset_debug (int  _bdebug )\n{\n        yy_flex_debug = _bdebug ;\n}\n\nstatic int yy_init_globals (void)\n{\n        /* Initialization is the same as for the non-reentrant scanner.\n     * This function is called from yylex_destroy(), so don't allocate here.\n     */\n\n    /* We do not touch yylineno unless the option is enabled. */\n    yylineno =  1;\n\n    (yy_buffer_stack) = NULL;\n    (yy_buffer_stack_top) = 0;\n    (yy_buffer_stack_max) = 0;\n    (yy_c_buf_p) = NULL;\n    (yy_init) = 0;\n    (yy_start) = 0;\n\n/* Defined in main.c */\n#ifdef YY_STDINIT\n    yyin = stdin;\n    yyout = stdout;\n#else\n    yyin = NULL;\n    yyout = NULL;\n#endif\n\n    /* For future reference: Set errno on error, since we are called by\n     * yylex_init()\n     */\n    return 0;\n}\n\n/* yylex_destroy is for both reentrant and non-reentrant scanners. */\nint yylex_destroy  (void)\n{\n    \n    /* Pop the buffer stack, destroying each element. */\n\twhile(YY_CURRENT_BUFFER){\n\t\tyy_delete_buffer( YY_CURRENT_BUFFER  );\n\t\tYY_CURRENT_BUFFER_LVALUE = NULL;\n\t\tyypop_buffer_state();\n\t}\n\n\t/* Destroy the stack itself. */\n\tyyfree((yy_buffer_stack) );\n\t(yy_buffer_stack) = NULL;\n\n    /* Reset the globals. This is important in a non-reentrant scanner so the next time\n     * yylex() is called, initialization will occur. */\n    yy_init_globals( );\n\n    return 0;\n}\n\n/*\n * Internal utility routines.\n */\n\n#ifndef yytext_ptr\nstatic void yy_flex_strncpy (char* s1, const char * s2, int n )\n{\n\n\tint i;\n\tfor ( i = 0; i < n; ++i )\n\t\ts1[i] = s2[i];\n}\n#endif\n\n#ifdef YY_NEED_STRLEN\nstatic int yy_flex_strlen (const char * s )\n{\n\tint n;\n\tfor ( n = 0; s[n]; ++n )\n\t\t;\n\n\treturn n;\n}\n#endif\n\nvoid *yyalloc (yy_size_t  size )\n{\n\t\t\treturn malloc(size);\n}\n\nvoid *yyrealloc  (void * ptr, yy_size_t  size )\n{\n\n\t/* The cast to (char *) in the following accommodates both\n\t * implementations that use char* generic pointers, and those\n\t * that use void* generic pointers.  It works with the latter\n\t * because both ANSI C and C++ allow castless assignment from\n\t * any pointer type to void*, and deal with argument conversions\n\t * as though doing an assignment.\n\t */\n\treturn realloc(ptr, size);\n}\n\nvoid yyfree (void * ptr )\n{\n\t\t\tfree( (char *) ptr );\t/* see yyrealloc() for (char *) cast */\n}\n\n#define YYTABLES_NAME \"yytables\"\n\nvoid zconf_starthelp(void)\n{\n\tnew_string();\n\tlast_ts = first_ts = 0;\n\tBEGIN(HELP);\n}\n\nstatic void zconf_endhelp(void)\n{\n\tyylval.string = text;\n\tBEGIN(INITIAL);\n}\n\n/*\n * Try to open specified file with following names:\n * ./name\n * $(srctree)/name\n * The latter is used when srctree is separate from objtree\n * when compiling the kernel.\n * Return NULL if file is not found.\n */\nFILE *zconf_fopen(const char *name)\n{\n\tchar *env, fullname[PATH_MAX+1];\n\tFILE *f;\n\n\tf = fopen(name, \"r\");\n\tif (!f && name != NULL && name[0] != '/') {\n\t\tenv = getenv(SRCTREE);\n\t\tif (env) {\n\t\t\tsprintf(fullname, \"%s/%s\", env, name);\n\t\t\tf = fopen(fullname, \"r\");\n\t\t}\n\t}\n\treturn f;\n}\n\nvoid zconf_initscan(const char *name)\n{\n\tyyin = zconf_fopen(name);\n\tif (!yyin) {\n\t\tfprintf(stderr, \"can't find file %s\\n\", name);\n\t\texit(1);\n\t}\n\n\tcurrent_buf = xmalloc(sizeof(*current_buf));\n\tmemset(current_buf, 0, sizeof(*current_buf));\n\n\tcurrent_file = file_lookup(name);\n\tyylineno = 1;\n}\n\nvoid zconf_nextfile(const char *name)\n{\n\tstruct file *iter;\n\tstruct file *file = file_lookup(name);\n\tstruct buffer *buf = xmalloc(sizeof(*buf));\n\tmemset(buf, 0, sizeof(*buf));\n\n\tcurrent_buf->state = YY_CURRENT_BUFFER;\n\tyyin = zconf_fopen(file->name);\n\tif (!yyin) {\n\t\tfprintf(stderr, \"%s:%d: can't open file \\\"%s\\\"\\n\",\n\t\t\tzconf_curname(), zconf_lineno(), file->name);\n\t\texit(1);\n\t}\n\tyy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));\n\tbuf->parent = current_buf;\n\tcurrent_buf = buf;\n\n\tcurrent_file->lineno = yylineno;\n\tfile->parent = current_file;\n\n\tfor (iter = current_file; iter; iter = iter->parent) {\n\t\tif (!strcmp(iter->name, file->name)) {\n\t\t\tfprintf(stderr,\n\t\t\t\t\"Recursive inclusion detected.\\n\"\n\t\t\t\t\"Inclusion path:\\n\"\n\t\t\t\t\"  current file : %s\\n\", file->name);\n\t\t\titer = file;\n\t\t\tdo {\n\t\t\t\titer = iter->parent;\n\t\t\t\tfprintf(stderr, \"  included from: %s:%d\\n\",\n\t\t\t\t\titer->name, iter->lineno - 1);\n\t\t\t} while (strcmp(iter->name, file->name));\n\t\t\texit(1);\n\t\t}\n\t}\n\n\tyylineno = 1;\n\tcurrent_file = file;\n}\n\nstatic void zconf_endfile(void)\n{\n\tstruct buffer *parent;\n\n\tcurrent_file = current_file->parent;\n\tif (current_file)\n\t\tyylineno = current_file->lineno;\n\n\tparent = current_buf->parent;\n\tif (parent) {\n\t\tfclose(yyin);\n\t\tyy_delete_buffer(YY_CURRENT_BUFFER);\n\t\tyy_switch_to_buffer(parent->state);\n\t}\n\tfree(current_buf);\n\tcurrent_buf = parent;\n}\n\nint zconf_lineno(void)\n{\n\treturn current_pos.lineno;\n}\n\nconst char *zconf_curname(void)\n{\n\treturn current_pos.file ? current_pos.file->name : \"<none>\";\n}\n\n"
  },
  {
    "path": "support/kconfig/zconf.tab.c_shipped",
    "content": "/* A Bison parser, made by GNU Bison 3.0.4.  */\n\n/* Bison implementation for Yacc-like parsers in C\n\n   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.\n\n   This program is free software: you can redistribute it and/or modify\n   it under the terms of the GNU General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU General Public License for more details.\n\n   You should have received a copy of the GNU General Public License\n   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */\n\n/* As a special exception, you may create a larger work that contains\n   part or all of the Bison parser skeleton and distribute that work\n   under terms of your choice, so long as that work isn't itself a\n   parser generator using the skeleton or a modified version thereof\n   as a parser skeleton.  Alternatively, if you modify or redistribute\n   the parser skeleton itself, you may (at your option) remove this\n   special exception, which will cause the skeleton and the resulting\n   Bison output files to be licensed under the GNU General Public\n   License without this special exception.\n\n   This special exception was added by the Free Software Foundation in\n   version 2.2 of Bison.  */\n\n/* C LALR(1) parser skeleton written by Richard Stallman, by\n   simplifying the original so-called \"semantic\" parser.  */\n\n/* All symbols defined below should begin with yy or YY, to avoid\n   infringing on user name space.  This should be done even for local\n   variables, as they might otherwise be expanded by user macros.\n   There are some unavoidable exceptions within include files to\n   define necessary library symbols; they are noted \"INFRINGES ON\n   USER NAME SPACE\" below.  */\n\n/* Identify Bison output.  */\n#define YYBISON 1\n\n/* Bison version.  */\n#define YYBISON_VERSION \"3.0.4\"\n\n/* Skeleton name.  */\n#define YYSKELETON_NAME \"yacc.c\"\n\n/* Pure parsers.  */\n#define YYPURE 0\n\n/* Push parsers.  */\n#define YYPUSH 0\n\n/* Pull parsers.  */\n#define YYPULL 1\n\n\n\n\n/* Copy the first part of user declarations.  */\n\n\n/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#include <ctype.h>\n#include <stdarg.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdbool.h>\n\n#include \"lkc.h\"\n\n#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)\n\n#define PRINTD\t\t0x0001\n#define DEBUG_PARSE\t0x0002\n\nint cdebug = PRINTD;\n\nint yylex(void);\nstatic void yyerror(const char *err);\nstatic void zconfprint(const char *err, ...);\nstatic void zconf_error(const char *err, ...);\nstatic bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken);\n\nstruct symbol *symbol_hash[SYMBOL_HASHSIZE];\n\nstatic struct menu *current_menu, *current_entry;\n\n\n\n\n# ifndef YY_NULLPTR\n#  if defined __cplusplus && 201103L <= __cplusplus\n#   define YY_NULLPTR nullptr\n#  else\n#   define YY_NULLPTR 0\n#  endif\n# endif\n\n/* Enabling verbose error messages.  */\n#ifdef YYERROR_VERBOSE\n# undef YYERROR_VERBOSE\n# define YYERROR_VERBOSE 1\n#else\n# define YYERROR_VERBOSE 0\n#endif\n\n\n/* Debug traces.  */\n#ifndef YYDEBUG\n# define YYDEBUG 1\n#endif\n#if YYDEBUG\nextern int yydebug;\n#endif\n\n/* Token type.  */\n#ifndef YYTOKENTYPE\n# define YYTOKENTYPE\n  enum yytokentype\n  {\n    T_MAINMENU = 258,\n    T_MENU = 259,\n    T_ENDMENU = 260,\n    T_SOURCE = 261,\n    T_CHOICE = 262,\n    T_ENDCHOICE = 263,\n    T_COMMENT = 264,\n    T_CONFIG = 265,\n    T_MENUCONFIG = 266,\n    T_HELP = 267,\n    T_HELPTEXT = 268,\n    T_IF = 269,\n    T_ENDIF = 270,\n    T_DEPENDS = 271,\n    T_OPTIONAL = 272,\n    T_PROMPT = 273,\n    T_TYPE = 274,\n    T_DEFAULT = 275,\n    T_SELECT = 276,\n    T_IMPLY = 277,\n    T_RANGE = 278,\n    T_VISIBLE = 279,\n    T_OPTION = 280,\n    T_ON = 281,\n    T_WORD = 282,\n    T_WORD_QUOTE = 283,\n    T_UNEQUAL = 284,\n    T_LESS = 285,\n    T_LESS_EQUAL = 286,\n    T_GREATER = 287,\n    T_GREATER_EQUAL = 288,\n    T_CLOSE_PAREN = 289,\n    T_OPEN_PAREN = 290,\n    T_EOL = 291,\n    T_OR = 292,\n    T_AND = 293,\n    T_EQUAL = 294,\n    T_NOT = 295\n  };\n#endif\n\n/* Value type.  */\n#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED\n\nunion YYSTYPE\n{\n\n\n\tchar *string;\n\tstruct file *file;\n\tstruct symbol *symbol;\n\tstruct expr *expr;\n\tstruct menu *menu;\n\tconst struct kconf_id *id;\n\n\n};\n\ntypedef union YYSTYPE YYSTYPE;\n# define YYSTYPE_IS_TRIVIAL 1\n# define YYSTYPE_IS_DECLARED 1\n#endif\n\n\nextern YYSTYPE yylval;\n\nint yyparse (void);\n\n\n\n/* Copy the second part of user declarations.  */\n\n\n/* Include kconf_id.c here so it can see the token constants. */\n#include \"kconf_id.c\"\n\n\n\n#ifdef short\n# undef short\n#endif\n\n#ifdef YYTYPE_UINT8\ntypedef YYTYPE_UINT8 yytype_uint8;\n#else\ntypedef unsigned char yytype_uint8;\n#endif\n\n#ifdef YYTYPE_INT8\ntypedef YYTYPE_INT8 yytype_int8;\n#else\ntypedef signed char yytype_int8;\n#endif\n\n#ifdef YYTYPE_UINT16\ntypedef YYTYPE_UINT16 yytype_uint16;\n#else\ntypedef unsigned short int yytype_uint16;\n#endif\n\n#ifdef YYTYPE_INT16\ntypedef YYTYPE_INT16 yytype_int16;\n#else\ntypedef short int yytype_int16;\n#endif\n\n#ifndef YYSIZE_T\n# ifdef __SIZE_TYPE__\n#  define YYSIZE_T __SIZE_TYPE__\n# elif defined size_t\n#  define YYSIZE_T size_t\n# elif ! defined YYSIZE_T\n#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */\n#  define YYSIZE_T size_t\n# else\n#  define YYSIZE_T unsigned int\n# endif\n#endif\n\n#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)\n\n#ifndef YY_\n# if defined YYENABLE_NLS && YYENABLE_NLS\n#  if ENABLE_NLS\n#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */\n#   define YY_(Msgid) dgettext (\"bison-runtime\", Msgid)\n#  endif\n# endif\n# ifndef YY_\n#  define YY_(Msgid) Msgid\n# endif\n#endif\n\n#ifndef YY_ATTRIBUTE\n# if (defined __GNUC__                                               \\\n      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \\\n     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C\n#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)\n# else\n#  define YY_ATTRIBUTE(Spec) /* empty */\n# endif\n#endif\n\n#ifndef YY_ATTRIBUTE_PURE\n# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))\n#endif\n\n#ifndef YY_ATTRIBUTE_UNUSED\n# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))\n#endif\n\n#if !defined _Noreturn \\\n     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)\n# if defined _MSC_VER && 1200 <= _MSC_VER\n#  define _Noreturn __declspec (noreturn)\n# else\n#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))\n# endif\n#endif\n\n/* Suppress unused-variable warnings by \"using\" E.  */\n#if ! defined lint || defined __GNUC__\n# define YYUSE(E) ((void) (E))\n#else\n# define YYUSE(E) /* empty */\n#endif\n\n#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__\n/* Suppress an incorrect diagnostic about yylval being uninitialized.  */\n# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \\\n    _Pragma (\"GCC diagnostic push\") \\\n    _Pragma (\"GCC diagnostic ignored \\\"-Wuninitialized\\\"\")\\\n    _Pragma (\"GCC diagnostic ignored \\\"-Wmaybe-uninitialized\\\"\")\n# define YY_IGNORE_MAYBE_UNINITIALIZED_END \\\n    _Pragma (\"GCC diagnostic pop\")\n#else\n# define YY_INITIAL_VALUE(Value) Value\n#endif\n#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n# define YY_IGNORE_MAYBE_UNINITIALIZED_END\n#endif\n#ifndef YY_INITIAL_VALUE\n# define YY_INITIAL_VALUE(Value) /* Nothing. */\n#endif\n\n\n#if ! defined yyoverflow || YYERROR_VERBOSE\n\n/* The parser invokes alloca or malloc; define the necessary symbols.  */\n\n# ifdef YYSTACK_USE_ALLOCA\n#  if YYSTACK_USE_ALLOCA\n#   ifdef __GNUC__\n#    define YYSTACK_ALLOC __builtin_alloca\n#   elif defined __BUILTIN_VA_ARG_INCR\n#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */\n#   elif defined _AIX\n#    define YYSTACK_ALLOC __alloca\n#   elif defined _MSC_VER\n#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */\n#    define alloca _alloca\n#   else\n#    define YYSTACK_ALLOC alloca\n#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS\n#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */\n      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */\n#     ifndef EXIT_SUCCESS\n#      define EXIT_SUCCESS 0\n#     endif\n#    endif\n#   endif\n#  endif\n# endif\n\n# ifdef YYSTACK_ALLOC\n   /* Pacify GCC's 'empty if-body' warning.  */\n#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)\n#  ifndef YYSTACK_ALLOC_MAXIMUM\n    /* The OS might guarantee only one guard page at the bottom of the stack,\n       and a page size can be as small as 4096 bytes.  So we cannot safely\n       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number\n       to allow for a few compiler-allocated temporary stack slots.  */\n#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */\n#  endif\n# else\n#  define YYSTACK_ALLOC YYMALLOC\n#  define YYSTACK_FREE YYFREE\n#  ifndef YYSTACK_ALLOC_MAXIMUM\n#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM\n#  endif\n#  if (defined __cplusplus && ! defined EXIT_SUCCESS \\\n       && ! ((defined YYMALLOC || defined malloc) \\\n             && (defined YYFREE || defined free)))\n#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */\n#   ifndef EXIT_SUCCESS\n#    define EXIT_SUCCESS 0\n#   endif\n#  endif\n#  ifndef YYMALLOC\n#   define YYMALLOC malloc\n#   if ! defined malloc && ! defined EXIT_SUCCESS\nvoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */\n#   endif\n#  endif\n#  ifndef YYFREE\n#   define YYFREE free\n#   if ! defined free && ! defined EXIT_SUCCESS\nvoid free (void *); /* INFRINGES ON USER NAME SPACE */\n#   endif\n#  endif\n# endif\n#endif /* ! defined yyoverflow || YYERROR_VERBOSE */\n\n\n#if (! defined yyoverflow \\\n     && (! defined __cplusplus \\\n         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))\n\n/* A type that is properly aligned for any stack member.  */\nunion yyalloc\n{\n  yytype_int16 yyss_alloc;\n  YYSTYPE yyvs_alloc;\n};\n\n/* The size of the maximum gap between one aligned stack and the next.  */\n# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)\n\n/* The size of an array large to enough to hold all stacks, each with\n   N elements.  */\n# define YYSTACK_BYTES(N) \\\n     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \\\n      + YYSTACK_GAP_MAXIMUM)\n\n# define YYCOPY_NEEDED 1\n\n/* Relocate STACK from its old location to the new one.  The\n   local variables YYSIZE and YYSTACKSIZE give the old and new number of\n   elements in the stack, and YYPTR gives the new location of the\n   stack.  Advance YYPTR to a properly aligned location for the next\n   stack.  */\n# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \\\n    do                                                                  \\\n      {                                                                 \\\n        YYSIZE_T yynewbytes;                                            \\\n        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \\\n        Stack = &yyptr->Stack_alloc;                                    \\\n        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \\\n        yyptr += yynewbytes / sizeof (*yyptr);                          \\\n      }                                                                 \\\n    while (0)\n\n#endif\n\n#if defined YYCOPY_NEEDED && YYCOPY_NEEDED\n/* Copy COUNT objects from SRC to DST.  The source and destination do\n   not overlap.  */\n# ifndef YYCOPY\n#  if defined __GNUC__ && 1 < __GNUC__\n#   define YYCOPY(Dst, Src, Count) \\\n      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))\n#  else\n#   define YYCOPY(Dst, Src, Count)              \\\n      do                                        \\\n        {                                       \\\n          YYSIZE_T yyi;                         \\\n          for (yyi = 0; yyi < (Count); yyi++)   \\\n            (Dst)[yyi] = (Src)[yyi];            \\\n        }                                       \\\n      while (0)\n#  endif\n# endif\n#endif /* !YYCOPY_NEEDED */\n\n/* YYFINAL -- State number of the termination state.  */\n#define YYFINAL  11\n/* YYLAST -- Last index in YYTABLE.  */\n#define YYLAST   325\n\n/* YYNTOKENS -- Number of terminals.  */\n#define YYNTOKENS  41\n/* YYNNTS -- Number of nonterminals.  */\n#define YYNNTS  52\n/* YYNRULES -- Number of rules.  */\n#define YYNRULES  126\n/* YYNSTATES -- Number of states.  */\n#define YYNSTATES  206\n\n/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned\n   by yylex, with out-of-bounds checking.  */\n#define YYUNDEFTOK  2\n#define YYMAXUTOK   295\n\n#define YYTRANSLATE(YYX)                                                \\\n  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)\n\n/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM\n   as returned by yylex, without out-of-bounds checking.  */\nstatic const yytype_uint8 yytranslate[] =\n{\n       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,\n       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,\n       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,\n      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,\n      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,\n      35,    36,    37,    38,    39,    40\n};\n\n#if YYDEBUG\n  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */\nstatic const yytype_uint16 yyrline[] =\n{\n       0,   110,   110,   110,   112,   112,   116,   124,   134,   136,\n     137,   138,   139,   140,   141,   145,   149,   149,   149,   149,\n     149,   149,   149,   149,   149,   153,   154,   155,   156,   157,\n     158,   162,   163,   169,   176,   181,   188,   197,   199,   200,\n     201,   202,   203,   204,   207,   215,   221,   231,   237,   243,\n     249,   252,   254,   267,   268,   273,   283,   288,   296,   299,\n     301,   302,   303,   304,   305,   308,   314,   325,   331,   341,\n     343,   348,   356,   364,   367,   369,   370,   371,   376,   383,\n     388,   396,   399,   401,   402,   403,   406,   415,   422,   427,\n     433,   451,   453,   454,   455,   458,   466,   468,   469,   472,\n     479,   481,   486,   487,   490,   491,   492,   496,   497,   500,\n     501,   504,   505,   506,   507,   508,   509,   510,   511,   512,\n     513,   514,   518,   520,   521,   524,   525\n};\n#endif\n\n#if YYDEBUG || YYERROR_VERBOSE || 0\n/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.\n   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */\nstatic const char *const yytname[] =\n{\n  \"$end\", \"error\", \"$undefined\", \"T_MAINMENU\", \"T_MENU\", \"T_ENDMENU\",\n  \"T_SOURCE\", \"T_CHOICE\", \"T_ENDCHOICE\", \"T_COMMENT\", \"T_CONFIG\",\n  \"T_MENUCONFIG\", \"T_HELP\", \"T_HELPTEXT\", \"T_IF\", \"T_ENDIF\", \"T_DEPENDS\",\n  \"T_OPTIONAL\", \"T_PROMPT\", \"T_TYPE\", \"T_DEFAULT\", \"T_SELECT\", \"T_IMPLY\",\n  \"T_RANGE\", \"T_VISIBLE\", \"T_OPTION\", \"T_ON\", \"T_WORD\", \"T_WORD_QUOTE\",\n  \"T_UNEQUAL\", \"T_LESS\", \"T_LESS_EQUAL\", \"T_GREATER\", \"T_GREATER_EQUAL\",\n  \"T_CLOSE_PAREN\", \"T_OPEN_PAREN\", \"T_EOL\", \"T_OR\", \"T_AND\", \"T_EQUAL\",\n  \"T_NOT\", \"$accept\", \"input\", \"start\", \"mainmenu_stmt\",\n  \"no_mainmenu_stmt\", \"stmt_list\", \"option_name\", \"common_stmt\",\n  \"option_error\", \"config_entry_start\", \"config_stmt\",\n  \"menuconfig_entry_start\", \"menuconfig_stmt\", \"config_option_list\",\n  \"config_option\", \"symbol_option\", \"symbol_option_list\",\n  \"symbol_option_arg\", \"choice\", \"choice_entry\", \"choice_end\",\n  \"choice_stmt\", \"choice_option_list\", \"choice_option\", \"choice_block\",\n  \"if_entry\", \"if_end\", \"if_stmt\", \"if_block\", \"menu\", \"menu_entry\",\n  \"menu_end\", \"menu_stmt\", \"menu_block\", \"source_stmt\", \"comment\",\n  \"comment_stmt\", \"help_start\", \"help\", \"depends_list\", \"depends\",\n  \"visibility_list\", \"visible\", \"prompt_stmt_opt\", \"prompt\", \"end\", \"nl\",\n  \"if_expr\", \"expr\", \"nonconst_symbol\", \"symbol\", \"word_opt\", YY_NULLPTR\n};\n#endif\n\n# ifdef YYPRINT\n/* YYTOKNUM[NUM] -- (External) token number corresponding to the\n   (internal) symbol number NUM (which must be that of a token).  */\nstatic const yytype_uint16 yytoknum[] =\n{\n       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,\n     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,\n     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,\n     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,\n     295\n};\n# endif\n\n#define YYPACT_NINF -92\n\n#define yypact_value_is_default(Yystate) \\\n  (!!((Yystate) == (-92)))\n\n#define YYTABLE_NINF -89\n\n#define yytable_value_is_error(Yytable_value) \\\n  0\n\n  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing\n     STATE-NUM.  */\nstatic const yytype_int16 yypact[] =\n{\n      20,    33,   -92,    16,   -92,   -92,   -92,    21,   -92,   -92,\n      29,   -92,   152,   186,   -92,   -92,    40,    67,    33,    71,\n      33,    42,    80,    33,    78,    78,    31,    82,   -92,   -92,\n     -92,   -92,   -92,   -92,   -92,   -92,   -92,   120,   -92,   131,\n     -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,\n     -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   109,   -92,\n     118,   -92,   128,   -92,   129,   -92,   141,   142,   -92,    31,\n      31,    74,   -92,    69,   -92,   144,   145,    28,   119,   248,\n     286,    77,    38,    77,   219,   -92,   -92,   -92,   -92,   -92,\n     -92,    -7,   -92,    31,    31,    40,    52,    52,    52,    52,\n      52,    52,   -92,   -92,   146,   147,   158,    33,    33,    31,\n      78,    78,    52,   -92,   184,   -92,   -92,   -92,   -92,   176,\n     -92,   -92,   162,    33,    33,    78,   -92,   -92,   -92,   -92,\n     -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   197,\n     -92,   272,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,\n     -92,   -92,   174,   -92,   -92,   -92,   -92,   -92,   -92,   -92,\n     -92,   -92,    31,   197,   178,   197,    59,   197,   197,    52,\n      27,   179,   -92,   -92,   197,   180,   197,    31,   -92,   111,\n     181,   -92,   -92,   182,   185,   195,   197,   193,   -92,   -92,\n     208,   -92,   209,   113,   -92,   -92,   -92,   -92,   -92,   211,\n      33,   -92,   -92,   -92,   -92,   -92\n};\n\n  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.\n     Performed when YYTABLE does not specify something else to do.  Zero\n     means the default is an error.  */\nstatic const yytype_uint8 yydefact[] =\n{\n       7,     0,   107,     0,     3,     8,     8,     7,   102,   103,\n       0,     1,     0,     0,   108,     2,     6,     0,     0,     0,\n       0,   125,     0,     0,     0,     0,     0,     0,    16,    21,\n      17,    18,    23,    19,    20,    22,    24,     0,    25,     0,\n       9,    37,    28,    37,    29,    59,    69,    10,    74,    26,\n      96,    82,    11,    30,    91,    27,    12,    15,     0,   104,\n       0,   126,     0,   105,     0,   122,     0,     0,   124,     0,\n       0,     0,   123,   111,   106,     0,     0,     0,     0,     0,\n       0,     0,    91,     0,     0,    78,    86,    55,    87,    33,\n      35,     0,   119,     0,     0,    71,     0,     0,     0,     0,\n       0,     0,    13,    14,     0,     0,     0,     0,   100,     0,\n       0,     0,     0,    51,     0,    43,    42,    38,    39,     0,\n      41,    40,     0,     0,   100,     0,    63,    64,    60,    62,\n      61,    70,    58,    57,    75,    77,    73,    76,    72,   109,\n      98,     0,    97,    83,    85,    81,    84,    80,    93,    94,\n      92,   118,   120,   121,   117,   112,   113,   114,   115,   116,\n      32,    89,     0,   109,     0,   109,   109,   109,   109,     0,\n       0,     0,    90,    67,   109,     0,   109,     0,    99,     0,\n       0,    44,   101,     0,     0,     0,   109,    53,    50,    31,\n       0,    66,     0,   110,    95,    45,    46,    47,    48,     0,\n       0,    52,    65,    68,    49,    54\n};\n\n  /* YYPGOTO[NTERM-NUM].  */\nstatic const yytype_int16 yypgoto[] =\n{\n     -92,   -92,   241,   -92,   -92,   244,   -92,   -13,   -66,   -92,\n     -92,   -92,   -92,   218,   -92,   -92,   -92,   -92,   -92,   -92,\n     -92,   -69,   -92,   -92,   -92,   -92,   -92,   -92,   -92,   -92,\n     -92,   -92,    12,   -92,   -92,   -92,   -92,   -92,   172,   170,\n     -64,   -92,   -92,   148,    -1,    34,     1,   139,   -68,   -21,\n     -91,   -92\n};\n\n  /* YYDEFGOTO[NTERM-NUM].  */\nstatic const yytype_int16 yydefgoto[] =\n{\n      -1,     3,     4,     5,     6,    12,    39,    40,   116,    41,\n      42,    43,    44,    77,   117,   118,   170,   201,    45,    46,\n     132,    47,    79,   128,    80,    48,   136,    49,    81,    50,\n      51,   145,    52,    83,    53,    54,    55,   119,   120,    84,\n     121,    82,   142,   164,   165,    56,     7,   178,    71,    72,\n      73,    62\n};\n\n  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If\n     positive, shift that token.  If negative, reduce the rule whose\n     number is the opposite.  If YYTABLE_NINF, syntax error.  */\nstatic const yytype_int16 yytable[] =\n{\n      10,    91,    92,    66,    67,   154,   155,   156,   157,   158,\n     159,    16,   135,   127,   144,   130,    11,    58,   149,    60,\n     150,   169,    64,     1,     1,   152,   153,   151,   -34,   104,\n      93,    94,   -34,   -34,   -34,   -34,   -34,   -34,   -34,   -34,\n     105,   166,   -34,   -34,   106,   -34,   107,   108,   109,   110,\n     111,   112,   -34,   113,   187,   114,     2,    14,    65,    68,\n       8,     9,   139,   188,   115,     2,    69,   131,   134,    61,\n     143,    70,    95,   177,   140,   149,    14,   150,   186,    65,\n      68,    18,    19,    20,    21,    22,    23,    24,    25,   167,\n     168,    26,    27,   137,   179,   146,    93,    94,    96,    97,\n      98,    99,   100,    57,   176,    65,   163,    59,   101,   193,\n       2,    93,    94,    38,   133,   138,    63,   147,    74,   -36,\n     104,    75,   174,   -36,   -36,   -36,   -36,   -36,   -36,   -36,\n     -36,   105,    76,   -36,   -36,   106,   -36,   107,   108,   109,\n     110,   111,   112,   -36,   113,    85,   114,   194,    93,    94,\n      93,    94,    -4,    17,    86,   115,    18,    19,    20,    21,\n      22,    23,    24,    25,    87,    88,    26,    27,    28,    29,\n      30,    31,    32,    33,    34,    35,    36,    89,    90,    37,\n     102,   103,   160,   161,   162,   171,    -5,    17,    38,   172,\n      18,    19,    20,    21,    22,    23,    24,    25,   173,   205,\n      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,\n      36,   177,    94,    37,   181,   189,   191,   195,   196,   -88,\n     104,   197,    38,   -88,   -88,   -88,   -88,   -88,   -88,   -88,\n     -88,   198,   200,   -88,   -88,   106,   -88,   -88,   -88,   -88,\n     -88,   -88,   -88,   -88,   202,   203,   114,   204,    15,   104,\n      13,   129,   141,   -56,   -56,   148,   -56,   -56,   -56,   -56,\n     105,    78,   -56,   -56,   106,   122,   123,   124,   125,     0,\n       0,     0,   175,   104,     0,   114,   -79,   -79,   -79,   -79,\n     -79,   -79,   -79,   -79,   126,     0,   -79,   -79,   106,     0,\n       0,    19,    20,     0,    22,    23,    24,    25,     0,   114,\n      26,    27,   180,     0,   182,   183,   184,   185,   148,     0,\n       0,     0,     0,   190,     0,   192,     0,     0,     0,     0,\n       0,     0,    38,     0,     0,   199\n};\n\nstatic const yytype_int16 yycheck[] =\n{\n       1,    69,    70,    24,    25,    96,    97,    98,    99,   100,\n     101,    10,    81,    79,    83,    79,     0,    18,    84,    20,\n      84,   112,    23,     3,     3,    93,    94,    34,     0,     1,\n      37,    38,     4,     5,     6,     7,     8,     9,    10,    11,\n      12,   109,    14,    15,    16,    17,    18,    19,    20,    21,\n      22,    23,    24,    25,    27,    27,    36,    36,    27,    28,\n      27,    28,    24,    36,    36,    36,    35,    80,    81,    27,\n      83,    40,    71,    14,    36,   141,    36,   141,   169,    27,\n      28,     4,     5,     6,     7,     8,     9,    10,    11,   110,\n     111,    14,    15,    81,   162,    83,    37,    38,    29,    30,\n      31,    32,    33,    36,   125,    27,   107,    36,    39,   177,\n      36,    37,    38,    36,    80,    81,    36,    83,    36,     0,\n       1,     1,   123,     4,     5,     6,     7,     8,     9,    10,\n      11,    12,     1,    14,    15,    16,    17,    18,    19,    20,\n      21,    22,    23,    24,    25,    36,    27,    36,    37,    38,\n      37,    38,     0,     1,    36,    36,     4,     5,     6,     7,\n       8,     9,    10,    11,    36,    36,    14,    15,    16,    17,\n      18,    19,    20,    21,    22,    23,    24,    36,    36,    27,\n      36,    36,    36,    36,    26,     1,     0,     1,    36,    13,\n       4,     5,     6,     7,     8,     9,    10,    11,    36,   200,\n      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,\n      24,    14,    38,    27,    36,    36,    36,    36,    36,     0,\n       1,    36,    36,     4,     5,     6,     7,     8,     9,    10,\n      11,    36,    39,    14,    15,    16,    17,    18,    19,    20,\n      21,    22,    23,    24,    36,    36,    27,    36,     7,     1,\n       6,    79,    82,     5,     6,    36,     8,     9,    10,    11,\n      12,    43,    14,    15,    16,    17,    18,    19,    20,    -1,\n      -1,    -1,   124,     1,    -1,    27,     4,     5,     6,     7,\n       8,     9,    10,    11,    36,    -1,    14,    15,    16,    -1,\n      -1,     5,     6,    -1,     8,     9,    10,    11,    -1,    27,\n      14,    15,   163,    -1,   165,   166,   167,   168,    36,    -1,\n      -1,    -1,    -1,   174,    -1,   176,    -1,    -1,    -1,    -1,\n      -1,    -1,    36,    -1,    -1,   186\n};\n\n  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing\n     symbol of state STATE-NUM.  */\nstatic const yytype_uint8 yystos[] =\n{\n       0,     3,    36,    42,    43,    44,    45,    87,    27,    28,\n      85,     0,    46,    46,    36,    43,    87,     1,     4,     5,\n       6,     7,     8,     9,    10,    11,    14,    15,    16,    17,\n      18,    19,    20,    21,    22,    23,    24,    27,    36,    47,\n      48,    50,    51,    52,    53,    59,    60,    62,    66,    68,\n      70,    71,    73,    75,    76,    77,    86,    36,    85,    36,\n      85,    27,    92,    36,    85,    27,    90,    90,    28,    35,\n      40,    89,    90,    91,    36,     1,     1,    54,    54,    63,\n      65,    69,    82,    74,    80,    36,    36,    36,    36,    36,\n      36,    89,    89,    37,    38,    87,    29,    30,    31,    32,\n      33,    39,    36,    36,     1,    12,    16,    18,    19,    20,\n      21,    22,    23,    25,    27,    36,    49,    55,    56,    78,\n      79,    81,    17,    18,    19,    20,    36,    49,    64,    79,\n      81,    48,    61,    86,    48,    62,    67,    73,    86,    24,\n      36,    80,    83,    48,    62,    72,    73,    86,    36,    49,\n      81,    34,    89,    89,    91,    91,    91,    91,    91,    91,\n      36,    36,    26,    85,    84,    85,    89,    90,    90,    91,\n      57,     1,    13,    36,    85,    84,    90,    14,    88,    89,\n      88,    36,    88,    88,    88,    88,    91,    27,    36,    36,\n      88,    36,    88,    89,    36,    36,    36,    36,    36,    88,\n      39,    58,    36,    36,    36,    85\n};\n\n  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */\nstatic const yytype_uint8 yyr1[] =\n{\n       0,    41,    42,    42,    43,    43,    44,    45,    46,    46,\n      46,    46,    46,    46,    46,    46,    47,    47,    47,    47,\n      47,    47,    47,    47,    47,    48,    48,    48,    48,    48,\n      48,    49,    49,    50,    51,    52,    53,    54,    54,    54,\n      54,    54,    54,    54,    55,    55,    55,    55,    55,    55,\n      56,    57,    57,    58,    58,    59,    60,    61,    62,    63,\n      63,    63,    63,    63,    63,    64,    64,    64,    64,    65,\n      65,    66,    67,    68,    69,    69,    69,    69,    70,    71,\n      72,    73,    74,    74,    74,    74,    75,    76,    77,    78,\n      79,    80,    80,    80,    80,    81,    82,    82,    82,    83,\n      84,    84,    85,    85,    86,    86,    86,    87,    87,    88,\n      88,    89,    89,    89,    89,    89,    89,    89,    89,    89,\n      89,    89,    90,    91,    91,    92,    92\n};\n\n  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */\nstatic const yytype_uint8 yyr2[] =\n{\n       0,     2,     2,     1,     2,     2,     3,     0,     0,     2,\n       2,     2,     2,     4,     4,     3,     1,     1,     1,     1,\n       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,\n       1,     3,     2,     3,     2,     3,     2,     0,     2,     2,\n       2,     2,     2,     2,     3,     4,     4,     4,     4,     5,\n       3,     0,     3,     0,     2,     3,     2,     1,     3,     0,\n       2,     2,     2,     2,     2,     4,     3,     2,     4,     0,\n       2,     3,     1,     3,     0,     2,     2,     2,     3,     3,\n       1,     3,     0,     2,     2,     2,     3,     3,     2,     2,\n       2,     0,     2,     2,     2,     4,     0,     2,     2,     2,\n       0,     2,     1,     1,     2,     2,     2,     1,     2,     0,\n       2,     1,     3,     3,     3,     3,     3,     3,     3,     2,\n       3,     3,     1,     1,     1,     0,     1\n};\n\n\n#define yyerrok         (yyerrstatus = 0)\n#define yyclearin       (yychar = YYEMPTY)\n#define YYEMPTY         (-2)\n#define YYEOF           0\n\n#define YYACCEPT        goto yyacceptlab\n#define YYABORT         goto yyabortlab\n#define YYERROR         goto yyerrorlab\n\n\n#define YYRECOVERING()  (!!yyerrstatus)\n\n#define YYBACKUP(Token, Value)                                  \\\ndo                                                              \\\n  if (yychar == YYEMPTY)                                        \\\n    {                                                           \\\n      yychar = (Token);                                         \\\n      yylval = (Value);                                         \\\n      YYPOPSTACK (yylen);                                       \\\n      yystate = *yyssp;                                         \\\n      goto yybackup;                                            \\\n    }                                                           \\\n  else                                                          \\\n    {                                                           \\\n      yyerror (YY_(\"syntax error: cannot back up\")); \\\n      YYERROR;                                                  \\\n    }                                                           \\\nwhile (0)\n\n/* Error token number */\n#define YYTERROR        1\n#define YYERRCODE       256\n\n\n\n/* Enable debugging if requested.  */\n#if YYDEBUG\n\n# ifndef YYFPRINTF\n#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */\n#  define YYFPRINTF fprintf\n# endif\n\n# define YYDPRINTF(Args)                        \\\ndo {                                            \\\n  if (yydebug)                                  \\\n    YYFPRINTF Args;                             \\\n} while (0)\n\n/* This macro is provided for backward compatibility. */\n#ifndef YY_LOCATION_PRINT\n# define YY_LOCATION_PRINT(File, Loc) ((void) 0)\n#endif\n\n\n# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \\\ndo {                                                                      \\\n  if (yydebug)                                                            \\\n    {                                                                     \\\n      YYFPRINTF (stderr, \"%s \", Title);                                   \\\n      yy_symbol_print (stderr,                                            \\\n                  Type, Value); \\\n      YYFPRINTF (stderr, \"\\n\");                                           \\\n    }                                                                     \\\n} while (0)\n\n\n/*----------------------------------------.\n| Print this symbol's value on YYOUTPUT.  |\n`----------------------------------------*/\n\nstatic void\nyy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)\n{\n  FILE *yyo = yyoutput;\n  YYUSE (yyo);\n  if (!yyvaluep)\n    return;\n# ifdef YYPRINT\n  if (yytype < YYNTOKENS)\n    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);\n# endif\n  YYUSE (yytype);\n}\n\n\n/*--------------------------------.\n| Print this symbol on YYOUTPUT.  |\n`--------------------------------*/\n\nstatic void\nyy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)\n{\n  YYFPRINTF (yyoutput, \"%s %s (\",\n             yytype < YYNTOKENS ? \"token\" : \"nterm\", yytname[yytype]);\n\n  yy_symbol_value_print (yyoutput, yytype, yyvaluep);\n  YYFPRINTF (yyoutput, \")\");\n}\n\n/*------------------------------------------------------------------.\n| yy_stack_print -- Print the state stack from its BOTTOM up to its |\n| TOP (included).                                                   |\n`------------------------------------------------------------------*/\n\nstatic void\nyy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)\n{\n  YYFPRINTF (stderr, \"Stack now\");\n  for (; yybottom <= yytop; yybottom++)\n    {\n      int yybot = *yybottom;\n      YYFPRINTF (stderr, \" %d\", yybot);\n    }\n  YYFPRINTF (stderr, \"\\n\");\n}\n\n# define YY_STACK_PRINT(Bottom, Top)                            \\\ndo {                                                            \\\n  if (yydebug)                                                  \\\n    yy_stack_print ((Bottom), (Top));                           \\\n} while (0)\n\n\n/*------------------------------------------------.\n| Report that the YYRULE is going to be reduced.  |\n`------------------------------------------------*/\n\nstatic void\nyy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)\n{\n  unsigned long int yylno = yyrline[yyrule];\n  int yynrhs = yyr2[yyrule];\n  int yyi;\n  YYFPRINTF (stderr, \"Reducing stack by rule %d (line %lu):\\n\",\n             yyrule - 1, yylno);\n  /* The symbols being reduced.  */\n  for (yyi = 0; yyi < yynrhs; yyi++)\n    {\n      YYFPRINTF (stderr, \"   $%d = \", yyi + 1);\n      yy_symbol_print (stderr,\n                       yystos[yyssp[yyi + 1 - yynrhs]],\n                       &(yyvsp[(yyi + 1) - (yynrhs)])\n                                              );\n      YYFPRINTF (stderr, \"\\n\");\n    }\n}\n\n# define YY_REDUCE_PRINT(Rule)          \\\ndo {                                    \\\n  if (yydebug)                          \\\n    yy_reduce_print (yyssp, yyvsp, Rule); \\\n} while (0)\n\n/* Nonzero means print parse trace.  It is left uninitialized so that\n   multiple parsers can coexist.  */\nint yydebug;\n#else /* !YYDEBUG */\n# define YYDPRINTF(Args)\n# define YY_SYMBOL_PRINT(Title, Type, Value, Location)\n# define YY_STACK_PRINT(Bottom, Top)\n# define YY_REDUCE_PRINT(Rule)\n#endif /* !YYDEBUG */\n\n\n/* YYINITDEPTH -- initial size of the parser's stacks.  */\n#ifndef YYINITDEPTH\n# define YYINITDEPTH 200\n#endif\n\n/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only\n   if the built-in stack extension method is used).\n\n   Do not make this value too large; the results are undefined if\n   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)\n   evaluated with infinite-precision integer arithmetic.  */\n\n#ifndef YYMAXDEPTH\n# define YYMAXDEPTH 10000\n#endif\n\n\n#if YYERROR_VERBOSE\n\n# ifndef yystrlen\n#  if defined __GLIBC__ && defined _STRING_H\n#   define yystrlen strlen\n#  else\n/* Return the length of YYSTR.  */\nstatic YYSIZE_T\nyystrlen (const char *yystr)\n{\n  YYSIZE_T yylen;\n  for (yylen = 0; yystr[yylen]; yylen++)\n    continue;\n  return yylen;\n}\n#  endif\n# endif\n\n# ifndef yystpcpy\n#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE\n#   define yystpcpy stpcpy\n#  else\n/* Copy YYSRC to YYDEST, returning the address of the terminating '\\0' in\n   YYDEST.  */\nstatic char *\nyystpcpy (char *yydest, const char *yysrc)\n{\n  char *yyd = yydest;\n  const char *yys = yysrc;\n\n  while ((*yyd++ = *yys++) != '\\0')\n    continue;\n\n  return yyd - 1;\n}\n#  endif\n# endif\n\n# ifndef yytnamerr\n/* Copy to YYRES the contents of YYSTR after stripping away unnecessary\n   quotes and backslashes, so that it's suitable for yyerror.  The\n   heuristic is that double-quoting is unnecessary unless the string\n   contains an apostrophe, a comma, or backslash (other than\n   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is\n   null, do not copy; instead, return the length of what the result\n   would have been.  */\nstatic YYSIZE_T\nyytnamerr (char *yyres, const char *yystr)\n{\n  if (*yystr == '\"')\n    {\n      YYSIZE_T yyn = 0;\n      char const *yyp = yystr;\n\n      for (;;)\n        switch (*++yyp)\n          {\n          case '\\'':\n          case ',':\n            goto do_not_strip_quotes;\n\n          case '\\\\':\n            if (*++yyp != '\\\\')\n              goto do_not_strip_quotes;\n            /* Fall through.  */\n          default:\n            if (yyres)\n              yyres[yyn] = *yyp;\n            yyn++;\n            break;\n\n          case '\"':\n            if (yyres)\n              yyres[yyn] = '\\0';\n            return yyn;\n          }\n    do_not_strip_quotes: ;\n    }\n\n  if (! yyres)\n    return yystrlen (yystr);\n\n  return yystpcpy (yyres, yystr) - yyres;\n}\n# endif\n\n/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message\n   about the unexpected token YYTOKEN for the state stack whose top is\n   YYSSP.\n\n   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is\n   not large enough to hold the message.  In that case, also set\n   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the\n   required number of bytes is too large to store.  */\nstatic int\nyysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,\n                yytype_int16 *yyssp, int yytoken)\n{\n  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);\n  YYSIZE_T yysize = yysize0;\n  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };\n  /* Internationalized format string. */\n  const char *yyformat = YY_NULLPTR;\n  /* Arguments of yyformat. */\n  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];\n  /* Number of reported tokens (one for the \"unexpected\", one per\n     \"expected\"). */\n  int yycount = 0;\n\n  /* There are many possibilities here to consider:\n     - If this state is a consistent state with a default action, then\n       the only way this function was invoked is if the default action\n       is an error action.  In that case, don't check for expected\n       tokens because there are none.\n     - The only way there can be no lookahead present (in yychar) is if\n       this state is a consistent state with a default action.  Thus,\n       detecting the absence of a lookahead is sufficient to determine\n       that there is no unexpected or expected token to report.  In that\n       case, just report a simple \"syntax error\".\n     - Don't assume there isn't a lookahead just because this state is a\n       consistent state with a default action.  There might have been a\n       previous inconsistent state, consistent state with a non-default\n       action, or user semantic action that manipulated yychar.\n     - Of course, the expected token list depends on states to have\n       correct lookahead information, and it depends on the parser not\n       to perform extra reductions after fetching a lookahead from the\n       scanner and before detecting a syntax error.  Thus, state merging\n       (from LALR or IELR) and default reductions corrupt the expected\n       token list.  However, the list is correct for canonical LR with\n       one exception: it will still contain any token that will not be\n       accepted due to an error action in a later state.\n  */\n  if (yytoken != YYEMPTY)\n    {\n      int yyn = yypact[*yyssp];\n      yyarg[yycount++] = yytname[yytoken];\n      if (!yypact_value_is_default (yyn))\n        {\n          /* Start YYX at -YYN if negative to avoid negative indexes in\n             YYCHECK.  In other words, skip the first -YYN actions for\n             this state because they are default actions.  */\n          int yyxbegin = yyn < 0 ? -yyn : 0;\n          /* Stay within bounds of both yycheck and yytname.  */\n          int yychecklim = YYLAST - yyn + 1;\n          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;\n          int yyx;\n\n          for (yyx = yyxbegin; yyx < yyxend; ++yyx)\n            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR\n                && !yytable_value_is_error (yytable[yyx + yyn]))\n              {\n                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)\n                  {\n                    yycount = 1;\n                    yysize = yysize0;\n                    break;\n                  }\n                yyarg[yycount++] = yytname[yyx];\n                {\n                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);\n                  if (! (yysize <= yysize1\n                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))\n                    return 2;\n                  yysize = yysize1;\n                }\n              }\n        }\n    }\n\n  switch (yycount)\n    {\n# define YYCASE_(N, S)                      \\\n      case N:                               \\\n        yyformat = S;                       \\\n      break\n      YYCASE_(0, YY_(\"syntax error\"));\n      YYCASE_(1, YY_(\"syntax error, unexpected %s\"));\n      YYCASE_(2, YY_(\"syntax error, unexpected %s, expecting %s\"));\n      YYCASE_(3, YY_(\"syntax error, unexpected %s, expecting %s or %s\"));\n      YYCASE_(4, YY_(\"syntax error, unexpected %s, expecting %s or %s or %s\"));\n      YYCASE_(5, YY_(\"syntax error, unexpected %s, expecting %s or %s or %s or %s\"));\n# undef YYCASE_\n    }\n\n  {\n    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);\n    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))\n      return 2;\n    yysize = yysize1;\n  }\n\n  if (*yymsg_alloc < yysize)\n    {\n      *yymsg_alloc = 2 * yysize;\n      if (! (yysize <= *yymsg_alloc\n             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))\n        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;\n      return 1;\n    }\n\n  /* Avoid sprintf, as that infringes on the user's name space.\n     Don't have undefined behavior even if the translation\n     produced a string with the wrong number of \"%s\"s.  */\n  {\n    char *yyp = *yymsg;\n    int yyi = 0;\n    while ((*yyp = *yyformat) != '\\0')\n      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)\n        {\n          yyp += yytnamerr (yyp, yyarg[yyi++]);\n          yyformat += 2;\n        }\n      else\n        {\n          yyp++;\n          yyformat++;\n        }\n  }\n  return 0;\n}\n#endif /* YYERROR_VERBOSE */\n\n/*-----------------------------------------------.\n| Release the memory associated to this symbol.  |\n`-----------------------------------------------*/\n\nstatic void\nyydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)\n{\n  YYUSE (yyvaluep);\n  if (!yymsg)\n    yymsg = \"Deleting\";\n  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);\n\n  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n  switch (yytype)\n    {\n          case 60: /* choice_entry  */\n\n      {\n\tfprintf(stderr, \"%s:%d: missing end statement for this entry\\n\",\n\t\t((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno);\n\tif (current_menu == ((*yyvaluep).menu))\n\t\tmenu_end_menu();\n}\n\n        break;\n\n    case 66: /* if_entry  */\n\n      {\n\tfprintf(stderr, \"%s:%d: missing end statement for this entry\\n\",\n\t\t((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno);\n\tif (current_menu == ((*yyvaluep).menu))\n\t\tmenu_end_menu();\n}\n\n        break;\n\n    case 71: /* menu_entry  */\n\n      {\n\tfprintf(stderr, \"%s:%d: missing end statement for this entry\\n\",\n\t\t((*yyvaluep).menu)->file->name, ((*yyvaluep).menu)->lineno);\n\tif (current_menu == ((*yyvaluep).menu))\n\t\tmenu_end_menu();\n}\n\n        break;\n\n\n      default:\n        break;\n    }\n  YY_IGNORE_MAYBE_UNINITIALIZED_END\n}\n\n\n\n\n/* The lookahead symbol.  */\nint yychar;\n\n/* The semantic value of the lookahead symbol.  */\nYYSTYPE yylval;\n/* Number of syntax errors so far.  */\nint yynerrs;\n\n\n/*----------.\n| yyparse.  |\n`----------*/\n\nint\nyyparse (void)\n{\n    int yystate;\n    /* Number of tokens to shift before error messages enabled.  */\n    int yyerrstatus;\n\n    /* The stacks and their tools:\n       'yyss': related to states.\n       'yyvs': related to semantic values.\n\n       Refer to the stacks through separate pointers, to allow yyoverflow\n       to reallocate them elsewhere.  */\n\n    /* The state stack.  */\n    yytype_int16 yyssa[YYINITDEPTH];\n    yytype_int16 *yyss;\n    yytype_int16 *yyssp;\n\n    /* The semantic value stack.  */\n    YYSTYPE yyvsa[YYINITDEPTH];\n    YYSTYPE *yyvs;\n    YYSTYPE *yyvsp;\n\n    YYSIZE_T yystacksize;\n\n  int yyn;\n  int yyresult;\n  /* Lookahead token as an internal (translated) token number.  */\n  int yytoken = 0;\n  /* The variables used to return semantic value and location from the\n     action routines.  */\n  YYSTYPE yyval;\n\n#if YYERROR_VERBOSE\n  /* Buffer for error messages, and its allocated size.  */\n  char yymsgbuf[128];\n  char *yymsg = yymsgbuf;\n  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;\n#endif\n\n#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))\n\n  /* The number of symbols on the RHS of the reduced rule.\n     Keep to zero when no symbol should be popped.  */\n  int yylen = 0;\n\n  yyssp = yyss = yyssa;\n  yyvsp = yyvs = yyvsa;\n  yystacksize = YYINITDEPTH;\n\n  YYDPRINTF ((stderr, \"Starting parse\\n\"));\n\n  yystate = 0;\n  yyerrstatus = 0;\n  yynerrs = 0;\n  yychar = YYEMPTY; /* Cause a token to be read.  */\n  goto yysetstate;\n\n/*------------------------------------------------------------.\n| yynewstate -- Push a new state, which is found in yystate.  |\n`------------------------------------------------------------*/\n yynewstate:\n  /* In all cases, when you get here, the value and location stacks\n     have just been pushed.  So pushing a state here evens the stacks.  */\n  yyssp++;\n\n yysetstate:\n  *yyssp = yystate;\n\n  if (yyss + yystacksize - 1 <= yyssp)\n    {\n      /* Get the current used size of the three stacks, in elements.  */\n      YYSIZE_T yysize = yyssp - yyss + 1;\n\n#ifdef yyoverflow\n      {\n        /* Give user a chance to reallocate the stack.  Use copies of\n           these so that the &'s don't force the real ones into\n           memory.  */\n        YYSTYPE *yyvs1 = yyvs;\n        yytype_int16 *yyss1 = yyss;\n\n        /* Each stack pointer address is followed by the size of the\n           data in use in that stack, in bytes.  This used to be a\n           conditional around just the two extra args, but that might\n           be undefined if yyoverflow is a macro.  */\n        yyoverflow (YY_(\"memory exhausted\"),\n                    &yyss1, yysize * sizeof (*yyssp),\n                    &yyvs1, yysize * sizeof (*yyvsp),\n                    &yystacksize);\n\n        yyss = yyss1;\n        yyvs = yyvs1;\n      }\n#else /* no yyoverflow */\n# ifndef YYSTACK_RELOCATE\n      goto yyexhaustedlab;\n# else\n      /* Extend the stack our own way.  */\n      if (YYMAXDEPTH <= yystacksize)\n        goto yyexhaustedlab;\n      yystacksize *= 2;\n      if (YYMAXDEPTH < yystacksize)\n        yystacksize = YYMAXDEPTH;\n\n      {\n        yytype_int16 *yyss1 = yyss;\n        union yyalloc *yyptr =\n          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));\n        if (! yyptr)\n          goto yyexhaustedlab;\n        YYSTACK_RELOCATE (yyss_alloc, yyss);\n        YYSTACK_RELOCATE (yyvs_alloc, yyvs);\n#  undef YYSTACK_RELOCATE\n        if (yyss1 != yyssa)\n          YYSTACK_FREE (yyss1);\n      }\n# endif\n#endif /* no yyoverflow */\n\n      yyssp = yyss + yysize - 1;\n      yyvsp = yyvs + yysize - 1;\n\n      YYDPRINTF ((stderr, \"Stack size increased to %lu\\n\",\n                  (unsigned long int) yystacksize));\n\n      if (yyss + yystacksize - 1 <= yyssp)\n        YYABORT;\n    }\n\n  YYDPRINTF ((stderr, \"Entering state %d\\n\", yystate));\n\n  if (yystate == YYFINAL)\n    YYACCEPT;\n\n  goto yybackup;\n\n/*-----------.\n| yybackup.  |\n`-----------*/\nyybackup:\n\n  /* Do appropriate processing given the current state.  Read a\n     lookahead token if we need one and don't already have one.  */\n\n  /* First try to decide what to do without reference to lookahead token.  */\n  yyn = yypact[yystate];\n  if (yypact_value_is_default (yyn))\n    goto yydefault;\n\n  /* Not known => get a lookahead token if don't already have one.  */\n\n  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */\n  if (yychar == YYEMPTY)\n    {\n      YYDPRINTF ((stderr, \"Reading a token: \"));\n      yychar = yylex ();\n    }\n\n  if (yychar <= YYEOF)\n    {\n      yychar = yytoken = YYEOF;\n      YYDPRINTF ((stderr, \"Now at end of input.\\n\"));\n    }\n  else\n    {\n      yytoken = YYTRANSLATE (yychar);\n      YY_SYMBOL_PRINT (\"Next token is\", yytoken, &yylval, &yylloc);\n    }\n\n  /* If the proper action on seeing token YYTOKEN is to reduce or to\n     detect an error, take that action.  */\n  yyn += yytoken;\n  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)\n    goto yydefault;\n  yyn = yytable[yyn];\n  if (yyn <= 0)\n    {\n      if (yytable_value_is_error (yyn))\n        goto yyerrlab;\n      yyn = -yyn;\n      goto yyreduce;\n    }\n\n  /* Count tokens shifted since error; after three, turn off error\n     status.  */\n  if (yyerrstatus)\n    yyerrstatus--;\n\n  /* Shift the lookahead token.  */\n  YY_SYMBOL_PRINT (\"Shifting\", yytoken, &yylval, &yylloc);\n\n  /* Discard the shifted token.  */\n  yychar = YYEMPTY;\n\n  yystate = yyn;\n  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n  *++yyvsp = yylval;\n  YY_IGNORE_MAYBE_UNINITIALIZED_END\n\n  goto yynewstate;\n\n\n/*-----------------------------------------------------------.\n| yydefault -- do the default action for the current state.  |\n`-----------------------------------------------------------*/\nyydefault:\n  yyn = yydefact[yystate];\n  if (yyn == 0)\n    goto yyerrlab;\n  goto yyreduce;\n\n\n/*-----------------------------.\n| yyreduce -- Do a reduction.  |\n`-----------------------------*/\nyyreduce:\n  /* yyn is the number of a rule to reduce with.  */\n  yylen = yyr2[yyn];\n\n  /* If YYLEN is nonzero, implement the default value of the action:\n     '$$ = $1'.\n\n     Otherwise, the following line sets YYVAL to garbage.\n     This behavior is undocumented and Bison\n     users should not rely upon it.  Assigning to YYVAL\n     unconditionally makes the parser a bit smaller, and it avoids a\n     GCC warning that YYVAL may be used uninitialized.  */\n  yyval = yyvsp[1-yylen];\n\n\n  YY_REDUCE_PRINT (yyn);\n  switch (yyn)\n    {\n        case 6:\n\n    {\n\tmenu_add_prompt(P_MENU, (yyvsp[-1].string), NULL);\n}\n\n    break;\n\n  case 7:\n\n    {\n\t/*\n\t * Hack: Keep the main menu title on the heap so we can safely free it\n\t * later regardless of whether it comes from the 'prompt' in\n\t * mainmenu_stmt or here\n\t */\n\tmenu_add_prompt(P_MENU, xstrdup(\"Buildroot Configuration\"), NULL);\n}\n\n    break;\n\n  case 12:\n\n    { zconf_error(\"unexpected end statement\"); }\n\n    break;\n\n  case 13:\n\n    { zconf_error(\"unknown statement \\\"%s\\\"\", (yyvsp[-2].string)); }\n\n    break;\n\n  case 14:\n\n    {\n\tzconf_error(\"unexpected option \\\"%s\\\"\", (yyvsp[-2].id)->name);\n}\n\n    break;\n\n  case 15:\n\n    { zconf_error(\"invalid statement\"); }\n\n    break;\n\n  case 31:\n\n    { zconf_error(\"unknown option \\\"%s\\\"\", (yyvsp[-2].string)); }\n\n    break;\n\n  case 32:\n\n    { zconf_error(\"invalid option\"); }\n\n    break;\n\n  case 33:\n\n    {\n\t(yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL;\n\tmenu_add_entry((yyvsp[-1].symbol));\n\tprintd(DEBUG_PARSE, \"%s:%d:config %s\\n\", zconf_curname(), zconf_lineno(), (yyvsp[-1].symbol)->name);\n}\n\n    break;\n\n  case 34:\n\n    {\n\tprintd(DEBUG_PARSE, \"%s:%d:endconfig\\n\", zconf_curname(), zconf_lineno());\n}\n\n    break;\n\n  case 35:\n\n    {\n\t(yyvsp[-1].symbol)->flags |= SYMBOL_OPTIONAL;\n\tmenu_add_entry((yyvsp[-1].symbol));\n\tprintd(DEBUG_PARSE, \"%s:%d:menuconfig %s\\n\", zconf_curname(), zconf_lineno(), (yyvsp[-1].symbol)->name);\n}\n\n    break;\n\n  case 36:\n\n    {\n\tif (current_entry->prompt)\n\t\tcurrent_entry->prompt->type = P_MENU;\n\telse\n\t\tzconfprint(\"warning: menuconfig statement without prompt\");\n\tprintd(DEBUG_PARSE, \"%s:%d:endconfig\\n\", zconf_curname(), zconf_lineno());\n}\n\n    break;\n\n  case 44:\n\n    {\n\tmenu_set_type((yyvsp[-2].id)->stype);\n\tprintd(DEBUG_PARSE, \"%s:%d:type(%u)\\n\",\n\t\tzconf_curname(), zconf_lineno(),\n\t\t(yyvsp[-2].id)->stype);\n}\n\n    break;\n\n  case 45:\n\n    {\n\tmenu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr));\n\tprintd(DEBUG_PARSE, \"%s:%d:prompt\\n\", zconf_curname(), zconf_lineno());\n}\n\n    break;\n\n  case 46:\n\n    {\n\tmenu_add_expr(P_DEFAULT, (yyvsp[-2].expr), (yyvsp[-1].expr));\n\tif ((yyvsp[-3].id)->stype != S_UNKNOWN)\n\t\tmenu_set_type((yyvsp[-3].id)->stype);\n\tprintd(DEBUG_PARSE, \"%s:%d:default(%u)\\n\",\n\t\tzconf_curname(), zconf_lineno(),\n\t\t(yyvsp[-3].id)->stype);\n}\n\n    break;\n\n  case 47:\n\n    {\n\tmenu_add_symbol(P_SELECT, (yyvsp[-2].symbol), (yyvsp[-1].expr));\n\tprintd(DEBUG_PARSE, \"%s:%d:select\\n\", zconf_curname(), zconf_lineno());\n}\n\n    break;\n\n  case 48:\n\n    {\n\tmenu_add_symbol(P_IMPLY, (yyvsp[-2].symbol), (yyvsp[-1].expr));\n\tprintd(DEBUG_PARSE, \"%s:%d:imply\\n\", zconf_curname(), zconf_lineno());\n}\n\n    break;\n\n  case 49:\n\n    {\n\tmenu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[-3].symbol), (yyvsp[-2].symbol)), (yyvsp[-1].expr));\n\tprintd(DEBUG_PARSE, \"%s:%d:range\\n\", zconf_curname(), zconf_lineno());\n}\n\n    break;\n\n  case 52:\n\n    {\n\tconst struct kconf_id *id = kconf_id_lookup((yyvsp[-1].string), strlen((yyvsp[-1].string)));\n\tif (id && id->flags & TF_OPTION) {\n\t\tmenu_add_option(id->token, (yyvsp[0].string));\n\t\tfree((yyvsp[0].string));\n\t}\n\telse\n\t\tzconfprint(\"warning: ignoring unknown option %s\", (yyvsp[-1].string));\n\tfree((yyvsp[-1].string));\n}\n\n    break;\n\n  case 53:\n\n    { (yyval.string) = NULL; }\n\n    break;\n\n  case 54:\n\n    { (yyval.string) = (yyvsp[0].string); }\n\n    break;\n\n  case 55:\n\n    {\n\tstruct symbol *sym = sym_lookup((yyvsp[-1].string), SYMBOL_CHOICE);\n\tsym->flags |= SYMBOL_AUTO;\n\tmenu_add_entry(sym);\n\tmenu_add_expr(P_CHOICE, NULL, NULL);\n\tfree((yyvsp[-1].string));\n\tprintd(DEBUG_PARSE, \"%s:%d:choice\\n\", zconf_curname(), zconf_lineno());\n}\n\n    break;\n\n  case 56:\n\n    {\n\t(yyval.menu) = menu_add_menu();\n}\n\n    break;\n\n  case 57:\n\n    {\n\tif (zconf_endtoken((yyvsp[0].id), T_CHOICE, T_ENDCHOICE)) {\n\t\tmenu_end_menu();\n\t\tprintd(DEBUG_PARSE, \"%s:%d:endchoice\\n\", zconf_curname(), zconf_lineno());\n\t}\n}\n\n    break;\n\n  case 65:\n\n    {\n\tmenu_add_prompt(P_PROMPT, (yyvsp[-2].string), (yyvsp[-1].expr));\n\tprintd(DEBUG_PARSE, \"%s:%d:prompt\\n\", zconf_curname(), zconf_lineno());\n}\n\n    break;\n\n  case 66:\n\n    {\n\tif ((yyvsp[-2].id)->stype == S_BOOLEAN || (yyvsp[-2].id)->stype == S_TRISTATE) {\n\t\tmenu_set_type((yyvsp[-2].id)->stype);\n\t\tprintd(DEBUG_PARSE, \"%s:%d:type(%u)\\n\",\n\t\t\tzconf_curname(), zconf_lineno(),\n\t\t\t(yyvsp[-2].id)->stype);\n\t} else\n\t\tYYERROR;\n}\n\n    break;\n\n  case 67:\n\n    {\n\tcurrent_entry->sym->flags |= SYMBOL_OPTIONAL;\n\tprintd(DEBUG_PARSE, \"%s:%d:optional\\n\", zconf_curname(), zconf_lineno());\n}\n\n    break;\n\n  case 68:\n\n    {\n\tif ((yyvsp[-3].id)->stype == S_UNKNOWN) {\n\t\tmenu_add_symbol(P_DEFAULT, (yyvsp[-2].symbol), (yyvsp[-1].expr));\n\t\tprintd(DEBUG_PARSE, \"%s:%d:default\\n\",\n\t\t\tzconf_curname(), zconf_lineno());\n\t} else\n\t\tYYERROR;\n}\n\n    break;\n\n  case 71:\n\n    {\n\tprintd(DEBUG_PARSE, \"%s:%d:if\\n\", zconf_curname(), zconf_lineno());\n\tmenu_add_entry(NULL);\n\tmenu_add_dep((yyvsp[-1].expr));\n\t(yyval.menu) = menu_add_menu();\n}\n\n    break;\n\n  case 72:\n\n    {\n\tif (zconf_endtoken((yyvsp[0].id), T_IF, T_ENDIF)) {\n\t\tmenu_end_menu();\n\t\tprintd(DEBUG_PARSE, \"%s:%d:endif\\n\", zconf_curname(), zconf_lineno());\n\t}\n}\n\n    break;\n\n  case 78:\n\n    {\n\tmenu_add_entry(NULL);\n\tmenu_add_prompt(P_MENU, (yyvsp[-1].string), NULL);\n\tprintd(DEBUG_PARSE, \"%s:%d:menu\\n\", zconf_curname(), zconf_lineno());\n}\n\n    break;\n\n  case 79:\n\n    {\n\t(yyval.menu) = menu_add_menu();\n}\n\n    break;\n\n  case 80:\n\n    {\n\tif (zconf_endtoken((yyvsp[0].id), T_MENU, T_ENDMENU)) {\n\t\tmenu_end_menu();\n\t\tprintd(DEBUG_PARSE, \"%s:%d:endmenu\\n\", zconf_curname(), zconf_lineno());\n\t}\n}\n\n    break;\n\n  case 86:\n\n    {\n\tprintd(DEBUG_PARSE, \"%s:%d:source %s\\n\", zconf_curname(), zconf_lineno(), (yyvsp[-1].string));\n\tzconf_nextfile((yyvsp[-1].string));\n\tfree((yyvsp[-1].string));\n}\n\n    break;\n\n  case 87:\n\n    {\n\tmenu_add_entry(NULL);\n\tmenu_add_prompt(P_COMMENT, (yyvsp[-1].string), NULL);\n\tprintd(DEBUG_PARSE, \"%s:%d:comment\\n\", zconf_curname(), zconf_lineno());\n}\n\n    break;\n\n  case 89:\n\n    {\n\tprintd(DEBUG_PARSE, \"%s:%d:help\\n\", zconf_curname(), zconf_lineno());\n\tzconf_starthelp();\n}\n\n    break;\n\n  case 90:\n\n    {\n\tif (current_entry->help) {\n\t\tfree(current_entry->help);\n\t\tzconfprint(\"warning: '%s' defined with more than one help text -- only the last one will be used\",\n\t\t\t   current_entry->sym->name ?: \"<choice>\");\n\t}\n\n\t/* Is the help text empty or all whitespace? */\n\tif ((yyvsp[0].string)[strspn((yyvsp[0].string), \" \\f\\n\\r\\t\\v\")] == '\\0')\n\t\tzconfprint(\"warning: '%s' defined with blank help text\",\n\t\t\t   current_entry->sym->name ?: \"<choice>\");\n\n\tcurrent_entry->help = (yyvsp[0].string);\n}\n\n    break;\n\n  case 95:\n\n    {\n\tmenu_add_dep((yyvsp[-1].expr));\n\tprintd(DEBUG_PARSE, \"%s:%d:depends on\\n\", zconf_curname(), zconf_lineno());\n}\n\n    break;\n\n  case 99:\n\n    {\n\tmenu_add_visibility((yyvsp[0].expr));\n}\n\n    break;\n\n  case 101:\n\n    {\n\tmenu_add_prompt(P_PROMPT, (yyvsp[-1].string), (yyvsp[0].expr));\n}\n\n    break;\n\n  case 104:\n\n    { (yyval.id) = (yyvsp[-1].id); }\n\n    break;\n\n  case 105:\n\n    { (yyval.id) = (yyvsp[-1].id); }\n\n    break;\n\n  case 106:\n\n    { (yyval.id) = (yyvsp[-1].id); }\n\n    break;\n\n  case 109:\n\n    { (yyval.expr) = NULL; }\n\n    break;\n\n  case 110:\n\n    { (yyval.expr) = (yyvsp[0].expr); }\n\n    break;\n\n  case 111:\n\n    { (yyval.expr) = expr_alloc_symbol((yyvsp[0].symbol)); }\n\n    break;\n\n  case 112:\n\n    { (yyval.expr) = expr_alloc_comp(E_LTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); }\n\n    break;\n\n  case 113:\n\n    { (yyval.expr) = expr_alloc_comp(E_LEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); }\n\n    break;\n\n  case 114:\n\n    { (yyval.expr) = expr_alloc_comp(E_GTH, (yyvsp[-2].symbol), (yyvsp[0].symbol)); }\n\n    break;\n\n  case 115:\n\n    { (yyval.expr) = expr_alloc_comp(E_GEQ, (yyvsp[-2].symbol), (yyvsp[0].symbol)); }\n\n    break;\n\n  case 116:\n\n    { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); }\n\n    break;\n\n  case 117:\n\n    { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[-2].symbol), (yyvsp[0].symbol)); }\n\n    break;\n\n  case 118:\n\n    { (yyval.expr) = (yyvsp[-1].expr); }\n\n    break;\n\n  case 119:\n\n    { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[0].expr)); }\n\n    break;\n\n  case 120:\n\n    { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[-2].expr), (yyvsp[0].expr)); }\n\n    break;\n\n  case 121:\n\n    { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); }\n\n    break;\n\n  case 122:\n\n    { (yyval.symbol) = sym_lookup((yyvsp[0].string), 0); free((yyvsp[0].string)); }\n\n    break;\n\n  case 124:\n\n    { (yyval.symbol) = sym_lookup((yyvsp[0].string), SYMBOL_CONST); free((yyvsp[0].string)); }\n\n    break;\n\n  case 125:\n\n    { (yyval.string) = NULL; }\n\n    break;\n\n\n\n      default: break;\n    }\n  /* User semantic actions sometimes alter yychar, and that requires\n     that yytoken be updated with the new translation.  We take the\n     approach of translating immediately before every use of yytoken.\n     One alternative is translating here after every semantic action,\n     but that translation would be missed if the semantic action invokes\n     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or\n     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an\n     incorrect destructor might then be invoked immediately.  In the\n     case of YYERROR or YYBACKUP, subsequent parser actions might lead\n     to an incorrect destructor call or verbose syntax error message\n     before the lookahead is translated.  */\n  YY_SYMBOL_PRINT (\"-> $$ =\", yyr1[yyn], &yyval, &yyloc);\n\n  YYPOPSTACK (yylen);\n  yylen = 0;\n  YY_STACK_PRINT (yyss, yyssp);\n\n  *++yyvsp = yyval;\n\n  /* Now 'shift' the result of the reduction.  Determine what state\n     that goes to, based on the state we popped back to and the rule\n     number reduced by.  */\n\n  yyn = yyr1[yyn];\n\n  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;\n  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)\n    yystate = yytable[yystate];\n  else\n    yystate = yydefgoto[yyn - YYNTOKENS];\n\n  goto yynewstate;\n\n\n/*--------------------------------------.\n| yyerrlab -- here on detecting error.  |\n`--------------------------------------*/\nyyerrlab:\n  /* Make sure we have latest lookahead translation.  See comments at\n     user semantic actions for why this is necessary.  */\n  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);\n\n  /* If not already recovering from an error, report this error.  */\n  if (!yyerrstatus)\n    {\n      ++yynerrs;\n#if ! YYERROR_VERBOSE\n      yyerror (YY_(\"syntax error\"));\n#else\n# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \\\n                                        yyssp, yytoken)\n      {\n        char const *yymsgp = YY_(\"syntax error\");\n        int yysyntax_error_status;\n        yysyntax_error_status = YYSYNTAX_ERROR;\n        if (yysyntax_error_status == 0)\n          yymsgp = yymsg;\n        else if (yysyntax_error_status == 1)\n          {\n            if (yymsg != yymsgbuf)\n              YYSTACK_FREE (yymsg);\n            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);\n            if (!yymsg)\n              {\n                yymsg = yymsgbuf;\n                yymsg_alloc = sizeof yymsgbuf;\n                yysyntax_error_status = 2;\n              }\n            else\n              {\n                yysyntax_error_status = YYSYNTAX_ERROR;\n                yymsgp = yymsg;\n              }\n          }\n        yyerror (yymsgp);\n        if (yysyntax_error_status == 2)\n          goto yyexhaustedlab;\n      }\n# undef YYSYNTAX_ERROR\n#endif\n    }\n\n\n\n  if (yyerrstatus == 3)\n    {\n      /* If just tried and failed to reuse lookahead token after an\n         error, discard it.  */\n\n      if (yychar <= YYEOF)\n        {\n          /* Return failure if at end of input.  */\n          if (yychar == YYEOF)\n            YYABORT;\n        }\n      else\n        {\n          yydestruct (\"Error: discarding\",\n                      yytoken, &yylval);\n          yychar = YYEMPTY;\n        }\n    }\n\n  /* Else will try to reuse lookahead token after shifting the error\n     token.  */\n  goto yyerrlab1;\n\n\n/*---------------------------------------------------.\n| yyerrorlab -- error raised explicitly by YYERROR.  |\n`---------------------------------------------------*/\nyyerrorlab:\n\n  /* Pacify compilers like GCC when the user code never invokes\n     YYERROR and the label yyerrorlab therefore never appears in user\n     code.  */\n  if (/*CONSTCOND*/ 0)\n     goto yyerrorlab;\n\n  /* Do not reclaim the symbols of the rule whose action triggered\n     this YYERROR.  */\n  YYPOPSTACK (yylen);\n  yylen = 0;\n  YY_STACK_PRINT (yyss, yyssp);\n  yystate = *yyssp;\n  goto yyerrlab1;\n\n\n/*-------------------------------------------------------------.\n| yyerrlab1 -- common code for both syntax error and YYERROR.  |\n`-------------------------------------------------------------*/\nyyerrlab1:\n  yyerrstatus = 3;      /* Each real token shifted decrements this.  */\n\n  for (;;)\n    {\n      yyn = yypact[yystate];\n      if (!yypact_value_is_default (yyn))\n        {\n          yyn += YYTERROR;\n          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)\n            {\n              yyn = yytable[yyn];\n              if (0 < yyn)\n                break;\n            }\n        }\n\n      /* Pop the current state because it cannot handle the error token.  */\n      if (yyssp == yyss)\n        YYABORT;\n\n\n      yydestruct (\"Error: popping\",\n                  yystos[yystate], yyvsp);\n      YYPOPSTACK (1);\n      yystate = *yyssp;\n      YY_STACK_PRINT (yyss, yyssp);\n    }\n\n  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n  *++yyvsp = yylval;\n  YY_IGNORE_MAYBE_UNINITIALIZED_END\n\n\n  /* Shift the error token.  */\n  YY_SYMBOL_PRINT (\"Shifting\", yystos[yyn], yyvsp, yylsp);\n\n  yystate = yyn;\n  goto yynewstate;\n\n\n/*-------------------------------------.\n| yyacceptlab -- YYACCEPT comes here.  |\n`-------------------------------------*/\nyyacceptlab:\n  yyresult = 0;\n  goto yyreturn;\n\n/*-----------------------------------.\n| yyabortlab -- YYABORT comes here.  |\n`-----------------------------------*/\nyyabortlab:\n  yyresult = 1;\n  goto yyreturn;\n\n#if !defined yyoverflow || YYERROR_VERBOSE\n/*-------------------------------------------------.\n| yyexhaustedlab -- memory exhaustion comes here.  |\n`-------------------------------------------------*/\nyyexhaustedlab:\n  yyerror (YY_(\"memory exhausted\"));\n  yyresult = 2;\n  /* Fall through.  */\n#endif\n\nyyreturn:\n  if (yychar != YYEMPTY)\n    {\n      /* Make sure we have latest lookahead translation.  See comments at\n         user semantic actions for why this is necessary.  */\n      yytoken = YYTRANSLATE (yychar);\n      yydestruct (\"Cleanup: discarding lookahead\",\n                  yytoken, &yylval);\n    }\n  /* Do not reclaim the symbols of the rule whose action triggered\n     this YYABORT or YYACCEPT.  */\n  YYPOPSTACK (yylen);\n  YY_STACK_PRINT (yyss, yyssp);\n  while (yyssp != yyss)\n    {\n      yydestruct (\"Cleanup: popping\",\n                  yystos[*yyssp], yyvsp);\n      YYPOPSTACK (1);\n    }\n#ifndef yyoverflow\n  if (yyss != yyssa)\n    YYSTACK_FREE (yyss);\n#endif\n#if YYERROR_VERBOSE\n  if (yymsg != yymsgbuf)\n    YYSTACK_FREE (yymsg);\n#endif\n  return yyresult;\n}\n\n\n\nvoid conf_parse(const char *name)\n{\n\tconst char *tmp;\n\tstruct symbol *sym;\n\tint i;\n\n\tzconf_initscan(name);\n\n\tsym_init();\n\t_menu_init();\n\n\tif (getenv(\"ZCONF_DEBUG\"))\n\t\tyydebug = 1;\n\tyyparse();\n\tif (yynerrs)\n\t\texit(1);\n\tif (!modules_sym)\n\t\tmodules_sym = sym_find( \"n\" );\n\n\ttmp = rootmenu.prompt->text;\n\trootmenu.prompt->text = _(rootmenu.prompt->text);\n\trootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text);\n\tfree((char*)tmp);\n\n\tmenu_finalize(&rootmenu);\n\tfor_all_symbols(i, sym) {\n\t\tif (sym_check_deps(sym))\n\t\t\tyynerrs++;\n\t}\n\tif (yynerrs)\n\t\texit(1);\n\tsym_set_change_count(1);\n}\n\nstatic const char *zconf_tokenname(int token)\n{\n\tswitch (token) {\n\tcase T_MENU:\t\treturn \"menu\";\n\tcase T_ENDMENU:\t\treturn \"endmenu\";\n\tcase T_CHOICE:\t\treturn \"choice\";\n\tcase T_ENDCHOICE:\treturn \"endchoice\";\n\tcase T_IF:\t\treturn \"if\";\n\tcase T_ENDIF:\t\treturn \"endif\";\n\tcase T_DEPENDS:\t\treturn \"depends\";\n\tcase T_VISIBLE:\t\treturn \"visible\";\n\t}\n\treturn \"<token>\";\n}\n\nstatic bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken)\n{\n\tif (id->token != endtoken) {\n\t\tzconf_error(\"unexpected '%s' within %s block\",\n\t\t\tid->name, zconf_tokenname(starttoken));\n\t\tyynerrs++;\n\t\treturn false;\n\t}\n\tif (current_menu->file != current_file) {\n\t\tzconf_error(\"'%s' in different file than '%s'\",\n\t\t\tid->name, zconf_tokenname(starttoken));\n\t\tfprintf(stderr, \"%s:%d: location of the '%s'\\n\",\n\t\t\tcurrent_menu->file->name, current_menu->lineno,\n\t\t\tzconf_tokenname(starttoken));\n\t\tyynerrs++;\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nstatic void zconfprint(const char *err, ...)\n{\n\tva_list ap;\n\n\tfprintf(stderr, \"%s:%d: \", zconf_curname(), zconf_lineno());\n\tva_start(ap, err);\n\tvfprintf(stderr, err, ap);\n\tva_end(ap);\n\tfprintf(stderr, \"\\n\");\n}\n\nstatic void zconf_error(const char *err, ...)\n{\n\tva_list ap;\n\n\tyynerrs++;\n\tfprintf(stderr, \"%s:%d: \", zconf_curname(), zconf_lineno());\n\tva_start(ap, err);\n\tvfprintf(stderr, err, ap);\n\tva_end(ap);\n\tfprintf(stderr, \"\\n\");\n}\n\nstatic void yyerror(const char *err)\n{\n\tfprintf(stderr, \"%s:%d: %s\\n\", zconf_curname(), zconf_lineno() + 1, err);\n}\n\nstatic void print_quoted_string(FILE *out, const char *str)\n{\n\tconst char *p;\n\tint len;\n\n\tputc('\"', out);\n\twhile ((p = strchr(str, '\"'))) {\n\t\tlen = p - str;\n\t\tif (len)\n\t\t\tfprintf(out, \"%.*s\", len, str);\n\t\tfputs(\"\\\\\\\"\", out);\n\t\tstr = p + 1;\n\t}\n\tfputs(str, out);\n\tputc('\"', out);\n}\n\nstatic void print_symbol(FILE *out, struct menu *menu)\n{\n\tstruct symbol *sym = menu->sym;\n\tstruct property *prop;\n\n\tif (sym_is_choice(sym))\n\t\tfprintf(out, \"\\nchoice\\n\");\n\telse\n\t\tfprintf(out, \"\\nconfig %s\\n\", sym->name);\n\tswitch (sym->type) {\n\tcase S_BOOLEAN:\n\t\tfputs(\"  bool\\n\", out);\n\t\tbreak;\n\tcase S_TRISTATE:\n\t\tfputs(\"  tristate\\n\", out);\n\t\tbreak;\n\tcase S_STRING:\n\t\tfputs(\"  string\\n\", out);\n\t\tbreak;\n\tcase S_INT:\n\t\tfputs(\"  integer\\n\", out);\n\t\tbreak;\n\tcase S_HEX:\n\t\tfputs(\"  hex\\n\", out);\n\t\tbreak;\n\tdefault:\n\t\tfputs(\"  ???\\n\", out);\n\t\tbreak;\n\t}\n\tfor (prop = sym->prop; prop; prop = prop->next) {\n\t\tif (prop->menu != menu)\n\t\t\tcontinue;\n\t\tswitch (prop->type) {\n\t\tcase P_PROMPT:\n\t\t\tfputs(\"  prompt \", out);\n\t\t\tprint_quoted_string(out, prop->text);\n\t\t\tif (!expr_is_yes(prop->visible.expr)) {\n\t\t\t\tfputs(\" if \", out);\n\t\t\t\texpr_fprint(prop->visible.expr, out);\n\t\t\t}\n\t\t\tfputc('\\n', out);\n\t\t\tbreak;\n\t\tcase P_DEFAULT:\n\t\t\tfputs( \"  default \", out);\n\t\t\texpr_fprint(prop->expr, out);\n\t\t\tif (!expr_is_yes(prop->visible.expr)) {\n\t\t\t\tfputs(\" if \", out);\n\t\t\t\texpr_fprint(prop->visible.expr, out);\n\t\t\t}\n\t\t\tfputc('\\n', out);\n\t\t\tbreak;\n\t\tcase P_CHOICE:\n\t\t\tfputs(\"  #choice value\\n\", out);\n\t\t\tbreak;\n\t\tcase P_SELECT:\n\t\t\tfputs( \"  select \", out);\n\t\t\texpr_fprint(prop->expr, out);\n\t\t\tfputc('\\n', out);\n\t\t\tbreak;\n\t\tcase P_IMPLY:\n\t\t\tfputs( \"  imply \", out);\n\t\t\texpr_fprint(prop->expr, out);\n\t\t\tfputc('\\n', out);\n\t\t\tbreak;\n\t\tcase P_RANGE:\n\t\t\tfputs( \"  range \", out);\n\t\t\texpr_fprint(prop->expr, out);\n\t\t\tfputc('\\n', out);\n\t\t\tbreak;\n\t\tcase P_MENU:\n\t\t\tfputs( \"  menu \", out);\n\t\t\tprint_quoted_string(out, prop->text);\n\t\t\tfputc('\\n', out);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tfprintf(out, \"  unknown prop %d!\\n\", prop->type);\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (menu->help) {\n\t\tint len = strlen(menu->help);\n\t\twhile (menu->help[--len] == '\\n')\n\t\t\tmenu->help[len] = 0;\n\t\tfprintf(out, \"  help\\n%s\\n\", menu->help);\n\t}\n}\n\nvoid zconfdump(FILE *out)\n{\n\tstruct property *prop;\n\tstruct symbol *sym;\n\tstruct menu *menu;\n\n\tmenu = rootmenu.list;\n\twhile (menu) {\n\t\tif ((sym = menu->sym))\n\t\t\tprint_symbol(out, menu);\n\t\telse if ((prop = menu->prompt)) {\n\t\t\tswitch (prop->type) {\n\t\t\tcase P_COMMENT:\n\t\t\t\tfputs(\"\\ncomment \", out);\n\t\t\t\tprint_quoted_string(out, prop->text);\n\t\t\t\tfputs(\"\\n\", out);\n\t\t\t\tbreak;\n\t\t\tcase P_MENU:\n\t\t\t\tfputs(\"\\nmenu \", out);\n\t\t\t\tprint_quoted_string(out, prop->text);\n\t\t\t\tfputs(\"\\n\", out);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t;\n\t\t\t}\n\t\t\tif (!expr_is_yes(prop->visible.expr)) {\n\t\t\t\tfputs(\"  depends \", out);\n\t\t\t\texpr_fprint(prop->visible.expr, out);\n\t\t\t\tfputc('\\n', out);\n\t\t\t}\n\t\t}\n\n\t\tif (menu->list)\n\t\t\tmenu = menu->list;\n\t\telse if (menu->next)\n\t\t\tmenu = menu->next;\n\t\telse while ((menu = menu->parent)) {\n\t\t\tif (menu->prompt && menu->prompt->type == P_MENU)\n\t\t\t\tfputs(\"\\nendmenu\\n\", out);\n\t\t\tif (menu->next) {\n\t\t\t\tmenu = menu->next;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n#include \"zconf.lex.c\"\n#include \"util.c\"\n#include \"confdata.c\"\n#include \"expr.c\"\n#include \"symbol.c\"\n#include \"menu.c\"\n"
  },
  {
    "path": "support/kconfig/zconf.y",
    "content": "%{\n/*\n * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>\n * Released under the terms of the GNU GPL v2.0.\n */\n\n#include <ctype.h>\n#include <stdarg.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdbool.h>\n\n#include \"lkc.h\"\n\n#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)\n\n#define PRINTD\t\t0x0001\n#define DEBUG_PARSE\t0x0002\n\nint cdebug = PRINTD;\n\nint yylex(void);\nstatic void yyerror(const char *err);\nstatic void zconfprint(const char *err, ...);\nstatic void zconf_error(const char *err, ...);\nstatic bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken);\n\nstruct symbol *symbol_hash[SYMBOL_HASHSIZE];\n\nstatic struct menu *current_menu, *current_entry;\n\n%}\n%expect 32\n\n%union\n{\n\tchar *string;\n\tstruct file *file;\n\tstruct symbol *symbol;\n\tstruct expr *expr;\n\tstruct menu *menu;\n\tconst struct kconf_id *id;\n}\n\n%token <id>T_MAINMENU\n%token <id>T_MENU\n%token <id>T_ENDMENU\n%token <id>T_SOURCE\n%token <id>T_CHOICE\n%token <id>T_ENDCHOICE\n%token <id>T_COMMENT\n%token <id>T_CONFIG\n%token <id>T_MENUCONFIG\n%token <id>T_HELP\n%token <string> T_HELPTEXT\n%token <id>T_IF\n%token <id>T_ENDIF\n%token <id>T_DEPENDS\n%token <id>T_OPTIONAL\n%token <id>T_PROMPT\n%token <id>T_TYPE\n%token <id>T_DEFAULT\n%token <id>T_SELECT\n%token <id>T_IMPLY\n%token <id>T_RANGE\n%token <id>T_VISIBLE\n%token <id>T_OPTION\n%token <id>T_ON\n%token <string> T_WORD\n%token <string> T_WORD_QUOTE\n%token T_UNEQUAL\n%token T_LESS\n%token T_LESS_EQUAL\n%token T_GREATER\n%token T_GREATER_EQUAL\n%token T_CLOSE_PAREN\n%token T_OPEN_PAREN\n%token T_EOL\n\n%left T_OR\n%left T_AND\n%left T_EQUAL T_UNEQUAL\n%left T_LESS T_LESS_EQUAL T_GREATER T_GREATER_EQUAL\n%nonassoc T_NOT\n\n%type <string> prompt\n%type <symbol> nonconst_symbol\n%type <symbol> symbol\n%type <expr> expr\n%type <expr> if_expr\n%type <id> end\n%type <id> option_name\n%type <menu> if_entry menu_entry choice_entry\n%type <string> symbol_option_arg word_opt\n\n%destructor {\n\tfprintf(stderr, \"%s:%d: missing end statement for this entry\\n\",\n\t\t$$->file->name, $$->lineno);\n\tif (current_menu == $$)\n\t\tmenu_end_menu();\n} if_entry menu_entry choice_entry\n\n%{\n/* Include kconf_id.c here so it can see the token constants. */\n#include \"kconf_id.c\"\n%}\n\n%%\ninput: nl start | start;\n\nstart: mainmenu_stmt stmt_list | no_mainmenu_stmt stmt_list;\n\n/* mainmenu entry */\n\nmainmenu_stmt: T_MAINMENU prompt nl\n{\n\tmenu_add_prompt(P_MENU, $2, NULL);\n};\n\n/* Default main menu, if there's no mainmenu entry */\n\nno_mainmenu_stmt: /* empty */\n{\n\t/*\n\t * Hack: Keep the main menu title on the heap so we can safely free it\n\t * later regardless of whether it comes from the 'prompt' in\n\t * mainmenu_stmt or here\n\t */\n\tmenu_add_prompt(P_MENU, xstrdup(\"Buildroot Configuration\"), NULL);\n};\n\n\nstmt_list:\n\t  /* empty */\n\t| stmt_list common_stmt\n\t| stmt_list choice_stmt\n\t| stmt_list menu_stmt\n\t| stmt_list end\t\t\t{ zconf_error(\"unexpected end statement\"); }\n\t| stmt_list T_WORD error T_EOL\t{ zconf_error(\"unknown statement \\\"%s\\\"\", $2); }\n\t| stmt_list option_name error T_EOL\n{\n\tzconf_error(\"unexpected option \\\"%s\\\"\", $2->name);\n}\n\t| stmt_list error T_EOL\t\t{ zconf_error(\"invalid statement\"); }\n;\n\noption_name:\n\tT_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_IMPLY | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE\n;\n\ncommon_stmt:\n\t  T_EOL\n\t| if_stmt\n\t| comment_stmt\n\t| config_stmt\n\t| menuconfig_stmt\n\t| source_stmt\n;\n\noption_error:\n\t  T_WORD error T_EOL\t\t{ zconf_error(\"unknown option \\\"%s\\\"\", $1); }\n\t| error T_EOL\t\t\t{ zconf_error(\"invalid option\"); }\n;\n\n\n/* config/menuconfig entry */\n\nconfig_entry_start: T_CONFIG nonconst_symbol T_EOL\n{\n\t$2->flags |= SYMBOL_OPTIONAL;\n\tmenu_add_entry($2);\n\tprintd(DEBUG_PARSE, \"%s:%d:config %s\\n\", zconf_curname(), zconf_lineno(), $2->name);\n};\n\nconfig_stmt: config_entry_start config_option_list\n{\n\tprintd(DEBUG_PARSE, \"%s:%d:endconfig\\n\", zconf_curname(), zconf_lineno());\n};\n\nmenuconfig_entry_start: T_MENUCONFIG nonconst_symbol T_EOL\n{\n\t$2->flags |= SYMBOL_OPTIONAL;\n\tmenu_add_entry($2);\n\tprintd(DEBUG_PARSE, \"%s:%d:menuconfig %s\\n\", zconf_curname(), zconf_lineno(), $2->name);\n};\n\nmenuconfig_stmt: menuconfig_entry_start config_option_list\n{\n\tif (current_entry->prompt)\n\t\tcurrent_entry->prompt->type = P_MENU;\n\telse\n\t\tzconfprint(\"warning: menuconfig statement without prompt\");\n\tprintd(DEBUG_PARSE, \"%s:%d:endconfig\\n\", zconf_curname(), zconf_lineno());\n};\n\nconfig_option_list:\n\t  /* empty */\n\t| config_option_list config_option\n\t| config_option_list symbol_option\n\t| config_option_list depends\n\t| config_option_list help\n\t| config_option_list option_error\n\t| config_option_list T_EOL\n;\n\nconfig_option: T_TYPE prompt_stmt_opt T_EOL\n{\n\tmenu_set_type($1->stype);\n\tprintd(DEBUG_PARSE, \"%s:%d:type(%u)\\n\",\n\t\tzconf_curname(), zconf_lineno(),\n\t\t$1->stype);\n};\n\nconfig_option: T_PROMPT prompt if_expr T_EOL\n{\n\tmenu_add_prompt(P_PROMPT, $2, $3);\n\tprintd(DEBUG_PARSE, \"%s:%d:prompt\\n\", zconf_curname(), zconf_lineno());\n};\n\nconfig_option: T_DEFAULT expr if_expr T_EOL\n{\n\tmenu_add_expr(P_DEFAULT, $2, $3);\n\tif ($1->stype != S_UNKNOWN)\n\t\tmenu_set_type($1->stype);\n\tprintd(DEBUG_PARSE, \"%s:%d:default(%u)\\n\",\n\t\tzconf_curname(), zconf_lineno(),\n\t\t$1->stype);\n};\n\nconfig_option: T_SELECT nonconst_symbol if_expr T_EOL\n{\n\tmenu_add_symbol(P_SELECT, $2, $3);\n\tprintd(DEBUG_PARSE, \"%s:%d:select\\n\", zconf_curname(), zconf_lineno());\n};\n\nconfig_option: T_IMPLY nonconst_symbol if_expr T_EOL\n{\n\tmenu_add_symbol(P_IMPLY, $2, $3);\n\tprintd(DEBUG_PARSE, \"%s:%d:imply\\n\", zconf_curname(), zconf_lineno());\n};\n\nconfig_option: T_RANGE symbol symbol if_expr T_EOL\n{\n\tmenu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4);\n\tprintd(DEBUG_PARSE, \"%s:%d:range\\n\", zconf_curname(), zconf_lineno());\n};\n\nsymbol_option: T_OPTION symbol_option_list T_EOL\n;\n\nsymbol_option_list:\n\t  /* empty */\n\t| symbol_option_list T_WORD symbol_option_arg\n{\n\tconst struct kconf_id *id = kconf_id_lookup($2, strlen($2));\n\tif (id && id->flags & TF_OPTION) {\n\t\tmenu_add_option(id->token, $3);\n\t\tfree($3);\n\t}\n\telse\n\t\tzconfprint(\"warning: ignoring unknown option %s\", $2);\n\tfree($2);\n};\n\nsymbol_option_arg:\n\t  /* empty */\t\t{ $$ = NULL; }\n\t| T_EQUAL prompt\t{ $$ = $2; }\n;\n\n/* choice entry */\n\nchoice: T_CHOICE word_opt T_EOL\n{\n\tstruct symbol *sym = sym_lookup($2, SYMBOL_CHOICE);\n\tsym->flags |= SYMBOL_AUTO;\n\tmenu_add_entry(sym);\n\tmenu_add_expr(P_CHOICE, NULL, NULL);\n\tfree($2);\n\tprintd(DEBUG_PARSE, \"%s:%d:choice\\n\", zconf_curname(), zconf_lineno());\n};\n\nchoice_entry: choice choice_option_list\n{\n\t$$ = menu_add_menu();\n};\n\nchoice_end: end\n{\n\tif (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) {\n\t\tmenu_end_menu();\n\t\tprintd(DEBUG_PARSE, \"%s:%d:endchoice\\n\", zconf_curname(), zconf_lineno());\n\t}\n};\n\nchoice_stmt: choice_entry choice_block choice_end\n;\n\nchoice_option_list:\n\t  /* empty */\n\t| choice_option_list choice_option\n\t| choice_option_list depends\n\t| choice_option_list help\n\t| choice_option_list T_EOL\n\t| choice_option_list option_error\n;\n\nchoice_option: T_PROMPT prompt if_expr T_EOL\n{\n\tmenu_add_prompt(P_PROMPT, $2, $3);\n\tprintd(DEBUG_PARSE, \"%s:%d:prompt\\n\", zconf_curname(), zconf_lineno());\n};\n\nchoice_option: T_TYPE prompt_stmt_opt T_EOL\n{\n\tif ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) {\n\t\tmenu_set_type($1->stype);\n\t\tprintd(DEBUG_PARSE, \"%s:%d:type(%u)\\n\",\n\t\t\tzconf_curname(), zconf_lineno(),\n\t\t\t$1->stype);\n\t} else\n\t\tYYERROR;\n};\n\nchoice_option: T_OPTIONAL T_EOL\n{\n\tcurrent_entry->sym->flags |= SYMBOL_OPTIONAL;\n\tprintd(DEBUG_PARSE, \"%s:%d:optional\\n\", zconf_curname(), zconf_lineno());\n};\n\nchoice_option: T_DEFAULT nonconst_symbol if_expr T_EOL\n{\n\tif ($1->stype == S_UNKNOWN) {\n\t\tmenu_add_symbol(P_DEFAULT, $2, $3);\n\t\tprintd(DEBUG_PARSE, \"%s:%d:default\\n\",\n\t\t\tzconf_curname(), zconf_lineno());\n\t} else\n\t\tYYERROR;\n};\n\nchoice_block:\n\t  /* empty */\n\t| choice_block common_stmt\n;\n\n/* if entry */\n\nif_entry: T_IF expr nl\n{\n\tprintd(DEBUG_PARSE, \"%s:%d:if\\n\", zconf_curname(), zconf_lineno());\n\tmenu_add_entry(NULL);\n\tmenu_add_dep($2);\n\t$$ = menu_add_menu();\n};\n\nif_end: end\n{\n\tif (zconf_endtoken($1, T_IF, T_ENDIF)) {\n\t\tmenu_end_menu();\n\t\tprintd(DEBUG_PARSE, \"%s:%d:endif\\n\", zconf_curname(), zconf_lineno());\n\t}\n};\n\nif_stmt: if_entry if_block if_end\n;\n\nif_block:\n\t  /* empty */\n\t| if_block common_stmt\n\t| if_block menu_stmt\n\t| if_block choice_stmt\n;\n\n/* menu entry */\n\nmenu: T_MENU prompt T_EOL\n{\n\tmenu_add_entry(NULL);\n\tmenu_add_prompt(P_MENU, $2, NULL);\n\tprintd(DEBUG_PARSE, \"%s:%d:menu\\n\", zconf_curname(), zconf_lineno());\n};\n\nmenu_entry: menu visibility_list depends_list\n{\n\t$$ = menu_add_menu();\n};\n\nmenu_end: end\n{\n\tif (zconf_endtoken($1, T_MENU, T_ENDMENU)) {\n\t\tmenu_end_menu();\n\t\tprintd(DEBUG_PARSE, \"%s:%d:endmenu\\n\", zconf_curname(), zconf_lineno());\n\t}\n};\n\nmenu_stmt: menu_entry menu_block menu_end\n;\n\nmenu_block:\n\t  /* empty */\n\t| menu_block common_stmt\n\t| menu_block menu_stmt\n\t| menu_block choice_stmt\n;\n\nsource_stmt: T_SOURCE prompt T_EOL\n{\n\tprintd(DEBUG_PARSE, \"%s:%d:source %s\\n\", zconf_curname(), zconf_lineno(), $2);\n\tzconf_nextfile($2);\n\tfree($2);\n};\n\n/* comment entry */\n\ncomment: T_COMMENT prompt T_EOL\n{\n\tmenu_add_entry(NULL);\n\tmenu_add_prompt(P_COMMENT, $2, NULL);\n\tprintd(DEBUG_PARSE, \"%s:%d:comment\\n\", zconf_curname(), zconf_lineno());\n};\n\ncomment_stmt: comment depends_list\n;\n\n/* help option */\n\nhelp_start: T_HELP T_EOL\n{\n\tprintd(DEBUG_PARSE, \"%s:%d:help\\n\", zconf_curname(), zconf_lineno());\n\tzconf_starthelp();\n};\n\nhelp: help_start T_HELPTEXT\n{\n\tif (current_entry->help) {\n\t\tfree(current_entry->help);\n\t\tzconfprint(\"warning: '%s' defined with more than one help text -- only the last one will be used\",\n\t\t\t   current_entry->sym->name ?: \"<choice>\");\n\t}\n\n\t/* Is the help text empty or all whitespace? */\n\tif ($2[strspn($2, \" \\f\\n\\r\\t\\v\")] == '\\0')\n\t\tzconfprint(\"warning: '%s' defined with blank help text\",\n\t\t\t   current_entry->sym->name ?: \"<choice>\");\n\n\tcurrent_entry->help = $2;\n};\n\n/* depends option */\n\ndepends_list:\n\t  /* empty */\n\t| depends_list depends\n\t| depends_list T_EOL\n\t| depends_list option_error\n;\n\ndepends: T_DEPENDS T_ON expr T_EOL\n{\n\tmenu_add_dep($3);\n\tprintd(DEBUG_PARSE, \"%s:%d:depends on\\n\", zconf_curname(), zconf_lineno());\n};\n\n/* visibility option */\n\nvisibility_list:\n\t  /* empty */\n\t| visibility_list visible\n\t| visibility_list T_EOL\n;\n\nvisible: T_VISIBLE if_expr\n{\n\tmenu_add_visibility($2);\n};\n\n/* prompt statement */\n\nprompt_stmt_opt:\n\t  /* empty */\n\t| prompt if_expr\n{\n\tmenu_add_prompt(P_PROMPT, $1, $2);\n};\n\nprompt:\t  T_WORD\n\t| T_WORD_QUOTE\n;\n\nend:\t  T_ENDMENU T_EOL\t{ $$ = $1; }\n\t| T_ENDCHOICE T_EOL\t{ $$ = $1; }\n\t| T_ENDIF T_EOL\t\t{ $$ = $1; }\n;\n\nnl:\n\t  T_EOL\n\t| nl T_EOL\n;\n\nif_expr:  /* empty */\t\t\t{ $$ = NULL; }\n\t| T_IF expr\t\t\t{ $$ = $2; }\n;\n\nexpr:\t  symbol\t\t\t\t{ $$ = expr_alloc_symbol($1); }\n\t| symbol T_LESS symbol\t\t\t{ $$ = expr_alloc_comp(E_LTH, $1, $3); }\n\t| symbol T_LESS_EQUAL symbol\t\t{ $$ = expr_alloc_comp(E_LEQ, $1, $3); }\n\t| symbol T_GREATER symbol\t\t{ $$ = expr_alloc_comp(E_GTH, $1, $3); }\n\t| symbol T_GREATER_EQUAL symbol\t\t{ $$ = expr_alloc_comp(E_GEQ, $1, $3); }\n\t| symbol T_EQUAL symbol\t\t\t{ $$ = expr_alloc_comp(E_EQUAL, $1, $3); }\n\t| symbol T_UNEQUAL symbol\t\t{ $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); }\n\t| T_OPEN_PAREN expr T_CLOSE_PAREN\t{ $$ = $2; }\n\t| T_NOT expr\t\t\t\t{ $$ = expr_alloc_one(E_NOT, $2); }\n\t| expr T_OR expr\t\t\t{ $$ = expr_alloc_two(E_OR, $1, $3); }\n\t| expr T_AND expr\t\t\t{ $$ = expr_alloc_two(E_AND, $1, $3); }\n;\n\n/* For symbol definitions, selects, etc., where quotes are not accepted */\nnonconst_symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); };\n\nsymbol:\t  nonconst_symbol\n\t| T_WORD_QUOTE\t{ $$ = sym_lookup($1, SYMBOL_CONST); free($1); }\n;\n\nword_opt: /* empty */\t\t\t{ $$ = NULL; }\n\t| T_WORD\n\n%%\n\nvoid conf_parse(const char *name)\n{\n\tconst char *tmp;\n\tstruct symbol *sym;\n\tint i;\n\n\tzconf_initscan(name);\n\n\tsym_init();\n\t_menu_init();\n\n\tif (getenv(\"ZCONF_DEBUG\"))\n\t\tyydebug = 1;\n\tyyparse();\n\tif (yynerrs)\n\t\texit(1);\n\tif (!modules_sym)\n\t\tmodules_sym = sym_find( \"n\" );\n\n\ttmp = rootmenu.prompt->text;\n\trootmenu.prompt->text = _(rootmenu.prompt->text);\n\trootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text);\n\tfree((char*)tmp);\n\n\tmenu_finalize(&rootmenu);\n\tfor_all_symbols(i, sym) {\n\t\tif (sym_check_deps(sym))\n\t\t\tyynerrs++;\n\t}\n\tif (yynerrs)\n\t\texit(1);\n\tsym_set_change_count(1);\n}\n\nstatic const char *zconf_tokenname(int token)\n{\n\tswitch (token) {\n\tcase T_MENU:\t\treturn \"menu\";\n\tcase T_ENDMENU:\t\treturn \"endmenu\";\n\tcase T_CHOICE:\t\treturn \"choice\";\n\tcase T_ENDCHOICE:\treturn \"endchoice\";\n\tcase T_IF:\t\treturn \"if\";\n\tcase T_ENDIF:\t\treturn \"endif\";\n\tcase T_DEPENDS:\t\treturn \"depends\";\n\tcase T_VISIBLE:\t\treturn \"visible\";\n\t}\n\treturn \"<token>\";\n}\n\nstatic bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken)\n{\n\tif (id->token != endtoken) {\n\t\tzconf_error(\"unexpected '%s' within %s block\",\n\t\t\tid->name, zconf_tokenname(starttoken));\n\t\tyynerrs++;\n\t\treturn false;\n\t}\n\tif (current_menu->file != current_file) {\n\t\tzconf_error(\"'%s' in different file than '%s'\",\n\t\t\tid->name, zconf_tokenname(starttoken));\n\t\tfprintf(stderr, \"%s:%d: location of the '%s'\\n\",\n\t\t\tcurrent_menu->file->name, current_menu->lineno,\n\t\t\tzconf_tokenname(starttoken));\n\t\tyynerrs++;\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nstatic void zconfprint(const char *err, ...)\n{\n\tva_list ap;\n\n\tfprintf(stderr, \"%s:%d: \", zconf_curname(), zconf_lineno());\n\tva_start(ap, err);\n\tvfprintf(stderr, err, ap);\n\tva_end(ap);\n\tfprintf(stderr, \"\\n\");\n}\n\nstatic void zconf_error(const char *err, ...)\n{\n\tva_list ap;\n\n\tyynerrs++;\n\tfprintf(stderr, \"%s:%d: \", zconf_curname(), zconf_lineno());\n\tva_start(ap, err);\n\tvfprintf(stderr, err, ap);\n\tva_end(ap);\n\tfprintf(stderr, \"\\n\");\n}\n\nstatic void yyerror(const char *err)\n{\n\tfprintf(stderr, \"%s:%d: %s\\n\", zconf_curname(), zconf_lineno() + 1, err);\n}\n\nstatic void print_quoted_string(FILE *out, const char *str)\n{\n\tconst char *p;\n\tint len;\n\n\tputc('\"', out);\n\twhile ((p = strchr(str, '\"'))) {\n\t\tlen = p - str;\n\t\tif (len)\n\t\t\tfprintf(out, \"%.*s\", len, str);\n\t\tfputs(\"\\\\\\\"\", out);\n\t\tstr = p + 1;\n\t}\n\tfputs(str, out);\n\tputc('\"', out);\n}\n\nstatic void print_symbol(FILE *out, struct menu *menu)\n{\n\tstruct symbol *sym = menu->sym;\n\tstruct property *prop;\n\n\tif (sym_is_choice(sym))\n\t\tfprintf(out, \"\\nchoice\\n\");\n\telse\n\t\tfprintf(out, \"\\nconfig %s\\n\", sym->name);\n\tswitch (sym->type) {\n\tcase S_BOOLEAN:\n\t\tfputs(\"  bool\\n\", out);\n\t\tbreak;\n\tcase S_TRISTATE:\n\t\tfputs(\"  tristate\\n\", out);\n\t\tbreak;\n\tcase S_STRING:\n\t\tfputs(\"  string\\n\", out);\n\t\tbreak;\n\tcase S_INT:\n\t\tfputs(\"  integer\\n\", out);\n\t\tbreak;\n\tcase S_HEX:\n\t\tfputs(\"  hex\\n\", out);\n\t\tbreak;\n\tdefault:\n\t\tfputs(\"  ???\\n\", out);\n\t\tbreak;\n\t}\n\tfor (prop = sym->prop; prop; prop = prop->next) {\n\t\tif (prop->menu != menu)\n\t\t\tcontinue;\n\t\tswitch (prop->type) {\n\t\tcase P_PROMPT:\n\t\t\tfputs(\"  prompt \", out);\n\t\t\tprint_quoted_string(out, prop->text);\n\t\t\tif (!expr_is_yes(prop->visible.expr)) {\n\t\t\t\tfputs(\" if \", out);\n\t\t\t\texpr_fprint(prop->visible.expr, out);\n\t\t\t}\n\t\t\tfputc('\\n', out);\n\t\t\tbreak;\n\t\tcase P_DEFAULT:\n\t\t\tfputs( \"  default \", out);\n\t\t\texpr_fprint(prop->expr, out);\n\t\t\tif (!expr_is_yes(prop->visible.expr)) {\n\t\t\t\tfputs(\" if \", out);\n\t\t\t\texpr_fprint(prop->visible.expr, out);\n\t\t\t}\n\t\t\tfputc('\\n', out);\n\t\t\tbreak;\n\t\tcase P_CHOICE:\n\t\t\tfputs(\"  #choice value\\n\", out);\n\t\t\tbreak;\n\t\tcase P_SELECT:\n\t\t\tfputs( \"  select \", out);\n\t\t\texpr_fprint(prop->expr, out);\n\t\t\tfputc('\\n', out);\n\t\t\tbreak;\n\t\tcase P_IMPLY:\n\t\t\tfputs( \"  imply \", out);\n\t\t\texpr_fprint(prop->expr, out);\n\t\t\tfputc('\\n', out);\n\t\t\tbreak;\n\t\tcase P_RANGE:\n\t\t\tfputs( \"  range \", out);\n\t\t\texpr_fprint(prop->expr, out);\n\t\t\tfputc('\\n', out);\n\t\t\tbreak;\n\t\tcase P_MENU:\n\t\t\tfputs( \"  menu \", out);\n\t\t\tprint_quoted_string(out, prop->text);\n\t\t\tfputc('\\n', out);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tfprintf(out, \"  unknown prop %d!\\n\", prop->type);\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (menu->help) {\n\t\tint len = strlen(menu->help);\n\t\twhile (menu->help[--len] == '\\n')\n\t\t\tmenu->help[len] = 0;\n\t\tfprintf(out, \"  help\\n%s\\n\", menu->help);\n\t}\n}\n\nvoid zconfdump(FILE *out)\n{\n\tstruct property *prop;\n\tstruct symbol *sym;\n\tstruct menu *menu;\n\n\tmenu = rootmenu.list;\n\twhile (menu) {\n\t\tif ((sym = menu->sym))\n\t\t\tprint_symbol(out, menu);\n\t\telse if ((prop = menu->prompt)) {\n\t\t\tswitch (prop->type) {\n\t\t\tcase P_COMMENT:\n\t\t\t\tfputs(\"\\ncomment \", out);\n\t\t\t\tprint_quoted_string(out, prop->text);\n\t\t\t\tfputs(\"\\n\", out);\n\t\t\t\tbreak;\n\t\t\tcase P_MENU:\n\t\t\t\tfputs(\"\\nmenu \", out);\n\t\t\t\tprint_quoted_string(out, prop->text);\n\t\t\t\tfputs(\"\\n\", out);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t;\n\t\t\t}\n\t\t\tif (!expr_is_yes(prop->visible.expr)) {\n\t\t\t\tfputs(\"  depends \", out);\n\t\t\t\texpr_fprint(prop->visible.expr, out);\n\t\t\t\tfputc('\\n', out);\n\t\t\t}\n\t\t}\n\n\t\tif (menu->list)\n\t\t\tmenu = menu->list;\n\t\telse if (menu->next)\n\t\t\tmenu = menu->next;\n\t\telse while ((menu = menu->parent)) {\n\t\t\tif (menu->prompt && menu->prompt->type == P_MENU)\n\t\t\t\tfputs(\"\\nendmenu\\n\", out);\n\t\t\tif (menu->next) {\n\t\t\t\tmenu = menu->next;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n#include \"zconf.lex.c\"\n#include \"util.c\"\n#include \"confdata.c\"\n#include \"expr.c\"\n#include \"symbol.c\"\n#include \"menu.c\"\n"
  },
  {
    "path": "support/legal-info/README.header",
    "content": "Most of the packages that were used by Buildroot to produce the image files,\nincluding Buildroot itself, have open-source licenses. It is your\nresponsibility to comply to the requirements of these licenses.\nTo make this easier for you, Buildroot collected in this directory some\nmaterial you may need to get it done.\n\nThis material is composed of the following items.\n * The scripts used to control compilation of the packages and the generation\n   of image files, i.e. the Buildroot sources.\n   Note: this has not been saved due to technical limitations, you must\n   collect it manually.\n * The Buildroot configuration file; this has been saved in buildroot.config.\n * The toolchain (cross-compiler and related tools) used to generate all the\n   compiled programs.\n   Note: this may have not been saved due to technical limitations, you may\n   need to collect it manually.\n * The original source code for target packages in the 'sources/'\n   subdirectory and for host packages in the 'host-sources/' subdirectory\n   (except for the non-redistributable packages, which have not been\n   saved). Patches that were applied are also saved, along with a file\n   named 'series' that lists the patches in the order they were\n   applied. Patches are under the same license as the files that they\n   modify in the original package.\n   Note: Buildroot applies additional patches to Libtool scripts of\n   autotools-based packages. These patches can be found under\n   support/libtool in the Buildroot source and, due to technical\n   limitations, are not saved with the package sources. You may need\n   to collect them manually.\n * Two manifest files listing the configured packages and related\n   information: 'manifest.csv' for target packages and 'host-manifest.csv'\n   for host packages.\n * The license text of the packages, in the 'licenses/' and\n   'host-licenses/' subdirectories for target and host packages\n   respectively.\n\n"
  },
  {
    "path": "support/legal-info/README.warnings-header",
    "content": "Due to technical limitations or lack of license definition in the package\nmakefile, some of the material listed above could not been saved, as the\nfollowing list details.\n\n"
  },
  {
    "path": "support/legal-info/buildroot.hash",
    "content": "# Locally computed\nsha256 9755181e27175cb3510b4da8629caa406fb355a19aa8e7d55f06bf8ab33323c4  COPYING\n"
  },
  {
    "path": "support/libtool/buildroot-libtool-v1.5.patch",
    "content": "--- a/ltmain.sh\t2014-07-31 10:43:01.634568799 -0300\n+++ b/ltmain.sh\t2014-07-31 10:44:14.032018999 -0300\n@@ -226,8 +226,9 @@\n \t# line option must be used.\n \tif test -z \"$tagname\"; then\n \t  $echo \"$modename: unable to infer tagged configuration\"\n-\t  $echo \"$modename: specify a tag with \\`--tag'\" 1>&2\n-\t  exit $EXIT_FAILURE\n+\t  $echo \"$modename: defaulting to \\`CC'\"\n+\t  $echo \"$modename: if this is not correct, specify a tag with \\`--tag'\"\n+#\t  exit $EXIT_FAILURE\n #        else\n #          $echo \"$modename: using $tagname tagged configuration\"\n \tfi\n@@ -247,6 +248,11 @@\n   arg=\"$1\"\n   shift\n \n+  # Make -static behave as -all-static\n+  case $arg in\n+  -static) arg=\"-all-static\" ;;\n+  esac\n+\n   case $arg in\n   -*=*) optarg=`$echo \"X$arg\" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;\n   *) optarg= ;;\n@@ -1238,7 +1244,8 @@\n       prevarg=\"$arg\"\n \n       case $arg in\n-      -all-static)\n+      # Make -static behave like -all-static\n+      -all-static | -static)\n \tif test -n \"$link_static_flag\"; then\n \t  compile_command=\"$compile_command $link_static_flag\"\n \t  finalize_command=\"$finalize_command $link_static_flag\"\n@@ -2146,8 +2153,14 @@\n \t    absdir=\"$abs_ladir\"\n \t    libdir=\"$abs_ladir\"\n \t  else\n-\t    dir=\"$libdir\"\n-\t    absdir=\"$libdir\"\n+            # Adding 'libdir' from the .la file to our library search paths\n+            # breaks crosscompilation horribly.  We cheat here and don't add\n+            # it, instead adding the path where we found the .la.  -CL\n+\t    dir=\"$abs_ladir\"\n+\t    absdir=\"$abs_ladir\"\n+\t    libdir=\"$abs_ladir\"\n+\t    #dir=\"$libdir\"\n+\t    #absdir=\"$libdir\"\n \t  fi\n \telse\n \t  dir=\"$ladir/$objdir\"\n@@ -2272,7 +2285,7 @@\n \t   { test \"$prefer_static_libs\" = no || test -z \"$old_library\"; }; then\n \t  if test \"$installed\" = no; then\n \t    notinst_deplibs=\"$notinst_deplibs $lib\"\n-\t    need_relink=yes\n+\t    need_relink=no\n \t  fi\n \t  # This is a shared library\n \n@@ -5169,6 +5182,10 @@\n \t    # Replace all uninstalled libtool libraries with the installed ones\n \t    newdependency_libs=\n \t    for deplib in $dependency_libs; do\n+              # Replacing uninstalled with installed can easily break crosscompilation,\n+              # since the installed path is generally the wrong architecture.  -CL\n+              newdependency_libs=\"$newdependency_libs $deplib\"\n+              continue\n \t      case $deplib in\n \t      *.la)\n \t\tname=`$echo \"X$deplib\" | $Xsed -e 's%^.*/%%'`\n@@ -5487,10 +5504,13 @@\n \t  # At present, this check doesn't affect windows .dll's that\n \t  # are installed into $libdir/../bin (currently, that works fine)\n \t  # but it's something to keep an eye on.\n-\t  if test \"$inst_prefix_dir\" = \"$destdir\"; then\n-\t    $echo \"$modename: error: cannot install \\`$file' to a directory not ending in $libdir\" 1>&2\n-\t    exit $EXIT_FAILURE\n-\t  fi\n+\t  #\n+\t  # This breaks install into our staging area.  -PB\n+\t  # \n+\t  # if test \"$inst_prefix_dir\" = \"$destdir\"; then\n+\t  #   $echo \"$modename: error: cannot install \\`$file' to a directory not ending in $libdir\" 1>&2\n+\t  #   exit $EXIT_FAILURE\n+\t  # fi\n \n \t  if test -n \"$inst_prefix_dir\"; then\n \t    # Stick the inst_prefix_dir data into the link command.\n"
  },
  {
    "path": "support/libtool/buildroot-libtool-v2.2.patch",
    "content": "--- a/ltmain.sh\t2010-06-09 15:08:53.000000000 +0200\n+++ b/ltmain.sh\t2014-07-30 22:33:41.176710372 +0200\n@@ -1214,8 +1214,8 @@\n \t# was found and let the user know that the \"--tag\" command\n \t# line option must be used.\n \tif test -z \"$tagname\"; then\n-\t  func_echo \"unable to infer tagged configuration\"\n-\t  func_fatal_error \"specify a tag with \\`--tag'\"\n+\t  func_echo \"defaulting to \\`CC'\"\n+\t  func_echo \"if this is not correct, specify a tag with \\`--tag'\"\n #\telse\n #\t  func_verbose \"using $tagname tagged configuration\"\n \tfi\n@@ -2239,8 +2239,11 @@\n \t  # At present, this check doesn't affect windows .dll's that\n \t  # are installed into $libdir/../bin (currently, that works fine)\n \t  # but it's something to keep an eye on.\n-\t  test \"$inst_prefix_dir\" = \"$destdir\" && \\\n-\t    func_fatal_error \"error: cannot install \\`$file' to a directory not ending in $libdir\"\n+\t  #\n+\t  # This breaks install into our staging area.  -PB\n+\t  #\n+\t  # test \"$inst_prefix_dir\" = \"$destdir\" && \\\n+\t  #   func_fatal_error \"error: cannot install \\`$file' to a directory not ending in $libdir\"\n \n \t  if test -n \"$inst_prefix_dir\"; then\n \t    # Stick the inst_prefix_dir data into the link command.\n@@ -4429,7 +4432,8 @@\n \t;;\n       -all-static | -static | -static-libtool-libs)\n \tcase $arg in\n-\t-all-static)\n+\t# Make -static behave like -all-static\n+\t-all-static | -static)\n \t  if test \"$build_libtool_libs\" = yes && test -z \"$link_static_flag\"; then\n \t    func_warning \"complete static linking is impossible in this configuration\"\n \t  fi\n@@ -4438,12 +4442,6 @@\n \t  fi\n \t  prefer_static_libs=yes\n \t  ;;\n-\t-static)\n-\t  if test -z \"$pic_flag\" && test -n \"$link_static_flag\"; then\n-\t    dlopen_self=$dlopen_self_static\n-\t  fi\n-\t  prefer_static_libs=built\n-\t  ;;\n \t-static-libtool-libs)\n \t  if test -z \"$pic_flag\" && test -n \"$link_static_flag\"; then\n \t    dlopen_self=$dlopen_self_static\n@@ -4726,7 +4724,8 @@\n       prevarg=\"$arg\"\n \n       case $arg in\n-      -all-static)\n+      # Make -static behave like -all-static\n+      -all-static | -static)\n \tif test -n \"$link_static_flag\"; then\n \t  # See comment for -static flag below, for more details.\n \t  func_append compile_command \" $link_static_flag\"\n@@ -4995,7 +4994,7 @@\n \tcontinue\n \t;;\n \n-      -static | -static-libtool-libs)\n+      -static-libtool-libs)\n \t# The effects of -static are defined in a previous loop.\n \t# We used to do the same as -all-static on platforms that\n \t# didn't have a PIC flag, but the assumption that the effects\n@@ -5739,8 +5738,14 @@\n \t    absdir=\"$abs_ladir\"\n \t    libdir=\"$abs_ladir\"\n \t  else\n-\t    dir=\"$libdir\"\n-\t    absdir=\"$libdir\"\n+            # Adding 'libdir' from the .la file to our library search paths\n+            # breaks crosscompilation horribly.  We cheat here and don't add\n+            # it, instead adding the path where we found the .la.  -CL\n+\t    dir=\"$abs_ladir\"\n+\t    absdir=\"$abs_ladir\"\n+\t    libdir=\"$abs_ladir\"\n+\t    #dir=\"$libdir\"\n+\t    #absdir=\"$libdir\"\n \t  fi\n \t  test \"X$hardcode_automatic\" = Xyes && avoidtemprpath=yes\n \telse\n@@ -5891,7 +5896,7 @@\n \t  *)\n \t    if test \"$installed\" = no; then\n \t      notinst_deplibs=\"$notinst_deplibs $lib\"\n-\t      need_relink=yes\n+\t      need_relink=no\n \t    fi\n \t    ;;\n \t  esac\n@@ -8373,6 +8378,10 @@\n \t    # Replace all uninstalled libtool libraries with the installed ones\n \t    newdependency_libs=\n \t    for deplib in $dependency_libs; do\n+              # Replacing uninstalled with installed can easily break crosscompilation,\n+              # since the installed path is generally the wrong architecture.  -CL\n+              newdependency_libs=\"$newdependency_libs $deplib\"\n+              continue\n \t      case $deplib in\n \t      *.la)\n \t\tfunc_basename \"$deplib\"\n"
  },
  {
    "path": "support/libtool/buildroot-libtool-v2.4.4.patch",
    "content": "Libtool fixes for cross-compilation, many past contributors/authors.\nUpdate based on libtool-2.4.4, useful for 2.4.3 as well but not 2.4.2.\n\nSigned-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>\n\n--- a/ltmain.sh\t2014-12-16 09:51:23.068441045 -0300\n+++ b/ltmain.sh\t2014-12-16 09:57:10.509430339 -0300\n@@ -2687,8 +2687,8 @@\n \t# was found and let the user know that the \"--tag\" command\n \t# line option must be used.\n \tif test -z \"$tagname\"; then\n-\t  func_echo \"unable to infer tagged configuration\"\n-\t  func_fatal_error \"specify a tag with '--tag'\"\n+\t  func_echo \"defaulting to \\`CC'\"\n+\t  func_echo \"if this is not correct, specify a tag with \\`--tag'\"\n #\telse\n #\t  func_verbose \"using $tagname tagged configuration\"\n \tfi\n@@ -4277,8 +4277,12 @@\n \t  # At present, this check doesn't affect windows .dll's that\n \t  # are installed into $libdir/../bin (currently, that works fine)\n \t  # but it's something to keep an eye on.\n-\t  test \"$inst_prefix_dir\" = \"$destdir\" && \\\n-\t    func_fatal_error \"error: cannot install '$file' to a directory not ending in $libdir\"\n+\n+\t  #\n+\t  # This breaks install into our staging area.  -PB\n+\t  #\n+\t  #test \"$inst_prefix_dir\" = \"$destdir\" && \\\n+\t  #  func_fatal_error \"error: cannot install '$file' to a directory not ending in $libdir\"\n \n \t  if test -n \"$inst_prefix_dir\"; then\n \t    # Stick the inst_prefix_dir data into the link command.\n@@ -6550,7 +6554,8 @@\n \t;;\n       -all-static | -static | -static-libtool-libs)\n \tcase $arg in\n-\t-all-static)\n+\t# Make -static behave like -all-static -GZ\n+\t-all-static | -static)\n \t  if test yes = \"$build_libtool_libs\" && test -z \"$link_static_flag\"; then\n \t    func_warning \"complete static linking is impossible in this configuration\"\n \t  fi\n@@ -6559,12 +6564,6 @@\n \t  fi\n \t  prefer_static_libs=yes\n \t  ;;\n-\t-static)\n-\t  if test -z \"$pic_flag\" && test -n \"$link_static_flag\"; then\n-\t    dlopen_self=$dlopen_self_static\n-\t  fi\n-\t  prefer_static_libs=built\n-\t  ;;\n \t-static-libtool-libs)\n \t  if test -z \"$pic_flag\" && test -n \"$link_static_flag\"; then\n \t    dlopen_self=$dlopen_self_static\n@@ -6858,7 +6857,8 @@\n       prevarg=$arg\n \n       case $arg in\n-      -all-static)\n+      # Make -static behave like -all-static -GZ\n+      -all-static | -static)\n \tif test -n \"$link_static_flag\"; then\n \t  # See comment for -static flag below, for more details.\n \t  func_append compile_command \" $link_static_flag\"\n@@ -7149,7 +7149,7 @@\n \tcontinue\n \t;;\n \n-      -static | -static-libtool-libs)\n+      -static-libtool-libs)\n \t# The effects of -static are defined in a previous loop.\n \t# We used to do the same as -all-static on platforms that\n \t# didn't have a PIC flag, but the assumption that the effects\n@@ -8112,7 +8112,7 @@\n \t  *)\n \t    if test no = \"$installed\"; then\n \t      func_append notinst_deplibs \" $lib\"\n-\t      need_relink=yes\n+\t      need_relink=no\n \t    fi\n \t    ;;\n \t  esac\n@@ -10710,6 +10710,10 @@\n \t    # Replace all uninstalled libtool libraries with the installed ones\n \t    newdependency_libs=\n \t    for deplib in $dependency_libs; do\n+\t      # Replacing uninstalled with installed can easily break crosscompilation,\n+\t      # since the installed path is generally the wrong architecture.  -CL\n+\t      newdependency_libs=\"$newdependency_libs $deplib\"\n+\t      continue\n \t      case $deplib in\n \t      *.la)\n \t\tfunc_basename \"$deplib\"\n"
  },
  {
    "path": "support/libtool/buildroot-libtool-v2.4.patch",
    "content": "--- a/ltmain.sh\t2014-07-30 22:21:24.664684143 +0200\n+++ b/ltmain.sh\t2014-07-30 22:23:02.440687625 +0200\n@@ -1417,8 +1417,8 @@\n \t# was found and let the user know that the \"--tag\" command\n \t# line option must be used.\n \tif test -z \"$tagname\"; then\n-\t  func_echo \"unable to infer tagged configuration\"\n-\t  func_fatal_error \"specify a tag with \\`--tag'\"\n+\t  func_echo \"defaulting to \\`CC'\"\n+\t  func_echo \"if this is not correct, specify a tag with \\`--tag'\"\n #\telse\n #\t  func_verbose \"using $tagname tagged configuration\"\n \tfi\n@@ -2963,8 +2963,11 @@\n \t  # At present, this check doesn't affect windows .dll's that\n \t  # are installed into $libdir/../bin (currently, that works fine)\n \t  # but it's something to keep an eye on.\n-\t  test \"$inst_prefix_dir\" = \"$destdir\" && \\\n-\t    func_fatal_error \"error: cannot install \\`$file' to a directory not ending in $libdir\"\n+\t  #\n+\t  # This breaks install into our staging area.  -PB\n+\t  #\n+\t  # test \"$inst_prefix_dir\" = \"$destdir\" && \\\n+\t  #   func_fatal_error \"error: cannot install \\`$file' to a directory not ending in $libdir\"\n \n \t  if test -n \"$inst_prefix_dir\"; then\n \t    # Stick the inst_prefix_dir data into the link command.\n@@ -5176,7 +5179,8 @@\n \t;;\n       -all-static | -static | -static-libtool-libs)\n \tcase $arg in\n-\t-all-static)\n+\t# Make -static behave like -all-static\n+\t-all-static | -static)\n \t  if test \"$build_libtool_libs\" = yes && test -z \"$link_static_flag\"; then\n \t    func_warning \"complete static linking is impossible in this configuration\"\n \t  fi\n@@ -5185,12 +5189,6 @@\n \t  fi\n \t  prefer_static_libs=yes\n \t  ;;\n-\t-static)\n-\t  if test -z \"$pic_flag\" && test -n \"$link_static_flag\"; then\n-\t    dlopen_self=$dlopen_self_static\n-\t  fi\n-\t  prefer_static_libs=built\n-\t  ;;\n \t-static-libtool-libs)\n \t  if test -z \"$pic_flag\" && test -n \"$link_static_flag\"; then\n \t    dlopen_self=$dlopen_self_static\n@@ -5473,7 +5471,8 @@\n       prevarg=\"$arg\"\n \n       case $arg in\n-      -all-static)\n+      # Make -static behave like -all-static\n+      -all-static | -static)\n \tif test -n \"$link_static_flag\"; then\n \t  # See comment for -static flag below, for more details.\n \t  func_append compile_command \" $link_static_flag\"\n@@ -5754,7 +5753,7 @@\n \tcontinue\n \t;;\n \n-      -static | -static-libtool-libs)\n+      -static-libtool-libs)\n \t# The effects of -static are defined in a previous loop.\n \t# We used to do the same as -all-static on platforms that\n \t# didn't have a PIC flag, but the assumption that the effects\n@@ -6697,7 +6696,7 @@\n \t  *)\n \t    if test \"$installed\" = no; then\n \t      func_append notinst_deplibs \" $lib\"\n-\t      need_relink=yes\n+\t      need_relink=no\n \t    fi\n \t    ;;\n \t  esac\n@@ -9275,6 +9274,10 @@\n \t    # Replace all uninstalled libtool libraries with the installed ones\n \t    newdependency_libs=\n \t    for deplib in $dependency_libs; do\n+              # Replacing uninstalled with installed can easily break crosscompilation,\n+              # since the installed path is generally the wrong architecture.  -CL\n+              newdependency_libs=\"$newdependency_libs $deplib\"\n+              continue\n \t      case $deplib in\n \t      *.la)\n \t\tfunc_basename \"$deplib\"\n"
  },
  {
    "path": "support/misc/Buildroot.cmake",
    "content": "# Impersonate a Linux system. Afterall, that's what we are...\nset(CMAKE_SYSTEM_NAME Linux)\nset(CMAKE_SYSTEM ${CMAKE_SYSTEM_NAME})\ninclude(Platform/Linux)\n\n# Override problematic settings, to avoid RPATH against host lib directories.\nset_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS FALSE)\nset_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS FALSE)\n"
  },
  {
    "path": "support/misc/Vagrantfile",
    "content": "################################################################################\n#\n# Vagrantfile\n#\n################################################################################\n\n# Buildroot version to use\nRELEASE='2021.11'\n\n### Change here for more memory/cores ###\nVM_MEMORY=2048\nVM_CORES=1\n\nVagrant.configure('2') do |config|\n\tconfig.vm.box = 'ubuntu/bionic64'\n\n\tconfig.vm.provider :vmware_fusion do |v, override|\n\t\tv.vmx['memsize'] = VM_MEMORY\n\t\tv.vmx['numvcpus'] = VM_CORES\n\tend\n\n\tconfig.vm.provider :virtualbox do |v, override|\n\t\tv.memory = VM_MEMORY\n\t\tv.cpus = VM_CORES\n\n\t\trequired_plugins = %w( vagrant-vbguest )\n\t\trequired_plugins.each do |plugin|\n\t\t  system \"vagrant plugin install #{plugin}\" unless Vagrant.has_plugin? plugin\n\t\tend\n\tend\n\n\tconfig.vm.provision 'shell' do |s|\n\t\ts.inline = 'echo Setting up machine name'\n\n\t\tconfig.vm.provider :vmware_fusion do |v, override|\n\t\t\tv.vmx['displayname'] = \"Buildroot #{RELEASE}\"\n\t\tend\n\n\t\tconfig.vm.provider :virtualbox do |v, override|\n\t\t\tv.name = \"Buildroot #{RELEASE}\"\n\t\tend\n\tend\n\n\tconfig.vm.provision 'shell', privileged: true, inline:\n\t\t\"sed -i 's|deb http://us.archive.ubuntu.com/ubuntu/|deb mirror://mirrors.ubuntu.com/mirrors.txt|g' /etc/apt/sources.list\n\t\tdpkg --add-architecture i386\n\t\tapt-get -q update\n\t\tapt-get purge -q -y snapd lxcfs lxd ubuntu-core-launcher snap-confine\n\t\tapt-get -q -y install build-essential libncurses5-dev \\\n\t\t\tgit bzr cvs mercurial subversion libc6:i386 unzip bc\n\t\tapt-get -q -y autoremove\n\t\tapt-get -q -y clean\n\t\tupdate-locale LC_ALL=C\"\n\n\tconfig.vm.provision 'shell', privileged: false, inline:\n\t\t\"echo 'Downloading and extracting buildroot #{RELEASE}'\n\t\twget -q -c http://buildroot.org/downloads/buildroot-#{RELEASE}.tar.gz\n\t\ttar axf buildroot-#{RELEASE}.tar.gz\"\n\nend\n"
  },
  {
    "path": "support/misc/gen-glibc-locales.mk",
    "content": "# Generates glibc locale data for target.\n\ninputfile = $(firstword $(subst ., ,$(1)))\ncharmap = $(or $(word 2,$(subst ., ,$(1))),UTF-8)\n\n# Packages all the generated locale data into the final archive.\n#\n# We sort the file names to produce consistent output regardless of\n# the `find` outputs order.\n$(TARGET_DIR)/usr/lib/locale/locale-archive: $(LOCALES)\n\t$(Q)rm -f $(@)\n\t$(Q)find $(TARGET_DIR)/usr/lib/locale/ -maxdepth 1 -mindepth 1 -type d -print0 \\\n\t| sort -z \\\n\t| xargs -0 \\\n\t\t$(HOST_DIR)/bin/localedef \\\n\t\t\t--prefix=$(TARGET_DIR) \\\n\t\t\t--$(ENDIAN)-endian \\\n\t\t\t--add-to-archive\n\n# Generates locale data for each locale.\n#\n# The input data comes preferably from the toolchain, or if the toolchain\n# does not have them (Linaro toolchains), we use the ones available on the\n# host machine.\n#\n# Uses `localedef`, which is built by the `host-localedef` package.\n$(LOCALES): | $(TARGET_DIR)/usr/lib/locale/\n\t$(Q)echo \"Generating locale $(@)\"\n\t$(Q)I18NPATH=$(STAGING_DIR)/usr/share/i18n:/usr/share/i18n \\\n\t$(HOST_DIR)/bin/localedef \\\n\t\t--prefix=$(TARGET_DIR) \\\n\t\t--$(ENDIAN)-endian \\\n\t\t--no-archive \\\n\t\t-i $(call inputfile,$(@)) \\\n\t\t-f $(call charmap,$(@)) \\\n\t\t$(@)\n\n.PHONY: $(LOCALES)\n\n$(TARGET_DIR)/usr/lib/locale/:\n\t$(Q)mkdir -p $(TARGET_DIR)/usr/lib/locale/\n"
  },
  {
    "path": "support/misc/gitlab-ci.yml.in",
    "content": ".check-DEVELOPERS_base:\n    # get-developers should print just \"No action specified\"; if it prints\n    # anything else, it's a parse error.\n    # The initial ! is removed by YAML so we need to quote it.\n    script:\n        - \"! utils/get-developers | grep -v 'No action specified'\"\n\n.check-flake8_base:\n    script:\n        - make check-flake8\n\n.check-package_base:\n    script:\n        - make check-package\n\n.defconfig_check:\n    before_script:\n        - DEFCONFIG_NAME=$(echo ${CI_JOB_NAME} | sed -e 's,_check$,,g')\n    script:\n        - echo \"Configure Buildroot for ${DEFCONFIG_NAME}\"\n        - make ${DEFCONFIG_NAME}\n        - support/scripts/check-dotconfig.py .config configs/${DEFCONFIG_NAME}\n    artifacts:\n        when: on_failure\n        expire_in: 2 weeks\n        paths:\n            - .config\n\n.run_make: &run_make\n    |\n      make O=${OUTPUT_DIR} > >(tee build.log |grep '>>>') 2>&1 || {\n          echo 'Failed build last output'\n          tail -200 build.log\n          exit 1\n      }\n\n.defconfig_base:\n    before_script:\n        - DEFCONFIG_NAME=${CI_JOB_NAME}\n        - OUTPUT_DIR=output\n    script:\n        - echo \"Configure Buildroot for ${DEFCONFIG_NAME}\"\n        - make ${DEFCONFIG_NAME}\n        - ./support/scripts/check-dotconfig.py .config ./configs/${DEFCONFIG_NAME}\n        - echo 'Build buildroot'\n        - *run_make\n        - |\n            ./support/scripts/boot-qemu-image.py \"${DEFCONFIG_NAME}\" > >(tee runtime-test.log) 2>&1 || {\n                echo 'Failed runtime test last output'\n                tail -200 runtime-test.log\n                exit 1\n            }\n    artifacts:\n        when: always\n        expire_in: 2 weeks\n        paths:\n            - .config\n            - build.log\n            - output/images/\n            - output/build/build-time.log\n            - output/build/packages-file-list.txt\n            - output/build/*/.config\n            - runtime-test.log\n\n.runtime_test_base:\n    before_script:\n        - TEST_CASE_NAME=${CI_JOB_NAME}\n    # Keep build directories so the rootfs can be an artifact of the job. The\n    # runner will clean up those files for us.\n    # Multiply every emulator timeout by 10 to avoid sporadic failures in\n    # elastic runners.\n    script:\n        - echo \"Starting runtime test ${TEST_CASE_NAME}\"\n        - ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${TEST_CASE_NAME}\n    artifacts:\n        when: always\n        expire_in: 2 weeks\n        paths:\n            - test-output/*.log\n            - test-output/*/.config\n            - test-output/*/images/*\n\n.test_pkg:\n    stage: build\n    before_script:\n        - OUTPUT_DIR=${CI_JOB_NAME}\n    script:\n        - echo \"Configure Buildroot for ${OUTPUT_DIR}\"\n        - make O=${OUTPUT_DIR} syncconfig\n        - make O=${OUTPUT_DIR} savedefconfig\n        - echo 'Build buildroot'\n        - *run_make\n    needs:\n        - pipeline: $PARENT_PIPELINE_ID\n          job: generate-gitlab-ci-yml\n    artifacts:\n        when: always\n        expire_in: 2 weeks\n        paths:\n            - build.log\n            - br-test-pkg/*/.config\n            - br-test-pkg/*/defconfig\n            - br-test-pkg/*/build/build-time.log\n            - br-test-pkg/*/build/packages-file-list*.txt\n"
  },
  {
    "path": "support/misc/relocate-sdk.sh",
    "content": "#!/bin/sh\n#\nif [ \"$#\" -ne 0 ]; then\n    echo \"Run this script to relocate the buildroot SDK at that location\"\n    exit 1\nfi\n\nLOCFILE=\"share/buildroot/sdk-location\"\nFILEPATH=\"$(readlink -f \"$0\")\"\nNEWPATH=\"$(dirname \"${FILEPATH}\")\"\n\ncd \"${NEWPATH}\"\nif [ ! -r \"${LOCFILE}\" ]; then\n    echo \"Previous location of the buildroot SDK not found!\"\n    exit 1\nfi\nOLDPATH=\"$(cat \"${LOCFILE}\")\"\n\nif [ \"${NEWPATH}\" = \"${OLDPATH}\" ]; then\n    echo \"This buildroot SDK has already been relocated!\"\n    exit 0\nfi\n\n# Check if the path substitution does work properly, e.g.  a tree\n# \"/a/b/c\" copied into \"/a/b/c/a/b/c/\" would not be allowed.\nnewpath=\"$(sed -e \"s|${OLDPATH}|${NEWPATH}|g\" \"${LOCFILE}\")\"\nif [ \"${NEWPATH}\" != \"${newpath}\" ]; then\n    echo \"Something went wrong with substituting the path!\"\n    echo \"Please choose another location for your SDK!\"\n    exit 1\nfi\n\necho \"Relocating the buildroot SDK from ${OLDPATH} to ${NEWPATH} ...\"\n\n# Make sure file uses the right language\nexport LC_ALL=C\n# Replace the old path with the new one in all text files\ngrep -lr \"${OLDPATH}\" . | while read -r FILE ; do\n    if file -b --mime-type \"${FILE}\" | grep -q '^text/' && [ \"${FILE}\" != \"${LOCFILE}\" ]\n    then\n        sed -i \"s|${OLDPATH}|${NEWPATH}|g\" \"${FILE}\"\n    fi\ndone\n\n# At the very end, we update the location file to not break the\n# SDK if this script gets interruted.\nsed -i \"s|${OLDPATH}|${NEWPATH}|g\" ${LOCFILE}\n"
  },
  {
    "path": "support/misc/target-dir-warning.txt",
    "content": "Warning!\n========\n\nThis directory does *not* contain the root filesystem that you can use\non your embedded system. Since Buildroot does not run as root, it\ncannot create device files and set the permissions and ownership of\nfiles correctly in this directory to make it usable as a root\nfilesystem.\n\nFor that reason, do *not* use the contents of this directory to mount\nyour root filesystem over NFS or copy the contents of this directory\nto a SD card or USB key, thinking it will work as the root filesystem\nfor your embedded system. It will simply *not* work.\n\nInstead, if you need a usable root filesystem, please select one of\nthe filesystem image formats available in the Buildroot configuration\ninterface (make menuconfig or others) in the \"Filesystem images\"\nsub-menu. If you want to get a filesystem image that you can easily\nextract to your SD card or to some directory exposed through NFS,\nplease use the \"tar the root filesystem\" option. It will generate a\nimages/rootfs.tar image in your Buildroot output directory, which you\ncan extract as root:\n\n  sudo tar -C /destination/of/extraction -xf images/rootfs.tar\n\nThose image files are created using the contents of the target/\ndirectory, but there is a post-processing step to create device files\nand set ownership/permissions properly even if Buildroot does not run\nas root.\n"
  },
  {
    "path": "support/misc/toolchainfile.cmake.in",
    "content": "#\n# Automatically generated file; DO NOT EDIT.\n# CMake toolchain file for Buildroot\n#\n\n# In order to allow the toolchain to be relocated, we calculate the\n# HOST_DIR based on this file's location: $(HOST_DIR)/share/buildroot\n# and store it in RELOCATED_HOST_DIR.\n# All the other variables that need to refer to HOST_DIR will use the\n# RELOCATED_HOST_DIR variable.\nstring(REPLACE \"/share/buildroot\" \"\" RELOCATED_HOST_DIR ${CMAKE_CURRENT_LIST_DIR})\n\n# Point cmake to the location where we have our custom modules,\n# so that it can find our custom platform description.\nlist(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})\n\nset(CMAKE_SYSTEM_NAME Buildroot)\nset(CMAKE_SYSTEM_VERSION 1)\nset(CMAKE_SYSTEM_PROCESSOR @@CMAKE_SYSTEM_PROCESSOR@@)\n\n# Set the {C,CXX}FLAGS appended by CMake depending on the build type\n# defined by Buildroot. CMake defaults these variables with -g and/or\n# -O options, and they are appended at the end of the argument list,\n# so the Buildroot options are overridden. Therefore these variables\n# have to be cleared, so that the options passed in CMAKE_C_FLAGS do\n# apply.\n#\n# Note:\n#   if the project forces some of these flag variables, Buildroot is\n#   screwed up and there is nothing Buildroot can do about that :(\nset(CMAKE_C_FLAGS_DEBUG \"\" CACHE STRING \"Debug CFLAGS\")\nset(CMAKE_C_FLAGS_RELEASE \" -DNDEBUG\" CACHE STRING \"Release CFLAGS\")\n\n# Build type from the Buildroot configuration\nset(CMAKE_BUILD_TYPE @@CMAKE_BUILD_TYPE@@ CACHE STRING \"Buildroot build configuration\")\n\n# Buildroot defaults flags.\n# If you are using this toolchainfile.cmake file outside of Buildroot and\n# want to customize the compiler/linker flags, then:\n# * set them all on the cmake command line, e.g.:\n#     cmake -DCMAKE_C_FLAGS=\"@@TARGET_CFLAGS@@ -Dsome_custom_flag\" ...\n# * and make sure the project's CMake code extends them like this if needed:\n#     set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -Dsome_definitions\")\nset(CMAKE_C_FLAGS \"@@TARGET_CFLAGS@@\" CACHE STRING \"Buildroot CFLAGS\")\nset(CMAKE_EXE_LINKER_FLAGS \"@@TARGET_LDFLAGS@@\" CACHE STRING \"Buildroot LDFLAGS for executables\")\nset(CMAKE_SHARED_LINKER_FLAGS \"@@TARGET_LDFLAGS@@\" CACHE STRING \"Buildroot LDFLAGS for shared libraries\")\nset(CMAKE_MODULE_LINKER_FLAGS \"@@TARGET_LDFLAGS@@\" CACHE STRING \"Buildroot LDFLAGS for module libraries\")\n\nset(CMAKE_INSTALL_SO_NO_EXE 0)\n\nset(CMAKE_PROGRAM_PATH \"${RELOCATED_HOST_DIR}/bin\")\nset(CMAKE_SYSROOT \"${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@\")\nset(CMAKE_FIND_ROOT_PATH \"${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@\")\nset(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)\nset(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)\nset(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)\nset(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)\nset(ENV{PKG_CONFIG_SYSROOT_DIR} \"${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@\")\n\n# This toolchain file can be used both inside and outside Buildroot.\nset(CMAKE_C_COMPILER \"${RELOCATED_HOST_DIR}/@@TARGET_CC@@\")\nif(@@TOOLCHAIN_HAS_CXX@@)\n  set(CMAKE_CXX_FLAGS_DEBUG \"\" CACHE STRING \"Debug CXXFLAGS\")\n  set(CMAKE_CXX_FLAGS_RELEASE \" -DNDEBUG\" CACHE STRING \"Release CXXFLAGS\")\n  set(CMAKE_CXX_FLAGS \"@@TARGET_CXXFLAGS@@\" CACHE STRING \"Buildroot CXXFLAGS\")\n  set(CMAKE_CXX_COMPILER \"${RELOCATED_HOST_DIR}/@@TARGET_CXX@@\")\nendif()\nif(@@TOOLCHAIN_HAS_FORTRAN@@)\n  set(CMAKE_Fortran_FLAGS_DEBUG \"\" CACHE STRING \"Debug Fortran FLAGS\")\n  set(CMAKE_Fortran_FLAGS_RELEASE \" -DNDEBUG\" CACHE STRING \"Release Fortran FLAGS\")\n  set(CMAKE_Fortran_FLAGS \"@@TARGET_FCFLAGS@@\" CACHE STRING \"Buildroot FCFLAGS\")\n  set(CMAKE_Fortran_COMPILER \"${RELOCATED_HOST_DIR}/@@TARGET_FC@@\")\nendif()\n"
  },
  {
    "path": "support/misc/utils.mk",
    "content": "################################################################################\n#\n# This file contains various utility macros and variables used about\n# everywhere in make constructs.\n#\n################################################################################\n\n# Strip quotes and then whitespaces\nqstrip = $(strip $(subst \",,$(1)))\n#\"))\n\n# Variables for use in Make constructs\ncomma := ,\nempty :=\nspace := $(empty) $(empty)\n\n# make 4.3:\n# https://lwn.net/Articles/810071/\n# Number signs (#) appearing inside a macro reference or function invocation\n#   no longer introduce comments and should not be escaped with backslashes:\n#   thus a call such as:\n#     foo := $(shell echo '#')\n#   is legal.  Previously the number sign needed to be escaped, for example:\n#     foo := $(shell echo '\\#')\n#   Now this latter will resolve to \"\\#\".  If you want to write makefiles\n#   portable to both versions, assign the number sign to a variable:\n#     H := \\#\n#     foo := $(shell echo '$H')\nSHARP_SIGN := \\#\n\n# Case conversion macros. This is inspired by the 'up' macro from gmsl\n# (http://gmsl.sf.net). It is optimised very heavily because these macros\n# are used a lot. It is about 5 times faster than forking a shell and tr.\n#\n# The caseconvert-helper creates a definition of the case conversion macro.\n# After expansion by the outer $(eval ), the UPPERCASE macro is defined as:\n# $(strip $(eval __tmp := $(1))  $(eval __tmp := $(subst a,A,$(__tmp))) ... )\n# In other words, every letter is substituted one by one.\n#\n# The caseconvert-helper allows us to create this definition out of the\n# [FROM] and [TO] lists, so we don't need to write down every substition\n# manually. The uses of $ and $$ quoting are chosen in order to do as\n# much expansion as possible up-front.\n#\n# Note that it would be possible to conceive a slightly more optimal\n# implementation that avoids the use of __tmp, but that would be even\n# more unreadable and is not worth the effort.\n\n[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 - .\n[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 _ _\n\ndefine caseconvert-helper\n$(1) = $$(strip \\\n\t$$(eval __tmp := $$(1))\\\n\t$(foreach c, $(2),\\\n\t\t$$(eval __tmp := $$(subst $(word 1,$(subst :, ,$c)),$(word 2,$(subst :, ,$c)),$$(__tmp))))\\\n\t$$(__tmp))\nendef\n\n$(eval $(call caseconvert-helper,UPPERCASE,$(join $(addsuffix :,$([FROM])),$([TO]))))\n$(eval $(call caseconvert-helper,LOWERCASE,$(join $(addsuffix :,$([TO])),$([FROM]))))\n\n# Reverse the orders of words in a list. Again, inspired by the gmsl\n# 'reverse' macro.\nreverse = $(if $(1),$(call reverse,$(wordlist 2,$(words $(1)),$(1))) $(firstword $(1)))\n\n# Sanitize macro cleans up generic strings so it can be used as a filename\n# and in rules. Particularly useful for VCS version strings, that can contain\n# slashes, colons (OK in filenames but not in rules), and spaces.\nsanitize = $(subst $(space),_,$(subst :,_,$(subst /,_,$(strip $(1)))))\n\n# MESSAGE Macro -- display a message in bold type\nMESSAGE = echo \"$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(call qstrip,$(1))$(TERM_RESET)\"\nTERM_BOLD := $(shell tput smso 2>/dev/null)\nTERM_RESET := $(shell tput rmso 2>/dev/null)\n\n# Utility functions for 'find'\n# findfileclauses(filelist) => -name 'X' -o -name 'Y'\nfindfileclauses = $(call notfirstword,$(patsubst %,-o -name '%',$(1)))\n# finddirclauses(base, dirlist) => -path 'base/dirX' -o -path 'base/dirY'\nfinddirclauses = $(call notfirstword,$(patsubst %,-o -path '$(1)/%',$(2)))\n\n# Miscellaneous utility functions\n# notfirstword(wordlist): returns all but the first word in wordlist\nnotfirstword = $(wordlist 2,$(words $(1)),$(1))\n\n# build a comma-separated list of quoted items, from a space-separated\n# list of unquoted items:   a b c d  -->  \"a\", \"b\", \"c\", \"d\"\nmake-comma-list = $(subst $(space),$(comma)$(space),$(patsubst %,\"%\",$(strip $(1))))\n\n# build a comma-separated list of single quoted items, from a space-separated\n# list of unquoted items:   a b c d  -->  'a', 'b', 'c', 'd'\nmake-sq-comma-list = $(subst $(space),$(comma)$(space),$(patsubst %,'%',$(strip $(1))))\n\n# Needed for the foreach loops to loop over the list of hooks, so that\n# each hook call is properly separated by a newline.\ndefine sep\n\n\nendef\n\nPERCENT = %\nQUOTE = '\n# ' # Meh... syntax-highlighting\n\n# This macro properly escapes a command string, then prints it with printf:\n#\n#   - first, backslash '\\' are self-escaped, so that they do not escape\n#     the following char and so that printf properly outputs a backslash;\n#\n#   - next, single quotes are escaped by closing an existing one, adding\n#     an escaped one, and re-openning a new one (see below for the reason);\n#\n#   - then '%' signs are self-escaped so that the printf does not interpret\n#     them as a format specifier, in case the variable contains an actual\n#     printf with a format;\n#\n#   - finally, $(sep) is replaced with the literal '\\n' so that make does\n#     not break on the so-expanded variable, but so that the printf does\n#     correctly output an LF.\n#\n# Note: this must be escaped in this order to avoid over-escaping the\n# previously escaped elements.\n#\n# Once everything has been escaped, it is passed between single quotes\n# (that's why the single-quotes are escaped they way they are, above,\n# and why the dollar sign is not escaped) to printf(1). A trailing\n# newline is apended, too.\n#\n# Note: leading or trailing spaces are *not* stripped.\n#\ndefine PRINTF\n\tprintf '$(subst $(sep),\\n,\\\n\t\t$(subst $(PERCENT),$(PERCENT)$(PERCENT),\\\n\t\t\t$(subst $(QUOTE),$(QUOTE)\\$(QUOTE)$(QUOTE),\\\n\t\t\t\t$(subst \\,\\\\,$(1)))))\\n'\nendef\n"
  },
  {
    "path": "support/scripts/apply-patches.sh",
    "content": "#!/usr/bin/env bash\n# A little script I whipped up to make it easy to\n# patch source trees and have sane error handling\n# -Erik\n#\n# (c) 2002 Erik Andersen <andersen@codepoet.org>\n#\n# Parameters:\n# - \"-s\", optional. Silent operation, don't print anything if there\n# isn't any error.\n# - the build directory, optional, default value is '.'. The place where are\n# the package sources.\n# - the patch directory, optional, default '../kernel-patches'. The place\n# where are the scripts you want to apply.\n# - other parameters are the patch name patterns, optional, default value is\n# '*'. Pattern(s) describing the patch names you want to apply.\n#\n# The script will look recursively for patches from the patch directory. If a\n# file named 'series' exists then the patches mentioned in it will be applied\n# as plain patches, regardless of their file name. If no 'series' file exists,\n# the script will look for file names matching pattern(s). If the name\n# ends with '.tar.*', '.tbz2' or '.tgz', the file is considered as an archive\n# and will be uncompressed into a directory named\n# '.patches-name_of_the_archive-unpacked'. It's the turn of this directory to\n# be scanned with '*' as pattern. Remember that scanning is recursive. Other\n# files than series file and archives are considered as a patch.\n#\n# Once a patch is found, the script will try to apply it. If its name doesn't\n# end with '.gz', '.bz', '.bz2', '.xz', '.zip', '.Z', '.diff*' or '.patch*',\n# it will be skipped. If necessary, the patch will be uncompressed before being\n# applied. The list of the patches applied is stored in '.applied_patches_list'\n# file in the build directory.\n\nset -e\n\nsilent=\nif [ \"$1\" = \"-s\" ] ; then\n    # add option to be used by the patch tool\n    silent=-s\n    shift\nfi\n\n# Set directories from arguments, or use defaults.\nbuilddir=${1-.}\npatchdir=${2-../kernel-patches}\nshift 2\npatchpattern=${@-*}\n\n# use a well defined sorting order\nexport LC_COLLATE=C\n\nif [ ! -d \"${builddir}\" ] ; then\n    echo \"Aborting.  '${builddir}' is not a directory.\"\n    exit 1\nfi\nif [ ! -d \"${patchdir}\" ] ; then\n    echo \"Aborting.  '${patchdir}' is not a directory.\"\n    exit 1\nfi\n\n# Remove any rejects present BEFORE patching - Because if there are\n# any, even if patches are well applied, at the end it will complain\n# about rejects in builddir.\nfind ${builddir}/ '(' -name '*.rej' -o -name '.*.rej' ')' -print0 | \\\n    xargs -0 -r rm -f\n\nfunction apply_patch {\n    path=\"${1%%/}\"\n    patch=\"${2}\"\n    case \"${path}\" in\n        /*) ;;\n        *)  path=\"$PWD/${path}\";;\n    esac\n    if [ \"$3\" ]; then\n        type=\"series\"; uncomp=\"cat\"\n    else\n        case \"$patch\" in\n            *.gz)\n            type=\"gzip\"; uncomp=\"gunzip -dc\"; ;;\n            *.bz)\n            type=\"bzip\"; uncomp=\"bunzip -dc\"; ;;\n            *.bz2)\n            type=\"bzip2\"; uncomp=\"bunzip2 -dc\"; ;;\n            *.xz)\n            type=\"xz\"; uncomp=\"unxz -dc\"; ;;\n            *.zip)\n            type=\"zip\"; uncomp=\"unzip -d\"; ;;\n            *.Z)\n            type=\"compress\"; uncomp=\"uncompress -c\"; ;;\n            *.diff*)\n            type=\"diff\"; uncomp=\"cat\"; ;;\n            *.patch*)\n            type=\"patch\"; uncomp=\"cat\"; ;;\n            *)\n            echo \"Unsupported file type for ${path}/${patch}, skipping\";\n            return 0\n            ;;\n        esac\n    fi\n    if [ -z \"$silent\" ] ; then\n        echo \"\"\n        echo \"Applying $patch using ${type}: \"\n    fi\n    if [ ! -e \"${path}/$patch\" ] ; then\n        echo \"Error: missing patch file ${path}/$patch\"\n        exit 1\n    fi\n    existing=\"$(grep -E \"/${patch}\\$\" ${builddir}/.applied_patches_list || true)\"\n    if [ -n \"${existing}\" ]; then\n        echo \"Error: duplicate filename '${patch}'\"\n        echo \"Conflicting files are:\"\n        echo \"  already applied: ${existing}\"\n        echo \"  to be applied  : ${path}/${patch}\"\n        exit 1\n    fi\n    echo \"${path}/${patch}\" >> ${builddir}/.applied_patches_list\n    ${uncomp} \"${path}/$patch\" | patch -g0 -p1 -E --no-backup-if-mismatch -d \"${builddir}\" -t -N $silent\n    if [ $? != 0 ] ; then\n        echo \"Patch failed!  Please fix ${patch}!\"\n        exit 1\n    fi\n}\n\nfunction scan_patchdir {\n    local path=$1\n    shift 1\n    patches=${@-*}\n\n    # If there is a series file, use it instead of using ls sort order\n    # to apply patches. Skip line starting with a dash.\n    if [ -e \"${path}/series\" ] ; then\n        # The format of a series file accepts a second field that is\n        # used to specify the number of directory components to strip\n        # when applying the patch, in the form -pN (N an integer >= 0)\n        # We assume this field to always be -p1 whether it is present\n        # or missing.\n        series_patches=\"`grep -Ev \"^#\" ${path}/series | cut -d ' ' -f1 2> /dev/null`\"\n        for i in $series_patches; do\n            apply_patch \"$path\" \"$i\" series\n        done\n    else\n        for i in `cd $path; ls -d $patches 2> /dev/null` ; do\n            if [ -d \"${path}/$i\" ] ; then\n                scan_patchdir \"${path}/$i\"\n            elif echo \"$i\" | grep -q -E \"\\.tar(\\..*)?$|\\.tbz2?$|\\.tgz$\" ; then\n                unpackedarchivedir=\"$builddir/.patches-$(basename $i)-unpacked\"\n                rm -rf \"$unpackedarchivedir\" 2> /dev/null\n                mkdir \"$unpackedarchivedir\"\n                tar -C \"$unpackedarchivedir\" -xaf \"${path}/$i\"\n                scan_patchdir \"$unpackedarchivedir\"\n            else\n                apply_patch \"$path\" \"$i\"\n            fi\n        done\n    fi\n}\n\ntouch ${builddir}/.applied_patches_list\nscan_patchdir \"$patchdir\" \"$patchpattern\"\n\n# Check for rejects...\nif [ \"`find $builddir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`\" ] ; then\n    echo \"Aborting.  Reject files found.\"\n    exit 1\nfi\n"
  },
  {
    "path": "support/scripts/boot-qemu-image.py",
    "content": "#!/usr/bin/env python3\n\n# This script expect to run from the Buildroot top directory.\n\nimport os\nimport pexpect\nimport sys\nimport time\n\n\ndef main():\n    if not (len(sys.argv) == 2):\n        print(\"Error: incorrect number of arguments\")\n        print(\"\"\"Usage: boot-qemu-image.py <qemu_arch_defconfig>\"\"\")\n        sys.exit(1)\n\n    # Ignore non Qemu defconfig\n    if not sys.argv[1].startswith('qemu_'):\n        sys.exit(0)\n\n    if not os.path.exists('output/images/start-qemu.sh'):\n        print('qemu-start.sh is missing, cannot test.')\n        sys.exit(0)\n\n    qemu_start = os.path.join(os.getcwd(), 'output/images/start-qemu.sh')\n\n    child = pexpect.spawn(qemu_start, ['serial-only'],\n                          timeout=5, encoding='utf-8',\n                          env={\"QEMU_AUDIO_DRV\": \"none\"})\n\n    # We want only stdout into the log to avoid double echo\n    child.logfile = sys.stdout\n\n    # Let the spawn actually try to fork+exec to the wrapper, and then\n    # let the wrapper exec the qemu process.\n    time.sleep(1)\n\n    try:\n        child.expect([\"buildroot login:\"], timeout=60)\n    except pexpect.EOF as e:\n        # Some emulations require a fork of qemu-system, which may be\n        # missing on the system, and is not provided by Buildroot.\n        # In this case, spawn above will succeed at starting the wrapper\n        # start-qemu.sh, but that one will fail (exit with 127) in such\n        # a situation.\n        exit = [int(line.split(' ')[1])\n                for line in e.value.splitlines()\n                if line.startswith('exitstatus: ')]\n        if len(exit) and exit[0] == 127:\n            print('qemu-start.sh could not find the qemu binary')\n            sys.exit(0)\n        print(\"Connection problem, exiting.\")\n        sys.exit(1)\n    except pexpect.TIMEOUT:\n        print(\"System did not boot in time, exiting.\")\n        sys.exit(1)\n\n    child.sendline(\"root\\r\")\n\n    try:\n        child.expect([\"# \"], timeout=60)\n    except pexpect.EOF:\n        print(\"Cannot connect to shell\")\n        sys.exit(1)\n    except pexpect.TIMEOUT:\n        print(\"Timeout while waiting for shell\")\n        sys.exit(1)\n\n    child.sendline(\"poweroff\\r\")\n\n    try:\n        child.expect([\"System halted\"], timeout=60)\n        child.expect(pexpect.EOF)\n    except pexpect.EOF:\n        pass\n    except pexpect.TIMEOUT:\n        # Qemu may not exit properly after \"System halted\", ignore.\n        print(\"Cannot halt machine\")\n\n    sys.exit(0)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "support/scripts/br2-external",
    "content": "#!/usr/bin/env bash\nset -e\n\n# This script must be able to run with bash-3.1, so it can't use\n# associative arrays. Instead, it emulates them using 'eval'. It\n# can however use indexed arrays, supported since at least bash-3.0.\n\n# The names of the br2-external trees, once validated.\ndeclare -a BR2_EXT_NAMES\n\n# URL to manual for help in converting old br2-external trees.\n# Escape '#' so that make does not consider it a comment.\nMANUAL_URL='https://buildroot.org/manual.html\\#br2-external-converting'\n\nmain() {\n    local OPT OPTARG\n    local br2_ext outputdir\n\n    while getopts :d: OPT; do\n        case \"${OPT}\" in\n        d)  outputdir=\"${OPTARG}\";;\n        :)  error \"option '%s' expects a mandatory argument\\n\" \"${OPTARG}\";;\n        \\?) error \"unknown option '%s'\\n\" \"${OPTARG}\";;\n        esac\n    done\n    # Forget options; keep only positional args\n    shift $((OPTIND-1))\n\n    if [ -z \"${outputdir}\" ]; then\n        error \"no output directory specified (-d)\\n\"\n    fi\n\n    # Trap any unexpected error to generate a meaningful error message\n    trap \"error 'unexpected error while generating ${ofile}\\n'\" ERR\n\n    mkdir -p \"${outputdir}\"\n    do_validate \"${outputdir}\" ${@//:/ }\n    do_mk \"${outputdir}\"\n    do_kconfig \"${outputdir}\"\n}\n\n# Validates the br2-external trees passed as arguments. Makes each of\n# them canonical and store them in the global arrays BR2_EXT_NAMES\n# and BR2_EXT_PATHS.\n#\n# Note: since this script is always first called from Makefile context\n# to generate the Makefile fragment before it is called to generate the\n# Kconfig snippet, we're sure that any error in do_validate will be\n# interpreted in Makefile context. Going up to generating the Kconfig\n# snippet means that there were no error.\n#\ndo_validate() {\n    local outputdir=\"${1}\"\n    local br2_ext\n    shift\n\n    if [ ${#} -eq 0 ]; then\n        # No br2-external tree is valid\n        return\n    fi\n\n    for br2_ext in \"${@}\"; do\n        do_validate_one \"${br2_ext}\"\n    done >\"${outputdir}/.br2-external.mk\"\n}\n\ndo_validate_one() {\n    local br2_ext=\"${1}\"\n    local br2_name br2_desc n d\n\n    if [ ! -d \"${br2_ext}\" ]; then\n        error \"'%s': no such file or directory\\n\" \"${br2_ext}\"\n    fi\n    if [ ! -r \"${br2_ext}\" -o ! -x \"${br2_ext}\" ]; then\n        error \"'%s': permission denied\\n\" \"${br2_ext}\"\n    fi\n    if [ ! -f \"${br2_ext}/external.desc\" ]; then\n        error \"'%s': does not have an 'external.desc'. See %s\\n\" \\\n            \"${br2_ext}\" \"${MANUAL_URL}\"\n    fi\n    br2_name=\"$(sed -r -e '/^name: +(.*)$/!d; s//\\1/' \"${br2_ext}/external.desc\")\"\n    if [ -z \"${br2_name}\" ]; then\n        error \"'%s/external.desc': does not define the name\\n\" \"${br2_ext}\"\n    fi\n    # Only ASCII chars in [A-Za-z0-9_] are permitted\n    n=\"$(sed -r -e 's/[A-Za-z0-9_]//g' <<<\"${br2_name}\" )\"\n    if [ -n \"${n}\" ]; then\n        # Escape '$' so that it gets printed\n        error \"'%s': name '%s' contains invalid chars: '%s'\\n\" \\\n            \"${br2_ext}\" \"${br2_name//\\$/\\$\\$}\" \"${n//\\$/\\$\\$}\"\n    fi\n    eval d=\"\\\"\\${BR2_EXT_PATHS_${br2_name}}\\\"\"\n    if [ -n \"${d}\" ]; then\n        error \"'%s': name '%s' is already used in '%s'\\n\" \\\n            \"${br2_ext}\" \"${br2_name}\" \"${d}\"\n    fi\n    br2_desc=\"$(sed -r -e '/^desc: +(.*)$/!d; s//\\1/' \"${br2_ext}/external.desc\")\"\n    if [ ! -f \"${br2_ext}/external.mk\" ]; then\n        error \"'%s/external.mk': no such file or directory\\n\" \"${br2_ext}\"\n    fi\n    if [ ! -f \"${br2_ext}/Config.in\" ]; then\n        error \"'%s/Config.in': no such file or directory\\n\" \"${br2_ext}\"\n    fi\n\n    # Register this br2-external tree, use an absolute canonical path\n    br2_ext=\"$( cd \"${br2_ext}\"; pwd )\"\n    BR2_EXT_NAMES+=( \"${br2_name}\" )\n    eval BR2_EXT_PATHS_${br2_name}=\"\\\"\\${br2_ext}\\\"\"\n    eval BR2_EXT_DESCS_${br2_name}=\"\\\"\\${br2_desc:-\\${br2_name}}\\\"\"\n}\n\n# Generate the .mk snippet that defines makefile variables\n# for the br2-external tree\ndo_mk() {\n    local outputdir=\"${1}\"\n    local br2_name br2_desc br2_ext\n\n    {\n        printf '#\\n# Automatically generated file; DO NOT EDIT.\\n#\\n'\n        printf '\\n'\n\n        printf 'BR2_EXTERNAL ?='\n        for br2_name in \"${BR2_EXT_NAMES[@]}\"; do\n            eval br2_ext=\"\\\"\\${BR2_EXT_PATHS_${br2_name}}\\\"\"\n            printf ' %s' \"${br2_ext}\"\n        done\n        printf '\\n'\n\n        printf 'BR2_EXTERNAL_NAMES = \\n'\n        printf 'BR2_EXTERNAL_DIRS = \\n'\n        printf 'BR2_EXTERNAL_MKS = \\n'\n\n        if [ ${#BR2_EXT_NAMES[@]} -eq 0 ]; then\n            printf '\\n'\n            printf '# No br2-external tree defined.\\n'\n            return\n        fi\n\n        for br2_name in \"${BR2_EXT_NAMES[@]}\"; do\n            eval br2_desc=\"\\\"\\${BR2_EXT_DESCS_${br2_name}}\\\"\"\n            eval br2_ext=\"\\\"\\${BR2_EXT_PATHS_${br2_name}}\\\"\"\n            printf '\\n'\n            printf 'BR2_EXTERNAL_NAMES += %s\\n' \"${br2_name}\"\n            printf 'BR2_EXTERNAL_DIRS += %s\\n' \"${br2_ext}\"\n            printf 'BR2_EXTERNAL_MKS += %s/external.mk\\n' \"${br2_ext}\"\n            printf 'export BR2_EXTERNAL_%s_PATH = %s\\n' \"${br2_name}\" \"${br2_ext}\"\n            printf 'export BR2_EXTERNAL_%s_DESC = %s\\n' \"${br2_name}\" \"${br2_desc}\"\n        done\n    } >\"${outputdir}/.br2-external.mk\"\n}\n\n# Generate the kconfig snippets for the br2-external tree.\ndo_kconfig() {\n    local outputdir=\"${1}\"\n    local br2_name br2_desc br2_ext br2\n    local -a items\n\n    items=(\n        paths\n        menus\n        toolchains\n        jpeg\n        openssl\n        skeleton\n        init\n    )\n\n    for br2 in \"${items[@]}\"; do\n        {\n            printf '#\\n# Automatically generated file; DO NOT EDIT.\\n#\\n'\n            printf '\\n'\n            if [ ${#BR2_EXT_NAMES[@]} -eq 0 ]; then\n                printf '# No br2-external tree defined.\\n'\n            fi\n        } >\"${outputdir}/.br2-external.in.${br2}\"\n    done\n    if [ ${#BR2_EXT_NAMES[@]} -eq 0 ]; then\n        return\n    fi\n\n    printf 'menu \"External options\"\\n\\n' >>\"${outputdir}/.br2-external.in.menus\"\n\n    for br2_name in \"${BR2_EXT_NAMES[@]}\"; do\n        eval br2_desc=\"\\\"\\${BR2_EXT_DESCS_${br2_name}}\\\"\"\n        eval br2_ext=\"\\\"\\${BR2_EXT_PATHS_${br2_name}}\\\"\"\n\n        {\n            printf 'config BR2_EXTERNAL_%s_PATH\\n' \"${br2_name}\"\n            printf '\\tstring\\n'\n            printf '\\tdefault \"%s\"\\n' \"${br2_ext}\"\n            printf '\\n'\n        } >>\"${outputdir}/.br2-external.in.paths\"\n\n        {\n            if [ ${#BR2_EXT_NAMES[@]} -gt 1 ]; then\n                printf 'menu \"%s\"\\n' \"${br2_desc}\"\n            fi\n            printf 'comment \"%s (in %s)\"\\n' \"${br2_desc}\" \"${br2_ext}\"\n            printf 'source \"%s/Config.in\"\\n' \"${br2_ext}\"\n            if [ ${#BR2_EXT_NAMES[@]} -gt 1 ]; then\n                printf 'endmenu # %s\\n' \"${br2_name}\"\n            fi\n            printf '\\n'\n        } >>\"${outputdir}/.br2-external.in.menus\"\n\n        if [ -f \"${br2_ext}/provides/toolchains.in\" ]; then\n            printf 'comment \"Toolchains from: %s\"\\n' \"${br2_desc}\"\n            printf 'source \"%s/provides/toolchains.in\"\\n' \"${br2_ext}\"\n            printf '\\n'\n        else\n            printf '# No toolchain from: %s\\n\\n' \"${br2_desc}\"\n        fi >>\"${outputdir}/.br2-external.in.toolchains\"\n\n        if [ -f \"${br2_ext}/provides/jpeg.in\" ]; then\n            printf 'comment \"jpeg from: %s\"\\n' \"${br2_desc}\"\n            printf 'source \"%s/provides/jpeg.in\"\\n' \"${br2_ext}\"\n            printf '\\n'\n        else\n            printf '# No jpeg from: %s\\n\\n' \"${br2_desc}\"\n        fi >>\"${outputdir}/.br2-external.in.jpeg\"\n\n        if [ -f \"${br2_ext}/provides/openssl.in\" ]; then\n            printf 'comment \"openssl from: %s\"\\n' \"${br2_desc}\"\n            printf 'source \"%s/provides/openssl.in\"\\n' \"${br2_ext}\"\n            printf '\\n'\n        else\n            printf '# No openssl from: %s\\n\\n' \"${br2_desc}\"\n        fi >>\"${outputdir}/.br2-external.in.openssl\"\n\n        if [ -f \"${br2_ext}/provides/skeleton.in\" ]; then\n            printf 'comment \"skeleton from: %s\"\\n' \"${br2_desc}\"\n            printf 'source \"%s/provides/skeleton.in\"\\n' \"${br2_ext}\"\n            printf '\\n'\n        else\n            printf '# No skeleton from: %s\\n\\n' \"${br2_desc}\"\n        fi >>\"${outputdir}/.br2-external.in.skeleton\"\n\n        if [ -f \"${br2_ext}/provides/init.in\" ]; then\n            printf 'comment \"init from: %s\"\\n' \"${br2_desc}\"\n            printf 'source \"%s/provides/init.in\"\\n' \"${br2_ext}\"\n            printf '\\n'\n        else\n            printf '# No init from: %s\\n\\n' \"${br2_desc}\"\n        fi >>\"${outputdir}/.br2-external.in.init\"\n    done\n\n    printf 'endmenu\\n' >>\"${outputdir}/.br2-external.in.menus\"\n}\n\nerror() { local fmt=\"${1}\"; shift; printf \"BR2_EXTERNAL_ERROR = ${fmt}\" \"${@}\"; exit 1; }\n\nmy_name=\"${0##*/}\"\nmain \"${@}\"\n"
  },
  {
    "path": "support/scripts/brpkgutil.py",
    "content": "# Copyright (C) 2010-2013 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n# Copyright (C) 2019 Yann E. MORIN <yann.morin.1998@free.fr>\n\nimport json\nimport logging\nimport os\nimport subprocess\nfrom collections import defaultdict\n\n\n# This function returns a tuple of four dictionaries, all using package\n# names as keys:\n# - a dictionary which values are the lists of packages that are the\n#   dependencies of the package used as key;\n# - a dictionary which values are the lists of packages that are the\n#   reverse dependencies of the package used as key;\n# - a dictionary which values are the type of the package used as key;\n# - a dictionary which values are the version of the package used as key,\n#   'virtual' for a virtual package, or the empty string for a rootfs.\ndef get_dependency_tree():\n    logging.info(\"Getting dependency tree...\")\n\n    deps = {}\n    rdeps = defaultdict(list)\n    types = {}\n    versions = {}\n\n    # Special case for the 'all' top-level fake package\n    deps['all'] = []\n    types['all'] = 'target'\n    versions['all'] = ''\n\n    cmd = [\"make\", \"-s\", \"--no-print-directory\", \"show-info\"]\n    with open(os.devnull, 'wb') as devnull:\n        p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=devnull,\n                             universal_newlines=True)\n        pkg_list = json.loads(p.communicate()[0])\n\n    for pkg in pkg_list:\n        deps['all'].append(pkg)\n        types[pkg] = pkg_list[pkg][\"type\"]\n        deps[pkg] = pkg_list[pkg].get(\"dependencies\", [])\n        for p in deps[pkg]:\n            rdeps[p].append(pkg)\n        versions[pkg] = \\\n            None if pkg_list[pkg][\"type\"] == \"rootfs\" \\\n            else \"virtual\" if pkg_list[pkg][\"virtual\"] \\\n            else pkg_list[pkg][\"version\"]\n\n    return (deps, rdeps, types, versions)\n"
  },
  {
    "path": "support/scripts/check-bin-arch",
    "content": "#!/usr/bin/env bash\n\n# List of hardcoded paths that should be ignored, as they may\n# contain binaries for an architecture different from the\n# architecture of the target.\ndeclare -a IGNORES=(\n\t# Skip firmware files, they could be ELF files for other\n\t# architectures\n\t\"/lib/firmware\"\n\t\"/usr/lib/firmware\"\n\n\t# Skip kernel modules\n\t# When building a 32-bit userland on 64-bit architectures, the kernel\n\t# and its modules may still be 64-bit. To keep the basic\n\t# check-bin-arch logic simple, just skip this directory.\n\t\"/lib/modules\"\n\t\"/usr/lib/modules\"\n\n\t# Skip files in /usr/share, several packages (qemu,\n\t# pru-software-support) legitimately install ELF binaries that\n\t# are not for the target architecture\n\t\"/usr/share\"\n\n\t# Skip files in {/usr,}/lib/grub, since it is possible to have\n\t# it for a different architecture (e.g. i386 grub on x86_64).\n\t\"/lib/grub\"\n\t\"/usr/lib/grub\"\n\n\t# Guile modules are ELF files, with a \"None\" machine\n\t\"/usr/lib/guile\"\n)\n\nwhile getopts p:l:r:a:i: OPT ; do\n\tcase \"${OPT}\" in\n\tp) package=\"${OPTARG}\";;\n\tl) pkg_list=\"${OPTARG}\";;\n\tr) readelf=\"${OPTARG}\";;\n\ta) arch_name=\"${OPTARG}\";;\n\ti)\n\t\t# Ensure we do have single '/' as separators,\n\t\t# and that we have a leading and a trailing one.\n\t\tpattern=\"$(sed -r -e 's:/+:/:g; s:^/*:/:; s:/*$:/:;' <<<\"${OPTARG}\")\"\n\t\tIGNORES+=(\"${pattern}\")\n\t\t;;\n\t:) error \"option '%s' expects a mandatory argument\\n\" \"${OPTARG}\";;\n\t\\?) error \"unknown option '%s'\\n\" \"${OPTARG}\";;\n\tesac\ndone\n\nif test -z \"${package}\" -o -z \"${pkg_list}\" -o -z \"${readelf}\" -o -z \"${arch_name}\" ; then\n\techo \"Usage: $0 -p <pkg> -l <pkg-file-list> -r <readelf> -a <arch name> [-i PATH ...]\"\n\texit 1\nfi\n\nexitcode=0\n\n# Only split on new lines, for filenames-with-spaces\nIFS=\"\n\"\n\nwhile read f; do\n\tfor ignore in \"${IGNORES[@]}\"; do\n\t\tif [[ \"${f}\" =~ ^\"${ignore}\" ]]; then\n\t\t\tcontinue 2\n\t\tfi\n\tdone\n\n\t# Skip symlinks. Some symlinks may have absolute paths as\n\t# target, pointing to host binaries while we're building.\n\tif [[ -L \"${TARGET_DIR}/${f}\" ]]; then\n\t\tcontinue\n\tfi\n\n\t# Get architecture using readelf. We pipe through 'head -1' so\n\t# that when the file is a static library (.a), we only take\n\t# into account the architecture of the first object file.\n\tarch=$(LC_ALL=C ${readelf} -h \"${TARGET_DIR}/${f}\" 2>&1 | \\\n\t\t       sed -r -e '/^  Machine: +(.+)/!d; s//\\1/;' | head -1)\n\n\t# If no architecture found, assume it was not an ELF file\n\tif test \"${arch}\" = \"\" ; then\n\t\tcontinue\n\tfi\n\n\t# Architecture is correct\n\tif test \"${arch}\" = \"${arch_name}\" ; then\n\t\tcontinue\n\tfi\n\n\tprintf 'ERROR: architecture for \"%s\" is \"%s\", should be \"%s\"\\n' \\\n\t       \"${f}\" \"${arch}\" \"${arch_name}\"\n\n\texitcode=1\ndone < <( sed -r -e \"/^${package},\\.(.+)$/!d; s//\\1/;\" ${pkg_list} )\n\nexit ${exitcode}\n"
  },
  {
    "path": "support/scripts/check-dotconfig.py",
    "content": "#!/usr/bin/env python3\n\n# This scripts check that all lines present in the defconfig are\n# still present in the .config\n\nimport sys\n\n\ndef main():\n    if not (len(sys.argv) == 3):\n        print(\"Error: incorrect number of arguments\")\n        print(\"\"\"Usage: check-dotconfig <configfile> <defconfig>\"\"\")\n        sys.exit(1)\n\n    configfile = sys.argv[1]\n    defconfig = sys.argv[2]\n\n    # strip() to get rid of trailing \\n\n    with open(configfile) as configf:\n        configlines = [line.strip() for line in configf.readlines()]\n\n    defconfiglines = []\n    with open(defconfig) as defconfigf:\n        # strip() to get rid of trailing \\n\n        for line in (line.strip() for line in defconfigf.readlines()):\n            if line.startswith(\"BR2_\"):\n                defconfiglines.append(line)\n            elif line.startswith('# BR2_') and line.endswith(' is not set'):\n                defconfiglines.append(line)\n\n    # Check that all the defconfig lines are still present\n    missing = [line for line in defconfiglines if line not in configlines]\n\n    if missing:\n        print(\"WARN: defconfig {} can't be used:\".format(defconfig))\n        for m in missing:\n            print(\"      Missing: {}\".format(m))\n        sys.exit(1)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "support/scripts/check-host-rpath",
    "content": "#!/usr/bin/env bash\n\n# This script scans $(HOST_DIR)/{bin,sbin} for all ELF files, and checks\n# they have an RPATH to $(HOST_DIR)/lib if they need libraries from\n# there.\n\n# Override the user's locale so we are sure we can parse the output of\n# readelf(1) and file(1)\nexport LC_ALL=C\n\nmain() {\n    local pkg=\"${1}\"\n    local hostdir=\"${2}\"\n    local perpackagedir=\"${3}\"\n    local file ret\n\n    # Remove duplicate and trailing '/' for proper match\n    hostdir=\"$( sed -r -e 's:/+:/:g; s:/$::;' <<<\"${hostdir}\" )\"\n\n    ret=0\n    while read file; do\n        is_elf \"${file}\" || continue\n        elf_needs_rpath \"${file}\" \"${hostdir}\" || continue\n        check_elf_has_rpath \"${file}\" \"${hostdir}\" \"${perpackagedir}\" && continue\n        if [ ${ret} -eq 0 ]; then\n            ret=1\n            printf \"***\\n\"\n            printf \"*** ERROR: package %s installs executables without proper RPATH:\\n\" \"${pkg}\"\n        fi\n        printf \"***   %s\\n\" \"${file}\"\n    done < <( find \"${hostdir}\"/{bin,sbin} -type f 2>/dev/null )\n\n    return ${ret}\n}\n\nis_elf() {\n    local f=\"${1}\"\n\n    readelf -l \"${f}\" 2>/dev/null \\\n    |grep -E 'Requesting program interpreter:' >/dev/null 2>&1\n}\n\n# This function tells whether a given ELF executable (first argument)\n# needs a RPATH pointing to the host library directory or not. It\n# needs such an RPATH if at least of the libraries used by the ELF\n# executable is available in the host library directory. This function\n# returns 0 when a RPATH is needed, 1 otherwise.\n#\n# With per-package directory support, ${hostdir} will point to the\n# current package per-package host directory, and this is where this\n# function will check if the libraries needed by the executable are\n# located (or not). In practice, the ELF executable RPATH may point to\n# another package per-package host directory, but that is fine because\n# if such an executable is within the current package per-package host\n# directory, its libraries will also have been copied into the current\n# package per-package host directory.\nelf_needs_rpath() {\n    local file=\"${1}\"\n    local hostdir=\"${2}\"\n    local lib\n\n    while read lib; do\n        [ -e \"${hostdir}/lib/${lib}\" ] && return 0\n    done < <( readelf -d \"${file}\"                                         \\\n              |sed -r -e '/^.* \\(NEEDED\\) .*Shared library: \\[(.+)\\]$/!d;' \\\n                     -e 's//\\1/;'                                          \\\n            )\n\n    return 1\n}\n\n# This function checks whether at least one of the RPATH of the given\n# ELF executable (first argument) properly points to the host library\n# directory (second argument), either through an absolute RPATH or a\n# relative RPATH. In the context of per-package directory support,\n# ${hostdir} (second argument) points to the current package host\n# directory. However, it is perfectly valid for an ELF binary to have\n# a RPATH pointing to another package per-package host directory,\n# which is why such RPATH is also accepted (the per-package directory\n# gets passed as third argument). Having a RPATH pointing to the host\n# directory will make sure the ELF executable will find at runtime the\n# shared libraries it depends on. This function returns 0 when a\n# proper RPATH was found, or 1 otherwise.\ncheck_elf_has_rpath() {\n    local file=\"${1}\"\n    local hostdir=\"${2}\"\n    local perpackagedir=\"${3}\"\n    local rpath dir\n\n    while read rpath; do\n        for dir in ${rpath//:/ }; do\n            # Remove duplicate and trailing '/' for proper match\n            dir=\"$( sed -r -e 's:/+:/:g; s:/$::;' <<<\"${dir}\" )\"\n            [ \"${dir}\" = \"${hostdir}/lib\" ] && return 0\n            [ \"${dir}\" = \"\\$ORIGIN/../lib\" ] && return 0\n\t    # This check is done even for builds where\n\t    # BR2_PER_PACKAGE_DIRECTORIES is disabled. In this case,\n\t    # PER_PACKAGE_DIR and therefore ${perpackagedir} points to\n\t    # a non-existent directory, and this check will always be\n\t    # false.\n            [[ ${dir} =~ ${perpackagedir}/[^/]+/host/lib ]] && return 0\n        done\n    done < <( readelf -d \"${file}\"                                              \\\n              |sed -r -e '/.* \\(R(UN)?PATH\\) +Library r(un)?path: \\[(.+)\\]$/!d' \\\n                      -e 's//\\3/;'                                              \\\n            )\n\n    return 1\n}\n\nmain \"${@}\"\n"
  },
  {
    "path": "support/scripts/check-kernel-headers.sh",
    "content": "#!/bin/sh\n\n# This script (and the embedded C code) will check that the actual\n# headers version match the user told us they were:\n#\n# - if both versions are the same, all is well.\n#\n# - if the actual headers are older than the user told us, this is\n#   an error.\n#\n# - if the actual headers are more recent than the user told us, and\n#   we are doing a strict check, then this is an error.\n#\n# - if the actual headers are more recent than the user told us, and\n#   we are doing a loose check, then a warning is printed, but this is\n#   not an error.\n\nBUILDDIR=\"${1}\"\nSYSROOT=\"${2}\"\n# Make sure we have enough version components\nHDR_VER=\"${3}.0.0\"\nCHECK=\"${4}\"  # 'strict' or 'loose'\n\nHDR_M=\"${HDR_VER%%.*}\"\nHDR_V=\"${HDR_VER#*.}\"\nHDR_m=\"${HDR_V%%.*}\"\n\n# Exit on any error, so we don't try to run an unexisting program if the\n# compilation fails.\nset -e\n\n# Set the clean-up trap in advance to prevent a race condition in which we\n# create the file but get a SIGTERM before setting it. Notice that we don't\n# need to care about EXEC being empty, since 'rm -f \"\"' does nothing.\ntrap 'rm -f \"${EXEC}\"' EXIT\n\nEXEC=\"$(mktemp -p \"${BUILDDIR}\" -t .check-headers.XXXXXX)\"\n\n# We do not want to account for the patch-level, since headers are\n# not supposed to change for different patchlevels, so we mask it out.\n# This only applies to kernels >= 3.0, but those are the only one\n# we actually care about; we treat all 2.6.x kernels equally.\n${HOSTCC} -imacros \"${SYSROOT}/usr/include/linux/version.h\" \\\n          -x c -o \"${EXEC}\" - <<_EOF_\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\nint main(int argc __attribute__((unused)),\n         char** argv __attribute__((unused)))\n{\n    int l = LINUX_VERSION_CODE & ~0xFF;\n    int h = KERNEL_VERSION(${HDR_M},${HDR_m},0);\n\n    if ((l >= h) && !strcmp(\"${CHECK}\", \"loose\"))\n        return 0;\n\n    if (l != h) {\n        printf(\"Incorrect selection of kernel headers: \");\n        printf(\"expected %d.%d.x, got %d.%d.x\\n\", ${HDR_M}, ${HDR_m},\n               ((LINUX_VERSION_CODE>>16) & 0xFF),\n               ((LINUX_VERSION_CODE>>8) & 0xFF));\n        return 1;\n    }\n    return 0;\n}\n_EOF_\n\n\"${EXEC}\"\n"
  },
  {
    "path": "support/scripts/check-merged-usr.sh",
    "content": "#!/bin/sh\n#\n# Check if a given custom skeleton or overlay complies to the merged /usr\n# requirements:\n# /\n# /bin -> usr/bin\n# /lib -> usr/lib\n# /sbin -> usr/sbin\n# /usr/bin/\n# /usr/lib/\n# /usr/sbin/\n#\n# Output: the list of non-compliant paths (empty if compliant).\n#\n\n# Extract the inode numbers for all of those directories. In case any is\n# a symlink, we want to get the inode of the pointed-to directory, so we\n# append '/.' to be sure we get the target directory. Since the symlinks\n# can be anyway (/bin -> /usr/bin or /usr/bin -> /bin), we do that for\n# all of them.\n#\nlib_inode=$(stat -c '%i' \"${1}/lib/.\" 2>/dev/null)\nbin_inode=$(stat -c '%i' \"${1}/bin/.\" 2>/dev/null)\nsbin_inode=$(stat -c '%i' \"${1}/sbin/.\" 2>/dev/null)\nusr_lib_inode=$(stat -c '%i' \"${1}/usr/lib/.\" 2>/dev/null)\nusr_bin_inode=$(stat -c '%i' \"${1}/usr/bin/.\" 2>/dev/null)\nusr_sbin_inode=$(stat -c '%i' \"${1}/usr/sbin/.\" 2>/dev/null)\n\nnot_merged_dirs=\"\"\ntest -z \"$lib_inode\" || \\\n\ttest \"$lib_inode\" = \"$usr_lib_inode\" || \\\n\t\tnot_merged_dirs=\"/lib\"\ntest -z \"$bin_inode\" || \\\n\ttest \"$bin_inode\" = \"$usr_bin_inode\" || \\\n\t\tnot_merged_dirs=\"$not_merged_dirs /bin\"\ntest -z \"$sbin_inode\" || \\\n\ttest \"$sbin_inode\" = \"$usr_sbin_inode\" || \\\n\t\tnot_merged_dirs=\"$not_merged_dirs /sbin\"\necho \"${not_merged_dirs# }\"\n"
  },
  {
    "path": "support/scripts/cpedb.py",
    "content": "#!/usr/bin/env python3\n\nimport xml.etree.ElementTree as ET\nfrom xml.etree.ElementTree import Element, SubElement\nimport gzip\nimport os\nimport requests\nimport time\nfrom xml.dom import minidom\n\nVALID_REFS = ['VENDOR', 'VERSION', 'CHANGE_LOG', 'PRODUCT', 'PROJECT', 'ADVISORY']\n\nCPEDB_URL = \"https://static.nvd.nist.gov/feeds/xml/cpe/dictionary/official-cpe-dictionary_v2.3.xml.gz\"\n\nns = {\n    '': 'http://cpe.mitre.org/dictionary/2.0',\n    'cpe-23': 'http://scap.nist.gov/schema/cpe-extension/2.3',\n    'xml': 'http://www.w3.org/XML/1998/namespace'\n}\n\n\nclass CPE:\n    def __init__(self, cpe_str, titles, refs):\n        self.cpe_str = cpe_str\n        self.titles = titles\n        self.references = refs\n        self.cpe_cur_ver = \"\".join(self.cpe_str.split(\":\")[5:6])\n\n    def update_xml_dict(self):\n        ET.register_namespace('', 'http://cpe.mitre.org/dictionary/2.0')\n        cpes = Element('cpe-list')\n        cpes.set('xmlns:cpe-23', \"http://scap.nist.gov/schema/cpe-extension/2.3\")\n        cpes.set('xmlns:ns6', \"http://scap.nist.gov/schema/scap-core/0.1\")\n        cpes.set('xmlns:scap-core', \"http://scap.nist.gov/schema/scap-core/0.3\")\n        cpes.set('xmlns:config', \"http://scap.nist.gov/schema/configuration/0.1\")\n        cpes.set('xmlns:xsi', \"http://www.w3.org/2001/XMLSchema-instance\")\n        cpes.set('xmlns:meta', \"http://scap.nist.gov/schema/cpe-dictionary-metadata/0.2\")\n        cpes.set('xsi:schemaLocation', \" \".join([\"http://scap.nist.gov/schema/cpe-extension/2.3\",\n                                                 \"https://scap.nist.gov/schema/cpe/2.3/cpe-dictionary-extension_2.3.xsd\",\n                                                 \"http://cpe.mitre.org/dictionary/2.0\",\n                                                 \"https://scap.nist.gov/schema/cpe/2.3/cpe-dictionary_2.3.xsd\",\n                                                 \"http://scap.nist.gov/schema/cpe-dictionary-metadata/0.2\",\n                                                 \"https://scap.nist.gov/schema/cpe/2.1/cpe-dictionary-metadata_0.2.xsd\",\n                                                 \"http://scap.nist.gov/schema/scap-core/0.3\",\n                                                 \"https://scap.nist.gov/schema/nvd/scap-core_0.3.xsd\",\n                                                 \"http://scap.nist.gov/schema/configuration/0.1\",\n                                                 \"https://scap.nist.gov/schema/nvd/configuration_0.1.xsd\",\n                                                 \"http://scap.nist.gov/schema/scap-core/0.1\",\n                                                 \"https://scap.nist.gov/schema/nvd/scap-core_0.1.xsd\"]))\n        item = SubElement(cpes, 'cpe-item')\n        cpe_short_name = CPE.short_name(self.cpe_str)\n        cpe_new_ver = CPE.version_update(self.cpe_str)\n\n        item.set('name', 'cpe:/' + cpe_short_name)\n        self.titles[0].text.replace(self.cpe_cur_ver, cpe_new_ver)\n        for title in self.titles:\n            item.append(title)\n        if self.references:\n            item.append(self.references)\n        cpe23item = SubElement(item, 'cpe-23:cpe23-item')\n        cpe23item.set('name', self.cpe_str)\n\n        # Generate the XML as a string\n        xmlstr = ET.tostring(cpes)\n\n        # And use minidom to pretty print the XML\n        return minidom.parseString(xmlstr).toprettyxml(encoding=\"utf-8\").decode(\"utf-8\")\n\n    @staticmethod\n    def version(cpe):\n        return cpe.split(\":\")[5]\n\n    @staticmethod\n    def product(cpe):\n        return cpe.split(\":\")[4]\n\n    @staticmethod\n    def short_name(cpe):\n        return \":\".join(cpe.split(\":\")[2:6])\n\n    @staticmethod\n    def version_update(cpe):\n        return \":\".join(cpe.split(\":\")[5:6])\n\n    @staticmethod\n    def no_version(cpe):\n        return \":\".join(cpe.split(\":\")[:5])\n\n\nclass CPEDB:\n    def __init__(self, nvd_path):\n        self.all_cpes = dict()\n        self.all_cpes_no_version = dict()\n        self.nvd_path = nvd_path\n\n    def get_xml_dict(self):\n        print(\"CPE: Setting up NIST dictionary\")\n        if not os.path.exists(os.path.join(self.nvd_path, \"cpe\")):\n            os.makedirs(os.path.join(self.nvd_path, \"cpe\"))\n\n        cpe_dict_local = os.path.join(self.nvd_path, \"cpe\", os.path.basename(CPEDB_URL))\n        if not os.path.exists(cpe_dict_local) or os.stat(cpe_dict_local).st_mtime < time.time() - 86400:\n            print(\"CPE: Fetching xml manifest from [\" + CPEDB_URL + \"]\")\n            cpe_dict = requests.get(CPEDB_URL)\n            open(cpe_dict_local, \"wb\").write(cpe_dict.content)\n\n        print(\"CPE: Unzipping xml manifest...\")\n        nist_cpe_file = gzip.GzipFile(fileobj=open(cpe_dict_local, 'rb'))\n        print(\"CPE: Converting xml manifest to dict...\")\n        tree = ET.parse(nist_cpe_file)\n        all_cpedb = tree.getroot()\n        self.parse_dict(all_cpedb)\n\n    def parse_dict(self, all_cpedb):\n        # Cycle through the dict and build two dict to be used for custom\n        # lookups of partial and complete CPE objects\n        # The objects are then used to create new proposed XML updates if\n        # if is determined one is required\n        # Out of the different language titles, select English\n        for cpe in all_cpedb.findall(\".//{http://cpe.mitre.org/dictionary/2.0}cpe-item\"):\n            cpe_titles = []\n            for title in cpe.findall('.//{http://cpe.mitre.org/dictionary/2.0}title[@xml:lang=\"en-US\"]', ns):\n                title.tail = None\n                cpe_titles.append(title)\n\n            # Some older CPE don't include references, if they do, make\n            # sure we handle the case of one ref needing to be packed\n            # in a list\n            cpe_ref = cpe.find(\".//{http://cpe.mitre.org/dictionary/2.0}references\")\n            if cpe_ref:\n                for ref in cpe_ref.findall(\".//{http://cpe.mitre.org/dictionary/2.0}reference\"):\n                    ref.tail = None\n                    ref.text = ref.text.upper()\n                    if ref.text not in VALID_REFS:\n                        ref.text = ref.text + \"-- UPDATE this entry, here are some examples and just one word should be used -- \" + ' '.join(VALID_REFS) # noqa E501\n                cpe_ref.tail = None\n                cpe_ref.text = None\n\n            cpe_str = cpe.find(\".//{http://scap.nist.gov/schema/cpe-extension/2.3}cpe23-item\").get('name')\n            item = CPE(cpe_str, cpe_titles, cpe_ref)\n            cpe_str_no_version = CPE.no_version(cpe_str)\n            # This dict must have a unique key for every CPE version\n            # which allows matching to the specific obj data of that\n            # NIST dict entry\n            self.all_cpes.update({cpe_str: item})\n            # This dict has one entry for every CPE (w/o version) to allow\n            # partial match (no valid version) check (the obj is saved and\n            # used as seed for suggested xml updates. By updating the same\n            # non-version'd entry, it assumes the last update here is the\n            # latest version in the NIST dict)\n            self.all_cpes_no_version.update({cpe_str_no_version: item})\n\n    def find_partial(self, cpe_str):\n        cpe_str_no_version = CPE.no_version(cpe_str)\n        if cpe_str_no_version in self.all_cpes_no_version:\n            return cpe_str_no_version\n\n    def find_partial_obj(self, cpe_str):\n        cpe_str_no_version = CPE.no_version(cpe_str)\n        if cpe_str_no_version in self.all_cpes_no_version:\n            return self.all_cpes_no_version[cpe_str_no_version]\n\n    def find_partial_latest_version(self, cpe_str_partial):\n        cpe_obj = self.find_partial_obj(cpe_str_partial)\n        return cpe_obj.cpe_cur_ver\n\n    def find(self, cpe_str):\n        if self.find_partial(cpe_str):\n            if cpe_str in self.all_cpes:\n                return cpe_str\n\n    def gen_update_xml(self, cpe_str):\n        cpe = self.find_partial_obj(cpe_str)\n        return cpe.update_xml_dict()\n"
  },
  {
    "path": "support/scripts/cve.py",
    "content": "#!/usr/bin/env python3\n\n# Copyright (C) 2009 by Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n# Copyright (C) 2020 by Gregory CLEMENT <gregory.clement@bootlin.com>\n#\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 2 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n# General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n\nimport datetime\nimport os\nimport requests  # URL checking\nimport distutils.version\nimport time\nimport gzip\nimport sys\nimport operator\n\ntry:\n    import ijson\n    # backend is a module in < 2.5, a string in >= 2.5\n    if 'python' in getattr(ijson.backend, '__name__', ijson.backend):\n        try:\n            import ijson.backends.yajl2_cffi as ijson\n        except ImportError:\n            sys.stderr.write('Warning: Using slow ijson python backend\\n')\nexcept ImportError:\n    sys.stderr.write(\"You need ijson to parse NVD for CVE check\\n\")\n    exit(1)\n\nsys.path.append('utils/')\n\nNVD_START_YEAR = 2002\nNVD_JSON_VERSION = \"1.1\"\nNVD_BASE_URL = \"https://nvd.nist.gov/feeds/json/cve/\" + NVD_JSON_VERSION\n\nops = {\n    '>=': operator.ge,\n    '>': operator.gt,\n    '<=': operator.le,\n    '<': operator.lt,\n    '=': operator.eq\n}\n\n\n# Check if two CPE IDs match each other\ndef cpe_matches(cpe1, cpe2):\n    cpe1_elems = cpe1.split(\":\")\n    cpe2_elems = cpe2.split(\":\")\n\n    remains = filter(lambda x: x[0] not in [\"*\", \"-\"] and x[1] not in [\"*\", \"-\"] and x[0] != x[1],\n                     zip(cpe1_elems, cpe2_elems))\n    return len(list(remains)) == 0\n\n\ndef cpe_product(cpe):\n    return cpe.split(':')[4]\n\n\ndef cpe_version(cpe):\n    return cpe.split(':')[5]\n\n\nclass CVE:\n    \"\"\"An accessor class for CVE Items in NVD files\"\"\"\n    CVE_AFFECTS = 1\n    CVE_DOESNT_AFFECT = 2\n    CVE_UNKNOWN = 3\n\n    def __init__(self, nvd_cve):\n        \"\"\"Initialize a CVE from its NVD JSON representation\"\"\"\n        self.nvd_cve = nvd_cve\n\n    @staticmethod\n    def download_nvd_year(nvd_path, year):\n        metaf = \"nvdcve-%s-%s.meta\" % (NVD_JSON_VERSION, year)\n        path_metaf = os.path.join(nvd_path, metaf)\n        jsonf_gz = \"nvdcve-%s-%s.json.gz\" % (NVD_JSON_VERSION, year)\n        path_jsonf_gz = os.path.join(nvd_path, jsonf_gz)\n\n        # If the database file is less than a day old, we assume the NVD data\n        # locally available is recent enough.\n        if os.path.exists(path_jsonf_gz) and os.stat(path_jsonf_gz).st_mtime >= time.time() - 86400:\n            return path_jsonf_gz\n\n        # If not, we download the meta file\n        url = \"%s/%s\" % (NVD_BASE_URL, metaf)\n        print(\"Getting %s\" % url)\n        page_meta = requests.get(url)\n        page_meta.raise_for_status()\n\n        # If the meta file already existed, we compare the existing\n        # one with the data newly downloaded. If they are different,\n        # we need to re-download the database.\n        # If the database does not exist locally, we need to redownload it in\n        # any case.\n        if os.path.exists(path_metaf) and os.path.exists(path_jsonf_gz):\n            meta_known = open(path_metaf, \"r\").read()\n            if page_meta.text == meta_known:\n                return path_jsonf_gz\n\n        # Grab the compressed JSON NVD, and write files to disk\n        url = \"%s/%s\" % (NVD_BASE_URL, jsonf_gz)\n        print(\"Getting %s\" % url)\n        page_json = requests.get(url)\n        page_json.raise_for_status()\n        open(path_jsonf_gz, \"wb\").write(page_json.content)\n        open(path_metaf, \"w\").write(page_meta.text)\n        return path_jsonf_gz\n\n    @classmethod\n    def read_nvd_dir(cls, nvd_dir):\n        \"\"\"\n        Iterate over all the CVEs contained in NIST Vulnerability Database\n        feeds since NVD_START_YEAR. If the files are missing or outdated in\n        nvd_dir, a fresh copy will be downloaded, and kept in .json.gz\n        \"\"\"\n        for year in range(NVD_START_YEAR, datetime.datetime.now().year + 1):\n            filename = CVE.download_nvd_year(nvd_dir, year)\n            try:\n                content = ijson.items(gzip.GzipFile(filename), 'CVE_Items.item')\n            except:  # noqa: E722\n                print(\"ERROR: cannot read %s. Please remove the file then rerun this script\" % filename)\n                raise\n            for cve in content:\n                yield cls(cve)\n\n    def each_product(self):\n        \"\"\"Iterate over each product section of this cve\"\"\"\n        for vendor in self.nvd_cve['cve']['affects']['vendor']['vendor_data']:\n            for product in vendor['product']['product_data']:\n                yield product\n\n    def parse_node(self, node):\n        \"\"\"\n        Parse the node inside the configurations section to extract the\n        cpe information usefull to know if a product is affected by\n        the CVE. Actually only the product name and the version\n        descriptor are needed, but we also provide the vendor name.\n        \"\"\"\n\n        # The node containing the cpe entries matching the CVE can also\n        # contain sub-nodes, so we need to manage it.\n        for child in node.get('children', ()):\n            for parsed_node in self.parse_node(child):\n                yield parsed_node\n\n        for cpe in node.get('cpe_match', ()):\n            if not cpe['vulnerable']:\n                return\n            product = cpe_product(cpe['cpe23Uri'])\n            version = cpe_version(cpe['cpe23Uri'])\n            # ignore when product is '-', which means N/A\n            if product == '-':\n                return\n            op_start = ''\n            op_end = ''\n            v_start = ''\n            v_end = ''\n\n            if version != '*' and version != '-':\n                # Version is defined, this is a '=' match\n                op_start = '='\n                v_start = version\n            else:\n                # Parse start version, end version and operators\n                if 'versionStartIncluding' in cpe:\n                    op_start = '>='\n                    v_start = cpe['versionStartIncluding']\n\n                if 'versionStartExcluding' in cpe:\n                    op_start = '>'\n                    v_start = cpe['versionStartExcluding']\n\n                if 'versionEndIncluding' in cpe:\n                    op_end = '<='\n                    v_end = cpe['versionEndIncluding']\n\n                if 'versionEndExcluding' in cpe:\n                    op_end = '<'\n                    v_end = cpe['versionEndExcluding']\n\n            yield {\n                'id': cpe['cpe23Uri'],\n                'v_start': v_start,\n                'op_start': op_start,\n                'v_end': v_end,\n                'op_end': op_end\n            }\n\n    def each_cpe(self):\n        for node in self.nvd_cve['configurations']['nodes']:\n            for cpe in self.parse_node(node):\n                yield cpe\n\n    @property\n    def identifier(self):\n        \"\"\"The CVE unique identifier\"\"\"\n        return self.nvd_cve['cve']['CVE_data_meta']['ID']\n\n    @property\n    def affected_products(self):\n        \"\"\"The set of CPE products referred by this CVE definition\"\"\"\n        return set(cpe_product(p['id']) for p in self.each_cpe())\n\n    def affects(self, name, version, cve_ignore_list, cpeid=None):\n        \"\"\"\n        True if the Buildroot Package object passed as argument is affected\n        by this CVE.\n        \"\"\"\n        if self.identifier in cve_ignore_list:\n            return self.CVE_DOESNT_AFFECT\n\n        pkg_version = distutils.version.LooseVersion(version)\n        if not hasattr(pkg_version, \"version\"):\n            print(\"Cannot parse package '%s' version '%s'\" % (name, version))\n            pkg_version = None\n\n        # if we don't have a cpeid, build one based on name and version\n        if not cpeid:\n            cpeid = \"cpe:2.3:*:*:%s:%s:*:*:*:*:*:*:*\" % (name, version)\n        # if we have a cpeid, use its version instead of the package\n        # version, as they might be different due to\n        # <pkg>_CPE_ID_VERSION\n        else:\n            pkg_version = distutils.version.LooseVersion(cpe_version(cpeid))\n\n        for cpe in self.each_cpe():\n            if not cpe_matches(cpe['id'], cpeid):\n                continue\n            if not cpe['v_start'] and not cpe['v_end']:\n                return self.CVE_AFFECTS\n            if not pkg_version:\n                continue\n\n            if cpe['v_start']:\n                try:\n                    cve_affected_version = distutils.version.LooseVersion(cpe['v_start'])\n                    inrange = ops.get(cpe['op_start'])(pkg_version, cve_affected_version)\n                except TypeError:\n                    return self.CVE_UNKNOWN\n\n                # current package version is before v_start, so we're\n                # not affected by the CVE\n                if not inrange:\n                    continue\n\n            if cpe['v_end']:\n                try:\n                    cve_affected_version = distutils.version.LooseVersion(cpe['v_end'])\n                    inrange = ops.get(cpe['op_end'])(pkg_version, cve_affected_version)\n                except TypeError:\n                    return self.CVE_UNKNOWN\n\n                # current package version is after v_end, so we're\n                # not affected by the CVE\n                if not inrange:\n                    continue\n\n            # We're in the version range affected by this CVE\n            return self.CVE_AFFECTS\n\n        return self.CVE_DOESNT_AFFECT\n"
  },
  {
    "path": "support/scripts/eclipse-register-toolchain",
    "content": "#!/bin/sh\n\n# This script registers the toolchain of a Buildroot project into the\n# Eclipse plugin. To do so, it adds a new line for the Buildroot\n# toolchain into the $HOME/.buildroot-eclipse.toolchains file, which\n# the Eclipse Buildroot plugin reads to discover automatically the\n# available Buildroot toolchains on the system.\n#\n# This script should typically not be called manually. Instead, one\n# should enable the BR2_ECLIPSE_REGISTER configuration option, which\n# will lead Buildroot to automatically call this script with the\n# appropriate arguments.\n#\n# Usage:\n#  eclipse-register-toolchain project-directory toolchain-prefix architecture\n#\n#   project-directory is the absolute path to the Buildroot project\n#   output directory (which contains the host/, target/, build/,\n#   images/, etc. subdirectories). It should be an absolute and\n#   canonical path.\n#\n#   toolchain-prefix is the prefix of the cross-compilation tools, i.e\n#   'arm-linux-' if the cross-compiler executable is 'arm-linux-gcc'.\n#\n#   architecture is the lower-cased name of the architecture targetted\n#   by the Buildroot project.\n\nif test $# -ne 3; then\n    echo \"Invalid number of arguments.\"\n    echo \"Usage: $0 project-directory toolchain-prefix architecture\"\n    exit 1\nfi\n\nproject_directory=$1\ntoolchain_prefix=$2\narchitecture=$3\n\nif test ! -d ${project_directory} ; then\n    echo \"Non-existing project directory ${project_directory}\"\n    exit 1\nfi\n\nif test ! -d ${project_directory}/host ; then\n    echo \"Your project directory does not look like a Buildroot output\"\n    exit 1\nfi\n\nif test ! -e ${project_directory}/host/bin/${toolchain_prefix}gcc ; then\n    echo \"Cannot find the cross-compiler in the project directory\"\n    exit 1\nfi\n\nTOOLCHAIN_ECLIPSE_FILE=${HOME}/.buildroot-eclipse.toolchains\n\n# First, we remove all lines from the ${TOOLCHAIN_ECLISPE_FILE} that\n# correspond to toolchains that no longer exist.\nif test -f ${TOOLCHAIN_ECLIPSE_FILE} ; then\n    mv ${TOOLCHAIN_ECLIPSE_FILE} ${TOOLCHAIN_ECLIPSE_FILE}.tmp\n    cat ${TOOLCHAIN_ECLIPSE_FILE}.tmp | while read toolchain ; do\n\tpath=$(echo ${toolchain} | cut -f1 -d ':')\n        # Filter lines corresponding to still existing projects\n\techo \"Testing ${path} ...\"\n\tif ! test -d ${path} ; then\n\t    continue\n\tfi\n\t# .. and the current project\n\tif test ${path} = ${project_directory} ; then\n\t    continue\n\tfi\n\techo ${toolchain} >> ${TOOLCHAIN_ECLIPSE_FILE}\n    done\n    rm ${TOOLCHAIN_ECLIPSE_FILE}.tmp\nfi\n\n# Add the toolchain\necho \"${project_directory}:${toolchain_prefix}:${architecture}\" >> ${TOOLCHAIN_ECLIPSE_FILE}\n"
  },
  {
    "path": "support/scripts/expunge-gconv-modules",
    "content": "#!/usr/bin/env bash\n\n# This script is used to generate a gconv-modules file that takes into\n# account only the gconv modules installed by Buildroot. It receives\n# on its standard input the original complete gconv-modules file from\n# the toolchain, and as arguments the list of gconv modules that were\n# actually installed, and writes on its standard output the new\n# gconv-modules file.\n\n# The format of gconv-modules is precisely documented in the\n# file itself. It consists of two different directives:\n#   module  FROMSET  TOSET  FILENAME  COST\n#   alias   ALIAS  REALNAME\n# and that's what this script parses and generates.\n#\n# There are two kinds of 'module' directives:\n#   - the first defines conversion of a charset to/from INTERNAL representation\n#   - the second defines conversion of a charset to/from another charset\n# we handle each with slightly different code, since the second never has\n# associated aliases.\n\ngawk -v files=\"${1}\" '\n$1 == \"alias\" {\n    aliases[$3] = aliases[$3] \" \" $2;\n}\n$1 == \"module\" && $2 != \"INTERNAL\" && $3 == \"INTERNAL\" {\n    file2internals[$4] = file2internals[$4] \" \" $2;\n    mod2cost[$2] = $5;\n}\n$1 == \"module\" && $2 != \"INTERNAL\" && $3 != \"INTERNAL\" {\n    file2cset[$4] = file2cset[$4] \" \" $2 \":\" $3;\n    mod2cost[$2] = $5;\n}\n\nEND {\n    nb_files = split(files, all_files);\n    for(f = 1; f <= nb_files; f++) {\n        file = all_files[f];\n        printf(\"# Modules and aliases for: %s\\n\", file);\n        nb_mods = split(file2internals[file], mods);\n        for(i = 1; i <= nb_mods; i++) {\n            nb_aliases = split(aliases[mods[i]], mod_aliases);\n            for(j = 1; j <= nb_aliases; j++) {\n                printf(\"alias\\t%s\\t%s\\n\", mod_aliases[j], mods[i]);\n            }\n            printf(\"module\\t%s\\t%s\\t%s\\t%d\\n\", mods[i], \"INTERNAL\", file, mod2cost[mods[i]]);\n            printf(\"module\\t%s\\t%s\\t%s\\t%d\\n\", \"INTERNAL\", mods[i], file, mod2cost[mods[i]]);\n            printf(\"\\n\" );\n        }\n        printf(\"%s\", nb_mods != 0 ? \"\\n\" : \"\");\n        nb_csets = split(file2cset[file], csets);\n        for(i = 1; i <= nb_csets; i++) {\n            split(csets[i], cs, \":\");\n            printf(\"module\\t%s\\t%s\\t%s\\t%d\\n\", cs[1], cs[2], file, mod2cost[cs[1]]);\n        }\n        printf(\"%s\", nb_csets != 0 ? \"\\n\\n\" : \"\");\n    }\n}\n'\n"
  },
  {
    "path": "support/scripts/fix-configure-powerpc64.sh",
    "content": "#!/usr/bin/env bash\n\n# This is a script to find, and correct, a problem with old versions of\n# configure that affect powerpc64 and powerpc64le.\n\n# The issue causes configure to incorrectly determine that shared library\n# support is not present in the linker. This causes the package to build a\n# static library rather than a dynamic one and although the build will succeed,\n# it may cause packages that link with the static library it to fail due to\n# undefined symbols.\n\n# This script searches for files named 'configure' that appear to have this\n# issue (by searching for a known bad pattern) and patching them.\n\nset -e\n\nif [ $# -ne 1 ]; then\n\techo \"Usage: $0 <package build directory>\"\n\texit 2\nfi\n\nsrcdir=\"$1\"\nfiles=$(cd \"$srcdir\" && find . -name configure \\\n-exec grep -qF 'Generated by GNU Autoconf' {} \\; \\\n-exec grep -qF 'ppc*-*linux*|powerpc*-*linux*)' {} \\; -print)\n\n# --ignore-whitespace is needed because some packages have included\n# copies of configure scripts where tabs have been replaced with spaces.\nfor c in $files; do\n\tpatch --ignore-whitespace \"$srcdir\"/\"$c\" <<'EOF'\n--- a/configure\t2016-11-16 15:31:46.097447271 +1100\n+++ b/configure\t2008-07-21 12:17:23.000000000 +1000\n@@ -4433,7 +4433,10 @@\n         x86_64-*linux*)\n           LD=\"${LD-ld} -m elf_x86_64\"\n           ;;\n-        ppc*-*linux*|powerpc*-*linux*)\n+\t  powerpcle-*linux*)\n+\t    LD=\"${LD-ld} -m elf64lppc\"\n+\t    ;;\n+\t  powerpc-*linux*)\n           LD=\"${LD-ld} -m elf64ppc\"\n           ;;\n         s390*-*linux*)\nEOF\ndone\n\n"
  },
  {
    "path": "support/scripts/fix-rpath",
    "content": "#!/usr/bin/env bash\n\n# Copyright (C) 2016 Samuel Martin <s.martin49@gmail.com>\n# Copyright (C) 2017 Wolfgang Grandegger <wg@grandegger.com>\n#\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 2 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n# General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n\nusage() {\n  cat <<EOF >&2\nUsage:  ${0} TREE_KIND\n\nDescription:\n\n    This script scans a tree and sanitize ELF files' RPATH found in there.\n\n    Sanitization behaves the same whatever the kind of the processed tree,\n    but the resulting RPATH differs. The rpath sanitization is done using\n    \"patchelf --make-rpath-relative\".\n\nArguments:\n\n    TREE_KIND    Kind of tree to be processed.\n                 Allowed values: host, target, staging\n\nEnvironment:\n\n    PATCHELF     patchelf program to use\n                 (default: HOST_DIR/bin/patchelf)\n\n    HOST_DIR     host directory\n    STAGING_DIR  staging directory\n    TARGET_DIR   target directory\n\n    TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR\n                 (default HOST_DIR/opt/ext-toolchain)\n\nReturns:         0 if success or 1 in case of error\n\nEOF\n}\n\n: ${PATCHELF:=${HOST_DIR}/bin/patchelf}\n\n# ELF files should not be in these sub-directories\nHOST_EXCLUDEPATHS=\"/share/terminfo\"\nSTAGING_EXCLUDEPATHS=\"/usr/include /usr/share/terminfo\"\nTARGET_EXCLUDEPATHS=\"/lib/firmware\"\n\nmain() {\n    local rootdir\n    local tree=\"${1}\"\n    local find_args=( )\n    local sanitize_extra_args=( )\n\n    if ! \"${PATCHELF}\" --version > /dev/null 2>&1; then\n\techo \"Error: can't execute patchelf utility '${PATCHELF}'\"\n\texit 1\n    fi\n\n    case \"${tree}\" in\n        host)\n            rootdir=\"${HOST_DIR}\"\n\n            # do not process the sysroot (only contains target binaries)\n            find_args+=( \"-path\" \"${STAGING_DIR}\" \"-prune\" \"-o\" )\n\n            # do not process the external toolchain installation directory to\n            # avoid breaking it.\n            test \"${TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR}\" != \"\" && \\\n                find_args+=( \"-path\" \"${TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR}\" \"-prune\" \"-o\" )\n\n            for excludepath in ${HOST_EXCLUDEPATHS}; do\n                find_args+=( \"-path\" \"${HOST_DIR}\"\"${excludepath}\" \"-prune\" \"-o\" )\n            done\n\n            # do not process the patchelf binary but a copy to work-around \"file in use\"\n            find_args+=( \"-path\" \"${PATCHELF}\" \"-prune\" \"-o\" )\n            cp \"${PATCHELF}\" \"${PATCHELF}.__to_be_patched\"\n\n            # we always want $ORIGIN-based rpaths to make it relocatable.\n            sanitize_extra_args+=( \"--relative-to-file\" )\n            ;;\n\n        staging)\n            rootdir=\"${STAGING_DIR}\"\n\n            # ELF files should not be in these sub-directories\n            for excludepath in ${STAGING_EXCLUDEPATHS}; do\n                find_args+=( \"-path\" \"${STAGING_DIR}\"\"${excludepath}\" \"-prune\" \"-o\" )\n            done\n\n            # should be like for the target tree below\n            sanitize_extra_args+=( \"--no-standard-lib-dirs\" )\n            ;;\n\n        target)\n            rootdir=\"${TARGET_DIR}\"\n\n            for excludepath in ${TARGET_EXCLUDEPATHS}; do\n                find_args+=( \"-path\" \"${TARGET_DIR}\"\"${excludepath}\" \"-prune\" \"-o\" )\n            done\n\n            # we don't want $ORIGIN-based rpaths but absolute paths without rootdir.\n            # we also want to remove rpaths pointing to /lib or /usr/lib.\n            sanitize_extra_args+=( \"--no-standard-lib-dirs\" )\n            ;;\n\n        *)\n            usage\n            exit 1\n            ;;\n    esac\n\n    find_args+=( \"-type\" \"f\" \"-print\" )\n\n    while read file ; do\n        # check if it's an ELF file\n        rpath=$(${PATCHELF} --print-rpath \"${file}\" 2>&1)\n        if test $? -ne 0 ; then\n            continue\n        fi\n\n        # make files writable if necessary\n        changed=$(chmod -c u+w \"${file}\")\n\n        # With per-package directory support, most RPATH of host\n        # binaries will point to per-package directories. This won't\n        # work with the --make-rpath-relative ${rootdir} invocation as\n        # the per-package host directory is not within ${rootdir}. So,\n        # we rewrite all RPATHs pointing to per-package directories so\n        # that they point to the global host directry.\n        changed_rpath=$(echo ${rpath} | sed \"s@${PER_PACKAGE_DIR}/[^/]\\+/host@${HOST_DIR}@\")\n        if test \"${rpath}\" != \"${changed_rpath}\" ; then\n            ${PATCHELF} --set-rpath ${changed_rpath} \"${file}\"\n        fi\n\n        # call patchelf to sanitize the rpath\n        ${PATCHELF} --make-rpath-relative \"${rootdir}\" ${sanitize_extra_args[@]} \"${file}\"\n        # restore the original permission\n        test \"${changed}\" != \"\" && chmod u-w \"${file}\"\n    done < <(find \"${rootdir}\" ${find_args[@]})\n\n    # Restore patched patchelf utility\n    test \"${tree}\" = \"host\" && mv \"${PATCHELF}.__to_be_patched\" \"${PATCHELF}\"\n\n    # ignore errors\n    return 0\n}\n\nmain ${@}\n"
  },
  {
    "path": "support/scripts/gen-bootlin-toolchains",
    "content": "#!/usr/bin/env python3\n\nimport os.path\nimport re\nimport requests\nimport textwrap\n\nBASE_URL = \"https://toolchains.bootlin.com/downloads/releases/toolchains\"\n\nAUTOGENERATED_COMMENT = \"\"\"# This file was auto-generated by support/scripts/gen-bootlin-toolchains\n# Do not edit\n\"\"\"\n\n# In the below dict:\n\n# - 'conditions' indicate the cumulative conditions under which the\n#   toolchain will be made available. In several situations, a given\n#   toolchain is usable on several architectures variants (for\n#   example, an ARMv6 toolchain can be used on ARMv7)\n# - 'test_options' indicate one specific configuration where the\n#   toolchain can be used. It is used to create the runtime test\n#   cases. If 'test_options' does not exist, the code assumes it can\n#   be made equal to 'conditions'\n# - 'prefix' is the prefix of the cross-compilation toolchain tools\n\narches = {\n    'aarch64': {\n        'conditions': ['BR2_aarch64'],\n        'prefix': 'aarch64',\n    },\n    'aarch64be': {\n        'conditions': ['BR2_aarch64_be'],\n        'prefix': 'aarch64_be',\n    },\n    'arcle-750d': {\n        'conditions': ['BR2_arcle', 'BR2_arc750d'],\n        'prefix': 'arc',\n    },\n    'arcle-hs38': {\n        'conditions': ['BR2_arcle', 'BR2_archs38'],\n        'prefix': 'arc',\n    },\n    'armv5-eabi': {\n        'conditions': ['BR2_ARM_CPU_ARMV5', 'BR2_ARM_EABI'],\n        'test_options': ['BR2_arm', 'BR2_arm926t', 'BR2_ARM_EABI'],\n        'prefix': 'arm',\n    },\n    'armv6-eabihf': {\n        'conditions': ['BR2_ARM_CPU_ARMV6', 'BR2_ARM_EABIHF'],\n        'test_options': ['BR2_arm', 'BR2_arm1176jzf_s', 'BR2_ARM_EABIHF'],\n        'prefix': 'arm',\n    },\n    'armv7-eabihf': {\n        'conditions': ['BR2_ARM_CPU_ARMV7A', 'BR2_ARM_EABIHF'],\n        'test_options': ['BR2_arm', 'BR2_cortex_a8', 'BR2_ARM_EABIHF'],\n        'prefix': 'arm',\n    },\n    'armv7m': {\n        'conditions': ['BR2_ARM_CPU_ARMV7M'],\n        'test_options': ['BR2_arm', 'BR2_cortex_m4'],\n        'prefix': 'arm',\n    },\n    'm68k-68xxx': {\n        'conditions': ['BR2_m68k_m68k'],\n        'test_options': ['BR2_m68k', 'BR2_m68k_68040'],\n        'prefix': 'm68k',\n    },\n    'm68k-coldfire': {\n        'conditions': ['BR2_m68k_cf'],\n        'test_options': ['BR2_m68k', 'BR2_m68k_cf5208'],\n        'prefix': 'm68k',\n    },\n    'microblazebe': {\n        'conditions': ['BR2_microblazebe'],\n        'prefix': 'microblaze',\n    },\n    'microblazeel': {\n        'conditions': ['BR2_microblazeel'],\n        'prefix': 'microblazeel',\n    },\n    'mips32': {\n        # Not sure it could be used by other mips32 variants?\n        'conditions': ['BR2_mips', 'BR2_mips_32', '!BR2_MIPS_SOFT_FLOAT'],\n        'prefix': 'mips',\n    },\n    'mips32el': {\n        # Not sure it could be used by other mips32el variants?\n        'conditions': ['BR2_mipsel', 'BR2_mips_32', '!BR2_MIPS_SOFT_FLOAT'],\n        'prefix': 'mipsel',\n    },\n    'mips32r5el': {\n        'conditions': ['BR2_mipsel', 'BR2_mips_32r5', '!BR2_MIPS_SOFT_FLOAT'],\n        'prefix': 'mipsel',\n    },\n    'mips32r6el': {\n        'conditions': ['BR2_mipsel', 'BR2_mips_32r6', '!BR2_MIPS_SOFT_FLOAT'],\n        'prefix': 'mipsel',\n    },\n    'mips64': {\n        # Not sure it could be used by other mips64 variants?\n        'conditions': ['BR2_mips64', 'BR2_mips_64', '!BR2_MIPS_SOFT_FLOAT'],\n        'prefix': 'mips64',\n    },\n    'mips64-n32': {\n        # Not sure it could be used by other mips64 variants?\n        'conditions': ['BR2_mips64', 'BR2_mips_64', 'BR2_MIPS_NABI32', '!BR2_MIPS_SOFT_FLOAT'],\n        'prefix': 'mips64',\n    },\n    'mips64el-n32': {\n        # Not sure it could be used by other mips64el variants?\n        'conditions': ['BR2_mips64el', 'BR2_mips_64', 'BR2_MIPS_NABI32', '!BR2_MIPS_SOFT_FLOAT'],\n        'prefix': 'mips64el',\n    },\n    'mips64r6el-n32': {\n        'conditions': ['BR2_mips64el', 'BR2_mips_64r6', 'BR2_MIPS_NABI32', '!BR2_MIPS_SOFT_FLOAT'],\n        'prefix': 'mips64el',\n    },\n    'nios2': {\n        'conditions': ['BR2_nios2'],\n        'prefix': 'nios2',\n    },\n    'openrisc': {\n        'conditions': ['BR2_or1k'],\n        'prefix': 'or1k',\n    },\n    'powerpc-440fp': {\n        # Not sure it could be used by other powerpc variants?\n        'conditions': ['BR2_powerpc', 'BR2_powerpc_440fp'],\n        'prefix': 'powerpc',\n    },\n    'powerpc-e300c3': {\n        # Not sure it could be used by other powerpc variants?\n        'conditions': ['BR2_powerpc', 'BR2_powerpc_e300c3'],\n        'prefix': 'powerpc',\n    },\n    'powerpc-e500mc': {\n        # Not sure it could be used by other powerpc variants?\n        'conditions': ['BR2_powerpc', 'BR2_powerpc_e500mc'],\n        'prefix': 'powerpc',\n    },\n    'powerpc64-e5500': {\n        'conditions': ['BR2_powerpc64', 'BR2_powerpc_e5500'],\n        'prefix': 'powerpc64',\n    },\n    'powerpc64-e6500': {\n        'conditions': ['BR2_powerpc64', 'BR2_powerpc_e6500'],\n        'prefix': 'powerpc64',\n    },\n    'powerpc64-power8': {\n        'conditions': ['BR2_powerpc64', 'BR2_powerpc_power8'],\n        'prefix': 'powerpc64',\n    },\n    'powerpc64le-power8': {\n        'conditions': ['BR2_powerpc64le', 'BR2_powerpc_power8'],\n        'prefix': 'powerpc64le',\n    },\n    'riscv32-ilp32d': {\n        'conditions': ['BR2_riscv', 'BR2_riscv_g', 'BR2_RISCV_32', 'BR2_RISCV_ABI_ILP32D'],\n        'prefix': 'riscv32',\n    },\n    'riscv64': {\n        'conditions': ['BR2_riscv', 'BR2_riscv_g', 'BR2_RISCV_64', 'BR2_RISCV_ABI_LP64'],\n        'prefix': 'riscv64',\n    },\n    'sh-sh4': {\n        'conditions': ['BR2_sh', 'BR2_sh4'],\n        'prefix': 'sh4',\n    },\n    'sh-sh4aeb': {\n        'conditions': ['BR2_sh', 'BR2_sh4aeb'],\n        'prefix': 'sh4aeb',\n    },\n    'sparc64': {\n        'conditions': ['BR2_sparc64', 'BR2_sparc_v9'],\n        'prefix': 'sparc64',\n    },\n    'sparcv8': {\n        'conditions': ['BR2_sparc', 'BR2_sparc_v8'],\n        'prefix': 'sparc',\n    },\n    'x86-64-core-i7': {\n        'conditions': ['BR2_x86_64',\n                       'BR2_X86_CPU_HAS_MMX',\n                       'BR2_X86_CPU_HAS_SSE',\n                       'BR2_X86_CPU_HAS_SSE2',\n                       'BR2_X86_CPU_HAS_SSE3',\n                       'BR2_X86_CPU_HAS_SSSE3',\n                       'BR2_X86_CPU_HAS_SSE4',\n                       'BR2_X86_CPU_HAS_SSE42'],\n        'test_options': ['BR2_x86_64', 'BR2_x86_corei7'],\n        'prefix': 'x86_64',\n    },\n    'x86-core2': {\n        'conditions': ['BR2_i386',\n                       'BR2_X86_CPU_HAS_MMX',\n                       'BR2_X86_CPU_HAS_SSE',\n                       'BR2_X86_CPU_HAS_SSE2',\n                       'BR2_X86_CPU_HAS_SSE3',\n                       'BR2_X86_CPU_HAS_SSSE3'],\n        'test_options': ['BR2_i386', 'BR2_x86_core2'],\n        'prefix': 'i686',\n    },\n    'x86-i686': {\n        'conditions': ['BR2_i386',\n                       '!BR2_x86_i486',\n                       '!BR2_x86_i586',\n                       '!BR2_x86_x1000'],\n        'test_options': ['BR2_i386',\n                         'BR2_x86_i686'],\n        'prefix': 'i686',\n    },\n    'xtensa-lx60': {\n        'conditions': ['BR2_xtensa', 'BR2_XTENSA_CUSTOM', 'BR2_XTENSA_LITTLE_ENDIAN'],\n        'prefix': 'xtensa',\n    },\n}\n\n\nclass Toolchain:\n    def __init__(self, arch, libc, variant, version):\n        self.arch = arch\n        self.libc = libc\n        self.variant = variant\n        self.version = version\n        self.fname_prefix = \"%s--%s--%s-%s\" % (self.arch, self.libc, self.variant, self.version)\n        self.option_name = \"BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_%s_%s_%s\" % \\\n            (self.arch.replace(\"-\", \"_\").upper(), self.libc.upper(), self.variant.replace(\"-\", \"_\").upper())\n        self.fragment = requests.get(self.fragment_url).text.split(\"\\n\")\n        self.sha256 = requests.get(self.hash_url).text.split(\" \")[0]\n\n    @property\n    def tarball_url(self):\n        return os.path.join(BASE_URL, self.arch, \"tarballs\",\n                            self.fname_prefix + \".tar.bz2\")\n\n    @property\n    def hash_url(self):\n        return os.path.join(BASE_URL, self.arch, \"tarballs\",\n                            self.fname_prefix + \".sha256\")\n\n    @property\n    def fragment_url(self):\n        return os.path.join(BASE_URL, self.arch, \"fragments\",\n                            self.fname_prefix + \".frag\")\n\n    def gen_config_in_options(self, f):\n        f.write(\"config %s\\n\" % self.option_name)\n        f.write(\"\\tbool \\\"%s %s %s %s\\\"\\n\" %\n                (self.arch, self.libc, self.variant, self.version))\n        depends = []\n        selects = []\n\n        for c in arches[self.arch]['conditions']:\n            depends.append(c)\n\n        for frag in self.fragment:\n            # libc type\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC\"):\n                selects.append(\"BR2_TOOLCHAIN_EXTERNAL_UCLIBC\")\n            elif frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC\"):\n                # glibc needs mmu support\n                depends.append(\"BR2_USE_MMU\")\n                # glibc doesn't support static only configuration\n                depends.append(\"!BR2_STATIC_LIBS\")\n                selects.append(\"BR2_TOOLCHAIN_EXTERNAL_GLIBC\")\n            elif frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL\"):\n                # musl needs mmu support\n                depends.append(\"BR2_USE_MMU\")\n                selects.append(\"BR2_TOOLCHAIN_EXTERNAL_MUSL\")\n\n            # gcc version\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_GCC_\"):\n                m = re.match(\"^BR2_TOOLCHAIN_EXTERNAL_GCC_([0-9_]*)=y$\", frag)\n                assert m, \"Cannot get gcc version for toolchain %s\" % self.fname_prefix\n                selects.append(\"BR2_TOOLCHAIN_GCC_AT_LEAST_%s\" % m[1])\n\n            # kernel headers version\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_HEADERS_\"):\n                m = re.match(\"^BR2_TOOLCHAIN_EXTERNAL_HEADERS_([0-9_]*)=y$\", frag)\n                assert m, \"Cannot get kernel headers version for toolchain %s\" % self.fname_prefix\n                selects.append(\"BR2_TOOLCHAIN_HEADERS_AT_LEAST_%s\" % m[1])\n\n            # C++\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_CXX\"):\n                selects.append(\"BR2_INSTALL_LIBSTDCPP\")\n\n            # SSP\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_HAS_SSP\"):\n                selects.append(\"BR2_TOOLCHAIN_HAS_SSP\")\n\n            # wchar\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_WCHAR\"):\n                selects.append(\"BR2_USE_WCHAR\")\n\n            # locale\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_LOCALE\"):\n                # locale implies the availability of wchar\n                selects.append(\"BR2_USE_WCHAR\")\n                selects.append(\"BR2_ENABLE_LOCALE\")\n\n            # thread support\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS\"):\n                selects.append(\"BR2_TOOLCHAIN_HAS_THREADS\")\n\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG\"):\n                selects.append(\"BR2_TOOLCHAIN_HAS_THREADS_DEBUG\")\n\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL\"):\n                selects.append(\"BR2_TOOLCHAIN_HAS_THREADS_NPTL\")\n\n            # RPC\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_INET_RPC\"):\n                selects.append(\"BR2_TOOLCHAIN_HAS_NATIVE_RPC\")\n\n            # D language\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_DLANG\"):\n                selects.append(\"BR2_TOOLCHAIN_HAS_DLANG\")\n\n            # fortran\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_FORTRAN\"):\n                selects.append(\"BR2_TOOLCHAIN_HAS_FORTRAN\")\n\n            # OpenMP\n            if frag.startswith(\"BR2_TOOLCHAIN_EXTERNAL_OPENMP\"):\n                selects.append(\"BR2_TOOLCHAIN_HAS_OPENMP\")\n\n        for depend in depends:\n            f.write(\"\\tdepends on %s\\n\" % depend)\n\n        for select in selects:\n            f.write(\"\\tselect %s\\n\" % select)\n\n        f.write(\"\\thelp\\n\")\n\n        desc = \"Bootlin toolchain for the %s architecture, using the %s C library. \" % \\\n            (self.arch, self.libc)\n\n        if self.variant == \"stable\":\n            desc += \"This is a stable version, which means it is using stable and proven versions of gcc, gdb and binutils.\"\n        else:\n            desc += \"This is a bleeding-edge version, which means it is using the latest versions of gcc, gdb and binutils.\"\n\n        f.write(textwrap.fill(desc, width=62, initial_indent=\"\\t  \", subsequent_indent=\"\\t  \") + \"\\n\")\n        f.write(\"\\n\")\n        f.write(\"\\t  https://toolchains.bootlin.com/\\n\")\n\n        f.write(\"\\n\")\n\n    def gen_mk(self, f):\n        f.write(\"ifeq ($(%s),y)\\n\" % self.option_name)\n        f.write(\"TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = %s\\n\" % self.version)\n        f.write(\"TOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = %s--%s--%s-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\\n\" %\n                (self.arch, self.libc, self.variant))\n        f.write(\"TOOLCHAIN_EXTERNAL_BOOTLIN_SITE = %s\\n\" %\n                os.path.join(BASE_URL, self.arch, \"tarballs\"))\n        f.write(\"endif\\n\\n\")\n        pass\n\n    def gen_hash(self, f):\n        f.write(\"# From %s\\n\" % self.hash_url)\n        f.write(\"sha256  %s  %s\\n\" % (self.sha256, os.path.basename(self.tarball_url)))\n\n    def gen_test(self, f):\n        if self.variant == \"stable\":\n            variant = \"Stable\"\n        else:\n            variant = \"BleedingEdge\"\n        testname = \"TestExternalToolchainBootlin\" + \\\n            self.arch.replace(\"-\", \"\").capitalize() + \\\n            self.libc.capitalize() + variant\n        f.write(\"\\n\\n\")\n        f.write(\"class %s(TestExternalToolchain):\\n\" % testname)\n        f.write(\"    config = \\\"\\\"\\\"\\n\")\n        if 'test_options' in arches[self.arch]:\n            test_options = arches[self.arch]['test_options']\n        else:\n            test_options = arches[self.arch]['conditions']\n        for opt in test_options:\n            if opt.startswith(\"!\"):\n                f.write(\"        # %s is not set\\n\" % opt[1:])\n            else:\n                f.write(\"        %s=y\\n\" % opt)\n        f.write(\"        BR2_TOOLCHAIN_EXTERNAL=y\\n\")\n        f.write(\"        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\\n\")\n        f.write(\"        %s=y\\n\" % self.option_name)\n        f.write(\"        # BR2_TARGET_ROOTFS_TAR is not set\\n\")\n        f.write(\"        \\\"\\\"\\\"\\n\")\n        f.write(\"    toolchain_prefix = \\\"%s-linux\\\"\\n\" % arches[self.arch]['prefix'])\n        f.write(\"\\n\")\n        f.write(\"    def test_run(self):\\n\")\n        f.write(\"        TestExternalToolchain.common_check(self)\\n\")\n\n    def __repr__(self):\n        return \"Toolchain(arch=%s libc=%s variant=%s version=%s, option=%s)\" % \\\n            (self.arch, self.libc, self.variant, self.version, self.option_name)\n\n\ndef get_toolchains():\n    toolchains = list()\n    for arch, details in arches.items():\n        print(arch)\n        url = os.path.join(BASE_URL, arch, \"available_toolchains\")\n        page = requests.get(url).text\n        fnames = sorted(re.findall(r'<td><a href=\"(\\w[^\"]+)\"', page))\n        # This dict will allow us to keep only the latest version for\n        # each toolchain.\n        tmp = dict()\n        for fname in fnames:\n            parts = fname.split('--')\n            assert parts[0] == arch, \"Arch does not match: %s vs. %s\" % (parts[0], arch)\n            libc = parts[1]\n            if parts[2].startswith(\"stable-\"):\n                variant = \"stable\"\n                version = parts[2][len(\"stable-\"):]\n            elif parts[2].startswith(\"bleeding-edge-\"):\n                variant = \"bleeding-edge\"\n                version = parts[2][len(\"bleeding-edge-\"):]\n            tmp[(arch, libc, variant)] = version\n\n        toolchains += [Toolchain(k[0], k[1], k[2], v) for k, v in tmp.items()]\n\n    return toolchains\n\n\ndef gen_config_in_options(toolchains, fpath):\n    with open(fpath, \"w\") as f:\n        f.write(AUTOGENERATED_COMMENT)\n\n        f.write(\"config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCH_SUPPORTS\\n\")\n        f.write(\"\\tbool\\n\")\n        for arch, details in arches.items():\n            f.write(\"\\tdefault y if %s\\n\" % \" && \".join(details['conditions']))\n        f.write(\"\\n\")\n\n        f.write(\"if BR2_TOOLCHAIN_EXTERNAL_BOOTLIN\\n\\n\")\n\n        f.write(\"config BR2_TOOLCHAIN_EXTERNAL_PREFIX\\n\")\n        f.write(\"\\tdefault \\\"$(ARCH)-linux\\\"\\n\")\n\n        f.write(\"\\n\")\n\n        f.write(\"config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\\n\")\n        f.write(\"\\tdefault \\\"toolchain-external-bootlin\\\"\\n\")\n\n        f.write(\"\\n\")\n\n        f.write(\"choice\\n\")\n        f.write(\"\\tprompt \\\"Bootlin toolchain variant\\\"\\n\")\n\n        for toolchain in toolchains:\n            toolchain.gen_config_in_options(f)\n\n        f.write(\"endchoice\\n\")\n        f.write(\"endif\\n\")\n\n\ndef gen_mk(toolchains, fpath):\n    with open(fpath, \"w\") as f:\n        f.write(\"#\" * 80 + \"\\n\")\n        f.write(\"#\\n\")\n        f.write(\"# toolchain-external-bootlin\\n\")\n        f.write(\"#\\n\")\n        f.write(\"#\" * 80 + \"\\n\")\n        f.write(\"\\n\")\n        f.write(AUTOGENERATED_COMMENT)\n        for toolchain in toolchains:\n            toolchain.gen_mk(f)\n        f.write(\"$(eval $(toolchain-external-package))\\n\")\n\n\ndef gen_hash(toolchains, fpath):\n    with open(fpath, \"w\") as f:\n        f.write(AUTOGENERATED_COMMENT)\n        for toolchain in toolchains:\n            toolchain.gen_hash(f)\n\n\ndef gen_runtime_test(toolchains, fpath):\n    with open(fpath, \"w\") as f:\n        f.write(AUTOGENERATED_COMMENT)\n        f.write(\"from tests.toolchain.test_external import TestExternalToolchain\\n\")\n        for toolchain in toolchains:\n            toolchain.gen_test(f)\n\n\ndef gen_toolchains(toolchains):\n    maindir = \"toolchain/toolchain-external/toolchain-external-bootlin\"\n    gen_config_in_options(toolchains, os.path.join(maindir, \"Config.in.options\"))\n    gen_mk(toolchains, os.path.join(maindir, \"toolchain-external-bootlin.mk\"))\n    gen_hash(toolchains, os.path.join(maindir, \"toolchain-external-bootlin.hash\"))\n    gen_runtime_test(toolchains,\n                     os.path.join(\"support\", \"testing\", \"tests\", \"toolchain\", \"test_external_bootlin.py\"))\n\n\ntoolchains = get_toolchains()\ngen_toolchains(toolchains)\n"
  },
  {
    "path": "support/scripts/gen-missing-cpe",
    "content": "#!/usr/bin/env python3\n\nimport argparse\nimport sys\nimport json\nimport subprocess\nimport os\nfrom cpedb import CPEDB, CPE\n\n\ndef gen_update_xml_reports(cpeids, cpedb, output):\n    cpe_need_update = []\n\n    for cpe in cpeids:\n        result = cpedb.find(cpe)\n        if not result:\n            result = cpedb.find_partial(CPE.no_version(cpe))\n            if result:\n                cpe_need_update.append(cpe)\n            else:\n                print(\"WARNING: no match found for '%s'\" % cpe)\n\n    for cpe in cpe_need_update:\n        xml = cpedb.gen_update_xml(cpe)\n        fname = CPE.product(cpe) + '-' + CPE.version(cpe) + '.xml'\n        print(\"Generating %s\" % fname)\n        with open(os.path.join(output, fname), 'w+') as fp:\n            fp.write(xml)\n\n    print(\"Generated %d update files out of %d CPEs\" % (len(cpe_need_update), len(cpeids)))\n\n\ndef get_cpe_ids():\n    print(\"Getting list of CPE for enabled packages\")\n    cmd = [\"make\", \"--no-print-directory\", \"show-info\"]\n    js = json.loads(subprocess.check_output(cmd).decode(\"utf-8\"))\n    return set([v[\"cpe-id\"] for k, v in js.items() if \"cpe-id\" in v])\n\n\ndef resolvepath(path):\n    return os.path.abspath(os.path.expanduser(path))\n\n\ndef parse_args():\n    parser = argparse.ArgumentParser()\n    parser.add_argument('--output', dest='output',\n                        help='Path to the output CPE update files', type=resolvepath, required=True)\n    parser.add_argument('--nvd-path', dest='nvd_path',\n                        help='Path to the local NVD database', type=resolvepath, required=True)\n    return parser.parse_args()\n\n\ndef __main__():\n    args = parse_args()\n    if not os.path.isdir(args.output):\n        print(\"ERROR: output directory %s does not exist\" % args.output)\n        sys.exit(1)\n    cpedb = CPEDB(args.nvd_path)\n    cpedb.get_xml_dict()\n    cpeids = get_cpe_ids()\n    gen_update_xml_reports(cpeids, cpedb, args.output)\n\n\nif __name__ == \"__main__\":\n    __main__()\n"
  },
  {
    "path": "support/scripts/generate-gitlab-ci-yml",
    "content": "#!/usr/bin/env bash\nset -e\nset -o pipefail\n\nmain() {\n    local template=\"${1}\"\n\n    preamble \"${template}\"\n    gen_tests\n}\n\npreamble() {\n    local template=\"${1}\"\n\n    cat - \"${template}\" <<-_EOF_\n\t# This file is generated; do not edit!\n\t# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines\n\n\timage: ${CI_JOB_IMAGE}\n\n_EOF_\n}\n\ngen_tests() {\n    local -a basics defconfigs runtimes\n    local do_basics do_defconfigs do_runtime do_testpkg\n    local defconfigs_ext cfg tst\n\n    basics=( DEVELOPERS flake8 package )\n\n    defconfigs=( $(cd configs; LC_ALL=C ls -1 *_defconfig) )\n\n    runtimes=( $(./support/testing/run-tests -l 2>&1 \\\n                 | sed -r -e '/^test_run \\((.*)\\).*/!d; s//\\1/' \\\n                 | LC_ALL=C sort)\n             )\n\n    if [ -n \"${CI_COMMIT_TAG}\" ]; then\n        # When a tag is added to the Buildroot git tree, we want\n        # to run the runtime tests and only test Qemu defconfigs.\n        defconfigs=( $(cd configs; LC_ALL=C ls -1 qemu_*_defconfig) )\n        do_basics=true\n        do_defconfigs=base\n        do_runtime=true\n    elif [ \"${CI_PIPELINE_SOURCE}\" = \"trigger\" ]; then\n        case \"${BR_SCHEDULE_JOBS}\" in\n          (basic)\n            do_basics=true\n            do_defconfigs=check\n            defconfigs_ext=_check\n            ;;\n          (defconfig)\n            do_defconfigs=base\n            ;;\n          (runtime)\n            do_runtime=true\n            ;;\n        esac\n    else\n        case \"${CI_COMMIT_REF_NAME}\" in\n          (*-basics)\n            do_basics=true\n            do_defconfigs=check\n            defconfigs_ext=_check\n            ;;\n          (*-defconfigs)\n            do_defconfigs=base\n            ;;\n          (*-*_defconfig)\n            defconfigs=( \"${CI_COMMIT_REF_NAME##*-}\" )\n            do_defconfigs=base\n            ;;\n          (*-runtime-tests)\n            do_runtime=true\n            ;;\n          (*-tests.*)\n            runtimes=( $(./support/testing/run-tests -l 2>&1 \\\n                         | sed -r -e '/^test_run \\((.*)\\).*/!d; s//\\1/' \\\n                         | LC_ALL=C sort \\\n                         | grep \"^${CI_COMMIT_REF_NAME##*-}\")\n                     )\n            do_runtime=true\n            ;;\n        esac\n    fi\n\n    # Retrieve defconfig for test-pkg from the git commit message (if any)\n    if grep -q -E '^test-pkg config:$' <<<\"${CI_COMMIT_DESCRIPTION}\"; then\n        sed -r -n -e '/^test-pkg config:$/{:a;n;p;ba;}' \\\n            <<<\"${CI_COMMIT_DESCRIPTION}\" \\\n            >defconfig.frag\n        if [ ! -s defconfig.frag ]; then\n            printf \"Empty configuration fragment.\\n\" >&2; exit 1\n        fi\n        # Use --all since we expect the user having already pre-tested the\n        # new package with the default subset of toolchains.\n        ./utils/test-pkg \\\n            --all --prepare-only \\\n            --config-snippet defconfig.frag \\\n            --build-dir br-test-pkg >&2\n        do_testpkg=( $(ls -1 br-test-pkg/*/.config 2>/dev/null |xargs -r dirname ) )\n        if [ \"${#do_testpkg[@]}\" -eq 0 ]; then\n            printf \"Configuration fragment enables no test.\\n\" >&2; exit 1\n        fi\n    fi\n\n    # If nothing else, at least do the basics to generate a valid pipeline\n    if [    -z \"${do_defconfigs}\" \\\n         -a -z \"${do_runtime}\" \\\n         -a -z \"${do_testpkg}\" \\\n       ]\n    then\n        do_basics=true\n    fi\n\n    if ${do_basics:-false}; then\n        for tst in \"${basics[@]}\"; do\n            printf 'check-%s: { extends: .check-%s_base }\\n' \"${tst}\" \"${tst}\"\n        done\n    fi\n\n    if [ -n \"${do_defconfigs}\" ]; then\n        for cfg in \"${defconfigs[@]}\"; do\n            printf '%s%s: { extends: .defconfig_%s }\\n' \\\n                   \"${cfg}\" \"${defconfigs_ext}\" \"${do_defconfigs}\"\n        done\n    fi\n\n    if ${do_runtime:-false}; then\n        printf '%s: { extends: .runtime_test_base }\\n' \"${runtimes[@]}\"\n    fi\n\n    if [ -n \"${do_testpkg}\" ]; then\n        printf '%s: { extends: .test_pkg }\\n' \"${do_testpkg[@]}\"\n    fi\n}\n\nmain \"${@}\"\n"
  },
  {
    "path": "support/scripts/genimage.sh",
    "content": "#!/usr/bin/env bash\n\ndie() {\n  cat <<EOF >&2\nError: $@\n\nUsage: ${0} -c GENIMAGE_CONFIG_FILE\nEOF\n  exit 1\n}\n\n# Parse arguments and put into argument list of the script\nopts=\"$(getopt -n \"${0##*/}\" -o c: -- \"$@\")\" || exit $?\neval set -- \"$opts\"\n\nGENIMAGE_TMP=\"${BUILD_DIR}/genimage.tmp\"\n\nwhile true ; do\n\tcase \"$1\" in\n\t-c)\n\t  GENIMAGE_CFG=\"${2}\";\n\t  shift 2 ;;\n\t--) # Discard all non-option parameters\n\t  shift 1;\n\t  break ;;\n\t*)\n\t  die \"unknown option '${1}'\" ;;\n\tesac\ndone\n\n[ -n \"${GENIMAGE_CFG}\" ] || die \"Missing argument\"\n\n# Pass an empty rootpath. genimage makes a full copy of the given rootpath to\n# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk\n# space. We don't rely on genimage to build the rootfs image, just to insert a\n# pre-built one in the disk image.\n\ntrap 'rm -rf \"${ROOTPATH_TMP}\"' EXIT\nROOTPATH_TMP=\"$(mktemp -d)\"\n\nrm -rf \"${GENIMAGE_TMP}\"\n\ngenimage \\\n\t--rootpath \"${ROOTPATH_TMP}\"     \\\n\t--tmppath \"${GENIMAGE_TMP}\"    \\\n\t--inputpath \"${BINARIES_DIR}\"  \\\n\t--outputpath \"${BINARIES_DIR}\" \\\n\t--config \"${GENIMAGE_CFG}\"\n"
  },
  {
    "path": "support/scripts/graph-build-time",
    "content": "#!/usr/bin/env python3\n\n# Copyright (C) 2011 by Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n# Copyright (C) 2013 by Yann E. MORIN <yann.morin.1998@free.fr>\n#\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 2 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n# General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n\n# This script generates graphs of packages build time, from the timing\n# data generated by Buildroot in the $(O)/build-time.log file.\n#\n# Example usage:\n#\n#   cat $(O)/build-time.log | ./support/scripts/graph-build-time --type=histogram --output=foobar.pdf\n#\n# Three graph types are available :\n#\n#   * histogram, which creates an histogram of the build time for each\n#     package, decomposed by each step (extract, patch, configure,\n#     etc.). The order in which the packages are shown is\n#     configurable: by package name, by build order, or by duration\n#     order. See the --order option.\n#\n#   * pie-packages, which creates a pie chart of the build time of\n#     each package (without decomposition in steps). Packages that\n#     contributed to less than 1% of the overall build time are all\n#     grouped together in an \"Other\" entry.\n#\n#   * pie-steps, which creates a pie chart of the time spent globally\n#     on each step (extract, patch, configure, etc...)\n#\n# The default is to generate an histogram ordered by package name.\n#\n# Requirements:\n#\n#   * matplotlib (python-matplotlib on Debian/Ubuntu systems)\n#   * numpy (python-numpy on Debian/Ubuntu systems)\n#   * argparse (by default in Python 2.7, requires python-argparse if\n#     Python 2.6 is used)\n\nimport sys\n\ntry:\n    import matplotlib as mpl\n    import numpy\nexcept ImportError:\n    sys.stderr.write(\"You need python-matplotlib and python-numpy to generate build graphs\\n\")\n    exit(1)\n\n# Use the Agg backend (which produces a PNG output, see\n# http://matplotlib.org/faq/usage_faq.html#what-is-a-backend),\n# otherwise an incorrect backend is used on some host machines).\n# Note: matplotlib.use() must be called *before* matplotlib.pyplot.\nmpl.use('Agg')\n\nimport matplotlib.pyplot as plt       # noqa: E402\nimport matplotlib.font_manager as fm  # noqa: E402\nimport csv                            # noqa: E402\nimport argparse                       # noqa: E402\n\nsteps = ['download', 'extract', 'patch', 'configure', 'build',\n         'install-target', 'install-staging', 'install-images',\n         'install-host']\n\ndefault_colors = ['#8d02ff', '#e60004', '#009836', '#2e1d86', '#ffed00',\n                  '#0068b5', '#f28e00', '#940084', '#97c000']\n\nalternate_colors = ['#ffbe0a', '#96bdff', '#3f7f7f', '#ff0000', '#00c000',\n                    '#0080ff', '#c000ff', '#00eeee', '#e0e000']\n\n\nclass Package:\n    def __init__(self, name):\n        self.name = name\n        self.steps_duration = {}\n        self.steps_start = {}\n        self.steps_end = {}\n\n    def add_step(self, step, state, time):\n        if state == \"start\":\n            self.steps_start[step] = time\n        else:\n            self.steps_end[step] = time\n        if step in self.steps_start and step in self.steps_end:\n            self.steps_duration[step] = self.steps_end[step] - self.steps_start[step]\n\n    def get_duration(self, step=None):\n        if step is None:\n            duration = 0\n            for step in list(self.steps_duration.keys()):\n                duration += self.steps_duration[step]\n            return duration\n        if step in self.steps_duration:\n            return self.steps_duration[step]\n        return 0\n\n\n# Generate an histogram of the time spent in each step of each\n# package.\ndef pkg_histogram(data, output, order=\"build\"):\n    n_pkgs = len(data)\n    ind = numpy.arange(n_pkgs)\n\n    if order == \"duration\":\n        data = sorted(data, key=lambda p: p.get_duration(), reverse=True)\n    elif order == \"name\":\n        data = sorted(data, key=lambda p: p.name, reverse=False)\n\n    # Prepare the vals array, containing one entry for each step\n    vals = []\n    for step in steps:\n        val = []\n        for p in data:\n            val.append(p.get_duration(step))\n        vals.append(val)\n\n    bottom = [0] * n_pkgs\n    legenditems = []\n\n    plt.figure()\n\n    # Draw the bars, step by step\n    for i in range(0, len(vals)):\n        b = plt.bar(ind+0.1, vals[i], width=0.8, color=colors[i], bottom=bottom, linewidth=0.25)\n        legenditems.append(b[0])\n        bottom = [bottom[j] + vals[i][j] for j in range(0, len(vals[i]))]\n\n    # Draw the package names\n    plt.xticks(ind + .6, [p.name for p in data], rotation=-60, rotation_mode=\"anchor\", fontsize=8, ha='left')\n\n    # Adjust size of graph depending on the number of packages\n    # Ensure a minimal size twice as the default\n    # Magic Numbers do Magic Layout!\n    ratio = max(((n_pkgs + 10) / 48, 2))\n    borders = 0.1 / ratio\n    sz = plt.gcf().get_figwidth()\n    plt.gcf().set_figwidth(sz * ratio)\n\n    # Adjust space at borders, add more space for the\n    # package names at the bottom\n    plt.gcf().subplots_adjust(bottom=0.2, left=borders, right=1-borders)\n\n    # Remove ticks in the graph for each package\n    axes = plt.gcf().gca()\n    for line in axes.get_xticklines():\n        line.set_markersize(0)\n\n    axes.set_ylabel('Time (seconds)')\n\n    # Reduce size of legend text\n    leg_prop = fm.FontProperties(size=6)\n\n    # Draw legend\n    plt.legend(legenditems, steps, prop=leg_prop)\n\n    if order == \"name\":\n        plt.title('Build time of packages\\n')\n    elif order == \"build\":\n        plt.title('Build time of packages, by build order\\n')\n    elif order == \"duration\":\n        plt.title('Build time of packages, by duration order\\n')\n\n    # Save graph\n    plt.savefig(output)\n\n\n# Generate a pie chart with the time spent building each package.\ndef pkg_pie_time_per_package(data, output):\n    # Compute total build duration\n    total = 0\n    for p in data:\n        total += p.get_duration()\n\n    # Build the list of labels and values, and filter the packages\n    # that account for less than 1% of the build time.\n    labels = []\n    values = []\n    other_value = 0\n    for p in sorted(data, key=lambda p: p.get_duration()):\n        if p.get_duration() < (total * 0.01):\n            other_value += p.get_duration()\n        else:\n            labels.append(p.name)\n            values.append(p.get_duration())\n\n    labels.append('Other')\n    values.append(other_value)\n\n    plt.figure()\n\n    # Draw pie graph\n    patches, texts, autotexts = plt.pie(values, labels=labels,\n                                        autopct='%1.1f%%', shadow=True,\n                                        colors=colors)\n\n    # Reduce text size\n    proptease = fm.FontProperties()\n    proptease.set_size('xx-small')\n    plt.setp(autotexts, fontproperties=proptease)\n    plt.setp(texts, fontproperties=proptease)\n\n    plt.title('Build time per package')\n    plt.savefig(output)\n\n\n# Generate a pie chart with a portion for the overall time spent in\n# each step for all packages.\ndef pkg_pie_time_per_step(data, output):\n    steps_values = []\n    for step in steps:\n        val = 0\n        for p in data:\n            val += p.get_duration(step)\n        steps_values.append(val)\n\n    plt.figure()\n\n    # Draw pie graph\n    patches, texts, autotexts = plt.pie(steps_values, labels=steps,\n                                        autopct='%1.1f%%', shadow=True,\n                                        colors=colors)\n\n    # Reduce text size\n    proptease = fm.FontProperties()\n    proptease.set_size('xx-small')\n    plt.setp(autotexts, fontproperties=proptease)\n    plt.setp(texts, fontproperties=proptease)\n\n    plt.title('Build time per step')\n    plt.savefig(output)\n\n\n# Parses the csv file passed on standard input and returns a list of\n# Package objects, filed with the duration of each step and the total\n# duration of the package.\ndef read_data(input_file):\n    if input_file is None:\n        input_file = sys.stdin\n    else:\n        input_file = open(input_file)\n    reader = csv.reader(input_file, delimiter=':')\n    pkgs = []\n\n    # Auxilliary function to find a package by name in the list.\n    def getpkg(name):\n        for p in pkgs:\n            if p.name == name:\n                return p\n        return None\n\n    for row in reader:\n        time = float(row[0].strip())\n        state = row[1].strip()\n        step = row[2].strip()\n        pkg = row[3].strip()\n\n        p = getpkg(pkg)\n        if p is None:\n            p = Package(pkg)\n            pkgs.append(p)\n\n        p.add_step(step, state, time)\n\n    return pkgs\n\n\nparser = argparse.ArgumentParser(description='Draw build time graphs')\nparser.add_argument(\"--type\", '-t', metavar=\"GRAPH_TYPE\",\n                    help=\"Type of graph (histogram, pie-packages, pie-steps)\")\nparser.add_argument(\"--order\", '-O', metavar=\"GRAPH_ORDER\",\n                    help=\"Ordering of packages: build or duration (for histogram only)\")\nparser.add_argument(\"--alternate-colors\", '-c', action=\"store_true\",\n                    help=\"Use alternate colour-scheme\")\nparser.add_argument(\"--input\", '-i', metavar=\"INPUT\",\n                    help=\"Input file (usually $(O)/build/build-time.log)\")\nparser.add_argument(\"--output\", '-o', metavar=\"OUTPUT\", required=True,\n                    help=\"Output file (.pdf or .png extension)\")\nargs = parser.parse_args()\n\nd = read_data(args.input)\n\nif args.alternate_colors:\n    colors = alternate_colors\nelse:\n    colors = default_colors\n\nif args.type == \"histogram\" or args.type is None:\n    if args.order == \"build\" or args.order == \"duration\" or args.order == \"name\":\n        pkg_histogram(d, args.output, args.order)\n    elif args.order is None:\n        pkg_histogram(d, args.output, \"name\")\n    else:\n        sys.stderr.write(\"Unknown ordering: %s\\n\" % args.order)\n        exit(1)\nelif args.type == \"pie-packages\":\n    pkg_pie_time_per_package(d, args.output)\nelif args.type == \"pie-steps\":\n    pkg_pie_time_per_step(d, args.output)\nelse:\n    sys.stderr.write(\"Unknown type: %s\\n\" % args.type)\n    exit(1)\n"
  },
  {
    "path": "support/scripts/graph-depends",
    "content": "#!/usr/bin/env python3\n\n# Usage (the graphviz package must be installed in your distribution)\n#  ./support/scripts/graph-depends [-p package-name] > test.dot\n#  dot -Tpdf test.dot -o test.pdf\n#\n# With no arguments, graph-depends will draw a complete graph of\n# dependencies for the current configuration.\n# If '-p <package-name>' is specified, graph-depends will draw a graph\n# of dependencies for the given package name.\n# If '-d <depth>' is specified, graph-depends will limit the depth of\n# the dependency graph to 'depth' levels.\n#\n# Limitations\n#\n#  * Some packages have dependencies that depend on the Buildroot\n#    configuration. For example, many packages have a dependency on\n#    openssl if openssl has been enabled. This tool will graph the\n#    dependencies as they are with the current Buildroot\n#    configuration.\n#\n# Copyright (C) 2010-2013 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n# Copyright (C) 2019 Yann E. MORIN <yann.morin.1998@free.fr>\n\nimport logging\nimport sys\nimport argparse\nfrom fnmatch import fnmatch\n\nimport brpkgutil\n\n# Modes of operation:\nMODE_FULL = 1   # draw full dependency graph for all selected packages\nMODE_PKG = 2    # draw dependency graph for a given package\n\nallpkgs = []\n\n\n# The Graphviz \"dot\" utility doesn't like dashes in node names. So for\n# node names, we strip all dashes. Also, nodes can't start with a number,\n# so we prepend an underscore.\ndef pkg_node_name(pkg):\n    return \"_\" + pkg.replace(\"-\", \"\")\n\n\n# Basic cache for the results of the is_dep() function, in order to\n# optimize the execution time. The cache is a dict of dict of boolean\n# values. The key to the primary dict is \"pkg\", and the key of the\n# sub-dicts is \"pkg2\".\nis_dep_cache = {}\n\n\ndef is_dep_cache_insert(pkg, pkg2, val):\n    try:\n        is_dep_cache[pkg].update({pkg2: val})\n    except KeyError:\n        is_dep_cache[pkg] = {pkg2: val}\n\n\n# Retrieves from the cache whether pkg2 is a transitive dependency\n# of pkg.\n# Note: raises a KeyError exception if the dependency is not known.\ndef is_dep_cache_lookup(pkg, pkg2):\n    return is_dep_cache[pkg][pkg2]\n\n\n# This function return True if pkg is a dependency (direct or\n# transitive) of pkg2, dependencies being listed in the deps\n# dictionary. Returns False otherwise.\n# This is the un-cached version.\ndef is_dep_uncached(pkg, pkg2, deps):\n    try:\n        for p in deps[pkg2]:\n            if pkg == p:\n                return True\n            if is_dep(pkg, p, deps):\n                return True\n    except KeyError:\n        pass\n    return False\n\n\n# See is_dep_uncached() above; this is the cached version.\ndef is_dep(pkg, pkg2, deps):\n    try:\n        return is_dep_cache_lookup(pkg, pkg2)\n    except KeyError:\n        val = is_dep_uncached(pkg, pkg2, deps)\n        is_dep_cache_insert(pkg, pkg2, val)\n        return val\n\n\n# This function eliminates transitive dependencies; for example, given\n# these dependency chain: A->{B,C} and B->{C}, the A->{C} dependency is\n# already covered by B->{C}, so C is a transitive dependency of A, via B.\n# The functions does:\n#   - for each dependency d[i] of the package pkg\n#     - if d[i] is a dependency of any of the other dependencies d[j]\n#       - do not keep d[i]\n#     - otherwise keep d[i]\ndef remove_transitive_deps(pkg, deps):\n    d = deps[pkg]\n    new_d = []\n    for i in range(len(d)):\n        keep_me = True\n        for j in range(len(d)):\n            if j == i:\n                continue\n            if is_dep(d[i], d[j], deps):\n                keep_me = False\n        if keep_me:\n            new_d.append(d[i])\n    return new_d\n\n\n# List of dependencies that all/many packages have, and that we want\n# to trim when generating the dependency graph.\nMANDATORY_DEPS = ['toolchain', 'skeleton', 'host-skeleton', 'host-tar', 'host-gzip', 'host-ccache']\n\n\n# This function removes the dependency on some 'mandatory' package, like the\n# 'toolchain' package, or the 'skeleton' package\ndef remove_mandatory_deps(pkg, deps):\n    return [p for p in deps[pkg] if p not in MANDATORY_DEPS]\n\n\n# This function returns all dependencies of pkg that are part of the\n# mandatory dependencies:\ndef get_mandatory_deps(pkg, deps):\n    return [p for p in deps[pkg] if p in MANDATORY_DEPS]\n\n\n# This function will check that there is no loop in the dependency chain\n# As a side effect, it builds up the dependency cache.\ndef check_circular_deps(deps):\n    def recurse(pkg):\n        if pkg not in list(deps.keys()):\n            return\n        if pkg in not_loop:\n            return\n        not_loop.append(pkg)\n        chain.append(pkg)\n        for p in deps[pkg]:\n            if p in chain:\n                logging.warning(\"\\nRecursion detected for  : %s\" % (p))\n                while True:\n                    _p = chain.pop()\n                    logging.warning(\"which is a dependency of: %s\" % (_p))\n                    if p == _p:\n                        sys.exit(1)\n            recurse(p)\n        chain.pop()\n\n    not_loop = []\n    chain = []\n    for pkg in list(deps.keys()):\n        recurse(pkg)\n\n\n# This functions trims down the dependency list of all packages.\n# It applies in sequence all the dependency-elimination methods.\ndef remove_extra_deps(deps, rootpkg, transitive, arrow_dir):\n    # For the direct dependencies, find and eliminate mandatory\n    # deps, and add them to the root package. Don't do it for a\n    # reverse graph, because mandatory deps are only direct deps.\n    if arrow_dir == \"forward\":\n        for pkg in list(deps.keys()):\n            if not pkg == rootpkg:\n                for d in get_mandatory_deps(pkg, deps):\n                    if d not in deps[rootpkg]:\n                        deps[rootpkg].append(d)\n                deps[pkg] = remove_mandatory_deps(pkg, deps)\n    for pkg in list(deps.keys()):\n        if not transitive or pkg == rootpkg:\n            deps[pkg] = remove_transitive_deps(pkg, deps)\n    return deps\n\n\n# Print the attributes of a node: label and fill-color\ndef print_attrs(outfile, pkg, pkg_type, pkg_version, depth, colors):\n    name = pkg_node_name(pkg)\n    if pkg == 'all':\n        label = 'ALL'\n    else:\n        label = pkg\n    if depth == 0:\n        color = colors[0]\n    else:\n        if pkg_type == \"host\":\n            color = colors[2]\n        else:\n            color = colors[1]\n    if pkg_version == \"virtual\":\n        outfile.write(\"%s [label = <<I>%s</I>>]\\n\" % (name, label))\n    else:\n        outfile.write(\"%s [label = \\\"%s\\\"]\\n\" % (name, label))\n    outfile.write(\"%s [color=%s,style=filled]\\n\" % (name, color))\n\n\ndone_deps = []\n\n\n# Print the dependency graph of a package\ndef print_pkg_deps(outfile, dict_deps, dict_types, dict_versions, stop_list, exclude_list,\n                   arrow_dir, draw_graph, depth, max_depth, pkg, colors):\n    if pkg in done_deps:\n        return\n    done_deps.append(pkg)\n    if draw_graph:\n        print_attrs(outfile, pkg, dict_types[pkg], dict_versions[pkg], depth, colors)\n    elif depth != 0:\n        outfile.write(\"%s \" % pkg)\n    if pkg not in dict_deps:\n        return\n    for p in stop_list:\n        if fnmatch(pkg, p):\n            return\n    if dict_versions[pkg] == \"virtual\" and \"virtual\" in stop_list:\n        return\n    if dict_types[pkg] == \"host\" and \"host\" in stop_list:\n        return\n    if max_depth == 0 or depth < max_depth:\n        for d in dict_deps[pkg]:\n            if dict_versions[d] == \"virtual\" and \"virtual\" in exclude_list:\n                continue\n            if dict_types[d] == \"host\" and \"host\" in exclude_list:\n                continue\n            add = True\n            for p in exclude_list:\n                if fnmatch(d, p):\n                    add = False\n                    break\n            if add:\n                if draw_graph:\n                    outfile.write(\"%s -> %s [dir=%s]\\n\" % (pkg_node_name(pkg), pkg_node_name(d), arrow_dir))\n                print_pkg_deps(outfile, dict_deps, dict_types, dict_versions, stop_list, exclude_list,\n                               arrow_dir, draw_graph, depth + 1, max_depth, d, colors)\n\n\ndef parse_args():\n    parser = argparse.ArgumentParser(description=\"Graph packages dependencies\")\n    parser.add_argument(\"--check-only\", \"-C\", dest=\"check_only\", action=\"store_true\", default=False,\n                        help=\"Only do the dependency checks (circular deps...)\")\n    parser.add_argument(\"--outfile\", \"-o\", metavar=\"OUT_FILE\", dest=\"outfile\",\n                        help=\"File in which to generate the dot representation\")\n    parser.add_argument(\"--package\", '-p', metavar=\"PACKAGE\",\n                        help=\"Graph the dependencies of PACKAGE\")\n    parser.add_argument(\"--depth\", '-d', metavar=\"DEPTH\", dest=\"depth\", type=int, default=0,\n                        help=\"Limit the dependency graph to DEPTH levels; 0 means no limit.\")\n    parser.add_argument(\"--stop-on\", \"-s\", metavar=\"PACKAGE\", dest=\"stop_list\", action=\"append\",\n                        help=\"Do not graph past this package (can be given multiple times).\" +\n                        \" Can be a package name or a glob, \" +\n                        \" 'virtual' to stop on virtual packages, or \" +\n                        \"'host' to stop on host packages.\")\n    parser.add_argument(\"--exclude\", \"-x\", metavar=\"PACKAGE\", dest=\"exclude_list\", action=\"append\",\n                        help=\"Like --stop-on, but do not add PACKAGE to the graph.\")\n    parser.add_argument(\"--exclude-mandatory\", \"-X\", action=\"store_true\",\n                        help=\"Like if -x was passed for all mandatory dependencies.\")\n    parser.add_argument(\"--colors\", \"-c\", metavar=\"COLOR_LIST\", dest=\"colors\",\n                        default=\"lightblue,grey,gainsboro\",\n                        help=\"Comma-separated list of the three colors to use\" +\n                        \" to draw the top-level package, the target\" +\n                        \" packages, and the host packages, in this order.\" +\n                        \" Defaults to: 'lightblue,grey,gainsboro'\")\n    parser.add_argument(\"--transitive\", dest=\"transitive\", action='store_true',\n                        default=False)\n    parser.add_argument(\"--no-transitive\", dest=\"transitive\", action='store_false',\n                        help=\"Draw (do not draw) transitive dependencies\")\n    parser.add_argument(\"--direct\", dest=\"direct\", action='store_true', default=True,\n                        help=\"Draw direct dependencies (the default)\")\n    parser.add_argument(\"--reverse\", dest=\"direct\", action='store_false',\n                        help=\"Draw reverse dependencies\")\n    parser.add_argument(\"--quiet\", '-q', dest=\"quiet\", action='store_true',\n                        help=\"Quiet\")\n    parser.add_argument(\"--flat-list\", '-f', dest=\"flat_list\", action='store_true', default=False,\n                        help=\"Do not draw graph, just print a flat list\")\n    return parser.parse_args()\n\n\ndef main():\n    args = parse_args()\n\n    check_only = args.check_only\n\n    logging.basicConfig(stream=sys.stderr, format='%(message)s',\n                        level=logging.WARNING if args.quiet else logging.INFO)\n\n    if args.outfile is None:\n        outfile = sys.stdout\n    else:\n        if check_only:\n            logging.error(\"don't specify outfile and check-only at the same time\")\n            sys.exit(1)\n        outfile = open(args.outfile, \"w\")\n\n    if args.package is None:\n        mode = MODE_FULL\n        rootpkg = 'all'\n    else:\n        mode = MODE_PKG\n        rootpkg = args.package\n\n    if args.stop_list is None:\n        stop_list = []\n    else:\n        stop_list = args.stop_list\n\n    if args.exclude_list is None:\n        exclude_list = []\n    else:\n        exclude_list = args.exclude_list\n\n    if args.exclude_mandatory:\n        exclude_list += MANDATORY_DEPS\n\n    if args.direct:\n        arrow_dir = \"forward\"\n    else:\n        if mode == MODE_FULL:\n            logging.error(\"--reverse needs a package\")\n            sys.exit(1)\n        arrow_dir = \"back\"\n\n    draw_graph = not args.flat_list\n\n    # Get the colors: we need exactly three colors,\n    # so no need not split more than 4\n    # We'll let 'dot' validate the colors...\n    colors = args.colors.split(',', 4)\n    if len(colors) != 3:\n        logging.error(\"Error: incorrect color list '%s'\" % args.colors)\n        sys.exit(1)\n\n    deps, rdeps, dict_types, dict_versions = brpkgutil.get_dependency_tree()\n    dict_deps = deps if args.direct else rdeps\n\n    check_circular_deps(dict_deps)\n    if check_only:\n        sys.exit(0)\n\n    dict_deps = remove_extra_deps(dict_deps, rootpkg, args.transitive, arrow_dir)\n\n    # Start printing the graph data\n    if draw_graph:\n        outfile.write(\"digraph G {\\n\")\n\n    print_pkg_deps(outfile, dict_deps, dict_types, dict_versions, stop_list, exclude_list,\n                   arrow_dir, draw_graph, 0, args.depth, rootpkg, colors)\n\n    if draw_graph:\n        outfile.write(\"}\\n\")\n    else:\n        outfile.write(\"\\n\")\n\n\nif __name__ == \"__main__\":\n    sys.exit(main())\n"
  },
  {
    "path": "support/scripts/hardlink-or-copy",
    "content": "#!/usr/bin/env bash\n\n# Try to hardlink a file into a directory, fallback to copy on failure.\n#\n# Hardlink-or-copy the source file in the first argument into the\n# destination directory in the second argument, using the basename in\n# the third argument as basename for the destination file. If the third\n# argument is missing, use the basename of the source file as basename\n# for the destination file.\n#\n# In either case, remove the destination prior to doing the\n# hardlink-or-copy.\n#\n# Note that this is NOT an atomic operation.\n\nset -e\n\nmain() {\n    local src_file=\"${1}\"\n    local dst_dir=\"${2}\"\n    local dst_file=\"${3}\"\n\n    if [ -n \"${dst_file}\" ]; then\n        dst_file=\"${dst_dir}/${dst_file}\"\n    else\n        dst_file=\"${dst_dir}/${src_file##*/}\"\n    fi\n\n    mkdir -p \"${dst_dir}\"\n    rm -f \"${dst_file}\"\n    ln -f \"${src_file}\" \"${dst_file}\" 2>/dev/null \\\n    || cp -f \"${src_file}\" \"${dst_file}\"\n}\n\nmain \"${@}\"\n"
  },
  {
    "path": "support/scripts/mkimage.sh",
    "content": "#!/bin/bash -e\n\n# optional env vars:\n#  THINGOS_LOOP_DEV=/dev/loop0\n#  THINGOS_NAME=thingOS\n#  THINGOS_SHORT_NAME=thingos\n#  THINGOS_PREFIX=thing\n#  THINGOS_VERSION=3.14.15\n\n\ntest -n \"$1\" || { echo \"Usage: $0 <board>\"; exit 1; }\ntest $(id -u) -eq 0 || { echo \"This script needs to be run as root.\"; exit 1; }\n\nfunction msg() {\n    echo \" * $1\"\n}\n\nset -a\n\nBOARD=$1\n\n# Under BR make invocation, ${BINARIES_DIR} would be automatically set to the images dir.\n# For the scope of this script which is run outside of the BR make environment, we must set it manually.\nBINARIES_DIR=$(dirname $0)/../../output/${BOARD}/images/\nBOARD_DIR=$(dirname $0)/../../board/${BOARD}\nCOMMON_DIR=$(dirname $0)/../../board/common\nHOST_DIR=$(dirname $0)/../../output/${BOARD}/host/\n\nBOOT_START=${BOOT_START:-1}  # MB\n\nBOOT_SRC=${BINARIES_DIR}/boot\nBOOT=${BINARIES_DIR}/.boot\nBOOT_IMG=${BINARIES_DIR}/boot.img\nBOOT_SIZE=\"30\"  # MB - reserved up to 100 MB\n\nROOT_START=\"100\"  # MB\nROOT_SRC=${BINARIES_DIR}/rootfs.tar\nROOT=${BINARIES_DIR}/.root\nROOT_IMG=${BINARIES_DIR}/root.img\nROOT_SIZE=\"200\"  # MB\n\nGUARD_SIZE=\"10\"  # MB\nDISK_SIZE=$((ROOT_START + ROOT_SIZE + GUARD_SIZE))\n\nOS_NAME=$(source ${COMMON_DIR}/overlay/etc/version && echo ${OS_SHORT_NAME})\n\ntest -s ${BOARD_DIR}/board.conf && source ${BOARD_DIR}/board.conf\n\n# \"-f\", unless a /dev/loopX is specified\nLOOP_DEV=${THINGOS_LOOP_DEV:--f}\n\nfunction cleanup_on_exit() {\n    set +e\n\n    umount ${loop_dev}* 2>/dev/null\n    losetup -d ${loop_dev} 2>/dev/null\n}\n\n\n# boot filesystem\nmsg \"creating boot loop device ${LOOP_DEV}\"\ndd if=/dev/zero of=${BOOT_IMG} bs=1M count=${BOOT_SIZE}\nloop_dev=$(losetup --show ${LOOP_DEV} ${BOOT_IMG})\n\ntrap cleanup_on_exit EXIT\n\nmsg \"creating boot filesystem\"\nmkfs.vfat -F16 ${loop_dev}\n\nmsg \"mounting boot loop device\"\nmkdir -p ${BOOT}\nmount ${loop_dev} ${BOOT}\n\nmsg \"copying boot filesystem contents\"\ncp -r ${BOOT_SRC}/* ${BOOT}\nsync\n\nif [[ \"${USE_SYSLINUX}\" == true ]]; then\n    ${HOST_DIR}/sbin/extlinux --install ${BOOT}\nfi\n\nmsg \"unmounting boot filesystem\"\numount ${BOOT}\n\nmsg \"destroying boot loop device ${loop_dev}\"\nlosetup -d ${loop_dev}\nsync\n\n# root filesystem\nmsg \"creating root loop device ${LOOP_DEV}\"\ndd if=/dev/zero of=${ROOT_IMG} bs=1M count=${ROOT_SIZE}\nloop_dev=$(losetup --show ${LOOP_DEV} ${ROOT_IMG})\n\nmsg \"creating root filesystem\"\nmkfs.ext4 ${loop_dev}\ntune2fs -O^has_journal ${loop_dev}\n\nmsg \"mounting root loop device\"\nmkdir -p ${ROOT}\nmount ${loop_dev} ${ROOT}\n\nmsg \"copying root filesystem contents\"\ntar -xpsf ${ROOT_SRC} -C ${ROOT}\n\n# set internal OS name, prefix and version according to env variables\nif [ -f ${ROOT}/etc/version ]; then\n    if [ -n \"${THINGOS_NAME}\" ]; then\n        msg \"setting OS name to ${THINGOS_NAME}\"\n        sed -ri \"s/OS_NAME=\\\".*\\\"/OS_NAME=\\\"${THINGOS_NAME}\\\"/\" ${ROOT}/etc/version\n    fi\n    if [ -n \"${THINGOS_SHORT_NAME}\" ]; then\n        msg \"setting OS short name to ${THINGOS_SHORT_NAME}\"\n        sed -ri \"s/OS_SHORT_NAME=\\\".*\\\"/OS_SHORT_NAME=\\\"${THINGOS_SHORT_NAME}\\\"/\" ${ROOT}/etc/version\n    fi\n    if [ -n \"${THINGOS_PREFIX}\" ]; then\n        msg \"setting OS prefix to ${THINGOS_PREFIX}\"\n        sed -ri \"s/OS_PREFIX=\\\".*\\\"/OS_PREFIX=\\\"${THINGOS_PREFIX}\\\"/\" ${ROOT}/etc/version\n    fi\n    if [ -n \"${THINGOS_VERSION}\" ]; then\n        msg \"setting OS version to ${THINGOS_VERSION}\"\n        sed -ri \"s/OS_VERSION=\\\".*\\\"/OS_VERSION=\\\"${THINGOS_VERSION}\\\"/\" ${ROOT}/etc/version\n    fi\nfi\n\nmsg \"unmounting root filesystem\"\numount ${ROOT}\n\nmsg \"destroying root loop device ${loop_dev}\"\nlosetup -d ${loop_dev}\nsync\n\nDISK_IMG=${BINARIES_DIR}/disk.img\nBOOT_IMG=${BINARIES_DIR}/boot.img\nROOT_IMG=${BINARIES_DIR}/root.img\n\nif ! [ -r ${BOOT_IMG} ]; then\n    echo \"boot image missing\"\n    exit -1\nfi\n\nif ! [ -r ${ROOT_IMG} ]; then\n    echo \"root image missing\"\n    exit -1\nfi\n\n# disk image\nmsg \"creating disk loop device ${LOOP_DEV}\"\ndd if=/dev/zero of=${DISK_IMG} bs=1M count=${DISK_SIZE}\nloop_dev=$(losetup --show ${LOOP_DEV} ${DISK_IMG})\n\nmsg \"partitioning disk\"\nset +e\nPART_TABLE_TYPE=${PART_TABLE_TYPE:-mbr}\nif [[ ${PART_TABLE_TYPE} == mbr ]] || [[ ${PART_TABLE_TYPE} == dos ]]; then\n    fdisk -u=sectors ${loop_dev} <<END\no\nn\np\n1\n$((BOOT_START * 2048))\n+${BOOT_SIZE}M\nn\np\n2\n$((ROOT_START * 2048))\n+${ROOT_SIZE}M\n\nt\n1\ne\na\n1\nw\nEND\n    boot_part_no=1\n    root_part_no=2\nelif [[ ${PART_TABLE_TYPE} == gpt ]]; then\n    fdisk -u=sectors ${loop_dev} <<END\ng\nn\n1\n$((BOOT_START * 2048))\n+${BOOT_SIZE}M\nn\n2\n$((ROOT_START * 2048))\n+${ROOT_SIZE}M\nt\n1\n1\nw\nEND\n    boot_part_no=1\n    root_part_no=2\nelse\n    msg \"unknown partition table type ${PART_TABLE_TYPE}\"\n    exit 1\nfi\nset -e\nsync\n\nmsg \"reading partition offsets\"\nboot_offs=$(fdisk -u=sectors -l ${loop_dev} | grep -E \"loop([[:digit:]])+p${boot_part_no}\" | tr -d '*' | tr -s ' ' | cut -d ' ' -f 2)\nroot_offs=$(fdisk -u=sectors -l ${loop_dev} | grep -E \"loop([[:digit:]])+p${root_part_no}\" | tr -d '*' | tr -s ' ' | cut -d ' ' -f 2)\n\nmsg \"destroying disk loop device (${loop_dev})\"\nlosetup -d ${loop_dev}\n\nif [[ -n \"${BOOT_BIN}\" ]]; then\n    for boot_bin in \"${BOOT_BIN[@]}\"; do\n        IFS=@ boot_bin=(${boot_bin}); unset IFS\n        bin=${boot_bin[0]}\n        seek=${boot_bin[1]}\n        msg \"copying boot binary ${bin} @ ${seek}\"\n        dd conv=notrunc if=${bin} of=${DISK_IMG} bs=512 seek=${seek}\n    done\nfi\n\nmsg \"creating boot loop device\"\nloop_dev=$(losetup --show -o $((${boot_offs} * 512)) ${LOOP_DEV} ${DISK_IMG})\n\nmsg \"copying boot image\"\ndd if=${BOOT_IMG} of=${loop_dev}\nsync\n\nmsg \"destroying boot loop device (${loop_dev})\"\nlosetup -d ${loop_dev}\n\nmsg \"creating root loop device\"\nloop_dev=$(losetup --show -o $((${root_offs} * 512)) ${LOOP_DEV} ${DISK_IMG})\nsync\n\nmsg \"copying root image\"\ndd if=${ROOT_IMG} of=${loop_dev}\nsync\n\nmsg \"destroying root loop device ${loop_dev}\"\nlosetup -d ${loop_dev}\nsync\n\nmv ${DISK_IMG} $(dirname ${DISK_IMG})/${OS_NAME}-${BOARD}.img\nDISK_IMG=$(dirname ${DISK_IMG})/${OS_NAME}-${BOARD}.img\n\nmsg \"$(realpath \"${DISK_IMG}\") is ready\"\n"
  },
  {
    "path": "support/scripts/mkmakefile",
    "content": "#!/bin/sh\n# Generates a small Makefile used in the root of the output\n# directory, to allow make to be started from there.\n# The Makefile also allow for more convenient build of external modules\n\n# Usage\n# $1 - Kernel src directory\n# $2 - Output directory\n\n\ntest ! -r $2/Makefile -o -O $2/Makefile || exit 0\n# Only overwrite automatically generated Makefiles\n# (so we do not overwrite buildroot Makefile)\nif test -e $2/Makefile && ! grep -q Automatically $2/Makefile\nthen\n\texit 0\nfi\necho \"  GEN     $2/Makefile\"\n\ncat << EOF > $2/Makefile\n# Automatically generated by $0: don't edit\n\nifeq (\"\\$(origin V)\", \"command line\")\nVERBOSE := \\$(V)\nendif\nifneq (\\$(VERBOSE),1)\nQ := @\nendif\n\nlastword = \\$(word \\$(words \\$(1)),\\$(1))\nmakedir := \\$(dir \\$(call lastword,\\$(MAKEFILE_LIST)))\n\nMAKEARGS := -C $1\nMAKEARGS += O=\\$(if \\$(patsubst /%,,\\$(makedir)),\\$(CURDIR)/)\\$(patsubst %/,%,\\$(makedir))\n\nMAKEFLAGS += --no-print-directory\n\n.PHONY: _all \\$(MAKECMDGOALS)\n\nall\t:= \\$(filter-out Makefile,\\$(MAKECMDGOALS))\n\n_all:\n\t\\$(Q)umask 0022 && \\$(MAKE) \\$(MAKEARGS) \\$(all)\n\nMakefile:;\n\n\\$(all): _all\n\t@:\n\n%/: _all\n\t@:\nEOF\n"
  },
  {
    "path": "support/scripts/mkusers",
    "content": "#!/usr/bin/env bash\nset -e\nmyname=\"${0##*/}\"\n\n#----------------------------------------------------------------------------\n# Configurable items\nMIN_UID=1000\nMAX_UID=1999\nMIN_GID=1000\nMAX_GID=1999\n# No more is configurable below this point\n#----------------------------------------------------------------------------\n\n#----------------------------------------------------------------------------\nerror() {\n    local fmt=\"${1}\"\n    shift\n\n    printf \"%s: \" \"${myname}\" >&2\n    printf \"${fmt}\" \"${@}\" >&2\n}\nfail() {\n    error \"$@\"\n    exit 1\n}\n\n#----------------------------------------------------------------------------\nif [ ${#} -ne 2 ]; then\n    fail \"usage: %s USERS_TABLE TARGET_DIR\\n\"\nfi\nUSERS_TABLE=\"${1}\"\nTARGET_DIR=\"${2}\"\nshift 2\nPASSWD=\"${TARGET_DIR}/etc/passwd\"\nSHADOW=\"${TARGET_DIR}/etc/shadow\"\nGROUP=\"${TARGET_DIR}/etc/group\"\n# /etc/gshadow is not part of the standard skeleton, so not everybody\n# will have it, but some may have it, and its content must be in sync\n# with /etc/group, so any use of gshadow must be conditional.\nGSHADOW=\"${TARGET_DIR}/etc/gshadow\"\n\n# We can't simply source ${BR2_CONFIG} as it may contains constructs\n# such as:\n#    BR2_DEFCONFIG=\"$(CONFIG_DIR)/defconfig\"\n# which when sourced from a shell script will eventually try to execute\n# a command named 'CONFIG_DIR', which is plain wrong for virtually every\n# systems out there.\n# So, we have to scan that file instead. Sigh... :-(\nPASSWD_METHOD=\"$( sed -r -e '/^BR2_TARGET_GENERIC_PASSWD_METHOD=\"(.*)\"$/!d;'    \\\n                         -e 's//\\1/;'                                           \\\n                         \"${BR2_CONFIG}\"                                        \\\n                )\"\n\n#----------------------------------------------------------------------------\nget_uid() {\n    local username=\"${1}\"\n\n    awk -F: -v username=\"${username}\"                           \\\n        '$1 == username { printf( \"%d\\n\", $3 ); }' \"${PASSWD}\"\n}\n\n#----------------------------------------------------------------------------\nget_ugid() {\n    local username=\"${1}\"\n\n    awk -F: -v username=\"${username}\"                          \\\n        '$1 == username { printf( \"%d\\n\", $4 ); }' \"${PASSWD}\"\n}\n\n#----------------------------------------------------------------------------\nget_gid() {\n    local group=\"${1}\"\n\n    awk -F: -v group=\"${group}\"                             \\\n        '$1 == group { printf( \"%d\\n\", $3 ); }' \"${GROUP}\"\n}\n\n#----------------------------------------------------------------------------\nget_members() {\n    local group=\"${1}\"\n\n    awk -F: -v group=\"${group}\"                             \\\n        '$1 == group { printf( \"%s\\n\", $4 ); }' \"${GROUP}\"\n}\n\n#----------------------------------------------------------------------------\nget_username() {\n    local uid=\"${1}\"\n\n    awk -F: -v uid=\"${uid}\"                                 \\\n        '$3 == uid { printf( \"%s\\n\", $1 ); }' \"${PASSWD}\"\n}\n\n#----------------------------------------------------------------------------\nget_group() {\n    local gid=\"${1}\"\n\n    awk -F: -v gid=\"${gid}\"                             \\\n        '$3 == gid { printf( \"%s\\n\", $1 ); }' \"${GROUP}\"\n}\n\n#----------------------------------------------------------------------------\nget_ugroup() {\n    local username=\"${1}\"\n    local ugid\n\n    ugid=\"$( get_ugid \"${username}\" )\"\n    if [ -n \"${ugid}\" ]; then\n        get_group \"${ugid}\"\n    fi\n}\n\n#----------------------------------------------------------------------------\n# Sanity-check the new user/group:\n#   - check the gid is not already used for another group\n#   - check the group does not already exist with another gid\n#   - check the user does not already exist with another gid\n#   - check the uid is not already used for another user\n#   - check the user does not already exist with another uid\n#   - check the user does not already exist in another group\ncheck_user_validity() {\n    local username=\"${1}\"\n    local uid=\"${2}\"\n    local group=\"${3}\"\n    local gid=\"${4}\"\n    local _uid _ugid _gid _username _group _ugroup\n\n    _group=\"$( get_group \"${gid}\" )\"\n    _gid=\"$( get_gid \"${group}\" )\"\n    _ugid=\"$( get_ugid \"${username}\" )\"\n    _username=\"$( get_username \"${uid}\" )\"\n    _uid=\"$( get_uid \"${username}\" )\"\n    _ugroup=\"$( get_ugroup \"${username}\" )\"\n\n    if [ \"${username}\" = \"root\" ]; then\n        fail \"invalid username '%s\\n'\" \"${username}\"\n    fi\n\n    if [ ${gid} -lt -1 -o ${gid} -eq 0 ]; then\n        fail \"invalid gid '%d' for '%s'\\n\" ${gid} \"${username}\"\n    elif [ ${gid} -ne -1 ]; then\n        # check the gid is not already used for another group\n        if [ -n \"${_group}\" -a \"${_group}\" != \"${group}\" ]; then\n            fail \"gid '%d' for '%s' is already used by group '%s'\\n\" \\\n                 ${gid} \"${username}\" \"${_group}\"\n        fi\n\n        # check the group does not already exists with another gid\n        # Need to split the check in two, otherwise '[' complains it\n        # is missing arguments when _gid is empty\n        if [ -n \"${_gid}\" ] && [ ${_gid} -ne ${gid} ]; then\n            fail \"group '%s' for '%s' already exists with gid '%d' (wants '%d')\\n\" \\\n                 \"${group}\" \"${username}\" ${_gid} ${gid}\n        fi\n\n        # check the user does not already exists with another gid\n        # Need to split the check in two, otherwise '[' complains it\n        # is missing arguments when _ugid is empty\n        if [ -n \"${_ugid}\" ] && [ ${_ugid} -ne ${gid} ]; then\n            fail \"user '%s' already exists with gid '%d' (wants '%d')\\n\" \\\n                 \"${username}\" ${_ugid} ${gid}\n        fi\n    fi\n\n    if [ ${uid} -lt -1 -o ${uid} -eq 0 ]; then\n        fail \"invalid uid '%d' for '%s'\\n\" ${uid} \"${username}\"\n    elif [ ${uid} -ne -1 ]; then\n        # check the uid is not already used for another user\n        if [ -n \"${_username}\" -a \"${_username}\" != \"${username}\" ]; then\n            fail \"uid '%d' for '%s' already used by user '%s'\\n\" \\\n                 ${uid} \"${username}\" \"${_username}\"\n        fi\n\n        # check the user does not already exists with another uid\n        # Need to split the check in two, otherwise '[' complains it\n        # is missing arguments when _uid is empty\n        if [ -n \"${_uid}\" ] && [ ${_uid} -ne ${uid} ]; then\n            fail \"user '%s' already exists with uid '%d' (wants '%d')\\n\" \\\n                 \"${username}\" ${_uid} ${uid}\n        fi\n    fi\n\n    # check the user does not already exist in another group\n    if [ -n \"${_ugroup}\" -a \"${_ugroup}\" != \"${group}\" ]; then\n        fail \"user '%s' already exists with group '%s' (wants '%s')\\n\" \\\n             \"${username}\" \"${_ugroup}\" \"${group}\"\n    fi\n\n    return 0\n}\n\n#----------------------------------------------------------------------------\n# Generate a unique GID for given group. If the group already exists,\n# then simply report its current GID. Otherwise, generate the lowest GID\n# that is:\n#   - not 0\n#   - comprised in [MIN_GID..MAX_GID]\n#   - not already used by a group\ngenerate_gid() {\n    local group=\"${1}\"\n    local gid\n\n    gid=\"$( get_gid \"${group}\" )\"\n    if [ -z \"${gid}\" ]; then\n        for(( gid=MIN_GID; gid<=MAX_GID; gid++ )); do\n            if [ -z \"$( get_group \"${gid}\" )\" ]; then\n                break\n            fi\n        done\n        if [ ${gid} -gt ${MAX_GID} ]; then\n            fail \"can not allocate a GID for group '%s'\\n\" \"${group}\"\n        fi\n    fi\n    printf \"%d\\n\" \"${gid}\"\n}\n\n#----------------------------------------------------------------------------\n# Add a group; if it does already exist, remove it first\nadd_one_group() {\n    local group=\"${1}\"\n    local gid=\"${2}\"\n    local members\n\n    # Generate a new GID if needed\n    if [ ${gid} -eq -1 ]; then\n        gid=\"$( generate_gid \"${group}\" )\"\n    fi\n\n    members=$(get_members \"$group\")\n    # Remove any previous instance of this group, and re-add the new one\n    sed -i --follow-symlinks -e '/^'\"${group}\"':.*/d;' \"${GROUP}\"\n    printf \"%s:x:%d:%s\\n\" \"${group}\" \"${gid}\" \"${members}\" >>\"${GROUP}\"\n\n    # Ditto for /etc/gshadow if it exists\n    if [ -f \"${GSHADOW}\" ]; then\n        sed -i --follow-symlinks -e '/^'\"${group}\"':.*/d;' \"${GSHADOW}\"\n        printf \"%s:*::\\n\" \"${group}\" >>\"${GSHADOW}\"\n    fi\n}\n\n#----------------------------------------------------------------------------\n# Generate a unique UID for given username. If the username already exists,\n# then simply report its current UID. Otherwise, generate the lowest UID\n# that is:\n#   - not 0\n#   - comprised in [MIN_UID..MAX_UID]\n#   - not already used by a user\ngenerate_uid() {\n    local username=\"${1}\"\n    local uid\n\n    uid=\"$( get_uid \"${username}\" )\"\n    if [ -z \"${uid}\" ]; then\n        for(( uid=MIN_UID; uid<=MAX_UID; uid++ )); do\n            if [ -z \"$( get_username \"${uid}\" )\" ]; then\n                break\n            fi\n        done\n        if [ ${uid} -gt ${MAX_UID} ]; then\n            fail \"can not allocate a UID for user '%s'\\n\" \"${username}\"\n        fi\n    fi\n    printf \"%d\\n\" \"${uid}\"\n}\n\n#----------------------------------------------------------------------------\n# Add given user to given group, if not already the case\nadd_user_to_group() {\n    local username=\"${1}\"\n    local group=\"${2}\"\n    local _f\n\n    for _f in \"${GROUP}\" \"${GSHADOW}\"; do\n        [ -f \"${_f}\" ] || continue\n        sed -r -i --follow-symlinks \\\n                  -e 's/^('\"${group}\"':.*:)(([^:]+,)?)'\"${username}\"'(,[^:]+*)?$/\\1\\2\\4/;'  \\\n                  -e 's/^('\"${group}\"':.*)$/\\1,'\"${username}\"'/;'                           \\\n                  -e 's/,+/,/'                                                              \\\n                  -e 's/:,/:/'                                                              \\\n                  \"${_f}\"\n    done\n}\n\n#----------------------------------------------------------------------------\n# Encode a password\nencode_password() {\n    local passwd=\"${1}\"\n\n    mkpasswd -m \"${PASSWD_METHOD}\" \"${passwd}\"\n}\n\n#----------------------------------------------------------------------------\n# Add a user; if it does already exist, remove it first\nadd_one_user() {\n    local username=\"${1}\"\n    local uid=\"${2}\"\n    local group=\"${3}\"\n    local gid=\"${4}\"\n    local passwd=\"${5}\"\n    local home=\"${6}\"\n    local shell=\"${7}\"\n    local groups=\"${8}\"\n    local comment=\"${9}\"\n    local _f _group _home _shell _gid _passwd\n\n    # First, sanity-check the user\n    check_user_validity \"${username}\" \"${uid}\" \"${group}\" \"${gid}\"\n\n    # Generate a new UID if needed\n    if [ ${uid} -eq -1 ]; then\n        uid=\"$( generate_uid \"${username}\" )\"\n    fi\n\n    # Remove any previous instance of this user\n    for _f in \"${PASSWD}\" \"${SHADOW}\"; do\n        test -f ${_f} && sed -r -i --follow-symlinks -e '/^'\"${username}\"':.*/d;' \"${_f}\"\n    done\n\n    _gid=\"$( get_gid \"${group}\" )\"\n    _shell=\"${shell}\"\n    if [ \"${shell}\" = \"-\" ]; then\n        _shell=\"/bin/false\"\n    fi\n    case \"${home}\" in\n        -)  _home=\"/\";;\n        /)  fail \"home can not explicitly be '/'\\n\";;\n        /*) _home=\"${home}\";;\n        *)  fail \"home must be an absolute path\\n\";;\n    esac\n    case \"${passwd}\" in\n        -)\n            _passwd=\"\"\n            ;;\n        !=*)\n            _passwd='!'\"$( encode_password \"${passwd#!=}\" )\"\n            ;;\n        =*)\n            _passwd=\"$( encode_password \"${passwd#=}\" )\"\n            ;;\n        *)\n            _passwd=\"${passwd}\"\n            ;;\n    esac\n\n    if [ -f ${PASSWD} ]; then\n        printf \"%s:x:%d:%d:%s:%s:%s\\n\"              \\\n               \"${username}\" \"${uid}\" \"${_gid}\"     \\\n               \"${comment}\" \"${_home}\" \"${_shell}\"  \\\n               >>\"${PASSWD}\"\n    fi\n    if [ -f ${SHADOW} ]; then\n        printf \"%s:%s:::::::\\n\"      \\\n               \"${username}\" \"${_passwd}\"   \\\n               >>\"${SHADOW}\"\n    fi\n\n    # Add the user to its additional groups\n    if [ \"${groups}\" != \"-\" ]; then\n        for _group in ${groups//,/ }; do\n            add_user_to_group \"${username}\" \"${_group}\"\n        done\n    fi\n\n    # If the user has a home, chown it\n    # (Note: stdout goes to the fakeroot-script)\n    if [ \"${home}\" != \"-\" ]; then\n        if mkdir -p \"${TARGET_DIR}/${home}\"; then\n            printf \"chown -h -R %d:%d '%s'\\n\" \"${uid}\" \"${_gid}\" \"${TARGET_DIR}/${home}\"\n        fi\n    fi\n}\n\n#----------------------------------------------------------------------------\nmain() {\n    local username uid group gid passwd home shell groups comment\n    local line\n    local -a ENTRIES\n\n    # Some sanity checks\n    if [ ${MIN_UID} -le 0 ]; then\n        fail \"MIN_UID must be >0 (currently %d)\\n\" ${MIN_UID}\n    fi\n    if [ ${MIN_GID} -le 0 ]; then\n        fail \"MIN_GID must be >0 (currently %d)\\n\" ${MIN_GID}\n    fi\n\n    # Read in all the file in memory, exclude empty lines and comments\n    while read line; do\n        ENTRIES+=( \"${line}\" )\n    done < <( sed -r -e 's/#.*//; /^[[:space:]]*$/d;' \"${USERS_TABLE}\" )\n\n    # We first create groups whose gid is not -1, and then we create groups\n    # whose gid is -1 (automatic), so that, if a group is defined both with\n    # a specified gid and an automatic gid, we ensure the specified gid is\n    # used, rather than a different automatic gid is computed.\n\n    # First, create all the main groups which gid is *not* automatic\n    for line in \"${ENTRIES[@]}\"; do\n        read username uid group gid passwd home shell groups comment <<<\"${line}\"\n        [ ${gid} -ge 0 ] || continue    # Automatic gid\n        add_one_group \"${group}\" \"${gid}\"\n    done\n\n    # Then, create all the main groups which gid *is* automatic\n    for line in \"${ENTRIES[@]}\"; do\n        read username uid group gid passwd home shell groups comment <<<\"${line}\"\n        [ ${gid} -eq -1 ] || continue    # Non-automatic gid\n        add_one_group \"${group}\" \"${gid}\"\n    done\n\n    # Then, create all the additional groups\n    # If any additional group is already a main group, we should use\n    # the gid of that main group; otherwise, we can use any gid\n    for line in \"${ENTRIES[@]}\"; do\n        read username uid group gid passwd home shell groups comment <<<\"${line}\"\n        if [ \"${groups}\" != \"-\" ]; then\n            for g in ${groups//,/ }; do\n                add_one_group \"${g}\" -1\n            done\n        fi\n    done\n\n    # When adding users, we do as for groups, in case two packages create\n    # the same user, one with an automatic uid, the other with a specified\n    # uid, to ensure the specified uid is used, rather than an incompatible\n    # uid be generated.\n\n    # Now, add users whose uid is *not* automatic\n    for line in \"${ENTRIES[@]}\"; do\n        read username uid group gid passwd home shell groups comment <<<\"${line}\"\n        [ \"${username}\" != \"-\" ] || continue # Magic string to skip user creation\n        [ ${uid} -ge 0         ] || continue # Automatic uid\n        add_one_user \"${username}\" \"${uid}\" \"${group}\" \"${gid}\" \"${passwd}\" \\\n                     \"${home}\" \"${shell}\" \"${groups}\" \"${comment}\"\n    done\n\n    # Finally, add users whose uid *is* automatic\n    for line in \"${ENTRIES[@]}\"; do\n        read username uid group gid passwd home shell groups comment <<<\"${line}\"\n        [ \"${username}\" != \"-\" ] || continue # Magic string to skip user creation\n        [ ${uid} -eq -1        ] || continue # Non-automatic uid\n        add_one_user \"${username}\" \"${uid}\" \"${group}\" \"${gid}\" \"${passwd}\" \\\n                     \"${home}\" \"${shell}\" \"${groups}\" \"${comment}\"\n    done\n}\n\n#----------------------------------------------------------------------------\nmain \"${@}\"\n"
  },
  {
    "path": "support/scripts/pkg-stats",
    "content": "#!/usr/bin/env python3\n\n# Copyright (C) 2009 by Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n#\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 2 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n# General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n\nimport aiohttp\nimport argparse\nimport asyncio\nimport datetime\nimport fnmatch\nimport os\nfrom collections import defaultdict\nimport re\nimport subprocess\nimport json\nimport sys\n\nbrpath = os.path.normpath(os.path.join(os.path.dirname(__file__), \"..\", \"..\"))\n\nsys.path.append(os.path.join(brpath, \"utils\"))\nfrom getdeveloperlib import parse_developers  # noqa: E402\nfrom cpedb import CPEDB  # noqa: E402\n\nINFRA_RE = re.compile(r\"\\$\\(eval \\$\\(([a-z-]*)-package\\)\\)\")\nURL_RE = re.compile(r\"\\s*https?://\\S*\\s*$\")\n\nRM_API_STATUS_ERROR = 1\nRM_API_STATUS_FOUND_BY_DISTRO = 2\nRM_API_STATUS_FOUND_BY_PATTERN = 3\nRM_API_STATUS_NOT_FOUND = 4\n\n\nclass Defconfig:\n    def __init__(self, name, path):\n        self.name = name\n        self.path = path\n        self.developers = None\n\n    def set_developers(self, developers):\n        \"\"\"\n        Fills in the .developers field\n        \"\"\"\n        self.developers = [\n            developer.name\n            for developer in developers\n            if developer.hasfile(self.path)\n        ]\n\n\ndef get_defconfig_list():\n    \"\"\"\n    Builds the list of Buildroot defconfigs, returning a list of Defconfig\n    objects.\n    \"\"\"\n    return [\n        Defconfig(name[:-len('_defconfig')], os.path.join('configs', name))\n        for name in os.listdir(os.path.join(brpath, 'configs'))\n        if name.endswith('_defconfig')\n    ]\n\n\nclass Package:\n    all_licenses = dict()\n    all_license_files = list()\n    all_versions = dict()\n    all_ignored_cves = dict()\n    all_cpeids = dict()\n    # This is the list of all possible checks. Add new checks to this list so\n    # a tool that post-processeds the json output knows the checks before\n    # iterating over the packages.\n    status_checks = ['cve', 'developers', 'hash', 'license',\n                     'license-files', 'patches', 'pkg-check', 'url', 'version']\n\n    def __init__(self, name, path):\n        self.name = name\n        self.path = path\n        self.pkg_path = os.path.dirname(path)\n        self.infras = None\n        self.license = None\n        self.has_license = False\n        self.has_license_files = False\n        self.has_hash = False\n        self.patch_files = []\n        self.warnings = 0\n        self.current_version = None\n        self.url = None\n        self.url_worker = None\n        self.cpeid = None\n        self.cves = list()\n        self.ignored_cves = list()\n        self.latest_version = {'status': RM_API_STATUS_ERROR, 'version': None, 'id': None}\n        self.status = {}\n\n    def pkgvar(self):\n        return self.name.upper().replace(\"-\", \"_\")\n\n    def set_url(self):\n        \"\"\"\n        Fills in the .url field\n        \"\"\"\n        self.status['url'] = (\"warning\", \"no Config.in\")\n        pkgdir = os.path.dirname(os.path.join(brpath, self.path))\n        for filename in os.listdir(pkgdir):\n            if fnmatch.fnmatch(filename, 'Config.*'):\n                fp = open(os.path.join(pkgdir, filename), \"r\")\n                for config_line in fp:\n                    if URL_RE.match(config_line):\n                        self.url = config_line.strip()\n                        self.status['url'] = (\"ok\", \"found\")\n                        fp.close()\n                        return\n                self.status['url'] = (\"error\", \"missing\")\n                fp.close()\n\n    @property\n    def patch_count(self):\n        return len(self.patch_files)\n\n    @property\n    def has_valid_infra(self):\n        if self.infras is None:\n            return False\n        return len(self.infras) > 0\n\n    @property\n    def is_actual_package(self):\n        try:\n            if not self.has_valid_infra:\n                return False\n            if self.infras[0][1] == 'virtual':\n                return False\n        except IndexError:\n            return False\n        return True\n\n    def set_infra(self):\n        \"\"\"\n        Fills in the .infras field\n        \"\"\"\n        self.infras = list()\n        with open(os.path.join(brpath, self.path), 'r') as f:\n            lines = f.readlines()\n            for line in lines:\n                match = INFRA_RE.match(line)\n                if not match:\n                    continue\n                infra = match.group(1)\n                if infra.startswith(\"host-\"):\n                    self.infras.append((\"host\", infra[5:]))\n                else:\n                    self.infras.append((\"target\", infra))\n\n    def set_license(self):\n        \"\"\"\n        Fills in the .status['license'] and .status['license-files'] fields\n        \"\"\"\n        if not self.is_actual_package:\n            self.status['license'] = (\"na\", \"no valid package infra\")\n            self.status['license-files'] = (\"na\", \"no valid package infra\")\n            return\n\n        var = self.pkgvar()\n        self.status['license'] = (\"error\", \"missing\")\n        self.status['license-files'] = (\"error\", \"missing\")\n        if var in self.all_licenses:\n            self.license = self.all_licenses[var]\n            self.status['license'] = (\"ok\", \"found\")\n        if var in self.all_license_files:\n            self.status['license-files'] = (\"ok\", \"found\")\n\n    def set_hash_info(self):\n        \"\"\"\n        Fills in the .status['hash'] field\n        \"\"\"\n        if not self.is_actual_package:\n            self.status['hash'] = (\"na\", \"no valid package infra\")\n            self.status['hash-license'] = (\"na\", \"no valid package infra\")\n            return\n\n        hashpath = self.path.replace(\".mk\", \".hash\")\n        if os.path.exists(os.path.join(brpath, hashpath)):\n            self.status['hash'] = (\"ok\", \"found\")\n        else:\n            self.status['hash'] = (\"error\", \"missing\")\n\n    def set_patch_count(self):\n        \"\"\"\n        Fills in the .patch_count, .patch_files and .status['patches'] fields\n        \"\"\"\n        if not self.is_actual_package:\n            self.status['patches'] = (\"na\", \"no valid package infra\")\n            return\n\n        pkgdir = os.path.dirname(os.path.join(brpath, self.path))\n        for subdir, _, _ in os.walk(pkgdir):\n            self.patch_files = fnmatch.filter(os.listdir(subdir), '*.patch')\n\n        if self.patch_count == 0:\n            self.status['patches'] = (\"ok\", \"no patches\")\n        elif self.patch_count < 5:\n            self.status['patches'] = (\"warning\", \"some patches\")\n        else:\n            self.status['patches'] = (\"error\", \"lots of patches\")\n\n    def set_current_version(self):\n        \"\"\"\n        Fills in the .current_version field\n        \"\"\"\n        var = self.pkgvar()\n        if var in self.all_versions:\n            self.current_version = self.all_versions[var]\n\n    def set_cpeid(self):\n        \"\"\"\n        Fills in the .cpeid field\n        \"\"\"\n        var = self.pkgvar()\n        if not self.is_actual_package:\n            self.status['cpe'] = (\"na\", \"N/A - virtual pkg\")\n            return\n        if not self.current_version:\n            self.status['cpe'] = (\"na\", \"no version information available\")\n            return\n\n        if var in self.all_cpeids:\n            self.cpeid = self.all_cpeids[var]\n            # Set a preliminary status, it might be overridden by check_package_cpes()\n            self.status['cpe'] = (\"warning\", \"not checked against CPE dictionnary\")\n        else:\n            self.status['cpe'] = (\"error\", \"no verified CPE identifier\")\n\n    def set_check_package_warnings(self):\n        \"\"\"\n        Fills in the .warnings and .status['pkg-check'] fields\n        \"\"\"\n        cmd = [os.path.join(brpath, \"utils/check-package\")]\n        pkgdir = os.path.dirname(os.path.join(brpath, self.path))\n        self.status['pkg-check'] = (\"error\", \"Missing\")\n        for root, dirs, files in os.walk(pkgdir):\n            for f in files:\n                if f.endswith(\".mk\") or f.endswith(\".hash\") or f == \"Config.in\" or f == \"Config.in.host\":\n                    cmd.append(os.path.join(root, f))\n        o = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[1]\n        lines = o.splitlines()\n        for line in lines:\n            m = re.match(\"^([0-9]*) warnings generated\", line.decode())\n            if m:\n                self.warnings = int(m.group(1))\n                if self.warnings == 0:\n                    self.status['pkg-check'] = (\"ok\", \"no warnings\")\n                else:\n                    self.status['pkg-check'] = (\"error\", \"{} warnings\".format(self.warnings))\n                return\n\n    def set_ignored_cves(self):\n        \"\"\"\n        Give the list of CVEs ignored by the package\n        \"\"\"\n        self.ignored_cves = list(self.all_ignored_cves.get(self.pkgvar(), []))\n\n    def set_developers(self, developers):\n        \"\"\"\n        Fills in the .developers and .status['developers'] field\n        \"\"\"\n        self.developers = [\n            dev.name\n            for dev in developers\n            if dev.hasfile(self.path)\n        ]\n\n        if self.developers:\n            self.status['developers'] = (\"ok\", \"{} developers\".format(len(self.developers)))\n        else:\n            self.status['developers'] = (\"warning\", \"no developers\")\n\n    def is_status_ok(self, name):\n        return name in self.status and self.status[name][0] == 'ok'\n\n    def is_status_error(self, name):\n        return name in self.status and self.status[name][0] == 'error'\n\n    def is_status_na(self, name):\n        return name in self.status and self.status[name][0] == 'na'\n\n    def __eq__(self, other):\n        return self.path == other.path\n\n    def __lt__(self, other):\n        return self.path < other.path\n\n    def __str__(self):\n        return \"%s (path='%s', license='%s', license_files='%s', hash='%s', patches=%d)\" % \\\n            (self.name, self.path, self.is_status_ok('license'),\n             self.is_status_ok('license-files'), self.status['hash'], self.patch_count)\n\n\ndef get_pkglist(npackages, package_list):\n    \"\"\"\n    Builds the list of Buildroot packages, returning a list of Package\n    objects. Only the .name and .path fields of the Package object are\n    initialized.\n\n    npackages: limit to N packages\n    package_list: limit to those packages in this list\n    \"\"\"\n    WALK_USEFUL_SUBDIRS = [\"boot\", \"linux\", \"package\", \"toolchain\"]\n    WALK_EXCLUDES = [\"boot/common.mk\",\n                     \"linux/linux-ext-.*.mk\",\n                     \"package/freescale-imx/freescale-imx.mk\",\n                     \"package/gcc/gcc.mk\",\n                     \"package/gstreamer/gstreamer.mk\",\n                     \"package/gstreamer1/gstreamer1.mk\",\n                     \"package/gtk2-themes/gtk2-themes.mk\",\n                     \"package/matchbox/matchbox.mk\",\n                     \"package/opengl/opengl.mk\",\n                     \"package/qt5/qt5.mk\",\n                     \"package/x11r7/x11r7.mk\",\n                     \"package/doc-asciidoc.mk\",\n                     \"package/pkg-.*.mk\",\n                     \"toolchain/toolchain-external/pkg-toolchain-external.mk\",\n                     \"toolchain/toolchain-external/toolchain-external.mk\",\n                     \"toolchain/toolchain.mk\",\n                     \"toolchain/helpers.mk\",\n                     \"toolchain/toolchain-wrapper.mk\"]\n    packages = list()\n    count = 0\n    for root, dirs, files in os.walk(brpath):\n        root = os.path.relpath(root, brpath)\n        rootdir = root.split(\"/\")\n        if len(rootdir) < 1:\n            continue\n        if rootdir[0] not in WALK_USEFUL_SUBDIRS:\n            continue\n        for f in files:\n            if not f.endswith(\".mk\"):\n                continue\n            # Strip ending \".mk\"\n            pkgname = f[:-3]\n            if package_list and pkgname not in package_list:\n                continue\n            pkgpath = os.path.join(root, f)\n            skip = False\n            for exclude in WALK_EXCLUDES:\n                if re.match(exclude, pkgpath):\n                    skip = True\n                    continue\n            if skip:\n                continue\n            p = Package(pkgname, pkgpath)\n            packages.append(p)\n            count += 1\n            if npackages and count == npackages:\n                return packages\n    return packages\n\n\ndef get_config_packages():\n    cmd = [\"make\", \"--no-print-directory\", \"show-info\"]\n    js = json.loads(subprocess.check_output(cmd))\n    return set([v[\"name\"] for v in js.values()])\n\n\ndef package_init_make_info():\n    # Fetch all variables at once\n    variables = subprocess.check_output([\"make\", \"BR2_HAVE_DOT_CONFIG=y\", \"-s\", \"printvars\",\n                                         \"VARS=%_LICENSE %_LICENSE_FILES %_VERSION %_IGNORE_CVES %_CPE_ID\"])\n    variable_list = variables.decode().splitlines()\n\n    # We process first the host package VERSION, and then the target\n    # package VERSION. This means that if a package exists in both\n    # target and host variants, with different values (eg. version\n    # numbers (unlikely)), we'll report the target one.\n    variable_list = [x[5:] for x in variable_list if x.startswith(\"HOST_\")] + \\\n                    [x for x in variable_list if not x.startswith(\"HOST_\")]\n\n    for item in variable_list:\n        # Get variable name and value\n        pkgvar, value = item.split(\"=\", maxsplit=1)\n\n        # Strip the suffix according to the variable\n        if pkgvar.endswith(\"_LICENSE\"):\n            # If value is \"unknown\", no license details available\n            if value == \"unknown\":\n                continue\n            pkgvar = pkgvar[:-8]\n            Package.all_licenses[pkgvar] = value\n\n        elif pkgvar.endswith(\"_LICENSE_FILES\"):\n            if pkgvar.endswith(\"_MANIFEST_LICENSE_FILES\"):\n                continue\n            pkgvar = pkgvar[:-14]\n            Package.all_license_files.append(pkgvar)\n\n        elif pkgvar.endswith(\"_VERSION\"):\n            if pkgvar.endswith(\"_DL_VERSION\"):\n                continue\n            pkgvar = pkgvar[:-8]\n            Package.all_versions[pkgvar] = value\n\n        elif pkgvar.endswith(\"_IGNORE_CVES\"):\n            pkgvar = pkgvar[:-12]\n            Package.all_ignored_cves[pkgvar] = value.split()\n\n        elif pkgvar.endswith(\"_CPE_ID\"):\n            pkgvar = pkgvar[:-7]\n            Package.all_cpeids[pkgvar] = value\n\n\ncheck_url_count = 0\n\n\nasync def check_url_status(session, pkg, npkgs, retry=True):\n    global check_url_count\n\n    try:\n        async with session.get(pkg.url) as resp:\n            if resp.status >= 400:\n                pkg.status['url'] = (\"error\", \"invalid {}\".format(resp.status))\n                check_url_count += 1\n                print(\"[%04d/%04d] %s\" % (check_url_count, npkgs, pkg.name))\n                return\n    except (aiohttp.ClientError, asyncio.TimeoutError):\n        if retry:\n            return await check_url_status(session, pkg, npkgs, retry=False)\n        else:\n            pkg.status['url'] = (\"error\", \"invalid (err)\")\n            check_url_count += 1\n            print(\"[%04d/%04d] %s\" % (check_url_count, npkgs, pkg.name))\n            return\n\n    pkg.status['url'] = (\"ok\", \"valid\")\n    check_url_count += 1\n    print(\"[%04d/%04d] %s\" % (check_url_count, npkgs, pkg.name))\n\n\nasync def check_package_urls(packages):\n    tasks = []\n    connector = aiohttp.TCPConnector(limit_per_host=5)\n    async with aiohttp.ClientSession(connector=connector, trust_env=True) as sess:\n        packages = [p for p in packages if p.status['url'][0] == 'ok']\n        for pkg in packages:\n            tasks.append(asyncio.ensure_future(check_url_status(sess, pkg, len(packages))))\n        await asyncio.wait(tasks)\n\n\ndef check_package_latest_version_set_status(pkg, status, version, identifier):\n    pkg.latest_version = {\n        \"status\": status,\n        \"version\": version,\n        \"id\": identifier,\n    }\n\n    if pkg.latest_version['status'] == RM_API_STATUS_ERROR:\n        pkg.status['version'] = ('warning', \"Release Monitoring API error\")\n    elif pkg.latest_version['status'] == RM_API_STATUS_NOT_FOUND:\n        pkg.status['version'] = ('warning', \"Package not found on Release Monitoring\")\n\n    if pkg.latest_version['version'] is None:\n        pkg.status['version'] = ('warning', \"No upstream version available on Release Monitoring\")\n    elif pkg.latest_version['version'] != pkg.current_version:\n        pkg.status['version'] = ('error', \"The newer version {} is available upstream\".format(pkg.latest_version['version']))\n    else:\n        pkg.status['version'] = ('ok', 'up-to-date')\n\n\nasync def check_package_get_latest_version_by_distro(session, pkg, retry=True):\n    url = \"https://release-monitoring.org//api/project/Buildroot/%s\" % pkg.name\n    try:\n        async with session.get(url) as resp:\n            if resp.status != 200:\n                return False\n\n            data = await resp.json()\n            version = data['stable_versions'][0] if 'stable_versions' in data else data['version'] if 'version' in data else None\n            check_package_latest_version_set_status(pkg,\n                                                    RM_API_STATUS_FOUND_BY_DISTRO,\n                                                    version,\n                                                    data['id'])\n            return True\n\n    except (aiohttp.ClientError, asyncio.TimeoutError):\n        if retry:\n            return await check_package_get_latest_version_by_distro(session, pkg, retry=False)\n        else:\n            return False\n\n\nasync def check_package_get_latest_version_by_guess(session, pkg, retry=True):\n    url = \"https://release-monitoring.org/api/projects/?pattern=%s\" % pkg.name\n    try:\n        async with session.get(url) as resp:\n            if resp.status != 200:\n                return False\n\n            data = await resp.json()\n            # filter projects that have the right name and a version defined\n            projects = [p for p in data['projects'] if p['name'] == pkg.name and 'stable_versions' in p]\n            projects.sort(key=lambda x: x['id'])\n\n            if len(projects) > 0:\n                check_package_latest_version_set_status(pkg,\n                                                        RM_API_STATUS_FOUND_BY_PATTERN,\n                                                        projects[0]['stable_versions'][0],\n                                                        projects[0]['id'])\n                return True\n\n    except (aiohttp.ClientError, asyncio.TimeoutError):\n        if retry:\n            return await check_package_get_latest_version_by_guess(session, pkg, retry=False)\n        else:\n            return False\n\n\ncheck_latest_count = 0\n\n\nasync def check_package_latest_version_get(session, pkg, npkgs):\n    global check_latest_count\n\n    if await check_package_get_latest_version_by_distro(session, pkg):\n        check_latest_count += 1\n        print(\"[%04d/%04d] %s\" % (check_latest_count, npkgs, pkg.name))\n        return\n\n    if await check_package_get_latest_version_by_guess(session, pkg):\n        check_latest_count += 1\n        print(\"[%04d/%04d] %s\" % (check_latest_count, npkgs, pkg.name))\n        return\n\n    check_package_latest_version_set_status(pkg,\n                                            RM_API_STATUS_NOT_FOUND,\n                                            None, None)\n    check_latest_count += 1\n    print(\"[%04d/%04d] %s\" % (check_latest_count, npkgs, pkg.name))\n\n\nasync def check_package_latest_version(packages):\n    \"\"\"\n    Fills in the .latest_version field of all Package objects\n\n    This field is a dict and has the following keys:\n\n    - status: one of RM_API_STATUS_ERROR,\n      RM_API_STATUS_FOUND_BY_DISTRO, RM_API_STATUS_FOUND_BY_PATTERN,\n      RM_API_STATUS_NOT_FOUND\n    - version: string containing the latest version known by\n      release-monitoring.org for this package\n    - id: string containing the id of the project corresponding to this\n      package, as known by release-monitoring.org\n    \"\"\"\n\n    for pkg in [p for p in packages if not p.is_actual_package]:\n        pkg.status['version'] = (\"na\", \"no valid package infra\")\n\n    tasks = []\n    connector = aiohttp.TCPConnector(limit_per_host=5)\n    async with aiohttp.ClientSession(connector=connector, trust_env=True) as sess:\n        packages = [p for p in packages if p.is_actual_package]\n        for pkg in packages:\n            tasks.append(asyncio.ensure_future(check_package_latest_version_get(sess, pkg, len(packages))))\n        await asyncio.wait(tasks)\n\n\ndef check_package_cve_affects(cve, cpe_product_pkgs):\n    for product in cve.affected_products:\n        if product not in cpe_product_pkgs:\n            continue\n        for pkg in cpe_product_pkgs[product]:\n            if cve.affects(pkg.name, pkg.current_version, pkg.ignored_cves, pkg.cpeid) == cve.CVE_AFFECTS:\n                pkg.cves.append(cve.identifier)\n\n\ndef check_package_cves(nvd_path, packages):\n    if not os.path.isdir(nvd_path):\n        os.makedirs(nvd_path)\n\n    cpe_product_pkgs = defaultdict(list)\n    for pkg in packages:\n        if not pkg.is_actual_package:\n            pkg.status['cve'] = (\"na\", \"N/A\")\n            continue\n        if not pkg.current_version:\n            pkg.status['cve'] = (\"na\", \"no version information available\")\n            continue\n        if pkg.cpeid:\n            cpe_product = cvecheck.cpe_product(pkg.cpeid)\n            cpe_product_pkgs[cpe_product].append(pkg)\n        else:\n            cpe_product_pkgs[pkg.name].append(pkg)\n\n    for cve in cvecheck.CVE.read_nvd_dir(nvd_path):\n        check_package_cve_affects(cve, cpe_product_pkgs)\n\n    for pkg in packages:\n        if 'cve' not in pkg.status:\n            if pkg.cves:\n                pkg.status['cve'] = (\"error\", \"affected by CVEs\")\n            else:\n                pkg.status['cve'] = (\"ok\", \"not affected by CVEs\")\n\n\ndef check_package_cpes(nvd_path, packages):\n    cpedb = CPEDB(nvd_path)\n    cpedb.get_xml_dict()\n    for p in packages:\n        if not p.cpeid:\n            continue\n        if cpedb.find(p.cpeid):\n            p.status['cpe'] = (\"ok\", \"verified CPE identifier\")\n        else:\n            p.status['cpe'] = (\"error\", \"CPE version unknown in CPE database\")\n\n\ndef calculate_stats(packages):\n    stats = defaultdict(int)\n    stats['packages'] = len(packages)\n    for pkg in packages:\n        # If packages have multiple infra, take the first one. For the\n        # vast majority of packages, the target and host infra are the\n        # same. There are very few packages that use a different infra\n        # for the host and target variants.\n        if len(pkg.infras) > 0:\n            infra = pkg.infras[0][1]\n            stats[\"infra-%s\" % infra] += 1\n        else:\n            stats[\"infra-unknown\"] += 1\n        if pkg.is_status_ok('license'):\n            stats[\"license\"] += 1\n        else:\n            stats[\"no-license\"] += 1\n        if pkg.is_status_ok('license-files'):\n            stats[\"license-files\"] += 1\n        else:\n            stats[\"no-license-files\"] += 1\n        if pkg.is_status_ok('hash'):\n            stats[\"hash\"] += 1\n        else:\n            stats[\"no-hash\"] += 1\n        if pkg.latest_version['status'] == RM_API_STATUS_FOUND_BY_DISTRO:\n            stats[\"rmo-mapping\"] += 1\n        else:\n            stats[\"rmo-no-mapping\"] += 1\n        if not pkg.latest_version['version']:\n            stats[\"version-unknown\"] += 1\n        elif pkg.latest_version['version'] == pkg.current_version:\n            stats[\"version-uptodate\"] += 1\n        else:\n            stats[\"version-not-uptodate\"] += 1\n        stats[\"patches\"] += pkg.patch_count\n        stats[\"total-cves\"] += len(pkg.cves)\n        if len(pkg.cves) != 0:\n            stats[\"pkg-cves\"] += 1\n        if pkg.cpeid:\n            stats[\"cpe-id\"] += 1\n        else:\n            stats[\"no-cpe-id\"] += 1\n    return stats\n\n\nhtml_header = \"\"\"\n<head>\n<script src=\\\"https://www.kryogenix.org/code/browser/sorttable/sorttable.js\\\"></script>\n<style type=\\\"text/css\\\">\ntable {\n  width: 100%;\n}\ntd {\n  border: 1px solid black;\n}\ntd.centered {\n  text-align: center;\n}\ntd.wrong {\n  background: #ff9a69;\n}\ntd.correct {\n  background: #d2ffc4;\n}\ntd.nopatches {\n  background: #d2ffc4;\n}\ntd.somepatches {\n  background: #ffd870;\n}\ntd.lotsofpatches {\n  background: #ff9a69;\n}\n\ntd.good_url {\n  background: #d2ffc4;\n}\ntd.missing_url {\n  background: #ffd870;\n}\ntd.invalid_url {\n  background: #ff9a69;\n}\n\ntd.version-good {\n  background: #d2ffc4;\n}\ntd.version-needs-update {\n  background: #ff9a69;\n}\ntd.version-unknown {\n background: #ffd870;\n}\ntd.version-error {\n background: #ccc;\n}\n\ntd.cpe-ok {\n  background: #d2ffc4;\n}\n\ntd.cpe-nok {\n  background: #ff9a69;\n}\n\ntd.cpe-unknown {\n background: #ffd870;\n}\n\ntd.cve-ok {\n  background: #d2ffc4;\n}\n\ntd.cve-nok {\n  background: #ff9a69;\n}\n\ntd.cve-unknown {\n background: #ffd870;\n}\n\ntd.cve_ignored {\n background: #ccc;\n}\n\n</style>\n<title>Statistics of Buildroot packages</title>\n</head>\n\n<a href=\\\"#results\\\">Results</a><br/>\n\n<p id=\\\"sortable_hint\\\"></p>\n\"\"\"\n\n\nhtml_footer = \"\"\"\n</body>\n<script>\nif (typeof sorttable === \\\"object\\\") {\n  document.getElementById(\\\"sortable_hint\\\").innerHTML =\n  \\\"hint: the table can be sorted by clicking the column headers\\\"\n}\n</script>\n</html>\n\"\"\"\n\n\ndef infra_str(infra_list):\n    if not infra_list:\n        return \"Unknown\"\n    elif len(infra_list) == 1:\n        return \"<b>%s</b><br/>%s\" % (infra_list[0][1], infra_list[0][0])\n    elif infra_list[0][1] == infra_list[1][1]:\n        return \"<b>%s</b><br/>%s + %s\" % \\\n            (infra_list[0][1], infra_list[0][0], infra_list[1][0])\n    else:\n        return \"<b>%s</b> (%s)<br/><b>%s</b> (%s)\" % \\\n            (infra_list[0][1], infra_list[0][0],\n             infra_list[1][1], infra_list[1][0])\n\n\ndef boolean_str(b):\n    if b:\n        return \"Yes\"\n    else:\n        return \"No\"\n\n\ndef dump_html_pkg(f, pkg):\n    f.write(\" <tr>\\n\")\n    f.write(\"  <td>%s</td>\\n\" % pkg.path)\n\n    # Patch count\n    td_class = [\"centered\"]\n    if pkg.patch_count == 0:\n        td_class.append(\"nopatches\")\n    elif pkg.patch_count < 5:\n        td_class.append(\"somepatches\")\n    else:\n        td_class.append(\"lotsofpatches\")\n    f.write(\"  <td class=\\\"%s\\\">%s</td>\\n\" %\n            (\" \".join(td_class), str(pkg.patch_count)))\n\n    # Infrastructure\n    infra = infra_str(pkg.infras)\n    td_class = [\"centered\"]\n    if infra == \"Unknown\":\n        td_class.append(\"wrong\")\n    else:\n        td_class.append(\"correct\")\n    f.write(\"  <td class=\\\"%s\\\">%s</td>\\n\" %\n            (\" \".join(td_class), infra_str(pkg.infras)))\n\n    # License\n    td_class = [\"centered\"]\n    if pkg.is_status_ok('license'):\n        td_class.append(\"correct\")\n    else:\n        td_class.append(\"wrong\")\n    f.write(\"  <td class=\\\"%s\\\">%s</td>\\n\" %\n            (\" \".join(td_class), boolean_str(pkg.is_status_ok('license'))))\n\n    # License files\n    td_class = [\"centered\"]\n    if pkg.is_status_ok('license-files'):\n        td_class.append(\"correct\")\n    else:\n        td_class.append(\"wrong\")\n    f.write(\"  <td class=\\\"%s\\\">%s</td>\\n\" %\n            (\" \".join(td_class), boolean_str(pkg.is_status_ok('license-files'))))\n\n    # Hash\n    td_class = [\"centered\"]\n    if pkg.is_status_ok('hash'):\n        td_class.append(\"correct\")\n    else:\n        td_class.append(\"wrong\")\n    f.write(\"  <td class=\\\"%s\\\">%s</td>\\n\" %\n            (\" \".join(td_class), boolean_str(pkg.is_status_ok('hash'))))\n\n    # Current version\n    if len(pkg.current_version) > 20:\n        current_version = pkg.current_version[:20] + \"...\"\n    else:\n        current_version = pkg.current_version\n    f.write(\"  <td class=\\\"centered\\\">%s</td>\\n\" % current_version)\n\n    # Latest version\n    if pkg.latest_version['status'] == RM_API_STATUS_ERROR:\n        td_class.append(\"version-error\")\n    if pkg.latest_version['version'] is None:\n        td_class.append(\"version-unknown\")\n    elif pkg.latest_version['version'] != pkg.current_version:\n        td_class.append(\"version-needs-update\")\n    else:\n        td_class.append(\"version-good\")\n\n    if pkg.latest_version['status'] == RM_API_STATUS_ERROR:\n        latest_version_text = \"<b>Error</b>\"\n    elif pkg.latest_version['status'] == RM_API_STATUS_NOT_FOUND:\n        latest_version_text = \"<b>Not found</b>\"\n    else:\n        if pkg.latest_version['version'] is None:\n            latest_version_text = \"<b>Found, but no version</b>\"\n        else:\n            latest_version_text = \"<a href=\\\"https://release-monitoring.org/project/%s\\\"><b>%s</b></a>\" % \\\n                (pkg.latest_version['id'], str(pkg.latest_version['version']))\n\n        latest_version_text += \"<br/>\"\n\n        if pkg.latest_version['status'] == RM_API_STATUS_FOUND_BY_DISTRO:\n            latest_version_text += \"found by <a href=\\\"https://release-monitoring.org/distro/Buildroot/\\\">distro</a>\"\n        else:\n            latest_version_text += \"found by guess\"\n\n    f.write(\"  <td class=\\\"%s\\\">%s</td>\\n\" %\n            (\" \".join(td_class), latest_version_text))\n\n    # Warnings\n    td_class = [\"centered\"]\n    if pkg.warnings == 0:\n        td_class.append(\"correct\")\n    else:\n        td_class.append(\"wrong\")\n    f.write(\"  <td class=\\\"%s\\\">%d</td>\\n\" %\n            (\" \".join(td_class), pkg.warnings))\n\n    # URL status\n    td_class = [\"centered\"]\n    url_str = pkg.status['url'][1]\n    if pkg.status['url'][0] in (\"error\", \"warning\"):\n        td_class.append(\"missing_url\")\n    if pkg.status['url'][0] == \"error\":\n        td_class.append(\"invalid_url\")\n        url_str = \"<a href=%s>%s</a>\" % (pkg.url, pkg.status['url'][1])\n    else:\n        td_class.append(\"good_url\")\n        url_str = \"<a href=%s>Link</a>\" % pkg.url\n    f.write(\"  <td class=\\\"%s\\\">%s</td>\\n\" %\n            (\" \".join(td_class), url_str))\n\n    # CVEs\n    td_class = [\"centered\"]\n    if pkg.is_status_ok(\"cve\"):\n        td_class.append(\"cve-ok\")\n    elif pkg.is_status_error(\"cve\"):\n        td_class.append(\"cve-nok\")\n    elif pkg.is_status_na(\"cve\") and not pkg.is_actual_package:\n        td_class.append(\"cve-ok\")\n    else:\n        td_class.append(\"cve-unknown\")\n    f.write(\"  <td class=\\\"%s\\\">\\n\" % \" \".join(td_class))\n    if pkg.is_status_error(\"cve\"):\n        for cve in pkg.cves:\n            f.write(\"   <a href=\\\"https://security-tracker.debian.org/tracker/%s\\\">%s<br/>\\n\" % (cve, cve))\n    elif pkg.is_status_na(\"cve\"):\n        f.write(\"    %s\" % pkg.status['cve'][1])\n    else:\n        f.write(\"    N/A\\n\")\n    f.write(\"  </td>\\n\")\n\n    # CVEs Ignored\n    td_class = [\"centered\"]\n    if pkg.ignored_cves:\n        td_class.append(\"cve_ignored\")\n    f.write(\"  <td class=\\\"%s\\\">\\n\" % \" \".join(td_class))\n    for ignored_cve in pkg.ignored_cves:\n        f.write(\"    <a href=\\\"https://security-tracker.debian.org/tracker/%s\\\">%s<br/>\\n\" % (ignored_cve, ignored_cve))\n    f.write(\"  </td>\\n\")\n\n    # CPE ID\n    td_class = [\"left\"]\n    if pkg.is_status_ok(\"cpe\"):\n        td_class.append(\"cpe-ok\")\n    elif pkg.is_status_error(\"cpe\"):\n        td_class.append(\"cpe-nok\")\n    elif pkg.is_status_na(\"cpe\") and not pkg.is_actual_package:\n        td_class.append(\"cpe-ok\")\n    else:\n        td_class.append(\"cpe-unknown\")\n    f.write(\"  <td class=\\\"%s\\\">\\n\" % \" \".join(td_class))\n    if pkg.cpeid:\n        f.write(\"  <code>%s</code>\\n\" % pkg.cpeid)\n    if not pkg.is_status_ok(\"cpe\"):\n        if pkg.is_actual_package and pkg.current_version:\n            if pkg.cpeid:\n                f.write(\"  <br/>%s <a href=\\\"https://nvd.nist.gov/products/cpe/search/results?namingFormat=2.3&keyword=%s\\\">(Search)</a>\\n\" %  # noqa: E501\n                        (pkg.status['cpe'][1], \":\".join(pkg.cpeid.split(\":\")[0:5])))\n            else:\n                f.write(\"  %s <a href=\\\"https://nvd.nist.gov/products/cpe/search/results?namingFormat=2.3&keyword=%s\\\">(Search)</a>\\n\" %  # noqa: E501\n                        (pkg.status['cpe'][1], pkg.name))\n        else:\n            f.write(\"  %s\\n\" % pkg.status['cpe'][1])\n\n    f.write(\"  </td>\\n\")\n\n    f.write(\" </tr>\\n\")\n\n\ndef dump_html_all_pkgs(f, packages):\n    f.write(\"\"\"\n<table class=\\\"sortable\\\">\n<tr>\n<td>Package</td>\n<td class=\\\"centered\\\">Patch count</td>\n<td class=\\\"centered\\\">Infrastructure</td>\n<td class=\\\"centered\\\">License</td>\n<td class=\\\"centered\\\">License files</td>\n<td class=\\\"centered\\\">Hash file</td>\n<td class=\\\"centered\\\">Current version</td>\n<td class=\\\"centered\\\">Latest version</td>\n<td class=\\\"centered\\\">Warnings</td>\n<td class=\\\"centered\\\">Upstream URL</td>\n<td class=\\\"centered\\\">CVEs</td>\n<td class=\\\"centered\\\">CVEs Ignored</td>\n<td class=\\\"centered\\\">CPE ID</td>\n</tr>\n\"\"\")\n    for pkg in sorted(packages):\n        dump_html_pkg(f, pkg)\n    f.write(\"</table>\")\n\n\ndef dump_html_stats(f, stats):\n    f.write(\"<a id=\\\"results\\\"></a>\\n\")\n    f.write(\"<table>\\n\")\n    infras = [infra[6:] for infra in stats.keys() if infra.startswith(\"infra-\")]\n    for infra in infras:\n        f.write(\" <tr><td>Packages using the <i>%s</i> infrastructure</td><td>%s</td></tr>\\n\" %\n                (infra, stats[\"infra-%s\" % infra]))\n    f.write(\" <tr><td>Packages having license information</td><td>%s</td></tr>\\n\" %\n            stats[\"license\"])\n    f.write(\" <tr><td>Packages not having license information</td><td>%s</td></tr>\\n\" %\n            stats[\"no-license\"])\n    f.write(\" <tr><td>Packages having license files information</td><td>%s</td></tr>\\n\" %\n            stats[\"license-files\"])\n    f.write(\" <tr><td>Packages not having license files information</td><td>%s</td></tr>\\n\" %\n            stats[\"no-license-files\"])\n    f.write(\" <tr><td>Packages having a hash file</td><td>%s</td></tr>\\n\" %\n            stats[\"hash\"])\n    f.write(\" <tr><td>Packages not having a hash file</td><td>%s</td></tr>\\n\" %\n            stats[\"no-hash\"])\n    f.write(\" <tr><td>Total number of patches</td><td>%s</td></tr>\\n\" %\n            stats[\"patches\"])\n    f.write(\"<tr><td>Packages having a mapping on <i>release-monitoring.org</i></td><td>%s</td></tr>\\n\" %\n            stats[\"rmo-mapping\"])\n    f.write(\"<tr><td>Packages lacking a mapping on <i>release-monitoring.org</i></td><td>%s</td></tr>\\n\" %\n            stats[\"rmo-no-mapping\"])\n    f.write(\"<tr><td>Packages that are up-to-date</td><td>%s</td></tr>\\n\" %\n            stats[\"version-uptodate\"])\n    f.write(\"<tr><td>Packages that are not up-to-date</td><td>%s</td></tr>\\n\" %\n            stats[\"version-not-uptodate\"])\n    f.write(\"<tr><td>Packages with no known upstream version</td><td>%s</td></tr>\\n\" %\n            stats[\"version-unknown\"])\n    f.write(\"<tr><td>Packages affected by CVEs</td><td>%s</td></tr>\\n\" %\n            stats[\"pkg-cves\"])\n    f.write(\"<tr><td>Total number of CVEs affecting all packages</td><td>%s</td></tr>\\n\" %\n            stats[\"total-cves\"])\n    f.write(\"<tr><td>Packages with CPE ID</td><td>%s</td></tr>\\n\" %\n            stats[\"cpe-id\"])\n    f.write(\"<tr><td>Packages without CPE ID</td><td>%s</td></tr>\\n\" %\n            stats[\"no-cpe-id\"])\n    f.write(\"</table>\\n\")\n\n\ndef dump_html_gen_info(f, date, commit):\n    # Updated on Mon Feb 19 08:12:08 CET 2018, Git commit aa77030b8f5e41f1c53eb1c1ad664b8c814ba032\n    f.write(\"<p><i>Updated on %s, git commit %s</i></p>\\n\" % (str(date), commit))\n\n\ndef dump_html(packages, stats, date, commit, output):\n    with open(output, 'w') as f:\n        f.write(html_header)\n        dump_html_all_pkgs(f, packages)\n        dump_html_stats(f, stats)\n        dump_html_gen_info(f, date, commit)\n        f.write(html_footer)\n\n\ndef dump_json(packages, defconfigs, stats, date, commit, output):\n    # Format packages as a dictionnary instead of a list\n    # Exclude local field that does not contains real date\n    excluded_fields = ['url_worker', 'name']\n    pkgs = {\n        pkg.name: {\n            k: v\n            for k, v in pkg.__dict__.items()\n            if k not in excluded_fields\n        } for pkg in packages\n    }\n    defconfigs = {\n        d.name: {\n            k: v\n            for k, v in d.__dict__.items()\n        } for d in defconfigs\n    }\n    # Aggregate infrastructures into a single dict entry\n    statistics = {\n        k: v\n        for k, v in stats.items()\n        if not k.startswith('infra-')\n    }\n    statistics['infra'] = {k[6:]: v for k, v in stats.items() if k.startswith('infra-')}\n    # The actual structure to dump, add commit and date to it\n    final = {'packages': pkgs,\n             'stats': statistics,\n             'defconfigs': defconfigs,\n             'package_status_checks': Package.status_checks,\n             'commit': commit,\n             'date': str(date)}\n\n    with open(output, 'w') as f:\n        json.dump(final, f, indent=2, separators=(',', ': '))\n        f.write('\\n')\n\n\ndef resolvepath(path):\n    return os.path.abspath(os.path.expanduser(path))\n\n\ndef parse_args():\n    parser = argparse.ArgumentParser()\n    output = parser.add_argument_group('output', 'Output file(s)')\n    output.add_argument('--html', dest='html', type=resolvepath,\n                        help='HTML output file')\n    output.add_argument('--json', dest='json', type=resolvepath,\n                        help='JSON output file')\n    packages = parser.add_mutually_exclusive_group()\n    packages.add_argument('-c', dest='configpackages', action='store_true',\n                          help='Apply to packages enabled in current configuration')\n    packages.add_argument('-n', dest='npackages', type=int, action='store',\n                          help='Number of packages')\n    packages.add_argument('-p', dest='packages', action='store',\n                          help='List of packages (comma separated)')\n    parser.add_argument('--nvd-path', dest='nvd_path',\n                        help='Path to the local NVD database', type=resolvepath)\n    args = parser.parse_args()\n    if not args.html and not args.json:\n        parser.error('at least one of --html or --json (or both) is required')\n    return args\n\n\ndef __main__():\n    global cvecheck\n\n    args = parse_args()\n\n    if args.nvd_path:\n        import cve as cvecheck\n\n    if args.packages:\n        package_list = args.packages.split(\",\")\n    elif args.configpackages:\n        package_list = get_config_packages()\n    else:\n        package_list = None\n    date = datetime.datetime.utcnow()\n    commit = subprocess.check_output(['git', '-C', brpath,\n                                      'rev-parse',\n                                      'HEAD']).splitlines()[0].decode()\n    print(\"Build package list ...\")\n    packages = get_pkglist(args.npackages, package_list)\n    print(\"Getting developers ...\")\n    developers = parse_developers()\n    print(\"Build defconfig list ...\")\n    defconfigs = get_defconfig_list()\n    for d in defconfigs:\n        d.set_developers(developers)\n    print(\"Getting package make info ...\")\n    package_init_make_info()\n    print(\"Getting package details ...\")\n    for pkg in packages:\n        pkg.set_infra()\n        pkg.set_license()\n        pkg.set_hash_info()\n        pkg.set_patch_count()\n        pkg.set_check_package_warnings()\n        pkg.set_current_version()\n        pkg.set_cpeid()\n        pkg.set_url()\n        pkg.set_ignored_cves()\n        pkg.set_developers(developers)\n    print(\"Checking URL status\")\n    loop = asyncio.get_event_loop()\n    loop.run_until_complete(check_package_urls(packages))\n    print(\"Getting latest versions ...\")\n    loop = asyncio.get_event_loop()\n    loop.run_until_complete(check_package_latest_version(packages))\n    if args.nvd_path:\n        print(\"Checking packages CVEs\")\n        check_package_cves(args.nvd_path, packages)\n        check_package_cpes(args.nvd_path, packages)\n    print(\"Calculate stats\")\n    stats = calculate_stats(packages)\n    if args.html:\n        print(\"Write HTML\")\n        dump_html(packages, stats, date, commit, args.html)\n    if args.json:\n        print(\"Write JSON\")\n        dump_json(packages, defconfigs, stats, date, commit, args.json)\n\n\n__main__()\n"
  },
  {
    "path": "support/scripts/pycompile.py",
    "content": "#!/usr/bin/env python3\n\n\"\"\"\nByte compile all .py files from provided directories. This script is an\nalternative implementation of compileall.compile_dir written with\ncross-compilation in mind.\n\"\"\"\n\nimport argparse\nimport os\nimport py_compile\nimport re\nimport sys\n\n\ndef compile_one(host_path, strip_root=None, verbose=False):\n    \"\"\"\n    Compile a .py file into a .pyc file located next to it.\n\n    :arg host_path:\n        Absolute path to the file to compile on the host running the build.\n    :arg strip_root:\n        Prefix to remove from the original source paths encoded in compiled\n        files.\n    :arg verbose:\n        Print compiled file paths.\n    \"\"\"\n    if os.path.islink(host_path) or not os.path.isfile(host_path):\n        return  # only compile real files\n\n    if not re.match(r\"^[_A-Za-z][_A-Za-z0-9]*\\.py$\",\n                    os.path.basename(host_path)):\n        return  # only compile \"importable\" python modules\n\n    if strip_root is not None:\n        # determine the runtime path of the file (i.e.: relative path to root\n        # dir prepended with \"/\").\n        runtime_path = os.path.join(\"/\", os.path.relpath(host_path, strip_root))\n    else:\n        runtime_path = host_path\n\n    if verbose:\n        print(\"  PYC  {}\".format(runtime_path))\n\n    # will raise an error if the file cannot be compiled\n    py_compile.compile(host_path, cfile=host_path + \"c\",\n                       dfile=runtime_path, doraise=True)\n\n\ndef existing_dir_abs(arg):\n    \"\"\"\n    argparse type callback that checks that argument is a directory and returns\n    its absolute path.\n    \"\"\"\n    if not os.path.isdir(arg):\n        raise argparse.ArgumentTypeError('no such directory: {!r}'.format(arg))\n    return os.path.abspath(arg)\n\n\ndef main():\n    parser = argparse.ArgumentParser(description=__doc__)\n    parser.add_argument(\"dirs\", metavar=\"DIR\", nargs=\"+\", type=existing_dir_abs,\n                        help=\"Directory to recursively scan and compile\")\n    parser.add_argument(\"--strip-root\", metavar=\"ROOT\", type=existing_dir_abs,\n                        help=\"\"\"\n                        Prefix to remove from the original source paths encoded\n                        in compiled files\n                        \"\"\")\n    parser.add_argument(\"--verbose\", action=\"store_true\",\n                        help=\"Print compiled files\")\n\n    args = parser.parse_args()\n\n    try:\n        for d in args.dirs:\n            if args.strip_root and \"..\" in os.path.relpath(d, args.strip_root):\n                parser.error(\"DIR: not inside ROOT dir: {!r}\".format(d))\n            for parent, _, files in os.walk(d):\n                for f in files:\n                    compile_one(os.path.join(parent, f), args.strip_root,\n                                args.verbose)\n\n    except Exception as e:\n        print(\"error: {}\".format(e))\n        return 1\n\n    return 0\n\n\nif __name__ == \"__main__\":\n    sys.exit(main())\n"
  },
  {
    "path": "support/scripts/setlocalversion",
    "content": "#!/bin/sh\n#\n# This scripts adds local version information from the version\n# control systems git, mercurial (hg) and subversion (svn).\n#\n# If something goes wrong, send a mail the kernel build mailinglist\n# (see MAINTAINERS) and CC Nico Schottelius\n# <nico-linuxsetlocalversion -at- schottelius.org>.\n#\n#\n\nusage() {\n\techo \"Usage: $0 [srctree]\" >&2\n\texit 1\n}\n\ncd \"${1:-.}\" || usage\n\n# Check for git and a git repo.\nif head=`git rev-parse --verify --short HEAD 2>/dev/null`; then\n\n\tatag=\"`git describe 2>/dev/null`\"\n\n\t# Show -g<commit> if we have no tag, or just the tag\n\t# otherwise.\n\tif [ -z \"${atag}\" ] ; then\n\t\tprintf \"%s%s\" -g ${head}\n\telse\n\t\tprintf ${atag}\n\tfi\n\n\t# Is this git on svn?\n\tif git config --get svn-remote.svn.url >/dev/null; then\n\t        printf -- '-svn%s' \"`git svn find-rev $head`\"\n\tfi\n\n\t# Update index only on r/w media\n\t[ -w . ] && git update-index --refresh --unmerged > /dev/null\n\n\t# Check for uncommitted changes\n\tif git diff-index --name-only HEAD | grep -v \"^scripts/package\" \\\n\t    | read dummy; then\n\t\tprintf '%s' -dirty\n\tfi\n\n\t# All done with git\n\texit\nfi\n\n# Check for mercurial and a mercurial repo.\n# In the git case, 'git describe' will show the latest tag, and unless we are\n# exactly on that tag, the number of commits since then, and last commit id.\n# Mimic something similar in the Mercurial case.\nif hgid=`HGRCPATH= hg id --id --tags 2>/dev/null`; then\n\ttag=`printf '%s' \"$hgid\" | cut -d' ' -f2 --only-delimited`\n\n\t# Do we have an untagged version?\n\tif [ -z \"$tag\" -o \"$tag\" = tip ]; then\n\t\t# current revision is not tagged, determine latest tag\n\t\tlatesttag=`HGRCPATH= hg log -r. -T '{latesttag}' 2>/dev/null`\n\t\t# In case there is more than one tag on the latest tagged commit,\n\t\t# 'latesttag' will separate them by colon (:). We'll retain this.\n\t\t# In case there is no tag at all, 'null' will be returned.\n\t\tif [ \"$latesttag\" = \"null\" ]; then\n\t\t\tlatesttag=''\n\t\tfi\n\n\t\t# add the commit id\n\t\tid=`printf '%s' \"$hgid\" | sed 's/[+ ].*//'`\n\t\tprintf '%s%s%s' \"${latesttag}\" -hg \"$id\"\n\telse\n\t\t# current revision is tagged, just print the tag\n\t\tprintf ${tag}\n\tfi\n\n\t# Are there uncommitted changes?\n\t# These are represented by + after the changeset id.\n\tcase \"$hgid\" in\n\t\t*+|*+\\ *) printf '%s' -dirty ;;\n\tesac\n\n\t# All done with mercurial\n\texit\nfi\n\n# Check for svn and a svn repo.\nif rev=`LC_ALL=C svn info 2>/dev/null | grep '^Last Changed Rev'`; then\n\trev=`echo $rev | awk '{print $NF}'`\n\tprintf -- '-svn%s' \"$rev\"\n\n\t# All done with svn\n\texit\nfi\n"
  },
  {
    "path": "support/scripts/size-stats",
    "content": "#!/usr/bin/env python3\n\n# Copyright (C) 2014 by Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 2 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n# General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n\nimport sys\nimport os\nimport os.path\nimport argparse\nimport csv\nimport collections\nimport math\n\ntry:\n    import matplotlib\n    matplotlib.use('Agg')\n    import matplotlib.font_manager as fm\n    import matplotlib.pyplot as plt\nexcept ImportError:\n    sys.stderr.write(\"You need python-matplotlib to generate the size graph\\n\")\n    exit(1)\n\n\nclass Config:\n    biggest_first = False\n    iec = False\n    size_limit = 0.01\n    colors = ['#e60004', '#f28e00', '#ffed00', '#940084',\n              '#2e1d86', '#0068b5', '#009836', '#97c000']\n\n\n#\n# This function adds a new file to 'filesdict', after checking its\n# size. The 'filesdict' contain the relative path of the file as the\n# key, and as the value a tuple containing the name of the package to\n# which the file belongs and the size of the file.\n#\n# filesdict: the dict to which  the file is added\n# relpath: relative path of the file\n# fullpath: absolute path to the file\n# pkg: package to which the file belongs\n#\ndef add_file(filesdict, relpath, abspath, pkg):\n    if not os.path.exists(abspath):\n        return\n    if os.path.islink(abspath):\n        return\n    sz = os.stat(abspath).st_size\n    filesdict[relpath] = (pkg, sz)\n\n\n#\n# This function returns a dict where each key is the path of a file in\n# the root filesystem, and the value is a tuple containing two\n# elements: the name of the package to which this file belongs and the\n# size of the file.\n#\n# builddir: path to the Buildroot output directory\n#\ndef build_package_dict(builddir):\n    filesdict = {}\n    with open(os.path.join(builddir, \"build\", \"packages-file-list.txt\")) as f:\n        for line in f.readlines():\n            pkg, fpath = line.split(\",\", 1)\n            # remove the initial './' in each file path\n            fpath = fpath.strip()[2:]\n            fullpath = os.path.join(builddir, \"target\", fpath)\n            add_file(filesdict, fpath, fullpath, pkg)\n    return filesdict\n\n\n#\n# This function builds a dictionary that contains the name of a\n# package as key, and the size of the files installed by this package\n# as the value.\n#\n# filesdict: dictionary with the name of the files as key, and as\n# value a tuple containing the name of the package to which the files\n# belongs, and the size of the file. As returned by\n# build_package_dict.\n#\n# builddir: path to the Buildroot output directory\n#\ndef build_package_size(filesdict, builddir):\n    pkgsize = collections.defaultdict(int)\n\n    seeninodes = set()\n    for root, _, files in os.walk(os.path.join(builddir, \"target\")):\n        for f in files:\n            fpath = os.path.join(root, f)\n            if os.path.islink(fpath):\n                continue\n\n            st = os.stat(fpath)\n            if st.st_ino in seeninodes:\n                # hard link\n                continue\n            else:\n                seeninodes.add(st.st_ino)\n\n            frelpath = os.path.relpath(fpath, os.path.join(builddir, \"target\"))\n            if frelpath not in filesdict:\n                print(\"WARNING: %s is not part of any package\" % frelpath)\n                pkg = \"unknown\"\n            else:\n                pkg = filesdict[frelpath][0]\n\n            pkgsize[pkg] += st.st_size\n\n    return pkgsize\n\n\n#\n# Given a dict returned by build_package_size(), this function\n# generates a pie chart of the size installed by each package.\n#\n# pkgsize: dictionary with the name of the package as a key, and the\n# size as the value, as returned by build_package_size.\n#\n# outputf: output file for the graph\n#\ndef draw_graph(pkgsize, outputf):\n    def size2string(sz):\n        if Config.iec:\n            divider = 1024.0\n            prefixes = ['', 'Ki', 'Mi', 'Gi', 'Ti']\n        else:\n            divider = 1000.0\n            prefixes = ['', 'k', 'M', 'G', 'T']\n        while sz > divider and len(prefixes) > 1:\n            prefixes = prefixes[1:]\n            sz = sz/divider\n        # precision is made so that there are always at least three meaningful\n        # digits displayed (e.g. '3.14' and '10.4', not just '3' and '10')\n        precision = int(2-math.floor(math.log10(sz))) if sz < 1000 else 0\n        return '{:.{prec}f} {}B'.format(sz, prefixes[0], prec=precision)\n\n    total = sum(pkgsize.values())\n    labels = []\n    values = []\n    other_value = 0\n    unknown_value = 0\n    for (p, sz) in sorted(pkgsize.items(), key=lambda x: x[1],\n                          reverse=Config.biggest_first):\n        if sz < (total * Config.size_limit):\n            other_value += sz\n        elif p == \"unknown\":\n            unknown_value = sz\n        else:\n            labels.append(\"%s (%s)\" % (p, size2string(sz)))\n            values.append(sz)\n    if unknown_value != 0:\n        labels.append(\"Unknown (%s)\" % (size2string(unknown_value)))\n        values.append(unknown_value)\n    if other_value != 0:\n        labels.append(\"Other (%s)\" % (size2string(other_value)))\n        values.append(other_value)\n\n    plt.figure()\n    patches, texts, autotexts = plt.pie(values, labels=labels,\n                                        autopct='%1.1f%%', shadow=True,\n                                        colors=Config.colors)\n    # Reduce text size\n    proptease = fm.FontProperties()\n    proptease.set_size('xx-small')\n    plt.setp(autotexts, fontproperties=proptease)\n    plt.setp(texts, fontproperties=proptease)\n\n    plt.suptitle(\"Filesystem size per package\", fontsize=18, y=.97)\n    plt.title(\"Total filesystem size: %s\" % (size2string(total)), fontsize=10,\n              y=.96)\n    plt.savefig(outputf)\n\n\n#\n# Generate a CSV file with statistics about the size of each file, its\n# size contribution to the package and to the overall system.\n#\n# filesdict: dictionary with the name of the files as key, and as\n# value a tuple containing the name of the package to which the files\n# belongs, and the size of the file. As returned by\n# build_package_dict.\n#\n# pkgsize: dictionary with the name of the package as a key, and the\n# size as the value, as returned by build_package_size.\n#\n# outputf: output CSV file\n#\ndef gen_files_csv(filesdict, pkgsizes, outputf):\n    total = 0\n    for (p, sz) in pkgsizes.items():\n        total += sz\n    with open(outputf, 'w') as csvfile:\n        wr = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)\n        wr.writerow([\"File name\",\n                     \"Package name\",\n                     \"File size\",\n                     \"Package size\",\n                     \"File size in package (%)\",\n                     \"File size in system (%)\"])\n        for f, (pkgname, filesize) in filesdict.items():\n            pkgsize = pkgsizes[pkgname]\n\n            if pkgsize == 0:\n                percent_pkg = 0\n            else:\n                percent_pkg = float(filesize) / pkgsize * 100\n\n            percent_total = float(filesize) / total * 100\n\n            wr.writerow([f, pkgname, filesize, pkgsize,\n                         \"%.1f\" % percent_pkg,\n                         \"%.1f\" % percent_total])\n\n\n#\n# Generate a CSV file with statistics about the size of each package,\n# and their size contribution to the overall system.\n#\n# pkgsize: dictionary with the name of the package as a key, and the\n# size as the value, as returned by build_package_size.\n#\n# outputf: output CSV file\n#\ndef gen_packages_csv(pkgsizes, outputf):\n    total = sum(pkgsizes.values())\n    with open(outputf, 'w') as csvfile:\n        wr = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)\n        wr.writerow([\"Package name\", \"Package size\",\n                     \"Package size in system (%)\"])\n        for (pkg, size) in pkgsizes.items():\n            wr.writerow([pkg, size, \"%.1f\" % (float(size) / total * 100)])\n\n\n#\n# Our special action for --iec, --binary, --si, --decimal\n#\nclass PrefixAction(argparse.Action):\n    def __init__(self, option_strings, dest, **kwargs):\n        for key in [\"type\", \"nargs\"]:\n            if key in kwargs:\n                raise ValueError('\"{}\" not allowed'.format(key))\n        super(PrefixAction, self).__init__(option_strings, dest, nargs=0,\n                                           type=bool, **kwargs)\n\n    def __call__(self, parser, namespace, values, option_string=None):\n        setattr(namespace, self.dest, option_string in [\"--iec\", \"--binary\"])\n\n\ndef main():\n    parser = argparse.ArgumentParser(description='Draw size statistics graphs')\n\n    parser.add_argument(\"--builddir\", '-i', metavar=\"BUILDDIR\", required=True,\n                        help=\"Buildroot output directory\")\n    parser.add_argument(\"--graph\", '-g', metavar=\"GRAPH\",\n                        help=\"Graph output file (.pdf or .png extension)\")\n    parser.add_argument(\"--file-size-csv\", '-f', metavar=\"FILE_SIZE_CSV\",\n                        help=\"CSV output file with file size statistics\")\n    parser.add_argument(\"--package-size-csv\", '-p', metavar=\"PKG_SIZE_CSV\",\n                        help=\"CSV output file with package size statistics\")\n    parser.add_argument(\"--biggest-first\", action='store_true',\n                        help=\"Sort packages in decreasing size order, \" +\n                             \"rather than in increasing size order\")\n    parser.add_argument(\"--iec\", \"--binary\", \"--si\", \"--decimal\",\n                        action=PrefixAction,\n                        help=\"Use IEC (binary, powers of 1024) or SI (decimal, \"\n                             \"powers of 1000, the default) prefixes\")\n    parser.add_argument(\"--size-limit\", \"-l\", type=float,\n                        help='Under this size ratio, files are accounted to ' +\n                             'the generic \"Other\" package. Default: 0.01 (1%%)')\n    args = parser.parse_args()\n\n    Config.biggest_first = args.biggest_first\n    Config.iec = args.iec\n    if args.size_limit is not None:\n        if args.size_limit < 0.0 or args.size_limit > 1.0:\n            parser.error(\"--size-limit must be in [0.0..1.0]\")\n        Config.size_limit = args.size_limit\n\n    # Find out which package installed what files\n    pkgdict = build_package_dict(args.builddir)\n\n    # Collect the size installed by each package\n    pkgsize = build_package_size(pkgdict, args.builddir)\n\n    if args.graph:\n        draw_graph(pkgsize, args.graph)\n    if args.file_size_csv:\n        gen_files_csv(pkgdict, pkgsize, args.file_size_csv)\n    if args.package_size_csv:\n        gen_packages_csv(pkgsize, args.package_size_csv)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "support/testing/conf/binfmt-misc-kernel-fragment.config",
    "content": "# Needed for binfmt_misc service: \"Arbitrary Executable File Formats File System\"\nCONFIG_BINFMT_MISC=y\n"
  },
  {
    "path": "support/testing/conf/docker-compose-kernel.config",
    "content": "# CONFIG_SWAP is not set\nCONFIG_SYSVIPC=y\n# CONFIG_CROSS_MEMORY_ATTACH is not set\nCONFIG_HIGH_RES_TIMERS=y\n# CONFIG_COMPAT_BRK is not set\n# CONFIG_X86_EXTENDED_PLATFORM is not set\nCONFIG_IOSF_MBI=y\nCONFIG_MCORE2=y\n# CONFIG_X86_MCE is not set\n# CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS is not set\nCONFIG_LEGACY_VSYSCALL_NONE=y\n# CONFIG_SUSPEND is not set\n# CONFIG_ACPI is not set\nCONFIG_CPU_IDLE=y\nCONFIG_PCI_MSI=y\n# CONFIG_VIRTUALIZATION is not set\n# CONFIG_IOSCHED_CFQ is not set\n# CONFIG_MQ_IOSCHED_DEADLINE is not set\n# CONFIG_MQ_IOSCHED_KYBER is not set\n# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set\nCONFIG_TRANSPARENT_HUGEPAGE=y\nCONFIG_NET=y\nCONFIG_PACKET=y\nCONFIG_UNIX=y\nCONFIG_INET=y\nCONFIG_IP_MULTICAST=y\nCONFIG_IP_ADVANCED_ROUTER=y\n# CONFIG_INET_XFRM_MODE_TRANSPORT is not set\n# CONFIG_INET_XFRM_MODE_TUNNEL is not set\n# CONFIG_INET_XFRM_MODE_BEET is not set\n# CONFIG_IPV6 is not set\n# CONFIG_NF_CONNTRACK_PROCFS is not set\n# CONFIG_NF_CT_PROTO_DCCP is not set\n# CONFIG_NF_CT_PROTO_SCTP is not set\n# CONFIG_NF_CT_PROTO_UDPLITE is not set\nCONFIG_IP_VS=y\nCONFIG_IP_VS_RR=y\nCONFIG_IP_VS_NFCT=y\n# CONFIG_BRIDGE_IGMP_SNOOPING is not set\n# CONFIG_WIRELESS is not set\nCONFIG_DEVTMPFS=y\nCONFIG_DEVTMPFS_MOUNT=y\nCONFIG_VIRTIO_BLK=y\nCONFIG_NETDEVICES=y\nCONFIG_VIRTIO_NET=y\n# CONFIG_ETHERNET is not set\n# CONFIG_WLAN is not set\n# CONFIG_INPUT_KEYBOARD is not set\n# CONFIG_INPUT_MOUSE is not set\n# CONFIG_SERIO is not set\nCONFIG_VT_HW_CONSOLE_BINDING=y\n# CONFIG_DEVMEM is not set\nCONFIG_SERIAL_8250=y\nCONFIG_SERIAL_8250_CONSOLE=y\n# CONFIG_SERIAL_8250_LPSS is not set\n# CONFIG_SERIAL_8250_MID is not set\n# CONFIG_HW_RANDOM_INTEL is not set\n# CONFIG_HW_RANDOM_AMD is not set\n# CONFIG_HW_RANDOM_VIA is not set\nCONFIG_HW_RANDOM_VIRTIO=y\n# CONFIG_DEVPORT is not set\n# CONFIG_HWMON is not set\n# CONFIG_USB_SUPPORT is not set\nCONFIG_RTC_CLASS=y\nCONFIG_VIRTIO_PCI=y\n# CONFIG_VIRTIO_PCI_LEGACY is not set\n# CONFIG_X86_PLATFORM_DEVICES is not set\n# CONFIG_IOMMU_SUPPORT is not set\nCONFIG_EXT4_FS=y\nCONFIG_TMPFS=y\n# CONFIG_MISC_FILESYSTEMS is not set\n# CONFIG_NETWORK_FILESYSTEMS is not set\nCONFIG_SECURITYFS=y\n# CONFIG_CRYPTO_ECHAINIV is not set\n# CONFIG_CRYPTO_HW is not set\n# CONFIG_UNUSED_SYMBOLS is not set\nCONFIG_UNWINDER_FRAME_POINTER=y\n"
  },
  {
    "path": "support/testing/conf/docker-compose.yml",
    "content": "version: '3'\nservices:\n  busybox:\n    image: \"busybox:latest\"\n    command: httpd -f -h /www/\n    ports:\n      - \"80:80\"\n    volumes:\n      - \"/bin:/www\"\n"
  },
  {
    "path": "support/testing/conf/f2fs-kernel-fragment.config",
    "content": "CONFIG_F2FS_FS=y\nCONFIG_F2FS_STAT_FS=y\nCONFIG_F2FS_FS_XATTR=y\nCONFIG_F2FS_FS_POSIX_ACL=y\nCONFIG_F2FS_FS_SECURITY=y\n"
  },
  {
    "path": "support/testing/conf/grub2-efi.cfg",
    "content": "set root=(cd0)\nset prefix=/boot/grub\n"
  },
  {
    "path": "support/testing/conf/grub2.cfg",
    "content": "set default=\"0\"\nset timeout=\"1\"\n\nmenuentry \"Buildroot\" {\n\tlinux __KERNEL_PATH__ root=/dev/sr0 console=ttyS0,115200\n\tinitrd __INITRD_PATH__\n}\n"
  },
  {
    "path": "support/testing/conf/isolinux.cfg",
    "content": "default 1\nlabel 1\n      kernel __KERNEL_PATH__\n      initrd __INITRD_PATH__\n      append root=/dev/sr0 console=ttyS0,115200\n"
  },
  {
    "path": "support/testing/conf/minimal-x86-qemu-kernel.config",
    "content": "CONFIG_SYSVIPC=y\nCONFIG_MODULES=y\nCONFIG_MODULE_UNLOAD=y\nCONFIG_SMP=y\n# CONFIG_RETPOLINE is not set\nCONFIG_HYPERVISOR_GUEST=y\nCONFIG_PARAVIRT=y\nCONFIG_NET=y\nCONFIG_PACKET=y\nCONFIG_UNIX=y\nCONFIG_INET=y\nCONFIG_VIRTIO_BLK=y\nCONFIG_BLK_DEV_SD=y\nCONFIG_BLK_DEV_SR=y\nCONFIG_SCSI_VIRTIO=y\nCONFIG_ATA=y\nCONFIG_ATA_PIIX=y\nCONFIG_NETDEVICES=y\nCONFIG_VIRTIO_NET=y\nCONFIG_NE2K_PCI=y\nCONFIG_8139CP=y\nCONFIG_INPUT_EVDEV=y\nCONFIG_SERIAL_8250=y\nCONFIG_SERIAL_8250_CONSOLE=y\nCONFIG_VIRTIO_CONSOLE=y\nCONFIG_HW_RANDOM_VIRTIO=m\nCONFIG_DRM=y\nCONFIG_DRM_BOCHS=y\nCONFIG_DRM_QXL=y\nCONFIG_DRM_VIRTIO_GPU=y\nCONFIG_SOUND=y\nCONFIG_SND=y\nCONFIG_SND_HDA_INTEL=y\nCONFIG_SND_HDA_GENERIC=y\nCONFIG_USB=y\nCONFIG_USB_XHCI_HCD=y\nCONFIG_USB_EHCI_HCD=y\nCONFIG_USB_UHCI_HCD=y\nCONFIG_USB_STORAGE=y\nCONFIG_VIRTIO_PCI=y\nCONFIG_VIRTIO_BALLOON=y\nCONFIG_VIRTIO_INPUT=y\nCONFIG_VIRTIO_MMIO=y\nCONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y\nCONFIG_EXT4_FS=y\nCONFIG_ISO9660_FS=y\nCONFIG_ZISOFS=y\nCONFIG_JOLIET=y\nCONFIG_TMPFS=y\nCONFIG_TMPFS_POSIX_ACL=y\n"
  },
  {
    "path": "support/testing/conf/unittest.cfg",
    "content": "[unittest]\nplugins = nose2.plugins.mp\n\n[multiprocess]\nalways-on = True\n"
  },
  {
    "path": "support/testing/infra/__init__.py",
    "content": "import os\nimport re\nimport sys\nimport tempfile\nimport subprocess\nfrom urllib.request import urlopen\nfrom urllib.error import HTTPError, URLError\n\nARTIFACTS_URL = \"http://autobuild.buildroot.net/artefacts/\"\nBASE_DIR = os.path.realpath(os.path.join(os.path.dirname(__file__), \"../../..\"))\n\n\ndef log_file_path(builddir, stage, logtofile=True):\n    \"\"\"Return path to log file\"\"\"\n    return \"{}-{}.log\".format(builddir, stage) if logtofile else None\n\n\ndef open_log_file(builddir, stage, logtofile=True):\n    \"\"\"\n    Open a file for logging and return its handler.\n    If logtofile is True, returns sys.stdout. Otherwise opens a file\n    with a suitable name in the build directory.\n    \"\"\"\n    return open(log_file_path(builddir, stage, logtofile), 'a+') if logtofile else sys.stdout\n\n\ndef basepath(relpath=\"\"):\n    \"\"\"Return the absolute path for a file or directory relative to the Buildroot top directory.\"\"\"\n    return os.path.join(BASE_DIR, relpath)\n\n\ndef filepath(relpath):\n    return os.path.join(BASE_DIR, \"support/testing\", relpath)\n\n\ndef download(dldir, filename):\n    finalpath = os.path.join(dldir, filename)\n    if os.path.exists(finalpath):\n        return finalpath\n\n    if not os.path.exists(dldir):\n        os.makedirs(dldir)\n\n    tmpfile = tempfile.mktemp(dir=dldir)\n    print(\"Downloading to {}\".format(tmpfile))\n\n    try:\n        url_fh = urlopen(os.path.join(ARTIFACTS_URL, filename))\n        with open(tmpfile, \"w+b\") as tmpfile_fh:\n            tmpfile_fh.write(url_fh.read())\n    except (HTTPError, URLError) as err:\n        os.unlink(tmpfile)\n        raise err\n\n    print(\"Renaming from {} to {}\".format(tmpfile, finalpath))\n    os.rename(tmpfile, finalpath)\n    return finalpath\n\n\ndef run_cmd_on_host(builddir, cmd):\n    \"\"\"Call subprocess.check_output and return the text output.\"\"\"\n    out = subprocess.check_output(cmd,\n                                  stderr=open(os.devnull, \"w\"),\n                                  cwd=builddir,\n                                  env={\"LANG\": \"C\"},\n                                  universal_newlines=True)\n    return out\n\n\ndef get_elf_arch_tag(builddir, prefix, fpath, tag):\n    \"\"\"\n    Runs the cross readelf on 'fpath', then extracts the value of tag 'tag'.\n    Example:\n    >>> get_elf_arch_tag('output', 'arm-none-linux-gnueabi-',\n                         'bin/busybox', 'Tag_CPU_arch')\n    v5TEJ\n    >>>\n    \"\"\"\n    cmd = [\"host/bin/{}-readelf\".format(prefix),\n           \"-A\", os.path.join(\"target\", fpath)]\n    out = run_cmd_on_host(builddir, cmd)\n    regexp = re.compile(r\"^  {}: (.*)$\".format(tag))\n    for line in out.splitlines():\n        m = regexp.match(line)\n        if not m:\n            continue\n        return m.group(1)\n    return None\n\n\ndef get_file_arch(builddir, prefix, fpath):\n    return get_elf_arch_tag(builddir, prefix, fpath, \"Tag_CPU_arch\")\n\n\ndef get_elf_prog_interpreter(builddir, prefix, fpath):\n    \"\"\"\n    Runs the cross readelf on 'fpath' to extract the program interpreter\n    name and returns it.\n    Example:\n    >>> get_elf_prog_interpreter('br-tests/TestExternalToolchainLinaroArm',\n                                 'arm-linux-gnueabihf',\n                                 'bin/busybox')\n    /lib/ld-linux-armhf.so.3\n    >>>\n    \"\"\"\n    cmd = [\"host/bin/{}-readelf\".format(prefix),\n           \"-l\", os.path.join(\"target\", fpath)]\n    out = run_cmd_on_host(builddir, cmd)\n    regexp = re.compile(r\"^ *\\[Requesting program interpreter: (.*)\\]$\")\n    for line in out.splitlines():\n        m = regexp.match(line)\n        if not m:\n            continue\n        return m.group(1)\n    return None\n\n\ndef img_round_power2(img):\n    \"\"\"\n    Rounds up the size of an image file to the next power of 2\n    \"\"\"\n    sz = os.stat(img).st_size\n    pow2 = 1\n    while pow2 < sz:\n        pow2 = pow2 << 1\n    with open(img, 'ab') as f:\n        f.truncate(pow2)\n"
  },
  {
    "path": "support/testing/infra/basetest.py",
    "content": "import unittest\nimport os\nimport datetime\n\nfrom infra.builder import Builder\nfrom infra.emulator import Emulator\n\nBASIC_TOOLCHAIN_CONFIG = \\\n    \"\"\"\n    BR2_arm=y\n    BR2_TOOLCHAIN_EXTERNAL=y\n    BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\n    BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\n    BR2_TOOLCHAIN_EXTERNAL_URL=\"https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--uclibc--bleeding-edge-2018.11-1.tar.bz2\"\n    BR2_TOOLCHAIN_EXTERNAL_GCC_8=y\n    BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14=y\n    BR2_TOOLCHAIN_EXTERNAL_LOCALE=y\n    BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y\n    BR2_TOOLCHAIN_EXTERNAL_CXX=y\n    \"\"\"\n\nMINIMAL_CONFIG = \\\n    \"\"\"\n    BR2_INIT_NONE=y\n    BR2_SYSTEM_BIN_SH_NONE=y\n    # BR2_PACKAGE_BUSYBOX is not set\n    # BR2_TARGET_ROOTFS_TAR is not set\n    \"\"\"\n\n\nclass BRConfigTest(unittest.TestCase):\n    config = None\n    br2_external = list()\n    downloaddir = None\n    outputdir = None\n    logtofile = True\n    keepbuilds = False\n    jlevel = 0\n    timeout_multiplier = 1\n\n    def __init__(self, names):\n        super(BRConfigTest, self).__init__(names)\n        self.testname = self.__class__.__name__\n        self.builddir = self.outputdir and os.path.join(self.outputdir, self.testname)\n        self.config += '\\nBR2_DL_DIR=\"{}\"\\n'.format(self.downloaddir)\n        self.config += \"\\nBR2_JLEVEL={}\\n\".format(self.jlevel)\n\n    def show_msg(self, msg):\n        print(\"{} {:40s} {}\".format(datetime.datetime.now().strftime(\"%H:%M:%S\"),\n                                    self.testname, msg))\n\n    def setUp(self):\n        self.show_msg(\"Starting\")\n        self.b = Builder(self.config, self.builddir, self.logtofile)\n\n        if not self.keepbuilds:\n            self.b.delete()\n\n        if not self.b.is_finished():\n            self.b.configure(make_extra_opts=[\"BR2_EXTERNAL={}\".format(\":\".join(self.br2_external))])\n\n    def tearDown(self):\n        self.show_msg(\"Cleaning up\")\n        if self.b and not self.keepbuilds:\n            self.b.delete()\n\n\nclass BRTest(BRConfigTest):\n    def __init__(self, names):\n        super(BRTest, self).__init__(names)\n        self.emulator = None\n\n    def setUp(self):\n        super(BRTest, self).setUp()\n        if not self.b.is_finished():\n            self.show_msg(\"Building\")\n            self.b.build()\n            self.show_msg(\"Building done\")\n\n        self.emulator = Emulator(self.builddir, self.downloaddir,\n                                 self.logtofile, self.timeout_multiplier)\n\n    def tearDown(self):\n        if self.emulator:\n            self.emulator.stop()\n        super(BRTest, self).tearDown()\n\n    # Run the given 'cmd' with a 'timeout' on the target and\n    # assert that the command succeeded\n    def assertRunOk(self, cmd, timeout=-1):\n        _, exit_code = self.emulator.run(cmd, timeout)\n        self.assertEqual(exit_code, 0)\n"
  },
  {
    "path": "support/testing/infra/builder.py",
    "content": "import os\nimport shutil\nimport subprocess\n\nimport infra\n\n\nclass Builder(object):\n    def __init__(self, config, builddir, logtofile):\n        self.config = '\\n'.join([line.lstrip() for line in\n                                 config.splitlines()]) + '\\n'\n        self.builddir = builddir\n        self.logfile = infra.open_log_file(builddir, \"build\", logtofile)\n\n    def is_defconfig_valid(self, configfile, defconfig):\n        \"\"\"Check if the .config is contains all lines present in the defconfig.\"\"\"\n        with open(configfile) as configf:\n            configlines = configf.readlines()\n\n        defconfiglines = defconfig.split(\"\\n\")\n\n        # Check that all the defconfig lines are still present\n        for defconfigline in defconfiglines:\n            if defconfigline + \"\\n\" not in configlines:\n                self.logfile.write(\"WARN: defconfig can't be used\\n\")\n                self.logfile.write(\"      Missing: %s\\n\" % defconfigline.strip())\n                self.logfile.flush()\n                return False\n\n        return True\n\n    def configure(self, make_extra_opts=[], make_extra_env={}):\n        \"\"\"Configure the build.\n\n        make_extra_opts: a list of arguments to be passed to the make\n        command.\n        e.g. make_extra_opts=[\"BR2_EXTERNAL=/path\"]\n\n        make_extra_env: a dict of variables to be appended (or replaced)\n        in the environment that calls make.\n        e.g. make_extra_env={\"BR2_DL_DIR\": \"/path\"}\n        \"\"\"\n        if not os.path.isdir(self.builddir):\n            os.makedirs(self.builddir)\n\n        config_file = os.path.join(self.builddir, \".config\")\n        with open(config_file, \"w+\") as cf:\n            cf.write(self.config)\n        # dump the defconfig to the logfile for easy debugging\n        self.logfile.write(\"> start defconfig\\n\" + self.config +\n                           \"> end defconfig\\n\")\n        self.logfile.flush()\n\n        env = {\"PATH\": os.environ[\"PATH\"]}\n        env.update(make_extra_env)\n\n        cmd = [\"make\",\n               \"O={}\".format(self.builddir)]\n        cmd += make_extra_opts\n        cmd += [\"olddefconfig\"]\n\n        ret = subprocess.call(cmd, stdout=self.logfile, stderr=self.logfile,\n                              cwd=infra.basepath(), env=env)\n        if ret != 0:\n            raise SystemError(\"Cannot olddefconfig\")\n\n        if not self.is_defconfig_valid(config_file, self.config):\n            raise SystemError(\"The defconfig is not valid\")\n\n    def build(self, make_extra_opts=[], make_extra_env={}):\n        \"\"\"Perform the build.\n\n        make_extra_opts: a list of arguments to be passed to the make\n        command. It can include a make target.\n        e.g. make_extra_opts=[\"foo-source\"]\n\n        make_extra_env: a dict of variables to be appended (or replaced)\n        in the environment that calls make.\n        e.g. make_extra_env={\"BR2_DL_DIR\": \"/path\"}\n        \"\"\"\n        env = {\"PATH\": os.environ[\"PATH\"]}\n        if \"http_proxy\" in os.environ:\n            self.logfile.write(\"Using system proxy: \" +\n                               os.environ[\"http_proxy\"] + \"\\n\")\n            env['http_proxy'] = os.environ[\"http_proxy\"]\n            env['https_proxy'] = os.environ[\"http_proxy\"]\n        env.update(make_extra_env)\n\n        cmd = [\"make\", \"-C\", self.builddir]\n        cmd += make_extra_opts\n\n        ret = subprocess.call(cmd, stdout=self.logfile, stderr=self.logfile,\n                              env=env)\n        if ret != 0:\n            raise SystemError(\"Build failed\")\n\n        open(self.stamp_path(), 'a').close()\n\n    def stamp_path(self):\n        return os.path.join(self.builddir, \"build-done\")\n\n    def is_finished(self):\n        return os.path.exists(self.stamp_path())\n\n    def delete(self):\n        if os.path.exists(self.builddir):\n            shutil.rmtree(self.builddir)\n"
  },
  {
    "path": "support/testing/infra/emulator.py",
    "content": "import pexpect\n\nimport infra\n\n\nclass Emulator(object):\n\n    def __init__(self, builddir, downloaddir, logtofile, timeout_multiplier):\n        self.qemu = None\n        self.downloaddir = downloaddir\n        self.logfile = infra.open_log_file(builddir, \"run\", logtofile)\n        # We use elastic runners on the cloud to runs our tests. Those runners\n        # can take a long time to run the emulator. Use a timeout multiplier\n        # when running the tests to avoid sporadic failures.\n        self.timeout_multiplier = timeout_multiplier\n\n    # Start Qemu to boot the system\n    #\n    # arch: Qemu architecture to use\n    #\n    # kernel: path to the kernel image, or the special string\n    # 'builtin'. 'builtin' means a pre-built kernel image will be\n    # downloaded from ARTEFACTS_URL and suitable options are\n    # automatically passed to qemu and added to the kernel cmdline. So\n    # far only armv5, armv7 and i386 builtin kernels are available.\n    # If None, then no kernel is used, and we assume a bootable device\n    # will be specified.\n    #\n    # kernel_cmdline: array of kernel arguments to pass to Qemu -append option\n    #\n    # options: array of command line options to pass to Qemu\n    #\n    def boot(self, arch, kernel=None, kernel_cmdline=None, options=None):\n        if arch in [\"armv7\", \"armv5\"]:\n            qemu_arch = \"arm\"\n        else:\n            qemu_arch = arch\n\n        qemu_cmd = [\"qemu-system-{}\".format(qemu_arch),\n                    \"-serial\", \"stdio\",\n                    \"-display\", \"none\",\n                    \"-m\", \"256\"]\n\n        if options:\n            qemu_cmd += options\n\n        if kernel_cmdline is None:\n            kernel_cmdline = []\n\n        if kernel:\n            if kernel == \"builtin\":\n                if arch in [\"armv7\", \"armv5\"]:\n                    kernel_cmdline.append(\"console=ttyAMA0\")\n\n                if arch == \"armv7\":\n                    kernel = infra.download(self.downloaddir,\n                                            \"kernel-vexpress-5.10.7\")\n                    dtb = infra.download(self.downloaddir,\n                                         \"vexpress-v2p-ca9-5.10.7.dtb\")\n                    qemu_cmd += [\"-dtb\", dtb]\n                    qemu_cmd += [\"-M\", \"vexpress-a9\"]\n                elif arch == \"armv5\":\n                    kernel = infra.download(self.downloaddir,\n                                            \"kernel-versatile-5.10.7\")\n                    dtb = infra.download(self.downloaddir,\n                                         \"versatile-pb-5.10.7.dtb\")\n                    qemu_cmd += [\"-dtb\", dtb]\n                    qemu_cmd += [\"-M\", \"versatilepb\"]\n                    qemu_cmd += [\"-device\", \"virtio-rng-pci\"]\n\n            qemu_cmd += [\"-kernel\", kernel]\n\n        if kernel_cmdline:\n            qemu_cmd += [\"-append\", \" \".join(kernel_cmdline)]\n\n        self.logfile.write(\"> starting qemu with '%s'\\n\" % \" \".join(qemu_cmd))\n        self.qemu = pexpect.spawn(qemu_cmd[0], qemu_cmd[1:],\n                                  timeout=5 * self.timeout_multiplier,\n                                  encoding='utf-8',\n                                  codec_errors='replace',\n                                  env={\"QEMU_AUDIO_DRV\": \"none\"})\n        # We want only stdout into the log to avoid double echo\n        self.qemu.logfile_read = self.logfile\n\n    # Wait for the login prompt to appear, and then login as root with\n    # the provided password, or no password if not specified.\n    def login(self, password=None):\n        # The login prompt can take some time to appear when running multiple\n        # instances in parallel, so set the timeout to a large value\n        index = self.qemu.expect([\"buildroot login:\", pexpect.TIMEOUT],\n                                 timeout=60 * self.timeout_multiplier)\n        if index != 0:\n            self.logfile.write(\"==> System does not boot\")\n            raise SystemError(\"System does not boot\")\n\n        self.qemu.sendline(\"root\")\n        if password:\n            self.qemu.expect(\"Password:\")\n            self.qemu.sendline(password)\n        index = self.qemu.expect([\"# \", pexpect.TIMEOUT])\n        if index != 0:\n            raise SystemError(\"Cannot login\")\n        self.run(\"dmesg -n 1\")\n        # Prevent the shell from wrapping the commands at 80 columns.\n        self.run(\"stty columns 29999\")\n\n    # Run the given 'cmd' with a 'timeout' on the target\n    # return a tuple (output, exit_code)\n    def run(self, cmd, timeout=-1):\n        self.qemu.sendline(cmd)\n        if timeout != -1:\n            timeout *= self.timeout_multiplier\n        self.qemu.expect(\"# \", timeout=timeout)\n        # Remove double carriage return from qemu stdout so str.splitlines()\n        # works as expected.\n        output = self.qemu.before.replace(\"\\r\\r\", \"\\r\").splitlines()[1:]\n\n        self.qemu.sendline(\"echo $?\")\n        self.qemu.expect(\"# \")\n        exit_code = self.qemu.before.splitlines()[2]\n        exit_code = int(exit_code)\n\n        return output, exit_code\n\n    def stop(self):\n        if self.qemu is None:\n            return\n        self.qemu.terminate(force=True)\n"
  },
  {
    "path": "support/testing/run-tests",
    "content": "#!/usr/bin/env python3\nimport argparse\nimport multiprocessing\nimport os\nimport sys\n\nimport nose2\n\nfrom infra.basetest import BRConfigTest\n\n\ndef main():\n    parser = argparse.ArgumentParser(description='Run Buildroot tests')\n    parser.add_argument('testname', nargs='*',\n                        help='list of test cases to execute')\n    parser.add_argument('-l', '--list', action='store_true',\n                        help='list of available test cases')\n    parser.add_argument('-a', '--all', action='store_true',\n                        help='execute all test cases')\n    parser.add_argument('-s', '--stdout', action='store_true',\n                        help='log everything to stdout')\n    parser.add_argument('-o', '--output',\n                        help='output directory')\n    parser.add_argument('-d', '--download',\n                        help='download directory')\n    parser.add_argument('-k', '--keep',\n                        help='keep build directories',\n                        action='store_true')\n    parser.add_argument('-t', '--testcases', type=int, default=1,\n                        help='number of testcases to run simultaneously')\n    parser.add_argument('-j', '--jlevel', type=int,\n                        help='BR2_JLEVEL to use for each testcase')\n    parser.add_argument('--timeout-multiplier', type=int, default=1,\n                        help='increase timeouts (useful for slow machines)')\n\n    args = parser.parse_args()\n\n    script_path = os.path.realpath(__file__)\n    test_dir = os.path.dirname(script_path)\n\n    if args.stdout:\n        BRConfigTest.logtofile = False\n\n    if args.list:\n        print(\"List of tests\")\n        nose2.discover(argv=[script_path,\n                             \"-s\", test_dir,\n                             \"-v\",\n                             \"--collect-only\"],\n                       plugins=[\"nose2.plugins.collect\"])\n        return 0\n\n    if args.download is None:\n        args.download = os.getenv(\"BR2_DL_DIR\")\n        if args.download is None:\n            print(\"Missing download directory, please use -d/--download\")\n            print(\"\")\n            parser.print_help()\n            return 1\n\n    BRConfigTest.downloaddir = os.path.abspath(args.download)\n\n    if args.output is None:\n        print(\"Missing output directory, please use -o/--output\")\n        print(\"\")\n        parser.print_help()\n        return 1\n\n    if not os.path.exists(args.output):\n        os.mkdir(args.output)\n\n    BRConfigTest.outputdir = os.path.abspath(args.output)\n\n    if args.all is False and not args.testname:\n        print(\"No test selected\")\n        print(\"\")\n        parser.print_help()\n        return 1\n\n    BRConfigTest.keepbuilds = args.keep\n\n    if args.testcases != 1:\n        if args.testcases < 1:\n            print(\"Invalid number of testcases to run simultaneously\")\n            print(\"\")\n            parser.print_help()\n            return 1\n        # same default BR2_JLEVEL as package/Makefile.in\n        br2_jlevel = 1 + multiprocessing.cpu_count()\n        each_testcase = br2_jlevel / args.testcases\n        if each_testcase < 1:\n            each_testcase = 1\n        BRConfigTest.jlevel = each_testcase\n\n    if args.jlevel:\n        if args.jlevel < 0:\n            print(\"Invalid BR2_JLEVEL to use for each testcase\")\n            print(\"\")\n            parser.print_help()\n            return 1\n        # the user can override the auto calculated value\n        BRConfigTest.jlevel = args.jlevel\n\n    if args.timeout_multiplier < 1:\n        print(\"Invalid multiplier for timeout values\")\n        print(\"\")\n        parser.print_help()\n        return 1\n    BRConfigTest.timeout_multiplier = args.timeout_multiplier\n\n    nose2_args = [\"-v\",\n                  \"-N\", str(args.testcases),\n                  \"-s\", test_dir,\n                  \"-c\", os.path.join(test_dir, \"conf/unittest.cfg\")]\n\n    if args.testname:\n        nose2_args += args.testname\n\n    nose2.discover(argv=nose2_args)\n\n\nif __name__ == \"__main__\":\n    sys.exit(main())\n"
  },
  {
    "path": "support/testing/tests/__init__.py",
    "content": ""
  },
  {
    "path": "support/testing/tests/boot/__init__.py",
    "content": ""
  },
  {
    "path": "support/testing/tests/boot/test_atf.py",
    "content": "import infra.basetest\n\n\nclass TestATFVexpress(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_aarch64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE=y\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL=\"https://github.com/ARM-software/arm-trusted-firmware.git\"\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION=\"v2.5\"\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM=\"juno\"\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y\n        BR2_TARGET_UBOOT=y\n        BR2_TARGET_UBOOT_BOARDNAME=\"vexpress_aemv8a_juno\"\n        BR2_TARGET_UBOOT_CUSTOM_VERSION=y\n        BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE=\"2020.07\"\n        BR2_TARGET_VEXPRESS_FIRMWARE=y\n        \"\"\"\n\n    def test_run(self):\n        pass\n\n\nclass TestATFAllwinner(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_aarch64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE=y\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE=\"v2.5\"\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM=\"sun50i_a64\"\n        # BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP is not set\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y\n        BR2_TARGET_UBOOT=y\n        BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y\n        BR2_TARGET_UBOOT_CUSTOM_VERSION=y\n        BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE=\"2021.04\"\n        BR2_TARGET_UBOOT_BOARD_DEFCONFIG=\"bananapi_m64\"\n        BR2_TARGET_UBOOT_NEEDS_DTC=y\n        BR2_TARGET_UBOOT_NEEDS_PYTHON3=y\n        BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y\n        BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y\n        BR2_TARGET_UBOOT_SPL=y\n        BR2_TARGET_UBOOT_SPL_NAME=\"u-boot-sunxi-with-spl.bin\"\n        BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS=\"SCP=/dev/null\"\n        \"\"\"\n\n    def test_run(self):\n        pass\n"
  },
  {
    "path": "support/testing/tests/boot/test_edk2.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestEdk2(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_aarch64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TARGET_GENERIC_GETTY_PORT=\"ttyAMA0\"\n        BR2_TARGET_ROOTFS_EXT2=y\n        BR2_TARGET_ROOTFS_EXT2_4=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        BR2_ROOTFS_POST_IMAGE_SCRIPT=\"board/qemu/aarch64-sbsa/assemble-flash-images support/scripts/genimage.sh\"\n        BR2_ROOTFS_POST_SCRIPT_ARGS=\"-c board/qemu/aarch64-sbsa/genimage.cfg\"\n        BR2_LINUX_KERNEL=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"5.10.34\"\n        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y\n        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"board/qemu/aarch64-sbsa/linux.config\"\n        BR2_TARGET_EDK2=y\n        BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA=y\n        BR2_TARGET_GRUB2=y\n        BR2_TARGET_GRUB2_ARM64_EFI=y\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE=y\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM=\"qemu_sbsa\"\n        BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y\n        BR2_PACKAGE_HOST_GENIMAGE=y\n        BR2_PACKAGE_HOST_DOSFSTOOLS=y\n        BR2_PACKAGE_HOST_MTOOLS=y\n        \"\"\"\n\n    def test_run(self):\n        hda = os.path.join(self.builddir, \"images\", \"disk.img\")\n        flash0 = os.path.join(self.builddir, \"images\", \"SBSA_FLASH0.fd\")\n        flash1 = os.path.join(self.builddir, \"images\", \"SBSA_FLASH1.fd\")\n        self.emulator.boot(arch=\"aarch64\",\n                           options=[\"-M\", \"sbsa-ref\",\n                                    \"-cpu\", \"cortex-a57\",\n                                    \"-m\", \"512M\",\n                                    \"-pflash\", flash0,\n                                    \"-pflash\", flash1,\n                                    \"-hda\", hda])\n        self.emulator.login()\n"
  },
  {
    "path": "support/testing/tests/boot/test_syslinux.py",
    "content": "import infra.basetest\n\n\nclass TestSysLinuxBase(infra.basetest.BRTest):\n    x86_toolchain_config = \\\n        \"\"\"\n        BR2_x86_i686=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\n        BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\n        BR2_TOOLCHAIN_EXTERNAL_URL=\"http://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--glibc--bleeding-edge-2018.11-1.tar.bz2\"\n        BR2_TOOLCHAIN_EXTERNAL_GCC_8=y\n        BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y\n        BR2_TOOLCHAIN_EXTERNAL_CXX=y\n        \"\"\"\n\n    x86_64_toolchain_config = \\\n        \"\"\"\n        BR2_x86_64=y\n        BR2_x86_corei7=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\n        BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\n        BR2_TOOLCHAIN_EXTERNAL_URL=\"http://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--glibc--stable-2018.11-1.tar.bz2\"\n        BR2_TOOLCHAIN_EXTERNAL_GCC_7=y\n        BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y\n        BR2_TOOLCHAIN_EXTERNAL_CXX=y\n        BR2_TOOLCHAIN_EXTERNAL_HAS_SSP=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y\n        \"\"\"\n\n    syslinux_legacy_config = \\\n        \"\"\"\n        BR2_TARGET_SYSLINUX=y\n        BR2_TARGET_SYSLINUX_ISOLINUX=y\n        BR2_TARGET_SYSLINUX_PXELINUX=y\n        BR2_TARGET_SYSLINUX_MBR=y\n        \"\"\"\n\n    syslinux_efi_config = \\\n        \"\"\"\n        BR2_TARGET_SYSLINUX=y\n        BR2_TARGET_SYSLINUX_EFI=y\n        \"\"\"\n\n\nclass TestSysLinuxX86LegacyBios(TestSysLinuxBase):\n    config = \\\n        TestSysLinuxBase.x86_toolchain_config + \\\n        infra.basetest.MINIMAL_CONFIG + \\\n        TestSysLinuxBase.syslinux_legacy_config\n\n    def test_run(self):\n        pass\n\n\nclass TestSysLinuxX86EFI(TestSysLinuxBase):\n    config = \\\n        TestSysLinuxBase.x86_toolchain_config + \\\n        infra.basetest.MINIMAL_CONFIG + \\\n        TestSysLinuxBase.syslinux_efi_config\n\n    def test_run(self):\n        pass\n\n\nclass TestSysLinuxX86_64LegacyBios(TestSysLinuxBase):\n    config = \\\n        TestSysLinuxBase.x86_64_toolchain_config + \\\n        infra.basetest.MINIMAL_CONFIG + \\\n        TestSysLinuxBase.syslinux_legacy_config\n\n    def test_run(self):\n        pass\n\n\nclass TestSysLinuxX86_64EFI(TestSysLinuxBase):\n    config = \\\n        TestSysLinuxBase.x86_64_toolchain_config + \\\n        infra.basetest.MINIMAL_CONFIG + \\\n        TestSysLinuxBase.syslinux_efi_config\n\n    def test_run(self):\n        pass\n"
  },
  {
    "path": "support/testing/tests/core/__init__.py",
    "content": ""
  },
  {
    "path": "support/testing/tests/core/br2-external/detect-bad-arch/Config.in",
    "content": "source \"$BR2_EXTERNAL_DETECT_BAD_ARCH_PATH/package/detect-bad-arch/Config.in\"\n"
  },
  {
    "path": "support/testing/tests/core/br2-external/detect-bad-arch/external.desc",
    "content": "name: DETECT_BAD_ARCH\n"
  },
  {
    "path": "support/testing/tests/core/br2-external/detect-bad-arch/external.mk",
    "content": "include $(sort $(wildcard $(BR2_EXTERNAL_DETECT_BAD_ARCH_PATH)/package/*/*.mk))\n"
  },
  {
    "path": "support/testing/tests/core/br2-external/detect-bad-arch/package/detect-bad-arch/Config.in",
    "content": "config BR2_PACKAGE_DETECT_BAD_ARCH\n\tbool\n\tdefault y\n\n"
  },
  {
    "path": "support/testing/tests/core/br2-external/detect-bad-arch/package/detect-bad-arch/detect-bad-arch.mk",
    "content": "################################################################################\n#\n# detect-bad-arch\n#\n################################################################################\n\ndefine DETECT_BAD_ARCH_BUILD_CMDS\n\techo \"int main(void) { return 0; }\" | $(HOSTCC) -x c -o $(@D)/foo -\nendef\n\ndefine DETECT_BAD_ARCH_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 0755 $(@D)/foo $(TARGET_DIR)/usr/bin/foo\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/core/cpeid-br2-external/Config.in",
    "content": ""
  },
  {
    "path": "support/testing/tests/core/cpeid-br2-external/external.desc",
    "content": "name: CPE_ID\n"
  },
  {
    "path": "support/testing/tests/core/cpeid-br2-external/external.mk",
    "content": "include $(sort $(wildcard $(BR2_EXTERNAL_CPE_ID_PATH)/package/*/*.mk))\n"
  },
  {
    "path": "support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg1/cpe-id-pkg1.mk",
    "content": "CPE_ID_PKG1_VERSION = 42\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg2/cpe-id-pkg2.mk",
    "content": "CPE_ID_PKG2_VERSION = 67\n\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg3/cpe-id-pkg3.mk",
    "content": "CPE_ID_PKG3_VERSION = 67\nCPE_ID_PKG3_CPE_ID_VENDOR = cpe-id-pkg3_project\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg4/cpe-id-pkg4.mk",
    "content": "CPE_ID_PKG4_VERSION = 67\nCPE_ID_PKG4_CPE_ID_VENDOR = foo\nCPE_ID_PKG4_CPE_ID_PRODUCT = bar\nCPE_ID_PKG4_CPE_ID_VERSION = 42\nCPE_ID_PKG4_CPE_ID_UPDATE = b2\nCPE_ID_PKG4_CPE_ID_PREFIX = cpe:2.4:a\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg5/cpe-id-pkg5.mk",
    "content": "CPE_ID_PKG5_VERSION = 57\n\nCPE_ID_PKG5_CPE_ID_VENDOR = foo\nCPE_ID_PKG5_CPE_ID_PRODUCT = bar\nCPE_ID_PKG5_CPE_ID_VERSION = 42\nCPE_ID_PKG5_CPE_ID_UPDATE = b2\nCPE_ID_PKG5_CPE_ID_PREFIX = cpe:2.4:a\n\nHOST_CPE_ID_PKG5_CPE_ID_VENDOR = baz\nHOST_CPE_ID_PKG5_CPE_ID_PRODUCT = fuz\nHOST_CPE_ID_PKG5_CPE_ID_VERSION = 43\nHOST_CPE_ID_PKG5_CPE_ID_UPDATE = b3\nHOST_CPE_ID_PKG5_CPE_ID_PREFIX = cpe:2.5:a\n\n$(eval $(generic-package))\n$(eval $(host-generic-package))\n"
  },
  {
    "path": "support/testing/tests/core/device_table2.txt",
    "content": "# <name>\t\t\t\t<type>\t<mode>\t<uid>\t<gid>\t<major>\t<minor>\t<start>\t<inc>\t<count>\n/usr/sbin/getcap                        f       755     0       0\t-\t-\t-\t-\t-\n|xattr cap_sys_nice+eip\n# leading spaces are ignored for xattr\n  |xattr cap_kill+eip\n# leading tabs are ignored for xattr\n\t|xattr cap_sys_time+eip\n"
  },
  {
    "path": "support/testing/tests/core/post-build.sh",
    "content": "#!/bin/sh\n(\nprintf \"arg1,%s\\n\" \"${1}\"\nprintf \"arg2,%s\\n\" \"${2}\"\nprintf \"arg3,%s\\n\" \"${3}\"\nprintf \"TARGET_DIR,%s\\n\" \"${TARGET_DIR}\"\nprintf \"BUILD_DIR,%s\\n\" \"${BUILD_DIR}\"\nprintf \"HOST_DIR,%s\\n\" \"${HOST_DIR}\"\nprintf \"STAGING_DIR,%s\\n\" \"${STAGING_DIR}\"\nprintf \"BINARIES_DIR,%s\\n\" \"${BINARIES_DIR}\"\nprintf \"BR2_CONFIG,%s\\n\" \"${BR2_CONFIG}\"\n) > ${BUILD_DIR}/$(basename \"${0}\" .sh).log\n"
  },
  {
    "path": "support/testing/tests/core/rootfs-overlay1/test-file1",
    "content": "foobar\n"
  },
  {
    "path": "support/testing/tests/core/rootfs-overlay2/etc/test-file2",
    "content": "barfoo\n"
  },
  {
    "path": "support/testing/tests/core/squashfs-xattr-kernel.config",
    "content": "CONFIG_SQUASHFS_XATTR=y\n"
  },
  {
    "path": "support/testing/tests/core/test_bad_arch.py",
    "content": "import infra\nimport infra.basetest\n\n\nclass DetectBadArchTest(infra.basetest.BRConfigTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + infra.basetest.MINIMAL_CONFIG\n    br2_external = [infra.filepath(\"tests/core/br2-external/detect-bad-arch\")]\n\n    def test_run(self):\n        with self.assertRaises(SystemError):\n            self.b.build()\n        logf_path = infra.log_file_path(self.b.builddir, \"build\",\n                                        infra.basetest.BRConfigTest.logtofile)\n        if logf_path:\n            s = 'ERROR: architecture for \"/usr/bin/foo\" is'\n            with open(logf_path, \"r\") as f:\n                lines = [line for line in f.readlines() if line.startswith(s)]\n            self.assertEqual(len(lines), 1)\n"
  },
  {
    "path": "support/testing/tests/core/test_cpeid.py",
    "content": "import infra\nimport subprocess\nimport json\n\n\nclass CpeIdTest(infra.basetest.BRConfigTest):\n    config = \"\"\n    br2_external = [infra.filepath(\"tests/core/cpeid-br2-external\")]\n\n    def get_vars(self, var):\n        cmd = [\"make\", \"--no-print-directory\", \"-C\", self.b.builddir,\n               \"VARS=%s%%\" % var, \"printvars\"]\n        lines = subprocess.check_output(cmd).splitlines()\n        return dict([str(x, \"utf-8\").split(\"=\") for x in lines])\n\n    def get_json(self, pkg):\n        cmd = [\"make\", \"--no-print-directory\", \"-C\", self.b.builddir,\n               \"%s-show-info\" % pkg]\n        return json.loads(subprocess.check_output(cmd))\n\n    def test_pkg1(self):\n        # this package has no CPE ID information, it should not have\n        # any CPE_ID variable defined.\n        pkg_vars = self.get_vars(\"CPE_ID_PKG1_CPE_ID\")\n        cpe_vars = [\"CPE_ID_VALID\", \"CPE_ID_PRODUCT\", \"CPE_ID_VERSION\", \"CPE_ID_UPDATE\",\n                    \"CPE_ID_PREFIX\", \"CPE_ID\"]\n        for v in cpe_vars:\n            self.assertNotIn(\"CPE_ID_PKG1_%s\" % v, pkg_vars)\n        pkg_json = self.get_json(\"cpe-id-pkg1\")\n        self.assertNotIn(\"cpe-id\", pkg_json['cpe-id-pkg1'])\n\n        pkg_vars = self.get_vars(\"HOST_CPE_ID_PKG1_CPE_ID\")\n        for v in cpe_vars:\n            self.assertNotIn(\"HOST_CPE_ID_PKG1_%s\" % v, pkg_vars)\n        pkg_json = self.get_json(\"host-cpe-id-pkg1\")\n        self.assertNotIn(\"cpe-id\", pkg_json['host-cpe-id-pkg1'])\n\n    def test_pkg2(self):\n        # this package has no CPE ID information, it should not have\n        # any CPE_ID variable defined.\n        pkg_vars = self.get_vars(\"HOST_CPE_ID_PKG2_CPE_ID\")\n        cpe_vars = [\"CPE_ID_VALID\", \"CPE_ID_PRODUCT\", \"CPE_ID_VERSION\", \"CPE_ID_UPDATE\",\n                    \"CPE_ID_PREFIX\", \"CPE_ID\"]\n        for v in cpe_vars:\n            self.assertNotIn(\"HOST_CPE_ID_PKG2_%s\" % v, pkg_vars)\n        pkg_json = self.get_json(\"host-cpe-id-pkg2\")\n        self.assertNotIn(\"cpe-id\", pkg_json['host-cpe-id-pkg2'])\n\n    def test_pkg3(self):\n        # this package has just <pkg>_CPE_ID_VENDOR defined, so verify\n        # it has the default CPE_ID value, and that inheritance of the\n        # values for the host package is working\n        pkg_vars = self.get_vars(\"CPE_ID_PKG3_CPE_ID\")\n        self.assertEqual(pkg_vars[\"CPE_ID_PKG3_CPE_ID\"],\n                         \"cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*\")\n        self.assertEqual(pkg_vars[\"CPE_ID_PKG3_CPE_ID_VALID\"], \"YES\")\n        pkg_json = self.get_json(\"cpe-id-pkg3\")\n        self.assertEqual(pkg_json['cpe-id-pkg3']['cpe-id'],\n                         \"cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*\")\n\n        pkg_vars = self.get_vars(\"HOST_CPE_ID_PKG3_CPE_ID\")\n        self.assertEqual(pkg_vars[\"HOST_CPE_ID_PKG3_CPE_ID\"],\n                         \"cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*\")\n        self.assertEqual(pkg_vars[\"HOST_CPE_ID_PKG3_CPE_ID_VALID\"], \"YES\")\n        pkg_json = self.get_json(\"host-cpe-id-pkg3\")\n        self.assertEqual(pkg_json['host-cpe-id-pkg3']['cpe-id'],\n                         \"cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*\")\n\n    def test_pkg4(self):\n        # this package defines\n        # <pkg>_CPE_ID_{VENDOR,PRODUCT,VERSION,UPDATE,PREFIX},\n        # make sure we get the computed <pkg>_CPE_ID, and that it is\n        # inherited by the host variant\n        pkg_vars = self.get_vars(\"CPE_ID_PKG4_CPE_ID\")\n        self.assertEqual(pkg_vars[\"CPE_ID_PKG4_CPE_ID\"],\n                         \"cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*\")\n        self.assertEqual(pkg_vars[\"CPE_ID_PKG4_CPE_ID_VALID\"], \"YES\")\n        pkg_json = self.get_json(\"cpe-id-pkg4\")\n        self.assertEqual(pkg_json['cpe-id-pkg4']['cpe-id'],\n                         \"cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*\")\n\n        pkg_vars = self.get_vars(\"HOST_CPE_ID_PKG4_CPE_ID\")\n        self.assertEqual(pkg_vars[\"HOST_CPE_ID_PKG4_CPE_ID\"],\n                         \"cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*\")\n        self.assertEqual(pkg_vars[\"HOST_CPE_ID_PKG4_CPE_ID_VALID\"], \"YES\")\n        pkg_json = self.get_json(\"host-cpe-id-pkg4\")\n        self.assertEqual(pkg_json['host-cpe-id-pkg4']['cpe-id'],\n                         \"cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*\")\n\n    def test_pkg5(self):\n        # this package defines\n        # <pkg>_CPE_ID_{VENDOR,PRODUCT,VERSION,UPDATE,PREFIX} and\n        # HOST_<pkg>_CPE_ID_{VENDOR,PRODUCT,VERSION,UPDATE,PREFIX}\n        # separately, with different values. Make sure we get the\n        # right <pkg>_CPE_ID and HOST_<pkg>_CPE_ID values.\n        pkg_vars = self.get_vars(\"CPE_ID_PKG5_CPE_ID\")\n        self.assertEqual(pkg_vars[\"CPE_ID_PKG5_CPE_ID\"],\n                         \"cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*\")\n        self.assertEqual(pkg_vars[\"CPE_ID_PKG5_CPE_ID_VALID\"], \"YES\")\n        pkg_json = self.get_json(\"cpe-id-pkg5\")\n        self.assertEqual(pkg_json['cpe-id-pkg5']['cpe-id'],\n                         \"cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*\")\n\n        pkg_vars = self.get_vars(\"HOST_CPE_ID_PKG5_CPE_ID\")\n        self.assertEqual(pkg_vars[\"HOST_CPE_ID_PKG5_CPE_ID\"],\n                         \"cpe:2.5:a:baz:fuz:43:b3:*:*:*:*:*:*\")\n        self.assertEqual(pkg_vars[\"HOST_CPE_ID_PKG5_CPE_ID_VALID\"], \"YES\")\n        pkg_json = self.get_json(\"host-cpe-id-pkg5\")\n        self.assertEqual(pkg_json['host-cpe-id-pkg5']['cpe-id'],\n                         \"cpe:2.5:a:baz:fuz:43:b3:*:*:*:*:*:*\")\n"
  },
  {
    "path": "support/testing/tests/core/test_file_capabilities.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestFileCapabilities(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_ROOTFS_DEVICE_TABLE=\"system/device_table.txt {}\"\n        BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES=y\n        BR2_TARGET_GENERIC_GETTY_PORT=\"ttyAMA0\"\n        BR2_LINUX_KERNEL=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"4.19.204\"\n        BR2_LINUX_KERNEL_DEFCONFIG=\"vexpress\"\n        BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES=\"{}\"\n        BR2_LINUX_KERNEL_DTS_SUPPORT=y\n        BR2_LINUX_KERNEL_INTREE_DTS_NAME=\"vexpress-v2p-ca9\"\n        BR2_PACKAGE_LIBCAP=y\n        BR2_PACKAGE_LIBCAP_TOOLS=y\n        BR2_TARGET_ROOTFS_SQUASHFS=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\".format(infra.filepath(\"tests/core/device_table2.txt\"),\n                   infra.filepath(\"tests/core/squashfs-xattr-kernel.config\"))\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.squashfs\")\n        infra.img_round_power2(img)\n\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=os.path.join(self.builddir, \"images\", \"zImage\"),\n                           kernel_cmdline=[\"root=/dev/mmcblk0\",\n                                           \"rootfstype=squashfs\"],\n                           options=[\"-drive\", \"file={},if=sd,format=raw\".format(img),\n                                    \"-M\", \"vexpress-a9\",\n                                    \"-dtb\", os.path.join(self.builddir, \"images\", \"vexpress-v2p-ca9.dtb\")])\n        self.emulator.login()\n\n        cmd = \"getcap -v /usr/sbin/getcap\"\n        output, _ = self.emulator.run(cmd)\n        self.assertIn(\"cap_kill\", output[0])\n        self.assertIn(\"cap_sys_nice\", output[0])\n        self.assertIn(\"cap_sys_time\", output[0])\n        self.assertIn(\"=eip\", output[0])\n"
  },
  {
    "path": "support/testing/tests/core/test_hardening.py",
    "content": "import os\nimport json\n\nimport infra.basetest\n\n\nclass TestHardeningBase(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_powerpc64=y\n        BR2_powerpc_e5500=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\n        BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\n        BR2_TOOLCHAIN_EXTERNAL_URL=\"https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs/powerpc64-e5500--glibc--stable-2018.02-2.tar.bz2\"\n        BR2_TOOLCHAIN_EXTERNAL_GCC_6=y\n        BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y\n        BR2_TOOLCHAIN_EXTERNAL_CXX=y\n        BR2_PACKAGE_LIGHTTPD=y\n        BR2_PACKAGE_HOST_CHECKSEC=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    checksec_files = [\"usr/sbin/lighttpd\", \"bin/busybox\"]\n\n    def checksec_run(self, target_file):\n        filepath = os.path.join(self.builddir, \"target\", target_file)\n        cmd = [\"host/bin/checksec\", \"--format=json\",\n               \"--file={}\".format(filepath)]\n        # Checksec is being used for elf file analysis only.  There are no\n        # assumptions of target/run-time checks as part of this testing.\n        ret = infra.run_cmd_on_host(self.builddir, cmd)\n        return json.loads(ret)\n\n\nclass TestRelro(TestHardeningBase):\n    config = TestHardeningBase.config + \\\n        \"\"\"\n        BR2_RELRO_FULL=y\n        \"\"\"\n\n    def test_run(self):\n        for f in self.checksec_files:\n            out = self.checksec_run(f)\n            filepath = os.path.join(self.builddir, \"target\", f)\n            self.assertEqual(out[filepath][\"relro\"], \"full\")\n            self.assertEqual(out[filepath][\"pie\"], \"yes\")\n\n\nclass TestRelroPartial(TestHardeningBase):\n    config = TestHardeningBase.config + \\\n        \"\"\"\n        BR2_RELRO_PARTIAL=y\n        # BR2_PIC_PIE is not set\n        \"\"\"\n\n    def test_run(self):\n        for f in self.checksec_files:\n            out = self.checksec_run(f)\n            filepath = os.path.join(self.builddir, \"target\", f)\n            self.assertEqual(out[filepath][\"relro\"], \"partial\")\n            self.assertEqual(out[filepath][\"pie\"], \"no\")\n\n\nclass TestSspNone(TestHardeningBase):\n    config = TestHardeningBase.config + \\\n        \"\"\"\n        BR2_SSP_NONE=y\n        \"\"\"\n\n    def test_run(self):\n        for f in self.checksec_files:\n            out = self.checksec_run(f)\n            filepath = os.path.join(self.builddir, \"target\", f)\n            self.assertEqual(out[filepath][\"canary\"], \"no\")\n\n\nclass TestSspStrong(TestHardeningBase):\n    config = TestHardeningBase.config + \\\n        \"\"\"\n        BR2_SSP_STRONG=y\n        \"\"\"\n\n    def test_run(self):\n        for f in self.checksec_files:\n            out = self.checksec_run(f)\n            filepath = os.path.join(self.builddir, \"target\", f)\n            self.assertEqual(out[filepath][\"canary\"], \"yes\")\n\n\nclass TestFortifyNone(TestHardeningBase):\n    config = TestHardeningBase.config + \\\n        \"\"\"\n        BR2_FORTIFY_SOURCE_NONE=y\n        \"\"\"\n\n    def test_run(self):\n        for f in self.checksec_files:\n            out = self.checksec_run(f)\n            filepath = os.path.join(self.builddir, \"target\", f)\n            self.assertEqual(out[filepath][\"fortified\"], \"0\")\n\n\nclass TestFortifyConserv(TestHardeningBase):\n    config = TestHardeningBase.config + \\\n        \"\"\"\n        BR2_FORTIFY_SOURCE_1=y\n        \"\"\"\n\n    def test_run(self):\n        for f in self.checksec_files:\n            out = self.checksec_run(f)\n            filepath = os.path.join(self.builddir, \"target\", f)\n            self.assertNotEqual(out[filepath][\"fortified\"], \"0\")\n"
  },
  {
    "path": "support/testing/tests/core/test_post_scripts.py",
    "content": "import os\nimport csv\n\nimport infra.basetest\n\n\nclass TestPostScripts(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_INIT_NONE=y\n        BR2_SYSTEM_BIN_SH_NONE=y\n        # BR2_PACKAGE_BUSYBOX is not set\n        BR2_ROOTFS_POST_BUILD_SCRIPT=\"{}\"\n        BR2_ROOTFS_POST_FAKEROOT_SCRIPT=\"{}\"\n        BR2_ROOTFS_POST_IMAGE_SCRIPT=\"{}\"\n        BR2_ROOTFS_POST_SCRIPT_ARGS=\"foobar baz\"\n        \"\"\".format(infra.filepath(\"tests/core/post-build.sh\"),\n                   infra.filepath(\"tests/core/post-fakeroot.sh\"),\n                   infra.filepath(\"tests/core/post-image.sh\"))\n\n    def check_post_log_file(self, f, what, target_dir):\n        lines = {}\n        with open(os.path.join(self.builddir, \"build\", f), newline='') as csvfile:\n            r = csv.reader(csvfile, delimiter=',')\n            for row in r:\n                lines[row[0]] = row[1]\n\n        self.assertEqual(lines[\"arg1\"], what)\n        self.assertEqual(lines[\"arg2\"], \"foobar\")\n        self.assertEqual(lines[\"arg3\"], \"baz\")\n        self.assertEqual(lines[\"TARGET_DIR\"], target_dir)\n        self.assertEqual(lines[\"BUILD_DIR\"], os.path.join(self.builddir, \"build\"))\n        self.assertEqual(lines[\"HOST_DIR\"], os.path.join(self.builddir, \"host\"))\n        staging = os.readlink(os.path.join(self.builddir, \"staging\"))\n        self.assertEqual(lines[\"STAGING_DIR\"], staging)\n        self.assertEqual(lines[\"BINARIES_DIR\"], os.path.join(self.builddir, \"images\"))\n        self.assertEqual(lines[\"BR2_CONFIG\"], os.path.join(self.builddir, \".config\"))\n\n    def test_run(self):\n        self.check_post_log_file(\"post-build.log\",\n                                 os.path.join(self.builddir, \"target\"),\n                                 os.path.join(self.builddir, \"target\"))\n        self.check_post_log_file(\"post-fakeroot.log\",\n                                 os.path.join(self.builddir, \"build/buildroot-fs/tar/target\"),\n                                 os.path.join(self.builddir, \"build/buildroot-fs/tar/target\"))\n        self.check_post_log_file(\"post-image.log\",\n                                 os.path.join(self.builddir, \"images\"),\n                                 os.path.join(self.builddir, \"target\"))\n"
  },
  {
    "path": "support/testing/tests/core/test_root_password.py",
    "content": "import os\nimport infra.basetest\nfrom crypt import crypt\n\n\nclass TestRootPassword(infra.basetest.BRTest):\n    password = \"foo\"\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_CPIO=y\n        BR2_TARGET_ENABLE_ROOT_LOGIN=y\n        BR2_TARGET_GENERIC_ROOT_PASSWD=\"{}\"\n        \"\"\".format(password)\n\n    def test_run(self):\n        # 1. Test by looking hash in the /etc/shadow\n        shadow = os.path.join(self.builddir, \"target\", \"etc\", \"shadow\")\n        with open(shadow, \"r\") as f:\n            users = f.readlines()\n            for user in users:\n                s = user.split(\":\")\n                n, h = s[0], s[1]\n                if n == \"root\":\n                    # Fail if the account is disabled or no password is required\n                    self.assertTrue(h not in [\"\", \"*\"])\n                    # Fail if the hash isn't right\n                    self.assertEqual(crypt(self.password, h), h)\n\n        # 2. Test by attempting to login\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        try:\n            self.emulator.boot(arch=\"armv7\", kernel=\"builtin\",\n                               options=[\"-initrd\", cpio_file])\n            self.emulator.login(self.password)\n        except SystemError:\n            self.fail(\"Unable to login with the password\")\n"
  },
  {
    "path": "support/testing/tests/core/test_rootfs_overlay.py",
    "content": "import os\nimport subprocess\n\nimport infra.basetest\n\n\ndef compare_file(file1, file2):\n    return subprocess.call([\"cmp\", file1, file2])\n\n\nclass TestRootfsOverlay(infra.basetest.BRTest):\n\n    rootfs_overlay_path = infra.filepath(\"tests/core/rootfs-overlay\")\n\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        infra.basetest.MINIMAL_CONFIG + \\\n        \"\"\"\n        BR2_ROOTFS_OVERLAY=\"{0}1 {0}2\"\n        \"\"\".format(rootfs_overlay_path)\n\n    def test_run(self):\n        target_file = os.path.join(self.builddir, \"target\", \"test-file1\")\n        overlay_file = \"{}1/test-file1\".format(self.rootfs_overlay_path)\n        ret = compare_file(overlay_file, target_file)\n        self.assertEqual(ret, 0)\n\n        target_file = os.path.join(self.builddir, \"target\", \"etc\", \"test-file2\")\n        overlay_file = \"{}2/etc/test-file2\".format(self.rootfs_overlay_path)\n        ret = compare_file(overlay_file, target_file)\n        self.assertEqual(ret, 0)\n"
  },
  {
    "path": "support/testing/tests/core/test_selinux/br2_external/Config.in",
    "content": "source \"$BR2_EXTERNAL_SELINUX_PATH/package/selinux-test/Config.in\"\n"
  },
  {
    "path": "support/testing/tests/core/test_selinux/br2_external/external.desc",
    "content": "name: SELINUX\n"
  },
  {
    "path": "support/testing/tests/core/test_selinux/br2_external/external.mk",
    "content": "include $(sort $(wildcard $(BR2_EXTERNAL_SELINUX_PATH)/package/*/*.mk))\n"
  },
  {
    "path": "support/testing/tests/core/test_selinux/br2_external/package/selinux-test/Config.in",
    "content": "config BR2_PACKAGE_SELINUX_TEST\n\tbool \"SELinux test package\"\n\thelp\n\t  Test package for SELinux Buildroot helpers.\n"
  },
  {
    "path": "support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux/buildroot.fc",
    "content": ""
  },
  {
    "path": "support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux/buildroot.if",
    "content": "## <summary>Buildroot rules</summary>\n"
  },
  {
    "path": "support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux/buildroot.te",
    "content": "policy_module(buildroot, 1.0.0)\n\ntype buildroot_test_t;\n"
  },
  {
    "path": "support/testing/tests/core/test_selinux/br2_external/package/selinux-test/selinux-test.mk",
    "content": "################################################################################\n#\n# SELinux test package\n#\n################################################################################\n\nSELINUX_TEST_SELINUX_MODULES = ntp tor\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/core/test_selinux/extra_modules/buildroot.fc",
    "content": ""
  },
  {
    "path": "support/testing/tests/core/test_selinux/extra_modules/buildroot.if",
    "content": "## <summary>Buildroot rules</summary>\n"
  },
  {
    "path": "support/testing/tests/core/test_selinux/extra_modules/buildroot.te",
    "content": "policy_module(buildroot, 1.0.0)\n\ntype buildroot_test_t;\n"
  },
  {
    "path": "support/testing/tests/core/test_selinux.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestSELinuxInfra(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG +\\\n        \"\"\"\n        BR2_PACKAGE_REFPOLICY=y\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_SETOOLS=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        \"\"\"\n\n    def base_test_run(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\", kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n\nclass TestSELinuxExtraModules(TestSELinuxInfra):\n    config = TestSELinuxInfra.config + \\\n        \"\"\"\n        BR2_REFPOLICY_EXTRA_MODULES=\"ntp tor\"\n        \"\"\"\n\n    def test_run(self):\n        TestSELinuxInfra.base_test_run(self)\n\n        out, ret = self.emulator.run(\"seinfo -t ntpd_t\", 15)\n        self.assertEqual(ret, 0)\n        self.assertEqual(out[2].strip(), \"ntpd_t\")\n\n        out, ret = self.emulator.run(\"seinfo -t tor_t\", 15)\n        self.assertEqual(ret, 0)\n        self.assertEqual(out[2].strip(), \"tor_t\")\n\n\nclass TestSELinuxExtraModulesDirs(TestSELinuxInfra):\n    config = TestSELinuxInfra.config + \\\n        \"\"\"\n        BR2_REFPOLICY_EXTRA_MODULES_DIRS=\"{}\"\n        \"\"\".format(infra.filepath(\"tests/core/test_selinux/extra_modules\"))\n\n    def test_run(self):\n        TestSELinuxInfra.base_test_run(self)\n\n        out, ret = self.emulator.run(\"seinfo -t buildroot_test_t\", 15)\n        self.assertEqual(ret, 0)\n        self.assertEqual(out[2].strip(), \"buildroot_test_t\")\n\n\nclass TestSELinuxCustomGit(TestSELinuxInfra):\n    config = TestSELinuxInfra.config + \\\n        \"\"\"\n        BR2_PACKAGE_REFPOLICY_CUSTOM_GIT=y\n        BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL=\"https://github.com/SELinuxProject/refpolicy.git\"\n        BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION=\"RELEASE_2_20200818\"\n        \"\"\"\n\n    def test_run(self):\n        pass\n\n\nclass TestSELinuxPackage(TestSELinuxInfra):\n    br2_external = [infra.filepath(\"tests/core/test_selinux/br2_external\")]\n    config = TestSELinuxInfra.config + \\\n        \"\"\"\n        BR2_PACKAGE_SELINUX_TEST=y\n        \"\"\"\n\n    def test_run(self):\n        TestSELinuxInfra.base_test_run(self)\n\n        out, ret = self.emulator.run(\"seinfo -t ntpd_t\", 15)\n        self.assertEqual(ret, 0)\n        self.assertEqual(out[2].strip(), \"ntpd_t\")\n\n        out, ret = self.emulator.run(\"seinfo -t tor_t\", 15)\n        self.assertEqual(ret, 0)\n        self.assertEqual(out[2].strip(), \"tor_t\")\n\n        out, ret = self.emulator.run(\"seinfo -t buildroot_test_t\", 15)\n        self.assertEqual(ret, 0)\n        self.assertEqual(out[2].strip(), \"buildroot_test_t\")\n"
  },
  {
    "path": "support/testing/tests/core/test_timezone.py",
    "content": "import os\n\nimport infra.basetest\n\n\ndef boot_armv5_cpio(emulator, builddir):\n    img = os.path.join(builddir, \"images\", \"rootfs.cpio\")\n    emulator.boot(arch=\"armv5\", kernel=\"builtin\",\n                  options=[\"-initrd\", img])\n    emulator.login()\n\n\nclass TestNoTimezone(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        # BR2_TARGET_TZ_INFO is not set\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        boot_armv5_cpio(self.emulator, self.builddir)\n        tz, _ = self.emulator.run(\"TZ=UTC date +%Z\")\n        self.assertEqual(tz[0].strip(), \"UTC\")\n        tz, _ = self.emulator.run(\"TZ=America/Los_Angeles date +%Z\")\n        self.assertEqual(tz[0].strip(), \"UTC\")\n\n\nclass TestGlibcAllTimezone(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TARGET_TZ_INFO=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        boot_armv5_cpio(self.emulator, self.builddir)\n        tz, _ = self.emulator.run(\"date +%Z\")\n        self.assertEqual(tz[0].strip(), \"UTC\")\n        tz, _ = self.emulator.run(\"TZ=UTC date +%Z\")\n        self.assertEqual(tz[0].strip(), \"UTC\")\n        tz, _ = self.emulator.run(\"TZ=America/Los_Angeles date +%Z\")\n        self.assertEqual(tz[0].strip(), \"PST\")\n        tz, _ = self.emulator.run(\"TZ=Europe/Paris date +%Z\")\n        self.assertEqual(tz[0].strip(), \"CET\")\n\n\nclass TestGlibcNonDefaultLimitedTimezone(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TARGET_TZ_INFO=y\n        BR2_TARGET_TZ_ZONELIST=\"northamerica\"\n        BR2_TARGET_LOCALTIME=\"America/New_York\"\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        boot_armv5_cpio(self.emulator, self.builddir)\n        tz, _ = self.emulator.run(\"date +%Z\")\n        self.assertEqual(tz[0].strip(), \"EST\")\n        tz, _ = self.emulator.run(\"TZ=UTC date +%Z\")\n        self.assertEqual(tz[0].strip(), \"UTC\")\n        tz, _ = self.emulator.run(\"TZ=America/Los_Angeles date +%Z\")\n        self.assertEqual(tz[0].strip(), \"PST\")\n        tz, _ = self.emulator.run(\"TZ=Europe/Paris date +%Z\")\n        self.assertEqual(tz[0].strip(), \"Europe\")\n"
  },
  {
    "path": "support/testing/tests/download/__init__.py",
    "content": ""
  },
  {
    "path": "support/testing/tests/download/br2-external/git-hash/Config.in",
    "content": ""
  },
  {
    "path": "support/testing/tests/download/br2-external/git-hash/external.desc",
    "content": "name: GIT_HASH\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-hash/external.mk",
    "content": "include $(sort $(wildcard $(BR2_EXTERNAL_GIT_HASH_PATH)/package/*/*.mk))\n\n# Get the git server port number from the test infra\nGITREMOTE_PORT_NUMBER ?= 9418\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-hash/package/bad/bad.hash",
    "content": "sha256  0000000000000000000000000000000000000000000000000000000000000000  bad-a238b1dfcd825d47d834af3c5223417c8411d90d-br1.tar.gz\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-hash/package/bad/bad.mk",
    "content": "################################################################################\n#\n# bad\n#\n################################################################################\n\nBAD_VERSION = a238b1dfcd825d47d834af3c5223417c8411d90d\nBAD_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-hash/package/good/good.hash",
    "content": "sha256  682ad1f39f258bfb35e26f213f3798f44bb8105bb55fad47bdc003113765b650  good-a238b1dfcd825d47d834af3c5223417c8411d90d-br1.tar.gz\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-hash/package/good/good.mk",
    "content": "################################################################################\n#\n# good\n#\n################################################################################\n\nGOOD_VERSION = a238b1dfcd825d47d834af3c5223417c8411d90d\nGOOD_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-hash/package/nohash/nohash.mk",
    "content": "################################################################################\n#\n# nohash\n#\n################################################################################\n\nNOHASH_VERSION = a238b1dfcd825d47d834af3c5223417c8411d90d\nNOHASH_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/Config.in",
    "content": ""
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/external.desc",
    "content": "name: GIT_REFS\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/external.mk",
    "content": "include $(sort $(wildcard $(BR2_EXTERNAL_GIT_REFS_PATH)/package/*/*.mk))\n\n# Get the git server port number from the test infra\nGITREMOTE_PORT_NUMBER ?= 9418\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-branch-head/git-partial-sha1-branch-head.hash",
    "content": "sha256  c27041b3e874beb0d0218158e7d6507ad1515b684de5eed5fabd0f7205e9718e  git-partial-sha1-branch-head-68c197d0879d485f4f6c-br1.tar.gz\nsha256  2c1126513651b0d346a4e6d1bb75ac1c9999217e18026302d27bea47b06c7fb2  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-branch-head/git-partial-sha1-branch-head.mk",
    "content": "################################################################################\n#\n# git-partial-sha1-branch-head\n#\n################################################################################\n\nGIT_PARTIAL_SHA1_BRANCH_HEAD_VERSION = 68c197d0879d485f4f6c\nGIT_PARTIAL_SHA1_BRANCH_HEAD_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_PARTIAL_SHA1_BRANCH_HEAD_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-branch/git-partial-sha1-reachable-by-branch.hash",
    "content": "sha256  1bbba9bf2788bd789ed8da4e47cabbf3467b1f706875b3f6b62df38e08fb9aba  git-partial-sha1-reachable-by-branch-317406308d9259e2231b-br1.tar.gz\nsha256  fabbc65c442bacb5e69b7adfea6d14fbbfc1327134322efd12771dc84387d507  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-branch/git-partial-sha1-reachable-by-branch.mk",
    "content": "################################################################################\n#\n# git-partial-sha1-reachable-by-branch\n#\n################################################################################\n\nGIT_PARTIAL_SHA1_REACHABLE_BY_BRANCH_VERSION = 317406308d9259e2231b\nGIT_PARTIAL_SHA1_REACHABLE_BY_BRANCH_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_PARTIAL_SHA1_REACHABLE_BY_BRANCH_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-tag/git-partial-sha1-reachable-by-tag.hash",
    "content": "sha256  52d223f3b2d625216c259e9ff949ca8818452a531ba61557dd91f3889c7919d7  git-partial-sha1-reachable-by-tag-46bae5b639e5a18e2cc4-br1.tar.gz\nsha256  2de87d77a2f226813f2d9bda906e970e4195605cdba6680443c0c04d89c532b6  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-reachable-by-tag/git-partial-sha1-reachable-by-tag.mk",
    "content": "################################################################################\n#\n# git-partial-sha1-reachable-by-tag\n#\n################################################################################\n\nGIT_PARTIAL_SHA1_REACHABLE_BY_TAG_VERSION = 46bae5b639e5a18e2cc4\nGIT_PARTIAL_SHA1_REACHABLE_BY_TAG_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_PARTIAL_SHA1_REACHABLE_BY_TAG_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-itself/git-partial-sha1-tag-itself.hash",
    "content": "sha256  5cfc004b05f48b3fb419a5db4b7239223d670225fbbb91de2ae151c97910b36c  git-partial-sha1-tag-itself-2b0e0d98a49c97da6a61-br1.tar.gz\nsha256  6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-itself/git-partial-sha1-tag-itself.mk",
    "content": "################################################################################\n#\n# git-partial-sha1-tag-itself\n#\n################################################################################\n\nGIT_PARTIAL_SHA1_TAG_ITSELF_VERSION = 2b0e0d98a49c97da6a61\nGIT_PARTIAL_SHA1_TAG_ITSELF_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_PARTIAL_SHA1_TAG_ITSELF_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-points-to/git-partial-sha1-tag-points-to.hash",
    "content": "sha256  0f40d7f39bf2e389cc2ce03c73cc0cc9ded1119378aaa68e2a2ef8597f6fd2f3  git-partial-sha1-tag-points-to-516c9c5f64ec66534d4d-br1.tar.gz\nsha256  6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-partial-sha1-tag-points-to/git-partial-sha1-tag-points-to.mk",
    "content": "################################################################################\n#\n# git-partial-sha1-tag-points-to\n#\n################################################################################\n\nGIT_PARTIAL_SHA1_TAG_POINTS_TO_VERSION = 516c9c5f64ec66534d4d\nGIT_PARTIAL_SHA1_TAG_POINTS_TO_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_PARTIAL_SHA1_TAG_POINTS_TO_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-sha1-branch-head/git-sha1-branch-head.hash",
    "content": "sha256  3ab67c485ce1825abbbf5db1d90d94dfadc89b30bb740041cfc75fc04021e218  git-sha1-branch-head-68c197d0879d485f4f6cee85544722b79e68e59f-br1.tar.gz\nsha256  2c1126513651b0d346a4e6d1bb75ac1c9999217e18026302d27bea47b06c7fb2  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-sha1-branch-head/git-sha1-branch-head.mk",
    "content": "################################################################################\n#\n# git-sha1-branch-head\n#\n################################################################################\n\nGIT_SHA1_BRANCH_HEAD_VERSION = 68c197d0879d485f4f6cee85544722b79e68e59f\nGIT_SHA1_BRANCH_HEAD_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_SHA1_BRANCH_HEAD_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-branch/git-sha1-reachable-by-branch.hash",
    "content": "sha256  a5936d6d6022ea101a6076864a2afa918ab2776764012c4be589027001044041  git-sha1-reachable-by-branch-317406308d9259e2231bd0d6ddad3de3832bce08-br1.tar.gz\nsha256  fabbc65c442bacb5e69b7adfea6d14fbbfc1327134322efd12771dc84387d507  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-branch/git-sha1-reachable-by-branch.mk",
    "content": "################################################################################\n#\n# git-sha1-reachable-by-branch\n#\n################################################################################\n\nGIT_SHA1_REACHABLE_BY_BRANCH_VERSION = 317406308d9259e2231bd0d6ddad3de3832bce08\nGIT_SHA1_REACHABLE_BY_BRANCH_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_SHA1_REACHABLE_BY_BRANCH_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-tag/git-sha1-reachable-by-tag.hash",
    "content": "sha256  c203f968e358ca478d4c5344b1e4ae9bf13f9fb1120f2ed96a12154dd64195a6  git-sha1-reachable-by-tag-46bae5b639e5a18e2cc4dc508f080d566baeff59-br1.tar.gz\nsha256  2de87d77a2f226813f2d9bda906e970e4195605cdba6680443c0c04d89c532b6  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-sha1-reachable-by-tag/git-sha1-reachable-by-tag.mk",
    "content": "################################################################################\n#\n# git-sha1-reachable-by-tag\n#\n################################################################################\n\nGIT_SHA1_REACHABLE_BY_TAG_VERSION = 46bae5b639e5a18e2cc4dc508f080d566baeff59\nGIT_SHA1_REACHABLE_BY_TAG_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_SHA1_REACHABLE_BY_TAG_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-itself/git-sha1-tag-itself.hash",
    "content": "sha256  57f08e9f3914e79a10e7fb5d346b26fef2773dd22eed0d61fd755e79e62cee93  git-sha1-tag-itself-2b0e0d98a49c97da6a618ab36337e2058eb733a2-br1.tar.gz\nsha256  6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-itself/git-sha1-tag-itself.mk",
    "content": "################################################################################\n#\n# git-sha1-tag-itself\n#\n################################################################################\n\nGIT_SHA1_TAG_ITSELF_VERSION = 2b0e0d98a49c97da6a618ab36337e2058eb733a2\nGIT_SHA1_TAG_ITSELF_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_SHA1_TAG_ITSELF_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-points-to/git-sha1-tag-points-to.hash",
    "content": "sha256  1d8b565827137aa21ba37cde382aa291e33a135c697e38dcd31f14e195386327  git-sha1-tag-points-to-516c9c5f64ec66534d4d069c2e408d9ae4dce023-br1.tar.gz\nsha256  6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-sha1-tag-points-to/git-sha1-tag-points-to.mk",
    "content": "################################################################################\n#\n# git-sha1-tag-points-to\n#\n################################################################################\n\nGIT_SHA1_TAG_POINTS_TO_VERSION = 516c9c5f64ec66534d4d069c2e408d9ae4dce023\nGIT_SHA1_TAG_POINTS_TO_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_SHA1_TAG_POINTS_TO_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-submodule-disabled/git-submodule-disabled.hash",
    "content": "sha256  e8e0febc7f1408df22bce2d73d9a30081e03b45e152bc25effd14435ca8b3433  git-submodule-disabled-a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f-br1.tar.gz\nsha256  ba8b6ddc4726bfb6a05045ebfd8c43263c968ad1bc601bd46a25bc055008eddc  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-submodule-disabled/git-submodule-disabled.mk",
    "content": "################################################################################\n#\n# git-submodule-disabled\n#\n################################################################################\n\nGIT_SUBMODULE_DISABLED_VERSION = a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f\nGIT_SUBMODULE_DISABLED_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_SUBMODULE_DISABLED_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-submodule-enabled/git-submodule-enabled.hash",
    "content": "sha256  176c32f10ad11f290b6251d701835450292ba281eb59c7fb57b244407a55ceab  git-submodule-enabled-a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f-br1.tar.gz\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-submodule-enabled/git-submodule-enabled.mk",
    "content": "################################################################################\n#\n# git-submodule-enabled\n#\n################################################################################\n\nGIT_SUBMODULE_ENABLED_VERSION = a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f\nGIT_SUBMODULE_ENABLED_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_SUBMODULE_ENABLED_GIT_SUBMODULES = YES\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-tag/git-tag.hash",
    "content": "sha256  c66b2366d8ccb1670951012334fe8d48de3358aef39b3da2912b339448fefcde  git-tag-mytag-br1.tar.gz\nsha256  6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-tag/git-tag.mk",
    "content": "################################################################################\n#\n# git-tag\n#\n################################################################################\n\nGIT_TAG_VERSION = mytag\nGIT_TAG_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_TAG_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-wrong-content/git-wrong-content.hash",
    "content": " sha256  4a230e667227310289438cd7d899276a0d45ca8778abfd043dfc0a10ed2c9085  git-wrong-content-a238b1dfcd825d47d834af3c5223417c8411d90d-br1.tar.gz\n sha256  0000000000000000000000000000000000000000000000000000000000000000  file\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-wrong-content/git-wrong-content.mk",
    "content": "################################################################################\n#\n# git-wrong-content\n#\n################################################################################\n\nGIT_WRONG_CONTENT_VERSION = a238b1dfcd825d47d834af3c5223417c8411d90d\nGIT_WRONG_CONTENT_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_WRONG_CONTENT_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/br2-external/git-refs/package/git-wrong-sha1/git-wrong-sha1.mk",
    "content": "################################################################################\n#\n# git-wrong-sha1\n#\n################################################################################\n\nGIT_WRONG_SHA1_VERSION = 0000000000000000000000000000000000000000\nGIT_WRONG_SHA1_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git\nGIT_WRONG_SHA1_LICENSE_FILES = file\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/refs-sub1.git/.gitattributes",
    "content": "objects/*/* binary\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/refs-sub1.git/HEAD",
    "content": "cb545facf77bbc5f24f95b6d503c338d10b7b717\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/refs-sub1.git/config",
    "content": "[core]\n\trepositoryformatversion = 0\n\tfilemode = true\n\tbare = true\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/refs-sub1.git/objects/cb/545facf77bbc5f24f95b6d503c338d10b7b717",
    "content": "x\u0001ν\r0\u0010@ajOq\u000b$:;\u0013#X\u0006&8\u0013q,\u0019S=(\u0011W<=_r\u0006jv\b&\u0015(:YU\"e1a0\u0004B##9Av+\u0015.쩆\u0002gW_\u001ewC`x3 5N4\b\u001d*D6rWnL\u0010W\u0018R^_f\u001bW\u0010`\u0017"
  },
  {
    "path": "support/testing/tests/download/git-remote/refs-sub1.git/refs/heads/submodule",
    "content": "1df823cb8a6d1866148ae50a8009762a9c4c777f\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/refs-sub2.git/.gitattributes",
    "content": "objects/*/* binary\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/refs-sub2.git/HEAD",
    "content": "32d61bae693af7879da63b89a60d3ae67f851e56\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/refs-sub2.git/config",
    "content": "[core]\n\trepositoryformatversion = 0\n\tfilemode = true\n\tbare = true\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/refs-sub2.git/objects/32/d61bae693af7879da63b89a60d3ae67f851e56",
    "content": "x\u0001ν\r0\u0010@ajOq\u000b$:;\u0013#X\u0006&8\u0013q,\u0019S=(\u0011W<=_r\u0006jv\b&\u0015(:YU\"e1a0\u0004B##9Av+\u0015.쩆\u0002gW_\u001ewC`x3 5N\u001c-t\u0010ŦD\t^1-B\\y^cJJ{\u0015o``+"
  },
  {
    "path": "support/testing/tests/download/git-remote/refs-sub2.git/objects/cd/4d62ff218ab7b4a04f5bfdf800ace087af3ceb",
    "content": "x\u0001=n\u0003!\u0010aל\u000b5,?\u000be\u0002i\u0013\f`#bqg\u0014飴}zZԳ=,5\bhU\f1\u0006\u0002~\u0006Qu4\u0002)\u0012\u000f~\u000fS\u0011\u0005yKHt\u0001\u001d$Ul縵.\naOMb\u001fe݋<\u001f<_\\+#zʂ\u0007LX\u00043u\u001eOwb{yRBij9O/\u000bxl)"
  },
  {
    "path": "support/testing/tests/download/git-remote/refs-sub2.git/refs/heads/submodule",
    "content": "e83f6f805bd016b90acafc8702c52d778eb57310\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/.gitattributes",
    "content": "objects/*/* binary\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/HEAD",
    "content": "ref: refs/heads/master\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/config",
    "content": "[core]\n\trepositoryformatversion = 0\n\tfilemode = true\n\tbare = true\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/objects/2b/0e0d98a49c97da6a618ab36337e2058eb733a2",
    "content": "x\u0001EK\u000e\u0002!\u0010\u0005]s\u001e~Bb\u0017p\ri\t*A6s{1pRE`6jWo\u000f\u000efܭf(\u001duDIF\u0017}`\u001dQ*7\u0003Rr\u0017}4:G\u001b\\3\u0016+\\Byyf8MN/ϩF4N\u001b'\u001e\u0015\u0010[\u000b\u0011L3\u0013"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/objects/31/7406308d9259e2231bd0d6ddad3de3832bce08",
    "content": "x\u0001;N\u00031\u0014@Qj\u001bߌP\rА\u0015<Ob\u0005\u0014H)\u0011)._`P쓬\u001c\u0004bDغ`\t\u0005Rf\u0005T,\tRrJ\u0007\u00109\u001f)XKِ?* a̺a]~\u001bOܵ_<\u001b\u001dv65c֋ƨ>'SN\u0001\u001b^Rzޘ.׿̪\u001f\u00191nS"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/objects/46/bae5b639e5a18e2cc4dc508f080d566baeff59",
    "content": "x\u00011n\u0003!\u0010@Qל\u000b0a(\u0005'e`\u0012\b·\u0014-ZFS1rB\f\u0016)!\u0011[~烇(1~mh\u0018\u0016\u001c%X/$[\u000e(\u0006\u0007 \u0011ܺ*4}-w\u001fǵrV?4xC\u000fpz2h}z\u0017\u0015:uK2̩\u0001Fkb"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/objects/51/6c9c5f64ec66534d4d069c2e408d9ae4dce023",
    "content": "x\u0001KN\u00031\u0010EQ^7Б\u000fBQ6\\n6r\u0001'\u0011\u0003yӥZ\u001a4\u0007dc|\u0002ZK\np\u0005\u001c\\\bVuшO\u001cO\f\u0001udC2EE?R \t>[%\u001cW\u001cԯ*_\u000f\u001e/@\u001d\u0006\u0015\u0012D\u001d\\UJ\u001e=\bqy,_J7\u000fle"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/objects/68/c197d0879d485f4f6cee85544722b79e68e59f",
    "content": "x\u0001=N\u00031\u0010aj\u0017;\u001f\u0010\u0017!'\u0018L\u0012+x)=+H\u001f>Vk\u0019\u0016?j3,\u0019cp \u0001\u0010xA&IR`\u000f\b拺np\u000e$X\u0002ŉ\u0017!AQ\bEC?Һ(L]}>ZK\\|\u001eW;.5G;9tG\u000f;;m|\u0001c弩Lt#\u000f$bl"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/objects/a2/38b1dfcd825d47d834af3c5223417c8411d90d",
    "content": "x\u0001M\u000e \u0010@aלb.\u0006b\u0002n\u0004_@6q޸\u0016/ϕӮ\u0010(\u0010BEc(M\u001cG?L{Fh\f^*\\a\u0005.X\u001beW\u001e\u000b~O_<\ti]I'\u0010ks6r25\u001b9Y\u0006l`C"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/refs/heads/master",
    "content": "a238b1dfcd825d47d834af3c5223417c8411d90d\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/refs/heads/mybranch",
    "content": "68c197d0879d485f4f6cee85544722b79e68e59f\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/refs/heads/submodule",
    "content": "2fa37f6885d7eb746df75eccaddbacf3ac82799d\n"
  },
  {
    "path": "support/testing/tests/download/git-remote/repo.git/refs/tags/mytag",
    "content": "2b0e0d98a49c97da6a618ab36337e2058eb733a2\n"
  },
  {
    "path": "support/testing/tests/download/gitremote.py",
    "content": "# subprocess does not kill the child daemon when a test case fails by raising\n# an exception. So use pexpect instead.\nimport infra\n\nimport pexpect\n\n\nGIT_REMOTE_PORT_INITIAL = 9418\nGIT_REMOTE_PORT_LAST = GIT_REMOTE_PORT_INITIAL + 99\n\n\nclass GitRemote(object):\n    def __init__(self, builddir, serveddir, logtofile):\n        \"\"\"\n        Start a local git server.\n\n        In order to support test cases in parallel, select the port the\n        server will listen to in runtime. Since there is no reliable way\n        to allocate the port prior to starting the server (another\n        process in the host machine can use the port between it is\n        selected from a list and it is really allocated to the server)\n        try to start the server in a port and in the case it is already\n        in use, try the next one in the allowed range.\n        \"\"\"\n        self.daemon = None\n        self.port = None\n        self.logfile = infra.open_log_file(builddir, \"gitremote\", logtofile)\n\n        daemon_cmd = [\"git\", \"daemon\", \"--reuseaddr\", \"--verbose\",\n                      \"--listen=localhost\", \"--export-all\",\n                      \"--base-path={}\".format(serveddir)]\n        for port in range(GIT_REMOTE_PORT_INITIAL, GIT_REMOTE_PORT_LAST + 1):\n            cmd = daemon_cmd + [\"--port={port}\".format(port=port)]\n            self.logfile.write(\"> starting git remote with '{}'\\n\".format(\" \".join(cmd)))\n            self.daemon = pexpect.spawn(cmd[0], cmd[1:], logfile=self.logfile,\n                                        encoding='utf-8')\n            ret = self.daemon.expect([\"Ready to rumble\",\n                                      \"Address already in use\"])\n            if ret == 0:\n                self.port = port\n                return\n        raise SystemError(\"Could not find a free port to run git remote\")\n\n    def stop(self):\n        if self.daemon is None:\n            return\n        self.daemon.terminate(force=True)\n"
  },
  {
    "path": "support/testing/tests/download/test_git.py",
    "content": "import os\nimport shutil\n\nfrom tests.download.gitremote import GitRemote\n\nimport infra\n\n\nclass GitTestBase(infra.basetest.BRConfigTest):\n    config = \\\n        \"\"\"\n        BR2_BACKUP_SITE=\"\"\n        \"\"\"\n    gitremotedir = infra.filepath(\"tests/download/git-remote\")\n    gitremote = None\n\n    def setUp(self):\n        super(GitTestBase, self).setUp()\n        self.gitremote = GitRemote(self.builddir, self.gitremotedir, self.logtofile)\n\n    def tearDown(self):\n        self.show_msg(\"Cleaning up\")\n        if self.gitremote:\n            self.gitremote.stop()\n        if self.b and not self.keepbuilds:\n            self.b.delete()\n\n    def check_hash(self, package):\n        # store downloaded tarball inside the output dir so the test infra\n        # cleans it up at the end\n        env = {\"BR2_DL_DIR\": os.path.join(self.builddir, \"dl\"),\n               \"GITREMOTE_PORT_NUMBER\": str(self.gitremote.port)}\n        self.b.build([\"{}-dirclean\".format(package),\n                      \"{}-source\".format(package)],\n                     env)\n\n    def check_download(self, package):\n        # store downloaded tarball inside the output dir so the test infra\n        # cleans it up at the end\n        dl_dir = os.path.join(self.builddir, \"dl\")\n        # enforce we test the download\n        if os.path.exists(dl_dir):\n            shutil.rmtree(dl_dir)\n        env = {\"BR2_DL_DIR\": dl_dir,\n               \"GITREMOTE_PORT_NUMBER\": str(self.gitremote.port)}\n        self.b.build([\"{}-dirclean\".format(package),\n                      \"{}-legal-info\".format(package)],\n                     env)\n\n\nclass TestGitHash(GitTestBase):\n    br2_external = [infra.filepath(\"tests/download/br2-external/git-hash\")]\n\n    def test_run(self):\n        with self.assertRaises(SystemError):\n            self.check_hash(\"bad\")\n        self.check_hash(\"good\")\n        self.check_hash(\"nohash\")\n\n\nclass TestGitRefs(GitTestBase):\n    br2_external = [infra.filepath(\"tests/download/br2-external/git-refs\")]\n\n    def test_run(self):\n        with self.assertRaises(SystemError):\n            self.check_download(\"git-wrong-content\")\n        with self.assertRaises(SystemError):\n            self.check_download(\"git-wrong-sha1\")\n        self.check_download(\"git-partial-sha1-branch-head\")\n        self.check_download(\"git-partial-sha1-reachable-by-branch\")\n        self.check_download(\"git-partial-sha1-reachable-by-tag\")\n        self.check_download(\"git-partial-sha1-tag-itself\")\n        self.check_download(\"git-partial-sha1-tag-points-to\")\n        self.check_download(\"git-sha1-branch-head\")\n        self.check_download(\"git-sha1-reachable-by-branch\")\n        self.check_download(\"git-sha1-reachable-by-tag\")\n        self.check_download(\"git-sha1-tag-itself\")\n        self.check_download(\"git-sha1-tag-points-to\")\n        self.check_download(\"git-submodule-disabled\")\n        self.check_download(\"git-submodule-enabled\")\n        self.check_download(\"git-tag\")\n"
  },
  {
    "path": "support/testing/tests/fs/__init__.py",
    "content": ""
  },
  {
    "path": "support/testing/tests/fs/test_ext.py",
    "content": "import os\n\nimport infra.basetest\n\nVOLNAME_PROP = \"Filesystem volume name\"\nREVISION_PROP = \"Filesystem revision #\"\nFEATURES_PROP = \"Filesystem features\"\nBLOCKCNT_PROP = \"Block count\"\nINODECNT_PROP = \"Inode count\"\nRESBLKCNT_PROP = \"Reserved block count\"\n\nCHECK_FS_TYPE_CMD = \"mount | grep '/dev/root on / type {}'\"\n\n\ndef dumpe2fs_run(builddir, image):\n    cmd = [\"host/sbin/dumpe2fs\", os.path.join(\"images\", image)]\n    ret = infra.run_cmd_on_host(builddir, cmd)\n    return ret.strip().splitlines()\n\n\ndef dumpe2fs_getprop(out, prop):\n    for line in out:\n        fields = line.split(\": \")\n        if fields[0] == prop:\n            return fields[1].strip()\n\n\ndef boot_img_and_check_fs_type(emulator, builddir, fs_type):\n    img = os.path.join(builddir, \"images\", \"rootfs.{}\".format(fs_type))\n    emulator.boot(arch=\"armv7\",\n                  kernel=\"builtin\",\n                  kernel_cmdline=[\"root=/dev/mmcblk0\",\n                                  \"rootfstype={}\".format(fs_type)],\n                  options=[\"-drive\", \"file={},if=sd,format=raw\".format(img)])\n    emulator.login()\n    _, exit_code = emulator.run(CHECK_FS_TYPE_CMD.format(fs_type))\n    return exit_code\n\n\nclass TestExt2(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_EXT2=y\n        BR2_TARGET_ROOTFS_EXT2_2r0=y\n        BR2_TARGET_ROOTFS_EXT2_LABEL=\"foobaz\"\n        BR2_TARGET_ROOTFS_EXT2_SIZE=\"16384\"\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        out = dumpe2fs_run(self.builddir, \"rootfs.ext2\")\n        self.assertEqual(dumpe2fs_getprop(out, VOLNAME_PROP), \"foobaz\")\n        self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), \"0 (original)\")\n\n        exit_code = boot_img_and_check_fs_type(self.emulator,\n                                               self.builddir, \"ext2\")\n        self.assertEqual(exit_code, 0)\n\n\nclass TestExt2r1(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_EXT2=y\n        BR2_TARGET_ROOTFS_EXT2_2r1=y\n        BR2_TARGET_ROOTFS_EXT2_LABEL=\"foobar\"\n        BR2_TARGET_ROOTFS_EXT2_SIZE=\"16384\"\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        out = dumpe2fs_run(self.builddir, \"rootfs.ext2\")\n        self.assertEqual(dumpe2fs_getprop(out, VOLNAME_PROP), \"foobar\")\n        self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), \"1 (dynamic)\")\n        self.assertNotIn(\"has_journal\", dumpe2fs_getprop(out, FEATURES_PROP))\n\n        exit_code = boot_img_and_check_fs_type(self.emulator,\n                                               self.builddir, \"ext2\")\n        self.assertEqual(exit_code, 0)\n\n\nclass TestExt3(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_EXT2=y\n        BR2_TARGET_ROOTFS_EXT2_3=y\n        BR2_TARGET_ROOTFS_EXT2_SIZE=\"16384\"\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        out = dumpe2fs_run(self.builddir, \"rootfs.ext3\")\n        self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), \"1 (dynamic)\")\n        self.assertIn(\"has_journal\", dumpe2fs_getprop(out, FEATURES_PROP))\n        self.assertNotIn(\"extent\", dumpe2fs_getprop(out, FEATURES_PROP))\n\n        exit_code = boot_img_and_check_fs_type(self.emulator,\n                                               self.builddir, \"ext3\")\n        self.assertEqual(exit_code, 0)\n\n\nclass TestExt4(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_EXT2=y\n        BR2_TARGET_ROOTFS_EXT2_4=y\n        BR2_TARGET_ROOTFS_EXT2_SIZE=\"16384\"\n        BR2_TARGET_ROOTFS_EXT2_INODES=3000\n        BR2_TARGET_ROOTFS_EXT2_RESBLKS=10\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        out = dumpe2fs_run(self.builddir, \"rootfs.ext4\")\n        self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), \"1 (dynamic)\")\n        self.assertEqual(dumpe2fs_getprop(out, BLOCKCNT_PROP), \"16384\")\n        # Yes there are 8 fewer inodes than requested\n        self.assertEqual(dumpe2fs_getprop(out, INODECNT_PROP), \"2992\")\n        self.assertEqual(dumpe2fs_getprop(out, RESBLKCNT_PROP), \"1638\")\n        self.assertIn(\"has_journal\", dumpe2fs_getprop(out, FEATURES_PROP))\n        self.assertIn(\"extent\", dumpe2fs_getprop(out, FEATURES_PROP))\n\n        exit_code = boot_img_and_check_fs_type(self.emulator,\n                                               self.builddir, \"ext4\")\n        self.assertEqual(exit_code, 0)\n"
  },
  {
    "path": "support/testing/tests/fs/test_f2fs.py",
    "content": "import os\n\nimport infra.basetest\n\n\ndef dumpf2fs_getprop(out, prop):\n    for line in out:\n        fields = line.split(\" = \")\n        if fields[0] == prop:\n            return fields[1].strip()\n\n\nclass TestF2FS(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_F2FS=y\n        BR2_TARGET_ROOTFS_F2FS_SIZE=\"128M\"\n        BR2_TARGET_ROOTFS_F2FS_OVERPROVISION=0\n        BR2_TARGET_ROOTFS_F2FS_DISCARD=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        BR2_LINUX_KERNEL=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"4.19.204\"\n        BR2_LINUX_KERNEL_USE_DEFCONFIG=y\n        BR2_LINUX_KERNEL_DEFCONFIG=\"vexpress\"\n        BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES=\"{}\"\n        \"\"\".format(infra.filepath(\"conf/f2fs-kernel-fragment.config\"))\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.f2fs\")\n        out = infra.run_cmd_on_host(self.builddir, [\"host/sbin/dump.f2fs\", img])\n        out = out.splitlines()\n        prop = dumpf2fs_getprop(out, \"Info: total sectors\")\n        self.assertEqual(prop, \"262144 (128 MB)\")\n\n        kernel = os.path.join(self.builddir, \"images\", \"zImage\")\n        kernel_cmdline = [\"root=/dev/mmcblk0\", \"rootfstype=f2fs\",\n                          \"console=ttyAMA0\"]\n        dtb = infra.download(self.downloaddir, \"vexpress-v2p-ca9.dtb\")\n        options = [\"-M\", \"vexpress-a9\", \"-dtb\", dtb,\n                   \"-drive\", \"file={},if=sd,format=raw\".format(img)]\n        self.emulator.boot(arch=\"armv7\", kernel=kernel,\n                           kernel_cmdline=kernel_cmdline,\n                           options=options)\n        self.emulator.login()\n        cmd = \"mount | grep '/dev/root on / type f2fs'\"\n        self.assertRunOk(cmd)\n"
  },
  {
    "path": "support/testing/tests/fs/test_iso9660.py",
    "content": "import os\n\nimport infra.basetest\n\nBASIC_CONFIG = \\\n    \"\"\"\n    BR2_x86_pentium4=y\n    BR2_TOOLCHAIN_EXTERNAL=y\n    BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\n    BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\n    BR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.org/toolchains/tarballs/br-i386-pentium4-full-2017.05-1078-g95b1dae.tar.bz2\"\n    BR2_TOOLCHAIN_EXTERNAL_GCC_6=y\n    BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2=y\n    BR2_TOOLCHAIN_EXTERNAL_LOCALE=y\n    # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set\n    BR2_TOOLCHAIN_EXTERNAL_CXX=y\n    BR2_TARGET_GENERIC_GETTY_PORT=\"ttyS0\"\n    BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y\n    BR2_LINUX_KERNEL=y\n    BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n    BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"4.19.204\"\n    BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y\n    BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"{}\"\n    # BR2_TARGET_ROOTFS_TAR is not set\n    \"\"\".format(infra.filepath(\"conf/minimal-x86-qemu-kernel.config\"))\n\n\ndef test_mount_internal_external(emulator, builddir, internal=True, efi=False):\n    img = os.path.join(builddir, \"images\", \"rootfs.iso9660\")\n    if efi:\n        efi_img = os.path.join(builddir, \"images\", \"OVMF.fd\")\n        emulator.boot(arch=\"i386\", options=[\"-cdrom\", img, \"-bios\", efi_img])\n    else:\n        emulator.boot(arch=\"i386\", options=[\"-cdrom\", img])\n    emulator.login()\n\n    if internal:\n        cmd = \"mount | grep 'rootfs on / type rootfs'\"\n    else:\n        cmd = \"mount | grep '/dev/root on / type iso9660'\"\n\n    _, exit_code = emulator.run(cmd)\n    return exit_code\n\n\ndef test_touch_file(emulator):\n    _, exit_code = emulator.run(\"touch test\")\n    return exit_code\n\n#\n# Grub 2\n\n\nclass TestIso9660Grub2External(infra.basetest.BRTest):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_ISO9660=y\n        # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set\n        BR2_TARGET_GRUB2=y\n        BR2_TARGET_GRUB2_BOOT_PARTITION=\"cd\"\n        BR2_TARGET_GRUB2_BUILTIN_MODULES_PC=\"boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660\"\n        BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU=\"{}\"\n        \"\"\".format(infra.filepath(\"conf/grub2.cfg\"))\n\n    def test_run(self):\n        exit_code = test_mount_internal_external(self.emulator,\n                                                 self.builddir, internal=False)\n        self.assertEqual(exit_code, 0)\n\n        exit_code = test_touch_file(self.emulator)\n        self.assertEqual(exit_code, 1)\n\n\nclass TestIso9660Grub2ExternalCompress(infra.basetest.BRTest):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_ISO9660=y\n        # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set\n        BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION=y\n        BR2_TARGET_GRUB2=y\n        BR2_TARGET_GRUB2_BOOT_PARTITION=\"cd\"\n        BR2_TARGET_GRUB2_BUILTIN_MODULES_PC=\"boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660\"\n        BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU=\"{}\"\n        \"\"\".format(infra.filepath(\"conf/grub2.cfg\"))\n\n    def test_run(self):\n        exit_code = test_mount_internal_external(self.emulator,\n                                                 self.builddir, internal=False)\n        self.assertEqual(exit_code, 0)\n\n        exit_code = test_touch_file(self.emulator)\n        self.assertEqual(exit_code, 1)\n\n\nclass TestIso9660Grub2Internal(infra.basetest.BRTest):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_ISO9660=y\n        BR2_TARGET_ROOTFS_ISO9660_INITRD=y\n        BR2_TARGET_GRUB2=y\n        BR2_TARGET_GRUB2_BOOT_PARTITION=\"cd\"\n        BR2_TARGET_GRUB2_BUILTIN_MODULES_PC=\"boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660\"\n        BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU=\"{}\"\n        \"\"\".format(infra.filepath(\"conf/grub2.cfg\"))\n\n    def test_run(self):\n        exit_code = test_mount_internal_external(self.emulator,\n                                                 self.builddir, internal=True)\n        self.assertEqual(exit_code, 0)\n\n        exit_code = test_touch_file(self.emulator)\n        self.assertEqual(exit_code, 0)\n\n\nclass TestIso9660Grub2EFI(infra.basetest.BRTest):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_ISO9660=y\n        BR2_TARGET_ROOTFS_ISO9660_INITRD=y\n        BR2_TARGET_GRUB2=y\n        BR2_TARGET_GRUB2_I386_EFI=y\n        BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI=\"boot linux ext2 fat part_msdos part_gpt normal iso9660\"\n        BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI=\"{}\"\n        BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU=\"{}\"\n        BR2_TARGET_EDK2=y\n        \"\"\".format(infra.filepath(\"conf/grub2-efi.cfg\"),\n                   infra.filepath(\"conf/grub2.cfg\"))\n\n    def test_run(self):\n        exit_code = test_mount_internal_external(self.emulator,\n                                                 self.builddir, internal=True,\n                                                 efi=True)\n        self.assertEqual(exit_code, 0)\n\n        exit_code = test_touch_file(self.emulator)\n        self.assertEqual(exit_code, 0)\n\n\nclass TestIso9660Grub2Hybrid(infra.basetest.BRTest):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_ISO9660=y\n        BR2_TARGET_ROOTFS_ISO9660_INITRD=y\n        BR2_TARGET_GRUB2=y\n        BR2_TARGET_GRUB2_I386_PC=y\n        BR2_TARGET_GRUB2_I386_EFI=y\n        BR2_TARGET_GRUB2_BOOT_PARTITION=\"cd\"\n        BR2_TARGET_GRUB2_BUILTIN_MODULES_PC=\"boot linux ext2 fat squash4 part_msdos part_gpt normal iso9660 biosdisk\"\n        BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC=\"\"\n        BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI=\"boot linux ext2 fat squash4 part_msdos part_gpt normal iso9660 efi_gop\"\n        BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI=\"{}\"\n        BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU=\"{}\"\n        BR2_TARGET_EDK2=y\n        \"\"\".format(infra.filepath(\"conf/grub2-efi.cfg\"),\n                   infra.filepath(\"conf/grub2.cfg\"))\n\n    def test_run(self):\n        exit_code = test_mount_internal_external(self.emulator,\n                                                 self.builddir, internal=True,\n                                                 efi=False)\n        self.assertEqual(exit_code, 0)\n\n        exit_code = test_touch_file(self.emulator)\n        self.assertEqual(exit_code, 0)\n\n        self.emulator.stop()\n\n        exit_code = test_mount_internal_external(self.emulator,\n                                                 self.builddir, internal=True,\n                                                 efi=True)\n        self.assertEqual(exit_code, 0)\n\n        exit_code = test_touch_file(self.emulator)\n        self.assertEqual(exit_code, 0)\n\n\n#\n# Syslinux\n\n\nclass TestIso9660SyslinuxExternal(infra.basetest.BRTest):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_ISO9660=y\n        # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set\n        BR2_TARGET_ROOTFS_ISO9660_HYBRID=y\n        BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU=\"{}\"\n        BR2_TARGET_SYSLINUX=y\n        \"\"\".format(infra.filepath(\"conf/isolinux.cfg\"))\n\n    def test_run(self):\n        exit_code = test_mount_internal_external(self.emulator,\n                                                 self.builddir, internal=False)\n        self.assertEqual(exit_code, 0)\n\n        exit_code = test_touch_file(self.emulator)\n        self.assertEqual(exit_code, 1)\n\n\nclass TestIso9660SyslinuxExternalCompress(infra.basetest.BRTest):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_ISO9660=y\n        # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set\n        BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION=y\n        BR2_TARGET_ROOTFS_ISO9660_HYBRID=y\n        BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU=\"{}\"\n        BR2_TARGET_SYSLINUX=y\n        \"\"\".format(infra.filepath(\"conf/isolinux.cfg\"))\n\n    def test_run(self):\n        exit_code = test_mount_internal_external(self.emulator,\n                                                 self.builddir, internal=False)\n        self.assertEqual(exit_code, 0)\n\n        exit_code = test_touch_file(self.emulator)\n        self.assertEqual(exit_code, 1)\n\n\nclass TestIso9660SyslinuxInternal(infra.basetest.BRTest):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_ISO9660=y\n        BR2_TARGET_ROOTFS_ISO9660_INITRD=y\n        BR2_TARGET_ROOTFS_ISO9660_HYBRID=y\n        BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU=\"{}\"\n        BR2_TARGET_SYSLINUX=y\n        \"\"\".format(infra.filepath(\"conf/isolinux.cfg\"))\n\n    def test_run(self):\n        exit_code = test_mount_internal_external(self.emulator,\n                                                 self.builddir, internal=True)\n        self.assertEqual(exit_code, 0)\n\n        exit_code = test_touch_file(self.emulator)\n        self.assertEqual(exit_code, 0)\n"
  },
  {
    "path": "support/testing/tests/fs/test_jffs2.py",
    "content": "import os\n\nimport infra.basetest\n\n\ndef jffs2dump_find_file(files_list, fname):\n    for file_name in files_list:\n        file_name = file_name.strip()\n        if file_name.startswith(\"Dirent\") and file_name.endswith(fname):\n            return True\n    return False\n\n\nclass TestJffs2(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_JFFS2=y\n        BR2_TARGET_ROOTFS_JFFS2_CUSTOM=y\n        BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE=0x40000\n        BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y\n        BR2_TARGET_ROOTFS_JFFS2_PAD=y\n        BR2_TARGET_ROOTFS_JFFS2_PADSIZE=0x4000000\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    # TODO: there are some scary JFFS2 messages when one starts to\n    # write files in the rootfs: \"jffs2: Newly-erased block contained\n    # word 0x0 at offset 0x046c0000\". To be investigated.\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.jffs2\")\n        cmd = [\"host/sbin/jffs2dump\", \"-c\", img]\n        out = infra.run_cmd_on_host(self.builddir, cmd)\n        out = out.splitlines()\n        self.assertTrue(jffs2dump_find_file(out, \"busybox\"))\n\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=\"builtin\",\n                           kernel_cmdline=[\"root=/dev/mtdblock0\",\n                                           \"rootfstype=jffs2\"],\n                           options=[\"-drive\", \"file={},if=pflash\".format(img)])\n        self.emulator.login()\n        cmd = \"mount | grep '/dev/root on / type jffs2'\"\n        self.assertRunOk(cmd)\n"
  },
  {
    "path": "support/testing/tests/fs/test_oci.py",
    "content": "import os\nimport shutil\nimport infra.basetest\n\n\nclass TestOci(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_aarch64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_LINUX_KERNEL=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"5.10.61\"\n        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y\n        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"board/qemu/aarch64-virt/linux.config\"\n        BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y\n        BR2_PACKAGE_CGROUPFS_MOUNT=y\n        BR2_PACKAGE_CONTAINERD=y\n        BR2_TARGET_ROOTFS_EXT2=y\n        BR2_TARGET_ROOTFS_EXT2_SIZE=\"600M\"\n        BR2_TARGET_ROOTFS_OCI=y\n        BR2_TARGET_ROOTFS_OCI_ENTRYPOINT=\"df\"\n        BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS=\"-h\"\n        BR2_TARGET_ROOTFS_OCI_ARCHIVE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def login(self):\n        rootfs = os.path.join(self.builddir, \"images\", \"rootfs.ext2\")\n        kern = os.path.join(self.builddir, \"images\", \"Image\")\n        self.emulator.boot(arch=\"aarch64\",\n                           kernel=kern,\n                           kernel_cmdline=[\"root=/dev/vda\", \"console=ttyAMA0\"],\n                           options=[\"-M\", \"virt\",\n                                    \"-cpu\", \"cortex-a57\",\n                                    \"-m\", \"512M\",\n                                    \"-drive\", \"file={},format=raw,if=virtio\".format(rootfs)])\n        self.emulator.login()\n\n    def place_test_oci(self):\n        shutil.copy(os.path.join(self.builddir, 'images', 'rootfs-oci-latest-arm64-linux.oci-image.tar'),\n                    os.path.join(self.builddir, 'target', 'oci.tar'))\n        # rebuild to make sure oci.tar ends up in rootfs.ext2\n        self.b.build()\n\n    def test_run(self):\n        self.place_test_oci()\n        self.login()\n\n        cmd = \"containerd &\"\n        self.assertRunOk(cmd)\n\n        cmd = \"ctr image import --base-name buildroot-test /oci.tar\"\n        self.assertRunOk(cmd, timeout=120)\n\n        cmd = \"ctr run --rm --tty buildroot-test:latest v1\"\n        self.assertRunOk(cmd, timeout=120)\n"
  },
  {
    "path": "support/testing/tests/fs/test_squashfs.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestSquashfs(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_SQUASHFS=y\n        BR2_TARGET_ROOTFS_SQUASHFS4_LZO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        unsquashfs_cmd = [\"host/bin/unsquashfs\", \"-s\", \"images/rootfs.squashfs\"]\n        out = infra.run_cmd_on_host(self.builddir, unsquashfs_cmd)\n        out = out.splitlines()\n        self.assertEqual(out[0],\n                         \"Found a valid SQUASHFS 4:0 superblock on images/rootfs.squashfs.\")\n        self.assertEqual(out[3], \"Compression lzo\")\n\n        img = os.path.join(self.builddir, \"images\", \"rootfs.squashfs\")\n        infra.img_round_power2(img)\n\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=\"builtin\",\n                           kernel_cmdline=[\"root=/dev/mmcblk0\",\n                                           \"rootfstype=squashfs\"],\n                           options=[\"-drive\", \"file={},if=sd,format=raw\".format(img)])\n        self.emulator.login()\n\n        cmd = \"mount | grep '/dev/root on / type squashfs'\"\n        self.assertRunOk(cmd)\n"
  },
  {
    "path": "support/testing/tests/fs/test_ubi/ubinize_qemu_pflash_cfi01.cfg",
    "content": "[ubifs]\nmode=ubi\nvol_id=0\nvol_type=static\nvol_name=rootfs\nvol_alignment=1\nvol_size=64MiB\nimage=BR2_ROOTFS_UBIFS_PATH\n"
  },
  {
    "path": "support/testing/tests/fs/test_ubi.py",
    "content": "import subprocess\nimport os\n\nimport infra.basetest\n\n\nclass TestUbi(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_UBIFS=y\n        BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x3ff80\n        BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x1\n        BR2_TARGET_ROOTFS_UBI=y\n        BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x40000\n        BR2_TARGET_ROOTFS_UBI_SUBSIZE=1\n        BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG=y\n        BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE=\"{}\"\n        \"\"\".format(\n              infra.filepath(\"tests/fs/test_ubi/ubinize_qemu_pflash_cfi01.cfg\"))\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.ubi\")\n        out = infra.run_cmd_on_host(self.builddir, [\"file\", img])\n        out = out.splitlines()\n        self.assertIn(\"UBI image, version 1\", out[0])\n\n        subprocess.call([\"truncate\", \"-s 64M\", img])\n\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=\"builtin\",\n                           kernel_cmdline=[\"root=ubi0:rootfs\",\n                                           \"ubi.mtd=0\",\n                                           \"rootfstype=ubifs\"],\n                           options=[\"-drive\", \"file={},if=pflash,format=raw\".format(img)])\n        self.emulator.login()\n        cmd = \"mount | grep 'ubi0:rootfs on / type ubifs'\"\n        _, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n"
  },
  {
    "path": "support/testing/tests/fs/test_yaffs2.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestYaffs2(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        infra.basetest.MINIMAL_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_YAFFS2=y\n        \"\"\"\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.yaffs2\")\n        self.assertTrue(os.path.exists(img))\n"
  },
  {
    "path": "support/testing/tests/init/__init__.py",
    "content": ""
  },
  {
    "path": "support/testing/tests/init/base.py",
    "content": "import os\nimport infra.basetest\n\n\nclass InitSystemBase(infra.basetest.BRTest):\n\n    def start_emulator(self, fs_type, kernel=None, dtb=None, init=None):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.{}\".format(fs_type))\n        infra.img_round_power2(img)\n\n        options = [\"-drive\",\n                   \"file={},if=sd,format=raw\".format(img),\n                   \"-M\", \"vexpress-a9\"]\n\n        if kernel is None:\n            kernel = \"builtin\"\n        else:\n            kernel = os.path.join(self.builddir, \"images\", kernel)\n            options.extend([\"-dtb\", os.path.join(self.builddir, \"images\",\n                                                 \"{}.dtb\".format(dtb))])\n\n        kernel_cmdline = [\"root=/dev/mmcblk0\",\n                          \"rootfstype={}\".format(fs_type),\n                          \"rootwait\",\n                          \"ro\",\n                          \"console=ttyAMA0\"]\n\n        if init is not None:\n            kernel_cmdline.extend([\"init={}\".format(init)])\n\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=kernel,\n                           kernel_cmdline=kernel_cmdline,\n                           options=options)\n\n        if init is None:\n            self.emulator.login()\n\n    def check_init(self, path):\n        cmd = \"cmp /proc/1/exe {}\".format(path)\n        self.assertRunOk(cmd)\n\n    def check_network(self, interface, exitCode=0):\n        cmd = \"ip addr show {} |grep inet\".format(interface)\n        _, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, exitCode)\n"
  },
  {
    "path": "support/testing/tests/init/systemd-factory/var/foo/bar",
    "content": "foobar\n"
  },
  {
    "path": "support/testing/tests/init/test_busybox.py",
    "content": "import infra.basetest\nfrom tests.init.base import InitSystemBase as InitSystemBase\n\n\nclass InitSystemBusyboxBase(InitSystemBase):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def check_init(self):\n        super(InitSystemBusyboxBase, self).check_init(\"/bin/busybox\")\n\n\nclass TestInitSystemBusyboxRo(InitSystemBusyboxBase):\n    config = InitSystemBusyboxBase.config + \\\n        \"\"\"\n        # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set\n        BR2_TARGET_ROOTFS_SQUASHFS=y\n        \"\"\"\n\n    def test_run(self):\n        self.start_emulator(\"squashfs\")\n        self.check_init()\n        self.check_network(\"eth0\", 1)\n\n\nclass TestInitSystemBusyboxRw(InitSystemBusyboxBase):\n    config = InitSystemBusyboxBase.config + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_EXT2=y\n        \"\"\"\n\n    def test_run(self):\n        self.start_emulator(\"ext2\")\n        self.check_init()\n        self.check_network(\"eth0\", 1)\n\n\nclass TestInitSystemBusyboxRoNet(InitSystemBusyboxBase):\n    config = InitSystemBusyboxBase.config + \\\n        \"\"\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set\n        BR2_TARGET_ROOTFS_SQUASHFS=y\n        \"\"\"\n\n    def test_run(self):\n        self.start_emulator(\"squashfs\")\n        self.check_init()\n        self.check_network(\"eth0\")\n\n\nclass TestInitSystemBusyboxRwNet(InitSystemBusyboxBase):\n    config = InitSystemBusyboxBase.config + \\\n        \"\"\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        BR2_TARGET_ROOTFS_EXT2=y\n        \"\"\"\n\n    def test_run(self):\n        self.start_emulator(\"ext2\")\n        self.check_init()\n        self.check_network(\"eth0\")\n"
  },
  {
    "path": "support/testing/tests/init/test_none.py",
    "content": "import pexpect\n\nimport infra.basetest\nfrom tests.init.base import InitSystemBase as InitSystemBase\n\n\nclass TestInitSystemNone(InitSystemBase):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_INIT_NONE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        BR2_TARGET_ROOTFS_SQUASHFS=y\n        \"\"\"\n\n    def test_run(self):\n        self.start_emulator(fs_type=\"squashfs\", init=\"/bin/sh\")\n        index = self.emulator.qemu.expect([\"/bin/sh: can't access tty; job control turned off\", pexpect.TIMEOUT], timeout=60)\n        if index != 0:\n            self.emulator.logfile.write(\"==> System does not boot\")\n            raise SystemError(\"System does not boot\")\n        index = self.emulator.qemu.expect([\"#\", pexpect.TIMEOUT], timeout=60)\n        if index != 0:\n            self.emulator.logfile.write(\"==> System does not boot\")\n            raise SystemError(\"System does not boot\")\n\n        out, exit_code = self.emulator.run(\"sh -c 'echo $PPID'\")\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(out[0], \"1\")\n\n        self.assertRunOk(\"mount -t proc none /proc\")\n\n        self.check_init(\"/bin/sh\")\n"
  },
  {
    "path": "support/testing/tests/init/test_openrc.py",
    "content": "from tests.init.base import InitSystemBase as InitSystemBase\n\n\nclass InitSystemOpenrcBase(InitSystemBase):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_cortex_a9=y\n        BR2_ARM_ENABLE_VFP=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_INIT_OPENRC=y\n        BR2_TARGET_GENERIC_GETTY_PORT=\"ttyAMA0\"\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def check_init(self):\n        super(InitSystemOpenrcBase, self).check_init('/sbin/openrc-init')\n\n        # Test all services are OK\n        output, _ = self.emulator.run(\"rc-status -c\")\n        self.assertEqual(len(output), 0)\n\n\nclass TestInitSystemOpenrcRoFull(InitSystemOpenrcBase):\n    config = InitSystemOpenrcBase.config + \\\n        \"\"\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set\n        BR2_TARGET_ROOTFS_SQUASHFS=y\n        \"\"\"\n\n    def test_run(self):\n        self.start_emulator(\"squashfs\")\n        self.check_init()\n\n\nclass TestInitSystemOpenrcRwFull(InitSystemOpenrcBase):\n    config = InitSystemOpenrcBase.config + \\\n        \"\"\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        BR2_TARGET_ROOTFS_EXT2=y\n        \"\"\"\n\n    def test_run(self):\n        self.start_emulator(\"ext2\")\n        self.check_init()\n"
  },
  {
    "path": "support/testing/tests/init/test_systemd.py",
    "content": "import infra.basetest\nfrom tests.init.base import InitSystemBase as InitSystemBase\n\n\nclass InitSystemSystemdBase(InitSystemBase):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_cortex_a9=y\n        BR2_ARM_ENABLE_VFP=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_INIT_SYSTEMD=y\n        BR2_TARGET_GENERIC_GETTY_PORT=\"ttyAMA0\"\n        BR2_LINUX_KERNEL=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"4.19.204\"\n        BR2_LINUX_KERNEL_DEFCONFIG=\"vexpress\"\n        BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES=\"{}\"\n        BR2_LINUX_KERNEL_DTS_SUPPORT=y\n        BR2_LINUX_KERNEL_INTREE_DTS_NAME=\"vexpress-v2p-ca9\"\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\".format(infra.filepath(\"conf/binfmt-misc-kernel-fragment.config\"))\n\n    def check_init(self):\n        super(InitSystemSystemdBase, self).check_init(\"/lib/systemd/systemd\")\n\n        # Test all units are OK\n        output, _ = self.emulator.run(\"systemctl --no-pager --failed --no-legend\")\n        self.assertEqual(len(output), 0)\n\n        # Test we can reach the DBus daemon\n        self.assertRunOk(\"busctl --no-pager\")\n\n        # Test we can read at least one line from the journal\n        output, _ = self.emulator.run(\"journalctl --no-pager --lines 1 --quiet\")\n        self.assertEqual(len(output), 1)\n\n\nclass TestInitSystemSystemdRoNetworkd(InitSystemSystemdBase):\n    config = InitSystemSystemdBase.config + \\\n        \"\"\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set\n        BR2_ROOTFS_OVERLAY=\"{}\"\n        BR2_TARGET_ROOTFS_SQUASHFS=y\n        \"\"\".format(infra.filepath(\"tests/init/systemd-factory\"))\n\n    def test_run(self):\n        self.start_emulator(\"squashfs\", \"zImage\", \"vexpress-v2p-ca9\")\n        self.check_init()\n        self.check_network(\"eth0\")\n\n        # This one must be executed on the target, to check that\n        # the factory feature works as expected\n        out, exit_code = self.emulator.run(\"cat /var/foo/bar\")\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(out[0], \"foobar\")\n\n\nclass TestInitSystemSystemdRwNetworkd(InitSystemSystemdBase):\n    config = InitSystemSystemdBase.config + \\\n        \"\"\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        BR2_TARGET_ROOTFS_EXT2=y\n        \"\"\"\n\n    def test_run(self):\n        self.start_emulator(\"ext2\", \"zImage\", \"vexpress-v2p-ca9\")\n        self.check_init()\n        self.check_network(\"eth0\")\n\n\nclass TestInitSystemSystemdRoIfupdown(InitSystemSystemdBase):\n    config = InitSystemSystemdBase.config + \\\n        \"\"\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        # BR2_PACKAGE_SYSTEMD_NETWORKD is not set\n        # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set\n        BR2_TARGET_ROOTFS_SQUASHFS=y\n        \"\"\"\n\n    def test_run(self):\n        self.start_emulator(\"squashfs\", \"zImage\", \"vexpress-v2p-ca9\")\n        self.check_init()\n        self.check_network(\"eth0\")\n\n\nclass TestInitSystemSystemdRwIfupdown(InitSystemSystemdBase):\n    config = InitSystemSystemdBase.config + \\\n        \"\"\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        # BR2_PACKAGE_SYSTEMD_NETWORKD is not set\n        BR2_TARGET_ROOTFS_EXT2=y\n        \"\"\"\n\n    def test_run(self):\n        self.start_emulator(\"ext2\", \"zImage\", \"vexpress-v2p-ca9\")\n        self.check_init()\n        self.check_network(\"eth0\")\n\n\nclass TestInitSystemSystemdRoFull(InitSystemSystemdBase):\n    config = InitSystemSystemdBase.config + \\\n        \"\"\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set\n        BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE=y\n        BR2_PACKAGE_SYSTEMD_BACKLIGHT=y\n        BR2_PACKAGE_SYSTEMD_BINFMT=y\n        BR2_PACKAGE_SYSTEMD_COREDUMP=y\n        BR2_PACKAGE_SYSTEMD_FIRSTBOOT=y\n        BR2_PACKAGE_SYSTEMD_HIBERNATE=y\n        BR2_PACKAGE_SYSTEMD_IMPORTD=y\n        BR2_PACKAGE_SYSTEMD_LOCALED=y\n        BR2_PACKAGE_SYSTEMD_LOGIND=y\n        BR2_PACKAGE_SYSTEMD_MACHINED=y\n        BR2_PACKAGE_SYSTEMD_POLKIT=y\n        BR2_PACKAGE_SYSTEMD_QUOTACHECK=y\n        BR2_PACKAGE_SYSTEMD_RANDOMSEED=y\n        BR2_PACKAGE_SYSTEMD_RFKILL=y\n        BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT=y\n        BR2_PACKAGE_SYSTEMD_SYSUSERS=y\n        BR2_PACKAGE_SYSTEMD_VCONSOLE=y\n        BR2_TARGET_ROOTFS_SQUASHFS=y\n        \"\"\"\n\n    def test_run(self):\n        self.start_emulator(\"squashfs\", \"zImage\", \"vexpress-v2p-ca9\")\n        self.check_init()\n        self.check_network(\"eth0\")\n\n\nclass TestInitSystemSystemdRwFull(InitSystemSystemdBase):\n    config = InitSystemSystemdBase.config + \\\n        \"\"\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        BR2_PACKAGE_SYSTEMD_JOURNAL_REMOTE=y\n        BR2_PACKAGE_SYSTEMD_BACKLIGHT=y\n        BR2_PACKAGE_SYSTEMD_BINFMT=y\n        BR2_PACKAGE_SYSTEMD_COREDUMP=y\n        BR2_PACKAGE_SYSTEMD_FIRSTBOOT=y\n        BR2_PACKAGE_SYSTEMD_HIBERNATE=y\n        BR2_PACKAGE_SYSTEMD_IMPORTD=y\n        BR2_PACKAGE_SYSTEMD_LOCALED=y\n        BR2_PACKAGE_SYSTEMD_LOGIND=y\n        BR2_PACKAGE_SYSTEMD_MACHINED=y\n        BR2_PACKAGE_SYSTEMD_POLKIT=y\n        BR2_PACKAGE_SYSTEMD_QUOTACHECK=y\n        BR2_PACKAGE_SYSTEMD_RANDOMSEED=y\n        BR2_PACKAGE_SYSTEMD_RFKILL=y\n        BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT=y\n        BR2_PACKAGE_SYSTEMD_SYSUSERS=y\n        BR2_PACKAGE_SYSTEMD_VCONSOLE=y\n        BR2_TARGET_ROOTFS_EXT2=y\n        \"\"\"\n\n    def test_run(self):\n        self.start_emulator(\"ext2\", \"zImage\", \"vexpress-v2p-ca9\")\n        self.check_init()\n        self.check_network(\"eth0\")\n"
  },
  {
    "path": "support/testing/tests/init/test_systemd_selinux/linux-squashfs.fragment",
    "content": "CONFIG_SQUASHFS=y\n"
  },
  {
    "path": "support/testing/tests/init/test_systemd_selinux.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestSELinuxSystemd(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_x86_64=y\n        BR2_x86_corei7=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_INIT_SYSTEMD=y\n        BR2_LINUX_KERNEL=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"5.8.12\"\n        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y\n        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"board/qemu/x86_64/linux.config\"\n        BR2_PACKAGE_LIBSELINUX=y\n        BR2_PACKAGE_REFPOLICY=y\n        \"\"\"\n\n    def wait_boot(self):\n        # The complete boot with systemd takes more time than what the default multipler permits\n        self.emulator.timeout_multiplier *= 10\n        self.emulator.login()\n\n    def run_tests(self, fstype):\n        kernel = os.path.join(self.builddir, \"images\", \"bzImage\")\n        rootfs = os.path.join(self.builddir, \"images\", \"rootfs.{}\".format(fstype))\n\n        self.emulator.boot(arch=\"x86_64\", kernel=kernel,\n                           kernel_cmdline=[\"root=/dev/vda\", \"rootfstype={}\".format(fstype),\n                                           \"console=ttyS0\", \"security=selinux\"],\n                           options=[\"-cpu\", \"Nehalem\",\n                                    \"-drive\", \"file={},if=virtio,format=raw\".format(rootfs)])\n        self.wait_boot()\n\n        # Test the reported SELinux mode.\n        out, ret = self.emulator.run(\"getenforce\")\n        self.assertEqual(ret, 0)\n        self.assertEqual(out[0], \"Permissive\")\n\n        # Check the extended arguments are correctly set.\n        out, ret = self.emulator.run(\"ls -dZ /\")\n        self.assertEqual(ret, 0)\n        self.assertEqual(out[0].split()[0], \"system_u:object_r:root_t\")\n\n        # Check init's attributes.\n        out, ret = self.emulator.run(\"cat /proc/1/attr/current\")\n        self.assertEqual(ret, 0)\n        self.assertEqual(out[0], \"system_u:system_r:init_t\\0\")\n\n\nclass TestSELinuxSystemdExt4(TestSELinuxSystemd):\n    config = TestSELinuxSystemd.config + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_EXT2=y\n        BR2_TARGET_ROOTFS_EXT2_4=y\n        BR2_TARGET_ROOTFS_EXT2_SIZE=\"100M\"\n        \"\"\"\n\n    def test_run(self):\n        self.run_tests(\"ext4\")\n\n\nclass TestSELinuxSystemdSquashfs(TestSELinuxSystemd):\n    config = TestSELinuxSystemd.config + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_SQUASHFS=y\n        BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES=\"{}\"\n        \"\"\".format(\n            infra.filepath(\"tests/init/test_systemd_selinux/linux-squashfs.fragment\"),\n        )\n\n    def test_run(self):\n        self.run_tests(\"squashfs\")\n"
  },
  {
    "path": "support/testing/tests/package/__init__.py",
    "content": ""
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/Config.in",
    "content": "source \"$BR2_EXTERNAL_OPENJDK_PATH/package/openjdk-hello-world/Config.in\"\nsource \"$BR2_EXTERNAL_OPENJDK_PATH/package/openjdk-jni-test/Config.in\"\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/external.desc",
    "content": "name: OPENJDK\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/external.mk",
    "content": "include $(sort $(wildcard $(BR2_EXTERNAL_OPENJDK_PATH)/package/*/*.mk))\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/Config.in",
    "content": "config BR2_PACKAGE_OPENJDK_HELLO_WORLD\n\tbool \"openjdk hello world\"\n\tdepends on BR2_PACKAGE_OPENJDK\n\thelp\n\t  Simple class for testing openjdk\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/HelloWorld.java",
    "content": "public class HelloWorld\n{\n    public static void main(String[] args)\n    {\n        System.out.println(\"Hello, World\");\n    }\n}\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-hello-world/openjdk-hello-world.mk",
    "content": "################################################################################\n#\n# openjdk hello world\n#\n################################################################################\n\nOPENJDK_HELLO_WORLD_DEPENDENCIES = openjdk\n\ndefine OPENJDK_HELLO_WORLD_BUILD_CMDS\n\t$(INSTALL) -D $(OPENJDK_HELLO_WORLD_PKGDIR)/HelloWorld.java $(@D)/HelloWorld.java\n\t$(JAVAC) $(@D)/HelloWorld.java\nendef\n\ndefine OPENJDK_HELLO_WORLD_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/HelloWorld.class $(TARGET_DIR)/usr/bin/HelloWorld.class\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/Config.in",
    "content": "config BR2_PACKAGE_OPENJDK_JNI_TEST\n\tbool \"openjdk JNI test\"\n\tdepends on BR2_PACKAGE_OPENJDK\n\thelp\n\t  Tests openjdk JNI support\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniHelper.java",
    "content": "public class JniHelper\n{\n\tpublic void HelloManagedWorld()\n\t{\n\t\tstringMember = \"Hello, Managed World\";\n\t}\n\n\tpublic String stringMember = \"Set from Java\";\n}\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniTest.java",
    "content": "public class JniTest\n{\n\tprivate static void Test(\n\t\tString name,\n\t\tObject actual,\n\t\tObject expected,\n\t\tString actualAsString,\n\t\tString expectedAsString)\n\t{\n\t\tif (!actual.equals(expected))\n\t\t{\n\t\t\tSystem.out.println(String.format(\n\t\t\t\t\"Test: %s failed\\nExpected: \\\"%s\\\", Actual: \\\"%s\\\"\",\n\t\t\t\tname,\n\t\t\t\texpected,\n\t\t\t\tactual));\n\t\t\tJniTest.exitCode = -1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tSystem.out.println(String.format(\"Test: %s passed\", name));\n\t\t}\n\t}\n\n\tprivate static void Test(\n\t\tString name,\n\t\tString actual,\n\t\tString expected)\n\t{\n\t\tJniTest.Test(name, actual, expected, actual, expected);\n\t}\n\n\tpublic static void main(String[] args)\n\t{\n\t\tvar actualVersion = JniWrapper.get_jni_version();\n\t\tvar expectedVersion = 0x000A0000;\n\t\tJniTest.Test(\n\t\t\t\"Get JNI Version\",\n\t\t\tactualVersion,\n\t\t\texpectedVersion,\n\t\t\tString.format(\"0x%08X\", actualVersion),\n\t\t\tString.format(\"0x%08X\", expectedVersion));\n\n\t\tJniTest.Test(\n\t\t\t\"Read Native String Constant\",\n\t\t\tJniWrapper.read_constant_string(),\n\t\t\t\"Hello from C\");\n\n\t\tJniTest.Test(\n\t\t\t\"Write Java String to Native Library\",\n\t\t\tJniWrapper.write_string(\"Hello from Java\"),\n\t\t\t\"Hello from Java\");\n\n\t\tJniTest.Test(\n\t\t\t\"Write Java Char Array to Native Library\",\n\t\t\tJniWrapper.write_char_array(\"Hello from Java\".toCharArray()),\n\t\t\t\"Hello from Java\");\n\n\t\tvar helper = new JniHelper();\n\t\tJniTest.Test(\n\t\t\t\"Write String Member to Native Library\",\n\t\t\tJniWrapper.write_string_member(helper),\n\t\t\t\"Set from Java\");\n\n\t\tJniWrapper.set_string_member(helper);\n\t\tJniTest.Test(\n\t\t\t\"Set String Member from Native Library\",\n\t\t\thelper.stringMember,\n\t\t\t\"Set from C\");\n\n\t\tJniWrapper.execute_java_function(helper);\n\t\tJniTest.Test(\n\t\t\t\"Execeute Java Function from Native Library\",\n\t\t\thelper.stringMember,\n\t\t\t\"Hello, Managed World\");\n\n\t\thelper = JniWrapper.instantiate_java_class();\n\t\tJniTest.Test(\n\t\t\t\"Instantiate Java Class\",\n\t\t\thelper.stringMember,\n\t\t\t\"Instantiated from C\");\n\n\t\tJniTest.Test(\n\t\t\t\"Call Native Library to Set System Time\",\n\t\t\tJniWrapper.set_and_write_time_in_seconds(1000),\n\t\t\t\"1000\");\n\n\t\tSystem.exit(exitCode);\n\t}\n\n\tpublic static int exitCode = 0;\n}\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniWrapper.c",
    "content": "#include \"JniWrapper.h\"\n#include \"jni_helper.h\"\n\n// Proxies the generated function calls to the jni_helper\n\nJNIEXPORT jint JNICALL Java_JniWrapper_get_1jni_1version\n\t(JNIEnv* env, jclass class)\n{\n\treturn get_jni_version(env);\n}\nJNIEXPORT jstring JNICALL Java_JniWrapper_read_1constant_1string\n\t(JNIEnv* env, jclass class)\n{\n\treturn read_constant_jstring(env);\n}\nJNIEXPORT jstring JNICALL Java_JniWrapper_write_1string\n\t(JNIEnv* env, jclass class, jstring string)\n{\n\treturn write_jstring(env, string);\n}\nJNIEXPORT jstring JNICALL Java_JniWrapper_write_1char_1array\n\t(JNIEnv* env, jclass class, jcharArray chars)\n{\n\treturn write_jchar_array(env, chars);\n}\nJNIEXPORT jstring JNICALL Java_JniWrapper_write_1string_1member\n\t(JNIEnv* env, jclass class, jobject helper)\n{\n\treturn write_string_member(env, helper);\n}\nJNIEXPORT void JNICALL Java_JniWrapper_set_1string_1member\n\t(JNIEnv* env, jclass class, jobject helper)\n{\n\tset_string_member(env, helper);\n}\nJNIEXPORT void JNICALL Java_JniWrapper_execute_1java_1function\n\t(JNIEnv* env, jclass class, jobject helper)\n{\n\texecute_java_function(env, helper);\n}\nJNIEXPORT jobject JNICALL Java_JniWrapper_instantiate_1java_1class\n\t(JNIEnv* env, jclass class)\n{\n\treturn instantiate_java_class(env);\n}\nJNIEXPORT jstring JNICALL Java_JniWrapper_set_1and_1write_1time_1in_1seconds\n\t(JNIEnv* env, jclass class, jint seconds)\n{\n\treturn set_and_write_time_in_seconds(env, seconds);\n}\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/JniWrapper.java",
    "content": "public class JniWrapper\n{\n\tstatic\n\t{\n\t\tSystem.loadLibrary(\"jni_native\");\n\t}\n\n\tpublic static native int get_jni_version();\n\tpublic static native String read_constant_string();\n\tpublic static native String write_string(String string);\n\tpublic static native String write_char_array(char[] string);\n\tpublic static native String write_string_member(JniHelper helper);\n\tpublic static native void set_string_member(JniHelper helper);\n\tpublic static native void execute_java_function(JniHelper helper);\n\tpublic static native JniHelper instantiate_java_class();\n\tpublic static native String set_and_write_time_in_seconds(int seconds);\n}\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/jni_helper.c",
    "content": "#include \"jni_helper.h\"\n#include \"native.h\"\n\n// Handles Java/C interop\n\njint get_jni_version(JNIEnv* env)\n{\n\treturn (*env)->GetVersion(env);\n}\njstring read_constant_jstring(JNIEnv* env)\n{\n\treturn (*env)->NewStringUTF(env, read_constant_string());\n}\nstatic jstring read_internal_string_as_jstring(JNIEnv* env)\n{\n\treturn (*env)->NewStringUTF(env, read_internal_string());\n}\njstring write_jstring(JNIEnv* env, jstring string)\n{\n\tconst char* utf8_string = (*env)->GetStringUTFChars(env, string, NULL);\n\twrite_internal_string(utf8_string);\n\n\t(*env)->ReleaseStringUTFChars(env, string, utf8_string);\n\treturn read_internal_string_as_jstring(env);\n}\njstring write_jchar_array(JNIEnv* env, jcharArray chars)\n{\n\tjsize length = (*env)->GetArrayLength(env, chars);\n\tjchar* body = (*env)->GetCharArrayElements(env, chars, NULL);\n\tjstring input = (*env)->NewString(env, body, length);\n\tjstring output = write_jstring(env, input);\n\n\t(*env)->ReleaseCharArrayElements(env, chars, body, JNI_ABORT);\n\treturn output;\n}\nstatic jfieldID get_string_member_field(JNIEnv* env, jobject helper)\n{\n\tjclass class = (*env)->GetObjectClass(env, helper);\n\treturn (*env)->GetFieldID(env, class, \"stringMember\", \"Ljava/lang/String;\");\n}\njstring write_string_member(JNIEnv* env, jobject helper)\n{\n\tjfieldID fieldID = get_string_member_field(env, helper);\n\tjstring string = (*env)->GetObjectField(env, helper, fieldID);\n\n\treturn write_jstring(env, string);\n}\nstatic void set_string_member_helper(JNIEnv* env, jobject helper, const char* utf8_string)\n{\n\tjfieldID fieldID = get_string_member_field(env, helper);\n\tjstring string = (*env)->NewStringUTF(env, utf8_string);\n\t(*env)->SetObjectField(env, helper, fieldID, string);\n}\nvoid set_string_member(JNIEnv* env, jobject helper)\n{\n\tchar stringBuffer[256];\n\twrite_external_string(stringBuffer, 256);\n\tset_string_member_helper(env, helper, stringBuffer);\n}\n\ntypedef struct\n{\n\tJNIEnv* env;\n\tjobject object;\n\tjmethodID methodID;\n} method_parameters;\nstatic void call_void_java_method(void* context)\n{\n\tmethod_parameters* parameters = (method_parameters*)context;\n\t(*parameters->env)->CallVoidMethod(parameters->env, parameters->object, parameters->methodID);\n}\nvoid execute_java_function(JNIEnv* env, jobject helper)\n{\n\tjclass class = (*env)->GetObjectClass(env, helper);\n\tjmethodID methodID = (*env)->GetMethodID(env, class, \"HelloManagedWorld\", \"()V\");\n\n\tmethod_parameters parameters = {env, helper, methodID};\n\texecute_function(call_void_java_method, (void*)&parameters);\n}\njobject instantiate_java_class(JNIEnv* env)\n{\n\tjclass class = (*env)->FindClass(env, \"JniHelper\");\n\tjmethodID methodID = (*env)->GetMethodID(env, class, \"<init>\", \"()V\");\n\n\tjobject object =(*env)->NewObject(env, class, methodID);\n\tset_string_member_helper(env, object, \"Instantiated from C\");\n\treturn object;\n}\njstring set_and_write_time_in_seconds(JNIEnv* env, jint seconds)\n{\n\tset_time_in_seconds((int)seconds);\n\twrite_internal_time_in_seconds();\n\treturn read_internal_string_as_jstring(env);\n}\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/jni_helper.h",
    "content": "#pragma once\n\n#include <jni.h>\n\njint get_jni_version(JNIEnv* env);\njstring read_constant_jstring(JNIEnv* env);\njstring write_jstring(JNIEnv* env, jstring string);\njstring write_jchar_array(JNIEnv* env, jcharArray chars);\njstring write_string_member(JNIEnv* env, jobject helper);\nvoid set_string_member(JNIEnv* env, jobject helper);\nvoid execute_java_function(JNIEnv* env, jobject helper);\njobject instantiate_java_class(JNIEnv* env);\njstring set_and_write_time_in_seconds(JNIEnv* env, jint seconds);\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/native.c",
    "content": "#include \"native.h\"\n#include <stdio.h>\n#include <time.h>\n\n// Pure native functions\n\n#define CHAR_BUFFER_SIZE 256\nstatic char buffer[CHAR_BUFFER_SIZE];\n\nconst char* read_constant_string()\n{\n\treturn \"Hello from C\";\n}\nconst char* read_internal_string()\n{\n\treturn buffer;\n}\nvoid write_internal_string(const char* string)\n{\n\tsnprintf(buffer, CHAR_BUFFER_SIZE, \"%s\", string);\n}\nvoid write_external_string(char* string, size_t maxLength)\n{\n\tsnprintf(string, maxLength, \"Set from C\");\n}\nvoid execute_function(void(*function)(void*), void* context)\n{\n\tfunction(context);\n}\nvoid set_time_in_seconds(int seconds)\n{\n\ttime_t timeToSet = seconds;\n\tstime(&timeToSet);\n}\nvoid write_internal_time_in_seconds()\n{\n\ttime_t systemTime = time(NULL);\n\tsnprintf(buffer, CHAR_BUFFER_SIZE, \"%u\", systemTime);\n}\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/native.h",
    "content": "#pragma once\n\n#include <stddef.h>\n\nconst char* read_constant_string();\nconst char* read_internal_string();\nvoid write_internal_string(const char* string);\nvoid write_external_string(char* string, size_t maxLength);\nvoid execute_function(void(*function)(void*), void* context);\nvoid set_time_in_seconds(int seconds);\nvoid write_internal_time_in_seconds();\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/openjdk/package/openjdk-jni-test/openjdk-jni-test.mk",
    "content": "################################################################################\n#\n# openjdk jni test\n#\n################################################################################\n\nOPENJDK_JNI_TEST_DEPENDENCIES = openjdk\n\nJNI_INCLUDE_PATH = $(BUILD_DIR)/openjdk-$(OPENJDK_VERSION)/build/linux-aarch64-server-release/jdk/include\n\ndefine OPENJDK_JNI_TEST_BUILD_CMDS\n\t# Compile Java classes and generate native headers\n\t$(JAVAC) -d $(@D) -h $(@D) \\\n\t\t$(OPENJDK_JNI_TEST_PKGDIR)/JniTest.java \\\n\t\t$(OPENJDK_JNI_TEST_PKGDIR)/JniWrapper.java \\\n\t\t$(OPENJDK_JNI_TEST_PKGDIR)/JniHelper.java\n\n\t# Compile shared library\n\t$(TARGET_MAKE_ENV) $(TARGET_CC) -shared -fPIC \\\n\t\t-I$(JNI_INCLUDE_PATH) -I$(JNI_INCLUDE_PATH)/linux -I$(@D) \\\n\t\t-o $(@D)/libjni_native.so \\\n\t\t$(OPENJDK_JNI_TEST_PKGDIR)/JniWrapper.c \\\n\t\t$(OPENJDK_JNI_TEST_PKGDIR)/jni_helper.c \\\n\t\t$(OPENJDK_JNI_TEST_PKGDIR)/native.c\nendef\n\ndefine OPENJDK_JNI_TEST_INSTALL_TARGET_CMDS\n\t$(INSTALL) -D -m 755 $(@D)/JniTest.class $(TARGET_DIR)/usr/bin/JniTest.class\n\t$(INSTALL) -D -m 755 $(@D)/JniWrapper.class $(TARGET_DIR)/usr/bin/JniWrapper.class\n\t$(INSTALL) -D -m 755 $(@D)/JniHelper.class $(TARGET_DIR)/usr/bin/JniHelper.class\n\t$(INSTALL) -D -m 755 $(@D)/libjni_native.so $(TARGET_DIR)/usr/lib/libjni_native.so\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/polkit/Config.in",
    "content": "source \"$BR2_EXTERNAL_POLKIT_PATH/package/polkit-rules-test/Config.in\"\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/polkit/external.desc",
    "content": "name: POLKIT\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/polkit/external.mk",
    "content": "include $(sort $(wildcard $(BR2_EXTERNAL_POLKIT_PATH)/package/*/*.mk))\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/Config.in",
    "content": "config BR2_PACKAGE_POLKIT_RULES_TEST\n\tbool \"polkit rules test\"\n\tdepends on BR2_PACKAGE_POLKIT\n\thelp\n\t  Simple test to ensure polkit is loading and enforcing rules\n\t  correctly.\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/initd/hello-polkit.c",
    "content": "#include <stdio.h>\n\nint main(void){\n    printf(\"Hello polkit!\\n\");\n    return 0;\n}\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/initd/hello-polkit.policy",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE policyconfig PUBLIC\n \"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN\"\n \"http://www.freedesktop.org/software/polkit/policyconfig-1.dtd\">\n<policyconfig>\n  <action id=\"org.freedesktop.policykit.pkexec.hello-polkit\">\n    <message>Authentication is required to run the hello world test program</message>\n    <defaults>\n      <allow_inactive>no</allow_inactive>\n      <allow_active>no</allow_active>\n    </defaults>\n    <annotate key=\"org.freedesktop.policykit.exec.path\">/usr/bin/hello-polkit</annotate>\n  </action>\n</policyconfig>\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/initd/hello-polkit.rules",
    "content": "polkit.addRule(function(action, subject) {\n   if (action.id == \"org.freedesktop.policykit.pkexec.hello-polkit\" &&\n       subject.user == \"brtest\") {\n       return polkit.Result.YES;\n   }\n});\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/polkit-rules-test.mk",
    "content": "################################################################################\n#\n# polkit-rules-test\n#\n################################################################################\n\nPOLKIT_RULES_TEST_DEPENDENCIES = polkit\n\ndefine POLKIT_RULES_TEST_USERS\n\tbrtest  -1  brtest  -1   =password  /home/brtest /bin/sh brtest\nendef\n\ndefine POLKIT_RULES_TEST_BUILD_CMDS\n\t$(INSTALL) -D $(POLKIT_RULES_TEST_PKGDIR)/initd/hello-polkit.c $(@D)/hello-polkit.c\n\t$(TARGET_CC) $(@D)/hello-polkit.c -o $(@D)/hello-polkit\nendef\n\n# Install the rules file to /root. Test_polkit.py first tests that restarting\n# timesyncd as a user fails, then moves the rules file and confirmes restarting\n# timesyncd as a user succeeds.\ndefine POLKIT_RULES_TEST_INSTALL_INIT_SYSTEMD\n\tmkdir -p $(TARGET_DIR)/etc/polkit-1/rules.d\n\t$(INSTALL) -D $(POLKIT_RULES_TEST_PKGDIR)/systemd/systemd-timesyncd-restart.rules \\\n\t\t$(TARGET_DIR)/root/systemd-timesyncd-restart.rules\nendef\n\ndefine POLKIT_RULES_TEST_INSTALL_INIT_SYSV\n\tmkdir -p $(TARGET_DIR)/usr/share/polkit-1/actions/\n\t$(INSTALL) -D $(@D)/hello-polkit $(TARGET_DIR)/usr/bin/hello-polkit\n\n\t$(INSTALL) -D $(POLKIT_RULES_TEST_PKGDIR)/initd/hello-polkit.policy \\\n\t\t$(TARGET_DIR)/usr/share/polkit-1/actions/hello-polkit.policy\n\n\t$(INSTALL) -D $(POLKIT_RULES_TEST_PKGDIR)/initd/hello-polkit.rules \\\n\t\t$(TARGET_DIR)/root/hello-polkit.rules\nendef\n\n$(eval $(generic-package))\n"
  },
  {
    "path": "support/testing/tests/package/br2-external/polkit/package/polkit-rules-test/systemd/systemd-timesyncd-restart.rules",
    "content": "polkit.addRule(function(action, subject) {\n    if (action.id == \"org.freedesktop.systemd1.manage-units\" &&\n        action.lookup(\"unit\") == \"systemd-timesyncd.service\" &&\n        subject.user == \"brtest\") {\n        return polkit.Result.YES;\n    }\n});\n"
  },
  {
    "path": "support/testing/tests/package/copy-sample-script-to-target.sh",
    "content": "#!/bin/sh\nset -e\n\nshift\nfor file in \"$@\"; do\n\tcp -f \"${file}\" \"${TARGET_DIR}/root/\"\ndone\n"
  },
  {
    "path": "support/testing/tests/package/sample_bmap_tools.sh",
    "content": "#!/bin/sh\n# simple test which creates a dummy file system image, then use bmaptool create\n# and bmaptool copy to copy it to another file\n\nset -xeu\n\n# create the necessary test files\ndd if=/dev/zero of=disk.img bs=2M count=1\nmkfs.ext4 disk.img\nfallocate -d disk.img\ndd if=/dev/zero of=copy.img bs=2M count=1\n\n# do a test copy of the file system image\nbmaptool create -o disk.img.bmap disk.img\nbmaptool copy disk.img copy.img\ncmp disk.img copy.img\n"
  },
  {
    "path": "support/testing/tests/package/sample_gst1_python.py",
    "content": "#!/usr/bin/env python3\n\"\"\"A simple test that uses gst1-python to run a fake videotestsrc for 100\nframes\n\"\"\"\nimport sys\nimport gi\ngi.require_version('Gst', '1.0')\nfrom gi.repository import Gst, GLib  # noqa: E402\n\n\ndef on_message(bus, message, loop):\n    print('Received Gst.Message.type: {}'.format(message.type))\n    if message.type == Gst.MessageType.EOS:\n        loop.quit()\n    return True\n\n\ndef main():\n    # Initializes Gstreamer\n    Gst.init(sys.argv)\n    pipeline = Gst.parse_launch(\"videotestsrc num-buffers=100 ! fakevideosink\")\n    bus = pipeline.get_bus()\n    bus.add_signal_watch()\n    pipeline.set_state(Gst.State.PLAYING)\n    loop = GLib.MainLoop()\n    bus.connect(\"message\", on_message, loop)\n    loop.run()\n    pipeline.set_state(Gst.State.NULL)\n\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "support/testing/tests/package/sample_libftdi1.py",
    "content": "import ftdi1 # noqa\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_argh.py",
    "content": "import argh\n\n\n@argh.arg(\"foo\", help=\"help for foo\")\n@argh.arg(\"--bar\", help=\"help for bar\")\ndef main(foo, bar=False):\n    print(\"{}, {}\".format(foo, bar))\n\n\nargh.dispatch_command(main)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_attrs.py",
    "content": "import attr\n\n\n@attr.s\nclass Obj(object):\n    x = attr.ib()\n    y = attr.ib(default=1)\n\n\nobj1 = Obj(2)\nassert(obj1.x == 2)\nassert(obj1.y == 1)\nobj2 = Obj(3, 4)\nassert(obj2.x == 3)\nassert(obj2.y == 4)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_augeas.py",
    "content": "import augeas\n\na = augeas.Augeas(root=\"/\")\nhosts = a.match(\"/files/etc/hosts/*\")\nassert(hosts is not None)\nassert(len(hosts) == 2)\n\nassert(a.get(\"/files/etc/hosts/1/ipaddr\") == \"127.0.0.1\")\nassert(a.get(\"/files/etc/hosts/1/canonical\") == \"localhost\")\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_autobahn.py",
    "content": "import autobahn.wamp  # noqa\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_automat.py",
    "content": "from automat import MethodicalMachine\n\n\nclass Led(object):\n    _machine = MethodicalMachine()\n\n    @_machine.state()\n    def led_on(self):\n        \"led is on\"\n\n    @_machine.state(initial=True)\n    def led_off(self):\n        \"led is off\"\n\n    @_machine.input()\n    def turn_on(self):\n        \"turn the led on\"\n\n    @_machine.output()\n    def _light(self):\n        print(\"light\")\n\n    led_off.upon(turn_on, enter=led_on, outputs=[_light])\n\n\nled = Led()\nled.turn_on()\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_avro.py",
    "content": "from io import BytesIO\nfrom avro.schema import Parse\nfrom avro.io import DatumReader, BinaryDecoder\n\nschema = Parse(\"\"\"{\n\"namespace\": \"org.buildroot.package.python_avro\",\n\"type\": \"record\",\n\"name\": \"Developer\",\n\"fields\": [\n    {\"name\": \"email\", \"type\": \"string\"},\n    {\"name\": \"maintainer_of\", \"type\": \"string\"}\n]\n}\"\"\")\n\nexample = b'<titouan.christophe@railnova.eu\\x16python_avro'\n\nreader = DatumReader(schema)\ndeserialized = reader.read(BinaryDecoder(BytesIO(example)))\n\nassert deserialized == {\n    'email': 'titouan.christophe@railnova.eu',\n    'maintainer_of': 'python_avro',\n}\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_bitstring.py",
    "content": "import bitstring\n\nvalue = bitstring.BitArray(\"uint:12=42\")\nassert(value.hex == \"02a\")\nassert(value.bin == \"000000101010\")\nassert(value.uint == 42)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_boto3.py",
    "content": "import boto3\ns3 = boto3.resource('s3')\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_botocore.py",
    "content": "import botocore.session\nsession = botocore.session.get_session()\nclient = session.create_client('ec2', region_name=\"us-east-1\")\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_can.py",
    "content": "import can\n\nmsg = can.Message(arbitration_id=0xc0ffee,\n                  data=[0, 25, 0, 1, 3, 1, 4, 1],\n                  is_extended_id=True)\nassert(msg is not None)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_cbor_dec.py",
    "content": "import cbor\n\nwith open(\"/tmp/data.cbor\", \"rb\") as f:\n    serialized = f.read()\ndata = cbor.loads(serialized)\nprint(data)\nassert(data[\"name\"] == \"python-cbor\")\nassert(data[\"versions\"] == [\"1\", \"2\"])\nassert(data[\"group\"][\"is_a_package\"] is True)\nassert(data[\"group\"][\"value\"] == 42)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_cbor_enc.py",
    "content": "import cbor\n\ndata = {\n    \"name\": \"python-cbor\",\n    \"versions\": [\"1\", \"2\"],\n    \"group\": {\n        \"is_a_package\": True,\n        \"value\": 42\n    }\n}\nserialized = cbor.dumps(data)\nprint(serialized.decode(errors=\"ignore\"))\nwith open(\"/tmp/data.cbor\", \"wb\") as f:\n    f.write(serialized)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_click.py",
    "content": "import click\n\n\n@click.command()\n@click.argument(\"foo\")\n@click.option(\"--bar\", is_flag=True, help=\"help for bar\")\ndef main(foo, bar):\n    click.echo(\"{}, {}\".format(foo, bar))\n\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_colorzero.py",
    "content": "from colorzero import Color\n\nred = Color('red')\ngreen = Color('lime')\nblue = Color('blue')\nassert(red.rgb == (1.0, 0.0, 0.0))\nassert(green.rgb == (0.0, 1.0, 0.0))\nassert(blue.rgb == (0.0, 0.0, 1.0))\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_constantly.py",
    "content": "from constantly import ValueConstant, Values\n\n\nclass RESULT(Values):\n    OK = ValueConstant(0)\n    FAIL = ValueConstant(-1)\n\n    @classmethod\n    def get(cls, rc):\n        if rc == 0:\n            return cls.OK\n        else:\n            return cls.FAIL\n\n\nprint(list(RESULT.iterconstants()))\nassert(RESULT.OK < RESULT.FAIL)\nassert(RESULT.OK.value > RESULT.FAIL.value)\nassert(RESULT.get(-5) == RESULT.FAIL)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_crossbar.py",
    "content": "import os\nimport crossbar\n\nos.environ[\"AUTOBAHN_USE_UMSGPACK\"] = \"1\"\ncrossbar.run([\"version\"])\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_cryptography.py",
    "content": "from cryptography.fernet import Fernet\nkey = Fernet.generate_key()\nf = Fernet(key)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_dbus_fast.py",
    "content": "import asyncio\nfrom dbus_fast.aio import MessageBus\nfrom dbus_fast.service import ServiceInterface, method\nimport dbus_fast.introspection as intr\nfrom dbus_fast import BusType\n\n\nclass SampleInterface(ServiceInterface):\n    def __init__(self):\n        super().__init__('test.interface')\n\n    @method()\n    def Ping(self):\n        pass\n\n    @method()\n    def ConcatStrings(self, what1: 's', what2: 's') -> 's':  # noqa: F821\n        return what1 + what2\n\n\nasync def main():\n    bus_name = 'dbus.fast.sample'\n    obj_path = '/test/path'\n\n    bus = await MessageBus(bus_type=BusType.SYSTEM).connect()\n    bus2 = await MessageBus(bus_type=BusType.SYSTEM).connect()\n\n    await bus.request_name(bus_name)\n\n    service_interface = SampleInterface()\n    bus.export(obj_path, service_interface)\n\n    introspection = await bus2.introspect(bus_name, obj_path)\n    assert type(introspection) is intr.Node\n    obj = bus2.get_proxy_object(bus_name, obj_path, introspection)\n    interface = obj.get_interface(service_interface.name)\n\n    result = await interface.call_ping()\n    assert result is None\n\n    result = await interface.call_concat_strings('hello ', 'world')\n    assert result == 'hello world'\n\n\nasyncio.run(main())\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_dbus_next.py",
    "content": "import asyncio\nfrom dbus_next.aio import MessageBus\nfrom dbus_next.service import ServiceInterface, method\nimport dbus_next.introspection as intr\nfrom dbus_next import BusType\n\n\nclass SampleInterface(ServiceInterface):\n    def __init__(self):\n        super().__init__('test.interface')\n\n    @method()\n    def Ping(self):\n        pass\n\n    @method()\n    def ConcatStrings(self, what1: 's', what2: 's') -> 's':  # noqa: F821\n        return what1 + what2\n\n\nasync def main():\n    bus_name = 'dbus.next.sample'\n\n    bus = await MessageBus(bus_type=BusType.SYSTEM).connect()\n    bus2 = await MessageBus(bus_type=BusType.SYSTEM).connect()\n\n    await bus.request_name(bus_name)\n\n    service_interface = SampleInterface()\n    bus.export('/test/path', service_interface)\n\n    introspection = await bus2.introspect(bus_name, '/test/path')\n    assert type(introspection) is intr.Node\n    obj = bus2.get_proxy_object(bus_name, '/test/path', introspection)\n    interface = obj.get_interface(service_interface.name)\n\n    result = await interface.call_ping()\n    assert result is None\n\n    result = await interface.call_concat_strings('hello ', 'world')\n    assert result == 'hello world'\n\n\nasyncio.run(main())\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_django.py",
    "content": "import django  # noqa: F401\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_flask.py",
    "content": "from flask import Flask\napp = Flask(__name__)\n\n\n@app.route('/')\ndef hello_world():\n    return 'Hello, World!'\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_flask_expects_json.py",
    "content": "from flask import Flask\nfrom flask_expects_json import expects_json\napp = Flask(__name__)\n\nschema = {\n    'type': 'object',\n    'properties': {\n        'name': {'type': 'string'},\n        'email': {'type': 'string'},\n    },\n    'required': ['name', 'email']\n}\n\n\n@app.route('/', methods=['POST'])\n@expects_json(schema)\ndef hello_world():\n    return 'Hello, World!'\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_git.py",
    "content": "from git import *  # noqa\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_gitdb2.py",
    "content": "from gitdb import *  # noqa\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_gobject.py",
    "content": "#!/usr/bin/env python3\n\"\"\"A simple test that uses python-gobject to find the path of sh.\"\"\"\nfrom gi.repository import GLib\n\n\ndef main():\n    sh_path = GLib.find_program_in_path('sh')\n    if sh_path == \"/bin/sh\":\n        return True\n    return False\n\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_gpiozero.py",
    "content": "from gpiozero import pi_info\n\npiBoardInfo = pi_info('a020d3')  # 3B+\n\nassert(piBoardInfo.model == '3B+')\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_incremental.py",
    "content": "import incremental\nv = incremental.Version(\"package\", 1, 2, 3, release_candidate=4)\nassert(str(v) == \"[package, version 1.2.3.rc4]\")\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_passlib.py",
    "content": "from passlib.hash import pbkdf2_sha256\n\nhash = pbkdf2_sha256.hash(\"password\")\nassert(pbkdf2_sha256.verify(\"passWord\", hash) is False)\nassert(pbkdf2_sha256.verify(\"password\", hash) is True)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_pexpect.py",
    "content": "import pexpect\n\np = pexpect.spawn([\"login\"])\np.expect(\"login:\")\np.sendline(\"wrong\")\np.expect(\"Password:\")\np.sendline(\"wrong\")\np.expect(\"Login incorrect\")\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_pynacl.py",
    "content": "import nacl.utils\n\nnonce = nacl.utils.random(16)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_pytest.py",
    "content": "import pytest\n\n\nx = 1\n\n\n@pytest.fixture()\ndef f1():\n    global x\n    x = 2\n    yield 15\n    x = 3\n\n\ndef test_1():\n    assert x == 1\n\n\ndef test_2(f1):\n    assert x == 2\n    assert f1 == 15\n\n\ndef test_3():\n    assert x == 3\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_pytest_asyncio.py",
    "content": "import asyncio\nimport pytest\n\n\nx = 1\n\n\n@pytest.fixture()\ndef f1():\n    global x\n    x = 2\n    yield 15\n    x = 3\n\n\n@pytest.mark.asyncio\nasync def test_1():\n    assert x == 1\n\n\n@pytest.mark.asyncio\nasync def test_2(f1):\n    assert x == 2\n    assert f1 == 15\n\n\n@pytest.mark.asyncio\nasync def test_3():\n    assert x == 3\n    await asyncio.sleep(0.1)\n    assert x == 3\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_pyyaml_dec.py",
    "content": "import yaml\n\nwith open(\"/tmp/data.yml\", \"rb\") as f:\n    serialized = f.read()\ndata = yaml.load(serialized)\nprint(data)\nassert(data[\"name\"] == \"python-pyyaml\")\nassert(data[\"versions\"] == [\"1\", \"2\"])\nassert(data[\"group\"][\"is_a_package\"] is True)\nassert(data[\"group\"][\"value\"] == 42)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_pyyaml_enc.py",
    "content": "import yaml\n\ndata = {\n    \"name\": \"python-pyyaml\",\n    \"versions\": [\"1\", \"2\"],\n    \"group\": {\n        \"is_a_package\": True,\n        \"value\": 42\n    }\n}\nserialized = yaml.dump(data, default_flow_style=False)\nprint(serialized)\nwith open(\"/tmp/data.yml\", \"w\") as f:\n    f.write(serialized)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_rpi_gpio.py",
    "content": "try:\n    import RPi.GPIO  # noqa\nexcept RuntimeError as e:\n    assert(str(e) == 'This module can only be run on a Raspberry Pi!')\nelse:\n    raise RuntimeError('Import succeeded when it should not have!')\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_rsa.py",
    "content": "import rsa\n(pubkey, privkey) = rsa.newkeys(512)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_service_identity.py",
    "content": "from service_identity import VerificationError  # noqa\nfrom service_identity.pyopenssl import verify_hostname  # noqa\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_smmap2.py",
    "content": "# Taken from smmap/test/test_tutorial.py\n\nimport smmap\nmman = smmap.SlidingWindowMapManager()\nassert mman.num_file_handles() == 0\nassert mman.mapped_memory_size() == 0\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_subprocess32.py",
    "content": "import subprocess32\n\noutput = subprocess32.check_output([\"ls\", \"-l\", \"/dev/null\"])\nprint(output)\nassert(\"/dev/null\" in output)\nassert(\"No such\" not in output)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_treq.py",
    "content": "from twisted.internet import reactor\nimport treq\n\n\ndef done(response):\n    print(response.code)\n    reactor.stop()\n\n\ndef err(fail):\n    print(fail.value)\n    reactor.stop()\n\n\ntreq.get(\"https://localhost\").addCallback(done).addErrback(err)\nreactor.run()\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_twisted.py",
    "content": "from twisted.internet import protocol, reactor, endpoints\n\n\nclass F(protocol.Factory):\n    pass\n\n\nendpoints.serverFromString(reactor, \"tcp:1234\").listen(F())\nreactor.run()\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_txaio_asyncio.py",
    "content": "import txaio\ntxaio.use_asyncio()\nf0 = txaio.create_future()\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_txaio_twisted.py",
    "content": "import txaio\ntxaio.use_twisted()\nf0 = txaio.create_future()\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_txtorcon.py",
    "content": "import txtorcon  # noqa\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_ubjson_dec.py",
    "content": "import ubjson\n\nwith open(\"/tmp/data.json\", \"rb\") as f:\n    serialized = f.read()\ndata = ubjson.loadb(serialized)\nprint(data)\nassert(data[\"name\"] == \"python-ubjson\")\nassert(data[\"versions\"] == [\"1\", \"2\"])\nassert(data[\"group\"][\"is_a_package\"] is True)\nassert(data[\"group\"][\"value\"] == 42)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_ubjson_enc.py",
    "content": "import ubjson\n\ndata = {\n    \"name\": \"python-ubjson\",\n    \"versions\": [\"1\", \"2\"],\n    \"group\": {\n        \"is_a_package\": True,\n        \"value\": 42\n    }\n}\nserialized = ubjson.dumpb(data)\nprint(serialized)\nwith open(\"/tmp/data.json\", \"wb\") as f:\n    f.write(serialized)\n"
  },
  {
    "path": "support/testing/tests/package/sample_python_unittest_xml_reporting.py",
    "content": "import unittest\nimport xmlrunner\n\n\nclass Test1(unittest.TestCase):\n    def test_something(self):\n        self.assertTrue(True)\n\n\nif __name__ == '__main__':\n    unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports'))\n"
  },
  {
    "path": "support/testing/tests/package/test_atop.py",
    "content": "import os\n\nimport infra.basetest\n\nBASIC_TOOLCHAIN_CONFIG_HEADERS_AT_LEAST_3_14 = \\\n    \"\"\"\n    BR2_arm=y\n    BR2_TOOLCHAIN_EXTERNAL=y\n    BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\n    BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\n    BR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2019.05.1.tar.bz2\"\n    BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y\n    BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14=y\n    BR2_TOOLCHAIN_EXTERNAL_LOCALE=y\n    # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set\n    BR2_TOOLCHAIN_EXTERNAL_CXX=y\n    \"\"\"\n\n\nclass TestAtop(infra.basetest.BRTest):\n    config = BASIC_TOOLCHAIN_CONFIG_HEADERS_AT_LEAST_3_14 + \\\n        \"\"\"\n        BR2_PACKAGE_ATOP=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n        cmd = \"atop -V | grep '^Version'\"\n        self.assertRunOk(cmd)\n\n        cmd = \"atop -a 1 2 | grep '% *atop *$'\"\n        self.assertRunOk(cmd)\n"
  },
  {
    "path": "support/testing/tests/package/test_bmap_tools.py",
    "content": "import os\nimport infra\nimport subprocess\n\nfrom infra.basetest import BRTest\n\n\nclass TestBmapTools(BRTest):\n    __test__ = False\n    sample_script = \"tests/package/sample_bmap_tools.sh\"\n    copy_script = 'tests/package/copy-sample-script-to-target.sh'\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_cortex_a8=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_PACKAGE_BMAP_TOOLS=y\n        BR2_ROOTFS_POST_BUILD_SCRIPT=\"{}\"\n        BR2_ROOTFS_POST_SCRIPT_ARGS=\"{}\"\n        BR2_TARGET_ROOTFS_EXT2=y\n        BR2_TARGET_ROOTFS_EXT2_4=y\n        BR2_TARGET_ROOTFS_EXT2_SIZE=\"65536\"\n        # BR2_TARGET_ROOTFS_TAR is not set\n        BR2_PACKAGE_UTIL_LINUX=y\n        BR2_PACKAGE_UTIL_LINUX_FALLOCATE=y\n        BR2_PACKAGE_E2FSPROGS=y\n        BR2_PACKAGE_UTIL_LINUX_LIBUUID=y\n        \"\"\".format(infra.filepath(copy_script),\n                   infra.filepath(sample_script))\n    timeout = 60\n\n    def login(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.ext4\")\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=\"builtin\",\n                           kernel_cmdline=[\"root=/dev/mmcblk0\",\n                                           \"rootfstype=ext4\"],\n                           options=[\"-drive\", \"file={},if=sd,format=raw\".format(img)])\n        self.emulator.login()\n\n    def test_run(self):\n        self.login()\n        cmd = \"/root/{}\".format(os.path.basename(self.sample_script))\n        self.assertRunOk(cmd, timeout=20)\n\n\nclass TestPy2BmapTools(TestBmapTools):\n    __test__ = True\n    config = TestBmapTools.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        \"\"\"\n\n\nclass TestPy3BmapTools(TestBmapTools):\n    __test__ = True\n    config = TestBmapTools.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        \"\"\"\n\n\nclass TestHostBmapTools(BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_HOST_BMAP_TOOLS=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        BR2_TARGET_ROOTFS_EXT2=y\n        \"\"\"\n\n    def test_run(self):\n        bmap_x = os.path.join(self.b.builddir, \"host\", \"bin\", \"bmaptool\")\n        src_f = os.path.join(self.b.builddir, \"images\", \"rootfs.ext2\")\n        dst_f = os.path.join(self.b.builddir, \"images\", \"rootfs.ext2.copy\")\n        map_f = os.path.join(self.b.builddir, \"images\", \"rootfs.ext2.bmap\")\n\n        ret = subprocess.call([bmap_x, \"create\", \"-o\", map_f, src_f],\n                              stdout=self.b.logfile,\n                              stderr=self.b.logfile)\n        self.assertEqual(ret, 0)\n\n        ret = subprocess.call([bmap_x, \"copy\", src_f, dst_f],\n                              stdout=self.b.logfile,\n                              stderr=self.b.logfile)\n        self.assertEqual(ret, 0)\n\n        with open(src_f, 'rb') as f:\n            src = f.read()\n        with open(dst_f, 'rb') as f:\n            dst = f.read()\n        self.assertEqual(src, dst)\n"
  },
  {
    "path": "support/testing/tests/package/test_crudini.py",
    "content": "import os\nfrom tests.package.test_python import TestPythonPackageBase\n\n\nINI_FILE_CONTENT = \"\"\"\n[section]\nparam = this-is-the-magic-value\nother = dont care\n\"\"\"\n\n\nclass TestCrudiniBase(TestPythonPackageBase):\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_CRUDINI=y\n        \"\"\"\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\", kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n\n        self.emulator.login()\n\n        # 1. Create some sample .ini file\n        cmd = \"echo -e '%s' > config.ini\" % INI_FILE_CONTENT\n        _, ret = self.emulator.run(cmd)\n        self.assertEqual(ret, 0)\n\n        # 2. Attempt to get the value\n        out, ret = self.emulator.run(\"crudini --get config.ini section param\")\n        self.assertEqual(ret, 0)\n        self.assertEqual(out, ['this-is-the-magic-value'])\n\n\nclass TestCrudiniPy2(TestCrudiniBase):\n    __test__ = True\n    config = TestCrudiniBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        \"\"\"\n\n\nclass TestCrudiniPy3(TestCrudiniBase):\n    __test__ = True\n    config = TestCrudiniBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        \"\"\"\n"
  },
  {
    "path": "support/testing/tests/package/test_docker_compose.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestDockerCompose(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_x86_64=y\n        BR2_x86_corei7=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE=y\n        BR2_SYSTEM_DHCP=\"eth0\"\n        BR2_ROOTFS_POST_BUILD_SCRIPT=\"{}\"\n        BR2_ROOTFS_POST_SCRIPT_ARGS=\"{}\"\n        BR2_LINUX_KERNEL=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"4.19.204\"\n        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y\n        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"{}\"\n        BR2_PACKAGE_CA_CERTIFICATES=y\n        BR2_PACKAGE_DOCKER_CLI=y\n        BR2_PACKAGE_DOCKER_COMPOSE=y\n        BR2_PACKAGE_DOCKER_ENGINE=y\n        BR2_TARGET_ROOTFS_EXT2=y\n        BR2_TARGET_ROOTFS_EXT2_SIZE=\"512M\"\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\".format(\n            infra.filepath(\"tests/package/copy-sample-script-to-target.sh\"),\n            infra.filepath(\"conf/docker-compose.yml\"),\n            infra.filepath(\"conf/docker-compose-kernel.config\"))\n\n    def wait_for_dockerd(self):\n        # dockerd takes a while to start up\n        _, _ = self.emulator.run('while [ ! -e /var/run/docker.sock ]; do sleep 1; done', 120)\n\n    def docker_test(self):\n        # will download container if not available, which may take some time\n        self.assertRunOk('docker run --rm -p 8888:8888 busybox:latest /bin/true', 120)\n\n    def docker_compose_test(self):\n        # will download container if not available, which may take some time\n        self.assertRunOk('docker-compose up -d', 120)\n        # container may take some time to start\n        self.assertRunOk('while ! docker inspect root_busybox_1 2>&1 >/dev/null; do sleep 1; done', 120)\n        self.assertRunOk('wget -O /tmp/busybox http://127.0.0.1/busybox', 120)\n        self.assertRunOk('cmp /bin/busybox /tmp/busybox', 120)\n\n    def test_run(self):\n        kernel = os.path.join(self.builddir, \"images\", \"bzImage\")\n        rootfs = os.path.join(self.builddir, \"images\", \"rootfs.ext2\")\n        self.emulator.boot(arch=\"x86_64\",\n                           kernel=kernel,\n                           kernel_cmdline=[\"root=/dev/vda\", \"console=ttyS0\"],\n                           options=[\"-cpu\", \"Nehalem\",\n                                    \"-m\", \"512M\",\n                                    \"-device\", \"virtio-rng-pci\",\n                                    \"-drive\", \"file={},format=raw,if=virtio\".format(rootfs),\n                                    \"-net\", \"nic,model=virtio\",\n                                    \"-net\", \"user\"])\n        self.emulator.login()\n        self.wait_for_dockerd()\n        self.docker_test()\n        self.docker_compose_test()\n"
  },
  {
    "path": "support/testing/tests/package/test_dropbear.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestDropbear(infra.basetest.BRTest):\n    passwd = \"testpwd\"\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_GENERIC_ROOT_PASSWD=\"{}\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        BR2_PACKAGE_DROPBEAR=y\n        BR2_PACKAGE_SSHPASS=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\".format(passwd)\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img,\n                                    \"-net\", \"nic\",\n                                    \"-net\", \"user\"])\n        self.emulator.login(self.passwd)\n        cmd = \"netstat -ltn 2>/dev/null | grep 0.0.0.0:22\"\n        self.assertRunOk(cmd)\n\n        cmd = \"sshpass -p {} ssh -y localhost /bin/true\".format(self.passwd)\n        self.assertRunOk(cmd)\n"
  },
  {
    "path": "support/testing/tests/package/test_dtbocfg.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestDtbocfg(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_LINUX_KERNEL=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"5.10.7\"\n        BR2_LINUX_KERNEL_USE_DEFCONFIG=y\n        BR2_LINUX_KERNEL_DEFCONFIG=\"vexpress\"\n        BR2_PACKAGE_DTBOCFG=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        kernel = os.path.join(self.builddir, \"images\", \"zImage\")\n        kernel_cmdline = [\"console=ttyAMA0\"]\n        dtb = infra.download(self.downloaddir, \"vexpress-v2p-ca9.dtb\")\n        options = [\"-M\", \"vexpress-a9\", \"-dtb\", dtb, \"-initrd\", img]\n\n        self.emulator.boot(arch=\"armv7\", kernel=kernel,\n                           kernel_cmdline=kernel_cmdline,\n                           options=options)\n        self.emulator.login()\n        self.assertRunOk(\"modprobe dtbocfg.ko\")\n        self.assertRunOk(\"mkdir /tmp/config && mount -t configfs none /tmp/config\")\n\n        # Check that overlays directory is present.\n        # From dtbocfg site (https://github.com/ikwzm/dtbocfg):\n        #   If /config/device-tree/overlays is created, it is ready to use\n        #   dtbocfg\n        self.assertRunOk(\"ls /tmp/config/device-tree/overlays/\")\n"
  },
  {
    "path": "support/testing/tests/package/test_execline.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestExecline(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_EXECLINE=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n        output, exit_code = self.emulator.run(\"execlineb -c 'echo hello world'\")\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0].strip(), \"hello world\")\n"
  },
  {
    "path": "support/testing/tests/package/test_gdb.py",
    "content": "import os\nimport infra.basetest\n\n\nclass BaseGdb(infra.basetest.BRTest):\n    def verify_host_gdb(self, prefix=\"arm-linux\"):\n        cmd = [\"host/bin/%s-gdb\" % prefix, \"--version\"]\n        # We don't check the return value, as it automatically raises\n        # an exception if the command returns with a non-zero value\n        infra.run_cmd_on_host(self.builddir, cmd)\n\n    def boot(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img,\n                                    \"-net\", \"nic\",\n                                    \"-net\", \"user\"])\n        self.emulator.login()\n\n    def verify_gdbserver(self):\n        cmd = \"gdbserver --version\"\n        self.assertRunOk(cmd)\n\n    def verify_gdb(self):\n        cmd = \"gdb --version\"\n        self.assertRunOk(cmd)\n\n\nclass TestGdbHostOnlyDefault(BaseGdb):\n    config = \\\n        infra.basetest.MINIMAL_CONFIG + \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_PACKAGE_HOST_GDB=y\n        \"\"\"\n\n    def test_run(self):\n        self.verify_host_gdb()\n\n\nclass TestGdbHostOnlyAllFeatures(BaseGdb):\n    config = \\\n        infra.basetest.MINIMAL_CONFIG + \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_PACKAGE_HOST_GDB=y\n        BR2_PACKAGE_HOST_GDB_TUI=y\n        BR2_PACKAGE_HOST_GDB_PYTHON3=y\n        BR2_PACKAGE_HOST_GDB_SIM=y\n        \"\"\"\n\n    def test_run(self):\n        self.verify_host_gdb()\n\n\nclass TestGdbserverOnly(BaseGdb):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_PACKAGE_GDB=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        self.boot()\n        self.verify_gdbserver()\n\n\nclass TestGdbFullTarget(BaseGdb):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_PACKAGE_GDB=y\n        BR2_PACKAGE_GDB_DEBUGGER=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        self.boot()\n        self.verify_gdb()\n\n\nclass TestGdbHostOnly9x(BaseGdb):\n    config = \\\n        infra.basetest.MINIMAL_CONFIG + \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_PACKAGE_HOST_GDB=y\n        BR2_GDB_VERSION_9_2=y\n        \"\"\"\n\n    def test_run(self):\n        self.verify_host_gdb()\n\n\nclass TestGdbHostGdbserver9x(BaseGdb):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_PACKAGE_HOST_GDB=y\n        BR2_GDB_VERSION_9_2=y\n        BR2_PACKAGE_GDB=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        self.verify_host_gdb()\n        self.boot()\n        self.verify_gdbserver()\n\n\nclass TestGdbHostGdbTarget9x(BaseGdb):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_PACKAGE_HOST_GDB=y\n        BR2_GDB_VERSION_9_2=y\n        BR2_PACKAGE_GDB=y\n        BR2_PACKAGE_GDB_DEBUGGER=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        self.verify_host_gdb()\n        self.boot()\n        self.verify_gdb()\n\n\nclass TestGdbHostOnly11x(BaseGdb):\n    config = \\\n        infra.basetest.MINIMAL_CONFIG + \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_PACKAGE_HOST_GDB=y\n        BR2_GDB_VERSION_11=y\n        \"\"\"\n\n    def test_run(self):\n        self.verify_host_gdb()\n\n\nclass TestGdbHostGdbserver11x(BaseGdb):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_PACKAGE_HOST_GDB=y\n        BR2_GDB_VERSION_11=y\n        BR2_PACKAGE_GDB=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        self.verify_host_gdb()\n        self.boot()\n        self.verify_gdbserver()\n\n\nclass TestGdbHostGdbTarget11x(BaseGdb):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_PACKAGE_HOST_GDB=y\n        BR2_GDB_VERSION_11=y\n        BR2_PACKAGE_GDB=y\n        BR2_PACKAGE_GDB_DEBUGGER=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        self.verify_host_gdb()\n        self.boot()\n        self.verify_gdb()\n\n\nclass TestGdbArc(BaseGdb):\n    config = \\\n        \"\"\"\n        BR2_arcle=y\n        BR2_archs4x_rel31=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_PACKAGE_HOST_GDB=y\n        BR2_PACKAGE_GDB=y\n        BR2_PACKAGE_GDB_SERVER=y\n        BR2_PACKAGE_GDB_DEBUGGER=y\n        \"\"\"\n\n    def test_run(self):\n        self.verify_host_gdb(\"arc-linux\")\n"
  },
  {
    "path": "support/testing/tests/package/test_glxinfo/rootfs-overlay/etc/X11/xorg.conf.d/01-modules.conf",
    "content": "\n# Xorg does not implement real dynamic linking and requires that its\n# modules get loaded in the right order.\n# https://forums.gentoo.org/viewtopic-p-8245578.html#8245578\nSection \"Module\"\n   Load \"vgahw\"\n   Load \"fb\"\n   Load \"shadowfb\"\n   Load \"shadow\"\n   Load \"glamoregl\"\nEndSection\n"
  },
  {
    "path": "support/testing/tests/package/test_glxinfo.py",
    "content": "import os\n\nimport infra.basetest\n\nGLXINFO_TIMEOUT = 120\n\n\nclass TestGlxinfo(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_x86_core2=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\n        BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\n        BR2_TOOLCHAIN_EXTERNAL_URL=\"http://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--glibc--bleeding-edge-2018.11-1.tar.bz2\"\n        BR2_TOOLCHAIN_EXTERNAL_GCC_8=y\n        BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14=y\n        BR2_TOOLCHAIN_EXTERNAL_CXX=y\n        BR2_TOOLCHAIN_EXTERNAL_HAS_SSP=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y\n        BR2_LINUX_KERNEL=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"4.19.204\"\n        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y\n        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"board/qemu/x86/linux.config\"\n        BR2_PACKAGE_MESA3D_DEMOS=y\n        BR2_PACKAGE_MESA3D=y\n        BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y\n        BR2_PACKAGE_MESA3D_OPENGL_GLX=y\n        BR2_PACKAGE_XORG7=y\n        BR2_PACKAGE_XSERVER_XORG_SERVER=y\n        BR2_TARGET_GENERIC_GETTY_PORT=\"ttyS0\"\n        BR2_TARGET_ROOTFS_EXT2=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        BR2_ROOTFS_OVERLAY=\"{}\"\n        \"\"\".format(\n          infra.filepath(\"tests/package/test_glxinfo/rootfs-overlay\"))\n\n    def wait_for_xserver(self):\n        # xserver takes some time to start up\n        # The test case fail here if for some reason xserver is not properly installed\n        _, _ = self.emulator.run('while [ ! -e /var/run/xorg.pid ]; do sleep 1; done', 120)\n\n    def login(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.ext2\")\n        kern = os.path.join(self.builddir, \"images\", \"bzImage\")\n        # glxinfo overallocate memory and the minimum that seemed to work was 512MB\n        self.emulator.boot(arch=\"i386\",\n                           kernel=kern,\n                           kernel_cmdline=[\"root=/dev/vda console=ttyS0\"],\n                           options=[\"-M\", \"pc\", \"-m\", \"512\", \"-drive\", \"file={},if=virtio,format=raw\".format(img)])\n        self.emulator.login()\n\n    def test_run(self):\n        self.login()\n        self.wait_for_xserver()\n\n        # The test case verifies that the xserver with GLX is working\n        cmd = \"glxinfo -B -display :0\"\n        output, exit_code = self.emulator.run(cmd, GLXINFO_TIMEOUT)\n        self.assertEqual(exit_code, 0)\n        for line in output:\n            self.assertNotIn(\"Error\", line)\n        # Error case: \"Error: couldn't find RGB GLX visual or fbconfig\"\n"
  },
  {
    "path": "support/testing/tests/package/test_gst1_python.py",
    "content": "import os\nfrom tests.package.test_python import TestPythonPackageBase\n\n\nclass TestGst1Python(TestPythonPackageBase):\n    __test__ = True\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_cortex_a9=y\n        BR2_ARM_ENABLE_VFP=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y\n        BR2_PACKAGE_GSTREAMER1=y\n        BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC=y\n        BR2_PACKAGE_GST1_PLUGINS_BAD=y\n        BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DEBUGUTILS=y\n        BR2_PACKAGE_GST1_PYTHON=y\n        BR2_PACKAGE_PYTHON3=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def login(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n    sample_scripts = [\"tests/package/sample_gst1_python.py\"]\n    timeout = 200\n"
  },
  {
    "path": "support/testing/tests/package/test_ipython.py",
    "content": "from tests.package.test_python import TestPythonBase\n#\n# The following pythong tests are not being used here:\n#\n# - version_test: IPython does not support --version option\n#\n# - zlib_test: IPython does not return a non-zero code the way CPython\n#              does, so this test ends up being a false-negative\n\n\nclass TestIPythonPy3(TestPythonBase):\n    config = TestPythonBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_IPYTHON=y\n        \"\"\"\n    interpreter = \"ipython\"\n\n    def test_run(self):\n        self.login()\n        self.math_floor_test(40)\n        self.libc_time_test(40)\n"
  },
  {
    "path": "support/testing/tests/package/test_libftdi1.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy2Libftdi1(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_LIBFTDI1=y\n        BR2_PACKAGE_LIBFTDI1_PYTHON_BINDINGS=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_libftdi1.py\"]\n    timeout = 40\n\n\nclass TestPythonPy3Libftdi1(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_LIBFTDI1=y\n        BR2_PACKAGE_LIBFTDI1_PYTHON_BINDINGS=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_libftdi1.py\"]\n    timeout = 40\n"
  },
  {
    "path": "support/testing/tests/package/test_lpeg.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLPeg(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LPEG=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lpeg\")\n        self.module_test(\"re\")\n\n\nclass TestLuajitLPeg(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LPEG=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lpeg\")\n        self.module_test(\"re\")\n"
  },
  {
    "path": "support/testing/tests/package/test_lsqlite3.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLsqlite3(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LSQLITE3=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lsqlite3\")\n\n\nclass TestLuajitLsqlite3(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LSQLITE3=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lsqlite3\")\n"
  },
  {
    "path": "support/testing/tests/package/test_lua.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestLuaBase(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def login(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n    def version_test(self, version):\n        cmd = \"lua -v\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n        self.assertIn(version, output[0])\n\n    def g_version_test(self, expected):\n        cmd = \"lua -e 'print(_G._VERSION)'\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0], expected)\n\n    def module_test(self, module, script=\"a=1\"):\n        cmd = \"lua -l {} -e '{}'\".format(module, script)\n        self.assertRunOk(cmd)\n\n\nclass TestLua(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.version_test('Lua 5.3')\n        self.g_version_test('Lua 5.3')\n\n\nclass TestLuajit(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.version_test('LuaJIT 2')\n        self.g_version_test('Lua 5.1')\n"
  },
  {
    "path": "support/testing/tests/package/test_lua_augeas.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuaAugeas(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_AUGEAS=y\n        BR2_PACKAGE_LUA_AUGEAS=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"augeas\")\n\n\nclass TestLuajitLuaAugeas(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_AUGEAS=y\n        BR2_PACKAGE_LUA_AUGEAS=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"augeas\")\n"
  },
  {
    "path": "support/testing/tests/package/test_lua_cqueues.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuaCqueues(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUA_CQUEUES=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"_cqueues\")\n        self.module_test(\"cqueues\")\n        self.module_test(\"cqueues.auxlib\")\n        self.module_test(\"cqueues.condition\")\n        self.module_test(\"cqueues.dns\")\n        self.module_test(\"cqueues.dns.config\")\n        self.module_test(\"cqueues.dns.hints\")\n        self.module_test(\"cqueues.dns.hosts\")\n        self.module_test(\"cqueues.dns.packet\")\n        self.module_test(\"cqueues.dns.record\")\n        self.module_test(\"cqueues.dns.resolver\")\n        self.module_test(\"cqueues.dns.resolvers\")\n        self.module_test(\"cqueues.errno\")\n        self.module_test(\"cqueues.notify\")\n        self.module_test(\"cqueues.promise\")\n        self.module_test(\"cqueues.signal\")\n        self.module_test(\"cqueues.socket\")\n        self.module_test(\"cqueues.thread\")\n\n\nclass TestLuajitLuaCqueues(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUA_CQUEUES=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"_cqueues\")\n        self.module_test(\"cqueues\")\n        self.module_test(\"cqueues.auxlib\")\n        self.module_test(\"cqueues.condition\")\n        self.module_test(\"cqueues.dns\")\n        self.module_test(\"cqueues.dns.config\")\n        self.module_test(\"cqueues.dns.hints\")\n        self.module_test(\"cqueues.dns.hosts\")\n        self.module_test(\"cqueues.dns.packet\")\n        self.module_test(\"cqueues.dns.record\")\n        self.module_test(\"cqueues.dns.resolver\")\n        self.module_test(\"cqueues.dns.resolvers\")\n        self.module_test(\"cqueues.errno\")\n        self.module_test(\"cqueues.notify\")\n        self.module_test(\"cqueues.promise\")\n        self.module_test(\"cqueues.signal\")\n        self.module_test(\"cqueues.socket\")\n        self.module_test(\"cqueues.thread\")\n"
  },
  {
    "path": "support/testing/tests/package/test_lua_curl.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuacURL(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUA_CURL=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"cURL\")\n        self.module_test(\"lcurl\")\n\n\nclass TestLuajitLuacURL(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUA_CURL=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"cURL\")\n        self.module_test(\"lcurl\")\n"
  },
  {
    "path": "support/testing/tests/package/test_lua_gd.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuaGD(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUA_GD=y\n        BR2_PACKAGE_FONTCONFIG=y\n        BR2_PACKAGE_JPEG=y\n        BR2_PACKAGE_LIBPNG=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"gd\")\n\n\nclass TestLuajitLuaGD(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUA_GD=y\n        BR2_PACKAGE_FONTCONFIG=y\n        BR2_PACKAGE_JPEG=y\n        BR2_PACKAGE_LIBPNG=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"gd\")\n"
  },
  {
    "path": "support/testing/tests/package/test_lua_http.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaHttp(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUA_HTTP=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"http.version\", script=\"local ver=require[[http.version]]; print(ver.name, ver.version)\")\n        self.module_test(\"http.client\")\n        self.module_test(\"http.cookie\")\n        self.module_test(\"http.proxies\")\n        self.module_test(\"http.server\")\n        self.module_test(\"http.socks\")\n        self.module_test(\"http.websocket\")\n\n\nclass TestLuajitHttp(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUA_HTTP=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"http.version\", script=\"local ver=require[[http.version]]; print(ver.name, ver.version)\")\n        self.module_test(\"http.client\")\n        self.module_test(\"http.cookie\")\n        self.module_test(\"http.proxies\")\n        self.module_test(\"http.server\")\n        self.module_test(\"http.socks\")\n        self.module_test(\"http.websocket\")\n"
  },
  {
    "path": "support/testing/tests/package/test_lua_lunix.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLunix(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUA_LUNIX=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"unix\")\n\n\nclass TestLuajitLunix(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUA_LUNIX=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"unix\")\n"
  },
  {
    "path": "support/testing/tests/package/test_lua_lyaml.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuaLyaml(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUA_LYAML=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"yaml\")\n        self.module_test(\"lyaml\")\n\n\nclass TestLuajitLuaLyaml(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUA_LYAML=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"yaml\")\n        self.module_test(\"lyaml\")\n"
  },
  {
    "path": "support/testing/tests/package/test_lua_sdl2.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuaSDL2(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUA_SDL2=y\n        BR2_PACKAGE_SDL2_IMAGE=y\n        BR2_PACKAGE_SDL2_MIXER=y\n        BR2_PACKAGE_SDL2_NET=y\n        BR2_PACKAGE_SDL2_TTF=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"SDL\")\n        self.module_test(\"SDL.image\")\n        self.module_test(\"SDL.mixer\")\n        self.module_test(\"SDL.net\")\n        self.module_test(\"SDL.ttf\")\n\n\nclass TestLuajitLuaSDL2(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUA_SDL2=y\n        BR2_PACKAGE_SDL2_IMAGE=y\n        BR2_PACKAGE_SDL2_MIXER=y\n        BR2_PACKAGE_SDL2_NET=y\n        BR2_PACKAGE_SDL2_TTF=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"SDL\")\n        self.module_test(\"SDL.image\")\n        self.module_test(\"SDL.mixer\")\n        self.module_test(\"SDL.net\")\n        self.module_test(\"SDL.ttf\")\n"
  },
  {
    "path": "support/testing/tests/package/test_lua_utf8.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaUtf8(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUA_UTF8=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lua-utf8\")\n\n\nclass TestLuajitUtf8(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUA_UTF8=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lua-utf8\")\n"
  },
  {
    "path": "support/testing/tests/package/test_lua_zlib.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuazlib(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUA_ZLIB=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"zlib\")\n\n\nclass TestLuajitLuazlib(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUA_ZLIB=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"zlib\")\n"
  },
  {
    "path": "support/testing/tests/package/test_luaexpat.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuaExpat(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUAEXPAT=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lxp\")\n\n\nclass TestLuajitLuaExpat(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUAEXPAT=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lxp\")\n"
  },
  {
    "path": "support/testing/tests/package/test_luafilesystem.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuaFileSystem(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUAFILESYSTEM=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lfs\")\n\n\nclass TestLuajitLuaFileSystem(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUAFILESYSTEM=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lfs\")\n"
  },
  {
    "path": "support/testing/tests/package/test_lualdap.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuaLdap(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUALDAP=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lualdap\")\n\n\nclass TestLuajitLuaLdap(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUALDAP=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lualdap\")\n"
  },
  {
    "path": "support/testing/tests/package/test_luaossl.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuaossl(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUAOSSL=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"openssl\")\n        self.module_test(\"_openssl\")\n\n\nclass TestLuajitLuaossl(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUAOSSL=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"openssl\")\n        self.module_test(\"_openssl\")\n"
  },
  {
    "path": "support/testing/tests/package/test_luaposix.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuaPosix(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUAPOSIX=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"posix.version\", \"print(require[[posix.version]])\")\n        self.module_test(\"posix.ctype\")\n        self.module_test(\"posix.dirent\")\n        self.module_test(\"posix.errno\")\n        self.module_test(\"posix.fcntl\")\n        self.module_test(\"posix.fnmatch\")\n        self.module_test(\"posix.glob\")\n        self.module_test(\"posix.grp\")\n        self.module_test(\"posix.libgen\")\n        self.module_test(\"posix.poll\")\n        self.module_test(\"posix.pwd\")\n        self.module_test(\"posix.sched\")\n        self.module_test(\"posix.signal\")\n        self.module_test(\"posix.stdio\")\n        self.module_test(\"posix.stdlib\")\n        self.module_test(\"posix.sys.msg\")\n        self.module_test(\"posix.sys.resource\")\n        self.module_test(\"posix.sys.socket\")\n        self.module_test(\"posix.sys.stat\")\n        self.module_test(\"posix.sys.statvfs\")\n        self.module_test(\"posix.sys.time\")\n        self.module_test(\"posix.sys.times\")\n        self.module_test(\"posix.sys.utsname\")\n        self.module_test(\"posix.sys.wait\")\n        self.module_test(\"posix.syslog\")\n        self.module_test(\"posix.termio\")\n        self.module_test(\"posix.time\")\n        self.module_test(\"posix.unistd\")\n        self.module_test(\"posix.utime\")\n        self.module_test(\"posix\")\n\n\nclass TestLuajitLuaPosix(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUAPOSIX=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"posix.version\", \"print(require[[posix.version]])\")\n        self.module_test(\"posix.ctype\")\n        self.module_test(\"posix.dirent\")\n        self.module_test(\"posix.errno\")\n        self.module_test(\"posix.fcntl\")\n        self.module_test(\"posix.fnmatch\")\n        self.module_test(\"posix.glob\")\n        self.module_test(\"posix.grp\")\n        self.module_test(\"posix.libgen\")\n        self.module_test(\"posix.poll\")\n        self.module_test(\"posix.pwd\")\n        self.module_test(\"posix.sched\")\n        self.module_test(\"posix.signal\")\n        self.module_test(\"posix.stdio\")\n        self.module_test(\"posix.stdlib\")\n        self.module_test(\"posix.sys.msg\")\n        self.module_test(\"posix.sys.resource\")\n        self.module_test(\"posix.sys.socket\")\n        self.module_test(\"posix.sys.stat\")\n        self.module_test(\"posix.sys.statvfs\")\n        self.module_test(\"posix.sys.time\")\n        self.module_test(\"posix.sys.times\")\n        self.module_test(\"posix.sys.utsname\")\n        self.module_test(\"posix.sys.wait\")\n        self.module_test(\"posix.syslog\")\n        self.module_test(\"posix.termio\")\n        self.module_test(\"posix.time\")\n        self.module_test(\"posix.unistd\")\n        self.module_test(\"posix.utime\")\n        self.module_test(\"posix\")\n"
  },
  {
    "path": "support/testing/tests/package/test_luasec.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuaSec(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUASEC=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"ssl\")\n\n\nclass TestLuajitLuaSec(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUASEC=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"ssl\")\n"
  },
  {
    "path": "support/testing/tests/package/test_luasocket.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuaSocket(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUASOCKET=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"ltn12\")\n        self.module_test(\"mime\")\n        self.module_test(\"socket\")\n\n\nclass TestLuajitLuaSocket(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUASOCKET=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"ltn12\")\n        self.module_test(\"mime\")\n        self.module_test(\"socket\")\n"
  },
  {
    "path": "support/testing/tests/package/test_luasyslog.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLuasyslog(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUASYSLOG=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lsyslog\")\n        self.module_test(\"logging.syslog\")\n\n\nclass TestLuajitLuasyslog(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUASYSLOG=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"lsyslog\")\n        self.module_test(\"logging.syslog\")\n"
  },
  {
    "path": "support/testing/tests/package/test_luvi.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestLuvi(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_LUVI=y\n        BR2_PACKAGE_OPENSSL=y\n        BR2_PACKAGE_PCRE=y\n        BR2_PACKAGE_ZLIB=y\n        \"\"\"\n\n    def login(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n    def version_test(self):\n        cmd = \"luvi -v\"\n        output, exit_code = self.emulator.run(cmd)\n        output = sorted(output)\n        self.assertIn('libuv', output[0])\n        self.assertIn('luvi', output[1])\n        self.assertIn('rex', output[2])\n        self.assertIn('ssl', output[3])\n        self.assertIn('zlib', output[4])\n\n    def test_run(self):\n        self.login()\n        self.version_test()\n"
  },
  {
    "path": "support/testing/tests/package/test_lxc/lxc-kernel.config",
    "content": "CONFIG_FIX_EARLYCON_MEM=y\nCONFIG_BLK_CGROUP=y\nCONFIG_CGROUP_SCHED=y\nCONFIG_CGROUP_PIDS=y\nCONFIG_CGROUP_FREEZER=y\nCONFIG_CGROUP_DEVICE=y\nCONFIG_CGROUP_CPUACCT=y\nCONFIG_CGROUP_DEBUG=y\nCONFIG_NETFILTER_XT_MATCH_CGROUP=y\nCONFIG_SOCK_CGROUP_DATA=y\nCONFIG_CGROUP_NET_PRIO=y\nCONFIG_CGROUP_NET_CLASSID=y\nCONFIG_NAMESPACES=y\nCONFIG_IPC_NS=y\nCONFIG_PID_NS=y\nCONFIG_UTS_NS=y\nCONFIG_USER_NS=y\nCONFIG_NET_NS=y\nCONFIG_BRIDGE=y\nCONFIG_VETH=y\n"
  },
  {
    "path": "support/testing/tests/package/test_lxc/rootfs-overlay/usr/bin/iperf3.sh",
    "content": "#!/bin/sh\niperf3 -s -1 > /tmp/iperf3.serv.log 2>&1\n"
  },
  {
    "path": "support/testing/tests/package/test_lxc/rootfs-overlay/usr/share/lxc/config/minimal-iperf3.conf",
    "content": "lxc.include = /usr/share/lxc/config/minimal.conf\nlxc.hook.version = 1\nlxc.hook.start-host = ip a add 192.168.1.1/24 dev lxc0\nlxc.init.cmd = tini -g iperf3.sh\n"
  },
  {
    "path": "support/testing/tests/package/test_lxc/rootfs-overlay/usr/share/lxc/config/minimal.conf",
    "content": "lxc.autodev = 0\nlxc.net.0.type = veth\nlxc.net.0.veth.pair = lxc0\nlxc.net.0.name = eth0\nlxc.net.0.flags = up\nlxc.net.0.ipv4.address = 192.168.1.2/24\n"
  },
  {
    "path": "support/testing/tests/package/test_lxc.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestLxc(infra.basetest.BRTest):\n    config = \\\n            \"\"\"\n            BR2_arm=y\n            BR2_cortex_a9=y\n            BR2_ARM_ENABLE_VFP=y\n            BR2_TOOLCHAIN_EXTERNAL=y\n            BR2_LINUX_KERNEL=y\n            BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n            BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"4.19.204\"\n            BR2_LINUX_KERNEL_DEFCONFIG=\"vexpress\"\n            BR2_LINUX_KERNEL_DTS_SUPPORT=y\n            BR2_LINUX_KERNEL_INTREE_DTS_NAME=\"vexpress-v2p-ca9\"\n            BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES=\"{}\"\n            BR2_TARGET_GENERIC_GETTY_PORT=\"ttyAMA0\"\n            BR2_INIT_SYSTEMD=y\n            BR2_PACKAGE_LXC=y\n            BR2_PACKAGE_TINI=y\n            BR2_PACKAGE_IPERF3=y\n            BR2_ROOTFS_OVERLAY=\"{}\"\n            BR2_TARGET_ROOTFS_CPIO=y\n            \"\"\".format(\n              infra.filepath(\"tests/package/test_lxc/lxc-kernel.config\"),\n              infra.filepath(\"tests/package/test_lxc/rootfs-overlay\"))\n\n    def run_ok(self, cmd):\n        self.assertRunOk(cmd, 120)\n\n    def wait_boot(self):\n        # the complete boot with systemd takes more time than what the default multipler permits\n        self.emulator.timeout_multiplier *= 10\n        self.emulator.login()\n\n    def setup_run_test_container(self):\n        self.run_ok(\"lxc-create -n lxc_iperf3 -t none -f /usr/share/lxc/config/minimal-iperf3.conf\")\n        self.run_ok(\"lxc-start -l trace -n lxc_iperf3 -o /tmp/lxc.log -L /tmp/lxc.console.log\")\n        # need to wait for the container to be fully started\n        self.run_ok(\"sleep 2\")\n        self.run_ok(\"iperf3 -c 192.168.1.2 -t 2\")\n        # if the test fails, just cat /tmp/*.log\n\n    def test_run(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        kernel_file = os.path.join(self.builddir, \"images\", \"zImage\")\n        dtb_file = os.path.join(self.builddir, \"images\", \"vexpress-v2p-ca9.dtb\")\n        self.emulator.boot(arch=\"armv7\", kernel=kernel_file,\n                           kernel_cmdline=[\n                                        \"console=ttyAMA0,115200\"],\n                           options=[\"-initrd\", cpio_file,\n                                    \"-dtb\", dtb_file,\n                                    \"-M\", \"vexpress-a9\"])\n        self.wait_boot()\n        self.setup_run_test_container()\n"
  },
  {
    "path": "support/testing/tests/package/test_lzlib.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaLzlib(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LZLIB=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"zlib\")\n        self.module_test(\"gzip\")\n"
  },
  {
    "path": "support/testing/tests/package/test_netdata.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestNetdata(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_NETDATA=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n        cmd = \"wget localhost:19999 -O - | grep '<title>netdata dashboard</title>'\"\n        self.assertRunOk(cmd)\n"
  },
  {
    "path": "support/testing/tests/package/test_openjdk.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestOpenJdk(infra.basetest.BRTest):\n    br2_external = [infra.filepath(\"tests/package/br2-external/openjdk\")]\n    config = \\\n        \"\"\"\n        BR2_aarch64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TARGET_GENERIC_GETTY_PORT=\"ttyAMA0\"\n        BR2_LINUX_KERNEL=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"5.10.34\"\n        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y\n        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"board/qemu/aarch64-virt/linux.config\"\n        BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        BR2_TARGET_ROOTFS_CPIO_GZIP=y\n        BR2_PACKAGE_XORG7=y\n        BR2_PACKAGE_OPENJDK=y\n        BR2_PACKAGE_OPENJDK_HELLO_WORLD=y\n        BR2_PACKAGE_OPENJDK_JNI_TEST=y\n        \"\"\"\n\n    def login(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio.gz\")\n        kern = os.path.join(self.builddir, \"images\", \"Image\")\n        self.emulator.boot(arch=\"aarch64\",\n                           kernel=kern,\n                           kernel_cmdline=[\"console=ttyAMA0\"],\n                           options=[\"-M\", \"virt\", \"-cpu\", \"cortex-a57\", \"-m\", \"512M\", \"-initrd\", img])\n        self.emulator.login()\n\n    def test_run(self):\n        self.login()\n\n        cmd = \"java -cp /usr/bin HelloWorld\"\n        output, exit_code = self.emulator.run(cmd, 120)\n        print(output)\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output, [\"Hello, World\"])\n\n        cmd = \"java -cp /usr/bin JniTest\"\n        output, exit_code = self.emulator.run(cmd, 120)\n        print(output)\n        self.assertEqual(exit_code, 0)\n"
  },
  {
    "path": "support/testing/tests/package/test_openssh/post-build.sh",
    "content": "#!/usr/bin/env bash\n\ncat <<_EOF_ >>\"${TARGET_DIR}/etc/ssh/sshd_config\"\nPermitRootLogin yes\nPasswordAuthentication yes\n_EOF_\n"
  },
  {
    "path": "support/testing/tests/package/test_openssh.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestOpensshBase(infra.basetest.BRTest):\n    passwd = \"testpwd\"\n    opensshconfig = \\\n        \"\"\"\n        BR2_TARGET_GENERIC_ROOT_PASSWD=\"{}\"\n        BR2_PACKAGE_OPENSSH=y\n        BR2_PACKAGE_SSHPASS=y\n        BR2_ROOTFS_POST_BUILD_SCRIPT=\"{}\"\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\".format(\n            passwd,\n            infra.filepath(\"tests/package/test_openssh/post-build.sh\"))\n\n    def openssh_test(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img,\n                                    \"-net\", \"none\"])\n        self.emulator.login(self.passwd)\n\n        cmd = \"netstat -ltn 2>/dev/null | grep 0.0.0.0:22\"\n        self.assertRunOk(cmd)\n\n        cmd = \"sshpass -p {} ssh -oStrictHostKeyChecking=no localhost /bin/true\".format(self.passwd)\n        self.assertRunOk(cmd)\n\n\nclass TestOpenSshuClibc(TestOpensshBase):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        TestOpensshBase.opensshconfig + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_CPIO=y\n        \"\"\"\n\n    def test_run(self):\n        self.openssh_test()\n\n\nclass TestOpenSshGlibc(TestOpensshBase):\n    config = \\\n        TestOpensshBase.opensshconfig + \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_PACKAGE_RNG_TOOLS=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        \"\"\"\n\n    def test_run(self):\n        self.openssh_test()\n"
  },
  {
    "path": "support/testing/tests/package/test_opkg/post-build.sh",
    "content": "#!/usr/bin/env bash\n\nIPK_BUILD=${BUILD_DIR}/ipk-build\n\n# Pull the files for the snmpd service out of the target to create a install archive\n# and setup a basic configuration so that the startup script works.\nmkdir -p ${IPK_BUILD}/CONTROL \\\n\t${IPK_BUILD}/etc/init.d/ \\\n\t${IPK_BUILD}/usr/sbin \\\n\t${IPK_BUILD}/etc/snmp \\\n\t${IPK_BUILD}/etc/default\nmv -f ${TARGET_DIR}/etc/init.d/S59snmpd ${IPK_BUILD}/etc/init.d/\nmv -f ${TARGET_DIR}/usr/sbin/snmpd ${IPK_BUILD}/usr/sbin/\necho \"agentuser  nobody\" > ${IPK_BUILD}/etc/snmp/snmpd.conf\necho \"SNMPDRUN=yes\" > ${IPK_BUILD}/etc/default/snmpd\n\n# build the control file\ncat <<EOM >${IPK_BUILD}/CONTROL/control\nPackage: example-snmpd-package\nVersion: 1.0\nArchitecture: arm\nMaintainer: user@domain.tld\nSection: extras\nPriority: optional\nSource: http://example.com\nDescription: This is an example IPK package for installing snmpd\nEOM\n\n# preinst script is not created to run before the install for this test example\n\n# postinst script is ran after install completes to start the services\ncat <<EOM >${IPK_BUILD}/CONTROL/postinst\n#!/bin/sh\n/etc/init.d/S59snmpd start\nEOM\nchmod +x ${IPK_BUILD}/CONTROL/postinst\n\n# prerm script is ran before removal so that the services isn't in use\ncat <<EOM >${IPK_BUILD}/CONTROL/prerm\n#!/bin/sh\n/etc/init.d/S59snmpd stop\nEOM\nchmod +x ${IPK_BUILD}/CONTROL/prerm\n\n# build the archive from template and pkg files\n${HOST_DIR}/bin/opkg-build -Z gzip ${IPK_BUILD} ${TARGET_DIR}/root/\nrm -fr ${IPK_BUILD}\n"
  },
  {
    "path": "support/testing/tests/package/test_opkg.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestOpkg(infra.basetest.BRTest):\n    # The snmpd service is used as an example for this test of a set of files\n    # that can be archived up and deployed/removed to test opkg\n    #\n    # The post build script uses an ipk-build template and assembles the test\n    # package.\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_NETSNMP=y\n        # BR2_PACKAGE_NETSNMP_CLIENTS is not set\n        # BR2_PACKAGE_NETSNMP_ENABLE_MIBS is not set\n        BR2_PACKAGE_OPKG=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        BR2_PACKAGE_HOST_OPKG_UTILS=y\n        BR2_ROOTFS_POST_BUILD_SCRIPT=\"{}\"\n        \"\"\".format(infra.filepath(\"tests/package/test_opkg/post-build.sh\"))\n\n    def test_run(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n        # This test sequence tests the install and removal of a running\n        # service and configuration files.  It also exercises the postinst\n        # and prerm scripting provided in the package archive.\n\n        cmd = \"opkg install example-snmpd-package_1.0_arm.ipk\"\n        self.assertRunOk(cmd)\n\n        cmd = \"opkg list-installed | grep example-snmpd-package\"\n        self.assertRunOk(cmd)\n\n        # Check that postinst script ran to start the services\n        cmd = \"ps aux | grep [s]nmpd\"\n        self.assertRunOk(cmd)\n\n        # If successful, the prerm script ran to stop the service prior to\n        # the removal of the service scripting and files\n        cmd = \"opkg remove example-snmpd-package\"\n        self.assertRunOk(cmd)\n\n        # Verify after package removal that the services is not\n        # running, but let's give it some time to really stop\n        # (otherwise a [snmpd] process might show up in the ps output)\n        cmd = \"sleep 1 && ps aux | grep [s]nmpd\"\n        _, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 1)\n\n        # This folder for configs is provided by the package install and\n        # should no longer be present after package removal\n        cmd = \"ls /etc/snmp\"\n        _, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 1)\n"
  },
  {
    "path": "support/testing/tests/package/test_perl.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestPerlBase(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def login(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n    def module_test(self, module, script=\"1\"):\n        cmd = \"perl -M{} -e '{}'\".format(module, script)\n        self.assertRunOk(cmd)\n\n\nclass TestPerl(TestPerlBase):\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        \"\"\"\n\n    def version_test(self):\n        cmd = \"perl -v\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n        self.assertIn(\"This is perl 5\", output[1])\n\n    def core_modules_test(self):\n        self.module_test(\"Cwd\")\n        self.module_test(\"Data::Dumper\")\n        self.module_test(\"Devel::Peek\")\n        self.module_test(\"Digest::MD5\")\n        self.module_test(\"Digest::SHA\")\n        self.module_test(\"Encode\")\n        self.module_test(\"Fcntl\")\n        self.module_test(\"File::Glob\")\n        self.module_test(\"Hash::Util\")\n        self.module_test(\"I18N::Langinfo\")\n        self.module_test(\"IO::Handle\")\n        self.module_test(\"IPC::SysV\")\n        self.module_test(\"List::Util\")\n        self.module_test(\"MIME::Base64\")\n        self.module_test(\"POSIX\")\n        self.module_test(\"Socket\")\n        self.module_test(\"Storable\")\n        self.module_test(\"Sys::Hostname\")\n        self.module_test(\"Sys::Syslog\")\n        self.module_test(\"Time::HiRes\")\n        self.module_test(\"Time::Piece\")\n        self.module_test(\"Unicode::Collate\")\n        self.module_test(\"Unicode::Normalize\")\n\n    def test_run(self):\n        self.login()\n        self.version_test()\n        self.core_modules_test()\n"
  },
  {
    "path": "support/testing/tests/package/test_perl_class_load.py",
    "content": "from tests.package.test_perl import TestPerlBase\n\n\nclass TestPerlClassLoad(TestPerlBase):\n    \"\"\"\n    package:\n        Class-Load\n    direct dependencies:\n        Data-OptList\n        Module-Implementation\n        Module-Runtime\n        Package-Stash\n        Try-Tiny\n    indirect dependencies:\n        Dist-CheckConflicts\n        Params-Util   XS\n        Sub-Install\n    \"\"\"\n\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        BR2_PACKAGE_PERL_CLASS_LOAD=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"Params::Util\")\n        self.module_test(\"Class::Load\")\n"
  },
  {
    "path": "support/testing/tests/package/test_perl_dbd_mysql.py",
    "content": "from tests.package.test_perl import TestPerlBase\n\n\nclass TestPerlDBDmysql(TestPerlBase):\n    \"\"\"\n    package:\n        DBD-mysql   XS\n    direct dependencies:\n        DBI   XS\n    \"\"\"\n\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        BR2_PACKAGE_PERL_DBD_MYSQL=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"DBI\")\n        self.module_test(\"DBD::mysql\")\n"
  },
  {
    "path": "support/testing/tests/package/test_perl_encode_detect.py",
    "content": "from tests.package.test_perl import TestPerlBase\n\n\nclass TestPerlEncodeDetect(TestPerlBase):\n    \"\"\"\n    package:\n        Encode-Detect   XS\n    direct dependencies:\n        Module-Build\n    \"\"\"\n\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        BR2_PACKAGE_PERL_ENCODE_DETECT=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"Encode::Detect\")\n"
  },
  {
    "path": "support/testing/tests/package/test_perl_gdgraph.py",
    "content": "from tests.package.test_perl import TestPerlBase\n\n\nclass TestPerlGDGraph(TestPerlBase):\n    \"\"\"\n    package:\n        GDGraph\n    direct dependencies:\n        GD   XS\n        GDTextUtil\n    \"\"\"\n\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        BR2_PACKAGE_PERL_GDGRAPH=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"GD\")\n        self.module_test(\"GD::Graph\")\n"
  },
  {
    "path": "support/testing/tests/package/test_perl_html_parser.py",
    "content": "from tests.package.test_perl import TestPerlBase\n\n\nclass TestPerlHTMLParser(TestPerlBase):\n    \"\"\"\n    package:\n        HTML-Parser   XS\n    direct dependencies:\n        HTML-Tagset\n    \"\"\"\n\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        BR2_PACKAGE_PERL_HTML_PARSER=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"HTML::Parser\")\n"
  },
  {
    "path": "support/testing/tests/package/test_perl_io_socket_multicast.py",
    "content": "from tests.package.test_perl import TestPerlBase\n\n\nclass TestPerlIOSocketMulticast(TestPerlBase):\n    \"\"\"\n    package:\n        IO-Socket-Multicast   XS\n    direct dependencies:\n        IO-Interface   XS\n    \"\"\"\n\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        BR2_PACKAGE_PERL_IO_SOCKET_MULTICAST=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"IO::Interface\")\n        self.module_test(\"IO::Socket::Multicast\")\n"
  },
  {
    "path": "support/testing/tests/package/test_perl_io_socket_ssl.py",
    "content": "from tests.package.test_perl import TestPerlBase\n\n\nclass TestPerlIOSocketSSL(TestPerlBase):\n    \"\"\"\n    package:\n        IO-Socket-SSL\n    direct dependencies:\n        Mozilla-CA\n        Net-SSLeay   XS\n    \"\"\"\n\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        BR2_PACKAGE_PERL_IO_SOCKET_SSL=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"Net::SSLeay\")\n        self.module_test(\"IO::Socket::SSL\")\n"
  },
  {
    "path": "support/testing/tests/package/test_perl_libwww_perl.py",
    "content": "from tests.package.test_perl import TestPerlBase\n\n\nclass TestPerllibwwwperl(TestPerlBase):\n    \"\"\"\n    package:\n        libwww-perl\n    direct dependencies:\n        Encode-Locale\n        File-Listing\n        HTML-Parser   XS\n        HTTP-Cookies\n        HTTP-Date\n        HTTP-Message\n        HTTP-Negotiate\n        LWP-MediaTypes\n        Net-HTTP\n        Try-Tiny\n        URI\n        WWW-RobotRules\n    indirect dependencies:\n        HTML-Tagset\n        IO-HTML\n    \"\"\"\n\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        BR2_PACKAGE_PERL_LIBWWW_PERL=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"LWP\")\n        self.module_test(\"LWP::UserAgent\")\n        self.module_test(\"LWP::Authen::Basic\")\n        self.module_test(\"LWP::Authen::Digest\")\n        self.module_test(\"HTML::Parser\")\n        self.module_test(\"HTTP::Message\")\n        self.module_test(\"WWW::RobotRules\")\n"
  },
  {
    "path": "support/testing/tests/package/test_perl_lwp_protocol_https.py",
    "content": "from tests.package.test_perl import TestPerlBase\n\n\nclass TestPerlLWPProtocolhttps(TestPerlBase):\n    \"\"\"\n    package:\n        LWP-Protocol-https\n    direct dependencies:\n        IO-Socket-SSL\n        Mozilla-CA\n        Net-HTTP\n        libwww-perl\n    indirect dependencies:\n        Encode-Locale\n        File-Listing\n        HTML-Parser   XS\n        HTML-Tagset\n        HTTP-Cookies\n        HTTP-Daemon\n        HTTP-Date\n        HTTP-Message\n        HTTP-Negotiate\n        IO-HTML\n        LWP-MediaTypes\n        Net-SSLeay   XS\n        TimeDate\n        Try-Tiny\n        URI\n        WWW-RobotRules\n    \"\"\"\n\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        BR2_PACKAGE_PERL_LWP_PROTOCOL_HTTPS=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"HTML::Parser\")\n        self.module_test(\"Net::SSLeay\")\n        self.module_test(\"LWP::Protocol::https\")\n"
  },
  {
    "path": "support/testing/tests/package/test_perl_mail_dkim.py",
    "content": "from tests.package.test_perl import TestPerlBase\n\n\nclass TestPerlMailDKIM(TestPerlBase):\n    \"\"\"\n    package:\n        Mail-DKIM\n    direct dependencies:\n        Crypt-OpenSSL-RSA   XS\n        MailTools\n        Net-DNS\n        Net-DNS-Resolver-Mock\n        YAML-LibYAML   XS\n    indirect dependencies:\n        Crypt-OpenSSL-Random   XS\n        Digest-HMAC\n        TimeDate\n    \"\"\"\n\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        BR2_PACKAGE_PERL_MAIL_DKIM=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"Crypt::OpenSSL::Random\")\n        self.module_test(\"Crypt::OpenSSL::RSA\")\n        self.module_test(\"Mail::DKIM\")\n"
  },
  {
    "path": "support/testing/tests/package/test_perl_x10.py",
    "content": "from tests.package.test_perl import TestPerlBase\n\n\nclass TestPerlX10(TestPerlBase):\n    \"\"\"\n    package:\n        X10\n    direct dependencies:\n        Astro-SunTime\n        Device-SerialPort   XS\n        Time-ParseDate\n    \"\"\"\n\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        BR2_PACKAGE_PERL_X10=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"Device::SerialPort\")\n        self.module_test(\"X10\")\n"
  },
  {
    "path": "support/testing/tests/package/test_perl_xml_libxml.py",
    "content": "from tests.package.test_perl import TestPerlBase\n\n\nclass TestPerlXMLLibXML(TestPerlBase):\n    \"\"\"\n    package:\n        XML-LibXML   XS\n    direct dependencies:\n        XML-NamespaceSupport\n        XML-SAX\n        XML-SAX-Base\n    \"\"\"\n\n    config = TestPerlBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PERL=y\n        BR2_PACKAGE_PERL_XML_LIBXML=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"XML::LibXML\")\n"
  },
  {
    "path": "support/testing/tests/package/test_php_pecl_dbus.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestPhpPeclDbus(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_PHP=y\n        BR2_PACKAGE_PHP_SAPI_CLI=y\n        BR2_PACKAGE_PHP_PECL_DBUS=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n        self.assertRunOk(\"mkdir /etc/php.d\")\n        self.assertRunOk(\"echo 'extension=dbus.so'> /etc/php.d/dbus.ini\")\n\n        output, exit_code = self.emulator.run(\"php --ri dbus | sed '/^$/d'\")\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0], \"dbus\")\n        self.assertEqual(output[1], \"Dbus support => enabled\")\n        # Do not check the version value in order to avoid test failure when\n        # bumping package version\n        self.assertEqual(output[2][0:11], \"Version => \")\n"
  },
  {
    "path": "support/testing/tests/package/test_polkit.py",
    "content": "import os\nimport infra.basetest\n\n\nclass TestPolkitInfra(infra.basetest.BRTest):\n    br2_external = [infra.filepath(\"tests/package/br2-external/polkit\")]\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_cortex_a9=y\n        BR2_ARM_ENABLE_VFP=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        BR2_PACKAGE_POLKIT=y\n        BR2_PACKAGE_POLKIT_RULES_TEST=y\n        \"\"\"\n\n    def base_test_run(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv7\", kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n\nclass TestPolkitSystemd(TestPolkitInfra):\n    config = \\\n        \"\"\"\n        {}\n        BR2_INIT_SYSTEMD=y\n        BR2_PACKAGE_SYSTEMD_POLKIT=y\n        BR2_TARGET_GENERIC_GETTY_PORT=\"ttyAMA0\"\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\".format(TestPolkitInfra.config)\n\n    def test_run(self):\n        TestPolkitInfra.base_test_run(self)\n\n        cmd = \"su brtest -c '/bin/systemctl restart systemd-timesyncd.service'\"\n        _, exit_code = self.emulator.run(cmd, 10)\n        self.assertEqual(exit_code, 1)\n\n        cmd = \"mv /root/systemd-timesyncd-restart.rules /etc/polkit-1/rules.d\"\n        _, exit_code = self.emulator.run(cmd, 10)\n        self.assertEqual(exit_code, 0)\n\n        cmd = \"su brtest -c '/bin/systemctl restart systemd-timesyncd.service'\"\n        _, exit_code = self.emulator.run(cmd, 10)\n        self.assertEqual(exit_code, 0)\n\n\nclass TestPolkitInitd(TestPolkitInfra):\n    config = TestPolkitInfra.config\n\n    def test_run(self):\n        TestPolkitInfra.base_test_run(self)\n\n        cmd = \"su brtest -c 'pkexec hello-polkit'\"\n        output, exit_code = self.emulator.run(cmd, 10)\n        self.assertEqual(exit_code, 127)\n        self.assertEqual(output[0], \"Error executing command as another user: Not authorized\")\n\n        cmd = \"mv /root/hello-polkit.rules /etc/polkit-1/rules.d/hello-polkit.rules\"\n        _, exit_code = self.emulator.run(cmd, 10)\n        self.assertEqual(exit_code, 0)\n\n        cmd = \"su brtest -c 'pkexec hello-polkit'\"\n        output, exit_code = self.emulator.run(cmd, 10)\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0], \"Hello polkit!\")\n"
  },
  {
    "path": "support/testing/tests/package/test_prosody.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestProsody(TestLuaBase):\n    def lua_dependencies_test(self):\n        self.module_test('bit')     # luabitop\n        self.module_test('lfs')     # luafilesystem\n        self.module_test('lxp')     # luaexpat\n        self.module_test('socket')  # luasocket\n        self.module_test('ssl')     # luasec\n\n    def prosody_test(self):\n        # prosody was launched as service\n        cmd = \"prosodyctl status\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n        self.assertIn(\"Prosody is running\", output[0])\n\n\nclass TestProsodyLua51(TestProsody):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_LUA_5_1=y\n        BR2_PACKAGE_PROSODY=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.version_test('Lua 5.1')\n        self.g_version_test('Lua 5.1')\n        self.lua_dependencies_test()\n        self.prosody_test()\n\n\nclass TestProsodyLuajit(TestProsody):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_PROSODY=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.version_test('LuaJIT 2')\n        self.g_version_test('Lua 5.1')\n        self.lua_dependencies_test()\n        self.prosody_test()\n"
  },
  {
    "path": "support/testing/tests/package/test_python.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestPythonBase(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    interpreter = \"python\"\n\n    def login(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n    def version_test(self, version, timeout=-1):\n        cmd = self.interpreter + \" --version 2>&1 | grep '^{}'\".format(version)\n        self.assertRunOk(cmd, timeout)\n\n    def math_floor_test(self, timeout=-1):\n        cmd = self.interpreter + \" -c 'import math; math.floor(12.3)'\"\n        self.assertRunOk(cmd, timeout)\n\n    def libc_time_test(self, timeout=-1):\n        cmd = self.interpreter + \" -c 'from __future__ import print_function;\"\n        cmd += \"import ctypes;\"\n        cmd += \"libc = ctypes.cdll.LoadLibrary(\\\"libc.so.1\\\");\"\n        cmd += \"print(libc.time(None))'\"\n        self.assertRunOk(cmd, timeout)\n\n    def zlib_test(self, timeout=-1):\n        cmd = self.interpreter + \" -c 'import zlib'\"\n        _, exit_code = self.emulator.run(cmd, timeout)\n        self.assertEqual(exit_code, 1)\n\n\nclass TestPython2(TestPythonBase):\n    config = TestPythonBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.version_test(\"Python 2\")\n        self.math_floor_test()\n        self.libc_time_test()\n        self.zlib_test()\n\n\nclass TestPython3(TestPythonBase):\n    config = TestPythonBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.version_test(\"Python 3\")\n        self.math_floor_test()\n        self.libc_time_test()\n        self.zlib_test()\n\n\nclass TestPythonPackageBase(TestPythonBase):\n    \"\"\"Common class to test a python package.\n\n    Build an image containing the scripts listed in sample_scripts, start the\n    emulator, login to it and for each sample script in the image run the python\n    interpreter passing the name of the script and check the status code is 0.\n\n    Each test case that inherits from this class must have:\n    __test__ = True  - to let nose2 know that it is a test case\n    config           - defconfig fragment with the packages to run the test\n    It also can have:\n    sample_scripts   - list of scripts to add to the image and run on the target\n    timeout          - timeout to the script to run when the default from the\n                       test infra is not enough\n    When custom commands need be issued on the target the method\n    run_sample_scripts can be overridden.\n    \"\"\"\n\n    __test__ = False\n    config_sample_scripts = \\\n        \"\"\"\n        BR2_ROOTFS_POST_BUILD_SCRIPT=\"{}\"\n        BR2_ROOTFS_POST_SCRIPT_ARGS=\"{}\"\n        \"\"\".format(infra.filepath(\"tests/package/copy-sample-script-to-target.sh\"),\n                   \"{sample_scripts}\")\n    sample_scripts = None\n    timeout = -1\n\n    def __init__(self, names):\n        \"\"\"Add the scripts to the target in build time.\"\"\"\n        super(TestPythonPackageBase, self).__init__(names)\n        if self.sample_scripts:\n            scripts = [infra.filepath(s) for s in self.sample_scripts]\n            self.config += self.config_sample_scripts.format(sample_scripts=\" \".join(scripts))\n\n    def check_sample_scripts_exist(self):\n        \"\"\"Check the scripts were really added to the image.\"\"\"\n        scripts = [os.path.basename(s) for s in self.sample_scripts]\n        cmd = \"md5sum \" + \" \".join(scripts)\n        _, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n\n    def run_sample_scripts(self):\n        \"\"\"Run each script previously added to the image.\"\"\"\n        for script in self.sample_scripts:\n            cmd = self.interpreter + \" \" + os.path.basename(script)\n            self.assertRunOk(cmd, timeout=self.timeout)\n\n    def test_run(self):\n        self.login()\n        self.check_sample_scripts_exist()\n        self.run_sample_scripts()\n"
  },
  {
    "path": "support/testing/tests/package/test_python_argh.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonArgh(TestPythonPackageBase):\n    config = TestPythonPackageBase.config\n    sample_scripts = [\"tests/package/sample_python_argh.py\"]\n\n    def run_sample_scripts(self):\n        cmd = self.interpreter + \" sample_python_argh.py -h\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertIn(\"usage:\", output[0])\n        self.assertEqual(exit_code, 0)\n\n        cmd = self.interpreter + \" sample_python_argh.py 123\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(output[0], \"123, False\")\n        self.assertEqual(exit_code, 0)\n\n        cmd = self.interpreter + \" sample_python_argh.py --bar 456\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(output[0], \"456, True\")\n        self.assertEqual(exit_code, 0)\n\n        cmd = self.interpreter + \" sample_python_argh.py\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertIn(\"usage:\", output[0])\n        self.assertEqual(exit_code, 2)\n\n\nclass TestPythonPy2Argh(TestPythonArgh):\n    __test__ = True\n    config = TestPythonArgh.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_ARGH=y\n        \"\"\"\n\n\nclass TestPythonPy3Argh(TestPythonArgh):\n    __test__ = True\n    config = TestPythonArgh.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_ARGH=y\n        \"\"\"\n"
  },
  {
    "path": "support/testing/tests/package/test_python_attrs.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Attrs(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_ATTRS=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_attrs.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_augeas.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonAugeas(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_AUGEAS=y\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_AUGEAS=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_augeas.py\"]\n    timeout = 60\n"
  },
  {
    "path": "support/testing/tests/package/test_python_autobahn.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Autobahn(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_AUTOBAHN=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_autobahn.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_automat.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Automat(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_AUTOMAT=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_automat.py\"]\n    timeout = 30\n"
  },
  {
    "path": "support/testing/tests/package/test_python_avro.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonAvro(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_AVRO=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_avro.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_bitstring.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy2Bitstring(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_BITSTRING=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_bitstring.py\"]\n\n\nclass TestPythonPy3Bitstring(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_BITSTRING=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_bitstring.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_boto3.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Boto3(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_BOTO3=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_boto3.py\"]\n    timeout = 10\n"
  },
  {
    "path": "support/testing/tests/package/test_python_botocore.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Botocore(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_BOTOCORE=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_botocore.py\"]\n    timeout = 10\n"
  },
  {
    "path": "support/testing/tests/package/test_python_can.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy2Can(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_CAN=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_can.py\"]\n    timeout = 40\n\n\nclass TestPythonPy3Can(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_CAN=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_can.py\"]\n    timeout = 40\n"
  },
  {
    "path": "support/testing/tests/package/test_python_cbor.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy2Cbor(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_CBOR=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_cbor_enc.py\",\n                      \"tests/package/sample_python_cbor_dec.py\"]\n\n\nclass TestPythonPy3Cbor(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_CBOR=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_cbor_enc.py\",\n                      \"tests/package/sample_python_cbor_dec.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_click.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonClick(TestPythonPackageBase):\n    sample_scripts = [\"tests/package/sample_python_click.py\"]\n\n    def run_sample_scripts(self):\n        cmd = self.interpreter + \" sample_python_click.py --help\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertIn(\"Usage:\", output[0])\n        self.assertEqual(exit_code, 0)\n\n        cmd = self.interpreter + \" sample_python_click.py 123\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(output[0], \"123, False\")\n        self.assertEqual(exit_code, 0)\n\n        cmd = self.interpreter + \" sample_python_click.py --bar 456\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(output[0], \"456, True\")\n        self.assertEqual(exit_code, 0)\n\n        cmd = self.interpreter + \" sample_python_click.py\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertIn(\"Usage:\", output[0])\n        self.assertEqual(exit_code, 2)\n\n\nclass TestPythonPy2Click(TestPythonClick):\n    __test__ = True\n    config = TestPythonClick.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_CLICK=y\n        \"\"\"\n\n\nclass TestPythonPy3Click(TestPythonClick):\n    __test__ = True\n    config = TestPythonClick.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_CLICK=y\n        \"\"\"\n"
  },
  {
    "path": "support/testing/tests/package/test_python_colorzero.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Colorzero(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_COLORZERO=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_colorzero.py\"]\n    timeout = 30\n"
  },
  {
    "path": "support/testing/tests/package/test_python_constantly.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy2Constantly(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_CONSTANTLY=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_constantly.py\"]\n\n\nclass TestPythonPy3Constantly(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_CONSTANTLY=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_constantly.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_crossbar.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Crossbar(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_CROSSBAR=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_crossbar.py\"]\n    timeout = 60\n"
  },
  {
    "path": "support/testing/tests/package/test_python_cryptography.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Cryptography(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_CRYPTOGRAPHY=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_cryptography.py\"]\n    timeout = 40\n"
  },
  {
    "path": "support/testing/tests/package/test_python_dbus_fast.py",
    "content": "import textwrap\n\n\nfrom tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3DBusFast(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_DBUS=y\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_DBUS_FAST=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_dbus_fast.py\"]\n\n    def run_sample_scripts(self):\n        config = \\\n            \"\"\"\n            <!DOCTYPE busconfig PUBLIC \"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN\"\n             \"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd\">\n            <busconfig>\n              <policy user=\"root\">\n                <allow own=\"dbus.fast.sample\"/>\n                <allow send_destination=\"dbus.fast.sample\"/>\n              </policy>\n            </busconfig>\n            \"\"\"\n        config = textwrap.dedent(config)\n        config_dir = \"/etc/dbus-1/system.d\"\n        config_fn = \"dbus.fast.sample.conf\"\n\n        # Setup and reload D-Bus configuration\n        self.emulator.run(\"mkdir -p \" + config_dir)\n        self.emulator.run(\"cat > \" + config_dir + \"/\" + config_fn +\n                          \" <<EOF\" + config + \"EOF\")\n        self.emulator.run(\"killall -SIGHUP dbus-daemon\")\n\n        # Run test scripts\n        super().run_sample_scripts()\n"
  },
  {
    "path": "support/testing/tests/package/test_python_dbus_next.py",
    "content": "import textwrap\n\n\nfrom tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3DBusNext(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_DBUS=y\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_DBUS_NEXT=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_dbus_next.py\"]\n\n    def run_sample_scripts(self):\n        config = \\\n            \"\"\"\n            <!DOCTYPE busconfig PUBLIC \"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN\"\n             \"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd\">\n            <busconfig>\n              <policy user=\"root\">\n                <allow own=\"dbus.next.sample\"/>\n                <allow send_destination=\"dbus.next.sample\"/>\n              </policy>\n            </busconfig>\n            \"\"\"\n        config = textwrap.dedent(config)\n        config_dir = \"/etc/dbus-1/system.d\"\n        config_fn = \"dbus.next.sample.conf\"\n\n        # Setup and reload D-Bus configuration\n        self.emulator.run(\"mkdir -p \" + config_dir)\n        self.emulator.run(\"cat > \" + config_dir + \"/\" + config_fn +\n                          \" <<EOF\" + config + \"EOF\")\n        self.emulator.run(\"killall -SIGHUP dbus-daemon\")\n\n        # Run test scripts\n        super().run_sample_scripts()\n"
  },
  {
    "path": "support/testing/tests/package/test_python_django.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonDjango(TestPythonPackageBase):\n    config = TestPythonPackageBase.config\n    sample_scripts = [\"tests/package/sample_python_django.py\"]\n\n    def run_sample_scripts(self):\n        timeout = 35 * self.emulator.timeout_multiplier\n\n        cmd = \"cd /opt && /usr/bin/django-admin startproject testsite\"\n        self.assertRunOk(cmd, timeout=timeout)\n\n        cmd = \"cd /opt/testsite && \" + self.interpreter + \" ./manage.py migrate\"\n        output, exit_code = self.emulator.run(cmd, timeout=timeout)\n        self.assertIn(\"Operations to perform:\", output[0])\n        self.assertEqual(exit_code, 0)\n\n        cmd = \"cd /opt/testsite && \" + self.interpreter + \" ./manage.py runserver 0.0.0.0:1234 & \"\n        # give some time to setup the server\n        cmd += \"sleep {}\".format(str(30 * self.emulator.timeout_multiplier))\n        self.assertRunOk(cmd, timeout=timeout)\n\n        cmd = \"netstat -ltn 2>/dev/null | grep 0.0.0.0:1234\"\n        self.assertRunOk(cmd)\n\n\nclass TestPythonPy3Django(TestPythonDjango):\n    __test__ = True\n    config = TestPythonDjango.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_DJANGO=y\n        BR2_PACKAGE_PYTHON3_SQLITE=y\n        \"\"\"\n"
  },
  {
    "path": "support/testing/tests/package/test_python_flask.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\nimport os\nimport time\n\n\nclass TestPythonPy3Flask(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_FLASK=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_flask.py\"]\n    timeout = 60\n\n    def test_run(self):\n        self.login()\n        self.check_sample_scripts_exist()\n        cmd = \"FLASK_APP=%s %s -m flask run > /dev/null 2>&1 &\" % (os.path.basename(self.sample_scripts[0]),\n                                                                   self.interpreter)\n        _, exit_code = self.emulator.run(cmd, timeout=self.timeout)\n\n        # Give enough time for the flask server to start up\n        time.sleep(15)\n\n        cmd = \"wget -q -O - http://127.0.0.1:5000/\"\n        output, exit_code = self.emulator.run(cmd, timeout=self.timeout)\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0], \"Hello, World!\")\n"
  },
  {
    "path": "support/testing/tests/package/test_python_flask_expects_json.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\nimport os\nimport time\n\n\nclass TestPythonPy3FlaskExpectsJson(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LIBCURL=y\n        BR2_PACKAGE_LIBCURL_CURL=y\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_FLASK=y\n        BR2_PACKAGE_PYTHON_FLASK_EXPECTS_JSON=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_flask_expects_json.py\"]\n    timeout = 60\n\n    def try_json(self, payload, expects):\n        cmd = \"\"\"curl -s -o /dev/null -w \"%{http_code}\\\\n\" -X POST \"\"\"\n        cmd += \"\"\"-H \"Content-Type: application/json\" -d '%s' http://127.0.0.1:5000\"\"\" % payload\n        output, exit_code = self.emulator.run(cmd, timeout=self.timeout)\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0], str(expects))\n\n    def test_run(self):\n        self.login()\n        self.check_sample_scripts_exist()\n        cmd = \"FLASK_APP=%s %s -m flask run > /dev/null 2>&1 &\" % (os.path.basename(self.sample_scripts[0]),\n                                                                   self.interpreter)\n        _, exit_code = self.emulator.run(cmd, timeout=self.timeout)\n\n        # Give enough time for the flask server to start up\n        time.sleep(15)\n\n        self.try_json(\"\"\"{\"email\": \"test\", \"name\": \"test\"}\"\"\", 200)\n        self.try_json(\"\"\"{\"email\": \"test\", \"name\": 2}\"\"\", 400)\n        self.try_json(\"\"\"{\"email\": \"test\"}\"\"\", 400)\n"
  },
  {
    "path": "support/testing/tests/package/test_python_git.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Git(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_GIT=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_git.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_gitdb2.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Gitdb2(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_GITDB2=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_gitdb2.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_gobject.py",
    "content": "import os\nfrom tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Gobject(TestPythonPackageBase):\n    __test__ = True\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_ARM_ENABLE_VFP=y\n        BR2_cortex_a9=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_PACKAGE_GOBJECT_INTROSPECTION=y\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_GOBJECT=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def login(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n    sample_scripts = [\"tests/package/sample_python_gobject.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_gpiozero.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonGpiozero(TestPythonPackageBase):\n    config = TestPythonPackageBase.config\n    sample_scripts = [\"tests/package/sample_python_gpiozero.py\"]\n\n    def run_sample_scripts(self):\n        cmd = self.interpreter + \" sample_python_gpiozero.py\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n\n        cmd = \"pinout -r a020d3 -m | cat\"\n        self.assertRunOk(cmd)\n\n\nclass TestPythonPy3Gpiozero(TestPythonGpiozero):\n    __test__ = True\n    config = TestPythonGpiozero.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_GPIOZERO=y\n        \"\"\"\n"
  },
  {
    "path": "support/testing/tests/package/test_python_incremental.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy2Incremental(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_INCREMENTAL=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_incremental.py\"]\n    timeout = 30\n\n\nclass TestPythonPy3Incremental(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_INCREMENTAL=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_incremental.py\"]\n    timeout = 30\n"
  },
  {
    "path": "support/testing/tests/package/test_python_passlib.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy2Passlib(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_PASSLIB=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_passlib.py\"]\n    timeout = 30\n\n\nclass TestPythonPy3Passlib(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_PASSLIB=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_passlib.py\"]\n    timeout = 30\n"
  },
  {
    "path": "support/testing/tests/package/test_python_pexpect.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy2Pexpect(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_PEXPECT=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_pexpect.py\"]\n\n\nclass TestPythonPy3Pexpect(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_PEXPECT=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_pexpect.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_pynacl.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy2Pynacl(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_PYNACL=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_pynacl.py\"]\n    timeout = 10\n\n\nclass TestPythonPy3Pynacl(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_PYNACL=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_pynacl.py\"]\n    timeout = 10\n"
  },
  {
    "path": "support/testing/tests/package/test_python_pyndiff.py",
    "content": "import os\nimport infra.basetest\n\n\nclass TestPyNdiff(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_NMAP=y\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_PYNDIFF=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n        cmd = \"nmap -F 127.0.0.1 -oX scanme-1.xml\"\n        self.assertRunOk(cmd)\n\n        cmd = \"nmap -F 127.0.0.1 -oX scanme-2.xml\"\n        self.assertRunOk(cmd)\n\n        cmd = \"pyndiff -f1 scanme-1.xml -f2 scanme-2.xml -t txt\"\n        self.assertRunOk(cmd)\n"
  },
  {
    "path": "support/testing/tests/package/test_python_pytest.py",
    "content": "import os\n\nfrom tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Pytest(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_PYTEST=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_pytest.py\"]\n\n    def run_sample_scripts(self):\n        for script in self.sample_scripts:\n            cmd = self.interpreter + \" -m pytest \" + os.path.basename(script)\n            self.assertRunOk(cmd, timeout=self.timeout)\n"
  },
  {
    "path": "support/testing/tests/package/test_python_pytest_asyncio.py",
    "content": "import os\n\nfrom tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3PytestAsyncio(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_PYTEST=y\n        BR2_PACKAGE_PYTHON_PYTEST_ASYNCIO=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_pytest_asyncio.py\"]\n\n    def run_sample_scripts(self):\n        for script in self.sample_scripts:\n            cmd = self.interpreter + \" -m pytest \" + os.path.basename(script)\n            self.assertRunOk(cmd, timeout=self.timeout)\n"
  },
  {
    "path": "support/testing/tests/package/test_python_pyyaml.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy2Pyyaml(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_PYYAML=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_pyyaml_enc.py\",\n                      \"tests/package/sample_python_pyyaml_dec.py\"]\n\n\nclass TestPythonPy3Pyyaml(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_PYYAML=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_pyyaml_enc.py\",\n                      \"tests/package/sample_python_pyyaml_dec.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_rpi_gpio.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3RpiGpio(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_RPI_GPIO=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_rpi_gpio.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_rsa.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3RSA(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_RSA=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_rsa.py\"]\n    timeout = 20\n"
  },
  {
    "path": "support/testing/tests/package/test_python_service_identity.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3ServiceIdentity(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_SERVICE_IDENTITY=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_service_identity.py\"]\n    timeout = 30\n"
  },
  {
    "path": "support/testing/tests/package/test_python_smmap2.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Smmap2(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_SMMAP2=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_smmap2.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_subprocess32.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy2Subprocess32(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_SUBPROCESS32=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_subprocess32.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_treq.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonTreq(TestPythonPackageBase):\n    sample_scripts = [\"tests/package/sample_python_treq.py\"]\n\n    def run_sample_scripts(self):\n        cmd = self.interpreter + \" sample_python_treq.py\"\n        output, exit_code = self.emulator.run(cmd, timeout=20)\n        refuse_msgs = [1 for line in output if \"Connection refused\" in line]\n        self.assertGreater(sum(refuse_msgs), 0)\n        self.assertEqual(exit_code, 0)\n\n\nclass TestPythonPy3Treq(TestPythonTreq):\n    __test__ = True\n    config = TestPythonTreq.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_TREQ=y\n        \"\"\"\n"
  },
  {
    "path": "support/testing/tests/package/test_python_twisted.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonTwisted(TestPythonPackageBase):\n    config = TestPythonPackageBase.config\n    sample_scripts = [\"tests/package/sample_python_twisted.py\"]\n\n    def run_sample_scripts(self):\n        cmd = \"netstat -ltn 2>/dev/null | grep 0.0.0.0:1234\"\n        _, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 1)\n\n        cmd = self.interpreter + \" sample_python_twisted.py &\"\n        # give some time to setup the server\n        cmd += \"sleep 30\"\n        _, exit_code = self.emulator.run(cmd, timeout=35)\n        self.assertEqual(exit_code, 0)\n\n        cmd = \"netstat -ltn 2>/dev/null | grep 0.0.0.0:1234\"\n        _, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n\n\nclass TestPythonPy3Twisted(TestPythonTwisted):\n    __test__ = True\n    config = TestPythonTwisted.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_TWISTED=y\n        \"\"\"\n"
  },
  {
    "path": "support/testing/tests/package/test_python_txaio.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Txaio(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_TXAIO=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_txaio_asyncio.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_txtorcon.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy3Txtorcon(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_TXTORCON=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_txtorcon.py\"]\n    timeout = 30\n"
  },
  {
    "path": "support/testing/tests/package/test_python_ubjson.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\n\n\nclass TestPythonPy2Ubjson(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON=y\n        BR2_PACKAGE_PYTHON_UBJSON=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_ubjson_enc.py\",\n                      \"tests/package/sample_python_ubjson_dec.py\"]\n\n\nclass TestPythonPy3Ubjson(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_UBJSON=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_ubjson_enc.py\",\n                      \"tests/package/sample_python_ubjson_dec.py\"]\n"
  },
  {
    "path": "support/testing/tests/package/test_python_unittest_xml_reporting.py",
    "content": "from tests.package.test_python import TestPythonPackageBase\nimport os\n\n\nclass TestPythonPy3UnitTestXmlReporting(TestPythonPackageBase):\n    __test__ = True\n    config = TestPythonPackageBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_UNITTEST_XML_REPORTING=y\n        \"\"\"\n    sample_scripts = [\"tests/package/sample_python_unittest_xml_reporting.py\"]\n    timeout = 60\n\n    def test_run(self):\n        self.login()\n        self.check_sample_scripts_exist()\n        cmd = \"%s %s\" % (self.interpreter, os.path.basename(self.sample_scripts[0]))\n        self.assertRunOk(cmd)\n        # check if some tests results in XML were generated\n        cmd = \"ls -1 test-reports/TEST-Test1-*.xml\"\n        self.assertRunOk(cmd)\n"
  },
  {
    "path": "support/testing/tests/package/test_redis.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestRedis(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \"\"\"\n    BR2_TARGET_ROOTFS_CPIO=y\n    BR2_PACKAGE_REDIS=y\n    \"\"\"\n\n    def test_run(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n        self.assertRunOk(\"redis-cli SET hello world\")\n\n        output, exit_code = self.emulator.run(\"redis-cli GET hello\")\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0].strip(), '\"world\"')\n"
  },
  {
    "path": "support/testing/tests/package/test_rings.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuaRings(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUA=y\n        BR2_PACKAGE_RINGS=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"rings\")\n\n\nclass TestLuajitRings(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_RINGS=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"rings\")\n"
  },
  {
    "path": "support/testing/tests/package/test_rust.py",
    "content": "import os\nimport tempfile\nimport subprocess\nimport shutil\n\nimport infra.basetest\n\n\nclass TestRustBase(infra.basetest.BRTest):\n\n    target = 'armv7-unknown-linux-gnueabihf'\n    crate = 'hello-world'\n\n    def login(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n    def build_test_prog(self):\n        hostdir = os.path.join(self.builddir, 'host')\n        env = os.environ.copy()\n        env[\"USER\"] = \"br-user\"\n        env[\"PATH\"] = \"{}:\".format(os.path.join(hostdir, 'bin')) + env[\"PATH\"]\n        env[\"CARGO_HOME\"] = os.path.join(hostdir, 'usr', 'share', 'cargo')\n        env[\"RUST_TARGET_PATH\"] = os.path.join(hostdir, 'etc', 'rustc')\n        cargo = os.path.join(hostdir, 'bin', 'cargo')\n        workdir = os.path.join(tempfile.mkdtemp(suffix='-br2-testing-rust'),\n                               self.crate)\n        manifest = os.path.join(workdir, 'Cargo.toml')\n        prog = os.path.join(workdir, 'target', self.target, 'debug', self.crate)\n\n        cmd = [cargo, 'init', '--bin', '--vcs', 'none', '-vv', workdir]\n        ret = subprocess.call(cmd,\n                              stdout=self.b.logfile,\n                              stderr=self.b.logfile,\n                              env=env)\n        if ret != 0:\n            raise SystemError(\"Cargo init failed\")\n\n        cmd = [\n            cargo, 'build', '-vv', '--target', self.target,\n            '--manifest-path', manifest\n        ]\n        ret = subprocess.call(cmd,\n                              stdout=self.b.logfile,\n                              stderr=self.b.logfile,\n                              env=env)\n        if ret != 0:\n            raise SystemError(\"Cargo build failed\")\n\n        shutil.copy(prog, os.path.join(self.builddir, 'target', 'usr', 'bin'))\n        self.b.build()\n        shutil.rmtree(workdir)\n\n\nclass TestRustBin(TestRustBase):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_cortex_a9=y\n        BR2_ARM_ENABLE_NEON=y\n        BR2_ARM_ENABLE_VFP=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TARGET_GENERIC_GETTY_PORT=\"ttyAMA0\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        BR2_PACKAGE_HOST_RUSTC=y\n        \"\"\"\n\n    def test_run(self):\n        self.build_test_prog()\n        self.login()\n        self.assertRunOk(self.crate)\n\n\nclass TestRust(TestRustBase):\n    config = \\\n        \"\"\"\n        BR2_arm=y\n        BR2_cortex_a9=y\n        BR2_ARM_ENABLE_NEON=y\n        BR2_ARM_ENABLE_VFP=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TARGET_GENERIC_GETTY_PORT=\"ttyAMA0\"\n        BR2_SYSTEM_DHCP=\"eth0\"\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        BR2_PACKAGE_HOST_RUSTC=y\n        BR2_PACKAGE_HOST_RUST=y\n        \"\"\"\n\n    def test_run(self):\n        self.build_test_prog()\n        self.login()\n        self.assertRunOk(self.crate)\n"
  },
  {
    "path": "support/testing/tests/package/test_s6.py",
    "content": "import os\nimport textwrap\n\nimport infra.basetest\n\n\nclass TestS6(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_S6=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n        _, exit_code = self.emulator.run(\"s6-svscan -h\")\n        self.assertEqual(exit_code, 100)\n\n        script = \\\n            \"\"\"\n            #!/bin/execlineb -P\n            s6-ipcserver-socketbinder /tmp/socket\n            s6-ipcserverd\n            cat\n            \"\"\"\n        script = textwrap.dedent(script)\n\n        # Set up scanning and service directories\n        self.emulator.run(\"mkdir -p source/testsv\")\n        self.emulator.run(\"cat > source/testsv/run <<EOF\" + script + \"EOF\")\n        self.emulator.run(\"chmod +x source/testsv/run\")\n        _, exit_code = self.emulator.run(\"s6-svok source/testsv\")\n        self.assertEqual(exit_code, 1)\n\n        # Run a scan and start all services\n        self.emulator.run(\"s6-svscan source &\")\n        self.emulator.run(\"sleep 2\")\n        _, exit_code = self.emulator.run(\"s6-svok source/testsv\")\n        self.assertEqual(exit_code, 0)\n\n        # Test a running service\n        cmd = \"echo foobar | s6-ipcclient /tmp/socket s6-ioconnect -67\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0], \"foobar\")\n\n        # Terminate all services\n        _, exit_code = self.emulator.run(\"s6-svscanctl -t source\")\n        self.assertEqual(exit_code, 0)\n        self.emulator.run(\"sleep 2\")\n        _, exit_code = self.emulator.run(\"s6-svok source/testsv\")\n        self.assertEqual(exit_code, 1)\n"
  },
  {
    "path": "support/testing/tests/package/test_s6_networking.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestS6Networking(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_S6_NETWORKING=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n        # Test the TAICLOCK server and client\n        _, exit_code = self.emulator.run(\"s6-taiclockd &\")\n        self.emulator.run(\"sleep 2\")\n        cmd = \"s6-taiclock 127.0.0.1 | s6-clockview\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0][0:6], \"before\")\n        self.assertEqual(output[1][0:5], \"after\")\n\n        # Test the TCP server and client\n        _, exit_code = self.emulator.run(\"s6-tcpserver4 127.0.0.1 1024 cat &\")\n        self.emulator.run(\"sleep 2\")\n        cmd = \"echo foobar | s6-tcpclient 127.0.0.1 1024 s6-ioconnect -67\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0], \"foobar\")\n"
  },
  {
    "path": "support/testing/tests/package/test_s6_portable_utils.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestS6PortableUtils(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_S6_PORTABLE_UTILS=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n        output, exit_code = self.emulator.run(\"s6-basename /sbin/init\")\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0].strip(), \"init\")\n\n        output, exit_code = self.emulator.run(\"s6-echo hello world | s6-cut -d' ' -f2\")\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0].strip(), \"world\")\n\n        _, exit_code = self.emulator.run(\"s6-mkfifo testpipe\")\n        self.assertEqual(exit_code, 0)\n        _, exit_code = self.emulator.run(\"s6-test -p testpipe\")\n        self.assertEqual(exit_code, 0)\n"
  },
  {
    "path": "support/testing/tests/package/test_s6_rc.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestS6Rc(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_S6_RC=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n        _, exit_code = self.emulator.run(\"s6-svscan -h\")\n        self.assertEqual(exit_code, 100)\n\n        # Set up two service directories with a dependency\n        self.assertRunOk(\"mkdir -p source/testsv1\")\n        self.assertRunOk(\"mkdir -p source/testsv2\")\n        self.assertRunOk(\"echo oneshot > source/testsv1/type\")\n        self.assertRunOk(\"echo oneshot > source/testsv2/type\")\n        self.assertRunOk(\"echo 'echo foo' > source/testsv1/up\")\n        self.assertRunOk(\"echo 'echo bar' > source/testsv2/up\")\n        self.assertRunOk(\"echo testsv1 > source/testsv2/dependencies\")\n        self.assertRunOk(\"chmod +x source/testsv1/up\")\n        self.assertRunOk(\"chmod +x source/testsv2/up\")\n\n        # Compile the service database\n        self.assertRunOk(\"s6-rc-compile compiled source\")\n\n        # Inspect dependencies\n        cmd = \"s6-rc-db -c compiled -d dependencies testsv1\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0], \"testsv2\")\n        cmd = \"s6-rc-db -c compiled dependencies testsv2\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output[0], \"testsv1\")\n"
  },
  {
    "path": "support/testing/tests/package/test_sudo.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestSudo(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_SUDO=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n        # -D    don't set a password\n        # -h    set home directory\n        # -H    don't create home directory\n        # -s    set shell\n        self.assertRunOk(\"adduser -D -h /tmp -H -s /bin/sh sudotest\")\n\n        self.assertRunOk(\"echo 'sudotest ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers\")\n\n        output, exit_code = self.emulator.run(\"su - sudotest -c 'echo hello world'\")\n        self.assertEqual(output, [\"hello world\"])\n\n        output, exit_code = self.emulator.run(\"su - sudotest -c 'sudo echo hello world'\")\n        self.assertEqual(exit_code, 0)\n        self.assertEqual(output, [\"hello world\"])\n"
  },
  {
    "path": "support/testing/tests/package/test_syslog_ng.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestSyslogNg(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y\n        BR2_PACKAGE_SYSLOG_NG=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n        cmd = \"grep 'syslog-ng starting' /var/log/messages\"\n        self.assertRunOk(cmd)\n\n        cmd = \"logger my-message && \"\n        cmd += \"sleep 1 && \"\n        cmd += \"grep my-message /var/log/messages\"\n        self.assertRunOk(cmd)\n\n        cmd = \"syslog-ng-ctl reload && \"\n        cmd += \"sleep 1\"\n        self.assertRunOk(cmd)\n\n        cmd = \"grep -i 'syslog-ng.*warning' /var/log/messages\"\n        _, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 1)\n"
  },
  {
    "path": "support/testing/tests/package/test_tmux.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestTmux(infra.basetest.BRTest):\n    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \\\n        \"\"\"\n        BR2_PACKAGE_TMUX=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", cpio_file])\n        self.emulator.login()\n\n        cmd = \"tmux -V\"\n        self.assertRunOk(cmd)\n\n        cmd = \"tmux -C </dev/null\"\n        self.assertRunOk(cmd)\n\n        cmd = \"tmux split\"\n        self.assertRunOk(cmd)\n\n        cmd = \"tmux new-window\"\n        self.assertRunOk(cmd)\n\n        cmd = \"tmux list-windows\"\n        output, exit_code = self.emulator.run(cmd)\n        self.assertEqual(exit_code, 0)\n        self.assertIn(\"(2 panes)\", output[0])\n        self.assertIn(\"(1 panes)\", output[1])\n"
  },
  {
    "path": "support/testing/tests/package/test_turbolua.py",
    "content": "from tests.package.test_lua import TestLuaBase\n\n\nclass TestLuajitTurbolua(TestLuaBase):\n    config = TestLuaBase.config + \\\n        \"\"\"\n        BR2_PACKAGE_LUAJIT=y\n        BR2_PACKAGE_TURBOLUA=y\n        \"\"\"\n\n    def test_run(self):\n        self.login()\n        self.module_test(\"turbo\")\n"
  },
  {
    "path": "support/testing/tests/package/test_uboot_openssl_pkgconfig.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestUbootOpensslPkgConfig(infra.basetest.BRTest):\n    config = infra.basetest.MINIMAL_CONFIG + \\\n        \"\"\"\n        BR2_x86_64=y\n        BR2_x86_atom=y\n        BR2_PACKAGE_OPENSSL=y\n        BR2_TARGET_UBOOT=y\n        BR2_TARGET_UBOOT_BOARD_DEFCONFIG=\"efi-x86_payload64\"\n        BR2_TARGET_UBOOT_NEEDS_OPENSSL=y\n        \"\"\"\n\n    def test_run(self):\n        img = os.path.join(self.builddir, \"images\", \"u-boot.bin\")\n        self.assertTrue(os.path.exists(img))\n"
  },
  {
    "path": "support/testing/tests/package/test_zfs.py",
    "content": "import os\n\nimport infra.basetest\n\n\nclass TestZfsGlibc(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_x86_64=y\n        BR2_x86_corei7=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE=y\n        BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y\n        BR2_LINUX_KERNEL=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"5.12.13\"\n        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y\n        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"board/qemu/x86_64/linux.config\"\n        BR2_PACKAGE_ZFS=y\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_CFFI=y\n        BR2_PACKAGE_PYTHON_SETUPTOOLS=y\n        BR2_PACKAGE_ZLIB_NG=y\n        BR2_PACKAGE_LIBRESSL=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        kernel = os.path.join(self.builddir, \"images\", \"bzImage\")\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(\n            arch=\"x86_64\",\n            kernel=kernel,\n            kernel_cmdline=[\"console=ttyS0\"],\n            options=[\"-cpu\", \"Nehalem\", \"-m\", \"320\", \"-initrd\", cpio_file],\n        )\n        self.emulator.login()\n\n        cmds = [\n            # Init\n            \"modprobe zfs\",\n            \"mount -o remount,size=132M /tmp\",\n            \"fallocate -l 64M /tmp/container1.raw\",\n            \"fallocate -l 64M /tmp/container2.raw\",\n            \"zpool create -m /pool pool raidz /tmp/container1.raw /tmp/container2.raw\",\n            \"dd if=/dev/urandom bs=1M count=8 of=/pool/urandom\",\n            \"sha256sum /pool/urandom > /tmp/urandom.sha256\",\n            # Check ZFS\n            \"zpool export pool\",\n            \"zpool import pool -d /tmp/container1.raw -d /tmp/container2.raw\",\n            \"dd conv=notrunc bs=1M count=32 seek=16 if=/dev/urandom of=/tmp/container1.raw\",\n            \"zpool scrub -w pool\",\n            \"sha256sum -c /tmp/urandom.sha256\",\n            \"zpool status -v\",\n            # Check PyZFS\n            \"arc_summary\",\n        ]\n        for cmd in cmds:\n            self.assertRunOk(cmd)\n\n\nclass TestZfsUclibc(infra.basetest.BRTest):\n    config = \\\n        \"\"\"\n        BR2_x86_64=y\n        BR2_x86_corei7=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_STABLE=y\n        BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y\n        BR2_LINUX_KERNEL=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION=y\n        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"5.12.13\"\n        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y\n        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=\"board/qemu/x86_64/linux.config\"\n        BR2_PACKAGE_ZFS=y\n        BR2_PACKAGE_PYTHON3=y\n        BR2_PACKAGE_PYTHON_CFFI=y\n        BR2_PACKAGE_PYTHON_SETUPTOOLS=y\n        BR2_PACKAGE_ZLIB_NG=y\n        BR2_PACKAGE_LIBRESSL=y\n        BR2_TARGET_ROOTFS_CPIO=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n\n    def test_run(self):\n        kernel = os.path.join(self.builddir, \"images\", \"bzImage\")\n        cpio_file = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(\n            arch=\"x86_64\",\n            kernel=kernel,\n            kernel_cmdline=[\"console=ttyS0\"],\n            options=[\"-cpu\", \"Nehalem\", \"-m\", \"320\", \"-initrd\", cpio_file],\n        )\n        self.emulator.login()\n\n        cmds = [\n            # Init\n            \"modprobe zfs\",\n            \"mount -o remount,size=132M /tmp\",\n            \"fallocate -l 64M /tmp/container1.raw\",\n            \"fallocate -l 64M /tmp/container2.raw\",\n            \"zpool create -m /pool pool raidz /tmp/container1.raw /tmp/container2.raw\",\n            \"dd if=/dev/urandom bs=1M count=8 of=/pool/urandom\",\n            \"sha256sum /pool/urandom > /tmp/urandom.sha256\",\n            # Check ZFS\n            \"zpool export pool\",\n            \"zpool import pool -d /tmp/container1.raw -d /tmp/container2.raw\",\n            \"dd conv=notrunc bs=1M count=32 seek=16 if=/dev/urandom of=/tmp/container1.raw\",\n            \"zpool scrub -w pool\",\n            \"sha256sum -c /tmp/urandom.sha256\",\n            \"zpool status -v\",\n            # Check PyZFS\n            \"arc_summary\",\n        ]\n        for cmd in cmds:\n            self.assertRunOk(cmd)\n"
  },
  {
    "path": "support/testing/tests/toolchain/__init__.py",
    "content": ""
  },
  {
    "path": "support/testing/tests/toolchain/test_external.py",
    "content": "import os\nimport infra\n\nBASIC_CONFIG = \\\n    \"\"\"\n    BR2_TARGET_ROOTFS_CPIO=y\n    # BR2_TARGET_ROOTFS_TAR is not set\n    \"\"\"\n\n\ndef has_broken_links(path):\n    for root, dirs, files in os.walk(path):\n        for f in files:\n            fpath = os.path.join(root, f)\n            if not os.path.exists(fpath):\n                return True\n    return False\n\n\nclass TestExternalToolchain(infra.basetest.BRTest):\n    def common_check(self):\n        # Check for broken symlinks\n        for d in [\"lib\", \"usr/lib\"]:\n            path = os.path.join(self.builddir, \"staging\", d)\n            self.assertFalse(has_broken_links(path))\n            path = os.path.join(self.builddir, \"target\", d)\n            self.assertFalse(has_broken_links(path))\n\n        with open(os.path.join(self.builddir, \".config\"), 'r') as configf:\n            configlines = [line.strip() for line in configf.readlines()]\n\n        if \"BR2_BINFMT_ELF=y\" in configlines:\n            interp = infra.get_elf_prog_interpreter(self.builddir,\n                                                    self.toolchain_prefix,\n                                                    \"bin/busybox\")\n            interp_path = os.path.join(self.builddir, \"target\", interp[1:])\n            self.assertTrue(os.path.exists(interp_path))\n\n\nclass TestExternalToolchainSourceryArmv4(TestExternalToolchain):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_arm=y\n        BR2_arm920t=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y\n        \"\"\"\n    toolchain_prefix = \"arm-none-linux-gnueabi\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n        # Check the architecture variant\n        arch = infra.get_file_arch(self.builddir,\n                                   self.toolchain_prefix,\n                                   \"lib/libc.so.6\")\n        self.assertEqual(arch, \"v4T\")\n\n        # Check the sysroot symlink\n        symlink = os.path.join(self.builddir, \"staging\", \"armv4t\")\n        self.assertTrue(os.path.exists(symlink))\n        self.assertEqual(os.readlink(symlink), \"./\")\n\n        # Boot the system\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n\nclass TestExternalToolchainSourceryArmv5(TestExternalToolchain):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y\n        \"\"\"\n    toolchain_prefix = \"arm-none-linux-gnueabi\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n        # Check the architecture variant\n        arch = infra.get_file_arch(self.builddir,\n                                   self.toolchain_prefix,\n                                   \"lib/libc.so.6\")\n        self.assertEqual(arch, \"v5TE\")\n\n        # Boot the system\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv5\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n\nclass TestExternalToolchainSourceryArmv7(TestExternalToolchain):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_arm=y\n        BR2_cortex_a8=y\n        BR2_ARM_EABI=y\n        BR2_ARM_INSTRUCTIONS_THUMB2=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y\n        \"\"\"\n    toolchain_prefix = \"arm-none-linux-gnueabi\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n        # Check the architecture variant\n        arch = infra.get_file_arch(self.builddir,\n                                   self.toolchain_prefix,\n                                   \"lib/libc.so.6\")\n        self.assertEqual(arch, \"v7\")\n        isa = infra.get_elf_arch_tag(self.builddir,\n                                     self.toolchain_prefix,\n                                     \"lib/libc.so.6\",\n                                     \"Tag_THUMB_ISA_use\")\n        self.assertEqual(isa, \"Thumb-2\")\n\n        # Check we have the sysroot symlink\n        symlink = os.path.join(self.builddir, \"staging\", \"thumb2\")\n        self.assertTrue(os.path.exists(symlink))\n        self.assertEqual(os.readlink(symlink), \"./\")\n\n        # Boot the system\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n\nclass TestExternalToolchainLinaroArm(TestExternalToolchain):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_arm=y\n        BR2_cortex_a8=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y\n        \"\"\"\n    toolchain_prefix = \"arm-linux-gnueabihf\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n        # Check the architecture variant\n        arch = infra.get_file_arch(self.builddir,\n                                   self.toolchain_prefix,\n                                   \"lib/libc.so.6\")\n        self.assertEqual(arch, \"v7\")\n        isa = infra.get_elf_arch_tag(self.builddir,\n                                     self.toolchain_prefix,\n                                     \"lib/libc.so.6\",\n                                     \"Tag_THUMB_ISA_use\")\n        self.assertEqual(isa, \"Thumb-2\")\n\n        # Boot the system\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n\nclass TestExternalToolchainBuildrootMusl(TestExternalToolchain):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_arm=y\n        BR2_cortex_a9=y\n        BR2_ARM_ENABLE_VFP=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\n        BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\n        BR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-a9-musl-2017.05-1078-g95b1dae.tar.bz2\"\n        BR2_TOOLCHAIN_EXTERNAL_GCC_6=y\n        BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_12=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y\n        BR2_TOOLCHAIN_EXTERNAL_CXX=y\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n\nclass TestExternalToolchainCtngMusl(TestExternalToolchain):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_arm=y\n        BR2_cortex_a9=y\n        BR2_ARM_ENABLE_VFP=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\n        BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\n        BR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.net/toolchains/tarballs/arm-ctng-linux-musleabihf.tar.xz\"\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX=\"arm-ctng-linux-musleabihf\"\n        BR2_TOOLCHAIN_EXTERNAL_GCC_7=y\n        BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y\n        BR2_TOOLCHAIN_EXTERNAL_CXX=y\n        \"\"\"\n    toolchain_prefix = \"arm-ctng-linux-musleabihf\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n\nclass TestExternalToolchainBuildrootuClibc(TestExternalToolchain):\n    config = BASIC_CONFIG + \\\n        \"\"\"\n        BR2_arm=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y\n        BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y\n        BR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2017.05-1078-g95b1dae.tar.bz2\"\n        BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y\n        BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y\n        BR2_TOOLCHAIN_EXTERNAL_LOCALE=y\n        # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set\n        BR2_TOOLCHAIN_EXTERNAL_CXX=y\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n        img = os.path.join(self.builddir, \"images\", \"rootfs.cpio\")\n        self.emulator.boot(arch=\"armv7\",\n                           kernel=\"builtin\",\n                           options=[\"-initrd\", img])\n        self.emulator.login()\n\n\nclass TestExternalToolchainCCache(TestExternalToolchainBuildrootuClibc):\n    extraconfig = \\\n        \"\"\"\n        BR2_CCACHE=y\n        BR2_CCACHE_DIR=\"{builddir}/ccache-dir\"\n        \"\"\"\n\n    def __init__(self, names):\n        super(TestExternalToolchainBuildrootuClibc, self).__init__(names)\n        self.config += self.extraconfig.format(builddir=self.builddir)\n"
  },
  {
    "path": "support/testing/tests/toolchain/test_external_bootlin.py",
    "content": "# This file was auto-generated by support/scripts/gen-bootlin-toolchains\n# Do not edit\nfrom tests.toolchain.test_external import TestExternalToolchain\n\n\nclass TestExternalToolchainBootlinAarch64GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_aarch64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"aarch64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinAarch64GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_aarch64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"aarch64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinAarch64MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_aarch64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"aarch64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinAarch64MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_aarch64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"aarch64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinAarch64UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_aarch64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"aarch64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinAarch64UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_aarch64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"aarch64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinAarch64beGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_aarch64_be=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"aarch64_be-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinAarch64beGlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_aarch64_be=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"aarch64_be-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinAarch64beUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_aarch64_be=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"aarch64_be-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinAarch64beUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_aarch64_be=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"aarch64_be-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArcle750dUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arcle=y\n        BR2_arc750d=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArcle750dUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arcle=y\n        BR2_arc750d=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArclehs38GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arcle=y\n        BR2_archs38=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArclehs38GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arcle=y\n        BR2_archs38=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArclehs38UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arcle=y\n        BR2_archs38=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArclehs38UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arcle=y\n        BR2_archs38=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv5eabiGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_arm926t=y\n        BR2_ARM_EABI=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv5eabiGlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_arm926t=y\n        BR2_ARM_EABI=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv5eabiMuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_arm926t=y\n        BR2_ARM_EABI=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv5eabiMuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_arm926t=y\n        BR2_ARM_EABI=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv5eabiUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_arm926t=y\n        BR2_ARM_EABI=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv5eabiUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_arm926t=y\n        BR2_ARM_EABI=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv6eabihfGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_arm1176jzf_s=y\n        BR2_ARM_EABIHF=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv6eabihfGlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_arm1176jzf_s=y\n        BR2_ARM_EABIHF=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv6eabihfMuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_arm1176jzf_s=y\n        BR2_ARM_EABIHF=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv6eabihfMuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_arm1176jzf_s=y\n        BR2_ARM_EABIHF=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv6eabihfUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_arm1176jzf_s=y\n        BR2_ARM_EABIHF=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv6eabihfUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_arm1176jzf_s=y\n        BR2_ARM_EABIHF=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv7eabihfGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_cortex_a8=y\n        BR2_ARM_EABIHF=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv7eabihfGlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_cortex_a8=y\n        BR2_ARM_EABIHF=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv7eabihfMuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_cortex_a8=y\n        BR2_ARM_EABIHF=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv7eabihfMuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_cortex_a8=y\n        BR2_ARM_EABIHF=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv7eabihfUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_cortex_a8=y\n        BR2_ARM_EABIHF=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv7eabihfUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_cortex_a8=y\n        BR2_ARM_EABIHF=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv7mUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_cortex_m4=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinArmv7mUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_arm=y\n        BR2_cortex_m4=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"arm-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinM68k68xxxUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_m68k=y\n        BR2_m68k_68040=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"m68k-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinM68k68xxxUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_m68k=y\n        BR2_m68k_68040=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"m68k-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinM68kcoldfireUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_m68k=y\n        BR2_m68k_cf5208=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"m68k-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinM68kcoldfireUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_m68k=y\n        BR2_m68k_cf5208=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"m68k-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMicroblazebeGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_microblazebe=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"microblaze-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMicroblazebeGlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_microblazebe=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"microblaze-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMicroblazebeMuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_microblazebe=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"microblaze-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMicroblazebeMuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_microblazebe=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"microblaze-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMicroblazebeUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_microblazebe=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"microblaze-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMicroblazebeUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_microblazebe=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"microblaze-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMicroblazeelGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_microblazeel=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"microblazeel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMicroblazeelGlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_microblazeel=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"microblazeel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMicroblazeelMuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_microblazeel=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"microblazeel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMicroblazeelMuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_microblazeel=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"microblazeel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMicroblazeelUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_microblazeel=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"microblazeel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMicroblazeelUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_microblazeel=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"microblazeel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips=y\n        BR2_mips_32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips=y\n        BR2_mips_32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips=y\n        BR2_mips_32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips=y\n        BR2_mips_32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips=y\n        BR2_mips_32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips=y\n        BR2_mips_32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32elGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32elGlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32elMuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32elMuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32elUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32elUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32r5elGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32r5=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32r5elGlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32r5=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32r5elMuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32r5=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32r5elMuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32r5=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32r5elUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32r5=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32r5elUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32r5=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32r6elGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32r6=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32r6elGlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32r6=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32r6elMuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32r6=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32r6elMuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32r6=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32r6elUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32r6=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips32r6elUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mipsel=y\n        BR2_mips_32r6=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mipsel-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64n32GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64=y\n        BR2_mips_64=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64n32GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64=y\n        BR2_mips_64=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64n32MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64=y\n        BR2_mips_64=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64n32MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64=y\n        BR2_mips_64=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64n32UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64=y\n        BR2_mips_64=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64n32UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64=y\n        BR2_mips_64=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64eln32GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64el=y\n        BR2_mips_64=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64el-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64eln32GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64el=y\n        BR2_mips_64=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64el-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64eln32MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64el=y\n        BR2_mips_64=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64el-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64eln32MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64el=y\n        BR2_mips_64=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64el-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64eln32UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64el=y\n        BR2_mips_64=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64el-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64eln32UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64el=y\n        BR2_mips_64=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64el-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64r6eln32GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64el=y\n        BR2_mips_64r6=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64el-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64r6eln32GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64el=y\n        BR2_mips_64r6=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64el-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64r6eln32MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64el=y\n        BR2_mips_64r6=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64el-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64r6eln32MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64el=y\n        BR2_mips_64r6=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64el-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64r6eln32UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64el=y\n        BR2_mips_64r6=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64el-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinMips64r6eln32UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_mips64el=y\n        BR2_mips_64r6=y\n        BR2_MIPS_NABI32=y\n        # BR2_MIPS_SOFT_FLOAT is not set\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"mips64el-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinNios2GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_nios2=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"nios2-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinNios2GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_nios2=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"nios2-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinOpenriscMuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_or1k=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"or1k-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinOpenriscMuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_or1k=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"or1k-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinOpenriscUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_or1k=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"or1k-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinOpenriscUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_or1k=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"or1k-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc440fpGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_440fp=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc440fpGlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_440fp=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc440fpMuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_440fp=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc440fpMuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_440fp=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc440fpUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_440fp=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc440fpUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_440fp=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpce300c3GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_e300c3=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpce300c3GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_e300c3=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpce300c3MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_e300c3=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpce300c3MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_e300c3=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpce300c3UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_e300c3=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpce300c3UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_e300c3=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpce500mcGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_e500mc=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpce500mcGlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_e500mc=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpce500mcMuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_e500mc=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpce500mcMuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_e500mc=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpce500mcUclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_e500mc=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpce500mcUclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc=y\n        BR2_powerpc_e500mc=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64e5500GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64=y\n        BR2_powerpc_e5500=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64e5500GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64=y\n        BR2_powerpc_e5500=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64e6500GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64=y\n        BR2_powerpc_e6500=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64e6500GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64=y\n        BR2_powerpc_e6500=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64e6500MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64=y\n        BR2_powerpc_e6500=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64e6500MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64=y\n        BR2_powerpc_e6500=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64power8GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64=y\n        BR2_powerpc_power8=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64power8GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64=y\n        BR2_powerpc_power8=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64power8MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64=y\n        BR2_powerpc_power8=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64power8MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64=y\n        BR2_powerpc_power8=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64lepower8GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64le=y\n        BR2_powerpc_power8=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64le-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64lepower8GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64le=y\n        BR2_powerpc_power8=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64le-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64lepower8MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64le=y\n        BR2_powerpc_power8=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64le-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinPowerpc64lepower8MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_powerpc64le=y\n        BR2_powerpc_power8=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"powerpc64le-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinRiscv32ilp32dGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_riscv=y\n        BR2_riscv_g=y\n        BR2_RISCV_32=y\n        BR2_RISCV_ABI_ILP32D=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"riscv32-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinRiscv64GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_riscv=y\n        BR2_riscv_g=y\n        BR2_RISCV_64=y\n        BR2_RISCV_ABI_LP64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"riscv64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinRiscv64MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_riscv=y\n        BR2_riscv_g=y\n        BR2_RISCV_64=y\n        BR2_RISCV_ABI_LP64=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"riscv64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinShsh4GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sh=y\n        BR2_sh4=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sh4-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinShsh4GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sh=y\n        BR2_sh4=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sh4-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinShsh4MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sh=y\n        BR2_sh4=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sh4-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinShsh4MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sh=y\n        BR2_sh4=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sh4-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinShsh4UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sh=y\n        BR2_sh4=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sh4-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinShsh4UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sh=y\n        BR2_sh4=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sh4-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinShsh4aebGlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sh=y\n        BR2_sh4aeb=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sh4aeb-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinShsh4aebGlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sh=y\n        BR2_sh4aeb=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sh4aeb-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinShsh4aebMuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sh=y\n        BR2_sh4aeb=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sh4aeb-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinShsh4aebMuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sh=y\n        BR2_sh4aeb=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sh4aeb-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinSparc64GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sparc64=y\n        BR2_sparc_v9=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sparc64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinSparc64GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sparc64=y\n        BR2_sparc_v9=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sparc64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinSparcv8UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sparc=y\n        BR2_sparc_v8=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sparc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinSparcv8UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_sparc=y\n        BR2_sparc_v8=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"sparc-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX8664corei7GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_x86_64=y\n        BR2_x86_corei7=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"x86_64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX8664corei7GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_x86_64=y\n        BR2_x86_corei7=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"x86_64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX8664corei7MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_x86_64=y\n        BR2_x86_corei7=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"x86_64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX8664corei7MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_x86_64=y\n        BR2_x86_corei7=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"x86_64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX8664corei7UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_x86_64=y\n        BR2_x86_corei7=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"x86_64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX8664corei7UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_x86_64=y\n        BR2_x86_corei7=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"x86_64-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX86core2GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_i386=y\n        BR2_x86_core2=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"i686-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX86core2GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_i386=y\n        BR2_x86_core2=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"i686-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX86core2MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_i386=y\n        BR2_x86_core2=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"i686-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX86core2MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_i386=y\n        BR2_x86_core2=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"i686-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX86core2UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_i386=y\n        BR2_x86_core2=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"i686-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX86core2UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_i386=y\n        BR2_x86_core2=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"i686-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX86i686GlibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_i386=y\n        BR2_x86_i686=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"i686-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX86i686GlibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_i386=y\n        BR2_x86_i686=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"i686-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX86i686MuslBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_i386=y\n        BR2_x86_i686=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"i686-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX86i686MuslStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_i386=y\n        BR2_x86_i686=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"i686-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX86i686UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_i386=y\n        BR2_x86_i686=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"i686-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinX86i686UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_i386=y\n        BR2_x86_i686=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"i686-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinXtensalx60UclibcBleedingEdge(TestExternalToolchain):\n    config = \"\"\"\n        BR2_xtensa=y\n        BR2_XTENSA_CUSTOM=y\n        BR2_XTENSA_LITTLE_ENDIAN=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_BLEEDING_EDGE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"xtensa-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n\n\nclass TestExternalToolchainBootlinXtensalx60UclibcStable(TestExternalToolchain):\n    config = \"\"\"\n        BR2_xtensa=y\n        BR2_XTENSA_CUSTOM=y\n        BR2_XTENSA_LITTLE_ENDIAN=y\n        BR2_TOOLCHAIN_EXTERNAL=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y\n        BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_STABLE=y\n        # BR2_TARGET_ROOTFS_TAR is not set\n        \"\"\"\n    toolchain_prefix = \"xtensa-linux\"\n\n    def test_run(self):\n        TestExternalToolchain.common_check(self)\n"
  },
  {
    "path": "support/testing/tests/utils/__init__.py",
    "content": ""
  },
  {
    "path": "support/testing/tests/utils/br2-external/Config.in",
    "content": "\n"
  },
  {
    "path": "support/testing/tests/utils/br2-external/external.desc",
    "content": "name: CHECK_PACKAGE\n"
  },
  {
    "path": "support/testing/tests/utils/br2-external/external.mk",
    "content": "custom-target:\n\t@echo \"do nothing\"\n"
  },
  {
    "path": "support/testing/tests/utils/br2-external/package/external/external.mk",
    "content": "# wrong\n"
  },
  {
    "path": "support/testing/tests/utils/test_check_package.py",
    "content": "\"\"\"Test cases for utils/check-package.\n\nIt does not inherit from infra.basetest.BRTest and therefore does not generate\na logfile. Only when the tests fail there will be output to the console.\n\nThe make target ('make check-package') is already used by the job\n'check-package' and won't be tested here.\n\"\"\"\nimport os\nimport subprocess\nimport unittest\n\nimport infra\n\n\ndef call_script(args, env, cwd):\n    \"\"\"Call a script and return stdout and stderr as lists.\"\"\"\n    out, err = subprocess.Popen(args, cwd=cwd, stdout=subprocess.PIPE,\n                                stderr=subprocess.PIPE, env=env,\n                                universal_newlines=True).communicate()\n    return out.splitlines(), err.splitlines()\n\n\nclass TestCheckPackage(unittest.TestCase):\n    \"\"\"Test the various ways the script can be called.\n\n    The script can be called either using relative path, absolute path or from\n    PATH.\n\n    The files to be checked can be passed as arguments using either relative\n    path or absolute path.\n\n    When in in-tree mode (without -b) some in-tree files and also all\n    out-of-tree files are ignored.\n\n    When in out-tree mode (with -b) the script does generate warnings for these\n    but ignores external.mk.\n    \"\"\"\n\n    WITH_EMPTY_PATH = {}\n    WITH_UTILS_IN_PATH = {\"PATH\": infra.basepath(\"utils\") + \":\" + os.environ[\"PATH\"]}\n    relative = [\n        # base_script           base_file               rel_script               rel_file                rel_cwd\n        [\"utils/check-package\", \"package/atop/atop.mk\", \"./utils/check-package\", \"package/atop/atop.mk\", \"\"],\n        [\"utils/check-package\", \"package/atop/atop.mk\", \"./utils/check-package\", \"./package/atop/atop.mk\", \"\"],\n        [\"utils/check-package\", \"package/atop/atop.mk\", \"../../utils/check-package\", \"atop.mk\", \"package/atop\"],\n        [\"utils/check-package\", \"package/atop/atop.mk\", \"../../utils/check-package\", \"./atop.mk\", \"package/atop\"],\n        [\"utils/check-package\", \"package/atop/atop.mk\", \"../utils/check-package\", \"atop/atop.mk\", \"package\"],\n        [\"utils/check-package\", \"package/atop/atop.mk\", \"../utils/check-package\", \"./atop/atop.mk\", \"package\"],\n        [\"utils/check-package\", \"package/atop/Config.in\", \"./utils/check-package\", \"package/atop/Config.in\", \"\"],\n        [\"utils/check-package\", \"package/atop/Config.in\", \"./utils/check-package\", \"./package/atop/Config.in\", \"\"],\n        [\"utils/check-package\", \"package/atop/Config.in\", \"../../utils/check-package\", \"Config.in\", \"package/atop\"],\n        [\"utils/check-package\", \"package/atop/Config.in\", \"../../utils/check-package\", \"./Config.in\", \"package/atop\"],\n        [\"utils/check-package\", \"package/atop/Config.in\", \"../utils/check-package\", \"atop/Config.in\", \"package\"],\n        [\"utils/check-package\", \"package/atop/Config.in\", \"../utils/check-package\", \"./atop/Config.in\", \"package\"]]\n\n    def assert_file_was_processed(self, stderr):\n        \"\"\"Infer from check-package stderr if at least one file was processed\n        and fail otherwise.\"\"\"\n        self.assertIn(\"lines processed\", stderr[0], stderr)\n        processed = int(stderr[0].split()[0])\n        self.assertGreater(processed, 0)\n\n    def assert_file_was_ignored(self, stderr):\n        \"\"\"Infer from check-package stderr if no file was processed and fail\n        otherwise.\"\"\"\n        self.assertIn(\"lines processed\", stderr[0], stderr)\n        processed = int(stderr[0].split()[0])\n        self.assertEqual(processed, 0)\n\n    def assert_warnings_generated_for_file(self, stderr):\n        \"\"\"Infer from check-package stderr if at least one warning was generated\n        and fail otherwise.\"\"\"\n        self.assertIn(\"warnings generated\", stderr[1], stderr)\n        generated = int(stderr[1].split()[0])\n        self.assertGreater(generated, 0)\n\n    def test_run(self):\n        \"\"\"Test the various ways the script can be called in a simple top to\n        bottom sequence.\"\"\"\n        # an intree file can be checked by the script called from relative path,\n        # absolute path and from PATH\n        for base_script, base_file, rel_script, rel_file, rel_cwd in self.relative:\n            abs_script = infra.basepath(base_script)\n            abs_file = infra.basepath(base_file)\n            cwd = infra.basepath(rel_cwd)\n\n            _, m = call_script([rel_script, rel_file],\n                               self.WITH_EMPTY_PATH, cwd)\n            self.assert_file_was_processed(m)\n\n            _, m = call_script([abs_script, rel_file],\n                               self.WITH_EMPTY_PATH, cwd)\n            self.assert_file_was_processed(m)\n\n            _, m = call_script([\"check-package\", rel_file],\n                               self.WITH_UTILS_IN_PATH, cwd)\n            self.assert_file_was_processed(m)\n\n            _, m = call_script([rel_script, abs_file],\n                               self.WITH_EMPTY_PATH, cwd)\n            self.assert_file_was_processed(m)\n\n            _, m = call_script([abs_script, abs_file],\n                               self.WITH_EMPTY_PATH, cwd)\n            self.assert_file_was_processed(m)\n\n            _, m = call_script([\"check-package\", abs_file],\n                               self.WITH_UTILS_IN_PATH, cwd)\n            self.assert_file_was_processed(m)\n\n        # some intree files are ignored\n        _, m = call_script([\"./utils/check-package\", \"package/pkg-generic.mk\"],\n                           self.WITH_EMPTY_PATH, infra.basepath())\n        self.assert_file_was_ignored(m)\n\n        _, m = call_script([\"./utils/check-package\", \"-b\", \"package/pkg-generic.mk\"],\n                           self.WITH_EMPTY_PATH, infra.basepath())\n        self.assert_file_was_processed(m)\n\n        # an out-of-tree file can be checked by the script called from relative\n        # path, absolute path and from PATH\n        for base_script, base_file, rel_script, rel_file, rel_cwd in self.relative:\n            abs_script = infra.basepath(base_script)\n            abs_file = infra.basepath(base_file)\n            cwd = infra.basepath(rel_cwd)\n\n            _, m = call_script([rel_script, \"-b\", rel_file],\n                               self.WITH_EMPTY_PATH, cwd)\n            self.assert_file_was_processed(m)\n\n            _, m = call_script([abs_script, \"-b\", rel_file],\n                               self.WITH_EMPTY_PATH, cwd)\n            self.assert_file_was_processed(m)\n\n            _, m = call_script([\"check-package\", \"-b\", rel_file],\n                               self.WITH_UTILS_IN_PATH, cwd)\n            self.assert_file_was_processed(m)\n\n            _, m = call_script([rel_script, \"-b\", abs_file],\n                               self.WITH_EMPTY_PATH, cwd)\n            self.assert_file_was_processed(m)\n\n            _, m = call_script([abs_script, \"-b\", abs_file],\n                               self.WITH_EMPTY_PATH, cwd)\n            self.assert_file_was_processed(m)\n\n            _, m = call_script([\"check-package\", \"-b\", abs_file],\n                               self.WITH_UTILS_IN_PATH, cwd)\n            self.assert_file_was_processed(m)\n\n        # out-of-tree files are are ignored without -b but can generate warnings\n        # with -b\n        abs_path = infra.filepath(\"tests/utils/br2-external\")\n        rel_file = \"Config.in\"\n        abs_file = os.path.join(abs_path, rel_file)\n\n        _, m = call_script([\"check-package\", rel_file],\n                           self.WITH_UTILS_IN_PATH, abs_path)\n        self.assert_file_was_ignored(m)\n\n        _, m = call_script([\"check-package\", abs_file],\n                           self.WITH_UTILS_IN_PATH, infra.basepath())\n        self.assert_file_was_ignored(m)\n\n        w, m = call_script([\"check-package\", \"-b\", rel_file],\n                           self.WITH_UTILS_IN_PATH, abs_path)\n        self.assert_file_was_processed(m)\n        self.assert_warnings_generated_for_file(m)\n        self.assertIn(\"{}:1: empty line at end of file\".format(rel_file), w)\n\n        w, m = call_script([\"check-package\", \"-b\", abs_file],\n                           self.WITH_UTILS_IN_PATH, infra.basepath())\n        self.assert_file_was_processed(m)\n        self.assert_warnings_generated_for_file(m)\n        self.assertIn(\"{}:1: empty line at end of file\".format(abs_file), w)\n\n        # external.mk is ignored only when in the root path of a br2-external\n        rel_file = \"external.mk\"\n        abs_file = os.path.join(abs_path, rel_file)\n\n        _, m = call_script([\"check-package\", \"-b\", rel_file],\n                           self.WITH_UTILS_IN_PATH, abs_path)\n        self.assert_file_was_ignored(m)\n\n        _, m = call_script([\"check-package\", \"-b\", abs_file],\n                           self.WITH_UTILS_IN_PATH, infra.basepath())\n        self.assert_file_was_ignored(m)\n\n        abs_path = infra.filepath(\"tests/utils/br2-external/package/external\")\n        abs_file = os.path.join(abs_path, rel_file)\n\n        w, m = call_script([\"check-package\", \"-b\", rel_file],\n                           self.WITH_UTILS_IN_PATH, abs_path)\n        self.assert_file_was_processed(m)\n        self.assert_warnings_generated_for_file(m)\n        self.assertIn(\"{}:1: should be 80 hashes (http://nightly.buildroot.org/#writing-rules-mk)\".format(rel_file), w)\n\n        w, m = call_script([\"check-package\", \"-b\", abs_file],\n                           self.WITH_UTILS_IN_PATH, infra.basepath())\n        self.assert_file_was_processed(m)\n        self.assert_warnings_generated_for_file(m)\n        self.assertIn(\"{}:1: should be 80 hashes (http://nightly.buildroot.org/#writing-rules-mk)\".format(abs_file), w)\n"
  },
  {
    "path": "system/Config.in",
    "content": "menu \"System configuration\"\n\n# Note on package/skeleton: usually, it is not safe to 'select' a\n# provider of a virtual package. But below we have an exception: each\n# init system may select one of the virtual skeleton-init-* packages.\n# As only one init system may be enabled, only one skeleton-init-* may\n# be selected. So this is a safe situation.\nchoice\n\tprompt \"Root FS skeleton\"\n\nconfig BR2_ROOTFS_SKELETON_DEFAULT\n\tbool \"default target skeleton\"\n\thelp\n\t  Use default target skeleton for selected init system.\n\nconfig BR2_ROOTFS_SKELETON_CUSTOM\n\tbool \"custom target skeleton\"\n\tselect BR2_PACKAGE_SKELETON_CUSTOM\n\thelp\n\t  Use custom target skeleton.\n\n# skeleton from br2-external trees, if any\nsource \"$BR2_BASE_DIR/.br2-external.in.skeleton\"\n\nendchoice\n\nif BR2_ROOTFS_SKELETON_CUSTOM\n\nconfig BR2_ROOTFS_SKELETON_CUSTOM_PATH\n\tstring \"custom target skeleton path\"\n\thelp\n\t  Path to custom target skeleton.\n\nendif\n\nif BR2_ROOTFS_SKELETON_DEFAULT\n\nconfig BR2_TARGET_GENERIC_HOSTNAME\n\tstring \"System hostname\"\n\tdefault \"buildroot\"\n\thelp\n\t  Select system hostname to be stored in /etc/hostname.\n\n\t  Leave empty to not create /etc/hostname, or to keep the\n\t  one from a custom skeleton.\n\nconfig BR2_TARGET_GENERIC_ISSUE\n\tstring \"System banner\"\n\tdefault \"Welcome to Buildroot\"\n\thelp\n\t  Select system banner (/etc/issue) to be displayed at login.\n\n\t  Leave empty to not create /etc/issue, or to keep the\n\t  one from a custom skeleton.\n\nendif\n\nchoice\n\tbool \"Passwords encoding\"\n\tdefault BR2_TARGET_GENERIC_PASSWD_SHA256\n\thelp\n\t  Choose the password encoding scheme to use when Buildroot\n\t  needs to encode a password (eg. the root password, below).\n\n\t  Note: this is used at build-time, and *not* at runtime.\n\nconfig BR2_TARGET_GENERIC_PASSWD_SHA256\n\tbool \"sha-256\"\n\thelp\n\t  Use SHA256 to encode passwords which is stronger than MD5.\n\nconfig BR2_TARGET_GENERIC_PASSWD_SHA512\n\tbool \"sha-512\"\n\thelp\n\t  Use SHA512 to encode passwords which is stronger than SHA256\n\nendchoice # Passwd encoding\n\nconfig BR2_TARGET_GENERIC_PASSWD_METHOD\n\tstring\n\tdefault \"md5\"       if BR2_TARGET_GENERIC_PASSWD_MD5\n\tdefault \"sha-256\"   if BR2_TARGET_GENERIC_PASSWD_SHA256\n\tdefault \"sha-512\"   if BR2_TARGET_GENERIC_PASSWD_SHA512\n\n# See comment at the top of the file, about selecting individual\n# skeletons, which are providers of the virtual skeleton package.\nchoice\n\tprompt \"Init system\"\n\tdefault BR2_INIT_BUSYBOX\n\nconfig BR2_INIT_BUSYBOX\n\tbool \"BusyBox\"\n\tselect BR2_PACKAGE_BUSYBOX\n\tselect BR2_PACKAGE_INITSCRIPTS\n\tselect BR2_PACKAGE_SKELETON_INIT_SYSV if BR2_ROOTFS_SKELETON_DEFAULT\n\nconfig BR2_INIT_SYSV\n\tbool \"systemV\"\n\tdepends on BR2_USE_MMU # sysvinit\n\tselect BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # sysvinit\n\tselect BR2_PACKAGE_INITSCRIPTS\n\tselect BR2_PACKAGE_SYSVINIT\n\tselect BR2_PACKAGE_SKELETON_INIT_SYSV if BR2_ROOTFS_SKELETON_DEFAULT\n\nconfig BR2_INIT_OPENRC\n\tbool \"OpenRC\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_OPENRC\n\tselect BR2_PACKAGE_SKELETON_INIT_OPENRC if BR2_ROOTFS_SKELETON_DEFAULT\n\ncomment \"openrc needs a toolchain w/ dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS\n\n# In Buildroot, we decided not to support a split-usr when systemd is\n# used as an init system. This is a design decision, not a systemd\n# issue. Thus the select is with BR2_INIT_SYSTEMD (below) rather than\n# with BR2_PACKAGE_SYSTEMD.\nconfig BR2_INIT_SYSTEMD\n\tbool \"systemd\"\n\tdepends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\tdepends on BR2_TOOLCHAIN_HAS_SSP\n\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\tdepends on BR2_HOST_GCC_AT_LEAST_5\n\tselect BR2_ROOTFS_MERGED_USR\n\tselect BR2_PACKAGE_SYSTEMD\n\tselect BR2_PACKAGE_SKELETON_INIT_SYSTEMD if BR2_ROOTFS_SKELETON_DEFAULT\n\ncomment \"systemd needs a glibc toolchain w/ SSP, headers >= 3.10, host and target gcc >= 5\"\n\tdepends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_TOOLCHAIN_USES_GLIBC || \\\n\t\t!BR2_TOOLCHAIN_HAS_SSP || \\\n\t\t!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 || \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \\\n\t\t!BR2_HOST_GCC_AT_LEAST_5\n\nconfig BR2_INIT_NONE\n\tbool \"None\"\n\tselect BR2_PACKAGE_SKELETON_INIT_NONE if BR2_ROOTFS_SKELETON_DEFAULT\n\thelp\n\t  Buildroot will not install any init system. You will\n\t  have to provide your own, either with a new package\n\t  or with a rootfs-overlay.\n\n# Init systems from br2-external trees, if any\nsource \"$BR2_BASE_DIR/.br2-external.in.init\"\n\nendchoice\n\nchoice\n\tprompt \"/dev management\" if !BR2_INIT_SYSTEMD\n\tdefault BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS\n\nconfig BR2_ROOTFS_DEVICE_CREATION_STATIC\n\tbool \"Static using device table\"\n\nconfig BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS\n\tbool \"Dynamic using devtmpfs only\"\n\nconfig BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV\n\tbool \"Dynamic using devtmpfs + mdev\"\n\tselect BR2_PACKAGE_BUSYBOX\n\nconfig BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV\n\tbool \"Dynamic using devtmpfs + eudev\"\n\tdepends on BR2_USE_WCHAR # eudev\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_USE_MMU # eudev\n\tselect BR2_PACKAGE_EUDEV\n\ncomment \"eudev needs a toolchain w/ wchar, dynamic library\"\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS\n\nendchoice\n\ncomment \"/dev management using udev (from systemd)\"\n\tdepends on BR2_INIT_SYSTEMD\n\nconfig BR2_ROOTFS_DEVICE_TABLE\n\tstring \"Path to the permission tables\"\n\tdefault \"system/device_table.txt\"\n\thelp\n\t  Specify a space-separated list of permission table locations,\n\t  that will be passed to the makedevs utility to assign\n\t  correct owners and permissions on various files in the\n\t  target filesystem.\n\n\t  See package/makedevs/README for details on the usage and\n\t  syntax of these files.\n\nconfig BR2_ROOTFS_STATIC_DEVICE_TABLE\n\tstring \"Path to the device tables\"\n\tdefault \"system/device_table_dev.txt\"\n\tdepends on BR2_ROOTFS_DEVICE_CREATION_STATIC\n\thelp\n\t  Specify a space-separated list of device table locations,\n\t  that will be passed to the makedevs utility to create all\n\t  the special device files under /dev.\n\n\t  See package/makedevs/README for details on the usage and\n\t  syntax of these files.\n\nconfig BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES\n\tbool \"support extended attributes in device tables\"\n\thelp\n\t  Support extended attributes handling in device tables\n\nconfig BR2_ROOTFS_MERGED_USR\n\tbool \"Use symlinks to /usr for /bin, /sbin and /lib\"\n\thelp\n\t  If you say 'n' here, then /bin, /sbin and /lib and their\n\t  counterparts in /usr will be separate directories. This\n\t  is the historical UNIX way. In this case, /usr can be a\n\t  filesystem on a partition separate from / .\n\n\t  If you say 'y' here, then /bin, /sbin and /lib will be\n\t  symlinks to their counterparts in /usr. In this case, /usr can\n\t  not be a separate filesystem.\n\nif BR2_ROOTFS_SKELETON_DEFAULT\n\nconfig BR2_TARGET_ENABLE_ROOT_LOGIN\n\tbool \"Enable root login with password\"\n\tdefault y\n\tselect BR2_PACKAGE_HOST_MKPASSWD if BR2_TARGET_GENERIC_ROOT_PASSWD != \"\"\n\thelp\n\t  Allow root to log in with a password.\n\n\t  If not enabled, root will not be able to log in with a\n\t  password. However, if you have an ssh server and you add an\n\t  ssh key, you can still allow root to log in. Alternatively,\n\t  you can use sudo to become root.\n\nconfig BR2_TARGET_GENERIC_ROOT_PASSWD\n\tstring \"Root password\"\n\tdefault \"\"\n\tdepends on BR2_TARGET_ENABLE_ROOT_LOGIN\n\thelp\n\t  Set the initial root password.\n\n\t  If set to empty (the default), then no root password will be\n\t  set, and root will need no password to log in.\n\n\t  If the password starts with any of $1$, $5$ or $6$, it is\n\t  considered to be already crypt-encoded with respectively md5,\n\t  sha256 or sha512.  Any other value is taken to be a clear-text\n\t  value, and is crypt-encoded as per the \"Passwords encoding\"\n\t  scheme, above.\n\n\t  Note: \"$\" signs in the hashed password must be doubled. For\n\t  example, if the hashed password is\n\t  \"$1$longsalt$v35DIIeMo4yUfI23yditq0\", then you must enter it\n\t  as \"$$1$$longsalt$$v35DIIeMo4yUfI23yditq0\" (this is necessary\n\t  otherwise make would attempt to interpret the $ as a variable\n\t  expansion).\n\n\t  WARNING! WARNING!\n\t  The password appears as-is in the .config file, and may appear\n\t  in the build log! Avoid using a valuable password if either\n\t  the .config file or the build log may be distributed, or at\n\t  the very least use a strong cryptographic hash for your\n\t  password!\n\nchoice\n\tbool \"/bin/sh\"\n\tdefault BR2_SYSTEM_BIN_SH_DASH if !BR2_PACKAGE_BUSYBOX\n\thelp\n\t  Select which shell will provide /bin/sh.\n\n# busybox has shells that work on noMMU\nconfig BR2_SYSTEM_BIN_SH_BUSYBOX\n\tbool \"busybox' default shell\"\n\tdepends on BR2_PACKAGE_BUSYBOX\n\nconfig BR2_SYSTEM_BIN_SH_BASH\n\tbool \"bash\"\n\tdepends on BR2_USE_MMU # bash\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_BASH\n\nconfig BR2_SYSTEM_BIN_SH_DASH\n\tbool \"dash\"\n\tdepends on BR2_USE_MMU # dash\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_DASH\n\nconfig BR2_SYSTEM_BIN_SH_MKSH\n\tbool \"mksh\"\n\tdepends on BR2_USE_MMU # mksh\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_MKSH\n\nconfig BR2_SYSTEM_BIN_SH_ZSH\n\tbool \"zsh\"\n\tdepends on BR2_USE_MMU # zsh\n\tdepends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\n\tselect BR2_PACKAGE_ZSH\n\ncomment \"bash, dash, mksh, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS\"\n\tdepends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS && BR2_PACKAGE_BUSYBOX\n\nconfig BR2_SYSTEM_BIN_SH_NONE\n\tbool \"none\"\n\nendchoice # /bin/sh\n\nconfig BR2_SYSTEM_BIN_SH\n\tstring\n\tdefault \"bash\"    if BR2_SYSTEM_BIN_SH_BASH\n\tdefault \"dash\"    if BR2_SYSTEM_BIN_SH_DASH\n\tdefault \"mksh\"    if BR2_SYSTEM_BIN_SH_MKSH\n\tdefault \"zsh\"     if BR2_SYSTEM_BIN_SH_ZSH\n\nmenuconfig BR2_TARGET_GENERIC_GETTY\n\tbool \"Run a getty (login prompt) after boot\"\n\tdefault y\n\nif BR2_TARGET_GENERIC_GETTY\nconfig BR2_TARGET_GENERIC_GETTY_PORT\n\tstring \"TTY port\"\n\tdefault \"console\"\n\thelp\n\t  Specify a port to run a getty on.\n\nchoice\n\tprompt \"Baudrate\"\n\tdefault BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP\n\thelp\n\t  Select a baudrate to use.\n\nconfig BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP\n\tbool \"keep kernel default\"\nconfig BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600\n\tbool \"9600\"\nconfig BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200\n\tbool \"19200\"\nconfig BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400\n\tbool \"38400\"\nconfig BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600\n\tbool \"57600\"\nconfig BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200\n\tbool \"115200\"\nendchoice\n\nconfig BR2_TARGET_GENERIC_GETTY_BAUDRATE\n\tstring\n\tdefault \"0\"\t\tif BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP\n\tdefault \"9600\"\t\tif BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600\n\tdefault \"19200\"\t\tif BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200\n\tdefault \"38400\"\t\tif BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400\n\tdefault \"57600\"\t\tif BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600\n\tdefault \"115200\"\tif BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200\n\nconfig BR2_TARGET_GENERIC_GETTY_TERM\n\tstring \"TERM environment variable\"\n\tdefault \"vt100\"\n\t# currently observed by all but systemd\n\tdepends on !BR2_INIT_SYSTEMD\n\thelp\n\t  Specify a TERM type.\n\nconfig BR2_TARGET_GENERIC_GETTY_OPTIONS\n\tstring \"other options to pass to getty\"\n\tdefault \"\"\n\t# currently observed by all but systemd\n\tdepends on !BR2_INIT_SYSTEMD\n\thelp\n\t  Any other flags you want to pass to getty,\n\t  Refer to getty --help for details.\nendif\n\nconfig BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW\n\tbool \"remount root filesystem read-write during boot\"\n\tdefault y\n\thelp\n\t  The root filesystem is typically mounted read-only at boot.\n\t  By default, buildroot remounts it in read-write mode early\n\t  during the boot process.\n\t  Say no here if you would rather like your root filesystem to\n\t  remain read-only.\n\t  If unsure, say Y.\n\nconfig BR2_SYSTEM_DHCP\n\tstring \"Network interface to configure through DHCP\"\n\tdefault \"\"\n\tdepends on BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN || \\\n\t\tBR2_PACKAGE_SYSTEMD_NETWORKD || BR2_PACKAGE_NETIFRC\n\thelp\n\t  Enter here the name of the network interface (E.G. eth0) to\n\t  automatically configure through DHCP at bootup.\n\n\t  If left empty, no automatic DHCP requests will take place.\n\n\t  For more complicated network setups use an overlay to\n\t  overwrite /etc/network/interfaces or add a networkd\n\t  configuration file.\n\ncomment \"automatic network configuration via DHCP needs ifupdown or busybox or networkd or netifrc\"\n\tdepends on !(BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN || \\\n\t\tBR2_PACKAGE_SYSTEMD_NETWORKD || BR2_PACKAGE_NETIFRC)\n\nendif # BR2_ROOTFS_SKELETON_DEFAULT\n\nconfig BR2_SYSTEM_DEFAULT_PATH\n\tstring \"Set the system's default PATH\"\n\tdefault \"/usr/bin:/usr/sbin\" if BR2_ROOTFS_MERGED_USR\n\tdefault \"/bin:/sbin:/usr/bin:/usr/sbin\" if !BR2_ROOTFS_MERGED_USR\n\thelp\n\t  Sets the system's default PATH. It is being used in\n\t  /etc/profile in the skeleton-init-common package and by some\n\t  daemons.\n\n\t  The default should work in most cases.\n\nconfig BR2_ENABLE_LOCALE_PURGE\n\tbool \"Purge unwanted locales\"\n\tdefault y\n\thelp\n\t  Explicitly specify what locales to install on target. If N\n\t  then all locales supported by packages are installed.\n\nconfig BR2_ENABLE_LOCALE_WHITELIST\n\tstring \"Locales to keep\"\n\tdefault \"C en_US\"\n\tdepends on BR2_ENABLE_LOCALE_PURGE\n\thelp\n\t  Whitespace seperated list of locales to allow on target.\n\t  Locales not listed here will be removed from the target.\n\t  See 'locale -a' on your host for a list of locales available\n\t  on your build host, or have a look in /usr/share/locale in\n\t  the target file system for available locales.\n\n\t  Notice that listing a locale here doesn't guarantee that it\n\t  will be available on the target - That purely depends on the\n\t  support for that locale in the selected packages.\n\nconfig BR2_GENERATE_LOCALE\n\tstring \"Generate locale data\"\n\tdefault \"\"\n\tdepends on \\\n\t\t(BR2_TOOLCHAIN_BUILDROOT_UCLIBC && BR2_ENABLE_LOCALE) || \\\n\t\tBR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  Generate support for a list of locales. Locales can be\n\t  specified with or without encoding, when no encoding is\n\t  specified, UTF-8 is assumed. Examples of locales: en_US,\n\t  fr_FR.UTF-8.\n\nconfig BR2_SYSTEM_ENABLE_NLS\n\tbool \"Enable Native Language Support (NLS)\"\n\tdepends on BR2_USE_WCHAR\n\t#  - glibc has built-in NLS support, but anyway doesn't\n\t#    support static linking\n\t#  - musl and uclibc support static linking, but they don't\n\t#    have built-in NLS support, which is provided by the\n\t#    libintl library from gettext. The fact that it is a\n\t#    separate library causes too many problems for static\n\t#    linking.\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_PACKAGE_GETTEXT if !BR2_TOOLCHAIN_HAS_FULL_GETTEXT\n\thelp\n\t  This option will enable Native Language Support, which will\n\t  allow software packages to support translations.\n\ncomment \"NLS support needs a toolchain w/ wchar, dynamic library\"\n\tdepends on !BR2_USE_WCHAR || BR2_STATIC_LIBS\n\nconfig BR2_TARGET_TZ_INFO\n\tbool \"Install timezone info\"\n\tselect BR2_PACKAGE_TZDATA if BR2_TOOLCHAIN_USES_GLIBC\n\tselect BR2_PACKAGE_TZDATA if BR2_TOOLCHAIN_USES_MUSL\n\tselect BR2_PACKAGE_TZ if BR2_TOOLCHAIN_USES_UCLIBC\n\thelp\n\t  Say 'y' here to install timezone info.\n\nif BR2_TARGET_TZ_INFO\n\nconfig BR2_TARGET_TZ_ZONELIST\n\tstring \"timezone list\"\n\tdefault \"default\"\n\thelp\n\t  Space-separated list of time zones to compile.\n\n\t  The value \"default\" includes all commonly used time zones.\n\t  Note that this set consumes around 5.5M for glibc and 2.1M for\n\t  uClibc.\n\n\t  The full list is the list of files in the time zone database\n\t  source, not including the build and .tab files.\n\nconfig BR2_TARGET_LOCALTIME\n\tstring \"default local time\"\n\tdefault \"Etc/UTC\"\n\thelp\n\t  The time zone to install as the default local time, expressed\n\t  as a tzdata location, such as:\n\t    Etc/UTC             (the default)\n\t    GMT\n\t    Europe/Paris\n\t    America/New_York\n\t    Pacific/Wallis\n\t    ...\n\n\t  Set to empty to not install a default time zone.\n\nendif # BR2_TARGET_TZ_INFO\n\nconfig BR2_ROOTFS_USERS_TABLES\n\tstring \"Path to the users tables\"\n\thelp\n\t  Specify a space-separated list of users table locations,\n\t  that will be passed to the mkusers utility to create\n\t  users on the system, with home directory, password, etc.\n\n\t  See manual for details on the usage and syntax of these files.\n\nconfig BR2_ROOTFS_OVERLAY\n\tstring \"Root filesystem overlay directories\"\n\tdefault \"\"\n\thelp\n\t  Specify a list of directories that are copied over the target\n\t  root filesystem after the build has finished and before it is\n\t  packed into the selected filesystem images.\n\n\t  They are copied as-is into the rootfs, excluding files ending\n\t  with ~ and .git, .svn and .hg directories.\n\nconfig BR2_ROOTFS_POST_BUILD_SCRIPT\n\tstring \"Custom scripts to run before creating filesystem images\"\n\tdefault \"\"\n\thelp\n\t  Specify a space-separated list of scripts to be run after the\n\t  build has finished and before Buildroot starts packing the\n\t  files into selected filesystem images.\n\n\t  This gives users the opportunity to do board-specific\n\t  cleanups, add-ons and the like, so the generated files can be\n\t  used directly without further processing.\n\n\t  These scripts are called with the target directory name as\n\t  first argument. Make sure the exit code of those scripts are\n\t  0, otherwise make will stop after calling them.\n\nconfig BR2_ROOTFS_POST_FAKEROOT_SCRIPT\n\tstring \"Custom scripts to run inside the fakeroot environment\"\n\tdefault \"\"\n\thelp\n\t  Specify a space-separated list of scripts to be run at the end\n\t  of the fakeroot script right before the image(s) are actually\n\t  generated.\n\n\t  This gives users the opportunity to do customisations of the\n\t  content of the rootfs, which would otherwise require root\n\t  rights.\n\n\t  These scripts are called with the target directory name as\n\t  first argument. The build will fail on the first scripts that\n\t  exits with a non-zero exit code.\n\n\t  Note that Buildroot already provides mechanisms to customise\n\t  the content of the rootfs:\n\n\t    - BR2_ROOTFS_STATIC_DEVICE_TABLE\n\t        to create arbitrary entries statically in /dev\n\n\t    - BR2_ROOTFS_DEVICE_TABLE\n\t        to set arbitrary permissions as well as extended\n\t        attributes (such as capabilities) on files and\n\t        directories,\n\n\t    - BR2_ROOTFS_USERS_TABLES:\n\t        to create arbitrary users and their home directories\n\n\t  It is highly recommended to use those mechanisms if possible,\n\t  rather than using custom fakeroot scripts.\n\nconfig BR2_ROOTFS_POST_IMAGE_SCRIPT\n\tstring \"Custom scripts to run after creating filesystem images\"\n\tdefault \"\"\n\thelp\n\t  Specify a space-separated list of scripts to be run after\n\t  the build has finished and after Buildroot has packed the\n\t  files into selected filesystem images.\n\n\t  This can for example be used to call a tool building a\n\t  firmware image from different images generated by Buildroot,\n\t  or automatically extract the tarball root filesystem image\n\t  into some location exported by NFS, or any other custom\n\t  action.\n\n\t  These scripts are called with the images directory name as\n\t  first argument. The script is executed from the main Buildroot\n\t  source directory as the current directory.\n\nconfig BR2_ROOTFS_POST_SCRIPT_ARGS\n\tstring \"Extra arguments passed to custom scripts\"\n\tdepends on BR2_ROOTFS_POST_BUILD_SCRIPT != \"\" \\\n\t\t|| BR2_ROOTFS_POST_FAKEROOT_SCRIPT != \"\" \\\n\t\t|| BR2_ROOTFS_POST_IMAGE_SCRIPT != \"\"\n\thelp\n\t  Pass these additional arguments to each post-build or\n\t  post-image scripts.\n\n\t  Note that all the post-build and post-image scripts will be\n\t  passed the same set of arguments, you can not pass different\n\t  arguments to each script.\n\n\t  Note also, as stated in their respective help text, that the\n\t  first argument to each post-build or post-image script is the\n\t  target directory / images directory. The arguments in this\n\t  option will be passed *after* those.\n\nendmenu\n"
  },
  {
    "path": "system/device_table.txt",
    "content": "# See package/makedevs/README for details\n#\n# This device table is used to assign proper ownership and permissions\n# on various files. It doesn't create any device file, as it is used\n# in both static device configurations (where /dev/ is static) and in\n# dynamic configurations (where devtmpfs, mdev or udev are used).\n#\n# <name>\t\t\t\t<type>\t<mode>\t<uid>\t<gid>\t<major>\t<minor>\t<start>\t<inc>\t<count>\n/dev\t\t\t\t\td\t755\t0\t0\t-\t-\t-\t-\t-\n/tmp\t\t\t\t\td\t1777\t0\t0\t-\t-\t-\t-\t-\n/etc\t\t\t\t\td\t755\t0\t0\t-\t-\t-\t-\t-\n/root\t\t\t\t\td\t700\t0\t0\t-\t-\t-\t-\t-\n/var/www\t\t\t\td\t755\t33\t33\t-\t-\t-\t-\t-\n/etc/passwd\t\t\t\tf\t644\t0\t0\t-\t-\t-\t-\t-\n/etc/network/if-up.d\t\t\td\t755\t0\t0\t-\t-\t-\t-\t-\n/etc/network/if-pre-up.d\t\td\t755\t0\t0\t-\t-\t-\t-\t-\n/etc/network/if-down.d\t\t\td\t755\t0\t0\t-\t-\t-\t-\t-\n/etc/network/if-post-down.d\t\td\t755\t0\t0\t-\t-\t-\t-\t-\n# uncomment this to allow starting x as non-root\n#/usr/X11R6/bin/Xfbdev\t\t     \tf\t4755\t0\t0\t-\t-\t-\t-\t-\n"
  },
  {
    "path": "system/device_table_dev.txt",
    "content": "# See package/makedevs/README for details\n#\n# This device table is used only to create device files when a static\n# device configuration is used (entries in /dev are static).\n#\n# <name>\t<type>\t<mode>\t<uid>\t<gid>\t<major>\t<minor>\t<start>\t<inc>\t<count>\n\n# Normal system devices\n/dev/mem\tc\t640\t0\t0\t1\t1\t0\t0\t-\n/dev/kmem\tc\t640\t0\t0\t1\t2\t0\t0\t-\n/dev/null\tc\t666\t0\t0\t1\t3\t0\t0\t-\n/dev/zero\tc\t666\t0\t0\t1\t5\t0\t0\t-\n/dev/random\tc\t666\t0\t0\t1\t8\t0\t0\t-\n/dev/urandom\tc\t666\t0\t0\t1\t9\t0\t0\t-\n/dev/ram\tb\t640\t0\t0\t1\t1\t0\t0\t-\n/dev/ram\tb\t640\t0\t0\t1\t0\t0\t1\t4\n/dev/loop\tb\t640\t0\t0\t7\t0\t0\t1\t2\n/dev/rtc\tc\t640\t0\t0\t10\t135\t-\t-\t-\n/dev/console\tc\t666\t0\t0\t5\t1\t-\t-\t-\n/dev/tty\tc\t666\t0\t0\t5\t0\t-\t-\t-\n/dev/tty\tc\t666\t0\t0\t4\t0\t0\t1\t8\n/dev/ttyp\tc\t666\t0\t0\t3\t0\t0\t1\t10\n/dev/ptyp\tc       666     0       0       2       0       0       1       10\n/dev/ptmx\tc\t666\t0\t0\t5\t2\t-\t-\t-\n/dev/ttyP\tc\t666\t0\t0\t57\t0\t0\t1\t4\n/dev/ttyS\tc\t666\t0\t0\t4\t64\t0\t1\t4\n/dev/fb\t\tc\t640\t0\t5\t29\t0\t0\t1\t4\n#/dev/ttySA\tc\t666\t0\t0\t204\t5\t0\t1\t3\n/dev/psaux\tc\t666\t0\t0\t10\t1\t0\t0\t-\n#/dev/ppp\tc\t666\t0\t0\t108\t0\t-\t-\t-\n/dev/ttyAM\tc\t666\t0\t0\t204\t16\t0\t1\t3\n/dev/ttyCPM\tc\t666\t0\t0\t204\t46\t0\t1\t4\n/dev/ttyAMA\tc\t666\t0\t0\t204\t64\t0\t1\t4\n/dev/ttyBF\tc\t666\t0\t0\t204\t64\t0\t1\t2\n/dev/ttySAC\tc\t666\t0\t0\t204\t64\t0\t1\t4\n/dev/ttySC\tc\t666\t0\t0\t204\t8\t0\t1\t8\n/dev/ttyPSC\tc\t666\t0\t0\t204\t148\t0\t1\t4\n/dev/ttyUL\tc\t666\t0\t0\t204\t187\t0\t1\t4\n/dev/ttymxc\tc\t666\t0\t0\t207\t16\t0\t1\t4\n/dev/hvc\tc\t640\t0\t0\t229\t0\t0\t1\t4\n\n# Input stuff\n/dev/input\t\td\t755\t0\t0\t-\t-\t-\t-\t-\n/dev/input/mice\t\tc\t640\t0\t0\t13\t63\t0\t0\t-\n/dev/input/mouse\tc\t660\t0\t0\t13\t32\t0\t1\t4\n/dev/input/event\tc\t660\t0\t0\t13\t64\t0\t1\t4\n#/dev/input/js\t\tc\t660\t0\t0\t13\t0\t0\t1\t4\n\n\n# MTD stuff\n/dev/mtd\tc\t640\t0\t0\t90\t0\t0\t2\t4\n/dev/mtdblock\tb\t640\t0\t0\t31\t0\t0\t1\t4\n\n#Tun/tap driver\n/dev/net\td\t755\t0\t0\t-\t-\t-\t-\t-\n/dev/net/tun\tc\t660\t0\t0\t10\t200\t-\t-\t-\n\n# Audio stuff\n#/dev/audio\tc\t666\t0\t29\t14\t4\t-\t-\t-\n#/dev/audio1\tc\t666\t0\t29\t14\t20\t-\t-\t-\n#/dev/dsp\tc\t666\t0\t29\t14\t3\t-\t-\t-\n#/dev/dsp1\tc\t666\t0\t29\t14\t19\t-\t-\t-\n#/dev/sndstat\tc\t666\t0\t29\t14\t6\t-\t-\t-\n\n# User-mode Linux stuff\n#/dev/ubda\tb\t640\t0\t0\t98\t0\t0\t0\t-\n#/dev/ubda\tb\t640\t0\t0\t98\t1\t1\t1\t15\n\n# IDE Devices\n/dev/hda\tb\t640\t0\t0\t3\t0\t0\t0\t-\n/dev/hda\tb\t640\t0\t0\t3\t1\t1\t1\t15\n/dev/hdb\tb\t640\t0\t0\t3\t64\t0\t0\t-\n/dev/hdb\tb\t640\t0\t0\t3\t65\t1\t1\t15\n#/dev/hdc\tb\t640\t0\t0\t22\t0\t0\t0\t-\n#/dev/hdc\tb\t640\t0\t0\t22\t1\t1\t1\t15\n#/dev/hdd\tb\t640\t0\t0\t22\t64\t0\t0\t-\n#/dev/hdd\tb\t640\t0\t0\t22\t65\t1\t1\t15\n#/dev/hde\tb\t640\t0\t0\t33\t0\t0\t0\t-\n#/dev/hde\tb\t640\t0\t0\t33\t1\t1\t1\t15\n#/dev/hdf\tb\t640\t0\t0\t33\t64\t0\t0\t-\n#/dev/hdf\tb\t640\t0\t0\t33\t65\t1\t1\t15\n#/dev/hdg\tb\t640\t0\t0\t34\t0\t0\t0\t-\n#/dev/hdg\tb\t640\t0\t0\t34\t1\t1\t1\t15\n#/dev/hdh\tb\t640\t0\t0\t34\t64\t0\t0\t-\n#/dev/hdh\tb\t640\t0\t0\t34\t65\t1\t1\t15\n\n# SCSI Devices\n/dev/sda\tb\t640\t0\t0\t8\t0\t0\t0\t-\n/dev/sda\tb\t640\t0\t0\t8\t1\t1\t1\t15\n/dev/sdb\tb\t640\t0\t0\t8\t16\t0\t0\t-\n/dev/sdb\tb\t640\t0\t0\t8\t17\t1\t1\t15\n#/dev/sdc\tb\t640\t0\t0\t8\t32\t0\t0\t-\n#/dev/sdc\tb\t640\t0\t0\t8\t33\t1\t1\t15\n#/dev/sdd\tb\t640\t0\t0\t8\t48\t0\t0\t-\n#/dev/sdd\tb\t640\t0\t0\t8\t49\t1\t1\t15\n#/dev/sde\tb\t640\t0\t0\t8\t64\t0\t0\t-\n#/dev/sde\tb\t640\t0\t0\t8\t65\t1\t1\t15\n#/dev/sdf\tb\t640\t0\t0\t8\t80\t0\t0\t-\n#/dev/sdf\tb\t640\t0\t0\t8\t81\t1\t1\t15\n#/dev/sdg\tb\t640\t0\t0\t8\t96\t0\t0\t-\n#/dev/sdg\tb\t640\t0\t0\t8\t97\t1\t1\t15\n#/dev/sdh\tb\t640\t0\t0\t8\t112\t0\t0\t-\n#/dev/sdh\tb\t640\t0\t0\t8\t113\t1\t1\t15\n#/dev/sg\tc\t640\t0\t0\t21\t0\t0\t1\t15\n#/dev/scd\tb\t640\t0\t0\t11\t0\t0\t1\t15\n#/dev/st\tc\t640\t0\t0\t9\t0\t0\t1\t8\n#/dev/nst\tc\t640\t0\t0\t9\t128\t0\t1\t8\n#/dev/st\tc\t640\t0\t0\t9\t32\t1\t1\t4\n#/dev/st\tc\t640\t0\t0\t9\t64\t1\t1\t4\n#/dev/st\tc\t640\t0\t0\t9\t96\t1\t1\t4\n\n# USB block devices (ub driver)\n/dev/uba\tb\t640\t0\t0\t180\t0\t0\t0\t-\n/dev/uba\tb\t640\t0\t0\t180\t1\t1\t1\t6\n/dev/ubb\tb\t640\t0\t0\t180\t8\t0\t0\t-\n/dev/ubb\tb\t640\t0\t0\t180\t65\t1\t1\t6\n\n# Floppy disk devices\n#/dev/fd\tb\t640\t0\t0\t2\t0\t0\t1\t2\n#/dev/fd0d360\tb\t640\t0\t0\t2\t4\t0\t0\t-\n#/dev/fd1d360\tb\t640\t0\t0\t2\t5\t0\t0\t-\n#/dev/fd0h1200\tb\t640\t0\t0\t2\t8\t0\t0\t-\n#/dev/fd1h1200\tb\t640\t0\t0\t2\t9\t0\t0\t-\n#/dev/fd0u1440\tb\t640\t0\t0\t2\t28\t0\t0\t-\n#/dev/fd1u1440\tb\t640\t0\t0\t2\t29\t0\t0\t-\n#/dev/fd0u2880\tb\t640\t0\t0\t2\t32\t0\t0\t-\n#/dev/fd1u2880\tb\t640\t0\t0\t2\t33\t0\t0\t-\n\n# I2C device nodes\n/dev/i2c-\tc\t666\t0\t0\t89\t0\t0\t1\t4\n\n# v4l device nodes\n/dev/video\tc\t666\t0\t0\t81\t0\t0\t1\t4\n"
  },
  {
    "path": "system/skeleton/dev/.empty",
    "content": ""
  },
  {
    "path": "system/skeleton/etc/group",
    "content": "root:x:0:\ndaemon:x:1:\nbin:x:2:\nsys:x:3:\nadm:x:4:\ntty:x:5:\ndisk:x:6:\nlp:x:7:\nmail:x:8:\nkmem:x:9:\nwheel:x:10:root\ncdrom:x:11:\ndialout:x:18:\nfloppy:x:19:\nvideo:x:28:\naudio:x:29:\ntape:x:32:\nwww-data:x:33:\noperator:x:37:\nutmp:x:43:\nplugdev:x:46:\nstaff:x:50:\nlock:x:54:\nnetdev:x:82:\nusers:x:100:\nnobody:x:65534:\n"
  },
  {
    "path": "system/skeleton/etc/hosts",
    "content": "127.0.0.1\tlocalhost\n"
  },
  {
    "path": "system/skeleton/etc/passwd",
    "content": "root:x:0:0:root:/root:/bin/sh\ndaemon:x:1:1:daemon:/usr/sbin:/bin/false\nbin:x:2:2:bin:/bin:/bin/false\nsys:x:3:3:sys:/dev:/bin/false\nsync:x:4:100:sync:/bin:/bin/sync\nmail:x:8:8:mail:/var/spool/mail:/bin/false\nwww-data:x:33:33:www-data:/var/www:/bin/false\noperator:x:37:37:Operator:/var:/bin/false\nnobody:x:65534:65534:nobody:/home:/bin/false\n"
  },
  {
    "path": "system/skeleton/etc/profile",
    "content": "export PATH=@PATH@\n\nif [ \"$PS1\" ]; then\n\tif [ \"`id -u`\" -eq 0 ]; then\n\t\texport PS1='# '\n\telse\n\t\texport PS1='$ '\n\tfi\nfi\n\nexport EDITOR='/bin/vi'\n\n# Source configuration files from /etc/profile.d\nfor i in /etc/profile.d/*.sh ; do\n\tif [ -r \"$i\" ]; then\n\t\t. $i\n\tfi\ndone\nunset i\n"
  },
  {
    "path": "system/skeleton/etc/profile.d/umask.sh",
    "content": "umask 022\n"
  },
  {
    "path": "system/skeleton/etc/protocols",
    "content": "# Internet (IP) protocols\n#\n# Updated from http://www.iana.org/assignments/protocol-numbers and other\n# sources.\n\nip\t0\tIP\t\t# internet protocol, pseudo protocol number\nhopopt\t0\tHOPOPT\t\t# IPv6 Hop-by-Hop Option [RFC1883]\nicmp\t1\tICMP\t\t# internet control message protocol\nigmp\t2\tIGMP\t\t# Internet Group Management\nggp\t3\tGGP\t\t# gateway-gateway protocol\nipencap\t4\tIP-ENCAP\t# IP encapsulated in IP (officially ``IP'')\nst\t5\tST\t\t# ST datagram mode\ntcp\t6\tTCP\t\t# transmission control protocol\negp\t8\tEGP\t\t# exterior gateway protocol\nigp\t9\tIGP\t\t# any private interior gateway (Cisco)\npup\t12\tPUP\t\t# PARC universal packet protocol\nudp\t17\tUDP\t\t# user datagram protocol\nhmp\t20\tHMP\t\t# host monitoring protocol\nxns-idp\t22\tXNS-IDP\t\t# Xerox NS IDP\nrdp\t27\tRDP\t\t# \"reliable datagram\" protocol\niso-tp4\t29\tISO-TP4\t\t# ISO Transport Protocol class 4 [RFC905]\ndccp\t33\tDCCP\t\t# Datagram Congestion Control Prot. [RFC4340]\nxtp\t36\tXTP\t\t# Xpress Transfer Protocol\nddp\t37\tDDP\t\t# Datagram Delivery Protocol\nidpr-cmtp 38\tIDPR-CMTP\t# IDPR Control Message Transport\nipv6\t41\tIPv6\t\t# Internet Protocol, version 6\nipv6-route 43\tIPv6-Route\t# Routing Header for IPv6\nipv6-frag 44\tIPv6-Frag\t# Fragment Header for IPv6\nidrp\t45\tIDRP\t\t# Inter-Domain Routing Protocol\nrsvp\t46\tRSVP\t\t# Reservation Protocol\ngre\t47\tGRE\t\t# General Routing Encapsulation\nesp\t50\tIPSEC-ESP\t# Encap Security Payload [RFC2406]\nah\t51\tIPSEC-AH\t# Authentication Header [RFC2402]\nskip\t57\tSKIP\t\t# SKIP\nipv6-icmp 58\tIPv6-ICMP\t# ICMP for IPv6\nipv6-nonxt 59\tIPv6-NoNxt\t# No Next Header for IPv6\nipv6-opts 60\tIPv6-Opts\t# Destination Options for IPv6\nrspf\t73\tRSPF CPHB\t# Radio Shortest Path First (officially CPHB)\nvmtp\t81\tVMTP\t\t# Versatile Message Transport\neigrp\t88\tEIGRP\t\t# Enhanced Interior Routing Protocol (Cisco)\nospf\t89\tOSPFIGP\t\t# Open Shortest Path First IGP\nax.25\t93\tAX.25\t\t# AX.25 frames\nipip\t94\tIPIP\t\t# IP-within-IP Encapsulation Protocol\netherip\t97\tETHERIP\t\t# Ethernet-within-IP Encapsulation [RFC3378]\nencap\t98\tENCAP\t\t# Yet Another IP encapsulation [RFC1241]\n#\t99\t\t\t# any private encryption scheme\npim\t103\tPIM\t\t# Protocol Independent Multicast\nipcomp\t108\tIPCOMP\t\t# IP Payload Compression Protocol\nvrrp\t112\tVRRP\t\t# Virtual Router Redundancy Protocol [RFC5798]\nl2tp\t115\tL2TP\t\t# Layer Two Tunneling Protocol [RFC2661]\nisis\t124\tISIS\t\t# IS-IS over IPv4\nsctp\t132\tSCTP\t\t# Stream Control Transmission Protocol\nfc\t133\tFC\t\t# Fibre Channel\nmobility-header 135 Mobility-Header # Mobility Support for IPv6 [RFC3775]\nudplite\t136\tUDPLite\t\t# UDP-Lite [RFC3828]\nmpls-in-ip 137\tMPLS-in-IP\t# MPLS-in-IP [RFC4023]\nmanet\t138\t\t\t# MANET Protocols [RFC5498]\nhip\t139\tHIP\t\t# Host Identity Protocol\nshim6\t140\tShim6\t\t# Shim6 Protocol [RFC5533]\nwesp\t141\tWESP\t\t# Wrapped Encapsulating Security Payload\nrohc\t142\tROHC\t\t# Robust Header Compression\n"
  },
  {
    "path": "system/skeleton/etc/services",
    "content": "# /etc/services:\n# $Id: services,v 1.1 2004/10/09 02:49:18 andersen Exp $\n#\n# Network services, Internet style\n#\n# Note that it is presently the policy of IANA to assign a single well-known\n# port number for both TCP and UDP; hence, most entries here have two entries\n# even if the protocol doesn't support UDP operations.\n# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports\n# are included, only the more common ones.\n\ntcpmux\t\t1/tcp\t\t\t\t# TCP port service multiplexer\necho\t\t7/tcp\necho\t\t7/udp\ndiscard\t\t9/tcp\t\tsink null\ndiscard\t\t9/udp\t\tsink null\nsystat\t\t11/tcp\t\tusers\ndaytime\t\t13/tcp\ndaytime\t\t13/udp\nnetstat\t\t15/tcp\nqotd\t\t17/tcp\t\tquote\nmsp\t\t18/tcp\t\t\t\t# message send protocol\nmsp\t\t18/udp\t\t\t\t# message send protocol\nchargen\t\t19/tcp\t\tttytst source\nchargen\t\t19/udp\t\tttytst source\nftp-data\t20/tcp\nftp\t\t21/tcp\nfsp\t\t21/udp\t\tfspd\nssh\t\t22/tcp\t\t\t\t# SSH Remote Login Protocol\nssh\t\t22/udp\t\t\t\t# SSH Remote Login Protocol\ntelnet\t\t23/tcp\n# 24 - private\nsmtp\t\t25/tcp\t\tmail\n# 26 - unassigned\ntime\t\t37/tcp\t\ttimserver\ntime\t\t37/udp\t\ttimserver\nrlp\t\t39/udp\t\tresource\t# resource location\nnameserver\t42/tcp\t\tname\t\t# IEN 116\nwhois\t\t43/tcp\t\tnicname\nre-mail-ck\t50/tcp\t\t\t\t# Remote Mail Checking Protocol\nre-mail-ck\t50/udp\t\t\t\t# Remote Mail Checking Protocol\ndomain\t\t53/tcp\t\tnameserver\t# name-domain server\ndomain\t\t53/udp\t\tnameserver\nmtp\t\t57/tcp\t\t\t\t# deprecated\nbootps\t\t67/tcp\t\t\t\t# BOOTP server\nbootps\t\t67/udp\nbootpc\t\t68/tcp\t\t\t\t# BOOTP client\nbootpc\t\t68/udp\ntftp\t\t69/udp\ngopher\t\t70/tcp\t\t\t\t# Internet Gopher\ngopher\t\t70/udp\nrje\t\t77/tcp\t\tnetrjs\nfinger\t\t79/tcp\nwww\t\t80/tcp\t\thttp\t\t# WorldWideWeb HTTP\nwww\t\t80/udp\t\t\t\t# HyperText Transfer Protocol\nlink\t\t87/tcp\t\tttylink\nkerberos\t88/tcp\t\tkerberos5 krb5\t# Kerberos v5\nkerberos\t88/udp\t\tkerberos5 krb5\t# Kerberos v5\nsupdup\t\t95/tcp\n# 100 - reserved\nhostnames\t101/tcp\t\thostname\t# usually from sri-nic\niso-tsap\t102/tcp\t\ttsap\t\t# part of ISODE.\ncsnet-ns\t105/tcp\t\tcso-ns\t\t# also used by CSO name server\ncsnet-ns\t105/udp\t\tcso-ns\n# unfortunately the poppassd (Eudora) uses a port which has already\n# been assigned to a different service. We list the poppassd as an\n# alias here. This should work for programs asking for this service.\n# (due to a bug in inetd the 3com-tsmux line is disabled)\n#3com-tsmux\t106/tcp\t\tpoppassd\n#3com-tsmux\t106/udp\t\tpoppassd\nrtelnet\t\t107/tcp\t\t\t\t# Remote Telnet\nrtelnet\t\t107/udp\npop-2\t\t109/tcp\t\tpostoffice\t# POP version 2\npop-2\t\t109/udp\npop-3\t\t110/tcp\t\t\t\t# POP version 3\npop-3\t\t110/udp\nsunrpc\t\t111/tcp\t\tportmapper\t# RPC 4.0 portmapper TCP\nsunrpc\t\t111/udp\t\tportmapper\t# RPC 4.0 portmapper UDP\nauth\t\t113/tcp\t\tauthentication tap ident\nsftp\t\t115/tcp\nuucp-path\t117/tcp\nnntp\t\t119/tcp\t\treadnews untp\t# USENET News Transfer Protocol\nntp\t\t123/tcp\nntp\t\t123/udp\t\t\t\t# Network Time Protocol\nnetbios-ns\t137/tcp\t\t\t\t# NETBIOS Name Service\nnetbios-ns\t137/udp\nnetbios-dgm\t138/tcp\t\t\t\t# NETBIOS Datagram Service\nnetbios-dgm\t138/udp\nnetbios-ssn\t139/tcp\t\t\t\t# NETBIOS session service\nnetbios-ssn\t139/udp\nimap2\t\t143/tcp\t\t\t\t# Interim Mail Access Proto v2\nimap2\t\t143/udp\nsnmp\t\t161/udp\t\t\t\t# Simple Net Mgmt Proto\nsnmp-trap\t162/udp\t\tsnmptrap\t# Traps for SNMP\ncmip-man\t163/tcp\t\t\t\t# ISO mgmt over IP (CMOT)\ncmip-man\t163/udp\ncmip-agent\t164/tcp\ncmip-agent\t164/udp\nxdmcp\t\t177/tcp\t\t\t\t# X Display Mgr. Control Proto\nxdmcp\t\t177/udp\nnextstep\t178/tcp\t\tNeXTStep NextStep\t# NeXTStep window\nnextstep\t178/udp\t\tNeXTStep NextStep\t# server\nbgp\t\t179/tcp\t\t\t\t# Border Gateway Proto.\nbgp\t\t179/udp\nprospero\t191/tcp\t\t\t\t# Cliff Neuman's Prospero\nprospero\t191/udp\nirc\t\t194/tcp\t\t\t\t# Internet Relay Chat\nirc\t\t194/udp\nsmux\t\t199/tcp\t\t\t\t# SNMP Unix Multiplexer\nsmux\t\t199/udp\nat-rtmp\t\t201/tcp\t\t\t\t# AppleTalk routing\nat-rtmp\t\t201/udp\nat-nbp\t\t202/tcp\t\t\t\t# AppleTalk name binding\nat-nbp\t\t202/udp\nat-echo\t\t204/tcp\t\t\t\t# AppleTalk echo\nat-echo\t\t204/udp\nat-zis\t\t206/tcp\t\t\t\t# AppleTalk zone information\nat-zis\t\t206/udp\nqmtp\t\t209/tcp\t\t\t\t# The Quick Mail Transfer Protocol\nqmtp\t\t209/udp\t\t\t\t# The Quick Mail Transfer Protocol\nz3950\t\t210/tcp\t\twais\t\t# NISO Z39.50 database\nz3950\t\t210/udp\t\twais\nipx\t\t213/tcp\t\t\t\t# IPX\nipx\t\t213/udp\nimap3\t\t220/tcp\t\t\t\t# Interactive Mail Access\nimap3\t\t220/udp\t\t\t\t# Protocol v3\nulistserv\t372/tcp\t\t\t\t# UNIX Listserv\nulistserv\t372/udp\nhttps\t\t443/tcp\t\t\t\t# MCom\nhttps\t\t443/udp\t\t\t\t# MCom\nsnpp\t\t444/tcp\t\t\t\t# Simple Network Paging Protocol\nsnpp\t\t444/udp\t\t\t\t# Simple Network Paging Protocol\nsaft\t\t487/tcp\t\t\t\t# Simple Asynchronous File Transfer\nsaft\t\t487/udp\t\t\t\t# Simple Asynchronous File Transfer\nnpmp-local\t610/tcp\t\tdqs313_qmaster\t# npmp-local / DQS\nnpmp-local\t610/udp\t\tdqs313_qmaster\t# npmp-local / DQS\nnpmp-gui\t611/tcp\t\tdqs313_execd\t# npmp-gui / DQS\nnpmp-gui\t611/udp\t\tdqs313_execd\t# npmp-gui / DQS\nhmmp-ind\t612/tcp\t\tdqs313_intercell# HMMP Indication / DQS\nhmmp-ind\t612/udp\t\tdqs313_intercell# HMMP Indication / DQS\n#\n# UNIX specific services\n#\nexec\t\t512/tcp\nbiff\t\t512/udp\t\tcomsat\nlogin\t\t513/tcp\nwho\t\t513/udp\t\twhod\nshell\t\t514/tcp\t\tcmd\t\t# no passwords used\nsyslog\t\t514/udp\nprinter\t\t515/tcp\t\tspooler\t\t# line printer spooler\ntalk\t\t517/udp\nntalk\t\t518/udp\nroute\t\t520/udp\t\trouter routed\t# RIP\ntimed\t\t525/udp\t\ttimeserver\ntempo\t\t526/tcp\t\tnewdate\ncourier\t\t530/tcp\t\trpc\nconference\t531/tcp\t\tchat\nnetnews\t\t532/tcp\t\treadnews\nnetwall\t\t533/udp\t\t\t\t# -for emergency broadcasts\nuucp\t\t540/tcp\t\tuucpd\t\t# uucp daemon\nafpovertcp\t548/tcp\t\t\t\t# AFP over TCP\nafpovertcp\t548/udp\t\t\t\t# AFP over TCP\nremotefs\t556/tcp\t\trfs_server rfs\t# Brunhoff remote filesystem\nklogin\t\t543/tcp\t\t\t\t# Kerberized `rlogin' (v5)\nkshell\t\t544/tcp\t\tkrcmd\t\t# Kerberized `rsh' (v5)\nkerberos-adm\t749/tcp\t\t\t\t# Kerberos `kadmin' (v5)\n#\nwebster\t\t765/tcp\t\t\t\t# Network dictionary\nwebster\t\t765/udp\n#\n# From ``Assigned Numbers'':\n#\n#> The Registered Ports are not controlled by the IANA and on most systems\n#> can be used by ordinary user processes or programs executed by ordinary\n#> users.\n#\n#> Ports are used in the TCP [45,106] to name the ends of logical\n#> connections which carry long term conversations.  For the purpose of\n#> providing services to unknown callers, a service contact port is\n#> defined.  This list specifies the port used by the server process as its\n#> contact port.  While the IANA can not control uses of these ports it\n#> does register or list uses of these ports as a convienence to the\n#> community.\n#\nnfsdstatus\t1110/tcp\nnfsd-keepalive\t1110/udp\n\ningreslock\t1524/tcp\ningreslock\t1524/udp\nprospero-np\t1525/tcp\t\t\t# Prospero non-privileged\nprospero-np\t1525/udp\ndatametrics\t1645/tcp\told-radius\t# datametrics / old radius entry\ndatametrics\t1645/udp\told-radius\t# datametrics / old radius entry\nsa-msg-port\t1646/tcp\told-radacct\t# sa-msg-port / old radacct entry\nsa-msg-port\t1646/udp\told-radacct\t# sa-msg-port / old radacct entry\nradius\t\t1812/tcp\t\t\t# Radius\nradius\t\t1812/udp\t\t\t# Radius\nradacct\t\t1813/tcp\t\t\t# Radius Accounting\nradacct\t\t1813/udp\t\t\t# Radius Accounting\nnfsd\t\t2049/tcp\tnfs\nnfsd\t\t2049/udp\tnfs\ncvspserver\t2401/tcp\t\t\t# CVS client/server operations\ncvspserver\t2401/udp\t\t\t# CVS client/server operations\nmysql\t\t3306/tcp\t\t\t# MySQL\nmysql\t\t3306/udp\t\t\t# MySQL\nrfe\t\t5002/tcp\t\t\t# Radio Free Ethernet\nrfe\t\t5002/udp\t\t\t# Actually uses UDP only\ncfengine\t5308/tcp\t\t\t# CFengine\ncfengine\t5308/udp\t\t\t# CFengine\nbbs\t\t7000/tcp\t\t\t# BBS service\n#\n#\n# Kerberos (Project Athena/MIT) services\n# Note that these are for Kerberos v4, and are unofficial.  Sites running\n# v4 should uncomment these and comment out the v5 entries above.\n#\nkerberos4\t750/udp\t\tkerberos-iv kdc\t# Kerberos (server) udp\nkerberos4\t750/tcp\t\tkerberos-iv kdc\t# Kerberos (server) tcp\nkerberos_master\t751/udp\t\t\t\t# Kerberos authentication\nkerberos_master\t751/tcp\t\t\t\t# Kerberos authentication\npasswd_server\t752/udp\t\t\t\t# Kerberos passwd server\nkrb_prop\t754/tcp\t\t\t\t# Kerberos slave propagation\nkrbupdate\t760/tcp\t\tkreg\t\t# Kerberos registration\nkpasswd\t\t761/tcp\t\tkpwd\t\t# Kerberos \"passwd\"\nkpop\t\t1109/tcp\t\t\t# Pop with Kerberos\nknetd\t\t2053/tcp\t\t\t# Kerberos de-multiplexor\nzephyr-srv\t2102/udp\t\t\t# Zephyr server\nzephyr-clt\t2103/udp\t\t\t# Zephyr serv-hm connection\nzephyr-hm\t2104/udp\t\t\t# Zephyr hostmanager\neklogin\t\t2105/tcp\t\t\t# Kerberos encrypted rlogin\n#\n# Unofficial but necessary (for NetBSD) services\n#\nsupfilesrv\t871/tcp\t\t\t\t# SUP server\nsupfiledbg\t1127/tcp\t\t\t# SUP debugging\n#\n# Datagram Delivery Protocol services\n#\nrtmp\t\t1/ddp\t\t\t\t# Routing Table Maintenance Protocol\nnbp\t\t2/ddp\t\t\t\t# Name Binding Protocol\necho\t\t4/ddp\t\t\t\t# AppleTalk Echo Protocol\nzip\t\t6/ddp\t\t\t\t# Zone Information Protocol\n#\n# Services added for the Debian GNU/Linux distribution\npoppassd\t106/tcp\t\t\t\t# Eudora\npoppassd\t106/udp\t\t\t\t# Eudora\nmailq\t\t174/tcp\t\t\t\t# Mailer transport queue for Zmailer\nmailq\t\t174/tcp\t\t\t\t# Mailer transport queue for Zmailer\nomirr\t\t808/tcp\t\tomirrd\t\t# online mirror\nomirr\t\t808/udp\t\tomirrd\t\t# online mirror\nrmtcfg\t\t1236/tcp\t\t\t# Gracilis Packeten remote config server\nxtel\t\t1313/tcp\t\t\t# french minitel\ncoda_opcons\t1355/udp\t\t\t# Coda opcons            (Coda fs)\ncoda_venus\t1363/udp\t\t\t# Coda venus             (Coda fs)\ncoda_auth\t1357/udp\t\t\t# Coda auth              (Coda fs)\ncoda_udpsrv\t1359/udp\t\t\t# Coda udpsrv            (Coda fs)\ncoda_filesrv\t1361/udp\t\t\t# Coda filesrv           (Coda fs)\ncodacon\t\t1423/tcp\tvenus.cmu\t# Coda Console           (Coda fs)\ncoda_aux1\t1431/tcp\t\t\t# coda auxiliary service (Coda fs)\ncoda_aux1\t1431/udp\t\t\t# coda auxiliary service (Coda fs)\ncoda_aux2\t1433/tcp\t\t\t# coda auxiliary service (Coda fs)\ncoda_aux2\t1433/udp\t\t\t# coda auxiliary service (Coda fs)\ncoda_aux3\t1435/tcp\t\t\t# coda auxiliary service (Coda fs)\ncoda_aux3\t1435/udp\t\t\t# coda auxiliary service (Coda fs)\ncfinger\t\t2003/tcp\t\t\t# GNU Finger\nafbackup\t2988/tcp\t\t\t# Afbackup system\nafbackup\t2988/udp\t\t\t# Afbackup system\nicp\t\t3130/tcp\t\t\t# Internet Cache Protocol (Squid)\nicp\t\t3130/udp\t\t\t# Internet Cache Protocol (Squid)\npostgres\t5432/tcp\t\t\t# POSTGRES\npostgres\t5432/udp\t\t\t# POSTGRES\nfax\t\t4557/tcp\t\t\t# FAX transmission service        (old)\nhylafax\t\t4559/tcp\t\t\t# HylaFAX client-server protocol  (new)\nnoclog\t\t5354/tcp\t\t\t# noclogd with TCP (nocol)\nnoclog\t\t5354/udp\t\t\t# noclogd with UDP (nocol)\nhostmon\t\t5355/tcp\t\t\t# hostmon uses TCP (nocol)\nhostmon\t\t5355/udp\t\t\t# hostmon uses TCP (nocol)\nircd\t\t6667/tcp\t\t\t# Internet Relay Chat\nircd\t\t6667/udp\t\t\t# Internet Relay Chat\nwebcache\t8080/tcp\t\t\t# WWW caching service\nwebcache\t8080/udp\t\t\t# WWW caching service\ntproxy\t\t8081/tcp\t\t\t# Transparent Proxy\ntproxy\t\t8081/udp\t\t\t# Transparent Proxy\nmandelspawn\t9359/udp\tmandelbrot\t# network mandelbrot\namanda\t\t10080/udp\t\t\t# amanda backup services\namandaidx\t10082/tcp\t\t\t# amanda backup services\namidxtape\t10083/tcp\t\t\t# amanda backup services\nisdnlog\t\t20011/tcp\t\t\t# isdn logging system\nisdnlog\t\t20011/udp\t\t\t# isdn logging system\nvboxd\t\t20012/tcp\t\t\t# voice box system\nvboxd\t\t20012/udp\t\t\t# voice box system\nbinkp           24554/tcp\t\t\t# Binkley\nbinkp           24554/udp\t\t\t# Binkley\nasp\t\t27374/tcp\t\t\t# Address Search Protocol\nasp\t\t27374/udp\t\t\t# Address Search Protocol\ntfido           60177/tcp\t\t\t# Ifmail\ntfido           60177/udp\t\t\t# Ifmail\nfido            60179/tcp\t\t\t# Ifmail\nfido            60179/udp\t\t\t# Ifmail\n\n# Local services\n\n"
  },
  {
    "path": "system/skeleton/etc/shadow",
    "content": "root::::::::\ndaemon:*:::::::\nbin:*:::::::\nsys:*:::::::\nsync:*:::::::\nmail:*:::::::\nwww-data:*:::::::\noperator:*:::::::\nnobody:*:::::::\n"
  },
  {
    "path": "system/skeleton/media/.empty",
    "content": ""
  },
  {
    "path": "system/skeleton/mnt/.empty",
    "content": ""
  },
  {
    "path": "system/skeleton/opt/.empty",
    "content": ""
  },
  {
    "path": "system/skeleton/proc/.empty",
    "content": ""
  },
  {
    "path": "system/skeleton/root/.empty",
    "content": ""
  },
  {
    "path": "system/skeleton/run/.empty",
    "content": ""
  },
  {
    "path": "system/skeleton/sys/.empty",
    "content": ""
  },
  {
    "path": "system/skeleton/tmp/.empty",
    "content": ""
  },
  {
    "path": "system/skeleton/usr/bin/.empty",
    "content": ""
  },
  {
    "path": "system/skeleton/usr/lib/.empty",
    "content": ""
  },
  {
    "path": "system/skeleton/usr/sbin/.empty",
    "content": ""
  },
  {
    "path": "system/system.mk",
    "content": "################################################################################\n#\n# system-related variables and macros\n#\n################################################################################\n\n# This file exists to define variables and macros that pertain to the system\n# settings, like rsyncing a directory for skeletons, or the /lib vs. /usr/lib\n# symlink handling.\n#\n# Some variables may be used as conditions in Makefile code, so they must be\n# defined properly before they are used; this file is included early, before\n# any package is.\n\n# - SYSTEM_USR_SYMLINKS_OR_DIRS\n#   create /lib, /bin and /sbin, either as directories or as symlinks to\n#   their /usr conterparts\n#\n# - SYSTEM_RSYNC\n#   rsync $(1) to $(2), with proper exclusions and rights\n#\n# - SYSTEM_LIB_SYMLINK\n#   create the appropriate /lib{32,64} symlinks\n#\n# - SYSTEM_GETTY_PORT\n# - SYSTEM_GETTY_BAUDRATE\n# - SYSTEM_GETTY_TERM\n# - SYSTEM_GETTY_OPTIONS\n#   the un-quoted getty setting\n#\n# - SYSTEM_REMOUNT_ROOT_INITTAB\n#   set inittab to remount root read-write or read-only\n#\n\n# This function handles the merged or non-merged /usr cases\nifeq ($(BR2_ROOTFS_MERGED_USR),y)\ndefine SYSTEM_USR_SYMLINKS_OR_DIRS\n\tln -snf usr/bin $(1)/bin\n\tln -snf usr/sbin $(1)/sbin\n\tln -snf usr/lib $(1)/lib\nendef\nelse\ndefine SYSTEM_USR_SYMLINKS_OR_DIRS\n\t$(INSTALL) -d -m 0755 $(1)/bin\n\t$(INSTALL) -d -m 0755 $(1)/sbin\n\t$(INSTALL) -d -m 0755 $(1)/lib\nendef\nendif\n\n# This function rsyncs the skeleton directory in $(1) to the destination\n# in $(2), which should be either $(TARTGET_DIR) or $(STAGING_DIR)\ndefine SYSTEM_RSYNC\n\trsync -a --ignore-times $(RSYNC_VCS_EXCLUSIONS) \\\n\t\t--chmod=u=rwX,go=rX --exclude .empty --exclude '*~' \\\n\t\t$(1)/ $(2)/\nendef\n\n# Make a symlink lib32->lib or lib64->lib as appropriate.\n# MIPS64/n32 requires lib32 even though it's a 64-bit arch. However, since gcc\n# 5.1.0 internal compiler paths in sysroot are relative to lib64, so we must\n# create both.\n# $(1): base dir (either staging or target)\nifeq ($(BR2_MIPS_NABI32),y)\ndefine SYSTEM_LIB_SYMLINK\n\tln -snf lib $(1)/lib64\n\tln -snf lib $(1)/usr/lib64\n\tln -snf lib $(1)/lib32\n\tln -snf lib $(1)/usr/lib32\nendef\nelse ifeq ($(BR2_ARCH_IS_64),y)\ndefine SYSTEM_LIB_SYMLINK\n\tln -snf lib $(1)/lib64\n\tln -snf lib $(1)/usr/lib64\nendef\nelse\ndefine SYSTEM_LIB_SYMLINK\n\tln -snf lib $(1)/lib32\n\tln -snf lib $(1)/usr/lib32\nendef\nendif\n\nSYSTEM_GETTY_PORT = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT))\nSYSTEM_GETTY_BAUDRATE = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE))\nSYSTEM_GETTY_TERM = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_TERM))\nSYSTEM_GETTY_OPTIONS = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_OPTIONS))\n\nifeq ($(BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW),y)\n# Find commented line, if any, and remove leading '#'s\ndefine SYSTEM_REMOUNT_ROOT_INITTAB\n\t$(SED) '/^#.*-o remount,rw \\/$$/s~^#\\+~~' $(TARGET_DIR)/etc/inittab\nendef\nelse\n# Find uncommented line, if any, and add a leading '#'\ndefine SYSTEM_REMOUNT_ROOT_INITTAB\n\t$(SED) '/^[^#].*-o remount,rw \\/$$/s~^~#~' $(TARGET_DIR)/etc/inittab\nendef\nendif\n\nifeq ($(BR_BUILDING)$(BR2_SYSTEM_DEFAULT_PATH),y\"\")\n$(error BR2_SYSTEM_DEFAULT_PATH can't be empty)\nendif\n"
  },
  {
    "path": "toolchain/Config.in",
    "content": "menu \"Toolchain\"\n\n# Invisible option that makes sure the toolchain package always gets\n# built\nconfig BR2_TOOLCHAIN\n\tbool\n\tdefault y\n\n# Should be selected for glibc or eglibc\nconfig BR2_TOOLCHAIN_USES_GLIBC\n\tbool\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_TOOLCHAIN_HAS_FULL_GETTEXT\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_HAS_UCONTEXT\n\tselect BR2_TOOLCHAIN_SUPPORTS_PIE\n\nconfig BR2_TOOLCHAIN_USES_UCLIBC\n\tbool\n\t# ucontext is only available for a subset of the supported\n\t# architectures\n\tselect BR2_TOOLCHAIN_HAS_UCONTEXT if BR2_ARM_CPU_HAS_ARM || BR2_i386 \\\n\t\t|| BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el \\\n\t\t|| BR2_sparc || BR2_x86_64\n\tselect BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_m68k && !BR2_microblaze && !BR2_STATIC_LIBS\n\nconfig BR2_TOOLCHAIN_USES_MUSL\n\tbool\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_HAS_UCONTEXT\n\tselect BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_STATIC_LIBS\n\nchoice\n\tprompt \"Toolchain type\"\n\thelp\n\t  Select whether to use the toolchain provided by buildroot\n\t  or an external toolchain.\n\n\t  Some vendors provide toolchains in binary form, some in\n\t  source form.\n\nconfig BR2_TOOLCHAIN_BUILDROOT\n\tbool \"Buildroot toolchain\"\n\tdepends on BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT\n\nconfig BR2_TOOLCHAIN_EXTERNAL\n\tbool \"External toolchain\"\n\thelp\n\t  Select if you want to use an existing cross-compiling\n\t  toolchain. Buildroot can either download automatically a\n\t  toolchain, or use an already installed toolchain.\n\nendchoice\n\nsource \"toolchain/toolchain-buildroot/Config.in\"\nsource \"toolchain/toolchain-external/Config.in\"\n\n# Generic toolchain options\n\n# we want gdb config in the middle of both source and external\n# toolchains, but mconf won't let us source the same file twice,\n# so put it here instead\nsource \"package/gdb/Config.in.host\"\n\ncomment \"Toolchain Generic Options\"\n\n# https://sourceware.org/bugzilla/show_bug.cgi?id=21464\n# Affect toolchains built with binutils 2.31.1, still not fixed.\nconfig BR2_TOOLCHAIN_HAS_BINUTILS_BUG_21464\n\tbool\n\tdefault y if BR2_or1k\n\n# https://sourceware.org/bugzilla/show_bug.cgi?id=27597\n# Affect toolchains built with binutils 2.36.1, still not fixed.\nconfig BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597\n\tbool\n\tdefault y if BR2_nios2\n\n# Atomic types can be:\n#  - never lock-free\n#  - sometimes lock-free\n#  - always lock-free\n# see https://en.cppreference.com/w/c/atomic/ATOMIC_LOCK_FREE_consts\n#\n# On most architectures, gcc provides \"always lock-free\" atomic types,\n# but a few architectures are limited to \"sometimes lock-free\"\n# types. This hidden option allows to know if the architecture\n# provides \"always lock-free\" atomic types.\nconfig BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS\n\tbool\n\tdefault y\n\tdepends on !BR2_nios2\n\tdepends on !BR2_ARM_CPU_ARMV4\n\tdepends on !BR2_ARM_CPU_ARMV5\n\tdepends on !BR2_sparc_v8\n\tdepends on !BR2_m68k_cf5208\n\n# GCC uses thunk functions to adjust the 'this' pointer when calling\n# C++ member functions in classes derived with multiple inheritance.\n# Generation of thunk functions requires support from the compiler\n# back end. In the absence of that support target-independent code\n# in the C++ front end is used to generate thunk functions, but it\n# does not support vararg functions.\n# or1k will support it in the gcc mainline starting with gcc-9.\nconfig BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK\n\tbool\n\tdefault y\n\tdepends on !BR2_or1k\n\tdepends on !BR2_xtensa\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43744. This bug no\n# reappeared on gcc 9.x and is still not fixed on gcc 11.x\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_43744\n\tbool\n\tdefault y if BR2_sh4\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8 || \\\n\t\tBR2_TOOLCHAIN_GCC_AT_LEAST_9 || \\\n\t\tBR2_TOOLCHAIN_GCC_AT_LEAST_10 || \\\n\t\tBR2_TOOLCHAIN_GCC_AT_LEAST_11\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63261. This bug no\n# longer exists in gcc 8.x.\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_63261\n\tbool\n\tdefault y if BR2_microblaze\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\n# Prior to gcc 7.x, exception_ptr, nested_exception and future from\n# libstdc++ would only be provided on architectures that support\n# always lock-free atomic ints. See\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735. This issue has\n# been removed in GCC 7.x, where exception propagation is now\n# supported without lock-free atomic int.\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_64735\n\tbool\n\tdefault y if !BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS && \\\n\t\t!BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68485. This bug still\n# exists in gcc 9.x\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_68485\n\tbool\n\tdefault y if BR2_microblaze\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83143\n# Error: invalid operands (*UND* and .text sections) for `-' on sh4.\n# This bug no longer exists in gcc 10.x but reappeared on gcc 11.x and\n# it still not been fixed yet.\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_83143\n\tbool\n\tdefault y if BR2_sh\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_10 || BR2_TOOLCHAIN_GCC_AT_LEAST_11\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. This bug no\n# longer exists in gcc 8.x.\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_85180\n\tbool\n\tdefault y if BR2_microblaze\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85862\n# An infinite loop exists in the find_base_term() logic of 6.x\n# on microblaze.  http://autobuild.buildroot.net/results/158e8ebb39713e1b436a5cc1a1916f46c30694df/\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_85862\n\tbool\n\tdefault y if BR2_microblaze\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90620\n# ICE: in do_output_reload, at reload1.c:7978 on microblaze.\n# This bug no longer exists in gcc 10.x\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_90620\n\tbool\n\tdefault y if BR2_microblaze\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93847\n# ICE: compiler error: Segmentation fault on Nios II. This bug\n# no longer exists in gcc 9.x.\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_93847\n\tbool\n\tdefault y if BR2_nios2 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99410\n# Error: branch offset out of range on Nios II. This bug\n# no longer exists in gcc 8.x but reappeared on gcc 9.x and has been\n# fixed on gcc 10.x.\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_99140\n\tbool\n\tdefault y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\tdefault y if BR2_TOOLCHAIN_GCC_AT_LEAST_9 && !BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tdepends on BR2_nios2\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101737\n# ICE: SH4 -Os causes internal compiler error. This bug\n# still exists in gcc = 11.1.0\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_101737\n\tbool\n\tdefault y if BR2_sh4\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101915\n# ICE: in extract_insn, at recog.c:2294 on microblaze.\n# This bug still exists in gcc = 11.1.0\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_101915\n\tbool\n\tdefault y if BR2_microblaze\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101916\n# ICE: on SH4: Segmentation fault signal terminated program cc1.\n# This bug still exists in gcc = 11.1.0\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_101916\n\tbool\n\tdefault y if BR2_sh4\n\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101952\n# ICE: on SH4: unaligned opcodes detected in executable segment.\n# This bug still exists in gcc = 11.1.0\nconfig BR2_TOOLCHAIN_HAS_GCC_BUG_101952\n\tbool\n\tdefault y if BR2_sh4\n\nconfig BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tbool\n\nconfig BR2_USE_WCHAR\n\tbool\n\nconfig BR2_ENABLE_LOCALE\n\tbool\n\nconfig BR2_INSTALL_LIBSTDCPP\n\tbool\n\nconfig BR2_TOOLCHAIN_HAS_DLANG\n\tbool\n\nconfig BR2_TOOLCHAIN_HAS_FORTRAN\n\tbool\n\nconfig BR2_TOOLCHAIN_HAS_THREADS\n\tbool\n\nconfig BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tbool\n\nconfig BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tbool\n\nconfig BR2_TOOLCHAIN_HAS_SSP\n\tbool\n\nconfig BR2_TOOLCHAIN_HAS_SSP_STRONG\n\tbool\n\tdefault y if BR2_TOOLCHAIN_HAS_SSP && BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_TOOLCHAIN_HAS_UCONTEXT\n\tbool\n\nconfig BR2_TOOLCHAIN_HAS_OPENMP\n\tbool\n\nconfig BR2_TOOLCHAIN_SUPPORTS_PIE\n\tbool\n\nconfig BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY\n\tbool \"Copy gconv libraries\"\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  The gconv libraries are used to convert between different\n\t  character sets (charsets).\n\n\t  Say 'y' if you need to store and/or display different\n\t  charsets.\n\nconfig BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST\n\tstring \"Gconv libraries to copy\"\n\tdepends on BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY\n\thelp\n\t  Set to the list of gconv libraries to copy.\n\t  Leave empty to copy all gconv libraries.\n\n\t  Specify only the basename of the libraries, leave\n\t  out the .so extension. Eg.:\n\t    IBM850 ISO8859-15 UNICODE\n\n\t  Note: the full set of gconv libs are ~8MiB (on ARM).\n\nconfig BR2_TOOLCHAIN_EXTRA_LIBS\n\tstring \"Extra toolchain libraries to be copied to target\"\n\tdefault BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS if BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS != \"\" # legacy\n\tdepends on !BR2_STATIC_LIBS\n\thelp\n\t  If your toolchain provides extra libraries that need to be\n\t  copied to the target filesystem, enter them here, separated\n\t  by spaces. The library should not include a suffix or any\n\t  type of pre/post wildcard.\n\n\t  Examples where this can be useful is for adding debug\n\t  libraries to the target like the GCC libsanitizer.\n\t  e.g. \"libasan liblsan libtsan libubsan\"\n\n# This boolean is true if the toolchain provides a built-in full\n# featured gettext implementation (glibc), and false if only a stub\n# gettext implementation is provided (uclibc, musl)\nconfig BR2_TOOLCHAIN_HAS_FULL_GETTEXT\n\tbool\n\nconfig BR2_USE_MMU\n\tbool \"Enable MMU support\" if BR2_ARCH_HAS_MMU_OPTIONAL\n\tdefault y if BR2_ARCH_HAS_MMU_OPTIONAL || BR2_ARCH_HAS_MMU_MANDATORY\n\thelp\n\t  If your target has a MMU, you should say Y here.  If you\n\t  are unsure, just say Y.\n\nconfig BR2_TARGET_OPTIMIZATION\n\tstring \"Target Optimizations\"\n\tdefault \"\"\n\thelp\n\t  Optimizations to use when building for the target host.\n\t  NOTE: gcc optimization level is defined in build options.\n\nconfig BR2_TARGET_LDFLAGS\n\tstring \"Target linker options\"\n\thelp\n\t  Extra options to pass to the linker when building for the\n\t  target.\n\n\t  Note that options with a '$' sign (eg.\n\t  -Wl,-rpath='$ORIGIN/../lib') are not supported.\n\nconfig BR2_ECLIPSE_REGISTER\n\tbool \"Register toolchain within Eclipse Buildroot plug-in\"\n\thelp\n\t  This options tells Buildroot to generate the necessary\n\t  configuration files to make your toolchain appear within\n\t  Eclipse, through the Eclipse Buildroot plugin.\n\n# Options for packages to depend on, if they require at least a\n# specific version of the kernel headers.\n# Toolchains should choose the adequate option (ie. the highest\n# version, not all of them).\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\tbool\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13\n\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15\n\tbool\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14\n\tselect BR2_TOOLCHAIN_HEADERS_LATEST\n\n# This should be selected by the latest version, above, to indicate that\n# Buildroot does not know of more recent headers than the ones selected.\n# This allows using toolchains with headers more recent than Buildroot\n# knows about, while still enforcing strict check for older headers.\nconfig BR2_TOOLCHAIN_HEADERS_LATEST\n\tbool\n\n# This order guarantees that the highest version is set, as kconfig\n# stops affecting a value on the first matching default.\nconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST\n\tstring\n\tdefault \"5.15\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15\n\tdefault \"5.14\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14\n\tdefault \"5.13\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13\n\tdefault \"5.12\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12\n\tdefault \"5.11\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11\n\tdefault \"5.10\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10\n\tdefault \"5.9\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9\n\tdefault \"5.8\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8\n\tdefault \"5.7\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7\n\tdefault \"5.6\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6\n\tdefault \"5.5\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5\n\tdefault \"5.4\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tdefault \"5.3\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3\n\tdefault \"5.2\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2\n\tdefault \"5.1\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1\n\tdefault \"5.0\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0\n\tdefault \"4.20\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20\n\tdefault \"4.19\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19\n\tdefault \"4.18\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18\n\tdefault \"4.17\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17\n\tdefault \"4.16\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16\n\tdefault \"4.15\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15\n\tdefault \"4.14\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14\n\tdefault \"4.13\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13\n\tdefault \"4.12\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n\tdefault \"4.11\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11\n\tdefault \"4.10\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10\n\tdefault \"4.9\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tdefault \"4.8\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8\n\tdefault \"4.7\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7\n\tdefault \"4.6\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6\n\tdefault \"4.5\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5\n\tdefault \"4.4\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4\n\tdefault \"4.3\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3\n\tdefault \"4.2\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2\n\tdefault \"4.1\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1\n\tdefault \"4.0\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0\n\tdefault \"3.19\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19\n\tdefault \"3.18\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18\n\tdefault \"3.17\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17\n\tdefault \"3.16\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16\n\tdefault \"3.15\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15\n\tdefault \"3.14\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n\tdefault \"3.13\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13\n\tdefault \"3.12\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\tdefault \"3.11\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11\n\tdefault \"3.10\" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n\tdefault \"3.9\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9\n\tdefault \"3.8\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8\n\tdefault \"3.7\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7\n\tdefault \"3.6\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6\n\tdefault \"3.5\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5\n\tdefault \"3.4\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4\n\tdefault \"3.3\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3\n\tdefault \"3.2\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2\n\tdefault \"3.1\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1\n\tdefault \"3.0\"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\tdefault \"2.6\"\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_3\n\tbool\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_4\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_3\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_5\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_4\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_6\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_5\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_6\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_6\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_6\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST_11\n\tbool\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\n# This order guarantees that the highest version is set, as kconfig\n# stops affecting a value on the first matching default.\nconfig BR2_TOOLCHAIN_GCC_AT_LEAST\n\tstring\n\tdefault \"11\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_11\n\tdefault \"10\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tdefault \"9\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tdefault \"8\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\tdefault \"7\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tdefault \"6\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_6\n\tdefault \"5\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\tdefault \"4.9\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\tdefault \"4.8\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\tdefault \"4.7\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n\tdefault \"4.6\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_4_6\n\tdefault \"4.5\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_4_5\n\tdefault \"4.4\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_4_4\n\tdefault \"4.3\"\tif BR2_TOOLCHAIN_GCC_AT_LEAST_4_3\n\nconfig BR2_TOOLCHAIN_HAS_MNAN_OPTION\n\tbool\n\tdefault y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_TOOLCHAIN_HAS_SYNC_1\n\tbool\n\tdefault y\n\tdepends on !BR2_m68k_cf\n\tdepends on !BR2_microblaze\n\tdepends on !BR2_sparc\n\tdepends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)\n\nconfig BR2_TOOLCHAIN_HAS_SYNC_2\n\tbool\n\tdefault y if BR2_TOOLCHAIN_HAS_SYNC_1\n\nconfig BR2_TOOLCHAIN_HAS_SYNC_4\n\tbool\n\tdefault y\n\tdepends on !BR2_m68k_cf\n\tdepends on !BR2_sparc\n\tdepends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)\n\n# The availability of __sync for 8-byte types on ARM is somewhat\n# complicated:\n#\n#  - It appeared in gcc starting with gcc 4.7.\n#\n#  - On ARMv7, there is no problem, it can be directly implemented in\n#    userspace.\n#\n#  - On < ARMv7, it requires help from the kernel. Unfortunately, the\n#    libgcc code implementing 8-byte __sync with the help from the\n#    kernel calls __write() when a failure occurs, which is a function\n#    internal to glibc, not available in uClibc and musl. This means\n#    that the 8-byte __sync operations are not available on < ARMv7\n#    with uClibc and musl. This problem was fixed as part of gcc\n#    PR68059, which was backported to the gcc 5 branch, but isn't yet\n#    part of any gcc 5.x release.\n#\nconfig BR2_TOOLCHAIN_ARM_HAS_SYNC_8\n\tbool\n\tdefault y\n\tdepends on BR2_arm || BR2_armeb\n\tdepends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n\tdepends on BR2_TOOLCHAIN_USES_GLIBC || BR2_ARM_CPU_ARMV7A\n\n# 8-byte intrinsics available on most x86 CPUs, except a few old ones\nconfig BR2_TOOLCHAIN_X86_HAS_SYNC_8\n\tbool\n\tdefault y\n\tdepends on BR2_i386\n\tdepends on !BR2_x86_i486\n\tdepends on !BR2_x86_c3\n\tdepends on !BR2_x86_winchip_c6\n\tdepends on !BR2_x86_winchip2\n\n# 8-byte intrinsics available:\n#  - On all 64 bits architecture\n#  - On a certain combinations of ARM platforms\n#  - On certain x86 32 bits CPUs\nconfig BR2_TOOLCHAIN_HAS_SYNC_8\n\tbool\n\tdefault y if BR2_ARCH_IS_64\n\tdefault y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8\n\tdefault y if BR2_TOOLCHAIN_X86_HAS_SYNC_8\n\n# libatomic is available since gcc 4.8, when thread support is\n# enabled. Also, libatomic doesn't recognize \"uclinux\" as a valid OS\n# part of the tuple, and is therefore not build on uclinux targets,\n# which is why BR2_BINFMT_FLAT configurations are excluded.\nconfig BR2_TOOLCHAIN_HAS_LIBATOMIC\n\tbool\n\tdefault y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \\\n\t\t!BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 && \\\n\t\tBR2_TOOLCHAIN_HAS_THREADS && \\\n\t\t!BR2_BINFMT_FLAT\n\n# __atomic intrinsics are available:\n# - with gcc 4.8, either through built-ins or libatomic, on all\n#   architectures. Since we don't want to separate the cases where\n#   libatomic is needed vs. not needed, we simplify thing and only\n#   support situations where libatomic is available, even if on some\n#   architectures libatomic is not strictly needed as all __atomic\n#   intrinsics might be built-in. The only case where libatomic is\n#   missing entirely is when the toolchain does not have support for\n#   threads. However, a package that does not need threads but still\n#   uses atomics is quite a corner case, which does not warrant the\n#   added complexity.\n# - with gcc 4.7, libatomic did not exist, so only built-ins are\n#   available. This means that __atomic can only be used in a subset\n#   of the architectures\nconfig BR2_TOOLCHAIN_HAS_ATOMIC\n\tbool\n\tdefault y if BR2_TOOLCHAIN_HAS_LIBATOMIC\n\tdefault y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_arm\n\tdefault y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_armeb\n\tdefault y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_xtensa\n\tdefault y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_ARCH_IS_64\n\n# - libquadmath is not needed/available on all architectures (but gcc\n#   correctly handles this already).\n# - At least, libquadmath is available on:\n#   - i*86\n#   - x86_64\n# - When available, libquadmath requires wchar support.\nconfig BR2_TOOLCHAIN_HAS_LIBQUADMATH\n\tbool\n\tdefault y if BR2_i386 || BR2_x86_64\n\nendmenu\n"
  },
  {
    "path": "toolchain/helpers.mk",
    "content": "# This Makefile fragment declares toolchain related helper functions.\n\n# The copy_toolchain_lib_root function copies a toolchain library and\n# its symbolic links from the sysroot directory to the target\n# directory. Note that this function is used both by the external\n# toolchain logic, and the glibc package, so care must be taken when\n# changing this function.\n#\n# $1: library name pattern (can include glob wildcards)\n#\ncopy_toolchain_lib_root = \\\n\tLIBPATTERN=\"$(strip $1)\"; \\\n\tLIBPATHS=`find $(STAGING_DIR)/ -name \"$${LIBPATTERN}\" 2>/dev/null` ; \\\n\tfor LIBPATH in $${LIBPATHS} ; do \\\n\t\twhile true ; do \\\n\t\t\tLIBNAME=`basename $${LIBPATH}`; \\\n\t\t\tDESTDIR=`echo $${LIBPATH} | sed \"s,^$(STAGING_DIR)/,,\" | xargs dirname` ; \\\n\t\t\tmkdir -p $(TARGET_DIR)/$${DESTDIR}; \\\n\t\t\trm -fr $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \\\n\t\t\tif test -h $${LIBPATH} ; then \\\n\t\t\t\tcp -d $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \\\n\t\t\t\tLIBPATH=\"`readlink -f $${LIBPATH}`\"; \\\n\t\t\telif test -f $${LIBPATH}; then \\\n\t\t\t\t$(INSTALL) -D -m0755 $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \\\n\t\t\t\tbreak ; \\\n\t\t\telse \\\n\t\t\t\texit -1; \\\n\t\t\tfi; \\\n\t\tdone; \\\n\tdone\n\n#\n# Copy the full external toolchain sysroot directory to the staging\n# dir. The operation of this function is rendered a little bit\n# complicated by the support for multilib toolchains.\n#\n# We start by copying etc, 'lib', sbin, usr and usr/'lib' from the\n# sysroot of the selected architecture variant (as pointed to by\n# ARCH_SYSROOT_DIR). This allows to import into the staging directory\n# the C library and companion libraries for the correct architecture\n# variant. 'lib' may not be literally 'lib' but could be something else,\n# e.g. lib32-fp (as determined by ARCH_LIB_DIR) and we only want to copy\n# that lib directory and no other. When copying usr, we therefore need\n# to be extra careful not to include usr/lib* but we _do_ want to\n# include usr/libexec.\n# We are selective in the directories we copy since other directories\n# might exist for other architecture variants (on Codesourcery\n# toolchain, the sysroot for the default architecture variant contains\n# the armv4t and thumb2 subdirectories, which are the sysroot for the\n# corresponding architecture variants), and we don't want to import\n# them.\n#\n# If ARCH_LIB_DIR is not a singular directory component, e.g.\n# 'lib32/octeon2', then symbolic links in ARCH_LIB_DIR and\n# usr/ARCH_LIB_DIR may be broken because Buildroot will flatten the\n# directory structure (e.g. lib32/octeon2/foo is actually stored in\n# lib/foo). This is only relevant for links that contain one or more ../\n# components, as links to the current directory are always fine.\n# We need to fix the broken links by removing the right amount of ../\n# dots from the link destination.\n# Once the link destination is valid again, it can be simplified to\n# remove the dependency on intermediate directory symlinks.\n#\n# It is possible that ARCH_LIB_DIR does not contain the dynamic loader\n# (ld*.so or similar) because it (or the main symlink to it) normally\n# resides in /lib while ARCH_LIB_DIR may be something else (e.g. lib64,\n# lib/<tuple>, ...). Therefore, copy the dynamic loader separately.\n#\n# Then, if the selected architecture variant is not the default one\n# (i.e, if SYSROOT_DIR != ARCH_SYSROOT_DIR), then we :\n#\n#  * Import the header files from the default architecture\n#    variant. Header files are typically shared between the sysroots\n#    for the different architecture variants. If we use the\n#    non-default one, header files were not copied by the previous\n#    step, so we copy them here from the sysroot of the default\n#    architecture variant.\n#\n#  * Create a symbolic link that matches the name of the subdirectory\n#    for the architecture variant in the original sysroot. This is\n#    required as the compiler will by default look in\n#    sysroot_dir/arch_variant/ for libraries and headers, when the\n#    non-default architecture variant is used. Without this, the\n#    compiler fails to find libraries and headers.\n#\n# Some toolchains (i.e Linaro binary toolchains) store support\n# libraries (libstdc++, libgcc_s) outside of the sysroot, so we simply\n# copy all the libraries from the \"support lib directory\" into our\n# sysroot.\n#\n# Note that the 'locale' directories are not copied. They are huge\n# (400+MB) in CodeSourcery toolchains, and they are not really useful.\n#\n# $1: main sysroot directory of the toolchain\n# $2: arch specific sysroot directory of the toolchain\n# $3: arch specific subdirectory in the sysroot\n# $4: directory of libraries ('lib', 'lib32' or 'lib64')\n# $5: support lib directories (for toolchains storing libgcc_s,\n#     libstdc++ and other gcc support libraries outside of the\n#     sysroot)\ncopy_toolchain_sysroot = \\\n\tSYSROOT_DIR=\"$(strip $1)\"; \\\n\tARCH_SYSROOT_DIR=\"$(strip $2)\"; \\\n\tARCH_SUBDIR=\"$(strip $3)\"; \\\n\tARCH_LIB_DIR=\"$(strip $4)\" ; \\\n\tSUPPORT_LIB_DIR=\"$(strip $5)\" ; \\\n\tfor i in etc $${ARCH_LIB_DIR} sbin usr usr/$${ARCH_LIB_DIR}; do \\\n\t\tif [ ! -d $${ARCH_SYSROOT_DIR}/$$i ] ; then \\\n\t\t\tcontinue ; \\\n\t\tfi ; \\\n\t\tif [ \"$$i\" = \"usr\" ]; then \\\n\t\t\trsync -au --chmod=u=rwX,go=rX --exclude 'locale/' \\\n\t\t\t\t--include '/libexec*/' --exclude '/lib*/' \\\n\t\t\t\t$${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \\\n\t\telse \\\n\t\t\trsync -au --chmod=u=rwX,go=rX --exclude 'locale/' \\\n\t\t\t\t$${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \\\n\t\tfi ; \\\n\tdone ; \\\n\tfor link in $$(find $(STAGING_DIR) -type l); do \\\n\t\ttarget=$$(readlink $${link}) ; \\\n\t\tif [ \"$${target}\" == \"$${target$(SHARP_SIGN)/}\" ] ; then \\\n\t\t\tcontinue ; \\\n\t\tfi ; \\\n\t\trelpath=\"$(call relpath_prefix,$${target$(SHARP_SIGN)/})\" ; \\\n\t\techo \"Fixing symlink $${link} from $${target} to $${relpath}$${target$(SHARP_SIGN)/}\" ; \\\n\t\tln -sf $${relpath}$${target$(SHARP_SIGN)/} $${link} ; \\\n\tdone ; \\\n\trelpath=\"$(call relpath_prefix,$${ARCH_LIB_DIR})\" ; \\\n\tif [ \"$${relpath}\" != \"\" ]; then \\\n\t\tfor i in $$(find -H $(STAGING_DIR)/$${ARCH_LIB_DIR} $(STAGING_DIR)/usr/$${ARCH_LIB_DIR} -type l -xtype l); do \\\n\t\t\tLINKTARGET=`readlink $$i` ; \\\n\t\t\tNEWLINKTARGET=$${LINKTARGET\\#$$relpath} ; \\\n\t\t\tln -sf $${NEWLINKTARGET} $$i ; \\\n\t\t\t$(call simplify_symlink,$$i,$(STAGING_DIR)) ; \\\n\t\tdone ; \\\n\tfi ; \\\n\tif [[ ! $$(find $(STAGING_DIR)/lib -name 'ld*.so.*' -print -quit) ]]; then \\\n\t\tfind $${ARCH_SYSROOT_DIR}/lib -name 'ld*.so.*' -print0 | xargs -0 -I % cp % $(STAGING_DIR)/lib/; \\\n\tfi ; \\\n\tif [ `readlink -f $${SYSROOT_DIR}` != `readlink -f $${ARCH_SYSROOT_DIR}` ] ; then \\\n\t\tif [ ! -d $${ARCH_SYSROOT_DIR}/usr/include ] ; then \\\n\t\t\tcp -a $${SYSROOT_DIR}/usr/include $(STAGING_DIR)/usr ; \\\n\t\tfi ; \\\n\t\tmkdir -p `dirname $(STAGING_DIR)/$${ARCH_SUBDIR}` ; \\\n\t\trelpath=\"$(call relpath_prefix,$${ARCH_SUBDIR})./\" ; \\\n\t\tln -s $${relpath} $(STAGING_DIR)/$${ARCH_SUBDIR} ; \\\n\t\techo \"Symlinking $(STAGING_DIR)/$${ARCH_SUBDIR} -> $${relpath}\" ; \\\n\tfi ; \\\n\tif test -n \"$${SUPPORT_LIB_DIR}\" ; then \\\n\t\tcp -a $${SUPPORT_LIB_DIR}/* $(STAGING_DIR)/lib/ ; \\\n\tfi ; \\\n\tfind $(STAGING_DIR) -type d | xargs chmod 755\n\n#\n# Check the specified kernel headers version actually matches the\n# version in the toolchain.\n#\n# $1: build directory\n# $2: sysroot directory\n# $3: kernel version string, in the form: X.Y\n# $4: test to do for the latest kernel version, 'strict' or 'loose'\n#     always 'strict' if this is not the latest version.\n#\ncheck_kernel_headers_version = \\\n\tif ! support/scripts/check-kernel-headers.sh $(1) $(2) $(3) \\\n\t\t$(if $(BR2_TOOLCHAIN_HEADERS_LATEST),$(4),strict); \\\n\tthen \\\n\t\texit 1; \\\n\tfi\n\n#\n# Check the specific gcc version actually matches the version in the\n# toolchain\n#\n# $1: path to gcc\n# $2: expected gcc version\n#\ncheck_gcc_version = \\\n\texpected_version=\"$(strip $2)\" ; \\\n\tif [ -z \"$${expected_version}\" ]; then \\\n\t\texit 0 ; \\\n\tfi; \\\n\treal_version=`$(1) -dumpversion` ; \\\n\tif [[ ! \"$${real_version}.\" =~ ^$${expected_version}\\. ]] ; then \\\n\t\tprintf \"Incorrect selection of gcc version: expected %s.x, got %s\\n\" \\\n\t\t\t\"$${expected_version}\" \"$${real_version}\" ; \\\n\t\texit 1 ; \\\n\tfi\n\n#\n# Check the availability of a particular glibc feature. This function\n# is used to check toolchain options that are always supported by\n# glibc, so we simply check that the corresponding option is properly\n# enabled.\n#\n# $1: Buildroot option name\n# $2: feature description\n#\ncheck_glibc_feature = \\\n\tif [ \"$($(1))\" != \"y\" ] ; then \\\n\t\techo \"$(2) available in C library, please enable $(1)\" ; \\\n\t\texit 1 ; \\\n\tfi\n\n#\n# Check the availability of RPC support in a glibc toolchain\n#\n# $1: sysroot directory\n#\ncheck_glibc_rpc_feature = \\\n\tIS_IN_LIBC=`test -f $(1)/usr/include/rpc/rpc.h && echo y` ; \\\n\tif [ \"$(BR2_TOOLCHAIN_HAS_NATIVE_RPC)\" != \"y\" -a \"$${IS_IN_LIBC}\" = \"y\" ] ; then \\\n\t\techo \"RPC support available in C library, please enable BR2_TOOLCHAIN_EXTERNAL_INET_RPC\" ; \\\n\t\texit 1 ; \\\n\tfi ; \\\n\tif [ \"$(BR2_TOOLCHAIN_HAS_NATIVE_RPC)\" = \"y\" -a \"$${IS_IN_LIBC}\" != \"y\" ] ; then \\\n\t\techo \"RPC support not available in C library, please disable BR2_TOOLCHAIN_EXTERNAL_INET_RPC\" ; \\\n\t\texit 1 ; \\\n\tfi\n\n#\n# Check the correctness of a glibc external toolchain configuration.\n#  1. Check that the C library selected in Buildroot matches the one\n#     of the external toolchain\n#  2. Check that all the C library-related features are enabled in the\n#     config, since glibc always supports all of them\n#\n# $1: sysroot directory\n#\ncheck_glibc = \\\n\tSYSROOT_DIR=\"$(strip $1)\"; \\\n\tif test `find -L $${SYSROOT_DIR}/ -maxdepth 2 -name 'ld-linux*.so.*' -o -name 'ld.so.*' -o -name 'ld64.so.*' | wc -l` -eq 0 ; then \\\n\t\techo \"Incorrect selection of the C library\"; \\\n\t\texit -1; \\\n\tfi; \\\n\t$(call check_glibc_feature,BR2_USE_MMU,MMU support) ;\\\n\t$(call check_glibc_rpc_feature,$${SYSROOT_DIR})\n\n#\n# Check that the selected C library really is musl\n#\n# $1: cross-gcc path\n# $2: cross-readelf path\ncheck_musl = \\\n\t__CROSS_CC=$(strip $1) ; \\\n\tlibc_a_path=`$${__CROSS_CC} -print-file-name=libc.a` ; \\\n\tif ! strings $${libc_a_path} | grep -q MUSL_LOCPATH ; then \\\n\t\techo \"Incorrect selection of the C library\" ; \\\n\t\texit -1; \\\n\tfi\n\n#\n# Check the conformity of Buildroot configuration with regard to the\n# uClibc configuration of the external toolchain, for a particular\n# feature.\n#\n# If 'Buildroot option name' ($2) is empty it means the uClibc option\n# is mandatory.\n#\n# $1: uClibc macro name\n# $2: Buildroot option name\n# $3: uClibc config file\n# $4: feature description\n#\ncheck_uclibc_feature = \\\n\tIS_IN_LIBC=`grep -q \"\\#define $(1) 1\" $(3) && echo y` ; \\\n\tif [ -z \"$(2)\" ] ; then \\\n\t\tif [ \"$${IS_IN_LIBC}\" != \"y\" ] ; then \\\n\t\t\techo \"$(4) not available in C library, toolchain unsuitable for Buildroot\" ; \\\n\t\t\texit 1 ; \\\n\t\tfi ; \\\n\telse \\\n\t\tif [ \"$($(2))\" != \"y\" -a \"$${IS_IN_LIBC}\" = \"y\" ] ; then \\\n\t\t\techo \"$(4) available in C library, please enable $(2)\" ; \\\n\t\t\texit 1 ; \\\n\t\tfi ; \\\n\t\tif [ \"$($(2))\" = \"y\" -a \"$${IS_IN_LIBC}\" != \"y\" ] ; then \\\n\t\t\techo \"$(4) not available in C library, please disable $(2)\" ; \\\n\t\t\texit 1 ; \\\n\t\tfi ; \\\n\tfi\n\n#\n# Check the correctness of a uclibc external toolchain configuration\n#  1. Check that the C library selected in Buildroot matches the one\n#     of the external toolchain\n#  2. Check that the features enabled in the Buildroot configuration\n#     match the features available in the uClibc of the external\n#     toolchain\n#\n# $1: sysroot directory\n#\ncheck_uclibc = \\\n\tSYSROOT_DIR=\"$(strip $1)\"; \\\n\tif ! test -f $${SYSROOT_DIR}/usr/include/bits/uClibc_config.h ; then \\\n\t\techo \"Incorrect selection of the C library\"; \\\n\t\texit -1; \\\n\tfi; \\\n\tUCLIBC_CONFIG_FILE=$${SYSROOT_DIR}/usr/include/bits/uClibc_config.h ; \\\n\t$(call check_uclibc_feature,__ARCH_USE_MMU__,BR2_USE_MMU,$${UCLIBC_CONFIG_FILE},MMU support) ;\\\n\t$(call check_uclibc_feature,__UCLIBC_HAS_LFS__,,$${UCLIBC_CONFIG_FILE},Large file support) ;\\\n\t$(call check_uclibc_feature,__UCLIBC_HAS_IPV6__,,$${UCLIBC_CONFIG_FILE},IPv6 support) ;\\\n\t$(call check_uclibc_feature,__UCLIBC_HAS_RPC__,BR2_TOOLCHAIN_HAS_NATIVE_RPC,$${UCLIBC_CONFIG_FILE},RPC support) ;\\\n\t$(call check_uclibc_feature,__UCLIBC_HAS_LOCALE__,BR2_ENABLE_LOCALE,$${UCLIBC_CONFIG_FILE},Locale support) ;\\\n\t$(call check_uclibc_feature,__UCLIBC_HAS_WCHAR__,BR2_USE_WCHAR,$${UCLIBC_CONFIG_FILE},Wide char support) ;\\\n\t$(call check_uclibc_feature,__UCLIBC_HAS_THREADS__,BR2_TOOLCHAIN_HAS_THREADS,$${UCLIBC_CONFIG_FILE},Thread support) ;\\\n\t$(call check_uclibc_feature,__PTHREADS_DEBUG_SUPPORT__,BR2_TOOLCHAIN_HAS_THREADS_DEBUG,$${UCLIBC_CONFIG_FILE},Thread debugging support) ;\\\n\t$(call check_uclibc_feature,__UCLIBC_HAS_THREADS_NATIVE__,BR2_TOOLCHAIN_HAS_THREADS_NPTL,$${UCLIBC_CONFIG_FILE},NPTL thread support)\n\n#\n# Check that the Buildroot configuration of the ABI matches the\n# configuration of the external toolchain.\n#\n# $1: cross-gcc path\n# $2: cross-readelf path\n#\ncheck_arm_abi = \\\n\t__CROSS_CC=$(strip $1) ; \\\n\tEXT_TOOLCHAIN_TARGET=`LANG=C $${__CROSS_CC} -v 2>&1 | grep ^Target | cut -f2 -d ' '` ; \\\n\tif ! echo $${EXT_TOOLCHAIN_TARGET} | grep -qE 'eabi(hf)?$$' ; then \\\n\t\techo \"External toolchain uses the unsuported OABI\" ; \\\n\t\texit 1 ; \\\n\tfi ; \\\n\tif ! echo 'int main(void) {}' | $${__CROSS_CC} -x c -o $(BUILD_DIR)/.br-toolchain-test.tmp - ; then \\\n\t\trm -f $(BUILD_DIR)/.br-toolchain-test.tmp*; \\\n\t\tabistr_$(BR2_ARM_EABI)='EABI'; \\\n\t\tabistr_$(BR2_ARM_EABIHF)='EABIhf'; \\\n\t\techo \"Incorrect ABI setting: $${abistr_y} selected, but toolchain is incompatible\"; \\\n\t\texit 1 ; \\\n\tfi ; \\\n\trm -f $(BUILD_DIR)/.br-toolchain-test.tmp*\n\n#\n# Check that the external toolchain supports C++\n#\n# $1: cross-g++ path\n#\ncheck_cplusplus = \\\n\t__CROSS_CXX=$(strip $1) ; \\\n\t$${__CROSS_CXX} -v > /dev/null 2>&1 ; \\\n\tif test $$? -ne 0 ; then \\\n\t\techo \"C++ support is selected but is not available in external toolchain\" ; \\\n\t\texit 1 ; \\\n\tfi\n\n#\n#\n# Check that the external toolchain supports D language\n#\n# $1: cross-gdc path\n#\ncheck_dlang = \\\n\t__CROSS_GDC=$(strip $1) ; \\\n\t__o=$(BUILD_DIR)/.br-toolchain-test-dlang.tmp ; \\\n\tprintf 'import std.stdio;\\nvoid main() { writeln(\"Hello World!\"); }\\n' | \\\n\t$${__CROSS_GDC} -x d -o $${__o} - ; \\\n\tif test $$? -ne 0 ; then \\\n\t\trm -f $${__o}* ; \\\n\t\techo \"D language support is selected but is not available in external toolchain\" ; \\\n\t\texit 1 ; \\\n\tfi ; \\\n\trm -f $${__o}* \\\n\n#\n#\n# Check that the external toolchain supports Fortran\n#\n# $1: cross-gfortran path\n#\ncheck_fortran = \\\n\t__CROSS_FC=$(strip $1) ; \\\n\t__o=$(BUILD_DIR)/.br-toolchain-test-fortran.tmp ; \\\n\tprintf 'program hello\\n\\tprint *, \"Hello Fortran!\\\\n\"\\nend program hello\\n' | \\\n\t$${__CROSS_FC} -x f95 -o $${__o} - ; \\\n\tif test $$? -ne 0 ; then \\\n\t\trm -f $${__o}* ; \\\n\t\techo \"Fortran support is selected but is not available in external toolchain\" ; \\\n\t\texit 1 ; \\\n\tfi ; \\\n\trm -f $${__o}* \\\n\n#\n#\n# Check that the external toolchain supports OpenMP\n#\n# $1: cross-gcc path\n#\ncheck_openmp = \\\n\t__CROSS_CC=$(strip $1) ; \\\n\t__o=$(BUILD_DIR)/.br-toolchain-test-openmp.tmp ; \\\n\tprintf '\\#include <omp.h>\\nint main(void) { return omp_get_thread_num(); }' | \\\n\t$${__CROSS_CC} -fopenmp -x c -o $${__o} - ; \\\n\tif test $$? -ne 0 ; then \\\n\t\trm -f $${__o}* ; \\\n\t\techo \"OpenMP support is selected but is not available in external toolchain\"; \\\n\t\texit 1 ; \\\n\tfi ; \\\n\trm -f $${__o}* \\\n\n#\n# Check that the cross-compiler given in the configuration exists\n#\n# $1: cross-gcc path\n#\ncheck_cross_compiler_exists = \\\n\t__CROSS_CC=$(strip $1) ; \\\n\t$${__CROSS_CC} -v > /dev/null 2>&1 ; \\\n\tif test $$? -ne 0 ; then \\\n\t\techo \"Cannot execute cross-compiler '$${__CROSS_CC}'\" ; \\\n\t\texit 1 ; \\\n\tfi\n\n#\n# Check for toolchains known not to work with Buildroot.\n# - For the Angstrom toolchains, we check by looking at the vendor part of\n#   the host tuple.\n# - Exclude distro-class toolchains which are not relocatable.\n# - Exclude broken toolchains which return \"libc.a\" with -print-file-name.\n# - Exclude toolchains which doesn't support --sysroot option.\n#\n# $1: cross-gcc path\n#\ncheck_unusable_toolchain = \\\n\t__CROSS_CC=$(strip $1) ; \\\n\tvendor=`$${__CROSS_CC} -dumpmachine | cut -f2 -d'-'` ; \\\n\tif test \"$${vendor}\" = \"angstrom\" ; then \\\n\t\techo \"Angstrom toolchains are not pure toolchains: they contain\" ; \\\n\t\techo \"many other libraries than just the C library, which makes\" ; \\\n\t\techo \"them unsuitable as external toolchains for build systems\" ; \\\n\t\techo \"such as Buildroot.\" ; \\\n\t\texit 1 ; \\\n\tfi; \\\n\twith_sysroot=`$${__CROSS_CC} -v 2>&1 |sed -r -e '/.* --with-sysroot=([^[:space:]]+)[[:space:]].*/!d; s//\\1/'`; \\\n\tif test \"$${with_sysroot}\"  = \"/\" ; then \\\n\t\techo \"Distribution toolchains are unsuitable for use by Buildroot,\" ; \\\n\t\techo \"as they were configured in a way that makes them non-relocatable,\"; \\\n\t\techo \"and contain a lot of pre-built libraries that would conflict with\"; \\\n\t\techo \"the ones Buildroot wants to build.\"; \\\n\t\texit 1; \\\n\tfi; \\\n\tlibc_a_path=`$${__CROSS_CC} -print-file-name=libc.a` ; \\\n\tif test \"$${libc_a_path}\" = \"libc.a\" ; then \\\n\t\techo \"Unable to detect the toolchain sysroot, Buildroot cannot use this toolchain.\" ; \\\n\t\texit 1 ; \\\n\tfi ; \\\n\tsysroot_dir=\"$(call toolchain_find_sysroot,$${__CROSS_CC})\" ; \\\n\tif test -z \"$${sysroot_dir}\" ; then \\\n\t\techo \"External toolchain doesn't support --sysroot. Cannot use.\" ; \\\n\t\texit 1 ; \\\n\tfi\n\n#\n# Check if the toolchain has SSP (stack smashing protector) support\n#\n# $1: cross-gcc path\n# $2: gcc ssp option\n#\ncheck_toolchain_ssp = \\\n\t__CROSS_CC=$(strip $1) ; \\\n\t__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` ; \\\n\tif [ \"$(BR2_TOOLCHAIN_HAS_SSP)\" != \"y\" -a \"$${__HAS_SSP}\" = \"y\" ] ; then \\\n\t\techo \"SSP support available in this toolchain, please enable BR2_TOOLCHAIN_EXTERNAL_HAS_SSP\" ; \\\n\t\texit 1 ; \\\n\tfi ; \\\n\tif [ \"$(BR2_TOOLCHAIN_HAS_SSP)\" = \"y\" -a \"$${__HAS_SSP}\" != \"y\" ] ; then \\\n\t\techo \"SSP support not available in this toolchain, please disable BR2_TOOLCHAIN_EXTERNAL_HAS_SSP\" ; \\\n\t\texit 1 ; \\\n\tfi ; \\\n\t__SSP_OPTION=$(2); \\\n\tif [ -n \"$${__SSP_OPTION}\" ] ; then \\\n\t\tif ! echo 'void main(){}' | $${__CROSS_CC} -Werror $${__SSP_OPTION} -x c - -o $(BUILD_DIR)/.br-toolchain-test.tmp >/dev/null 2>&1 ; then \\\n\t\t\techo \"SSP option $${__SSP_OPTION} not available in this toolchain, please select another SSP level\" ; \\\n\t\t\texit 1 ; \\\n\t\tfi; \\\n\tfi; \\\n\trm -f $(BUILD_DIR)/.br-toolchain-test.tmp*\n\n#\n# Generate gdbinit file for use with Buildroot\n#\ngen_gdbinit_file = \\\n\tmkdir -p $(STAGING_DIR)/usr/share/buildroot/ ; \\\n\techo \"add-auto-load-safe-path $(STAGING_DIR)\" > $(STAGING_DIR)/usr/share/buildroot/gdbinit ; \\\n\techo \"set sysroot $(STAGING_DIR)\" >> $(STAGING_DIR)/usr/share/buildroot/gdbinit\n\n# Given a path, determine the relative prefix (../) needed to return to the\n# root level. Note that the last component is treated as a file component; use a\n# trailing slash to force treating it as a directory. Examples:\n#     relpath_prefix(lib32) = \"\"\n#     relpath_prefix(lib32/octeon2) = \"../\"\n#     relpath_prefix(lib32/octeon2/) = \"../../\"\n#\n# $1: input path\ndefine relpath_prefix\n$$( \\\n\tprefix=\"\" ; \\\n\tnbslashs=`printf $1 | sed 's%[^/]%%g' | wc -c` ; \\\n\tfor slash in `seq 1 $${nbslashs}` ; do \\\n\t\tprefix=$${prefix}\"../\" ; \\\n\tdone ; \\\n\tprintf \"$$prefix\" ; \\\n)\nendef\n\n# Replace the destination of a symbolic link with a simpler version\n# For example,\n#     usr/lib/libfoo.so -> ../../lib32/libfoo.so.1\n# becomes\n#     usr/lib/libfoo.so -> ../../lib/libfoo.so.1\n# since 'lib32' is a symlink to 'lib'.\n#\n# Likewise,\n#     usr/lib/octeon2/libbar.so -> ../../../lib32/octeon2/libbar.so.1\n# becomes\n#     usr/lib/octeon2/libbar.so -> ../../lib/libbar.so.1\n# assuming lib32->lib and lib/octeon2->lib.\n#\n# $1: symlink\n# $2: base path\ndefine simplify_symlink\n( \\\n\tFULL_SRC=\"$$(readlink -f $$(dirname $1))/$$(basename $1)\" ; \\\n\tFULL_DEST=\"$$(readlink -f $1)\" ; \\\n\tFULL_BASE=\"$$(readlink -f $2)\" ; \\\n\tREL_SRC=\"$${FULL_SRC#$${FULL_BASE}/}\" ; \\\n\tREL_DEST=\"$${FULL_DEST#$${FULL_BASE}/}\" ; \\\n\tDOTS=\"$(call relpath_prefix,$${REL_SRC})\" ; \\\n\tln -sf \"$${DOTS}$${REL_DEST}\" \"$${FULL_SRC}\" ; \\\n)\nendef\n"
  },
  {
    "path": "toolchain/toolchain/toolchain.mk",
    "content": "################################################################################\n#\n# toolchain\n#\n################################################################################\n\nifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)\nTOOLCHAIN_DEPENDENCIES += toolchain-buildroot\nelse ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)\nTOOLCHAIN_DEPENDENCIES += toolchain-external\nendif\n\nTOOLCHAIN_ADD_TOOLCHAIN_DEPENDENCY = NO\nTOOLCHAIN_INSTALL_STAGING = YES\n\n# Apply a hack that Rick Felker suggested[1] to avoid conflicts between libc\n# headers and kernel headers. This is needed for kernel headers older than\n# 4.15. Kernel headers 4.15 and newer don't require __GLIBC__ to be defined.\n#\n# Augment the original suggestion with __USE_MISC since recent kernels\n# (older than 4.15) require this glibc internal macro. Also, as musl defines\n# IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO, add another macro to suppress\n# them in the kernel header, and avoid macro/enum conflict.\n#\n# Kernel version 3.12 introduced the libc-compat.h header.\n#\n# [1] http://www.openwall.com/lists/musl/2015/10/08/2\nifeq ($(BR2_TOOLCHAIN_USES_MUSL)$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12):$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15),yy:)\ndefine TOOLCHAIN_MUSL_KERNEL_HEADERS_COMPATIBILITY_HACK\n\t$(SED) 's/^#if defined(__GLIBC__)$$/#if 1/' \\\n\t\t$(STAGING_DIR)/usr/include/linux/libc-compat.h\n\t$(SED) '1s/^/#define __USE_MISC\\n/' \\\n\t\t$(STAGING_DIR)/usr/include/linux/libc-compat.h\n\t$(SED) '1s/^/#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 0\\n/' \\\n\t\t$(STAGING_DIR)/usr/include/linux/libc-compat.h\nendef\nTOOLCHAIN_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_MUSL_KERNEL_HEADERS_COMPATIBILITY_HACK\nendif\n\n# Install default nsswitch.conf file if the skeleton doesn't provide it\nifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)\ndefine TOOLCHAIN_GLIBC_COPY_NSSWITCH_FILE\n\t@if [ ! -f \"$(TARGET_DIR)/etc/nsswitch.conf\" ]; then \\\n\t\t$(INSTALL) -D -m 0644 package/glibc/nsswitch.conf $(TARGET_DIR)/etc/nsswitch.conf ; \\\n\tfi\nendef\nTOOLCHAIN_POST_INSTALL_TARGET_HOOKS += TOOLCHAIN_GLIBC_COPY_NSSWITCH_FILE\nendif\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "toolchain/toolchain-buildroot/Config.in",
    "content": "# Config entries for internal toolchain backend\n\nif BR2_TOOLCHAIN_BUILDROOT\n\ncomment \"Toolchain Buildroot Options\"\n\nconfig BR2_TOOLCHAIN_BUILDROOT_VENDOR\n\tstring \"custom toolchain vendor name\"\n\tdefault \"buildroot\"\n\thelp\n\t  This option allows to customize the \"vendor\" part of the\n\t  toolchain tuple, where the toolchain tuple has the form\n\t  <arch>-<vendor>-<os>-<libc>. The default value, \"buildroot\",\n\t  is fine for most cases, except in very specific situations\n\t  where gcc might make different decisions based on the vendor\n\t  part of the tuple. The value \"unknown\" is not allowed, as the\n\t  cross-compiling toolchain might then be confused with the\n\t  native toolchain when the target and host architecture are\n\t  identical. The value can not be empty either.\n\n\t  If you're not sure, just leave the default \"buildroot\" value.\n\nchoice\n\tprompt \"C library\"\n\tdefault BR2_TOOLCHAIN_BUILDROOT_UCLIBC\n\tdefault BR2_TOOLCHAIN_BUILDROOT_GLIBC if BR2_powerpc64\n\nconfig BR2_TOOLCHAIN_BUILDROOT_UCLIBC\n\tbool \"uClibc-ng\"\n\tdepends on BR2_aarch64 || BR2_aarch64_be || BR2_arcle   || BR2_arceb  || \\\n\t\t   BR2_arm     || BR2_armeb    || \\\n\t\t   BR2_i386    || BR2_m68k   || BR2_microblaze || \\\n\t\t   BR2_mips    || BR2_mipsel || BR2_mips64 || BR2_mips64el || \\\n\t\t   BR2_or1k    || BR2_powerpc || BR2_RISCV_64 || BR2_sh2a   || \\\n\t\t   BR2_sh4     || BR2_sh4eb   || BR2_sparc || BR2_xtensa || \\\n\t\t   BR2_x86_64\n\tselect BR2_TOOLCHAIN_USES_UCLIBC\n\thelp\n\t  This option selects uClibc-ng as the C library for the\n\t  cross-compilation toolchain.\n\n\t  http://uclibc-ng.org\n\nconfig BR2_TOOLCHAIN_BUILDROOT_GLIBC\n\tbool \"glibc\"\n\tdepends on BR2_arm         || BR2_armeb      || BR2_aarch64 || \\\n\t\t   BR2_aarch64_be  || BR2_i386       || BR2_mips    || \\\n\t\t   BR2_mipsel      || BR2_mips64     || BR2_mips64el|| \\\n\t\t   BR2_powerpc     || BR2_powerpc64  || BR2_powerpc64le || \\\n\t\t   BR2_riscv       || BR2_s390x      || BR2_sh          || \\\n\t\t   BR2_sparc64     || BR2_x86_64     || BR2_microblaze  || \\\n\t\t   BR2_nios2       || (BR2_arc && BR2_ARC_ATOMIC_EXT)   || BR2_csky\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 || !BR2_powerpc64le\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 || !BR2_MIPS_NAN_2008\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 || !BR2_RISCV_64\n\tdepends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 || !BR2_arc\n\tdepends on !BR2_powerpc_SPE\n\tdepends on BR2_RISCV_ISA_RVA || !BR2_riscv\n\tselect BR2_TOOLCHAIN_USES_GLIBC\n\thelp\n\t  This option selects glibc as the C library for the\n\t  cross-compilation toolchain.\n\n\t  http://www.gnu.org/software/libc/\n\ncomment \"glibc needs a toolchain w/ dynamic library, kernel headers >= 3.2\"\n\tdepends on BR2_USE_MMU\n\tdepends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2\n\n# glibc >= 2.26 require kernel headers >= 3.10 on powerpc64le.\ncomment \"glibc on powerpc64le needs a toolchain w/ headers >= 3.10\"\n\tdepends on BR2_powerpc64le\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n\n# Support for MIPS NAN2008 needs headers >= 4.5\ncomment \"glibc on MIPS w/ NAN2008 needs a toolchain w/ headers >= 4.5\"\n\tdepends on BR2_MIPS_NAN_2008\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5\n\nconfig BR2_TOOLCHAIN_BUILDROOT_MUSL\n\tbool \"musl\"\n\tdepends on BR2_aarch64\t   || BR2_arm   || BR2_armeb   || BR2_i386 || \\\n\t\t   BR2_microblaze  || BR2_mips  || BR2_mipsel  || BR2_mips64 || \\\n\t\t   BR2_mips64el    || BR2_or1k  || BR2_powerpc || BR2_powerpc64 || \\\n\t\t   BR2_powerpc64le || BR2_RISCV_64 || BR2_sh   || BR2_x86_64\n\tdepends on !BR2_powerpc_SPE # not supported, build breaks\n\tdepends on !(BR2_powerpc64 || BR2_powerpc64le) || BR2_POWERPC_CPU_HAS_ALTIVEC\n\t# sh2 nommu is supported by musl, but we don't have support\n\t# for it in Buildroot.\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_USES_MUSL\n\thelp\n\t  This option selects musl as the C library for the\n\t  cross-compilation toolchain.\n\n\t  https://www.musl-libc.org/\n\nendchoice\n\nconfig BR2_TOOLCHAIN_BUILDROOT_LIBC\n\tstring\n\tdefault \"uclibc\" if BR2_TOOLCHAIN_BUILDROOT_UCLIBC\n\tdefault \"glibc\"  if BR2_TOOLCHAIN_BUILDROOT_GLIBC\n\tdefault \"musl\"\t if BR2_TOOLCHAIN_BUILDROOT_MUSL\n\nsource \"package/linux-headers/Config.in.host\"\nsource \"package/linux-headers/Config.in\"\nsource \"package/musl/Config.in\"\nsource \"package/uclibc/Config.in\"\nsource \"package/glibc/Config.in\"\nsource \"package/binutils/Config.in.host\"\nsource \"package/gcc/Config.in.host\"\nsource \"package/elf2flt/Config.in.host\"\nendif\n"
  },
  {
    "path": "toolchain/toolchain-buildroot/toolchain-buildroot.mk",
    "content": "################################################################################\n#\n# toolchain-buildroot\n#\n################################################################################\n\nBR_LIBC = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_LIBC))\n\n# Triggering the build of the host-gcc-final will automatically do the\n# build of binutils, uClibc, kernel headers and all the intermediate\n# gcc steps.\n\nTOOLCHAIN_BUILDROOT_DEPENDENCIES = host-gcc-final\n\nTOOLCHAIN_BUILDROOT_ADD_TOOLCHAIN_DEPENDENCY = NO\n\n$(eval $(virtual-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/Config.in",
    "content": "if BR2_TOOLCHAIN_EXTERNAL\n\ncomment \"Toolchain External Options\"\n\nchoice\n\tprompt \"Toolchain\"\n\ncomment \"glibc toolchains only available with shared lib support\"\n\tdepends on BR2_STATIC_LIBS\n\n# Kept toolchains sorted by architecture in order to use some toolchain\n# as default choice\n\n# Aarch64 (use ARM toolchain by default)\nsource \"toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in\"\nsource \"toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in\"\nsource \"toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in\"\n\n# Aarch64 big-endian\nsource \"toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in\"\nsource \"toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in\"\n\n# ARC\nsource \"toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in\"\n\n# Andes\nsource \"toolchain/toolchain-external/toolchain-external-andes-nds32/Config.in\"\n\n# ARM (use ARM toolchain by default)\nsource \"toolchain/toolchain-external/toolchain-external-arm-arm/Config.in\"\nsource \"toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in\"\nsource \"toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in\"\n\n# ARM big-endian\nsource \"toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in\"\n\n# MIPS (use codesourcery toolchain by default)\nsource \"toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in\"\nsource \"toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in\"\nsource \"toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in\"\n\n# NIOSII\nsource \"toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in\"\n\n# Bootlin toolchains, available for virtually all architectures\nsource \"toolchain/toolchain-external/toolchain-external-bootlin/Config.in\"\n\n# Kept last, so it remains the non-default choice, unless there isn't\n# any available toolchain profile for the currently selected\n# architecture, but before toolchains from br2-external trees.\nsource \"toolchain/toolchain-external/toolchain-external-custom/Config.in\"\n\n# Toolchains from br2-external trees, if any\nsource \"$BR2_BASE_DIR/.br2-external.in.toolchains\"\n\nendchoice\n\nchoice\n\tprompt \"Toolchain origin\"\n\t# Keep compatibility with old defconfig files that are using\n\t# custom toolchains, and which are therefore assuming that\n\t# \"preinstalled\" in the default choice.\n\tdefault BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED if BR2_TOOLCHAIN_EXTERNAL_CUSTOM\n\nconfig BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD\n\tbool \"Toolchain to be downloaded and installed\"\n\thelp\n\t  Select this option if you want Buildroot to download and\n\t  install the toolchain. If you have selected a custom\n\t  toolchain, specify the URL in BR2_TOOLCHAIN_EXTERNAL_URL.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED\n\tbool \"Pre-installed toolchain\"\n\thelp\n\t  Select this option if you want to use a pre-installed\n\t  toolchain. Specify the path to this toolchain in\n\t  BR2_TOOLCHAIN_EXTERNAL_PATH.\n\nendchoice\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PATH\n\tstring \"Toolchain path\"\n\tdefault \"\"\n\tdepends on BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED\n\thelp\n\t  Path to where the external toolchain is installed. The\n\t  compiler itself is expected to be in the \"bin\" subdirectory\n\t  of this path.\n\n\t  If empty, the compiler will be searched in $PATH.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tbool\n\tselect BR2_TOOLCHAIN_USES_GLIBC\n\nconfig BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\tbool\n\tselect BR2_TOOLCHAIN_USES_UCLIBC\n\nconfig BR2_TOOLCHAIN_EXTERNAL_MUSL\n\tbool\n\tselect BR2_TOOLCHAIN_USES_MUSL\n\t# Compatibility headers: cdefs.h, queue.h\n\tselect BR2_PACKAGE_MUSL_COMPAT_HEADERS\n\n# Make sure the virtual-package infra checks the provider\nconfig BR2_PACKAGE_HAS_TOOLCHAIN_EXTERNAL\n\tbool\n\tdefault y\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tstring\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tstring\n\n# Kept toolchains sorted as in the choice above\n# The toolchain Config.in.options must define\n# BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL and BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\n# Aarch64\nsource \"toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in.options\"\nsource \"toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options\"\nsource \"toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options\"\n\n# Aarch64 big-endian\nsource \"toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in.options\"\nsource \"toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in.options\"\n\n# ARC\nsource \"toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options\"\n\n# Andes\nsource \"toolchain/toolchain-external/toolchain-external-andes-nds32/Config.in.options\"\n\n# ARM\nsource \"toolchain/toolchain-external/toolchain-external-arm-arm/Config.in.options\"\nsource \"toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options\"\nsource \"toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options\"\n\n# ARM big-endian\nsource \"toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options\"\n\n# MIPS\nsource \"toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options\"\nsource \"toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options\"\nsource \"toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options\"\n\n# NIOSII\nsource \"toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options\"\n\n# Bootlin toolchains\nsource \"toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options\"\n\n# Custom toolchains\nsource \"toolchain/toolchain-external/toolchain-external-custom/Config.in.options\"\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY\n\tbool \"Copy gdb server to the Target\"\n\tdepends on BR2_TOOLCHAIN_EXTERNAL\n\thelp\n\t  Copy the gdbserver provided by the external toolchain to the\n\t  target.\n\nendif # BR2_TOOLCHAIN_EXTERNAL\n"
  },
  {
    "path": "toolchain/toolchain-external/pkg-toolchain-external.mk",
    "content": "################################################################################\n# External toolchain package infrastructure\n#\n# This package infrastructure implements the support for external\n# toolchains, i.e toolchains that are available pre-built, ready to\n# use. Such toolchain may either be readily available on the Web\n# (Linaro, Sourcery CodeBench, from processor vendors) or may be built\n# with tools like Crosstool-NG or Buildroot itself. So far, we have\n# tested this with:\n#\n#  * Toolchains generated by Crosstool-NG\n#  * Toolchains generated by Buildroot\n#  * Toolchains provided by Linaro for the ARM and AArch64\n#    architectures\n#  * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM,\n#    MIPS, PowerPC, x86_64 and NIOS 2 architectures. For the MIPS\n#    toolchain, the -muclibc variant isn't supported yet, only the\n#    default glibc-based variant is.\n#  * Synopsys DesignWare toolchains for ARC cores\n#\n# The basic principle is the following\n#\n#  1. If the toolchain is not pre-installed, download and extract it\n#  in $(TOOLCHAIN_EXTERNAL_INSTALL_DIR). Otherwise,\n#  $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) points to were the toolchain has\n#  already been installed by the user.\n#\n#  2. For all external toolchains, perform some checks on the\n#  conformity between the toolchain configuration described in the\n#  Buildroot menuconfig system, and the real configuration of the\n#  external toolchain. This is for example important to make sure that\n#  the Buildroot configuration system knows whether the toolchain\n#  supports RPC, IPv6, locales, large files, etc. Unfortunately, these\n#  things cannot be detected automatically, since the value of these\n#  options (such as BR2_TOOLCHAIN_HAS_NATIVE_RPC) are needed at\n#  configuration time because these options are used as dependencies\n#  for other options. And at configuration time, we are not able to\n#  retrieve the external toolchain configuration.\n#\n#  3. Copy the libraries needed at runtime to the target directory,\n#  $(TARGET_DIR). Obviously, things such as the C library, the dynamic\n#  loader and a few other utility libraries are needed if dynamic\n#  applications are to be executed on the target system.\n#\n#  4. Copy the libraries and headers to the staging directory. This\n#  will allow all further calls to gcc to be made using --sysroot\n#  $(STAGING_DIR), which greatly simplifies the compilation of the\n#  packages when using external toolchains. So in the end, only the\n#  cross-compiler binaries remains external, all libraries and headers\n#  are imported into the Buildroot tree.\n#\n#  5. Build a toolchain wrapper which executes the external toolchain\n#  with a number of arguments (sysroot/march/mtune/..) hardcoded,\n#  so we're sure the correct configuration is always used and the\n#  toolchain behaves similar to an internal toolchain.\n#  This toolchain wrapper and symlinks are installed into\n#  $(HOST_DIR)/bin like for the internal toolchains, and the rest\n#  of Buildroot is handled identical for the 2 toolchain types.\n################################################################################\n\n#\n# Definitions of where the toolchain can be found\n#\n\nTOOLCHAIN_EXTERNAL_PREFIX = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))\nTOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR = $(HOST_DIR)/opt/ext-toolchain\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)\nTOOLCHAIN_EXTERNAL_INSTALL_DIR = $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)\nelse\nTOOLCHAIN_EXTERNAL_INSTALL_DIR = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PATH))\nendif\n\nifeq ($(TOOLCHAIN_EXTERNAL_INSTALL_DIR),)\nifneq ($(TOOLCHAIN_EXTERNAL_PREFIX),)\n# if no path set, figure it out from path\nTOOLCHAIN_EXTERNAL_BIN := $(dir $(shell which $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc))\nendif\nelse\nTOOLCHAIN_EXTERNAL_REL_BIN_PATH = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_REL_BIN_PATH))\nifeq ($(TOOLCHAIN_EXTERNAL_REL_BIN_PATH),)\nTOOLCHAIN_EXTERNAL_REL_BIN_PATH = bin\nendif\nTOOLCHAIN_EXTERNAL_BIN = $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/$(TOOLCHAIN_EXTERNAL_REL_BIN_PATH)\nendif\n\n# If this is a buildroot toolchain, it already has a wrapper which we want to\n# bypass. Since this is only evaluated after it has been extracted, we can use\n# $(wildcard ...) here.\nTOOLCHAIN_EXTERNAL_SUFFIX = \\\n\t$(if $(wildcard $(TOOLCHAIN_EXTERNAL_BIN)/*.br_real),.br_real)\n\nTOOLCHAIN_EXTERNAL_CROSS = $(TOOLCHAIN_EXTERNAL_BIN)/$(TOOLCHAIN_EXTERNAL_PREFIX)-\nTOOLCHAIN_EXTERNAL_CC = $(TOOLCHAIN_EXTERNAL_CROSS)gcc$(TOOLCHAIN_EXTERNAL_SUFFIX)\nTOOLCHAIN_EXTERNAL_CXX = $(TOOLCHAIN_EXTERNAL_CROSS)g++$(TOOLCHAIN_EXTERNAL_SUFFIX)\nTOOLCHAIN_EXTERNAL_GDC = $(TOOLCHAIN_EXTERNAL_CROSS)gdc$(TOOLCHAIN_EXTERNAL_SUFFIX)\nTOOLCHAIN_EXTERNAL_FC = $(TOOLCHAIN_EXTERNAL_CROSS)gfortran$(TOOLCHAIN_EXTERNAL_SUFFIX)\nTOOLCHAIN_EXTERNAL_READELF = $(TOOLCHAIN_EXTERNAL_CROSS)readelf\n\n# Normal handling of downloaded toolchain tarball extraction.\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)\n# As a regular package, the toolchain gets extracted in $(@D), but\n# since it's actually a fairly special package, we need it to be moved\n# into TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR.\ndefine TOOLCHAIN_EXTERNAL_MOVE\n\trm -rf $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)\n\tmkdir -p $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)\n\tmv $(@D)/* $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)/\nendef\nendif\n\n#\n# Definitions of the list of libraries that should be copied to the target.\n#\n\nTOOLCHAIN_EXTERNAL_LIBS += ld*.so.* libgcc_s.so.* libatomic.so.*\n\nifneq ($(BR2_SSP_NONE),y)\nTOOLCHAIN_EXTERNAL_LIBS += libssp.so.*\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y)\nTOOLCHAIN_EXTERNAL_LIBS += libc.so.* libcrypt.so.* libdl.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.*\nifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)\nTOOLCHAIN_EXTERNAL_LIBS += libpthread.so.*\nifneq ($(BR2_PACKAGE_GDB)$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),)\nTOOLCHAIN_EXTERNAL_LIBS += libthread_db.so.*\nendif # gdbserver\nendif # ! no threads\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC),y)\nTOOLCHAIN_EXTERNAL_LIBS += libnss_files.so.* libnss_dns.so.* libmvec.so.* libanl.so.*\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y)\nTOOLCHAIN_EXTERNAL_LIBS += libc.so\nendif\n\nifeq ($(BR2_INSTALL_LIBSTDCPP),y)\nTOOLCHAIN_EXTERNAL_LIBS += libstdc++.so.*\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y)\nTOOLCHAIN_EXTERNAL_LIBS += libgfortran.so.*\n# fortran needs quadmath on x86 and x86_64\nifeq ($(BR2_TOOLCHAIN_HAS_LIBQUADMATH),y)\nTOOLCHAIN_EXTERNAL_LIBS += libquadmath.so*\nendif\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_OPENMP),y)\nTOOLCHAIN_EXTERNAL_LIBS += libgomp.so.*\nendif\n\nifeq ($(BR2_TOOLCHAIN_HAS_DLANG),y)\nTOOLCHAIN_EXTERNAL_LIBS += libgdruntime.so* libgphobos.so*\nendif\n\nTOOLCHAIN_EXTERNAL_LIBS += $(addsuffix .so*,$(call qstrip,$(BR2_TOOLCHAIN_EXTRA_LIBS)))\n\n\n#\n# Definition of the CFLAGS to use with the external toolchain, as well as the\n# common toolchain wrapper build arguments\n#\n\n# march/mtune/floating point mode needs to be passed to the external toolchain\n# to select the right multilib variant\nifeq ($(BR2_x86_64),y)\nTOOLCHAIN_EXTERNAL_CFLAGS += -m64\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_64\nendif\nifneq ($(GCC_TARGET_ARCH),)\nTOOLCHAIN_EXTERNAL_CFLAGS += -march=$(GCC_TARGET_ARCH)\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARCH='\"$(GCC_TARGET_ARCH)\"'\nendif\nifneq ($(GCC_TARGET_CPU),)\nTOOLCHAIN_EXTERNAL_CFLAGS += -mcpu=$(GCC_TARGET_CPU)\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_CPU='\"$(GCC_TARGET_CPU)\"'\nendif\nifneq ($(GCC_TARGET_ABI),)\nTOOLCHAIN_EXTERNAL_CFLAGS += -mabi=$(GCC_TARGET_ABI)\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ABI='\"$(GCC_TARGET_ABI)\"'\nendif\nifeq ($(BR2_TOOLCHAIN_HAS_MNAN_OPTION),y)\nifneq ($(GCC_TARGET_NAN),)\nTOOLCHAIN_EXTERNAL_CFLAGS += -mnan=$(GCC_TARGET_NAN)\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_NAN='\"$(GCC_TARGET_NAN)\"'\nendif\nendif\nifneq ($(GCC_TARGET_FP32_MODE),)\nTOOLCHAIN_EXTERNAL_CFLAGS += -mfp$(GCC_TARGET_FP32_MODE)\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FP32_MODE='\"$(GCC_TARGET_FP32_MODE)\"'\nendif\nifneq ($(GCC_TARGET_FPU),)\nTOOLCHAIN_EXTERNAL_CFLAGS += -mfpu=$(GCC_TARGET_FPU)\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FPU='\"$(GCC_TARGET_FPU)\"'\nendif\nifneq ($(GCC_TARGET_FLOAT_ABI),)\nTOOLCHAIN_EXTERNAL_CFLAGS += -mfloat-abi=$(GCC_TARGET_FLOAT_ABI)\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FLOAT_ABI='\"$(GCC_TARGET_FLOAT_ABI)\"'\nendif\nifneq ($(GCC_TARGET_MODE),)\nTOOLCHAIN_EXTERNAL_CFLAGS += -m$(GCC_TARGET_MODE)\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MODE='\"$(GCC_TARGET_MODE)\"'\nendif\nifeq ($(BR2_BINFMT_FLAT),y)\nTOOLCHAIN_EXTERNAL_CFLAGS += -Wl,-elf2flt\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_BINFMT_FLAT\nendif\nifeq ($(BR2_mipsel)$(BR2_mips64el),y)\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_LITTLE_ENDIAN\nTOOLCHAIN_EXTERNAL_CFLAGS += -EL\nendif\nifeq ($(BR2_mips)$(BR2_mips64),y)\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_BIG_ENDIAN\nTOOLCHAIN_EXTERNAL_CFLAGS += -EB\nendif\nifeq ($(BR2_arceb),y)\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARC_TARGET_BIG_ENDIAN\nTOOLCHAIN_EXTERNAL_CFLAGS += -EB\nendif\n\nTOOLCHAIN_EXTERNAL_CFLAGS += $(call qstrip,$(BR2_TARGET_OPTIMIZATION))\n\nifeq ($(BR2_SOFT_FLOAT),y)\nTOOLCHAIN_EXTERNAL_CFLAGS += -msoft-float\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_SOFTFLOAT=1\nendif\n\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \\\n\t-DBR_CROSS_PATH_SUFFIX='\"$(TOOLCHAIN_EXTERNAL_SUFFIX)\"'\n\nifeq ($(filter $(HOST_DIR)/%,$(TOOLCHAIN_EXTERNAL_BIN)),)\n# TOOLCHAIN_EXTERNAL_BIN points outside HOST_DIR => absolute path\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \\\n\t-DBR_CROSS_PATH_ABS='\"$(TOOLCHAIN_EXTERNAL_BIN)\"'\nelse\n# TOOLCHAIN_EXTERNAL_BIN points inside HOST_DIR => relative path\nTOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \\\n\t-DBR_CROSS_PATH_REL='\"$(TOOLCHAIN_EXTERNAL_BIN:$(HOST_DIR)/%=%)\"'\nendif\n\n\n#\n# The following functions creates the symbolic links needed to get the\n# cross-compilation tools visible in $(HOST_DIR)/bin. Some of\n# links are done directly to the corresponding tool in the external\n# toolchain installation directory, while some other links are done to\n# the toolchain wrapper (preprocessor, C, C++ and Fortran compiler)\n#\n# We skip gdb symlink when we are building our own gdb to prevent two\n# gdb's in $(HOST_DIR)/bin.\n#\n# The LTO support in gcc creates wrappers for ar, ranlib and nm which load\n# the lto plugin. These wrappers are called *-gcc-ar, *-gcc-ranlib, and\n# *-gcc-nm and should be used instead of the real programs when -flto is\n# used. However, we should not add the toolchain wrapper for them, and they\n# match the *cc-* pattern. Therefore, an additional case is added for *-ar,\n# *-ranlib and *-nm.\ndefine TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER\n\t$(Q)cd $(HOST_DIR)/bin; \\\n\tfor i in $(TOOLCHAIN_EXTERNAL_CROSS)*; do \\\n\t\tbase=$${i##*/}; \\\n\t\tcase \"$$base\" in \\\n\t\t*-ar|*-ranlib|*-nm) \\\n\t\t\tln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%..%') .; \\\n\t\t\t;; \\\n\t\t*cc|*cc-*|*++|*++-*|*cpp|*-gfortran|*-gdc) \\\n\t\t\tln -sf toolchain-wrapper $$base; \\\n\t\t\t;; \\\n\t\t*gdb|*gdbtui) \\\n\t\t\tif test \"$(BR2_PACKAGE_HOST_GDB)\" != \"y\"; then \\\n\t\t\t\tln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%..%') .; \\\n\t\t\tfi \\\n\t\t\t;; \\\n\t\t*) \\\n\t\t\tln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%..%') .; \\\n\t\t\t;; \\\n\t\tesac; \\\n\tdone\nendef\n\n\n# Various utility functions used by the external toolchain package\n# infrastructure. Those functions are mainly responsible for:\n#\n#   - installation the toolchain libraries to $(TARGET_DIR)\n#   - copying the toolchain sysroot to $(STAGING_DIR)\n#   - installing a gdbinit file\n#\n# Details about sysroot directory selection.\n#\n# To find the sysroot directory, we use the trick of looking for the\n# 'libc.a' file with the -print-file-name gcc option, and then\n# mangling the path to find the base directory of the sysroot.\n#\n# Note that we do not use the -print-sysroot option, because it is\n# only available since gcc 4.4.x, and we only recently dropped support\n# for 4.2.x and 4.3.x.\n#\n# When doing this, we don't pass any option to gcc that could select a\n# multilib variant (such as -march) as we want the \"main\" sysroot,\n# which contains all variants of the C library in the case of multilib\n# toolchains. We use the TARGET_CC_NO_SYSROOT variable, which is the\n# path of the cross-compiler, without the --sysroot=$(STAGING_DIR),\n# since what we want to find is the location of the original toolchain\n# sysroot. This \"main\" sysroot directory is stored in SYSROOT_DIR.\n#\n# Then, multilib toolchains are a little bit more complicated, since\n# they in fact have multiple sysroots, one for each variant supported\n# by the toolchain. So we need to find the particular sysroot we're\n# interested in.\n#\n# To do so, we ask the compiler where its sysroot is by passing all\n# flags (including -march and al.), except the --sysroot flag since we\n# want to the compiler to tell us where its original sysroot\n# is. ARCH_SUBDIR will contain the subdirectory, in the main\n# SYSROOT_DIR, that corresponds to the selected architecture\n# variant. ARCH_SYSROOT_DIR will contain the full path to this\n# location.\n#\n# One might wonder why we don't just bother with ARCH_SYSROOT_DIR. The\n# fact is that in multilib toolchains, the header files are often only\n# present in the main sysroot, and only the libraries are available in\n# each variant-specific sysroot directory.\n\n\n# toolchain_find_sysroot returns the sysroot location for the given\n# compiler + flags. We need to handle cases where libc.a is in:\n#\n#  - lib/\n#  - usr/lib/\n#  - lib32/\n#  - lib64/\n#  - lib32-fp/ (Cavium toolchain)\n#  - lib64-fp/ (Cavium toolchain)\n#  - usr/lib/<tuple>/ (Linaro toolchain)\n#\n# And variations on these.\ndefine toolchain_find_sysroot\n$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:/(usr/)?lib(32|64)?([^/]*)?/([^/]*/)?libc\\.a:/:')\nendef\n\n# Returns the lib subdirectory for the given compiler + flags (i.e\n# typically lib32 or lib64 for some toolchains)\ndefine toolchain_find_libdir\n$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:.*/(usr/)?(lib(32|64)?([^/]*)?(/[^/]*)?)/libc.a:\\2:')\nendef\n\n# Returns the location of the libc.a file for the given compiler + flags\ndefine toolchain_find_libc_a\n$$(readlink -f $$(LANG=C $(1) -print-file-name=libc.a))\nendef\n\n# Integration of the toolchain into Buildroot: find the main sysroot\n# and the variant-specific sysroot, then copy the needed libraries to\n# the $(TARGET_DIR) and copy the whole sysroot (libraries and headers)\n# to $(STAGING_DIR).\n#\n# Variables are defined as follows:\n#\n# SYSROOT_DIR:          the main sysroot directory, deduced from the location of\n#                       the libc.a file in the default multilib variant, by\n#                       removing the usr/lib[32|64]/libc.a part of the path.\n#                       Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/\n#\n# ARCH_SYSROOT_DIR:     the sysroot of the selected multilib variant,\n#                       deduced from the location of the libc.a file in the\n#                       selected multilib variant (taking into account the\n#                       CFLAGS), by removing usr/lib[32|64]/libc.a at the end\n#                       of the path.\n#                       Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/mips16/soft-float/el/\n#\n# ARCH_LIB_DIR:         'lib', 'lib32' or 'lib64' depending on where libraries\n#                       are stored. Deduced from the location of the libc.a file\n#                       in the selected multilib variant, by looking at\n#                       usr/lib??/libc.a.\n#                       Ex: lib\n#\n# ARCH_SUBDIR:          the relative location of the sysroot of the selected\n#                       multilib variant compared to the main sysroot.\n#                       Ex: mips16/soft-float/el\n#\n# SUPPORT_LIB_DIR:      some toolchains, such as recent Linaro toolchains,\n#                       store GCC support libraries (libstdc++,\n#                       libgcc_s, etc.) outside of the sysroot. In\n#                       this case, SUPPORT_LIB_DIR is set to a\n#                       non-empty value, and points to the directory\n#                       where these support libraries are\n#                       available. Those libraries will be copied to\n#                       our sysroot, and the directory will also be\n#                       considered when searching libraries for copy\n#                       to the target filesystem.\n#\n# Please be very careful to check the major toolchain sources:\n# Buildroot, Crosstool-NG, CodeSourcery and Linaro\n# before doing any modification on the below logic.\n\nifeq ($(BR2_STATIC_LIBS),)\ndefine TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS\n\t$(Q)$(call MESSAGE,\"Copying external toolchain libraries to target...\")\n\t$(Q)for libpattern in $(TOOLCHAIN_EXTERNAL_LIBS); do \\\n\t\t$(call copy_toolchain_lib_root,$$libpattern); \\\n\tdone\nendef\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),y)\ndefine TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER\n\t$(Q)$(call MESSAGE,\"Copying gdbserver\")\n\t$(Q)ARCH_SYSROOT_DIR=\"$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))\" ; \\\n\tARCH_LIB_DIR=\"$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))\" ; \\\n\tgdbserver_found=0 ; \\\n\tfor d in $${ARCH_SYSROOT_DIR}/usr \\\n\t\t $${ARCH_SYSROOT_DIR}/../debug-root/usr \\\n\t\t $${ARCH_SYSROOT_DIR}/usr/$${ARCH_LIB_DIR} \\\n\t\t $(TOOLCHAIN_EXTERNAL_INSTALL_DIR); do \\\n\t\tif test -f $${d}/bin/gdbserver ; then \\\n\t\t\tinstall -m 0755 -D $${d}/bin/gdbserver $(TARGET_DIR)/usr/bin/gdbserver ; \\\n\t\t\tgdbserver_found=1 ; \\\n\t\t\tbreak ; \\\n\t\tfi ; \\\n\tdone ; \\\n\tif [ $${gdbserver_found} -eq 0 ] ; then \\\n\t\techo \"Could not find gdbserver in external toolchain\" ; \\\n\t\texit 1 ; \\\n\tfi\nendef\nendif\n\ndefine TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS\n\t$(Q)SYSROOT_DIR=\"$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC))\" ; \\\n\tARCH_SYSROOT_DIR=\"$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))\" ; \\\n\tARCH_LIB_DIR=\"$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))\" ; \\\n\tSUPPORT_LIB_DIR=\"\" ; \\\n\tif test `find $${ARCH_SYSROOT_DIR} -name 'libstdc++.a' | wc -l` -eq 0 ; then \\\n\t\tLIBSTDCPP_A_LOCATION=$$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-file-name=libstdc++.a) ; \\\n\t\tif [ -e \"$${LIBSTDCPP_A_LOCATION}\" ]; then \\\n\t\t\tSUPPORT_LIB_DIR=`readlink -f $${LIBSTDCPP_A_LOCATION} | sed -r -e 's:libstdc\\+\\+\\.a::'` ; \\\n\t\tfi ; \\\n\tfi ; \\\n\tif [ \"$${SYSROOT_DIR}\" == \"$${ARCH_SYSROOT_DIR}\" ] ; then \\\n\t\tARCH_SUBDIR=\"\" ; \\\n\telif [ \"`dirname $${ARCH_SYSROOT_DIR}`\" = \"`dirname $${SYSROOT_DIR}`\" ] ; then \\\n\t\tSYSROOT_DIR_DIRNAME=`dirname $${SYSROOT_DIR}`/ ; \\\n\t\tARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e \"s:^$${SYSROOT_DIR_DIRNAME}(.*)/$$:\\1:\"` ; \\\n\telse \\\n\t\tARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e \"s:^$${SYSROOT_DIR}(.*)/$$:\\1:\"` ; \\\n\tfi ; \\\n\t$(call MESSAGE,\"Copying external toolchain sysroot to staging...\") ; \\\n\t$(call copy_toolchain_sysroot,$${SYSROOT_DIR},$${ARCH_SYSROOT_DIR},$${ARCH_SUBDIR},$${ARCH_LIB_DIR},$${SUPPORT_LIB_DIR})\nendef\n\n# Create a symlink from (usr/)$(ARCH_LIB_DIR) to lib.\n# Note: the skeleton package additionally creates lib32->lib or lib64->lib\n# (as appropriate)\n#\n# $1: destination directory (TARGET_DIR / STAGING_DIR)\ncreate_lib_symlinks = \\\n\t$(Q)DESTDIR=\"$(strip $1)\" ; \\\n\tARCH_LIB_DIR=\"$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))\" ; \\\n\tif [ ! -e \"$${DESTDIR}/$${ARCH_LIB_DIR}\" -a ! -e \"$${DESTDIR}/usr/$${ARCH_LIB_DIR}\" ]; then \\\n\t\trelpath=\"$(call relpath_prefix,$${ARCH_LIB_DIR})\" ; \\\n\t\tln -snf $${relpath}lib \"$${DESTDIR}/$${ARCH_LIB_DIR}\" ; \\\n\t\tln -snf $${relpath}lib \"$${DESTDIR}/usr/$${ARCH_LIB_DIR}\" ; \\\n\tfi\n\ndefine TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK\n\t$(call create_lib_symlinks,$(STAGING_DIR))\nendef\n\ndefine TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK\n\t$(call create_lib_symlinks,$(TARGET_DIR))\nendef\n\n#\n# Generate gdbinit file for use with Buildroot\n#\ndefine TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT\n\t$(Q)if test -f $(TARGET_CROSS)gdb ; then \\\n\t\t$(call MESSAGE,\"Installing gdbinit\"); \\\n\t\t$(gen_gdbinit_file); \\\n\tfi\nendef\n\n# GCC installs a libstdcxx-...so-gdb.py file that gdb will load automatically,\n# but it contains hardcoded paths referring to the location where the (external)\n# toolchain was built. Fix up these paths so that the pretty printers can be\n# loaded automatically.\n# By default, the pretty printers are installed in\n# $(datadir)/gcc-$(gcc_version)/python but this could have been overwritten with\n# the gcc configure option: --with-python-dir. We thus have to search the\n# correct path first.\ndefine TOOLCHAIN_EXTERNAL_FIXUP_PRETTY_PRINTER_LOADER\n\t$(Q)loadfiles=$$(find $(STAGING_DIR) -name 'libstdc++.so*-gdb.py' 2>/dev/null); \\\n\tpythondir=$$(find $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) -path '*/libstdcxx/__init__.py' 2>/dev/null | sed 's%/libstdcxx/__init__.py%%' | head -n1); \\\n\tif [ -n \"$$loadfiles\" ] && [ -n \"$$pythondir\" ]; then \\\n\t\techo \"Fixing up hardcoded paths in GDB pretty-printer auto-load file(s) for libstdcxx: $$loadfiles\"; \\\n\t\tsed -ri \\\n\t\t\t-e 's%^libdir\\s*=.*%libdir = \"$(STAGING_DIR)/lib\"%' \\\n\t\t\t-e \"s%^pythondir\\s*=.*%pythondir = '$$pythondir'%\" \\\n\t\t\t$$loadfiles; \\\n\tfi\nendef\n\n# uClibc-ng dynamic loader is called ld-uClibc.so.1, but gcc is not\n# patched specifically for uClibc-ng, so it continues to generate\n# binaries that expect the dynamic loader to be named ld-uClibc.so.0,\n# like with the original uClibc. Therefore, we create an additional\n# symbolic link to make uClibc-ng systems work properly.\ndefine TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO\n\t$(Q)if test -e $(TARGET_DIR)/lib/ld-uClibc.so.1; then \\\n\t\tln -sf ld-uClibc.so.1 $(TARGET_DIR)/lib/ld-uClibc.so.0 ; \\\n\tfi\n\t$(Q)if test -e $(TARGET_DIR)/lib/ld64-uClibc.so.1; then \\\n\t\tln -sf ld64-uClibc.so.1 $(TARGET_DIR)/lib/ld64-uClibc.so.0 ; \\\n\tfi\nendef\n\ndefine TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LDD\n\t$(Q)if test -f $(STAGING_DIR)/usr/bin/ldd ; then \\\n\t\t$(INSTALL) -D $(STAGING_DIR)/usr/bin/ldd $(TARGET_DIR)/usr/bin/ldd ; \\\n\t\t$(SED) 's:.*/bin/bash:#!/bin/sh:' $(TARGET_DIR)/usr/bin/ldd ; \\\n\tfi\nendef\n\n################################################################################\n# inner-toolchain-external-package -- defines the generic installation rules\n# for external toolchain packages\n#\n#  argument 1 is the lowercase package name\n#  argument 2 is the uppercase package name, including a HOST_ prefix\n#             for host packages\n#  argument 3 is the uppercase package name, without the HOST_ prefix\n#             for host packages\n#  argument 4 is the type (target or host)\n################################################################################\ndefine inner-toolchain-external-package\n\n$(2)_INSTALL_STAGING = YES\n$(2)_ADD_TOOLCHAIN_DEPENDENCY = NO\n\n# In fact, we don't need to download the toolchain, since it is already\n# available on the system, so force the site and source to be empty so\n# that nothing will be downloaded/extracted.\nifeq ($$(BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED),y)\n$(2)_SITE =\n$(2)_SOURCE =\nendif\n\nifeq ($$(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)\n$(2)_EXCLUDES = usr/lib/locale/*\n\n$(2)_POST_EXTRACT_HOOKS += \\\n\tTOOLCHAIN_EXTERNAL_MOVE\nendif\n\n# Checks for an already installed toolchain: check the toolchain\n# location, check that it is usable, and then verify that it\n# matches the configuration provided in Buildroot: ABI, C++ support,\n# kernel headers version, type of C library and all C library features.\ndefine $(2)_CONFIGURE_CMDS\n\t$$(Q)$$(call check_cross_compiler_exists,$$(TOOLCHAIN_EXTERNAL_CC))\n\t$$(Q)$$(call check_unusable_toolchain,$$(TOOLCHAIN_EXTERNAL_CC))\n\t$$(Q)SYSROOT_DIR=\"$$(call toolchain_find_sysroot,$$(TOOLCHAIN_EXTERNAL_CC))\" ; \\\n\t$$(call check_kernel_headers_version,\\\n\t\t$$(BUILD_DIR),\\\n\t\t$$(call toolchain_find_sysroot,$$(TOOLCHAIN_EXTERNAL_CC)),\\\n\t\t$$(call qstrip,$$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)),\\\n\t\t$$(if $$(BR2_TOOLCHAIN_EXTERNAL_CUSTOM),loose,strict)); \\\n\t$$(call check_gcc_version,$$(TOOLCHAIN_EXTERNAL_CC),\\\n\t\t$$(call qstrip,$$(BR2_TOOLCHAIN_GCC_AT_LEAST))); \\\n\tif test \"$$(BR2_arm)\" = \"y\" ; then \\\n\t\t$$(call check_arm_abi,\\\n\t\t\t\"$$(TOOLCHAIN_EXTERNAL_CC) $$(TOOLCHAIN_EXTERNAL_CFLAGS)\") ; \\\n\tfi ; \\\n\tif test \"$$(BR2_INSTALL_LIBSTDCPP)\" = \"y\" ; then \\\n\t\t$$(call check_cplusplus,$$(TOOLCHAIN_EXTERNAL_CXX)) ; \\\n\tfi ; \\\n\tif test \"$$(BR2_TOOLCHAIN_HAS_DLANG)\" = \"y\" ; then \\\n\t\t$$(call check_dlang,$$(TOOLCHAIN_EXTERNAL_GDC)) ; \\\n\tfi ; \\\n\tif test \"$$(BR2_TOOLCHAIN_HAS_FORTRAN)\" = \"y\" ; then \\\n\t\t$$(call check_fortran,$$(TOOLCHAIN_EXTERNAL_FC)) ; \\\n\tfi ; \\\n\tif test \"$$(BR2_TOOLCHAIN_HAS_OPENMP)\" = \"y\" ; then \\\n\t\t$$(call check_openmp,$$(TOOLCHAIN_EXTERNAL_CC)) ; \\\n\tfi ; \\\n\tif test \"$$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)\" = \"y\" ; then \\\n\t\t$$(call check_uclibc,$$$${SYSROOT_DIR}) ; \\\n\telif test \"$$(BR2_TOOLCHAIN_EXTERNAL_MUSL)\" = \"y\" ; then \\\n\t\t$$(call check_musl,\\\n\t\t\t\"$$(TOOLCHAIN_EXTERNAL_CC) $$(TOOLCHAIN_EXTERNAL_CFLAGS)\") ; \\\n\telse \\\n\t\t$$(call check_glibc,$$$${SYSROOT_DIR}) ; \\\n\tfi\n\t$$(Q)$$(call check_toolchain_ssp,$$(TOOLCHAIN_EXTERNAL_CC),$(BR2_SSP_OPTION))\nendef\n\n$(2)_TOOLCHAIN_WRAPPER_ARGS += $$(TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS)\n\n$(2)_BUILD_CMDS = $$(TOOLCHAIN_WRAPPER_BUILD)\n\ndefine $(2)_INSTALL_STAGING_CMDS\n\t$$(TOOLCHAIN_WRAPPER_INSTALL)\n\t$$(TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK)\n\t$$(TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS)\n\t$$(TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER)\n\t$$(TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT)\n\t$$(TOOLCHAIN_EXTERNAL_FIXUP_PRETTY_PRINTER_LOADER)\nendef\n\n# Even though we're installing things in both the staging, the host\n# and the target directory, we do everything within the\n# install-staging step, arbitrarily.\ndefine $(2)_INSTALL_TARGET_CMDS\n\t$$(TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK)\n\t$$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS)\n\t$$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER)\n\t$$(TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO)\n\t$$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LDD)\nendef\n\n# Call the generic package infrastructure to generate the necessary\n# make targets\n$(call inner-generic-package,$(1),$(2),$(3),$(4))\n\nendef\n\ntoolchain-external-package = $(call inner-toolchain-external-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-andes-nds32/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_ANDES_NDS32\n\tbool \"Andes nds32\"\n\tdepends on BR2_nds32\n\tdepends on !BR2_STATIC_LIBS\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tselect BR2_HOSTARCH_NEEDS_IA32_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\thelp\n\t  nds32 toolchain for the nds32 architecture. It uses GCC\n\t  8.2.1, GDB 8.1.1, glibc 2.28, Binutils 2.30. It generates\n\t  code that runs on ae3xx platform\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-andes-nds32/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_ANDES_NDS32\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"nds32le-linux\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-andes-nds32\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-andes-nds32/toolchain-external-andes-nds32.hash",
    "content": "# From https://github.com/vincentzwc/prebuilt-nds32-toolchain/releases/download/20180521/nds32le-linux-glibc-v3-upstream.tar.gz\nsha256 6050601df85ad93a4c211c1d57ed3773edb62aa505f7e07d7d555652e83af2cc  nds32le-linux-glibc-v3-upstream.tar.gz\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-andes-nds32/toolchain-external-andes-nds32.mk",
    "content": "################################################################################\n#\n# toolchain-external-andes-nds32\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_ANDES_NDS32_SITE = https://github.com/vincentzwc/prebuilt-nds32-toolchain/releases/download/20180521\nTOOLCHAIN_EXTERNAL_ANDES_NDS32_SOURCE = nds32le-linux-glibc-v3-upstream.tar.gz\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64\n\tbool \"Arm AArch64 2021.07\"\n\tdepends on BR2_aarch64\n\tdepends on BR2_HOSTARCH = \"x86_64\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_OPENMP\n\thelp\n\t  Arm toolchain for the AArch64 architecture.\n\n\t  This is the same toolchain that was previously distributed by\n\t  Linaro.\n\n\t  https://developer.arm.com/open-source/gnu-toolchain\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"aarch64-none-linux-gnu\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-arm-aarch64\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-arm-aarch64/toolchain-external-arm-aarch64.hash",
    "content": "# From https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz.asc\nmd5  07bbe2b5277b75ba36a924e9136366a4  gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz\n# locally calculated\nsha256  1e33d53dea59c8de823bbdfe0798280bdcd138636c7060da9d77a97ded095a84  gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-arm-aarch64/toolchain-external-arm-aarch64.mk",
    "content": "################################################################################\n#\n# toolchain-external-arm-aarch64\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_ARM_AARCH64_VERSION = 2021.07\nTOOLCHAIN_EXTERNAL_ARM_AARCH64_SITE = https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_VERSION)/binrel\n\nTOOLCHAIN_EXTERNAL_ARM_AARCH64_SOURCE = gcc-arm-10.3-$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_VERSION)-x86_64-aarch64-none-linux-gnu.tar.xz\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE\n\tbool \"Arm AArch64 BE 2021.07\"\n\tdepends on BR2_aarch64_be\n\tdepends on BR2_HOSTARCH = \"x86_64\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_OPENMP\n\thelp\n\t  Arm toolchain for the AArch64 Big Endian architecture.\n\n\t  This is the same toolchain that was previously distributed by\n\t  Linaro.\n\n\t  https://developer.arm.com/open-source/gnu-toolchain\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"aarch64_be-none-linux-gnu\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-arm-aarch64-be\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-arm-aarch64-be/toolchain-external-arm-aarch64-be.hash",
    "content": "# From https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64_be-none-linux-gnu.tar.xz.asc\nmd5  54cbaef7db7eb3de27732500f9da9c6f  gcc-arm-10.3-2021.07-x86_64-aarch64_be-none-linux-gnu.tar.xz\n# locally calculated\nsha256  63c34cac07ceadd74620ea87f27af1aa6a6f55c20a5bc116af21a59ddb6b6a6a  gcc-arm-10.3-2021.07-x86_64-aarch64_be-none-linux-gnu.tar.xz\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-arm-aarch64-be/toolchain-external-arm-aarch64-be.mk",
    "content": "################################################################################\n#\n# toolchain-external-arm-aarch64-be\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_VERSION = 2021.07\nTOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_SITE = https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_VERSION)/binrel\n\nTOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_SOURCE = gcc-arm-10.3-$(TOOLCHAIN_EXTERNAL_ARM_AARCH64_BE_VERSION)-x86_64-aarch64_be-none-linux-gnu.tar.xz\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-arm-arm/Config.in",
    "content": "comment \"Arm toolchains available for Cortex-A with NEON + EABIhf\"\n\tdepends on BR2_arm\n\tdepends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF || !BR2_ARM_CPU_HAS_NEON\n\tdepends on !BR2_STATIC_LIBS\n\nconfig BR2_TOOLCHAIN_EXTERNAL_ARM_ARM\n\tbool \"Arm ARM 2021.07\"\n\tdepends on BR2_arm\n\tdepends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A\n\tdepends on BR2_ARM_CPU_HAS_NEON\n\tdepends on BR2_HOSTARCH = \"x86_64\"\n\tdepends on BR2_ARM_EABIHF\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_OPENMP\n\thelp\n\t  Arm toolchain for the ARM architecture. It uses GCC 10.3,\n\t  GDB 10.2, glibc 2.33, Binutils 2.36.1. It generates code\n\t  that runs on all Cortex-A profile devices. The code\n\t  generated uses the hard floating point calling convention,\n\t  and uses the NEON FPU instructions.\n\n\t  This is the same toolchain that was previously distributed by\n\t  Linaro.\n\n\t  https://developer.arm.com/open-source/gnu-toolchain\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-arm-arm/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_ARM_ARM\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"arm-none-linux-gnueabihf\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-arm-arm\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-arm-arm/toolchain-external-arm-arm.hash",
    "content": "# From https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz.asc\nmd5  87ec580b290df2febc7c476f59484635  gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz\n# locally calculated\nsha256  aa074fa8371a4f73fecbd16bd62c8b1945f23289e26414794f130d6ccdf8e39c  gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-arm-arm/toolchain-external-arm-arm.mk",
    "content": "################################################################################\n#\n# toolchain-external-arm-arm\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_ARM_ARM_VERSION = 2021.07\nTOOLCHAIN_EXTERNAL_ARM_ARM_SITE = https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-$(TOOLCHAIN_EXTERNAL_ARM_ARM_VERSION)/binrel\n\nTOOLCHAIN_EXTERNAL_ARM_ARM_SOURCE = gcc-arm-10.3-$(TOOLCHAIN_EXTERNAL_ARM_ARM_VERSION)-x86_64-arm-none-linux-gnueabihf.tar.xz\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-bootlin/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_BOOTLIN\n\tbool \"Bootlin toolchains\"\n\tdepends on BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCH_SUPPORTS\n\tdepends on BR2_HOSTARCH = \"x86_64\"\n\thelp\n\t  Bootlin toolchains are built using Buildroot for a large\n\t  number of architectures and C libraries configurations.\n\n\t  https://toolchains.bootlin.com\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options",
    "content": "# This file was auto-generated by support/scripts/gen-bootlin-toolchains\n# Do not edit\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCH_SUPPORTS\n\tbool\n\tdefault y if BR2_aarch64\n\tdefault y if BR2_aarch64_be\n\tdefault y if BR2_arcle && BR2_arc750d\n\tdefault y if BR2_arcle && BR2_archs38\n\tdefault y if BR2_ARM_CPU_ARMV5 && BR2_ARM_EABI\n\tdefault y if BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF\n\tdefault y if BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF\n\tdefault y if BR2_ARM_CPU_ARMV7M\n\tdefault y if BR2_m68k_m68k\n\tdefault y if BR2_m68k_cf\n\tdefault y if BR2_microblazebe\n\tdefault y if BR2_microblazeel\n\tdefault y if BR2_mips && BR2_mips_32 && !BR2_MIPS_SOFT_FLOAT\n\tdefault y if BR2_mipsel && BR2_mips_32 && !BR2_MIPS_SOFT_FLOAT\n\tdefault y if BR2_mipsel && BR2_mips_32r5 && !BR2_MIPS_SOFT_FLOAT\n\tdefault y if BR2_mipsel && BR2_mips_32r6 && !BR2_MIPS_SOFT_FLOAT\n\tdefault y if BR2_mips64 && BR2_mips_64 && !BR2_MIPS_SOFT_FLOAT\n\tdefault y if BR2_mips64 && BR2_mips_64 && BR2_MIPS_NABI32 && !BR2_MIPS_SOFT_FLOAT\n\tdefault y if BR2_mips64el && BR2_mips_64 && BR2_MIPS_NABI32 && !BR2_MIPS_SOFT_FLOAT\n\tdefault y if BR2_mips64el && BR2_mips_64r6 && BR2_MIPS_NABI32 && !BR2_MIPS_SOFT_FLOAT\n\tdefault y if BR2_nios2\n\tdefault y if BR2_or1k\n\tdefault y if BR2_powerpc && BR2_powerpc_440fp\n\tdefault y if BR2_powerpc && BR2_powerpc_e300c3\n\tdefault y if BR2_powerpc && BR2_powerpc_e500mc\n\tdefault y if BR2_powerpc64 && BR2_powerpc_e5500\n\tdefault y if BR2_powerpc64 && BR2_powerpc_e6500\n\tdefault y if BR2_powerpc64 && BR2_powerpc_power8\n\tdefault y if BR2_powerpc64le && BR2_powerpc_power8\n\tdefault y if BR2_riscv && BR2_riscv_g && BR2_RISCV_32 && BR2_RISCV_ABI_ILP32D\n\tdefault y if BR2_riscv && BR2_riscv_g && BR2_RISCV_64 && BR2_RISCV_ABI_LP64\n\tdefault y if BR2_sh && BR2_sh4\n\tdefault y if BR2_sh && BR2_sh4aeb\n\tdefault y if BR2_sparc64 && BR2_sparc_v9\n\tdefault y if BR2_sparc && BR2_sparc_v8\n\tdefault y if BR2_x86_64 && BR2_X86_CPU_HAS_MMX && BR2_X86_CPU_HAS_SSE && BR2_X86_CPU_HAS_SSE2 && BR2_X86_CPU_HAS_SSE3 && BR2_X86_CPU_HAS_SSSE3 && BR2_X86_CPU_HAS_SSE4 && BR2_X86_CPU_HAS_SSE42\n\tdefault y if BR2_i386 && BR2_X86_CPU_HAS_MMX && BR2_X86_CPU_HAS_SSE && BR2_X86_CPU_HAS_SSE2 && BR2_X86_CPU_HAS_SSE3 && BR2_X86_CPU_HAS_SSSE3\n\tdefault y if BR2_i386 && !BR2_x86_i486 && !BR2_x86_i586 && !BR2_x86_x1000\n\tdefault y if BR2_xtensa && BR2_XTENSA_CUSTOM && BR2_XTENSA_LITTLE_ENDIAN\n\nif BR2_TOOLCHAIN_EXTERNAL_BOOTLIN\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"$(ARCH)-linux\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-bootlin\"\n\nchoice\n\tprompt \"Bootlin toolchain variant\"\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_BLEEDING_EDGE\n\tbool \"aarch64 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_aarch64\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the aarch64 architecture, using the\n\t  glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE\n\tbool \"aarch64 glibc stable 2020.08-1\"\n\tdepends on BR2_aarch64\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the aarch64 architecture, using the\n\t  glibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_BLEEDING_EDGE\n\tbool \"aarch64 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_aarch64\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the aarch64 architecture, using the\n\t  musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_STABLE\n\tbool \"aarch64 musl stable 2020.08-1\"\n\tdepends on BR2_aarch64\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the aarch64 architecture, using the\n\t  musl C library. This is a stable version, which means it is\n\t  using stable and proven versions of gcc, gdb and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_BLEEDING_EDGE\n\tbool \"aarch64 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_aarch64\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the aarch64 architecture, using the\n\t  uclibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_STABLE\n\tbool \"aarch64 uclibc stable 2020.08-1\"\n\tdepends on BR2_aarch64\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the aarch64 architecture, using the\n\t  uclibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_BLEEDING_EDGE\n\tbool \"aarch64be glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_aarch64_be\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the aarch64be architecture, using the\n\t  glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_STABLE\n\tbool \"aarch64be glibc stable 2020.08-1\"\n\tdepends on BR2_aarch64_be\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the aarch64be architecture, using the\n\t  glibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_BLEEDING_EDGE\n\tbool \"aarch64be uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_aarch64_be\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the aarch64be architecture, using the\n\t  uclibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_STABLE\n\tbool \"aarch64be uclibc stable 2020.08-1\"\n\tdepends on BR2_aarch64_be\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the aarch64be architecture, using the\n\t  uclibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_BLEEDING_EDGE\n\tbool \"arcle-750d uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_arcle\n\tdepends on BR2_arc750d\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the arcle-750d architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_STABLE\n\tbool \"arcle-750d uclibc stable 2020.08-1\"\n\tdepends on BR2_arcle\n\tdepends on BR2_arc750d\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the arcle-750d architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_BLEEDING_EDGE\n\tbool \"arcle-hs38 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_arcle\n\tdepends on BR2_archs38\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the arcle-hs38 architecture, using\n\t  the glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_STABLE\n\tbool \"arcle-hs38 glibc stable 2020.08-1\"\n\tdepends on BR2_arcle\n\tdepends on BR2_archs38\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the arcle-hs38 architecture, using\n\t  the glibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_BLEEDING_EDGE\n\tbool \"arcle-hs38 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_arcle\n\tdepends on BR2_archs38\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the arcle-hs38 architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_STABLE\n\tbool \"arcle-hs38 uclibc stable 2020.08-1\"\n\tdepends on BR2_arcle\n\tdepends on BR2_archs38\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the arcle-hs38 architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_BLEEDING_EDGE\n\tbool \"armv5-eabi glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV5\n\tdepends on BR2_ARM_EABI\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the armv5-eabi architecture, using\n\t  the glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_STABLE\n\tbool \"armv5-eabi glibc stable 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV5\n\tdepends on BR2_ARM_EABI\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the armv5-eabi architecture, using\n\t  the glibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_BLEEDING_EDGE\n\tbool \"armv5-eabi musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV5\n\tdepends on BR2_ARM_EABI\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the armv5-eabi architecture, using\n\t  the musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_STABLE\n\tbool \"armv5-eabi musl stable 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV5\n\tdepends on BR2_ARM_EABI\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the armv5-eabi architecture, using\n\t  the musl C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_BLEEDING_EDGE\n\tbool \"armv5-eabi uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV5\n\tdepends on BR2_ARM_EABI\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the armv5-eabi architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_STABLE\n\tbool \"armv5-eabi uclibc stable 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV5\n\tdepends on BR2_ARM_EABI\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the armv5-eabi architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_BLEEDING_EDGE\n\tbool \"armv6-eabihf glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV6\n\tdepends on BR2_ARM_EABIHF\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the armv6-eabihf architecture, using\n\t  the glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_STABLE\n\tbool \"armv6-eabihf glibc stable 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV6\n\tdepends on BR2_ARM_EABIHF\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the armv6-eabihf architecture, using\n\t  the glibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_BLEEDING_EDGE\n\tbool \"armv6-eabihf musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV6\n\tdepends on BR2_ARM_EABIHF\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the armv6-eabihf architecture, using\n\t  the musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_STABLE\n\tbool \"armv6-eabihf musl stable 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV6\n\tdepends on BR2_ARM_EABIHF\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the armv6-eabihf architecture, using\n\t  the musl C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_BLEEDING_EDGE\n\tbool \"armv6-eabihf uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV6\n\tdepends on BR2_ARM_EABIHF\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the armv6-eabihf architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_STABLE\n\tbool \"armv6-eabihf uclibc stable 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV6\n\tdepends on BR2_ARM_EABIHF\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the armv6-eabihf architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_BLEEDING_EDGE\n\tbool \"armv7-eabihf glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV7A\n\tdepends on BR2_ARM_EABIHF\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the armv7-eabihf architecture, using\n\t  the glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_STABLE\n\tbool \"armv7-eabihf glibc stable 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV7A\n\tdepends on BR2_ARM_EABIHF\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the armv7-eabihf architecture, using\n\t  the glibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_BLEEDING_EDGE\n\tbool \"armv7-eabihf musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV7A\n\tdepends on BR2_ARM_EABIHF\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the armv7-eabihf architecture, using\n\t  the musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_STABLE\n\tbool \"armv7-eabihf musl stable 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV7A\n\tdepends on BR2_ARM_EABIHF\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the armv7-eabihf architecture, using\n\t  the musl C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_BLEEDING_EDGE\n\tbool \"armv7-eabihf uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV7A\n\tdepends on BR2_ARM_EABIHF\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the armv7-eabihf architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_STABLE\n\tbool \"armv7-eabihf uclibc stable 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV7A\n\tdepends on BR2_ARM_EABIHF\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the armv7-eabihf architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_BLEEDING_EDGE\n\tbool \"armv7m uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV7M\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the armv7m architecture, using the\n\t  uclibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_STABLE\n\tbool \"armv7m uclibc stable 2020.08-1\"\n\tdepends on BR2_ARM_CPU_ARMV7M\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the armv7m architecture, using the\n\t  uclibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_BLEEDING_EDGE\n\tbool \"m68k-68xxx uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_m68k_m68k\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the m68k-68xxx architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_STABLE\n\tbool \"m68k-68xxx uclibc stable 2020.08-1\"\n\tdepends on BR2_m68k_m68k\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the m68k-68xxx architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_BLEEDING_EDGE\n\tbool \"m68k-coldfire uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_m68k_cf\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the m68k-coldfire architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_STABLE\n\tbool \"m68k-coldfire uclibc stable 2020.08-1\"\n\tdepends on BR2_m68k_cf\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the m68k-coldfire architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_BLEEDING_EDGE\n\tbool \"microblazebe glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_microblazebe\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the microblazebe architecture, using\n\t  the glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_STABLE\n\tbool \"microblazebe glibc stable 2020.08-1\"\n\tdepends on BR2_microblazebe\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the microblazebe architecture, using\n\t  the glibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_BLEEDING_EDGE\n\tbool \"microblazebe musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_microblazebe\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the microblazebe architecture, using\n\t  the musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_STABLE\n\tbool \"microblazebe musl stable 2020.08-1\"\n\tdepends on BR2_microblazebe\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the microblazebe architecture, using\n\t  the musl C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_BLEEDING_EDGE\n\tbool \"microblazebe uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_microblazebe\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the microblazebe architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_STABLE\n\tbool \"microblazebe uclibc stable 2020.08-1\"\n\tdepends on BR2_microblazebe\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the microblazebe architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_BLEEDING_EDGE\n\tbool \"microblazeel glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_microblazeel\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the microblazeel architecture, using\n\t  the glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_STABLE\n\tbool \"microblazeel glibc stable 2020.08-1\"\n\tdepends on BR2_microblazeel\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the microblazeel architecture, using\n\t  the glibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_BLEEDING_EDGE\n\tbool \"microblazeel musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_microblazeel\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the microblazeel architecture, using\n\t  the musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_STABLE\n\tbool \"microblazeel musl stable 2020.08-1\"\n\tdepends on BR2_microblazeel\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the microblazeel architecture, using\n\t  the musl C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_BLEEDING_EDGE\n\tbool \"microblazeel uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_microblazeel\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the microblazeel architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_STABLE\n\tbool \"microblazeel uclibc stable 2020.08-1\"\n\tdepends on BR2_microblazeel\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the microblazeel architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_BLEEDING_EDGE\n\tbool \"mips32 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mips\n\tdepends on BR2_mips_32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips32 architecture, using the\n\t  glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_STABLE\n\tbool \"mips32 glibc stable 2020.08-1\"\n\tdepends on BR2_mips\n\tdepends on BR2_mips_32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips32 architecture, using the\n\t  glibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_BLEEDING_EDGE\n\tbool \"mips32 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_mips\n\tdepends on BR2_mips_32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips32 architecture, using the\n\t  musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_STABLE\n\tbool \"mips32 musl stable 2020.08-1\"\n\tdepends on BR2_mips\n\tdepends on BR2_mips_32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips32 architecture, using the\n\t  musl C library. This is a stable version, which means it is\n\t  using stable and proven versions of gcc, gdb and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_BLEEDING_EDGE\n\tbool \"mips32 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mips\n\tdepends on BR2_mips_32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips32 architecture, using the\n\t  uclibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_STABLE\n\tbool \"mips32 uclibc stable 2020.08-1\"\n\tdepends on BR2_mips\n\tdepends on BR2_mips_32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips32 architecture, using the\n\t  uclibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_BLEEDING_EDGE\n\tbool \"mips32el glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips32el architecture, using the\n\t  glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_STABLE\n\tbool \"mips32el glibc stable 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips32el architecture, using the\n\t  glibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_BLEEDING_EDGE\n\tbool \"mips32el musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips32el architecture, using the\n\t  musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_STABLE\n\tbool \"mips32el musl stable 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips32el architecture, using the\n\t  musl C library. This is a stable version, which means it is\n\t  using stable and proven versions of gcc, gdb and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_BLEEDING_EDGE\n\tbool \"mips32el uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips32el architecture, using the\n\t  uclibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_STABLE\n\tbool \"mips32el uclibc stable 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips32el architecture, using the\n\t  uclibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_BLEEDING_EDGE\n\tbool \"mips32r5el glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32r5\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips32r5el architecture, using\n\t  the glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_STABLE\n\tbool \"mips32r5el glibc stable 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32r5\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips32r5el architecture, using\n\t  the glibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_BLEEDING_EDGE\n\tbool \"mips32r5el musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32r5\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips32r5el architecture, using\n\t  the musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_STABLE\n\tbool \"mips32r5el musl stable 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32r5\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips32r5el architecture, using\n\t  the musl C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_BLEEDING_EDGE\n\tbool \"mips32r5el uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32r5\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips32r5el architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_STABLE\n\tbool \"mips32r5el uclibc stable 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32r5\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips32r5el architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_BLEEDING_EDGE\n\tbool \"mips32r6el glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32r6\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips32r6el architecture, using\n\t  the glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_STABLE\n\tbool \"mips32r6el glibc stable 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32r6\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips32r6el architecture, using\n\t  the glibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_BLEEDING_EDGE\n\tbool \"mips32r6el musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32r6\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips32r6el architecture, using\n\t  the musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_STABLE\n\tbool \"mips32r6el musl stable 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32r6\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips32r6el architecture, using\n\t  the musl C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_BLEEDING_EDGE\n\tbool \"mips32r6el uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32r6\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips32r6el architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_STABLE\n\tbool \"mips32r6el uclibc stable 2020.08-1\"\n\tdepends on BR2_mipsel\n\tdepends on BR2_mips_32r6\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips32r6el architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_BLEEDING_EDGE\n\tbool \"mips64-n32 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mips64\n\tdepends on BR2_mips_64\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips64-n32 architecture, using\n\t  the glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_STABLE\n\tbool \"mips64-n32 glibc stable 2020.08-1\"\n\tdepends on BR2_mips64\n\tdepends on BR2_mips_64\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips64-n32 architecture, using\n\t  the glibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_BLEEDING_EDGE\n\tbool \"mips64-n32 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_mips64\n\tdepends on BR2_mips_64\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips64-n32 architecture, using\n\t  the musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_STABLE\n\tbool \"mips64-n32 musl stable 2020.08-1\"\n\tdepends on BR2_mips64\n\tdepends on BR2_mips_64\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips64-n32 architecture, using\n\t  the musl C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_BLEEDING_EDGE\n\tbool \"mips64-n32 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mips64\n\tdepends on BR2_mips_64\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips64-n32 architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_STABLE\n\tbool \"mips64-n32 uclibc stable 2020.08-1\"\n\tdepends on BR2_mips64\n\tdepends on BR2_mips_64\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips64-n32 architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_BLEEDING_EDGE\n\tbool \"mips64el-n32 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mips64el\n\tdepends on BR2_mips_64\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips64el-n32 architecture, using\n\t  the glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_STABLE\n\tbool \"mips64el-n32 glibc stable 2020.08-1\"\n\tdepends on BR2_mips64el\n\tdepends on BR2_mips_64\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips64el-n32 architecture, using\n\t  the glibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_BLEEDING_EDGE\n\tbool \"mips64el-n32 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_mips64el\n\tdepends on BR2_mips_64\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips64el-n32 architecture, using\n\t  the musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_STABLE\n\tbool \"mips64el-n32 musl stable 2020.08-1\"\n\tdepends on BR2_mips64el\n\tdepends on BR2_mips_64\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips64el-n32 architecture, using\n\t  the musl C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_BLEEDING_EDGE\n\tbool \"mips64el-n32 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mips64el\n\tdepends on BR2_mips_64\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips64el-n32 architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_STABLE\n\tbool \"mips64el-n32 uclibc stable 2020.08-1\"\n\tdepends on BR2_mips64el\n\tdepends on BR2_mips_64\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips64el-n32 architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_BLEEDING_EDGE\n\tbool \"mips64r6el-n32 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mips64el\n\tdepends on BR2_mips_64r6\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips64r6el-n32 architecture,\n\t  using the glibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_STABLE\n\tbool \"mips64r6el-n32 glibc stable 2020.08-1\"\n\tdepends on BR2_mips64el\n\tdepends on BR2_mips_64r6\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the mips64r6el-n32 architecture,\n\t  using the glibc C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_BLEEDING_EDGE\n\tbool \"mips64r6el-n32 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_mips64el\n\tdepends on BR2_mips_64r6\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips64r6el-n32 architecture,\n\t  using the musl C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_STABLE\n\tbool \"mips64r6el-n32 musl stable 2020.08-1\"\n\tdepends on BR2_mips64el\n\tdepends on BR2_mips_64r6\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the mips64r6el-n32 architecture,\n\t  using the musl C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_BLEEDING_EDGE\n\tbool \"mips64r6el-n32 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_mips64el\n\tdepends on BR2_mips_64r6\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips64r6el-n32 architecture,\n\t  using the uclibc C library. This is a bleeding-edge\n\t  version, which means it is using the latest versions of\n\t  gcc, gdb and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_STABLE\n\tbool \"mips64r6el-n32 uclibc stable 2020.08-1\"\n\tdepends on BR2_mips64el\n\tdepends on BR2_mips_64r6\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_MIPS_SOFT_FLOAT\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the mips64r6el-n32 architecture,\n\t  using the uclibc C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_BLEEDING_EDGE\n\tbool \"nios2 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_nios2\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the nios2 architecture, using the\n\t  glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_STABLE\n\tbool \"nios2 glibc stable 2020.08-1\"\n\tdepends on BR2_nios2\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the nios2 architecture, using the\n\t  glibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_BLEEDING_EDGE\n\tbool \"openrisc musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_or1k\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the openrisc architecture, using the\n\t  musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_STABLE\n\tbool \"openrisc musl stable 2020.08-1\"\n\tdepends on BR2_or1k\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the openrisc architecture, using the\n\t  musl C library. This is a stable version, which means it is\n\t  using stable and proven versions of gcc, gdb and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_BLEEDING_EDGE\n\tbool \"openrisc uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_or1k\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the openrisc architecture, using the\n\t  uclibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_STABLE\n\tbool \"openrisc uclibc stable 2020.08-1\"\n\tdepends on BR2_or1k\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the openrisc architecture, using the\n\t  uclibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_BLEEDING_EDGE\n\tbool \"powerpc-440fp glibc bleeding-edge 2020.08-2\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_440fp\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\thelp\n\t  Bootlin toolchain for the powerpc-440fp architecture, using\n\t  the glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_STABLE\n\tbool \"powerpc-440fp glibc stable 2020.08-2\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_440fp\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\thelp\n\t  Bootlin toolchain for the powerpc-440fp architecture, using\n\t  the glibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_BLEEDING_EDGE\n\tbool \"powerpc-440fp musl bleeding-edge 2020.08-2\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_440fp\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the powerpc-440fp architecture, using\n\t  the musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_STABLE\n\tbool \"powerpc-440fp musl stable 2020.08-2\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_440fp\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the powerpc-440fp architecture, using\n\t  the musl C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_BLEEDING_EDGE\n\tbool \"powerpc-440fp uclibc bleeding-edge 2020.08-2\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_440fp\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the powerpc-440fp architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_STABLE\n\tbool \"powerpc-440fp uclibc stable 2020.08-2\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_440fp\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the powerpc-440fp architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_BLEEDING_EDGE\n\tbool \"powerpc-e300c3 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_e300c3\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the powerpc-e300c3 architecture,\n\t  using the glibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_STABLE\n\tbool \"powerpc-e300c3 glibc stable 2020.08-1\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_e300c3\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the powerpc-e300c3 architecture,\n\t  using the glibc C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_BLEEDING_EDGE\n\tbool \"powerpc-e300c3 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_e300c3\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the powerpc-e300c3 architecture,\n\t  using the musl C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_STABLE\n\tbool \"powerpc-e300c3 musl stable 2020.08-1\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_e300c3\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the powerpc-e300c3 architecture,\n\t  using the musl C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_BLEEDING_EDGE\n\tbool \"powerpc-e300c3 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_e300c3\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the powerpc-e300c3 architecture,\n\t  using the uclibc C library. This is a bleeding-edge\n\t  version, which means it is using the latest versions of\n\t  gcc, gdb and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_STABLE\n\tbool \"powerpc-e300c3 uclibc stable 2020.08-1\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_e300c3\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the powerpc-e300c3 architecture,\n\t  using the uclibc C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_BLEEDING_EDGE\n\tbool \"powerpc-e500mc glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_e500mc\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the powerpc-e500mc architecture,\n\t  using the glibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_STABLE\n\tbool \"powerpc-e500mc glibc stable 2020.08-1\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_e500mc\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the powerpc-e500mc architecture,\n\t  using the glibc C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_BLEEDING_EDGE\n\tbool \"powerpc-e500mc musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_e500mc\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the powerpc-e500mc architecture,\n\t  using the musl C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_STABLE\n\tbool \"powerpc-e500mc musl stable 2020.08-1\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_e500mc\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the powerpc-e500mc architecture,\n\t  using the musl C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_BLEEDING_EDGE\n\tbool \"powerpc-e500mc uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_e500mc\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the powerpc-e500mc architecture,\n\t  using the uclibc C library. This is a bleeding-edge\n\t  version, which means it is using the latest versions of\n\t  gcc, gdb and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_STABLE\n\tbool \"powerpc-e500mc uclibc stable 2020.08-1\"\n\tdepends on BR2_powerpc\n\tdepends on BR2_powerpc_e500mc\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the powerpc-e500mc architecture,\n\t  using the uclibc C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_BLEEDING_EDGE\n\tbool \"powerpc64-e5500 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc64\n\tdepends on BR2_powerpc_e5500\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the powerpc64-e5500 architecture,\n\t  using the glibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_STABLE\n\tbool \"powerpc64-e5500 glibc stable 2020.08-1\"\n\tdepends on BR2_powerpc64\n\tdepends on BR2_powerpc_e5500\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the powerpc64-e5500 architecture,\n\t  using the glibc C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_BLEEDING_EDGE\n\tbool \"powerpc64-e6500 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc64\n\tdepends on BR2_powerpc_e6500\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the powerpc64-e6500 architecture,\n\t  using the glibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_STABLE\n\tbool \"powerpc64-e6500 glibc stable 2020.08-1\"\n\tdepends on BR2_powerpc64\n\tdepends on BR2_powerpc_e6500\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the powerpc64-e6500 architecture,\n\t  using the glibc C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_BLEEDING_EDGE\n\tbool \"powerpc64-e6500 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc64\n\tdepends on BR2_powerpc_e6500\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the powerpc64-e6500 architecture,\n\t  using the musl C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_STABLE\n\tbool \"powerpc64-e6500 musl stable 2020.08-1\"\n\tdepends on BR2_powerpc64\n\tdepends on BR2_powerpc_e6500\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the powerpc64-e6500 architecture,\n\t  using the musl C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_BLEEDING_EDGE\n\tbool \"powerpc64-power8 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc64\n\tdepends on BR2_powerpc_power8\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the powerpc64-power8 architecture,\n\t  using the glibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_STABLE\n\tbool \"powerpc64-power8 glibc stable 2020.08-1\"\n\tdepends on BR2_powerpc64\n\tdepends on BR2_powerpc_power8\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the powerpc64-power8 architecture,\n\t  using the glibc C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_BLEEDING_EDGE\n\tbool \"powerpc64-power8 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc64\n\tdepends on BR2_powerpc_power8\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the powerpc64-power8 architecture,\n\t  using the musl C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_STABLE\n\tbool \"powerpc64-power8 musl stable 2020.08-1\"\n\tdepends on BR2_powerpc64\n\tdepends on BR2_powerpc_power8\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the powerpc64-power8 architecture,\n\t  using the musl C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_BLEEDING_EDGE\n\tbool \"powerpc64le-power8 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc64le\n\tdepends on BR2_powerpc_power8\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the powerpc64le-power8 architecture,\n\t  using the glibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_STABLE\n\tbool \"powerpc64le-power8 glibc stable 2020.08-1\"\n\tdepends on BR2_powerpc64le\n\tdepends on BR2_powerpc_power8\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the powerpc64le-power8 architecture,\n\t  using the glibc C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_BLEEDING_EDGE\n\tbool \"powerpc64le-power8 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_powerpc64le\n\tdepends on BR2_powerpc_power8\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the powerpc64le-power8 architecture,\n\t  using the musl C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_STABLE\n\tbool \"powerpc64le-power8 musl stable 2020.08-1\"\n\tdepends on BR2_powerpc64le\n\tdepends on BR2_powerpc_power8\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the powerpc64le-power8 architecture,\n\t  using the musl C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_GLIBC_BLEEDING_EDGE\n\tbool \"riscv32-ilp32d glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_riscv\n\tdepends on BR2_riscv_g\n\tdepends on BR2_RISCV_32\n\tdepends on BR2_RISCV_ABI_ILP32D\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\thelp\n\t  Bootlin toolchain for the riscv32-ilp32d architecture,\n\t  using the glibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_GLIBC_BLEEDING_EDGE\n\tbool \"riscv64 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_riscv\n\tdepends on BR2_riscv_g\n\tdepends on BR2_RISCV_64\n\tdepends on BR2_RISCV_ABI_LP64\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the riscv64 architecture, using the\n\t  glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_MUSL_BLEEDING_EDGE\n\tbool \"riscv64 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_riscv\n\tdepends on BR2_riscv_g\n\tdepends on BR2_RISCV_64\n\tdepends on BR2_RISCV_ABI_LP64\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the riscv64 architecture, using the\n\t  musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_BLEEDING_EDGE\n\tbool \"sh-sh4 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_sh\n\tdepends on BR2_sh4\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the sh-sh4 architecture, using the\n\t  glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_STABLE\n\tbool \"sh-sh4 glibc stable 2020.08-1\"\n\tdepends on BR2_sh\n\tdepends on BR2_sh4\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the sh-sh4 architecture, using the\n\t  glibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_BLEEDING_EDGE\n\tbool \"sh-sh4 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_sh\n\tdepends on BR2_sh4\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the sh-sh4 architecture, using the\n\t  musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_STABLE\n\tbool \"sh-sh4 musl stable 2020.08-1\"\n\tdepends on BR2_sh\n\tdepends on BR2_sh4\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the sh-sh4 architecture, using the\n\t  musl C library. This is a stable version, which means it is\n\t  using stable and proven versions of gcc, gdb and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_BLEEDING_EDGE\n\tbool \"sh-sh4 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_sh\n\tdepends on BR2_sh4\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the sh-sh4 architecture, using the\n\t  uclibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_STABLE\n\tbool \"sh-sh4 uclibc stable 2020.08-1\"\n\tdepends on BR2_sh\n\tdepends on BR2_sh4\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the sh-sh4 architecture, using the\n\t  uclibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_BLEEDING_EDGE\n\tbool \"sh-sh4aeb glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_sh\n\tdepends on BR2_sh4aeb\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the sh-sh4aeb architecture, using the\n\t  glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_STABLE\n\tbool \"sh-sh4aeb glibc stable 2020.08-1\"\n\tdepends on BR2_sh\n\tdepends on BR2_sh4aeb\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the sh-sh4aeb architecture, using the\n\t  glibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_BLEEDING_EDGE\n\tbool \"sh-sh4aeb musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_sh\n\tdepends on BR2_sh4aeb\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the sh-sh4aeb architecture, using the\n\t  musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_STABLE\n\tbool \"sh-sh4aeb musl stable 2020.08-1\"\n\tdepends on BR2_sh\n\tdepends on BR2_sh4aeb\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the sh-sh4aeb architecture, using the\n\t  musl C library. This is a stable version, which means it is\n\t  using stable and proven versions of gcc, gdb and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_BLEEDING_EDGE\n\tbool \"sparc64 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_sparc64\n\tdepends on BR2_sparc_v9\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the sparc64 architecture, using the\n\t  glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_STABLE\n\tbool \"sparc64 glibc stable 2020.08-1\"\n\tdepends on BR2_sparc64\n\tdepends on BR2_sparc_v9\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the sparc64 architecture, using the\n\t  glibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_BLEEDING_EDGE\n\tbool \"sparcv8 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_sparc\n\tdepends on BR2_sparc_v8\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the sparcv8 architecture, using the\n\t  uclibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_STABLE\n\tbool \"sparcv8 uclibc stable 2020.08-1\"\n\tdepends on BR2_sparc\n\tdepends on BR2_sparc_v8\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the sparcv8 architecture, using the\n\t  uclibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE\n\tbool \"x86-64-core-i7 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_x86_64\n\tdepends on BR2_X86_CPU_HAS_MMX\n\tdepends on BR2_X86_CPU_HAS_SSE\n\tdepends on BR2_X86_CPU_HAS_SSE2\n\tdepends on BR2_X86_CPU_HAS_SSE3\n\tdepends on BR2_X86_CPU_HAS_SSSE3\n\tdepends on BR2_X86_CPU_HAS_SSE4\n\tdepends on BR2_X86_CPU_HAS_SSE42\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the x86-64-core-i7 architecture,\n\t  using the glibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE\n\tbool \"x86-64-core-i7 glibc stable 2020.08-1\"\n\tdepends on BR2_x86_64\n\tdepends on BR2_X86_CPU_HAS_MMX\n\tdepends on BR2_X86_CPU_HAS_SSE\n\tdepends on BR2_X86_CPU_HAS_SSE2\n\tdepends on BR2_X86_CPU_HAS_SSE3\n\tdepends on BR2_X86_CPU_HAS_SSSE3\n\tdepends on BR2_X86_CPU_HAS_SSE4\n\tdepends on BR2_X86_CPU_HAS_SSE42\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the x86-64-core-i7 architecture,\n\t  using the glibc C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_BLEEDING_EDGE\n\tbool \"x86-64-core-i7 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_x86_64\n\tdepends on BR2_X86_CPU_HAS_MMX\n\tdepends on BR2_X86_CPU_HAS_SSE\n\tdepends on BR2_X86_CPU_HAS_SSE2\n\tdepends on BR2_X86_CPU_HAS_SSE3\n\tdepends on BR2_X86_CPU_HAS_SSSE3\n\tdepends on BR2_X86_CPU_HAS_SSE4\n\tdepends on BR2_X86_CPU_HAS_SSE42\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the x86-64-core-i7 architecture,\n\t  using the musl C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_STABLE\n\tbool \"x86-64-core-i7 musl stable 2020.08-1\"\n\tdepends on BR2_x86_64\n\tdepends on BR2_X86_CPU_HAS_MMX\n\tdepends on BR2_X86_CPU_HAS_SSE\n\tdepends on BR2_X86_CPU_HAS_SSE2\n\tdepends on BR2_X86_CPU_HAS_SSE3\n\tdepends on BR2_X86_CPU_HAS_SSSE3\n\tdepends on BR2_X86_CPU_HAS_SSE4\n\tdepends on BR2_X86_CPU_HAS_SSE42\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the x86-64-core-i7 architecture,\n\t  using the musl C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_BLEEDING_EDGE\n\tbool \"x86-64-core-i7 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_x86_64\n\tdepends on BR2_X86_CPU_HAS_MMX\n\tdepends on BR2_X86_CPU_HAS_SSE\n\tdepends on BR2_X86_CPU_HAS_SSE2\n\tdepends on BR2_X86_CPU_HAS_SSE3\n\tdepends on BR2_X86_CPU_HAS_SSSE3\n\tdepends on BR2_X86_CPU_HAS_SSE4\n\tdepends on BR2_X86_CPU_HAS_SSE42\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the x86-64-core-i7 architecture,\n\t  using the uclibc C library. This is a bleeding-edge\n\t  version, which means it is using the latest versions of\n\t  gcc, gdb and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_STABLE\n\tbool \"x86-64-core-i7 uclibc stable 2020.08-1\"\n\tdepends on BR2_x86_64\n\tdepends on BR2_X86_CPU_HAS_MMX\n\tdepends on BR2_X86_CPU_HAS_SSE\n\tdepends on BR2_X86_CPU_HAS_SSE2\n\tdepends on BR2_X86_CPU_HAS_SSE3\n\tdepends on BR2_X86_CPU_HAS_SSSE3\n\tdepends on BR2_X86_CPU_HAS_SSE4\n\tdepends on BR2_X86_CPU_HAS_SSE42\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the x86-64-core-i7 architecture,\n\t  using the uclibc C library. This is a stable version, which\n\t  means it is using stable and proven versions of gcc, gdb\n\t  and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_BLEEDING_EDGE\n\tbool \"x86-core2 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_i386\n\tdepends on BR2_X86_CPU_HAS_MMX\n\tdepends on BR2_X86_CPU_HAS_SSE\n\tdepends on BR2_X86_CPU_HAS_SSE2\n\tdepends on BR2_X86_CPU_HAS_SSE3\n\tdepends on BR2_X86_CPU_HAS_SSSE3\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the x86-core2 architecture, using the\n\t  glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_STABLE\n\tbool \"x86-core2 glibc stable 2020.08-1\"\n\tdepends on BR2_i386\n\tdepends on BR2_X86_CPU_HAS_MMX\n\tdepends on BR2_X86_CPU_HAS_SSE\n\tdepends on BR2_X86_CPU_HAS_SSE2\n\tdepends on BR2_X86_CPU_HAS_SSE3\n\tdepends on BR2_X86_CPU_HAS_SSSE3\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the x86-core2 architecture, using the\n\t  glibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_BLEEDING_EDGE\n\tbool \"x86-core2 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_i386\n\tdepends on BR2_X86_CPU_HAS_MMX\n\tdepends on BR2_X86_CPU_HAS_SSE\n\tdepends on BR2_X86_CPU_HAS_SSE2\n\tdepends on BR2_X86_CPU_HAS_SSE3\n\tdepends on BR2_X86_CPU_HAS_SSSE3\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the x86-core2 architecture, using the\n\t  musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_STABLE\n\tbool \"x86-core2 musl stable 2020.08-1\"\n\tdepends on BR2_i386\n\tdepends on BR2_X86_CPU_HAS_MMX\n\tdepends on BR2_X86_CPU_HAS_SSE\n\tdepends on BR2_X86_CPU_HAS_SSE2\n\tdepends on BR2_X86_CPU_HAS_SSE3\n\tdepends on BR2_X86_CPU_HAS_SSSE3\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the x86-core2 architecture, using the\n\t  musl C library. This is a stable version, which means it is\n\t  using stable and proven versions of gcc, gdb and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_BLEEDING_EDGE\n\tbool \"x86-core2 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_i386\n\tdepends on BR2_X86_CPU_HAS_MMX\n\tdepends on BR2_X86_CPU_HAS_SSE\n\tdepends on BR2_X86_CPU_HAS_SSE2\n\tdepends on BR2_X86_CPU_HAS_SSE3\n\tdepends on BR2_X86_CPU_HAS_SSSE3\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the x86-core2 architecture, using the\n\t  uclibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_STABLE\n\tbool \"x86-core2 uclibc stable 2020.08-1\"\n\tdepends on BR2_i386\n\tdepends on BR2_X86_CPU_HAS_MMX\n\tdepends on BR2_X86_CPU_HAS_SSE\n\tdepends on BR2_X86_CPU_HAS_SSE2\n\tdepends on BR2_X86_CPU_HAS_SSE3\n\tdepends on BR2_X86_CPU_HAS_SSSE3\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the x86-core2 architecture, using the\n\t  uclibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_BLEEDING_EDGE\n\tbool \"x86-i686 glibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_i386\n\tdepends on !BR2_x86_i486\n\tdepends on !BR2_x86_i586\n\tdepends on !BR2_x86_x1000\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the x86-i686 architecture, using the\n\t  glibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_STABLE\n\tbool \"x86-i686 glibc stable 2020.08-1\"\n\tdepends on BR2_i386\n\tdepends on !BR2_x86_i486\n\tdepends on !BR2_x86_i586\n\tdepends on !BR2_x86_x1000\n\tdepends on BR2_USE_MMU\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Bootlin toolchain for the x86-i686 architecture, using the\n\t  glibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_BLEEDING_EDGE\n\tbool \"x86-i686 musl bleeding-edge 2020.08-1\"\n\tdepends on BR2_i386\n\tdepends on !BR2_x86_i486\n\tdepends on !BR2_x86_i586\n\tdepends on !BR2_x86_x1000\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the x86-i686 architecture, using the\n\t  musl C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_STABLE\n\tbool \"x86-i686 musl stable 2020.08-1\"\n\tdepends on BR2_i386\n\tdepends on !BR2_x86_i486\n\tdepends on !BR2_x86_i586\n\tdepends on !BR2_x86_x1000\n\tdepends on BR2_USE_MMU\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Bootlin toolchain for the x86-i686 architecture, using the\n\t  musl C library. This is a stable version, which means it is\n\t  using stable and proven versions of gcc, gdb and binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_BLEEDING_EDGE\n\tbool \"x86-i686 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_i386\n\tdepends on !BR2_x86_i486\n\tdepends on !BR2_x86_i586\n\tdepends on !BR2_x86_x1000\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the x86-i686 architecture, using the\n\t  uclibc C library. This is a bleeding-edge version, which\n\t  means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_STABLE\n\tbool \"x86-i686 uclibc stable 2020.08-1\"\n\tdepends on BR2_i386\n\tdepends on !BR2_x86_i486\n\tdepends on !BR2_x86_i586\n\tdepends on !BR2_x86_x1000\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the x86-i686 architecture, using the\n\t  uclibc C library. This is a stable version, which means it\n\t  is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_BLEEDING_EDGE\n\tbool \"xtensa-lx60 uclibc bleeding-edge 2020.08-1\"\n\tdepends on BR2_xtensa\n\tdepends on BR2_XTENSA_CUSTOM\n\tdepends on BR2_XTENSA_LITTLE_ENDIAN\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the xtensa-lx60 architecture, using\n\t  the uclibc C library. This is a bleeding-edge version,\n\t  which means it is using the latest versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nconfig BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_STABLE\n\tbool \"xtensa-lx60 uclibc stable 2020.08-1\"\n\tdepends on BR2_xtensa\n\tdepends on BR2_XTENSA_CUSTOM\n\tdepends on BR2_XTENSA_LITTLE_ENDIAN\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\tselect BR2_USE_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Bootlin toolchain for the xtensa-lx60 architecture, using\n\t  the uclibc C library. This is a stable version, which means\n\t  it is using stable and proven versions of gcc, gdb and\n\t  binutils.\n\n\t  https://toolchains.bootlin.com/\n\nendchoice\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-bootlin/toolchain-external-bootlin.hash",
    "content": "# This file was auto-generated by support/scripts/gen-bootlin-toolchains\n# Do not edit\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--glibc--bleeding-edge-2020.08-1.sha256\nsha256  212f3c05f3b2263b0e2f902d055aecc2755eba10c0011927788a38faee8fc9aa  aarch64--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--glibc--stable-2020.08-1.sha256\nsha256  8ab7a2f17cb96621b048ab0a872650dd62faa54cd74c961b9902b8c04bff7dd1  aarch64--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--musl--bleeding-edge-2020.08-1.sha256\nsha256  3cf00c1ccaf16d0fbc526529789791de1cf98b918ff812e779f8400d40b6c048  aarch64--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--musl--stable-2020.08-1.sha256\nsha256  8319d27e3e637f32ecbdf49ceee2e9b7768b32d3ec7c92c888ff52e6f062bde4  aarch64--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  57fe5cecf37778b35dd09d9a016a1d6d9d7bb0e96ffcc5565e0aa483a46ea3db  aarch64--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/aarch64--uclibc--stable-2020.08-1.sha256\nsha256  04176f56ac977215c5257c307cece2d32e03770b96380e09c50379d4d84a5b39  aarch64--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--glibc--bleeding-edge-2020.08-1.sha256\nsha256  9631a57809d2fc2c7bb82bdd79d7647ccabe193126cc59ff9721a573d8870510  aarch64be--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--glibc--stable-2020.08-1.sha256\nsha256  71e24a2a205726d7d8ec56ead13b7eb427d5aed0e057a94ee06688334a07e6dd  aarch64be--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  76017614f0e7770499b5d18943398e51ae1c36d075cf8fba90ea050a29cad747  aarch64be--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs/aarch64be--uclibc--stable-2020.08-1.sha256\nsha256  a3bff78e98b2e17ab142ec630f9184f0cd4be6f1f313fdc112d89a843d92cedc  aarch64be--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-750d/tarballs/arcle-750d--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  e33570bdddc08d01b0da81ef6c3b240c6e0a4948f0100314b0be63c18c5f75db  arcle-750d--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-750d/tarballs/arcle-750d--uclibc--stable-2020.08-1.sha256\nsha256  bae0cbcab3b3b0149503aef6003dd816102b261461e37d89d32ffe9eb7f5dab9  arcle-750d--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--glibc--bleeding-edge-2020.08-1.sha256\nsha256  219be8c5390da6830e7529cb0a611996a8c9451bfa1560d7bda4ed5b182f7744  arcle-hs38--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--glibc--stable-2020.08-1.sha256\nsha256  ca73399803b6bb46cf27aa2bef5f98eae05fb2fa547403777354067117b44f2f  arcle-hs38--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  65e1408112518c1b31350285838f000a78a0dcd78880842933ef80d64d023967  arcle-hs38--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs/arcle-hs38--uclibc--stable-2020.08-1.sha256\nsha256  f0839aa541fe3f29660387c731b52e495bf1b285127b9fba91350b5b67f8ff3e  arcle-hs38--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--glibc--bleeding-edge-2020.08-1.sha256\nsha256  261e73520fb211f63a88ecce0689d3647acf295527bd6bd16e88e1bd65b3c603  armv5-eabi--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--glibc--stable-2020.08-1.sha256\nsha256  ed175329057693e496b0d6dbac1ff9db8f8f34737530ab38b5ed677afaefad03  armv5-eabi--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--musl--bleeding-edge-2020.08-1.sha256\nsha256  486b2424321b9866c2677e1dccd3a999394a86f890542c0c63edd5f9456bc4f9  armv5-eabi--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--musl--stable-2020.08-1.sha256\nsha256  732edab571d017c550d74b8c53dc703fc650de7aab66e68c70a0bc19d66d0a22  armv5-eabi--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  5e11ec24b910c43f24577b41a38cded192e443c0606be60944fe85b0fbf4b2dd  armv5-eabi--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs/armv5-eabi--uclibc--stable-2020.08-1.sha256\nsha256  cf6a668d4f30a4a2e76a0e88177e1301342cc011e94ea399353e77ede0efbb22  armv5-eabi--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--glibc--bleeding-edge-2020.08-1.sha256\nsha256  0c66147f05b21529311338e246ed285f9f0f4830af0d4db28e401160a81d1b4f  armv6-eabihf--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--glibc--stable-2020.08-1.sha256\nsha256  539e31b3bdcf76c3d6710951c74fbe682e2de8da4d110b981e9108b656890f4a  armv6-eabihf--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--musl--bleeding-edge-2020.08-1.sha256\nsha256  e8c05fb7b909dfd5a42f6de78d1b20605c453a9aea219981966d213ee98968e2  armv6-eabihf--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--musl--stable-2020.08-1.sha256\nsha256  68e43e3cd0e1fdd5c2b3ab718368f6ee24824725c641e148ef0a0da57f872034  armv6-eabihf--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  749bb97f7535414c3096564f6e790d1e43ab8c406282480937d8f34478ac7a35  armv6-eabihf--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs/armv6-eabihf--uclibc--stable-2020.08-1.sha256\nsha256  680a3bf708cb792c74561514dcba882727086c9317397e8a3ebece1b50fbea4e  armv6-eabihf--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--glibc--bleeding-edge-2020.08-1.sha256\nsha256  9f5c703cea20834276e1a81e2e54483d0f4fe0e57063ba4d058338ef9c858eb2  armv7-eabihf--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--glibc--stable-2020.08-1.sha256\nsha256  7b6682603af9a9b5c0e46fd57165723483bb68295e827d14d238e63f33a147a8  armv7-eabihf--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--musl--bleeding-edge-2020.08-1.sha256\nsha256  d9e71499cfb1790a31056ca9199981f699c7e4966b5854f7780d97f5a74d601e  armv7-eabihf--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--musl--stable-2020.08-1.sha256\nsha256  5c4c9bce5a2a46a9ad46e49e86df708893a8907e702a8ee1b5febd3950e030ed  armv7-eabihf--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  7c3ee9f3d6bd4eda38ec94a686a9e348b0f800214f1225c68d172e4ac6b81066  armv7-eabihf--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs/armv7-eabihf--uclibc--stable-2020.08-1.sha256\nsha256  f61866b0e60da62eff92b197f0e2a72e8d023bf944a25eb97efc9f5d93680ed9  armv7-eabihf--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7m/tarballs/armv7m--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  9ce29bbcbc0a2c4925e814a6332c2c71e9a13476040e1db0a5495c68d1566bee  armv7m--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/armv7m/tarballs/armv7m--uclibc--stable-2020.08-1.sha256\nsha256  c20df31191b88df09d8ff225ca82e3bb769b2b7ffd3827f6dbf77a6d23230339  armv7m--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  49e26c831694d15bb023a0a36cf9d3967e0ab75c555d8d07bba3317a0a18aa40  m68k-68xxx--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs/m68k-68xxx--uclibc--stable-2020.08-1.sha256\nsha256  b133663f5589c71315224792b7e542cfa578e4c354e4a2ac8afcd5ee77fd6f45  m68k-68xxx--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-coldfire/tarballs/m68k-coldfire--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  3efa687ca5d1c5f1ec53032e05a12467ec148c2328836754841f74be217bb035  m68k-coldfire--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-coldfire/tarballs/m68k-coldfire--uclibc--stable-2020.08-1.sha256\nsha256  f9879a167e2279fe925a3dc963d349d3d84c85866ec91512b5a7ce667318d716  m68k-coldfire--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--glibc--bleeding-edge-2020.08-1.sha256\nsha256  d9fb4403d14f53d5f4be18f38e9604244042ea33ad980ebf0b0057b70d603d16  microblazebe--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--glibc--stable-2020.08-1.sha256\nsha256  ea466445240a25ba98cd7b34f748afca151fc2479b187566f2faa98f586bfd93  microblazebe--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--musl--bleeding-edge-2020.08-1.sha256\nsha256  0157d051ac5e8b46b4eed7333c9323d1c1602ad5e958e2c12fe9b8dc3b6781c7  microblazebe--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--musl--stable-2020.08-1.sha256\nsha256  ec51b07f63cf6d0af1eaed10641d8690a350d879e4b74addca2b3f7992186ee2  microblazebe--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  3aaaab352ca31b2263e29c363609a363a38931f9733c8ad3a386c5cbb791f8e1  microblazebe--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs/microblazebe--uclibc--stable-2020.08-1.sha256\nsha256  d2b31177c9c009cd70a9ad4af6e903dfdb5254e3f49fe9389e0e11af7a98e6b6  microblazebe--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--glibc--bleeding-edge-2020.08-1.sha256\nsha256  83a451601b24b6a9c609630119e100ef9f18408bdfe1241cc53a904d540e6936  microblazeel--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--glibc--stable-2020.08-1.sha256\nsha256  c168737ec92889e632673f826b13cf74cfe4ba3ad06cc9e328ee20268ec439e9  microblazeel--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--musl--bleeding-edge-2020.08-1.sha256\nsha256  47660f8a4d84c7b8cd7610b8ba9df5bbfba043b35ebc07d96468c950b282f44d  microblazeel--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--musl--stable-2020.08-1.sha256\nsha256  6a51e38fe3f72765ad1172488321b60c59867253edce7b6680500c4193a542f7  microblazeel--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  6005fa2b229be380a2e4b8227daa0b4be4739b7cda628679de6d0e048755c769  microblazeel--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs/microblazeel--uclibc--stable-2020.08-1.sha256\nsha256  845a4795cab5f88d96679945f7147c5dfe0dd19751b88734ef786bfd5ee5db67  microblazeel--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--glibc--bleeding-edge-2020.08-1.sha256\nsha256  63baffcf0a94d7f1b7421ad61ddb56ce5c05595acd09f482dffe13ddf17efd81  mips32--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--glibc--stable-2020.08-1.sha256\nsha256  90e300a2d224ea79b69cae68e93b0aab70858381b0d11bac846458c625d72653  mips32--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--musl--bleeding-edge-2020.08-1.sha256\nsha256  4ebc20461eafca9c9b50e36f81e13095229aac0cd1dd98a985060f2e95665983  mips32--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--musl--stable-2020.08-1.sha256\nsha256  1a544242e9aaaee75c240439a31d2f4304b97705ed2d9e9e38ca552c5f03dced  mips32--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  4e0e1bf24e74746775992efd8b8bafbf5b6dd56bfdd1421b2207e1ea23ba2eb3  mips32--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs/mips32--uclibc--stable-2020.08-1.sha256\nsha256  4c1da37d131f4e66b07536707c6d1be3de29719f228346d4c860c4b3cb4fef31  mips32--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--glibc--bleeding-edge-2020.08-1.sha256\nsha256  617c845261bb0a00571c68f250c5a369e60a09164dd3316ab8126c327d911c4b  mips32el--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--glibc--stable-2020.08-1.sha256\nsha256  87875c25075b3850526a54c5e828ce489355d0d50107c262539ee5f577f38d6d  mips32el--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--musl--bleeding-edge-2020.08-1.sha256\nsha256  4c81898f2e484c1e1e7d7ac1ae80e0aca5619ef01190df37e41ca459a147e682  mips32el--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--musl--stable-2020.08-1.sha256\nsha256  02155c88e0bf92f63105803767ce457790bfd920297ef326c9920853b5a3fe20  mips32el--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  024b0e27fd0c9792bad1944e052768e03173b133079d7c95bf30435d05620152  mips32el--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs/mips32el--uclibc--stable-2020.08-1.sha256\nsha256  8398010ea3dbd43ee99b6be0e3340db44b32228bf063a9c13bf43a359e3d1f6e  mips32el--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--glibc--bleeding-edge-2020.08-1.sha256\nsha256  f000e8a78a24671a6f87909156e0c2a7403ab5864001c1388faf60190f8594c8  mips32r5el--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--glibc--stable-2020.08-1.sha256\nsha256  a52a115b852afce04732aa9460c58f30fbfdb17601f9bf32ea97a77d1a073a53  mips32r5el--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--musl--bleeding-edge-2020.08-1.sha256\nsha256  2620edf1045c61ddaf12f979a86719fa83b6598eb10f358a379e52462bb734ba  mips32r5el--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--musl--stable-2020.08-1.sha256\nsha256  0e03a5f2a7d8ba739f3ef53538d73c33bfc55f45522d4515688ebcb58005e5a1  mips32r5el--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  585e252971553b52833d3970f709196707d908a84a5e1be8360e3019d6bb0da9  mips32r5el--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs/mips32r5el--uclibc--stable-2020.08-1.sha256\nsha256  7ffccb1f86e7b0f1dd0d87f455ff5f2619a58724850b0b9f106b6545d4de8b3f  mips32r5el--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--glibc--bleeding-edge-2020.08-1.sha256\nsha256  d6376aeb2b243a58a98c415f2ecf131e14ccdce849a76c0f01902ca4b02fc0ba  mips32r6el--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--glibc--stable-2020.08-1.sha256\nsha256  8640635116e26e51d57b6d5dc1e3213528f742f0cf97cd326af4f5d8e17a63f2  mips32r6el--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--musl--bleeding-edge-2020.08-1.sha256\nsha256  2647d34cb990bdab77efbcc6b4e3d5b1fd02c5032837b7a64bc52cef64aba4ec  mips32r6el--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--musl--stable-2020.08-1.sha256\nsha256  24b1adfa2eb31f49ae5b4fce9ee9fcb30205ca6f29e423f77bd851070baaa255  mips32r6el--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  18dee7e9de84f6e7d6c9d083decdd465ab08979ebd661d82efbe5dc93f11dcb0  mips32r6el--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs/mips32r6el--uclibc--stable-2020.08-1.sha256\nsha256  28999f7474a84c3ec36b504c47cf671fc6e82d9b38580a0e2ebe495850ada097  mips32r6el--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--glibc--bleeding-edge-2020.08-1.sha256\nsha256  b5d90c06c894d841677da5f81e395113d22a79c53f934e12151128660dd08e76  mips64-n32--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--glibc--stable-2020.08-1.sha256\nsha256  7ed7a81f1a086e47ddb79d0bdc7142a6b7349feea20b05393be133cc4cf1fff5  mips64-n32--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--musl--bleeding-edge-2020.08-1.sha256\nsha256  937ce7ffda61c93489862122fe6dbfd53445afbdbfb615c06805b05497f336fb  mips64-n32--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--musl--stable-2020.08-1.sha256\nsha256  2a2acf732498b0acb22f815e1ce7c3ca8124719131febe95c723b1cbab76d947  mips64-n32--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  16ac2a957757f56e0414a638bb3bd526b2d1c3055dd7e036dcdec4bf950f0d1b  mips64-n32--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs/mips64-n32--uclibc--stable-2020.08-1.sha256\nsha256  10d9fb894e5e548e47e2930139117de9549ea49b971ca9fad12f56ef6d188b77  mips64-n32--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--glibc--bleeding-edge-2020.08-1.sha256\nsha256  7de65f68b14350670adbd0249562d69e75f7fc65b749284303c32f88112cb6b4  mips64el-n32--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--glibc--stable-2020.08-1.sha256\nsha256  a6eea19d94a7a953cac84670dcac3adb42dd3eb8950b1f7ca0f1ef37abc7e33f  mips64el-n32--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--musl--bleeding-edge-2020.08-1.sha256\nsha256  7cff57dd6d0ee7778c5b764a388bf9e997ba2349da5274b8d8598173030618be  mips64el-n32--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--musl--stable-2020.08-1.sha256\nsha256  3c42d88c84689703d5b1380f4cf5ad20872611d08ce5fac1a4375bfec80a6b27  mips64el-n32--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  5553a979238f6a25c4e965e18cfbebe36018041ba46968174063328c25e485fc  mips64el-n32--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs/mips64el-n32--uclibc--stable-2020.08-1.sha256\nsha256  80e8fa6cca6e0267dad5376bca79ce7457b8d345d43a0d409e4820a791965db9  mips64el-n32--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--glibc--bleeding-edge-2020.08-1.sha256\nsha256  0f09da21d6069642064f767a25e64c89caad80660ea184345652301c41a30ac9  mips64r6el-n32--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--glibc--stable-2020.08-1.sha256\nsha256  7100d3862983c5fb8237386ff4148f6e550e6b299c8b7946a349dedef60f75c9  mips64r6el-n32--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--musl--bleeding-edge-2020.08-1.sha256\nsha256  a692687149e59fdb7ad780cfc51e4a7307ed599433280369fe9e43c63453e4ec  mips64r6el-n32--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--musl--stable-2020.08-1.sha256\nsha256  e7a35e063fcd748df6f347e5aa97d081f4422480fb02ce6925c4c351c9aca318  mips64r6el-n32--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  69d4287cb32413e054684db9545e6898c09cb90c86a0dce8bb9999498eb798ab  mips64r6el-n32--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs/mips64r6el-n32--uclibc--stable-2020.08-1.sha256\nsha256  4d9eb8900b99871e02ae17b823341189dce3aa592ee82864c73ca3164948aaae  mips64r6el-n32--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs/nios2--glibc--bleeding-edge-2020.08-1.sha256\nsha256  b3c7c24e08759af3ea13fc39e8bddb52e4528a05d4aee3c2f75733e067d12edc  nios2--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs/nios2--glibc--stable-2020.08-1.sha256\nsha256  a46d5ff90e3623d159f3b5be53493e13a2e78ebb733a1ccb68e829d6e28aa129  nios2--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--musl--bleeding-edge-2020.08-1.sha256\nsha256  382ec04511d51f99028b6c568c909e4e010bcfe1d4a4c1ff6f10c7c07c24b3b2  openrisc--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--musl--stable-2020.08-1.sha256\nsha256  697ef122917022f400003931bc6da75fe07bb5234ef8186cbe027e560f04a168  openrisc--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  e45d02c9272c909db1c92b6403ed1e0813889ef0c22b2f5166d2675f62d3f20f  openrisc--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs/openrisc--uclibc--stable-2020.08-1.sha256\nsha256  62c60f9f99828a01f3a16060ceba74b8e2603a8ca3585649434a66f721ecdf75  openrisc--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--glibc--bleeding-edge-2020.08-2.sha256\nsha256  7b7c2f66ccd3d44cd8a829b5879277be9cfb17f34a26d5055b29a6bab40ff9df  powerpc-440fp--glibc--bleeding-edge-2020.08-2.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--glibc--stable-2020.08-2.sha256\nsha256  ae7b3d06090dfcf54b1e3b4bd4fda9ae5aaaf34aba9118820e6e9d8f1b70c0c4  powerpc-440fp--glibc--stable-2020.08-2.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--musl--bleeding-edge-2020.08-2.sha256\nsha256  a6def102659538e3e5838bf4267cd33486d795db753a7109b5e413499ef5df89  powerpc-440fp--musl--bleeding-edge-2020.08-2.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--musl--stable-2020.08-2.sha256\nsha256  76de0310078633ff34654c8c54d7e80a609c58521a7f2a8041ae4a574889d38a  powerpc-440fp--musl--stable-2020.08-2.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--uclibc--bleeding-edge-2020.08-2.sha256\nsha256  abbe38fc92a71d568c08452f99fe3470e5ded9a666c6829d9104fcf06b984503  powerpc-440fp--uclibc--bleeding-edge-2020.08-2.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs/powerpc-440fp--uclibc--stable-2020.08-2.sha256\nsha256  d4346ce563ddfbd4946b2dfbc766cafebbf4b09488dc8b398ab8bb242bac9268  powerpc-440fp--uclibc--stable-2020.08-2.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--glibc--bleeding-edge-2020.08-1.sha256\nsha256  fe4b9817f060d84118fff5b7d855eacac472975f2adfececb641d2999f94a7ea  powerpc-e300c3--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--glibc--stable-2020.08-1.sha256\nsha256  77d215d650850af65c3ac1792dcf100322f3dfea78ba174118197ec0c8a49807  powerpc-e300c3--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--musl--bleeding-edge-2020.08-1.sha256\nsha256  4aa2b5c3c2c3263edfdf95284f0774aed8a47446b7a362ee44dc24d83db06896  powerpc-e300c3--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--musl--stable-2020.08-1.sha256\nsha256  129d9aab59e9edfc68739b612f2ee4abce5679830250fbcd50b89ec3d2c865c5  powerpc-e300c3--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  54e6960edd6419bb268b651ffedc24af73a72ad9dd145c1849a6e0fb6f997b15  powerpc-e300c3--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs/powerpc-e300c3--uclibc--stable-2020.08-1.sha256\nsha256  1057b488623a80037558a1439555b1a15b25a4d7f42dc49d0169349592ad5b3e  powerpc-e300c3--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--glibc--bleeding-edge-2020.08-1.sha256\nsha256  8cab4fbb645be782a6eaeb7b6afd75fda4c0dc8ca9a4095b0be9b6eeb29a9759  powerpc-e500mc--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--glibc--stable-2020.08-1.sha256\nsha256  5bb9f6b10b9d2d1a90a1a96a477b90eea32a269c1afccd89284a38a63d7f1c82  powerpc-e500mc--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--musl--bleeding-edge-2020.08-1.sha256\nsha256  36636df56a04e44ddb5bba2e0a30b1f3986618399381278cdb2be207a25825c0  powerpc-e500mc--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--musl--stable-2020.08-1.sha256\nsha256  7f924fc3cc3c9070ea1c9d270fea71715bd52beac14649d8a00416dfde1b897b  powerpc-e500mc--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  262a2bddd29d6c24cbc32a873e78895499732624923195a5e7ffe16b487dc461  powerpc-e500mc--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs/powerpc-e500mc--uclibc--stable-2020.08-1.sha256\nsha256  e817af2d5a0fba654e7766dcad89380e278af9feb35c2d0591a0f8d893defa48  powerpc-e500mc--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs/powerpc64-e5500--glibc--bleeding-edge-2020.08-1.sha256\nsha256  418b79f8313ac4ff29cb6c2d639848eb74a0245666142a307374513cffd472e6  powerpc64-e5500--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs/powerpc64-e5500--glibc--stable-2020.08-1.sha256\nsha256  a51ddba944394de41b2f7c001772bb68074175d65a0976749da5289a5e705f23  powerpc64-e5500--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--glibc--bleeding-edge-2020.08-1.sha256\nsha256  c537c2ef618f767762295806658bb0add514453068ea72ce2bd6e6e805e64af5  powerpc64-e6500--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--glibc--stable-2020.08-1.sha256\nsha256  1d8aaf1492f69496b01fc930fa928ffd3144d1465c7c954128ed31ce576306b6  powerpc64-e6500--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--musl--bleeding-edge-2020.08-1.sha256\nsha256  c46c7595384929211ce2f54655ceb4eb1d32054923892cd5d10913be364fa6f2  powerpc64-e6500--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs/powerpc64-e6500--musl--stable-2020.08-1.sha256\nsha256  a295073db591ed16eec90caf5fdef62ccff5550166d36496ab24aa993bdb2a42  powerpc64-e6500--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--glibc--bleeding-edge-2020.08-1.sha256\nsha256  cbe65abf36fa807176a01488751a2e45800791534400b803c024e4c29357862c  powerpc64-power8--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--glibc--stable-2020.08-1.sha256\nsha256  a670ec95dbfb53a812e9f21aec2ad880a3349125f19219b9a0d139a7d5b9e83b  powerpc64-power8--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--musl--bleeding-edge-2020.08-1.sha256\nsha256  1f5b3da078534f9e493f29956d3a1f31ad0539d26b8f83e55c271b6671021928  powerpc64-power8--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs/powerpc64-power8--musl--stable-2020.08-1.sha256\nsha256  12043ab87cd4ae0c4339cddcb3eb017eaae406bbb332bf3edebfd7f70ecd0a31  powerpc64-power8--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--glibc--bleeding-edge-2020.08-1.sha256\nsha256  14e3ff4afbf363decb2c0ddc33b75e41aad9748a65a445cc176215853d0d6185  powerpc64le-power8--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--glibc--stable-2020.08-1.sha256\nsha256  342442f0773cdf5091443ab06ecf9c3d3c05cf8e2464b82a54707bec90d2a358  powerpc64le-power8--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--musl--bleeding-edge-2020.08-1.sha256\nsha256  fab5f4bc6d219f53f8b15e0d49aea27cdbac9e08e05946577440329c003fc216  powerpc64le-power8--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs/powerpc64le-power8--musl--stable-2020.08-1.sha256\nsha256  47d184beca271c67bdb544fac87cb2126ea2b397d076a79dfaf9667e999fbccd  powerpc64le-power8--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv32-ilp32d/tarballs/riscv32-ilp32d--glibc--bleeding-edge-2020.08-1.sha256\nsha256  18a47b0c221137f40720df08e9bbdc0bcb6e68cde3a30906681e4dec83eb7547  riscv32-ilp32d--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64/tarballs/riscv64--glibc--bleeding-edge-2020.08-1.sha256\nsha256  09818eccb414359b1df87ec347d94e7bfccc45f8a5eafe8791fddf8110fcc581  riscv64--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64/tarballs/riscv64--musl--bleeding-edge-2020.08-1.sha256\nsha256  2af03e220070eacf6eaf63ccb7442ca5af805caf96ae52fb3eb15370988f12cf  riscv64--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--glibc--bleeding-edge-2020.08-1.sha256\nsha256  277e78c999c2cba42b25660bbbe0d105a80277c986e0807cfa16a6595af6ce9e  sh-sh4--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--glibc--stable-2020.08-1.sha256\nsha256  256064f35b2759c71ac1bb6c9fe74a7c7c62f070746cfeb35ff0ecb40a91c2b4  sh-sh4--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--musl--bleeding-edge-2020.08-1.sha256\nsha256  34bf211ea0456ef86bbe914e0755f18681531a015e33b8c26b97ca68e29a3ed5  sh-sh4--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--musl--stable-2020.08-1.sha256\nsha256  d335189728a6bebd5d180c58c6dabd049500d57ae60fcc8fc51ba5aafafb21d3  sh-sh4--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  89e42b9e7bc3f67660656690899b2fad4015af5c9084dad6624315c39b486d76  sh-sh4--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs/sh-sh4--uclibc--stable-2020.08-1.sha256\nsha256  13a60cd5653c24491748388284080d5b8da649a63090c0d308c3a3b069b04f21  sh-sh4--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--glibc--bleeding-edge-2020.08-1.sha256\nsha256  fe063dd95c71ab41145412faf5e4c2a1386efdda5d944ecc83121fb9b4e213f2  sh-sh4aeb--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--glibc--stable-2020.08-1.sha256\nsha256  054e669a3165aff35539d3fb7cbde2650c79e5aa88a90a844488ba175a645a07  sh-sh4aeb--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--musl--bleeding-edge-2020.08-1.sha256\nsha256  aa2c560ed4cf4dac8a8803b3fccf846472a226a1a22833c1cbe0d7fd347af3a7  sh-sh4aeb--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs/sh-sh4aeb--musl--stable-2020.08-1.sha256\nsha256  89e7fa5792ed1c35bd57c65935888beafce9a81f84c7d73508b1582539415a3b  sh-sh4aeb--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparc64/tarballs/sparc64--glibc--bleeding-edge-2020.08-1.sha256\nsha256  abba04fcfa11a1eedbf5f5ff38d69d793d394f08998f8374723358b3123cc113  sparc64--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparc64/tarballs/sparc64--glibc--stable-2020.08-1.sha256\nsha256  57184f6edfba03ae9c098ad0bab6635475bb45a874982ad11c0b91bf6043dbc4  sparc64--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparcv8/tarballs/sparcv8--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  210defc0781683a240bac25295ff612d6b6c875c7d938d11512f8ec9472245bc  sparcv8--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/sparcv8/tarballs/sparcv8--uclibc--stable-2020.08-1.sha256\nsha256  14d508510bf0ed813f6436718486cce7fc6ebfb29b46eea5e52a474b2d5eaa00  sparcv8--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--glibc--bleeding-edge-2020.08-1.sha256\nsha256  77935109bbd1bdb84813a588b807052823033ed9094131fdd56f558023a3de08  x86-64-core-i7--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--glibc--stable-2020.08-1.sha256\nsha256  3dd408e857f5c8e579748995477f2783fcf5ad0aac89719ea3c5c75446dfa63c  x86-64-core-i7--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--musl--bleeding-edge-2020.08-1.sha256\nsha256  5d2d13d56a76db30ec28a11a3d6219fe407c3d1b9bbcd4a7255a783da4fcdfcb  x86-64-core-i7--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--musl--stable-2020.08-1.sha256\nsha256  26ea3cc16c294663b64123c15a95d53f00419ef0f6bcdef489865835c6022650  x86-64-core-i7--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  d1ff16cde93c727b4b39844877f93d865d6945185e71dba4b6c07d2d725e2576  x86-64-core-i7--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--uclibc--stable-2020.08-1.sha256\nsha256  0fdcb93add6ff697b536198da76b4e93bd81efd67793d6640fd6bc1b216abc00  x86-64-core-i7--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--glibc--bleeding-edge-2020.08-1.sha256\nsha256  10e7b362008fc3057e9eb42a3fab5f0dc430e05b285dc4f2ec3367d5f36a3094  x86-core2--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--glibc--stable-2020.08-1.sha256\nsha256  18bbabb672df24bbc2646d94d23c47d16a6c0d8342d910bf441021fad4a82ce3  x86-core2--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--musl--bleeding-edge-2020.08-1.sha256\nsha256  81edcbd69f2fd479d9a25597d0515d42c9c891e1a534d947e87a2e9a3dc67924  x86-core2--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--musl--stable-2020.08-1.sha256\nsha256  9e23de3364e1aaec50945c70089273a025ff44815ce4632324d1950e7ba07e9a  x86-core2--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  717b6c103e8e50202a45277eef8f9b41b978b17a0110cacddd52a01b7eba3039  x86-core2--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs/x86-core2--uclibc--stable-2020.08-1.sha256\nsha256  e23812719fa1027fa0e2a161216cf97ff14bf3bcc19bb400281060a40e762a0d  x86-core2--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--glibc--bleeding-edge-2020.08-1.sha256\nsha256  9e8c83479dc91e516ee66fe21ff8693afa380cfdb3192c5c1351430a035ab92a  x86-i686--glibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--glibc--stable-2020.08-1.sha256\nsha256  77362d37279636371a42b09bab4f8f1a51a786ed7ec316221786b279389c8008  x86-i686--glibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--musl--bleeding-edge-2020.08-1.sha256\nsha256  ccb6896f02be3444d6cabff0966a0b6f866ebc6d32b483031541626c2fc748fe  x86-i686--musl--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--musl--stable-2020.08-1.sha256\nsha256  bbbf8b7946e65f35366cb0371910fe3e95e6399c4e6a9cac8b0a4674bcadc36b  x86-i686--musl--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  bd57d5cd7958ba7469d74abdf93db1993042f30c774ec3d1fceff57d522a489c  x86-i686--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--uclibc--stable-2020.08-1.sha256\nsha256  139c31c25f9834137bbbb4aadc9d78def2819d2c1b9e89dd2300b11fb4879bb4  x86-i686--uclibc--stable-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/xtensa-lx60/tarballs/xtensa-lx60--uclibc--bleeding-edge-2020.08-1.sha256\nsha256  46801fc1ae89f380c1b6e1bf8ea723f9d7b1590eea3a2d1218a0307cd4325bc8  xtensa-lx60--uclibc--bleeding-edge-2020.08-1.tar.bz2\n# From https://toolchains.bootlin.com/downloads/releases/toolchains/xtensa-lx60/tarballs/xtensa-lx60--uclibc--stable-2020.08-1.sha256\nsha256  b4b28d855594290c853292c9cce43bba573d4187ecb47d78f25411a7f4300d49  xtensa-lx60--uclibc--stable-2020.08-1.tar.bz2\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-bootlin/toolchain-external-bootlin.mk",
    "content": "################################################################################\n#\n# toolchain-external-bootlin\n#\n################################################################################\n\n# This file was auto-generated by support/scripts/gen-bootlin-toolchains\n# Do not edit\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64be--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64be--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64be--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64BE_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = aarch64be--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64be/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = arcle-750d--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-750d/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_750D_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = arcle-750d--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-750d/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = arcle-hs38--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = arcle-hs38--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = arcle-hs38--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARCLE_HS38_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = arcle-hs38--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/arcle-hs38/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv5-eabi--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv5-eabi--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv5-eabi--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv5-eabi--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv5-eabi--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV5_EABI_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv5-eabi--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv5-eabi/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv6-eabihf--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv6-eabihf--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv6-eabihf--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv6-eabihf--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv6-eabihf--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV6_EABIHF_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv6-eabihf--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv6-eabihf/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7-eabihf--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7-eabihf--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7-eabihf--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7-eabihf--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7-eabihf--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7-eabihf--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7-eabihf/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7m--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7m/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7M_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = armv7m--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/armv7m/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = m68k-68xxx--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_68XXX_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = m68k-68xxx--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-68xxx/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = m68k-coldfire--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-coldfire/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_M68K_COLDFIRE_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = m68k-coldfire--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/m68k-coldfire/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazebe--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazebe--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazebe--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazebe--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazebe--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEBE_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazebe--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazebe/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazeel--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazeel--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazeel--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazeel--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazeel--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MICROBLAZEEL_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = microblazeel--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/microblazeel/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32el--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32el--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32el--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32el--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32el--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32EL_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32el--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r5el--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r5el--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r5el--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r5el--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r5el--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R5EL_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r5el--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r5el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r6el--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r6el--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r6el--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r6el--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r6el--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS32R6EL_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips32r6el--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips32r6el/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64-n32--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64-n32--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64-n32--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64-n32--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64-n32--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64_N32_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64-n32--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64el-n32--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64el-n32--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64el-n32--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64el-n32--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64el-n32--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64el-n32--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64el-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64r6el-n32--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64r6el-n32--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64r6el-n32--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64r6el-n32--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64r6el-n32--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64R6EL_N32_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = mips64r6el-n32--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/mips64r6el-n32/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = nios2--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_NIOS2_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = nios2--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = openrisc--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = openrisc--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = openrisc--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_OPENRISC_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = openrisc--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/openrisc/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-440fp--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-440fp--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-440fp--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-440fp--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-440fp--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_440FP_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-440fp--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-440fp/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e300c3--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e300c3--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e300c3--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e300c3--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e300c3--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E300C3_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e300c3--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e300c3/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e500mc--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e500mc--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e500mc--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e500mc--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e500mc--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC_E500MC_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc-e500mc--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc-e500mc/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-e5500--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E5500_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-e5500--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-e6500--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-e6500--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-e6500--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_E6500_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-e6500--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e6500/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-power8--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-power8--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-power8--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64_POWER8_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64-power8--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-power8/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64le-power8--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64le-power8--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64le-power8--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_POWERPC64LE_POWER8_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = powerpc64le-power8--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64le-power8/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV32_ILP32D_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = riscv32-ilp32d--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/riscv32-ilp32d/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = riscv64--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = riscv64--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4aeb--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4aeb--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4aeb--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4AEB_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sh-sh4aeb--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sh-sh4aeb/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sparc64--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sparc64/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARC64_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sparc64--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sparc64/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sparcv8--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sparcv8/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SPARCV8_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = sparcv8--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/sparcv8/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-core-i7--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-core-i7--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-core-i7--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-core-i7--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-core-i7--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-64-core-i7--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-core2--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-core2--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-core2--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-core2--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-core2--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_CORE2_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-core2--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-core2/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-i686--glibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_GLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-i686--glibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-i686--musl--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_MUSL_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-i686--musl--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-i686--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_I686_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = x86-i686--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_BLEEDING_EDGE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = xtensa-lx60--uclibc--bleeding-edge-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/xtensa-lx60/tarballs\nendif\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_XTENSA_LX60_UCLIBC_STABLE),y)\nTOOLCHAIN_EXTERNAL_BOOTLIN_VERSION = 2020.08-1\nTOOLCHAIN_EXTERNAL_BOOTLIN_SOURCE = xtensa-lx60--uclibc--stable-$(TOOLCHAIN_EXTERNAL_BOOTLIN_VERSION).tar.bz2\nTOOLCHAIN_EXTERNAL_BOOTLIN_SITE = https://toolchains.bootlin.com/downloads/releases/toolchains/xtensa-lx60/tarballs\nendif\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS\n\tbool \"Codescape IMG GNU Linux Toolchain 2018.09\"\n\tdepends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdepends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_7\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on BR2_MIPS_CPU_MIPS32R6 || (BR2_MIPS_CPU_MIPS64R6 && !BR2_MIPS_SOFT_FLOAT)\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_6\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_OPENMP\n\thelp\n\t  Codescape IMG GNU Linux Toolchain 2018.09 for the MIPS\n\t  architecture, from MIPS Tech LLC. It uses gcc 6.3.0,\n\t  binutils 2.28.51, glibc 2.20, gdb 7.9.1 and kernel headers\n\t  4.7. It has support for the following variants:\n\t    - MIPS32r6 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI\n\t      Select 'MIPS (big endian)' Target Architecture\n\t      Select 'mips 32r6' Target Architecture Variant\n\t      Disable 'Use soft-float'\n\t    - MIPS32r6 - Big-Endian, Soft-Float, 2008 NaN, o32 ABI\n\t      Select 'MIPS (big endian)' Target Architecture\n\t      Select 'mips 32r6' Target Architecture Variant\n\t      Enable 'Use soft-float'\n\t    - MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI\n\t      Select 'MIPS (little endian)' Target Architecture\n\t      Select 'mips 32r6' Target Architecture Variant\n\t      Disable 'Use soft-float'\n\t    - MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI\n\t      Select 'MIPS (little endian)' Target Architecture\n\t      Select 'mips 32r6' Target Architecture Variant\n\t      Enable 'Use soft-float'\n\t    - MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI,\n\t      microMIPS\n\t      Select 'MIPS (little endian)' Target Architecture\n\t      Select 'mips 32r6' Target Architecture Variant\n\t      Disable 'Use soft-float'\n\t      Set BR2_TARGET_OPTIMIZATION to '-mmicromips'\n\t    - MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI,\n\t      microMIPS\n\t      Select 'MIPS (little endian)' Target Architecture\n\t      Select 'mips 32r6' Target Architecture Variant\n\t      Enable 'Use soft-float'\n\t      Set BR2_TARGET_OPTIMIZATION to '-mmicromips'\n\t    - MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n32 ABI\n\t      Select 'MIPS64 (big endian)' Target Architecture\n\t      Select 'mips 64r6' Target Architecture Variant\n\t      Select 'n32' Target ABI\n\t      Disable 'Use soft-float'\n\t    - MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n32 ABI\n\t      Select 'MIPS64 (little endian)' Target Architecture\n\t      Select 'mips 64r6' Target Architecture Variant\n\t      Select 'n32' Target ABI\n\t      Disable 'Use soft-float'\n\t    - MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n64 ABI\n\t      Select 'MIPS64 (big endian)' Target Architecture\n\t      Select 'mips 64r6' Target Architecture Variant\n\t      Select 'n64' Target ABI\n\t      Disable 'Use soft-float'\n\t    - MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n64 ABI\n\t      Select 'MIPS64 (little endian)' Target Architecture\n\t      Select 'mips 64r6' Target Architecture Variant\n\t      Select 'n64' Target ABI\n\t      Disable 'Use soft-float'\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"mips-img-linux-gnu\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-codescape-img-mips\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash",
    "content": "# Codescape toolchains from MIPS Tech LLC\n# From: https://codescape.mips.com/components/toolchain/nanomips/2018.09-02/downloads.html\nsha256 ac035f3b6a8767522977963d8e1490520d58bccca7956f4503a1eefff6492b71  Codescape.GNU.Tools.Package.2018.09-02.for.MIPS.IMG.Linux.CentOS-6.x86.tar.gz\nsha256 09280f4fcbb993607905bf9a43bf5f3db2beed85726f0675b8453e19a9ddc429  Codescape.GNU.Tools.Package.2018.09-02.for.MIPS.IMG.Linux.CentOS-6.x86_64.tar.gz\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk",
    "content": "################################################################################\n#\n# toolchain-external-codescape-img-mips\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION = 2018.09-02\nTOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SITE = https://codescape.mips.com/components/toolchain/$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION)\nTOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STRIP_COMPONENTS = 2\n\nifeq ($(HOSTARCH),x86)\nTOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION).for.MIPS.IMG.Linux.CentOS-6.x86.tar.gz\nelse\nTOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION).for.MIPS.IMG.Linux.CentOS-6.x86_64.tar.gz\nendif\n\n# Special fixup for Codescape MIPS toolchains, that have bin-<abi> and\n# sbin-<abi> directories. We create symlinks bin -> bin-<abi> and sbin\n# -> sbin-<abi> so that the rest of Buildroot can find the toolchain\n# tools in the appropriate location.\nifeq ($(BR2_MIPS_OABI32),y)\nTOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = o32\nelse ifeq ($(BR2_MIPS_NABI32),y)\nTOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = n32\nelse ifeq ($(BR2_MIPS_NABI64),y)\nTOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = n64\nendif\n\ndefine TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STAGING_FIXUPS\n\trmdir $(STAGING_DIR)/usr/bin $(STAGING_DIR)/usr/sbin\n\tln -sf bin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/bin\n\tln -sf sbin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/sbin\nendef\n\n# The Codescape toolchain uses a sysroot layout that places them\n# side-by-side instead of nested like multilibs. A symlink is needed\n# much like for the nested sysroots which are handled in\n# copy_toolchain_sysroot but there is not enough information in there\n# to determine whether the sysroot layout was nested or side-by-side.\n# Add the symlink here for now.\ndefine TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SYMLINK\n\t$(Q)ARCH_SYSROOT_DIR=\"$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))\"; \\\n\tARCH_SUBDIR=`basename $${ARCH_SYSROOT_DIR}`; \\\n\tln -snf . $(STAGING_DIR)/$${ARCH_SUBDIR}\nendef\n\nTOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_POST_INSTALL_STAGING_HOOKS += \\\n\tTOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STAGING_FIXUPS \\\n\tTOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SYMLINK\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS\n\tbool \"Codescape MTI GNU Linux Toolchain 2018.09\"\n\tdepends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdepends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_7\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on BR2_MIPS_CPU_MIPS32R2 || (BR2_MIPS_CPU_MIPS64R2 && !BR2_MIPS_SOFT_FLOAT) || \\\n\t\tBR2_MIPS_CPU_MIPS32R5 || (BR2_MIPS_CPU_MIPS64R5 && !BR2_MIPS_SOFT_FLOAT)\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_6\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_OPENMP\n\thelp\n\t  Codescape MTI GNU Linux Toolchain 2018.09 for the MIPS\n\t  architecture, from MIPS Tech LLC. It uses gcc 6.3.0,\n\t  binutils 2.28.51, glibc 2.20, gdb 7.9.1 and kernel headers\n\t  4.7. It has support for the following variants:\n\t    - MIPS32r2 - Big-Endian, Hard-Float, Legacy NaN, o32 ABI\n\t      Select 'MIPS (big endian)' Target Architecture\n\t      Select 'mips 32r2' Target Architecture Variant\n\t      Disable 'Use soft-float'\n\t    - MIPS32r2 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI\n\t      Select 'MIPS (big endian)' Target Architecture\n\t      Select 'mips 32r2' Target Architecture Variant\n\t      Disable 'Use soft-float'\n\t      Set BR2_TARGET_OPTIMIZATION to '-mnan=2008'\n\t    - MIPS32r2 - Big-Endian, Soft-Float, Legacy NaN, o32 ABI\n\t      Select 'MIPS (big endian)' Target Architecture\n\t      Select 'mips 32r2' Target Architecture Variant\n\t      Enable 'Use soft-float'\n\t    - MIPS32r2 - Little-Endian, Hard-Float, Legacy NaN, o32 ABI\n\t      Select 'MIPS (little endian)' Target Architecture\n\t      Select 'mips 32r2' Target Architecture Variant\n\t      Disable 'Use soft-float'\n\t    - MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI\n\t      Select 'MIPS (little endian)' Target Architecture\n\t      Select 'mips 32r2' Target Architecture Variant\n\t      Disable 'Use soft-float'\n\t      Set BR2_TARGET_OPTIMIZATION to '-mnan=2008'\n\t    - MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI\n\t      Select 'MIPS (little endian)' Target Architecture\n\t      Select 'mips 32r2' Target Architecture Variant\n\t      Enable 'Use soft-float'\n\t    - MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI,\n\t      microMIPS\n\t      Select 'MIPS (little endian)' Target Architecture\n\t      Select 'mips 32r2' Target Architecture Variant\n\t      Enable 'Use soft-float'\n\t      Set BR2_TARGET_OPTIMIZATION to '-mmicromips'\n\t    - MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI,\n\t      microMIPS\n\t      Select 'MIPS (little endian)' Target Architecture\n\t      Select 'mips 32r2' Target Architecture Variant\n\t      Disable 'Use soft-float'\n\t      Set BR2_TARGET_OPTIMIZATION to '-mmicromips'\n\t    - MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n32 ABI\n\t      Select 'MIPS64 (big endian)' Target Architecture\n\t      Select 'mips 64r2' Target Architecture Variant\n\t      Select 'n32' Target ABI\n\t      Disable 'Use soft-float'\n\t    - MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n32 ABI\n\t      Select 'MIPS64 (little endian)' Target Architecture\n\t      Select 'mips 64r2' Target Architecture Variant\n\t      Select 'n32' Target ABI\n\t      Disable 'Use soft-float'\n\t    - MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n64 ABI\n\t      Select 'MIPS64 (big endian)' Target Architecture\n\t      Select 'mips 64r2' Target Architecture Variant\n\t      Select 'n64' Target ABI\n\t      Disable 'Use soft-float'\n\t    - MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n64 ABI\n\t      Select 'MIPS64 (little endian)' Target Architecture\n\t      Select 'mips 64r2' Target Architecture Variant\n\t      Select 'n64' Target ABI\n\t      Disable 'Use soft-float'\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"mips-mti-linux-gnu\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-codescape-mti-mips\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash",
    "content": "# Codescape toolchains from MIPS Tech LLC\n# From: https://codescape.mips.com/components/toolchain/nanomips/2018.09-02/downloads.html\nsha256 c883a404fd7ea5718e2249a530802e223381f2be52265f88e9b1ce7035c232f3  Codescape.GNU.Tools.Package.2018.09-02.for.MIPS.MTI.Linux.CentOS-6.x86.tar.gz\nsha256 d6310a970b0a8a19ad8e0a2b3ead8c38ee90d0e284a9b2511200ce447f460d2c  Codescape.GNU.Tools.Package.2018.09-02.for.MIPS.MTI.Linux.CentOS-6.x86_64.tar.gz\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk",
    "content": "################################################################################\n#\n# toolchain-external-codescape-mti-mips\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION = 2018.09-02\nTOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SITE = https://codescape.mips.com/components/toolchain/$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION)\nTOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STRIP_COMPONENTS = 2\n\nifeq ($(HOSTARCH),x86)\nTOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION).for.MIPS.MTI.Linux.CentOS-6.x86.tar.gz\nelse\nTOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION).for.MIPS.MTI.Linux.CentOS-6.x86_64.tar.gz\nendif\n\n# Special fixup for Codescape MIPS toolchains, that have bin-<abi> and\n# sbin-<abi> directories. We create symlinks bin -> bin-<abi> and sbin\n# -> sbin-<abi> so that the rest of Buildroot can find the toolchain\n# tools in the appropriate location.\nifeq ($(BR2_MIPS_OABI32),y)\nTOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = o32\nelse ifeq ($(BR2_MIPS_NABI32),y)\nTOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = n32\nelse ifeq ($(BR2_MIPS_NABI64),y)\nTOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = n64\nendif\n\ndefine TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STAGING_FIXUPS\n\trmdir $(STAGING_DIR)/usr/bin $(STAGING_DIR)/usr/sbin\n\tln -sf bin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/bin\n\tln -sf sbin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/sbin\nendef\n\n# The Codescape toolchain uses a sysroot layout that places them\n# side-by-side instead of nested like multilibs. A symlink is needed\n# much like for the nested sysroots which are handled in\n# copy_toolchain_sysroot but there is not enough information in there\n# to determine whether the sysroot layout was nested or side-by-side.\n# Add the symlink here for now.\ndefine TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SYMLINK\n\t$(Q)ARCH_SYSROOT_DIR=\"$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))\"; \\\n\tARCH_SUBDIR=`basename $${ARCH_SYSROOT_DIR}`; \\\n\tln -snf . $(STAGING_DIR)/$${ARCH_SUBDIR}\nendef\n\nTOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_POST_INSTALL_STAGING_HOOKS += \\\n\tTOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STAGING_FIXUPS \\\n\tTOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SYMLINK\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64\n\tbool \"CodeSourcery AArch64 2014.11\"\n\tdepends on BR2_aarch64\n\tdepends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_5\n\t# a57/a53 and a72/a53 appeared in gcc-6 or were broken before\n\tdepends on !BR2_cortex_a57_a53 && !BR2_cortex_a72_a53\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_HOSTARCH_NEEDS_IA32_LIBS\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\thelp\n\t  Sourcery CodeBench toolchain for the AArch64 architecture,\n\t  from Mentor Graphics. It uses gcc 4.9.1, binutils\n\t  2.24.51.20140217, glibc 2.20, gdb 7.7.50 and kernel headers\n\t  3.16.2.\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"aarch64-amd-linux-gnu\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-codesourcery-aarch64\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash",
    "content": "# Locally calculated\nsha256 405aada821146755c5f2df566375c2a682456d6b8451ee47b88cf1a52b093676  aarch64-amd-2014.11-95-aarch64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2\nsha256 3f50dd6ee433eb5b6992a1071b988e50379a738f54f58722bc60081613764716  aarch64-amd-2014.11-95-aarch64-amd-linux-gnu.src.tar.bz2\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk",
    "content": "################################################################################\n#\n# toolchain-external-codesourcery-aarch64\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)\nTOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION = 2014.11-95\nTOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_SOURCE = aarch64-amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2\nTOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_ACTUAL_SOURCE_TARBALL = aarch64-amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM\n\tbool \"Sourcery CodeBench ARM 2014.05\"\n\tdepends on BR2_arm\n\tdepends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on BR2_ARM_EABI\n\t# Unsupported ARM cores\n\tdepends on !BR2_cortex_a12 && !BR2_cortex_a17 && !BR2_ARM_CPU_ARMV8A\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_HOSTARCH_NEEDS_IA32_LIBS\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\thelp\n\t  Sourcery CodeBench toolchain for the ARM architecture, from\n\t  Mentor Graphics. It uses gcc 4.8.3, binutils 2.24.51, glibc\n\t  2.18 and gdb 7.7.50, kernel headers 3.13. It has support\n\t  for the following variants:\n\t    - ARMv5TE, little endian, soft-float, glibc\n\t      Select ARM926T, ARM10T, XScale or another ARMv5 core\n\t      Select BR2_SOFT_FLOAT\n\t    - ARMv4T, little endian, soft-float, glibc\n\t      Select ARM720T, ARM920T, ARM922T or another ARMv4 core\n\t      Select BR2_SOFT_FLOAT\n\t    - ARMv7-A, Thumb 2, little endian, soft-float, glibc\n\t      Select Cortex-A8, Cortex-A9 or another ARMv7-A core\n\t      Select BR2_SOFT_FLOAT\n\t      Set BR2_TARGET_OPTIMIZATION to -mthumb\n\ncomment \"Sourcery CodeBench toolchains available for the EABI ABI\"\n\tdepends on BR2_arm\n\tdepends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9\n\tdepends on !BR2_ARM_EABI\n\tdepends on !BR2_STATIC_LIBS\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"arm-none-linux-gnueabi\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-codesourcery-arm\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash",
    "content": "# Locally calculated\nsha256 39ee0e789034334ecc89af94e838e3a4815400ac5ff980f808f466b04778532e  arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2\nsha256 e16a5b1e41d7ff1e74161f9405182001bc8d1360d89564e73911032e6966cc0d  arm-2014.05-29-arm-none-linux-gnueabi.src.tar.bz2\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk",
    "content": "################################################################################\n#\n# toolchain-external-codesourcery-arm\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION = 2014.05-29\n\nTOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)\nTOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_SOURCE = arm-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2\nTOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_ACTUAL_SOURCE_TARBALL = arm-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS\n\tbool \"Sourcery CodeBench MIPS 2016.05\"\n\tdepends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el\n\tdepends on BR2_MIPS_CPU_MIPS32R2 || BR2_MIPS_CPU_MIPS64R2\n\tdepends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6\n\t# Unsupported MIPS cores\n\tdepends on !BR2_mips_interaptiv\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on !BR2_MIPS_NABI32\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_TOOLCHAIN_HAS_OPENMP\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_HOSTARCH_NEEDS_IA32_LIBS\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\thelp\n\t  Sourcery CodeBench toolchain for the MIPS architecture, from\n\t  Mentor Graphics. It uses gcc 5.3, binutils 2.25.51, glibc\n\t  2.23, uClibc 0.9.30 and gdb 7.10.50, kernel headers 4.4.1. It\n\t  has support for the following variants:\n\t    - MIPS32r2 - Big-Endian, 2008 NaN, O32\n\t      Select MIPS (big endian) core\n\t      Disable BR2_SOFT_FLOAT\n\t      Set BR2_TARGET_OPTIMIZATION to -mnan=2008\n\t    - MIPS32r2 - Big-Endian, O32\n\t      Select MIPS (big endian) core\n\t      Disable BR2_SOFT_FLOAT\n\t    - MIPS32r2 - Big-Endian, O32, MIPS16\n\t      Select MIPS (big endian) core\n\t      Disable BR2_SOFT_FLOAT\n\t      Set BR2_TARGET_OPTIMIZATION to -mips16\n\t    - MIPS32r2 - Big-Endian, Soft-Float, O32\n\t      Select MIPS (big endian) core\n\t      Select BR2_SOFT_FLOAT\n\t    - MIPS32r2 - Big-Endian, Soft-Float, O32, MIPS16\n\t      Select MIPS (big endian) core\n\t      Select BR2_SOFT_FLOAT\n\t      Set BR2_TARGET_OPTIMIZATION to -mips16\n\t    - MIPS32r2 - Little-Endian, 2008 NaN, O32\n\t      Select MIPS (little endian) core\n\t      Disable BR2_SOFT_FLOAT\n\t      Set BR2_TARGET_OPTIMIZATION to -mnan=2008\n\t    - MIPS32r2 - Little-Endian, O32\n\t      Select MIPS (little endian) core\n\t      Disable BR2_SOFT_FLOAT\n\t    - MIPS32r2 - Little-Endian, O32, MIPS16\n\t      Select MIPS (little endian) core\n\t      Disable BR2_SOFT_FLOAT\n\t      Set BR2_TARGET_OPTIMIZATION to -mips16\n\t    - MIPS32r2 - Little-Endian, Soft-Float, O32\n\t      Select MIPS (little endian) core\n\t      Select BR2_SOFT_FLOAT\n\t    - MIPS32r2 - Little-Endian, Soft-Float, O32, MIPS16\n\t      Select MIPS (little endian) core\n\t      Select BR2_SOFT_FLOAT\n\t      Set BR2_TARGET_OPTIMIZATION to -mips16\n\t    - MIPS32r2 - Little-Endian, Soft-Float, O32, microMIPS\n\t      Select MIPS (little endian) core\n\t      Select BR2_SOFT_FLOAT\n\t      Set BR2_TARGET_OPTIMIZATION to -mmicromips\n\t    - MIPS32r2 - uClibc, Big-Endian, 2008 NaN, O32\n\t      Not usable in Buildroot yet.\n\t    - MIPS32r2 - uClibc, Big-Endian, O32\n\t      Not usable in Buildroot yet.\n\t    - MIPS32r2 - uClibc, Big-Endian, Soft-Float, O32\n\t      Not usable in Buildroot yet.\n\t    - MIPS32r2 - uClibc, Little-Endian, 2008 NaN, O32\n\t      Not usable in Buildroot yet.\n\t    - MIPS32r2 - uClibc, Little-Endian, O32\n\t      Not usable in Buildroot yet.\n\t    - MIPS32r2 - uClibc, Little-Endian, Soft-Float, O32\n\t      Not usable in Buildroot yet.\n\t    - MIPS64r2 - Big-Endian, N64\n\t      Select MIPS64 (big endian) core\n\t      Select the n64 ABI\n\t      Disable BR2_SOFT_FLOAT\n\t    - MIPS64r2 - Big-Endian, Soft-Float, N64\n\t      Select MIPS64 (big endian) core\n\t      Select the n64 ABI\n\t      Select BR2_SOFT_FLOAT\n\t    - MIPS64r2 - Little-Endian, N64\n\t      Select MIPS64 (little endian) core\n\t      Select the n64 ABI\n\t      Disable BR2_SOFT_FLOAT\n\t    - MIPS64r2 - Little-Endian, Soft-Float, N64\n\t      Select MIPS64 (little endian) core\n\t      Select the n64 ABI\n\t      Select BR2_SOFT_FLOAT\n\ncomment \"Sourcery CodeBench toolchains are only available for MIPS/MIPS64 o32 and n64\"\n\tdepends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6\n\tdepends on BR2_MIPS_NABI32\n\tdepends on !BR2_STATIC_LIBS\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"mips-linux-gnu\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-codesourcery-mips\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash",
    "content": "# Locally computed\nsha256 d354447c4c5160439dafd5464fa3a0266dd41e79f973477238e4f0215a6b5397  mips-2016.05-8-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2\nsha256 2658e55d5b71bba25d6f77e868e18b200ea5f75c8add7ed3a9266e716d9adfff  mips-2016.05-8-mips-linux-gnu.src.tar.bz2\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk",
    "content": "################################################################################\n#\n# toolchain-external-codesourcery-mips\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION = 2016.05-8\n\nTOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)\nTOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_SOURCE = mips-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2\nTOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_ACTUAL_SOURCE_TARBALL = mips-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII\n\tbool \"Sourcery CodeBench Nios-II 2018.05\"\n\tdepends on BR2_nios2\n\tdepends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_8\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_HOSTARCH_NEEDS_IA32_LIBS\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\thelp\n\t  Sourcery CodeBench toolchain for the Nios-II architecture,\n\t  from Mentor Graphics. It uses gcc 7.3, binutils 2.28,\n\t  glibc 2.27, gdb 8.0.1 and kernel headers 4.15.5.\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"nios2-linux-gnu\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-codesourcery-niosII\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash",
    "content": "# From https://sourcery.mentor.com/GNUToolchain/release3374\nmd5 4f536b3b9b4e00f483e82e304c0a27ae sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2\nmd5 be42ab83da2e8db7b73dc890c2549570 sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2\n# Locally calculated\nsha256 c19afb432b5b23f8d5d639831d3a423a3ea3c9cc62e0015020d20ea2eb36dd1b  sourceryg++-2018.05-5-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2\nsha256 d73a6364106dd62352711f932d3be8e97fdaaa548995678b5d38d9f21e22437a  sourceryg++-2018.05-5-nios2-linux-gnu.src.tar.bz2\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk",
    "content": "################################################################################\n#\n# toolchain-external-codesourcery-niosII\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION = 2018.05-5\n\nTOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)\nTOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SOURCE = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2\nTOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_ACTUAL_SOURCE_TARBALL = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-custom/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_CUSTOM\n\tbool \"Custom toolchain\"\n\thelp\n\t  Use this option to use a custom toolchain pre-installed on\n\t  your system.\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-custom/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_CUSTOM\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-custom\"\n\nconfig BR2_TOOLCHAIN_EXTERNAL_URL\n\tstring \"Toolchain URL\"\n\tdepends on BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD\n\thelp\n\t  URL of the custom toolchain tarball to download and install.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_REL_BIN_PATH\n\tstring \"Toolchain relative binary path\"\n\tdefault \"bin\"\n\tdepends on BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD\n\thelp\n\t  Path to where the binaries (e.g. the compiler) can be found,\n\t  relative to the downloaded toolchain root directory. The\n\t  default is \"bin\" and is correct for most toolchains.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX\n\tstring \"Toolchain prefix\"\n\tdefault \"$(ARCH)-linux\"\n\nchoice\n\tbool \"External toolchain gcc version\"\n\thelp\n\t  Set to the gcc version that is used by your external\n\t  toolchain.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_11\n\tbool \"11.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_11\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_10\n\tbool \"10.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_10\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_9\n\tbool \"9.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_8\n\tbool \"8.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_8\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_7\n\tbool \"7.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_6\n\tbool \"6.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_6\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_5\n\tbool \"5.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_5\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_4_9\n\tbool \"4.9.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_9\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_4_8\n\tbool \"4.8.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_4_7\n\tbool \"4.7.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_7\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_4_6\n\tbool \"4.6.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_6\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_4_5\n\tbool \"4.5.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_5\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_4_4\n\tbool \"4.4.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_4\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_4_3\n\tbool \"4.3.x\"\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_4_3\n\nconfig BR2_TOOLCHAIN_EXTERNAL_GCC_OLD\n\tbool \"older\"\n\thelp\n\t  Use this option if your GCC version is older than any of the\n\t  above.\n\n\t  Note that the Buildroot community doesn't do any testing with\n\t  such old toolchains. Some packages may fail to build in\n\t  surprising ways, or the generated root filesystem may not\n\t  work at all. Use such old toolchains at your own risk.\n\nendchoice\n\ncomment \"GCC older than 4.8 is not tested by Buildroot. Use at your own risk.\"\n\tdepends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8\n\nchoice\n\tbool \"External toolchain kernel headers series\"\n\tdefault BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD\n\thelp\n\t  Set to the kernel headers version that were used to build\n\t  this external toolchain.\n\n\t  This is used to hide/show some packages that have strict\n\t  requirements on the version of kernel headers.\n\n\t  If unsure what version your toolchain is using, you can look\n\t  at the value of LINUX_VERSION_CODE in linux/version.h in your\n\t  toolchain. The Linux version is M.m.p, with:\n\t    M = ( LINUX_VERSION_CODE >> 16 ) & 0xFF\n\t    m = ( LINUX_VERSION_CODE >> 8  ) & 0xFF\n\t    p = ( LINUX_VERSION_CODE >> 0  ) & 0xFF\n\n\t  If your toolchain uses headers newer than the latest version\n\t  in the choice, then select the latest version.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_15\n\tbool \"5.15.x or later\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_14\n\tbool \"5.14.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_13\n\tbool \"5.13.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_12\n\tbool \"5.12.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_11\n\tbool \"5.11\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_10\n\tbool \"5.10.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9\n\tbool \"5.9.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_8\n\tbool \"5.8.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_7\n\tbool \"5.7.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_6\n\tbool \"5.6.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_5\n\tbool \"5.5.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_4\n\tbool \"5.4.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_3\n\tbool \"5.3.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_2\n\tbool \"5.2.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_1\n\tbool \"5.1.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_0\n\tbool \"5.0.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_20\n\tbool \"4.20.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_19\n\tbool \"4.19.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_18\n\tbool \"4.18.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_17\n\tbool \"4.17.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16\n\tbool \"4.16.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_15\n\tbool \"4.15.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14\n\tbool \"4.14.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13\n\tbool \"4.13.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_12\n\tbool \"4.12.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_11\n\tbool \"4.11.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10\n\tbool \"4.10.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9\n\tbool \"4.9.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_8\n\tbool \"4.8.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_7\n\tbool \"4.7.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6\n\tbool \"4.6.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_5\n\tbool \"4.5.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4\n\tbool \"4.4.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3\n\tbool \"4.3.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_2\n\tbool \"4.2.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1\n\tbool \"4.1.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_0\n\tbool \"4.0.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_19\n\tbool \"3.19.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_18\n\tbool \"3.18.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17\n\tbool \"3.17.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16\n\tbool \"3.16.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_15\n\tbool \"3.15.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14\n\tbool \"3.14.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13\n\tbool \"3.13.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12\n\tbool \"3.12.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_11\n\tbool \"3.11.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10\n\tbool \"3.10.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9\n\tbool \"3.9.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_8\n\tbool \"3.8.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_7\n\tbool \"3.7.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_6\n\tbool \"3.6.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_5\n\tbool \"3.5.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_4\n\tbool \"3.4.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_3\n\tbool \"3.3.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2\n\tbool \"3.2.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_1\n\tbool \"3.1.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_0\n\tbool \"3.0.x\"\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD\n\tbool \"2.6.x\"\n\nendchoice\n\ncomment \"Kernel headers older than 3.13 is not tested by Buildroot. Use at your own risk.\"\n\tdepends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13\n\nchoice\n\tprompt \"External toolchain C library\"\n\tdefault BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC\n\nconfig BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC\n\tbool \"uClibc/uClibc-ng\"\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\thelp\n\t  Select this option if your external toolchain uses the\n\t  uClibc (available from http://www.uclibc.org/)\n\t  or uClibc-ng (available from http://www.uclibc-ng.org)\n\t  C library.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC\n\tbool \"glibc/eglibc\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\thelp\n\t  Select this option if your external toolchain uses the GNU C\n\t  library (available from https://www.gnu.org/software/libc/)\n\t  or its variant the eglibc library (http://www.eglibc.org/).\n\n\t  Note: eglibc is a variant of glibc that (among other things)\n\t  can be configured to exclude some of its features. Using a\n\t  toolchain with eglibc configured to exclude key features may\n\t  cause build failures to some packages.\n\ncomment \"(e)glibc only available with shared lib support\"\n\tdepends on BR2_STATIC_LIBS\n\nconfig BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL\n\tbool \"musl (experimental)\"\n\tselect BR2_TOOLCHAIN_EXTERNAL_MUSL\n\thelp\n\t  Select this option if your external toolchain uses the\n\t  'musl' C library, available from http://www.musl-libc.org/.\n\nendchoice\n\nif BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC\n\nconfig BR2_TOOLCHAIN_EXTERNAL_WCHAR\n\tbool \"Toolchain has WCHAR support?\"\n\tselect BR2_USE_WCHAR\n\thelp\n\t  Select this option if your external toolchain supports\n\t  WCHAR. If you don't know, leave the default value, Buildroot\n\t  will tell you if it's correct or not.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_LOCALE\n\tbool \"Toolchain has locale support?\"\n\tselect BR2_TOOLCHAIN_EXTERNAL_WCHAR\n\tselect BR2_ENABLE_LOCALE\n\thelp\n\t  Select this option if your external toolchain has locale\n\t  support. If you don't know, leave the default value,\n\t  Buildroot will tell you if it's correct or not.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS\n\tbool \"Toolchain has threads support?\"\n\tdefault y\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\thelp\n\t  Select this option if your external toolchain has thread\n\t  support. If you don't know, leave the default value,\n\t  Buildroot will tell you if it's correct or not.\n\nif BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG\n\tbool \"Toolchain has threads debugging support?\"\n\tdefault y\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\thelp\n\t  Select this option if your external toolchain has thread\n\t  debugging support. If you don't know, leave the default\n\t  value, Buildroot will tell you if it's correct or not.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL\n\tbool \"Toolchain has NPTL threads support?\"\n\tdefault y\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\thelp\n\t  Select this option if your external toolchain uses the NPTL\n\t  (Native Posix Thread Library) implementation of Posix\n\t  threads. If you don't know, leave the default value,\n\t  Buildroot will tell you if it's correct or not.\n\nendif # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS\n\nendif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HAS_SSP\n\tbool \"Toolchain has SSP support?\"\n\tdefault y if BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tdefault y if BR2_TOOLCHAIN_EXTERNAL_MUSL\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\thelp\n\t  Select this option if your external toolchain has Stack\n\t  Smashing Protection support enabled. If you don't know,\n\t  leave the default value, Buildroot will tell you if it's\n\t  correct or not.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_HAS_SSP_STRONG\n\tbool \"Toolchain has SSP strong support?\"\n\tdefault y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 && BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tdefault y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 && BR2_TOOLCHAIN_EXTERNAL_MUSL\n\tdepends on BR2_TOOLCHAIN_EXTERNAL_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_SSP_STRONG\n\thelp\n\t  Select this option if your external toolchain has strong\n\t  Stack Smashing Protection support enabled. If you don't\n\t  know, leave the default value, Buildroot will tell you if\n\t  it's correct or not.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_INET_RPC\n\tbool \"Toolchain has RPC support?\"\n\tdefault y if BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tdepends on !BR2_TOOLCHAIN_EXTERNAL_MUSL\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\thelp\n\t  Select this option if your external toolchain supports\n\t  RPC. If you don't know, leave the default value, Buildroot\n\t  will tell you if it's correct or not.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_CXX\n\tbool \"Toolchain has C++ support?\"\n\tselect BR2_INSTALL_LIBSTDCPP\n\thelp\n\t  Select this option if your external toolchain has C++\n\t  support. If you don't know, leave the default value,\n\t  Buildroot will tell you if it's correct or not.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_DLANG\n\tbool \"Toolchain has D support?\"\n\tselect BR2_TOOLCHAIN_HAS_DLANG\n\thelp\n\t  Select this option if your external toolchain has D\n\t  support.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_FORTRAN\n\tbool \"Toolchain has Fortran support?\"\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\thelp\n\t  Select this option if your external toolchain has Fortran\n\t  support. If you don't know, leave the default value,\n\t  Buildroot will tell you if it's correct or not.\n\nconfig BR2_TOOLCHAIN_EXTERNAL_OPENMP\n\tbool \"Toolchain has OpenMP support?\"\n\tselect BR2_TOOLCHAIN_HAS_OPENMP\n\thelp\n\t  Select this option if your external toolchain has OpenMP\n\t  support. If you don't know, leave the default value,\n\t  Buildroot will tell you if it's correct or not.\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk",
    "content": "################################################################################\n#\n# toolchain-external-custom\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_CUSTOM_SITE = $(patsubst %/,%,$(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL))))\nTOOLCHAIN_EXTERNAL_CUSTOM_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))\n\nifeq ($(BR2_TOOLCHAIN_EXTERNAL_CUSTOM),y)\n# We can't check hashes for custom downloaded toolchains\nBR_NO_CHECK_HASH_FOR += $(TOOLCHAIN_EXTERNAL_SOURCE)\nendif\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64\n\tbool \"Linaro AArch64 2018.05\"\n\tdepends on BR2_aarch64\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_OPENMP\n\thelp\n\t  Toolchain for the AArch64 architecture, from\n\t  http://www.linaro.org/engineering/armv8/\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"aarch64-linux-gnu\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-linaro-aarch64\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash",
    "content": "# Locally calculated\nsha256 466b801a60491ae1e2ce9952e0615cf04cf611596c6ffd5bfe8a89ef5be47e03  gcc-linaro-7.3.1-2018.05-i686_aarch64-linux-gnu.tar.xz\nsha256 73eed74e593e2267504efbcf3678918bb22409ab7afa3dc7c135d2c6790c2345  gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk",
    "content": "################################################################################\n#\n# toolchain-external-linaro-aarch64\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION = 2018.05\nTOOLCHAIN_EXTERNAL_LINARO_AARCH64_SITE = https://releases.linaro.org/components/toolchain/binaries/7.3-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)/aarch64-linux-gnu\n\nifeq ($(HOSTARCH),x86)\nTOOLCHAIN_EXTERNAL_LINARO_AARCH64_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)-i686_aarch64-linux-gnu.tar.xz\nelse\nTOOLCHAIN_EXTERNAL_LINARO_AARCH64_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)-x86_64_aarch64-linux-gnu.tar.xz\nendif\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE\n\tbool \"Linaro AArch64 BE 2018.05\"\n\tdepends on BR2_aarch64_be\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_OPENMP\n\thelp\n\t  Toolchain for the AArch64 Big Endian architecture, from\n\t  http://www.linaro.org/engineering/armv8/\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"aarch64_be-linux-gnu\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-linaro-aarch64-be\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/toolchain-external-linaro-aarch64-be.hash",
    "content": "# Locally calculated\nsha256 412da19c1d1bff0f3172bc19fd2c024207d8d716dbe7a8dad4bf9e3d6b71d149  gcc-linaro-7.3.1-2018.05-i686_aarch64_be-linux-gnu.tar.xz\nsha256 277c1483f8dbd6007c945ffeb706fa1ba1da8ec1c397cf5cf1e29c25081426e5  gcc-linaro-7.3.1-2018.05-x86_64_aarch64_be-linux-gnu.tar.xz\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/toolchain-external-linaro-aarch64-be.mk",
    "content": "################################################################################\n#\n# toolchain-external-linaro-aarch64-be\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_VERSION = 2018.05\nTOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_SITE = https://releases.linaro.org/components/toolchain/binaries/7.3-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_VERSION)/aarch64_be-linux-gnu\n\nifeq ($(HOSTARCH),x86)\nTOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_VERSION)-i686_aarch64_be-linux-gnu.tar.xz\nelse\nTOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE_VERSION)-x86_64_aarch64_be-linux-gnu.tar.xz\nendif\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in",
    "content": "comment \"Linaro toolchains available for Cortex-A + EABIhf\"\n\tdepends on BR2_arm\n\tdepends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF\n\tdepends on !BR2_STATIC_LIBS\n\nconfig BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM\n\tbool \"Linaro ARM 2018.05\"\n\tdepends on BR2_arm\n\tdepends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on BR2_ARM_EABIHF\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\tselect BR2_TOOLCHAIN_HAS_FORTRAN\n\tselect BR2_TOOLCHAIN_HAS_OPENMP\n\thelp\n\t  Linaro toolchain for the ARM architecture. It uses Linaro\n\t  GCC 2018.05 (based on gcc 7.3.1), Linaro GDB 2018.05 (based on\n\t  GDB 8.1), glibc 2.25, Binutils 2018.05 (based on 2.28). It\n\t  generates code that runs on all Cortex-A profile devices,\n\t  but tuned for the Cortex-A9. The code generated is Thumb 2,\n\t  with the hard floating point calling convention, and uses\n\t  the VFPv3-D16 FPU instructions.\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"arm-linux-gnueabihf\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-linaro-arm\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash",
    "content": "# Locally calculated\nsha256 0613b5be14eb7d50a772bbd72069c428558e6e53fa5fce7201d75a13a475ffff  gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabihf.tar.xz\nsha256 7248bf105d0d468887a9b8a7120bb281ac8ad0223d9cb3d00dc7c2d498485d91  gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk",
    "content": "################################################################################\n#\n# toolchain-external-linaro-arm\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION = 2018.05\nTOOLCHAIN_EXTERNAL_LINARO_ARM_SITE = https://releases.linaro.org/components/toolchain/binaries/7.3-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)/arm-linux-gnueabihf\n\nifeq ($(HOSTARCH),x86)\nTOOLCHAIN_EXTERNAL_LINARO_ARM_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)-i686_arm-linux-gnueabihf.tar.xz\nelse\nTOOLCHAIN_EXTERNAL_LINARO_ARM_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)-x86_64_arm-linux-gnueabihf.tar.xz\nendif\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in",
    "content": "comment \"Linaro toolchains available for Cortex-A + EABIhf\"\n\tdepends on BR2_armeb\n\tdepends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF\n\tdepends on !BR2_STATIC_LIBS\n\nconfig BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB\n\tbool \"Linaro armeb 2018.05\"\n\tdepends on BR2_armeb\n\tdepends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A\n\tdepends on BR2_HOSTARCH = \"x86_64\" || BR2_HOSTARCH = \"x86\"\n\tdepends on BR2_ARM_EABIHF\n\tdepends on !BR2_STATIC_LIBS\n\tselect BR2_TOOLCHAIN_EXTERNAL_GLIBC\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HAS_NATIVE_RPC\n\tselect BR2_TOOLCHAIN_HAS_OPENMP\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_7\n\thelp\n\t  Linaro toolchain for the ARM big endian architecture. It\n\t  uses Linaro GCC 2018.05 (based on gcc 7.3.1), Linaro GDB\n\t  2018.05 (based on GDB 8.1), glibc 2.25, Binutils 2018.05\n\t  (based on 2.28). It generates code that runs on all Cortex-A\n\t  profile devices, but tuned for the Cortex-A9. The code\n\t  generated is Thumb 2, with the hard floating point calling\n\t  convention, and uses the VFPv3-D16 FPU instructions.\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"armeb-linux-gnueabihf\"\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-linaro-armeb\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash",
    "content": "# Locally calculated\nsha256 60bf9924a0c039c94deb85cb9b129d0f28b28eadbb1fb3f7e2e227679cc43fc9  gcc-linaro-7.3.1-2018.05-i686_armeb-linux-gnueabihf.tar.xz\nsha256 c1bbd598b78458d6b7ea1c971fddf736c00d57890c7131fdafd4e789289c42f9  gcc-linaro-7.3.1-2018.05-x86_64_armeb-linux-gnueabihf.tar.xz\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk",
    "content": "################################################################################\n#\n# toolchain-external-linaro-armeb\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION = 2018.05\n\nTOOLCHAIN_EXTERNAL_LINARO_ARMEB_SITE = https://releases.linaro.org/components/toolchain/binaries/7.3-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)/armeb-linux-gnueabihf\n\nifeq ($(HOSTARCH),x86)\nTOOLCHAIN_EXTERNAL_LINARO_ARMEB_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)-i686_armeb-linux-gnueabihf.tar.xz\nelse\nTOOLCHAIN_EXTERNAL_LINARO_ARMEB_SOURCE = gcc-linaro-7.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)-x86_64_armeb-linux-gnueabihf.tar.xz\nendif\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in",
    "content": "config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC\n\tbool \"Synopsys ARC 2019.09 toolchain\"\n\tdepends on BR2_arc\n\tdepends on BR2_HOSTARCH = \"x86_64\"\n\tselect BR2_TOOLCHAIN_EXTERNAL_UCLIBC\n\tselect BR2_INSTALL_LIBSTDCPP\n\tselect BR2_ENABLE_LOCALE\n\tselect BR2_USE_WCHAR\n\tselect BR2_TOOLCHAIN_HAS_THREADS\n\tselect BR2_TOOLCHAIN_HAS_THREADS_NPTL\n\tselect BR2_TOOLCHAIN_HAS_THREADS_DEBUG\n\tselect BR2_TOOLCHAIN_HAS_SSP\n\tselect BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15\n\tselect BR2_TOOLCHAIN_GCC_AT_LEAST_9\n\thelp\n\t  Toolchain for the ARC cores, from\n\t  https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options",
    "content": "if BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC\n\nconfig BR2_TOOLCHAIN_EXTERNAL_PREFIX\n\tdefault \"arc-linux\"\t\t if BR2_arcle\n\tdefault \"arceb-linux\"\t\t if BR2_arceb\n\nconfig BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL\n\tdefault \"toolchain-external-synopsys-arc\"\n\nendif\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash",
    "content": "# From https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2019.09-release\nsha256 f7cbf68ef251943db7baf63535e0ec98dafbdf5d925017b4e1d4fc64d9b38a26  arc_gnu_2019.09_prebuilt_uclibc_le_arc700_linux_install.tar.gz\nsha256 ac09f0a21f9d50146a5e542f4a6abc93e5a1dcb0a1372cb5c3ba86bbefaaec7d  arc_gnu_2019.09_prebuilt_uclibc_be_arc700_linux_install.tar.gz\nsha256 245ca49fe8ea2456617541b18bb96e52e6c0dc619f00e293fcaad519fc436c35  arc_gnu_2019.09_prebuilt_uclibc_le_archs_linux_install.tar.gz\nsha256 6f039a0158c03af398ada31fae96009e47f0d7b7f7d52e12eb419492fc3f27e7  arc_gnu_2019.09_prebuilt_uclibc_be_archs_linux_install.tar.gz\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk",
    "content": "################################################################################\n#\n# toolchain-external-synopsys-arc\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION = 2019.09\nTOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_SITE = https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/download/arc-$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION)-release\n\nifeq ($(BR2_arc750d)$(BR2_arc770d),y)\nTOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE = arc700\nelse\nTOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE = archs\nendif\n\nifeq ($(BR2_arcle),y)\nTOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS = le\nelse\nTOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS = be\nendif\n\nTOOLCHAIN_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\n\n$(eval $(toolchain-external-package))\n"
  },
  {
    "path": "toolchain/toolchain-external/toolchain-external.mk",
    "content": "################################################################################\n#\n# toolchain-external\n#\n################################################################################\n\nTOOLCHAIN_EXTERNAL_ADD_TOOLCHAIN_DEPENDENCY = NO\n\n# musl does not provide an implementation for sys/queue.h or sys/cdefs.h.\n# So, add the musl-compat-headers package that will install those files,\n# into the staging directory:\n#   sys/queue.h:  header from NetBSD\n#   sys/cdefs.h:  minimalist header bundled in Buildroot\nifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)\nTOOLCHAIN_EXTERNAL_DEPENDENCIES += musl-compat-headers\nendif\n\n$(eval $(virtual-package))\n\n# Ensure the external-toolchain package has a prefix defined.\n# This comes after the virtual-package definition, which checks the provider.\nifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)\nifeq ($(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX)),)\n$(error No prefix selected for external toolchain package $(BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL). Configuration error)\nendif\nendif\n\ninclude $(sort $(wildcard toolchain/toolchain-external/*/*.mk))\n"
  },
  {
    "path": "toolchain/toolchain-wrapper.c",
    "content": "/**\n * Buildroot wrapper for toolchains. This simply executes the real toolchain\n * with a number of arguments (sysroot/arch/..) hardcoded, to ensure the\n * toolchain uses the correct configuration.\n * The hardcoded path arguments are defined relative to the actual location\n * of the binary.\n *\n * (C) 2011 Peter Korsgaard <jacmet@sunsite.dk>\n * (C) 2011 Daniel Nyström <daniel.nystrom@timeterminal.se>\n * (C) 2012 Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>\n * (C) 2013 Spenser Gilliland <spenser@gillilanding.com>\n *\n * This file is licensed under the terms of the GNU General Public License\n * version 2.  This program is licensed \"as is\" without any warranty of any\n * kind, whether express or implied.\n */\n\n#define _GNU_SOURCE\n#include <stdio.h>\n#include <string.h>\n#include <limits.h>\n#include <unistd.h>\n#include <stdlib.h>\n#include <errno.h>\n#include <time.h>\n#include <stdbool.h>\n\n#ifdef BR_CCACHE\nstatic char ccache_path[PATH_MAX];\n#endif\nstatic char path[PATH_MAX];\nstatic char sysroot[PATH_MAX];\n/* As would be defined by gcc:\n *   https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html\n * sizeof() on string literals includes the terminating \\0. */\nstatic char _time_[sizeof(\"-D__TIME__=\\\"HH:MM:SS\\\"\")];\nstatic char _date_[sizeof(\"-D__DATE__=\\\"MMM DD YYYY\\\"\")];\n\n/**\n * GCC errors out with certain combinations of arguments (examples are\n * -mfloat-abi={hard|soft} and -m{little|big}-endian), so we have to ensure\n * that we only pass the predefined one to the real compiler if the inverse\n * option isn't in the argument list.\n * This specifies the worst case number of extra arguments we might pass\n * Currently, we may have:\n * \t-mfloat-abi=\n * \t-march=\n * \t-mcpu=\n * \t-D__TIME__=\n * \t-D__DATE__=\n * \t-Wno-builtin-macro-redefined\n * \t-Wl,-z,now\n * \t-Wl,-z,relro\n * \t-fPIE\n * \t-pie\n */\n#define EXCLUSIVE_ARGS\t10\n\nstatic char *predef_args[] = {\n#ifdef BR_CCACHE\n\tccache_path,\n#endif\n\tpath,\n\t\"--sysroot\", sysroot,\n#ifdef BR_ABI\n\t\"-mabi=\" BR_ABI,\n#endif\n#ifdef BR_NAN\n\t\"-mnan=\" BR_NAN,\n#endif\n#ifdef BR_FPU\n\t\"-mfpu=\" BR_FPU,\n#endif\n#ifdef BR_SOFTFLOAT\n\t\"-msoft-float\",\n#endif /* BR_SOFTFLOAT */\n#ifdef BR_MODE\n\t\"-m\" BR_MODE,\n#endif\n#ifdef BR_64\n\t\"-m64\",\n#endif\n#ifdef BR_OMIT_LOCK_PREFIX\n\t\"-Wa,-momit-lock-prefix=yes\",\n#endif\n#ifdef BR_NO_FUSED_MADD\n\t\"-mno-fused-madd\",\n#endif\n#ifdef BR_FP_CONTRACT_OFF\n\t\"-ffp-contract=off\",\n#endif\n#ifdef BR_BINFMT_FLAT\n\t\"-Wl,-elf2flt\",\n#endif\n#ifdef BR_MIPS_TARGET_LITTLE_ENDIAN\n\t\"-EL\",\n#endif\n#if defined(BR_MIPS_TARGET_BIG_ENDIAN) || defined(BR_ARC_TARGET_BIG_ENDIAN)\n\t\"-EB\",\n#endif\n#ifdef BR_ADDITIONAL_CFLAGS\n\tBR_ADDITIONAL_CFLAGS\n#endif\n};\n\n/* A {string,length} tuple, to avoid computing strlen() on constants.\n *  - str must be a \\0-terminated string\n *  - len does not account for the terminating '\\0'\n */\nstruct str_len_s {\n\tconst char *str;\n\tsize_t     len;\n};\n\n/* Define a {string,length} tuple. Takes an unquoted constant string as\n * parameter. sizeof() on a string literal includes the terminating \\0,\n * but we don't want to count it.\n */\n#define STR_LEN(s) { #s, sizeof(#s)-1 }\n\n/* List of paths considered unsafe for cross-compilation.\n *\n * An unsafe path is one that points to a directory with libraries or\n * headers for the build machine, which are not suitable for the target.\n */\nstatic const struct str_len_s unsafe_paths[] = {\n\tSTR_LEN(/lib),\n\tSTR_LEN(/usr/include),\n\tSTR_LEN(/usr/lib),\n\tSTR_LEN(/usr/local/include),\n\tSTR_LEN(/usr/local/lib),\n\tSTR_LEN(/usr/X11R6/include),\n\tSTR_LEN(/usr/X11R6/lib),\n\t{ NULL, 0 },\n};\n\n/* Unsafe options are options that specify a potentialy unsafe path,\n * that will be checked by check_unsafe_path(), below.\n */\nstatic const struct str_len_s unsafe_opts[] = {\n\tSTR_LEN(-I),\n\tSTR_LEN(-idirafter),\n\tSTR_LEN(-iquote),\n\tSTR_LEN(-isystem),\n\tSTR_LEN(-L),\n\t{ NULL, 0 },\n};\n\n/* Check if path is unsafe for cross-compilation. Unsafe paths are those\n * pointing to the standard native include or library paths.\n *\n * We print the arguments leading to the failure. For some options, gcc\n * accepts the path to be concatenated to the argument (e.g. -I/foo/bar)\n * or separated (e.g. -I /foo/bar). In the first case, we need only print\n * the argument as it already contains the path (arg_has_path), while in\n * the second case we need to print both (!arg_has_path).\n *\n * If paranoid, exit in error instead of just printing a warning.\n */\nstatic void check_unsafe_path(const char *arg,\n\t\t\t      const char *path,\n\t\t\t      int paranoid,\n\t\t\t      int arg_has_path)\n{\n\tconst struct str_len_s *p;\n\n\tfor (p=unsafe_paths; p->str; p++) {\n\t\tif (strncmp(path, p->str, p->len))\n\t\t\tcontinue;\n\t\tfprintf(stderr,\n\t\t\t\"%s: %s: unsafe header/library path used in cross-compilation: '%s%s%s'\\n\",\n\t\t\tprogram_invocation_short_name,\n\t\t\tparanoid ? \"ERROR\" : \"WARNING\",\n\t\t\targ,\n\t\t\targ_has_path ? \"\" : \"' '\", /* close single-quote, space, open single-quote */\n\t\t\targ_has_path ? \"\" : path); /* so that arg and path are properly quoted. */\n\t\tif (paranoid)\n\t\t\texit(1);\n\t}\n}\n\n#ifdef BR_NEED_SOURCE_DATE_EPOCH\n/* Returns false if SOURCE_DATE_EPOCH was not defined in the environment.\n *\n * Returns true if SOURCE_DATE_EPOCH is in the environment and represent\n * a valid timestamp, in which case the timestamp is formatted into the\n * global variables _date_ and _time_.\n *\n * Aborts if SOURCE_DATE_EPOCH was set in the environment but did not\n * contain a valid timestamp.\n *\n * Valid values are defined in the spec:\n *     https://reproducible-builds.org/specs/source-date-epoch/\n * but we further restrict them to be positive or null.\n */\nbool parse_source_date_epoch_from_env(void)\n{\n\tchar *epoch_env, *endptr;\n\ttime_t epoch;\n\tstruct tm epoch_tm;\n\n\tif ((epoch_env = getenv(\"SOURCE_DATE_EPOCH\")) == NULL)\n\t\treturn false;\n\terrno = 0;\n\tepoch = (time_t) strtoll(epoch_env, &endptr, 10);\n\t/* We just need to test if it is incorrect, but we do not\n\t * care why it is incorrect.\n\t */\n\tif ((errno != 0) || !*epoch_env || *endptr || (epoch < 0)) {\n\t\tfprintf(stderr, \"%s: invalid SOURCE_DATE_EPOCH='%s'\\n\",\n\t\t\tprogram_invocation_short_name,\n\t\t\tepoch_env);\n\t\texit(1);\n\t}\n\ttzset(); /* For localtime_r(), below. */\n\tif (localtime_r(&epoch, &epoch_tm) == NULL) {\n\t\tfprintf(stderr, \"%s: cannot parse SOURCE_DATE_EPOCH=%s\\n\",\n\t\t\t\tprogram_invocation_short_name,\n\t\t\t\tgetenv(\"SOURCE_DATE_EPOCH\"));\n\t\texit(1);\n\t}\n\tif (!strftime(_time_, sizeof(_time_), \"-D__TIME__=\\\"%T\\\"\", &epoch_tm)) {\n\t\tfprintf(stderr, \"%s: cannot set time from SOURCE_DATE_EPOCH=%s\\n\",\n\t\t\t\tprogram_invocation_short_name,\n\t\t\t\tgetenv(\"SOURCE_DATE_EPOCH\"));\n\t\texit(1);\n\t}\n\tif (!strftime(_date_, sizeof(_date_), \"-D__DATE__=\\\"%b %e %Y\\\"\", &epoch_tm)) {\n\t\tfprintf(stderr, \"%s: cannot set date from SOURCE_DATE_EPOCH=%s\\n\",\n\t\t\t\tprogram_invocation_short_name,\n\t\t\t\tgetenv(\"SOURCE_DATE_EPOCH\"));\n\t\texit(1);\n\t}\n\treturn true;\n}\n#else\nbool parse_source_date_epoch_from_env(void)\n{\n\t/* The compiler is recent enough to handle SOURCE_DATE_EPOCH itself\n\t * so we do not need to do anything here.\n\t */\n\treturn false;\n}\n#endif\n\nint main(int argc, char **argv)\n{\n\tchar **args, **cur, **exec_args;\n\tchar *relbasedir, *absbasedir;\n\tchar *progpath = argv[0];\n\tchar *basename;\n\tchar *env_debug;\n\tchar *paranoid_wrapper;\n\tint paranoid;\n\tint ret, i, count = 0, debug = 0, found_shared = 0;\n\n\t/* Debug the wrapper to see arguments it was called with.\n\t * If environment variable BR2_DEBUG_WRAPPER is:\n\t * unset, empty, or 0: do not trace\n\t * set to 1          : trace all arguments on a single line\n\t * set to 2          : trace one argument per line\n\t */\n\tif ((env_debug = getenv(\"BR2_DEBUG_WRAPPER\"))) {\n\t\tdebug = atoi(env_debug);\n\t}\n\tif (debug > 0) {\n\t\tfprintf(stderr, \"Toolchain wrapper was called with:\");\n\t\tfor (i = 0; i < argc; i++)\n\t\t\tfprintf(stderr, \"%s'%s'\",\n\t\t\t\t(debug == 2) ? \"\\n    \" : \" \", argv[i]);\n\t\tfprintf(stderr, \"\\n\");\n\t}\n\n\t/* Calculate the relative paths */\n\tbasename = strrchr(progpath, '/');\n\tif (basename) {\n\t\t*basename = '\\0';\n\t\tbasename++;\n\t\trelbasedir = malloc(strlen(progpath) + 7);\n\t\tif (relbasedir == NULL) {\n\t\t\tperror(__FILE__ \": malloc\");\n\t\t\treturn 2;\n\t\t}\n\t\tsprintf(relbasedir, \"%s/..\", argv[0]);\n\t\tabsbasedir = realpath(relbasedir, NULL);\n\t} else {\n\t\tbasename = progpath;\n\t\tabsbasedir = malloc(PATH_MAX + 1);\n\t\tret = readlink(\"/proc/self/exe\", absbasedir, PATH_MAX);\n\t\tif (ret < 0) {\n\t\t\tperror(__FILE__ \": readlink\");\n\t\t\treturn 2;\n\t\t}\n\t\tabsbasedir[ret] = '\\0';\n\t\tfor (i = ret; i > 0; i--) {\n\t\t\tif (absbasedir[i] == '/') {\n\t\t\t\tabsbasedir[i] = '\\0';\n\t\t\t\tif (++count == 2)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (absbasedir == NULL) {\n\t\tperror(__FILE__ \": realpath\");\n\t\treturn 2;\n\t}\n\n\t/* Fill in the relative paths */\n#ifdef BR_CROSS_PATH_REL\n\tret = snprintf(path, sizeof(path), \"%s/\" BR_CROSS_PATH_REL \"/%s\" BR_CROSS_PATH_SUFFIX, absbasedir, basename);\n#elif defined(BR_CROSS_PATH_ABS)\n\tret = snprintf(path, sizeof(path), BR_CROSS_PATH_ABS \"/%s\" BR_CROSS_PATH_SUFFIX, basename);\n#else\n\tret = snprintf(path, sizeof(path), \"%s/bin/%s\" BR_CROSS_PATH_SUFFIX, absbasedir, basename);\n#endif\n\tif (ret >= sizeof(path)) {\n\t\tperror(__FILE__ \": overflow\");\n\t\treturn 3;\n\t}\n#ifdef BR_CCACHE\n\tret = snprintf(ccache_path, sizeof(ccache_path), \"%s/bin/ccache\", absbasedir);\n\tif (ret >= sizeof(ccache_path)) {\n\t\tperror(__FILE__ \": overflow\");\n\t\treturn 3;\n\t}\n#endif\n\tret = snprintf(sysroot, sizeof(sysroot), \"%s/\" BR_SYSROOT, absbasedir);\n\tif (ret >= sizeof(sysroot)) {\n\t\tperror(__FILE__ \": overflow\");\n\t\treturn 3;\n\t}\n\n\tcur = args = malloc(sizeof(predef_args) +\n\t\t\t    (sizeof(char *) * (argc + EXCLUSIVE_ARGS)));\n\tif (args == NULL) {\n\t\tperror(__FILE__ \": malloc\");\n\t\treturn 2;\n\t}\n\n\t/* start with predefined args */\n\tmemcpy(cur, predef_args, sizeof(predef_args));\n\tcur += sizeof(predef_args) / sizeof(predef_args[0]);\n\n#ifdef BR_FLOAT_ABI\n\t/* add float abi if not overridden in args */\n\tfor (i = 1; i < argc; i++) {\n\t\tif (!strncmp(argv[i], \"-mfloat-abi=\", strlen(\"-mfloat-abi=\")) ||\n\t\t    !strcmp(argv[i], \"-msoft-float\") ||\n\t\t    !strcmp(argv[i], \"-mhard-float\"))\n\t\t\tbreak;\n\t}\n\n\tif (i == argc)\n\t\t*cur++ = \"-mfloat-abi=\" BR_FLOAT_ABI;\n#endif\n\n#ifdef BR_FP32_MODE\n\t/* add fp32 mode if soft-float is not args or hard-float overrides soft-float */\n\tint add_fp32_mode = 1;\n\tfor (i = 1; i < argc; i++) {\n\t\tif (!strcmp(argv[i], \"-msoft-float\"))\n\t\t\tadd_fp32_mode = 0;\n\t\telse if (!strcmp(argv[i], \"-mhard-float\"))\n\t\t\tadd_fp32_mode = 1;\n\t}\n\n\tif (add_fp32_mode == 1)\n\t\t*cur++ = \"-mfp\" BR_FP32_MODE;\n#endif\n\n#if defined(BR_ARCH) || \\\n    defined(BR_CPU)\n\t/* Add our -march/cpu flags, but only if none of\n\t * -march/mtune/mcpu are already specified on the commandline\n\t */\n\tfor (i = 1; i < argc; i++) {\n\t\tif (!strncmp(argv[i], \"-march=\", strlen(\"-march=\")) ||\n\t\t    !strncmp(argv[i], \"-mtune=\", strlen(\"-mtune=\")) ||\n\t\t    !strncmp(argv[i], \"-mcpu=\",  strlen(\"-mcpu=\" )))\n\t\t\tbreak;\n\t}\n\tif (i == argc) {\n#ifdef BR_ARCH\n\t\t*cur++ = \"-march=\" BR_ARCH;\n#endif\n#ifdef BR_CPU\n\t\t*cur++ = \"-mcpu=\" BR_CPU;\n#endif\n\t}\n#endif /* ARCH || CPU */\n\n\tif (parse_source_date_epoch_from_env()) {\n\t\t*cur++ = _time_;\n\t\t*cur++ = _date_;\n\t\t/* This has existed since gcc-4.4.0. */\n\t\t*cur++ = \"-Wno-builtin-macro-redefined\";\n\t}\n\n#ifdef BR2_PIC_PIE\n\t/* Patterned after Fedora/Gentoo hardening approaches.\n\t * https://fedoraproject.org/wiki/Changes/Harden_All_Packages\n\t * https://wiki.gentoo.org/wiki/Hardened/Toolchain#Position_Independent_Executables_.28PIEs.29\n\t *\n\t * A few checks are added to allow disabling of PIE\n\t * 1) -fno-pie and -no-pie are used by other distros to disable PIE in\n\t *    cases where the compiler enables it by default. The logic below\n\t *    maintains that behavior.\n\t *         Ref: https://wiki.ubuntu.com/SecurityTeam/PIE\n\t * 2) A check for -fno-PIE has been used in older Linux Kernel builds\n\t *    in a similar way to -fno-pie or -no-pie.\n\t * 3) A check is added for Kernel and U-boot defines\n\t *    (-D__KERNEL__ and -D__UBOOT__).\n\t */\n\tfor (i = 1; i < argc; i++) {\n\t\t/* Apply all incompatible link flag and disable checks first */\n\t\tif (!strcmp(argv[i], \"-r\") ||\n\t\t    !strcmp(argv[i], \"-Wl,-r\") ||\n\t\t    !strcmp(argv[i], \"-static\") ||\n\t\t    !strcmp(argv[i], \"-D__KERNEL__\") ||\n\t\t    !strcmp(argv[i], \"-D__UBOOT__\") ||\n\t\t    !strcmp(argv[i], \"-fno-pie\") ||\n\t\t    !strcmp(argv[i], \"-fno-PIE\") ||\n\t\t    !strcmp(argv[i], \"-no-pie\"))\n\t\t\tbreak;\n\t\t/* Record that shared was present which disables -pie but don't\n\t\t * break out of loop as a check needs to occur that possibly\n\t\t * still allows -fPIE to be set\n\t\t */\n\t\tif (!strcmp(argv[i], \"-shared\"))\n\t\t\tfound_shared = 1;\n\t}\n\n\tif (i == argc) {\n\t\t/* Compile and link condition checking have been kept split\n\t\t * between these two loops, as there maybe already are valid\n\t\t * compile flags set for position independence. In that case\n\t\t * the wrapper just adds the -pie for link.\n\t\t */\n\t\tfor (i = 1; i < argc; i++) {\n\t\t\tif (!strcmp(argv[i], \"-fpie\") ||\n\t\t\t    !strcmp(argv[i], \"-fPIE\") ||\n\t\t\t    !strcmp(argv[i], \"-fpic\") ||\n\t\t\t    !strcmp(argv[i], \"-fPIC\"))\n\t\t\t\tbreak;\n\t\t}\n\t\t/* Both args below can be set at compile/link time\n\t\t * and are ignored correctly when not used\n\t\t */\n\t\tif (i == argc)\n\t\t\t*cur++ = \"-fPIE\";\n\n\t\tif (!found_shared)\n\t\t\t*cur++ = \"-pie\";\n\t}\n#endif\n\t/* Are we building the Linux Kernel or U-Boot? */\n\tfor (i = 1; i < argc; i++) {\n\t\tif (!strcmp(argv[i], \"-D__KERNEL__\") ||\n\t\t    !strcmp(argv[i], \"-D__UBOOT__\"))\n\t\t\tbreak;\n\t}\n\tif (i == argc) {\n\t\t/* https://wiki.gentoo.org/wiki/Hardened/Toolchain#Mark_Read-Only_Appropriate_Sections */\n#ifdef BR2_RELRO_PARTIAL\n\t\t*cur++ = \"-Wl,-z,relro\";\n#endif\n#ifdef BR2_RELRO_FULL\n\t\t*cur++ = \"-Wl,-z,now\";\n\t\t*cur++ = \"-Wl,-z,relro\";\n#endif\n\t}\n\n\tparanoid_wrapper = getenv(\"BR_COMPILER_PARANOID_UNSAFE_PATH\");\n\tif (paranoid_wrapper && strlen(paranoid_wrapper) > 0)\n\t\tparanoid = 1;\n\telse\n\t\tparanoid = 0;\n\n\t/* Check for unsafe library and header paths */\n\tfor (i = 1; i < argc; i++) {\n\t\tconst struct str_len_s *opt;\n\t\tfor (opt=unsafe_opts; opt->str; opt++ ) {\n\t\t\t/* Skip any non-unsafe option. */\n\t\t\tif (strncmp(argv[i], opt->str, opt->len))\n\t\t\t\tcontinue;\n\n\t\t\t/* Handle both cases:\n\t\t\t *  - path is a separate argument,\n\t\t\t *  - path is concatenated with option.\n\t\t\t */\n\t\t\tif (argv[i][opt->len] == '\\0') {\n\t\t\t\ti++;\n\t\t\t\tif (i == argc)\n\t\t\t\t\tbreak;\n\t\t\t\tcheck_unsafe_path(argv[i-1], argv[i], paranoid, 0);\n\t\t\t} else\n\t\t\t\tcheck_unsafe_path(argv[i], argv[i] + opt->len, paranoid, 1);\n\t\t}\n\t}\n\n\t/* append forward args */\n\tmemcpy(cur, &argv[1], sizeof(char *) * (argc - 1));\n\tcur += argc - 1;\n\n\t/* finish with NULL termination */\n\t*cur = NULL;\n\n\texec_args = args;\n#ifdef BR_CCACHE\n\tif (getenv(\"BR_NO_CCACHE\"))\n\t\t/* Skip the ccache call */\n\t\texec_args++;\n#endif\n\n\t/* Debug the wrapper to see final arguments passed to the real compiler. */\n\tif (debug > 0) {\n\t\tfprintf(stderr, \"Toolchain wrapper executing:\");\n#ifdef BR_CCACHE_HASH\n\t\tfprintf(stderr, \"%sCCACHE_COMPILERCHECK='string:\" BR_CCACHE_HASH \"'\",\n\t\t\t(debug == 2) ? \"\\n    \" : \" \");\n#endif\n#ifdef BR_CCACHE_BASEDIR\n\t\tfprintf(stderr, \"%sCCACHE_BASEDIR='\" BR_CCACHE_BASEDIR \"'\",\n\t\t\t(debug == 2) ? \"\\n    \" : \" \");\n#endif\n\t\tfor (i = 0; exec_args[i]; i++)\n\t\t\tfprintf(stderr, \"%s'%s'\",\n\t\t\t\t(debug == 2) ? \"\\n    \" : \" \", exec_args[i]);\n\t\tfprintf(stderr, \"\\n\");\n\t}\n\n#ifdef BR_CCACHE_HASH\n\t/* Allow compilercheck to be overridden through the environment */\n\tif (setenv(\"CCACHE_COMPILERCHECK\", \"string:\" BR_CCACHE_HASH, 0)) {\n\t\tperror(__FILE__ \": Failed to set CCACHE_COMPILERCHECK\");\n\t\treturn 3;\n\t}\n#endif\n#ifdef BR_CCACHE_BASEDIR\n\t/* Allow compilercheck to be overridden through the environment */\n\tif (setenv(\"CCACHE_BASEDIR\", BR_CCACHE_BASEDIR, 0)) {\n\t\tperror(__FILE__ \": Failed to set CCACHE_BASEDIR\");\n\t\treturn 3;\n\t}\n#endif\n\n\tif (execv(exec_args[0], exec_args))\n\t\tperror(path);\n\n\tfree(args);\n\n\treturn 2;\n}\n"
  },
  {
    "path": "toolchain/toolchain-wrapper.mk",
    "content": "################################################################################\n#\n# definition of the toolchain wrapper build commands\n#\n################################################################################\n\n# We use --hash-style=both to increase the compatibility of the generated\n# binary with older platforms, except for MIPS, where the only acceptable\n# hash style is 'sysv'\nifeq ($(findstring mips,$(HOSTARCH)),mips)\nTOOLCHAIN_WRAPPER_HASH_STYLE = sysv\nelse\nTOOLCHAIN_WRAPPER_HASH_STYLE = both\nendif\n\nTOOLCHAIN_WRAPPER_ARGS = $($(PKG)_TOOLCHAIN_WRAPPER_ARGS)\nTOOLCHAIN_WRAPPER_ARGS += -DBR_SYSROOT='\"$(STAGING_SUBDIR)\"'\n\nTOOLCHAIN_WRAPPER_OPTS = \\\n\t$(ARCH_TOOLCHAIN_WRAPPER_OPTS) \\\n\t$(call qstrip,$(BR2_SSP_OPTION)) \\\n\t$(call qstrip,$(BR2_TARGET_OPTIMIZATION))\n\nifeq ($(BR2_REPRODUCIBLE),y)\nTOOLCHAIN_WRAPPER_OPTS += -Wl,--build-id=none\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_8),y)\nTOOLCHAIN_WRAPPER_OPTS += -ffile-prefix-map=$(BASE_DIR)=buildroot\nelse\nTOOLCHAIN_WRAPPER_OPTS += -D__FILE__=\\\"\\\" -D__BASE_FILE__=\\\"\\\" -Wno-builtin-macro-redefined\nendif\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_7),)\nTOOLCHAIN_WRAPPER_OPTS += -DBR_NEED_SOURCE_DATE_EPOCH\nendif\nendif\n\n# Disable -ftree-loop-distribute-patterns on microblaze to\n# workaround a compiler bug with gcc 10 and -O2, -Os or -O3.\n# https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=5879ab5fafedc8f6f9bfe95a4cf8501b0df90edd\n# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97208\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_10)$(BR2_microblaze),yy)\nTOOLCHAIN_WRAPPER_OPTS += -fno-tree-loop-distribute-patterns\nendif\n\n# We create a list like '\"-mfoo\", \"-mbar\", \"-mbarfoo\"' so that each flag is a\n# separate argument when used in execv() by the toolchain wrapper.\nTOOLCHAIN_WRAPPER_ARGS += \\\n\t-DBR_ADDITIONAL_CFLAGS='$(foreach f,$(TOOLCHAIN_WRAPPER_OPTS),\"$(f)\"$(comma))'\n\nifeq ($(BR2_CCACHE),y)\nTOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE\nendif\n\nifeq ($(BR2_x86_x1000),y)\nTOOLCHAIN_WRAPPER_ARGS += -DBR_OMIT_LOCK_PREFIX\nendif\n\n# Avoid FPU bug on XBurst CPUs\nifeq ($(BR2_mips_xburst),y)\n# Before gcc 4.6, -mno-fused-madd was needed, after -ffp-contract is\n# needed\nifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_6),y)\nTOOLCHAIN_WRAPPER_ARGS += -DBR_FP_CONTRACT_OFF\nelse\nTOOLCHAIN_WRAPPER_ARGS += -DBR_NO_FUSED_MADD\nendif\nendif\n\nifeq ($(BR2_CCACHE_USE_BASEDIR),y)\nTOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE_BASEDIR='\"$(BASE_DIR)\"'\nendif\n\nifeq ($(BR2_PIC_PIE),y)\nTOOLCHAIN_WRAPPER_ARGS += -DBR2_PIC_PIE\nendif\n\nifeq ($(BR2_RELRO_PARTIAL),y)\nTOOLCHAIN_WRAPPER_ARGS += -DBR2_RELRO_PARTIAL\nelse ifeq ($(BR2_RELRO_FULL),y)\nTOOLCHAIN_WRAPPER_ARGS += -DBR2_RELRO_FULL\nendif\n\ndefine TOOLCHAIN_WRAPPER_BUILD\n\t$(HOSTCC) $(HOST_CFLAGS) $(TOOLCHAIN_WRAPPER_ARGS) \\\n\t\t-s -Wl,--hash-style=$(TOOLCHAIN_WRAPPER_HASH_STYLE) \\\n\t\ttoolchain/toolchain-wrapper.c \\\n\t\t-o $(@D)/toolchain-wrapper\nendef\n\ndefine TOOLCHAIN_WRAPPER_INSTALL\n\t$(INSTALL) -D -m 0755 $(@D)/toolchain-wrapper \\\n\t\t$(HOST_DIR)/bin/toolchain-wrapper\nendef\n"
  },
  {
    "path": "toolchain/toolchain.mk",
    "content": "################################################################################\n#\n# toolchain-related customisation of the content of the target/ directory\n#\n################################################################################\n\n# Those customisations are added to the TARGET_FINALIZE_HOOKS, to be applied\n# just after all packages have been built.\n\n# Install the gconv modules\nifeq ($(BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY),y)\nTOOLCHAIN_GLIBC_GCONV_LIBS = $(call qstrip,$(BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST))\ndefine TOOLCHAIN_GLIBC_COPY_GCONV_LIBS\n\t$(Q)found_gconv=no; \\\n\tfor d in $(TOOLCHAIN_EXTERNAL_PREFIX) ''; do \\\n\t\t[ -d \"$(STAGING_DIR)/usr/lib/$${d}/gconv\" ] || continue; \\\n\t\tfound_gconv=yes; \\\n\t\tbreak; \\\n\tdone; \\\n\tif [ \"$${found_gconv}\" = \"no\" ]; then \\\n\t\tprintf \"Unable to find gconv modules\\n\" >&2; \\\n\t\texit 1; \\\n\tfi; \\\n\tif [ -z \"$(TOOLCHAIN_GLIBC_GCONV_LIBS)\" ]; then \\\n\t\t$(INSTALL) -m 0644 -D $(STAGING_DIR)/usr/lib/$${d}/gconv/gconv-modules \\\n\t\t\t\t      $(TARGET_DIR)/usr/lib/gconv/gconv-modules && \\\n\t\t$(INSTALL) -m 0644 $(STAGING_DIR)/usr/lib/$${d}/gconv/*.so \\\n\t\t\t\t   $(TARGET_DIR)/usr/lib/gconv \\\n\t\t|| exit 1; \\\n\telse \\\n\t\tfor l in $(TOOLCHAIN_GLIBC_GCONV_LIBS); do \\\n\t\t\t$(INSTALL) -m 0644 -D $(STAGING_DIR)/usr/lib/$${d}/gconv/$${l}.so \\\n\t\t\t\t\t      $(TARGET_DIR)/usr/lib/gconv/$${l}.so \\\n\t\t\t|| exit 1; \\\n\t\t\t$(TARGET_READELF) -d $(STAGING_DIR)/usr/lib/$${d}/gconv/$${l}.so |\\\n\t\t\tsort -u |\\\n\t\t\tsed -e '/.*(NEEDED).*\\[\\(.*\\.so\\)\\]$$/!d; s//\\1/;' |\\\n\t\t\twhile read lib; do \\\n\t\t\t\t $(INSTALL) -m 0644 -D $(STAGING_DIR)/usr/lib/$${d}/gconv/$${lib} \\\n\t\t\t\t\t\t       $(TARGET_DIR)/usr/lib/gconv/$${lib} \\\n\t\t\t\t || exit 1; \\\n\t\t\tdone; \\\n\t\tdone; \\\n\t\t./support/scripts/expunge-gconv-modules \"$(TOOLCHAIN_GLIBC_GCONV_LIBS)\" \\\n\t\t\t<$(STAGING_DIR)/usr/lib/$${d}/gconv/gconv-modules \\\n\t\t\t>$(TARGET_DIR)/usr/lib/gconv/gconv-modules; \\\n\tfi\nendef\nTOOLCHAIN_TARGET_FINALIZE_HOOKS += TOOLCHAIN_GLIBC_COPY_GCONV_LIBS\nendif\n"
  },
  {
    "path": "utils/brmake",
    "content": "#!/bin/bash\n# (C) 2016, \"Yann E. MORIN\" <yann.morin.1998@free.fr>\n# License: WTFPL, https://spdx.org/licenses/WTFPL.html\n\nmain() {\n    local found ret start d h m mf\n\n    if ! which unbuffer >/dev/null 2>&1; then\n        printf \"you need to install 'unbuffer' (from package expect or expect-dev)\\n\" >&2\n        exit 1\n    fi\n\n    start=${SECONDS}\n\n    ( exec 2>&1; unbuffer make \"${@}\"; ) \\\n    > >( while read line; do\n             printf \"%(%Y-%m-%dT%H:%M:%S)T %s\\n\" -1 \"${line}\"\n         done \\\n         |tee -a br.log \\\n         |grep --colour=never -E '>>>'\n       )\n    ret=${?}\n\n    d=$((SECONDS-start))\n    printf \"Done in \"\n    h=$((d/3600))\n    d=$((d%3600))\n    [ ${h} -eq 0 ] || { printf \"%dh \" ${h}; mf=\"02\"; }\n    m=$((d/60))\n    d=$((d%60))\n    [ ${m} -eq 0 ] || { printf \"%${mf}dmin \" ${m}; sf=\"02\"; }\n    printf \"%${sf}ds\" ${d}\n\n    if [ ${ret} -ne 0 ]; then\n        printf \"  (error code: %s)\" ${ret}\n    fi\n    printf \"\\n\"\n\n    return ${ret}\n}\n\nmain \"${@}\"\n"
  },
  {
    "path": "utils/check-package",
    "content": "#!/usr/bin/env python3\n# See utils/checkpackagelib/readme.txt before editing this file.\n\nimport argparse\nimport inspect\nimport os\nimport re\nimport six\nimport sys\n\nimport checkpackagelib.lib_config\nimport checkpackagelib.lib_hash\nimport checkpackagelib.lib_mk\nimport checkpackagelib.lib_patch\n\nVERBOSE_LEVEL_TO_SHOW_IGNORED_FILES = 3\nflags = None  # Command line arguments.\n\n\ndef parse_args():\n    parser = argparse.ArgumentParser()\n\n    # Do not use argparse.FileType(\"r\") here because only files with known\n    # format will be open based on the filename.\n    parser.add_argument(\"files\", metavar=\"F\", type=str, nargs=\"*\",\n                        help=\"list of files\")\n\n    parser.add_argument(\"--br2-external\", \"-b\", dest='intree_only', action=\"store_false\",\n                        help=\"do not apply the pathname filters used for intree files\")\n\n    parser.add_argument(\"--manual-url\", action=\"store\",\n                        default=\"http://nightly.buildroot.org/\",\n                        help=\"default: %(default)s\")\n    parser.add_argument(\"--verbose\", \"-v\", action=\"count\", default=0)\n    parser.add_argument(\"--quiet\", \"-q\", action=\"count\", default=0)\n\n    # Now the debug options in the order they are processed.\n    parser.add_argument(\"--include-only\", dest=\"include_list\", action=\"append\",\n                        help=\"run only the specified functions (debug)\")\n    parser.add_argument(\"--exclude\", dest=\"exclude_list\", action=\"append\",\n                        help=\"do not run the specified functions (debug)\")\n    parser.add_argument(\"--dry-run\", action=\"store_true\", help=\"print the \"\n                        \"functions that would be called for each file (debug)\")\n\n    return parser.parse_args()\n\n\nCONFIG_IN_FILENAME = re.compile(r\"Config\\.\\S*$\")\nDO_CHECK_INTREE = re.compile(r\"|\".join([\n    r\"Config.in\",\n    r\"arch/\",\n    r\"boot/\",\n    r\"fs/\",\n    r\"linux/\",\n    r\"package/\",\n    r\"system/\",\n    r\"toolchain/\",\n    ]))\nDO_NOT_CHECK_INTREE = re.compile(r\"|\".join([\n    r\"boot/barebox/barebox\\.mk$\",\n    r\"fs/common\\.mk$\",\n    r\"package/doc-asciidoc\\.mk$\",\n    r\"package/pkg-\\S*\\.mk$\",\n    r\"toolchain/helpers\\.mk$\",\n    r\"toolchain/toolchain-external/pkg-toolchain-external\\.mk$\",\n    ]))\n\n\ndef get_lib_from_filename(fname):\n    if flags.intree_only:\n        if DO_CHECK_INTREE.match(fname) is None:\n            return None\n        if DO_NOT_CHECK_INTREE.match(fname):\n            return None\n    else:\n        if os.path.basename(fname) == \"external.mk\" and \\\n           os.path.exists(fname[:-2] + \"desc\"):\n            return None\n    if CONFIG_IN_FILENAME.search(fname):\n        return checkpackagelib.lib_config\n    if fname.endswith(\".hash\"):\n        return checkpackagelib.lib_hash\n    if fname.endswith(\".mk\"):\n        return checkpackagelib.lib_mk\n    if fname.endswith(\".patch\"):\n        return checkpackagelib.lib_patch\n    return None\n\n\ndef is_a_check_function(m):\n    if not inspect.isclass(m):\n        return False\n    # do not call the base class\n    if m.__name__.startswith(\"_\"):\n        return False\n    if flags.include_list and m.__name__ not in flags.include_list:\n        return False\n    if flags.exclude_list and m.__name__ in flags.exclude_list:\n        return False\n    return True\n\n\ndef print_warnings(warnings):\n    # Avoid the need to use 'return []' at the end of every check function.\n    if warnings is None:\n        return 0  # No warning generated.\n\n    for level, message in enumerate(warnings):\n        if flags.verbose >= level:\n            print(message.replace(\"\\t\", \"< tab  >\").rstrip())\n    return 1  # One more warning to count.\n\n\ndef check_file_using_lib(fname):\n    # Count number of warnings generated and lines processed.\n    nwarnings = 0\n    nlines = 0\n\n    lib = get_lib_from_filename(fname)\n    if not lib:\n        if flags.verbose >= VERBOSE_LEVEL_TO_SHOW_IGNORED_FILES:\n            print(\"{}: ignored\".format(fname))\n        return nwarnings, nlines\n    classes = inspect.getmembers(lib, is_a_check_function)\n\n    if flags.dry_run:\n        functions_to_run = [c[0] for c in classes]\n        print(\"{}: would run: {}\".format(fname, functions_to_run))\n        return nwarnings, nlines\n\n    objects = [c[1](fname, flags.manual_url) for c in classes]\n\n    for cf in objects:\n        nwarnings += print_warnings(cf.before())\n    if six.PY3:\n        f = open(fname, \"r\", errors=\"surrogateescape\")\n    else:\n        f = open(fname, \"r\")\n    lastline = \"\"\n    for lineno, text in enumerate(f.readlines()):\n        nlines += 1\n        for cf in objects:\n            if cf.disable.search(lastline):\n                continue\n            nwarnings += print_warnings(cf.check_line(lineno + 1, text))\n        lastline = text\n    f.close()\n    for cf in objects:\n        nwarnings += print_warnings(cf.after())\n\n    return nwarnings, nlines\n\n\ndef __main__():\n    global flags\n    flags = parse_args()\n\n    if flags.intree_only:\n        # change all paths received to be relative to the base dir\n        base_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))\n        files_to_check = [os.path.relpath(os.path.abspath(f), base_dir) for f in flags.files]\n        # move current dir so the script find the files\n        os.chdir(base_dir)\n    else:\n        files_to_check = flags.files\n\n    if len(files_to_check) == 0:\n        print(\"No files to check style\")\n        sys.exit(1)\n\n    # Accumulate number of warnings generated and lines processed.\n    total_warnings = 0\n    total_lines = 0\n\n    for fname in files_to_check:\n        nwarnings, nlines = check_file_using_lib(fname)\n        total_warnings += nwarnings\n        total_lines += nlines\n\n    # The warning messages are printed to stdout and can be post-processed\n    # (e.g. counted by 'wc'), so for stats use stderr. Wait all warnings are\n    # printed, for the case there are many of them, before printing stats.\n    sys.stdout.flush()\n\n    if not flags.quiet:\n        print(\"{} lines processed\".format(total_lines), file=sys.stderr)\n        print(\"{} warnings generated\".format(total_warnings), file=sys.stderr)\n\n    if total_warnings > 0:\n        sys.exit(1)\n\n\n__main__()\n"
  },
  {
    "path": "utils/checkpackagelib/__init__.py",
    "content": ""
  },
  {
    "path": "utils/checkpackagelib/base.py",
    "content": "# See utils/checkpackagelib/readme.txt before editing this file.\nimport re\n\n\nclass _CheckFunction(object):\n    def __init__(self, filename, url_to_manual):\n        self.filename = filename\n        self.url_to_manual = url_to_manual\n        self.disable = re.compile(r\"^\\s*# check-package .*\\b{}\\b\".format(self.__class__.__name__))\n\n    def before(self):\n        pass\n\n    def check_line(self, lineno, text):\n        pass\n\n    def after(self):\n        pass\n"
  },
  {
    "path": "utils/checkpackagelib/lib.py",
    "content": "# See utils/checkpackagelib/readme.txt before editing this file.\n\nfrom checkpackagelib.base import _CheckFunction\n\n\nclass ConsecutiveEmptyLines(_CheckFunction):\n    def before(self):\n        self.lastline = \"non empty\"\n\n    def check_line(self, lineno, text):\n        if text.strip() == \"\" == self.lastline.strip():\n            return [\"{}:{}: consecutive empty lines\"\n                    .format(self.filename, lineno)]\n        self.lastline = text\n\n\nclass EmptyLastLine(_CheckFunction):\n    def before(self):\n        self.lastlineno = 0\n        self.lastline = \"non empty\"\n\n    def check_line(self, lineno, text):\n        self.lastlineno = lineno\n        self.lastline = text\n\n    def after(self):\n        if self.lastline.strip() == \"\":\n            return [\"{}:{}: empty line at end of file\"\n                    .format(self.filename, self.lastlineno)]\n\n\nclass NewlineAtEof(_CheckFunction):\n    def before(self):\n        self.lastlineno = 0\n        self.lastline = \"\\n\"\n\n    def check_line(self, lineno, text):\n        self.lastlineno = lineno\n        self.lastline = text\n\n    def after(self):\n        if self.lastline == self.lastline.rstrip(\"\\r\\n\"):\n            return [\"{}:{}: missing newline at end of file\"\n                    .format(self.filename, self.lastlineno),\n                    self.lastline]\n\n\nclass TrailingSpace(_CheckFunction):\n    def check_line(self, lineno, text):\n        line = text.rstrip(\"\\r\\n\")\n        if line != line.rstrip():\n            return [\"{}:{}: line contains trailing whitespace\"\n                    .format(self.filename, lineno),\n                    text]\n\n\nclass Utf8Characters(_CheckFunction):\n    def is_ascii(self, s):\n        try:\n            return all(ord(c) < 128 for c in s)\n        except TypeError:\n            return False\n\n    def check_line(self, lineno, text):\n        if not self.is_ascii(text):\n            return [\"{}:{}: line contains UTF-8 characters\"\n                    .format(self.filename, lineno),\n                    text]\n"
  },
  {
    "path": "utils/checkpackagelib/lib_config.py",
    "content": "# See utils/checkpackagelib/readme.txt before editing this file.\n# Kconfig generates errors if someone introduces a typo like \"boool\" instead of\n# \"bool\", so below check functions don't need to check for things already\n# checked by running \"make menuconfig\".\n\nimport re\n\nfrom checkpackagelib.base import _CheckFunction\nfrom checkpackagelib.lib import ConsecutiveEmptyLines  # noqa: F401\nfrom checkpackagelib.lib import EmptyLastLine          # noqa: F401\nfrom checkpackagelib.lib import NewlineAtEof           # noqa: F401\nfrom checkpackagelib.lib import TrailingSpace          # noqa: F401\n\n\ndef _empty_or_comment(text):\n    line = text.strip()\n    # ignore empty lines and comment lines indented or not\n    return line == \"\" or line.startswith(\"#\")\n\n\ndef _part_of_help_text(text):\n    return text.startswith(\"\\t  \")\n\n\n# used in more than one check\nentries_that_should_not_be_indented = [\n    \"choice\", \"comment\", \"config\", \"endchoice\", \"endif\", \"endmenu\", \"if\",\n    \"menu\", \"menuconfig\", \"source\"]\n\n\nclass AttributesOrder(_CheckFunction):\n    attributes_order_convention = {\n        \"bool\": 1, \"prompt\": 1, \"string\": 1, \"default\": 2, \"depends\": 3,\n        \"select\": 4, \"help\": 5}\n\n    def before(self):\n        self.state = 0\n\n    def check_line(self, lineno, text):\n        if _empty_or_comment(text) or _part_of_help_text(text):\n            return\n\n        attribute = text.split()[0]\n\n        if attribute in entries_that_should_not_be_indented:\n            self.state = 0\n            return\n        if attribute not in self.attributes_order_convention.keys():\n            return\n        new_state = self.attributes_order_convention[attribute]\n        wrong_order = self.state > new_state\n\n        # save to process next line\n        self.state = new_state\n\n        if wrong_order:\n            return [\"{}:{}: attributes order: type, default, depends on,\"\n                    \" select, help ({}#_config_files)\"\n                    .format(self.filename, lineno, self.url_to_manual),\n                    text]\n\n\nclass CommentsMenusPackagesOrder(_CheckFunction):\n    def before(self):\n        self.level = 0\n        self.menu_of_packages = [\"The top level menu\"]\n        self.new_package = \"\"\n        self.package = [\"\"]\n        self.print_package_warning = [True]\n        self.state = \"\"\n\n    def get_level(self):\n        return len(self.state.split('-')) - 1\n\n    def initialize_package_level_elements(self, text):\n        try:\n            self.menu_of_packages[self.level] = text[:-1]\n            self.package[self.level] = \"\"\n            self.print_package_warning[self.level] = True\n        except IndexError:\n            self.menu_of_packages.append(text[:-1])\n            self.package.append(\"\")\n            self.print_package_warning.append(True)\n\n    def initialize_level_elements(self, text):\n        self.level = self.get_level()\n        self.initialize_package_level_elements(text)\n\n    def check_line(self, lineno, text):\n        # We only want to force sorting for the top-level menus\n        if self.filename not in [\"fs/Config.in\",\n                                 \"package/Config.in\",\n                                 \"package/Config.in.host\",\n                                 \"package/kodi/Config.in\"]:\n            return\n\n        source_line = re.match(r'^\\s*source \".*/([^/]*)/Config.in(.host)?\"', text)\n\n        if text.startswith(\"comment \"):\n            if not self.state.endswith(\"-comment\"):\n                self.state += \"-comment\"\n\n            self.initialize_level_elements(text)\n\n        elif text.startswith(\"if \"):\n            self.state += \"-if\"\n\n            self.initialize_level_elements(text)\n\n        elif text.startswith(\"menu \"):\n            if self.state.endswith(\"-comment\"):\n                self.state = self.state[:-8]\n\n            self.state += \"-menu\"\n\n            self.initialize_level_elements(text)\n\n        elif text.startswith(\"endif\") or text.startswith(\"endmenu\"):\n            if self.state.endswith(\"-comment\"):\n                self.state = self.state[:-8]\n\n            if text.startswith(\"endif\"):\n                self.state = self.state[:-3]\n\n            elif text.startswith(\"endmenu\"):\n                self.state = self.state[:-5]\n\n            self.level = self.get_level()\n\n        elif source_line:\n            self.new_package = source_line.group(1)\n\n            # We order _ before A, so replace it with .\n            new_package_ord = self.new_package.replace('_', '.')\n\n            if self.package[self.level] != \"\" and \\\n               self.print_package_warning[self.level] and \\\n               new_package_ord < self.package[self.level]:\n                self.print_package_warning[self.level] = False\n                prefix = \"{}:{}: \".format(self.filename, lineno)\n                spaces = \" \" * len(prefix)\n                return [\"{prefix}Packages in: {menu},\\n\"\n                        \"{spaces}are not alphabetically ordered;\\n\"\n                        \"{spaces}correct order: '-', '_', digits, capitals, lowercase;\\n\"\n                        \"{spaces}first incorrect package: {package}\"\n                        .format(prefix=prefix, spaces=spaces,\n                                menu=self.menu_of_packages[self.level],\n                                package=self.new_package),\n                        text]\n\n            self.package[self.level] = new_package_ord\n\n\nclass HelpText(_CheckFunction):\n    HELP_TEXT_FORMAT = re.compile(r\"^\\t  .{,62}$\")\n    URL_ONLY = re.compile(r\"^(http|https|git)://\\S*$\")\n\n    def before(self):\n        self.help_text = False\n\n    def check_line(self, lineno, text):\n        if _empty_or_comment(text):\n            return\n\n        entry = text.split()[0]\n\n        if entry in entries_that_should_not_be_indented:\n            self.help_text = False\n            return\n        if text.strip() == \"help\":\n            self.help_text = True\n            return\n\n        if not self.help_text:\n            return\n\n        if self.HELP_TEXT_FORMAT.match(text.rstrip()):\n            return\n        if self.URL_ONLY.match(text.strip()):\n            return\n        return [\"{}:{}: help text: <tab><2 spaces><62 chars>\"\n                \" ({}#writing-rules-config-in)\"\n                .format(self.filename, lineno, self.url_to_manual),\n                text,\n                \"\\t  \" + \"123456789 \" * 6 + \"12\"]\n\n\nclass Indent(_CheckFunction):\n    ENDS_WITH_BACKSLASH = re.compile(r\"^[^#].*\\\\$\")\n    entries_that_should_be_indented = [\n        \"bool\", \"default\", \"depends\", \"help\", \"prompt\", \"select\", \"string\"]\n\n    def before(self):\n        self.backslash = False\n\n    def check_line(self, lineno, text):\n        if _empty_or_comment(text) or _part_of_help_text(text):\n            self.backslash = False\n            return\n\n        entry = text.split()[0]\n\n        last_line_ends_in_backslash = self.backslash\n\n        # calculate for next line\n        if self.ENDS_WITH_BACKSLASH.search(text):\n            self.backslash = True\n        else:\n            self.backslash = False\n\n        if last_line_ends_in_backslash:\n            if text.startswith(\"\\t\"):\n                return\n            return [\"{}:{}: continuation line should be indented using tabs\"\n                    .format(self.filename, lineno),\n                    text]\n\n        if entry in self.entries_that_should_be_indented:\n            if not text.startswith(\"\\t{}\".format(entry)):\n                return [\"{}:{}: should be indented with one tab\"\n                        \" ({}#_config_files)\"\n                        .format(self.filename, lineno, self.url_to_manual),\n                        text]\n        elif entry in entries_that_should_not_be_indented:\n            if not text.startswith(entry):\n                # four Config.in files have a special but legitimate indentation rule\n                if self.filename in [\"package/Config.in\",\n                                     \"package/Config.in.host\",\n                                     \"package/kodi/Config.in\",\n                                     \"package/x11r7/Config.in\"]:\n                    return\n                return [\"{}:{}: should not be indented\"\n                        .format(self.filename, lineno),\n                        text]\n"
  },
  {
    "path": "utils/checkpackagelib/lib_hash.py",
    "content": "# See utils/checkpackagelib/readme.txt before editing this file.\n# The validity of the hashes itself is checked when building, so below check\n# functions don't need to check for things already checked by running\n# \"make package-dirclean package-source\".\n\nimport re\n\nfrom checkpackagelib.base import _CheckFunction\nfrom checkpackagelib.lib import ConsecutiveEmptyLines  # noqa: F401\nfrom checkpackagelib.lib import EmptyLastLine          # noqa: F401\nfrom checkpackagelib.lib import NewlineAtEof           # noqa: F401\nfrom checkpackagelib.lib import TrailingSpace          # noqa: F401\n\n\ndef _empty_line_or_comment(text):\n    return text.strip() == \"\" or text.startswith(\"#\")\n\n\nclass HashNumberOfFields(_CheckFunction):\n    def check_line(self, lineno, text):\n        if _empty_line_or_comment(text):\n            return\n\n        fields = text.split()\n        if len(fields) != 3:\n            return [\"{}:{}: expected three fields ({}#adding-packages-hash)\"\n                    .format(self.filename, lineno, self.url_to_manual),\n                    text]\n\n\nclass HashType(_CheckFunction):\n    len_of_hash = {\"md5\": 32, \"sha1\": 40, \"sha224\": 56, \"sha256\": 64,\n                   \"sha384\": 96, \"sha512\": 128}\n\n    def check_line(self, lineno, text):\n        if _empty_line_or_comment(text):\n            return\n\n        fields = text.split()\n        if len(fields) < 2:\n            return\n\n        htype, hexa = fields[:2]\n        if htype == \"none\":\n            return\n        if htype not in self.len_of_hash.keys():\n            return [\"{}:{}: unexpected type of hash ({}#adding-packages-hash)\"\n                    .format(self.filename, lineno, self.url_to_manual),\n                    text]\n        if not re.match(\"^[0-9A-Fa-f]{%s}$\" % self.len_of_hash[htype], hexa):\n            return [\"{}:{}: hash size does not match type \"\n                    \"({}#adding-packages-hash)\"\n                    .format(self.filename, lineno, self.url_to_manual),\n                    text,\n                    \"expected {} hex digits\".format(self.len_of_hash[htype])]\n"
  },
  {
    "path": "utils/checkpackagelib/lib_mk.py",
    "content": "# See utils/checkpackagelib/readme.txt before editing this file.\n# There are already dependency checks during the build, so below check\n# functions don't need to check for things already checked by exploring the\n# menu options using \"make menuconfig\" and by running \"make\" with appropriate\n# packages enabled.\n\nimport os\nimport re\n\nfrom checkpackagelib.base import _CheckFunction\nfrom checkpackagelib.lib import ConsecutiveEmptyLines  # noqa: F401\nfrom checkpackagelib.lib import EmptyLastLine          # noqa: F401\nfrom checkpackagelib.lib import NewlineAtEof           # noqa: F401\nfrom checkpackagelib.lib import TrailingSpace          # noqa: F401\nfrom checkpackagelib.lib import Utf8Characters         # noqa: F401\n\n# used in more than one check\nstart_conditional = [\"ifdef\", \"ifeq\", \"ifndef\", \"ifneq\"]\ncontinue_conditional = [\"elif\", \"else\"]\nend_conditional = [\"endif\"]\n\n\nclass Indent(_CheckFunction):\n    COMMENT = re.compile(r\"^\\s*#\")\n    CONDITIONAL = re.compile(r\"^\\s*({})\\s\".format(\"|\".join(start_conditional + end_conditional + continue_conditional)))\n    ENDS_WITH_BACKSLASH = re.compile(r\"^[^#].*\\\\$\")\n    END_DEFINE = re.compile(r\"^\\s*endef\\s\")\n    MAKEFILE_TARGET = re.compile(r\"^[^# \\t]+:\\s\")\n    START_DEFINE = re.compile(r\"^\\s*define\\s\")\n\n    def before(self):\n        self.define = False\n        self.backslash = False\n        self.makefile_target = False\n\n    def check_line(self, lineno, text):\n        if self.START_DEFINE.search(text):\n            self.define = True\n            return\n        if self.END_DEFINE.search(text):\n            self.define = False\n            return\n\n        expect_tabs = False\n        if self.define or self.backslash or self.makefile_target:\n            expect_tabs = True\n        if not self.backslash and self.CONDITIONAL.search(text):\n            expect_tabs = False\n\n        # calculate for next line\n        if self.ENDS_WITH_BACKSLASH.search(text):\n            self.backslash = True\n        else:\n            self.backslash = False\n\n        if self.MAKEFILE_TARGET.search(text):\n            self.makefile_target = True\n            return\n        if text.strip() == \"\":\n            self.makefile_target = False\n            return\n\n        # comment can be indented or not inside define ... endef, so ignore it\n        if self.define and self.COMMENT.search(text):\n            return\n\n        if expect_tabs:\n            if not text.startswith(\"\\t\"):\n                return [\"{}:{}: expected indent with tabs\"\n                        .format(self.filename, lineno),\n                        text]\n        else:\n            if text.startswith(\"\\t\"):\n                return [\"{}:{}: unexpected indent with tabs\"\n                        .format(self.filename, lineno),\n                        text]\n\n\nclass OverriddenVariable(_CheckFunction):\n    CONCATENATING = re.compile(r\"^([A-Z0-9_]+)\\s*(\\+|:|)=\\s*\\$\\(\\\\1\\)\")\n    END_CONDITIONAL = re.compile(r\"^\\s*({})\".format(\"|\".join(end_conditional)))\n    OVERRIDING_ASSIGNMENTS = [':=', \"=\"]\n    START_CONDITIONAL = re.compile(r\"^\\s*({})\".format(\"|\".join(start_conditional)))\n    VARIABLE = re.compile(r\"^([A-Z0-9_]+)\\s*((\\+|:|)=)\")\n    USUALLY_OVERRIDDEN = re.compile(r\"^[A-Z0-9_]+({})\".format(\"|\".join([\n        r\"_ARCH\\s*=\\s*\",\n        r\"_CPU\\s*=\\s*\",\n        r\"_SITE\\s*=\\s*\",\n        r\"_SOURCE\\s*=\\s*\",\n        r\"_VERSION\\s*=\\s*\"])))\n\n    def before(self):\n        self.conditional = 0\n        self.unconditionally_set = []\n        self.conditionally_set = []\n\n    def check_line(self, lineno, text):\n        if self.START_CONDITIONAL.search(text):\n            self.conditional += 1\n            return\n        if self.END_CONDITIONAL.search(text):\n            self.conditional -= 1\n            return\n\n        m = self.VARIABLE.search(text)\n        if m is None:\n            return\n        variable, assignment = m.group(1, 2)\n\n        if self.conditional == 0:\n            if variable in self.conditionally_set:\n                self.unconditionally_set.append(variable)\n                if assignment in self.OVERRIDING_ASSIGNMENTS:\n                    return [\"{}:{}: unconditional override of variable {} previously conditionally set\"\n                            .format(self.filename, lineno, variable),\n                            text]\n\n            if variable not in self.unconditionally_set:\n                self.unconditionally_set.append(variable)\n                return\n            if assignment in self.OVERRIDING_ASSIGNMENTS:\n                return [\"{}:{}: unconditional override of variable {}\"\n                        .format(self.filename, lineno, variable),\n                        text]\n        else:\n            if variable not in self.unconditionally_set:\n                self.conditionally_set.append(variable)\n                return\n            if self.CONCATENATING.search(text):\n                return [\"{}:{}: immediate assignment to append to variable {}\"\n                        .format(self.filename, lineno, variable),\n                        text]\n            if self.USUALLY_OVERRIDDEN.search(text):\n                return\n            if assignment in self.OVERRIDING_ASSIGNMENTS:\n                return [\"{}:{}: conditional override of variable {}\"\n                        .format(self.filename, lineno, variable),\n                        text]\n\n\nclass PackageHeader(_CheckFunction):\n    def before(self):\n        self.skip = False\n\n    def check_line(self, lineno, text):\n        if self.skip or lineno > 6:\n            return\n\n        if lineno in [1, 5]:\n            if lineno == 1 and text.startswith(\"include \"):\n                self.skip = True\n                return\n            if text.rstrip() != \"#\" * 80:\n                return [\"{}:{}: should be 80 hashes ({}#writing-rules-mk)\"\n                        .format(self.filename, lineno, self.url_to_manual),\n                        text,\n                        \"#\" * 80]\n        elif lineno in [2, 4]:\n            if text.rstrip() != \"#\":\n                return [\"{}:{}: should be 1 hash ({}#writing-rules-mk)\"\n                        .format(self.filename, lineno, self.url_to_manual),\n                        text]\n        elif lineno == 6:\n            if text.rstrip() != \"\":\n                return [\"{}:{}: should be a blank line ({}#writing-rules-mk)\"\n                        .format(self.filename, lineno, self.url_to_manual),\n                        text]\n\n\nclass RemoveDefaultPackageSourceVariable(_CheckFunction):\n    packages_that_may_contain_default_source = [\"binutils\", \"gcc\", \"gdb\"]\n\n    def before(self):\n        package, _ = os.path.splitext(os.path.basename(self.filename))\n        package_upper = package.replace(\"-\", \"_\").upper()\n        self.package = package\n        self.FIND_SOURCE = re.compile(\n            r\"^{}_SOURCE\\s*=\\s*{}-\\$\\({}_VERSION\\)\\.tar\\.gz\"\n            .format(package_upper, package, package_upper))\n\n    def check_line(self, lineno, text):\n        if self.FIND_SOURCE.search(text):\n\n            if self.package in self.packages_that_may_contain_default_source:\n                return\n\n            return [\"{}:{}: remove default value of _SOURCE variable \"\n                    \"({}#generic-package-reference)\"\n                    .format(self.filename, lineno, self.url_to_manual),\n                    text]\n\n\nclass SpaceBeforeBackslash(_CheckFunction):\n    TAB_OR_MULTIPLE_SPACES_BEFORE_BACKSLASH = re.compile(r\"^.*(  |\\t ?)\\\\$\")\n\n    def check_line(self, lineno, text):\n        if self.TAB_OR_MULTIPLE_SPACES_BEFORE_BACKSLASH.match(text.rstrip()):\n            return [\"{}:{}: use only one space before backslash\"\n                    .format(self.filename, lineno),\n                    text]\n\n\nclass TrailingBackslash(_CheckFunction):\n    ENDS_WITH_BACKSLASH = re.compile(r\"^[^#].*\\\\$\")\n\n    def before(self):\n        self.backslash = False\n\n    def check_line(self, lineno, text):\n        last_line_ends_in_backslash = self.backslash\n\n        # calculate for next line\n        if self.ENDS_WITH_BACKSLASH.search(text):\n            self.backslash = True\n            self.lastline = text\n            return\n        self.backslash = False\n\n        if last_line_ends_in_backslash and text.strip() == \"\":\n            return [\"{}:{}: remove trailing backslash\"\n                    .format(self.filename, lineno - 1),\n                    self.lastline]\n\n\nclass TypoInPackageVariable(_CheckFunction):\n    ALLOWED = re.compile(r\"|\".join([\n        \"ACLOCAL_DIR\",\n        \"ACLOCAL_HOST_DIR\",\n        \"ACLOCAL_PATH\",\n        \"BR_CCACHE_INITIAL_SETUP\",\n        \"BR_LIBC\",\n        \"BR_NO_CHECK_HASH_FOR\",\n        \"LINUX_EXTENSIONS\",\n        \"LINUX_POST_PATCH_HOOKS\",\n        \"LINUX_TOOLS\",\n        \"LUA_RUN\",\n        \"MKFS_JFFS2\",\n        \"MKIMAGE_ARCH\",\n        \"PACKAGES_PERMISSIONS_TABLE\",\n        \"PKG_CONFIG_HOST_BINARY\",\n        \"SUMTOOL\",\n        \"TARGET_FINALIZE_HOOKS\",\n        \"TARGETS_ROOTFS\",\n        \"XTENSA_CORE_NAME\"]))\n    VARIABLE = re.compile(r\"^([A-Z0-9_]+_[A-Z0-9_]+)\\s*(\\+|)=\")\n\n    def before(self):\n        package, _ = os.path.splitext(os.path.basename(self.filename))\n        package = package.replace(\"-\", \"_\").upper()\n        # linux tools do not use LINUX_TOOL_ prefix for variables\n        package = package.replace(\"LINUX_TOOL_\", \"\")\n        # linux extensions do not use LINUX_EXT_ prefix for variables\n        package = package.replace(\"LINUX_EXT_\", \"\")\n        self.package = package\n        self.REGEX = re.compile(r\"^(HOST_|ROOTFS_)?({}_[A-Z0-9_]+)\".format(package))\n        self.FIND_VIRTUAL = re.compile(\n            r\"^{}_PROVIDES\\s*(\\+|)=\\s*(.*)\".format(package))\n        self.virtual = []\n\n    def check_line(self, lineno, text):\n        m = self.VARIABLE.search(text)\n        if m is None:\n            return\n\n        variable = m.group(1)\n\n        # allow to set variables for virtual package this package provides\n        v = self.FIND_VIRTUAL.search(text)\n        if v:\n            self.virtual += v.group(2).upper().split()\n            return\n        for virtual in self.virtual:\n            if variable.startswith(\"{}_\".format(virtual)):\n                return\n\n        if self.ALLOWED.match(variable):\n            return\n        if self.REGEX.search(text) is None:\n            return [\"{}:{}: possible typo: {} -> *{}*\"\n                    .format(self.filename, lineno, variable, self.package),\n                    text]\n\n\nclass UselessFlag(_CheckFunction):\n    DEFAULT_AUTOTOOLS_FLAG = re.compile(r\"^.*{}\".format(\"|\".join([\n        r\"_AUTORECONF\\s*=\\s*NO\",\n        r\"_LIBTOOL_PATCH\\s*=\\s*YES\"])))\n    DEFAULT_GENERIC_FLAG = re.compile(r\"^.*{}\".format(\"|\".join([\n        r\"_INSTALL_IMAGES\\s*=\\s*NO\",\n        r\"_INSTALL_REDISTRIBUTE\\s*=\\s*YES\",\n        r\"_INSTALL_STAGING\\s*=\\s*NO\",\n        r\"_INSTALL_TARGET\\s*=\\s*YES\"])))\n    END_CONDITIONAL = re.compile(r\"^\\s*({})\".format(\"|\".join(end_conditional)))\n    START_CONDITIONAL = re.compile(r\"^\\s*({})\".format(\"|\".join(start_conditional)))\n\n    def before(self):\n        self.conditional = 0\n\n    def check_line(self, lineno, text):\n        if self.START_CONDITIONAL.search(text):\n            self.conditional += 1\n            return\n        if self.END_CONDITIONAL.search(text):\n            self.conditional -= 1\n            return\n\n        # allow non-default conditionally overridden by default\n        if self.conditional > 0:\n            return\n\n        if self.DEFAULT_GENERIC_FLAG.search(text):\n            return [\"{}:{}: useless default value ({}#\"\n                    \"_infrastructure_for_packages_with_specific_build_systems)\"\n                    .format(self.filename, lineno, self.url_to_manual),\n                    text]\n\n        if self.DEFAULT_AUTOTOOLS_FLAG.search(text) and not text.lstrip().startswith(\"HOST_\"):\n            return [\"{}:{}: useless default value \"\n                    \"({}#_infrastructure_for_autotools_based_packages)\"\n                    .format(self.filename, lineno, self.url_to_manual),\n                    text]\n\n\nclass VariableWithBraces(_CheckFunction):\n    VARIABLE_WITH_BRACES = re.compile(r\"^[^#].*[^$]\\${\\w+}\")\n\n    def check_line(self, lineno, text):\n        if self.VARIABLE_WITH_BRACES.match(text.rstrip()):\n            return [\"{}:{}: use $() to delimit variables, not ${{}}\"\n                    .format(self.filename, lineno),\n                    text]\n"
  },
  {
    "path": "utils/checkpackagelib/lib_patch.py",
    "content": "# See utils/checkpackagelib/readme.txt before editing this file.\n# The format of the patch files is tested during the build, so below check\n# functions don't need to check for things already checked by running\n# \"make package-dirclean package-patch\".\n\nimport os\nimport re\n\nfrom checkpackagelib.base import _CheckFunction\nfrom checkpackagelib.lib import NewlineAtEof           # noqa: F401\n\n\nclass ApplyOrder(_CheckFunction):\n    APPLY_ORDER = re.compile(r\"\\d{1,4}-[^/]*$\")\n\n    def before(self):\n        if not self.APPLY_ORDER.match(os.path.basename(self.filename)):\n            return [\"{}:0: use name <number>-<description>.patch \"\n                    \"({}#_providing_patches)\"\n                    .format(self.filename, self.url_to_manual)]\n\n\nclass NumberedSubject(_CheckFunction):\n    NUMBERED_PATCH = re.compile(r\"Subject:\\s*\\[PATCH\\s*\\d+/\\d+\\]\")\n\n    def before(self):\n        self.git_patch = False\n        self.lineno = 0\n        self.text = None\n\n    def check_line(self, lineno, text):\n        if text.startswith(\"diff --git\"):\n            self.git_patch = True\n            return\n        if self.NUMBERED_PATCH.search(text):\n            self.lineno = lineno\n            self.text = text\n\n    def after(self):\n        if self.git_patch and self.text:\n            return [\"{}:{}: generate your patches with 'git format-patch -N'\"\n                    .format(self.filename, self.lineno),\n                    self.text]\n\n\nclass Sob(_CheckFunction):\n    SOB_ENTRY = re.compile(r\"^Signed-off-by: .*$\")\n\n    def before(self):\n        self.found = False\n\n    def check_line(self, lineno, text):\n        if self.found:\n            return\n        if self.SOB_ENTRY.search(text):\n            self.found = True\n\n    def after(self):\n        if not self.found:\n            return [\"{}:0: missing Signed-off-by in the header \"\n                    \"({}#_format_and_licensing_of_the_package_patches)\"\n                    .format(self.filename, self.url_to_manual)]\n"
  },
  {
    "path": "utils/checkpackagelib/readme.txt",
    "content": "How the scripts are structured:\n- check-package is the main engine, called by the user.\n  For each input file, this script decides which parser should be used and it\n  collects all classes declared in the library file and instantiates them.\n  The main engine opens the input files and it serves each raw line (including\n  newline!) to the method check_line() of every check object.\n  Two special methods before() and after() are used to call the initialization\n  of variables (for the case it needs to keep data across calls) and the\n  equivalent finalization (e.g. for the case a warning must be issued if some\n  pattern is not in the input file).\n- base.py contains the base class for all check functions.\n- lib.py contains the classes for common check functions.\n  Each check function is explicitly included in a given type-parsing library.\n  Do not include every single check function in this file, a class that will\n  only parse hash files should be implemented in the hash-parsing library.\n  When a warning must be issued, the check function returns an array of strings.\n  Each string is a warning message and is displayed if the corresponding verbose\n  level is active. When the script is called without --verbose only the first\n  warning in the returned array is printed; when called with --verbose both\n  first and second warnings are printed; when called with -vv until the third\n  warning is printed; an so on.\n  Helper functions can be defined and will not be called by the main script.\n- lib_type.py contains check functions specific to files of this type.\n\nSome hints when changing this code:\n- prefer O(n) algorithms, where n is the total number of lines in the files\n  processed.\n- when there is no other reason for ordering, use alphabetical order (e.g. keep\n  the check functions in alphabetical order, keep the imports in alphabetical\n  order, and so on).\n- keep in mind that for every class the method before() will be called before\n  any line is served to be checked by the method check_line(). A class that\n  checks the filename should only implement the method before(). A function that\n  needs to keep data across calls (e.g. keep the last line before the one being\n  processed) should initialize all variables using this method.\n- keep in mind that for every class the method after() will be called after all\n  lines were served to be checked by the method check_line(). A class that\n  checks the absence of a pattern in the file will need to use this method.\n- try to avoid false warnings. It's better to not issue a warning message to a\n  corner case than have too many false warnings. The second can make users stop\n  using the script.\n- do not check spacing in the input line in every single function. Trailing\n  whitespace and wrong indentation should be checked by separate functions.\n- avoid duplicate tests. Try to test only one thing in each function.\n- in the warning message, include the url to a section from the manual, when\n  applicable. It potentially will make more people know the manual.\n- use short sentences in the warning messages. A complete explanation can be\n  added to show when --verbose is used.\n- when testing, verify the error message is displayed when the error pattern is\n  found, but also verify the error message is not displayed for few\n  well-formatted packages... there are many of these, just pick your favorite\n  as golden package that should not trigger any warning message.\n- check the url displayed by the warning message works.\n\nUsage examples:\n- to get a list of check functions that would be called without actually\n  calling them you can use the --dry-run option:\n$ utils/check-package --dry-run package/yourfavorite/*\n\n- when you just added a new check function, e.g. Something, check how it behaves\n  for all current packages:\n$ utils/check-package --include-only Something $(find package -type f)\n\n- the effective processing time (when the .pyc were already generated and all\n  files to be processed are cached in the RAM) should stay in the order of few\n  seconds:\n$ utils/check-package $(find package -type f) >/dev/null ; \\\n  time utils/check-package $(find package -type f) >/dev/null\n\n- vim users can navigate the warnings (most editors probably have similar\n  function) since warnings are generated in the form 'path/file:line: warning':\n$ find package/ -name 'Config.*' > filelist && vim -c \\\n  'set makeprg=utils/check-package\\ $(cat\\ filelist)' -c make -c copen\n"
  },
  {
    "path": "utils/config",
    "content": "#!/bin/bash\n# Manipulate options in a .config file from the command line\n\nmyname=${0##*/}\n\n# If no prefix forced, use the default BR2_\nBR2_PREFIX=\"${BR2_PREFIX-BR2_}\"\n\nusage() {\n\tcat >&2 <<EOL\nManipulate options in a .config file from the command line.\nUsage:\n$myname options command ...\ncommands:\n\t--enable|-e option   Enable option\n\t--disable|-d option  Disable option\n\t--set-str option string\n\t                     Set option to \"string\"\n\t--set-val option value\n\t                     Set option to value\n\t--undefine|-u option Undefine option\n\t--state|-s option    Print state of option (n,y,m,undef)\n\n\t--enable-after|-E beforeopt option\n                             Enable option directly after other option\n\t--disable-after|-D beforeopt option\n                             Disable option directly after other option\n\n\tcommands can be repeated multiple times\n\noptions:\n\t--file config-file   .config file to change (default .config)\n\t--keep-case|-k       Keep next symbols' case (dont' upper-case it)\n\t--package|-p         Operate on package (set prefix to BR2_PACKAGE_)\n\n$myname doesn't check the validity of the .config file. This is done at next\nmake time.\n\nBy default, $myname will upper-case the given symbol. Use --keep-case to keep\nthe case of all following symbols unchanged.\n\n$myname uses 'BR2_' as the default symbol prefix. Set the environment\nvariable BR2_PREFIX to the prefix to use. Eg.: BR2_PREFIX=\"FOO_\" $myname ...\nEOL\n\texit 1\n}\n\ncheckarg() {\n\tARG=\"$1\"\n\tif [ \"$ARG\" = \"\" ] ; then\n\t\tusage\n\tfi\n\tif [ \"$MUNGE_CASE\" = \"yes\" ] ; then\n\t\tARG=\"`echo $ARG | tr a-z- A-Z_`\"\n\tfi\n\tcase \"$ARG\" in\n\t${BR2_PREFIX}*)\n\t\tARG=\"${ARG/${BR2_PREFIX}/}\"\n\t\t;;\n\tesac\n}\n\ntxt_append() {\n\tlocal anchor=\"$1\"\n\tlocal insert=\"$2\"\n\tlocal infile=\"$3\"\n\tlocal tmpfile=\"$infile.swp\"\n\n\t# sed append cmd: 'a\\' + newline + text + newline\n\tcmd=\"$(printf \"a\\\\%b$insert\" \"\\n\")\"\n\n\tsed -i -e \"/$anchor/$cmd\" \"$infile\"\n}\n\ntxt_subst() {\n\tlocal before=\"$1\"\n\tlocal after=\"$2\"\n\tlocal infile=\"$3\"\n\tlocal tmpfile=\"$infile.swp\"\n\n\tsed -i -e \"s:$before:$after:\" \"$infile\"\n}\n\ntxt_delete() {\n\tlocal text=\"$1\"\n\tlocal infile=\"$2\"\n\tlocal tmpfile=\"$infile.swp\"\n\n\tsed -i -e \"/$text/d\" \"$infile\"\n}\n\nset_var() {\n\tlocal name=$1 new=$2 before=$3\n\n\tname_re=\"^($name=|# $name is not set)\"\n\tbefore_re=\"^($before=|# $before is not set)\"\n\tif test -n \"$before\" && grep -Eq \"$before_re\" \"$FN\"; then\n\t\ttxt_append \"^$before=\" \"$new\" \"$FN\"\n\t\ttxt_append \"^# $before is not set\" \"$new\" \"$FN\"\n\telif grep -Eq \"$name_re\" \"$FN\"; then\n\t\ttxt_subst \"^$name=.*\" \"$new\" \"$FN\"\n\t\ttxt_subst \"^# $name is not set\" \"$new\" \"$FN\"\n\telse\n\t\techo \"$new\" >>\"$FN\"\n\tfi\n}\n\nundef_var() {\n\tlocal name=$1\n\n\ttxt_delete \"^$name=\" \"$FN\"\n\ttxt_delete \"^# $name is not set\" \"$FN\"\n}\n\nif [ \"$1\" = \"--file\" ]; then\n\tFN=\"$2\"\n\tif [ \"$FN\" = \"\" ] ; then\n\t\tusage\n\tfi\n\tshift 2\nelse\n\tFN=.config\nfi\n\nif [ \"$1\" = \"\" ] ; then\n\tusage\nfi\n\nMUNGE_CASE=yes\nwhile [ \"$1\" != \"\" ] ; do\n\tCMD=\"$1\"\n\tshift\n\tcase \"$CMD\" in\n\t--keep-case|-k)\n\t\tMUNGE_CASE=no\n\t\tcontinue\n\t\t;;\n\t--package|-p)\n\t\tBR2_PREFIX=\"BR2_PACKAGE_\"\n\t\tcontinue\n\t\t;;\n\t--*-after|-E|-D|-M)\n\t\tcheckarg \"$1\"\n\t\tA=$ARG\n\t\tcheckarg \"$2\"\n\t\tB=$ARG\n\t\tshift 2\n\t\t;;\n\t-*)\n\t\tcheckarg \"$1\"\n\t\tshift\n\t\t;;\n\tesac\n\tcase \"$CMD\" in\n\t--enable|-e)\n\t\tset_var \"${BR2_PREFIX}$ARG\" \"${BR2_PREFIX}$ARG=y\"\n\t\t;;\n\n\t--disable|-d)\n\t\tset_var \"${BR2_PREFIX}$ARG\" \"# ${BR2_PREFIX}$ARG is not set\"\n\t\t;;\n\n\t--set-str)\n\t\t# sed swallows one level of escaping, so we need double-escaping\n\t\tset_var \"${BR2_PREFIX}$ARG\" \"${BR2_PREFIX}$ARG=\\\"${1//\\\"/\\\\\\\\\\\"}\\\"\"\n\t\tshift\n\t\t;;\n\n\t--set-val)\n\t\tset_var \"${BR2_PREFIX}$ARG\" \"${BR2_PREFIX}$ARG=$1\"\n\t\tshift\n\t\t;;\n\t--undefine|-u)\n\t\tundef_var \"${BR2_PREFIX}$ARG\"\n\t\t;;\n\n\t--state|-s)\n\t\tif grep -q \"# ${BR2_PREFIX}$ARG is not set\" $FN ; then\n\t\t\techo n\n\t\telse\n\t\t\tV=\"$(grep \"^${BR2_PREFIX}$ARG=\" $FN)\"\n\t\t\tif [ $? != 0 ] ; then\n\t\t\t\techo undef\n\t\t\telse\n\t\t\t\tV=\"${V/#${BR2_PREFIX}$ARG=/}\"\n\t\t\t\tV=\"${V/#\\\"/}\"\n\t\t\t\tV=\"${V/%\\\"/}\"\n\t\t\t\tV=\"${V//\\\\\\\"/\\\"}\"\n\t\t\t\techo \"${V}\"\n\t\t\tfi\n\t\tfi\n\t\t;;\n\n\t--enable-after|-E)\n\t\tset_var \"${BR2_PREFIX}$B\" \"${BR2_PREFIX}$B=y\" \"${BR2_PREFIX}$A\"\n\t\t;;\n\n\t--disable-after|-D)\n\t\tset_var \"${BR2_PREFIX}$B\" \"# ${BR2_PREFIX}$B is not set\" \"${BR2_PREFIX}$A\"\n\t\t;;\n\n\t*)\n\t\tusage\n\t\t;;\n\tesac\ndone\n"
  },
  {
    "path": "utils/diffconfig",
    "content": "#!/usr/bin/python\n#\n# diffconfig - a tool to compare .config files.\n#\n# originally written in 2006 by Matt Mackall\n#  (at least, this was in his bloatwatch source code)\n# last worked on 2008 by Tim Bird for the Linux kernel\n# Adapted to Buildroot 2017 by Marcus Folkesson\n#\n\nimport sys, os\n\ndef usage():\n    print(\"\"\"Usage: diffconfig [-h] [-m] [<config1> <config2>]\n\nDiffconfig is a simple utility for comparing two .config files.\nUsing standard diff to compare .config files often includes extraneous and\ndistracting information.  This utility produces sorted output with only the\nchanges in configuration values between the two files.\n\nAdded and removed items are shown with a leading plus or minus, respectively.\nChanged items show the old and new values on a single line.\n\nIf -m is specified, then output will be in \"merge\" style, which has the\nchanged and new values in kernel config option format.\n\nIf no config files are specified, .config and .config.old are used.\n\nExample usage:\n $ diffconfig .config config-with-some-changes\n-BR2_LINUX_KERNEL_INTREE_DTS_NAME \"vexpress-v2p-ca9\"\n BR2_LINUX_KERNEL_DTS_SUPPORT y -> n\n BR2_LINUX_KERNEL_USE_INTREE_DTS y -> n\n BR2_PACKAGE_DFU_UTIL n -> y\n BR2_PACKAGE_LIBUSB n -> y\n BR2_TARGET_GENERIC_HOSTNAME \"buildroot\" -> \"Tuxie\"\n BR2_TARGET_GENERIC_ISSUE \"Welcome to Buildroot\" -> \"Welcome to CustomBoard\"\n+BR2_PACKAGE_LIBUSB_COMPAT n\n\n\"\"\")\n    sys.exit(0)\n\n# returns a dictionary of name/value pairs for config items in the file\ndef readconfig(config_file):\n    d = {}\n    for line in config_file:\n        line = line.strip()\n        if len(line) == 0:\n            continue\n        if line[-11:] == \" is not set\":\n            d[line[2:-11]] = \"n\"\n        elif line[0] != \"#\":\n            name, val = line.split(\"=\", 1)\n            d[name] = val\n    return d\n\ndef print_config(op, config, value, new_value):\n    global merge_style\n\n    if merge_style:\n        if new_value:\n            if new_value==\"n\":\n                print(\"# %s is not set\" % config)\n            else:\n                print(\"%s=%s\" % (config, new_value))\n    else:\n        if op==\"-\":\n            print(\"-%s %s\" % (config, value))\n        elif op==\"+\":\n            print(\"+%s %s\" % (config, new_value))\n        else:\n            print(\" %s %s -> %s\" % (config, value, new_value))\n\ndef main():\n    global merge_style\n\n    # parse command line args\n    if (\"-h\" in sys.argv or \"--help\" in sys.argv):\n        usage()\n\n    merge_style = 0\n    if \"-m\" in sys.argv:\n        merge_style = 1\n        sys.argv.remove(\"-m\")\n\n    argc = len(sys.argv)\n    if not (argc==1 or argc == 3):\n        print(\"Error: incorrect number of arguments or unrecognized option\")\n        usage()\n\n    if argc == 1:\n        # if no filenames given, assume .config and .config.old\n        build_dir=\"\"\n        if \"KBUILD_OUTPUT\" in os.environ:\n            build_dir = os.environ[\"KBUILD_OUTPUT\"]+\"/\"\n        configa_filename = build_dir + \".config.old\"\n        configb_filename = build_dir + \".config\"\n    else:\n        configa_filename = sys.argv[1]\n        configb_filename = sys.argv[2]\n\n    try:\n        a = readconfig(open(configa_filename))\n        b = readconfig(open(configb_filename))\n    except (IOError):\n        e = sys.exc_info()[1]\n        print(\"I/O error[%s]: %s\\n\" % (e.args[0],e.args[1]))\n        usage()\n\n    # print items in a but not b (accumulate, sort and print)\n    old = []\n    for config in a:\n        if config not in b:\n            old.append(config)\n    old.sort()\n    for config in old:\n        print_config(\"-\", config, a[config], None)\n        del a[config]\n\n    # print items that changed (accumulate, sort, and print)\n    changed = []\n    for config in a:\n        if a[config] != b[config]:\n            changed.append(config)\n        else:\n            del b[config]\n    changed.sort()\n    for config in changed:\n        print_config(\"->\", config, a[config], b[config])\n        del b[config]\n\n    # now print items in b but not in a\n    # (items from b that were in a were removed above)\n    new = sorted(b.keys())\n    for config in new:\n        print_config(\"+\", config, None, b[config])\n\nmain()\n"
  },
  {
    "path": "utils/genrandconfig",
    "content": "#!/usr/bin/env python3\n\n# Copyright (C) 2014 by Thomas Petazzoni <thomas.petazzoni@free-electrons.com>\n#\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 2 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n# General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n\n# This script generates a random configuration for testing Buildroot.\n\nimport contextlib\nimport csv\nimport os\nfrom random import randint\nimport subprocess\nimport sys\nfrom distutils.version import StrictVersion\nimport platform\n\nif sys.hexversion >= 0x3000000:\n    import urllib.request as _urllib\nelse:\n    import urllib2 as _urllib\n\n\ndef urlopen_closing(uri):\n    return contextlib.closing(_urllib.urlopen(uri))\n\n\nclass SystemInfo:\n    DEFAULT_NEEDED_PROGS = [\"make\", \"git\", \"gcc\", \"timeout\"]\n    DEFAULT_OPTIONAL_PROGS = [\"bzr\", \"java\", \"javac\", \"jar\", \"diffoscope\"]\n\n    def __init__(self):\n        self.needed_progs = list(self.__class__.DEFAULT_NEEDED_PROGS)\n        self.optional_progs = list(self.__class__.DEFAULT_OPTIONAL_PROGS)\n        self.progs = {}\n\n    def find_prog(self, name, flags=os.X_OK, env=os.environ):\n        if not name or name[0] == os.sep:\n            raise ValueError(name)\n\n        prog_path = env.get(\"PATH\", None)\n        # for windows compatibility, we'd need to take PATHEXT into account\n\n        if prog_path:\n            for prog_dir in filter(None, prog_path.split(os.pathsep)):\n                # os.join() not necessary: non-empty prog_dir\n                # and name[0] != os.sep\n                prog = prog_dir + os.sep + name\n                if os.access(prog, flags):\n                    return prog\n        # --\n        return None\n\n    def has(self, prog):\n        \"\"\"Checks whether a program is available.\n        Lazily evaluates missing entries.\n\n        Returns: None if prog not found, else path to the program [evaluates\n        to True]\n        \"\"\"\n        try:\n            return self.progs[prog]\n        except KeyError:\n            pass\n\n        have_it = self.find_prog(prog)\n        # java[c] needs special care\n        if have_it and prog in ('java', 'javac'):\n            with open(os.devnull, \"w\") as devnull:\n                if subprocess.call(\"%s -version | grep gcj\" % prog,\n                                   shell=True,\n                                   stdout=devnull, stderr=devnull) != 1:\n                    have_it = False\n        # --\n        self.progs[prog] = have_it\n        return have_it\n\n    def check_requirements(self):\n        \"\"\"Checks program dependencies.\n\n        Returns: True if all mandatory programs are present, else False.\n        \"\"\"\n        do_check_has_prog = self.has\n\n        missing_requirements = False\n        for prog in self.needed_progs:\n            if not do_check_has_prog(prog):\n                print(\"ERROR: your system lacks the '%s' program\" % prog)\n                missing_requirements = True\n\n        # check optional programs here,\n        # else they'd get checked by each worker instance\n        for prog in self.optional_progs:\n            do_check_has_prog(prog)\n\n        return not missing_requirements\n\n\ndef get_toolchain_configs(toolchains_csv, buildrootdir):\n    \"\"\"Fetch and return the possible toolchain configurations\n\n    This function returns an array of toolchain configurations. Each\n    toolchain configuration is itself an array of lines of the defconfig.\n    \"\"\"\n\n    with open(toolchains_csv) as r:\n        # filter empty lines and comments\n        lines = [t for t in r.readlines() if len(t.strip()) > 0 and t[0] != '#']\n        toolchains = lines\n    configs = []\n\n    (_, _, _, _, hostarch) = os.uname()\n    # ~2015 distros report x86 when on a 32bit install\n    if hostarch == 'i686' or hostarch == 'i386' or hostarch == 'x86':\n        hostarch = 'x86'\n\n    for row in csv.reader(toolchains):\n        config = {}\n        configfile = row[0]\n        config_hostarch = row[1]\n        keep = False\n\n        # Keep all toolchain configs that work regardless of the host\n        # architecture\n        if config_hostarch == \"any\":\n            keep = True\n\n        # Keep all toolchain configs that can work on the current host\n        # architecture\n        if hostarch == config_hostarch:\n            keep = True\n\n        # Assume that x86 32 bits toolchains work on x86_64 build\n        # machines\n        if hostarch == 'x86_64' and config_hostarch == \"x86\":\n            keep = True\n\n        if not keep:\n            continue\n\n        if not os.path.isabs(configfile):\n            configfile = os.path.join(buildrootdir, configfile)\n\n        with open(configfile) as r:\n            config = r.readlines()\n        configs.append(config)\n    return configs\n\n\ndef is_toolchain_usable(configfile, config):\n    \"\"\"Check if the toolchain is actually usable.\"\"\"\n\n    with open(configfile) as configf:\n        configlines = configf.readlines()\n\n    # Check that the toolchain configuration is still present\n    for toolchainline in config:\n        if toolchainline not in configlines:\n            print(\"WARN: toolchain can't be used\", file=sys.stderr)\n            print(\"      Missing: %s\" % toolchainline.strip(), file=sys.stderr)\n            return False\n\n    # The latest Linaro toolchains on x86-64 hosts requires glibc\n    # 2.14+ on the host.\n    if platform.machine() == 'x86_64':\n        if 'BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y\\n' in configlines or \\\n           'BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y\\n' in configlines or \\\n           'BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE=y\\n' in configlines or \\\n           'BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB=y\\n' in configlines:\n            ldd_version_output = subprocess.check_output(['ldd', '--version'])\n            glibc_version = ldd_version_output.splitlines()[0].split()[-1]\n            if StrictVersion('2.14') > StrictVersion(glibc_version):\n                print(\"WARN: ignoring the Linaro ARM toolchains because too old host glibc\", file=sys.stderr)\n                return False\n\n    return True\n\n\ndef fixup_config(sysinfo, configfile):\n    \"\"\"Finalize the configuration and reject any problematic combinations\n\n    This function returns 'True' when the configuration has been\n    accepted, and 'False' when the configuration has not been accepted because\n    it is known to fail (in which case another random configuration will be\n    generated).\n    \"\"\"\n\n    with open(configfile) as configf:\n        configlines = configf.readlines()\n\n    BR2_TOOLCHAIN_EXTERNAL_URL = 'BR2_TOOLCHAIN_EXTERNAL_URL=\"http://autobuild.buildroot.org/toolchains/tarballs/'\n\n    if \"BR2_NEEDS_HOST_JAVA=y\\n\" in configlines and not sysinfo.has(\"java\"):\n        return False\n    # The ctng toolchain is affected by PR58854\n    if 'BR2_PACKAGE_LTTNG_TOOLS=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'armv5-ctng-linux-gnueabi.tar.xz\"\\n' in configlines:\n        return False\n    # The ctng toolchain tigger an assembler error with guile package when compiled with -Os (same issue as for CS ARM 2014.05-29)\n    if 'BR2_PACKAGE_GUILE=y\\n' in configlines and \\\n       'BR2_OPTIMIZE_S=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'armv5-ctng-linux-gnueabi.tar.xz\"\\n' in configlines:\n        return False\n    # The ctng toolchain is affected by PR58854\n    if 'BR2_PACKAGE_LTTNG_TOOLS=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'armv6-ctng-linux-uclibcgnueabi.tar.xz\"\\n' in configlines:\n        return False\n    # The ctng toolchain is affected by PR58854\n    if 'BR2_PACKAGE_LTTNG_TOOLS=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'armv7-ctng-linux-gnueabihf.tar.xz\"\\n' in configlines:\n        return False\n    # The ctng toolchain is affected by PR60155\n    if 'BR2_PACKAGE_SDL=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'powerpc-ctng-linux-uclibc.tar.xz\"\\n' in configlines:\n        return False\n    # The ctng toolchain is affected by PR60155\n    if 'BR2_PACKAGE_LIBMPEG2=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'powerpc-ctng-linux-uclibc.tar.xz\"\\n' in configlines:\n        return False\n    # This MIPS toolchain uses eglibc-2.18 which lacks SYS_getdents64\n    if 'BR2_PACKAGE_STRONGSWAN=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'mips64el-ctng_n64-linux-gnu.tar.xz\"\\n' in configlines:\n        return False\n    # This MIPS toolchain uses eglibc-2.18 which lacks SYS_getdents64\n    if 'BR2_PACKAGE_PYTHON3=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'mips64el-ctng_n64-linux-gnu.tar.xz\"\\n' in configlines:\n        return False\n    # libffi not available on sh2a and ARMv7-M, but propagating libffi\n    # arch dependencies in Buildroot is really too much work, so we\n    # handle this here.\n    if 'BR2_sh2a=y\\n' in configlines and \\\n       'BR2_PACKAGE_LIBFFI=y\\n' in configlines:\n        return False\n    if 'BR2_ARM_CPU_ARMV7M=y\\n' in configlines and \\\n       'BR2_PACKAGE_LIBFFI=y\\n' in configlines:\n        return False\n    if 'BR2_nds32=y\\n' in configlines and \\\n       'BR2_PACKAGE_LIBFFI=y\\n' in configlines:\n        return False\n    if 'BR2_PACKAGE_SUNXI_BOARDS=y\\n' in configlines:\n        configlines.remove('BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE=\"\"\\n')\n        configlines.append('BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE=\"a10/hackberry.fex\"\\n')\n    # This MIPS uClibc toolchain fails to build the gdb package\n    if 'BR2_PACKAGE_GDB=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'mipsel-ctng-linux-uclibc.tar.xz\"\\n' in configlines:\n        return False\n    # This MIPS uClibc toolchain fails to build the rt-tests package\n    if 'BR2_PACKAGE_RT_TESTS=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'mipsel-ctng-linux-uclibc.tar.xz\"\\n' in configlines:\n        return False\n    # This MIPS uClibc toolchain fails to build the civetweb package\n    if 'BR2_PACKAGE_CIVETWEB=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'mipsel-ctng-linux-uclibc.tar.xz\"\\n' in configlines:\n        return False\n    # This MIPS ctng toolchain fails to build the python3 package\n    if 'BR2_PACKAGE_PYTHON3=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'mips64el-ctng_n64-linux-gnu.tar.xz\"\\n' in configlines:\n        return False\n    # This MIPS uClibc toolchain fails to build the strace package\n    if 'BR2_PACKAGE_STRACE=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'mipsel-ctng-linux-uclibc.tar.xz\"\\n' in configlines:\n        return False\n    # This MIPS uClibc toolchain fails to build the cdrkit package\n    if 'BR2_PACKAGE_CDRKIT=y\\n' in configlines and \\\n       'BR2_STATIC_LIBS=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'mipsel-ctng-linux-uclibc.tar.xz\"\\n' in configlines:\n        return False\n    # uClibc vfork static linking issue\n    if 'BR2_PACKAGE_ALSA_LIB=y\\n' in configlines and \\\n       'BR2_STATIC_LIBS=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'i486-ctng-linux-uclibc.tar.xz\"\\n' in configlines:\n        return False\n    # This MIPS uClibc toolchain fails to build the weston package\n    if 'BR2_PACKAGE_WESTON=y\\n' in configlines and \\\n       BR2_TOOLCHAIN_EXTERNAL_URL + 'mipsel-ctng-linux-uclibc.tar.xz\"\\n' in configlines:\n        return False\n    # The cs nios2 2017.02 toolchain is affected by binutils PR19405\n    if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\\n' in configlines and \\\n       'BR2_PACKAGE_BOOST=y\\n' in configlines:\n        return False\n    # The cs nios2 2017.02 toolchain is affected by binutils PR19405\n    if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\\n' in configlines and \\\n       'BR2_PACKAGE_QT5BASE_GUI=y\\n' in configlines:\n        return False\n    # The cs nios2 2017.02 toolchain is affected by binutils PR19405\n    if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\\n' in configlines and \\\n       'BR2_PACKAGE_FLANN=y\\n' in configlines:\n        return False\n\n    if 'BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE=y\\n' in configlines:\n        bootenv = os.path.join(args.outputdir, \"boot_env.txt\")\n        with open(bootenv, \"w+\") as bootenvf:\n            bootenvf.write(\"prop=value\")\n        configlines.remove('BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE=\"\"\\n')\n        configlines.append('BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE=\"%s\"\\n' % bootenv)\n        configlines.remove('BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE=\"\"\\n')\n        configlines.append('BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE=\"0x1000\"\\n')\n\n    if 'BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y\\n' in configlines:\n        bootscr = os.path.join(args.outputdir, \"boot_script.txt\")\n        with open(bootscr, \"w+\") as bootscrf:\n            bootscrf.write(\"prop=value\")\n        configlines.remove('BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE=\"\"\\n')\n        configlines.append('BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE=\"%s\"\\n' % bootscr)\n\n    with open(configfile, \"w+\") as configf:\n        configf.writelines(configlines)\n\n    return True\n\n\ndef gen_config(args):\n    \"\"\"Generate a new random configuration\n\n    This function generates the configuration, by choosing a random\n    toolchain configuration and then generating a random selection of\n    packages.\n    \"\"\"\n\n    sysinfo = SystemInfo()\n\n    # Select a random toolchain configuration\n    configs = get_toolchain_configs(args.toolchains_csv, args.buildrootdir)\n\n    i = randint(0, len(configs) - 1)\n    toolchainconfig = configs[i]\n\n    configlines = list(toolchainconfig)\n\n    # Combine with the minimal configuration\n    minimalconfigfile = os.path.join(args.buildrootdir,\n                                     'support/config-fragments/minimal.config')\n    with open(minimalconfigfile) as minimalf:\n        configlines += minimalf.readlines()\n\n    # Allow hosts with old certificates to download over https\n    configlines.append(\"BR2_WGET=\\\"wget --passive-ftp -nd -t 3 --no-check-certificate\\\"\\n\")\n\n    # Per-package folder\n    if randint(0, 15) == 0:\n        configlines.append(\"BR2_PER_PACKAGE_DIRECTORIES=y\\n\")\n\n    # Amend the configuration with a few things.\n    if randint(0, 20) == 0:\n        configlines.append(\"BR2_ENABLE_DEBUG=y\\n\")\n    if randint(0, 20) == 0:\n        configlines.append(\"BR2_ENABLE_RUNTIME_DEBUG=y\\n\")\n    if randint(0, 1) == 0:\n        configlines.append(\"BR2_INIT_BUSYBOX=y\\n\")\n    elif randint(0, 15) == 0:\n        configlines.append(\"BR2_INIT_SYSTEMD=y\\n\")\n    elif randint(0, 10) == 0:\n        configlines.append(\"BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y\\n\")\n    if randint(0, 20) == 0:\n        configlines.append(\"BR2_STATIC_LIBS=y\\n\")\n    if randint(0, 20) == 0:\n        configlines.append(\"BR2_PACKAGE_PYTHON_PY_ONLY=y\\n\")\n    if randint(0, 20) == 0:\n        configlines.append(\"BR2_PACKAGE_PYTHON3_PY_ONLY=y\\n\")\n    if randint(0, 5) == 0:\n        configlines.append(\"BR2_OPTIMIZE_2=y\\n\")\n    if randint(0, 4) == 0:\n        configlines.append(\"BR2_SYSTEM_ENABLE_NLS=y\\n\")\n    if randint(0, 4) == 0:\n        configlines.append(\"BR2_FORTIFY_SOURCE_2=y\\n\")\n\n    # Randomly enable BR2_REPRODUCIBLE 10% of times\n    # also enable tar filesystem images for testing\n    if sysinfo.has(\"diffoscope\") and randint(0, 10) == 0:\n        configlines.append(\"BR2_REPRODUCIBLE=y\\n\")\n        configlines.append(\"BR2_TARGET_ROOTFS_TAR=y\\n\")\n\n    # Write out the configuration file\n    if not os.path.exists(args.outputdir):\n        os.makedirs(args.outputdir)\n    if args.outputdir == os.path.abspath(os.path.join(args.buildrootdir, \"output\")):\n        configfile = os.path.join(args.buildrootdir, \".config\")\n    else:\n        configfile = os.path.join(args.outputdir, \".config\")\n    with open(configfile, \"w+\") as configf:\n        configf.writelines(configlines)\n\n    subprocess.check_call([\"make\", \"O=%s\" % args.outputdir, \"-C\", args.buildrootdir,\n                           \"olddefconfig\"])\n\n    if not is_toolchain_usable(configfile, toolchainconfig):\n        return 2\n\n    # Now, generate the random selection of packages, and fixup\n    # things if needed.\n    # Safe-guard, in case we can not quickly come to a valid\n    # configuration: allow at most 100 (arbitrary) iterations.\n    bounded_loop = 100\n    while True:\n        if bounded_loop == 0:\n            print(\"ERROR: cannot generate random configuration after 100 iterations\",\n                  file=sys.stderr)\n            return 1\n        bounded_loop -= 1\n        subprocess.check_call([\"make\", \"O=%s\" % args.outputdir, \"-C\", args.buildrootdir,\n                               \"KCONFIG_PROBABILITY=%d\" % randint(1, 20),\n                               \"randpackageconfig\"])\n\n        if fixup_config(sysinfo, configfile):\n            break\n\n    subprocess.check_call([\"make\", \"O=%s\" % args.outputdir, \"-C\", args.buildrootdir,\n                           \"olddefconfig\"])\n\n    subprocess.check_call([\"make\", \"O=%s\" % args.outputdir, \"-C\", args.buildrootdir,\n                           \"savedefconfig\"])\n\n    return subprocess.call([\"make\", \"O=%s\" % args.outputdir, \"-C\", args.buildrootdir,\n                            \"dependencies\"])\n\n\nif __name__ == '__main__':\n    import argparse\n    parser = argparse.ArgumentParser(description=\"Generate a random configuration\")\n    parser.add_argument(\"--outputdir\", \"-o\",\n                        help=\"Output directory (relative to current directory)\",\n                        type=str, default='output')\n    parser.add_argument(\"--buildrootdir\", \"-b\",\n                        help=\"Buildroot directory (relative to current directory)\",\n                        type=str, default='.')\n    parser.add_argument(\"--toolchains-csv\",\n                        help=\"Path of the toolchain configuration file\",\n                        type=str,\n                        default=\"support/config-fragments/autobuild/toolchain-configs.csv\")\n    args = parser.parse_args()\n\n    # We need the absolute path to use with O=, because the relative\n    # path to the output directory here is not relative to the\n    # Buildroot sources, but to the current directory.\n    args.outputdir = os.path.abspath(args.outputdir)\n\n    try:\n        ret = gen_config(args)\n    except Exception as e:\n        print(str(e), file=sys.stderr)\n        parser.exit(1)\n    parser.exit(ret)\n"
  },
  {
    "path": "utils/get-developers",
    "content": "#!/usr/bin/env python3\n\nimport argparse\nimport getdeveloperlib\nimport sys\n\n\ndef parse_args():\n    parser = argparse.ArgumentParser()\n    parser.add_argument('patches', metavar='P', type=argparse.FileType('r'), nargs='*',\n                        help='list of patches (use - to read patches from stdin)')\n    parser.add_argument('-a', dest='architecture', action='store',\n                        help='find developers in charge of this architecture')\n    parser.add_argument('-p', dest='package', action='store',\n                        help='find developers in charge of this package')\n    parser.add_argument('-f', dest='files', nargs='*',\n                        help='find developers in charge of these files')\n    parser.add_argument('-c', dest='check', action='store_const',\n                        const=True, help='list files not handled by any developer')\n    parser.add_argument('-e', dest='email', action='store_const',\n                        const=True, help='only list affected developer email addresses')\n    return parser.parse_args()\n\n\ndef __main__():\n    args = parse_args()\n\n    # Check that only one action is given\n    action = 0\n    if args.architecture is not None:\n        action += 1\n    if args.package is not None:\n        action += 1\n    if args.files:\n        action += 1\n    if args.check:\n        action += 1\n    if len(args.patches) != 0:\n        action += 1\n    if action > 1:\n        print(\"Cannot do more than one action\")\n        return\n    if action == 0:\n        print(\"No action specified\")\n        return\n\n    devs = getdeveloperlib.parse_developers()\n    if devs is None:\n        sys.exit(1)\n\n    # Handle the check action\n    if args.check:\n        files = getdeveloperlib.check_developers(devs)\n        for f in files:\n            print(f)\n\n    # Handle the architecture action\n    if args.architecture is not None:\n        for dev in devs:\n            if args.architecture in dev.architectures:\n                print(dev.name)\n        return\n\n    # Handle the package action\n    if args.package is not None:\n        for dev in devs:\n            if args.package in dev.packages:\n                print(dev.name)\n        return\n\n    # Handle the files action\n    if args.files is not None:\n        for dev in devs:\n            for f in args.files:\n                if dev.hasfile(f):\n                    print(dev.name)\n                    break\n\n    # Handle the patches action\n    if len(args.patches) != 0:\n        (files, infras) = getdeveloperlib.analyze_patches(args.patches)\n        matching_devs = set()\n        for dev in devs:\n            # See if we have developers matching by package name\n            for f in files:\n                if dev.hasfile(f):\n                    matching_devs.add(dev.name)\n            # See if we have developers matching by package infra\n            for i in infras:\n                if i in dev.infras:\n                    matching_devs.add(dev.name)\n\n        if args.email:\n            for dev in matching_devs:\n                print(dev)\n        else:\n            result = \"--to buildroot@buildroot.org\"\n            for dev in matching_devs:\n                result += \" --cc \\\"%s\\\"\" % dev\n\n            if result != \"\":\n                print(\"git send-email %s\" % result)\n\n\n__main__()\n"
  },
  {
    "path": "utils/getdeveloperlib.py",
    "content": "from io import open\nimport os\nimport re\nimport glob\nimport subprocess\nimport sys\nimport unittest\n\nbrpath = os.path.normpath(os.path.join(os.path.dirname(__file__), \"..\"))\n\n#\n# Patch parsing functions\n#\n\nFIND_INFRA_IN_PATCH = re.compile(r\"^\\+\\$\\(eval \\$\\((host-)?([^-]*)-package\\)\\)$\")\n\n\ndef analyze_patch(patch):\n    \"\"\"Parse one patch and return the list of files modified, added or\n    removed by the patch.\"\"\"\n    files = set()\n    infras = set()\n    for line in patch:\n        # If the patch is adding a package, find which infra it is\n        m = FIND_INFRA_IN_PATCH.match(line)\n        if m:\n            infras.add(m.group(2))\n        if not line.startswith(\"+++ \"):\n            continue\n        line.strip()\n        fname = line[line.find(\"/\") + 1:].strip()\n        if fname == \"dev/null\":\n            continue\n        files.add(fname)\n    return (files, infras)\n\n\nFIND_INFRA_IN_MK = re.compile(r\"^\\$\\(eval \\$\\((host-)?([^-]*)-package\\)\\)$\")\n\n\ndef fname_get_package_infra(fname):\n    \"\"\"Checks whether the file name passed as argument is a Buildroot .mk\n    file describing a package, and find the infrastructure it's using.\"\"\"\n    if not fname.endswith(\".mk\"):\n        return None\n\n    if not os.path.exists(fname):\n        return None\n\n    with open(fname, \"r\") as f:\n        for line in f:\n            line = line.strip()\n            m = FIND_INFRA_IN_MK.match(line)\n            if m:\n                return m.group(2)\n    return None\n\n\ndef analyze_patches(patches):\n    \"\"\"Parse a list of patches and returns the list of files modified,\n    added or removed by the patches, as well as the list of package\n    infrastructures used by those patches (if any)\"\"\"\n    allfiles = set()\n    allinfras = set()\n    for patch in patches:\n        (files, infras) = analyze_patch(patch)\n        allfiles = allfiles | files\n        allinfras = allinfras | infras\n    return (allfiles, allinfras)\n\n\n#\n# Unit-test parsing functions\n#\n\ndef get_all_test_cases(suite):\n    \"\"\"Generate all test-cases from a given test-suite.\n    :return: (test.module, test.name)\"\"\"\n    if issubclass(type(suite), unittest.TestSuite):\n        for test in suite:\n            for res in get_all_test_cases(test):\n                yield res\n    else:\n        yield (suite.__module__, suite.__class__.__name__)\n\n\ndef list_unittests():\n    \"\"\"Use the unittest module to retreive all test cases from a given\n    directory\"\"\"\n    loader = unittest.TestLoader()\n    suite = loader.discover(os.path.join(brpath, \"support\", \"testing\"))\n    tests = {}\n    for module, test in get_all_test_cases(suite):\n        module_path = os.path.join(\"support\", \"testing\", *module.split('.'))\n        tests.setdefault(module_path, []).append('%s.%s' % (module, test))\n    return tests\n\n\nunittests = {}\n\n\n#\n# DEVELOPERS file parsing functions\n#\n\nclass Developer:\n    def __init__(self, name, files):\n        self.name = name\n        self.files = files\n        self.packages = parse_developer_packages(files)\n        self.architectures = parse_developer_architectures(files)\n        self.infras = parse_developer_infras(files)\n        self.runtime_tests = parse_developer_runtime_tests(files)\n        self.defconfigs = parse_developer_defconfigs(files)\n\n    def hasfile(self, f):\n        for fs in self.files:\n            if f.startswith(fs):\n                return True\n        return False\n\n    def __repr__(self):\n        name = '\\'' + self.name.split(' <')[0][:20] + '\\''\n        things = []\n        if len(self.files):\n            things.append('{} files'.format(len(self.files)))\n        if len(self.packages):\n            things.append('{} pkgs'.format(len(self.packages)))\n        if len(self.architectures):\n            things.append('{} archs'.format(len(self.architectures)))\n        if len(self.infras):\n            things.append('{} infras'.format(len(self.infras)))\n        if len(self.runtime_tests):\n            things.append('{} tests'.format(len(self.runtime_tests)))\n        if len(self.defconfigs):\n            things.append('{} defconfigs'.format(len(self.defconfigs)))\n        if things:\n            return 'Developer <{} ({})>'.format(name, ', '.join(things))\n        else:\n            return 'Developer <' + name + '>'\n\n\ndef parse_developer_packages(fnames):\n    \"\"\"Given a list of file patterns, travel through the Buildroot source\n    tree to find which packages are implemented by those file\n    patterns, and return a list of those packages.\"\"\"\n    packages = set()\n    for fname in fnames:\n        for root, dirs, files in os.walk(os.path.join(brpath, fname)):\n            for f in files:\n                path = os.path.join(root, f)\n                if fname_get_package_infra(path):\n                    pkg = os.path.splitext(f)[0]\n                    packages.add(pkg)\n    return packages\n\n\ndef parse_arches_from_config_in(fname):\n    \"\"\"Given a path to an arch/Config.in.* file, parse it to get the list\n    of BR2_ARCH values for this architecture.\"\"\"\n    arches = set()\n    with open(fname, \"r\") as f:\n        parsing_arches = False\n        for line in f:\n            line = line.strip()\n            if line == \"config BR2_ARCH\":\n                parsing_arches = True\n                continue\n            if parsing_arches:\n                m = re.match(r\"^\\s*default \\\"([^\\\"]*)\\\".*\", line)\n                if m:\n                    arches.add(m.group(1))\n                else:\n                    parsing_arches = False\n    return arches\n\n\ndef parse_developer_architectures(fnames):\n    \"\"\"Given a list of file names, find the ones starting by\n    'arch/Config.in.', and use that to determine the architecture a\n    developer is working on.\"\"\"\n    arches = set()\n    for fname in fnames:\n        if not re.match(r\"^.*/arch/Config\\.in\\..*$\", fname):\n            continue\n        arches = arches | parse_arches_from_config_in(fname)\n    return arches\n\n\ndef parse_developer_infras(fnames):\n    infras = set()\n    for fname in fnames:\n        m = re.match(r\"^package/pkg-([^.]*).mk$\", fname)\n        if m:\n            infras.add(m.group(1))\n    return infras\n\n\ndef parse_developer_defconfigs(fnames):\n    \"\"\"Given a list of file names, returns the config names\n    corresponding to defconfigs.\"\"\"\n    return {os.path.basename(fname[:-10])\n            for fname in fnames\n            if fname.endswith('_defconfig')}\n\n\ndef parse_developer_runtime_tests(fnames):\n    \"\"\"Given a list of file names, returns the runtime tests\n    corresponding to the file.\"\"\"\n    all_files = []\n    # List all files recursively\n    for fname in fnames:\n        if os.path.isdir(fname):\n            for root, _dirs, files in os.walk(os.path.join(brpath, fname)):\n                all_files += [os.path.join(root, f) for f in files]\n        else:\n            all_files.append(fname)\n\n    # Get all runtime tests\n    runtimes = set()\n    for f in all_files:\n        name = os.path.splitext(f)[0]\n        if name in unittests:\n            runtimes |= set(unittests[name])\n    return runtimes\n\n\ndef parse_developers():\n    \"\"\"Parse the DEVELOPERS file and return a list of Developer objects.\"\"\"\n    developers = []\n    linen = 0\n    global unittests\n    unittests = list_unittests()\n    developers_fname = os.path.join(brpath, 'DEVELOPERS')\n    with open(developers_fname, mode='r', encoding='utf_8') as f:\n        files = []\n        name = None\n        for line in f:\n            line = line.strip()\n            if line.startswith(\"#\"):\n                continue\n            elif line.startswith(\"N:\"):\n                if name is not None or len(files) != 0:\n                    print(\"Syntax error in DEVELOPERS file, line %d\" % linen,\n                          file=sys.stderr)\n                name = line[2:].strip()\n            elif line.startswith(\"F:\"):\n                fname = line[2:].strip()\n                dev_files = glob.glob(os.path.join(brpath, fname))\n                if len(dev_files) == 0:\n                    print(\"WARNING: '%s' doesn't match any file\" % fname,\n                          file=sys.stderr)\n                for f in dev_files:\n                    dev_file = os.path.relpath(f, brpath)\n                    dev_file = dev_file.replace(os.sep, '/')  # force unix sep\n                    files.append(dev_file)\n            elif line == \"\":\n                if not name:\n                    continue\n                developers.append(Developer(name, files))\n                files = []\n                name = None\n            else:\n                print(\"Syntax error in DEVELOPERS file, line %d: '%s'\" % (linen, line),\n                      file=sys.stderr)\n                return None\n            linen += 1\n    # handle last developer\n    if name is not None:\n        developers.append(Developer(name, files))\n    return developers\n\n\ndef check_developers(developers, basepath=None):\n    \"\"\"Look at the list of files versioned in Buildroot, and returns the\n    list of files that are not handled by any developer\"\"\"\n    if basepath is None:\n        basepath = os.getcwd()\n    cmd = [\"git\", \"--git-dir\", os.path.join(basepath, \".git\"), \"ls-files\"]\n    files = subprocess.check_output(cmd).decode(sys.stdout.encoding).strip().split(\"\\n\")\n    unhandled_files = []\n    for f in files:\n        handled = False\n        for d in developers:\n            if d.hasfile(f):\n                handled = True\n                break\n        if not handled:\n            unhandled_files.append(f)\n    return unhandled_files\n"
  },
  {
    "path": "utils/readme.txt",
    "content": "This directory contains various useful scripts and tools for working\nwith Buildroot. You need not add this directory in your PATH to use\nany of those tools, but you may do so if you want.\n\nbrmake\n    a script that can be run instead of make, that prepends the date in\n    front of each line, redirects all of the build output to a file\n    (\"'br.log' in the current directory), and just outputs the Buildroot\n    messages (those lines starting with >>>) on stdout.\n    Do not run this script for interactive configuration (e.g. menuconfig)\n    or on an unconfigured directory. The output is redirected so you will see\n    nothing.\n\ncheck-package\n    a script that checks the coding style of a package's Config.in and\n    .mk files, and also tests them for various types of typoes.\n\ngenrandconfig\n    a script that generates a random configuration, used by the autobuilders\n    (http://autobuild.buildroot.org). It selects a random toolchain from\n    support/config-fragments/autobuild and randomly selects packages to build.\n\nget-developpers\n    a script to return the list of people interested in a specific part\n    of Buildroot, so they can be Cc:ed on a mail. Accepts a patch as\n    input, a package name or and architecture name.\n\nscancpan\n    a script to create a Buildroot package by scanning a CPAN module\n    description.\n\nscanpypi\n    a script to create a Buildroot package by scanning a PyPI package\n    description.\n\nsize-stats-compare\n    a script to compare the rootfs size between two different Buildroot\n    configurations. This can be used to identify the size impact of\n    a specific option, of a set of specific options, or of an update\n    to a newer Buildroot version...\n\ntest-pkg\n    a script that tests a specific package against a set of various\n    toolchains, with the goal to detect toolchain-related dependencies\n    (wchar, threads...)\n"
  },
  {
    "path": "utils/scancpan",
    "content": "#!/usr/bin/env perl\n\n# This chunk of stuff was generated by App::FatPacker. To find the original\n# file's code, look for the end of this BEGIN block or the string 'FATPACK'\nBEGIN {\nmy %fatpacked;\n\n$fatpacked{\"MetaCPAN/API/Tiny.pm\"} = <<'METACPAN_API_TINY';\n  package MetaCPAN::API::Tiny;\n  {\n    $MetaCPAN::API::Tiny::VERSION = '1.131730';\n  }\n  use strict;\n  use warnings;\n  # ABSTRACT: A Tiny API client for MetaCPAN\n\n  use Carp;\n  use JSON::PP 'encode_json', 'decode_json';\n  use HTTP::Tiny;\n\n\n  sub new {\n      my ($class, @args) = @_;\n\n      $#_ % 2 == 0\n          or croak 'Arguments must be provided as name/value pairs';\n\n      my %params = @args;\n\n      die 'ua_args must be an array reference'\n          if $params{ua_args} && ref($params{ua_args}) ne 'ARRAY';\n\n      my $self = +{\n          base_url => $params{base_url} || 'http://api.metacpan.org/v0',\n          ua => $params{ua} || HTTP::Tiny->new(\n              $params{ua_args}\n                  ? @{$params{ua_args}}\n                  : (agent => 'MetaCPAN::API::Tiny/'\n                      . ($MetaCPAN::API::VERSION || 'xx'))),\n      };\n\n      return bless($self, $class);\n  }\n\n  sub _build_extra_params {\n      my $self = shift;\n\n      @_ % 2 == 0\n          or croak 'Incorrect number of params, must be key/value';\n\n      my %extra = @_;\n      my $ua = $self->{ua};\n\n      foreach my $key (keys %extra)\n      {\n          # The implementation in HTTP::Tiny uses + instead of %20, fix that\n          $extra{$key} = $ua->_uri_escape($extra{$key});\n          $extra{$key} =~ s/\\+/%20/g;\n      }\n\n      my $params = join '&', map { \"$_=\" . $extra{$_} } sort keys %extra;\n\n      return $params;\n  }\n\n\n  # /source/{author}/{release}/{path}\n  sub source {\n      my $self  = shift;\n      my %opts  = @_ ? @_ : ();\n      my $url   = '';\n      my $error = \"Provide 'author' and 'release' and 'path'\";\n\n      %opts or croak $error;\n\n      if (\n          defined ( my $author  = $opts{'author'}  ) &&\n          defined ( my $release = $opts{'release'} ) &&\n          defined ( my $path    = $opts{'path'}    )\n        ) {\n          $url = \"source/$author/$release/$path\";\n      } else {\n          croak $error;\n      }\n\n      $url = $self->{base_url} . \"/$url\";\n\n      my $result = $self->{ua}->get($url);\n      $result->{'success'}\n          or croak \"Failed to fetch '$url': \" . $result->{'reason'};\n\n      return $result->{'content'};\n  }\n\n\n  # /release/{distribution}\n  # /release/{author}/{release}\n  sub release {\n      my $self  = shift;\n      my %opts  = @_ ? @_ : ();\n      my $url   = '';\n      my $error = \"Either provide 'distribution', or 'author' and 'release', \" .\n                  \"or 'search'\";\n\n      %opts or croak $error;\n\n      my %extra_opts = ();\n\n      if ( defined ( my $dist = $opts{'distribution'} ) ) {\n          $url = \"release/$dist\";\n      } elsif (\n          defined ( my $author  = $opts{'author'}  ) &&\n          defined ( my $release = $opts{'release'} )\n        ) {\n          $url = \"release/$author/$release\";\n      } elsif ( defined ( my $search_opts = $opts{'search'} ) ) {\n          ref $search_opts && ref $search_opts eq 'HASH'\n              or croak $error;\n\n          %extra_opts = %{$search_opts};\n          $url        = 'release/_search';\n      } else {\n          croak $error;\n      }\n\n      return $self->fetch( $url, %extra_opts );\n  }\n\n\n  # /pod/{module}\n  # /pod/{author}/{release}/{path}\n  sub pod {\n      my $self  = shift;\n      my %opts  = @_ ? @_ : ();\n      my $url   = '';\n      my $error = \"Either provide 'module' or 'author and 'release' and 'path'\";\n\n      %opts or croak $error;\n\n      if ( defined ( my $module = $opts{'module'} ) ) {\n          $url = \"pod/$module\";\n      } elsif (\n          defined ( my $author  = $opts{'author'}  ) &&\n          defined ( my $release = $opts{'release'} ) &&\n          defined ( my $path    = $opts{'path'}    )\n        ) {\n          $url = \"pod/$author/$release/$path\";\n      } else {\n          croak $error;\n      }\n\n      # check content-type\n      my %extra = ();\n      if ( defined ( my $type = $opts{'content-type'} ) ) {\n          $type =~ m{^ text/ (?: html|plain|x-pod|x-markdown ) $}x\n              or croak 'Incorrect content-type provided';\n\n          $extra{headers}{'content-type'} = $type;\n      }\n\n      $url = $self->{base_url}. \"/$url\";\n\n      my $result = $self->{ua}->get( $url, \\%extra );\n      $result->{'success'}\n          or croak \"Failed to fetch '$url': \" . $result->{'reason'};\n\n      return $result->{'content'};\n  }\n\n\n  # /module/{module}\n  sub module {\n      my $self = shift;\n      my $name = shift;\n\n      $name or croak 'Please provide a module name';\n\n      return $self->fetch(\"module/$name\");\n  }\n\n\n  # file() is a synonym of module\n  sub file { goto &module }\n\n\n  # /author/{author}\n  sub author {\n      my $self = shift;\n      my ( $pause_id, $url, %extra_opts );\n\n      if ( @_ == 1 ) {\n          $url = 'author/' . shift;\n      } elsif ( @_ == 2 ) {\n          my %opts = @_;\n\n          if ( defined $opts{'pauseid'} ) {\n              $url = \"author/\" . $opts{'pauseid'};\n          } elsif ( defined $opts{'search'} ) {\n              my $search_opts = $opts{'search'};\n\n              ref $search_opts && ref $search_opts eq 'HASH'\n                  or croak \"'search' key must be hashref\";\n\n              %extra_opts = %{$search_opts};\n              $url        = 'author/_search';\n          } else {\n              croak 'Unknown option given';\n          }\n      } else {\n          croak 'Please provide an author PAUSEID or a \"search\"';\n      }\n\n      return $self->fetch( $url, %extra_opts );\n  }\n\n\n\n  sub fetch {\n      my $self    = shift;\n      my $url     = shift;\n      my $extra   = $self->_build_extra_params(@_);\n      my $base    = $self->{base_url};\n      my $req_url = $extra ? \"$base/$url?$extra\" : \"$base/$url\";\n\n      my $result  = $self->{ua}->get($req_url);\n      return $self->_decode_result( $result, $req_url );\n  }\n\n\n  sub post {\n      my $self  = shift;\n      my $url   = shift;\n      my $query = shift;\n      my $base  = $self->{base_url};\n\n      defined $url\n          or croak 'First argument of URL must be provided';\n\n      ref $query and ref $query eq 'HASH'\n          or croak 'Second argument of query hashref must be provided';\n\n      my $query_json = encode_json( $query );\n      my $result     = $self->{ua}->request(\n          'POST',\n          \"$base/$url\",\n          {\n              headers => { 'Content-Type' => 'application/json' },\n              content => $query_json,\n          }\n      );\n\n      return $self->_decode_result( $result, $url, $query_json );\n  }\n\n  sub _decode_result {\n      my $self = shift;\n      my ( $result, $url, $original ) = @_;\n      my $decoded_result;\n\n      ref $result and ref $result eq 'HASH'\n          or croak 'First argument must be hashref';\n\n      defined $url\n          or croak 'Second argument of a URL must be provided';\n\n      if ( defined ( my $success = $result->{'success'} ) ) {\n          my $reason = $result->{'reason'} || '';\n          $reason .= ( defined $original ? \" (request: $original)\" : '' );\n\n          $success or croak \"Failed to fetch '$url': $reason\";\n      } else {\n          croak 'Missing success in return value';\n      }\n\n      defined ( my $content = $result->{'content'} )\n          or croak 'Missing content in return value';\n\n      eval { $decoded_result = decode_json $content; 1 }\n      or do { croak \"Couldn't decode '$content': $@\" };\n\n      return $decoded_result;\n  }\n\n  1;\n\n  __END__\n\n  =pod\n\n  =head1 NAME\n\n  MetaCPAN::API::Tiny - A Tiny API client for MetaCPAN\n\n  =head1 VERSION\n\n  version 1.131730\n\n  =head1 DESCRIPTION\n\n  This is the Tiny version of L<MetaCPAN::API>. It implements a compatible API\n  with a few notable exceptions:\n\n  =over 4\n\n  =item Attributes are direct hash access\n\n  The attributes defined using Mo(o|u)se are now accessed via the blessed hash\n  directly. There are no accessors defined to access this elements.\n\n  =item Exception handling\n\n  Instead of using Try::Tiny, raw evals are used. This could potentially cause\n  issues, so just be aware.\n\n  =item Testing\n\n  Test::Fatal was replaced with an eval implementation of exception().\n  Test::TinyMocker usage is retained, but may be absorbed since it is pure perl\n\n  =back\n\n  =head1 CLASS_METHODS\n\n  =head2 new\n\n  new is the constructor for MetaCPAN::API::Tiny. In the non-tiny version of this\n  module, this is provided via Any::Moose built from the attributes defined. In\n  the tiny version, we define our own constructor. It takes the same arguments\n  and provides similar checks to MetaCPAN::API with regards to arguments passed.\n\n  =head1 PUBLIC_METHODS\n\n  =head2 source\n\n      my $source = $mcpan->source(\n          author  => 'DOY',\n          release => 'Moose-2.0201',\n          path    => 'lib/Moose.pm',\n      );\n\n  Searches MetaCPAN for a module or a specific release and returns the plain source.\n\n  =head2 release\n\n      my $result = $mcpan->release( distribution => 'Moose' );\n\n      # or\n      my $result = $mcpan->release( author => 'DOY', release => 'Moose-2.0001' );\n\n  Searches MetaCPAN for a dist.\n\n  You can do complex searches using 'search' parameter:\n\n      # example lifted from MetaCPAN docs\n      my $result = $mcpan->release(\n          search => {\n              author => \"OALDERS AND \",\n              filter => \"status:latest\",\n              fields => \"name\",\n              size   => 1,\n          },\n      );\n\n  =head2 pod\n\n      my $result = $mcpan->pod( module => 'Moose' );\n\n      # or\n      my $result = $mcpan->pod(\n          author  => 'DOY',\n          release => 'Moose-2.0201',\n          path    => 'lib/Moose.pm',\n      );\n\n  Searches MetaCPAN for a module or a specific release and returns the POD.\n\n  =head2 module\n\n      my $result = $mcpan->module('MetaCPAN::API');\n\n  Searches MetaCPAN and returns a module's \".pm\" file.\n\n  =head2 file\n\n  A synonym of L</module>\n\n  =head2 author\n\n      my $result1 = $mcpan->author('XSAWYERX');\n      my $result2 = $mcpan->author( pauseid => 'XSAWYERX' );\n\n  Searches MetaCPAN for a specific author.\n\n  You can do complex searches using 'search' parameter:\n\n      # example lifted from MetaCPAN docs\n      my $result = $mcpan->author(\n          search => {\n              q    => 'profile.name:twitter',\n              size => 1,\n          },\n      );\n\n  =head2 fetch\n\n      my $result = $mcpan->fetch('/release/distribution/Moose');\n\n      # with parameters\n      my $more = $mcpan->fetch(\n          '/release/distribution/Moose',\n          param => 'value',\n      );\n\n  This is a helper method for API implementations. It fetches a path from MetaCPAN, decodes the JSON from the content variable and returns it.\n\n  You don't really need to use it, but you can in case you want to write your own extension implementation to MetaCPAN::API.\n\n  It accepts an additional hash as \"GET\" parameters.\n\n  =head2 post\n\n      # /release&content={\"query\":{\"match_all\":{}},\"filter\":{\"prefix\":{\"archive\":\"Cache-Cache-1.06\"}}}\n      my $result = $mcpan->post(\n          'release',\n          {\n              query  => { match_all => {} },\n              filter => { prefix => { archive => 'Cache-Cache-1.06' } },\n          },\n      );\n\n  The POST equivalent of the \"fetch()\" method. It gets the path and JSON request.\n\n  =head1 THANKS\n\n  Overall the tests and code were ripped directly from MetaCPAN::API and\n  tiny-fied. A big thanks to Sawyer X for writing the original module.\n\n  =head1 AUTHOR\n\n  Nicholas R. Perez <nperez@cpan.org>\n\n  =head1 COPYRIGHT AND LICENSE\n\n  This software is copyright (c) 2013 by Nicholas R. Perez <nperez@cpan.org>.\n\n  This is free software; you can redistribute it and/or modify it under\n  the same terms as the Perl 5 programming language system itself.\n\n  =cut\nMETACPAN_API_TINY\n\ns/^  //mg for values %fatpacked;\n\nunshift @INC, sub {\n  if (my $fat = $fatpacked{$_[1]}) {\n    if ($] < 5.008) {\n      return sub {\n        return 0 unless length $fat;\n        $fat =~ s/^([^\\n]*\\n?)//;\n        $_ = $1;\n        return 1;\n      };\n    }\n    open my $fh, '<', \\$fat\n      or die \"FatPacker error loading $_[1] (could be a perl installation issue?)\";\n    return $fh;\n  }\n  return\n};\n\n} # END OF FATPACK CODE\n\n\nuse 5.010;\nuse strict;\nuse warnings;\nuse Fatal qw(open close);\n\nuse Getopt::Long;\nuse Pod::Usage;\nuse File::Basename;\nuse File::Path qw(make_path);\nuse Module::CoreList;\nuse HTTP::Tiny;\nuse Safe;\nuse MetaCPAN::API::Tiny;\nuse Digest::SHA qw(sha256_hex);\nuse Text::Wrap;\n$Text::Wrap::columns = 62;\n\n# Below, 5.032 should be aligned with the version of perl actually\n# bundled in Buildroot:\ndie <<\"MSG\" if $] < 5.032;\nThis script needs a host perl with the same major version as Buildroot target perl.\n\nYour current host perl is:\n    $^X\n    version $]\n\nYou may install a local one by running:\n    perlbrew install perl-5.32.0\nMSG\n\nmy ($help, $man, $quiet, $force, $recommend, $test, $host);\nmy $target = 1;\nGetOptions( 'help|?' => \\$help,\n            'man' => \\$man,\n            'quiet|q' => \\$quiet,\n            'force|f' => \\$force,\n            'host!' => \\$host,\n            'target!' => \\$target,\n            'recommend' => \\$recommend,\n            'test' => \\$test\n) or pod2usage(-exitval => 1);\npod2usage(-exitval => 0) if $help;\npod2usage(-exitval => 0, -verbose => 2) if $man;\npod2usage(-exitval => 1) if scalar @ARGV == 0;\n\nmy %dist;               # name -> metacpan data\nmy %need_target;        # name -> 1 if target package is needed\nmy %need_host;          # name -> 1 if host package is needed\nmy %need_dlopen;        # name -> 1 if requires dynamic library\nmy %is_xs;              # name -> 1 if XS module\nmy %deps_build;         # name -> list of host dependencies\nmy %deps_runtime;       # name -> list of target dependencies\nmy %license_files;      # name -> hash of license files\nmy %checksum;           # author -> list of checksum\nmy $mirror = 'http://cpan.metacpan.org';        # a CPAN mirror\nmy $mcpan = MetaCPAN::API::Tiny->new(base_url => 'http://fastapi.metacpan.org/v1');\nmy $ua = HTTP::Tiny->new();\nmy $new_pkgs;\n\nmy %white_list = (\n    'ExtUtils-Config' => 1,\n    'ExtUtils-InstallPaths' => 1,\n    'ExtUtils-Helpers' => 1,\n    'File-ShareDir-Install' => 1,\n    'Module-Build' => 1,\n    'Module-Build-Tiny' => 1,\n);\nmy @info = ();\n\nsub get_checksum {\n    my ($url) = @_;\n    my ($path) = $url =~ m|^[^:/?#]+://[^/?#]*([^?#]*)|;\n    my ($basename, $dirname) = fileparse( $path );\n    unless ($checksum{$dirname}) {\n        my $url = $mirror . $dirname . q{CHECKSUMS};\n        my $response = $ua->get($url);\n        $checksum{$dirname} = $response->{content};\n    }\n    my $chksum = Safe->new->reval($checksum{$dirname});\n    return $chksum->{$basename}, $basename;\n}\n\nsub is_xs {\n    my ($manifest) = @_;\n    # This heuristic determines if a module is a native extension, by searching\n    # some file extension types in the MANIFEST of the distribution.\n    # It was inspired by http://deps.cpantesters.org/static/purity.html\n    return $manifest =~ m/\\.(swg|xs|c|h|i)[\\n\\s]/;\n}\n\nsub find_license_files {\n    my ($manifest) = @_;\n    my @license_files;\n    foreach (split /\\n/, $manifest) {\n        next if m|/|;\n        s|\\s+.*$||;\n        push @license_files, $_ if m/(ARTISTIC|COPYING|COPYRIGHT|GPL\\S*|LICENSE|LICENCE)/i;\n    }\n    if (scalar @license_files == 0 && $manifest =~ m/(README)[\\n\\s]/i) {\n        @license_files = ($1);\n    }\n    if (scalar @license_files == 0 && $manifest =~ m/(README\\.md)[\\n\\s]/i) {\n        @license_files = ($1);\n    }\n    if (scalar @license_files == 0 && $manifest =~ m/(README\\.pod)[\\n\\s]/i) {\n        @license_files = ($1);\n    }\n    return @license_files;\n}\n\nsub want_test {\n    my ($distname) = @_;\n    return 1 if $need_dlopen{$distname} && scalar @{$deps_runtime{$distname}} > 0;\n}\n\nsub get_dependencies {\n    my ($distname) = @_;\n    my %dep = map { $_ => 1 } @{$deps_runtime{$distname}};\n    for my $direct (@{$deps_runtime{$distname}}) {\n        for (get_dependencies( $direct )) {\n            $dep{$_} = 1;\n        }\n    }\n    return keys %dep;\n}\n\nsub get_indirect_dependencies {\n    my ($distname) = @_;\n    my %indirect;\n    my %direct = map { $_ => 1 } @{$deps_runtime{$distname}};\n    for my $dep (get_dependencies( $distname )) {\n        $indirect{$dep} = 1 unless exists $direct{$dep};\n    }\n    return keys %indirect;\n}\n\nsub fetch {\n    my ($name, $need_target, $need_host, $top) = @_;\n    $need_target{$name} = $need_target if $need_target;\n    $need_host{$name} = $need_host if $need_host;\n    unless ($dist{$name} && !$top) {\n        say qq{fetch ${name}} unless $quiet;\n        my $result = $mcpan->release( distribution => $name );\n        my $main_module = $result->{main_module};\n        push @info, qq{[$name] $main_module is a core module}\n            if $top && Module::CoreList::is_core( $main_module, undef, $] );\n        $dist{$name} = $result;\n        $license_files{$name} = {};\n        eval {\n            my $author = $result->{author};\n            my $release = $name . q{-} . $result->{version};\n            my $manifest = $mcpan->source( author => $author, release => $release, path => 'MANIFEST' );\n            $need_dlopen{$name} = $is_xs{$name} = is_xs( $manifest );\n            foreach my $fname (find_license_files( $manifest )) {\n                my $license = $mcpan->source( author => $author, release => $release, path => $fname );\n                $license_files{$name}->{$fname} = sha256_hex( $license );\n            }\n        };\n        if ($@) {\n            warn $@;\n        }\n        my %build = ();\n        my %runtime = ();\n        my %optional = ();\n        foreach my $dep (@{$result->{dependency}}) {\n            my $modname = ${$dep}{module};\n            next if $modname eq q{perl};\n            next if $modname =~ m|^Alien|;\n            next if $modname =~ m|^Win32|;\n            next if !($test && $top) && $modname =~ m|^Test|;\n            next if Module::CoreList::is_core( $modname, undef, $] );\n            # we could use the host Module::CoreList data, because host perl and\n            # target perl have the same major version\n            next if ${$dep}{phase} eq q{develop};\n            next if ${$dep}{phase} eq q{x_Dist_Zilla};\n            next if !($test && $top) && ${$dep}{phase} eq q{test};\n            my $distname = $mcpan->module( $modname )->{distribution};\n            if (${$dep}{phase} eq q{runtime}) {\n                if (${$dep}{relationship} eq q{requires}) {\n                    $runtime{$distname} = 1;\n                }\n                else {\n                    $optional{$distname} = 1 if $recommend && $top;\n                }\n            }\n            else { # configure, build\n                $build{$distname} = 1;\n                push @info, qq{[$name] suspicious dependency on $distname}\n                    unless exists $white_list{$distname};\n            }\n        }\n        $deps_build{$name} = [keys %build];\n        $deps_runtime{$name} = [keys %runtime];\n        foreach my $distname (@{$deps_build{$name}}) {\n            fetch( $distname, 0, 1 );\n        }\n        foreach my $distname (@{$deps_runtime{$name}}) {\n            fetch( $distname, $need_target, $need_host );\n            $need_dlopen{$name} ||= $need_dlopen{$distname};\n        }\n        foreach my $distname (keys %optional) {\n            fetch( $distname, $need_target, $need_host );\n        }\n    }\n    return;\n}\n\nforeach my $distname (@ARGV) {\n    # Command-line's distributions\n    fetch( $distname, !!$target, !!$host, 1 );\n}\nsay scalar keys %dist, q{ packages fetched.} unless $quiet;\n\n# Buildroot package name: lowercase\nsub fsname {\n    my $name = shift;\n    $name =~ s|_|-|g;\n    return q{perl-} . lc $name;\n}\n\n# Buildroot variable name: uppercase\nsub brname {\n    my $name = shift;\n    $name =~ s|-|_|g;\n    return uc $name;\n}\n\n# Buildroot requires license name as in http://spdx.org/licenses/\nsub brlicense {\n    my $license = shift;\n    $license =~ s|apache_1_1|Apache-1.1|;\n    $license =~ s|apache_2_0|Apache-2.0|;\n    $license =~ s|artistic_2|Artistic-2.0|;\n    $license =~ s|artistic|Artistic-1.0|;\n    $license =~ s|lgpl_2_1|LGPL-2.1|;\n    $license =~ s|lgpl_3_0|LGPL-3.0|;\n    $license =~ s|gpl_2|GPL-2.0|;\n    $license =~ s|gpl_3|GPL-3.0|;\n    $license =~ s|mit|MIT|;\n    $license =~ s|mozilla_1_1|Mozilla-1.1|;\n    $license =~ s|openssl|OpenSSL|;\n    $license =~ s|perl_5|Artistic or GPL-1.0+|;\n    return $license;\n}\n\nwhile (my ($distname, $dist) = each %dist) {\n    my $fsname = fsname( $distname );\n    my $dirname = q{package/} . $fsname;\n    my $cfgname = $dirname . q{/Config.in};\n    my $mkname = $dirname . q{/} . $fsname . q{.mk};\n    my $hashname = $dirname . q{/} . $fsname . q{.hash};\n    my $brname = brname( $fsname );\n    my $testdir = q{support/testing/tests/package};\n    my $testname = $testdir . q{/test_} . lc $brname . q{.py};\n    unless (-d $dirname) {\n        make_path $dirname;\n        $new_pkgs = 1;\n    }\n    if ($need_target{$distname} && ($force || !-f $cfgname)) {\n        $dist->{abstract} =~ s|\\s+$||;\n        $dist->{abstract} .= q{.} unless $dist->{abstract} =~ m|\\.$|;\n        my $abstract = wrap( q{}, qq{\\t  }, $dist->{abstract} );\n        my $homepage = $dist->{resources}->{homepage} || qq{https://metacpan.org/release/${distname}};\n        say qq{write ${cfgname}} unless $quiet;\n        open my $fh, q{>}, $cfgname;\n        say {$fh} qq{config BR2_PACKAGE_${brname}};\n        say {$fh} qq{\\tbool \"${fsname}\"};\n        say {$fh} qq{\\tdepends on !BR2_STATIC_LIBS} if $need_dlopen{$distname};\n        foreach my $dep (sort @{$deps_runtime{$distname}}) {\n            my $brdep = brname( fsname( $dep ) );\n            say {$fh} qq{\\tselect BR2_PACKAGE_${brdep} # runtime};\n        }\n        say {$fh} qq{\\thelp};\n        say {$fh} qq{\\t  ${abstract}\\n} if $abstract;\n        say {$fh} qq{\\t  ${homepage}};\n        if ($need_dlopen{$distname}) {\n            say {$fh} qq{\\ncomment \"${fsname} needs a toolchain w/ dynamic library\"};\n            say {$fh} qq{\\tdepends on BR2_STATIC_LIBS};\n        }\n        close $fh;\n    }\n    if ($force || !-f $mkname) {\n        my $version = $dist->{version};\n        my ($path) = $dist->{download_url} =~ m|^[^:/?#]+://[^/?#]*([^?#]*)|;\n        # this URL contains only the scheme, auth and path parts (but no query and fragment parts)\n        # the scheme is not used, because the job is done by the BR download infrastructure\n        # the auth part is not used, because we use $(BR2_CPAN_MIRROR)\n        my ($filename, $directories, $suffix) = fileparse( $path, q{tar.gz}, q{tgz} );\n        $directories =~ s|/$||;\n        my @dependencies = map( { q{host-} . fsname( $_ ); } sort @{$deps_build{$distname}} );\n        my $dependencies = join qq{ \\\\\\n\\t}, @dependencies;\n        $dependencies = qq{\\\\\\n\\t} . $dependencies if scalar @dependencies > 1;\n        my @host_dependencies = map { q{host-} . fsname( $_ ); } sort( @{$deps_build{$distname}},\n                                                                       @{$deps_runtime{$distname}} );\n        my $host_dependencies = join qq{ \\\\\\n\\t}, @host_dependencies;\n        $host_dependencies = qq{\\\\\\n\\t} . $host_dependencies if scalar @host_dependencies > 1;\n        my $license = brlicense( ref $dist->{license} eq 'ARRAY'\n                               ? join q{ or }, @{$dist->{license}}\n                               : $dist->{license} );\n        my $license_files = join q{ }, sort keys %{$license_files{$distname}};\n        if ($license_files && (!$license || $license eq q{unknown})) {\n            push @info, qq{[$distname] undefined LICENSE, see $license_files};\n            $license = q{???};\n        }\n        say qq{write ${mkname}} unless $quiet;\n        open my $fh, q{>}, $mkname;\n        say {$fh} qq{################################################################################};\n        say {$fh} qq{#};\n        say {$fh} qq{# ${fsname}};\n        say {$fh} qq{#};\n        say {$fh} qq{################################################################################};\n        say {$fh} qq{};\n        say {$fh} qq{${brname}_VERSION = ${version}};\n        say {$fh} qq{${brname}_SOURCE = ${distname}-\\$(${brname}_VERSION).${suffix}};\n        say {$fh} qq{${brname}_SITE = \\$(BR2_CPAN_MIRROR)${directories}};\n        say {$fh} qq{${brname}_DEPENDENCIES = ${dependencies}} if $need_target{$distname} && $dependencies;\n        say {$fh} qq{HOST_${brname}_DEPENDENCIES = ${host_dependencies}} if $need_host{$distname} && $host_dependencies;\n        say {$fh} qq{${brname}_LICENSE = ${license}} if $license;\n        say {$fh} qq{${brname}_LICENSE_FILES = ${license_files}} if $license_files;\n        say {$fh} qq{${brname}_DISTNAME = ${distname}};\n        say {$fh} qq{};\n        say {$fh} qq{\\$(eval \\$(perl-package))} if $need_target{$distname};\n        say {$fh} qq{\\$(eval \\$(host-perl-package))} if $need_host{$distname};\n        close $fh;\n    }\n    if ($force || !-f $hashname) {\n        my ($checksum, $filename) = get_checksum($dist->{download_url});\n        my $md5 = $checksum->{md5};\n        my $sha256 = $checksum->{sha256};\n        say qq{write ${hashname}} unless $quiet;\n        open my $fh, q{>}, $hashname;\n        say {$fh} qq{# retrieved by scancpan from ${mirror}/};\n        say {$fh} qq{md5  ${md5}  ${filename}};\n        say {$fh} qq{sha256  ${sha256}  ${filename}};\n        my %license_files =  %{$license_files{$distname}};\n        if (scalar keys %license_files) {\n            say {$fh} q{};\n            say {$fh} qq{# computed by scancpan};\n            foreach my $license (sort keys %license_files) {\n                my $digest = $license_files{$license};\n                say {$fh} qq{sha256  ${digest}  ${license}};\n            }\n        }\n        close $fh;\n    }\n    if (want_test( $distname ) && ($force || !-f $testname)) {\n        my $classname = $distname;\n        $classname =~ s|-||g;\n        my $modname = $distname;\n        $modname =~ s|-|::|g;\n        my $mark = $is_xs{$distname} ? q{   XS} : q{};\n        my @indirect = (get_indirect_dependencies( $distname ));\n        say qq{write ${testname}} unless $quiet;\n        make_path $testdir unless -d $testdir;\n        open my $fh, q{>}, $testname;\n        say {$fh} qq{from tests.package.test_perl import TestPerlBase};\n        say {$fh} qq{};\n        say {$fh} qq{};\n        say {$fh} qq{class TestPerl${classname}(TestPerlBase):};\n        say {$fh} qq{    \"\"\"};\n        say {$fh} qq{    package:};\n        say {$fh} qq{        ${distname}${mark}};\n        say {$fh} qq{    direct dependencies:};\n        foreach my $dep (sort @{$deps_runtime{$distname}}) {\n            $mark = $is_xs{$dep} ? q{   XS} : q{};\n            say {$fh} qq{        ${dep}${mark}};\n        }\n        if (scalar @indirect > 0) {\n            say {$fh} qq{    indirect dependencies:};\n            foreach my $dep (sort @indirect) {\n                $mark = $is_xs{$dep} ? q{   XS} : q{};\n                say {$fh} qq{        ${dep}${mark}};\n            }\n        }\n        say {$fh} qq{    \"\"\"};\n        say {$fh} qq{};\n        say {$fh} qq{    config = TestPerlBase.config + \\\\};\n        say {$fh} qq{        \"\"\"};\n        say {$fh} qq{        BR2_PACKAGE_PERL=y};\n        say {$fh} qq{        BR2_PACKAGE_${brname}=y};\n        say {$fh} qq{        \"\"\"};\n        say {$fh} qq{};\n        say {$fh} qq{    def test_run(self):};\n        say {$fh} qq{        self.login()};\n        foreach my $dep (sort grep { $is_xs{$_} } @indirect) {\n            $dep =~ s|-|::|g;\n            say {$fh} qq{        self.module_test(\"${dep}\")};\n        }\n        foreach my $dep (sort grep { $is_xs{$_} } @{$deps_runtime{$distname}}) {\n            $dep =~ s|-|::|g;\n            say {$fh} qq{        self.module_test(\"${dep}\")};\n        }\n        say {$fh} qq{        self.module_test(\"${modname}\")};\n        close $fh;\n    }\n}\n\nif ($new_pkgs) {\n    my %pkg;\n    my $cfgname = q{package/Config.in};\n    if (-f $cfgname) {\n        open my $fh, q{<}, $cfgname;\n        while (<$fh>) {\n            chomp;\n            $pkg{$_} = 1 if m|package/perl-|;\n        }\n        close $fh;\n    }\n\n    foreach my $distname (keys %need_target) {\n        my $fsname = fsname( $distname );\n        $pkg{qq{\\tsource \"package/${fsname}/Config.in\"}} = 1;\n    }\n\n    say qq{${cfgname} must contain the following lines:};\n    say join qq{\\n}, sort keys %pkg;\n}\n\nsay join qq{\\n}, @info;\n\n__END__\n\n=head1 NAME\n\nutils/scancpan Try-Tiny Moo\n\n=head1 SYNOPSIS\n\nutils/scancpan [options] [distname ...]\n\n Options:\n   -help\n   -man\n   -quiet\n   -force\n   -target/-notarget\n   -host/-nohost\n   -recommend\n   -test\n\n=head1 OPTIONS\n\n=over 8\n\n=item B<-help>\n\nPrints a brief help message and exits.\n\n=item B<-man>\n\nPrints the manual page and exits.\n\n=item B<-quiet>\n\nExecutes without output\n\n=item B<-force>\n\nForces the overwriting of existing files.\n\n=item B<-target/-notarget>\n\nSwitches package generation for the target variant (the default is C<-target>).\n\n=item B<-host/-nohost>\n\nSwitches package generation for the host variant (the default is C<-nohost>).\n\n=item B<-recommend>\n\nAdds I<recommended> dependencies.\n\n=item B<-test>\n\nAdds dependencies for test.\n\n=back\n\n=head1 DESCRIPTION\n\nThis script creates templates of the Buildroot package files for all the\nPerl/CPAN distributions required by the specified distnames. The\ndependencies and metadata are fetched from https://metacpan.org/.\n\nAfter running this script, it is necessary to check the generated files.\nFor distributions that link against a target library, you have to add the\nbuildroot package name for that library to the DEPENDENCIES variable.\n\nSee the Buildroot documentation for details on the usage of the Perl\ninfrastructure.\n\nThe major version of the host perl must be aligned on the target one,\nin order to work with the right CoreList data.\n\n=head1 LICENSE\n\nCopyright (C) 2013-2020 by Francois Perrad <francois.perrad@gadz.org>\n\nThis program is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nGeneral Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program; if not, write to the Free Software\nFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n\nThis script is a part of Buildroot.\n\nThis script requires the module C<MetaCPAN::API::Tiny> (version 1.131730)\nwhich was included at the beginning of this file by the tool C<fatpack>.\n\nSee L<https://metacpan.org/release/NPEREZ/MetaCPAN-API-Tiny-1.131730>.\n\nSee L<https://metacpan.org/release/App-FatPacker>.\n\nThese both libraries are free software and may be distributed under the same\nterms as perl itself.\n\nAnd perl may be distributed under the terms of Artistic v1 or GPL v1 license.\n\n=cut\n"
  },
  {
    "path": "utils/scanpypi",
    "content": "#!/usr/bin/env python3\n\"\"\"\n\nUtility for building Buildroot packages for existing PyPI packages\n\nAny package built by scanpypi should be manually checked for\nerrors.\n\"\"\"\nimport argparse\nimport json\nimport sys\nimport os\nimport shutil\nimport tarfile\nimport zipfile\nimport errno\nimport hashlib\nimport re\nimport textwrap\nimport tempfile\nimport imp\nfrom functools import wraps\nimport six.moves.urllib.request\nimport six.moves.urllib.error\nimport six.moves.urllib.parse\nfrom six.moves import map\nfrom six.moves import zip\nfrom six.moves import input\nif six.PY2:\n    import StringIO\nelse:\n    import io\n\nBUF_SIZE = 65536\n\ntry:\n    import spdx_lookup as liclookup\nexcept ImportError:\n    # spdx_lookup is not installed\n    print('spdx_lookup module is not installed. This can lead to an '\n          'inaccurate licence detection. Please install it via\\n'\n          'pip install spdx_lookup')\n    liclookup = None\n\n\ndef setup_decorator(func, method):\n    \"\"\"\n    Decorator for distutils.core.setup and setuptools.setup.\n    Puts the arguments with which setup is called as a dict\n    Add key 'method' which should be either 'setuptools' or 'distutils'.\n\n    Keyword arguments:\n    func -- either setuptools.setup or distutils.core.setup\n    method -- either 'setuptools' or 'distutils'\n    \"\"\"\n\n    @wraps(func)\n    def closure(*args, **kwargs):\n        # Any python packages calls its setup function to be installed.\n        # Argument 'name' of this setup function is the package's name\n        BuildrootPackage.setup_args[kwargs['name']] = kwargs\n        BuildrootPackage.setup_args[kwargs['name']]['method'] = method\n    return closure\n\n# monkey patch\nimport setuptools  # noqa E402\nsetuptools.setup = setup_decorator(setuptools.setup, 'setuptools')\nimport distutils   # noqa E402\ndistutils.core.setup = setup_decorator(setuptools.setup, 'distutils')\n\n\ndef find_file_upper_case(filenames, path='./'):\n    \"\"\"\n    List generator:\n    Recursively find files that matches one of the specified filenames.\n    Returns a relative path starting with path argument.\n\n    Keyword arguments:\n    filenames -- List of filenames to be found\n    path -- Path to the directory to search\n    \"\"\"\n    for root, dirs, files in os.walk(path):\n        for file in files:\n            if file.upper() in filenames:\n                yield (os.path.join(root, file))\n\n\ndef pkg_buildroot_name(pkg_name):\n    \"\"\"\n    Returns the Buildroot package name for the PyPI package pkg_name.\n    Remove all non alphanumeric characters except -\n    Also lowers the name and adds 'python-' suffix\n\n    Keyword arguments:\n    pkg_name -- String to rename\n    \"\"\"\n    name = re.sub(r'[^\\w-]', '', pkg_name.lower())\n    name = name.replace('_', '-')\n    prefix = 'python-'\n    pattern = re.compile(r'^(?!' + prefix + ')(.+?)$')\n    name = pattern.sub(r'python-\\1', name)\n    return name\n\n\nclass DownloadFailed(Exception):\n    pass\n\n\nclass BuildrootPackage():\n    \"\"\"This class's methods are not meant to be used individually please\n    use them in the correct order:\n\n    __init__\n\n    download_package\n\n    extract_package\n\n    load_module\n\n    get_requirements\n\n    create_package_mk\n\n    create_hash_file\n\n    create_config_in\n\n    \"\"\"\n    setup_args = {}\n\n    def __init__(self, real_name, pkg_folder):\n        self.real_name = real_name\n        self.buildroot_name = pkg_buildroot_name(self.real_name)\n        self.pkg_dir = os.path.join(pkg_folder, self.buildroot_name)\n        self.mk_name = self.buildroot_name.upper().replace('-', '_')\n        self.as_string = None\n        self.md5_sum = None\n        self.metadata = None\n        self.metadata_name = None\n        self.metadata_url = None\n        self.pkg_req = None\n        self.setup_metadata = None\n        self.tmp_extract = None\n        self.used_url = None\n        self.filename = None\n        self.url = None\n        self.version = None\n        self.license_files = []\n\n    def fetch_package_info(self):\n        \"\"\"\n        Fetch a package's metadata from the python package index\n        \"\"\"\n        self.metadata_url = 'https://pypi.org/pypi/{pkg}/json'.format(\n            pkg=self.real_name)\n        try:\n            pkg_json = six.moves.urllib.request.urlopen(self.metadata_url).read().decode()\n        except six.moves.urllib.error.HTTPError as error:\n            print('ERROR:', error.getcode(), error.msg, file=sys.stderr)\n            print('ERROR: Could not find package {pkg}.\\n'\n                  'Check syntax inside the python package index:\\n'\n                  'https://pypi.python.org/pypi/ '\n                  .format(pkg=self.real_name))\n            raise\n        except six.moves.urllib.error.URLError:\n            print('ERROR: Could not find package {pkg}.\\n'\n                  'Check syntax inside the python package index:\\n'\n                  'https://pypi.python.org/pypi/ '\n                  .format(pkg=self.real_name))\n            raise\n        self.metadata = json.loads(pkg_json)\n        self.version = self.metadata['info']['version']\n        self.metadata_name = self.metadata['info']['name']\n\n    def download_package(self):\n        \"\"\"\n        Download a package using metadata from pypi\n        \"\"\"\n        download = None\n        try:\n            self.metadata['urls'][0]['filename']\n        except IndexError:\n            print(\n                'Non-conventional package, ',\n                'please check carefully after creation')\n            self.metadata['urls'] = [{\n                'packagetype': 'sdist',\n                'url': self.metadata['info']['download_url'],\n                'digests': None}]\n            # In this case, we can't get the name of the downloaded file\n            # from the pypi api, so we need to find it, this should work\n            urlpath = six.moves.urllib.parse.urlparse(\n                self.metadata['info']['download_url']).path\n            # urlparse().path give something like\n            # /path/to/file-version.tar.gz\n            # We use basename to remove /path/to\n            self.metadata['urls'][0]['filename'] = os.path.basename(urlpath)\n        for download_url in self.metadata['urls']:\n            if 'bdist' in download_url['packagetype']:\n                continue\n            try:\n                print('Downloading package {pkg} from {url}...'.format(\n                    pkg=self.real_name, url=download_url['url']))\n                download = six.moves.urllib.request.urlopen(download_url['url'])\n            except six.moves.urllib.error.HTTPError as http_error:\n                download = http_error\n            else:\n                self.used_url = download_url\n                self.as_string = download.read()\n                if not download_url['digests']['md5']:\n                    break\n                self.md5_sum = hashlib.md5(self.as_string).hexdigest()\n                if self.md5_sum == download_url['digests']['md5']:\n                    break\n\n        if download is None:\n            raise DownloadFailed('Failed to download package {pkg}: '\n                                 'No source archive available'\n                                 .format(pkg=self.real_name))\n        elif download.__class__ == six.moves.urllib.error.HTTPError:\n            raise download\n\n        self.filename = self.used_url['filename']\n        self.url = self.used_url['url']\n\n    def check_archive(self, members):\n        \"\"\"\n        Check archive content before extracting\n\n        Keyword arguments:\n        members -- list of archive members\n        \"\"\"\n        # Protect against https://github.com/snyk/zip-slip-vulnerability\n        # Older python versions do not validate that the extracted files are\n        # inside the target directory. Detect and error out on evil paths\n        evil = [e for e in members if os.path.relpath(e).startswith(('/', '..'))]\n        if evil:\n            print('ERROR: Refusing to extract {} with suspicious members {}'.format(\n                self.filename, evil))\n            sys.exit(1)\n\n    def extract_package(self, tmp_path):\n        \"\"\"\n        Extract the package contents into a directrory\n\n        Keyword arguments:\n        tmp_path -- directory where you want the package to be extracted\n        \"\"\"\n        if six.PY2:\n            as_file = StringIO.StringIO(self.as_string)\n        else:\n            as_file = io.BytesIO(self.as_string)\n        if self.filename[-3:] == 'zip':\n            with zipfile.ZipFile(as_file) as as_zipfile:\n                tmp_pkg = os.path.join(tmp_path, self.buildroot_name)\n                try:\n                    os.makedirs(tmp_pkg)\n                except OSError as exception:\n                    if exception.errno != errno.EEXIST:\n                        print(\"ERROR: \", exception.strerror, file=sys.stderr)\n                        return\n                    print('WARNING:', exception.strerror, file=sys.stderr)\n                    print('Removing {pkg}...'.format(pkg=tmp_pkg))\n                    shutil.rmtree(tmp_pkg)\n                    os.makedirs(tmp_pkg)\n                self.check_archive(as_zipfile.namelist())\n                as_zipfile.extractall(tmp_pkg)\n                pkg_filename = self.filename.split(\".zip\")[0]\n        else:\n            with tarfile.open(fileobj=as_file) as as_tarfile:\n                tmp_pkg = os.path.join(tmp_path, self.buildroot_name)\n                try:\n                    os.makedirs(tmp_pkg)\n                except OSError as exception:\n                    if exception.errno != errno.EEXIST:\n                        print(\"ERROR: \", exception.strerror, file=sys.stderr)\n                        return\n                    print('WARNING:', exception.strerror, file=sys.stderr)\n                    print('Removing {pkg}...'.format(pkg=tmp_pkg))\n                    shutil.rmtree(tmp_pkg)\n                    os.makedirs(tmp_pkg)\n                self.check_archive(as_tarfile.getnames())\n                as_tarfile.extractall(tmp_pkg)\n                pkg_filename = self.filename.split(\".tar\")[0]\n\n        tmp_extract = '{folder}/{name}'\n        self.tmp_extract = tmp_extract.format(\n            folder=tmp_pkg,\n            name=pkg_filename)\n\n    def load_setup(self):\n        \"\"\"\n        Loads the corresponding setup and store its metadata\n        \"\"\"\n        current_dir = os.getcwd()\n        os.chdir(self.tmp_extract)\n        sys.path.insert(0, self.tmp_extract)\n        s_file, s_path, s_desc = imp.find_module('setup', [self.tmp_extract])\n        imp.load_module('__main__', s_file, s_path, s_desc)\n        if self.metadata_name in self.setup_args:\n            pass\n        elif self.metadata_name.replace('_', '-') in self.setup_args:\n            self.metadata_name = self.metadata_name.replace('_', '-')\n        elif self.metadata_name.replace('-', '_') in self.setup_args:\n            self.metadata_name = self.metadata_name.replace('-', '_')\n        try:\n            self.setup_metadata = self.setup_args[self.metadata_name]\n        except KeyError:\n            # This means setup was not called\n            print('ERROR: Could not determine package metadata for {pkg}.\\n'\n                  .format(pkg=self.real_name))\n            raise\n        os.chdir(current_dir)\n        sys.path.remove(self.tmp_extract)\n\n    def get_requirements(self, pkg_folder):\n        \"\"\"\n        Retrieve dependencies from the metadata found in the setup.py script of\n        a pypi package.\n\n        Keyword Arguments:\n        pkg_folder -- location of the already created packages\n        \"\"\"\n        if 'install_requires' not in self.setup_metadata:\n            self.pkg_req = None\n            return set()\n        self.pkg_req = self.setup_metadata['install_requires']\n        self.pkg_req = [re.sub(r'([-.\\w]+).*', r'\\1', req)\n                        for req in self.pkg_req]\n\n        # get rid of commented lines and also strip the package strings\n        self.pkg_req = [item.strip() for item in self.pkg_req\n                        if len(item) > 0 and item[0] != '#']\n\n        req_not_found = self.pkg_req\n        self.pkg_req = list(map(pkg_buildroot_name, self.pkg_req))\n        pkg_tuples = list(zip(req_not_found, self.pkg_req))\n        # pkg_tuples is a list of tuples that looks like\n        # ('werkzeug','python-werkzeug') because I need both when checking if\n        # dependencies already exist or are already in the download list\n        req_not_found = set(\n            pkg[0] for pkg in pkg_tuples\n            if not os.path.isdir(pkg[1])\n            )\n        return req_not_found\n\n    def __create_mk_header(self):\n        \"\"\"\n        Create the header of the <package_name>.mk file\n        \"\"\"\n        header = ['#' * 80 + '\\n']\n        header.append('#\\n')\n        header.append('# {name}\\n'.format(name=self.buildroot_name))\n        header.append('#\\n')\n        header.append('#' * 80 + '\\n')\n        header.append('\\n')\n        return header\n\n    def __create_mk_download_info(self):\n        \"\"\"\n        Create the lines refering to the download information of the\n        <package_name>.mk file\n        \"\"\"\n        lines = []\n        version_line = '{name}_VERSION = {version}\\n'.format(\n            name=self.mk_name,\n            version=self.version)\n        lines.append(version_line)\n\n        if self.buildroot_name != self.real_name:\n            targz = self.filename.replace(\n                self.version,\n                '$({name}_VERSION)'.format(name=self.mk_name))\n            targz_line = '{name}_SOURCE = {filename}\\n'.format(\n                name=self.mk_name,\n                filename=targz)\n            lines.append(targz_line)\n\n        if self.filename not in self.url:\n            # Sometimes the filename is in the url, sometimes it's not\n            site_url = self.url\n        else:\n            site_url = self.url[:self.url.find(self.filename)]\n        site_line = '{name}_SITE = {url}'.format(name=self.mk_name,\n                                                 url=site_url)\n        site_line = site_line.rstrip('/') + '\\n'\n        lines.append(site_line)\n        return lines\n\n    def __create_mk_setup(self):\n        \"\"\"\n        Create the line refering to the setup method of the package of the\n        <package_name>.mk file\n\n        There are two things you can use to make an installer\n        for a python package: distutils or setuptools\n        distutils comes with python but does not support dependencies.\n        distutils is mostly still there for backward support.\n        setuptools is what smart people use,\n        but it is not shipped with python :(\n        \"\"\"\n        lines = []\n        setup_type_line = '{name}_SETUP_TYPE = {method}\\n'.format(\n            name=self.mk_name,\n            method=self.setup_metadata['method'])\n        lines.append(setup_type_line)\n        return lines\n\n    def __get_license_names(self, license_files):\n        \"\"\"\n        Try to determine the related license name.\n\n        There are two possibilities. Either the script tries to\n        get license name from package's metadata or, if spdx_lookup\n        package is available, the script compares license files with\n        SPDX database.\n        \"\"\"\n        license_line = ''\n        if liclookup is None:\n            license_dict = {\n                'Apache Software License': 'Apache-2.0',\n                'BSD License': 'FIXME: please specify the exact BSD version',\n                'European Union Public Licence 1.0': 'EUPL-1.0',\n                'European Union Public Licence 1.1': 'EUPL-1.1',\n                \"GNU General Public License\": \"GPL\",\n                \"GNU General Public License v2\": \"GPL-2.0\",\n                \"GNU General Public License v2 or later\": \"GPL-2.0+\",\n                \"GNU General Public License v3\": \"GPL-3.0\",\n                \"GNU General Public License v3 or later\": \"GPL-3.0+\",\n                \"GNU Lesser General Public License v2\": \"LGPL-2.1\",\n                \"GNU Lesser General Public License v2 or later\": \"LGPL-2.1+\",\n                \"GNU Lesser General Public License v3\": \"LGPL-3.0\",\n                \"GNU Lesser General Public License v3 or later\": \"LGPL-3.0+\",\n                \"GNU Library or Lesser General Public License\": \"LGPL-2.0\",\n                \"ISC License\": \"ISC\",\n                \"MIT License\": \"MIT\",\n                \"Mozilla Public License 1.0\": \"MPL-1.0\",\n                \"Mozilla Public License 1.1\": \"MPL-1.1\",\n                \"Mozilla Public License 2.0\": \"MPL-2.0\",\n                \"Zope Public License\": \"ZPL\"\n                }\n            regexp = re.compile(r'^License :* *.* *:+ (.*)( \\(.*\\))?$')\n            classifiers_licenses = [regexp.sub(r\"\\1\", lic)\n                                    for lic in self.metadata['info']['classifiers']\n                                    if regexp.match(lic)]\n            licenses = [license_dict[x] if x in license_dict else x for x in classifiers_licenses]\n            if not len(licenses):\n                print('WARNING: License has been set to \"{license}\". It is most'\n                      ' likely wrong, please change it if need be'.format(\n                          license=', '.join(licenses)))\n                licenses = [self.metadata['info']['license']]\n            licenses = set(licenses)\n            license_line = '{name}_LICENSE = {license}\\n'.format(\n                name=self.mk_name,\n                license=', '.join(licenses))\n        else:\n            license_names = []\n            for license_file in license_files:\n                with open(license_file) as lic_file:\n                    match = liclookup.match(lic_file.read())\n                if match is not None and match.confidence >= 90.0:\n                    license_names.append(match.license.id)\n                else:\n                    license_names.append(\"FIXME: license id couldn't be detected\")\n            license_names = set(license_names)\n\n            if len(license_names) > 0:\n                license_line = ('{name}_LICENSE ='\n                                ' {names}\\n'.format(\n                                    name=self.mk_name,\n                                    names=', '.join(license_names)))\n\n        return license_line\n\n    def __create_mk_license(self):\n        \"\"\"\n        Create the lines referring to the package's license informations of the\n        <package_name>.mk file\n\n        The license's files are found by searching the package (case insensitive)\n        for files named license, license.txt etc. If more than one license file\n        is found, the user is asked to select which ones he wants to use.\n        \"\"\"\n        lines = []\n\n        filenames = ['LICENCE', 'LICENSE', 'LICENSE.MD', 'LICENSE.RST',\n                     'LICENSE.TXT', 'COPYING', 'COPYING.TXT']\n        self.license_files = list(find_file_upper_case(filenames, self.tmp_extract))\n\n        lines.append(self.__get_license_names(self.license_files))\n\n        license_files = [license.replace(self.tmp_extract, '')[1:]\n                         for license in self.license_files]\n        if len(license_files) > 0:\n            if len(license_files) > 1:\n                print('More than one file found for license:',\n                      ', '.join(license_files))\n            license_files = [filename\n                             for index, filename in enumerate(license_files)]\n            license_file_line = ('{name}_LICENSE_FILES ='\n                                 ' {files}\\n'.format(\n                                     name=self.mk_name,\n                                     files=' '.join(license_files)))\n            lines.append(license_file_line)\n        else:\n            print('WARNING: No license file found,'\n                  ' please specify it manually afterwards')\n            license_file_line = '# No license file found\\n'\n\n        return lines\n\n    def __create_mk_requirements(self):\n        \"\"\"\n        Create the lines referring to the dependencies of the of the\n        <package_name>.mk file\n\n        Keyword Arguments:\n        pkg_name -- name of the package\n        pkg_req -- dependencies of the package\n        \"\"\"\n        lines = []\n        dependencies_line = ('{name}_DEPENDENCIES ='\n                             ' {reqs}\\n'.format(\n                                 name=self.mk_name,\n                                 reqs=' '.join(self.pkg_req)))\n        lines.append(dependencies_line)\n        return lines\n\n    def create_package_mk(self):\n        \"\"\"\n        Create the lines corresponding to the <package_name>.mk file\n        \"\"\"\n        pkg_mk = '{name}.mk'.format(name=self.buildroot_name)\n        path_to_mk = os.path.join(self.pkg_dir, pkg_mk)\n        print('Creating {file}...'.format(file=path_to_mk))\n        lines = self.__create_mk_header()\n        lines += self.__create_mk_download_info()\n        lines += self.__create_mk_setup()\n        lines += self.__create_mk_license()\n\n        lines.append('\\n')\n        lines.append('$(eval $(python-package))')\n        lines.append('\\n')\n        with open(path_to_mk, 'w') as mk_file:\n            mk_file.writelines(lines)\n\n    def create_hash_file(self):\n        \"\"\"\n        Create the lines corresponding to the <package_name>.hash files\n        \"\"\"\n        pkg_hash = '{name}.hash'.format(name=self.buildroot_name)\n        path_to_hash = os.path.join(self.pkg_dir, pkg_hash)\n        print('Creating {filename}...'.format(filename=path_to_hash))\n        lines = []\n        if self.used_url['digests']['md5'] and self.used_url['digests']['sha256']:\n            hash_header = '# md5, sha256 from {url}\\n'.format(\n                url=self.metadata_url)\n            lines.append(hash_header)\n            hash_line = '{method}  {digest}  {filename}\\n'.format(\n                method='md5',\n                digest=self.used_url['digests']['md5'],\n                filename=self.filename)\n            lines.append(hash_line)\n            hash_line = '{method}  {digest}  {filename}\\n'.format(\n                method='sha256',\n                digest=self.used_url['digests']['sha256'],\n                filename=self.filename)\n            lines.append(hash_line)\n\n        if self.license_files:\n            lines.append('# Locally computed sha256 checksums\\n')\n        for license_file in self.license_files:\n            sha256 = hashlib.sha256()\n            with open(license_file, 'rb') as lic_f:\n                while True:\n                    data = lic_f.read(BUF_SIZE)\n                    if not data:\n                        break\n                    sha256.update(data)\n            hash_line = '{method}  {digest}  {filename}\\n'.format(\n                method='sha256',\n                digest=sha256.hexdigest(),\n                filename=license_file.replace(self.tmp_extract, '')[1:])\n            lines.append(hash_line)\n\n        with open(path_to_hash, 'w') as hash_file:\n            hash_file.writelines(lines)\n\n    def create_config_in(self):\n        \"\"\"\n        Creates the Config.in file of a package\n        \"\"\"\n        path_to_config = os.path.join(self.pkg_dir, 'Config.in')\n        print('Creating {file}...'.format(file=path_to_config))\n        lines = []\n        config_line = 'config BR2_PACKAGE_{name}\\n'.format(\n            name=self.mk_name)\n        lines.append(config_line)\n\n        bool_line = '\\tbool \"{name}\"\\n'.format(name=self.buildroot_name)\n        lines.append(bool_line)\n        if self.pkg_req:\n            self.pkg_req.sort()\n            for dep in self.pkg_req:\n                dep_line = '\\tselect BR2_PACKAGE_{req} # runtime\\n'.format(\n                    req=dep.upper().replace('-', '_'))\n                lines.append(dep_line)\n\n        lines.append('\\thelp\\n')\n\n        help_lines = textwrap.wrap(self.metadata['info']['summary'], 62,\n                                   initial_indent='\\t  ',\n                                   subsequent_indent='\\t  ')\n\n        # make sure a help text is terminated with a full stop\n        if help_lines[-1][-1] != '.':\n            help_lines[-1] += '.'\n\n        # \\t + two spaces is 3 char long\n        help_lines.append('')\n        help_lines.append('\\t  ' + self.metadata['info']['home_page'])\n        help_lines = [x + '\\n' for x in help_lines]\n        lines += help_lines\n\n        with open(path_to_config, 'w') as config_file:\n            config_file.writelines(lines)\n\n\ndef main():\n    # Building the parser\n    parser = argparse.ArgumentParser(\n        description=\"Creates buildroot packages from the metadata of \"\n                    \"an existing PyPI packages and include it \"\n                    \"in menuconfig\")\n    parser.add_argument(\"packages\",\n                        help=\"list of packages to be created\",\n                        nargs='+')\n    parser.add_argument(\"-o\", \"--output\",\n                        help=\"\"\"\n                        Output directory for packages.\n                        Default is ./package\n                        \"\"\",\n                        default='./package')\n\n    args = parser.parse_args()\n    packages = list(set(args.packages))\n\n    # tmp_path is where we'll extract the files later\n    tmp_prefix = 'scanpypi-'\n    pkg_folder = args.output\n    tmp_path = tempfile.mkdtemp(prefix=tmp_prefix)\n    try:\n        for real_pkg_name in packages:\n            package = BuildrootPackage(real_pkg_name, pkg_folder)\n            print('buildroot package name for {}:'.format(package.real_name),\n                  package.buildroot_name)\n            # First we download the package\n            # Most of the info we need can only be found inside the package\n            print('Package:', package.buildroot_name)\n            print('Fetching package', package.real_name)\n            try:\n                package.fetch_package_info()\n            except (six.moves.urllib.error.URLError, six.moves.urllib.error.HTTPError):\n                continue\n            if package.metadata_name.lower() == 'setuptools':\n                # setuptools imports itself, that does not work very well\n                # with the monkey path at the begining\n                print('Error: setuptools cannot be built using scanPyPI')\n                continue\n\n            try:\n                package.download_package()\n            except six.moves.urllib.error.HTTPError as error:\n                print('Error: {code} {reason}'.format(code=error.code,\n                                                      reason=error.reason))\n                print('Error downloading package :', package.buildroot_name)\n                print()\n                continue\n\n            # extract the tarball\n            try:\n                package.extract_package(tmp_path)\n            except (tarfile.ReadError, zipfile.BadZipfile):\n                print('Error extracting package {}'.format(package.real_name))\n                print()\n                continue\n\n            # Loading the package install info from the package\n            try:\n                package.load_setup()\n            except ImportError as err:\n                if 'buildutils' in err.message:\n                    print('This package needs buildutils')\n                else:\n                    raise\n                continue\n            except (AttributeError, KeyError) as error:\n                print('Error: Could not install package {pkg}: {error}'.format(\n                    pkg=package.real_name, error=error))\n                continue\n\n            # Package requirement are an argument of the setup function\n            req_not_found = package.get_requirements(pkg_folder)\n            req_not_found = req_not_found.difference(packages)\n\n            packages += req_not_found\n            if req_not_found:\n                print('Added packages \\'{pkgs}\\' as dependencies of {pkg}'\n                      .format(pkgs=\", \".join(req_not_found),\n                              pkg=package.buildroot_name))\n            print('Checking if package {name} already exists...'.format(\n                name=package.pkg_dir))\n            try:\n                os.makedirs(package.pkg_dir)\n            except OSError as exception:\n                if exception.errno != errno.EEXIST:\n                    print(\"ERROR: \", exception.message, file=sys.stderr)\n                    continue\n                print('Error: Package {name} already exists'\n                      .format(name=package.pkg_dir))\n                del_pkg = input(\n                    'Do you want to delete existing package ? [y/N]')\n                if del_pkg.lower() == 'y':\n                    shutil.rmtree(package.pkg_dir)\n                    os.makedirs(package.pkg_dir)\n                else:\n                    continue\n            package.create_package_mk()\n\n            package.create_hash_file()\n\n            package.create_config_in()\n            print(\"NOTE: Remember to also make an update to the DEVELOPERS file\")\n            print(\"      and include an entry for the pkg in packages/Config.in\")\n            print()\n            # printing an empty line for visual confort\n    finally:\n        shutil.rmtree(tmp_path)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "utils/size-stats-compare",
    "content": "#!/usr/bin/env python3\n\n# Copyright (C) 2016 Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>\n\n# This program is free software; you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation; either version 2 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n# General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n\n# TODO (improvements)\n# - support K,M,G size suffixes for threshold\n# - output CSV file in addition to stdout reporting\n\nimport csv\nimport argparse\nimport sys\n\n\ndef read_file_size_csv(inputf, detail=None):\n    \"\"\"Extract package or file sizes from CSV file into size dictionary\"\"\"\n    sizes = {}\n    reader = csv.reader(inputf)\n\n    header = next(reader)\n    if header[0] != 'File name' or header[1] != 'Package name' or \\\n       header[2] != 'File size' or header[3] != 'Package size':\n        print((\"Input file %s does not contain the expected header. Are you \"\n               \"sure this file corresponds to the file-size-stats.csv \"\n               \"file created by 'make graph-size'?\") % inputf.name)\n        sys.exit(1)\n\n    for row in reader:\n        if detail:\n            sizes[row[0]] = int(row[2])\n        else:\n            sizes[row[1]] = int(row[3])\n\n    return sizes\n\n\ndef compare_sizes(old, new):\n    \"\"\"Return delta/added/removed dictionaries based on two input size\n    dictionaries\"\"\"\n    delta = {}\n    oldkeys = set(old.keys())\n    newkeys = set(new.keys())\n\n    # packages/files in both\n    for entry in newkeys.intersection(oldkeys):\n        delta[entry] = ('', new[entry] - old[entry])\n    # packages/files only in new\n    for entry in newkeys.difference(oldkeys):\n        delta[entry] = ('added', new[entry])\n    # packages/files only in old\n    for entry in oldkeys.difference(newkeys):\n        delta[entry] = ('removed', -old[entry])\n\n    return delta\n\n\ndef print_results(result, threshold):\n    \"\"\"Print the given result dictionary sorted by size, ignoring any entries\n    below or equal to threshold\"\"\"\n\n    from six import iteritems\n    list_result = list(iteritems(result))\n    # result is a dictionary: name -> (flag, size difference)\n    # list_result is a list of tuples: (name, (flag, size difference))\n\n    for entry in sorted(list_result, key=lambda entry: entry[1][1]):\n        if threshold is not None and abs(entry[1][1]) <= threshold:\n            continue\n        print('%12s %7s %s' % (entry[1][1], entry[1][0], entry[0]))\n\n\n# main #########################################################################\n\ndescription = \"\"\"\nCompare rootfs size between Buildroot compilations, for example after changing\nconfiguration options or after switching to another Buildroot release.\n\nThis script compares the file-size-stats.csv file generated by 'make graph-size'\nwith the corresponding file from another Buildroot compilation.\nThe size differences can be reported per package or per file.\nSize differences smaller or equal than a given threshold can be ignored.\n\"\"\"\n\nparser = argparse.ArgumentParser(description=description,\n                                 formatter_class=argparse.RawDescriptionHelpFormatter)\n\nparser.add_argument('-d', '--detail', action='store_true',\n                    help='''report differences for individual files rather than\n                            packages''')\nparser.add_argument('-t', '--threshold', type=int,\n                    help='''ignore size differences smaller or equal than this\n                            value (bytes)''')\nparser.add_argument('old_file_size_csv', type=argparse.FileType('r'),\n                    metavar='old-file-size-stats.csv',\n                    help=\"\"\"old CSV file with file and package size statistics,\n                            generated by 'make graph-size'\"\"\")\nparser.add_argument('new_file_size_csv', type=argparse.FileType('r'),\n                    metavar='new-file-size-stats.csv',\n                    help='new CSV file with file and package size statistics')\nargs = parser.parse_args()\n\nif args.detail:\n    keyword = 'file'\nelse:\n    keyword = 'package'\n\nold_sizes = read_file_size_csv(args.old_file_size_csv, args.detail)\nnew_sizes = read_file_size_csv(args.new_file_size_csv, args.detail)\n\ndelta = compare_sizes(old_sizes, new_sizes)\n\nprint('Size difference per %s (bytes), threshold = %s' % (keyword, args.threshold))\nprint(80*'-')\nprint_results(delta, args.threshold)\nprint(80*'-')\nprint_results({'TOTAL': ('', sum(new_sizes.values()) - sum(old_sizes.values()))},\n              threshold=None)\n"
  },
  {
    "path": "utils/test-pkg",
    "content": "#!/usr/bin/env bash\nset -e\n\nTOOLCHAINS_CSV='support/config-fragments/autobuild/toolchain-configs.csv'\nTEMP_CONF=\"\"\n\ndo_clean() {\n    if [ ! -z \"${TEMP_CONF}\" ]; then\n        rm -f \"${TEMP_CONF}\"\n    fi\n}\n\nmain() {\n    local o O opts\n    local cfg dir pkg random toolchains_csv toolchain all number mode prepare_only\n    local ret nb nb_skip nb_fail nb_legal nb_tc build_dir keep\n    local -a toolchains\n    local pkg_br_name\n\n    o='hakc:d:n:p:r:t:'\n    O='help,all,keep,prepare-only,config-snippet:,build-dir:,number:,package:,random:,toolchains-csv:'\n    opts=\"$(getopt -n \"${my_name}\" -o \"${o}\" -l \"${O}\" -- \"${@}\")\"\n    eval set -- \"${opts}\"\n\n    random=0\n    all=0\n    keep=0\n    number=0\n    mode=0\n    prepare_only=0\n    toolchains_csv=\"${TOOLCHAINS_CSV}\"\n    while [ ${#} -gt 0 ]; do\n        case \"${1}\" in\n        (-h|--help)\n            help; exit 0\n            ;;\n        (-a|--all)\n            all=1; shift 1\n            ;;\n        (-k|--keep)\n            keep=1; shift 1\n            ;;\n        (--prepare-only)\n            prepare_only=1; shift 1\n            ;;\n        (-c|--config-snippet)\n            cfg=\"${2}\"; shift 2\n            ;;\n        (-d|--build-dir)\n            dir=\"${2}\"; shift 2\n            ;;\n        (-n|--number)\n            number=\"${2}\"; shift 2\n            ;;\n        (-p|--package)\n            pkg=\"${2}\"; shift 2\n            ;;\n        (-r|--random)\n            random=\"${2}\"; shift 2\n            ;;\n        (-t|--toolchains-csv)\n            toolchains_csv=\"${2}\"; shift 2\n            ;;\n        (--)\n            shift; break\n            ;;\n        esac\n    done\n\n    trap do_clean INT TERM HUP EXIT\n\n    if [ -z \"${cfg}\" ]; then\n        pkg_br_name=\"${pkg//-/_}\"\n        pkg_br_name=\"BR2_PACKAGE_${pkg_br_name^^}\"\n        TEMP_CONF=$(mktemp /tmp/test-${pkg}-config.XXXXXX)\n        echo \"${pkg_br_name}=y\" > ${TEMP_CONF}\n        cfg=\"${TEMP_CONF}\"\n    fi\n    if [ ! -e \"${cfg}\" ]; then\n        printf \"error: %s: no such file\\n\" \"${cfg}\" >&2; exit 1\n    fi\n    if [ -z \"${dir}\" ]; then\n        dir=\"${HOME}/br-test-pkg\"\n    fi\n\n    if [ ${random} -gt 0 ]; then\n        mode=$((mode+1))\n    fi\n\n    if [ ${number} -gt 0 ]; then\n        mode=$((mode+1))\n    fi\n\n    if [ ${all} -eq 1 ]; then\n        mode=$((mode+1))\n    fi\n\n    # Default mode is to test the N first toolchains, which have been\n    # chosen to be a good selection of toolchains.\n    if [ ${mode} -eq 0 ] ; then\n        number=6\n    elif [ ${mode} -gt 1 ] ; then\n        printf \"error: --all, --number and --random are mutually exclusive\\n\" >&2; exit 1\n    fi\n\n    # Extract the URLs of the toolchains; drop internal toolchains\n    # E.g.: http://server/path/to/name.config,arch,libc\n    #  -->  http://server/path/to/name.config\n    toolchains=($(sed -r -e 's/,.*//; /internal/d; /^#/d; /^$/d;' \"${toolchains_csv}\" \\\n                  |if [ ${random} -gt 0 ]; then \\\n                      sort -R |head -n ${random}\n                  elif [ ${number} -gt 0 ]; then \\\n                      head -n ${number}\n                  else\n                      sort\n                  fi\n                 )\n               )\n\n    nb_tc=\"${#toolchains[@]}\"\n    if [ ${nb_tc} -eq 0 ]; then\n        printf \"error: no toolchain found (networking issue?)\\n\" >&2; exit 1\n    fi\n\n    nb=0\n    nb_skip=0\n    nb_fail=0\n    nb_legal=0\n    for toolchainconfig in \"${toolchains[@]}\"; do\n        : $((nb++))\n        toolchain=\"$(basename \"${toolchainconfig}\" .config)\"\n        build_dir=\"${dir}/${toolchain}\"\n        printf \"%40s [%*d/%d]: \" \"${toolchain}\" ${#nb_tc} ${nb} ${nb_tc}\n        build_one \"${build_dir}\" \"${toolchainconfig}\" \"${cfg}\" \"${pkg}\" \"${prepare_only}\" && ret=0 || ret=${?}\n        case ${ret} in\n        (0) printf \"OK\\n\";;\n        (1) : $((nb_skip++)); printf \"SKIPPED\\n\";;\n        (2) : $((nb_fail++)); printf \"FAILED\\n\";;\n        (3) : $((nb_legal++)); printf \"FAILED\\n\";;\n        esac\n    done\n\n    printf \"%d builds, %d skipped, %d build failed, %d legal-info failed\\n\" \\\n        ${nb} ${nb_skip} ${nb_fail} ${nb_legal}\n\n    return $((nb_fail + nb_legal))\n}\n\nbuild_one() {\n    local dir=\"${1}\"\n    local toolchainconfig=\"${2}\"\n    local cfg=\"${3}\"\n    local pkg=\"${4}\"\n    local prepare_only=\"${5}\"\n\n    mkdir -p \"${dir}\"\n\n    CONFIG_= support/kconfig/merge_config.sh -O \"${dir}\" \\\n        \"${toolchainconfig}\" \"support/config-fragments/minimal.config\" \"${cfg}\" \\\n        >> \"${dir}/logfile\" 2>&1\n    # We want all the options from the snippet to be present as-is (set\n    # or not set) in the actual .config; if one of them is not, it means\n    # some dependency from the toolchain or arch is not available, in\n    # which case this config is untestable and we skip it.\n    # We don't care about the locale to sort in, as long as both sort are\n    # done in the same locale.\n    comm -23 <(sort \"${cfg}\") <(sort \"${dir}/.config\") >\"${dir}/missing.config\"\n    if [ -s \"${dir}/missing.config\" ]; then\n        if [ ${keep} -ne 1 ]; then\n            # Invalid configuration, drop it\n            rm -f \"${dir}/.config\"\n        fi\n        return 1\n    fi\n    # Remove file, it's empty anyway.\n    rm -f \"${dir}/missing.config\"\n\n    # Defer building the job to the caller (e.g. a gitlab pipeline)\n    if [ ${prepare_only} -eq 1 ]; then\n        return 0\n    fi\n\n    if [ -n \"${pkg}\" ]; then\n        if ! make O=\"${dir}\" \"${pkg}-dirclean\" >> \"${dir}/logfile\" 2>&1; then\n            return 2\n        fi\n    fi\n\n    # shellcheck disable=SC2086\n    if ! BR_FORCE_CHECK_DEPENDENCIES=YES make O=\"${dir}\" ${pkg} >> \"${dir}/logfile\" 2>&1; then\n        return 2\n    fi\n\n    # legal-info done systematically, because some packages have different\n    # sources depending on the configuration (e.g. lua-5.2 vs. lua-5.3)\n    if ! make O=\"${dir}\" legal-info >> \"${dir}/logfile\" 2>&1; then\n        return 3\n    fi\n\n    # If we get here, the build was successful. Clean up the build/host\n    # directories to save disk space, unless 'keep' was set.\n    if [ ${keep} -ne 1 ]; then\n        make O=\"${dir}\" clean >> \"${dir}/logfile\" 2>&1\n    fi\n}\n\nhelp() {\n    cat <<_EOF_\ntest-pkg: test-build a package against various toolchains and architectures\n\nThe supplied config snippet is appended to each toolchain config, the\nresulting configuration is checked to ensure it still contains all options\nspecified in the snippet; if any is missing, the build is skipped, on the\nassumption that the package under test requires a toolchain or architecture\nfeature that is missing.\n\nIn case failures are noticed, you can fix the package and just re-run the\nsame command again; it will re-run the test where it failed. If you did\nspecify a package (with -p), the package build dir will be removed first.\n\nThe list of toolchains is retrieved from ${TOOLCHAINS_CSV}.\nOnly the external toolchains are tried, because building a Buildroot toolchain\nwould take too long. An alternative toolchains CSV file can be specified with\nthe -t option. This file should have lines consisting of the path to the\ntoolchain config fragment and the required host architecture, separated by a\ncomma. The config fragments should contain only the toolchain and architecture\nsettings.\n\nBy default, a useful subset of toolchains is tested. If needed, all\ntoolchains can be tested (-a), an arbitrary number of toolchains (-n\nin order, -r for random).\n\nOptions:\n\n    -h, --help\n        Print this help.\n\n    -c CFG, --config-snippet CFG\n        Use the CFG file as the source for the config snippet. This file\n        should contain all the config options required to build a package.\n\n    -d DIR, --build-dir DIR\n        Do the builds in directory DIR, one sub-dir per toolchain.\n\n    -p PKG, --package PKG\n        Test-build the package PKG, by running 'make PKG'; if not specified,\n        just runs 'make'.\n\n    -a, --all\n        Test all toolchains, instead of the default subset defined by\n        Buildroot developers.\n\n    -n N, --number N\n        Test N toolchains, in the order defined in the toolchain CSV\n        file.\n\n    -r N, --random N\n        Limit the tests to the N randomly selected toolchains.\n\n    -t CSVFILE, --toolchains-csv CSVFILE\n        CSV file containing the paths to config fragments of toolchains to\n        try. If not specified, the toolchains in ${TOOLCHAINS_CSV} will be\n        used.\n\n    -k, --keep\n        Keep the build directories even if the build succeeds.\n        Note: the logfile and configuration is always retained, even without\n        this option.\n\n    --prepare-only\n        Only prepare the .config files, but do not build them. Output the\n        list of build directories to stdout, and the status on stderr.\n\nExample:\n\n    Testing libcec would require a config snippet that contains:\n        BR2_PACKAGE_LIBCEC=y\n\n    Testing libcurl with openSSL support would require a snippet such as:\n        BR2_PACKAGE_OPENSSL=y\n        BR2_PACKAGE_LIBCURL=y\n\n_EOF_\n}\n\nmy_name=\"${0##*/}\"\nmain \"${@}\"\n"
  },
  {
    "path": "writeimage.sh",
    "content": "#!/bin/bash -e\n\n\nfunction usage() {\n    cat <<END_USAGE\nUsage: $0 [options...]\n\nAvailable options:\n    <-i image_file> - indicates the path to the image file (e.g. -i /home/user/Download/file.img.xz)\n    <-d sdcard_dev> - indicates the path to the sdcard block device (e.g. -d /dev/mmcblk0)\n    [-f factory_defaults] - injects factory defaults (e.g. -f /home/user/Download/factory-defaults.tar.xz)\n    [-m modem:apn:user:pwd:pin] - configures the mobile network modem (e.g. -m ttyUSB0:internet)\n    [-n ssid:psk] - sets the wireless network name and key (e.g. -n mynet:mykey1234)\n    [-s ip/cidr:gw:dns] - sets a static IP configuration instead of DHCP (e.g. -s 192.168.1.101/24:192.168.1.1:8.8.8.8)\nEND_USAGE\n    exit 1\n}\n\nif [ -z \"$1\" ]; then\n    usage 1>&2\nfi\n\nif [[ $(id -u) -ne 0 ]]; then echo \"please run as root\"; exit 1; fi\n\nfunction msg() {\n    echo \" * $1\"\n}\n\nwhile getopts \"a:d:f:h:i:lm:n:o:p:s:w\" o; do\n    case \"$o\" in\n        d)\n            SDCARD_DEV=$OPTARG\n            ;;\n        i)\n            DISK_IMG=$OPTARG\n            ;;\n        f)\n            FACTORY_DEFAULTS=$OPTARG\n            ;;\n        m)\n            IFS=\":\" SETTINGS=($OPTARG)\n            MODEM=${SETTINGS[0]}\n            APN=${SETTINGS[1]}\n            MUSER=${SETTINGS[2]}\n            MPWD=${SETTINGS[3]}\n            PIN=${SETTINGS[4]}\n            ;;\n        n)\n            IFS=\":\" NETWORK=($OPTARG)\n            SSID=${NETWORK[0]}\n            PSK=${NETWORK[1]}\n            ;;\n        s)\n            IFS=\":\" S_IP=($OPTARG)\n            IP=${S_IP[0]}\n            GW=${S_IP[1]}\n            DNS=${S_IP[2]}\n            ;;\n        *)\n            usage 1>&2\n            ;;\n    esac\ndone\n\nif [ -z \"$SDCARD_DEV\" ] || [ -z \"$DISK_IMG\" ]; then\n    usage 1>&2\nfi\n\nfunction cleanup {\n    set +e\n\n    # unmount sdcard\n    umount \"${SDCARD_DEV}\"* >/dev/null 2>&1\n}\n\ntrap cleanup EXIT\n\nBOOT=$(dirname \"$0\")/.boot\n\nif ! [ -f \"$DISK_IMG\" ]; then\n    echo \"could not find image file $DISK_IMG\"\n    exit 1\nfi\n\ngunzip=$(which unpigz 2> /dev/null || which gunzip 2> /dev/null || true)\nunxz=$(which unxz 2> /dev/null || true)\n\nif [[ $DISK_IMG == *.gz ]]; then\n    if [ -z \"$gunzip\" ]; then\n        msg \"make sure you have the gzip package installed\"\n        exit 1\n    fi\n    msg \"decompressing the .gz compressed image\"\n    $gunzip -c \"$DISK_IMG\" > \"${DISK_IMG%???}\"\n    DISK_IMG=${DISK_IMG%???}\nelif [[ $DISK_IMG == *.xz ]]; then\n    if [ -z \"$unxz\" ]; then\n        msg \"make sure you have the xz package installed\"\n        exit 1\n    fi\n    msg \"decompressing the .xz compressed image\"\n    $unxz -T 0 -c \"$DISK_IMG\" > \"${DISK_IMG%???}\"\n    DISK_IMG=${DISK_IMG%???}\nfi\n\numount \"${SDCARD_DEV}\"* 2>/dev/null || true\nmsg \"writing disk image to sdcard\"\ndd if=\"$DISK_IMG\" of=\"$SDCARD_DEV\" bs=1048576\nsync\n\nif which partprobe > /dev/null 2>&1; then\n    msg \"re-reading sdcard partition table\"\n    partprobe \"${SDCARD_DEV}\"\n    sleep 1\nfi\n\nmsg \"mounting sdcard\"\nmkdir -p \"$BOOT\"\n\nif [ \"$(uname)\" == \"Darwin\" ]; then\n    BOOT_DEV=${SDCARD_DEV}s1 # e.g. /dev/disk4s1\n    diskutil unmountDisk \"${SDCARD_DEV}\"\n    mount -ft msdos \"$BOOT_DEV\" \"$BOOT\"\nelse # assuming Linux\n    BOOT_DEV=${SDCARD_DEV}p1 # e.g. /dev/mmcblk0p1\n    if ! [ -e \"${SDCARD_DEV}p1\" ]; then\n        BOOT_DEV=${SDCARD_DEV}1 # e.g. /dev/sdc1\n    fi\n    mount \"$BOOT_DEV\" \"$BOOT\"\nfi\n\n# factory defaults\nif [ -n \"$FACTORY_DEFAULTS\" ]; then\n    msg \"injecting factory defaults\"\n    cp $FACTORY_DEFAULTS $BOOT/factory-defaults.tar.xz\nfi\n\n# wifi\nif [ -n \"$SSID\" ]; then\n    msg \"creating wireless configuration\"\n    conf=$BOOT/wpa_supplicant.conf\n    {\n    echo \"update_config=1\"\n    echo \"ctrl_interface=/var/run/wpa_supplicant\"\n    echo \"network={\"\n    echo \"    scan_ssid=1\"\n    echo \"    ssid=\\\"$SSID\\\"\"\n    if [ -n \"$PSK\" ]; then\n        echo \"    psk=\\\"$PSK\\\"\"\n    fi\n    echo \"}\"\n    echo \"\"\n    } > \"$conf\"\nfi\n\n# modem\nif [ -n \"$MODEM\" ]; then\n    msg \"creating mobile network configuration\"\n    conf=$BOOT/ppp\n    mkdir -p \"$conf\"\n    echo \"$MODEM\" > \"$conf/modem\"\n    echo \"AT+CGDCONT=1,\\\"IP\\\",\\\"$APN\\\"\" > \"$conf/apn\"\n    echo > \"$conf/extra\"\n    if [ -n \"$MUSER\" ]; then\n        echo \"user \\\"$MUSER\\\"\"\n        echo \"password \\\"$MPWD\\\"\"\n    else\n        echo\n    fi > \"$conf/auth\"\n    if [ -n \"$PIN\" ]; then\n        echo \"AT+CPIN=$PIN\"\n    else\n        echo\n    fi > \"$conf/pin\"\nfi\n\n# static ip\nif [ -n \"$IP\" ] && [ -n \"$GW\" ] && [ -n \"$DNS\" ]; then\n    msg \"setting static IP configuration\"\n    conf=$BOOT/static_ip.conf\n    {\n    echo \"STATIC_IP=\\\"$IP\\\"\"\n    echo \"STATIC_GW=\\\"$GW\\\"\"\n    echo \"STATIC_DNS=\\\"$DNS\\\"\"\n    } > \"$conf\"\nfi\n\nmsg \"unmounting sdcard\"\nsync\nsleep 1\numount \"$BOOT\"\nrmdir \"$BOOT\"\n\nmsg \"you can now remove the sdcard\"\n\n"
  }
]